Done ! 403WebShell
403Webshell
Server IP : 46.105.57.169  /  Your IP : 216.73.217.35
Web Server : Apache
System : Linux webm002.cluster120.gra.hosting.ovh.net 6.18.42-ovh-vps-grsec-zfs+ #1 SMP PREEMPT_DYNAMIC Wed Aug 5 15:59:48 CEST 2026 x86_64
User : verseaumee ( 152031)
PHP Version : 8.5.7
Disable Function : _dyuweyrj4,_dyuweyrj4r,dl
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/verseaumee/123click/assets/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/verseaumee/123click/assets/wordfence.tar
models/block/wfRateLimit.php000064400000017332150755146440012102 0ustar00<?php

class wfRateLimit {
	const TYPE_GLOBAL = 'global';
	const TYPE_CRAWLER_VIEWS = 'crawler-views';
	const TYPE_CRAWLER_404S = 'crawler-404s';
	const TYPE_HUMAN_VIEWS = 'human-views';
	const TYPE_HUMAN_404S = 'human-404s';
	
	const HIT_TYPE_404 = '404';
	const HIT_TYPE_NORMAL = 'hit';
	
	const VISITOR_TYPE_HUMAN = 'human';
	const VISITOR_TYPE_CRAWLER = 'crawler';
	
	protected $_type;
	protected static $_hitCount = false;
	
	public static function table() {
		return wfDB::networkTable('wfTrafficRates');
	}
	
	public static function trimData() {
		$wfdb = wfDB::shared();
		$table = self::table();
		$wfdb->queryWrite("DELETE FROM {$table} WHERE eMin < FLOOR((UNIX_TIMESTAMP() - 60) / 60)");
	}
	
	public static function globalRateLimit() {
		static $_cachedGlobal = null;
		if ($_cachedGlobal === null) {
			$_cachedGlobal = new wfRateLimit(self::TYPE_GLOBAL);
		}
		return $_cachedGlobal;
	}
	
	public static function crawlerViewsRateLimit() {
		static $_cachedCrawlerViews = null;
		if ($_cachedCrawlerViews === null) {
			$_cachedCrawlerViews = new wfRateLimit(self::TYPE_CRAWLER_VIEWS);
		}
		return $_cachedCrawlerViews;
	}
	
	public static function crawler404sRateLimit() {
		static $_cachedCrawler404s = null;
		if ($_cachedCrawler404s === null) {
			$_cachedCrawler404s = new wfRateLimit(self::TYPE_CRAWLER_404S);
		}
		return $_cachedCrawler404s;
	}
	
	public static function humanViewsRateLimit() {
		static $_cachedHumanViews = null;
		if ($_cachedHumanViews === null) {
			$_cachedHumanViews = new wfRateLimit(self::TYPE_HUMAN_VIEWS);
		}
		return $_cachedHumanViews;
	}
	
	public static function human404sRateLimit() {
		static $_cachedHuman404s = null;
		if ($_cachedHuman404s === null) {
			$_cachedHuman404s = new wfRateLimit(self::TYPE_HUMAN_404S);
		}
		return $_cachedHuman404s;
	}
	
	/**
	 * Returns whether or not humans and bots have the same rate limits configured.
	 *
	 * @return bool
	 */
	public static function identicalHumanBotRateLimits() {
		$humanViews = self::humanViewsRateLimit();
		$crawlerViews = self::crawlerViewsRateLimit();
		if ($humanViews->isEnabled() != $crawlerViews->isEnabled()) {
			return false;
		}
		if ($humanViews->limit() != $crawlerViews->limit()) {
			return false;
		}
		
		$human404s = self::human404sRateLimit();
		$crawler404s = self::crawler404sRateLimit();
		if ($human404s->isEnabled() != $crawler404s->isEnabled()) {
			return false;
		}
		if ($human404s->limit() != $crawler404s->limit()) {
			return false;
		}
		
		return true;
	}
	
	public static function mightRateLimit($hitType) {
		if (!wfConfig::get('firewallEnabled')) {
			return false;
		}
		
		$IP = wfUtils::getIP();
		if (wfBlock::isWhitelisted($IP)) {
			return false;
		}
		
		if (wfConfig::get('neverBlockBG') == 'neverBlockUA' && wfCrawl::isGoogleCrawler()) {
			return false;
		}
		
		if (wfConfig::get('neverBlockBG') == 'neverBlockVerified' && wfCrawl::isVerifiedGoogleCrawler()) {
			return false;
		}
			
		if ($hitType == '404') {
			$allowed404s = wfConfig::get('allowed404s');
			if (is_string($allowed404s)) {
				$allowed404s = array_filter(preg_split("/[\r\n]+/", $allowed404s));
				$allowed404sPattern = '';
				foreach ($allowed404s as $allowed404) {
					$allowed404sPattern .= preg_replace('/\\\\\*/', '.*?', preg_quote($allowed404, '/')) . '|';
				}
				$uri = $_SERVER['REQUEST_URI'];
				if (($index = strpos($uri, '?')) !== false) {
					$uri = substr($uri, 0, $index);
				}
				if ($allowed404sPattern && preg_match('/^' . substr($allowed404sPattern, 0, -1) . '$/i', $uri)) {
					return false;
				}
			}
		}
		
		if (self::globalRateLimit()->isEnabled()) {
			return true;
		}
		
		$visitorType = self::visitorType();
		
		if ($visitorType == self::VISITOR_TYPE_CRAWLER) {
			if ($hitType == self::HIT_TYPE_NORMAL) {
				if (self::crawlerViewsRateLimit()->isEnabled()) {
					return true;
				}
			}
			else {
				if (self::crawler404sRateLimit()->isEnabled()) {
					return true;
				}
			}
		}
		else {
			if ($hitType == self::HIT_TYPE_NORMAL) {
				if (self::humanViewsRateLimit()->isEnabled()) {
					return true;
				}
			}
			else {
				if (self::human404sRateLimit()->isEnabled()) {
					return true;
				}
			}
		}
		
		return false;
	}
	
	public static function countHit($hitType, $ip) {
		$table  = self::table();
		$ipHex = wfDB::binaryValueToSQLHex(wfUtils::inet_pton($ip));
		wfDB::shared()->queryWrite("INSERT INTO {$table} (eMin, IP, hitType, hits) VALUES (FLOOR(UNIX_TIMESTAMP() / 60), {$ipHex}, %s, @wfcurrenthits := 1) ON DUPLICATE KEY UPDATE hits = IF(@wfcurrenthits := hits + 1, hits + 1, hits + 1)", $hitType);
	}
	
	/**
	 * Returns one of the VISITOR_TYPE_ constants for the purposes of determining which rate limit to apply.
	 * 
	 * @return string
	 */
	public static function visitorType() {
		static $_cachedVisitorType = null;
		if ($_cachedVisitorType === null) {
			$_cachedVisitorType = ((isset($_SERVER['HTTP_USER_AGENT']) && wfCrawl::isCrawler($_SERVER['HTTP_USER_AGENT'])) || empty($_SERVER['HTTP_USER_AGENT']) ? wfRateLimit::VISITOR_TYPE_CRAWLER : wfRateLimit::VISITOR_TYPE_HUMAN);	
		}
		return $_cachedVisitorType;
	}
	
	protected function __construct($type) {
		$this->_type = $type;
	}
	
	/**
	 * Returns whether or not this rate limit is configured in a way where it would run.
	 * 
	 * @return bool
	 */
	public function isEnabled() {
		switch ($this->_type) {
			case self::TYPE_GLOBAL:
				return wfConfig::get('maxGlobalRequests') != 'DISABLED' && wfConfig::getInt('maxGlobalRequests') > 0;
			case self::TYPE_CRAWLER_VIEWS:
				return wfConfig::get('maxRequestsCrawlers') != 'DISABLED' && wfConfig::getInt('maxRequestsCrawlers') > 0;
			case self::TYPE_CRAWLER_404S:
				return wfConfig::get('max404Crawlers') != 'DISABLED' && wfConfig::getInt('max404Crawlers') > 0;
			case self::TYPE_HUMAN_VIEWS:
				return wfConfig::get('maxRequestsHumans') != 'DISABLED' && wfConfig::getInt('maxRequestsHumans') > 0;
			case self::TYPE_HUMAN_404S:
				return wfConfig::get('max404Humans') != 'DISABLED' && wfConfig::getInt('max404Humans') > 0;
		}
		return true;
	}
	
	public function limit() {
		switch ($this->_type) {
			case self::TYPE_GLOBAL:
				return wfConfig::getInt('maxGlobalRequests');
			case self::TYPE_CRAWLER_VIEWS:
				return wfConfig::getInt('maxRequestsCrawlers');
			case self::TYPE_CRAWLER_404S:
				return wfConfig::getInt('max404Crawlers');
			case self::TYPE_HUMAN_VIEWS:
				return wfConfig::getInt('maxRequestsHumans');
			case self::TYPE_HUMAN_404S:
				return wfConfig::getInt('max404Humans');
		}
		return -1;
	}
	
	public function shouldEnforce($hitType) {
		switch ($this->_type) {
			case self::TYPE_GLOBAL:
				return $this->isEnabled() && $this->_hitCount() > max(wfConfig::getInt('maxGlobalRequests'), 1);
			case self::TYPE_CRAWLER_VIEWS:
				return self::visitorType() == self::VISITOR_TYPE_CRAWLER && $hitType == self::HIT_TYPE_NORMAL && $this->isEnabled() && $this->_hitCount() > wfConfig::getInt('maxRequestsCrawlers');
			case self::TYPE_CRAWLER_404S:
				return self::visitorType() == self::VISITOR_TYPE_CRAWLER && $hitType == self::HIT_TYPE_404 && $this->isEnabled() && $this->_hitCount() > wfConfig::getInt('max404Crawlers');
			case self::TYPE_HUMAN_VIEWS:
				return self::visitorType() == self::VISITOR_TYPE_HUMAN && $hitType == self::HIT_TYPE_NORMAL && $this->isEnabled() && $this->_hitCount() > wfConfig::getInt('maxRequestsHumans');
			case self::TYPE_HUMAN_404S:
				return self::visitorType() == self::VISITOR_TYPE_HUMAN && $hitType == self::HIT_TYPE_404 && $this->isEnabled() && $this->_hitCount() > wfConfig::getInt('max404Humans');
		}
		return false;
	}
	
	/**
	 * Returns the hit count corresponding to the current request type.
	 * 
	 * @return int
	 */
	protected function _hitCount() {
		if (self::$_hitCount === false) {
			self::$_hitCount = (int) wfDB::shared()->querySingle("SELECT @wfcurrenthits");
		}
		return self::$_hitCount;
	}
}models/block/wfBlock.php000064400000160030150755146440011234 0ustar00<?php

/**
 * Represents an individual block definition.
 * 
 * @property int $id
 * @property int $type One of the TYPE_* constants.
 * @property string $ip The human-readable version of the IP if applicable for the block type.
 * @property int $blockedTime The timestamp the block was created.
 * @property string $reason Description of the block.
 * @property int $lastAttempt Timestamp of the last request blocked. If never, this will be 0.
 * @property int $blockedHits Count of the number of hits blocked.
 * @property int $expiration Timestamp when the block will expire. If never, this will be 0.
 * @property mixed $parameters Variable parameters defining the block (e.g., the matchers for a pattern block).
 * 
 * @property bool $blockLogin For wfBlock::TYPE_COUNTRY only, this is whether or not to block hits to the login page.
 * @property bool $blockSite For wfBlock::TYPE_COUNTRY only, this is whether or not to block hits to the rest of the site.
 * @property array $countries For wfBlock::TYPE_COUNTRY only, this is the list of countries to block.
 * 
 * @property mixed $ipRange For wfBlock::TYPE_PATTERN only, this is the matching IP range if set.
 * @property mixed $hostname For wfBlock::TYPE_PATTERN only, this is the hostname pattern if set.
 * @property mixed $userAgent For wfBlock::TYPE_PATTERN only, this is the user agent pattern if set.
 * @property mixed $referrer For wfBlock::TYPE_PATTERN only, this is the HTTP referrer pattern if set.
 */
class wfBlock {
	//Constants for block record types
	const TYPE_IP_MANUAL = 1; //Same behavior as TYPE_IP_AUTOMATIC_PERMANENT - the reason will be overridden for public display
	const TYPE_WFSN_TEMPORARY = 2;
	const TYPE_COUNTRY = 3;
	const TYPE_PATTERN = 4;
	const TYPE_RATE_BLOCK = 5;
	const TYPE_RATE_THROTTLE = 6;
	const TYPE_LOCKOUT = 7; //Blocks login-related actions only
	const TYPE_IP_AUTOMATIC_TEMPORARY = 8; //Automatic block, still temporary
	const TYPE_IP_AUTOMATIC_PERMANENT = 9; //Automatic block, started as temporary but now permanent as a result of admin action
	
	//Constants to identify the match type of a block record
	const MATCH_NONE = 0;
	const MATCH_IP = 1;
	const MATCH_COUNTRY_BLOCK = 2;
	const MATCH_COUNTRY_REDIR = 3;
	const MATCH_COUNTRY_REDIR_BYPASS = 4;
	const MATCH_PATTERN = 5;
	
	//Duration constants
	const DURATION_FOREVER = 0;
	
	//Constants defining the placeholder IPs for non-IP block records
	const MARKER_COUNTRY = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xc0\x00\x02\x01";// 192.0.2.1 TEST-NET-1
	const MARKER_PATTERN = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xc0\x00\x02\x02";// 192.0.2.2 TEST-NET-1
	
	private $_id;
	private $_type = false;
	private $_ip = false;
	private $_blockedTime = false;
	private $_reason = false;
	private $_lastAttempt = false;
	private $_blockedHits = false;
	private $_expiration = false;
	private $_parameters = false;
	
	/**
	 * Returns the name of the storage table for the blocks.
	 * 
	 * @return string
	 */
	public static function blocksTable() {
		return wfDB::networkTable('wfBlocks7');
	}
	
	/**
	 * Returns a user-displayable name for the corresponding type constant.
	 * 
	 * @param int $type
	 * @return string
	 */
	public static function nameForType($type) {
		switch ($type) {
			case self::TYPE_IP_MANUAL:
			case self::TYPE_IP_AUTOMATIC_TEMPORARY:
			case self::TYPE_IP_AUTOMATIC_PERMANENT:
			case self::TYPE_WFSN_TEMPORARY:
			case self::TYPE_RATE_BLOCK:
				return __('IP Block', 'wordfence');
			case self::TYPE_RATE_THROTTLE:
				return __('IP Throttled', 'wordfence');
			case self::TYPE_LOCKOUT:
				return __('Lockout', 'wordfence');
			case self::TYPE_COUNTRY:
				return __('Country Block', 'wordfence');
			case self::TYPE_PATTERN:
				return __('Advanced Block', 'wordfence');
		}
		
		return __('Unknown', 'wordfence');
	}
	
	/**
	 * Returns the number of seconds for a temporary block to last by default.
	 * 
	 * @return int
	 */
	public static function blockDuration() {
		return (int) wfConfig::get('blockedTime');
	}
	
	/**
	 * Returns the number of seconds for a rate limit throttle to last by default.
	 *
	 * @return int
	 */
	public static function rateLimitThrottleDuration() {
		return 60;
	}
	
	/**
	 * Returns the number of seconds for a lockout to last by default.
	 *
	 * @return int
	 */
	public static function lockoutDuration() {
		return (int) wfConfig::get('loginSec_lockoutMins') * 60;
	}
	
	/**
	 * @param string $IP Should be in dot or colon notation (127.0.0.1 or ::1)
	 * @param bool $forcedWhitelistEntry If provided, returns whether or not the IP is on a forced whitelist (i.e., it's not one the user can delete).
	 * @return bool
	 */
	public static function isWhitelisted($IP, &$forcedWhitelistEntry = null) {
		if ($forcedWhitelistEntry !== null) {
			$forcedWhitelistEntry = false;
		}
		
		if (
			(defined('DOING_CRON') && DOING_CRON) || //Safe
			(defined('WORDFENCE_SYNCING_ATTACK_DATA') && WORDFENCE_SYNCING_ATTACK_DATA) //Safe as long as it will actually run since it then exits
		) {
			$serverIPs = wfUtils::serverIPs();
			foreach ($serverIPs as $testIP) {
				if (wfUtils::inet_pton($IP) == wfUtils::inet_pton($testIP)) {
					if ($forcedWhitelistEntry !== null) {
						$forcedWhitelistEntry = true;
					}
					
					return true;
				}
			}
		}
		
		foreach (wfUtils::getIPWhitelist() as $subnet) {
			if ($subnet instanceof wfUserIPRange) {
				if ($subnet->isIPInRange($IP)) {
					return true;
				}
			} elseif (wfUtils::subnetContainsIP($subnet, $IP)) {
				if ($forcedWhitelistEntry !== null) {
					$forcedWhitelistEntry = true;
				}
				return true;
			}
		}
		
		return false;
	}
	
	/**
	 * Validates the payload for block creation. Returns true if valid, otherwise it'll return the first error found.
	 * 
	 * @param $payload
	 * @return bool|string
	 */
	public static function validate($payload) {
		if (!isset($payload['type']) || array_search($payload['type'], array('ip-address', 'country', 'custom-pattern')) === false) { return __('Invalid block type.', 'wordfence'); }
		if (!isset($payload['duration']) || intval($payload['duration']) < 0) { return __('Invalid block duration.', 'wordfence'); }
		if (!isset($payload['reason']) || empty($payload['reason'])) { return __('A block reason must be provided.', 'wordfence'); }
		
		if ($payload['type'] == 'ip-address') {
			if (!isset($payload['ip']) || !filter_var(trim($payload['ip']), FILTER_VALIDATE_IP) || @wfUtils::inet_pton(trim($payload['ip'])) === false) { return __('Invalid IP address.', 'wordfence'); }
			if (self::isWhitelisted(trim($payload['ip']))) { return wp_kses(sprintf(/* translators: Support URL */ __('This IP address is in a range of addresses that Wordfence does not block. The IP range may be internal or belong to a service that is always allowed. Allowlisting of external services can be disabled. <a href="%s" target="_blank" rel="noopener noreferrer">Learn More<span class="screen-reader-text"> (opens in new tab)</span></a>', 'wordfence'), wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_OPTION_WHITELISTED_SERVICES)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()), 'span'=>array('class'=>array()))); }
		}
		else if ($payload['type'] == 'country') {
			if (!isset($payload['blockLogin']) || !isset($payload['blockSite'])) { return __('Nothing selected to block.', 'wordfence'); }
			if (!$payload['blockLogin'] && !$payload['blockSite']) { return __('Nothing selected to block.', 'wordfence'); }
			if (!isset($payload['countries']) || empty($payload['countries']) || !is_array($payload['countries'])) { return __('No countries selected.', 'wordfence'); }
			
			require(WORDFENCE_PATH . 'lib/wfBulkCountries.php'); /** @var array $wfBulkCountries */
			foreach ($payload['countries'] as $code) {
				if (!isset($wfBulkCountries[$code])) {
					return __('An invalid country was selected.', 'wordfence');
				}
			}
		}
		else if ($payload['type'] == 'custom-pattern') {
			$hasOne = false;
			if (isset($payload['ipRange']) && !empty($payload['ipRange'])) {
				$ipRange = new wfUserIPRange($payload['ipRange']);
				if ($ipRange->isValidRange()) {
					if ($ipRange->isMixedRange()) {
						return __('Ranges mixing IPv4 and IPv6 addresses are not supported.', 'wordfence');
					}
					
					$hasOne = true;
				}
				else {
					return __('Invalid IP range.', 'wordfence');
				}
			}
			if (isset($payload['hostname']) && !empty($payload['hostname'])) {
				if (preg_match('/^[a-z0-9\.\*\-]+$/i', $payload['hostname'])) {
					$hasOne = true;
				}
				else {
					return __('Invalid hostname.', 'wordfence');
				}
			}
			if (isset($payload['userAgent']) && !empty($payload['userAgent'])) { $hasOne = true; }
			if (isset($payload['referrer']) && !empty($payload['referrer'])) { $hasOne = true; }
			if (!$hasOne) { return __('No block parameters provided.', 'wordfence'); }
		}
		
		return true;
	}
	
	/**
	 * Creates the block. The $payload value is expected to have been validated prior to calling this.
	 * 
	 * @param $payload
	 */
	public static function create($payload) {
		$type = $payload['type'];
		$duration = max((int) $payload['duration'], 0);
		$reason = $payload['reason'];
		
		if ($type == 'ip-address') {
			$ip = trim($payload['ip']);
			wfBlock::createIP($reason, $ip, $duration);
		}
		else if ($type == 'country') {
			$blockLogin = !!$payload['blockLogin'];
			$blockSite = !!$payload['blockSite'];
			$countries = array_unique($payload['countries']);
			wfBlock::createCountry($reason, $blockLogin, $blockSite, $countries, $duration);
		}
		else if ($type == 'custom-pattern') {
			$ipRange = '';
			if (isset($payload['ipRange']) && !empty($payload['ipRange'])) {
				$ipRange = new wfUserIPRange($payload['ipRange']);
				$ipRange = $ipRange->getIPString();
			}
			$hostname = (isset($payload['hostname']) && !empty($payload['hostname'])) ? $payload['hostname'] : '';
			$userAgent = (isset($payload['userAgent']) && !empty($payload['userAgent'])) ? $payload['userAgent'] : '';
			$referrer = (isset($payload['referrer']) && !empty($payload['referrer'])) ? $payload['referrer'] : '';
			wfBlock::createPattern($reason, $ipRange, $hostname, $userAgent, $referrer, $duration);
		}
	}
	
	/**
	 * Creates an IP block if one doesn't already exist for the given IP. The parameters are expected to have been validated and sanitized prior to calling this.
	 * 
	 * @param string $reason
	 * @param string $ip
	 * @param int $duration Optional. Defaults to forever. This is the number of seconds for the block to last.
	 * @param bool|int $blockedTime Optional. Defaults to the current timestamp.
	 * @param bool|int $lastAttempt Optional. Defaults to 0, which means never.
	 * @param bool|int $blockedHits Optional. Defaults to 0.
	 */
	public static function createIP($reason, $ip, $duration = self::DURATION_FOREVER, $blockedTime = false, $lastAttempt = false, $blockedHits = false, $type = self::TYPE_IP_MANUAL) {
		global $wpdb;
		
		if (self::isWhitelisted($ip)) { return; }
		
		if ($blockedTime === false) {
			$blockedTime = time();
		}
		
		$ipHex = wfDB::binaryValueToSQLHex(wfUtils::inet_pton($ip));
		$blocksTable = wfBlock::blocksTable();
		$hasExisting = $wpdb->query($wpdb->prepare("UPDATE `{$blocksTable}` SET `reason` = %s, `expiration` = %d WHERE `expiration` > UNIX_TIMESTAMP() AND `type` = %d AND `IP` = {$ipHex}", $reason, ($duration ? $blockedTime + $duration : $duration), $type));
		if (!$hasExisting) {
			$wpdb->query($wpdb->prepare("INSERT INTO `{$blocksTable}` (`type`, `IP`, `blockedTime`, `reason`, `lastAttempt`, `blockedHits`, `expiration`, `parameters`) VALUES (%d, {$ipHex}, %d, %s, %d, %d, %d, NULL)", $type, $blockedTime, $reason, (int) $lastAttempt, (int) $blockedHits, ($duration ? $blockedTime + $duration : $duration)));
			
			wfConfig::inc('totalIPsBlocked');
		}
		
		if (!WFWAF_SUBDIRECTORY_INSTALL && class_exists('wfWAFIPBlocksController')) {
			wfWAFIPBlocksController::setNeedsSynchronizeConfigSettings();
		}
	}
	
	/**
	 * Creates an IP block for a WFSN response if one doesn't already exist for the given IP. The parameters are expected to have been validated and sanitized prior to calling this.
	 *
	 * @param string $reason
	 * @param string $ip
	 * @param int $duration This is the number of seconds for the block to last.
	 * @param bool|int $blockedTime Optional. Defaults to the current timestamp.
	 * @param bool|int $lastAttempt Optional. Defaults to 0, which means never.
	 * @param bool|int $blockedHits Optional. Defaults to 0.
	 */
	public static function createWFSN($reason, $ip, $duration, $blockedTime = false, $lastAttempt = false, $blockedHits = false) {
		global $wpdb;
		
		if (self::isWhitelisted($ip)) { return; }
		
		if ($blockedTime === false) {
			$blockedTime = time();
		}
		
		$ipHex = wfDB::binaryValueToSQLHex(wfUtils::inet_pton($ip));
		$blocksTable = wfBlock::blocksTable();
		$hasExisting = $wpdb->query($wpdb->prepare("UPDATE `{$blocksTable}` SET `reason` = %s, `expiration` = %d WHERE `expiration` > UNIX_TIMESTAMP() AND `type` = %d AND `IP` = {$ipHex}", $reason, ($duration ? $blockedTime + $duration : $duration), self::TYPE_WFSN_TEMPORARY));
		if (!$hasExisting) {
			$wpdb->query($wpdb->prepare("INSERT INTO `{$blocksTable}` (`type`, `IP`, `blockedTime`, `reason`, `lastAttempt`, `blockedHits`, `expiration`, `parameters`) VALUES (%d, {$ipHex}, %d, %s, %d, %d, %d, NULL)", self::TYPE_WFSN_TEMPORARY, $blockedTime, $reason, (int) $lastAttempt, (int) $blockedHits, ($duration ? $blockedTime + $duration : $duration)));
			
			wfConfig::inc('totalIPsBlocked');
		}
		
		if (!WFWAF_SUBDIRECTORY_INSTALL && class_exists('wfWAFIPBlocksController')) {
			wfWAFIPBlocksController::setNeedsSynchronizeConfigSettings();
		}
	}
	
	/**
	 * Creates an IP block for a rate limit if one doesn't already exist for the given IP. The parameters are expected to have been validated and sanitized prior to calling this.
	 *
	 * @param string $reason
	 * @param string $ip
	 * @param int $duration This is the number of seconds for the block to last.
	 * @param bool|int $blockedTime Optional. Defaults to the current timestamp.
	 * @param bool|int $lastAttempt Optional. Defaults to 0, which means never.
	 * @param bool|int $blockedHits Optional. Defaults to 0.
	 */
	public static function createRateBlock($reason, $ip, $duration, $blockedTime = false, $lastAttempt = false, $blockedHits = false) {
		global $wpdb;
		
		if (self::isWhitelisted($ip)) { return; }
		
		if ($blockedTime === false) {
			$blockedTime = time();
		}
		
		$ipHex = wfDB::binaryValueToSQLHex(wfUtils::inet_pton($ip));
		$blocksTable = wfBlock::blocksTable();
		$hasExisting = $wpdb->query($wpdb->prepare("UPDATE `{$blocksTable}` SET `reason` = %s, `expiration` = %d WHERE `expiration` > UNIX_TIMESTAMP() AND `type` = %d AND `IP` = {$ipHex}", $reason, ($duration ? $blockedTime + $duration : $duration), self::TYPE_RATE_BLOCK));
		if (!$hasExisting) {
			$wpdb->query($wpdb->prepare("INSERT INTO `{$blocksTable}` (`type`, `IP`, `blockedTime`, `reason`, `lastAttempt`, `blockedHits`, `expiration`, `parameters`) VALUES (%d, {$ipHex}, %d, %s, %d, %d, %d, NULL)", self::TYPE_RATE_BLOCK, $blockedTime, $reason, (int) $lastAttempt, (int) $blockedHits, ($duration ? $blockedTime + $duration : $duration)));
			
			wfConfig::inc('totalIPsBlocked');
		}
		
		if (!WFWAF_SUBDIRECTORY_INSTALL && class_exists('wfWAFIPBlocksController')) {
			wfWAFIPBlocksController::setNeedsSynchronizeConfigSettings();
		}
	}
	
	/**
	 * Creates an IP throttle for a rate limit if one doesn't already exist for the given IP. The parameters are expected to have been validated and sanitized prior to calling this.
	 *
	 * @param string $reason
	 * @param string $ip
	 * @param int $duration This is the number of seconds for the block to last.
	 * @param bool|int $blockedTime Optional. Defaults to the current timestamp.
	 * @param bool|int $lastAttempt Optional. Defaults to 0, which means never.
	 * @param bool|int $blockedHits Optional. Defaults to 0.
	 */
	public static function createRateThrottle($reason, $ip, $duration, $blockedTime = false, $lastAttempt = false, $blockedHits = false) {
		global $wpdb;
		
		if (self::isWhitelisted($ip)) { return; }
		
		if ($blockedTime === false) {
			$blockedTime = time();
		}
		
		$ipHex = wfDB::binaryValueToSQLHex(wfUtils::inet_pton($ip));
		$blocksTable = wfBlock::blocksTable();
		$hasExisting = $wpdb->query($wpdb->prepare("UPDATE `{$blocksTable}` SET `reason` = %s, `expiration` = %d WHERE `expiration` > UNIX_TIMESTAMP() AND `type` = %d AND `IP` = {$ipHex}", $reason, ($duration ? $blockedTime + $duration : $duration), self::TYPE_RATE_THROTTLE));
		if (!$hasExisting) {
			$wpdb->query($wpdb->prepare("INSERT INTO `{$blocksTable}` (`type`, `IP`, `blockedTime`, `reason`, `lastAttempt`, `blockedHits`, `expiration`, `parameters`) VALUES (%d, {$ipHex}, %d, %s, %d, %d, %d, NULL)", self::TYPE_RATE_THROTTLE, $blockedTime, $reason, (int) $lastAttempt, (int) $blockedHits, ($duration ? $blockedTime + $duration : $duration)));
			
			wfConfig::inc('totalIPsBlocked');
		}
		
		if (!WFWAF_SUBDIRECTORY_INSTALL && class_exists('wfWAFIPBlocksController')) {
			wfWAFIPBlocksController::setNeedsSynchronizeConfigSettings();
		}
	}
	
	/**
	 * Creates a lockout if one doesn't already exist for the given IP. The parameters are expected to have been validated and sanitized prior to calling this.
	 *
	 * @param string $reason
	 * @param string $ip
	 * @param int $duration This is the number of seconds for the block to last.
	 * @param bool|int $blockedTime Optional. Defaults to the current timestamp.
	 * @param bool|int $lastAttempt Optional. Defaults to 0, which means never.
	 * @param bool|int $blockedHits Optional. Defaults to 0.
	 */
	public static function createLockout($reason, $ip, $duration, $blockedTime = false, $lastAttempt = false, $blockedHits = false) {
		global $wpdb;
		
		if (self::isWhitelisted($ip)) { return; }
		
		if ($blockedTime === false) {
			$blockedTime = time();
		}
		
		$blocksTable = wfBlock::blocksTable();
		$ipHex = wfDB::binaryValueToSQLHex(wfUtils::inet_pton($ip));
		$hasExisting = $wpdb->query($wpdb->prepare("UPDATE `{$blocksTable}` SET `reason` = %s, `expiration` = %d WHERE `expiration` > UNIX_TIMESTAMP() AND `type` = %d AND `IP` = {$ipHex}", $reason, ($duration ? $blockedTime + $duration : $duration), self::TYPE_LOCKOUT));
		if (!$hasExisting) {
			$wpdb->query($wpdb->prepare("INSERT INTO `{$blocksTable}` (`type`, `IP`, `blockedTime`, `reason`, `lastAttempt`, `blockedHits`, `expiration`, `parameters`) VALUES (%d, {$ipHex}, %d, %s, %d, %d, %d, NULL)", self::TYPE_LOCKOUT, $blockedTime, $reason, (int) $lastAttempt, (int) $blockedHits, ($duration ? $blockedTime + $duration : $duration)));
			
			wfConfig::inc('totalIPsLocked');
		}
		
		if (!WFWAF_SUBDIRECTORY_INSTALL && class_exists('wfWAFIPBlocksController')) {
			wfWAFIPBlocksController::setNeedsSynchronizeConfigSettings();
		}
	}
	
	/**
	 * Creates a country block. The parameters are expected to have been validated and sanitized prior to calling this.
	 *
	 * @param string $reason
	 * @param string $blockLogin
	 * @param string $blockSite
	 * @param string $countries
	 * @param int $duration Optional. Defaults to forever. This is the number of seconds for the block to last.
	 * @param bool|int $blockedTime Optional. Defaults to the current timestamp.
	 * @param bool|int $lastAttempt Optional. Defaults to 0, which means never.
	 * @param bool|int $blockedHits Optional. Defaults to 0.
	 */
	public static function createCountry($reason, $blockLogin, $blockSite, $countries, $duration = self::DURATION_FOREVER, $blockedTime = false, $lastAttempt = false, $blockedHits = false) {
		global $wpdb;
		
		if ($blockedTime === false) {
			$blockedTime = time();
		}
		
		$parameters = array(
			'blockLogin' => $blockLogin ? 1 : 0,
			'blockSite' => $blockSite ? 1 : 0,
			'countries' => $countries,
		);
		
		$blocksTable = wfBlock::blocksTable();
		$existing = $wpdb->get_var($wpdb->prepare("SELECT `id` FROM `{$blocksTable}` WHERE `type` = %d LIMIT 1", self::TYPE_COUNTRY));
		if ($existing) {
			$wpdb->query($wpdb->prepare("UPDATE `{$blocksTable}` SET `reason` = %s, `parameters` = %s WHERE `id` = %d", $reason, json_encode($parameters), $existing));
		}
		else {
			$wpdb->query($wpdb->prepare("INSERT INTO `{$blocksTable}` (`type`, `IP`, `blockedTime`, `reason`, `lastAttempt`, `blockedHits`, `expiration`, `parameters`) VALUES (%d, %s, %d, %s, %d, %d, %d, %s)", self::TYPE_COUNTRY, self::MARKER_COUNTRY, $blockedTime, $reason, (int) $lastAttempt, (int) $blockedHits, ($duration ? $blockedTime + $duration : $duration), json_encode($parameters)));
		}
		
		if (!WFWAF_SUBDIRECTORY_INSTALL && class_exists('wfWAFIPBlocksController')) {
			wfWAFIPBlocksController::setNeedsSynchronizeConfigSettings();
		}
	}
	
	/**
	 * Creates a pattern block. The parameters are expected to have been validated and sanitized prior to calling this.
	 * 
	 * @param string $reason
	 * @param string $ipRange
	 * @param string $hostname
	 * @param string $userAgent
	 * @param string $referrer
	 * @param int $duration Optional. Defaults to forever. This is the number of seconds for the block to last.
	 * @param bool|int $blockedTime Optional. Defaults to the current timestamp.
	 * @param bool|int $lastAttempt Optional. Defaults to 0, which means never.
	 * @param bool|int $blockedHits Optional. Defaults to 0.
	 */
	public static function createPattern($reason, $ipRange, $hostname, $userAgent, $referrer, $duration = self::DURATION_FOREVER, $blockedTime = false, $lastAttempt = false, $blockedHits = false) {
		global $wpdb;
		
		if ($blockedTime === false) {
			$blockedTime = time();
		}
		
		$parameters = array(
			'ipRange' => $ipRange,
			'hostname' => $hostname,
			'userAgent' => $userAgent,
			'referrer' => $referrer,
		);
		
		$blocksTable = wfBlock::blocksTable();
		$wpdb->query($wpdb->prepare("INSERT INTO `{$blocksTable}` (`type`, `IP`, `blockedTime`, `reason`, `lastAttempt`, `blockedHits`, `expiration`, `parameters`) VALUES (%d, %s, %d, %s, %d, %d, %d, %s)", self::TYPE_PATTERN, self::MARKER_PATTERN, $blockedTime, $reason, (int) $lastAttempt, (int) $blockedHits, ($duration ? $blockedTime + $duration : $duration), json_encode($parameters)));
		
		if (!WFWAF_SUBDIRECTORY_INSTALL && class_exists('wfWAFIPBlocksController')) {
			wfWAFIPBlocksController::setNeedsSynchronizeConfigSettings();
		}
	}
	
	/**
	 * Removes all expired blocks.
	 */
	public static function vacuum() {
		global $wpdb;
		$blocksTable = wfBlock::blocksTable();
		$wpdb->query("DELETE FROM `{$blocksTable}` WHERE `expiration` <= UNIX_TIMESTAMP() AND `expiration` != " . self::DURATION_FOREVER);
	}
	
	/**
	 * Imports all valid blocks in $blocks. If $replaceExisting is true, this will remove all permanent blocks prior to the import.
	 * 
	 * @param array $blocks
	 * @param bool $replaceExisting
	 */
	public static function importBlocks($blocks, $replaceExisting = true) {
		global $wpdb;
		$blocksTable = wfBlock::blocksTable();
		
		if ($replaceExisting) {
			$wpdb->query("DELETE FROM `{$blocksTable}` WHERE `expiration` = " . self::DURATION_FOREVER);
		}
		
		foreach ($blocks as $b) {
			self::_importBlock($b);
		}
		
		if (!WFWAF_SUBDIRECTORY_INSTALL && class_exists('wfWAFIPBlocksController')) {
			wfWAFIPBlocksController::setNeedsSynchronizeConfigSettings();
		}
	}
	
	/**
	 * Validates the block import record and inserts it if valid. This validation is identical to what is applied to adding one through the UI.
	 * 
	 * @param array $b
	 * @return bool
	 */
	private static function _importBlock($b) {
		global $wpdb;
		$blocksTable = wfBlock::blocksTable();
		
		if (!isset($b['type']) || !isset($b['IP']) || !isset($b['blockedTime']) || !isset($b['reason']) || !isset($b['lastAttempt']) || !isset($b['blockedHits'])) { return false; }
		if (empty($b['IP']) || empty($b['reason'])) { return false; }
		
		$ip = @wfUtils::inet_ntop(wfUtils::hex2bin($b['IP']));
		if (!wfUtils::isValidIP($ip)) { return false; }
		
		switch ($b['type']) {
			case self::TYPE_IP_MANUAL:
			case self::TYPE_IP_AUTOMATIC_TEMPORARY:
			case self::TYPE_IP_AUTOMATIC_PERMANENT:
			case self::TYPE_WFSN_TEMPORARY:
			case self::TYPE_RATE_BLOCK:
			case self::TYPE_RATE_THROTTLE:
			case self::TYPE_LOCKOUT:
				if (self::isWhitelisted($ip)) { return false; }
			
				$ipHex = wfDB::binaryValueToSQLHex(wfUtils::inet_pton($ip));
				return $wpdb->query($wpdb->prepare("INSERT INTO `{$blocksTable}` (`type`, `IP`, `blockedTime`, `reason`, `lastAttempt`, `blockedHits`, `expiration`, `parameters`) VALUES (%d, {$ipHex}, %d, %s, %d, %d, %d, NULL)", (int) $b['type'], (int) $b['blockedTime'], $b['reason'], (int) $b['lastAttempt'], (int) $b['blockedHits'], self::DURATION_FOREVER)) !== false;
			case self::TYPE_COUNTRY:
				if (!isset($b['parameters'])) { return false; }
				if (wfUtils::inet_pton($ip) != self::MARKER_COUNTRY) { return false; }
				$parameters = @json_decode($b['parameters'], true);
				if (!isset($parameters['blockLogin']) || !isset($parameters['blockSite']) || !isset($parameters['countries'])) { return false; }
				$parameters['blockLogin'] = wfUtils::truthyToInt($parameters['blockLogin']);
				$parameters['blockSite'] = wfUtils::truthyToInt($parameters['blockSite']);
				
				require(WORDFENCE_PATH . 'lib/wfBulkCountries.php'); /** @var array $wfBulkCountries */
				foreach ($parameters['countries'] as $code) {
					if (!isset($wfBulkCountries[$code])) {
						return false;
					}
				}
				
				$parameters = array('blockLogin' => $parameters['blockLogin'], 'blockSite' => $parameters['blockSite'], 'countries' => $parameters['countries']);
				
				$ipHex = wfDB::binaryValueToSQLHex(self::MARKER_COUNTRY);
				return $wpdb->query($wpdb->prepare("INSERT INTO `{$blocksTable}` (`type`, `IP`, `blockedTime`, `reason`, `lastAttempt`, `blockedHits`, `expiration`, `parameters`) VALUES (%d, {$ipHex}, %d, %s, %d, %d, %d, %s)", self::TYPE_COUNTRY, (int) $b['blockedTime'], $b['reason'], (int) $b['lastAttempt'], (int) $b['blockedHits'], self::DURATION_FOREVER, json_encode($parameters))) !== false;
			case self::TYPE_PATTERN:
				if (!isset($b['parameters'])) { return false; }
				if (wfUtils::inet_pton($ip) != self::MARKER_PATTERN) { return false; }
				$parameters = @json_decode($b['parameters'], true);
				if (!isset($parameters['ipRange']) || !isset($parameters['hostname']) || !isset($parameters['userAgent']) || !isset($parameters['referrer'])) { return false; }
				
				$hasOne = false;
				if (!empty($parameters['ipRange'])) {
					$ipRange = new wfUserIPRange($parameters['ipRange']);
					if ($ipRange->isValidRange()) {
						if ($ipRange->isMixedRange()) {
							return false;
						}
						
						$hasOne = true;
					}
					else {
						return false;
					}
				}
				if (!empty($parameters['hostname'])) {
					if (preg_match('/^[a-z0-9\.\*\-]+$/i', $parameters['hostname'])) {
						$hasOne = true;
					}
					else {
						return false;
					}
				}
				if (!empty($parameters['userAgent'])) { $hasOne = true; }
				if (!empty($parameters['referrer'])) { $hasOne = true; }
				if (!$hasOne) { return false; }
				
				$ipRange = '';
				if (!empty($parameters['ipRange'])) {
					$ipRange = new wfUserIPRange($parameters['ipRange']);
					$ipRange = $ipRange->getIPString();
				}
				$parameters = array(
					'ipRange' => $ipRange,
					'hostname' => $parameters['hostname'],
					'userAgent' => $parameters['userAgent'],
					'referrer' => $parameters['referrer'],
				);
				
				$ipHex = wfDB::binaryValueToSQLHex(self::MARKER_PATTERN);
				return $wpdb->query($wpdb->prepare("INSERT INTO `{$blocksTable}` (`type`, `IP`, `blockedTime`, `reason`, `lastAttempt`, `blockedHits`, `expiration`, `parameters`) VALUES (%d, {$ipHex}, %d, %s, %d, %d, %d, %s)", self::TYPE_PATTERN, (int) $b['blockedTime'], $b['reason'], (int) $b['lastAttempt'], (int) $b['blockedHits'], self::DURATION_FOREVER, json_encode($parameters))) !== false;
		}
		
		return false;
	}
	
	/**
	 * Returns an array suitable for JSON output of all permanent blocks.
	 * 
	 * @return array
	 */
	public static function exportBlocks() {
		global $wpdb;
		$blocksTable = wfBlock::blocksTable();
		$query = "SELECT `type`, HEX(`IP`) AS `IP`, `blockedTime`, `reason`, `lastAttempt`, `blockedHits`, `parameters` FROM `{$blocksTable}` WHERE `expiration` = " . self::DURATION_FOREVER;
		$rows = $wpdb->get_results($query, ARRAY_A);
		return $rows;
	}
	
	/**
	 * Returns all unexpired blocks (including lockouts by default), optionally only of the specified types. These are sorted descending by the time created.
	 * 
	 * @param bool $prefetch If true, the full data for the block is fetched rather than using lazy loading.
	 * @param array $ofTypes An optional array of block types to restrict the returned array of blocks to.
	 * @param int $offset The offset to start the result fetch at.
	 * @param int $limit The maximum number of results to return. -1 for all.
	 * @param string $sortColumn The column to sort by.
	 * @param string $sortDirection The direction to sort.
	 * @param string $filter An optional value to filter by.
	 * @return wfBlock[]
	 */
	public static function allBlocks($prefetch = false, $ofTypes = array(), $offset = 0, $limit = -1, $sortColumn = 'type', $sortDirection = 'ascending', $filter = '') {
		global $wpdb;
		$blocksTable = wfBlock::blocksTable();
		$columns = '`id`';
		if ($prefetch) {
			$columns = '*';
		}
		
		$sort = 'typeSort';
		switch ($sortColumn) { //Match the display table column to the corresponding schema column
			case 'type':
				//Use default;
				break;
			case 'detail':
				$sort = 'detailSort';
				break;
			case 'ruleAdded':
				$sort = 'blockedTime';
				break;
			case 'reason':
				$sort = 'reason';
				break;
			case 'expiration':
				$sort = 'expiration';
				break;
			case 'blockCount':
				$sort = 'blockedHits';
				break;
			case 'lastAttempt':
				$sort = 'lastAttempt';
				break;
		}
		
		$order = 'ASC';
		if ($sortDirection == 'descending') {
			$order = 'DESC';
		}
		
		$query = "SELECT {$columns}, CASE 
WHEN `type` = " . self::TYPE_COUNTRY . " THEN 0
WHEN `type` = " . self::TYPE_PATTERN . " THEN 1
WHEN `type` = " . self::TYPE_LOCKOUT . " THEN 2
WHEN `type` = " . self::TYPE_RATE_THROTTLE . " THEN 3
WHEN `type` = " . self::TYPE_RATE_BLOCK . " THEN 4
WHEN `type` = " . self::TYPE_IP_AUTOMATIC_PERMANENT . " THEN 5
WHEN `type` = " . self::TYPE_IP_AUTOMATIC_TEMPORARY . " THEN 6
WHEN `type` = " . self::TYPE_WFSN_TEMPORARY . " THEN 7
WHEN `type` = " . self::TYPE_IP_MANUAL . " THEN 8
ELSE 9999
END AS `typeSort`, CASE 
WHEN `type` = " . self::TYPE_COUNTRY . " THEN `parameters`
WHEN `type` = " . self::TYPE_PATTERN . " THEN `parameters`
WHEN `type` = " . self::TYPE_IP_MANUAL . " THEN `IP`
WHEN `type` = " . self::TYPE_IP_AUTOMATIC_PERMANENT . " THEN `IP`
WHEN `type` = " . self::TYPE_RATE_BLOCK . " THEN `IP`
WHEN `type` = " . self::TYPE_RATE_THROTTLE . " THEN `IP`
WHEN `type` = " . self::TYPE_LOCKOUT . " THEN `IP`
WHEN `type` = " . self::TYPE_WFSN_TEMPORARY . " THEN `IP`
WHEN `type` = " . self::TYPE_IP_AUTOMATIC_TEMPORARY . " THEN `IP`
ELSE 9999
END AS `detailSort`
 FROM `{$blocksTable}` WHERE ";
		if (!empty($ofTypes)) {
			$sanitizedTypes = array_map('intval', $ofTypes);
			$query .= "`type` IN (" . implode(', ', $sanitizedTypes) . ') AND ';
		}
		$query .= '(`expiration` = ' . self::DURATION_FOREVER . " OR `expiration` > UNIX_TIMESTAMP()) ORDER BY `{$sort}` {$order}, `id` DESC";
		
		if ($limit > -1) {
			$offset = (int) $offset;
			$limit = (int) $limit;
			$query .= " LIMIT {$offset},{$limit}";
		}
		
		$rows = $wpdb->get_results($query, ARRAY_A);
		$result = array();
		foreach ($rows as $r) {
			if ($prefetch) {
				if ($r['type'] == self::TYPE_COUNTRY || $r['type'] == self::TYPE_PATTERN) {
					$ip = null;
				}
				else {
					$ip = wfUtils::inet_ntop($r['IP']);
				}
				
				$parameters = null;
				if ($r['type'] == self::TYPE_PATTERN || $r['type'] == self::TYPE_COUNTRY) {
					$parameters = @json_decode($r['parameters'], true);
				}
				
				$result[] = new wfBlock($r['id'], $r['type'], $ip, $r['blockedTime'], $r['reason'], $r['lastAttempt'], $r['blockedHits'], $r['expiration'], $parameters);
			}
			else {
				$result[] = new wfBlock($r['id']);
			}
		}
		
		return $result;
	}
	
	/**
	 * Functions identically to wfBlock::allBlocks except that it filters the result. The filtering is done within PHP rather than MySQL, so this will impose a performance penalty and should only
	 * be used when filtering is actually wanted.
	 * 
	 * @param bool $prefetch
	 * @param array $ofTypes
	 * @param int $offset
	 * @param int $limit
	 * @param string $sortColumn
	 * @param string $sortDirection
	 * @param string $filter
	 * @return wfBlock[]
	 */
	public static function filteredBlocks($prefetch = false, $ofTypes = array(), $offset = 0, $limit = -1, $sortColumn = 'type', $sortDirection = 'ascending', $filter = '') {
		$filter = trim($filter);
		$matchType = '';
		$matchValue = '';
		if (empty($filter)) {
			return self::allBlocks($prefetch, $ofTypes, $offset, $limit, $sortColumn, $sortDirection);
		}
		else if (wfUtils::isValidIP($filter)) { //e.g., 4.5.6.7, ffe0::, ::0
			$matchType = 'ip';
			$matchValue = wfUtils::inet_ntop(wfUtils::inet_pton($filter));
		}
		
		if (empty($matchType) && preg_match('/^(?:[0-9]+|\*)\.(?:(?:[0-9]+|\*)\.(?!$))*(?:(?:[0-9]+|\*))?$/', trim($filter, '.'))) { //e.g., possible wildcard IPv4 like 4.5.*
			$components = explode('.', trim($filter, '.'));
			if (count($components) <= 4) {
				$components = array_pad($components, 4, '*');
				$matchType = 'ipregex';
				$matchValue = '^';
				foreach ($components as $c) {
					if (empty($c) || $c == '*') {
						$matchValue .= '\d+';
					}
					else {
						$matchValue .= (int) $c;
					}
					
					$matchValue .= '\.';
				}
				$matchValue = substr($matchValue, 0, -2);
				$matchValue .= '$';
			}
		}
		
		if (empty($matchType) && preg_match('/^(?:[0-9a-f]+\:)(?:[0-9a-f]+\:|\*){1,2}(?:[0-9a-f]+|\*)?$/i', $filter)) { //e.g., possible wildcard IPv6 like ffe0:*
			$components = explode(':', $filter);
			$matchType = 'ipregex';
			$matchValue = '^';
			for ($i = 0; $i < 4; $i++) {
				if (isset($components[$i])) {
					$matchValue .= strtoupper(str_pad(dechex($components[$i]), 4, '0', STR_PAD_LEFT));
				}
				else {
					$matchValue .= '[0-9a-f]{4}';
				}
				$matchValue .= ':';
			}
			$matchValue = substr($matchValue, 0, -1);
			$matchValue .= '$';
		}
		
		if (empty($matchType)) {
			$matchType = 'literal';
			$matchValue = $filter;
		}
		
		$offsetProcessed = 0;
		$limitProcessed = 0;
		
		$returnBlocks = array();
		for ($i = 0; true; $i += WORDFENCE_BLOCKED_IPS_PER_PAGE) {
			$blocks = wfBlock::allBlocks(true, $ofTypes, $i, WORDFENCE_BLOCKED_IPS_PER_PAGE, $sortColumn, $sortDirection);
			if (empty($blocks)) {
				break;
			}
			
			foreach ($blocks as $b) {
				$include = false;
				
				if (stripos($b->reason, $filter) !== false) {
					$include = true;
				}
				
				if (!$include && $b->type == self::TYPE_PATTERN) {
					if (stripos($b->hostname, $filter) !== false) { $include = true; }
					else if (stripos($b->userAgent, $filter) !== false) { $include = true; }
					else if (stripos($b->referrer, $filter) !== false) { $include = true; }
					else if (stripos($b->ipRange, $filter) !== false) { $include = true; }
				}
				
				if (!$include && stripos(self::nameForType($b->type), $filter) !== false) {
					$include = true;
				}
				
				if (!$include) {
					switch ($matchType) {
						case 'ip':
							if ($b->matchRequest($matchValue, '', '') != self::MATCH_NONE) {
								$include = true;
							}
							else if ($b->type == self::TYPE_LOCKOUT && wfUtils::inet_pton($matchValue) == wfUtils::inet_pton($b->ip)) {
								$include = true;
							}
							break;
						case 'ipregex':
							if (preg_match('/' . $matchValue . '/i', $b->ip)) {
								$include = true;
							}
							break;
						case 'literal':
							//Already checked above
							break;
					}
				}
				
				if ($include) {
					if ($offsetProcessed < $offset) { //Still searching for the start offset
						$offsetProcessed++;
						continue;
					}
					
					$returnBlocks[] = $b;
					$limitProcessed++;
				}
				
				if ($limit != -1 && $limitProcessed >= $limit) {
					return $returnBlocks;
				}
			}
		}
		
		return $returnBlocks;
	}
	
	/**
	 * Returns all unexpired blocks of types wfBlock::TYPE_IP_MANUAL, wfBlock::TYPE_IP_AUTOMATIC_TEMPORARY, wfBlock::TYPE_IP_AUTOMATIC_PERMANENT, wfBlock::TYPE_WFSN_TEMPORARY, wfBlock::TYPE_RATE_BLOCK, and wfBlock::TYPE_RATE_THROTTLE.
	 *
	 * @param bool $prefetch If true, the full data for the block is fetched rather than using lazy loading.
	 * @return wfBlock[]
	 */
	public static function ipBlocks($prefetch = false) {
		return self::allBlocks($prefetch, array(self::TYPE_IP_MANUAL, self::TYPE_IP_AUTOMATIC_TEMPORARY, self::TYPE_IP_AUTOMATIC_PERMANENT, self::TYPE_WFSN_TEMPORARY, self::TYPE_RATE_BLOCK, self::TYPE_RATE_THROTTLE));
	}
	
	/**
	 * Finds an IP block matching the given IP, returning it if found. Returns false if none are found.
	 * 
	 * @param string $ip
	 * @return bool|wfBlock
	 */
	public static function findIPBlock($ip) {
		global $wpdb;
		$blocksTable = wfBlock::blocksTable();
		
		$ipHex = wfDB::binaryValueToSQLHex(wfUtils::inet_pton($ip));
		
		$query = "SELECT * FROM `{$blocksTable}` WHERE ";
		
		$ofTypes = array(self::TYPE_IP_MANUAL, self::TYPE_IP_AUTOMATIC_TEMPORARY, self::TYPE_IP_AUTOMATIC_PERMANENT, self::TYPE_WFSN_TEMPORARY, self::TYPE_RATE_BLOCK, self::TYPE_RATE_THROTTLE);
		$query .= "`type` IN (" . implode(', ', $ofTypes) . ') AND ';
		$query .= "`IP` = {$ipHex} AND ";
		$query .= '(`expiration` = ' . self::DURATION_FOREVER . ' OR `expiration` > UNIX_TIMESTAMP()) ORDER BY `blockedTime` DESC LIMIT 1';
		
		$r = $wpdb->get_row($query, ARRAY_A);
		if (is_array($r)) {
			$ip = wfUtils::inet_ntop($r['IP']);
			return new wfBlock($r['id'], $r['type'], $ip, $r['blockedTime'], $r['reason'], $r['lastAttempt'], $r['blockedHits'], $r['expiration'], null);
		}
		return false;
	}
	
	/**
	 * Returns all unexpired blocks of type wfBlock::TYPE_COUNTRY.
	 *
	 * @param bool $prefetch If true, the full data for the block is fetched rather than using lazy loading.
	 * @return wfBlock[]
	 */
	public static function countryBlocks($prefetch = false) {
		return self::allBlocks($prefetch, array(self::TYPE_COUNTRY));
	}
	
	/**
	 * Returns whether or not there is a country block rule.
	 * 
	 * @return bool
	 */
	public static function hasCountryBlock() {
		$countryBlocks = self::countryBlocks();
		return !empty($countryBlocks);
	}
	
	/**
	 * Returns the value for the country blocking bypass cookie.
	 *
	 * @return string
	 */
	public static function countryBlockingBypassCookieValue() {
		$val = wfConfig::get('cbl_cookieVal', false);
		if (!$val) {
			$val = uniqid();
			wfConfig::set('cbl_cookieVal', $val);
		}
		return $val;
	}
	
	/**
	 * Returns all unexpired blocks of type wfBlock::TYPE_PATTERN.
	 * 
	 * @param bool $prefetch If true, the full data for the block is fetched rather than using lazy loading.
	 * @return wfBlock[]
	 */
	public static function patternBlocks($prefetch = false) {
		return self::allBlocks($prefetch, array(self::TYPE_PATTERN));
	}
	
	/**
	 * Returns all unexpired lockouts (type wfBlock::TYPE_LOCKOUT).
	 *
	 * @param bool $prefetch If true, the full data for the block is fetched rather than using lazy loading.
	 * @return wfBlock[]
	 */
	public static function lockouts($prefetch = false) {
		return self::allBlocks($prefetch, array(self::TYPE_LOCKOUT));
	}
	
	/**
	 * Returns the lockout record for the given IP if it exists.
	 * 
	 * @param string $ip
	 * @return bool|wfBlock
	 */
	public static function lockoutForIP($ip) {
		global $wpdb;
		$blocksTable = wfBlock::blocksTable();
		$ipHex = wfDB::binaryValueToSQLHex(wfUtils::inet_pton($ip));
		
		$row = $wpdb->get_row($wpdb->prepare("SELECT * FROM `{$blocksTable}` WHERE `IP` = {$ipHex} AND `type` = %d AND (`expiration` = %d OR `expiration` > UNIX_TIMESTAMP())",  self::TYPE_LOCKOUT, self::DURATION_FOREVER), ARRAY_A);
		if ($row) {
			return new wfBlock($row['id'], $row['type'], wfUtils::inet_ntop($row['IP']), $row['blockedTime'], $row['reason'], $row['lastAttempt'], $row['blockedHits'], $row['expiration'], null);
		}
		
		return false;
	}
	
	/**
	 * Removes all blocks whose ID is in the given array.
	 * 
	 * @param array $blockIDs
	 * @param bool $retrieve if true, fetch and return the deleted rows
	 * @return bool|array true(or an array of blocks, if $retrieve is specified) or false on failure
	 */
	public static function removeBlockIDs($blockIDs, $retrieve=false) {
		global $wpdb;
		$blocksTable = wfBlock::blocksTable();
		
		$blockIDs = array_map('intval', $blockIDs);
		$inClause = implode(', ', $blockIDs);
		if($retrieve){
			$blocks = $wpdb->get_results("SELECT * FROM `{$blocksTable}` WHERE `id` IN (".$inClause.")");
		}
		else{
			$blocks=true;
		}
		$query = "DELETE FROM `{$blocksTable}` WHERE `id` IN (" . $inClause . ")";
		if($wpdb->query($query)!==false) {
			return $blocks;
		}
		return false;
	}
	
	/**
	 * Removes all IP blocks (i.e., manual, wfsn, or rate limited)
	 */
	public static function removeAllIPBlocks() {
		global $wpdb;
		$blocksTable = wfBlock::blocksTable();
		$wpdb->query("DELETE FROM `{$blocksTable}` WHERE `type` IN (" . implode(', ', array(self::TYPE_IP_MANUAL, self::TYPE_IP_AUTOMATIC_TEMPORARY, self::TYPE_IP_AUTOMATIC_PERMANENT, self::TYPE_WFSN_TEMPORARY, self::TYPE_RATE_BLOCK, self::TYPE_RATE_THROTTLE, self::TYPE_LOCKOUT)) . ")");
	}
	
	/**
	 * Removes all country blocks
	 */
	public static function removeAllCountryBlocks() {
		global $wpdb;
		$blocksTable = wfBlock::blocksTable();
		$wpdb->query("DELETE FROM `{$blocksTable}` WHERE `type` IN (" . implode(', ', array(self::TYPE_COUNTRY)) . ")");
	}
	
	/**
	 * Removes all blocks that were created by WFSN responses.
	 */
	public static function removeTemporaryWFSNBlocks() {
		global $wpdb;
		$blocksTable = wfBlock::blocksTable();
		$wpdb->query($wpdb->prepare("DELETE FROM `{$blocksTable}` WHERE `type` = %d", self::TYPE_WFSN_TEMPORARY));
	}
	
	/**
	 * Converts all blocks to non-expiring whose ID is in the given array.
	 * 
	 * @param array $blockIDs
	 */
	public static function makePermanentBlockIDs($blockIDs) {
		global $wpdb;
		$blocksTable = wfBlock::blocksTable();
		
		//TODO: revise this if we support user-customizable durations
		$supportedTypes = array(
			self::TYPE_WFSN_TEMPORARY,
			self::TYPE_RATE_BLOCK,
			self::TYPE_RATE_THROTTLE,
			self::TYPE_LOCKOUT,
			self::TYPE_IP_AUTOMATIC_TEMPORARY,
		);
		
		$blockIDs = array_map('intval', $blockIDs);
		$query = $wpdb->prepare("UPDATE `{$blocksTable}` SET `expiration` = %d, `type` = %d WHERE `id` IN (" . implode(', ', $blockIDs) . ") AND `type` IN (" . implode(', ', $supportedTypes) . ") AND (`expiration` > UNIX_TIMESTAMP())", self::DURATION_FOREVER, self::TYPE_IP_AUTOMATIC_PERMANENT);
		$wpdb->query($query);
		
		$supportedTypes = array(
			self::TYPE_IP_MANUAL,
		);
		
		$blockIDs = array_map('intval', $blockIDs);
		$query = $wpdb->prepare("UPDATE `{$blocksTable}` SET `expiration` = %d, `type` = %d WHERE `id` IN (" . implode(', ', $blockIDs) . ") AND `type` IN (" . implode(', ', $supportedTypes) . ") AND (`expiration` > UNIX_TIMESTAMP())", self::DURATION_FOREVER, self::TYPE_IP_MANUAL);
		$wpdb->query($query);
	}
	
	/**
	 * Removes all specific IP blocks and lockouts that can result in the given IP being blocked.
	 * 
	 * @param string $ip
	 */
	public static function unblockIP($ip) {
		global $wpdb;
		$blocksTable = wfBlock::blocksTable();
		$ipHex = wfDB::binaryValueToSQLHex(wfUtils::inet_pton($ip));
		$wpdb->query("DELETE FROM `{$blocksTable}` WHERE `IP` = {$ipHex}");
	}
	
	/**
	 * Removes all lockouts that can result in the given IP being blocked.
	 *
	 * @param string $ip
	 */
	public static function unlockOutIP($ip) {
		global $wpdb;
		$blocksTable = wfBlock::blocksTable();
		$ipHex = wfDB::binaryValueToSQLHex(wfUtils::inet_pton($ip));
		$wpdb->query($wpdb->prepare("DELETE FROM `{$blocksTable}` WHERE `IP` = {$ipHex} AND `type` = %d", self::TYPE_LOCKOUT));
	}
	
	/**
	 * Constructs a wfBlock instance. This _does not_ create a new record in the table, only fetches or updates an existing one.
	 * 
	 * @param $id
	 * @param bool $type
	 * @param bool $ip
	 * @param bool $blockedTime
	 * @param bool $reason
	 * @param bool $lastAttempt
	 * @param bool $blockedHits
	 * @param bool $expiration
	 * @param bool $parameters
	 */
	public function __construct($id, $type = false, $ip = false, $blockedTime = false, $reason = false, $lastAttempt = false, $blockedHits = false, $expiration = false, $parameters = false) {
		$this->_id = $id;
		$this->_type = $type;
		$this->_ip = $ip;
		$this->_blockedTime = $blockedTime;
		$this->_reason = $reason;
		$this->_lastAttempt = $lastAttempt;
		$this->_blockedHits = $blockedHits;
		$this->_expiration = $expiration;
		$this->_parameters = $parameters;
	}
	
	public function __get($key) {
		switch ($key) {
			case 'id':
				return $this->_id;
			case 'type':
				if ($this->_type === false) { $this->_fetch(); }
				return $this->_type;
			case 'ip':
				if ($this->_type === false) { $this->_fetch(); }
				return $this->_ip;
			case 'blockedTime':
				if ($this->_type === false) { $this->_fetch(); }
				return $this->_blockedTime;
			case 'reason':
				if ($this->_type === false) { $this->_fetch(); }
				return $this->_reason;
			case 'lastAttempt':
				if ($this->_type === false) { $this->_fetch(); }
				return $this->_lastAttempt;
			case 'blockedHits':
				if ($this->_type === false) { $this->_fetch(); }
				return $this->_blockedHits;
			case 'expiration':
				if ($this->_type === false) { $this->_fetch(); }
				return $this->_expiration;
			case 'parameters':
				if ($this->_type === false) { $this->_fetch(); }
				return $this->_parameters;
				
			//Country
			case 'blockLogin':
				if ($this->type != self::TYPE_COUNTRY) { throw new OutOfBoundsException("{$key} is not a valid property for this block type"); }
				return $this->parameters['blockLogin'];
			case 'blockSite':
				if ($this->type != self::TYPE_COUNTRY) { throw new OutOfBoundsException("{$key} is not a valid property for this block type"); }
				return $this->parameters['blockSite'];
			case 'countries':
				if ($this->type != self::TYPE_COUNTRY) { throw new OutOfBoundsException("{$key} is not a valid property for this block type"); }
				return $this->parameters['countries'];
				
			//Pattern
			case 'ipRange':
				if ($this->type != self::TYPE_PATTERN) { throw new OutOfBoundsException("{$key} is not a valid property for this block type"); }
				return $this->parameters['ipRange'];
			case 'hostname':
				if ($this->type != self::TYPE_PATTERN) { throw new OutOfBoundsException("{$key} is not a valid property for this block type"); }
				return $this->parameters['hostname'];
			case 'userAgent':
				if ($this->type != self::TYPE_PATTERN) { throw new OutOfBoundsException("{$key} is not a valid property for this block type"); }
				return $this->parameters['userAgent'];
			case 'referrer':
				if ($this->type != self::TYPE_PATTERN) { throw new OutOfBoundsException("{$key} is not a valid property for this block type"); }
				return $this->parameters['referrer'];
		}
		
		throw new OutOfBoundsException("{$key} is not a valid property");
	}
	
	public function __isset($key) {
		switch ($key) {
			case 'id':
			case 'type':
			case 'ip':
			case 'blockedTime':
			case 'reason':
			case 'lastAttempt':
			case 'blockedHits':
			case 'expiration':
				return true;
			case 'parameters':
				if ($this->_type === false) { $this->_fetch(); }
				return !empty($this->_parameters);
			
			//Country
			case 'blockLogin':
				if ($this->type != self::TYPE_COUNTRY) { return false; }
				return !empty($this->parameters['blockLogin']);
			case 'blockSite':
				if ($this->type != self::TYPE_COUNTRY) { return false; }
				return !empty($this->parameters['blockSite']);
			case 'countries':
				if ($this->type != self::TYPE_COUNTRY) { return false; }
				return !empty($this->parameters['countries']);
			
			//Pattern
			case 'ipRange':
				if ($this->type != self::TYPE_PATTERN) { return false; }
				return !empty($this->parameters['ipRange']);
			case 'hostname':
				if ($this->type != self::TYPE_PATTERN) { return false; }
				return !empty($this->parameters['hostname']);
			case 'userAgent':
				if ($this->type != self::TYPE_PATTERN) { return false; }
				return !empty($this->parameters['userAgent']);
			case 'referrer':
				if ($this->type != self::TYPE_PATTERN) { return false; }
				return !empty($this->parameters['referrer']);
		}
		
		return false;
	}
	
	/**
	 * Fetches the record for the block from the database and populates the instance variables.
	 */
	private function _fetch() {
		global $wpdb;
		$blocksTable = wfBlock::blocksTable();
		$row = $wpdb->get_row($wpdb->prepare("SELECT * FROM `{$blocksTable}` WHERE `id` = %d", $this->id), ARRAY_A);
		if ($row !== null) {
			$this->_type = $row['type'];
			
			$ip = $row['IP'];
			if ($ip == self::MARKER_COUNTRY || $ip == self::MARKER_PATTERN) {
				$this->_ip = null;
			}
			else {
				$this->_ip = wfUtils::inet_ntop($ip);
			}
			
			$this->_blockedTime = $row['blockedTime'];
			$this->_reason = $row['reason'];
			$this->_lastAttempt = $row['lastAttempt'];
			$this->_blockedHits = $row['blockedHits'];
			$this->_expiration = $row['expiration'];
			
			$parameters = $row['parameters'];
			if ($parameters === null) {
				$this->_parameters = null;
			}
			else {
				$this->_parameters = @json_decode($parameters, true);
			}
		}
	}
	
	/**
	 * Tests the block parameters against the given request. If matched, this will return the corresponding wfBlock::MATCH_
	 * constant. If not, it will return wfBlock::MATCH_NONE.
	 * 
	 * @param $ip
	 * @param $userAgent
	 * @param $referrer
	 * @return int
	 */
	public function matchRequest($ip, $userAgent, $referrer) {
		switch ($this->type) {
			case self::TYPE_IP_MANUAL:
			case self::TYPE_IP_AUTOMATIC_TEMPORARY:
			case self::TYPE_IP_AUTOMATIC_PERMANENT:
			case self::TYPE_WFSN_TEMPORARY:
			case self::TYPE_RATE_BLOCK:
			case self::TYPE_RATE_THROTTLE:
				if (wfUtils::inet_pton($ip) == wfUtils::inet_pton($this->ip))
				{
					return self::MATCH_IP;
				}
				break;
			case self::TYPE_PATTERN:
				$match = (!empty($this->ipRange) || !empty($this->hostname) || !empty($this->userAgent) || !empty($this->referrer));
				if (!empty($this->ipRange)) {
					$range = new wfUserIPRange($this->ipRange);
					$match = $match && $range->isIPInRange($ip);
				}
				if (!empty($this->hostname)) {
					$hostname = wfUtils::reverseLookup($ip);
					$match = $match && preg_match(wfUtils::patternToRegex($this->hostname), $hostname);
				}
				if (!empty($this->userAgent)) {
					$match = $match && fnmatch($this->userAgent, $userAgent, FNM_CASEFOLD);
				}
				if (!empty($this->referrer)) {
					$match = $match && fnmatch($this->referrer, $referrer, FNM_CASEFOLD);
				}
				
				if ($match) {
					return self::MATCH_PATTERN;
				}
				
				break;
			case self::TYPE_COUNTRY:
				if (!wfConfig::get('isPaid')) {
					return self::MATCH_NONE;
				}
				
				//Bypass Redirect URL Hit
				$bareRequestURI = wfUtils::extractBareURI($_SERVER['REQUEST_URI']);
				$bareBypassRedirURI = wfUtils::extractBareURI(wfConfig::get('cbl_bypassRedirURL', ''));
				if ($bareBypassRedirURI && $bareRequestURI == $bareBypassRedirURI) {
					$bypassRedirDest = wfConfig::get('cbl_bypassRedirDest', '');
					if ($bypassRedirDest) {
						wfUtils::setcookie('wfCBLBypass', wfBlock::countryBlockingBypassCookieValue(), time() + (86400 * 365), '/', null, wfUtils::isFullSSL(), true);
						return self::MATCH_COUNTRY_REDIR_BYPASS;
					}
				}
				
				//Bypass View URL Hit
				$bareBypassViewURI = wfUtils::extractBareURI(wfConfig::get('cbl_bypassViewURL', ''));
				if ($bareBypassViewURI && $bareBypassViewURI == $bareRequestURI) {
					wfUtils::setcookie('wfCBLBypass', wfBlock::countryBlockingBypassCookieValue(), time() + (86400 * 365), '/', null, wfUtils::isFullSSL(), true);
					return self::MATCH_NONE;
				}
				
				//Early exit checks
				if ($this->_shouldBypassCountryBlocking()) { //Has valid bypass cookie
					return self::MATCH_NONE;
				}
				
				if ($this->blockLogin) {
					add_filter('authenticate', array($this, '_checkForBlockedCountryFilter'), 1, 1);
				}
				
				if (!$this->blockLogin && $this->_isAuthRequest()) { //Not blocking login and this is a login request
					return self::MATCH_NONE;
				}
				else if (!$this->blockSite && !$this->_isAuthRequest()) { //Not blocking site and this may be a site request
					return self::MATCH_NONE;
				}
				else if (is_user_logged_in() && !wfConfig::get('cbl_loggedInBlocked', false)) { //Not blocking logged in users and a login session exists
					return self::MATCH_NONE;
				}
				
				//Block everything
				if ($this->blockSite && $this->blockLogin) {
					return $this->_checkForBlockedCountry();
				}
				
				//Block the login form itself and any attempt to authenticate
				if ($this->blockLogin && $this->_isAuthRequest()) {
					return $this->_checkForBlockedCountry();
				}
				
				//Block requests that aren't to the login page, xmlrpc.php, or a user already logged in
				if ($this->blockSite && !$this->_isAuthRequest() && !defined('XMLRPC_REQUEST')) {
					return $this->_checkForBlockedCountry();
				}
				
				//XMLRPC is inaccesible when public portion of the site and auth is disabled
				if ($this->blockLogin && $this->blockSite && defined('XMLRPC_REQUEST')) {
					return $this->_checkForBlockedCountry();
				}
				
				break;
		}
		
		return self::MATCH_NONE;
	}
	
	/**
	 * Returns whether or not the current request should be treated as an auth request.
	 * 
	 * @return bool
	 */
	private function _isAuthRequest() {
		if ((strpos($_SERVER['REQUEST_URI'], '/wp-login.php') !== false)) {
			return true;
		}
		return false;
	}
	
	/**
	 * Tests whether or not the country blocking bypass cookie is set and valid.
	 * 
	 * @return bool
	 */
	private function _shouldBypassCountryBlocking() {
		if (isset($_COOKIE['wfCBLBypass']) && $_COOKIE['wfCBLBypass'] == wfBlock::countryBlockingBypassCookieValue()) {
			return true;
		}
		return false;
	}
	
	/**
	 * Checks the country block against the requesting IP, returning the action to take.
	 * 
	 * @return int
	 */
	private function _checkForBlockedCountry() {
		$blockedCountries = $this->countries;
		$bareRequestURI = untrailingslashit(wfUtils::extractBareURI($_SERVER['REQUEST_URI']));
		$IP = wfUtils::getIP();
		if ($country = wfUtils::IP2Country($IP)) {
			foreach ($blockedCountries as $blocked) {
				if (strtoupper($blocked) == strtoupper($country)) { //At this point we know the user has been blocked
					if (wfConfig::get('cbl_action') == 'redir') {
						$redirURL = wfConfig::get('cbl_redirURL');
						$eRedirHost = wfUtils::extractHostname($redirURL);
						$isExternalRedir = false;
						if ($eRedirHost && $eRedirHost != wfUtils::extractHostname(home_url())) { //It's an external redirect...
							$isExternalRedir = true;
						}
						
						if ((!$isExternalRedir) && untrailingslashit(wfUtils::extractBareURI($redirURL)) == $bareRequestURI) { //Is this the URI we want to redirect to, then don't block it
							return self::MATCH_NONE;
						}
						else {
							return self::MATCH_COUNTRY_REDIR;
						}
					}
					else {
						return self::MATCH_COUNTRY_BLOCK;
					}
				}
			}
		}
		
		return self::MATCH_NONE;
	}
	
	/**
	 * Filter hook for the country blocking check. Does nothing if not blocked, otherwise presents the block page and exits.
	 * 
	 * Note: Must remain `public` for callback to work.
	 */
	public function _checkForBlockedCountryFilter($user) {
		$block = $this->_checkForBlockedCountry();
		if ($block == self::MATCH_NONE) { 
			return $user;
		}
		
		$log = wfLog::shared();
		$log->getCurrentRequest()->actionDescription = __('blocked access via country blocking', 'wordfence');
		wfConfig::inc('totalCountryBlocked');
		wfActivityReport::logBlockedIP(wfUtils::getIP(), null, 'country');
		$log->do503(3600, __('Access from your area has been temporarily limited for security reasons', 'wordfence')); //exits
	}
	
	/**
	 * Adds $quantity to the blocked count and sets the timestamp for lastAttempt.
	 * 
	 * @param int $quantity
	 * @param bool|int $timestamp
	 */
	public function recordBlock($quantity = 1, $timestamp = false) {
		if ($timestamp === false) {
			$timestamp = time();
		}
		
		global $wpdb;
		$blocksTable = wfBlock::blocksTable();
		$wpdb->query($wpdb->prepare("UPDATE `{$blocksTable}` SET `blockedHits` = `blockedHits` + %d, `lastAttempt` = GREATEST(`lastAttempt`, %d) WHERE `id` = %d", $quantity, $timestamp, $this->id));
		$this->_type = false; //Trigger a re-fetch next access 
	}
	
	/**
	 * Returns an array suitable for JSON of the values needed to edit the block.
	 * 
	 * @return array
	 */
	public function editValues() {
		switch ($this->type) {
			case self::TYPE_COUNTRY:
				return array(
					'blockLogin' => wfUtils::truthyToInt($this->blockLogin),
					'blockSite' => wfUtils::truthyToInt($this->blockSite),
					'countries' => $this->countries,
					'reason' => $this->reason,
					'expiration' => $this->expiration,
				);
		}
		
		return array();
	}
}models/.htaccess000064400000000542150755146440007641 0ustar00<IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{REQUEST_URI} \.php$
        RewriteRule .* - [F,L,NC]
</IfModule>
<IfModule !mod_rewrite.c>
	<FilesMatch "\.php$">
	<IfModule mod_authz_core.c>
		Require all denied
	</IfModule>
	<IfModule !mod_authz_core.c>
		Order deny,allow
		Deny from all
	</IfModule>
	</FilesMatch>
</IfModule>models/page/wfPage.php000064400000016060150755146440010703 0ustar00<?php

class wfPage {
	const PAGE_DASHBOARD = 'dashboard';
	const PAGE_DASHBOARD_OPTIONS = 'dashboard-options';
	const PAGE_FIREWALL = 'firewall';
	const PAGE_FIREWALL_OPTIONS = 'firewall-options';
	const PAGE_BLOCKING = 'blocking';
	const PAGE_BLOCKING_OPTIONS = 'blocking-options';
	const PAGE_SCAN = 'scan';
	const PAGE_SCAN_OPTIONS = 'scan-options';
	const PAGE_TOOLS_2FA = 'tools-2fa';
	const PAGE_TOOLS_LIVE_TRAFFIC = 'tools-2fa';
	const PAGE_TOOLS_WHOIS = 'tools-whois';
	const PAGE_TOOLS_IMPORT_EXPORT = 'tools-import-export';
	const PAGE_TOOLS_DIAGNOSTICS = 'tools-diagnostics';
	const PAGE_SUPPORT = 'support';
	
	/** @var string */
	private $_identifier;
	
	/**
	 * Provides validation for a user-provided page identifier.
	 * 
	 * @param string $identifier
	 * @return bool
	 */
	public static function isValidPage($identifier) {
		switch ($identifier) {
			case self::PAGE_DASHBOARD:
			case self::PAGE_DASHBOARD_OPTIONS:
			case self::PAGE_FIREWALL:
			case self::PAGE_FIREWALL_OPTIONS:
			case self::PAGE_BLOCKING:
			case self::PAGE_BLOCKING_OPTIONS:
			case self::PAGE_SCAN:
			case self::PAGE_SCAN_OPTIONS:
			case self::PAGE_TOOLS_2FA:
			case self::PAGE_TOOLS_LIVE_TRAFFIC:
			case self::PAGE_TOOLS_IMPORT_EXPORT:
			case self::PAGE_TOOLS_WHOIS:
			case self::PAGE_TOOLS_DIAGNOSTICS:
			case self::PAGE_SUPPORT:
				return true;
		}
		return false;
	}
	
	/**
	 * Convenience function for returning the user-displayable label for the given page.
	 * 
	 * @param string $identifier
	 * @return bool|string
	 */
	public static function pageLabel($identifier) {
		$page = new wfPage($identifier);
		return $page->label();
	}
	
	/**
	 * Convenience function for returning the canonical URL for the given page.
	 * 
	 * @param string $identifier
	 * @param string|bool $source The source page identifier to append to the URL if wanted.
	 * @return string
	 */
	public static function pageURL($identifier, $source = false) {
		$page = new wfPage($identifier);
		return $page->url($source);
	}
	
	public function __construct($identifier) {
		$this->_identifier = $identifier;
	}
	
	public function __get($key) {
		switch ($key) {
			case 'identifier':
				return $this->_identifier;
		}
		
		throw new OutOfBoundsException("{$key} is not a valid property");
	}
	
	public function __isset($key) {
		switch ($key) {
			case 'identifier':
				return true;
		}
		return false;
	}
	
	/**
	 * Returns the user-displayable label for the page.
	 * 
	 * @return bool|string
	 */
	public function label() {
		switch ($this->identifier) {
			case self::PAGE_DASHBOARD:
				return __('Dashboard', 'wordfence');
			case self::PAGE_DASHBOARD_OPTIONS:
				return __('Global Options', 'wordfence');
			case self::PAGE_FIREWALL:
				return __('Firewall', 'wordfence');
			case self::PAGE_FIREWALL_OPTIONS:
				return __('Firewall Options', 'wordfence');
			case self::PAGE_BLOCKING:
				return __('Blocking', 'wordfence');
			case self::PAGE_BLOCKING_OPTIONS:
				return __('Blocking Options', 'wordfence');
			case self::PAGE_SCAN:
				return __('Scan', 'wordfence');
			case self::PAGE_SCAN_OPTIONS:
				return __('Scan Options', 'wordfence');
			case self::PAGE_TOOLS_2FA:
				return __('Two-Factor Authentication', 'wordfence');
			case self::PAGE_TOOLS_LIVE_TRAFFIC:
				return __('Live Traffic', 'wordfence');
			case self::PAGE_TOOLS_IMPORT_EXPORT:
				return __('Import/Export Options', 'wordfence');
			case self::PAGE_TOOLS_WHOIS:
				return __('Whois Lookup', 'wordfence');
			case self::PAGE_TOOLS_DIAGNOSTICS:
				return __('Diagnostics', 'wordfence');
			case self::PAGE_SUPPORT:
				return __('Support', 'wordfence');
		}
		
		return false;
	}
	
	/**
	 * Returns the canonical URL for the page.
	 * 
	 * @param string|bool $source The source page identifier to append to the URL if wanted.
	 * @return string
	 */
	public function url($source = false) {
		$page = '';
		$subpage = '';
		$hash = '';
		switch ($this->identifier) {
			case self::PAGE_DASHBOARD:
				$page = 'Wordfence';
				break;
			case self::PAGE_DASHBOARD_OPTIONS:
				$page = 'Wordfence';
				$subpage = 'global_options';
				break;
			case self::PAGE_FIREWALL:
				$page = 'WordfenceWAF';
				break;
			case self::PAGE_FIREWALL_OPTIONS:
				$page = 'WordfenceWAF';
				$subpage = 'waf_options';
				break;
			case self::PAGE_BLOCKING:
				$page = 'WordfenceWAF';
				$hash = '#top#blocking';
				break;
			case self::PAGE_BLOCKING_OPTIONS:
				$page = 'WordfenceWAF';
				$subpage = 'blocking_options';
				break;
			case self::PAGE_SCAN:
				$page = 'WordfenceScan';
				break;
			case self::PAGE_SCAN_OPTIONS:
				$page = 'WordfenceScan';
				$subpage = 'scan_options';
				break;
			case self::PAGE_TOOLS_2FA:
				$page = 'WordfenceTools';
				$subpage = 'twofactor';
				break;
			case self::PAGE_TOOLS_LIVE_TRAFFIC:
				$page = 'WordfenceTools';
				$subpage = 'livetraffic';
				break;
			case self::PAGE_TOOLS_IMPORT_EXPORT:
				$page = 'WordfenceTools';
				$subpage = 'importexport';
				break;
			case self::PAGE_TOOLS_WHOIS:
				$page = 'WordfenceTools';
				$subpage = 'whois';
				break;
			case self::PAGE_TOOLS_DIAGNOSTICS:
				$page = 'WordfenceTools';
				$subpage = 'diagnostics';
				break;
			case self::PAGE_SUPPORT:
				$page = 'WordfenceSupport';
				break;
		}
		
		$baseURL = 'admin.php?';
		$baseURL .= 'page=' . rawurlencode($page);
		if (!empty($subpage)) { $baseURL .= '&subpage=' . rawurlencode($subpage); }
		if (self::isValidPage($source))  { $baseURL .= '&source=' . rawurlencode($source); }
		if (!empty($hash)) { $baseURL .= $this->_hashURLEncode($hash); }
		if (function_exists('network_admin_url') && is_multisite()) {
			return network_admin_url($baseURL);
		}
		
		 return admin_url($baseURL);
	}
	
	/**
	 * Splits a URI hash component and URL-encodes its members.
	 * 
	 * @param string $hash
	 * @return string
	 */
	private function _hashURLEncode($hash) {
		$components = explode('#', $hash);
		foreach ($components as &$c) {
			$c = rawurlencode($c);
		}
		return implode('#', $components);
	}
	
	/**
	 * Returns an ordered array of the pages required to reach this page, this page being the last entry in the array.
	 * 
	 * @return array
	 */
	public function breadcrumbs() {
		switch ($this->identifier) {
			case self::PAGE_DASHBOARD:
				return array($this);
			case self::PAGE_DASHBOARD_OPTIONS:
				return array(new wfPage(wfPage::PAGE_DASHBOARD), $this);
			case self::PAGE_FIREWALL:
				return array($this);
			case self::PAGE_FIREWALL_OPTIONS:
				return array(new wfPage(wfPage::PAGE_FIREWALL), $this);
			case self::PAGE_BLOCKING:
				return array($this);
			case self::PAGE_BLOCKING_OPTIONS:
				return array(new wfPage(wfPage::PAGE_BLOCKING), $this);
			case self::PAGE_SCAN:
				return array($this);
			case self::PAGE_SCAN_OPTIONS:
				return array(new wfPage(wfPage::PAGE_SCAN), $this);
			case self::PAGE_TOOLS_2FA:
				return array($this);
			case self::PAGE_TOOLS_LIVE_TRAFFIC:
				return array($this);
			case self::PAGE_TOOLS_IMPORT_EXPORT:
				return array($this);
			case self::PAGE_TOOLS_WHOIS:
				return array($this);
			case self::PAGE_TOOLS_DIAGNOSTICS:
				return array($this);
			case self::PAGE_SUPPORT:
				return array($this);
		}
		
		return array();
	}
}
models/firewall/wfFirewall.php000064400000040156150755146440012470 0ustar00<?php

class wfFirewall
{
	const FIREWALL_MODE_DISABLED = 'disabled';
	const FIREWALL_MODE_LEARNING = 'learning-mode';
	const FIREWALL_MODE_ENABLED = 'enabled';
	
	const PROTECTION_MODE_EXTENDED = 'extended';
	const PROTECTION_MODE_BASIC = 'basic';
	
	const RULE_MODE_COMMUNITY = 'community';
	const RULE_MODE_PREMIUM = 'premium';
	
	const BLACKLIST_MODE_DISABLED = 'disabled';
	const BLACKLIST_MODE_ENABLED = 'enabled';
	
	const UPDATE_FAILURE_RATELIMIT = 'ratelimit';
	const UPDATE_FAILURE_UNREACHABLE = 'unreachable';
	const UPDATE_FAILURE_FILESYSTEM = 'filesystem';
	
	/**
	 * Returns a string suitable for display of the firewall status.
	 * 
	 * @param null|string $status
	 * @param null|string $protection
	 * @return string
	 */
	public function displayText($status = null, $protection = null) {
		if ($status === null) { $status = $this->firewallMode(); }
		if ($protection === null) { $protection = $this->protectionMode(); }
		
		switch ($status) {
			case self::FIREWALL_MODE_ENABLED:
				$statusText = __('Enabled', 'wordfence');
				break;
			case self::FIREWALL_MODE_LEARNING:
				$statusText = __('Learning Mode', 'wordfence');
				break;
			default:
				return __('Disabled', 'wordfence');
		}
		
		switch ($protection) {
			case self::PROTECTION_MODE_EXTENDED:
				$protectionText = __('Extended Protection', 'wordfence');
				break;
			default:
				$protectionText = __('Basic Protection', 'wordfence');
				break;
		}
		
		return sprintf('%s (%s)', $statusText, $protectionText);
	}
	
	/**
	 * Syncs the status from WAF to the wfConfig table if $toDatabase is true, the reverse if false.
	 * 
	 * @param bool $toDatabase
	 */
	public function syncStatus($toDatabase = true) {
		if ($toDatabase) {
			try {
				$status = wfWAF::getInstance()->getStorageEngine()->getConfig('wafStatus');
				if (in_array($status, array(self::FIREWALL_MODE_DISABLED, self::FIREWALL_MODE_LEARNING, self::FIREWALL_MODE_ENABLED))) {
					wfConfig::set('waf_status', $status);
				}
			}
			catch (Exception $e) {
				//Ignore
			}
		}
		else {
			try {
				$status = wfConfig::get('waf_status');
				if (in_array($status, array(self::FIREWALL_MODE_DISABLED, self::FIREWALL_MODE_LEARNING, self::FIREWALL_MODE_ENABLED))) {
					wfWAF::getInstance()->getStorageEngine()->setConfig('wafStatus', $status);
				}
			}
			catch (Exception $e) {
				//Ignore
			}
		}
	}
	
	/**
	 * Tests the WAF configuration and returns true if successful.
	 * 
	 * @return bool
	 */
	public function testConfig() {
		try {
			wfWAF::getInstance()->getStorageEngine()->isDisabled();
		}
		catch (Exception $e) {
			return false;
		}
		
		return true;
	}
	
	/**
	 * Returns a normalized percentage (i.e., in the range [0, 1]) to the corresponding display percentage
	 * based on license type.
	 * 
	 * @param float $percentage
	 * @param bool $adjust Whether or not to adjust the range to [0, 0.7]
	 * @return float
	 */
	protected function _normalizedPercentageToDisplay($percentage, $adjust = true) {
		if (wfConfig::get('isPaid') || !$adjust) {
			return round($percentage, 2);
		}
		
		return round($percentage * 0.70, 2);
	}
	
	/**
	 * Returns the percentage calculation of the overall firewall status, which is displayed under "Firewall" 
	 * on the Dashboard page.
	 *
	 * @return float
	 */
	public function overallStatus() {
		try {
			$wafStatus = $this->wafStatus();
			$bruteForceStatus = $this->bruteForceStatus();
			
			$percentage = 0.0;
			$percentage += $wafStatus * 0.80;
			$percentage += $bruteForceStatus * 0.20;
			return $this->_normalizedPercentageToDisplay($percentage, false);
		}
		catch (Exception $e) {
			//Ignore, return 0%
		}
		
		return 0.0;
	}
	
	public function statusList($section = null) {
		$statusList = array();
		$wafStatusList = $this->wafStatusList($section);
		$bruteForceStatusList = $this->bruteForceStatusList();
		
		foreach ($wafStatusList as $entry) {
			$entry['percentage'] *= 0.8;
			$statusList[] = $entry;
		}
		
		foreach ($bruteForceStatusList as $entry) {
			$entry['percentage'] *= 0.2;
			$statusList[] = $entry;
		}
			
		return array_filter($statusList);
	}
	
	/**
	 * Returns the percentage calculation of the WAF status, which is displayed under "Web Application
	 * Firewall" on the Firewall page.
	 * 
	 * @return float
	 */
	public function wafStatus() {
		try {
			$ruleStatus = $this->ruleStatus(true);
			$blacklistStatus = $this->blacklistStatus();
			$wafEnabled = !(!WFWAF_ENABLED || wfWAF::getInstance()->getStorageEngine()->isDisabled());
			$extendedProtection = $wafEnabled && WFWAF_AUTO_PREPEND && !WFWAF_SUBDIRECTORY_INSTALL;
			$rateLimitingAdvancedBlockingEnabled = wfConfig::get('firewallEnabled', 1);

			if (!$wafEnabled) {
				return 0.0;
			}
			
			$percentage = 0.0;
			$percentage += $this->_normalizedPercentageToDisplay($ruleStatus * 0.35, true);
			$percentage += $blacklistStatus * 0.35;
			$percentage += ($extendedProtection ? 0.20 : 0.0);
			$percentage += ($rateLimitingAdvancedBlockingEnabled ? 0.10 : 0.0);
			return $this->_normalizedPercentageToDisplay($percentage, false);
		}
		catch (Exception $e) {
			//Ignore, return 0%
		}
		
		return 0.0;
	}

	public function wafStatusList($section = null) {
		$statusList = array();
		try {
			$wafEnabled = !(!WFWAF_ENABLED || wfWAF::getInstance()->getStorageEngine()->isDisabled());
			if (!$wafEnabled) {
				return array(
					array(
						'percentage' => 1.0,
						'title'      => __('Enable firewall.', 'wordfence'),
					),
				);
			}

			// Get percent of rules enabled.
			$ruleStatus = $this->ruleStatusDescription(true);
			$premiumStatus = array();
			if (!wfConfig::get('isPaid')) {
				$premiumStatus = array(
					'percentage' => 0.30,
					'title'      => __('Enable Premium Rules.', 'wordfence'),
				);
			}

			if ($section === 'rules') {
				if ($ruleStatus) {
					$ruleStatus['percentage'] = $this->_normalizedPercentageToDisplay($ruleStatus['percentage']);
				}
				return array_filter(array($ruleStatus, $premiumStatus));
			}
			if ($premiumStatus) {
				$premiumStatus['percentage'] *= 0.35;
				$premiumStatus['percentage'] = $this->_normalizedPercentageToDisplay($premiumStatus['percentage'], false);
			}
			if ($ruleStatus) {
				$ruleStatus['percentage'] *= 0.35;
				$ruleStatus['percentage'] = $this->_normalizedPercentageToDisplay($ruleStatus['percentage']);
			}
			$statusList = array_merge($statusList, array($ruleStatus), array($premiumStatus));

			$blacklistStatus = $this->blacklistStatusDescription();
			if ($section === 'blacklist') {
				return array_filter(array($blacklistStatus));
			}
			if ($blacklistStatus) {
				$blacklistStatus['percentage'] *= 0.35;
				$blacklistStatus['percentage'] = $this->_normalizedPercentageToDisplay($blacklistStatus['percentage'], false);
			}
			$statusList = array_merge($statusList, array($blacklistStatus));

			$extendedProtection = $wafEnabled && WFWAF_AUTO_PREPEND && !WFWAF_SUBDIRECTORY_INSTALL;
			if (!$extendedProtection) {
				$statusList[] = array(
					'percentage' => $this->_normalizedPercentageToDisplay(0.20, false),
					'title' => __('Optimize the Wordfence Firewall.', 'wordfence'),
				);
			}

			$rateLimitingAdvancedBlockingEnabled = wfConfig::get('firewallEnabled', 1);
			if (!$rateLimitingAdvancedBlockingEnabled) {
				$statusList[] = array(
					'percentage' => $this->_normalizedPercentageToDisplay(0.10, false),
					'title' => __('Enable Rate Limiting and Advanced Blocking.', 'wordfence'),
				);
			}

			return array_filter($statusList);
		}
		catch (Exception $e) {
			//Ignore, return 0%
		}
		
		if (!WFWAF_OPERATIONAL) {
			return array(array('percentage' => 1.0, 'title' => __('Repair the Wordfence Firewall configuration.', 'wordfence')));
		}

		return array();
	}
	
	/**
	 * Returns the status of the WAF.
	 * 
	 * @return string
	 */
	public function firewallMode() {
		try {
			return (!WFWAF_ENABLED ? 'disabled' : wfWAF::getInstance()->getStorageEngine()->getConfig('wafStatus'));
		}
		catch (Exception $e) {
			//Ignore
		}
		
		return self::FIREWALL_MODE_DISABLED;
	}
	
	/**
	 * Returns the current protection mode configured for the WAF.
	 * 
	 * @return string
	 */
	public function protectionMode() {
		if (defined('WFWAF_AUTO_PREPEND') && WFWAF_AUTO_PREPEND) {
			return self::PROTECTION_MODE_EXTENDED;
		}
		return self::PROTECTION_MODE_BASIC;
	}
	
	/**
	 * Returns whether or not this installation is in a subdirectory of another WordPress site with the WAF already optimized.
	 * 
	 * @return bool
	 */
	public function isSubDirectoryInstallation() {
		if (defined('WFWAF_SUBDIRECTORY_INSTALL') && WFWAF_SUBDIRECTORY_INSTALL) {
			return true;
		}
		return false;
	}
	
	/**
	 * Returns the percentage calculation of the firewall rule status, which is displayed under "Firewall Rules" on the
	 * Firewall page.
	 * 
	 * The calculation is the number of rules enabled divided by the total number of rules. If the WAF is in learning 
	 * mode, no rules are enforced, so it's clamped to 0%.
	 * 
	 * @param bool $round Round the percentage (in the range [0, 1]) to be only whole percentages.
	 * @return float
	 */
	public function ruleStatus($round = false) {
		try {
			$wafEnabled = !(!WFWAF_ENABLED || wfWAF::getInstance()->getStorageEngine()->isDisabled());
			if (!$wafEnabled) {
				return 0.0;
			}
			
			/*$learningMode = !!wfWAF::getInstance()->isInLearningMode();
			if ($learningMode) {
				return 0.0;
			}*/
			
			$rules = wfWAF::getInstance()->getRules();
			$disabledRules = (array) wfWAF::getInstance()->getStorageEngine()->getConfig('disabledRules');
			/** @var wfWAFRule $rule */
			$enabledCount = 0;
			foreach ($rules as $ruleID => $rule) {
				if (isset($disabledRules[$ruleID]) && $disabledRules[$ruleID]) {
					continue;
				}
				
				$enabledCount++;
			}
			
			$percentEnabled = (count($rules) == 0 ? 0 : $enabledCount / count($rules));
			if ($round) {
				return round($percentEnabled, 2);
			}
			
			return $this->_normalizedPercentageToDisplay($percentEnabled);
		}
		catch (Exception $e) {
			//Ignore, return 0%
		}
		
		return 0.0;
	}

	/**
	 * @param bool $round
	 * @return array
	 */
	public function ruleStatusDescription($round = false) {
		try {
			$wafEnabled = !(!WFWAF_ENABLED || wfWAF::getInstance()->getStorageEngine()->isDisabled());
			if (!$wafEnabled) {
				return array(
					'percentage' => 1.0,
					'title'      => __('Enable firewall.', 'wordfence'),
				);
			}
			
			/*$learningMode = !!wfWAF::getInstance()->isInLearningMode();
			if ($learningMode) {
				return 0.0;
			}*/

			$rules = wfWAF::getInstance()->getRules();
			$disabledRules = (array) wfWAF::getInstance()->getStorageEngine()->getConfig('disabledRules');
			/** @var wfWAFRule $rule */
			$enabledCount = 0;
			foreach ($rules as $ruleID => $rule) {
				if (isset($disabledRules[$ruleID]) && $disabledRules[$ruleID]) {
					continue;
				}

				$enabledCount++;
			}
			
			$percentEnabled = 1.0 - ((float) (count($rules) == 0 ? 0 : $enabledCount / count($rules)));
			if ($percentEnabled === 0.0) {
				return array();
			}
			$reenbleCount = count($rules) - $enabledCount;
			return array(
				'percentage' => ($round ? round($percentEnabled, 2) : $percentEnabled),
				'title'      => sprintf(_n('Re-enable %d firewall rule.', 'Re-enable %d firewall rules.', $reenbleCount, 'wordfence'), number_format_i18n($reenbleCount)),
			);
		}
		catch (Exception $e) {
			//Ignore, return 0%
		}

		return array(
			'percentage' => 1.0,
			'title'      => __('Enable firewall.', 'wordfence'),
		);
	}
	
	/**
	 * Returns the rule feed that is in use.
	 * 
	 * @return string
	 */
	public function ruleMode() {
		if (wfConfig::get('isPaid')) {
			return self::RULE_MODE_PREMIUM;
		}
		return self::RULE_MODE_COMMUNITY;
	}
	
	/**
	 * Returns 100% if the blacklist is enabled, 0% if not.
	 * 
	 * @return float
	 */
	public function blacklistStatus() {
		try {
			$wafEnabled = !(!WFWAF_ENABLED || wfWAF::getInstance()->getStorageEngine()->isDisabled());
			if (!$wafEnabled) {
				return 0.0;
			}
			
			return $this->blacklistMode() == self::BLACKLIST_MODE_ENABLED ? 1.0 : 0.0;
		}
		catch (Exception $e) {
			//Ignore, return 0%
		}
		
		return 0.0;
	}
	
	/**
	 * Returns 100% if the blacklist is enabled, 0% if not.
	 *
	 * @return array
	 */
	public function blacklistStatusDescription() {
		try {
			$wafEnabled = !(!WFWAF_ENABLED || wfWAF::getInstance()->getStorageEngine()->isDisabled());
			if (!$wafEnabled) {
				return array(
					'percentage' => 1.0,
					'title'      => __('Enable Firewall.', 'wordfence'),
				);
			}
			
			if ($this->blacklistMode() == self::BLACKLIST_MODE_ENABLED) {
				return array();
			}
			return array(
				'percentage' => 1.0,
				'title'      => __('Enable Real-Time IP Blocklist.', 'wordfence'),
			);
		}
		catch (Exception $e) {
			//Ignore, return 0%
		}
			
		return array(
			'percentage' => 1.0,
			'title'      => __('Enable Real-Time IP Blocklist.', 'wordfence'),
		);
	}

	/**
	 * Returns the blacklist mode.
	 *
	 * @return string
	 */
	public function blacklistMode() {
		$blacklistEnabled = false;
		try {
			$wafEnabled = !(!WFWAF_ENABLED || wfWAF::getInstance()->getStorageEngine()->isDisabled());
			$blacklistEnabled = $wafEnabled && !wfWAF::getInstance()->getStorageEngine()->getConfig('disableWAFBlacklistBlocking');
		}
		catch (Exception $e) {
			//Do nothing
		}
		
		if (wfConfig::get('isPaid') && $blacklistEnabled) {
			return self::BLACKLIST_MODE_ENABLED;
		}
		return self::BLACKLIST_MODE_DISABLED;
	}
	
	/**
	 * Returns a percentage rating for the brute force protection status. This includes both the WFSN enabled status
	 * and the status of individual login security options. These options are available to all, so they are always
	 * in the range [0,1].
	 * 
	 * @return float
	 */
	public function bruteForceStatus() {
		$networkBruteForceEnabled = !!wfConfig::get('other_WFNet');
		$localBruteForceEnabled = !!wfConfig::get('loginSecurityEnabled');
		
		$percentage = 0.0;

		if ($localBruteForceEnabled) {
			$percentage += 0.1;

			if ($networkBruteForceEnabled) {
				$percentage += 0.5;
			}
			if (wfConfig::get('loginSec_strongPasswds_enabled') && (wfConfig::get('loginSec_strongPasswds') == 'pubs' || wfConfig::get('loginSec_strongPasswds') == 'all')) {
				$percentage += 0.1;
			}
			if (wfConfig::get('loginSec_maskLoginErrors')) {
				$percentage += 0.1;
			}
			if (wfConfig::get('loginSec_blockAdminReg')) {
				$percentage += 0.1;
			}
			if (wfConfig::get('loginSec_disableAuthorScan')) {
				$percentage += 0.1;
			}
		}
		
		return round($percentage, 2);
	}
	
	/**
	 * Returns the status of the WAF's learning mode.
	 * 
	 * @return bool|int Returns true if enabled without an automatic switchover, a timestamp if enabled with one, and false if not in learning mode.
	 */
	public function learningModeStatus() {
		if ($this->firewallMode() != self::FIREWALL_MODE_LEARNING) {
			return false;
		}
		
		try {
			$config = wfWAF::getInstance()->getStorageEngine();
			if ($config->getConfig('learningModeGracePeriodEnabled')) {
				return (int) $config->getConfig('learningModeGracePeriod');
			}
			
			return true;
		}
		catch (Exception $e) {
			//Ignore, return false
		}
		
		return false;
	}

	/**
	 * @return array
	 */
	public function bruteForceStatusList() {
		$networkBruteForceEnabled = !!wfConfig::get('other_WFNet');
		$localBruteForceEnabled = !!wfConfig::get('loginSecurityEnabled');

		$status = array();

		if ($localBruteForceEnabled) {
			if (!$networkBruteForceEnabled) {
				$status[] = array(
					'percentage' => 0.5,
					'title' => __('Enable Real-Time Wordfence Security Network.', 'wordfence'),
				);
			}
			if (!wfConfig::get('loginSec_strongPasswds_enabled')) {
				$status[] = array(
					'percentage' => 0.1,
					'title' => __('Enforce Strong Passwords.', 'wordfence'),
				);
			}
			if (!wfConfig::get('loginSec_maskLoginErrors')) {
				$status[] = array(
					'percentage' => 0.1,
					'title' => __('Enable Mask Login Errors.', 'wordfence'),
				);
			}
			if (!wfConfig::get('loginSec_blockAdminReg')) {
				$status[] = array(
					'percentage' => 0.1,
					'title' => __('Enable Block Admin Registration.', 'wordfence'),
				);
			}
			if (!wfConfig::get('loginSec_disableAuthorScan')) {
				$status[] = array(
					'percentage' => 0.1,
					'title' => __('Disable Author Scanning.', 'wordfence'),
				);
			}
		} else {
			$status[] = array(
				'percentage' => 1.0,
				'title' => __('Enable Brute Force Protection.', 'wordfence'),
			);
		}

		return array_filter($status);
	}
}
models/scanner/wfScanner.php000064400000126030150755146440012134 0ustar00<?php

class wfScanner {
	const SCAN_TYPE_QUICK = 'quick';
	const SCAN_TYPE_LIMITED = 'limited';
	const SCAN_TYPE_STANDARD = 'standard';
	const SCAN_TYPE_HIGH_SENSITIVITY = 'highsensitivity';
	const SCAN_TYPE_CUSTOM = 'custom';
	
	const SCAN_SCHEDULING_MODE_AUTOMATIC = 'auto';
	const SCAN_SCHEDULING_MODE_MANUAL = 'manual';
	
	const MANUAL_SCHEDULING_ONCE_DAILY = 'onceDaily';
	const MANUAL_SCHEDULING_TWICE_DAILY = 'twiceDaily';
	const MANUAL_SCHEDULING_EVERY_OTHER_DAY = 'everyOtherDay';
	const MANUAL_SCHEDULING_WEEKDAYS = 'weekdays';
	const MANUAL_SCHEDULING_WEEKENDS = 'weekends';
	const MANUAL_SCHEDULING_ODD_DAYS_WEEKENDS = 'oddDaysWE';
	const MANUAL_SCHEDULING_CUSTOM = 'custom';
	
	const SIGNATURE_MODE_PREMIUM = 'premium';
	const SIGNATURE_MODE_COMMUNITY = 'community';
	
	const STATUS_PENDING = 'pending';
	const STATUS_RUNNING = 'running';
	const STATUS_RUNNING_WARNING = 'running-warning';
	const STATUS_COMPLETE_SUCCESS = 'complete-success';
	const STATUS_COMPLETE_WARNING = 'complete-warning';
	const STATUS_PREMIUM = 'premium';
	const STATUS_DISABLED = 'disabled';

	const STAGE_SPAMVERTISING_CHECKS = 'spamvertising';
	const STAGE_SPAM_CHECK = 'spam';
	const STAGE_BLACKLIST_CHECK = 'blacklist';
	const STAGE_SERVER_STATE = 'server';
	const STAGE_FILE_CHANGES = 'changes';
	const STAGE_PUBLIC_FILES = 'public';
	const STAGE_MALWARE_SCAN = 'malware';
	const STAGE_CONTENT_SAFETY = 'content';
	const STAGE_PASSWORD_STRENGTH = 'password';
	const STAGE_VULNERABILITY_SCAN = 'vulnerability';
	const STAGE_OPTIONS_AUDIT = 'options';
	
	const SUMMARY_TOTAL_USERS = 'totalUsers';
	const SUMMARY_TOTAL_PAGES = 'totalPages';
	const SUMMARY_TOTAL_POSTS = 'totalPosts';
	const SUMMARY_TOTAL_COMMENTS = 'totalComments';
	const SUMMARY_TOTAL_CATEGORIES = 'totalCategories';
	const SUMMARY_TOTAL_TABLES = 'totalTables';
	const SUMMARY_TOTAL_ROWS = 'totalRows';
	const SUMMARY_SCANNED_POSTS = 'scannedPosts';
	const SUMMARY_SCANNED_COMMENTS = 'scannedComments';
	const SUMMARY_SCANNED_FILES = 'scannedFiles';
	const SUMMARY_SCANNED_PLUGINS = 'scannedPlugins';
	const SUMMARY_SCANNED_THEMES = 'scannedThemes';
	const SUMMARY_SCANNED_USERS = 'scannedUsers';
	const SUMMARY_SCANNED_URLS = 'scannedURLs';
	
	const CENTRAL_STAGE_UPDATE_THRESHOLD = 5;
	
	private $_scanType = false;
	
	private $_summary = false;
	private $_destructRegistered = false;
	private $_dirty = false;
	
	/**
	 * Returns the singleton wfScanner with the user-configured scan type set.
	 * 
	 * @return wfScanner
	 */
	public static function shared() {
		static $_scanner = null;
		if ($_scanner === null) {
			$_scanner = new wfScanner();
		}
		return $_scanner;
	}
	
	/**
	 * Schedules a cron rescheduling to happen at the end of the current process's execution.
	 */
	public static function setNeedsRescheduling() {
		static $willReschedule = false;
		if (!$willReschedule) {
			$willReschedule = true;
			register_shutdown_function(array(self::shared(), 'scheduleScans'));
		}
	}
	
	/**
	 * Returns whether or not the scan type passed is valid.
	 * 
	 * @param $type
	 * @return bool
	 */
	public static function isValidScanType($type) {
		switch ($type) {
			case self::SCAN_TYPE_QUICK:
			case self::SCAN_TYPE_LIMITED:
			case self::SCAN_TYPE_HIGH_SENSITIVITY:
			case self::SCAN_TYPE_CUSTOM:
			case self::SCAN_TYPE_STANDARD:
				return true;
		}
		return false;
	}
	
	/**
	 * Returns the display string for the given type.
	 * 
	 * @param string $type
	 * @return string
	 */
	public static function displayScanType($type) {
		switch ($type) {
			case self::SCAN_TYPE_QUICK:
				return __('Quick', 'wordfence');
			case self::SCAN_TYPE_LIMITED:
				return __('Limited', 'wordfence');
			case self::SCAN_TYPE_HIGH_SENSITIVITY:
				return __('High Sensitivity', 'wordfence');
			case self::SCAN_TYPE_CUSTOM:
				return __('Custom', 'wordfence');
			case self::SCAN_TYPE_STANDARD:
			default:
				return __('Standard', 'wordfence');
		}
	}
	
	/**
	 * Returns the display detail string for the given type.
	 *
	 * @param string $type
	 * @return string
	 */
	public static function displayScanTypeDetail($type) {
		switch ($type) {
			case self::SCAN_TYPE_QUICK:
			case self::SCAN_TYPE_LIMITED:
				return __('Low resource utilization, limited detection capability', 'wordfence');
			case self::SCAN_TYPE_HIGH_SENSITIVITY:
				return __('Standard detection capability, chance of false positives', 'wordfence');
			case self::SCAN_TYPE_CUSTOM:
				return __('Custom scan options selected', 'wordfence');
			case self::SCAN_TYPE_STANDARD:
			default:
				return __('Standard detection capability', 'wordfence');
		}
	}
	
	/**
	 * Returns an array of the scan options (as keys) and the corresponding value for the quick scan type. All omitted
	 * scan stages are considered disabled.
	 *
	 * @return array
	 */
	public static function quickScanTypeOptions() {
		$oldVersions = true;
		$wafStatus = true;
		if (wfConfig::get('scanType') == self::SCAN_TYPE_CUSTOM) { //Obey the setting in custom if that's the true scan type
			$oldVersions = wfConfig::get('scansEnabled_oldVersions');
			$wafStatus = wfConfig::get('scansEnabled_wafStatus');
		}
		
		return array_merge(self::_inactiveScanOptions(), array(
			'scansEnabled_oldVersions' => $oldVersions,
			'scansEnabled_wafStatus' => $wafStatus,
		));
	}
	
	/**
	 * Returns an array of the scan options (as keys) and the corresponding value for the limited scan type.
	 * 
	 * @return array
	 */
	public static function limitedScanTypeOptions() {
		return array_merge(self::_inactiveScanOptions(), array(
			'scansEnabled_checkHowGetIPs' => true,
			'scansEnabled_malware' => true,
			'scansEnabled_fileContents' => true,
			'scansEnabled_fileContentsGSB' => true,
			'scansEnabled_suspiciousOptions' => true,
			'scansEnabled_oldVersions' => true,
			'scansEnabled_wafStatus' => true,
			'lowResourceScansEnabled' => true,
			'scan_exclude' => wfConfig::get('scan_exclude', ''),
			'scan_include_extra' => wfConfig::get('scan_include_extra', ''),
			'scansEnabled_geoipSupport' => true,
		));
	}
	
	/**
	 * Returns an array of the scan options (as keys) and the corresponding value for the standard scan type.
	 *
	 * @return array
	 */
	public static function standardScanTypeOptions() {
		return array_merge(self::_inactiveScanOptions(), array(
			'spamvertizeCheck' => true,
			'checkSpamIP' => true,
			'scansEnabled_checkGSB' => true,
			'scansEnabled_checkHowGetIPs' => true,
			'scansEnabled_checkReadableConfig' => true,
			'scansEnabled_suspectedFiles' => true,
			'scansEnabled_core' => true,
			'scansEnabled_coreUnknown' => true,
			'scansEnabled_malware' => true,
			'scansEnabled_fileContents' => true,
			'scansEnabled_fileContentsGSB' => true,
			'scansEnabled_posts' => true,
			'scansEnabled_comments' => true,
			'scansEnabled_suspiciousOptions' => true,
			'scansEnabled_oldVersions' => true,
			'scansEnabled_suspiciousAdminUsers' => true,
			'scansEnabled_passwds' => true,
			'scansEnabled_diskSpace' => true,
			'scansEnabled_wafStatus' => true,
			'scan_exclude' => wfConfig::get('scan_exclude', ''),
			'scan_include_extra' => wfConfig::get('scan_include_extra', ''),
			'scansEnabled_geoipSupport' => true,
		));
	}
	
	/**
	 * Returns an array of the scan options (as keys) and the corresponding value for the high sensitivity scan type.
	 *
	 * @return array
	 */
	public static function highSensitivityScanTypeOptions() {
		return array_merge(self::_inactiveScanOptions(), array(
			'spamvertizeCheck' => true,
			'checkSpamIP' => true,
			'scansEnabled_checkGSB' => true,
			'scansEnabled_checkHowGetIPs' => true,
			'scansEnabled_checkReadableConfig' => true,
			'scansEnabled_suspectedFiles' => true,
			'scansEnabled_core' => true,
			'scansEnabled_themes' => true,
			'scansEnabled_plugins' => true,
			'scansEnabled_coreUnknown' => true,
			'scansEnabled_malware' => true,
			'scansEnabled_fileContents' => true,
			'scansEnabled_fileContentsGSB' => true,
			'scansEnabled_posts' => true,
			'scansEnabled_comments' => true,
			'scansEnabled_suspiciousOptions' => true,
			'scansEnabled_oldVersions' => true,
			'scansEnabled_suspiciousAdminUsers' => true,
			'scansEnabled_passwds' => true,
			'scansEnabled_diskSpace' => true,
			'scansEnabled_wafStatus' => true,
			'other_scanOutside' => true,
			'scansEnabled_scanImages' => true,
			'scan_exclude' => wfConfig::get('scan_exclude', ''),
			'scan_include_extra' => wfConfig::get('scan_include_extra', ''),
			'scansEnabled_geoipSupport' => true,
		));
	}
	
	/**
	 * Returns an array of the scan options (as keys) and the corresponding value for the custom scan type.
	 *
	 * @return array
	 */
	public static function customScanTypeOptions() {
		$allOptions = self::_inactiveScanOptions();
		foreach ($allOptions as $key => &$value) {
			$value = wfConfig::get($key);
		}
		
		$allOptions['scansEnabled_geoipSupport'] = true;
		$allOptions['scansEnabled_highSense'] = false; //deprecated
		
		return $allOptions;
	}
	
	/**
	 * Returns an array of scan options and their inactive values for convenience in merging with the various scan type
	 * option arrays.
	 * 
	 * @return array
	 */
	protected static function _inactiveScanOptions() {
		return array(
			'spamvertizeCheck' => false,
			'checkSpamIP' => false,
			'scansEnabled_checkGSB' => false,
			'scansEnabled_checkHowGetIPs' => false,
			'scansEnabled_checkReadableConfig' => false,
			'scansEnabled_suspectedFiles' => false,
			'scansEnabled_core' => false,
			'scansEnabled_themes' => false,
			'scansEnabled_plugins' => false,
			'scansEnabled_coreUnknown' => false,
			'scansEnabled_malware' => false,
			'scansEnabled_fileContents' => false,
			'scan_include_extra' => '',
			'scansEnabled_fileContentsGSB' => false,
			'scansEnabled_posts' => false,
			'scansEnabled_comments' => false,
			'scansEnabled_suspiciousOptions' => false,
			'scansEnabled_oldVersions' => false,
			'scansEnabled_suspiciousAdminUsers' => false,
			'scansEnabled_passwds' => false,
			'scansEnabled_diskSpace' => false,
			'scansEnabled_wafStatus' => false,
			'other_scanOutside' => false,
			'scansEnabled_scanImages' => false,
			'scansEnabled_highSense' => false,
			'lowResourceScansEnabled' => false,
			'scan_exclude' => '',
			'scansEnabled_geoipSupport' => false,
		);
	}
	
	/**
	 * Returns the scan options only available to premium users.
	 *
	 * @return array
	 */
	protected static function _premiumScanOptions() {
		return array('spamvertizeCheck', 'checkSpamIP', 'scansEnabled_checkGSB');
	}
	
	/**
	 * Returns an array of weights for calculating the scan option status score.
	 * 
	 * @return array
	 */
	protected static function _scanOptionWeights() {
		return array(
			'spamvertizeCheck' => 0.05,
			'checkSpamIP' => 0.05,
			'scansEnabled_checkGSB' => 0.05,
			'scansEnabled_checkHowGetIPs' => 0.05,
			'scansEnabled_checkReadableConfig' => 0.05,
			'scansEnabled_suspectedFiles' => 0.05,
			'scansEnabled_core' => 0.05,
			'scansEnabled_themes' => 0,
			'scansEnabled_plugins' => 0,
			'scansEnabled_coreUnknown' => 0.05,
			'scansEnabled_malware' => 0.05,
			'scansEnabled_fileContents' => 0.1,
			'scan_include_extra' => 0,
			'scansEnabled_fileContentsGSB' => 0.05,
			'scansEnabled_posts' => 0.05,
			'scansEnabled_comments' => 0.05,
			'scansEnabled_suspiciousOptions' => 0.05,
			'scansEnabled_oldVersions' => 0.1,
			'scansEnabled_suspiciousAdminUsers' => 0.05,
			'scansEnabled_passwds' => 0.05,
			'scansEnabled_diskSpace' => 0.05,
			'other_scanOutside' => 0,
			'scansEnabled_scanImages' => 0,
			'scansEnabled_highSense' => 0,
			'lowResourceScansEnabled' => 0,
			'scan_exclude' => 0,
			'scansEnabled_geoipSupport' => 0,
			'scansEnabled_wafStatus' => 0,
		);
	}
	
	/**
	 * wfScanner constructor.
	 * @param int|bool $scanType If false, defaults to the config option `scanType`.
	 */
	public function __construct($scanType = false) {
		if ($scanType === false || !self::isValidScanType($scanType)) {
			$this->_scanType = wfConfig::get('scanType');
		}
		else {
			$this->_scanType = $scanType;
		}
	}
	
	/**
	 * Returns whether or not the scanner will run as premium.
	 * 
	 * @return bool
	 */
	public function isPremiumScan() {
		return !!wfConfig::get('isPaid');
	}
	
	/**
	 * Returns whether or not automatic scans will run.
	 * 
	 * @return bool
	 */
	public function isEnabled() {
		return !!wfConfig::get('scheduledScansEnabled');
	}
	
	/**
	 * Returns whether or not a scan is running. A scan is considered running if the timestamp
	 * under wf_scanRunning is within WORDFENCE_MAX_SCAN_LOCK_TIME seconds of now.
	 * 
	 * @return bool
	 */
	public function isRunning() {
		$scanRunning = wfConfig::get('wf_scanRunning');
		return ($scanRunning && time() - $scanRunning < WORDFENCE_MAX_SCAN_LOCK_TIME);
	}
	
	/**
	 * Returns the current scan scheduling mode.
	 * 
	 * @return string One of the SCAN_SCHEDULING_MODE_ constants
	 */
	public function schedulingMode() {
		if (wfConfig::get('isPaid') && wfConfig::get('schedMode') == 'manual') {
			return self::SCAN_SCHEDULING_MODE_MANUAL;
		}
		return self::SCAN_SCHEDULING_MODE_AUTOMATIC;
	}
	
	/**
	 * Returns the manual scheduling type. This is only applicable when the scheduling mode is
	 * SCAN_SCHEDULING_MODE_MANUAL.
	 * 
	 * @return string One of the MANUAL_SCHEDULING_ constants.
	 */
	public function manualSchedulingType() {
		return wfConfig::get('manualScanType', self::MANUAL_SCHEDULING_ONCE_DAILY);
	}
	
	/**
	 * Returns the start hour used for non-custom manual schedules. This is initially random but may be modified
	 * by the user later.
	 *
	 * @return int An hour number.
	 */
	public function manualSchedulingStartHour() {
		return wfConfig::get('schedStartHour');
	}
	
	/**
	 * Returns the currently defined custom schedule. This is only applicable when the scheduling mode is 
	 * SCAN_SCHEDULING_MODE_MANUAL and the manual type is set to MANUAL_SCHEDULING_CUSTOM.
	 * 
	 * @return array The array will be of the format array(0 => array(0 => 0, 1 => 0 ... 23 => 0), ... 6 => array(...))
	 */
	public function customSchedule() {
		$normalizedSchedule = array_fill(0, 7, array_fill(0, 24, 0));
		$storedSchedule = wfConfig::get_ser('scanSched', array());
		if (is_array($storedSchedule) && !empty($storedSchedule) && is_array($storedSchedule[0])) {
			foreach ($storedSchedule as $dayNumber => $day) {
				foreach ($day as $hourNumber => $enabled) {
					$normalizedSchedule[$dayNumber][$hourNumber] = wfUtils::truthyToInt($enabled);
				}
			}
		}
		return $normalizedSchedule;
	}
	
	public function shouldRunQuickScan() {
		if (!$this->isEnabled()) {
			return false;
		}
		
		if (time() - $this->lastQuickScanTime() < 79200) { //Do not run within 22 hours of a completed quick scan
			return false;
		} 
		
		$lastFullScanCompletion = (int) $this->lastScanTime();
		if (time() - $lastFullScanCompletion < 43200) { //Do not run within 12 hours of a completed full scan
			return false;
		}
		
		$nextFullScan = $this->nextScheduledScanTime();
		if ($nextFullScan === false || $nextFullScan - time() < 3600) { //Scans are not running (e.g., custom schedule selected with no times configured) or if scheduled, then avoid running within 1 hour of a pending full scan
			return false;
		}
		
		$now = time();
		$tzOffset = wfUtils::formatLocalTime('Z', $now);
		$currentDayOfWeekUTC = date('w', $now);
		$currentHourUTC = date('G', $now);
		$preferredHourUTC = false;
		
		if ($this->schedulingMode() == wfScanner::SCAN_SCHEDULING_MODE_MANUAL) {
			$manualType = $this->manualSchedulingType();
			$preferredHourUTC = round(($this->manualSchedulingStartHour() * 3600 - $tzOffset) / 3600, 2) % 24; //round() rather than floor() to account for fractional time zones
			switch ($manualType) {
				case self::MANUAL_SCHEDULING_ONCE_DAILY:
				case self::MANUAL_SCHEDULING_EVERY_OTHER_DAY:
				case self::MANUAL_SCHEDULING_WEEKDAYS:
				case self::MANUAL_SCHEDULING_WEEKENDS:
				case self::MANUAL_SCHEDULING_ODD_DAYS_WEEKENDS:
					$preferredHourUTC = ($preferredHourUTC + 12) % 24;
					break;
				case self::MANUAL_SCHEDULING_TWICE_DAILY:
					$preferredHourUTC = ($preferredHourUTC + 6) % 24; //When automatic scans run twice daily, possibly run a quick scan 6 hours offset (will only run if either scheduled one fails for some reason)
					break;
				case self::MANUAL_SCHEDULING_CUSTOM: //Iterate from the current day backwards and base it on the first time found, may or may not actually run depending on the spacing of the custom schedule
					$preferredHourUTC = false;
					$oneWeekSchedule = $this->customSchedule();
					for ($i = 7; $i > 0; $i--) { //Sample sequence for `$currentDayOfWeekUTC == 2` => 2, 1, 0, 6, 5, 4, 3
						$checkingDayNumber = ($currentDayOfWeekUTC + $i) % 7;
						$day = $oneWeekSchedule[$checkingDayNumber];
						$dayHour = array_search(1, $day);
						if ($dayHour !== false) {
							$preferredHourUTC = (round(($dayHour * 3600 - $tzOffset) / 3600, 2) + 12) % 24;
							break;
						}
					}
					break;
			}
			
			if ($preferredHourUTC !== false) { //The preferred hour of a manual scan schedule has been determined, run the quick scan at the desired offset if we're in that hour
				return ($currentHourUTC >= $preferredHourUTC);
			}
		}
		
		$noc1ScanSchedule = wfConfig::get_ser('noc1ScanSchedule', array());
		if (count($noc1ScanSchedule)) {
			$preferredHourUTC = (((int) (($noc1ScanSchedule[0] % 86400) / 3600)) + 12) % 24;
			return ($currentHourUTC >= $preferredHourUTC);
		}
		
		return false; //If we've reached this point, the scan config is in a weird state so just skip the quick scan
	}
	
	/**
	 * Returns an associative array containing the current state each scan stage and its corresponding status.
	 * 
	 * @return array
	 */
	public function stageStatus() {
		$status = $this->_defaultStageStatuses();
		$runningStatus = wfConfig::get_ser('scanStageStatuses', array(), false);
		$status = array_merge($status, $runningStatus);
		
		foreach ($status as $stage => &$value) { //Convert value array into status only
			$value = $value['status'];
			if (!$this->isRunning() && $value == self::STATUS_RUNNING) {
				$value = self::STATUS_PENDING;
			}
		}
		
		return $status;
	}
	
	/**
	 * Returns an array of all scan options for the given stage that are enabled.
	 * 
	 * @param string $stage One of the STAGE_ constants
	 * @return array
	 */
	private function _scanJobsForStage($stage) {
		$always = array();
		$options = array();
		switch ($stage) {
			case self::STAGE_SPAMVERTISING_CHECKS:
				$options = array(
					'spamvertizeCheck',
				);
				break;
			case self::STAGE_SPAM_CHECK:
				$options = array(
					'checkSpamIP',
				);
				break;
			case self::STAGE_BLACKLIST_CHECK:
				$options = array(
					'scansEnabled_checkGSB',
				);
				break;
			case self::STAGE_SERVER_STATE:
				if ($this->scanType() != self::SCAN_TYPE_QUICK) {
					$always = array(
						'checkSkippedFiles',
					);
				}
				$options = array(
					'scansEnabled_checkHowGetIPs',
					'scansEnabled_diskSpace',
					'scansEnabled_wafStatus',
					'scansEnabled_geoipSupport',
				);
				break;
			case self::STAGE_FILE_CHANGES:
				$options = array(
					'scansEnabled_core',
					'scansEnabled_themes',
					'scansEnabled_plugins',
					'scansEnabled_coreUnknown',
				);
				break;
			case self::STAGE_PUBLIC_FILES:
				$options = array(
					'scansEnabled_checkReadableConfig',
					'scansEnabled_suspectedFiles',
				);
				break;
			case self::STAGE_MALWARE_SCAN:
				$options = array(
					'scansEnabled_malware',
					'scansEnabled_fileContents',
				);
				break;
			case self::STAGE_CONTENT_SAFETY:
				$options = array(
					'scansEnabled_posts',
					'scansEnabled_comments',
					'scansEnabled_fileContentsGSB', 
				);
				break;
			case self::STAGE_PASSWORD_STRENGTH:
				$options = array(
					'scansEnabled_passwds',
				);
				break;
			case self::STAGE_VULNERABILITY_SCAN:
				$options = array(
					'scansEnabled_oldVersions',
				);
				break;
			case self::STAGE_OPTIONS_AUDIT:
				$options = array(
					'scansEnabled_suspiciousOptions',
					'scansEnabled_suspiciousAdminUsers',
				);
				break;
		}
		
		$enabledOptions = $this->scanOptions();
		$filteredOptions = array();
		foreach ($options as $o) {
			if (isset($enabledOptions[$o]) && $enabledOptions[$o]) {
				$filteredOptions[] = $o;
			}
		}
		
		return array_merge($filteredOptions, $always);
	}
	
	/**
	 * Returns an associative array containing each scan stage's default state. The keys are the stage identifiers and the value
	 * is an array in the format 
	 * array(
	 * 		'started' => the number of tasks for this stage that have started (initially 0),
	 * 		'finished' => the number of tasks that have started and finished (initially 0),
	 * 		'expected' => the expected number of tasks to run for this stage (based on the scan type and options enabled)
	 * )
	 * 
	 * @return array
	 */
	private function _defaultStageStatuses() {
		$status = array(
			self::STAGE_SPAMVERTISING_CHECKS => array('status' => ($this->isPremiumScan() ? self::STATUS_PENDING : self::STATUS_PREMIUM), 'started' => 0, 'finished' => 0, 'expected' => 0),
			self::STAGE_SPAM_CHECK => array('status' => ($this->isPremiumScan() ? self::STATUS_PENDING : self::STATUS_PREMIUM), 'started' => 0, 'finished' => 0, 'expected' => 0),
			self::STAGE_BLACKLIST_CHECK => array('status' => ($this->isPremiumScan() ? self::STATUS_PENDING : self::STATUS_PREMIUM), 'started' => 0, 'finished' => 0, 'expected' => 0),
			self::STAGE_SERVER_STATE => array('status' => self::STATUS_PENDING, 'started' => 0, 'finished' => 0, 'expected' => 0),
			self::STAGE_FILE_CHANGES => array('status' => self::STATUS_PENDING, 'started' => 0, 'finished' => 0, 'expected' => 0),
			self::STAGE_PUBLIC_FILES => array('status' => self::STATUS_PENDING, 'started' => 0, 'finished' => 0, 'expected' => 0),
			self::STAGE_MALWARE_SCAN => array('status' => self::STATUS_PENDING, 'started' => 0, 'finished' => 0, 'expected' => 0),
			self::STAGE_CONTENT_SAFETY => array('status' => self::STATUS_PENDING, 'started' => 0, 'finished' => 0, 'expected' => 0),
			self::STAGE_PASSWORD_STRENGTH => array('status' => self::STATUS_PENDING, 'started' => 0, 'finished' => 0, 'expected' => 0),
			self::STAGE_VULNERABILITY_SCAN => array('status' => self::STATUS_PENDING, 'started' => 0, 'finished' => 0, 'expected' => 0),
			self::STAGE_OPTIONS_AUDIT => array('status' => self::STATUS_PENDING, 'started' => 0, 'finished' => 0, 'expected' => 0),
		);
		
		foreach ($status as $stage => &$parameters) {
			if ($parameters['status'] == self::STATUS_PREMIUM) {
				continue;
			}
			
			$jobs = $this->_scanJobsForStage($stage);
			if (count($jobs)) {
				$parameters['expected'] = count($jobs);
			}
			else {
				$parameters['status'] = self::STATUS_DISABLED;
			}
		}
		
		return $status;
	}
	
	/**
	 * Resets the state of the scan stage status record.
	 */
	public function resetStages() {
		if ($this->scanType() == self::SCAN_TYPE_QUICK) { //Suppress for quick scans
			return;
		}
		wfConfig::set_ser('scanStageStatuses', $this->_defaultStageStatuses(), false, wfConfig::DONT_AUTOLOAD);
	}
	
	private function _shouldForceUpdate($stageID) {
		if ($stageID == wfScanner::STAGE_MALWARE_SCAN) {
			return true;
		}
		return false;
	}
	
	/**
	 * Increments the stage started counter and marks it as running if not already in that state.
	 * 
	 * @param string $stageID One of the STAGE_ constants
	 */
	public function startStage($stageID) {
		if ($this->scanType() == self::SCAN_TYPE_QUICK) { //Suppress for quick scans
			return;
		}
		
		$runningStatus = wfConfig::get_ser('scanStageStatuses', array(), false);
		if ($runningStatus[$stageID]['status'] != self::STATUS_RUNNING_WARNING) {
			$runningStatus[$stageID]['status'] = self::STATUS_RUNNING;
		}
		
		$runningStatus[$stageID]['started'] += 1;
		wfConfig::set_ser('scanStageStatuses', $runningStatus, false, wfConfig::DONT_AUTOLOAD);
		if (wfCentral::isConnected() && ($this->_shouldForceUpdate($stageID) || (time() - wfConfig::getInt('lastScanStageStatusUpdate', 0)) > self::CENTRAL_STAGE_UPDATE_THRESHOLD)) {
			wfCentral::updateScanStatus($runningStatus);
		}
	}
	
	/**
	 * Increments the stage finished counter and updates the stage status according to whether it's fully finished or encountered a negative status.
	 * 
	 * @param string $stageID One of the STAGE_ constants.
	 * @param string $status One of the wfIssues::STATUS_ constants
	 */
	public function completeStage($stageID, $status) {
		if ($this->scanType() == self::SCAN_TYPE_QUICK) { //Suppress for quick scans
			return;
		}
		
		$runningStatus = wfConfig::get_ser('scanStageStatuses', array(), false);
		
		if ($runningStatus[$stageID]['status'] == self::STATUS_RUNNING && ($status == wfIssues::STATUS_PROBLEM)) {
			$runningStatus[$stageID]['status'] = self::STATUS_RUNNING_WARNING;
		}
		
		$runningStatus[$stageID]['finished'] += 1;
		if ($runningStatus[$stageID]['finished'] >= $runningStatus[$stageID]['expected']) {
			if ($runningStatus[$stageID]['status'] == self::STATUS_RUNNING) {
				$runningStatus[$stageID]['status'] = self::STATUS_COMPLETE_SUCCESS;
			}
			else {
				$runningStatus[$stageID]['status'] = self::STATUS_COMPLETE_WARNING;
			}
		}
		
		wfConfig::set_ser('scanStageStatuses', $runningStatus, false, wfConfig::DONT_AUTOLOAD);
		if (wfCentral::isConnected()) {
			$forceSend = true; //Force sending the last stage completion update even if the timing would otherwise prevent it
			foreach ($runningStatus as $stageID => $stage) {
				if ($runningStatus[$stageID]['finished'] < $runningStatus[$stageID]['expected']) {
					$forceSend = false;
					break;
				}
			}
			
			if ($forceSend || (time() - wfConfig::getInt('lastScanStageStatusUpdate', 0)) > self::CENTRAL_STAGE_UPDATE_THRESHOLD) {
				wfCentral::updateScanStatus($runningStatus);
			}
		}

	}
	
	/**
	 * Returns the selected type of the scan.
	 * 
	 * @return string
	 */
	public function scanType() {
		switch ($this->_scanType) {
			case self::SCAN_TYPE_QUICK://SCAN_TYPE_QUICK is not user-selectable
			case self::SCAN_TYPE_LIMITED:
			case self::SCAN_TYPE_STANDARD:
			case self::SCAN_TYPE_HIGH_SENSITIVITY:
			case self::SCAN_TYPE_CUSTOM:
				return $this->_scanType;
		}
		return self::SCAN_TYPE_STANDARD;
	}
	
	/**
	 * Returns the display name for the selected type of the scan.
	 *
	 * @return string
	 */
	public function scanTypeName() {
		switch ($this->_scanType) {
			case self::SCAN_TYPE_QUICK:
				return __('Quick Scan', 'wordfence');
			case self::SCAN_TYPE_LIMITED:
				return __('Limited Scan', 'wordfence');
			case self::SCAN_TYPE_HIGH_SENSITIVITY:
				return __('High Sensitivity', 'wordfence');
			case self::SCAN_TYPE_CUSTOM:
				return __('Custom Scan', 'wordfence');
			case self::SCAN_TYPE_STANDARD:
			default:
				return __('Standard Scan', 'wordfence');
		}
	}
	
	/**
	 * Returns a normalized percentage (i.e., in the range [0, 1]) to the corresponding display percentage
	 * based on license type.
	 *
	 * @param float $percentage
	 * @return float
	 */
	protected function _normalizedPercentageToDisplay($percentage) {
		if ($this->isPremiumScan()) {
			return round($percentage, 2);
		}
		
		return round($percentage * 0.70, 2);
	}
	
	/**
	 * Returns a normalized percentage (i.e., in the range [0, 1]) for the scan type status indicator.
	 * 
	 * @return float
	 */
	public function scanTypeStatus() {
		$isFree = !wfConfig::get('isPaid');
		$weights = self::_scanOptionWeights();
		$options = $this->scanOptions();
		$score = 0.0;
		$premiumOptions = self::_premiumScanOptions();
		foreach ($options as $key => $value) {
			if ($isFree && array_search($key, $premiumOptions) !== false) {
				continue;
			}
			
			if ($value) {
				$score += $weights[$key];
			}
		}
		return $this->_normalizedPercentageToDisplay($score);
	}

	public function scanTypeStatusList() {
		$isFree = !wfConfig::get('isPaid');
		$weights = self::_scanOptionWeights();
		$options = $this->scanOptions();
		$disabledOptionCount = 0;
		$premiumDisabledOptionCount = 0;
		$percentage = 0.0;
		$premiumPercentage = 0.0;
		$premiumOptions = self::_premiumScanOptions();
		$statusList = array();
		foreach ($options as $key => $value) {
			if ($isFree && array_search($key, $premiumOptions) !== false) {
				$premiumPercentage += $weights[$key];
				$premiumDisabledOptionCount++;
				continue;
			}
			
			if (!$value && $weights[$key] > 0) {
				$percentage += $weights[$key];
				$disabledOptionCount++;
			}
		}
		
		$remainingPercentage = 1 - $this->scanTypeStatus();
		if ($isFree) {
			$remainingPercentage -= 0.30;
			$statusList[] = array(
				'percentage' => 0.30,
				'title'      => __('Enable Premium Scan Signatures.', 'wordfence'),
			);
		}
		
		if ($premiumPercentage > 0) {
			$subtraction = min($this->_normalizedPercentageToDisplay($premiumPercentage), $remainingPercentage);
			$remainingPercentage -= $subtraction;
			$statusList[] = array(
				'percentage' => $subtraction,
				'title'      => __('Enable Premium Reputation Checks.', 'wordfence'),
			);
		}

		if ($percentage > 0) {
			$subtraction = min($this->_normalizedPercentageToDisplay($percentage), $remainingPercentage);
			$statusList[] = array(
				'percentage' => $subtraction,
				'title' => sprintf(_n('Enable %d scan option.', 'Enable %d scan options.', $disabledOptionCount,'wordfence'), number_format_i18n($disabledOptionCount)),
			);
		}

		return $statusList;
	}
	/**
	 * Returns the malware signature feed that is in use.
	 *
	 * @return string
	 */
	public function signatureMode() {
		if ($this->isPremiumScan()) {
			return self::SIGNATURE_MODE_PREMIUM;
		}
		return self::SIGNATURE_MODE_COMMUNITY;
	}
	
	/**
	 * Returns a normalized percentage (i.e., in the range [0, 1]) for the reputation status indicator.
	 * 
	 * @return float
	 */
	public function reputationStatus() {
		$score = 0.0;
		if ($this->isPremiumScan()) {
			$options = $this->scanOptions();
			if ($options['spamvertizeCheck']) { $score += 0.333; }
			if ($options['checkSpamIP']) { $score += 0.333; }
			if ($options['scansEnabled_checkGSB']) { $score += 0.333; }
		}
		return round($score, 2);
	}

	/**
	 * @return array
	 */
	public function reputationStatusList() {
		$statusList = array();
		$options = $this->scanOptions();

		$reputationChecks = array(
			'spamvertizeCheck' => __('Enable scan option to check if this website is being "Spamvertised".', 'wordfence'),
			'checkSpamIP' => __('Enable scan option to check if your website IP is generating spam.', 'wordfence'),
			'scansEnabled_checkGSB' => __('Enable scan option to check if your website is on a domain blocklist.', 'wordfence'),
		);

		foreach ($reputationChecks as $option => $optionLabel) {
			if (!$this->isPremiumScan() || !$options[$option]) {
				$statusList[] = array(
					'percentage' => round(1 / count($reputationChecks), 2),
					'title'      => $optionLabel,
				);
			}
		}
		return $statusList;
	}

	/**
	 * Returns the options for the configured scan type.
	 * 
	 * @return array
	 */
	public function scanOptions() {
		switch ($this->scanType()) {
			case self::SCAN_TYPE_QUICK:
				return self::quickScanTypeOptions();
			case self::SCAN_TYPE_LIMITED:
				return self::limitedScanTypeOptions();
			case self::SCAN_TYPE_STANDARD:
				return self::standardScanTypeOptions();
			case self::SCAN_TYPE_HIGH_SENSITIVITY:
				return self::highSensitivityScanTypeOptions();
			case self::SCAN_TYPE_CUSTOM:
				return self::customScanTypeOptions();
		}
	}
	
	/**
	 * Returns the array of jobs for the scan type.
	 * 
	 * @return array
	 */
	public function jobs() {
		$options = $this->scanOptions();
		$preferredOrder = array(
			'checkSpamvertized' => array('spamvertizeCheck'), 
			'checkSpamIP' => array('checkSpamIP'), 
			'checkGSB' => array('scansEnabled_checkGSB'),
			'checkHowGetIPs' => array('scansEnabled_checkHowGetIPs'),
			'diskSpace' => array('scansEnabled_diskSpace'),
			'wafStatus' => array('scansEnabled_wafStatus'),
			'geoipSupport' => array('scansEnabled_geoipSupport'),
			'checkSkippedFiles' => ($this->scanType() != self::SCAN_TYPE_QUICK), //Always runs except for quick
			'knownFiles' => ($this->scanType() != self::SCAN_TYPE_QUICK), //Always runs except for quick, options are scansEnabled_core, scansEnabled_themes, scansEnabled_plugins, scansEnabled_coreUnknown, scansEnabled_malware
			'checkReadableConfig' => array('scansEnabled_checkReadableConfig'),
			'fileContents' => ($this->scanType() != self::SCAN_TYPE_QUICK), //Always runs except for quick, options are scansEnabled_fileContents and scansEnabled_fileContentsGSB
			'suspectedFiles' => array('scansEnabled_suspectedFiles'),
			'posts' => array('scansEnabled_posts'),
			'comments' => array('scansEnabled_comments'),
			'passwds' => array('scansEnabled_passwds'),
			'oldVersions' => array('scansEnabled_oldVersions'),
			'suspiciousAdminUsers' => array('scansEnabled_suspiciousAdminUsers'),
			'suspiciousOptions' => array('scansEnabled_suspiciousOptions'),
		);
		
		$jobs = array();
		foreach ($preferredOrder as $job => $enabler) {
			if ($enabler === true) {
				$jobs[] = $job;
			}
			else if (is_array($enabler)) {
				foreach ($enabler as $o) {
					if ($options[$o]) {
						$jobs[] = $job;
						break;
					}
				}
			}
		}
		return $jobs;
	}
	
	/**
	 * Returns whether or not the scanner should use its low resource mode.
	 * 
	 * @return bool
	 */
	public function useLowResourceScanning() {
		$options = $this->scanOptions();
		return $options['lowResourceScansEnabled'];
	}
	
	/**
	 * Returns the array of user-defined malware signatures for use by the scanner.
	 * 
	 * @return array
	 */
	public function userScanSignatures() {
		$options = $this->scanOptions();
		$value = $options['scan_include_extra'];
		$signatures = array();
		if (!empty($value)) {
			$regexs = explode("\n", $value);
			$id = 1000001;
			foreach ($regexs as $r) {
				$r = rtrim($r, "\r");
				if (preg_match('/' . $r . '/i', "") !== false) {
					$signatures[] = array($id++, time(), $r, __('User defined scan pattern', 'wordfence'));
				}
			}
		}
		return $signatures;
	}
	
	/**
	 * Returns whether or not the scanner should check files outside of the WordPress installation.
	 * 
	 * @return bool
	 */
	public function scanOutsideWordPress() {
		$options = $this->scanOptions();
		return $options['other_scanOutside'];
	}
	
	/**
	 * Returns the cleaned up array of user-excluded scan paths and patterns.
	 * 
	 * @return array
	 */
	public function userExclusions() {
		$options = $this->scanOptions();
		$value = $options['scan_exclude'];
		return explode("\n", wfUtils::cleanupOneEntryPerLine($value));
	}
	
	/**
	 * Fetches the scan summary items into the internal cache.
	 */
	private function _fetchSummaryItems() {
		if ($this->_summary !== false) { 
			return;
		}
		
		$this->_summary = wfConfig::get_ser('wf_summaryItems', array());
	}
	
	/**
	 * Writes the scan summary cache to permanent storage.
	 */
	private function _saveSummaryItems() {
		if ($this->_summary !== false && $this->_dirty) {
			$this->_summary['lastUpdate'] = time();
			wfConfig::set_ser('wf_summaryItems', $this->_summary);
		}
		$this->_dirty = false;
	}
	
	/**
	 * Saves the scan summary cache if it has been more than two seconds since the last update.
	 * 
	 * @return bool Whether or not it saved.
	 */
	private function _maybeSaveSummaryItems() {
		if ($this->_summary !== false && $this->_summary['lastUpdate'] < (time() - 2)) {
			$this->_saveSummaryItems();
			return true;
		}
		return false;
	}
	
	/**
	 * Populates the scan summary with the default counters.
	 */
	public function resetSummaryItems() {
		global $wpdb;
		
		$this->_summary = array();
		$this->_summary[self::SUMMARY_SCANNED_POSTS] = 0;
		$this->_summary[self::SUMMARY_SCANNED_COMMENTS] = 0;
		$this->_summary[self::SUMMARY_SCANNED_FILES] = 0;
		$this->_summary[self::SUMMARY_SCANNED_PLUGINS] = 0;
		$this->_summary[self::SUMMARY_SCANNED_THEMES] = 0;
		$this->_summary[self::SUMMARY_SCANNED_USERS] = 0;
		$this->_summary[self::SUMMARY_SCANNED_URLS] = 0;
		
		$this->_dirty = true;
		$this->_saveSummaryItems();
	}
	
	/**
	 * Forces a save of the scan summary cache.
	 */
	public function flushSummaryItems() {
		$this->_saveSummaryItems();
	}
	
	/**
	 * Returns the corresponding summary value for $key or $default if not found.
	 * 
	 * @param $key
	 * @param mixed $default The value returned if there is no value for $key.
	 * @return mixed
	 */
	public function getSummaryItem($key, $default = false) {
		$this->_fetchSummaryItems();
		if (isset($this->_summary[$key])) {
			return $this->_summary[$key];
		}
		return $default;
	}
	
	/**
	 * Sets the summary item $key as $value.
	 * 
	 * @param $key
	 * @param $value
	 */
	public function setSummaryItem($key, $value) {
		$this->_fetchSummaryItems();
		$this->_summary[$key] = $value;
		$this->_dirty = true;
		
		if (!$this->_maybeSaveSummaryItems() && !$this->_destructRegistered) {
			register_shutdown_function(array($this, 'flushSummaryItems'));
			$this->_destructRegistered = true;
		}
	}
	
	/**
	 * Atomically increments the summary item under $key by $value.
	 * 
	 * @param $key
	 * @param int $value
	 */
	public function incrementSummaryItem($key, $value = 1) {
		if ($value == 0) { return; }
		$this->_fetchSummaryItems();
		if (isset($this->_summary[$key])) {
			$this->_summary[$key] += $value;
			$this->_dirty = true;
			
			if (!$this->_maybeSaveSummaryItems() && !$this->_destructRegistered) {
				register_shutdown_function(array($this, 'flushSummaryItems'));
				$this->_destructRegistered = true;
			}
		}
	}
	
	/**
	 * Schedules a single scan for the given time. If $originalTime is provided, it will be associated with the cron.
	 * 
	 * @param $futureTime
	 * @param bool|int $originalTime
	 */
	public function scheduleSingleScan($futureTime, $originalTime = false) {
		if (is_main_site()) { // Removed ability to activate on network site in v5.3.12
			if ($originalTime === false) {
				$originalTime = $futureTime;
			}
			wp_schedule_single_event($futureTime, 'wordfence_start_scheduled_scan', array((int) $originalTime));
			
			//Saving our own copy of the schedule because the wp-cron functions all require the args list to act
			$allScansScheduled = wfConfig::get_ser('allScansScheduled', array());
			$allScansScheduled[] = array('timestamp' => $futureTime, 'args' => array((int) $originalTime));
			wfConfig::set_ser('allScansScheduled', $allScansScheduled);
		}
	}
	
	/**
	 * Clears all scheduled scan cron jobs and re-creates them.
	 */
	public function scheduleScans() {
		$this->unscheduleAllScans();
		if (!$this->isEnabled()) {
			return;
		}
		
		if ($this->schedulingMode() == wfScanner::SCAN_SCHEDULING_MODE_MANUAL) {
			//Generate a two-week schedule
			$manualType = $this->manualSchedulingType();
			$preferredHour = $this->manualSchedulingStartHour();
			switch ($manualType) {
				case self::MANUAL_SCHEDULING_ONCE_DAILY:
					$schedule = array_fill(0, 14, array_fill(0, 24, 0));
					foreach ($schedule as $dayNumber => &$day) {
						$day[$preferredHour] = 1;
					}
					break;
				case self::MANUAL_SCHEDULING_TWICE_DAILY:
					$schedule = array_fill(0, 14, array_fill(0, 24, 0));
					foreach ($schedule as $dayNumber => &$day) {
						$day[$preferredHour] = 1;
						$day[($preferredHour + 12) % 24] = 1;
					}
					break;
				case self::MANUAL_SCHEDULING_EVERY_OTHER_DAY:
					$baseDay = floor(time() / 86400);
					$schedule = array_fill(0, 14, array_fill(0, 24, 0));
					foreach ($schedule as $dayNumber => &$day) {
						if (($baseDay + $dayNumber) % 2) {
							$day[$preferredHour] = 1;
						}
					}
					break;
				case self::MANUAL_SCHEDULING_WEEKDAYS:
					$schedule = array_fill(0, 14, array_fill(0, 24, 0));
					foreach ($schedule as $dayNumber => &$day) {
						if ($dayNumber > 0 && $dayNumber < 6) {
							$day[$preferredHour] = 1;
						}
					}
					break;
				case self::MANUAL_SCHEDULING_WEEKENDS:
					$schedule = array_fill(0, 14, array_fill(0, 24, 0));
					foreach ($schedule as $dayNumber => &$day) {
						if ($dayNumber == 0 || $dayNumber == 6) {
							$day[$preferredHour] = 1;
						}
					}
					break;
				case self::MANUAL_SCHEDULING_ODD_DAYS_WEEKENDS:
					$schedule = array_fill(0, 14, array_fill(0, 24, 0));
					foreach ($schedule as $dayNumber => &$day) {
						if ($dayNumber == 0 || $dayNumber == 6 || ($dayNumber % 2)) {
							$day[$preferredHour] = 1;
						}
					}
					break;
				case self::MANUAL_SCHEDULING_CUSTOM:
					$oneWeekSchedule = $this->customSchedule();
					$schedule = array();
					foreach ($oneWeekSchedule as $day) { $schedule[] = $day; }
					foreach ($oneWeekSchedule as $day) { $schedule[] = $day; }
					break;
			}
			
			$now = time();
			$tzOffset = wfUtils::formatLocalTime('Z', $now);
			
			//Apply the time zone shift so the start times align to the server's time zone
			$shiftedSchedule = array_fill(0, 14, array());
			foreach ($schedule as $dayNumber => $day) {
				foreach ($day as $hourNumber => $enabled) {
					if ($enabled) {
						$effectiveHour = round(($hourNumber * 3600 - $tzOffset) / 3600, 2); //round() rather than floor() to account for fractional time zones
						$wrappedHour = ($effectiveHour + 24) % 24;
						if ($effectiveHour < 0) {
							if ($dayNumber > 0) {
								$shiftedSchedule[$dayNumber - 1][$wrappedHour] = 1;
							}
						}
						else if ($effectiveHour > 23) {
							if ($dayNumber < count($schedule) - 1) {
								$shiftedSchedule[$dayNumber + 1][$wrappedHour] = 1;
							}
						}
						else {
							$shiftedSchedule[$dayNumber][$effectiveHour] = 1;
						}
					}
				}
			}
			$schedule = $shiftedSchedule;
			
			//Trim out all but an 8-day period
			$currentDayOfWeekUTC = date('w', $now);
			$currentHourUTC = date('G', $now);
			$periodStart = floor($now / 86400) * 86400 - $currentDayOfWeekUTC * 86400;
			$schedule = array_slice($schedule, $currentDayOfWeekUTC, null, true);
			$schedule = array_slice($schedule, 0, 8, true);
			
			//Schedule them
			foreach ($schedule as $dayNumber => $day) {
				foreach ($day as $hourNumber => $enabled) {
					if ($enabled) {
						if ($dayNumber == $currentDayOfWeekUTC && $currentHourUTC > $hourNumber) { //It's today and we've already passed its hour, skip it
							continue;
						}
						else if ($dayNumber > 6 && ($dayNumber % 7) == $currentDayOfWeekUTC && $currentHourUTC <= $hourNumber) { //It's one week from today but beyond the current hour, skip it this cycle
							continue;
						}

						$scanTime = $periodStart + $dayNumber * 86400 + $hourNumber * 3600 + wfWAFUtils::random_int(0, 3600);
						wordfence::status(4, 'info', sprintf(
							/* translators: 1. Day of week. 2. Hour of day. 3. Localized date. */
							__("Scheduled time for day %s hour %s is: %s", 'wordfence'),
							$dayNumber,
							$hourNumber,
							wfUtils::formatLocalTime('l jS \of F Y h:i:s A P', $scanTime)
						));
						$this->scheduleSingleScan($scanTime);
					}
				}
			}
		}
		else {
			$noc1ScanSchedule = wfConfig::get_ser('noc1ScanSchedule', array());
			foreach ($noc1ScanSchedule as $timestamp) {
				$timestamp = wfUtils::denormalizedTime($timestamp);
				if ($timestamp > time()) {
					$this->scheduleSingleScan($timestamp);
				}
			}
		}
	}
	
	public function unscheduleAllScans() {
		$allScansScheduled = wfConfig::get_ser('allScansScheduled', array());
		foreach ($allScansScheduled as $entry) {
			wp_unschedule_event($entry['timestamp'], 'wordfence_start_scheduled_scan', $entry['args']);
		}
		wp_clear_scheduled_hook('wordfence_start_scheduled_scan');
		wfConfig::set_ser('allScansScheduled', array());
	}
	
	public function nextScheduledScanTime() {
		$nextTime = false;
		$cron = _get_cron_array();
		foreach($cron as $key => $val){
			if(isset($val['wordfence_start_scheduled_scan'])){
				$nextTime = $key;
				break;
			}
		}
		return $nextTime;
	}
	
	public function lastScanTime() {
		return wfConfig::get('scanTime');
	}
	
	public function recordLastScanTime() {
		wfConfig::set('scanTime', microtime(true));
	}
	
	public function lastQuickScanTime() {
		return wfConfig::get('lastQuickScan', 0);
	}
	
	public function recordLastQuickScanTime() {
		wfConfig::set('lastQuickScan', microtime(true));
	}
}models/common/wfTab.php000064400000001515150755146440011110 0ustar00<?php

/**
 * Defines a UI tab.
 *
 * @property string $id
 * @property string $a
 * @property string $tabTitle
 * @property string $pageTitle
 * @property bool $active
 */
class wfTab {
	protected $_id;
	protected $_a;
	protected $_tabTitle;
	protected $_pageTitle;
	protected $_active;
	
	public function __construct($id, $a, $tabTitle, $pageTitle, $active = false) {
		$this->_id = $id;
		$this->_a = $a;
		$this->_tabTitle = $tabTitle;
		$this->_pageTitle = $pageTitle;
		$this->_active = $active;
	}
	
	public function __get($name) {
		switch ($name) {
			case 'id':
				return $this->_id;
			case 'a':
				return $this->_a;
			case 'tabTitle':
				return $this->_tabTitle;
			case 'pageTitle':
				return $this->_pageTitle;
			case 'active':
				return $this->_active;
		}
		
		throw new OutOfBoundsException('Invalid key: ' . $name);
	}
}modules/login-security/wordfence-login-security.php000064400000006141150755146440016646 0ustar00<?php

if (defined('WP_INSTALLING') && WP_INSTALLING) { return; }
if (!defined('ABSPATH')) { exit; }

$wfCoreActive = false;
$plugins = (array) get_option('active_plugins', array()); //Used in lieu of is_plugin_active since that's not loaded until admin_init
if (is_multisite()) {
	$sitePlugins = array_keys((array) get_site_option('active_sitewide_plugins', array()));
	$plugins = array_merge($plugins, $sitePlugins);
}

$wfVersion = ((is_multisite() && function_exists('get_network_option')) ? get_network_option(null, 'wordfence_version', false) : get_option('wordfence_version', false));
if (version_compare($wfVersion, '7.3.1', '>=')) {
	foreach ($plugins as $p) {
		if (preg_match('~^wordfence[^/]*/wordfence\.php$~i', $p)) {
			$wfCoreActive = true;
			break;
		}
	}
}

if ($wfCoreActive && !(isset($wfCoreLoading) && $wfCoreLoading)) {
	return; //Wordfence core will load this, prevent the standalone one from also loading if active
}
else {
	define('WORDFENCE_LS_FROM_CORE', ($wfCoreActive && isset($wfCoreLoading) && $wfCoreLoading));
	
	define('WORDFENCE_LS_VERSION', '1.1.12');
	define('WORDFENCE_LS_BUILD_NUMBER', '1722265817');

	define('WORDFENCE_LS_PLUGIN_BASENAME', plugin_basename(__FILE__));
	
	if (!defined('WORDFENCE_LS_EMAIL_VALIDITY_DURATION_MINUTES')) { define('WORDFENCE_LS_EMAIL_VALIDITY_DURATION_MINUTES', 15); }
	
	if (!WORDFENCE_LS_FROM_CORE) {
		global $wp_plugin_paths;
		foreach ($wp_plugin_paths as $dir => $realdir) {
			if (strpos(__FILE__, $realdir) === 0) {
				define('WORDFENCE_LS_FCPATH', $dir . '/' . basename(__FILE__));
				define('WORDFENCE_LS_PATH', trailingslashit($dir));
				break;
			}
		}
	}
	
	if (!defined('WORDFENCE_LS_FCPATH')) {
		/** @noinspection PhpConstantReassignmentInspection */
		define('WORDFENCE_LS_FCPATH', __FILE__);
		/** @noinspection PhpConstantReassignmentInspection */
		define('WORDFENCE_LS_PATH', trailingslashit(dirname(WORDFENCE_LS_FCPATH)));
	}
	
	if (!function_exists('wordfence_ls_autoload')) {
		function wordfence_ls_autoload($class) {
			$class = str_replace('\\', '/', $class);
			$class = str_replace('\\\\', '/', $class);
			$components = explode('/', $class);
			if (count($components) < 2) {
				return false;
			}
			
			if ($components[0] != 'WordfenceLS') {
				return false;
			}
			
			$path = '';
			for ($i = 1; $i < count($components) - 1; $i++) {
				$path .= '/' . strtolower($components[$i]);
			}
			
			if (preg_match('/^(Controller|Model|Utility)_([a-z0-9]+)$/i', $components[count($components) - 1], $matches)) {
				$path = dirname(__FILE__) . '/classes/' . strtolower($matches[1]) . $path . '/' . strtolower($matches[2]) . '.php';
				if (file_exists($path)) {
					require_once($path);
					return true;
				}
			}
			
			return false;
		}
	}
	
	if (!defined('WORDFENCE_LS_AUTOLOADER_REGISTERED')) {
		define('WORDFENCE_LS_AUTOLOADER_REGISTERED', true);
		spl_autoload_register('wordfence_ls_autoload');
	}
	
	if (!defined('WORDFENCE_LS_VERSIONONLY_MODE') && (!defined('WORDFENCE_USE_LEGACY_2FA') || (defined('WORDFENCE_USE_LEGACY_2FA') && !WORDFENCE_USE_LEGACY_2FA))) { //Used to get version from file
		\WordfenceLS\Controller_WordfenceLS::shared()->init();
	}
}modules/login-security/views/settings/user-stats.php000064400000010146150755146440017026 0ustar00<?php
if (!defined('WORDFENCE_LS_VERSION')) { exit; }
/**
 * @var ?array $counts The counts to display or null to hide user counts.
 */
?>
<div class="wfls-block wfls-always-active wfls-flex-item-full-width">
	<div class="wfls-block-header wfls-block-header-border-bottom">
		<div class="wfls-block-header-content">
			<div class="wfls-block-title">
				<h3><?php esc_html_e('User Summary', 'wordfence'); ?></h3>
			</div>
		</div>
		<div class="wfls-block-header-action wfls-block-header-action-text wfls-nowrap wfls-padding-add-right-responsive">
			<a href="users.php"><?php esc_html_e('Manage Users', 'wordfence'); ?></a>
		</div>
	</div>
	<?php if (is_array($counts)) : ?>
	<div class="wfls-block-content wfls-padding-no-left wfls-padding-no-right">
		<table class="wfls-table wfls-table-striped wfls-table-header-separators wfls-table-expanded wfls-no-bottom">
			<thead>
			<tr>
				<th><?php esc_html_e('Role', 'wordfence'); ?></th>
				<th class="wfls-center"><?php esc_html_e('Total Users', 'wordfence'); ?></th>
				<th class="wfls-center"><?php esc_html_e('2FA Active', 'wordfence'); ?></th>
				<th class="wfls-center"><?php esc_html_e('2FA Inactive', 'wordfence'); ?></th>
			</tr>
			</thead>
			<tbody>
			<?php
			$roles = new WP_Roles();
			$roleNames = $roles->get_names();
			$roleNames['super-admin'] = __('Super Administrator', 'wordfence');
			$roleNames[\WordfenceLS\Controller_Users::TRUNCATED_ROLE_KEY] = __('Custom Capabilities / Multiple Roles', 'wordfence');
			foreach ($counts['avail_roles'] as $roleTag => $count):
				$activeCount = (isset($counts['active_avail_roles'][$roleTag]) ? $counts['active_avail_roles'][$roleTag] : 0);
				$inactiveCount = $count - $activeCount;
				if ($activeCount === 0 && $inactiveCount === 0)
					continue;
				$roleName = $roleNames[$roleTag];
				$requiredAt = \WordfenceLS\Controller_Settings::shared()->get_required_2fa_role_activation_time($roleTag);
				$inactive = $inactiveCount > 0 && $requiredAt !== false;
				$viewUsersBaseUrl = 'admin.php?' . http_build_query(array('page' => 'WFLS', 'role'=> $roleTag));
			?>
				<tr>
					<td><?php echo \WordfenceLS\Text\Model_HTML::esc_html(translate_user_role($roleName)); ?></td>
					<td class="wfls-center"><?php echo number_format($count); ?></td>
					<td class="wfls-center"><?php echo number_format($activeCount); ?></td>
					<td class="wfls-center">
						<?php if ($inactive): ?><a href="<?php echo esc_attr(is_multisite() ? network_admin_url($viewUsersBaseUrl) : admin_url($viewUsersBaseUrl)); ?>"><?php endif ?>
						<?php echo number_format($inactiveCount); ?>
						<?php if ($inactive): ?> (<?php esc_html_e('View users', 'wordfence') ?>)</a><?php endif ?>
					</td>
				</tr>
			<?php endforeach; ?>
			</tbody>
			<tfoot>
			<tr>
				<th><?php esc_html_e('Total', 'wordfence'); ?></th>
				<th class="wfls-center"><?php echo number_format($counts['total_users']); ?></th>
				<th class="wfls-center"><?php echo number_format($counts['active_total_users']); ?></th>
				<th class="wfls-center"><?php echo number_format($counts['total_users'] - $counts['active_total_users']); ?></th>
			</tr>
			<?php if (is_multisite()): ?>
			<tr>
				<td colspan="4" class="wfls-text-small"><?php esc_html_e('* User counts currently only reflect the main site on multisite installations.', 'wordfence'); ?></td>
			</tr>
			<?php endif; ?>
			</tfoot>
		</table>
	</div>
	<?php else: ?>
	<div class="wfls-block-content wfls-padding-add-bottom">
		<p><?php $counts === null ? esc_html_e('User counts are hidden by default on sites with large numbers of users in order to improve performance.', 'wordfence') : esc_html_e('User counts are currently disabled as the most recent attempt to count users failed to complete successfully.', 'wordfence') ?></p>
		<a href="<?php echo esc_attr(add_query_arg('wfls-show-user-counts', 'true') . '#top#settings') ?>" class="wfls-btn wfls-btn-sm wfls-btn-primary"<?php if (\WordfenceLS\Controller_Users::shared()->should_force_user_counts()): ?> onclick="window.location.reload()"<?php endif ?>><?php $counts === null ? esc_html_e('Show User Counts', 'wordfence') : esc_html_e('Try Again', 'wordfence') ?></a>
	</div>
	<?php endif ?>
</div>modules/login-security/views/settings/options.php000064400000032703150755146440016412 0ustar00<?php
if (!defined('WORDFENCE_LS_VERSION')) { exit; }
?>
<div class="wfls-flex-row wfls-flex-row-equal-heights wfls-flex-item-xs-100">
	<div class="wfls-block wfls-always-active wfls-flex-item-full-width">
		<div class="wfls-block-header wfls-block-header-border-bottom">
			<div class="wfls-block-header-content">
				<div class="wfls-block-title">
					<h3><?php esc_html_e('2FA', 'wordfence'); ?></h3>
				</div>
			</div>
		</div>
		<div class="wfls-block-content">
			<ul class="wfls-block-list">
				<li>
					<?php
					$roles = new \WP_Roles();
					$options = array();
					if (is_multisite()) {
						$options[] = array(
							'role' => 'super-admin',
							'name' => 'enabled-roles.super-admin',
							'title' => __('Super Administrator', 'wordfence'),
							'editable' => true,
							'allow_disabling' => false,
							'state' => \WordfenceLS\Controller_Settings::shared()->get_required_2fa_role_activation_time('super-admin') !== false ? 'required' : 'optional'
						);
					}

					foreach ($roles->role_objects as $name => $r) {
						/** @var \WP_Role $r */
						$options[] = array(
							'role' => $name,
							'name' => 'enabled-roles.' . $name,
							'title' => $roles->role_names[$name],
							'editable' => true,
							'allow_disabling' => (!is_multisite() && $name == 'administrator' ? false : true),
							'state' => \WordfenceLS\Controller_Settings::shared()->get_required_2fa_role_activation_time($name) !== false ? 'required' : ($r->has_cap(\WordfenceLS\Controller_Permissions::CAP_ACTIVATE_2FA_SELF) ? 'optional' : 'disabled')
						);
					}
					echo \WordfenceLS\Model_View::create('options/option-roles', array('options' => $options, 'hasWoocommerce' => $hasWoocommerce))->render();
					?>
				</li>
				<li>
					<?php
					echo \WordfenceLS\Model_View::create('options/option-toggled', array(
						'optionName' => \WordfenceLS\Controller_Settings::OPTION_REMEMBER_DEVICE_ENABLED,
						'enabledValue' => '1',
						'disabledValue' => '0',
						'value' => \WordfenceLS\Controller_Settings::shared()->get_bool(\WordfenceLS\Controller_Settings::OPTION_REMEMBER_DEVICE_ENABLED) ? '1': '0',
						'title' => new \WordfenceLS\Text\Model_HTML('<strong>' . esc_html__('Allow remembering device for 30 days', 'wordfence') . '</strong>'),
						'subtitle' => __('If enabled, users with 2FA enabled may choose to be prompted for a code only once every 30 days per device.', 'wordfence'),
					))->render();
					?>
				</li>
				<li>
					<?php
					echo \WordfenceLS\Model_View::create('options/option-switch', array(
						'optionName' => \WordfenceLS\Controller_Settings::OPTION_XMLRPC_ENABLED,
						'value' => \WordfenceLS\Controller_Settings::shared()->get_bool(\WordfenceLS\Controller_Settings::OPTION_XMLRPC_ENABLED) ? '1': '0',
						'title' => new \WordfenceLS\Text\Model_HTML('<strong>' . esc_html__('Require 2FA for XML-RPC call authentication', 'wordfence') . '</strong>'),
						'subtitle' => __('If enabled, XML-RPC calls that require authentication will also require a valid 2FA code to be appended to the password. You must choose the "Skipped" option if you use the WordPress app, the Jetpack plugin, or other services that require XML-RPC.', 'wordfence'),
						'states' => array(
							array('value' => '0', 'label' => __('Skipped', 'wordfence')),
							array('value' => '1', 'label' => __('Required', 'wordfence')),
						),
						'noSpacer' => true,
						'alignment' => 'wfls-right',
					))->render();
					?>
				</li>
				<li>
					<?php
					echo \WordfenceLS\Model_View::create('options/option-toggled', array(
						'optionName' => \WordfenceLS\Controller_Settings::OPTION_ALLOW_XML_RPC,
						'enabledValue' => '0',
						'disabledValue' => '1',
						'value' => \WordfenceLS\Controller_Settings::shared()->get_bool(\WordfenceLS\Controller_Settings::OPTION_ALLOW_XML_RPC) ? '1': '0',
						'title' => new \WordfenceLS\Text\Model_HTML('<strong>' . esc_html__('Disable XML-RPC authentication', 'wordfence') . '</strong>'),
						'subtitle' => __('If disabled, XML-RPC requests that attempt authentication will be rejected, whether the user has 2FA enabled or not.', 'wordfence'),
					))->render();
					?>
				</li>
			</ul>
		</div>
	</div>
</div>

<div class="wfls-flex-row wfls-flex-row-equal-heights wfls-flex-item-xs-100">
	<div class="wfls-block wfls-always-active wfls-flex-item-full-width">
		<div class="wfls-block-header wfls-block-header-border-bottom">
			<div class="wfls-block-header-content">
				<div class="wfls-block-title">
					<h3><?php esc_html_e('WooCommerce & Custom Integrations', 'wordfence'); ?></h3>
				</div>
			</div>
		</div>
		<div class="wfls-block-content">
			<ul class="wfls-block-list">
				<li>
					<?php
					echo \WordfenceLS\Model_View::create('options/option-toggled', array(
						'optionName' => \WordfenceLS\Controller_Settings::OPTION_ENABLE_WOOCOMMERCE_INTEGRATION,
						'enabledValue' => '1',
						'disabledValue' => '0',
						'value' => \WordfenceLS\Controller_Settings::shared()->get_bool(\WordfenceLS\Controller_Settings::OPTION_ENABLE_WOOCOMMERCE_INTEGRATION) ? '1': '0',
						'title' => new \WordfenceLS\Text\Model_HTML('<strong>' . esc_html__('WooCommerce integration', 'wordfence') . '</strong>'),
						'subtitle' => __('When enabled, reCAPTCHA and 2FA prompt support will be added to WooCommerce login and registration forms in addition to the default WordPress forms. Testing WooCommerce forms after enabling this feature is recommended to ensure plugin compatibility.', 'wordfence'),
					))->render();
					?>
				</li>
				<li>
					<?php
					echo \WordfenceLS\Model_View::create('options/option-toggled', array(
						'optionName' => \WordfenceLS\Controller_Settings::OPTION_ENABLE_WOOCOMMERCE_ACCOUNT_INTEGRATION,
						'enabledValue' => '1',
						'disabledValue' => '0',
						'value' => \WordfenceLS\Controller_Settings::shared()->get_bool(\WordfenceLS\Controller_Settings::OPTION_ENABLE_WOOCOMMERCE_ACCOUNT_INTEGRATION) ? '1': '0',
						'title' => new \WordfenceLS\Text\Model_HTML('<strong>' . esc_html__('Show Wordfence 2FA menu on WooCommerce Account page', 'wordfence') . '</strong>'),
						'subtitle' => __('When enabled, a Wordfence 2FA tab will be added to the WooCommerce account menu which will provide access for users to manage 2FA settings outside of the WordPress admin area. Testing the WooCommerce account interface after enabling this feature is recommended to ensure theme compatibility.', 'wordfence'),
						'helpLink' => \WordfenceLS\Controller_Support::supportURL(\WordfenceLS\Controller_Support::ITEM_MODULE_LOGIN_SECURITY_OPTION_WOOCOMMERCE_ACCOUNT_INTEGRATION),
						'disabled' => !\WordfenceLS\Controller_Settings::shared()->get_bool(\WordfenceLS\Controller_Settings::OPTION_ENABLE_WOOCOMMERCE_INTEGRATION),
						'child' => true
					))->render();
					?>
				</li>
				<li>
					<?php
					echo \WordfenceLS\Model_View::create('options/option-toggled', array(
						'optionName' => \WordfenceLS\Controller_Settings::OPTION_ENABLE_SHORTCODE,
						'enabledValue' => '1',
						'disabledValue' => '0',
						'value' => \WordfenceLS\Controller_Settings::shared()->get_bool(\WordfenceLS\Controller_Settings::OPTION_ENABLE_SHORTCODE) ? '1': '0',
						'title' => new \WordfenceLS\Text\Model_HTML('<strong>' . esc_html__('2FA management shortcode', 'wordfence') . '</strong>'),
						'subtitle' => __('When enabled, the "wordfence_2fa_management" shortcode may be used to provide access for users to manage 2FA settings on custom pages.', 'wordfence'),
						'helpLink' => \WordfenceLS\Controller_Support::supportURL(\WordfenceLS\Controller_Support::ITEM_MODULE_LOGIN_SECURITY_OPTION_SHORTCODE)
					))->render();
					?>
				</li>
				<li>
					<?php
					echo \WordfenceLS\Model_View::create('options/option-toggled', array(
						'optionName' => \WordfenceLS\Controller_Settings::OPTION_STACK_UI_COLUMNS,
						'enabledValue' => '1',
						'disabledValue' => '0',
						'value' => \WordfenceLS\Controller_Settings::shared()->should_stack_ui_columns() ? '1': '0',
						'title' => new \WordfenceLS\Text\Model_HTML('<strong>' . esc_html__('Use single-column layout for WooCommerce/shortcode 2FA management interface', 'wordfence') . '</strong>'),
						'subtitle' => __('When enabled, the 2FA management interface embedded through the WooCommerce integration or via a shortcode will use a vertical stacked layout as opposed to horizontal columns. Adjust this setting as appropriate to match your theme. This may be overridden using the "stacked" attribute for individual shortcodes.', 'wordfence'),
						'helpLink' => \WordfenceLS\Controller_Support::supportURL(\WordfenceLS\Controller_Support::ITEM_MODULE_LOGIN_SECURITY_OPTION_STACK_UI_COLUMNS)
					))->render();
					?>
				</li>
			</ul>
		</div>
	</div>
</div>

<div class="wfls-flex-row wfls-flex-row-equal-heights wfls-flex-item-xs-100">
	<div class="wfls-block wfls-always-active wfls-flex-item-full-width">
		<div class="wfls-block-header wfls-block-header-border-bottom">
			<div class="wfls-block-header-content">
				<div class="wfls-block-title">
					<h3><?php esc_html_e('reCAPTCHA', 'wordfence'); ?></h3>
				</div>
			</div>
		</div>
		<div class="wfls-block-content">
			<ul class="wfls-block-list">
				<li>
					<?php
					echo \WordfenceLS\Model_View::create('options/option-captcha', array(
					))->render();
					?>
				</li>
				<li>
					<?php
					echo \WordfenceLS\Model_View::create('options/option-captcha-threshold', array(
					))->render();
					?>
				</li>
				<li>
					<?php
					echo \WordfenceLS\Model_View::create('options/option-toggled', array(
						'optionName' => \WordfenceLS\Controller_Settings::OPTION_CAPTCHA_TEST_MODE,
						'enabledValue' => '1',
						'disabledValue' => '0',
						'value' => \WordfenceLS\Controller_Settings::shared()->get_bool(\WordfenceLS\Controller_Settings::OPTION_CAPTCHA_TEST_MODE) ? '1': '0',
						'title' => new \WordfenceLS\Text\Model_HTML('<strong>' . esc_html__('Run reCAPTCHA in test mode', 'wordfence') . '</strong>'),
						'subtitle' => __('While in test mode, reCAPTCHA will score login and registration requests but not actually block them. The scores will be recorded and can be used to select a human/bot threshold value.', 'wordfence'),
					))->render();
					?>
				</li>
			</ul>
		</div>
	</div>
</div>

<div class="wfls-flex-row wfls-flex-row-equal-heights wfls-flex-item-xs-100">
	<div class="wfls-block wfls-always-active wfls-flex-item-full-width">
		<div class="wfls-block-header wfls-block-header-border-bottom">
			<div class="wfls-block-header-content">
				<div class="wfls-block-title">
					<h3><?php esc_html_e('General', 'wordfence'); ?></h3>
				</div>
			</div>
		</div>
		<div class="wfls-block-content">
			<ul class="wfls-block-list">
				<li>
					<?php
					echo \WordfenceLS\Model_View::create('options/option-textarea', array(
						'textOptionName' => \WordfenceLS\Controller_Settings::OPTION_2FA_WHITELISTED,
						'textValue' => implode("\n", \WordfenceLS\Controller_Settings::shared()->whitelisted_ips()),
						'title' => new \WordfenceLS\Text\Model_HTML('<strong>' . esc_html__('Allowlisted IP addresses that bypass 2FA and reCAPTCHA', 'wordfence') . '</strong>'),
						'alignTitle' => 'top',
						'subtitle' => __('Allowlisted IPs must be placed on separate lines. You can specify ranges using the following formats: 127.0.0.1/24, 127.0.0.[1-100], or 127.0.0.1-127.0.1.100.', 'wordfence'),
						'subtitlePosition' => 'value',
						'noSpacer' => true,
					))->render();
					?>
				</li>
				<?php if (!WORDFENCE_LS_FROM_CORE): ?>
				<li>
					<?php
					echo \WordfenceLS\Model_View::create('options/option-ip-source', array())->render();
					?>
				</li>
				<?php endif; ?>
				<li>
					<?php
						echo \WordfenceLS\Model_View::create('options/option-ntp', array(
						))->render();
					?>
				</li>
				<li>
					<?php
					echo \WordfenceLS\Model_View::create('options/option-toggled', array(
						'optionName' => \WordfenceLS\Controller_Settings::OPTION_ENABLE_LOGIN_HISTORY_COLUMNS,
						'enabledValue' => '1',
						'disabledValue' => '0',
						'value' => \WordfenceLS\Controller_Settings::shared()->are_login_history_columns_enabled() ? '1': '0',
						'title' => new \WordfenceLS\Text\Model_HTML('<strong>' . esc_html__('Show last login column on WP Users page', 'wordfence') . '</strong>'),
						'subtitle' => __('When enabled, the last login timestamp will be displayed for each user on the WP Users page. When used in conjunction with reCAPTCHA, the most recent score will also be displayed for each user.', 'wordfence'),
					))->render();
					?>
				</li>
				<li>
					<?php
					echo \WordfenceLS\Model_View::create('options/option-toggled', array(
						'optionName' => \WordfenceLS\Controller_Settings::OPTION_DELETE_ON_DEACTIVATION,
						'enabledValue' => '1',
						'disabledValue' => '0',
						'value' => \WordfenceLS\Controller_Settings::shared()->get_bool(\WordfenceLS\Controller_Settings::OPTION_DELETE_ON_DEACTIVATION) ? '1': '0',
						'title' => new \WordfenceLS\Text\Model_HTML('<strong>' . esc_html__('Delete Login Security tables and data on deactivation', 'wordfence') . '</strong>'),
						'subtitle' => __('If enabled, all settings and 2FA records will be deleted on deactivation. If later reactivated, all users that previously had 2FA active will need to set it up again.', 'wordfence'),
					))->render();
					?>
				</li>
			</ul>
		</div>
	</div>
</div>

<script type="text/javascript">
	(function($) {
		$('#wfls-option-enable-woocommerce-integration').on('change', function() {
			$('#wfls-option-enable-woocommerce-account-integration').toggleClass('wfls-disabled', !$(this).find('.wfls-option-checkbox').hasClass('wfls-checked'));
		});
	})(jQuery);
</script>modules/login-security/views/common/modal-prompt.php000064400000005317150755146440016763 0ustar00<?php
if (!defined('WORDFENCE_LS_VERSION')) { exit; }
/**
 * Presents a modal prompt.
 *
 * @var string|\WordfenceLS\Text\Model_HTML $title The title for the prompt. Required.
 * @var string|\WordfenceLS\Text\Model_HTML $message The message for the prompt. Required.
 * @var array $primaryButton The parameters for the primary button. The array is in the format array('id' => <element id>, 'label' => <button text>, 'link' => <href value>). Optional.
 * @var array $secondaryButtons The parameters for any secondary buttons. It is an array of arrays in the format array('id' => <element id>, 'label' => <button text>, 'link' => <href value>). The ordering of entries is the right-to-left order the buttons will be displayed. Optional.
 */

$titleHTML = \WordfenceLS\Text\Model_HTML::esc_html($title);
$messageHTML = \WordfenceLS\Text\Model_HTML::esc_html($message);
$embedded = isset($embedded) ? $embedded : false;

if (!isset($secondaryButtons)) {
	$secondaryButtons = array();
}
$secondaryButtons = array_reverse($secondaryButtons);
?>
<div class="wfls-modal">
	<div class="wfls-modal-header">
		<div class="wfls-modal-header-content">
			<div class="wfls-modal-title">
				<strong><?php echo $titleHTML; ?></strong>
			</div>
		</div>
		<div class="wfls-modal-header-action">
			<div class="wfls-padding-add-left-small wfls-modal-header-action-close"><a href="#" onclick="WFLS.panelClose(); return false"><i class="<?php echo (\WordfenceLS\Controller_WordfenceLS::shared()->should_use_core_font_awesome_styles() ? 'wf-fa wf-fa-times-circle' : 'wfls-fa wfls-fa-times-circle'); ?>" aria-hidden="true"></i></a></div>
		</div>
	</div>
	<div class="wfls-modal-content">
		<?php echo $messageHTML; ?>
	</div>
	<div class="wfls-modal-footer">
		<ul class="wfls-flex-horizontal wfls-flex-align-right wfls-full-width">
			<?php foreach ($secondaryButtons as $button): ?>
				<li class="wfls-padding-add-left-small"><a href="<?php echo esc_url($button['link']); ?>" class="wfls-btn <?php echo isset($button['type']) ? $button['type'] : 'wfls-btn-default'; ?> wfls-btn-callout-subtle" id="<?php echo esc_attr($button['id']); ?>"><?php echo isset($button['labelHTML']) ? $button['labelHTML'] : esc_html($button['label']); ?></a></li>
			<?php endforeach; ?>
			<?php if (isset($primaryButton) && is_array($primaryButton)): ?>
				<li class="wfls-padding-add-left-small"><a href="<?php echo esc_url($primaryButton['link']); ?>" class="wfls-btn <?php echo isset($primaryButton['type']) ? $primaryButton['type'] : 'wfls-btn-primary'; ?> wfls-btn-callout-subtle" id="<?php echo esc_attr($primaryButton['id']); ?>"><?php echo isset($primaryButton['labelHTML']) ? $primaryButton['labelHTML'] : esc_html($primaryButton['label']); ?></a></li>
			<?php endif ?>
		</ul>
	</div>
</div>modules/login-security/views/common/reset-grace-period.php000064400000006371150755146440020032 0ustar00<?php
if (!defined('WORDFENCE_LS_VERSION')) { exit; }

if (!isset($defaultGracePeriod))
	$defaultGracePeriod = \WordfenceLS\Controller_Settings::shared()->get_user_2fa_grace_period();
$defaultGracePeriod = max($defaultGracePeriod, 1);
$errorMessage = $gracePeriod === null ? __('Unable to Activate Grace Period', 'wordfence') : __('Unable to Reset Grace Period', 'wordfence');
?>
<div class="wfls-add-top wfls-add-bottom wfls-grace-period-container">
	<div class="wfls-grace-period-input-container">
		<label for="wfls-user-grace-period-override" style="display: none"><?php esc_html_e('Grace Period Override', 'wordfence') ?></label>
		<input type="text" id="wfls-user-grace-period-override" maxlength="2" pattern="[0-9]+" value="<?php echo (int) $defaultGracePeriod ?>">
		<label for="wfls-user-grace-period-override"><?php esc_html_e('days', 'wordfence') ?></label>
	</div>
	<div class="wfls-grace-period-button-container">
		<button class="wfls-btn wfls-btn-default" id="wfls-reset-grace-period">
			<?php echo $gracePeriod === null ? esc_html__('Activate Grace Period', 'wordfence') : esc_html__('Reset Grace Period', 'wordfence') ?>
		</button>

	</div>
</div>
<div>
	<p id="wfls-reset-grace-period-failed" style="display: none"><strong><?php echo esc_html($errorMessage) ?></strong></p>
</div>
<script type="application/javascript">
	(function($) {
		$(function() {
			var failureMessage = $('#wfls-reset-grace-period-failed');
			var overrideInput = $('#wfls-user-grace-period-override');
			var button = $('#wfls-reset-grace-period');
			function reset2faGracePeriod(userId, gracePeriodOverride, success, failure) {
				var ajaxContext = (typeof WFLS === 'undefined' ? GWFLS : WFLS);
				ajaxContext.ajax(
					'wordfence_ls_reset_2fa_grace_period',
					{
						user_id: userId,
						grace_period_override: gracePeriodOverride
					},
					success,
					failure
				);
			}
			function handleError() {
				if (typeof WFLS === 'object') {
					WFLS.panelModal(
						(WFLS.screenSize(500) ? '300px' : '400px'),
						<?php echo json_encode($errorMessage) ?>,
						<?php echo json_encode($gracePeriod === null ? __('An unexpected error occurred while attempting to activate the grace period.', 'wordfence') : __('An unexpected error occurred while attempting to reset the grace period.', 'wordfence')) ?>
					);
				}
				else {
					failureMessage.show();
				}
				button.prop('disabled', false);
				overrideInput.prop('disabled', false);
			}
			button.on('click', function(e) {
				e.preventDefault();
				e.stopPropagation();
				button.prop('disabled', true);
				overrideInput.prop('disabled', true);
				failureMessage.hide();
				reset2faGracePeriod(
					<?php echo json_encode($user->ID, true) ?>,
					overrideInput.val(),
					function(data) {
						if ('error' in data) {
							handleError();
							return;
						}
						if (typeof WFLS === 'undefined')
							window.location.href = '#wfls-user-settings';
						window.location.reload();
					},
					handleError
				);
			});
			overrideInput.on('input', function(e) {
				var value = $(this).val();
				value = value.replace(/[^0-9]/g, '');
				value = parseInt(value);
				if (isNaN(value) || value === 0)
					value = '';
				button.prop('disabled', value < 1);
				$(this).val(value);
			}).trigger('input');
		});
	})(jQuery);
</script>modules/login-security/views/common/revoke-grace-period.php000064400000003574150755146440020205 0ustar00<?php
if (!defined('WORDFENCE_LS_VERSION')) { exit; }

$errorMessage = __('Unable to Revoke Grace Period', 'wordfence');
?>
<div class="wfls-add-top wfls-add-bottom wfls-grace-period-container">
	<div class="wfls-grace-period-button-container">
		<button class="wfls-btn wfls-btn-default" id="wfls-revoke-grace-period">
			<?php esc_html_e('Revoke Grace Period', 'wordfence') ?>
		</button>

	</div>
</div>
<div>
	<p id="wfls-revoke-grace-period-failed" style="display: none"><strong><?php echo esc_html($errorMessage) ?></strong></p>
</div>
<script type="application/javascript">
	(function($) {
		$(function() {
			var failureMessage = $('#wfls-revoke-grace-period-failed');
			var button = $('#wfls-revoke-grace-period');
			function revoke2faGracePeriod(userId, success, failure) {
				var ajaxContext = (typeof WFLS === 'undefined' ? GWFLS : WFLS);
				ajaxContext.ajax(
					'wordfence_ls_revoke_2fa_grace_period',
					{
						user_id: userId
					},
					success,
					failure
				);
			}
			function handleError() {
				if (typeof WFLS === 'object') {
					WFLS.panelModal(
						(WFLS.screenSize(500) ? '300px' : '400px'),
						<?php echo json_encode($errorMessage) ?>,
						<?php echo json_encode(__('An unexpected error occurred while attempting to revoke the grace period.', 'wordfence')) ?>
					);
				}
				else {
					failureMessage.show();
				}
				button.prop('disabled', false);
			}
			button.on('click', function(e) {
				e.preventDefault();
				e.stopPropagation();
				button.prop('disabled', true);
				failureMessage.hide();
				revoke2faGracePeriod(
					<?php echo json_encode($user->ID, true) ?>,
					function(data) {
						if ('error' in data) {
							handleError();
							return;
						}
						if (typeof WFLS === 'undefined')
							window.location.href = '#wfls-user-settings';
						window.location.reload();
					},
					handleError
				);
			});
		});
	})(jQuery);
</script>modules/login-security/views/.htaccess000064400000000543150755146440014141 0ustar00<IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{REQUEST_URI} \.php$
        RewriteRule .* - [F,L,NC]
</IfModule>
<IfModule !mod_rewrite.c>
	<FilesMatch "\.php$">
	<IfModule mod_authz_core.c>
		Require all denied
	</IfModule>
	<IfModule !mod_authz_core.c>
		Order deny,allow
		Deny from all
	</IfModule>
	</FilesMatch>
</IfModule>
modules/login-security/views/email/login-verification.php000064400000002505150755146440017733 0ustar00<?php
if (!defined('WORDFENCE_LS_VERSION')) { exit; }
/**
 * @var string $ip The requesting IP. Required.
 * @var string $siteName The site name. Required.
 * @var string $verificationURL The verification URL. Required.
 * @var bool $canEnable2FA Whether or not the user this is being sent to can enable 2FA. Optional
 */
?>
<strong><?php echo wp_kses(sprintf(__('Please verify a login attempt for your account on: %s', 'wordfence'), $siteName), array('strong'=>array())); ?></strong>
<br><br>
<?php echo '<strong>' . esc_html__('Request Time:', 'wordfence') . '</strong> ' . esc_html(\WordfenceLS\Controller_Time::format_local_time('F j, Y h:i:s A')); ?><br>
<?php echo '<strong>' . esc_html__('IP:', 'wordfence') . '</strong> ' . esc_html($ip); ?>
<br><br>
<?php echo wp_kses(__('The request was flagged as suspicious, and we need verification that you attempted to log in to allow it to proceed. This verification link <b>will be valid for 15 minutes</b> from the time it was sent. If you did not attempt this login, please change your password immediately.', 'wordfence'), array('b'=>array())); ?>
<br><br>
<?php echo wp_kses(sprintf(__('If you were attempting to log in to this site, <a href="%s"><strong>Verify and Log In</strong></a>', 'wordfence'), esc_url($verificationURL)), array('a' => array('href' => array()), 'strong' => array())); ?>modules/login-security/views/onboarding/standalone-header.php000064400000003325150755146440020555 0ustar00<?php
if (!defined('WORDFENCE_LS_VERSION')) { exit; }
/**
 * Presents the fresh install plugin header for standalone installations.
 */
?>
<div id="wfls-onboarding-standalone-modal">
	<div id="wfls-onboarding-standalone-modal-header">
		<div id="wfls-onboarding-standalone-modal-header-title"><?php esc_html_e('Wordfence Login Security Installed', 'wordfence'); ?></div>
		<div id="wfls-onboarding-standalone-modal-header-accessory"><a href="#" id="wfls-onboarding-standalone-modal-dismiss">&times;</a></div>
	</div>
	<div id="wfls-onboarding-standalone-modal-content">
		<p><?php esc_html_e('You have just installed the Wordfence Login Security plugin. It contains a subset of the functionality found in the full Wordfence plugin: Two-factor Authentication, XML-RPC Protection and Login Page CAPTCHA.', 'wordfence'); ?></p>
		<p><?php printf(__('If you\'re looking for a more comprehensive solution, the <a href="%s" target="_blank" rel="noopener noreferrer">full Wordfence plugin</a> includes all of the features in this plugin as well as a full-featured WordPress firewall, a security scanner, live traffic, and more. The standard installation includes a robust set of free features that can be upgraded via a Premium license key.', 'wordfence'), 'https://wordpress.org/plugins/wordfence/'); ?></p>
	</div>
</div>
<script type="application/javascript">
	(function($) {
		$(function() {
			$('#wfls-onboarding-standalone-modal-dismiss').on('click', function(e) {
				e.preventDefault();
				e.stopPropagation();

				$('#wfls-onboarding-standalone-modal').slideUp(400, function() {
					$('#wfls-onboarding-standalone-modal').remove();
				});
				
				WFLS.setOptions({'dismissed-fresh-install-modal': true});
			});
		});
	})(jQuery);
</script>
modules/login-security/views/user/grace-period-toggle.php000064400000001020150755146440017641 0ustar00<?php
if (!defined('WORDFENCE_LS_VERSION')) { exit; }

?>
<table id="wfls-grace-period-toggle-container" style="display: none">
	<tr>
		<th scope="row"><label for="wfls-grace-period-toggle"><?php esc_html_e('2FA Grace Period', 'wordfence') ?></label></th>
		<td>
			<input id="wfls-grace-period-toggle" name="wfls-grace-period-toggle" type="checkbox">
			<label for="wfls-grace-period-toggle"><?php esc_html_e('Allow a grace period for this user prior to requiring Wordfence 2FA', 'wordfence') ?></label>
		</td>
	</tr>
</table>modules/login-security/views/manage/regenerate.php000064400000013710150755146440016425 0ustar00<?php
if (!defined('WORDFENCE_LS_VERSION')) { exit; }
/**
 * @var \WP_User $user The user being edited. Required.
 * @var int $remaining The number of unused recovery codes. Required.
 */
?>
<div class="wfls-block wfls-always-active wfls-flex-item-full-width">
	<div class="wfls-block-header wfls-block-header-border-bottom">
		<div class="wfls-block-header-content">
			<div class="wfls-block-title">
				<strong><?php esc_html_e('Recovery Codes', 'wordfence'); ?></strong>
			</div>
		</div>
	</div>
	<div class="wfls-block-content wfls-padding-add-bottom">
		<p id="wfls-recovery-code-count"><?php echo esc_html(sprintf($remaining == 1 ? __('%d unused recovery code remains. You may generate a new set by clicking below.', 'wordfence') : __('%d unused recovery codes remain. You may generate a new set by clicking below.', 'wordfence'), $remaining)); ?></p>
		<p class="wfls-center wfls-add-top"><a href="#" class="wfls-btn wfls-btn-default" id="wfls-recovery" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Generate New Codes', 'wordfence'); ?></a></p>
	</div>
</div>
<script type="text/x-jquery-template" id="wfls-tmpl-recovery-prompt">
	<?php
	echo \WordfenceLS\Model_View::create('common/modal-prompt', array(
		'title' => __('Generate New Recovery Codes', 'wordfence'),
		'message' => __('Are you sure you want to generate new recovery codes? Any remaining unused codes will be disabled.', 'wordfence'),
		'primaryButton' => array('id' => 'wfls-recovery-prompt-cancel', 'label' => __('Cancel', 'wordfence'), 'link' => '#'),
		'secondaryButtons' => array(array('id' => 'wfls-recovery-prompt-confirm', 'label' => __('Generate', 'wordfence'), 'link' => '#')),
	))->render();
	?>
</script>
<script type="application/javascript">
	(function($) {
		$(function() {
			$('#wfls-recovery').on('click', function(e) {
				e.preventDefault();
				e.stopPropagation();

				var prompt = $('#wfls-tmpl-recovery-prompt').tmpl({});
				var promptHTML = $("<div />").append(prompt).html();
				WFLS.panelHTML((WFLS.screenSize(500) ? '300px' : '400px'), promptHTML, {overlayClose: false, closeButton: false, className: 'wfls-modal', onComplete: function() {
					$('#wfls-recovery-prompt-cancel').on('click', function(e) {
						e.preventDefault();
						e.stopPropagation();

						WFLS.panelClose();
					});

					$('#wfls-recovery-prompt-confirm').on('click', function(e) {
						e.preventDefault();
						e.stopPropagation();

						var payload = {
							user: <?php echo (int) $user->ID; ?>,
						};

						WFLS.ajax(
							'wordfence_ls_regenerate',
							payload,
							function(response) {
								if (response.error) {
									WFLS.panelModal((WFLS.screenSize(500) ? '300px' : '400px'), '<?php echo esc_js(__('Error Generating New Codes', 'wordfence')); ?>', response.error);
								}
								else if (response.recovery) {
									$('#wfls-recovery-code-count').text(response.text);
									
									var message = '<p><?php echo \WordfenceLS\Text\Model_JavaScript::esc_js(sprintf(__('Use one of these %d codes to log in if you lose access to your authenticator device. Codes are %d characters long plus optional spaces. Each one may be used only once.', 'wordfence'), \WordfenceLS\Controller_Users::RECOVERY_CODE_COUNT, \WordfenceLS\Controller_Users::RECOVERY_CODE_SIZE * 2)); ?></p><ul class="wfls-recovery-codes">';

									var recoveryCodeFileContents = '<?php echo \WordfenceLS\Text\Model_JavaScript::esc_js(sprintf(__('Two-Factor Authentication Recovery Codes - %s (%s)', 'wordfence'), preg_replace('~^https?://~i', '', home_url()), $user->user_login)); ?>' + "\r\n";
									recoveryCodeFileContents = recoveryCodeFileContents + "\r\n" + '<?php echo \WordfenceLS\Text\Model_JavaScript::esc_js(sprintf(__('Each line of %d letters and numbers is a single recovery code, with optional spaces for readability. To use a recovery code, after entering your username and password, enter the code like "1234 5678 90AB CDEF" at the 2FA prompt. If your site has a custom login prompt and does not show a 2FA prompt, you can use the single-step method by entering your password and the code together in the Password field, like "mypassword1234 5678 90AB CDEF". Your recovery codes are:', 'wordfence'), \WordfenceLS\Controller_Users::RECOVERY_CODE_SIZE * 2)); ?>' + "\r\n\r\n";
									for (var i = 0; i < response.recovery.length; i++) {
										message = message + '<li>' + response.recovery[i] + '</li>';
										recoveryCodeFileContents = recoveryCodeFileContents + response.recovery[i] + "\r\n";
									}

									message = message + "</ul>";

									message = message + "<p class=\"wfls-center\"><a href=\"#\" class=\"wfls-btn wfls-btn-default\" id=\"wfls-recovery-new-download\" target=\"_blank\" rel=\"noopener noreferrer\"><i class=\"dashicons dashicons-download\"></i> <?php echo \WordfenceLS\Text\Model_JavaScript::esc_js(__('Download', 'wordfence')); ?></a></p>";


									WFLS.panelModalHTML((WFLS.screenSize(500) ? '300px' : '400px'), "<?php echo \WordfenceLS\Text\Model_JavaScript::esc_js(__('New Recovery Codes', 'wordfence')); ?>", message, {onComplete: function() {
										$('#wfls-recovery-new-download').on('click', function(e) {
											e.preventDefault();
											e.stopPropagation();
											saveAs(new Blob([recoveryCodeFileContents], {type: "text/plain;charset=" + document.characterSet}), '<?php echo \WordfenceLS\Text\Model_JavaScript::esc_js(preg_replace('~^https?://~i', '', home_url()) . '_' . $user->user_login . '_recoverycodes.txt'); ?>');
										});
									}});
								}

								WFLS.panelClose(); //The prompt
							},
							function(error) {
								WFLS.panelModal((WFLS.screenSize(500) ? '300px' : '400px'), '<?php echo \WordfenceLS\Text\Model_JavaScript::esc_js(__('Error Generating New Codes', 'wordfence')); ?>', '<?php echo \WordfenceLS\Text\Model_JavaScript::esc_js(__('An error was encountered while trying to generate new recovery codes. Please try again.', 'wordfence')); ?>');
								WFLS.panelClose(); //The prompt
							}
						);
					});
				}});
			});
		});
	})(jQuery);
</script> modules/login-security/views/manage/code.php000064400000003210150755146440015210 0ustar00<?php
if (!defined('WORDFENCE_LS_VERSION')) { exit; }
/**
 * @var \WordfenceLS\Model_2faInitializationData $initializationData The initialization data for setting up 2FA for a specific user. Required.
 */
?>
<div class="wfls-block wfls-always-active wfls-flex-item-full-width">
	<div class="wfls-block-header wfls-block-header-border-bottom">
		<div class="wfls-block-header-content">
			<div class="wfls-block-title">
				<strong><?php esc_html_e('1. Scan Code or Enter Key', 'wordfence'); ?></strong>
			</div>
		</div>
	</div>
	<div class="wfls-block-content wfls-padding-add-bottom">
		<p><?php esc_html_e('Scan the code below with your authenticator app to add this account. Some authenticator apps also allow you to type in the text version instead.', 'wordfence') ?></p>
		<div id="wfls-qr-code"></div>
		<p class="wfls-center wfls-no-bottom"><input id="wfls-qr-code-text" class="wfls-center" type="text" value="<?php echo esc_attr($initializationData->get_base32_secret()); ?>" onclick="this.select();" size="32" readonly></p>
	</div>
</div>
<script type="application/javascript">
	(function($) {
		$(function() {
			var narrowPreviously = null;
			function renderQrCode() {
				var narrow = WFLS.screenSize(500);
				if (narrow !== narrowPreviously) {
					$('#wfls-qr-code').empty().qrcode({text: '<?php echo \WordfenceLS\Text\Model_JavaScript::esc_js($initializationData->get_otp_url()); ?>', width: (narrow ? 175 : 256), height: (narrow ? 175 : 256)});
					$('#wfls-qr-code-text').css('font-family', narrow ? '' : 'monospace');
				}
				narrowPreviously = narrow;
			}
			$(window).on('resize', renderQrCode);
			renderQrCode();
		});
	})(jQuery);
</script> modules/login-security/views/manage/activate.php000064400000017266150755146440016116 0ustar00<?php
if (!defined('WORDFENCE_LS_VERSION')) { exit; }
/**
 * @var \WordfenceLS\Model_2faInitializationData $initializationData The initialization data for setting up 2FA for a specific user. Required.
 */
$user = $initializationData->get_user();
$recovery = $initializationData->get_recovery_codes();
?>
<div class="wfls-block wfls-always-active wfls-flex-item-full-width">
	<div class="wfls-block-header wfls-block-header-border-bottom">
		<div class="wfls-block-header-content">
			<div class="wfls-block-title">
				<strong><?php esc_html_e('2. Enter Code from Authenticator App', 'wordfence'); ?></strong>
			</div>
		</div>
	</div>
	<div class="wfls-block-content wfls-padding-add-bottom">
		<p><?php esc_html_e('Download Recovery Codes', 'wordfence'); ?> <em class="wfls-text-small"><?php esc_html_e('Optional', 'wordfence'); ?></em></p>
		<p><?php echo esc_html(sprintf(__('Use one of these %d codes to log in if you lose access to your authenticator device. Codes are %d characters long plus optional spaces. Each one may be used only once.', 'wordfence'), count($recovery), \WordfenceLS\Model_Crypto::strlen($recovery[0]) * 2)); ?></p>
		<ul class="wfls-recovery-codes">
			<?php
			$recoveryCodeFileContents = sprintf(__('Two-Factor Authentication Recovery Codes - %s (%s)', 'wordfence'), home_url(), $user->user_login) . "\r\n";
			$recoveryCodeFileContents .= "\r\n" . sprintf(__('Each line of %d letters and numbers is a single recovery code, with optional spaces for readability. To use a recovery code, after entering your username and password, enter the code like "1234 5678 90AB CDEF" at the 2FA prompt. If your site has a custom login prompt and does not show a 2FA prompt, you can use the single-step method by entering your password and the code together in the Password field, like "mypassword1234 5678 90AB CDEF". Your recovery codes are:', 'wordfence'), \WordfenceLS\Model_Crypto::strlen($recovery[0]) * 2) . "\r\n\r\n";
			foreach ($recovery as $c) {
				$hex = bin2hex($c);
				$blocks = str_split($hex, 4);
				echo '<li>' . implode(' ', $blocks) . '</li>';
				$recoveryCodeFileContents .= implode(' ', $blocks) . "\r\n";
			}
			?>
		</ul>
		<p class="wfls-center"><a href="#" class="wfls-btn wfls-btn-default" id="wfls-recovery-download" target="_blank" rel="noopener noreferrer"><i class="dashicons dashicons-download"></i> <?php esc_html_e('Download', 'wordfence'); ?></a></p>
		
		<hr class="wfls-half">
		
		<p><?php esc_html_e('Enter the code from your authenticator app below to verify and activate two-factor authentication for this account.', 'wordfence'); ?></p>
		<p><input type="text" id="wfls-activate-field" value="" size="6" maxlength="6" placeholder="123456" autocomplete="off"></p>
	</div>
	<div class="wfls-block-footer">
		<div class="wfls-block-footer-content">
			<div class="wfls-block-title" id="wfls-activation-help-link-container">
				<a href="<?php echo \WordfenceLS\Controller_Support::esc_supportURL(\WordfenceLS\Controller_Support::ITEM_MODULE_LOGIN_SECURITY_2FA); ?>" target="_blank" rel="noopener noreferrer"><?php esc_html_e('For help on setting up an app, visit our help article.', 'wordfence'); ?></a>
			</div>
			<div class="wfls-block-footer-action"><a href="#" id="wfls-activate" class="wfls-btn wfls-btn-default wfls-disabled"><?php esc_html_e('Activate', 'wordfence'); ?></a></div>
		</div>
	</div>
</div>
<script type="application/javascript">
	(function($) {
		$(function() {
			$('#wfls-activate-field').on('keyup', function(e) {
				$('#wfls-activate').toggleClass('wfls-disabled', $('#wfls-activate-field').val().length != 6);
				
				if (e.keyCode == 13) {
					$('#wfls-activate').trigger('click');
				}
			});
			
			$('#wfls-recovery-download').on('click', function(e) {
				e.preventDefault();
				e.stopPropagation();
				saveAs(new Blob(["<?php echo str_replace("\n", "\\n", str_replace("\r", "\\r", addslashes($recoveryCodeFileContents))); ?>"], {type: "text/plain;charset=" + document.characterSet}), '<?php echo \WordfenceLS\Text\Model_JavaScript::esc_js(preg_replace('~^https?://~i', '', home_url())) . '_' . \WordfenceLS\Text\Model_JavaScript::esc_js($user->user_login) . '_recoverycodes.txt'; ?>');
				WFLS.savedRecoveryCodes = true;
			});
			
			$('#wfls-activate').on('click', function(e) {
				e.preventDefault();
				e.stopPropagation();
				
				if (WFLS.userIsActivating) { //Likely a double-click
					return;
				}
				
				WFLS.userIsActivating = true;
				
				var payload = {
					secret: '<?php echo bin2hex($initializationData->get_raw_secret()); ?>',
					recovery: ['<?php echo implode('\', \'', array_map(function($c) { return bin2hex($c); }, $recovery)); ?>'],
					code: $('#wfls-activate-field').val(),
					user: <?php echo $user->ID; ?>,
				};

				WFLS.ajax(
					'wordfence_ls_activate', 
					payload,
					function(response) {
						if (response.error) {
							WFLS.userIsActivating = false;
							WFLS.panelModal((WFLS.screenSize(500) ? '300px' : '400px'), '<?php echo \WordfenceLS\Text\Model_JavaScript::esc_js(__('Error Activating 2FA', 'wordfence')); ?>', response.error, {includeDefaultButtons: true});
						}
						else {
							$('#wfls-activation-controls').crossfade($('#wfls-deactivation-controls'));
							$('#wfls-recovery-code-count').text(response.text);
							$('#wfls-activate-field').val('');

							$('.wfls-notice[data-notice-type="wfls-will-be-required"]').find('.wfls-dismiss-link').trigger('click');
							
							if (!WFLS.savedRecoveryCodes) {
								var prompt = $('#wfls-tmpl-recovery-skipped-prompt').tmpl({});
								var promptHTML = $("<div />").append(prompt).html();
								WFLS.panelHTML((WFLS.screenSize(500) ? '300px' : '400px'), promptHTML, { fixed: true, overlayClose: false, closeButton: false, className: 'wfls-modal', onComplete: function() {
									$('#wfls-recovery-skipped-download').on('click', function(e) {
										e.preventDefault();
										e.stopPropagation();
										saveAs(new Blob(["<?php echo str_replace("\n", "\\n", str_replace("\r", "\\r", addslashes($recoveryCodeFileContents))); ?>"], {type: "text/plain;charset=" + document.characterSet}), '<?php echo \WordfenceLS\Text\Model_JavaScript::esc_js(preg_replace('~^https?://~i', '', home_url())) . '_' . \WordfenceLS\Text\Model_JavaScript::esc_js($user->user_login) . '_recoverycodes.txt'; ?>');
										WFLS.panelClose();
									});
									$('#wfls-recovery-skipped-skip').on('click', function(e) {
										e.preventDefault();
										e.stopPropagation();
										WFLS.panelClose();
									});
								}});
							}
							WFLS.savedRecoveryCodes = false;
							WFLS.userIsActivating = false;
						}
					},
					function(error) {
						WFLS.panelModal((WFLS.screenSize(500) ? '300px' : '400px'), '<?php echo \WordfenceLS\Text\Model_JavaScript::esc_js(__('Error Activating 2FA', 'wordfence')); ?>', '<?php echo \WordfenceLS\Text\Model_JavaScript::esc_js(__('An error was encountered while trying to activate two-factor authentication. Please try again.', 'wordfence')); ?>', {includeDefaultButtons: true});
						WFLS.userIsActivating = false;
					}
				);
			});
		});
	})(jQuery);
</script>
<script type="text/x-jquery-template" id="wfls-tmpl-recovery-skipped-prompt">
	<?php
	echo \WordfenceLS\Model_View::create('common/modal-prompt', array(
		'title' => __('Download Recovery Codes', 'wordfence'),
		'message' => __('Reminder: If you lose access to your authenticator device, you can use recovery codes to log in. If you have not saved a copy of your recovery codes, we recommend downloading them now.', 'wordfence'),
		'primaryButton' => array('id' => 'wfls-recovery-skipped-download', 'label' => __('Download', 'wordfence'), 'link' => '#'),
		'secondaryButtons' => array(array('id' => 'wfls-recovery-skipped-skip', 'label' => __('Skip', 'wordfence'), 'link' => '#')),
	))->render();
	?>
</script>modules/login-security/views/manage/deactivate.php000064400000007065150755146440016423 0ustar00<?php
if (!defined('WORDFENCE_LS_VERSION')) { exit; }
/**
 * @var \WP_User $user The user being edited. Required.
 */

$ownAccount = false;
$ownUser = wp_get_current_user();
if ($ownUser->ID == $user->ID) {
	$ownAccount = true;
}
?>
<div class="wfls-block wfls-always-active wfls-flex-item-full-width">
	<div class="wfls-block-header wfls-block-header-border-bottom">
		<div class="wfls-block-header-content">
			<div class="wfls-block-title">
				<strong><?php esc_html_e('Wordfence 2FA Active', 'wordfence'); ?></strong>
			</div>
		</div>
	</div>
	<div class="wfls-block-content wfls-padding-add-bottom">
		<p><?php if ($ownAccount) { esc_html_e('Wordfence two-factor authentication is currently active on your account. You may deactivate it by clicking the button below.', 'wordfence'); } else { echo wp_kses(sprintf(__('Wordfence two-factor authentication is currently active on the account <strong>%s</strong>. You may deactivate it by clicking the button below.', 'wordfence'), esc_html($user->user_login)), array('strong'=>array())); } ?></p>
		<p class="wfls-center wfls-add-top"><a href="#" class="wfls-btn wfls-btn-default" id="wfls-deactivate" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Deactivate', 'wordfence'); ?></a></p>
	</div>
</div>
<script type="text/x-jquery-template" id="wfls-tmpl-deactivate-prompt">
	<?php
	echo \WordfenceLS\Model_View::create('common/modal-prompt', array(
		'title' => __('Deactivate 2FA', 'wordfence'),
		'message' => __('Are you sure you want to deactivate two-factor authentication?', 'wordfence'),
		'primaryButton' => array('id' => 'wfls-deactivate-prompt-cancel', 'label' => __('Cancel', 'wordfence'), 'link' => '#'),
		'secondaryButtons' => array(array('id' => 'wfls-deactivate-prompt-confirm', 'label' => __('Deactivate', 'wordfence'), 'link' => '#')),
	))->render();
	?>
</script>
<script type="application/javascript">
	(function($) {
		$(function() {
			$('#wfls-deactivate').on('click', function(e) {
				e.preventDefault();
				e.stopPropagation();

				var prompt = $('#wfls-tmpl-deactivate-prompt').tmpl({});
				var promptHTML = $("<div />").append(prompt).html();
				WFLS.panelHTML((WFLS.screenSize(500) ? '300px' : '400px'), promptHTML, {overlayClose: false, closeButton: false, className: 'wfls-modal', onComplete: function() {
					$('#wfls-deactivate-prompt-cancel').on('click', function(e) {
						e.preventDefault();
						e.stopPropagation();

						WFLS.panelClose();
					});

					$('#wfls-deactivate-prompt-confirm').on('click', function(e) {
						e.preventDefault();
						e.stopPropagation();

						var payload = {
							user: <?php echo (int) $user->ID; ?>,
						};

						WFLS.ajax(
							'wordfence_ls_deactivate',
							payload,
							function(response) {
								if (response.error) {
									WFLS.panelModal((WFLS.screenSize(500) ? '300px' : '400px'), '<?php echo \WordfenceLS\Text\Model_JavaScript::esc_js(__('Error Deactivating 2FA', 'wordfence')); ?>', response.error);
								}
								else {
									$('#wfls-deactivation-controls').crossfade($('#wfls-activation-controls'));
								}

								WFLS.panelClose(); //The prompt
							},
							function(error) {
								WFLS.panelModal((WFLS.screenSize(500) ? '300px' : '400px'), '<?php echo \WordfenceLS\Text\Model_JavaScript::esc_js(__('Error Deactivating 2FA', 'wordfence')); ?>', '<?php echo \WordfenceLS\Text\Model_JavaScript::esc_js(__('An error was encountered while trying to deactivate two-factor authentication. Please try again.', 'wordfence')); ?>');
								WFLS.panelClose(); //The prompt
							}
						);
					});
				}});
			});
		});
	})(jQuery);
</script> modules/login-security/views/manage/grace-period.php000064400000004267150755146440016654 0ustar00<?php
if (!defined('WORDFENCE_LS_VERSION')) { exit; }
/**
 * @var \WP_User $user The user being edited. Required.
 * @var bool $inGracePeriod
 * @var bool $lockedOut
 * @var int $requiredAt
 */

$ownAccount = false;
$ownUser = wp_get_current_user();
if ($ownUser->ID == $user->ID) {
	$ownAccount = true;
}
$defaultGracePeriod = \WordfenceLS\Controller_Settings::shared()->get_user_2fa_grace_period();
$hasGracePeriod =  $defaultGracePeriod > 0;
?>
<div class="wfls-block wfls-always-active wfls-flex-item-full-width">
	<div class="wfls-block-header wfls-block-header-border-bottom">
		<div class="wfls-block-header-content">
			<div class="wfls-block-title">
				<strong><?php echo $gracePeriod ? esc_html__('Grace Period', 'wordfence') : esc_html__('Locked Out', 'wordfence') ?></strong>
			</div>
		</div>
	</div>
	<div class="wfls-block-content">
		<?php if ($gracePeriod): ?>
			<p><?php
				$requiredDateFormatted = \WordfenceLS\Controller_Time::format_local_time('F j, Y g:i A', $requiredAt);
				echo $ownAccount ?
					sprintf(wp_kses(__('Two-factor authentication will be required for your account beginning <strong>%s</strong>', 'wordfence'), array('strong'=>array())), $requiredDateFormatted) :
					sprintf(wp_kses(__('Two-factor authentication will be required for user <strong>%s</strong> beginning <strong>%s</strong>.', 'wordfence'), array('strong'=>array())), esc_html($user->user_login), $requiredDateFormatted)
			?></p>
			<?php if (\WordfenceLS\Controller_Users::shared()->has_revokable_grace_period($user)): ?>
			<?php echo \WordfenceLS\Model_View::create(
				'common/revoke-grace-period',
				array(
					'user' => $user
				))->render() ?>
			<?php endif ?>
		<?php else: ?>
			<p>
				<?php echo $ownAccount ?
				esc_html__('Two-factor authentication is required for your account, but has not been configured.', 'wordfence') :
				esc_html__('Two-factor authentication is required for this account, but has not been configured.', 'wordfence') ?>
			</p>
			<?php echo \WordfenceLS\Model_View::create(
				'common/reset-grace-period',
				array(
					'user' => $user,
					'gracePeriod' => $gracePeriod,
					'defaultGracePeriod' => $defaultGracePeriod
				))->render() ?>
		<?php endif ?>
	</div>
</div>modules/login-security/views/options/option-toggled-select.php000064400000007374150755146440020770 0ustar00<?php
if (!defined('WORDFENCE_LS_VERSION')) { exit; }
/**
 * Presents an option with a boolean on/off toggle checkbox and popup menu for detailed value selection.
 * 
 * Expects $toggleOptionName, $enabledToggleValue, $disabledToggleValue, $toggleValue, $selectOptionName, $selectOptions, $selectValue, and $title to be defined. $helpLink may also be defined.
 * 
 * @var string $toggleOptionName The option name for the toggle portion.
 * @var string $enabledToggleValue The value to save in $toggleOption if the toggle is enabled.
 * @var string $disabledToggleValue The value to save in $toggleOption if the toggle is disabled.
 * @var string $toggleValue The current value of $toggleOptionName.
 * @var string $selectOptionName The option name for the select portion.
 * @var array $selectOptions An array of the possible values for $selectOptionName. The array is of the format array(array('value' => <the internal value>, 'label' => <a display label>), ...)
 * @var string $selectValue The current value of $selectOptionName.
 * @var string $title The title shown for the option.
 * @var string $helpLink If defined, the link to the corresponding external help page.
 * @var bool $premium If defined, the option will be tagged as premium only and not allow its value to change for free users.
 */

$toggleID = 'wfls-option-' . preg_replace('/[^a-z0-9]/i', '-', $toggleOptionName);
$selectID = 'wfls-option-' . preg_replace('/[^a-z0-9]/i', '-', $selectOptionName);
?>
<ul class="wfls-option wfls-option-toggled-select<?php if (!wfConfig::p() && isset($premium) && $premium) { echo ' wfls-option-premium'; } ?>" data-toggle-option="<?php echo esc_attr($toggleOptionName); ?>" data-enabled-toggle-value="<?php echo esc_attr($enabledToggleValue); ?>" data-disabled-toggle-value="<?php echo esc_attr($disabledToggleValue); ?>" data-original-toggle-value="<?php echo esc_attr($toggleValue == $enabledToggleValue ? $enabledToggleValue : $disabledToggleValue); ?>" data-select-option="<?php echo esc_attr($selectOptionName); ?>" data-original-select-value="<?php echo esc_attr($selectValue); ?>">
	<li id="<?php echo esc_attr($toggleID); ?>" class="wfls-option-checkbox<?php echo ($toggleValue == $enabledToggleValue ? ' wfls-checked' : ''); ?>"  role="checkbox" aria-checked="<?php echo ($toggleValue == $enabledToggleValue ? 'true' : 'false'); ?>" tabindex="0"><i class="wfls-ion-ios-checkmark-empty" aria-hidden="true"></i></li>
	<li class="wfls-option-content">
		<ul id="<?php echo esc_attr($selectID); ?>">
			<li class="wfls-option-title"><span id="<?php echo esc_attr($selectID); ?>-label"><?php echo esc_html($title); ?></span><?php if (!wfConfig::p() && isset($premium) && $premium) { echo ' <a href="https://www.wordfence.com/gnl1optionUpgrade/wordfence-signup/" target="_blank" rel="noopener noreferrer" class="wfls-premium-link">' . esc_html__('Premium Feature', 'wordfence') . '</a>'; } ?><?php if (isset($helpLink)) { echo ' <a href="' . esc_attr($helpLink) . '"  target="_blank" rel="noopener noreferrer" class="wfls-inline-help"><i class="' . (\WordfenceLS\Controller_WordfenceLS::shared()->should_use_core_font_awesome_styles() ? 'wf-fa wf-fa-question-circle-o' : 'wfls-fa wfls-fa-question-circle-o') . '" aria-hidden="true"></i></a>'; } ?></li>
			<li class="wfls-option-select wfls-padding-add-top-xs-small">
				<select<?php echo ($toggleValue == $enabledToggleValue && !(!wfConfig::p() && isset($premium) && $premium) ? '' : ' disabled'); ?> aria-labelledby="<?php echo esc_attr($selectID); ?>-label">
				<?php foreach ($selectOptions as $o): ?>
					<option class="wfls-option-select-option" value="<?php echo esc_attr($o['value']); ?>"<?php if ($o['value'] == $selectValue) { echo ' selected'; } ?>><?php echo esc_html($o['label']); ?></option>
				<?php endforeach; ?>
				</select>
			</li>
		</ul>
	</li>
</ul>modules/login-security/views/options/option-roles.php000064400000023172150755146440017204 0ustar00<?php
if (!defined('WORDFENCE_LS_VERSION')) { exit; }

use WordfenceLS\Controller_Settings;
use WordfenceLS\Text\Model_JavaScript;

$states = array(
	Controller_Settings::STATE_2FA_DISABLED => __('Disabled', 'wordfence'),
	Controller_Settings::STATE_2FA_OPTIONAL => __('Optional', 'wordfence'),
	Controller_Settings::STATE_2FA_REQUIRED => __('Required', 'wordfence')
);

$gracePeriod = Controller_Settings::shared()->get_int(Controller_Settings::OPTION_REQUIRE_2FA_USER_GRACE_PERIOD, Controller_Settings::DEFAULT_REQUIRE_2FA_USER_GRACE_PERIOD);
$woocommerceIntegrationEnabled = Controller_Settings::shared()->get_bool(\WordfenceLS\Controller_Settings::OPTION_ENABLE_WOOCOMMERCE_INTEGRATION);

$requiredRoles = array();
foreach ($options as $option) {
	if ($option['state'] === Controller_Settings::STATE_2FA_REQUIRED) {
		$requiredRoles[$option['role']] = $option['title'];
	}
}

$customerRoleWarning = __('Requiring 2FA for customers is not recommended as some customers may experience difficulties setting up or using two-factor authentication. Instead, using the "Optional" mode for users with the customer role is recommended which will allow customers to enable 2FA, but will not require them to do so.', 'wordfence');

?>
<ul class="wfls-option wfls-option-2fa-roles">
	<li class="wfls-option-title">
		<label><?php esc_html_e('2FA Roles', 'wordfence') ?></label>
	</li>
	<li class="wfls-option-content">
		<ul>
		<?php foreach ($options as $option): ?>
		<?php $selectId = 'wfls-2fa-role-' . $option['name']; ?>
		<li>
			<label for="<?php echo esc_attr($selectId) ?>"><?php echo esc_html($option['title']) ?></label>
			<select id="<?php echo esc_attr($selectId) ?>" name="<?php echo esc_attr($option['name']) ?>" class="wfls-option-select">
				<?php foreach ($states as $key => $label): ?>
				<?php if (!$option['allow_disabling'] && $key === Controller_Settings::STATE_2FA_DISABLED) continue; ?>
				<option
					value="<?php echo esc_attr($key); ?>"
					<?php if($option['state'] === $key): ?> selected<?php endif ?>
					<?php if(!$option['editable']): ?> disabled<?php endif ?>
				>
					<?php echo esc_html($label) ?>
				</option>
				<?php endforeach ?>
			</select>
		</li>
		<?php endforeach ?>
		</ul>
		<p id="wfls-customer-2fa-required-warning" class="wfls-notice" style="display: none;"><?php echo esc_html($customerRoleWarning) ?></p>
		<?php if ($hasWoocommerce && !$woocommerceIntegrationEnabled): ?>
			<p class="wfls-woocommerce-customer-integration-message"><small><?php esc_html_e('In order to use 2FA with the WooCommerce customer role, you must either enable the "WooCommerce integration" option or use the "wordfence_2fa_management" shortcode to provide customers with access to the 2FA management interface. The default interface is only available through WordPress admin pages which are not accessible to users in the customer role.', 'wordfence') ?></small></p>
		<?php endif ?>
	</li>
	<li class="wfls-2fa-grace-period-container">
		<label for="wfls-2fa-grace-period" class="wfls-primary-label"><?php esc_html_e('Grace Period', 'wordfence') ?></label>
		<input id="wfls-2fa-grace-period" type="text" pattern="[0-9]+" value="<?php echo (int)$gracePeriod; ?>" class="wfls-option-input wfls-option-input-required" name="<?php echo esc_html(Controller_Settings::OPTION_REQUIRE_2FA_USER_GRACE_PERIOD) ?>" maxlength="2">
		<label for="wfls-2fa-grace-period"><?php esc_html_e('days', 'wordfence') ?></label>
		<div id="wfls-grace-period-zero-warning" style="display: none;">
			<strong><?php esc_html_e('Setting the grace period to 0 will prevent users in roles where 2FA is required, including newly created users, from logging in if they have not already enabled two-factor authentication.', 'wordfence') ?></strong>
			<a href="<?php echo esc_attr(\WordfenceLS\Controller_Support::esc_supportURL(\WordfenceLS\Controller_Support::ITEM_MODULE_LOGIN_SECURITY_ROLES)) ?>" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Learn More', 'wordfence') ?></a>
		</div>
		<small><?php esc_html_e('For roles that require 2FA, users will have this many days to set up 2FA. Failure to set up 2FA during this period will result in the user losing account access. This grace period will apply to new users from the time of account creation. For existing users, this grace period will apply relative to the time at which the requirement is implemented. This grace period will not automatically apply to admins and must be manually enabled for each admin user.', 'wordfence') ?></small>
	</li>
	<?php if (!empty($requiredRoles)): ?>
	<li class="wfls-2fa-notification-action">
		<h4><?php esc_html_e('2FA Notifications', 'wordfence') ?></h4>
		<p>
			<small><?php esc_html_e('Send an email to users with the selected role to notify them of the grace period for enabling 2FA. Select the desired role and optionally specify the URL to be sent in the email to setup 2FA. If left blank, the URL defaults to the standard wordpress login and Wordfence’s Two-Factor Authentication plugin page. For example, if using WooCommerce, input the relative URL of the account page.', 'wordfence') ?></small>
			<a href="<?php echo \WordfenceLS\Controller_Support::esc_supportURL(\WordfenceLS\Controller_Support::ITEM_MODULE_LOGIN_SECURITY_2FA_NOTIFICATIONS) ?>" target="_blank" rel="noopener noreferrer" class="wfls-inline-help"><i class="<?php echo \WordfenceLS\Controller_WordfenceLS::shared()->should_use_core_font_awesome_styles() ? 'wf-fa wf-fa-question-circle-o' : 'wfls-fa wfls-fa-question-circle-o'; ?>" aria-hidden="true"></i></a>
		</p>
		<div>
			<label><?php esc_html_e('2FA Role', 'wordfence') ?></label>
			<select id="wfls-grace-period-notification-role">
				<?php foreach ($requiredRoles as $role => $label): ?>
				<option value="<?php echo esc_attr($role) ?>"><?php echo esc_html($label) ?></option>
				<?php endforeach ?>
			</select>
		</div>
		<div>
			<label><?php esc_html_e('2FA Relative URL (optional)', 'wordfence') ?></label>
			<input id="wfls-grace-period-notification-url" type="text" placeholder="ex: /my-account/">
		</div>
		<button class="wfls-btn wfls-btn-default wfls-btn-sm" id="wfls-send-grace-period-notification"><?php esc_html_e('Notify', 'wordfence') ?></button>
	</li>
	<?php endif ?>
</ul>
<script>
	(function($) {
		function sendGracePeriodNotification(notifyAll) {
			var request = {
				role: $('#wfls-grace-period-notification-role').val(),
				url: $('#wfls-grace-period-notification-url').val(),
			};
			if (typeof notifyAll !== "undefined" && notifyAll)
				request.notify_all = true;
			WFLS.ajax('wordfence_ls_send_grace_period_notification', request, 
				function(response) {
					if (response.error) {
						var settings = {
							additional_buttons: []
						};
						if (response.limit_exceeded) {
							settings.additional_buttons.push({
								label: '<?php echo \WordfenceLS\Text\Model_JavaScript::esc_js(__('Send Anyway', 'wordfence')); ?>',
								id: 'wfls-send-grace-period-notification-over-limit'
							});
						}
						WFLS.panelModal((WFLS.screenSize(500) ? '300px' : '400px'), '<?php echo \WordfenceLS\Text\Model_JavaScript::esc_js(__('Error Sending Notification', 'wordfence')); ?>', response.error, settings);
					}
					else {
						WFLS.panelModal((WFLS.screenSize(500) ? '300px' : '400px'), '<?php echo \WordfenceLS\Text\Model_JavaScript::esc_js(__('Notification Sent', 'wordfence')); ?>', response.confirmation);
					}
					if (request.notify_all) {
						WFLS.panelClose();
					}
				},
				function (error) {
					WFLS.panelModal((WFLS.screenSize(500) ? '300px' : '400px'), '<?php echo \WordfenceLS\Text\Model_JavaScript::esc_js(__('Error Sending Notification', 'wordfence')); ?>', '<?php echo \WordfenceLS\Text\Model_JavaScript::esc_js(__('An error was encountered while trying to send the notification. Please try again.', 'wordfence')); ?>');
					if (request.notify_all) {
						WFLS.panelClose();
					}
				});
		}
		$('#wfls-send-grace-period-notification').on('click', function(e) {
			e.preventDefault();
			e.stopPropagation();
			sendGracePeriodNotification();	
		});
		$(document).on('click', '#wfls-send-grace-period-notification-over-limit', function() {
			sendGracePeriodNotification(true);
			$(this).prop("disabled", true);
		});
		$('#wfls-2fa-grace-period').on('input', function(e) {
			var value = $(this).val();
			value = value.replace(/[^0-9]/g, '');
			value = parseInt(value);
			if (isNaN(value))
				value = '';
			if (value === 0) {
				$("#wfls-grace-period-zero-warning").show();
			}
			else {
				$("#wfls-grace-period-zero-warning").hide();
			}
			$(this).val(value);
		}).trigger('input');
		var customerRoleInput = $('#wfls-2fa-role-enabled-roles\\.customer');
		function isCustomerRoleRequired() {
			return customerRoleInput.val() === 'required';
		}
		function toggleCustomerRoleWarning() {
			$("#wfls-customer-2fa-required-warning").toggle(isCustomerRoleRequired());
		}
		toggleCustomerRoleWarning();
		customerRoleInput.on('change', function(e) {
			toggleCustomerRoleWarning();
			if (isCustomerRoleRequired()) {
				WFLS.displayModalMessage(
					<?php Model_JavaScript::echo_string_literal(__('Not Recommended', 'wordfence')) ?>,
					<?php Model_JavaScript::echo_string_literal($customerRoleWarning) ?>,
					[
						{
							label: <?php Model_JavaScript::echo_string_literal(__('Make Optional', 'wordfence')) ?>,
							id: 'wfls-customer-role-warning-revert',
							type: 'primary'
						},
						{
							label: <?php Model_JavaScript::echo_string_literal(__('Proceed', 'wordfence')) ?>,
							id: 'wfls-generic-modal-close',
							type: 'danger'
						}
					]
				);
			}
		});
		$('body').on('click', '#wfls-customer-role-warning-revert', function() {
			customerRoleInput.val('optional').trigger('change');
			$('#wfls-generic-modal-close').trigger('click');
		});
	})(jQuery);
</script>modules/login-security/views/options/option-toggled-sub.php000064400000012270150755146440020271 0ustar00<?php
if (!defined('WORDFENCE_LS_VERSION')) { exit; }
/**
 * Presents a boolean option with a checkbox toggle control and a sub-option toggle.
 *
 * Expects $optionName, $enabledValue, $disabledValue, $value, and $title to be defined for the primary option. $helpLink may also be defined.
 * Expects $subOptionName, $subEnabledValue, $subDisabledValue, $subValue, and $subTitle to be defined for the sub-option. $subHelpLink may also be defined.
 *
 * @var string $optionName The option name.
 * @var string $enabledValue The value to save in $optionName if the toggle is enabled.
 * @var string $disabledValue The value to save in $optionName if the toggle is disabled.
 * @var string $value The current value of $optionName.
 * @var string $title The title shown for the option.
 * @var string $htmlTitle The unescaped title shown for the option.
 * @var string $helpLink If defined, the link to the corresponding external help page.
 * @var bool $premium If defined, the option will be tagged as premium only and not allow its value to change for free users.
 * 
 * @var string $subOptionName The sub-option name.
 * @var string $subEnabledValue The value to save in $subOptionName if the toggle is enabled.
 * @var string $subDisabledValue The value to save in $subOptionName if the toggle is disabled.
 * @var string $subValue The current value of $subOptionName.
 * @var string $subTitle The title shown for the sub-option.
 * @var string $subHtmlTitle The unescaped title shown for the sub-option.
 * @var string $subHelpLink If defined, the link to the corresponding external help page for the sub-option.
 * @var bool $subPremium If defined, the sub-option will be tagged as premium only and not allow its value to change for free users.
 */

if (isset($title) && !isset($htmlTitle)) {
	$htmlTitle = esc_html($title);
}

if (isset($subTitle) && !isset($subHtmlTitle)) {
	$subHtmlTitle = esc_html($subTitle);
}

$id = 'wfls-option-' . preg_replace('/[^a-z0-9]/i', '-', $optionName);
$subID = 'wfls-option-' . preg_replace('/[^a-z0-9]/i', '-', $subOptionName);
?>
<ul class="wfls-flex-vertical wfls-flex-full-width">
	<li>
		<ul id="<?php echo esc_attr($id); ?>" class="wfls-option wfls-option-toggled<?php if (!wfConfig::p() && isset($premium) && $premium) { echo ' wfls-option-premium'; } ?>" data-option="<?php echo esc_attr($optionName); ?>" data-enabled-value="<?php echo esc_attr($enabledValue); ?>" data-disabled-value="<?php echo esc_attr($disabledValue); ?>" data-original-value="<?php echo esc_attr($value == $enabledValue ? $enabledValue : $disabledValue); ?>">
			<li class="wfls-option-checkbox<?php echo ($value == $enabledValue ? ' wfls-checked' : ''); ?>" role="checkbox" aria-checked="<?php echo ($value == $enabledValue ? 'true' : 'false'); ?>" tabindex="0" aria-labelledby="<?php echo esc_attr($id); ?>-label"><i class="wfls-ion-ios-checkmark-empty" aria-hidden="true"></i></li>
			<li class="wfls-option-title">
				<span id="<?php echo esc_attr($id); ?>-label"><?php echo $htmlTitle; ?></span><?php if (!wfConfig::p() && isset($premium) && $premium) { echo ' <a href="https://www.wordfence.com/gnl1optionUpgrade/wordfence-signup/" target="_blank" rel="noopener noreferrer" class="wfls-premium-link">' . esc_html__('Premium Feature', 'wordfence') . '</a>'; } ?><?php if (isset($helpLink)) { echo ' <a href="' . esc_attr($helpLink) . '"  target="_blank" rel="noopener noreferrer" class="wfls-inline-help"><i class="' . (\WordfenceLS\Controller_WordfenceLS::shared()->should_use_core_font_awesome_styles() ? 'wf-fa wf-fa-question-circle-o' : 'wfls-fa wfls-fa-question-circle-o') . '" aria-hidden="true"></i></a>'; } ?>
			</li>
		</ul>
	</li>
	<li class="wfls-option-sub">
		<ul id="<?php echo esc_attr($subID); ?>" class="wfls-option wfls-option-toggled<?php if (!wfConfig::p() && isset($subPremium) && $subPremium) { echo ' wfls-option-premium'; } ?>" data-option="<?php echo esc_attr($subOptionName); ?>" data-enabled-value="<?php echo esc_attr($subEnabledValue); ?>" data-disabled-value="<?php echo esc_attr($subDisabledValue); ?>" data-original-value="<?php echo esc_attr($subValue == $subEnabledValue ? $subEnabledValue : $subDisabledValue); ?>">
			<li class="wfls-option-checkbox<?php echo ($subValue == $subEnabledValue ? ' wfls-checked' : ''); ?>" role="checkbox" aria-checked="<?php echo ($subValue == $subEnabledValue ? 'true' : 'false'); ?>" tabindex="0" aria-labelledby="<?php echo esc_attr($subID); ?>-label"><i class="wfls-ion-ios-checkmark-empty" aria-hidden="true"></i></li>
			<li class="wfls-option-title">
				<span id="<?php echo esc_attr($subID); ?>-label"><?php echo $subHtmlTitle; ?></span><?php if (!wfConfig::p() && isset($subPremium) && $subPremium) { echo ' <a href="https://www.wordfence.com/gnl1optionUpgrade/wordfence-signup/" target="_blank" rel="noopener noreferrer" class="wfls-premium-link">' . esc_html__('Premium Feature', 'wordfence') . '</a>'; } ?><?php if (isset($subHelpLink)) { echo ' <a href="' . esc_attr($subHelpLink) . '"  target="_blank" rel="noopener noreferrer" class="wfls-inline-help"><i class="' . (\WordfenceLS\Controller_WordfenceLS::shared()->should_use_core_font_awesome_styles() ? 'wf-fa wf-fa-question-circle-o' : 'wfls-fa wfls-fa-question-circle-o') . '" aria-hidden="true"></i></a>'; } ?>
			</li>
		</ul>
	</li>
</ul>modules/login-security/views/options/option-captcha-threshold.php000064400000012241150755146440021450 0ustar00<?php
if (!defined('WORDFENCE_LS_VERSION')) { exit; }

$optionName = \WordfenceLS\Controller_Settings::OPTION_RECAPTCHA_THRESHOLD;
$currentValue = \WordfenceLS\Controller_Settings::shared()->get_float($optionName, 0.5);
$selectOptions = array(
	array('label' => __('1.0 (definitely a human)', 'wordfence'), 'value' => 1.0, 'selected' => ((int) ($currentValue * 10)) == 10),
	array('label' => __('0.9', 'wordfence'), 'value' => 0.9, 'selected' => ((int) ($currentValue * 10)) == 9),
	array('label' => __('0.8', 'wordfence'), 'value' => 0.8, 'selected' => ((int) ($currentValue * 10)) == 8),
	array('label' => __('0.7', 'wordfence'), 'value' => 0.7, 'selected' => ((int) ($currentValue * 10)) == 7),
	array('label' => __('0.6', 'wordfence'), 'value' => 0.6, 'selected' => ((int) ($currentValue * 10)) == 6),
	array('label' => __('0.5 (probably a human)', 'wordfence'), 'value' => 0.5, 'selected' => ((int) ($currentValue * 10)) == 5),
	array('label' => __('0.4', 'wordfence'), 'value' => 0.4, 'selected' => ((int) ($currentValue * 10)) == 4),
	array('label' => __('0.3', 'wordfence'), 'value' => 0.3, 'selected' => ((int) ($currentValue * 10)) == 3),
	array('label' => __('0.2', 'wordfence'), 'value' => 0.2, 'selected' => ((int) ($currentValue * 10)) == 2),
	array('label' => __('0.1 (probably a bot)', 'wordfence'), 'value' => 0.1, 'selected' => ((int) ($currentValue * 10)) <= 1),
);
?>
<ul class="wfls-flex-vertical wfls-flex-align-left">
	<li>
		<ul id="wfls-option-recaptcha-threshold" class="wfls-option wfls-option-select" data-select-option="<?php echo esc_attr($optionName); ?>" data-original-select-value="<?php echo esc_attr($currentValue); ?>">
			<li class="wfls-option-spacer"></li>
			<li class="wfls-option-content">
				<ul>
					<li class="wfls-option-title">
						<ul class="wfls-flex-vertical wfls-flex-align-left">
							<li><span id="wfls-option-recaptcha-threshold-label"><strong><?php esc_html_e('reCAPTCHA human/bot threshold score', 'wordfence'); ?></strong></span></li>
							<li class="wfls-option-subtitle"><?php esc_html_e('A reCAPTCHA score equal to or higher than this value will be considered human. Anything lower will be treated as a bot and require additional verification for login and registration.', 'wordfence'); ?></li>
						</ul>
					</li>
					<li class="wfls-option-select wfls-padding-add-top-xs-small">
						<select aria-labelledby="wfls-option-recaptcha-threshold-label">
							<?php foreach ($selectOptions as $o): ?>
								<option class="wfls-option-select-option" value="<?php echo esc_attr($o['value']); ?>"<?php if ($o['selected']) { echo ' selected'; } ?>><?php echo esc_html($o['label']); ?></option>
							<?php endforeach; ?>
						</select>
					</li>
				</ul>
			</li>
		</ul>
	</li>
	<li>
		<ul class="wfls-option">
			<li class="wfls-option-spacer"></li>
			<li class="wfls-recaptcha-score-history">
				<div class="wfls-recaptcha-chart-container">
					<canvas id="wfls-recaptcha-score-history"></canvas>
				</div>
				<div class="wfls-center">
					<a href="#" id="wfls-reset-recaptcha-score-stats" class="wfls-text-small"><?php esc_html_e('Reset Score Statistics', 'wordfence'); ?></a>
				</div>
			</li>
		</ul>
	</li>
</ul>
<script type="application/javascript">
	<?php
		$stats = \WordfenceLS\Controller_Settings::shared()->get_array(\WordfenceLS\Controller_Settings::OPTION_CAPTCHA_STATS);
	?>
	(function($) {
		$(function() {
			$('#wfls-reset-recaptcha-score-stats').on('click', function(e) {
				e.preventDefault();
				e.stopPropagation();

				WFLS.ajax('wordfence_ls_reset_recaptcha_stats', {}, function(res) {
					if (res.success) {
						window.location.reload(true);
					}
					else {
						if (res.hasOwnProperty('html') && res.html) {
							WFLS.panelModalHTML((WFLS.screenSize(500) ? '300px' : '400px'), 'Error Resetting reCAPTCHA Statistics', res.error);
						}
						else {
							WFLS.panelModal((WFLS.screenSize(500) ? '300px' : '400px'), 'Error Resetting reCAPTCHA Statistics', res.error);
						}
					}
				});
			});
		});
		
		$(window).on('wfls-tab-change.recaptcha-score-history', function(e, target) {
			if (target == 'settings') {
				var barChartData = {
					labels: ['0.0', '0.1', '0.2', '0.3', '0.4', '0.5', '0.6', '0.7', '0.8', '0.9', '1.0'],
					datasets: [{
						label: '<?php esc_attr_e('Requests', 'wordfence'); ?>',
						backgroundColor: 'rgba(75,192,192,0.4)',
						borderColor: 'rgba(75,192,192,1.0)',
						borderWidth: 1,
						data: <?php echo json_encode($stats['counts']) ?>
					}]
				};

				new Chart($('#wfls-recaptcha-score-history'), {
					type: 'bar',
					data: barChartData,
					options: {
						responsive: true,
						legend: {
							display: false,
						},
						title: {
							display: true,
							text: '<?php esc_attr_e('reCAPTCHA Score History', 'wordfence'); ?>'
						},
						scales: {
							y: {
								display: true,
								title: {
									display: true,
									text: '<?php esc_attr_e('Count', 'wordfence'); ?>'
								},
								ticks: {
									min: 0,
									precision: 0,
									stepSize: <?php echo max(10, pow(10, floor(log10(array_sum($stats['counts']) / 5)))); ?>
								}
							}
						}
					}
				});
				$(window).off('wfls-tab-change.recaptcha-score-history');
			}
		});
	})(jQuery);
</script>modules/login-security/views/options/option-ip-source.php000064400000017400150755146440017763 0ustar00<?php
if (!defined('WORDFENCE_LS_VERSION')) { exit; }
/**
 * Presents the global option OPTION_IP_SOURCE with a value select menu and text area (hidden by default) for trusted proxies.
 */

$selectOptions = array(
	array('value' => \WordfenceLS\Model_Request::IP_SOURCE_AUTOMATIC, 'label' => esc_html__('Use the most secure method to get visitor IP addresses. Prevents spoofing and works with most sites.', 'wordfence') . ' <strong>' . esc_html__('(Recommended)', 'wordfence') . '</strong>'),
	array('value' => \WordfenceLS\Model_Request::IP_SOURCE_REMOTE_ADDR, 'label' => esc_html__('Use PHP\'s built in REMOTE_ADDR and don\'t use anything else. Very secure if this is compatible with your site.', 'wordfence')),
	array('value' => \WordfenceLS\Model_Request::IP_SOURCE_X_FORWARDED_FOR, 'label' => esc_html__('Use the X-Forwarded-For HTTP header. Only use if you have a front-end proxy or spoofing may result.', 'wordfence')),
	array('value' => \WordfenceLS\Model_Request::IP_SOURCE_X_REAL_IP, 'label' => esc_html__('Use the X-Real-IP HTTP header. Only use if you have a front-end proxy or spoofing may result.', 'wordfence')),
);
?>
<ul class="wfls-flex-vertical wfls-flex-full-width">
	<li>
		<ul id="wfls-option-ip-source" class="wfls-option wfls-option-ip-source" data-option="<?php echo esc_attr(\WordfenceLS\Controller_Settings::OPTION_IP_SOURCE); ?>" data-original-value="<?php echo esc_attr(\WordfenceLS\Controller_Settings::shared()->get(\WordfenceLS\Controller_Settings::OPTION_IP_SOURCE)); ?>" data-text-area-option="<?php echo esc_attr(\WordfenceLS\Controller_Settings::OPTION_IP_TRUSTED_PROXIES); ?>" data-original-text-area-value="<?php echo esc_attr(\WordfenceLS\Controller_Settings::shared()->get(\WordfenceLS\Controller_Settings::OPTION_IP_TRUSTED_PROXIES)); ?>">
			<li class="wfls-option-content wfls-no-right">
				<ul class="wfls-flex-vertical wfls-flex-align-left">
					<li class="wfls-option-title"><strong><?php esc_html_e('How to get IPs', 'wordfence'); ?></strong></li>
					<li>
						<ul class="wfls-flex-vertical wfls-flex-align-left">
							<li class="wfls-padding-add-left">
								<ul class="wfls-flex-vertical wfls-flex-align-left" role="radiogroup">
									<?php foreach ($selectOptions as $o): ?>
										<li class="wfls-padding-add-top-small"><input type="radio" class="wfls-option-radio" name="wfls-ip-source" value="<?php echo esc_attr($o['value']); ?>" id="wfls-ip-source-<?php echo esc_attr(preg_replace('/[^a-z0-9]/i', '-', $o['value'])); ?>"<?php if ($o['value'] == \WordfenceLS\Controller_Settings::shared()->get(\WordfenceLS\Controller_Settings::OPTION_IP_SOURCE)) { echo ' checked'; } ?>><label for="wfls-ip-source-<?php echo esc_attr(preg_replace('/[^a-z0-9]/i', '-', $o['value'])); ?>">&nbsp;&nbsp;</label><?php echo $o['label']; ?></li>
									<?php endforeach; ?>
								</ul>
							</li>
							<li class="wfls-option-ip-source-details wfls-padding-add-top">
								<div class="wfls-left">Detected IP(s): <span id="wfls-ip-source-preview-all"><?php echo \WordfenceLS\Model_Request::current()->detected_ip_preview(); ?></span></div>
								<div class="wfls-left">Your IP with this setting: <span id="wfls-ip-source-preview-single"><?php echo esc_html(\WordfenceLS\Model_Request::current()->ip()); ?></span></div>
								<div class="wfls-left"><a href="#" id="wfls-ip-source-trusted-proxies-show">+ Edit trusted proxies</a></div>
							</li>
						</ul>
					</li>
				</ul>
			</li>
		</ul>
	</li>
	<li id="wfls-ip-source-trusted-proxies">
		<ul id="wfls-option-ip-source-trusted-proxies" class="wfls-option wfls-option-textarea" data-text-option="<?php echo esc_attr(\WordfenceLS\Controller_Settings::OPTION_IP_TRUSTED_PROXIES); ?>" data-original-text-value="<?php echo esc_attr(\WordfenceLS\Controller_Settings::shared()->get(\WordfenceLS\Controller_Settings::OPTION_IP_TRUSTED_PROXIES)); ?>">
			<li class="wfls-option-spacer"></li>
			<li class="wfls-option-content wfls-no-right">
				<ul>
					<li class="wfls-option-title">
						<ul class="wfls-flex-vertical wfls-flex-align-left">
							<li><?php esc_html_e('Trusted Proxies', 'wordfence'); ?></li>
							<li class="wfls-option-subtitle"><?php esc_html_e('These IPs (or CIDR ranges) will be ignored when determining the requesting IP via the X-Forwarded-For HTTP header. Enter one IP or CIDR range per line.', 'wordfence'); ?></li>
						</ul>
					</li>
					<li class="wfls-option-textarea">
						<textarea spellcheck="false" autocapitalize="none" autocomplete="off" name="howGetIPs_trusted_proxies"><?php echo esc_html(\WordfenceLS\Controller_Settings::shared()->get(\WordfenceLS\Controller_Settings::OPTION_IP_TRUSTED_PROXIES)); ?></textarea>
					</li>
				</ul>
			</li>
		</ul>
	</li>
</ul>
<script type="application/javascript">
	(function($) {
		$(function() {
			var updateIPPreview = function() {
				WFLS.updateIPPreview({ip_source: $('input[name="wfls-ip-source"]:checked').val(), ip_source_trusted_proxies: $('#wfls-ip-source-trusted-proxies textarea').val()}, function(ret) {
					if (ret && ret.ip) {
						$('#wfls-ip-source-preview-all').html(ret.preview);
						$('#wfls-ip-source-preview-single').html(ret.ip);
					}
				});
			};

			$('input[name="wfls-ip-source"]').on('change', function() {
				var optionElement = $(this).closest('.wfls-option.wfls-option-ip-source');
				var option = optionElement.data('option');
				var value = $('input[name="wfls-ip-source"]:checked').val();

				var originalValue = optionElement.data('originalValue');
				if (originalValue == value) {
					delete WFLS.pendingChanges[option];
				}
				else {
					WFLS.pendingChanges[option] = value;
				}

				WFLS.updatePendingChanges();

				updateIPPreview();
			});

			var coalescingUpdateTimer;
			$('#wfls-ip-source-trusted-proxies textarea').on('change paste keyup', function() {
				var e = this;

				setTimeout(function() {
					clearTimeout(coalescingUpdateTimer);
					coalescingUpdateTimer = setTimeout(updateIPPreview, 1000);

					var optionElement = $(e).closest('.wfls-option.wfls-option-textarea');
					var option = optionElement.data('textOption');
					var value = $(e).val();

					var originalValue = optionElement.data('originalTextValue');
					if (originalValue == value) {
						delete WFLS.pendingChanges[option];
					}
					else {
						WFLS.pendingChanges[option] = value;
					}

					WFLS.updatePendingChanges();
				}, 4);
			});

			$(window).on('wflsOptionsReset', function() {
				$('input[name="wfls-ip-source"]').each(function() {
					var optionElement = $(this).closest('.wfls-option.wfls-option-ip-source');
					var option = optionElement.data('option');
					var originalValue = optionElement.data('originalValue');

					$(this).prop('checked', originalValue == $(this).attr('value'));
				});

				$('#wfls-ip-source-trusted-proxies textarea').each(function() {
					var optionElement = $(this).closest('.wfls-option.wfls-option-textarea');
					var originalValue = optionElement.data('originalTextAreaValue');
					$(this).val(originalValue);
				});

				updateIPPreview();
			});

			$('#wfls-ip-source-trusted-proxies-show').each(function() {
				$(this).on('keydown', function(e) {
					if (e.keyCode == 32) {
						e.preventDefault();
						e.stopPropagation();

						$(this).trigger('click');
					}
				});

				$(this).on('click', function(e) {
					e.preventDefault();
					e.stopPropagation();

					var isActive = $('#wfls-ip-source-trusted-proxies').hasClass('wfls-active');
					if (isActive) {
						$('#wfls-ip-source-trusted-proxies').slideUp({
							always: function() {
								$('#wfls-ip-source-trusted-proxies').removeClass('wfls-active');
							}
						});
					}
					else {
						$(this).parent().slideUp();
						$('#wfls-ip-source-trusted-proxies').slideDown({
							always: function() {
								$('#wfls-ip-source-trusted-proxies').addClass('wfls-active');
							}
						});
					}
				});
			});
		});
	})(jQuery);
</script> modules/login-security/views/options/option-select.php000064400000005041150755146440017332 0ustar00<?php
if (!defined('WORDFENCE_LS_VERSION')) { exit; }
/**
 * Presents an option with a popup menu for detailed value selection.
 *
 * Expects $selectOptionName, $selectOptions, $selectValue, and $title to be defined. $helpLink may also be defined.
 *
 * @var string $selectOptionName The option name for the select portion.
 * @var array $selectOptions An array of the possible values for $selectOptionName. The array is of the format array(array('value' => <the internal value>, 'label' => <a display label>), ...)
 * @var string $selectValue The current value of $selectOptionName.
 * @var string $title The title shown for the option.
 * @var string $helpLink If defined, the link to the corresponding external help page.
 * @var bool $premium If defined, the option will be tagged as premium only and not allow its value to change for free users.
 */

$id = 'wfls-option-' . preg_replace('/[^a-z0-9]/i', '-', $selectOptionName);
?>
<ul id="<?php echo esc_attr($id); ?>" class="wfls-option wfls-option-select<?php if (!wfConfig::p() && isset($premium) && $premium) { echo ' wfls-option-premium'; } ?>" data-select-option="<?php echo esc_attr($selectOptionName); ?>" data-original-select-value="<?php echo esc_attr($selectValue); ?>">
	<li class="wfls-option-spacer"></li>
	<li class="wfls-option-content">
		<ul>
			<li class="wfls-option-title"><span id="<?php echo esc_attr($id); ?>-label"><?php echo esc_html($title); ?></span><?php if (!wfConfig::p() && isset($premium) && $premium) { echo ' <a href="https://www.wordfence.com/gnl1optionUpgrade/wordfence-signup/" target="_blank" rel="noopener noreferrer" class="wfls-premium-link">' . esc_html__('Premium Feature', 'wordfence') . '</a>'; } ?><?php if (isset($helpLink)) { echo ' <a href="' . esc_attr($helpLink) . '"  target="_blank" rel="noopener noreferrer" class="wfls-inline-help"><i class="' . (\WordfenceLS\Controller_WordfenceLS::shared()->should_use_core_font_awesome_styles() ? 'wf-fa wf-fa-question-circle-o' : 'wfls-fa wfls-fa-question-circle-o') . '" aria-hidden="true"></i></a>'; } ?></li>
			<li class="wfls-option-select wfls-padding-add-top-xs-small">
				<select<?php echo (!(!wfConfig::p() && isset($premium) && $premium) ? '' : ' disabled'); ?> aria-labelledby="<?php echo esc_attr($id); ?>-label">
					<?php foreach ($selectOptions as $o): ?>
						<option class="wfls-option-select-option" value="<?php echo esc_attr($o['value']); ?>"<?php if ($o['value'] == $selectValue) { echo ' selected'; } ?>><?php echo esc_html($o['label']); ?></option>
					<?php endforeach; ?>
				</select>
			</li>
		</ul>
	</li>
</ul>modules/login-security/views/options/option-ntp.php000064400000007551150755146440016664 0ustar00<?php
if (!defined('WORDFENCE_LS_VERSION')) { exit; }
$maxFailures = (int) \WordfenceLS\Controller_Time::FAILURE_LIMIT;
$cronDisabled = \WordfenceLS\Controller_Settings::shared()->is_ntp_cron_disabled($failureCount);
$id = 'wfls-option-ntp';
?>
<ul id="<?php echo esc_attr($id); ?>" class="wfls-option wfls-flex-vertical wfls-flex-align-left">
	<li class="wfls-option-title"><strong><?php esc_html_e('NTP', 'wordfence') ?></strong></li>
	<li class="wfls-option-content">
		<p><?php esc_html_e('NTP is a protocol that allows for remote time synchronization. Wordfence Login Security uses this protocol to ensure that it has the most accurate time which is necessary for TOTP-based two-factor authentication.', 'wordfence') ?></p>
	<?php if (\WordfenceLS\Controller_Settings::shared()->is_ntp_disabled_via_constant()): ?>
		<p><?php esc_html_e('The constant WORDFENCE_LS_DISABLE_NTP is defined which disables NTP entirely. Remove this constant or set it to a falsy value to enable NTP.', 'wordfence') ?></p>
	<?php elseif ($cronDisabled): ?>
		<?php if ($failureCount > 0): ?>
			<p><strong><?php echo sprintf(esc_html__('NTP is currently disabled as %d subsequent attempts have failed.', 'wordfence'), $maxFailures) ?></strong></p>
		<?php else: ?>
			<p><?php esc_html_e('NTP was manually disabled.', 'wordfence') ?></p>
		<?php endif ?>
		<button id="wfls-reset-ntp-failure-count" class="wfls-btn wfls-btn-sm wfls-btn-default"><?php esc_html_e('Reset', 'wordfence') ?></button>
	<?php else: ?>
		<p><?php echo wp_kses(__('NTP is currently <strong>enabled</strong>.', 'wordfence'), array('strong'=>array())); ?></p>
		<?php if ($failureCount > 0): ?>
			<?php $remainingAttempts = $maxFailures - $failureCount; ?>
			<p>
				<strong><?php esc_html_e('NTP updates are currently failing.', 'wordfence') ?></strong> 
				<?php echo $remainingAttempts > 0 ? sprintf(esc_html__('NTP will be automatically disabled after %d more attempts.', 'wordfence'), $remainingAttempts) : esc_html__('NTP will be automatically disabled after 1 more attempt.', 'wordfence') ?>
			</p>
		<?php endif ?>
		<button id="wfls-disable-ntp" class="wfls-btn wfls-btn-sm wfls-btn-default"><?php esc_html_e('Disable', 'wordfence') ?></button>
	<?php endif ?>
	</li>
</ul>
<script>
	(function($) {
		$(function() {
			$('#wfls-reset-ntp-failure-count').on('click', function(e) {
				e.preventDefault();
				e.stopPropagation();

				function handleError(message) {
					WFLS.panelModal(
						(WFLS.screenSize(500) ? '300px' : '400px'),
						'<?php echo \WordfenceLS\Text\Model_JavaScript::esc_js(__('Error Resetting NTP', 'wordfence')); ?>',
						typeof message === 'undefined' ? '<?php echo \WordfenceLS\Text\Model_JavaScript::esc_js(__('An error was encountered while trying to reset the NTP state. Please try again.', 'wordfence')); ?>' : message
					);
				}

				WFLS.ajax('wordfence_ls_reset_ntp_failure_count', [],
					function(response) {
						if (response.error) {
							handleError(response.error);
						}
						else {
							window.location.reload();
						}
					},
					function (error) {
						handleError();
					});
			});
			$('#wfls-disable-ntp').on('click', function(e) {
				e.preventDefault();
				e.stopPropagation();

				function handleError(message) {
					WFLS.panelModal(
						(WFLS.screenSize(500) ? '300px' : '400px'),
						'<?php echo \WordfenceLS\Text\Model_JavaScript::esc_js(__('Error Disabling NTP', 'wordfence')); ?>',
						typeof message === 'undefined' ? '<?php echo \WordfenceLS\Text\Model_JavaScript::esc_js(__('An error was encountered while trying to disable NTP. Please try again.', 'wordfence')); ?>' : message
					);
				}

				WFLS.ajax('wordfence_ls_disable_ntp', [],
					function(response) {
						if (response.error) {
							handleError(response.error);
						}
						else {
							window.location.reload();
						}
					},
					function (error) {
						handleError();
					});
			});
		});
	})(jQuery);
</script>modules/login-security/views/options/option-text.php000064400000004760150755146440017046 0ustar00<?php
if (!defined('WORDFENCE_LS_VERSION')) { exit; }
/**
 * Presents a text field option.
 *
 * Expects $textOptionName, $textValue, and $title to be defined. $placeholder and $helpLink may also be defined.
 *
 * @var string $textOptionName The option name for the text field.
 * @var string $textValue The current value of $textOptionName.
 * @var string $title The title shown for the option.
 * @var string $placeholder If defined, the placeholder for the text field.
 * @var string $helpLink If defined, the link to the corresponding external help page.
 * @var bool $premium If defined, the option will be tagged as premium only and not allow its value to change for free users.
 */

if (!isset($placeholder)) {
	$placeholder = '';
}
$id = 'wfls-option-' . preg_replace('/[^a-z0-9]/i', '-', $textOptionName);
?>
<ul id="<?php echo esc_attr($id); ?>" class="wfls-option wfls-option-text<?php if (!wfConfig::p() && isset($premium) && $premium) { echo ' wfls-option-premium'; } ?>" data-text-option="<?php echo esc_attr($textOptionName); ?>" data-original-text-value="<?php echo esc_attr($textValue); ?>">
	<li class="wfls-option-spacer"></li>
	<li class="wfls-option-content">
		<ul>
			<li class="wfls-option-title">
				<?php if (isset($subtitle)): ?>
				<ul class="wfls-flex-vertical wfls-flex-align-left">
					<li>
						<?php endif; ?>
						<span id="<?php echo esc_attr($id); ?>-label"><?php echo esc_html($title); ?></span><?php if (!wfConfig::p() && isset($premium) && $premium) { echo ' <a href="https://www.wordfence.com/gnl1optionUpgrade/wordfence-signup/" target="_blank" rel="noopener noreferrer" class="wfls-premium-link">' . esc_html__('Premium Feature', 'wordfence') . '</a>'; } ?><?php if (isset($helpLink)) { echo ' <a href="' . esc_attr($helpLink) . '"  target="_blank" rel="noopener noreferrer" class="wfls-inline-help"><i class="' . (\WordfenceLS\Controller_WordfenceLS::shared()->should_use_core_font_awesome_styles() ? 'wf-fa wf-fa-question-circle-o' : 'wfls-fa wfls-fa-question-circle-o') . '" aria-hidden="true"></i></a>'; } ?>
						<?php if (isset($subtitle)): ?>
					</li>
					<li class="wfls-option-subtitle"><?php echo esc_html($subtitle); ?></li>
				</ul>
			<?php endif; ?>
			</li>
			<li class="wfls-option-text">
				<input type="text" value="<?php echo esc_attr($textValue); ?>" placeholder="<?php echo esc_attr($placeholder); ?>"<?php echo (!(!wfConfig::p() && isset($premium) && $premium) ? '' : ' disabled'); ?> aria-labelledby="<?php echo esc_attr($id); ?>-label">
			</li>
		</ul>
	</li>
</ul>modules/login-security/views/options/option-captcha.php000064400000016703150755146440017465 0ustar00<?php
if (!defined('WORDFENCE_LS_VERSION')) { exit; }

$enableOptionName = \WordfenceLS\Controller_Settings::OPTION_ENABLE_AUTH_CAPTCHA;
$currentEnableValue = \WordfenceLS\Controller_Settings::shared()->get_bool($enableOptionName);

$siteKeyOptionName = \WordfenceLS\Controller_Settings::OPTION_RECAPTCHA_SITE_KEY;
$siteKeyValue = \WordfenceLS\Controller_Settings::shared()->get($siteKeyOptionName);

$secretOptionName = \WordfenceLS\Controller_Settings::OPTION_RECAPTCHA_SECRET;
$secretValue = \WordfenceLS\Controller_Settings::shared()->get($secretOptionName);
?>
<ul id="wfls-option-enable-auth-captcha" data-option="<?php echo esc_attr($enableOptionName); ?>" data-enabled-value="1" data-disabled-value="0" data-original-value="<?php echo $currentEnableValue ? '1' : '0'; ?>">
	<li>
		<ul class="wfls-option wfls-padding-add-bottom-small">
			<li id="wfls-enable-auth-captcha" class="wfls-option-checkbox<?php echo ($currentEnableValue ? ' wfls-checked' : ''); ?>" role="checkbox" aria-checked="<?php echo ($currentEnableValue ? 'true' : 'false'); ?>" tabindex="0"><i class="wfls-ion-ios-checkmark-empty" aria-hidden="true" aria-labelledby="wfls-enable-auth-captcha-label"></i></li>
			<li class="wfls-option-title">
				<ul class="wfls-flex-vertical wfls-flex-align-left">
					<li>
						<strong id="wfls-enable-auth-captcha-label"><?php esc_html_e('Enable reCAPTCHA on the login and user registration pages', 'wordfence'); ?></strong>
					</li>
					<li class="wfls-option-subtitle"><?php printf(__('reCAPTCHA v3 does not make users solve puzzles or click a checkbox like previous versions. The only visible part is the reCAPTCHA logo. If a visitor\'s browser fails the CAPTCHA, Wordfence will send an email to the user\'s address with a link they can click to verify that they are a user of your site. You can read further details <a href="%s" target="_blank" rel="noopener noreferrer">in our documentation</a>.', 'wordfence'), \WordfenceLS\Controller_Support::esc_supportURL(\WordfenceLS\Controller_Support::ITEM_MODULE_LOGIN_SECURITY_CAPTCHA)); ?></li>
				</ul>
			</li>
		</ul>
	</li>
	<li>
		<ul class="wfls-option wfls-padding-no-top">
			<li class="wfls-option-spacer"></li>
			<li>
				<table>
					<tr class="wfls-option wfls-option-text" data-original-value="<?php echo esc_attr($siteKeyValue); ?>" data-text-option="<?php echo esc_attr($siteKeyOptionName); ?>">
						<th id="wfls-enable-captcha-site-key-label" class="wfls-padding-add-bottom"><?php esc_html_e('reCAPTCHA v3 Site Key', 'wordfence'); ?></th>
						<td class="wfls-option-text wfls-padding-add-bottom"><input type="text" name="recaptchaSiteKey" id="input-recaptchaSiteKey" class="wfls-form-control" value="<?php echo esc_attr($siteKeyValue); ?>"<?php if (!$currentEnableValue) { echo ' disabled'; } ?>></td>
					</tr>
					<tr class="wfls-option wfls-option-text" data-original-value="<?php echo esc_attr($secretValue); ?>" data-text-option="<?php echo esc_attr($secretOptionName); ?>">
						<th id="wfls-enable-captcha-secret-label"><?php esc_html_e('reCAPTCHA v3 Secret', 'wordfence'); ?></th>
						<td class="wfls-option-text"><input type="text" name="recaptchaSecret" id="input-recaptchaSecret" class="wfls-form-control" value="<?php echo esc_attr($secretValue); ?>"<?php if (!$currentEnableValue) { echo ' disabled'; } ?>></td>
					</tr>
				</table>
			</li>
		</ul>
		<ul class="wfls-option wfls-padding-no-top">
			<li class="wfls-option-spacer"></li>
			<li class="wfls-option-title">
				<ul class="wfls-flex-vertical wfls-flex-align-left">
					<li class="wfls-option-subtitle"><?php echo wp_kses(__('Note: This feature requires a free site key and secret for the <a href="https://www.google.com/recaptcha/about/" target="_blank" rel="noopener noreferrer">Google reCAPTCHA v3 Service</a>. To set up new reCAPTCHA keys, log into your Google account and go to the <a href="https://www.google.com/recaptcha/admin" target="_blank" rel="noopener noreferrer">reCAPTCHA admin page</a>.', 'wordfence'), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()))); ?></li>
				</ul>
			</li>
		</ul>
	</li>
</ul>
<script type="application/javascript">
	(function($) {
		$(function() {
			$('#wfls-enable-auth-captcha').on('keydown', function(e) {
				if (e.keyCode == 32) {
					e.preventDefault();
					e.stopPropagation();

					$(this).trigger('click');
				}
			});

			$('#wfls-enable-auth-captcha').on('click', function(e) {
				e.preventDefault();
				e.stopPropagation();

				var optionElement = $('#wfls-option-enable-auth-captcha');
				if (optionElement.hasClass('wfls-disabled')) {
					return;
				}

				var option = optionElement.data('option');
				var value = false;
				var isActive = $(this).hasClass('wfls-checked');
				if (isActive) {
					$(this).removeClass('wfls-checked').attr('aria-checked', 'false');
					$('#input-recaptchaSiteKey, #input-recaptchaSecret').attr('disabled', true);
					value = optionElement.data('disabledValue');
				}
				else {
					$(this).addClass('wfls-checked').attr('aria-checked', 'true');
					$('#input-recaptchaSiteKey, #input-recaptchaSecret').attr('disabled', false);
					value = optionElement.data('enabledValue');
				}

				var originalValue = optionElement.data('originalValue');
				if (originalValue == value) {
					delete WFLS.pendingChanges[option];
				}
				else {
					WFLS.pendingChanges[option] = value;
				}

				$(optionElement).trigger('change', [false]);
				WFLS.updatePendingChanges();
			});

			$('#wfls-enable-auth-captcha-label').on('click', function(e) {
				var links = $(this).find('a');
				var buffer = 10;
				for (var i = 0; i < links.length; i++) {
					var t = $(links[i]).offset().top;
					var l = $(links[i]).offset().left;
					var b = t + $(links[i]).height();
					var r = l + $(links[i]).width();

					if (e.pageX > l - buffer && e.pageX < r + buffer && e.pageY > t - buffer && e.pageY < b + buffer) {
						return;
					}
				}
				$(this).closest('.wfls-option').find('.wfls-option-checkbox').trigger('click');
			}).css('cursor', 'pointer');

			$('#input-recaptchaSiteKey, #input-recaptchaSecret').on('change paste keyup', function() {
				var e = this;

				setTimeout(function() {
					var optionElement = $(e).closest('.wfls-option');
					var option = optionElement.data('textOption');

					if (typeof option !== 'undefined') {
						var value = $(e).val();

						var originalValue = $(optionElement).data('originalValue');
						if (originalValue == value) {
							delete WFLS.pendingChanges[option];
						}
						else {
							WFLS.pendingChanges[option] = value;
						}

						$(optionElement).trigger('change', [false]);
						WFLS.updatePendingChanges();
					}
				}, 4);
			});

			$(window).on('wflsOptionsReset', function() {
				$('#wfls-enable-auth-captcha').each(function() {
					var enabledValue = $(this).data('enabledValue');
					var disabledValue = $(this).data('disabledValue');
					var originalValue = $(this).data('originalValue');
					if (enabledValue == originalValue) {
						$(this).find('#wfls-enable-auth-captcha.wfls-option-checkbox').addClass('wfls-checked').attr('aria-checked', 'true');
					}
					else {
						$(this).find('#wfls-enable-auth-captcha.wfls-option-checkbox').removeClass('wfls-checked').attr('aria-checked', 'false');
					}
					$(this).trigger('change', [true]);
				});
				$('#input-recaptchaSiteKey, #input-recaptchaSecret').each(function() {
					$(this).val($(this).data('originalValue'));
					$(this).attr('disabled', !$('#wfls-enable-auth-captcha.wfls-option-checkbox').hasClass('wfls-checked'));
				});
			});
		});
	})(jQuery);
</script>modules/login-security/views/options/option-textarea.php000064400000006011150755146440017666 0ustar00<?php
if (!defined('WORDFENCE_LS_VERSION')) { exit; }
/**
 * Presents a text area option.
 *
 * Expects $textOptionName, $textValue, and $title to be defined. $helpLink, $premium, and $noSpacer may also be defined.
 *
 * @var string $textOptionName The option name for the text field. Required.
 * @var string $textValue The current value of $textOptionName. Required.
 * @var string|\WordfenceLS\Text\Model_HTML $title The title shown for the option. Required.
 * @var string|\WordfenceLS\Text\Model_HTML $subtitle The title shown for the option. Optional.
 * @var string $subtitlePosition The position for the subtitle: 'value' for below the value, 'title' for below the title. Optional.
 * @var string $helpLink If defined, the link to the corresponding external help page. Optional.
 * @var bool $noSpacer If defined and truthy, the spacer will be omitted. Optional.
 */

if (!isset($subtitlePosition)) { //May be 'title' to appear below the title or 'value' to appear below the field
	$subtitlePosition = 'title';
}

$id = 'wfls-option-' . preg_replace('/[^a-z0-9]/i', '-', $textOptionName);
?>
<ul id="<?php echo esc_attr($id); ?>" class="wfls-option wfls-option-textarea" data-text-option="<?php echo esc_attr($textOptionName); ?>" data-original-text-value="<?php echo esc_attr($textValue); ?>">
	<?php if (!isset($noSpacer) || !$noSpacer): ?>
	<li class="wfls-option-spacer"></li>
	<?php endif; ?>
	<li class="wfls-option-content wfls-no-right">
		<ul>
			<li class="wfls-option-title<?php if (isset($alignTitle)) { echo $alignTitle == 'top' ? ' wfls-option-title-top' : ($alignTitle == 'bottom' ? 'wfls-option-title-bottom' : ''); } ?>">
				<?php if (isset($subtitleHTML) && $subtitlePosition == 'title'): ?>
				<ul class="wfls-flex-vertical wfls-flex-align-left">
					<li>
				<?php endif; ?>
						<span id="<?php echo esc_attr($id); ?>-label"><?php echo \WordfenceLS\Text\Model_HTML::esc_html($title); ?></span><?php if (isset($helpLink)) { echo ' <a href="' . esc_attr($helpLink) . '"  target="_blank" rel="noopener noreferrer" class="wfls-inline-help"><i class="' . (\WordfenceLS\Controller_WordfenceLS::shared()->should_use_core_font_awesome_styles() ? 'wf-fa wf-fa-question-circle-o' : 'wfls-fa wfls-fa-question-circle-o') . '" aria-hidden="true"></i></a>'; } ?>
				<?php if (isset($subtitle) && $subtitlePosition == 'title'): ?>
					</li>
					<li class="wfls-option-subtitle"><?php echo \WordfenceLS\Text\Model_HTML::esc_html($subtitle); ?></li>
				</ul>
				<?php endif; ?>
			</li>
			<li class="wfls-option-textarea">
				<?php if (isset($subtitle) && $subtitlePosition == 'value'): ?>
				<ul class="wfls-flex-vertical wfls-flex-align-left wfls-flex-full-width">
					<li>
				<?php endif; ?>
				<textarea aria-labelledby="<?php echo esc_attr($id); ?>-label"><?php echo esc_html($textValue); ?></textarea>
				<?php if (isset($subtitle) && $subtitlePosition == 'value'): ?>
					</li>
					<li class="wfls-option-subtitle"><?php echo \WordfenceLS\Text\Model_HTML::esc_html($subtitle); ?></li>
				</ul>
				<?php endif; ?>
			</li>
		</ul>
	</li>
</ul>modules/login-security/views/options/option-toggled-multiple.php000064400000005151150755146440021333 0ustar00<?php
if (!defined('WORDFENCE_LS_VERSION')) { exit; }
/**
 * Presents multiple boolean options under a single heading with a checkbox toggle control for each.
 *
 * @var array $options The options shown. The structure is defined below. Required.
 * @var string|\WordfenceLS\Text\Model_HTML $title The overall title shown for the options. Required.
 * @var string $helpLink The link to the corresponding external help page. Optional.
 * @var bool $wrap Whether or not the options should be allowed to wrap. Optional, defaults to false.
 * 
 * $options is an array of
 * 	array(
 * 		'name' => string <option name>,
 * 		'enabledValue' => string <value saved if the toggle is enabled>,
 * 		'disabledValue' => string <value saved if the toggle is disabled>,
 * 		'value' => string <current value of the option>,
 * 		'title' => string|\Wordfence2FA\Text\Model_HTML <title displayed to label the checkbox>,
 * 		'editable' => bool Whether or not the option can be edited, defaults to true.
 * 	)
 */
?>
<ul class="wfls-option wfls-option-toggled-multiple">
	<li class="wfls-option-title"><?php echo \WordfenceLS\Text\Model_HTML::esc_html($title); ?><?php if (isset($helpLink)) { echo ' <a href="' . esc_attr($helpLink) . '"  target="_blank" rel="noopener noreferrer" class="wfls-inline-help"><i class="' . (\WordfenceLS\Controller_WordfenceLS::shared()->should_use_core_font_awesome_styles() ? 'wf-fa wf-fa-question-circle-o' : 'wfls-fa wfls-fa-question-circle-o') . '" aria-hidden="true"></i></a>'; } ?></li>
	<li class="wfls-option-checkboxes<?php if (isset($wrap) && $wrap) { echo ' wfls-option-checkboxes-wrap'; } ?>">
		<?php
		foreach ($options as $o):
			$id = 'wfls-option-' . preg_replace('/[^a-z0-9]/i', '-', $o['name']);
		?>
		<ul id="<?php echo esc_attr($id); ?>" data-option="<?php echo esc_attr($o['name']); ?>" data-enabled-value="<?php echo esc_attr($o['enabledValue']); ?>" data-disabled-value="<?php echo esc_attr($o['disabledValue']); ?>" data-original-value="<?php echo esc_attr($o['value'] == $o['enabledValue'] ? $o['enabledValue'] : $o['disabledValue']); ?>">
			<li class="wfls-option-checkbox<?php echo ($o['value'] == $o['enabledValue'] ? ' wfls-checked' : ''); ?><?php echo (isset($o['editable']) && !$o['editable'] ? ' wfls-disabled' : ''); ?>" role="checkbox" aria-checked="<?php echo ($o['value'] == $o['enabledValue'] ? 'true' : 'false'); ?>" tabindex="0" aria-labelledby="<?php echo esc_attr($id); ?>-label"><i class="wfls-ion-ios-checkmark-empty" aria-hidden="true"></i></li>
			<li id="<?php echo esc_attr($id); ?>-label" class="wfls-option-title"><?php echo esc_html($o['title']); ?></li>
		</ul>
		<?php endforeach; ?>
	</li>
</ul>modules/login-security/views/options/option-token.php000064400000004751150755146440017202 0ustar00<?php
if (!defined('WORDFENCE_LS_VERSION')) { exit; }
/**
 * Presents an option with a token field for value entry.
 *
 * Expects $tokenOptionName, $tokenValue, and $title to be defined. $helpLink may also be defined.
 *
 * @var string $tokenOptionName The option name.
 * @var array $tokenValue The current value of $tokenOptionName. It will be JSON-encoded as an array of strings.
 * @var string $title The title shown for the option.
 * @var string $helpLink If defined, the link to the corresponding external help page.
 * @var bool $premium If defined, the option will be tagged as premium only and not allow its value to change for free users.
 */

$id = 'wfls-option-' . preg_replace('/[^a-z0-9]/i', '-', $tokenOptionName);
?>
<ul id="<?php echo esc_attr($id); ?>" class="wfls-option wfls-option-token<?php if (!wfConfig::p() && isset($premium) && $premium) { echo ' wfls-option-premium'; } ?>" data-token-option="<?php echo esc_attr($tokenOptionName); ?>" data-original-token-value="<?php echo esc_attr(json_encode($tokenValue)); ?>">
	<li class="wfls-option-spacer"></li>
	<li class="wfls-flex-vertical wfls-flex-align-left">
		<div class="wfls-option-title">
		<?php if (isset($subtitle)): ?>
			<ul class="wfls-flex-vertical wfls-flex-align-left">
				<li>
		<?php endif; ?>
					<span id="<?php echo esc_attr($id); ?>-label"><?php echo esc_html($title); ?></span><?php if (!wfConfig::p() && isset($premium) && $premium) { echo ' <a href="https://www.wordfence.com/gnl1optionUpgrade/wordfence-signup/" target="_blank" rel="noopener noreferrer" class="wfls-premium-link">' . esc_html__('Premium Feature', 'wordfence') . '</a>'; } ?><?php if (isset($helpLink)) { echo ' <a href="' . esc_attr($helpLink) . '"  target="_blank" rel="noopener noreferrer" class="wfls-inline-help"><i class="' . (\WordfenceLS\Controller_WordfenceLS::shared()->should_use_core_font_awesome_styles() ? 'wf-fa wf-fa-question-circle-o' : 'wfls-fa wfls-fa-question-circle-o') . '" aria-hidden="true"></i></a>'; } ?>
		<?php if (isset($subtitle)): ?>
				</li>
				<li class="wfls-option-subtitle"><?php echo esc_html($subtitle); ?></li>
			</ul>
		<?php endif; ?>
		</div>
		<select multiple<?php echo (!(!wfConfig::p() && isset($premium) && $premium) ? '' : ' disabled'); ?> aria-labelledby="<?php echo esc_attr($id); ?>-label">
		<?php foreach ($tokenValue as $o): ?>
			<option value="<?php echo esc_attr($o); ?>" selected><?php echo esc_html($o); ?></option>
		<?php endforeach; ?>
		</select>
		<div class="wfls-option-token-tags"></div>
	</li>
</ul>modules/login-security/views/options/option-label.php000064400000002574150755146440017142 0ustar00<?php
if (!defined('WORDFENCE_LS_VERSION')) { exit; }
/**
 * Presents an option-styled text value.
 *
 * Expects $title (or $titleHTML) to be defined. $helpLink may also be defined.
 *
 * @var string $title The title shown for the option.
 * @var string $titleHTML The raw HTML title shown for the option. This supersedes $title.
 * @var string $helpLink If defined, the link to the corresponding external help page.
 */

if (!isset($titleHTML)) {
	$titleHTML = esc_html($title);
}
?>
<ul class="wfls-option wfls-option-label">
	<?php if (!isset($noSpacer) || !$noSpacer): ?>
		<li class="wfls-option-spacer"></li>
	<?php endif; ?>
	<li class="wfls-option-content">
		<ul>
			<li class="wfls-option-title">
				<?php if (isset($subtitle)): ?>
				<ul class="wfls-flex-vertical wfls-flex-align-left">
					<li>
						<?php endif; ?>
						<?php echo $titleHTML; ?><?php if (isset($helpLink)) { echo ' <a href="' . esc_attr($helpLink) . '"  target="_blank" rel="noopener noreferrer" class="wfls-inline-help"><i class="' . (\WordfenceLS\Controller_WordfenceLS::shared()->should_use_core_font_awesome_styles() ? 'wf-fa wf-fa-question-circle-o' : 'wfls-fa wfls-fa-question-circle-o') . '" aria-hidden="true"></i></a>'; } ?>
						<?php if (isset($subtitle)): ?>
					</li>
					<li class="wfls-option-subtitle"><?php echo esc_html($subtitle); ?></li>
				</ul>
			<?php endif; ?>
			</li>
		</ul>
	</li>
</ul>modules/login-security/views/options/option-toggled-boolean-switch.php000064400000005745150755146440022427 0ustar00<?php
if (!defined('WORDFENCE_LS_VERSION')) { exit; }
/**
 * Presents a boolean option with a switch toggle control.
 *
 * Expects $optionName, $enabledValue, $disabledValue, $value, and $title to be defined. $helpLink may also be defined.
 *
 * @var string $optionName The option name.
 * @var string $enabledValue The value to save in $option if the toggle is enabled.
 * @var string $disabledValue The value to save in $option if the toggle is disabled.
 * @var string $value The current value of $optionName.
 * @var string $title The title shown for the option.
 * @var string $htmlTitle The unescaped title shown for the option.
 * @var string $helpLink If defined, the link to the corresponding external help page.
 * @var bool $premium If defined, the option will be tagged as premium only and not allow its value to change for free users.
 * @var bool $disabled If defined and truthy, the option will start out disabled.
 */

if (isset($subtitle) && !isset($subtitleHTML)) {
	$subtitleHTML = esc_html($subtitle);
}

$id = 'wfls-option-' . preg_replace('/[^a-z0-9]/i', '-', $optionName);
?>
<ul id="<?php echo esc_attr($id); ?>" class="wfls-option wfls-option-toggled-boolean-switch<?php if (!wfConfig::p() && isset($premium) && $premium) { echo ' wfls-option-premium'; } ?><?php if (isset($disabled) && $disabled) { echo ' wfls-disabled'; } ?>" data-option="<?php echo esc_attr($optionName); ?>" data-enabled-value="<?php echo esc_attr($enabledValue); ?>" data-disabled-value="<?php echo esc_attr($disabledValue); ?>" data-original-value="<?php echo esc_attr($value == $enabledValue ? $enabledValue : $disabledValue); ?>">
	<li class="wfls-boolean-switch<?php echo ($value == $enabledValue ? ' wfls-active' : ''); ?>" role="checkbox" aria-checked="<?php echo ($value == $enabledValue ? 'true' : 'false'); ?>" tabindex="0" aria-labelledby="<?php echo esc_attr($id); ?>-label"><a href="#" class="wfls-boolean-switch-handle"></a></li>
	<li class="wfls-option-title">
		<?php if (isset($subtitleHTML)): ?>
		<ul class="wfls-flex-vertical wfls-flex-align-left">
			<li>
		<?php endif; ?>
				<span id="<?php echo esc_attr($id); ?>-label"><?php echo (!empty($title)) ? esc_html($title) : ''; echo (!empty($htmlTitle)) ? wp_kses($htmlTitle, 'post') : ''; ?></span><?php if (!wfConfig::p() && isset($premium) && $premium) { echo ' <a href="https://www.wordfence.com/gnl1optionUpgrade/wordfence-signup/" target="_blank" rel="noopener noreferrer" class="wfls-premium-link">' . esc_html__('Premium Feature', 'wordfence') . '</a>'; } ?><?php if (isset($helpLink)) { echo ' <a href="' . esc_attr($helpLink) . '"  target="_blank" rel="noopener noreferrer" class="wfls-inline-help"><i class="' . (\WordfenceLS\Controller_WordfenceLS::shared()->should_use_core_font_awesome_styles() ? 'wf-fa wf-fa-question-circle-o' : 'wfls-fa wfls-fa-question-circle-o') . '" aria-hidden="true"></i></a>'; } ?>
				<?php if (isset($subtitleHTML)): ?>
			</li>
			<li class="wfls-option-subtitle"><?php echo $subtitleHTML; ?></li>
		</ul>
	<?php endif; ?>
	</li>
</ul>modules/login-security/views/options/option-switch.php000064400000004756150755146440017370 0ustar00<?php
if (!defined('WORDFENCE_LS_VERSION')) { exit; }
/**
 * Presents a switch option.
 *
 * @var string $optionName The option name for the switch. Required.
 * @var string $value The current value of $optionName. Required.
 * @var string|\WordfenceLS\Text\Model_HTML $title The title shown for the option. Required.
 * @var array $states An array of the possible states for the switch. The array matches the format array('value' => <value>, 'label' => <label>) Required.
 * @var string $helpLink If defined, the link to the corresponding external help page. Optional.
 * @var string $alignment If defined, controls the alignment of the switch control. Optional.
 */

$id = 'wfls-option-' . preg_replace('/[^a-z0-9]/i', '-', $optionName);
?>
<ul id="<?php echo esc_attr($id); ?>" class="wfls-option wfls-option-switch" data-option-name="<?php echo esc_attr($optionName); ?>" data-original-value="<?php echo esc_attr($value); ?>">
	<?php if (!isset($noSpacer) || !$noSpacer): ?>
	<li class="wfls-option-spacer"></li>
	<?php endif; ?>
	<li class="wfls-option-content wfls-no-right">
		<ul>
			<li class="wfls-option-title">
			<?php if (isset($subtitle)): ?>
				<ul class="wfls-flex-vertical wfls-flex-align-left">
					<li>
			<?php endif; ?>
						<span id="<?php echo esc_attr($id); ?>-label"><?php echo \WordfenceLS\Text\Model_HTML::esc_html($title); ?></span><?php if (isset($helpLink)) { echo ' <a href="' . esc_attr($helpLink) . '"  target="_blank" rel="noopener noreferrer" class="wfls-inline-help"><i class="' . (\WordfenceLS\Controller_WordfenceLS::shared()->should_use_core_font_awesome_styles() ? 'wf-fa wf-fa-question-circle-o' : 'wfls-fa wfls-fa-question-circle-o') . '" aria-hidden="true"></i></a>'; } ?>
			<?php if (isset($subtitle)): ?>
					</li>
					<li class="wfls-option-subtitle"><?php echo \WordfenceLS\Text\Model_HTML::esc_html($subtitle); ?></li>
				</ul>
			<?php endif; ?>
			</li>
			<li class="wfls-option-switch<?php if (isset($alignment)) { echo ' ' . $alignment; } ?> wfls-padding-add-top-xs-small">
				<ul class="wfls-switch" role="radiogroup" aria-labelledby="<?php echo esc_attr($id); ?>-label">
				<?php foreach ($states as $s): ?>
					<li<?php if ($s['value'] == $value) { echo ' class="wfls-active"'; } ?> data-option-value="<?php echo esc_attr($s['value']); ?>" role="radio" aria-checked="<?php echo ($s['value'] == $value ? 'true' : 'false'); ?>" tabindex="0"><?php echo \WordfenceLS\Text\Model_HTML::esc_html($s['label']); ?></li>
				<?php endforeach; ?>
				</ul>
			</li>
		</ul>
	</li>
</ul>modules/login-security/views/options/option-toggled-textarea.php000064400000006645150755146440021326 0ustar00<?php
if (!defined('WORDFENCE_LS_VERSION')) { exit; }
/**
 * Presents an option with a boolean on/off toggle checkbox and text area for detailed value entry.
 *
 * Expects $toggleOptionName, $enabledToggleValue, $disabledToggleValue, $toggleValue, $textAreaOptionName, $textAreaValue, and $title to be defined. $helpLink may also be defined.
 *
 * @var string $toggleOptionName The option name for the toggle portion.
 * @var string $enabledToggleValue The value to save in $toggleOption if the toggle is enabled.
 * @var string $disabledToggleValue The value to save in $toggleOption if the toggle is disabled.
 * @var string $toggleValue The current value of $toggleOptionName.
 * @var string $textAreaOptionName The option name for the text area portion.
 * @var string $textAreaValue The current value of $textAreaOptionName.
 * @var string $title The title shown for the option.
 * @var string $helpLink If defined, the link to the corresponding external help page.
 * @var bool $premium If defined, the option will be tagged as premium only and not allow its value to change for free users.
 */

$toggleID = 'wfls-option-' . preg_replace('/[^a-z0-9]/i', '-', $toggleOptionName);
$textAreaID = 'wfls-option-' . preg_replace('/[^a-z0-9]/i', '-', $textAreaOptionName);
?>
<ul class="wfls-option wfls-option-toggled-textarea<?php if (!wfConfig::p() && isset($premium) && $premium) { echo ' wfls-option-premium'; } ?>" data-toggle-option="<?php echo esc_attr($toggleOptionName); ?>" data-enabled-toggle-value="<?php echo esc_attr($enabledToggleValue); ?>" data-disabled-toggle-value="<?php echo esc_attr($disabledToggleValue); ?>" data-original-toggle-value="<?php echo esc_attr($toggleValue == $enabledToggleValue ? $enabledToggleValue : $disabledToggleValue); ?>" data-text-area-option="<?php echo esc_attr($textAreaOptionName); ?>" data-original-text-area-value="<?php echo esc_attr($textAreaValue); ?>">
	<li id="<?php echo esc_attr($toggleID); ?>" class="wfls-option-checkbox<?php echo ($toggleValue == $enabledToggleValue ? ' wfls-checked' : ''); ?>" role="checkbox" aria-checked="<?php echo ($toggleValue == $enabledToggleValue ? 'true' : 'false'); ?>" tabindex="0"><i class="wfls-ion-ios-checkmark-empty" aria-hidden="true" aria-labelledby="<?php echo esc_attr($toggleID); ?>-label"></i></li>
	<li class="wfls-option-title"><span id="<?php echo esc_attr($toggleID); ?>-label"><?php echo esc_html($title); ?></span><?php if (!wfConfig::p() && isset($premium) && $premium) { echo ' <a href="https://www.wordfence.com/gnl1optionUpgrade/wordfence-signup/" target="_blank" rel="noopener noreferrer" class="wfls-premium-link">' . esc_html__('Premium Feature', 'wordfence') . '</a>'; } ?><?php if (isset($helpLink)) { echo ' <a href="' . esc_attr($helpLink) . '"  target="_blank" rel="noopener noreferrer" class="wfls-inline-help"><i class="' . (\WordfenceLS\Controller_WordfenceLS::shared()->should_use_core_font_awesome_styles() ? 'wf-fa wf-fa-question-circle-o' : 'wfls-fa wfls-fa-question-circle-o') . '" aria-hidden="true"></i></a>'; } ?></li>
	<li id="<?php echo esc_attr($textAreaID); ?>" class="wfls-option-textarea">
		<select<?php echo ($toggleValue == $enabledToggleValue && !(!wfConfig::p() && isset($premium) && $premium) ? '' : ' disabled'); ?> aria-labelledby="<?php echo esc_attr($toggleID); ?>-label">
			<textarea<?php echo (!(!wfConfig::p() && isset($premium) && $premium) ? '' : ' disabled'); ?>><?php echo esc_html($textAreaValue); ?></textarea>
		</select>
	</li>
</ul>modules/login-security/views/options/option-toggled-segmented.php000064400000006034150755146440021454 0ustar00<?php
if (!defined('WORDFENCE_LS_VERSION')) { exit; }
/**
 * Presents a boolean option with a checkbox toggle control.
 *
 * Expects $optionName, $enabledValue, $disabledValue, $value, and $title to be defined. $helpLink may also be defined.
 *
 * @var string $optionName The option name.
 * @var string $enabledValue The value to save in $option if the toggle is enabled.
 * @var string $disabledValue The value to save in $option if the toggle is disabled.
 * @var string $value The current value of $optionName.
 * @var string $title The title shown for the option.
 * @var string $htmlTitle The unescaped title shown for the option.
 * @var string $helpLink If defined, the link to the corresponding external help page.
 * @var bool $premium If defined, the option will be tagged as premium only and not allow its value to change for free users.
 */

$id = 'wfls-option-' . preg_replace('/[^a-z0-9]/i', '-', $optionName);
?>
<ul id="<?php echo esc_attr($id); ?>" class="wfls-option wfls-option-toggled-segmented<?php if (!wfConfig::p() && isset($premium) && $premium) { echo ' wfls-option-premium'; } ?>" data-option="<?php echo esc_attr($optionName); ?>" data-enabled-value="<?php echo esc_attr($enabledValue); ?>" data-disabled-value="<?php echo esc_attr($disabledValue); ?>" data-original-value="<?php echo esc_attr($value == $enabledValue ? $enabledValue : $disabledValue); ?>">
	<li class="wfls-option-title"><?php echo (!empty($title)) ? esc_html($title) : ''; echo (!empty($htmlTitle)) ? wp_kses($htmlTitle, 'post') : ''; ?><?php if (!wfConfig::p() && isset($premium) && $premium) { echo ' <a href="https://www.wordfence.com/gnl1optionUpgrade/wordfence-signup/" target="_blank" rel="noopener noreferrer" class="wfls-premium-link">' . esc_html__('Premium Feature', 'wordfence') . '</a>'; } ?><?php if (isset($helpLink)) { echo ' <a href="' . esc_attr($helpLink) . '"  target="_blank" rel="noopener noreferrer" class="wfls-inline-help"><i class="' . (\WordfenceLS\Controller_WordfenceLS::shared()->should_use_core_font_awesome_styles() ? 'wf-fa wf-fa-question-circle-o' : 'wfls-fa wfls-fa-question-circle-o') . '" aria-hidden="true"></i></a>'; } ?></li>
	<li class="wfls-option-segments">
		<?php
		$onId = sanitize_key('wfls-segment-' . $optionName . '-on');
		$offId = sanitize_key('wfls-segment-' . $optionName . '-off');
		?>
		<input id="<?php echo esc_attr($onId) ?>" type="radio" name="<?php echo esc_attr($optionName) ?>" value="<?php echo esc_attr($enabledValue) ?>"<?php echo ($value == $enabledValue ? ' checked' : ''); ?><?php echo (!(!wfConfig::p() && isset($premium) && $premium) ? '' : ' disabled'); ?>>
		<label class="wfls-segment-first" for="<?php echo esc_attr($onId) ?>">On</label>

		<input id="<?php echo esc_attr($offId) ?>" type="radio" name="<?php echo esc_attr($optionName) ?>" value="<?php echo esc_attr($disabledValue) ?>"<?php echo ($value == $disabledValue ? ' checked' : ''); ?><?php echo (!(!wfConfig::p() && isset($premium) && $premium) ? '' : ' disabled'); ?>>
		<label class="wfls-segment-last" for="<?php echo esc_attr($offId) ?>">Off</label>
	</li>
</ul>modules/login-security/views/options/option-toggled.php000064400000005035150755146440017503 0ustar00<?php
if (!defined('WORDFENCE_LS_VERSION')) { exit; }
/**
 * Presents a boolean option with a checkbox toggle control.
 * 
 * @var string $optionName The option name. Required.
 * @var string $enabledValue The value to save in $option if the toggle is enabled. Required.
 * @var string $disabledValue The value to save in $option if the toggle is disabled. Required.
 * @var string $value The current value of $optionName. Required.
 * @var string|\WordfenceLS\Text\Model_HTML $title The title shown for the option. Required.
 * @var string|\WordfenceLS\Text\Model_HTML $subtitle The title shown for the option. Optional.
 * @var string $helpLink If defined, the link to the corresponding external help page. Optional.
 * @var bool $disabled If defined and truthy, the option will start out disabled. Optional.
 * @var bool $child If true, this option will be rendered ar a child option. Optional.
 */

$id = 'wfls-option-' . preg_replace('/[^a-z0-9]/i', '-', $optionName);
?>
<ul id="<?php echo esc_attr($id); ?>" class="wfls-option wfls-option-toggled<?php if (isset($disabled) && $disabled) { echo ' wfls-disabled'; } if (isset($child) && $child) { echo ' wfls-child-option'; }?>" data-option="<?php echo esc_attr($optionName); ?>" data-enabled-value="<?php echo esc_attr($enabledValue); ?>" data-disabled-value="<?php echo esc_attr($disabledValue); ?>" data-original-value="<?php echo esc_attr($value == $enabledValue ? $enabledValue : $disabledValue); ?>">
	<li class="wfls-option-checkbox<?php echo ($value == $enabledValue ? ' wfls-checked' : ''); ?>" role="checkbox" aria-checked="<?php echo ($value == $enabledValue ? 'true' : 'false'); ?>" tabindex="0" aria-labelledby="<?php echo esc_attr($id); ?>-label"><i class="wfls-ion-ios-checkmark-empty" aria-hidden="true"></i></li>
	<li class="wfls-option-title">
	<?php if (isset($subtitle)): ?>
		<ul class="wfls-flex-vertical wfls-flex-align-left">
			<li>
	<?php endif; ?>
				<span id="<?php echo esc_attr($id); ?>-label"><?php echo \WordfenceLS\Text\Model_HTML::esc_html($title); ?></span><?php if (isset($helpLink)) { echo ' <a href="' . esc_attr($helpLink) . '"  target="_blank" rel="noopener noreferrer" class="wfls-inline-help"><i class="' . (\WordfenceLS\Controller_WordfenceLS::shared()->should_use_core_font_awesome_styles() ? 'wf-fa wf-fa-question-circle-o' : 'wfls-fa wfls-fa-question-circle-o') . '" aria-hidden="true"></i></a>'; } ?>
	<?php if (isset($subtitle)): ?>
			</li>
			<li class="wfls-option-subtitle"><?php echo \WordfenceLS\Text\Model_HTML::esc_html($subtitle); ?></li>
		</ul>
	<?php endif; ?>
	</li>
</ul>modules/login-security/views/page/manage.php000064400000013470150755146440015223 0ustar00<?php
if (!defined('WORDFENCE_LS_VERSION')) { exit; }

/**
 * @var \WP_User $user The user being edited. Required.
 * @var bool $canEditUsers Whether or not the viewer of the page can edit other users. Optional, defaults to false.
 */

if (!isset($canEditUsers)) {
	$canEditUsers = false;
}

$ownAccount = false;
$ownUser = wp_get_current_user();
if ($ownUser->ID == $user->ID) {
	$ownAccount = true;
}

$enabled = \WordfenceLS\Controller_Users::shared()->has_2fa_active($user);
$requires2fa = \WordfenceLS\Controller_Users::shared()->requires_2fa($user, $inGracePeriod, $requiredAt);
$lockedOut = $requires2fa && !$enabled;

?>
<p><?php echo wp_kses(sprintf(__('Two-Factor Authentication, or 2FA, significantly improves login security for your website. Wordfence 2FA works with a number of TOTP-based apps like Google Authenticator, FreeOTP, and Authy. For a full list of tested TOTP-based apps, <a href="%s" target="_blank" rel="noopener noreferrer">click here</a>.', 'wordfence'), \WordfenceLS\Controller_Support::esc_supportURL(\WordfenceLS\Controller_Support::ITEM_MODULE_LOGIN_SECURITY_2FA)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()))); ?></p>
<?php if ($canEditUsers): ?>
<div id="wfls-editing-display" class="wfls-flex-row wfls-flex-row-xs-wrappable wfls-flex-row-equal-heights">
	<div class="wfls-block wfls-always-active wfls-flex-item-full-width wfls-add-bottom">
		<div class="wfls-block-header wfls-block-header-border-bottom">
			<div class="wfls-block-header-content">
				<div class="wfls-block-title">
					<strong><?php echo wp_kses(sprintf(__('Editing User:&nbsp;&nbsp;%s <span class="wfls-text-plain">%s</span>', 'wordfence'), get_avatar($user->ID, 16, '', $user->user_login), \WordfenceLS\Text\Model_HTML::esc_html($user->user_login) . ($ownAccount ? ' ' . __('(you)', 'wordfence') : '')), array('span'=>array('class'=>array()))); ?></strong>
				</div>
			</div>
		</div>
	</div>
</div>
<?php endif; ?>
<div id="wfls-deactivation-controls" class="wfls-flex-row wfls-flex-row-wrappable wfls-flex-row-equal-heights"<?php if (!$enabled) { echo ' style="display: none;"'; } ?>>
	<!-- begin status content -->
	<div class="wfls-flex-row wfls-flex-row-equal-heights wfls-flex-item-xs-100">
		<?php
		echo \WordfenceLS\Model_View::create('manage/deactivate', array(
			'user' => $user,
		))->render();
		?>
	</div>
	<!-- end status content -->
	<!-- begin regenerate codes -->
	<div class="wfls-flex-row wfls-flex-row-equal-heights wfls-flex-item-xs-100">
		<?php
		echo \WordfenceLS\Model_View::create('manage/regenerate', array(
			'user' => $user,
			'remaining' => \WordfenceLS\Controller_Users::shared()->recovery_code_count($user),
		))->render();
		?>
	</div>
	<!-- end regenerate codes -->
</div>
<div id="wfls-activation-controls" class="wfls-flex-row wfls-flex-row-xs-wrappable wfls-flex-row-equal-heights"<?php if ($enabled) { echo ' style="display: none;"'; } ?>>
	<?php
		$initializationData = new \WordfenceLS\Model_2faInitializationData($user);
	?>
	<!-- begin qr code -->
	<div class="wfls-flex-row wfls-flex-row-equal-heights wfls-col-sm-half-padding-right wfls-flex-item-xs-100 wfls-flex-item-sm-50">
		<?php
		echo \WordfenceLS\Model_View::create('manage/code', array(
			'initializationData' => $initializationData
		))->render();
		?>
	</div>
	<!-- end qr code -->
	<!-- begin activation -->
	<div class="wfls-flex-row wfls-flex-row-equal-heights wfls-col-sm-half-padding-left wfls-flex-item-xs-100 wfls-flex-item-sm-50">
		<?php
		echo \WordfenceLS\Model_View::create('manage/activate', array(
			'initializationData' => $initializationData
		))->render();
		?>
	</div>
	<!-- end activation -->
</div>
<div id="wfls-grace-period-controls" class="wfls-flex-row wfls-flex-row-xs-wrappable wfls-flex-row-equal-heights"<?php if ($enabled || !($lockedOut || $inGracePeriod)) { echo ' style="display: none;"'; } ?>>
	<div class="wfls-flex-row wfls-flex-row-equal-heights wfls-flex-item-xs-100 wfls-add-top">
		<?php
		echo \WordfenceLS\Model_View::create('manage/grace-period', array(
			'user' => $user,
			'lockedOut' => $lockedOut,
			'gracePeriod' => $inGracePeriod,
			'requiredAt' => $requiredAt
		))->render();
		?>
	</div>
</div>
<?php
/**
 * Fires after the main content of the activation page has been output.
 */
do_action('wfls_activation_page_footer');
$time = time();
$correctedTime = \WordfenceLS\Controller_Time::time($time);
$tz = get_option('timezone_string');
if (empty($tz)) {
	$offset = get_option('gmt_offset');
	$tz = 'UTC' . ($offset >= 0 ? '+' . $offset : $offset);
}
?>
<?php if (\WordfenceLS\Controller_Permissions::shared()->can_manage_settings()): ?>
<p><?php esc_html_e('Server Time:', 'wordfence'); ?> <?php echo date('Y-m-d H:i:s', $time); ?> UTC (<?php echo \WordfenceLS\Controller_Time::format_local_time('Y-m-d H:i:s', $time) . ' ' . $tz; ?>)<br>
	<?php esc_html_e('Browser Time:', 'wordfence'); ?> <script type="application/javascript">var date = new Date(); document.write(date.toUTCString() + ' (' + date.toString() + ')');</script><br>
<?php
if (\WordfenceLS\Controller_Settings::shared()->is_ntp_enabled()) {
	echo esc_html__('Corrected Time (NTP):', 'wordfence') . ' ' . date('Y-m-d H:i:s', $correctedTime) . ' UTC (' . \WordfenceLS\Controller_Time::format_local_time('Y-m-d H:i:s', $correctedTime) . ' ' . $tz . ')<br>';
}
else if (WORDFENCE_LS_FROM_CORE && $correctedTime != $time) {
	echo esc_html__('Corrected Time (WF):', 'wordfence') . ' ' . date('Y-m-d H:i:s', $correctedTime) . ' UTC (' . \WordfenceLS\Controller_Time::format_local_time('Y-m-d H:i:s', $correctedTime) . ' ' . $tz . ')<br>';
}
?>
<?php esc_html_e('Detected IP:', 'wordfence'); ?> <?php echo \WordfenceLS\Text\Model_HTML::esc_html(\WordfenceLS\Model_Request::current()->ip()); if (\WordfenceLS\Controller_Whitelist::shared()->is_whitelisted(\WordfenceLS\Model_Request::current()->ip())) { echo ' (' . esc_html__('allowlisted', 'wordfence') . ')'; } ?></p>
<?php endif; ?>modules/login-security/views/page/role.php000064400000004243150755146440014732 0ustar00<?php
if (!defined('WORDFENCE_LS_VERSION')) { exit; }
?>
<?php if (is_multisite()): ?>
	<p><em>(<?php esc_html_e('This page only shows users and roles on the main site of this network', 'wordfence') ?>)</em></p>
<?php endif ?>
<div class="wfls-block wfls-always-active wfls-flex-item-full-width wfls-add-bottom">
	<?php if ($requiredAt === false): ?>
	<div class="wfls-block-content">
		<p><?php echo esc_html(sprintf(__('2FA is not required for the %s role', 'wordfence'), $roleTitle)) ?></p>
	</div>
	<?php elseif (empty($users)): ?>
	<div class="wfls-block-content">
		<p>
		<?php if ($page == 1): ?>
			<?php echo esc_html(sprintf(__('No users found in the %s state for the %s role', 'wordfence'), $stateTitle, $roleTitle)) ?>
		<?php else: ?>
			<?php echo esc_html(sprintf(__('Page %d is out of range', 'wordfence'), $page)) ?>
		<?php endif ?>
		</p>
	</div>
	<?php else: ?>
	<table class="wfls-table wfls-table-striped wfls-table-header-separators wfls-table-expanded wfls-no-bottom">
		<tr>
			<th>User</th>
			<th>Required Date</th>
		</tr>
		<?php foreach ($users as $user): ?>
			<tr>
				<th scope="row"><a href="<?php echo esc_attr(get_edit_user_link($user->user_id)) ?>#wfls-user-settings"><?php echo esc_html($user->user_login) ?></a></td>
				<td>
					<?php if ($user->required_at): ?>
					<?php echo esc_html(\WordfenceLS\Controller_Time::format_local_time('F j, Y g:i A', $user->required_at)) ?>
					<?php else: ?>
					<?php esc_html_e('N/A', 'wordfence'); ?>
					<?php endif ?>
				</td>
			</tr>
		<?php endforeach ?>
		<?php if ($page != 1 || !$lastPage): ?>
		<tr>
			<td colspan="2" class="wfls-center">
				<?php if ($page > 1): ?>
					<a href="<?php echo esc_attr(add_query_arg($pageKey, $page-1) . "#$stateKey") ?>"><span class="dashicons dashicons-arrow-left-alt2"></span></a>
				<?php endif ?>
				<strong class="wfls-page-indicator"><?php esc_html_e('Page ', 'wordfence') ?><?php echo (int) $page ?></strong>
				<?php if (!$lastPage): ?>
					<a href="<?php echo esc_attr(add_query_arg($pageKey, $page+1) . "#$stateKey") ?>"><span class="dashicons dashicons-arrow-right-alt2"></span></a>
				<?php endif ?>
			</td>
		</tr>
		<?php endif ?>
	</table>
	<?php endif ?>
</div>modules/login-security/views/page/permission-denied.php000064400000000366150755146440017411 0ustar00<?php
if (!defined('WORDFENCE_LS_VERSION')) { exit; }

?>
<div>
	<h2><?php esc_html_e('Permission Denied', 'wordfence') ?></h2>
	<p><?php esc_html_e('You do not have permission to manage 2FA settings for your account.', 'wordfence') ?></p>
</div>modules/login-security/views/page/manage-embedded.php000064400000007501150755146440016750 0ustar00<?php
if (!defined('WORDFENCE_LS_VERSION')) { exit; }

$assets = isset($assets) ? $assets : array();
$scriptData = isset($scriptData) ? $scriptData : array();

$enabled = \WordfenceLS\Controller_Users::shared()->has_2fa_active($user);
$requires2fa = \WordfenceLS\Controller_Users::shared()->requires_2fa($user, $inGracePeriod, $requiredAt);
$lockedOut = $requires2fa && !$enabled;

$containerClasses = 'wfls-flex-row ' . ($stacked ? 'wfls-flex-row-wrapped' : 'wfls-flex-row-wrappable wfls-flex-row-equal-heights');
$columnClasses = 'wfls-flex-row wfls-flex-item-xs-100 ' . ($stacked ? '' : 'wfls-flex-row-equal-heights');

?>
<?php if (!empty($scriptData)): ?>
	<script type="text/javascript">
	<?php foreach ($scriptData as $key => $data): ?>
		var <?php echo $key ?> = <?php echo wp_json_encode($data); ?>;
	<?php endforeach ?>
	</script>
<?php endif ?>
<?php foreach ($assets as $asset): ?>
	<?php $asset->renderInlineIfNotEnqueued(); ?>
<?php endforeach ?>
<div id="wfls-management-embedded"<?php if ($stacked): ?> class="stacked" <?php endif ?>>
	<p><?php echo wp_kses(sprintf(__('Two-Factor Authentication, or 2FA, significantly improves login security for your account. Wordfence 2FA works with a number of TOTP-based apps like Google Authenticator, FreeOTP, and Authy. For a full list of tested TOTP-based apps, <a href="%s" target="_blank" rel="noopener noreferrer">click here</a>.', 'wordfence'), \WordfenceLS\Controller_Support::esc_supportURL(\WordfenceLS\Controller_Support::ITEM_MODULE_LOGIN_SECURITY_2FA)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()))); ?></p>
	<div id="wfls-deactivation-controls" class="<?php echo $containerClasses ?>"<?php if (!$enabled) { echo ' style="display: none;"'; } ?>>
		<!-- begin status content -->
		<div class="<?php echo $columnClasses ?>">
			<?php
			echo \WordfenceLS\Model_View::create('manage/deactivate', array(
				'user' => $user,
			))->render();
			?>
		</div>
		<!-- end status content -->
		<!-- begin regenerate codes -->
		<div class="<?php echo $columnClasses ?>">
			<?php
			echo \WordfenceLS\Model_View::create('manage/regenerate', array(
				'user' => $user,
				'remaining' => \WordfenceLS\Controller_Users::shared()->recovery_code_count($user),
			))->render();
			?>
		</div>
		<!-- end regenerate codes -->
	</div>
	<div id="wfls-activation-controls" class="<?php echo $containerClasses ?><?php if (!$stacked): ?> wfls-no-bottom-column-margin<?php endif ?>"<?php if ($enabled) { echo ' style="display: none;"'; } ?>>
		<?php
			$initializationData = new \WordfenceLS\Model_2faInitializationData($user);
		?>
		<!-- begin qr code -->
		<div class="<?php echo $columnClasses ?><?php if (!$stacked): ?> wfls-col-sm-half-padding-right wfls-flex-item-sm-50<?php endif ?>">
			<?php
			echo \WordfenceLS\Model_View::create('manage/code', array(
				'initializationData' => $initializationData
			))->render();
			?>
		</div>
		<!-- end qr code -->
		<!-- begin activation -->
		<div class="<?php echo $columnClasses ?><?php if (!$stacked): ?>  wfls-col-sm-half-padding-left wfls-flex-item-sm-50<?php endif ?>">
			<?php
			echo \WordfenceLS\Model_View::create('manage/activate', array(
				'initializationData' => $initializationData
			))->render();
			?>
		</div>
		<!-- end activation -->
	</div>
	<div id="wfls-grace-period-controls" class="<?php echo $containerClasses ?>"<?php if ($enabled || !($lockedOut || $inGracePeriod)) { echo ' style="display: none;"'; } ?>>
		<div class="<?php echo $columnClasses ?> wfls-add-top">
			<?php
			echo \WordfenceLS\Model_View::create('manage/grace-period', array(
				'user' => $user,
				'lockedOut' => $lockedOut,
				'gracePeriod' => $inGracePeriod,
				'requiredAt' => $requiredAt
			))->render();
			?>
		</div>
	</div>
	<?php
	/**
	 * Fires after the main content of the activation page has been output.
	 */
	do_action('wfls_activation_page_footer');
	?>
</div>modules/login-security/views/page/section-title.php000064400000002043150755146440016550 0ustar00<?php
if (!defined('WORDFENCE_LS_VERSION')) { exit; }
/**
 * @var \WordfenceLS\Page\Model_Title $title The page title parameters.
 * @var bool $showIcon Whether or not to show the header icon. Optional, defaults to false.
 */
?>
<div class="wfls-section-title">
	<?php if (isset($showIcon) && $showIcon): ?>
		<div class="wfls-header-icon wfls-hidden-xs"></div>
	<?php endif; ?>
	<h2 class="wfls-center-xs" id="section-title-<?php echo esc_attr($title->id); ?>"><?php echo \WordfenceLS\Text\Model_HTML::esc_html($title->title); ?></h2>
	<?php if ($title->helpURL !== null && $title->helpLink !== null): ?>
		<span class="wfls-hidden-xs"><a href="<?php echo esc_url($title->helpURL); ?>" target="_blank" rel="noopener noreferrer" class="wfls-help-link"><?php echo \WordfenceLS\Text\Model_HTML::esc_html($title->helpLink); ?> <i class="<?php echo (\WordfenceLS\Controller_WordfenceLS::shared()->should_use_core_font_awesome_styles() ? 'wf-fa wf-fa-external-link' : 'wfls-fa wfls-fa-external-link'); ?>" aria-hidden="true"></i></a></span>
	<?php endif; ?>
</div>modules/login-security/views/page/settings.php000064400000002743150755146440015634 0ustar00<?php
if (!defined('WORDFENCE_LS_VERSION')) { exit; }
?>
<div class="wfls-save-banner wfls-nowrap wfls-padding-add-right-responsive">
	<a href="#" id="wfls-cancel-changes" class="wfls-btn wfls-btn-sm wfls-btn-default wfls-disabled"><?php echo wp_kses(/* translators: word order may be reversed as long as HTML remains around "Changes" */ __('Cancel<span class="wfls-visible-sm-inline"> Changes</span>', 'wordfence'), array('span'=>array('class'=>array()))); ?></a>&nbsp;&nbsp;<a href="#" id="wfls-save-changes" class="wfls-btn wfls-btn-sm wfls-btn-primary wfls-disabled"><?php echo wp_kses(/* translators: word order may be reversed as long as HTML remains around "Changes" */ __('Save<span class="wfls-visible-sm-inline"> Changes</span>', 'wordfence'), array('span'=>array('class'=>array()))); ?></a>
</div>
<div id="wfls-settings" class="wfls-flex-row wfls-flex-row-wrappable wfls-flex-row-equal-heights">
	<!-- begin status content -->
	<div id="wfls-user-stats" class="wfls-flex-row wfls-flex-row-equal-heights wfls-flex-item-xs-100">
		<?php
			echo \WordfenceLS\Model_View::create('settings/user-stats', array(
				'counts' => \WordfenceLS\Controller_Users::shared()->get_detailed_user_counts_if_enabled(),
			))->render();
		?>
	</div>
	<!-- end status content -->
	<!-- begin options content -->
	<div id="wfls-options">
		<?php
		echo \WordfenceLS\Model_View::create('settings/options', array(
			'hasWoocommerce' => $hasWoocommerce
		))->render();
		?>
	</div>
	<!-- end options content -->
</div>modules/login-security/views/page/page.php000064400000002732150755146440014706 0ustar00<?php
if (!defined('WORDFENCE_LS_VERSION')) { exit; }

/**
 * @var array $sections The content tabs, each element is an array of the syntax array('tab' => Model_Tab instance, 'title' => Title instance, 'content' => HTML content). Required.
 */
?>
<?php do_action('wfls_activation_page_header'); ?>
<div class="wrap wordfence-ls">
	<?php
	if (\WordfenceLS\Controller_Permissions::shared()->can_manage_settings() && !\WordfenceLS\Controller_Settings::shared()->get_bool(\WordfenceLS\Controller_Settings::OPTION_DISMISSED_FRESH_INSTALL_MODAL) && !WORDFENCE_LS_FROM_CORE) {
		echo \WordfenceLS\Model_View::create('onboarding/standalone-header')->render();
	}
	?>
	<div class="wfls-container-fluid">
		<?php
		$tabs = array_map(function($t) { return $t['tab']; }, $sections);
		echo \WordfenceLS\Model_View::create('page/tabbar', array(
			'tabs' => $tabs,
		))->render();
		?>
		<div class="wfls-row">
			<div class="wfls-col-xs-12">
				<?php foreach ($sections as $s): ?>
				<div id="<?php echo esc_attr($s['tab']->id); ?>" class="wfls-tab-content" data-title="<?php echo esc_attr($s['tab']->pageTitle); ?>">
					<?php
					echo \WordfenceLS\Model_View::create('page/section-title', array(
							'title' => $s['title'],
					))->render();
					echo $s['content'];
					?>
				</div> <!-- end <?php echo \WordfenceLS\Text\Model_HTML::esc_html($s['tab']->id); ?> block -->
				<?php endforeach; ?>
			</div> <!-- end content block -->
		</div> <!-- end row -->
	</div> <!-- end container -->
</div>
modules/login-security/views/page/tabbar.php000064400000001365150755146440015226 0ustar00<?php
if (!defined('WORDFENCE_LS_VERSION')) { exit; }
/**
 * @var array $tabs An array of Tab instances. Required.
 */
?>
<div class="wfls-row wfls-tab-container">
	<div class="wfls-col-xs-12">
		<div class="wp-header-end"></div>
		<ul class="wfls-page-tabs">
			<li class="wfls-header-icon"></li>
			<?php foreach ($tabs as $t): ?>
				<?php
				$a = $t->a;
				if (!preg_match('/^https?:\/\//i', $a)) {
					$a = '#top#' . urlencode($a);
				}
				?>
				<li class="wfls-tab" id="wfls-tab-<?php echo esc_attr($t->id); ?>" data-target="<?php echo esc_attr($t->id); ?>" data-page-title="<?php echo esc_attr($t->pageTitle); ?>"><a href="<?php echo esc_url($a); ?>"><?php echo esc_html($t->tabTitle); ?></a></li>
			<?php endforeach; ?>
		</ul>
	</div>
</div>modules/login-security/js/jquery.colorbox.min.1722265817.js000064400000027005150755146440017200 0ustar00!function(d,s,l){var c,g,u,f,p,m,w,v,x,y,b,T,C,H,h,k,r,a,W,E,I,M,L,F,R,S,K,P,B,O,_,j,n,o={html:!1,photo:!1,iframe:!1,inline:!1,transition:"elastic",speed:300,fadeOut:300,width:!1,initialWidth:"600",innerWidth:!1,maxWidth:!1,height:!1,initialHeight:"450",innerHeight:!1,maxHeight:!1,scalePhotos:!0,scrolling:!0,opacity:.9,preloading:!0,className:!1,overlayClose:!0,escKey:!0,arrowKey:!0,top:!1,bottom:!1,left:!1,right:!1,fixed:!1,data:void 0,closeButton:!0,fastIframe:!0,open:!1,reposition:!0,loop:!0,slideshow:!1,slideshowAuto:!0,slideshowSpeed:2500,slideshowStart:"start slideshow",slideshowStop:"stop slideshow",photoRegex:/\.(gif|png|jp(e|g|eg)|bmp|ico|webp|jxr|svg)((#|\?).*)?$/i,retinaImage:!1,retinaUrl:!1,retinaSuffix:"@2x.$1",current:"image {current} of {total}",previous:"previous",next:"next",close:"close",xhrError:"This content failed to load.",imgError:"This image failed to load.",returnFocus:!0,trapFocus:!0,onOpen:!1,onLoad:!1,onComplete:!1,onCleanup:!1,onClosed:!1,rel:function(){return this.rel},href:function(){return d(this).attr("href")},title:function(){return this.title},createImg:function(){var i=new Image,t=d(this).data("cbox-img-attrs");return"object"==typeof t&&d.each(t,function(t,e){i[t]=e}),i},createIframe:function(){var i=s.createElement("iframe"),t=d(this).data("cbox-iframe-attrs");return"object"==typeof t&&d.each(t,function(t,e){i[t]=e}),"frameBorder"in i&&(i.frameBorder=0),"allowTransparency"in i&&(i.allowTransparency="true"),i.name=(new Date).getTime(),i.allowFullscreen=!0,i}},D="wflscolorbox",N="wflscbox",z=N+"Element",A=N+"_open",q=N+"_load",U=N+"_complete",$=N+"_cleanup",G=N+"_closed",Q=N+"_purge",J=d("<a/>"),V="div",X=0,Y={};function Z(t,e,i){var n=s.createElement(t);return e&&(n.id=N+e),i&&(n.style.cssText=i),d(n)}function tt(){return l.innerHeight?l.innerHeight:d(l).height()}function et(t,i){i!==Object(i)&&(i={}),this.cache={},this.el=t,this.value=function(t){var e;return void 0===this.cache[t]&&(void 0!==(e=d(this.el).attr("data-cbox-"+t))?this.cache[t]=e:void 0!==i[t]?this.cache[t]=i[t]:void 0!==o[t]&&(this.cache[t]=o[t])),this.cache[t]},this.get=function(t){var e=this.value(t);return d.isFunction(e)?e.call(this.el,this):e}}function it(t){var e=x.length,i=(S+t)%e;return i<0?e+i:i}function nt(t,e){return Math.round((/%/.test(t)?("x"===e?y.width():tt())/100:1)*parseInt(t,10))}function ot(t,e){return t.get("photo")||t.get("photoRegex").test(e)}function ht(t,e){return t.get("retinaUrl")&&1<l.devicePixelRatio?e.replace(t.get("photoRegex"),t.get("retinaSuffix")):e}function rt(t){"contains"in g[0]&&!g[0].contains(t.target)&&t.target!==c[0]&&(t.stopPropagation(),g.focus())}function at(t){at.str!==t&&(g.add(c).removeClass(at.str).addClass(t),at.str=t)}function st(t){d(s).trigger(t),J.triggerHandler(t)}var lt=function(){var t,e,i=N+"Slideshow_",n="click."+N;function o(){clearTimeout(e)}function h(){(I.get("loop")||x[S+1])&&(o(),e=setTimeout(j.next,I.get("slideshowSpeed")))}function r(){k.html(I.get("slideshowStop")).unbind(n).one(n,a),J.bind(U,h).bind(q,o),g.removeClass(i+"off").addClass(i+"on")}function a(){o(),J.unbind(U,h).unbind(q,o),k.html(I.get("slideshowStart")).unbind(n).one(n,function(){j.next(),r()}),g.removeClass(i+"on").addClass(i+"off")}function s(){t=!1,k.hide(),o(),J.unbind(U,h).unbind(q,o),g.removeClass(i+"off "+i+"on")}return function(){t?I.get("slideshow")||(J.unbind($,s),s()):I.get("slideshow")&&x[1]&&(t=!0,J.one($,s),I.get("slideshowAuto")?r():a(),k.show())}}();function dt(t){var e,i;if(!O){if(e=d(t).data(D),I=new et(t,e),i=I.get("rel"),S=0,i&&!1!==i&&"nofollow"!==i?(x=d("."+z).filter(function(){return new et(this,d.data(this,D)).get("rel")===i}),-1===(S=x.index(I.el))&&(x=x.add(I.el),S=x.length-1)):x=d(I.el),!P){P=B=!0,at(I.get("className")),g.css({visibility:"hidden",display:"block",opacity:""}),b=Z(V,"LoadedContent","width:0; height:0; overflow:hidden; visibility:hidden"),f.css({width:"",height:""}).append(b),M=p.height()+v.height()+f.outerHeight(!0)-f.height(),L=m.width()+w.width()+f.outerWidth(!0)-f.width(),F=b.outerHeight(!0),R=b.outerWidth(!0);var n=nt(I.get("initialWidth"),"x"),o=nt(I.get("initialHeight"),"y"),h=I.get("maxWidth"),r=I.get("maxHeight");I.w=Math.max((!1!==h?Math.min(n,nt(h,"x")):n)-R-L,0),I.h=Math.max((!1!==r?Math.min(o,nt(r,"y")):o)-F-M,0),b.css({width:"",height:I.h}),j.position(),st(A),I.get("onOpen"),E.add(H).hide(),g.focus(),I.get("trapFocus")&&s.addEventListener&&(s.addEventListener("focus",rt,!0),J.one(G,function(){s.removeEventListener("focus",rt,!0)})),I.get("returnFocus")&&J.one(G,function(){d(I.el).focus()})}var a=parseFloat(I.get("opacity"));c.css({opacity:a==a?a:"",cursor:I.get("overlayClose")?"pointer":"",visibility:"visible"}).show(),I.get("closeButton")?W.html(I.get("close")).appendTo(f):W.appendTo("<div/>"),function(){var t,e,i,n=j.prep,o=++X;K=!(B=!0),st(Q),st(q),I.get("onLoad"),I.h=I.get("height")?nt(I.get("height"),"y")-F-M:I.get("innerHeight")&&nt(I.get("innerHeight"),"y"),I.w=I.get("width")?nt(I.get("width"),"x")-R-L:I.get("innerWidth")&&nt(I.get("innerWidth"),"x"),I.mw=I.w,I.mh=I.h,I.get("maxWidth")&&(I.mw=nt(I.get("maxWidth"),"x")-R-L,I.mw=I.w&&I.w<I.mw?I.w:I.mw);I.get("maxHeight")&&(I.mh=nt(I.get("maxHeight"),"y")-F-M,I.mh=I.h&&I.h<I.mh?I.h:I.mh);if(t=I.get("href"),_=setTimeout(function(){C.show()},100),I.get("inline")){var h=d(t).eq(0);i=d("<div>").hide().insertBefore(h),J.one(Q,function(){i.replaceWith(h)}),n(h)}else I.get("iframe")?n(" "):I.get("html")?n(I.get("html")):ot(I,t)?(t=ht(I,t),K=I.get("createImg"),d(K).addClass(N+"Photo").bind("error."+N,function(){n(Z(V,"Error").html(I.get("imgError")))}).one("load",function(){o===X&&setTimeout(function(){var t;I.get("retinaImage")&&1<l.devicePixelRatio&&(K.height=K.height/l.devicePixelRatio,K.width=K.width/l.devicePixelRatio),I.get("scalePhotos")&&(e=function(){K.height-=K.height*t,K.width-=K.width*t},I.mw&&K.width>I.mw&&(t=(K.width-I.mw)/K.width,e()),I.mh&&K.height>I.mh&&(t=(K.height-I.mh)/K.height,e())),I.h&&(K.style.marginTop=Math.max(I.mh-K.height,0)/2+"px"),x[1]&&(I.get("loop")||x[S+1])&&(K.style.cursor="pointer",d(K).bind("click."+N,function(){j.next()})),K.style.width=K.width+"px",K.style.height=K.height+"px",n(K)},1)}),K.src=t):t&&T.load(t,I.get("data"),function(t,e){o===X&&n("error"===e?Z(V,"Error").html(I.get("xhrError")):d(this).contents())})}()}}function ct(){g||(n=!1,y=d(l),g=Z(V).attr({id:D,class:!1===d.support.opacity?N+"IE":"",role:"dialog",tabindex:"-1"}).hide(),c=Z(V,"Overlay").hide(),C=d([Z(V,"LoadingOverlay")[0],Z(V,"LoadingGraphic")[0]]),u=Z(V,"Wrapper"),f=Z(V,"Content").append(H=Z(V,"Title"),h=Z(V,"Current"),a=d('<button type="button"/>').attr({id:N+"Previous"}),r=d('<button type="button"/>').attr({id:N+"Next"}),k=d('<button type="button"/>').attr({id:N+"Slideshow"}),C),W=d('<button type="button"/>').attr({id:N+"Close"}),u.append(Z(V).append(Z(V,"TopLeft"),p=Z(V,"TopCenter"),Z(V,"TopRight")),Z(V,!1,"clear:left").append(m=Z(V,"MiddleLeft"),f,w=Z(V,"MiddleRight")),Z(V,!1,"clear:left").append(Z(V,"BottomLeft"),v=Z(V,"BottomCenter"),Z(V,"BottomRight"))).find("div div").css({float:"left"}),T=Z(V,!1,"position:absolute; width:9999px; visibility:hidden; display:none; max-width:none;"),E=r.add(a).add(h).add(k)),s.body&&!g.parent().length&&d(s.body).append(c,g.append(u,T))}d[D]||(d(ct),(j=d.fn[D]=d[D]=function(e,t){var i=this;return e=e||{},d.isFunction(i)&&(i=d("<a/>"),e.open=!0),i[0]&&(ct(),function(){function t(t){1<t.which||t.shiftKey||t.altKey||t.metaKey||t.ctrlKey||(t.preventDefault(),dt(this))}return!!g&&(n||(n=!0,r.click(function(){j.next()}),a.click(function(){j.prev()}),W.click(function(){j.close()}),c.click(function(){I.get("overlayClose")&&j.close()}),d(s).bind("keydown."+N,function(t){var e=t.keyCode;P&&I.get("escKey")&&27===e&&(t.preventDefault(),j.close()),P&&I.get("arrowKey")&&x[1]&&!t.altKey&&(37===e?(t.preventDefault(),a.click()):39===e&&(t.preventDefault(),r.click()))}),d.isFunction(d.fn.on)?d(s).on("click."+N,"."+z,t):d("."+z).live("click."+N,t)),!0)}()&&(t&&(e.onComplete=t),i.each(function(){var t=d.data(this,D)||{};d.data(this,D,d.extend(t,e))}).addClass(z),new et(i[0],e).get("open")&&dt(i[0]))),i}).position=function(e,t){var i,n,o,h=0,r=0,a=g.offset();function s(){p[0].style.width=v[0].style.width=f[0].style.width=parseInt(g[0].style.width,10)-L+"px",f[0].style.height=m[0].style.height=w[0].style.height=parseInt(g[0].style.height,10)-M+"px"}if(y.unbind("resize."+N),g.css({top:-9e4,left:-9e4}),n=y.scrollTop(),o=y.scrollLeft(),I.get("fixed")?(a.top-=n,a.left-=o,g.css({position:"fixed"})):(h=n,r=o,g.css({position:"absolute"})),!1!==I.get("right")?r+=Math.max(y.width()-I.w-R-L-nt(I.get("right"),"x"),0):!1!==I.get("left")?r+=nt(I.get("left"),"x"):r+=Math.round(Math.max(y.width()-I.w-R-L,0)/2),!1!==I.get("bottom")?h+=Math.max(tt()-I.h-F-M-nt(I.get("bottom"),"y"),0):!1!==I.get("top")?h+=nt(I.get("top"),"y"):h+=Math.round(Math.max(tt()-I.h-F-M,0)/2),g.css({top:a.top,left:a.left,visibility:"visible"}),u[0].style.width=u[0].style.height="9999px",i={width:I.w+R+L,height:I.h+F+M,top:h,left:r},e){var l=0;d.each(i,function(t){i[t]===Y[t]||(l=e)}),e=l}Y=i,e||g.css(i),g.dequeue().animate(i,{duration:e||0,complete:function(){s(),B=!1,u[0].style.width=I.w+R+L+"px",u[0].style.height=I.h+F+M+"px",I.get("reposition")&&setTimeout(function(){y.bind("resize."+N,j.position)},1),d.isFunction(t)&&t()},step:s})},j.resize=function(t){var e;P&&((t=t||{}).width&&(I.w=nt(t.width,"x")-R-L),t.innerWidth&&(I.w=nt(t.innerWidth,"x")),b.css({width:I.w}),t.height&&(I.h=nt(t.height,"y")-F-M),t.innerHeight&&(I.h=nt(t.innerHeight,"y")),t.innerHeight||t.height||(e=b.scrollTop(),b.css({height:"auto"}),I.h=b.height()),b.css({height:I.h}),e&&b.scrollTop(e),j.position("none"===I.get("transition")?0:I.get("speed")))},j.prep=function(t){if(P){var e,o="none"===I.get("transition")?0:I.get("speed");b.remove(),(b=Z(V,"LoadedContent").append(t)).hide().appendTo(T.show()).css({width:(I.w=I.w||b.width(),I.w=I.mw&&I.mw<I.w?I.mw:I.w,I.w),overflow:I.get("scrolling")?"auto":"hidden"}).css({height:(I.h=I.h||b.height(),I.h=I.mh&&I.mh<I.h?I.mh:I.h,I.h)}).prependTo(f),T.hide(),d(K).css({float:"none"}),at(I.get("className")),e=function(){var t,e,i=x.length;function n(){!1===d.support.opacity&&g[0].style.removeAttribute("filter")}P&&(e=function(){clearTimeout(_),C.hide(),st(U),I.get("onComplete")},H.html(I.get("title")).show(),b.show(),1<i?("string"==typeof I.get("current")&&h.html(I.get("current").replace("{current}",S+1).replace("{total}",i)).show(),r[I.get("loop")||S<i-1?"show":"hide"]().html(I.get("next")),a[I.get("loop")||S?"show":"hide"]().html(I.get("previous")),lt(),I.get("preloading")&&d.each([it(-1),it(1)],function(){var t=x[this],e=new et(t,d.data(t,D)),i=e.get("href");i&&ot(e,i)&&(i=ht(e,i),s.createElement("img").src=i)})):E.hide(),I.get("iframe")?(t=I.get("createIframe"),I.get("scrolling")||(t.scrolling="no"),d(t).attr({src:I.get("href"),class:N+"Iframe"}).one("load",e).appendTo(b),J.one(Q,function(){t.src="//about:blank"}),I.get("fastIframe")&&d(t).trigger("load")):e(),"fade"===I.get("transition")?g.fadeTo(o,1,n):n())},"fade"===I.get("transition")?g.fadeTo(o,0,function(){j.position(0,e)}):j.position(o,e)}},j.next=function(){!B&&x[1]&&(I.get("loop")||x[S+1])&&(S=it(1),dt(x[S]))},j.prev=function(){!B&&x[1]&&(I.get("loop")||S)&&(S=it(-1),dt(x[S]))},j.close=function(){P&&!O&&(P=!(O=!0),st($),I.get("onCleanup"),y.unbind("."+N),c.fadeTo(I.get("fadeOut")||0,0),g.stop().fadeTo(I.get("fadeOut")||0,0,function(){g.hide(),c.hide(),st(Q),b.remove(),setTimeout(function(){O=!1,st(G),I.get("onClosed")},1)}))},j.remove=function(){g&&(g.stop(),d[D].close(),g.stop(!1,!0).remove(),c.remove(),O=!1,g=null,d("."+z).removeData(D).removeClass(z),d(s).unbind("click."+N).unbind("keydown."+N))},j.element=function(){return d(I.el)},j.settings=o)}(jQuery,document,window);modules/login-security/js/jquery.tmpl.min.1722265817.js000064400000013743150755146440016331 0ustar00/*
 * jQuery Templates Plugin 1.0.0pre
 * http://github.com/jquery/jquery-tmpl
 * Requires jQuery 1.4.2
 *
 * Copyright Software Freedom Conservancy, Inc.
 * Dual licensed under the MIT or GPL Version 2 licenses.
 * http://jquery.org/license
 */
(function(a){var r=a.fn.domManip,d="_tmplitem",q=/^[^<]*(<[\w\W]+>)[^>]*$|\{\{\! /,b={},f={},e,p={key:0,data:{}},i=0,c=0,l=[];function g(g,d,h,e){var c={data:e||(e===0||e===false)?e:d?d.data:{},_wrap:d?d._wrap:null,tmpl:null,parent:d||null,nodes:[],calls:u,nest:w,wrap:x,html:v,update:t};g&&a.extend(c,g,{nodes:[],parent:d});if(h){c.tmpl=h;c._ctnt=c._ctnt||c.tmpl(a,c);c.key=++i;(l.length?f:b)[i]=c}return c}a.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(f,d){a.fn[f]=function(n){var g=[],i=a(n),k,h,m,l,j=this.length===1&&this[0].parentNode;e=b||{};if(j&&j.nodeType===11&&j.childNodes.length===1&&i.length===1){i[d](this[0]);g=this}else{for(h=0,m=i.length;h<m;h++){c=h;k=(h>0?this.clone(true):this).get();a(i[h])[d](k);g=g.concat(k)}c=0;g=this.pushStack(g,f,i.selector)}l=e;e=null;a.tmpl.complete(l);return g}});a.fn.extend({tmpl:function(d,c,b){return a.tmpl(this[0],d,c,b)},tmplItem:function(){return a.tmplItem(this[0])},template:function(b){return a.template(b,this[0])},domManip:function(d,m,k){if(d[0]&&a.isArray(d[0])){var g=a.makeArray(arguments),h=d[0],j=h.length,i=0,f;while(i<j&&!(f=a.data(h[i++],"tmplItem")));if(f&&c)g[2]=function(b){a.tmpl.afterManip(this,b,k)};r.apply(this,g)}else r.apply(this,arguments);c=0;!e&&a.tmpl.complete(b);return this}});a.extend({tmpl:function(d,h,e,c){var i,k=!c;if(k){c=p;d=a.template[d]||a.template(null,d);f={}}else if(!d){d=c.tmpl;b[c.key]=c;c.nodes=[];c.wrapped&&n(c,c.wrapped);return a(j(c,null,c.tmpl(a,c)))}if(!d)return[];if(typeof h==="function")h=h.call(c||{});e&&e.wrapped&&n(e,e.wrapped);i=a.isArray(h)?a.map(h,function(a){return a?g(e,c,d,a):null}):[g(e,c,d,h)];return k?a(j(c,null,i)):i},tmplItem:function(b){var c;if(b instanceof a)b=b[0];while(b&&b.nodeType===1&&!(c=a.data(b,"tmplItem"))&&(b=b.parentNode));return c||p},template:function(c,b){if(b){if(typeof b==="string")b=o(b);else if(b instanceof a)b=b[0]||{};if(b.nodeType)b=a.data(b,"tmpl")||a.data(b,"tmpl",o(b.innerHTML));return typeof c==="string"?(a.template[c]=b):b}return c?typeof c!=="string"?a.template(null,c):a.template[c]||a.template(null,q.test(c)?c:a(c)):null},encode:function(a){return(""+a).split("<").join("&lt;").split(">").join("&gt;").split('"').join("&#34;").split("'").join("&#39;")}});a.extend(a.tmpl,{tag:{tmpl:{_default:{$2:"null"},open:"if($notnull_1){__=__.concat($item.nest($1,$2));}"},wrap:{_default:{$2:"null"},open:"$item.calls(__,$1,$2);__=[];",close:"call=$item.calls();__=call._.concat($item.wrap(call,__));"},each:{_default:{$2:"$index, $value"},open:"if($notnull_1){$.each($1a,function($2){with(this){",close:"}});}"},"if":{open:"if(($notnull_1) && $1a){",close:"}"},"else":{_default:{$1:"true"},open:"}else if(($notnull_1) && $1a){"},html:{open:"if($notnull_1){__.push($1a);}"},"=":{_default:{$1:"$data"},open:"if($notnull_1){__.push($.encode($1a));}"},"!":{open:""}},complete:function(){b={}},afterManip:function(f,b,d){var e=b.nodeType===11?a.makeArray(b.childNodes):b.nodeType===1?[b]:[];d.call(f,b);m(e);c++}});function j(e,g,f){var b,c=f?a.map(f,function(a){return typeof a==="string"?e.key?a.replace(/(<\w+)(?=[\s>])(?![^>]*_tmplitem)([^>]*)/g,"$1 "+d+'="'+e.key+'" $2'):a:j(a,e,a._ctnt)}):e;if(g)return c;c=c.join("");c.replace(/^\s*([^<\s][^<]*)?(<[\w\W]+>)([^>]*[^>\s])?\s*$/,function(f,c,e,d){b=a(e).get();m(b);if(c)b=k(c).concat(b);if(d)b=b.concat(k(d))});return b?b:k(c)}function k(c){var b=document.createElement("div");b.innerHTML=c;return a.makeArray(b.childNodes)}function o(b){return new Function("jQuery","$item","var $=jQuery,call,__=[],$data=$item.data;with($data){__.push('"+a.trim(b).replace(/([\\'])/g,"\\$1").replace(/[\r\t\n]/g," ").replace(/\$\{([^\}]*)\}/g,"{{= $1}}").replace(/\{\{(\/?)(\w+|.)(?:\(((?:[^\}]|\}(?!\}))*?)?\))?(?:\s+(.*?)?)?(\(((?:[^\}]|\}(?!\}))*?)\))?\s*\}\}/g,function(m,l,k,g,b,c,d){var j=a.tmpl.tag[k],i,e,f;if(!j)throw"Unknown template tag: "+k;i=j._default||[];if(c&&!/\w$/.test(b)){b+=c;c=""}if(b){b=h(b);d=d?","+h(d)+")":c?")":"";e=c?b.indexOf(".")>-1?b+h(c):"("+b+").call($item"+d:b;f=c?e:"(typeof("+b+")==='function'?("+b+").call($item):("+b+"))"}else f=e=i.$1||"null";g=h(g);return"');"+j[l?"close":"open"].split("$notnull_1").join(b?"typeof("+b+")!=='undefined' && ("+b+")!=null":"true").split("$1a").join(f).split("$1").join(e).split("$2").join(g||i.$2||"")+"__.push('"})+"');}return __;")}function n(c,b){c._wrap=j(c,true,a.isArray(b)?b:[q.test(b)?b:a(b).html()]).join("")}function h(a){return a?a.replace(/\\'/g,"'").replace(/\\\\/g,"\\"):null}function s(b){var a=document.createElement("div");a.appendChild(b.cloneNode(true));return a.innerHTML}function m(o){var n="_"+c,k,j,l={},e,p,h;for(e=0,p=o.length;e<p;e++){if((k=o[e]).nodeType!==1)continue;j=k.getElementsByTagName("*");for(h=j.length-1;h>=0;h--)m(j[h]);m(k)}function m(j){var p,h=j,k,e,m;if(m=j.getAttribute(d)){while(h.parentNode&&(h=h.parentNode).nodeType===1&&!(p=h.getAttribute(d)));if(p!==m){h=h.parentNode?h.nodeType===11?0:h.getAttribute(d)||0:0;if(!(e=b[m])){e=f[m];e=g(e,b[h]||f[h]);e.key=++i;b[i]=e}c&&o(m)}j.removeAttribute(d)}else if(c&&(e=a.data(j,"tmplItem"))){o(e.key);b[e.key]=e;h=a.data(j.parentNode,"tmplItem");h=h?h.key:0}if(e){k=e;while(k&&k.key!=h){k.nodes.push(j);k=k.parent}delete e._ctnt;delete e._wrap;a.data(j,"tmplItem",e)}function o(a){a=a+n;e=l[a]=l[a]||g(e,b[e.parent.key+n]||e.parent)}}}function u(a,d,c,b){if(!a)return l.pop();l.push({_:a,tmpl:d,item:this,data:c,options:b})}function w(d,c,b){return a.tmpl(a.template(d),c,b,this)}function x(b,d){var c=b.options||{};c.wrapped=d;return a.tmpl(a.template(b.tmpl),b.data,c,b.item)}function v(d,c){var b=this._wrap;return a.map(a(a.isArray(b)?b.join(""):b).filter(d||"*"),function(a){return c?a.innerText||a.textContent:a.outerHTML||s(a)})}function t(){var b=this.nodes;a.tmpl(null,null,null,this).insertBefore(b[0]);a(b).remove()}})(jQuery);modules/login-security/js/jquery.colorbox.1722265817.js000064400000070771150755146440016426 0ustar00/*!
	Colorbox 1.6.4
	license: MIT
	http://www.jacklmoore.com/colorbox
*/
(function ($, document, window) {
	var
	// Default settings object.
	// See http://jacklmoore.com/colorbox for details.
	defaults = {
		// data sources
		html: false,
		photo: false,
		iframe: false,
		inline: false,

		// behavior and appearance
		transition: "elastic",
		speed: 300,
		fadeOut: 300,
		width: false,
		initialWidth: "600",
		innerWidth: false,
		maxWidth: false,
		height: false,
		initialHeight: "450",
		innerHeight: false,
		maxHeight: false,
		scalePhotos: true,
		scrolling: true,
		opacity: 0.9,
		preloading: true,
		className: false,
		overlayClose: true,
		escKey: true,
		arrowKey: true,
		top: false,
		bottom: false,
		left: false,
		right: false,
		fixed: false,
		data: undefined,
		closeButton: true,
		fastIframe: true,
		open: false,
		reposition: true,
		loop: true,
		slideshow: false,
		slideshowAuto: true,
		slideshowSpeed: 2500,
		slideshowStart: "start slideshow",
		slideshowStop: "stop slideshow",
		photoRegex: /\.(gif|png|jp(e|g|eg)|bmp|ico|webp|jxr|svg)((#|\?).*)?$/i,

		// alternate image paths for high-res displays
		retinaImage: false,
		retinaUrl: false,
		retinaSuffix: '@2x.$1',

		// internationalization
		current: "image {current} of {total}",
		previous: "previous",
		next: "next",
		close: "close",
		xhrError: "This content failed to load.",
		imgError: "This image failed to load.",

		// accessbility
		returnFocus: true,
		trapFocus: true,

		// callbacks
		onOpen: false,
		onLoad: false,
		onComplete: false,
		onCleanup: false,
		onClosed: false,

		rel: function() {
			return this.rel;
		},
		href: function() {
			// using this.href would give the absolute url, when the href may have been inteded as a selector (e.g. '#container')
			return $(this).attr('href');
		},
		title: function() {
			return this.title;
		},
		createImg: function() {
			var img = new Image();
			var attrs = $(this).data('cbox-img-attrs');

			if (typeof attrs === 'object') {
				$.each(attrs, function(key, val){
					img[key] = val;
				});
			}

			return img;
		},
		createIframe: function() {
			var iframe = document.createElement('iframe');
			var attrs = $(this).data('cbox-iframe-attrs');

			if (typeof attrs === 'object') {
				$.each(attrs, function(key, val){
					iframe[key] = val;
				});
			}

			if ('frameBorder' in iframe) {
				iframe.frameBorder = 0;
			}
			if ('allowTransparency' in iframe) {
				iframe.allowTransparency = "true";
			}
			iframe.name = (new Date()).getTime(); // give the iframe a unique name to prevent caching
			iframe.allowFullscreen = true;

			return iframe;
		}
	},

	// Abstracting the HTML and event identifiers for easy rebranding
	colorbox = 'wflscolorbox',
	prefix = 'wflscbox',
	boxElement = prefix + 'Element',

	// Events
	event_open = prefix + '_open',
	event_load = prefix + '_load',
	event_complete = prefix + '_complete',
	event_cleanup = prefix + '_cleanup',
	event_closed = prefix + '_closed',
	event_purge = prefix + '_purge',

	// Cached jQuery Object Variables
	$overlay,
	$box,
	$wrap,
	$content,
	$topBorder,
	$leftBorder,
	$rightBorder,
	$bottomBorder,
	$related,
	$window,
	$loaded,
	$loadingBay,
	$loadingOverlay,
	$title,
	$current,
	$slideshow,
	$next,
	$prev,
	$close,
	$groupControls,
	$events = $('<a/>'), // $({}) would be preferred, but there is an issue with jQuery 1.4.2

	// Variables for cached values or use across multiple functions
	settings,
	interfaceHeight,
	interfaceWidth,
	loadedHeight,
	loadedWidth,
	index,
	photo,
	open,
	active,
	closing,
	loadingTimer,
	publicMethod,
	div = "div",
	requests = 0,
	previousCSS = {},
	init;

	// ****************
	// HELPER FUNCTIONS
	// ****************

	// Convenience function for creating new jQuery objects
	function $tag(tag, id, css) {
		var element = document.createElement(tag);

		if (id) {
			element.id = prefix + id;
		}

		if (css) {
			element.style.cssText = css;
		}

		return $(element);
	}

	// Get the window height using innerHeight when available to avoid an issue with iOS
	// http://bugs.jquery.com/ticket/6724
	function winheight() {
		return window.innerHeight ? window.innerHeight : $(window).height();
	}

	function Settings(element, options) {
		if (options !== Object(options)) {
			options = {};
		}

		this.cache = {};
		this.el = element;

		this.value = function(key) {
			var dataAttr;

			if (this.cache[key] === undefined) {
				dataAttr = $(this.el).attr('data-cbox-'+key);

				if (dataAttr !== undefined) {
					this.cache[key] = dataAttr;
				} else if (options[key] !== undefined) {
					this.cache[key] = options[key];
				} else if (defaults[key] !== undefined) {
					this.cache[key] = defaults[key];
				}
			}

			return this.cache[key];
		};

		this.get = function(key) {
			var value = this.value(key);
			return $.isFunction(value) ? value.call(this.el, this) : value;
		};
	}

	// Determine the next and previous members in a group.
	function getIndex(increment) {
		var
		max = $related.length,
		newIndex = (index + increment) % max;

		return (newIndex < 0) ? max + newIndex : newIndex;
	}

	// Convert '%' and 'px' values to integers
	function setSize(size, dimension) {
		return Math.round((/%/.test(size) ? ((dimension === 'x' ? $window.width() : winheight()) / 100) : 1) * parseInt(size, 10));
	}

	// Checks an href to see if it is a photo.
	// There is a force photo option (photo: true) for hrefs that cannot be matched by the regex.
	function isImage(settings, url) {
		return settings.get('photo') || settings.get('photoRegex').test(url);
	}

	function retinaUrl(settings, url) {
		return settings.get('retinaUrl') && window.devicePixelRatio > 1 ? url.replace(settings.get('photoRegex'), settings.get('retinaSuffix')) : url;
	}

	function trapFocus(e) {
		if ('contains' in $box[0] && !$box[0].contains(e.target) && e.target !== $overlay[0]) {
			e.stopPropagation();
			$box.focus();
		}
	}

	function setClass(str) {
		if (setClass.str !== str) {
			$box.add($overlay).removeClass(setClass.str).addClass(str);
			setClass.str = str;
		}
	}

	function getRelated(rel) {
		index = 0;

		if (rel && rel !== false && rel !== 'nofollow') {
			$related = $('.' + boxElement).filter(function () {
				var options = $.data(this, colorbox);
				var settings = new Settings(this, options);
				return (settings.get('rel') === rel);
			});
			index = $related.index(settings.el);

			// Check direct calls to Colorbox.
			if (index === -1) {
				$related = $related.add(settings.el);
				index = $related.length - 1;
			}
		} else {
			$related = $(settings.el);
		}
	}

	function trigger(event) {
		// for external use
		$(document).trigger(event);
		// for internal use
		$events.triggerHandler(event);
	}

	var slideshow = (function(){
		var active,
			className = prefix + "Slideshow_",
			click = "click." + prefix,
			timeOut;

		function clear () {
			clearTimeout(timeOut);
		}

		function set() {
			if (settings.get('loop') || $related[index + 1]) {
				clear();
				timeOut = setTimeout(publicMethod.next, settings.get('slideshowSpeed'));
			}
		}

		function start() {
			$slideshow
				.html(settings.get('slideshowStop'))
				.unbind(click)
				.one(click, stop);

			$events
				.bind(event_complete, set)
				.bind(event_load, clear);

			$box.removeClass(className + "off").addClass(className + "on");
		}

		function stop() {
			clear();

			$events
				.unbind(event_complete, set)
				.unbind(event_load, clear);

			$slideshow
				.html(settings.get('slideshowStart'))
				.unbind(click)
				.one(click, function () {
					publicMethod.next();
					start();
				});

			$box.removeClass(className + "on").addClass(className + "off");
		}

		function reset() {
			active = false;
			$slideshow.hide();
			clear();
			$events
				.unbind(event_complete, set)
				.unbind(event_load, clear);
			$box.removeClass(className + "off " + className + "on");
		}

		return function(){
			if (active) {
				if (!settings.get('slideshow')) {
					$events.unbind(event_cleanup, reset);
					reset();
				}
			} else {
				if (settings.get('slideshow') && $related[1]) {
					active = true;
					$events.one(event_cleanup, reset);
					if (settings.get('slideshowAuto')) {
						start();
					} else {
						stop();
					}
					$slideshow.show();
				}
			}
		};

	}());


	function launch(element) {
		var options;

		if (!closing) {

			options = $(element).data(colorbox);

			settings = new Settings(element, options);

			getRelated(settings.get('rel'));

			if (!open) {
				open = active = true; // Prevents the page-change action from queuing up if the visitor holds down the left or right keys.

				setClass(settings.get('className'));

				// Show colorbox so the sizes can be calculated in older versions of jQuery
				$box.css({visibility:'hidden', display:'block', opacity:''});

				$loaded = $tag(div, 'LoadedContent', 'width:0; height:0; overflow:hidden; visibility:hidden');
				$content.css({width:'', height:''}).append($loaded);

				// Cache values needed for size calculations
				interfaceHeight = $topBorder.height() + $bottomBorder.height() + $content.outerHeight(true) - $content.height();
				interfaceWidth = $leftBorder.width() + $rightBorder.width() + $content.outerWidth(true) - $content.width();
				loadedHeight = $loaded.outerHeight(true);
				loadedWidth = $loaded.outerWidth(true);

				// Opens inital empty Colorbox prior to content being loaded.
				var initialWidth = setSize(settings.get('initialWidth'), 'x');
				var initialHeight = setSize(settings.get('initialHeight'), 'y');
				var maxWidth = settings.get('maxWidth');
				var maxHeight = settings.get('maxHeight');

				settings.w = Math.max((maxWidth !== false ? Math.min(initialWidth, setSize(maxWidth, 'x')) : initialWidth) - loadedWidth - interfaceWidth, 0);
				settings.h = Math.max((maxHeight !== false ? Math.min(initialHeight, setSize(maxHeight, 'y')) : initialHeight) - loadedHeight - interfaceHeight, 0);

				$loaded.css({width:'', height:settings.h});
				publicMethod.position();

				trigger(event_open);
				settings.get('onOpen');

				$groupControls.add($title).hide();

				$box.focus();

				if (settings.get('trapFocus')) {
					// Confine focus to the modal
					// Uses event capturing that is not supported in IE8-
					if (document.addEventListener) {

						document.addEventListener('focus', trapFocus, true);

						$events.one(event_closed, function () {
							document.removeEventListener('focus', trapFocus, true);
						});
					}
				}

				// Return focus on closing
				if (settings.get('returnFocus')) {
					$events.one(event_closed, function () {
						$(settings.el).focus();
					});
				}
			}

			var opacity = parseFloat(settings.get('opacity'));
			$overlay.css({
				opacity: opacity === opacity ? opacity : '',
				cursor: settings.get('overlayClose') ? 'pointer' : '',
				visibility: 'visible'
			}).show();

			if (settings.get('closeButton')) {
				$close.html(settings.get('close')).appendTo($content);
			} else {
				$close.appendTo('<div/>'); // replace with .detach() when dropping jQuery < 1.4
			}

			load();
		}
	}

	// Colorbox's markup needs to be added to the DOM prior to being called
	// so that the browser will go ahead and load the CSS background images.
	function appendHTML() {
		if (!$box) {
			init = false;
			$window = $(window);
			$box = $tag(div).attr({
				id: colorbox,
				'class': $.support.opacity === false ? prefix + 'IE' : '', // class for optional IE8 & lower targeted CSS.
				role: 'dialog',
				tabindex: '-1'
			}).hide();
			$overlay = $tag(div, "Overlay").hide();
			$loadingOverlay = $([$tag(div, "LoadingOverlay")[0],$tag(div, "LoadingGraphic")[0]]);
			$wrap = $tag(div, "Wrapper");
			$content = $tag(div, "Content").append(
				$title = $tag(div, "Title"),
				$current = $tag(div, "Current"),
				$prev = $('<button type="button"/>').attr({id:prefix+'Previous'}),
				$next = $('<button type="button"/>').attr({id:prefix+'Next'}),
				$slideshow = $('<button type="button"/>').attr({id:prefix+'Slideshow'}),
				$loadingOverlay
			);

			$close = $('<button type="button"/>').attr({id:prefix+'Close'});

			$wrap.append( // The 3x3 Grid that makes up Colorbox
				$tag(div).append(
					$tag(div, "TopLeft"),
					$topBorder = $tag(div, "TopCenter"),
					$tag(div, "TopRight")
				),
				$tag(div, false, 'clear:left').append(
					$leftBorder = $tag(div, "MiddleLeft"),
					$content,
					$rightBorder = $tag(div, "MiddleRight")
				),
				$tag(div, false, 'clear:left').append(
					$tag(div, "BottomLeft"),
					$bottomBorder = $tag(div, "BottomCenter"),
					$tag(div, "BottomRight")
				)
			).find('div div').css({'float': 'left'});

			$loadingBay = $tag(div, false, 'position:absolute; width:9999px; visibility:hidden; display:none; max-width:none;');

			$groupControls = $next.add($prev).add($current).add($slideshow);
		}
		if (document.body && !$box.parent().length) {
			$(document.body).append($overlay, $box.append($wrap, $loadingBay));
		}
	}

	// Add Colorbox's event bindings
	function addBindings() {
		function clickHandler(e) {
			// ignore non-left-mouse-clicks and clicks modified with ctrl / command, shift, or alt.
			// See: http://jacklmoore.com/notes/click-events/
			if (!(e.which > 1 || e.shiftKey || e.altKey || e.metaKey || e.ctrlKey)) {
				e.preventDefault();
				launch(this);
			}
		}

		if ($box) {
			if (!init) {
				init = true;

				// Anonymous functions here keep the public method from being cached, thereby allowing them to be redefined on the fly.
				$next.click(function () {
					publicMethod.next();
				});
				$prev.click(function () {
					publicMethod.prev();
				});
				$close.click(function () {
					publicMethod.close();
				});
				$overlay.click(function () {
					if (settings.get('overlayClose')) {
						publicMethod.close();
					}
				});

				// Key Bindings
				$(document).bind('keydown.' + prefix, function (e) {
					var key = e.keyCode;
					if (open && settings.get('escKey') && key === 27) {
						e.preventDefault();
						publicMethod.close();
					}
					if (open && settings.get('arrowKey') && $related[1] && !e.altKey) {
						if (key === 37) {
							e.preventDefault();
							$prev.click();
						} else if (key === 39) {
							e.preventDefault();
							$next.click();
						}
					}
				});

				if ($.isFunction($.fn.on)) {
					// For jQuery 1.7+
					$(document).on('click.'+prefix, '.'+boxElement, clickHandler);
				} else {
					// For jQuery 1.3.x -> 1.6.x
					// This code is never reached in jQuery 1.9, so do not contact me about 'live' being removed.
					// This is not here for jQuery 1.9, it's here for legacy users.
					$('.'+boxElement).live('click.'+prefix, clickHandler);
				}
			}
			return true;
		}
		return false;
	}

	// Don't do anything if Colorbox already exists.
	if ($[colorbox]) {
		return;
	}

	// Append the HTML when the DOM loads
	$(appendHTML);


	// ****************
	// PUBLIC FUNCTIONS
	// Usage format: $.colorbox.close();
	// Usage from within an iframe: parent.jQuery.colorbox.close();
	// ****************

	publicMethod = $.fn[colorbox] = $[colorbox] = function (options, callback) {
		var settings;
		var $obj = this;

		options = options || {};

		if ($.isFunction($obj)) { // assume a call to $.colorbox
			$obj = $('<a/>');
			options.open = true;
		}

		if (!$obj[0]) { // colorbox being applied to empty collection
			return $obj;
		}

		appendHTML();

		if (addBindings()) {

			if (callback) {
				options.onComplete = callback;
			}

			$obj.each(function () {
				var old = $.data(this, colorbox) || {};
				$.data(this, colorbox, $.extend(old, options));
			}).addClass(boxElement);

			settings = new Settings($obj[0], options);

			if (settings.get('open')) {
				launch($obj[0]);
			}
		}

		return $obj;
	};

	publicMethod.position = function (speed, loadedCallback) {
		var
		css,
		top = 0,
		left = 0,
		offset = $box.offset(),
		scrollTop,
		scrollLeft;

		$window.unbind('resize.' + prefix);

		// remove the modal so that it doesn't influence the document width/height
		$box.css({top: -9e4, left: -9e4});

		scrollTop = $window.scrollTop();
		scrollLeft = $window.scrollLeft();

		if (settings.get('fixed')) {
			offset.top -= scrollTop;
			offset.left -= scrollLeft;
			$box.css({position: 'fixed'});
		} else {
			top = scrollTop;
			left = scrollLeft;
			$box.css({position: 'absolute'});
		}

		// keeps the top and left positions within the browser's viewport.
		if (settings.get('right') !== false) {
			left += Math.max($window.width() - settings.w - loadedWidth - interfaceWidth - setSize(settings.get('right'), 'x'), 0);
		} else if (settings.get('left') !== false) {
			left += setSize(settings.get('left'), 'x');
		} else {
			left += Math.round(Math.max($window.width() - settings.w - loadedWidth - interfaceWidth, 0) / 2);
		}

		if (settings.get('bottom') !== false) {
			top += Math.max(winheight() - settings.h - loadedHeight - interfaceHeight - setSize(settings.get('bottom'), 'y'), 0);
		} else if (settings.get('top') !== false) {
			top += setSize(settings.get('top'), 'y');
		} else {
			top += Math.round(Math.max(winheight() - settings.h - loadedHeight - interfaceHeight, 0) / 2);
		}

		$box.css({top: offset.top, left: offset.left, visibility:'visible'});

		// this gives the wrapper plenty of breathing room so it's floated contents can move around smoothly,
		// but it has to be shrank down around the size of div#colorbox when it's done.  If not,
		// it can invoke an obscure IE bug when using iframes.
		$wrap[0].style.width = $wrap[0].style.height = "9999px";

		function modalDimensions() {
			$topBorder[0].style.width = $bottomBorder[0].style.width = $content[0].style.width = (parseInt($box[0].style.width,10) - interfaceWidth)+'px';
			$content[0].style.height = $leftBorder[0].style.height = $rightBorder[0].style.height = (parseInt($box[0].style.height,10) - interfaceHeight)+'px';
		}

		css = {width: settings.w + loadedWidth + interfaceWidth, height: settings.h + loadedHeight + interfaceHeight, top: top, left: left};

		// setting the speed to 0 if the content hasn't changed size or position
		if (speed) {
			var tempSpeed = 0;
			$.each(css, function(i){
				if (css[i] !== previousCSS[i]) {
					tempSpeed = speed;
					return;
				}
			});
			speed = tempSpeed;
		}

		previousCSS = css;

		if (!speed) {
			$box.css(css);
		}

		$box.dequeue().animate(css, {
			duration: speed || 0,
			complete: function () {
				modalDimensions();

				active = false;

				// shrink the wrapper down to exactly the size of colorbox to avoid a bug in IE's iframe implementation.
				$wrap[0].style.width = (settings.w + loadedWidth + interfaceWidth) + "px";
				$wrap[0].style.height = (settings.h + loadedHeight + interfaceHeight) + "px";

				if (settings.get('reposition')) {
					setTimeout(function () {  // small delay before binding onresize due to an IE8 bug.
						$window.bind('resize.' + prefix, publicMethod.position);
					}, 1);
				}

				if ($.isFunction(loadedCallback)) {
					loadedCallback();
				}
			},
			step: modalDimensions
		});
	};

	publicMethod.resize = function (options) {
		var scrolltop;

		if (open) {
			options = options || {};

			if (options.width) {
				settings.w = setSize(options.width, 'x') - loadedWidth - interfaceWidth;
			}

			if (options.innerWidth) {
				settings.w = setSize(options.innerWidth, 'x');
			}

			$loaded.css({width: settings.w});

			if (options.height) {
				settings.h = setSize(options.height, 'y') - loadedHeight - interfaceHeight;
			}

			if (options.innerHeight) {
				settings.h = setSize(options.innerHeight, 'y');
			}

			if (!options.innerHeight && !options.height) {
				scrolltop = $loaded.scrollTop();
				$loaded.css({height: "auto"});
				settings.h = $loaded.height();
			}

			$loaded.css({height: settings.h});

			if(scrolltop) {
				$loaded.scrollTop(scrolltop);
			}

			publicMethod.position(settings.get('transition') === "none" ? 0 : settings.get('speed'));
		}
	};

	publicMethod.prep = function (object) {
		if (!open) {
			return;
		}

		var callback, speed = settings.get('transition') === "none" ? 0 : settings.get('speed');

		$loaded.remove();

		$loaded = $tag(div, 'LoadedContent').append(object);

		function getWidth() {
			settings.w = settings.w || $loaded.width();
			settings.w = settings.mw && settings.mw < settings.w ? settings.mw : settings.w;
			return settings.w;
		}
		function getHeight() {
			settings.h = settings.h || $loaded.height();
			settings.h = settings.mh && settings.mh < settings.h ? settings.mh : settings.h;
			return settings.h;
		}

		$loaded.hide()
		.appendTo($loadingBay.show())// content has to be appended to the DOM for accurate size calculations.
		.css({width: getWidth(), overflow: settings.get('scrolling') ? 'auto' : 'hidden'})
		.css({height: getHeight()})// sets the height independently from the width in case the new width influences the value of height.
		.prependTo($content);

		$loadingBay.hide();

		// floating the IMG removes the bottom line-height and fixed a problem where IE miscalculates the width of the parent element as 100% of the document width.

		$(photo).css({'float': 'none'});

		setClass(settings.get('className'));

		callback = function () {
			var total = $related.length,
				iframe,
				complete;

			if (!open) {
				return;
			}

			function removeFilter() { // Needed for IE8 in versions of jQuery prior to 1.7.2
				if ($.support.opacity === false) {
					$box[0].style.removeAttribute('filter');
				}
			}

			complete = function () {
				clearTimeout(loadingTimer);
				$loadingOverlay.hide();
				trigger(event_complete);
				settings.get('onComplete');
			};


			$title.html(settings.get('title')).show();
			$loaded.show();

			if (total > 1) { // handle grouping
				if (typeof settings.get('current') === "string") {
					$current.html(settings.get('current').replace('{current}', index + 1).replace('{total}', total)).show();
				}

				$next[(settings.get('loop') || index < total - 1) ? "show" : "hide"]().html(settings.get('next'));
				$prev[(settings.get('loop') || index) ? "show" : "hide"]().html(settings.get('previous'));

				slideshow();

				// Preloads images within a rel group
				if (settings.get('preloading')) {
					$.each([getIndex(-1), getIndex(1)], function(){
						var img,
							i = $related[this],
							settings = new Settings(i, $.data(i, colorbox)),
							src = settings.get('href');

						if (src && isImage(settings, src)) {
							src = retinaUrl(settings, src);
							img = document.createElement('img');
							img.src = src;
						}
					});
				}
			} else {
				$groupControls.hide();
			}

			if (settings.get('iframe')) {

				iframe = settings.get('createIframe');

				if (!settings.get('scrolling')) {
					iframe.scrolling = "no";
				}

				$(iframe)
					.attr({
						src: settings.get('href'),
						'class': prefix + 'Iframe'
					})
					.one('load', complete)
					.appendTo($loaded);

				$events.one(event_purge, function () {
					iframe.src = "//about:blank";
				});

				if (settings.get('fastIframe')) {
					$(iframe).trigger('load');
				}
			} else {
				complete();
			}

			if (settings.get('transition') === 'fade') {
				$box.fadeTo(speed, 1, removeFilter);
			} else {
				removeFilter();
			}
		};

		if (settings.get('transition') === 'fade') {
			$box.fadeTo(speed, 0, function () {
				publicMethod.position(0, callback);
			});
		} else {
			publicMethod.position(speed, callback);
		}
	};

	function load () {
		var href, setResize, prep = publicMethod.prep, $inline, request = ++requests;

		active = true;

		photo = false;

		trigger(event_purge);
		trigger(event_load);
		settings.get('onLoad');

		settings.h = settings.get('height') ?
				setSize(settings.get('height'), 'y') - loadedHeight - interfaceHeight :
				settings.get('innerHeight') && setSize(settings.get('innerHeight'), 'y');

		settings.w = settings.get('width') ?
				setSize(settings.get('width'), 'x') - loadedWidth - interfaceWidth :
				settings.get('innerWidth') && setSize(settings.get('innerWidth'), 'x');

		// Sets the minimum dimensions for use in image scaling
		settings.mw = settings.w;
		settings.mh = settings.h;

		// Re-evaluate the minimum width and height based on maxWidth and maxHeight values.
		// If the width or height exceed the maxWidth or maxHeight, use the maximum values instead.
		if (settings.get('maxWidth')) {
			settings.mw = setSize(settings.get('maxWidth'), 'x') - loadedWidth - interfaceWidth;
			settings.mw = settings.w && settings.w < settings.mw ? settings.w : settings.mw;
		}
		if (settings.get('maxHeight')) {
			settings.mh = setSize(settings.get('maxHeight'), 'y') - loadedHeight - interfaceHeight;
			settings.mh = settings.h && settings.h < settings.mh ? settings.h : settings.mh;
		}

		href = settings.get('href');

		loadingTimer = setTimeout(function () {
			$loadingOverlay.show();
		}, 100);

		if (settings.get('inline')) {
			var $target = $(href).eq(0);
			// Inserts an empty placeholder where inline content is being pulled from.
			// An event is bound to put inline content back when Colorbox closes or loads new content.
			$inline = $('<div>').hide().insertBefore($target);

			$events.one(event_purge, function () {
				$inline.replaceWith($target);
			});

			prep($target);
		} else if (settings.get('iframe')) {
			// IFrame element won't be added to the DOM until it is ready to be displayed,
			// to avoid problems with DOM-ready JS that might be trying to run in that iframe.
			prep(" ");
		} else if (settings.get('html')) {
			prep(settings.get('html'));
		} else if (isImage(settings, href)) {

			href = retinaUrl(settings, href);

			photo = settings.get('createImg');

			$(photo)
			.addClass(prefix + 'Photo')
			.bind('error.'+prefix,function () {
				prep($tag(div, 'Error').html(settings.get('imgError')));
			})
			.one('load', function () {
				if (request !== requests) {
					return;
				}

				// A small pause because some browsers will occasionally report a
				// img.width and img.height of zero immediately after the img.onload fires
				setTimeout(function(){
					var percent;

					if (settings.get('retinaImage') && window.devicePixelRatio > 1) {
						photo.height = photo.height / window.devicePixelRatio;
						photo.width = photo.width / window.devicePixelRatio;
					}

					if (settings.get('scalePhotos')) {
						setResize = function () {
							photo.height -= photo.height * percent;
							photo.width -= photo.width * percent;
						};
						if (settings.mw && photo.width > settings.mw) {
							percent = (photo.width - settings.mw) / photo.width;
							setResize();
						}
						if (settings.mh && photo.height > settings.mh) {
							percent = (photo.height - settings.mh) / photo.height;
							setResize();
						}
					}

					if (settings.h) {
						photo.style.marginTop = Math.max(settings.mh - photo.height, 0) / 2 + 'px';
					}

					if ($related[1] && (settings.get('loop') || $related[index + 1])) {
						photo.style.cursor = 'pointer';

						$(photo).bind('click.'+prefix, function () {
							publicMethod.next();
						});
					}

					photo.style.width = photo.width + 'px';
					photo.style.height = photo.height + 'px';
					prep(photo);
				}, 1);
			});

			photo.src = href;

		} else if (href) {
			$loadingBay.load(href, settings.get('data'), function (data, status) {
				if (request === requests) {
					prep(status === 'error' ? $tag(div, 'Error').html(settings.get('xhrError')) : $(this).contents());
				}
			});
		}
	}

	// Navigates to the next page/image in a set.
	publicMethod.next = function () {
		if (!active && $related[1] && (settings.get('loop') || $related[index + 1])) {
			index = getIndex(1);
			launch($related[index]);
		}
	};

	publicMethod.prev = function () {
		if (!active && $related[1] && (settings.get('loop') || index)) {
			index = getIndex(-1);
			launch($related[index]);
		}
	};

	// Note: to use this within an iframe use the following format: parent.jQuery.colorbox.close();
	publicMethod.close = function () {
		if (open && !closing) {

			closing = true;
			open = false;
			trigger(event_cleanup);
			settings.get('onCleanup');
			$window.unbind('.' + prefix);
			$overlay.fadeTo(settings.get('fadeOut') || 0, 0);

			$box.stop().fadeTo(settings.get('fadeOut') || 0, 0, function () {
				$box.hide();
				$overlay.hide();
				trigger(event_purge);
				$loaded.remove();

				setTimeout(function () {
					closing = false;
					trigger(event_closed);
					settings.get('onClosed');
				}, 1);
			});
		}
	};

	// Removes changes Colorbox made to the document, but does not remove the plugin.
	publicMethod.remove = function () {
		if (!$box) { return; }

		$box.stop();
		$[colorbox].close();
		$box.stop(false, true).remove();
		$overlay.remove();
		closing = false;
		$box = null;
		$('.' + boxElement)
			.removeData(colorbox)
			.removeClass(boxElement);

		$(document).unbind('click.'+prefix).unbind('keydown.'+prefix);
	};

	// A method for fetching the current element Colorbox is referencing.
	// returns a jQuery object.
	publicMethod.element = function () {
		return $(settings.el);
	};

	publicMethod.settings = defaults;

}(jQuery, document, window));
modules/login-security/js/admin.1722265817.js000064400000075632150755146440014352 0ustar00(function($) {
	function __(string) {
		return WFLS_ADMIN_TRANSLATIONS[string] || string;
	}
	window['WFLS'] = {
		panelIsOpen: false,
		basePageName: '',
		panelQueue: [],
		pendingChanges: {},
		userIsActivating: false,
		
		//Screen sizes
		SCREEN_XS: 'xs',
		SCREEN_SM: 'sm',
		SCREEN_MD: 'md',
		SCREEN_LG: 'lg',

		init: function() {
			this.basePageName = document.title;

			var tabs = $('.wfls-page-tabs').find('.wfls-tab a');
			if (tabs.length > 0) {
				tabs.click(function() {
					$('.wfls-page-tabs').find('.wfls-tab').removeClass('wfls-active');
					$('.wfls-tab-content').removeClass('wfls-active');

					var tab = $(this).closest('.wfls-tab');
					tab.addClass('wfls-active');
					var content = $('#' + tab.data('target'));
					content.addClass('wfls-active');
					document.title = tab.data('pageTitle') + " \u2039 " + WFLS.basePageName;
					$(window).trigger('wfls-tab-change', [tab.data('target')]);
				});
				if (window.location.hash) {
					var hashes = WFLS.parseHashes();
					var hash = hashes[hashes.length - 1];
					for (var i = 0; i < tabs.length; i++) {
						if (hash == $(tabs[i]).closest('.wfls-tab').data('target')) {
							$(tabs[i]).trigger('click');
						}
					}
				}
				else {
					$(tabs[0]).trigger('click');
				}
				$(window).on('hashchange', function () {
					var hashes = WFLS.parseHashes();
					var hash = hashes[hashes.length - 1];
					for (var i = 0; i < tabs.length; i++) {
						if (hash == $(tabs[i]).closest('.wfls-tab').data('target')) {
							$(tabs[i]).trigger('click');
						}
					}
				});
			}

			//On/Off Option
			$('.wfls-option.wfls-option-toggled .wfls-option-checkbox').each(function() {
				$(this).on('keydown', function(e) {
					if (e.keyCode == 32) {
						e.preventDefault();
						e.stopPropagation();

						$(this).trigger('click');
					}
				});

				$(this).on('click', function(e) {
					e.preventDefault();
					e.stopPropagation();

					var optionElement = $(this).closest('.wfls-option');
					if (optionElement.hasClass('wfls-option-premium') || optionElement.hasClass('wfls-disabled')) {
						return;
					}

					var option = optionElement.data('option');
					var value = false;
					var isActive = $(this).hasClass('wfls-checked');
					if (isActive) {
						$(this).removeClass('wfls-checked').attr('aria-checked', 'false');
						value = optionElement.data('disabledValue');
					}
					else {
						$(this).addClass('wfls-checked').attr('aria-checked', 'true');
						value = optionElement.data('enabledValue');
					}

					var originalValue = optionElement.data('originalValue');
					if (originalValue == value) {
						delete WFLS.pendingChanges[option];
					}
					else {
						WFLS.pendingChanges[option] = value;
					}

					$(optionElement).trigger('change', [false]);
					WFLS.updatePendingChanges();
				});

				$(this).parent().find('.wfls-option-title').on('click', function(e) {
					var links = $(this).find('a');
					var buffer = 10;
					for (var i = 0; i < links.length; i++) {
						var t = $(links[i]).offset().top;
						var l = $(links[i]).offset().left;
						var b = t + $(links[i]).height();
						var r = l + $(links[i]).width();

						if (e.pageX > l - buffer && e.pageX < r + buffer && e.pageY > t - buffer && e.pageY < b + buffer) {
							return;
						}
					}
					$(this).parent().find('.wfls-option-checkbox').trigger('click');
				}).css('cursor', 'pointer');
			});

			//On/Off Boolean Switch Option
			$('.wfls-option.wfls-option-toggled-boolean-switch .wfls-boolean-switch').each(function() {
				$(this).on('keydown', function(e) {
					if (e.keyCode == 32) {
						e.preventDefault();
						e.stopPropagation();

						$(this).trigger('click');
					}
				});

				$(this).on('click', function(e) {
					e.preventDefault();
					e.stopPropagation();

					$(this).find('.wfls-boolean-switch-handle').trigger('click');
				});

				$(this).find('.wfls-boolean-switch-handle').on('click', function(e) {
					e.preventDefault();
					e.stopPropagation();

					var optionElement = $(this).closest('.wfls-option');
					if (optionElement.hasClass('wfls-option-premium') || optionElement.hasClass('wfls-disabled')) {
						return;
					}

					var switchElement = $(this).closest('.wfls-boolean-switch');
					var option = optionElement.data('option');
					var value = false;
					var isActive = switchElement.hasClass('wfls-active');
					if (isActive) {
						switchElement.removeClass('wfls-active').attr('aria-checked', 'false');
						value = optionElement.data('disabledValue');
					}
					else {
						switchElement.addClass('wfls-active').attr('aria-checked', 'true');
						value = optionElement.data('enabledValue');
					}

					var originalValue = optionElement.data('originalValue');
					if (originalValue == value) {
						delete WFLS.pendingChanges[option];
					}
					else {
						WFLS.pendingChanges[option] = value;
					}

					$(optionElement).trigger('change', [false]);
					WFLS.updatePendingChanges();
				});

				$(this).parent().find('.wfls-option-title').on('click', function(e) {
					var links = $(this).find('a');
					var buffer = 10;
					for (var i = 0; i < links.length; i++) {
						var t = $(links[i]).offset().top;
						var l = $(links[i]).offset().left;
						var b = t + $(links[i]).height();
						var r = l + $(links[i]).width();

						if (e.pageX > l - buffer && e.pageX < r + buffer && e.pageY > t - buffer && e.pageY < b + buffer) {
							return;
						}
					}
					$(this).parent().find('.wfls-boolean-switch-handle').trigger('click');
				}).css('cursor', 'pointer');
			});

			//On/Off Segmented Option
			$('.wfls-option.wfls-option-toggled-segmented [type=radio]').each(function() {
				$(this).on('click', function(e) {
					var optionElement = $(this).closest('.wfls-option');
					if (optionElement.hasClass('wfls-option-premium') || optionElement.hasClass('wfls-disabled')) {
						return;
					}

					var option = optionElement.data('option');
					var value = this.value;

					var originalValue = optionElement.data('originalValue');
					if (originalValue == value) {
						delete WFLS.pendingChanges[option];
					}
					else {
						WFLS.pendingChanges[option] = value;
					}

					$(optionElement).trigger('change', [false]);
					WFLS.updatePendingChanges();
				});
			});

			//On/Off Multiple Option
			$('.wfls-option.wfls-option-toggled-multiple .wfls-option-checkbox').each(function() {
				$(this).on('keydown', function(e) {
					if (e.keyCode == 32) {
						e.preventDefault();
						e.stopPropagation();

						$(this).trigger('click');
					}
				});

				$(this).on('click', function(e) {
					e.preventDefault();
					e.stopPropagation();

					var optionElement = $(this).closest('.wfls-option');
					if (optionElement.hasClass('wfls-option-premium') || optionElement.hasClass('wfls-disabled') || $(this).hasClass('wfls-disabled')) {
						return;
					}

					var checkboxElement = $(this).closest('ul');
					var option = checkboxElement.data('option');
					var value = false;
					var isActive = $(this).hasClass('wfls-checked');
					if (isActive) {
						$(this).removeClass('wfls-checked').attr('aria-checked', 'false');
						value = checkboxElement.data('disabledValue');
					}
					else {
						$(this).addClass('wfls-checked').attr('aria-checked', 'true');
						value = checkboxElement.data('enabledValue');
					}

					var originalValue = checkboxElement.data('originalValue');
					if (originalValue == value) {
						delete WFLS.pendingChanges[option];
					}
					else {
						WFLS.pendingChanges[option] = value;
					}

					$(optionElement).trigger('change', [false]);
					WFLS.updatePendingChanges();
				});

				$(this).parent().find('.wfls-option-title').on('click', function(e) {
					var links = $(this).find('a');
					var buffer = 10;
					for (var i = 0; i < links.length; i++) {
						var t = $(links[i]).offset().top;
						var l = $(links[i]).offset().left;
						var b = t + $(links[i]).height();
						var r = l + $(links[i]).width();

						if (e.pageX > l - buffer && e.pageX < r + buffer && e.pageY > t - buffer && e.pageY < b + buffer) {
							return;
						}
					}
					$(this).parent().find('.wfls-option-checkbox').trigger('click');
				}).css('cursor', 'pointer');
			});

			//Text field option
			$('.wfls-option.wfls-option-text > .wfls-option-content > ul > li.wfls-option-text input').on('change paste keyup', function() {
				var e = this;

				setTimeout(function() {
					var optionElement = $(e).closest('.wfls-option');
					var option = optionElement.data('textOption');

					if (typeof option !== 'undefined') {
						var value = $(e).val();

						var originalValue = optionElement.data('originalTextValue');
						if (originalValue == value) {
							delete WFLS.pendingChanges[option];
						}
						else {
							WFLS.pendingChanges[option] = value;
						}

						$(optionElement).trigger('change', [false]);
						WFLS.updatePendingChanges();
					}
				}, 4);
			});
			
			//Menu option
			$('.wfls-option.wfls-option-toggled-select > .wfls-option-content > ul > li.wfls-option-select select, .wfls-option.wfls-option-select > .wfls-option-content > ul > li.wfls-option-select select, .wf-option.wfls-option-select > li.wfls-option-select select').each(function() {
				if (!$.fn.wfselect2) { return; }

				var width = (WFLS.screenSize(500) ? '200px' : 'resolve');
				if ($(this).data('preferredWidth')) {
					width = $(this).data('preferredWidth');
				}

				$(this).wfselect2({
					minimumResultsForSearch: -1,
					width: width
				}).on('change', function () {
					var optionElement = $(this).closest('.wfls-option');
					var option = optionElement.data('selectOption');
					var value = $(this).val();

					var originalValue = optionElement.data('originalSelectValue');
					if (originalValue == value) {
						delete WFLS.pendingChanges[option];
					}
					else {
						WFLS.pendingChanges[option] = value;
					}

					$(optionElement).trigger('change', [false]);
					WFLS.updatePendingChanges();
				});
			}).triggerHandler('change');

			//Text area option
			$('.wfls-option.wfls-option-textarea > .wfls-option-content > ul > li.wfls-option-textarea textarea').on('change paste keyup', function() {
				var e = this;

				setTimeout(function() {
					var optionElement = $(e).closest('.wfls-option');
					var option = optionElement.data('textOption');
					var value = $(e).val();

					var originalValue = optionElement.data('originalTextValue');
					if (originalValue == value) {
						delete WFLS.pendingChanges[option];
					}
					else {
						WFLS.pendingChanges[option] = value;
					}

					$(optionElement).trigger('change', [false]);
					WFLS.updatePendingChanges();
				}, 4);
			});

			//Switch Option
			$('.wfls-option.wfls-option-switch .wfls-switch > li').each(function(index, element) {
				$(this).on('keydown', function(e) {
					if (e.keyCode == 32) {
						e.preventDefault();
						e.stopPropagation();

						$(this).trigger('click');
					}
				});

				$(element).on('click', function(e) {
					e.preventDefault();
					e.stopPropagation();

					var optionElement = $(this).closest('ul.wfls-option-switch, div.wfls-option-switch');
					var optionName = optionElement.data('optionName');
					var originalValue = optionElement.data('originalValue');
					var value = $(this).data('optionValue');

					var control = $(this).closest('.wfls-switch');
					control.find('li').each(function() {
						$(this).toggleClass('wfls-active', value == $(this).data('optionValue')).attr('aria-checked', value == $(this).data('optionValue') ? 'true' : 'false');
					});

					if (originalValue == value) {
						delete WFLS.pendingChanges[optionName];
					}
					else {
						WFLS.pendingChanges[optionName] = value;
					}

					$(optionElement).trigger('change', [false]);
					WFLS.updatePendingChanges();
				});
			});

			//Dropdown/Text Options
			$('select.wfls-option-select, input.wfls-option-input').each(function() {
				$(this).data('original', $(this).val());
			}).on('change input', function(e) {
				var input = $(this);
				var name = input.attr('name');
				var value = input.val();
				var original = input.data('original');
				if (value === original || (input.hasClass('wfls-option-input-required') && value === '')) {
					delete WFLS.pendingChanges[name];
				}
				else {
					WFLS.pendingChanges[name] = value;
				}
				WFLS.updatePendingChanges();
			});

			$('#wfls-save-changes').on('click', function(e) {
				e.preventDefault();
				e.stopPropagation();

				WFLS.saveOptions(function(res) {
					WFLS.pendingChanges = {};
					WFLS.updatePendingChanges();

					if (res.redirect) {
						window.location.href = res.redirect;
					}
					else {
						window.location.reload(true);
					}
				});
			});

			$('#wfls-cancel-changes').on('click', function(e) {
				e.preventDefault();
				e.stopPropagation();

				//On/Off options
				$('.wfls-option.wfls-option-toggled').each(function() {
					var enabledValue = $(this).data('enabledValue');
					var disabledValue = $(this).data('disabledValue');
					var originalValue = $(this).data('originalValue');
					if (enabledValue == originalValue) {
						$(this).find('.wfls-option-checkbox').addClass('wfls-checked').attr('aria-checked', 'true');
					}
					else {
						$(this).find('.wfls-option-checkbox').removeClass('wfls-checked').attr('aria-checked', 'false');
					}
					$(this).trigger('change', [true]);
				});

				$('.wfls-option-toggled-boolean-switch').each(function() {
					var enabledValue = $(this).data('enabledValue');
					var disabledValue = $(this).data('disabledValue');
					var originalValue = $(this).data('originalValue');
					if (enabledValue == originalValue) {
						$(this).find('.wfls-boolean-switch').addClass('wfls-active').attr('aria-checked', 'true');
					}
					else {
						$(this).find('.wfls-boolean-switch').removeClass('wfls-active').attr('aria-checked', 'false');
					}
					$(this).trigger('change', [true]);
				});

				$('.wfls-option.wfls-option-toggled-segmented').each(function() {
					var originalValue = $(this).data('originalValue');
					$(this).find('[type=radio]').each(function() {
						if (this.value == originalValue) {
							this.checked = true;
							return false;
						}
					});
					$(this).trigger('change', [true]);
				});

				//On/Off multiple options
				$('.wfls-option.wfls-option-toggled-multiple').each(function() {
					$(this).find('.wfls-option-checkboxes > ul').each(function() {
						var enabledValue = $(this).data('enabledValue');
						var disabledValue = $(this).data('disabledValue');
						var originalValue = $(this).data('originalValue');
						if (enabledValue == originalValue) {
							$(this).find('.wfls-option-checkbox').addClass('wfls-checked').attr('aria-checked', 'true');
						}
						else {
							$(this).find('.wfls-option-checkbox').removeClass('wfls-checked').attr('aria-checked', 'false');
						}
					});
					$(this).trigger('change', [true]);
				});

				//On/Off options with menu
				$('.wfls-option.wfls-option-toggled-select').each(function() {
					var selectElement = $(this).find('.wfls-option-select select');
					var enabledToggleValue = $(this).data('enabledToggleValue');
					var disabledToggleValue = $(this).data('disabledToggleValue');
					var originalToggleValue = $(this).data('originalToggleValue');
					if (enabledToggleValue == originalToggleValue) {
						$(this).find('.wfls-option-checkbox').addClass('wfls-checked').attr('aria-checked', 'true');
						selectElement.attr('disabled', false);
					}
					else {
						$(this).find('.wfls-option-checkbox').removeClass('wfls-checked').attr('aria-checked', 'false');
						selectElement.attr('disabled', true);
					}

					var originalSelectValue = $(this).data('originalSelectValue');
					$(this).find('.wfls-option-select select').val(originalSelectValue).trigger('change');
					$(this).trigger('change', [true]);
				});

				//Menu options
				$('.wfls-option.wfls-option-select').each(function() {
					var originalSelectValue = $(this).data('originalSelectValue');
					$(this).find('.wfls-option-select select').val(originalSelectValue).trigger('change');
					$(this).trigger('change', [true]);
				});

				//Text options
				$('.wfls-option.wfls-option-text').each(function() {
					var originalTextValue = $(this).data('originalTextValue');
					if (typeof originalTextValue !== 'undefined') {
						$(this).find('.wfls-option-text input').val(originalTextValue);
					}
					$(this).trigger('change', [true]);
				});

				//Text area options
				$('.wfls-option.wfls-option-textarea').each(function() {
					var originalTextValue = $(this).data('originalTextValue');
					$(this).find('.wfls-option-textarea textarea').val(originalTextValue);
					$(this).trigger('change', [true]);
				});

				//Token options
				$('.wfls-option.wfls-option-token').each(function() {
					var originalTokenValue = $(this).data('originalTokenValue');
					$(this).find('select').val(originalTokenValue).trigger('change');
					$(this).trigger('change', [true]);
				});

				//Switch options
				$('.wfls-option.wfls-option-switch').each(function() {
					var originalValue = $(this).data('originalValue');
					$(this).find('.wfls-switch > li').each(function() {
						$(this).toggleClass('wfls-active', originalValue == $(this).data('optionValue')).attr('aria-checked', originalValue == $(this).data('optionValue') ? 'true' : 'false');
					});
					$(this).trigger('change', [true]);
				});

				//Other options
				$(window).trigger('wflsOptionsReset');
				
				WFLS.pendingChanges = {};
				WFLS.updatePendingChanges();
			});
		},

		updatePendingChanges: function() {
			$(window).off('beforeunload', WFLS._unsavedOptionsHandler);
			if (Object.keys(WFLS.pendingChanges).length) {
				$('#wfls-cancel-changes').removeClass('wfls-disabled');
				$('#wfls-save-changes').removeClass('wfls-disabled');
				$(window).on('beforeunload', WFLS._unsavedOptionsHandler);
			}
			else {
				$('#wfls-cancel-changes').addClass('wfls-disabled');
				$('#wfls-save-changes').addClass('wfls-disabled');
			}
		},

		_unsavedOptionsHandler: function(e) {
			var message = __("You have unsaved changes to your options. If you leave this page, those changes will be lost."); //Only shows on older browsers, newer browsers don't allow message customization 
			e = e || window.event;
			if (e) {
				e.returnValue = message; //IE and Firefox
			}
			return message; //Others
		},
		
		setOptions: function(options, successCallback, failureCallback) {
			if (!Object.keys(options).length) {
				return;
			}

			this.ajax('wordfence_ls_save_options', {changes: JSON.stringify(options)}, function(res) {
				if (res.success) {
					typeof successCallback == 'function' && successCallback(res);
				}
				else {
					if (res.hasOwnProperty('html') && res.html) {
						WFLS.panelModalHTML((WFLS.screenSize(500) ? '300px' : '400px'), 'Error Saving Options', res.error);
					}
					else {
						WFLS.panelModal((WFLS.screenSize(500) ? '300px' : '400px'), 'Error Saving Options', res.error);
					}

					typeof failureCallback == 'function' && failureCallback
				}
			});
		},

		saveOptions: function(successCallback, failureCallback) {
			this.setOptions(WFLS.pendingChanges, successCallback, failureCallback);
		},

		updateIPPreview: function(value, successCallback) {
			this.ajax('wordfence_ls_update_ip_preview', value, function(response) {
				if (successCallback) {
					successCallback(response);
				}
			});
		},

		/**
		 * Sends a WP AJAX call, automatically adding our nonce.
		 * 
		 * @param string action
		 * @param string|array|object payload
		 * @param function successCallback
		 * @param function failureCallback
		 */
		ajax: function(action, payload, successCallback, failureCallback) {
			if (typeof(payload) == 'string') {
				if (payload.length > 0) {
					payload += '&';
				}
				payload += 'action=' + action + '&nonce=' + WFLSVars.nonce;
			}
			else if (typeof(payload) == 'object' && payload instanceof Array) {
				// jQuery serialized form data
				payload.push({
					name: 'action',
					value: action
				});
				payload.push({
					name: 'nonce',
					value: WFLSVars.nonce
				});
			}
			else if (typeof(payload) == 'object') {
				payload['action'] = action;
				payload['nonce'] = WFLSVars.nonce;
			}
			
			
			$.ajax({
				type: 'POST',
				url: WFLSVars.ajaxurl,
				dataType: "json",
				data: payload,
				success: function(json) {
					typeof successCallback == 'function' && successCallback(json);
				},
				error: function() {
					typeof failureCallback == 'function' && failureCallback();
				}
			});
		},

		/**
		 * Displays a generic panel.
		 * 
		 * @param @param string width A width string in the format '100px'
		 * @param string heading
		 * @param string body
		 * @param object settings
		 */
		panel: function(width, heading, body, settings) {
			if (typeof settings === 'undefined') {
				settings = {};
			}
			WFLS.panelQueue.push([width, "<h3>" + heading + "</h3><p>" + body + "</p>", settings]);
			WFLS._panelServiceQueue();
		},

		/**
		 * Displays a modal panel with fixed HTML content.
		 * 
		 * @param @param string width A width string in the format '100px'
		 * @param string heading
		 * @param string body
		 * @param object settings
		 */
		panelModalHTML: function(width, heading, body, settings) {
			if (typeof settings === 'undefined') {
				settings = {};
			}

			var prompt = $.tmpl(WFLSVars.modalHTMLTemplate, {title: heading, message: body});
			var promptHTML = $("<div />").append(prompt).html();
			var callback = settings.onComplete;
			settings.overlayClose = false;
			settings.closeButton = false;
			settings.className = 'wfls-modal';
			settings.onComplete = function() {
				$('#wfls-generic-modal-close').on('click', function(e) {
					e.preventDefault();
					e.stopPropagation();

					WFLS.panelClose();
				});

				typeof callback === 'function' && callback();
			};
			WFLS.panelHTML(width, promptHTML, settings)
		},

		/**
		 * Displays a modal panel, automatically escaping the content.
		 *
		 * @param @param string width A width string in the format '100px'
		 * @param string heading
		 * @param string body
		 * @param object settings
		 */
		panelModal: function(width, heading, body, settings) {
			if (typeof settings === 'undefined') {
				settings = {};
			}

			if (width === null)
				width = WFLS.screenSize(500) ? '300px' : '400px';

			var includeDefaultButtons = typeof settings.includeDefaultButtons === 'undefined' ? false : settings.includeDefaultButtons;
			var prompt = $.tmpl(WFLSVars[includeDefaultButtons ? 'modalTemplate' : 'modalNoButtonsTemplate'], {title: heading, message: body});

			if (typeof settings.additional_buttons !== 'undefined') {
				var buttonSection = prompt.find('.wfls-modal-footer > ul');
				for(index in settings.additional_buttons) {
					var buttonSettings = settings.additional_buttons[index];
					var button = $('<button>').text(buttonSettings.label)
						.addClass('wfls-btn wfls-btn-callout-subtle wfls-additional-button')
						.attr('id', buttonSettings.id);
					var buttonType = typeof buttonSettings.type === 'undefined' ? 'default' : buttonSettings.type;
					button.addClass('wfls-btn-' + buttonType);
					buttonSection.prepend($("<li>").addClass('wfls-padding-add-left-small').append(button));
				}
			}

			var promptHTML = $("<div />").append(prompt).html();
			var callback = settings.onComplete;
			settings.overlayClose = false;
			settings.closeButton = false;
			settings.className = 'wfls-modal';
			settings.onComplete = function() {
				$('#wfls-generic-modal-close').on('click', function(e) {
					e.preventDefault();
					e.stopPropagation();

					WFLS.panelClose();
				});

				typeof callback === 'function' && callback();
			};
			WFLS.panelHTML(width, promptHTML, settings)
		},

		/**
		 * Displays a modal with the given title and message text.
		 *
		 * @param string title the modal title
		 * @param string message the message (this will be treated as text, not HTML)
		 * @param array buttons the buttons to include in the modal footer
		 *	Each item in the array should be an object with the following properties:
		 *		- label: The button text
		 *		- id: An ID for the button
		 *		- type: The type of button for styling purposes - i.e. default, primary (default: 'default')
		 * @param object settings
		 *
		 * @see WFLS.panelModal
		 */
		displayModalMessage: function(title, message, buttons, settings) {
			if (typeof settings !== 'object')
				settings = {};
			var width = typeof settings.width === 'undefined' ? null : settings.width;
			settings.includeDefaultButtons = false;
			settings.additional_buttons = buttons;
			WFLS.panelModal(width, title, message, settings);
		},

		/**
		 * Displays a modal panel with the error formatting.
		 *
		 * @param string errorMsg
		 * @param bool isTokenError Whether or not this error is an expired nonce error.
		 */
		panelError: function(errorMsg, isTokenError) {
			var callback = false;
			if (isTokenError) {
				if (WFLS.tokenErrorShowing) {
					return;
				}

				callback = function() {
					setTimeout(function() {
						WFLS.tokenErrorShowing = false;
					}, 30000);
				};

				WFLS.tokenErrorShowing = true;
			}

			var prompt = $.tmpl(WFLSVars.tokenInvalidTemplate, {title: 'An error occurred', message: errorMsg});
			var promptHTML = $("<div />").append(prompt).html();
			var settings = {};
			settings.overlayClose = false;
			settings.closeButton = false;
			settings.className = 'wfls-modal';
			settings.onComplete = function() {
				$('#wfls-token-invalid-modal-reload').on('click', function(e) {
					e.preventDefault();
					e.stopPropagation();

					window.location.reload(true);
				});

				typeof callback === 'function' && callback();
			};
			WFLS.panelHTML((WFLS.screenSize(500) ? '300px' : '400px'), promptHTML, settings);
		},

		/**
		 * Displays a panel with fixed HTML content.
		 *
		 * @param string width A width string in the format '100px'
		 * @param string html
		 * @param object settings
		 */
		panelHTML: function(width, html, settings) {
			if (typeof settings === 'undefined') {
				settings = {};
			}
			WFLS.panelQueue.push([width, html, settings]);
			WFLS._panelServiceQueue();
		},

		/**
		 * Displays the next panel in the queue.
		 */
		_panelServiceQueue: function() {
			if (WFLS.panelIsOpen) {
				return;
			}
			if (WFLS.panelQueue.length < 1) {
				return;
			}
			var elem = WFLS.panelQueue.shift();
			WFLS._panelOpen(elem[0], elem[1], elem[2]);
		},

		/**
		 * Does the actual function call to display the panel.
		 *
		 * @param string width A width string in the format '100px'
		 * @param string html
		 * @param object settings
		 */
		_panelOpen: function(width, html, settings) {
			this.panelIsOpen = true;
			$.extend(settings, {
				width: width,
				html: html,
				onClosed: function() {
					WFLS.panelClose();
				}
			});
			$.wflscolorbox(settings);
		},

		/**
		 * Closes the current panel.
		 */
		panelClose: function() {
			WFLS.panelIsOpen = false;
			if (WFLS.panelQueue.length < 1) {
				$.wflscolorbox.close();
			}
			else {
				WFLS._panelServiceQueue();
			}
		},

		/**
		 * Parses and returns the hash portion of a URL, working around user agents that URL-encode the # character.
		 * 
		 * @returns {Array}
		 */
		parseHashes: function() {
			var hashes = window.location.hash.replace('%23', '#');
			var splitHashes = hashes.split('#');
			var result = [];
			for (var i = 0; i < splitHashes.length; i++) {
				if (splitHashes[i].length > 0) {
					result.push(splitHashes[i]);
				}
			}
			return result;
		},

		/**
		 * Returns whether or not the screen size is within the size given. This may be a numerical value
		 * or one of the WFLS_SCREEN_ constants.
		 * 
		 * @param size
		 * @returns {boolean}
		 */
		screenSize: function(size) {
			switch (size) {
				case WFLS.SCREEN_XS:
					return window.matchMedia("only screen and (max-width: 767px)").matches;
				case WFLS.SCREEN_SM:
					return window.matchMedia("only screen and (max-width: 991px)").matches;
				case WFLS.SCREEN_MD:
					return window.matchMedia("only screen and (max-width: 1199px)").matches;
				case WFLS.SCREEN_LG:
					return window.matchMedia("only screen and (max-width: 32767px)").matches;
			}
			
			var parsed = parseInt(size);
			if (isNaN(parsed)) {
				return false;
			}
			return window.matchMedia("only screen and (max-width: " + parsed + "px)").matches;
		},
	};
	
	$(function() {
		WFLS.init();
	});

	$.fn.crossfade = function(incoming, duration, complete) {
		duration = duration || 400;
		complete = complete || function() { };
		
		return this.each(function() {
			$(this).fadeOut(duration, function() {
				$(incoming).fadeIn(duration, complete);
			});
		});
	};
})(jQuery);

/*! @source https://github.com/eligrey/FileSaver.js/blob/master/dist/FileSaver.min.js */
(function(a,b){if("function"==typeof define&&define.amd)define([],b);else if("undefined"!=typeof exports)b();else{b(),a.FileSaver={exports:{}}.exports}})(this,function(){"use strict";function b(a,b){return"undefined"==typeof b?b={autoBom:!1}:"object"!=typeof b&&(console.warn("Deprecated: Expected third argument to be a object"),b={autoBom:!b}),b.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(a.type)?new Blob(["\uFEFF",a],{type:a.type}):a}function c(a,b,c){var d=new XMLHttpRequest;d.open("GET",a),d.responseType="blob",d.onload=function(){g(d.response,b,c)},d.onerror=function(){console.error("could not download file")},d.send()}function d(a){var b=new XMLHttpRequest;b.open("HEAD",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent("click"))}catch(c){var b=document.createEvent("MouseEvents");b.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof global&&global.global===global?global:void 0,a=/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),g=f.saveAs||("object"!=typeof window||window!==f?function(){}:"download"in HTMLAnchorElement.prototype&&!a?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement("a");g=g||b.name||"download",j.download=g,j.rel="noopener","string"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target="_blank")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:"msSaveOrOpenBlob"in navigator?function(f,g,h){if(g=g||f.name||"download","string"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement("a");i.href=f,i.target="_blank",setTimeout(function(){e(i)})}}:function(b,d,e,g){if(g=g||open("","_blank"),g&&(g.document.title=g.document.body.innerText="downloading..."),"string"==typeof b)return c(b,d,e);var h="application/octet-stream"===b.type,i=/constructor/i.test(f.HTMLElement)||f.safari,j=/CriOS\/[\d]+/.test(navigator.userAgent);if((j||h&&i||a)&&"undefined"!=typeof FileReader){var k=new FileReader;k.onloadend=function(){var a=k.result;a=j?a:a.replace(/^data:[^;]*;/,"data:attachment/file;"),g?g.location.href=a:location=a,g=null},k.readAsDataURL(b)}else{var l=f.URL||f.webkitURL,m=l.createObjectURL(b);g?g.location=m:location.href=m,g=null,setTimeout(function(){l.revokeObjectURL(m)},4E4)}});f.saveAs=g.saveAs=g,"undefined"!=typeof module&&(module.exports=g)});
modules/login-security/js/login.1722265817.js000064400000046520150755146440014364 0ustar00(function($) {
	function __(string) {
		return WFLS_LOGIN_TRANSLATIONS[string] || string;
	}
	!function(Z){"use strict";Z.Zebra_Tooltips=function(t,l){var u,T,b,v,n={animation_speed:250,animation_offset:20,close_on_click:!0,content:!(this.version="2.1.0"),hide_delay:100,keep_visible:!0,max_width:250,opacity:".95",position:"center",prerender:!1,show_delay:100,vertical_alignment:"above",vertical_offset:0,onBeforeHide:null,onHide:null,onBeforeShow:null,onShow:null},r=this,_=function(e){var t,o,i,a,l,n,r,_,s,p,d,h,c,f,w=e.data("Zebra_Tooltip"),m=Z(window);return w.tooltip||(t=Z("<div>",{"class":"Zebra_Tooltip",css:{opacity:0,display:"block"}}),o=Z("<div>",{"class":"Zebra_Tooltip_Message",css:{maxWidth:w.max_width}}).html(w.content).appendTo(t),i=Z("<div>",{"class":"Zebra_Tooltip_Arrow"}).appendTo(t),a=Z("<div>").addClass("Zebra_Tooltip_Arrow_Border").appendTo(i),Z("<div>").appendTo(i),w.keep_visible&&(t.on("mouseleave"+(w.close_on_click?" click":""),function(){y(e)}),t.on("mouseenter",function(){g(e)})),t.appendTo("body"),w.sticky&&o.addClass("Zebra_Tooltip_Has_Close"),l=t.outerWidth(),n=t.outerHeight(),r=a.outerWidth(),_=a.outerHeight(),s=o.outerWidth(),p=o.outerHeight(),w={tooltip:t,tooltip_width:l,tooltip_height:n+_/2,message:o,arrow_container:i,arrow_width:r,arrow_height:_,arrow:a},t.css({width:w.tooltip_width,height:w.tooltip_height}),w.tooltip_width=w.tooltip_width+(o.outerWidth()-s),w.tooltip_height=w.tooltip_height+(o.outerHeight()-p),t.css({width:w.tooltip_width,height:w.tooltip_height,display:"none"}),w=Z.extend(e.data("Zebra_Tooltip"),w),e.data("Zebra_Tooltip",w)),w.sticky&&!w.close&&(Z("<a>",{"class":"Zebra_Tooltip_Close",href:"javascript:void(0)"}).html("&times;").on("click",function(t){t.preventDefault();var o=e.data("Zebra_Tooltip");o.sticky=!1,e.data("Zebra_Tooltip",o),y(e)}).appendTo(w.message),w.close=!0,w=Z.extend(e.data("Zebra_Tooltip"),w),e.data("Zebra_Tooltip",w)),u=m.width(),T=m.height(),d=e.offset(),Z.extend(w,{element_left:d.left,element_top:d.top,element_width:e.outerWidth(),element_height:e.outerHeight()}),v=m.scrollTop(),b=m.scrollLeft(),h="left"===w.position?w.element_left-w.tooltip_width+w.arrow_width:"right"===w.position?w.element_left+w.element_width-w.arrow_width:w.element_left+(w.element_width-w.tooltip_width)/2,c=w.element_top-w.tooltip_height,f="left"===w.position?w.tooltip_width-w.arrow_width-w.arrow_width/2:"right"===w.position?w.arrow_width/2:(w.tooltip_width-w.arrow_width)/2,h+w.tooltip_width>u+b&&(f-=u+b-(h+w.tooltip_width)-6,h=u+b-w.tooltip_width-6,f+w.arrow_width>w.tooltip_width-6&&(f=w.tooltip_width-6-w.arrow_width),h+f+w.arrow_width/2<w.element_left&&(f=-1e4)),h<b&&(f-=b-h,h=b+2,f<0&&(f=w.arrow_width/2),h+f+w.arrow_width/2>w.element_left+w.element_width&&(f=-1e4)),w.message.css("margin-top",""),w.arrow_container.removeClass("Zebra_Tooltip_Arrow_Top").addClass("Zebra_Tooltip_Arrow_Bottom"),c<v||"below"===w.vertical_alignment&&w.element_top+w.element_height+w.vertical_offset+w.tooltip_height+w.animation_offset<T+v?(c=w.element_top+w.element_height-w.vertical_offset,w.animation_offset=Math.abs(w.animation_offset),w.message.css("margin-top",w.arrow_height/2),w.arrow_container.removeClass("Zebra_Tooltip_Arrow_Bottom").addClass("Zebra_Tooltip_Arrow_Top")):(w.animation_offset=-Math.abs(w.animation_offset),c+=w.vertical_offset),w.arrow_container.css("left",f),w.tooltip.css({left:h,top:c}),Z.extend(w,{tooltip_left:h,tooltip_top:c,arrow_left:f}),w=Z.extend(e.data("Zebra_Tooltip"),w),e.data("Zebra_Tooltip",w),w},g=function(t){var o=t.data("Zebra_Tooltip");clearTimeout(o.show_timeout),o.muted||(clearTimeout(o.hide_timeout),o.show_timeout=setTimeout(function(){(o=_(t)).onBeforeShow&&"function"==typeof o.onBeforeShow&&!1===o.onBeforeShow(t,o.tooltip)||("block"!==o.tooltip.css("display")&&o.tooltip.css({top:o.tooltip_top+o.animation_offset}),o.tooltip.css("display","block"),o.tooltip.stop(),o.tooltip.animate({top:o.tooltip_top,opacity:o.opacity},o.animation_speed,function(){o.onShow&&"function"==typeof o.onShow&&o.onShow(t,o.tooltip)}))},o.show_delay))},y=function(t){var o=t.data("Zebra_Tooltip");clearTimeout(o.hide_timeout),o.sticky||(clearTimeout(o.show_timeout),o.hide_timeout=setTimeout(function(){if(o.tooltip){if(o.onBeforeHide&&"function"==typeof o.onBeforeHide&&!1===o.onBeforeHide(t,o.tooltip))return;o.close=!1,o.destroy&&(o.muted=!0),t.data("Zebra_Tooltip",o),Z("a.Zebra_Tooltip_Close",o.tooltip).remove(),o.tooltip.stop(),o.tooltip.animate({opacity:0,top:o.tooltip_top+o.animation_offset},o.animation_speed,function(){Z(this).css("display","none"),o.onHide&&"function"==typeof o.onHide&&o.onHide(t,o.tooltip)})}},o.hide_delay))};r.hide=function(t,e){t.each(function(){var t=Z(this),o=t.data("Zebra_Tooltip");o&&(o.sticky=!1,e&&(o.destroy=!0),t.data("Zebra_Tooltip",o),y(t))})},r.show=function(t,e){t.each(function(){var t=Z(this),o=t.data("Zebra_Tooltip");o&&(o.sticky=!0,o.muted=!1,e&&(o.destroy=!0),t.data("Zebra_Tooltip",o),g(t))})},t.each(function(){var t,o=Z(this),e=o.attr("title"),i=o.data(),a={};for(t in i)0===t.indexOf("ztt_")&&(t=t.replace(/^ztt\_/,""),void 0!==n[t]&&(a[t]=i["ztt_"+t]));a=Z.extend(n,r.settings,l,a),e&&(a.content=o.attr("title")),void 0!==a.content&&""!==a.content.trim()&&(o.on({mouseenter:function(){e&&Z(this).attr("title",""),g(o)},mouseleave:function(){y(o),e&&Z(this).attr("title",e)}}),o.data("Zebra_Tooltip",Z.extend({tooltip:null,show_timeout:null,hide_timeout:null,sticky:!1,destroy:!1,muted:!1},a)),a.prerender&&_(o))})}}($);

	function selectorSearch(selectors) {
		var input = null;
		return function() {
			if (input !== null)
				return input;
			for (var i = 0; i < selectors.length; i++) {
				input = $(selectors[i]);
				if (input.length === 1)
					return input;
			}
			input = null;
			return input;
		}
	};
	function FormElementLocator(inputSelectors, extraSelectors) {
		var self = this;

		if (typeof extraSelectors == 'undefined')
			extraSelectors = {};

		var found = false;
		var input = null, form = null, extra = {};

		var findInput = selectorSearch(inputSelectors);
		var search = function() {
			input = findInput();
			if (input === null)
				return false;
			form = input.closest('form');
			if (form.length !== 1) {
				form = null;
				return false;
			}
			for (var key in extraSelectors) {
				var match = form.find(extraSelectors[key]);
				if (match.length === 1) {
					extra[key] = match;
				}
				else {
					return false;
				}
			}
			return true;
		};
		this.locate = function() {
			if (!found)
				found = search();
			return found;
		};
		this.getInput = function() {
			return found ? input : null;
		};
		this.getForm = function() {
			return found ? form : null;
		};
		this.getExtra = function(key) {
			if (key in extra)
				return extra[key];
			return null;
		}
	}
	var loginLocator = new FormElementLocator(
		[
			'input[name=log]',
			'input[name=username]',
			'input#username[name=username]',
			'.woocommerce-form-login input[name=username]',
			'.login input[name=username]'
		],
		{
			password: 'input[name="pwd"],input[name=password]'
		}
	);
	var registrationLocator = new FormElementLocator([
		'input[name=user_login]',
		'#reg_email',
		'.woocommerce-form-register input[name=email]',
		'.register input[name=email]'
	]);
	var locators = [
		loginLocator,
		registrationLocator
	];
	function getRelevantInputs() {
		var inputs = $();
		for (var i = 0; i < locators.length; i++) {
			if (locators[i].locate())
				inputs = inputs.add(locators[i].getInput());
		}
		return inputs;
	}
	
	var wfls_init_captcha = function(actionCallback, log) {
		if (typeof log === 'undefined')
			log = getRelevantInputs();
		if (typeof grecaptcha === 'object') {
			grecaptcha.ready(function() {
				grecaptcha.execute(WFLSVars.recaptchasitekey, {action: 'login'}).then(function(token) {
					var tokenField = $('#wfls-captcha-token');
					if (tokenField.length) {
						tokenField.val(token);
					}
					else {
						if (log.length) {
							tokenField = $('<input type="hidden" name="wfls-captcha-token" id="wfls-captcha-token" />');
							tokenField.val(token);
							log.parent().append(tokenField);
						}
					}

					typeof actionCallback === 'function' && actionCallback(true);
				});
			});
		}
		else {
			var tokenField = $('#wfls-captcha-token');
			if (tokenField.length) {
				tokenField.val('grecaptcha-missing');
			}
			else {
				if (log.length) {
					tokenField = $('<input type="hidden" name="wfls-captcha-token" id="wfls-captcha-token" />');
					tokenField.val('grecaptcha-missing');
					log.parent().append(tokenField);
				}
			}

			typeof actionCallback === 'function' && actionCallback(true);
		}
	};

	function showLoginMessage(messageHtml, type) {
		var heading = $('#login > h1');
		if (heading.length > 0) {
			var dom = (type === 'error' ? $('<div id="login_error">') : $('<p class="message">'));
			dom.addClass('wfls-login-message');
			dom.addClass('notice');
			if (type === 'error') {
				dom.addClass('notice-error');
			}
			dom.html(messageHtml);
			heading.after(dom);
			dom.get(0).scrollIntoView();
			return;
		}
		else if ($('.woocommerce').length > 0){
			var content = $('<div class="woocommerce wfls-login-message">');
			var errorList = $('<ul role="alert">')
				.addClass(type === 'error' ? 'woocommerce-error' : 'woocommerce-info');
			content.append(errorList);
			errorList.append($('<li>').html(messageHtml));
			var containerSearch = selectorSearch([
				'#primary',
				'.content-area',
				'#main',
				'.site-main',
				'main'
			]);
			var container = containerSearch();
			if (container === null) {
				container = loginLocator.getForm();
			}
			if (container !== null) {
				container.before(content);
				content.get(0).scrollIntoView();
				return;
			}
		}
		var messageModal = $('<div>')
			.attr('id', 'wfls-login-modal')
			.css({
				position: 'fixed',
				top: 0,
				right: 0,
				bottom: 0,
				left: 0,
				'background-color': 'rgba(0,0,0,0.5)',
				'z-index': 9999,
				display: 'flex',
				'align-items': 'center',
				'justify-content': 'center',
				padding: '16px'
			})
			.appendTo($('body'));
		messageModal.append(
			$('<div>')
				.css({
					'background-color': '#FFF',
					'border-radius': '4px',
					padding: '16px',
					'text-align': 'center'
				})
				.append(
					$('<p>').html(messageHtml)
				)
				.append(
					$('<button>').text('Dismiss')
						.on('click', function() {
							messageModal.remove();
						})
				)
		);
	}
		
	
	var wfls_init_captcha_contact = function() {
		$('.wfls-registration-captcha-contact').on('click', function(e) {
			e.preventDefault();
			e.stopPropagation();

			if (registrationLocator.locate()) {
				$('#wfls-prompt-overlay').remove();
				var overlay = $('<div id="wfls-prompt-overlay"></div>');
				var wrapper = $('<div id="wfls-prompt-wrapper"></div>');
				var field = $('<p><label for="wfls-message"></label><br/><textarea name="wfls-message" id="wfls-message" class="wfls-textarea"></textarea></p>');
				field.find('label[for=wfls-message]').text(__('Message to Support'));
				var nonce = $('<input type="hidden" name="wfls-message-nonce" id="wfls-message-nonce"/>');
				var button = $('<p class="submit"><input type="submit" name="wfls-support-submit" id="wfls-support-submit" class="button button-primary button-large"/></p>');
				button.find('input[type=submit]').val(__('Send'));
				wrapper.append(field).append(nonce).append(button);
				overlay.append(wrapper);
				registrationLocator.getForm().css('position', 'relative').append(overlay);
				
				$('#wfls-message-nonce').val($(this).data('token'));
	
				$('#wfls-support-submit').on('click', function(e) {
					e.preventDefault();
					e.stopPropagation();

					$('#login_error, p.message').remove();
	
					var data = registrationLocator.getForm().serialize();
					data += '&action=wordfence_ls_register_support';

					$.ajax({
						type: 'POST',
						url: WFLSVars.ajaxurl,
						dataType: 'json',
						data: data,
						success: function(json) {
							if (json.hasOwnProperty('error')) {
								showLoginMessage(json.error, 'error');
								var dom = $('<div id="login_error">' + json.error + '</div>');
								$('#login > h1').after(dom);
							}
							else if (json.hasOwnProperty('message')) { //Success
								showLoginMessage(json.message, 'message');
								var dom = $('<p class="message">' + json.message + '</p>');
								$('#login > h1').after(dom);
								$('#wfls-support-submit, #wfls-message').attr('disabled', true);
							}
						},
						error: function(err) {
							showLoginMessage(__('An error was encountered while trying to send the message. Please try again.'), 'error');
							var dom = $('<div id="login_error"></div>');
							dom.html(__('<strong>ERROR</strong>: An error was encountered while trying to send the message. Please try again.'));
							$('#login > h1').after(dom);
						}
					});
				});

				field.find("#wfls-message").focus();
			}
		});
	};

	function FormBlocker(form, buttonSelector, clickOnSubmit) {

		var self = this;
		var blocked = false;
		var released = false;
		clickOnSubmit = clickOnSubmit || false;
		var clickSubmitInProgress = false;

		this.getButtons = function() {
			return form.find(buttonSelector);
		}

		this.block = function() {
			if (blocked)
				return false;
			blocked = true;
			this.getButtons().addClass('disabled').prop('disabled', true);
			return true;
		}

		this.unblock = function() {
			this.getButtons().removeClass('disabled').prop('disabled', false);
			blocked = false;
		}

		this.release = function() {
			released = true;
		}

		this.clickSubmit = function() {
			this.unblock();
			var submitButton = this.getButtons().first();
			setTimeout(function() {
				submitButton.trigger('click');
			}, 1);
		}

		this.initialize = function(callback) {
			form.on('submit', function(event) {
				if (released && (!clickOnSubmit || clickSubmitInProgress)) {
					if (clickSubmitInProgress)
						clickSubmitInProgress = false;
					return;
				}
				event.preventDefault();
				event.stopPropagation();
				if (released) {
					clickSubmitInProgress = true;
					self.clickSubmit();
					return;
				}
				if (self.block()) {
					callback();
				}
			});
		}

	}

	var wfls_query_ajax = function(blocker) {
		$('.wfls-login-message').remove();

		if (!loginLocator.locate()) {
			console.error('Required login elements not found');
			return;
		}
		var form = loginLocator.getForm();
		var log = loginLocator.getInput();
		var pwd = loginLocator.getExtra('password');
		
		var data = $(form).serialize();
		data += '&action=wordfence_ls_authenticate';

		$.ajax({
			type: 'POST',
			url: WFLSVars.ajaxurl,
			dataType: 'json',
			data: data,
			success: function(json) {
				if (json.hasOwnProperty('reset') && json.reset) {
					$('#wfls-prompt-overlay').remove();
				}
				
				if (json.hasOwnProperty('error')) {
					showLoginMessage(json.error, 'error');
					$('#wfls-token').val('');

					if (parseInt(WFLSVars.useCAPTCHA)) {
						wfls_init_captcha();
					}
				}
				else if (json.hasOwnProperty('message')) {
					showLoginMessage(json.message, 'message');
					$('#wfls-token').val('');

					if (parseInt(WFLSVars.useCAPTCHA)) {
						wfls_init_captcha();
					}
				}
				else if (json.hasOwnProperty('login')) {
					if (json.hasOwnProperty('captcha')) {
						var captchaField = $('#wfls-captcha-jwt');
						if (!captchaField.length) {
							captchaField = $('<input type="hidden" name="wfls-captcha-jwt" id="wfls-captcha-jwt" value=""/>');
							form.append(captchaField);
						}
						
						$('#wfls-captcha-jwt').val(json.captcha);
					}
					
					blocker.release();
					if (json.hasOwnProperty('two_factor_required') && json.two_factor_required) {
						if ($('#wfls-prompt-overlay').length === 0) {
							var overlay = $('<div id="wfls-prompt-overlay"></div>');
							var wrapper = $('<div id="wfls-prompt-wrapper"></div>');
							var label = $('<label for="wfls-token">');
							label.text(__('Wordfence 2FA Code') + ' ');
							label.append($('<a href="javascript:void(0)" class="wfls-2fa-code-help wfls-tooltip-trigger"><i class="dashicons dashicons-editor-help"></i></a>').attr('title', __('The Wordfence 2FA Code can be found within the authenticator app you used when first activating two-factor authentication. You may also use one of your recovery codes.')));
							label = $('<p>').append(label);
							var field = $('<p><input type="text" name="wfls-token" id="wfls-token" aria-describedby="wfls-token-error" class="input" value="" size="6" autocomplete="one-time-code"/></p>');
							var remember = $('<p class="wfls-remember-device-wrapper"><label for="wfls-remember-device"><input name="wfls-remember-device" type="checkbox" id="wfls-remember-device" value="1" /> </label></p>');
							remember.find('label').append(__('Remember for 30 days'));
							var button = $('<p class="submit"><input type="submit" name="wfls-token-submit" id="wfls-token-submit" class="button button-primary button-large"/></p>');
							button.find('input[type=submit]').val(__('Log In'));
							wrapper.append(label);
							wrapper.append(field);
							if (parseInt(WFLSVars.allowremember)) {
								wrapper.append(remember);
							}
							wrapper.append(button);
							overlay.append(wrapper);
							form.css('position', 'relative').append(overlay);
							form.on('submit', function() {
								$('#wfls-token-submit').prop('disabled', true).addClass('disabled');
							});
							$('#wfls-token').focus();

							new $.Zebra_Tooltips($('.wfls-tooltip-trigger'));
						}
					}
					else { //Unexpected response, skip AJAX and process via the regular login flow
						blocker.clickSubmit();
					}
				}
				blocker.unblock();
			},
			error: function(err) {
				if (err.status == 503 || err.status == 403) {
					if ($('.woocommerce').length > 0) {
						if (err.status == 503) {
							showLoginMessage(__('<strong>ERROR</strong>: Login failed with status code 503. Please contact the site administrator.'), 'error');
						}
						else if (err.status == 403) {
							showLoginMessage(__('<strong>ERROR</strong>: Login failed with status code 403. Please contact the site administrator.'), 'error');
						}
						blocker.unblock();
					}
					else {
						window.location.reload(true);
					}
					
					return;
				}
				showLoginMessage(__('<strong>ERROR</strong>: An error was encountered while trying to authenticate. Please try again.'), 'error');
				blocker.unblock();
			}
		});
	};
	
	$(function() {
		//Login
		if (loginLocator.locate()) {
			var loginBlocker = new FormBlocker(loginLocator.getForm(), '#wp-submit,[type=submit][name=login]', true);
			loginBlocker.initialize(function() {
				if (parseInt(WFLSVars.useCAPTCHA)) {
					wfls_init_captcha(function() { wfls_query_ajax(loginBlocker); });
				}
				else {
					wfls_query_ajax(loginBlocker);
				}
			});
		}

		//Registration
		if (registrationLocator.locate() && parseInt(WFLSVars.useCAPTCHA)) {
			var registrationBlocker = new FormBlocker(registrationLocator.getForm(), '[type=submit]');
			registrationBlocker.initialize(function() {
				wfls_init_captcha(
					function() {
						registrationBlocker.release();
						registrationBlocker.clickSubmit();
					},
					registrationLocator.getInput()
				);
			});
		}

		var verificationField = $('#wfls-email-verification');
		if (verificationField.length) {
			verificationField.val(WFLSVars.verification || '');
		}
		else {
			var log = getRelevantInputs();
			if (log.length) {
				verificationField = $('<input type="hidden" name="wfls-email-verification" id="wfls-email-verification" />');
				verificationField.val(WFLSVars.verification);
				log.parent().append(verificationField);
			}
		}

		if (parseInt(WFLSVars.useCAPTCHA)) {
			wfls_init_captcha_contact();
		}
	});
})(jQuery);
modules/login-security/js/admin-global.1722265817.js000064400000004323150755146440015575 0ustar00(function($) {
	window['GWFLS'] = {
		init: function() {
			this.register_create_user_events();

			$('.wfls-persistent-notice').on('click', 'button', function() {
				GWFLS.ajax(
					'wordfence_ls_dismiss_persistent_notice',
					{notice_id: $(this).parent('.notice').attr('id')},
				);
			});
		},

		/**
		 * Sends a WP AJAX call, automatically adding our nonce.
		 *
		 * @param string action
		 * @param string|array|object payload
		 * @param function successCallback
		 * @param function failureCallback
		 */
		ajax: function(action, payload, successCallback, failureCallback) {
			if (typeof(payload) == 'string') {
				if (payload.length > 0) {
					payload += '&';
				}
				payload += 'action=' + action + '&nonce=' + GWFLSVars.nonce;
			}
			else if (typeof(payload) == 'object' && payload instanceof Array) {
				// jQuery serialized form data
				payload.push({
					name: 'action',
					value: action
				});
				payload.push({
					name: 'nonce',
					value: GWFLSVars.nonce
				});
			}
			else if (typeof(payload) == 'object') {
				payload['action'] = action;
				payload['nonce'] = GWFLSVars.nonce;
			}


			$.ajax({
				type: 'POST',
				url: GWFLSVars.ajaxurl,
				dataType: "json",
				data: payload,
				success: function(json) {
					typeof successCallback == 'function' && successCallback(json);
				},
				error: function() {
					typeof failureCallback == 'function' && failureCallback();
				}
			});
		},

		dismiss_notice: function(nid) {
			this.ajax('wordfence_ls_dismiss_notice', {
					id: nid
				},
				function(res) { $('.wfls-notice[data-notice-id="' + nid + '"]').fadeOut(); },
				function() { $('.wfls-notice[data-notice-id="' + nid + '"]').fadeOut(); }
			);
		},

		register_create_user_events: function() {
			var container = $('#wfls-grace-period-toggle-container');
			if (container.length) {
				var gracePeriodToggle = container.detach().find('tr');
				$('#createuser #role').on('change', function() {
					var select = $(this);
					gracePeriodToggle.detach();
					var role = select.val();
					var row = select.closest('tr');
					if (role === 'administrator') {
						gracePeriodToggle.insertAfter(row);
					}
				}).trigger('change');
			}
		}
	};

	$(function() {
		GWFLS.init();
	});
})(jQuery);

modules/login-security/js/jquery.qrcode.min.1722265817.js000064400000033253150755146440016630 0ustar00(function(r){r.fn.qrcode=function(h){var s;function u(a){this.mode=s;this.data=a}function o(a,c){this.typeNumber=a;this.errorCorrectLevel=c;this.modules=null;this.moduleCount=0;this.dataCache=null;this.dataList=[]}function q(a,c){if(void 0==a.length)throw Error(a.length+"/"+c);for(var d=0;d<a.length&&0==a[d];)d++;this.num=Array(a.length-d+c);for(var b=0;b<a.length-d;b++)this.num[b]=a[b+d]}function p(a,c){this.totalCount=a;this.dataCount=c}function t(){this.buffer=[];this.length=0}u.prototype={getLength:function(){return this.data.length},
write:function(a){for(var c=0;c<this.data.length;c++)a.put(this.data.charCodeAt(c),8)}};o.prototype={addData:function(a){this.dataList.push(new u(a));this.dataCache=null},isDark:function(a,c){if(0>a||this.moduleCount<=a||0>c||this.moduleCount<=c)throw Error(a+","+c);return this.modules[a][c]},getModuleCount:function(){return this.moduleCount},make:function(){if(1>this.typeNumber){for(var a=1,a=1;40>a;a++){for(var c=p.getRSBlocks(a,this.errorCorrectLevel),d=new t,b=0,e=0;e<c.length;e++)b+=c[e].dataCount;
for(e=0;e<this.dataList.length;e++)c=this.dataList[e],d.put(c.mode,4),d.put(c.getLength(),j.getLengthInBits(c.mode,a)),c.write(d);if(d.getLengthInBits()<=8*b)break}this.typeNumber=a}this.makeImpl(!1,this.getBestMaskPattern())},makeImpl:function(a,c){this.moduleCount=4*this.typeNumber+17;this.modules=Array(this.moduleCount);for(var d=0;d<this.moduleCount;d++){this.modules[d]=Array(this.moduleCount);for(var b=0;b<this.moduleCount;b++)this.modules[d][b]=null}this.setupPositionProbePattern(0,0);this.setupPositionProbePattern(this.moduleCount-
7,0);this.setupPositionProbePattern(0,this.moduleCount-7);this.setupPositionAdjustPattern();this.setupTimingPattern();this.setupTypeInfo(a,c);7<=this.typeNumber&&this.setupTypeNumber(a);null==this.dataCache&&(this.dataCache=o.createData(this.typeNumber,this.errorCorrectLevel,this.dataList));this.mapData(this.dataCache,c)},setupPositionProbePattern:function(a,c){for(var d=-1;7>=d;d++)if(!(-1>=a+d||this.moduleCount<=a+d))for(var b=-1;7>=b;b++)-1>=c+b||this.moduleCount<=c+b||(this.modules[a+d][c+b]=
0<=d&&6>=d&&(0==b||6==b)||0<=b&&6>=b&&(0==d||6==d)||2<=d&&4>=d&&2<=b&&4>=b?!0:!1)},getBestMaskPattern:function(){for(var a=0,c=0,d=0;8>d;d++){this.makeImpl(!0,d);var b=j.getLostPoint(this);if(0==d||a>b)a=b,c=d}return c},createMovieClip:function(a,c,d){a=a.createEmptyMovieClip(c,d);this.make();for(c=0;c<this.modules.length;c++)for(var d=1*c,b=0;b<this.modules[c].length;b++){var e=1*b;this.modules[c][b]&&(a.beginFill(0,100),a.moveTo(e,d),a.lineTo(e+1,d),a.lineTo(e+1,d+1),a.lineTo(e,d+1),a.endFill())}return a},
setupTimingPattern:function(){for(var a=8;a<this.moduleCount-8;a++)null==this.modules[a][6]&&(this.modules[a][6]=0==a%2);for(a=8;a<this.moduleCount-8;a++)null==this.modules[6][a]&&(this.modules[6][a]=0==a%2)},setupPositionAdjustPattern:function(){for(var a=j.getPatternPosition(this.typeNumber),c=0;c<a.length;c++)for(var d=0;d<a.length;d++){var b=a[c],e=a[d];if(null==this.modules[b][e])for(var f=-2;2>=f;f++)for(var i=-2;2>=i;i++)this.modules[b+f][e+i]=-2==f||2==f||-2==i||2==i||0==f&&0==i?!0:!1}},setupTypeNumber:function(a){for(var c=
j.getBCHTypeNumber(this.typeNumber),d=0;18>d;d++){var b=!a&&1==(c>>d&1);this.modules[Math.floor(d/3)][d%3+this.moduleCount-8-3]=b}for(d=0;18>d;d++)b=!a&&1==(c>>d&1),this.modules[d%3+this.moduleCount-8-3][Math.floor(d/3)]=b},setupTypeInfo:function(a,c){for(var d=j.getBCHTypeInfo(this.errorCorrectLevel<<3|c),b=0;15>b;b++){var e=!a&&1==(d>>b&1);6>b?this.modules[b][8]=e:8>b?this.modules[b+1][8]=e:this.modules[this.moduleCount-15+b][8]=e}for(b=0;15>b;b++)e=!a&&1==(d>>b&1),8>b?this.modules[8][this.moduleCount-
b-1]=e:9>b?this.modules[8][15-b-1+1]=e:this.modules[8][15-b-1]=e;this.modules[this.moduleCount-8][8]=!a},mapData:function(a,c){for(var d=-1,b=this.moduleCount-1,e=7,f=0,i=this.moduleCount-1;0<i;i-=2)for(6==i&&i--;;){for(var g=0;2>g;g++)if(null==this.modules[b][i-g]){var n=!1;f<a.length&&(n=1==(a[f]>>>e&1));j.getMask(c,b,i-g)&&(n=!n);this.modules[b][i-g]=n;e--; -1==e&&(f++,e=7)}b+=d;if(0>b||this.moduleCount<=b){b-=d;d=-d;break}}}};o.PAD0=236;o.PAD1=17;o.createData=function(a,c,d){for(var c=p.getRSBlocks(a,
c),b=new t,e=0;e<d.length;e++){var f=d[e];b.put(f.mode,4);b.put(f.getLength(),j.getLengthInBits(f.mode,a));f.write(b)}for(e=a=0;e<c.length;e++)a+=c[e].dataCount;if(b.getLengthInBits()>8*a)throw Error("code length overflow. ("+b.getLengthInBits()+">"+8*a+")");for(b.getLengthInBits()+4<=8*a&&b.put(0,4);0!=b.getLengthInBits()%8;)b.putBit(!1);for(;!(b.getLengthInBits()>=8*a);){b.put(o.PAD0,8);if(b.getLengthInBits()>=8*a)break;b.put(o.PAD1,8)}return o.createBytes(b,c)};o.createBytes=function(a,c){for(var d=
0,b=0,e=0,f=Array(c.length),i=Array(c.length),g=0;g<c.length;g++){var n=c[g].dataCount,h=c[g].totalCount-n,b=Math.max(b,n),e=Math.max(e,h);f[g]=Array(n);for(var k=0;k<f[g].length;k++)f[g][k]=255&a.buffer[k+d];d+=n;k=j.getErrorCorrectPolynomial(h);n=(new q(f[g],k.getLength()-1)).mod(k);i[g]=Array(k.getLength()-1);for(k=0;k<i[g].length;k++)h=k+n.getLength()-i[g].length,i[g][k]=0<=h?n.get(h):0}for(k=g=0;k<c.length;k++)g+=c[k].totalCount;d=Array(g);for(k=n=0;k<b;k++)for(g=0;g<c.length;g++)k<f[g].length&&
(d[n++]=f[g][k]);for(k=0;k<e;k++)for(g=0;g<c.length;g++)k<i[g].length&&(d[n++]=i[g][k]);return d};s=4;for(var j={PATTERN_POSITION_TABLE:[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,
78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],G15:1335,G18:7973,G15_MASK:21522,getBCHTypeInfo:function(a){for(var c=a<<10;0<=j.getBCHDigit(c)-j.getBCHDigit(j.G15);)c^=j.G15<<j.getBCHDigit(c)-j.getBCHDigit(j.G15);return(a<<10|c)^j.G15_MASK},getBCHTypeNumber:function(a){for(var c=a<<12;0<=j.getBCHDigit(c)-
j.getBCHDigit(j.G18);)c^=j.G18<<j.getBCHDigit(c)-j.getBCHDigit(j.G18);return a<<12|c},getBCHDigit:function(a){for(var c=0;0!=a;)c++,a>>>=1;return c},getPatternPosition:function(a){return j.PATTERN_POSITION_TABLE[a-1]},getMask:function(a,c,d){switch(a){case 0:return 0==(c+d)%2;case 1:return 0==c%2;case 2:return 0==d%3;case 3:return 0==(c+d)%3;case 4:return 0==(Math.floor(c/2)+Math.floor(d/3))%2;case 5:return 0==c*d%2+c*d%3;case 6:return 0==(c*d%2+c*d%3)%2;case 7:return 0==(c*d%3+(c+d)%2)%2;default:throw Error("bad maskPattern:"+
a);}},getErrorCorrectPolynomial:function(a){for(var c=new q([1],0),d=0;d<a;d++)c=c.multiply(new q([1,l.gexp(d)],0));return c},getLengthInBits:function(a,c){if(1<=c&&10>c)switch(a){case 1:return 10;case 2:return 9;case s:return 8;case 8:return 8;default:throw Error("mode:"+a);}else if(27>c)switch(a){case 1:return 12;case 2:return 11;case s:return 16;case 8:return 10;default:throw Error("mode:"+a);}else if(41>c)switch(a){case 1:return 14;case 2:return 13;case s:return 16;case 8:return 12;default:throw Error("mode:"+
a);}else throw Error("type:"+c);},getLostPoint:function(a){for(var c=a.getModuleCount(),d=0,b=0;b<c;b++)for(var e=0;e<c;e++){for(var f=0,i=a.isDark(b,e),g=-1;1>=g;g++)if(!(0>b+g||c<=b+g))for(var h=-1;1>=h;h++)0>e+h||c<=e+h||0==g&&0==h||i==a.isDark(b+g,e+h)&&f++;5<f&&(d+=3+f-5)}for(b=0;b<c-1;b++)for(e=0;e<c-1;e++)if(f=0,a.isDark(b,e)&&f++,a.isDark(b+1,e)&&f++,a.isDark(b,e+1)&&f++,a.isDark(b+1,e+1)&&f++,0==f||4==f)d+=3;for(b=0;b<c;b++)for(e=0;e<c-6;e++)a.isDark(b,e)&&!a.isDark(b,e+1)&&a.isDark(b,e+
2)&&a.isDark(b,e+3)&&a.isDark(b,e+4)&&!a.isDark(b,e+5)&&a.isDark(b,e+6)&&(d+=40);for(e=0;e<c;e++)for(b=0;b<c-6;b++)a.isDark(b,e)&&!a.isDark(b+1,e)&&a.isDark(b+2,e)&&a.isDark(b+3,e)&&a.isDark(b+4,e)&&!a.isDark(b+5,e)&&a.isDark(b+6,e)&&(d+=40);for(e=f=0;e<c;e++)for(b=0;b<c;b++)a.isDark(b,e)&&f++;a=Math.abs(100*f/c/c-50)/5;return d+10*a}},l={glog:function(a){if(1>a)throw Error("glog("+a+")");return l.LOG_TABLE[a]},gexp:function(a){for(;0>a;)a+=255;for(;256<=a;)a-=255;return l.EXP_TABLE[a]},EXP_TABLE:Array(256),
LOG_TABLE:Array(256)},m=0;8>m;m++)l.EXP_TABLE[m]=1<<m;for(m=8;256>m;m++)l.EXP_TABLE[m]=l.EXP_TABLE[m-4]^l.EXP_TABLE[m-5]^l.EXP_TABLE[m-6]^l.EXP_TABLE[m-8];for(m=0;255>m;m++)l.LOG_TABLE[l.EXP_TABLE[m]]=m;q.prototype={get:function(a){return this.num[a]},getLength:function(){return this.num.length},multiply:function(a){for(var c=Array(this.getLength()+a.getLength()-1),d=0;d<this.getLength();d++)for(var b=0;b<a.getLength();b++)c[d+b]^=l.gexp(l.glog(this.get(d))+l.glog(a.get(b)));return new q(c,0)},mod:function(a){if(0>
this.getLength()-a.getLength())return this;for(var c=l.glog(this.get(0))-l.glog(a.get(0)),d=Array(this.getLength()),b=0;b<this.getLength();b++)d[b]=this.get(b);for(b=0;b<a.getLength();b++)d[b]^=l.gexp(l.glog(a.get(b))+c);return(new q(d,0)).mod(a)}};p.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],
[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,
116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,
43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,
3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,
55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,
45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]];p.getRSBlocks=function(a,c){var d=p.getRsBlockTable(a,c);if(void 0==d)throw Error("bad rs block @ typeNumber:"+a+"/errorCorrectLevel:"+c);for(var b=d.length/3,e=[],f=0;f<b;f++)for(var h=d[3*f+0],g=d[3*f+1],j=d[3*f+2],l=0;l<h;l++)e.push(new p(g,j));return e};p.getRsBlockTable=function(a,c){switch(c){case 1:return p.RS_BLOCK_TABLE[4*(a-1)+0];case 0:return p.RS_BLOCK_TABLE[4*(a-1)+1];case 3:return p.RS_BLOCK_TABLE[4*
(a-1)+2];case 2:return p.RS_BLOCK_TABLE[4*(a-1)+3]}};t.prototype={get:function(a){return 1==(this.buffer[Math.floor(a/8)]>>>7-a%8&1)},put:function(a,c){for(var d=0;d<c;d++)this.putBit(1==(a>>>c-d-1&1))},getLengthInBits:function(){return this.length},putBit:function(a){var c=Math.floor(this.length/8);this.buffer.length<=c&&this.buffer.push(0);a&&(this.buffer[c]|=128>>>this.length%8);this.length++}};"string"===typeof h&&(h={text:h});h=r.extend({},{render:"canvas",width:256,height:256,typeNumber:-1,
correctLevel:2,background:"#ffffff",foreground:"#000000"},h);return this.each(function(){var a;if("canvas"==h.render){a=new o(h.typeNumber,h.correctLevel);a.addData(h.text);a.make();var c=document.createElement("canvas");c.width=h.width;c.height=h.height;for(var d=c.getContext("2d"),b=h.width/a.getModuleCount(),e=h.height/a.getModuleCount(),f=0;f<a.getModuleCount();f++)for(var i=0;i<a.getModuleCount();i++){d.fillStyle=a.isDark(f,i)?h.foreground:h.background;var g=Math.ceil((i+1)*b)-Math.floor(i*b),
j=Math.ceil((f+1)*b)-Math.floor(f*b);d.fillRect(Math.round(i*b),Math.round(f*e),g,j)}}else{a=new o(h.typeNumber,h.correctLevel);a.addData(h.text);a.make();c=r("<table></table>").css("width",h.width+"px").css("height",h.height+"px").css("border","0px").css("border-collapse","collapse").css("background-color",h.background);d=h.width/a.getModuleCount();b=h.height/a.getModuleCount();for(e=0;e<a.getModuleCount();e++){f=r("<tr></tr>").css("height",b+"px").appendTo(c);for(i=0;i<a.getModuleCount();i++)r("<td></td>").css("width",
d+"px").css("background-color",a.isDark(e,i)?h.foreground:h.background).appendTo(f)}}a=c;jQuery(a).appendTo(this)})}})(jQuery);
modules/login-security/js/chart.umd.1722265817.js000064400000614666150755146440015155 0ustar00/*!
 * Chart.js v4.2.1
 * https://www.chartjs.org
 * (c) 2023 Chart.js Contributors
 * Released under the MIT License
 */
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Chart=e()}(this,(function(){"use strict";var t=Object.freeze({__proto__:null,get Colors(){return jo},get Decimation(){return Uo},get Filler(){return ha},get Legend(){return fa},get SubTitle(){return ba},get Title(){return pa},get Tooltip(){return La}});function e(){}const i=(()=>{let t=0;return()=>t++})();function s(t){return null==t}function n(t){if(Array.isArray&&Array.isArray(t))return!0;const e=Object.prototype.toString.call(t);return"[object"===e.slice(0,7)&&"Array]"===e.slice(-6)}function o(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)}function a(t){return("number"==typeof t||t instanceof Number)&&isFinite(+t)}function r(t,e){return a(t)?t:e}function l(t,e){return void 0===t?e:t}const h=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100:+t/e,c=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100*e:+t;function d(t,e,i){if(t&&"function"==typeof t.call)return t.apply(i,e)}function u(t,e,i,s){let a,r,l;if(n(t))if(r=t.length,s)for(a=r-1;a>=0;a--)e.call(i,t[a],a);else for(a=0;a<r;a++)e.call(i,t[a],a);else if(o(t))for(l=Object.keys(t),r=l.length,a=0;a<r;a++)e.call(i,t[l[a]],l[a])}function f(t,e){let i,s,n,o;if(!t||!e||t.length!==e.length)return!1;for(i=0,s=t.length;i<s;++i)if(n=t[i],o=e[i],n.datasetIndex!==o.datasetIndex||n.index!==o.index)return!1;return!0}function g(t){if(n(t))return t.map(g);if(o(t)){const e=Object.create(null),i=Object.keys(t),s=i.length;let n=0;for(;n<s;++n)e[i[n]]=g(t[i[n]]);return e}return t}function p(t){return-1===["__proto__","prototype","constructor"].indexOf(t)}function m(t,e,i,s){if(!p(t))return;const n=e[t],a=i[t];o(n)&&o(a)?b(n,a,s):e[t]=g(a)}function b(t,e,i){const s=n(e)?e:[e],a=s.length;if(!o(t))return t;const r=(i=i||{}).merger||m;let l;for(let e=0;e<a;++e){if(l=s[e],!o(l))continue;const n=Object.keys(l);for(let e=0,s=n.length;e<s;++e)r(n[e],t,l,i)}return t}function x(t,e){return b(t,e,{merger:_})}function _(t,e,i){if(!p(t))return;const s=e[t],n=i[t];o(s)&&o(n)?x(s,n):Object.prototype.hasOwnProperty.call(e,t)||(e[t]=g(n))}const y={"":t=>t,x:t=>t.x,y:t=>t.y};function v(t){const e=t.split("."),i=[];let s="";for(const t of e)s+=t,s.endsWith("\\")?s=s.slice(0,-1)+".":(i.push(s),s="");return i}function M(t,e){const i=y[e]||(y[e]=function(t){const e=v(t);return t=>{for(const i of e){if(""===i)break;t=t&&t[i]}return t}}(e));return i(t)}function w(t){return t.charAt(0).toUpperCase()+t.slice(1)}const k=t=>void 0!==t,S=t=>"function"==typeof t,P=(t,e)=>{if(t.size!==e.size)return!1;for(const i of t)if(!e.has(i))return!1;return!0};function D(t){return"mouseup"===t.type||"click"===t.type||"contextmenu"===t.type}const C=Math.PI,O=2*C,A=O+C,T=Number.POSITIVE_INFINITY,L=C/180,E=C/2,R=C/4,I=2*C/3,z=Math.log10,F=Math.sign;function V(t,e,i){return Math.abs(t-e)<i}function B(t){const e=Math.round(t);t=V(t,e,t/1e3)?e:t;const i=Math.pow(10,Math.floor(z(t))),s=t/i;return(s<=1?1:s<=2?2:s<=5?5:10)*i}function N(t){const e=[],i=Math.sqrt(t);let s;for(s=1;s<i;s++)t%s==0&&(e.push(s),e.push(t/s));return i===(0|i)&&e.push(i),e.sort(((t,e)=>t-e)).pop(),e}function W(t){return!isNaN(parseFloat(t))&&isFinite(t)}function H(t,e){const i=Math.round(t);return i-e<=t&&i+e>=t}function j(t,e,i){let s,n,o;for(s=0,n=t.length;s<n;s++)o=t[s][i],isNaN(o)||(e.min=Math.min(e.min,o),e.max=Math.max(e.max,o))}function $(t){return t*(C/180)}function Y(t){return t*(180/C)}function U(t){if(!a(t))return;let e=1,i=0;for(;Math.round(t*e)/e!==t;)e*=10,i++;return i}function X(t,e){const i=e.x-t.x,s=e.y-t.y,n=Math.sqrt(i*i+s*s);let o=Math.atan2(s,i);return o<-.5*C&&(o+=O),{angle:o,distance:n}}function q(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function K(t,e){return(t-e+A)%O-C}function G(t){return(t%O+O)%O}function Z(t,e,i,s){const n=G(t),o=G(e),a=G(i),r=G(o-n),l=G(a-n),h=G(n-o),c=G(n-a);return n===o||n===a||s&&o===a||r>l&&h<c}function J(t,e,i){return Math.max(e,Math.min(i,t))}function Q(t){return J(t,-32768,32767)}function tt(t,e,i,s=1e-6){return t>=Math.min(e,i)-s&&t<=Math.max(e,i)+s}function et(t,e,i){i=i||(i=>t[i]<e);let s,n=t.length-1,o=0;for(;n-o>1;)s=o+n>>1,i(s)?o=s:n=s;return{lo:o,hi:n}}const it=(t,e,i,s)=>et(t,i,s?s=>{const n=t[s][e];return n<i||n===i&&t[s+1][e]===i}:s=>t[s][e]<i),st=(t,e,i)=>et(t,i,(s=>t[s][e]>=i));function nt(t,e,i){let s=0,n=t.length;for(;s<n&&t[s]<e;)s++;for(;n>s&&t[n-1]>i;)n--;return s>0||n<t.length?t.slice(s,n):t}const ot=["push","pop","shift","splice","unshift"];function at(t,e){t._chartjs?t._chartjs.listeners.push(e):(Object.defineProperty(t,"_chartjs",{configurable:!0,enumerable:!1,value:{listeners:[e]}}),ot.forEach((e=>{const i="_onData"+w(e),s=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value(...e){const n=s.apply(this,e);return t._chartjs.listeners.forEach((t=>{"function"==typeof t[i]&&t[i](...e)})),n}})})))}function rt(t,e){const i=t._chartjs;if(!i)return;const s=i.listeners,n=s.indexOf(e);-1!==n&&s.splice(n,1),s.length>0||(ot.forEach((e=>{delete t[e]})),delete t._chartjs)}function lt(t){const e=new Set;let i,s;for(i=0,s=t.length;i<s;++i)e.add(t[i]);return e.size===s?t:Array.from(e)}const ht="undefined"==typeof window?function(t){return t()}:window.requestAnimationFrame;function ct(t,e){let i=[],s=!1;return function(...n){i=n,s||(s=!0,ht.call(window,(()=>{s=!1,t.apply(e,i)})))}}function dt(t,e){let i;return function(...s){return e?(clearTimeout(i),i=setTimeout(t,e,s)):t.apply(this,s),e}}const ut=t=>"start"===t?"left":"end"===t?"right":"center",ft=(t,e,i)=>"start"===t?e:"end"===t?i:(e+i)/2,gt=(t,e,i,s)=>t===(s?"left":"right")?i:"center"===t?(e+i)/2:e;function pt(t,e,i){const s=e.length;let n=0,o=s;if(t._sorted){const{iScale:a,_parsed:r}=t,l=a.axis,{min:h,max:c,minDefined:d,maxDefined:u}=a.getUserBounds();d&&(n=J(Math.min(it(r,a.axis,h).lo,i?s:it(e,l,a.getPixelForValue(h)).lo),0,s-1)),o=u?J(Math.max(it(r,a.axis,c,!0).hi+1,i?0:it(e,l,a.getPixelForValue(c),!0).hi+1),n,s)-n:s-n}return{start:n,count:o}}function mt(t){const{xScale:e,yScale:i,_scaleRanges:s}=t,n={xmin:e.min,xmax:e.max,ymin:i.min,ymax:i.max};if(!s)return t._scaleRanges=n,!0;const o=s.xmin!==e.min||s.xmax!==e.max||s.ymin!==i.min||s.ymax!==i.max;return Object.assign(s,n),o}class bt{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(t,e,i,s){const n=e.listeners[s],o=e.duration;n.forEach((s=>s({chart:t,initial:e.initial,numSteps:o,currentStep:Math.min(i-e.start,o)})))}_refresh(){this._request||(this._running=!0,this._request=ht.call(window,(()=>{this._update(),this._request=null,this._running&&this._refresh()})))}_update(t=Date.now()){let e=0;this._charts.forEach(((i,s)=>{if(!i.running||!i.items.length)return;const n=i.items;let o,a=n.length-1,r=!1;for(;a>=0;--a)o=n[a],o._active?(o._total>i.duration&&(i.duration=o._total),o.tick(t),r=!0):(n[a]=n[n.length-1],n.pop());r&&(s.draw(),this._notify(s,i,t,"progress")),n.length||(i.running=!1,this._notify(s,i,t,"complete"),i.initial=!1),e+=n.length})),this._lastDate=t,0===e&&(this._running=!1)}_getAnims(t){const e=this._charts;let i=e.get(t);return i||(i={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},e.set(t,i)),i}listen(t,e,i){this._getAnims(t).listeners[e].push(i)}add(t,e){e&&e.length&&this._getAnims(t).items.push(...e)}has(t){return this._getAnims(t).items.length>0}start(t){const e=this._charts.get(t);e&&(e.running=!0,e.start=Date.now(),e.duration=e.items.reduce(((t,e)=>Math.max(t,e._duration)),0),this._refresh())}running(t){if(!this._running)return!1;const e=this._charts.get(t);return!!(e&&e.running&&e.items.length)}stop(t){const e=this._charts.get(t);if(!e||!e.items.length)return;const i=e.items;let s=i.length-1;for(;s>=0;--s)i[s].cancel();e.items=[],this._notify(t,e,Date.now(),"complete")}remove(t){return this._charts.delete(t)}}var xt=new bt;
/*!
 * @kurkle/color v0.3.0
 * https://github.com/kurkle/color#readme
 * (c) 2022 Jukka Kurkela
 * Released under the MIT License
 */function _t(t){return t+.5|0}const yt=(t,e,i)=>Math.max(Math.min(t,i),e);function vt(t){return yt(_t(2.55*t),0,255)}function Mt(t){return yt(_t(255*t),0,255)}function wt(t){return yt(_t(t/2.55)/100,0,1)}function kt(t){return yt(_t(100*t),0,100)}const St={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},Pt=[..."0123456789ABCDEF"],Dt=t=>Pt[15&t],Ct=t=>Pt[(240&t)>>4]+Pt[15&t],Ot=t=>(240&t)>>4==(15&t);function At(t){var e=(t=>Ot(t.r)&&Ot(t.g)&&Ot(t.b)&&Ot(t.a))(t)?Dt:Ct;return t?"#"+e(t.r)+e(t.g)+e(t.b)+((t,e)=>t<255?e(t):"")(t.a,e):void 0}const Tt=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function Lt(t,e,i){const s=e*Math.min(i,1-i),n=(e,n=(e+t/30)%12)=>i-s*Math.max(Math.min(n-3,9-n,1),-1);return[n(0),n(8),n(4)]}function Et(t,e,i){const s=(s,n=(s+t/60)%6)=>i-i*e*Math.max(Math.min(n,4-n,1),0);return[s(5),s(3),s(1)]}function Rt(t,e,i){const s=Lt(t,1,.5);let n;for(e+i>1&&(n=1/(e+i),e*=n,i*=n),n=0;n<3;n++)s[n]*=1-e-i,s[n]+=e;return s}function It(t){const e=t.r/255,i=t.g/255,s=t.b/255,n=Math.max(e,i,s),o=Math.min(e,i,s),a=(n+o)/2;let r,l,h;return n!==o&&(h=n-o,l=a>.5?h/(2-n-o):h/(n+o),r=function(t,e,i,s,n){return t===n?(e-i)/s+(e<i?6:0):e===n?(i-t)/s+2:(t-e)/s+4}(e,i,s,h,n),r=60*r+.5),[0|r,l||0,a]}function zt(t,e,i,s){return(Array.isArray(e)?t(e[0],e[1],e[2]):t(e,i,s)).map(Mt)}function Ft(t,e,i){return zt(Lt,t,e,i)}function Vt(t){return(t%360+360)%360}function Bt(t){const e=Tt.exec(t);let i,s=255;if(!e)return;e[5]!==i&&(s=e[6]?vt(+e[5]):Mt(+e[5]));const n=Vt(+e[2]),o=+e[3]/100,a=+e[4]/100;return i="hwb"===e[1]?function(t,e,i){return zt(Rt,t,e,i)}(n,o,a):"hsv"===e[1]?function(t,e,i){return zt(Et,t,e,i)}(n,o,a):Ft(n,o,a),{r:i[0],g:i[1],b:i[2],a:s}}const Nt={x:"dark",Z:"light",Y:"re",X:"blu",W:"gr",V:"medium",U:"slate",A:"ee",T:"ol",S:"or",B:"ra",C:"lateg",D:"ights",R:"in",Q:"turquois",E:"hi",P:"ro",O:"al",N:"le",M:"de",L:"yello",F:"en",K:"ch",G:"arks",H:"ea",I:"ightg",J:"wh"},Wt={OiceXe:"f0f8ff",antiquewEte:"faebd7",aqua:"ffff",aquamarRe:"7fffd4",azuY:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"0",blanKedOmond:"ffebcd",Xe:"ff",XeviTet:"8a2be2",bPwn:"a52a2a",burlywood:"deb887",caMtXe:"5f9ea0",KartYuse:"7fff00",KocTate:"d2691e",cSO:"ff7f50",cSnflowerXe:"6495ed",cSnsilk:"fff8dc",crimson:"dc143c",cyan:"ffff",xXe:"8b",xcyan:"8b8b",xgTMnPd:"b8860b",xWay:"a9a9a9",xgYF:"6400",xgYy:"a9a9a9",xkhaki:"bdb76b",xmagFta:"8b008b",xTivegYF:"556b2f",xSange:"ff8c00",xScEd:"9932cc",xYd:"8b0000",xsOmon:"e9967a",xsHgYF:"8fbc8f",xUXe:"483d8b",xUWay:"2f4f4f",xUgYy:"2f4f4f",xQe:"ced1",xviTet:"9400d3",dAppRk:"ff1493",dApskyXe:"bfff",dimWay:"696969",dimgYy:"696969",dodgerXe:"1e90ff",fiYbrick:"b22222",flSOwEte:"fffaf0",foYstWAn:"228b22",fuKsia:"ff00ff",gaRsbSo:"dcdcdc",ghostwEte:"f8f8ff",gTd:"ffd700",gTMnPd:"daa520",Way:"808080",gYF:"8000",gYFLw:"adff2f",gYy:"808080",honeyMw:"f0fff0",hotpRk:"ff69b4",RdianYd:"cd5c5c",Rdigo:"4b0082",ivSy:"fffff0",khaki:"f0e68c",lavFMr:"e6e6fa",lavFMrXsh:"fff0f5",lawngYF:"7cfc00",NmoncEffon:"fffacd",ZXe:"add8e6",ZcSO:"f08080",Zcyan:"e0ffff",ZgTMnPdLw:"fafad2",ZWay:"d3d3d3",ZgYF:"90ee90",ZgYy:"d3d3d3",ZpRk:"ffb6c1",ZsOmon:"ffa07a",ZsHgYF:"20b2aa",ZskyXe:"87cefa",ZUWay:"778899",ZUgYy:"778899",ZstAlXe:"b0c4de",ZLw:"ffffe0",lime:"ff00",limegYF:"32cd32",lRF:"faf0e6",magFta:"ff00ff",maPon:"800000",VaquamarRe:"66cdaa",VXe:"cd",VScEd:"ba55d3",VpurpN:"9370db",VsHgYF:"3cb371",VUXe:"7b68ee",VsprRggYF:"fa9a",VQe:"48d1cc",VviTetYd:"c71585",midnightXe:"191970",mRtcYam:"f5fffa",mistyPse:"ffe4e1",moccasR:"ffe4b5",navajowEte:"ffdead",navy:"80",Tdlace:"fdf5e6",Tive:"808000",TivedBb:"6b8e23",Sange:"ffa500",SangeYd:"ff4500",ScEd:"da70d6",pOegTMnPd:"eee8aa",pOegYF:"98fb98",pOeQe:"afeeee",pOeviTetYd:"db7093",papayawEp:"ffefd5",pHKpuff:"ffdab9",peru:"cd853f",pRk:"ffc0cb",plum:"dda0dd",powMrXe:"b0e0e6",purpN:"800080",YbeccapurpN:"663399",Yd:"ff0000",Psybrown:"bc8f8f",PyOXe:"4169e1",saddNbPwn:"8b4513",sOmon:"fa8072",sandybPwn:"f4a460",sHgYF:"2e8b57",sHshell:"fff5ee",siFna:"a0522d",silver:"c0c0c0",skyXe:"87ceeb",UXe:"6a5acd",UWay:"708090",UgYy:"708090",snow:"fffafa",sprRggYF:"ff7f",stAlXe:"4682b4",tan:"d2b48c",teO:"8080",tEstN:"d8bfd8",tomato:"ff6347",Qe:"40e0d0",viTet:"ee82ee",JHt:"f5deb3",wEte:"ffffff",wEtesmoke:"f5f5f5",Lw:"ffff00",LwgYF:"9acd32"};let Ht;function jt(t){Ht||(Ht=function(){const t={},e=Object.keys(Wt),i=Object.keys(Nt);let s,n,o,a,r;for(s=0;s<e.length;s++){for(a=r=e[s],n=0;n<i.length;n++)o=i[n],r=r.replace(o,Nt[o]);o=parseInt(Wt[a],16),t[r]=[o>>16&255,o>>8&255,255&o]}return t}(),Ht.transparent=[0,0,0,0]);const e=Ht[t.toLowerCase()];return e&&{r:e[0],g:e[1],b:e[2],a:4===e.length?e[3]:255}}const $t=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;const Yt=t=>t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055,Ut=t=>t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4);function Xt(t,e,i){if(t){let s=It(t);s[e]=Math.max(0,Math.min(s[e]+s[e]*i,0===e?360:1)),s=Ft(s),t.r=s[0],t.g=s[1],t.b=s[2]}}function qt(t,e){return t?Object.assign(e||{},t):t}function Kt(t){var e={r:0,g:0,b:0,a:255};return Array.isArray(t)?t.length>=3&&(e={r:t[0],g:t[1],b:t[2],a:255},t.length>3&&(e.a=Mt(t[3]))):(e=qt(t,{r:0,g:0,b:0,a:1})).a=Mt(e.a),e}function Gt(t){return"r"===t.charAt(0)?function(t){const e=$t.exec(t);let i,s,n,o=255;if(e){if(e[7]!==i){const t=+e[7];o=e[8]?vt(t):yt(255*t,0,255)}return i=+e[1],s=+e[3],n=+e[5],i=255&(e[2]?vt(i):yt(i,0,255)),s=255&(e[4]?vt(s):yt(s,0,255)),n=255&(e[6]?vt(n):yt(n,0,255)),{r:i,g:s,b:n,a:o}}}(t):Bt(t)}class Zt{constructor(t){if(t instanceof Zt)return t;const e=typeof t;let i;var s,n,o;"object"===e?i=Kt(t):"string"===e&&(o=(s=t).length,"#"===s[0]&&(4===o||5===o?n={r:255&17*St[s[1]],g:255&17*St[s[2]],b:255&17*St[s[3]],a:5===o?17*St[s[4]]:255}:7!==o&&9!==o||(n={r:St[s[1]]<<4|St[s[2]],g:St[s[3]]<<4|St[s[4]],b:St[s[5]]<<4|St[s[6]],a:9===o?St[s[7]]<<4|St[s[8]]:255})),i=n||jt(t)||Gt(t)),this._rgb=i,this._valid=!!i}get valid(){return this._valid}get rgb(){var t=qt(this._rgb);return t&&(t.a=wt(t.a)),t}set rgb(t){this._rgb=Kt(t)}rgbString(){return this._valid?(t=this._rgb)&&(t.a<255?`rgba(${t.r}, ${t.g}, ${t.b}, ${wt(t.a)})`:`rgb(${t.r}, ${t.g}, ${t.b})`):void 0;var t}hexString(){return this._valid?At(this._rgb):void 0}hslString(){return this._valid?function(t){if(!t)return;const e=It(t),i=e[0],s=kt(e[1]),n=kt(e[2]);return t.a<255?`hsla(${i}, ${s}%, ${n}%, ${wt(t.a)})`:`hsl(${i}, ${s}%, ${n}%)`}(this._rgb):void 0}mix(t,e){if(t){const i=this.rgb,s=t.rgb;let n;const o=e===n?.5:e,a=2*o-1,r=i.a-s.a,l=((a*r==-1?a:(a+r)/(1+a*r))+1)/2;n=1-l,i.r=255&l*i.r+n*s.r+.5,i.g=255&l*i.g+n*s.g+.5,i.b=255&l*i.b+n*s.b+.5,i.a=o*i.a+(1-o)*s.a,this.rgb=i}return this}interpolate(t,e){return t&&(this._rgb=function(t,e,i){const s=Ut(wt(t.r)),n=Ut(wt(t.g)),o=Ut(wt(t.b));return{r:Mt(Yt(s+i*(Ut(wt(e.r))-s))),g:Mt(Yt(n+i*(Ut(wt(e.g))-n))),b:Mt(Yt(o+i*(Ut(wt(e.b))-o))),a:t.a+i*(e.a-t.a)}}(this._rgb,t._rgb,e)),this}clone(){return new Zt(this.rgb)}alpha(t){return this._rgb.a=Mt(t),this}clearer(t){return this._rgb.a*=1-t,this}greyscale(){const t=this._rgb,e=_t(.3*t.r+.59*t.g+.11*t.b);return t.r=t.g=t.b=e,this}opaquer(t){return this._rgb.a*=1+t,this}negate(){const t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,this}lighten(t){return Xt(this._rgb,2,t),this}darken(t){return Xt(this._rgb,2,-t),this}saturate(t){return Xt(this._rgb,1,t),this}desaturate(t){return Xt(this._rgb,1,-t),this}rotate(t){return function(t,e){var i=It(t);i[0]=Vt(i[0]+e),i=Ft(i),t.r=i[0],t.g=i[1],t.b=i[2]}(this._rgb,t),this}}function Jt(t){if(t&&"object"==typeof t){const e=t.toString();return"[object CanvasPattern]"===e||"[object CanvasGradient]"===e}return!1}function Qt(t){return Jt(t)?t:new Zt(t)}function te(t){return Jt(t)?t:new Zt(t).saturate(.5).darken(.1).hexString()}const ee=["x","y","borderWidth","radius","tension"],ie=["color","borderColor","backgroundColor"];const se=new Map;function ne(t,e,i){return function(t,e){e=e||{};const i=t+JSON.stringify(e);let s=se.get(i);return s||(s=new Intl.NumberFormat(t,e),se.set(i,s)),s}(e,i).format(t)}const oe={values:t=>n(t)?t:""+t,numeric(t,e,i){if(0===t)return"0";const s=this.chart.options.locale;let n,o=t;if(i.length>1){const e=Math.max(Math.abs(i[0].value),Math.abs(i[i.length-1].value));(e<1e-4||e>1e15)&&(n="scientific"),o=function(t,e){let i=e.length>3?e[2].value-e[1].value:e[1].value-e[0].value;Math.abs(i)>=1&&t!==Math.floor(t)&&(i=t-Math.floor(t));return i}(t,i)}const a=z(Math.abs(o)),r=Math.max(Math.min(-1*Math.floor(a),20),0),l={notation:n,minimumFractionDigits:r,maximumFractionDigits:r};return Object.assign(l,this.options.ticks.format),ne(t,s,l)},logarithmic(t,e,i){if(0===t)return"0";const s=i[e].significand||t/Math.pow(10,Math.floor(z(t)));return[1,2,3,5,10,15].includes(s)||e>.8*i.length?oe.numeric.call(this,t,e,i):""}};var ae={formatters:oe};const re=Object.create(null),le=Object.create(null);function he(t,e){if(!e)return t;const i=e.split(".");for(let e=0,s=i.length;e<s;++e){const s=i[e];t=t[s]||(t[s]=Object.create(null))}return t}function ce(t,e,i){return"string"==typeof e?b(he(t,e),i):b(he(t,""),e)}class de{constructor(t,e){this.animation=void 0,this.backgroundColor="rgba(0,0,0,0.1)",this.borderColor="rgba(0,0,0,0.1)",this.color="#666",this.datasets={},this.devicePixelRatio=t=>t.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(t,e)=>te(e.backgroundColor),this.hoverBorderColor=(t,e)=>te(e.borderColor),this.hoverColor=(t,e)=>te(e.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(t),this.apply(e)}set(t,e){return ce(this,t,e)}get(t){return he(this,t)}describe(t,e){return ce(le,t,e)}override(t,e){return ce(re,t,e)}route(t,e,i,s){const n=he(this,t),a=he(this,i),r="_"+e;Object.defineProperties(n,{[r]:{value:n[e],writable:!0},[e]:{enumerable:!0,get(){const t=this[r],e=a[s];return o(t)?Object.assign({},e,t):l(t,e)},set(t){this[r]=t}}})}apply(t){t.forEach((t=>t(this)))}}var ue=new de({_scriptable:t=>!t.startsWith("on"),_indexable:t=>"events"!==t,hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}},[function(t){t.set("animation",{delay:void 0,duration:1e3,easing:"easeOutQuart",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),t.describe("animation",{_fallback:!1,_indexable:!1,_scriptable:t=>"onProgress"!==t&&"onComplete"!==t&&"fn"!==t}),t.set("animations",{colors:{type:"color",properties:ie},numbers:{type:"number",properties:ee}}),t.describe("animations",{_fallback:"animation"}),t.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:t=>0|t}}}})},function(t){t.set("layout",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})},function(t){t.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(t,e)=>e.lineWidth,tickColor:(t,e)=>e.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:ae.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),t.route("scale.ticks","color","","color"),t.route("scale.grid","color","","borderColor"),t.route("scale.border","color","","borderColor"),t.route("scale.title","color","","color"),t.describe("scale",{_fallback:!1,_scriptable:t=>!t.startsWith("before")&&!t.startsWith("after")&&"callback"!==t&&"parser"!==t,_indexable:t=>"borderDash"!==t&&"tickBorderDash"!==t&&"dash"!==t}),t.describe("scales",{_fallback:"scale"}),t.describe("scale.ticks",{_scriptable:t=>"backdropPadding"!==t&&"callback"!==t,_indexable:t=>"backdropPadding"!==t})}]);function fe(){return"undefined"!=typeof window&&"undefined"!=typeof document}function ge(t){let e=t.parentNode;return e&&"[object ShadowRoot]"===e.toString()&&(e=e.host),e}function pe(t,e,i){let s;return"string"==typeof t?(s=parseInt(t,10),-1!==t.indexOf("%")&&(s=s/100*e.parentNode[i])):s=t,s}const me=t=>t.ownerDocument.defaultView.getComputedStyle(t,null);function be(t,e){return me(t).getPropertyValue(e)}const xe=["top","right","bottom","left"];function _e(t,e,i){const s={};i=i?"-"+i:"";for(let n=0;n<4;n++){const o=xe[n];s[o]=parseFloat(t[e+"-"+o+i])||0}return s.width=s.left+s.right,s.height=s.top+s.bottom,s}function ye(t,e){if("native"in t)return t;const{canvas:i,currentDevicePixelRatio:s}=e,n=me(i),o="border-box"===n.boxSizing,a=_e(n,"padding"),r=_e(n,"border","width"),{x:l,y:h,box:c}=function(t,e){const i=t.touches,s=i&&i.length?i[0]:t,{offsetX:n,offsetY:o}=s;let a,r,l=!1;if(((t,e,i)=>(t>0||e>0)&&(!i||!i.shadowRoot))(n,o,t.target))a=n,r=o;else{const t=e.getBoundingClientRect();a=s.clientX-t.left,r=s.clientY-t.top,l=!0}return{x:a,y:r,box:l}}(t,i),d=a.left+(c&&r.left),u=a.top+(c&&r.top);let{width:f,height:g}=e;return o&&(f-=a.width+r.width,g-=a.height+r.height),{x:Math.round((l-d)/f*i.width/s),y:Math.round((h-u)/g*i.height/s)}}const ve=t=>Math.round(10*t)/10;function Me(t,e,i,s){const n=me(t),o=_e(n,"margin"),a=pe(n.maxWidth,t,"clientWidth")||T,r=pe(n.maxHeight,t,"clientHeight")||T,l=function(t,e,i){let s,n;if(void 0===e||void 0===i){const o=ge(t);if(o){const t=o.getBoundingClientRect(),a=me(o),r=_e(a,"border","width"),l=_e(a,"padding");e=t.width-l.width-r.width,i=t.height-l.height-r.height,s=pe(a.maxWidth,o,"clientWidth"),n=pe(a.maxHeight,o,"clientHeight")}else e=t.clientWidth,i=t.clientHeight}return{width:e,height:i,maxWidth:s||T,maxHeight:n||T}}(t,e,i);let{width:h,height:c}=l;if("content-box"===n.boxSizing){const t=_e(n,"border","width"),e=_e(n,"padding");h-=e.width+t.width,c-=e.height+t.height}h=Math.max(0,h-o.width),c=Math.max(0,s?h/s:c-o.height),h=ve(Math.min(h,a,l.maxWidth)),c=ve(Math.min(c,r,l.maxHeight)),h&&!c&&(c=ve(h/2));return(void 0!==e||void 0!==i)&&s&&l.height&&c>l.height&&(c=l.height,h=ve(Math.floor(c*s))),{width:h,height:c}}function we(t,e,i){const s=e||1,n=Math.floor(t.height*s),o=Math.floor(t.width*s);t.height=Math.floor(t.height),t.width=Math.floor(t.width);const a=t.canvas;return a.style&&(i||!a.style.height&&!a.style.width)&&(a.style.height=`${t.height}px`,a.style.width=`${t.width}px`),(t.currentDevicePixelRatio!==s||a.height!==n||a.width!==o)&&(t.currentDevicePixelRatio=s,a.height=n,a.width=o,t.ctx.setTransform(s,0,0,s,0,0),!0)}const ke=function(){let t=!1;try{const e={get passive(){return t=!0,!1}};window.addEventListener("test",null,e),window.removeEventListener("test",null,e)}catch(t){}return t}();function Se(t,e){const i=be(t,e),s=i&&i.match(/^(\d+)(\.\d+)?px$/);return s?+s[1]:void 0}function Pe(t){return!t||s(t.size)||s(t.family)?null:(t.style?t.style+" ":"")+(t.weight?t.weight+" ":"")+t.size+"px "+t.family}function De(t,e,i,s,n){let o=e[n];return o||(o=e[n]=t.measureText(n).width,i.push(n)),o>s&&(s=o),s}function Ce(t,e,i,s){let o=(s=s||{}).data=s.data||{},a=s.garbageCollect=s.garbageCollect||[];s.font!==e&&(o=s.data={},a=s.garbageCollect=[],s.font=e),t.save(),t.font=e;let r=0;const l=i.length;let h,c,d,u,f;for(h=0;h<l;h++)if(u=i[h],null!=u&&!0!==n(u))r=De(t,o,a,r,u);else if(n(u))for(c=0,d=u.length;c<d;c++)f=u[c],null==f||n(f)||(r=De(t,o,a,r,f));t.restore();const g=a.length/2;if(g>i.length){for(h=0;h<g;h++)delete o[a[h]];a.splice(0,g)}return r}function Oe(t,e,i){const s=t.currentDevicePixelRatio,n=0!==i?Math.max(i/2,.5):0;return Math.round((e-n)*s)/s+n}function Ae(t,e){(e=e||t.getContext("2d")).save(),e.resetTransform(),e.clearRect(0,0,t.width,t.height),e.restore()}function Te(t,e,i,s){Le(t,e,i,s,null)}function Le(t,e,i,s,n){let o,a,r,l,h,c,d,u;const f=e.pointStyle,g=e.rotation,p=e.radius;let m=(g||0)*L;if(f&&"object"==typeof f&&(o=f.toString(),"[object HTMLImageElement]"===o||"[object HTMLCanvasElement]"===o))return t.save(),t.translate(i,s),t.rotate(m),t.drawImage(f,-f.width/2,-f.height/2,f.width,f.height),void t.restore();if(!(isNaN(p)||p<=0)){switch(t.beginPath(),f){default:n?t.ellipse(i,s,n/2,p,0,0,O):t.arc(i,s,p,0,O),t.closePath();break;case"triangle":c=n?n/2:p,t.moveTo(i+Math.sin(m)*c,s-Math.cos(m)*p),m+=I,t.lineTo(i+Math.sin(m)*c,s-Math.cos(m)*p),m+=I,t.lineTo(i+Math.sin(m)*c,s-Math.cos(m)*p),t.closePath();break;case"rectRounded":h=.516*p,l=p-h,a=Math.cos(m+R)*l,d=Math.cos(m+R)*(n?n/2-h:l),r=Math.sin(m+R)*l,u=Math.sin(m+R)*(n?n/2-h:l),t.arc(i-d,s-r,h,m-C,m-E),t.arc(i+u,s-a,h,m-E,m),t.arc(i+d,s+r,h,m,m+E),t.arc(i-u,s+a,h,m+E,m+C),t.closePath();break;case"rect":if(!g){l=Math.SQRT1_2*p,c=n?n/2:l,t.rect(i-c,s-l,2*c,2*l);break}m+=R;case"rectRot":d=Math.cos(m)*(n?n/2:p),a=Math.cos(m)*p,r=Math.sin(m)*p,u=Math.sin(m)*(n?n/2:p),t.moveTo(i-d,s-r),t.lineTo(i+u,s-a),t.lineTo(i+d,s+r),t.lineTo(i-u,s+a),t.closePath();break;case"crossRot":m+=R;case"cross":d=Math.cos(m)*(n?n/2:p),a=Math.cos(m)*p,r=Math.sin(m)*p,u=Math.sin(m)*(n?n/2:p),t.moveTo(i-d,s-r),t.lineTo(i+d,s+r),t.moveTo(i+u,s-a),t.lineTo(i-u,s+a);break;case"star":d=Math.cos(m)*(n?n/2:p),a=Math.cos(m)*p,r=Math.sin(m)*p,u=Math.sin(m)*(n?n/2:p),t.moveTo(i-d,s-r),t.lineTo(i+d,s+r),t.moveTo(i+u,s-a),t.lineTo(i-u,s+a),m+=R,d=Math.cos(m)*(n?n/2:p),a=Math.cos(m)*p,r=Math.sin(m)*p,u=Math.sin(m)*(n?n/2:p),t.moveTo(i-d,s-r),t.lineTo(i+d,s+r),t.moveTo(i+u,s-a),t.lineTo(i-u,s+a);break;case"line":a=n?n/2:Math.cos(m)*p,r=Math.sin(m)*p,t.moveTo(i-a,s-r),t.lineTo(i+a,s+r);break;case"dash":t.moveTo(i,s),t.lineTo(i+Math.cos(m)*(n?n/2:p),s+Math.sin(m)*p);break;case!1:t.closePath()}t.fill(),e.borderWidth>0&&t.stroke()}}function Ee(t,e,i){return i=i||.5,!e||t&&t.x>e.left-i&&t.x<e.right+i&&t.y>e.top-i&&t.y<e.bottom+i}function Re(t,e){t.save(),t.beginPath(),t.rect(e.left,e.top,e.right-e.left,e.bottom-e.top),t.clip()}function Ie(t){t.restore()}function ze(t,e,i,s,n){if(!e)return t.lineTo(i.x,i.y);if("middle"===n){const s=(e.x+i.x)/2;t.lineTo(s,e.y),t.lineTo(s,i.y)}else"after"===n!=!!s?t.lineTo(e.x,i.y):t.lineTo(i.x,e.y);t.lineTo(i.x,i.y)}function Fe(t,e,i,s){if(!e)return t.lineTo(i.x,i.y);t.bezierCurveTo(s?e.cp1x:e.cp2x,s?e.cp1y:e.cp2y,s?i.cp2x:i.cp1x,s?i.cp2y:i.cp1y,i.x,i.y)}function Ve(t,e,i,o,a,r={}){const l=n(e)?e:[e],h=r.strokeWidth>0&&""!==r.strokeColor;let c,d;for(t.save(),t.font=a.string,function(t,e){e.translation&&t.translate(e.translation[0],e.translation[1]);s(e.rotation)||t.rotate(e.rotation);e.color&&(t.fillStyle=e.color);e.textAlign&&(t.textAlign=e.textAlign);e.textBaseline&&(t.textBaseline=e.textBaseline)}(t,r),c=0;c<l.length;++c)d=l[c],r.backdrop&&Ne(t,r.backdrop),h&&(r.strokeColor&&(t.strokeStyle=r.strokeColor),s(r.strokeWidth)||(t.lineWidth=r.strokeWidth),t.strokeText(d,i,o,r.maxWidth)),t.fillText(d,i,o,r.maxWidth),Be(t,i,o,d,r),o+=a.lineHeight;t.restore()}function Be(t,e,i,s,n){if(n.strikethrough||n.underline){const o=t.measureText(s),a=e-o.actualBoundingBoxLeft,r=e+o.actualBoundingBoxRight,l=i-o.actualBoundingBoxAscent,h=i+o.actualBoundingBoxDescent,c=n.strikethrough?(l+h)/2:h;t.strokeStyle=t.fillStyle,t.beginPath(),t.lineWidth=n.decorationWidth||2,t.moveTo(a,c),t.lineTo(r,c),t.stroke()}}function Ne(t,e){const i=t.fillStyle;t.fillStyle=e.color,t.fillRect(e.left,e.top,e.width,e.height),t.fillStyle=i}function We(t,e){const{x:i,y:s,w:n,h:o,radius:a}=e;t.arc(i+a.topLeft,s+a.topLeft,a.topLeft,-E,C,!0),t.lineTo(i,s+o-a.bottomLeft),t.arc(i+a.bottomLeft,s+o-a.bottomLeft,a.bottomLeft,C,E,!0),t.lineTo(i+n-a.bottomRight,s+o),t.arc(i+n-a.bottomRight,s+o-a.bottomRight,a.bottomRight,E,0,!0),t.lineTo(i+n,s+a.topRight),t.arc(i+n-a.topRight,s+a.topRight,a.topRight,0,-E,!0),t.lineTo(i+a.topLeft,s)}function He(t,e=[""],i=t,s,n=(()=>t[0])){k(s)||(s=Qe("_fallback",t));const o={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:t,_rootScopes:i,_fallback:s,_getTarget:n,override:n=>He([n,...t],e,i,s)};return new Proxy(o,{deleteProperty:(e,i)=>(delete e[i],delete e._keys,delete t[0][i],!0),get:(i,s)=>Xe(i,s,(()=>function(t,e,i,s){let n;for(const o of e)if(n=Qe(Ye(o,t),i),k(n))return Ue(t,n)?Ze(i,s,t,n):n}(s,e,t,i))),getOwnPropertyDescriptor:(t,e)=>Reflect.getOwnPropertyDescriptor(t._scopes[0],e),getPrototypeOf:()=>Reflect.getPrototypeOf(t[0]),has:(t,e)=>ti(t).includes(e),ownKeys:t=>ti(t),set(t,e,i){const s=t._storage||(t._storage=n());return t[e]=s[e]=i,delete t._keys,!0}})}function je(t,e,i,s){const a={_cacheable:!1,_proxy:t,_context:e,_subProxy:i,_stack:new Set,_descriptors:$e(t,s),setContext:e=>je(t,e,i,s),override:n=>je(t.override(n),e,i,s)};return new Proxy(a,{deleteProperty:(e,i)=>(delete e[i],delete t[i],!0),get:(t,e,i)=>Xe(t,e,(()=>function(t,e,i){const{_proxy:s,_context:a,_subProxy:r,_descriptors:l}=t;let h=s[e];S(h)&&l.isScriptable(e)&&(h=function(t,e,i,s){const{_proxy:n,_context:o,_subProxy:a,_stack:r}=i;if(r.has(t))throw new Error("Recursion detected: "+Array.from(r).join("->")+"->"+t);r.add(t),e=e(o,a||s),r.delete(t),Ue(t,e)&&(e=Ze(n._scopes,n,t,e));return e}(e,h,t,i));n(h)&&h.length&&(h=function(t,e,i,s){const{_proxy:n,_context:a,_subProxy:r,_descriptors:l}=i;if(k(a.index)&&s(t))e=e[a.index%e.length];else if(o(e[0])){const i=e,s=n._scopes.filter((t=>t!==i));e=[];for(const o of i){const i=Ze(s,n,t,o);e.push(je(i,a,r&&r[t],l))}}return e}(e,h,t,l.isIndexable));Ue(e,h)&&(h=je(h,a,r&&r[e],l));return h}(t,e,i))),getOwnPropertyDescriptor:(e,i)=>e._descriptors.allKeys?Reflect.has(t,i)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(t,i),getPrototypeOf:()=>Reflect.getPrototypeOf(t),has:(e,i)=>Reflect.has(t,i),ownKeys:()=>Reflect.ownKeys(t),set:(e,i,s)=>(t[i]=s,delete e[i],!0)})}function $e(t,e={scriptable:!0,indexable:!0}){const{_scriptable:i=e.scriptable,_indexable:s=e.indexable,_allKeys:n=e.allKeys}=t;return{allKeys:n,scriptable:i,indexable:s,isScriptable:S(i)?i:()=>i,isIndexable:S(s)?s:()=>s}}const Ye=(t,e)=>t?t+w(e):e,Ue=(t,e)=>o(e)&&"adapters"!==t&&(null===Object.getPrototypeOf(e)||e.constructor===Object);function Xe(t,e,i){if(Object.prototype.hasOwnProperty.call(t,e))return t[e];const s=i();return t[e]=s,s}function qe(t,e,i){return S(t)?t(e,i):t}const Ke=(t,e)=>!0===t?e:"string"==typeof t?M(e,t):void 0;function Ge(t,e,i,s,n){for(const o of e){const e=Ke(i,o);if(e){t.add(e);const o=qe(e._fallback,i,n);if(k(o)&&o!==i&&o!==s)return o}else if(!1===e&&k(s)&&i!==s)return null}return!1}function Ze(t,e,i,s){const a=e._rootScopes,r=qe(e._fallback,i,s),l=[...t,...a],h=new Set;h.add(s);let c=Je(h,l,i,r||i,s);return null!==c&&((!k(r)||r===i||(c=Je(h,l,r,c,s),null!==c))&&He(Array.from(h),[""],a,r,(()=>function(t,e,i){const s=t._getTarget();e in s||(s[e]={});const a=s[e];if(n(a)&&o(i))return i;return a||{}}(e,i,s))))}function Je(t,e,i,s,n){for(;i;)i=Ge(t,e,i,s,n);return i}function Qe(t,e){for(const i of e){if(!i)continue;const e=i[t];if(k(e))return e}}function ti(t){let e=t._keys;return e||(e=t._keys=function(t){const e=new Set;for(const i of t)for(const t of Object.keys(i).filter((t=>!t.startsWith("_"))))e.add(t);return Array.from(e)}(t._scopes)),e}function ei(t,e,i,s){const{iScale:n}=t,{key:o="r"}=this._parsing,a=new Array(s);let r,l,h,c;for(r=0,l=s;r<l;++r)h=r+i,c=e[h],a[r]={r:n.parse(M(c,o),h)};return a}const ii=Number.EPSILON||1e-14,si=(t,e)=>e<t.length&&!t[e].skip&&t[e],ni=t=>"x"===t?"y":"x";function oi(t,e,i,s){const n=t.skip?e:t,o=e,a=i.skip?e:i,r=q(o,n),l=q(a,o);let h=r/(r+l),c=l/(r+l);h=isNaN(h)?0:h,c=isNaN(c)?0:c;const d=s*h,u=s*c;return{previous:{x:o.x-d*(a.x-n.x),y:o.y-d*(a.y-n.y)},next:{x:o.x+u*(a.x-n.x),y:o.y+u*(a.y-n.y)}}}function ai(t,e="x"){const i=ni(e),s=t.length,n=Array(s).fill(0),o=Array(s);let a,r,l,h=si(t,0);for(a=0;a<s;++a)if(r=l,l=h,h=si(t,a+1),l){if(h){const t=h[e]-l[e];n[a]=0!==t?(h[i]-l[i])/t:0}o[a]=r?h?F(n[a-1])!==F(n[a])?0:(n[a-1]+n[a])/2:n[a-1]:n[a]}!function(t,e,i){const s=t.length;let n,o,a,r,l,h=si(t,0);for(let c=0;c<s-1;++c)l=h,h=si(t,c+1),l&&h&&(V(e[c],0,ii)?i[c]=i[c+1]=0:(n=i[c]/e[c],o=i[c+1]/e[c],r=Math.pow(n,2)+Math.pow(o,2),r<=9||(a=3/Math.sqrt(r),i[c]=n*a*e[c],i[c+1]=o*a*e[c])))}(t,n,o),function(t,e,i="x"){const s=ni(i),n=t.length;let o,a,r,l=si(t,0);for(let h=0;h<n;++h){if(a=r,r=l,l=si(t,h+1),!r)continue;const n=r[i],c=r[s];a&&(o=(n-a[i])/3,r[`cp1${i}`]=n-o,r[`cp1${s}`]=c-o*e[h]),l&&(o=(l[i]-n)/3,r[`cp2${i}`]=n+o,r[`cp2${s}`]=c+o*e[h])}}(t,o,e)}function ri(t,e,i){return Math.max(Math.min(t,i),e)}function li(t,e,i,s,n){let o,a,r,l;if(e.spanGaps&&(t=t.filter((t=>!t.skip))),"monotone"===e.cubicInterpolationMode)ai(t,n);else{let i=s?t[t.length-1]:t[0];for(o=0,a=t.length;o<a;++o)r=t[o],l=oi(i,r,t[Math.min(o+1,a-(s?0:1))%a],e.tension),r.cp1x=l.previous.x,r.cp1y=l.previous.y,r.cp2x=l.next.x,r.cp2y=l.next.y,i=r}e.capBezierPoints&&function(t,e){let i,s,n,o,a,r=Ee(t[0],e);for(i=0,s=t.length;i<s;++i)a=o,o=r,r=i<s-1&&Ee(t[i+1],e),o&&(n=t[i],a&&(n.cp1x=ri(n.cp1x,e.left,e.right),n.cp1y=ri(n.cp1y,e.top,e.bottom)),r&&(n.cp2x=ri(n.cp2x,e.left,e.right),n.cp2y=ri(n.cp2y,e.top,e.bottom)))}(t,i)}const hi=t=>0===t||1===t,ci=(t,e,i)=>-Math.pow(2,10*(t-=1))*Math.sin((t-e)*O/i),di=(t,e,i)=>Math.pow(2,-10*t)*Math.sin((t-e)*O/i)+1,ui={linear:t=>t,easeInQuad:t=>t*t,easeOutQuad:t=>-t*(t-2),easeInOutQuad:t=>(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1),easeInCubic:t=>t*t*t,easeOutCubic:t=>(t-=1)*t*t+1,easeInOutCubic:t=>(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2),easeInQuart:t=>t*t*t*t,easeOutQuart:t=>-((t-=1)*t*t*t-1),easeInOutQuart:t=>(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2),easeInQuint:t=>t*t*t*t*t,easeOutQuint:t=>(t-=1)*t*t*t*t+1,easeInOutQuint:t=>(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2),easeInSine:t=>1-Math.cos(t*E),easeOutSine:t=>Math.sin(t*E),easeInOutSine:t=>-.5*(Math.cos(C*t)-1),easeInExpo:t=>0===t?0:Math.pow(2,10*(t-1)),easeOutExpo:t=>1===t?1:1-Math.pow(2,-10*t),easeInOutExpo:t=>hi(t)?t:t<.5?.5*Math.pow(2,10*(2*t-1)):.5*(2-Math.pow(2,-10*(2*t-1))),easeInCirc:t=>t>=1?t:-(Math.sqrt(1-t*t)-1),easeOutCirc:t=>Math.sqrt(1-(t-=1)*t),easeInOutCirc:t=>(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1),easeInElastic:t=>hi(t)?t:ci(t,.075,.3),easeOutElastic:t=>hi(t)?t:di(t,.075,.3),easeInOutElastic(t){const e=.1125;return hi(t)?t:t<.5?.5*ci(2*t,e,.45):.5+.5*di(2*t-1,e,.45)},easeInBack(t){const e=1.70158;return t*t*((e+1)*t-e)},easeOutBack(t){const e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack(t){let e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:t=>1-ui.easeOutBounce(1-t),easeOutBounce(t){const e=7.5625,i=2.75;return t<1/i?e*t*t:t<2/i?e*(t-=1.5/i)*t+.75:t<2.5/i?e*(t-=2.25/i)*t+.9375:e*(t-=2.625/i)*t+.984375},easeInOutBounce:t=>t<.5?.5*ui.easeInBounce(2*t):.5*ui.easeOutBounce(2*t-1)+.5};function fi(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:t.y+i*(e.y-t.y)}}function gi(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:"middle"===s?i<.5?t.y:e.y:"after"===s?i<1?t.y:e.y:i>0?e.y:t.y}}function pi(t,e,i,s){const n={x:t.cp2x,y:t.cp2y},o={x:e.cp1x,y:e.cp1y},a=fi(t,n,i),r=fi(n,o,i),l=fi(o,e,i),h=fi(a,r,i),c=fi(r,l,i);return fi(h,c,i)}const mi=/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/,bi=/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;function xi(t,e){const i=(""+t).match(mi);if(!i||"normal"===i[1])return 1.2*e;switch(t=+i[2],i[3]){case"px":return t;case"%":t/=100}return e*t}function _i(t,e){const i={},s=o(e),n=s?Object.keys(e):e,a=o(t)?s?i=>l(t[i],t[e[i]]):e=>t[e]:()=>t;for(const t of n)i[t]=+a(t)||0;return i}function yi(t){return _i(t,{top:"y",right:"x",bottom:"y",left:"x"})}function vi(t){return _i(t,["topLeft","topRight","bottomLeft","bottomRight"])}function Mi(t){const e=yi(t);return e.width=e.left+e.right,e.height=e.top+e.bottom,e}function wi(t,e){t=t||{},e=e||ue.font;let i=l(t.size,e.size);"string"==typeof i&&(i=parseInt(i,10));let s=l(t.style,e.style);s&&!(""+s).match(bi)&&(console.warn('Invalid font style specified: "'+s+'"'),s=void 0);const n={family:l(t.family,e.family),lineHeight:xi(l(t.lineHeight,e.lineHeight),i),size:i,style:s,weight:l(t.weight,e.weight),string:""};return n.string=Pe(n),n}function ki(t,e,i,s){let o,a,r,l=!0;for(o=0,a=t.length;o<a;++o)if(r=t[o],void 0!==r&&(void 0!==e&&"function"==typeof r&&(r=r(e),l=!1),void 0!==i&&n(r)&&(r=r[i%r.length],l=!1),void 0!==r))return s&&!l&&(s.cacheable=!1),r}function Si(t,e,i){const{min:s,max:n}=t,o=c(e,(n-s)/2),a=(t,e)=>i&&0===t?0:t+e;return{min:a(s,-Math.abs(o)),max:a(n,o)}}function Pi(t,e){return Object.assign(Object.create(t),e)}function Di(t,e,i){return t?function(t,e){return{x:i=>t+t+e-i,setWidth(t){e=t},textAlign:t=>"center"===t?t:"right"===t?"left":"right",xPlus:(t,e)=>t-e,leftForLtr:(t,e)=>t-e}}(e,i):{x:t=>t,setWidth(t){},textAlign:t=>t,xPlus:(t,e)=>t+e,leftForLtr:(t,e)=>t}}function Ci(t,e){let i,s;"ltr"!==e&&"rtl"!==e||(i=t.canvas.style,s=[i.getPropertyValue("direction"),i.getPropertyPriority("direction")],i.setProperty("direction",e,"important"),t.prevTextDirection=s)}function Oi(t,e){void 0!==e&&(delete t.prevTextDirection,t.canvas.style.setProperty("direction",e[0],e[1]))}function Ai(t){return"angle"===t?{between:Z,compare:K,normalize:G}:{between:tt,compare:(t,e)=>t-e,normalize:t=>t}}function Ti({start:t,end:e,count:i,loop:s,style:n}){return{start:t%i,end:e%i,loop:s&&(e-t+1)%i==0,style:n}}function Li(t,e,i){if(!i)return[t];const{property:s,start:n,end:o}=i,a=e.length,{compare:r,between:l,normalize:h}=Ai(s),{start:c,end:d,loop:u,style:f}=function(t,e,i){const{property:s,start:n,end:o}=i,{between:a,normalize:r}=Ai(s),l=e.length;let h,c,{start:d,end:u,loop:f}=t;if(f){for(d+=l,u+=l,h=0,c=l;h<c&&a(r(e[d%l][s]),n,o);++h)d--,u--;d%=l,u%=l}return u<d&&(u+=l),{start:d,end:u,loop:f,style:t.style}}(t,e,i),g=[];let p,m,b,x=!1,_=null;const y=()=>x||l(n,b,p)&&0!==r(n,b),v=()=>!x||0===r(o,p)||l(o,b,p);for(let t=c,i=c;t<=d;++t)m=e[t%a],m.skip||(p=h(m[s]),p!==b&&(x=l(p,n,o),null===_&&y()&&(_=0===r(p,n)?t:i),null!==_&&v()&&(g.push(Ti({start:_,end:t,loop:u,count:a,style:f})),_=null),i=t,b=p));return null!==_&&g.push(Ti({start:_,end:d,loop:u,count:a,style:f})),g}function Ei(t,e){const i=[],s=t.segments;for(let n=0;n<s.length;n++){const o=Li(s[n],t.points,e);o.length&&i.push(...o)}return i}function Ri(t,e){const i=t.points,s=t.options.spanGaps,n=i.length;if(!n)return[];const o=!!t._loop,{start:a,end:r}=function(t,e,i,s){let n=0,o=e-1;if(i&&!s)for(;n<e&&!t[n].skip;)n++;for(;n<e&&t[n].skip;)n++;for(n%=e,i&&(o+=n);o>n&&t[o%e].skip;)o--;return o%=e,{start:n,end:o}}(i,n,o,s);if(!0===s)return Ii(t,[{start:a,end:r,loop:o}],i,e);return Ii(t,function(t,e,i,s){const n=t.length,o=[];let a,r=e,l=t[e];for(a=e+1;a<=i;++a){const i=t[a%n];i.skip||i.stop?l.skip||(s=!1,o.push({start:e%n,end:(a-1)%n,loop:s}),e=r=i.stop?a:null):(r=a,l.skip&&(e=a)),l=i}return null!==r&&o.push({start:e%n,end:r%n,loop:s}),o}(i,a,r<a?r+n:r,!!t._fullLoop&&0===a&&r===n-1),i,e)}function Ii(t,e,i,s){return s&&s.setContext&&i?function(t,e,i,s){const n=t._chart.getContext(),o=zi(t.options),{_datasetIndex:a,options:{spanGaps:r}}=t,l=i.length,h=[];let c=o,d=e[0].start,u=d;function f(t,e,s,n){const o=r?-1:1;if(t!==e){for(t+=l;i[t%l].skip;)t-=o;for(;i[e%l].skip;)e+=o;t%l!=e%l&&(h.push({start:t%l,end:e%l,loop:s,style:n}),c=n,d=e%l)}}for(const t of e){d=r?d:t.start;let e,o=i[d%l];for(u=d+1;u<=t.end;u++){const r=i[u%l];e=zi(s.setContext(Pi(n,{type:"segment",p0:o,p1:r,p0DataIndex:(u-1)%l,p1DataIndex:u%l,datasetIndex:a}))),Fi(e,c)&&f(d,u-1,t.loop,c),o=r,c=e}d<u-1&&f(d,u-1,t.loop,c)}return h}(t,e,i,s):e}function zi(t){return{backgroundColor:t.backgroundColor,borderCapStyle:t.borderCapStyle,borderDash:t.borderDash,borderDashOffset:t.borderDashOffset,borderJoinStyle:t.borderJoinStyle,borderWidth:t.borderWidth,borderColor:t.borderColor}}function Fi(t,e){return e&&JSON.stringify(t)!==JSON.stringify(e)}var Vi=Object.freeze({__proto__:null,easingEffects:ui,isPatternOrGradient:Jt,color:Qt,getHoverColor:te,noop:e,uid:i,isNullOrUndef:s,isArray:n,isObject:o,isFinite:a,finiteOrDefault:r,valueOrDefault:l,toPercentage:h,toDimension:c,callback:d,each:u,_elementsEqual:f,clone:g,_merger:m,merge:b,mergeIf:x,_mergerIf:_,_deprecated:function(t,e,i,s){void 0!==e&&console.warn(t+': "'+i+'" is deprecated. Please use "'+s+'" instead')},_splitKey:v,resolveObjectKey:M,_capitalize:w,defined:k,isFunction:S,setsEqual:P,_isClickEvent:D,toFontString:Pe,_measureText:De,_longestText:Ce,_alignPixel:Oe,clearCanvas:Ae,drawPoint:Te,drawPointLegend:Le,_isPointInArea:Ee,clipArea:Re,unclipArea:Ie,_steppedLineTo:ze,_bezierCurveTo:Fe,renderText:Ve,addRoundedRectPath:We,_lookup:et,_lookupByKey:it,_rlookupByKey:st,_filterBetween:nt,listenArrayEvents:at,unlistenArrayEvents:rt,_arrayUnique:lt,_createResolver:He,_attachContext:je,_descriptors:$e,_parseObjectDataRadialScale:ei,splineCurve:oi,splineCurveMonotone:ai,_updateBezierControlPoints:li,_isDomSupported:fe,_getParentNode:ge,getStyle:be,getRelativePosition:ye,getMaximumSize:Me,retinaScale:we,supportsEventListenerOptions:ke,readUsedSize:Se,fontString:function(t,e,i){return e+" "+t+"px "+i},requestAnimFrame:ht,throttled:ct,debounce:dt,_toLeftRightCenter:ut,_alignStartEnd:ft,_textX:gt,_getStartAndCountOfVisiblePoints:pt,_scaleRangesChanged:mt,_pointInLine:fi,_steppedInterpolation:gi,_bezierInterpolation:pi,formatNumber:ne,toLineHeight:xi,_readValueToProps:_i,toTRBL:yi,toTRBLCorners:vi,toPadding:Mi,toFont:wi,resolve:ki,_addGrace:Si,createContext:Pi,PI:C,TAU:O,PITAU:A,INFINITY:T,RAD_PER_DEG:L,HALF_PI:E,QUARTER_PI:R,TWO_THIRDS_PI:I,log10:z,sign:F,almostEquals:V,niceNum:B,_factorize:N,isNumber:W,almostWhole:H,_setMinAndMaxByKey:j,toRadians:$,toDegrees:Y,_decimalPlaces:U,getAngleFromPoint:X,distanceBetweenPoints:q,_angleDiff:K,_normalizeAngle:G,_angleBetween:Z,_limitValue:J,_int16Range:Q,_isBetween:tt,getRtlAdapter:Di,overrideTextDirection:Ci,restoreTextDirection:Oi,_boundSegment:Li,_boundSegments:Ei,_computeSegments:Ri});function Bi(t,e,i,s){const{controller:n,data:o,_sorted:a}=t,r=n._cachedMeta.iScale;if(r&&e===r.axis&&"r"!==e&&a&&o.length){const t=r._reversePixels?st:it;if(!s)return t(o,e,i);if(n._sharedOptions){const s=o[0],n="function"==typeof s.getRange&&s.getRange(e);if(n){const s=t(o,e,i-n),a=t(o,e,i+n);return{lo:s.lo,hi:a.hi}}}}return{lo:0,hi:o.length-1}}function Ni(t,e,i,s,n){const o=t.getSortedVisibleDatasetMetas(),a=i[e];for(let t=0,i=o.length;t<i;++t){const{index:i,data:r}=o[t],{lo:l,hi:h}=Bi(o[t],e,a,n);for(let t=l;t<=h;++t){const e=r[t];e.skip||s(e,i,t)}}}function Wi(t,e,i,s,n){const o=[];if(!n&&!t.isPointInArea(e))return o;return Ni(t,i,e,(function(i,a,r){(n||Ee(i,t.chartArea,0))&&i.inRange(e.x,e.y,s)&&o.push({element:i,datasetIndex:a,index:r})}),!0),o}function Hi(t,e,i,s,n,o){let a=[];const r=function(t){const e=-1!==t.indexOf("x"),i=-1!==t.indexOf("y");return function(t,s){const n=e?Math.abs(t.x-s.x):0,o=i?Math.abs(t.y-s.y):0;return Math.sqrt(Math.pow(n,2)+Math.pow(o,2))}}(i);let l=Number.POSITIVE_INFINITY;return Ni(t,i,e,(function(i,h,c){const d=i.inRange(e.x,e.y,n);if(s&&!d)return;const u=i.getCenterPoint(n);if(!(!!o||t.isPointInArea(u))&&!d)return;const f=r(e,u);f<l?(a=[{element:i,datasetIndex:h,index:c}],l=f):f===l&&a.push({element:i,datasetIndex:h,index:c})})),a}function ji(t,e,i,s,n,o){return o||t.isPointInArea(e)?"r"!==i||s?Hi(t,e,i,s,n,o):function(t,e,i,s){let n=[];return Ni(t,i,e,(function(t,i,o){const{startAngle:a,endAngle:r}=t.getProps(["startAngle","endAngle"],s),{angle:l}=X(t,{x:e.x,y:e.y});Z(l,a,r)&&n.push({element:t,datasetIndex:i,index:o})})),n}(t,e,i,n):[]}function $i(t,e,i,s,n){const o=[],a="x"===i?"inXRange":"inYRange";let r=!1;return Ni(t,i,e,((t,s,l)=>{t[a](e[i],n)&&(o.push({element:t,datasetIndex:s,index:l}),r=r||t.inRange(e.x,e.y,n))})),s&&!r?[]:o}var Yi={evaluateInteractionItems:Ni,modes:{index(t,e,i,s){const n=ye(e,t),o=i.axis||"x",a=i.includeInvisible||!1,r=i.intersect?Wi(t,n,o,s,a):ji(t,n,o,!1,s,a),l=[];return r.length?(t.getSortedVisibleDatasetMetas().forEach((t=>{const e=r[0].index,i=t.data[e];i&&!i.skip&&l.push({element:i,datasetIndex:t.index,index:e})})),l):[]},dataset(t,e,i,s){const n=ye(e,t),o=i.axis||"xy",a=i.includeInvisible||!1;let r=i.intersect?Wi(t,n,o,s,a):ji(t,n,o,!1,s,a);if(r.length>0){const e=r[0].datasetIndex,i=t.getDatasetMeta(e).data;r=[];for(let t=0;t<i.length;++t)r.push({element:i[t],datasetIndex:e,index:t})}return r},point:(t,e,i,s)=>Wi(t,ye(e,t),i.axis||"xy",s,i.includeInvisible||!1),nearest(t,e,i,s){const n=ye(e,t),o=i.axis||"xy",a=i.includeInvisible||!1;return ji(t,n,o,i.intersect,s,a)},x:(t,e,i,s)=>$i(t,ye(e,t),"x",i.intersect,s),y:(t,e,i,s)=>$i(t,ye(e,t),"y",i.intersect,s)}};const Ui=["left","top","right","bottom"];function Xi(t,e){return t.filter((t=>t.pos===e))}function qi(t,e){return t.filter((t=>-1===Ui.indexOf(t.pos)&&t.box.axis===e))}function Ki(t,e){return t.sort(((t,i)=>{const s=e?i:t,n=e?t:i;return s.weight===n.weight?s.index-n.index:s.weight-n.weight}))}function Gi(t,e){const i=function(t){const e={};for(const i of t){const{stack:t,pos:s,stackWeight:n}=i;if(!t||!Ui.includes(s))continue;const o=e[t]||(e[t]={count:0,placed:0,weight:0,size:0});o.count++,o.weight+=n}return e}(t),{vBoxMaxWidth:s,hBoxMaxHeight:n}=e;let o,a,r;for(o=0,a=t.length;o<a;++o){r=t[o];const{fullSize:a}=r.box,l=i[r.stack],h=l&&r.stackWeight/l.weight;r.horizontal?(r.width=h?h*s:a&&e.availableWidth,r.height=n):(r.width=s,r.height=h?h*n:a&&e.availableHeight)}return i}function Zi(t,e,i,s){return Math.max(t[i],e[i])+Math.max(t[s],e[s])}function Ji(t,e){t.top=Math.max(t.top,e.top),t.left=Math.max(t.left,e.left),t.bottom=Math.max(t.bottom,e.bottom),t.right=Math.max(t.right,e.right)}function Qi(t,e,i,s){const{pos:n,box:a}=i,r=t.maxPadding;if(!o(n)){i.size&&(t[n]-=i.size);const e=s[i.stack]||{size:0,count:1};e.size=Math.max(e.size,i.horizontal?a.height:a.width),i.size=e.size/e.count,t[n]+=i.size}a.getPadding&&Ji(r,a.getPadding());const l=Math.max(0,e.outerWidth-Zi(r,t,"left","right")),h=Math.max(0,e.outerHeight-Zi(r,t,"top","bottom")),c=l!==t.w,d=h!==t.h;return t.w=l,t.h=h,i.horizontal?{same:c,other:d}:{same:d,other:c}}function ts(t,e){const i=e.maxPadding;function s(t){const s={left:0,top:0,right:0,bottom:0};return t.forEach((t=>{s[t]=Math.max(e[t],i[t])})),s}return s(t?["left","right"]:["top","bottom"])}function es(t,e,i,s){const n=[];let o,a,r,l,h,c;for(o=0,a=t.length,h=0;o<a;++o){r=t[o],l=r.box,l.update(r.width||e.w,r.height||e.h,ts(r.horizontal,e));const{same:a,other:d}=Qi(e,i,r,s);h|=a&&n.length,c=c||d,l.fullSize||n.push(r)}return h&&es(n,e,i,s)||c}function is(t,e,i,s,n){t.top=i,t.left=e,t.right=e+s,t.bottom=i+n,t.width=s,t.height=n}function ss(t,e,i,s){const n=i.padding;let{x:o,y:a}=e;for(const r of t){const t=r.box,l=s[r.stack]||{count:1,placed:0,weight:1},h=r.stackWeight/l.weight||1;if(r.horizontal){const s=e.w*h,o=l.size||t.height;k(l.start)&&(a=l.start),t.fullSize?is(t,n.left,a,i.outerWidth-n.right-n.left,o):is(t,e.left+l.placed,a,s,o),l.start=a,l.placed+=s,a=t.bottom}else{const s=e.h*h,a=l.size||t.width;k(l.start)&&(o=l.start),t.fullSize?is(t,o,n.top,a,i.outerHeight-n.bottom-n.top):is(t,o,e.top+l.placed,a,s),l.start=o,l.placed+=s,o=t.right}}e.x=o,e.y=a}var ns={addBox(t,e){t.boxes||(t.boxes=[]),e.fullSize=e.fullSize||!1,e.position=e.position||"top",e.weight=e.weight||0,e._layers=e._layers||function(){return[{z:0,draw(t){e.draw(t)}}]},t.boxes.push(e)},removeBox(t,e){const i=t.boxes?t.boxes.indexOf(e):-1;-1!==i&&t.boxes.splice(i,1)},configure(t,e,i){e.fullSize=i.fullSize,e.position=i.position,e.weight=i.weight},update(t,e,i,s){if(!t)return;const n=Mi(t.options.layout.padding),o=Math.max(e-n.width,0),a=Math.max(i-n.height,0),r=function(t){const e=function(t){const e=[];let i,s,n,o,a,r;for(i=0,s=(t||[]).length;i<s;++i)n=t[i],({position:o,options:{stack:a,stackWeight:r=1}}=n),e.push({index:i,box:n,pos:o,horizontal:n.isHorizontal(),weight:n.weight,stack:a&&o+a,stackWeight:r});return e}(t),i=Ki(e.filter((t=>t.box.fullSize)),!0),s=Ki(Xi(e,"left"),!0),n=Ki(Xi(e,"right")),o=Ki(Xi(e,"top"),!0),a=Ki(Xi(e,"bottom")),r=qi(e,"x"),l=qi(e,"y");return{fullSize:i,leftAndTop:s.concat(o),rightAndBottom:n.concat(l).concat(a).concat(r),chartArea:Xi(e,"chartArea"),vertical:s.concat(n).concat(l),horizontal:o.concat(a).concat(r)}}(t.boxes),l=r.vertical,h=r.horizontal;u(t.boxes,(t=>{"function"==typeof t.beforeLayout&&t.beforeLayout()}));const c=l.reduce(((t,e)=>e.box.options&&!1===e.box.options.display?t:t+1),0)||1,d=Object.freeze({outerWidth:e,outerHeight:i,padding:n,availableWidth:o,availableHeight:a,vBoxMaxWidth:o/2/c,hBoxMaxHeight:a/2}),f=Object.assign({},n);Ji(f,Mi(s));const g=Object.assign({maxPadding:f,w:o,h:a,x:n.left,y:n.top},n),p=Gi(l.concat(h),d);es(r.fullSize,g,d,p),es(l,g,d,p),es(h,g,d,p)&&es(l,g,d,p),function(t){const e=t.maxPadding;function i(i){const s=Math.max(e[i]-t[i],0);return t[i]+=s,s}t.y+=i("top"),t.x+=i("left"),i("right"),i("bottom")}(g),ss(r.leftAndTop,g,d,p),g.x+=g.w,g.y+=g.h,ss(r.rightAndBottom,g,d,p),t.chartArea={left:g.left,top:g.top,right:g.left+g.w,bottom:g.top+g.h,height:g.h,width:g.w},u(r.chartArea,(e=>{const i=e.box;Object.assign(i,t.chartArea),i.update(g.w,g.h,{left:0,top:0,right:0,bottom:0})}))}};class os{acquireContext(t,e){}releaseContext(t){return!1}addEventListener(t,e,i){}removeEventListener(t,e,i){}getDevicePixelRatio(){return 1}getMaximumSize(t,e,i,s){return e=Math.max(0,e||t.width),i=i||t.height,{width:e,height:Math.max(0,s?Math.floor(e/s):i)}}isAttached(t){return!0}updateConfig(t){}}class as extends os{acquireContext(t){return t&&t.getContext&&t.getContext("2d")||null}updateConfig(t){t.options.animation=!1}}const rs={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},ls=t=>null===t||""===t;const hs=!!ke&&{passive:!0};function cs(t,e,i){t.canvas.removeEventListener(e,i,hs)}function ds(t,e){for(const i of t)if(i===e||i.contains(e))return!0}function us(t,e,i){const s=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||ds(i.addedNodes,s),e=e&&!ds(i.removedNodes,s);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}function fs(t,e,i){const s=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||ds(i.removedNodes,s),e=e&&!ds(i.addedNodes,s);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}const gs=new Map;let ps=0;function ms(){const t=window.devicePixelRatio;t!==ps&&(ps=t,gs.forEach(((e,i)=>{i.currentDevicePixelRatio!==t&&e()})))}function bs(t,e,i){const s=t.canvas,n=s&&ge(s);if(!n)return;const o=ct(((t,e)=>{const s=n.clientWidth;i(t,e),s<n.clientWidth&&i()}),window),a=new ResizeObserver((t=>{const e=t[0],i=e.contentRect.width,s=e.contentRect.height;0===i&&0===s||o(i,s)}));return a.observe(n),function(t,e){gs.size||window.addEventListener("resize",ms),gs.set(t,e)}(t,o),a}function xs(t,e,i){i&&i.disconnect(),"resize"===e&&function(t){gs.delete(t),gs.size||window.removeEventListener("resize",ms)}(t)}function _s(t,e,i){const s=t.canvas,n=ct((e=>{null!==t.ctx&&i(function(t,e){const i=rs[t.type]||t.type,{x:s,y:n}=ye(t,e);return{type:i,chart:e,native:t,x:void 0!==s?s:null,y:void 0!==n?n:null}}(e,t))}),t);return function(t,e,i){t.addEventListener(e,i,hs)}(s,e,n),n}class ys extends os{acquireContext(t,e){const i=t&&t.getContext&&t.getContext("2d");return i&&i.canvas===t?(function(t,e){const i=t.style,s=t.getAttribute("height"),n=t.getAttribute("width");if(t.$chartjs={initial:{height:s,width:n,style:{display:i.display,height:i.height,width:i.width}}},i.display=i.display||"block",i.boxSizing=i.boxSizing||"border-box",ls(n)){const e=Se(t,"width");void 0!==e&&(t.width=e)}if(ls(s))if(""===t.style.height)t.height=t.width/(e||2);else{const e=Se(t,"height");void 0!==e&&(t.height=e)}}(t,e),i):null}releaseContext(t){const e=t.canvas;if(!e.$chartjs)return!1;const i=e.$chartjs.initial;["height","width"].forEach((t=>{const n=i[t];s(n)?e.removeAttribute(t):e.setAttribute(t,n)}));const n=i.style||{};return Object.keys(n).forEach((t=>{e.style[t]=n[t]})),e.width=e.width,delete e.$chartjs,!0}addEventListener(t,e,i){this.removeEventListener(t,e);const s=t.$proxies||(t.$proxies={}),n={attach:us,detach:fs,resize:bs}[e]||_s;s[e]=n(t,e,i)}removeEventListener(t,e){const i=t.$proxies||(t.$proxies={}),s=i[e];if(!s)return;({attach:xs,detach:xs,resize:xs}[e]||cs)(t,e,s),i[e]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,e,i,s){return Me(t,e,i,s)}isAttached(t){const e=ge(t);return!(!e||!e.isConnected)}}function vs(t){return!fe()||"undefined"!=typeof OffscreenCanvas&&t instanceof OffscreenCanvas?as:ys}var Ms=Object.freeze({__proto__:null,_detectPlatform:vs,BasePlatform:os,BasicPlatform:as,DomPlatform:ys});const ws="transparent",ks={boolean:(t,e,i)=>i>.5?e:t,color(t,e,i){const s=Qt(t||ws),n=s.valid&&Qt(e||ws);return n&&n.valid?n.mix(s,i).hexString():e},number:(t,e,i)=>t+(e-t)*i};class Ss{constructor(t,e,i,s){const n=e[i];s=ki([t.to,s,n,t.from]);const o=ki([t.from,n,s]);this._active=!0,this._fn=t.fn||ks[t.type||typeof o],this._easing=ui[t.easing]||ui.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=e,this._prop=i,this._from=o,this._to=s,this._promises=void 0}active(){return this._active}update(t,e,i){if(this._active){this._notify(!1);const s=this._target[this._prop],n=i-this._start,o=this._duration-n;this._start=i,this._duration=Math.floor(Math.max(o,t.duration)),this._total+=n,this._loop=!!t.loop,this._to=ki([t.to,e,s,t.from]),this._from=ki([t.from,s,e])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){const e=t-this._start,i=this._duration,s=this._prop,n=this._from,o=this._loop,a=this._to;let r;if(this._active=n!==a&&(o||e<i),!this._active)return this._target[s]=a,void this._notify(!0);e<0?this._target[s]=n:(r=e/i%2,r=o&&r>1?2-r:r,r=this._easing(Math.min(1,Math.max(0,r))),this._target[s]=this._fn(n,a,r))}wait(){const t=this._promises||(this._promises=[]);return new Promise(((e,i)=>{t.push({res:e,rej:i})}))}_notify(t){const e=t?"res":"rej",i=this._promises||[];for(let t=0;t<i.length;t++)i[t][e]()}}class Ps{constructor(t,e){this._chart=t,this._properties=new Map,this.configure(e)}configure(t){if(!o(t))return;const e=Object.keys(ue.animation),i=this._properties;Object.getOwnPropertyNames(t).forEach((s=>{const a=t[s];if(!o(a))return;const r={};for(const t of e)r[t]=a[t];(n(a.properties)&&a.properties||[s]).forEach((t=>{t!==s&&i.has(t)||i.set(t,r)}))}))}_animateOptions(t,e){const i=e.options,s=function(t,e){if(!e)return;let i=t.options;if(!i)return void(t.options=e);i.$shared&&(t.options=i=Object.assign({},i,{$shared:!1,$animations:{}}));return i}(t,i);if(!s)return[];const n=this._createAnimations(s,i);return i.$shared&&function(t,e){const i=[],s=Object.keys(e);for(let e=0;e<s.length;e++){const n=t[s[e]];n&&n.active()&&i.push(n.wait())}return Promise.all(i)}(t.options.$animations,i).then((()=>{t.options=i}),(()=>{})),n}_createAnimations(t,e){const i=this._properties,s=[],n=t.$animations||(t.$animations={}),o=Object.keys(e),a=Date.now();let r;for(r=o.length-1;r>=0;--r){const l=o[r];if("$"===l.charAt(0))continue;if("options"===l){s.push(...this._animateOptions(t,e));continue}const h=e[l];let c=n[l];const d=i.get(l);if(c){if(d&&c.active()){c.update(d,h,a);continue}c.cancel()}d&&d.duration?(n[l]=c=new Ss(d,t,l,h),s.push(c)):t[l]=h}return s}update(t,e){if(0===this._properties.size)return void Object.assign(t,e);const i=this._createAnimations(t,e);return i.length?(xt.add(this._chart,i),!0):void 0}}function Ds(t,e){const i=t&&t.options||{},s=i.reverse,n=void 0===i.min?e:0,o=void 0===i.max?e:0;return{start:s?o:n,end:s?n:o}}function Cs(t,e){const i=[],s=t._getSortedDatasetMetas(e);let n,o;for(n=0,o=s.length;n<o;++n)i.push(s[n].index);return i}function Os(t,e,i,s={}){const n=t.keys,o="single"===s.mode;let r,l,h,c;if(null!==e){for(r=0,l=n.length;r<l;++r){if(h=+n[r],h===i){if(s.all)continue;break}c=t.values[h],a(c)&&(o||0===e||F(e)===F(c))&&(e+=c)}return e}}function As(t,e){const i=t&&t.options.stacked;return i||void 0===i&&void 0!==e.stack}function Ts(t,e,i){const s=t[e]||(t[e]={});return s[i]||(s[i]={})}function Ls(t,e,i,s){for(const n of e.getMatchingVisibleMetas(s).reverse()){const e=t[n.index];if(i&&e>0||!i&&e<0)return n.index}return null}function Es(t,e){const{chart:i,_cachedMeta:s}=t,n=i._stacks||(i._stacks={}),{iScale:o,vScale:a,index:r}=s,l=o.axis,h=a.axis,c=function(t,e,i){return`${t.id}.${e.id}.${i.stack||i.type}`}(o,a,s),d=e.length;let u;for(let t=0;t<d;++t){const i=e[t],{[l]:o,[h]:d}=i;u=(i._stacks||(i._stacks={}))[h]=Ts(n,c,o),u[r]=d,u._top=Ls(u,a,!0,s.type),u._bottom=Ls(u,a,!1,s.type);(u._visualValues||(u._visualValues={}))[r]=d}}function Rs(t,e){const i=t.scales;return Object.keys(i).filter((t=>i[t].axis===e)).shift()}function Is(t,e){const i=t.controller.index,s=t.vScale&&t.vScale.axis;if(s){e=e||t._parsed;for(const t of e){const e=t._stacks;if(!e||void 0===e[s]||void 0===e[s][i])return;delete e[s][i],void 0!==e[s]._visualValues&&void 0!==e[s]._visualValues[i]&&delete e[s]._visualValues[i]}}}const zs=t=>"reset"===t||"none"===t,Fs=(t,e)=>e?t:Object.assign({},t);class Vs{static defaults={};static datasetElementType=null;static dataElementType=null;constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=As(t.vScale,t),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(t){this.index!==t&&Is(this._cachedMeta),this.index=t}linkScales(){const t=this.chart,e=this._cachedMeta,i=this.getDataset(),s=(t,e,i,s)=>"x"===t?e:"r"===t?s:i,n=e.xAxisID=l(i.xAxisID,Rs(t,"x")),o=e.yAxisID=l(i.yAxisID,Rs(t,"y")),a=e.rAxisID=l(i.rAxisID,Rs(t,"r")),r=e.indexAxis,h=e.iAxisID=s(r,n,o,a),c=e.vAxisID=s(r,o,n,a);e.xScale=this.getScaleForId(n),e.yScale=this.getScaleForId(o),e.rScale=this.getScaleForId(a),e.iScale=this.getScaleForId(h),e.vScale=this.getScaleForId(c)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){const e=this._cachedMeta;return t===e.iScale?e.vScale:e.iScale}reset(){this._update("reset")}_destroy(){const t=this._cachedMeta;this._data&&rt(this._data,this),t._stacked&&Is(t)}_dataCheck(){const t=this.getDataset(),e=t.data||(t.data=[]),i=this._data;if(o(e))this._data=function(t){const e=Object.keys(t),i=new Array(e.length);let s,n,o;for(s=0,n=e.length;s<n;++s)o=e[s],i[s]={x:o,y:t[o]};return i}(e);else if(i!==e){if(i){rt(i,this);const t=this._cachedMeta;Is(t),t._parsed=[]}e&&Object.isExtensible(e)&&at(e,this),this._syncList=[],this._data=e}}addElements(){const t=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(t.dataset=new this.datasetElementType)}buildOrUpdateElements(t){const e=this._cachedMeta,i=this.getDataset();let s=!1;this._dataCheck();const n=e._stacked;e._stacked=As(e.vScale,e),e.stack!==i.stack&&(s=!0,Is(e),e.stack=i.stack),this._resyncElements(t),(s||n!==e._stacked)&&Es(this,e._parsed)}configure(){const t=this.chart.config,e=t.datasetScopeKeys(this._type),i=t.getOptionScopes(this.getDataset(),e,!0);this.options=t.createResolver(i,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(t,e){const{_cachedMeta:i,_data:s}=this,{iScale:a,_stacked:r}=i,l=a.axis;let h,c,d,u=0===t&&e===s.length||i._sorted,f=t>0&&i._parsed[t-1];if(!1===this._parsing)i._parsed=s,i._sorted=!0,d=s;else{d=n(s[t])?this.parseArrayData(i,s,t,e):o(s[t])?this.parseObjectData(i,s,t,e):this.parsePrimitiveData(i,s,t,e);const a=()=>null===c[l]||f&&c[l]<f[l];for(h=0;h<e;++h)i._parsed[h+t]=c=d[h],u&&(a()&&(u=!1),f=c);i._sorted=u}r&&Es(this,d)}parsePrimitiveData(t,e,i,s){const{iScale:n,vScale:o}=t,a=n.axis,r=o.axis,l=n.getLabels(),h=n===o,c=new Array(s);let d,u,f;for(d=0,u=s;d<u;++d)f=d+i,c[d]={[a]:h||n.parse(l[f],f),[r]:o.parse(e[f],f)};return c}parseArrayData(t,e,i,s){const{xScale:n,yScale:o}=t,a=new Array(s);let r,l,h,c;for(r=0,l=s;r<l;++r)h=r+i,c=e[h],a[r]={x:n.parse(c[0],h),y:o.parse(c[1],h)};return a}parseObjectData(t,e,i,s){const{xScale:n,yScale:o}=t,{xAxisKey:a="x",yAxisKey:r="y"}=this._parsing,l=new Array(s);let h,c,d,u;for(h=0,c=s;h<c;++h)d=h+i,u=e[d],l[h]={x:n.parse(M(u,a),d),y:o.parse(M(u,r),d)};return l}getParsed(t){return this._cachedMeta._parsed[t]}getDataElement(t){return this._cachedMeta.data[t]}applyStack(t,e,i){const s=this.chart,n=this._cachedMeta,o=e[t.axis];return Os({keys:Cs(s,!0),values:e._stacks[t.axis]._visualValues},o,n.index,{mode:i})}updateRangeFromParsed(t,e,i,s){const n=i[e.axis];let o=null===n?NaN:n;const a=s&&i._stacks[e.axis];s&&a&&(s.values=a,o=Os(s,n,this._cachedMeta.index)),t.min=Math.min(t.min,o),t.max=Math.max(t.max,o)}getMinMax(t,e){const i=this._cachedMeta,s=i._parsed,n=i._sorted&&t===i.iScale,o=s.length,r=this._getOtherScale(t),l=((t,e,i)=>t&&!e.hidden&&e._stacked&&{keys:Cs(i,!0),values:null})(e,i,this.chart),h={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY},{min:c,max:d}=function(t){const{min:e,max:i,minDefined:s,maxDefined:n}=t.getUserBounds();return{min:s?e:Number.NEGATIVE_INFINITY,max:n?i:Number.POSITIVE_INFINITY}}(r);let u,f;function g(){f=s[u];const e=f[r.axis];return!a(f[t.axis])||c>e||d<e}for(u=0;u<o&&(g()||(this.updateRangeFromParsed(h,t,f,l),!n));++u);if(n)for(u=o-1;u>=0;--u)if(!g()){this.updateRangeFromParsed(h,t,f,l);break}return h}getAllParsedValues(t){const e=this._cachedMeta._parsed,i=[];let s,n,o;for(s=0,n=e.length;s<n;++s)o=e[s][t.axis],a(o)&&i.push(o);return i}getMaxOverflow(){return!1}getLabelAndValue(t){const e=this._cachedMeta,i=e.iScale,s=e.vScale,n=this.getParsed(t);return{label:i?""+i.getLabelForValue(n[i.axis]):"",value:s?""+s.getLabelForValue(n[s.axis]):""}}_update(t){const e=this._cachedMeta;this.update(t||"default"),e._clip=function(t){let e,i,s,n;return o(t)?(e=t.top,i=t.right,s=t.bottom,n=t.left):e=i=s=n=t,{top:e,right:i,bottom:s,left:n,disabled:!1===t}}(l(this.options.clip,function(t,e,i){if(!1===i)return!1;const s=Ds(t,i),n=Ds(e,i);return{top:n.end,right:s.end,bottom:n.start,left:s.start}}(e.xScale,e.yScale,this.getMaxOverflow())))}update(t){}draw(){const t=this._ctx,e=this.chart,i=this._cachedMeta,s=i.data||[],n=e.chartArea,o=[],a=this._drawStart||0,r=this._drawCount||s.length-a,l=this.options.drawActiveElementsOnTop;let h;for(i.dataset&&i.dataset.draw(t,n,a,r),h=a;h<a+r;++h){const e=s[h];e.hidden||(e.active&&l?o.push(e):e.draw(t,n))}for(h=0;h<o.length;++h)o[h].draw(t,n)}getStyle(t,e){const i=e?"active":"default";return void 0===t&&this._cachedMeta.dataset?this.resolveDatasetElementOptions(i):this.resolveDataElementOptions(t||0,i)}getContext(t,e,i){const s=this.getDataset();let n;if(t>=0&&t<this._cachedMeta.data.length){const e=this._cachedMeta.data[t];n=e.$context||(e.$context=function(t,e,i){return Pi(t,{active:!1,dataIndex:e,parsed:void 0,raw:void 0,element:i,index:e,mode:"default",type:"data"})}(this.getContext(),t,e)),n.parsed=this.getParsed(t),n.raw=s.data[t],n.index=n.dataIndex=t}else n=this.$context||(this.$context=function(t,e){return Pi(t,{active:!1,dataset:void 0,datasetIndex:e,index:e,mode:"default",type:"dataset"})}(this.chart.getContext(),this.index)),n.dataset=s,n.index=n.datasetIndex=this.index;return n.active=!!e,n.mode=i,n}resolveDatasetElementOptions(t){return this._resolveElementOptions(this.datasetElementType.id,t)}resolveDataElementOptions(t,e){return this._resolveElementOptions(this.dataElementType.id,e,t)}_resolveElementOptions(t,e="default",i){const s="active"===e,n=this._cachedDataOpts,o=t+"-"+e,a=n[o],r=this.enableOptionSharing&&k(i);if(a)return Fs(a,r);const l=this.chart.config,h=l.datasetElementScopeKeys(this._type,t),c=s?[`${t}Hover`,"hover",t,""]:[t,""],d=l.getOptionScopes(this.getDataset(),h),u=Object.keys(ue.elements[t]),f=l.resolveNamedOptions(d,u,(()=>this.getContext(i,s,e)),c);return f.$shared&&(f.$shared=r,n[o]=Object.freeze(Fs(f,r))),f}_resolveAnimations(t,e,i){const s=this.chart,n=this._cachedDataOpts,o=`animation-${e}`,a=n[o];if(a)return a;let r;if(!1!==s.options.animation){const s=this.chart.config,n=s.datasetAnimationScopeKeys(this._type,e),o=s.getOptionScopes(this.getDataset(),n);r=s.createResolver(o,this.getContext(t,i,e))}const l=new Ps(s,r&&r.animations);return r&&r._cacheable&&(n[o]=Object.freeze(l)),l}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,e){return!e||zs(t)||this.chart._animationsDisabled}_getSharedOptions(t,e){const i=this.resolveDataElementOptions(t,e),s=this._sharedOptions,n=this.getSharedOptions(i),o=this.includeOptions(e,n)||n!==s;return this.updateSharedOptions(n,e,i),{sharedOptions:n,includeOptions:o}}updateElement(t,e,i,s){zs(s)?Object.assign(t,i):this._resolveAnimations(e,s).update(t,i)}updateSharedOptions(t,e,i){t&&!zs(e)&&this._resolveAnimations(void 0,e).update(t,i)}_setStyle(t,e,i,s){t.active=s;const n=this.getStyle(e,s);this._resolveAnimations(e,i,s).update(t,{options:!s&&this.getSharedOptions(n)||n})}removeHoverStyle(t,e,i){this._setStyle(t,i,"active",!1)}setHoverStyle(t,e,i){this._setStyle(t,i,"active",!0)}_removeDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!1)}_setDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!0)}_resyncElements(t){const e=this._data,i=this._cachedMeta.data;for(const[t,e,i]of this._syncList)this[t](e,i);this._syncList=[];const s=i.length,n=e.length,o=Math.min(n,s);o&&this.parse(0,o),n>s?this._insertElements(s,n-s,t):n<s&&this._removeElements(n,s-n)}_insertElements(t,e,i=!0){const s=this._cachedMeta,n=s.data,o=t+e;let a;const r=t=>{for(t.length+=e,a=t.length-1;a>=o;a--)t[a]=t[a-e]};for(r(n),a=t;a<o;++a)n[a]=new this.dataElementType;this._parsing&&r(s._parsed),this.parse(t,e),i&&this.updateElements(n,t,e,"reset")}updateElements(t,e,i,s){}_removeElements(t,e){const i=this._cachedMeta;if(this._parsing){const s=i._parsed.splice(t,e);i._stacked&&Is(i,s)}i.data.splice(t,e)}_sync(t){if(this._parsing)this._syncList.push(t);else{const[e,i,s]=t;this[e](i,s)}this.chart._dataChanges.push([this.index,...t])}_onDataPush(){const t=arguments.length;this._sync(["_insertElements",this.getDataset().data.length-t,t])}_onDataPop(){this._sync(["_removeElements",this._cachedMeta.data.length-1,1])}_onDataShift(){this._sync(["_removeElements",0,1])}_onDataSplice(t,e){e&&this._sync(["_removeElements",t,e]);const i=arguments.length-2;i&&this._sync(["_insertElements",t,i])}_onDataUnshift(){this._sync(["_insertElements",0,arguments.length])}}class Bs{static defaults={};static defaultRoutes=void 0;active=!1;tooltipPosition(t){const{x:e,y:i}=this.getProps(["x","y"],t);return{x:e,y:i}}hasValue(){return W(this.x)&&W(this.y)}getProps(t,e){const i=this.$animations;if(!e||!i)return this;const s={};return t.forEach((t=>{s[t]=i[t]&&i[t].active()?i[t]._to:this[t]})),s}}function Ns(t,e){const i=t.options.ticks,n=function(t){const e=t.options.offset,i=t._tickSize(),s=t._length/i+(e?0:1),n=t._maxLength/i;return Math.floor(Math.min(s,n))}(t),o=Math.min(i.maxTicksLimit||n,n),a=i.major.enabled?function(t){const e=[];let i,s;for(i=0,s=t.length;i<s;i++)t[i].major&&e.push(i);return e}(e):[],r=a.length,l=a[0],h=a[r-1],c=[];if(r>o)return function(t,e,i,s){let n,o=0,a=i[0];for(s=Math.ceil(s),n=0;n<t.length;n++)n===a&&(e.push(t[n]),o++,a=i[o*s])}(e,c,a,r/o),c;const d=function(t,e,i){const s=function(t){const e=t.length;let i,s;if(e<2)return!1;for(s=t[0],i=1;i<e;++i)if(t[i]-t[i-1]!==s)return!1;return s}(t),n=e.length/i;if(!s)return Math.max(n,1);const o=N(s);for(let t=0,e=o.length-1;t<e;t++){const e=o[t];if(e>n)return e}return Math.max(n,1)}(a,e,o);if(r>0){let t,i;const n=r>1?Math.round((h-l)/(r-1)):null;for(Ws(e,c,d,s(n)?0:l-n,l),t=0,i=r-1;t<i;t++)Ws(e,c,d,a[t],a[t+1]);return Ws(e,c,d,h,s(n)?e.length:h+n),c}return Ws(e,c,d),c}function Ws(t,e,i,s,n){const o=l(s,0),a=Math.min(l(n,t.length),t.length);let r,h,c,d=0;for(i=Math.ceil(i),n&&(r=n-s,i=r/Math.floor(r/i)),c=o;c<0;)d++,c=Math.round(o+d*i);for(h=Math.max(o,0);h<a;h++)h===c&&(e.push(t[h]),d++,c=Math.round(o+d*i))}const Hs=(t,e,i)=>"top"===e||"left"===e?t[e]+i:t[e]-i,js=(t,e)=>Math.min(e||t,t);function $s(t,e){const i=[],s=t.length/e,n=t.length;let o=0;for(;o<n;o+=s)i.push(t[Math.floor(o)]);return i}function Ys(t,e,i){const s=t.ticks.length,n=Math.min(e,s-1),o=t._startPixel,a=t._endPixel,r=1e-6;let l,h=t.getPixelForTick(n);if(!(i&&(l=1===s?Math.max(h-o,a-h):0===e?(t.getPixelForTick(1)-h)/2:(h-t.getPixelForTick(n-1))/2,h+=n<e?l:-l,h<o-r||h>a+r)))return h}function Us(t){return t.drawTicks?t.tickLength:0}function Xs(t,e){if(!t.display)return 0;const i=wi(t.font,e),s=Mi(t.padding);return(n(t.text)?t.text.length:1)*i.lineHeight+s.height}function qs(t,e,i){let s=ut(t);return(i&&"right"!==e||!i&&"right"===e)&&(s=(t=>"left"===t?"right":"right"===t?"left":t)(s)),s}class Ks extends Bs{constructor(t){super(),this.id=t.id,this.type=t.type,this.options=void 0,this.ctx=t.ctx,this.chart=t.chart,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this._margins={left:0,right:0,top:0,bottom:0},this.maxWidth=void 0,this.maxHeight=void 0,this.paddingTop=void 0,this.paddingBottom=void 0,this.paddingLeft=void 0,this.paddingRight=void 0,this.axis=void 0,this.labelRotation=void 0,this.min=void 0,this.max=void 0,this._range=void 0,this.ticks=[],this._gridLineItems=null,this._labelItems=null,this._labelSizes=null,this._length=0,this._maxLength=0,this._longestTextCache={},this._startPixel=void 0,this._endPixel=void 0,this._reversePixels=!1,this._userMax=void 0,this._userMin=void 0,this._suggestedMax=void 0,this._suggestedMin=void 0,this._ticksLength=0,this._borderValue=0,this._cache={},this._dataLimitsCached=!1,this.$context=void 0}init(t){this.options=t.setContext(this.getContext()),this.axis=t.axis,this._userMin=this.parse(t.min),this._userMax=this.parse(t.max),this._suggestedMin=this.parse(t.suggestedMin),this._suggestedMax=this.parse(t.suggestedMax)}parse(t,e){return t}getUserBounds(){let{_userMin:t,_userMax:e,_suggestedMin:i,_suggestedMax:s}=this;return t=r(t,Number.POSITIVE_INFINITY),e=r(e,Number.NEGATIVE_INFINITY),i=r(i,Number.POSITIVE_INFINITY),s=r(s,Number.NEGATIVE_INFINITY),{min:r(t,i),max:r(e,s),minDefined:a(t),maxDefined:a(e)}}getMinMax(t){let e,{min:i,max:s,minDefined:n,maxDefined:o}=this.getUserBounds();if(n&&o)return{min:i,max:s};const a=this.getMatchingVisibleMetas();for(let r=0,l=a.length;r<l;++r)e=a[r].controller.getMinMax(this,t),n||(i=Math.min(i,e.min)),o||(s=Math.max(s,e.max));return i=o&&i>s?s:i,s=n&&i>s?i:s,{min:r(i,r(s,i)),max:r(s,r(i,s))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}getLabelItems(t=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(t))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){d(this.options.beforeUpdate,[this])}update(t,e,i){const{beginAtZero:s,grace:n,ticks:o}=this.options,a=o.sampleSize;this.beforeUpdate(),this.maxWidth=t,this.maxHeight=e,this._margins=i=Object.assign({left:0,right:0,top:0,bottom:0},i),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+i.left+i.right:this.height+i.top+i.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=Si(this,n,s),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const r=a<this.ticks.length;this._convertTicksToLabels(r?$s(this.ticks,a):this.ticks),this.configure(),this.beforeCalculateLabelRotation(),this.calculateLabelRotation(),this.afterCalculateLabelRotation(),o.display&&(o.autoSkip||"auto"===o.source)&&(this.ticks=Ns(this,this.ticks),this._labelSizes=null,this.afterAutoSkip()),r&&this._convertTicksToLabels(this.ticks),this.beforeFit(),this.fit(),this.afterFit(),this.afterUpdate()}configure(){let t,e,i=this.options.reverse;this.isHorizontal()?(t=this.left,e=this.right):(t=this.top,e=this.bottom,i=!i),this._startPixel=t,this._endPixel=e,this._reversePixels=i,this._length=e-t,this._alignToPixels=this.options.alignToPixels}afterUpdate(){d(this.options.afterUpdate,[this])}beforeSetDimensions(){d(this.options.beforeSetDimensions,[this])}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=0,this.right=this.width):(this.height=this.maxHeight,this.top=0,this.bottom=this.height),this.paddingLeft=0,this.paddingTop=0,this.paddingRight=0,this.paddingBottom=0}afterSetDimensions(){d(this.options.afterSetDimensions,[this])}_callHooks(t){this.chart.notifyPlugins(t,this.getContext()),d(this.options[t],[this])}beforeDataLimits(){this._callHooks("beforeDataLimits")}determineDataLimits(){}afterDataLimits(){this._callHooks("afterDataLimits")}beforeBuildTicks(){this._callHooks("beforeBuildTicks")}buildTicks(){return[]}afterBuildTicks(){this._callHooks("afterBuildTicks")}beforeTickToLabelConversion(){d(this.options.beforeTickToLabelConversion,[this])}generateTickLabels(t){const e=this.options.ticks;let i,s,n;for(i=0,s=t.length;i<s;i++)n=t[i],n.label=d(e.callback,[n.value,i,t],this)}afterTickToLabelConversion(){d(this.options.afterTickToLabelConversion,[this])}beforeCalculateLabelRotation(){d(this.options.beforeCalculateLabelRotation,[this])}calculateLabelRotation(){const t=this.options,e=t.ticks,i=js(this.ticks.length,t.ticks.maxTicksLimit),s=e.minRotation||0,n=e.maxRotation;let o,a,r,l=s;if(!this._isVisible()||!e.display||s>=n||i<=1||!this.isHorizontal())return void(this.labelRotation=s);const h=this._getLabelSizes(),c=h.widest.width,d=h.highest.height,u=J(this.chart.width-c,0,this.maxWidth);o=t.offset?this.maxWidth/i:u/(i-1),c+6>o&&(o=u/(i-(t.offset?.5:1)),a=this.maxHeight-Us(t.grid)-e.padding-Xs(t.title,this.chart.options.font),r=Math.sqrt(c*c+d*d),l=Y(Math.min(Math.asin(J((h.highest.height+6)/o,-1,1)),Math.asin(J(a/r,-1,1))-Math.asin(J(d/r,-1,1)))),l=Math.max(s,Math.min(n,l))),this.labelRotation=l}afterCalculateLabelRotation(){d(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){d(this.options.beforeFit,[this])}fit(){const t={width:0,height:0},{chart:e,options:{ticks:i,title:s,grid:n}}=this,o=this._isVisible(),a=this.isHorizontal();if(o){const o=Xs(s,e.options.font);if(a?(t.width=this.maxWidth,t.height=Us(n)+o):(t.height=this.maxHeight,t.width=Us(n)+o),i.display&&this.ticks.length){const{first:e,last:s,widest:n,highest:o}=this._getLabelSizes(),r=2*i.padding,l=$(this.labelRotation),h=Math.cos(l),c=Math.sin(l);if(a){const e=i.mirror?0:c*n.width+h*o.height;t.height=Math.min(this.maxHeight,t.height+e+r)}else{const e=i.mirror?0:h*n.width+c*o.height;t.width=Math.min(this.maxWidth,t.width+e+r)}this._calculatePadding(e,s,c,h)}}this._handleMargins(),a?(this.width=this._length=e.width-this._margins.left-this._margins.right,this.height=t.height):(this.width=t.width,this.height=this._length=e.height-this._margins.top-this._margins.bottom)}_calculatePadding(t,e,i,s){const{ticks:{align:n,padding:o},position:a}=this.options,r=0!==this.labelRotation,l="top"!==a&&"x"===this.axis;if(this.isHorizontal()){const a=this.getPixelForTick(0)-this.left,h=this.right-this.getPixelForTick(this.ticks.length-1);let c=0,d=0;r?l?(c=s*t.width,d=i*e.height):(c=i*t.height,d=s*e.width):"start"===n?d=e.width:"end"===n?c=t.width:"inner"!==n&&(c=t.width/2,d=e.width/2),this.paddingLeft=Math.max((c-a+o)*this.width/(this.width-a),0),this.paddingRight=Math.max((d-h+o)*this.width/(this.width-h),0)}else{let i=e.height/2,s=t.height/2;"start"===n?(i=0,s=t.height):"end"===n&&(i=e.height,s=0),this.paddingTop=i+o,this.paddingBottom=s+o}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){d(this.options.afterFit,[this])}isHorizontal(){const{axis:t,position:e}=this.options;return"top"===e||"bottom"===e||"x"===t}isFullSize(){return this.options.fullSize}_convertTicksToLabels(t){let e,i;for(this.beforeTickToLabelConversion(),this.generateTickLabels(t),e=0,i=t.length;e<i;e++)s(t[e].label)&&(t.splice(e,1),i--,e--);this.afterTickToLabelConversion()}_getLabelSizes(){let t=this._labelSizes;if(!t){const e=this.options.ticks.sampleSize;let i=this.ticks;e<i.length&&(i=$s(i,e)),this._labelSizes=t=this._computeLabelSizes(i,i.length,this.options.ticks.maxTicksLimit)}return t}_computeLabelSizes(t,e,i){const{ctx:o,_longestTextCache:a}=this,r=[],l=[],h=Math.floor(e/js(e,i));let c,d,f,g,p,m,b,x,_,y,v,M=0,w=0;for(c=0;c<e;c+=h){if(g=t[c].label,p=this._resolveTickFontOptions(c),o.font=m=p.string,b=a[m]=a[m]||{data:{},gc:[]},x=p.lineHeight,_=y=0,s(g)||n(g)){if(n(g))for(d=0,f=g.length;d<f;++d)v=g[d],s(v)||n(v)||(_=De(o,b.data,b.gc,_,v),y+=x)}else _=De(o,b.data,b.gc,_,g),y=x;r.push(_),l.push(y),M=Math.max(_,M),w=Math.max(y,w)}!function(t,e){u(t,(t=>{const i=t.gc,s=i.length/2;let n;if(s>e){for(n=0;n<s;++n)delete t.data[i[n]];i.splice(0,s)}}))}(a,e);const k=r.indexOf(M),S=l.indexOf(w),P=t=>({width:r[t]||0,height:l[t]||0});return{first:P(0),last:P(e-1),widest:P(k),highest:P(S),widths:r,heights:l}}getLabelForValue(t){return t}getPixelForValue(t,e){return NaN}getValueForPixel(t){}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);const e=this._startPixel+t*this._length;return Q(this._alignToPixels?Oe(this.chart,e,0):e)}getDecimalForPixel(t){const e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0}getContext(t){const e=this.ticks||[];if(t>=0&&t<e.length){const i=e[t];return i.$context||(i.$context=function(t,e,i){return Pi(t,{tick:i,index:e,type:"tick"})}(this.getContext(),t,i))}return this.$context||(this.$context=Pi(this.chart.getContext(),{scale:this,type:"scale"}))}_tickSize(){const t=this.options.ticks,e=$(this.labelRotation),i=Math.abs(Math.cos(e)),s=Math.abs(Math.sin(e)),n=this._getLabelSizes(),o=t.autoSkipPadding||0,a=n?n.widest.width+o:0,r=n?n.highest.height+o:0;return this.isHorizontal()?r*i>a*s?a/i:r/s:r*s<a*i?r/i:a/s}_isVisible(){const t=this.options.display;return"auto"!==t?!!t:this.getMatchingVisibleMetas().length>0}_computeGridLineItems(t){const e=this.axis,i=this.chart,s=this.options,{grid:n,position:a,border:r}=s,h=n.offset,c=this.isHorizontal(),d=this.ticks.length+(h?1:0),u=Us(n),f=[],g=r.setContext(this.getContext()),p=g.display?g.width:0,m=p/2,b=function(t){return Oe(i,t,p)};let x,_,y,v,M,w,k,S,P,D,C,O;if("top"===a)x=b(this.bottom),w=this.bottom-u,S=x-m,D=b(t.top)+m,O=t.bottom;else if("bottom"===a)x=b(this.top),D=t.top,O=b(t.bottom)-m,w=x+m,S=this.top+u;else if("left"===a)x=b(this.right),M=this.right-u,k=x-m,P=b(t.left)+m,C=t.right;else if("right"===a)x=b(this.left),P=t.left,C=b(t.right)-m,M=x+m,k=this.left+u;else if("x"===e){if("center"===a)x=b((t.top+t.bottom)/2+.5);else if(o(a)){const t=Object.keys(a)[0],e=a[t];x=b(this.chart.scales[t].getPixelForValue(e))}D=t.top,O=t.bottom,w=x+m,S=w+u}else if("y"===e){if("center"===a)x=b((t.left+t.right)/2);else if(o(a)){const t=Object.keys(a)[0],e=a[t];x=b(this.chart.scales[t].getPixelForValue(e))}M=x-m,k=M-u,P=t.left,C=t.right}const A=l(s.ticks.maxTicksLimit,d),T=Math.max(1,Math.ceil(d/A));for(_=0;_<d;_+=T){const t=this.getContext(_),e=n.setContext(t),s=r.setContext(t),o=e.lineWidth,a=e.color,l=s.dash||[],d=s.dashOffset,u=e.tickWidth,g=e.tickColor,p=e.tickBorderDash||[],m=e.tickBorderDashOffset;y=Ys(this,_,h),void 0!==y&&(v=Oe(i,y,o),c?M=k=P=C=v:w=S=D=O=v,f.push({tx1:M,ty1:w,tx2:k,ty2:S,x1:P,y1:D,x2:C,y2:O,width:o,color:a,borderDash:l,borderDashOffset:d,tickWidth:u,tickColor:g,tickBorderDash:p,tickBorderDashOffset:m}))}return this._ticksLength=d,this._borderValue=x,f}_computeLabelItems(t){const e=this.axis,i=this.options,{position:s,ticks:a}=i,r=this.isHorizontal(),l=this.ticks,{align:h,crossAlign:c,padding:d,mirror:u}=a,f=Us(i.grid),g=f+d,p=u?-d:g,m=-$(this.labelRotation),b=[];let x,_,y,v,M,w,k,S,P,D,C,O,A="middle";if("top"===s)w=this.bottom-p,k=this._getXAxisLabelAlignment();else if("bottom"===s)w=this.top+p,k=this._getXAxisLabelAlignment();else if("left"===s){const t=this._getYAxisLabelAlignment(f);k=t.textAlign,M=t.x}else if("right"===s){const t=this._getYAxisLabelAlignment(f);k=t.textAlign,M=t.x}else if("x"===e){if("center"===s)w=(t.top+t.bottom)/2+g;else if(o(s)){const t=Object.keys(s)[0],e=s[t];w=this.chart.scales[t].getPixelForValue(e)+g}k=this._getXAxisLabelAlignment()}else if("y"===e){if("center"===s)M=(t.left+t.right)/2-g;else if(o(s)){const t=Object.keys(s)[0],e=s[t];M=this.chart.scales[t].getPixelForValue(e)}k=this._getYAxisLabelAlignment(f).textAlign}"y"===e&&("start"===h?A="top":"end"===h&&(A="bottom"));const T=this._getLabelSizes();for(x=0,_=l.length;x<_;++x){y=l[x],v=y.label;const t=a.setContext(this.getContext(x));S=this.getPixelForTick(x)+a.labelOffset,P=this._resolveTickFontOptions(x),D=P.lineHeight,C=n(v)?v.length:1;const e=C/2,i=t.color,o=t.textStrokeColor,h=t.textStrokeWidth;let d,f=k;if(r?(M=S,"inner"===k&&(f=x===_-1?this.options.reverse?"left":"right":0===x?this.options.reverse?"right":"left":"center"),O="top"===s?"near"===c||0!==m?-C*D+D/2:"center"===c?-T.highest.height/2-e*D+D:-T.highest.height+D/2:"near"===c||0!==m?D/2:"center"===c?T.highest.height/2-e*D:T.highest.height-C*D,u&&(O*=-1),0===m||t.showLabelBackdrop||(M+=D/2*Math.sin(m))):(w=S,O=(1-C)*D/2),t.showLabelBackdrop){const e=Mi(t.backdropPadding),i=T.heights[x],s=T.widths[x];let n=O-e.top,o=0-e.left;switch(A){case"middle":n-=i/2;break;case"bottom":n-=i}switch(k){case"center":o-=s/2;break;case"right":o-=s}d={left:o,top:n,width:s+e.width,height:i+e.height,color:t.backdropColor}}b.push({label:v,font:P,textOffset:O,options:{rotation:m,color:i,strokeColor:o,strokeWidth:h,textAlign:f,textBaseline:A,translation:[M,w],backdrop:d}})}return b}_getXAxisLabelAlignment(){const{position:t,ticks:e}=this.options;if(-$(this.labelRotation))return"top"===t?"left":"right";let i="center";return"start"===e.align?i="left":"end"===e.align?i="right":"inner"===e.align&&(i="inner"),i}_getYAxisLabelAlignment(t){const{position:e,ticks:{crossAlign:i,mirror:s,padding:n}}=this.options,o=t+n,a=this._getLabelSizes().widest.width;let r,l;return"left"===e?s?(l=this.right+n,"near"===i?r="left":"center"===i?(r="center",l+=a/2):(r="right",l+=a)):(l=this.right-o,"near"===i?r="right":"center"===i?(r="center",l-=a/2):(r="left",l=this.left)):"right"===e?s?(l=this.left+n,"near"===i?r="right":"center"===i?(r="center",l-=a/2):(r="left",l-=a)):(l=this.left+o,"near"===i?r="left":"center"===i?(r="center",l+=a/2):(r="right",l=this.right)):r="right",{textAlign:r,x:l}}_computeLabelArea(){if(this.options.ticks.mirror)return;const t=this.chart,e=this.options.position;return"left"===e||"right"===e?{top:0,left:this.left,bottom:t.height,right:this.right}:"top"===e||"bottom"===e?{top:this.top,left:0,bottom:this.bottom,right:t.width}:void 0}drawBackground(){const{ctx:t,options:{backgroundColor:e},left:i,top:s,width:n,height:o}=this;e&&(t.save(),t.fillStyle=e,t.fillRect(i,s,n,o),t.restore())}getLineWidthForValue(t){const e=this.options.grid;if(!this._isVisible()||!e.display)return 0;const i=this.ticks.findIndex((e=>e.value===t));if(i>=0){return e.setContext(this.getContext(i)).lineWidth}return 0}drawGrid(t){const e=this.options.grid,i=this.ctx,s=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t));let n,o;const a=(t,e,s)=>{s.width&&s.color&&(i.save(),i.lineWidth=s.width,i.strokeStyle=s.color,i.setLineDash(s.borderDash||[]),i.lineDashOffset=s.borderDashOffset,i.beginPath(),i.moveTo(t.x,t.y),i.lineTo(e.x,e.y),i.stroke(),i.restore())};if(e.display)for(n=0,o=s.length;n<o;++n){const t=s[n];e.drawOnChartArea&&a({x:t.x1,y:t.y1},{x:t.x2,y:t.y2},t),e.drawTicks&&a({x:t.tx1,y:t.ty1},{x:t.tx2,y:t.ty2},{color:t.tickColor,width:t.tickWidth,borderDash:t.tickBorderDash,borderDashOffset:t.tickBorderDashOffset})}}drawBorder(){const{chart:t,ctx:e,options:{border:i,grid:s}}=this,n=i.setContext(this.getContext()),o=i.display?n.width:0;if(!o)return;const a=s.setContext(this.getContext(0)).lineWidth,r=this._borderValue;let l,h,c,d;this.isHorizontal()?(l=Oe(t,this.left,o)-o/2,h=Oe(t,this.right,a)+a/2,c=d=r):(c=Oe(t,this.top,o)-o/2,d=Oe(t,this.bottom,a)+a/2,l=h=r),e.save(),e.lineWidth=n.width,e.strokeStyle=n.color,e.beginPath(),e.moveTo(l,c),e.lineTo(h,d),e.stroke(),e.restore()}drawLabels(t){if(!this.options.ticks.display)return;const e=this.ctx,i=this._computeLabelArea();i&&Re(e,i);const s=this.getLabelItems(t);for(const t of s){const i=t.options,s=t.font;Ve(e,t.label,0,t.textOffset,s,i)}i&&Ie(e)}drawTitle(){const{ctx:t,options:{position:e,title:i,reverse:s}}=this;if(!i.display)return;const a=wi(i.font),r=Mi(i.padding),l=i.align;let h=a.lineHeight/2;"bottom"===e||"center"===e||o(e)?(h+=r.bottom,n(i.text)&&(h+=a.lineHeight*(i.text.length-1))):h+=r.top;const{titleX:c,titleY:d,maxWidth:u,rotation:f}=function(t,e,i,s){const{top:n,left:a,bottom:r,right:l,chart:h}=t,{chartArea:c,scales:d}=h;let u,f,g,p=0;const m=r-n,b=l-a;if(t.isHorizontal()){if(f=ft(s,a,l),o(i)){const t=Object.keys(i)[0],s=i[t];g=d[t].getPixelForValue(s)+m-e}else g="center"===i?(c.bottom+c.top)/2+m-e:Hs(t,i,e);u=l-a}else{if(o(i)){const t=Object.keys(i)[0],s=i[t];f=d[t].getPixelForValue(s)-b+e}else f="center"===i?(c.left+c.right)/2-b+e:Hs(t,i,e);g=ft(s,r,n),p="left"===i?-E:E}return{titleX:f,titleY:g,maxWidth:u,rotation:p}}(this,h,e,l);Ve(t,i.text,0,0,a,{color:i.color,maxWidth:u,rotation:f,textAlign:qs(l,e,s),textBaseline:"middle",translation:[c,d]})}draw(t){this._isVisible()&&(this.drawBackground(),this.drawGrid(t),this.drawBorder(),this.drawTitle(),this.drawLabels(t))}_layers(){const t=this.options,e=t.ticks&&t.ticks.z||0,i=l(t.grid&&t.grid.z,-1),s=l(t.border&&t.border.z,0);return this._isVisible()&&this.draw===Ks.prototype.draw?[{z:i,draw:t=>{this.drawBackground(),this.drawGrid(t),this.drawTitle()}},{z:s,draw:()=>{this.drawBorder()}},{z:e,draw:t=>{this.drawLabels(t)}}]:[{z:e,draw:t=>{this.draw(t)}}]}getMatchingVisibleMetas(t){const e=this.chart.getSortedVisibleDatasetMetas(),i=this.axis+"AxisID",s=[];let n,o;for(n=0,o=e.length;n<o;++n){const o=e[n];o[i]!==this.id||t&&o.type!==t||s.push(o)}return s}_resolveTickFontOptions(t){return wi(this.options.ticks.setContext(this.getContext(t)).font)}_maxDigits(){const t=this._resolveTickFontOptions(0).lineHeight;return(this.isHorizontal()?this.width:this.height)/t}}class Gs{constructor(t,e,i){this.type=t,this.scope=e,this.override=i,this.items=Object.create(null)}isForType(t){return Object.prototype.isPrototypeOf.call(this.type.prototype,t.prototype)}register(t){const e=Object.getPrototypeOf(t);let i;(function(t){return"id"in t&&"defaults"in t})(e)&&(i=this.register(e));const s=this.items,n=t.id,o=this.scope+"."+n;if(!n)throw new Error("class does not have id: "+t);return n in s||(s[n]=t,function(t,e,i){const s=b(Object.create(null),[i?ue.get(i):{},ue.get(e),t.defaults]);ue.set(e,s),t.defaultRoutes&&function(t,e){Object.keys(e).forEach((i=>{const s=i.split("."),n=s.pop(),o=[t].concat(s).join("."),a=e[i].split("."),r=a.pop(),l=a.join(".");ue.route(o,n,l,r)}))}(e,t.defaultRoutes);t.descriptors&&ue.describe(e,t.descriptors)}(t,o,i),this.override&&ue.override(t.id,t.overrides)),o}get(t){return this.items[t]}unregister(t){const e=this.items,i=t.id,s=this.scope;i in e&&delete e[i],s&&i in ue[s]&&(delete ue[s][i],this.override&&delete re[i])}}class Zs{constructor(){this.controllers=new Gs(Vs,"datasets",!0),this.elements=new Gs(Bs,"elements"),this.plugins=new Gs(Object,"plugins"),this.scales=new Gs(Ks,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...t){this._each("register",t)}remove(...t){this._each("unregister",t)}addControllers(...t){this._each("register",t,this.controllers)}addElements(...t){this._each("register",t,this.elements)}addPlugins(...t){this._each("register",t,this.plugins)}addScales(...t){this._each("register",t,this.scales)}getController(t){return this._get(t,this.controllers,"controller")}getElement(t){return this._get(t,this.elements,"element")}getPlugin(t){return this._get(t,this.plugins,"plugin")}getScale(t){return this._get(t,this.scales,"scale")}removeControllers(...t){this._each("unregister",t,this.controllers)}removeElements(...t){this._each("unregister",t,this.elements)}removePlugins(...t){this._each("unregister",t,this.plugins)}removeScales(...t){this._each("unregister",t,this.scales)}_each(t,e,i){[...e].forEach((e=>{const s=i||this._getRegistryForType(e);i||s.isForType(e)||s===this.plugins&&e.id?this._exec(t,s,e):u(e,(e=>{const s=i||this._getRegistryForType(e);this._exec(t,s,e)}))}))}_exec(t,e,i){const s=w(t);d(i["before"+s],[],i),e[t](i),d(i["after"+s],[],i)}_getRegistryForType(t){for(let e=0;e<this._typedRegistries.length;e++){const i=this._typedRegistries[e];if(i.isForType(t))return i}return this.plugins}_get(t,e,i){const s=e.get(t);if(void 0===s)throw new Error('"'+t+'" is not a registered '+i+".");return s}}var Js=new Zs;class Qs{constructor(){this._init=[]}notify(t,e,i,s){"beforeInit"===e&&(this._init=this._createDescriptors(t,!0),this._notify(this._init,t,"install"));const n=s?this._descriptors(t).filter(s):this._descriptors(t),o=this._notify(n,t,e,i);return"afterDestroy"===e&&(this._notify(n,t,"stop"),this._notify(this._init,t,"uninstall")),o}_notify(t,e,i,s){s=s||{};for(const n of t){const t=n.plugin;if(!1===d(t[i],[e,s,n.options],t)&&s.cancelable)return!1}return!0}invalidate(){s(this._cache)||(this._oldCache=this._cache,this._cache=void 0)}_descriptors(t){if(this._cache)return this._cache;const e=this._cache=this._createDescriptors(t);return this._notifyStateChanges(t),e}_createDescriptors(t,e){const i=t&&t.config,s=l(i.options&&i.options.plugins,{}),n=function(t){const e={},i=[],s=Object.keys(Js.plugins.items);for(let t=0;t<s.length;t++)i.push(Js.getPlugin(s[t]));const n=t.plugins||[];for(let t=0;t<n.length;t++){const s=n[t];-1===i.indexOf(s)&&(i.push(s),e[s.id]=!0)}return{plugins:i,localIds:e}}(i);return!1!==s||e?function(t,{plugins:e,localIds:i},s,n){const o=[],a=t.getContext();for(const r of e){const e=r.id,l=tn(s[e],n);null!==l&&o.push({plugin:r,options:en(t.config,{plugin:r,local:i[e]},l,a)})}return o}(t,n,s,e):[]}_notifyStateChanges(t){const e=this._oldCache||[],i=this._cache,s=(t,e)=>t.filter((t=>!e.some((e=>t.plugin.id===e.plugin.id))));this._notify(s(e,i),t,"stop"),this._notify(s(i,e),t,"start")}}function tn(t,e){return e||!1!==t?!0===t?{}:t:null}function en(t,{plugin:e,local:i},s,n){const o=t.pluginScopeKeys(e),a=t.getOptionScopes(s,o);return i&&e.defaults&&a.push(e.defaults),t.createResolver(a,n,[""],{scriptable:!1,indexable:!1,allKeys:!0})}function sn(t,e){const i=ue.datasets[t]||{};return((e.datasets||{})[t]||{}).indexAxis||e.indexAxis||i.indexAxis||"x"}function nn(t,e){if("x"===t||"y"===t||"r"===t)return t;var i;if(t=e.axis||("top"===(i=e.position)||"bottom"===i?"x":"left"===i||"right"===i?"y":void 0)||t.length>1&&nn(t[0].toLowerCase(),e))return t;throw new Error(`Cannot determine type of '${name}' axis. Please provide 'axis' or 'position' option.`)}function on(t){const e=t.options||(t.options={});e.plugins=l(e.plugins,{}),e.scales=function(t,e){const i=re[t.type]||{scales:{}},s=e.scales||{},n=sn(t.type,e),a=Object.create(null);return Object.keys(s).forEach((t=>{const e=s[t];if(!o(e))return console.error(`Invalid scale configuration for scale: ${t}`);if(e._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${t}`);const r=nn(t,e),l=function(t,e){return t===e?"_index_":"_value_"}(r,n),h=i.scales||{};a[t]=x(Object.create(null),[{axis:r},e,h[r],h[l]])})),t.data.datasets.forEach((i=>{const n=i.type||t.type,o=i.indexAxis||sn(n,e),r=(re[n]||{}).scales||{};Object.keys(r).forEach((t=>{const e=function(t,e){let i=t;return"_index_"===t?i=e:"_value_"===t&&(i="x"===e?"y":"x"),i}(t,o),n=i[e+"AxisID"]||e;a[n]=a[n]||Object.create(null),x(a[n],[{axis:e},s[n],r[t]])}))})),Object.keys(a).forEach((t=>{const e=a[t];x(e,[ue.scales[e.type],ue.scale])})),a}(t,e)}function an(t){return(t=t||{}).datasets=t.datasets||[],t.labels=t.labels||[],t}const rn=new Map,ln=new Set;function hn(t,e){let i=rn.get(t);return i||(i=e(),rn.set(t,i),ln.add(i)),i}const cn=(t,e,i)=>{const s=M(e,i);void 0!==s&&t.add(s)};class dn{constructor(t){this._config=function(t){return(t=t||{}).data=an(t.data),on(t),t}(t),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=an(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){const t=this._config;this.clearCache(),on(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return hn(t,(()=>[[`datasets.${t}`,""]]))}datasetAnimationScopeKeys(t,e){return hn(`${t}.transition.${e}`,(()=>[[`datasets.${t}.transitions.${e}`,`transitions.${e}`],[`datasets.${t}`,""]]))}datasetElementScopeKeys(t,e){return hn(`${t}-${e}`,(()=>[[`datasets.${t}.elements.${e}`,`datasets.${t}`,`elements.${e}`,""]]))}pluginScopeKeys(t){const e=t.id;return hn(`${this.type}-plugin-${e}`,(()=>[[`plugins.${e}`,...t.additionalOptionScopes||[]]]))}_cachedScopes(t,e){const i=this._scopeCache;let s=i.get(t);return s&&!e||(s=new Map,i.set(t,s)),s}getOptionScopes(t,e,i){const{options:s,type:n}=this,o=this._cachedScopes(t,i),a=o.get(e);if(a)return a;const r=new Set;e.forEach((e=>{t&&(r.add(t),e.forEach((e=>cn(r,t,e)))),e.forEach((t=>cn(r,s,t))),e.forEach((t=>cn(r,re[n]||{},t))),e.forEach((t=>cn(r,ue,t))),e.forEach((t=>cn(r,le,t)))}));const l=Array.from(r);return 0===l.length&&l.push(Object.create(null)),ln.has(e)&&o.set(e,l),l}chartOptionScopes(){const{options:t,type:e}=this;return[t,re[e]||{},ue.datasets[e]||{},{type:e},ue,le]}resolveNamedOptions(t,e,i,s=[""]){const o={$shared:!0},{resolver:a,subPrefixes:r}=un(this._resolverCache,t,s);let l=a;if(function(t,e){const{isScriptable:i,isIndexable:s}=$e(t);for(const o of e){const e=i(o),a=s(o),r=(a||e)&&t[o];if(e&&(S(r)||fn(r))||a&&n(r))return!0}return!1}(a,e)){o.$shared=!1;l=je(a,i=S(i)?i():i,this.createResolver(t,i,r))}for(const t of e)o[t]=l[t];return o}createResolver(t,e,i=[""],s){const{resolver:n}=un(this._resolverCache,t,i);return o(e)?je(n,e,void 0,s):n}}function un(t,e,i){let s=t.get(e);s||(s=new Map,t.set(e,s));const n=i.join();let o=s.get(n);if(!o){o={resolver:He(e,i),subPrefixes:i.filter((t=>!t.toLowerCase().includes("hover")))},s.set(n,o)}return o}const fn=t=>o(t)&&Object.getOwnPropertyNames(t).reduce(((e,i)=>e||S(t[i])),!1);const gn=["top","bottom","left","right","chartArea"];function pn(t,e){return"top"===t||"bottom"===t||-1===gn.indexOf(t)&&"x"===e}function mn(t,e){return function(i,s){return i[t]===s[t]?i[e]-s[e]:i[t]-s[t]}}function bn(t){const e=t.chart,i=e.options.animation;e.notifyPlugins("afterRender"),d(i&&i.onComplete,[t],e)}function xn(t){const e=t.chart,i=e.options.animation;d(i&&i.onProgress,[t],e)}function _n(t){return fe()&&"string"==typeof t?t=document.getElementById(t):t&&t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas),t}const yn={},vn=t=>{const e=_n(t);return Object.values(yn).filter((t=>t.canvas===e)).pop()};function Mn(t,e,i){const s=Object.keys(t);for(const n of s){const s=+n;if(s>=e){const o=t[n];delete t[n],(i>0||s>e)&&(t[s+i]=o)}}}class wn{static defaults=ue;static instances=yn;static overrides=re;static registry=Js;static version="4.2.1";static getChart=vn;static register(...t){Js.add(...t),kn()}static unregister(...t){Js.remove(...t),kn()}constructor(t,e){const s=this.config=new dn(e),n=_n(t),o=vn(n);if(o)throw new Error("Canvas is already in use. Chart with ID '"+o.id+"' must be destroyed before the canvas with ID '"+o.canvas.id+"' can be reused.");const a=s.createResolver(s.chartOptionScopes(),this.getContext());this.platform=new(s.platform||vs(n)),this.platform.updateConfig(s);const r=this.platform.acquireContext(n,a.aspectRatio),l=r&&r.canvas,h=l&&l.height,c=l&&l.width;this.id=i(),this.ctx=r,this.canvas=l,this.width=c,this.height=h,this._options=a,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new Qs,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=dt((t=>this.update(t)),a.resizeDelay||0),this._dataChanges=[],yn[this.id]=this,r&&l?(xt.listen(this,"complete",bn),xt.listen(this,"progress",xn),this._initialize(),this.attached&&this.update()):console.error("Failed to create chart: can't acquire context from the given item")}get aspectRatio(){const{options:{aspectRatio:t,maintainAspectRatio:e},width:i,height:n,_aspectRatio:o}=this;return s(t)?e&&o?o:n?i/n:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}get registry(){return Js}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():we(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return Ae(this.canvas,this.ctx),this}stop(){return xt.stop(this),this}resize(t,e){xt.running(this)?this._resizeBeforeDraw={width:t,height:e}:this._resize(t,e)}_resize(t,e){const i=this.options,s=this.canvas,n=i.maintainAspectRatio&&this.aspectRatio,o=this.platform.getMaximumSize(s,t,e,n),a=i.devicePixelRatio||this.platform.getDevicePixelRatio(),r=this.width?"resize":"attach";this.width=o.width,this.height=o.height,this._aspectRatio=this.aspectRatio,we(this,a,!0)&&(this.notifyPlugins("resize",{size:o}),d(i.onResize,[this,o],this),this.attached&&this._doResize(r)&&this.render())}ensureScalesHaveIDs(){u(this.options.scales||{},((t,e)=>{t.id=e}))}buildOrUpdateScales(){const t=this.options,e=t.scales,i=this.scales,s=Object.keys(i).reduce(((t,e)=>(t[e]=!1,t)),{});let n=[];e&&(n=n.concat(Object.keys(e).map((t=>{const i=e[t],s=nn(t,i),n="r"===s,o="x"===s;return{options:i,dposition:n?"chartArea":o?"bottom":"left",dtype:n?"radialLinear":o?"category":"linear"}})))),u(n,(e=>{const n=e.options,o=n.id,a=nn(o,n),r=l(n.type,e.dtype);void 0!==n.position&&pn(n.position,a)===pn(e.dposition)||(n.position=e.dposition),s[o]=!0;let h=null;if(o in i&&i[o].type===r)h=i[o];else{h=new(Js.getScale(r))({id:o,type:r,ctx:this.ctx,chart:this}),i[h.id]=h}h.init(n,t)})),u(s,((t,e)=>{t||delete i[e]})),u(i,(t=>{ns.configure(this,t,t.options),ns.addBox(this,t)}))}_updateMetasets(){const t=this._metasets,e=this.data.datasets.length,i=t.length;if(t.sort(((t,e)=>t.index-e.index)),i>e){for(let t=e;t<i;++t)this._destroyDatasetMeta(t);t.splice(e,i-e)}this._sortedMetasets=t.slice(0).sort(mn("order","index"))}_removeUnreferencedMetasets(){const{_metasets:t,data:{datasets:e}}=this;t.length>e.length&&delete this._stacks,t.forEach(((t,i)=>{0===e.filter((e=>e===t._dataset)).length&&this._destroyDatasetMeta(i)}))}buildOrUpdateControllers(){const t=[],e=this.data.datasets;let i,s;for(this._removeUnreferencedMetasets(),i=0,s=e.length;i<s;i++){const s=e[i];let n=this.getDatasetMeta(i);const o=s.type||this.config.type;if(n.type&&n.type!==o&&(this._destroyDatasetMeta(i),n=this.getDatasetMeta(i)),n.type=o,n.indexAxis=s.indexAxis||sn(o,this.options),n.order=s.order||0,n.index=i,n.label=""+s.label,n.visible=this.isDatasetVisible(i),n.controller)n.controller.updateIndex(i),n.controller.linkScales();else{const e=Js.getController(o),{datasetElementType:s,dataElementType:a}=ue.datasets[o];Object.assign(e,{dataElementType:Js.getElement(a),datasetElementType:s&&Js.getElement(s)}),n.controller=new e(this,i),t.push(n.controller)}}return this._updateMetasets(),t}_resetElements(){u(this.data.datasets,((t,e)=>{this.getDatasetMeta(e).controller.reset()}),this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){const e=this.config;e.update();const i=this._options=e.createResolver(e.chartOptionScopes(),this.getContext()),s=this._animationsDisabled=!i.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),!1===this.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0}))return;const n=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let o=0;for(let t=0,e=this.data.datasets.length;t<e;t++){const{controller:e}=this.getDatasetMeta(t),i=!s&&-1===n.indexOf(e);e.buildOrUpdateElements(i),o=Math.max(+e.getMaxOverflow(),o)}o=this._minPadding=i.layout.autoPadding?o:0,this._updateLayout(o),s||u(n,(t=>{t.reset()})),this._updateDatasets(t),this.notifyPlugins("afterUpdate",{mode:t}),this._layers.sort(mn("z","_idx"));const{_active:a,_lastEvent:r}=this;r?this._eventHandler(r,!0):a.length&&this._updateHoverStyles(a,a,!0),this.render()}_updateScales(){u(this.scales,(t=>{ns.removeBox(this,t)})),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const t=this.options,e=new Set(Object.keys(this._listeners)),i=new Set(t.events);P(e,i)&&!!this._responsiveListeners===t.responsive||(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:t}=this,e=this._getUniformDataChanges()||[];for(const{method:i,start:s,count:n}of e){Mn(t,s,"_removeElements"===i?-n:n)}}_getUniformDataChanges(){const t=this._dataChanges;if(!t||!t.length)return;this._dataChanges=[];const e=this.data.datasets.length,i=e=>new Set(t.filter((t=>t[0]===e)).map(((t,e)=>e+","+t.splice(1).join(",")))),s=i(0);for(let t=1;t<e;t++)if(!P(s,i(t)))return;return Array.from(s).map((t=>t.split(","))).map((t=>({method:t[1],start:+t[2],count:+t[3]})))}_updateLayout(t){if(!1===this.notifyPlugins("beforeLayout",{cancelable:!0}))return;ns.update(this,this.width,this.height,t);const e=this.chartArea,i=e.width<=0||e.height<=0;this._layers=[],u(this.boxes,(t=>{i&&"chartArea"===t.position||(t.configure&&t.configure(),this._layers.push(...t._layers()))}),this),this._layers.forEach(((t,e)=>{t._idx=e})),this.notifyPlugins("afterLayout")}_updateDatasets(t){if(!1!==this.notifyPlugins("beforeDatasetsUpdate",{mode:t,cancelable:!0})){for(let t=0,e=this.data.datasets.length;t<e;++t)this.getDatasetMeta(t).controller.configure();for(let e=0,i=this.data.datasets.length;e<i;++e)this._updateDataset(e,S(t)?t({datasetIndex:e}):t);this.notifyPlugins("afterDatasetsUpdate",{mode:t})}}_updateDataset(t,e){const i=this.getDatasetMeta(t),s={meta:i,index:t,mode:e,cancelable:!0};!1!==this.notifyPlugins("beforeDatasetUpdate",s)&&(i.controller._update(e),s.cancelable=!1,this.notifyPlugins("afterDatasetUpdate",s))}render(){!1!==this.notifyPlugins("beforeRender",{cancelable:!0})&&(xt.has(this)?this.attached&&!xt.running(this)&&xt.start(this):(this.draw(),bn({chart:this})))}draw(){let t;if(this._resizeBeforeDraw){const{width:t,height:e}=this._resizeBeforeDraw;this._resize(t,e),this._resizeBeforeDraw=null}if(this.clear(),this.width<=0||this.height<=0)return;if(!1===this.notifyPlugins("beforeDraw",{cancelable:!0}))return;const e=this._layers;for(t=0;t<e.length&&e[t].z<=0;++t)e[t].draw(this.chartArea);for(this._drawDatasets();t<e.length;++t)e[t].draw(this.chartArea);this.notifyPlugins("afterDraw")}_getSortedDatasetMetas(t){const e=this._sortedMetasets,i=[];let s,n;for(s=0,n=e.length;s<n;++s){const n=e[s];t&&!n.visible||i.push(n)}return i}getSortedVisibleDatasetMetas(){return this._getSortedDatasetMetas(!0)}_drawDatasets(){if(!1===this.notifyPlugins("beforeDatasetsDraw",{cancelable:!0}))return;const t=this.getSortedVisibleDatasetMetas();for(let e=t.length-1;e>=0;--e)this._drawDataset(t[e]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(t){const e=this.ctx,i=t._clip,s=!i.disabled,n=function(t){const{xScale:e,yScale:i}=t;if(e&&i)return{left:e.left,right:e.right,top:i.top,bottom:i.bottom}}(t)||this.chartArea,o={meta:t,index:t.index,cancelable:!0};!1!==this.notifyPlugins("beforeDatasetDraw",o)&&(s&&Re(e,{left:!1===i.left?0:n.left-i.left,right:!1===i.right?this.width:n.right+i.right,top:!1===i.top?0:n.top-i.top,bottom:!1===i.bottom?this.height:n.bottom+i.bottom}),t.controller.draw(),s&&Ie(e),o.cancelable=!1,this.notifyPlugins("afterDatasetDraw",o))}isPointInArea(t){return Ee(t,this.chartArea,this._minPadding)}getElementsAtEventForMode(t,e,i,s){const n=Yi.modes[e];return"function"==typeof n?n(this,t,i,s):[]}getDatasetMeta(t){const e=this.data.datasets[t],i=this._metasets;let s=i.filter((t=>t&&t._dataset===e)).pop();return s||(s={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e&&e.order||0,index:t,_dataset:e,_parsed:[],_sorted:!1},i.push(s)),s}getContext(){return this.$context||(this.$context=Pi(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){const e=this.data.datasets[t];if(!e)return!1;const i=this.getDatasetMeta(t);return"boolean"==typeof i.hidden?!i.hidden:!e.hidden}setDatasetVisibility(t,e){this.getDatasetMeta(t).hidden=!e}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,e,i){const s=i?"show":"hide",n=this.getDatasetMeta(t),o=n.controller._resolveAnimations(void 0,s);k(e)?(n.data[e].hidden=!i,this.update()):(this.setDatasetVisibility(t,i),o.update(n,{visible:i}),this.update((e=>e.datasetIndex===t?s:void 0)))}hide(t,e){this._updateVisibility(t,e,!1)}show(t,e){this._updateVisibility(t,e,!0)}_destroyDatasetMeta(t){const e=this._metasets[t];e&&e.controller&&e.controller._destroy(),delete this._metasets[t]}_stop(){let t,e;for(this.stop(),xt.remove(this),t=0,e=this.data.datasets.length;t<e;++t)this._destroyDatasetMeta(t)}destroy(){this.notifyPlugins("beforeDestroy");const{canvas:t,ctx:e}=this;this._stop(),this.config.clearCache(),t&&(this.unbindEvents(),Ae(t,e),this.platform.releaseContext(e),this.canvas=null,this.ctx=null),delete yn[this.id],this.notifyPlugins("afterDestroy")}toBase64Image(...t){return this.canvas.toDataURL(...t)}bindEvents(){this.bindUserEvents(),this.options.responsive?this.bindResponsiveEvents():this.attached=!0}bindUserEvents(){const t=this._listeners,e=this.platform,i=(i,s)=>{e.addEventListener(this,i,s),t[i]=s},s=(t,e,i)=>{t.offsetX=e,t.offsetY=i,this._eventHandler(t)};u(this.options.events,(t=>i(t,s)))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const t=this._responsiveListeners,e=this.platform,i=(i,s)=>{e.addEventListener(this,i,s),t[i]=s},s=(i,s)=>{t[i]&&(e.removeEventListener(this,i,s),delete t[i])},n=(t,e)=>{this.canvas&&this.resize(t,e)};let o;const a=()=>{s("attach",a),this.attached=!0,this.resize(),i("resize",n),i("detach",o)};o=()=>{this.attached=!1,s("resize",n),this._stop(),this._resize(0,0),i("attach",a)},e.isAttached(this.canvas)?a():o()}unbindEvents(){u(this._listeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._listeners={},u(this._responsiveListeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._responsiveListeners=void 0}updateHoverStyle(t,e,i){const s=i?"set":"remove";let n,o,a,r;for("dataset"===e&&(n=this.getDatasetMeta(t[0].datasetIndex),n.controller["_"+s+"DatasetHoverStyle"]()),a=0,r=t.length;a<r;++a){o=t[a];const e=o&&this.getDatasetMeta(o.datasetIndex).controller;e&&e[s+"HoverStyle"](o.element,o.datasetIndex,o.index)}}getActiveElements(){return this._active||[]}setActiveElements(t){const e=this._active||[],i=t.map((({datasetIndex:t,index:e})=>{const i=this.getDatasetMeta(t);if(!i)throw new Error("No dataset found at index "+t);return{datasetIndex:t,element:i.data[e],index:e}}));!f(i,e)&&(this._active=i,this._lastEvent=null,this._updateHoverStyles(i,e))}notifyPlugins(t,e,i){return this._plugins.notify(this,t,e,i)}isPluginEnabled(t){return 1===this._plugins._cache.filter((e=>e.plugin.id===t)).length}_updateHoverStyles(t,e,i){const s=this.options.hover,n=(t,e)=>t.filter((t=>!e.some((e=>t.datasetIndex===e.datasetIndex&&t.index===e.index)))),o=n(e,t),a=i?t:n(t,e);o.length&&this.updateHoverStyle(o,s.mode,!1),a.length&&s.mode&&this.updateHoverStyle(a,s.mode,!0)}_eventHandler(t,e){const i={event:t,replay:e,cancelable:!0,inChartArea:this.isPointInArea(t)},s=e=>(e.options.events||this.options.events).includes(t.native.type);if(!1===this.notifyPlugins("beforeEvent",i,s))return;const n=this._handleEvent(t,e,i.inChartArea);return i.cancelable=!1,this.notifyPlugins("afterEvent",i,s),(n||i.changed)&&this.render(),this}_handleEvent(t,e,i){const{_active:s=[],options:n}=this,o=e,a=this._getActiveElements(t,s,i,o),r=D(t),l=function(t,e,i,s){return i&&"mouseout"!==t.type?s?e:t:null}(t,this._lastEvent,i,r);i&&(this._lastEvent=null,d(n.onHover,[t,a,this],this),r&&d(n.onClick,[t,a,this],this));const h=!f(a,s);return(h||e)&&(this._active=a,this._updateHoverStyles(a,s,e)),this._lastEvent=l,h}_getActiveElements(t,e,i,s){if("mouseout"===t.type)return[];if(!i)return e;const n=this.options.hover;return this.getElementsAtEventForMode(t,n.mode,n,s)}}function kn(){return u(wn.instances,(t=>t._plugins.invalidate()))}function Sn(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}class Pn{static override(t){Object.assign(Pn.prototype,t)}constructor(t){this.options=t||{}}init(){}formats(){return Sn()}parse(){return Sn()}format(){return Sn()}add(){return Sn()}diff(){return Sn()}startOf(){return Sn()}endOf(){return Sn()}}var Dn={_date:Pn};function Cn(t){const e=t.iScale,i=function(t,e){if(!t._cache.$bar){const i=t.getMatchingVisibleMetas(e);let s=[];for(let e=0,n=i.length;e<n;e++)s=s.concat(i[e].controller.getAllParsedValues(t));t._cache.$bar=lt(s.sort(((t,e)=>t-e)))}return t._cache.$bar}(e,t.type);let s,n,o,a,r=e._length;const l=()=>{32767!==o&&-32768!==o&&(k(a)&&(r=Math.min(r,Math.abs(o-a)||r)),a=o)};for(s=0,n=i.length;s<n;++s)o=e.getPixelForValue(i[s]),l();for(a=void 0,s=0,n=e.ticks.length;s<n;++s)o=e.getPixelForTick(s),l();return r}function On(t,e,i,s){return n(t)?function(t,e,i,s){const n=i.parse(t[0],s),o=i.parse(t[1],s),a=Math.min(n,o),r=Math.max(n,o);let l=a,h=r;Math.abs(a)>Math.abs(r)&&(l=r,h=a),e[i.axis]=h,e._custom={barStart:l,barEnd:h,start:n,end:o,min:a,max:r}}(t,e,i,s):e[i.axis]=i.parse(t,s),e}function An(t,e,i,s){const n=t.iScale,o=t.vScale,a=n.getLabels(),r=n===o,l=[];let h,c,d,u;for(h=i,c=i+s;h<c;++h)u=e[h],d={},d[n.axis]=r||n.parse(a[h],h),l.push(On(u,d,o,h));return l}function Tn(t){return t&&void 0!==t.barStart&&void 0!==t.barEnd}function Ln(t,e,i,s){let n=e.borderSkipped;const o={};if(!n)return void(t.borderSkipped=o);if(!0===n)return void(t.borderSkipped={top:!0,right:!0,bottom:!0,left:!0});const{start:a,end:r,reverse:l,top:h,bottom:c}=function(t){let e,i,s,n,o;return t.horizontal?(e=t.base>t.x,i="left",s="right"):(e=t.base<t.y,i="bottom",s="top"),e?(n="end",o="start"):(n="start",o="end"),{start:i,end:s,reverse:e,top:n,bottom:o}}(t);"middle"===n&&i&&(t.enableBorderRadius=!0,(i._top||0)===s?n=h:(i._bottom||0)===s?n=c:(o[En(c,a,r,l)]=!0,n=h)),o[En(n,a,r,l)]=!0,t.borderSkipped=o}function En(t,e,i,s){var n,o,a;return s?(a=i,t=Rn(t=(n=t)===(o=e)?a:n===a?o:n,i,e)):t=Rn(t,e,i),t}function Rn(t,e,i){return"start"===t?e:"end"===t?i:t}function In(t,{inflateAmount:e},i){t.inflateAmount="auto"===e?1===i?.33:0:e}class zn extends Vs{static id="doughnut";static defaults={datasetElementType:!1,dataElementType:"arc",animation:{animateRotate:!0,animateScale:!1},animations:{numbers:{type:"number",properties:["circumference","endAngle","innerRadius","outerRadius","startAngle","x","y","offset","borderWidth","spacing"]}},cutout:"50%",rotation:0,circumference:360,radius:"100%",spacing:0,indexAxis:"r"};static descriptors={_scriptable:t=>"spacing"!==t,_indexable:t=>"spacing"!==t};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const e=t.data;if(e.labels.length&&e.datasets.length){const{labels:{pointStyle:i,color:s}}=t.legend.options;return e.labels.map(((e,n)=>{const o=t.getDatasetMeta(0).controller.getStyle(n);return{text:e,fillStyle:o.backgroundColor,strokeStyle:o.borderColor,fontColor:s,lineWidth:o.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(n),index:n}}))}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}}}};constructor(t,e){super(t,e),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(t,e){const i=this.getDataset().data,s=this._cachedMeta;if(!1===this._parsing)s._parsed=i;else{let n,a,r=t=>+i[t];if(o(i[t])){const{key:t="value"}=this._parsing;r=e=>+M(i[e],t)}for(n=t,a=t+e;n<a;++n)s._parsed[n]=r(n)}}_getRotation(){return $(this.options.rotation-90)}_getCircumference(){return $(this.options.circumference)}_getRotationExtents(){let t=O,e=-O;for(let i=0;i<this.chart.data.datasets.length;++i)if(this.chart.isDatasetVisible(i)&&this.chart.getDatasetMeta(i).type===this._type){const s=this.chart.getDatasetMeta(i).controller,n=s._getRotation(),o=s._getCircumference();t=Math.min(t,n),e=Math.max(e,n+o)}return{rotation:t,circumference:e-t}}update(t){const e=this.chart,{chartArea:i}=e,s=this._cachedMeta,n=s.data,o=this.getMaxBorderWidth()+this.getMaxOffset(n)+this.options.spacing,a=Math.max((Math.min(i.width,i.height)-o)/2,0),r=Math.min(h(this.options.cutout,a),1),l=this._getRingWeight(this.index),{circumference:d,rotation:u}=this._getRotationExtents(),{ratioX:f,ratioY:g,offsetX:p,offsetY:m}=function(t,e,i){let s=1,n=1,o=0,a=0;if(e<O){const r=t,l=r+e,h=Math.cos(r),c=Math.sin(r),d=Math.cos(l),u=Math.sin(l),f=(t,e,s)=>Z(t,r,l,!0)?1:Math.max(e,e*i,s,s*i),g=(t,e,s)=>Z(t,r,l,!0)?-1:Math.min(e,e*i,s,s*i),p=f(0,h,d),m=f(E,c,u),b=g(C,h,d),x=g(C+E,c,u);s=(p-b)/2,n=(m-x)/2,o=-(p+b)/2,a=-(m+x)/2}return{ratioX:s,ratioY:n,offsetX:o,offsetY:a}}(u,d,r),b=(i.width-o)/f,x=(i.height-o)/g,_=Math.max(Math.min(b,x)/2,0),y=c(this.options.radius,_),v=(y-Math.max(y*r,0))/this._getVisibleDatasetWeightTotal();this.offsetX=p*y,this.offsetY=m*y,s.total=this.calculateTotal(),this.outerRadius=y-v*this._getRingWeightOffset(this.index),this.innerRadius=Math.max(this.outerRadius-v*l,0),this.updateElements(n,0,n.length,t)}_circumference(t,e){const i=this.options,s=this._cachedMeta,n=this._getCircumference();return e&&i.animation.animateRotate||!this.chart.getDataVisibility(t)||null===s._parsed[t]||s.data[t].hidden?0:this.calculateCircumference(s._parsed[t]*n/O)}updateElements(t,e,i,s){const n="reset"===s,o=this.chart,a=o.chartArea,r=o.options.animation,l=(a.left+a.right)/2,h=(a.top+a.bottom)/2,c=n&&r.animateScale,d=c?0:this.innerRadius,u=c?0:this.outerRadius,{sharedOptions:f,includeOptions:g}=this._getSharedOptions(e,s);let p,m=this._getRotation();for(p=0;p<e;++p)m+=this._circumference(p,n);for(p=e;p<e+i;++p){const e=this._circumference(p,n),i=t[p],o={x:l+this.offsetX,y:h+this.offsetY,startAngle:m,endAngle:m+e,circumference:e,outerRadius:u,innerRadius:d};g&&(o.options=f||this.resolveDataElementOptions(p,i.active?"active":s)),m+=e,this.updateElement(i,p,o,s)}}calculateTotal(){const t=this._cachedMeta,e=t.data;let i,s=0;for(i=0;i<e.length;i++){const n=t._parsed[i];null===n||isNaN(n)||!this.chart.getDataVisibility(i)||e[i].hidden||(s+=Math.abs(n))}return s}calculateCircumference(t){const e=this._cachedMeta.total;return e>0&&!isNaN(t)?O*(Math.abs(t)/e):0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,s=i.data.labels||[],n=ne(e._parsed[t],i.options.locale);return{label:s[t]||"",value:n}}getMaxBorderWidth(t){let e=0;const i=this.chart;let s,n,o,a,r;if(!t)for(s=0,n=i.data.datasets.length;s<n;++s)if(i.isDatasetVisible(s)){o=i.getDatasetMeta(s),t=o.data,a=o.controller;break}if(!t)return 0;for(s=0,n=t.length;s<n;++s)r=a.resolveDataElementOptions(s),"inner"!==r.borderAlign&&(e=Math.max(e,r.borderWidth||0,r.hoverBorderWidth||0));return e}getMaxOffset(t){let e=0;for(let i=0,s=t.length;i<s;++i){const t=this.resolveDataElementOptions(i);e=Math.max(e,t.offset||0,t.hoverOffset||0)}return e}_getRingWeightOffset(t){let e=0;for(let i=0;i<t;++i)this.chart.isDatasetVisible(i)&&(e+=this._getRingWeight(i));return e}_getRingWeight(t){return Math.max(l(this.chart.data.datasets[t].weight,1),0)}_getVisibleDatasetWeightTotal(){return this._getRingWeightOffset(this.chart.data.datasets.length)||1}}class Fn extends Vs{static id="polarArea";static defaults={dataElementType:"arc",animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:"number",properties:["x","y","startAngle","endAngle","innerRadius","outerRadius"]}},indexAxis:"r",startAngle:0};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const e=t.data;if(e.labels.length&&e.datasets.length){const{labels:{pointStyle:i,color:s}}=t.legend.options;return e.labels.map(((e,n)=>{const o=t.getDatasetMeta(0).controller.getStyle(n);return{text:e,fillStyle:o.backgroundColor,strokeStyle:o.borderColor,fontColor:s,lineWidth:o.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(n),index:n}}))}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}}},scales:{r:{type:"radialLinear",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};constructor(t,e){super(t,e),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,s=i.data.labels||[],n=ne(e._parsed[t].r,i.options.locale);return{label:s[t]||"",value:n}}parseObjectData(t,e,i,s){return ei.bind(this)(t,e,i,s)}update(t){const e=this._cachedMeta.data;this._updateRadius(),this.updateElements(e,0,e.length,t)}getMinMax(){const t=this._cachedMeta,e={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY};return t.data.forEach(((t,i)=>{const s=this.getParsed(i).r;!isNaN(s)&&this.chart.getDataVisibility(i)&&(s<e.min&&(e.min=s),s>e.max&&(e.max=s))})),e}_updateRadius(){const t=this.chart,e=t.chartArea,i=t.options,s=Math.min(e.right-e.left,e.bottom-e.top),n=Math.max(s/2,0),o=(n-Math.max(i.cutoutPercentage?n/100*i.cutoutPercentage:1,0))/t.getVisibleDatasetCount();this.outerRadius=n-o*this.index,this.innerRadius=this.outerRadius-o}updateElements(t,e,i,s){const n="reset"===s,o=this.chart,a=o.options.animation,r=this._cachedMeta.rScale,l=r.xCenter,h=r.yCenter,c=r.getIndexAngle(0)-.5*C;let d,u=c;const f=360/this.countVisibleElements();for(d=0;d<e;++d)u+=this._computeAngle(d,s,f);for(d=e;d<e+i;d++){const e=t[d];let i=u,g=u+this._computeAngle(d,s,f),p=o.getDataVisibility(d)?r.getDistanceFromCenterForValue(this.getParsed(d).r):0;u=g,n&&(a.animateScale&&(p=0),a.animateRotate&&(i=g=c));const m={x:l,y:h,innerRadius:0,outerRadius:p,startAngle:i,endAngle:g,options:this.resolveDataElementOptions(d,e.active?"active":s)};this.updateElement(e,d,m,s)}}countVisibleElements(){const t=this._cachedMeta;let e=0;return t.data.forEach(((t,i)=>{!isNaN(this.getParsed(i).r)&&this.chart.getDataVisibility(i)&&e++})),e}_computeAngle(t,e,i){return this.chart.getDataVisibility(t)?$(this.resolveDataElementOptions(t,e).angle||i):0}}var Vn=Object.freeze({__proto__:null,BarController:class extends Vs{static id="bar";static defaults={datasetElementType:!1,dataElementType:"bar",categoryPercentage:.8,barPercentage:.9,grouped:!0,animations:{numbers:{type:"number",properties:["x","y","base","width","height"]}}};static overrides={scales:{_index_:{type:"category",offset:!0,grid:{offset:!0}},_value_:{type:"linear",beginAtZero:!0}}};parsePrimitiveData(t,e,i,s){return An(t,e,i,s)}parseArrayData(t,e,i,s){return An(t,e,i,s)}parseObjectData(t,e,i,s){const{iScale:n,vScale:o}=t,{xAxisKey:a="x",yAxisKey:r="y"}=this._parsing,l="x"===n.axis?a:r,h="x"===o.axis?a:r,c=[];let d,u,f,g;for(d=i,u=i+s;d<u;++d)g=e[d],f={},f[n.axis]=n.parse(M(g,l),d),c.push(On(M(g,h),f,o,d));return c}updateRangeFromParsed(t,e,i,s){super.updateRangeFromParsed(t,e,i,s);const n=i._custom;n&&e===this._cachedMeta.vScale&&(t.min=Math.min(t.min,n.min),t.max=Math.max(t.max,n.max))}getMaxOverflow(){return 0}getLabelAndValue(t){const e=this._cachedMeta,{iScale:i,vScale:s}=e,n=this.getParsed(t),o=n._custom,a=Tn(o)?"["+o.start+", "+o.end+"]":""+s.getLabelForValue(n[s.axis]);return{label:""+i.getLabelForValue(n[i.axis]),value:a}}initialize(){this.enableOptionSharing=!0,super.initialize();this._cachedMeta.stack=this.getDataset().stack}update(t){const e=this._cachedMeta;this.updateElements(e.data,0,e.data.length,t)}updateElements(t,e,i,n){const o="reset"===n,{index:a,_cachedMeta:{vScale:r}}=this,l=r.getBasePixel(),h=r.isHorizontal(),c=this._getRuler(),{sharedOptions:d,includeOptions:u}=this._getSharedOptions(e,n);for(let f=e;f<e+i;f++){const e=this.getParsed(f),i=o||s(e[r.axis])?{base:l,head:l}:this._calculateBarValuePixels(f),g=this._calculateBarIndexPixels(f,c),p=(e._stacks||{})[r.axis],m={horizontal:h,base:i.base,enableBorderRadius:!p||Tn(e._custom)||a===p._top||a===p._bottom,x:h?i.head:g.center,y:h?g.center:i.head,height:h?g.size:Math.abs(i.size),width:h?Math.abs(i.size):g.size};u&&(m.options=d||this.resolveDataElementOptions(f,t[f].active?"active":n));const b=m.options||t[f].options;Ln(m,b,p,a),In(m,b,c.ratio),this.updateElement(t[f],f,m,n)}}_getStacks(t,e){const{iScale:i}=this._cachedMeta,n=i.getMatchingVisibleMetas(this._type).filter((t=>t.controller.options.grouped)),o=i.options.stacked,a=[],r=t=>{const i=t.controller.getParsed(e),n=i&&i[t.vScale.axis];if(s(n)||isNaN(n))return!0};for(const i of n)if((void 0===e||!r(i))&&((!1===o||-1===a.indexOf(i.stack)||void 0===o&&void 0===i.stack)&&a.push(i.stack),i.index===t))break;return a.length||a.push(void 0),a}_getStackCount(t){return this._getStacks(void 0,t).length}_getStackIndex(t,e,i){const s=this._getStacks(t,i),n=void 0!==e?s.indexOf(e):-1;return-1===n?s.length-1:n}_getRuler(){const t=this.options,e=this._cachedMeta,i=e.iScale,s=[];let n,o;for(n=0,o=e.data.length;n<o;++n)s.push(i.getPixelForValue(this.getParsed(n)[i.axis],n));const a=t.barThickness;return{min:a||Cn(e),pixels:s,start:i._startPixel,end:i._endPixel,stackCount:this._getStackCount(),scale:i,grouped:t.grouped,ratio:a?1:t.categoryPercentage*t.barPercentage}}_calculateBarValuePixels(t){const{_cachedMeta:{vScale:e,_stacked:i,index:n},options:{base:o,minBarLength:a}}=this,r=o||0,l=this.getParsed(t),h=l._custom,c=Tn(h);let d,u,f=l[e.axis],g=0,p=i?this.applyStack(e,l,i):f;p!==f&&(g=p-f,p=f),c&&(f=h.barStart,p=h.barEnd-h.barStart,0!==f&&F(f)!==F(h.barEnd)&&(g=0),g+=f);const m=s(o)||c?g:o;let b=e.getPixelForValue(m);if(d=this.chart.getDataVisibility(t)?e.getPixelForValue(g+p):b,u=d-b,Math.abs(u)<a){u=function(t,e,i){return 0!==t?F(t):(e.isHorizontal()?1:-1)*(e.min>=i?1:-1)}(u,e,r)*a,f===r&&(b-=u/2);const t=e.getPixelForDecimal(0),s=e.getPixelForDecimal(1),o=Math.min(t,s),h=Math.max(t,s);b=Math.max(Math.min(b,h),o),d=b+u,i&&!c&&(l._stacks[e.axis]._visualValues[n]=e.getValueForPixel(d)-e.getValueForPixel(b))}if(b===e.getPixelForValue(r)){const t=F(u)*e.getLineWidthForValue(r)/2;b+=t,u-=t}return{size:u,base:b,head:d,center:d+u/2}}_calculateBarIndexPixels(t,e){const i=e.scale,n=this.options,o=n.skipNull,a=l(n.maxBarThickness,1/0);let r,h;if(e.grouped){const i=o?this._getStackCount(t):e.stackCount,l="flex"===n.barThickness?function(t,e,i,s){const n=e.pixels,o=n[t];let a=t>0?n[t-1]:null,r=t<n.length-1?n[t+1]:null;const l=i.categoryPercentage;null===a&&(a=o-(null===r?e.end-e.start:r-o)),null===r&&(r=o+o-a);const h=o-(o-Math.min(a,r))/2*l;return{chunk:Math.abs(r-a)/2*l/s,ratio:i.barPercentage,start:h}}(t,e,n,i):function(t,e,i,n){const o=i.barThickness;let a,r;return s(o)?(a=e.min*i.categoryPercentage,r=i.barPercentage):(a=o*n,r=1),{chunk:a/n,ratio:r,start:e.pixels[t]-a/2}}(t,e,n,i),c=this._getStackIndex(this.index,this._cachedMeta.stack,o?t:void 0);r=l.start+l.chunk*c+l.chunk/2,h=Math.min(a,l.chunk*l.ratio)}else r=i.getPixelForValue(this.getParsed(t)[i.axis],t),h=Math.min(a,e.min*e.ratio);return{base:r-h/2,head:r+h/2,center:r,size:h}}draw(){const t=this._cachedMeta,e=t.vScale,i=t.data,s=i.length;let n=0;for(;n<s;++n)null!==this.getParsed(n)[e.axis]&&i[n].draw(this._ctx)}},BubbleController:class extends Vs{static id="bubble";static defaults={datasetElementType:!1,dataElementType:"point",animations:{numbers:{type:"number",properties:["x","y","borderWidth","radius"]}}};static overrides={scales:{x:{type:"linear"},y:{type:"linear"}}};initialize(){this.enableOptionSharing=!0,super.initialize()}parsePrimitiveData(t,e,i,s){const n=super.parsePrimitiveData(t,e,i,s);for(let t=0;t<n.length;t++)n[t]._custom=this.resolveDataElementOptions(t+i).radius;return n}parseArrayData(t,e,i,s){const n=super.parseArrayData(t,e,i,s);for(let t=0;t<n.length;t++){const s=e[i+t];n[t]._custom=l(s[2],this.resolveDataElementOptions(t+i).radius)}return n}parseObjectData(t,e,i,s){const n=super.parseObjectData(t,e,i,s);for(let t=0;t<n.length;t++){const s=e[i+t];n[t]._custom=l(s&&s.r&&+s.r,this.resolveDataElementOptions(t+i).radius)}return n}getMaxOverflow(){const t=this._cachedMeta.data;let e=0;for(let i=t.length-1;i>=0;--i)e=Math.max(e,t[i].size(this.resolveDataElementOptions(i))/2);return e>0&&e}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart.data.labels||[],{xScale:s,yScale:n}=e,o=this.getParsed(t),a=s.getLabelForValue(o.x),r=n.getLabelForValue(o.y),l=o._custom;return{label:i[t]||"",value:"("+a+", "+r+(l?", "+l:"")+")"}}update(t){const e=this._cachedMeta.data;this.updateElements(e,0,e.length,t)}updateElements(t,e,i,s){const n="reset"===s,{iScale:o,vScale:a}=this._cachedMeta,{sharedOptions:r,includeOptions:l}=this._getSharedOptions(e,s),h=o.axis,c=a.axis;for(let d=e;d<e+i;d++){const e=t[d],i=!n&&this.getParsed(d),u={},f=u[h]=n?o.getPixelForDecimal(.5):o.getPixelForValue(i[h]),g=u[c]=n?a.getBasePixel():a.getPixelForValue(i[c]);u.skip=isNaN(f)||isNaN(g),l&&(u.options=r||this.resolveDataElementOptions(d,e.active?"active":s),n&&(u.options.radius=0)),this.updateElement(e,d,u,s)}}resolveDataElementOptions(t,e){const i=this.getParsed(t);let s=super.resolveDataElementOptions(t,e);s.$shared&&(s=Object.assign({},s,{$shared:!1}));const n=s.radius;return"active"!==e&&(s.radius=0),s.radius+=l(i&&i._custom,n),s}},DoughnutController:zn,LineController:class extends Vs{static id="line";static defaults={datasetElementType:"line",dataElementType:"point",showLine:!0,spanGaps:!1};static overrides={scales:{_index_:{type:"category"},_value_:{type:"linear"}}};initialize(){this.enableOptionSharing=!0,this.supportsDecimation=!0,super.initialize()}update(t){const e=this._cachedMeta,{dataset:i,data:s=[],_dataset:n}=e,o=this.chart._animationsDisabled;let{start:a,count:r}=pt(e,s,o);this._drawStart=a,this._drawCount=r,mt(e)&&(a=0,r=s.length),i._chart=this.chart,i._datasetIndex=this.index,i._decimated=!!n._decimated,i.points=s;const l=this.resolveDatasetElementOptions(t);this.options.showLine||(l.borderWidth=0),l.segment=this.options.segment,this.updateElement(i,void 0,{animated:!o,options:l},t),this.updateElements(s,a,r,t)}updateElements(t,e,i,n){const o="reset"===n,{iScale:a,vScale:r,_stacked:l,_dataset:h}=this._cachedMeta,{sharedOptions:c,includeOptions:d}=this._getSharedOptions(e,n),u=a.axis,f=r.axis,{spanGaps:g,segment:p}=this.options,m=W(g)?g:Number.POSITIVE_INFINITY,b=this.chart._animationsDisabled||o||"none"===n,x=e+i,_=t.length;let y=e>0&&this.getParsed(e-1);for(let i=0;i<_;++i){const g=t[i],_=b?g:{};if(i<e||i>=x){_.skip=!0;continue}const v=this.getParsed(i),M=s(v[f]),w=_[u]=a.getPixelForValue(v[u],i),k=_[f]=o||M?r.getBasePixel():r.getPixelForValue(l?this.applyStack(r,v,l):v[f],i);_.skip=isNaN(w)||isNaN(k)||M,_.stop=i>0&&Math.abs(v[u]-y[u])>m,p&&(_.parsed=v,_.raw=h.data[i]),d&&(_.options=c||this.resolveDataElementOptions(i,g.active?"active":n)),b||this.updateElement(g,i,_,n),y=v}}getMaxOverflow(){const t=this._cachedMeta,e=t.dataset,i=e.options&&e.options.borderWidth||0,s=t.data||[];if(!s.length)return i;const n=s[0].size(this.resolveDataElementOptions(0)),o=s[s.length-1].size(this.resolveDataElementOptions(s.length-1));return Math.max(i,n,o)/2}draw(){const t=this._cachedMeta;t.dataset.updateControlPoints(this.chart.chartArea,t.iScale.axis),super.draw()}},PolarAreaController:Fn,PieController:class extends zn{static id="pie";static defaults={cutout:0,rotation:0,circumference:360,radius:"100%"}},RadarController:class extends Vs{static id="radar";static defaults={datasetElementType:"line",dataElementType:"point",indexAxis:"r",showLine:!0,elements:{line:{fill:"start"}}};static overrides={aspectRatio:1,scales:{r:{type:"radialLinear"}}};getLabelAndValue(t){const e=this._cachedMeta.vScale,i=this.getParsed(t);return{label:e.getLabels()[t],value:""+e.getLabelForValue(i[e.axis])}}parseObjectData(t,e,i,s){return ei.bind(this)(t,e,i,s)}update(t){const e=this._cachedMeta,i=e.dataset,s=e.data||[],n=e.iScale.getLabels();if(i.points=s,"resize"!==t){const e=this.resolveDatasetElementOptions(t);this.options.showLine||(e.borderWidth=0);const o={_loop:!0,_fullLoop:n.length===s.length,options:e};this.updateElement(i,void 0,o,t)}this.updateElements(s,0,s.length,t)}updateElements(t,e,i,s){const n=this._cachedMeta.rScale,o="reset"===s;for(let a=e;a<e+i;a++){const e=t[a],i=this.resolveDataElementOptions(a,e.active?"active":s),r=n.getPointPositionForValue(a,this.getParsed(a).r),l=o?n.xCenter:r.x,h=o?n.yCenter:r.y,c={x:l,y:h,angle:r.angle,skip:isNaN(l)||isNaN(h),options:i};this.updateElement(e,a,c,s)}}},ScatterController:class extends Vs{static id="scatter";static defaults={datasetElementType:!1,dataElementType:"point",showLine:!1,fill:!1};static overrides={interaction:{mode:"point"},scales:{x:{type:"linear"},y:{type:"linear"}}};getLabelAndValue(t){const e=this._cachedMeta,i=this.chart.data.labels||[],{xScale:s,yScale:n}=e,o=this.getParsed(t),a=s.getLabelForValue(o.x),r=n.getLabelForValue(o.y);return{label:i[t]||"",value:"("+a+", "+r+")"}}update(t){const e=this._cachedMeta,{data:i=[]}=e,s=this.chart._animationsDisabled;let{start:n,count:o}=pt(e,i,s);if(this._drawStart=n,this._drawCount=o,mt(e)&&(n=0,o=i.length),this.options.showLine){const{dataset:n,_dataset:o}=e;n._chart=this.chart,n._datasetIndex=this.index,n._decimated=!!o._decimated,n.points=i;const a=this.resolveDatasetElementOptions(t);a.segment=this.options.segment,this.updateElement(n,void 0,{animated:!s,options:a},t)}this.updateElements(i,n,o,t)}addElements(){const{showLine:t}=this.options;!this.datasetElementType&&t&&(this.datasetElementType=this.chart.registry.getElement("line")),super.addElements()}updateElements(t,e,i,n){const o="reset"===n,{iScale:a,vScale:r,_stacked:l,_dataset:h}=this._cachedMeta,c=this.resolveDataElementOptions(e,n),d=this.getSharedOptions(c),u=this.includeOptions(n,d),f=a.axis,g=r.axis,{spanGaps:p,segment:m}=this.options,b=W(p)?p:Number.POSITIVE_INFINITY,x=this.chart._animationsDisabled||o||"none"===n;let _=e>0&&this.getParsed(e-1);for(let c=e;c<e+i;++c){const e=t[c],i=this.getParsed(c),p=x?e:{},y=s(i[g]),v=p[f]=a.getPixelForValue(i[f],c),M=p[g]=o||y?r.getBasePixel():r.getPixelForValue(l?this.applyStack(r,i,l):i[g],c);p.skip=isNaN(v)||isNaN(M)||y,p.stop=c>0&&Math.abs(i[f]-_[f])>b,m&&(p.parsed=i,p.raw=h.data[c]),u&&(p.options=d||this.resolveDataElementOptions(c,e.active?"active":n)),x||this.updateElement(e,c,p,n),_=i}this.updateSharedOptions(d,n,c)}getMaxOverflow(){const t=this._cachedMeta,e=t.data||[];if(!this.options.showLine){let t=0;for(let i=e.length-1;i>=0;--i)t=Math.max(t,e[i].size(this.resolveDataElementOptions(i))/2);return t>0&&t}const i=t.dataset,s=i.options&&i.options.borderWidth||0;if(!e.length)return s;const n=e[0].size(this.resolveDataElementOptions(0)),o=e[e.length-1].size(this.resolveDataElementOptions(e.length-1));return Math.max(s,n,o)/2}}});function Bn(t,e,i,s){const n=_i(t.options.borderRadius,["outerStart","outerEnd","innerStart","innerEnd"]);const o=(i-e)/2,a=Math.min(o,s*e/2),r=t=>{const e=(i-Math.min(o,t))*s/2;return J(t,0,Math.min(o,e))};return{outerStart:r(n.outerStart),outerEnd:r(n.outerEnd),innerStart:J(n.innerStart,0,a),innerEnd:J(n.innerEnd,0,a)}}function Nn(t,e,i,s){return{x:i+t*Math.cos(e),y:s+t*Math.sin(e)}}function Wn(t,e,i,s,n,o){const{x:a,y:r,startAngle:l,pixelMargin:h,innerRadius:c}=e,d=Math.max(e.outerRadius+s+i-h,0),u=c>0?c+s+i+h:0;let f=0;const g=n-l;if(s){const t=((c>0?c-s:0)+(d>0?d-s:0))/2;f=(g-(0!==t?g*t/(t+s):g))/2}const p=(g-Math.max(.001,g*d-i/C)/d)/2,m=l+p+f,b=n-p-f,{outerStart:x,outerEnd:_,innerStart:y,innerEnd:v}=Bn(e,u,d,b-m),M=d-x,w=d-_,k=m+x/M,S=b-_/w,P=u+y,D=u+v,O=m+y/P,A=b-v/D;if(t.beginPath(),o){const e=(k+S)/2;if(t.arc(a,r,d,k,e),t.arc(a,r,d,e,S),_>0){const e=Nn(w,S,a,r);t.arc(e.x,e.y,_,S,b+E)}const i=Nn(D,b,a,r);if(t.lineTo(i.x,i.y),v>0){const e=Nn(D,A,a,r);t.arc(e.x,e.y,v,b+E,A+Math.PI)}const s=(b-v/u+(m+y/u))/2;if(t.arc(a,r,u,b-v/u,s,!0),t.arc(a,r,u,s,m+y/u,!0),y>0){const e=Nn(P,O,a,r);t.arc(e.x,e.y,y,O+Math.PI,m-E)}const n=Nn(M,m,a,r);if(t.lineTo(n.x,n.y),x>0){const e=Nn(M,k,a,r);t.arc(e.x,e.y,x,m-E,k)}}else{t.moveTo(a,r);const e=Math.cos(k)*d+a,i=Math.sin(k)*d+r;t.lineTo(e,i);const s=Math.cos(S)*d+a,n=Math.sin(S)*d+r;t.lineTo(s,n)}t.closePath()}function Hn(t,e,i,s,n){const{fullCircles:o,startAngle:a,circumference:r,options:l}=e,{borderWidth:h,borderJoinStyle:c}=l,d="inner"===l.borderAlign;if(!h)return;d?(t.lineWidth=2*h,t.lineJoin=c||"round"):(t.lineWidth=h,t.lineJoin=c||"bevel");let u=e.endAngle;if(o){Wn(t,e,i,s,u,n);for(let e=0;e<o;++e)t.stroke();isNaN(r)||(u=a+(r%O||O))}d&&function(t,e,i){const{startAngle:s,pixelMargin:n,x:o,y:a,outerRadius:r,innerRadius:l}=e;let h=n/r;t.beginPath(),t.arc(o,a,r,s-h,i+h),l>n?(h=n/l,t.arc(o,a,l,i+h,s-h,!0)):t.arc(o,a,n,i+E,s-E),t.closePath(),t.clip()}(t,e,u),o||(Wn(t,e,i,s,u,n),t.stroke())}function jn(t,e,i=e){t.lineCap=l(i.borderCapStyle,e.borderCapStyle),t.setLineDash(l(i.borderDash,e.borderDash)),t.lineDashOffset=l(i.borderDashOffset,e.borderDashOffset),t.lineJoin=l(i.borderJoinStyle,e.borderJoinStyle),t.lineWidth=l(i.borderWidth,e.borderWidth),t.strokeStyle=l(i.borderColor,e.borderColor)}function $n(t,e,i){t.lineTo(i.x,i.y)}function Yn(t,e,i={}){const s=t.length,{start:n=0,end:o=s-1}=i,{start:a,end:r}=e,l=Math.max(n,a),h=Math.min(o,r),c=n<a&&o<a||n>r&&o>r;return{count:s,start:l,loop:e.loop,ilen:h<l&&!c?s+h-l:h-l}}function Un(t,e,i,s){const{points:n,options:o}=e,{count:a,start:r,loop:l,ilen:h}=Yn(n,i,s),c=function(t){return t.stepped?ze:t.tension||"monotone"===t.cubicInterpolationMode?Fe:$n}(o);let d,u,f,{move:g=!0,reverse:p}=s||{};for(d=0;d<=h;++d)u=n[(r+(p?h-d:d))%a],u.skip||(g?(t.moveTo(u.x,u.y),g=!1):c(t,f,u,p,o.stepped),f=u);return l&&(u=n[(r+(p?h:0))%a],c(t,f,u,p,o.stepped)),!!l}function Xn(t,e,i,s){const n=e.points,{count:o,start:a,ilen:r}=Yn(n,i,s),{move:l=!0,reverse:h}=s||{};let c,d,u,f,g,p,m=0,b=0;const x=t=>(a+(h?r-t:t))%o,_=()=>{f!==g&&(t.lineTo(m,g),t.lineTo(m,f),t.lineTo(m,p))};for(l&&(d=n[x(0)],t.moveTo(d.x,d.y)),c=0;c<=r;++c){if(d=n[x(c)],d.skip)continue;const e=d.x,i=d.y,s=0|e;s===u?(i<f?f=i:i>g&&(g=i),m=(b*m+e)/++b):(_(),t.lineTo(e,i),u=s,b=0,f=g=i),p=i}_()}function qn(t){const e=t.options,i=e.borderDash&&e.borderDash.length;return!(t._decimated||t._loop||e.tension||"monotone"===e.cubicInterpolationMode||e.stepped||i)?Xn:Un}const Kn="function"==typeof Path2D;function Gn(t,e,i,s){Kn&&!e.options.segment?function(t,e,i,s){let n=e._path;n||(n=e._path=new Path2D,e.path(n,i,s)&&n.closePath()),jn(t,e.options),t.stroke(n)}(t,e,i,s):function(t,e,i,s){const{segments:n,options:o}=e,a=qn(e);for(const r of n)jn(t,o,r.style),t.beginPath(),a(t,e,r,{start:i,end:i+s-1})&&t.closePath(),t.stroke()}(t,e,i,s)}class Zn extends Bs{static id="line";static defaults={borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:"default",fill:!1,spanGaps:!1,stepped:!1,tension:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};static descriptors={_scriptable:!0,_indexable:t=>"borderDash"!==t&&"fill"!==t};constructor(t){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,t&&Object.assign(this,t)}updateControlPoints(t,e){const i=this.options;if((i.tension||"monotone"===i.cubicInterpolationMode)&&!i.stepped&&!this._pointsUpdated){const s=i.spanGaps?this._loop:this._fullLoop;li(this._points,i,t,s,e),this._pointsUpdated=!0}}set points(t){this._points=t,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=Ri(this,this.options.segment))}first(){const t=this.segments,e=this.points;return t.length&&e[t[0].start]}last(){const t=this.segments,e=this.points,i=t.length;return i&&e[t[i-1].end]}interpolate(t,e){const i=this.options,s=t[e],n=this.points,o=Ei(this,{property:e,start:s,end:s});if(!o.length)return;const a=[],r=function(t){return t.stepped?gi:t.tension||"monotone"===t.cubicInterpolationMode?pi:fi}(i);let l,h;for(l=0,h=o.length;l<h;++l){const{start:h,end:c}=o[l],d=n[h],u=n[c];if(d===u){a.push(d);continue}const f=r(d,u,Math.abs((s-d[e])/(u[e]-d[e])),i.stepped);f[e]=t[e],a.push(f)}return 1===a.length?a[0]:a}pathSegment(t,e,i){return qn(this)(t,this,e,i)}path(t,e,i){const s=this.segments,n=qn(this);let o=this._loop;e=e||0,i=i||this.points.length-e;for(const a of s)o&=n(t,this,a,{start:e,end:e+i-1});return!!o}draw(t,e,i,s){const n=this.options||{};(this.points||[]).length&&n.borderWidth&&(t.save(),Gn(t,this,i,s),t.restore()),this.animated&&(this._pointsUpdated=!1,this._path=void 0)}}function Jn(t,e,i,s){const n=t.options,{[i]:o}=t.getProps([i],s);return Math.abs(e-o)<n.radius+n.hitRadius}function Qn(t,e){const{x:i,y:s,base:n,width:o,height:a}=t.getProps(["x","y","base","width","height"],e);let r,l,h,c,d;return t.horizontal?(d=a/2,r=Math.min(i,n),l=Math.max(i,n),h=s-d,c=s+d):(d=o/2,r=i-d,l=i+d,h=Math.min(s,n),c=Math.max(s,n)),{left:r,top:h,right:l,bottom:c}}function to(t,e,i,s){return t?0:J(e,i,s)}function eo(t){const e=Qn(t),i=e.right-e.left,s=e.bottom-e.top,n=function(t,e,i){const s=t.options.borderWidth,n=t.borderSkipped,o=yi(s);return{t:to(n.top,o.top,0,i),r:to(n.right,o.right,0,e),b:to(n.bottom,o.bottom,0,i),l:to(n.left,o.left,0,e)}}(t,i/2,s/2),a=function(t,e,i){const{enableBorderRadius:s}=t.getProps(["enableBorderRadius"]),n=t.options.borderRadius,a=vi(n),r=Math.min(e,i),l=t.borderSkipped,h=s||o(n);return{topLeft:to(!h||l.top||l.left,a.topLeft,0,r),topRight:to(!h||l.top||l.right,a.topRight,0,r),bottomLeft:to(!h||l.bottom||l.left,a.bottomLeft,0,r),bottomRight:to(!h||l.bottom||l.right,a.bottomRight,0,r)}}(t,i/2,s/2);return{outer:{x:e.left,y:e.top,w:i,h:s,radius:a},inner:{x:e.left+n.l,y:e.top+n.t,w:i-n.l-n.r,h:s-n.t-n.b,radius:{topLeft:Math.max(0,a.topLeft-Math.max(n.t,n.l)),topRight:Math.max(0,a.topRight-Math.max(n.t,n.r)),bottomLeft:Math.max(0,a.bottomLeft-Math.max(n.b,n.l)),bottomRight:Math.max(0,a.bottomRight-Math.max(n.b,n.r))}}}}function io(t,e,i,s){const n=null===e,o=null===i,a=t&&!(n&&o)&&Qn(t,s);return a&&(n||tt(e,a.left,a.right))&&(o||tt(i,a.top,a.bottom))}function so(t,e){t.rect(e.x,e.y,e.w,e.h)}function no(t,e,i={}){const s=t.x!==i.x?-e:0,n=t.y!==i.y?-e:0,o=(t.x+t.w!==i.x+i.w?e:0)-s,a=(t.y+t.h!==i.y+i.h?e:0)-n;return{x:t.x+s,y:t.y+n,w:t.w+o,h:t.h+a,radius:t.radius}}var oo=Object.freeze({__proto__:null,ArcElement:class extends Bs{static id="arc";static defaults={borderAlign:"center",borderColor:"#fff",borderJoinStyle:void 0,borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0,circular:!0};static defaultRoutes={backgroundColor:"backgroundColor"};constructor(t){super(),this.options=void 0,this.circumference=void 0,this.startAngle=void 0,this.endAngle=void 0,this.innerRadius=void 0,this.outerRadius=void 0,this.pixelMargin=0,this.fullCircles=0,t&&Object.assign(this,t)}inRange(t,e,i){const s=this.getProps(["x","y"],i),{angle:n,distance:o}=X(s,{x:t,y:e}),{startAngle:a,endAngle:r,innerRadius:h,outerRadius:c,circumference:d}=this.getProps(["startAngle","endAngle","innerRadius","outerRadius","circumference"],i),u=this.options.spacing/2,f=l(d,r-a)>=O||Z(n,a,r),g=tt(o,h+u,c+u);return f&&g}getCenterPoint(t){const{x:e,y:i,startAngle:s,endAngle:n,innerRadius:o,outerRadius:a}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius"],t),{offset:r,spacing:l}=this.options,h=(s+n)/2,c=(o+a+l+r)/2;return{x:e+Math.cos(h)*c,y:i+Math.sin(h)*c}}tooltipPosition(t){return this.getCenterPoint(t)}draw(t){const{options:e,circumference:i}=this,s=(e.offset||0)/4,n=(e.spacing||0)/2,o=e.circular;if(this.pixelMargin="inner"===e.borderAlign?.33:0,this.fullCircles=i>O?Math.floor(i/O):0,0===i||this.innerRadius<0||this.outerRadius<0)return;t.save();const a=(this.startAngle+this.endAngle)/2;t.translate(Math.cos(a)*s,Math.sin(a)*s);const r=s*(1-Math.sin(Math.min(C,i||0)));t.fillStyle=e.backgroundColor,t.strokeStyle=e.borderColor,function(t,e,i,s,n){const{fullCircles:o,startAngle:a,circumference:r}=e;let l=e.endAngle;if(o){Wn(t,e,i,s,l,n);for(let e=0;e<o;++e)t.fill();isNaN(r)||(l=a+(r%O||O))}Wn(t,e,i,s,l,n),t.fill()}(t,this,r,n,o),Hn(t,this,r,n,o),t.restore()}},LineElement:Zn,PointElement:class extends Bs{static id="point";static defaults={borderWidth:1,hitRadius:1,hoverBorderWidth:1,hoverRadius:4,pointStyle:"circle",radius:3,rotation:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};constructor(t){super(),this.options=void 0,this.parsed=void 0,this.skip=void 0,this.stop=void 0,t&&Object.assign(this,t)}inRange(t,e,i){const s=this.options,{x:n,y:o}=this.getProps(["x","y"],i);return Math.pow(t-n,2)+Math.pow(e-o,2)<Math.pow(s.hitRadius+s.radius,2)}inXRange(t,e){return Jn(this,t,"x",e)}inYRange(t,e){return Jn(this,t,"y",e)}getCenterPoint(t){const{x:e,y:i}=this.getProps(["x","y"],t);return{x:e,y:i}}size(t){let e=(t=t||this.options||{}).radius||0;e=Math.max(e,e&&t.hoverRadius||0);return 2*(e+(e&&t.borderWidth||0))}draw(t,e){const i=this.options;this.skip||i.radius<.1||!Ee(this,e,this.size(i)/2)||(t.strokeStyle=i.borderColor,t.lineWidth=i.borderWidth,t.fillStyle=i.backgroundColor,Te(t,i,this.x,this.y))}getRange(){const t=this.options||{};return t.radius+t.hitRadius}},BarElement:class extends Bs{static id="bar";static defaults={borderSkipped:"start",borderWidth:0,borderRadius:0,inflateAmount:"auto",pointStyle:void 0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};constructor(t){super(),this.options=void 0,this.horizontal=void 0,this.base=void 0,this.width=void 0,this.height=void 0,this.inflateAmount=void 0,t&&Object.assign(this,t)}draw(t){const{inflateAmount:e,options:{borderColor:i,backgroundColor:s}}=this,{inner:n,outer:o}=eo(this),a=(r=o.radius).topLeft||r.topRight||r.bottomLeft||r.bottomRight?We:so;var r;t.save(),o.w===n.w&&o.h===n.h||(t.beginPath(),a(t,no(o,e,n)),t.clip(),a(t,no(n,-e,o)),t.fillStyle=i,t.fill("evenodd")),t.beginPath(),a(t,no(n,e)),t.fillStyle=s,t.fill(),t.restore()}inRange(t,e,i){return io(this,t,e,i)}inXRange(t,e){return io(this,t,null,e)}inYRange(t,e){return io(this,null,t,e)}getCenterPoint(t){const{x:e,y:i,base:s,horizontal:n}=this.getProps(["x","y","base","horizontal"],t);return{x:n?(e+s)/2:e,y:n?i:(i+s)/2}}getRange(t){return"x"===t?this.width/2:this.height/2}}});function ao(t,e,i,s){const n=t.indexOf(e);if(-1===n)return((t,e,i,s)=>("string"==typeof e?(i=t.push(e)-1,s.unshift({index:i,label:e})):isNaN(e)&&(i=null),i))(t,e,i,s);return n!==t.lastIndexOf(e)?i:n}function ro(t){const e=this.getLabels();return t>=0&&t<e.length?e[t]:t}function lo(t,e,{horizontal:i,minRotation:s}){const n=$(s),o=(i?Math.sin(n):Math.cos(n))||.001,a=.75*e*(""+t).length;return Math.min(e/o,a)}class ho extends Ks{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(t,e){return s(t)||("number"==typeof t||t instanceof Number)&&!isFinite(+t)?null:+t}handleTickRangeOptions(){const{beginAtZero:t}=this.options,{minDefined:e,maxDefined:i}=this.getUserBounds();let{min:s,max:n}=this;const o=t=>s=e?s:t,a=t=>n=i?n:t;if(t){const t=F(s),e=F(n);t<0&&e<0?a(0):t>0&&e>0&&o(0)}if(s===n){let e=0===n?1:Math.abs(.05*n);a(n+e),t||o(s-e)}this.min=s,this.max=n}getTickLimit(){const t=this.options.ticks;let e,{maxTicksLimit:i,stepSize:s}=t;return s?(e=Math.ceil(this.max/s)-Math.floor(this.min/s)+1,e>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${s} would result generating up to ${e} ticks. Limiting to 1000.`),e=1e3)):(e=this.computeTickLimit(),i=i||11),i&&(e=Math.min(i,e)),e}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const t=this.options,e=t.ticks;let i=this.getTickLimit();i=Math.max(2,i);const n=function(t,e){const i=[],{bounds:n,step:o,min:a,max:r,precision:l,count:h,maxTicks:c,maxDigits:d,includeBounds:u}=t,f=o||1,g=c-1,{min:p,max:m}=e,b=!s(a),x=!s(r),_=!s(h),y=(m-p)/(d+1);let v,M,w,k,S=B((m-p)/g/f)*f;if(S<1e-14&&!b&&!x)return[{value:p},{value:m}];k=Math.ceil(m/S)-Math.floor(p/S),k>g&&(S=B(k*S/g/f)*f),s(l)||(v=Math.pow(10,l),S=Math.ceil(S*v)/v),"ticks"===n?(M=Math.floor(p/S)*S,w=Math.ceil(m/S)*S):(M=p,w=m),b&&x&&o&&H((r-a)/o,S/1e3)?(k=Math.round(Math.min((r-a)/S,c)),S=(r-a)/k,M=a,w=r):_?(M=b?a:M,w=x?r:w,k=h-1,S=(w-M)/k):(k=(w-M)/S,k=V(k,Math.round(k),S/1e3)?Math.round(k):Math.ceil(k));const P=Math.max(U(S),U(M));v=Math.pow(10,s(l)?P:l),M=Math.round(M*v)/v,w=Math.round(w*v)/v;let D=0;for(b&&(u&&M!==a?(i.push({value:a}),M<a&&D++,V(Math.round((M+D*S)*v)/v,a,lo(a,y,t))&&D++):M<a&&D++);D<k;++D)i.push({value:Math.round((M+D*S)*v)/v});return x&&u&&w!==r?i.length&&V(i[i.length-1].value,r,lo(r,y,t))?i[i.length-1].value=r:i.push({value:r}):x&&w!==r||i.push({value:w}),i}({maxTicks:i,bounds:t.bounds,min:t.min,max:t.max,precision:e.precision,step:e.stepSize,count:e.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:e.minRotation||0,includeBounds:!1!==e.includeBounds},this._range||this);return"ticks"===t.bounds&&j(n,this,"value"),t.reverse?(n.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),n}configure(){const t=this.ticks;let e=this.min,i=this.max;if(super.configure(),this.options.offset&&t.length){const s=(i-e)/Math.max(t.length-1,1)/2;e-=s,i+=s}this._startValue=e,this._endValue=i,this._valueRange=i-e}getLabelForValue(t){return ne(t,this.chart.options.locale,this.options.ticks.format)}}class co extends ho{static id="linear";static defaults={ticks:{callback:ae.formatters.numeric}};determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=a(t)?t:0,this.max=a(e)?e:1,this.handleTickRangeOptions()}computeTickLimit(){const t=this.isHorizontal(),e=t?this.width:this.height,i=$(this.options.ticks.minRotation),s=(t?Math.sin(i):Math.cos(i))||.001,n=this._resolveTickFontOptions(0);return Math.ceil(e/Math.min(40,n.lineHeight/s))}getPixelForValue(t){return null===t?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getValueForPixel(t){return this._startValue+this.getDecimalForPixel(t)*this._valueRange}}const uo=t=>Math.floor(z(t)),fo=(t,e)=>Math.pow(10,uo(t)+e);function go(t){return 1===t/Math.pow(10,uo(t))}function po(t,e,i){const s=Math.pow(10,i),n=Math.floor(t/s);return Math.ceil(e/s)-n}function mo(t,{min:e,max:i}){e=r(t.min,e);const s=[],n=uo(e);let o=function(t,e){let i=uo(e-t);for(;po(t,e,i)>10;)i++;for(;po(t,e,i)<10;)i--;return Math.min(i,uo(t))}(e,i),a=o<0?Math.pow(10,Math.abs(o)):1;const l=Math.pow(10,o),h=n>o?Math.pow(10,n):0,c=Math.round((e-h)*a)/a,d=Math.floor((e-h)/l/10)*l*10;let u=Math.floor((c-d)/Math.pow(10,o)),f=r(t.min,Math.round((h+d+u*Math.pow(10,o))*a)/a);for(;f<i;)s.push({value:f,major:go(f),significand:u}),u>=10?u=u<15?15:20:u++,u>=20&&(o++,u=2,a=o>=0?1:a),f=Math.round((h+d+u*Math.pow(10,o))*a)/a;const g=r(t.max,f);return s.push({value:g,major:go(g),significand:u}),s}class bo extends Ks{static id="logarithmic";static defaults={ticks:{callback:ae.formatters.logarithmic,major:{enabled:!0}}};constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(t,e){const i=ho.prototype.parse.apply(this,[t,e]);if(0!==i)return a(i)&&i>0?i:null;this._zero=!0}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=a(t)?Math.max(0,t):null,this.max=a(e)?Math.max(0,e):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!a(this._userMin)&&(this.min=t===fo(this.min,0)?fo(this.min,-1):fo(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let i=this.min,s=this.max;const n=e=>i=t?i:e,o=t=>s=e?s:t;i===s&&(i<=0?(n(1),o(10)):(n(fo(i,-1)),o(fo(s,1)))),i<=0&&n(fo(s,-1)),s<=0&&o(fo(i,1)),this.min=i,this.max=s}buildTicks(){const t=this.options,e=mo({min:this._userMin,max:this._userMax},this);return"ticks"===t.bounds&&j(e,this,"value"),t.reverse?(e.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),e}getLabelForValue(t){return void 0===t?"0":ne(t,this.chart.options.locale,this.options.ticks.format)}configure(){const t=this.min;super.configure(),this._startValue=z(t),this._valueRange=z(this.max)-z(t)}getPixelForValue(t){return void 0!==t&&0!==t||(t=this.min),null===t||isNaN(t)?NaN:this.getPixelForDecimal(t===this.min?0:(z(t)-this._startValue)/this._valueRange)}getValueForPixel(t){const e=this.getDecimalForPixel(t);return Math.pow(10,this._startValue+e*this._valueRange)}}function xo(t){const e=t.ticks;if(e.display&&t.display){const t=Mi(e.backdropPadding);return l(e.font&&e.font.size,ue.font.size)+t.height}return 0}function _o(t,e,i,s,n){return t===s||t===n?{start:e-i/2,end:e+i/2}:t<s||t>n?{start:e-i,end:e}:{start:e,end:e+i}}function yo(t){const e={l:t.left+t._padding.left,r:t.right-t._padding.right,t:t.top+t._padding.top,b:t.bottom-t._padding.bottom},i=Object.assign({},e),s=[],o=[],a=t._pointLabels.length,r=t.options.pointLabels,l=r.centerPointLabels?C/a:0;for(let u=0;u<a;u++){const a=r.setContext(t.getPointLabelContext(u));o[u]=a.padding;const f=t.getPointPosition(u,t.drawingArea+o[u],l),g=wi(a.font),p=(h=t.ctx,c=g,d=n(d=t._pointLabels[u])?d:[d],{w:Ce(h,c.string,d),h:d.length*c.lineHeight});s[u]=p;const m=G(t.getIndexAngle(u)+l),b=Math.round(Y(m));vo(i,e,m,_o(b,f.x,p.w,0,180),_o(b,f.y,p.h,90,270))}var h,c,d;t.setCenterPoint(e.l-i.l,i.r-e.r,e.t-i.t,i.b-e.b),t._pointLabelItems=function(t,e,i){const s=[],n=t._pointLabels.length,o=t.options,a=xo(o)/2,r=t.drawingArea,l=o.pointLabels.centerPointLabels?C/n:0;for(let o=0;o<n;o++){const n=t.getPointPosition(o,r+a+i[o],l),h=Math.round(Y(G(n.angle+E))),c=e[o],d=ko(n.y,c.h,h),u=Mo(h),f=wo(n.x,c.w,u);s.push({x:n.x,y:d,textAlign:u,left:f,top:d,right:f+c.w,bottom:d+c.h})}return s}(t,s,o)}function vo(t,e,i,s,n){const o=Math.abs(Math.sin(i)),a=Math.abs(Math.cos(i));let r=0,l=0;s.start<e.l?(r=(e.l-s.start)/o,t.l=Math.min(t.l,e.l-r)):s.end>e.r&&(r=(s.end-e.r)/o,t.r=Math.max(t.r,e.r+r)),n.start<e.t?(l=(e.t-n.start)/a,t.t=Math.min(t.t,e.t-l)):n.end>e.b&&(l=(n.end-e.b)/a,t.b=Math.max(t.b,e.b+l))}function Mo(t){return 0===t||180===t?"center":t<180?"left":"right"}function wo(t,e,i){return"right"===i?t-=e:"center"===i&&(t-=e/2),t}function ko(t,e,i){return 90===i||270===i?t-=e/2:(i>270||i<90)&&(t-=e),t}function So(t,e,i,s){const{ctx:n}=t;if(i)n.arc(t.xCenter,t.yCenter,e,0,O);else{let i=t.getPointPosition(0,e);n.moveTo(i.x,i.y);for(let o=1;o<s;o++)i=t.getPointPosition(o,e),n.lineTo(i.x,i.y)}}class Po extends ho{static id="radialLinear";static defaults={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:ae.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback:t=>t,padding:5,centerPointLabels:!1}};static defaultRoutes={"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"};static descriptors={angleLines:{_fallback:"grid"}};constructor(t){super(t),this.xCenter=void 0,this.yCenter=void 0,this.drawingArea=void 0,this._pointLabels=[],this._pointLabelItems=[]}setDimensions(){const t=this._padding=Mi(xo(this.options)/2),e=this.width=this.maxWidth-t.width,i=this.height=this.maxHeight-t.height;this.xCenter=Math.floor(this.left+e/2+t.left),this.yCenter=Math.floor(this.top+i/2+t.top),this.drawingArea=Math.floor(Math.min(e,i)/2)}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!1);this.min=a(t)&&!isNaN(t)?t:0,this.max=a(e)&&!isNaN(e)?e:0,this.handleTickRangeOptions()}computeTickLimit(){return Math.ceil(this.drawingArea/xo(this.options))}generateTickLabels(t){ho.prototype.generateTickLabels.call(this,t),this._pointLabels=this.getLabels().map(((t,e)=>{const i=d(this.options.pointLabels.callback,[t,e],this);return i||0===i?i:""})).filter(((t,e)=>this.chart.getDataVisibility(e)))}fit(){const t=this.options;t.display&&t.pointLabels.display?yo(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(t,e,i,s){this.xCenter+=Math.floor((t-e)/2),this.yCenter+=Math.floor((i-s)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(t,e,i,s))}getIndexAngle(t){return G(t*(O/(this._pointLabels.length||1))+$(this.options.startAngle||0))}getDistanceFromCenterForValue(t){if(s(t))return NaN;const e=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-t)*e:(t-this.min)*e}getValueForDistanceFromCenter(t){if(s(t))return NaN;const e=t/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-e:this.min+e}getPointLabelContext(t){const e=this._pointLabels||[];if(t>=0&&t<e.length){const i=e[t];return function(t,e,i){return Pi(t,{label:i,index:e,type:"pointLabel"})}(this.getContext(),t,i)}}getPointPosition(t,e,i=0){const s=this.getIndexAngle(t)-E+i;return{x:Math.cos(s)*e+this.xCenter,y:Math.sin(s)*e+this.yCenter,angle:s}}getPointPositionForValue(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))}getBasePosition(t){return this.getPointPositionForValue(t||0,this.getBaseValue())}getPointLabelPosition(t){const{left:e,top:i,right:s,bottom:n}=this._pointLabelItems[t];return{left:e,top:i,right:s,bottom:n}}drawBackground(){const{backgroundColor:t,grid:{circular:e}}=this.options;if(t){const i=this.ctx;i.save(),i.beginPath(),So(this,this.getDistanceFromCenterForValue(this._endValue),e,this._pointLabels.length),i.closePath(),i.fillStyle=t,i.fill(),i.restore()}}drawGrid(){const t=this.ctx,e=this.options,{angleLines:i,grid:n,border:o}=e,a=this._pointLabels.length;let r,l,h;if(e.pointLabels.display&&function(t,e){const{ctx:i,options:{pointLabels:n}}=t;for(let o=e-1;o>=0;o--){const e=n.setContext(t.getPointLabelContext(o)),a=wi(e.font),{x:r,y:l,textAlign:h,left:c,top:d,right:u,bottom:f}=t._pointLabelItems[o],{backdropColor:g}=e;if(!s(g)){const t=vi(e.borderRadius),s=Mi(e.backdropPadding);i.fillStyle=g;const n=c-s.left,o=d-s.top,a=u-c+s.width,r=f-d+s.height;Object.values(t).some((t=>0!==t))?(i.beginPath(),We(i,{x:n,y:o,w:a,h:r,radius:t}),i.fill()):i.fillRect(n,o,a,r)}Ve(i,t._pointLabels[o],r,l+a.lineHeight/2,a,{color:e.color,textAlign:h,textBaseline:"middle"})}}(this,a),n.display&&this.ticks.forEach(((t,e)=>{if(0!==e){l=this.getDistanceFromCenterForValue(t.value);const i=this.getContext(e),s=n.setContext(i),r=o.setContext(i);!function(t,e,i,s,n){const o=t.ctx,a=e.circular,{color:r,lineWidth:l}=e;!a&&!s||!r||!l||i<0||(o.save(),o.strokeStyle=r,o.lineWidth=l,o.setLineDash(n.dash),o.lineDashOffset=n.dashOffset,o.beginPath(),So(t,i,a,s),o.closePath(),o.stroke(),o.restore())}(this,s,l,a,r)}})),i.display){for(t.save(),r=a-1;r>=0;r--){const s=i.setContext(this.getPointLabelContext(r)),{color:n,lineWidth:o}=s;o&&n&&(t.lineWidth=o,t.strokeStyle=n,t.setLineDash(s.borderDash),t.lineDashOffset=s.borderDashOffset,l=this.getDistanceFromCenterForValue(e.ticks.reverse?this.min:this.max),h=this.getPointPosition(r,l),t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(h.x,h.y),t.stroke())}t.restore()}}drawBorder(){}drawLabels(){const t=this.ctx,e=this.options,i=e.ticks;if(!i.display)return;const s=this.getIndexAngle(0);let n,o;t.save(),t.translate(this.xCenter,this.yCenter),t.rotate(s),t.textAlign="center",t.textBaseline="middle",this.ticks.forEach(((s,a)=>{if(0===a&&!e.reverse)return;const r=i.setContext(this.getContext(a)),l=wi(r.font);if(n=this.getDistanceFromCenterForValue(this.ticks[a].value),r.showLabelBackdrop){t.font=l.string,o=t.measureText(s.label).width,t.fillStyle=r.backdropColor;const e=Mi(r.backdropPadding);t.fillRect(-o/2-e.left,-n-l.size/2-e.top,o+e.width,l.size+e.height)}Ve(t,s.label,0,-n,l,{color:r.color})})),t.restore()}drawTitle(){}}const Do={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},Co=Object.keys(Do);function Oo(t,e){return t-e}function Ao(t,e){if(s(e))return null;const i=t._adapter,{parser:n,round:o,isoWeekday:r}=t._parseOpts;let l=e;return"function"==typeof n&&(l=n(l)),a(l)||(l="string"==typeof n?i.parse(l,n):i.parse(l)),null===l?null:(o&&(l="week"!==o||!W(r)&&!0!==r?i.startOf(l,o):i.startOf(l,"isoWeek",r)),+l)}function To(t,e,i,s){const n=Co.length;for(let o=Co.indexOf(t);o<n-1;++o){const t=Do[Co[o]],n=t.steps?t.steps:Number.MAX_SAFE_INTEGER;if(t.common&&Math.ceil((i-e)/(n*t.size))<=s)return Co[o]}return Co[n-1]}function Lo(t,e,i){if(i){if(i.length){const{lo:s,hi:n}=et(i,e);t[i[s]>=e?i[s]:i[n]]=!0}}else t[e]=!0}function Eo(t,e,i){const s=[],n={},o=e.length;let a,r;for(a=0;a<o;++a)r=e[a],n[r]=a,s.push({value:r,major:!1});return 0!==o&&i?function(t,e,i,s){const n=t._adapter,o=+n.startOf(e[0].value,s),a=e[e.length-1].value;let r,l;for(r=o;r<=a;r=+n.add(r,1,s))l=i[r],l>=0&&(e[l].major=!0);return e}(t,s,n,i):s}class Ro extends Ks{static id="time";static defaults={bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{source:"auto",callback:!1,major:{enabled:!1}}};constructor(t){super(t),this._cache={data:[],labels:[],all:[]},this._unit="day",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(t,e={}){const i=t.time||(t.time={}),s=this._adapter=new Dn._date(t.adapters.date);s.init(e),x(i.displayFormats,s.formats()),this._parseOpts={parser:i.parser,round:i.round,isoWeekday:i.isoWeekday},super.init(t),this._normalized=e.normalized}parse(t,e){return void 0===t?null:Ao(this,t)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){const t=this.options,e=this._adapter,i=t.time.unit||"day";let{min:s,max:n,minDefined:o,maxDefined:r}=this.getUserBounds();function l(t){o||isNaN(t.min)||(s=Math.min(s,t.min)),r||isNaN(t.max)||(n=Math.max(n,t.max))}o&&r||(l(this._getLabelBounds()),"ticks"===t.bounds&&"labels"===t.ticks.source||l(this.getMinMax(!1))),s=a(s)&&!isNaN(s)?s:+e.startOf(Date.now(),i),n=a(n)&&!isNaN(n)?n:+e.endOf(Date.now(),i)+1,this.min=Math.min(s,n-1),this.max=Math.max(s+1,n)}_getLabelBounds(){const t=this.getLabelTimestamps();let e=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;return t.length&&(e=t[0],i=t[t.length-1]),{min:e,max:i}}buildTicks(){const t=this.options,e=t.time,i=t.ticks,s="labels"===i.source?this.getLabelTimestamps():this._generate();"ticks"===t.bounds&&s.length&&(this.min=this._userMin||s[0],this.max=this._userMax||s[s.length-1]);const n=this.min,o=nt(s,n,this.max);return this._unit=e.unit||(i.autoSkip?To(e.minUnit,this.min,this.max,this._getLabelCapacity(n)):function(t,e,i,s,n){for(let o=Co.length-1;o>=Co.indexOf(i);o--){const i=Co[o];if(Do[i].common&&t._adapter.diff(n,s,i)>=e-1)return i}return Co[i?Co.indexOf(i):0]}(this,o.length,e.minUnit,this.min,this.max)),this._majorUnit=i.major.enabled&&"year"!==this._unit?function(t){for(let e=Co.indexOf(t)+1,i=Co.length;e<i;++e)if(Do[Co[e]].common)return Co[e]}(this._unit):void 0,this.initOffsets(s),t.reverse&&o.reverse(),Eo(this,o,this._majorUnit)}afterAutoSkip(){this.options.offsetAfterAutoskip&&this.initOffsets(this.ticks.map((t=>+t.value)))}initOffsets(t=[]){let e,i,s=0,n=0;this.options.offset&&t.length&&(e=this.getDecimalForValue(t[0]),s=1===t.length?1-e:(this.getDecimalForValue(t[1])-e)/2,i=this.getDecimalForValue(t[t.length-1]),n=1===t.length?i:(i-this.getDecimalForValue(t[t.length-2]))/2);const o=t.length<3?.5:.25;s=J(s,0,o),n=J(n,0,o),this._offsets={start:s,end:n,factor:1/(s+1+n)}}_generate(){const t=this._adapter,e=this.min,i=this.max,s=this.options,n=s.time,o=n.unit||To(n.minUnit,e,i,this._getLabelCapacity(e)),a=l(s.ticks.stepSize,1),r="week"===o&&n.isoWeekday,h=W(r)||!0===r,c={};let d,u,f=e;if(h&&(f=+t.startOf(f,"isoWeek",r)),f=+t.startOf(f,h?"day":o),t.diff(i,e,o)>1e5*a)throw new Error(e+" and "+i+" are too far apart with stepSize of "+a+" "+o);const g="data"===s.ticks.source&&this.getDataTimestamps();for(d=f,u=0;d<i;d=+t.add(d,a,o),u++)Lo(c,d,g);return d!==i&&"ticks"!==s.bounds&&1!==u||Lo(c,d,g),Object.keys(c).sort(((t,e)=>t-e)).map((t=>+t))}getLabelForValue(t){const e=this._adapter,i=this.options.time;return i.tooltipFormat?e.format(t,i.tooltipFormat):e.format(t,i.displayFormats.datetime)}format(t,e){const i=this.options.time.displayFormats,s=this._unit,n=e||i[s];return this._adapter.format(t,n)}_tickFormatFunction(t,e,i,s){const n=this.options,o=n.ticks.callback;if(o)return d(o,[t,e,i],this);const a=n.time.displayFormats,r=this._unit,l=this._majorUnit,h=r&&a[r],c=l&&a[l],u=i[e],f=l&&c&&u&&u.major;return this._adapter.format(t,s||(f?c:h))}generateTickLabels(t){let e,i,s;for(e=0,i=t.length;e<i;++e)s=t[e],s.label=this._tickFormatFunction(s.value,e,t)}getDecimalForValue(t){return null===t?NaN:(t-this.min)/(this.max-this.min)}getPixelForValue(t){const e=this._offsets,i=this.getDecimalForValue(t);return this.getPixelForDecimal((e.start+i)*e.factor)}getValueForPixel(t){const e=this._offsets,i=this.getDecimalForPixel(t)/e.factor-e.end;return this.min+i*(this.max-this.min)}_getLabelSize(t){const e=this.options.ticks,i=this.ctx.measureText(t).width,s=$(this.isHorizontal()?e.maxRotation:e.minRotation),n=Math.cos(s),o=Math.sin(s),a=this._resolveTickFontOptions(0).size;return{w:i*n+a*o,h:i*o+a*n}}_getLabelCapacity(t){const e=this.options.time,i=e.displayFormats,s=i[e.unit]||i.millisecond,n=this._tickFormatFunction(t,0,Eo(this,[t],this._majorUnit),s),o=this._getLabelSize(n),a=Math.floor(this.isHorizontal()?this.width/o.w:this.height/o.h)-1;return a>0?a:1}getDataTimestamps(){let t,e,i=this._cache.data||[];if(i.length)return i;const s=this.getMatchingVisibleMetas();if(this._normalized&&s.length)return this._cache.data=s[0].controller.getAllParsedValues(this);for(t=0,e=s.length;t<e;++t)i=i.concat(s[t].controller.getAllParsedValues(this));return this._cache.data=this.normalize(i)}getLabelTimestamps(){const t=this._cache.labels||[];let e,i;if(t.length)return t;const s=this.getLabels();for(e=0,i=s.length;e<i;++e)t.push(Ao(this,s[e]));return this._cache.labels=this._normalized?t:this.normalize(t)}normalize(t){return lt(t.sort(Oo))}}function Io(t,e,i){let s,n,o,a,r=0,l=t.length-1;i?(e>=t[r].pos&&e<=t[l].pos&&({lo:r,hi:l}=it(t,"pos",e)),({pos:s,time:o}=t[r]),({pos:n,time:a}=t[l])):(e>=t[r].time&&e<=t[l].time&&({lo:r,hi:l}=it(t,"time",e)),({time:s,pos:o}=t[r]),({time:n,pos:a}=t[l]));const h=n-s;return h?o+(a-o)*(e-s)/h:o}var zo=Object.freeze({__proto__:null,CategoryScale:class extends Ks{static id="category";static defaults={ticks:{callback:ro}};constructor(t){super(t),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(t){const e=this._addedLabels;if(e.length){const t=this.getLabels();for(const{index:i,label:s}of e)t[i]===s&&t.splice(i,1);this._addedLabels=[]}super.init(t)}parse(t,e){if(s(t))return null;const i=this.getLabels();return((t,e)=>null===t?null:J(Math.round(t),0,e))(e=isFinite(e)&&i[e]===t?e:ao(i,t,l(e,t),this._addedLabels),i.length-1)}determineDataLimits(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let{min:i,max:s}=this.getMinMax(!0);"ticks"===this.options.bounds&&(t||(i=0),e||(s=this.getLabels().length-1)),this.min=i,this.max=s}buildTicks(){const t=this.min,e=this.max,i=this.options.offset,s=[];let n=this.getLabels();n=0===t&&e===n.length-1?n:n.slice(t,e+1),this._valueRange=Math.max(n.length-(i?0:1),1),this._startValue=this.min-(i?.5:0);for(let i=t;i<=e;i++)s.push({value:i});return s}getLabelForValue(t){return ro.call(this,t)}configure(){super.configure(),this.isHorizontal()||(this._reversePixels=!this._reversePixels)}getPixelForValue(t){return"number"!=typeof t&&(t=this.parse(t)),null===t?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getValueForPixel(t){return Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange)}getBasePixel(){return this.bottom}},LinearScale:co,LogarithmicScale:bo,RadialLinearScale:Po,TimeScale:Ro,TimeSeriesScale:class extends Ro{static id="timeseries";static defaults=Ro.defaults;constructor(t){super(t),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const t=this._getTimestampsForTable(),e=this._table=this.buildLookupTable(t);this._minPos=Io(e,this.min),this._tableRange=Io(e,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){const{min:e,max:i}=this,s=[],n=[];let o,a,r,l,h;for(o=0,a=t.length;o<a;++o)l=t[o],l>=e&&l<=i&&s.push(l);if(s.length<2)return[{time:e,pos:0},{time:i,pos:1}];for(o=0,a=s.length;o<a;++o)h=s[o+1],r=s[o-1],l=s[o],Math.round((h+r)/2)!==l&&n.push({time:l,pos:o/(a-1)});return n}_getTimestampsForTable(){let t=this._cache.all||[];if(t.length)return t;const e=this.getDataTimestamps(),i=this.getLabelTimestamps();return t=e.length&&i.length?this.normalize(e.concat(i)):e.length?e:i,t=this._cache.all=t,t}getDecimalForValue(t){return(Io(this._table,t)-this._minPos)/this._tableRange}getValueForPixel(t){const e=this._offsets,i=this.getDecimalForPixel(t)/e.factor-e.end;return Io(this._table,i*this._tableRange+this._minPos,!0)}}});const Fo=["rgb(54, 162, 235)","rgb(255, 99, 132)","rgb(255, 159, 64)","rgb(255, 205, 86)","rgb(75, 192, 192)","rgb(153, 102, 255)","rgb(201, 203, 207)"],Vo=Fo.map((t=>t.replace("rgb(","rgba(").replace(")",", 0.5)")));function Bo(t){return Fo[t%Fo.length]}function No(t){return Vo[t%Vo.length]}function Wo(t){let e=0;return(i,s)=>{const n=t.getDatasetMeta(s).controller;n instanceof zn?e=function(t,e){return t.backgroundColor=t.data.map((()=>Bo(e++))),e}(i,e):n instanceof Fn?e=function(t,e){return t.backgroundColor=t.data.map((()=>No(e++))),e}(i,e):n&&(e=function(t,e){return t.borderColor=Bo(e),t.backgroundColor=No(e),++e}(i,e))}}function Ho(t){let e;for(e in t)if(t[e].borderColor||t[e].backgroundColor)return!0;return!1}var jo={id:"colors",defaults:{enabled:!0,forceOverride:!1},beforeLayout(t,e,i){if(!i.enabled)return;const{data:{datasets:s},options:n}=t.config,{elements:o}=n;if(!i.forceOverride&&(Ho(s)||(a=n)&&(a.borderColor||a.backgroundColor)||o&&Ho(o)))return;var a;const r=Wo(t);s.forEach(r)}};function $o(t){if(t._decimated){const e=t._data;delete t._decimated,delete t._data,Object.defineProperty(t,"data",{configurable:!0,enumerable:!0,writable:!0,value:e})}}function Yo(t){t.data.datasets.forEach((t=>{$o(t)}))}var Uo={id:"decimation",defaults:{algorithm:"min-max",enabled:!1},beforeElementsUpdate:(t,e,i)=>{if(!i.enabled)return void Yo(t);const n=t.width;t.data.datasets.forEach(((e,o)=>{const{_data:a,indexAxis:r}=e,l=t.getDatasetMeta(o),h=a||e.data;if("y"===ki([r,t.options.indexAxis]))return;if(!l.controller.supportsDecimation)return;const c=t.scales[l.xAxisID];if("linear"!==c.type&&"time"!==c.type)return;if(t.options.parsing)return;let{start:d,count:u}=function(t,e){const i=e.length;let s,n=0;const{iScale:o}=t,{min:a,max:r,minDefined:l,maxDefined:h}=o.getUserBounds();return l&&(n=J(it(e,o.axis,a).lo,0,i-1)),s=h?J(it(e,o.axis,r).hi+1,n,i)-n:i-n,{start:n,count:s}}(l,h);if(u<=(i.threshold||4*n))return void $o(e);let f;switch(s(a)&&(e._data=h,delete e.data,Object.defineProperty(e,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(t){this._data=t}})),i.algorithm){case"lttb":f=function(t,e,i,s,n){const o=n.samples||s;if(o>=i)return t.slice(e,e+i);const a=[],r=(i-2)/(o-2);let l=0;const h=e+i-1;let c,d,u,f,g,p=e;for(a[l++]=t[p],c=0;c<o-2;c++){let s,n=0,o=0;const h=Math.floor((c+1)*r)+1+e,m=Math.min(Math.floor((c+2)*r)+1,i)+e,b=m-h;for(s=h;s<m;s++)n+=t[s].x,o+=t[s].y;n/=b,o/=b;const x=Math.floor(c*r)+1+e,_=Math.min(Math.floor((c+1)*r)+1,i)+e,{x:y,y:v}=t[p];for(u=f=-1,s=x;s<_;s++)f=.5*Math.abs((y-n)*(t[s].y-v)-(y-t[s].x)*(o-v)),f>u&&(u=f,d=t[s],g=s);a[l++]=d,p=g}return a[l++]=t[h],a}(h,d,u,n,i);break;case"min-max":f=function(t,e,i,n){let o,a,r,l,h,c,d,u,f,g,p=0,m=0;const b=[],x=e+i-1,_=t[e].x,y=t[x].x-_;for(o=e;o<e+i;++o){a=t[o],r=(a.x-_)/y*n,l=a.y;const e=0|r;if(e===h)l<f?(f=l,c=o):l>g&&(g=l,d=o),p=(m*p+a.x)/++m;else{const i=o-1;if(!s(c)&&!s(d)){const e=Math.min(c,d),s=Math.max(c,d);e!==u&&e!==i&&b.push({...t[e],x:p}),s!==u&&s!==i&&b.push({...t[s],x:p})}o>0&&i!==u&&b.push(t[i]),b.push(a),h=e,m=0,f=g=l,c=d=u=o}}return b}(h,d,u,n);break;default:throw new Error(`Unsupported decimation algorithm '${i.algorithm}'`)}e._decimated=f}))},destroy(t){Yo(t)}};function Xo(t,e,i,s){if(s)return;let n=e[t],o=i[t];return"angle"===t&&(n=G(n),o=G(o)),{property:t,start:n,end:o}}function qo(t,e,i){for(;e>t;e--){const t=i[e];if(!isNaN(t.x)&&!isNaN(t.y))break}return e}function Ko(t,e,i,s){return t&&e?s(t[i],e[i]):t?t[i]:e?e[i]:0}function Go(t,e){let i=[],s=!1;return n(t)?(s=!0,i=t):i=function(t,e){const{x:i=null,y:s=null}=t||{},n=e.points,o=[];return e.segments.forEach((({start:t,end:e})=>{e=qo(t,e,n);const a=n[t],r=n[e];null!==s?(o.push({x:a.x,y:s}),o.push({x:r.x,y:s})):null!==i&&(o.push({x:i,y:a.y}),o.push({x:i,y:r.y}))})),o}(t,e),i.length?new Zn({points:i,options:{tension:0},_loop:s,_fullLoop:s}):null}function Zo(t){return t&&!1!==t.fill}function Jo(t,e,i){let s=t[e].fill;const n=[e];let o;if(!i)return s;for(;!1!==s&&-1===n.indexOf(s);){if(!a(s))return s;if(o=t[s],!o)return!1;if(o.visible)return s;n.push(s),s=o.fill}return!1}function Qo(t,e,i){const s=function(t){const e=t.options,i=e.fill;let s=l(i&&i.target,i);void 0===s&&(s=!!e.backgroundColor);if(!1===s||null===s)return!1;if(!0===s)return"origin";return s}(t);if(o(s))return!isNaN(s.value)&&s;let n=parseFloat(s);return a(n)&&Math.floor(n)===n?function(t,e,i,s){"-"!==t&&"+"!==t||(i=e+i);if(i===e||i<0||i>=s)return!1;return i}(s[0],e,n,i):["origin","start","end","stack","shape"].indexOf(s)>=0&&s}function ta(t,e,i){const s=[];for(let n=0;n<i.length;n++){const o=i[n],{first:a,last:r,point:l}=ea(o,e,"x");if(!(!l||a&&r))if(a)s.unshift(l);else if(t.push(l),!r)break}t.push(...s)}function ea(t,e,i){const s=t.interpolate(e,i);if(!s)return{};const n=s[i],o=t.segments,a=t.points;let r=!1,l=!1;for(let t=0;t<o.length;t++){const e=o[t],s=a[e.start][i],h=a[e.end][i];if(tt(n,s,h)){r=n===s,l=n===h;break}}return{first:r,last:l,point:s}}class ia{constructor(t){this.x=t.x,this.y=t.y,this.radius=t.radius}pathSegment(t,e,i){const{x:s,y:n,radius:o}=this;return e=e||{start:0,end:O},t.arc(s,n,o,e.end,e.start,!0),!i.bounds}interpolate(t){const{x:e,y:i,radius:s}=this,n=t.angle;return{x:e+Math.cos(n)*s,y:i+Math.sin(n)*s,angle:n}}}function sa(t){const{chart:e,fill:i,line:s}=t;if(a(i))return function(t,e){const i=t.getDatasetMeta(e);return i&&t.isDatasetVisible(e)?i.dataset:null}(e,i);if("stack"===i)return function(t){const{scale:e,index:i,line:s}=t,n=[],o=s.segments,a=s.points,r=function(t,e){const i=[],s=t.getMatchingVisibleMetas("line");for(let t=0;t<s.length;t++){const n=s[t];if(n.index===e)break;n.hidden||i.unshift(n.dataset)}return i}(e,i);r.push(Go({x:null,y:e.bottom},s));for(let t=0;t<o.length;t++){const e=o[t];for(let t=e.start;t<=e.end;t++)ta(n,a[t],r)}return new Zn({points:n,options:{}})}(t);if("shape"===i)return!0;const n=function(t){if((t.scale||{}).getPointPositionForValue)return function(t){const{scale:e,fill:i}=t,s=e.options,n=e.getLabels().length,a=s.reverse?e.max:e.min,r=function(t,e,i){let s;return s="start"===t?i:"end"===t?e.options.reverse?e.min:e.max:o(t)?t.value:e.getBaseValue(),s}(i,e,a),l=[];if(s.grid.circular){const t=e.getPointPositionForValue(0,a);return new ia({x:t.x,y:t.y,radius:e.getDistanceFromCenterForValue(r)})}for(let t=0;t<n;++t)l.push(e.getPointPositionForValue(t,r));return l}(t);return function(t){const{scale:e={},fill:i}=t,s=function(t,e){let i=null;return"start"===t?i=e.bottom:"end"===t?i=e.top:o(t)?i=e.getPixelForValue(t.value):e.getBasePixel&&(i=e.getBasePixel()),i}(i,e);if(a(s)){const t=e.isHorizontal();return{x:t?s:null,y:t?null:s}}return null}(t)}(t);return n instanceof ia?n:Go(n,s)}function na(t,e,i){const s=sa(e),{line:n,scale:o,axis:a}=e,r=n.options,l=r.fill,h=r.backgroundColor,{above:c=h,below:d=h}=l||{};s&&n.points.length&&(Re(t,i),function(t,e){const{line:i,target:s,above:n,below:o,area:a,scale:r}=e,l=i._loop?"angle":e.axis;t.save(),"x"===l&&o!==n&&(oa(t,s,a.top),aa(t,{line:i,target:s,color:n,scale:r,property:l}),t.restore(),t.save(),oa(t,s,a.bottom));aa(t,{line:i,target:s,color:o,scale:r,property:l}),t.restore()}(t,{line:n,target:s,above:c,below:d,area:i,scale:o,axis:a}),Ie(t))}function oa(t,e,i){const{segments:s,points:n}=e;let o=!0,a=!1;t.beginPath();for(const r of s){const{start:s,end:l}=r,h=n[s],c=n[qo(s,l,n)];o?(t.moveTo(h.x,h.y),o=!1):(t.lineTo(h.x,i),t.lineTo(h.x,h.y)),a=!!e.pathSegment(t,r,{move:a}),a?t.closePath():t.lineTo(c.x,i)}t.lineTo(e.first().x,i),t.closePath(),t.clip()}function aa(t,e){const{line:i,target:s,property:n,color:o,scale:a}=e,r=function(t,e,i){const s=t.segments,n=t.points,o=e.points,a=[];for(const t of s){let{start:s,end:r}=t;r=qo(s,r,n);const l=Xo(i,n[s],n[r],t.loop);if(!e.segments){a.push({source:t,target:l,start:n[s],end:n[r]});continue}const h=Ei(e,l);for(const e of h){const s=Xo(i,o[e.start],o[e.end],e.loop),r=Li(t,n,s);for(const t of r)a.push({source:t,target:e,start:{[i]:Ko(l,s,"start",Math.max)},end:{[i]:Ko(l,s,"end",Math.min)}})}}return a}(i,s,n);for(const{source:e,target:l,start:h,end:c}of r){const{style:{backgroundColor:r=o}={}}=e,d=!0!==s;t.save(),t.fillStyle=r,ra(t,a,d&&Xo(n,h,c)),t.beginPath();const u=!!i.pathSegment(t,e);let f;if(d){u?t.closePath():la(t,s,c,n);const e=!!s.pathSegment(t,l,{move:u,reverse:!0});f=u&&e,f||la(t,s,h,n)}t.closePath(),t.fill(f?"evenodd":"nonzero"),t.restore()}}function ra(t,e,i){const{top:s,bottom:n}=e.chart.chartArea,{property:o,start:a,end:r}=i||{};"x"===o&&(t.beginPath(),t.rect(a,s,r-a,n-s),t.clip())}function la(t,e,i,s){const n=e.interpolate(i,s);n&&t.lineTo(n.x,n.y)}var ha={id:"filler",afterDatasetsUpdate(t,e,i){const s=(t.data.datasets||[]).length,n=[];let o,a,r,l;for(a=0;a<s;++a)o=t.getDatasetMeta(a),r=o.dataset,l=null,r&&r.options&&r instanceof Zn&&(l={visible:t.isDatasetVisible(a),index:a,fill:Qo(r,a,s),chart:t,axis:o.controller.options.indexAxis,scale:o.vScale,line:r}),o.$filler=l,n.push(l);for(a=0;a<s;++a)l=n[a],l&&!1!==l.fill&&(l.fill=Jo(n,a,i.propagate))},beforeDraw(t,e,i){const s="beforeDraw"===i.drawTime,n=t.getSortedVisibleDatasetMetas(),o=t.chartArea;for(let e=n.length-1;e>=0;--e){const i=n[e].$filler;i&&(i.line.updateControlPoints(o,i.axis),s&&i.fill&&na(t.ctx,i,o))}},beforeDatasetsDraw(t,e,i){if("beforeDatasetsDraw"!==i.drawTime)return;const s=t.getSortedVisibleDatasetMetas();for(let e=s.length-1;e>=0;--e){const i=s[e].$filler;Zo(i)&&na(t.ctx,i,t.chartArea)}},beforeDatasetDraw(t,e,i){const s=e.meta.$filler;Zo(s)&&"beforeDatasetDraw"===i.drawTime&&na(t.ctx,s,t.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};const ca=(t,e)=>{let{boxHeight:i=e,boxWidth:s=e}=t;return t.usePointStyle&&(i=Math.min(i,e),s=t.pointStyleWidth||Math.min(s,e)),{boxWidth:s,boxHeight:i,itemHeight:Math.max(e,i)}};class da extends Bs{constructor(t){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e,i){this.maxWidth=t,this.maxHeight=e,this._margins=i,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){const t=this.options.labels||{};let e=d(t.generateLabels,[this.chart],this)||[];t.filter&&(e=e.filter((e=>t.filter(e,this.chart.data)))),t.sort&&(e=e.sort(((e,i)=>t.sort(e,i,this.chart.data)))),this.options.reverse&&e.reverse(),this.legendItems=e}fit(){const{options:t,ctx:e}=this;if(!t.display)return void(this.width=this.height=0);const i=t.labels,s=wi(i.font),n=s.size,o=this._computeTitleHeight(),{boxWidth:a,itemHeight:r}=ca(i,n);let l,h;e.font=s.string,this.isHorizontal()?(l=this.maxWidth,h=this._fitRows(o,n,a,r)+10):(h=this.maxHeight,l=this._fitCols(o,s,a,r)+10),this.width=Math.min(l,t.maxWidth||this.maxWidth),this.height=Math.min(h,t.maxHeight||this.maxHeight)}_fitRows(t,e,i,s){const{ctx:n,maxWidth:o,options:{labels:{padding:a}}}=this,r=this.legendHitBoxes=[],l=this.lineWidths=[0],h=s+a;let c=t;n.textAlign="left",n.textBaseline="middle";let d=-1,u=-h;return this.legendItems.forEach(((t,f)=>{const g=i+e/2+n.measureText(t.text).width;(0===f||l[l.length-1]+g+2*a>o)&&(c+=h,l[l.length-(f>0?0:1)]=0,u+=h,d++),r[f]={left:0,top:u,row:d,width:g,height:s},l[l.length-1]+=g+a})),c}_fitCols(t,e,i,s){const{ctx:n,maxHeight:o,options:{labels:{padding:a}}}=this,r=this.legendHitBoxes=[],l=this.columnSizes=[],h=o-t;let c=a,d=0,u=0,f=0,g=0;return this.legendItems.forEach(((t,o)=>{const{itemWidth:p,itemHeight:m}=function(t,e,i,s,n){const o=function(t,e,i,s){let n=t.text;n&&"string"!=typeof n&&(n=n.reduce(((t,e)=>t.length>e.length?t:e)));return e+i.size/2+s.measureText(n).width}(s,t,e,i),a=function(t,e,i){let s=t;"string"!=typeof e.text&&(s=ua(e,i));return s}(n,s,e.lineHeight);return{itemWidth:o,itemHeight:a}}(i,e,n,t,s);o>0&&u+m+2*a>h&&(c+=d+a,l.push({width:d,height:u}),f+=d+a,g++,d=u=0),r[o]={left:f,top:u,col:g,width:p,height:m},d=Math.max(d,p),u+=m+a})),c+=d,l.push({width:d,height:u}),c}adjustHitBoxes(){if(!this.options.display)return;const t=this._computeTitleHeight(),{legendHitBoxes:e,options:{align:i,labels:{padding:s},rtl:n}}=this,o=Di(n,this.left,this.width);if(this.isHorizontal()){let n=0,a=ft(i,this.left+s,this.right-this.lineWidths[n]);for(const r of e)n!==r.row&&(n=r.row,a=ft(i,this.left+s,this.right-this.lineWidths[n])),r.top+=this.top+t+s,r.left=o.leftForLtr(o.x(a),r.width),a+=r.width+s}else{let n=0,a=ft(i,this.top+t+s,this.bottom-this.columnSizes[n].height);for(const r of e)r.col!==n&&(n=r.col,a=ft(i,this.top+t+s,this.bottom-this.columnSizes[n].height)),r.top=a,r.left+=this.left+s,r.left=o.leftForLtr(o.x(r.left),r.width),a+=r.height+s}}isHorizontal(){return"top"===this.options.position||"bottom"===this.options.position}draw(){if(this.options.display){const t=this.ctx;Re(t,this),this._draw(),Ie(t)}}_draw(){const{options:t,columnSizes:e,lineWidths:i,ctx:s}=this,{align:n,labels:o}=t,a=ue.color,r=Di(t.rtl,this.left,this.width),h=wi(o.font),{padding:c}=o,d=h.size,u=d/2;let f;this.drawTitle(),s.textAlign=r.textAlign("left"),s.textBaseline="middle",s.lineWidth=.5,s.font=h.string;const{boxWidth:g,boxHeight:p,itemHeight:m}=ca(o,d),b=this.isHorizontal(),x=this._computeTitleHeight();f=b?{x:ft(n,this.left+c,this.right-i[0]),y:this.top+c+x,line:0}:{x:this.left+c,y:ft(n,this.top+x+c,this.bottom-e[0].height),line:0},Ci(this.ctx,t.textDirection);const _=m+c;this.legendItems.forEach(((y,v)=>{s.strokeStyle=y.fontColor,s.fillStyle=y.fontColor;const M=s.measureText(y.text).width,w=r.textAlign(y.textAlign||(y.textAlign=o.textAlign)),k=g+u+M;let S=f.x,P=f.y;r.setWidth(this.width),b?v>0&&S+k+c>this.right&&(P=f.y+=_,f.line++,S=f.x=ft(n,this.left+c,this.right-i[f.line])):v>0&&P+_>this.bottom&&(S=f.x=S+e[f.line].width+c,f.line++,P=f.y=ft(n,this.top+x+c,this.bottom-e[f.line].height));if(function(t,e,i){if(isNaN(g)||g<=0||isNaN(p)||p<0)return;s.save();const n=l(i.lineWidth,1);if(s.fillStyle=l(i.fillStyle,a),s.lineCap=l(i.lineCap,"butt"),s.lineDashOffset=l(i.lineDashOffset,0),s.lineJoin=l(i.lineJoin,"miter"),s.lineWidth=n,s.strokeStyle=l(i.strokeStyle,a),s.setLineDash(l(i.lineDash,[])),o.usePointStyle){const a={radius:p*Math.SQRT2/2,pointStyle:i.pointStyle,rotation:i.rotation,borderWidth:n},l=r.xPlus(t,g/2);Le(s,a,l,e+u,o.pointStyleWidth&&g)}else{const o=e+Math.max((d-p)/2,0),a=r.leftForLtr(t,g),l=vi(i.borderRadius);s.beginPath(),Object.values(l).some((t=>0!==t))?We(s,{x:a,y:o,w:g,h:p,radius:l}):s.rect(a,o,g,p),s.fill(),0!==n&&s.stroke()}s.restore()}(r.x(S),P,y),S=gt(w,S+g+u,b?S+k:this.right,t.rtl),function(t,e,i){Ve(s,i.text,t,e+m/2,h,{strikethrough:i.hidden,textAlign:r.textAlign(i.textAlign)})}(r.x(S),P,y),b)f.x+=k+c;else if("string"!=typeof y.text){const t=h.lineHeight;f.y+=ua(y,t)}else f.y+=_})),Oi(this.ctx,t.textDirection)}drawTitle(){const t=this.options,e=t.title,i=wi(e.font),s=Mi(e.padding);if(!e.display)return;const n=Di(t.rtl,this.left,this.width),o=this.ctx,a=e.position,r=i.size/2,l=s.top+r;let h,c=this.left,d=this.width;if(this.isHorizontal())d=Math.max(...this.lineWidths),h=this.top+l,c=ft(t.align,c,this.right-d);else{const e=this.columnSizes.reduce(((t,e)=>Math.max(t,e.height)),0);h=l+ft(t.align,this.top,this.bottom-e-t.labels.padding-this._computeTitleHeight())}const u=ft(a,c,c+d);o.textAlign=n.textAlign(ut(a)),o.textBaseline="middle",o.strokeStyle=e.color,o.fillStyle=e.color,o.font=i.string,Ve(o,e.text,u,h,i)}_computeTitleHeight(){const t=this.options.title,e=wi(t.font),i=Mi(t.padding);return t.display?e.lineHeight+i.height:0}_getLegendItemAt(t,e){let i,s,n;if(tt(t,this.left,this.right)&&tt(e,this.top,this.bottom))for(n=this.legendHitBoxes,i=0;i<n.length;++i)if(s=n[i],tt(t,s.left,s.left+s.width)&&tt(e,s.top,s.top+s.height))return this.legendItems[i];return null}handleEvent(t){const e=this.options;if(!function(t,e){if(("mousemove"===t||"mouseout"===t)&&(e.onHover||e.onLeave))return!0;if(e.onClick&&("click"===t||"mouseup"===t))return!0;return!1}(t.type,e))return;const i=this._getLegendItemAt(t.x,t.y);if("mousemove"===t.type||"mouseout"===t.type){const o=this._hoveredItem,a=(n=i,null!==(s=o)&&null!==n&&s.datasetIndex===n.datasetIndex&&s.index===n.index);o&&!a&&d(e.onLeave,[t,o,this],this),this._hoveredItem=i,i&&!a&&d(e.onHover,[t,i,this],this)}else i&&d(e.onClick,[t,i,this],this);var s,n}}function ua(t,e){return e*(t.text?t.text.length+.5:0)}var fa={id:"legend",_element:da,start(t,e,i){const s=t.legend=new da({ctx:t.ctx,options:i,chart:t});ns.configure(t,s,i),ns.addBox(t,s)},stop(t){ns.removeBox(t,t.legend),delete t.legend},beforeUpdate(t,e,i){const s=t.legend;ns.configure(t,s,i),s.options=i},afterUpdate(t){const e=t.legend;e.buildLabels(),e.adjustHitBoxes()},afterEvent(t,e){e.replay||t.legend.handleEvent(e.event)},defaults:{display:!0,position:"top",align:"center",fullSize:!0,reverse:!1,weight:1e3,onClick(t,e,i){const s=e.datasetIndex,n=i.chart;n.isDatasetVisible(s)?(n.hide(s),e.hidden=!0):(n.show(s),e.hidden=!1)},onHover:null,onLeave:null,labels:{color:t=>t.chart.options.color,boxWidth:40,padding:10,generateLabels(t){const e=t.data.datasets,{labels:{usePointStyle:i,pointStyle:s,textAlign:n,color:o,useBorderRadius:a,borderRadius:r}}=t.legend.options;return t._getSortedDatasetMetas().map((t=>{const l=t.controller.getStyle(i?0:void 0),h=Mi(l.borderWidth);return{text:e[t.index].label,fillStyle:l.backgroundColor,fontColor:o,hidden:!t.visible,lineCap:l.borderCapStyle,lineDash:l.borderDash,lineDashOffset:l.borderDashOffset,lineJoin:l.borderJoinStyle,lineWidth:(h.width+h.height)/4,strokeStyle:l.borderColor,pointStyle:s||l.pointStyle,rotation:l.rotation,textAlign:n||l.textAlign,borderRadius:a&&(r||l.borderRadius),datasetIndex:t.index}}),this)}},title:{color:t=>t.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:t=>!t.startsWith("on"),labels:{_scriptable:t=>!["generateLabels","filter","sort"].includes(t)}}};class ga extends Bs{constructor(t){super(),this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e){const i=this.options;if(this.left=0,this.top=0,!i.display)return void(this.width=this.height=this.right=this.bottom=0);this.width=this.right=t,this.height=this.bottom=e;const s=n(i.text)?i.text.length:1;this._padding=Mi(i.padding);const o=s*wi(i.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=o:this.width=o}isHorizontal(){const t=this.options.position;return"top"===t||"bottom"===t}_drawArgs(t){const{top:e,left:i,bottom:s,right:n,options:o}=this,a=o.align;let r,l,h,c=0;return this.isHorizontal()?(l=ft(a,i,n),h=e+t,r=n-i):("left"===o.position?(l=i+t,h=ft(a,s,e),c=-.5*C):(l=n-t,h=ft(a,e,s),c=.5*C),r=s-e),{titleX:l,titleY:h,maxWidth:r,rotation:c}}draw(){const t=this.ctx,e=this.options;if(!e.display)return;const i=wi(e.font),s=i.lineHeight/2+this._padding.top,{titleX:n,titleY:o,maxWidth:a,rotation:r}=this._drawArgs(s);Ve(t,e.text,0,0,i,{color:e.color,maxWidth:a,rotation:r,textAlign:ut(e.align),textBaseline:"middle",translation:[n,o]})}}var pa={id:"title",_element:ga,start(t,e,i){!function(t,e){const i=new ga({ctx:t.ctx,options:e,chart:t});ns.configure(t,i,e),ns.addBox(t,i),t.titleBlock=i}(t,i)},stop(t){const e=t.titleBlock;ns.removeBox(t,e),delete t.titleBlock},beforeUpdate(t,e,i){const s=t.titleBlock;ns.configure(t,s,i),s.options=i},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const ma=new WeakMap;var ba={id:"subtitle",start(t,e,i){const s=new ga({ctx:t.ctx,options:i,chart:t});ns.configure(t,s,i),ns.addBox(t,s),ma.set(t,s)},stop(t){ns.removeBox(t,ma.get(t)),ma.delete(t)},beforeUpdate(t,e,i){const s=ma.get(t);ns.configure(t,s,i),s.options=i},defaults:{align:"center",display:!1,font:{weight:"normal"},fullSize:!0,padding:0,position:"top",text:"",weight:1500},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const xa={average(t){if(!t.length)return!1;let e,i,s=0,n=0,o=0;for(e=0,i=t.length;e<i;++e){const i=t[e].element;if(i&&i.hasValue()){const t=i.tooltipPosition();s+=t.x,n+=t.y,++o}}return{x:s/o,y:n/o}},nearest(t,e){if(!t.length)return!1;let i,s,n,o=e.x,a=e.y,r=Number.POSITIVE_INFINITY;for(i=0,s=t.length;i<s;++i){const s=t[i].element;if(s&&s.hasValue()){const t=q(e,s.getCenterPoint());t<r&&(r=t,n=s)}}if(n){const t=n.tooltipPosition();o=t.x,a=t.y}return{x:o,y:a}}};function _a(t,e){return e&&(n(e)?Array.prototype.push.apply(t,e):t.push(e)),t}function ya(t){return("string"==typeof t||t instanceof String)&&t.indexOf("\n")>-1?t.split("\n"):t}function va(t,e){const{element:i,datasetIndex:s,index:n}=e,o=t.getDatasetMeta(s).controller,{label:a,value:r}=o.getLabelAndValue(n);return{chart:t,label:a,parsed:o.getParsed(n),raw:t.data.datasets[s].data[n],formattedValue:r,dataset:o.getDataset(),dataIndex:n,datasetIndex:s,element:i}}function Ma(t,e){const i=t.chart.ctx,{body:s,footer:n,title:o}=t,{boxWidth:a,boxHeight:r}=e,l=wi(e.bodyFont),h=wi(e.titleFont),c=wi(e.footerFont),d=o.length,f=n.length,g=s.length,p=Mi(e.padding);let m=p.height,b=0,x=s.reduce(((t,e)=>t+e.before.length+e.lines.length+e.after.length),0);if(x+=t.beforeBody.length+t.afterBody.length,d&&(m+=d*h.lineHeight+(d-1)*e.titleSpacing+e.titleMarginBottom),x){m+=g*(e.displayColors?Math.max(r,l.lineHeight):l.lineHeight)+(x-g)*l.lineHeight+(x-1)*e.bodySpacing}f&&(m+=e.footerMarginTop+f*c.lineHeight+(f-1)*e.footerSpacing);let _=0;const y=function(t){b=Math.max(b,i.measureText(t).width+_)};return i.save(),i.font=h.string,u(t.title,y),i.font=l.string,u(t.beforeBody.concat(t.afterBody),y),_=e.displayColors?a+2+e.boxPadding:0,u(s,(t=>{u(t.before,y),u(t.lines,y),u(t.after,y)})),_=0,i.font=c.string,u(t.footer,y),i.restore(),b+=p.width,{width:b,height:m}}function wa(t,e,i,s){const{x:n,width:o}=i,{width:a,chartArea:{left:r,right:l}}=t;let h="center";return"center"===s?h=n<=(r+l)/2?"left":"right":n<=o/2?h="left":n>=a-o/2&&(h="right"),function(t,e,i,s){const{x:n,width:o}=s,a=i.caretSize+i.caretPadding;return"left"===t&&n+o+a>e.width||"right"===t&&n-o-a<0||void 0}(h,t,e,i)&&(h="center"),h}function ka(t,e,i){const s=i.yAlign||e.yAlign||function(t,e){const{y:i,height:s}=e;return i<s/2?"top":i>t.height-s/2?"bottom":"center"}(t,i);return{xAlign:i.xAlign||e.xAlign||wa(t,e,i,s),yAlign:s}}function Sa(t,e,i,s){const{caretSize:n,caretPadding:o,cornerRadius:a}=t,{xAlign:r,yAlign:l}=i,h=n+o,{topLeft:c,topRight:d,bottomLeft:u,bottomRight:f}=vi(a);let g=function(t,e){let{x:i,width:s}=t;return"right"===e?i-=s:"center"===e&&(i-=s/2),i}(e,r);const p=function(t,e,i){let{y:s,height:n}=t;return"top"===e?s+=i:s-="bottom"===e?n+i:n/2,s}(e,l,h);return"center"===l?"left"===r?g+=h:"right"===r&&(g-=h):"left"===r?g-=Math.max(c,u)+n:"right"===r&&(g+=Math.max(d,f)+n),{x:J(g,0,s.width-e.width),y:J(p,0,s.height-e.height)}}function Pa(t,e,i){const s=Mi(i.padding);return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-s.right:t.x+s.left}function Da(t){return _a([],ya(t))}function Ca(t,e){const i=e&&e.dataset&&e.dataset.tooltip&&e.dataset.tooltip.callbacks;return i?t.override(i):t}const Oa={beforeTitle:e,title(t){if(t.length>0){const e=t[0],i=e.chart.data.labels,s=i?i.length:0;if(this&&this.options&&"dataset"===this.options.mode)return e.dataset.label||"";if(e.label)return e.label;if(s>0&&e.dataIndex<s)return i[e.dataIndex]}return""},afterTitle:e,beforeBody:e,beforeLabel:e,label(t){if(this&&this.options&&"dataset"===this.options.mode)return t.label+": "+t.formattedValue||t.formattedValue;let e=t.dataset.label||"";e&&(e+=": ");const i=t.formattedValue;return s(i)||(e+=i),e},labelColor(t){const e=t.chart.getDatasetMeta(t.datasetIndex).controller.getStyle(t.dataIndex);return{borderColor:e.borderColor,backgroundColor:e.backgroundColor,borderWidth:e.borderWidth,borderDash:e.borderDash,borderDashOffset:e.borderDashOffset,borderRadius:0}},labelTextColor(){return this.options.bodyColor},labelPointStyle(t){const e=t.chart.getDatasetMeta(t.datasetIndex).controller.getStyle(t.dataIndex);return{pointStyle:e.pointStyle,rotation:e.rotation}},afterLabel:e,afterBody:e,beforeFooter:e,footer:e,afterFooter:e};function Aa(t,e,i,s){const n=t[e].call(i,s);return void 0===n?Oa[e].call(i,s):n}class Ta extends Bs{static positioners=xa;constructor(t){super(),this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=t.chart,this.options=t.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(t){this.options=t,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const t=this._cachedAnimations;if(t)return t;const e=this.chart,i=this.options.setContext(this.getContext()),s=i.enabled&&e.options.animation&&i.animations,n=new Ps(this.chart,s);return s._cacheable&&(this._cachedAnimations=Object.freeze(n)),n}getContext(){return this.$context||(this.$context=(t=this.chart.getContext(),e=this,i=this._tooltipItems,Pi(t,{tooltip:e,tooltipItems:i,type:"tooltip"})));var t,e,i}getTitle(t,e){const{callbacks:i}=e,s=Aa(i,"beforeTitle",this,t),n=Aa(i,"title",this,t),o=Aa(i,"afterTitle",this,t);let a=[];return a=_a(a,ya(s)),a=_a(a,ya(n)),a=_a(a,ya(o)),a}getBeforeBody(t,e){return Da(Aa(e.callbacks,"beforeBody",this,t))}getBody(t,e){const{callbacks:i}=e,s=[];return u(t,(t=>{const e={before:[],lines:[],after:[]},n=Ca(i,t);_a(e.before,ya(Aa(n,"beforeLabel",this,t))),_a(e.lines,Aa(n,"label",this,t)),_a(e.after,ya(Aa(n,"afterLabel",this,t))),s.push(e)})),s}getAfterBody(t,e){return Da(Aa(e.callbacks,"afterBody",this,t))}getFooter(t,e){const{callbacks:i}=e,s=Aa(i,"beforeFooter",this,t),n=Aa(i,"footer",this,t),o=Aa(i,"afterFooter",this,t);let a=[];return a=_a(a,ya(s)),a=_a(a,ya(n)),a=_a(a,ya(o)),a}_createItems(t){const e=this._active,i=this.chart.data,s=[],n=[],o=[];let a,r,l=[];for(a=0,r=e.length;a<r;++a)l.push(va(this.chart,e[a]));return t.filter&&(l=l.filter(((e,s,n)=>t.filter(e,s,n,i)))),t.itemSort&&(l=l.sort(((e,s)=>t.itemSort(e,s,i)))),u(l,(e=>{const i=Ca(t.callbacks,e);s.push(Aa(i,"labelColor",this,e)),n.push(Aa(i,"labelPointStyle",this,e)),o.push(Aa(i,"labelTextColor",this,e))})),this.labelColors=s,this.labelPointStyles=n,this.labelTextColors=o,this.dataPoints=l,l}update(t,e){const i=this.options.setContext(this.getContext()),s=this._active;let n,o=[];if(s.length){const t=xa[i.position].call(this,s,this._eventPosition);o=this._createItems(i),this.title=this.getTitle(o,i),this.beforeBody=this.getBeforeBody(o,i),this.body=this.getBody(o,i),this.afterBody=this.getAfterBody(o,i),this.footer=this.getFooter(o,i);const e=this._size=Ma(this,i),a=Object.assign({},t,e),r=ka(this.chart,i,a),l=Sa(i,a,r,this.chart);this.xAlign=r.xAlign,this.yAlign=r.yAlign,n={opacity:1,x:l.x,y:l.y,width:e.width,height:e.height,caretX:t.x,caretY:t.y}}else 0!==this.opacity&&(n={opacity:0});this._tooltipItems=o,this.$context=void 0,n&&this._resolveAnimations().update(this,n),t&&i.external&&i.external.call(this,{chart:this.chart,tooltip:this,replay:e})}drawCaret(t,e,i,s){const n=this.getCaretPosition(t,i,s);e.lineTo(n.x1,n.y1),e.lineTo(n.x2,n.y2),e.lineTo(n.x3,n.y3)}getCaretPosition(t,e,i){const{xAlign:s,yAlign:n}=this,{caretSize:o,cornerRadius:a}=i,{topLeft:r,topRight:l,bottomLeft:h,bottomRight:c}=vi(a),{x:d,y:u}=t,{width:f,height:g}=e;let p,m,b,x,_,y;return"center"===n?(_=u+g/2,"left"===s?(p=d,m=p-o,x=_+o,y=_-o):(p=d+f,m=p+o,x=_-o,y=_+o),b=p):(m="left"===s?d+Math.max(r,h)+o:"right"===s?d+f-Math.max(l,c)-o:this.caretX,"top"===n?(x=u,_=x-o,p=m-o,b=m+o):(x=u+g,_=x+o,p=m+o,b=m-o),y=x),{x1:p,x2:m,x3:b,y1:x,y2:_,y3:y}}drawTitle(t,e,i){const s=this.title,n=s.length;let o,a,r;if(n){const l=Di(i.rtl,this.x,this.width);for(t.x=Pa(this,i.titleAlign,i),e.textAlign=l.textAlign(i.titleAlign),e.textBaseline="middle",o=wi(i.titleFont),a=i.titleSpacing,e.fillStyle=i.titleColor,e.font=o.string,r=0;r<n;++r)e.fillText(s[r],l.x(t.x),t.y+o.lineHeight/2),t.y+=o.lineHeight+a,r+1===n&&(t.y+=i.titleMarginBottom-a)}}_drawColorBox(t,e,i,s,n){const a=this.labelColors[i],r=this.labelPointStyles[i],{boxHeight:l,boxWidth:h,boxPadding:c}=n,d=wi(n.bodyFont),u=Pa(this,"left",n),f=s.x(u),g=l<d.lineHeight?(d.lineHeight-l)/2:0,p=e.y+g;if(n.usePointStyle){const e={radius:Math.min(h,l)/2,pointStyle:r.pointStyle,rotation:r.rotation,borderWidth:1},i=s.leftForLtr(f,h)+h/2,o=p+l/2;t.strokeStyle=n.multiKeyBackground,t.fillStyle=n.multiKeyBackground,Te(t,e,i,o),t.strokeStyle=a.borderColor,t.fillStyle=a.backgroundColor,Te(t,e,i,o)}else{t.lineWidth=o(a.borderWidth)?Math.max(...Object.values(a.borderWidth)):a.borderWidth||1,t.strokeStyle=a.borderColor,t.setLineDash(a.borderDash||[]),t.lineDashOffset=a.borderDashOffset||0;const e=s.leftForLtr(f,h-c),i=s.leftForLtr(s.xPlus(f,1),h-c-2),r=vi(a.borderRadius);Object.values(r).some((t=>0!==t))?(t.beginPath(),t.fillStyle=n.multiKeyBackground,We(t,{x:e,y:p,w:h,h:l,radius:r}),t.fill(),t.stroke(),t.fillStyle=a.backgroundColor,t.beginPath(),We(t,{x:i,y:p+1,w:h-2,h:l-2,radius:r}),t.fill()):(t.fillStyle=n.multiKeyBackground,t.fillRect(e,p,h,l),t.strokeRect(e,p,h,l),t.fillStyle=a.backgroundColor,t.fillRect(i,p+1,h-2,l-2))}t.fillStyle=this.labelTextColors[i]}drawBody(t,e,i){const{body:s}=this,{bodySpacing:n,bodyAlign:o,displayColors:a,boxHeight:r,boxWidth:l,boxPadding:h}=i,c=wi(i.bodyFont);let d=c.lineHeight,f=0;const g=Di(i.rtl,this.x,this.width),p=function(i){e.fillText(i,g.x(t.x+f),t.y+d/2),t.y+=d+n},m=g.textAlign(o);let b,x,_,y,v,M,w;for(e.textAlign=o,e.textBaseline="middle",e.font=c.string,t.x=Pa(this,m,i),e.fillStyle=i.bodyColor,u(this.beforeBody,p),f=a&&"right"!==m?"center"===o?l/2+h:l+2+h:0,y=0,M=s.length;y<M;++y){for(b=s[y],x=this.labelTextColors[y],e.fillStyle=x,u(b.before,p),_=b.lines,a&&_.length&&(this._drawColorBox(e,t,y,g,i),d=Math.max(c.lineHeight,r)),v=0,w=_.length;v<w;++v)p(_[v]),d=c.lineHeight;u(b.after,p)}f=0,d=c.lineHeight,u(this.afterBody,p),t.y-=n}drawFooter(t,e,i){const s=this.footer,n=s.length;let o,a;if(n){const r=Di(i.rtl,this.x,this.width);for(t.x=Pa(this,i.footerAlign,i),t.y+=i.footerMarginTop,e.textAlign=r.textAlign(i.footerAlign),e.textBaseline="middle",o=wi(i.footerFont),e.fillStyle=i.footerColor,e.font=o.string,a=0;a<n;++a)e.fillText(s[a],r.x(t.x),t.y+o.lineHeight/2),t.y+=o.lineHeight+i.footerSpacing}}drawBackground(t,e,i,s){const{xAlign:n,yAlign:o}=this,{x:a,y:r}=t,{width:l,height:h}=i,{topLeft:c,topRight:d,bottomLeft:u,bottomRight:f}=vi(s.cornerRadius);e.fillStyle=s.backgroundColor,e.strokeStyle=s.borderColor,e.lineWidth=s.borderWidth,e.beginPath(),e.moveTo(a+c,r),"top"===o&&this.drawCaret(t,e,i,s),e.lineTo(a+l-d,r),e.quadraticCurveTo(a+l,r,a+l,r+d),"center"===o&&"right"===n&&this.drawCaret(t,e,i,s),e.lineTo(a+l,r+h-f),e.quadraticCurveTo(a+l,r+h,a+l-f,r+h),"bottom"===o&&this.drawCaret(t,e,i,s),e.lineTo(a+u,r+h),e.quadraticCurveTo(a,r+h,a,r+h-u),"center"===o&&"left"===n&&this.drawCaret(t,e,i,s),e.lineTo(a,r+c),e.quadraticCurveTo(a,r,a+c,r),e.closePath(),e.fill(),s.borderWidth>0&&e.stroke()}_updateAnimationTarget(t){const e=this.chart,i=this.$animations,s=i&&i.x,n=i&&i.y;if(s||n){const i=xa[t.position].call(this,this._active,this._eventPosition);if(!i)return;const o=this._size=Ma(this,t),a=Object.assign({},i,this._size),r=ka(e,t,a),l=Sa(t,a,r,e);s._to===l.x&&n._to===l.y||(this.xAlign=r.xAlign,this.yAlign=r.yAlign,this.width=o.width,this.height=o.height,this.caretX=i.x,this.caretY=i.y,this._resolveAnimations().update(this,l))}}_willRender(){return!!this.opacity}draw(t){const e=this.options.setContext(this.getContext());let i=this.opacity;if(!i)return;this._updateAnimationTarget(e);const s={width:this.width,height:this.height},n={x:this.x,y:this.y};i=Math.abs(i)<.001?0:i;const o=Mi(e.padding),a=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;e.enabled&&a&&(t.save(),t.globalAlpha=i,this.drawBackground(n,t,s,e),Ci(t,e.textDirection),n.y+=o.top,this.drawTitle(n,t,e),this.drawBody(n,t,e),this.drawFooter(n,t,e),Oi(t,e.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,e){const i=this._active,s=t.map((({datasetIndex:t,index:e})=>{const i=this.chart.getDatasetMeta(t);if(!i)throw new Error("Cannot find a dataset at index "+t);return{datasetIndex:t,element:i.data[e],index:e}})),n=!f(i,s),o=this._positionChanged(s,e);(n||o)&&(this._active=s,this._eventPosition=e,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,e,i=!0){if(e&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const s=this.options,n=this._active||[],o=this._getActiveElements(t,n,e,i),a=this._positionChanged(o,t),r=e||!f(o,n)||a;return r&&(this._active=o,(s.enabled||s.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,e))),r}_getActiveElements(t,e,i,s){const n=this.options;if("mouseout"===t.type)return[];if(!s)return e;const o=this.chart.getElementsAtEventForMode(t,n.mode,n,i);return n.reverse&&o.reverse(),o}_positionChanged(t,e){const{caretX:i,caretY:s,options:n}=this,o=xa[n.position].call(this,t,e);return!1!==o&&(i!==o.x||s!==o.y)}}var La={id:"tooltip",_element:Ta,positioners:xa,afterInit(t,e,i){i&&(t.tooltip=new Ta({chart:t,options:i}))},beforeUpdate(t,e,i){t.tooltip&&t.tooltip.initialize(i)},reset(t,e,i){t.tooltip&&t.tooltip.initialize(i)},afterDraw(t){const e=t.tooltip;if(e&&e._willRender()){const i={tooltip:e};if(!1===t.notifyPlugins("beforeTooltipDraw",{...i,cancelable:!0}))return;e.draw(t.ctx),t.notifyPlugins("afterTooltipDraw",i)}},afterEvent(t,e){if(t.tooltip){const i=e.replay;t.tooltip.handleEvent(e.event,i,e.inChartArea)&&(e.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(t,e)=>e.bodyFont.size,boxWidth:(t,e)=>e.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:Oa},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:t=>"filter"!==t&&"itemSort"!==t&&"external"!==t,_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]};return wn.register(Vn,zo,oo,t),wn.helpers={...Vi},wn._adapters=Dn,wn.Animation=Ss,wn.Animations=Ps,wn.animator=xt,wn.controllers=Js.controllers.items,wn.DatasetController=Vs,wn.Element=Bs,wn.elements=oo,wn.Interaction=Yi,wn.layouts=ns,wn.platforms=Ms,wn.Scale=Ks,wn.Ticks=ae,Object.assign(wn,Vn,zo,oo,t,Ms),wn.Chart=wn,"undefined"!=typeof window&&(window.Chart=wn),wn}));
//# sourceMappingURL=chart.umd.js.map
modules/login-security/css/colorbox.1722265817.css000064400000021554150755146440015433 0ustar00#wflscolorbox,#wflscboxOverlay,#wflscboxWrapper{position:absolute;top:0;left:0;z-index:9999;overflow:hidden}#wflscboxOverlay{position:fixed;width:100%;height:100%}#wflscboxMiddleLeft,#wflscboxBottomLeft{clear:left}#wflscboxContent{position:relative}#wflscboxLoadedContent{overflow:auto}#wflscboxTitle{margin:0}#wflscboxLoadingOverlay,#wflscboxLoadingGraphic{position:absolute;top:0;left:0;width:100%}#wflscboxPrevious,#wflscboxNext,#wflscboxClose,#wflscboxSlideshow{cursor:pointer}.wflscboxPhoto{float:left;margin:auto;border:0;display:block}.wflscboxIframe{width:100%;height:100%;display:block;border:0}#wflscboxOverlay{background:#777;background:-webkit-radial-gradient(rgba(120,120,120,0.8), rgba(100,100,100,0.8) 50%, #464646);background:-moz-radial-gradient(rgba(120,120,120,0.6), rgba(100,100,100,0.8) 20%, #464646)}#wflscboxContent{background:#fff;overflow:hidden;padding:0 0 8px;margin:20px;-webkit-border-radius:3px 3px 2px 2px;-moz-border-radius:3px 3px 2px 2px;border-radius:3px 3px 2px 2px;-webkit-box-shadow:0 2px 4px rgba(0,0,0,0.4);-moz-box-shadow:0 2px 4px rgba(0,0,0,0.4);box-shadow:0 2px 4px rgba(0,0,0,0.4);-webkit-background-clip:padding-box}#wflscboxError{padding:50px;border:1px solid #ccc}#wflscboxLoadedContent{margin:10px 20px 28px 20px;font-family:Arial;color:#333;-webkit-border-radius:2px 2px 0 0;-moz-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0}#wflscboxTitle{position:absolute;bottom:8px;left:5px;text-align:center;width:100%;color:#949494}#wflscboxCurrent{position:absolute;bottom:8px;left:63px;color:#949494;text-indent:-9999px}#wflscboxSlideshow{position:absolute;bottom:8px;right:35px;color:#0092ef}#wflscboxPrevious{position:absolute;bottom:5px;left:5px;background:url(../img/lightbox-controls.png) no-repeat -75px 0;width:25px;height:25px;text-indent:-9999px}#wflscboxPrevious.hover{background-position:-75px -25px}#wflscboxNext{position:absolute;bottom:5px;left:32px;background:url(../img/lightbox-controls.png) no-repeat -50px 0;width:25px;height:25px;text-indent:-9999px}#wflscboxNext.hover{background-position:-50px -25px}#wflscboxLoadingOverlay{background:url(../img/loading_background.png) no-repeat center center}#wflscboxLoadingGraphic{background:url(../img/loading.gif) no-repeat center center}#wflscboxClose{position:absolute;bottom:5px;right:5px;background:url(../img/lightbox-controls.png) no-repeat -25px 0;width:25px;height:25px;text-indent:-9999px}#wflscboxClose.hover{background-position:-25px -25px}#wflscolorbox.wfls-modal ul,#wflscolorbox.wfls-modal li{padding:0;margin:0}#wflscolorbox.wfls-modal #wflscboxContent{padding:0}#wflscolorbox.wfls-modal #wflscboxLoadedContent{margin:0}#wflscolorbox.wfls-modal .wfls-modal-success{overflow:auto;background-color:#00709e}#wflscolorbox.wfls-modal .wfls-modal-success .wfls-model-success-wrapper{margin:0.25rem;background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA5MS42NSA3MC43OSI+PHBhdGggZD0iTTkwLjA4LDguNzMsODIuOTEsMS41N2E1LjE5LDUuMTksMCwwLDAtNy40MywwTDMzLjMxLDQzLjc0LDE2LjE2LDI2LjU5YTUuMiw1LjIsMCwwLDAtNy40MywwTDEuNTcsMzMuNzdhNS4xOSw1LjE5LDAsMCwwLDAsNy40M2wyOCwyOGE1LjIsNS4yLDAsMCwwLDcuNDMsMEw5MC4wOCwxNi4xN2E1LjE5LDUuMTksMCwwLDAsMC03LjQzWm0wLDAiIGZpbGw9IiMwMDdjYWMiLz48L3N2Zz4=");background-position:top center;background-repeat:no-repeat}#wflscolorbox.wfls-modal .wfls-modal-header{min-height:44px;padding:1rem;width:100%;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;position:relative;border-bottom:1px solid #d9d9d9}#wflscolorbox.wfls-modal .wfls-modal-header .wfls-modal-header-content{max-width:75%}#wflscolorbox.wfls-modal .wfls-modal-header .wfls-modal-header-content .wfls-modal-title{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:0.95rem;width:100%;transition:color 0.2s ease-in}#wflscolorbox.wfls-modal .wfls-modal-header .wfls-modal-header-content .wfls-modal-subtitle{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;margin-top:.125rem;margin-bottom:.125rem;font-size:.575rem;color:#4f748e}#wflscolorbox.wfls-modal .wfls-modal-header .wfls-modal-header-action{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-end;justify-content:flex-end}#wflscolorbox.wfls-modal .wfls-modal-header .wfls-modal-header-action .wfls-modal-header-action-close a{color:#525355}#wflscolorbox.wfls-modal .wfls-modal-success .wfls-modal-header{border-bottom:0px}#wflscolorbox.wfls-modal .wfls-modal-success .wfls-modal-header .wfls-modal-header-content{max-width:100%;width:100%;padding-top:1rem}#wflscolorbox.wfls-modal .wfls-modal-success .wfls-modal-header .wfls-modal-header-content .wfls-modal-title{font-size:1.3125rem;font-weight:300;line-height:1.5;text-align:center;color:#ffffff}#wflscolorbox.wfls-modal .wfls-modal-content{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;padding:1rem}#wflscolorbox.wfls-modal .wfls-modal-content>*:first-child{margin-top:0}#wflscolorbox.wfls-modal .wfls-modal-content select,#wflscolorbox.wfls-modal .wfls-modal-content select option,#wflscolorbox.wfls-modal .wfls-modal-content .wflsselect2-container--default{font-size:0.7rem;font-weight:bold}@media (min-width: 768px){#wflscolorbox.wfls-modal .wfls-modal-content select,#wflscolorbox.wfls-modal .wfls-modal-content select option,#wflscolorbox.wfls-modal .wfls-modal-content .wflsselect2-container--default{font-size:0.8rem}}@media (min-width: 992px){#wflscolorbox.wfls-modal .wfls-modal-content select,#wflscolorbox.wfls-modal .wfls-modal-content select option,#wflscolorbox.wfls-modal .wfls-modal-content .wflsselect2-container--default{font-size:0.9rem}}#wflscolorbox.wfls-modal .wfls-modal-content .wfls-option-select-option,#wflscolorbox.wfls-modal .wfls-modal-content .wflsselect2-container--default,#wflscolorbox.wfls-modal .wfls-modal-content .wflsselect2-container--default .wflsselect2-selection--single{text-align:left;height:40px;border-radius:0;border:0;background-color:#ffffff;box-shadow:1px 1px 1px 2px rgba(215,215,215,0.35)}#wflscolorbox.wfls-modal .wfls-modal-content .wfls-option-select-option .wflsselect2-selection__rendered,#wflscolorbox.wfls-modal .wfls-modal-content .wflsselect2-container--default .wflsselect2-selection__rendered,#wflscolorbox.wfls-modal .wfls-modal-content .wflsselect2-container--default .wflsselect2-selection--single .wflsselect2-selection__rendered{color:#333;line-height:40px}#wflscolorbox.wfls-modal .wfls-modal-content .wfls-option-select-option .wflsselect2-selection__arrow,#wflscolorbox.wfls-modal .wfls-modal-content .wflsselect2-container--default .wflsselect2-selection__arrow,#wflscolorbox.wfls-modal .wfls-modal-content .wflsselect2-container--default .wflsselect2-selection--single .wflsselect2-selection__arrow{height:38px}#wflscolorbox.wfls-modal .wfls-modal-content .wfls-option-select-option.wflsselect2-container--disabled .wflsselect2-selection__rendered,#wflscolorbox.wfls-modal .wfls-modal-content .wflsselect2-container--default.wflsselect2-container--disabled .wflsselect2-selection__rendered,#wflscolorbox.wfls-modal .wfls-modal-content .wflsselect2-container--default .wflsselect2-selection--single.wflsselect2-container--disabled .wflsselect2-selection__rendered{color:#aaa}#wflscolorbox.wfls-modal .wfls-modal-content .wflsselect2-container--default .wflsselect2-selection--single .wflsselect2-selection__arrow b{border-color:#333 transparent transparent}#wflscolorbox.wfls-modal .wfls-modal-content .wflsselect2-container--default.wflsselect2-container--open .wflsselect2-selection--single .wflsselect2-selection__arrow b{border-color:transparent transparent #333}#wflscolorbox.wfls-modal .wfls-modal-success .wfls-modal-content{text-align:center;color:#ffffff;padding:0 1.5rem 2rem 1.5rem}#wflscolorbox.wfls-modal .wfls-modal-success .wfls-modal-content a{text-decoration:underline;color:#fff}#wflscolorbox.wfls-modal .wfls-modal-footer{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;min-height:44px;padding:1rem;width:100%;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;position:relative;background-color:#f1f1f1;border-top:1px solid #d9d9d9}#wflscolorbox.wfls-modal .wfls-modal-success .wfls-modal-footer{background-color:#ccc;border-top:1px solid #bfbfbf}#wflscolorbox,#wflscolorbox:before,#wflscolorbox:after{box-sizing:content-box}#wflscolorbox h1,#wflscolorbox h2,#wflscolorbox h3,#wflscolorbox h4,#wflscolorbox h5,#wflscolorbox h6{display:block;font-weight:600}#wflscolorbox h1{font-size:2em;margin:.67em 0}#wflscolorbox h2,#wflscolorbox h3{font-size:1.3em;margin:1em 0}#wflscolorbox h1,#wflscolorbox h2,#wflscolorbox h3{color:#23282d}#wflscolorbox p{font-size:13px;line-height:1.5;margin:1em 0}
modules/login-security/css/jquery-ui.structure.min.1722265817.css000064400000034654150755146440020364 0ustar00/*! jQuery UI - v1.11.4 - 2018-06-29
* http://jqueryui.com
* Copyright jQuery Foundation and other contributors; Licensed MIT */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default !important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;min-height:0;font-size:100%}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-button{display:inline-block;overflow:hidden;position:relative;text-decoration:none;cursor:pointer}.ui-selectmenu-button span.ui-icon{right:0.5em;left:auto;margin-top:-8px;position:absolute;top:50%}.ui-selectmenu-button span.ui-selectmenu-text{text-align:left;padding:0.4em 2.1em 0.4em 1em;display:block;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}
modules/login-security/css/login.1722265817.css000064400000005141150755146440014706 0ustar00#wfls-prompt-overlay{position:absolute;top:0px;right:0px;bottom:0px;left:0px;background-color:#fff;padding:26px 24px 46px;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:stretch;justify-content:stretch}.woocommerce #wfls-prompt-overlay{padding:0;display:block}#wfls-prompt-wrapper{-webkit-flex-grow:1;flex-grow:1;width:100%}.login form .wfls-textarea{font-size:1rem;width:100%;padding:3px;margin:2px 6px 16px 0;background:#fbfbfb;height:150px}.login form .wfls-remember-device-wrapper{font-weight:400;float:left;margin-bottom:0}.login form .wfls-remember-device-wrapper label{font-size:12px;line-height:19px}.wfls-2fa-code-help{text-decoration:none}.wfls-registration-captcha-contact{text-decoration:underline}.Zebra_Tooltip{background:0 0;position:absolute;z-index:8000}.Zebra_Tooltip .Zebra_Tooltip_Message{background:#000;border-radius:5px;box-shadow:0 0 6px rgba(0,0,0,0.6);color:#fff;font-size:12px;font-family:Tahoma,Arial,Helvetica,sans-serif;line-height:1.4;*margin-right:0;max-width:250px;padding:10px;position:relative;_width:expression(document.body.clientWidth > 250px ? '250px': 'auto');border:0 solid #000}.Zebra_Tooltip .Zebra_Tooltip_Message.Zebra_Tooltip_Has_Close{padding-right:23px}.Zebra_Tooltip .Zebra_Tooltip_Arrow{position:absolute;width:20px;height:10px;overflow:hidden}.Zebra_Tooltip .Zebra_Tooltip_Arrow.Zebra_Tooltip_Arrow_Bottom{bottom:0}.Zebra_Tooltip .Zebra_Tooltip_Arrow.Zebra_Tooltip_Arrow_Bottom div{top:0;border-color:#000 transparent transparent;_border-bottom-color:pink}.Zebra_Tooltip .Zebra_Tooltip_Arrow.Zebra_Tooltip_Arrow_Bottom div.Zebra_Tooltip_Arrow_Border{border-color:#000 transparent transparent}.Zebra_Tooltip .Zebra_Tooltip_Arrow.Zebra_Tooltip_Arrow_Top{top:0}.Zebra_Tooltip .Zebra_Tooltip_Arrow.Zebra_Tooltip_Arrow_Top div{bottom:0;border-color:transparent transparent #000;_border-top-color:pink}.Zebra_Tooltip .Zebra_Tooltip_Arrow.Zebra_Tooltip_Arrow_Top div.Zebra_Tooltip_Arrow_Border{border-color:transparent transparent #000}.Zebra_Tooltip .Zebra_Tooltip_Arrow div{position:absolute;border-style:solid;border-width:10px;width:0;height:0;left:0;_border-left-color:pink;_border-right-color:pink;_filter:chroma(color=pink)}.Zebra_Tooltip .Zebra_Tooltip_Arrow div.Zebra_Tooltip_Arrow_Border{border-width:10px;box-shadow:0 0 6px rgba(0,0,0,0.6);left:0}.Zebra_Tooltip .Zebra_Tooltip_Close{color:#fff;font-family:Arial,sans-serif;font-size:18px;line-height:1;padding:0 4px;position:absolute;right:2px;text-decoration:none;top:2px}.Zebra_Tooltip .Zebra_Tooltip_Close:hover{color:#000;background:#c2d076;border-radius:5px}.grecaptcha-badge{z-index:65535}
modules/login-security/css/woocommerce-account.1722265817.css000064400000020516150755146440017552 0ustar00.woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--wordfence-2fa a::before{background-color:currentColor;mask-image:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+Cjxzdmcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDMyIDMyIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zOnNlcmlmPSJodHRwOi8vd3d3LnNlcmlmLmNvbS8iIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MS40MTQyMTsiPgogICAgPGc+CiAgICAgICAgPHBhdGggZD0iTTE2LDguNTlMMTcuNTksMTIuMDhMMTcuNiwxMi4xMUwxNy4wNiwxMi4xMUwxNy4wNiwxMi4xMkMxNy4wNywxMi4xNyAxNy4wOCwxMi4yMiAxNy4wOCwxMi4yOEMxNy4wOCwxMi40NSAxNy4wNCwxMi42MSAxNi45NiwxMi43NUMxNi45MywxMi44MiAxNi44OCwxMi44OCAxNi44NCwxMi45M0MxNi44NCwxMi45MyAxNi43NywxMy42OSAxNi43OCwxNS4xMUMxNi43OCwxNS45NiAxNi44MywxNy4yMSAxNi45MywxOC41OEMxOC41OSwxOC42NyAyMC4xMywxOC44NiAyMS41NSwxOS4xMUwyMS41NSwxMy4xOUwyMS4xNCwxMy4xOUwyMi4yLDEwLjg3TDIzLjIyLDEzLjJMMjIuODEsMTMuMkwyMi44MSwxOS4zNUMyNC4zMiwxOS42NiAyNS42NiwyMC4wNCAyNi44MiwyMC40MkwyNi44MiwxNS4yN0wyNi40MSwxNS4yN0wyNy40NywxMi45NUwyOC40OSwxNS4yOEwyOC4wOCwxNS4yOEwyOC4wOCwyMC44NkMyOS40NSwyMS4zNyAzMC40OCwyMS44NSAzMS4xMSwyMi4xN0MzMS45LDE0LjcyIDMwLjI4LDguMjYgMzAuMjgsOC4yNkMyMi43MSw4LjAxIDE2LDQgMTYsNEwxNiw4LjU5WiIgc3R5bGU9ImZpbGw6cmdiKDMzLDE0MSwxOTMpO2ZpbGwtcnVsZTpub256ZXJvOyIvPgogICAgICAgIDxwYXRoIGQ9Ik0yOC4wNCwyMi4xOEwyOC4wNCwyOEwyOS44MSwyOEMzMC4wNiwyNy4xOSAzMC4yNywyNi4zNiAzMC40NSwyNS41NUMzMC42OCwyNC43NCAzMC44MSwyNC4wNyAzMC45LDIzLjU5QzMwLjksMjMuNTkgMzAuOSwyMy41NyAzMC45LDIzLjU2QzMwLjkxLDIzLjUzIDMwLjkxLDIzLjUgMzAuOTEsMjMuNDdDMzAuNDcsMjMuMjMgMjkuNDksMjIuNzMgMjguMDQsMjIuMThaIiBzdHlsZT0iZmlsbDpyZ2IoMzMsMTQxLDE5Myk7ZmlsbC1ydWxlOm5vbnplcm87Ii8+CiAgICAgICAgPHBhdGggZD0iTTIyLjc5LDIwLjYxTDIyLjc5LDI4TDI2LjgsMjhMMjYuOCwyMS43MkMyNS42NiwyMS4zMyAyNC4zMSwyMC45NCAyMi43OSwyMC42MVoiIHN0eWxlPSJmaWxsOnJnYigzMywxNDEsMTkzKTtmaWxsLXJ1bGU6bm9uemVybzsiLz4KICAgICAgICA8cGF0aCBkPSJNMjEuNTQsMjhMMjEuNTQsMjAuMzZDMjAuMTYsMjAuMTEgMTguNjQsMTkuOTEgMTcuMDIsMTkuODFDMTcuMDIsMTkuODIgMTcuMDIsMTkuODIgMTcuMDIsMTkuODNDMTcuMDIsMTkuODYgMTcuMTMsMjAuNjggMTcuMTQsMjAuODFDMTcuMzksMjIuNyAxNy45LDI1LjY3IDE4LjQzLDI3Ljk5TDE4LjQsMjcuOTlMMjEuNTQsMjcuOTlMMjEuNTQsMjhaIiBzdHlsZT0iZmlsbDpyZ2IoMzMsMTQxLDE5Myk7ZmlsbC1ydWxlOm5vbnplcm87Ii8+CiAgICAgICAgPHBhdGggZD0iTTEzLjU3LDI4QzE0LjA5LDI1LjY4IDE0LjYsMjIuNzEgMTQuODYsMjAuODJMMTQuODUsMjAuODJMMTQuODYsMjAuODJDMTQuODgsMjAuNjggMTQuOTgsMTkuODcgMTQuOTgsMTkuODRDMTQuOTgsMTkuODMgMTQuOTgsMTkuODMgMTQuOTgsMTkuODJDMTMuMzUsMTkuOTIgMTEuODMsMjAuMTIgMTAuNDYsMjAuMzdMMTAuNDYsMjhMMTMuNTksMjhMMTMuNTcsMjhaIiBzdHlsZT0iZmlsbDpyZ2IoMzMsMTQxLDE5Myk7ZmlsbC1ydWxlOm5vbnplcm87Ii8+CiAgICAgICAgPHBhdGggZD0iTTMuOTYsMjAuODZMMy45NiwxNS4yOEwzLjU1LDE1LjI4TDQuNTcsMTIuOTVMNS42MywxNS4yN0w1LjIyLDE1LjI3TDUuMjIsMjAuNDJDNi4zOCwyMC4wNCA3LjcyLDE5LjY3IDkuMjMsMTkuMzVMOS4yMywxMy4yTDguODIsMTMuMkw5Ljg0LDEwLjg3TDEwLjksMTMuMTlMMTAuNDksMTMuMTlMMTAuNDksMTkuMTFDMTEuOTEsMTguODYgMTMuNDUsMTguNjcgMTUuMTEsMTguNThDMTUuMjEsMTcuMjEgMTUuMjYsMTUuOTYgMTUuMjYsMTUuMTFDMTUuMjcsMTMuNyAxNS4yLDEyLjkzIDE1LjIsMTIuOTNDMTUuMTUsMTIuODcgMTUuMTEsMTIuODEgMTUuMDgsMTIuNzVDMTUsMTIuNjEgMTQuOTYsMTIuNDUgMTQuOTYsMTIuMjhDMTQuOTYsMTIuMjMgMTQuOTcsMTIuMTcgMTQuOTgsMTIuMTJMMTQuOTgsMTIuMTFMMTQuNDQsMTIuMTFMMTQuNDUsMTIuMDhMMTYsOC41OUwxNiw0QzE2LDQgOS4yOSw4LjAxIDEuNzUsOC4yNkMxLjc1LDguMjYgMC4xMywxNC43MiAwLjkyLDIyLjE3QzEuNTYsMjEuODUgMi41OCwyMS4zNiAzLjk2LDIwLjg2WiIgc3R5bGU9ImZpbGw6cmdiKDMzLDE0MSwxOTMpO2ZpbGwtcnVsZTpub256ZXJvOyIvPgogICAgICAgIDxwYXRoIGQ9Ik01LjIsMjEuNzJMNS4yLDI4TDkuMjEsMjhMOS4yMSwyMC42MUM3LjY0LDIwLjk1IDYuMjgsMjEuMzUgNS4yLDIxLjcyWiIgc3R5bGU9ImZpbGw6cmdiKDMzLDE0MSwxOTMpO2ZpbGwtcnVsZTpub256ZXJvOyIvPgogICAgICAgIDxwYXRoIGQ9Ik0xLjA5LDIzLjQ3QzEuMDgsMjMuNDcgMS4wOCwyMy40NyAxLjA5LDIzLjQ3QzEuMDksMjMuNSAxLjEsMjMuNTMgMS4xLDIzLjU2QzEuMSwyMy41NyAxLjEsMjMuNTggMS4xLDIzLjU5QzEuMTgsMjQuMDcgMS4zMiwyNC43NCAxLjU1LDI1LjU1QzEuNzMsMjYuMzYgMS45NSwyNy4xOSAyLjE5LDI4TDMuOTUsMjhMMy45NSwyMi4xN0MyLjUxLDIyLjczIDEuNTMsMjMuMjMgMS4wOSwyMy40N1oiIHN0eWxlPSJmaWxsOnJnYigzMywxNDEsMTkzKTtmaWxsLXJ1bGU6bm9uemVybzsiLz4KICAgIDwvZz4KPC9zdmc+Cg==");-webkit-mask-image:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+Cjxzdmcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDMyIDMyIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zOnNlcmlmPSJodHRwOi8vd3d3LnNlcmlmLmNvbS8iIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MS40MTQyMTsiPgogICAgPGc+CiAgICAgICAgPHBhdGggZD0iTTE2LDguNTlMMTcuNTksMTIuMDhMMTcuNiwxMi4xMUwxNy4wNiwxMi4xMUwxNy4wNiwxMi4xMkMxNy4wNywxMi4xNyAxNy4wOCwxMi4yMiAxNy4wOCwxMi4yOEMxNy4wOCwxMi40NSAxNy4wNCwxMi42MSAxNi45NiwxMi43NUMxNi45MywxMi44MiAxNi44OCwxMi44OCAxNi44NCwxMi45M0MxNi44NCwxMi45MyAxNi43NywxMy42OSAxNi43OCwxNS4xMUMxNi43OCwxNS45NiAxNi44MywxNy4yMSAxNi45MywxOC41OEMxOC41OSwxOC42NyAyMC4xMywxOC44NiAyMS41NSwxOS4xMUwyMS41NSwxMy4xOUwyMS4xNCwxMy4xOUwyMi4yLDEwLjg3TDIzLjIyLDEzLjJMMjIuODEsMTMuMkwyMi44MSwxOS4zNUMyNC4zMiwxOS42NiAyNS42NiwyMC4wNCAyNi44MiwyMC40MkwyNi44MiwxNS4yN0wyNi40MSwxNS4yN0wyNy40NywxMi45NUwyOC40OSwxNS4yOEwyOC4wOCwxNS4yOEwyOC4wOCwyMC44NkMyOS40NSwyMS4zNyAzMC40OCwyMS44NSAzMS4xMSwyMi4xN0MzMS45LDE0LjcyIDMwLjI4LDguMjYgMzAuMjgsOC4yNkMyMi43MSw4LjAxIDE2LDQgMTYsNEwxNiw4LjU5WiIgc3R5bGU9ImZpbGw6cmdiKDMzLDE0MSwxOTMpO2ZpbGwtcnVsZTpub256ZXJvOyIvPgogICAgICAgIDxwYXRoIGQ9Ik0yOC4wNCwyMi4xOEwyOC4wNCwyOEwyOS44MSwyOEMzMC4wNiwyNy4xOSAzMC4yNywyNi4zNiAzMC40NSwyNS41NUMzMC42OCwyNC43NCAzMC44MSwyNC4wNyAzMC45LDIzLjU5QzMwLjksMjMuNTkgMzAuOSwyMy41NyAzMC45LDIzLjU2QzMwLjkxLDIzLjUzIDMwLjkxLDIzLjUgMzAuOTEsMjMuNDdDMzAuNDcsMjMuMjMgMjkuNDksMjIuNzMgMjguMDQsMjIuMThaIiBzdHlsZT0iZmlsbDpyZ2IoMzMsMTQxLDE5Myk7ZmlsbC1ydWxlOm5vbnplcm87Ii8+CiAgICAgICAgPHBhdGggZD0iTTIyLjc5LDIwLjYxTDIyLjc5LDI4TDI2LjgsMjhMMjYuOCwyMS43MkMyNS42NiwyMS4zMyAyNC4zMSwyMC45NCAyMi43OSwyMC42MVoiIHN0eWxlPSJmaWxsOnJnYigzMywxNDEsMTkzKTtmaWxsLXJ1bGU6bm9uemVybzsiLz4KICAgICAgICA8cGF0aCBkPSJNMjEuNTQsMjhMMjEuNTQsMjAuMzZDMjAuMTYsMjAuMTEgMTguNjQsMTkuOTEgMTcuMDIsMTkuODFDMTcuMDIsMTkuODIgMTcuMDIsMTkuODIgMTcuMDIsMTkuODNDMTcuMDIsMTkuODYgMTcuMTMsMjAuNjggMTcuMTQsMjAuODFDMTcuMzksMjIuNyAxNy45LDI1LjY3IDE4LjQzLDI3Ljk5TDE4LjQsMjcuOTlMMjEuNTQsMjcuOTlMMjEuNTQsMjhaIiBzdHlsZT0iZmlsbDpyZ2IoMzMsMTQxLDE5Myk7ZmlsbC1ydWxlOm5vbnplcm87Ii8+CiAgICAgICAgPHBhdGggZD0iTTEzLjU3LDI4QzE0LjA5LDI1LjY4IDE0LjYsMjIuNzEgMTQuODYsMjAuODJMMTQuODUsMjAuODJMMTQuODYsMjAuODJDMTQuODgsMjAuNjggMTQuOTgsMTkuODcgMTQuOTgsMTkuODRDMTQuOTgsMTkuODMgMTQuOTgsMTkuODMgMTQuOTgsMTkuODJDMTMuMzUsMTkuOTIgMTEuODMsMjAuMTIgMTAuNDYsMjAuMzdMMTAuNDYsMjhMMTMuNTksMjhMMTMuNTcsMjhaIiBzdHlsZT0iZmlsbDpyZ2IoMzMsMTQxLDE5Myk7ZmlsbC1ydWxlOm5vbnplcm87Ii8+CiAgICAgICAgPHBhdGggZD0iTTMuOTYsMjAuODZMMy45NiwxNS4yOEwzLjU1LDE1LjI4TDQuNTcsMTIuOTVMNS42MywxNS4yN0w1LjIyLDE1LjI3TDUuMjIsMjAuNDJDNi4zOCwyMC4wNCA3LjcyLDE5LjY3IDkuMjMsMTkuMzVMOS4yMywxMy4yTDguODIsMTMuMkw5Ljg0LDEwLjg3TDEwLjksMTMuMTlMMTAuNDksMTMuMTlMMTAuNDksMTkuMTFDMTEuOTEsMTguODYgMTMuNDUsMTguNjcgMTUuMTEsMTguNThDMTUuMjEsMTcuMjEgMTUuMjYsMTUuOTYgMTUuMjYsMTUuMTFDMTUuMjcsMTMuNyAxNS4yLDEyLjkzIDE1LjIsMTIuOTNDMTUuMTUsMTIuODcgMTUuMTEsMTIuODEgMTUuMDgsMTIuNzVDMTUsMTIuNjEgMTQuOTYsMTIuNDUgMTQuOTYsMTIuMjhDMTQuOTYsMTIuMjMgMTQuOTcsMTIuMTcgMTQuOTgsMTIuMTJMMTQuOTgsMTIuMTFMMTQuNDQsMTIuMTFMMTQuNDUsMTIuMDhMMTYsOC41OUwxNiw0QzE2LDQgOS4yOSw4LjAxIDEuNzUsOC4yNkMxLjc1LDguMjYgMC4xMywxNC43MiAwLjkyLDIyLjE3QzEuNTYsMjEuODUgMi41OCwyMS4zNiAzLjk2LDIwLjg2WiIgc3R5bGU9ImZpbGw6cmdiKDMzLDE0MSwxOTMpO2ZpbGwtcnVsZTpub256ZXJvOyIvPgogICAgICAgIDxwYXRoIGQ9Ik01LjIsMjEuNzJMNS4yLDI4TDkuMjEsMjhMOS4yMSwyMC42MUM3LjY0LDIwLjk1IDYuMjgsMjEuMzUgNS4yLDIxLjcyWiIgc3R5bGU9ImZpbGw6cmdiKDMzLDE0MSwxOTMpO2ZpbGwtcnVsZTpub256ZXJvOyIvPgogICAgICAgIDxwYXRoIGQ9Ik0xLjA5LDIzLjQ3QzEuMDgsMjMuNDcgMS4wOCwyMy40NyAxLjA5LDIzLjQ3QzEuMDksMjMuNSAxLjEsMjMuNTMgMS4xLDIzLjU2QzEuMSwyMy41NyAxLjEsMjMuNTggMS4xLDIzLjU5QzEuMTgsMjQuMDcgMS4zMiwyNC43NCAxLjU1LDI1LjU1QzEuNzMsMjYuMzYgMS45NSwyNy4xOSAyLjE5LDI4TDMuOTUsMjhMMy45NSwyMi4xN0MyLjUxLDIyLjczIDEuNTMsMjMuMjMgMS4wOSwyMy40N1oiIHN0eWxlPSJmaWxsOnJnYigzMywxNDEsMTkzKTtmaWxsLXJ1bGU6bm9uemVybzsiLz4KICAgIDwvZz4KPC9zdmc+Cg==");mask-position:center;-webkit-mask-position:center;mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat}
modules/login-security/css/admin.1722265817.css000064400000522337150755146440014701 0ustar00.wfls-clearfix:before,.wfls-clearfix:after{content:" ";display:table}.wfls-clearfix:after{clear:both}.wfls-btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;text-transform:uppercase;padding:.4rem 1rem;font-size:.875rem;line-height:1.3125rem;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}@media (min-width: 768px){.wfls-btn{padding:.5rem 1.25rem;font-size:.875rem;line-height:1.3125rem;border-radius:4px}}.wfls-btn:focus,.wfls-btn.wfls-focus,.wfls-btn:active:focus,.wfls-btn:active.wfls-focus,.wfls-btn.wfls-active:focus,.wfls-btn.wfls-active.wfls-focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.wfls-btn:hover,.wfls-btn:focus,.wfls-btn.wfls-focus{color:#00709e;text-decoration:none !important}.wfls-btn:active,.wfls-btn.wfls-active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.wfls-btn.wfls-disabled,.wfls-btn[disabled],.wfls-btn[readonly],fieldset[disabled] .wfls-btn{cursor:not-allowed;-webkit-box-shadow:none;box-shadow:none}a.wfls-btn{text-decoration:none}a.wfls-btn.wfls-disabled,fieldset[disabled] a.wfls-btn{cursor:not-allowed;pointer-events:none}.wfls-btn-default{color:#00709e;background-color:#fff;border-color:#00709e}.wfls-btn-default:focus,.wfls-btn-default.focus{color:#00709e;background-color:#e6e6e6;border-color:#00161f}.wfls-btn-default:hover{color:#00709e;background-color:#e6e6e6;border-color:#004561}.wfls-btn-default:active,.wfls-btn-default.active,.wfls-open>.wfls-btn-default.wfls-dropdown-toggle{color:#00709e;background-color:#e6e6e6;border-color:#004561}.wfls-btn-default:active:hover,.wfls-btn-default:active:focus,.wfls-btn-default:active.focus,.wfls-btn-default.active:hover,.wfls-btn-default.active:focus,.wfls-btn-default.active.focus,.wfls-open>.wfls-btn-default.wfls-dropdown-toggle:hover,.wfls-open>.wfls-btn-default.wfls-dropdown-toggle:focus,.wfls-open>.wfls-btn-default.wfls-dropdown-toggle.focus{color:#00709e;background-color:#d4d4d4;border-color:#00161f}.wfls-btn-default:active,.wfls-btn-default.wfls-active,.wfls-open>.wfls-btn-default.wfls-dropdown-toggle{background-image:none}.wfls-btn-default.wfls-disabled,.wfls-btn-default[disabled],.wfls-btn-default[readonly],fieldset[disabled] .wfls-btn-default{color:#777;background-color:#fff;border-color:#e2e2e2;cursor:not-allowed;opacity:0.75}.wfls-btn-default.wfls-disabled:hover,.wfls-btn-default.wfls-disabled:focus,.wfls-btn-default.wfls-disabled.wfls-focus,.wfls-btn-default[disabled]:hover,.wfls-btn-default[disabled]:focus,.wfls-btn-default[disabled].wfls-focus,.wfls-btn-default[readonly]:hover,.wfls-btn-default[readonly]:focus,.wfls-btn-default[readonly].wfls-focus,fieldset[disabled] .wfls-btn-default:hover,fieldset[disabled] .wfls-btn-default:focus,fieldset[disabled] .wfls-btn-default.wfls-focus{background-color:#fff;border-color:#00709e}.wfls-btn-default .wfls-badge{color:#fff;background-color:#00709e}.wfls-btn-primary{color:#fff;background-color:#00709e;border-color:#005e85}.wfls-btn-primary:focus,.wfls-btn-primary.focus{color:#fff;background-color:#004c6b;border-color:#000405}.wfls-btn-primary:hover{color:#fff;background-color:#004c6b;border-color:#003347}.wfls-btn-primary:active,.wfls-btn-primary.active,.wfls-open>.wfls-btn-primary.wfls-dropdown-toggle{color:#fff;background-color:#004c6b;border-color:#003347}.wfls-btn-primary:active:hover,.wfls-btn-primary:active:focus,.wfls-btn-primary:active.focus,.wfls-btn-primary.active:hover,.wfls-btn-primary.active:focus,.wfls-btn-primary.active.focus,.wfls-open>.wfls-btn-primary.wfls-dropdown-toggle:hover,.wfls-open>.wfls-btn-primary.wfls-dropdown-toggle:focus,.wfls-open>.wfls-btn-primary.wfls-dropdown-toggle.focus{color:#fff;background-color:#003347;border-color:#000405}.wfls-btn-primary:active,.wfls-btn-primary.wfls-active,.wfls-open>.wfls-btn-primary.wfls-dropdown-toggle{background-image:none}.wfls-btn-primary.wfls-disabled,.wfls-btn-primary[disabled],.wfls-btn-primary[readonly],fieldset[disabled] .wfls-btn-primary{color:#fff;background-color:#59a2c0;border-color:#5996b0;cursor:not-allowed;opacity:0.75}.wfls-btn-primary.wfls-disabled:hover,.wfls-btn-primary.wfls-disabled:focus,.wfls-btn-primary.wfls-disabled.wfls-focus,.wfls-btn-primary[disabled]:hover,.wfls-btn-primary[disabled]:focus,.wfls-btn-primary[disabled].wfls-focus,.wfls-btn-primary[readonly]:hover,.wfls-btn-primary[readonly]:focus,.wfls-btn-primary[readonly].wfls-focus,fieldset[disabled] .wfls-btn-primary:hover,fieldset[disabled] .wfls-btn-primary:focus,fieldset[disabled] .wfls-btn-primary.wfls-focus{background-color:#00709e;border-color:#005e85}.wfls-btn-primary .wfls-badge{color:#00709e;background-color:#fff}.wfls-btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.wfls-btn-success:focus,.wfls-btn-success.focus{color:#fff;background-color:#449d44;border-color:#255625}.wfls-btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.wfls-btn-success:active,.wfls-btn-success.active,.wfls-open>.wfls-btn-success.wfls-dropdown-toggle{color:#fff;background-color:#449d44;border-color:#398439}.wfls-btn-success:active:hover,.wfls-btn-success:active:focus,.wfls-btn-success:active.focus,.wfls-btn-success.active:hover,.wfls-btn-success.active:focus,.wfls-btn-success.active.focus,.wfls-open>.wfls-btn-success.wfls-dropdown-toggle:hover,.wfls-open>.wfls-btn-success.wfls-dropdown-toggle:focus,.wfls-open>.wfls-btn-success.wfls-dropdown-toggle.focus{color:#fff;background-color:#398439;border-color:#255625}.wfls-btn-success:active,.wfls-btn-success.wfls-active,.wfls-open>.wfls-btn-success.wfls-dropdown-toggle{background-image:none}.wfls-btn-success.wfls-disabled,.wfls-btn-success[disabled],.wfls-btn-success[readonly],fieldset[disabled] .wfls-btn-success{color:#fff;background-color:#95d195;border-color:#8bca8b;cursor:not-allowed;opacity:0.75}.wfls-btn-success.wfls-disabled:hover,.wfls-btn-success.wfls-disabled:focus,.wfls-btn-success.wfls-disabled.wfls-focus,.wfls-btn-success[disabled]:hover,.wfls-btn-success[disabled]:focus,.wfls-btn-success[disabled].wfls-focus,.wfls-btn-success[readonly]:hover,.wfls-btn-success[readonly]:focus,.wfls-btn-success[readonly].wfls-focus,fieldset[disabled] .wfls-btn-success:hover,fieldset[disabled] .wfls-btn-success:focus,fieldset[disabled] .wfls-btn-success.wfls-focus{background-color:#5cb85c;border-color:#4cae4c}.wfls-btn-success .wfls-badge{color:#5cb85c;background-color:#fff}.wfls-btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.wfls-btn-info:focus,.wfls-btn-info.focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.wfls-btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.wfls-btn-info:active,.wfls-btn-info.active,.wfls-open>.wfls-btn-info.wfls-dropdown-toggle{color:#fff;background-color:#31b0d5;border-color:#269abc}.wfls-btn-info:active:hover,.wfls-btn-info:active:focus,.wfls-btn-info:active.focus,.wfls-btn-info.active:hover,.wfls-btn-info.active:focus,.wfls-btn-info.active.focus,.wfls-open>.wfls-btn-info.wfls-dropdown-toggle:hover,.wfls-open>.wfls-btn-info.wfls-dropdown-toggle:focus,.wfls-open>.wfls-btn-info.wfls-dropdown-toggle.focus{color:#fff;background-color:#269abc;border-color:#1b6d85}.wfls-btn-info:active,.wfls-btn-info.wfls-active,.wfls-open>.wfls-btn-info.wfls-dropdown-toggle{background-image:none}.wfls-btn-info.wfls-disabled,.wfls-btn-info[disabled],.wfls-btn-info[readonly],fieldset[disabled] .wfls-btn-info{color:#fff;background-color:#94d6ea;border-color:#87d1e7;cursor:not-allowed;opacity:0.75}.wfls-btn-info.wfls-disabled:hover,.wfls-btn-info.wfls-disabled:focus,.wfls-btn-info.wfls-disabled.wfls-focus,.wfls-btn-info[disabled]:hover,.wfls-btn-info[disabled]:focus,.wfls-btn-info[disabled].wfls-focus,.wfls-btn-info[readonly]:hover,.wfls-btn-info[readonly]:focus,.wfls-btn-info[readonly].wfls-focus,fieldset[disabled] .wfls-btn-info:hover,fieldset[disabled] .wfls-btn-info:focus,fieldset[disabled] .wfls-btn-info.wfls-focus{background-color:#5bc0de;border-color:#46b8da}.wfls-btn-info .wfls-badge{color:#5bc0de;background-color:#fff}.wfls-btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.wfls-btn-warning:focus,.wfls-btn-warning.focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.wfls-btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.wfls-btn-warning:active,.wfls-btn-warning.active,.wfls-open>.wfls-btn-warning.wfls-dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.wfls-btn-warning:active:hover,.wfls-btn-warning:active:focus,.wfls-btn-warning:active.focus,.wfls-btn-warning.active:hover,.wfls-btn-warning.active:focus,.wfls-btn-warning.active.focus,.wfls-open>.wfls-btn-warning.wfls-dropdown-toggle:hover,.wfls-open>.wfls-btn-warning.wfls-dropdown-toggle:focus,.wfls-open>.wfls-btn-warning.wfls-dropdown-toggle.focus{color:#fff;background-color:#d58512;border-color:#985f0d}.wfls-btn-warning:active,.wfls-btn-warning.wfls-active,.wfls-open>.wfls-btn-warning.wfls-dropdown-toggle{background-image:none}.wfls-btn-warning.wfls-disabled,.wfls-btn-warning[disabled],.wfls-btn-warning[readonly],fieldset[disabled] .wfls-btn-warning{color:#fff;background-color:#f5ca8c;border-color:#f4c37c;cursor:not-allowed;opacity:0.75}.wfls-btn-warning.wfls-disabled:hover,.wfls-btn-warning.wfls-disabled:focus,.wfls-btn-warning.wfls-disabled.wfls-focus,.wfls-btn-warning[disabled]:hover,.wfls-btn-warning[disabled]:focus,.wfls-btn-warning[disabled].wfls-focus,.wfls-btn-warning[readonly]:hover,.wfls-btn-warning[readonly]:focus,.wfls-btn-warning[readonly].wfls-focus,fieldset[disabled] .wfls-btn-warning:hover,fieldset[disabled] .wfls-btn-warning:focus,fieldset[disabled] .wfls-btn-warning.wfls-focus{background-color:#f0ad4e;border-color:#eea236}.wfls-btn-warning .wfls-badge{color:#f0ad4e;background-color:#fff}.wfls-btn-danger{color:#fff;background-color:#930000;border-color:#7a0000}.wfls-btn-danger:focus,.wfls-btn-danger.focus{color:#fff;background-color:#600000;border-color:#000}.wfls-btn-danger:hover{color:#fff;background-color:#600000;border-color:#3c0000}.wfls-btn-danger:active,.wfls-btn-danger.active,.wfls-open>.wfls-btn-danger.wfls-dropdown-toggle{color:#fff;background-color:#600000;border-color:#3c0000}.wfls-btn-danger:active:hover,.wfls-btn-danger:active:focus,.wfls-btn-danger:active.focus,.wfls-btn-danger.active:hover,.wfls-btn-danger.active:focus,.wfls-btn-danger.active.focus,.wfls-open>.wfls-btn-danger.wfls-dropdown-toggle:hover,.wfls-open>.wfls-btn-danger.wfls-dropdown-toggle:focus,.wfls-open>.wfls-btn-danger.wfls-dropdown-toggle.focus{color:#fff;background-color:#3c0000;border-color:#000}.wfls-btn-danger:active,.wfls-btn-danger.wfls-active,.wfls-open>.wfls-btn-danger.wfls-dropdown-toggle{background-image:none}.wfls-btn-danger.wfls-disabled,.wfls-btn-danger[disabled],.wfls-btn-danger[readonly],fieldset[disabled] .wfls-btn-danger{color:#fff;background-color:#b95959;border-color:#a95959;cursor:not-allowed;opacity:0.75}.wfls-btn-danger.wfls-disabled:hover,.wfls-btn-danger.wfls-disabled:focus,.wfls-btn-danger.wfls-disabled.wfls-focus,.wfls-btn-danger[disabled]:hover,.wfls-btn-danger[disabled]:focus,.wfls-btn-danger[disabled].wfls-focus,.wfls-btn-danger[readonly]:hover,.wfls-btn-danger[readonly]:focus,.wfls-btn-danger[readonly].wfls-focus,fieldset[disabled] .wfls-btn-danger:hover,fieldset[disabled] .wfls-btn-danger:focus,fieldset[disabled] .wfls-btn-danger.wfls-focus{background-color:#930000;border-color:#7a0000}.wfls-btn-danger .wfls-badge{color:#930000;background-color:#fff}.wfls-btn-callout{font-weight:600;text-transform:uppercase}.wfls-btn-callout-subtle{font-weight:400;text-transform:uppercase}.wfls-btn-link{color:#00709e;font-weight:normal;border-radius:0}.wfls-btn-link,.wfls-btn-link:active,.wfls-btn-link.wfls-active,.wfls-btn-link[disabled],fieldset[disabled] .wfls-btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.wfls-btn-link,.wfls-btn-link:hover,.wfls-btn-link:focus,.wfls-btn-link:active{border-color:transparent}.wfls-btn-link:hover,.wfls-btn-link:focus{color:#003a52;text-decoration:underline;background-color:transparent}.wfls-btn-link[disabled]:hover,.wfls-btn-link[disabled]:focus,fieldset[disabled] .wfls-btn-link:hover,fieldset[disabled] .wfls-btn-link:focus{color:#777;text-decoration:none}.wfls-btn-lg,.wfls-btn-group-lg>.wfls-btn{padding:10px 16px;font-size:18px;line-height:1.33333;border-radius:6px}.wfls-btn-sm,.wfls-btn-group-sm>.wfls-btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.wfls-btn-xs,.wfls-btn-group-xs>.wfls-btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.wfls-btn-block{display:block;width:100%}.wfls-btn-block+.wfls-btn-block{margin-top:5px}input[type="submit"].wfls-btn-block,input[type="reset"].wfls-btn-block,input[type="button"].wfls-btn-block{width:100%}.wfls-btn-group,.wfls-btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.wfls-btn-group>.wfls-btn,.wfls-btn-group-vertical>.wfls-btn{position:relative;float:left}.wfls-btn-group>.wfls-btn:hover,.wfls-btn-group>.wfls-btn:focus,.wfls-btn-group>.wfls-btn:active,.wfls-btn-group>.wfls-btn.wfls-active,.wfls-btn-group-vertical>.wfls-btn:hover,.wfls-btn-group-vertical>.wfls-btn:focus,.wfls-btn-group-vertical>.wfls-btn:active,.wfls-btn-group-vertical>.wfls-btn.wfls-active{z-index:2}.wfls-btn-group .wfls-btn+.wfls-btn,.wfls-btn-group .wfls-btn+.wfls-btn-group,.wfls-btn-group .wfls-btn-group+.wfls-btn,.wfls-btn-group .wfls-btn-group+.wfls-btn-group{margin-left:-1px}.wfls-btn-toolbar{margin-left:-5px}.wfls-btn-toolbar:before,.wfls-btn-toolbar:after{content:" ";display:table}.wfls-btn-toolbar:after{clear:both}.wfls-btn-toolbar .wfls-btn,.wfls-btn-toolbar .wfls-btn-group,.wfls-btn-toolbar .wfls-input-group{float:left}.wfls-btn-toolbar>.wfls-btn,.wfls-btn-toolbar>.wfls-btn-group,.wfls-btn-toolbar>.wfls-input-group{margin-left:5px}.wfls-btn-group>.wfls-btn:not(:first-child):not(:last-child):not(.wfls-dropdown-toggle){border-radius:0}.wfls-btn-group>.wfls-btn:first-child{margin-left:0}.wfls-btn-group>.wfls-btn:first-child:not(:last-child):not(.wfls-dropdown-toggle){-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.wfls-btn-group>.wfls-btn:last-child:not(:first-child),.wfls-btn-group>.wfls-dropdown-toggle:not(:first-child){-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0}.wfls-btn-group>.wfls-btn-group{float:left}.wfls-btn-group>.wfls-btn-group:not(:first-child):not(:last-child)>.wfls-btn{border-radius:0}.wfls-btn-group>.wfls-btn-group:first-child:not(:last-child)>.wfls-btn:last-child,.wfls-btn-group>.wfls-btn-group:first-child:not(:last-child)>.wfls-dropdown-toggle{-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.wfls-btn-group>.wfls-btn-group:last-child:not(:first-child)>.wfls-btn:first-child{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0}.wfls-btn-group .wfls-dropdown-toggle:active,.wfls-btn-group.wfls-open .wfls-dropdown-toggle{outline:0}.wfls-btn-group>.wfls-btn+.wfls-dropdown-toggle{padding-left:8px;padding-right:8px}.wfls-btn-group>.wfls-btn-lg+.wfls-dropdown-toggle,.wfls-btn-group-lg.wfls-btn-group>.wfls-btn+.wfls-dropdown-toggle{padding-left:12px;padding-right:12px}.wfls-btn-group.open .wfls-dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.wfls-btn-group.open .wfls-dropdown-toggle.wfls-btn-link{-webkit-box-shadow:none;box-shadow:none}.wfls-btn .wfls-caret{margin-left:0}.wfls-btn-lg .wfls-caret,.wfls-btn-group-lg>.wfls-btn .wfls-caret{border-width:5px 5px 0;border-bottom-width:0}.wfls-dropup .wfls-btn-lg .wfls-caret,.wfls-dropup .wfls-btn-group-lg>.wfls-btn .wfls-caret{border-width:0 5px 5px}.wfls-btn-group-vertical>.wfls-btn,.wfls-btn-group-vertical>.wfls-btn-group,.wfls-btn-group-vertical>.wfls-btn-group>.wfls-btn{display:block;float:none;width:100%;max-width:100%}.wfls-btn-group-vertical>.wfls-btn-group:before,.wfls-btn-group-vertical>.wfls-btn-group:after{content:" ";display:table}.wfls-btn-group-vertical>.wfls-btn-group:after{clear:both}.wfls-btn-group-vertical>.wfls-btn-group>.wfls-btn{float:none}.wfls-btn-group-vertical>.wfls-btn+.wfls-btn,.wfls-btn-group-vertical>.wfls-btn+.wfls-btn-group,.wfls-btn-group-vertical>.wfls-btn-group+.wfls-btn,.wfls-btn-group-vertical>.wfls-btn-group+.wfls-btn-group{margin-top:-1px;margin-left:0}.wfls-btn-group-vertical>.wfls-btn:not(:first-child):not(:last-child){border-radius:0}.wfls-btn-group-vertical>.wfls-btn:first-child:not(:last-child){-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.wfls-btn-group-vertical>.wfls-btn:last-child:not(:first-child){-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.wfls-btn-group-vertical>.wfls-btn-group:not(:first-child):not(:last-child)>.wfls-btn{border-radius:0}.wfls-btn-group-vertical>.wfls-btn-group:first-child:not(:last-child)>.wfls-btn:last-child,.wfls-btn-group-vertical>.wfls-btn-group:first-child:not(:last-child)>.wfls-dropdown-toggle{-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.wfls-btn-group-vertical>.wfls-btn-group:last-child:not(:first-child)>.wfls-btn:first-child{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0}.wfls-btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.wfls-btn-group-justified>.wfls-btn,.wfls-btn-group-justified>.wfls-btn-group{float:none;display:table-cell;width:1%}.wfls-btn-group-justified>.wfls-btn-group .wfls-btn{width:100%}.wfls-btn-group-justified>.wfls-btn-group .wfls-dropdown-menu{left:auto}[data-toggle="buttons"]>.wfls-btn input[type="radio"],[data-toggle="buttons"]>.wfls-btn input[type="checkbox"],[data-toggle="buttons"]>.wfls-btn-group>.wfls-btn input[type="radio"],[data-toggle="buttons"]>.wfls-btn-group>.wfls-btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.wfls-pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.wfls-pagination>li{display:inline}.wfls-pagination>li>a,.wfls-pagination>li>span{position:relative;float:left;padding:.5rem 1.25rem;line-height:1.42857;text-decoration:none;color:#00709e;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.wfls-pagination>li:first-child>a,.wfls-pagination>li:first-child>span{margin-left:0;-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px}.wfls-pagination>li:last-child>a,.wfls-pagination>li:last-child>span{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.wfls-pagination>li>a:hover,.wfls-pagination>li>a:focus,.wfls-pagination>li>span:hover,.wfls-pagination>li>span:focus{z-index:2;color:#003a52;background-color:#e2e2e2;border-color:#ddd}.wfls-pagination>.wfls-active>a,.wfls-pagination>.wfls-active>a:hover,.wfls-pagination>.wfls-active>a:focus,.wfls-pagination>.wfls-active>span,.wfls-pagination>.wfls-active>span:hover,.wfls-pagination>.wfls-active>span:focus{z-index:3;color:#fff;background-color:#00709e;border-color:#00709e;cursor:default}.wfls-pagination>.wfls-disabled>span,.wfls-pagination>.wfls-disabled>span:hover,.wfls-pagination>.wfls-disabled>span:focus,.wfls-pagination>.wfls-disabled>a,.wfls-pagination>.wfls-disabled>a:hover,.wfls-pagination>.wfls-disabled>a:focus{color:#777;background-color:#fff;border-color:#ddd;cursor:not-allowed}.wfls-pagination-lg>li>a,.wfls-pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.33333}.wfls-pagination-lg>li:first-child>a,.wfls-pagination-lg>li:first-child>span{-moz-border-radius-topleft:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px}.wfls-pagination-lg>li:last-child>a,.wfls-pagination-lg>li:last-child>span{-moz-border-radius-topright:6px;-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-moz-border-radius-bottomright:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px}.wfls-pagination-sm>li>a,.wfls-pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.wfls-pagination-sm>li:first-child>a,.wfls-pagination-sm>li:first-child>span{-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px}.wfls-pagination-sm>li:last-child>a,.wfls-pagination-sm>li:last-child>span{-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px}@-ms-viewport{width:device-width}.wfls-visible-xs{display:none !important}.wfls-visible-sm{display:none !important}.wfls-visible-md{display:none !important}.wfls-visible-lg{display:none !important}.wfls-visible-xs-block,.wfls-visible-xs-inline,.wfls-visible-xs-inline-block,.wfls-visible-sm-block,.wfls-visible-sm-inline,.wfls-visible-sm-inline-block,.wfls-visible-md-block,.wfls-visible-md-inline,.wfls-visible-md-inline-block,.wfls-visible-lg-block,.wfls-visible-lg-inline,.wfls-visible-lg-inline-block{display:none !important}@media (max-width: 767px){.wfls-visible-xs{display:block !important}table.wfls-visible-xs{display:table !important}tr.wfls-visible-xs{display:table-row !important}th.wfls-visible-xs,td.wfls-visible-xs{display:table-cell !important}}@media (max-width: 767px){.wfls-visible-xs-block{display:block !important}}@media (max-width: 767px){.wfls-visible-xs-inline{display:inline !important}}@media (max-width: 767px){.wfls-visible-xs-inline-block{display:inline-block !important}}@media (min-width: 768px) and (max-width: 991px){.wfls-visible-sm{display:block !important}table.wfls-visible-sm{display:table !important}tr.wfls-visible-sm{display:table-row !important}th.wfls-visible-sm,td.wfls-visible-sm{display:table-cell !important}}@media (min-width: 768px) and (max-width: 991px){.wfls-visible-sm-block{display:block !important}}@media (min-width: 768px) and (max-width: 991px){.wfls-visible-sm-inline{display:inline !important}}@media (min-width: 768px) and (max-width: 991px){.wfls-visible-sm-inline-block{display:inline-block !important}}@media (min-width: 992px) and (max-width: 1199px){.wfls-visible-md{display:block !important}table.wfls-visible-md{display:table !important}tr.wfls-visible-md{display:table-row !important}th.wfls-visible-md,td.wfls-visible-md{display:table-cell !important}}@media (min-width: 992px) and (max-width: 1199px){.wfls-visible-md-block{display:block !important}}@media (min-width: 992px) and (max-width: 1199px){.wfls-visible-md-inline{display:inline !important}}@media (min-width: 992px) and (max-width: 1199px){.wfls-visible-md-inline-block{display:inline-block !important}}@media (min-width: 1200px){.wfls-visible-lg{display:block !important}table.wfls-visible-lg{display:table !important}tr.wfls-visible-lg{display:table-row !important}th.wfls-visible-lg,td.wfls-visible-lg{display:table-cell !important}}@media (min-width: 1200px){.wfls-visible-lg-block{display:block !important}}@media (min-width: 1200px){.wfls-visible-lg-inline{display:inline !important}}@media (min-width: 1200px){.wfls-visible-lg-inline-block{display:inline-block !important}}@media (max-width: 767px){.wfls-hidden-xs{display:none !important}}@media (min-width: 768px) and (max-width: 991px){.wfls-hidden-sm{display:none !important}}@media (min-width: 992px) and (max-width: 1199px){.wfls-hidden-md{display:none !important}}@media (min-width: 1200px){.wfls-hidden-lg{display:none !important}}.wfls-visible-print{display:none !important}@media print{.wfls-visible-print{display:block !important}table.wfls-visible-print{display:table !important}tr.wfls-visible-print{display:table-row !important}th.wfls-visible-print,td.wfls-visible-print{display:table-cell !important}}.wfls-visible-print-block{display:none !important}@media print{.wfls-visible-print-block{display:block !important}}.wfls-visible-print-inline{display:none !important}@media print{.wfls-visible-print-inline{display:inline !important}}.wfls-visible-print-inline-block{display:none !important}@media print{.wfls-visible-print-inline-block{display:inline-block !important}}@media print{.wfls-hidden-print{display:none !important}}.wfls-container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.wfls-container:before,.wfls-container:after{content:" ";display:table}.wfls-container:after{clear:both}@media (min-width: 768px){.wfls-container{width:750px}}@media (min-width: 992px){.wfls-container{width:970px}}@media (min-width: 1200px){.wfls-container{width:1170px}}.wfls-container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.wfls-container-fluid:before,.wfls-container-fluid:after{content:" ";display:table}.wfls-container-fluid:after{clear:both}.wfls-row{margin-left:-15px;margin-right:-15px}.wfls-row:before,.wfls-row:after{content:" ";display:table}.wfls-row:after{clear:both}.wfls-col-xs-1,.wfls-col-sm-1,.wfls-col-md-1,.wfls-col-lg-1,.wfls-col-xs-2,.wfls-col-sm-2,.wfls-col-md-2,.wfls-col-lg-2,.wfls-col-xs-3,.wfls-col-sm-3,.wfls-col-md-3,.wfls-col-lg-3,.wfls-col-xs-4,.wfls-col-sm-4,.wfls-col-md-4,.wfls-col-lg-4,.wfls-col-xs-5,.wfls-col-sm-5,.wfls-col-md-5,.wfls-col-lg-5,.wfls-col-xs-6,.wfls-col-sm-6,.wfls-col-md-6,.wfls-col-lg-6,.wfls-col-xs-7,.wfls-col-sm-7,.wfls-col-md-7,.wfls-col-lg-7,.wfls-col-xs-8,.wfls-col-sm-8,.wfls-col-md-8,.wfls-col-lg-8,.wfls-col-xs-9,.wfls-col-sm-9,.wfls-col-md-9,.wfls-col-lg-9,.wfls-col-xs-10,.wfls-col-sm-10,.wfls-col-md-10,.wfls-col-lg-10,.wfls-col-xs-11,.wfls-col-sm-11,.wfls-col-md-11,.wfls-col-lg-11,.wfls-col-xs-12,.wfls-col-sm-12,.wfls-col-md-12,.wfls-col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px;box-sizing:border-box}.wfls-col-xs-1,.wfls-col-xs-2,.wfls-col-xs-3,.wfls-col-xs-4,.wfls-col-xs-5,.wfls-col-xs-6,.wfls-col-xs-7,.wfls-col-xs-8,.wfls-col-xs-9,.wfls-col-xs-10,.wfls-col-xs-11,.wfls-col-xs-12{float:left}.wfls-col-xs-1{width:8.33333%}.wfls-col-xs-2{width:16.66667%}.wfls-col-xs-3{width:25%}.wfls-col-xs-4{width:33.33333%}.wfls-col-xs-5{width:41.66667%}.wfls-col-xs-6{width:50%}.wfls-col-xs-7{width:58.33333%}.wfls-col-xs-8{width:66.66667%}.wfls-col-xs-9{width:75%}.wfls-col-xs-10{width:83.33333%}.wfls-col-xs-11{width:91.66667%}.wfls-col-xs-12{width:100%}.wfls-col-xs-pull-0{right:auto}.wfls-col-xs-pull-1{right:8.33333%}.wfls-col-xs-pull-2{right:16.66667%}.wfls-col-xs-pull-3{right:25%}.wfls-col-xs-pull-4{right:33.33333%}.wfls-col-xs-pull-5{right:41.66667%}.wfls-col-xs-pull-6{right:50%}.wfls-col-xs-pull-7{right:58.33333%}.wfls-col-xs-pull-8{right:66.66667%}.wfls-col-xs-pull-9{right:75%}.wfls-col-xs-pull-10{right:83.33333%}.wfls-col-xs-pull-11{right:91.66667%}.wfls-col-xs-pull-12{right:100%}.wfls-col-xs-push-0{left:auto}.wfls-col-xs-push-1{left:8.33333%}.wfls-col-xs-push-2{left:16.66667%}.wfls-col-xs-push-3{left:25%}.wfls-col-xs-push-4{left:33.33333%}.wfls-col-xs-push-5{left:41.66667%}.wfls-col-xs-push-6{left:50%}.wfls-col-xs-push-7{left:58.33333%}.wfls-col-xs-push-8{left:66.66667%}.wfls-col-xs-push-9{left:75%}.wfls-col-xs-push-10{left:83.33333%}.wfls-col-xs-push-11{left:91.66667%}.wfls-col-xs-push-12{left:100%}.wfls-col-xs-offset-0{margin-left:0%}.wfls-col-xs-offset-1{margin-left:8.33333%}.wfls-col-xs-offset-2{margin-left:16.66667%}.wfls-col-xs-offset-3{margin-left:25%}.wfls-col-xs-offset-4{margin-left:33.33333%}.wfls-col-xs-offset-5{margin-left:41.66667%}.wfls-col-xs-offset-6{margin-left:50%}.wfls-col-xs-offset-7{margin-left:58.33333%}.wfls-col-xs-offset-8{margin-left:66.66667%}.wfls-col-xs-offset-9{margin-left:75%}.wfls-col-xs-offset-10{margin-left:83.33333%}.wfls-col-xs-offset-11{margin-left:91.66667%}.wfls-col-xs-offset-12{margin-left:100%}.wfls-col-xs-half-padding-left{padding-left:8px}.wfls-col-xs-half-padding-right{padding-right:7px}@media (min-width: 768px){.wfls-col-sm-1,.wfls-col-sm-2,.wfls-col-sm-3,.wfls-col-sm-4,.wfls-col-sm-5,.wfls-col-sm-6,.wfls-col-sm-7,.wfls-col-sm-8,.wfls-col-sm-9,.wfls-col-sm-10,.wfls-col-sm-11,.wfls-col-sm-12{float:left}.wfls-col-sm-1{width:8.33333%}.wfls-col-sm-2{width:16.66667%}.wfls-col-sm-3{width:25%}.wfls-col-sm-4{width:33.33333%}.wfls-col-sm-5{width:41.66667%}.wfls-col-sm-6{width:50%}.wfls-col-sm-7{width:58.33333%}.wfls-col-sm-8{width:66.66667%}.wfls-col-sm-9{width:75%}.wfls-col-sm-10{width:83.33333%}.wfls-col-sm-11{width:91.66667%}.wfls-col-sm-12{width:100%}.wfls-col-sm-pull-0{right:auto}.wfls-col-sm-pull-1{right:8.33333%}.wfls-col-sm-pull-2{right:16.66667%}.wfls-col-sm-pull-3{right:25%}.wfls-col-sm-pull-4{right:33.33333%}.wfls-col-sm-pull-5{right:41.66667%}.wfls-col-sm-pull-6{right:50%}.wfls-col-sm-pull-7{right:58.33333%}.wfls-col-sm-pull-8{right:66.66667%}.wfls-col-sm-pull-9{right:75%}.wfls-col-sm-pull-10{right:83.33333%}.wfls-col-sm-pull-11{right:91.66667%}.wfls-col-sm-pull-12{right:100%}.wfls-col-sm-push-0{left:auto}.wfls-col-sm-push-1{left:8.33333%}.wfls-col-sm-push-2{left:16.66667%}.wfls-col-sm-push-3{left:25%}.wfls-col-sm-push-4{left:33.33333%}.wfls-col-sm-push-5{left:41.66667%}.wfls-col-sm-push-6{left:50%}.wfls-col-sm-push-7{left:58.33333%}.wfls-col-sm-push-8{left:66.66667%}.wfls-col-sm-push-9{left:75%}.wfls-col-sm-push-10{left:83.33333%}.wfls-col-sm-push-11{left:91.66667%}.wfls-col-sm-push-12{left:100%}.wfls-col-sm-offset-0{margin-left:0%}.wfls-col-sm-offset-1{margin-left:8.33333%}.wfls-col-sm-offset-2{margin-left:16.66667%}.wfls-col-sm-offset-3{margin-left:25%}.wfls-col-sm-offset-4{margin-left:33.33333%}.wfls-col-sm-offset-5{margin-left:41.66667%}.wfls-col-sm-offset-6{margin-left:50%}.wfls-col-sm-offset-7{margin-left:58.33333%}.wfls-col-sm-offset-8{margin-left:66.66667%}.wfls-col-sm-offset-9{margin-left:75%}.wfls-col-sm-offset-10{margin-left:83.33333%}.wfls-col-sm-offset-11{margin-left:91.66667%}.wfls-col-sm-offset-12{margin-left:100%}.wfls-col-sm-half-padding-left{padding-left:8px}.wfls-col-sm-half-padding-right{padding-right:7px}}@media (min-width: 992px){.wfls-col-md-1,.wfls-col-md-2,.wfls-col-md-3,.wfls-col-md-4,.wfls-col-md-5,.wfls-col-md-6,.wfls-col-md-7,.wfls-col-md-8,.wfls-col-md-9,.wfls-col-md-10,.wfls-col-md-11,.wfls-col-md-12{float:left}.wfls-col-md-1{width:8.33333%}.wfls-col-md-2{width:16.66667%}.wfls-col-md-3{width:25%}.wfls-col-md-4{width:33.33333%}.wfls-col-md-5{width:41.66667%}.wfls-col-md-6{width:50%}.wfls-col-md-7{width:58.33333%}.wfls-col-md-8{width:66.66667%}.wfls-col-md-9{width:75%}.wfls-col-md-10{width:83.33333%}.wfls-col-md-11{width:91.66667%}.wfls-col-md-12{width:100%}.wfls-col-md-pull-0{right:auto}.wfls-col-md-pull-1{right:8.33333%}.wfls-col-md-pull-2{right:16.66667%}.wfls-col-md-pull-3{right:25%}.wfls-col-md-pull-4{right:33.33333%}.wfls-col-md-pull-5{right:41.66667%}.wfls-col-md-pull-6{right:50%}.wfls-col-md-pull-7{right:58.33333%}.wfls-col-md-pull-8{right:66.66667%}.wfls-col-md-pull-9{right:75%}.wfls-col-md-pull-10{right:83.33333%}.wfls-col-md-pull-11{right:91.66667%}.wfls-col-md-pull-12{right:100%}.wfls-col-md-push-0{left:auto}.wfls-col-md-push-1{left:8.33333%}.wfls-col-md-push-2{left:16.66667%}.wfls-col-md-push-3{left:25%}.wfls-col-md-push-4{left:33.33333%}.wfls-col-md-push-5{left:41.66667%}.wfls-col-md-push-6{left:50%}.wfls-col-md-push-7{left:58.33333%}.wfls-col-md-push-8{left:66.66667%}.wfls-col-md-push-9{left:75%}.wfls-col-md-push-10{left:83.33333%}.wfls-col-md-push-11{left:91.66667%}.wfls-col-md-push-12{left:100%}.wfls-col-md-offset-0{margin-left:0%}.wfls-col-md-offset-1{margin-left:8.33333%}.wfls-col-md-offset-2{margin-left:16.66667%}.wfls-col-md-offset-3{margin-left:25%}.wfls-col-md-offset-4{margin-left:33.33333%}.wfls-col-md-offset-5{margin-left:41.66667%}.wfls-col-md-offset-6{margin-left:50%}.wfls-col-md-offset-7{margin-left:58.33333%}.wfls-col-md-offset-8{margin-left:66.66667%}.wfls-col-md-offset-9{margin-left:75%}.wfls-col-md-offset-10{margin-left:83.33333%}.wfls-col-md-offset-11{margin-left:91.66667%}.wfls-col-md-offset-12{margin-left:100%}.wfls-col-md-half-padding-left{padding-left:8px}.wfls-col-md-half-padding-right{padding-right:7px}}@media (min-width: 1200px){.wfls-col-lg-1,.wfls-col-lg-2,.wfls-col-lg-3,.wfls-col-lg-4,.wfls-col-lg-5,.wfls-col-lg-6,.wfls-col-lg-7,.wfls-col-lg-8,.wfls-col-lg-9,.wfls-col-lg-10,.wfls-col-lg-11,.wfls-col-lg-12{float:left}.wfls-col-lg-1{width:8.33333%}.wfls-col-lg-2{width:16.66667%}.wfls-col-lg-3{width:25%}.wfls-col-lg-4{width:33.33333%}.wfls-col-lg-5{width:41.66667%}.wfls-col-lg-6{width:50%}.wfls-col-lg-7{width:58.33333%}.wfls-col-lg-8{width:66.66667%}.wfls-col-lg-9{width:75%}.wfls-col-lg-10{width:83.33333%}.wfls-col-lg-11{width:91.66667%}.wfls-col-lg-12{width:100%}.wfls-col-lg-pull-0{right:auto}.wfls-col-lg-pull-1{right:8.33333%}.wfls-col-lg-pull-2{right:16.66667%}.wfls-col-lg-pull-3{right:25%}.wfls-col-lg-pull-4{right:33.33333%}.wfls-col-lg-pull-5{right:41.66667%}.wfls-col-lg-pull-6{right:50%}.wfls-col-lg-pull-7{right:58.33333%}.wfls-col-lg-pull-8{right:66.66667%}.wfls-col-lg-pull-9{right:75%}.wfls-col-lg-pull-10{right:83.33333%}.wfls-col-lg-pull-11{right:91.66667%}.wfls-col-lg-pull-12{right:100%}.wfls-col-lg-push-0{left:auto}.wfls-col-lg-push-1{left:8.33333%}.wfls-col-lg-push-2{left:16.66667%}.wfls-col-lg-push-3{left:25%}.wfls-col-lg-push-4{left:33.33333%}.wfls-col-lg-push-5{left:41.66667%}.wfls-col-lg-push-6{left:50%}.wfls-col-lg-push-7{left:58.33333%}.wfls-col-lg-push-8{left:66.66667%}.wfls-col-lg-push-9{left:75%}.wfls-col-lg-push-10{left:83.33333%}.wfls-col-lg-push-11{left:91.66667%}.wfls-col-lg-push-12{left:100%}.wfls-col-lg-offset-0{margin-left:0%}.wfls-col-lg-offset-1{margin-left:8.33333%}.wfls-col-lg-offset-2{margin-left:16.66667%}.wfls-col-lg-offset-3{margin-left:25%}.wfls-col-lg-offset-4{margin-left:33.33333%}.wfls-col-lg-offset-5{margin-left:41.66667%}.wfls-col-lg-offset-6{margin-left:50%}.wfls-col-lg-offset-7{margin-left:58.33333%}.wfls-col-lg-offset-8{margin-left:66.66667%}.wfls-col-lg-offset-9{margin-left:75%}.wfls-col-lg-offset-10{margin-left:83.33333%}.wfls-col-lg-offset-11{margin-left:91.66667%}.wfls-col-lg-offset-12{margin-left:100%}.wfls-col-lg-half-padding-left{padding-left:8px}.wfls-col-lg-half-padding-right{padding-right:7px}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}label.wfls-plain{font-weight:normal}label.wfls-control-label.wfls-disabled{pointer-events:none}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:1.5rem;font-size:14px;line-height:1.42857;color:#555}.wfls-form-control{display:block;width:100%;height:38px;padding:.5rem 1.25rem;font-size:14px;line-height:1.42857;color:#555;background-color:#fff;background-image:none;border:1px solid #ddd;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;-o-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s}.wfls-form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.wfls-form-control::-moz-placeholder{color:#bfbfbf;opacity:1}.wfls-form-control:-ms-input-placeholder{color:#bfbfbf}.wfls-form-control::-webkit-input-placeholder{color:#bfbfbf}.wfls-form-control::-ms-expand{border:0;background-color:transparent}.wfls-form-control[disabled],.wfls-form-control[readonly],fieldset[disabled] .wfls-form-control{background-color:#e2e2e2;opacity:1}.wfls-form-control[disabled],.wfls-form-control[readonly],fieldset[disabled] .wfls-form-control{cursor:not-allowed;pointer-events:none}textarea.wfls-form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio: 0){input[type="date"].wfls-form-control,input[type="time"].wfls-form-control,input[type="datetime-local"].wfls-form-control,input[type="month"].wfls-form-control{line-height:38px}input[type="date"].wfls-input-sm,.wfls-input-group-sm input[type="date"],input[type="time"].wfls-input-sm,.wfls-input-group-sm input[type="time"],input[type="datetime-local"].wfls-input-sm,.wfls-input-group-sm input[type="datetime-local"],input[type="month"].wfls-input-sm,.wfls-input-group-sm input[type="month"]{line-height:30px}input[type="date"].wfls-input-lg,.wfls-input-group-lg input[type="date"],input[type="time"].wfls-input-lg,.wfls-input-group-lg input[type="time"],input[type="datetime-local"].wfls-input-lg,.wfls-input-group-lg input[type="datetime-local"],input[type="month"].wfls-input-lg,.wfls-input-group-lg input[type="month"]{line-height:46px}}.wfls-form-group{margin-bottom:8px}.wfls-form-group.wfls-sub-group label{color:#666666;font-weight:normal;padding-left:20px}.wfls-form-group.wfls-focus{border-left:4px solid #11967a;padding-bottom:8px;background-color:#e5e5e5}.wfls-form-group.wfls-focus label{margin-left:-4px}.wfls-radio,.wfls-checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.wfls-radio label,.wfls-checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.wfls-radio input[type="radio"],.wfls-radio-inline input[type="radio"],.wfls-checkbox input[type="checkbox"],.wfls-checkbox-inline input[type="checkbox"]{margin-top:4px \9}.wfls-radio-offset{padding-left:29px}@media (min-width: 768px){.wfls-radio-offset{padding-left:20px}}.wfls-radio+.wfls-radio,.wfls-checkbox+.wfls-checkbox{margin-top:-5px}.wfls-radio-inline,.wfls-checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.wfls-radio-inline+.wfls-radio-inline,.wfls-checkbox-inline+.wfls-checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="radio"][readonly],input[type="radio"].wfls-disabled,fieldset[disabled] input[type="radio"],input[type="checkbox"][disabled],input[type="checkbox"][readonly],input[type="checkbox"].wfls-disabled,fieldset[disabled] input[type="checkbox"]{cursor:not-allowed;pointer-events:none}.wfls-radio-inline.wfls-disabled,fieldset[disabled] .wfls-radio-inline,.wfls-checkbox-inline.wfls-disabled,fieldset[disabled] .wfls-checkbox-inline{cursor:not-allowed}.wfls-radio.wfls-disabled label,fieldset[disabled] .wfls-radio label,.wfls-checkbox.wfls-disabled label,fieldset[disabled] .wfls-checkbox label{cursor:not-allowed;pointer-events:none}.wfls-form-control-static{padding-top:1.5rem;padding-bottom:1.5rem;margin:0;line-height:1}.wfls-form-control-static.wfls-input-lg,.wfls-form-control-static.wfls-input-sm{padding-left:0;padding-right:0}.wfls-input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.wfls-input-sm{height:30px;line-height:30px}textarea.wfls-input-sm,select[multiple].wfls-input-sm{height:auto}.wfls-form-group-sm .wfls-form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.wfls-form-group-sm select.wfls-form-control{height:30px;line-height:30px}.wfls-form-group-sm textarea.wfls-form-control,.wfls-form-group-sm select[multiple].wfls-form-control{height:auto}.wfls-form-group-sm .wfls-form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.wfls-input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33333;border-radius:6px}select.wfls-input-lg{height:46px;line-height:46px}textarea.wfls-input-lg,select[multiple].wfls-input-lg{height:auto}.wfls-form-group-lg .wfls-form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33333;border-radius:6px}.wfls-form-group-lg select.wfls-form-control{height:46px;line-height:46px}.wfls-form-group-lg textarea.wfls-form-control,.wfls-form-group-lg select[multiple].wfls-form-control{height:auto}.wfls-form-group-lg .wfls-form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.33333}.wfls-has-feedback{position:relative}.wfls-has-feedback .wfls-form-control{padding-right:47.5px}.wfls-form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:38px;height:38px;line-height:38px;text-align:center;pointer-events:none}.wfls-input-lg+.wfls-form-control-feedback,.wfls-input-group-lg+.wfls-form-control-feedback,.wfls-form-group-lg .wfls-form-control+.wfls-form-control-feedback{width:46px;height:46px;line-height:46px}.wfls-input-sm+.wfls-form-control-feedback,.wfls-input-group-sm+.wfls-form-control-feedback,.wfls-form-group-sm .wfls-form-control+.wfls-form-control-feedback{width:30px;height:30px;line-height:30px}.wfls-has-success .wfls-help-block,.wfls-has-success .wfls-control-label,.wfls-has-success .wfls-radio,.wfls-has-success .wfls-checkbox,.wfls-has-success .wfls-radio-inline,.wfls-has-success .wfls-checkbox-inline,.wfls-has-success.wfls-radio label,.wfls-has-success.wfls-checkbox label,.wfls-has-success.wfls-radio-inline label,.wfls-has-success.wfls-checkbox-inline label{color:#3c763d}.wfls-has-success .wfls-form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.wfls-has-success .wfls-form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.wfls-has-success .wfls-input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.wfls-has-success .wfls-form-control-feedback{color:#3c763d}.wfls-has-warning .wfls-help-block,.wfls-has-warning .wfls-control-label,.wfls-has-warning .wfls-radio,.wfls-has-warning .wfls-checkbox,.wfls-has-warning .wfls-radio-inline,.wfls-has-warning .wfls-checkbox-inline,.wfls-has-warning.wfls-radio label,.wfls-has-warning.wfls-checkbox label,.wfls-has-warning.wfls-radio-inline label,.wfls-has-warning.wfls-checkbox-inline label{color:#8a6d3b}.wfls-has-warning .wfls-form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.wfls-has-warning .wfls-form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.wfls-has-warning .wfls-input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.wfls-has-warning .wfls-form-control-feedback{color:#8a6d3b}.wfls-has-error .wfls-help-block,.wfls-has-error .wfls-control-label,.wfls-has-error .wfls-radio,.wfls-has-error .wfls-checkbox,.wfls-has-error .wfls-radio-inline,.wfls-has-error .wfls-checkbox-inline,.wfls-has-error.wfls-radio label,.wfls-has-error.wfls-checkbox label,.wfls-has-error.wfls-radio-inline label,.wfls-has-error.wfls-checkbox-inline label{color:#a94442}.wfls-has-error .wfls-form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.wfls-has-error .wfls-form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.wfls-has-error .wfls-input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.wfls-has-error .wfls-form-control-feedback{color:#a94442}.wfls-has-feedback label ~ .wfls-form-control-feedback{top:25px}.wfls-has-feedback label.wfls-sr-only ~ .wfls-form-control-feedback{top:0}.wfls-help-block{display:block;margin-top:5px;color:#737373}@media (min-width: 768px){.wfls-form-inline .wfls-form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.wfls-form-inline .wfls-form-control{display:inline-block;width:auto;vertical-align:middle}.wfls-form-inline .wfls-form-control-static{display:inline-block}.wfls-form-inline .wfls-input-group{display:inline-table;vertical-align:middle}.wfls-form-inline .wfls-input-group .wfls-input-group-addon,.wfls-form-inline .wfls-input-group .wfls-input-group-btn,.wfls-form-inline .wfls-input-group .wfls-form-control{width:auto}.wfls-form-inline .wfls-input-group>.wfls-form-control{width:100%}.wfls-form-inline .wfls-control-label{margin-bottom:0;vertical-align:middle}.wfls-form-inline .wfls-radio,.wfls-form-inline .wfls-checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.wfls-form-inline .wfls-radio label,.wfls-form-inline .wfls-checkbox label{padding-left:0}.wfls-form-inline .wfls-radio input[type="radio"],.wfls-form-inline .wfls-checkbox input[type="checkbox"]{position:relative;margin-left:0}.wfls-form-inline .wfls-has-feedback .wfls-form-control-feedback{top:0}}.wfls-form-horizontal .wfls-radio,.wfls-form-horizontal .wfls-checkbox,.wfls-form-horizontal .wfls-radio-inline,.wfls-form-horizontal .wfls-checkbox-inline{margin-top:0;margin-bottom:0;padding-top:1.5rem}.wfls-form-horizontal .wfls-radio,.wfls-form-horizontal .wfls-checkbox{min-height:29px}.wfls-form-horizontal .wfls-form-group{margin-left:-15px;margin-right:-15px}.wfls-form-horizontal .wfls-form-group:before,.wfls-form-horizontal .wfls-form-group:after{content:" ";display:table}.wfls-form-horizontal .wfls-form-group:after{clear:both}@media (min-width: 768px){.wfls-form-horizontal .wfls-control-label{text-align:right;margin-bottom:0;padding-top:1.5rem}}.wfls-form-horizontal .wfls-has-feedback .wfls-form-control-feedback{right:15px}@media (min-width: 768px){.wfls-form-horizontal .wfls-form-group-lg .wfls-control-label{padding-top:11px;font-size:18px}}@media (min-width: 768px){.wfls-form-horizontal .wfls-form-group-sm .wfls-control-label{padding-top:6px;font-size:12px}}@media (min-width: 768px){#input-recaptchaSiteKey,#input-recaptchaSecret{min-width:400px}}hr.wfls-half{border:0 !important;border-bottom:1px solid #e4e4e4 !important;width:50%;margin:1.25rem auto}.wrap.wordfence-ls{direction:ltr}@media (min-width: 768px){.wrap.wordfence-ls{max-width:750px}}@media (min-width: 992px){.wrap.wordfence-ls{max-width:970px}}@media (min-width: 1200px){.wrap.wordfence-ls{max-width:1170px}}.wrap.wordfence-ls>.wfls-container-fluid{padding-left:0px;padding-right:0px}.wrap.wordfence-ls .button-primary{text-align:center;text-transform:uppercase;font-weight:bold;background-color:#00709e}.wrap.wordfence-ls a{text-decoration:none}.wrap.wordfence-ls a:hover{text-decoration:underline}.wrap.wordfence-ls a.wfls-btn:hover{text-decoration:none}.wrap.wordfence-ls p,.wrap.wordfence-ls td,.wrap.wordfence-ls li{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:.875rem;color:#2d2d2d;line-height:1.3125;font-weight:normal}.wrap.wordfence-ls p strong,.wrap.wordfence-ls td strong,.wrap.wordfence-ls li strong{font-weight:600}.wrap.wordfence-ls p em,.wrap.wordfence-ls td em,.wrap.wordfence-ls li em{font-weight:normal}.wrap.wordfence-ls h1,.wrap.wordfence-ls h2,.wrap.wordfence-ls h3,.wrap.wordfence-ls h4,.wrap.wordfence-ls h5,.wrap.wordfence-ls h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;color:#2d2d2d;font-weight:700}.wrap.wordfence-ls h2{font-size:1.3125rem;line-height:1.5}.wrap.wordfence-ls h3{font-size:1.125rem}.wrap.wordfence-ls h4{font-size:1rem}a{color:#00709e}.wfls-inline-help{color:#9f9fa0}.wfls-inline-help:hover{color:#00709e}.wordfenceWrap{margin:20px 0 0 20px}#wfHeading:after{content:'.';visibility:hidden;display:block;clear:both;height:0px}.wfls-header-icon{background-image:url(../img/header.svg);width:32px;height:32px;background-position:0 0;background-repeat:no-repeat;padding:0;margin:0 5px 0 0;float:left}a.wfhelp{margin:0 3px 0 3px;text-decoration:none;display:inline-block;vertical-align:middle;font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased}a.wfhelp:before{content:'\f29c'}.wordfence .resulticon{display:block;float:left;width:16px;height:16px;background-position:0 0;background-repeat:no-repeat;border-width:0;padding:0;margin:0 3px 0 0;background-image:url(../img/icons/bullet_yellow.png)}.wordfenceBoldTD{font-weight:bold}.wfAjax24{display:none;width:24px;height:24px;background-image:url(../img/icons/ajax24.gif);margin:0;padding:0}div.wfLoadingWhite32{width:32px;height:32px;background-image:url(../img/icons/ajaxWhite32x32.gif);margin:0;padding:0}.wfTabsContainer{background-color:#FFF;overflow:hidden;border:1px solid #CCC;padding:15px;min-height:200px;-webkit-font-smoothing:antialiased}#wfTabs::after{content:".";display:block;height:0;width:0;line-height:0;clear:both;visibility:hidden}#wfTabs a{float:left;z-index:10;height:18px;margin:0 5px -1px 0;padding:5px 8px;border:1px solid #CCC;text-decoration:none;background-color:#EFEFEF;color:#21759B;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px}#wfTabs a.selected{border-bottom:1px solid #FFF;background-color:#FFF;color:#777}.wordfenceTopTab{display:none;margin-top:15px}.wordfenceTopTab.active{display:block}.wordfenceHelpLink{margin-top:15px}.wfAjaxLight128{background-image:url(../img/icons/ajax3.gif)}.wfStrong{font-weight:bold}.wordfenceModeElem{width:1px;height:1px;opacity:0}.wfWarn{color:#F00}img.wfFlag{vertical-align:middle;margin:-3px 4px 0 0}.wfHitTime{font-style:italic}.wfAvatar img{vertical-align:middle;margin-right:0.5rem}.wfls-hex-sequence{color:#587ECB}.wfLoadMoreButton.disabled,.wfLoadMoreButton[disabled]{pointer-events:none;opacity:0.65}table.wfConfigForm th{font-weight:normal;text-align:left;padding:2px 3px 1px 0;vertical-align:middle}table.wfConfigForm td{vertical-align:middle}table.wfConfigForm td.align-top{vertical-align:top}table th.wfConfigEnable{font-weight:bold;min-width:25%}.wfSavedMsg{display:none;color:#A00}table th.wfSubheading{font-weight:bold;padding-top:10px}h3.wfConfigHeading{font-size:22px;color:#777;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:italic;font-weight:normal}.wfTipText{color:#777;font-family:Georgia,Times New Roman,Times,serif;font-style:italic}.wfBlackCursor{color:#FFF}.wfls-spinner{display:inline-block;width:4px}.wferror{color:#F00}#wordfenceWorking{padding:10px 40px 6px 16px;z-index:100000;position:fixed;right:16px;bottom:0px;background-color:#fcb214;border:5px solid #fcb214;border-width:6px 15px 6px 6px;color:#525355;font-size:12px;font-weight:bold;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;background-image:url("../img/icons/working-indicator.gif");background-position:100% 50%;background-repeat:no-repeat}@media (max-width: 960px){#wordfenceWorking{left:auto;right:0px}}#paidWrap{position:relative}.paidInnerMsg{width:500px;margin:150px auto 0 auto;color:#000;font-size:18px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;line-height:1.8em;text-align:center;-webkit-font-smoothing:antialiased}.wfMarker{height:1px;width:1px}.wfPaidOnlyNotice{width:500px;background-color:#FFFFE0;border:1px solid #000;padding:10px;margin:20px}.wfOnOffSwitch{display:inline-block;position:relative !important;width:69px !important;-webkit-user-select:none !important;-moz-user-select:none !important;-ms-user-select:none !important;user-select:none !important}.wfOnOffSwitch-checkbox{display:none !important}.wfOnOffSwitch-label{display:block !important;overflow:hidden !important;cursor:pointer !important;border:2px solid #999999 !important;border-radius:19px !important;margin:0}.wfOnOffSwitch-inner{width:200% !important;margin-left:-100% !important;-webkit-transition:margin 0.3s ease-in !important;-o-transition:margin 0.3s ease-in !important;transition:margin 0.3s ease-in !important;-webkit-transition-delay:0s !important;transition-delay:0s !important}.wfOnOffSwitch-inner:before,.wfOnOffSwitch-inner:after{float:left !important;width:50% !important;height:19px !important;padding:0 !important;line-height:19px !important;font-size:14px !important;color:white !important;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif !important;font-weight:bold !important;-webkit-box-sizing:border-box !important;-moz-box-sizing:border-box !important;box-sizing:border-box !important;-moz-border-radius:19px !important;-webkit-border-radius:19px;border-radius:19px !important;-webkit-box-shadow:0 9.5px 0 rgba(0,0,0,0.08) inset !important;box-shadow:0 9.5px 0 rgba(0,0,0,0.08) inset !important}.wfOnOffSwitch-inner:before{content:"ON" !important;padding-left:10px !important;background-color:#30D965 !important;color:#FFFFFF !important;-moz-border-radius:19px 0 0 19px !important;-webkit-border-radius:19px;border-radius:19px 0 0 19px !important}.wfOnOffSwitch-inner:after{content:"OFF" !important;padding-right:10px !important;background-color:#EEEEEE !important;color:#999999 !important;text-align:right !important;-moz-border-radius:0 19px 19px 0 !important;-webkit-border-radius:0;border-radius:0 19px 19px 0 !important}.wfOnOffSwitch-switch{width:19px !important;margin:0 !important;background:#FFFFFF !important;border:2px solid #999999 !important;-moz-border-radius:19px !important;-webkit-border-radius:19px;border-radius:19px !important;position:absolute !important;top:0 !important;bottom:0 !important;right:46px !important;-webkit-transition:all 0.3s ease-in !important;-o-transition:all 0.3s ease-in !important;transition:all 0.3s ease-in !important;-webkit-transition-delay:0s !important;transition-delay:0s !important;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwMDAwMCIgc3RvcC1vcGFjaXR5PSIwLjEiLz48c3RvcCBvZmZzZXQ9IjgwJSIgc3RvcC1jb2xvcj0iIzAwMDAwMCIgc3RvcC1vcGFjaXR5PSIwLjAiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyYWQpIiAvPjwvc3ZnPiA=') !important;background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, rgba(0,0,0,0.1)),color-stop(80%, rgba(0,0,0,0))) !important;background-image:-moz-linear-gradient(center top, rgba(0,0,0,0.1) 0%,rgba(0,0,0,0) 80%) !important;background-image:-webkit-linear-gradient(center top, rgba(0,0,0,0.1) 0%,rgba(0,0,0,0) 80%) !important;background-image:linear-gradient(to center bottom, rgba(0,0,0,0.1) 0%,rgba(0,0,0,0) 80%) !important;box-shadow:0 1px 1px white inset !important}.wfOnOffSwitch-checkbox:checked+.wfOnOffSwitch-label .wfOnOffSwitch-inner{margin-left:0 !important}.wfOnOffSwitch-checkbox:checked+.wfOnOffSwitch-label .wfOnOffSwitch-switch{right:0 !important}#wordfenceConfigWarning,#wordfenceAdminEmailWarning{clear:left;margin-top:5px}.wfls-striped-table{width:100%;max-width:100%;border-collapse:collapse}.wfls-striped-table th{border-left:1px solid #bdbdbd}.wfls-striped-table th:first-of-type{border-left:0}.wfls-striped-table th,.wfls-striped-table td{padding:1rem}.wfls-striped-table thead th,.wfls-striped-table thead td,.wfls-striped-table tfoot th,.wfls-striped-table tfoot td,.wfls-striped-table tbody.thead th,.wfls-striped-table tbody.thead td{background-color:#ebebeb;color:#777;font-weight:bold;text-align:left}.wfls-striped-table tbody tr.even td,.wfls-striped-table tbody tr:nth-child(2n) td{background-color:#ffffff}.wfls-striped-table tbody tr td,.wfls-striped-table tbody tr.odd td{background-color:#fafafa}.wfls-striped-table tbody tr:hover>td{background-color:#fffbd8}.wfls-striped-table tbody.empty-row tr td{border-width:0;padding:8px 0;background-color:transparent}.wfls-striped-table .wfls-result-error,.wfls-block-list .wfls-result-error{color:#d0514c !important;font-weight:bold}.wfls-striped-table .wfls-result-error:before,.wfls-block-list .wfls-result-error:before{content:"\2718"}.wfls-striped-table .wfls-result-success{max-width:20%}.wfls-striped-table .wfls-result-success,.wfls-block-list .wfls-result-success{color:#008c10 !important;font-weight:bold}.wfls-striped-table .wfls-result-success:before,.wfls-block-list .wfls-result-success:before{content:"\2713"}.wfls-striped-table .wfls-result-success:before,.wfls-block-list .wfls-result-success:before,.wfls-striped-table .wfls-result-error:before,.wfls-block-list .wfls-result-error:before{font-size:16px;display:inline-block;margin:0px 8px 0px 0px}.wfls-striped-table .wfls-result-inactive,.wfls-block-list .wfls-result-inactive{font-weight:bold;color:#666666 !important}.wfls-fixed-table{table-layout:fixed}pre.wfls-pre{margin:8px 0 20px;padding:12px;background:#ffffff;border:1px solid #999999;overflow:auto}.wfls-center{text-align:center}#wfConfigForm,.wfls-diagnostics-wrapper{max-width:1035px}.wfls-hidden{display:none !important}.wfls-card{position:relative;margin:0 auto .625rem;padding:1rem;box-sizing:border-box;background:#fff;box-shadow:0 0 0 1px rgba(200,215,225,0.5),0 1px 2px #e9eff3}.wfls-card .wfls-card-inner{min-height:76px;width:100%;padding:8px;box-sizing:border-box;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;position:relative}.wfls-card .wfls-card-inner .wfls-card-content{max-width:75%}.wfls-card .wfls-card-inner .wfls-card-content .wfls-card-title{font-size:1.125rem;width:100%}.wfls-card .wfls-card-inner .wfls-card-content .wfls-card-subtitle{margin-top:.125rem;margin-bottom:.125rem;font-size:.875rem;color:#4f748e}.wfls-card .wfls-card-inner .wfls-card-action{position:absolute;top:0;right:0;height:100%;background:none;border:0;outline:0;width:48px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;vertical-align:middle;transition:transform 0.15s cubic-bezier(0.175, 0.885, 0.32, 1.275),color 0.2s ease-in}.wfls-card .wfls-card-inner .wfls-card-action .wfls-card-action-chevron{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJjaGV2cm9uLW9iamVjdCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgd2lkdGg9IjI0cHgiIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNCAyNCIKCSB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHBhdGggaWQ9ImNoZXZyb24iIGQ9Ik0yMCA5bC04IDgtOC04IDEuNDE0LTEuNDE0TDEyIDE0LjE3Mmw2LjU4Ni02LjU4NiIvPgo8L3N2Zz4K");background-repeat:no-repeat;background-position:center center;width:24px;height:24px;fill:#87a6bc}.wfls-card .wfls-card-inner .wfls-card-action .wfls-card-action-checkbox{background-image:url(../img/checkbox.png);background-repeat:no-repeat;background-position:left center;width:29px;height:29px}.wfls-card .wfls-card-inner .wfls-card-action .wfls-card-action-checkbox.checked{background-position:right center}.wfls-card .wfls-card-extra{display:none;padding:0.5rem;margin-top:1rem;border-top:1px solid #f3f6f8}@media (min-width: 768px){.wfls-card .wfls-card-extra{padding:1rem}}.wfls-card.active .wfls-card-extra{display:block}.wfls-card.wfls-card-left .wfls-card-content{margin-left:48px}.wfls-card.wfls-card-left .wfls-card-action{right:auto;left:0px}.wfls-card.disabled .wfls-card-content .wfls-card-title{color:#aaaaaa}.wfls-card.disabled .wfls-card-content .wfls-card-subtitle{color:#8ea6be}.wfls-inline-block{display:inline-block}@media (max-width: 767px){.wfls-inline-block-xs{display:inline-block}}.wfls-full-width{width:100%;max-width:100%}.wfls-no-top{margin-top:0 !important}.wfls-add-top{margin-top:1rem !important}.wfls-add-top-large{margin-top:1.5rem !important}.wfls-add-top-medium{margin-top:0.75rem !important}.wfls-add-top-small{margin-top:0.5rem !important}.wfls-add-top-smaller{margin-top:0.25rem !important}.wfls-no-bottom{margin-bottom:0 !important}.wfls-add-bottom{margin-bottom:1rem !important}.wfls-add-bottom-large{margin-bottom:1.5rem !important}.wfls-add-bottom-medium{margin-bottom:0.75rem !important}.wfls-add-bottom-small{margin-bottom:0.5rem !important}.wfls-add-bottom-smaller{margin-bottom:0.25rem !important}.wfls-padding-no-top{padding-top:0 !important}.wfls-no-right{margin-right:0 !important}.wfls-padding-no-bottom{padding-bottom:0 !important}.wfls-padding-no-left{padding-left:0 !important}.wfls-padding-no-right{padding-right:0 !important}.wfls-padding-add-top{padding-top:1rem !important}.wfls-padding-add-top-small{padding-top:0.5rem !important}.wfls-padding-add-top-medium{padding-top:0.75rem !important}.wfls-padding-add-top-large{padding-top:1.5rem !important}.wfls-padding-add-top-responsive{padding-top:1rem !important}@media (min-width: 768px){.wfls-padding-add-top-responsive{padding-top:1.5rem !important}}.wfls-padding-add-bottom{padding-bottom:1rem !important}.wfls-padding-add-bottom-small{padding-bottom:0.5rem !important}.wfls-padding-add-bottom-medium{padding-bottom:0.75rem !important}.wfls-padding-add-bottom-large{padding-bottom:1.5rem !important}.wfls-padding-add-bottom-responsive{padding-bottom:1rem !important}@media (min-width: 768px){.wfls-padding-add-bottom-responsive{padding-bottom:1.5rem !important}}.wfls-padding-no-bottom{padding-bottom:0 !important}.wfls-padding-add-left{padding-left:1rem !important}.wfls-padding-add-left-small{padding-left:0.5rem !important}.wfls-padding-add-left-medium{padding-left:0.75rem !important}.wfls-padding-add-left-large{padding-left:1.5rem !important}.wfls-padding-add-left-responsive{padding-left:1rem !important}@media (min-width: 768px){.wfls-padding-add-left-responsive{padding-left:1.5rem !important}}.wfls-padding-add-right{padding-right:1rem !important}.wfls-padding-add-right-small{padding-right:0.5rem !important}.wfls-padding-add-right-medium{padding-right:0.75rem !important}.wfls-padding-add-right-large{padding-right:1.5rem !important}.wfls-padding-add-right-responsive{padding-right:1rem !important}@media (min-width: 768px){.wfls-padding-add-right-responsive{padding-right:1.5rem !important}}.wfls-left{text-align:left !important}.wfls-center{text-align:center !important}.wfls-block-center{margin:0 auto}.wfls-right{text-align:right !important}.wfls-block-right{margin:0 0 0 auto}@media (max-width: 767px){.wfls-left-xs{text-align:left !important}.wfls-center-xs{text-align:center !important}.wfls-padding-add-top-xs{padding-top:1rem !important}.wfls-padding-add-top-xs-small{padding-top:0.5rem !important}.wfls-padding-add-top-xs-large{padding-top:1.5rem !important}.wfls-padding-add-bottom-xs{padding-bottom:1rem !important}.wfls-padding-add-bottom-xs-small{padding-bottom:0.5rem !important}.wfls-padding-add-bottom-xs-large{padding-bottom:1.5rem !important}}@media (min-width: 768px) and (max-width: 991px){.wfls-left-sm{text-align:left !important}.wfls-center-sm{text-align:center !important}}@media (min-width: 992px) and (max-width: 1199px){.wfls-left-md{text-align:left !important}.wfls-center-md{text-align:center !important}}@media (min-width: 1200px){.wfls-left-lg{text-align:left !important}.wfls-center-lg{text-align:center !important}}.wfls-border-no-top{border-top:none !important}.wfls-border-no-right{border-right:none !important}.wfls-border-no-bottom{border-bottom:none !important}.wfls-border-no-left{border-left:none !important}.wfls-overflow-x-auto{overflow-x:auto}.wfls-overflow-y-auto{overflow-y:auto}@media (max-width: 767px){.wfls-overflow-x-auto-xs{overflow-x:auto}.wfls-overflow-y-auto-xs{overflow-y:auto}}.wfls-blue{color:#00709e !important}.wfls-blue-light{color:#008cc1 !important}.wfls-gray-dark{color:#2d2d2d !important}.wfls-gray-blue{color:#3f596b !important}.wfls-green-dark{color:#11967a !important}.wfls-green-light{color:#16bc9b !important}.wfls-red-dark{color:#930000 !important}.wfls-red-light{color:#c10000 !important}.wfls-yellow-dark{color:#fcb214 !important}.wfls-yellow-light{color:#ffd10a !important}.wfls-gray{color:#525355 !important}.wfls-gray-light{color:#9f9fa0 !important}.wfls-nowrap{white-space:nowrap}.wfls-tip{color:#fcb214;font-size:1.1rem;margin-right:0.25rem}.wfls-text-small{font-size:85% !important}.wfls-text-plain{font-weight:400 !important}.wfls-scroll-x::-webkit-scrollbar,.wfls-scroll-y::-webkit-scrollbar{-webkit-appearance:none;width:7px;height:7px}.wfls-scroll-x::-webkit-scrollbar-thumb,.wfls-scroll-y::-webkit-scrollbar-thumb{border-radius:4px;background-color:rgba(0,0,0,0.194);-webkit-box-shadow:0 0 1px rgba(255,255,255,0.5)}.wfls-split-word{word-wrap:break-word;word-break:break-all}@media (max-width: 767px){.wfls-split-word-xs{word-wrap:break-word;word-break:break-all;white-space:normal !important}}.wfselect2-container{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;min-width:200px}@media (min-width: 768px){.wfselect2-container{min-width:280px}}@media (min-width: 992px){.wfselect2-container{min-width:320px}}@media (max-width: 767px){.wfselect2-container .wfselect2-search.wfselect2-search--inline{margin:0 !important}}.wfls-select2-placeholder-fix .wfselect2-search__field{width:auto !important}.wfls-page-title{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;margin-top:0.5rem}.wfls-page-title>*{-webkit-flex-grow:0;flex-grow:0;min-width:0}.wfls-page-title>*:first-child{-webkit-flex-grow:0;flex-grow:0;min-width:32px;-webkit-flex-basis:32px;flex-basis:32px;padding-right:0.25rem}.wfls-page-title .wordfence-icon32{margin:0;margin-right:0.5rem}.wfls-page-title h2{padding:0 !important}.wfls-page-title .wfOnOffSwitch{-webkit-flex-basis:69px;flex-basis:69px;-webkit-flex-shrink:0;flex-shrink:0;margin-left:0.5rem}.wfls-tab-container{background-color:#fff}@media (min-width: 768px){.wfls-tab-container{background-color:unset}}.wfls-page-tabs,.wfls-page-fixed-tabs{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;border-bottom:1px solid #d0d0d0;margin:0;margin-top:0.5rem;margin-left:-10px;margin-right:-10px}@media (min-width: 768px){.wfls-page-tabs,.wfls-page-fixed-tabs{margin-left:0;margin-right:0}}.wfls-page-tabs>*,.wfls-page-fixed-tabs>*{-webkit-flex-grow:0;flex-grow:0;min-width:0}.wfls-page-tabs>*:first-child,.wfls-page-fixed-tabs>*:first-child{-webkit-flex-grow:0;flex-grow:0;min-width:32px;-webkit-flex-basis:32px;flex-basis:32px}.wfls-page-tabs .wordfence-icon32,.wfls-page-fixed-tabs .wordfence-icon32{margin:0;margin-right:0.5rem;margin-left:0.5rem}@media (min-width: 768px){.wfls-page-tabs .wordfence-icon32,.wfls-page-fixed-tabs .wordfence-icon32{margin-left:0}}.wfls-page-tabs .wfls-text-tab,.wfls-page-fixed-tabs .wfls-text-tab{margin:0;margin-left:0.5rem;color:#333}.wfls-page-tabs .wfls-tab,.wfls-page-fixed-tabs .wfls-tab{border:1px solid #fff;border-top-right-radius:0.5rem;border-top-left-radius:0.5rem;border-bottom:none;margin-bottom:-1px;margin-right:0.5rem;color:#333}@media (min-width: 768px){.wfls-page-tabs .wfls-tab,.wfls-page-fixed-tabs .wfls-tab{border:1px solid #d0d0d0;background:#e6e6e6}}.wfls-page-tabs .wfls-tab a,.wfls-page-fixed-tabs .wfls-tab a{display:block;padding:0.5rem 1rem;font-size:14px;line-height:24px;text-decoration:none;font-weight:bold;color:#333}.wfls-page-tabs .wfls-tab.wfls-active,.wfls-page-tabs .wfls-tab:hover,.wfls-page-fixed-tabs .wfls-tab.wfls-active,.wfls-page-fixed-tabs .wfls-tab:hover{border-bottom:1px solid #f1f1f1;background:#f1f1f1;color:#00709e;-webkit-box-shadow:none;box-shadow:none}.wfls-page-tabs .wfls-tab.wfls-active a,.wfls-page-tabs .wfls-tab:hover a,.wfls-page-fixed-tabs .wfls-tab.wfls-active a,.wfls-page-fixed-tabs .wfls-tab:hover a{color:#00709e}.wfls-tab-content{display:none;margin-top:15px}.wfls-tab-content.wfls-active{display:block}.wfls-fixed-tab-content{margin-top:15px}.wfls-section-title{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start}.wfls-section-title>*{-webkit-flex-grow:0;flex-grow:0;min-width:0}.wfls-section-title>h1,.wfls-section-title>h2,.wfls-section-title>h3,.wfls-section-title>h4,.wfls-section-title>h5,.wfls-section-title>h6{-webkit-flex-grow:1;flex-grow:1;color:#2d2d2d !important;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif !important;line-height:1.5rem !important;font-weight:700 !important;padding:0 !important;margin:0 !important}@media (min-width: 768px){.wfls-section-title>h1,.wfls-section-title>h2,.wfls-section-title>h3,.wfls-section-title>h4,.wfls-section-title>h5,.wfls-section-title>h6{padding-right:0.25rem !important}}.wfls-section-title h2{font-size:1.3125rem;line-height:1.5}.wfls-section-title h3{font-size:1.125rem}.wfls-section-title h4{font-size:1rem}.wfls-section-title .wordfence-icon32{margin:0;margin-right:0.5rem}.wfls-status-circular{position:relative}.wfls-status-circular-text{position:absolute;left:50%;top:50%;padding:0;margin:0;transform:translate(-50%, -50%);color:#aaa;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:1.3125rem;font-weight:300;line-height:1.5}.wfls-status-circular .wfls-status-overlay-text{position:absolute;left:50%;top:50%;padding:0;margin:0;width:200%;text-align:center;transform:translate(-50%, -50%);font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:.875rem;font-weight:normal;line-height:1.3125;opacity:0.0;color:#777}.wfls-status-warning,.wfls-status-critical,.wfls-status-payment-expiring,.wfls-status-renewing{width:100px;height:100px;margin-bottom:1rem}.wfls-status-warning svg path{fill:#fcb214}.wfls-status-critical svg path{fill:#930000}.wfls-status-payment-expiring svg rect,.wfls-status-payment-expiring svg path{fill:#930000}.wfls-status-renewing svg rect,.wfls-status-renewing svg path{fill:#11967a}#howGetIPs-preview{color:#8c8c8c}#howGetIPs-preview strong{color:#666}.wfls-scrollTop{background:#424242;bottom:30px;right:15px;position:fixed;z-index:999;display:none}.wfls-scrollTop a{background:#959595;display:block;padding:4px 5px;line-height:32px;width:32px;color:#ffffff;text-align:center}.wfls-back-icon{color:#00709e;margin-right:0.75rem;font-size:1.5rem !important}.wfls-back-link-chevron{margin-left:1rem}.wfls-back-link-chevron:first-of-type{margin-left:0}.wfls-back-link{font-weight:bold;text-decoration:none}.wfls-premium-link{font-weight:bold}.wfls-boolean-switch{border:1px solid #aaa;display:block;cursor:pointer;width:54px;height:30px;min-width:54px;min-height:30px;-moz-border-radius:15px;-webkit-border-radius:15px;border-radius:15px;line-height:30px !important;background-color:#ffffff;position:relative;box-sizing:border-box;transition:background-color 0.2s ease-in-out, border-color 0.2s ease-in-out}@media (min-width: 768px){.wfls-boolean-switch{width:34px;height:20px;min-width:34px;min-height:20px;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;line-height:20px !important}}.wfls-boolean-switch .wfls-boolean-switch-handle{position:relative;display:block;border:1px solid #aaa;background-color:#fff;width:30px;height:30px;min-width:30px;min-height:30px;-moz-border-radius:15px;-webkit-border-radius:15px;border-radius:15px;margin-top:-1px;box-sizing:border-box;left:-1px;transition:border-color 0.2s ease-in-out, left 0.2s ease-in-out}@media (min-width: 768px){.wfls-boolean-switch .wfls-boolean-switch-handle{width:20px;height:20px;min-width:20px;min-height:20px;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px}}.wfls-boolean-switch.wfls-active{border:1px solid #00709e;background-color:#00709e}.wfls-boolean-switch.wfls-active .wfls-boolean-switch-handle{border:1px solid #00709e;left:25px}@media (min-width: 768px){.wfls-boolean-switch.wfls-active .wfls-boolean-switch-handle{left:15px}}.wfls-boolean-switch.wfls-disabled{pointer-events:none;border-color:#e2e2e2}.wfls-boolean-switch.wfls-disabled .wfls-boolean-switch-handle{border-color:#e2e2e2}.wfls-boolean-switch.wfls-disabled.wfls-active{border-color:#e2e2e2;background-color:#e2e2e2}.wfls-boolean-switch.wfls-disabled.wfls-active .wfls-boolean-switch-handle{border-color:#e2e2e2}.wfls-option-checkbox,[type=checkbox].wfls-option-checkbox+label:before{content:"";font-family:"Ionicons" !important;display:block;cursor:pointer;width:30px;height:30px;min-width:30px;min-height:30px;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;line-height:30px !important;text-align:center !important;background-color:#ffffff !important;box-shadow:0px 0px 0px 1px #aaa;color:#ffffff !important;font-size:30px !important;font-weight:normal !important}@media (min-width: 768px){.wfls-option-checkbox,[type=checkbox].wfls-option-checkbox+label:before{width:20px;height:20px;min-width:20px;min-height:20px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;line-height:21px !important;font-size:25px !important}}@media (min-width: 768px){.wfls-option-checkbox{position:relative}.wfls-option-checkbox>*{position:absolute;top:9px;left:50%;transform:translateX(-50%) translateY(-50%)}}.wfls-option-radio,[type=radio].wfls-option-radio+label:before{content:"\f401";font-family:"Ionicons" !important;display:block;cursor:pointer;width:30px;height:30px;min-width:30px;min-height:30px;line-height:30px !important;text-align:center !important;color:#ccc !important;font-size:30px !important;font-weight:normal !important}@media (min-width: 768px){.wfls-option-radio,[type=radio].wfls-option-radio+label:before{width:20px;height:20px;min-width:20px;min-height:20px;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;line-height:20px !important}}[type=checkbox].wfls-option-checkbox.wfls-small+label:before{width:20px;height:20px;min-width:20px;min-height:20px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;line-height:21px !important;font-size:20px !important}[type=radio].wfls-option-radio.wfls-small+label:before{width:20px;height:20px;min-width:20px;min-height:20px;line-height:21px !important;font-size:20px !important}[type=checkbox].wfls-option-checkbox+label:before,[type=radio].wfls-option-radio+label:before{text-align:center !important;text-indent:0px;display:inline-block;vertical-align:-6px;margin:0px 5px 0px 0px;font-weight:normal;font-style:normal}[type=checkbox].wfls-option-checkbox.wfls-small+label:before,[type=radio].wfls-option-radio.wfls-small+label:before{text-indent:0px;vertical-align:-3px}.wfls-option-checkbox.wfls-checked,[type=checkbox].wfls-option-checkbox:checked+label:before{color:#ffffff !important;box-shadow:0px 0px 0px 1px #00709e !important;background-color:#00709e !important}.wfls-option-checkbox.wfls-disabled,[type=checkbox].wfls-option-checkbox:disabled+label:before{color:#f1f1f1 !important;box-shadow:0px 0px 0px 1px #e2e2e2 !important;background-color:#f1f1f1 !important}.wfls-option-checkbox.wfls-checked.wfls-disabled,[type=checkbox].wfls-option-checkbox:disabled:checked+label:before{color:#777 !important;box-shadow:0px 0px 0px 1px #e2e2e2 !important;background-color:#f1f1f1 !important}.wfls-option-radio.wfls-checked,[type=radio].wfls-option-radio:checked+label:before{content:"\f3a7";color:#00709e !important}.wfls-option-checkbox[type=checkbox],.wfls-option-checkbox[type=radio],.wfls-option-radio[type=checkbox],.wfls-option-radio[type=radio]{position:absolute;left:-9999px}.wfls-option-text input[type="text"],input.wfls-input-text{text-align:left;width:100%;height:40px;border-radius:0;border:0;background-color:#ffffff;box-shadow:1px 1px 1px 2px rgba(215,215,215,0.65)}.wfls-option-text input[type="text"]:placeholder-shown,input.wfls-input-text:placeholder-shown{font-style:italic;color:#bfbfbf}::-webkit-input-placeholder{color:#bfbfbf}:-moz-placeholder{color:#bfbfbf;opacity:1}::-moz-placeholder{color:#bfbfbf;opacity:1}:-ms-input-placeholder{color:#bfbfbf}::-ms-input-placeholder{color:#bfbfbf}::placeholder{color:#bfbfbf}.wfls-option-premium .wfls-option-title,.wfls-option-premium .wfls-option-title>ul>li,.wfls-option.wfls-disabled .wfls-option-title,.wfls-option.wfls-disabled .wfls-option-title>ul>li{color:#aaa !important}.wfls-option-premium .wfls-option-checkbox,.wfls-option-premium .wfls-option-radio,.wfls-option.wfls-disabled .wfls-option-checkbox,.wfls-option.wfls-disabled .wfls-option-radio{opacity:0.5}.wfls-block .wfls-block-content .wfls-block-labeled-value.wfls-protection-status .wfls-block-labeled-value-value{padding-top:0}.wfls-block .wfls-block-content .wfls-block-labeled-value.wfls-protection-status .wfls-block-labeled-value-value .wfls-fa{font-size:8rem}.wfls-block .wfls-block-content .wfls-block-labeled-value.wfls-protection-status .wfls-block-labeled-value-value svg{width:160px}.wfls-block .wfls-block-content .wfls-block-labeled-value.wfls-protection-status .wfls-block-labeled-value-label{font-size:1.35rem;font-weight:300;padding-bottom:0}.wfls-block .wfls-block-content .wfls-block-labeled-value.wfls-protection-status-premium .wfls-block-labeled-value-value{color:#9f9fa0}.wfls-block .wfls-block-content .wfls-block-labeled-value.wfls-protection-status-premium .wfls-block-labeled-value-value svg{fill:#9f9fa0}.wfls-block .wfls-block-content .wfls-block-labeled-value.wfls-protection-status-premium .wfls-block-labeled-value-label{color:#9f9fa0}.wfls-indeterminate-progress{-webkit-animation:wfls-indeterminate-progress-keyframes 1s steps(8, end) infinite;-o-animation:wfls-indeterminate-progress-keyframes 1s steps(8, end) infinite;animation:wfls-indeterminate-progress-keyframes 1s steps(8, end) infinite}.wfls-indeterminate-progress path{fill:#00709e}@-moz-keyframes wfls-indeterminate-progress-keyframes{to{-moz-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes wfls-indeterminate-progress-keyframes{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes wfls-indeterminate-progress-keyframes{to{-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.wfls-flex-row{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.wfls-flex-row .wfls-flex-row-1{-webkit-flex-grow:1;flex-grow:1}.wfls-flex-row .wfls-flex-row-0{-webkit-flex-grow:0;flex-grow:0}.wfls-flex-row.wfls-flex-row-wrappable,.wfls-flex-row.wfls-flex-row-xs-wrappable{-webkit-flex-wrap:wrap;flex-wrap:wrap}.wfls-flex-row.wfls-flex-row-equal-heights{-webkit-align-items:stretch;align-items:stretch}.wfls-flex-row .wfls-flex-item-full-width{width:100%}.wfls-flex-row .wfls-flex-item-xs-100{-webkit-flex-basis:100%;flex-basis:100%;max-width:100%}@media (min-width: 768px){.wfls-flex-row.wfls-flex-row-xs-wrappable{-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.wfls-flex-row .wfls-flex-item-sm-50{-webkit-flex-basis:50%;flex-basis:50%}}.wfls-switch{display:-webkit-flex !important;display:flex !important;-webkit-align-items:stretch !important;align-items:stretch !important;-webkit-justify-content:flex-start !important;justify-content:flex-start !important;-webkit-flex-direction:row !important;flex-direction:row !important;margin:0;padding:0}.wfls-switch>li{margin:0 !important;padding:0.5rem 0.7rem !important;text-transform:uppercase;cursor:pointer;color:#aaa;font-weight:400;border-top:1px solid #bfbfbf;border-bottom:1px solid #bfbfbf;border-right:1px solid #bfbfbf}.wfls-switch>li:first-of-type{border-left:1px solid #bfbfbf;-moz-border-radius-topleft:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px}.wfls-switch>li:last-of-type{-moz-border-radius-topright:6px;-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-moz-border-radius-bottomright:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px}.wfls-switch>li.wfls-active{color:#ffffff;background-color:#00709e}.wfls-tooltip,.ui-widget.wfls-tooltip{max-width:600px;font-size:0.75rem;overflow-wrap:break-word}.wfls-widget-learning-mode{border-top:1px solid #eee;margin:0 -1rem;padding:1rem;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;-webkit-flex-direction:row;flex-direction:row}@media (min-width: 768px){.wfls-widget-learning-mode{padding:1.5rem}}.wfls-widget-learning-mode svg{width:18px}.wfls-widget-learning-mode svg path{fill:#aaa}.wfls-widget-learning-mode span{padding-left:0.5rem;font-size:.875rem;line-height:1.3125;font-weight:600}.wfls-drawer-overlay{position:fixed;top:0px;right:0px;bottom:0px;left:160px;background-color:rgba(0,0,0,0.5);z-index:9980;padding:5rem 0}.folded .wfls-drawer-overlay{left:36px}@media only screen and (max-width: 960px){.auto-fold .wfls-drawer-overlay{left:36px}}.rtl .wfls-drawer-overlay{right:160px;left:0px}.rtl .folded .wfls-drawer-overlay{right:36px}@media only screen and (max-width: 960px){.rtl .auto-fold .wfls-drawer-overlay{right:36px}}@media screen and (max-width: 782px){.wfls-drawer-overlay,.folded .wfls-drawer-overlay,.auto-fold .wfls-drawer-overlay,.rtl .wfls-drawer-overlay,.rtl .folded .wfls-drawer-overlay,.rtl .auto-fold .wfls-drawer-overlay{left:0px;right:0px}}.wfls-drawer{background-color:#ffffff;position:fixed;top:32px;bottom:0px;right:0px;z-index:9981}.wfls-drawer .wfls-modal{display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column;height:100%}.wfls-drawer .wfls-modal ul,.wfls-drawer .wfls-modal li{padding:0;margin:0}.wfls-drawer .wfls-modal .wfls-modal-header{-webkit-flex-shrink:0;flex-shrink:0;min-height:44px;padding:1rem;width:100%;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;position:relative;background-color:#00709e;color:#ffffff}.wfls-drawer .wfls-modal .wfls-modal-header .wfls-modal-header-content{max-width:75%}.wfls-drawer .wfls-modal .wfls-modal-header .wfls-modal-header-content .wfls-modal-title{font-size:1.3125rem;line-height:1.5;font-weight:300;width:100%;transition:color 0.2s ease-in}.wfls-drawer .wfls-modal .wfls-modal-header .wfls-modal-header-content .wfls-modal-subtitle{margin-top:.125rem;margin-bottom:.125rem;font-size:.575rem;color:#4f748e}.wfls-drawer .wfls-modal .wfls-modal-content{-webkit-flex-grow:1;flex-grow:1;display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column;padding:1rem}.wfls-drawer .wfls-modal .wfls-modal-content>*:first-child{margin-top:0}.wfls-drawer .wfls-modal .wfls-modal-content select,.wfls-drawer .wfls-modal .wfls-modal-content select option,.wfls-drawer .wfls-modal .wfls-modal-content .wfselect2-container--default{font-size:0.7rem;font-weight:bold}@media (min-width: 768px){.wfls-drawer .wfls-modal .wfls-modal-content select,.wfls-drawer .wfls-modal .wfls-modal-content select option,.wfls-drawer .wfls-modal .wfls-modal-content .wfselect2-container--default{font-size:0.8rem}}@media (min-width: 992px){.wfls-drawer .wfls-modal .wfls-modal-content select,.wfls-drawer .wfls-modal .wfls-modal-content select option,.wfls-drawer .wfls-modal .wfls-modal-content .wfselect2-container--default{font-size:0.9rem}}.wfls-drawer .wfls-modal .wfls-modal-content .wfls-option-select-option,.wfls-drawer .wfls-modal .wfls-modal-content .wfselect2-container--default,.wfls-drawer .wfls-modal .wfls-modal-content .wfselect2-container--default .wfselect2-selection--single{text-align:left;height:40px;border-radius:0;border:0;background-color:#ffffff;box-shadow:1px 1px 1px 2px rgba(215,215,215,0.35)}.wfls-drawer .wfls-modal .wfls-modal-content .wfls-option-select-option .wfselect2-selection__rendered,.wfls-drawer .wfls-modal .wfls-modal-content .wfselect2-container--default .wfselect2-selection__rendered,.wfls-drawer .wfls-modal .wfls-modal-content .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__rendered{color:#333;line-height:40px}.wfls-drawer .wfls-modal .wfls-modal-content .wfls-option-select-option .wfselect2-selection__arrow,.wfls-drawer .wfls-modal .wfls-modal-content .wfselect2-container--default .wfselect2-selection__arrow,.wfls-drawer .wfls-modal .wfls-modal-content .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow{height:38px}.wfls-drawer .wfls-modal .wfls-modal-content .wfls-option-select-option.wfselect2-container--disabled .wfselect2-selection__rendered,.wfls-drawer .wfls-modal .wfls-modal-content .wfselect2-container--default.wfselect2-container--disabled .wfselect2-selection__rendered,.wfls-drawer .wfls-modal .wfls-modal-content .wfselect2-container--default .wfselect2-selection--single.wfselect2-container--disabled .wfselect2-selection__rendered{color:#aaa}.wfls-drawer .wfls-modal .wfls-modal-content .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow b{border-color:#333 transparent transparent}.wfls-drawer .wfls-modal .wfls-modal-content .wfselect2-container--default.wfselect2-container--open .wfselect2-selection--single .wfselect2-selection__arrow b{border-color:transparent transparent #333}.wfls-drawer .wfls-modal .wfls-modal-footer{-webkit-flex-shrink:0;flex-shrink:0;min-height:44px;padding:1rem;width:100%;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;position:relative;background-color:#f1f1f1;border-top:1px solid #d9d9d9}.wfls-mobile-menu-overlay{position:fixed;top:0px;right:0px;bottom:0px;left:0px;background-color:rgba(0,0,0,0.5);z-index:100000}.wfls-mobile-menu-overlay>.wfls-mobile-menu-tap-hint{position:absolute;top:25%;left:50%;transform:translateX(-50%);color:#ffffff;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:1.3125rem;font-weight:300;line-height:1.5}.wfls-mobile-menu{position:fixed;left:50%;transform:translateX(-50%);z-index:100001}.wfls-mobile-menu>.wfls-mobile-menu-items{margin:0;padding:0 0 0.25rem 0;list-style:none}.wfls-mobile-menu>.wfls-mobile-menu-items>li{margin:0;padding:0.25rem 0}.wfls-mobile-menu>.wfls-mobile-menu-items>li>a{box-sizing:border-box}.wfls-callout-warning{background-color:#feecc4;padding:0.8rem 1.25rem}.wfls-tip-light-bulb{color:#fcb214;font-size:1.5rem;font-weight:bold}.wfls-tip-info-message{padding-left:0.5rem !important;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:.875rem;color:#2d2d2d;line-height:1.3125;font-weight:normal}#wfls-qr-code{width:175px;height:175px;margin:0 auto}@media (min-width: 500px){#wfls-qr-code{width:256px;height:256px}}#wfls-qr-code-text{max-width:100%}#wfls-activate-field{margin:0 auto;font-size:1.5rem;display:block;text-align:center}.wfls-recovery-codes{list-style-type:none}.wfls-recovery-codes li{font-family:monospace !important;text-align:center}#wfls-recovery-download .dashicons,#wfls-recovery-new-download .dashicons{line-height:26px}#wfls-ip-source-trusted-proxies{display:none}ul.wfls-option.wfls-option-howgetips .wfls-option-ip-source-details{display:-webkit-flex;display:flex;-webkit-align-items:flex-start;align-items:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:0.8rem;margin-top:0.5rem}#wfls-ip-source-preview{color:#8c8c8c}#wfls-ip-source-preview strong{color:#666}.wfls-inline-notice{background:#fff;border:1px solid #ccd0d4;border-left-color:#ffb900;border-left-width:4px;box-shadow:0 1px 1px rgba(0,0,0,0.04);padding:4px 12px;display:flex;justify-content:flex-start;align-items:center}.wfls-inline-notice>*{flex-grow:1}.wfls-inline-notice:first-child{flex-grow:0;flex-shrink:0}.wfls-inline-notice span{padding-left:0.5rem}.wfls-page-indicator{vertical-align:bottom}#wfls-customer-2fa-required-warning{margin-top:0}#wfls-activation-help-link-container{margin-right:0.5rem}.wfls-block{display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column;position:relative;margin:0 auto 0.5rem;box-sizing:border-box;background-color:#fff;box-shadow:0 0 0 1px rgba(200,215,225,0.25),0 1px 2px #e9eff3}.wfls-block.wfls-block-transparent{background-color:transparent;box-shadow:none}.wfls-block .wfls-block-banner{min-height:44px;margin:0 -1rem;padding:0;box-sizing:border-box;position:relative;background-color:#fcb214;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-direction:row;flex-direction:row}.wfls-block .wfls-block-banner>li{margin:0;padding:0.75rem 1rem}@media (min-width: 768px){.wfls-block .wfls-block-banner{margin:0 -1.5rem}.wfls-block .wfls-block-banner>li{padding:0.75rem 1.5rem}}.wfls-block .wfls-block-header{-webkit-flex-shrink:0;flex-shrink:0;-webkit-flex-grow:0;flex-grow:0;padding:1rem 0 0.5rem 0;width:100%;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;position:relative}.wfls-block .wfls-block-header.wfls-block-header-border-bottom{border-bottom:1px solid #e2e2e2;padding-left:1rem;padding-right:1rem}@media (min-width: 768px){.wfls-block .wfls-block-header.wfls-block-header-border-bottom{padding-right:1.5rem;padding-left:1.5rem}}.wfls-block .wfls-block-header .wfls-block-header-content{max-width:75%}.wfls-block .wfls-block-header .wfls-block-header-content .wfls-block-title{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:0.9rem;width:100%;transition:color 0.2s ease-in}.wfls-block .wfls-block-header .wfls-block-header-content .wfls-block-subtitle{margin-top:.125rem;margin-bottom:.125rem;font-size:0.775rem}.wfls-block .wfls-block-header .wfls-block-header-action{position:absolute;top:0;right:0;height:100%;background:none;border:0;outline:0;width:48px;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-end;justify-content:flex-end;vertical-align:middle;transition:transform 0.15s cubic-bezier(0.175, 0.885, 0.32, 1.275),color 0.2s ease-in}.wfls-block .wfls-block-header .wfls-block-header-action.wfls-block-header-action-text{width:auto}.wfls-block .wfls-block-header .wfls-block-header-action.wfls-block-header-action-text.wfls-block-header-action-text-success{color:#11967a}.wfls-block .wfls-block-header .wfls-block-header-action.wfls-block-header-action-text.wfls-block-header-action-text-warning{color:#930000}.wfls-block .wfls-block-header .wfls-block-header-action.wfls-block-header-action-text.wfls-block-header-action-text-warning a{color:#930000}.wfls-block .wfls-block-header .wfls-block-header-action .wfls-block-header-action-chevron{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJjaGV2cm9uLW9iamVjdCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgd2lkdGg9IjI0cHgiIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNCAyNCIKCSB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHBhdGggaWQ9ImNoZXZyb24iIGQ9Ik0yMCA5bC04IDgtOC04IDEuNDE0LTEuNDE0TDEyIDE0LjE3Mmw2LjU4Ni02LjU4NiIvPgo8L3N2Zz4K");background-repeat:no-repeat;background-position:center center;width:24px;height:24px}.wfls-block .wfls-block-header .wfls-block-header-action .wfls-block-header-action-disclosure{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJkaXNjbG9zdXJlLWNsb3NlZC1vYmplY3QiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSIxMnB4IiBoZWlnaHQ9IjEycHgiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMTIgMTIiCgkgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxwYXRoIGlkPSJkaXNjbG9zdXJlLWNsb3NlZCIgZD0iTSA2IDAgbCA2IDYgLTYgNiAwIC0xMiIgZmlsbD0iIzc3NyIvPgo8L3N2Zz4=");background-repeat:no-repeat;background-position:center center;width:12px;height:12px;transition:transform 0.15s cubic-bezier(0.175, 0.885, 0.32, 1.275),background 0.2s ease-in}.wfls-block .wfls-block-header .wfls-block-header-action .wfls-block-header-action-checkbox{background-image:url(../img/checkbox.png);background-repeat:no-repeat;background-position:left center;width:29px;height:29px}.wfls-block .wfls-block-header .wfls-block-header-action .wfls-block-header-action-checkbox.wfls-checked{background-position:right center}.wfls-block .wfls-block-content{-webkit-flex-grow:1;flex-grow:1;display:none;padding:0 1rem}@media (min-width: 768px){.wfls-block .wfls-block-content{padding:0 1.5rem}}.wfls-block .wfls-block-content .wfls-block-list{margin:0 -1rem;padding:0;list-style:none}@media (min-width: 768px){.wfls-block .wfls-block-content .wfls-block-list{margin:0 -1.5rem}}.wfls-block .wfls-block-content .wfls-block-list.wfls-block-list-striped>li:nth-of-type(odd){background-color:#f9f9f9}.wfls-block .wfls-block-content .wfls-block-list.wfls-block-list-striped>li:nth-of-type(even){background-color:#ffffff}.wfls-block .wfls-block-content .wfls-block-list>li{display:block;min-height:44px;padding:0 1rem;margin:0;border-top:1px solid #e2e2e2;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between}@media (min-width: 768px){.wfls-block .wfls-block-content .wfls-block-list>li{padding:0 1.5rem}}.wfls-block .wfls-block-content .wfls-block-list>li>*:first-child{-webkit-flex-grow:1;flex-grow:1;min-width:0}.wfls-block .wfls-block-content .wfls-block-list.wfls-block-list-horizontal{box-sizing:border-box;margin-top:-1px;display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-wrap:wrap;flex-wrap:wrap}.wfls-block .wfls-block-content .wfls-block-list.wfls-block-list-horizontal>li{-webkit-flex-grow:1;flex-grow:1;-webkit-flex-basis:100%;flex-basis:100%;border-left:1px solid #e2e2e2}@media (min-width: 768px){.wfls-block .wfls-block-content .wfls-block-list.wfls-block-list-horizontal>li{-webkit-flex-basis:50%;flex-basis:50%}}@media (min-width: 992px){.wfls-block .wfls-block-content .wfls-block-list.wfls-block-list-horizontal>li{-webkit-flex-basis:25%;flex-basis:25%}}.wfls-block .wfls-block-content .wfls-block-list.wfls-block-list-horizontal.wfls-block-list-nowrap{overflow-y:auto;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.wfls-block .wfls-block-content .wfls-block-list.wfls-block-list-horizontal.wfls-block-list-nowrap>li{-webkit-flex-shrink:0;flex-shrink:0}.wfls-block .wfls-block-content .wfls-block-list.wfls-block-list-horizontal.wfls-block-list-horizontal-5>li{-webkit-flex-grow:1;flex-grow:1;-webkit-flex-basis:20%;flex-basis:20%}.wfls-block .wfls-block-content .wfls-block-list.wfls-block-list-horizontal>*:first-child{border-left:0}@media (min-width: 768px){.wfls-block .wfls-block-content .wfls-block-list.wfls-block-list-horizontal.wfls-block-list-equal>li{max-width:50%}}@media (min-width: 992px){.wfls-block .wfls-block-content .wfls-block-list.wfls-block-list-horizontal.wfls-block-list-equal>li{max-width:25%}}.wfls-block .wfls-block-content .wfls-block-list.wfls-block-list-horizontal.wfls-block-list-horizontal-5.wfls-block-list-equal>li{max-width:20%}.wfls-block .wfls-block-content .wfls-block-list .wfls-block-list-state{text-align:center}@media (min-width: 1200px){.wfls-block .wfls-block-content .wfls-block-list .wfls-block-list-state{text-align:left}}.wfls-block .wfls-block-content .wfls-block-list .wfls-block-list-state-enabled .wfls-fa{color:#11967a}.wfls-block .wfls-block-content .wfls-block-list .wfls-block-list-state-disabled .wfls-fa{color:#525355}.wfls-block .wfls-block-content .wfls-block-list .wfls-block-list-state-premium{color:#9f9fa0}.wfls-block .wfls-block-content .wfls-block-list .wfls-block-list-dismiss{padding-left:2rem;font-size:1.25rem}.wfls-block .wfls-block-content .wfls-block-list .wfls-block-list-dismiss a{color:#525355}.wfls-block .wfls-block-content:first-child>.wfls-block-list>li:first-child{border-top:none}.wfls-block .wfls-block-content .wfls-block-left-right{margin:0 -1rem;padding:0;list-style:none;display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-wrap:wrap;flex-wrap:wrap}@media (min-width: 768px){.wfls-block .wfls-block-content .wfls-block-left-right{margin:0 -1.5rem}}.wfls-block .wfls-block-content .wfls-block-left-right.wfls-block-left-right-nowrap{-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.wfls-block .wfls-block-content .wfls-block-left-right>li{display:block;min-height:44px;padding:0;margin:0;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between}.wfls-block .wfls-block-content .wfls-block-left-right>li>*:first-child{-webkit-flex-grow:1;flex-grow:1;min-width:0}.wfls-block .wfls-block-content .wfls-block-left-right>li.wfls-left{text-align:left}.wfls-block .wfls-block-content .wfls-block-left-right>li.wfls-right{text-align:right}.wfls-block .wfls-block-content .wfls-block-left-center-right{margin:0 -1rem;padding:0;list-style:none;display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-align-content:center;align-content:center;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.wfls-block .wfls-block-content .wfls-block-left-center-right>li{display:block;min-height:44px;padding:0;margin:0;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-grow:1;flex-grow:1;-webkit-flex-basis:33.3333%;flex-basis:33.3333%;max-width:33.3333%}.wfls-block .wfls-block-content .wfls-block-left-center-right>li a{text-decoration:none;font-size:.875rem}.wfls-block .wfls-block-content .wfls-block-left-center-right>li.wfls-left{text-align:left}.wfls-block .wfls-block-content .wfls-block-left-center-right>li.wfls-center{text-align:center;-webkit-justify-content:center;justify-content:center}.wfls-block .wfls-block-content .wfls-block-left-center-right>li.wfls-center .wordfence-icon32{margin:0}.wfls-block .wfls-block-content .wfls-block-left-center-right>li.wfls-right{text-align:right;-webkit-justify-content:flex-end;justify-content:flex-end}.wfls-block .wfls-block-content .wfls-block-labeled-value{box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-direction:column;flex-direction:column;margin:0 -1rem;padding:1rem}@media (min-width: 768px){.wfls-block .wfls-block-content .wfls-block-labeled-value{margin:0 -1.5rem;padding:1.5rem}}.wfls-block .wfls-block-content .wfls-block-labeled-value-value{font-size:3rem;line-height:3rem;color:#9f9fa0;padding:1rem}.wfls-block .wfls-block-content .wfls-block-labeled-value-label{font-size:0.75rem;color:#9f9fa0;padding:0 1rem 1rem 1rem}.wfls-block .wfls-block-footer{-webkit-flex-shrink:0;flex-shrink:0;-webkit-flex-grow:0;flex-grow:0;min-height:44px;padding:1rem;width:100%;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;position:relative;background-color:#e4e4e4}.wfls-block .wfls-block-footer .wfls-block-footer-content{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;width:100%}.wfls-block .wfls-block-footer .wfls-block-footer-content>*{-webkit-flex-grow:1;flex-grow:1}.wfls-block .wfls-block-footer .wfls-block-footer-content .wfls-block-title{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:0.9rem;width:100%;transition:color 0.2s ease-in}.wfls-block .wfls-block-footer .wfls-block-footer-content .wfls-block-subtitle{margin-top:.125rem;margin-bottom:.125rem;font-size:0.775rem}.wfls-block .wfls-block-footer .wfls-block-footer-action{-webkit-flex-grow:0;flex-grow:0;background:none;border:0;outline:0;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-end;justify-content:flex-end;vertical-align:middle}.wfls-block.wfls-block-no-header .wfls-block-content .wfls-block-list>li{border-top:none}.wfls-block.wfls-active .wfls-block-content,.wfls-block.wfls-always-active .wfls-block-content{display:block}.wfls-block.wfls-active>.wfls-block-header>.wfls-block-header-content>.wfls-block-title{color:#00709e}.wfls-block.wfls-active>.wfls-block-header>.wfls-block-header-content>.wfls-block-header-action>.wfls-block-header-action-disclosure{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJkaXNjbG9zdXJlLWNsb3NlZC1vYmplY3QiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSIxMnB4IiBoZWlnaHQ9IjEycHgiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMTIgMTIiCgkgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxwYXRoIGlkPSJkaXNjbG9zdXJlLWNsb3NlZCIgZD0iTSA2IDAgbCA2IDYgLTYgNiAwIC0xMiIgZmlsbD0iIzAwNzA5ZSIvPgo8L3N2Zz4=") !important;transform:rotate(90deg)}.wfls-block.wfls-disabled>.wfls-block-header>.wfls-block-header-content>.wfls-block-title,.wfls-block.wfls-disabled>.wfls-block-header>.wfls-block-header-content>.wfls-block-subtitle{color:#bfbfbf !important}.wfls-block.wfls-disabled>.wfls-block-header>.wfls-block-header-content>.wfls-block-header-action>.wfls-block-header-action-disclosure{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJkaXNjbG9zdXJlLWNsb3NlZC1vYmplY3QiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSIxMnB4IiBoZWlnaHQ9IjEycHgiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMTIgMTIiCgkgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxwYXRoIGlkPSJkaXNjbG9zdXJlLWNsb3NlZCIgZD0iTSA2IDAgbCA2IDYgLTYgNiAwIC0xMiIgZmlsbD0iI2JkYmRiZCIvPgo8L3N2Zz4=") !important;transform:rotate(0deg)}.wfls-block.wfls-disabled>.wfls-block-content{display:none !important}.wfls-block.wfls-block-header-left .wfls-block-header-content{margin-left:48px}.wfls-block.wfls-block-header-left .wfls-block-header-action{right:auto;left:0px}.wfls-block.wfls-disabled .wfls-dashboard-item-content .wfls-block-title{color:#aaaaaa}.wfls-block.wfls-disabled .wfls-dashboard-item-content .wfls-block-subtitle{color:#8ea6be}.wfls-section-title{margin-bottom:1rem}.wfls-status-detail{box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-direction:column;flex-direction:column;margin:0 -1rem;padding:1rem}.wfls-status-detail p{margin:0 0 0.45rem 0}.wfls-status-detail .wfls-status-circular{margin-bottom:1rem}.wfls-status-detail .wfls-status-detail-title{font-weight:700 !important;font-size:1rem !important;line-height:1.3125 !important}.wfls-status-detail .wfls-status-detail-subtitle{font-size:.875rem !important;line-height:1.3125 !important;font-weight:normal !important;text-align:center}.wfls-status-detail .wfls-status-detail-link>a{font-weight:600 !important;font-size:0.85rem !important}.wfls-block-navigation-option{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.wfls-block-navigation-option svg.wfls-block-navigation-option-icon{width:50px;min-width:50px;fill:#9f9fa0}.wfls-block-navigation-option:hover{cursor:pointer}.wfls-block-navigation-option:hover a{text-decoration:underline}.wfls-block-navigation-option:hover svg.wfls-block-navigation-option-icon{fill:#00709e}.wfls-select-group{display:-webkit-flex !important;display:flex !important;-webkit-align-items:center !important;align-items:center !important;-webkit-justify-content:flex-start !important;justify-content:flex-start !important;-webkit-flex-direction:row !important;flex-direction:row !important;-webkit-flex-grow:0 !important;flex-grow:0 !important}.wfls-select-group .wfselect2-container{min-width:200px}@media (max-width: 767px){.wfls-select-group .wfselect2-container{max-width:100px}}.wfls-select-group .wfselect2-container--default .wfselect2-selection--single{display:block;width:100%;height:38px;padding:.5rem 1.25rem;font-size:14px;line-height:1.42857;color:#2b2b2b;background-color:#fff;background-image:none;border:1px solid #ddd;border-radius:4px;border-top-right-radius:0;border-bottom-right-radius:0;border-right:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;-o-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s}.wfls-select-group .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__rendered{color:#2b2b2b;line-height:inherit}.wfls-select-group .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow{height:38px}.wfls-select-group .wfls-form-control{display:inline-block;width:auto;border-top-left-radius:0;border-bottom-left-radius:0;margin-left:0}.wfls-flex-horizontal{display:-webkit-flex !important;display:flex !important;-webkit-align-items:center !important;align-items:center !important;-webkit-justify-content:flex-start !important;justify-content:flex-start !important;-webkit-flex-direction:row !important;flex-direction:row !important}.wfls-flex-horizontal>*:first-child{-webkit-flex-grow:0 !important;flex-grow:0 !important}.wfls-flex-horizontal.wfls-flex-align-left{-webkit-align-items:flex-start !important;align-items:flex-start !important}.wfls-flex-horizontal.wfls-flex-align-right{-webkit-justify-content:flex-end !important;justify-content:flex-end !important}.wfls-flex-horizontal.wfls-flex-full-width{width:100%}.wfls-flex-horizontal.wfls-flex-full-width>*:last-child{-webkit-flex-grow:1 !important;flex-grow:1 !important}.wfls-flex-horizontal.wfls-flex-full-width.wfls-flex-grow-first>*:first-child{-webkit-flex-grow:1 !important;flex-grow:1 !important}.wfls-flex-horizontal.wfls-flex-full-width.wfls-flex-grow-first>*:last-child{-webkit-flex-grow:0 !important;flex-grow:0 !important}.wfls-flex-horizontal.wfls-flex-full-width.wfls-flex-grow-all>*:first-child,.wfls-flex-horizontal.wfls-flex-full-width.wfls-flex-grow-all>*{-webkit-flex-grow:1 !important;flex-grow:1 !important}.wfls-flex-horizontal>li{padding:0;margin:0}.wfls-flex-vertical{display:-webkit-flex !important;display:flex !important;-webkit-align-items:center !important;align-items:center !important;-webkit-justify-content:flex-start !important;justify-content:flex-start !important;-webkit-flex-direction:column !important;flex-direction:column !important}.wfls-flex-vertical>*:first-child{-webkit-flex-grow:0 !important;flex-grow:0 !important}.wfls-flex-vertical.wfls-flex-align-left{-webkit-align-items:flex-start !important;align-items:flex-start !important}.wfls-flex-vertical.wfls-flex-align-right{-webkit-align-items:flex-end !important;align-items:flex-end !important}.wfls-flex-vertical.wfls-flex-full-width{-webkit-align-items:stretch !important;align-items:stretch !important}@media (max-width: 767px){.wfls-flex-vertical.wfls-flex-align-left-xs{-webkit-align-items:flex-start !important;align-items:flex-start !important}}@media (min-width: 768px) and (max-width: 991px){.wfls-flex-vertical.wfls-flex-align-left-sm{-webkit-align-items:flex-start !important;align-items:flex-start !important}}@media (min-width: 992px) and (max-width: 1199px){.wfls-flex-vertical.wfls-flex-align-left-md{-webkit-align-items:flex-start !important;align-items:flex-start !important}}@media (min-width: 1200px){.wfls-flex-vertical.wfls-flex-align-left-lg{-webkit-align-items:flex-start !important;align-items:flex-start !important}}.wfls-flex-vertical>li{padding:0;margin:0}@media (max-width: 767px){.wfls-flex-vertical-xs{display:-webkit-flex !important;display:flex !important;-webkit-align-items:center !important;align-items:center !important;-webkit-justify-content:flex-start !important;justify-content:flex-start !important;-webkit-flex-direction:column !important;flex-direction:column !important}.wfls-flex-vertical-xs>*:first-child{-webkit-flex-grow:0 !important;flex-grow:0 !important}.wfls-flex-vertical-xs.wfls-flex-align-left{-webkit-align-items:flex-start !important;align-items:flex-start !important}.wfls-flex-vertical-xs.wfls-flex-align-right{-webkit-align-items:flex-end !important;align-items:flex-end !important}.wfls-flex-vertical-xs.wfls-flex-full-width{-webkit-align-items:stretch !important;align-items:stretch !important}}ul.wfls-option,.wfls-form-field{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;flex-wrap:nowrap;padding:1rem 0;position:relative}ul.wfls-option li,.wfls-form-field li{margin:0;padding:0}ul.wfls-option.wfls-option-no-spacing,.wfls-form-field.wfls-option-no-spacing{padding:0;margin:0}ul.wfls-option.wfls-option-toggled>*:last-child,ul.wfls-option.wfls-option-toggled-boolean-switch>*:last-child,ul.wfls-option.wfls-option-toggled-select>*:last-child,ul.wfls-option.wfls-option-select>*:last-child,ul.wfls-option.wfls-option-text>*:last-child,ul.wfls-option.wfls-option-textarea>*:last-child,ul.wfls-option.wfls-option-switch>*:last-child,ul.wfls-option.wfls-option-footer>*:last-child,.wfls-form-field.wfls-option-toggled>*:last-child,.wfls-form-field.wfls-option-toggled-boolean-switch>*:last-child,.wfls-form-field.wfls-option-toggled-select>*:last-child,.wfls-form-field.wfls-option-select>*:last-child,.wfls-form-field.wfls-option-text>*:last-child,.wfls-form-field.wfls-option-textarea>*:last-child,.wfls-form-field.wfls-option-switch>*:last-child,.wfls-form-field.wfls-option-footer>*:last-child{margin-right:1rem}@media (max-width: 768px){ul.wfls-option.wfls-option-footer,.wfls-form-field.wfls-option-footer{-webkit-flex-direction:column;flex-direction:column}}ul.wfls-option>.wfls-option-content,.wfls-form-field>.wfls-option-content{-webkit-flex-grow:1;flex-grow:1}ul.wfls-option>.wfls-option-content>ul,.wfls-form-field>.wfls-option-content>ul{display:-webkit-flex;display:flex;-webkit-align-items:flex-start;align-items:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column;-webkit-flex-wrap:nowrap;flex-wrap:nowrap;width:100%}ul.wfls-option>.wfls-option-content>ul>*:first-child,.wfls-form-field>.wfls-option-content>ul>*:first-child{-webkit-flex-grow:1;flex-grow:1}@media (min-width: 768px){ul.wfls-option>.wfls-option-content>ul,.wfls-form-field>.wfls-option-content>ul{-webkit-flex-direction:row;flex-direction:row;-webkit-align-items:center;align-items:center}}ul.wfls-option.wfls-option-toggled-segmented *,.wfls-form-field.wfls-option-toggled-segmented *{-webkit-flex-grow:0;flex-grow:0}ul.wfls-option.wfls-option-toggled-segmented *:first-child,.wfls-form-field.wfls-option-toggled-segmented *:first-child{-webkit-flex-grow:1;flex-grow:1}ul.wfls-option.wfls-option-toggled-segmented>*:last-child,.wfls-form-field.wfls-option-toggled-segmented>*:last-child{margin-left:1rem}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-title,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-title{font-size:.8rem}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-align-content:stretch;align-content:stretch;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label{-webkit-flex-grow:1;flex-grow:1;-webkit-flex-basis:50%;flex-basis:50%;display:block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;text-transform:uppercase;padding:.5rem 1.25rem;font-size:14px;line-height:1.42857;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;color:#00709e;background-color:#fff;border-color:#00709e;border-radius:0}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label:focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label:focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.focus{color:#00709e;background-color:#e6e6e6;border-color:#00161f}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label:hover,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label:hover{color:#00709e;background-color:#e6e6e6;border-color:#004561}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label:active,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.active,.wfls-open>ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.wfls-dropdown-toggle,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label:active,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.active,.wfls-open>.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.wfls-dropdown-toggle{color:#00709e;background-color:#e6e6e6;border-color:#004561}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label:active:hover,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label:active:focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label:active.focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.active:hover,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.active:focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.active.focus,.wfls-open>ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.wfls-dropdown-toggle:hover,.wfls-open>ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.wfls-dropdown-toggle:focus,.wfls-open>ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.wfls-dropdown-toggle.focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label:active:hover,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label:active:focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label:active.focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.active:hover,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.active:focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.active.focus,.wfls-open>.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.wfls-dropdown-toggle:hover,.wfls-open>.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.wfls-dropdown-toggle:focus,.wfls-open>.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.wfls-dropdown-toggle.focus{color:#00709e;background-color:#d4d4d4;border-color:#00161f}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label:active,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.wfls-active,.wfls-open>ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.wfls-dropdown-toggle,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label:active,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.wfls-active,.wfls-open>.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.wfls-dropdown-toggle{background-image:none}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.wfls-disabled,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label[disabled],ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label[readonly],fieldset[disabled] ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.wfls-disabled,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label[disabled],.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label[readonly],fieldset[disabled] .wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label{color:#777;background-color:#fff;border-color:#e2e2e2;cursor:not-allowed;opacity:0.75}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.wfls-disabled:hover,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.wfls-disabled:focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.wfls-disabled.wfls-focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label[disabled]:hover,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label[disabled]:focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label[disabled].wfls-focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label[readonly]:hover,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label[readonly]:focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label[readonly].wfls-focus,fieldset[disabled] ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label:hover,fieldset[disabled] ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label:focus,fieldset[disabled] ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.wfls-focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.wfls-disabled:hover,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.wfls-disabled:focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.wfls-disabled.wfls-focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label[disabled]:hover,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label[disabled]:focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label[disabled].wfls-focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label[readonly]:hover,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label[readonly]:focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label[readonly].wfls-focus,fieldset[disabled] .wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label:hover,fieldset[disabled] .wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label:focus,fieldset[disabled] .wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.wfls-focus{background-color:#fff;border-color:#00709e}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label .wfls-badge,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label .wfls-badge{color:#fff;background-color:#00709e}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.wfls-segment-first,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.wfls-segment-first{border-radius:4px 0 0 4px}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments label.wfls-segment-last,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments label.wfls-segment-last{border-radius:0 4px 4px 0}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio],.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]{position:absolute;left:-9999px}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label{color:#fff;background-color:#00709e;border-color:#005e85}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.focus{color:#fff;background-color:#004c6b;border-color:#000405}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:hover,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:hover{color:#fff;background-color:#004c6b;border-color:#003347}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:active,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.active,.wfls-open>ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-dropdown-toggle,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:active,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.active,.wfls-open>.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-dropdown-toggle{color:#fff;background-color:#004c6b;border-color:#003347}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:active:hover,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:active:focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:active.focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.active:hover,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.active:focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.active.focus,.wfls-open>ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-dropdown-toggle:hover,.wfls-open>ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-dropdown-toggle:focus,.wfls-open>ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-dropdown-toggle.focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:active:hover,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:active:focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:active.focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.active:hover,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.active:focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.active.focus,.wfls-open>.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-dropdown-toggle:hover,.wfls-open>.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-dropdown-toggle:focus,.wfls-open>.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-dropdown-toggle.focus{color:#fff;background-color:#003347;border-color:#000405}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:active,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-active,.wfls-open>ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-dropdown-toggle,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:active,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-active,.wfls-open>.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-dropdown-toggle{background-image:none}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-disabled,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[disabled],ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[readonly],fieldset[disabled] ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-disabled,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[disabled],.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[readonly],fieldset[disabled] .wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label{color:#fff;background-color:#59a2c0;border-color:#5996b0;cursor:not-allowed;opacity:0.75}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-disabled:hover,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-disabled:focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-disabled.wfls-focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[disabled]:hover,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[disabled]:focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[disabled].wfls-focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[readonly]:hover,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[readonly]:focus,ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[readonly].wfls-focus,fieldset[disabled] ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:hover,fieldset[disabled] ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:focus,fieldset[disabled] ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-disabled:hover,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-disabled:focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-disabled.wfls-focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[disabled]:hover,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[disabled]:focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[disabled].wfls-focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[readonly]:hover,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[readonly]:focus,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label[readonly].wfls-focus,fieldset[disabled] .wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:hover,fieldset[disabled] .wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label:focus,fieldset[disabled] .wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label.wfls-focus{background-color:#00709e;border-color:#005e85}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label .wfls-badge,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:checked+label .wfls-badge{color:#00709e;background-color:#fff}ul.wfls-option.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:disabled+label,.wfls-form-field.wfls-option-toggled-segmented .wfls-option-segments [type=radio]:disabled+label{cursor:not-allowed;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=65);opacity:.65}ul.wfls-option.wfls-option-toggled-multiple,ul.wfls-option.wfls-option-2fa-roles,.wfls-form-field.wfls-option-toggled-multiple,.wfls-form-field.wfls-option-2fa-roles{-webkit-flex-direction:column;flex-direction:column;-webkit-align-items:flex-start;align-items:flex-start}ul.wfls-option.wfls-option-toggled-multiple>.wfls-option-title,ul.wfls-option.wfls-option-2fa-roles>.wfls-option-title,.wfls-form-field.wfls-option-toggled-multiple>.wfls-option-title,.wfls-form-field.wfls-option-2fa-roles>.wfls-option-title{font-weight:600}ul.wfls-option.wfls-option-2fa-roles .wfls-option-content ul,.wfls-form-field.wfls-option-2fa-roles .wfls-option-content ul{flex-wrap:wrap}ul.wfls-option.wfls-option-2fa-roles .wfls-option-content ul li,.wfls-form-field.wfls-option-2fa-roles .wfls-option-content ul li{flex-grow:0;display:inline;margin:0 0.75rem 0.75rem 0}ul.wfls-option.wfls-option-2fa-roles .wfls-option-content ul li label,.wfls-form-field.wfls-option-2fa-roles .wfls-option-content ul li label{display:block;font-weight:bold}ul.wfls-option.wfls-option-2fa-roles .wfls-option-content ul li select,.wfls-form-field.wfls-option-2fa-roles .wfls-option-content ul li select{display:block}ul.wfls-option.wfls-option-2fa-roles .wfls-2fa-grace-period-container label,ul.wfls-option.wfls-option-2fa-roles .wfls-2fa-grace-period-container input,.wfls-form-field.wfls-option-2fa-roles .wfls-2fa-grace-period-container label,.wfls-form-field.wfls-option-2fa-roles .wfls-2fa-grace-period-container input{vertical-align:middle}ul.wfls-option.wfls-option-2fa-roles .wfls-2fa-grace-period-container label,.wfls-form-field.wfls-option-2fa-roles .wfls-2fa-grace-period-container label{margin-bottom:0}ul.wfls-option.wfls-option-2fa-roles .wfls-2fa-grace-period-container .wfls-primary-label,.wfls-form-field.wfls-option-2fa-roles .wfls-2fa-grace-period-container .wfls-primary-label{display:block;margin-bottom:0.25rem}ul.wfls-option.wfls-option-2fa-roles .wfls-2fa-grace-period-container #wfls-grace-period-zero-warning,.wfls-form-field.wfls-option-2fa-roles .wfls-2fa-grace-period-container #wfls-grace-period-zero-warning{margin-top:0.5rem}ul.wfls-option.wfls-option-2fa-roles .wfls-2fa-notification-action,.wfls-form-field.wfls-option-2fa-roles .wfls-2fa-notification-action{margin-top:0.5rem}ul.wfls-option.wfls-option-2fa-roles .wfls-2fa-notification-action div,.wfls-form-field.wfls-option-2fa-roles .wfls-2fa-notification-action div{display:inline-block}ul.wfls-option.wfls-option-2fa-roles .wfls-2fa-notification-action label,.wfls-form-field.wfls-option-2fa-roles .wfls-2fa-notification-action label{display:block}ul.wfls-option.wfls-option-2fa-roles .wfls-2fa-notification-action h4,.wfls-form-field.wfls-option-2fa-roles .wfls-2fa-notification-action h4{margin:0}ul.wfls-option.wfls-option-2fa-roles .wfls-2fa-notification-action p,.wfls-form-field.wfls-option-2fa-roles .wfls-2fa-notification-action p{margin-top:0.5rem}ul.wfls-option.wfls-option-2fa-roles .wfls-2fa-notification-action p small,.wfls-form-field.wfls-option-2fa-roles .wfls-2fa-notification-action p small{display:inline}ul.wfls-option.wfls-option-2fa-roles small,.wfls-form-field.wfls-option-2fa-roles small{margin-top:0.5rem;display:block}ul.wfls-option>.wfls-option-spacer,.wfls-form-field>.wfls-option-spacer{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-shrink:0;flex-shrink:0;margin:0 1rem 0 0;width:30px;height:30px}@media (min-width: 768px){ul.wfls-option>.wfls-option-spacer,.wfls-form-field>.wfls-option-spacer{width:20px;height:20px}}ul.wfls-option>.wfls-option-premium-lock,.wfls-form-field>.wfls-option-premium-lock{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-shrink:0;flex-shrink:0;background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIzMHB4IiB2aWV3Qm94PSIwIDAgMjQgMzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTxwYXRoIGQ9Ik0yMy45NDksMTQuMjMzYy0wLjM3OSwtMC4zOSAtMC45MDQsLTAuNjA2IC0xLjQ0OCwtMC41OTVsLTAuNjgzLDBsMCwtNC4wOTJjMC4wMzIsLTIuNTM1IC0wLjk4NiwtNC45NzMgLTIuODEyLC02LjczMWMtMS43NTksLTEuODI4IC00LjE5OCwtMi44NDcgLTYuNzM0LC0yLjgxNWMtMi41MzYsLTAuMDMyIC00Ljk3NiwwLjk4NyAtNi43MzQsMi44MTVjLTEuODI2LDEuNzU4IC0yLjg0NCw0LjE5NiAtMi44MTIsNi43MzFsMCw0LjA4OWwtMC42OCwwYy0wLjU0NCwtMC4wMTEgLTEuMDY5LDAuMjA1IC0xLjQ0OCwwLjU5NWMtMC4zOTUsMC4zODIgLTAuNjEyLDAuOTEyIC0wLjU5OCwxLjQ2MWwwLDEyLjI2NmMtMC4wMTEsMC41NDQgMC4yMDQsMS4wNjkgMC41OTUsMS40NDhjMC4zNzksMC4zOTEgMC45MDQsMC42MDYgMS40NDgsMC41OTVsMjAuNDU4LDBjMC4wMDMsMCAwLjAwNiwwIDAuMDEsMGMxLjExNywwIDIuMDM2LC0wLjkxOSAyLjAzNiwtMi4wMzdjMCwtMC4wMDMgMCwtMC4wMDYgMCwtMC4wMDlsMCwtMTIuMjYzYzAuMDExLC0wLjU0NCAtMC4yMDYsLTEuMDY5IC0wLjU5OCwtMS40NDhsMCwtMC4wMVptLTYuMjExLC0wLjU5NWwtMTAuOTE5LDBsMCwtNC4wOTJjLTAuMDIyLC0xLjQ1MSAwLjU1NywtMi44NDggMS41OTksLTMuODU4YzEuMDA5LC0xLjA0MiAyLjQwNywtMS42MjEgMy44NTcsLTEuNTk4YzEuNDUxLC0wLjAyMyAyLjg0OCwwLjU1NiAzLjg1OCwxLjU5OGMxLjA0MiwxLjAwOSAxLjYyMSwyLjQwNyAxLjU5OCwzLjg1OGwwLjAwNyw0LjA5MloiIGZpbGw9IiNkMWQxZDEiLz4KPC9zdmc+");background-repeat:no-repeat;background-position:center center;background-size:contain;margin:0 1rem 0 0;width:30px;height:30px}@media (min-width: 768px){ul.wfls-option>.wfls-option-premium-lock,.wfls-form-field>.wfls-option-premium-lock{margin:0 2rem 0 1rem;width:20px;height:20px}}ul.wfls-option>.wfls-option-checkbox,.wfls-form-field>.wfls-option-checkbox{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-shrink:0;flex-shrink:0;margin:0 1rem 0 0}ul.wfls-option>.wfls-boolean-switch,.wfls-form-field>.wfls-boolean-switch{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-shrink:0;flex-shrink:0;margin:0 1rem 0 0}@media (min-width: 768px){ul.wfls-option>.wfls-boolean-switch,.wfls-form-field>.wfls-boolean-switch{margin:0 1rem 0 1rem}}ul.wfls-option.wfls-option-no-spacing>.wfls-boolean-switch,.wfls-form-field.wfls-option-no-spacing>.wfls-boolean-switch{margin:0}ul.wfls-option>.wfls-option-radio-container,.wfls-form-field>.wfls-option-radio-container{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-shrink:0;flex-shrink:0;margin:0 1rem 0 0}@media (min-width: 768px){ul.wfls-option>.wfls-option-radio-container,.wfls-form-field>.wfls-option-radio-container{margin:0 2rem 0 1rem}}ul.wfls-option>.wfls-option-radio-container [type=radio].wfls-option-radio+label:before,.wfls-form-field>.wfls-option-radio-container [type=radio].wfls-option-radio+label:before{margin:0}ul.wfls-option>li>.wfls-option-title,ul.wfls-option>.wfls-option-title,ul.wfls-option>.wfls-option-content>ul>.wfls-option-title,.wfls-form-field>li>.wfls-option-title,.wfls-form-field>.wfls-option-title,.wfls-form-field>.wfls-option-content>ul>.wfls-option-title{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:0.9rem;color:#2b2b2b;padding-right:0.5rem}ul.wfls-option>li>.wfls-option-title.wfls-option-title-top,ul.wfls-option>.wfls-option-title.wfls-option-title-top,ul.wfls-option>.wfls-option-content>ul>.wfls-option-title.wfls-option-title-top,.wfls-form-field>li>.wfls-option-title.wfls-option-title-top,.wfls-form-field>.wfls-option-title.wfls-option-title-top,.wfls-form-field>.wfls-option-content>ul>.wfls-option-title.wfls-option-title-top{-webkit-align-self:flex-start;align-self:flex-start}ul.wfls-option>li>.wfls-option-title.wfls-option-title-bottom,ul.wfls-option>.wfls-option-title.wfls-option-title-bottom,ul.wfls-option>.wfls-option-content>ul>.wfls-option-title.wfls-option-title-bottom,.wfls-form-field>li>.wfls-option-title.wfls-option-title-bottom,.wfls-form-field>.wfls-option-title.wfls-option-title-bottom,.wfls-form-field>.wfls-option-content>ul>.wfls-option-title.wfls-option-title-bottom{-webkit-align-self:flex-end;align-self:flex-end}ul.wfls-option .wfls-option-subtitle,.wfls-form-field .wfls-option-subtitle{padding-top:0.25rem;font-size:0.75rem}ul.wfls-option .wfls-flex-vertical .wfls-option-title,.wfls-form-field .wfls-flex-vertical .wfls-option-title{padding-bottom:0.75rem}ul.wfls-option.wfls-flex-vertical>.wfls-option-subtitle,.wfls-form-field.wfls-flex-vertical>.wfls-option-subtitle{padding-top:0.25rem !important;font-size:0.75rem !important}ul.wfls-option .wfls-option-checkboxes,ul.wfls-option .wfls-option-checkboxes>ul,.wfls-form-field .wfls-option-checkboxes,.wfls-form-field .wfls-option-checkboxes>ul{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}ul.wfls-option .wfls-option-checkboxes.wfls-option-checkboxes-wrap,ul.wfls-option .wfls-option-checkboxes>ul.wfls-option-checkboxes-wrap,.wfls-form-field .wfls-option-checkboxes.wfls-option-checkboxes-wrap,.wfls-form-field .wfls-option-checkboxes>ul.wfls-option-checkboxes-wrap{-webkit-flex-wrap:wrap;flex-wrap:wrap}ul.wfls-option .wfls-option-checkboxes,.wfls-form-field .wfls-option-checkboxes{margin-top:0.5rem}ul.wfls-option .wfls-option-checkboxes>ul,.wfls-form-field .wfls-option-checkboxes>ul{margin-top:0.5rem;margin-right:1rem}@media (min-width: 768px){ul.wfls-option .wfls-option-checkboxes>ul,.wfls-form-field .wfls-option-checkboxes>ul{margin-right:1.5rem}}ul.wfls-option .wfls-option-checkboxes>ul:last-of-type,.wfls-form-field .wfls-option-checkboxes>ul:last-of-type{margin-right:0}ul.wfls-option .wfls-option-checkboxes>ul>.wfls-option-checkbox,.wfls-form-field .wfls-option-checkboxes>ul>.wfls-option-checkbox{margin:0 1rem 0 0}ul.wfls-option li.wfls-option-text,ul.wfls-option li.wfls-option-textarea,ul.wfls-option td.wfls-option-text,.wfls-form-field li.wfls-option-text,.wfls-form-field li.wfls-option-textarea,.wfls-form-field td.wfls-option-text{padding-top:0.5rem}@media (min-width: 768px){ul.wfls-option li.wfls-option-text,ul.wfls-option li.wfls-option-textarea,ul.wfls-option td.wfls-option-text,.wfls-form-field li.wfls-option-text,.wfls-form-field li.wfls-option-textarea,.wfls-form-field td.wfls-option-text{-webkit-flex-grow:1;flex-grow:1;text-align:right;padding-left:1rem;padding-top:0}}ul.wfls-option li.wfls-option-text>input[type="text"],.wfls-form-field li.wfls-option-text>input[type="text"]{max-width:240px}@media (min-width: 768px){ul.wfls-option li.wfls-option-text>input[type="text"],.wfls-form-field li.wfls-option-text>input[type="text"]{max-width:280px}}@media (min-width: 992px){ul.wfls-option li.wfls-option-text>input[type="text"],.wfls-form-field li.wfls-option-text>input[type="text"]{max-width:340px}}ul.wfls-option li.wfls-option-text.wfls-option-full-width>input[type="text"],.wfls-form-field li.wfls-option-text.wfls-option-full-width>input[type="text"]{max-width:100%;width:100%}ul.wfls-option li.wfls-option-textarea,.wfls-form-field li.wfls-option-textarea{min-width:150px;max-width:240px}@media (min-width: 768px){ul.wfls-option li.wfls-option-textarea,.wfls-form-field li.wfls-option-textarea{min-width:200px;max-width:400px}}@media (min-width: 992px){ul.wfls-option li.wfls-option-textarea,.wfls-form-field li.wfls-option-textarea{min-width:250px;max-width:500px}}ul.wfls-option li.wfls-option-textarea>textarea,.wfls-form-field li.wfls-option-textarea>textarea{width:100%;height:80px;min-width:150px;max-width:240px}@media (min-width: 768px){ul.wfls-option li.wfls-option-textarea>textarea,.wfls-form-field li.wfls-option-textarea>textarea{min-width:200px;max-width:280px}}@media (min-width: 992px){ul.wfls-option li.wfls-option-textarea>textarea,.wfls-form-field li.wfls-option-textarea>textarea{min-width:250px;max-width:340px}}ul.wfls-option li.wfls-option-textarea>.wfls-flex-vertical>li>textarea,.wfls-form-field li.wfls-option-textarea>.wfls-flex-vertical>li>textarea{width:100%;height:80px;box-sizing:border-box}ul.wfls-option li.wfls-option-textarea>.wfls-flex-vertical>li.wfls-option-subtitle,.wfls-form-field li.wfls-option-textarea>.wfls-flex-vertical>li.wfls-option-subtitle{width:100%;text-align:left}ul.wfls-option li.wfls-option-switch,.wfls-form-field li.wfls-option-switch{-webkit-flex-grow:1;flex-grow:1}ul.wfls-option li.wfls-option-switch.wfls-right .wfls-switch,.wfls-form-field li.wfls-option-switch.wfls-right .wfls-switch{justify-content:flex-end !important}ul.wfls-option li.wfls-option-select,.wfls-form-field li.wfls-option-select{-webkit-flex-grow:1;flex-grow:1;text-align:right}ul.wfls-option li.wfls-option-select select,ul.wfls-option li.wfls-option-select select option,ul.wfls-option li.wfls-option-select .wfselect2-container--default,.wfls-form-field li.wfls-option-select select,.wfls-form-field li.wfls-option-select select option,.wfls-form-field li.wfls-option-select .wfselect2-container--default{font-size:0.7rem;font-weight:bold}@media (min-width: 768px){ul.wfls-option li.wfls-option-select select,ul.wfls-option li.wfls-option-select select option,ul.wfls-option li.wfls-option-select .wfselect2-container--default,.wfls-form-field li.wfls-option-select select,.wfls-form-field li.wfls-option-select select option,.wfls-form-field li.wfls-option-select .wfselect2-container--default{font-size:0.8rem}}@media (min-width: 992px){ul.wfls-option li.wfls-option-select select,ul.wfls-option li.wfls-option-select select option,ul.wfls-option li.wfls-option-select .wfselect2-container--default,.wfls-form-field li.wfls-option-select select,.wfls-form-field li.wfls-option-select select option,.wfls-form-field li.wfls-option-select .wfselect2-container--default{font-size:0.9rem}}ul.wfls-option li.wfls-option-select .wfls-option-select-option,ul.wfls-option li.wfls-option-select .wfselect2-container--default,ul.wfls-option li.wfls-option-select .wfselect2-container--default .wfselect2-selection--single,.wfls-form-field li.wfls-option-select .wfls-option-select-option,.wfls-form-field li.wfls-option-select .wfselect2-container--default,.wfls-form-field li.wfls-option-select .wfselect2-container--default .wfselect2-selection--single{text-align:left;height:40px;border-radius:0;border:0;background-color:#fff;box-shadow:1px 1px 1px 2px rgba(215,215,215,0.35)}ul.wfls-option li.wfls-option-select .wfls-option-select-option .wfselect2-selection__rendered,ul.wfls-option li.wfls-option-select .wfselect2-container--default .wfselect2-selection__rendered,ul.wfls-option li.wfls-option-select .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__rendered,.wfls-form-field li.wfls-option-select .wfls-option-select-option .wfselect2-selection__rendered,.wfls-form-field li.wfls-option-select .wfselect2-container--default .wfselect2-selection__rendered,.wfls-form-field li.wfls-option-select .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__rendered{color:#333;line-height:40px}ul.wfls-option li.wfls-option-select .wfls-option-select-option .wfselect2-selection__arrow,ul.wfls-option li.wfls-option-select .wfselect2-container--default .wfselect2-selection__arrow,ul.wfls-option li.wfls-option-select .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow,.wfls-form-field li.wfls-option-select .wfls-option-select-option .wfselect2-selection__arrow,.wfls-form-field li.wfls-option-select .wfselect2-container--default .wfselect2-selection__arrow,.wfls-form-field li.wfls-option-select .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow{height:38px}ul.wfls-option li.wfls-option-select .wfls-option-select-option.wfselect2-container--disabled .wfselect2-selection__rendered,ul.wfls-option li.wfls-option-select .wfselect2-container--default.wfselect2-container--disabled .wfselect2-selection__rendered,ul.wfls-option li.wfls-option-select .wfselect2-container--default .wfselect2-selection--single.wfselect2-container--disabled .wfselect2-selection__rendered,.wfls-form-field li.wfls-option-select .wfls-option-select-option.wfselect2-container--disabled .wfselect2-selection__rendered,.wfls-form-field li.wfls-option-select .wfselect2-container--default.wfselect2-container--disabled .wfselect2-selection__rendered,.wfls-form-field li.wfls-option-select .wfselect2-container--default .wfselect2-selection--single.wfselect2-container--disabled .wfselect2-selection__rendered{color:#aaa}ul.wfls-option li.wfls-option-select .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow b,.wfls-form-field li.wfls-option-select .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow b{border-color:#333 transparent transparent}ul.wfls-option li.wfls-option-select .wfselect2-container--default.wfselect2-container--open .wfselect2-selection--single .wfselect2-selection__arrow b,.wfls-form-field li.wfls-option-select .wfselect2-container--default.wfselect2-container--open .wfselect2-selection--single .wfselect2-selection__arrow b{border-color:transparent transparent #333}ul.wfls-option.wfls-option-token select,.wfls-form-field.wfls-option-token select{width:240px}@media (min-width: 768px){ul.wfls-option.wfls-option-token select,.wfls-form-field.wfls-option-token select{width:280px}}@media (min-width: 992px){ul.wfls-option.wfls-option-token select,.wfls-form-field.wfls-option-token select{width:320px}}ul.wfls-option.wfls-option-token .wfselect2-container--default,ul.wfls-option.wfls-option-token .wfselect2-container--default .wfselect2-selection--multiple,.wfls-form-field.wfls-option-token .wfselect2-container--default,.wfls-form-field.wfls-option-token .wfselect2-container--default .wfselect2-selection--multiple{border-color:#e2e2e2}ul.wfls-option.wfls-option-token .wfselect2-container--default .wfselect2-selection__choice,ul.wfls-option.wfls-option-token .wfselect2-container--default .wfselect2-selection--multiple .wfselect2-selection__choice,.wfls-form-field.wfls-option-token .wfselect2-container--default .wfselect2-selection__choice,.wfls-form-field.wfls-option-token .wfselect2-container--default .wfselect2-selection--multiple .wfselect2-selection__choice{background-color:#fff;border-color:#e2e2e2;padding:0.5rem}ul.wfls-option.wfls-option-token .wfselect2-container--default .wfselect2-search__field,ul.wfls-option.wfls-option-token .wfselect2-container--default .wfselect2-selection--multiple .wfselect2-search__field,.wfls-form-field.wfls-option-token .wfselect2-container--default .wfselect2-search__field,.wfls-form-field.wfls-option-token .wfselect2-container--default .wfselect2-selection--multiple .wfselect2-search__field{margin-right:5px;margin-top:5px;padding:0.5rem 0}ul.wfls-option.wfls-child-option,.wfls-form-field.wfls-child-option{margin-left:calc(1rem + 20px)}ul.wfls-option .wfls-woocommerce-customer-integration-message,.wfls-form-field .wfls-woocommerce-customer-integration-message{margin-top:0;margin-bottom:0.5rem}ul.wfls-option .wfls-woocommerce-customer-integration-message small,.wfls-form-field .wfls-woocommerce-customer-integration-message small{margin-top:0}#wfls-option-require-2fa{margin-top:1rem}#wfls-option-require-2fa>li>ul{margin-left:1rem}@media (min-width: 768px){#wfls-option-require-2fa>li>ul{margin-left:1.5rem}}#wfls-option-require-2fa>li>ul:first-of-type{margin-left:0}#wfls-option-require-2fa>li>ul>.wfls-option-checkbox{margin:0 1rem 0 0}.wfls-option-sub{padding-left:2rem !important;margin-left:30px !important}.wfls-select2-suppress-dropdown .wfselect2-results,.wfls-select2-suppress-dropdown .wfselect2-dropdown{display:none}.wfls-options-controls{direction:ltr;background:#ffffff;border-bottom:1px solid #e2e2e2;position:absolute;left:160px;right:0px;top:46px;z-index:900;padding-left:15px;padding-right:15px}@media (min-width: 616px){.wfls-options-controls{position:fixed}}.wfls-options-controls .wfls-block{margin:0}@media (min-width: 782px){.wfls-options-controls .wfls-block{margin:0.5rem 0}}.wfls-options-controls,.sticky-menu .wfls-options-controls{top:32px}.folded .wfls-options-controls{left:36px}@media only screen and (max-width: 960px){.auto-fold .wfls-options-controls{left:36px}}.rtl .wfls-options-controls{right:160px;left:0px}.rtl .folded .wfls-options-controls{right:36px}@media only screen and (max-width: 960px){.rtl .auto-fold .wfls-options-controls{right:36px}}@media screen and (max-width: 782px){.wfls-options-controls,.folded .wfls-options-controls,.auto-fold .wfls-options-controls,.rtl .wfls-options-controls,.rtl .folded .wfls-options-controls,.rtl .auto-fold .wfls-options-controls{left:-10px;right:0px}}.wfls-options-controls-spacer{height:45px}@media (min-width: 782px){.wfls-options-controls-spacer{height:75px}}.wfls-options-controls-spacer,.sticky-menu .wfls-options-controls-spacer{top:61px}.wordfence .wfselect2-container .wfselect2-selection--single{border:1px solid #dadada;font-weight:normal;font-size:0.8rem}.wfls-block-title h3{margin:0;font-size:1.25rem}.wfls-save-banner{position:sticky;z-index:9998;top:32px;padding:0.5rem 1.5rem 0.5rem 0;background-color:#FFFFFF;margin-bottom:0.5rem;text-align:right}#wfls-notices{margin-top:15px}#wfls-notices .wfls-admin-notice{margin-left:0px;margin-right:0px}.wfls-success-text,.wfls-notice-text{display:inline-block;vertical-align:middle;line-height:1.3;font-size:16px;font-weight:bold;font-style:italic}.wfls-notice{margin:12px 0;padding:8px;background-color:#ffffe0;border:1px solid #ffd975;border-width:1px 1px 1px 10px}.wfls-notice-text{color:#6d798c}.wfls-success{margin:12px 0;padding:8px;background-color:#ffffff;border:1px solid #16bc9b;border-width:1px 1px 1px 10px}.wfls-success-text{color:#11967a}.wfls-premium-callout{border:1px solid #dfdfdf;background-color:#ffffff;padding:16px;margin:20px 0 0;text-align:center}.wfls-premium-callout ul{margin:8px 0;padding:0 0 0 15px}.wfls-premium-callout ul li{list-style-type:disc;margin:0;padding:0}.wfls-premium-callout .center{text-align:center;margin:0}.wfls-premium-callout .button-primary{text-align:center;text-transform:uppercase;font-weight:bold;background-color:#00709e}table.wfls-table{background-color:transparent;border-collapse:collapse;border-spacing:0}table.wfls-table td,table.wfls-table th{padding:0}.wfls-table caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}.wfls-table th{text-align:left}.wfls-table{width:100%;max-width:100%;margin-bottom:20px}.wfls-table>thead>tr>th,.wfls-table>thead>tr>td,.wfls-table>tbody>tr>th,.wfls-table>tbody>tr>td,.wfls-table>tfoot>tr>th,.wfls-table>tfoot>tr>td{padding:8px;line-height:1.42857;vertical-align:top;border-top:1px solid #ddd}.wfls-table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.wfls-table>caption+thead>tr:first-child>th,.wfls-table>caption+thead>tr:first-child>td,.wfls-table>colgroup+thead>tr:first-child>th,.wfls-table>colgroup+thead>tr:first-child>td,.wfls-table>thead:first-child>tr:first-child>th,.wfls-table>thead:first-child>tr:first-child>td{border-top:0}.wfls-table>tbody+tbody{border-top:2px solid #ddd}.wfls-table .wfls-table{background-color:#fff}.wfls-table-header-separators>thead>tr>th{border-left:2px solid #ddd}.wfls-table-header-separators>thead>tr>th:first-child{border-left:0}.wfls-table-condensed>thead>tr>th,.wfls-table-condensed>thead>tr>td,.wfls-table-condensed>tbody>tr>th,.wfls-table-condensed>tbody>tr>td,.wfls-table-condensed>tfoot>tr>th,.wfls-table-condensed>tfoot>tr>td{padding:5px}.wfls-table-expanded>thead>tr>th,.wfls-table-expanded>thead>tr>td,.wfls-table-expanded>tbody>tr>th,.wfls-table-expanded>tbody>tr>td,.wfls-table-expanded>tfoot>tr>th,.wfls-table-expanded>tfoot>tr>td{padding:0.5rem 1rem}@media (min-width: 768px){.wfls-table-expanded>thead>tr>th,.wfls-table-expanded>thead>tr>td,.wfls-table-expanded>tbody>tr>th,.wfls-table-expanded>tbody>tr>td,.wfls-table-expanded>tfoot>tr>th,.wfls-table-expanded>tfoot>tr>td{padding:1rem 1.5rem}}.wfls-table-bordered{border:1px solid #ddd}.wfls-table-bordered>thead>tr>th,.wfls-table-bordered>thead>tr>td,.wfls-table-bordered>tbody>tr>th,.wfls-table-bordered>tbody>tr>td,.wfls-table-bordered>tfoot>tr>th,.wfls-table-bordered>tfoot>tr>td{border:1px solid #ddd}.wfls-table-bordered>thead>tr>th,.wfls-table-bordered>thead>tr>td{border-bottom-width:2px}.wfls-table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.wfls-table-hover>tbody>tr:hover{background-color:#f5f5f5}table.wfls-table col[class*="col-"]{position:static;float:none;display:table-column}table.wfls-table td[class*="col-"],table.wfls-table th[class*="col-"]{position:static;float:none;display:table-cell}.wfls-table>thead>tr>td.active,.wfls-table>thead>tr>th.active,.wfls-table>thead>tr.active>td,.wfls-table>thead>tr.active>th,.wfls-table>tbody>tr>td.active,.wfls-table>tbody>tr>th.active,.wfls-table>tbody>tr.active>td,.wfls-table>tbody>tr.active>th,.wfls-table>tfoot>tr>td.active,.wfls-table>tfoot>tr>th.active,.wfls-table>tfoot>tr.active>td,.wfls-table>tfoot>tr.active>th{background-color:#f5f5f5}.wfls-table-hover>tbody>tr>td.active:hover,.wfls-table-hover>tbody>tr>th.active:hover,.wfls-table-hover>tbody>tr.active:hover>td,.wfls-table-hover>tbody>tr:hover>.active,.wfls-table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.wfls-table>thead>tr>td.success,.wfls-table>thead>tr>th.success,.wfls-table>thead>tr.success>td,.wfls-table>thead>tr.success>th,.wfls-table>tbody>tr>td.success,.wfls-table>tbody>tr>th.success,.wfls-table>tbody>tr.success>td,.wfls-table>tbody>tr.success>th,.wfls-table>tfoot>tr>td.success,.wfls-table>tfoot>tr>th.success,.wfls-table>tfoot>tr.success>td,.wfls-table>tfoot>tr.success>th{background-color:#dff0d8}.wfls-table-hover>tbody>tr>td.success:hover,.wfls-table-hover>tbody>tr>th.success:hover,.wfls-table-hover>tbody>tr.success:hover>td,.wfls-table-hover>tbody>tr:hover>.success,.wfls-table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.wfls-table>thead>tr>td.info,.wfls-table>thead>tr>th.info,.wfls-table>thead>tr.info>td,.wfls-table>thead>tr.info>th,.wfls-table>tbody>tr>td.info,.wfls-table>tbody>tr>th.info,.wfls-table>tbody>tr.info>td,.wfls-table>tbody>tr.info>th,.wfls-table>tfoot>tr>td.info,.wfls-table>tfoot>tr>th.info,.wfls-table>tfoot>tr.info>td,.wfls-table>tfoot>tr.info>th{background-color:#d9edf7}.wfls-table-hover>tbody>tr>td.info:hover,.wfls-table-hover>tbody>tr>th.info:hover,.wfls-table-hover>tbody>tr.info:hover>td,.wfls-table-hover>tbody>tr:hover>.info,.wfls-table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.wfls-table>thead>tr>td.warning,.wfls-table>thead>tr>th.warning,.wfls-table>thead>tr.warning>td,.wfls-table>thead>tr.warning>th,.wfls-table>tbody>tr>td.warning,.wfls-table>tbody>tr>th.warning,.wfls-table>tbody>tr.warning>td,.wfls-table>tbody>tr.warning>th,.wfls-table>tfoot>tr>td.warning,.wfls-table>tfoot>tr>th.warning,.wfls-table>tfoot>tr.warning>td,.wfls-table>tfoot>tr.warning>th{background-color:#fcf8e3}.wfls-table-hover>tbody>tr>td.warning:hover,.wfls-table-hover>tbody>tr>th.warning:hover,.wfls-table-hover>tbody>tr.warning:hover>td,.wfls-table-hover>tbody>tr:hover>.warning,.wfls-table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.wfls-table>thead>tr>td.danger,.wfls-table>thead>tr>th.danger,.wfls-table>thead>tr.danger>td,.wfls-table>thead>tr.danger>th,.wfls-table>tbody>tr>td.danger,.wfls-table>tbody>tr>th.danger,.wfls-table>tbody>tr.danger>td,.wfls-table>tbody>tr.danger>th,.wfls-table>tfoot>tr>td.danger,.wfls-table>tfoot>tr>th.danger,.wfls-table>tfoot>tr.danger>td,.wfls-table>tfoot>tr.danger>th{background-color:#f2dede}.wfls-table-hover>tbody>tr>td.danger:hover,.wfls-table-hover>tbody>tr>th.danger:hover,.wfls-table-hover>tbody>tr.danger:hover>td,.wfls-table-hover>tbody>tr:hover>.danger,.wfls-table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.wfls-table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width: 767px){.wfls-table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.wfls-table-responsive>.wfls-table{margin-bottom:0}.wfls-table-responsive>.wfls-table>thead>tr>th,.wfls-table-responsive>.wfls-table>thead>tr>td,.wfls-table-responsive>.wfls-table>tbody>tr>th,.wfls-table-responsive>.wfls-table>tbody>tr>td,.wfls-table-responsive>.wfls-table>tfoot>tr>th,.wfls-table-responsive>.wfls-table>tfoot>tr>td{white-space:nowrap}.wfls-table-responsive>.wfls-table-bordered{border:0}.wfls-table-responsive>.wfls-table-bordered>thead>tr>th:first-child,.wfls-table-responsive>.wfls-table-bordered>thead>tr>td:first-child,.wfls-table-responsive>.wfls-table-bordered>tbody>tr>th:first-child,.wfls-table-responsive>.wfls-table-bordered>tbody>tr>td:first-child,.wfls-table-responsive>.wfls-table-bordered>tfoot>tr>th:first-child,.wfls-table-responsive>.wfls-table-bordered>tfoot>tr>td:first-child{border-left:0}.wfls-table-responsive>.wfls-table-bordered>thead>tr>th:last-child,.wfls-table-responsive>.wfls-table-bordered>thead>tr>td:last-child,.wfls-table-responsive>.wfls-table-bordered>tbody>tr>th:last-child,.wfls-table-responsive>.wfls-table-bordered>tbody>tr>td:last-child,.wfls-table-responsive>.wfls-table-bordered>tfoot>tr>th:last-child,.wfls-table-responsive>.wfls-table-bordered>tfoot>tr>td:last-child{border-right:0}.wfls-table-responsive>.wfls-table-bordered>tbody>tr:last-child>th,.wfls-table-responsive>.wfls-table-bordered>tbody>tr:last-child>td,.wfls-table-responsive>.wfls-table-bordered>tfoot>tr:last-child>th,.wfls-table-responsive>.wfls-table-bordered>tfoot>tr:last-child>td{border-bottom:0}}.wfls-sortable{position:relative;padding-right:2rem !important}.wfls-sortable .wfls-sorted-ascending,.wfls-sortable .wfls-sorted-descending{display:none;position:absolute;right:1rem;top:50%;transform:translateY(-50%)}.wfls-sortable.wfls-unsorted:hover .wfls-sorted-ascending{display:block}.wfls-sortable.wfls-unsorted,.wfls-sortable.wfls-sorted-ascending,.wfls-sortable.wfls-sorted-descending{cursor:pointer}.wfls-sortable.wfls-unsorted:hover,.wfls-sortable.wfls-sorted-ascending:hover,.wfls-sortable.wfls-sorted-descending:hover{background-color:#e0e0e0}.wfls-sortable.wfls-sorted-ascending,.wfls-sortable.wfls-sorted-descending{background-color:#e0e0e0}.wfls-sortable.wfls-sorted-ascending .wfls-sorted-ascending{display:block}.wfls-sortable.wfls-sorted-descending .wfls-sorted-descending{display:block}.wfls-nav{margin-bottom:0;padding-left:0;list-style:none}.wfls-nav:before,.wfls-nav:after{content:" ";display:table}.wfls-nav:after{clear:both}.wfls-nav>li{position:relative;display:block}.wfls-nav>li>a{position:relative;display:block;padding:8px 12px}.wfls-nav>li>a:hover,.wfls-nav>li>a:focus{text-decoration:none;background-color:#e2e2e2}.wfls-nav>li.wfls-disabled>a{color:#777}.wfls-nav>li.wfls-disabled>a:hover,.wfls-nav>li.wfls-disabled>a:focus{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.wfls-nav .wfls-open>a,.wfls-nav .wfls-open>a:hover,.wfls-nav .wfls-open>a:focus{background-color:#e2e2e2;border-color:#00709e}.wfls-nav>li>a>img{max-width:none}.wfls-nav-tabs{border-bottom:1px solid #d0d0d0}.wfls-nav-tabs>li{float:left;margin-bottom:-1px}.wfls-nav-tabs>li>a{margin-right:2px;line-height:1.42857;border:1px solid transparent;border-radius:4px 4px 0 0}.wfls-nav-tabs>li>a:hover{border-color:#e2e2e2 #e2e2e2 #d0d0d0}.wfls-nav-tabs>li.wfls-active>a,.wfls-nav-tabs>li.wfls-active>a:hover,.wfls-nav-tabs>li.wfls-active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.wfls-nav-pills>li{float:left}.wfls-nav-pills>li>a{border-radius:4px;text-decoration:none;position:relative;display:block;padding:8px 12px}.wfls-nav-pills>li>a:hover,.wfls-nav-pills>li>a:focus{text-decoration:none !important;background-color:#e2e2e2}.wfls-nav-pills>li+li{margin-left:2px}.wfls-nav-pills>li.wfls-active>a,.wfls-nav-pills>li.wfls-active>a:hover,.wfls-nav-pills>li.wfls-active>a:focus{color:#fff;background-color:#00709e}.wfls-nav-pills.wfls-nav-pills-bordered>li>a{border:1px solid #e2e2e2}.wfls-nav-pills.wfls-nav-pills-connected>li>a{border-radius:0;border-right-width:0px}.wfls-nav-pills.wfls-nav-pills-connected>li+li{margin-left:0}.wfls-nav-pills.wfls-nav-pills-connected>li.active+li>a{border-left-width:0px}.wfls-nav-pills.wfls-nav-pills-connected>li:first-of-type>a{-moz-border-radius:4px 0 0 4px;-webkit-border-radius:4px;border-radius:4px 0 0 4px}.wfls-nav-pills.wfls-nav-pills-connected>li:last-of-type>a{-moz-border-radius:0 4px 4px 0;-webkit-border-radius:0;border-radius:0 4px 4px 0;border-right-width:1px}.wfls-nav-stacked>li{float:none}.wfls-nav-stacked>li+li{margin-top:2px;margin-left:0}.wfls-nav-justified,.wfls-nav-tabs.wfls-nav-justified{width:100%}.wfls-nav-justified>li,.wfls-nav-tabs.wfls-nav-justified>li{float:none}.wfls-nav-justified>li>a,.wfls-nav-tabs.wfls-nav-justified>li>a{text-align:center;margin-bottom:5px}.wfls-nav-justified>.wfls-dropdown .wfls-dropdown-menu{top:auto;left:auto}@media (min-width: 768px){.wfls-nav-justified>li,.wfls-nav-tabs.wfls-nav-justified>li{display:table-cell;width:1%}.wfls-nav-justified>li>a,.wfls-nav-tabs.wfls-nav-justified>li>a{margin-bottom:0}}.wfls-nav-tabs-justified,.wfls-nav-tabs.wfls-nav-justified{border-bottom:0}.wfls-nav-tabs-justified>li>a,.wfls-nav-tabs.wfls-nav-justified>li>a{margin-right:0;border-radius:4px}.wfls-nav-tabs-justified>.wfls-active>a,.wfls-nav-tabs.wfls-nav-justified>.wfls-active>a,.wfls-nav-tabs-justified>.wfls-active>a:hover,.wfls-nav-tabs.wfls-nav-justified>.wfls-active>a:hover,.wfls-nav-tabs-justified>.wfls-active>a:focus,.wfls-nav-tabs.wfls-nav-justified>.wfls-active>a:focus{border:1px solid #ddd}@media (min-width: 768px){.wfls-nav-tabs-justified>li>a,.wfls-nav-tabs.wfls-nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.wfls-nav-tabs-justified>.wfls-active>a,.wfls-nav-tabs.wfls-nav-justified>.wfls-active>a,.wfls-nav-tabs-justified>.wfls-active>a:hover,.wfls-nav-tabs.wfls-nav-justified>.wfls-active>a:hover,.wfls-nav-tabs-justified>.wfls-active>a:focus,.wfls-nav-tabs.wfls-nav-justified>.wfls-active>a:focus{border-bottom-color:#fff}}.wfls-tab-content>.wfls-tab-pane{display:none}.wfls-tab-content>.wfls-active{display:block}.wfls-nav-tabs .wfls-dropdown-menu{margin-top:-1px;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0}.wfls-navbar-brand{float:left;padding:12px 8px;font-size:18px;line-height:20px;margin:10px 0 0 0}.wfls-navbar-brand:hover,.wfls-navbar-brand:focus{text-decoration:none}.wfls-navbar-brand>img{display:block}@media (min-width: 768px){.navbar>.container .wfls-navbar-brand,.navbar>.container-fluid .wfls-navbar-brand{margin-left:-8px}}.wfls-caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.wfls-dropup,.wfls-dropdown{position:relative}.wfls-dropdown-toggle:focus{outline:0}.wfls-dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.wfls-dropdown-menu .wfls-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.wfls-dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857;color:#333;text-decoration:none;white-space:nowrap}.wfls-dropdown-menu>li>a:hover,.wfls-dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.wfls-dropdown-menu>.wfls-active>a,.wfls-dropdown-menu>.wfls-active>a:hover,.wfls-dropdown-menu>.wfls-active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#00709e}.wfls-dropdown-menu>.wfls-disabled>a,.wfls-dropdown-menu>.wfls-disabled>a:hover,.wfls-dropdown-menu>.wfls-disabled>a:focus{color:#777}.wfls-dropdown-menu>.wfls-disabled>a:hover,.wfls-dropdown-menu>.wfls-disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed}.wfls-open>.wfls-dropdown-menu{display:block}.wfls-open>a{outline:0}.wfls-dropdown-menu-right{left:auto;right:0}.wfls-dropdown-menu-left{left:0;right:auto}.wfls-dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857;color:#777;white-space:nowrap}.wfls-dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.wfls-pull-right>.wfls-dropdown-menu{right:0;left:auto}.wfls-dropup .wfls-caret,.wfls-navbar-fixed-bottom .wfls-dropdown .wfls-caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9;content:""}.wfls-dropup .wfls-dropdown-menu,.wfls-navbar-fixed-bottom .wfls-dropdown .wfls-dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width: 768px){.wfls-navbar-right .wfls-dropdown-menu{right:0;left:auto}.wfls-navbar-right .wfls-dropdown-menu-left{left:0;right:auto}}.wfls-mobile-dropdown{border:1px solid #ccc;margin-left:.5em;padding:5px 10px;font-size:14px;line-height:24px;margin:10px 10px 0 0;background:#f1f1f1;color:#000;font-weight:600;text-decoration:none}.wfls-alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.wfls-alert h4{margin-top:0;color:inherit}.wfls-alert .wfls-alert-link{font-weight:bold}.wfls-alert>p,.wfls-alert>ul{margin-bottom:0}.wfls-alert>p+p{margin-top:5px}.wfls-alert-dismissable,.wfls-alert-dismissible{padding-right:35px}.wfls-alert-dismissable .close,.wfls-alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.wfls-alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.wfls-alert-success hr{border-top-color:#c9e2b3}.wfls-alert-success .alert-link{color:#2b542c}.wfls-alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.wfls-alert-info hr{border-top-color:#a6e1ec}.wfls-alert-info .alert-link{color:#245269}.wfls-alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.wfls-alert-warning hr{border-top-color:#f7e1b5}.wfls-alert-warning .alert-link{color:#66512c}.wfls-alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.wfls-alert-danger hr{border-top-color:#e4b9c0}.wfls-alert-danger .alert-link{color:#843534}#wfls-onboarding-standalone-modal{margin-bottom:1rem}#wfls-onboarding-standalone-modal #wfls-onboarding-standalone-modal-header{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row;background-color:#00709e;color:#ffffff;padding:1rem 2rem}#wfls-onboarding-standalone-modal #wfls-onboarding-standalone-modal-header #wfls-onboarding-standalone-modal-dismiss{font-size:1.35rem;color:#ffffff;text-decoration:none}#wfls-onboarding-standalone-modal #wfls-onboarding-standalone-modal-header #wfls-onboarding-standalone-modal-dismiss:hover{color:#f1f1f1}#wfls-onboarding-standalone-modal #wfls-onboarding-standalone-modal-header>*:last-child{-webkit-flex-grow:1;flex-grow:1;text-align:right}#wfls-onboarding-standalone-modal #wfls-onboarding-standalone-modal-content{background-color:#ffffff;padding:1rem 2rem}#wfls-onboarding-standalone-modal #wfls-onboarding-standalone-modal-content>p{margin-bottom:0}#wfls-onboarding-standalone-modal #wfls-onboarding-standalone-modal-content>p:first-child{margin-top:0}#wfls-onboarding-standalone-modal #wfls-onboarding-standalone-modal-footer{background-color:#525355;color:#ffffff;padding:0.5rem 2rem}#wfls-onboarding-standalone-modal #wfls-onboarding-standalone-modal-footer>ul{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-end;justify-content:flex-end;-webkit-flex-direction:row;flex-direction:row;margin:0;padding:0}#wfls-onboarding-standalone-modal #wfls-onboarding-standalone-modal-footer>ul>li{margin:0;padding:0 0 0 1rem}.wfls-grace-period-container{display:flex;align-items:center;justify-content:left;margin-bottom:1rem;margin-top:1rem}.wfls-grace-period-container .wfls-grace-period-input-container{margin-right:1.5rem;text-align:center}.wfls-grace-period-container .wfls-grace-period-input-container label{display:block;font-weight:bold}.wfls-grace-period-container .wfls-grace-period-input-container input{width:3em;text-align:center}#wfls-reset-grace-period-failed{text-align:center}.wfls-recaptcha-score-history .wfls-recaptcha-chart-container{position:relative;display:inline-block;width:350px;max-width:100%}@media screen and (max-width: 480px){.wfls-recaptcha-score-history .wfls-recaptcha-chart-container{width:70vw}}#toplevel_page_WFLS .wp-menu-image img{max-width:16px;max-height:16px}
modules/login-security/css/font-awesome.1722265817.css000064400000101207150755146440016202 0ustar00/*!
 *  Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
 *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
 */@font-face{font-family:'FontAwesome';src:url("../../../fonts/fontawesome-webfont.woff?v=4.7.0") format("woff");font-weight:normal;font-style:normal}.wfls-fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wfls-fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-15%}.wfls-fa-2x{font-size:2em}.wfls-fa-3x{font-size:3em}.wfls-fa-4x{font-size:4em}.wfls-fa-5x{font-size:5em}.wfls-fa-fw{width:1.28571em;text-align:center}.wfls-fa-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.wfls-fa-ul>li{position:relative}.wfls-fa-li{position:absolute;left:-2.14286em;width:2.14286em;top:.14286em;text-align:center}.wfls-fa-li.wfls-fa-lg{left:-1.85714em}.wfls-fa-border{padding:.2em .25em .15em;border:solid 0.08em #eee;border-radius:.1em}.wfls-fa-pull-left{float:left}.wfls-fa-pull-right{float:right}.wfls-fa.wfls-fa-pull-left{margin-right:.3em}.wfls-fa.wfls-fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.wfls-fa.pull-left{margin-right:.3em}.wfls-fa.pull-right{margin-left:.3em}.wfls-fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.wfls-fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.wfls-fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.wfls-fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.wfls-fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.wfls-fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.wfls-fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .wfls-fa-rotate-90,:root .wfls-fa-rotate-180,:root .wfls-fa-rotate-270,:root .wfls-fa-flip-horizontal,:root .wfls-fa-flip-vertical{filter:none}.wfls-fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.wfls-fa-stack-1x,.wfls-fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.wfls-fa-stack-1x{line-height:inherit}.wfls-fa-stack-2x{font-size:2em}.wfls-fa-inverse{color:#fff}.wfls-fa-glass:before{content:""}.wfls-fa-music:before{content:""}.wfls-fa-search:before{content:""}.wfls-fa-envelope-o:before{content:""}.wfls-fa-heart:before{content:""}.wfls-fa-star:before{content:""}.wfls-fa-star-o:before{content:""}.wfls-fa-user:before{content:""}.wfls-fa-film:before{content:""}.wfls-fa-th-large:before{content:""}.wfls-fa-th:before{content:""}.wfls-fa-th-list:before{content:""}.wfls-fa-check:before{content:""}.wfls-fa-remove:before,.wfls-fa-close:before,.wfls-fa-times:before{content:""}.wfls-fa-search-plus:before{content:""}.wfls-fa-search-minus:before{content:""}.wfls-fa-power-off:before{content:""}.wfls-fa-signal:before{content:""}.wfls-fa-gear:before,.wfls-fa-cog:before{content:""}.wfls-fa-trash-o:before{content:""}.wfls-fa-home:before{content:""}.wfls-fa-file-o:before{content:""}.wfls-fa-clock-o:before{content:""}.wfls-fa-road:before{content:""}.wfls-fa-download:before{content:""}.wfls-fa-arrow-circle-o-down:before{content:""}.wfls-fa-arrow-circle-o-up:before{content:""}.wfls-fa-inbox:before{content:""}.wfls-fa-play-circle-o:before{content:""}.wfls-fa-rotate-right:before,.wfls-fa-repeat:before{content:""}.wfls-fa-refresh:before{content:""}.wfls-fa-list-alt:before{content:""}.wfls-fa-lock:before{content:""}.wfls-fa-flag:before{content:""}.wfls-fa-headphones:before{content:""}.wfls-fa-volume-off:before{content:""}.wfls-fa-volume-down:before{content:""}.wfls-fa-volume-up:before{content:""}.wfls-fa-qrcode:before{content:""}.wfls-fa-barcode:before{content:""}.wfls-fa-tag:before{content:""}.wfls-fa-tags:before{content:""}.wfls-fa-book:before{content:""}.wfls-fa-bookmark:before{content:""}.wfls-fa-print:before{content:""}.wfls-fa-camera:before{content:""}.wfls-fa-font:before{content:""}.wfls-fa-bold:before{content:""}.wfls-fa-italic:before{content:""}.wfls-fa-text-height:before{content:""}.wfls-fa-text-width:before{content:""}.wfls-fa-align-left:before{content:""}.wfls-fa-align-center:before{content:""}.wfls-fa-align-right:before{content:""}.wfls-fa-align-justify:before{content:""}.wfls-fa-list:before{content:""}.wfls-fa-dedent:before,.wfls-fa-outdent:before{content:""}.wfls-fa-indent:before{content:""}.wfls-fa-video-camera:before{content:""}.wfls-fa-photo:before,.wfls-fa-image:before,.wfls-fa-picture-o:before{content:""}.wfls-fa-pencil:before{content:""}.wfls-fa-map-marker:before{content:""}.wfls-fa-adjust:before{content:""}.wfls-fa-tint:before{content:""}.wfls-fa-edit:before,.wfls-fa-pencil-square-o:before{content:""}.wfls-fa-share-square-o:before{content:""}.wfls-fa-check-square-o:before{content:""}.wfls-fa-arrows:before{content:""}.wfls-fa-step-backward:before{content:""}.wfls-fa-fast-backward:before{content:""}.wfls-fa-backward:before{content:""}.wfls-fa-play:before{content:""}.wfls-fa-pause:before{content:""}.wfls-fa-stop:before{content:""}.wfls-fa-forward:before{content:""}.wfls-fa-fast-forward:before{content:""}.wfls-fa-step-forward:before{content:""}.wfls-fa-eject:before{content:""}.wfls-fa-chevron-left:before{content:""}.wfls-fa-chevron-right:before{content:""}.wfls-fa-plus-circle:before{content:""}.wfls-fa-minus-circle:before{content:""}.wfls-fa-times-circle:before{content:""}.wfls-fa-check-circle:before{content:""}.wfls-fa-question-circle:before{content:""}.wfls-fa-info-circle:before{content:""}.wfls-fa-crosshairs:before{content:""}.wfls-fa-times-circle-o:before{content:""}.wfls-fa-check-circle-o:before{content:""}.wfls-fa-ban:before{content:""}.wfls-fa-arrow-left:before{content:""}.wfls-fa-arrow-right:before{content:""}.wfls-fa-arrow-up:before{content:""}.wfls-fa-arrow-down:before{content:""}.wfls-fa-mail-forward:before,.wfls-fa-share:before{content:""}.wfls-fa-expand:before{content:""}.wfls-fa-compress:before{content:""}.wfls-fa-plus:before{content:""}.wfls-fa-minus:before{content:""}.wfls-fa-asterisk:before{content:""}.wfls-fa-exclamation-circle:before{content:""}.wfls-fa-gift:before{content:""}.wfls-fa-leaf:before{content:""}.wfls-fa-fire:before{content:""}.wfls-fa-eye:before{content:""}.wfls-fa-eye-slash:before{content:""}.wfls-fa-warning:before,.wfls-fa-exclamation-triangle:before{content:""}.wfls-fa-plane:before{content:""}.wfls-fa-calendar:before{content:""}.wfls-fa-random:before{content:""}.wfls-fa-comment:before{content:""}.wfls-fa-magnet:before{content:""}.wfls-fa-chevron-up:before{content:""}.wfls-fa-chevron-down:before{content:""}.wfls-fa-retweet:before{content:""}.wfls-fa-shopping-cart:before{content:""}.wfls-fa-folder:before{content:""}.wfls-fa-folder-open:before{content:""}.wfls-fa-arrows-v:before{content:""}.wfls-fa-arrows-h:before{content:""}.wfls-fa-bar-chart-o:before,.wfls-fa-bar-chart:before{content:""}.wfls-fa-twitter-square:before{content:""}.wfls-fa-facebook-square:before{content:""}.wfls-fa-camera-retro:before{content:""}.wfls-fa-key:before{content:""}.wfls-fa-gears:before,.wfls-fa-cogs:before{content:""}.wfls-fa-comments:before{content:""}.wfls-fa-thumbs-o-up:before{content:""}.wfls-fa-thumbs-o-down:before{content:""}.wfls-fa-star-half:before{content:""}.wfls-fa-heart-o:before{content:""}.wfls-fa-sign-out:before{content:""}.wfls-fa-linkedin-square:before{content:""}.wfls-fa-thumb-tack:before{content:""}.wfls-fa-external-link:before{content:""}.wfls-fa-sign-in:before{content:""}.wfls-fa-trophy:before{content:""}.wfls-fa-github-square:before{content:""}.wfls-fa-upload:before{content:""}.wfls-fa-lemon-o:before{content:""}.wfls-fa-phone:before{content:""}.wfls-fa-square-o:before{content:""}.wfls-fa-bookmark-o:before{content:""}.wfls-fa-phone-square:before{content:""}.wfls-fa-twitter:before{content:""}.wfls-fa-facebook-f:before,.wfls-fa-facebook:before{content:""}.wfls-fa-github:before{content:""}.wfls-fa-unlock:before{content:""}.wfls-fa-credit-card:before{content:""}.wfls-fa-feed:before,.wfls-fa-rss:before{content:""}.wfls-fa-hdd-o:before{content:""}.wfls-fa-bullhorn:before{content:""}.wfls-fa-bell:before{content:""}.wfls-fa-certificate:before{content:""}.wfls-fa-hand-o-right:before{content:""}.wfls-fa-hand-o-left:before{content:""}.wfls-fa-hand-o-up:before{content:""}.wfls-fa-hand-o-down:before{content:""}.wfls-fa-arrow-circle-left:before{content:""}.wfls-fa-arrow-circle-right:before{content:""}.wfls-fa-arrow-circle-up:before{content:""}.wfls-fa-arrow-circle-down:before{content:""}.wfls-fa-globe:before{content:""}.wfls-fa-wrench:before{content:""}.wfls-fa-tasks:before{content:""}.wfls-fa-filter:before{content:""}.wfls-fa-briefcase:before{content:""}.wfls-fa-arrows-alt:before{content:""}.wfls-fa-group:before,.wfls-fa-users:before{content:""}.wfls-fa-chain:before,.wfls-fa-link:before{content:""}.wfls-fa-cloud:before{content:""}.wfls-fa-flask:before{content:""}.wfls-fa-cut:before,.wfls-fa-scissors:before{content:""}.wfls-fa-copy:before,.wfls-fa-files-o:before{content:""}.wfls-fa-paperclip:before{content:""}.wfls-fa-save:before,.wfls-fa-floppy-o:before{content:""}.wfls-fa-square:before{content:""}.wfls-fa-navicon:before,.wfls-fa-reorder:before,.wfls-fa-bars:before{content:""}.wfls-fa-list-ul:before{content:""}.wfls-fa-list-ol:before{content:""}.wfls-fa-strikethrough:before{content:""}.wfls-fa-underline:before{content:""}.wfls-fa-table:before{content:""}.wfls-fa-magic:before{content:""}.wfls-fa-truck:before{content:""}.wfls-fa-pinterest:before{content:""}.wfls-fa-pinterest-square:before{content:""}.wfls-fa-google-plus-square:before{content:""}.wfls-fa-google-plus:before{content:""}.wfls-fa-money:before{content:""}.wfls-fa-caret-down:before{content:""}.wfls-fa-caret-up:before{content:""}.wfls-fa-caret-left:before{content:""}.wfls-fa-caret-right:before{content:""}.wfls-fa-columns:before{content:""}.wfls-fa-unsorted:before,.wfls-fa-sort:before{content:""}.wfls-fa-sort-down:before,.wfls-fa-sort-desc:before{content:""}.wfls-fa-sort-up:before,.wfls-fa-sort-asc:before{content:""}.wfls-fa-envelope:before{content:""}.wfls-fa-linkedin:before{content:""}.wfls-fa-rotate-left:before,.wfls-fa-undo:before{content:""}.wfls-fa-legal:before,.wfls-fa-gavel:before{content:""}.wfls-fa-dashboard:before,.wfls-fa-tachometer:before{content:""}.wfls-fa-comment-o:before{content:""}.wfls-fa-comments-o:before{content:""}.wfls-fa-flash:before,.wfls-fa-bolt:before{content:""}.wfls-fa-sitemap:before{content:""}.wfls-fa-umbrella:before{content:""}.wfls-fa-paste:before,.wfls-fa-clipboard:before{content:""}.wfls-fa-lightbulb-o:before{content:""}.wfls-fa-exchange:before{content:""}.wfls-fa-cloud-download:before{content:""}.wfls-fa-cloud-upload:before{content:""}.wfls-fa-user-md:before{content:""}.wfls-fa-stethoscope:before{content:""}.wfls-fa-suitcase:before{content:""}.wfls-fa-bell-o:before{content:""}.wfls-fa-coffee:before{content:""}.wfls-fa-cutlery:before{content:""}.wfls-fa-file-text-o:before{content:""}.wfls-fa-building-o:before{content:""}.wfls-fa-hospital-o:before{content:""}.wfls-fa-ambulance:before{content:""}.wfls-fa-medkit:before{content:""}.wfls-fa-fighter-jet:before{content:""}.wfls-fa-beer:before{content:""}.wfls-fa-h-square:before{content:""}.wfls-fa-plus-square:before{content:""}.wfls-fa-angle-double-left:before{content:""}.wfls-fa-angle-double-right:before{content:""}.wfls-fa-angle-double-up:before{content:""}.wfls-fa-angle-double-down:before{content:""}.wfls-fa-angle-left:before{content:""}.wfls-fa-angle-right:before{content:""}.wfls-fa-angle-up:before{content:""}.wfls-fa-angle-down:before{content:""}.wfls-fa-desktop:before{content:""}.wfls-fa-laptop:before{content:""}.wfls-fa-tablet:before{content:""}.wfls-fa-mobile-phone:before,.wfls-fa-mobile:before{content:""}.wfls-fa-circle-o:before{content:""}.wfls-fa-quote-left:before{content:""}.wfls-fa-quote-right:before{content:""}.wfls-fa-spinner:before{content:""}.wfls-fa-circle:before{content:""}.wfls-fa-mail-reply:before,.wfls-fa-reply:before{content:""}.wfls-fa-github-alt:before{content:""}.wfls-fa-folder-o:before{content:""}.wfls-fa-folder-open-o:before{content:""}.wfls-fa-smile-o:before{content:""}.wfls-fa-frown-o:before{content:""}.wfls-fa-meh-o:before{content:""}.wfls-fa-gamepad:before{content:""}.wfls-fa-keyboard-o:before{content:""}.wfls-fa-flag-o:before{content:""}.wfls-fa-flag-checkered:before{content:""}.wfls-fa-terminal:before{content:""}.wfls-fa-code:before{content:""}.wfls-fa-mail-reply-all:before,.wfls-fa-reply-all:before{content:""}.wfls-fa-star-half-empty:before,.wfls-fa-star-half-full:before,.wfls-fa-star-half-o:before{content:""}.wfls-fa-location-arrow:before{content:""}.wfls-fa-crop:before{content:""}.wfls-fa-code-fork:before{content:""}.wfls-fa-unlink:before,.wfls-fa-chain-broken:before{content:""}.wfls-fa-question:before{content:""}.wfls-fa-info:before{content:""}.wfls-fa-exclamation:before{content:""}.wfls-fa-superscript:before{content:""}.wfls-fa-subscript:before{content:""}.wfls-fa-eraser:before{content:""}.wfls-fa-puzzle-piece:before{content:""}.wfls-fa-microphone:before{content:""}.wfls-fa-microphone-slash:before{content:""}.wfls-fa-shield:before{content:""}.wfls-fa-calendar-o:before{content:""}.wfls-fa-fire-extinguisher:before{content:""}.wfls-fa-rocket:before{content:""}.wfls-fa-maxcdn:before{content:""}.wfls-fa-chevron-circle-left:before{content:""}.wfls-fa-chevron-circle-right:before{content:""}.wfls-fa-chevron-circle-up:before{content:""}.wfls-fa-chevron-circle-down:before{content:""}.wfls-fa-html5:before{content:""}.wfls-fa-css3:before{content:""}.wfls-fa-anchor:before{content:""}.wfls-fa-unlock-alt:before{content:""}.wfls-fa-bullseye:before{content:""}.wfls-fa-ellipsis-h:before{content:""}.wfls-fa-ellipsis-v:before{content:""}.wfls-fa-rss-square:before{content:""}.wfls-fa-play-circle:before{content:""}.wfls-fa-ticket:before{content:""}.wfls-fa-minus-square:before{content:""}.wfls-fa-minus-square-o:before{content:""}.wfls-fa-level-up:before{content:""}.wfls-fa-level-down:before{content:""}.wfls-fa-check-square:before{content:""}.wfls-fa-pencil-square:before{content:""}.wfls-fa-external-link-square:before{content:""}.wfls-fa-share-square:before{content:""}.wfls-fa-compass:before{content:""}.wfls-fa-toggle-down:before,.wfls-fa-caret-square-o-down:before{content:""}.wfls-fa-toggle-up:before,.wfls-fa-caret-square-o-up:before{content:""}.wfls-fa-toggle-right:before,.wfls-fa-caret-square-o-right:before{content:""}.wfls-fa-euro:before,.wfls-fa-eur:before{content:""}.wfls-fa-gbp:before{content:""}.wfls-fa-dollar:before,.wfls-fa-usd:before{content:""}.wfls-fa-rupee:before,.wfls-fa-inr:before{content:""}.wfls-fa-cny:before,.wfls-fa-rmb:before,.wfls-fa-yen:before,.wfls-fa-jpy:before{content:""}.wfls-fa-ruble:before,.wfls-fa-rouble:before,.wfls-fa-rub:before{content:""}.wfls-fa-won:before,.wfls-fa-krw:before{content:""}.wfls-fa-bitcoin:before,.wfls-fa-btc:before{content:""}.wfls-fa-file:before{content:""}.wfls-fa-file-text:before{content:""}.wfls-fa-sort-alpha-asc:before{content:""}.wfls-fa-sort-alpha-desc:before{content:""}.wfls-fa-sort-amount-asc:before{content:""}.wfls-fa-sort-amount-desc:before{content:""}.wfls-fa-sort-numeric-asc:before{content:""}.wfls-fa-sort-numeric-desc:before{content:""}.wfls-fa-thumbs-up:before{content:""}.wfls-fa-thumbs-down:before{content:""}.wfls-fa-youtube-square:before{content:""}.wfls-fa-youtube:before{content:""}.wfls-fa-xing:before{content:""}.wfls-fa-xing-square:before{content:""}.wfls-fa-youtube-play:before{content:""}.wfls-fa-dropbox:before{content:""}.wfls-fa-stack-overflow:before{content:""}.wfls-fa-instagram:before{content:""}.wfls-fa-flickr:before{content:""}.wfls-fa-adn:before{content:""}.wfls-fa-bitbucket:before{content:""}.wfls-fa-bitbucket-square:before{content:""}.wfls-fa-tumblr:before{content:""}.wfls-fa-tumblr-square:before{content:""}.wfls-fa-long-arrow-down:before{content:""}.wfls-fa-long-arrow-up:before{content:""}.wfls-fa-long-arrow-left:before{content:""}.wfls-fa-long-arrow-right:before{content:""}.wfls-fa-apple:before{content:""}.wfls-fa-windows:before{content:""}.wfls-fa-android:before{content:""}.wfls-fa-linux:before{content:""}.wfls-fa-dribbble:before{content:""}.wfls-fa-skype:before{content:""}.wfls-fa-foursquare:before{content:""}.wfls-fa-trello:before{content:""}.wfls-fa-female:before{content:""}.wfls-fa-male:before{content:""}.wfls-fa-gittip:before,.wfls-fa-gratipay:before{content:""}.wfls-fa-sun-o:before{content:""}.wfls-fa-moon-o:before{content:""}.wfls-fa-archive:before{content:""}.wfls-fa-bug:before{content:""}.wfls-fa-vk:before{content:""}.wfls-fa-weibo:before{content:""}.wfls-fa-renren:before{content:""}.wfls-fa-pagelines:before{content:""}.wfls-fa-stack-exchange:before{content:""}.wfls-fa-arrow-circle-o-right:before{content:""}.wfls-fa-arrow-circle-o-left:before{content:""}.wfls-fa-toggle-left:before,.wfls-fa-caret-square-o-left:before{content:""}.wfls-fa-dot-circle-o:before{content:""}.wfls-fa-wheelchair:before{content:""}.wfls-fa-vimeo-square:before{content:""}.wfls-fa-turkish-lira:before,.wfls-fa-try:before{content:""}.wfls-fa-plus-square-o:before{content:""}.wfls-fa-space-shuttle:before{content:""}.wfls-fa-slack:before{content:""}.wfls-fa-envelope-square:before{content:""}.wfls-fa-wordpress:before{content:""}.wfls-fa-openid:before{content:""}.wfls-fa-institution:before,.wfls-fa-bank:before,.wfls-fa-university:before{content:""}.wfls-fa-mortar-board:before,.wfls-fa-graduation-cap:before{content:""}.wfls-fa-yahoo:before{content:""}.wfls-fa-google:before{content:""}.wfls-fa-reddit:before{content:""}.wfls-fa-reddit-square:before{content:""}.wfls-fa-stumbleupon-circle:before{content:""}.wfls-fa-stumbleupon:before{content:""}.wfls-fa-delicious:before{content:""}.wfls-fa-digg:before{content:""}.wfls-fa-pied-piper-pp:before{content:""}.wfls-fa-pied-piper-alt:before{content:""}.wfls-fa-drupal:before{content:""}.wfls-fa-joomla:before{content:""}.wfls-fa-language:before{content:""}.wfls-fa-fax:before{content:""}.wfls-fa-building:before{content:""}.wfls-fa-child:before{content:""}.wfls-fa-paw:before{content:""}.wfls-fa-spoon:before{content:""}.wfls-fa-cube:before{content:""}.wfls-fa-cubes:before{content:""}.wfls-fa-behance:before{content:""}.wfls-fa-behance-square:before{content:""}.wfls-fa-steam:before{content:""}.wfls-fa-steam-square:before{content:""}.wfls-fa-recycle:before{content:""}.wfls-fa-automobile:before,.wfls-fa-car:before{content:""}.wfls-fa-cab:before,.wfls-fa-taxi:before{content:""}.wfls-fa-tree:before{content:""}.wfls-fa-spotify:before{content:""}.wfls-fa-deviantart:before{content:""}.wfls-fa-soundcloud:before{content:""}.wfls-fa-database:before{content:""}.wfls-fa-file-pdf-o:before{content:""}.wfls-fa-file-word-o:before{content:""}.wfls-fa-file-excel-o:before{content:""}.wfls-fa-file-powerpoint-o:before{content:""}.wfls-fa-file-photo-o:before,.wfls-fa-file-picture-o:before,.wfls-fa-file-image-o:before{content:""}.wfls-fa-file-zip-o:before,.wfls-fa-file-archive-o:before{content:""}.wfls-fa-file-sound-o:before,.wfls-fa-file-audio-o:before{content:""}.wfls-fa-file-movie-o:before,.wfls-fa-file-video-o:before{content:""}.wfls-fa-file-code-o:before{content:""}.wfls-fa-vine:before{content:""}.wfls-fa-codepen:before{content:""}.wfls-fa-jsfiddle:before{content:""}.wfls-fa-life-bouy:before,.wfls-fa-life-buoy:before,.wfls-fa-life-saver:before,.wfls-fa-support:before,.wfls-fa-life-ring:before{content:""}.wfls-fa-circle-o-notch:before{content:""}.wfls-fa-ra:before,.wfls-fa-resistance:before,.wfls-fa-rebel:before{content:""}.wfls-fa-ge:before,.wfls-fa-empire:before{content:""}.wfls-fa-git-square:before{content:""}.wfls-fa-git:before{content:""}.wfls-fa-y-combinator-square:before,.wfls-fa-yc-square:before,.wfls-fa-hacker-news:before{content:""}.wfls-fa-tencent-weibo:before{content:""}.wfls-fa-qq:before{content:""}.wfls-fa-wechat:before,.wfls-fa-weixin:before{content:""}.wfls-fa-send:before,.wfls-fa-paper-plane:before{content:""}.wfls-fa-send-o:before,.wfls-fa-paper-plane-o:before{content:""}.wfls-fa-history:before{content:""}.wfls-fa-circle-thin:before{content:""}.wfls-fa-header:before{content:""}.wfls-fa-paragraph:before{content:""}.wfls-fa-sliders:before{content:""}.wfls-fa-share-alt:before{content:""}.wfls-fa-share-alt-square:before{content:""}.wfls-fa-bomb:before{content:""}.wfls-fa-soccer-ball-o:before,.wfls-fa-futbol-o:before{content:""}.wfls-fa-tty:before{content:""}.wfls-fa-binoculars:before{content:""}.wfls-fa-plug:before{content:""}.wfls-fa-slideshare:before{content:""}.wfls-fa-twitch:before{content:""}.wfls-fa-yelp:before{content:""}.wfls-fa-newspaper-o:before{content:""}.wfls-fa-wifi:before{content:""}.wfls-fa-calculator:before{content:""}.wfls-fa-paypal:before{content:""}.wfls-fa-google-wallet:before{content:""}.wfls-fa-cc-visa:before{content:""}.wfls-fa-cc-mastercard:before{content:""}.wfls-fa-cc-discover:before{content:""}.wfls-fa-cc-amex:before{content:""}.wfls-fa-cc-paypal:before{content:""}.wfls-fa-cc-stripe:before{content:""}.wfls-fa-bell-slash:before{content:""}.wfls-fa-bell-slash-o:before{content:""}.wfls-fa-trash:before{content:""}.wfls-fa-copyright:before{content:""}.wfls-fa-at:before{content:""}.wfls-fa-eyedropper:before{content:""}.wfls-fa-paint-brush:before{content:""}.wfls-fa-birthday-cake:before{content:""}.wfls-fa-area-chart:before{content:""}.wfls-fa-pie-chart:before{content:""}.wfls-fa-line-chart:before{content:""}.wfls-fa-lastfm:before{content:""}.wfls-fa-lastfm-square:before{content:""}.wfls-fa-toggle-off:before{content:""}.wfls-fa-toggle-on:before{content:""}.wfls-fa-bicycle:before{content:""}.wfls-fa-bus:before{content:""}.wfls-fa-ioxhost:before{content:""}.wfls-fa-angellist:before{content:""}.wfls-fa-cc:before{content:""}.wfls-fa-shekel:before,.wfls-fa-sheqel:before,.wfls-fa-ils:before{content:""}.wfls-fa-meanpath:before{content:""}.wfls-fa-buysellads:before{content:""}.wfls-fa-connectdevelop:before{content:""}.wfls-fa-dashcube:before{content:""}.wfls-fa-forumbee:before{content:""}.wfls-fa-leanpub:before{content:""}.wfls-fa-sellsy:before{content:""}.wfls-fa-shirtsinbulk:before{content:""}.wfls-fa-simplybuilt:before{content:""}.wfls-fa-skyatlas:before{content:""}.wfls-fa-cart-plus:before{content:""}.wfls-fa-cart-arrow-down:before{content:""}.wfls-fa-diamond:before{content:""}.wfls-fa-ship:before{content:""}.wfls-fa-user-secret:before{content:""}.wfls-fa-motorcycle:before{content:""}.wfls-fa-street-view:before{content:""}.wfls-fa-heartbeat:before{content:""}.wfls-fa-venus:before{content:""}.wfls-fa-mars:before{content:""}.wfls-fa-mercury:before{content:""}.wfls-fa-intersex:before,.wfls-fa-transgender:before{content:""}.wfls-fa-transgender-alt:before{content:""}.wfls-fa-venus-double:before{content:""}.wfls-fa-mars-double:before{content:""}.wfls-fa-venus-mars:before{content:""}.wfls-fa-mars-stroke:before{content:""}.wfls-fa-mars-stroke-v:before{content:""}.wfls-fa-mars-stroke-h:before{content:""}.wfls-fa-neuter:before{content:""}.wfls-fa-genderless:before{content:""}.wfls-fa-facebook-official:before{content:""}.wfls-fa-pinterest-p:before{content:""}.wfls-fa-whatsapp:before{content:""}.wfls-fa-server:before{content:""}.wfls-fa-user-plus:before{content:""}.wfls-fa-user-times:before{content:""}.wfls-fa-hotel:before,.wfls-fa-bed:before{content:""}.wfls-fa-viacoin:before{content:""}.wfls-fa-train:before{content:""}.wfls-fa-subway:before{content:""}.wfls-fa-medium:before{content:""}.wfls-fa-yc:before,.wfls-fa-y-combinator:before{content:""}.wfls-fa-optin-monster:before{content:""}.wfls-fa-opencart:before{content:""}.wfls-fa-expeditedssl:before{content:""}.wfls-fa-battery-4:before,.wfls-fa-battery:before,.wfls-fa-battery-full:before{content:""}.wfls-fa-battery-3:before,.wfls-fa-battery-three-quarters:before{content:""}.wfls-fa-battery-2:before,.wfls-fa-battery-half:before{content:""}.wfls-fa-battery-1:before,.wfls-fa-battery-quarter:before{content:""}.wfls-fa-battery-0:before,.wfls-fa-battery-empty:before{content:""}.wfls-fa-mouse-pointer:before{content:""}.wfls-fa-i-cursor:before{content:""}.wfls-fa-object-group:before{content:""}.wfls-fa-object-ungroup:before{content:""}.wfls-fa-sticky-note:before{content:""}.wfls-fa-sticky-note-o:before{content:""}.wfls-fa-cc-jcb:before{content:""}.wfls-fa-cc-diners-club:before{content:""}.wfls-fa-clone:before{content:""}.wfls-fa-balance-scale:before{content:""}.wfls-fa-hourglass-o:before{content:""}.wfls-fa-hourglass-1:before,.wfls-fa-hourglass-start:before{content:""}.wfls-fa-hourglass-2:before,.wfls-fa-hourglass-half:before{content:""}.wfls-fa-hourglass-3:before,.wfls-fa-hourglass-end:before{content:""}.wfls-fa-hourglass:before{content:""}.wfls-fa-hand-grab-o:before,.wfls-fa-hand-rock-o:before{content:""}.wfls-fa-hand-stop-o:before,.wfls-fa-hand-paper-o:before{content:""}.wfls-fa-hand-scissors-o:before{content:""}.wfls-fa-hand-lizard-o:before{content:""}.wfls-fa-hand-spock-o:before{content:""}.wfls-fa-hand-pointer-o:before{content:""}.wfls-fa-hand-peace-o:before{content:""}.wfls-fa-trademark:before{content:""}.wfls-fa-registered:before{content:""}.wfls-fa-creative-commons:before{content:""}.wfls-fa-gg:before{content:""}.wfls-fa-gg-circle:before{content:""}.wfls-fa-tripadvisor:before{content:""}.wfls-fa-odnoklassniki:before{content:""}.wfls-fa-odnoklassniki-square:before{content:""}.wfls-fa-get-pocket:before{content:""}.wfls-fa-wikipedia-w:before{content:""}.wfls-fa-safari:before{content:""}.wfls-fa-chrome:before{content:""}.wfls-fa-firefox:before{content:""}.wfls-fa-opera:before{content:""}.wfls-fa-internet-explorer:before{content:""}.wfls-fa-tv:before,.wfls-fa-television:before{content:""}.wfls-fa-contao:before{content:""}.wfls-fa-500px:before{content:""}.wfls-fa-amazon:before{content:""}.wfls-fa-calendar-plus-o:before{content:""}.wfls-fa-calendar-minus-o:before{content:""}.wfls-fa-calendar-times-o:before{content:""}.wfls-fa-calendar-check-o:before{content:""}.wfls-fa-industry:before{content:""}.wfls-fa-map-pin:before{content:""}.wfls-fa-map-signs:before{content:""}.wfls-fa-map-o:before{content:""}.wfls-fa-map:before{content:""}.wfls-fa-commenting:before{content:""}.wfls-fa-commenting-o:before{content:""}.wfls-fa-houzz:before{content:""}.wfls-fa-vimeo:before{content:""}.wfls-fa-black-tie:before{content:""}.wfls-fa-fonticons:before{content:""}.wfls-fa-reddit-alien:before{content:""}.wfls-fa-edge:before{content:""}.wfls-fa-credit-card-alt:before{content:""}.wfls-fa-codiepie:before{content:""}.wfls-fa-modx:before{content:""}.wfls-fa-fort-awesome:before{content:""}.wfls-fa-usb:before{content:""}.wfls-fa-product-hunt:before{content:""}.wfls-fa-mixcloud:before{content:""}.wfls-fa-scribd:before{content:""}.wfls-fa-pause-circle:before{content:""}.wfls-fa-pause-circle-o:before{content:""}.wfls-fa-stop-circle:before{content:""}.wfls-fa-stop-circle-o:before{content:""}.wfls-fa-shopping-bag:before{content:""}.wfls-fa-shopping-basket:before{content:""}.wfls-fa-hashtag:before{content:""}.wfls-fa-bluetooth:before{content:""}.wfls-fa-bluetooth-b:before{content:""}.wfls-fa-percent:before{content:""}.wfls-fa-gitlab:before{content:""}.wfls-fa-wpbeginner:before{content:""}.wfls-fa-wpforms:before{content:""}.wfls-fa-envira:before{content:""}.wfls-fa-universal-access:before{content:""}.wfls-fa-wheelchair-alt:before{content:""}.wfls-fa-question-circle-o:before{content:""}.wfls-fa-blind:before{content:""}.wfls-fa-audio-description:before{content:""}.wfls-fa-volume-control-phone:before{content:""}.wfls-fa-braille:before{content:""}.wfls-fa-assistive-listening-systems:before{content:""}.wfls-fa-asl-interpreting:before,.wfls-fa-american-sign-language-interpreting:before{content:""}.wfls-fa-deafness:before,.wfls-fa-hard-of-hearing:before,.wfls-fa-deaf:before{content:""}.wfls-fa-glide:before{content:""}.wfls-fa-glide-g:before{content:""}.wfls-fa-signing:before,.wfls-fa-sign-language:before{content:""}.wfls-fa-low-vision:before{content:""}.wfls-fa-viadeo:before{content:""}.wfls-fa-viadeo-square:before{content:""}.wfls-fa-snapchat:before{content:""}.wfls-fa-snapchat-ghost:before{content:""}.wfls-fa-snapchat-square:before{content:""}.wfls-fa-pied-piper:before{content:""}.wfls-fa-first-order:before{content:""}.wfls-fa-yoast:before{content:""}.wfls-fa-themeisle:before{content:""}.wfls-fa-google-plus-circle:before,.wfls-fa-google-plus-official:before{content:""}.wfls-fa-fa:before,.wfls-fa-font-awesome:before{content:""}.wfls-fa-handshake-o:before{content:""}.wfls-fa-envelope-open:before{content:""}.wfls-fa-envelope-open-o:before{content:""}.wfls-fa-linode:before{content:""}.wfls-fa-address-book:before{content:""}.wfls-fa-address-book-o:before{content:""}.wfls-fa-vcard:before,.wfls-fa-address-card:before{content:""}.wfls-fa-vcard-o:before,.wfls-fa-address-card-o:before{content:""}.wfls-fa-user-circle:before{content:""}.wfls-fa-user-circle-o:before{content:""}.wfls-fa-user-o:before{content:""}.wfls-fa-id-badge:before{content:""}.wfls-fa-drivers-license:before,.wfls-fa-id-card:before{content:""}.wfls-fa-drivers-license-o:before,.wfls-fa-id-card-o:before{content:""}.wfls-fa-quora:before{content:""}.wfls-fa-free-code-camp:before{content:""}.wfls-fa-telegram:before{content:""}.wfls-fa-thermometer-4:before,.wfls-fa-thermometer:before,.wfls-fa-thermometer-full:before{content:""}.wfls-fa-thermometer-3:before,.wfls-fa-thermometer-three-quarters:before{content:""}.wfls-fa-thermometer-2:before,.wfls-fa-thermometer-half:before{content:""}.wfls-fa-thermometer-1:before,.wfls-fa-thermometer-quarter:before{content:""}.wfls-fa-thermometer-0:before,.wfls-fa-thermometer-empty:before{content:""}.wfls-fa-shower:before{content:""}.wfls-fa-bathtub:before,.wfls-fa-s15:before,.wfls-fa-bath:before{content:""}.wfls-fa-podcast:before{content:""}.wfls-fa-window-maximize:before{content:""}.wfls-fa-window-minimize:before{content:""}.wfls-fa-window-restore:before{content:""}.wfls-fa-times-rectangle:before,.wfls-fa-window-close:before{content:""}.wfls-fa-times-rectangle-o:before,.wfls-fa-window-close-o:before{content:""}.wfls-fa-bandcamp:before{content:""}.wfls-fa-grav:before{content:""}.wfls-fa-etsy:before{content:""}.wfls-fa-imdb:before{content:""}.wfls-fa-ravelry:before{content:""}.wfls-fa-eercast:before{content:""}.wfls-fa-microchip:before{content:""}.wfls-fa-snowflake-o:before{content:""}.wfls-fa-superpowers:before{content:""}.wfls-fa-wpexplorer:before{content:""}.wfls-fa-meetup:before{content:""}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}
modules/login-security/css/jquery-ui.theme.min.1722265817.css000064400000031640150755146440017416 0ustar00/*! jQuery UI - v1.11.4 - 2018-06-29
* http://jqueryui.com
* Copyright jQuery Foundation and other contributors; Licensed MIT */.ui-widget{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #ddd;background:#fff;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #ddd;background:#e9e9e9;color:#333;font-weight:bold}.ui-widget-header a{color:#333}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #c5c5c5;background:#f6f6f6;font-weight:normal;color:#454545}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#454545;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #ccc;background:#ededed;font-weight:normal;color:#2b2b2b}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#2b2b2b;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #003eff;background:#007fff;font-weight:normal;color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #dad55e;background:#fffa90;color:#777620}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#777620}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #f1a899;background:#fddfdf;color:#5f3f3f}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#5f3f3f}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#5f3f3f}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("../img/ui-icons_444444_256x240.png")}.ui-widget-header .ui-icon{background-image:url("../img/ui-icons_444444_256x240.png")}.ui-state-default .ui-icon{background-image:url("../img/ui-icons_777777_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("../img/ui-icons_555555_256x240.png")}.ui-state-active .ui-icon{background-image:url("../img/ui-icons_ffffff_256x240.png")}.ui-state-highlight .ui-icon{background-image:url("../img/ui-icons_777620_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("../img/ui-icons_cc0000_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:3px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:3px}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:0 0 0 0;padding:5px;background:#666;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px}
modules/login-security/css/admin-global.1722265817.css000064400000056663150755146440016143 0ustar00.wfls-clearfix:before,.wfls-clearfix:after{content:" ";display:table}.wfls-clearfix:after{clear:both}.wfls-btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;text-transform:uppercase;padding:.4rem 1rem;font-size:.875rem;line-height:1.3125rem;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}@media (min-width: 768px){.wfls-btn{padding:.5rem 1.25rem;font-size:.875rem;line-height:1.3125rem;border-radius:4px}}.wfls-btn:focus,.wfls-btn.wfls-focus,.wfls-btn:active:focus,.wfls-btn:active.wfls-focus,.wfls-btn.wfls-active:focus,.wfls-btn.wfls-active.wfls-focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.wfls-btn:hover,.wfls-btn:focus,.wfls-btn.wfls-focus{color:#00709e;text-decoration:none !important}.wfls-btn:active,.wfls-btn.wfls-active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.wfls-btn.wfls-disabled,.wfls-btn[disabled],.wfls-btn[readonly],fieldset[disabled] .wfls-btn{cursor:not-allowed;-webkit-box-shadow:none;box-shadow:none}a.wfls-btn{text-decoration:none}a.wfls-btn.wfls-disabled,fieldset[disabled] a.wfls-btn{cursor:not-allowed;pointer-events:none}.wfls-btn-default{color:#00709e;background-color:#fff;border-color:#00709e}.wfls-btn-default:focus,.wfls-btn-default.focus{color:#00709e;background-color:#e6e6e6;border-color:#00161f}.wfls-btn-default:hover{color:#00709e;background-color:#e6e6e6;border-color:#004561}.wfls-btn-default:active,.wfls-btn-default.active,.wfls-open>.wfls-btn-default.wfls-dropdown-toggle{color:#00709e;background-color:#e6e6e6;border-color:#004561}.wfls-btn-default:active:hover,.wfls-btn-default:active:focus,.wfls-btn-default:active.focus,.wfls-btn-default.active:hover,.wfls-btn-default.active:focus,.wfls-btn-default.active.focus,.wfls-open>.wfls-btn-default.wfls-dropdown-toggle:hover,.wfls-open>.wfls-btn-default.wfls-dropdown-toggle:focus,.wfls-open>.wfls-btn-default.wfls-dropdown-toggle.focus{color:#00709e;background-color:#d4d4d4;border-color:#00161f}.wfls-btn-default:active,.wfls-btn-default.wfls-active,.wfls-open>.wfls-btn-default.wfls-dropdown-toggle{background-image:none}.wfls-btn-default.wfls-disabled,.wfls-btn-default[disabled],.wfls-btn-default[readonly],fieldset[disabled] .wfls-btn-default{color:#777;background-color:#fff;border-color:#e2e2e2;cursor:not-allowed;opacity:0.75}.wfls-btn-default.wfls-disabled:hover,.wfls-btn-default.wfls-disabled:focus,.wfls-btn-default.wfls-disabled.wfls-focus,.wfls-btn-default[disabled]:hover,.wfls-btn-default[disabled]:focus,.wfls-btn-default[disabled].wfls-focus,.wfls-btn-default[readonly]:hover,.wfls-btn-default[readonly]:focus,.wfls-btn-default[readonly].wfls-focus,fieldset[disabled] .wfls-btn-default:hover,fieldset[disabled] .wfls-btn-default:focus,fieldset[disabled] .wfls-btn-default.wfls-focus{background-color:#fff;border-color:#00709e}.wfls-btn-default .wfls-badge{color:#fff;background-color:#00709e}.wfls-btn-primary{color:#fff;background-color:#00709e;border-color:#005e85}.wfls-btn-primary:focus,.wfls-btn-primary.focus{color:#fff;background-color:#004c6b;border-color:#000405}.wfls-btn-primary:hover{color:#fff;background-color:#004c6b;border-color:#003347}.wfls-btn-primary:active,.wfls-btn-primary.active,.wfls-open>.wfls-btn-primary.wfls-dropdown-toggle{color:#fff;background-color:#004c6b;border-color:#003347}.wfls-btn-primary:active:hover,.wfls-btn-primary:active:focus,.wfls-btn-primary:active.focus,.wfls-btn-primary.active:hover,.wfls-btn-primary.active:focus,.wfls-btn-primary.active.focus,.wfls-open>.wfls-btn-primary.wfls-dropdown-toggle:hover,.wfls-open>.wfls-btn-primary.wfls-dropdown-toggle:focus,.wfls-open>.wfls-btn-primary.wfls-dropdown-toggle.focus{color:#fff;background-color:#003347;border-color:#000405}.wfls-btn-primary:active,.wfls-btn-primary.wfls-active,.wfls-open>.wfls-btn-primary.wfls-dropdown-toggle{background-image:none}.wfls-btn-primary.wfls-disabled,.wfls-btn-primary[disabled],.wfls-btn-primary[readonly],fieldset[disabled] .wfls-btn-primary{color:#fff;background-color:#59a2c0;border-color:#5996b0;cursor:not-allowed;opacity:0.75}.wfls-btn-primary.wfls-disabled:hover,.wfls-btn-primary.wfls-disabled:focus,.wfls-btn-primary.wfls-disabled.wfls-focus,.wfls-btn-primary[disabled]:hover,.wfls-btn-primary[disabled]:focus,.wfls-btn-primary[disabled].wfls-focus,.wfls-btn-primary[readonly]:hover,.wfls-btn-primary[readonly]:focus,.wfls-btn-primary[readonly].wfls-focus,fieldset[disabled] .wfls-btn-primary:hover,fieldset[disabled] .wfls-btn-primary:focus,fieldset[disabled] .wfls-btn-primary.wfls-focus{background-color:#00709e;border-color:#005e85}.wfls-btn-primary .wfls-badge{color:#00709e;background-color:#fff}.wfls-btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.wfls-btn-success:focus,.wfls-btn-success.focus{color:#fff;background-color:#449d44;border-color:#255625}.wfls-btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.wfls-btn-success:active,.wfls-btn-success.active,.wfls-open>.wfls-btn-success.wfls-dropdown-toggle{color:#fff;background-color:#449d44;border-color:#398439}.wfls-btn-success:active:hover,.wfls-btn-success:active:focus,.wfls-btn-success:active.focus,.wfls-btn-success.active:hover,.wfls-btn-success.active:focus,.wfls-btn-success.active.focus,.wfls-open>.wfls-btn-success.wfls-dropdown-toggle:hover,.wfls-open>.wfls-btn-success.wfls-dropdown-toggle:focus,.wfls-open>.wfls-btn-success.wfls-dropdown-toggle.focus{color:#fff;background-color:#398439;border-color:#255625}.wfls-btn-success:active,.wfls-btn-success.wfls-active,.wfls-open>.wfls-btn-success.wfls-dropdown-toggle{background-image:none}.wfls-btn-success.wfls-disabled,.wfls-btn-success[disabled],.wfls-btn-success[readonly],fieldset[disabled] .wfls-btn-success{color:#fff;background-color:#95d195;border-color:#8bca8b;cursor:not-allowed;opacity:0.75}.wfls-btn-success.wfls-disabled:hover,.wfls-btn-success.wfls-disabled:focus,.wfls-btn-success.wfls-disabled.wfls-focus,.wfls-btn-success[disabled]:hover,.wfls-btn-success[disabled]:focus,.wfls-btn-success[disabled].wfls-focus,.wfls-btn-success[readonly]:hover,.wfls-btn-success[readonly]:focus,.wfls-btn-success[readonly].wfls-focus,fieldset[disabled] .wfls-btn-success:hover,fieldset[disabled] .wfls-btn-success:focus,fieldset[disabled] .wfls-btn-success.wfls-focus{background-color:#5cb85c;border-color:#4cae4c}.wfls-btn-success .wfls-badge{color:#5cb85c;background-color:#fff}.wfls-btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.wfls-btn-info:focus,.wfls-btn-info.focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.wfls-btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.wfls-btn-info:active,.wfls-btn-info.active,.wfls-open>.wfls-btn-info.wfls-dropdown-toggle{color:#fff;background-color:#31b0d5;border-color:#269abc}.wfls-btn-info:active:hover,.wfls-btn-info:active:focus,.wfls-btn-info:active.focus,.wfls-btn-info.active:hover,.wfls-btn-info.active:focus,.wfls-btn-info.active.focus,.wfls-open>.wfls-btn-info.wfls-dropdown-toggle:hover,.wfls-open>.wfls-btn-info.wfls-dropdown-toggle:focus,.wfls-open>.wfls-btn-info.wfls-dropdown-toggle.focus{color:#fff;background-color:#269abc;border-color:#1b6d85}.wfls-btn-info:active,.wfls-btn-info.wfls-active,.wfls-open>.wfls-btn-info.wfls-dropdown-toggle{background-image:none}.wfls-btn-info.wfls-disabled,.wfls-btn-info[disabled],.wfls-btn-info[readonly],fieldset[disabled] .wfls-btn-info{color:#fff;background-color:#94d6ea;border-color:#87d1e7;cursor:not-allowed;opacity:0.75}.wfls-btn-info.wfls-disabled:hover,.wfls-btn-info.wfls-disabled:focus,.wfls-btn-info.wfls-disabled.wfls-focus,.wfls-btn-info[disabled]:hover,.wfls-btn-info[disabled]:focus,.wfls-btn-info[disabled].wfls-focus,.wfls-btn-info[readonly]:hover,.wfls-btn-info[readonly]:focus,.wfls-btn-info[readonly].wfls-focus,fieldset[disabled] .wfls-btn-info:hover,fieldset[disabled] .wfls-btn-info:focus,fieldset[disabled] .wfls-btn-info.wfls-focus{background-color:#5bc0de;border-color:#46b8da}.wfls-btn-info .wfls-badge{color:#5bc0de;background-color:#fff}.wfls-btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.wfls-btn-warning:focus,.wfls-btn-warning.focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.wfls-btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.wfls-btn-warning:active,.wfls-btn-warning.active,.wfls-open>.wfls-btn-warning.wfls-dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.wfls-btn-warning:active:hover,.wfls-btn-warning:active:focus,.wfls-btn-warning:active.focus,.wfls-btn-warning.active:hover,.wfls-btn-warning.active:focus,.wfls-btn-warning.active.focus,.wfls-open>.wfls-btn-warning.wfls-dropdown-toggle:hover,.wfls-open>.wfls-btn-warning.wfls-dropdown-toggle:focus,.wfls-open>.wfls-btn-warning.wfls-dropdown-toggle.focus{color:#fff;background-color:#d58512;border-color:#985f0d}.wfls-btn-warning:active,.wfls-btn-warning.wfls-active,.wfls-open>.wfls-btn-warning.wfls-dropdown-toggle{background-image:none}.wfls-btn-warning.wfls-disabled,.wfls-btn-warning[disabled],.wfls-btn-warning[readonly],fieldset[disabled] .wfls-btn-warning{color:#fff;background-color:#f5ca8c;border-color:#f4c37c;cursor:not-allowed;opacity:0.75}.wfls-btn-warning.wfls-disabled:hover,.wfls-btn-warning.wfls-disabled:focus,.wfls-btn-warning.wfls-disabled.wfls-focus,.wfls-btn-warning[disabled]:hover,.wfls-btn-warning[disabled]:focus,.wfls-btn-warning[disabled].wfls-focus,.wfls-btn-warning[readonly]:hover,.wfls-btn-warning[readonly]:focus,.wfls-btn-warning[readonly].wfls-focus,fieldset[disabled] .wfls-btn-warning:hover,fieldset[disabled] .wfls-btn-warning:focus,fieldset[disabled] .wfls-btn-warning.wfls-focus{background-color:#f0ad4e;border-color:#eea236}.wfls-btn-warning .wfls-badge{color:#f0ad4e;background-color:#fff}.wfls-btn-danger{color:#fff;background-color:#930000;border-color:#7a0000}.wfls-btn-danger:focus,.wfls-btn-danger.focus{color:#fff;background-color:#600000;border-color:#000}.wfls-btn-danger:hover{color:#fff;background-color:#600000;border-color:#3c0000}.wfls-btn-danger:active,.wfls-btn-danger.active,.wfls-open>.wfls-btn-danger.wfls-dropdown-toggle{color:#fff;background-color:#600000;border-color:#3c0000}.wfls-btn-danger:active:hover,.wfls-btn-danger:active:focus,.wfls-btn-danger:active.focus,.wfls-btn-danger.active:hover,.wfls-btn-danger.active:focus,.wfls-btn-danger.active.focus,.wfls-open>.wfls-btn-danger.wfls-dropdown-toggle:hover,.wfls-open>.wfls-btn-danger.wfls-dropdown-toggle:focus,.wfls-open>.wfls-btn-danger.wfls-dropdown-toggle.focus{color:#fff;background-color:#3c0000;border-color:#000}.wfls-btn-danger:active,.wfls-btn-danger.wfls-active,.wfls-open>.wfls-btn-danger.wfls-dropdown-toggle{background-image:none}.wfls-btn-danger.wfls-disabled,.wfls-btn-danger[disabled],.wfls-btn-danger[readonly],fieldset[disabled] .wfls-btn-danger{color:#fff;background-color:#b95959;border-color:#a95959;cursor:not-allowed;opacity:0.75}.wfls-btn-danger.wfls-disabled:hover,.wfls-btn-danger.wfls-disabled:focus,.wfls-btn-danger.wfls-disabled.wfls-focus,.wfls-btn-danger[disabled]:hover,.wfls-btn-danger[disabled]:focus,.wfls-btn-danger[disabled].wfls-focus,.wfls-btn-danger[readonly]:hover,.wfls-btn-danger[readonly]:focus,.wfls-btn-danger[readonly].wfls-focus,fieldset[disabled] .wfls-btn-danger:hover,fieldset[disabled] .wfls-btn-danger:focus,fieldset[disabled] .wfls-btn-danger.wfls-focus{background-color:#930000;border-color:#7a0000}.wfls-btn-danger .wfls-badge{color:#930000;background-color:#fff}.wfls-btn-callout{font-weight:600;text-transform:uppercase}.wfls-btn-callout-subtle{font-weight:400;text-transform:uppercase}.wfls-btn-link{color:#00709e;font-weight:normal;border-radius:0}.wfls-btn-link,.wfls-btn-link:active,.wfls-btn-link.wfls-active,.wfls-btn-link[disabled],fieldset[disabled] .wfls-btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.wfls-btn-link,.wfls-btn-link:hover,.wfls-btn-link:focus,.wfls-btn-link:active{border-color:transparent}.wfls-btn-link:hover,.wfls-btn-link:focus{color:#003a52;text-decoration:underline;background-color:transparent}.wfls-btn-link[disabled]:hover,.wfls-btn-link[disabled]:focus,fieldset[disabled] .wfls-btn-link:hover,fieldset[disabled] .wfls-btn-link:focus{color:#777;text-decoration:none}.wfls-btn-lg,.wfls-btn-group-lg>.wfls-btn{padding:10px 16px;font-size:18px;line-height:1.33333;border-radius:6px}.wfls-btn-sm,.wfls-btn-group-sm>.wfls-btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.wfls-btn-xs,.wfls-btn-group-xs>.wfls-btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.wfls-btn-block{display:block;width:100%}.wfls-btn-block+.wfls-btn-block{margin-top:5px}input[type="submit"].wfls-btn-block,input[type="reset"].wfls-btn-block,input[type="button"].wfls-btn-block{width:100%}.wfls-btn-group,.wfls-btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.wfls-btn-group>.wfls-btn,.wfls-btn-group-vertical>.wfls-btn{position:relative;float:left}.wfls-btn-group>.wfls-btn:hover,.wfls-btn-group>.wfls-btn:focus,.wfls-btn-group>.wfls-btn:active,.wfls-btn-group>.wfls-btn.wfls-active,.wfls-btn-group-vertical>.wfls-btn:hover,.wfls-btn-group-vertical>.wfls-btn:focus,.wfls-btn-group-vertical>.wfls-btn:active,.wfls-btn-group-vertical>.wfls-btn.wfls-active{z-index:2}.wfls-btn-group .wfls-btn+.wfls-btn,.wfls-btn-group .wfls-btn+.wfls-btn-group,.wfls-btn-group .wfls-btn-group+.wfls-btn,.wfls-btn-group .wfls-btn-group+.wfls-btn-group{margin-left:-1px}.wfls-btn-toolbar{margin-left:-5px}.wfls-btn-toolbar:before,.wfls-btn-toolbar:after{content:" ";display:table}.wfls-btn-toolbar:after{clear:both}.wfls-btn-toolbar .wfls-btn,.wfls-btn-toolbar .wfls-btn-group,.wfls-btn-toolbar .wfls-input-group{float:left}.wfls-btn-toolbar>.wfls-btn,.wfls-btn-toolbar>.wfls-btn-group,.wfls-btn-toolbar>.wfls-input-group{margin-left:5px}.wfls-btn-group>.wfls-btn:not(:first-child):not(:last-child):not(.wfls-dropdown-toggle){border-radius:0}.wfls-btn-group>.wfls-btn:first-child{margin-left:0}.wfls-btn-group>.wfls-btn:first-child:not(:last-child):not(.wfls-dropdown-toggle){-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.wfls-btn-group>.wfls-btn:last-child:not(:first-child),.wfls-btn-group>.wfls-dropdown-toggle:not(:first-child){-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0}.wfls-btn-group>.wfls-btn-group{float:left}.wfls-btn-group>.wfls-btn-group:not(:first-child):not(:last-child)>.wfls-btn{border-radius:0}.wfls-btn-group>.wfls-btn-group:first-child:not(:last-child)>.wfls-btn:last-child,.wfls-btn-group>.wfls-btn-group:first-child:not(:last-child)>.wfls-dropdown-toggle{-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.wfls-btn-group>.wfls-btn-group:last-child:not(:first-child)>.wfls-btn:first-child{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0}.wfls-btn-group .wfls-dropdown-toggle:active,.wfls-btn-group.wfls-open .wfls-dropdown-toggle{outline:0}.wfls-btn-group>.wfls-btn+.wfls-dropdown-toggle{padding-left:8px;padding-right:8px}.wfls-btn-group>.wfls-btn-lg+.wfls-dropdown-toggle,.wfls-btn-group-lg.wfls-btn-group>.wfls-btn+.wfls-dropdown-toggle{padding-left:12px;padding-right:12px}.wfls-btn-group.open .wfls-dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.wfls-btn-group.open .wfls-dropdown-toggle.wfls-btn-link{-webkit-box-shadow:none;box-shadow:none}.wfls-btn .wfls-caret{margin-left:0}.wfls-btn-lg .wfls-caret,.wfls-btn-group-lg>.wfls-btn .wfls-caret{border-width:5px 5px 0;border-bottom-width:0}.wfls-dropup .wfls-btn-lg .wfls-caret,.wfls-dropup .wfls-btn-group-lg>.wfls-btn .wfls-caret{border-width:0 5px 5px}.wfls-btn-group-vertical>.wfls-btn,.wfls-btn-group-vertical>.wfls-btn-group,.wfls-btn-group-vertical>.wfls-btn-group>.wfls-btn{display:block;float:none;width:100%;max-width:100%}.wfls-btn-group-vertical>.wfls-btn-group:before,.wfls-btn-group-vertical>.wfls-btn-group:after{content:" ";display:table}.wfls-btn-group-vertical>.wfls-btn-group:after{clear:both}.wfls-btn-group-vertical>.wfls-btn-group>.wfls-btn{float:none}.wfls-btn-group-vertical>.wfls-btn+.wfls-btn,.wfls-btn-group-vertical>.wfls-btn+.wfls-btn-group,.wfls-btn-group-vertical>.wfls-btn-group+.wfls-btn,.wfls-btn-group-vertical>.wfls-btn-group+.wfls-btn-group{margin-top:-1px;margin-left:0}.wfls-btn-group-vertical>.wfls-btn:not(:first-child):not(:last-child){border-radius:0}.wfls-btn-group-vertical>.wfls-btn:first-child:not(:last-child){-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.wfls-btn-group-vertical>.wfls-btn:last-child:not(:first-child){-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.wfls-btn-group-vertical>.wfls-btn-group:not(:first-child):not(:last-child)>.wfls-btn{border-radius:0}.wfls-btn-group-vertical>.wfls-btn-group:first-child:not(:last-child)>.wfls-btn:last-child,.wfls-btn-group-vertical>.wfls-btn-group:first-child:not(:last-child)>.wfls-dropdown-toggle{-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.wfls-btn-group-vertical>.wfls-btn-group:last-child:not(:first-child)>.wfls-btn:first-child{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0}.wfls-btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.wfls-btn-group-justified>.wfls-btn,.wfls-btn-group-justified>.wfls-btn-group{float:none;display:table-cell;width:1%}.wfls-btn-group-justified>.wfls-btn-group .wfls-btn{width:100%}.wfls-btn-group-justified>.wfls-btn-group .wfls-dropdown-menu{left:auto}[data-toggle="buttons"]>.wfls-btn input[type="radio"],[data-toggle="buttons"]>.wfls-btn input[type="checkbox"],[data-toggle="buttons"]>.wfls-btn-group>.wfls-btn input[type="radio"],[data-toggle="buttons"]>.wfls-btn-group>.wfls-btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.wfls-pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.wfls-pagination>li{display:inline}.wfls-pagination>li>a,.wfls-pagination>li>span{position:relative;float:left;padding:.5rem 1.25rem;line-height:1.42857;text-decoration:none;color:#00709e;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.wfls-pagination>li:first-child>a,.wfls-pagination>li:first-child>span{margin-left:0;-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px}.wfls-pagination>li:last-child>a,.wfls-pagination>li:last-child>span{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.wfls-pagination>li>a:hover,.wfls-pagination>li>a:focus,.wfls-pagination>li>span:hover,.wfls-pagination>li>span:focus{z-index:2;color:#003a52;background-color:#e2e2e2;border-color:#ddd}.wfls-pagination>.wfls-active>a,.wfls-pagination>.wfls-active>a:hover,.wfls-pagination>.wfls-active>a:focus,.wfls-pagination>.wfls-active>span,.wfls-pagination>.wfls-active>span:hover,.wfls-pagination>.wfls-active>span:focus{z-index:3;color:#fff;background-color:#00709e;border-color:#00709e;cursor:default}.wfls-pagination>.wfls-disabled>span,.wfls-pagination>.wfls-disabled>span:hover,.wfls-pagination>.wfls-disabled>span:focus,.wfls-pagination>.wfls-disabled>a,.wfls-pagination>.wfls-disabled>a:hover,.wfls-pagination>.wfls-disabled>a:focus{color:#777;background-color:#fff;border-color:#ddd;cursor:not-allowed}.wfls-pagination-lg>li>a,.wfls-pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.33333}.wfls-pagination-lg>li:first-child>a,.wfls-pagination-lg>li:first-child>span{-moz-border-radius-topleft:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px}.wfls-pagination-lg>li:last-child>a,.wfls-pagination-lg>li:last-child>span{-moz-border-radius-topright:6px;-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-moz-border-radius-bottomright:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px}.wfls-pagination-sm>li>a,.wfls-pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.wfls-pagination-sm>li:first-child>a,.wfls-pagination-sm>li:first-child>span{-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px}.wfls-pagination-sm>li:last-child>a,.wfls-pagination-sm>li:last-child>span{-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px}#wfls-notices{margin-top:15px}#wfls-notices .wfls-admin-notice{margin-left:0px;margin-right:0px}.wfls-success-text,.wfls-notice-text{display:inline-block;vertical-align:middle;line-height:1.3;font-size:16px;font-weight:bold;font-style:italic}.wfls-notice{margin:12px 0;padding:8px;background-color:#ffffe0;border:1px solid #ffd975;border-width:1px 1px 1px 10px}.wfls-notice-text{color:#6d798c}.wfls-success{margin:12px 0;padding:8px;background-color:#ffffff;border:1px solid #16bc9b;border-width:1px 1px 1px 10px}.wfls-success-text{color:#11967a}.wfls-premium-callout{border:1px solid #dfdfdf;background-color:#ffffff;padding:16px;margin:20px 0 0;text-align:center}.wfls-premium-callout ul{margin:8px 0;padding:0 0 0 15px}.wfls-premium-callout ul li{list-style-type:disc;margin:0;padding:0}.wfls-premium-callout .center{text-align:center;margin:0}.wfls-premium-callout .button-primary{text-align:center;text-transform:uppercase;font-weight:bold;background-color:#00709e}small.wfls-sub-status{display:block}.wfls-grace-period-container{display:flex;align-items:center;justify-content:left;margin-bottom:1rem;margin-top:1rem}.wfls-grace-period-container .wfls-grace-period-input-container{margin-right:1.5rem;text-align:center}.wfls-grace-period-container .wfls-grace-period-input-container label{display:block;font-weight:bold}.wfls-grace-period-container .wfls-grace-period-input-container input{width:3em;text-align:center}#wfls-reset-grace-period-failed{text-align:center}#toplevel_page_WFLS .wp-menu-image img{max-width:16px;max-height:16px}
modules/login-security/css/embedded.1722265817.css000064400000001050150755146440015322 0ustar00#wfls-management-embedded .wfls-flex-row-wrapped{flex-wrap:wrap;-webkit-flex-wrap:wrap}#wfls-management-embedded ul.wfls-recovery-codes{margin-left:0;padding-left:0}#wfls-management-embedded .wfls-btn{text-decoration:none}#wfls-management-embedded #wfls-qr-code-text{margin-top:0.5rem}#wfls-management-embedded>div>div:not(:last-child){margin-bottom:0.75rem}#wfls-management-embedded>div.wfls-no-bottom-column-margin>div:not(:last-child){margin-bottom:0}#wfls-management-embedded input[type=text]{width:auto}.wfls-modal-footer ul{list-style-type:none}
modules/login-security/css/ionicons.1722265817.css000064400000156223150755146440015427 0ustar00@font-face{font-family:"Ionicons";src:url("../../../fonts/ionicons.woff?v=2.0.0") format("woff");font-weight:normal;font-style:normal}.wf-ion,.wf-ionicons,.wfls-ion-alert:before,.wfls-ion-alert-circled:before,.wfls-ion-android-add:before,.wfls-ion-android-add-circle:before,.wfls-ion-android-alarm-clock:before,.wfls-ion-android-alert:before,.wfls-ion-android-apps:before,.wfls-ion-android-archive:before,.wfls-ion-android-arrow-back:before,.wfls-ion-android-arrow-down:before,.wfls-ion-android-arrow-dropdown:before,.wfls-ion-android-arrow-dropdown-circle:before,.wfls-ion-android-arrow-dropleft:before,.wfls-ion-android-arrow-dropleft-circle:before,.wfls-ion-android-arrow-dropright:before,.wfls-ion-android-arrow-dropright-circle:before,.wfls-ion-android-arrow-dropup:before,.wfls-ion-android-arrow-dropup-circle:before,.wfls-ion-android-arrow-forward:before,.wfls-ion-android-arrow-up:before,.wfls-ion-android-attach:before,.wfls-ion-android-bar:before,.wfls-ion-android-bicycle:before,.wfls-ion-android-boat:before,.wfls-ion-android-bookmark:before,.wfls-ion-android-bulb:before,.wfls-ion-android-bus:before,.wfls-ion-android-calendar:before,.wfls-ion-android-call:before,.wfls-ion-android-camera:before,.wfls-ion-android-cancel:before,.wfls-ion-android-car:before,.wfls-ion-android-cart:before,.wfls-ion-android-chat:before,.wfls-ion-android-checkbox:before,.wfls-ion-android-checkbox-blank:before,.wfls-ion-android-checkbox-outline:before,.wfls-ion-android-checkbox-outline-blank:before,.wfls-ion-android-checkmark-circle:before,.wfls-ion-android-clipboard:before,.wfls-ion-android-close:before,.wfls-ion-android-cloud:before,.wfls-ion-android-cloud-circle:before,.wfls-ion-android-cloud-done:before,.wfls-ion-android-cloud-outline:before,.wfls-ion-android-color-palette:before,.wfls-ion-android-compass:before,.wfls-ion-android-contact:before,.wfls-ion-android-contacts:before,.wfls-ion-android-contract:before,.wfls-ion-android-create:before,.wfls-ion-android-delete:before,.wfls-ion-android-desktop:before,.wfls-ion-android-document:before,.wfls-ion-android-done:before,.wfls-ion-android-done-all:before,.wfls-ion-android-download:before,.wfls-ion-android-drafts:before,.wfls-ion-android-exit:before,.wfls-ion-android-expand:before,.wfls-ion-android-favorite:before,.wfls-ion-android-favorite-outline:before,.wfls-ion-android-film:before,.wfls-ion-android-folder:before,.wfls-ion-android-folder-open:before,.wfls-ion-android-funnel:before,.wfls-ion-android-globe:before,.wfls-ion-android-hand:before,.wfls-ion-android-hangout:before,.wfls-ion-android-happy:before,.wfls-ion-android-home:before,.wfls-ion-android-image:before,.wfls-ion-android-laptop:before,.wfls-ion-android-list:before,.wfls-ion-android-locate:before,.wfls-ion-android-lock:before,.wfls-ion-android-mail:before,.wfls-ion-android-map:before,.wfls-ion-android-menu:before,.wfls-ion-android-microphone:before,.wfls-ion-android-microphone-off:before,.wfls-ion-android-more-horizontal:before,.wfls-ion-android-more-vertical:before,.wfls-ion-android-navigate:before,.wfls-ion-android-notifications:before,.wfls-ion-android-notifications-none:before,.wfls-ion-android-notifications-off:before,.wfls-ion-android-open:before,.wfls-ion-android-options:before,.wfls-ion-android-people:before,.wfls-ion-android-person:before,.wfls-ion-android-person-add:before,.wfls-ion-android-phone-landscape:before,.wfls-ion-android-phone-portrait:before,.wfls-ion-android-pin:before,.wfls-ion-android-plane:before,.wfls-ion-android-playstore:before,.wfls-ion-android-print:before,.wfls-ion-android-radio-button-off:before,.wfls-ion-android-radio-button-on:before,.wfls-ion-android-refresh:before,.wfls-ion-android-remove:before,.wfls-ion-android-remove-circle:before,.wfls-ion-android-restaurant:before,.wfls-ion-android-sad:before,.wfls-ion-android-search:before,.wfls-ion-android-send:before,.wfls-ion-android-settings:before,.wfls-ion-android-share:before,.wfls-ion-android-share-alt:before,.wfls-ion-android-star:before,.wfls-ion-android-star-half:before,.wfls-ion-android-star-outline:before,.wfls-ion-android-stopwatch:before,.wfls-ion-android-subway:before,.wfls-ion-android-sunny:before,.wfls-ion-android-sync:before,.wfls-ion-android-textsms:before,.wfls-ion-android-time:before,.wfls-ion-android-train:before,.wfls-ion-android-unlock:before,.wfls-ion-android-upload:before,.wfls-ion-android-volume-down:before,.wfls-ion-android-volume-mute:before,.wfls-ion-android-volume-off:before,.wfls-ion-android-volume-up:before,.wfls-ion-android-walk:before,.wfls-ion-android-warning:before,.wfls-ion-android-watch:before,.wfls-ion-android-wifi:before,.wfls-ion-aperture:before,.wfls-ion-archive:before,.wfls-ion-arrow-down-a:before,.wfls-ion-arrow-down-b:before,.wfls-ion-arrow-down-c:before,.wfls-ion-arrow-expand:before,.wfls-ion-arrow-graph-down-left:before,.wfls-ion-arrow-graph-down-right:before,.wfls-ion-arrow-graph-up-left:before,.wfls-ion-arrow-graph-up-right:before,.wfls-ion-arrow-left-a:before,.wfls-ion-arrow-left-b:before,.wfls-ion-arrow-left-c:before,.wfls-ion-arrow-move:before,.wfls-ion-arrow-resize:before,.wfls-ion-arrow-return-left:before,.wfls-ion-arrow-return-right:before,.wfls-ion-arrow-right-a:before,.wfls-ion-arrow-right-b:before,.wfls-ion-arrow-right-c:before,.wfls-ion-arrow-shrink:before,.wfls-ion-arrow-swap:before,.wfls-ion-arrow-up-a:before,.wfls-ion-arrow-up-b:before,.wfls-ion-arrow-up-c:before,.wfls-ion-asterisk:before,.wfls-ion-at:before,.wfls-ion-backspace:before,.wfls-ion-backspace-outline:before,.wfls-ion-bag:before,.wfls-ion-battery-charging:before,.wfls-ion-battery-empty:before,.wfls-ion-battery-full:before,.wfls-ion-battery-half:before,.wfls-ion-battery-low:before,.wfls-ion-beaker:before,.wfls-ion-beer:before,.wfls-ion-bluetooth:before,.wfls-ion-bonfire:before,.wfls-ion-bookmark:before,.wfls-ion-bowtie:before,.wfls-ion-briefcase:before,.wfls-ion-bug:before,.wfls-ion-calculator:before,.wfls-ion-calendar:before,.wfls-ion-camera:before,.wfls-ion-card:before,.wfls-ion-cash:before,.wfls-ion-chatbox:before,.wfls-ion-chatbox-working:before,.wfls-ion-chatboxes:before,.wfls-ion-chatbubble:before,.wfls-ion-chatbubble-working:before,.wfls-ion-chatbubbles:before,.wfls-ion-checkmark:before,.wfls-ion-checkmark-circled:before,.wfls-ion-checkmark-round:before,.wfls-ion-chevron-down:before,.wfls-ion-chevron-left:before,.wfls-ion-chevron-right:before,.wfls-ion-chevron-up:before,.wfls-ion-clipboard:before,.wfls-ion-clock:before,.wfls-ion-close:before,.wfls-ion-close-circled:before,.wfls-ion-close-round:before,.wfls-ion-closed-captioning:before,.wfls-ion-cloud:before,.wfls-ion-code:before,.wfls-ion-code-download:before,.wfls-ion-code-working:before,.wfls-ion-coffee:before,.wfls-ion-compass:before,.wfls-ion-compose:before,.wfls-ion-connection-bars:before,.wfls-ion-contrast:before,.wfls-ion-crop:before,.wfls-ion-cube:before,.wfls-ion-disc:before,.wfls-ion-document:before,.wfls-ion-document-text:before,.wfls-ion-drag:before,.wfls-ion-earth:before,.wfls-ion-easel:before,.wfls-ion-edit:before,.wfls-ion-egg:before,.wfls-ion-eject:before,.wfls-ion-email:before,.wfls-ion-email-unread:before,.wfls-ion-erlenmeyer-flask:before,.wfls-ion-erlenmeyer-flask-bubbles:before,.wfls-ion-eye:before,.wfls-ion-eye-disabled:before,.wfls-ion-female:before,.wfls-ion-filing:before,.wfls-ion-film-marker:before,.wfls-ion-fireball:before,.wfls-ion-flag:before,.wfls-ion-flame:before,.wfls-ion-flash:before,.wfls-ion-flash-off:before,.wfls-ion-folder:before,.wfls-ion-fork:before,.wfls-ion-fork-repo:before,.wfls-ion-forward:before,.wfls-ion-funnel:before,.wfls-ion-gear-a:before,.wfls-ion-gear-b:before,.wfls-ion-grid:before,.wfls-ion-hammer:before,.wfls-ion-happy:before,.wfls-ion-happy-outline:before,.wfls-ion-headphone:before,.wfls-ion-heart:before,.wfls-ion-heart-broken:before,.wfls-ion-help:before,.wfls-ion-help-buoy:before,.wfls-ion-help-circled:before,.wfls-ion-home:before,.wfls-ion-icecream:before,.wfls-ion-image:before,.wfls-ion-images:before,.wfls-ion-information:before,.wfls-ion-information-circled:before,.wfls-ion-ionic:before,.wfls-ion-ios-alarm:before,.wfls-ion-ios-alarm-outline:before,.wfls-ion-ios-albums:before,.wfls-ion-ios-albums-outline:before,.wfls-ion-ios-americanfootball:before,.wfls-ion-ios-americanfootball-outline:before,.wfls-ion-ios-analytics:before,.wfls-ion-ios-analytics-outline:before,.wfls-ion-ios-arrow-back:before,.wfls-ion-ios-arrow-down:before,.wfls-ion-ios-arrow-forward:before,.wfls-ion-ios-arrow-left:before,.wfls-ion-ios-arrow-right:before,.wfls-ion-ios-arrow-thin-down:before,.wfls-ion-ios-arrow-thin-left:before,.wfls-ion-ios-arrow-thin-right:before,.wfls-ion-ios-arrow-thin-up:before,.wfls-ion-ios-arrow-up:before,.wfls-ion-ios-at:before,.wfls-ion-ios-at-outline:before,.wfls-ion-ios-barcode:before,.wfls-ion-ios-barcode-outline:before,.wfls-ion-ios-baseball:before,.wfls-ion-ios-baseball-outline:before,.wfls-ion-ios-basketball:before,.wfls-ion-ios-basketball-outline:before,.wfls-ion-ios-bell:before,.wfls-ion-ios-bell-outline:before,.wfls-ion-ios-body:before,.wfls-ion-ios-body-outline:before,.wfls-ion-ios-bolt:before,.wfls-ion-ios-bolt-outline:before,.wfls-ion-ios-book:before,.wfls-ion-ios-book-outline:before,.wfls-ion-ios-bookmarks:before,.wfls-ion-ios-bookmarks-outline:before,.wfls-ion-ios-box:before,.wfls-ion-ios-box-outline:before,.wfls-ion-ios-briefcase:before,.wfls-ion-ios-briefcase-outline:before,.wfls-ion-ios-browsers:before,.wfls-ion-ios-browsers-outline:before,.wfls-ion-ios-calculator:before,.wfls-ion-ios-calculator-outline:before,.wfls-ion-ios-calendar:before,.wfls-ion-ios-calendar-outline:before,.wfls-ion-ios-camera:before,.wfls-ion-ios-camera-outline:before,.wfls-ion-ios-cart:before,.wfls-ion-ios-cart-outline:before,.wfls-ion-ios-chatboxes:before,.wfls-ion-ios-chatboxes-outline:before,.wfls-ion-ios-chatbubble:before,.wfls-ion-ios-chatbubble-outline:before,.wfls-ion-ios-checkmark:before,.wfls-ion-ios-checkmark-empty:before,.wfls-ion-ios-checkmark-outline:before,.wfls-ion-ios-circle-filled:before,.wfls-ion-ios-circle-outline:before,.wfls-ion-ios-clock:before,.wfls-ion-ios-clock-outline:before,.wfls-ion-ios-close:before,.wfls-ion-ios-close-empty:before,.wfls-ion-ios-close-outline:before,.wfls-ion-ios-cloud:before,.wfls-ion-ios-cloud-download:before,.wfls-ion-ios-cloud-download-outline:before,.wfls-ion-ios-cloud-outline:before,.wfls-ion-ios-cloud-upload:before,.wfls-ion-ios-cloud-upload-outline:before,.wfls-ion-ios-cloudy:before,.wfls-ion-ios-cloudy-night:before,.wfls-ion-ios-cloudy-night-outline:before,.wfls-ion-ios-cloudy-outline:before,.wfls-ion-ios-cog:before,.wfls-ion-ios-cog-outline:before,.wfls-ion-ios-color-filter:before,.wfls-ion-ios-color-filter-outline:before,.wfls-ion-ios-color-wand:before,.wfls-ion-ios-color-wand-outline:before,.wfls-ion-ios-compose:before,.wfls-ion-ios-compose-outline:before,.wfls-ion-ios-contact:before,.wfls-ion-ios-contact-outline:before,.wfls-ion-ios-copy:before,.wfls-ion-ios-copy-outline:before,.wfls-ion-ios-crop:before,.wfls-ion-ios-crop-strong:before,.wfls-ion-ios-download:before,.wfls-ion-ios-download-outline:before,.wfls-ion-ios-drag:before,.wfls-ion-ios-email:before,.wfls-ion-ios-email-outline:before,.wfls-ion-ios-eye:before,.wfls-ion-ios-eye-outline:before,.wfls-ion-ios-fastforward:before,.wfls-ion-ios-fastforward-outline:before,.wfls-ion-ios-filing:before,.wfls-ion-ios-filing-outline:before,.wfls-ion-ios-film:before,.wfls-ion-ios-film-outline:before,.wfls-ion-ios-flag:before,.wfls-ion-ios-flag-outline:before,.wfls-ion-ios-flame:before,.wfls-ion-ios-flame-outline:before,.wfls-ion-ios-flask:before,.wfls-ion-ios-flask-outline:before,.wfls-ion-ios-flower:before,.wfls-ion-ios-flower-outline:before,.wfls-ion-ios-folder:before,.wfls-ion-ios-folder-outline:before,.wfls-ion-ios-football:before,.wfls-ion-ios-football-outline:before,.wfls-ion-ios-game-controller-a:before,.wfls-ion-ios-game-controller-a-outline:before,.wfls-ion-ios-game-controller-b:before,.wfls-ion-ios-game-controller-b-outline:before,.wfls-ion-ios-gear:before,.wfls-ion-ios-gear-outline:before,.wfls-ion-ios-glasses:before,.wfls-ion-ios-glasses-outline:before,.wfls-ion-ios-grid-view:before,.wfls-ion-ios-grid-view-outline:before,.wfls-ion-ios-heart:before,.wfls-ion-ios-heart-outline:before,.wfls-ion-ios-help:before,.wfls-ion-ios-help-empty:before,.wfls-ion-ios-help-outline:before,.wfls-ion-ios-home:before,.wfls-ion-ios-home-outline:before,.wfls-ion-ios-infinite:before,.wfls-ion-ios-infinite-outline:before,.wfls-ion-ios-information:before,.wfls-ion-ios-information-empty:before,.wfls-ion-ios-information-outline:before,.wfls-ion-ios-ionic-outline:before,.wfls-ion-ios-keypad:before,.wfls-ion-ios-keypad-outline:before,.wfls-ion-ios-lightbulb:before,.wfls-ion-ios-lightbulb-outline:before,.wfls-ion-ios-list:before,.wfls-ion-ios-list-outline:before,.wfls-ion-ios-location:before,.wfls-ion-ios-location-outline:before,.wfls-ion-ios-locked:before,.wfls-ion-ios-locked-outline:before,.wfls-ion-ios-loop:before,.wfls-ion-ios-loop-strong:before,.wfls-ion-ios-medical:before,.wfls-ion-ios-medical-outline:before,.wfls-ion-ios-medkit:before,.wfls-ion-ios-medkit-outline:before,.wfls-ion-ios-mic:before,.wfls-ion-ios-mic-off:before,.wfls-ion-ios-mic-outline:before,.wfls-ion-ios-minus:before,.wfls-ion-ios-minus-empty:before,.wfls-ion-ios-minus-outline:before,.wfls-ion-ios-monitor:before,.wfls-ion-ios-monitor-outline:before,.wfls-ion-ios-moon:before,.wfls-ion-ios-moon-outline:before,.wfls-ion-ios-more:before,.wfls-ion-ios-more-outline:before,.wfls-ion-ios-musical-note:before,.wfls-ion-ios-musical-notes:before,.wfls-ion-ios-navigate:before,.wfls-ion-ios-navigate-outline:before,.wfls-ion-ios-nutrition:before,.wfls-ion-ios-nutrition-outline:before,.wfls-ion-ios-paper:before,.wfls-ion-ios-paper-outline:before,.wfls-ion-ios-paperplane:before,.wfls-ion-ios-paperplane-outline:before,.wfls-ion-ios-partlysunny:before,.wfls-ion-ios-partlysunny-outline:before,.wfls-ion-ios-pause:before,.wfls-ion-ios-pause-outline:before,.wfls-ion-ios-paw:before,.wfls-ion-ios-paw-outline:before,.wfls-ion-ios-people:before,.wfls-ion-ios-people-outline:before,.wfls-ion-ios-person:before,.wfls-ion-ios-person-outline:before,.wfls-ion-ios-personadd:before,.wfls-ion-ios-personadd-outline:before,.wfls-ion-ios-photos:before,.wfls-ion-ios-photos-outline:before,.wfls-ion-ios-pie:before,.wfls-ion-ios-pie-outline:before,.wfls-ion-ios-pint:before,.wfls-ion-ios-pint-outline:before,.wfls-ion-ios-play:before,.wfls-ion-ios-play-outline:before,.wfls-ion-ios-plus:before,.wfls-ion-ios-plus-empty:before,.wfls-ion-ios-plus-outline:before,.wfls-ion-ios-pricetag:before,.wfls-ion-ios-pricetag-outline:before,.wfls-ion-ios-pricetags:before,.wfls-ion-ios-pricetags-outline:before,.wfls-ion-ios-printer:before,.wfls-ion-ios-printer-outline:before,.wfls-ion-ios-pulse:before,.wfls-ion-ios-pulse-strong:before,.wfls-ion-ios-rainy:before,.wfls-ion-ios-rainy-outline:before,.wfls-ion-ios-recording:before,.wfls-ion-ios-recording-outline:before,.wfls-ion-ios-redo:before,.wfls-ion-ios-redo-outline:before,.wfls-ion-ios-refresh:before,.wfls-ion-ios-refresh-empty:before,.wfls-ion-ios-refresh-outline:before,.wfls-ion-ios-reload:before,.wfls-ion-ios-reverse-camera:before,.wfls-ion-ios-reverse-camera-outline:before,.wfls-ion-ios-rewind:before,.wfls-ion-ios-rewind-outline:before,.wfls-ion-ios-rose:before,.wfls-ion-ios-rose-outline:before,.wfls-ion-ios-search:before,.wfls-ion-ios-search-strong:before,.wfls-ion-ios-settings:before,.wfls-ion-ios-settings-strong:before,.wfls-ion-ios-shuffle:before,.wfls-ion-ios-shuffle-strong:before,.wfls-ion-ios-skipbackward:before,.wfls-ion-ios-skipbackward-outline:before,.wfls-ion-ios-skipforward:before,.wfls-ion-ios-skipforward-outline:before,.wfls-ion-ios-snowy:before,.wfls-ion-ios-speedometer:before,.wfls-ion-ios-speedometer-outline:before,.wfls-ion-ios-star:before,.wfls-ion-ios-star-half:before,.wfls-ion-ios-star-outline:before,.wfls-ion-ios-stopwatch:before,.wfls-ion-ios-stopwatch-outline:before,.wfls-ion-ios-sunny:before,.wfls-ion-ios-sunny-outline:before,.wfls-ion-ios-telephone:before,.wfls-ion-ios-telephone-outline:before,.wfls-ion-ios-tennisball:before,.wfls-ion-ios-tennisball-outline:before,.wfls-ion-ios-thunderstorm:before,.wfls-ion-ios-thunderstorm-outline:before,.wfls-ion-ios-time:before,.wfls-ion-ios-time-outline:before,.wfls-ion-ios-timer:before,.wfls-ion-ios-timer-outline:before,.wfls-ion-ios-toggle:before,.wfls-ion-ios-toggle-outline:before,.wfls-ion-ios-trash:before,.wfls-ion-ios-trash-outline:before,.wfls-ion-ios-undo:before,.wfls-ion-ios-undo-outline:before,.wfls-ion-ios-unlocked:before,.wfls-ion-ios-unlocked-outline:before,.wfls-ion-ios-upload:before,.wfls-ion-ios-upload-outline:before,.wfls-ion-ios-videocam:before,.wfls-ion-ios-videocam-outline:before,.wfls-ion-ios-volume-high:before,.wfls-ion-ios-volume-low:before,.wfls-ion-ios-wineglass:before,.wfls-ion-ios-wineglass-outline:before,.wfls-ion-ios-world:before,.wfls-ion-ios-world-outline:before,.wfls-ion-ipad:before,.wfls-ion-iphone:before,.wfls-ion-ipod:before,.wfls-ion-jet:before,.wfls-ion-key:before,.wfls-ion-knife:before,.wfls-ion-laptop:before,.wfls-ion-leaf:before,.wfls-ion-levels:before,.wfls-ion-lightbulb:before,.wfls-ion-link:before,.wfls-ion-load-a:before,.wfls-ion-load-b:before,.wfls-ion-load-c:before,.wfls-ion-load-d:before,.wfls-ion-location:before,.wfls-ion-lock-combination:before,.wfls-ion-locked:before,.wfls-ion-log-in:before,.wfls-ion-log-out:before,.wfls-ion-loop:before,.wfls-ion-magnet:before,.wfls-ion-male:before,.wfls-ion-man:before,.wfls-ion-map:before,.wfls-ion-medkit:before,.wfls-ion-merge:before,.wfls-ion-mic-a:before,.wfls-ion-mic-b:before,.wfls-ion-mic-c:before,.wfls-ion-minus:before,.wfls-ion-minus-circled:before,.wfls-ion-minus-round:before,.wfls-ion-model-s:before,.wfls-ion-monitor:before,.wfls-ion-more:before,.wfls-ion-mouse:before,.wfls-ion-music-note:before,.wfls-ion-navicon:before,.wfls-ion-navicon-round:before,.wfls-ion-navigate:before,.wfls-ion-network:before,.wfls-ion-no-smoking:before,.wfls-ion-nuclear:before,.wfls-ion-outlet:before,.wfls-ion-paintbrush:before,.wfls-ion-paintbucket:before,.wfls-ion-paper-airplane:before,.wfls-ion-paperclip:before,.wfls-ion-pause:before,.wfls-ion-person:before,.wfls-ion-person-add:before,.wfls-ion-person-stalker:before,.wfls-ion-pie-graph:before,.wfls-ion-pin:before,.wfls-ion-pinpoint:before,.wfls-ion-pizza:before,.wfls-ion-plane:before,.wfls-ion-planet:before,.wfls-ion-play:before,.wfls-ion-playstation:before,.wfls-ion-plus:before,.wfls-ion-plus-circled:before,.wfls-ion-plus-round:before,.wfls-ion-podium:before,.wfls-ion-pound:before,.wfls-ion-power:before,.wfls-ion-pricetag:before,.wfls-ion-pricetags:before,.wfls-ion-printer:before,.wfls-ion-pull-request:before,.wfls-ion-qr-scanner:before,.wfls-ion-quote:before,.wfls-ion-radio-waves:before,.wfls-ion-record:before,.wfls-ion-refresh:before,.wfls-ion-reply:before,.wfls-ion-reply-all:before,.wfls-ion-ribbon-a:before,.wfls-ion-ribbon-b:before,.wfls-ion-sad:before,.wfls-ion-sad-outline:before,.wfls-ion-scissors:before,.wfls-ion-search:before,.wfls-ion-settings:before,.wfls-ion-share:before,.wfls-ion-shuffle:before,.wfls-ion-skip-backward:before,.wfls-ion-skip-forward:before,.wfls-ion-social-android:before,.wfls-ion-social-android-outline:before,.wfls-ion-social-angular:before,.wfls-ion-social-angular-outline:before,.wfls-ion-social-apple:before,.wfls-ion-social-apple-outline:before,.wfls-ion-social-bitcoin:before,.wfls-ion-social-bitcoin-outline:before,.wfls-ion-social-buffer:before,.wfls-ion-social-buffer-outline:before,.wfls-ion-social-chrome:before,.wfls-ion-social-chrome-outline:before,.wfls-ion-social-codepen:before,.wfls-ion-social-codepen-outline:before,.wfls-ion-social-css3:before,.wfls-ion-social-css3-outline:before,.wfls-ion-social-designernews:before,.wfls-ion-social-designernews-outline:before,.wfls-ion-social-dribbble:before,.wfls-ion-social-dribbble-outline:before,.wfls-ion-social-dropbox:before,.wfls-ion-social-dropbox-outline:before,.wfls-ion-social-euro:before,.wfls-ion-social-euro-outline:before,.wfls-ion-social-facebook:before,.wfls-ion-social-facebook-outline:before,.wfls-ion-social-foursquare:before,.wfls-ion-social-foursquare-outline:before,.wfls-ion-social-freebsd-devil:before,.wfls-ion-social-github:before,.wfls-ion-social-github-outline:before,.wfls-ion-social-google:before,.wfls-ion-social-google-outline:before,.wfls-ion-social-googleplus:before,.wfls-ion-social-googleplus-outline:before,.wfls-ion-social-hackernews:before,.wfls-ion-social-hackernews-outline:before,.wfls-ion-social-html5:before,.wfls-ion-social-html5-outline:before,.wfls-ion-social-instagram:before,.wfls-ion-social-instagram-outline:before,.wfls-ion-social-javascript:before,.wfls-ion-social-javascript-outline:before,.wfls-ion-social-linkedin:before,.wfls-ion-social-linkedin-outline:before,.wfls-ion-social-markdown:before,.wfls-ion-social-nodejs:before,.wfls-ion-social-octocat:before,.wfls-ion-social-pinterest:before,.wfls-ion-social-pinterest-outline:before,.wfls-ion-social-python:before,.wfls-ion-social-reddit:before,.wfls-ion-social-reddit-outline:before,.wfls-ion-social-rss:before,.wfls-ion-social-rss-outline:before,.wfls-ion-social-sass:before,.wfls-ion-social-skype:before,.wfls-ion-social-skype-outline:before,.wfls-ion-social-snapchat:before,.wfls-ion-social-snapchat-outline:before,.wfls-ion-social-tumblr:before,.wfls-ion-social-tumblr-outline:before,.wfls-ion-social-tux:before,.wfls-ion-social-twitch:before,.wfls-ion-social-twitch-outline:before,.wfls-ion-social-twitter:before,.wfls-ion-social-twitter-outline:before,.wfls-ion-social-usd:before,.wfls-ion-social-usd-outline:before,.wfls-ion-social-vimeo:before,.wfls-ion-social-vimeo-outline:before,.wfls-ion-social-whatsapp:before,.wfls-ion-social-whatsapp-outline:before,.wfls-ion-social-windows:before,.wfls-ion-social-windows-outline:before,.wfls-ion-social-wordpress:before,.wfls-ion-social-wordpress-outline:before,.wfls-ion-social-yahoo:before,.wfls-ion-social-yahoo-outline:before,.wfls-ion-social-yen:before,.wfls-ion-social-yen-outline:before,.wfls-ion-social-youtube:before,.wfls-ion-social-youtube-outline:before,.wfls-ion-soup-can:before,.wfls-ion-soup-can-outline:before,.wfls-ion-speakerphone:before,.wfls-ion-speedometer:before,.wfls-ion-spoon:before,.wfls-ion-star:before,.wfls-ion-stats-bars:before,.wfls-ion-steam:before,.wfls-ion-stop:before,.wfls-ion-thermometer:before,.wfls-ion-thumbsdown:before,.wfls-ion-thumbsup:before,.wfls-ion-toggle:before,.wfls-ion-toggle-filled:before,.wfls-ion-transgender:before,.wfls-ion-trash-a:before,.wfls-ion-trash-b:before,.wfls-ion-trophy:before,.wfls-ion-tshirt:before,.wfls-ion-tshirt-outline:before,.wfls-ion-umbrella:before,.wfls-ion-university:before,.wfls-ion-unlocked:before,.wfls-ion-upload:before,.wfls-ion-usb:before,.wfls-ion-videocamera:before,.wfls-ion-volume-high:before,.wfls-ion-volume-low:before,.wfls-ion-volume-medium:before,.wfls-ion-volume-mute:before,.wfls-ion-wand:before,.wfls-ion-waterdrop:before,.wfls-ion-wifi:before,.wfls-ion-wineglass:before,.wfls-ion-woman:before,.wfls-ion-wrench:before,.wfls-ion-xbox:before{display:inline-block;font-family:"Ionicons" !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;text-rendering:auto;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wfls-ion-alert:before{content:""}.wfls-ion-alert-circled:before{content:""}.wfls-ion-android-add:before{content:""}.wfls-ion-android-add-circle:before{content:""}.wfls-ion-android-alarm-clock:before{content:""}.wfls-ion-android-alert:before{content:""}.wfls-ion-android-apps:before{content:""}.wfls-ion-android-archive:before{content:""}.wfls-ion-android-arrow-back:before{content:""}.wfls-ion-android-arrow-down:before{content:""}.wfls-ion-android-arrow-dropdown:before{content:""}.wfls-ion-android-arrow-dropdown-circle:before{content:""}.wfls-ion-android-arrow-dropleft:before{content:""}.wfls-ion-android-arrow-dropleft-circle:before{content:""}.wfls-ion-android-arrow-dropright:before{content:""}.wfls-ion-android-arrow-dropright-circle:before{content:""}.wfls-ion-android-arrow-dropup:before{content:""}.wfls-ion-android-arrow-dropup-circle:before{content:""}.wfls-ion-android-arrow-forward:before{content:""}.wfls-ion-android-arrow-up:before{content:""}.wfls-ion-android-attach:before{content:""}.wfls-ion-android-bar:before{content:""}.wfls-ion-android-bicycle:before{content:""}.wfls-ion-android-boat:before{content:""}.wfls-ion-android-bookmark:before{content:""}.wfls-ion-android-bulb:before{content:""}.wfls-ion-android-bus:before{content:""}.wfls-ion-android-calendar:before{content:""}.wfls-ion-android-call:before{content:""}.wfls-ion-android-camera:before{content:""}.wfls-ion-android-cancel:before{content:""}.wfls-ion-android-car:before{content:""}.wfls-ion-android-cart:before{content:""}.wfls-ion-android-chat:before{content:""}.wfls-ion-android-checkbox:before{content:""}.wfls-ion-android-checkbox-blank:before{content:""}.wfls-ion-android-checkbox-outline:before{content:""}.wfls-ion-android-checkbox-outline-blank:before{content:""}.wfls-ion-android-checkmark-circle:before{content:""}.wfls-ion-android-clipboard:before{content:""}.wfls-ion-android-close:before{content:""}.wfls-ion-android-cloud:before{content:""}.wfls-ion-android-cloud-circle:before{content:""}.wfls-ion-android-cloud-done:before{content:""}.wfls-ion-android-cloud-outline:before{content:""}.wfls-ion-android-color-palette:before{content:""}.wfls-ion-android-compass:before{content:""}.wfls-ion-android-contact:before{content:""}.wfls-ion-android-contacts:before{content:""}.wfls-ion-android-contract:before{content:""}.wfls-ion-android-create:before{content:""}.wfls-ion-android-delete:before{content:""}.wfls-ion-android-desktop:before{content:""}.wfls-ion-android-document:before{content:""}.wfls-ion-android-done:before{content:""}.wfls-ion-android-done-all:before{content:""}.wfls-ion-android-download:before{content:""}.wfls-ion-android-drafts:before{content:""}.wfls-ion-android-exit:before{content:""}.wfls-ion-android-expand:before{content:""}.wfls-ion-android-favorite:before{content:""}.wfls-ion-android-favorite-outline:before{content:""}.wfls-ion-android-film:before{content:""}.wfls-ion-android-folder:before{content:""}.wfls-ion-android-folder-open:before{content:""}.wfls-ion-android-funnel:before{content:""}.wfls-ion-android-globe:before{content:""}.wfls-ion-android-hand:before{content:""}.wfls-ion-android-hangout:before{content:""}.wfls-ion-android-happy:before{content:""}.wfls-ion-android-home:before{content:""}.wfls-ion-android-image:before{content:""}.wfls-ion-android-laptop:before{content:""}.wfls-ion-android-list:before{content:""}.wfls-ion-android-locate:before{content:""}.wfls-ion-android-lock:before{content:""}.wfls-ion-android-mail:before{content:""}.wfls-ion-android-map:before{content:""}.wfls-ion-android-menu:before{content:""}.wfls-ion-android-microphone:before{content:""}.wfls-ion-android-microphone-off:before{content:""}.wfls-ion-android-more-horizontal:before{content:""}.wfls-ion-android-more-vertical:before{content:""}.wfls-ion-android-navigate:before{content:""}.wfls-ion-android-notifications:before{content:""}.wfls-ion-android-notifications-none:before{content:""}.wfls-ion-android-notifications-off:before{content:""}.wfls-ion-android-open:before{content:""}.wfls-ion-android-options:before{content:""}.wfls-ion-android-people:before{content:""}.wfls-ion-android-person:before{content:""}.wfls-ion-android-person-add:before{content:""}.wfls-ion-android-phone-landscape:before{content:""}.wfls-ion-android-phone-portrait:before{content:""}.wfls-ion-android-pin:before{content:""}.wfls-ion-android-plane:before{content:""}.wfls-ion-android-playstore:before{content:""}.wfls-ion-android-print:before{content:""}.wfls-ion-android-radio-button-off:before{content:""}.wfls-ion-android-radio-button-on:before{content:""}.wfls-ion-android-refresh:before{content:""}.wfls-ion-android-remove:before{content:""}.wfls-ion-android-remove-circle:before{content:""}.wfls-ion-android-restaurant:before{content:""}.wfls-ion-android-sad:before{content:""}.wfls-ion-android-search:before{content:""}.wfls-ion-android-send:before{content:""}.wfls-ion-android-settings:before{content:""}.wfls-ion-android-share:before{content:""}.wfls-ion-android-share-alt:before{content:""}.wfls-ion-android-star:before{content:""}.wfls-ion-android-star-half:before{content:""}.wfls-ion-android-star-outline:before{content:""}.wfls-ion-android-stopwatch:before{content:""}.wfls-ion-android-subway:before{content:""}.wfls-ion-android-sunny:before{content:""}.wfls-ion-android-sync:before{content:""}.wfls-ion-android-textsms:before{content:""}.wfls-ion-android-time:before{content:""}.wfls-ion-android-train:before{content:""}.wfls-ion-android-unlock:before{content:""}.wfls-ion-android-upload:before{content:""}.wfls-ion-android-volume-down:before{content:""}.wfls-ion-android-volume-mute:before{content:""}.wfls-ion-android-volume-off:before{content:""}.wfls-ion-android-volume-up:before{content:""}.wfls-ion-android-walk:before{content:""}.wfls-ion-android-warning:before{content:""}.wfls-ion-android-watch:before{content:""}.wfls-ion-android-wifi:before{content:""}.wfls-ion-aperture:before{content:""}.wfls-ion-archive:before{content:""}.wfls-ion-arrow-down-a:before{content:""}.wfls-ion-arrow-down-b:before{content:""}.wfls-ion-arrow-down-c:before{content:""}.wfls-ion-arrow-expand:before{content:""}.wfls-ion-arrow-graph-down-left:before{content:""}.wfls-ion-arrow-graph-down-right:before{content:""}.wfls-ion-arrow-graph-up-left:before{content:""}.wfls-ion-arrow-graph-up-right:before{content:""}.wfls-ion-arrow-left-a:before{content:""}.wfls-ion-arrow-left-b:before{content:""}.wfls-ion-arrow-left-c:before{content:""}.wfls-ion-arrow-move:before{content:""}.wfls-ion-arrow-resize:before{content:""}.wfls-ion-arrow-return-left:before{content:""}.wfls-ion-arrow-return-right:before{content:""}.wfls-ion-arrow-right-a:before{content:""}.wfls-ion-arrow-right-b:before{content:""}.wfls-ion-arrow-right-c:before{content:""}.wfls-ion-arrow-shrink:before{content:""}.wfls-ion-arrow-swap:before{content:""}.wfls-ion-arrow-up-a:before{content:""}.wfls-ion-arrow-up-b:before{content:""}.wfls-ion-arrow-up-c:before{content:""}.wfls-ion-asterisk:before{content:""}.wfls-ion-at:before{content:""}.wfls-ion-backspace:before{content:""}.wfls-ion-backspace-outline:before{content:""}.wfls-ion-bag:before{content:""}.wfls-ion-battery-charging:before{content:""}.wfls-ion-battery-empty:before{content:""}.wfls-ion-battery-full:before{content:""}.wfls-ion-battery-half:before{content:""}.wfls-ion-battery-low:before{content:""}.wfls-ion-beaker:before{content:""}.wfls-ion-beer:before{content:""}.wfls-ion-bluetooth:before{content:""}.wfls-ion-bonfire:before{content:""}.wfls-ion-bookmark:before{content:""}.wfls-ion-bowtie:before{content:""}.wfls-ion-briefcase:before{content:""}.wfls-ion-bug:before{content:""}.wfls-ion-calculator:before{content:""}.wfls-ion-calendar:before{content:""}.wfls-ion-camera:before{content:""}.wfls-ion-card:before{content:""}.wfls-ion-cash:before{content:""}.wfls-ion-chatbox:before{content:""}.wfls-ion-chatbox-working:before{content:""}.wfls-ion-chatboxes:before{content:""}.wfls-ion-chatbubble:before{content:""}.wfls-ion-chatbubble-working:before{content:""}.wfls-ion-chatbubbles:before{content:""}.wfls-ion-checkmark:before{content:""}.wfls-ion-checkmark-circled:before{content:""}.wfls-ion-checkmark-round:before{content:""}.wfls-ion-chevron-down:before{content:""}.wfls-ion-chevron-left:before{content:""}.wfls-ion-chevron-right:before{content:""}.wfls-ion-chevron-up:before{content:""}.wfls-ion-clipboard:before{content:""}.wfls-ion-clock:before{content:""}.wfls-ion-close:before{content:""}.wfls-ion-close-circled:before{content:""}.wfls-ion-close-round:before{content:""}.wfls-ion-closed-captioning:before{content:""}.wfls-ion-cloud:before{content:""}.wfls-ion-code:before{content:""}.wfls-ion-code-download:before{content:""}.wfls-ion-code-working:before{content:""}.wfls-ion-coffee:before{content:""}.wfls-ion-compass:before{content:""}.wfls-ion-compose:before{content:""}.wfls-ion-connection-bars:before{content:""}.wfls-ion-contrast:before{content:""}.wfls-ion-crop:before{content:""}.wfls-ion-cube:before{content:""}.wfls-ion-disc:before{content:""}.wfls-ion-document:before{content:""}.wfls-ion-document-text:before{content:""}.wfls-ion-drag:before{content:""}.wfls-ion-earth:before{content:""}.wfls-ion-easel:before{content:""}.wfls-ion-edit:before{content:""}.wfls-ion-egg:before{content:""}.wfls-ion-eject:before{content:""}.wfls-ion-email:before{content:""}.wfls-ion-email-unread:before{content:""}.wfls-ion-erlenmeyer-flask:before{content:""}.wfls-ion-erlenmeyer-flask-bubbles:before{content:""}.wfls-ion-eye:before{content:""}.wfls-ion-eye-disabled:before{content:""}.wfls-ion-female:before{content:""}.wfls-ion-filing:before{content:""}.wfls-ion-film-marker:before{content:""}.wfls-ion-fireball:before{content:""}.wfls-ion-flag:before{content:""}.wfls-ion-flame:before{content:""}.wfls-ion-flash:before{content:""}.wfls-ion-flash-off:before{content:""}.wfls-ion-folder:before{content:""}.wfls-ion-fork:before{content:""}.wfls-ion-fork-repo:before{content:""}.wfls-ion-forward:before{content:""}.wfls-ion-funnel:before{content:""}.wfls-ion-gear-a:before{content:""}.wfls-ion-gear-b:before{content:""}.wfls-ion-grid:before{content:""}.wfls-ion-hammer:before{content:""}.wfls-ion-happy:before{content:""}.wfls-ion-happy-outline:before{content:""}.wfls-ion-headphone:before{content:""}.wfls-ion-heart:before{content:""}.wfls-ion-heart-broken:before{content:""}.wfls-ion-help:before{content:""}.wfls-ion-help-buoy:before{content:""}.wfls-ion-help-circled:before{content:""}.wfls-ion-home:before{content:""}.wfls-ion-icecream:before{content:""}.wfls-ion-image:before{content:""}.wfls-ion-images:before{content:""}.wfls-ion-information:before{content:""}.wfls-ion-information-circled:before{content:""}.wfls-ion-ionic:before{content:""}.wfls-ion-ios-alarm:before{content:""}.wfls-ion-ios-alarm-outline:before{content:""}.wfls-ion-ios-albums:before{content:""}.wfls-ion-ios-albums-outline:before{content:""}.wfls-ion-ios-americanfootball:before{content:""}.wfls-ion-ios-americanfootball-outline:before{content:""}.wfls-ion-ios-analytics:before{content:""}.wfls-ion-ios-analytics-outline:before{content:""}.wfls-ion-ios-arrow-back:before{content:""}.wfls-ion-ios-arrow-down:before{content:""}.wfls-ion-ios-arrow-forward:before{content:""}.wfls-ion-ios-arrow-left:before{content:""}.wfls-ion-ios-arrow-right:before{content:""}.wfls-ion-ios-arrow-thin-down:before{content:""}.wfls-ion-ios-arrow-thin-left:before{content:""}.wfls-ion-ios-arrow-thin-right:before{content:""}.wfls-ion-ios-arrow-thin-up:before{content:""}.wfls-ion-ios-arrow-up:before{content:""}.wfls-ion-ios-at:before{content:""}.wfls-ion-ios-at-outline:before{content:""}.wfls-ion-ios-barcode:before{content:""}.wfls-ion-ios-barcode-outline:before{content:""}.wfls-ion-ios-baseball:before{content:""}.wfls-ion-ios-baseball-outline:before{content:""}.wfls-ion-ios-basketball:before{content:""}.wfls-ion-ios-basketball-outline:before{content:""}.wfls-ion-ios-bell:before{content:""}.wfls-ion-ios-bell-outline:before{content:""}.wfls-ion-ios-body:before{content:""}.wfls-ion-ios-body-outline:before{content:""}.wfls-ion-ios-bolt:before{content:""}.wfls-ion-ios-bolt-outline:before{content:""}.wfls-ion-ios-book:before{content:""}.wfls-ion-ios-book-outline:before{content:""}.wfls-ion-ios-bookmarks:before{content:""}.wfls-ion-ios-bookmarks-outline:before{content:""}.wfls-ion-ios-box:before{content:""}.wfls-ion-ios-box-outline:before{content:""}.wfls-ion-ios-briefcase:before{content:""}.wfls-ion-ios-briefcase-outline:before{content:""}.wfls-ion-ios-browsers:before{content:""}.wfls-ion-ios-browsers-outline:before{content:""}.wfls-ion-ios-calculator:before{content:""}.wfls-ion-ios-calculator-outline:before{content:""}.wfls-ion-ios-calendar:before{content:""}.wfls-ion-ios-calendar-outline:before{content:""}.wfls-ion-ios-camera:before{content:""}.wfls-ion-ios-camera-outline:before{content:""}.wfls-ion-ios-cart:before{content:""}.wfls-ion-ios-cart-outline:before{content:""}.wfls-ion-ios-chatboxes:before{content:""}.wfls-ion-ios-chatboxes-outline:before{content:""}.wfls-ion-ios-chatbubble:before{content:""}.wfls-ion-ios-chatbubble-outline:before{content:""}.wfls-ion-ios-checkmark:before{content:""}.wfls-ion-ios-checkmark-empty:before{content:""}.wfls-ion-ios-checkmark-outline:before{content:""}.wfls-ion-ios-circle-filled:before{content:""}.wfls-ion-ios-circle-outline:before{content:""}.wfls-ion-ios-clock:before{content:""}.wfls-ion-ios-clock-outline:before{content:""}.wfls-ion-ios-close:before{content:""}.wfls-ion-ios-close-empty:before{content:""}.wfls-ion-ios-close-outline:before{content:""}.wfls-ion-ios-cloud:before{content:""}.wfls-ion-ios-cloud-download:before{content:""}.wfls-ion-ios-cloud-download-outline:before{content:""}.wfls-ion-ios-cloud-outline:before{content:""}.wfls-ion-ios-cloud-upload:before{content:""}.wfls-ion-ios-cloud-upload-outline:before{content:""}.wfls-ion-ios-cloudy:before{content:""}.wfls-ion-ios-cloudy-night:before{content:""}.wfls-ion-ios-cloudy-night-outline:before{content:""}.wfls-ion-ios-cloudy-outline:before{content:""}.wfls-ion-ios-cog:before{content:""}.wfls-ion-ios-cog-outline:before{content:""}.wfls-ion-ios-color-filter:before{content:""}.wfls-ion-ios-color-filter-outline:before{content:""}.wfls-ion-ios-color-wand:before{content:""}.wfls-ion-ios-color-wand-outline:before{content:""}.wfls-ion-ios-compose:before{content:""}.wfls-ion-ios-compose-outline:before{content:""}.wfls-ion-ios-contact:before{content:""}.wfls-ion-ios-contact-outline:before{content:""}.wfls-ion-ios-copy:before{content:""}.wfls-ion-ios-copy-outline:before{content:""}.wfls-ion-ios-crop:before{content:""}.wfls-ion-ios-crop-strong:before{content:""}.wfls-ion-ios-download:before{content:""}.wfls-ion-ios-download-outline:before{content:""}.wfls-ion-ios-drag:before{content:""}.wfls-ion-ios-email:before{content:""}.wfls-ion-ios-email-outline:before{content:""}.wfls-ion-ios-eye:before{content:""}.wfls-ion-ios-eye-outline:before{content:""}.wfls-ion-ios-fastforward:before{content:""}.wfls-ion-ios-fastforward-outline:before{content:""}.wfls-ion-ios-filing:before{content:""}.wfls-ion-ios-filing-outline:before{content:""}.wfls-ion-ios-film:before{content:""}.wfls-ion-ios-film-outline:before{content:""}.wfls-ion-ios-flag:before{content:""}.wfls-ion-ios-flag-outline:before{content:""}.wfls-ion-ios-flame:before{content:""}.wfls-ion-ios-flame-outline:before{content:""}.wfls-ion-ios-flask:before{content:""}.wfls-ion-ios-flask-outline:before{content:""}.wfls-ion-ios-flower:before{content:""}.wfls-ion-ios-flower-outline:before{content:""}.wfls-ion-ios-folder:before{content:""}.wfls-ion-ios-folder-outline:before{content:""}.wfls-ion-ios-football:before{content:""}.wfls-ion-ios-football-outline:before{content:""}.wfls-ion-ios-game-controller-a:before{content:""}.wfls-ion-ios-game-controller-a-outline:before{content:""}.wfls-ion-ios-game-controller-b:before{content:""}.wfls-ion-ios-game-controller-b-outline:before{content:""}.wfls-ion-ios-gear:before{content:""}.wfls-ion-ios-gear-outline:before{content:""}.wfls-ion-ios-glasses:before{content:""}.wfls-ion-ios-glasses-outline:before{content:""}.wfls-ion-ios-grid-view:before{content:""}.wfls-ion-ios-grid-view-outline:before{content:""}.wfls-ion-ios-heart:before{content:""}.wfls-ion-ios-heart-outline:before{content:""}.wfls-ion-ios-help:before{content:""}.wfls-ion-ios-help-empty:before{content:""}.wfls-ion-ios-help-outline:before{content:""}.wfls-ion-ios-home:before{content:""}.wfls-ion-ios-home-outline:before{content:""}.wfls-ion-ios-infinite:before{content:""}.wfls-ion-ios-infinite-outline:before{content:""}.wfls-ion-ios-information:before{content:""}.wfls-ion-ios-information-empty:before{content:""}.wfls-ion-ios-information-outline:before{content:""}.wfls-ion-ios-ionic-outline:before{content:""}.wfls-ion-ios-keypad:before{content:""}.wfls-ion-ios-keypad-outline:before{content:""}.wfls-ion-ios-lightbulb:before{content:""}.wfls-ion-ios-lightbulb-outline:before{content:""}.wfls-ion-ios-list:before{content:""}.wfls-ion-ios-list-outline:before{content:""}.wfls-ion-ios-location:before{content:""}.wfls-ion-ios-location-outline:before{content:""}.wfls-ion-ios-locked:before{content:""}.wfls-ion-ios-locked-outline:before{content:""}.wfls-ion-ios-loop:before{content:""}.wfls-ion-ios-loop-strong:before{content:""}.wfls-ion-ios-medical:before{content:""}.wfls-ion-ios-medical-outline:before{content:""}.wfls-ion-ios-medkit:before{content:""}.wfls-ion-ios-medkit-outline:before{content:""}.wfls-ion-ios-mic:before{content:""}.wfls-ion-ios-mic-off:before{content:""}.wfls-ion-ios-mic-outline:before{content:""}.wfls-ion-ios-minus:before{content:""}.wfls-ion-ios-minus-empty:before{content:""}.wfls-ion-ios-minus-outline:before{content:""}.wfls-ion-ios-monitor:before{content:""}.wfls-ion-ios-monitor-outline:before{content:""}.wfls-ion-ios-moon:before{content:""}.wfls-ion-ios-moon-outline:before{content:""}.wfls-ion-ios-more:before{content:""}.wfls-ion-ios-more-outline:before{content:""}.wfls-ion-ios-musical-note:before{content:""}.wfls-ion-ios-musical-notes:before{content:""}.wfls-ion-ios-navigate:before{content:""}.wfls-ion-ios-navigate-outline:before{content:""}.wfls-ion-ios-nutrition:before{content:""}.wfls-ion-ios-nutrition-outline:before{content:""}.wfls-ion-ios-paper:before{content:""}.wfls-ion-ios-paper-outline:before{content:""}.wfls-ion-ios-paperplane:before{content:""}.wfls-ion-ios-paperplane-outline:before{content:""}.wfls-ion-ios-partlysunny:before{content:""}.wfls-ion-ios-partlysunny-outline:before{content:""}.wfls-ion-ios-pause:before{content:""}.wfls-ion-ios-pause-outline:before{content:""}.wfls-ion-ios-paw:before{content:""}.wfls-ion-ios-paw-outline:before{content:""}.wfls-ion-ios-people:before{content:""}.wfls-ion-ios-people-outline:before{content:""}.wfls-ion-ios-person:before{content:""}.wfls-ion-ios-person-outline:before{content:""}.wfls-ion-ios-personadd:before{content:""}.wfls-ion-ios-personadd-outline:before{content:""}.wfls-ion-ios-photos:before{content:""}.wfls-ion-ios-photos-outline:before{content:""}.wfls-ion-ios-pie:before{content:""}.wfls-ion-ios-pie-outline:before{content:""}.wfls-ion-ios-pint:before{content:""}.wfls-ion-ios-pint-outline:before{content:""}.wfls-ion-ios-play:before{content:""}.wfls-ion-ios-play-outline:before{content:""}.wfls-ion-ios-plus:before{content:""}.wfls-ion-ios-plus-empty:before{content:""}.wfls-ion-ios-plus-outline:before{content:""}.wfls-ion-ios-pricetag:before{content:""}.wfls-ion-ios-pricetag-outline:before{content:""}.wfls-ion-ios-pricetags:before{content:""}.wfls-ion-ios-pricetags-outline:before{content:""}.wfls-ion-ios-printer:before{content:""}.wfls-ion-ios-printer-outline:before{content:""}.wfls-ion-ios-pulse:before{content:""}.wfls-ion-ios-pulse-strong:before{content:""}.wfls-ion-ios-rainy:before{content:""}.wfls-ion-ios-rainy-outline:before{content:""}.wfls-ion-ios-recording:before{content:""}.wfls-ion-ios-recording-outline:before{content:""}.wfls-ion-ios-redo:before{content:""}.wfls-ion-ios-redo-outline:before{content:""}.wfls-ion-ios-refresh:before{content:""}.wfls-ion-ios-refresh-empty:before{content:""}.wfls-ion-ios-refresh-outline:before{content:""}.wfls-ion-ios-reload:before{content:""}.wfls-ion-ios-reverse-camera:before{content:""}.wfls-ion-ios-reverse-camera-outline:before{content:""}.wfls-ion-ios-rewind:before{content:""}.wfls-ion-ios-rewind-outline:before{content:""}.wfls-ion-ios-rose:before{content:""}.wfls-ion-ios-rose-outline:before{content:""}.wfls-ion-ios-search:before{content:""}.wfls-ion-ios-search-strong:before{content:""}.wfls-ion-ios-settings:before{content:""}.wfls-ion-ios-settings-strong:before{content:""}.wfls-ion-ios-shuffle:before{content:""}.wfls-ion-ios-shuffle-strong:before{content:""}.wfls-ion-ios-skipbackward:before{content:""}.wfls-ion-ios-skipbackward-outline:before{content:""}.wfls-ion-ios-skipforward:before{content:""}.wfls-ion-ios-skipforward-outline:before{content:""}.wfls-ion-ios-snowy:before{content:""}.wfls-ion-ios-speedometer:before{content:""}.wfls-ion-ios-speedometer-outline:before{content:""}.wfls-ion-ios-star:before{content:""}.wfls-ion-ios-star-half:before{content:""}.wfls-ion-ios-star-outline:before{content:""}.wfls-ion-ios-stopwatch:before{content:""}.wfls-ion-ios-stopwatch-outline:before{content:""}.wfls-ion-ios-sunny:before{content:""}.wfls-ion-ios-sunny-outline:before{content:""}.wfls-ion-ios-telephone:before{content:""}.wfls-ion-ios-telephone-outline:before{content:""}.wfls-ion-ios-tennisball:before{content:""}.wfls-ion-ios-tennisball-outline:before{content:""}.wfls-ion-ios-thunderstorm:before{content:""}.wfls-ion-ios-thunderstorm-outline:before{content:""}.wfls-ion-ios-time:before{content:""}.wfls-ion-ios-time-outline:before{content:""}.wfls-ion-ios-timer:before{content:""}.wfls-ion-ios-timer-outline:before{content:""}.wfls-ion-ios-toggle:before{content:""}.wfls-ion-ios-toggle-outline:before{content:""}.wfls-ion-ios-trash:before{content:""}.wfls-ion-ios-trash-outline:before{content:""}.wfls-ion-ios-undo:before{content:""}.wfls-ion-ios-undo-outline:before{content:""}.wfls-ion-ios-unlocked:before{content:""}.wfls-ion-ios-unlocked-outline:before{content:""}.wfls-ion-ios-upload:before{content:""}.wfls-ion-ios-upload-outline:before{content:""}.wfls-ion-ios-videocam:before{content:""}.wfls-ion-ios-videocam-outline:before{content:""}.wfls-ion-ios-volume-high:before{content:""}.wfls-ion-ios-volume-low:before{content:""}.wfls-ion-ios-wineglass:before{content:""}.wfls-ion-ios-wineglass-outline:before{content:""}.wfls-ion-ios-world:before{content:""}.wfls-ion-ios-world-outline:before{content:""}.wfls-ion-ipad:before{content:""}.wfls-ion-iphone:before{content:""}.wfls-ion-ipod:before{content:""}.wfls-ion-jet:before{content:""}.wfls-ion-key:before{content:""}.wfls-ion-knife:before{content:""}.wfls-ion-laptop:before{content:""}.wfls-ion-leaf:before{content:""}.wfls-ion-levels:before{content:""}.wfls-ion-lightbulb:before{content:""}.wfls-ion-link:before{content:""}.wfls-ion-load-a:before{content:""}.wfls-ion-load-b:before{content:""}.wfls-ion-load-c:before{content:""}.wfls-ion-load-d:before{content:""}.wfls-ion-location:before{content:""}.wfls-ion-lock-combination:before{content:""}.wfls-ion-locked:before{content:""}.wfls-ion-log-in:before{content:""}.wfls-ion-log-out:before{content:""}.wfls-ion-loop:before{content:""}.wfls-ion-magnet:before{content:""}.wfls-ion-male:before{content:""}.wfls-ion-man:before{content:""}.wfls-ion-map:before{content:""}.wfls-ion-medkit:before{content:""}.wfls-ion-merge:before{content:""}.wfls-ion-mic-a:before{content:""}.wfls-ion-mic-b:before{content:""}.wfls-ion-mic-c:before{content:""}.wfls-ion-minus:before{content:""}.wfls-ion-minus-circled:before{content:""}.wfls-ion-minus-round:before{content:""}.wfls-ion-model-s:before{content:""}.wfls-ion-monitor:before{content:""}.wfls-ion-more:before{content:""}.wfls-ion-mouse:before{content:""}.wfls-ion-music-note:before{content:""}.wfls-ion-navicon:before{content:""}.wfls-ion-navicon-round:before{content:""}.wfls-ion-navigate:before{content:""}.wfls-ion-network:before{content:""}.wfls-ion-no-smoking:before{content:""}.wfls-ion-nuclear:before{content:""}.wfls-ion-outlet:before{content:""}.wfls-ion-paintbrush:before{content:""}.wfls-ion-paintbucket:before{content:""}.wfls-ion-paper-airplane:before{content:""}.wfls-ion-paperclip:before{content:""}.wfls-ion-pause:before{content:""}.wfls-ion-person:before{content:""}.wfls-ion-person-add:before{content:""}.wfls-ion-person-stalker:before{content:""}.wfls-ion-pie-graph:before{content:""}.wfls-ion-pin:before{content:""}.wfls-ion-pinpoint:before{content:""}.wfls-ion-pizza:before{content:""}.wfls-ion-plane:before{content:""}.wfls-ion-planet:before{content:""}.wfls-ion-play:before{content:""}.wfls-ion-playstation:before{content:""}.wfls-ion-plus:before{content:""}.wfls-ion-plus-circled:before{content:""}.wfls-ion-plus-round:before{content:""}.wfls-ion-podium:before{content:""}.wfls-ion-pound:before{content:""}.wfls-ion-power:before{content:""}.wfls-ion-pricetag:before{content:""}.wfls-ion-pricetags:before{content:""}.wfls-ion-printer:before{content:""}.wfls-ion-pull-request:before{content:""}.wfls-ion-qr-scanner:before{content:""}.wfls-ion-quote:before{content:""}.wfls-ion-radio-waves:before{content:""}.wfls-ion-record:before{content:""}.wfls-ion-refresh:before{content:""}.wfls-ion-reply:before{content:""}.wfls-ion-reply-all:before{content:""}.wfls-ion-ribbon-a:before{content:""}.wfls-ion-ribbon-b:before{content:""}.wfls-ion-sad:before{content:""}.wfls-ion-sad-outline:before{content:""}.wfls-ion-scissors:before{content:""}.wfls-ion-search:before{content:""}.wfls-ion-settings:before{content:""}.wfls-ion-share:before{content:""}.wfls-ion-shuffle:before{content:""}.wfls-ion-skip-backward:before{content:""}.wfls-ion-skip-forward:before{content:""}.wfls-ion-social-android:before{content:""}.wfls-ion-social-android-outline:before{content:""}.wfls-ion-social-angular:before{content:""}.wfls-ion-social-angular-outline:before{content:""}.wfls-ion-social-apple:before{content:""}.wfls-ion-social-apple-outline:before{content:""}.wfls-ion-social-bitcoin:before{content:""}.wfls-ion-social-bitcoin-outline:before{content:""}.wfls-ion-social-buffer:before{content:""}.wfls-ion-social-buffer-outline:before{content:""}.wfls-ion-social-chrome:before{content:""}.wfls-ion-social-chrome-outline:before{content:""}.wfls-ion-social-codepen:before{content:""}.wfls-ion-social-codepen-outline:before{content:""}.wfls-ion-social-css3:before{content:""}.wfls-ion-social-css3-outline:before{content:""}.wfls-ion-social-designernews:before{content:""}.wfls-ion-social-designernews-outline:before{content:""}.wfls-ion-social-dribbble:before{content:""}.wfls-ion-social-dribbble-outline:before{content:""}.wfls-ion-social-dropbox:before{content:""}.wfls-ion-social-dropbox-outline:before{content:""}.wfls-ion-social-euro:before{content:""}.wfls-ion-social-euro-outline:before{content:""}.wfls-ion-social-facebook:before{content:""}.wfls-ion-social-facebook-outline:before{content:""}.wfls-ion-social-foursquare:before{content:""}.wfls-ion-social-foursquare-outline:before{content:""}.wfls-ion-social-freebsd-devil:before{content:""}.wfls-ion-social-github:before{content:""}.wfls-ion-social-github-outline:before{content:""}.wfls-ion-social-google:before{content:""}.wfls-ion-social-google-outline:before{content:""}.wfls-ion-social-googleplus:before{content:""}.wfls-ion-social-googleplus-outline:before{content:""}.wfls-ion-social-hackernews:before{content:""}.wfls-ion-social-hackernews-outline:before{content:""}.wfls-ion-social-html5:before{content:""}.wfls-ion-social-html5-outline:before{content:""}.wfls-ion-social-instagram:before{content:""}.wfls-ion-social-instagram-outline:before{content:""}.wfls-ion-social-javascript:before{content:""}.wfls-ion-social-javascript-outline:before{content:""}.wfls-ion-social-linkedin:before{content:""}.wfls-ion-social-linkedin-outline:before{content:""}.wfls-ion-social-markdown:before{content:""}.wfls-ion-social-nodejs:before{content:""}.wfls-ion-social-octocat:before{content:""}.wfls-ion-social-pinterest:before{content:""}.wfls-ion-social-pinterest-outline:before{content:""}.wfls-ion-social-python:before{content:""}.wfls-ion-social-reddit:before{content:""}.wfls-ion-social-reddit-outline:before{content:""}.wfls-ion-social-rss:before{content:""}.wfls-ion-social-rss-outline:before{content:""}.wfls-ion-social-sass:before{content:""}.wfls-ion-social-skype:before{content:""}.wfls-ion-social-skype-outline:before{content:""}.wfls-ion-social-snapchat:before{content:""}.wfls-ion-social-snapchat-outline:before{content:""}.wfls-ion-social-tumblr:before{content:""}.wfls-ion-social-tumblr-outline:before{content:""}.wfls-ion-social-tux:before{content:""}.wfls-ion-social-twitch:before{content:""}.wfls-ion-social-twitch-outline:before{content:""}.wfls-ion-social-twitter:before{content:""}.wfls-ion-social-twitter-outline:before{content:""}.wfls-ion-social-usd:before{content:""}.wfls-ion-social-usd-outline:before{content:""}.wfls-ion-social-vimeo:before{content:""}.wfls-ion-social-vimeo-outline:before{content:""}.wfls-ion-social-whatsapp:before{content:""}.wfls-ion-social-whatsapp-outline:before{content:""}.wfls-ion-social-windows:before{content:""}.wfls-ion-social-windows-outline:before{content:""}.wfls-ion-social-wordpress:before{content:""}.wfls-ion-social-wordpress-outline:before{content:""}.wfls-ion-social-yahoo:before{content:""}.wfls-ion-social-yahoo-outline:before{content:""}.wfls-ion-social-yen:before{content:""}.wfls-ion-social-yen-outline:before{content:""}.wfls-ion-social-youtube:before{content:""}.wfls-ion-social-youtube-outline:before{content:""}.wfls-ion-soup-can:before{content:""}.wfls-ion-soup-can-outline:before{content:""}.wfls-ion-speakerphone:before{content:""}.wfls-ion-speedometer:before{content:""}.wfls-ion-spoon:before{content:""}.wfls-ion-star:before{content:""}.wfls-ion-stats-bars:before{content:""}.wfls-ion-steam:before{content:""}.wfls-ion-stop:before{content:""}.wfls-ion-thermometer:before{content:""}.wfls-ion-thumbsdown:before{content:""}.wfls-ion-thumbsup:before{content:""}.wfls-ion-toggle:before{content:""}.wfls-ion-toggle-filled:before{content:""}.wfls-ion-transgender:before{content:""}.wfls-ion-trash-a:before{content:""}.wfls-ion-trash-b:before{content:""}.wfls-ion-trophy:before{content:""}.wfls-ion-tshirt:before{content:""}.wfls-ion-tshirt-outline:before{content:""}.wfls-ion-umbrella:before{content:""}.wfls-ion-university:before{content:""}.wfls-ion-unlocked:before{content:""}.wfls-ion-upload:before{content:""}.wfls-ion-usb:before{content:""}.wfls-ion-videocamera:before{content:""}.wfls-ion-volume-high:before{content:""}.wfls-ion-volume-low:before{content:""}.wfls-ion-volume-medium:before{content:""}.wfls-ion-volume-mute:before{content:""}.wfls-ion-wand:before{content:""}.wfls-ion-waterdrop:before{content:""}.wfls-ion-wifi:before{content:""}.wfls-ion-wineglass:before{content:""}.wfls-ion-woman:before{content:""}.wfls-ion-wrench:before{content:""}.wfls-ion-xbox:before{content:""}
modules/login-security/css/jquery-ui.min.1722265817.css000064400000071131150755146440016314 0ustar00/*! jQuery UI - v1.11.4 - 2018-06-29
* http://jqueryui.com
* Includes: core.css, draggable.css, resizable.css, selectable.css, sortable.css, accordion.css, autocomplete.css, button.css, datepicker.css, dialog.css, menu.css, progressbar.css, selectmenu.css, slider.css, spinner.css, tabs.css, tooltip.css, theme.css
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&fwDefault=normal&cornerRadius=3px&bgColorHeader=e9e9e9&bgTextureHeader=flat&borderColorHeader=dddddd&fcHeader=333333&iconColorHeader=444444&bgColorContent=ffffff&bgTextureContent=flat&borderColorContent=dddddd&fcContent=333333&iconColorContent=444444&bgColorDefault=f6f6f6&bgTextureDefault=flat&borderColorDefault=c5c5c5&fcDefault=454545&iconColorDefault=777777&bgColorHover=ededed&bgTextureHover=flat&borderColorHover=cccccc&fcHover=2b2b2b&iconColorHover=555555&bgColorActive=007fff&bgTextureActive=flat&borderColorActive=003eff&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=fffa90&bgTextureHighlight=flat&borderColorHighlight=dad55e&fcHighlight=777620&iconColorHighlight=777620&bgColorError=fddfdf&bgTextureError=flat&borderColorError=f1a899&fcError=5f3f3f&iconColorError=cc0000&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=666666&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=5px&offsetTopShadow=0px&offsetLeftShadow=0px&cornerRadiusShadow=8px
* Copyright jQuery Foundation and other contributors; Licensed MIT */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default !important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;min-height:0;font-size:100%}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-button{display:inline-block;overflow:hidden;position:relative;text-decoration:none;cursor:pointer}.ui-selectmenu-button span.ui-icon{right:0.5em;left:auto;margin-top:-8px;position:absolute;top:50%}.ui-selectmenu-button span.ui-selectmenu-text{text-align:left;padding:0.4em 2.1em 0.4em 1em;display:block;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #ddd;background:#fff;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #ddd;background:#e9e9e9;color:#333;font-weight:bold}.ui-widget-header a{color:#333}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #c5c5c5;background:#f6f6f6;font-weight:normal;color:#454545}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#454545;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #ccc;background:#ededed;font-weight:normal;color:#2b2b2b}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#2b2b2b;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #003eff;background:#007fff;font-weight:normal;color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #dad55e;background:#fffa90;color:#777620}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#777620}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #f1a899;background:#fddfdf;color:#5f3f3f}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#5f3f3f}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#5f3f3f}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-state-default .ui-icon{background-image:url("images/ui-icons_777777_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("images/ui-icons_555555_256x240.png")}.ui-state-active .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-highlight .ui-icon{background-image:url("images/ui-icons_777620_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cc0000_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:3px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:3px}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:0 0 0 0;padding:5px;background:#666;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px}
modules/login-security/classes/utility/serialization.php000064400000001461150755146440017734 0ustar00<?php

namespace WordfenceLS;

use RuntimeException;

class Utility_Serialization {

	public static function unserialize($data, $options = array(), $validator = null) {
		static $serializedFalse;
		if ($serializedFalse === null)
			$serializedFalse = serialize(false);
		if ($data === $serializedFalse)
			return false;
		if (!is_serialized($data))
			throw new RuntimeException('Input data is not serialized');
		if (version_compare(PHP_VERSION, '5.6', '<=')) {
			$unserialized = @unserialize($data);
		}
		else {
			$unserialized = @unserialize($data, $options);
		}
		if ($unserialized === false)
			throw new RuntimeException('Deserialization failed');
		if ($validator !== null && !$validator($unserialized))
			throw new RuntimeException('Validation of unserialized data failed');
		return $unserialized;
	}

}modules/login-security/classes/utility/nulllock.php000064400000000444150755146440016702 0ustar00<?php

namespace WordfenceLS;

/**
 * An implementation of the Utility_Lock that doesn't actually do any locking
 */
class Utility_NullLock implements Utility_Lock {

	public function acquire($delay = self::DEFAULT_DELAY) {
		//Do nothing
	}

	public function release() {
		//Do nothing
	}

}modules/login-security/classes/utility/measuredstring.php000064400000000411150755146440020105 0ustar00<?php

namespace WordfenceLS;

class Utility_MeasuredString {

	public $string;
	public $length;

	public function __construct($string) {
		$this->string = $string;
		$this->length = strlen($string);
	}

	public function __toString() {
		return $this->string;
	}

}modules/login-security/classes/utility/multisiteconfigurationextractor.php000064400000004216150755146440023623 0ustar00<?php

namespace WordfenceLS;

class Utility_MultisiteConfigurationExtractor {

	private $prefix, $suffix;
	private $suffixOffset;

	public function __construct($prefix, $suffix) {
		$this->prefix = new Utility_MeasuredString($prefix);
		$this->suffix = new Utility_MeasuredString($suffix);
		$this->suffixOffset = -$this->suffix->length;
	}
	
	/**
	 * Parses a `get_user_meta` result array into a more usable format. The input array will be something similar to
	 * [
	 * 		'wp_capabilities' => '...',
	 * 		'wp_3_capabilities' => '...',
	 * 		'wp_4_capabilities' => '...',
	 * 		'wp_10_capabilities' => '...',
	 * ]
	 * 
	 * This will return
	 * [
	 * 		1 => '...',
	 * 		3 => '...',
	 * 		4 => '...',
	 * 		10 => '...',
	 * ]
	 * 
	 * @param array $values
	 * @return array
	 */
	private function parseBlogIds($values) {
		$parsed = array();
		foreach ($values as $key => $value) {
			if (substr($key, $this->suffixOffset) === $this->suffix->string && strpos($key, (string) $this->prefix) === 0) {
				$blogId = substr($key, $this->prefix->length, strlen($key) - $this->prefix->length + $this->suffixOffset);
				if (empty($blogId)) {
					$parsed[1] = $value;
				}
				else if (substr($blogId, -1) === '_') {
					$parsed[(int) $blogId] = $value;
				}
			}
		}
		return $parsed;
	}
	
	/**
	 * Filters $values, which is the resulting array from `$this->parseBlogIds` so it contains only the values for the
	 * sites in $sites.
	 * 
	 * @param array $values
	 * @param array $sites
	 * @return array
	 */
	private function filterValues($values, $sites) {
		$filtered = array();
		foreach ($sites as $site) {
			$blogId = (int) $site->blog_id;
			$filtered[$blogId] = $values[$blogId];
		}
		return $filtered;
	}
	
	/**
	 * Processes a `get_user_meta` result array to re-key it so the keys are the numerical ID of all multisite blog IDs
	 * in `$values` that are still in an active state.
	 * 
	 * @param array $values
	 * @return array
	 */
	public function extract($values) {
		$parsed = $this->parseBlogIds($values);
		if (empty($parsed))
			return $parsed;
		$sites = Utility_Multisite::retrieve_active_sites(array_keys($parsed));
		return $this->filterValues($parsed, $sites);
	}

}modules/login-security/classes/utility/url.php000064400000001261150755146440015657 0ustar00<?php

namespace WordfenceLS;

class Utility_URL {
	
	/**
	 * Similar to WordPress' `admin_url`, this returns a host-relative URL for the given path. It may be used to avoid
	 * canonicalization issues with CORS (e.g., the site is configured for the www. variant of the URL but doesn't forward
	 * the other).
	 * 
	 * @param string $path
	 * @return string
	 */
	public static function relative_admin_url($path = '') {
		$url = admin_url($path);
		$components = parse_url($url);
		$s = $components['path'];
		if (!empty($components['query'])) {
			$s .= '?' . $components['query'];
		}
		if (!empty($components['fragment'])) {
			$s .= '#' . $components['fragment'];
		}
		return $s;
	}
}modules/login-security/classes/utility/sleep.php000064400000001145150755146440016166 0ustar00<?php

namespace WordfenceLS;

class Utility_Sleep {
	
	/**
	 * Implements sleep in a way that supports fractional seconds. This is necessary because `usleep` is documented
	 * as only supporting partial seconds (i.e., anything sub-1 second) while `sleep` only supports whole number
	 * seconds. For durations above 1 second with a fractional amount, we end up calling both.
	 * 
	 * @param int|float $seconds
	 */
	public static function sleep($seconds) {
		if ($seconds >= 1) {
			sleep((int) $seconds);
			$seconds -= (int) $seconds;
		}
		
		if ($seconds > 0) {
			usleep((int) (1000000 * $seconds));
		}
	}
}modules/login-security/classes/utility/number.php000064400000000671150755146440016351 0ustar00<?php

namespace WordfenceLS;

class Utility_Number {

	public static function isInteger($value, $min = null, $max = null) {
		$options = array();
		if ($min !== null)
			$options['min_range'] = $min;
		if ($max !== null)
			$options['max_range'] = $max;
		return filter_var($value, FILTER_VALIDATE_INT, array('options' => $options)) !== false;
	}

	public static function isUnixTimestamp($value) {
		return self::isInteger($value, 0);
	}

}modules/login-security/classes/utility/array.php000064400000001057150755146440016176 0ustar00<?php

namespace WordfenceLS;

class Utility_Array {

	public static function findOffset($array, $key) {
		$offset = 0;
		foreach ($array as $index => $value) {
			if ($index === $key)
				return $offset;
			$offset++;
		}
		return null;
	}

	public static function insertAfter(&$array, $targetKey, $key, $value) {
		$offset = self::findOffset($array, $targetKey);
		if ($offset === null)
			return false;
		$array = array_merge(
			array_slice($array, 0, $offset + 1),
			array( $key => $value ),
			array_slice($array, $offset + 1)
		);
		return true;
	}

}modules/login-security/classes/utility/lock.php000064400000000260150755146440016003 0ustar00<?php

namespace WordfenceLS;

interface Utility_Lock {

	const DEFAULT_DELAY = 100000;

	public function acquire($delay = self::DEFAULT_DELAY);

	public function release();

}modules/login-security/classes/utility/databaselock.php000064400000004121150755146440017470 0ustar00<?php

namespace WordfenceLS;

use RuntimeException;

class Utility_DatabaseLock implements Utility_Lock {

	const DEFAULT_TIMEOUT = 30;
	const MAX_TIMEOUT = 120;

	private $wpdb;
	private $table;
	private $key;
	private $timeout;
	private $expirationTimestamp;

	public function __construct($dbController, $key, $timeout = null) {
		$this->wpdb = $dbController->get_wpdb();
		$this->table = $dbController->settings;
		$this->key = "lock:{$key}";
		$this->timeout = self::resolveTimeout($timeout);
	}

	private static function resolveTimeout($timeout) {
		if ($timeout === null)
			$timeout = ini_get('max_execution_time');
		$timeout = (int) $timeout;
		if ($timeout <= 0 || $timeout > self::MAX_TIMEOUT)
			return self::DEFAULT_TIMEOUT;
		return $timeout;
	}

	private function clearExpired($timestamp) {
		$this->wpdb->query($this->wpdb->prepare(<<<SQL
			DELETE
				FROM {$this->table}
			WHERE
				name = %s
				AND value < %d
SQL
		, $this->key, $timestamp));
	}

	private function insert($expirationTimestamp) {
		$result = $this->wpdb->query($this->wpdb->prepare(<<<SQL
			INSERT IGNORE
				INTO {$this->table}
				(name, value, autoload)
			VALUES(%s, %d, 'no')
SQL
		, $this->key, $expirationTimestamp));
		return $result === 1;
	}

	public function acquire($delay = self::DEFAULT_DELAY) {
		$attempts = (int) ($this->timeout * 1000000 / $delay);
		for (; $attempts > 0; $attempts--) {
			$timestamp = time();
			$this->clearExpired($timestamp);
			$expirationTimestamp = $timestamp + $this->timeout;
			$locked = $this->insert($expirationTimestamp);
			if ($locked) {
				$this->expirationTimestamp = $expirationTimestamp;
				return;
			}
			usleep($delay);
		}
		throw new RuntimeException("Failed to acquire lock {$this->key}");
	}

	private function delete($expirationTimestamp) {
		$this->wpdb->delete(
			$this->table,
			array (
				'name' => $this->key,
				'value' => $expirationTimestamp
			),
			array (
				'%s',
				'%d'
			)
		);
	}

	public function release() {
		if ($this->expirationTimestamp === null)
			return;
		$this->delete($this->expirationTimestamp);
		$this->expirationTimestamp = null;
	}

}modules/login-security/classes/utility/baseconversion.php000064400000000641150755146440020076 0ustar00<?php

namespace WordfenceLS;

use WordfenceLS\Crypto\Model_Base2n;

class Utility_BaseConversion {

	public static function get_base32() {
		static $base32 = null;
		if ($base32 === null)
			$base32 = new Model_Base2n(5, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567', false, true, true);
		return $base32;
	}

	public static function base32_encode($data) {
		$base32 = self::get_base32();
		return $base32->encode($data);
	}

}modules/login-security/classes/utility/multisite.php000064400000002262150755146440017076 0ustar00<?php

namespace WordfenceLS;

class Utility_Multisite {
	
	/**
	 * Returns an array of all active multisite blogs (if `$blogIds` is `null`) or a list of active multisite blogs 
	 * filtered to only those in `$blogIds` if non-null.
	 * 
	 * @param array|null $blogIds
	 * @return array
	 */
	public static function retrieve_active_sites($blogIds = null) {
		$args = array(
			'number' => '', /* WordPress core passes an empty string which appears to remove the result set limit */
			'update_site_meta_cache' => false, /* Defaults to true which is not desirable for this use case */
			//Ignore archived/spam/deleted sites
			'archived' => 0,
			'spam' => 0,
			'deleted' => 0
		);
		
		if ($blogIds !== null) {
			$args['site__in'] = $blogIds;
		}
		
		if (function_exists('get_sites')) {
			return get_sites($args);
		}
		
		global $wpdb;
		if ($blogIds !== null) {
			$blogIdsQuery = implode(',', wp_parse_id_list($args['site__in']));
			return $wpdb->get_results("SELECT * FROM {$wpdb->blogs} WHERE blog_id IN ({$blogIdsQuery}) AND archived = 0 AND spam = 0 AND deleted = 0");
		}
		
		return $wpdb->get_results("SELECT * FROM {$wpdb->blogs} WHERE archived = 0 AND spam = 0 AND deleted = 0");
	}
}
modules/login-security/classes/model/tokenbucket.php000064400000013516150755146440016776 0ustar00<?php

namespace WordfenceLS;

class Model_TokenBucket {
	/* Constants to map from tokens per unit to tokens per second */
	const MICROSECOND =        0.000001;
	const MILLISECOND =        0.001;
	const SECOND      =        1;
	const MINUTE      =       60;
	const HOUR        =     3600;
	const DAY         =    86400;
	const WEEK        =   604800;
	const MONTH       =  2629743.83;
	const YEAR        = 31556926;
	
	const BACKING_REDIS = 'redis';
	const BACKING_WP_OPTIONS = 'wpoptions';
	
	private $_identifier;
	private $_bucketSize;
	private $_tokensPerSecond;
	
	private $_backing;
	private $_redis;
	
	/**
	 * Model_TokenBucket constructor.
	 *
	 * @param string $identifier The identifier for the bucket record in the database
	 * @param int $bucketSize The maximum capacity of the bucket.
	 * @param double $tokensPerSecond The number of tokens per second added to the bucket.
	 * @param string $backing The backing storage to use.
	 */
	public function __construct($identifier, $bucketSize, $tokensPerSecond, $backing = self::BACKING_WP_OPTIONS) {
		$this->_identifier = $identifier;
		$this->_bucketSize = $bucketSize;
		$this->_tokensPerSecond = $tokensPerSecond;
		$this->_backing = $backing;
		
		if ($backing == self::BACKING_REDIS) {
			$this->_redis = new \Redis();
			$this->_redis->pconnect('127.0.0.1');
		}
	}
	
	/**
	 * Attempts to acquire a lock for the bucket.
	 *
	 * @param int $timeout
	 * @return bool Whether or not the lock was acquired.
	 */
	private function _lock($timeout = 30) {
		if ($this->_backing == self::BACKING_WP_OPTIONS) {
			$start = microtime(true);
			while (!$this->_wp_options_create_lock($this->_identifier)) {
				if (microtime(true) - $start > $timeout) {
					return false;
				}
				usleep(5000); // 5 ms
			}
			return true;
		}
		else if ($this->_backing == self::BACKING_REDIS) {
			if ($this->_redis === false) {
				return false;
			}
			
			$start = microtime(true);
			while (!$this->_redis->setnx('lock:' . $this->_identifier, '1')) {
				if (microtime(true) - $start > $timeout) {
					return false;
				}
				usleep(5000); // 5 ms
			}
			$this->_redis->expire('lock:' . $this->_identifier, 30);
			return true;
		}
		return false;
	}
	
	private function _unlock() {
		if ($this->_backing == self::BACKING_WP_OPTIONS) {
			$this->_wp_options_release_lock($this->_identifier);
		}
		else if ($this->_backing == self::BACKING_REDIS) {
			if ($this->_redis === false) {
				return;
			}
			
			$this->_redis->del('lock:' . $this->_identifier);
		}
	}
	
	private function _wp_options_create_lock($name, $timeout = null) { //Our own version of WP_Upgrader::create_lock
		global $wpdb;
		
		if (!$timeout) {
			$timeout = 3600;
		}
		
		$lock_option = 'wfls_' . $name . '.lock';
		$lock_result = $wpdb->query($wpdb->prepare("INSERT IGNORE INTO `{$wpdb->options}` (`option_name`, `option_value`, `autoload`) VALUES (%s, %s, 'no')", $lock_option, time()));
		
		if (!$lock_result) {
			$lock_result = get_option($lock_option);
			if (!$lock_result) {
				return false;
			}
			
			if ($lock_result > (time() - $timeout)) {
				return false;
			}
			
			$this->_wp_options_release_lock($name);
			return $this->_wp_options_create_lock($name, $timeout);
		}
		
		return true;
	}
	
	private function _wp_options_release_lock($name) {
		return delete_option('wfls_' . $name . '.lock');
	}
	
	/**
	 * Atomically checks the available token count, creating the initial record if needed, and updates the available token count if the requested number of tokens is available.
	 *
	 * @param int $tokenCount
	 * @return bool Whether or not there were enough tokens to satisfy the request.
	 */
	public function consume($tokenCount = 1) {
		if (!$this->_lock()) { return false; }
		
		if ($this->_backing == self::BACKING_WP_OPTIONS) {
			$record = get_transient('wflsbucket:' . $this->_identifier);
		}
		else if ($this->_backing == self::BACKING_REDIS) {
			$record = $this->_redis->get('bucket:' . $this->_identifier);
		}
		else {
			$this->_unlock();
			return false;
		}
		
		if ($record === false) {
			if ($tokenCount > $this->_bucketSize) {
				$this->_unlock();
				return false;
			}
			
			$this->_bootstrap($this->_bucketSize - $tokenCount);
			$this->_unlock();
			return true;
		}
		
		$tokens = min($this->_secondsToTokens(microtime(true) - (float) $record), $this->_bucketSize);
		if ($tokenCount > $tokens) {
			$this->_unlock();
			return false;
		}
		
		if ($this->_backing == self::BACKING_WP_OPTIONS) {
			set_transient('wflsbucket:' . $this->_identifier, (string) (microtime(true) - $this->_tokensToSeconds($tokens - $tokenCount)), ceil($this->_tokensToSeconds($this->_bucketSize)));
		}
		else if ($this->_backing == self::BACKING_REDIS) {
			$this->_redis->set('bucket:' . $this->_identifier, (string) (microtime(true) - $this->_tokensToSeconds($tokens - $tokenCount)));
		}
		
		$this->_unlock();
		return true;
	}
	
	public function reset() {
		if (!$this->_lock()) { return false; }
		
		if ($this->_backing == self::BACKING_WP_OPTIONS) {
			delete_transient('wflsbucket:' . $this->_identifier);
		}
		else if ($this->_backing == self::BACKING_REDIS) {
			$this->_redis->del('bucket:' . $this->_identifier);
		}
		
		$this->_unlock();
	}
	
	/**
	 * Creates an initial record with the given number of tokens.
	 *
	 * @param int $initialTokens
	 */
	protected function _bootstrap($initialTokens) {
		$microtime = microtime(true) - $this->_tokensToSeconds($initialTokens);
		if ($this->_backing == self::BACKING_WP_OPTIONS) {
			set_transient('wflsbucket:' . $this->_identifier, (string) $microtime, ceil($this->_tokensToSeconds($this->_bucketSize)));
		}
		else if ($this->_backing == self::BACKING_REDIS) {
			$this->_redis->set('bucket:' . $this->_identifier, (string) $microtime);
		}
	}
	
	protected function _tokensToSeconds($tokens) {
		return $tokens / $this->_tokensPerSecond;
	}
	
	protected function _secondsToTokens($seconds) {
		return (int) $seconds * $this->_tokensPerSecond;
	}
}
modules/login-security/classes/model/settings/wpoptions.php000064400000002730150755146440020356 0ustar00<?php

namespace WordfenceLS\Settings;

use WordfenceLS\Model_Settings;

class Model_WPOptions extends Model_Settings {
	protected $_prefix;
	
	public function __construct($prefix = '') {
		$this->_prefix = $prefix;
	}
	
	protected function _translate_key($key) {
		return strtolower(preg_replace('/[^a-z0-9]/i', '_', $key));
	}
	
	public function set($key, $value, $autoload = self::AUTOLOAD_YES, $allowOverwrite = true) {
		$key = $this->_translate_key($this->_prefix . $key);
		if (!$allowOverwrite) {
			if (is_multisite()) {
				add_network_option(null, $key, $value);
			}
			else {
				add_option($key, $value, '', $autoload);
			}
		}
		else {
			if (is_multisite()) {
				update_network_option(null, $key, $value);
			}
			else {
				update_option($key, $value, $autoload);
			}
		}
	}
	
	public function set_multiple($values) {
		foreach ($values as $key => $value) {
			if (is_array($value)) {
				$this->set($key, $value['value'], $value['autoload'], $value['allowOverwrite']);
			}
			else {
				$this->set($key, $value);
			}
		}
	}
	
	public function get($key, $default = false) {
		$key = $this->_translate_key($this->_prefix . $key);
		if (is_multisite()) {
			$value = get_network_option($key, $default);
		}
		else {
			$value = get_option($key, $default);
		}
		return $value;
	}
	
	public function remove($key) {
		$key = $this->_translate_key($this->_prefix . $key);
		if (is_multisite()) {
			delete_network_option(null, $key);
		}
		else {
			delete_option($key);
		}
	}
}modules/login-security/classes/model/settings/db.php000064400000006534150755146440016707 0ustar00<?php

namespace WordfenceLS\Settings;

use WordfenceLS\Controller_DB;
use WordfenceLS\Model_Settings;

class Model_DB extends Model_Settings {
	const AUTOLOAD_NO = 'no';
	const AUTOLOAD_YES = 'yes';
	
	public function set($key, $value, $autoload = self::AUTOLOAD_YES, $allowOverwrite = true) {
		global $wpdb;
		$table = Controller_DB::shared()->settings;
		if (!$allowOverwrite) {
			if ($this->_has_cached($key)) {
				return;
			}
			
			$row = $wpdb->get_row($wpdb->prepare("SELECT * FROM `{$table}` WHERE `name` = %s", $key), ARRAY_A);
			if (is_array($row)) {
				return;
			}
		}
		
		if ($wpdb->query($wpdb->prepare("INSERT INTO `{$table}` (`name`, `value`, `autoload`) VALUES (%s, %s, %s) ON DUPLICATE KEY UPDATE `value` = VALUES(`value`), `autoload` = VALUES(`autoload`)", $key, $value, $autoload)) !== false && $autoload != self::AUTOLOAD_NO) {
			$this->_update_cached($key, $value);
			do_action('wfls_settings_set', $key, $value);
		}
	}
	
	public function set_multiple($values) {
		foreach ($values as $key => $value) {
			if (is_array($value)) {
				$this->set($key, $value['value'], $value['autoload'], $value['allowOverwrite']);
			}
			else {
				$this->set($key, $value);
			}
		}
	}
	
	public function get($key, $default = false) {
		global $wpdb;
		
		if ($this->_has_cached($key)) {
			return $this->_cached_value($key);
		}
		
		$table = Controller_DB::shared()->settings;
		if (!($setting = $wpdb->get_row($wpdb->prepare("SELECT `name`, `value`, `autoload` FROM `{$table}` WHERE `name` = %s", $key)))) {
			return $default;
		}
		
		if ($setting->autoload != self::AUTOLOAD_NO) {
			$this->_update_cached($key, $setting->value);
		}
		return $setting->value;
	}
	
	public function remove($key) {
		global $wpdb;
		$table = Controller_DB::shared()->settings;
		$wpdb->query($wpdb->prepare("DELETE FROM `{$table}` WHERE `name` = %s", $key));
		$this->_remove_cached($key);
	}
	
	private function _cached() {
		global $wpdb;
		
		$settings = wp_cache_get('allsettings', 'wordfence-ls');
		if (!$settings) {
			$table = Controller_DB::shared()->settings;
			$suppress = $wpdb->suppress_errors();
			$raw = $wpdb->get_results("SELECT `name`, `value` FROM `{$table}` WHERE `autoload` = 'yes'");
			$wpdb->suppress_errors($suppress);
			$settings = array();
			foreach ((array) $raw as $o) {
				$settings[$o->name] = $o->value;
			}
			
			wp_cache_add_non_persistent_groups('wordfence-ls');
			wp_cache_add('allsettings', $settings, 'wordfence-ls');
		}
		
		return $settings;
	}
	
	private function _update_cached($key, $value) {
		$settings = $this->_cached();
		$settings[$key] = $value;
		wp_cache_set('allsettings', $settings, 'wordfence-ls');
	}
	
	private function _remove_cached($key) {
		$settings = $this->_cached();
		if (isset($settings[$key])) {
			unset($settings[$key]);
			wp_cache_set('allsettings', $settings, 'wordfence-ls');
		}
	}
	
	private function _cached_value($key) {
		global $wpdb;
		
		$settings = $this->_cached();
		if (isset($settings[$key])) {
			return $settings[$key];
		}
		
		$table = Controller_DB::shared()->settings;
		$value = $wpdb->get_var($wpdb->prepare("SELECT `value` FROM `{$table}` WHERE name = %s", $key));
		if ($value !== null) {
			$settings[$key] = $value;
			wp_cache_set('allsettings', $settings, 'wordfence-ls');
		}
		return $value;
	}
	public function _has_cached($key) {
		$settings = $this->_cached();
		return isset($settings[$key]);
	}
}modules/login-security/classes/model/text/html.php000064400000000755150755146440016411 0ustar00<?php

namespace WordfenceLS\Text;

/**
 * Represents text that is already HTML-safe and should not be encoded again.
 * @package Wordfence2FA\Text
 */
class Model_HTML {
	private $_html;
	
	public static function esc_html($content) {
		if (is_object($content) && ($content instanceof Model_HTML)) {
			return (string) $content;
		}
		return esc_html($content);
	}
	
	public function __construct($html) {
		$this->_html = $html;
	}
	
	public function __toString() {
		return $this->_html;
	}
}modules/login-security/classes/model/text/javascript.php000064400000002236150755146440017607 0ustar00<?php

namespace WordfenceLS\Text;

/**
 * Represents text that is already JavaScript-safe and should not be encoded again.
 * @package Wordfence2FA\Text
 */
class Model_JavaScript {
	private $_javaScript;
	
	/**
	 * Returns a string escaped for use in JavaScript. This is almost identical in behavior to esc_js except that
	 * we don't call _wp_specialchars and keep \r rather than stripping it.
	 * 
	 * @param string|Model_JavaScript $content
	 * @return string
	 */
	public static function esc_js($content) {
		if (is_object($content) && ($content instanceof Model_HTML)) {
			return (string) $content;
		}
		
		$safe_text = wp_check_invalid_utf8($content);
		$safe_text = preg_replace('/&#(x)?0*(?(1)27|39);?/i', "'", stripslashes($safe_text));
		$safe_text = str_replace("\r", '\\r', $safe_text);
		$safe_text = str_replace("\n", '\\n', addslashes($safe_text));
		return apply_filters('js_escape', $safe_text, $content);
	}

	public static function echo_string_literal($string) {
		echo "'" . self::esc_js($string) . "'";
	}

	public function __construct($javaScript) {
		$this->_javaScript = $javaScript;
	}
	
	public function __toString() {
		return $this->_javaScript;
	}
}modules/login-security/classes/model/settings.php000064400000001203150755146440016306 0ustar00<?php

namespace WordfenceLS;

abstract class Model_Settings {
	const AUTOLOAD_YES = 'yes';
	const AUTOLOAD_NO = 'no';
	
	/**
	 * Sets $value to $key.
	 * 
	 * @param string $key
	 * @param mixed $value
	 * @param string $autoload Whether or not the key/value pair should autoload in storages that do that.
	 * @param bool $allowOverwrite If false, only sets the value if key does not already exist.
	 */
	abstract public function set($key, $value, $autoload = self::AUTOLOAD_YES, $allowOverwrite = true);
	abstract public function set_multiple($values);
	abstract public function get($key, $default);
	abstract public function remove($key);
}modules/login-security/classes/model/script.php000064400000002375150755146440015765 0ustar00<?php

namespace WordfenceLS;

class Model_Script extends Model_Asset {

	private $translations = array();
	private $translationObjectName = null;

	public function enqueue() {
		if ($this->registered) {
			wp_enqueue_script($this->handle);
		}
		else {
			wp_enqueue_script($this->handle, $this->source, $this->dependencies, $this->version);
		}
		if ($this->translationObjectName && !empty($this->translations)) {
			wp_localize_script($this->handle, $this->translationObjectName, $this->translations);
		}
	}

	public function isEnqueued() {
		return wp_script_is($this->handle);
	}

	public function renderInline() {
		if (empty($this->source))
			return;
?>
		<script type="text/javascript" src="<?php echo esc_attr($this->getSourceUrl()) ?>"></script>
<?php
	}

	public function register() {
		wp_register_script($this->handle, $this->source, $this->dependencies, $this->version);
		return parent::register();
	}

	public function withTranslation($placeholder, $translation) {
		$this->translations[$placeholder] = $translation;
		return $this;
	}

	public function withTranslations($translations) {
		$this->translations = $translations;
		return $this;
	}

	public function setTranslationObjectName($name) {
		$this->translationObjectName = $name;
		return $this;
	}

}modules/login-security/classes/model/crypto.php000064400000020161150755146440015772 0ustar00<?php

namespace WordfenceLS;

abstract class Model_Crypto {
	/**
	 * Refreshes the secrets used by the plugin.
	 */
	public static function refresh_secrets() {
		Controller_Settings::shared()->set(Controller_Settings::OPTION_SHARED_HASH_SECRET_KEY, bin2hex(self::random_bytes(32)));
		Controller_Settings::shared()->set(Controller_Settings::OPTION_SHARED_SYMMETRIC_SECRET_KEY, bin2hex(self::random_bytes(32)));
		Controller_Settings::shared()->set(Controller_Settings::OPTION_LAST_SECRET_REFRESH, Controller_Time::time(), true);
	}
	
	/**
	 * Returns the secret for hashing.
	 * 
	 * @return string
	 */
	public static function shared_hash_secret() {
		return Controller_Settings::shared()->get(Controller_Settings::OPTION_SHARED_HASH_SECRET_KEY);
	}
	
	/**
	 * Returns the secret for symmetric encryption.
	 * 
	 * @return string
	 */
	public static function shared_symmetric_secret() {
		return Controller_Settings::shared()->get(Controller_Settings::OPTION_SHARED_SYMMETRIC_SECRET_KEY);
	}
	
	/**
	 * Returns whether or not the installation has the required crypto support for this to work.
	 * 
	 * @return bool
	 */
	public static function has_required_crypto_functions() {
		if (function_exists('openssl_get_publickey') && function_exists('openssl_get_cipher_methods')) {
			$ciphers = openssl_get_cipher_methods();
			return array_search('aes-256-cbc', $ciphers) !== false;
		}
		return false;
	}
	
	/**
	 * Utility
	 */
	
	public static function random_bytes($bytes) {
		$bytes = (int) $bytes;
		if (function_exists('random_bytes')) {
			try {
				$rand = random_bytes($bytes);
				if (is_string($rand) && self::strlen($rand) === $bytes) {
					return $rand;
				}
			} catch (\Exception $e) {
				// Fall through
			} catch (\TypeError $e) {
				// Fall through
			} catch (\Error $e) {
				// Fall through
			}
		}
		if (function_exists('mcrypt_create_iv')) {
			// phpcs:ignore PHPCompatibility.FunctionUse.RemovedFunctions.mcrypt_create_ivDeprecatedRemoved,PHPCompatibility.Extensions.RemovedExtensions.mcryptDeprecatedRemoved,PHPCompatibility.Constants.RemovedConstants.mcrypt_dev_urandomDeprecatedRemoved
			$rand = @mcrypt_create_iv($bytes, MCRYPT_DEV_URANDOM);
			if (is_string($rand) && self::strlen($rand) === $bytes) {
				return $rand;
			}
		}
		if (function_exists('openssl_random_pseudo_bytes')) {
			$rand = @openssl_random_pseudo_bytes($bytes, $strong);
			if (is_string($rand) && self::strlen($rand) === $bytes) {
				return $rand;
			}
		}
		// Last resort is insecure
		$return = '';
		for ($i = 0; $i < $bytes; $i++) {
			$return .= chr(mt_rand(0, 255));
		}
		return $return;
	}
	
	/**
	 * Polyfill for random_int.
	 *
	 * @param int $min
	 * @param int $max
	 * @return int
	 */
	public static function random_int($min = 0, $max = 0x7FFFFFFF) {
		if (function_exists('random_int')) {
			try {
				return random_int($min, $max);
			} catch (\Exception $e) {
				// Fall through
			} catch (\TypeError $e) {
				// Fall through
			} catch (\Error $e) {
				// Fall through
			}
		}
		$diff = $max - $min;
		$bytes = self::random_bytes(4);
		if ($bytes === false || self::strlen($bytes) != 4) {
			throw new \RuntimeException("Unable to get 4 bytes");
		}
		$val = @unpack("Nint", $bytes);
		$val = $val['int'] & 0x7FFFFFFF;
		$fp = (float) $val / 2147483647.0; // convert to [0,1]
		return (int) (round($fp * $diff) + $min);
	}
	
	public static function uuid() {
		return sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
			// 32 bits for "time_low"
			self::random_int(0, 0xffff), self::random_int(0, 0xffff),
			
			// 16 bits for "time_mid"
			self::random_int(0, 0xffff),
			
			// 16 bits for "time_hi_and_version",
			// four most significant bits holds version number 4
			self::random_int(0, 0x0fff) | 0x4000,
			
			// 16 bits, 8 bits for "clk_seq_hi_res",
			// 8 bits for "clk_seq_low",
			// two most significant bits holds zero and one for variant DCE1.1
			self::random_int(0, 0x3fff) | 0x8000,
			
			// 48 bits for "node"
			self::random_int(0, 0xffff), self::random_int(0, 0xffff), self::random_int(0, 0xffff)
		);
	}
	
	/**
	 * Set the mbstring internal encoding to a binary safe encoding when func_overload
	 * is enabled.
	 *
	 * When mbstring.func_overload is in use for multi-byte encodings, the results from
	 * strlen() and similar functions respect the utf8 characters, causing binary data
	 * to return incorrect lengths.
	 *
	 * This function overrides the mbstring encoding to a binary-safe encoding, and
	 * resets it to the users expected encoding afterwards through the
	 * `reset_mbstring_encoding` function.
	 *
	 * It is safe to recursively call this function, however each
	 * `_mbstring_binary_safe_encoding()` call must be followed up with an equal number
	 * of `_reset_mbstring_encoding()` calls.
	 *
	 * @see Model_Crypto::_reset_mbstring_encoding
	 *
	 * @staticvar array $encodings
	 * @staticvar bool  $overloaded
	 *
	 * @param bool $reset Optional. Whether to reset the encoding back to a previously-set encoding.
	 *                    Default false.
	 */
	protected static function _mbstring_binary_safe_encoding($reset = false) {
		static $encodings = array();
		static $overloaded = null;
		
		if (is_null($overloaded)) {
			// phpcs:ignore PHPCompatibility.IniDirectives.RemovedIniDirectives.mbstring_func_overloadDeprecated
			$overloaded = function_exists('mb_internal_encoding') && (ini_get('mbstring.func_overload') & 2);
		}
		
		if (false === $overloaded) { return; }
		
		if (!$reset) {
			$encoding = mb_internal_encoding();
			array_push($encodings, $encoding);
			mb_internal_encoding('ISO-8859-1');
		}
		
		if ($reset && $encodings) {
			$encoding = array_pop($encodings);
			mb_internal_encoding($encoding);
		}
	}
	
	/**
	 * Reset the mbstring internal encoding to a users previously set encoding.
	 *
	 * @see Model_Crypto::_mbstring_binary_safe_encoding
	 */
	protected static function _reset_mbstring_encoding() {
		self::_mbstring_binary_safe_encoding(true);
	}
	
	/**
	 * @param callable $function
	 * @param array $args
	 * @return mixed
	 */
	protected static function _call_mb_string_function($function, $args) {
		self::_mbstring_binary_safe_encoding();
		$return = call_user_func_array($function, $args);
		self::_reset_mbstring_encoding();
		return $return;
	}
	
	/**
	 * Multibyte safe strlen.
	 *
	 * @param $binary
	 * @return int
	 */
	public static function strlen($binary) {
		$args = func_get_args();
		return self::_call_mb_string_function('strlen', $args);
	}
	
	/**
	 * @param $haystack
	 * @param $needle
	 * @param int $offset
	 * @return int
	 */
	public static function stripos($haystack, $needle, $offset = 0) {
		$args = func_get_args();
		return self::_call_mb_string_function('stripos', $args);
	}
	
	/**
	 * @param $string
	 * @return mixed
	 */
	public static function strtolower($string) {
		$args = func_get_args();
		return self::_call_mb_string_function('strtolower', $args);
	}
	
	/**
	 * @param $string
	 * @param $start
	 * @param $length
	 * @return mixed
	 */
	public static function substr($string, $start, $length = null) {
		if ($length === null) { $length = self::strlen($string); }
		return self::_call_mb_string_function('substr', array(
			$string, $start, $length
		));
	}
	
	/**
	 * @param $haystack
	 * @param $needle
	 * @param int $offset
	 * @return mixed
	 */
	public static function strpos($haystack, $needle, $offset = 0) {
		$args = func_get_args();
		return self::_call_mb_string_function('strpos', $args);
	}
	
	/**
	 * @param string $haystack
	 * @param string $needle
	 * @param int $offset
	 * @param int $length
	 * @return mixed
	 */
	public static function substr_count($haystack, $needle, $offset = 0, $length = null) {
		if ($length === null) { $length = self::strlen($haystack); }
		return self::_call_mb_string_function('substr_count', array(
			$haystack, $needle, $offset, $length
		));
	}
	
	/**
	 * @param $string
	 * @return mixed
	 */
	public static function strtoupper($string) {
		$args = func_get_args();
		return self::_call_mb_string_function('strtoupper', $args);
	}
	
	/**
	 * @param string $haystack
	 * @param string $needle
	 * @param int $offset
	 * @return mixed
	 */
	public static function strrpos($haystack, $needle, $offset = 0) {
		$args = func_get_args();
		return self::_call_mb_string_function('strrpos', $args);
	}
}modules/login-security/classes/model/view/title.php000064400000001575150755146440016555 0ustar00<?php

namespace WordfenceLS\View;

/**
 * Class Model_Title
 * @package Wordfence2FA\Page
 * @var string $id A valid DOM ID for the title.
 * @var string|Model_HTML $title The title text or HTML.
 * @var string $helpURL The help URL.
 * @var string|Model_HTML $helpLink The text/HTML of the help link.
 */
class Model_Title {
	private $_id;
	private $_title;
	private $_helpURL;
	private $_helpLink;
	
	public function __construct($id, $title, $helpURL = null, $helpLink = null) {
		$this->_id = $id;
		$this->_title = $title;
		$this->_helpURL = $helpURL;
		$this->_helpLink = $helpLink;
	}
	
	public function __get($name) {
		switch ($name) {
			case 'id':
				return $this->_id;
			case 'title':
				return $this->_title;
			case 'helpURL':
				return $this->_helpURL;
			case 'helpLink':
				return $this->_helpLink;
		}
		
		throw new \OutOfBoundsException('Invalid key: ' . $name);
	}
}modules/login-security/classes/model/view/tab.php000064400000001630150755146440016172 0ustar00<?php

namespace WordfenceLS\View;

/**
 * Represents a tab in the UI.
 * 
 * @package Wordfence2FA\View
 * @property string $id
 * @property string $a
 * @property string $tabTitle
 * @property string $pageTitle
 * @property bool $active
 */
class Model_Tab {
	protected $_id;
	protected $_a;
	protected $_tabTitle;
	protected $_pageTitle;
	protected $_active;
	
	public function __construct($id, $a, $tabTitle, $pageTitle, $active = false) {
		$this->_id = $id;
		$this->_a = $a;
		$this->_tabTitle = $tabTitle;
		$this->_pageTitle = $pageTitle;
		$this->_active = $active;
	}
	
	public function __get($name) {
		switch ($name) {
			case 'id':
				return $this->_id;
			case 'a':
				return $this->_a;
			case 'tabTitle':
				return $this->_tabTitle;
			case 'pageTitle':
				return $this->_pageTitle;
			case 'active':
				return $this->_active;
		}
		
		throw new \OutOfBoundsException('Invalid key: ' . $name);
	}
}modules/login-security/classes/model/ip.php000064400000012004150755146440015057 0ustar00<?php

namespace WordfenceLS;

class Model_IP {
	/**
	 * Returns the human-readable representation of a packed binary IP address.
	 *
	 * @param string $ip
	 * @return bool|string
	 */
	public static function inet_ntop($ip) {
		if (Model_Crypto::strlen($ip) == 16 && Model_Crypto::substr($ip, 0, 12) == "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff") {
			$ip = Model_Crypto::substr($ip, 12, 4);
		}
		
		if (self::has_ipv6()) {
			return @inet_ntop($ip);
		}
		
		// IPv4
		if (Model_Crypto::strlen($ip) === 4) {
			return ord($ip[0]) . '.' . ord($ip[1]) . '.' . ord($ip[2]) . '.' . ord($ip[3]);
		}
		
		// IPv6
		if (Model_Crypto::strlen($ip) === 16) {
			// IPv4 mapped IPv6
			if (Model_Crypto::substr($ip, 0, 12) == "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff") {
				return "::ffff:" . ord($ip[12]) . '.' . ord($ip[13]) . '.' . ord($ip[14]) . '.' . ord($ip[15]);
			}
			
			$hex = bin2hex($ip);
			$groups = str_split($hex, 4);
			$in_collapse = false;
			$done_collapse = false;
			foreach ($groups as $index => $group) {
				if ($group == '0000' && !$done_collapse) {
					if ($in_collapse) {
						$groups[$index] = '';
						continue;
					}
					$groups[$index] = ':';
					$in_collapse = true;
					continue;
				}
				if ($in_collapse) {
					$done_collapse = true;
				}
				$groups[$index] = ltrim($groups[$index], '0');
				if (strlen($groups[$index]) === 0) {
					$groups[$index] = '0';
				}
			}
			$ip = join(':', array_filter($groups, 'strlen'));
			$ip = str_replace(':::', '::', $ip);
			return $ip == ':' ? '::' : $ip;
		}
		
		return false;
	}
	
	/**
	 * Returns the packed binary representation of an IP address from the human readable version.
	 *
	 * @param string $ip
	 * @return string
	 */
	public static function inet_pton($ip) {
		if (self::has_ipv6()) {
			$pton = @inet_pton($ip);
			if ($pton === false) {
				return false;
			}
		}
		else {
			if (preg_match('/^(?:\d{1,3}(?:\.|$)){4}/', $ip)) { // IPv4
				$octets = explode('.', $ip);
				$pton = chr($octets[0]) . chr($octets[1]) . chr($octets[2]) . chr($octets[3]);
			}
			else if (preg_match('/^((?:[\da-f]{1,4}(?::|)){0,8})(::)?((?:[\da-f]{1,4}(?::|)){0,8})$/i', $ip)) { // IPv6
				if ($ip === '::') {
					$pton = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
				}
				else {
					$colon_count = substr_count($ip, ':');
					$dbl_colon_pos = strpos($ip, '::');
					if ($dbl_colon_pos !== false) {
						$ip = str_replace('::', str_repeat(':0000', (($dbl_colon_pos === 0 || $dbl_colon_pos === strlen($ip) - 2) ? 9 : 8) - $colon_count) . ':', $ip);
						$ip = trim($ip, ':');
					}
					
					$ip_groups = explode(':', $ip);
					$ipv6_bin = '';
					foreach ($ip_groups as $ip_group) {
						$ipv6_bin .= pack('H*', str_pad($ip_group, 4, '0', STR_PAD_LEFT));
					}
					
					if (Model_Crypto::strlen($ipv6_bin) == 16) {
						$pton = $ipv6_bin;
					}
					else {
						return false;
					}
				}
			}
			else if (preg_match('/^(?:\:(?:\:0{1,4}){0,4}\:|(?:0{1,4}\:){5})ffff\:(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$/i', $ip, $matches)) { // IPv4 mapped IPv6
				$octets = explode('.', $matches[1]);
				$pton = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff" . chr($octets[0]) . chr($octets[1]) . chr($octets[2]) . chr($octets[3]);
			}
			else {
				return false;
			}
		}
		
		$pton = str_pad($pton, 16, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00", STR_PAD_LEFT);
		return $pton;
	}
	
	/**
	 * Verify PHP was compiled with IPv6 support.
	 *
	 * Some hosts appear to not have inet_ntop, and others appear to have inet_ntop but are unable to process IPv6 addresses.
	 *
	 * @return bool
	 */
	public static function has_ipv6() {
		return defined('AF_INET6');
	}
	
	/**
	 * Expands a compressed printable representation of an IPv6 address.
	 *
	 * @param string $ip
	 * @return string
	 */
	public static function expand_ipv6_address($ip) {
		$hex = bin2hex(self::inet_pton($ip));
		$ip = substr(preg_replace("/([a-f0-9]{4})/i", "$1:", $hex), 0, -1);
		return $ip;
	}
	
	/**
	 * Returns whether or not the IP is a valid format.
	 *
	 * @param string $ip
	 * @return bool
	 */
	public static function is_valid_ip($ip) {
		return filter_var($ip, FILTER_VALIDATE_IP) !== false;
	}
	
	/**
	 * Returns whether or not the range is a valid CIDR range.
	 * 
	 * @param string $range
	 * @return bool
	 */
	public static function is_valid_cidr_range($range) {
		$components = explode('/', $range);
		if (count($components) != 2) { return false; }
		
		list($ip, $prefix) = $components;
		if (!self::is_valid_ip($ip)) { return false; }
		
		if (!preg_match('/^\d+$/', $prefix)) { return false; }
		
		if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
			if ($prefix < 0 || $prefix > 32) { return false; }
		}
		else {
			if ($prefix < 1 || $prefix > 128) { return false; }
		}
		
		return true;
	}
	
	/**
	 * Returns whether or not the IP is in the IPv6-mapped-IPv4 format.
	 *
	 * @param string $ip
	 * @return bool
	 */
	public static function is_ipv6_mapped_ipv4($ip) {
		return preg_match('/^(?:\:(?:\:0{1,4}){0,4}\:|(?:0{1,4}\:){5})ffff\:\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/i', $ip) > 0;
	}
}modules/login-security/classes/model/notice.php000064400000002144150755146440015734 0ustar00<?php

namespace WordfenceLS;

class Model_Notice {
	const SEVERITY_CRITICAL = 'critical';
	const SEVERITY_WARNING = 'warning';
	const SEVERITY_INFO = 'info';
	
	private $_id;
	private $_severity;
	private $_messageHTML;
	private $_category;
	
	public function __construct($id, $severity, $messageHTML, $category) {
		$this->_id = $id;
		$this->_severity = $severity;
		$this->_messageHTML = $messageHTML;
		$this->_category = $category;
	}
	
	public function display_notice() {
		$severityClass = 'notice-info';
		if ($this->_severity == self::SEVERITY_CRITICAL) {
			$severityClass = 'notice-error';
		}
		else if ($this->_severity == self::SEVERITY_WARNING) {
			$severityClass = 'notice-warning';
		}
		
		echo '<div class="wfls-notice notice ' . $severityClass . '" data-notice-id="' . esc_attr($this->_id) . '" data-notice-type="' . esc_attr($this->_category) . '"><p>' . $this->_messageHTML . '</p><p>' . sprintf(__('<a class="wfls-btn wfls-btn-default wfls-btn-sm wfls-dismiss-link" href="#" onclick="GWFLS.dismiss_notice(\'%s\'); return false;">Dismiss</a>', 'wordfence'), esc_attr($this->_id)) . '</p></div>';
	}
}modules/login-security/classes/model/crypto/symmetric.php000064400000002444150755146440020012 0ustar00<?php

namespace WordfenceLS\Crypto;

use WordfenceLS\Model_Crypto;

abstract class Model_Symmetric {
	/**
	 * Returns $data encrypted with the shared symmetric key or false if unable to do so.
	 *
	 * @param string $data
	 * @return bool|array
	 */
	public static function encrypt($data) {
		if (!Model_Crypto::has_required_crypto_functions()) {
			return false;
		}
		
		$symmetricKey = Model_Crypto::shared_symmetric_secret();
		$iv = Model_Crypto::random_bytes(16);
		$encrypted = @openssl_encrypt($data, 'aes-256-cbc', $symmetricKey, OPENSSL_RAW_DATA, $iv);
		if ($encrypted) {
			return array('data' => base64_encode($encrypted), 'iv' => base64_encode($iv));
		}
		return false;
	}
	
	/**
	 * Returns the decrypted value of a payload encrypted by Model_Symmetric::encrypt
	 *
	 * @param array $encrypted
	 * @return bool|string
	 */
	public static function decrypt($encrypted) {
		if (!Model_Crypto::has_required_crypto_functions()) {
			return false;
		}
		
		if (!isset($encrypted['data']) || !isset($encrypted['iv'])) {
			return false;
		}
		
		$symmetricKey = Model_Crypto::shared_symmetric_secret();
		$iv = base64_decode($encrypted['iv']);
		$encrypted = base64_decode($encrypted['data']);
		$data = @openssl_decrypt($encrypted, 'aes-256-cbc', $symmetricKey, OPENSSL_RAW_DATA, $iv);
		return $data;
	}
}modules/login-security/classes/model/crypto/base2n.php000064400000022323150755146440017146 0ustar00<?php

namespace WordfenceLS\Crypto;
/**
 * Binary-to-text PHP Utilities
 *
 * @package     binary-to-text-php
 * @link        https://github.com/ademarre/binary-to-text-php
 * @author      Andre DeMarre
 * @copyright   2009-2013 Andre DeMarre
 * @license     http://opensource.org/licenses/MIT  MIT
 */

/**
 * Class for binary-to-text encoding with a base of 2^n
 *
 * The Base2n class is for binary-to-text conversion. It employs a
 * generalization of the algorithms used by many encoding schemes that
 * use a fixed number of bits to encode each character. In other words,
 * the base is a power of 2.
 *
 * Earlier versions of this class were named
 * FixedBitNotation and FixedBitEncoding.
 *
 * @package binary-to-text-php
 */
class Model_Base2n
{
	protected $_chars;
	protected $_bitsPerCharacter;
	protected $_radix;
	protected $_rightPadFinalBits;
	protected $_padFinalGroup;
	protected $_padCharacter;
	protected $_caseSensitive;
	protected $_charmap;
	
	/**
	 * Constructor
	 *
	 * @param   integer $bitsPerCharacter   Bits to use for each encoded character
	 * @param   string  $chars              Base character alphabet
	 * @param   boolean $caseSensitive      To decode in a case-sensitive manner
	 * @param   boolean $rightPadFinalBits  How to encode last character
	 * @param   boolean $padFinalGroup      Add padding to end of encoded output
	 * @param   string  $padCharacter       Character to use for padding
	 *
	 * @throws  InvalidArgumentException    for incompatible parameters
	 */
	public function __construct(
		$bitsPerCharacter,
		$chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_',
		$caseSensitive = TRUE, $rightPadFinalBits = FALSE,
		$padFinalGroup = FALSE, $padCharacter = '=')
	{
		// Ensure validity of $chars
		if (!is_string($chars) || ($charLength = strlen($chars)) < 2) {
			throw new \InvalidArgumentException('$chars must be a string of at least two characters');
		}
		
		// Ensure validity of $padCharacter
		if ($padFinalGroup) {
			if (!is_string($padCharacter) || !isset($padCharacter[0])) {
				throw new \InvalidArgumentException('$padCharacter must be a string of one character');
			}
			
			if ($caseSensitive) {
				$padCharFound = strpos($chars, $padCharacter[0]);
			} else {
				$padCharFound = stripos($chars, $padCharacter[0]);
			}
			
			if ($padCharFound !== FALSE) {
				throw new \InvalidArgumentException('$padCharacter can not be a member of $chars');
			}
		}
		
		// Ensure validity of $bitsPerCharacter
		if (!is_int($bitsPerCharacter)) {
			throw new \InvalidArgumentException('$bitsPerCharacter must be an integer');
		}
		
		if ($bitsPerCharacter < 1) {
			// $bitsPerCharacter must be at least 1
			throw new \InvalidArgumentException('$bitsPerCharacter can not be less than 1');
			
		} elseif ($charLength < 1 << $bitsPerCharacter) {
			// Character length of $chars is too small for $bitsPerCharacter
			// Find greatest acceptable value of $bitsPerCharacter
			$bitsPerCharacter = 1;
			$radix = 2;
			
			while ($charLength >= ($radix <<= 1) && $bitsPerCharacter < 8) {
				$bitsPerCharacter++;
			}
			
			$radix >>= 1;
			throw new \InvalidArgumentException(
				'$bitsPerCharacter can not be more than ' . $bitsPerCharacter
				. ' given $chars length of ' . $charLength
				. ' (max radix ' . $radix . ')');
			
		} elseif ($bitsPerCharacter > 8) {
			// $bitsPerCharacter must not be greater than 8
			throw new \InvalidArgumentException('$bitsPerCharacter can not be greater than 8');
			
		} else {
			$radix = 1 << $bitsPerCharacter;
		}
		
		$this->_chars             = $chars;
		$this->_bitsPerCharacter  = $bitsPerCharacter;
		$this->_radix             = $radix;
		$this->_rightPadFinalBits = $rightPadFinalBits;
		$this->_padFinalGroup     = $padFinalGroup;
		$this->_padCharacter      = $padCharacter[0];
		$this->_caseSensitive     = $caseSensitive;
	}
	
	/**
	 * Encode a string
	 *
	 * @param   string  $rawString  Binary data to encode
	 * @return  string
	 */
	public function encode($rawString)
	{
		// Unpack string into an array of bytes
		$bytes = unpack('C*', $rawString);
		$byteCount = count($bytes);
		
		$encodedString = '';
		$byte = array_shift($bytes);
		$bitsRead = 0;
		$oldBits = 0;
		
		$chars             = $this->_chars;
		$bitsPerCharacter  = $this->_bitsPerCharacter;
		$rightPadFinalBits = $this->_rightPadFinalBits;
		$padFinalGroup     = $this->_padFinalGroup;
		$padCharacter      = $this->_padCharacter;
		
		$charsPerByte = 8 / $bitsPerCharacter;
		$encodedLength = $byteCount * $charsPerByte;
		
		// Generate encoded output; each loop produces one encoded character
		for ($c = 0; $c < $encodedLength; $c++) {
			
			// Get the bits needed for this encoded character
			if ($bitsRead + $bitsPerCharacter > 8) {
				// Not enough bits remain in this byte for the current character
				// Save the remaining bits before getting the next byte
				$oldBitCount = 8 - $bitsRead;
				$oldBits = $byte ^ ($byte >> $oldBitCount << $oldBitCount);
				$newBitCount = $bitsPerCharacter - $oldBitCount;
				
				if (!$bytes) {
					// Last bits; match final character and exit loop
					if ($rightPadFinalBits) $oldBits <<= $newBitCount;
					$encodedString .= $chars[$oldBits];
					
					if ($padFinalGroup) {
						// Array of the lowest common multiples of $bitsPerCharacter and 8, divided by 8
						$lcmMap = array(1 => 1, 2 => 1, 3 => 3, 4 => 1, 5 => 5, 6 => 3, 7 => 7, 8 => 1);
						$bytesPerGroup = $lcmMap[$bitsPerCharacter];
						$pads = $bytesPerGroup * $charsPerByte - ceil((strlen($rawString) % $bytesPerGroup) * $charsPerByte);
						$encodedString .= str_repeat($padCharacter, $pads);
					}
					
					break;
				}
				
				// Get next byte
				$byte = array_shift($bytes);
				$bitsRead = 0;
				
			} else {
				$oldBitCount = 0;
				$newBitCount = $bitsPerCharacter;
			}
			
			// Read only the needed bits from this byte
			$bits = $byte >> 8 - ($bitsRead + ($newBitCount));
			$bits ^= $bits >> $newBitCount << $newBitCount;
			$bitsRead += $newBitCount;
			
			if ($oldBitCount) {
				// Bits come from seperate bytes, add $oldBits to $bits
				$bits = ($oldBits << $newBitCount) | $bits;
			}
			
			$encodedString .= $chars[$bits];
		}
		
		return $encodedString;
	}
	
	/**
	 * Decode a string
	 *
	 * @param   string  $encodedString  Data to decode
	 * @param   boolean $strict         Returns NULL if $encodedString contains an undecodable character
	 * @return  string
	 */
	public function decode($encodedString, $strict = FALSE)
	{
		if (!$encodedString || !is_string($encodedString)) {
			// Empty string, nothing to decode
			return '';
		}
		
		$chars             = $this->_chars;
		$bitsPerCharacter  = $this->_bitsPerCharacter;
		$radix             = $this->_radix;
		$rightPadFinalBits = $this->_rightPadFinalBits;
		$padFinalGroup     = $this->_padFinalGroup;
		$padCharacter      = $this->_padCharacter;
		$caseSensitive     = $this->_caseSensitive;
		
		// Get index of encoded characters
		if ($this->_charmap) {
			$charmap = $this->_charmap;
			
		} else {
			$charmap = array();
			
			for ($i = 0; $i < $radix; $i++) {
				$charmap[$chars[$i]] = $i;
			}
			
			$this->_charmap = $charmap;
		}
		
		// The last encoded character is $encodedString[$lastNotatedIndex]
		$lastNotatedIndex = strlen($encodedString) - 1;
		
		// Remove trailing padding characters
		if ($padFinalGroup) {
			while ($encodedString[$lastNotatedIndex] === $padCharacter) {
				$encodedString = substr($encodedString, 0, $lastNotatedIndex);
				$lastNotatedIndex--;
			}
		}
		
		$rawString = '';
		$byte = 0;
		$bitsWritten = 0;
		
		// Convert each encoded character to a series of unencoded bits
		for ($c = 0; $c <= $lastNotatedIndex; $c++) {
			
			if (!$caseSensitive && !isset($charmap[$encodedString[$c]])) {
				// Encoded character was not found; try other case
				if (isset($charmap[$cUpper = strtoupper($encodedString[$c])])) {
					$charmap[$encodedString[$c]] = $charmap[$cUpper];
					
				} elseif (isset($charmap[$cLower = strtolower($encodedString[$c])])) {
					$charmap[$encodedString[$c]] = $charmap[$cLower];
				}
			}
			
			if (isset($charmap[$encodedString[$c]])) {
				$bitsNeeded = 8 - $bitsWritten;
				$unusedBitCount = $bitsPerCharacter - $bitsNeeded;
				
				// Get the new bits ready
				if ($bitsNeeded > $bitsPerCharacter) {
					// New bits aren't enough to complete a byte; shift them left into position
					$newBits = $charmap[$encodedString[$c]] << $bitsNeeded - $bitsPerCharacter;
					$bitsWritten += $bitsPerCharacter;
					
				} elseif ($c !== $lastNotatedIndex || $rightPadFinalBits) {
					// Zero or more too many bits to complete a byte; shift right
					$newBits = $charmap[$encodedString[$c]] >> $unusedBitCount;
					$bitsWritten = 8; //$bitsWritten += $bitsNeeded;
					
				} else {
					// Final bits don't need to be shifted
					$newBits = $charmap[$encodedString[$c]];
					$bitsWritten = 8;
				}
				
				$byte |= $newBits;
				
				if ($bitsWritten === 8 || $c === $lastNotatedIndex) {
					// Byte is ready to be written
					$rawString .= pack('C', $byte);
					
					if ($c !== $lastNotatedIndex) {
						// Start the next byte
						$bitsWritten = $unusedBitCount;
						$byte = ($charmap[$encodedString[$c]] ^ ($newBits << $unusedBitCount)) << 8 - $bitsWritten;
					}
				}
				
			} elseif ($strict) {
				// Unable to decode character; abort
				return NULL;
			}
		}
		
		return $rawString;
	}
}modules/login-security/classes/model/crypto/jwt.php000064400000006657150755146440016614 0ustar00<?php

namespace WordfenceLS\Crypto;

use WordfenceLS\Controller_Time;
use WordfenceLS\Model_Crypto;

/**
 * Class Model_JWT
 * @package Wordfence2FA\Crypto
 * @property array $payload
 * @property int $expiration
 */
class Model_JWT {
	private $_payload;
	private $_expiration;
	
	/**
	 * Decodes and returns the payload of a JWT. This also validates the signature and expiration. Currently assumes HS256 JWTs.
	 *
	 * @param string $token
	 * @return Model_JWT|bool The decoded JWT or false if the token is invalid or fails validation.
	 */
	public static function decode_jwt($token) {
		$components = explode('.', $token);
		if (count($components) != 3) {
			return false;
		}
		
		$key = Model_Crypto::shared_hash_secret();
		$body = $components[0] . '.' . $components[1];
		$signature = hash_hmac('sha256', $body, $key, true);
		$testSignature = self::base64url_decode($components[2]);
		if (!hash_equals($signature, $testSignature)) {
			return false;
		}
		
		$json = self::base64url_decode($components[1]);
		$payload = @json_decode($json, true);
		$expiration = false;
		if (isset($payload['_exp'])) {
			$expiration = $payload['_exp'];
			
			if ($payload['_exp'] < Controller_Time::time()) {
				return false;
			}
			
			unset($payload['_exp']);
		}
		
		return new self($payload, $expiration);
	}
	
	/**
	 * Model_JWT constructor.
	 * 
	 * @param array $payload
	 * @param bool|int $expiration
	 */
	public function __construct($payload, $expiration = false) {
		$this->_payload = $payload;
		$this->_expiration = $expiration;
	}
	
	public function __toString() {
		$payload = $this->_payload;
		if ($this->_expiration !== false) {
			$payload['_exp'] = $this->_expiration;
		}
		$key = Model_Crypto::shared_hash_secret();
		$header = '{"alg":"HS256","typ":"JWT"}';
		$body = self::base64url_encode($header) . '.' . self::base64url_encode(json_encode($payload));
		$signature = hash_hmac('sha256', $body, $key, true);
		return $body . '.' . self::base64url_encode($signature);
	}
	
	public function __isset($key) {
		switch ($key) {
			case 'payload':
			case 'expiration':
				return true;
		}
		
		throw new \OutOfBoundsException('Invalid key: ' . $key);
	}
	
	public function __get($key) {
		switch ($key) {
			case 'payload':
				return $this->_payload;
			case 'expiration':
				return $this->_expiration;
		}
		
		throw new \OutOfBoundsException('Invalid key: ' . $key);
	}
	
	/**
	 * Utility
	 */
	
	/**
	 * Base64URL-encodes the given payload. This is identical to base64_encode except it substitutes characters
	 * not safe for use in URLs.
	 *
	 * @param string $payload
	 * @return string
	 */
	public static function base64url_encode($payload) {
		return self::base64url_convert_to(base64_encode($payload));
	}
	
	public static function base64url_convert_to($base64) {
		$intermediate = rtrim($base64, '=');
		$intermediate = str_replace('+', '-', $intermediate);
		$intermediate = str_replace('/', '_', $intermediate);
		return $intermediate;
	}
	
	/**
	 * Base64URL-decodes the given payload. This is identical to base64_encode except it allows for the characters
	 * substituted by base64url_encode.
	 *
	 * @param string $payload
	 * @return string
	 */
	public static function base64url_decode($payload) {
		return base64_decode(self::base64url_convert_from($payload));
	}
	
	public static function base64url_convert_from($base64url) {
		$intermediate = str_replace('_', '/', $base64url);
		$intermediate = str_replace('-', '+', $intermediate);
		return $intermediate;
	}
}modules/login-security/classes/model/style.php000064400000001453150755146440015615 0ustar00<?php

namespace WordfenceLS;

class Model_Style extends Model_Asset {

	public function enqueue() {
		if ($this->registered) {
			wp_enqueue_style($this->handle);
		}
		else {
			wp_enqueue_style($this->handle, $this->source, $this->dependencies, $this->version);
		}
	}

	public function isEnqueued() {
		return wp_style_is($this->handle);
	}

	public function renderInline() {
		if (empty($this->source))
			return;
		$url = esc_attr($this->getSourceUrl());
		$linkTag = "<link rel=\"stylesheet\" type=\"text/css\" href=\"{$url}\">";
?>
		<script type="text/javascript">
			jQuery('head').append(<?php echo json_encode($linkTag) ?>);
		</script>
<?php
	}

	public function register() {
		wp_register_style($this->handle, $this->source, $this->dependencies, $this->version);
		return parent::register();
	}

}modules/login-security/classes/model/compat.php000064400000000370150755146440015735 0ustar00<?php
namespace WordfenceLS;

class Model_Compat {
	public static function hex2bin($string) { //Polyfill for PHP < 5.4
		if (!is_string($string)) { return false; }
		if (strlen($string) % 2 == 1) { return false; }
		return pack('H*', $string);
	}
}modules/login-security/classes/model/2fainitializationdata.php000064400000002412150755146440020723 0ustar00<?php

namespace WordfenceLS;

class Model_2faInitializationData {

	private $user;
	private $raw_secret;
	private $base32_secret;
	private $otp_url;
	private $recovery_codes;

	public function __construct($user) {
		$this->user = $user;
		$this->raw_secret = Model_Crypto::random_bytes(20);
	}

	public function get_user() {
		return $this->user;
	}

	public function get_raw_secret() {
		return $this->raw_secret;
	}

	public function get_base32_secret() {
		if ($this->base32_secret === null)
			$this->base32_secret = Utility_BaseConversion::base32_encode($this->raw_secret);
		return $this->base32_secret;
	}

	private function generate_otp_url() {
		return "otpauth://totp/" . rawurlencode(preg_replace('~^https?://(?:www\.)?~i', '', home_url()) . ':' . $this->user->user_login) . '?secret=' . $this->get_base32_secret() . '&algorithm=SHA1&digits=6&period=30&issuer=' . rawurlencode(preg_replace('~^https?://(?:www\.)?~i', '', home_url()));
	}

	public function get_otp_url() {
		if ($this->otp_url === null)
			$this->otp_url = $this->generate_otp_url();
		return $this->otp_url;
	}

	public function get_recovery_codes() {
		if ($this->recovery_codes === null)
			$this->recovery_codes = Controller_Users::shared()->regenerate_recovery_codes();
		return $this->recovery_codes;
	}

}modules/login-security/classes/model/asset.php000064400000003611150755146440015572 0ustar00<?php

namespace WordfenceLS;

abstract class Model_Asset {

	protected $handle;
	protected $source;
	protected $dependencies;
	protected $version;
	protected $registered = false;

	public function __construct($handle, $source = '', $dependencies = array(), $version = false) {
		$this->handle = $handle;
		$this->source = $source;
		$this->dependencies = $dependencies;
		$this->version = $version;
	}

	public function getSourceUrl() {
		if (empty($this->source))
			return null;
		$url = $this->source;
		if (is_string($this->version))
			$url = add_query_arg('ver', $this->version, $this->source);
		return $url;
	}

	public abstract function enqueue(); 

	public abstract function isEnqueued();

	public abstract function renderInline();

	public function renderInlineIfNotEnqueued() {
		if (!$this->isEnqueued())
			$this->renderInline();
	}

	public function setRegistered() {
		$this->registered = true;
		return $this;
	}

	public function register() {
		return $this->setRegistered();
	}

	public static function js($file) {
		return self::_pluginBaseURL() . 'js/' . self::_versionedFileName($file);
	}
	
	public static function css($file) {
		return self::_pluginBaseURL() . 'css/' . self::_versionedFileName($file);
	}
	
	public static function img($file) {
		return self::_pluginBaseURL() . 'img/' . $file;
	}
	
	protected static function _pluginBaseURL() {
		return plugins_url('', WORDFENCE_LS_FCPATH) . '/';
	}
	
	protected static function _versionedFileName($subpath) {
		$version = WORDFENCE_LS_BUILD_NUMBER;
		if ($version != 'WORDFENCE_LS_BUILD_NUMBER' && preg_match('/^(.+?)(\.[^\.]+)$/', $subpath, $matches)) {
			$prefix = $matches[1];
			$suffix = $matches[2];
			return $prefix . '.' . $version . $suffix;
		}
		
		return $subpath;
	}

	public static function create($handle, $source = '', $dependencies = array(), $version = false) {
		return new static($handle, $source, $dependencies, $version);
	}

}modules/login-security/classes/model/view.php000064400000004305150755146440015426 0ustar00<?php

namespace WordfenceLS;

class Model_View {
	/**
	 * @var string
	 */
	protected $path;
	
	/**
	 * @var string
	 */
	protected $file_extension = '.php';
	
	/**
	 * @var string
	 */
	protected $view;
	
	/**
	 * @var array
	 */
	protected $data;
	
	/**
	 * Equivalent to the constructor but allows for call chaining.
	 * 
	 * @param string $view
	 * @param array $data
	 * @return Model_View
	 */
	public static function create($view, $data = array()) {
		return new self($view, $data);
	}
	
	/**
	 * @param string $view
	 * @param array  $data
	 */
	public function __construct($view, $data = array()) {
		$this->path = WORDFENCE_LS_PATH . 'views';
		$this->view = $view;
		$this->data = $data;
	}
	
	/**
	 * @return string
	 * @throws ViewNotFoundException
	 */
	public function render() {
		$view = preg_replace('/\.{2,}/', '.', $this->view);
		$path = $this->path . '/' . $view . $this->file_extension;
		if (!file_exists($path)) {
			throw new ViewNotFoundException('The view ' . $path . ' does not exist or is not readable.');
		}
		
		extract($this->data, EXTR_SKIP);
		
		ob_start();
		/** @noinspection PhpIncludeInspection */
		include $path;
		return ob_get_clean();
	}
	
	/**
	 * @return string
	 */
	public function __toString() {
		try {
			return $this->render();
		}
		catch (ViewNotFoundException $e) {
			return defined('WP_DEBUG') && WP_DEBUG ? $e->getMessage() : 'The view could not be loaded.';
		}
	}
	
	/**
	 * @param $data
	 * @return $this
	 */
	public function addData($data) {
		$this->data = array_merge($data, $this->data);
		return $this;
	}
	
	/**
	 * @return array
	 */
	public function getData() {
		return $this->data;
	}
	
	/**
	 * @param array $data
	 * @return $this
	 */
	public function setData($data) {
		$this->data = $data;
		return $this;
	}
	
	/**
	 * @return string
	 */
	public function getView() {
		return $this->view;
	}
	
	/**
	 * @param string $view
	 * @return $this
	 */
	public function setView($view) {
		$this->view = $view;
		return $this;
	}
	
	/**
	 * Prevent POP
	 */
	public function __wakeup() {
		$this->path = WORDFENCE_LS_PATH . 'views';
		$this->view = null;
		$this->data = array();
		$this->file_extension = '.php';
	}
}

class ViewNotFoundException extends \Exception { }
modules/login-security/classes/model/request.php000064400000013405150755146440016145 0ustar00<?php

namespace WordfenceLS;

class Model_Request {
	const IP_SOURCE_AUTOMATIC = '';
	const IP_SOURCE_REMOTE_ADDR = 'REMOTE_ADDR';
	const IP_SOURCE_X_FORWARDED_FOR = 'HTTP_X_FORWARDED_FOR';
	const IP_SOURCE_X_REAL_IP = 'HTTP_X_REAL_IP';
	
	private $_cachedIP;
	
	public static function current() {
		return new Model_Request();
	}
	
	public function detected_ip_preview($source = null, $trusted_proxies = null) {
		if ($source === null) {
			$source = Controller_Settings::shared()->get(Controller_Settings::OPTION_IP_SOURCE);
		}
		
		$record = $this->_ip($source);
		if (is_array($record)) {
			list($ip, $variable) = $record;
			if (isset($_SERVER[$variable]) && strpos($_SERVER[$variable], ',') !== false) {
				$items = preg_replace('/[\s,]/', '', explode(',', $_SERVER[$variable]));
				$output = '';
				foreach ($items as $i) {
					if ($ip == $i) {
						$output .= ', <strong>' . esc_html($i) . '</strong>';
					}
					else {
						$output .= ', ' . esc_html($i);
					}
				}
				
				return substr($output, 2);
			}
			return '<strong>' . esc_html($ip) . '</strong>';
		}
		return false;
	}
	
	public function ip($refreshCache = false) {
		if (WORDFENCE_LS_FROM_CORE) {
			return \wfUtils::getIP($refreshCache);
		}
		
		if (!isset($this->_cachedIP) || $refreshCache) {
			$this->_cachedIP = $this->_ip(Controller_Settings::shared()->get(Controller_Settings::OPTION_IP_SOURCE), Controller_Settings::shared()->trusted_proxies());
		}
		
		return $this->_cachedIP[0]; //Format is array(<text IP>, <field found in>)
	}
	
	public function ip_for_field($source, $trusted_proxies) {
		return $this->_ip($source, $trusted_proxies);
	}
	
	protected function _ip($source = null, $trusted_proxies = null) {
		if ($source === null) {
			$source = Controller_Settings::shared()->get(Controller_Settings::OPTION_IP_SOURCE);
		}
		
		$possible_ips = $this->_possible_ips($source);
		if ($trusted_proxies === null) { $trusted_proxies = array(); }
		return $this->_find_preferred_ip($possible_ips, $trusted_proxies);
	}
	
	protected function _possible_ips($source = null) {
		$defaultIP = (is_array($_SERVER) && isset($_SERVER[self::IP_SOURCE_REMOTE_ADDR])) ? array($_SERVER[self::IP_SOURCE_REMOTE_ADDR], self::IP_SOURCE_REMOTE_ADDR) : array('127.0.0.1', self::IP_SOURCE_REMOTE_ADDR);
		
		if ($source) {
			if ($source == self::IP_SOURCE_REMOTE_ADDR) {
				return array($defaultIP);
			}
			
			$check = array(
				array((isset($_SERVER[$source]) ? $_SERVER[$source] : ''), $source),
				$defaultIP,
			);
			return $check;
		}
		
		$check = array($defaultIP);
		if (isset($_SERVER[self::IP_SOURCE_X_FORWARDED_FOR])) {
			$check[] = array($_SERVER[self::IP_SOURCE_X_FORWARDED_FOR], self::IP_SOURCE_X_FORWARDED_FOR);
		}
		if (isset($_SERVER[self::IP_SOURCE_X_REAL_IP])) {
			$check[] = array($_SERVER[self::IP_SOURCE_X_REAL_IP], self::IP_SOURCE_X_REAL_IP);
		}
		return $check;
	}
	
	protected function _find_preferred_ip($possible_ips, $trusted_proxies) {
		$privates = array();
		foreach ($possible_ips as $entry) {
			list($value, $var) = $entry;
			if (is_array($value)) { // An array of IPs
				foreach ($value as $index => $j) {
					if (!Model_IP::is_valid_ip($j)) {
						$j = preg_replace('/:\d+$/', '', $j); //Strip off port if present
					}
					
					if (Model_IP::is_valid_ip($j)) {
						if (Model_IP::is_ipv6_mapped_ipv4($j)) {
							$j = Model_IP::inet_ntop(Model_IP::inet_pton($j));
						}
						
						foreach ($trusted_proxies as $proxy) {
							if (!empty($proxy)) {
								if (Controller_Whitelist::shared()->ip_in_range($j, $proxy) && $index < count($value) - 1) {
									continue 2;
								}
							}
						}
						
						if (filter_var($j, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_IPV6 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) === false) {
							$privates[] = array($j, $var);
						}
						else {
							return array($j, $var);
						}
					}
				}
				continue;
			}
			
			$skipToNext = false;
			$separators = array(',', ' ', "\t");
			foreach ($separators as $char) { // A list of IPs separated by <separator>: 192.0.2.15,192.0.2.35,192.0.2.254
				if (strpos($value, $char) !== false) {
					$sp = explode($char, $value);
					$sp = array_reverse($sp);
					foreach ($sp as $index => $j) {
						$j = trim($j);
						if (!Model_IP::is_valid_ip($j)) {
							$j = preg_replace('/:\d+$/', '', $j); //Strip off port
						}
						
						if (Model_IP::is_valid_ip($j)) {
							if (Model_IP::is_ipv6_mapped_ipv4($j)) {
								$j = Model_IP::inet_ntop(Model_IP::inet_pton($j));
							}
							
							foreach ($trusted_proxies as $proxy) {
								if (!empty($proxy)) {
									if (Controller_Whitelist::shared()->ip_in_range($j, $proxy) && $index < count($sp) - 1) {
										continue 2;
									}
								}
							}
							
							if (filter_var($j, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_IPV6 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) === false) {
								$privates[] = array($j, $var);
							}
							else {
								return array($j, $var);
							}
						}
					}
					$skipToNext = true;
					break;
				}
			}
			if ($skipToNext) { continue; } //Skip to next item because this one had a comma/space/tab, but we didn't find a valid, non-private address
			
			// A literal IP
			if (!Model_IP::is_valid_ip($value)) {
				$value = preg_replace('/:\d+$/', '', $value); //Strip off port
			}
			
			if (Model_IP::is_valid_ip($value)) {
				if (Model_IP::is_ipv6_mapped_ipv4($value)) {
					$value = Model_IP::inet_ntop(Model_IP::inet_pton($value));
				}
				
				if (filter_var($value, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_IPV6 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) === false) {
					$privates[] = array($value, $var);
				}
				else {
					return array($value, $var);
				}
			}
		}
		
		if (count($privates) > 0) {
			return $privates[0];
		}
		
		return false;
	}
}modules/login-security/classes/.htaccess000064400000000543150755146440014441 0ustar00<IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{REQUEST_URI} \.php$
        RewriteRule .* - [F,L,NC]
</IfModule>
<IfModule !mod_rewrite.c>
	<FilesMatch "\.php$">
	<IfModule mod_authz_core.c>
		Require all denied
	</IfModule>
	<IfModule !mod_authz_core.c>
		Order deny,allow
		Deny from all
	</IfModule>
	</FilesMatch>
</IfModule>
modules/login-security/classes/controller/permissions.php000064400000033435150755146440020120 0ustar00<?php

namespace WordfenceLS;

class Controller_Permissions {
	const CAP_ACTIVATE_2FA_SELF = 'wf2fa_activate_2fa_self'; //Activate 2FA on its own user account
	const CAP_ACTIVATE_2FA_OTHERS = 'wf2fa_activate_2fa_others'; //Activate 2FA on user accounts other than its own
	const CAP_MANAGE_SETTINGS = 'wf2fa_manage_settings'; //Edit settings for the plugin
	
	const SETTING_LAST_ROLE_CHANGE = 'wfls_last_role_change';
	const SETTING_LAST_ROLE_SYNC = 'wfls_last_role_sync';

	private $network_roles = array();
	private $multisite_roles = null;
	
	/**
	 * Returns the singleton Controller_Permissions.
	 *
	 * @return Controller_Permissions
	 */
	public static function shared() {
		static $_shared = null;
		if ($_shared === null) {
			$_shared = new Controller_Permissions();
		}
		return $_shared;
	}
	
	public function install() {
		$this->_on_role_change();
		if (is_multisite()) {
			//Super Admin automatically gets all capabilities, so we don't need to explicitly add them
			$this->_add_cap_multisite('administrator', self::CAP_ACTIVATE_2FA_SELF, $this->get_primary_sites());
		}
		else {
			$this->_add_cap('administrator', self::CAP_ACTIVATE_2FA_SELF);
			$this->_add_cap('administrator', self::CAP_ACTIVATE_2FA_OTHERS);
			$this->_add_cap('administrator', self::CAP_MANAGE_SETTINGS);
		}
	}
	
	public function uninstall() {
		if (Controller_Settings::shared()->get_bool(Controller_Settings::OPTION_DELETE_ON_DEACTIVATION)) {
			if (is_multisite()) {
				$sites = $this->get_sites();
				foreach ($sites as $id) {
					switch_to_blog($id);
					wp_clear_scheduled_hook('wordfence_ls_role_sync_cron');
					restore_current_blog();
				}
			}
		}
	}
	
	public static function _init_actions() {
		add_action('wordfence_ls_role_sync_cron', array(Controller_Permissions::shared(), '_role_sync_cron'));
	}

	public function init() {
		global $wp_version;
		if (is_multisite()) {
			if (version_compare($wp_version, '5.1.0', '>=')) {
				add_action('wp_initialize_site', array($this, '_wp_initialize_site'), 99);
			}
			else {
				add_action('wpmu_new_blog', array($this, '_wpmu_new_blog'), 10, 5);
			}
			
			add_action('init', array($this, '_validate_role_sync_cron'), 1);
		}
	}
	
	/**
	 * Syncs roles to the new multisite blog.
	 * 
	 * @param $site_id
	 * @param $user_id
	 * @param $domain
	 * @param $path
	 * @param $network_id
	 */
	public function _wpmu_new_blog($site_id, $user_id, $domain, $path, $network_id) {
		$this->sync_roles($network_id, $site_id);
	}
	
	/**
	 * Syncs roles to the new multisite blog. 
	 * 
	 * @param $new_site
	 */
	public function _wp_initialize_site($new_site) {
		$this->sync_roles($new_site->site_id, $new_site->blog_id);
	}
	
	/**
	 * Creates the hourly cron (if needed) that handles syncing the roles/permissions for the current blog. Because crons
	 * are specific to individual blogs on multisite rather than to the network itself, this will end up creating a cron
	 * for every member blog of the multisite.
	 * 
	 * If there is a new role change since the last sync, a one-off cron will be fired to sync it sooner than the normal
	 * recurrence period.
	 * 
	 * Multisite only.
	 * 
	 */
	public function _validate_role_sync_cron() {
		if (!wp_next_scheduled('wordfence_ls_role_sync_cron')) {
			wp_schedule_event(time(), 'hourly', 'wordfence_ls_role_sync_cron');
		}
		else {
			$last_role_change = (int) get_site_option(self::SETTING_LAST_ROLE_CHANGE, 0);
			if ($last_role_change >= get_option(self::SETTING_LAST_ROLE_SYNC, 0)) {
				wp_schedule_single_event(time(), 'wordfence_ls_role_sync_cron'); //Force queue an update in case the normal cron is still a while out
			}
		}
	}
	
	/**
	 * Handles syncing the roles/permissions for the current blog when the cron fires.
	 */
	public function _role_sync_cron() {
		$last_role_change = (int) get_site_option(self::SETTING_LAST_ROLE_CHANGE, 0);
		if ($last_role_change === 0) {
			$this->_on_role_change();
		}
		
		if ($last_role_change >= get_option(self::SETTING_LAST_ROLE_SYNC, 0)) {
			$network_id = get_current_site()->id;
			$blog_id = get_current_blog_id();
			$this->sync_roles($network_id, $blog_id);
			update_option(self::SETTING_LAST_ROLE_SYNC, time());
		}
	}
	
	private function _on_role_change() {
		update_site_option(self::SETTING_LAST_ROLE_CHANGE, time());
	}

	/**
	 * Get the primary site ID for a given network
	 */
	private function get_primary_site_id($network_id) {
		global $wpdb;
		if(function_exists('get_network')){
			$network=get_network($network_id); //TODO: Support multi-network throughout plugin
			return (int)$network->blog_id;
		}
		else{
			return (int)$wpdb->get_var($wpdb->prepare("SELECT blogs.blog_id FROM {$wpdb->site} sites JOIN {$wpdb->blogs} blogs ON blogs.site_id=sites.id AND blogs.path=sites.path WHERE sites.id=%d", $network_id));
		}
	}

	/**
	 * Get all primary sites in a multi-network setup
	 */
	private function get_primary_sites() {
		global $wpdb;
		if(function_exists('get_networks')){
			return array_map(function($network){ return $network->blog_id; }, get_networks());
		}
		else{
			return $wpdb->get_col("SELECT blogs.blog_id FROM {$wpdb->site} sites JOIN {$wpdb->blogs} blogs ON blogs.site_id=sites.id AND blogs.path=sites.path");
		}
	}
	
	/**
	 * Returns an array of all multisite `blog_id` values, optionally limiting the result to the subset between 
	 * ($from, $from + $count].
	 * 
	 * @param int $from
	 * @param int $count
	 * @return array
	 */
	private function get_sites($from = 0, $count = 0) {
		global $wpdb;
		if ($from === 0 && $count === 0) {
			return $wpdb->get_col("SELECT `blog_id` FROM `{$wpdb->blogs}` WHERE `deleted` = 0 ORDER BY blog_id ");
		}
		return $wpdb->get_col($wpdb->prepare("SELECT `blog_id` FROM `{$wpdb->blogs}` WHERE `deleted` = 0 AND blog_id > %d ORDER BY blog_id LIMIT %d", $from, $count));
	}

	/**
	 * Sync role capabilities from the default site to a newly added site
	 * @param int $network_id the relevant network
	 * @param int $site_id the newly added site(blog)
	 */
	private function sync_roles($network_id, $site_id){
		if(array_key_exists($network_id, $this->network_roles)){
			$current_roles=$this->network_roles[$network_id];
		}
		else{
			$current_roles=$this->_wp_roles($this->get_primary_site_id($network_id));
			$this->network_roles[$network_id]=$current_roles;
		}
		$new_site_roles=$this->_wp_roles($site_id);
		$capabilities=array(
			self::CAP_ACTIVATE_2FA_SELF,
			self::CAP_ACTIVATE_2FA_OTHERS,
			self::CAP_MANAGE_SETTINGS
		);
		foreach($current_roles->get_names() as $role_name=>$role_label){
			if($new_site_roles->get_role($role_name)===null)
				$new_site_roles->add_role($role_name, $role_label);
			$role=$current_roles->get_role($role_name);
			foreach($capabilities as $cap){
				if($role->has_cap($cap)){
					$this->_add_cap_multisite($role_name, $cap, array($site_id));
				}
				else{
					$this->_remove_cap_multisite($role_name, $cap, array($site_id));
				}
			}
		}
	}
	
	public function allow_2fa_self($role_name) {
		$this->_on_role_change();
		if (is_multisite()) {
			return $this->_add_cap_multisite($role_name, self::CAP_ACTIVATE_2FA_SELF, $this->get_primary_sites());
		}
		else {
			return $this->_add_cap($role_name, self::CAP_ACTIVATE_2FA_SELF);
		}
	}
	
	public function disallow_2fa_self($role_name) {
		$this->_on_role_change();
		if (is_multisite()) {
			return $this->_remove_cap_multisite($role_name, self::CAP_ACTIVATE_2FA_SELF, $this->get_primary_sites());
		}
		else {
			if ($role_name == 'administrator') {
				return true;
			}
			return $this->_remove_cap($role_name, self::CAP_ACTIVATE_2FA_SELF);
		}
	}
	
	public function can_manage_settings($user = false) {
		if ($user === false) {
			$user = wp_get_current_user();
		}
		
		if (!($user instanceof \WP_User)) {
			return false;
		}
		return $user->has_cap(self::CAP_MANAGE_SETTINGS);
	}

	public function can_role_manage_settings($role) {
		if (is_string($role)) {
			$role = get_role($role);
		}
		if ($role)
			return $role->has_cap(self::CAP_MANAGE_SETTINGS);
		return false;
	}
	
	private function _wp_roles($site_id = null) {
		require(ABSPATH . 'wp-includes/version.php'); /** @var string $wp_version */
		if (version_compare($wp_version, '4.9', '>=')) {
			return new \WP_Roles($site_id);
		}
		
		//\WP_Roles in WP < 4.9 initializes based on the current blog ID
		if (is_multisite()) {
			switch_to_blog($site_id);
		}
		$wp_roles = new \WP_Roles();
		if (is_multisite()) {
			restore_current_blog();
		}
		return $wp_roles;
	}
	
	private function _add_cap_multisite($role_name, $cap, $blog_ids=null) {
		if ($role_name === 'super-admin')
			return true;
		global $wpdb;
		$blogs = $blog_ids===null?$wpdb->get_col("SELECT `blog_id` FROM `{$wpdb->blogs}` WHERE `deleted` = 0"):$blog_ids;
		$added = false;
		foreach ($blogs as $id) {
			$wp_roles = $this->_wp_roles($id);
			switch_to_blog($id);
			$added = $this->_add_cap($role_name, $cap, $wp_roles) || $added;
			restore_current_blog();
		}
		return $added;
	}
	
	private function _add_cap($role_name, $cap, $wp_roles = null) {
		if ($wp_roles === null) { $wp_roles = $this->_wp_roles(); }
		$role = $wp_roles->get_role($role_name);
		if ($role === null) {
			return false;
		}
		
		$wp_roles->add_cap($role_name, $cap);
		return true;
	}
	
	private function _remove_cap_multisite($role_name, $cap, $blog_ids=null) {
		if ($role_name === 'super-admin')
			return false;
		global $wpdb;
		$blogs = $blog_ids===null?$wpdb->get_col("SELECT `blog_id` FROM `{$wpdb->blogs}` WHERE `deleted` = 0"):$blog_ids;
		$removed = false;
		foreach ($blogs as $id) {
			$wp_roles = $this->_wp_roles($id);
			switch_to_blog($id);
			$removed = $this->_remove_cap($role_name, $cap, $wp_roles) || $removed;
			restore_current_blog();
		}
		return $removed;
	}
	
	private function _remove_cap($role_name, $cap, $wp_roles = null) {
		if ($wp_roles === null) { $wp_roles = $this->_wp_roles(); }
		$role = $wp_roles->get_role($role_name);
		if ($role === null) {
			return false;
		}
		
		$wp_roles->remove_cap($role_name, $cap);
		return true;
	}
	
	/**
	 * Loads the role capability info for the multisite blog IDs in `$includedSites` and appends it to 
	 * `$this->multisite_roles`. Role capability data that is already loaded will be skipped.
	 * 
	 * @param array $includeSites An array of multisite blog IDs to load.
	 */
	private function _load_multisite_roles($includeSites) {
		global $wpdb;
		
		$needed = array_diff($includeSites, array_keys($this->multisite_roles));
		if (empty($needed)) {
			return;
		}
		
		$suffix = "user_roles";
		$queries = array();
		foreach ($needed as $b) {
			$tables = $wpdb->tables('blog', true, $b);
			$queries[] = "SELECT CAST(option_name AS CHAR UNICODE) AS option_name, CAST(option_value AS CHAR UNICODE) AS option_value FROM {$tables['options']} WHERE option_name LIKE '%{$suffix}'";
		}
		
		$chunks = array_chunk($queries, 50);
		$options = array();
		foreach ($chunks as $c) {
			$rows = $wpdb->get_results(implode(' UNION ', $c), OBJECT_K);
			foreach ($rows as $row) {
				$options[$row->option_name] = $row->option_value;
			}
		}
		
		$extractor = new Utility_MultisiteConfigurationExtractor($wpdb->base_prefix, $suffix);
		foreach ($extractor->extract($options) as $site => $option) {
			$this->multisite_roles[$site] = maybe_unserialize($option);
		}
	}
	
	/**
	 * Returns an array of multisite roles. This is guaranteed to include the multisite blogs in `$includeSites` but may 
	 * include others from earlier calls that are cached.
	 * 
	 * @param array $includeSites An array for multisite blog IDs.
	 * @return array
	 */
	public function get_multisite_roles($includeSites) {
		if ($this->multisite_roles === null) {
			$this->multisite_roles = array();
		}
		
		$this->_load_multisite_roles($includeSites);
		return $this->multisite_roles;
	}
	
	/**
	 * Returns the sites + roles that a user has on multisite. The structure of the returned array has the keys as the 
	 * individual site IDs and the associated value as an array of the user's capabilities on that site.
	 * 
	 * @param WP_User $user
	 * @return array
	 */
	public function get_multisite_roles_for_user($user) {
		global $wpdb;
		$roles = array();
		$meta = get_user_meta($user->ID);
		if (is_array($meta)) {
			$extractor = new Utility_MultisiteConfigurationExtractor($wpdb->base_prefix, 'capabilities');
			foreach ($extractor->extract($meta) as $site => $capabilities) {
				if (!is_array($capabilities)) { continue; }
				$capabilities = array_map('maybe_unserialize', $capabilities);
				$localRoles = array();
				foreach ($capabilities as $entry) {
					foreach ($entry as $role => $state) {
						if ($state)
							$localRoles[$role] = true;
					}
				}
				$roles[$site] = array_keys($localRoles);
			}
		}
		return $roles;
	}

	public function get_all_roles($user) {
		global $wpdb;
		if (is_multisite()) {
			$roles = array();
			if (is_super_admin($user->ID)) {
				$roles['super-admin'] = true;
			}
			foreach ($this->get_multisite_roles_for_user($user) as $site => $siteRoles) {
				foreach ($siteRoles as $role) {
					$roles[$role] = true;
				}
			}
			return array_keys($roles);
		}
		else {
			return $user->roles;
		}
	}

	public function does_user_have_multisite_capability($user, $capability) {
		$userRoles = $this->get_multisite_roles_for_user($user);
		if (in_array('super-admin', $userRoles)) {
			return true;
		}
		
		$blogRoles = $this->get_multisite_roles(array_keys($userRoles));
		$blogs = get_blogs_of_user($user->ID);
		foreach ($blogs as $blogId => $blog) {
			$blogId = (int) $blogId;
			if (!array_key_exists($blogId, $userRoles) || !array_key_exists($blogId, $blogRoles)) { continue; } //Blog with ID `$blogId` should be ignored
			foreach ($userRoles[$blogId] as $userRole) {
				if (!array_key_exists($userRole, $blogRoles[$blogId]) || !array_key_exists('capabilities', $blogRoles[$blogId][$userRole])) { continue; } //Sanity check for needed keys, should not happen
				
				$capabilities = $blogRoles[$blogId][$userRole]['capabilities'];
				if (array_key_exists($capability, $capabilities) && $capabilities[$capability]) { return true; }
			}
		}
		return false;
	}
}modules/login-security/classes/controller/totp.php000064400000012121150755146440016520 0ustar00<?php

namespace WordfenceLS;

class Controller_TOTP {
	const TIME_WINDOW_LENGTH = 30;
	
	/**
	 * Returns the singleton Controller_TOTP.
	 *
	 * @return Controller_TOTP
	 */
	public static function shared() {
		static $_shared = null;
		if ($_shared === null) {
			$_shared = new Controller_TOTP();
		}
		return $_shared;
	}
	
	public function init() {
		
	}
	
	/**
	 * Activates a user with the given TOTP parameters.
	 * 
	 * @param \WP_User $user
	 * @param string $secret The secret as a hex string.
	 * @param string[] $recovery An array of recovery codes as hex strings.
	 * @param bool|int $vtime The timestamp of the verification code or false to use the current timestamp.
	 */
	public function activate_2fa($user, $secret, $recovery, $vtime = false) {
		if ($vtime === false) {
			$vtime = Controller_Time::time();
		}
		
		global $wpdb;
		$table = Controller_DB::shared()->secrets;
		$wpdb->query($wpdb->prepare("INSERT INTO `{$table}` (`user_id`, `secret`, `recovery`, `ctime`, `vtime`, `mode`) VALUES (%d, %s, %s, UNIX_TIMESTAMP(), %d, 'authenticator')", $user->ID, Model_Compat::hex2bin($secret), implode('', array_map(function($r) { return Model_Compat::hex2bin($r); }, $recovery)), $vtime));
	}
	
	/**
	 * Validates the 2FA (or recovery) code for the given user. This will return `null` if the user does not have 2FA 
	 * enabled. This check will mark the code as used, preventing its use again.
	 * 
	 * @param \WP_User $user
	 * @param string $code
	 * @return bool|null Returns null if the user does not have 2FA enabled, false if the code is invalid, and true if valid.
	 */
	public function validate_2fa($user, $code, $update = true) {
		global $wpdb;
		$table = Controller_DB::shared()->secrets;
		$record = $wpdb->get_row($wpdb->prepare("SELECT * FROM `{$table}` WHERE `user_id` = %d FOR UPDATE", $user->ID), ARRAY_A);
		if (!$record) {
			return null;
		}
		
		if (preg_match('/^(?:[a-f0-9]{4}\s*){4}$/i', $code)) { //Recovery code
			$code = strtolower(preg_replace('/\s/i', '', $code));
			$recoveryCodes = str_split(strtolower(bin2hex($record['recovery'])), 16);
			
			$index = array_search($code, $recoveryCodes);
			if ($index !== false) {
				if ($update) {
					unset($recoveryCodes[$index]);
					$updatedRecoveryCodes = implode('', $recoveryCodes);
					$wpdb->query($wpdb->prepare("UPDATE `{$table}` SET `recovery` = X%s WHERE `id` = %d", $updatedRecoveryCodes, $record['id']));
				}
				$wpdb->query('COMMIT');
				return true;
			}
		}
		else if (preg_match('/^(?:[0-9]{3}\s*){2}$/i', $code)) { //TOTP code
			$code = preg_replace('/\s/i', '', $code);
			$secret = bin2hex($record['secret']);
			
			$matches = $this->check_code($secret, $code, floor($record['vtime'] / self::TIME_WINDOW_LENGTH));
			if ($matches !== false) {
				if ($update) {
					$wpdb->query($wpdb->prepare("UPDATE `{$table}` SET `vtime` = %d WHERE `id` = %d", $matches, $record['id']));
				}
				$wpdb->query('COMMIT');
				return true;
			}
		}
		
		$wpdb->query('ROLLBACK');
		return false;
	}
	
	/**
	 * Checks whether or not the code is valid for the given secret. If it is, it returns the time window (as a timestamp)
	 * that matched. If no time windows are provided, it checks the current and one on each side.
	 * 
	 * @param string $secret The secret as a hex string.
	 * @param string $code The code.
	 * @param null|int The last-used time window (as a timestamp).
	 * @param null|array $windows An array of time windows or null to use the default.
	 * @return bool|int The time window if matches, otherwise false.
	 */
	public function check_code($secret, $code, $previous = null, $windows = null) {
		$timeCode = floor(Controller_Time::time() / self::TIME_WINDOW_LENGTH);
		
		if ($windows === null) {
			$windows = array();
			$validRange = array(-1, 1); //90 second range for authenticator
			
			$lowRange = $validRange[0];
			$highRange = $validRange[1];
			for ($i = 0; $i >= $lowRange; $i--) {
				$windows[] = $timeCode + $i;
			}
			for ($i = 1; $i <= $highRange; $i++) {
				$windows[] = $timeCode + $i;
			}
		}
		
		foreach ($windows as $w) {
			if ($previous !== null && $previous >= $w) {
				continue;
			}
			
			$expectedCode = $this->_generate_totp($secret, dechex($w));
			if (hash_equals($expectedCode, $code)) {
				return $w * self::TIME_WINDOW_LENGTH;
			}
		}
		
		return false;
	}
	
	/**
	 * Generates a TOTP value using the provided parameters.
	 *
	 * @param $key The key in hex.
	 * @param $time The desired time code in hex.
	 * @param int $digits The number of digits.
	 * @return string The TOTP value.
	 */
	private function _generate_totp($key, $time, $digits = 6)
	{
		$time = Model_Compat::hex2bin(str_pad($time, 16, '0', STR_PAD_LEFT));
		$key = Model_Compat::hex2bin($key);
		$hash = hash_hmac('sha1', $time, $key);
		
		$offset = hexdec(substr($hash, -2)) & 0xf;
		$intermediate = (	((hexdec(substr($hash, $offset * 2, 2)) & 0x7f) << 24) |
			((hexdec(substr($hash, ($offset + 1) * 2, 2)) & 0xff) << 16) |
			((hexdec(substr($hash, ($offset + 2) * 2, 2)) & 0xff) << 8) |
			((hexdec(substr($hash, ($offset + 3) * 2, 2)) & 0xff))
		);
		$otp = $intermediate % pow(10, $digits);
		
		return str_pad("{$otp}", $digits, '0', STR_PAD_LEFT);
	}
}modules/login-security/classes/controller/db.php000064400000011547150755146440016132 0ustar00<?php

namespace WordfenceLS;

use RuntimeException;

class Controller_DB {
	const TABLE_2FA_SECRETS = 'wfls_2fa_secrets';
	const TABLE_SETTINGS = 'wfls_settings';
	const TABLE_ROLE_COUNTS = 'wfls_role_counts';
	const TABLE_ROLE_COUNTS_TEMPORARY = 'wfls_role_counts_temporary';

	const SCHEMA_VERSION = 2;
	
	/**
	 * Returns the singleton Controller_DB.
	 *
	 * @return Controller_DB
	 */
	public static function shared() {
		static $_shared = null;
		if ($_shared === null) {
			$_shared = new Controller_DB();
		}
		return $_shared;
	}
	
	/**
	 * Returns the table prefix for the main site on multisites and the site itself on single site installations.
	 *
	 * @return string
	 */
	public static function network_prefix() {
		global $wpdb;
		return $wpdb->base_prefix;
	}
	
	/**
	 * Returns the table with the site (single site installations) or network (multisite) prefix added.
	 *
	 * @param string $table
	 * @return string
	 */
	public static function network_table($table) {
		return self::network_prefix() . $table;
	}
	
	public function __get($key) {
		switch ($key) {
			case 'secrets':
				return self::network_table(self::TABLE_2FA_SECRETS);
			case 'settings':
				return self::network_table(self::TABLE_SETTINGS);
			case 'role_counts':
				return self::network_table(self::TABLE_ROLE_COUNTS);
			case 'role_counts_temporary':
				return self::network_table(self::TABLE_ROLE_COUNTS_TEMPORARY);
		}
		
		throw new \OutOfBoundsException('Unknown key: ' . $key);
	}
	
	public function install() {
		$this->_create_schema();
		
		global $wpdb;
		$table = $this->secrets;
		$wpdb->query($wpdb->prepare("UPDATE `{$table}` SET `vtime` = LEAST(`vtime`, %d)", Controller_Time::time()));
	}
	
	public function uninstall() {
		$tables = array(self::TABLE_2FA_SECRETS, self::TABLE_SETTINGS, self::TABLE_ROLE_COUNTS);
		foreach ($tables as $table) {
			global $wpdb;
			$wpdb->query('DROP TABLE IF EXISTS `' . self::network_table($table) . '`');
		}
	}

	private function create_table($name, $definition, $temporary = false) {
		global $wpdb;
		if (is_array($definition)) {
			foreach ($definition as $attempt) {
				if ($this->create_table($name, $attempt, $temporary))
					return true;
			}
			return false;
		}
		else {
			return $wpdb->query('CREATE ' . ($temporary ? 'TEMPORARY ' : '') . 'TABLE IF NOT EXISTS `' . self::network_table($name) . '` ' . $definition);
		}
	}

	private function create_temporary_table($name, $definition) {
		if (Controller_Settings::shared()->get_bool(Controller_Settings::OPTION_DISABLE_TEMPORARY_TABLES))
			return false;
		if ($this->create_table($name, $definition, true))
			return true;
		Controller_Settings::shared()->set(Controller_Settings::OPTION_DISABLE_TEMPORARY_TABLES, true);
		return false;
	}

	private function get_role_counts_table_definition($engine = null) {
		$engineClause = $engine === null ? '' : "ENGINE={$engine}";
		return <<<SQL
				(
				serialized_roles VARBINARY(255) NOT NULL,
				two_factor_inactive TINYINT(1) NOT NULL,
				user_count BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
				PRIMARY KEY (serialized_roles, two_factor_inactive)
				) {$engineClause};
SQL;
	}

	private function get_role_counts_table_definition_options() {
		return array(
			$this->get_role_counts_table_definition('MEMORY'),
			$this->get_role_counts_table_definition('MyISAM'),
			$this->get_role_counts_table_definition()
		);
	}
	
	protected function _create_schema() {
		$tables = array(
			self::TABLE_2FA_SECRETS => '(
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `user_id` bigint(20) unsigned NOT NULL,
  `secret` tinyblob NOT NULL,
  `recovery` blob NOT NULL,
  `ctime` int(10) unsigned NOT NULL,
  `vtime` int(10) unsigned NOT NULL,
  `mode` enum(\'authenticator\') NOT NULL DEFAULT \'authenticator\',
  PRIMARY KEY (`id`),
  KEY `user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;',
			self::TABLE_SETTINGS => '(
  `name` varchar(191) NOT NULL DEFAULT \'\',
  `value` longblob,
  `autoload` enum(\'no\',\'yes\') NOT NULL DEFAULT \'yes\',
  PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;',
			self::TABLE_ROLE_COUNTS => $this->get_role_counts_table_definition_options()
		);
		
		foreach ($tables as $table => $def) {
			$this->create_table($table, $def);
		}

		Controller_Settings::shared()->set(Controller_Settings::OPTION_SCHEMA_VERSION, self::SCHEMA_VERSION);
	}

	public function require_schema_version($version) {
		$current = Controller_Settings::shared()->get_int(Controller_Settings::OPTION_SCHEMA_VERSION);
		if ($current < $version) {
			$this->install();
		}
	}

	public function query($query) {
		global $wpdb;
		if ($wpdb->query($query) === false)
			throw new RuntimeException("Failed to execute query: {$query}");
	}

	public function get_wpdb() {
		global $wpdb;
		return $wpdb;
	}

	public function create_temporary_role_counts_table() {
		return $this->create_temporary_table(self::TABLE_ROLE_COUNTS_TEMPORARY, $this->get_role_counts_table_definition_options());
	}

}modules/login-security/classes/controller/support.php000064400000004212150755146440017250 0ustar00<?php

namespace WordfenceLS;

class Controller_Support {
	const ITEM_INDEX = 'index';
	
	const ITEM_CHANGELOG = 'changelog';
	
	const ITEM_VERSION_WORDPRESS = 'version-wordpress';
	const ITEM_VERSION_PHP = 'version-php';
	const ITEM_VERSION_OPENSSL = 'version-ssl';
	
	const ITEM_GDPR = 'gdpr';
	const ITEM_GDPR_DPA = 'gdpr-dpa';
	
	const ITEM_MODULE_LOGIN_SECURITY = 'module-login-security';
	const ITEM_MODULE_LOGIN_SECURITY_2FA = 'module-login-security-2fa';
	const ITEM_MODULE_LOGIN_SECURITY_2FA_APPS = 'module-login-security-2fa-apps';
	const ITEM_MODULE_LOGIN_SECURITY_CAPTCHA = 'module-login-security-captcha';
	const ITEM_MODULE_LOGIN_SECURITY_ROLES = 'module-login-security-roles';
	const ITEM_MODULE_LOGIN_SECURITY_OPTION_WOOCOMMERCE_ACCOUNT_INTEGRATION = 'module-login-security-option-woocommerce-account-integration';
	const ITEM_MODULE_LOGIN_SECURITY_OPTION_SHORTCODE = 'module-login-security-option-shortcode';
	const ITEM_MODULE_LOGIN_SECURITY_OPTION_STACK_UI_COLUMNS = 'module-login-security-option-stack-ui-columns';
	const ITEM_MODULE_LOGIN_SECURITY_2FA_NOTIFICATIONS = 'module-login-security-2fa-notifications';
	
	public static function esc_supportURL($item = self::ITEM_INDEX) {
		return esc_url(self::supportURL($item));
	}
	
	public static function supportURL($item = self::ITEM_INDEX) {
		$base = 'https://www.wordfence.com/help/';
		switch ($item) {
			case self::ITEM_INDEX:
				return 'https://www.wordfence.com/help/';
			
			//These all fall through to the query format
			
			case self::ITEM_VERSION_WORDPRESS:
			case self::ITEM_VERSION_PHP:
			case self::ITEM_VERSION_OPENSSL:
			
			case self::ITEM_GDPR:
			case self::ITEM_GDPR_DPA:
			
			case self::ITEM_MODULE_LOGIN_SECURITY:
			case self::ITEM_MODULE_LOGIN_SECURITY_2FA:
			case self::ITEM_MODULE_LOGIN_SECURITY_CAPTCHA:
			case self::ITEM_MODULE_LOGIN_SECURITY_ROLES:
			case self::ITEM_MODULE_LOGIN_SECURITY_OPTION_WOOCOMMERCE_ACCOUNT_INTEGRATION:
			case self::ITEM_MODULE_LOGIN_SECURITY_OPTION_SHORTCODE:
			case self::ITEM_MODULE_LOGIN_SECURITY_OPTION_STACK_UI_COLUMNS:
			case self::ITEM_MODULE_LOGIN_SECURITY_2FA_NOTIFICATIONS:
				return $base . '?query=' . $item;
		}
		
		return '';
	}
}modules/login-security/classes/controller/users.php000064400000111445150755146440016704 0ustar00<?php

namespace WordfenceLS;

use WordfenceLS\Crypto\Model_JWT;
use WordfenceLS\Crypto\Model_Symmetric;
use RuntimeException;

class Controller_Users {
	const RECOVERY_CODE_COUNT = 5;
	const RECOVERY_CODE_SIZE = 8;
	const SECONDS_PER_DAY = 86400;
	const META_KEY_GRACE_PERIOD_RESET = 'wfls-grace-period-reset';
	const META_KEY_GRACE_PERIOD_OVERRIDE = 'wfls-grace-period-override';
	const META_KEY_ALLOW_GRACE_PERIOD = 'wfls-allow-grace-period';
	const META_KEY_VERIFICATION_TOKENS = 'wfls-verification-tokens';
	const META_KEY_CAPTCHA_SCORES = 'wfls-captcha-scores';
	const VERIFICATION_TOKEN_BYTES = 64;
	const VERIFICATION_TOKEN_LIMIT = 5; //Max number of concurrent tokens
	const VERIFICATION_TOKEN_TRANSIENT_PREFIX = 'wfls_verify_';
	const CAPTCHA_SCORE_LIMIT = 2; //Max number of captcha scores cached
	const CAPTCHA_SCORE_TRANSIENT_PREFIX = 'wfls_captcha_';
	const CAPTCHA_SCORE_CACHE_DURATION = 60; //seconds
	const LARGE_USER_BASE_THRESHOLD = 1000;
	const TRUNCATED_ROLE_KEY = 1;
	
	/**
	 * Returns the singleton Controller_Users.
	 *
	 * @return Controller_Users
	 */
	public static function shared() {
		static $_shared = null;
		if ($_shared === null) {
			$_shared = new Controller_Users();
		}
		return $_shared;
	}
	
	public function init() {
		$this->_init_actions();
	}
	
	/**
	 * Imports the array of 2FA secrets. Users that do not currently exist or are disallowed from enabling 2FA are not imported.
	 *
	 * @param array $secrets An array of secrets in the format array(<user id> => array('secret' => <secret in hex>, 'recovery' => <recovery keys in hex>, 'ctime' => <timestamp>, 'vtime' => <timestamp>, 'type' => <type>), ...)
	 * @return int The number imported.
	 */
	public function import_2fa($secrets) {
		global $wpdb;
		$table = Controller_DB::shared()->secrets;
		
		$count = 0;
		foreach ($secrets as $id => $parameters) {
			$user = new \WP_User($id);
			if (!$user->exists() || !$this->can_activate_2fa($user) || $parameters['type'] != 'authenticator' || $this->has_2fa_active($user)) { continue; }
			$secret = Model_Compat::hex2bin($parameters['secret']);
			$recovery = Model_Compat::hex2bin($parameters['recovery']);
			$ctime = (int) $parameters['ctime'];
			$vtime = min((int) $parameters['vtime'], Controller_Time::time());
			$type = $parameters['type'];
			$wpdb->query($wpdb->prepare("INSERT INTO `{$table}` (`user_id`, `secret`, `recovery`, `ctime`, `vtime`, `mode`) VALUES (%d, %s, %s, %d, %d, %s)", $user->ID, $secret, $recovery, $ctime, $vtime, $type));
			$count++;
		}
		return $count;
	}
	
	public function admin_users() {
		//We should eventually allow for any user to be granted the manage capability, but we won't account for that now
		if (is_multisite()) {
			$logins = get_super_admins();
			$users = array();
			foreach ($logins as $l) {
				$user = new \WP_User(null, $l);
				if ($user->ID > 0) {
					$users[] = $user;
				}
			}
			return $users;
		}
		
		$query = new \WP_User_Query(http_build_query(array('role' => 'administrator', 'number' => -1)));
		return $query->get_results();
	}

	public function get_users_by_role($role, $limit = -1) {
		if ($role === 'super-admin') {
			$superAdmins = array();
			foreach(get_super_admins() as $username) {
				$superAdmins[] = new \WP_User($username);
			}
			return $superAdmins;
		}
		else {
			$query = new \WP_User_Query(http_build_query(array('role' => $role, 'number' => is_int($limit) ? $limit : -1)));
			return $query->get_results();
		}
	}
	
	/**
	 * Returns whether or not the user has a valid remembered device.
	 * 
	 * @param \WP_User $user
	 * @return bool
	 */
	public function has_remembered_2fa($user) {
		static $_cache = array();
		if (isset($_cache[$user->ID])) {
			return $_cache[$user->ID];
		}
		
		if (!Controller_Settings::shared()->get_bool(Controller_Settings::OPTION_REMEMBER_DEVICE_ENABLED)) {
			return false;
		}
		
		$maxExpiration = \WordfenceLS\Controller_Time::time() + Controller_Settings::shared()->get_int(Controller_Settings::OPTION_REMEMBER_DEVICE_DURATION);
		
		$encrypted = Model_Symmetric::encrypt((string) $user->ID);
		if (!$encrypted) { //Can't generate cookie key due to host failure
			return false;
		}
		
		foreach ($_COOKIE as $name => $value) {
			if (!preg_match('/^wfls\-remembered\-(.+)$/', $name, $matches)) {
				continue;
			}
			
			$jwt = Model_JWT::decode_jwt($value);
			if (!$jwt || !isset($jwt->payload['iv'])) {
				continue;
			}
			
			if (\WordfenceLS\Controller_Time::time() > min($jwt->expiration, $maxExpiration)) { //Either JWT is expired or the remember period was shortened since generating it
				continue;
			}
			
			$data = Model_JWT::base64url_convert_from($matches[1]);
			$iv = $jwt->payload['iv'];
			$encrypted = array('data' => $data, 'iv' => $iv);
			$userID = (int) Model_Symmetric::decrypt($encrypted);
			if ($userID != 0 && $userID == $user->ID) {
				$_cache[$user->ID] = true;
				return true;
			}
		}
		
		$_cache[$user->ID] = false;
		return false;
	}
	
	/**
	 * Sets the cookie needed to remember the 2FA status.
	 * 
	 * @param \WP_User $user
	 */
	public function remember_2fa($user) {
		if (!Controller_Settings::shared()->get_bool(Controller_Settings::OPTION_REMEMBER_DEVICE_ENABLED)) {
			return;
		}
		
		if ($this->has_remembered_2fa($user)) {
			return;
		}
		
		$encrypted = Model_Symmetric::encrypt((string) $user->ID);
		if (!$encrypted) { //Can't generate cookie key due to host failure
			return;
		}
		
		//Remove old cookies
		foreach ($_COOKIE as $name => $value) {
			if (!preg_match('/^wfls\-remembered\-(.+)$/', $name, $matches)) {
				continue;
			}
			setcookie($name, '', \WordfenceLS\Controller_Time::time() - 86400);
		}
		
		//Set the new one
		$expiration = \WordfenceLS\Controller_Time::time() + Controller_Settings::shared()->get_int(Controller_Settings::OPTION_REMEMBER_DEVICE_DURATION);
		$jwt = new Model_JWT(array('iv' => $encrypted['iv']), $expiration);
		$cookieName = 'wfls-remembered-' . Model_JWT::base64url_convert_to($encrypted['data']);
		$cookieValue = (string) $jwt;
		setcookie($cookieName, $cookieValue, $expiration, COOKIEPATH, COOKIE_DOMAIN, is_ssl(), true);
	}
	
	/**
	 * Returns whether or not 2FA can be activated on the given user.
	 *
	 * @param \WP_User $user
	 * @return bool
	 */
	public function can_activate_2fa($user) {
		if (is_multisite() && !is_super_admin($user->ID)) {
			return Controller_Permissions::shared()->does_user_have_multisite_capability($user, Controller_Permissions::CAP_ACTIVATE_2FA_SELF);
		}
		return user_can($user, Controller_Permissions::CAP_ACTIVATE_2FA_SELF);
	}
	
	/**
	 * Returns whether or not any user has 2FA activated.
	 *
	 * @return bool
	 */
	public function any_2fa_active() {
		global $wpdb;
		$table = Controller_DB::shared()->secrets;
		return !!intval($wpdb->get_var("SELECT COUNT(*) FROM `{$table}`"));
	}
	
	/**
	 * Returns whether or not the user has 2FA activated.
	 *
	 * @param \WP_User $user
	 * @return bool
	 */
	public function has_2fa_active($user) {
		global $wpdb;
		$table = Controller_DB::shared()->secrets;
		return $this->can_activate_2fa($user) && !!intval($wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM `{$table}` WHERE `user_id` = %d", $user->ID)));
	}
	
	/**
	 * Deactivates a user.
	 *
	 * @param \WP_User $user
	 */
	public function deactivate_2fa($user) {
		global $wpdb;
		$table = Controller_DB::shared()->secrets;
		$wpdb->query($wpdb->prepare("DELETE FROM `{$table}` WHERE `user_id` = %d", $user->ID));
	}

	private function has_admin_with_2fa_active() {
		static $cache = null;
		if ($cache === null) {
			$activeIDs = $this->_user_ids_with_2fa_active();
			foreach ($activeIDs as $id) {
				if (Controller_Permissions::shared()->can_manage_settings(new \WP_User($id))) {
					$cache = true;
					return $cache;
				}
			}
			$cache = false;
		}
		return $cache;
	}

	/**
	 * Returns whether or not 2FA is required for the user regardless of activation status. 2FA is considered required
	 * when the option to require it is enabled and there is at least one administrator with it active.
	 * 
	 * @param \WP_User $user
	 * @param bool &$gracePeriod
	 * @param int &$requiredAt
	 * @return bool
	 */
	public function requires_2fa($user, &$gracePeriod = false, &$requiredAt = null) {
		static $cache = array();
		if (array_key_exists($user->ID, $cache)) {
			list($required, $gracePeriod, $requiredAt) = $cache[$user->ID];
			return $required;
		}
		else {
			$gracePeriod = false;
			$requiredAt = null;
			$required = $this->does_user_role_require_2fa($user, $gracePeriod, $requiredAt);
			$cache[$user->ID] = array($required, $gracePeriod, $requiredAt);
			return $required;
		}
	}
	
	/**
	 * Returns the number of recovery codes remaining for the user or null if the user does not have 2FA active.
	 *
	 * @param \WP_User $user
	 * @return float|null
	 */
	public function recovery_code_count($user) {
		global $wpdb;
		$table = Controller_DB::shared()->secrets;
		$record = $wpdb->get_var($wpdb->prepare("SELECT `recovery` FROM `{$table}` WHERE `user_id` = %d", $user->ID));
		if (!$record) {
			return null;
		}
		
		return floor(Model_Crypto::strlen($record) / self::RECOVERY_CODE_SIZE);
	}
	
	/**
	 * Generates a new set of recovery codes and saves them to $user if provided.
	 *
	 * @param \WP_User|bool $user The user to save the codes to or false to just return codes.
	 * @param int $count
	 * @return array
	 */
	public function regenerate_recovery_codes($user = false, $count = self::RECOVERY_CODE_COUNT) {
		$codes = array();
		for ($i = 0; $i < $count; $i++) {
			$c = \WordfenceLS\Model_Crypto::random_bytes(self::RECOVERY_CODE_SIZE);
			$codes[] = $c;
		}
		
		if ($user && Controller_Users::shared()->has_2fa_active($user)) {
			global $wpdb;
			$table = Controller_DB::shared()->secrets;
			$wpdb->query($wpdb->prepare("UPDATE `{$table}` SET `recovery` = %s WHERE `user_id` = %d", implode('', $codes), $user->ID));
		}
		
		return $codes;
	}
	
	/**
	 * Records the reCAPTCHA score for later display.
	 * 
	 * This is not atomic, which means this can miscount on hits that overlap, but the overhead of being atomic is not 
	 * worth it for our use.
	 * 
	 * @param \WP_User $user|null
	 * @param float $score
	 */
	public function record_captcha_score($user, $score) {
		if (!Controller_CAPTCHA::shared()->enabled()) { return; }
		
		if ($user) { update_user_meta($user->ID, 'wfls-last-captcha-score', $score); }
		$stats = Controller_Settings::shared()->get_array(Controller_Settings::OPTION_CAPTCHA_STATS);
		$int_score = min(max((int) ($score * 10), 0), 10);
		$count = array_sum($stats['counts']);
		$stats['counts'][$int_score]++;
		$stats['avg'] = ($stats['avg'] * $count + $int_score) / ($count + 1);
		Controller_Settings::shared()->set_array(Controller_Settings::OPTION_CAPTCHA_STATS, $stats);
	}
	
	/**
	 * Returns the active and inactive user counts.
	 * 
	 * @return array
	 */
	public function user_counts() {
		if (is_multisite() && function_exists('get_user_count')) {
			$total_users = get_user_count();
		}
		else {
			global $wpdb;
			$total_users = (int) $wpdb->get_var("SELECT COUNT(ID) as c FROM {$wpdb->users}");
		}
		$active_users = $this->active_count();
		return array('active_users' => $active_users, 'inactive_users' => max($total_users - $active_users, 0));
	}
	
	public function detailed_user_counts($force = false) {
		global $wpdb;
		
		$blog_prefix = $wpdb->get_blog_prefix();
		$wp_roles = new \WP_Roles();
		$roles = $wp_roles->get_names();

		$counts = array();
		$groups = array('avail_roles' => 0, 'active_avail_roles' => 0);

		foreach ($groups as $group => $count) {
			$counts[$group] = array();
			foreach ($roles as $role_key => $role_name) {
				$counts[$group][$role_key] = 0;
			}
			$counts[$group][self::TRUNCATED_ROLE_KEY] = 0;
		}

		$dbController = Controller_DB::shared();

		if ($dbController->create_temporary_role_counts_table()) {
			$lock = new Utility_NullLock();
			$role_counts_table = $dbController->role_counts_temporary;
		}
		else {
			$lock = new Utility_DatabaseLock($dbController, 'role-count-calculation');
			$role_counts_table = $dbController->role_counts;
		}

		try {
			$lock->acquire();

			if(!$force && Controller_Settings::shared()->get_bool(Controller_Settings::OPTION_USER_COUNT_QUERY_STATE))
				throw new RuntimeException('Previous user count query failed to completed successfully. User count queries are currently disabled');
			Controller_Settings::shared()->set(Controller_Settings::OPTION_USER_COUNT_QUERY_STATE, true);

			$dbController->require_schema_version(2);
			$secrets_table = $dbController->secrets;

			$dbController->query("TRUNCATE {$role_counts_table}");
			$dbController->query($wpdb->prepare(<<<SQL
				INSERT INTO {$role_counts_table}
				SELECT
					um.meta_value AS serialized_roles,
					s.user_id IS NULL AS two_factor_inactive,
					1 AS user_count
				FROM
					{$wpdb->usermeta} um
				INNER JOIN {$wpdb->users} u ON u.ID = um.user_id
				LEFT JOIN {$secrets_table} s ON s.user_id = u.ID
				WHERE
					meta_key = %s
				ON DUPLICATE KEY
					UPDATE user_count = user_count + 1;
SQL
			, "{$blog_prefix}capabilities"));

			$results = $wpdb->get_results(<<<SQL
				SELECT
					serialized_roles AS serialized_roles,
					two_factor_inactive,
					user_count
				FROM
					{$role_counts_table};
SQL
			, OBJECT);

			Controller_Settings::shared()->set(Controller_Settings::OPTION_USER_COUNT_QUERY_STATE, false);
		}
		catch (RuntimeException $e) {
			$lock->release(); //Finally is not supported in older PHP versions, so it is necessary to release the lock in two places
			return false;
		}
		$lock->release();

		foreach ($results as $row) {
			$truncated_role = false;
			try {
				$row_roles = Utility_Serialization::unserialize($row->serialized_roles, array('allowed_classes' => false), 'is_array');
			}
			catch (RuntimeException $e) {
				$row_roles = array(self::TRUNCATED_ROLE_KEY => true);
				$truncated_role = true;
			}
			foreach ($row_roles as $row_role => $state) {
				if ($state !== true || (!$truncated_role && !is_string($row_role)))
					continue;
				if (array_key_exists($row_role, $roles) || $row_role === self::TRUNCATED_ROLE_KEY) {
					foreach ($groups as $group => &$group_count) {
						if ($group === 'active_avail_roles' && $row->two_factor_inactive)
							continue;
						$counts[$group][$row_role] += $row->user_count;
						$group_count += $row->user_count;
					}
				}
			}
		}

		foreach ($roles as $role_key => $role_name) {
			if ($counts['avail_roles'][$role_key] === 0 && $counts['active_avail_roles'][$role_key] === 0) {
				unset($counts['avail_roles'][$role_key]);
				unset($counts['active_avail_roles'][$role_key]);
			}
		}

		// Separately add super admins for multisite
		if (is_multisite()) {
			$superAdmins = 0;
			$activeSuperAdmins = 0;
			foreach(get_super_admins() as $username) {
				$superAdmins++;
				$user = new \WP_User($username);
				if ($this->has_2fa_active($user)) {
					$activeSuperAdmins++;
				}
			}
			$counts['avail_roles']['super-admin'] = $superAdmins;
			$counts['active_avail_roles']['super-admin'] = $activeSuperAdmins;
		}
		
		$counts['total_users'] = $groups['avail_roles'];
		$counts['active_total_users'] = $groups['active_avail_roles'];

		return $counts;
	}
	
	/**
	 * Returns the number of users with 2FA active.
	 * 
	 * @return int
	 */
	public function active_count() {
		global $wpdb;
		$table = Controller_DB::shared()->secrets;
		return intval($wpdb->get_var("SELECT COUNT(*) FROM `{$table}`"));
	}
	
	/**
	 * WP Filters/Actions
	 */
	
	protected function _init_actions() {
		add_action('deleted_user', array($this, '_deleted_user'));
		add_filter('manage_users_columns', array($this, '_manage_users_columns'));
		add_filter('manage_users_custom_column', array($this, '_manage_users_custom_column'), 10, 3);
		add_filter('manage_users_sortable_columns', array($this, '_manage_users_sortable_columns'), 10, 1);
		add_filter('users_list_table_query_args', array($this, '_users_list_table_query_args'));
		add_filter('user_row_actions', array($this, '_user_row_actions'), 10, 2);
		add_filter('views_users', array($this, '_views_users'));
		
		if (is_multisite()) {
			add_filter('manage_users-network_columns', array($this, '_manage_users_columns'));
			add_filter('manage_users-network_custom_column', array($this, '_manage_users_custom_column'), 10, 3);
			add_filter('manage_users-network_sortable_columns', array($this, '_manage_users_sortable_columns'), 10, 1);
			add_filter('ms_user_row_actions', array($this, '_user_row_actions'), 10, 2);
			add_filter('views_users-network', array($this, '_views_users'));
		}
	}
	
	public function _deleted_user($id) {
		$user = new \WP_User($id);
		if ($user instanceof \WP_User && !$user->exists()) {
			global $wpdb;
			$table = Controller_DB::shared()->secrets;
			$wpdb->query($wpdb->prepare("DELETE FROM `{$table}` WHERE `user_id` = %d", $id));
		}
	}
	
	public function _manage_users_columns($columns = array()) {
		if (user_can(wp_get_current_user(), Controller_Permissions::CAP_ACTIVATE_2FA_OTHERS)) {
			$columns['wfls_2fa_status'] = esc_html__('2FA Status', 'wordfence');
		}
		
		if (Controller_Settings::shared()->are_login_history_columns_enabled() && Controller_Permissions::shared()->can_manage_settings(wp_get_current_user())) {
			$columns['wfls_last_login'] = esc_html__('Last Login', 'wordfence');
			if (Controller_CAPTCHA::shared()->enabled()) {
				$columns['wfls_last_captcha'] = esc_html__('Last CAPTCHA', 'wordfence');
			}
		}
		return $columns;
	}
	
	public function _manage_users_custom_column($value = '', $column_name = '', $user_id = 0) {
		switch($column_name) {
			case 'wfls_2fa_status':
				$user = new \WP_User($user_id);
				$value = __('Not Allowed', 'wordfence');
				if (Controller_Users::shared()->can_activate_2fa($user)) {
					$has2fa = Controller_Users::shared()->has_2fa_active($user);
					$requires2fa = $this->requires_2fa($user, $inGracePeriod);
					if ($has2fa) {
						$value = esc_html__('Active', 'wordfence');
					}
					elseif ($inGracePeriod) {
						$value = wp_kses(__('Inactive<small class="wfls-sub-status">(Grace Period)</small>', 'wordfence'), array('small'=>array('class'=>array())));
					}
					elseif (($requires2fa && !$has2fa)) {
						$value = wp_kses($inGracePeriod === null ? __('Locked Out<small class="wfls-sub-status">(Grace Period Disabled)</small>', 'wordfence') : __('Locked Out<small class="wfls-sub-status">(Grace Period Exceeded)</small>', 'wordfence'), array('small'=>array('class'=>array())));
					}
					else {
						$value = esc_html__('Inactive', 'wordfence');
					}
				}
				break;
			case 'wfls_last_login':
				$value = '-';
				if (($last = get_user_meta($user_id, 'wfls-last-login', true)) && Utility_Number::isUnixTimestamp($last)) {
					$value = Controller_Time::format_local_time(get_option('date_format') . ' ' . get_option('time_format'), $last);
				}
				break;
			case 'wfls_last_captcha':
				$user = new \WP_User($user_id);
				$value = '-';
				if (($last = get_user_meta($user_id, 'wfls-last-captcha-score', true))) {
					$value = number_format($last, 1);
				}
				break;
		}
		
		return $value;
	}
	
	public function _manage_users_sortable_columns($sortable_columns) {
		return array_merge($sortable_columns, array(
			'wfls_last_login' => 'wfls-lastlogin',
			'wfls_last_captcha' => 'wfls-lastcaptcha',
		));
	}
	
	protected function _user_ids_with_2fa_active() {
		global $wpdb;
		$table = Controller_DB::shared()->secrets;
		return $wpdb->get_col("SELECT DISTINCT `user_id` FROM {$table}");
	}
	
	public function _users_list_table_query_args($args) {
		if (isset($_REQUEST['wf2fa']) && preg_match('/^(?:in)?active$/i', $_REQUEST['wf2fa'])) {
			$mode = strtolower($_REQUEST['wf2fa']);
			if ($mode == 'active') {
				$args['include'] = $this->_user_ids_with_2fa_active();
			}
			else if ($mode == 'inactive') {
				unset($args['include']);
				$args['exclude'] = $this->_user_ids_with_2fa_active();
			}
		}
		
		if (isset($args['orderby'])) {
			if (is_string($args['orderby'])) {
				if ($args['orderby'] == 'wfls-lastlogin') {
					$args['meta_key'] = 'wfls-last-login';
					$args['orderby'] = 'meta_value';
				}
				else if ($args['orderby'] == 'wfls-lastcaptcha') {
					$args['meta_key'] = 'wfls-last-captcha-score';
					$args['orderby'] = 'meta_value';
				}
			}
			else {
				$has_one = false;
				if (array_key_exists('wfls-lastlogin', $args['orderby'])) {
					$args['meta_key'] = 'wfls-last-login';
					$args['orderby']['meta_value'] = $args['orderby']['wfls-lastlogin'];
					unset($args['orderby']['wfls-lastlogin']);
					$has_one = true;
				}
				
				if (array_key_exists('wfls-lastcaptcha', $args['orderby'])) {
					if (!$has_one) { //We have to discard one if both are set to sort by because $meta_key can only be a single value rather than an array
						$args['meta_key'] = 'wfls-last-captcha-score';
						$args['orderby']['meta_value'] = $args['orderby']['wfls-lastcaptcha'];
					}
					unset($args['orderby']['wfls-lastcaptcha']);
					$has_one = true;
				}
				
				if (in_array('wfls-lastlogin', $args['orderby'])) {
					if (!$has_one) { //We have to discard one if both are set to sort by because $meta_key can only be a single value rather than an array
						$args['meta_key'] = 'wfls-last-login';
						$args['orderby'][] = 'meta_value';
					}
					unset($args['orderby'][array_search('wfls-lastlogin', $args['orderby'])]);
					$has_one = true;
				}
				
				if (in_array('wfls-lastcaptcha', $args['orderby'])) {
					if (!$has_one) { //We have to discard one if both are set to sort by because $meta_key can only be a single value rather than an array
						$args['meta_key'] = 'wfls-last-captcha-score';
						$args['orderby'][] = 'meta_value';
					}
					unset($args['orderby'][array_search('wfls-lastcaptcha', $args['orderby'])]);
					$has_one = true;
				}
			}
		}
		return $args;
	}
	
	public function _user_row_actions($actions, $user) {
		//Format is 'view' => '<a href="https://wfpremium.dev1.ryanbritton.com/author/ryan/" aria-label="View posts by ryan">View</a>'
		if (user_can(wp_get_current_user(), Controller_Permissions::CAP_ACTIVATE_2FA_OTHERS) && (Controller_Users::shared()->can_activate_2fa($user) || Controller_Users::shared()->has_2fa_active($user))) {
			$url = (is_multisite() ? network_admin_url('admin.php?page=WFLS&user=' . $user->ID) : admin_url('admin.php?page=WFLS&user=' . $user->ID));
			$actions['wf2fa'] = '<a href="' . esc_url($url) . '" aria-label="' . esc_attr(sprintf(__('Edit two-factor authentication for %s', 'wordfence'), $user->user_login)) . '">' . esc_html__('2FA', 'wordfence') . '</a>';
		}
		return $actions;
	}
	
	public function _views_users($views) {
		//Format is 'subscriber' => '<a href=\\'users.php?role=subscriber\\'>Subscriber <span class="count">(40,002)</span></a>',
		include(ABSPATH . WPINC . '/version.php'); /** @var string $wp_version */
		if (user_can(wp_get_current_user(), Controller_Permissions::CAP_ACTIVATE_2FA_OTHERS) && version_compare($wp_version, '4.4.0', '>=')) {
			$counts = $this->user_counts();
			$views['all'] = str_replace(' class="current" aria-current="page"', '', $views['all']);
			$views['wfls-active'] = '<a href="' . esc_url(add_query_arg('wf2fa', 'active', 'users.php')) . '"' . (isset($_GET['wf2fa']) && $_GET['wf2fa'] == 'active' ? ' class="current" aria-current="page"' : '') . '>' . esc_html__('2FA Active', 'wordfence') . ' <span class="count">(' . number_format($counts['active_users']) . ')</span></a>';
			$views['wfls-inactive'] = '<a href="' . esc_url(add_query_arg('wf2fa', 'inactive', 'users.php')) . '"' . (isset($_GET['wf2fa']) && $_GET['wf2fa'] == 'inactive' ? ' class="current" aria-current="page"' : '') . '>' . esc_html__('2FA Inactive', 'wordfence') . ' <span class="count">(' . number_format($counts['inactive_users']) . ')</span></a>';
		}
		return $views;
	}

	private function get_grace_period_reset_time($user) {
		$time = get_user_option(self::META_KEY_GRACE_PERIOD_RESET, $user->ID);
		if (empty($time))
			return null;
		return (int) $time;
	}

	public function get_grace_period_override($user) {
		$override = get_user_option(self::META_KEY_GRACE_PERIOD_OVERRIDE, $user->ID);
		if ($override === false)
			return null;
		return (int) $override;
	}

	private function does_user_role_require_2fa($user, &$inGracePeriod = null, &$requiredAt = null) {
		$is2faAdmin = Controller_Permissions::shared()->can_manage_settings($user);
		$userDate = self::get_grace_period_reset_time($user);
		if ($userDate === null)
			$userDate = self::get_registration_date($user);
		if ($is2faAdmin && !$this->get_grace_period_allowed_flag($user->ID)) {
			$gracePeriod = 0;
			$inGracePeriod = null;
		}
		else {
			$gracePeriod = self::get_grace_period_override($user);
			if ($gracePeriod === null)
				$gracePeriod = Controller_Settings::shared()->get_user_2fa_grace_period();
			$gracePeriod *= self::SECONDS_PER_DAY;
			$inGracePeriod = false;
		}
		$now = time();
		foreach (Controller_Permissions::shared()->get_all_roles($user) as $role) {
			$roleDate = Controller_Settings::shared()->get_required_2fa_role_activation_time($role);
			if ($roleDate === false)
				continue;
			$effectiveDate = max($userDate, $roleDate) + $gracePeriod;
			if ($requiredAt === null || $effectiveDate < $requiredAt)
				$requiredAt = $effectiveDate;
			if ($effectiveDate <= $now && (!$is2faAdmin || $this->has_admin_with_2fa_active())) {
				if ($inGracePeriod)
					$inGracePeriod = false;
				return true;
			}
			else if ($inGracePeriod !== null) {
				$inGracePeriod = true;
			}
		}
		return false;
	}

	private static function get_registration_date($user) {
		return strtotime($user->user_registered);
	}

	public function reset_2fa_grace_period($user, $override = null) {
		if (!$this->can_activate_2fa($user) || $this->has_2fa_active($user))
			return false;
		update_user_option($user->ID, self::META_KEY_GRACE_PERIOD_RESET, time(), true);
		if ($override !== null)
			update_user_option($user->ID, self::META_KEY_GRACE_PERIOD_OVERRIDE, (int) $override, true);
		return true;
	}

	public function revoke_grace_period($user) {
		foreach(array(
			self::META_KEY_GRACE_PERIOD_RESET,
			self::META_KEY_GRACE_PERIOD_OVERRIDE,
			self::META_KEY_ALLOW_GRACE_PERIOD
			) as $option) {
			delete_user_option($user->ID, $option, true);
		}
	}

	public function allow_grace_period($userId) {
		update_user_option($userId, self::META_KEY_ALLOW_GRACE_PERIOD, true, true);
	}

	public function get_grace_period_allowed_flag($userId) {
		return (bool) get_user_option(self::META_KEY_ALLOW_GRACE_PERIOD, $userId);
	}

	public function has_revokable_grace_period($user) {
		return $this->get_grace_period_allowed_flag($user->ID) || $this->get_grace_period_reset_time($user) !== null;
	}

	private function get_inactive_2fa_super_admins($gracePeriod = false) {
		$inactive = array();
		foreach(get_super_admins() as $username) {
			$user = new \WP_User($username);
			if (!$this->has_2fa_active($user)) {
				$this->requires_2fa($user, $inGracePeriod, $requiredAt);
				if ($gracePeriod === null || $gracePeriod == $inGracePeriod) {
					$current = new \StdClass();
					$current->user_id = $user->ID;
					$current->user_login = $username;
					$current->required_at = $requiredAt;
					$inactive[] = $current;
				}
			}
		}
		return $inactive;
	}

	private function generate_inactive_2fa_user_query($roleKey, $gracePeriod = null, $page = null, $perPage = null) {
		global $wpdb;
		$secondsPerDay = (int) self::SECONDS_PER_DAY;
		$gracePeriodSeconds = (int) (Controller_Settings::shared()->get_user_2fa_grace_period() * self::SECONDS_PER_DAY);
		$roleTime = (int) (Controller_Settings::shared()->get_required_2fa_role_activation_time($roleKey));
		$siteId = get_current_blog_id();
		$blogPrefix = $wpdb->get_blog_prefix($siteId);
		$usermeta = $wpdb->usermeta;
		$users = $wpdb->users;
		$secrets = Controller_DB::shared()->secrets;
		$admin = Controller_Permissions::shared()->can_role_manage_settings($roleKey);
		$parameters = array(
			self::META_KEY_GRACE_PERIOD_RESET,
			self::META_KEY_GRACE_PERIOD_OVERRIDE
		);
		$gracePeriodClause = "IF(overrides.days IS NULL, $gracePeriodSeconds, overrides.days * $secondsPerDay)";
		$registeredTimestampClause = "UNIX_TIMESTAMP(CONVERT_TZ($users.user_registered, '+00:00', @@time_zone))";
		$now = time();
		if ($admin) {
			$allowancesJoin = <<<SQL
				LEFT JOIN (
					SELECT
						user_id,
						meta_value AS allowed
					FROM
						$usermeta
					WHERE
						meta_key = %s
				) allowances ON allowances.user_id = $usermeta.user_id
SQL;
			$parameters[] = self::META_KEY_ALLOW_GRACE_PERIOD;
			$allowedClause = 'IFNULL(allowances.allowed, 0)';
			$gracePeriodClause = "IF($allowedClause = 0, 0, $gracePeriodClause)";
		}
		else {
			$allowancesJoin = null;
			$allowedClause = null;
		}
		$timeClause = "GREATEST($roleTime, $registeredTimestampClause, IFNULL(resets.time, 0)) + $gracePeriodClause";
		$query = <<<SQL
			SELECT
				$usermeta.user_id,
				$users.user_login,
				$timeClause AS required_at
			FROM
				$usermeta
				JOIN $users ON $users.ID = $usermeta.user_id
				LEFT JOIN (
					SELECT
						user_id,
						meta_value AS time
					FROM
						$usermeta
					WHERE
						meta_key = %s
				) resets ON resets.user_id = $usermeta.user_id
				LEFT JOIN (
					SELECT
						user_id,
						meta_value AS days
					FROM
						$usermeta
					WHERE
						meta_key = %s
				) overrides ON overrides.user_id = $usermeta.user_id
				$allowancesJoin
			WHERE
				meta_key = '{$blogPrefix}capabilities'
				AND meta_value LIKE %s
				AND NOT $usermeta.user_id IN(SELECT user_id FROM {$secrets})
SQL;
		$conditions = array();
		$operator = 'AND';
		if ($gracePeriod !== null) {
			if ($gracePeriod) {
				$conditions[] = "$timeClause > $now";
			}
			else {
				$conditions[] = "$timeClause <= $now";
				$operator = 'OR';
			}
		}
		if ($admin) {
			$conditions[] = $allowedClause . ' = ' . ($gracePeriod ? 1 : 0);
		}
		if (!empty($conditions))
			$query .= ' AND (' . implode(" $operator ", $conditions). ')';
		if ($page !== null && $perPage !== null) {
			$offset = (int) (($page - 1) * $perPage);
			$limit = (int) ($perPage + 1);
			if ($offset >= 0 && $perPage > 0)
				$query .= " LIMIT $offset, $limit";
		}
		$serializedRoleKey = serialize($roleKey);
		$roleMatch = '%' . (method_exists($wpdb, 'esc_like') ? $wpdb->esc_like($serializedRoleKey) : addcslashes($serializedRoleKey, '_%\\')). '%';
		$parameters[] = $roleMatch;
		return $wpdb->prepare(
			$query.';',
			$parameters
		);
	}

	public function get_inactive_2fa_users($roleKey, $gracePeriod = null, $page = null, $perPage = null, &$lastPage = null) {
		global $wpdb;
		if (is_multisite() && $roleKey === 'super-admin') {
			$superAdmins = $this->get_inactive_2fa_super_admins($gracePeriod);
			if ($page !== null && $perPage !== null) {
				$start = ($page - 1) * $perPage;
				$end = $start + $perPage;
				$lastPage = $end >= count($superAdmins);
				$superAdmins = array_slice($superAdmins, $start, $perPage);
			}
			return $superAdmins;
		}
		else {
			$query = $this->generate_inactive_2fa_user_query($roleKey, $gracePeriod, $page, $perPage);
			$results = $wpdb->get_results($query);
			if (count($results) > $perPage) {
				$lastPage = false;
				array_pop($results);
			}
			else {
				$lastPage = true;
			}
			return $results;
		}
	}

	private function get_verification_token_transient_key($hash) {
		return self::VERIFICATION_TOKEN_TRANSIENT_PREFIX . $hash;
	}

	private function load_verification_token($hash) {
		$key = $this->get_verification_token_transient_key($hash);
		$userId = get_transient($key);
		if ($userId === false)
			return null;
		return intval($userId);
	}

	private function load_verification_tokens($user) {
		$storedHashes = get_user_meta($user->ID, self::META_KEY_VERIFICATION_TOKENS, true);
		$validHashes = array();
		if (is_array($storedHashes)) {
			foreach ($storedHashes as $hash) {
				$userId = $this->load_verification_token($hash);
				if ($userId === $user->ID)
					$validHashes[] = $hash;
			}
		}
		return $validHashes;
	}

	private function hash_verification_token($token) {
		return wp_hash($token);
	}

	public function generate_verification_token($user) {
		$token = Model_Crypto::random_bytes(self::VERIFICATION_TOKEN_BYTES);
		$hash = $this->hash_verification_token($token);
		$tokens = $this->load_verification_tokens($user);
		array_unshift($tokens, $hash);
		while (count($tokens) > self::VERIFICATION_TOKEN_LIMIT) {
			$excessHash = array_pop($tokens);
			delete_transient($this->get_verification_token_transient_key($excessHash));
		}
		$key = $this->get_verification_token_transient_key($hash);
		set_transient($key, $user->ID, WORDFENCE_LS_EMAIL_VALIDITY_DURATION_MINUTES * 60);
		update_user_meta($user->ID, self::META_KEY_VERIFICATION_TOKENS, $tokens);
		return base64_encode($token);
	}

	public function validate_verification_token($token, $user = null) {
		$hash = $this->hash_verification_token(base64_decode($token));
		$userId = $this->load_verification_token($hash);
		return $userId !== null && ($user === null || $userId === $user->ID);
	}
	
	/**
	 * Returns the key used to store a captcha score transient.
	 * 
	 * @param string $hash
	 * @return string
	 */
	private function get_captcha_score_transient_key($hash) {
		return self::CAPTCHA_SCORE_TRANSIENT_PREFIX . $hash;
	}
	
	/**
	 * Attempts to look up a stored captcha score for the given hash and user. If found, returns the score. If not, 
	 * returns null.
	 * 
	 * @param string $hash
	 * @param \WP_User $user
	 * @return float|false
	 */
	private function load_captcha_score($hash, $user) {
		$key = $this->get_captcha_score_transient_key($hash);
		$data = get_transient($key);
		if ($data === false) {
			return false;
		}
		
		if (!$user->exists() || $data['user'] !== $user->ID) {
			return false;
		}
		
		return floatval($data['score']);
	}
	
	/**
	 * Deletes the stored captcha score if present for the given hash.
	 * 
	 * @param string $hash
	 */
	private function clear_captcha_score($token, $user) {
		$hash = $this->hash_captcha_token($token);
		$key = $this->get_captcha_score_transient_key($hash);
		delete_transient($key);
		
		$storedHashes = get_user_meta($user->ID, self::META_KEY_CAPTCHA_SCORES, true);
		$validHashes = array();
		if (is_array($storedHashes)) {
			foreach ($storedHashes as $hash) {
				$storedScore = $this->load_captcha_score($hash, $user);
				if ($storedScore !== false) {
					$validHashes[] = $hash;
				}
			}
		}
		$validHashes = array_slice($validHashes, 0, self::CAPTCHA_SCORE_LIMIT);
		update_user_meta($user->ID, self::META_KEY_CAPTCHA_SCORES, $validHashes);
	}
	
	/**
	 * Hashes the captcha token for storage.
	 * 
	 * @param string $token
	 * @return string
	 */
	private function hash_captcha_token($token) {
		return wp_hash($token);
	}
	
	/**
	 * Returns the cached score for the given captcha score and user if available. This action removes it from the cache
	 * since the intent is for it only to be used for the initial login request to validate credentials + the follow-up
	 * request either finalizing the login (no 2FA set) or with the 2FA token.
	 * 
	 * $expired will be set to `true` if the reason for returning `false` is because the $token is recently expired. It
	 * will be false when the $token is either uncached or has been expired long enough to be removed from the internal
	 * list.
	 * 
	 * @param string $token
	 * @param \WP_User $user
	 * @param bool $expired
	 * @return float|false
	 */
	public function cached_captcha_score($token, $user, &$expired = false) {
		$hash = $this->hash_captcha_token($token);
		$score = $this->load_captcha_score($hash, $user);
		if ($score === false) {
			$storedHashes = get_user_meta($user->ID, self::META_KEY_CAPTCHA_SCORES, true);
			if (is_array($storedHashes)) {
				$expired = in_array($hash, $storedHashes);
			}
		}
		
		$this->clear_captcha_score($token, $user);
		return $score;
	}
	
	/**
	 * Caches the $token/$score pair for $user, automatically pruning its cached list to the maximum allowable count
	 * 
	 * @param string $token
	 * @param float|false $score
	 * @param \WP_User $user
	 */
	public function cache_captcha_score($token, $score, $user) {
		if ($score === false) {
			return;
		}
		
		$storedHashes = get_user_meta($user->ID, self::META_KEY_CAPTCHA_SCORES, true);
		$validHashes = array();
		if (is_array($storedHashes)) {
			foreach ($storedHashes as $hash) {
				$storedScore = $this->load_captcha_score($hash, $user);
				if ($storedScore !== false) {
					$validHashes[] = $hash;
				}
			}
		}
		
		$hash = $this->hash_verification_token($token);
		array_unshift($validHashes, $hash);
		while (count($validHashes) > self::CAPTCHA_SCORE_LIMIT) {
			$excessHash = array_pop($validHashes);
			delete_transient($this->get_captcha_score_transient_key($excessHash));
		}
		
		$key = $this->get_captcha_score_transient_key($hash);
		set_transient($key, array('user' => $user->ID, 'score' => $score), self::CAPTCHA_SCORE_CACHE_DURATION);
		update_user_meta($user->ID, self::META_KEY_CAPTCHA_SCORES, $validHashes);
	}

	public function get_user_count() {
		global $wpdb;
		if (function_exists('get_user_count'))
			return get_user_count();
		return $wpdb->get_var("SELECT COUNT(*) FROM {$wpdb->users}");
	}

	public function has_large_user_base() {
		return $this->get_user_count() >= self::LARGE_USER_BASE_THRESHOLD;
	}

	public function should_force_user_counts() {
		return isset($_GET['wfls-show-user-counts']);
	}

	public function get_detailed_user_counts_if_enabled() {
		$force = $this->should_force_user_counts();
		if ($this->has_large_user_base() && !$force)
			return null;
		return $this->detailed_user_counts($force);
	}

}modules/login-security/classes/controller/settings.php000064400000051105150755146440017377 0ustar00<?php

namespace WordfenceLS;

use WordfenceLS\Settings\Model_DB;
use WordfenceLS\Settings\Model_WPOptions;

class Controller_Settings {
	//Configurable
	const OPTION_XMLRPC_ENABLED = 'xmlrpc-enabled';
	const OPTION_2FA_WHITELISTED = 'whitelisted';
	const OPTION_IP_SOURCE = 'ip-source';
	const OPTION_IP_TRUSTED_PROXIES = 'ip-trusted-proxies';
	const OPTION_REQUIRE_2FA_ADMIN = 'require-2fa.administrator';
	const OPTION_REQUIRE_2FA_GRACE_PERIOD_ENABLED = 'require-2fa-grace-period-enabled';
	const OPTION_REQUIRE_2FA_GRACE_PERIOD = 'require-2fa-grace-period';
	const OPTION_REQUIRE_2FA_USER_GRACE_PERIOD = '2fa-user-grace-period';
	const OPTION_REMEMBER_DEVICE_ENABLED = 'remember-device';
	const OPTION_REMEMBER_DEVICE_DURATION = 'remember-device-duration';
	const OPTION_ALLOW_XML_RPC = 'allow-xml-rpc';
	const OPTION_ENABLE_AUTH_CAPTCHA = 'enable-auth-captcha';
	const OPTION_CAPTCHA_TEST_MODE = 'recaptcha-test-mode';
	const OPTION_RECAPTCHA_SITE_KEY = 'recaptcha-site-key';
	const OPTION_RECAPTCHA_SECRET = 'recaptcha-secret';
	const OPTION_RECAPTCHA_THRESHOLD = 'recaptcha-threshold';
	const OPTION_DELETE_ON_DEACTIVATION = 'delete-deactivation';
	const OPTION_PREFIX_REQUIRED_2FA_ROLE = 'required-2fa-role';
	const OPTION_ENABLE_WOOCOMMERCE_INTEGRATION = 'enable-woocommerce-integration';
	const OPTION_ENABLE_WOOCOMMERCE_ACCOUNT_INTEGRATION = 'enable-woocommerce-account-integration';
	const OPTION_ENABLE_SHORTCODE = 'enable-shortcode';
	const OPTION_ENABLE_LOGIN_HISTORY_COLUMNS = 'enable-login-history-columns';
	const OPTION_STACK_UI_COLUMNS = 'stack-ui-columns';
	
	//Internal
	const OPTION_GLOBAL_NOTICES = 'global-notices';
	const OPTION_LAST_SECRET_REFRESH = 'last-secret-refresh';
	const OPTION_USE_NTP = 'use-ntp';
	const OPTION_ALLOW_DISABLING_NTP = 'allow-disabling-ntp';
	const OPTION_NTP_FAILURE_COUNT = 'ntp-failure-count';
	const OPTION_NTP_OFFSET = 'ntp-offset';
	const OPTION_SHARED_HASH_SECRET_KEY = 'shared-hash-secret';
	const OPTION_SHARED_SYMMETRIC_SECRET_KEY = 'shared-symmetric-secret';
	const OPTION_DISMISSED_FRESH_INSTALL_MODAL = 'dismissed-fresh-install-modal';
	const OPTION_CAPTCHA_STATS = 'captcha-stats';
	const OPTION_SCHEMA_VERSION = 'schema-version';
	const OPTION_USER_COUNT_QUERY_STATE = 'user-count-query-state';
	const OPTION_DISABLE_TEMPORARY_TABLES = 'disable-temporary-tables';

	const DEFAULT_REQUIRE_2FA_USER_GRACE_PERIOD = 10;
	const MAX_REQUIRE_2FA_USER_GRACE_PERIOD = 99;

	const STATE_2FA_DISABLED = 'disabled';
	const STATE_2FA_OPTIONAL = 'optional';
	const STATE_2FA_REQUIRED = 'required';
	
	protected $_settingsStorage;
	
	/**
	 * Returns the singleton Controller_Settings.
	 *
	 * @return Controller_Settings
	 */
	public static function shared() {
		static $_shared = null;
		if ($_shared === null) {
			$_shared = new Controller_Settings();
		}
		return $_shared;
	}
	
	public function __construct($settingsStorage = false) {
		if (!$settingsStorage) {
			$settingsStorage = new Model_DB();
		}
		$this->_settingsStorage = $settingsStorage;
		$this->_migrate_admin_2fa_requirements_to_roles();
	}
	
	public function set_defaults() {
		$this->_settingsStorage->set_multiple(array(
			self::OPTION_XMLRPC_ENABLED => array('value' => true, 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false),
			self::OPTION_2FA_WHITELISTED => array('value' => '', 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false), 
			self::OPTION_IP_SOURCE => array('value' => Model_Request::IP_SOURCE_AUTOMATIC, 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false),
			self::OPTION_IP_TRUSTED_PROXIES => array('value' => '', 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false),
			self::OPTION_REQUIRE_2FA_ADMIN => array('value' => false, 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false),
			self::OPTION_REQUIRE_2FA_GRACE_PERIOD_ENABLED => array('value' => false, 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false),
			self::OPTION_REQUIRE_2FA_USER_GRACE_PERIOD => array('value' => self::DEFAULT_REQUIRE_2FA_USER_GRACE_PERIOD, 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false),
			self::OPTION_GLOBAL_NOTICES => array('value' => '[]', 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false),
			self::OPTION_REMEMBER_DEVICE_ENABLED => array('value' => false, 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false),
			self::OPTION_REMEMBER_DEVICE_DURATION => array('value' => (30 * 86400), 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false),
			self::OPTION_ALLOW_XML_RPC => array('value' => true, 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false),
			self::OPTION_ENABLE_AUTH_CAPTCHA => array('value' => false, 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false),
			self::OPTION_CAPTCHA_STATS => array('value' => '{"counts":[0,0,0,0,0,0,0,0,0,0,0],"avg":0}', 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false),
			self::OPTION_RECAPTCHA_THRESHOLD => array('value' => 0.5, 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false),
			self::OPTION_LAST_SECRET_REFRESH => array('value' => 0, 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false),
			self::OPTION_DELETE_ON_DEACTIVATION => array('value' => false, 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false),
			self::OPTION_ENABLE_WOOCOMMERCE_INTEGRATION => array('value' => false, 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false),
			self::OPTION_ENABLE_WOOCOMMERCE_ACCOUNT_INTEGRATION => array('value' => false, 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false),
			self::OPTION_ENABLE_SHORTCODE => array('value' => false, 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false),
			self::OPTION_ENABLE_LOGIN_HISTORY_COLUMNS => array('value' => true, 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false),
			self::OPTION_STACK_UI_COLUMNS => array('value' => true, 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false),
			self::OPTION_SCHEMA_VERSION => array('value' => 0, 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false),
			self::OPTION_USER_COUNT_QUERY_STATE => array('value' => 0, 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false),
			self::OPTION_DISABLE_TEMPORARY_TABLES => array('value' => 0, 'autoload' => Model_Settings::AUTOLOAD_YES, 'allowOverwrite' => false)
		));
	}
	
	public function set($key, $value, $already_validated = false) {
		return $this->set_multiple(array($key => $value), $already_validated);
	}
	
	public function set_array($key, $value, $already_validated = false) {
		return $this->set_multiple(array($key => json_encode($value)), $already_validated);
	}
	
	public function set_multiple($changes, $already_validated = false) {
		if (!$already_validated && $this->validate_multiple($changes) !== true) {
			return false;
		}
		$changes = $this->clean_multiple($changes);
		$changes = $this->preprocess_multiple($changes);
		$this->_settingsStorage->set_multiple($changes);
		return true;
	}
	
	public function get($key, $default = false) {
		return $this->_settingsStorage->get($key, $default);
	}
	
	public function get_bool($key, $default = false) {
		return $this->_truthy_to_bool($this->get($key, $default));
	}
	
	public function get_int($key, $default = 0) {
		return intval($this->get($key, $default));
	}
	
	public function get_float($key, $default = 0.0) {
		return (float) $this->get($key, $default);
	}
	
	public function get_array($key, $default = array()) {
		$value = $this->get($key, null);
		if (is_string($value)) {
			$value = @json_decode($value, true);
		}
		else {
			$value = null;
		}
		return is_array($value) ? $value : $default;
	}
	
	public function remove($key) {
		$this->_settingsStorage->remove($key);
	}
	
	/**
	 * Validates whether a user-entered setting value is acceptable. Returns true if valid or an error message if not.
	 *
	 * @param string $key
	 * @param mixed $value
	 * @return bool|string
	 */
	public function validate($key, $value) {
		switch ($key) {
			//Boolean
			case self::OPTION_XMLRPC_ENABLED:
			case self::OPTION_REQUIRE_2FA_ADMIN:
			case self::OPTION_REQUIRE_2FA_GRACE_PERIOD_ENABLED:
			case self::OPTION_REMEMBER_DEVICE_ENABLED:
			case self::OPTION_ALLOW_XML_RPC:
			case self::OPTION_ENABLE_AUTH_CAPTCHA:
			case self::OPTION_CAPTCHA_TEST_MODE:
			case self::OPTION_DISMISSED_FRESH_INSTALL_MODAL:
			case self::OPTION_DELETE_ON_DEACTIVATION:
			case self::OPTION_ENABLE_WOOCOMMERCE_INTEGRATION:
			case self::OPTION_ENABLE_WOOCOMMERCE_ACCOUNT_INTEGRATION:
			case self::OPTION_ENABLE_SHORTCODE:
			case self::OPTION_ENABLE_LOGIN_HISTORY_COLUMNS:
			case self::OPTION_STACK_UI_COLUMNS:
			case self::OPTION_USER_COUNT_QUERY_STATE:
			case self::OPTION_DISABLE_TEMPORARY_TABLES:
				return true;
				
			//Int
			case self::OPTION_LAST_SECRET_REFRESH:
				return is_numeric($value); //Left using is_numeric to prevent issues with existing values
			case self::OPTION_SCHEMA_VERSION:
				return Utility_Number::isInteger($value, 0);
				
			//Array
			case self::OPTION_GLOBAL_NOTICES:
			case self::OPTION_CAPTCHA_STATS:
				return preg_match('/^\[.*\]$/', $value) || preg_match('/^\{.*\}$/', $value); //Only a rough JSON validation
				
			//Special
			case self::OPTION_IP_TRUSTED_PROXIES:
			case self::OPTION_2FA_WHITELISTED:
				$parsed = array_filter(array_map(function($s) { return trim($s); }, preg_split('/[\r\n]/', $value)));
				foreach ($parsed as $entry) {
					if (!Controller_Whitelist::shared()->is_valid_range($entry)) {
						return sprintf(__('The IP/range %s is invalid.', 'wordfence'), esc_html($entry));
					}
				}
				return true;
			case self::OPTION_IP_SOURCE:
				if (!in_array($value, array(Model_Request::IP_SOURCE_AUTOMATIC, Model_Request::IP_SOURCE_REMOTE_ADDR, Model_Request::IP_SOURCE_X_FORWARDED_FOR, Model_Request::IP_SOURCE_X_REAL_IP))) {
					return __('An invalid IP source was provided.', 'wordfence');
				}
				return true;
			case self::OPTION_REQUIRE_2FA_GRACE_PERIOD:
				$gracePeriodEnd = strtotime($value);
				if ($gracePeriodEnd <= \WordfenceLS\Controller_Time::time()) {
					return __('The grace period end time must be in the future.', 'wordfence');
				}
				return true;
			case self::OPTION_REMEMBER_DEVICE_DURATION:
				return is_numeric($value) && $value > 0;
			case self::OPTION_RECAPTCHA_THRESHOLD:
				return is_numeric($value) && $value > 0 && $value <= 1;
			case self::OPTION_RECAPTCHA_SITE_KEY:
				if (empty($value)) {
					return true;
				}
				
				$response = wp_remote_get('https://www.google.com/recaptcha/api.js?render=' . urlencode($value));
				
				if (!is_wp_error($response)) {
					$status = wp_remote_retrieve_response_code($response);
					if ($status == 200) {
						return true;
					}
					
					$data = wp_remote_retrieve_body($response);
					if (strpos($data, 'grecaptcha') === false) {
						return __('Unable to validate the reCAPTCHA site key. Please check the key and try again.', 'wordfence');
					}
					return true;
				}
				return sprintf(__('An error was encountered while validating the reCAPTCHA site key: %s', 'wordfence'), $response->get_error_message());
			case self::OPTION_REQUIRE_2FA_USER_GRACE_PERIOD:
				return is_numeric($value) && $value >= 0 && $value <= self::MAX_REQUIRE_2FA_USER_GRACE_PERIOD;
		}
		return true;
	}
	
	public function validate_multiple($values) {
		$errors = array();
		foreach ($values as $key => $value) {
			$status = $this->validate($key, $value); 
			if ($status !== true) {
				$errors[$key] = $status;
			}
		}
		
		if (!empty($errors)) {
			return $errors;
		}
		
		return true;
	}
	
	/**
	 * Cleans and normalizes a setting value for use in saving.
	 *
	 * @param string $key
	 * @param mixed $value
	 * @return mixed
	 */
	public function clean($key, $value) {
		switch ($key) {
			//Boolean
			case self::OPTION_XMLRPC_ENABLED:
			case self::OPTION_REQUIRE_2FA_ADMIN:
			case self::OPTION_REQUIRE_2FA_GRACE_PERIOD_ENABLED:
			case self::OPTION_REMEMBER_DEVICE_ENABLED:
			case self::OPTION_ALLOW_XML_RPC:
			case self::OPTION_ENABLE_AUTH_CAPTCHA:
			case self::OPTION_CAPTCHA_TEST_MODE:
			case self::OPTION_DISMISSED_FRESH_INSTALL_MODAL:
			case self::OPTION_DELETE_ON_DEACTIVATION:
			case self::OPTION_ENABLE_WOOCOMMERCE_INTEGRATION:
			case self::OPTION_ENABLE_WOOCOMMERCE_ACCOUNT_INTEGRATION:
			case self::OPTION_ENABLE_SHORTCODE;
			case self::OPTION_ENABLE_LOGIN_HISTORY_COLUMNS:
			case self::OPTION_STACK_UI_COLUMNS:
			case self::OPTION_USER_COUNT_QUERY_STATE:
			case self::OPTION_DISABLE_TEMPORARY_TABLES:
				return $this->_truthy_to_bool($value);
				
			//Int
			case self::OPTION_REMEMBER_DEVICE_DURATION:
			case self::OPTION_LAST_SECRET_REFRESH:
			case self::OPTION_REQUIRE_2FA_USER_GRACE_PERIOD:
			case self::OPTION_SCHEMA_VERSION:
				return (int) $value;
				
			//Float
			case self::OPTION_RECAPTCHA_THRESHOLD:
				return (float) $value;
			
			//Special
			case self::OPTION_IP_TRUSTED_PROXIES:
			case self::OPTION_2FA_WHITELISTED:
				$parsed = array_filter(array_map(function($s) { return trim($s); }, preg_split('/[\r\n]/', $value)));
				$cleaned = array();
				foreach ($parsed as $item) {
					$cleaned[] = $this->_sanitize_ip_range($item);
				}
				return implode("\n", $cleaned);
			case self::OPTION_REQUIRE_2FA_GRACE_PERIOD:
				$dt = $this->_parse_local_time($value);
				return $dt->format('U');
			case self::OPTION_RECAPTCHA_SITE_KEY:
			case self::OPTION_RECAPTCHA_SECRET:
				return trim($value);
		}
		return $value;
	}
	
	public function clean_multiple($changes) {
		$cleaned = array();
		foreach ($changes as $key => $value) {
			$cleaned[$key] = $this->clean($key, $value);
		}
		return $cleaned;
	}

	private function get_required_2fa_role_key($role) {
		return implode('.', array(self::OPTION_PREFIX_REQUIRED_2FA_ROLE, $role));
	}

	public function get_required_2fa_role_activation_time($role) {
		$time = $this->get_int($this->get_required_2fa_role_key($role), -1);
		if ($time < 0)
			return false;
		return $time;
	}

	public function get_user_2fa_grace_period() {
		return $this->get_int(self::OPTION_REQUIRE_2FA_USER_GRACE_PERIOD, self::DEFAULT_REQUIRE_2FA_USER_GRACE_PERIOD);
	}

	/**
	 * Preprocesses the value, returning true if it was saved here (e.g., saved 2fa enabled by assigning a role 
	 * capability) or false if it is to be saved by the backing storage.
	 * 
	 * @param string $key
	 * @param mixed $value
	 * @param array &$settings the array of settings to process, this function may append additional values from preprocessing
	 * @return bool
	 */
	public function preprocess($key, $value, &$settings) {
		if (preg_match('/^enabled-roles\.(.+)$/', $key, $matches)) { //Enabled roles are stored as capabilities rather than in the settings storage
			$role = $matches[1];
			if ($role === 'super-admin') {
				$roleValid = true;
			}
			elseif (in_array($value, array(self::STATE_2FA_OPTIONAL, self::STATE_2FA_REQUIRED))) {
				$roleValid = Controller_Permissions::shared()->allow_2fa_self($role);
			}
			else {
				$roleValid = Controller_Permissions::shared()->disallow_2fa_self($role);
			}
			if ($roleValid)
				$settings[$this->get_required_2fa_role_key($role)] = ($value === self::STATE_2FA_REQUIRED ? time() : -1);
			return true;
		}
		return false;
	}
	
	public function preprocess_multiple($changes) {
		$remaining = array();
		foreach ($changes as $key => $value) {
			if (!$this->preprocess($key, $value, $remaining)) {
				$remaining[$key] = $value;
			}
		}
		return $remaining;
	}
	
	/**
	 * Convenience
	 */
	
	/**
	 * Returns a cleaned array containing the whitelist entries.
	 * 
	 * @return array
	 */
	public function whitelisted_ips() {
		return array_filter(array_map(function($s) { return trim($s); }, preg_split('/[\r\n]/', $this->get(self::OPTION_2FA_WHITELISTED, ''))));
	}
	
	/**
	 * Returns a cleaned array containing the trusted proxy entries.
	 *
	 * @return array
	 */
	public function trusted_proxies() {
		return array_filter(array_map(function($s) { return trim($s); }, preg_split('/[\r\n]/', $this->get(self::OPTION_IP_TRUSTED_PROXIES, ''))));
	}

	public function get_ntp_failure_count() {
		return $this->get_int(self::OPTION_NTP_FAILURE_COUNT, 0);
	}

	public function reset_ntp_failure_count() {
		$this->set(self::OPTION_NTP_FAILURE_COUNT, 0);
	}

	public function increment_ntp_failure_count() {
		$count = $this->get_ntp_failure_count();
		if ($count < 0)
			return false;
		$count++;
		$this->set(self::OPTION_NTP_FAILURE_COUNT, $count);
		return $count;
	}

	public function is_ntp_disabled_via_constant() {
		return defined('WORDFENCE_LS_DISABLE_NTP') && WORDFENCE_LS_DISABLE_NTP;
	}

	public function is_ntp_enabled($requireOffset = true) {
		if ($this->is_ntp_cron_disabled())
			return false;
		if ($this->get_bool(self::OPTION_USE_NTP, true)) {
			if ($requireOffset) {
				$offset = $this->get(self::OPTION_NTP_OFFSET, null);
				return $offset !== null && abs((int)$offset) <= Controller_TOTP::TIME_WINDOW_LENGTH;
			}
			else {
				return true;
			}
		}
		return false;
	}

	public function is_ntp_cron_disabled(&$failureCount = null) {
		if ($this->is_ntp_disabled_via_constant())
			return true;
		$failureCount = $this->get_ntp_failure_count();
		if ($failureCount >= Controller_Time::FAILURE_LIMIT) {
			return true;
		}
		else if ($failureCount < 0) {
			$failureCount = 0;
			return true;
		}
		return false;
	}

	public function disable_ntp_cron() {
		$this->set(self::OPTION_NTP_FAILURE_COUNT, -1);
	}

	public function are_login_history_columns_enabled() {
		return Controller_Settings::shared()->get_bool(Controller_Settings::OPTION_ENABLE_LOGIN_HISTORY_COLUMNS, true);
	}

	public function should_stack_ui_columns() {
		return self::shared()->get_bool(Controller_Settings::OPTION_STACK_UI_COLUMNS, true);
	}

	/**
	 * Utility
	 */
	
	/**
	 * Translates a value to a boolean, correctly interpreting various textual representations.
	 *
	 * @param $value
	 * @return bool
	 */
	protected function _truthy_to_bool($value) {
		if ($value === true || $value === false) {
			return $value;
		}
		
		if (is_numeric($value)) {
			return !!$value;
		}
		
		if (preg_match('/^(?:f(?:alse)?|no?|off)$/i', $value)) {
			return false;
		}
		else if (preg_match('/^(?:t(?:rue)?|y(?:es)?|on)$/i', $value)) {
			return true;
		}
		
		return !empty($value);
	}
	
	/**
	 * Parses the given time string and returns its DateTime with the server's configured time zone.
	 * 
	 * @param string $timestring
	 * @return \DateTime
	 */
	protected function _parse_local_time($timestring) {
		$utc = new \DateTimeZone('UTC');
		$tz = get_option('timezone_string');
		if (!empty($tz)) {
			$tz = new \DateTimeZone($tz);
			return new \DateTime($timestring, $tz);
		}
		else {
			$gmt = get_option('gmt_offset');
			if (!empty($gmt)) {
				if (PHP_VERSION_ID < 50510) {
					$timestamp = strtotime($timestring);
					$dtStr = gmdate("c", (int) ($timestamp + $gmt * 3600)); //Have to do it this way because of < PHP 5.5.10
					return new \DateTime($dtStr, $utc);
				}
				else {
					$direction = ($gmt > 0 ? '+' : '-');
					$gmt = abs($gmt);
					$h = (int) $gmt;
					$m = ($gmt - $h) * 60;
					$tz = new \DateTimeZone($direction . str_pad($h, 2, '0', STR_PAD_LEFT) . str_pad($m, 2, '0', STR_PAD_LEFT));
					return new \DateTime($timestring, $tz);
				}
			}
		}
		return new \DateTime($timestring);
	}
	
	/**
	 * Cleans a user-entered IP range of unnecessary characters and normalizes some glyphs.
	 *
	 * @param string $range
	 * @return string
	 */
	protected function _sanitize_ip_range($range) {
		$range = preg_replace('/\s/', '', $range); //Strip whitespace
		$range = preg_replace('/[\\x{2013}-\\x{2015}]/u', '-', $range); //Non-hyphen dashes to hyphen
		$range = strtolower($range);
		
		if (preg_match('/^\d+-\d+$/', $range)) { //v5 32 bit int style format
			list($start, $end) = explode('-', $range);
			$start = long2ip($start);
			$end = long2ip($end);
			$range = "{$start}-{$end}";
		}
		
		return $range;
	}

	private function _migrate_admin_2fa_requirements_to_roles() {
		if (!$this->get_bool(self::OPTION_REQUIRE_2FA_ADMIN))
			return;
		$time = time();
		if (is_multisite()) {
			$this->set($this->get_required_2fa_role_key('super-admin'), $time, true);
		}
		else {
			$roles = new \WP_Roles();
			foreach ($roles->roles as $key => $data) {
				$role = $roles->get_role($key);
				if (Controller_Permissions::shared()->can_role_manage_settings($role) && Controller_Permissions::shared()->allow_2fa_self($role->name)) {
					$this->set($this->get_required_2fa_role_key($role->name), $time, true);
				}
			}
		}
		$this->remove(self::OPTION_REQUIRE_2FA_ADMIN);
		$this->remove(self::OPTION_REQUIRE_2FA_GRACE_PERIOD);
		$this->remove(self::OPTION_REQUIRE_2FA_GRACE_PERIOD_ENABLED);
	}

	public function reset_ntp_disabled_flag() {
		$this->remove(self::OPTION_USE_NTP);
		$this->remove(self::OPTION_NTP_OFFSET);
		$this->remove(self::OPTION_NTP_FAILURE_COUNT);
	}
}modules/login-security/classes/controller/notices.php000064400000012462150755146440017206 0ustar00<?php

namespace WordfenceLS;

use WordfenceLS\Text\Model_HTML;

class Controller_Notices {
	const USER_META_KEY = 'wfls_notices';
	const PERSISTENT_NOTICE_DISMISS_PREFIX = 'wfls-dismiss-';
	const PERSISTENT_NOTICE_WOOCOMMERCE_INTEGRATION = 'wfls-woocommerce-integration-notice';
	
	/**
	 * Returns the singleton Controller_Notices.
	 *
	 * @return Controller_Notices
	 */
	public static function shared() {
		static $_shared = null;
		if ($_shared === null) {
			$_shared = new Controller_Notices();
		}
		return $_shared;
	}

	private $persistentNotices = array();
	
	/**
	 * Adds an admin notice to the display queue. If $user is provided, it will show only for that user, otherwise it
	 * will show for all administrators.
	 *
	 * @param string $severity
	 * @param string|Model_HTML $message
	 * @param bool|string $category If not false, notices with the same category will be removed prior to adding this one.
	 * @param bool|\WP_User $user If not false, the user that the notice should show for.
	 */
	public function add_notice($severity, $message, $category = false, $user = false) {
		$notices = $this->_notices($user);
		foreach ($notices as $id => $n) {
			if ($category !== false && isset($n['category']) && $n['category'] == $category) { //Same category overwrites previous entry
				unset($notices[$id]);
			}
		}
		
		$id = Model_Crypto::uuid();
		$notices[$id] = array(
			'severity' => $severity,
			'messageHTML' => Model_HTML::esc_html($message),
		);
		
		if ($category !== false) {
			$notices[$id]['category'] = $category;
		}
		
		$this->_save_notices($notices, $user);
	}
	
	/**
	 * Removes a notice using one of two possible search methods:
	 *
	 * 	1. If $id matches. $category is ignored but only notices for $user are checked.
	 * 	2. If $category matches. Only notices for $user are checked.
	 *
	 * @param bool|int $id
	 * @param bool|string $category
	 * @param bool|\WP_User $user
	 */
	public function remove_notice($id = false, $category = false, $user = false) {
		if ($id === false && $category === false) {
			return;
		}
		else if ($id !== false) {
			$category = false;
		}
		
		$notices = $this->_notices($user);
		foreach ($notices as $nid => $n) {
			if ($id == $nid) { //ID match
				unset($notices[$nid]);
				break;
			}
			else if ($id !== false) {
				continue;
			}
			
			if ($category !== false && isset($n['category']) && $category == $n['category']) { //Category match
				unset($notices[$nid]);
			}
		}
		$this->_save_notices($notices, $user);
	}
	
	/**
	 * Returns whether or not a notice exists for the given user.
	 * 
	 * @param bool|\WP_User $user
	 * @return bool
	 */
	public function has_notice($user) {
		$notices = $this->_notices($user);
		return !!count($notices) || $this->has_persistent_notices();
	}
	
	/**
	 * Enqueues a user's notices. For administrators this also includes global notices.
	 * 
	 * @return bool Whether any notices were enqueued.
	 */
	public function enqueue_notices() {
		$user = wp_get_current_user();
		if ($user->ID == 0) {
			return false;
		}
		
		$added = false;
		$notices = array();
		if (Controller_Permissions::shared()->can_manage_settings($user)) {
			$globalNotices = $this->_notices(false);
			$notices = array_merge($notices, $globalNotices);
		}
		
		$userNotices = $this->_notices($user);
		$notices = array_merge($notices, $userNotices);
		
		foreach ($notices as $nid => $n) {
			$notice = new Model_Notice($nid, $n['severity'], $n['messageHTML'], $n['category']);
			if (is_multisite()) {
				add_action('network_admin_notices', array($notice, 'display_notice'));
			}
			else {
				add_action('admin_notices', array($notice, 'display_notice'));
			}
			
			$added = true;
		}
		
		return $added;
	}
	
	/**
	 * Utility
	 */
	
	/**
	 * Returns the notices for a user if provided, otherwise the global notices.
	 * 
	 * @param bool|\WP_User $user
	 * @return array
	 */
	protected function _notices($user) {
		if ($user instanceof \WP_User) {
			$notices = get_user_meta($user->ID, self::USER_META_KEY, true);
			return array_filter((array) $notices);
		}
		return Controller_Settings::shared()->get_array(Controller_Settings::OPTION_GLOBAL_NOTICES);
	}
	
	/**
	 * Saves the notices.
	 * 
	 * @param array $notices
	 * @param bool|\WP_User $user
	 */
	protected function _save_notices($notices, $user) {
		if ($user instanceof \WP_User) {
			update_user_meta($user->ID, self::USER_META_KEY, $notices);
			return;
		}
		Controller_Settings::shared()->set_array(Controller_Settings::OPTION_GLOBAL_NOTICES, $notices, true);
	}

	public function get_persistent_notice_ids() {
		return array(
			self::PERSISTENT_NOTICE_WOOCOMMERCE_INTEGRATION
		);
	}

	private static function get_persistent_notice_dismiss_key($noticeId) {
		return self::PERSISTENT_NOTICE_DISMISS_PREFIX . $noticeId;
	}

	public function register_persistent_notice($noticeId) {
		$this->persistentNotices[] = $noticeId;
	}

	public function has_persistent_notices() {
		return count($this->persistentNotices) > 0;
	}

	public function dismiss_persistent_notice($userId, $noticeId) {
		if (!in_array($noticeId, $this->get_persistent_notice_ids(), true))
			return false;
		update_user_option($userId, self::get_persistent_notice_dismiss_key($noticeId), true, true);
		return true;
	}

	public function is_persistent_notice_dismissed($userId, $noticeId) {
		return (bool) get_user_option(self::get_persistent_notice_dismiss_key($noticeId), $userId);
	}
}modules/login-security/classes/controller/whitelist.php000064400000022246150755146440017557 0ustar00<?php

namespace WordfenceLS;

class Controller_Whitelist {
	private $_cachedStatus = array();
	
	/**
	 * Returns the singleton Controller_Whitelist.
	 *
	 * @return Controller_Whitelist
	 */
	public static function shared() {
		static $_shared = null;
		if ($_shared === null) {
			$_shared = new Controller_Whitelist();
		}
		return $_shared;
	}
	
	public function is_whitelisted($ip) {
		$ipHash = hash('sha256', Model_IP::inet_pton($ip));
		if (isset($this->_cachedStatus[$ipHash])) {
			return $this->_cachedStatus[$ipHash];
		}
		
		$whitelist = Controller_Settings::shared()->whitelisted_ips();
		foreach ($whitelist as $entry) {
			if ($this->ip_in_range($ip, $entry)) {
				$this->_cachedStatus[$ipHash] = true;
				return true;
			}
		}
		$this->_cachedStatus[$ipHash] = false;
		return false;
	}
	
	/**
	 * Check if the supplied IP address is within the user supplied range.
	 *
	 * @param string $ip
	 * @return bool
	 */
	public function ip_in_range($ip, $range) {
		if (strpos($range, '/') !== false) { //CIDR range -- 127.0.0.1/24
			return $this->_cidr_contains_ip($range, $ip);
		}
		else if (strpos($range, '[') !== false) { //Bracketed range -- 127.0.0.[1-100]
			// IPv4 range
			if (strpos($range, '.') !== false && strpos($ip, '.') !== false) {
				// IPv4-mapped-IPv6
				if (preg_match('/:ffff:([^:]+)$/i', $range, $matches)) {
					$range = $matches[1];
				}
				if (preg_match('/:ffff:([^:]+)$/i', $ip, $matches)) {
					$ip = $matches[1];
				}
				
				// Range check
				if (preg_match('/\[\d+\-\d+\]/', $range)) {
					$ipParts = explode('.', $ip);
					$whiteParts = explode('.', $range);
					$mismatch = false;
					if (count($whiteParts) != 4 || count($ipParts) != 4) {
						return false;
					}
					
					for ($i = 0; $i <= 3; $i++) {
						if (preg_match('/^\[(\d+)\-(\d+)\]$/', $whiteParts[$i], $m)) {
							if ($ipParts[$i] < $m[1] || $ipParts[$i] > $m[2]) {
								$mismatch = true;
							}
						}
						else if ($whiteParts[$i] != $ipParts[$i]) {
							$mismatch = true;
						}
					}
					if ($mismatch === false) {
						return true; // Is whitelisted because we did not get a mismatch
					}
				}
				else if ($range == $ip) {
					return true;
				}
				
				// IPv6 range
			}
			else if (strpos($range, ':') !== false && strpos($ip, ':') !== false) {
				$ip = strtolower(Model_IP::expand_ipv6_address($ip));
				$range = strtolower($this->_expand_ipv6_range($range));
				if (preg_match('/\[[a-f0-9]+\-[a-f0-9]+\]/i', $range)) {
					$IPparts = explode(':', $ip);
					$whiteParts = explode(':', $range);
					$mismatch = false;
					if (count($whiteParts) != 8 || count($IPparts) != 8) {
						return false;
					}
					
					for ($i = 0; $i <= 7; $i++) {
						if (preg_match('/^\[([a-f0-9]+)\-([a-f0-9]+)\]$/i', $whiteParts[$i], $m)) {
							$ip_group = hexdec($IPparts[$i]);
							$range_group_from = hexdec($m[1]);
							$range_group_to = hexdec($m[2]);
							if ($ip_group < $range_group_from || $ip_group > $range_group_to) {
								$mismatch = true;
								break;
							}
						}
						else if ($whiteParts[$i] != $IPparts[$i]) {
							$mismatch = true;
							break;
						}
					}
					if ($mismatch === false) {
						return true; // Is whitelisted because we did not get a mismatch
					}
				}
				else if ($range == $ip) {
					return true;
				}
			}
		}
		else if (strpos($range, '-') !== false) { //Linear range -- 127.0.0.1 - 127.0.1.100
			list($ip1, $ip2) = explode('-', $range);
			$ip1N = Model_IP::inet_pton($ip1);
			$ip2N = Model_IP::inet_pton($ip2);
			$ipN = Model_IP::inet_pton($ip);
			return (strcmp($ip1N, $ipN) <= 0 && strcmp($ip2N, $ipN) >= 0);
		}
		else { //Treat as a literal IP
			$ip1 = Model_IP::inet_pton($range);
			$ip2 = Model_IP::inet_pton($ip);
			if ($ip1 !== false && $ip1 === $ip2) {
				return true;
			}
		}
		
		return false;
	}
	
	/**
	 * Utility
	 */
	
	/**
	 * Returns whether or not the CIDR-formatted subnet contains $ip.
	 * 
	 * @param string $subnet
	 * @param string $ip A human-readable IP.
	 * @return bool
	 */
	protected function _cidr_contains_ip($subnet, $ip) {
		list($network, $prefix) = array_pad(explode('/', $subnet, 2), 2, null);
		
		if (filter_var($network, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
			// If no prefix was supplied, 32 is implied for IPv4
			if ($prefix === null) {
				$prefix = 32;
			}
			
			// Validate the IPv4 network prefix
			if ($prefix < 0 || $prefix > 32) {
				return false;
			}
			
			// Increase the IPv4 network prefix to work in the IPv6 address space
			$prefix += 96;
		}
		else {
			// If no prefix was supplied, 128 is implied for IPv6
			if ($prefix === null) {
				$prefix = 128;
			}
			
			// Validate the IPv6 network prefix
			if ($prefix < 1 || $prefix > 128) {
				return false;
			}
		}
		
		$bin_network = Model_Crypto::substr(Model_IP::inet_pton($network), 0, ceil($prefix / 8));
		$bin_ip = Model_Crypto::substr(Model_IP::inet_pton($ip), 0, ceil($prefix / 8));
		if ($prefix % 8 != 0) { //Adjust the last relevant character to fit the mask length since the character's bits are split over it
			$pos = intval($prefix / 8);
			$adjustment = chr(((0xff << (8 - ($prefix % 8))) & 0xff));
			$bin_network[$pos] = ($bin_network[$pos] & $adjustment);
			$bin_ip[$pos] = ($bin_ip[$pos] & $adjustment);
		}
		
		return ($bin_network === $bin_ip);
	}
	
	/**
	 * Expands a compressed printable range representation of an IPv6 address.
	 *
	 * @param string $range
	 * @return string
	 */
	protected function _expand_ipv6_range($range) {
		$colon_count = substr_count($range, ':');
		$dbl_colon_count = substr_count($range, '::');
		if ($dbl_colon_count > 1) {
			return false;
		}
		$dbl_colon_pos = strpos($range, '::');
		if ($dbl_colon_pos !== false) {
			$range = str_replace('::', str_repeat(':0000', (($dbl_colon_pos === 0 || $dbl_colon_pos === strlen($range) - 2) ? 9 : 8) - $colon_count) . ':', $range);
			$range = trim($range, ':');
		}
		$colon_count = substr_count($range, ':');
		if ($colon_count != 7) {
			return false;
		}
		
		$groups = explode(':', $range);
		$expanded = '';
		foreach ($groups as $group) {
			if (preg_match('/\[([a-f0-9]{1,4})\-([a-f0-9]{1,4})\]/i', $group, $matches)) {
				$expanded .= sprintf('[%s-%s]', str_pad(strtolower($matches[1]), 4, '0', STR_PAD_LEFT), str_pad(strtolower($matches[2]), 4, '0', STR_PAD_LEFT)) . ':';
			}
			else if (preg_match('/[a-f0-9]{1,4}/i', $group)) {
				$expanded .= str_pad(strtolower($group), 4, '0', STR_PAD_LEFT) . ':';
			}
			else {
				return false;
			}
		}
		return trim($expanded, ':');
	}
	
	/**
	 * @return bool
	 */
	public function is_valid_range($range) {
		return $this->_is_valid_cidr_range($range) || $this->_is_valid_bracketed_range($range) || $this->_is_valid_linear_range($range) || Model_IP::is_valid_ip($range);
	}
	
	protected function _is_valid_cidr_range($range) { //e.g., 192.0.2.1/24
		if (preg_match('/[^0-9a-f:\/\.]/i', $range)) { return false; }
		$components = explode('/', $range);
		if (count($components) != 2) { return false; }
		
		list($ip, $prefix) = $components;
		if (!Model_IP::is_valid_ip($ip)) { return false; }
		
		if (!preg_match('/^\d+$/', $prefix)) { return false; }
		
		if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
			if ($prefix < 0 || $prefix > 32) { return false; }
		}
		else {
			if ($prefix < 1 || $prefix > 128) { return false; }
		}
		
		return true;
	}
	
	protected function _is_valid_bracketed_range($range) { //e.g., 192.0.2.[1-10]
		if (preg_match('/[^0-9a-f:\.\[\]\-]/i', $range)) { return false; }
		if (strpos($range, '.') !== false) { //IPv4
			if (preg_match_all('/(\d+)/', $range, $matches) > 0) {
				foreach ($matches[1] as $match) {
					$group = (int) $match;
					if ($group > 255 || $group < 0) {
						return false;
					}
				}
			}
			
			$group_regex = '([0-9]{1,3}|\[[0-9]{1,3}\-[0-9]{1,3}\])';
			return preg_match('/^' . str_repeat("{$group_regex}\\.", 3) . $group_regex . '$/i', $range) > 0;
		}
		
		//IPv6
		if (strpos($range, '::') !== false) {
			$range = $this->_expand_ipv6_range($range);
		}
		
		if (!$range) {
			return false;
		}
		$group_regex = '([a-f0-9]{1,4}|\[[a-f0-9]{1,4}\-[a-f0-9]{1,4}\])';
		return preg_match('/^' . str_repeat($group_regex . ':', 7) . $group_regex . '$/i', $range) > 0;
	}
	
	protected function _is_valid_linear_range($range) { //e.g., 192.0.2.1-192.0.2.100
		if (preg_match('/[^0-9a-f:\.\-]/i', $range)) { return false; }
		list($ip1, $ip2) = explode("-", $range);
		$ip1N = Model_IP::inet_pton($ip1);
		$ip2N = Model_IP::inet_pton($ip2);
		
		if ($ip1N === false || !Model_IP::is_valid_ip($ip1) || $ip2N === false || !Model_IP::is_valid_ip($ip2)) {
			return false;
		}
		
		return strcmp($ip1N, $ip2N) <= 0;
	}
	
	protected function _is_mixed_range($range) { //e.g., 192.0.2.1-2001:db8::ffff
		if (preg_match('/[^0-9a-f:\.\-]/i', $range)) { return false; }
		list($ip1, $ip2) = explode("-", $range);
		
		$ipv4Count = 0;
		$ipv4Count += filter_var($ip1, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) !== false ? 1 : 0;
		$ipv4Count += filter_var($ip2, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) !== false ? 1 : 0;
		
		$ipv6Count = 0;
		$ipv6Count += filter_var($ip1, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) !== false ? 1 : 0;
		$ipv6Count += filter_var($ip2, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) !== false ? 1 : 0;
		
		if ($ipv4Count != 2 && $ipv6Count != 2) {
			return true;
		}
		
		return false;
	}
}modules/login-security/classes/controller/time.php000064400000014551150755146440016501 0ustar00<?php

namespace WordfenceLS;

class Controller_Time {
	const NTP_VERSION = 3; // https://www.ietf.org/rfc/rfc1305.txt
	const NTP_EPOCH_CONVERT = 2208988800; //RFC 5905, page 13
	const FAILURE_LIMIT = 3;
	
	/**
	 * Returns the singleton Controller_Time.
	 *
	 * @return Controller_Time
	 */
	public static function shared() {
		static $_shared = null;
		if ($_shared === null) {
			$_shared = new Controller_Time();
		}
		return $_shared;
	}
	
	public function install() {
		wp_clear_scheduled_hook('wordfence_ls_ntp_cron');
		if (is_main_site()) {
			wp_schedule_event(time() + 10, 'hourly', 'wordfence_ls_ntp_cron');
		}
		Controller_Settings::shared()->reset_ntp_disabled_flag();
	}
	
	public function uninstall() {
		wp_clear_scheduled_hook('wordfence_ls_ntp_cron');
		Controller_Settings::shared()->reset_ntp_disabled_flag();
	}
	
	public function init() {
		$this->_init_actions();
	}
	
	public function _init_actions() {
		add_action('wordfence_ls_ntp_cron', array($this, '_wordfence_ls_ntp_cron'));
	}
	
	public function _wordfence_ls_ntp_cron() {
		if (Controller_Settings::shared()->get_bool(Controller_Settings::OPTION_ALLOW_DISABLING_NTP) && Controller_Settings::shared()->is_ntp_cron_disabled())
			return;
		$ntp = self::ntp_time();
		$time = time();
		
		if ($ntp === false) {
			$failureCount = Controller_Settings::shared()->increment_ntp_failure_count();
			if ($failureCount >= self::FAILURE_LIMIT) {
				Controller_Settings::shared()->set(Controller_Settings::OPTION_USE_NTP, false);
				Controller_Settings::shared()->set(Controller_Settings::OPTION_NTP_OFFSET, 0);
			}
		}
		else {
			Controller_Settings::shared()->reset_ntp_failure_count();
			Controller_Settings::shared()->set(Controller_Settings::OPTION_USE_NTP, true);
			Controller_Settings::shared()->set(Controller_Settings::OPTION_NTP_OFFSET, $ntp - $time);
		}
		Controller_Settings::shared()->set(Controller_Settings::OPTION_ALLOW_DISABLING_NTP, true);
	}
	
	/**
	 * Returns the current UTC timestamp, offset as needed to reflect the time retrieved from an NTP request or (if
	 * running in the complete plugin) offset as needed from the Wordfence server's true time.
	 * 
	 * @param bool|int $time The timestamp to apply any offset to. If `false`, it will use the current timestamp.
	 * @return int
	 */
	public static function time($time = false) {
		if ($time === false) {
			$time = time();
		}
		
		$offset = 0;
		if (Controller_Settings::shared()->is_ntp_enabled()) {
			$offset = Controller_Settings::shared()->get_int(Controller_Settings::OPTION_NTP_OFFSET);
		}
		else if (WORDFENCE_LS_FROM_CORE) {
			$offset = \wfUtils::normalizedTime($time) - $time;
		}
		
		return $time + $offset;
	}
	
	/**
	 * Returns the current timestamp from ntp.org using the NTP protocol. If unable to (e.g., UDP connections are blocked),
	 * it will return false.
	 * 
	 * @return bool|float
	 */
	public static function ntp_time() {
		$servers = array('0.pool.ntp.org', '1.pool.ntp.org', '2.pool.ntp.org', '3.pool.ntp.org');
		
		//Header - RFC 5905, page 18
		$header = '00'; //LI (leap indicator) - 2 bits: 00 for "no warning"
		$header .= sprintf('%03d', decbin(self::NTP_VERSION)); //VN (version number) - 3 bits: 011 for version 3
		$header .= '011'; //Mode (association mode) - 3 bit: 011 for "client"
		
		$packet = chr(bindec($header));
		$packet .= str_repeat("\x0", 39);
		
		foreach ($servers as $s) {
			$socket = @fsockopen('udp://' . $s, 123, $err_no, $err_str, 1);
			if ($socket) {
				stream_set_timeout($socket, 1);
				$remote_originate = microtime(true);
				$secondsNTP = ((int) $remote_originate) + self::NTP_EPOCH_CONVERT;
				$fractional = sprintf('%010d', round(($remote_originate - ((int) $remote_originate)) * 0x100000000));
				$packed = pack('N', $secondsNTP) . pack('N', $fractional);
				
				if (@fwrite($socket, $packet . $packed)) {
					$response = fread($socket, 48);
					$local_transmitted = microtime(true);
				}
				@fclose($socket);
				
				if (isset($response) && Model_Crypto::strlen($response) == 48) {
					break;
				}
			}
		}
		
		if (isset($response) && Model_Crypto::strlen($response) == 48) {
			$longs = unpack("N12", $response);
			
			$remote_originate_seconds = sprintf('%u', $longs[7]) - self::NTP_EPOCH_CONVERT;
			$remote_received_seconds = sprintf('%u', $longs[9]) - self::NTP_EPOCH_CONVERT;
			$remote_transmitted_seconds = sprintf('%u', $longs[11]) - self::NTP_EPOCH_CONVERT;
			
			$remote_originate_fraction = sprintf('%u', $longs[8]) / 0x100000000;
			$remote_received_fraction = sprintf('%u', $longs[10]) / 0x100000000;
			$remote_transmitted_fraction = sprintf('%u', $longs[12]) / 0x100000000;
			
			$remote_originate = $remote_originate_seconds + $remote_originate_fraction;
			$remote_received = $remote_received_seconds + $remote_received_fraction;
			$remote_transmitted = $remote_transmitted_seconds + $remote_transmitted_fraction;
			
			$delay = (($local_transmitted - $remote_originate) / 2)  - ($remote_transmitted - $remote_received);
			
			$ntp_time =  $remote_transmitted - $delay;
			return $ntp_time;
		}
		
		return false;
	}
	
	/**
	 * Formats and returns the given timestamp using the time zone set for the WordPress installation.
	 *
	 * @param string $format See the PHP docs on DateTime for the format options.
	 * @param int|bool $timestamp Assumed to be in UTC. If false, defaults to the current timestamp.
	 * @return string
	 */
	public static function format_local_time($format, $timestamp = false) {
		if ($timestamp === false) {
			$timestamp = self::time();
		}
		
		$utc = new \DateTimeZone('UTC');
		if (!function_exists('date_timestamp_set')) {
			$dtStr = gmdate("c", (int) $timestamp); //Have to do it this way because of PHP 5.2
			$dt = new \DateTime($dtStr, $utc);
		}
		else {
			$dt = new \DateTime('now', $utc);
			$dt->setTimestamp($timestamp);
		}
		
		$tz = get_option('timezone_string');
		if (!empty($tz)) {
			$dt->setTimezone(new \DateTimeZone($tz));
		}
		else {
			$gmt = get_option('gmt_offset');
			if (!empty($gmt)) {
				if (PHP_VERSION_ID < 50510) {
					$dtStr = gmdate("c", (int) ($timestamp + $gmt * 3600)); //Have to do it this way because of < PHP 5.5.10
					$dt = new \DateTime($dtStr, $utc);
				}
				else {
					$direction = ($gmt > 0 ? '+' : '-');
					$gmt = abs($gmt);
					$h = (int) $gmt;
					$m = ($gmt - $h) * 60;
					$dt->setTimezone(new \DateTimeZone($direction . str_pad($h, 2, '0', STR_PAD_LEFT) . str_pad($m, 2, '0', STR_PAD_LEFT)));
				}
			}
		}
		return $dt->format($format);
	}
}modules/login-security/classes/controller/cron.php000064400000000006150755146440016472 0ustar00<?php
modules/login-security/classes/controller/captcha.php000064400000010122150755146440017134 0ustar00<?php

namespace WordfenceLS;

class Controller_CAPTCHA {
	const RESPONSE_MODE_ALLOW = 'allow';
	const RESPONSE_MODE_REQUIRE_VERIFICATION = 'verify';
	
	const RECAPTCHA_ENDPOINT = 'https://www.google.com/recaptcha/api/siteverify';
	
	/**
	 * Returns the singleton Controller_CAPTCHA.
	 *
	 * @return Controller_CAPTCHA
	 */
	public static function shared() {
		static $_shared = null;
		if ($_shared === null) {
			$_shared = new Controller_CAPTCHA();
		}
		return $_shared;
	}
	
	/**
	 * Returns whether or not the authentication CAPTCHA is enabled.
	 * 
	 * @return bool
	 */
	public function enabled() {
		$key = $this->site_key();
		$secret = $this->_secret();
		return Controller_Settings::shared()->get_bool(Controller_Settings::OPTION_ENABLE_AUTH_CAPTCHA) && !empty($key) && !empty($secret);
	}
	
	/**
	 * Returns the public reCAPTCHA key if set.
	 * 
	 * @return string|bool
	 */
	public function site_key() {
		return Controller_Settings::shared()->get(Controller_Settings::OPTION_RECAPTCHA_SITE_KEY);
	}
	
	/**
	 * Returns the private reCAPTCHA secret if set.
	 * 
	 * @return string|bool
	 */
	protected function _secret() {
		return Controller_Settings::shared()->get(Controller_Settings::OPTION_RECAPTCHA_SECRET);
	}
	
	/**
	 * Returns the bot/human threshold for comparing the score against, defaulting to 0.5.
	 * 
	 * @return float
	 */
	public function threshold() {
		return max(0.1, Controller_Settings::shared()->get_float(Controller_Settings::OPTION_RECAPTCHA_THRESHOLD, 0.5));
	}

	/**
	 * Determine whether or not test mode for reCAPTCHA is enabled
	 *
	 * @return bool
	 */
	public function test_mode() {
		return Controller_Settings::shared()->get_bool(\WordfenceLS\Controller_Settings::OPTION_CAPTCHA_TEST_MODE);
	}
	
	/**
	 * Queries the reCAPTCHA endpoint with the given token, verifies the action matches, and returns the corresponding 
	 * score. If validation fails, false is returned. Any other failure (e.g., mangled response or connection dropped) returns 0.0.
	 * 
	 * @param string $token
	 * @param string $action
	 * @param int $timeout
	 * @return float|false
	 */
	public function score($token, $action = 'login', $timeout = 10) {
		try {
			$payload = array(
				'secret' => $this->_secret(),
				'response' => $token,
				'remoteip' => Model_Request::current()->ip(),
			);
			
			$response = wp_remote_post(self::RECAPTCHA_ENDPOINT,
				array(
					'body'    => $payload,
					'headers' => array(
						'Referer' => false,
					),
					'timeout' => $timeout,
					'blocking' => true,
			));
			
			if (!is_wp_error($response)) {
				$jsonResponse = wp_remote_retrieve_body($response);
				$decoded = @json_decode($jsonResponse, true);
				if (is_array($decoded) && isset($decoded['success'])) {
					if ($decoded['success']) {
						if (isset($decoded['score']) && isset($decoded['action']) && $decoded['action'] == $action) {
							return (float) $decoded['score'];
						}
					}
					return false;
				}
			}
		}
		catch (\Exception $e) {
			//Fall through
		}
		
		return 0.0;
	}
	
	/**
	 * Returns true if the score is >= the threshold to be considered a human request.
	 * 
	 * @param float $score
	 * @return bool
	 */
	public function is_human($score) {
		if ($this->test_mode()) {
			return true;
		}
		
		$threshold = $this->threshold();
		return ($score >= $threshold || abs($score - $threshold) < 0.0001);
	}

	/**
	 * Check if the current request is an XML RPC request
	 * @return bool
	 */
	private static function is_xml_rpc() {
		return defined('XMLRPC_REQUEST') && XMLRPC_REQUEST;
	}

	/**
	 * Check if captcha is required for the current request
	 * @return bool
	 */
	public function is_captcha_required() {
		$required = $this->enabled() && !self::is_xml_rpc();
		return apply_filters('wordfence_ls_require_captcha', $required);
	}

	/**
	 * Get the captcha token provided with the current request
	 * @param string $key if specified, override the default token parameter
	 * @return string|null the captcha token, if present, null otherwise
	 */
	public function get_token($key = 'wfls-captcha-token') {
		return (isset($_POST[$key]) && is_string($_POST[$key]) && !empty($_POST[$key]) ? $_POST[$key] : null);
	}
}modules/login-security/classes/controller/ajax.php000064400000063350150755146440016467 0ustar00<?php

namespace WordfenceLS;

use WordfenceLS\Crypto\Model_JWT;
use WordfenceLS\Crypto\Model_Symmetric;

class Controller_AJAX {

	const MAX_USERS_TO_NOTIFY = 100;

	protected $_actions = null; //Populated on init
	
	/**
	 * Returns the singleton Controller_AJAX.
	 *
	 * @return Controller_AJAX
	 */
	public static function shared() {
		static $_shared = null;
		if ($_shared === null) {
			$_shared = new Controller_AJAX();
		}
		return $_shared;
	}
	
	public function init() {
		$this->_actions = array(      
			'authenticate' => array(
				'handler' => array($this, '_ajax_authenticate_callback'),
				'nopriv' => true,
				'nonce' => false,
				'permissions' => array(), //Format is 'permission' => 'error message'
				'required_parameters' => array(),
			),
			'register_support' => array(
				'handler' => array($this, '_ajax_register_support_callback'),
				'nopriv' => true,
				'nonce' => false,
				'permissions' => array(),
				'required_parameters' => array('wfls-message-nonce', 'wfls-message'),
			),
			'activate' => array(
				'handler' => array($this, '_ajax_activate_callback'),
				'permissions' => array(),
				'required_parameters' => array('nonce', 'secret', 'recovery', 'code', 'user'),
			),
			'deactivate' => array(
				'handler' => array($this, '_ajax_deactivate_callback'),
				'permissions' => array(),
				'required_parameters' => array('nonce', 'user'),
			),
			'regenerate' => array(
				'handler' => array($this, '_ajax_regenerate_callback'),
				'permissions' => array(),
				'required_parameters' => array('nonce', 'user'),
			),
			'save_options' => array(
				'handler' => array($this, '_ajax_save_options_callback'),
				'permissions' => array(Controller_Permissions::CAP_MANAGE_SETTINGS => function() { return __('You do not have permission to change options.', 'wordfence'); }), //These are deliberately written as closures to be executed later so that WP doesn't load the translations too early, which can cause it not to pick up user-specific language settings
				'required_parameters' => array('nonce', 'changes'),
			),
			'send_grace_period_notification' => array(
				'handler' => array($this, '_ajax_send_grace_period_notification_callback'),
				'permissions' => array(Controller_Permissions::CAP_MANAGE_SETTINGS => function() { return __('You do not have permission to send notifications.', 'wordfence'); }),
				'required_parameters' => array('nonce', 'role', 'url'),
			),
			'update_ip_preview' => array(
				'handler' => array($this, '_ajax_update_ip_preview_callback'),
				'permissions' => array(Controller_Permissions::CAP_MANAGE_SETTINGS => function() { return __('You do not have permission to change options.', 'wordfence'); }),
				'required_parameters' => array('nonce', 'ip_source', 'ip_source_trusted_proxies'),
			),
			'dismiss_notice' => array(
				'handler' => array($this, '_ajax_dismiss_notice_callback'),
				'permissions' => array(),
				'required_parameters' => array('nonce', 'id'),
			),
			'reset_recaptcha_stats' => array(
				'handler' => array($this, '_ajax_reset_recaptcha_stats_callback'),
				'permissions' => array(Controller_Permissions::CAP_MANAGE_SETTINGS => function() { return __('You do not have permission to reset reCAPTCHA statistics.', 'wordfence'); }),
				'required_parameters' => array('nonce'),
			),
			'reset_2fa_grace_period' => array (
				'handler' => array($this, '_ajax_reset_2fa_grace_period_callback'),
				'permissions' => array(Controller_Permissions::CAP_MANAGE_SETTINGS => function() { return __('You do not have permission to reset the 2FA grace period.', 'wordfence'); }),
				'required_parameters' => array('nonce', 'user_id')
			),
			'revoke_2fa_grace_period' => array (
				'handler' => array($this, '_ajax_revoke_2fa_grace_period_callback'),
				'permissions' => array(Controller_Permissions::CAP_MANAGE_SETTINGS => function() { return __('You do not have permission to revoke the 2FA grace period.', 'wordfence'); }),
				'required_parameters' => array('nonce', 'user_id')
			),
			'reset_ntp_failure_count' => array(
				'handler' => array($this, '_ajax_reset_ntp_failure_count_callback'),
				'permissions' => array(Controller_Permissions::CAP_MANAGE_SETTINGS => function() { return __('You do not have permission to reset the NTP failure count.', 'wordfence'); }),
				'required_parameters' => array(),
			),
			'disable_ntp' => array(
				'handler' => array($this, '_ajax_disable_ntp_callback'),
				'permissions' => array(Controller_Permissions::CAP_MANAGE_SETTINGS => function() { return __('You do not have permission to disable NTP.', 'wordfence'); }),
				'required_parameters' => array(),
			),
			'dismiss_persistent_notice' => array(
				'handler' => array($this, '_ajax_dismiss_persistent_notice_callback'),
				'permissions' => array(Controller_Permissions::CAP_MANAGE_SETTINGS => function() { return __('You do not have permission to dismiss this notice.', 'wordfence'); }),
				'required_parameters' => array('nonce', 'notice_id')
			)
		);
		
		$this->_init_actions();
	}
	
	public function _init_actions() {
		foreach ($this->_actions as $action => $parameters) {
			if (isset($parameters['nopriv']) && $parameters['nopriv']) {
				add_action('wp_ajax_nopriv_wordfence_ls_' . $action, array($this, '_ajax_handler'));
			}
			add_action('wp_ajax_wordfence_ls_' . $action, array($this, '_ajax_handler'));
		}
	}
	
	/**
	 * This is a convenience function for sending a JSON response and ensuring that execution stops after sending
	 * since wp_die() can be interrupted.
	 *
	 * @param $response
	 * @param int|null $status_code
	 */
	public static function send_json($response, $status_code = null) {
		wp_send_json($response, $status_code);
		die();
	}
	
	public function _ajax_handler() {
		$action = (isset($_POST['action']) && is_string($_POST['action']) && $_POST['action']) ? $_POST['action'] : $_GET['action'];
		if (preg_match('~wordfence_ls_([a-zA-Z_0-9]+)$~', $action, $matches)) {
			$action = $matches[1];
			if (!isset($this->_actions[$action])) {
				self::send_json(array('error' => esc_html__('An unknown action was provided.', 'wordfence')));
			}
			
			$parameters = $this->_actions[$action];
			if (!empty($parameters['required_parameters'])) {
				foreach ($parameters['required_parameters'] as $k) {
					if (!isset($_POST[$k])) {
						self::send_json(array('error' => esc_html__('An expected parameter was not provided.', 'wordfence')));
					}
				}
			}
			
			if (!isset($parameters['nonce']) || $parameters['nonce']) {
				$nonce = (isset($_POST['nonce']) && is_string($_POST['nonce']) && $_POST['nonce']) ? $_POST['nonce'] : $_GET['nonce'];
				if (!is_string($nonce) || !wp_verify_nonce($nonce, 'wp-ajax')) {
					self::send_json(array('error' => esc_html__('Your browser sent an invalid security token. Please try reloading this page.', 'wordfence'), 'tokenInvalid' => 1));
				}
			}
			
			if (!empty($parameters['permissions'])) {
				$user = wp_get_current_user();
				foreach ($parameters['permissions'] as $permission => $error) {
					if (!user_can($user, $permission)) {
						self::send_json(array('error' => $error()));
					}
				}
			}
			
			call_user_func($parameters['handler']);
		}
	}
	
	public function _ajax_authenticate_callback() {
		$credentialKeys = array(
			'log' => 'pwd',
			'username' => 'password'
		);
		$username = null;
		$password = null;
		foreach ($credentialKeys as $usernameKey => $passwordKey) {
			if (array_key_exists($usernameKey, $_POST) && array_key_exists($passwordKey, $_POST) && is_string($_POST[$usernameKey]) && is_string($_POST[$passwordKey])) {
				$username = $_POST[$usernameKey];
				$password = $_POST[$passwordKey];
				break;
			}
		}
		if (empty($username) || empty($password)) {
			self::send_json(array('error' => wp_kses(sprintf(__('<strong>ERROR</strong>: A username and password must be provided. <a href="%s" title="Password Lost and Found">Lost your password</a>?', 'wordfence'), wp_lostpassword_url()), array('strong'=>array(), 'a'=>array('href'=>array(), 'title'=>array())))));
		}
		
		$legacy2FAActive = Controller_WordfenceLS::shared()->legacy_2fa_active();
		if ($legacy2FAActive) { //Legacy 2FA is active, pass it on to the authenticate filter
			self::send_json(array('login' => 1));
		}
		
		do_action_ref_array('wp_authenticate', array(&$username, &$password));
		
		define('WORDFENCE_LS_AUTHENTICATION_CHECK', true); //Prevents our auth filter from recursing
		$user = wp_authenticate($username, $password);
		if (is_object($user) && ($user instanceof \WP_User)) {
			if (!Controller_Users::shared()->has_2fa_active($user) || Controller_Whitelist::shared()->is_whitelisted(Model_Request::current()->ip()) || Controller_Users::shared()->has_remembered_2fa($user) || defined('WORDFENCE_LS_COMBINED_IS_VALID')) { //Not enabled for this user, is whitelisted, has a valid remembered cookie, or has already provided a 2FA code via the password field pass the credentials on to the normal login flow
				self::send_json(array('login' => 1));
			}
			self::send_json(array('login' => 1, 'two_factor_required' => true));
		}
		else if (is_wp_error($user)) {
			$errors = array();
			$messages = array();
			$reset = false;
			foreach ($user->get_error_codes() as $code) {
				if ($code == 'invalid_username' || $code == 'invalid_email' || $code == 'incorrect_password' || $code == 'authentication_failed') {
					$errors[] = wp_kses(sprintf(__('<strong>ERROR</strong>: The username or password you entered is incorrect. <a href="%s" title="Password Lost and Found">Lost your password</a>?', 'wordfence'), wp_lostpassword_url()), array('strong'=>array(), 'a'=>array('href'=>array(), 'title'=>array())));
				}
				else {
					if ($code == 'wfls_twofactor_invalid') {
						$reset = true;
					}
					
					$severity = $user->get_error_data($code);
					foreach ($user->get_error_messages($code) as $error_message) {
						if ($severity == 'message') {
							$messages[] = $error_message;
						}
						else {
							$errors[] = $error_message;
						}
					}
				}
			}
			
			if (!empty($errors)) {
				$errors = implode('<br>', $errors);
				$errors = apply_filters('login_errors', $errors);
				self::send_json(array('error' => $errors, 'reset' => $reset));
			}
			
			if (!empty($messages)) {
				$messages = implode('<br>', $messages);
				$messages = apply_filters('login_errors', $messages);
				self::send_json(array('message' => $messages, 'reset' => $reset));
			}
		}
		
		self::send_json(array('error' => wp_kses(sprintf(__('<strong>ERROR</strong>: The username or password you entered is incorrect. <a href="%s" title="Password Lost and Found">Lost your password</a>?', 'wordfence'), wp_lostpassword_url()), array('strong'=>array(), 'a'=>array('href'=>array(), 'title'=>array())))));
	}
	
	public function _ajax_register_support_callback() {
		$email = null;
		if (array_key_exists('email', $_POST) && is_string($_POST['email'])) {
			$email = $_POST['email'];
		}
		else if (array_key_exists('user_email', $_POST) && is_string($_POST['user_email'])) {
			$email = $_POST['user_email'];
		}
		if (
			$email === null ||
			!isset($_POST['wfls-message']) || !is_string($_POST['wfls-message']) ||
			!isset($_POST['wfls-message-nonce']) || !is_string($_POST['wfls-message-nonce'])) {
			self::send_json(array('error' => wp_kses(sprintf(__('<strong>ERROR</strong>: Unable to send message. Please refresh the page and try again.', 'wordfence')), array('strong'=>array()))));
		}
		
		$email = sanitize_email($email);
		$login = '';
		if (array_key_exists('user_login', $_POST) && is_string($_POST['user_login']))
			$login = sanitize_user($_POST['user_login']);
		$message = strip_tags($_POST['wfls-message']);
		$nonce = $_POST['wfls-message-nonce'];

		if ((isset($_POST['user_login']) && empty($login)) || empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL) || empty($message)) {
			self::send_json(array('error' => wp_kses(sprintf(__('<strong>ERROR</strong>: Unable to send message. Please refresh the page and try again.', 'wordfence')), array('strong'=>array()))));
		}
		
		$jwt = Model_JWT::decode_jwt($_POST['wfls-message-nonce']);
		if ($jwt && isset($jwt->payload['ip']) && isset($jwt->payload['score'])) {
			$decryptedIP = Model_Symmetric::decrypt($jwt->payload['ip']);
			$decryptedScore = Model_Symmetric::decrypt($jwt->payload['score']);
			if ($decryptedIP === false || $decryptedScore === false || Model_IP::inet_pton($decryptedIP) !== Model_IP::inet_pton(Model_Request::current()->ip())) { //JWT IP and the current request's IP don't match, refuse the message
				self::send_json(array('error' => wp_kses(sprintf(__('<strong>ERROR</strong>: Unable to send message. Please refresh the page and try again.', 'wordfence')), array('strong'=>array()))));
			}
			
			$identifier = bin2hex(Model_IP::inet_pton($decryptedIP));
			$tokenBucket = new Model_TokenBucket('rate:' . $identifier, 2, 1 / (6 * Model_TokenBucket::HOUR)); //Maximum of two requests, refilling at a rate of one per six hours
			if (!$tokenBucket->consume(1)) {
				self::send_json(array('error' => wp_kses(sprintf(__('<strong>ERROR</strong>: Unable to send message. You have exceeded the maximum number of messages that may be sent at this time. Please try again later.', 'wordfence')), array('strong'=>array()))));
			}
			
			$email = array(
				'to'      => get_site_option('admin_email'),
				'subject' => __('Blocked User Registration Contact Form', 'wordfence'),
				'body'    => sprintf(__("A visitor blocked from registration sent the following message.\n\n----------------------------------------\n\nIP: %s\nUsername: %s\nEmail: %s\nreCAPTCHA Score: %f\n\n----------------------------------------\n\n%s", 'wordfence'), $decryptedIP, $login, $email, $decryptedScore, $message),
				'headers' => '',
			);
			$success = wp_mail($email['to'], $email['subject'], $email['body'], $email['headers']);
			if ($success) {
				self::send_json(array('message' => wp_kses(sprintf(__('<strong>MESSAGE SENT</strong>: Your message was sent to the site owner.', 'wordfence')), array('strong'=>array()))));
			}
			
			self::send_json(array('error' => wp_kses(sprintf(__('<strong>ERROR</strong>: An error occurred while sending the message. Please try again.', 'wordfence')), array('strong'=>array()))));
		}
		
		self::send_json(array('error' => wp_kses(sprintf(__('<strong>ERROR</strong>: Unable to send message. Please refresh the page and try again.', 'wordfence')), array('strong'=>array()))));
	}
	
	public function _ajax_activate_callback() {
		$userID = (int) @$_POST['user'];
		$user = wp_get_current_user();
		if ($user->ID != $userID) {
			if (!user_can($user, Controller_Permissions::CAP_ACTIVATE_2FA_OTHERS)) {
				self::send_json(array('error' => esc_html__('You do not have permission to activate the given user.', 'wordfence')));
			}
			else {
				$user = new \WP_User($userID);
				if (!$user->exists()) {
					self::send_json(array('error' => esc_html__('The given user does not exist.', 'wordfence')));
				}
			}
		}
		else if (!user_can($user, Controller_Permissions::CAP_ACTIVATE_2FA_SELF)) {
			self::send_json(array('error' => esc_html__('You do not have permission to activate 2FA.', 'wordfence')));
		}
		
		if (Controller_Users::shared()->has_2fa_active($user)) {
			self::send_json(array('error' => esc_html__('The given user already has two-factor authentication active.', 'wordfence')));
		}
		
		$matches = (isset($_POST['secret']) && isset($_POST['code']) && is_string($_POST['secret']) && is_string($_POST['code']) && Controller_TOTP::shared()->check_code($_POST['secret'], $_POST['code']));
		if ($matches === false) {
			self::send_json(array('error' => esc_html__('The code provided does not match the expected value. Please verify that the time on your authenticator device is correct and that this server\'s time is correct.', 'wordfence')));
		}
		
		Controller_TOTP::shared()->activate_2fa($user, $_POST['secret'], $_POST['recovery'], $matches);
		Controller_Notices::shared()->remove_notice(false, 'wfls-will-be-required', $user);
		self::send_json(array('activated' => 1, 'text' => sprintf(count($_POST['recovery']) == 1 ? esc_html__('%d unused recovery code remains. You may generate a new set by clicking below.', 'wordfence') : esc_html__('%d unused recovery codes remain. You may generate a new set by clicking below.', 'wordfence'), count($_POST['recovery']))));
	}
	
	public function _ajax_deactivate_callback() {
		$userID = (int) @$_POST['user'];
		$user = wp_get_current_user();
		if ($user->ID != $userID) {
			if (!user_can($user, Controller_Permissions::CAP_ACTIVATE_2FA_OTHERS)) {
				self::send_json(array('error' => esc_html__('You do not have permission to deactivate the given user.', 'wordfence')));
			}
			else {
				$user = new \WP_User($userID);
				if (!$user->exists()) {
					self::send_json(array('error' => esc_html__('The user does not exist.', 'wordfence')));
				}
			}
		}
		else if (!user_can($user, Controller_Permissions::CAP_ACTIVATE_2FA_SELF)) {
			self::send_json(array('error' => esc_html__('You do not have permission to deactivate 2FA.', 'wordfence')));
		}
		
		if (!Controller_Users::shared()->has_2fa_active($user)) {
			self::send_json(array('error' => esc_html__('The user specified does not have two-factor authentication active.', 'wordfence')));
		}
		
		Controller_Users::shared()->deactivate_2fa($user);
		self::send_json(array('deactivated' => 1));
	}
	
	public function _ajax_regenerate_callback() {
		$userID = (int) @$_POST['user'];
		$user = wp_get_current_user();
		if ($user->ID != $userID) {
			if (!user_can($user, Controller_Permissions::CAP_ACTIVATE_2FA_OTHERS)) {
				self::send_json(array('error' => esc_html__('You do not have permission to generate new recovery codes for the given user.', 'wordfence')));
			}
			else {
				$user = new \WP_User($userID);
				if (!$user->exists()) {
					self::send_json(array('error' => esc_html__('The user does not exist.', 'wordfence')));
				}
			}
		}
		else if (!user_can($user, Controller_Permissions::CAP_ACTIVATE_2FA_SELF)) {
			self::send_json(array('error' => esc_html__('You do not have permission to generate new recovery codes.', 'wordfence')));
		}
		
		if (!Controller_Users::shared()->has_2fa_active($user)) {
			self::send_json(array('error' => esc_html__('The user specified does not have two-factor authentication active.', 'wordfence')));
		}
		
		$codes = Controller_Users::shared()->regenerate_recovery_codes($user);
		self::send_json(array('regenerated' => 1, 'recovery' => array_map(function($r) { return implode(' ', str_split(bin2hex($r), 4)); }, $codes), 'text' => sprintf(count($codes) == 1 ? esc_html__('%d unused recovery code remains. You may generate a new set by clicking below.', 'wordfence') : esc_html__('%d unused recovery codes remain. You may generate a new set by clicking below.', 'wordfence'), count($codes))));
	}
	
	public function _ajax_save_options_callback() {
		if (!empty($_POST['changes']) && is_string($_POST['changes']) && is_array($changes = json_decode(stripslashes($_POST['changes']), true))) {
			try {
				$errors = Controller_Settings::shared()->validate_multiple($changes);
				if ($errors !== true) {
					if (count($errors) == 1) {
						$e = array_shift($errors);
						self::send_json(array('error' => esc_html(sprintf(__('An error occurred while saving the configuration: %s', 'wordfence'), $e))));
					}
					else if (count($errors) > 1) {
						$compoundMessage = array();
						foreach ($errors as $e) {
							$compoundMessage[] = esc_html($e);
						}
						self::send_json(array(
							'error' => wp_kses(sprintf(__('Errors occurred while saving the configuration: %s', 'wordfence'), '<ul><li>' . implode('</li><li>', $compoundMessage) . '</li></ul>'), array('ul'=>array(), 'li'=>array())),
							'html' => true,
						));
					}
					
					self::send_json(array(
						'error' => esc_html__('Errors occurred while saving the configuration.', 'wordfence'),
					));
				}
				
				Controller_Settings::shared()->set_multiple($changes);

				if (array_key_exists(Controller_Settings::OPTION_ENABLE_WOOCOMMERCE_ACCOUNT_INTEGRATION, $changes) || array_key_exists(Controller_Settings::OPTION_ENABLE_WOOCOMMERCE_INTEGRATION, $changes))
					Controller_WordfenceLS::shared()->refresh_rewrite_rules();
				
				$response = array('success' => true);
				return self::send_json($response);
			}
			catch (\Exception $e) {
				self::send_json(array(
					'error' => $e->getMessage(),
				));
			}
		}
		
		self::send_json(array(
			'error' => esc_html__('No configuration changes were provided to save.', 'wordfence'),
		));
	}
	
	public function _ajax_send_grace_period_notification_callback() {
		$notifyAll = isset($_POST['notify_all']);
		$users = Controller_Users::shared()->get_users_by_role($_POST['role'], $notifyAll ? null: self::MAX_USERS_TO_NOTIFY + 1);
		$url = $_POST['url'];
		if (!empty($url)) {
			$url = get_site_url(null, $url);
			if (filter_var($url, FILTER_VALIDATE_URL) === false) {
				self::send_json(array('error' => esc_html__('The specified URL is invalid.', 'wordfence')));
			}
		}
		$userCount = count($users);
		if (!$notifyAll && $userCount > self::MAX_USERS_TO_NOTIFY)
			self::send_json(array('error' => esc_html(sprintf(__('More than %d users exist for the selected role. This notification is not designed to handle large groups of users. In such instances, using a different solution for notifying users of upcoming 2FA requirements is recommended.', 'wordfence'), self::MAX_USERS_TO_NOTIFY)), 'limit_exceeded' => true));
		$sent = 0;
		foreach ($users as $user) {
			Controller_Users::shared()->requires_2fa($user, $inGracePeriod, $requiredAt);
			if ($inGracePeriod && !Controller_Users::shared()->has_2fa_active($user)) {
				$subject = sprintf(__('2FA will soon be required on %s', 'wordfence'), home_url());
				$requiredDate = Controller_Time::format_local_time('F j, Y g:i A', $requiredAt);
				if (empty($url)) {
					$userUrl = (is_multisite() && is_super_admin($user->ID)) ? network_admin_url('admin.php?page=WFLS') : admin_url('admin.php?page=WFLS');
				}
				else {
					$userUrl = $url;
				}

				$message = sprintf(
					__("<html><body><p>You do not currently have two-factor authentication active on your account, which will be required beginning %s.</p><p><a href=\"%s\">Configure 2FA</a></p></body></html>", 'wordfence'),
					$requiredDate,
					htmlentities($userUrl)
				);
				
				wp_mail($user->user_email, $subject, $message, array('Content-Type: text/html'));
				$sent++;
			}
		}

		if ($userCount == 0) {
			self::send_json(array('error' => esc_html__('No users currently exist with the selected role.', 'wordfence')));
		}
		else if ($sent == 0) {
			self::send_json(array('confirmation' => esc_html__('All users with the selected role already have two-factor authentication activated or have been locked out.', 'wordfence')));
		}
		else if ($sent == 1) {
			self::send_json(array('confirmation' => esc_html(sprintf(__('A reminder to activate two-factor authentication was sent to %d user.', 'wordfence'), $sent))));
		}
		self::send_json(array('confirmation' => esc_html(sprintf(__('A reminder to activate two-factor authentication was sent to %d users.', 'wordfence'), $sent))));
	}
	
	public function _ajax_update_ip_preview_callback() {
		$source = $_POST['ip_source'];
		$raw_proxies = $_POST['ip_source_trusted_proxies'];
		if (!is_string($source) || !is_string($raw_proxies)) {
			die();
		}
		
		$valid = array();
		$invalid = array();
		$test = preg_split('/[\r\n,]+/', $raw_proxies);
		foreach ($test as $value) {
			if (strlen($value) > 0) {
				if (Model_IP::is_valid_ip($value) || Model_IP::is_valid_cidr_range($value)) {
					$valid[] = $value;
				}
				else {
					$invalid[] = $value;
				}
			}
		}
		$trusted_proxies = $valid;
		
		$preview = Model_Request::current()->detected_ip_preview($source, $trusted_proxies);
		$ip = Model_Request::current()->ip_for_field($source, $trusted_proxies);
		self::send_json(array('ip' => $ip[0], 'preview' => $preview));
	}
	
	public function _ajax_dismiss_notice_callback() {
		Controller_Notices::shared()->remove_notice($_POST['id'], false, wp_get_current_user());
	}
	
	public function _ajax_reset_recaptcha_stats_callback() {
		Controller_Settings::shared()->set_array(Controller_Settings::OPTION_CAPTCHA_STATS, array('counts' => array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), 'avg' => 0));
		$response = array('success' => true);
		self::send_json($response);
	}

	public function _ajax_reset_2fa_grace_period_callback() {
		$userId = (int) $_POST['user_id'];
		$gracePeriodOverride = array_key_exists('grace_period_override', $_POST) ? (int) $_POST['grace_period_override'] : null;
		$user = get_userdata($userId);
		if ($user === false)
			self::send_json(array('error' => esc_html__('Invalid user specified', 'wordfence')));
		if ($gracePeriodOverride < 0 || $gracePeriodOverride > Controller_Settings::MAX_REQUIRE_2FA_USER_GRACE_PERIOD)
			self::send_json(array('error' => esc_html__('Invalid grace period override', 'wordfence')));
		$gracePeriodAllowed = Controller_Users::shared()->get_grace_period_allowed_flag($userId);
		if (!$gracePeriodAllowed)
			Controller_Users::shared()->allow_grace_period($userId);
		if (!Controller_Users::shared()->reset_2fa_grace_period($user, $gracePeriodOverride))
			self::send_json(array('error' => esc_html__('Failed to reset grace period', 'wordfence')));
		self::send_json(array('success' => true));
	}

	public function _ajax_revoke_2fa_grace_period_callback() {
		$user = get_userdata((int) $_POST['user_id']);
		if ($user === false)
			self::send_json(array('error' => esc_html__('Invalid user specified', 'wordfence')));
		Controller_Users::shared()->revoke_grace_period($user);
		self::send_json(array('success' => true));
	}

	public function _ajax_reset_ntp_failure_count_callback() {
		Controller_Settings::shared()->reset_ntp_failure_count();
	}

	public function _ajax_disable_ntp_callback() {
		Controller_Settings::shared()->disable_ntp_cron();
	}

	public function _ajax_dismiss_persistent_notice_callback() {
		$userId = get_current_user_id();
		$noticeId = $_POST['notice_id'];
		if ($userId !== 0 && Controller_Notices::shared()->dismiss_persistent_notice($userId, $noticeId))
			self::send_json(array('success' => true));
		self::send_json(array(
			'error' => esc_html__('Unable to dismiss notice', 'wordfence')
		));
	}
}modules/login-security/classes/controller/wordfencels.php000064400000146365150755146440020067 0ustar00<?php

namespace WordfenceLS;

use WordfenceLS\Crypto\Model_JWT;
use WordfenceLS\Crypto\Model_Symmetric;
use WordfenceLS\Text\Model_HTML;
use WordfenceLS\View\Model_Tab;
use WordfenceLS\View\Model_Title;

class Controller_WordfenceLS {
	const VERSION_KEY = 'wordfence_ls_version';
	const USERS_PER_PAGE = 25;
	const SHORTCODE_2FA_MANAGEMENT = 'wordfence_2fa_management';
	const WOOCOMMERCE_ENDPOINT = 'wordfence-2fa';

	private $management_assets_registered = false;
	private $management_assets_enqueued = false;
	private $use_core_font_awesome_styles = null;
	
	/**
	 * Returns the singleton Controller_Wordfence2FA.
	 *
	 * @return Controller_WordfenceLS
	 */
	public static function shared() {
		static $_shared = null;
		if ($_shared === null) {
			$_shared = new Controller_WordfenceLS();
		}
		return $_shared;
	}
	
	public function init() {
		$this->_init_actions();
		Controller_AJAX::shared()->init();
		Controller_Users::shared()->init();
		Controller_Time::shared()->init();
		Controller_Permissions::shared()->init();
	}
	
	protected function _init_actions() {
		register_activation_hook(WORDFENCE_LS_FCPATH, array($this, '_install_plugin'));
		register_deactivation_hook(WORDFENCE_LS_FCPATH, array($this, '_uninstall_plugin'));
		
		$versionInOptions = ((is_multisite() && function_exists('get_network_option')) ? get_network_option(null, self::VERSION_KEY, false) : get_option(self::VERSION_KEY, false));
		if (!$versionInOptions || version_compare(WORDFENCE_LS_VERSION, $versionInOptions, '>')) { //Either there is no version in options or the version in options is greater and we need to run the upgrade
			$this->_install();
		}
		
		if (!Controller_Settings::shared()->get_bool(Controller_Settings::OPTION_ALLOW_XML_RPC)) {
			add_filter('xmlrpc_enabled', array($this, '_block_xml_rpc'));
		}
		
		add_action('admin_init', array($this, '_admin_init'));
		add_action('login_enqueue_scripts', array($this, '_login_enqueue_scripts'));
		add_filter('authenticate', array($this, '_authenticate'), 25, 3);
		add_action('set_logged_in_cookie', array($this, '_set_logged_in_cookie'), 25, 4);
		add_action('wp_login', array($this, '_record_login'), 999, 1);
		add_action('register_post', array($this, '_register_post'), 25, 3);
		add_filter('wp_login_errors', array($this, '_wp_login_errors'), 25, 3);
		if ($this->is_woocommerce_integration_enabled()) {
			$this->init_woocommerce_actions();
		}
		add_action('user_new_form', array($this, '_user_new_form'));
		add_action('user_register', array($this, '_user_register'));
		
		$useSubmenu = WORDFENCE_LS_FROM_CORE;
		if (is_multisite() && !is_network_admin()) {
			$useSubmenu = false;
		}
		
		add_action('admin_menu', array($this, '_admin_menu'), $useSubmenu ? 55 : 10);
		if (is_multisite()) {
			add_action('network_admin_menu', array($this, '_admin_menu'), $useSubmenu ? 55 : 10);
		}
		add_action('admin_enqueue_scripts', array($this, '_admin_enqueue_scripts'));
		
		add_action('show_user_profile', array($this, '_edit_user_profile'), 0); //We can't add it to the password section directly -- priority 0 is as close as we can get
		add_action('edit_user_profile', array($this, '_edit_user_profile'), 0);

		add_action('init', array($this, '_wordpress_init'));
		if ($this->is_shortcode_enabled())
			add_action('wp_enqueue_scripts', array($this, '_handle_shortcode_prerequisites'));
		
		Controller_Permissions::_init_actions();
	}

	public function _wordpress_init() {
		if (!WORDFENCE_LS_FROM_CORE)
			load_plugin_textdomain('wordfence-login-security', false, WORDFENCE_LS_PATH . 'languages');
		if ($this->is_shortcode_enabled())
			add_shortcode(self::SHORTCODE_2FA_MANAGEMENT, array($this, '_handle_user_2fa_management_shortcode'));
	}

	private function init_woocommerce_actions() {
		add_action('woocommerce_before_customer_login_form', array($this, '_woocommerce_login_enqueue_scripts'));
		add_action('woocommerce_before_checkout_form', array($this, '_woocommerce_checkout_login_enqueue_scripts'));
		add_action('wp_loaded', array($this, '_handle_woocommerce_registration'), 10, 0); //Woocommerce uses priority 20

		if ($this->is_woocommerce_account_integration_enabled()) {
			add_filter('woocommerce_account_menu_items', array($this, '_woocommerce_account_menu_items'));
			add_filter('woocommerce_account_wordfence-2fa_endpoint', array($this, '_woocommerce_account_menu_content'));
			add_filter('woocommerce_get_query_vars', array($this, '_woocommerce_get_query_vars'));
			add_action('wp_enqueue_scripts', array($this, '_woocommerce_account_enqueue_assets'));
		}
	}
	
	public function _admin_init() {
		if (WORDFENCE_LS_FROM_CORE) {
			\wfModuleController::shared()->addOptionIndex('wfls-option-enable-2fa-roles', __('Login Security: Enable 2FA for these roles', 'wordfence'));
			\wfModuleController::shared()->addOptionIndex('wfls-option-allow-remember', __('Login Security: Allow remembering device for 30 days', 'wordfence'));
			\wfModuleController::shared()->addOptionIndex('wfls-option-require-2fa-xml-rpc', __('Login Security: Require 2FA for XML-RPC call authentication', 'wordfence'));
			\wfModuleController::shared()->addOptionIndex('wfls-option-disable-xml-rpc', __('Login Security: Disable XML-RPC authentication', 'wordfence'));
			\wfModuleController::shared()->addOptionIndex('wfls-option-whitelist-2fa', __('Login Security: Allowlisted IP addresses that bypass 2FA and reCAPTCHA', 'wordfence'));
			\wfModuleController::shared()->addOptionIndex('wfls-option-enable-captcha', __('Login Security: Enable reCAPTCHA on the login and user registration pages', 'wordfence'));
			
			$title = __('Login Security Options', 'wordfence');
			$description = __('Login Security options are available on the Login Security options page', 'wordfence');
			$url = esc_url(network_admin_url('admin.php?page=WFLS#top#settings'));
			$link = __('Login Security Options', 'wordfence');;
			\wfModuleController::shared()->addOptionBlock(<<<END
<div class="wf-row">
	<div class="wf-col-xs-12">
		<div class="wf-block wf-always-active" data-persistence-key="">
			<div class="wf-block-header">
				<div class="wf-block-header-content">
					<div class="wf-block-title">
						<strong>{$title}</strong>
					</div>
				</div>
			</div>
			<div class="wf-block-content">
				<ul class="wf-block-list">
					<li>
						<ul class="wf-flex-horizontal wf-flex-vertical-xs wf-flex-full-width wf-add-top wf-add-bottom">
							<li>{$description}</li>
							<li class="wf-right wf-left-xs wf-padding-add-top-xs-small">
								<a href="{$url}" class="wf-btn wf-btn-primary wf-btn-callout-subtle" id="wf-login-security-options">{$link}</a>
							</li>
						</ul>
						<input type="hidden" id="wfls-option-enable-2fa-roles">
						<input type="hidden" id="wfls-option-allow-remember">
						<input type="hidden" id="wfls-option-require-2fa-xml-rpc">
						<input type="hidden" id="wfls-option-disable-xml-rpc">
						<input type="hidden" id="wfls-option-whitelist-2fa">
						<input type="hidden" id="wfls-option-enable-captcha">
					</li>
				</ul>
			</div>
		</div>
	</div>
</div> <!-- end ls options -->
END
);
		}

		if (Controller_Permissions::shared()->can_manage_settings()) {
			if ((is_plugin_active('jetpack/jetpack.php') || (is_multisite() && is_plugin_active_for_network('jetpack/jetpack.php'))) && !Controller_Settings::shared()->get_bool(Controller_Settings::OPTION_ALLOW_XML_RPC)) {
				if (is_multisite()) {
					add_action('network_admin_notices', array($this, '_jetpack_xml_rpc_notice'));
				}
				else {
					add_action('admin_notices', array($this, '_jetpack_xml_rpc_notice'));
				}
			}

			if (Controller_Settings::shared()->get_bool(Controller_Settings::OPTION_CAPTCHA_TEST_MODE) && Controller_CAPTCHA::shared()->enabled()) {
				if (is_multisite()) {
					add_action('network_admin_notices', array($this, '_recaptcha_test_notice'));
				}
				else {
					add_action('admin_notices', array($this, '_recaptcha_test_notice'));
				}
			}

			if ($this->has_woocommerce() && !Controller_Settings::shared()->get_bool(Controller_Settings::OPTION_ENABLE_WOOCOMMERCE_INTEGRATION)) {
				if (!Controller_Notices::shared()->is_persistent_notice_dismissed(get_current_user_id(), Controller_Notices::PERSISTENT_NOTICE_WOOCOMMERCE_INTEGRATION)) {
					Controller_Notices::shared()->register_persistent_notice(Controller_Notices::PERSISTENT_NOTICE_WOOCOMMERCE_INTEGRATION);
					add_action(is_multisite() ? 'network_admin_notices' : 'admin_notices', array($this, '_woocommerce_integration_notice'));
				}
			}
		}
	}
	
	/**
	 * Notices
	 */
	
	public function _jetpack_xml_rpc_notice() {
		echo '<div class="notice notice-warning"><p>' . wp_kses(sprintf(__('XML-RPC authentication is disabled. Jetpack is currently active and requires XML-RPC authentication to work correctly. <a href="%s">Manage Settings</a>', 'wordfence'), esc_url(network_admin_url('admin.php?page=WFLS#top#settings'))), array('a'=>array('href'=>array()))) . '</p></div>';
	}
	
	public function _recaptcha_test_notice() {
		echo '<div class="notice notice-warning"><p>' . wp_kses(sprintf(__('reCAPTCHA test mode is enabled. While enabled, login and registration requests will be checked for their score but will not be blocked if the score is below the minimum score. <a href="%s">Manage Settings</a>', 'wordfence'), esc_url(network_admin_url('admin.php?page=WFLS#top#settings'))), array('a'=>array('href'=>array()))) . '</p></div>';
	}

	public function _woocommerce_integration_notice() {
?>
		<div id="<?php echo esc_attr(Controller_Notices::PERSISTENT_NOTICE_WOOCOMMERCE_INTEGRATION) ?>" class="notice notice-warning is-dismissible wfls-persistent-notice">
			<p>
				<?php esc_html_e('WooCommerce appears to be installed, but the Wordfence Login Security WooCommerce integration is not currently enabled. Without this feature, WooCommerce forms will not support all functionality provided by Wordfence Login Security, including CAPTCHA for the login page and user registration.', 'wordfence'); ?>
				<a href="<?php echo esc_attr(esc_url(network_admin_url('admin.php?page=WFLS#top#settings'))) ?>"><?php esc_html_e('Manage Settings', 'wordfence') ?></a>
			</p>
		</div>
<?php
	}
	
	/**
	 * Installation/Uninstallation
	 */
	
	public function _install_plugin() {
		$this->_install();
	}
	
	public function _uninstall_plugin() {
		Controller_Time::shared()->uninstall();
		Controller_Permissions::shared()->uninstall();
		
		foreach (array(self::VERSION_KEY) as $opt) {
			if (is_multisite() && function_exists('delete_network_option')) {
				delete_network_option(null, $opt);
			}
			delete_option($opt);
		}
		
		if (Controller_Settings::shared()->get_bool(Controller_Settings::OPTION_DELETE_ON_DEACTIVATION)) {
			Controller_DB::shared()->uninstall();
		}

		$this->purge_rewrite_rules();
	}
	
	protected function _install() {
		static $_runInstallCalled = false;
		if ($_runInstallCalled) { return; }
		$_runInstallCalled = true;
		
		if (function_exists('ignore_user_abort')) {
			@ignore_user_abort(true);
		}
		
		if (!defined('DONOTCACHEDB')) { define('DONOTCACHEDB', true); }
		
		$previousVersion = ((is_multisite() && function_exists('get_network_option')) ? get_network_option(null, self::VERSION_KEY, '0.0.0') : get_option(self::VERSION_KEY, '0.0.0'));
		if (is_multisite() && function_exists('update_network_option')) {
			update_network_option(null, self::VERSION_KEY, WORDFENCE_LS_VERSION); //In case we have a fatal error we don't want to keep running install.	
		}
		else {
			update_option(self::VERSION_KEY, WORDFENCE_LS_VERSION); //In case we have a fatal error we don't want to keep running install.
		}
		
		Controller_DB::shared()->install();
		Controller_Settings::shared()->set_defaults();
		
		if (\WordfenceLS\Controller_Time::time() > Controller_Settings::shared()->get_int(Controller_Settings::OPTION_LAST_SECRET_REFRESH) + 180 * 86400) {
			Model_Crypto::refresh_secrets();
		}
		
		Controller_Time::shared()->install();
		Controller_Permissions::shared()->install();

		$this->purge_rewrite_rules();
	}

	private function purge_rewrite_rules() {
		// This is usually done internally in WP_Rewrite::flush_rules, but is followed there by WP_Rewrite::wp_rewrite_rules which repopulates it. This should cause it to be repopulated on the next request.
		update_option('rewrite_rules', '');
	}

	/**
	 * In most cases, this will be done internally by WooCommerce since we are using the woocommerce_get_query_vars filter, but when toggling the option on our settings page we must still do this manually
	 */
	private function register_rewrite_endpoints() {
		add_rewrite_endpoint(self::WOOCOMMERCE_ENDPOINT, $this->is_woocommerce_account_integration_enabled() ? EP_PAGES : EP_NONE);
	}

	public function refresh_rewrite_rules() {
		$this->register_rewrite_endpoints();
		flush_rewrite_rules();
	}
	
	public function _block_xml_rpc() {
		/**
		 * Fires just prior to blocking an XML-RPC request. After firing this action hook the XML-RPC request is blocked.
		 *
		 * @param int $source The source code of the block.
		 */
		do_action('wfls_xml_rpc_blocked', 2);
		return false;
	}

	private function has_woocommerce() {
		return class_exists('woocommerce');
	}

	private function is_woocommerce_integration_enabled() {
		return Controller_Settings::shared()->get_bool(Controller_Settings::OPTION_ENABLE_WOOCOMMERCE_INTEGRATION);
	}

	private function is_woocommerce_account_integration_enabled() {
		return $this->is_woocommerce_integration_enabled() && Controller_Settings::shared()->get_bool(Controller_Settings::OPTION_ENABLE_WOOCOMMERCE_ACCOUNT_INTEGRATION);
	}

	private function is_shortcode_enabled() {
		return Controller_Settings::shared()->get_bool(Controller_Settings::OPTION_ENABLE_SHORTCODE);
	}

	public function _woocommerce_login_enqueue_scripts() {
		wp_enqueue_style('dashicons');
		$this->_login_enqueue_scripts();
	}

	public function _woocommerce_checkout_login_enqueue_scripts() {
		/**
		 * This is the same check used in WooCommerce to determine whether or not to display the checkout login form
		 * @see templates/checkout/form-login.php in WooCommerce
		 */
		if ( is_user_logged_in() || 'no' === get_option( 'woocommerce_enable_checkout_login_reminder' ) ) {
			return;
		}
		$this->_woocommerce_login_enqueue_scripts();
	}
	
	/**
	 * Login Page
	 */	
	public function _login_enqueue_scripts() {
		$useCAPTCHA = Controller_CAPTCHA::shared()->enabled();
		if ($useCAPTCHA) {
			wp_enqueue_script('wordfence-ls-recaptcha', 'https://www.google.com/recaptcha/api.js?render=' . urlencode(Controller_Settings::shared()->get(Controller_Settings::OPTION_RECAPTCHA_SITE_KEY)));
		}
		
		if ($useCAPTCHA || Controller_Users::shared()->any_2fa_active()) {
			$this->validate_email_verification_token(null, $verification);
			
			Model_Script::create('wordfence-ls-login', Model_Asset::js('login.js'), array('jquery'), WORDFENCE_LS_VERSION)
				->withTranslations(array(
					'Message to Support' => __('Message to Support', 'wordfence'),
					'Send' => __('Send', 'wordfence'),
					'An error was encountered while trying to send the message. Please try again.' => __('An error was encountered while trying to send the message. Please try again.', 'wordfence'),
					'<strong>ERROR</strong>: An error was encountered while trying to send the message. Please try again.' => wp_kses(__('<strong>ERROR</strong>: An error was encountered while trying to send the message. Please try again.', 'wordfence'), array('strong' => array())),
					'Login failed with status code 403. Please contact the site administrator.' => __('Login failed with status code 403. Please contact the site administrator.', 'wordfence'),
					'<strong>ERROR</strong>: Login failed with status code 403. Please contact the site administrator.' => wp_kses(__('<strong>ERROR</strong>: Login failed with status code 403. Please contact the site administrator.', 'wordfence'), array('strong' => array())),
					'Login failed with status code 503. Please contact the site administrator.' => __('Login failed with status code 503. Please contact the site administrator.', 'wordfence'),
					'<strong>ERROR</strong>: Login failed with status code 503. Please contact the site administrator.' => wp_kses(__('<strong>ERROR</strong>: Login failed with status code 503. Please contact the site administrator.', 'wordfence'), array('strong' => array())),
					'Wordfence 2FA Code' => __('Wordfence 2FA Code', 'wordfence'),
					'Remember for 30 days' => __('Remember for 30 days', 'wordfence'),
					'Log In' => __('Log In', 'wordfence'),
					'<strong>ERROR</strong>: An error was encountered while trying to authenticate. Please try again.' => wp_kses(__('<strong>ERROR</strong>: An error was encountered while trying to authenticate. Please try again.', 'wordfence'), array('strong' => array())),
					'The Wordfence 2FA Code can be found within the authenticator app you used when first activating two-factor authentication. You may also use one of your recovery codes.' => __('The Wordfence 2FA Code can be found within the authenticator app you used when first activating two-factor authentication. You may also use one of your recovery codes.', 'wordfence')
				))
				->setTranslationObjectName('WFLS_LOGIN_TRANSLATIONS')
				->enqueue();
			wp_enqueue_style('wordfence-ls-login', Model_Asset::css('login.css'), array(), WORDFENCE_LS_VERSION);
			wp_localize_script('wordfence-ls-login', 'WFLSVars', array(
				'ajaxurl' => Utility_URL::relative_admin_url('admin-ajax.php'),
				'nonce' => wp_create_nonce('wp-ajax'),
				'recaptchasitekey' => Controller_Settings::shared()->get(Controller_Settings::OPTION_RECAPTCHA_SITE_KEY),
				'useCAPTCHA' => $useCAPTCHA,
				'allowremember' => Controller_Settings::shared()->get_bool(Controller_Settings::OPTION_REMEMBER_DEVICE_ENABLED),
				'verification' => $verification,
			));
		}
	}

	private function get_2fa_management_script_data() {
		return array(
			'WFLSVars' => array(
				'ajaxurl' => Utility_URL::relative_admin_url('admin-ajax.php'),
				'nonce' => wp_create_nonce('wp-ajax'),
				'modalTemplate' => Model_View::create('common/modal-prompt', array('title' => '${title}', 'message' => '${message}', 'primaryButton' => array('id' => 'wfls-generic-modal-close', 'label' => __('Close', 'wordfence'), 'link' => '#')))->render(),
				'modalNoButtonsTemplate' => Model_View::create('common/modal-prompt', array('title' => '${title}', 'message' => '${message}'))->render(),
				'tokenInvalidTemplate' => Model_View::create('common/modal-prompt', array('title' => '${title}', 'message' => '${message}', 'primaryButton' => array('id' => 'wfls-token-invalid-modal-reload', 'label' => __('Reload', 'wordfence'), 'link' => '#')))->render(),
				'modalHTMLTemplate' => Model_View::create('common/modal-prompt', array('title' => '${title}', 'message' => '{{html message}}', 'primaryButton' => array('id' => 'wfls-generic-modal-close', 'label' => __('Close', 'wordfence'), 'link' => '#')))->render()
			)
		);
	}

	public function should_use_core_font_awesome_styles() {
		if ($this->use_core_font_awesome_styles === null) {
			$this->use_core_font_awesome_styles = wp_style_is('wordfence-font-awesome-style');
		}
		return $this->use_core_font_awesome_styles;
	}

	private function get_2fa_management_assets($embedded = false) {
		$assets = array(
			Model_Script::create('wordfence-ls-jquery.qrcode', Model_Asset::js('jquery.qrcode.min.js'), array('jquery'), WORDFENCE_LS_VERSION),
			Model_Script::create('wordfence-ls-jquery.tmpl', Model_Asset::js('jquery.tmpl.min.js'), array('jquery'), WORDFENCE_LS_VERSION),
			Model_Script::create('wordfence-ls-jquery.colorbox', Model_Asset::js('jquery.colorbox.min.js'), array('jquery'), WORDFENCE_LS_VERSION)
		);
		if (Controller_Permissions::shared()->can_manage_settings()) { 
			$assets[] = Model_Style::create('wordfence-ls-jquery-ui-css', Model_Asset::css('jquery-ui.min.css'), array(), WORDFENCE_LS_VERSION);
			$assets[] = Model_Style::create('wordfence-ls-jquery-ui-css.structure', Model_Asset::css('jquery-ui.structure.min.css'), array(), WORDFENCE_LS_VERSION);
			$assets[] = Model_Style::create('wordfence-ls-jquery-ui-css.theme', Model_Asset::css('jquery-ui.theme.min.css'), array(), WORDFENCE_LS_VERSION);
		}
		$assets[] = Model_Script::create('wordfence-ls-admin', Model_Asset::js('admin.js'), array('jquery'), WORDFENCE_LS_VERSION)
			->withTranslation('You have unsaved changes to your options. If you leave this page, those changes will be lost.', __('You have unsaved changes to your options. If you leave this page, those changes will be lost.', 'wordfence'))
			->setTranslationObjectName('WFLS_ADMIN_TRANSLATIONS');
		$registered = array(
			Model_Script::create('chart-js', Model_Asset::js('chart.umd.js'), array('jquery'), '4.2.1')->setRegistered(),
			Model_Script::create('wordfence-select2-js', Model_Asset::js('wfselect2.min.js'), array('jquery'), WORDFENCE_LS_VERSION)->setRegistered(),
			Model_Style::create('wordfence-select2-css', Model_Asset::css('wfselect2.min.css'), array(), WORDFENCE_LS_VERSION)->setRegistered()
		);
		if (!WORDFENCE_LS_FROM_CORE && !$this->management_assets_registered) {
			foreach ($registered as $asset)
				$asset->register();
			$this->management_assets_registered = true;
		}
		$assets = array_merge($assets, $registered);
		$assets[] = Model_Style::create('wordfence-ls-admin', Model_Asset::css('admin.css'), array(), WORDFENCE_LS_VERSION);
		$assets[] = Model_Style::create('wordfence-ls-colorbox', Model_Asset::css('colorbox.css'), array(), WORDFENCE_LS_VERSION);
		$assets[] = Model_Style::create('wordfence-ls-ionicons', Model_Asset::css('ionicons.css'), array(), WORDFENCE_LS_VERSION);
		if ($embedded) {
			$assets[] = Model_Style::create('dashicons');
			$assets[] = Model_Style::create('wordfence-ls-embedded', Model_Asset::css('embedded.css'), array(), WORDFENCE_LS_VERSION);
		}
		if (!$this->should_use_core_font_awesome_styles()) {
			$assets[] = Model_Style::create('wordfence-ls-font-awesome', Model_Asset::css('font-awesome.css'), array(), WORDFENCE_LS_VERSION);
		}
		return $assets;
	}

	private function enqueue_2fa_management_assets($embedded = false) {
		if ($this->management_assets_enqueued)
			return;
		foreach ($this->get_2fa_management_assets($embedded) as $asset)
			$asset->enqueue();
		foreach ($this->get_2fa_management_script_data() as $key => $data)
			wp_localize_script('wordfence-ls-admin', $key, $data);
		$this->management_assets_enqueued = true;
	}

	/**
	 * Admin Pages
	 */
	public function _admin_enqueue_scripts($hookSuffix) {
		if (isset($_GET['page']) && $_GET['page'] == 'WFLS') {
			$this->enqueue_2fa_management_assets();
		}
		else {
			wp_enqueue_style('wordfence-ls-admin-global', Model_Asset::css('admin-global.css'), array(), WORDFENCE_LS_VERSION);
		}
		
		if (Controller_Notices::shared()->has_notice(wp_get_current_user()) || in_array($hookSuffix, array('user-edit.php', 'user-new.php', 'profile.php'))) {
			wp_enqueue_script('wordfence-ls-admin-global', Model_Asset::js('admin-global.js'), array('jquery'), WORDFENCE_LS_VERSION);
			
			wp_localize_script('wordfence-ls-admin-global', 'GWFLSVars', array(
				'ajaxurl' => admin_url('admin-ajax.php'),
				'nonce' => wp_create_nonce('wp-ajax'),
			));
		}

	}
	
	public function _edit_user_profile($user) {
		if ($user->ID == get_current_user_id() || !current_user_can(Controller_Permissions::CAP_ACTIVATE_2FA_OTHERS)) {
			$manageURL = admin_url('admin.php?page=WFLS');
		}
		else {
			$manageURL = admin_url('admin.php?page=WFLS&user=' . ((int) $user->ID));
		}
		
		if (is_multisite() && is_super_admin()) {
			if ($user->ID == get_current_user_id()) {
				$manageURL = network_admin_url('admin.php?page=WFLS');
			}
			else {
				$manageURL = network_admin_url('admin.php?page=WFLS&user=' . ((int) $user->ID));
			}
		}
		$userAllowed2fa = Controller_Users::shared()->can_activate_2fa($user);
		$viewerIsUser = $user->ID == get_current_user_id();
		$viewerCanManage2fa = current_user_can(Controller_Permissions::CAP_ACTIVATE_2FA_OTHERS);
		$requires2fa = Controller_Users::shared()->requires_2fa($user, $inGracePeriod, $requiredAt);
		$has2fa = Controller_Users::shared()->has_2fa_active($user);
		$lockedOut = $requires2fa && !$has2fa;
		$hasGracePeriod = Controller_Settings::shared()->get_user_2fa_grace_period() > 0;
		if ($userAllowed2fa && ($viewerIsUser || $viewerCanManage2fa)):
?>
		<h2 id="wfls-user-settings"><?php esc_html_e('Wordfence Login Security', 'wordfence'); ?></h2>
		<table class="form-table">
			<tr id="wordfence-ls">
				<th><label for="wordfence-ls-btn"><?php esc_html_e('2FA Status', 'wordfence'); ?></label></th>
				<td>
					<?php if ($userAllowed2fa): ?>
						<p>
							<strong><?php echo $lockedOut ? esc_html__('Locked Out', 'wordfence') : ($has2fa ? esc_html__('Active', 'wordfence') :  esc_html__('Inactive', 'wordfence')); ?>:</strong>
							<?php echo $lockedOut ?
								($viewerIsUser ? esc_html__('Two-factor authentication is required for your account, but has not been configured.', 'wordfence') : esc_html__('Two-factor authentication is required for this account, but has not been configured.', 'wordfence'))
								: ($has2fa ? esc_html__('Wordfence 2FA is active.', 'wordfence') :  esc_html__('Wordfence 2FA is inactive.', 'wordfence')); ?>
							<a href="<?php echo Controller_Support::esc_supportURL(Controller_Support::ITEM_MODULE_LOGIN_SECURITY_2FA); ?>" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Learn More', 'wordfence'); ?></a>
						</p>
						<?php if (!$has2fa && $inGracePeriod): ?>
							<p><strong><?php echo sprintf($viewerIsUser ?
								esc_html__('Two-factor authentication must be activated for your account prior to %s to avoid losing access.', 'wordfence')
								: esc_html__('Two-factor authentication must be activated for this account prior to %s.', 'wordfence')
								, Controller_Time::format_local_time('F j, Y g:i A', $requiredAt)) ?></strong></p>
						<?php endif ?>
						<?php if ($has2fa || $viewerIsUser): ?><p><a href="<?php echo esc_url($manageURL); ?>" class="button"><?php echo (Controller_Users::shared()->has_2fa_active($user) ? esc_html__('Manage 2FA', 'wordfence') :  esc_html__('Activate 2FA', 'wordfence')); ?></a></p><?php endif ?>
					<?php endif ?>
					<?php if ($viewerCanManage2fa): ?>
						<?php if (!$userAllowed2fa): ?>
							<p><strong><?php esc_html_e('Disabled', 'wordfence'); ?>:</strong> <?php esc_html_e('Two-factor authentication is not currently enabled for this account type. To enable it, visit the Wordfence 2FA Settings page.', 'wordfence'); ?> <a href="#"><?php esc_html_e('Learn More', 'wordfence'); ?></a></p>
						<?php endif ?>
						<?php if ($lockedOut): ?>
							<?php echo Model_View::create(
								'common/reset-grace-period',
								array(
									'user' => $user,
									'gracePeriod' => $inGracePeriod
								))->render() ?>
						<?php elseif ($inGracePeriod && Controller_Users::shared()->has_revokable_grace_period($user)): ?>
							<?php echo Model_View::create(
								'common/revoke-grace-period',
								array(
									'user' => $user
								))->render() ?>
						<?php endif ?>
						<p>
							<a href="<?php echo esc_url(is_multisite() ? network_admin_url('admin.php?page=WFLS#top#settings') : admin_url('admin.php?page=WFLS#top#settings')); ?>" class="button"><?php esc_html_e('Manage 2FA Settings', 'wordfence'); ?></a>
						</p>
					<?php endif ?>
				</td>
			</tr>
		</table>
<?php
		endif;
	}
	
	/**
	 * Authentication
	 */

	private function _is_woocommerce_login() {
		if (!$this->has_woocommerce())
			return false;
		$nonceValue = '';
		foreach (array('woocommerce-login-nonce', '_wpnonce') as $key) {
			if (array_key_exists($key, $_REQUEST)) {
				$nonceValue = $_REQUEST[$key];
				break;
			}
		}

		return ( isset( $_POST['login'], $_POST['username'], $_POST['password'] ) && is_string($nonceValue) && wp_verify_nonce( $nonceValue, 'woocommerce-login' ) );
	}
	
	public function _authenticate($user, $username, $password) {
		if (defined('XMLRPC_REQUEST') && XMLRPC_REQUEST && !Controller_Settings::shared()->get_bool(Controller_Settings::OPTION_XMLRPC_ENABLED)) { //XML-RPC call and we're not enforcing 2FA on it
			return $user;
		}
		
		if (Controller_Whitelist::shared()->is_whitelisted(Model_Request::current()->ip())) { //Whitelisted, so we're not enforcing 2FA
			return $user;
		}

		$isLogin = !(defined('WORDFENCE_LS_AUTHENTICATION_CHECK') && WORDFENCE_LS_AUTHENTICATION_CHECK); //Checking for the purpose of prompting for 2FA, don't enforce it here
		$isCombinedCheck = (defined('WORDFENCE_LS_CHECKING_COMBINED') && WORDFENCE_LS_CHECKING_COMBINED);
		$combinedTwoFactor = false;

		/*
		 * If we don't have a valid $user at this point, it means the $username/$password combo is invalid. We'll check
		 * to see if the user has provided a combined password in the format `<password><code>`, populating $user from
		 * that if so.
		 */
		if (!defined('WORDFENCE_LS_CHECKING_COMBINED') && (!isset($_POST['wfls-token']) || !is_string($_POST['wfls-token'])) && (!is_object($user) || !($user instanceof \WP_User))) {
			//Compatibility with WF legacy 2FA
			$combinedTOTPRegex = '/((?:[0-9]{3}\s*){2})$/i';
			$combinedRecoveryRegex = '/((?:[a-f0-9]{4}\s*){4})$/i';
			if ($this->legacy_2fa_active()) {
				$combinedTOTPRegex = '/(?<! wf)((?:[0-9]{3}\s*){2})$/i';
				$combinedRecoveryRegex = '/(?<! wf)((?:[a-f0-9]{4}\s*){4})$/i';
			}

			if (preg_match($combinedTOTPRegex, $password, $matches)) { //Possible TOTP code
				if (strlen($password) > strlen($matches[1])) {
					$revisedPassword = substr($password, 0, strlen($password) - strlen($matches[1]));
					$code = $matches[1];
				}
			}
			else if (preg_match($combinedRecoveryRegex, $password, $matches)) { //Possible recovery code
				if (strlen($password) > strlen($matches[1])) {
					$revisedPassword = substr($password, 0, strlen($password) - strlen($matches[1]));
					$code = $matches[1];
				}
			}

			if (isset($revisedPassword)) {
				define('WORDFENCE_LS_CHECKING_COMBINED', true); //Avoid recursing into this block
				if (!defined('WORDFENCE_LS_AUTHENTICATION_CHECK')) { define('WORDFENCE_LS_AUTHENTICATION_CHECK', true); }
				$revisedUser = wp_authenticate($username, $revisedPassword);
				if (is_object($revisedUser) && ($revisedUser instanceof \WP_User) && Controller_TOTP::shared()->validate_2fa($revisedUser, $code, $isLogin)) {
					define('WORDFENCE_LS_COMBINED_IS_VALID', true); //This will cause the front-end to skip the 2FA prompt
					$user = $revisedUser;
					$combinedTwoFactor = true;
				}
			}
		}
		
		/*
		 * CAPTCHA Check
		 * 
		 * It will be enforced so long as:
		 * 
		 * 1. It's enabled and keys are set.
		 * 2. This is not an XML-RPC request. An XML-RPC request is de facto an automated request, so a CAPTCHA makes
		 *    no sense.
		 * 3. A filter does not override it. This is to allow plugins with REST endpoints that handle authentication
		 *    themselves to opt out of the requirement.
		 * 4. The user is not providing a combined credentials + 2FA authentication login request.
		 * 5. The request is not a WooCommerce login while WC integration is disabled
		 */
		if (!$combinedTwoFactor && !$isCombinedCheck && !empty($username) && (!$this->_is_woocommerce_login() || Controller_Settings::shared()->get_bool(Controller_Settings::OPTION_ENABLE_WOOCOMMERCE_INTEGRATION))) { //Login attempt, not just a wp-login.php page load

			$requireCAPTCHA = Controller_CAPTCHA::shared()->is_captcha_required();
			$performVerification = false;
			
			$token = Controller_CAPTCHA::shared()->get_token();
			if ($requireCAPTCHA && empty($token) && !Controller_CAPTCHA::shared()->test_mode()) { //No CAPTCHA token means forced additional verification (if neither 2FA nor test mode are active)
				$performVerification = true;
			}
			
			if (is_object($user) && $user instanceof \WP_User && $this->validate_email_verification_token($user)) { //Skip the CAPTCHA check if the email address was verified
				$requireCAPTCHA = false;
				$performVerification = false;
				
				//Reset token rate limit
				$identifier = sprintf('wfls-captcha-%d', $user->ID);
				$tokenBucket = new Model_TokenBucket('rate:' . $identifier, 3, 1 / (WORDFENCE_LS_EMAIL_VALIDITY_DURATION_MINUTES * Model_TokenBucket::MINUTE)); //Maximum of three requests, refilling at a rate of one per token expiration period
				$tokenBucket->reset();
			}
			
			$score = false;
			if ($requireCAPTCHA && !$performVerification) {
				$expired = false;
				if (is_object($user) && $user instanceof \WP_User) {
					$score = Controller_Users::shared()->cached_captcha_score($token, $user, $expired);
				}
				
				if ($score === false) {
					if ($expired) {
						return new \WP_Error('wfls_captcha_expired', wp_kses(__('<strong>CAPTCHA EXPIRED</strong>: The CAPTCHA verification for this login attempt has expired. Please try again.', 'wordfence'), array('strong'=>array())));
					}
					
					$score = Controller_CAPTCHA::shared()->score($token);
					
					if ($score !== false && is_object($user) && $user instanceof \WP_User) {
						Controller_Users::shared()->cache_captcha_score($token, $score, $user);
						Controller_Users::shared()->record_captcha_score($user, $score);
					}
				}
				
				if ($score === false && !Controller_CAPTCHA::shared()->test_mode()) { //An invalid token will require additional verification (if test mode is not active)
					$performVerification = true;
				}
			}
			
			if ($requireCAPTCHA) {
				if ($performVerification || !Controller_CAPTCHA::shared()->is_human($score)) {
					if (is_object($user) && $user instanceof \WP_User) {
						$identifier = sprintf('wfls-captcha-%d', $user->ID);
						$tokenBucket = new Model_TokenBucket('rate:' . $identifier, 3, 1 / (WORDFENCE_LS_EMAIL_VALIDITY_DURATION_MINUTES * Model_TokenBucket::MINUTE)); //Maximum of three requests, refilling at a rate of one per token expiration period
						if ($tokenBucket->consume(1)) {
							if ($this->has_woocommerce() && array_key_exists('woocommerce-login-nonce', $_POST)) {
								$loginUrl = get_permalink(get_option('woocommerce_myaccount_page_id'));
							}
							else {
								$loginUrl = wp_login_url();
							}
							$verificationUrl = add_query_arg(
								array(
									'wfls-email-verification' => rawurlencode(Controller_Users::shared()->generate_verification_token($user))
								),
								$loginUrl
							);
							$view = new Model_View('email/login-verification', array(
								'siteName' => get_bloginfo('name', 'raw'),
								'verificationURL' => $verificationUrl,
								'ip' => Model_Request::current()->ip(),
								'canEnable2FA' => Controller_Users::shared()->can_activate_2fa($user),
							));
							wp_mail($user->user_email, __('Login Verification Required', 'wordfence'), $view->render(), "Content-Type: text/html");
						}
					}

					Utility_Sleep::sleep(Model_Crypto::random_int(0, 2000) / 1000);
					return new \WP_Error('wfls_captcha_verify', wp_kses(__('<strong>VERIFICATION REQUIRED</strong>: Additional verification is required for login. If there is a valid account for the provided login credentials, please check the email address associated with it for a verification link to continue logging in.', 'wordfence'), array('strong' => array())));
				}
			}
		}

		if (!$combinedTwoFactor) {
			if ($isLogin && $user instanceof \WP_User) {
				if (Controller_Users::shared()->has_2fa_active($user)) {
					if (Controller_Users::shared()->has_remembered_2fa($user)) {
						return $user;
					}
					elseif (array_key_exists('wfls-token', $_POST)) {
						if (is_string($_POST['wfls-token']) && Controller_TOTP::shared()->validate_2fa($user, $_POST['wfls-token'])) {
							return $user;
						}
						else {
							return new \WP_Error('wfls_twofactor_failed', wp_kses(__('<strong>CODE INVALID</strong>: The 2FA code provided is either expired or invalid. Please try again.', 'wordfence'), array('strong'=>array())));
						}
					}
				}
				$in2faGracePeriod = false;
				$time2faRequired = null;
				if (Controller_Users::shared()->has_2fa_active($user)) {
					$legacy2FAActive = Controller_WordfenceLS::shared()->legacy_2fa_active();
					if ($legacy2FAActive) {
						return new \WP_Error('wfls_twofactor_required', wp_kses(__('<strong>CODE REQUIRED</strong>: Please enter your 2FA code immediately after your password in the same field.', 'wordfence'), array('strong'=>array())));
					}
					return new \WP_Error('wfls_twofactor_required', wp_kses(__('<strong>CODE REQUIRED</strong>: Please provide your 2FA code when prompted.', 'wordfence'), array('strong'=>array())));
				}
				else if (Controller_Users::shared()->requires_2fa($user, $in2faGracePeriod, $time2faRequired)) {
					return new \WP_Error('wfls_twofactor_blocked', wp_kses(__('<strong>LOGIN BLOCKED</strong>: 2FA is required to be active on your account. Please contact the site administrator.', 'wordfence'), array('strong'=>array())));
				}
				else if ($in2faGracePeriod) {
					Controller_Notices::shared()->add_notice(Model_Notice::SEVERITY_CRITICAL, new Model_HTML(wp_kses(sprintf(__('You do not currently have two-factor authentication active on your account, which will be required beginning %s. <a href="%s">Configure 2FA</a>', 'wordfence'), Controller_Time::format_local_time('F j, Y g:i A', $time2faRequired), esc_url((is_multisite() && is_super_admin($user->ID)) ? network_admin_url('admin.php?page=WFLS') : admin_url('admin.php?page=WFLS'))), array('a'=>array('href'=>array())))), 'wfls-will-be-required', $user);
				}
			}

		}

		return $user;
	}
	
	public function _set_logged_in_cookie($logged_in_cookie, $expire, $expiration, $user_id) {
		$user = new \WP_User($user_id);
		if (Controller_Users::shared()->has_2fa_active($user) && isset($_POST['wfls-remember-device']) && $_POST['wfls-remember-device']) {
			Controller_Users::shared()->remember_2fa($user);
		}
		delete_user_meta($user_id, 'wfls-captcha-nonce');
	}
	
	public function _record_login($user_login/*, $user -- we'd like to use the second parameter instead, but too many plugins call this hook and only provide one of the two required parameters*/) {
		$user = get_user_by('login', $user_login);
		if (is_object($user) && $user instanceof \WP_User && $user->exists()) {
			update_user_meta($user->ID, 'wfls-last-login', Controller_Time::time());
		}
	}
	
	public function _register_post($sanitized_user_login, $user_email, $errors) {
		if (!empty($sanitized_user_login)) {
			$captchaResult = $this->process_registration_captcha_with_hooks();
			if ($captchaResult !== true) {
				$errors->add($captchaResult['category'], $captchaResult['message']);
			}
		}
	}

	private function validate_email_verification_token($user = null, &$token = null) {
		$token = isset($_REQUEST['wfls-email-verification']) ? $_REQUEST['wfls-email-verification'] : null;
		if (empty($token))
			return null;
		return is_string($token) && Controller_Users::shared()->validate_verification_token($token, $user);
	}

	/**
	 * @param \WP_Error $errors
	 * @param string $redirect_to
	 * @return \WP_Error
	 */
	public function _wp_login_errors($errors, $redirect_to) {
		$has_errors = (method_exists($errors, 'has_errors') ? $errors->has_errors() : !empty($errors->errors)); //has_errors was added in WP 5.1
		$emailVerificationTokenValid = $this->validate_email_verification_token();
		if (!$has_errors && $emailVerificationTokenValid !== null) {
			if ($emailVerificationTokenValid) {
				$errors->add('wfls_email_verified', esc_html__('Email verification succeeded. Please continue logging in.', 'wordfence'), 'message');
			}
			else {
				$errors->add('wfls_email_not_verified', esc_html__('Email verification invalid or expired. Please try again.', 'wordfence'), 'message');
			}
		}
		return $errors;
	}
	
	public function legacy_2fa_active() {
		$wfLegacy2FAActive = false;
		if (class_exists('wfConfig') && \wfConfig::get('isPaid')) {
			$twoFactorUsers = \wfConfig::get_ser('twoFactorUsers', array());
			if (is_array($twoFactorUsers) && count($twoFactorUsers) > 0) {
				foreach ($twoFactorUsers as $t) {
					if ($t[3] == 'activated') {
						$testUser = get_user_by('ID', $t[0]);
						if (is_object($testUser) && $testUser instanceof \WP_User && \wfUtils::isAdmin($testUser)) {
							$wfLegacy2FAActive = true;
							break;
						}
					}
				}
			}
			
			if ($wfLegacy2FAActive && class_exists('wfCredentialsController') && method_exists('wfCredentialsController', 'useLegacy2FA') && !\wfCredentialsController::useLegacy2FA()) {
				$wfLegacy2FAActive = false;
			}
		}
		return $wfLegacy2FAActive;
	}
	
	/**
	 * Menu
	 */
	
	public function _admin_menu() {
		$user = wp_get_current_user();
		if (Controller_Notices::shared()->has_notice($user)) {
			Controller_Users::shared()->requires_2fa($user, $gracePeriod);
			if (!$gracePeriod) {
				Controller_Notices::shared()->remove_notice(false, 'wfls-will-be-required', $user);
			}
		}
		
		Controller_Notices::shared()->enqueue_notices();
		
		$useSubmenu = WORDFENCE_LS_FROM_CORE && current_user_can('activate_plugins');
		if (is_multisite() && !is_network_admin()) {
			$useSubmenu = false;
			
			if (is_super_admin()) {
				return;
			}
		}
		
		if ($useSubmenu) {
			add_submenu_page('Wordfence', __('Login Security', 'wordfence'), __('Login Security', 'wordfence'), Controller_Permissions::CAP_ACTIVATE_2FA_SELF, 'WFLS', array($this, '_menu'));
		}
		else {
			add_menu_page(__('Login Security', 'wordfence'), __('Login Security', 'wordfence'), Controller_Permissions::CAP_ACTIVATE_2FA_SELF, 'WFLS', array($this, '_menu'), Model_Asset::img('menu.svg'));
		}
	}
	
	public function _menu() {
		$user = wp_get_current_user();
		$administrator = false;
		$canEditUsers = false;
		if (Controller_Permissions::shared()->can_manage_settings($user)) {
			$administrator = true;
		}
		
		if (user_can($user, Controller_Permissions::CAP_ACTIVATE_2FA_OTHERS)) {
			$canEditUsers = true;
			if (isset($_GET['user'])) {
				$user = new \WP_User((int) $_GET['user']);
				if (!$user->exists()) {
					$user = wp_get_current_user();
				}
			}
		}

		$sections = array();

		if (isset($_GET['role']) && $canEditUsers) {
			$roleKey = $_GET['role'];
			$roles = new \WP_Roles();
			$role = $roles->get_role($roleKey);
			$roleTitle = $roleKey === 'super-admin' ? __('Super Administrator', 'wordfence') : $roles->role_names[$roleKey];
			$requiredAt = Controller_Settings::shared()->get_required_2fa_role_activation_time($roleKey);
			$states = array(
				'grace_period' => array(
					'title' => __('Grace Period', 'wordfence'),
					'gracePeriod' => true
				),
				'locked_out' => array(
					'title' => __('Locked Out', 'wordfence'),
					'gracePeriod' => false
				)
			);
			foreach ($states as $key => $state) {
				$pageKey = "page_$key";
				$page = isset($_GET[$pageKey]) ? max((int) $_GET[$pageKey], 1) : 1;
				$title = $state['title'];
				$lastPage = true;
				if ($requiredAt === false)
					$users = array();
				else
					$users = Controller_Users::shared()->get_inactive_2fa_users($roleKey, $state['gracePeriod'], $page, self::USERS_PER_PAGE, $lastPage);
				$sections[] = array(
					'tab' => new Model_Tab($key, $key, $title, $title),
					'title' => new Model_Title($key, sprintf(__('Users without 2FA active (%s)', 'wordfence'), $title) . ' - ' . $roleTitle),
					'content' => new Model_View('page/role', array(
						'role' => $role,
						'roleTitle' => $roleTitle,
						'stateTitle' => $title,
						'requiredAt' => $requiredAt,
						'state' => $state,
						'users' => $users,
						'page' => $page,
						'lastPage' => $lastPage,
						'pageKey' => $pageKey,
						'stateKey' => $key
					)),
				);
			}
		}
		else {	
			$sections[] = array(
				'tab' => new Model_Tab('manage', 'manage', __('Two-Factor Authentication', 'wordfence'), __('Two-Factor Authentication', 'wordfence')),
				'title' => new Model_Title('manage', __('Two-Factor Authentication', 'wordfence'), Controller_Support::supportURL(Controller_Support::ITEM_MODULE_LOGIN_SECURITY_2FA), new Model_HTML(wp_kses(__('Learn more<span class="wfls-hidden-xs"> about Two-Factor Authentication</span>', 'wordfence'), array('span'=>array('class'=>array()))))),
				'content' => new Model_View('page/manage', array(
					'user' => $user,
					'canEditUsers' => $canEditUsers,
				)),
			);
			
			if ($administrator) {
				$sections[] = array(
					'tab' => new Model_Tab('settings', 'settings', __('Settings', 'wordfence'), __('Settings', 'wordfence')),
					'title' => new Model_Title('settings', __('Login Security Settings', 'wordfence'), Controller_Support::supportURL(Controller_Support::ITEM_MODULE_LOGIN_SECURITY), new Model_HTML(wp_kses(__('Learn more<span class="wfls-hidden-xs"> about Login Security</span>', 'wordfence'), array('span'=>array('class'=>array()))))),
					'content' => new Model_View('page/settings', array(
						'hasWoocommerce' => $this->has_woocommerce()
					)),
				);
			}
		}
		
		$view = new Model_View('page/page', array(
			'sections' => $sections,
		));
		echo $view->render();
	}

	private function process_registration_captcha() {
		if (Controller_Whitelist::shared()->is_whitelisted(Model_Request::current()->ip())) { //Whitelisted, so we're not enforcing 2FA
			return true;
		}

		$captchaController = Controller_CAPTCHA::shared();
		$requireCaptcha = $captchaController->is_captcha_required();
		$token = $captchaController->get_token();

		if ($requireCaptcha) {
			if ($token === null && !$captchaController->test_mode()) {
				return array(
					'message' => wp_kses(__('<strong>REGISTRATION ATTEMPT BLOCKED</strong>: This site requires a security token created when the page loads for all registration attempts. Please ensure JavaScript is enabled and try again.', 'wordfence'), array('strong'=>array())),
					'category' => 'wfls_captcha_required'
				);
			}
			$score = $captchaController->score($token);
			if ($score === false && !$captchaController->test_mode()) {
				return array(
					'message' => wp_kses(__('<strong>REGISTRATION ATTEMPT BLOCKED</strong>: The security token for the login attempt was invalid or expired. Please reload the page and try again.', 'wordfence'), array('strong'=>array())),
					'category' => 'wfls_captcha_required'
				);
			}
			Controller_Users::shared()->record_captcha_score(null, $score);
			if (!$captchaController->is_human($score)) {
				$encryptedIP = Model_Symmetric::encrypt(Model_Request::current()->ip());
				$encryptedScore = Model_Symmetric::encrypt($score);
				$result = array(
					'category' => 'wfls_registration_blocked'
				);
				if ($encryptedIP && $encryptedScore && filter_var(get_site_option('admin_email'), FILTER_VALIDATE_EMAIL)) {
					$jwt = new Model_JWT(array('ip' => $encryptedIP, 'score' => $encryptedScore), Controller_Time::time() + 600);
					$result['message'] = wp_kses(sprintf(__('<strong>REGISTRATION BLOCKED</strong>: The registration request was blocked because it was flagged as spam. Please try again or <a href="#" class="wfls-registration-captcha-contact" data-token="%s">contact the site owner</a> for help.', 'wordfence'), esc_attr((string)$jwt)), array('strong'=>array(), 'a'=>array('href'=>array(), 'class'=>array(), 'data-token'=>array())));
				}
				else {
					$result['message'] = wp_kses(__('<strong>REGISTRATION BLOCKED</strong>: The registration request was blocked because it was flagged as spam. Please try again or contact the site owner for help.', 'wordfence'), array('strong'=>array()));
				}
				return $result;
			}
		}
		return true;
	}

	/**
	 * @param int $endpointType the type of endpoint being processed
	 *	The default value of 1 corresponds to a regular login
	 *	@see wordfence::wfsnEndpointType()
	 */
	private function process_registration_captcha_with_hooks($endpointType = 1) {
		$result = $this->process_registration_captcha();
		if ($result !== true) {
			if ($result['category'] === 'wfls_registration_blocked') {
				/**
				 * Fires just prior to blocking user registration due to a failed CAPTCHA. After firing this action hook
				 * the registration attempt is blocked.
				 *
				 * @param int $source The source code of the block.
				 */
				do_action('wfls_registration_blocked', $endpointType);

				/**
				 * Filters the message to show if registration is blocked due to a captcha rejection.
				 *
				 * @since 1.0.0
				 *
				 * @param string $message The message to display, HTML allowed.
				 */
				$result['message'] = apply_filters('wfls_registration_blocked_message', $result['message']);
			}
		}
		return $result;
	}

	private function disable_woocommerce_registration($message) {
		if ($this->has_woocommerce()) {
			remove_action('wp_loaded', array('WC_Form_Handler', 'process_registration'), 20);
			wc_add_notice($message, 'error');
		}
	}

	public function _handle_woocommerce_registration() {
		if ($this->has_woocommerce() && isset($_POST['register'], $_POST['email']) && (isset($_POST['_wpnonce']) || isset($_POST['woocommerce-register-nonce']))) {
			$captchaResult = $this->process_registration_captcha_with_hooks();
			if ($captchaResult !== true) {
				$this->disable_woocommerce_registration($captchaResult['message']);
			}
		}
	}

	public function _user_new_form() {
		if (Controller_Settings::shared()->get_user_2fa_grace_period())
			echo Model_View::create('user/grace-period-toggle', array())->render();
	}

	public function _user_register($newUserId) {
		$creator = wp_get_current_user();
		if (!Controller_Permissions::shared()->can_manage_settings($creator) || $creator->ID == $newUserId)
			return;
		if (isset($_POST['wfls-grace-period-toggle']))
			Controller_Users::shared()->allow_grace_period($newUserId); 
	}

	public function _woocommerce_account_menu_items($items) {
		if ($this->can_user_activate_2fa_self()) {
			$endpointId = self::WOOCOMMERCE_ENDPOINT;
			$label = __('Wordfence 2FA', 'wordfence');
			if (!Utility_Array::insertAfter($items, 'edit-account', $endpointId, $label)) {
				$items[$endpointId] = $label;
			}
		}
		return $items;
	}

	public function _woocommerce_get_query_vars($query_vars) {
		$query_vars[self::WOOCOMMERCE_ENDPOINT] = self::WOOCOMMERCE_ENDPOINT;
		return $query_vars;
	}

	private function can_user_activate_2fa_self($user = null) {
		if ($user === null)
			$user = wp_get_current_user();
		return user_can($user, Controller_Permissions::CAP_ACTIVATE_2FA_SELF);
	}

	private function render_embedded_user_2fa_management_interface($stacked = null) {
		$user = wp_get_current_user();
		$stacked = $stacked === null ? Controller_Settings::shared()->should_stack_ui_columns() : $stacked;
		if ($this->can_user_activate_2fa_self($user)) {
			$assets = $this->management_assets_enqueued ? array() : $this->get_2fa_management_assets(true);
			$scriptData = $this->management_assets_enqueued ? array() : $this->get_2fa_management_script_data();
			return Model_View::create(
				'page/manage-embedded',
				array(
					'user' => $user,
					'stacked' => $stacked,
					'assets' => $assets,
					'scriptData' => $scriptData
				)
			)->render();
		}
		else {
			return Model_View::create('page/permission-denied')->render();
		}
	}

	public function _woocommerce_account_menu_content() {
		echo $this->render_embedded_user_2fa_management_interface();
	}

	private function does_current_page_include_shortcode($shortcode) {
		global $post;
		return $post instanceof \WP_Post && has_shortcode($post->post_content, $shortcode);
	}

	public function _woocommerce_account_enqueue_assets() {
		if (!$this->has_woocommerce())
			return;
		if ($this->does_current_page_include_shortcode('woocommerce_my_account')) {
			wp_enqueue_style('wordfence-ls-woocommerce-account-styles', Model_Asset::css('woocommerce-account.css'), array(), WORDFENCE_LS_VERSION);
			$this->enqueue_2fa_management_assets(true);
		}
	}

	public function _handle_user_2fa_management_shortcode($attributes, $content = null, $shortcode = null) {
		$shortcode = $shortcode === null ? self::SHORTCODE_2FA_MANAGEMENT : $shortcode;
		$attributes = shortcode_atts(
			array(
				'stacked' => Controller_Settings::shared()->should_stack_ui_columns() ? 'true' : 'false'
			),
			$attributes,
			$shortcode
		);
		$stacked = filter_var($attributes['stacked'], FILTER_VALIDATE_BOOLEAN);
		return $this->render_embedded_user_2fa_management_interface($stacked);
	}

	public function _handle_shortcode_prerequisites() {
		if ($this->does_current_page_include_shortcode(self::SHORTCODE_2FA_MANAGEMENT)) {
			if (!is_user_logged_in())
				auth_redirect();
			$this->enqueue_2fa_management_assets(true);
		}
	}

}modules/login-security/img/header.svg000064400000005776150755146440013750 0ustar00<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;">
    <g>
        <path d="M16,8.59L17.59,12.08L17.6,12.11L17.06,12.11L17.06,12.12C17.07,12.17 17.08,12.22 17.08,12.28C17.08,12.45 17.04,12.61 16.96,12.75C16.93,12.82 16.88,12.88 16.84,12.93C16.84,12.93 16.77,13.69 16.78,15.11C16.78,15.96 16.83,17.21 16.93,18.58C18.59,18.67 20.13,18.86 21.55,19.11L21.55,13.19L21.14,13.19L22.2,10.87L23.22,13.2L22.81,13.2L22.81,19.35C24.32,19.66 25.66,20.04 26.82,20.42L26.82,15.27L26.41,15.27L27.47,12.95L28.49,15.28L28.08,15.28L28.08,20.86C29.45,21.37 30.48,21.85 31.11,22.17C31.9,14.72 30.28,8.26 30.28,8.26C22.71,8.01 16,4 16,4L16,8.59Z" style="fill:rgb(33,141,193);fill-rule:nonzero;"/>
        <path d="M28.04,22.18L28.04,28L29.81,28C30.06,27.19 30.27,26.36 30.45,25.55C30.68,24.74 30.81,24.07 30.9,23.59C30.9,23.59 30.9,23.57 30.9,23.56C30.91,23.53 30.91,23.5 30.91,23.47C30.47,23.23 29.49,22.73 28.04,22.18Z" style="fill:rgb(33,141,193);fill-rule:nonzero;"/>
        <path d="M22.79,20.61L22.79,28L26.8,28L26.8,21.72C25.66,21.33 24.31,20.94 22.79,20.61Z" style="fill:rgb(33,141,193);fill-rule:nonzero;"/>
        <path d="M21.54,28L21.54,20.36C20.16,20.11 18.64,19.91 17.02,19.81C17.02,19.82 17.02,19.82 17.02,19.83C17.02,19.86 17.13,20.68 17.14,20.81C17.39,22.7 17.9,25.67 18.43,27.99L18.4,27.99L21.54,27.99L21.54,28Z" style="fill:rgb(33,141,193);fill-rule:nonzero;"/>
        <path d="M13.57,28C14.09,25.68 14.6,22.71 14.86,20.82L14.85,20.82L14.86,20.82C14.88,20.68 14.98,19.87 14.98,19.84C14.98,19.83 14.98,19.83 14.98,19.82C13.35,19.92 11.83,20.12 10.46,20.37L10.46,28L13.59,28L13.57,28Z" style="fill:rgb(33,141,193);fill-rule:nonzero;"/>
        <path d="M3.96,20.86L3.96,15.28L3.55,15.28L4.57,12.95L5.63,15.27L5.22,15.27L5.22,20.42C6.38,20.04 7.72,19.67 9.23,19.35L9.23,13.2L8.82,13.2L9.84,10.87L10.9,13.19L10.49,13.19L10.49,19.11C11.91,18.86 13.45,18.67 15.11,18.58C15.21,17.21 15.26,15.96 15.26,15.11C15.27,13.7 15.2,12.93 15.2,12.93C15.15,12.87 15.11,12.81 15.08,12.75C15,12.61 14.96,12.45 14.96,12.28C14.96,12.23 14.97,12.17 14.98,12.12L14.98,12.11L14.44,12.11L14.45,12.08L16,8.59L16,4C16,4 9.29,8.01 1.75,8.26C1.75,8.26 0.13,14.72 0.92,22.17C1.56,21.85 2.58,21.36 3.96,20.86Z" style="fill:rgb(33,141,193);fill-rule:nonzero;"/>
        <path d="M5.2,21.72L5.2,28L9.21,28L9.21,20.61C7.64,20.95 6.28,21.35 5.2,21.72Z" style="fill:rgb(33,141,193);fill-rule:nonzero;"/>
        <path d="M1.09,23.47C1.08,23.47 1.08,23.47 1.09,23.47C1.09,23.5 1.1,23.53 1.1,23.56C1.1,23.57 1.1,23.58 1.1,23.59C1.18,24.07 1.32,24.74 1.55,25.55C1.73,26.36 1.95,27.19 2.19,28L3.95,28L3.95,22.17C2.51,22.73 1.53,23.23 1.09,23.47Z" style="fill:rgb(33,141,193);fill-rule:nonzero;"/>
    </g>
</svg>
modules/login-security/img/menu.svg000064400000005776150755146440013464 0ustar00<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;">
    <g>
        <path d="M16,8.59L17.59,12.08L17.6,12.11L17.06,12.11L17.06,12.12C17.07,12.17 17.08,12.22 17.08,12.28C17.08,12.45 17.04,12.61 16.96,12.75C16.93,12.82 16.88,12.88 16.84,12.93C16.84,12.93 16.77,13.69 16.78,15.11C16.78,15.96 16.83,17.21 16.93,18.58C18.59,18.67 20.13,18.86 21.55,19.11L21.55,13.19L21.14,13.19L22.2,10.87L23.22,13.2L22.81,13.2L22.81,19.35C24.32,19.66 25.66,20.04 26.82,20.42L26.82,15.27L26.41,15.27L27.47,12.95L28.49,15.28L28.08,15.28L28.08,20.86C29.45,21.37 30.48,21.85 31.11,22.17C31.9,14.72 30.28,8.26 30.28,8.26C22.71,8.01 16,4 16,4L16,8.59Z" style="fill:rgb(33,141,193);fill-rule:nonzero;"/>
        <path d="M28.04,22.18L28.04,28L29.81,28C30.06,27.19 30.27,26.36 30.45,25.55C30.68,24.74 30.81,24.07 30.9,23.59C30.9,23.59 30.9,23.57 30.9,23.56C30.91,23.53 30.91,23.5 30.91,23.47C30.47,23.23 29.49,22.73 28.04,22.18Z" style="fill:rgb(33,141,193);fill-rule:nonzero;"/>
        <path d="M22.79,20.61L22.79,28L26.8,28L26.8,21.72C25.66,21.33 24.31,20.94 22.79,20.61Z" style="fill:rgb(33,141,193);fill-rule:nonzero;"/>
        <path d="M21.54,28L21.54,20.36C20.16,20.11 18.64,19.91 17.02,19.81C17.02,19.82 17.02,19.82 17.02,19.83C17.02,19.86 17.13,20.68 17.14,20.81C17.39,22.7 17.9,25.67 18.43,27.99L18.4,27.99L21.54,27.99L21.54,28Z" style="fill:rgb(33,141,193);fill-rule:nonzero;"/>
        <path d="M13.57,28C14.09,25.68 14.6,22.71 14.86,20.82L14.85,20.82L14.86,20.82C14.88,20.68 14.98,19.87 14.98,19.84C14.98,19.83 14.98,19.83 14.98,19.82C13.35,19.92 11.83,20.12 10.46,20.37L10.46,28L13.59,28L13.57,28Z" style="fill:rgb(33,141,193);fill-rule:nonzero;"/>
        <path d="M3.96,20.86L3.96,15.28L3.55,15.28L4.57,12.95L5.63,15.27L5.22,15.27L5.22,20.42C6.38,20.04 7.72,19.67 9.23,19.35L9.23,13.2L8.82,13.2L9.84,10.87L10.9,13.19L10.49,13.19L10.49,19.11C11.91,18.86 13.45,18.67 15.11,18.58C15.21,17.21 15.26,15.96 15.26,15.11C15.27,13.7 15.2,12.93 15.2,12.93C15.15,12.87 15.11,12.81 15.08,12.75C15,12.61 14.96,12.45 14.96,12.28C14.96,12.23 14.97,12.17 14.98,12.12L14.98,12.11L14.44,12.11L14.45,12.08L16,8.59L16,4C16,4 9.29,8.01 1.75,8.26C1.75,8.26 0.13,14.72 0.92,22.17C1.56,21.85 2.58,21.36 3.96,20.86Z" style="fill:rgb(33,141,193);fill-rule:nonzero;"/>
        <path d="M5.2,21.72L5.2,28L9.21,28L9.21,20.61C7.64,20.95 6.28,21.35 5.2,21.72Z" style="fill:rgb(33,141,193);fill-rule:nonzero;"/>
        <path d="M1.09,23.47C1.08,23.47 1.08,23.47 1.09,23.47C1.09,23.5 1.1,23.53 1.1,23.56C1.1,23.57 1.1,23.58 1.1,23.59C1.18,24.07 1.32,24.74 1.55,25.55C1.73,26.36 1.95,27.19 2.19,28L3.95,28L3.95,22.17C2.51,22.73 1.53,23.23 1.09,23.47Z" style="fill:rgb(33,141,193);fill-rule:nonzero;"/>
    </g>
</svg>
modules/login-security/img/ui-icons_444444_256x240.png000064400000015520150755146440016060 0ustar00�PNG


IHDR�E�r@bKGDD�<��	pHYsHHF�k>mIDATx��{leG}�?g�K��$����U�!�>T���R��u�&H`oE�*U���.B
�RE*%�B��$E�Fd�E)�݈†>l�B��^��P�R�U����%���9g^�{}����{�=�y�~�9�M�n<���.��`���� c���Ab/�@�[�V�D��0��3AX9�0�N��_�B��&��>~�>�
c�;ab�D�ߎE����Qz�'k���M�ayԉ�6�!�:u:�:@RŤ�B�yDD���'�L��-�f�]S��q!�f�
S�Q�&�S��7MC��r==3dJ��{��f�Z���S0�Ms��:0K٦g�ʿ��&H�U�=�mc�4�i?UĔG��U4�hc��Qb�]�!�hL���W/
����@������pxh8�~�|�A��Qf?�ێ�1f¸����=u����Q�GJH��p����PϠI�w״m췥���ԧ>2���"�WÓP&{��n���T:s�f�q���H@���.c�I�����~S�s+�^|B�n�29�dH����]��v�-ˌ-m�e�h�>�����q&ت��g�9x�#c�n�~!����pxh8�4^/
����o�#�Z@��S���^�4� KZKP�d�9���C@F[�����,��a+����]8��v��K�qHl�w9ק�84�KB��ץ|��&��#��[�\C����`��R��!�����:�F
z��C���6��)A���T1wU.I�җ!4��ig�3w��������E:��q7����n�0uA���mP��y
�T�K(5ͬ�lNæb�T���rw�DV�]��t�e4���7�
�L���[��C��0��P��&��0���+�+�
����@������pxh8�4����Y��`��O����E�Z<��h�\J!��䞋��j
�;TK�Vr�0��ͬq�cˇ��u���a����p����E{B�w"�K��5���n-��c"w�v�T�6
T�hzီ|6�ŝ���Ι��N{	t��]��K��^m1(�6��m�3��'�R�f���`Ô�� �_�>��j�,�*�-E)�e��{�U�,��
\u���oV��:
`o��m�Ke�t��_W�O��dW3���Z
Քrv|�~^�g��`jyc���p�*���f��b�]M5��9��.��L��N��q+%����ۯ�0�vc�c�J��EM5���kk�#I�<���x_��	�I#0D�w��4xh8�4^/
��^c���
����d�r��DM{w�Q�t�e�{��^�`��b�r./��M:0գ��*���z���`]|S�B�(�e)�h͎/V����ܮ�"aO!�o�
,�u�^���Љ�^�=�z��t`�WeCC�MQϱo��0q��%���U�o?�<��@6��HG/���������uAQ-_�u||���ִ*2l��ٍ�uG�@� j
!�B��r�����	q�L!*)�h����.�V�{3���-��!�w�$dP�*�����/P[�t1���l3�hl�y�p������0b��g�L�} �3���$�%\/��.)TwQ�"uK7d�+�2�!�@������pxh8�4�'�aY$m��f�6�lB'�.D��
��Р��x7S�x��tI��eW�e}���d0�R�W��^ݢ��0](U�݋T�x����|��T�|����@v�^Df׹Lb��(�2��H��0n8;���_�Q�O��}D���&3{��Y��W�w��5*��e˗?�̖�G�
�:H iZӖ)/MP���(:�!�/�|B��[i����:�Gf
�L�`�~��:z$aa���^����ʭ|P�- kbݞ<ەL&�xJ�AABȼ�Hvᑢ�[�yS��ə�w�NJuy��%pw�0�_a"z��x���� �3i�1|��=����@����%�JW����A��m�\���
��l�>a���rV�-P��S���ו��j��A^�&v��&^W������c�qMz�-&| �ϜCʥ�xx�}\Z���W���4Ig��8�YL�1�a��R���O�Q�.�PU��(�>�K�����&c�.m��O�-����M\8S�Y���.�'�|�5�*܊B@֘A�%M��o��2���:�c�[��K9�3-��t�nNjB���o2�`*]9aZAq?Wկó���)%���0�"_�Ϯq��p�yV�!�/�h��I.(�$]�!�������r�W���+�p��	��P�;
4�4��E*�<a�o���l,�Z�>��0r"7���7`��\*!s<���@��Z��b�n0��͏��me�
HEH]��XSM�~#a��1&���|V�b�YQE}�e%ͦ@�~���N�N�>�8��o7*�G�B�M���R��-�U=��-��³��K���E��+x
�p
c\�U�Ws5W��la?L�s��f;���2�v�y���+�o���*m� �m�-����t8�
��W<���,o�̰����8f��=CH��`⾿�h�)���_�}�(�%m���'��&���
;��(�ݚ!�{:^����R��@���N���ү"�*�<�V�敡�5��o�h~q���+`6I��i�I<%�����Z=^JE\`�0]1����D��A��^�a0f��(���c %[�Gxh8�4^/��O��rdh9�����M7L)-�ӂ-���?K(����stբ�h-?�:�_XڧC�r�]��8�YB�3�|�C|
l�eXW��_�x�!V8Ɗ�b�8���bQ����7����N�4J�������l!��=�
D?��'a`^���a�q��8��:-�����YP��x�[�o�֝��X�Q"�Gִ����W}���
���1>�c���b�YV
6=��*��ۿŻ��)����8hs���������/��8��'Ϳ,�l������E�b���\Y�e�.�M6܈��d9u��J�ZĽj��-l�����&8�:s\Кt���y'�hs�[�Gm�h-�m��k�2^S�J��e%u\j5���n��|���;�଴��δa[�;�Хˎ�p�?�|�y��RaC$�_a�/���)N�UN��ƍ��Ȅp��~�Ú�/���k�������n����|J��)�/�9�Q:��,����K� �x�R�!  �B%�]lq+��|�w��	�ս_\GW�)"3]aCJ��%>��|�'� _�ƅDP���*�0���7³�=�V�ZE��g��V-�L���'���@}��2��ƪ[�P���'���rEm["v�O��#��
��5�g$�$?��mƟ'zJ��^S�xHj�g�4D������=�4�����@��F7#
ъ���~���z�'o	To㩋�b̓�dd�c���B�U%T9ҊD@��.�!�+N�wu�e��r>n��-�U�$U`I�v%�����A�Q����E�d��
��;�Ә:�+�a&�XĎ �y����%��k��������G�с���	��"�4��pxh8�4^��	@d6�((�Ԕ{�C::[�>�H,
�ɴNVN����hr.�~N�����Z��b�3�����+��Q�|,�%�t��%�n!作*�7����f��g(�m!fy��"�k�I6Y�/�eZ�ٳ���+��z�g�6W8ɦbQ%�y��8����Ï�2ŕ�#���b-t��Y�͕8y��nO�{]�!ټ�*���\� �(��p�2.�H�ٙ�d�.�>Z�(N��&�l�2�&k�	�U&ף���~�.���ו���6���58A7����}P:��BlkU�[�8�)�j�1�$��W� �!s\�������QF�n(qRK��:'�X���@����=$��x���#|�5:��@��]���2�S�i�.�&�W
��$`
8�t����3 =�&[#�ߥ��U3���Wҳq��.H{���➇�Z���,��ȣ���"��A��H��#�珁�W��(+̱�1�Ɏ�;����8�/�<E�E
�C+n�U:�|a��ɔ�M|�?L�����W1�$~}�W��,�o�V������R����l{��7�	������^�;<�,�t[�����T"�3SU9l��˾�H��[yV�&�a�@����E��&��<D4�(b���7q�����Ƶ\��\�u�f����7r����������^��Ci�[��.��h�����.�έD�"DD�_3��e������c��Y�Q�,�B@�fU���/�?���g���B�R���C�&��2��P�8��@3ZtS�,����v7�^#�另�;c'�Nȹ����.?d[�J!Az^ ?�<̯�oɛ�_s[Kg{(e�}�E�~J��,�-<<�����U����
"&B%�7�~�{�/
G�l�4^���j����Ԓt���cA��0\(�����ܓ{�̠�Q�8��YN�Bݙ�?[���R��$�k���\�{�u���׾~�Q��q�)�8���z:G�G��UK�:�
07��6�-��
WMY<�����
���Ѱ;�$5�&v�}%��8�)#9&)/��K^2�+��B̳�i��m\Ҥ����V�}�LD���1/i��n�]2č��>��I?U�7x���G�4�c�*�i��'<�iM
�p������7�Y�V��=�ӡl*&���ױ���^j��}fp��8l����Z� D3H�$"��:�0:û�{��]�~�+�X��,�V�y�۹�Ma#en>�x�ƨ�"
�I�3c��1e\�ӎe�(��$��z���t�nꅧH����v.|mO9QFL�&y���
���Πg)�5�ޜlW�v'�6z�K�,`]�ǫ�2��@}Ϟ����9�=<���a�8~����FR\p��Dx���T3�X�Ixk`������pxh8�4^��X���36�*��H!zu%Ġp���cܫб�d�w�5@�U���	OK�B�����a� B��-*�RJ*,��(�`�EC���ﲫi_ �+8�)�d�ބC)^H~M?j���@�x�9[�GW ���50�04[�	uDV�s��ֻ�u�F�}4��5L��U5TT�ⷺ)�{�`��U�:�1���zH <5�{�t����DߏP������k��A.�5fX�eH�-��}��3Ƹ"5�pc�PB���,��F��y����U�S�%�50�����^��pxh8�4^/
G^Lgo=F��bW�7r���~dg{PC�ؗH�E7us����mfx��:\(�7�,�+X�c���B�9�4!�A"T�C��b��ՙl�Uq���(��t
"h�e�S�|�5.���N��'x�U:�L�p*_�c�;�C�ơ�?��y����j��Z�m7�Sy�P r}�{��H�����,p�9�,�H��ޜ~S�}m���|���ތ�-0��=�]��� 	���XкCVk�_�~���K�� �;��a>>4=O�5͍s�p��
'�UX⻹�{J�� �F�alr���F}c@�`fQ���Ȏ�чxm܃���#<����𶀆�@������pd`��.�6I�p۞�]�A�+"y��P�ns3�oz��7hzeDp'���������m�&�M�w�M��h�<��Ǧ�(�����I���'G��>���W%���Q�W��V����oH�t�Mt�j��D�U���͕l� �n�	�I��w�oO_��5~���YX�w(�R���m���)��'��D������ɸ�����5�=�@��+���~���j�y^`O�`�$�!�_�U#�!G��B |V�:ĵ��>d���e��=A���y�<Շ��*^_�b
�T�)}7
b�P��o��h�hh���~7��r�M��/d����F�HGI���>&Ql���/�L^b�:ג��T��D��M�9����Q<��*y
=���2��~����/?J,����+%q�q���ޗ���S���?ܑ������
�^��e���]��G�SV�pu���^����س�~�o����Bo
l8�4^/
����@�!��/ON�G����ۮ2t]��С8�cݮ5�z=7��������ˮ���g��@�/�aE[��y#�3�#z��7L�.|��
��(cR�c�S��m�Q�$�6�ץ{D���a�{T�_j8�4^/
����@ñ`�/���_g�"d���`�ɾ���0�
���{�����
�����C�j����_9��jD�Ջa�~?�	dc�[�����0�*a��������,&
0��&�+���O�B4!��1��~��Ix���>�8�c��&�G)�j���I�����=@�5@�v�&J?��Q�l�Ç@��Q�����?�x^y�3%tEXtdate:create2015-03-11T14:59:12+00:000�i�%tEXtdate:modify2015-03-11T14:59:12+00:00A��tEXtSoftwareAdobe ImageReadyq�e<IEND�B`�modules/login-security/img/ui-icons_cc0000_256x240.png000064400000010705150755146440016176 0ustar00�PNG


IHDR��IJ�PLTE��������������������������������������������������������������������������������������������r�YtRNS3P���/"Uq@f`2�
!<BHK Z#'1S,�4���j���8E���|��������)��Q$�
��b�J��mߜGc?o�h�@^�bKGD�H	pHYsHHF�k>dIDATx��]c۶�H�阒]�K���d��%٫뺮��lm���w]��|�p��X�m�-��}<�w(1$��	;�F�@��%��?����B,Lh{�t���#��T@�/?j�9	m��N� #���+`��`��I�
��_�-s�ʹU0�M��[��
s�4`x��š�#��
�D<�~؀�K��.4�]`��PDDDDDDĈq����Ek@����A�~�*���	!Y���X�`hv3\LX�Ot�J2b�ؓl�QI<��� �6�-X�lֈ�6�H��|=j�`E�iq���Cv:�q���C?�?���x�,�r*t�ݻ}|;kP�4���d�Y���f���K��~[	>�X:+�i����ĆQV9\����e�'���A�tOS�:7��2����YsxM�ہ��B��&���z�>n�C��@��r@�*a�ӝ��%��MFDDDDDD�T�ߖ���H,���E���RU��n
ب<��V-
@�/Nm�թ��������Hw����*�+��#��$o�e�{�% �7\X��ǀ���2��~0��&n��sbA,�D��
�A�V�I��|�
�Og���鴋�	�7�y	7Jf����:_�w^�H	v{/O�9���<���Y�`+�� HRٰ����[��?��
�����=���c""""""F�˽�sG�<*k9c��E�8薽�������zfm��r�1�N������nq�w��&=O�\}K`
#���2��~��L�|?�m>�\�f�͹�:}�4ᦋ���{�)�n[��
�̰E
KY��D�ۇ-��	�+�Kl=�Ӄ��L`љ�|�%��n�	a�	���N�#��5�	(4��?����EDDDD\o�W�Ffq;��\E��_������,���W!%�zE!F�¶.�(USHQ0d�w)T���8#p,�x�B��K���� *�x��X��E�e������
K솎%mK�X~s�FE���~������tdc�a��I���1��Af4��dH��c�G�S�B`��0�wev`����"�{��	�.�GDDDD�,d�O�6�k"qk��Me�fS_����U��KŌ&g~>n� �H�})��L���F%8(�)r���!�[4统qQk�0�m[Le���_�7���0�@>1 X0A��Z���Vc�E�V ���Lt�k�3�EJ��44�Zﮊ�N`rt�>`�˥�	�	�
A��HBLH�@��c���Uq=j������cM����2�s����J��CL�iR �NQ�������0=��Yi�-�|4�V��]��]��B^�ޞ���_H�����$�<�$�	
a����=��d@�	(Z�Ap_�}�~s���:�N{DC>����m�^��ƒ����S�&�, ;�N����&�B} ��<_A��B]H�u��N(B0�{h���1�IK���Ds��j����'��M���8�.�ӫ1�h3�df}mq��	��n�U{��L�o�z\=?@	((��e�|=ơ麄�C�i����1r<|�OO�;�
`�H��p�Qy�zԈu�����Z���V��Ʋ�!�)��5m�C��2�Ly�g�;���֑�R���jW�a@��@V�L�&W���ru=Z
�̥�=U���5}���������7�;b(�����nP&�s��k�4����8�ͥ��0���1�U�W�v�k�18dq���T��ՌE]qH8������G�F�����K���'��r����Or�r�̧��6"fp��T�^3c��"�����n��Mم-�/��W=�tJ,�X�)���{�P
Rm|K��>mX�8v5h��<������_{ꘀ�Y�F�|&_G;&�>^�����W⁃�&�K���(��81�EB@F&��;"L���'wfw��E-6��o&/̫'X�e,>~�ee��|��A����=)	d��Q�`}P[���K��N��˂����/�~)����O[d�O=�3E�l5'Y�$?��7�m��Tzզ.�\��.��` WE���"""""v�)��V���<��K�ZX.Ex�~Ч)��ߚ����W_}�5|��s��/!?��'poդ���tC3����@�Q�)��t��`���b!,dY9�6A2���������/튮���n�t�TK>���#]�L;zq�J��r���²[��\-t�ҽ�5
@�ͷϟ��n�T@��+;�c���Qh�C*���T�ڙ��A<Sku�µb�E
/��$�Z���.e�j�����_ʤrWaB6d���(��S�s[�|���竕
/5R���(�4X�����76��`3|���P�p�'�H~<R?M�2�)�  ��g��Vp��B�n�=�|W�ͬ\��V0_�81Oׄ�Kz||lP_��ω���lxX;ǀ�Ju<��Ng[��]=�(�#]������p�P�a���i���s�f��
V�z�]ౚ����z>�Vr�?�f�?����
�Q�1�T`��} H�k���,{�VZˋT��ϛ�?I̯u�QK�LM�e͆��~��q������y�m0�9�S�;���j�����5 ��i��Q��]7k0�U�ޭ���G�kX����3#���lY��_Цx����j޶9��`�#
M	[z��KuO_z˿Dܭ��*��kOJ�(7��n��\�e�
I�T�ƨ�l�/�U������߶uw�.�~���;#�r��.�����8
�o# 5L��h>1�i�����p��V�M?�/u7��0� X@��L��+M�+�����{��Fkt�{�ŧ89�0`��. ĀC�R+\��/��t�R����;
�TӲ���]�aL���|�efđ��	�>�ۣ��G�|�P`P��8C1K՛�A�̍<�2��ۂ��K�r�l@L
L��������8�@�E>`n����PNԍ,��p�����E��Ɔ���Z�FlÎ;���F��7��Ȯ;�
��s�wSz)g7�{r�s��S��gȋ��(߄~�AWytX�$�NV����R�_��<6�p.�O�8�O[�OdDk>_��O�O�}���JS���d��mV�?�W(_��m� ��j��~=H IԁF>T/��{*]IGJ@i��qam�NF|Q�5���0+���E�S8�:�v�`p~v���j:B����p96�o�ys%��������
�|@H�����]��+�@��t]W�k}}���7��Fʮr���A�����B���\m�-�_�2PY8�����x�ՎN�.h�~��@+7��z5������t�_/�����/�?���0�S>��)���z�i0n�/�B����`{D��W���#`����B��o���[,�g��FVЁ�pP߾���C]Bz�� ��,X�����X�fԃ����A�:H�� k�7��d�Z9��oc}o�]�0�vd�:R]�0�ve���]刈����j����у����|
	?�+(��OǍ�+	�#��ys���ߍ�n�p���Fru<��.HȺotM�3h���}��߆P}�������˗��v�����P�}mǀ���?��W��Z@���������}��������@��@��FD�������l�%tEXtdate:create2015-03-11T14:59:12+00:000�i�%tEXtdate:modify2015-03-11T14:59:12+00:00A��tEXtSoftwareAdobe ImageReadyq�e<IEND�B`�modules/login-security/img/ui-icons_555555_256x240.png000064400000015514150755146440016071 0ustar00�PNG


IHDR�E�r@bKGDU���I	pHYsHHF�k>iIDATx��leGu�?w�KֻI�-��T��i��};�T[�-e$boE�*U��h]��@�J�D6�_$)(j7��	�»����QP��z��B��TlU�}n���6��k��u�}���w�+�{�}Μ�;g�L�<��=�.��`���� c���Ab;�@��z�D��0��3FX9�:0�N��_�B��&��>~�>�
c�;ab�D�߈E���.���B��H!�����6�
C�u�8t�u���I?�!�B��	*�Oz�.[�aͲ��l��B��
��>h>��M,4�R�o�� 1�zzf��^	4�"S��j߱�`�沛u`��M��(�,��7M���
{
ƞi�;�~�:�)�����7�qq�F6g]��$�ױ���t��	��pxh8�4^/
����@������ی2��v،1c���쩳�n�ʾ����~7��	��|wM��~[��O}�f7@q?@��#	e�����.�L�3�n�oF��|�
�T�el8iu{�t�`�neӋOh�mP&��L�v�5��zވ�e����]�lM�ԧ����7���q�X������]
��Wqw(�BP������pxh8�4^/
���G8����g�J�o��}i�A� ����)�s5�����~�aJYT��V����1�pT��V�P%��ت�r�O?ph �*�s�K�M�,�G������f
-��։��C�k�u�u��@��Fk�m�S�0�(�b�\��/Ch����jg�b)(;	z�-��tV��n�
R71�%ݪ-`�.i�۠@/���8�Pj�Y�%؜�Mź�h[���2��
����R	�h7�Yo�8j�~�10*X�t�0Ua���2�^M��a�%��W��W/
����@������pxh8�á�������pi�h�x��Ѯ��B&��=w���w�����n-`r5�Y��Jǖ���0V��\)��P�>����Y�D@���k}��Z@��X�x�X��Y
l�����]�l��;u�l�3e��4��ұ�p����!��bPdm����g�Q�O���c��:(�);	�WA��}(H�W�Y\U��R��P7���Y,]��`�߬('u��	�L��d�T˿��s����f�)� �&�)����0�(�����T}s�LU4�!V;�K���j��s �Q:7�ػ�^{�VJ�	�{Ϸ_a*���Ǫ�����j�.,��TG��y6
��#�v��1f�1i��Dx4
^/
����@�����9��l0٫\�>V���o�/]`Y�����`�����K,v�L��{��|<<��3Xߔ����-ҮsS�݂�۹]�=�޴����Rn�����֟6�>0���Mf{U�*���o��0q��%���U��d�P"�PX�"]���`C@f˫v�:S�E�|�B����d ZӪȰ�g7��U���A�B�T��M/V� k�������*)�h���.�V�{3�(lk�l�{IB%�b��j��5p�PAc�*Lt5�K|�w
��5�P��aļ��~���@�mP@�I�K�^[]R���E�n��We�@փ���@������pxh8�OZòH���͖m2لNT]��my���A9w�n�����I�������:���Jm^�Nzu��R�t�T}v/R��i��&~�Su�	�"��{�=\�2= �ٿ��ˬ�#տɨ��l��:yGA>7��CbȚ����f�J�_}�t2ר�/�-_�d3[F�EW��A"Iӊ��Rן�m���9�|��%\OC%�l�P=2k��dz#�[/\����#�����/��Wn��2o�m��+�L�є�����U�y?��>�#E���*��3��͔��8>K��>�ap�0�6D��9@4����A�g�6c�l�
/
����@ñ�`"]i��K�{����s
D07�ӕSz�b�!䬴[�,'XI��(cO�����ml��m���	k���#�<�t[L�@�9��K��Ȑ���Xg�d���.h�����sV��,"b����]Ʌ�d�].��tG�*�>�K����#�m~���P�a�&.�	�)b���muL��I���fnQ! �L�ü�#鷭m���c�ȱD�uBV�V��D`2G��P�����k�p��AWN�TP��U���(�iJ��ş�6�ȗ��e\���Ն�g�=Nj�6�g�
��t�� �ޟ?�[d�>^K�ߤ,�An"���hf
h6��T�	x������Xֵ$�C�
a�"D0jHM�o���TBfx^"�"�#�r����l,i��p7�u�����������,X�F��cD�����������J�M$"���Ĺ����}江W�o�*��B�5���V��-�U=��-��³����
��E��+x�`�Z%y=�s=��a���3��k�sN��4�lT�����B�Ƹ���h�f!���Nj�H��a?6�B|^�,����/0�rD��F[��5�!m`�
������'$�J~1��o�����fD��x;k ���6�(���j�P��x)�_4?K�oq&[T:E��9/J��0�D�`R�W���g�����^V
���$Y|����&y�eᯈ9���B��R*����ˆ	�ׄ�/j&R�E
��2��1{��a��`7�<*�@������px�]��(A���l=\n�tÄҢ>)ز�o�ӄҿ��t��Zt��G�@�K�t�Tn���FK�Yf�M~���-�L+���K��@�a��,*,�O��Y`�	NK�rw�&�}9�$ߋ�F�ݑ[����	�����@���{z&f������Ϳ�Ӣ��4�9���q�6�ah��x1i�e^ bdM+�@;z�7�m�0:O�a���<��<�i�	V�f�`��~�rp���;����u���6W	8VX��老����%=i�9`�d&���.�O���ʕ�i���dÍhN�SW���E�+����:?��x�56�	V��֤[ϻ�D�K��?jCEk�m#]^��qM�W(A���Q��t;/Ի-nux�0�-6�9�Yi5}�Iö6٤K�M���w�&�|��†Hؿ�D_���/s��q�/(7n���G&���}��l|���_����ONOvK����O�H!�!�g�9�G\�!�s���*��f�|�w�]�U�Z'�W�~q]5���t�
)y�����A��|�Sm@5�g�����������A찔�*��<h�jq !E��O�孁���e��U�~?���1N3��ڶDl*��	y��y���$�8?���şG{J��^S��xHj�g�4D����	b���?���hy
 ��|���h��_~?LTq=���������EM��Ib2����tu������iE"�zx��O��+N�wu���B>n��-�U8/U`^�v%����p� w�G�J�l�yTA��asS�>ge?L�^��D<�k�>_�i�\S�x���u5�_<����tO0PA���𶀆�@������p4O"�qGA餦�����v�GbQ��
p�rz��E��s�s�]
��6����&K������_)ČZ��/���y!wr'!��x!��}E~7C~?C�n1]�C�'I_���2	,�J͞�D\\I�g�,���1��*Q��ǹx�]�~��)�L���Ok�<�"m����k�vsxb��*
���Pa��B�F��+ߐQ!Fj��4��Lq���bSqf�X֘e
�A5YkOد2��?զ��)[l�S�Pҟ�0���K��(��J��H�A�t�&s��Umo
�T&@��oa�q���A�Bf��9�bI7�g�e/����P � �*
uN0�.p_�����{H�s���|�e:��@��-���2�Q�i�.�&�W
��$`8�t��f�&�m�����Sz

sߪ{t��+�ٸ9�u��_�~q�C~���L�Wy���\$�;�W��)W�]q0��	��`�9��!ٱ�b���x�=�/p&z,j�MZq�-ѩ��c�
O�l�s�a�=�/Nf����xH���rW	X�G�5��y
9,=y��D����n��g����6-6y�i��(�De3^��o�*D��g��rX���}��?�'xN�&�b�@���i��E��<�!�i��&��[�Ny���`�n�en��3Tg�ms�[�������I�l��_D/I����o�YS4@�os��Ѷ��
�_f����`?��X�q�y�.s���YV�m,G
�g���3��TG$���ɨ��(<#���5Ќ�T�?lj��<��f�k����s��l���=9�0p?��U6����������xK�$���Z:��C)��ˇ(:�S�/��`o��qM/�e��X�Z�/?W1*��c�sxh8�g������p�`Z�/�Χ���F��;�$p�i�B���O�<ȧ]x��5�ɸ�Os2ꞔ��
ݧ�Z`���&��X�t�岇�~�����7�0�2J�X�)e\��	08j=.YJ�Ql؀ٸ�g��l!l�P�j���I��l8��Ɏ���%�a4�O�+�-�M�1Iy�vV�y^�b�N�-��&7���(d �x�y^�v��!n�~�ɗN��b���C}�>ڦ1�_P�O�
^��Ԥ��!�N<�wc��t�Q���?���b��(}�]q�M�6��g����*��B���HF嬇��i5�	���*lf�ؾT��0M�p��]��.���%2�N@�C�H:��`f̞>���zڱ���^��!��4��tS/<E�%��~��%���	'ʮ�ɭaj������N�z���/����ow�`a���2�V43��7�)"P߳�*4��|&G}��*�tX2*p�~[����t�-��b"�4V<v%�5����pxh8�4^/yt,�w�D�Vx���bP8kY��m ���!��:,Y�@�LxZ�:,Ŗ�K��ﴂ~ZJI%����洡~��w�մ#P�
Ao�)�

�!d�)6
��\]Hc���!���yj�[t�z�a�z��.��j��GCᩙyI
:Tg~��Au��P�,3e��Y�e��"j�)a�<���=I
:��ov�5�(�9��b��¶�e�X�eH�-��}��SƸ"5�pc�PB�/`�3Ʀ5�(0�0ߨ��V�;��G�%���/
�_	l8�4^/
���#/������bW��r���~dg{TC�ؑH�E7=Sw����m�x���u�P"o.9�����6�=4H��1ǧx��G9C�t���"�3٢��o�Qb��DТ�ǁ��-��L[s;���
Kt4�F�T��Gbw�ƾ�?퐛x����j�kZ�m+�Sy�P r}�{��H�����8�q����D��ޚ~S�}C���|n��ފ�0�G=�]��� 	���ӺCVk�_�~���K�� ��,�a6>4=K�e͍3,r�g
'�U��߫�J�� �F�a�q�{i��1 �
0
���w����ڸG��<:�Fx�~?@��m
����@������v@]�]<�ҟP�j�7��4�"���}u�67s����~��WF$��
��Z��.��h���~�o�������xl�⛈<���j�r�{��Q<�W���T�J_U?[��򗏿*L��7��R��RyW�A�LWDt{?�Y�I��w�oO_Q6~���YX�w(�R���m���q^�'��D������ɸ�����5�=�@��+���~���j��yA`O`o�$�L��<B�F0C<�^%�@��?t�k3�}�@����{�^��y��U��|���pS�nĦ�t���e��=��$�v��~`����H_�B���
T#%].Xx��D�ѫ�OR��2����\K"��R\T|��&m����_�G��+��5�B�������/��l���t@R�j���u�x���9�|9�^��#���s�����]�A�k ��2��;~�$ʢ�.�y����_�#{����
�^~CH�ᭁ
����@������pxh8Dc�����I���8�~�R��K�:��z�۲�P���S���2��:�h��=�h�� /#`d�#Fz�C��	Ӆ/`�P�Q�!`�B*rls
���M�<JB����t���(6�:�t�
�A
����@������pxh8v����^@���l!�L��c�3�\Y��A�ֻ#�o���������w{��� d��Wa�{�b����z��N���n��_9L:�J�?n�o�9@� �I���I��)�“��	�DLf�z�a���������?�	�Q
�`;`�.*��9@�k
Я]����zԄ,���!�|z��εx���u\�v!�Q%tEXtdate:create2015-03-11T14:59:12+00:000�i�%tEXtdate:modify2015-03-11T14:59:12+00:00A��tEXtSoftwareAdobe ImageReadyq�e<IEND�B`�modules/login-security/img/ui-icons_777620_256x240.png000064400000010705150755146440016065 0ustar00�PNG


IHDR��IJ�PLTEwv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv U.G�YtRNS3P���/"Uq@f`2�
!<BHK Z#'1S,�4���j���8E���|��������)��Q$�
��b�J��mߜGc?o�h�@^�bKGD�H	pHYsHHF�k>dIDATx��]c۶�H�阒]�K���d��%٫뺮��lm���w]��|�p��X�m�-��}<�w(1$��	;�F�@��%��?����B,Lh{�t���#��T@�/?j�9	m��N� #���+`��`��I�
��_�-s�ʹU0�M��[��
s�4`x��š�#��
�D<�~؀�K��.4�]`��PDDDDDDĈq����Ek@����A�~�*���	!Y���X�`hv3\LX�Ot�J2b�ؓl�QI<��� �6�-X�lֈ�6�H��|=j�`E�iq���Cv:�q���C?�?���x�,�r*t�ݻ}|;kP�4���d�Y���f���K��~[	>�X:+�i����ĆQV9\����e�'���A�tOS�:7��2����YsxM�ہ��B��&���z�>n�C��@��r@�*a�ӝ��%��MFDDDDDD�T�ߖ���H,���E���RU��n
ب<��V-
@�/Nm�թ��������Hw����*�+��#��$o�e�{�% �7\X��ǀ���2��~0��&n��sbA,�D��
�A�V�I��|�
�Og���鴋�	�7�y	7Jf����:_�w^�H	v{/O�9���<���Y�`+�� HRٰ����[��?��
�����=���c""""""F�˽�sG�<*k9c��E�8薽�������zfm��r�1�N������nq�w��&=O�\}K`
#���2��~��L�|?�m>�\�f�͹�:}�4ᦋ���{�)�n[��
�̰E
KY��D�ۇ-��	�+�Kl=�Ӄ��L`љ�|�%��n�	a�	���N�#��5�	(4��?����EDDDD\o�W�Ffq;��\E��_������,���W!%�zE!F�¶.�(USHQ0d�w)T���8#p,�x�B��K���� *�x��X��E�e������
K솎%mK�X~s�FE���~������tdc�a��I���1��Af4��dH��c�G�S�B`��0�wev`����"�{��	�.�GDDDD�,d�O�6�k"qk��Me�fS_����U��KŌ&g~>n� �H�})��L���F%8(�)r���!�[4统qQk�0�m[Le���_�7���0�@>1 X0A��Z���Vc�E�V ���Lt�k�3�EJ��44�Zﮊ�N`rt�>`�˥�	�	�
A��HBLH�@��c���Uq=j������cM����2�s����J��CL�iR �NQ�������0=��Yi�-�|4�V��]��]��B^�ޞ���_H�����$�<�$�	
a����=��d@�	(Z�Ap_�}�~s���:�N{DC>����m�^��ƒ����S�&�, ;�N����&�B} ��<_A��B]H�u��N(B0�{h���1�IK���Ds��j����'��M���8�.�ӫ1�h3�df}mq��	��n�U{��L�o�z\=?@	((��e�|=ơ麄�C�i����1r<|�OO�;�
`�H��p�Qy�zԈu�����Z���V��Ʋ�!�)��5m�C��2�Ly�g�;���֑�R���jW�a@��@V�L�&W���ru=Z
�̥�=U���5}���������7�;b(�����nP&�s��k�4����8�ͥ��0���1�U�W�v�k�18dq���T��ՌE]qH8������G�F�����K���'��r����Or�r�̧��6"fp��T�^3c��"�����n��Mم-�/��W=�tJ,�X�)���{�P
Rm|K��>mX�8v5h��<������_{ꘀ�Y�F�|&_G;&�>^�����W⁃�&�K���(��81�EB@F&��;"L���'wfw��E-6��o&/̫'X�e,>~�ee��|��A����=)	d��Q�`}P[���K��N��˂����/�~)����O[d�O=�3E�l5'Y�$?��7�m��Tzզ.�\��.��` WE���"""""v�)��V���<��K�ZX.Ex�~Ч)��ߚ����W_}�5|��s��/!?��'poդ���tC3����@�Q�)��t��`���b!,dY9�6A2���������/튮���n�t�TK>���#]�L;zq�J��r���²[��\-t�ҽ�5
@�ͷϟ��n�T@��+;�c���Qh�C*���T�ڙ��A<Sku�µb�E
/��$�Z���.e�j�����_ʤrWaB6d���(��S�s[�|���竕
/5R���(�4X�����76��`3|���P�p�'�H~<R?M�2�)�  ��g��Vp��B�n�=�|W�ͬ\��V0_�81Oׄ�Kz||lP_��ω���lxX;ǀ�Ju<��Ng[��]=�(�#]������p�P�a���i���s�f��
V�z�]ౚ����z>�Vr�?�f�?����
�Q�1�T`��} H�k���,{�VZˋT��ϛ�?I̯u�QK�LM�e͆��~��q������y�m0�9�S�;���j�����5 ��i��Q��]7k0�U�ޭ���G�kX����3#���lY��_Цx����j޶9��`�#
M	[z��KuO_z˿Dܭ��*��kOJ�(7��n��\�e�
I�T�ƨ�l�/�U������߶uw�.�~���;#�r��.�����8
�o# 5L��h>1�i�����p��V�M?�/u7��0� X@��L��+M�+�����{��Fkt�{�ŧ89�0`��. ĀC�R+\��/��t�R����;
�TӲ���]�aL���|�efđ��	�>�ۣ��G�|�P`P��8C1K՛�A�̍<�2��ۂ��K�r�l@L
L��������8�@�E>`n����PNԍ,��p�����E��Ɔ���Z�FlÎ;���F��7��Ȯ;�
��s�wSz)g7�{r�s��S��gȋ��(߄~�AWytX�$�NV����R�_��<6�p.�O�8�O[�OdDk>_��O�O�}���JS���d��mV�?�W(_��m� ��j��~=H IԁF>T/��{*]IGJ@i��qam�NF|Q�5���0+���E�S8�:�v�`p~v���j:B����p96�o�ys%��������
�|@H�����]��+�@��t]W�k}}���7��Fʮr���A�����B���\m�-�_�2PY8�����x�ՎN�.h�~��@+7��z5������t�_/�����/�?���0�S>��)���z�i0n�/�B����`{D��W���#`����B��o���[,�g��FVЁ�pP߾���C]Bz�� ��,X�����X�fԃ����A�:H�� k�7��d�Z9��oc}o�]�0�vd�:R]�0�ve���]刈����j����у����|
	?�+(��OǍ�+	�#��ys���ߍ�n�p���Fru<��.HȺotM�3h���}��߆P}�������˗��v�����P�}mǀ���?��W��Z@���������}��������@��@��FD�������l�%tEXtdate:create2015-03-11T14:59:12+00:000�i�%tEXtdate:modify2015-03-11T14:59:12+00:00A��tEXtSoftwareAdobe ImageReadyq�e<IEND�B`�modules/login-security/img/loading_background.png000064400000000235150755146440016302 0ustar00�PNG


IHDR((���mdIDATX��ٱ
�0�A#{C����E��A���u�$	P����c��p�ym�r�S[r��s��	(P�@�
(P�@�
(�U`��/&��#��7���Ɍ�z�IEND�B`�modules/login-security/img/loading.gif000064400000004761150755146440014074 0ustar00GIF89a�����������ర���莎���Ȝ����ب��������vvv������hhh!�Created with ajaxload.info!�!�NETSCAPE2.0,�  �$AeZ
�<䠒�ÌQ46�<�A�
��Ha��:��ID0�F��a\xG�3��!�	�O:-��Rj��TJ��*		�
t
��������~�"ds]�
�)t��-"�i;H>�n�Qg]_*�
�R�3��GI?
�˴�v$ý�j3!!�,�  �$�0eZy�0��q ��P�УW�)";�qX�^�D50���	Ո<H3!��k-na� �(�i���d�$P@yw`�J��#
?�
y
�����o���g��
f���'8��{'Cp`jn�"�
2�{�`x�jy�4�C,�4��o#n�$��ß��!!�,�  �$� eZ�$�2����q���ҢE� ҉�p$H@D/���G�DÄj8v#��P((Dƶ�� �N�(3ܴ�#y�(@	gUx*
kK�)?K

���������$��"
�*���K��
�W����x��?�G��#�Wк��n�h�K,����+���*!!�,�  �$ eZY$1��Q(c����Ң�O'"�������� 1
��q؍d"�A
�V�x8p��4988MRC�@	e*3@
iI�)
'
?I���@�������,����#
�����5�,�����"�E��z�?��@�E���@�����)�����*!!�,�  �$�(e�$ÐĠ�
C�E1
	;���('2$��!��DS%!����)e[��TE50�p�Ũ� �F�
�{V8,�%`3
gI�w�3
���*������h�"��)	q4��)#�g��#S�$��"�$
��>��%�`���r�J{
1���$ʈ��!!�,�  �$@e�6$��Ơ��`�3*�=��
��� P�\"F�����`P�-����d5V�"�2�|?n"!(
�����)e��4xyc?		
��3������
�#wyJl%
o�^[b_0	VT[0m�
$�4�>�'VZ
�c��3��$X���%!!�,�  �$`e�����:D3
�H0�,'j0�Q�s��L(2HM��j#�ȉ�B�\O�i`u��=Y���EVL=I		
��>������
�suIWJm|	\"_�b0B��cV"d]*K1"	H|@B?�I4��#�S$�-|�|!!�,�  �$�4e��a��:D�h�����I ��/�K�$W-�	0(`3���F��=��pf@�t�Q����
{f~*���y��S*mg)	�enu		E^Z^	g@	kw(b&	-w#"�xW"�t
#�#�%U$�`�t�o!!�,�  �$�4e��a��:*����1����v/�Kd��z���<�p6%tP5���S|���H(�F���c���`05xz*|~�v�G�0t#
	Fh�0
#Cd
1
�I�#(i	-��	�	uEL	q��"	h%�$�$<��q!!�	,�  �$�4e��a��:*����1����v/�Kd��z����p6%tP��t����5ũ3��n��G$�
�@a���wy{hoFS>k#	FY"�%E
Cb
A�I4$	(z�:2��
mI		L�l#�#
�F�#�#�>�F!!�
,�  �$�4e��a��:*����1����v/�Kd���V�tKG��22��7�D"����$)����Q����qp8y
l
|~���6z�w2j#F
�"	�%
V�C�
]�6a$�
Q�:2	\�EF	I�&�x	�"͓�F4$�]�#�x!!�,�  �$�4eZi䠒J�16�<���B�
�?$r��T�HzDP'"l�(�1�5�y���8tg���p,�q�M��*		
q
��������"}�#	b?y{		{)�s	-s�:�9>e�E,C\3
��^�3[�
������S��|���?!;modules/login-security/img/lightbox-controls.png000064400000006236150755146440016156 0ustar00�PNG


IHDR�2*j��tEXtSoftwareAdobe ImageReadyq�e<@IDATx��\kpU����$3�$�L ��q��w���A�,�TPB�@"�D��
Ft-�u]��Z���G�ŔD�u��Ԭ�#�@�<����b�LOgf��Nu���s���w���۸ X��	��g`�±\�ñ�[	~�R	eL�XlH8�1��`�%��Wd��^E�*��^E�f�*ɚ"
�*r]
'�~�"�J���x��|���//[U�J��J��m}v�9}�,/!h�~�a��^x��r�.{��F�d��ʭk�
b�ݰ~C���=l��d���ҕ�I����x�SP>����+_(�_s�Y�g��Y��a�\vW��,VKE\|\��Aμ0��	�0,le�1�g�J��%$&�cbc0�e7&��$��l웒�BvuuaZ����ѹ���îޠ_m��&��
z�͛��O��|Z����@[[=ڇi%x���ur���|����(�B��y�KC�Y�P�\��<Q��b,�*���;nܸ=8ȡC�f†R�*&�PbF��	k2Ge~��Y�F�y^�V'�a"A�MFl�}�6F�`�~�{��v���Ҏ�ܗk�ۗ�Z���V��~��R�/����;^_��o�'l-999�:u����0��/��acǎ��[
����uZ�d�р����&��1$��Rc���$�f�U$E��&�-X����C����Gλ{�~�;��d�G�q����I�A﫜�􈸯��/�5s�%qH�M�Da��?�3>��U5��?����
��ե�Ν;ۀic0��:�N��g_#�5���R�0y��#G����y5��d6]|��/�d�B�����].�gk׮�ڷo���k���:u*�m�6grr�H��:�vJ!�p���}N�eB*ĉOAb37����ݡCkkk�Ն��u��jqp���/����!�G����>�f͚���Ib_&m޼�f�,�F4k��ꫯ���6Џed�e�Ν;�p8>�R���RUcc�$�R�W���z�,���A�%Ph�a�;iҤ#������Q�����<��^���m7���,B	���f�ErfժUo��b�0(|y']��{^.�� �1&�sr  ��=00
G)wz޲JI9��4tvv"��.^����˗�UXXX����r����F�]��h�Z���߆��P
j���+V��
������.�:y��"h9A����'�Ίʠ�g����F�)��_�t��7€o���[w�~P{?�ňu�]�vM�2�jE�Ͱ�-��U��6m��C��h�����-�o�|�}�F�S
b���e�: ��ǯ��D,���*�c#
^P\�m��uV�;��~����&f�	�h<4R�����5`E
��p���=��~�Q?�m�X�CL���b�/A�"�(�UD��7�=E�*d4��@���I	Q$��y�v%%^<����
�\͇ؾ���ƙ�'�Ԍ�(/�Vp4X�῔��b���Q?�|@� �8F)xa�S�E �����=6���Va��yu!�T_���6�DY؀|yd���K3}H	Ap\��4�w{�{�����;X|\{f��x���G4����3*M�����&�,_����.=���r��i��H�x�9�9Dn���62m�p�^�?U��<�>���zS^��l�6Y+8Ӝ�|qRz�����v��t���B9�&$$h)
���Ʈ�����#f����Z�)�r�����hoğ��0�oɠ�]��3�Z�-q�Qo8����i�`����������[r�ͼ!S��C��C����u�v�v{	׊nE�y�~ 7�y��ו�դO-\Iz�)�j���4��	��Ca��h�������	��qIxI9j���jrx��9jR=VE�<���e�8M�o�}(��S�j�Q� ޶��Q��q����S�s�pI��-k�=�C�/�SE$�'>Ɇ�
V9q�W��u��67I��!W��ϥ�#ɑ�q�=����l�OOK��2,��o\�]�2�
��BET�
���̙s�E�n��j�zq�a��9�����;���^�dI�+���$I+L�m���Yi�
ض�0�!hK�[��=(9���E��u��X�Z�y�_�o�tƘct2�WI�"%;�J����fz�׃{Ч�D�}�ɬY�;��S�N���[q�O���	>�e��m`�)YYrLj޷�k�Xd�vfX�G@��_\p���s�͕�i�6DP�MHq�5ԌO`�u�gg��XF���V��䇭M�c������_�4��kii!gΜy#$V�+�gϞ�8*kT��v̘1��̙3����PX6������������^W	[���֬O��Q�|�[B���
�=�c�P�e0��y�^㥴(F\��.`III5�����3bTߘ1cڋ��jF�}Nj;Ə����\�{!��[�������no����V^f�v��YYYp�F�F|:���d���a���"��'6��XpG���k�r#R�r#�{G���Y	!L��j�UTT�p��j3//�0��h4�����o!�9�l�2{�4/k�[PP�>��"�m�Rk�:�{�d`Go�t�;�ߝ����f��*c�c_�IR@�ӷ<���~uz��k�lڴ��~�^���kjj���c���XWWױ���4q��[�������|(��E&N�| �ޟU�^��S5��T1hS�5�����������r����f����{���w�r٭�����꺏�>
G�566~���f۳g���E�Md��F��+�p���m,��2�h��w,Z|@������l�r�G��E


�����l����S�ݸq�cڴi�@6h�_!'h�����Q��N�%r>y"�N�$�hП�B��:{���$�(�J�d 8
z��t��v^�8�,|�+��
�`�!E8�'���N$l1���}ƞ�b<��V�v����h��P�I���0؍�ja?.^���V�v`���u��Ƈ���b�ɰ����^�.k;��Hd�A�/���Я+�IEND�B`�modules/login-security/img/ui-icons_777777_256x240.png000064400000015527150755146440016111 0ustar00�PNG


IHDR�E�r@bKGDwd�ǭ	pHYsHHF�k>tIDATx��{leG}�?g��l�^CKd�*�M��&6JRm�붔M��ފRU�d'Ѻ5@���TʣB��$E�F��"����nDa���WiSR�I������6��Dy��q^3���s���|��s��̙��o~3g~3�	>�G��o��.�4^dL21�L�$���`�l��[��~&+��&щ@�����G�`V�a�g�������'�al�N�X���b0���t�(�P��5RH�&�<�ą��-`����r�2�2�)���Kz���,�$[�Rp��R
s�u�8r���]aj���#z����T�MS$�\Oό��3�!ZP���Y��o��)D�	��N��#Yʦ2�:��)P}��_U�S�2�L��]���a?��szՙ�/l����ljٛ�<�2���ݎ:�+�g/
����@������pxh8�z�|�a��Qf=�ۊ�1f¸��;{���ã��)!)���f�B=�&5�]Ӷ�ߖ�f�O}Ϭ(�0o�Y�03(K�dl1U�+�թ�LM����z{��D@��>]��D�-o��m����u� �����]Z�V�,ˌMm�y�h�U�z��f��i=@]�S؊tT�o6g%�S�B��_qw)�DP������pxh8�4^/
�_�G8Ĺ��{�J�����a� �� bR�<�c��r����� �@)��ϰ�?��zM�؅�jl���*w��V|�}}���C�!4l�t�_`���r�ӭc�0��,@�%6����p-�n�����>(x�h��i�@I��zJҼ�y
ts�Y���@�ee��C뱅r��jm܍��C�&��[�LM�%m{�e^3�JM3�@��Ӱ�X7mkA���"��.�v���2�Mu���ZfPy�
�-�!LU��is���_hxvv��+�3�
����@������pxh8�4����Y��`�>H�Ԁ�E�Z<��hק�Bqs����j�?TK˖s�0��ͬq�c˛��e��\a.��zs�y��E{Bq�"�K��5�>�n5�{�Dn{�D��Y	l�����]ys�x-[�L�qmЭ�q�
`_�X�A*�fLOtL17�:0k S�Y�B>����
��/S�A��]�C���gݳX�:p�:L*�YQN�T����\}=����"��dLM�	��5�-�l��}�0�(��T��T|s�LE4�!;�K���~p��m���
��{˷aʜ��Ǣ�.���J�m.71��8(I��	�:����� �s�d���b�S�Ҟ�^�:�S�)��!"�����@������pxh8���4gW@~=�
&{�K�'jڻ���,��#Vv��h=L�*�}y��L����ʼ=<�n�3Xߔ���_-ҮsS�݄�۾]�=�^�����Tn��f�3���n�D@=0 /^�E���7!�`��)��W[_P��j��lId 
�[����m���ly�6Pga꺠��\�u||��ִ*2l��ٍ�uUc h������iŪ'��cd��d=�zI�D\4���zc��=����U}�	齋$!��T1�H��W[7
t9,A�ll������(Y��:FD�����a�N��\����B�5."P7w#?(c���4^/
����@�1z��I�f /n�l��&t��B���ȫذ� �ʹ�w3Ō��O�DHZ�pU]�g�C'�ׁ,�Yj�lwҪ[t�"���{��OCt5�o՜��w07���ދ���:��A���Yf���ㆽ����ϗW�Sqs�8$������m�����񞓹F�~1o��'��2�:�H�V��BH]޶�[�?��� �P��f*��:�2k�Xe�5m��(�cTp�f?N��0�H�j��r~��V�(�`[�h?��DO�] (�@x��#2�'��Gx�(�`^Tesrf���K�.������#�#l]D`�A���`�Dx&�0F�ౣ��pxh8�4{I�ҙ��������ߨ
�k �ٸ�V�����K�
!g��e�8�Z�}M{��x��und�mn�u�LYs4��<CO�ń��OH�|"�����Xg�d��9�k���-rF3�,"b�����]˅�f�]Ρ*wG�"�>Ƌ����c�6m^��P?��,LD�1DV�2�S�$_`U3���Uf�aQ�����v����F�X"�&!k�֘�D`:G�㊐�(����q��A�O�VP�U
j�(�iJ�l�Wq���K�l�i��3��x���� T!s��XD@��s�9�+��y8�u\m���Y���"�r���7��v֗u-	��v!���H�
���
�4<��@��(B$"Pd�V�Z��Ɯ��	wߠ�����s0k��B�5h$�]�dpϪ�_�@0+�����4@"h�O�t���c�k�Q����i�����c��%�������}�T���C����5��|��j�f���J򭼕���da?L�s��f9�[�2�V�q�����7�;	y�6m��N��i
�b�-��"�?�[�fX���h�E���!�ML�q��RT��DW����*�ZI�hD$�w��{�m�:
~�f�����E㳔�&G�E�Sd�����J4���ye���]�U�/��Vx���0�6ȃ��"X�W�Nj���O�FS��
�������g��c�>����$C�^�xT����@��������)>U.�,-���z����)�E}Z�e��g	����t���t��G@�sK�t�T��k�$��ZK�y�O~���-�Lk���+��@=�2GXVX��`�3�"S�����Ml�r�i�ߍR{wn�'��'8S��j�o��O��I����;tXa�.0N7��N�.����(�O<�	�;���v��ɤVyY����5�(a��U_}���h?�Gx���8�񈦂�Xg��MO��z���!��V.q�įi|��LH���L_F�y�Uғ�_�J�`B]L��"�t����Y�e���M܈��d:u��J�Zĵj��ml�C����&8�s�ךt��﹅����m��6T4��6��9K�)�
%HZߒ�:.՚n�z��
w>
���c�^68#ͦ�1mX֡C�]������[��5: a�2S��-��I��I��\�q#`������pP��e^b|~.��?�=�-5��OK�?��0�9Lx�%8qI��T
��d=\����&'���=n)X���[�8��SDf�‚�<��|�'�O�!��)��6���3�U�a���g}o��sk;�����'�Z9�Z�]HQ�3�3����u��<�cխ_��t�����~���%=��?��r=�r5�)�6ɏ�o�X_���i�wI���I]D��-�� V��G}��-��V��t3����˯��
�g��@�0���)��<HLz�1�= 4�_�C�#�HTo��"�	�4�I�N�γ�}tY���4��$�
�,*�؎d1��5�-�����c\�K6�<��˿�9��C_��fr��E���5~�/�]^S�xX��u5�_<���t_0PA���𶀆�@������p4O"�qGA餦����v�GbQ��p�rz��E�����U
�6����+����]��_*Čj���/��7�>Bn�6B��M��f�����E�-�l�2=)H�x�
V�`�Vj�,&��Jr0���Y��e����T����]������Gx��L��뼪�]�)�is9NG������^WiH6Ͻ�
�`7"Hʬ)\���1Rsv�6Xe��=�N��c	�`�
T�d�=a���z8��M�?�U���U^Wҟ�<0���WK����H��H�A�th���֪���q*S����d�I&���F�B�8�YbI7�g�=^D=�;�@�qA,U�`b]�=oO˷��1�J���1V�R�;��@����x�՘2�Ht!6ɽ\8\'�S��3�6��7�tk�l
����SP��V�أ�~\N��-(;�� m�j��k�s�O�fj��c�����A=�@9�C�'��*B|�e�X�B�d�R�
j
�o�M��s<�C�mQ�h�U�B�’/�!�<��`�_���uq2�U<�G�_���*������:/B!G��!/4��?"�^�1����v3�צE���e��bIT6�U���B�?3U����y�w	�#q��%j��	��2�e!�+�6X�>�!��F=z�o�*��i���k�����k�f����7��빞끛�Y���^��#i�[��.��������.��	�e""��ҿ��~A�~�/��#��]@� R�*��X���ś�s��TG$���ɨ��(<#���5Ќ�T�?͉��<Z�f_k�6����z�pr_�%���-m-��~��0� ��Z�$o��--�U���]��C�)�xs������3�R,V-���)��������4ͳxH��pxh8�0��~'�RK�9�KT�]y��,p��
�grw���μG}��d�g9�ug�l��3J-�Fhp��R�A:�|�C�<�k�N��DX�����2������+�\u6`>��ym<[=��(�xZ�}W#�N�
��awpQ�M���L`K�qSF�MR�����d�Sij��g��|�۹�I�͡����
��Z}+�c^Ԅ����h���E��^U�x���G�4�c�*�I��O�&'5)�1?�sH�����f5[�����C�P2��c�+���j��]3��e��Ygt,��@�+g-��O��J`e�La1C����YZ���n�]3��*~���:�g�("褿[��1���2��n�2�kY��L�_�|��.�M���y/y/
����({F$��i��=|KA����,%}[қ����d��FYg1�iF�UOQD�>go]����\�z�W��bT�����=).���xY"<�y�@�h�x�Ixk`������pxh8�4^��X���26�*��H!�u$İp�2��1�@:-$#YtX�
���)tX�-
V
"$��i����J�/
98�iC���ﲪiW��T�$^�V
�!d�z��ݞ\]Hc���!���yj�Wt�z�a�z��.�
�l��FCᮙyI
:Tg~��Au��P��2c<�Y�Uf�!��a�<��=I
:�����5�(�+9��b��²�UfX�eH���U�'� PSg�qEjX�Ą��|^�*��t����|�F�N�Y���Jxk`V,6Sw!�4~&����pxh8�4^�����z�AdЊ]��
_����A
�cW"��tO��J&���1��p�D�\r:w\���{h�L�e���QB�!B�;�-��X��]�ˎM�� �]6�	x�o��%ښө�x��Y��9�4
��U=�S?�k(����W�Np�������Ѷ��c�����c��؋��+��67��G�����z���o�ӿ��?������6��k��>����I�Uf8˂��Z���
,�C�H�X��|�iz�6��)�X�0Ovث�����;J�� F�alp��F}b@�`fQ���=�{Ɂ�i� ����<���5P�ŏ�.�_�px[@������pxh82��P�~;���G�Mt��M���-�v@]���ܠ�.߰�	������>��K�9�4}��6��. �/n�:��&"O�'�"�'G���>��P%���R�W��V~1���K�t�Mt1j��D�UlP�%�U��
|^�ӿ�]���C����`��
���_i�/�{�җ�VQd�z16z��f����udO?P���{�f�_?Az��f����_?	o��#�j3���URmU�qmf�h7sIb_��.`8G�.����篘B5nJ�M��4��7sIb4@4���F�Xb)�&���Pq���F�HGI���>.Ql��/�LVb���%	�)	.(����?�V��r�
飸�UU�zX!�e|U�l��_6~�yUY: )5WJ�/��?G��������pG�~/_�1���7lz
D�X�ǭ�����pu���}^���k�س�A�o����Bo
l8�4^/
����@�!��OM�G����۶2t]��ȡ��cݶ5�z-�o;�3�`c�6�Fz�AmǸ�m��`�c�H�<t�b^0a:��*<J���UHE�mN�^��	�GIȃ@[�_��1r��ZG��Q~"����pxh8�4^/
���	?!��P�-d�����{�M&��@��3l�Zw��ags/@��3\�Z�g�B&
�rjD�Ջa�~?�dc�&������v
���H��c�~A��LY�|�)��M�DLf����Q���C������?�	�Q
�`'`�.*��1@�o
0�U����_=jB���3z4W��ؽ����VIf.bF%tEXtdate:create2015-03-11T14:59:12+00:000�i�%tEXtdate:modify2015-03-11T14:59:12+00:00A��tEXtSoftwareAdobe ImageReadyq�e<IEND�B`�modules/login-security/img/ui-icons_ffffff_256x240.png000064400000014233150755146440016534 0ustar00�PNG


IHDR�E�r@bKGD���̿	pHYsHHF�k>�IDATx��]]�%�u�z��fV^���;l��Y��03����&)��]P���'�M@+�ȋa� k����`�J!&~H2ք F�����?�!�0�_&`������>u���޹?U_3s��Su��|U�]��:!D����@�t	8"t�@�M;ljH=����&���Om�k3��F�B���8F��;@*	��c�Oy�=kWڅە 3�ANI��*���v�P�-�ast�$Hp�	As�2���1E,ځ
ԪGE�'i�he��]iSǼ�jv�q�P�r��
�/Y�	e-�ڦt	R5w�gfI�;&�Im�J�m�qk�ۦ�w��4����BsȠ�WM��	&_�
��/�1n�;z�_$�	8�H`���# pD�H��	8�|3���h2�oF�����)���e>����}�H�l>��L�B��V-�}u���Ҿo|ڵ/�l��|����"��o��]�}�H��SwǗA���s!����8���0��3@j~y�Ӈ��
��4h����>@"���)J��_9]�L;�nj�q (pD�H��	8"G$@�'����Mq���Xi��}"�0��3�]A�S(�~	 @��@-$M�6
W�3�'�79��+�O�qOh\�O<
`��xT�OHp���/d�g�4
����"Gl�Ո�������f�+)CO�'�u�*c'�TM�K�h^�<� �uW������hzH��ʇ��ڸ�q풁|��	��v�AM��1���|B�2�t3X���b��hWr��s�n���ZLwp�O�~���8 pđ��	8"G$@���# p�C��R��~�O
�xD��s���M�*�|�{oW�C;]���Հ��l��5���)��^�^� #��š�N�v�97>
�t�m
aϿ_
����k{�bW%p�@ݖ����C�>۩��`���ͤq�ǽ��;�~��>��iC�ZX^�[�H�f�alsX'�0M	�_I��~9���'}��~{���.��@6��2�,h�PU@�U��൓�)��U���CH�����
��  �_���\������f.��*@����/gN*��C-�{�g7�H4��ɼ�ko�r���?_59�����]b�U/_�kp�)m���/�q����T�oLZ8D�88"G$@���#`ܘ��*s>���ʧ轎��I�{��`����>@��1�%,<v�L�躸J^�8���
l�/i��� 5[��~냍���vo��h$��+vb
���y;�ţ�%�/鱀��M:��Uե�ͤ��帧M�0 ����g�t���+�g��*l�n��4�[H��@�o��BB2�����,�p̨z�Q�&k�7	���]���҃�=��ɅO+�R�{�1�~	8(3�u�Y�M��q �����Q��T�U_]�컋!��R5D�	5�
$k��,������7k�퍦�M$AgƸ>��`3�5"G
��# pD�H��1{Hg�[��0	��˖\6�%��Hqx,O���af�l�x���t��!
��b��[�WX�7�w�Ny�Z�.Zu�C�T��k����qh�_|k������j~�Q@��n�2=A���6-�kϺ��"��-R���g�Z����P���v	�\��͹8f/�-��K�p��[΃�:%,A�L&�S�&D�'���M��s��>A'�����F�Uf�`����J���vQ8��]�����6"�?����_޽C�$�n�����\�B�������a�����#�¬����#,�5D3f�q����# p,��'�?�'���޷:��0�+n�֚^vx�] ��f45b{�=6v�=N�WxG8£�K��3�k�t͒�]�	<gr
����4�
IE�:?$X*?���j^{v����G��O&���z�ܭ�����-�:-	5��Q�TC�5Ķw����X&s�Ɨq@���;�`e�,#��巣��&�!��=dKd�aOKa[Jlr7�Wr��Ќ�x@���z>�-F⛛./������復���Ou���{~�#q��R�y��B�+xۂ���J��P1��
��!%��3���/��`�� >���\^d�G���/�N-�^�������Zv�P�#���Y��"h����o� \�[L��u�gH��z�~]�������()��`+����8P�����S��~�3������OY��((�����M�y���~�;�H�}x��9��2SwG�
�9�M�\f�/�A���1�n~���p
���S�N�<�p-��@o�.�-�t�>0�-���[��\�_g@�6�� ���nY�N��a	.�B|�9���>��.�N&h�D[/�3������ o�L��59G��0>�*�Z��;"��x����}Œ�.�Q���ٟ�����J�|L�Q�G��5�����c̍	>Iէ-}��{�s=�5}����	����_<Գ�����{��ɂ�WZ���g��Ԕ5���~��c�|-	8"G$@�X,��W�E�	���Z�m�����}p�-���o��CC�mȹA'�[�69���~����
��ӎP#�0*)u�Q��D��vi)F�F�4d�An��tÐ˞l���O6�;R��,�:����E�lPǔ��K���:Dۄ�t)��.�k�L�9AO���������qrџ�W�ԧlJߢ�\&�;���߈�2A��K�9D�iZ��yQ�#5��۬|�{�MHD#J��D�\8)���j�u��9|��1~���=�O��=\�V�n�~����'�/�P�X��(��,u���'�0�M����P�Ń�mq��|	�J~yL���1�ާ�{����W��/�������?��o	�]}����u�������ܙ������F�&�*S���\=u3�~N�z�����ߤ�������Yq6�D�R�_/M�w�������E�l��J��C�ǯ���q�!Lw]*Ԑ�j�Λ
�O]�DCBɡB&@�_��f�d���]z�v�a�{��!_��nm������SQn���oM���k�n[�qP���3<o�U�eT0���E�	b'`����"��>.��)#{�>�o���Cz�!�U��&�6�~�߃J��e�تI]Ӻe9Q�a�.������%�s��j��=��;x����{�DŽ�y:��8"G$@�� sɠ|6z�C�m7�9��V	�^V�zk}4�*HA�ɿ�6��Z��t�F���..�2>�O�t-fV;W�_ٞ���,O�	>��Z|y��a�~萻Bki#@��u"ڥ!
�*�7�!
f�3D�c��k�TɰC�k.��s�Pש�;�C�<����}��R��a0�L;������7L����w5@6J�CD�V#N��X�Fa�곮�8�y�>B	%�:�dH �A���r'@���+�2oH���:�͢� Ӻ]��r8C���`�W�;��ErV�۸r�uE�P;��3*�'J�c�I�zk�R�l����	`O��W�*}�C�c	�|��N��Y�+��U�O�r1\�L���S�Z5�)�������:�aP�l��Nw"�C�ه�f��9K`��>��3�Jgh���e��|�7�I�qN����[ʥ�^�c���7�M�q����=M�*3��+�1q��Kʯ��3!�������Kf�Š6��|��#�y���>_�&�l��ʶ��&��1��_��TjW�`iHCڥټ	,Z��7�֟�����Ԫ�l;���w�*Q�wy����FϜhc����1��4�R�6i�6�h�~	P��6��S�]*��r�3p��C۴�N�B;�G~�g�j!��|h�<W;��
��B�V8-�G����dzͳ��S:[����R*n'�Z���g�'���]��?d��m��1)2�j�2Fw������?�t����f���kڛ
\�H����$�=�@$@���! pD�C�~�q����%n�1O�n�m�拵��/N�a/c>�ϔ�}�vQ{z,p�Q�GD{��~�9 ���)�ߛzn&@��T���>�5��1
偠�0��I�˫\!\r��r�h��������3���>����]�Y7��P���t��ӴDO[5��nA	�]�������a�l��T��2�A��_&\�An�4'':����aOHc�	0 ��	�w޺�{�G��g3�/R��1T�������������0+��ޔ��0R���m柅`�o���*~��_g	�uF���j�ǟ�=���sxpE��)V���U9v��u�Z��������O�=�j<_�>o5�@HP�G���x�#��;�I����
���0�����Q��#zG$@���# pD��ZK�*��6Aa\���n�6�v[K��(Ѯ0�zLI/�j�n�Ю��|y�.��4�q�����E
ص��W�̈́�x�j�q�
{Y����>�����.]�!a[!�i.d&�~�RJ�4�`��&@Sۥ�sy�7�wp�hq=����l��e�<Q�^w�-4��<X$o@��|�:�P�A�;xIl_�����/�O.��g���s��
41��`bY:��q$0pD�H��	8"�IR^,*��V�gqֲ�~6tt�"��KHqXn�Y#o���q��B	sxa���>fy�
y���_��E�ŵ���^�ը��w�X���Q���"
t�lo�ޡs�9eS�R~�ڥ|;������i�6\/�$ʗʿ����������x8_��t���+x�p�+�ި�����$��@<�K�/�:��}������Wk�~��|)q_y��=l`E�	�@�C���
[ɔ�T_߭����a�;iy�
yW�Kբ��d���}����������7��<���f�ø�7�,6�����
p`ܢj�_�5������k����_
�|��}�# pD�H��Q��>���'q��_Ǔ�.�t��-o�\��}]�m�&-�t��-o}d�C�>��r�F���O�|Ӗw8�K��CH����7���<n����~0g���[�I����\�\�W��<��H����\�o�����Ѡ��K�s)�	������~��n�j����̨�oR����kk�g7�ƲHM%��.�z\r���y�&V����V���et���<�N�8�Q�?��B���� g� C]��FC�|��Oq]n�?d��f��`ܗ��[h	�����W�Ю�� �ʖ�㸧�=@v�*+{��&ɟp7�o��u%1g_W�.9D9X����}U���m�(������O�)�x��c��� f�Q��w&�I�^*�NOւv�_�[��3�1i���7my�#N	�8"G$@���# p�Π��QǬ�#Z@�.�ߎ��]�3��%��鎜��ܤ��
&\<‘(_Ƒ���2�:%���GX``
��eQ~�e� y�D"�;3ꗀ�Z�ز�n��E������Ijag]��8�@P���# pD�H��1����q@'@�q6B������>V'�J�	���M�֝��`��\����W��#|{B���̪$�y�4,���}F�>�n���k�-�P��WE�A�tH=�ji��Y'�W;S'QO��QL7����D�O�=@w�����=K��F���R�™?�����Л�Ε�N���8#(p̯/ b,��?P�w��%tEXtdate:create2015-03-11T14:59:12+00:000�i�%tEXtdate:modify2015-03-11T14:59:12+00:00A��tEXtSoftwareAdobe ImageReadyq�e<IEND�B`�js/admin.ajaxWatcher.1722265817.js000064400000036321150755146450012156 0ustar00!function(t,e,i){function n(i,n,o){var r=e.createElement(i);return n&&(r.id=Z+n),o&&(r.style.cssText=o),t(r)}function o(){return i.innerHeight?i.innerHeight:t(i).height()}function r(e,i){i!==Object(i)&&(i={}),this.cache={},this.el=e,this.value=function(e){var n;return void 0===this.cache[e]&&(n=t(this.el).attr("data-wfbox-"+e),void 0!==n?this.cache[e]=n:void 0!==i[e]?this.cache[e]=i[e]:void 0!==X[e]&&(this.cache[e]=X[e])),this.cache[e]},this.get=function(e){var i=this.value(e);return t.isFunction(i)?i.call(this.el,this):i}}function h(t){var e=W.length,i=(A+t)%e;return 0>i?e+i:i}function a(t,e){return Math.round((/%/.test(t)?("x"===e?E.width():o())/100:1)*parseInt(t,10))}function s(t,e){return t.get("photo")||t.get("photoRegex").test(e)}function l(t,e){return t.get("retinaUrl")&&i.devicePixelRatio>1?e.replace(t.get("photoRegex"),t.get("retinaSuffix")):e}function d(t){"contains"in x[0]&&!x[0].contains(t.target)&&t.target!==v[0]&&(t.stopPropagation(),x.focus())}function c(t){c.str!==t&&(x.add(v).removeClass(c.str).addClass(t),c.str=t)}function g(e){A=0,e&&e!==!1&&"nofollow"!==e?(W=t("."+tt).filter(function(){var i=t.data(this,Y),n=new r(this,i);return n.get("rel")===e}),A=W.index(_.el),-1===A&&(W=W.add(_.el),A=W.length-1)):W=t(_.el)}function u(i){t(e).trigger(i),at.triggerHandler(i)}function f(i){var o;if(!G){if(o=t(i).data(Y),_=new r(i,o),g(_.get("rel")),!U){U=$=!0,c(_.get("className")),x.css({visibility:"hidden",display:"block",opacity:""}),I=n(st,"LoadedContent","width:0; height:0; overflow:hidden; visibility:hidden"),b.css({width:"",height:""}).append(I),j=T.height()+k.height()+b.outerHeight(!0)-b.height(),D=C.width()+H.width()+b.outerWidth(!0)-b.width(),N=I.outerHeight(!0),z=I.outerWidth(!0);var h=a(_.get("initialWidth"),"x"),s=a(_.get("initialHeight"),"y"),l=_.get("maxWidth"),f=_.get("maxHeight");_.w=Math.max((l!==!1?Math.min(h,a(l,"x")):h)-z-D,0),_.h=Math.max((f!==!1?Math.min(s,a(f,"y")):s)-N-j,0),I.css({width:"",height:_.h}),J.position(),u(et),_.get("onOpen"),O.add(F).hide(),x.focus(),_.get("trapFocus")&&e.addEventListener&&(e.addEventListener("focus",d,!0),at.one(rt,function(){e.removeEventListener("focus",d,!0)})),_.get("returnFocus")&&at.one(rt,function(){t(_.el).focus()})}var p=parseFloat(_.get("opacity"));v.css({opacity:p===p?p:"",cursor:_.get("overlayClose")?"pointer":"",visibility:"visible"}).show(),_.get("closeButton")?P.html(_.get("close")).appendTo(b):P.appendTo("<div/>"),w()}}function p(){x||(V=!1,E=t(i),x=n(st).attr({id:Y,"class":t.support.opacity===!1?Z+"IE":"",role:"dialog",tabindex:"-1"}).hide(),v=n(st,"Overlay").hide(),L=t([n(st,"LoadingOverlay")[0],n(st,"LoadingGraphic")[0]]),y=n(st,"Wrapper"),b=n(st,"Content").append(F=n(st,"Title"),R=n(st,"Current"),K=t('<button type="button"/>').attr({id:Z+"Previous"}),B=t('<button type="button"/>').attr({id:Z+"Next"}),S=t('<button type="button"/>').attr({id:Z+"Slideshow"}),L),P=t('<button type="button"/>').attr({id:Z+"Close"}),y.append(n(st).append(n(st,"TopLeft"),T=n(st,"TopCenter"),n(st,"TopRight")),n(st,!1,"clear:left").append(C=n(st,"MiddleLeft"),b,H=n(st,"MiddleRight")),n(st,!1,"clear:left").append(n(st,"BottomLeft"),k=n(st,"BottomCenter"),n(st,"BottomRight"))).find("div div").css({"float":"left"}),M=n(st,!1,"position:absolute; width:9999px; visibility:hidden; display:none; max-width:none;"),O=B.add(K).add(R).add(S)),e.body&&!x.parent().length&&t(e.body).append(v,x.append(y,M))}function m(){function i(t){t.which>1||t.shiftKey||t.altKey||t.metaKey||t.ctrlKey||(t.preventDefault(),f(this))}return x?(V||(V=!0,B.click(function(){J.next()}),K.click(function(){J.prev()}),P.click(function(){J.close()}),v.click(function(){_.get("overlayClose")&&J.close()}),t(e).bind("keydown."+Z,function(t){var e=t.keyCode;U&&_.get("escKey")&&27===e&&(t.preventDefault(),J.close()),U&&_.get("arrowKey")&&W[1]&&!t.altKey&&(37===e?(t.preventDefault(),K.click()):39===e&&(t.preventDefault(),B.click()))}),t.isFunction(t.fn.on)?t(e).on("click."+Z,"."+tt,i):t("."+tt).live("click."+Z,i)),!0):!1}function w(){var e,o,r,h=J.prep,d=++lt;if($=!0,q=!1,u(ht),u(it),_.get("onLoad"),_.h=_.get("height")?a(_.get("height"),"y")-N-j:_.get("innerHeight")&&a(_.get("innerHeight"),"y"),_.w=_.get("width")?a(_.get("width"),"x")-z-D:_.get("innerWidth")&&a(_.get("innerWidth"),"x"),_.mw=_.w,_.mh=_.h,_.get("maxWidth")&&(_.mw=a(_.get("maxWidth"),"x")-z-D,_.mw=_.w&&_.w<_.mw?_.w:_.mw),_.get("maxHeight")&&(_.mh=a(_.get("maxHeight"),"y")-N-j,_.mh=_.h&&_.h<_.mh?_.h:_.mh),e=_.get("href"),Q=setTimeout(function(){L.show()},100),_.get("inline")){var c=t(e).eq(0);r=t("<div>").hide().insertBefore(c),at.one(ht,function(){r.replaceWith(c)}),h(c)}else _.get("iframe")?h(" "):_.get("html")?h(_.get("html")):s(_,e)?(e=l(_,e),q=_.get("createImg"),t(q).addClass(Z+"Photo").bind("error."+Z,function(){h(n(st,"Error").html(_.get("imgError")))}).one("load",function(){d===lt&&setTimeout(function(){var e;_.get("retinaImage")&&i.devicePixelRatio>1&&(q.height=q.height/i.devicePixelRatio,q.width=q.width/i.devicePixelRatio),_.get("scalePhotos")&&(o=function(){q.height-=q.height*e,q.width-=q.width*e},_.mw&&q.width>_.mw&&(e=(q.width-_.mw)/q.width,o()),_.mh&&q.height>_.mh&&(e=(q.height-_.mh)/q.height,o())),_.h&&(q.style.marginTop=Math.max(_.mh-q.height,0)/2+"px"),W[1]&&(_.get("loop")||W[A+1])&&(q.style.cursor="pointer",t(q).bind("click."+Z,function(){J.next()})),q.style.width=q.width+"px",q.style.height=q.height+"px",h(q)},1)}),q.src=e):e&&M.load(e,_.get("data"),function(e,i){d===lt&&h("error"===i?n(st,"Error").html(_.get("xhrError")):t(this).contents())})}var v,x,y,b,T,C,H,k,W,E,I,M,L,F,R,S,B,K,P,O,_,j,D,N,z,A,q,U,$,G,Q,J,V,X={html:!1,photo:!1,iframe:!1,inline:!1,transition:"elastic",speed:300,fadeOut:300,width:!1,initialWidth:"600",innerWidth:!1,maxWidth:!1,height:!1,initialHeight:"450",innerHeight:!1,maxHeight:!1,scalePhotos:!0,scrolling:!0,opacity:.9,preloading:!0,className:!1,overlayClose:!0,escKey:!0,arrowKey:!0,top:!1,bottom:!1,left:!1,right:!1,fixed:!1,data:void 0,closeButton:!0,fastIframe:!0,open:!1,reposition:!0,loop:!0,slideshow:!1,slideshowAuto:!0,slideshowSpeed:2500,slideshowStart:"start slideshow",slideshowStop:"stop slideshow",photoRegex:/\.(gif|png|jp(e|g|eg)|bmp|ico|webp|jxr|svg)((#|\?).*)?$/i,retinaImage:!1,retinaUrl:!1,retinaSuffix:"@2x.$1",current:"image {current} of {total}",previous:"previous",next:"next",close:"close",xhrError:"This content failed to load.",imgError:"This image failed to load.",returnFocus:!0,trapFocus:!0,onOpen:!1,onLoad:!1,onComplete:!1,onCleanup:!1,onClosed:!1,rel:function(){return this.rel},href:function(){return t(this).attr("href")},title:function(){return this.title},createImg:function(){var e=new Image,i=t(this).data("cbox-img-attrs");return"object"==typeof i&&t.each(i,function(t,i){e[t]=i}),e},createIframe:function(){var i=e.createElement("iframe"),n=t(this).data("cbox-iframe-attrs");return"object"==typeof n&&t.each(n,function(t,e){i[t]=e}),"frameBorder"in i&&(i.frameBorder=0),"allowTransparency"in i&&(i.allowTransparency="true"),i.name=(new Date).getTime(),i.allowFullscreen=!0,i}},Y="wordfenceBox",Z="wfbox",tt=Z+"Element",et=Z+"_open",it=Z+"_load",nt=Z+"_complete",ot=Z+"_cleanup",rt=Z+"_closed",ht=Z+"_purge",at=t("<a/>"),st="div",lt=0,dt={},ct=function(){function t(){clearTimeout(h)}function e(){(_.get("loop")||W[A+1])&&(t(),h=setTimeout(J.next,_.get("slideshowSpeed")))}function i(){S.html(_.get("slideshowStop")).unbind(s).one(s,n),at.bind(nt,e).bind(it,t),x.removeClass(a+"off").addClass(a+"on")}function n(){t(),at.unbind(nt,e).unbind(it,t),S.html(_.get("slideshowStart")).unbind(s).one(s,function(){J.next(),i()}),x.removeClass(a+"on").addClass(a+"off")}function o(){r=!1,S.hide(),t(),at.unbind(nt,e).unbind(it,t),x.removeClass(a+"off "+a+"on")}var r,h,a=Z+"Slideshow_",s="click."+Z;return function(){r?_.get("slideshow")||(at.unbind(ot,o),o()):_.get("slideshow")&&W[1]&&(r=!0,at.one(ot,o),_.get("slideshowAuto")?i():n(),S.show())}}();t[Y]||(t(p),J=t.fn[Y]=t[Y]=function(e,i){var n,o=this;return e=e||{},t.isFunction(o)&&(o=t("<a/>"),e.open=!0),o[0]?(p(),m()&&(i&&(e.onComplete=i),o.each(function(){var i=t.data(this,Y)||{};t.data(this,Y,t.extend(i,e))}).addClass(tt),n=new r(o[0],e),n.get("open")&&f(o[0])),o):o},J.position=function(e,i){function n(){T[0].style.width=k[0].style.width=b[0].style.width=parseInt(x[0].style.width,10)-D+"px",b[0].style.height=C[0].style.height=H[0].style.height=parseInt(x[0].style.height,10)-j+"px"}var r,h,s,l=0,d=0,c=x.offset();if(E.unbind("resize."+Z),x.css({top:-9e4,left:-9e4}),h=E.scrollTop(),s=E.scrollLeft(),_.get("fixed")?(c.top-=h,c.left-=s,x.css({position:"fixed"})):(l=h,d=s,x.css({position:"absolute"})),d+=_.get("right")!==!1?Math.max(E.width()-_.w-z-D-a(_.get("right"),"x"),0):_.get("left")!==!1?a(_.get("left"),"x"):Math.round(Math.max(E.width()-_.w-z-D,0)/2),l+=_.get("bottom")!==!1?Math.max(o()-_.h-N-j-a(_.get("bottom"),"y"),0):_.get("top")!==!1?a(_.get("top"),"y"):Math.round(Math.max(o()-_.h-N-j,0)/2),x.css({top:c.top,left:c.left,visibility:"visible"}),y[0].style.width=y[0].style.height="9999px",r={width:_.w+z+D,height:_.h+N+j,top:l,left:d},e){var g=0;t.each(r,function(t){return r[t]!==dt[t]?void(g=e):void 0}),e=g}dt=r,e||x.css(r),x.dequeue().animate(r,{duration:e||0,complete:function(){n(),$=!1,y[0].style.width=_.w+z+D+"px",y[0].style.height=_.h+N+j+"px",_.get("reposition")&&setTimeout(function(){E.bind("resize."+Z,J.position)},1),t.isFunction(i)&&i()},step:n})},J.resize=function(t){var e;U&&(t=t||{},t.width&&(_.w=a(t.width,"x")-z-D),t.innerWidth&&(_.w=a(t.innerWidth,"x")),I.css({width:_.w}),t.height&&(_.h=a(t.height,"y")-N-j),t.innerHeight&&(_.h=a(t.innerHeight,"y")),t.innerHeight||t.height||(e=I.scrollTop(),I.css({height:"auto"}),_.h=I.height()),I.css({height:_.h}),e&&I.scrollTop(e),J.position("none"===_.get("transition")?0:_.get("speed")))},J.prep=function(i){function o(){return _.w=_.w||I.width(),_.w=_.mw&&_.mw<_.w?_.mw:_.w,_.w}function a(){return _.h=_.h||I.height(),_.h=_.mh&&_.mh<_.h?_.mh:_.h,_.h}if(U){var d,g="none"===_.get("transition")?0:_.get("speed");I.remove(),I=n(st,"LoadedContent").append(i),I.hide().appendTo(M.show()).css({width:o(),overflow:_.get("scrolling")?"auto":"hidden"}).css({height:a()}).prependTo(b),M.hide(),t(q).css({"float":"none"}),c(_.get("className")),d=function(){function i(){t.support.opacity===!1&&x[0].style.removeAttribute("filter")}var n,o,a=W.length;U&&(o=function(){clearTimeout(Q),L.hide(),u(nt),_.get("onComplete")},F.html(_.get("title")).show(),I.show(),a>1?("string"==typeof _.get("current")&&R.html(_.get("current").replace("{current}",A+1).replace("{total}",a)).show(),B[_.get("loop")||a-1>A?"show":"hide"]().html(_.get("next")),K[_.get("loop")||A?"show":"hide"]().html(_.get("previous")),ct(),_.get("preloading")&&t.each([h(-1),h(1)],function(){var i,n=W[this],o=new r(n,t.data(n,Y)),h=o.get("href");h&&s(o,h)&&(h=l(o,h),i=e.createElement("img"),i.src=h)})):O.hide(),_.get("iframe")?(n=_.get("createIframe"),_.get("scrolling")||(n.scrolling="no"),t(n).attr({src:_.get("href"),"class":Z+"Iframe"}).one("load",o).appendTo(I),at.one(ht,function(){n.src="//about:blank"}),_.get("fastIframe")&&t(n).trigger("load")):o(),"fade"===_.get("transition")?x.fadeTo(g,1,i):i())},"fade"===_.get("transition")?x.fadeTo(g,0,function(){J.position(0,d)}):J.position(g,d)}},J.next=function(){!$&&W[1]&&(_.get("loop")||W[A+1])&&(A=h(1),f(W[A]))},J.prev=function(){!$&&W[1]&&(_.get("loop")||A)&&(A=h(-1),f(W[A]))},J.close=function(){U&&!G&&(G=!0,U=!1,u(ot),_.get("onCleanup"),E.unbind("."+Z),v.fadeTo(_.get("fadeOut")||0,0),x.stop().fadeTo(_.get("fadeOut")||0,0,function(){x.hide(),v.hide(),u(ht),I.remove(),setTimeout(function(){G=!1,u(rt),_.get("onClosed")},1)}))},J.remove=function(){x&&(x.stop(),t[Y].close(),x.stop(!1,!0).remove(),v.remove(),G=!1,x=null,t("."+tt).removeData(Y).removeClass(tt),t(e).unbind("click."+Z).unbind("keydown."+Z))},J.element=function(){return t(_.el)},J.settings=X)}(jQuery,document,window);

(function($, document, window) {
	var __ = window.wfi18n.__;
	var sprintf = window.wfi18n.sprintf;

	if (!window['wordfenceAJAXWatcher']) {
		window['wordfenceAJAXWatcher'] = {
			blockWarningOpen: false,
			
			init: function() {
				$(document).ajaxError(function (event, jqXHR, ajaxSettings, thrownError) {
					if (wordfenceAJAXWatcher.blockWarningOpen) {
						return;
					}

					if (jqXHR.responseJSON) {
						//Do nothing
					}
					else {
						//Match nonce in response to verify it's our error page, which will be in the form <!-- WFWAF NONCE: abcdef1234 -->
						var nonceRegex = /<!-- WFWAF NONCE: ([a-f0-9]+) -->/;
						var nonceMatches = nonceRegex.exec(jqXHR.responseText);
						if (nonceMatches && nonceMatches[1] == WFAJAXWatcherVars.nonce) {
							var requestURL = ajaxSettings.url;
							if (requestURL.length > 63) {
								requestURL = requestURL.substring(0, 30) + '...' + requestURL.substring(requestURL.length - 30);
							}
	
							var requestURLEscaped = $('<div/>').text(requestURL).html();
							var responseDOM = $.parseHTML(jqXHR.responseText);
							var formAction = $(responseDOM).filter('#whitelist-form').add($(responseDOM).find('#whitelist-form')).attr('action');
							var inputs = $(responseDOM).filter('input[name]').add($(responseDOM).find('input[name]'));
							var queryParams = {};
							for (var i = 0; i < inputs.length; i++) {
								queryParams[inputs[i].name] = inputs[i].value;
							}
	
							if (!(typeof formAction === "string")) { //Only progress if it's our plugin doing the blocking
								return;
							}
	
							wordfenceAJAXWatcher.blockWarningOpen = true;
							$.wordfenceBox({
								closeButton: false,
								width: '400px',
								html: "<h3>" + __('Background Request Blocked') + "</h3><p>" + sprintf(__("Wordfence Firewall blocked a background request to WordPress for the URL %s. If this occurred as a result of an intentional action, you may consider allowlisting the request to allow it in the future."), "<code>" + requestURLEscaped + "</code>") + "</p><p class=\"wf-right\"><a href=\"https://www.wordfence.com/help/?query=ajax-blocked\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"wfboxhelp\" title=\"" + __("Help") + "\"></a><a href=\"#\" class=\"button\" id=\"background-block-whitelist\">" + __("Add action to allowlist") + "</a> <a href=\"#\" class=\"button\" id=\"background-block-dismiss\">" + __("Dismiss") + "</a></p>",
								onComplete: function() {
									$('#background-block-dismiss').click(function(event) {
										event.preventDefault();
										event.stopPropagation();
										$.wordfenceBox.close();
									});
	
									$('#background-block-whitelist').click(function(event) {
										event.preventDefault();
										event.stopPropagation();
	
										if (confirm(__('Are you sure you want to allowlist this action?'))) {
											$.ajax({
												method: 'POST',
												url: formAction,
												data: queryParams,
												global: false,
												success: function() {
													alert(__('The request has been allowlisted. Please try it again.'));
													$.wordfenceBox.close();
												},
												error: function() {
													alert(__('An error occurred when adding the request to the allowlist.'));
													$.wordfenceBox.close();
												}
											});
										}
									});
								},
								onClosed: function() {
									wordfenceAJAXWatcher.blockWarningOpen = false;
								}
							});
						}
					}
				});
			}
		}
	}
	$(function() {
		wordfenceAJAXWatcher.init();
		$('#wfboxPrevious, #wfboxNext, #wfboxSlideshow').remove();
	});

}(jQuery, document, window));
js/jquery.qrcode.min.1722265817.js000064400000033253150755146450012204 0ustar00(function(r){r.fn.qrcode=function(h){var s;function u(a){this.mode=s;this.data=a}function o(a,c){this.typeNumber=a;this.errorCorrectLevel=c;this.modules=null;this.moduleCount=0;this.dataCache=null;this.dataList=[]}function q(a,c){if(void 0==a.length)throw Error(a.length+"/"+c);for(var d=0;d<a.length&&0==a[d];)d++;this.num=Array(a.length-d+c);for(var b=0;b<a.length-d;b++)this.num[b]=a[b+d]}function p(a,c){this.totalCount=a;this.dataCount=c}function t(){this.buffer=[];this.length=0}u.prototype={getLength:function(){return this.data.length},
write:function(a){for(var c=0;c<this.data.length;c++)a.put(this.data.charCodeAt(c),8)}};o.prototype={addData:function(a){this.dataList.push(new u(a));this.dataCache=null},isDark:function(a,c){if(0>a||this.moduleCount<=a||0>c||this.moduleCount<=c)throw Error(a+","+c);return this.modules[a][c]},getModuleCount:function(){return this.moduleCount},make:function(){if(1>this.typeNumber){for(var a=1,a=1;40>a;a++){for(var c=p.getRSBlocks(a,this.errorCorrectLevel),d=new t,b=0,e=0;e<c.length;e++)b+=c[e].dataCount;
for(e=0;e<this.dataList.length;e++)c=this.dataList[e],d.put(c.mode,4),d.put(c.getLength(),j.getLengthInBits(c.mode,a)),c.write(d);if(d.getLengthInBits()<=8*b)break}this.typeNumber=a}this.makeImpl(!1,this.getBestMaskPattern())},makeImpl:function(a,c){this.moduleCount=4*this.typeNumber+17;this.modules=Array(this.moduleCount);for(var d=0;d<this.moduleCount;d++){this.modules[d]=Array(this.moduleCount);for(var b=0;b<this.moduleCount;b++)this.modules[d][b]=null}this.setupPositionProbePattern(0,0);this.setupPositionProbePattern(this.moduleCount-
7,0);this.setupPositionProbePattern(0,this.moduleCount-7);this.setupPositionAdjustPattern();this.setupTimingPattern();this.setupTypeInfo(a,c);7<=this.typeNumber&&this.setupTypeNumber(a);null==this.dataCache&&(this.dataCache=o.createData(this.typeNumber,this.errorCorrectLevel,this.dataList));this.mapData(this.dataCache,c)},setupPositionProbePattern:function(a,c){for(var d=-1;7>=d;d++)if(!(-1>=a+d||this.moduleCount<=a+d))for(var b=-1;7>=b;b++)-1>=c+b||this.moduleCount<=c+b||(this.modules[a+d][c+b]=
0<=d&&6>=d&&(0==b||6==b)||0<=b&&6>=b&&(0==d||6==d)||2<=d&&4>=d&&2<=b&&4>=b?!0:!1)},getBestMaskPattern:function(){for(var a=0,c=0,d=0;8>d;d++){this.makeImpl(!0,d);var b=j.getLostPoint(this);if(0==d||a>b)a=b,c=d}return c},createMovieClip:function(a,c,d){a=a.createEmptyMovieClip(c,d);this.make();for(c=0;c<this.modules.length;c++)for(var d=1*c,b=0;b<this.modules[c].length;b++){var e=1*b;this.modules[c][b]&&(a.beginFill(0,100),a.moveTo(e,d),a.lineTo(e+1,d),a.lineTo(e+1,d+1),a.lineTo(e,d+1),a.endFill())}return a},
setupTimingPattern:function(){for(var a=8;a<this.moduleCount-8;a++)null==this.modules[a][6]&&(this.modules[a][6]=0==a%2);for(a=8;a<this.moduleCount-8;a++)null==this.modules[6][a]&&(this.modules[6][a]=0==a%2)},setupPositionAdjustPattern:function(){for(var a=j.getPatternPosition(this.typeNumber),c=0;c<a.length;c++)for(var d=0;d<a.length;d++){var b=a[c],e=a[d];if(null==this.modules[b][e])for(var f=-2;2>=f;f++)for(var i=-2;2>=i;i++)this.modules[b+f][e+i]=-2==f||2==f||-2==i||2==i||0==f&&0==i?!0:!1}},setupTypeNumber:function(a){for(var c=
j.getBCHTypeNumber(this.typeNumber),d=0;18>d;d++){var b=!a&&1==(c>>d&1);this.modules[Math.floor(d/3)][d%3+this.moduleCount-8-3]=b}for(d=0;18>d;d++)b=!a&&1==(c>>d&1),this.modules[d%3+this.moduleCount-8-3][Math.floor(d/3)]=b},setupTypeInfo:function(a,c){for(var d=j.getBCHTypeInfo(this.errorCorrectLevel<<3|c),b=0;15>b;b++){var e=!a&&1==(d>>b&1);6>b?this.modules[b][8]=e:8>b?this.modules[b+1][8]=e:this.modules[this.moduleCount-15+b][8]=e}for(b=0;15>b;b++)e=!a&&1==(d>>b&1),8>b?this.modules[8][this.moduleCount-
b-1]=e:9>b?this.modules[8][15-b-1+1]=e:this.modules[8][15-b-1]=e;this.modules[this.moduleCount-8][8]=!a},mapData:function(a,c){for(var d=-1,b=this.moduleCount-1,e=7,f=0,i=this.moduleCount-1;0<i;i-=2)for(6==i&&i--;;){for(var g=0;2>g;g++)if(null==this.modules[b][i-g]){var n=!1;f<a.length&&(n=1==(a[f]>>>e&1));j.getMask(c,b,i-g)&&(n=!n);this.modules[b][i-g]=n;e--; -1==e&&(f++,e=7)}b+=d;if(0>b||this.moduleCount<=b){b-=d;d=-d;break}}}};o.PAD0=236;o.PAD1=17;o.createData=function(a,c,d){for(var c=p.getRSBlocks(a,
c),b=new t,e=0;e<d.length;e++){var f=d[e];b.put(f.mode,4);b.put(f.getLength(),j.getLengthInBits(f.mode,a));f.write(b)}for(e=a=0;e<c.length;e++)a+=c[e].dataCount;if(b.getLengthInBits()>8*a)throw Error("code length overflow. ("+b.getLengthInBits()+">"+8*a+")");for(b.getLengthInBits()+4<=8*a&&b.put(0,4);0!=b.getLengthInBits()%8;)b.putBit(!1);for(;!(b.getLengthInBits()>=8*a);){b.put(o.PAD0,8);if(b.getLengthInBits()>=8*a)break;b.put(o.PAD1,8)}return o.createBytes(b,c)};o.createBytes=function(a,c){for(var d=
0,b=0,e=0,f=Array(c.length),i=Array(c.length),g=0;g<c.length;g++){var n=c[g].dataCount,h=c[g].totalCount-n,b=Math.max(b,n),e=Math.max(e,h);f[g]=Array(n);for(var k=0;k<f[g].length;k++)f[g][k]=255&a.buffer[k+d];d+=n;k=j.getErrorCorrectPolynomial(h);n=(new q(f[g],k.getLength()-1)).mod(k);i[g]=Array(k.getLength()-1);for(k=0;k<i[g].length;k++)h=k+n.getLength()-i[g].length,i[g][k]=0<=h?n.get(h):0}for(k=g=0;k<c.length;k++)g+=c[k].totalCount;d=Array(g);for(k=n=0;k<b;k++)for(g=0;g<c.length;g++)k<f[g].length&&
(d[n++]=f[g][k]);for(k=0;k<e;k++)for(g=0;g<c.length;g++)k<i[g].length&&(d[n++]=i[g][k]);return d};s=4;for(var j={PATTERN_POSITION_TABLE:[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,
78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],G15:1335,G18:7973,G15_MASK:21522,getBCHTypeInfo:function(a){for(var c=a<<10;0<=j.getBCHDigit(c)-j.getBCHDigit(j.G15);)c^=j.G15<<j.getBCHDigit(c)-j.getBCHDigit(j.G15);return(a<<10|c)^j.G15_MASK},getBCHTypeNumber:function(a){for(var c=a<<12;0<=j.getBCHDigit(c)-
j.getBCHDigit(j.G18);)c^=j.G18<<j.getBCHDigit(c)-j.getBCHDigit(j.G18);return a<<12|c},getBCHDigit:function(a){for(var c=0;0!=a;)c++,a>>>=1;return c},getPatternPosition:function(a){return j.PATTERN_POSITION_TABLE[a-1]},getMask:function(a,c,d){switch(a){case 0:return 0==(c+d)%2;case 1:return 0==c%2;case 2:return 0==d%3;case 3:return 0==(c+d)%3;case 4:return 0==(Math.floor(c/2)+Math.floor(d/3))%2;case 5:return 0==c*d%2+c*d%3;case 6:return 0==(c*d%2+c*d%3)%2;case 7:return 0==(c*d%3+(c+d)%2)%2;default:throw Error("bad maskPattern:"+
a);}},getErrorCorrectPolynomial:function(a){for(var c=new q([1],0),d=0;d<a;d++)c=c.multiply(new q([1,l.gexp(d)],0));return c},getLengthInBits:function(a,c){if(1<=c&&10>c)switch(a){case 1:return 10;case 2:return 9;case s:return 8;case 8:return 8;default:throw Error("mode:"+a);}else if(27>c)switch(a){case 1:return 12;case 2:return 11;case s:return 16;case 8:return 10;default:throw Error("mode:"+a);}else if(41>c)switch(a){case 1:return 14;case 2:return 13;case s:return 16;case 8:return 12;default:throw Error("mode:"+
a);}else throw Error("type:"+c);},getLostPoint:function(a){for(var c=a.getModuleCount(),d=0,b=0;b<c;b++)for(var e=0;e<c;e++){for(var f=0,i=a.isDark(b,e),g=-1;1>=g;g++)if(!(0>b+g||c<=b+g))for(var h=-1;1>=h;h++)0>e+h||c<=e+h||0==g&&0==h||i==a.isDark(b+g,e+h)&&f++;5<f&&(d+=3+f-5)}for(b=0;b<c-1;b++)for(e=0;e<c-1;e++)if(f=0,a.isDark(b,e)&&f++,a.isDark(b+1,e)&&f++,a.isDark(b,e+1)&&f++,a.isDark(b+1,e+1)&&f++,0==f||4==f)d+=3;for(b=0;b<c;b++)for(e=0;e<c-6;e++)a.isDark(b,e)&&!a.isDark(b,e+1)&&a.isDark(b,e+
2)&&a.isDark(b,e+3)&&a.isDark(b,e+4)&&!a.isDark(b,e+5)&&a.isDark(b,e+6)&&(d+=40);for(e=0;e<c;e++)for(b=0;b<c-6;b++)a.isDark(b,e)&&!a.isDark(b+1,e)&&a.isDark(b+2,e)&&a.isDark(b+3,e)&&a.isDark(b+4,e)&&!a.isDark(b+5,e)&&a.isDark(b+6,e)&&(d+=40);for(e=f=0;e<c;e++)for(b=0;b<c;b++)a.isDark(b,e)&&f++;a=Math.abs(100*f/c/c-50)/5;return d+10*a}},l={glog:function(a){if(1>a)throw Error("glog("+a+")");return l.LOG_TABLE[a]},gexp:function(a){for(;0>a;)a+=255;for(;256<=a;)a-=255;return l.EXP_TABLE[a]},EXP_TABLE:Array(256),
LOG_TABLE:Array(256)},m=0;8>m;m++)l.EXP_TABLE[m]=1<<m;for(m=8;256>m;m++)l.EXP_TABLE[m]=l.EXP_TABLE[m-4]^l.EXP_TABLE[m-5]^l.EXP_TABLE[m-6]^l.EXP_TABLE[m-8];for(m=0;255>m;m++)l.LOG_TABLE[l.EXP_TABLE[m]]=m;q.prototype={get:function(a){return this.num[a]},getLength:function(){return this.num.length},multiply:function(a){for(var c=Array(this.getLength()+a.getLength()-1),d=0;d<this.getLength();d++)for(var b=0;b<a.getLength();b++)c[d+b]^=l.gexp(l.glog(this.get(d))+l.glog(a.get(b)));return new q(c,0)},mod:function(a){if(0>
this.getLength()-a.getLength())return this;for(var c=l.glog(this.get(0))-l.glog(a.get(0)),d=Array(this.getLength()),b=0;b<this.getLength();b++)d[b]=this.get(b);for(b=0;b<a.getLength();b++)d[b]^=l.gexp(l.glog(a.get(b))+c);return(new q(d,0)).mod(a)}};p.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],
[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,
116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,
43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,
3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,
55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,
45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]];p.getRSBlocks=function(a,c){var d=p.getRsBlockTable(a,c);if(void 0==d)throw Error("bad rs block @ typeNumber:"+a+"/errorCorrectLevel:"+c);for(var b=d.length/3,e=[],f=0;f<b;f++)for(var h=d[3*f+0],g=d[3*f+1],j=d[3*f+2],l=0;l<h;l++)e.push(new p(g,j));return e};p.getRsBlockTable=function(a,c){switch(c){case 1:return p.RS_BLOCK_TABLE[4*(a-1)+0];case 0:return p.RS_BLOCK_TABLE[4*(a-1)+1];case 3:return p.RS_BLOCK_TABLE[4*
(a-1)+2];case 2:return p.RS_BLOCK_TABLE[4*(a-1)+3]}};t.prototype={get:function(a){return 1==(this.buffer[Math.floor(a/8)]>>>7-a%8&1)},put:function(a,c){for(var d=0;d<c;d++)this.putBit(1==(a>>>c-d-1&1))},getLengthInBits:function(){return this.length},putBit:function(a){var c=Math.floor(this.length/8);this.buffer.length<=c&&this.buffer.push(0);a&&(this.buffer[c]|=128>>>this.length%8);this.length++}};"string"===typeof h&&(h={text:h});h=r.extend({},{render:"canvas",width:256,height:256,typeNumber:-1,
correctLevel:2,background:"#ffffff",foreground:"#000000"},h);return this.each(function(){var a;if("canvas"==h.render){a=new o(h.typeNumber,h.correctLevel);a.addData(h.text);a.make();var c=document.createElement("canvas");c.width=h.width;c.height=h.height;for(var d=c.getContext("2d"),b=h.width/a.getModuleCount(),e=h.height/a.getModuleCount(),f=0;f<a.getModuleCount();f++)for(var i=0;i<a.getModuleCount();i++){d.fillStyle=a.isDark(f,i)?h.foreground:h.background;var g=Math.ceil((i+1)*b)-Math.floor(i*b),
j=Math.ceil((f+1)*b)-Math.floor(f*b);d.fillRect(Math.round(i*b),Math.round(f*e),g,j)}}else{a=new o(h.typeNumber,h.correctLevel);a.addData(h.text);a.make();c=r("<table></table>").css("width",h.width+"px").css("height",h.height+"px").css("border","0px").css("border-collapse","collapse").css("background-color",h.background);d=h.width/a.getModuleCount();b=h.height/a.getModuleCount();for(e=0;e<a.getModuleCount();e++){f=r("<tr></tr>").css("height",b+"px").appendTo(c);for(i=0;i<a.getModuleCount();i++)r("<td></td>").css("width",
d+"px").css("background-color",a.isDark(e,i)?h.foreground:h.background).appendTo(f)}}a=c;jQuery(a).appendTo(this)})}})(jQuery);
js/wfselect2.min.1722265817.js000064400000233414150755146450011310 0ustar00/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
!function(n){"function"==typeof define&&define.amd?define(["jquery"],n):"object"==typeof module&&module.exports?module.exports=function(e,t){return void 0===t&&(t="undefined"!=typeof window?require("jquery"):require("jquery")(e)),n(t),t}:n(jQuery)}(function(d){var e=function(){if(d&&d.fn&&d.fn.wfselect2&&d.fn.wfselect2.amd)var e=d.fn.wfselect2.amd;var t,n,i,h,o,s,f,g,m,v,y,_,r,a,w,l;function b(e,t){return r.call(e,t)}function c(e,t){var n,i,r,o,s,a,l,c,u,d,p,h=t&&t.split("/"),f=y.map,g=f&&f["*"]||{};if(e){for(s=(e=e.split("/")).length-1,y.nodeIdCompat&&w.test(e[s])&&(e[s]=e[s].replace(w,"")),"."===e[0].charAt(0)&&h&&(e=h.slice(0,h.length-1).concat(e)),u=0;u<e.length;u++)if("."===(p=e[u]))e.splice(u,1),u-=1;else if(".."===p){if(0===u||1===u&&".."===e[2]||".."===e[u-1])continue;0<u&&(e.splice(u-1,2),u-=2)}e=e.join("/")}if((h||g)&&f){for(u=(n=e.split("/")).length;0<u;u-=1){if(i=n.slice(0,u).join("/"),h)for(d=h.length;0<d;d-=1)if(r=(r=f[h.slice(0,d).join("/")])&&r[i]){o=r,a=u;break}if(o)break;!l&&g&&g[i]&&(l=g[i],c=u)}!o&&l&&(o=l,a=c),o&&(n.splice(0,a,o),e=n.join("/"))}return e}function A(t,n){return function(){var e=a.call(arguments,0);return"string"!=typeof e[0]&&1===e.length&&e.push(null),s.apply(h,e.concat([t,n]))}}function x(t){return function(e){m[t]=e}}function D(e){if(b(v,e)){var t=v[e];delete v[e],_[e]=!0,o.apply(h,t)}if(!b(m,e)&&!b(_,e))throw new Error("No "+e);return m[e]}function u(e){var t,n=e?e.indexOf("!"):-1;return-1<n&&(t=e.substring(0,n),e=e.substring(n+1,e.length)),[t,e]}function S(e){return e?u(e):[]}return e&&e.requirejs||(e?n=e:e={},m={},v={},y={},_={},r=Object.prototype.hasOwnProperty,a=[].slice,w=/\.js$/,f=function(e,t){var n,i=u(e),r=i[0],o=t[1];return e=i[1],r&&(n=D(r=c(r,o))),r?e=n&&n.normalize?n.normalize(e,function(t){return function(e){return c(e,t)}}(o)):c(e,o):(r=(i=u(e=c(e,o)))[0],e=i[1],r&&(n=D(r))),{f:r?r+"!"+e:e,n:e,pr:r,p:n}},g={require:function(e){return A(e)},exports:function(e){var t=m[e];return void 0!==t?t:m[e]={}},module:function(e){return{id:e,uri:"",exports:m[e],config:function(e){return function(){return y&&y.config&&y.config[e]||{}}}(e)}}},o=function(e,t,n,i){var r,o,s,a,l,c,u,d=[],p=typeof n;if(c=S(i=i||e),"undefined"==p||"function"==p){for(t=!t.length&&n.length?["require","exports","module"]:t,l=0;l<t.length;l+=1)if("require"===(o=(a=f(t[l],c)).f))d[l]=g.require(e);else if("exports"===o)d[l]=g.exports(e),u=!0;else if("module"===o)r=d[l]=g.module(e);else if(b(m,o)||b(v,o)||b(_,o))d[l]=D(o);else{if(!a.p)throw new Error(e+" missing "+o);a.p.load(a.n,A(i,!0),x(o),{}),d[l]=m[o]}s=n?n.apply(m[e],d):void 0,e&&(r&&r.exports!==h&&r.exports!==m[e]?m[e]=r.exports:s===h&&u||(m[e]=s))}else e&&(m[e]=n)},t=n=s=function(e,t,n,i,r){if("string"==typeof e)return g[e]?g[e](t):D(f(e,S(t)).f);if(!e.splice){if((y=e).deps&&s(y.deps,y.callback),!t)return;t.splice?(e=t,t=n,n=null):e=h}return t=t||function(){},"function"==typeof n&&(n=i,i=r),i?o(h,e,t,n):setTimeout(function(){o(h,e,t,n)},4),s},s.config=function(e){return s(e)},t._defined=m,(i=function(e,t,n){if("string"!=typeof e)throw new Error("See almond README: incorrect module build, no module name");t.splice||(n=t,t=[]),b(m,e)||b(v,e)||(v[e]=[e,t,n])}).amd={jQuery:!0},e.requirejs=t,e.require=n,e.define=i),e.define("almond",function(){}),e.define("jquery",[],function(){var e=d||$;return null==e&&console&&console.error&&console.error("WFSelect2: An instance of jQuery or a jQuery-compatible library was not found. Make sure that you are including jQuery before WFSelect2 on your web page."),e}),e.define("wfselect2/utils",["jquery"],function(o){var r={};function u(e){var t=e.prototype,n=[];for(var i in t){"function"==typeof t[i]&&"constructor"!==i&&n.push(i)}return n}r.Extend=function(e,t){var n={}.hasOwnProperty;function i(){this.constructor=e}for(var r in t)n.call(t,r)&&(e[r]=t[r]);return i.prototype=t.prototype,e.prototype=new i,e.__super__=t.prototype,e},r.Decorate=function(i,r){var e=u(r),t=u(i);function o(){var e=Array.prototype.unshift,t=r.prototype.constructor.length,n=i.prototype.constructor;0<t&&(e.call(arguments,i.prototype.constructor),n=r.prototype.constructor),n.apply(this,arguments)}r.displayName=i.displayName,o.prototype=new function(){this.constructor=o};for(var n=0;n<t.length;n++){var s=t[n];o.prototype[s]=i.prototype[s]}function a(e){var t=function(){};e in o.prototype&&(t=o.prototype[e]);var n=r.prototype[e];return function(){return Array.prototype.unshift.call(arguments,t),n.apply(this,arguments)}}for(var l=0;l<e.length;l++){var c=e[l];o.prototype[c]=a(c)}return o};function e(){this.listeners={}}e.prototype.on=function(e,t){this.listeners=this.listeners||{},e in this.listeners?this.listeners[e].push(t):this.listeners[e]=[t]},e.prototype.trigger=function(e){var t=Array.prototype.slice,n=t.call(arguments,1);this.listeners=this.listeners||{},null==n&&(n=[]),0===n.length&&n.push({}),(n[0]._type=e)in this.listeners&&this.invoke(this.listeners[e],t.call(arguments,1)),"*"in this.listeners&&this.invoke(this.listeners["*"],arguments)},e.prototype.invoke=function(e,t){for(var n=0,i=e.length;n<i;n++)e[n].apply(this,t)},r.Observable=e,r.generateChars=function(e){for(var t="",n=0;n<e;n++){t+=Math.floor(36*Math.random()).toString(36)}return t},r.bind=function(e,t){return function(){e.apply(t,arguments)}},r._convertData=function(e){for(var t in e){var n=t.split("-"),i=e;if(1!==n.length){for(var r=0;r<n.length;r++){var o=n[r];(o=o.substring(0,1).toLowerCase()+o.substring(1))in i||(i[o]={}),r==n.length-1&&(i[o]=e[t]),i=i[o]}delete e[t]}}return e},r.hasScroll=function(e,t){var n=o(t),i=t.style.overflowX,r=t.style.overflowY;return(i!==r||"hidden"!==r&&"visible"!==r)&&("scroll"===i||"scroll"===r||(n.innerHeight()<t.scrollHeight||n.innerWidth()<t.scrollWidth))},r.escapeMarkup=function(e){var t={"\\":"&#92;","&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#47;"};return"string"!=typeof e?e:String(e).replace(/[&<>"'\/\\]/g,function(e){return t[e]})},r.appendMany=function(e,t){if("1.7"===o.fn.jquery.substr(0,3)){var n=o();o.map(t,function(e){n=n.add(e)}),t=n}e.append(t)},r.__cache={};var n=0;return r.GetUniqueElementId=function(e){var t=e.getAttribute("data-wfselect2-id");return null==t&&(e.id?(t=e.id,e.setAttribute("data-wfselect2-id",t)):(e.setAttribute("data-wfselect2-id",++n),t=n.toString())),t},r.StoreData=function(e,t,n){var i=r.GetUniqueElementId(e);r.__cache[i]||(r.__cache[i]={}),r.__cache[i][t]=n},r.GetData=function(e,t){var n=r.GetUniqueElementId(e);return t?r.__cache[n]&&null!=r.__cache[n][t]?r.__cache[n][t]:o(e).data(t):r.__cache[n]},r.RemoveData=function(e){var t=r.GetUniqueElementId(e);null!=r.__cache[t]&&delete r.__cache[t],e.removeAttribute("data-wfselect2-id")},r}),e.define("wfselect2/results",["jquery","./utils"],function(h,f){function i(e,t,n){this.$element=e,this.data=n,this.options=t,i.__super__.constructor.call(this)}return f.Extend(i,f.Observable),i.prototype.render=function(){var e=h('<ul class="wfselect2-results__options" role="listbox"></ul>');return this.options.get("multiple")&&e.attr("aria-multiselectable","true"),this.$results=e},i.prototype.clear=function(){this.$results.empty()},i.prototype.displayMessage=function(e){var t=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var n=h('<li role="alert" aria-live="assertive" class="wfselect2-results__option"></li>'),i=this.options.get("translations").get(e.message);n.append(t(i(e.args))),n[0].className+=" wfselect2-results__message",this.$results.append(n)},i.prototype.hideMessages=function(){this.$results.find(".wfselect2-results__message").remove()},i.prototype.append=function(e){this.hideLoading();var t=[];if(null!=e.results&&0!==e.results.length){e.results=this.sort(e.results);for(var n=0;n<e.results.length;n++){var i=e.results[n],r=this.option(i);t.push(r)}this.$results.append(t)}else 0===this.$results.children().length&&this.trigger("results:message",{message:"noResults"})},i.prototype.position=function(e,t){t.find(".wfselect2-results").append(e)},i.prototype.sort=function(e){return this.options.get("sorter")(e)},i.prototype.highlightFirstItem=function(){var e=this.$results.find(".wfselect2-results__option[aria-selected]"),t=e.filter("[aria-selected=true]");0<t.length?t.first().trigger("mouseenter"):e.first().trigger("mouseenter"),this.ensureHighlightVisible()},i.prototype.setClasses=function(){var t=this;this.data.current(function(e){var i=h.map(e,function(e){return e.id.toString()});t.$results.find(".wfselect2-results__option[aria-selected]").each(function(){var e=h(this),t=f.GetData(this,"data"),n=""+t.id;null!=t.element&&t.element.selected||null==t.element&&-1<h.inArray(n,i)?e.attr("aria-selected","true"):e.attr("aria-selected","false")})})},i.prototype.showLoading=function(e){this.hideLoading();var t={disabled:!0,loading:!0,text:this.options.get("translations").get("searching")(e)},n=this.option(t);n.className+=" loading-results",this.$results.prepend(n)},i.prototype.hideLoading=function(){this.$results.find(".loading-results").remove()},i.prototype.option=function(e){var t=document.createElement("li");t.className="wfselect2-results__option";var n={role:"option","aria-selected":"false"},i=window.Element.prototype.matches||window.Element.prototype.msMatchesSelector||window.Element.prototype.webkitMatchesSelector;for(var r in(null!=e.element&&i.call(e.element,":disabled")||null==e.element&&e.disabled)&&(delete n["aria-selected"],n["aria-disabled"]="true"),null==e.id&&delete n["aria-selected"],null!=e._resultId&&(t.id=e._resultId),e.title&&(t.title=e.title),e.children&&(n.role="group",n["aria-label"]=e.text,delete n["aria-selected"]),n){var o=n[r];t.setAttribute(r,o)}if(e.children){var s=h(t),a=document.createElement("strong");a.className="wfselect2-results__group";h(a);this.template(e,a);for(var l=[],c=0;c<e.children.length;c++){var u=e.children[c],d=this.option(u);l.push(d)}var p=h("<ul></ul>",{class:"wfselect2-results__options wfselect2-results__options--nested"});p.append(l),s.append(a),s.append(p)}else this.template(e,t);return f.StoreData(t,"data",e),t},i.prototype.bind=function(t,e){var l=this,n=t.id+"-results";this.$results.attr("id",n),t.on("results:all",function(e){l.clear(),l.append(e.data),t.isOpen()&&(l.setClasses(),l.highlightFirstItem())}),t.on("results:append",function(e){l.append(e.data),t.isOpen()&&l.setClasses()}),t.on("query",function(e){l.hideMessages(),l.showLoading(e)}),t.on("select",function(){t.isOpen()&&(l.setClasses(),l.options.get("scrollAfterSelect")&&l.highlightFirstItem())}),t.on("unselect",function(){t.isOpen()&&(l.setClasses(),l.options.get("scrollAfterSelect")&&l.highlightFirstItem())}),t.on("open",function(){l.$results.attr("aria-expanded","true"),l.$results.attr("aria-hidden","false"),l.setClasses(),l.ensureHighlightVisible()}),t.on("close",function(){l.$results.attr("aria-expanded","false"),l.$results.attr("aria-hidden","true"),l.$results.removeAttr("aria-activedescendant")}),t.on("results:toggle",function(){var e=l.getHighlightedResults();0!==e.length&&e.trigger("mouseup")}),t.on("results:select",function(){var e=l.getHighlightedResults();if(0!==e.length){var t=f.GetData(e[0],"data");"true"==e.attr("aria-selected")?l.trigger("close",{}):l.trigger("select",{data:t})}}),t.on("results:previous",function(){var e=l.getHighlightedResults(),t=l.$results.find("[aria-selected]"),n=t.index(e);if(!(n<=0)){var i=n-1;0===e.length&&(i=0);var r=t.eq(i);r.trigger("mouseenter");var o=l.$results.offset().top,s=r.offset().top,a=l.$results.scrollTop()+(s-o);0===i?l.$results.scrollTop(0):s-o<0&&l.$results.scrollTop(a)}}),t.on("results:next",function(){var e=l.getHighlightedResults(),t=l.$results.find("[aria-selected]"),n=t.index(e)+1;if(!(n>=t.length)){var i=t.eq(n);i.trigger("mouseenter");var r=l.$results.offset().top+l.$results.outerHeight(!1),o=i.offset().top+i.outerHeight(!1),s=l.$results.scrollTop()+o-r;0===n?l.$results.scrollTop(0):r<o&&l.$results.scrollTop(s)}}),t.on("results:focus",function(e){e.element.addClass("wfselect2-results__option--highlighted")}),t.on("results:message",function(e){l.displayMessage(e)}),h.fn.mousewheel&&this.$results.on("mousewheel",function(e){var t=l.$results.scrollTop(),n=l.$results.get(0).scrollHeight-t+e.deltaY,i=0<e.deltaY&&t-e.deltaY<=0,r=e.deltaY<0&&n<=l.$results.height();i?(l.$results.scrollTop(0),e.preventDefault(),e.stopPropagation()):r&&(l.$results.scrollTop(l.$results.get(0).scrollHeight-l.$results.height()),e.preventDefault(),e.stopPropagation())}),this.$results.on("mouseup",".wfselect2-results__option[aria-selected]",function(e){var t=h(this),n=f.GetData(this,"data");"true"!==t.attr("aria-selected")?l.trigger("select",{originalEvent:e,data:n}):l.options.get("multiple")?l.trigger("unselect",{originalEvent:e,data:n}):l.trigger("close",{})}),this.$results.on("mouseenter",".wfselect2-results__option[aria-selected]",function(e){var t=f.GetData(this,"data");l.getHighlightedResults().removeClass("wfselect2-results__option--highlighted"),l.trigger("results:focus",{data:t,element:h(this)})})},i.prototype.getHighlightedResults=function(){return this.$results.find(".wfselect2-results__option--highlighted")},i.prototype.destroy=function(){this.$results.remove()},i.prototype.ensureHighlightVisible=function(){var e=this.getHighlightedResults();if(0!==e.length){var t=this.$results.find("[aria-selected]").index(e),n=this.$results.offset().top,i=e.offset().top,r=this.$results.scrollTop()+(i-n),o=i-n;r-=2*e.outerHeight(!1),t<=2?this.$results.scrollTop(0):(o>this.$results.outerHeight()||o<0)&&this.$results.scrollTop(r)}},i.prototype.template=function(e,t){var n=this.options.get("templateResult"),i=this.options.get("escapeMarkup"),r=n(e,t);null==r?t.style.display="none":"string"==typeof r?t.innerHTML=i(r):h(t).append(r)},i}),e.define("wfselect2/keys",[],function(){return{BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46}}),e.define("wfselect2/selection/base",["jquery","../utils","../keys"],function(n,i,r){function o(e,t){this.$element=e,this.options=t,o.__super__.constructor.call(this)}return i.Extend(o,i.Observable),o.prototype.render=function(){var e=n('<span class="wfselect2-selection" role="combobox"  aria-haspopup="true" aria-expanded="false"></span>');return this._tabindex=0,null!=i.GetData(this.$element[0],"old-tabindex")?this._tabindex=i.GetData(this.$element[0],"old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),e.attr("title",this.$element.attr("title")),e.attr("tabindex",this._tabindex),e.attr("aria-disabled","false"),this.$selection=e},o.prototype.bind=function(e,t){var n=this,i=e.id+"-results";this.container=e,this.$selection.on("focus",function(e){n.trigger("focus",e)}),this.$selection.on("blur",function(e){n._handleBlur(e)}),this.$selection.on("keydown",function(e){n.trigger("keypress",e),e.which===r.SPACE&&e.preventDefault()}),e.on("results:focus",function(e){n.$selection.attr("aria-activedescendant",e.data._resultId)}),e.on("selection:update",function(e){n.update(e.data)}),e.on("open",function(){n.$selection.attr("aria-expanded","true"),n.$selection.attr("aria-owns",i),n._attachCloseHandler(e)}),e.on("close",function(){n.$selection.attr("aria-expanded","false"),n.$selection.removeAttr("aria-activedescendant"),n.$selection.removeAttr("aria-owns"),n.$selection.trigger("focus"),n._detachCloseHandler(e)}),e.on("enable",function(){n.$selection.attr("tabindex",n._tabindex),n.$selection.attr("aria-disabled","false")}),e.on("disable",function(){n.$selection.attr("tabindex","-1"),n.$selection.attr("aria-disabled","true")})},o.prototype._handleBlur=function(e){var t=this;window.setTimeout(function(){document.activeElement==t.$selection[0]||n.contains(t.$selection[0],document.activeElement)||t.trigger("blur",e)},1)},o.prototype._attachCloseHandler=function(e){n(document.body).on("mousedown.wfselect2."+e.id,function(e){var t=n(e.target).closest(".wfselect2");n(".wfselect2.wfselect2-container--open").each(function(){this!=t[0]&&i.GetData(this,"element").wfselect2("close")})})},o.prototype._detachCloseHandler=function(e){n(document.body).off("mousedown.wfselect2."+e.id)},o.prototype.position=function(e,t){t.find(".selection").append(e)},o.prototype.destroy=function(){this._detachCloseHandler(this.container)},o.prototype.update=function(e){throw new Error("The `update` method must be defined in child classes.")},o.prototype.isEnabled=function(){return!this.isDisabled()},o.prototype.isDisabled=function(){return this.options.get("disabled")},o}),e.define("wfselect2/selection/single",["jquery","./base","../utils","../keys"],function(e,t,n,i){function r(){r.__super__.constructor.apply(this,arguments)}return n.Extend(r,t),r.prototype.render=function(){var e=r.__super__.render.call(this);return e.addClass("wfselect2-selection--single"),e.html('<span class="wfselect2-selection__rendered"></span><span class="wfselect2-selection__arrow" role="presentation"><b role="presentation"></b></span>'),e},r.prototype.bind=function(t,e){var n=this;r.__super__.bind.apply(this,arguments);var i=t.id+"-container";this.$selection.find(".wfselect2-selection__rendered").attr("id",i).attr("role","textbox").attr("aria-readonly","true"),this.$selection.attr("aria-labelledby",i),this.$selection.on("mousedown",function(e){1===e.which&&n.trigger("toggle",{originalEvent:e})}),this.$selection.on("focus",function(e){}),this.$selection.on("blur",function(e){}),t.on("focus",function(e){t.isOpen()||n.$selection.trigger("focus")})},r.prototype.clear=function(){var e=this.$selection.find(".wfselect2-selection__rendered");e.empty(),e.removeAttr("title")},r.prototype.display=function(e,t){var n=this.options.get("templateSelection");return this.options.get("escapeMarkup")(n(e,t))},r.prototype.selectionContainer=function(){return e("<span></span>")},r.prototype.update=function(e){if(0!==e.length){var t=e[0],n=this.$selection.find(".wfselect2-selection__rendered"),i=this.display(t,n);n.empty().append(i);var r=t.title||t.text;r?n.attr("title",r):n.removeAttr("title")}else this.clear()},r}),e.define("wfselect2/selection/multiple",["jquery","./base","../utils"],function(r,e,l){function n(e,t){n.__super__.constructor.apply(this,arguments)}return l.Extend(n,e),n.prototype.render=function(){var e=n.__super__.render.call(this);return e.addClass("wfselect2-selection--multiple"),e.html('<ul class="wfselect2-selection__rendered"></ul>'),e},n.prototype.bind=function(e,t){var i=this;n.__super__.bind.apply(this,arguments),this.$selection.on("click",function(e){i.trigger("toggle",{originalEvent:e})}),this.$selection.on("click",".wfselect2-selection__choice__remove",function(e){if(!i.isDisabled()){var t=r(this).parent(),n=l.GetData(t[0],"data");i.trigger("unselect",{originalEvent:e,data:n})}})},n.prototype.clear=function(){var e=this.$selection.find(".wfselect2-selection__rendered");e.empty(),e.removeAttr("title")},n.prototype.display=function(e,t){var n=this.options.get("templateSelection");return this.options.get("escapeMarkup")(n(e,t))},n.prototype.selectionContainer=function(){return r('<li class="wfselect2-selection__choice"><span class="wfselect2-selection__choice__remove" role="presentation">&times;</span></li>')},n.prototype.update=function(e){if(this.clear(),0!==e.length){for(var t=[],n=0;n<e.length;n++){var i=e[n],r=this.selectionContainer(),o=this.display(i,r);r.append(o);var s=i.title||i.text;s&&r.attr("title",s),l.StoreData(r[0],"data",i),t.push(r)}var a=this.$selection.find(".wfselect2-selection__rendered");l.appendMany(a,t)}},n}),e.define("wfselect2/selection/placeholder",["../utils"],function(e){function t(e,t,n){this.placeholder=this.normalizePlaceholder(n.get("placeholder")),e.call(this,t,n)}return t.prototype.normalizePlaceholder=function(e,t){return"string"==typeof t&&(t={id:"",text:t}),t},t.prototype.createPlaceholder=function(e,t){var n=this.selectionContainer();return n.html(this.display(t)),n.addClass("wfselect2-selection__placeholder").removeClass("wfselect2-selection__choice"),n},t.prototype.update=function(e,t){var n=1==t.length&&t[0].id!=this.placeholder.id;if(1<t.length||n)return e.call(this,t);this.clear();var i=this.createPlaceholder(this.placeholder);this.$selection.find(".wfselect2-selection__rendered").append(i)},t}),e.define("wfselect2/selection/allowClear",["jquery","../keys","../utils"],function(r,i,a){function e(){}return e.prototype.bind=function(e,t,n){var i=this;e.call(this,t,n),null==this.placeholder&&this.options.get("debug")&&window.console&&console.error&&console.error("WFSelect2: The `allowClear` option should be used in combination with the `placeholder` option."),this.$selection.on("mousedown",".wfselect2-selection__clear",function(e){i._handleClear(e)}),t.on("keypress",function(e){i._handleKeyboardClear(e,t)})},e.prototype._handleClear=function(e,t){if(!this.isDisabled()){var n=this.$selection.find(".wfselect2-selection__clear");if(0!==n.length){t.stopPropagation();var i=a.GetData(n[0],"data"),r=this.$element.val();this.$element.val(this.placeholder.id);var o={data:i};if(this.trigger("clear",o),o.prevented)this.$element.val(r);else{for(var s=0;s<i.length;s++)if(o={data:i[s]},this.trigger("unselect",o),o.prevented)return void this.$element.val(r);this.$element.trigger("input").trigger("change"),this.trigger("toggle",{})}}}},e.prototype._handleKeyboardClear=function(e,t,n){n.isOpen()||t.which!=i.DELETE&&t.which!=i.BACKSPACE||this._handleClear(t)},e.prototype.update=function(e,t){if(e.call(this,t),!(0<this.$selection.find(".wfselect2-selection__placeholder").length||0===t.length)){var n=this.options.get("translations").get("removeAllItems"),i=r('<span class="wfselect2-selection__clear" title="'+n()+'">&times;</span>');a.StoreData(i[0],"data",t),this.$selection.find(".wfselect2-selection__rendered").prepend(i)}},e}),e.define("wfselect2/selection/search",["jquery","../utils","../keys"],function(i,a,l){function e(e,t,n){e.call(this,t,n)}return e.prototype.render=function(e){var t=i('<li class="wfselect2-search wfselect2-search--inline"><input class="wfselect2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="none" spellcheck="false" role="searchbox" aria-autocomplete="list" /></li>');this.$searchContainer=t,this.$search=t.find("input");var n=e.call(this);return this._transferTabIndex(),n},e.prototype.bind=function(e,t,n){var i=this,r=t.id+"-results";e.call(this,t,n),t.on("open",function(){i.$search.attr("aria-controls",r),i.$search.trigger("focus")}),t.on("close",function(){i.$search.val(""),i.$search.removeAttr("aria-controls"),i.$search.removeAttr("aria-activedescendant"),i.$search.trigger("focus")}),t.on("enable",function(){i.$search.prop("disabled",!1),i._transferTabIndex()}),t.on("disable",function(){i.$search.prop("disabled",!0)}),t.on("focus",function(e){i.$search.trigger("focus")}),t.on("results:focus",function(e){e.data._resultId?i.$search.attr("aria-activedescendant",e.data._resultId):i.$search.removeAttr("aria-activedescendant")}),this.$selection.on("focusin",".wfselect2-search--inline",function(e){i.trigger("focus",e)}),this.$selection.on("focusout",".wfselect2-search--inline",function(e){i._handleBlur(e)}),this.$selection.on("keydown",".wfselect2-search--inline",function(e){if(e.stopPropagation(),i.trigger("keypress",e),i._keyUpPrevented=e.isDefaultPrevented(),e.which===l.BACKSPACE&&""===i.$search.val()){var t=i.$searchContainer.prev(".wfselect2-selection__choice");if(0<t.length){var n=a.GetData(t[0],"data");i.searchRemoveChoice(n),e.preventDefault()}}}),this.$selection.on("click",".wfselect2-search--inline",function(e){i.$search.val()&&e.stopPropagation()});var o=document.documentMode,s=o&&o<=11;this.$selection.on("input.searchcheck",".wfselect2-search--inline",function(e){s?i.$selection.off("input.search input.searchcheck"):i.$selection.off("keyup.search")}),this.$selection.on("keyup.search input.search",".wfselect2-search--inline",function(e){if(s&&"input"===e.type)i.$selection.off("input.search input.searchcheck");else{var t=e.which;t!=l.SHIFT&&t!=l.CTRL&&t!=l.ALT&&t!=l.TAB&&i.handleSearch(e)}})},e.prototype._transferTabIndex=function(e){this.$search.attr("tabindex",this.$selection.attr("tabindex")),this.$selection.attr("tabindex","-1")},e.prototype.createPlaceholder=function(e,t){this.$search.attr("placeholder",t.text)},e.prototype.update=function(e,t){var n=this.$search[0]==document.activeElement;this.$search.attr("placeholder",""),e.call(this,t),this.$selection.find(".wfselect2-selection__rendered").append(this.$searchContainer),this.resizeSearch(),n&&this.$search.trigger("focus")},e.prototype.handleSearch=function(){if(this.resizeSearch(),!this._keyUpPrevented){var e=this.$search.val();this.trigger("query",{term:e})}this._keyUpPrevented=!1},e.prototype.searchRemoveChoice=function(e,t){this.trigger("unselect",{data:t}),this.$search.val(t.text),this.handleSearch()},e.prototype.resizeSearch=function(){this.$search.css("width","25px");var e="";""!==this.$search.attr("placeholder")?e=this.$selection.find(".wfselect2-selection__rendered").width():e=.75*(this.$search.val().length+1)+"em";this.$search.css("width",e)},e}),e.define("wfselect2/selection/eventRelay",["jquery"],function(s){function e(){}return e.prototype.bind=function(e,t,n){var i=this,r=["open","opening","close","closing","select","selecting","unselect","unselecting","clear","clearing"],o=["opening","closing","selecting","unselecting","clearing"];e.call(this,t,n),t.on("*",function(e,t){if(-1!==s.inArray(e,r)){t=t||{};var n=s.Event("wfselect2:"+e,{params:t});i.$element.trigger(n),-1!==s.inArray(e,o)&&(t.prevented=n.isDefaultPrevented())}})},e}),e.define("wfselect2/translation",["jquery","require"],function(t,n){function i(e){this.dict=e||{}}return i.prototype.all=function(){return this.dict},i.prototype.get=function(e){return this.dict[e]},i.prototype.extend=function(e){this.dict=t.extend({},e.all(),this.dict)},i._cache={},i.loadPath=function(e){if(!(e in i._cache)){var t=n(e);i._cache[e]=t}return new i(i._cache[e])},i}),e.define("wfselect2/diacritics",[],function(){return{"Ⓐ":"A","A":"A","À":"A","Á":"A","Â":"A","Ầ":"A","Ấ":"A","Ẫ":"A","Ẩ":"A","Ã":"A","Ā":"A","Ă":"A","Ằ":"A","Ắ":"A","Ẵ":"A","Ẳ":"A","Ȧ":"A","Ǡ":"A","Ä":"A","Ǟ":"A","Ả":"A","Å":"A","Ǻ":"A","Ǎ":"A","Ȁ":"A","Ȃ":"A","Ạ":"A","Ậ":"A","Ặ":"A","Ḁ":"A","Ą":"A","Ⱥ":"A","Ɐ":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ⓑ":"B","B":"B","Ḃ":"B","Ḅ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ɓ":"B","Ⓒ":"C","C":"C","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","Ç":"C","Ḉ":"C","Ƈ":"C","Ȼ":"C","Ꜿ":"C","Ⓓ":"D","D":"D","Ḋ":"D","Ď":"D","Ḍ":"D","Ḑ":"D","Ḓ":"D","Ḏ":"D","Đ":"D","Ƌ":"D","Ɗ":"D","Ɖ":"D","Ꝺ":"D","DZ":"DZ","DŽ":"DZ","Dz":"Dz","Dž":"Dz","Ⓔ":"E","E":"E","È":"E","É":"E","Ê":"E","Ề":"E","Ế":"E","Ễ":"E","Ể":"E","Ẽ":"E","Ē":"E","Ḕ":"E","Ḗ":"E","Ĕ":"E","Ė":"E","Ë":"E","Ẻ":"E","Ě":"E","Ȅ":"E","Ȇ":"E","Ẹ":"E","Ệ":"E","Ȩ":"E","Ḝ":"E","Ę":"E","Ḙ":"E","Ḛ":"E","Ɛ":"E","Ǝ":"E","Ⓕ":"F","F":"F","Ḟ":"F","Ƒ":"F","Ꝼ":"F","Ⓖ":"G","G":"G","Ǵ":"G","Ĝ":"G","Ḡ":"G","Ğ":"G","Ġ":"G","Ǧ":"G","Ģ":"G","Ǥ":"G","Ɠ":"G","Ꞡ":"G","Ᵹ":"G","Ꝿ":"G","Ⓗ":"H","H":"H","Ĥ":"H","Ḣ":"H","Ḧ":"H","Ȟ":"H","Ḥ":"H","Ḩ":"H","Ḫ":"H","Ħ":"H","Ⱨ":"H","Ⱶ":"H","Ɥ":"H","Ⓘ":"I","I":"I","Ì":"I","Í":"I","Î":"I","Ĩ":"I","Ī":"I","Ĭ":"I","İ":"I","Ï":"I","Ḯ":"I","Ỉ":"I","Ǐ":"I","Ȉ":"I","Ȋ":"I","Ị":"I","Į":"I","Ḭ":"I","Ɨ":"I","Ⓙ":"J","J":"J","Ĵ":"J","Ɉ":"J","Ⓚ":"K","K":"K","Ḱ":"K","Ǩ":"K","Ḳ":"K","Ķ":"K","Ḵ":"K","Ƙ":"K","Ⱪ":"K","Ꝁ":"K","Ꝃ":"K","Ꝅ":"K","Ꞣ":"K","Ⓛ":"L","L":"L","Ŀ":"L","Ĺ":"L","Ľ":"L","Ḷ":"L","Ḹ":"L","Ļ":"L","Ḽ":"L","Ḻ":"L","Ł":"L","Ƚ":"L","Ɫ":"L","Ⱡ":"L","Ꝉ":"L","Ꝇ":"L","Ꞁ":"L","LJ":"LJ","Lj":"Lj","Ⓜ":"M","M":"M","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ɯ":"M","Ⓝ":"N","N":"N","Ǹ":"N","Ń":"N","Ñ":"N","Ṅ":"N","Ň":"N","Ṇ":"N","Ņ":"N","Ṋ":"N","Ṉ":"N","Ƞ":"N","Ɲ":"N","Ꞑ":"N","Ꞥ":"N","NJ":"NJ","Nj":"Nj","Ⓞ":"O","O":"O","Ò":"O","Ó":"O","Ô":"O","Ồ":"O","Ố":"O","Ỗ":"O","Ổ":"O","Õ":"O","Ṍ":"O","Ȭ":"O","Ṏ":"O","Ō":"O","Ṑ":"O","Ṓ":"O","Ŏ":"O","Ȯ":"O","Ȱ":"O","Ö":"O","Ȫ":"O","Ỏ":"O","Ő":"O","Ǒ":"O","Ȍ":"O","Ȏ":"O","Ơ":"O","Ờ":"O","Ớ":"O","Ỡ":"O","Ở":"O","Ợ":"O","Ọ":"O","Ộ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Ɔ":"O","Ɵ":"O","Ꝋ":"O","Ꝍ":"O","Œ":"OE","Ƣ":"OI","Ꝏ":"OO","Ȣ":"OU","Ⓟ":"P","P":"P","Ṕ":"P","Ṗ":"P","Ƥ":"P","Ᵽ":"P","Ꝑ":"P","Ꝓ":"P","Ꝕ":"P","Ⓠ":"Q","Q":"Q","Ꝗ":"Q","Ꝙ":"Q","Ɋ":"Q","Ⓡ":"R","R":"R","Ŕ":"R","Ṙ":"R","Ř":"R","Ȑ":"R","Ȓ":"R","Ṛ":"R","Ṝ":"R","Ŗ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꝛ":"R","Ꞧ":"R","Ꞃ":"R","Ⓢ":"S","S":"S","ẞ":"S","Ś":"S","Ṥ":"S","Ŝ":"S","Ṡ":"S","Š":"S","Ṧ":"S","Ṣ":"S","Ṩ":"S","Ș":"S","Ş":"S","Ȿ":"S","Ꞩ":"S","Ꞅ":"S","Ⓣ":"T","T":"T","Ṫ":"T","Ť":"T","Ṭ":"T","Ț":"T","Ţ":"T","Ṱ":"T","Ṯ":"T","Ŧ":"T","Ƭ":"T","Ʈ":"T","Ⱦ":"T","Ꞇ":"T","Ꜩ":"TZ","Ⓤ":"U","U":"U","Ù":"U","Ú":"U","Û":"U","Ũ":"U","Ṹ":"U","Ū":"U","Ṻ":"U","Ŭ":"U","Ü":"U","Ǜ":"U","Ǘ":"U","Ǖ":"U","Ǚ":"U","Ủ":"U","Ů":"U","Ű":"U","Ǔ":"U","Ȕ":"U","Ȗ":"U","Ư":"U","Ừ":"U","Ứ":"U","Ữ":"U","Ử":"U","Ự":"U","Ụ":"U","Ṳ":"U","Ų":"U","Ṷ":"U","Ṵ":"U","Ʉ":"U","Ⓥ":"V","V":"V","Ṽ":"V","Ṿ":"V","Ʋ":"V","Ꝟ":"V","Ʌ":"V","Ꝡ":"VY","Ⓦ":"W","W":"W","Ẁ":"W","Ẃ":"W","Ŵ":"W","Ẇ":"W","Ẅ":"W","Ẉ":"W","Ⱳ":"W","Ⓧ":"X","X":"X","Ẋ":"X","Ẍ":"X","Ⓨ":"Y","Y":"Y","Ỳ":"Y","Ý":"Y","Ŷ":"Y","Ỹ":"Y","Ȳ":"Y","Ẏ":"Y","Ÿ":"Y","Ỷ":"Y","Ỵ":"Y","Ƴ":"Y","Ɏ":"Y","Ỿ":"Y","Ⓩ":"Z","Z":"Z","Ź":"Z","Ẑ":"Z","Ż":"Z","Ž":"Z","Ẓ":"Z","Ẕ":"Z","Ƶ":"Z","Ȥ":"Z","Ɀ":"Z","Ⱬ":"Z","Ꝣ":"Z","ⓐ":"a","a":"a","ẚ":"a","à":"a","á":"a","â":"a","ầ":"a","ấ":"a","ẫ":"a","ẩ":"a","ã":"a","ā":"a","ă":"a","ằ":"a","ắ":"a","ẵ":"a","ẳ":"a","ȧ":"a","ǡ":"a","ä":"a","ǟ":"a","ả":"a","å":"a","ǻ":"a","ǎ":"a","ȁ":"a","ȃ":"a","ạ":"a","ậ":"a","ặ":"a","ḁ":"a","ą":"a","ⱥ":"a","ɐ":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ⓑ":"b","b":"b","ḃ":"b","ḅ":"b","ḇ":"b","ƀ":"b","ƃ":"b","ɓ":"b","ⓒ":"c","c":"c","ć":"c","ĉ":"c","ċ":"c","č":"c","ç":"c","ḉ":"c","ƈ":"c","ȼ":"c","ꜿ":"c","ↄ":"c","ⓓ":"d","d":"d","ḋ":"d","ď":"d","ḍ":"d","ḑ":"d","ḓ":"d","ḏ":"d","đ":"d","ƌ":"d","ɖ":"d","ɗ":"d","ꝺ":"d","dz":"dz","dž":"dz","ⓔ":"e","e":"e","è":"e","é":"e","ê":"e","ề":"e","ế":"e","ễ":"e","ể":"e","ẽ":"e","ē":"e","ḕ":"e","ḗ":"e","ĕ":"e","ė":"e","ë":"e","ẻ":"e","ě":"e","ȅ":"e","ȇ":"e","ẹ":"e","ệ":"e","ȩ":"e","ḝ":"e","ę":"e","ḙ":"e","ḛ":"e","ɇ":"e","ɛ":"e","ǝ":"e","ⓕ":"f","f":"f","ḟ":"f","ƒ":"f","ꝼ":"f","ⓖ":"g","g":"g","ǵ":"g","ĝ":"g","ḡ":"g","ğ":"g","ġ":"g","ǧ":"g","ģ":"g","ǥ":"g","ɠ":"g","ꞡ":"g","ᵹ":"g","ꝿ":"g","ⓗ":"h","h":"h","ĥ":"h","ḣ":"h","ḧ":"h","ȟ":"h","ḥ":"h","ḩ":"h","ḫ":"h","ẖ":"h","ħ":"h","ⱨ":"h","ⱶ":"h","ɥ":"h","ƕ":"hv","ⓘ":"i","i":"i","ì":"i","í":"i","î":"i","ĩ":"i","ī":"i","ĭ":"i","ï":"i","ḯ":"i","ỉ":"i","ǐ":"i","ȉ":"i","ȋ":"i","ị":"i","į":"i","ḭ":"i","ɨ":"i","ı":"i","ⓙ":"j","j":"j","ĵ":"j","ǰ":"j","ɉ":"j","ⓚ":"k","k":"k","ḱ":"k","ǩ":"k","ḳ":"k","ķ":"k","ḵ":"k","ƙ":"k","ⱪ":"k","ꝁ":"k","ꝃ":"k","ꝅ":"k","ꞣ":"k","ⓛ":"l","l":"l","ŀ":"l","ĺ":"l","ľ":"l","ḷ":"l","ḹ":"l","ļ":"l","ḽ":"l","ḻ":"l","ſ":"l","ł":"l","ƚ":"l","ɫ":"l","ⱡ":"l","ꝉ":"l","ꞁ":"l","ꝇ":"l","lj":"lj","ⓜ":"m","m":"m","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ɯ":"m","ⓝ":"n","n":"n","ǹ":"n","ń":"n","ñ":"n","ṅ":"n","ň":"n","ṇ":"n","ņ":"n","ṋ":"n","ṉ":"n","ƞ":"n","ɲ":"n","ʼn":"n","ꞑ":"n","ꞥ":"n","nj":"nj","ⓞ":"o","o":"o","ò":"o","ó":"o","ô":"o","ồ":"o","ố":"o","ỗ":"o","ổ":"o","õ":"o","ṍ":"o","ȭ":"o","ṏ":"o","ō":"o","ṑ":"o","ṓ":"o","ŏ":"o","ȯ":"o","ȱ":"o","ö":"o","ȫ":"o","ỏ":"o","ő":"o","ǒ":"o","ȍ":"o","ȏ":"o","ơ":"o","ờ":"o","ớ":"o","ỡ":"o","ở":"o","ợ":"o","ọ":"o","ộ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","ɔ":"o","ꝋ":"o","ꝍ":"o","ɵ":"o","œ":"oe","ƣ":"oi","ȣ":"ou","ꝏ":"oo","ⓟ":"p","p":"p","ṕ":"p","ṗ":"p","ƥ":"p","ᵽ":"p","ꝑ":"p","ꝓ":"p","ꝕ":"p","ⓠ":"q","q":"q","ɋ":"q","ꝗ":"q","ꝙ":"q","ⓡ":"r","r":"r","ŕ":"r","ṙ":"r","ř":"r","ȑ":"r","ȓ":"r","ṛ":"r","ṝ":"r","ŗ":"r","ṟ":"r","ɍ":"r","ɽ":"r","ꝛ":"r","ꞧ":"r","ꞃ":"r","ⓢ":"s","s":"s","ß":"s","ś":"s","ṥ":"s","ŝ":"s","ṡ":"s","š":"s","ṧ":"s","ṣ":"s","ṩ":"s","ș":"s","ş":"s","ȿ":"s","ꞩ":"s","ꞅ":"s","ẛ":"s","ⓣ":"t","t":"t","ṫ":"t","ẗ":"t","ť":"t","ṭ":"t","ț":"t","ţ":"t","ṱ":"t","ṯ":"t","ŧ":"t","ƭ":"t","ʈ":"t","ⱦ":"t","ꞇ":"t","ꜩ":"tz","ⓤ":"u","u":"u","ù":"u","ú":"u","û":"u","ũ":"u","ṹ":"u","ū":"u","ṻ":"u","ŭ":"u","ü":"u","ǜ":"u","ǘ":"u","ǖ":"u","ǚ":"u","ủ":"u","ů":"u","ű":"u","ǔ":"u","ȕ":"u","ȗ":"u","ư":"u","ừ":"u","ứ":"u","ữ":"u","ử":"u","ự":"u","ụ":"u","ṳ":"u","ų":"u","ṷ":"u","ṵ":"u","ʉ":"u","ⓥ":"v","v":"v","ṽ":"v","ṿ":"v","ʋ":"v","ꝟ":"v","ʌ":"v","ꝡ":"vy","ⓦ":"w","w":"w","ẁ":"w","ẃ":"w","ŵ":"w","ẇ":"w","ẅ":"w","ẘ":"w","ẉ":"w","ⱳ":"w","ⓧ":"x","x":"x","ẋ":"x","ẍ":"x","ⓨ":"y","y":"y","ỳ":"y","ý":"y","ŷ":"y","ỹ":"y","ȳ":"y","ẏ":"y","ÿ":"y","ỷ":"y","ẙ":"y","ỵ":"y","ƴ":"y","ɏ":"y","ỿ":"y","ⓩ":"z","z":"z","ź":"z","ẑ":"z","ż":"z","ž":"z","ẓ":"z","ẕ":"z","ƶ":"z","ȥ":"z","ɀ":"z","ⱬ":"z","ꝣ":"z","Ά":"Α","Έ":"Ε","Ή":"Η","Ί":"Ι","Ϊ":"Ι","Ό":"Ο","Ύ":"Υ","Ϋ":"Υ","Ώ":"Ω","ά":"α","έ":"ε","ή":"η","ί":"ι","ϊ":"ι","ΐ":"ι","ό":"ο","ύ":"υ","ϋ":"υ","ΰ":"υ","ώ":"ω","ς":"σ","’":"'"}}),e.define("wfselect2/data/base",["../utils"],function(i){function n(e,t){n.__super__.constructor.call(this)}return i.Extend(n,i.Observable),n.prototype.current=function(e){throw new Error("The `current` method must be defined in child classes.")},n.prototype.query=function(e,t){throw new Error("The `query` method must be defined in child classes.")},n.prototype.bind=function(e,t){},n.prototype.destroy=function(){},n.prototype.generateResultId=function(e,t){var n=e.id+"-result-";return n+=i.generateChars(4),null!=t.id?n+="-"+t.id.toString():n+="-"+i.generateChars(4),n},n}),e.define("wfselect2/data/select",["./base","../utils","jquery"],function(e,a,l){function n(e,t){this.$element=e,this.options=t,n.__super__.constructor.call(this)}return a.Extend(n,e),n.prototype.current=function(e){var n=[],i=this;this.$element.find(":selected").each(function(){var e=l(this),t=i.item(e);n.push(t)}),e(n)},n.prototype.select=function(r){var o=this;if(r.selected=!0,l(r.element).is("option"))return r.element.selected=!0,void this.$element.trigger("input").trigger("change");if(this.$element.prop("multiple"))this.current(function(e){var t=[];(r=[r]).push.apply(r,e);for(var n=0;n<r.length;n++){var i=r[n].id;-1===l.inArray(i,t)&&t.push(i)}o.$element.val(t),o.$element.trigger("input").trigger("change")});else{var e=r.id;this.$element.val(e),this.$element.trigger("input").trigger("change")}},n.prototype.unselect=function(r){var o=this;if(this.$element.prop("multiple")){if(r.selected=!1,l(r.element).is("option"))return r.element.selected=!1,void this.$element.trigger("input").trigger("change");this.current(function(e){for(var t=[],n=0;n<e.length;n++){var i=e[n].id;i!==r.id&&-1===l.inArray(i,t)&&t.push(i)}o.$element.val(t),o.$element.trigger("input").trigger("change")})}},n.prototype.bind=function(e,t){var n=this;(this.container=e).on("select",function(e){n.select(e.data)}),e.on("unselect",function(e){n.unselect(e.data)})},n.prototype.destroy=function(){this.$element.find("*").each(function(){a.RemoveData(this)})},n.prototype.query=function(i,e){var r=[],o=this;this.$element.children().each(function(){var e=l(this);if(e.is("option")||e.is("optgroup")){var t=o.item(e),n=o.matches(i,t);null!==n&&r.push(n)}}),e({results:r})},n.prototype.addOptions=function(e){a.appendMany(this.$element,e)},n.prototype.option=function(e){var t;e.children?(t=document.createElement("optgroup")).label=e.text:void 0!==(t=document.createElement("option")).textContent?t.textContent=e.text:t.innerText=e.text,void 0!==e.id&&(t.value=e.id),e.disabled&&(t.disabled=!0),e.selected&&(t.selected=!0),e.title&&(t.title=e.title);var n=l(t),i=this._normalizeItem(e);return i.element=t,a.StoreData(t,"data",i),n},n.prototype.item=function(e){var t={};if(null!=(t=a.GetData(e[0],"data")))return t;if(e.is("option"))t={id:e.val(),text:e.text(),disabled:e.prop("disabled"),selected:e.prop("selected"),title:e.prop("title")};else if(e.is("optgroup")){t={text:e.prop("label"),children:[],title:e.prop("title")};for(var n=e.children("option"),i=[],r=0;r<n.length;r++){var o=l(n[r]),s=this.item(o);i.push(s)}t.children=i}return(t=this._normalizeItem(t)).element=e[0],a.StoreData(e[0],"data",t),t},n.prototype._normalizeItem=function(e){e!==Object(e)&&(e={id:e,text:e});return null!=(e=l.extend({},{text:""},e)).id&&(e.id=e.id.toString()),null!=e.text&&(e.text=e.text.toString()),null==e._resultId&&e.id&&null!=this.container&&(e._resultId=this.generateResultId(this.container,e)),l.extend({},{selected:!1,disabled:!1},e)},n.prototype.matches=function(e,t){return this.options.get("matcher")(e,t)},n}),e.define("wfselect2/data/array",["./select","../utils","jquery"],function(e,f,g){function i(e,t){this._dataToConvert=t.get("data")||[],i.__super__.constructor.call(this,e,t)}return f.Extend(i,e),i.prototype.bind=function(e,t){i.__super__.bind.call(this,e,t),this.addOptions(this.convertToOptions(this._dataToConvert))},i.prototype.select=function(n){var e=this.$element.find("option").filter(function(e,t){return t.value==n.id.toString()});0===e.length&&(e=this.option(n),this.addOptions(e)),i.__super__.select.call(this,n)},i.prototype.convertToOptions=function(e){var t=this,n=this.$element.find("option"),i=n.map(function(){return t.item(g(this)).id}).get(),r=[];function o(e){return function(){return g(this).val()==e.id}}for(var s=0;s<e.length;s++){var a=this._normalizeItem(e[s]);if(0<=g.inArray(a.id,i)){var l=n.filter(o(a)),c=this.item(l),u=g.extend(!0,{},a,c),d=this.option(u);l.replaceWith(d)}else{var p=this.option(a);if(a.children){var h=this.convertToOptions(a.children);f.appendMany(p,h)}r.push(p)}}return r},i}),e.define("wfselect2/data/ajax",["./array","../utils","jquery"],function(e,t,o){function n(e,t){this.ajaxOptions=this._applyDefaults(t.get("ajax")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),n.__super__.constructor.call(this,e,t)}return t.Extend(n,e),n.prototype._applyDefaults=function(e){var t={data:function(e){return o.extend({},e,{q:e.term})},transport:function(e,t,n){var i=o.ajax(e);return i.then(t),i.fail(n),i}};return o.extend({},t,e,!0)},n.prototype.processResults=function(e){return e},n.prototype.query=function(n,i){var r=this;null!=this._request&&(o.isFunction(this._request.abort)&&this._request.abort(),this._request=null);var t=o.extend({type:"GET"},this.ajaxOptions);function e(){var e=t.transport(t,function(e){var t=r.processResults(e,n);r.options.get("debug")&&window.console&&console.error&&(t&&t.results&&o.isArray(t.results)||console.error("WFSelect2: The AJAX results did not return an array in the `results` key of the response.")),i(t)},function(){"status"in e&&(0===e.status||"0"===e.status)||r.trigger("results:message",{message:"errorLoading"})});r._request=e}"function"==typeof t.url&&(t.url=t.url.call(this.$element,n)),"function"==typeof t.data&&(t.data=t.data.call(this.$element,n)),this.ajaxOptions.delay&&null!=n.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(e,this.ajaxOptions.delay)):e()},n}),e.define("wfselect2/data/tags",["jquery"],function(u){function e(e,t,n){var i=n.get("tags"),r=n.get("createTag");void 0!==r&&(this.createTag=r);var o=n.get("insertTag");if(void 0!==o&&(this.insertTag=o),e.call(this,t,n),u.isArray(i))for(var s=0;s<i.length;s++){var a=i[s],l=this._normalizeItem(a),c=this.option(l);this.$element.append(c)}}return e.prototype.query=function(e,c,u){var d=this;this._removeOldTags(),null!=c.term&&null==c.page?e.call(this,c,function e(t,n){for(var i=t.results,r=0;r<i.length;r++){var o=i[r],s=null!=o.children&&!e({results:o.children},!0);if((o.text||"").toUpperCase()===(c.term||"").toUpperCase()||s)return!n&&(t.data=i,void u(t))}if(n)return!0;var a=d.createTag(c);if(null!=a){var l=d.option(a);l.attr("data-wfselect2-tag",!0),d.addOptions([l]),d.insertTag(i,a)}t.results=i,u(t)}):e.call(this,c,u)},e.prototype.createTag=function(e,t){var n=u.trim(t.term);return""===n?null:{id:n,text:n}},e.prototype.insertTag=function(e,t,n){t.unshift(n)},e.prototype._removeOldTags=function(e){this.$element.find("option[data-wfselect2-tag]").each(function(){this.selected||u(this).remove()})},e}),e.define("wfselect2/data/tokenizer",["jquery"],function(d){function e(e,t,n){var i=n.get("tokenizer");void 0!==i&&(this.tokenizer=i),e.call(this,t,n)}return e.prototype.bind=function(e,t,n){e.call(this,t,n),this.$search=t.dropdown.$search||t.selection.$search||n.find(".wfselect2-search__field")},e.prototype.query=function(e,t,n){var i=this;t.term=t.term||"";var r=this.tokenizer(t,this.options,function(e){var t=i._normalizeItem(e);if(!i.$element.find("option").filter(function(){return d(this).val()===t.id}).length){var n=i.option(t);n.attr("data-wfselect2-tag",!0),i._removeOldTags(),i.addOptions([n])}!function(e){i.trigger("select",{data:e})}(t)});r.term!==t.term&&(this.$search.length&&(this.$search.val(r.term),this.$search.trigger("focus")),t.term=r.term),e.call(this,t,n)},e.prototype.tokenizer=function(e,t,n,i){for(var r=n.get("tokenSeparators")||[],o=t.term,s=0,a=this.createTag||function(e){return{id:e.term,text:e.term}};s<o.length;){var l=o[s];if(-1!==d.inArray(l,r)){var c=o.substr(0,s),u=a(d.extend({},t,{term:c}));null!=u?(i(u),o=o.substr(s+1)||"",s=0):s++}else s++}return{term:o}},e}),e.define("wfselect2/data/minimumInputLength",[],function(){function e(e,t,n){this.minimumInputLength=n.get("minimumInputLength"),e.call(this,t,n)}return e.prototype.query=function(e,t,n){t.term=t.term||"",t.term.length<this.minimumInputLength?this.trigger("results:message",{message:"inputTooShort",args:{minimum:this.minimumInputLength,input:t.term,params:t}}):e.call(this,t,n)},e}),e.define("wfselect2/data/maximumInputLength",[],function(){function e(e,t,n){this.maximumInputLength=n.get("maximumInputLength"),e.call(this,t,n)}return e.prototype.query=function(e,t,n){t.term=t.term||"",0<this.maximumInputLength&&t.term.length>this.maximumInputLength?this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:t.term,params:t}}):e.call(this,t,n)},e}),e.define("wfselect2/data/maximumSelectionLength",[],function(){function e(e,t,n){this.maximumSelectionLength=n.get("maximumSelectionLength"),e.call(this,t,n)}return e.prototype.bind=function(e,t,n){var i=this;e.call(this,t,n),t.on("select",function(){i._checkIfMaximumSelected()})},e.prototype.query=function(e,t,n){var i=this;this._checkIfMaximumSelected(function(){e.call(i,t,n)})},e.prototype._checkIfMaximumSelected=function(e,n){var i=this;this.current(function(e){var t=null!=e?e.length:0;0<i.maximumSelectionLength&&t>=i.maximumSelectionLength?i.trigger("results:message",{message:"maximumSelected",args:{maximum:i.maximumSelectionLength}}):n&&n()})},e}),e.define("wfselect2/dropdown",["jquery","./utils"],function(t,e){function n(e,t){this.$element=e,this.options=t,n.__super__.constructor.call(this)}return e.Extend(n,e.Observable),n.prototype.render=function(){var e=t('<span class="wfselect2-dropdown"><span class="wfselect2-results"></span></span>');return e.attr("dir",this.options.get("dir")),this.$dropdown=e},n.prototype.bind=function(){},n.prototype.position=function(e,t){},n.prototype.destroy=function(){this.$dropdown.remove()},n}),e.define("wfselect2/dropdown/search",["jquery","../utils"],function(o,e){function t(){}return t.prototype.render=function(e){var t=e.call(this),n=o('<span class="wfselect2-search wfselect2-search--dropdown"><input class="wfselect2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="none" spellcheck="false" role="searchbox" aria-autocomplete="list" /></span>');return this.$searchContainer=n,this.$search=n.find("input"),t.prepend(n),t},t.prototype.bind=function(e,t,n){var i=this,r=t.id+"-results";e.call(this,t,n),this.$search.on("keydown",function(e){i.trigger("keypress",e),i._keyUpPrevented=e.isDefaultPrevented()}),this.$search.on("input",function(e){o(this).off("keyup")}),this.$search.on("keyup input",function(e){i.handleSearch(e)}),t.on("open",function(){i.$search.attr("tabindex",0),i.$search.attr("aria-controls",r),i.$search.trigger("focus"),window.setTimeout(function(){i.$search.trigger("focus")},0)}),t.on("close",function(){i.$search.attr("tabindex",-1),i.$search.removeAttr("aria-controls"),i.$search.removeAttr("aria-activedescendant"),i.$search.val(""),i.$search.trigger("blur")}),t.on("focus",function(){t.isOpen()||i.$search.trigger("focus")}),t.on("results:all",function(e){null!=e.query.term&&""!==e.query.term||(i.showSearch(e)?i.$searchContainer.removeClass("wfselect2-search--hide"):i.$searchContainer.addClass("wfselect2-search--hide"))}),t.on("results:focus",function(e){e.data._resultId?i.$search.attr("aria-activedescendant",e.data._resultId):i.$search.removeAttr("aria-activedescendant")})},t.prototype.handleSearch=function(e){if(!this._keyUpPrevented){var t=this.$search.val();this.trigger("query",{term:t})}this._keyUpPrevented=!1},t.prototype.showSearch=function(e,t){return!0},t}),e.define("wfselect2/dropdown/hidePlaceholder",[],function(){function e(e,t,n,i){this.placeholder=this.normalizePlaceholder(n.get("placeholder")),e.call(this,t,n,i)}return e.prototype.append=function(e,t){t.results=this.removePlaceholder(t.results),e.call(this,t)},e.prototype.normalizePlaceholder=function(e,t){return"string"==typeof t&&(t={id:"",text:t}),t},e.prototype.removePlaceholder=function(e,t){for(var n=t.slice(0),i=t.length-1;0<=i;i--){var r=t[i];this.placeholder.id===r.id&&n.splice(i,1)}return n},e}),e.define("wfselect2/dropdown/infiniteScroll",["jquery"],function(n){function e(e,t,n,i){this.lastParams={},e.call(this,t,n,i),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return e.prototype.append=function(e,t){this.$loadingMore.remove(),this.loading=!1,e.call(this,t),this.showLoadingMore(t)&&(this.$results.append(this.$loadingMore),this.loadMoreIfNeeded())},e.prototype.bind=function(e,t,n){var i=this;e.call(this,t,n),t.on("query",function(e){i.lastParams=e,i.loading=!0}),t.on("query:append",function(e){i.lastParams=e,i.loading=!0}),this.$results.on("scroll",this.loadMoreIfNeeded.bind(this))},e.prototype.loadMoreIfNeeded=function(){var e=n.contains(document.documentElement,this.$loadingMore[0]);if(!this.loading&&e){var t=this.$results.offset().top+this.$results.outerHeight(!1);this.$loadingMore.offset().top+this.$loadingMore.outerHeight(!1)<=t+50&&this.loadMore()}},e.prototype.loadMore=function(){this.loading=!0;var e=n.extend({},{page:1},this.lastParams);e.page++,this.trigger("query:append",e)},e.prototype.showLoadingMore=function(e,t){return t.pagination&&t.pagination.more},e.prototype.createLoadingMore=function(){var e=n('<li class="wfselect2-results__option wfselect2-results__option--load-more"role="option" aria-disabled="true"></li>'),t=this.options.get("translations").get("loadingMore");return e.html(t(this.lastParams)),e},e}),e.define("wfselect2/dropdown/attachBody",["jquery","../utils"],function(f,a){function e(e,t,n){this.$dropdownParent=f(n.get("dropdownParent")||document.body),e.call(this,t,n)}return e.prototype.bind=function(e,t,n){var i=this;e.call(this,t,n),t.on("open",function(){i._showDropdown(),i._attachPositioningHandler(t),i._bindContainerResultHandlers(t)}),t.on("close",function(){i._hideDropdown(),i._detachPositioningHandler(t)}),this.$dropdownContainer.on("mousedown",function(e){e.stopPropagation()})},e.prototype.destroy=function(e){e.call(this),this.$dropdownContainer.remove()},e.prototype.position=function(e,t,n){t.attr("class",n.attr("class")),t.removeClass("wfselect2"),t.addClass("wfselect2-container--open"),t.css({position:"absolute",top:-999999}),this.$container=n},e.prototype.render=function(e){var t=f("<span></span>"),n=e.call(this);return t.append(n),this.$dropdownContainer=t},e.prototype._hideDropdown=function(e){this.$dropdownContainer.detach()},e.prototype._bindContainerResultHandlers=function(e,t){if(!this._containerResultsHandlersBound){var n=this;t.on("results:all",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("results:append",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("results:message",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("select",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("unselect",function(){n._positionDropdown(),n._resizeDropdown()}),this._containerResultsHandlersBound=!0}},e.prototype._attachPositioningHandler=function(e,t){var n=this,i="scroll.wfselect2."+t.id,r="resize.wfselect2."+t.id,o="orientationchange.wfselect2."+t.id,s=this.$container.parents().filter(a.hasScroll);s.each(function(){a.StoreData(this,"wfselect2-scroll-position",{x:f(this).scrollLeft(),y:f(this).scrollTop()})}),s.on(i,function(e){var t=a.GetData(this,"wfselect2-scroll-position");f(this).scrollTop(t.y)}),f(window).on(i+" "+r+" "+o,function(e){n._positionDropdown(),n._resizeDropdown()})},e.prototype._detachPositioningHandler=function(e,t){var n="scroll.wfselect2."+t.id,i="resize.wfselect2."+t.id,r="orientationchange.wfselect2."+t.id;this.$container.parents().filter(a.hasScroll).off(n),f(window).off(n+" "+i+" "+r)},e.prototype._positionDropdown=function(){var e=f(window),t=this.$dropdown.hasClass("wfselect2-dropdown--above"),n=this.$dropdown.hasClass("wfselect2-dropdown--below"),i=null,r=this.$container.offset();r.bottom=r.top+this.$container.outerHeight(!1);var o={height:this.$container.outerHeight(!1)};o.top=r.top,o.bottom=r.top+o.height;var s=this.$dropdown.outerHeight(!1),a=e.scrollTop(),l=e.scrollTop()+e.height(),c=a<r.top-s,u=l>r.bottom+s,d={left:r.left,top:o.bottom},p=this.$dropdownParent;"static"===p.css("position")&&(p=p.offsetParent());var h={top:0,left:0};(f.contains(document.body,p[0])||p[0].isConnected)&&(h=p.offset()),d.top-=h.top,d.left-=h.left,t||n||(i="below"),u||!c||t?!c&&u&&t&&(i="below"):i="above",("above"==i||t&&"below"!==i)&&(d.top=o.top-h.top-s),null!=i&&(this.$dropdown.removeClass("wfselect2-dropdown--below wfselect2-dropdown--above").addClass("wfselect2-dropdown--"+i),this.$container.removeClass("wfselect2-container--below wfselect2-container--above").addClass("wfselect2-container--"+i)),this.$dropdownContainer.css(d)},e.prototype._resizeDropdown=function(){var e={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(e.minWidth=e.width,e.position="relative",e.width="auto"),this.$dropdown.css(e)},e.prototype._showDropdown=function(e){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},e}),e.define("wfselect2/dropdown/minimumResultsForSearch",[],function(){function e(e,t,n,i){this.minimumResultsForSearch=n.get("minimumResultsForSearch"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),e.call(this,t,n,i)}return e.prototype.showSearch=function(e,t){return!(function e(t){for(var n=0,i=0;i<t.length;i++){var r=t[i];r.children?n+=e(r.children):n++}return n}(t.data.results)<this.minimumResultsForSearch)&&e.call(this,t)},e}),e.define("wfselect2/dropdown/selectOnClose",["../utils"],function(o){function e(){}return e.prototype.bind=function(e,t,n){var i=this;e.call(this,t,n),t.on("close",function(e){i._handleSelectOnClose(e)})},e.prototype._handleSelectOnClose=function(e,t){if(t&&null!=t.originalWFSelect2Event){var n=t.originalWFSelect2Event;if("select"===n._type||"unselect"===n._type)return}var i=this.getHighlightedResults();if(!(i.length<1)){var r=o.GetData(i[0],"data");null!=r.element&&r.element.selected||null==r.element&&r.selected||this.trigger("select",{data:r})}},e}),e.define("wfselect2/dropdown/closeOnSelect",[],function(){function e(){}return e.prototype.bind=function(e,t,n){var i=this;e.call(this,t,n),t.on("select",function(e){i._selectTriggered(e)}),t.on("unselect",function(e){i._selectTriggered(e)})},e.prototype._selectTriggered=function(e,t){var n=t.originalEvent;n&&(n.ctrlKey||n.metaKey)||this.trigger("close",{originalEvent:n,originalWFSelect2Event:t})},e}),e.define("wfselect2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Please delete "+t+" character";return 1!=t&&(n+="s"),n},inputTooShort:function(e){return"Please enter "+(e.minimum-e.input.length)+" or more characters"},loadingMore:function(){return"Loading more results…"},maximumSelected:function(e){var t="You can only select "+e.maximum+" item";return 1!=e.maximum&&(t+="s"),t},noResults:function(){return"No results found"},searching:function(){return"Searching…"},removeAllItems:function(){return"Remove all items"}}}),e.define("wfselect2/defaults",["jquery","require","./results","./selection/single","./selection/multiple","./selection/placeholder","./selection/allowClear","./selection/search","./selection/eventRelay","./utils","./translation","./diacritics","./data/select","./data/array","./data/ajax","./data/tags","./data/tokenizer","./data/minimumInputLength","./data/maximumInputLength","./data/maximumSelectionLength","./dropdown","./dropdown/search","./dropdown/hidePlaceholder","./dropdown/infiniteScroll","./dropdown/attachBody","./dropdown/minimumResultsForSearch","./dropdown/selectOnClose","./dropdown/closeOnSelect","./i18n/en"],function(c,u,d,p,h,f,g,m,v,y,s,t,_,w,$,b,A,x,D,S,C,E,O,T,q,j,L,I,e){function n(){this.reset()}return n.prototype.apply=function(e){if(null==(e=c.extend(!0,{},this.defaults,e)).dataAdapter){if(null!=e.ajax?e.dataAdapter=$:null!=e.data?e.dataAdapter=w:e.dataAdapter=_,0<e.minimumInputLength&&(e.dataAdapter=y.Decorate(e.dataAdapter,x)),0<e.maximumInputLength&&(e.dataAdapter=y.Decorate(e.dataAdapter,D)),0<e.maximumSelectionLength&&(e.dataAdapter=y.Decorate(e.dataAdapter,S)),e.tags&&(e.dataAdapter=y.Decorate(e.dataAdapter,b)),null==e.tokenSeparators&&null==e.tokenizer||(e.dataAdapter=y.Decorate(e.dataAdapter,A)),null!=e.query){var t=u(e.amdBase+"compat/query");e.dataAdapter=y.Decorate(e.dataAdapter,t)}if(null!=e.initSelection){var n=u(e.amdBase+"compat/initSelection");e.dataAdapter=y.Decorate(e.dataAdapter,n)}}if(null==e.resultsAdapter&&(e.resultsAdapter=d,null!=e.ajax&&(e.resultsAdapter=y.Decorate(e.resultsAdapter,T)),null!=e.placeholder&&(e.resultsAdapter=y.Decorate(e.resultsAdapter,O)),e.selectOnClose&&(e.resultsAdapter=y.Decorate(e.resultsAdapter,L))),null==e.dropdownAdapter){if(e.multiple)e.dropdownAdapter=C;else{var i=y.Decorate(C,E);e.dropdownAdapter=i}if(0!==e.minimumResultsForSearch&&(e.dropdownAdapter=y.Decorate(e.dropdownAdapter,j)),e.closeOnSelect&&(e.dropdownAdapter=y.Decorate(e.dropdownAdapter,I)),null!=e.dropdownCssClass||null!=e.dropdownCss||null!=e.adaptDropdownCssClass){var r=u(e.amdBase+"compat/dropdownCss");e.dropdownAdapter=y.Decorate(e.dropdownAdapter,r)}e.dropdownAdapter=y.Decorate(e.dropdownAdapter,q)}if(null==e.selectionAdapter){if(e.multiple?e.selectionAdapter=h:e.selectionAdapter=p,null!=e.placeholder&&(e.selectionAdapter=y.Decorate(e.selectionAdapter,f)),e.allowClear&&(e.selectionAdapter=y.Decorate(e.selectionAdapter,g)),e.multiple&&(e.selectionAdapter=y.Decorate(e.selectionAdapter,m)),null!=e.containerCssClass||null!=e.containerCss||null!=e.adaptContainerCssClass){var o=u(e.amdBase+"compat/containerCss");e.selectionAdapter=y.Decorate(e.selectionAdapter,o)}e.selectionAdapter=y.Decorate(e.selectionAdapter,v)}e.language=this._resolveLanguage(e.language),e.language.push("en");for(var s=[],a=0;a<e.language.length;a++){var l=e.language[a];-1===s.indexOf(l)&&s.push(l)}return e.language=s,e.translations=this._processTranslations(e.language,e.debug),e},n.prototype.reset=function(){function a(e){return e.replace(/[^\u0000-\u007E]/g,function(e){return t[e]||e})}this.defaults={amdBase:"./",amdLanguageBase:"./i18n/",closeOnSelect:!0,debug:!1,dropdownAutoWidth:!1,escapeMarkup:y.escapeMarkup,language:{},matcher:function e(t,n){if(""===c.trim(t.term))return n;if(n.children&&0<n.children.length){for(var i=c.extend(!0,{},n),r=n.children.length-1;0<=r;r--)null==e(t,n.children[r])&&i.children.splice(r,1);return 0<i.children.length?i:e(t,i)}var o=a(n.text).toUpperCase(),s=a(t.term).toUpperCase();return-1<o.indexOf(s)?n:null},minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,scrollAfterSelect:!1,sorter:function(e){return e},templateResult:function(e){return e.text},templateSelection:function(e){return e.text},theme:"default",width:"resolve"}},n.prototype.applyFromElement=function(e,t){var n=e.language,i=this.defaults.language,r=t.prop("lang"),o=t.closest("[lang]").prop("lang"),s=Array.prototype.concat.call(this._resolveLanguage(r),this._resolveLanguage(n),this._resolveLanguage(i),this._resolveLanguage(o));return e.language=s,e},n.prototype._resolveLanguage=function(e){if(!e)return[];if(c.isEmptyObject(e))return[];if(c.isPlainObject(e))return[e];var t;t=c.isArray(e)?e:[e];for(var n=[],i=0;i<t.length;i++)if(n.push(t[i]),"string"==typeof t[i]&&0<t[i].indexOf("-")){var r=t[i].split("-")[0];n.push(r)}return n},n.prototype._processTranslations=function(e,t){for(var n=new s,i=0;i<e.length;i++){var r=new s,o=e[i];if("string"==typeof o)try{r=s.loadPath(o)}catch(e){try{o=this.defaults.amdLanguageBase+o,r=s.loadPath(o)}catch(e){t&&window.console&&console.warn&&console.warn('WFSelect2: The language file for "'+o+'" could not be automatically loaded. A fallback will be used instead.')}}else r=c.isPlainObject(o)?new s(o):o;n.extend(r)}return n},n.prototype.set=function(e,t){var n={};n[c.camelCase(e)]=t;var i=y._convertData(n);c.extend(!0,this.defaults,i)},new n}),e.define("wfselect2/options",["require","jquery","./defaults","./utils"],function(i,d,r,p){function e(e,t){if(this.options=e,null!=t&&this.fromElement(t),null!=t&&(this.options=r.applyFromElement(this.options,t)),this.options=r.apply(this.options),t&&t.is("input")){var n=i(this.get("amdBase")+"compat/inputData");this.options.dataAdapter=p.Decorate(this.options.dataAdapter,n)}}return e.prototype.fromElement=function(e){var t=["wfselect2"];null==this.options.multiple&&(this.options.multiple=e.prop("multiple")),null==this.options.disabled&&(this.options.disabled=e.prop("disabled")),null==this.options.dir&&(e.prop("dir")?this.options.dir=e.prop("dir"):e.closest("[dir]").prop("dir")?this.options.dir=e.closest("[dir]").prop("dir"):this.options.dir="ltr"),e.prop("disabled",this.options.disabled),e.prop("multiple",this.options.multiple),p.GetData(e[0],"wfselect2Tags")&&(this.options.debug&&window.console&&console.warn&&console.warn('WFSelect2: The `data-wfselect2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of WFSelect2.'),p.StoreData(e[0],"data",p.GetData(e[0],"wfselect2Tags")),p.StoreData(e[0],"tags",!0)),p.GetData(e[0],"ajaxUrl")&&(this.options.debug&&window.console&&console.warn&&console.warn("WFSelect2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of WFSelect2."),e.attr("ajax--url",p.GetData(e[0],"ajaxUrl")),p.StoreData(e[0],"ajax-Url",p.GetData(e[0],"ajaxUrl")));var n={};function i(e,t){return t.toUpperCase()}for(var r=0;r<e[0].attributes.length;r++){var o=e[0].attributes[r].name,s="data-";if(o.substr(0,s.length)==s){var a=o.substring(s.length),l=p.GetData(e[0],a);n[a.replace(/-([a-z])/g,i)]=l}}d.fn.jquery&&"1."==d.fn.jquery.substr(0,2)&&e[0].dataset&&(n=d.extend(!0,{},e[0].dataset,n));var c=d.extend(!0,{},p.GetData(e[0]),n);for(var u in c=p._convertData(c))-1<d.inArray(u,t)||(d.isPlainObject(this.options[u])?d.extend(this.options[u],c[u]):this.options[u]=c[u]);return this},e.prototype.get=function(e){return this.options[e]},e.prototype.set=function(e,t){this.options[e]=t},e}),e.define("wfselect2/core",["jquery","./options","./utils","./keys"],function(o,c,u,i){var d=function(e,t){null!=u.GetData(e[0],"wfselect2")&&u.GetData(e[0],"wfselect2").destroy(),this.$element=e,this.id=this._generateId(e),t=t||{},this.options=new c(t,e),d.__super__.constructor.call(this);var n=e.attr("tabindex")||0;u.StoreData(e[0],"old-tabindex",n),e.attr("tabindex","-1");var i=this.options.get("dataAdapter");this.dataAdapter=new i(e,this.options);var r=this.render();this._placeContainer(r);var o=this.options.get("selectionAdapter");this.selection=new o(e,this.options),this.$selection=this.selection.render(),this.selection.position(this.$selection,r);var s=this.options.get("dropdownAdapter");this.dropdown=new s(e,this.options),this.$dropdown=this.dropdown.render(),this.dropdown.position(this.$dropdown,r);var a=this.options.get("resultsAdapter");this.results=new a(e,this.options,this.dataAdapter),this.$results=this.results.render(),this.results.position(this.$results,this.$dropdown);var l=this;this._bindAdapters(),this._registerDomEvents(),this._registerDataEvents(),this._registerSelectionEvents(),this._registerDropdownEvents(),this._registerResultsEvents(),this._registerEvents(),this.dataAdapter.current(function(e){l.trigger("selection:update",{data:e})}),e.addClass("wfselect2-hidden-accessible"),e.attr("aria-hidden","true"),this._syncAttributes(),u.StoreData(e[0],"wfselect2",this),e.data("wfselect2",this)};return u.Extend(d,u.Observable),d.prototype._generateId=function(e){return"wfselect2-"+(null!=e.attr("id")?e.attr("id"):null!=e.attr("name")?e.attr("name")+"-"+u.generateChars(2):u.generateChars(4)).replace(/(:|\.|\[|\]|,)/g,"")},d.prototype._placeContainer=function(e){e.insertAfter(this.$element);var t=this._resolveWidth(this.$element,this.options.get("width"));null!=t&&e.css("width",t)},d.prototype._resolveWidth=function(e,t){var n=/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;if("resolve"==t){var i=this._resolveWidth(e,"style");return null!=i?i:this._resolveWidth(e,"element")}if("element"==t){var r=e.outerWidth(!1);return r<=0?"auto":r+"px"}if("style"!=t)return"computedstyle"!=t?t:window.getComputedStyle(e[0]).width;var o=e.attr("style");if("string"!=typeof o)return null;for(var s=o.split(";"),a=0,l=s.length;a<l;a+=1){var c=s[a].replace(/\s/g,"").match(n);if(null!==c&&1<=c.length)return c[1]}return null},d.prototype._bindAdapters=function(){this.dataAdapter.bind(this,this.$container),this.selection.bind(this,this.$container),this.dropdown.bind(this,this.$container),this.results.bind(this,this.$container)},d.prototype._registerDomEvents=function(){var t=this;this.$element.on("change.wfselect2",function(){t.dataAdapter.current(function(e){t.trigger("selection:update",{data:e})})}),this.$element.on("focus.wfselect2",function(e){t.trigger("focus",e)}),this._syncA=u.bind(this._syncAttributes,this),this._syncS=u.bind(this._syncSubtree,this),this.$element[0].attachEvent&&this.$element[0].attachEvent("onpropertychange",this._syncA);var e=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;null!=e?(this._observer=new e(function(e){t._syncA(),t._syncS(null,e)}),this._observer.observe(this.$element[0],{attributes:!0,childList:!0,subtree:!1})):this.$element[0].addEventListener&&(this.$element[0].addEventListener("DOMAttrModified",t._syncA,!1),this.$element[0].addEventListener("DOMNodeInserted",t._syncS,!1),this.$element[0].addEventListener("DOMNodeRemoved",t._syncS,!1))},d.prototype._registerDataEvents=function(){var n=this;this.dataAdapter.on("*",function(e,t){n.trigger(e,t)})},d.prototype._registerSelectionEvents=function(){var n=this,i=["toggle","focus"];this.selection.on("toggle",function(){n.toggleDropdown()}),this.selection.on("focus",function(e){n.focus(e)}),this.selection.on("*",function(e,t){-1===o.inArray(e,i)&&n.trigger(e,t)})},d.prototype._registerDropdownEvents=function(){var n=this;this.dropdown.on("*",function(e,t){n.trigger(e,t)})},d.prototype._registerResultsEvents=function(){var n=this;this.results.on("*",function(e,t){n.trigger(e,t)})},d.prototype._registerEvents=function(){var n=this;this.on("open",function(){n.$container.addClass("wfselect2-container--open")}),this.on("close",function(){n.$container.removeClass("wfselect2-container--open")}),this.on("enable",function(){n.$container.removeClass("wfselect2-container--disabled")}),this.on("disable",function(){n.$container.addClass("wfselect2-container--disabled")}),this.on("blur",function(){n.$container.removeClass("wfselect2-container--focus")}),this.on("query",function(t){n.isOpen()||n.trigger("open",{}),this.dataAdapter.query(t,function(e){n.trigger("results:all",{data:e,query:t})})}),this.on("query:append",function(t){this.dataAdapter.query(t,function(e){n.trigger("results:append",{data:e,query:t})})}),this.on("keypress",function(e){var t=e.which;n.isOpen()?t===i.ESC||t===i.TAB||t===i.UP&&e.altKey?(n.close(e),e.preventDefault()):t===i.ENTER?(n.trigger("results:select",{}),e.preventDefault()):t===i.SPACE&&e.ctrlKey?(n.trigger("results:toggle",{}),e.preventDefault()):t===i.UP?(n.trigger("results:previous",{}),e.preventDefault()):t===i.DOWN&&(n.trigger("results:next",{}),e.preventDefault()):(t===i.ENTER||t===i.SPACE||t===i.DOWN&&e.altKey)&&(n.open(),e.preventDefault())})},d.prototype._syncAttributes=function(){this.options.set("disabled",this.$element.prop("disabled")),this.isDisabled()?(this.isOpen()&&this.close(),this.trigger("disable",{})):this.trigger("enable",{})},d.prototype._isChangeMutation=function(e,t){var n=!1,i=this;if(!e||!e.target||"OPTION"===e.target.nodeName||"OPTGROUP"===e.target.nodeName){if(t)if(t.addedNodes&&0<t.addedNodes.length)for(var r=0;r<t.addedNodes.length;r++){t.addedNodes[r].selected&&(n=!0)}else t.removedNodes&&0<t.removedNodes.length?n=!0:o.isArray(t)&&o.each(t,function(e,t){if(i._isChangeMutation(e,t))return!(n=!0)});else n=!0;return n}},d.prototype._syncSubtree=function(e,t){var n=this._isChangeMutation(e,t),i=this;n&&this.dataAdapter.current(function(e){i.trigger("selection:update",{data:e})})},d.prototype.trigger=function(e,t){var n=d.__super__.trigger,i={open:"opening",close:"closing",select:"selecting",unselect:"unselecting",clear:"clearing"};if(void 0===t&&(t={}),e in i){var r=i[e],o={prevented:!1,name:e,args:t};if(n.call(this,r,o),o.prevented)return void(t.prevented=!0)}n.call(this,e,t)},d.prototype.toggleDropdown=function(){this.isDisabled()||(this.isOpen()?this.close():this.open())},d.prototype.open=function(){this.isOpen()||this.isDisabled()||this.trigger("query",{})},d.prototype.close=function(e){this.isOpen()&&this.trigger("close",{originalEvent:e})},d.prototype.isEnabled=function(){return!this.isDisabled()},d.prototype.isDisabled=function(){return this.options.get("disabled")},d.prototype.isOpen=function(){return this.$container.hasClass("wfselect2-container--open")},d.prototype.hasFocus=function(){return this.$container.hasClass("wfselect2-container--focus")},d.prototype.focus=function(e){this.hasFocus()||(this.$container.addClass("wfselect2-container--focus"),this.trigger("focus",{}))},d.prototype.enable=function(e){this.options.get("debug")&&window.console&&console.warn&&console.warn('WFSelect2: The `wfselect2("enable")` method has been deprecated and will be removed in later WFSelect2 versions. Use $element.prop("disabled") instead.'),null!=e&&0!==e.length||(e=[!0]);var t=!e[0];this.$element.prop("disabled",t)},d.prototype.data=function(){this.options.get("debug")&&0<arguments.length&&window.console&&console.warn&&console.warn('WFSelect2: Data can no longer be set using `wfselect2("data")`. You should consider setting the value instead using `$element.val()`.');var t=[];return this.dataAdapter.current(function(e){t=e}),t},d.prototype.val=function(e){if(this.options.get("debug")&&window.console&&console.warn&&console.warn('WFSelect2: The `wfselect2("val")` method has been deprecated and will be removed in later WFSelect2 versions. Use $element.val() instead.'),null==e||0===e.length)return this.$element.val();var t=e[0];o.isArray(t)&&(t=o.map(t,function(e){return e.toString()})),this.$element.val(t).trigger("input").trigger("change")},d.prototype.destroy=function(){this.$container.remove(),this.$element[0].detachEvent&&this.$element[0].detachEvent("onpropertychange",this._syncA),null!=this._observer?(this._observer.disconnect(),this._observer=null):this.$element[0].removeEventListener&&(this.$element[0].removeEventListener("DOMAttrModified",this._syncA,!1),this.$element[0].removeEventListener("DOMNodeInserted",this._syncS,!1),this.$element[0].removeEventListener("DOMNodeRemoved",this._syncS,!1)),this._syncA=null,this._syncS=null,this.$element.off(".wfselect2"),this.$element.attr("tabindex",u.GetData(this.$element[0],"old-tabindex")),this.$element.removeClass("wfselect2-hidden-accessible"),this.$element.attr("aria-hidden","false"),u.RemoveData(this.$element[0]),this.$element.removeData("wfselect2"),this.dataAdapter.destroy(),this.selection.destroy(),this.dropdown.destroy(),this.results.destroy(),this.dataAdapter=null,this.selection=null,this.dropdown=null,this.results=null},d.prototype.render=function(){var e=o('<span class="wfselect2 wfselect2-container"><span class="selection"></span><span class="dropdown-wrapper" aria-hidden="true"></span></span>');return e.attr("dir",this.options.get("dir")),this.$container=e,this.$container.addClass("wfselect2-container--"+this.options.get("theme")),u.StoreData(e[0],"element",this.$element),e},d}),e.define("wfselect2/compat/utils",["jquery"],function(s){return{syncCssClasses:function(e,t,n){var i,r,o=[];(i=s.trim(e.attr("class")))&&s((i=""+i).split(/\s+/)).each(function(){0===this.indexOf("wfselect2-")&&o.push(this)}),(i=s.trim(t.attr("class")))&&s((i=""+i).split(/\s+/)).each(function(){0!==this.indexOf("wfselect2-")&&null!=(r=n(this))&&o.push(r)}),e.attr("class",o.join(" "))}}}),e.define("wfselect2/compat/containerCss",["jquery","./utils"],function(s,a){function l(e){return null}function e(){}return e.prototype.render=function(e){var t=e.call(this),n=this.options.get("containerCssClass")||"";s.isFunction(n)&&(n=n(this.$element));var i=this.options.get("adaptContainerCssClass");if(i=i||l,-1!==n.indexOf(":all:")){n=n.replace(":all:","");var r=i;i=function(e){var t=r(e);return null!=t?t+" "+e:e}}var o=this.options.get("containerCss")||{};return s.isFunction(o)&&(o=o(this.$element)),a.syncCssClasses(t,this.$element,i),t.css(o),t.addClass(n),t},e}),e.define("wfselect2/compat/dropdownCss",["jquery","./utils"],function(s,a){function l(e){return null}function e(){}return e.prototype.render=function(e){var t=e.call(this),n=this.options.get("dropdownCssClass")||"";s.isFunction(n)&&(n=n(this.$element));var i=this.options.get("adaptDropdownCssClass");if(i=i||l,-1!==n.indexOf(":all:")){n=n.replace(":all:","");var r=i;i=function(e){var t=r(e);return null!=t?t+" "+e:e}}var o=this.options.get("dropdownCss")||{};return s.isFunction(o)&&(o=o(this.$element)),a.syncCssClasses(t,this.$element,i),t.css(o),t.addClass(n),t},e}),e.define("wfselect2/compat/initSelection",["jquery"],function(i){function e(e,t,n){n.get("debug")&&window.console&&console.warn&&console.warn("WFSelect2: The `initSelection` option has been deprecated in favor of a custom data adapter that overrides the `current` method. This method is now called multiple times instead of a single time when the instance is initialized. Support will be removed for the `initSelection` option in future versions of WFSelect2"),this.initSelection=n.get("initSelection"),this._isInitialized=!1,e.call(this,t,n)}return e.prototype.current=function(e,t){var n=this;this._isInitialized?e.call(this,t):this.initSelection.call(null,this.$element,function(e){n._isInitialized=!0,i.isArray(e)||(e=[e]),t(e)})},e}),e.define("wfselect2/compat/inputData",["jquery","../utils"],function(s,i){function e(e,t,n){this._currentData=[],this._valueSeparator=n.get("valueSeparator")||",","hidden"===t.prop("type")&&n.get("debug")&&console&&console.warn&&console.warn("WFSelect2: Using a hidden input with WFSelect2 is no longer supported and may stop working in the future. It is recommended to use a `<select>` element instead."),e.call(this,t,n)}return e.prototype.current=function(e,t){function i(e,t){var n=[];return e.selected||-1!==s.inArray(e.id,t)?(e.selected=!0,n.push(e)):e.selected=!1,e.children&&n.push.apply(n,i(e.children,t)),n}for(var n=[],r=0;r<this._currentData.length;r++){var o=this._currentData[r];n.push.apply(n,i(o,this.$element.val().split(this._valueSeparator)))}t(n)},e.prototype.select=function(e,t){if(this.options.get("multiple")){var n=this.$element.val();n+=this._valueSeparator+t.id,this.$element.val(n),this.$element.trigger("input").trigger("change")}else this.current(function(e){s.map(e,function(e){e.selected=!1})}),this.$element.val(t.id),this.$element.trigger("input").trigger("change")},e.prototype.unselect=function(e,r){var o=this;r.selected=!1,this.current(function(e){for(var t=[],n=0;n<e.length;n++){var i=e[n];r.id!=i.id&&t.push(i.id)}o.$element.val(t.join(o._valueSeparator)),o.$element.trigger("input").trigger("change")})},e.prototype.query=function(e,t,n){for(var i=[],r=0;r<this._currentData.length;r++){var o=this._currentData[r],s=this.matches(t,o);null!==s&&i.push(s)}n({results:i})},e.prototype.addOptions=function(e,t){var n=s.map(t,function(e){return i.GetData(e[0],"data")});this._currentData.push.apply(this._currentData,n)},e}),e.define("wfselect2/compat/matcher",["jquery"],function(s){return function(o){return function(e,t){var n=s.extend(!0,{},t);if(null==e.term||""===s.trim(e.term))return n;if(t.children){for(var i=t.children.length-1;0<=i;i--){var r=t.children[i];o(e.term,r.text,r)||n.children.splice(i,1)}if(0<n.children.length)return n}return o(e.term,t.text,t)?n:null}}}),e.define("wfselect2/compat/query",[],function(){function e(e,t,n){n.get("debug")&&window.console&&console.warn&&console.warn("WFSelect2: The `query` option has been deprecated in favor of a custom data adapter that overrides the `query` method. Support will be removed for the `query` option in future versions of WFSelect2."),e.call(this,t,n)}return e.prototype.query=function(e,t,n){t.callback=n,this.options.get("query").call(null,t)},e}),e.define("wfselect2/dropdown/attachContainer",[],function(){function e(e,t,n){e.call(this,t,n)}return e.prototype.position=function(e,t,n){n.find(".dropdown-wrapper").append(t),t.addClass("wfselect2-dropdown--below"),n.addClass("wfselect2-container--below")},e}),e.define("wfselect2/dropdown/stopPropagation",[],function(){function e(){}return e.prototype.bind=function(e,t,n){e.call(this,t,n);this.$dropdown.on(["blur","change","click","dblclick","focus","focusin","focusout","input","keydown","keyup","keypress","mousedown","mouseenter","mouseleave","mousemove","mouseover","mouseup","search","touchend","touchstart"].join(" "),function(e){e.stopPropagation()})},e}),e.define("wfselect2/selection/stopPropagation",[],function(){function e(){}return e.prototype.bind=function(e,t,n){e.call(this,t,n);this.$selection.on(["blur","change","click","dblclick","focus","focusin","focusout","input","keydown","keyup","keypress","mousedown","mouseenter","mouseleave","mousemove","mouseover","mouseup","search","touchend","touchstart"].join(" "),function(e){e.stopPropagation()})},e}),l=function(p){var h,f,e=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],t="onwheel"in document||9<=document.documentMode?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],g=Array.prototype.slice;if(p.event.fixHooks)for(var n=e.length;n;)p.event.fixHooks[e[--n]]=p.event.mouseHooks;var m=p.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var e=t.length;e;)this.addEventListener(t[--e],i,!1);else this.onmousewheel=i;p.data(this,"mousewheel-line-height",m.getLineHeight(this)),p.data(this,"mousewheel-page-height",m.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var e=t.length;e;)this.removeEventListener(t[--e],i,!1);else this.onmousewheel=null;p.removeData(this,"mousewheel-line-height"),p.removeData(this,"mousewheel-page-height")},getLineHeight:function(e){var t=p(e),n=t["offsetParent"in p.fn?"offsetParent":"parent"]();return n.length||(n=p("body")),parseInt(n.css("fontSize"),10)||parseInt(t.css("fontSize"),10)||16},getPageHeight:function(e){return p(e).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};function i(e){var t,n=e||window.event,i=g.call(arguments,1),r=0,o=0,s=0,a=0,l=0;if((e=p.event.fix(n)).type="mousewheel","detail"in n&&(s=-1*n.detail),"wheelDelta"in n&&(s=n.wheelDelta),"wheelDeltaY"in n&&(s=n.wheelDeltaY),"wheelDeltaX"in n&&(o=-1*n.wheelDeltaX),"axis"in n&&n.axis===n.HORIZONTAL_AXIS&&(o=-1*s,s=0),r=0===s?o:s,"deltaY"in n&&(r=s=-1*n.deltaY),"deltaX"in n&&(o=n.deltaX,0===s&&(r=-1*o)),0!==s||0!==o){if(1===n.deltaMode){var c=p.data(this,"mousewheel-line-height");r*=c,s*=c,o*=c}else if(2===n.deltaMode){var u=p.data(this,"mousewheel-page-height");r*=u,s*=u,o*=u}if(t=Math.max(Math.abs(s),Math.abs(o)),(!f||t<f)&&y(n,f=t)&&(f/=40),y(n,t)&&(r/=40,o/=40,s/=40),r=Math[1<=r?"floor":"ceil"](r/f),o=Math[1<=o?"floor":"ceil"](o/f),s=Math[1<=s?"floor":"ceil"](s/f),m.settings.normalizeOffset&&this.getBoundingClientRect){var d=this.getBoundingClientRect();a=e.clientX-d.left,l=e.clientY-d.top}return e.deltaX=o,e.deltaY=s,e.deltaFactor=f,e.offsetX=a,e.offsetY=l,e.deltaMode=0,i.unshift(e,r,o,s),h&&clearTimeout(h),h=setTimeout(v,200),(p.event.dispatch||p.event.handle).apply(this,i)}}function v(){f=null}function y(e,t){return m.settings.adjustOldDeltas&&"mousewheel"===e.type&&t%120==0}p.fn.extend({mousewheel:function(e){return e?this.bind("mousewheel",e):this.trigger("mousewheel")},unmousewheel:function(e){return this.unbind("mousewheel",e)}})},"function"==typeof e.define&&e.define.amd?e.define("jquery-mousewheel",["jquery"],l):"object"==typeof exports?module.exports=l:l(d),e.define("jquery.wfselect2",["jquery","jquery-mousewheel","./wfselect2/core","./wfselect2/defaults","./wfselect2/utils"],function(r,e,o,t,s){if(null==r.fn.wfselect2){var a=["open","close","destroy"];r.fn.wfselect2=function(t){if("object"==typeof(t=t||{}))return this.each(function(){var e=r.extend(!0,{},t);new o(r(this),e)}),this;if("string"!=typeof t)throw new Error("Invalid arguments for WFSelect2: "+t);var n,i=Array.prototype.slice.call(arguments,1);return this.each(function(){var e=s.GetData(this,"wfselect2");null==e&&window.console&&console.error&&console.error("The wfselect2('"+t+"') method was called on an element that is not using WFSelect2."),n=e[t].apply(e,i)}),-1<r.inArray(t,a)?this:n}}return null==r.fn.wfselect2.defaults&&(r.fn.wfselect2.defaults=t),o}),{define:e.define,require:e.require}}(),t=e.require("jquery.wfselect2");return d.fn.wfselect2.amd=e,t});js/date.1722265817.js000064400000055460150755146450007550 0ustar00Date.getMonthNumberFromName=function(name){var n=Date.CultureInfo.monthNames,m=Date.CultureInfo.abbreviatedMonthNames,s=name.toLowerCase();for(var i=0;i<n.length;i++){if(n[i].toLowerCase()==s||m[i].toLowerCase()==s){return i;}}
return-1;};Date.getDayNumberFromName=function(name){var n=Date.CultureInfo.dayNames,m=Date.CultureInfo.abbreviatedDayNames,o=Date.CultureInfo.shortestDayNames,s=name.toLowerCase();for(var i=0;i<n.length;i++){if(n[i].toLowerCase()==s||m[i].toLowerCase()==s){return i;}}
return-1;};Date.isLeapYear=function(year){return(((year%4===0)&&(year%100!==0))||(year%400===0));};Date.getDaysInMonth=function(year,month){return[31,(Date.isLeapYear(year)?29:28),31,30,31,30,31,31,30,31,30,31][month];};Date.getTimezoneOffset=function(s,dst){return(dst||false)?Date.CultureInfo.abbreviatedTimeZoneDST[s.toUpperCase()]:Date.CultureInfo.abbreviatedTimeZoneStandard[s.toUpperCase()];};Date.getTimezoneAbbreviation=function(offset,dst){var n=(dst||false)?Date.CultureInfo.abbreviatedTimeZoneDST:Date.CultureInfo.abbreviatedTimeZoneStandard,p;for(p in n){if(n[p]===offset){return p;}}
return null;};Date.prototype.clone=function(){return new Date(this.getTime());};Date.prototype.compareTo=function(date){if(isNaN(this)){throw new Error(this);}
if(date instanceof Date&&!isNaN(date)){return(this>date)?1:(this<date)?-1:0;}else{throw new TypeError(date);}};Date.prototype.equals=function(date){return(this.compareTo(date)===0);};Date.prototype.between=function(start,end){var t=this.getTime();return t>=start.getTime()&&t<=end.getTime();};Date.prototype.addMilliseconds=function(value){this.setMilliseconds(this.getMilliseconds()+value);return this;};Date.prototype.addSeconds=function(value){return this.addMilliseconds(value*1000);};Date.prototype.addMinutes=function(value){return this.addMilliseconds(value*60000);};Date.prototype.addHours=function(value){return this.addMilliseconds(value*3600000);};Date.prototype.addDays=function(value){return this.addMilliseconds(value*86400000);};Date.prototype.addWeeks=function(value){return this.addMilliseconds(value*604800000);};Date.prototype.addMonths=function(value){var n=this.getDate();this.setDate(1);this.setMonth(this.getMonth()+value);this.setDate(Math.min(n,this.getDaysInMonth()));return this;};Date.prototype.addYears=function(value){return this.addMonths(value*12);};Date.prototype.add=function(config){if(typeof config=="number"){this._orient=config;return this;}
var x=config;if(x.millisecond||x.milliseconds){this.addMilliseconds(x.millisecond||x.milliseconds);}
if(x.second||x.seconds){this.addSeconds(x.second||x.seconds);}
if(x.minute||x.minutes){this.addMinutes(x.minute||x.minutes);}
if(x.hour||x.hours){this.addHours(x.hour||x.hours);}
if(x.month||x.months){this.addMonths(x.month||x.months);}
if(x.year||x.years){this.addYears(x.year||x.years);}
if(x.day||x.days){this.addDays(x.day||x.days);}
return this;};Date._validate=function(value,min,max,name){if(typeof value!="number"){throw new TypeError(value+" is not a Number.");}else if(value<min||value>max){throw new RangeError(value+" is not a valid value for "+name+".");}
return true;};Date.validateMillisecond=function(n){return Date._validate(n,0,999,"milliseconds");};Date.validateSecond=function(n){return Date._validate(n,0,59,"seconds");};Date.validateMinute=function(n){return Date._validate(n,0,59,"minutes");};Date.validateHour=function(n){return Date._validate(n,0,23,"hours");};Date.validateDay=function(n,year,month){return Date._validate(n,1,Date.getDaysInMonth(year,month),"days");};Date.validateMonth=function(n){return Date._validate(n,0,11,"months");};Date.validateYear=function(n){return Date._validate(n,1,9999,"seconds");};Date.prototype.set=function(config){var x=config;if(!x.millisecond&&x.millisecond!==0){x.millisecond=-1;}
if(!x.second&&x.second!==0){x.second=-1;}
if(!x.minute&&x.minute!==0){x.minute=-1;}
if(!x.hour&&x.hour!==0){x.hour=-1;}
if(!x.day&&x.day!==0){x.day=-1;}
if(!x.month&&x.month!==0){x.month=-1;}
if(!x.year&&x.year!==0){x.year=-1;}
if(x.millisecond!=-1&&Date.validateMillisecond(x.millisecond)){this.addMilliseconds(x.millisecond-this.getMilliseconds());}
if(x.second!=-1&&Date.validateSecond(x.second)){this.addSeconds(x.second-this.getSeconds());}
if(x.minute!=-1&&Date.validateMinute(x.minute)){this.addMinutes(x.minute-this.getMinutes());}
if(x.hour!=-1&&Date.validateHour(x.hour)){this.addHours(x.hour-this.getHours());}
if(x.month!==-1&&Date.validateMonth(x.month)){this.addMonths(x.month-this.getMonth());}
if(x.year!=-1&&Date.validateYear(x.year)){this.addYears(x.year-this.getFullYear());}
if(x.day!=-1&&Date.validateDay(x.day,this.getFullYear(),this.getMonth())){this.addDays(x.day-this.getDate());}
if(x.timezone){this.setTimezone(x.timezone);}
if(x.timezoneOffset){this.setTimezoneOffset(x.timezoneOffset);}
return this;};Date.prototype.clearTime=function(){this.setHours(0);this.setMinutes(0);this.setSeconds(0);this.setMilliseconds(0);return this;};Date.prototype.isLeapYear=function(){var y=this.getFullYear();return(((y%4===0)&&(y%100!==0))||(y%400===0));};Date.prototype.isWeekday=function(){return!(this.is().sat()||this.is().sun());};Date.prototype.getDaysInMonth=function(){return Date.getDaysInMonth(this.getFullYear(),this.getMonth());};Date.prototype.moveToFirstDayOfMonth=function(){return this.set({day:1});};Date.prototype.moveToLastDayOfMonth=function(){return this.set({day:this.getDaysInMonth()});};Date.prototype.moveToDayOfWeek=function(day,orient){var diff=(day-this.getDay()+7*(orient||+1))%7;return this.addDays((diff===0)?diff+=7*(orient||+1):diff);};Date.prototype.moveToMonth=function(month,orient){var diff=(month-this.getMonth()+12*(orient||+1))%12;return this.addMonths((diff===0)?diff+=12*(orient||+1):diff);};Date.prototype.getDayOfYear=function(){return Math.floor((this-new Date(this.getFullYear(),0,1))/86400000);};Date.prototype.getWeekOfYear=function(firstDayOfWeek){var y=this.getFullYear(),m=this.getMonth(),d=this.getDate();var dow=firstDayOfWeek||Date.CultureInfo.firstDayOfWeek;var offset=7+1-new Date(y,0,1).getDay();if(offset==8){offset=1;}
var daynum=((Date.UTC(y,m,d,0,0,0)-Date.UTC(y,0,1,0,0,0))/86400000)+1;var w=Math.floor((daynum-offset+7)/7);if(w===dow){y--;var prevOffset=7+1-new Date(y,0,1).getDay();if(prevOffset==2||prevOffset==8){w=53;}else{w=52;}}
return w;};Date.prototype.isDST=function(){console.log('isDST');return this.toString().match(/(E|C|M|P)(S|D)T/)[2]=="D";};Date.prototype.getTimezone=function(){return Date.getTimezoneAbbreviation(this.getUTCOffset,this.isDST());};Date.prototype.setTimezoneOffset=function(s){var here=this.getTimezoneOffset(),there=Number(s)*-6/10;this.addMinutes(there-here);return this;};Date.prototype.setTimezone=function(s){return this.setTimezoneOffset(Date.getTimezoneOffset(s));};Date.prototype.getUTCOffset=function(){var n=this.getTimezoneOffset()*-10/6,r;if(n<0){r=(n-10000).toString();return r[0]+r.substr(2);}else{r=(n+10000).toString();return"+"+r.substr(1);}};Date.prototype.getDayName=function(abbrev){return abbrev?Date.CultureInfo.abbreviatedDayNames[this.getDay()]:Date.CultureInfo.dayNames[this.getDay()];};Date.prototype.getMonthName=function(abbrev){return abbrev?Date.CultureInfo.abbreviatedMonthNames[this.getMonth()]:Date.CultureInfo.monthNames[this.getMonth()];};Date.prototype._toString=Date.prototype.toString;Date.prototype.toString=function(format){var self=this;var p=function p(s){return(s.toString().length==1)?"0"+s:s;};return format?format.replace(/dd?d?d?|MM?M?M?|yy?y?y?|hh?|HH?|mm?|ss?|tt?|zz?z?/g,function(format){switch(format){case"hh":return p(self.getHours()<13?self.getHours():(self.getHours()-12));case"h":return self.getHours()<13?self.getHours():(self.getHours()-12);case"HH":return p(self.getHours());case"H":return self.getHours();case"mm":return p(self.getMinutes());case"m":return self.getMinutes();case"ss":return p(self.getSeconds());case"s":return self.getSeconds();case"yyyy":return self.getFullYear();case"yy":return self.getFullYear().toString().substring(2,4);case"dddd":return self.getDayName();case"ddd":return self.getDayName(true);case"dd":return p(self.getDate());case"d":return self.getDate().toString();case"MMMM":return self.getMonthName();case"MMM":return self.getMonthName(true);case"MM":return p((self.getMonth()+1));case"M":return self.getMonth()+1;case"t":return self.getHours()<12?Date.CultureInfo.amDesignator.substring(0,1):Date.CultureInfo.pmDesignator.substring(0,1);case"tt":return self.getHours()<12?Date.CultureInfo.amDesignator:Date.CultureInfo.pmDesignator;case"zzz":case"zz":case"z":return"";}}):this._toString();};
Date.now=function(){return new Date();};Date.today=function(){return Date.now().clearTime();};Date.prototype._orient=+1;Date.prototype.next=function(){this._orient=+1;return this;};Date.prototype.last=Date.prototype.prev=Date.prototype.previous=function(){this._orient=-1;return this;};Date.prototype._is=false;Date.prototype.is=function(){this._is=true;return this;};Number.prototype._dateElement="day";Number.prototype.fromNow=function(){var c={};c[this._dateElement]=this;return Date.now().add(c);};Number.prototype.ago=function(){var c={};c[this._dateElement]=this*-1;return Date.now().add(c);};(function(){var $D=Date.prototype,$N=Number.prototype;var dx=("sunday monday tuesday wednesday thursday friday saturday").split(/\s/),mx=("january february march april may june july august september october november december").split(/\s/),px=("Millisecond Second Minute Hour Day Week Month Year").split(/\s/),de;var df=function(n){return function(){if(this._is){this._is=false;return this.getDay()==n;}
return this.moveToDayOfWeek(n,this._orient);};};for(var i=0;i<dx.length;i++){$D[dx[i]]=$D[dx[i].substring(0,3)]=df(i);}
var mf=function(n){return function(){if(this._is){this._is=false;return this.getMonth()===n;}
return this.moveToMonth(n,this._orient);};};for(var j=0;j<mx.length;j++){$D[mx[j]]=$D[mx[j].substring(0,3)]=mf(j);}
var ef=function(j){return function(){if(j.substring(j.length-1)!="s"){j+="s";}
return this["add"+j](this._orient);};};var nf=function(n){return function(){this._dateElement=n;return this;};};for(var k=0;k<px.length;k++){de=px[k].toLowerCase();$D[de]=$D[de+"s"]=ef(px[k]);$N[de]=$N[de+"s"]=nf(de);}}());Date.prototype.toJSONString=function(){return this.toString("yyyy-MM-ddThh:mm:ssZ");};Date.prototype.toShortDateString=function(){return this.toString(Date.CultureInfo.formatPatterns.shortDatePattern);};Date.prototype.toLongDateString=function(){return this.toString(Date.CultureInfo.formatPatterns.longDatePattern);};Date.prototype.toShortTimeString=function(){return this.toString(Date.CultureInfo.formatPatterns.shortTimePattern);};Date.prototype.toLongTimeString=function(){return this.toString(Date.CultureInfo.formatPatterns.longTimePattern);};Date.prototype.getOrdinal=function(){switch(this.getDate()){case 1:case 21:case 31:return"st";case 2:case 22:return"nd";case 3:case 23:return"rd";default:return"th";}};
(function(){Date.Parsing={Exception:function(s){this.message="Parse error at '"+s.substring(0,10)+" ...'";}};var $P=Date.Parsing;var _=$P.Operators={rtoken:function(r){return function(s){var mx=s.match(r);if(mx){return([mx[0],s.substring(mx[0].length)]);}else{throw new $P.Exception(s);}};},token:function(s){return function(s){return _.rtoken(new RegExp("^\s*"+s+"\s*"))(s);};},stoken:function(s){return _.rtoken(new RegExp("^"+s));},until:function(p){return function(s){var qx=[],rx=null;while(s.length){try{rx=p.call(this,s);}catch(e){qx.push(rx[0]);s=rx[1];continue;}
break;}
return[qx,s];};},many:function(p){return function(s){var rx=[],r=null;while(s.length){try{r=p.call(this,s);}catch(e){return[rx,s];}
rx.push(r[0]);s=r[1];}
return[rx,s];};},optional:function(p){return function(s){var r=null;try{r=p.call(this,s);}catch(e){return[null,s];}
return[r[0],r[1]];};},not:function(p){return function(s){try{p.call(this,s);}catch(e){return[null,s];}
throw new $P.Exception(s);};},ignore:function(p){return p?function(s){var r=null;r=p.call(this,s);return[null,r[1]];}:null;},product:function(){var px=arguments[0],qx=Array.prototype.slice.call(arguments,1),rx=[];for(var i=0;i<px.length;i++){rx.push(_.each(px[i],qx));}
return rx;},cache:function(rule){var cache={},r=null;return function(s){try{r=cache[s]=(cache[s]||rule.call(this,s));}catch(e){r=cache[s]=e;}
if(r instanceof $P.Exception){throw r;}else{return r;}};},any:function(){var px=arguments;return function(s){var r=null;for(var i=0;i<px.length;i++){if(px[i]==null){continue;}
try{r=(px[i].call(this,s));}catch(e){r=null;}
if(r){return r;}}
throw new $P.Exception(s);};},each:function(){var px=arguments;return function(s){var rx=[],r=null;for(var i=0;i<px.length;i++){if(px[i]==null){continue;}
try{r=(px[i].call(this,s));}catch(e){throw new $P.Exception(s);}
rx.push(r[0]);s=r[1];}
return[rx,s];};},all:function(){var px=arguments,_=_;return _.each(_.optional(px));},sequence:function(px,d,c){d=d||_.rtoken(/^\s*/);c=c||null;if(px.length==1){return px[0];}
return function(s){var r=null,q=null;var rx=[];for(var i=0;i<px.length;i++){try{r=px[i].call(this,s);}catch(e){break;}
rx.push(r[0]);try{q=d.call(this,r[1]);}catch(ex){q=null;break;}
s=q[1];}
if(!r){throw new $P.Exception(s);}
if(q){throw new $P.Exception(q[1]);}
if(c){try{r=c.call(this,r[1]);}catch(ey){throw new $P.Exception(r[1]);}}
return[rx,(r?r[1]:s)];};},between:function(d1,p,d2){d2=d2||d1;var _fn=_.each(_.ignore(d1),p,_.ignore(d2));return function(s){var rx=_fn.call(this,s);return[[rx[0][0],r[0][2]],rx[1]];};},list:function(p,d,c){d=d||_.rtoken(/^\s*/);c=c||null;return(p instanceof Array?_.each(_.product(p.slice(0,-1),_.ignore(d)),p.slice(-1),_.ignore(c)):_.each(_.many(_.each(p,_.ignore(d))),px,_.ignore(c)));},set:function(px,d,c){d=d||_.rtoken(/^\s*/);c=c||null;return function(s){var r=null,p=null,q=null,rx=null,best=[[],s],last=false;for(var i=0;i<px.length;i++){q=null;p=null;r=null;last=(px.length==1);try{r=px[i].call(this,s);}catch(e){continue;}
rx=[[r[0]],r[1]];if(r[1].length>0&&!last){try{q=d.call(this,r[1]);}catch(ex){last=true;}}else{last=true;}
if(!last&&q[1].length===0){last=true;}
if(!last){var qx=[];for(var j=0;j<px.length;j++){if(i!=j){qx.push(px[j]);}}
p=_.set(qx,d).call(this,q[1]);if(p[0].length>0){rx[0]=rx[0].concat(p[0]);rx[1]=p[1];}}
if(rx[1].length<best[1].length){best=rx;}
if(best[1].length===0){break;}}
if(best[0].length===0){return best;}
if(c){try{q=c.call(this,best[1]);}catch(ey){throw new $P.Exception(best[1]);}
best[1]=q[1];}
return best;};},forward:function(gr,fname){return function(s){return gr[fname].call(this,s);};},replace:function(rule,repl){return function(s){var r=rule.call(this,s);return[repl,r[1]];};},process:function(rule,fn){return function(s){var r=rule.call(this,s);return[fn.call(this,r[0]),r[1]];};},min:function(min,rule){return function(s){var rx=rule.call(this,s);if(rx[0].length<min){throw new $P.Exception(s);}
return rx;};}};var _generator=function(op){return function(){var args=null,rx=[];if(arguments.length>1){args=Array.prototype.slice.call(arguments);}else if(arguments[0]instanceof Array){args=arguments[0];}
if(args){for(var i=0,px=args.shift();i<px.length;i++){args.unshift(px[i]);rx.push(op.apply(null,args));args.shift();return rx;}}else{return op.apply(null,arguments);}};};var gx="optional not ignore cache".split(/\s/);for(var i=0;i<gx.length;i++){_[gx[i]]=_generator(_[gx[i]]);}
var _vector=function(op){return function(){if(arguments[0]instanceof Array){return op.apply(null,arguments[0]);}else{return op.apply(null,arguments);}};};var vx="each any all".split(/\s/);for(var j=0;j<vx.length;j++){_[vx[j]]=_vector(_[vx[j]]);}}());(function(){var flattenAndCompact=function(ax){var rx=[];for(var i=0;i<ax.length;i++){if(ax[i]instanceof Array){rx=rx.concat(flattenAndCompact(ax[i]));}else{if(ax[i]){rx.push(ax[i]);}}}
return rx;};Date.Grammar={};Date.Translator={hour:function(s){return function(){this.hour=Number(s);};},minute:function(s){return function(){this.minute=Number(s);};},second:function(s){return function(){this.second=Number(s);};},meridian:function(s){return function(){this.meridian=s.slice(0,1).toLowerCase();};},timezone:function(s){return function(){var n=s.replace(/[^\d\+\-]/g,"");if(n.length){this.timezoneOffset=Number(n);}else{this.timezone=s.toLowerCase();}};},day:function(x){var s=x[0];return function(){this.day=Number(s.match(/\d+/)[0]);};},month:function(s){return function(){this.month=((s.length==3)?Date.getMonthNumberFromName(s):(Number(s)-1));};},year:function(s){return function(){var n=Number(s);this.year=((s.length>2)?n:(n+(((n+2000)<Date.CultureInfo.twoDigitYearMax)?2000:1900)));};},rday:function(s){return function(){switch(s){case"yesterday":this.days=-1;break;case"tomorrow":this.days=1;break;case"today":this.days=0;break;case"now":this.days=0;this.now=true;break;}};},finishExact:function(x){x=(x instanceof Array)?x:[x];var now=new Date();this.year=now.getFullYear();this.month=now.getMonth();this.day=1;this.hour=0;this.minute=0;this.second=0;for(var i=0;i<x.length;i++){if(x[i]){x[i].call(this);}}
this.hour=(this.meridian=="p"&&this.hour<13)?this.hour+12:this.hour;if(this.day>Date.getDaysInMonth(this.year,this.month)){throw new RangeError(this.day+" is not a valid value for days.");}
var r=new Date(this.year,this.month,this.day,this.hour,this.minute,this.second);if(this.timezone){r.set({timezone:this.timezone});}else if(this.timezoneOffset){r.set({timezoneOffset:this.timezoneOffset});}
return r;},finish:function(x){x=(x instanceof Array)?flattenAndCompact(x):[x];if(x.length===0){return null;}
for(var i=0;i<x.length;i++){if(typeof x[i]=="function"){x[i].call(this);}}
if(this.now){return new Date();}
var today=Date.today();var method=null;var expression=!!(this.days!=null||this.orient||this.operator);if(expression){var gap,mod,orient;orient=((this.orient=="past"||this.operator=="subtract")?-1:1);if(this.weekday){this.unit="day";gap=(Date.getDayNumberFromName(this.weekday)-today.getDay());mod=7;this.days=gap?((gap+(orient*mod))%mod):(orient*mod);}
if(this.month){this.unit="month";gap=(this.month-today.getMonth());mod=12;this.months=gap?((gap+(orient*mod))%mod):(orient*mod);this.month=null;}
if(!this.unit){this.unit="day";}
if(this[this.unit+"s"]==null||this.operator!=null){if(!this.value){this.value=1;}
if(this.unit=="week"){this.unit="day";this.value=this.value*7;}
this[this.unit+"s"]=this.value*orient;}
return today.add(this);}else{if(this.meridian&&this.hour){this.hour=(this.hour<13&&this.meridian=="p")?this.hour+12:this.hour;}
if(this.weekday&&!this.day){this.day=(today.addDays((Date.getDayNumberFromName(this.weekday)-today.getDay()))).getDate();}
if(this.month&&!this.day){this.day=1;}
return today.set(this);}}};var _=Date.Parsing.Operators,g=Date.Grammar,t=Date.Translator,_fn;g.datePartDelimiter=_.rtoken(/^([\s\-\.\,\/\x27]+)/);g.timePartDelimiter=_.stoken(":");g.whiteSpace=_.rtoken(/^\s*/);g.generalDelimiter=_.rtoken(/^(([\s\,]|at|on)+)/);var _C={};g.ctoken=function(keys){var fn=_C[keys];if(!fn){var c=Date.CultureInfo.regexPatterns;var kx=keys.split(/\s+/),px=[];for(var i=0;i<kx.length;i++){px.push(_.replace(_.rtoken(c[kx[i]]),kx[i]));}
fn=_C[keys]=_.any.apply(null,px);}
return fn;};g.ctoken2=function(key){return _.rtoken(Date.CultureInfo.regexPatterns[key]);};g.h=_.cache(_.process(_.rtoken(/^(0[0-9]|1[0-2]|[1-9])/),t.hour));g.hh=_.cache(_.process(_.rtoken(/^(0[0-9]|1[0-2])/),t.hour));g.H=_.cache(_.process(_.rtoken(/^([0-1][0-9]|2[0-3]|[0-9])/),t.hour));g.HH=_.cache(_.process(_.rtoken(/^([0-1][0-9]|2[0-3])/),t.hour));g.m=_.cache(_.process(_.rtoken(/^([0-5][0-9]|[0-9])/),t.minute));g.mm=_.cache(_.process(_.rtoken(/^[0-5][0-9]/),t.minute));g.s=_.cache(_.process(_.rtoken(/^([0-5][0-9]|[0-9])/),t.second));g.ss=_.cache(_.process(_.rtoken(/^[0-5][0-9]/),t.second));g.hms=_.cache(_.sequence([g.H,g.mm,g.ss],g.timePartDelimiter));g.t=_.cache(_.process(g.ctoken2("shortMeridian"),t.meridian));g.tt=_.cache(_.process(g.ctoken2("longMeridian"),t.meridian));g.z=_.cache(_.process(_.rtoken(/^(\+|\-)?\s*\d\d\d\d?/),t.timezone));g.zz=_.cache(_.process(_.rtoken(/^(\+|\-)\s*\d\d\d\d/),t.timezone));g.zzz=_.cache(_.process(g.ctoken2("timezone"),t.timezone));g.timeSuffix=_.each(_.ignore(g.whiteSpace),_.set([g.tt,g.zzz]));g.time=_.each(_.optional(_.ignore(_.stoken("T"))),g.hms,g.timeSuffix);g.d=_.cache(_.process(_.each(_.rtoken(/^([0-2]\d|3[0-1]|\d)/),_.optional(g.ctoken2("ordinalSuffix"))),t.day));g.dd=_.cache(_.process(_.each(_.rtoken(/^([0-2]\d|3[0-1])/),_.optional(g.ctoken2("ordinalSuffix"))),t.day));g.ddd=g.dddd=_.cache(_.process(g.ctoken("sun mon tue wed thu fri sat"),function(s){return function(){this.weekday=s;};}));g.M=_.cache(_.process(_.rtoken(/^(1[0-2]|0\d|\d)/),t.month));g.MM=_.cache(_.process(_.rtoken(/^(1[0-2]|0\d)/),t.month));g.MMM=g.MMMM=_.cache(_.process(g.ctoken("jan feb mar apr may jun jul aug sep oct nov dec"),t.month));g.y=_.cache(_.process(_.rtoken(/^(\d\d?)/),t.year));g.yy=_.cache(_.process(_.rtoken(/^(\d\d)/),t.year));g.yyy=_.cache(_.process(_.rtoken(/^(\d\d?\d?\d?)/),t.year));g.yyyy=_.cache(_.process(_.rtoken(/^(\d\d\d\d)/),t.year));_fn=function(){return _.each(_.any.apply(null,arguments),_.not(g.ctoken2("timeContext")));};g.day=_fn(g.d,g.dd);g.month=_fn(g.M,g.MMM);g.year=_fn(g.yyyy,g.yy);g.orientation=_.process(g.ctoken("past future"),function(s){return function(){this.orient=s;};});g.operator=_.process(g.ctoken("add subtract"),function(s){return function(){this.operator=s;};});g.rday=_.process(g.ctoken("yesterday tomorrow today now"),t.rday);g.unit=_.process(g.ctoken("minute hour day week month year"),function(s){return function(){this.unit=s;};});g.value=_.process(_.rtoken(/^\d\d?(st|nd|rd|th)?/),function(s){return function(){this.value=s.replace(/\D/g,"");};});g.expression=_.set([g.rday,g.operator,g.value,g.unit,g.orientation,g.ddd,g.MMM]);_fn=function(){return _.set(arguments,g.datePartDelimiter);};g.mdy=_fn(g.ddd,g.month,g.day,g.year);g.ymd=_fn(g.ddd,g.year,g.month,g.day);g.dmy=_fn(g.ddd,g.day,g.month,g.year);g.date=function(s){return((g[Date.CultureInfo.dateElementOrder]||g.mdy).call(this,s));};g.format=_.process(_.many(_.any(_.process(_.rtoken(/^(dd?d?d?|MM?M?M?|yy?y?y?|hh?|HH?|mm?|ss?|tt?|zz?z?)/),function(fmt){if(g[fmt]){return g[fmt];}else{throw Date.Parsing.Exception(fmt);}}),_.process(_.rtoken(/^[^dMyhHmstz]+/),function(s){return _.ignore(_.stoken(s));}))),function(rules){return _.process(_.each.apply(null,rules),t.finishExact);});var _F={};var _get=function(f){return _F[f]=(_F[f]||g.format(f)[0]);};g.formats=function(fx){if(fx instanceof Array){var rx=[];for(var i=0;i<fx.length;i++){rx.push(_get(fx[i]));}
return _.any.apply(null,rx);}else{return _get(fx);}};g._formats=g.formats(["yyyy-MM-ddTHH:mm:ss","ddd, MMM dd, yyyy H:mm:ss tt","ddd MMM d yyyy HH:mm:ss zzz","d"]);g._start=_.process(_.set([g.date,g.time,g.expression],g.generalDelimiter,g.whiteSpace),t.finish);g.start=function(s){try{var r=g._formats.call({},s);if(r[1].length===0){return r;}}catch(e){}
return g._start.call({},s);};}());Date._parse=Date.parse;Date.parse=function(s){var r=null;if(!s){return null;}
try{r=Date.Grammar.start.call({},s);}catch(e){return null;}
return((r[1].length===0)?r[0]:null);};Date.getParseFunction=function(fx){var fn=Date.Grammar.formats(fx);return function(s){var r=null;try{r=fn.call({},s);}catch(e){return null;}
return((r[1].length===0)?r[0]:null);};};Date.parseExact=function(s,fx){return Date.getParseFunction(fx)(s);};
js/wfpopover.1722265817.js000064400000054711150755146450010660 0ustar00/* ========================================================================
 * Bootstrap: tooltip.js v3.4.1 and wfpopover.js v3.4.1 (adapted to WF prefix)
 * https://getbootstrap.com/docs/3.4/javascript/#tooltip
 * Inspired by the original jQuery.tipsy by Jason Frame
 * ========================================================================
 * Copyright 2011-2019 Twitter, Inc.
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * ======================================================================== */

+function ($) {
	'use strict';

	var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']

	var uriAttrs = [
		'background',
		'cite',
		'href',
		'itemtype',
		'longdesc',
		'poster',
		'src',
		'xlink:href'
	]

	var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i

	var DefaultWhitelist = {
		// Global attributes allowed on any supplied element below.
		'*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
		a: ['target', 'href', 'title', 'rel'],
		area: [],
		b: [],
		br: [],
		col: [],
		code: [],
		div: [],
		em: [],
		hr: [],
		h1: [],
		h2: [],
		h3: [],
		h4: [],
		h5: [],
		h6: [],
		i: [],
		img: ['src', 'alt', 'title', 'width', 'height'],
		li: [],
		ol: [],
		p: [],
		pre: [],
		s: [],
		small: [],
		span: [],
		sub: [],
		sup: [],
		strong: [],
		u: [],
		ul: []
	}

	/**
	 * A pattern that recognizes a commonly useful subset of URLs that are safe.
	 *
	 * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
	 */
	var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi

	/**
	 * A pattern that matches safe data URLs. Only matches image, video and audio types.
	 *
	 * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
	 */
	var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i

	function allowedAttribute(attr, allowedAttributeList) {
		var attrName = attr.nodeName.toLowerCase()

		if ($.inArray(attrName, allowedAttributeList) !== -1) {
			if ($.inArray(attrName, uriAttrs) !== -1) {
				return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))
			}

			return true
		}

		var regExp = $(allowedAttributeList).filter(function (index, value) {
			return value instanceof RegExp
		})

		// Check if a regular expression validates the attribute.
		for (var i = 0, l = regExp.length; i < l; i++) {
			if (attrName.match(regExp[i])) {
				return true
			}
		}

		return false
	}

	function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {
		if (unsafeHtml.length === 0) {
			return unsafeHtml
		}

		if (sanitizeFn && typeof sanitizeFn === 'function') {
			return sanitizeFn(unsafeHtml)
		}

		// IE 8 and below don't support createHTMLDocument
		if (!document.implementation || !document.implementation.createHTMLDocument) {
			return unsafeHtml
		}

		var createdDocument = document.implementation.createHTMLDocument('sanitization')
		createdDocument.body.innerHTML = unsafeHtml

		var whitelistKeys = $.map(whiteList, function (el, i) { return i })
		var elements = $(createdDocument.body).find('*')

		for (var i = 0, len = elements.length; i < len; i++) {
			var el = elements[i]
			var elName = el.nodeName.toLowerCase()

			if ($.inArray(elName, whitelistKeys) === -1) {
				el.parentNode.removeChild(el)

				continue
			}

			var attributeList = $.map(el.attributes, function (el) { return el })
			var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])

			for (var j = 0, len2 = attributeList.length; j < len2; j++) {
				if (!allowedAttribute(attributeList[j], whitelistedAttributes)) {
					el.removeAttribute(attributeList[j].nodeName)
				}
			}
		}

		return createdDocument.body.innerHTML
	}

	// TOOLTIP PUBLIC CLASS DEFINITION
	// ===============================

	var WFTooltip = function (element, options) {
		this.type       = null
		this.options    = null
		this.enabled    = null
		this.timeout    = null
		this.hoverState = null
		this.$element   = null
		this.inState    = null

		this.init('wftooltip', element, options)
	}

	WFTooltip.VERSION  = '3.4.1'

	WFTooltip.TRANSITION_DURATION = 150

	WFTooltip.DEFAULTS = {
		animation: true,
		placement: 'top',
		selector: false,
		template: '<div class="wftooltip" role="wftooltip"><div class="wftooltip-arrow"></div><div class="wftooltip-inner"></div></div>',
		trigger: 'hover focus',
		title: '',
		delay: 0,
		html: false,
		container: false,
		viewport: {
			selector: 'body',
			padding: 0
		},
		sanitize : true,
		sanitizeFn : null,
		whiteList : DefaultWhitelist
	}

	WFTooltip.prototype.init = function (type, element, options) {
		this.enabled   = true
		this.type      = type
		this.$element  = $(element)
		this.options   = this.getOptions(options)
		this.$viewport = this.options.viewport && $(document).find($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))
		this.inState   = { click: false, hover: false, focus: false }

		if (this.$element[0] instanceof document.constructor && !this.options.selector) {
			throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')
		}

		var triggers = this.options.trigger.split(' ')

		for (var i = triggers.length; i--;) {
			var trigger = triggers[i]

			if (trigger == 'click') {
				this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
			} else if (trigger != 'manual') {
				var eventIn  = trigger == 'hover' ? 'mouseenter' : 'focusin'
				var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'

				this.$element.on(eventIn  + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
				this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
			}
		}

		this.options.selector ?
			(this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
			this.fixTitle()
	}

	WFTooltip.prototype.getDefaults = function () {
		return WFTooltip.DEFAULTS
	}

	WFTooltip.prototype.getOptions = function (options) {
		var dataAttributes = this.$element.data()

		for (var dataAttr in dataAttributes) {
			if (dataAttributes.hasOwnProperty(dataAttr) && $.inArray(dataAttr, DISALLOWED_ATTRIBUTES) !== -1) {
				delete dataAttributes[dataAttr]
			}
		}

		options = $.extend({}, this.getDefaults(), dataAttributes, options)

		if (options.delay && typeof options.delay == 'number') {
			options.delay = {
				show: options.delay,
				hide: options.delay
			}
		}

		if (options.sanitize) {
			options.template = sanitizeHtml(options.template, options.whiteList, options.sanitizeFn)
		}

		return options
	}

	WFTooltip.prototype.getDelegateOptions = function () {
		var options  = {}
		var defaults = this.getDefaults()

		this._options && $.each(this._options, function (key, value) {
			if (defaults[key] != value) options[key] = value
		})

		return options
	}

	WFTooltip.prototype.enter = function (obj) {
		var self = obj instanceof this.constructor ?
			obj : $(obj.currentTarget).data('bs.' + this.type)

		if (!self) {
			self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
			$(obj.currentTarget).data('bs.' + this.type, self)
		}

		if (obj instanceof $.Event) {
			self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true
		}

		if (self.tip().hasClass('wf-in') || self.hoverState == 'wf-in') {
			self.hoverState = 'wf-in'
			return
		}

		clearTimeout(self.timeout)

		self.hoverState = 'wf-in'

		if (!self.options.delay || !self.options.delay.show) return self.show()

		self.timeout = setTimeout(function () {
			if (self.hoverState == 'wf-in') self.show()
		}, self.options.delay.show)
	}

	WFTooltip.prototype.isInStateTrue = function () {
		for (var key in this.inState) {
			if (this.inState[key]) return true
		}

		return false
	}

	WFTooltip.prototype.leave = function (obj) {
		var self = obj instanceof this.constructor ?
			obj : $(obj.currentTarget).data('bs.' + this.type)

		if (!self) {
			self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
			$(obj.currentTarget).data('bs.' + this.type, self)
		}

		if (obj instanceof $.Event) {
			self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false
		}

		if (self.isInStateTrue()) return

		clearTimeout(self.timeout)

		self.hoverState = 'wf-out'

		if (!self.options.delay || !self.options.delay.hide) return self.hide()

		self.timeout = setTimeout(function () {
			if (self.hoverState == 'wf-out') self.hide()
		}, self.options.delay.hide)
	}

	WFTooltip.prototype.show = function () {
		var e = $.Event('show.bs.' + this.type)

		if (this.hasContent() && this.enabled) {
			this.$element.trigger(e)

			var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])
			if (e.isDefaultPrevented() || !inDom) return
			var that = this

			var $tip = this.tip()

			var tipId = this.getUID(this.type)

			this.setContent()
			$tip.attr('id', tipId)
			this.$element.attr('aria-describedby', tipId)

			if (this.options.animation) $tip.addClass('wf-fade')

			var placement = typeof this.options.placement == 'function' ?
				this.options.placement.call(this, $tip[0], this.$element[0]) :
				this.options.placement

			var autoToken = /\s?auto?\s?/i
			var autoPlace = autoToken.test(placement)
			if (autoPlace) placement = placement.replace(autoToken, '') || 'wf-top'

			$tip
				.detach()
				.css({ top: 0, left: 0, display: 'block' })
				.addClass(placement)
				.data('bs.' + this.type, this)

			this.options.container ? $tip.appendTo($(document).find(this.options.container)) : $tip.insertAfter(this.$element)
			this.$element.trigger('inserted.bs.' + this.type)

			var pos          = this.getPosition()
			var actualWidth  = $tip[0].offsetWidth
			var actualHeight = $tip[0].offsetHeight

			if (autoPlace) {
				var orgPlacement = placement
				var viewportDim = this.getPosition(this.$viewport)

				placement = placement == 'wf-bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'wf-top'    :
					placement == 'wf-top'    && pos.top    - actualHeight < viewportDim.top    ? 'wf-bottom' :
						placement == 'wf-right'  && pos.right  + actualWidth  > viewportDim.width  ? 'wf-left'   :
							placement == 'wf-left'   && pos.left   - actualWidth  < viewportDim.left   ? 'wf-right'  :
								placement

				$tip
					.removeClass(orgPlacement)
					.addClass(placement)
			}

			var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)

			this.applyPlacement(calculatedOffset, placement)

			var complete = function () {
				var prevHoverState = that.hoverState
				that.$element.trigger('shown.bs.' + that.type)
				that.hoverState = null

				if (prevHoverState == 'wf-out') that.leave(that)
			}

			$.support.transition && this.$tip.hasClass('wf-fade') ?
				$tip
					.one('bsTransitionEnd', complete)
					.emulateTransitionEnd(WFTooltip.TRANSITION_DURATION) :
				complete()
		}
	}

	WFTooltip.prototype.applyPlacement = function (offset, placement) {
		var $tip   = this.tip()
		var width  = $tip[0].offsetWidth
		var height = $tip[0].offsetHeight

		// manually read margins because getBoundingClientRect includes difference
		var marginTop = parseInt($tip.css('margin-top'), 10)
		var marginLeft = parseInt($tip.css('margin-left'), 10)

		// we must check for NaN for ie 8/9
		if (isNaN(marginTop))  marginTop  = 0
		if (isNaN(marginLeft)) marginLeft = 0

		offset.top  += marginTop
		offset.left += marginLeft

		// $.fn.offset doesn't round pixel values
		// so we use setOffset directly with our own function B-0
		$.offset.setOffset($tip[0], $.extend({
			using: function (props) {
				$tip.css({
					top: Math.round(props.top),
					left: Math.round(props.left)
				})
			}
		}, offset), 0)

		$tip.addClass('wf-in')

		// check to see if placing tip in new offset caused the tip to resize itself
		var actualWidth  = $tip[0].offsetWidth
		var actualHeight = $tip[0].offsetHeight

		if (placement == 'wf-top' && actualHeight != height) {
			offset.top = offset.top + height - actualHeight
		}

		var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)

		if (delta.left) offset.left += delta.left
		else offset.top += delta.top

		var isVertical          = /top|bottom/.test(placement)
		var arrowDelta          = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight
		var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'

		$tip.offset(offset)
		this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)
	}

	WFTooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {
		this.arrow()
			.css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')
			.css(isVertical ? 'top' : 'left', '')
	}

	WFTooltip.prototype.setContent = function () {
		var $tip  = this.tip()
		var title = this.getTitle()

		if (this.options.html) {
			if (this.options.sanitize) {
				title = sanitizeHtml(title, this.options.whiteList, this.options.sanitizeFn)
			}

			$tip.find('.wftooltip-inner').html(title)
		} else {
			$tip.find('.wftooltip-inner').text(title)
		}

		$tip.removeClass('wf-fade wf-in wf-top wf-bottom wf-left wf-right')
	}

	WFTooltip.prototype.hide = function (callback) {
		var that = this
		var $tip = $(this.$tip)
		var e    = $.Event('hide.bs.' + this.type)

		function complete() {
			if (that.hoverState != 'in') $tip.detach()
			if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.
				that.$element
					.removeAttr('aria-describedby')
					.trigger('hidden.bs.' + that.type)
			}
			callback && callback()
		}

		this.$element.trigger(e)

		if (e.isDefaultPrevented()) return

		$tip.removeClass('wf-in')

		$.support.transition && $tip.hasClass('wf-fade') ?
			$tip
				.one('bsTransitionEnd', complete)
				.emulateTransitionEnd(WFTooltip.TRANSITION_DURATION) :
			complete()

		this.hoverState = null

		return this
	}

	WFTooltip.prototype.fixTitle = function () {
		var $e = this.$element
		if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {
			$e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
		}
	}

	WFTooltip.prototype.hasContent = function () {
		return this.getTitle()
	}

	WFTooltip.prototype.getPosition = function ($element) {
		$element   = $element || this.$element

		var el     = $element[0]
		var isBody = el.tagName == 'BODY'

		var elRect    = el.getBoundingClientRect()
		if (elRect.width == null) {
			// width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093
			elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })
		}
		var isSvg = window.SVGElement && el instanceof window.SVGElement
		// Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.
		// See https://github.com/twbs/bootstrap/issues/20280
		var elOffset  = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())
		var scroll    = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }
		var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null

		return $.extend({}, elRect, scroll, outerDims, elOffset)
	}

	WFTooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
		return placement == 'wf-bottom' ? { top: pos.top + pos.height,   left: pos.left + pos.width / 2 - actualWidth / 2 } :
			placement == 'wf-top'    ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :
				placement == 'wf-left'   ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :
					/* placement == 'wf-right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }

	}

	WFTooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {
		var delta = { top: 0, left: 0 }
		if (!this.$viewport) return delta

		var viewportPadding = this.options.viewport && this.options.viewport.padding || 0
		var viewportDimensions = this.getPosition(this.$viewport)

		if (/right|left/.test(placement)) {
			var topEdgeOffset    = pos.top - viewportPadding - viewportDimensions.scroll
			var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight
			if (topEdgeOffset < viewportDimensions.top) { // top overflow
				delta.top = viewportDimensions.top - topEdgeOffset
			} else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow
				delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset
			}
		} else {
			var leftEdgeOffset  = pos.left - viewportPadding
			var rightEdgeOffset = pos.left + viewportPadding + actualWidth
			if (leftEdgeOffset < viewportDimensions.left) { // left overflow
				delta.left = viewportDimensions.left - leftEdgeOffset
			} else if (rightEdgeOffset > viewportDimensions.right) { // right overflow
				delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset
			}
		}

		return delta
	}

	WFTooltip.prototype.getTitle = function () {
		var title
		var $e = this.$element
		var o  = this.options

		title = $e.attr('data-original-title')
			|| (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)

		return title
	}

	WFTooltip.prototype.getUID = function (prefix) {
		do prefix += ~~(Math.random() * 1000000)
		while (document.getElementById(prefix))
		return prefix
	}

	WFTooltip.prototype.tip = function () {
		if (!this.$tip) {
			this.$tip = $(this.options.template)
			if (this.$tip.length != 1) {
				throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')
			}
		}
		return this.$tip
	}

	WFTooltip.prototype.arrow = function () {
		return (this.$arrow = this.$arrow || this.tip().find('.wftooltip-arrow'))
	}

	WFTooltip.prototype.enable = function () {
		this.enabled = true
	}

	WFTooltip.prototype.disable = function () {
		this.enabled = false
	}

	WFTooltip.prototype.toggleEnabled = function () {
		this.enabled = !this.enabled
	}

	WFTooltip.prototype.toggle = function (e) {
		var self = this
		if (e) {
			self = $(e.currentTarget).data('bs.' + this.type)
			if (!self) {
				self = new this.constructor(e.currentTarget, this.getDelegateOptions())
				$(e.currentTarget).data('bs.' + this.type, self)
			}
		}

		if (e) {
			self.inState.click = !self.inState.click
			if (self.isInStateTrue()) self.enter(self)
			else self.leave(self)
		} else {
			self.tip().hasClass('wf-in') ? self.leave(self) : self.enter(self)
		}
	}

	WFTooltip.prototype.destroy = function () {
		var that = this
		clearTimeout(this.timeout)
		this.hide(function () {
			that.$element.off('.' + that.type).removeData('bs.' + that.type)
			if (that.$tip) {
				that.$tip.detach()
			}
			that.$tip = null
			that.$arrow = null
			that.$viewport = null
			that.$element = null
		})
	}

	WFTooltip.prototype.sanitizeHtml = function (unsafeHtml) {
		return sanitizeHtml(unsafeHtml, this.options.whiteList, this.options.sanitizeFn)
	}

	// TOOLTIP PLUGIN DEFINITION
	// =========================

	function WFPlugin(option) {
		return this.each(function () {
			var $this   = $(this)
			var data    = $this.data('bs.wftooltip')
			var options = typeof option == 'object' && option

			if (!data && /destroy|hide/.test(option)) return
			if (!data) $this.data('bs.wftooltip', (data = new WFTooltip(this, options)))
			if (typeof option == 'string') data[option]()
		})
	}

	var old = $.fn.wftooltip

	$.fn.wftooltip             = WFPlugin
	$.fn.wftooltip.Constructor = WFTooltip


	// TOOLTIP NO CONFLICT
	// ===================

	$.fn.wftooltip.noConflict = function () {
		$.fn.wftooltip = old
		return this
	}

	// POPOVER PUBLIC CLASS DEFINITION
	// ===============================

	var WFPopover = function (element, options) {
		this.init('wfpopover', element, options)
	}

	WFPopover.VERSION  = '3.4.1'

	WFPopover.DEFAULTS = $.extend({}, $.fn.wftooltip.Constructor.DEFAULTS, {
		placement: 'wf-right',
		trigger: 'click',
		content: '',
		template: '<div class="wfpopover" role="wftooltip"><div class="wf-arrow"></div><h3 class="wfpopover-title"></h3><div class="wfpopover-content"></div></div>'
	})


	// NOTE: POPOVER EXTENDS wftooltip.js
	// ================================

	WFPopover.prototype = $.extend({}, $.fn.wftooltip.Constructor.prototype)

	WFPopover.prototype.constructor = WFPopover

	WFPopover.prototype.getDefaults = function () {
		return WFPopover.DEFAULTS
	}

	WFPopover.prototype.setContent = function () {
		var $tip    = this.tip()
		var title   = this.getTitle()
		var content = this.getContent()

		if (this.options.html) {
			var typeContent = typeof content

			if (this.options.sanitize) {
				title = this.sanitizeHtml(title)

				if (typeContent === 'string') {
					content = this.sanitizeHtml(content)
				}
			}

			$tip.find('.wfpopover-title').html(title)
			$tip.find('.wfpopover-content').children().detach().end()[
				typeContent === 'string' ? 'html' : 'append'
				](content)
		} else {
			$tip.find('.wfpopover-title').text(title)
			$tip.find('.wfpopover-content').children().detach().end().text(content)
		}

		$tip.removeClass('wf-fade wf-top wf-bottom wf-left wf-right wf-in')

		// IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
		// this manually by checking the contents.
		if (!$tip.find('.wfpopover-title').html()) $tip.find('.wfpopover-title').hide()
	}

	WFPopover.prototype.hasContent = function () {
		return this.getTitle() || this.getContent()
	}

	WFPopover.prototype.getContent = function () {
		var $e = this.$element
		var o  = this.options

		return $e.attr('data-content')
			|| (typeof o.content == 'function' ?
				o.content.call($e[0]) :
				o.content)
	}

	WFPopover.prototype.arrow = function () {
		return (this.$arrow = this.$arrow || this.tip().find('.wf-arrow'))
	}


	// POPOVER PLUGIN DEFINITION
	// =========================

	function WFPlugin(option) {
		return this.each(function () {
			var $this   = $(this)
			var data    = $this.data('bs.wfpopover')
			var options = typeof option == 'object' && option

			if (!data && /destroy|hide/.test(option)) return
			if (!data) $this.data('bs.wfpopover', (data = new WFPopover(this, options)))
			if (typeof option == 'string') data[option]()
		})
	}

	var old = $.fn.wfpopover

	$.fn.wfpopover             = WFPlugin
	$.fn.wfpopover.Constructor = WFPopover


	// POPOVER NO CONFLICT
	// ===================

	$.fn.wfpopover.noConflict = function () {
		$.fn.wfpopover = old
		return this
	}

}(jQuery);
js/wfglobal.1722265817.js000064400000077166150755146450010437 0ustar00(function($) {
	var __, sprintf;

	if (!window['wordfenceExt']) {
		window['wordfenceExt'] = {
			nonce: false,
			loadingCount: 0,
			isSmallScreen: false,
			init: function(){
				this.nonce = WordfenceAdminVars.firstNonce;
				this.isSmallScreen = window.matchMedia("only screen and (max-width: 500px)").matches;
			},
			showLoading: function(){
				this.loadingCount++;
				if (this.loadingCount == 1) {
					jQuery('<div id="wordfenceWorking">' + __('Wordfence is working...') + '</div>').appendTo('body');
				}
			},
			removeLoading: function(){
				this.loadingCount--;
				if(this.loadingCount == 0){
					jQuery('#wordfenceWorking').remove();
				}
			},
			autoUpdateChoice: function(choice){
				this.ajax('wordfence_autoUpdateChoice', {
						choice: choice
					},
					function(res){ jQuery('#wordfenceAutoUpdateChoice').fadeOut(); },
					function(){ jQuery('#wordfenceAutoUpdateChoice').fadeOut(); }
				);
			},
			misconfiguredHowGetIPsChoice : function(choice) {
				this.ajax('wordfence_misconfiguredHowGetIPsChoice', {
						choice: choice
					},
					function(res){ jQuery('#wordfenceMisconfiguredHowGetIPsNotice').fadeOut(); },
					function(){ jQuery('#wordfenceMisconfiguredHowGetIPsNotice').fadeOut(); }
				);
			},
			centralUrlMismatchChoice : function(choice) {
				var payload = {};
				switch (choice) {
					case 'local':
						payload['local'] = true;
						break;
					case 'global':
						payload['force'] = true;
						break;
					case 'dismiss':
						payload['dismiss'] = true;
				}
				this.ajax('wordfence_wfcentral_disconnect', payload,
					function(res) { jQuery('#wordfenceMismatchedCentralUrlNotice').fadeOut(); },
					function() { jQuery('#wordfenceMismatchedCentralUrlNotice').fadeOut(); }
				);
			},
			switchLiveTrafficSecurityOnlyChoice: function(choice) {
				this.ajax('wordfence_switchLiveTrafficSecurityOnlyChoice', {
						choice: choice
					},
					function(res){ jQuery('#switchLiveTrafficSecurityOnlyChoice').fadeOut(); },
					function(){ jQuery('#switchLiveTrafficSecurityOnlyChoice').fadeOut(); }
				);
			},
			dismissAdminNotice: function(nid) {
				this.ajax('wordfence_dismissAdminNotice', {
						id: nid
					},
					function(res){ jQuery('.wf-admin-notice[data-notice-id="' + nid + '"]').fadeOut(); },
					function(){ jQuery('.wf-admin-notice[data-notice-id="' + nid + '"]').fadeOut(); }
				);
			},
			hideNoticeForUser: function(id) {
				this.ajax('wordfence_hideNoticeForUser',
					{
						id: id
					},
					function(res) {
						$("#" + id).fadeOut();
					},
					function() {
					}
				);
			},
			setOption: function(key, value, successCallback, errorCallback) {
				var changes = {};
				changes[key] = value;
				if (typeof errorCallback !== 'function')
					errorCallback = function() {};
				this.ajax('wordfence_saveOptions', {changes: JSON.stringify(changes)}, function(res) {
					if (res.success) {
						typeof successCallback == 'function' && successCallback(res);
					}
					else {
						errorCallback(res);
					}
				}, errorCallback);
			},
			ajax: function(action, data, cb, cbErr, noLoading){
				if(typeof(data) == 'string'){
					if(data.length > 0){
						data += '&';
					}
					data += 'action=' + action + '&nonce=' + this.nonce;
				} else if(typeof(data) == 'object'){
					data['action'] = action;
					data['nonce'] = this.nonce;
				}
				if(! cbErr){
					cbErr = function(){};
				}
				var self = this;
				if(! noLoading){
					this.showLoading();
				}
				jQuery.ajax({
					type: 'POST',
					url: WordfenceAdminVars.ajaxURL,
					dataType: "json",
					data: data,
					success: function(json){
						if(! noLoading){
							self.removeLoading();
						}
						if(json && json.nonce){
							self.nonce = json.nonce;
						}
						cb(json);
					},
					error: function(response){
						if(! noLoading){
							self.removeLoading();
						}
						cbErr(response);
					}
				});
			},
			hashSHA256: function(s) {
				return sjcl.codec.hex.fromBits(sjcl.hash.sha256.hash(s))
			},
			isEmailBlacklisted: function(email) {
				var hash = this.hashSHA256(email);
				for (var i = 0; i < WordfenceAdminVars.alertEmailBlacklist.length; i++) {
					if (hash === WordfenceAdminVars.alertEmailBlacklist[i]) {
						return true;
					}
				}
				return false;
			},
			parseEmails: function(raw) {
				var emails = [];
				if (typeof raw !== 'string') {
					return emails;
				}

				var rawEmails = raw.replace(/\s/g, '').split(',');
				for (var i = 0; i < rawEmails.length; i++) {
					var e = rawEmails[i].toLowerCase();
					//From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address
					if (/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(rawEmails[i]) && !this.isEmailBlacklisted(e)) {
						emails.push(e);
					}
				}
				return emails;
			},
			onboardingProcessEmails: function(emails, subscribe, touppAgreed, callback) {
				var subscribe = !!subscribe;
				var pendingCount = 1 + (touppAgreed ? 1 : 0) + (subscribe ? 1 : 0);
				var failed = false;
				var called = false;
				function complete(response) {
					if (called)
						return;
					if (--pendingCount === 0 || failed) {
						called = true;
						var error = null;
						if (response && typeof response.error == 'string')
							error = response.error;
						callback(!failed, error);
					}
				}
				function onError() {
					failed = true;
					complete();
				}
				wordfenceExt.setOption('alertEmails', emails.join(', '), complete, onError);
				
				if (touppAgreed) {
					this.ajax('wordfence_recordTOUPP', {}, complete, onError);
				}

				if (subscribe) {
					this.ajax('wordfence_mailingSignup', {emails: JSON.stringify(emails)}, complete, onError);
				}
			},
			onboardingInstallLicense: function(license, successCallback, errorCallback) {
				var self = this;
				function performRequest(statusChange, onSuccess, onError) {
					self.ajax(
						'wordfence_installLicense',
						{
							license: license,
							status_change: statusChange
						},
						onSuccess,
						onError
					);
				}
				performRequest(
					false,
					function (res) {
						if (res.success) {
							performRequest(
								true,
								function () {
									typeof successCallback == 'function' && successCallback(res);
								},
								function () {
									errorCallback();
								}
							);
						}
						else {
							typeof errorCallback == 'function' && errorCallback((typeof res.error === 'string') ? res.error : null);
						}
					},
					function () {
						errorCallback();
					}
				);
			}
		};
	}

	__ = window.wfi18n.__;
	sprintf = window.wfi18n.sprintf;

	$(function() {
		wordfenceExt.init();
	});
})(jQuery);

//Stanford Javascript Crypto Library: https://bitwiseshiftleft.github.io/sjcl/
"use strict";var sjcl={cipher:{},hash:{},keyexchange:{},mode:{},misc:{},codec:{},exception:{corrupt:function(f){this.toString=function(){return"CORRUPT: "+this.message};this.message=f},invalid:function(f){this.toString=function(){return"INVALID: "+this.message};this.message=f},bug:function(f){this.toString=function(){return"BUG: "+this.message};this.message=f},notReady:function(f){this.toString=function(){return"NOT READY: "+this.message};this.message=f}}};
(function(f){f.cipher.aes=function(a){this.s[0][0][0]||this.T();var b,c,d,e,g=this.s[0][4],h=this.s[1];b=a.length;var k=1;if(4!==b&&6!==b&&8!==b)throw new f.exception.invalid("invalid aes key size");this.b=[d=a.slice(0),e=[]];for(a=b;a<4*b+28;a++){c=d[a-1];if(0===a%b||8===b&&4===a%b)c=g[c>>>24]<<24^g[c>>16&255]<<16^g[c>>8&255]<<8^g[c&255],0===a%b&&(c=c<<8^c>>>24^k<<24,k=k<<1^283*(k>>7));d[a]=d[a-b]^c}for(b=0;a;b++,a--)c=d[b&3?a:a-4],e[b]=4>=a||4>b?c:h[0][g[c>>>24]]^h[1][g[c>>16&255]]^h[2][g[c>>8&
255]]^h[3][g[c&255]]};f.cipher.aes.prototype={encrypt:function(a){return this.$(a,0)},decrypt:function(a){return this.$(a,1)},s:[[[],[],[],[],[]],[[],[],[],[],[]]],T:function(){var a=this.s[0],b=this.s[1],c=a[4],d=b[4],e,f,h,k=[],l=[],m,n,p,q;for(e=0;0x100>e;e++)l[(k[e]=e<<1^283*(e>>7))^e]=e;for(f=h=0;!c[f];f^=m||1,h=l[h]||1)for(p=h^h<<1^h<<2^h<<3^h<<4,p=p>>8^p&255^99,c[f]=p,d[p]=f,n=k[e=k[m=k[f]]],q=0x1010101*n^0x10001*e^0x101*m^0x1010100*f,n=0x101*k[p]^0x1010100*p,e=0;4>e;e++)a[e][f]=n=n<<24^n>>>8,b[e][p]=
		q=q<<24^q>>>8;for(e=0;5>e;e++)a[e]=a[e].slice(0),b[e]=b[e].slice(0)},$:function(a,b){if(4!==a.length)throw new f.exception.invalid("invalid aes block size");var c=this.b[b],d=a[0]^c[0],e=a[b?3:1]^c[1],g=a[2]^c[2],h=a[b?1:3]^c[3],k,l,m,n=c.length/4-2,p,q=4,t=[0,0,0,0];k=this.s[b];var r=k[0],u=k[1],v=k[2],w=k[3],x=k[4];for(p=0;p<n;p++)k=r[d>>>24]^u[e>>16&255]^v[g>>8&255]^w[h&255]^c[q],l=r[e>>>24]^u[g>>16&255]^v[h>>8&255]^w[d&255]^c[q+1],m=r[g>>>24]^u[h>>16&255]^v[d>>8&255]^w[e&255]^c[q+2],h=r[h>>>24]^
		u[d>>16&255]^v[e>>8&255]^w[g&255]^c[q+3],q+=4,d=k,e=l,g=m;for(p=0;4>p;p++)t[b?3&-p:p]=x[d>>>24]<<24^x[e>>16&255]<<16^x[g>>8&255]<<8^x[h&255]^c[q++],k=d,d=e,e=g,g=h,h=k;return t}};f.bitArray={bitSlice:function(a,b,c){a=f.bitArray.ga(a.slice(b/32),32-(b&31)).slice(1);return void 0===c?a:f.bitArray.clamp(a,c-b)},extract:function(a,b,c){var d=Math.floor(-b-c&31);return((b+c-1^b)&-32?a[b/32|0]<<32-d^a[b/32+1|0]>>>d:a[b/32|0]>>>d)&(1<<c)-1},concat:function(a,b){if(0===a.length||0===b.length)return a.concat(b);
		var c=a[a.length-1],d=f.bitArray.getPartial(c);return 32===d?a.concat(b):f.bitArray.ga(b,d,c|0,a.slice(0,a.length-1))},bitLength:function(a){var b=a.length;return 0===b?0:32*(b-1)+f.bitArray.getPartial(a[b-1])},clamp:function(a,b){if(32*a.length<b)return a;a=a.slice(0,Math.ceil(b/32));var c=a.length;b=b&31;0<c&&b&&(a[c-1]=f.bitArray.partial(b,a[c-1]&2147483648>>b-1,1));return a},partial:function(a,b,c){return 32===a?b:(c?b|0:b<<32-a)+0x10000000000*a},getPartial:function(a){return Math.round(a/0x10000000000)||
		32},equal:function(a,b){if(f.bitArray.bitLength(a)!==f.bitArray.bitLength(b))return!1;var c=0,d;for(d=0;d<a.length;d++)c|=a[d]^b[d];return 0===c},ga:function(a,b,c,d){var e;e=0;for(void 0===d&&(d=[]);32<=b;b-=32)d.push(c),c=0;if(0===b)return d.concat(a);for(e=0;e<a.length;e++)d.push(c|a[e]>>>b),c=a[e]<<32-b;e=a.length?a[a.length-1]:0;a=f.bitArray.getPartial(e);d.push(f.bitArray.partial(b+a&31,32<b+a?c:d.pop(),1));return d},i:function(a,b){return[a[0]^b[0],a[1]^b[1],a[2]^b[2],a[3]^b[3]]},byteswapM:function(a){var b,
		c;for(b=0;b<a.length;++b)c=a[b],a[b]=c>>>24|c>>>8&0xff00|(c&0xff00)<<8|c<<24;return a}};f.codec.utf8String={fromBits:function(a){var b="",c=f.bitArray.bitLength(a),d,e;for(d=0;d<c/8;d++)0===(d&3)&&(e=a[d/4]),b+=String.fromCharCode(e>>>8>>>8>>>8),e<<=8;return decodeURIComponent(escape(b))},toBits:function(a){a=unescape(encodeURIComponent(a));var b=[],c,d=0;for(c=0;c<a.length;c++)d=d<<8|a.charCodeAt(c),3===(c&3)&&(b.push(d),d=0);c&3&&b.push(f.bitArray.partial(8*(c&3),d));return b}};f.codec.hex={fromBits:function(a){var b=
		"",c;for(c=0;c<a.length;c++)b+=((a[c]|0)+0xf00000000000).toString(16).substr(4);return b.substr(0,f.bitArray.bitLength(a)/4)},toBits:function(a){var b,c=[],d;a=a.replace(/\s|0x/g,"");d=a.length;a=a+"00000000";for(b=0;b<a.length;b+=8)c.push(parseInt(a.substr(b,8),16)^0);return f.bitArray.clamp(c,4*d)}};f.codec.base32={D:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",da:"0123456789ABCDEFGHIJKLMNOPQRSTUV",BITS:32,BASE:5,REMAINING:27,fromBits:function(a,b,c){var d=f.codec.base32.BASE,e=f.codec.base32.REMAINING,g=
		"",h=0,k=f.codec.base32.D,l=0,m=f.bitArray.bitLength(a);c&&(k=f.codec.base32.da);for(c=0;g.length*d<m;)g+=k.charAt((l^a[c]>>>h)>>>e),h<d?(l=a[c]<<d-h,h+=e,c++):(l<<=d,h-=d);for(;g.length&7&&!b;)g+="=";return g},toBits:function(a,b){a=a.replace(/\s|=/g,"").toUpperCase();var c=f.codec.base32.BITS,d=f.codec.base32.BASE,e=f.codec.base32.REMAINING,g=[],h,k=0,l=f.codec.base32.D,m=0,n,p="base32";b&&(l=f.codec.base32.da,p="base32hex");for(h=0;h<a.length;h++){n=l.indexOf(a.charAt(h));if(0>n){if(!b)try{return f.codec.base32hex.toBits(a)}catch(q){}throw new f.exception.invalid("this isn't "+
		p+"!");}k>e?(k-=e,g.push(m^n>>>k),m=n<<c-k):(k+=d,m^=n<<c-k)}k&56&&g.push(f.bitArray.partial(k&56,m,1));return g}};f.codec.base32hex={fromBits:function(a,b){return f.codec.base32.fromBits(a,b,1)},toBits:function(a){return f.codec.base32.toBits(a,1)}};f.codec.base64={D:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",fromBits:function(a,b,c){var d="",e=0,g=f.codec.base64.D,h=0,k=f.bitArray.bitLength(a);c&&(g=g.substr(0,62)+"-_");for(c=0;6*d.length<k;)d+=g.charAt((h^a[c]>>>e)>>>26),
		6>e?(h=a[c]<<6-e,e+=26,c++):(h<<=6,e-=6);for(;d.length&3&&!b;)d+="=";return d},toBits:function(a,b){a=a.replace(/\s|=/g,"");var c=[],d,e=0,g=f.codec.base64.D,h=0,k;b&&(g=g.substr(0,62)+"-_");for(d=0;d<a.length;d++){k=g.indexOf(a.charAt(d));if(0>k)throw new f.exception.invalid("this isn't base64!");26<e?(e-=26,c.push(h^k>>>e),h=k<<32-e):(e+=6,h^=k<<32-e)}e&56&&c.push(f.bitArray.partial(e&56,h,1));return c}};f.codec.base64url={fromBits:function(a){return f.codec.base64.fromBits(a,1,1)},toBits:function(a){return f.codec.base64.toBits(a,
		1)}};f.hash.sha256=function(a){this.b[0]||this.T();a?(this.H=a.H.slice(0),this.C=a.C.slice(0),this.l=a.l):this.reset()};f.hash.sha256.hash=function(a){return(new f.hash.sha256).update(a).finalize()};f.hash.sha256.prototype={blockSize:512,reset:function(){this.H=this.ea.slice(0);this.C=[];this.l=0;return this},update:function(a){"string"===typeof a&&(a=f.codec.utf8String.toBits(a));var b,c=this.C=f.bitArray.concat(this.C,a);b=this.l;a=this.l=b+f.bitArray.bitLength(a);if(0x1fffffffffffff<a)throw new f.exception.invalid("Cannot hash more than 2^53 - 1 bits");
		if("undefined"!==typeof Uint32Array){var d=new Uint32Array(c),e=0;for(b=512+b-(512+b&0x1ff);b<=a;b+=512)this.M(d.subarray(16*e,16*(e+1))),e+=1;c.splice(0,16*e)}else for(b=512+b-(512+b&0x1ff);b<=a;b+=512)this.M(c.splice(0,16));return this},finalize:function(){var a,b=this.C,c=this.H,b=f.bitArray.concat(b,[f.bitArray.partial(1,1)]);for(a=b.length+2;a&15;a++)b.push(0);b.push(Math.floor(this.l/0x100000000));for(b.push(this.l|0);b.length;)this.M(b.splice(0,16));this.reset();return c},ea:[],b:[],T:function(){function a(a){return 0x100000000*
		(a-Math.floor(a))|0}for(var b=0,c=2,d,e;64>b;c++){e=!0;for(d=2;d*d<=c;d++)if(0===c%d){e=!1;break}e&&(8>b&&(this.ea[b]=a(Math.pow(c,.5))),this.b[b]=a(Math.pow(c,1/3)),b++)}},M:function(a){var b,c,d,e=this.H,f=this.b,h=e[0],k=e[1],l=e[2],m=e[3],n=e[4],p=e[5],q=e[6],t=e[7];for(b=0;64>b;b++)16>b?c=a[b]:(c=a[b+1&15],d=a[b+14&15],c=a[b&15]=(c>>>7^c>>>18^c>>>3^c<<25^c<<14)+(d>>>17^d>>>19^d>>>10^d<<15^d<<13)+a[b&15]+a[b+9&15]|0),c=c+t+(n>>>6^n>>>11^n>>>25^n<<26^n<<21^n<<7)+(q^n&(p^q))+f[b],t=q,q=p,p=n,n=
		m+c|0,m=l,l=k,k=h,h=c+(k&l^m&(k^l))+(k>>>2^k>>>13^k>>>22^k<<30^k<<19^k<<10)|0;e[0]=e[0]+h|0;e[1]=e[1]+k|0;e[2]=e[2]+l|0;e[3]=e[3]+m|0;e[4]=e[4]+n|0;e[5]=e[5]+p|0;e[6]=e[6]+q|0;e[7]=e[7]+t|0}};f.mode.ccm={name:"ccm",I:[],listenProgress:function(a){f.mode.ccm.I.push(a)},unListenProgress:function(a){a=f.mode.ccm.I.indexOf(a);-1<a&&f.mode.ccm.I.splice(a,1)},ma:function(a){var b=f.mode.ccm.I.slice(),c;for(c=0;c<b.length;c+=1)b[c](a)},encrypt:function(a,b,c,d,e){var g,h=b.slice(0),k=f.bitArray,l=k.bitLength(c)/
		8,m=k.bitLength(h)/8;e=e||64;d=d||[];if(7>l)throw new f.exception.invalid("ccm: iv must be at least 7 bytes");for(g=2;4>g&&m>>>8*g;g++);g<15-l&&(g=15-l);c=k.clamp(c,8*(15-g));b=f.mode.ccm.Z(a,b,c,d,e,g);h=f.mode.ccm.F(a,h,c,b,e,g);return k.concat(h.data,h.tag)},decrypt:function(a,b,c,d,e){e=e||64;d=d||[];var g=f.bitArray,h=g.bitLength(c)/8,k=g.bitLength(b),l=g.clamp(b,k-e),m=g.bitSlice(b,k-e),k=(k-e)/8;if(7>h)throw new f.exception.invalid("ccm: iv must be at least 7 bytes");for(b=2;4>b&&k>>>8*b;b++);
		b<15-h&&(b=15-h);c=g.clamp(c,8*(15-b));l=f.mode.ccm.F(a,l,c,m,e,b);a=f.mode.ccm.Z(a,l.data,c,d,e,b);if(!g.equal(l.tag,a))throw new f.exception.corrupt("ccm: tag doesn't match");return l.data},ua:function(a,b,c,d,e,g){var h=[],k=f.bitArray,l=k.i;d=[k.partial(8,(b.length?64:0)|d-2<<2|g-1)];d=k.concat(d,c);d[3]|=e;d=a.encrypt(d);if(b.length)for(c=k.bitLength(b)/8,65279>=c?h=[k.partial(16,c)]:0xffffffff>=c&&(h=k.concat([k.partial(16,65534)],[c])),h=k.concat(h,b),b=0;b<h.length;b+=4)d=a.encrypt(l(d,h.slice(b,
		b+4).concat([0,0,0])));return d},Z:function(a,b,c,d,e,g){var h=f.bitArray,k=h.i;e/=8;if(e%2||4>e||16<e)throw new f.exception.invalid("ccm: invalid tag length");if(0xffffffff<d.length||0xffffffff<b.length)throw new f.exception.bug("ccm: can't deal with 4GiB or more data");c=f.mode.ccm.ua(a,d,c,e,h.bitLength(b)/8,g);for(d=0;d<b.length;d+=4)c=a.encrypt(k(c,b.slice(d,d+4).concat([0,0,0])));return h.clamp(c,8*e)},F:function(a,b,c,d,e,g){var h,k=f.bitArray;h=k.i;var l=b.length,m=k.bitLength(b),n=l/50,p=
		n;c=k.concat([k.partial(8,g-1)],c).concat([0,0,0]).slice(0,4);d=k.bitSlice(h(d,a.encrypt(c)),0,e);if(!l)return{tag:d,data:[]};for(h=0;h<l;h+=4)h>n&&(f.mode.ccm.ma(h/l),n+=p),c[3]++,e=a.encrypt(c),b[h]^=e[0],b[h+1]^=e[1],b[h+2]^=e[2],b[h+3]^=e[3];return{tag:d,data:k.clamp(b,m)}}};f.mode.ocb2={name:"ocb2",encrypt:function(a,b,c,d,e,g){if(128!==f.bitArray.bitLength(c))throw new f.exception.invalid("ocb iv must be 128 bits");var h,k=f.mode.ocb2.W,l=f.bitArray,m=l.i,n=[0,0,0,0];c=k(a.encrypt(c));var p,
		q=[];d=d||[];e=e||64;for(h=0;h+4<b.length;h+=4)p=b.slice(h,h+4),n=m(n,p),q=q.concat(m(c,a.encrypt(m(c,p)))),c=k(c);p=b.slice(h);b=l.bitLength(p);h=a.encrypt(m(c,[0,0,0,b]));p=l.clamp(m(p.concat([0,0,0]),h),b);n=m(n,m(p.concat([0,0,0]),h));n=a.encrypt(m(n,m(c,k(c))));d.length&&(n=m(n,g?d:f.mode.ocb2.pmac(a,d)));return q.concat(l.concat(p,l.clamp(n,e)))},decrypt:function(a,b,c,d,e,g){if(128!==f.bitArray.bitLength(c))throw new f.exception.invalid("ocb iv must be 128 bits");e=e||64;var h=f.mode.ocb2.W,
		k=f.bitArray,l=k.i,m=[0,0,0,0],n=h(a.encrypt(c)),p,q,t=f.bitArray.bitLength(b)-e,r=[];d=d||[];for(c=0;c+4<t/32;c+=4)p=l(n,a.decrypt(l(n,b.slice(c,c+4)))),m=l(m,p),r=r.concat(p),n=h(n);q=t-32*c;p=a.encrypt(l(n,[0,0,0,q]));p=l(p,k.clamp(b.slice(c),q).concat([0,0,0]));m=l(m,p);m=a.encrypt(l(m,l(n,h(n))));d.length&&(m=l(m,g?d:f.mode.ocb2.pmac(a,d)));if(!k.equal(k.clamp(m,e),k.bitSlice(b,t)))throw new f.exception.corrupt("ocb: tag doesn't match");return r.concat(k.clamp(p,q))},pmac:function(a,b){var c,
		d=f.mode.ocb2.W,e=f.bitArray,g=e.i,h=[0,0,0,0],k=a.encrypt([0,0,0,0]),k=g(k,d(d(k)));for(c=0;c+4<b.length;c+=4)k=d(k),h=g(h,a.encrypt(g(k,b.slice(c,c+4))));c=b.slice(c);128>e.bitLength(c)&&(k=g(k,d(k)),c=e.concat(c,[-2147483648,0,0,0]));h=g(h,c);return a.encrypt(g(d(g(k,d(k))),h))},W:function(a){return[a[0]<<1^a[1]>>>31,a[1]<<1^a[2]>>>31,a[2]<<1^a[3]>>>31,a[3]<<1^135*(a[0]>>>31)]}};f.mode.gcm={name:"gcm",encrypt:function(a,b,c,d,e){var g=b.slice(0);b=f.bitArray;d=d||[];a=f.mode.gcm.F(!0,a,g,d,c,e||
		128);return b.concat(a.data,a.tag)},decrypt:function(a,b,c,d,e){var g=b.slice(0),h=f.bitArray,k=h.bitLength(g);e=e||128;d=d||[];e<=k?(b=h.bitSlice(g,k-e),g=h.bitSlice(g,0,k-e)):(b=g,g=[]);a=f.mode.gcm.F(!1,a,g,d,c,e);if(!h.equal(a.tag,b))throw new f.exception.corrupt("gcm: tag doesn't match");return a.data},ra:function(a,b){var c,d,e,g,h,k=f.bitArray.i;e=[0,0,0,0];g=b.slice(0);for(c=0;128>c;c++){(d=0!==(a[Math.floor(c/32)]&1<<31-c%32))&&(e=k(e,g));h=0!==(g[3]&1);for(d=3;0<d;d--)g[d]=g[d]>>>1|(g[d-
	1]&1)<<31;g[0]>>>=1;h&&(g[0]^=-0x1f000000)}return e},j:function(a,b,c){var d,e=c.length;b=b.slice(0);for(d=0;d<e;d+=4)b[0]^=0xffffffff&c[d],b[1]^=0xffffffff&c[d+1],b[2]^=0xffffffff&c[d+2],b[3]^=0xffffffff&c[d+3],b=f.mode.gcm.ra(b,a);return b},F:function(a,b,c,d,e,g){var h,k,l,m,n,p,q,t,r=f.bitArray;p=c.length;q=r.bitLength(c);t=r.bitLength(d);k=r.bitLength(e);h=b.encrypt([0,0,0,0]);96===k?(e=e.slice(0),e=r.concat(e,[1])):(e=f.mode.gcm.j(h,[0,0,0,0],e),e=f.mode.gcm.j(h,e,[0,0,Math.floor(k/0x100000000),
		k&0xffffffff]));k=f.mode.gcm.j(h,[0,0,0,0],d);n=e.slice(0);d=k.slice(0);a||(d=f.mode.gcm.j(h,k,c));for(m=0;m<p;m+=4)n[3]++,l=b.encrypt(n),c[m]^=l[0],c[m+1]^=l[1],c[m+2]^=l[2],c[m+3]^=l[3];c=r.clamp(c,q);a&&(d=f.mode.gcm.j(h,k,c));a=[Math.floor(t/0x100000000),t&0xffffffff,Math.floor(q/0x100000000),q&0xffffffff];d=f.mode.gcm.j(h,d,a);l=b.encrypt(e);d[0]^=l[0];d[1]^=l[1];d[2]^=l[2];d[3]^=l[3];return{tag:r.bitSlice(d,0,g),data:c}}};f.misc.hmac=function(a,b){this.ca=b=b||f.hash.sha256;var c=[[],[]],d,e=
	b.prototype.blockSize/32;this.A=[new b,new b];a.length>e&&(a=b.hash(a));for(d=0;d<e;d++)c[0][d]=a[d]^909522486,c[1][d]=a[d]^1549556828;this.A[0].update(c[0]);this.A[1].update(c[1]);this.V=new b(this.A[0])};f.misc.hmac.prototype.encrypt=f.misc.hmac.prototype.mac=function(a){if(this.ha)throw new f.exception.invalid("encrypt on already updated hmac called!");this.update(a);return this.digest(a)};f.misc.hmac.prototype.reset=function(){this.V=new this.ca(this.A[0]);this.ha=!1};f.misc.hmac.prototype.update=
	function(a){this.ha=!0;this.V.update(a)};f.misc.hmac.prototype.digest=function(){var a=this.V.finalize(),a=(new this.ca(this.A[1])).update(a).finalize();this.reset();return a};f.misc.pbkdf2=function(a,b,c,d,e){c=c||1E4;if(0>d||0>c)throw new f.exception.invalid("invalid params to pbkdf2");"string"===typeof a&&(a=f.codec.utf8String.toBits(a));"string"===typeof b&&(b=f.codec.utf8String.toBits(b));e=e||f.misc.hmac;a=new e(a);var g,h,k,l,m=[],n=f.bitArray;for(l=1;32*m.length<(d||1);l++){e=g=a.encrypt(n.concat(b,
	[l]));for(h=1;h<c;h++)for(g=a.encrypt(g),k=0;k<g.length;k++)e[k]^=g[k];m=m.concat(e)}d&&(m=n.clamp(m,d));return m};f.prng=function(a){this.c=[new f.hash.sha256];this.m=[0];this.U=0;this.J={};this.R=0;this.Y={};this.fa=this.f=this.o=this.oa=0;this.b=[0,0,0,0,0,0,0,0];this.h=[0,0,0,0];this.O=void 0;this.P=a;this.G=!1;this.N={progress:{},seeded:{}};this.u=this.na=0;this.K=1;this.L=2;this.ja=0x10000;this.X=[0,48,64,96,128,192,0x100,384,512,768,1024];this.ka=3E4;this.ia=80};f.prng.prototype={randomWords:function(a,
																																																																																																																																	 b){var c=[],d;d=this.isReady(b);var e;if(d===this.u)throw new f.exception.notReady("generator isn't seeded");d&this.L&&this.ya(!(d&this.K));for(d=0;d<a;d+=4)0===(d+1)%this.ja&&this.ba(),e=this.S(),c.push(e[0],e[1],e[2],e[3]);this.ba();return c.slice(0,a)},setDefaultParanoia:function(a,b){if(0===a&&"Setting paranoia=0 will ruin your security; use it only for testing"!==b)throw new f.exception.invalid("Setting paranoia=0 will ruin your security; use it only for testing");this.P=a},addEntropy:function(a,
																																																																																																																																																																																																																																																															 b,c){c=c||"user";var d,e,g=(new Date).valueOf(),h=this.J[c],k=this.isReady(),l=0;d=this.Y[c];void 0===d&&(d=this.Y[c]=this.oa++);void 0===h&&(h=this.J[c]=0);this.J[c]=(this.J[c]+1)%this.c.length;switch(typeof a){case "number":void 0===b&&(b=1);this.c[h].update([d,this.R++,1,b,g,1,a|0]);break;case "object":c=Object.prototype.toString.call(a);if("[object Uint32Array]"===c){e=[];for(c=0;c<a.length;c++)e.push(a[c]);a=e}else for("[object Array]"!==c&&(l=1),c=0;c<a.length&&!l;c++)"number"!==typeof a[c]&&
	(l=1);if(!l){if(void 0===b)for(c=b=0;c<a.length;c++)for(e=a[c];0<e;)b++,e=e>>>1;this.c[h].update([d,this.R++,2,b,g,a.length].concat(a))}break;case "string":void 0===b&&(b=a.length);this.c[h].update([d,this.R++,3,b,g,a.length]);this.c[h].update(a);break;default:l=1}if(l)throw new f.exception.bug("random: addEntropy only supports number, array of numbers or string");this.m[h]+=b;this.f+=b;k===this.u&&(this.isReady()!==this.u&&this.aa("seeded",Math.max(this.o,this.f)),this.aa("progress",this.getProgress()))},
	isReady:function(a){a=this.X[void 0!==a?a:this.P];return this.o&&this.o>=a?this.m[0]>this.ia&&(new Date).valueOf()>this.fa?this.L|this.K:this.K:this.f>=a?this.L|this.u:this.u},getProgress:function(a){a=this.X[a?a:this.P];return this.o>=a?1:this.f>a?1:this.f/a},startCollectors:function(){if(!this.G){this.a={loadTimeCollector:this.B(this.ta),mouseCollector:this.B(this.va),keyboardCollector:this.B(this.sa),accelerometerCollector:this.B(this.la),touchCollector:this.B(this.za)};if(window.addEventListener)window.addEventListener("load",
		this.a.loadTimeCollector,!1),window.addEventListener("mousemove",this.a.mouseCollector,!1),window.addEventListener("keypress",this.a.keyboardCollector,!1),window.addEventListener("devicemotion",this.a.accelerometerCollector,!1),window.addEventListener("touchmove",this.a.touchCollector,!1);else if(document.attachEvent)document.attachEvent("onload",this.a.loadTimeCollector),document.attachEvent("onmousemove",this.a.mouseCollector),document.attachEvent("keypress",this.a.keyboardCollector);else throw new f.exception.bug("can't attach event");
		this.G=!0}},stopCollectors:function(){this.G&&(window.removeEventListener?(window.removeEventListener("load",this.a.loadTimeCollector,!1),window.removeEventListener("mousemove",this.a.mouseCollector,!1),window.removeEventListener("keypress",this.a.keyboardCollector,!1),window.removeEventListener("devicemotion",this.a.accelerometerCollector,!1),window.removeEventListener("touchmove",this.a.touchCollector,!1)):document.detachEvent&&(document.detachEvent("onload",this.a.loadTimeCollector),document.detachEvent("onmousemove",
		this.a.mouseCollector),document.detachEvent("keypress",this.a.keyboardCollector)),this.G=!1)},addEventListener:function(a,b){this.N[a][this.na++]=b},removeEventListener:function(a,b){var c,d,e=this.N[a],f=[];for(d in e)e.hasOwnProperty(d)&&e[d]===b&&f.push(d);for(c=0;c<f.length;c++)d=f[c],delete e[d]},B:function(a){var b=this;return function(){a.apply(b,arguments)}},S:function(){for(var a=0;4>a&&(this.h[a]=this.h[a]+1|0,!this.h[a]);a++);return this.O.encrypt(this.h)},ba:function(){this.b=this.S().concat(this.S());
		this.O=new f.cipher.aes(this.b)},xa:function(a){this.b=f.hash.sha256.hash(this.b.concat(a));this.O=new f.cipher.aes(this.b);for(a=0;4>a&&(this.h[a]=this.h[a]+1|0,!this.h[a]);a++);},ya:function(a){var b=[],c=0,d;this.fa=b[0]=(new Date).valueOf()+this.ka;for(d=0;16>d;d++)b.push(0x100000000*Math.random()|0);for(d=0;d<this.c.length&&(b=b.concat(this.c[d].finalize()),c+=this.m[d],this.m[d]=0,a||!(this.U&1<<d));d++);this.U>=1<<this.c.length&&(this.c.push(new f.hash.sha256),this.m.push(0));this.f-=c;c>this.o&&
	(this.o=c);this.U++;this.xa(b)},sa:function(){this.w(1)},va:function(a){var b,c;try{b=a.x||a.clientX||a.offsetX||0,c=a.y||a.clientY||a.offsetY||0}catch(d){c=b=0}0!=b&&0!=c&&this.addEntropy([b,c],2,"mouse");this.w(0)},za:function(a){a=a.touches[0]||a.changedTouches[0];this.addEntropy([a.pageX||a.clientX,a.pageY||a.clientY],1,"touch");this.w(0)},ta:function(){this.w(2)},w:function(a){"undefined"!==typeof window&&window.performance&&"function"===typeof window.performance.now?this.addEntropy(window.performance.now(),
		a,"loadtime"):this.addEntropy((new Date).valueOf(),a,"loadtime")},la:function(a){a=a.accelerationIncludingGravity.x||a.accelerationIncludingGravity.y||a.accelerationIncludingGravity.z;if(window.orientation){var b=window.orientation;"number"===typeof b&&this.addEntropy(b,1,"accelerometer")}a&&this.addEntropy(a,2,"accelerometer");this.w(0)},aa:function(a,b){var c,d=f.random.N[a],e=[];for(c in d)d.hasOwnProperty(c)&&e.push(d[c]);for(c=0;c<e.length;c++)e[c](b)}};f.random=new f.prng(6);(function(){try{var a,
	b,c,d;if(d="undefined"!==typeof module&&module.exports){var e;try{e=require("crypto")}catch(g){e=null}d=b=e}if(d&&b.randomBytes)a=b.randomBytes(128),a=new Uint32Array((new Uint8Array(a)).buffer),f.random.addEntropy(a,1024,"crypto['randomBytes']");else if("undefined"!==typeof window&&"undefined"!==typeof Uint32Array){c=new Uint32Array(32);if(window.crypto&&window.crypto.getRandomValues)window.crypto.getRandomValues(c);else if(window.msCrypto&&window.msCrypto.getRandomValues)window.msCrypto.getRandomValues(c);
else return;f.random.addEntropy(c,1024,"crypto['getRandomValues']")}}catch(g){"undefined"!==typeof window&&window.console&&(console.log("There was an error collecting entropy from the browser:"),console.log(g))}})();f.json={defaults:{v:1,iter:1E4,ks:128,ts:64,mode:"ccm",adata:"",cipher:"aes"},qa:function(a,b,c,d){c=c||{};d=d||{};var e=f.json,g=e.g({iv:f.random.randomWords(4,0)},e.defaults),h;e.g(g,c);c=g.adata;"string"===typeof g.salt&&(g.salt=f.codec.base64.toBits(g.salt));"string"===typeof g.iv&&
	(g.iv=f.codec.base64.toBits(g.iv));if(!f.mode[g.mode]||!f.cipher[g.cipher]||"string"===typeof a&&100>=g.iter||64!==g.ts&&96!==g.ts&&128!==g.ts||128!==g.ks&&192!==g.ks&&0x100!==g.ks||2>g.iv.length||4<g.iv.length)throw new f.exception.invalid("json encrypt: invalid parameters");"string"===typeof a?(h=f.misc.cachedPbkdf2(a,g),a=h.key.slice(0,g.ks/32),g.salt=h.salt):f.ecc&&a instanceof f.ecc.elGamal.publicKey&&(h=a.kem(),g.kemtag=h.tag,a=h.key.slice(0,g.ks/32));"string"===typeof b&&(b=f.codec.utf8String.toBits(b));
		"string"===typeof c&&(g.adata=c=f.codec.utf8String.toBits(c));h=new f.cipher[g.cipher](a);e.g(d,g);d.key=a;g.ct="ccm"===g.mode&&f.arrayBuffer&&f.arrayBuffer.ccm&&b instanceof ArrayBuffer?f.arrayBuffer.ccm.encrypt(h,b,g.iv,c,g.ts):f.mode[g.mode].encrypt(h,b,g.iv,c,g.ts);return g},encrypt:function(a,b,c,d){var e=f.json,g=e.qa.apply(e,arguments);return e.encode(g)},pa:function(a,b,c,d){c=c||{};d=d||{};var e=f.json;b=e.g(e.g(e.g({},e.defaults),b),c,!0);var g,h;g=b.adata;"string"===typeof b.salt&&(b.salt=
		f.codec.base64.toBits(b.salt));"string"===typeof b.iv&&(b.iv=f.codec.base64.toBits(b.iv));if(!f.mode[b.mode]||!f.cipher[b.cipher]||"string"===typeof a&&100>=b.iter||64!==b.ts&&96!==b.ts&&128!==b.ts||128!==b.ks&&192!==b.ks&&0x100!==b.ks||!b.iv||2>b.iv.length||4<b.iv.length)throw new f.exception.invalid("json decrypt: invalid parameters");"string"===typeof a?(h=f.misc.cachedPbkdf2(a,b),a=h.key.slice(0,b.ks/32),b.salt=h.salt):f.ecc&&a instanceof f.ecc.elGamal.secretKey&&(a=a.unkem(f.codec.base64.toBits(b.kemtag)).slice(0,
		b.ks/32));"string"===typeof g&&(g=f.codec.utf8String.toBits(g));h=new f.cipher[b.cipher](a);g="ccm"===b.mode&&f.arrayBuffer&&f.arrayBuffer.ccm&&b.ct instanceof ArrayBuffer?f.arrayBuffer.ccm.decrypt(h,b.ct,b.iv,b.tag,g,b.ts):f.mode[b.mode].decrypt(h,b.ct,b.iv,g,b.ts);e.g(d,b);d.key=a;return 1===c.raw?g:f.codec.utf8String.fromBits(g)},decrypt:function(a,b,c,d){var e=f.json;return e.pa(a,e.decode(b),c,d)},encode:function(a){var b,c="{",d="";for(b in a)if(a.hasOwnProperty(b)){if(!b.match(/^[a-z0-9]+$/i))throw new f.exception.invalid("json encode: invalid property name");
		c+=d+'"'+b+'":';d=",";switch(typeof a[b]){case "number":case "boolean":c+=a[b];break;case "string":c+='"'+escape(a[b])+'"';break;case "object":c+='"'+f.codec.base64.fromBits(a[b],0)+'"';break;default:throw new f.exception.bug("json encode: unsupported type");}}return c+"}"},decode:function(a){a=a.replace(/\s/g,"");if(!a.match(/^\{.*\}$/))throw new f.exception.invalid("json decode: this isn't json!");a=a.replace(/^\{|\}$/g,"").split(/,/);var b={},c,d;for(c=0;c<a.length;c++){if(!(d=a[c].match(/^\s*(?:(["']?)([a-z][a-z0-9]*)\1)\s*:\s*(?:(-?\d+)|"([a-z0-9+\/%*_.@=\-]*)"|(true|false))$/i)))throw new f.exception.invalid("json decode: this isn't json!");
		null!=d[3]?b[d[2]]=parseInt(d[3],10):null!=d[4]?b[d[2]]=d[2].match(/^(ct|adata|salt|iv)$/)?f.codec.base64.toBits(d[4]):unescape(d[4]):null!=d[5]&&(b[d[2]]="true"===d[5])}return b},g:function(a,b,c){void 0===a&&(a={});if(void 0===b)return a;for(var d in b)if(b.hasOwnProperty(d)){if(c&&void 0!==a[d]&&a[d]!==b[d])throw new f.exception.invalid("required parameter overridden");a[d]=b[d]}return a},Ba:function(a,b){var c={},d;for(d in a)a.hasOwnProperty(d)&&a[d]!==b[d]&&(c[d]=a[d]);return c},Aa:function(a,
																																																																																																																															  b){var c={},d;for(d=0;d<b.length;d++)void 0!==a[b[d]]&&(c[b[d]]=a[b[d]]);return c}};f.encrypt=f.json.encrypt;f.decrypt=f.json.decrypt;f.misc.wa={};f.misc.cachedPbkdf2=function(a,b){var c=f.misc.wa,d;b=b||{};d=b.iter||1E3;c=c[a]=c[a]||{};d=c[d]=c[d]||{firstSalt:b.salt&&b.salt.length?b.salt.slice(0):f.random.randomWords(2,0)};c=void 0===b.salt?d.firstSalt:b.salt;d[c]=d[c]||f.misc.pbkdf2(a,c,b.iter);return{key:d[c].slice(0),salt:c.slice(0)}};"undefined"!==typeof module&&module.exports&&(module.exports=
	f);"function"===typeof define&&define([],function(){return f})})(sjcl);
js/knockout-3.5.1.1722265817.js000064400000205231150755146450011123 0ustar00/*!
 * Knockout JavaScript library v3.5.1
 * (c) The Knockout.js team - http://knockoutjs.com/
 * License: MIT (http://www.opensource.org/licenses/mit-license.php)
 */

(function() {(function(n){var A=this||(0,eval)("this"),w=A.document,R=A.navigator,v=A.jQuery,H=A.JSON;v||"undefined"===typeof jQuery||(v=jQuery);(function(n){"function"===typeof define&&define.amd?define(["exports","require"],n):"object"===typeof exports&&"object"===typeof module?n(module.exports||exports):n(A.ko={})})(function(S,T){function K(a,c){return null===a||typeof a in W?a===c:!1}function X(b,c){var d;return function(){d||(d=a.a.setTimeout(function(){d=n;b()},c))}}function Y(b,c){var d;return function(){clearTimeout(d);
d=a.a.setTimeout(b,c)}}function Z(a,c){c&&"change"!==c?"beforeChange"===c?this.pc(a):this.gb(a,c):this.qc(a)}function aa(a,c){null!==c&&c.s&&c.s()}function ba(a,c){var d=this.qd,e=d[r];e.ra||(this.Qb&&this.mb[c]?(d.uc(c,a,this.mb[c]),this.mb[c]=null,--this.Qb):e.I[c]||d.uc(c,a,e.J?{da:a}:d.$c(a)),a.Ja&&a.gd())}var a="undefined"!==typeof S?S:{};a.b=function(b,c){for(var d=b.split("."),e=a,f=0;f<d.length-1;f++)e=e[d[f]];e[d[d.length-1]]=c};a.L=function(a,c,d){a[c]=d};a.version="3.5.1";a.b("version",
a.version);a.options={deferUpdates:!1,useOnlyNativeEvents:!1,foreachHidesDestroyed:!1};a.a=function(){function b(a,b){for(var c in a)f.call(a,c)&&b(c,a[c])}function c(a,b){if(b)for(var c in b)f.call(b,c)&&(a[c]=b[c]);return a}function d(a,b){a.__proto__=b;return a}function e(b,c,d,e){var l=b[c].match(q)||[];a.a.D(d.match(q),function(b){a.a.Na(l,b,e)});b[c]=l.join(" ")}var f=Object.prototype.hasOwnProperty,g={__proto__:[]}instanceof Array,h="function"===typeof Symbol,m={},k={};m[R&&/Firefox\/2/i.test(R.userAgent)?
"KeyboardEvent":"UIEvents"]=["keyup","keydown","keypress"];m.MouseEvents="click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave".split(" ");b(m,function(a,b){if(b.length)for(var c=0,d=b.length;c<d;c++)k[b[c]]=a});var l={propertychange:!0},p=w&&function(){for(var a=3,b=w.createElement("div"),c=b.getElementsByTagName("i");b.innerHTML="\x3c!--[if gt IE "+ ++a+"]><i></i><![endif]--\x3e",c[0];);return 4<a?a:n}(),q=/\S+/g,t;return{Jc:["authenticity_token",/^__RequestVerificationToken(_.*)?$/],
D:function(a,b,c){for(var d=0,e=a.length;d<e;d++)b.call(c,a[d],d,a)},A:"function"==typeof Array.prototype.indexOf?function(a,b){return Array.prototype.indexOf.call(a,b)}:function(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1},Lb:function(a,b,c){for(var d=0,e=a.length;d<e;d++)if(b.call(c,a[d],d,a))return a[d];return n},Pa:function(b,c){var d=a.a.A(b,c);0<d?b.splice(d,1):0===d&&b.shift()},wc:function(b){var c=[];b&&a.a.D(b,function(b){0>a.a.A(c,b)&&c.push(b)});return c},Mb:function(a,
b,c){var d=[];if(a)for(var e=0,l=a.length;e<l;e++)d.push(b.call(c,a[e],e));return d},jb:function(a,b,c){var d=[];if(a)for(var e=0,l=a.length;e<l;e++)b.call(c,a[e],e)&&d.push(a[e]);return d},Nb:function(a,b){if(b instanceof Array)a.push.apply(a,b);else for(var c=0,d=b.length;c<d;c++)a.push(b[c]);return a},Na:function(b,c,d){var e=a.a.A(a.a.bc(b),c);0>e?d&&b.push(c):d||b.splice(e,1)},Ba:g,extend:c,setPrototypeOf:d,Ab:g?d:c,P:b,Ga:function(a,b,c){if(!a)return a;var d={},e;for(e in a)f.call(a,e)&&(d[e]=
b.call(c,a[e],e,a));return d},Tb:function(b){for(;b.firstChild;)a.removeNode(b.firstChild)},Yb:function(b){b=a.a.la(b);for(var c=(b[0]&&b[0].ownerDocument||w).createElement("div"),d=0,e=b.length;d<e;d++)c.appendChild(a.oa(b[d]));return c},Ca:function(b,c){for(var d=0,e=b.length,l=[];d<e;d++){var k=b[d].cloneNode(!0);l.push(c?a.oa(k):k)}return l},va:function(b,c){a.a.Tb(b);if(c)for(var d=0,e=c.length;d<e;d++)b.appendChild(c[d])},Xc:function(b,c){var d=b.nodeType?[b]:b;if(0<d.length){for(var e=d[0],
l=e.parentNode,k=0,f=c.length;k<f;k++)l.insertBefore(c[k],e);k=0;for(f=d.length;k<f;k++)a.removeNode(d[k])}},Ua:function(a,b){if(a.length){for(b=8===b.nodeType&&b.parentNode||b;a.length&&a[0].parentNode!==b;)a.splice(0,1);for(;1<a.length&&a[a.length-1].parentNode!==b;)a.length--;if(1<a.length){var c=a[0],d=a[a.length-1];for(a.length=0;c!==d;)a.push(c),c=c.nextSibling;a.push(d)}}return a},Zc:function(a,b){7>p?a.setAttribute("selected",b):a.selected=b},Db:function(a){return null===a||a===n?"":a.trim?
a.trim():a.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")},Ud:function(a,b){a=a||"";return b.length>a.length?!1:a.substring(0,b.length)===b},vd:function(a,b){if(a===b)return!0;if(11===a.nodeType)return!1;if(b.contains)return b.contains(1!==a.nodeType?a.parentNode:a);if(b.compareDocumentPosition)return 16==(b.compareDocumentPosition(a)&16);for(;a&&a!=b;)a=a.parentNode;return!!a},Sb:function(b){return a.a.vd(b,b.ownerDocument.documentElement)},kd:function(b){return!!a.a.Lb(b,a.a.Sb)},R:function(a){return a&&
a.tagName&&a.tagName.toLowerCase()},Ac:function(b){return a.onError?function(){try{return b.apply(this,arguments)}catch(c){throw a.onError&&a.onError(c),c;}}:b},setTimeout:function(b,c){return setTimeout(a.a.Ac(b),c)},Gc:function(b){setTimeout(function(){a.onError&&a.onError(b);throw b;},0)},B:function(b,c,d){var e=a.a.Ac(d);d=l[c];if(a.options.useOnlyNativeEvents||d||!v)if(d||"function"!=typeof b.addEventListener)if("undefined"!=typeof b.attachEvent){var k=function(a){e.call(b,a)},f="on"+c;b.attachEvent(f,
k);a.a.K.za(b,function(){b.detachEvent(f,k)})}else throw Error("Browser doesn't support addEventListener or attachEvent");else b.addEventListener(c,e,!1);else t||(t="function"==typeof v(b).on?"on":"bind"),v(b)[t](c,e)},Fb:function(b,c){if(!b||!b.nodeType)throw Error("element must be a DOM node when calling triggerEvent");var d;"input"===a.a.R(b)&&b.type&&"click"==c.toLowerCase()?(d=b.type,d="checkbox"==d||"radio"==d):d=!1;if(a.options.useOnlyNativeEvents||!v||d)if("function"==typeof w.createEvent)if("function"==
typeof b.dispatchEvent)d=w.createEvent(k[c]||"HTMLEvents"),d.initEvent(c,!0,!0,A,0,0,0,0,0,!1,!1,!1,!1,0,b),b.dispatchEvent(d);else throw Error("The supplied element doesn't support dispatchEvent");else if(d&&b.click)b.click();else if("undefined"!=typeof b.fireEvent)b.fireEvent("on"+c);else throw Error("Browser doesn't support triggering events");else v(b).trigger(c)},f:function(b){return a.O(b)?b():b},bc:function(b){return a.O(b)?b.v():b},Eb:function(b,c,d){var l;c&&("object"===typeof b.classList?
(l=b.classList[d?"add":"remove"],a.a.D(c.match(q),function(a){l.call(b.classList,a)})):"string"===typeof b.className.baseVal?e(b.className,"baseVal",c,d):e(b,"className",c,d))},Bb:function(b,c){var d=a.a.f(c);if(null===d||d===n)d="";var e=a.h.firstChild(b);!e||3!=e.nodeType||a.h.nextSibling(e)?a.h.va(b,[b.ownerDocument.createTextNode(d)]):e.data=d;a.a.Ad(b)},Yc:function(a,b){a.name=b;if(7>=p)try{var c=a.name.replace(/[&<>'"]/g,function(a){return"&#"+a.charCodeAt(0)+";"});a.mergeAttributes(w.createElement("<input name='"+
c+"'/>"),!1)}catch(d){}},Ad:function(a){9<=p&&(a=1==a.nodeType?a:a.parentNode,a.style&&(a.style.zoom=a.style.zoom))},wd:function(a){if(p){var b=a.style.width;a.style.width=0;a.style.width=b}},Pd:function(b,c){b=a.a.f(b);c=a.a.f(c);for(var d=[],e=b;e<=c;e++)d.push(e);return d},la:function(a){for(var b=[],c=0,d=a.length;c<d;c++)b.push(a[c]);return b},Da:function(a){return h?Symbol(a):a},Zd:6===p,$d:7===p,W:p,Lc:function(b,c){for(var d=a.a.la(b.getElementsByTagName("input")).concat(a.a.la(b.getElementsByTagName("textarea"))),
e="string"==typeof c?function(a){return a.name===c}:function(a){return c.test(a.name)},l=[],k=d.length-1;0<=k;k--)e(d[k])&&l.push(d[k]);return l},Nd:function(b){return"string"==typeof b&&(b=a.a.Db(b))?H&&H.parse?H.parse(b):(new Function("return "+b))():null},hc:function(b,c,d){if(!H||!H.stringify)throw Error("Cannot find JSON.stringify(). Some browsers (e.g., IE < 8) don't support it natively, but you can overcome this by adding a script reference to json2.js, downloadable from http://www.json.org/json2.js");
return H.stringify(a.a.f(b),c,d)},Od:function(c,d,e){e=e||{};var l=e.params||{},k=e.includeFields||this.Jc,f=c;if("object"==typeof c&&"form"===a.a.R(c))for(var f=c.action,h=k.length-1;0<=h;h--)for(var g=a.a.Lc(c,k[h]),m=g.length-1;0<=m;m--)l[g[m].name]=g[m].value;d=a.a.f(d);var p=w.createElement("form");p.style.display="none";p.action=f;p.method="post";for(var q in d)c=w.createElement("input"),c.type="hidden",c.name=q,c.value=a.a.hc(a.a.f(d[q])),p.appendChild(c);b(l,function(a,b){var c=w.createElement("input");
c.type="hidden";c.name=a;c.value=b;p.appendChild(c)});w.body.appendChild(p);e.submitter?e.submitter(p):p.submit();setTimeout(function(){p.parentNode.removeChild(p)},0)}}}();a.b("utils",a.a);a.b("utils.arrayForEach",a.a.D);a.b("utils.arrayFirst",a.a.Lb);a.b("utils.arrayFilter",a.a.jb);a.b("utils.arrayGetDistinctValues",a.a.wc);a.b("utils.arrayIndexOf",a.a.A);a.b("utils.arrayMap",a.a.Mb);a.b("utils.arrayPushAll",a.a.Nb);a.b("utils.arrayRemoveItem",a.a.Pa);a.b("utils.cloneNodes",a.a.Ca);a.b("utils.createSymbolOrString",
a.a.Da);a.b("utils.extend",a.a.extend);a.b("utils.fieldsIncludedWithJsonPost",a.a.Jc);a.b("utils.getFormFields",a.a.Lc);a.b("utils.objectMap",a.a.Ga);a.b("utils.peekObservable",a.a.bc);a.b("utils.postJson",a.a.Od);a.b("utils.parseJson",a.a.Nd);a.b("utils.registerEventHandler",a.a.B);a.b("utils.stringifyJson",a.a.hc);a.b("utils.range",a.a.Pd);a.b("utils.toggleDomNodeCssClass",a.a.Eb);a.b("utils.triggerEvent",a.a.Fb);a.b("utils.unwrapObservable",a.a.f);a.b("utils.objectForEach",a.a.P);a.b("utils.addOrRemoveItem",
a.a.Na);a.b("utils.setTextContent",a.a.Bb);a.b("unwrap",a.a.f);Function.prototype.bind||(Function.prototype.bind=function(a){var c=this;if(1===arguments.length)return function(){return c.apply(a,arguments)};var d=Array.prototype.slice.call(arguments,1);return function(){var e=d.slice(0);e.push.apply(e,arguments);return c.apply(a,e)}});a.a.g=new function(){var b=0,c="__ko__"+(new Date).getTime(),d={},e,f;a.a.W?(e=function(a,e){var f=a[c];if(!f||"null"===f||!d[f]){if(!e)return n;f=a[c]="ko"+b++;d[f]=
{}}return d[f]},f=function(a){var b=a[c];return b?(delete d[b],a[c]=null,!0):!1}):(e=function(a,b){var d=a[c];!d&&b&&(d=a[c]={});return d},f=function(a){return a[c]?(delete a[c],!0):!1});return{get:function(a,b){var c=e(a,!1);return c&&c[b]},set:function(a,b,c){(a=e(a,c!==n))&&(a[b]=c)},Ub:function(a,b,c){a=e(a,!0);return a[b]||(a[b]=c)},clear:f,Z:function(){return b++ +c}}};a.b("utils.domData",a.a.g);a.b("utils.domData.clear",a.a.g.clear);a.a.K=new function(){function b(b,c){var d=a.a.g.get(b,e);
d===n&&c&&(d=[],a.a.g.set(b,e,d));return d}function c(c){var e=b(c,!1);if(e)for(var e=e.slice(0),k=0;k<e.length;k++)e[k](c);a.a.g.clear(c);a.a.K.cleanExternalData(c);g[c.nodeType]&&d(c.childNodes,!0)}function d(b,d){for(var e=[],l,f=0;f<b.length;f++)if(!d||8===b[f].nodeType)if(c(e[e.length]=l=b[f]),b[f]!==l)for(;f--&&-1==a.a.A(e,b[f]););}var e=a.a.g.Z(),f={1:!0,8:!0,9:!0},g={1:!0,9:!0};return{za:function(a,c){if("function"!=typeof c)throw Error("Callback must be a function");b(a,!0).push(c)},yb:function(c,
d){var f=b(c,!1);f&&(a.a.Pa(f,d),0==f.length&&a.a.g.set(c,e,n))},oa:function(b){a.u.G(function(){f[b.nodeType]&&(c(b),g[b.nodeType]&&d(b.getElementsByTagName("*")))});return b},removeNode:function(b){a.oa(b);b.parentNode&&b.parentNode.removeChild(b)},cleanExternalData:function(a){v&&"function"==typeof v.cleanData&&v.cleanData([a])}}};a.oa=a.a.K.oa;a.removeNode=a.a.K.removeNode;a.b("cleanNode",a.oa);a.b("removeNode",a.removeNode);a.b("utils.domNodeDisposal",a.a.K);a.b("utils.domNodeDisposal.addDisposeCallback",
a.a.K.za);a.b("utils.domNodeDisposal.removeDisposeCallback",a.a.K.yb);(function(){var b=[0,"",""],c=[1,"<table>","</table>"],d=[3,"<table><tbody><tr>","</tr></tbody></table>"],e=[1,"<select multiple='multiple'>","</select>"],f={thead:c,tbody:c,tfoot:c,tr:[2,"<table><tbody>","</tbody></table>"],td:d,th:d,option:e,optgroup:e},g=8>=a.a.W;a.a.ua=function(c,d){var e;if(v)if(v.parseHTML)e=v.parseHTML(c,d)||[];else{if((e=v.clean([c],d))&&e[0]){for(var l=e[0];l.parentNode&&11!==l.parentNode.nodeType;)l=l.parentNode;
l.parentNode&&l.parentNode.removeChild(l)}}else{(e=d)||(e=w);var l=e.parentWindow||e.defaultView||A,p=a.a.Db(c).toLowerCase(),q=e.createElement("div"),t;t=(p=p.match(/^(?:\x3c!--.*?--\x3e\s*?)*?<([a-z]+)[\s>]/))&&f[p[1]]||b;p=t[0];t="ignored<div>"+t[1]+c+t[2]+"</div>";"function"==typeof l.innerShiv?q.appendChild(l.innerShiv(t)):(g&&e.body.appendChild(q),q.innerHTML=t,g&&q.parentNode.removeChild(q));for(;p--;)q=q.lastChild;e=a.a.la(q.lastChild.childNodes)}return e};a.a.Md=function(b,c){var d=a.a.ua(b,
c);return d.length&&d[0].parentElement||a.a.Yb(d)};a.a.fc=function(b,c){a.a.Tb(b);c=a.a.f(c);if(null!==c&&c!==n)if("string"!=typeof c&&(c=c.toString()),v)v(b).html(c);else for(var d=a.a.ua(c,b.ownerDocument),e=0;e<d.length;e++)b.appendChild(d[e])}})();a.b("utils.parseHtmlFragment",a.a.ua);a.b("utils.setHtml",a.a.fc);a.aa=function(){function b(c,e){if(c)if(8==c.nodeType){var f=a.aa.Uc(c.nodeValue);null!=f&&e.push({ud:c,Kd:f})}else if(1==c.nodeType)for(var f=0,g=c.childNodes,h=g.length;f<h;f++)b(g[f],
e)}var c={};return{Xb:function(a){if("function"!=typeof a)throw Error("You can only pass a function to ko.memoization.memoize()");var b=(4294967296*(1+Math.random())|0).toString(16).substring(1)+(4294967296*(1+Math.random())|0).toString(16).substring(1);c[b]=a;return"\x3c!--[ko_memo:"+b+"]--\x3e"},bd:function(a,b){var f=c[a];if(f===n)throw Error("Couldn't find any memo with ID "+a+". Perhaps it's already been unmemoized.");try{return f.apply(null,b||[]),!0}finally{delete c[a]}},cd:function(c,e){var f=
[];b(c,f);for(var g=0,h=f.length;g<h;g++){var m=f[g].ud,k=[m];e&&a.a.Nb(k,e);a.aa.bd(f[g].Kd,k);m.nodeValue="";m.parentNode&&m.parentNode.removeChild(m)}},Uc:function(a){return(a=a.match(/^\[ko_memo\:(.*?)\]$/))?a[1]:null}}}();a.b("memoization",a.aa);a.b("memoization.memoize",a.aa.Xb);a.b("memoization.unmemoize",a.aa.bd);a.b("memoization.parseMemoText",a.aa.Uc);a.b("memoization.unmemoizeDomNodeAndDescendants",a.aa.cd);a.na=function(){function b(){if(f)for(var b=f,c=0,d;h<f;)if(d=e[h++]){if(h>b){if(5E3<=
++c){h=f;a.a.Gc(Error("'Too much recursion' after processing "+c+" task groups."));break}b=f}try{d()}catch(p){a.a.Gc(p)}}}function c(){b();h=f=e.length=0}var d,e=[],f=0,g=1,h=0;A.MutationObserver?d=function(a){var b=w.createElement("div");(new MutationObserver(a)).observe(b,{attributes:!0});return function(){b.classList.toggle("foo")}}(c):d=w&&"onreadystatechange"in w.createElement("script")?function(a){var b=w.createElement("script");b.onreadystatechange=function(){b.onreadystatechange=null;w.documentElement.removeChild(b);
b=null;a()};w.documentElement.appendChild(b)}:function(a){setTimeout(a,0)};return{scheduler:d,zb:function(b){f||a.na.scheduler(c);e[f++]=b;return g++},cancel:function(a){a=a-(g-f);a>=h&&a<f&&(e[a]=null)},resetForTesting:function(){var a=f-h;h=f=e.length=0;return a},Sd:b}}();a.b("tasks",a.na);a.b("tasks.schedule",a.na.zb);a.b("tasks.runEarly",a.na.Sd);a.Ta={throttle:function(b,c){b.throttleEvaluation=c;var d=null;return a.$({read:b,write:function(e){clearTimeout(d);d=a.a.setTimeout(function(){b(e)},
c)}})},rateLimit:function(a,c){var d,e,f;"number"==typeof c?d=c:(d=c.timeout,e=c.method);a.Hb=!1;f="function"==typeof e?e:"notifyWhenChangesStop"==e?Y:X;a.ub(function(a){return f(a,d,c)})},deferred:function(b,c){if(!0!==c)throw Error("The 'deferred' extender only accepts the value 'true', because it is not supported to turn deferral off once enabled.");b.Hb||(b.Hb=!0,b.ub(function(c){var e,f=!1;return function(){if(!f){a.na.cancel(e);e=a.na.zb(c);try{f=!0,b.notifySubscribers(n,"dirty")}finally{f=
!1}}}}))},notify:function(a,c){a.equalityComparer="always"==c?null:K}};var W={undefined:1,"boolean":1,number:1,string:1};a.b("extenders",a.Ta);a.ic=function(b,c,d){this.da=b;this.lc=c;this.mc=d;this.Ib=!1;this.fb=this.Jb=null;a.L(this,"dispose",this.s);a.L(this,"disposeWhenNodeIsRemoved",this.l)};a.ic.prototype.s=function(){this.Ib||(this.fb&&a.a.K.yb(this.Jb,this.fb),this.Ib=!0,this.mc(),this.da=this.lc=this.mc=this.Jb=this.fb=null)};a.ic.prototype.l=function(b){this.Jb=b;a.a.K.za(b,this.fb=this.s.bind(this))};
a.T=function(){a.a.Ab(this,D);D.qb(this)};var D={qb:function(a){a.U={change:[]};a.sc=1},subscribe:function(b,c,d){var e=this;d=d||"change";var f=new a.ic(e,c?b.bind(c):b,function(){a.a.Pa(e.U[d],f);e.hb&&e.hb(d)});e.Qa&&e.Qa(d);e.U[d]||(e.U[d]=[]);e.U[d].push(f);return f},notifySubscribers:function(b,c){c=c||"change";"change"===c&&this.Gb();if(this.Wa(c)){var d="change"===c&&this.ed||this.U[c].slice(0);try{a.u.xc();for(var e=0,f;f=d[e];++e)f.Ib||f.lc(b)}finally{a.u.end()}}},ob:function(){return this.sc},
Dd:function(a){return this.ob()!==a},Gb:function(){++this.sc},ub:function(b){var c=this,d=a.O(c),e,f,g,h,m;c.gb||(c.gb=c.notifySubscribers,c.notifySubscribers=Z);var k=b(function(){c.Ja=!1;d&&h===c&&(h=c.nc?c.nc():c());var a=f||m&&c.sb(g,h);m=f=e=!1;a&&c.gb(g=h)});c.qc=function(a,b){b&&c.Ja||(m=!b);c.ed=c.U.change.slice(0);c.Ja=e=!0;h=a;k()};c.pc=function(a){e||(g=a,c.gb(a,"beforeChange"))};c.rc=function(){m=!0};c.gd=function(){c.sb(g,c.v(!0))&&(f=!0)}},Wa:function(a){return this.U[a]&&this.U[a].length},
Bd:function(b){if(b)return this.U[b]&&this.U[b].length||0;var c=0;a.a.P(this.U,function(a,b){"dirty"!==a&&(c+=b.length)});return c},sb:function(a,c){return!this.equalityComparer||!this.equalityComparer(a,c)},toString:function(){return"[object Object]"},extend:function(b){var c=this;b&&a.a.P(b,function(b,e){var f=a.Ta[b];"function"==typeof f&&(c=f(c,e)||c)});return c}};a.L(D,"init",D.qb);a.L(D,"subscribe",D.subscribe);a.L(D,"extend",D.extend);a.L(D,"getSubscriptionsCount",D.Bd);a.a.Ba&&a.a.setPrototypeOf(D,
Function.prototype);a.T.fn=D;a.Qc=function(a){return null!=a&&"function"==typeof a.subscribe&&"function"==typeof a.notifySubscribers};a.b("subscribable",a.T);a.b("isSubscribable",a.Qc);a.S=a.u=function(){function b(a){d.push(e);e=a}function c(){e=d.pop()}var d=[],e,f=0;return{xc:b,end:c,cc:function(b){if(e){if(!a.Qc(b))throw Error("Only subscribable things can act as dependencies");e.od.call(e.pd,b,b.fd||(b.fd=++f))}},G:function(a,d,e){try{return b(),a.apply(d,e||[])}finally{c()}},qa:function(){if(e)return e.o.qa()},
Va:function(){if(e)return e.o.Va()},Ya:function(){if(e)return e.Ya},o:function(){if(e)return e.o}}}();a.b("computedContext",a.S);a.b("computedContext.getDependenciesCount",a.S.qa);a.b("computedContext.getDependencies",a.S.Va);a.b("computedContext.isInitial",a.S.Ya);a.b("computedContext.registerDependency",a.S.cc);a.b("ignoreDependencies",a.Yd=a.u.G);var I=a.a.Da("_latestValue");a.ta=function(b){function c(){if(0<arguments.length)return c.sb(c[I],arguments[0])&&(c.ya(),c[I]=arguments[0],c.xa()),this;
a.u.cc(c);return c[I]}c[I]=b;a.a.Ba||a.a.extend(c,a.T.fn);a.T.fn.qb(c);a.a.Ab(c,F);a.options.deferUpdates&&a.Ta.deferred(c,!0);return c};var F={equalityComparer:K,v:function(){return this[I]},xa:function(){this.notifySubscribers(this[I],"spectate");this.notifySubscribers(this[I])},ya:function(){this.notifySubscribers(this[I],"beforeChange")}};a.a.Ba&&a.a.setPrototypeOf(F,a.T.fn);var G=a.ta.Ma="__ko_proto__";F[G]=a.ta;a.O=function(b){if((b="function"==typeof b&&b[G])&&b!==F[G]&&b!==a.o.fn[G])throw Error("Invalid object that looks like an observable; possibly from another Knockout instance");
return!!b};a.Za=function(b){return"function"==typeof b&&(b[G]===F[G]||b[G]===a.o.fn[G]&&b.Nc)};a.b("observable",a.ta);a.b("isObservable",a.O);a.b("isWriteableObservable",a.Za);a.b("isWritableObservable",a.Za);a.b("observable.fn",F);a.L(F,"peek",F.v);a.L(F,"valueHasMutated",F.xa);a.L(F,"valueWillMutate",F.ya);a.Ha=function(b){b=b||[];if("object"!=typeof b||!("length"in b))throw Error("The argument passed when initializing an observable array must be an array, or null, or undefined.");b=a.ta(b);a.a.Ab(b,
a.Ha.fn);return b.extend({trackArrayChanges:!0})};a.Ha.fn={remove:function(b){for(var c=this.v(),d=[],e="function"!=typeof b||a.O(b)?function(a){return a===b}:b,f=0;f<c.length;f++){var g=c[f];if(e(g)){0===d.length&&this.ya();if(c[f]!==g)throw Error("Array modified during remove; cannot remove item");d.push(g);c.splice(f,1);f--}}d.length&&this.xa();return d},removeAll:function(b){if(b===n){var c=this.v(),d=c.slice(0);this.ya();c.splice(0,c.length);this.xa();return d}return b?this.remove(function(c){return 0<=
a.a.A(b,c)}):[]},destroy:function(b){var c=this.v(),d="function"!=typeof b||a.O(b)?function(a){return a===b}:b;this.ya();for(var e=c.length-1;0<=e;e--){var f=c[e];d(f)&&(f._destroy=!0)}this.xa()},destroyAll:function(b){return b===n?this.destroy(function(){return!0}):b?this.destroy(function(c){return 0<=a.a.A(b,c)}):[]},indexOf:function(b){var c=this();return a.a.A(c,b)},replace:function(a,c){var d=this.indexOf(a);0<=d&&(this.ya(),this.v()[d]=c,this.xa())},sorted:function(a){var c=this().slice(0);
return a?c.sort(a):c.sort()},reversed:function(){return this().slice(0).reverse()}};a.a.Ba&&a.a.setPrototypeOf(a.Ha.fn,a.ta.fn);a.a.D("pop push reverse shift sort splice unshift".split(" "),function(b){a.Ha.fn[b]=function(){var a=this.v();this.ya();this.zc(a,b,arguments);var d=a[b].apply(a,arguments);this.xa();return d===a?this:d}});a.a.D(["slice"],function(b){a.Ha.fn[b]=function(){var a=this();return a[b].apply(a,arguments)}});a.Pc=function(b){return a.O(b)&&"function"==typeof b.remove&&"function"==
typeof b.push};a.b("observableArray",a.Ha);a.b("isObservableArray",a.Pc);a.Ta.trackArrayChanges=function(b,c){function d(){function c(){if(m){var d=[].concat(b.v()||[]),e;if(b.Wa("arrayChange")){if(!f||1<m)f=a.a.Pb(k,d,b.Ob);e=f}k=d;f=null;m=0;e&&e.length&&b.notifySubscribers(e,"arrayChange")}}e?c():(e=!0,h=b.subscribe(function(){++m},null,"spectate"),k=[].concat(b.v()||[]),f=null,g=b.subscribe(c))}b.Ob={};c&&"object"==typeof c&&a.a.extend(b.Ob,c);b.Ob.sparse=!0;if(!b.zc){var e=!1,f=null,g,h,m=0,
k,l=b.Qa,p=b.hb;b.Qa=function(a){l&&l.call(b,a);"arrayChange"===a&&d()};b.hb=function(a){p&&p.call(b,a);"arrayChange"!==a||b.Wa("arrayChange")||(g&&g.s(),h&&h.s(),h=g=null,e=!1,k=n)};b.zc=function(b,c,d){function l(a,b,c){return k[k.length]={status:a,value:b,index:c}}if(e&&!m){var k=[],p=b.length,g=d.length,h=0;switch(c){case "push":h=p;case "unshift":for(c=0;c<g;c++)l("added",d[c],h+c);break;case "pop":h=p-1;case "shift":p&&l("deleted",b[h],h);break;case "splice":c=Math.min(Math.max(0,0>d[0]?p+d[0]:
d[0]),p);for(var p=1===g?p:Math.min(c+(d[1]||0),p),g=c+g-2,h=Math.max(p,g),U=[],L=[],n=2;c<h;++c,++n)c<p&&L.push(l("deleted",b[c],c)),c<g&&U.push(l("added",d[n],c));a.a.Kc(L,U);break;default:return}f=k}}}};var r=a.a.Da("_state");a.o=a.$=function(b,c,d){function e(){if(0<arguments.length){if("function"===typeof f)f.apply(g.nb,arguments);else throw Error("Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.");return this}g.ra||
a.u.cc(e);(g.ka||g.J&&e.Xa())&&e.ha();return g.X}"object"===typeof b?d=b:(d=d||{},b&&(d.read=b));if("function"!=typeof d.read)throw Error("Pass a function that returns the value of the ko.computed");var f=d.write,g={X:n,sa:!0,ka:!0,rb:!1,jc:!1,ra:!1,wb:!1,J:!1,Wc:d.read,nb:c||d.owner,l:d.disposeWhenNodeIsRemoved||d.l||null,Sa:d.disposeWhen||d.Sa,Rb:null,I:{},V:0,Ic:null};e[r]=g;e.Nc="function"===typeof f;a.a.Ba||a.a.extend(e,a.T.fn);a.T.fn.qb(e);a.a.Ab(e,C);d.pure?(g.wb=!0,g.J=!0,a.a.extend(e,da)):
d.deferEvaluation&&a.a.extend(e,ea);a.options.deferUpdates&&a.Ta.deferred(e,!0);g.l&&(g.jc=!0,g.l.nodeType||(g.l=null));g.J||d.deferEvaluation||e.ha();g.l&&e.ja()&&a.a.K.za(g.l,g.Rb=function(){e.s()});return e};var C={equalityComparer:K,qa:function(){return this[r].V},Va:function(){var b=[];a.a.P(this[r].I,function(a,d){b[d.Ka]=d.da});return b},Vb:function(b){if(!this[r].V)return!1;var c=this.Va();return-1!==a.a.A(c,b)?!0:!!a.a.Lb(c,function(a){return a.Vb&&a.Vb(b)})},uc:function(a,c,d){if(this[r].wb&&
c===this)throw Error("A 'pure' computed must not be called recursively");this[r].I[a]=d;d.Ka=this[r].V++;d.La=c.ob()},Xa:function(){var a,c,d=this[r].I;for(a in d)if(Object.prototype.hasOwnProperty.call(d,a)&&(c=d[a],this.Ia&&c.da.Ja||c.da.Dd(c.La)))return!0},Jd:function(){this.Ia&&!this[r].rb&&this.Ia(!1)},ja:function(){var a=this[r];return a.ka||0<a.V},Rd:function(){this.Ja?this[r].ka&&(this[r].sa=!0):this.Hc()},$c:function(a){if(a.Hb){var c=a.subscribe(this.Jd,this,"dirty"),d=a.subscribe(this.Rd,
this);return{da:a,s:function(){c.s();d.s()}}}return a.subscribe(this.Hc,this)},Hc:function(){var b=this,c=b.throttleEvaluation;c&&0<=c?(clearTimeout(this[r].Ic),this[r].Ic=a.a.setTimeout(function(){b.ha(!0)},c)):b.Ia?b.Ia(!0):b.ha(!0)},ha:function(b){var c=this[r],d=c.Sa,e=!1;if(!c.rb&&!c.ra){if(c.l&&!a.a.Sb(c.l)||d&&d()){if(!c.jc){this.s();return}}else c.jc=!1;c.rb=!0;try{e=this.zd(b)}finally{c.rb=!1}return e}},zd:function(b){var c=this[r],d=!1,e=c.wb?n:!c.V,d={qd:this,mb:c.I,Qb:c.V};a.u.xc({pd:d,
od:ba,o:this,Ya:e});c.I={};c.V=0;var f=this.yd(c,d);c.V?d=this.sb(c.X,f):(this.s(),d=!0);d&&(c.J?this.Gb():this.notifySubscribers(c.X,"beforeChange"),c.X=f,this.notifySubscribers(c.X,"spectate"),!c.J&&b&&this.notifySubscribers(c.X),this.rc&&this.rc());e&&this.notifySubscribers(c.X,"awake");return d},yd:function(b,c){try{var d=b.Wc;return b.nb?d.call(b.nb):d()}finally{a.u.end(),c.Qb&&!b.J&&a.a.P(c.mb,aa),b.sa=b.ka=!1}},v:function(a){var c=this[r];(c.ka&&(a||!c.V)||c.J&&this.Xa())&&this.ha();return c.X},
ub:function(b){a.T.fn.ub.call(this,b);this.nc=function(){this[r].J||(this[r].sa?this.ha():this[r].ka=!1);return this[r].X};this.Ia=function(a){this.pc(this[r].X);this[r].ka=!0;a&&(this[r].sa=!0);this.qc(this,!a)}},s:function(){var b=this[r];!b.J&&b.I&&a.a.P(b.I,function(a,b){b.s&&b.s()});b.l&&b.Rb&&a.a.K.yb(b.l,b.Rb);b.I=n;b.V=0;b.ra=!0;b.sa=!1;b.ka=!1;b.J=!1;b.l=n;b.Sa=n;b.Wc=n;this.Nc||(b.nb=n)}},da={Qa:function(b){var c=this,d=c[r];if(!d.ra&&d.J&&"change"==b){d.J=!1;if(d.sa||c.Xa())d.I=null,d.V=
0,c.ha()&&c.Gb();else{var e=[];a.a.P(d.I,function(a,b){e[b.Ka]=a});a.a.D(e,function(a,b){var e=d.I[a],m=c.$c(e.da);m.Ka=b;m.La=e.La;d.I[a]=m});c.Xa()&&c.ha()&&c.Gb()}d.ra||c.notifySubscribers(d.X,"awake")}},hb:function(b){var c=this[r];c.ra||"change"!=b||this.Wa("change")||(a.a.P(c.I,function(a,b){b.s&&(c.I[a]={da:b.da,Ka:b.Ka,La:b.La},b.s())}),c.J=!0,this.notifySubscribers(n,"asleep"))},ob:function(){var b=this[r];b.J&&(b.sa||this.Xa())&&this.ha();return a.T.fn.ob.call(this)}},ea={Qa:function(a){"change"!=
a&&"beforeChange"!=a||this.v()}};a.a.Ba&&a.a.setPrototypeOf(C,a.T.fn);var N=a.ta.Ma;C[N]=a.o;a.Oc=function(a){return"function"==typeof a&&a[N]===C[N]};a.Fd=function(b){return a.Oc(b)&&b[r]&&b[r].wb};a.b("computed",a.o);a.b("dependentObservable",a.o);a.b("isComputed",a.Oc);a.b("isPureComputed",a.Fd);a.b("computed.fn",C);a.L(C,"peek",C.v);a.L(C,"dispose",C.s);a.L(C,"isActive",C.ja);a.L(C,"getDependenciesCount",C.qa);a.L(C,"getDependencies",C.Va);a.xb=function(b,c){if("function"===typeof b)return a.o(b,
c,{pure:!0});b=a.a.extend({},b);b.pure=!0;return a.o(b,c)};a.b("pureComputed",a.xb);(function(){function b(a,f,g){g=g||new d;a=f(a);if("object"!=typeof a||null===a||a===n||a instanceof RegExp||a instanceof Date||a instanceof String||a instanceof Number||a instanceof Boolean)return a;var h=a instanceof Array?[]:{};g.save(a,h);c(a,function(c){var d=f(a[c]);switch(typeof d){case "boolean":case "number":case "string":case "function":h[c]=d;break;case "object":case "undefined":var l=g.get(d);h[c]=l!==
n?l:b(d,f,g)}});return h}function c(a,b){if(a instanceof Array){for(var c=0;c<a.length;c++)b(c);"function"==typeof a.toJSON&&b("toJSON")}else for(c in a)b(c)}function d(){this.keys=[];this.values=[]}a.ad=function(c){if(0==arguments.length)throw Error("When calling ko.toJS, pass the object you want to convert.");return b(c,function(b){for(var c=0;a.O(b)&&10>c;c++)b=b();return b})};a.toJSON=function(b,c,d){b=a.ad(b);return a.a.hc(b,c,d)};d.prototype={constructor:d,save:function(b,c){var d=a.a.A(this.keys,
b);0<=d?this.values[d]=c:(this.keys.push(b),this.values.push(c))},get:function(b){b=a.a.A(this.keys,b);return 0<=b?this.values[b]:n}}})();a.b("toJS",a.ad);a.b("toJSON",a.toJSON);a.Wd=function(b,c,d){function e(c){var e=a.xb(b,d).extend({ma:"always"}),h=e.subscribe(function(a){a&&(h.s(),c(a))});e.notifySubscribers(e.v());return h}return"function"!==typeof Promise||c?e(c.bind(d)):new Promise(e)};a.b("when",a.Wd);(function(){a.w={M:function(b){switch(a.a.R(b)){case "option":return!0===b.__ko__hasDomDataOptionValue__?
a.a.g.get(b,a.c.options.$b):7>=a.a.W?b.getAttributeNode("value")&&b.getAttributeNode("value").specified?b.value:b.text:b.value;case "select":return 0<=b.selectedIndex?a.w.M(b.options[b.selectedIndex]):n;default:return b.value}},cb:function(b,c,d){switch(a.a.R(b)){case "option":"string"===typeof c?(a.a.g.set(b,a.c.options.$b,n),"__ko__hasDomDataOptionValue__"in b&&delete b.__ko__hasDomDataOptionValue__,b.value=c):(a.a.g.set(b,a.c.options.$b,c),b.__ko__hasDomDataOptionValue__=!0,b.value="number"===
typeof c?c:"");break;case "select":if(""===c||null===c)c=n;for(var e=-1,f=0,g=b.options.length,h;f<g;++f)if(h=a.w.M(b.options[f]),h==c||""===h&&c===n){e=f;break}if(d||0<=e||c===n&&1<b.size)b.selectedIndex=e,6===a.a.W&&a.a.setTimeout(function(){b.selectedIndex=e},0);break;default:if(null===c||c===n)c="";b.value=c}}}})();a.b("selectExtensions",a.w);a.b("selectExtensions.readValue",a.w.M);a.b("selectExtensions.writeValue",a.w.cb);a.m=function(){function b(b){b=a.a.Db(b);123===b.charCodeAt(0)&&(b=b.slice(1,
-1));b+="\n,";var c=[],d=b.match(e),p,q=[],h=0;if(1<d.length){for(var x=0,B;B=d[x];++x){var u=B.charCodeAt(0);if(44===u){if(0>=h){c.push(p&&q.length?{key:p,value:q.join("")}:{unknown:p||q.join("")});p=h=0;q=[];continue}}else if(58===u){if(!h&&!p&&1===q.length){p=q.pop();continue}}else if(47===u&&1<B.length&&(47===B.charCodeAt(1)||42===B.charCodeAt(1)))continue;else 47===u&&x&&1<B.length?(u=d[x-1].match(f))&&!g[u[0]]&&(b=b.substr(b.indexOf(B)+1),d=b.match(e),x=-1,B="/"):40===u||123===u||91===u?++h:
41===u||125===u||93===u?--h:p||q.length||34!==u&&39!==u||(B=B.slice(1,-1));q.push(B)}if(0<h)throw Error("Unbalanced parentheses, braces, or brackets");}return c}var c=["true","false","null","undefined"],d=/^(?:[$_a-z][$\w]*|(.+)(\.\s*[$_a-z][$\w]*|\[.+\]))$/i,e=RegExp("\"(?:\\\\.|[^\"])*\"|'(?:\\\\.|[^'])*'|`(?:\\\\.|[^`])*`|/\\*(?:[^*]|\\*+[^*/])*\\*+/|//.*\n|/(?:\\\\.|[^/])+/w*|[^\\s:,/][^,\"'`{}()/:[\\]]*[^\\s,\"'`{}()/:[\\]]|[^\\s]","g"),f=/[\])"'A-Za-z0-9_$]+$/,g={"in":1,"return":1,"typeof":1},
h={};return{Ra:[],wa:h,ac:b,vb:function(e,f){function l(b,e){var f;if(!x){var k=a.getBindingHandler(b);if(k&&k.preprocess&&!(e=k.preprocess(e,b,l)))return;if(k=h[b])f=e,0<=a.a.A(c,f)?f=!1:(k=f.match(d),f=null===k?!1:k[1]?"Object("+k[1]+")"+k[2]:f),k=f;k&&q.push("'"+("string"==typeof h[b]?h[b]:b)+"':function(_z){"+f+"=_z}")}g&&(e="function(){return "+e+" }");p.push("'"+b+"':"+e)}f=f||{};var p=[],q=[],g=f.valueAccessors,x=f.bindingParams,B="string"===typeof e?b(e):e;a.a.D(B,function(a){l(a.key||a.unknown,
a.value)});q.length&&l("_ko_property_writers","{"+q.join(",")+" }");return p.join(",")},Id:function(a,b){for(var c=0;c<a.length;c++)if(a[c].key==b)return!0;return!1},eb:function(b,c,d,e,f){if(b&&a.O(b))!a.Za(b)||f&&b.v()===e||b(e);else if((b=c.get("_ko_property_writers"))&&b[d])b[d](e)}}}();a.b("expressionRewriting",a.m);a.b("expressionRewriting.bindingRewriteValidators",a.m.Ra);a.b("expressionRewriting.parseObjectLiteral",a.m.ac);a.b("expressionRewriting.preProcessBindings",a.m.vb);a.b("expressionRewriting._twoWayBindings",
a.m.wa);a.b("jsonExpressionRewriting",a.m);a.b("jsonExpressionRewriting.insertPropertyAccessorsIntoJson",a.m.vb);(function(){function b(a){return 8==a.nodeType&&g.test(f?a.text:a.nodeValue)}function c(a){return 8==a.nodeType&&h.test(f?a.text:a.nodeValue)}function d(d,e){for(var f=d,h=1,g=[];f=f.nextSibling;){if(c(f)&&(a.a.g.set(f,k,!0),h--,0===h))return g;g.push(f);b(f)&&h++}if(!e)throw Error("Cannot find closing comment tag to match: "+d.nodeValue);return null}function e(a,b){var c=d(a,b);return c?
0<c.length?c[c.length-1].nextSibling:a.nextSibling:null}var f=w&&"\x3c!--test--\x3e"===w.createComment("test").text,g=f?/^\x3c!--\s*ko(?:\s+([\s\S]+))?\s*--\x3e$/:/^\s*ko(?:\s+([\s\S]+))?\s*$/,h=f?/^\x3c!--\s*\/ko\s*--\x3e$/:/^\s*\/ko\s*$/,m={ul:!0,ol:!0},k="__ko_matchedEndComment__";a.h={ea:{},childNodes:function(a){return b(a)?d(a):a.childNodes},Ea:function(c){if(b(c)){c=a.h.childNodes(c);for(var d=0,e=c.length;d<e;d++)a.removeNode(c[d])}else a.a.Tb(c)},va:function(c,d){if(b(c)){a.h.Ea(c);for(var e=
c.nextSibling,f=0,k=d.length;f<k;f++)e.parentNode.insertBefore(d[f],e)}else a.a.va(c,d)},Vc:function(a,c){var d;b(a)?(d=a.nextSibling,a=a.parentNode):d=a.firstChild;d?c!==d&&a.insertBefore(c,d):a.appendChild(c)},Wb:function(c,d,e){e?(e=e.nextSibling,b(c)&&(c=c.parentNode),e?d!==e&&c.insertBefore(d,e):c.appendChild(d)):a.h.Vc(c,d)},firstChild:function(a){if(b(a))return!a.nextSibling||c(a.nextSibling)?null:a.nextSibling;if(a.firstChild&&c(a.firstChild))throw Error("Found invalid end comment, as the first child of "+
a);return a.firstChild},nextSibling:function(d){b(d)&&(d=e(d));if(d.nextSibling&&c(d.nextSibling)){var f=d.nextSibling;if(c(f)&&!a.a.g.get(f,k))throw Error("Found end comment without a matching opening comment, as child of "+d);return null}return d.nextSibling},Cd:b,Vd:function(a){return(a=(f?a.text:a.nodeValue).match(g))?a[1]:null},Sc:function(d){if(m[a.a.R(d)]){var f=d.firstChild;if(f){do if(1===f.nodeType){var k;k=f.firstChild;var h=null;if(k){do if(h)h.push(k);else if(b(k)){var g=e(k,!0);g?k=
g:h=[k]}else c(k)&&(h=[k]);while(k=k.nextSibling)}if(k=h)for(h=f.nextSibling,g=0;g<k.length;g++)h?d.insertBefore(k[g],h):d.appendChild(k[g])}while(f=f.nextSibling)}}}}})();a.b("virtualElements",a.h);a.b("virtualElements.allowedBindings",a.h.ea);a.b("virtualElements.emptyNode",a.h.Ea);a.b("virtualElements.insertAfter",a.h.Wb);a.b("virtualElements.prepend",a.h.Vc);a.b("virtualElements.setDomNodeChildren",a.h.va);(function(){a.ga=function(){this.nd={}};a.a.extend(a.ga.prototype,{nodeHasBindings:function(b){switch(b.nodeType){case 1:return null!=
b.getAttribute("data-bind")||a.j.getComponentNameForNode(b);case 8:return a.h.Cd(b);default:return!1}},getBindings:function(b,c){var d=this.getBindingsString(b,c),d=d?this.parseBindingsString(d,c,b):null;return a.j.tc(d,b,c,!1)},getBindingAccessors:function(b,c){var d=this.getBindingsString(b,c),d=d?this.parseBindingsString(d,c,b,{valueAccessors:!0}):null;return a.j.tc(d,b,c,!0)},getBindingsString:function(b){switch(b.nodeType){case 1:return b.getAttribute("data-bind");case 8:return a.h.Vd(b);default:return null}},
parseBindingsString:function(b,c,d,e){try{var f=this.nd,g=b+(e&&e.valueAccessors||""),h;if(!(h=f[g])){var m,k="with($context){with($data||{}){return{"+a.m.vb(b,e)+"}}}";m=new Function("$context","$element",k);h=f[g]=m}return h(c,d)}catch(l){throw l.message="Unable to parse bindings.\nBindings value: "+b+"\nMessage: "+l.message,l;}}});a.ga.instance=new a.ga})();a.b("bindingProvider",a.ga);(function(){function b(b){var c=(b=a.a.g.get(b,z))&&b.N;c&&(b.N=null,c.Tc())}function c(c,d,e){this.node=c;this.yc=
d;this.kb=[];this.H=!1;d.N||a.a.K.za(c,b);e&&e.N&&(e.N.kb.push(c),this.Kb=e)}function d(a){return function(){return a}}function e(a){return a()}function f(b){return a.a.Ga(a.u.G(b),function(a,c){return function(){return b()[c]}})}function g(b,c,e){return"function"===typeof b?f(b.bind(null,c,e)):a.a.Ga(b,d)}function h(a,b){return f(this.getBindings.bind(this,a,b))}function m(b,c){var d=a.h.firstChild(c);if(d){var e,f=a.ga.instance,l=f.preprocessNode;if(l){for(;e=d;)d=a.h.nextSibling(e),l.call(f,e);
d=a.h.firstChild(c)}for(;e=d;)d=a.h.nextSibling(e),k(b,e)}a.i.ma(c,a.i.H)}function k(b,c){var d=b,e=1===c.nodeType;e&&a.h.Sc(c);if(e||a.ga.instance.nodeHasBindings(c))d=p(c,null,b).bindingContextForDescendants;d&&!u[a.a.R(c)]&&m(d,c)}function l(b){var c=[],d={},e=[];a.a.P(b,function ca(f){if(!d[f]){var k=a.getBindingHandler(f);k&&(k.after&&(e.push(f),a.a.D(k.after,function(c){if(b[c]){if(-1!==a.a.A(e,c))throw Error("Cannot combine the following bindings, because they have a cyclic dependency: "+e.join(", "));
ca(c)}}),e.length--),c.push({key:f,Mc:k}));d[f]=!0}});return c}function p(b,c,d){var f=a.a.g.Ub(b,z,{}),k=f.hd;if(!c){if(k)throw Error("You cannot apply bindings multiple times to the same element.");f.hd=!0}k||(f.context=d);f.Zb||(f.Zb={});var g;if(c&&"function"!==typeof c)g=c;else{var p=a.ga.instance,q=p.getBindingAccessors||h,m=a.$(function(){if(g=c?c(d,b):q.call(p,b,d)){if(d[t])d[t]();if(d[B])d[B]()}return g},null,{l:b});g&&m.ja()||(m=null)}var x=d,u;if(g){var J=function(){return a.a.Ga(m?m():
g,e)},r=m?function(a){return function(){return e(m()[a])}}:function(a){return g[a]};J.get=function(a){return g[a]&&e(r(a))};J.has=function(a){return a in g};a.i.H in g&&a.i.subscribe(b,a.i.H,function(){var c=(0,g[a.i.H])();if(c){var d=a.h.childNodes(b);d.length&&c(d,a.Ec(d[0]))}});a.i.pa in g&&(x=a.i.Cb(b,d),a.i.subscribe(b,a.i.pa,function(){var c=(0,g[a.i.pa])();c&&a.h.firstChild(b)&&c(b)}));f=l(g);a.a.D(f,function(c){var d=c.Mc.init,e=c.Mc.update,f=c.key;if(8===b.nodeType&&!a.h.ea[f])throw Error("The binding '"+
f+"' cannot be used with virtual elements");try{"function"==typeof d&&a.u.G(function(){var a=d(b,r(f),J,x.$data,x);if(a&&a.controlsDescendantBindings){if(u!==n)throw Error("Multiple bindings ("+u+" and "+f+") are trying to control descendant bindings of the same element. You cannot use these bindings together on the same element.");u=f}}),"function"==typeof e&&a.$(function(){e(b,r(f),J,x.$data,x)},null,{l:b})}catch(k){throw k.message='Unable to process binding "'+f+": "+g[f]+'"\nMessage: '+k.message,
k;}})}f=u===n;return{shouldBindDescendants:f,bindingContextForDescendants:f&&x}}function q(b,c){return b&&b instanceof a.fa?b:new a.fa(b,n,n,c)}var t=a.a.Da("_subscribable"),x=a.a.Da("_ancestorBindingInfo"),B=a.a.Da("_dataDependency");a.c={};var u={script:!0,textarea:!0,template:!0};a.getBindingHandler=function(b){return a.c[b]};var J={};a.fa=function(b,c,d,e,f){function k(){var b=p?h():h,f=a.a.f(b);c?(a.a.extend(l,c),x in c&&(l[x]=c[x])):(l.$parents=[],l.$root=f,l.ko=a);l[t]=q;g?f=l.$data:(l.$rawData=
b,l.$data=f);d&&(l[d]=f);e&&e(l,c,f);if(c&&c[t]&&!a.S.o().Vb(c[t]))c[t]();m&&(l[B]=m);return l.$data}var l=this,g=b===J,h=g?n:b,p="function"==typeof h&&!a.O(h),q,m=f&&f.dataDependency;f&&f.exportDependencies?k():(q=a.xb(k),q.v(),q.ja()?q.equalityComparer=null:l[t]=n)};a.fa.prototype.createChildContext=function(b,c,d,e){!e&&c&&"object"==typeof c&&(e=c,c=e.as,d=e.extend);if(c&&e&&e.noChildContext){var f="function"==typeof b&&!a.O(b);return new a.fa(J,this,null,function(a){d&&d(a);a[c]=f?b():b},e)}return new a.fa(b,
this,c,function(a,b){a.$parentContext=b;a.$parent=b.$data;a.$parents=(b.$parents||[]).slice(0);a.$parents.unshift(a.$parent);d&&d(a)},e)};a.fa.prototype.extend=function(b,c){return new a.fa(J,this,null,function(c){a.a.extend(c,"function"==typeof b?b(c):b)},c)};var z=a.a.g.Z();c.prototype.Tc=function(){this.Kb&&this.Kb.N&&this.Kb.N.sd(this.node)};c.prototype.sd=function(b){a.a.Pa(this.kb,b);!this.kb.length&&this.H&&this.Cc()};c.prototype.Cc=function(){this.H=!0;this.yc.N&&!this.kb.length&&(this.yc.N=
null,a.a.K.yb(this.node,b),a.i.ma(this.node,a.i.pa),this.Tc())};a.i={H:"childrenComplete",pa:"descendantsComplete",subscribe:function(b,c,d,e,f){var k=a.a.g.Ub(b,z,{});k.Fa||(k.Fa=new a.T);f&&f.notifyImmediately&&k.Zb[c]&&a.u.G(d,e,[b]);return k.Fa.subscribe(d,e,c)},ma:function(b,c){var d=a.a.g.get(b,z);if(d&&(d.Zb[c]=!0,d.Fa&&d.Fa.notifySubscribers(b,c),c==a.i.H))if(d.N)d.N.Cc();else if(d.N===n&&d.Fa&&d.Fa.Wa(a.i.pa))throw Error("descendantsComplete event not supported for bindings on this node");
},Cb:function(b,d){var e=a.a.g.Ub(b,z,{});e.N||(e.N=new c(b,e,d[x]));return d[x]==e?d:d.extend(function(a){a[x]=e})}};a.Td=function(b){return(b=a.a.g.get(b,z))&&b.context};a.ib=function(b,c,d){1===b.nodeType&&a.h.Sc(b);return p(b,c,q(d))};a.ld=function(b,c,d){d=q(d);return a.ib(b,g(c,d,b),d)};a.Oa=function(a,b){1!==b.nodeType&&8!==b.nodeType||m(q(a),b)};a.vc=function(a,b,c){!v&&A.jQuery&&(v=A.jQuery);if(2>arguments.length){if(b=w.body,!b)throw Error("ko.applyBindings: could not find document.body; has the document been loaded?");
}else if(!b||1!==b.nodeType&&8!==b.nodeType)throw Error("ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node");k(q(a,c),b)};a.Dc=function(b){return!b||1!==b.nodeType&&8!==b.nodeType?n:a.Td(b)};a.Ec=function(b){return(b=a.Dc(b))?b.$data:n};a.b("bindingHandlers",a.c);a.b("bindingEvent",a.i);a.b("bindingEvent.subscribe",a.i.subscribe);a.b("bindingEvent.startPossiblyAsyncContentBinding",a.i.Cb);a.b("applyBindings",a.vc);a.b("applyBindingsToDescendants",a.Oa);
a.b("applyBindingAccessorsToNode",a.ib);a.b("applyBindingsToNode",a.ld);a.b("contextFor",a.Dc);a.b("dataFor",a.Ec)})();(function(b){function c(c,e){var k=Object.prototype.hasOwnProperty.call(f,c)?f[c]:b,l;k?k.subscribe(e):(k=f[c]=new a.T,k.subscribe(e),d(c,function(b,d){var e=!(!d||!d.synchronous);g[c]={definition:b,Gd:e};delete f[c];l||e?k.notifySubscribers(b):a.na.zb(function(){k.notifySubscribers(b)})}),l=!0)}function d(a,b){e("getConfig",[a],function(c){c?e("loadComponent",[a,c],function(a){b(a,
c)}):b(null,null)})}function e(c,d,f,l){l||(l=a.j.loaders.slice(0));var g=l.shift();if(g){var q=g[c];if(q){var t=!1;if(q.apply(g,d.concat(function(a){t?f(null):null!==a?f(a):e(c,d,f,l)}))!==b&&(t=!0,!g.suppressLoaderExceptions))throw Error("Component loaders must supply values by invoking the callback, not by returning values synchronously.");}else e(c,d,f,l)}else f(null)}var f={},g={};a.j={get:function(d,e){var f=Object.prototype.hasOwnProperty.call(g,d)?g[d]:b;f?f.Gd?a.u.G(function(){e(f.definition)}):
a.na.zb(function(){e(f.definition)}):c(d,e)},Bc:function(a){delete g[a]},oc:e};a.j.loaders=[];a.b("components",a.j);a.b("components.get",a.j.get);a.b("components.clearCachedDefinition",a.j.Bc)})();(function(){function b(b,c,d,e){function g(){0===--B&&e(h)}var h={},B=2,u=d.template;d=d.viewModel;u?f(c,u,function(c){a.j.oc("loadTemplate",[b,c],function(a){h.template=a;g()})}):g();d?f(c,d,function(c){a.j.oc("loadViewModel",[b,c],function(a){h[m]=a;g()})}):g()}function c(a,b,d){if("function"===typeof b)d(function(a){return new b(a)});
else if("function"===typeof b[m])d(b[m]);else if("instance"in b){var e=b.instance;d(function(){return e})}else"viewModel"in b?c(a,b.viewModel,d):a("Unknown viewModel value: "+b)}function d(b){switch(a.a.R(b)){case "script":return a.a.ua(b.text);case "textarea":return a.a.ua(b.value);case "template":if(e(b.content))return a.a.Ca(b.content.childNodes)}return a.a.Ca(b.childNodes)}function e(a){return A.DocumentFragment?a instanceof DocumentFragment:a&&11===a.nodeType}function f(a,b,c){"string"===typeof b.require?
T||A.require?(T||A.require)([b.require],function(a){a&&"object"===typeof a&&a.Xd&&a["default"]&&(a=a["default"]);c(a)}):a("Uses require, but no AMD loader is present"):c(b)}function g(a){return function(b){throw Error("Component '"+a+"': "+b);}}var h={};a.j.register=function(b,c){if(!c)throw Error("Invalid configuration for "+b);if(a.j.tb(b))throw Error("Component "+b+" is already registered");h[b]=c};a.j.tb=function(a){return Object.prototype.hasOwnProperty.call(h,a)};a.j.unregister=function(b){delete h[b];
a.j.Bc(b)};a.j.Fc={getConfig:function(b,c){c(a.j.tb(b)?h[b]:null)},loadComponent:function(a,c,d){var e=g(a);f(e,c,function(c){b(a,e,c,d)})},loadTemplate:function(b,c,f){b=g(b);if("string"===typeof c)f(a.a.ua(c));else if(c instanceof Array)f(c);else if(e(c))f(a.a.la(c.childNodes));else if(c.element)if(c=c.element,A.HTMLElement?c instanceof HTMLElement:c&&c.tagName&&1===c.nodeType)f(d(c));else if("string"===typeof c){var h=w.getElementById(c);h?f(d(h)):b("Cannot find element with ID "+c)}else b("Unknown element type: "+
c);else b("Unknown template value: "+c)},loadViewModel:function(a,b,d){c(g(a),b,d)}};var m="createViewModel";a.b("components.register",a.j.register);a.b("components.isRegistered",a.j.tb);a.b("components.unregister",a.j.unregister);a.b("components.defaultLoader",a.j.Fc);a.j.loaders.push(a.j.Fc);a.j.dd=h})();(function(){function b(b,e){var f=b.getAttribute("params");if(f){var f=c.parseBindingsString(f,e,b,{valueAccessors:!0,bindingParams:!0}),f=a.a.Ga(f,function(c){return a.o(c,null,{l:b})}),g=a.a.Ga(f,
function(c){var e=c.v();return c.ja()?a.o({read:function(){return a.a.f(c())},write:a.Za(e)&&function(a){c()(a)},l:b}):e});Object.prototype.hasOwnProperty.call(g,"$raw")||(g.$raw=f);return g}return{$raw:{}}}a.j.getComponentNameForNode=function(b){var c=a.a.R(b);if(a.j.tb(c)&&(-1!=c.indexOf("-")||"[object HTMLUnknownElement]"==""+b||8>=a.a.W&&b.tagName===c))return c};a.j.tc=function(c,e,f,g){if(1===e.nodeType){var h=a.j.getComponentNameForNode(e);if(h){c=c||{};if(c.component)throw Error('Cannot use the "component" binding on a custom element matching a component');
var m={name:h,params:b(e,f)};c.component=g?function(){return m}:m}}return c};var c=new a.ga;9>a.a.W&&(a.j.register=function(a){return function(b){return a.apply(this,arguments)}}(a.j.register),w.createDocumentFragment=function(b){return function(){var c=b(),f=a.j.dd,g;for(g in f);return c}}(w.createDocumentFragment))})();(function(){function b(b,c,d){c=c.template;if(!c)throw Error("Component '"+b+"' has no template");b=a.a.Ca(c);a.h.va(d,b)}function c(a,b,c){var d=a.createViewModel;return d?d.call(a,
b,c):b}var d=0;a.c.component={init:function(e,f,g,h,m){function k(){var a=l&&l.dispose;"function"===typeof a&&a.call(l);q&&q.s();p=l=q=null}var l,p,q,t=a.a.la(a.h.childNodes(e));a.h.Ea(e);a.a.K.za(e,k);a.o(function(){var g=a.a.f(f()),h,u;"string"===typeof g?h=g:(h=a.a.f(g.name),u=a.a.f(g.params));if(!h)throw Error("No component name specified");var n=a.i.Cb(e,m),z=p=++d;a.j.get(h,function(d){if(p===z){k();if(!d)throw Error("Unknown component '"+h+"'");b(h,d,e);var f=c(d,u,{element:e,templateNodes:t});
d=n.createChildContext(f,{extend:function(a){a.$component=f;a.$componentTemplateNodes=t}});f&&f.koDescendantsComplete&&(q=a.i.subscribe(e,a.i.pa,f.koDescendantsComplete,f));l=f;a.Oa(d,e)}})},null,{l:e});return{controlsDescendantBindings:!0}}};a.h.ea.component=!0})();var V={"class":"className","for":"htmlFor"};a.c.attr={update:function(b,c){var d=a.a.f(c())||{};a.a.P(d,function(c,d){d=a.a.f(d);var g=c.indexOf(":"),g="lookupNamespaceURI"in b&&0<g&&b.lookupNamespaceURI(c.substr(0,g)),h=!1===d||null===
d||d===n;h?g?b.removeAttributeNS(g,c):b.removeAttribute(c):d=d.toString();8>=a.a.W&&c in V?(c=V[c],h?b.removeAttribute(c):b[c]=d):h||(g?b.setAttributeNS(g,c,d):b.setAttribute(c,d));"name"===c&&a.a.Yc(b,h?"":d)})}};(function(){a.c.checked={after:["value","attr"],init:function(b,c,d){function e(){var e=b.checked,f=g();if(!a.S.Ya()&&(e||!m&&!a.S.qa())){var k=a.u.G(c);if(l){var q=p?k.v():k,z=t;t=f;z!==f?e&&(a.a.Na(q,f,!0),a.a.Na(q,z,!1)):a.a.Na(q,f,e);p&&a.Za(k)&&k(q)}else h&&(f===n?f=e:e||(f=n)),a.m.eb(k,
d,"checked",f,!0)}}function f(){var d=a.a.f(c()),e=g();l?(b.checked=0<=a.a.A(d,e),t=e):b.checked=h&&e===n?!!d:g()===d}var g=a.xb(function(){if(d.has("checkedValue"))return a.a.f(d.get("checkedValue"));if(q)return d.has("value")?a.a.f(d.get("value")):b.value}),h="checkbox"==b.type,m="radio"==b.type;if(h||m){var k=c(),l=h&&a.a.f(k)instanceof Array,p=!(l&&k.push&&k.splice),q=m||l,t=l?g():n;m&&!b.name&&a.c.uniqueName.init(b,function(){return!0});a.o(e,null,{l:b});a.a.B(b,"click",e);a.o(f,null,{l:b});
k=n}}};a.m.wa.checked=!0;a.c.checkedValue={update:function(b,c){b.value=a.a.f(c())}}})();a.c["class"]={update:function(b,c){var d=a.a.Db(a.a.f(c()));a.a.Eb(b,b.__ko__cssValue,!1);b.__ko__cssValue=d;a.a.Eb(b,d,!0)}};a.c.css={update:function(b,c){var d=a.a.f(c());null!==d&&"object"==typeof d?a.a.P(d,function(c,d){d=a.a.f(d);a.a.Eb(b,c,d)}):a.c["class"].update(b,c)}};a.c.enable={update:function(b,c){var d=a.a.f(c());d&&b.disabled?b.removeAttribute("disabled"):d||b.disabled||(b.disabled=!0)}};a.c.disable=
{update:function(b,c){a.c.enable.update(b,function(){return!a.a.f(c())})}};a.c.event={init:function(b,c,d,e,f){var g=c()||{};a.a.P(g,function(g){"string"==typeof g&&a.a.B(b,g,function(b){var k,l=c()[g];if(l){try{var p=a.a.la(arguments);e=f.$data;p.unshift(e);k=l.apply(e,p)}finally{!0!==k&&(b.preventDefault?b.preventDefault():b.returnValue=!1)}!1===d.get(g+"Bubble")&&(b.cancelBubble=!0,b.stopPropagation&&b.stopPropagation())}})})}};a.c.foreach={Rc:function(b){return function(){var c=b(),d=a.a.bc(c);
if(!d||"number"==typeof d.length)return{foreach:c,templateEngine:a.ba.Ma};a.a.f(c);return{foreach:d.data,as:d.as,noChildContext:d.noChildContext,includeDestroyed:d.includeDestroyed,afterAdd:d.afterAdd,beforeRemove:d.beforeRemove,afterRender:d.afterRender,beforeMove:d.beforeMove,afterMove:d.afterMove,templateEngine:a.ba.Ma}}},init:function(b,c){return a.c.template.init(b,a.c.foreach.Rc(c))},update:function(b,c,d,e,f){return a.c.template.update(b,a.c.foreach.Rc(c),d,e,f)}};a.m.Ra.foreach=!1;a.h.ea.foreach=
!0;a.c.hasfocus={init:function(b,c,d){function e(e){b.__ko_hasfocusUpdating=!0;var f=b.ownerDocument;if("activeElement"in f){var g;try{g=f.activeElement}catch(l){g=f.body}e=g===b}f=c();a.m.eb(f,d,"hasfocus",e,!0);b.__ko_hasfocusLastValue=e;b.__ko_hasfocusUpdating=!1}var f=e.bind(null,!0),g=e.bind(null,!1);a.a.B(b,"focus",f);a.a.B(b,"focusin",f);a.a.B(b,"blur",g);a.a.B(b,"focusout",g);b.__ko_hasfocusLastValue=!1},update:function(b,c){var d=!!a.a.f(c());b.__ko_hasfocusUpdating||b.__ko_hasfocusLastValue===
d||(d?b.focus():b.blur(),!d&&b.__ko_hasfocusLastValue&&b.ownerDocument.body.focus(),a.u.G(a.a.Fb,null,[b,d?"focusin":"focusout"]))}};a.m.wa.hasfocus=!0;a.c.hasFocus=a.c.hasfocus;a.m.wa.hasFocus="hasfocus";a.c.html={init:function(){return{controlsDescendantBindings:!0}},update:function(b,c){a.a.fc(b,c())}};(function(){function b(b,d,e){a.c[b]={init:function(b,c,h,m,k){var l,p,q={},t,x,n;if(d){m=h.get("as");var u=h.get("noChildContext");n=!(m&&u);q={as:m,noChildContext:u,exportDependencies:n}}x=(t=
"render"==h.get("completeOn"))||h.has(a.i.pa);a.o(function(){var h=a.a.f(c()),m=!e!==!h,u=!p,r;if(n||m!==l){x&&(k=a.i.Cb(b,k));if(m){if(!d||n)q.dataDependency=a.S.o();r=d?k.createChildContext("function"==typeof h?h:c,q):a.S.qa()?k.extend(null,q):k}u&&a.S.qa()&&(p=a.a.Ca(a.h.childNodes(b),!0));m?(u||a.h.va(b,a.a.Ca(p)),a.Oa(r,b)):(a.h.Ea(b),t||a.i.ma(b,a.i.H));l=m}},null,{l:b});return{controlsDescendantBindings:!0}}};a.m.Ra[b]=!1;a.h.ea[b]=!0}b("if");b("ifnot",!1,!0);b("with",!0)})();a.c.let={init:function(b,
c,d,e,f){c=f.extend(c);a.Oa(c,b);return{controlsDescendantBindings:!0}}};a.h.ea.let=!0;var Q={};a.c.options={init:function(b){if("select"!==a.a.R(b))throw Error("options binding applies only to SELECT elements");for(;0<b.length;)b.remove(0);return{controlsDescendantBindings:!0}},update:function(b,c,d){function e(){return a.a.jb(b.options,function(a){return a.selected})}function f(a,b,c){var d=typeof b;return"function"==d?b(a):"string"==d?a[b]:c}function g(c,d){if(x&&l)a.i.ma(b,a.i.H);else if(t.length){var e=
0<=a.a.A(t,a.w.M(d[0]));a.a.Zc(d[0],e);x&&!e&&a.u.G(a.a.Fb,null,[b,"change"])}}var h=b.multiple,m=0!=b.length&&h?b.scrollTop:null,k=a.a.f(c()),l=d.get("valueAllowUnset")&&d.has("value"),p=d.get("optionsIncludeDestroyed");c={};var q,t=[];l||(h?t=a.a.Mb(e(),a.w.M):0<=b.selectedIndex&&t.push(a.w.M(b.options[b.selectedIndex])));k&&("undefined"==typeof k.length&&(k=[k]),q=a.a.jb(k,function(b){return p||b===n||null===b||!a.a.f(b._destroy)}),d.has("optionsCaption")&&(k=a.a.f(d.get("optionsCaption")),null!==
k&&k!==n&&q.unshift(Q)));var x=!1;c.beforeRemove=function(a){b.removeChild(a)};k=g;d.has("optionsAfterRender")&&"function"==typeof d.get("optionsAfterRender")&&(k=function(b,c){g(0,c);a.u.G(d.get("optionsAfterRender"),null,[c[0],b!==Q?b:n])});a.a.ec(b,q,function(c,e,g){g.length&&(t=!l&&g[0].selected?[a.w.M(g[0])]:[],x=!0);e=b.ownerDocument.createElement("option");c===Q?(a.a.Bb(e,d.get("optionsCaption")),a.w.cb(e,n)):(g=f(c,d.get("optionsValue"),c),a.w.cb(e,a.a.f(g)),c=f(c,d.get("optionsText"),g),
a.a.Bb(e,c));return[e]},c,k);if(!l){var B;h?B=t.length&&e().length<t.length:B=t.length&&0<=b.selectedIndex?a.w.M(b.options[b.selectedIndex])!==t[0]:t.length||0<=b.selectedIndex;B&&a.u.G(a.a.Fb,null,[b,"change"])}(l||a.S.Ya())&&a.i.ma(b,a.i.H);a.a.wd(b);m&&20<Math.abs(m-b.scrollTop)&&(b.scrollTop=m)}};a.c.options.$b=a.a.g.Z();a.c.selectedOptions={init:function(b,c,d){function e(){var e=c(),f=[];a.a.D(b.getElementsByTagName("option"),function(b){b.selected&&f.push(a.w.M(b))});a.m.eb(e,d,"selectedOptions",
f)}function f(){var d=a.a.f(c()),e=b.scrollTop;d&&"number"==typeof d.length&&a.a.D(b.getElementsByTagName("option"),function(b){var c=0<=a.a.A(d,a.w.M(b));b.selected!=c&&a.a.Zc(b,c)});b.scrollTop=e}if("select"!=a.a.R(b))throw Error("selectedOptions binding applies only to SELECT elements");var g;a.i.subscribe(b,a.i.H,function(){g?e():(a.a.B(b,"change",e),g=a.o(f,null,{l:b}))},null,{notifyImmediately:!0})},update:function(){}};a.m.wa.selectedOptions=!0;a.c.style={update:function(b,c){var d=a.a.f(c()||
{});a.a.P(d,function(c,d){d=a.a.f(d);if(null===d||d===n||!1===d)d="";if(v)v(b).css(c,d);else if(/^--/.test(c))b.style.setProperty(c,d);else{c=c.replace(/-(\w)/g,function(a,b){return b.toUpperCase()});var g=b.style[c];b.style[c]=d;d===g||b.style[c]!=g||isNaN(d)||(b.style[c]=d+"px")}})}};a.c.submit={init:function(b,c,d,e,f){if("function"!=typeof c())throw Error("The value for a submit binding must be a function");a.a.B(b,"submit",function(a){var d,e=c();try{d=e.call(f.$data,b)}finally{!0!==d&&(a.preventDefault?
a.preventDefault():a.returnValue=!1)}})}};a.c.text={init:function(){return{controlsDescendantBindings:!0}},update:function(b,c){a.a.Bb(b,c())}};a.h.ea.text=!0;(function(){if(A&&A.navigator){var b=function(a){if(a)return parseFloat(a[1])},c=A.navigator.userAgent,d,e,f,g,h;(d=A.opera&&A.opera.version&&parseInt(A.opera.version()))||(h=b(c.match(/Edge\/([^ ]+)$/)))||b(c.match(/Chrome\/([^ ]+)/))||(e=b(c.match(/Version\/([^ ]+) Safari/)))||(f=b(c.match(/Firefox\/([^ ]+)/)))||(g=a.a.W||b(c.match(/MSIE ([^ ]+)/)))||
(g=b(c.match(/rv:([^ )]+)/)))}if(8<=g&&10>g)var m=a.a.g.Z(),k=a.a.g.Z(),l=function(b){var c=this.activeElement;(c=c&&a.a.g.get(c,k))&&c(b)},p=function(b,c){var d=b.ownerDocument;a.a.g.get(d,m)||(a.a.g.set(d,m,!0),a.a.B(d,"selectionchange",l));a.a.g.set(b,k,c)};a.c.textInput={init:function(b,c,k){function l(c,d){a.a.B(b,c,d)}function m(){var d=a.a.f(c());if(null===d||d===n)d="";L!==n&&d===L?a.a.setTimeout(m,4):b.value!==d&&(y=!0,b.value=d,y=!1,v=b.value)}function r(){w||(L=b.value,w=a.a.setTimeout(z,
4))}function z(){clearTimeout(w);L=w=n;var d=b.value;v!==d&&(v=d,a.m.eb(c(),k,"textInput",d))}var v=b.value,w,L,A=9==a.a.W?r:z,y=!1;g&&l("keypress",z);11>g&&l("propertychange",function(a){y||"value"!==a.propertyName||A(a)});8==g&&(l("keyup",z),l("keydown",z));p&&(p(b,A),l("dragend",r));(!g||9<=g)&&l("input",A);5>e&&"textarea"===a.a.R(b)?(l("keydown",r),l("paste",r),l("cut",r)):11>d?l("keydown",r):4>f?(l("DOMAutoComplete",z),l("dragdrop",z),l("drop",z)):h&&"number"===b.type&&l("keydown",r);l("change",
z);l("blur",z);a.o(m,null,{l:b})}};a.m.wa.textInput=!0;a.c.textinput={preprocess:function(a,b,c){c("textInput",a)}}})();a.c.uniqueName={init:function(b,c){if(c()){var d="ko_unique_"+ ++a.c.uniqueName.rd;a.a.Yc(b,d)}}};a.c.uniqueName.rd=0;a.c.using={init:function(b,c,d,e,f){var g;d.has("as")&&(g={as:d.get("as"),noChildContext:d.get("noChildContext")});c=f.createChildContext(c,g);a.Oa(c,b);return{controlsDescendantBindings:!0}}};a.h.ea.using=!0;a.c.value={init:function(b,c,d){var e=a.a.R(b),f="input"==
e;if(!f||"checkbox"!=b.type&&"radio"!=b.type){var g=[],h=d.get("valueUpdate"),m=!1,k=null;h&&("string"==typeof h?g=[h]:g=a.a.wc(h),a.a.Pa(g,"change"));var l=function(){k=null;m=!1;var e=c(),f=a.w.M(b);a.m.eb(e,d,"value",f)};!a.a.W||!f||"text"!=b.type||"off"==b.autocomplete||b.form&&"off"==b.form.autocomplete||-1!=a.a.A(g,"propertychange")||(a.a.B(b,"propertychange",function(){m=!0}),a.a.B(b,"focus",function(){m=!1}),a.a.B(b,"blur",function(){m&&l()}));a.a.D(g,function(c){var d=l;a.a.Ud(c,"after")&&
(d=function(){k=a.w.M(b);a.a.setTimeout(l,0)},c=c.substring(5));a.a.B(b,c,d)});var p;p=f&&"file"==b.type?function(){var d=a.a.f(c());null===d||d===n||""===d?b.value="":a.u.G(l)}:function(){var f=a.a.f(c()),g=a.w.M(b);if(null!==k&&f===k)a.a.setTimeout(p,0);else if(f!==g||g===n)"select"===e?(g=d.get("valueAllowUnset"),a.w.cb(b,f,g),g||f===a.w.M(b)||a.u.G(l)):a.w.cb(b,f)};if("select"===e){var q;a.i.subscribe(b,a.i.H,function(){q?d.get("valueAllowUnset")?p():l():(a.a.B(b,"change",l),q=a.o(p,null,{l:b}))},
null,{notifyImmediately:!0})}else a.a.B(b,"change",l),a.o(p,null,{l:b})}else a.ib(b,{checkedValue:c})},update:function(){}};a.m.wa.value=!0;a.c.visible={update:function(b,c){var d=a.a.f(c()),e="none"!=b.style.display;d&&!e?b.style.display="":!d&&e&&(b.style.display="none")}};a.c.hidden={update:function(b,c){a.c.visible.update(b,function(){return!a.a.f(c())})}};(function(b){a.c[b]={init:function(c,d,e,f,g){return a.c.event.init.call(this,c,function(){var a={};a[b]=d();return a},e,f,g)}}})("click");
a.ca=function(){};a.ca.prototype.renderTemplateSource=function(){throw Error("Override renderTemplateSource");};a.ca.prototype.createJavaScriptEvaluatorBlock=function(){throw Error("Override createJavaScriptEvaluatorBlock");};a.ca.prototype.makeTemplateSource=function(b,c){if("string"==typeof b){c=c||w;var d=c.getElementById(b);if(!d)throw Error("Cannot find template with ID "+b);return new a.C.F(d)}if(1==b.nodeType||8==b.nodeType)return new a.C.ia(b);throw Error("Unknown template type: "+b);};a.ca.prototype.renderTemplate=
function(a,c,d,e){a=this.makeTemplateSource(a,e);return this.renderTemplateSource(a,c,d,e)};a.ca.prototype.isTemplateRewritten=function(a,c){return!1===this.allowTemplateRewriting?!0:this.makeTemplateSource(a,c).data("isRewritten")};a.ca.prototype.rewriteTemplate=function(a,c,d){a=this.makeTemplateSource(a,d);c=c(a.text());a.text(c);a.data("isRewritten",!0)};a.b("templateEngine",a.ca);a.kc=function(){function b(b,c,d,h){b=a.m.ac(b);for(var m=a.m.Ra,k=0;k<b.length;k++){var l=b[k].key;if(Object.prototype.hasOwnProperty.call(m,
l)){var p=m[l];if("function"===typeof p){if(l=p(b[k].value))throw Error(l);}else if(!p)throw Error("This template engine does not support the '"+l+"' binding within its templates");}}d="ko.__tr_ambtns(function($context,$element){return(function(){return{ "+a.m.vb(b,{valueAccessors:!0})+" } })()},'"+d.toLowerCase()+"')";return h.createJavaScriptEvaluatorBlock(d)+c}var c=/(<([a-z]+\d*)(?:\s+(?!data-bind\s*=\s*)[a-z0-9\-]+(?:=(?:\"[^\"]*\"|\'[^\']*\'|[^>]*))?)*\s+)data-bind\s*=\s*(["'])([\s\S]*?)\3/gi,
d=/\x3c!--\s*ko\b\s*([\s\S]*?)\s*--\x3e/g;return{xd:function(b,c,d){c.isTemplateRewritten(b,d)||c.rewriteTemplate(b,function(b){return a.kc.Ld(b,c)},d)},Ld:function(a,f){return a.replace(c,function(a,c,d,e,l){return b(l,c,d,f)}).replace(d,function(a,c){return b(c,"\x3c!-- ko --\x3e","#comment",f)})},md:function(b,c){return a.aa.Xb(function(d,h){var m=d.nextSibling;m&&m.nodeName.toLowerCase()===c&&a.ib(m,b,h)})}}}();a.b("__tr_ambtns",a.kc.md);(function(){a.C={};a.C.F=function(b){if(this.F=b){var c=
a.a.R(b);this.ab="script"===c?1:"textarea"===c?2:"template"==c&&b.content&&11===b.content.nodeType?3:4}};a.C.F.prototype.text=function(){var b=1===this.ab?"text":2===this.ab?"value":"innerHTML";if(0==arguments.length)return this.F[b];var c=arguments[0];"innerHTML"===b?a.a.fc(this.F,c):this.F[b]=c};var b=a.a.g.Z()+"_";a.C.F.prototype.data=function(c){if(1===arguments.length)return a.a.g.get(this.F,b+c);a.a.g.set(this.F,b+c,arguments[1])};var c=a.a.g.Z();a.C.F.prototype.nodes=function(){var b=this.F;
if(0==arguments.length){var e=a.a.g.get(b,c)||{},f=e.lb||(3===this.ab?b.content:4===this.ab?b:n);if(!f||e.jd){var g=this.text();g&&g!==e.bb&&(f=a.a.Md(g,b.ownerDocument),a.a.g.set(b,c,{lb:f,bb:g,jd:!0}))}return f}e=arguments[0];this.ab!==n&&this.text("");a.a.g.set(b,c,{lb:e})};a.C.ia=function(a){this.F=a};a.C.ia.prototype=new a.C.F;a.C.ia.prototype.constructor=a.C.ia;a.C.ia.prototype.text=function(){if(0==arguments.length){var b=a.a.g.get(this.F,c)||{};b.bb===n&&b.lb&&(b.bb=b.lb.innerHTML);return b.bb}a.a.g.set(this.F,
c,{bb:arguments[0]})};a.b("templateSources",a.C);a.b("templateSources.domElement",a.C.F);a.b("templateSources.anonymousTemplate",a.C.ia)})();(function(){function b(b,c,d){var e;for(c=a.h.nextSibling(c);b&&(e=b)!==c;)b=a.h.nextSibling(e),d(e,b)}function c(c,d){if(c.length){var e=c[0],f=c[c.length-1],g=e.parentNode,h=a.ga.instance,m=h.preprocessNode;if(m){b(e,f,function(a,b){var c=a.previousSibling,d=m.call(h,a);d&&(a===e&&(e=d[0]||b),a===f&&(f=d[d.length-1]||c))});c.length=0;if(!e)return;e===f?c.push(e):
(c.push(e,f),a.a.Ua(c,g))}b(e,f,function(b){1!==b.nodeType&&8!==b.nodeType||a.vc(d,b)});b(e,f,function(b){1!==b.nodeType&&8!==b.nodeType||a.aa.cd(b,[d])});a.a.Ua(c,g)}}function d(a){return a.nodeType?a:0<a.length?a[0]:null}function e(b,e,f,h,m){m=m||{};var n=(b&&d(b)||f||{}).ownerDocument,B=m.templateEngine||g;a.kc.xd(f,B,n);f=B.renderTemplate(f,h,m,n);if("number"!=typeof f.length||0<f.length&&"number"!=typeof f[0].nodeType)throw Error("Template engine must return an array of DOM nodes");n=!1;switch(e){case "replaceChildren":a.h.va(b,
f);n=!0;break;case "replaceNode":a.a.Xc(b,f);n=!0;break;case "ignoreTargetNode":break;default:throw Error("Unknown renderMode: "+e);}n&&(c(f,h),m.afterRender&&a.u.G(m.afterRender,null,[f,h[m.as||"$data"]]),"replaceChildren"==e&&a.i.ma(b,a.i.H));return f}function f(b,c,d){return a.O(b)?b():"function"===typeof b?b(c,d):b}var g;a.gc=function(b){if(b!=n&&!(b instanceof a.ca))throw Error("templateEngine must inherit from ko.templateEngine");g=b};a.dc=function(b,c,h,m,t){h=h||{};if((h.templateEngine||g)==
n)throw Error("Set a template engine before calling renderTemplate");t=t||"replaceChildren";if(m){var x=d(m);return a.$(function(){var g=c&&c instanceof a.fa?c:new a.fa(c,null,null,null,{exportDependencies:!0}),n=f(b,g.$data,g),g=e(m,t,n,g,h);"replaceNode"==t&&(m=g,x=d(m))},null,{Sa:function(){return!x||!a.a.Sb(x)},l:x&&"replaceNode"==t?x.parentNode:x})}return a.aa.Xb(function(d){a.dc(b,c,h,d,"replaceNode")})};a.Qd=function(b,d,g,h,m){function x(b,c){a.u.G(a.a.ec,null,[h,b,u,g,r,c]);a.i.ma(h,a.i.H)}
function r(a,b){c(b,v);g.afterRender&&g.afterRender(b,a);v=null}function u(a,c){v=m.createChildContext(a,{as:z,noChildContext:g.noChildContext,extend:function(a){a.$index=c;z&&(a[z+"Index"]=c)}});var d=f(b,a,v);return e(h,"ignoreTargetNode",d,v,g)}var v,z=g.as,w=!1===g.includeDestroyed||a.options.foreachHidesDestroyed&&!g.includeDestroyed;if(w||g.beforeRemove||!a.Pc(d))return a.$(function(){var b=a.a.f(d)||[];"undefined"==typeof b.length&&(b=[b]);w&&(b=a.a.jb(b,function(b){return b===n||null===b||
!a.a.f(b._destroy)}));x(b)},null,{l:h});x(d.v());var A=d.subscribe(function(a){x(d(),a)},null,"arrayChange");A.l(h);return A};var h=a.a.g.Z(),m=a.a.g.Z();a.c.template={init:function(b,c){var d=a.a.f(c());if("string"==typeof d||"name"in d)a.h.Ea(b);else if("nodes"in d){d=d.nodes||[];if(a.O(d))throw Error('The "nodes" option must be a plain, non-observable array.');var e=d[0]&&d[0].parentNode;e&&a.a.g.get(e,m)||(e=a.a.Yb(d),a.a.g.set(e,m,!0));(new a.C.ia(b)).nodes(e)}else if(d=a.h.childNodes(b),0<d.length)e=
a.a.Yb(d),(new a.C.ia(b)).nodes(e);else throw Error("Anonymous template defined, but no template content was provided");return{controlsDescendantBindings:!0}},update:function(b,c,d,e,f){var g=c();c=a.a.f(g);d=!0;e=null;"string"==typeof c?c={}:(g="name"in c?c.name:b,"if"in c&&(d=a.a.f(c["if"])),d&&"ifnot"in c&&(d=!a.a.f(c.ifnot)),d&&!g&&(d=!1));"foreach"in c?e=a.Qd(g,d&&c.foreach||[],c,b,f):d?(d=f,"data"in c&&(d=f.createChildContext(c.data,{as:c.as,noChildContext:c.noChildContext,exportDependencies:!0})),
e=a.dc(g,d,c,b)):a.h.Ea(b);f=e;(c=a.a.g.get(b,h))&&"function"==typeof c.s&&c.s();a.a.g.set(b,h,!f||f.ja&&!f.ja()?n:f)}};a.m.Ra.template=function(b){b=a.m.ac(b);return 1==b.length&&b[0].unknown||a.m.Id(b,"name")?null:"This template engine does not support anonymous templates nested within its templates"};a.h.ea.template=!0})();a.b("setTemplateEngine",a.gc);a.b("renderTemplate",a.dc);a.a.Kc=function(a,c,d){if(a.length&&c.length){var e,f,g,h,m;for(e=f=0;(!d||e<d)&&(h=a[f]);++f){for(g=0;m=c[g];++g)if(h.value===
m.value){h.moved=m.index;m.moved=h.index;c.splice(g,1);e=g=0;break}e+=g}}};a.a.Pb=function(){function b(b,d,e,f,g){var h=Math.min,m=Math.max,k=[],l,p=b.length,q,n=d.length,r=n-p||1,v=p+n+1,u,w,z;for(l=0;l<=p;l++)for(w=u,k.push(u=[]),z=h(n,l+r),q=m(0,l-1);q<=z;q++)u[q]=q?l?b[l-1]===d[q-1]?w[q-1]:h(w[q]||v,u[q-1]||v)+1:q+1:l+1;h=[];m=[];r=[];l=p;for(q=n;l||q;)n=k[l][q]-1,q&&n===k[l][q-1]?m.push(h[h.length]={status:e,value:d[--q],index:q}):l&&n===k[l-1][q]?r.push(h[h.length]={status:f,value:b[--l],index:l}):
(--q,--l,g.sparse||h.push({status:"retained",value:d[q]}));a.a.Kc(r,m,!g.dontLimitMoves&&10*p);return h.reverse()}return function(a,d,e){e="boolean"===typeof e?{dontLimitMoves:e}:e||{};a=a||[];d=d||[];return a.length<d.length?b(a,d,"added","deleted",e):b(d,a,"deleted","added",e)}}();a.b("utils.compareArrays",a.a.Pb);(function(){function b(b,c,d,h,m){var k=[],l=a.$(function(){var l=c(d,m,a.a.Ua(k,b))||[];0<k.length&&(a.a.Xc(k,l),h&&a.u.G(h,null,[d,l,m]));k.length=0;a.a.Nb(k,l)},null,{l:b,Sa:function(){return!a.a.kd(k)}});
return{Y:k,$:l.ja()?l:n}}var c=a.a.g.Z(),d=a.a.g.Z();a.a.ec=function(e,f,g,h,m,k){function l(b){y={Aa:b,pb:a.ta(w++)};v.push(y);r||F.push(y)}function p(b){y=t[b];w!==y.pb.v()&&D.push(y);y.pb(w++);a.a.Ua(y.Y,e);v.push(y)}function q(b,c){if(b)for(var d=0,e=c.length;d<e;d++)a.a.D(c[d].Y,function(a){b(a,d,c[d].Aa)})}f=f||[];"undefined"==typeof f.length&&(f=[f]);h=h||{};var t=a.a.g.get(e,c),r=!t,v=[],u=0,w=0,z=[],A=[],C=[],D=[],F=[],y,I=0;if(r)a.a.D(f,l);else{if(!k||t&&t._countWaitingForRemove){var E=
a.a.Mb(t,function(a){return a.Aa});k=a.a.Pb(E,f,{dontLimitMoves:h.dontLimitMoves,sparse:!0})}for(var E=0,G,H,K;G=k[E];E++)switch(H=G.moved,K=G.index,G.status){case "deleted":for(;u<K;)p(u++);H===n&&(y=t[u],y.$&&(y.$.s(),y.$=n),a.a.Ua(y.Y,e).length&&(h.beforeRemove&&(v.push(y),I++,y.Aa===d?y=null:C.push(y)),y&&z.push.apply(z,y.Y)));u++;break;case "added":for(;w<K;)p(u++);H!==n?(A.push(v.length),p(H)):l(G.value)}for(;w<f.length;)p(u++);v._countWaitingForRemove=I}a.a.g.set(e,c,v);q(h.beforeMove,D);a.a.D(z,
h.beforeRemove?a.oa:a.removeNode);var M,O,P;try{P=e.ownerDocument.activeElement}catch(N){}if(A.length)for(;(E=A.shift())!=n;){y=v[E];for(M=n;E;)if((O=v[--E].Y)&&O.length){M=O[O.length-1];break}for(f=0;u=y.Y[f];M=u,f++)a.h.Wb(e,u,M)}for(E=0;y=v[E];E++){y.Y||a.a.extend(y,b(e,g,y.Aa,m,y.pb));for(f=0;u=y.Y[f];M=u,f++)a.h.Wb(e,u,M);!y.Ed&&m&&(m(y.Aa,y.Y,y.pb),y.Ed=!0,M=y.Y[y.Y.length-1])}P&&e.ownerDocument.activeElement!=P&&P.focus();q(h.beforeRemove,C);for(E=0;E<C.length;++E)C[E].Aa=d;q(h.afterMove,D);
q(h.afterAdd,F)}})();a.b("utils.setDomNodeChildrenFromArrayMapping",a.a.ec);a.ba=function(){this.allowTemplateRewriting=!1};a.ba.prototype=new a.ca;a.ba.prototype.constructor=a.ba;a.ba.prototype.renderTemplateSource=function(b,c,d,e){if(c=(9>a.a.W?0:b.nodes)?b.nodes():null)return a.a.la(c.cloneNode(!0).childNodes);b=b.text();return a.a.ua(b,e)};a.ba.Ma=new a.ba;a.gc(a.ba.Ma);a.b("nativeTemplateEngine",a.ba);(function(){a.$a=function(){var a=this.Hd=function(){if(!v||!v.tmpl)return 0;try{if(0<=v.tmpl.tag.tmpl.open.toString().indexOf("__"))return 2}catch(a){}return 1}();
this.renderTemplateSource=function(b,e,f,g){g=g||w;f=f||{};if(2>a)throw Error("Your version of jQuery.tmpl is too old. Please upgrade to jQuery.tmpl 1.0.0pre or later.");var h=b.data("precompiled");h||(h=b.text()||"",h=v.template(null,"{{ko_with $item.koBindingContext}}"+h+"{{/ko_with}}"),b.data("precompiled",h));b=[e.$data];e=v.extend({koBindingContext:e},f.templateOptions);e=v.tmpl(h,b,e);e.appendTo(g.createElement("div"));v.fragments={};return e};this.createJavaScriptEvaluatorBlock=function(a){return"{{ko_code ((function() { return "+
a+" })()) }}"};this.addTemplate=function(a,b){w.write("<script type='text/html' id='"+a+"'>"+b+"\x3c/script>")};0<a&&(v.tmpl.tag.ko_code={open:"__.push($1 || '');"},v.tmpl.tag.ko_with={open:"with($1) {",close:"} "})};a.$a.prototype=new a.ca;a.$a.prototype.constructor=a.$a;var b=new a.$a;0<b.Hd&&a.gc(b);a.b("jqueryTmplTemplateEngine",a.$a)})()})})();})();
js/wfdashboard.1722265817.js000064400000000555150755146450011112 0ustar00if (!window['WFDash']) {
	window['WFDash'] = {
		updateNotificationCount: function(count) {
			(function($) {
				$('.wf-notification-count-value').html(count);
				if (count == 0) {
					$('.wf-notification-count-container').addClass('wf-hidden');
				}
				else {
					$('.wf-notification-count-container').removeClass('wf-hidden');
				}
			})(jQuery);
		}
	}
}
js/wfi18n.1722265817.js000064400000014533150755146450007743 0ustar00(function () {

	window.wfi18n = {
		__: function(text) {
			if (window.WordfenceI18nStrings && text in window.WordfenceI18nStrings) {
				return window.WordfenceI18nStrings[text];
			}
			return text;
		}
	};

	if (typeof wp === 'object' && wp.i18n) {
		window.wfi18n.sprintf = wp.i18n.sprintf;
		return;
	}

	/**
	 * Code has been adapted from WordPress' i18n.js functions and is being used as a polyfill for WordPress
	 * versions before 5.0.
	 */
	var re = {
		not_string: /[^s]/,
		not_bool: /[^t]/,
		not_type: /[^T]/,
		not_primitive: /[^v]/,
		number: /[diefg]/,
		numeric_arg: /[bcdiefguxX]/,
		json: /[j]/,
		not_json: /[^j]/,
		text: /^[^\x25]+/,
		modulo: /^\x25{2}/,
		placeholder: /^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,
		key: /^([a-z_][a-z_\d]*)/i,
		key_access: /^\.([a-z_][a-z_\d]*)/i,
		index_access: /^\[(\d+)\]/,
		sign: /^[+-]/
	};

	function sprintf(key) {
		// `arguments` is not an array, but should be fine for this call
		return sprintf_format(sprintf_parse(key), arguments)
	}

	function vsprintf(fmt, argv) {
		return sprintf.apply(null, [fmt].concat(argv || []))
	}

	function sprintf_format(parse_tree, argv) {
		var cursor = 1, tree_length = parse_tree.length, arg, output = '', i, k, ph, pad, pad_character, pad_length, is_positive, sign
		for (i = 0; i < tree_length; i++) {
			if (typeof parse_tree[i] === 'string') {
				output += parse_tree[i]
			}
			else if (typeof parse_tree[i] === 'object') {
				ph = parse_tree[i] // convenience purposes only
				if (ph.keys) { // keyword argument
					arg = argv[cursor]
					for (k = 0; k < ph.keys.length; k++) {
						if (arg == undefined) {
							throw new Error(sprintf('[sprintf] Cannot access property "%s" of undefined value "%s"', ph.keys[k], ph.keys[k-1]))
						}
						arg = arg[ph.keys[k]]
					}
				}
				else if (ph.param_no) { // positional argument (explicit)
					arg = argv[ph.param_no]
				}
				else { // positional argument (implicit)
					arg = argv[cursor++]
				}

				if (re.not_type.test(ph.type) && re.not_primitive.test(ph.type) && arg instanceof Function) {
					arg = arg()
				}

				if (re.numeric_arg.test(ph.type) && (typeof arg !== 'number' && isNaN(arg))) {
					throw new TypeError(sprintf('[sprintf] expecting number but found %T', arg))
				}

				if (re.number.test(ph.type)) {
					is_positive = arg >= 0
				}

				switch (ph.type) {
					case 'b':
						arg = parseInt(arg, 10).toString(2)
						break
					case 'c':
						arg = String.fromCharCode(parseInt(arg, 10))
						break
					case 'd':
					case 'i':
						arg = parseInt(arg, 10)
						break
					case 'j':
						arg = JSON.stringify(arg, null, ph.width ? parseInt(ph.width) : 0)
						break
					case 'e':
						arg = ph.precision ? parseFloat(arg).toExponential(ph.precision) : parseFloat(arg).toExponential()
						break
					case 'f':
						arg = ph.precision ? parseFloat(arg).toFixed(ph.precision) : parseFloat(arg)
						break
					case 'g':
						arg = ph.precision ? String(Number(arg.toPrecision(ph.precision))) : parseFloat(arg)
						break
					case 'o':
						arg = (parseInt(arg, 10) >>> 0).toString(8)
						break
					case 's':
						arg = String(arg)
						arg = (ph.precision ? arg.substring(0, ph.precision) : arg)
						break
					case 't':
						arg = String(!!arg)
						arg = (ph.precision ? arg.substring(0, ph.precision) : arg)
						break
					case 'T':
						arg = Object.prototype.toString.call(arg).slice(8, -1).toLowerCase()
						arg = (ph.precision ? arg.substring(0, ph.precision) : arg)
						break
					case 'u':
						arg = parseInt(arg, 10) >>> 0
						break
					case 'v':
						arg = arg.valueOf()
						arg = (ph.precision ? arg.substring(0, ph.precision) : arg)
						break
					case 'x':
						arg = (parseInt(arg, 10) >>> 0).toString(16)
						break
					case 'X':
						arg = (parseInt(arg, 10) >>> 0).toString(16).toUpperCase()
						break
				}
				if (re.json.test(ph.type)) {
					output += arg
				}
				else {
					if (re.number.test(ph.type) && (!is_positive || ph.sign)) {
						sign = is_positive ? '+' : '-'
						arg = arg.toString().replace(re.sign, '')
					}
					else {
						sign = ''
					}
					pad_character = ph.pad_char ? ph.pad_char === '0' ? '0' : ph.pad_char.charAt(1) : ' '
					pad_length = ph.width - (sign + arg).length
					pad = ph.width ? (pad_length > 0 ? pad_character.repeat(pad_length) : '') : ''
					output += ph.align ? sign + arg + pad : (pad_character === '0' ? sign + pad + arg : pad + sign + arg)
				}
			}
		}
		return output
	}

	var sprintf_cache = Object.create(null)

	function sprintf_parse(fmt) {
		if (sprintf_cache[fmt]) {
			return sprintf_cache[fmt]
		}

		var _fmt = fmt, match, parse_tree = [], arg_names = 0
		while (_fmt) {
			if ((match = re.text.exec(_fmt)) !== null) {
				parse_tree.push(match[0])
			}
			else if ((match = re.modulo.exec(_fmt)) !== null) {
				parse_tree.push('%')
			}
			else if ((match = re.placeholder.exec(_fmt)) !== null) {
				if (match[2]) {
					arg_names |= 1
					var field_list = [], replacement_field = match[2], field_match = []
					if ((field_match = re.key.exec(replacement_field)) !== null) {
						field_list.push(field_match[1])
						while ((replacement_field = replacement_field.substring(field_match[0].length)) !== '') {
							if ((field_match = re.key_access.exec(replacement_field)) !== null) {
								field_list.push(field_match[1])
							}
							else if ((field_match = re.index_access.exec(replacement_field)) !== null) {
								field_list.push(field_match[1])
							}
							else {
								throw new SyntaxError('[sprintf] failed to parse named argument key')
							}
						}
					}
					else {
						throw new SyntaxError('[sprintf] failed to parse named argument key')
					}
					match[2] = field_list
				}
				else {
					arg_names |= 2
				}
				if (arg_names === 3) {
					throw new Error('[sprintf] mixing positional and named placeholders is not (yet) supported')
				}

				parse_tree.push(
					{
						placeholder: match[0],
						param_no:    match[1],
						keys:        match[2],
						sign:        match[3],
						pad_char:    match[4],
						align:       match[5],
						width:       match[6],
						precision:   match[7],
						type:        match[8]
					}
				)
			}
			else {
				throw new SyntaxError('[sprintf] unexpected placeholder')
			}
			_fmt = _fmt.substring(match[0].length)
		}
		return sprintf_cache[fmt] = parse_tree
	}

	window.wfi18n.sprintf = sprintf;
})();js/admin.1722265817.js000064400000440551150755146450007722 0ustar00(function($) {
	var sprintf,
		__;

	if (!window['wordfenceAdmin']) { //To compile for checking: java -jar /usr/local/bin/closure.jar --js=admin.js --js_output_file=test.js
		window['wordfenceAdmin'] = {
			isSmallScreen: false,
			loading16: '<div class="wfLoading16"></div>',
			loadingCount: 0,
			dbCheckTables: [],
			dbCheckCount_ok: 0,
			dbCheckCount_skipped: 0,
			dbCheckCount_errors: 0,
			issues: [],
			ignoreData: false,
			iconErrorMsgs: [],
			scanIDLoaded: 0,
			colorboxQueue: [],
			mode: '',
			visibleIssuesPanel: 'new',
			preFirstScanMsgsLoaded: false,
			newestActivityTime: 0, //must be 0 to force loading of all initially
			elementGeneratorIter: 1,
			reloadConfigPage: false,
			nonce: false,
			liveTrafficUpdatePending: false,
			activityLogUpdatePending: false,
			lastALogCtime: 0,
			lastIssueUpdateTime: 0,
			activityQueue: [],
			totalActAdded: 0,
			maxActivityLogItems: 1000,
			scanReqAnimation: false,
			debugOn: false,
			blockedCountriesPending: [],
			ownCountry: "",
			schedStartHour: false,
			currentPointer: false,
			countryMap: false,
			countryCodesToSave: "",
			performanceScale: 3,
			performanceMinWidth: 20,
			_windowHasFocus: true,
			serverTimestampOffset: 0,
			serverMicrotime: 0,
			wfLiveTraffic: null,
			loadingBlockedIPs: false,
			scanRunning: false,
			basePageName: '',
			pendingChanges: {},
			scanStalled: false,
			siteCleaningIssueTypes: ['file', 'checkGSB', 'checkSpamIP', 'commentBadURL', 'knownfile', 'optionBadURL', 'postBadTitle', 'postBadURL', 'spamvertizeCheck', 'suspiciousAdminUsers'],

			//Screen sizes
			SCREEN_XS: 'xs',
			SCREEN_SM: 'sm',
			SCREEN_MD: 'md',
			SCREEN_LG: 'lg',

			init: function() {
				this.isSmallScreen = window.matchMedia("only screen and (max-width: 500px)").matches;
				
				this.nonce = WordfenceAdminVars.firstNonce;
				this.debugOn = WordfenceAdminVars.debugOn == '1' ? true : false;
				this.scanRunning = WordfenceAdminVars.scanRunning == '1' ? true : false;
				this.basePageName = document.title;
				var startTicker = false;
				var self = this;

				$(window).on('blur', function() {
					self._windowHasFocus = false;
				}).on('focus', function() {
					self._windowHasFocus = true;
				}).focus();

				$('.do-show').click(function() {
					var $this = $(this);
					$this.hide();
					$($this.data('selector')).show();
					return false;
				});
				
				$('.downloadLogFile').each(function() {
					$(this).attr('href', WordfenceAdminVars.ajaxURL + '?action=wordfence_downloadLogFile&nonce=' + WFAD.nonce + '&logfile=' + encodeURIComponent($(this).data('logfile')));
				});

				$('#doSendEmail').click(function() {
					var ticket = $('#_ticketnumber').val();
					if (ticket === null || typeof ticket === "undefined" || ticket.length == 0) {
						self.colorboxModal((self.isSmallScreen ? '300px' : '400px'), __("Error"), __("Please include your support ticket number or forum username."));
						return;
					}
					WFAD.ajax('wordfence_sendDiagnostic', {email: $('#_email').val(), ticket: ticket}, function(res) {
						if (res.result) {
							self.colorboxModal((self.isSmallScreen ? '300px' : '400px'), __("Email Diagnostic Report"), __("Diagnostic report has been sent successfully."));
						} else {
							self.colorboxModal((self.isSmallScreen ? '300px' : '400px'), __("Error"), __("There was an error while sending the email."));
						}
					});
				});

				$('#exportDiagnostics').click(function() {
					self.showLoading();

					var diagnosticsExportWindow = window.open(WordfenceAdminVars.ajaxURL + '?action=wordfence_exportDiagnostics&nonce=' + WFAD.nonce);
					diagnosticsExportWindow.onbeforeunload = function() {
						self.removeLoading();
					};
					return false;
				});

				$('#sendByEmail').click(function() {
					$('#sendByEmailForm').removeClass('hidden');
					$(this).hide();
				});

				$('#expandAllDiagnostics').click(function() {
					$('#wf-diagnostics').find('.wf-block').each(function() {
						var el = $(this);
						if (!el.hasClass('wf-active')) {
							el.find('.wf-block-header').trigger('click');
						}
					})
				});

				$(window).bind("scroll", function() {
					$(this).scrollTop() > 200 ? $(".wf-scrollTop").fadeIn() : $(".wf-scrollTop").fadeOut()
				});
				$(".wf-scrollTop").click(function(e) {
					return e.stopPropagation(), $("body,html").animate({
						scrollTop: 0
					}, 800), !1;
				});

				var tabs = jQuery('.wf-page-tabs').find('.wf-tab a');
				if (tabs.length > 0) {
					tabs.click(function() {
						jQuery('.wf-page-tabs').find('.wf-tab').removeClass('wf-active').find('a').attr('aria-selected', 'false');
						jQuery('.wf-tab-content').removeClass('wf-active');
						
						var tab = jQuery(this).closest('.wf-tab');
						tab.addClass('wf-active');
						tab.find('a').attr('aria-selected', 'true');
						var content = jQuery('#' + tab.data('target'));
						content.addClass('wf-active');
						document.title = tab.data('pageTitle') + " \u2039 " + self.basePageName;
						self.sectionInit();
						$(window).trigger('wfTabChange', [tab.data('target')]);
					});
					if (window.location.hash) {
						var hashes = WFAD.parseHashes();
						var hash = hashes[hashes.length - 1];
						for (var i = 0; i < tabs.length; i++) {
							if (hash == jQuery(tabs[i]).closest('.wf-tab').data('target')) {
								jQuery(tabs[i]).trigger('click');
							}
						}
					}
					else {
						jQuery(tabs[0]).trigger('click');
					}
					jQuery(window).on('hashchange', function () {
						var hashes = WFAD.parseHashes();
						var hash = hashes[hashes.length - 1];
						for (var i = 0; i < tabs.length; i++) {
							if (hash == jQuery(tabs[i]).closest('.wf-tab').data('target')) {
								jQuery(tabs[i]).trigger('click');
							}
						}
					});
				}
				else {
					this.sectionInit();
				}
				
				if (this.mode) {
					jQuery(document).bind('cbox_closed', function() {
						self.colorboxIsOpen = false;
						self.colorboxServiceQueue();
					});
				}
				
				if ($('.wf-options-controls-spacer').length) { //The WP code doesn't move update nags and we need to
					$('.update-nag, #update-nag').insertAfter($('.wf-options-controls-spacer'));
				}
				
				$('.wf-block-header-action-disclosure').each(function() {
					$(this).on('keydown', function(e) {
						if (e.keyCode == 32) {
							e.preventDefault();
							e.stopPropagation();

							$(this).closest('.wf-block-header').trigger('click');
						}
					});
					
					$(this).closest('.wf-block-header').css('cursor', 'pointer');
					$(this).closest('.wf-block-header').on('click', function(e) {
						// Let links in the header work.
						if (e.target && e.target.nodeName === 'A' && e.target.href) {
							return;
						}
						e.preventDefault();
						e.stopPropagation();
						
						if ($(this).closest('.wf-block').hasClass('wf-disabled')) {
							return;
						}
						
						var isActive = $(this).closest('.wf-block').hasClass('wf-active');
						if (isActive) {
							//$(this).closest('.wf-block').removeClass('wf-active');
							$(this).closest('.wf-block').find('.wf-block-content').slideUp({
								always: function() {
									$(this).closest('.wf-block').removeClass('wf-active');
									$(this).attr('aria-checked', 'false');
								}
							});
						}
						else {
							//$(this).closest('.wf-block').addClass('wf-active');
							$(this).closest('.wf-block').find('.wf-block-content').slideDown({
								always: function() {
									$(this).closest('.wf-block').addClass('wf-active');
									$(this).attr('aria-checked', 'true');
								}
							});
						}
						
						WFAD.ajax('wordfence_saveDisclosureState', {name: $(this).closest('.wf-block').data('persistenceKey'), state: !isActive}, function() {}, function() {}, true);
					});
				});
				
				//On/Off Option
				$('.wf-option.wf-option-toggled .wf-option-checkbox').each(function() {
					$(this).on('keydown', function(e) {
						if (e.keyCode == 32) {
							e.preventDefault();
							e.stopPropagation();
							
							$(this).trigger('click');
						}
					});
					
					$(this).on('click', function(e) {
						e.preventDefault();
						e.stopPropagation();
						
						var optionElement = $(this).closest('.wf-option');
						if (optionElement.hasClass('wf-option-premium') || optionElement.hasClass('wf-disabled')) {
							return;
						}
						
						var option = optionElement.data('option');
						var value = false;
						var isActive = $(this).hasClass('wf-checked');
						if (isActive) {
							$(this).removeClass('wf-checked').attr('aria-checked', 'false');
							value = optionElement.data('disabledValue');
						}
						else {
							$(this).addClass('wf-checked').attr('aria-checked', 'true');
							value = optionElement.data('enabledValue');
						}
						
						var originalValue = optionElement.data('originalValue');
						if (originalValue == value) {
							delete WFAD.pendingChanges[option];
						}
						else {
							WFAD.pendingChanges[option] = value;
						}

						$(optionElement).trigger('change', [false]);
						WFAD.updatePendingChanges();
					});
					
					$(this).parent().find('.wf-option-title').on('click', function(e) {
						var links = $(this).find('a');
						var buffer = 10;
						for (var i = 0; i < links.length; i++) {
							var t = $(links[i]).offset().top;
							var l = $(links[i]).offset().left;
							var b = t + $(links[i]).height();
							var r = l + $(links[i]).width();
							
							if (e.pageX > l - buffer && e.pageX < r + buffer && e.pageY > t - buffer && e.pageY < b + buffer) {
								return; 
							}
						}
						$(this).parent().find('.wf-option-checkbox').trigger('click');
					}).css('cursor', 'pointer');
				});

				//On/Off Boolean Switch Option
				$('.wf-option.wf-option-toggled-boolean-switch .wf-boolean-switch').each(function() {
					$(this).on('keydown', function(e) {
						if (e.keyCode == 32) {
							e.preventDefault();
							e.stopPropagation();

							$(this).trigger('click');
						}
					});
					
					$(this).on('click', function(e) {
						e.preventDefault();
						e.stopPropagation();
						
						$(this).find('.wf-boolean-switch-handle').trigger('click');
					});

					$(this).find('.wf-boolean-switch-handle').on('click', function(e) {
						e.preventDefault();
						e.stopPropagation();

						var optionElement = $(this).closest('.wf-option');
						if (optionElement.hasClass('wf-option-premium') || optionElement.hasClass('wf-disabled')) {
							return;
						}

						var switchElement = $(this).closest('.wf-boolean-switch');
						var option = optionElement.data('option');
						var value = false;
						var isActive = switchElement.hasClass('wf-active');
						if (isActive) {
							switchElement.removeClass('wf-active').attr('aria-checked', 'false');
							value = optionElement.data('disabledValue');
						}
						else {
							switchElement.addClass('wf-active').attr('aria-checked', 'true');
							value = optionElement.data('enabledValue');
						}

						var originalValue = optionElement.data('originalValue');
						if (originalValue == value) {
							delete WFAD.pendingChanges[option];
						}
						else {
							WFAD.pendingChanges[option] = value;
						}

						$(optionElement).trigger('change', [false]);
						WFAD.updatePendingChanges();
					});

					$(this).parent().find('.wf-option-title').on('click', function(e) {
						var links = $(this).find('a');
						var buffer = 10;
						for (var i = 0; i < links.length; i++) {
							var t = $(links[i]).offset().top;
							var l = $(links[i]).offset().left;
							var b = t + $(links[i]).height();
							var r = l + $(links[i]).width();

							if (e.pageX > l - buffer && e.pageX < r + buffer && e.pageY > t - buffer && e.pageY < b + buffer) {
								return;
							}
						}
						$(this).parent().find('.wf-boolean-switch-handle').trigger('click');
					}).css('cursor', 'pointer');
				});

				//On/Off Segmented Option
				$('.wf-option.wf-option-toggled-segmented [type=radio]').each(function() {
					$(this).on('click', function(e) {
						var optionElement = $(this).closest('.wf-option');
						if (optionElement.hasClass('wf-option-premium') || optionElement.hasClass('wf-disabled')) {
							return;
						}

						var option = optionElement.data('option');
						var value = this.value;

						var originalValue = optionElement.data('originalValue');
						if (originalValue == value) {
							delete WFAD.pendingChanges[option];
						}
						else {
							WFAD.pendingChanges[option] = value;
						}

						$(optionElement).trigger('change', [false]);
						WFAD.updatePendingChanges();
					});
				});

				//On/Off Multiple Option
				$('.wf-option.wf-option-toggled-multiple .wf-option-checkbox').each(function() {
					$(this).on('keydown', function(e) {
						if (e.keyCode == 32) {
							e.preventDefault();
							e.stopPropagation();

							$(this).trigger('click');
						}
					});
					
					$(this).on('click', function(e) {
						e.preventDefault();
						e.stopPropagation();

						var optionElement = $(this).closest('.wf-option');
						if (optionElement.hasClass('wf-option-premium') || optionElement.hasClass('wf-disabled')) {
							return;
						}

						var checkboxElement = $(this).closest('ul');
						var option = checkboxElement.data('option');
						var value = false;
						var isActive = $(this).hasClass('wf-checked');
						if (isActive) {
							$(this).removeClass('wf-checked').attr('aria-checked', 'false');
							value = checkboxElement.data('disabledValue');
						}
						else {
							$(this).addClass('wf-checked').attr('aria-checked', 'true');
							value = checkboxElement.data('enabledValue');
						}

						var originalValue = checkboxElement.data('originalValue');
						if (originalValue == value) {
							delete WFAD.pendingChanges[option];
						}
						else {
							WFAD.pendingChanges[option] = value;
						}

						$(optionElement).trigger('change', [false]);
						WFAD.updatePendingChanges();
					});
				});

				//On/Off Option with menu and Option with menu
				$('.wf-option.wf-option-toggled-select .wf-option-checkbox').each(function() {
					$(this).on('keydown', function(e) {
						if (e.keyCode == 32) {
							e.preventDefault();
							e.stopPropagation();

							$(this).trigger('click');
						}
					});
					
					$(this).on('click', function(e) {
						e.preventDefault();
						e.stopPropagation();

						var optionElement = $(this).closest('.wf-option');
						if (optionElement.hasClass('wf-option-premium') || optionElement.hasClass('wf-disabled')) {
							return;
						}
						
						var selectElement = optionElement.find('.wf-option-select select');
						var option = optionElement.data('toggleOption');
						var value = false;
						var isActive = $(this).hasClass('wf-checked');
						if (isActive) {
							$(this).removeClass('wf-checked').attr('aria-checked', 'false');
							selectElement.attr('disabled', true);
							value = optionElement.data('disabledToggleValue');
						}
						else {
							$(this).addClass('wf-checked').attr('aria-checked', 'true');
							selectElement.attr('disabled', false);
							value = optionElement.data('enabledToggleValue');
						}

						if (option === undefined) {
							return;
						}

						var originalValue = optionElement.data('originalToggleValue');
						if (originalValue == value) {
							delete WFAD.pendingChanges[option];
						}
						else {
							WFAD.pendingChanges[option] = value;
						}

						$(optionElement).trigger('change', [false]);
						WFAD.updatePendingChanges();
					});
					
					$(this).parent().find('.wf-option-title').on('click', function(e) {
						var links = $(this).find('a');
						var buffer = 10;
						for (var i = 0; i < links.length; i++) {
							var t = $(links[i]).offset().top;
							var l = $(links[i]).offset().left;
							var b = t + $(links[i]).height();
							var r = l + $(links[i]).width();

							if (e.pageX > l - buffer && e.pageX < r + buffer && e.pageY > t - buffer && e.pageY < b + buffer) {
								return;
							}
						}
						$(this).closest('.wf-option').find('.wf-option-checkbox').trigger('click');
					}).css('cursor', 'pointer');
				});

				$('.wf-option.wf-option-toggled-select > .wf-option-content > ul > li.wf-option-select select, .wf-option.wf-option-select > .wf-option-content > ul > li.wf-option-select select, .wf-option.wf-option-select > li.wf-option-select select').each(function() {
					if (!$.fn.wfselect2) { return; }
					
					var width = WFAD.isSmallScreen ? '200px' : 'resolve';
					if ($(this).data('preferredWidth')) {
						width = $(this).data('preferredWidth');
					}
					
					$(this).wfselect2({
						minimumResultsForSearch: -1,
						width: width
					}).on('change', function () {
						var optionElement = $(this).closest('.wf-option');
						var option = optionElement.data('selectOption');
						var value = $(this).val();
						
						if (option === undefined) {
							return;
						}

						var originalValue = optionElement.data('originalSelectValue');
						if (originalValue == value) {
							delete WFAD.pendingChanges[option];
						}
						else {
							WFAD.pendingChanges[option] = value;
						}

						$(optionElement).trigger('change', [false]);
						WFAD.updatePendingChanges();
					});
				}).triggerHandler('change');
				
				//Text field option
				$('.wf-option.wf-option-text > .wf-option-content > ul > li.wf-option-text input').on('change paste keyup', function() {
					var e = this;
					
					setTimeout(function() {
						var optionElement = $(e).closest('.wf-option');
						var option = optionElement.data('textOption');
						
						if (typeof option !== 'undefined') {
							var value = $(e).val();
	
							var originalValue = optionElement.data('originalTextValue');
							if (originalValue == value) {
								delete WFAD.pendingChanges[option];
							}
							else {
								WFAD.pendingChanges[option] = value;
							}
	
							$(optionElement).trigger('change', [false]);
							WFAD.updatePendingChanges();
						}
					}, 4);
				});

				//Text area option
				$('.wf-option.wf-option-textarea > .wf-option-content > ul > li.wf-option-textarea textarea').on('change paste keyup', function() {
					var e = this;
					
					setTimeout(function() {
						var optionElement = $(e).closest('.wf-option');
						var option = optionElement.data('textOption');
						var value = $(e).val();
	
						var originalValue = optionElement.data('originalTextValue');
						if (originalValue == value) {
							delete WFAD.pendingChanges[option];
						}
						else {
							WFAD.pendingChanges[option] = value;
						}
	
						$(optionElement).trigger('change', [false]);
						WFAD.updatePendingChanges();
					}, 4);
				});

				//Value entry token option
				if ($.fn.wfselect2) {
					$('.wf-option.wf-option-token select').wfselect2({
						tags: true,
						tokenSeparators: [','],
						width: 'element',
						minimumResultsForSearch: -1,
						selectOnClose: true,
						matcher: function(params, data) {
							return null;
						}
					}).on('wfselect2:unselect', function(e){
						jQuery(e.params.data.element).remove();
					}).on('wfselect2:opening wfselect2:close', function(e){
						$('body').toggleClass('wf-select2-suppress-dropdown', e.type == 'wfselect2:opening');
					}).on('change', function () {
						var optionElement = $(this).closest('.wf-option');
						var option = optionElement.data('tokenOption');
						var value = $(this).val();
						if (!(value instanceof Array)) {
							value = [];
						}
	
						var selected = $(this).find('option:selected');
						var tagsElement = optionElement.find('.wf-option-token-tags');
						var list = $('<ul>');
						selected.each(function(index, option) {
							option = $(option);
							var value = option.val();
							var destroyButton = $('<a>').addClass('wf-destroy-tag-selected')
								.text('x')
								.off('click.wfselect2-copy')
								.on('click.wfselect2-copy', function(e) {
									option.prop('selected', false);
									option.parents('select').trigger('change');
									option.remove();
								});
							var li = $('<li>').addClass('wf-tag-selected')
								.text(value)
								.prepend(destroyButton);
							list.append(li);
						});
						tagsElement.html('').append(list);
	
						var originalValue = optionElement.data('originalTokenValue');
						var match = true;
						if (value.length != originalValue.length) {
							match = false;
						}
						else {
							value = value.sort();
							originalValue = originalValue.sort();
							for (var i = 0; i < value.length; i++) {
								if (value[i] !== originalValue[i]) {
									match = false;
								}
							}
						}
						if (match) {
							delete WFAD.pendingChanges[option];
						}
						else {
							WFAD.pendingChanges[option] = value;
						}
	
						$(optionElement).trigger('change', [false]);
						WFAD.updatePendingChanges();
					}).triggerHandler('change');
	
					$('.wf-option.wf-option-token select').each(function() { 
						$(this).data('wfselect2').$container.addClass('wf-select2-placeholder-fix wf-select2-hide-tags');
					});
				}
				
				//Switch Option
				$('.wf-option.wf-option-switch .wf-switch > li').each(function(index, element) {
					$(this).on('keydown', function(e) {
						if (e.keyCode == 32) {
							e.preventDefault();
							e.stopPropagation();

							$(this).trigger('click');
						}
					});
					
					$(element).on('click', function(e) {
						e.preventDefault();
						e.stopPropagation();

						var optionElement = $(this).closest('ul.wf-option-switch, div.wf-option-switch');
						var optionName = optionElement.data('optionName');
						var originalValue = optionElement.data('originalValue');
						var value = $(this).data('optionValue');

						var control = $(this).closest('.wf-switch');
						control.find('li').each(function() {
							$(this).toggleClass('wf-active', value == $(this).data('optionValue')).attr('aria-checked', value == $(this).data('optionValue') ? 'true' : 'false');
						});

						if (originalValue == value) {
							delete WFAD.pendingChanges[optionName];
						}
						else {
							WFAD.pendingChanges[optionName] = value;
						}

						$(optionElement).trigger('change', [false]);
						WFAD.updatePendingChanges();
					});
				});

				$(document).focus();

				// (docs|support).wordfence.com GA links
				$(document).on('click', 'a', function() {
					if (this.href && this.href.indexOf('utm_source') > -1) {
						return;
					}
					var utm = '';
					if ((this.host == 'www.wordfence.com' || this.host == 'wordfence.com') && /^\/help(?:$|\/)/.test(this.pathname)) {
						utm = 'utm_source=plugin&utm_medium=pluginUI&utm_campaign=docsIcon';
					}
					if (utm) {
						utm = (this.search ? '&' : '?') + utm;
						this.href = this.protocol + '//' + this.host + this.pathname + this.search + utm + this.hash;
					}

					if (this.href == 'http://support.wordfence.com/') {
						this.href = 'https://support.wordfence.com/support/home?utm_source=plugin&utm_medium=pluginUI&utm_campaign=supportLink';
					}
				});
			},
			sectionInit: function() {
				var self = this;
				this.mode = false;
				if (jQuery('#wordfenceMode_dashboard:visible').length > 0) {
					this.mode = 'dashboard';
				} else if (jQuery('#wordfenceMode_scan:visible').length > 0) {
					this.mode = 'scan';
				} else if (jQuery('#wordfenceMode_waf:visible').length > 0) {
					this.mode = 'waf';
				} else if (jQuery('#wordfenceMode_liveTraffic:visible').length > 0) {
					this.mode = 'liveTraffic';
					this.setupSwitches('wfLiveTrafficOnOff', 'liveTrafficEnabled', function() {
					});
					jQuery('#wfLiveTrafficOnOff').change(function() {
						self.updateSwitch('wfLiveTrafficOnOff', 'liveTrafficEnabled', function() {
							window.location.reload(true);
						});
					});

					this.updateLiveTraffic();
					if (this.liveInt > 0) {
						clearInterval(this.liveInt);
						this.liveInt = 0;
					}
					this.liveInt = setInterval(function() {
						self.updateLiveTraffic();
					}, WordfenceAdminVars.actUpdateInterval);
				} else if (jQuery('#wordfenceMode_twoFactor:visible').length > 0) {
					this.mode = 'twoFactor';
					this.loadTwoFactor();
				} else if (jQuery('#wordfenceMode_whois:visible').length > 0) {
					this.mode = 'whois';
					this.calcRangeTotal();
				} else if (jQuery('#wordfenceMode_scanScheduling:visible').length > 0) {
					this.mode = 'scanScheduling';
					this.sched_modeChange();
				}
			},
			/**
			 * Returns whether or not the screen size is within the size given. This may be a numerical value
			 * or one of the WFAD_SCREEN_ constants.
			 *
			 * @param size
			 * @returns {boolean}
			 */
			screenSize: function(size) {
				switch (size) {
					case WFAD.SCREEN_XS:
						return window.matchMedia("only screen and (max-width: 767px)").matches;
					case WFAD.SCREEN_SM:
						return window.matchMedia("only screen and (max-width: 991px)").matches;
					case WFAD.SCREEN_MD:
						return window.matchMedia("only screen and (max-width: 1199px)").matches;
					case WFAD.SCREEN_LG:
						return window.matchMedia("only screen and (max-width: 32767px)").matches;
				}

				var parsed = parseInt(size);
				if (isNaN(parsed)) {
					return false;
				}
				return window.matchMedia("only screen and (max-width: " + parsed + "px)").matches;
			},
			sendTestEmail: function(email) {
				var self = this;
				this.ajax('wordfence_sendTestEmail', {email: email}, function(res) {
					if (res.result) {
						self.colorboxModalHTML((self.isSmallScreen ? '300px' : '400px'), __("Test Email Sent"), sprintf(__("Your test email was sent to the requested email address. The result we received from the WordPress wp_mail() function was: %s<br /><br />A 'True' result means WordPress thinks the mail was sent without errors. A 'False' result means that WordPress encountered an error sending your mail. Note that it's possible to get a 'True' response with an error elsewhere in your mail system that may cause emails to not be delivered."), res.result));
					}
				});
			},
			sendTestActivityReport: function(email) {
				var self = this;
				this.ajax(
					'wordfence_email_summary_email_address_debug',
					{email: email},
					function(res) {
						if (res.result) {
							self.colorboxModalHTML((self.isSmallScreen ? '300px' : '400px'), ("Test Activity Report"), res.result);
						}
					}
				);
			},
			updateSwitch: function(elemID, configItem, cb) {
				var setting = jQuery('#' + elemID).is(':checked');
				this.updateConfig(configItem, jQuery('#' + elemID).is(':checked') ? 1 : 0, cb);
			},
			setupSwitches: function(elemID, configItem, cb) {
				jQuery('.wfOnOffSwitch-checkbox').change(function() {
					jQuery.data(this, 'lastSwitchChange', (new Date()).getTime());
				});
				var self = this;
				jQuery('div.wfOnOffSwitch').mouseup(function() {
					var elem = jQuery(this);
					setTimeout(function() {
						var checkedElem = elem.find('.wfOnOffSwitch-checkbox');
						if ((new Date()).getTime() - jQuery.data(checkedElem[0], 'lastSwitchChange') > 300) {
							checkedElem.prop('checked', !checkedElem.is(':checked'));
							self.updateSwitch(elemID, configItem, cb);
						}
					}, 50);
				});
			},
			updateConfig: function(key, val, cb) {
				this.ajax('wordfence_updateConfig', {key: key, val: val}, function(ret) {
					if (cb) {
						cb(ret);
					}
				});
			},
			updateIPPreview: function(val, cb) {
				this.ajax('wordfence_updateIPPreview', val, function(ret) {
					if (cb) {
						cb(ret);
					}
				});
			},
			wordfenceSatisfactionChoice: function(choice) {
				if (choice == 'yes') {
					$('#wordfenceSatisfactionPrompt-yes').slideDown(400, function() {
						$('#wordfenceSatisfactionPrompt-initial .wf-btn').addClass('wf-disabled').css('opacity', 0.3);
						$('#wordfenceSatisfactionPrompt-initial .wf-btn:first-of-type').css('opacity', 0.8);
					});
					WFAD.ajax('wordfence_wordfenceSatisfactionChoice', {choice: choice});
				}
				else if (choice == 'no') {
					$('#wordfenceSatisfactionPrompt-no').slideDown(400, function() {
						$('#wordfenceSatisfactionPrompt-initial .wf-btn').addClass('wf-disabled').css('opacity', 0.3);
						$('#wordfenceSatisfactionPrompt-initial .wf-btn:last-of-type').css('opacity', 0.8);
					});
					WFAD.ajax('wordfence_wordfenceSatisfactionChoice', {choice: choice});
				}
				else if (choice == 'feedback') {
					WFAD.ajax('wordfence_wordfenceSatisfactionChoice', {
							choice: choice,
							feedback: $('#wordfenceSatisfactionPrompt-feedback').val(),
						},
						function(res) { $('#wordfenceSatisfactionPrompt-no').fadeOut(); $('#wordfenceSatisfactionPrompt-complete').fadeIn(); },
						function() { $('#wordfenceSatisfactionPrompt-no').fadeOut(); $('#wordfenceSatisfactionPrompt-complete').fadeIn(); }
					);
				}
				else if (choice == 'dismiss') {
					$('#wordfenceSatisfactionPrompt').fadeOut();
					WFAD.ajax('wordfence_wordfenceSatisfactionChoice', {choice: choice});
				}
			},
			tourFinish: function(page) {
				if (WFAD.currentPointer) {
					WFAD.currentPointer.pointer('destroy');
					WFAD.currentPointer = false;
				}
				
				$('#wf-onboarding-tour-overlay').fadeOut();
				WFAD.ajax('wordfence_tourClosed', {page: page}, function(res) {});
			},
			tour: function(contentID, elemID, edge, align, previousCallback, nextCallback) {
				if (WFAD.currentPointer) {
					WFAD.currentPointer.pointer('destroy');
					WFAD.currentPointer = false;
				}
				
				var options = {
					pointerClass: 'wf-tour-pointer',
					buttons: function(event, t) {
						return null;
					},
					close: function() {
					},
					content: $('#' + contentID).tmpl().html(),
					pointerWidth: 700, 
					position: {
						edge: edge,
						align: align
					}
				};
				var element = $('#' + elemID);
				$('#wf-onboarding-tour-overlay').fadeIn();
				WFAD.currentPointer = element.pointer(options).pointer('open');
				
				if (previousCallback) {
					$('#wf-tour-previous a').on('click', function(e) {
						e.preventDefault();
						e.stopPropagation();

						previousCallback();
					});
				}
				
				if (nextCallback) {
					$('#wf-tour-continue a').on('click', function(e) {
						e.preventDefault();
						e.stopPropagation();

						nextCallback();
					});
				}
				
				$('#wf-tour-close').on('click', function(e) {
					e.preventDefault();
					e.stopPropagation();

					WFAD.tourComplete();
				});

				var wpPointer = $('.wf-tour-pointer');
				if (wpPointer.length > 0) {
					$('html, body').animate({
						scrollTop: wpPointer.offset().top - 100
					}, 1000);
				}
			},
			showLoading: function() {
				this.loadingCount++;
				if (this.loadingCount == 1) {
					$('<div id="wordfenceWorking">' + __('Wordfence is working...') + '</div>').appendTo('body');
				}
			},
			removeLoading: function() {
				this.loadingCount--;
				if (this.loadingCount == 0) {
					jQuery('#wordfenceWorking').remove();
				}
			},
			switch2FAToNew: function() {
				
			},
			switch2FAToOld: function() {
				window.location.reload(true);
			},
			startActivityLogUpdates: function() {
				var self = this;
				setInterval(function() {
					self.updateActivityLog();
				}, parseInt(WordfenceAdminVars.actUpdateInterval));
			},
			updateActivityLog: function() {
				if (this.activityLogUpdatePending || (!this.windowHasFocus() && WordfenceAdminVars.allowsPausing == '1')) {
					if (!jQuery('body').hasClass('wordfenceLiveActivityPaused') && !this.activityLogUpdatePending) {
						jQuery('body').addClass('wordfenceLiveActivityPaused');
					}
					return;
				}
				if (jQuery('body').hasClass('wordfenceLiveActivityPaused')) {
					jQuery('body').removeClass('wordfenceLiveActivityPaused');
				}
				WFAD.loadingIssues = true;
				this.activityLogUpdatePending = true;
				var self = this;
				this.ajax('wordfence_activityLogUpdate', {
					lastctime: this.lastALogCtime,
					lastissuetime: this.lastIssueUpdateTime,
				}, function(res) {
					self.doneUpdateActivityLog(res);
				}, function() {
					self.activityLogUpdatePending = false;
				}, true);

			},
			doneUpdateActivityLog: function(res) {
				this.actNextUpdateAt = (new Date()).getTime() + parseInt(WordfenceAdminVars.actUpdateInterval);
				if (res.ok) {
					if (res.items.length > 0) {
						this.activityQueue.push.apply(this.activityQueue, res.items);
						this.lastALogCtime = res.items[res.items.length - 1].ctime;
						this.processActQueue(res.currentScanID);
					}
					if (res.signatureUpdateTime) {
						this.updateSignaturesTimestamp(res.signatureUpdateTime);
					}

					var oldScanStalled = WFAD.scanStalled;
					WFAD.scanStalled = (res.scanStalled == '1' ? true : false);
					var oldScanRunning = WFAD.scanRunning;
					WFAD.scanRunning = (res.scanRunning == '1' && !WFAD.scanStalled) ? true : false;
					
					if (res.scanFailedHTML && !WFAD.scanRunning) {
						jQuery('#wf-scan-failed').html(res.scanFailedHTML);
						jQuery('#wf-scan-failed').show();
						$(window).trigger('wfScanUpdateButtons');
					}
					else {
						jQuery('#wf-scan-failed').hide();
					}
					
					if (res.lastMessage) {
						$('#wf-scan-last-status').html(res.lastMessage);
					}
					
					if (res.issues) {
						this.lastIssueUpdateTime = res.issueUpdateTimestamp;
						this.displayIssues(res);
					}
					
					if (res.issueCounts) {
						WFAD.updateIssueCounts(res.issueCounts);
					}
					
					WFAD.loadingIssues = false;

					if (res.scanStats) {
						var keys = Object.keys(res.scanStats);
						for (var i = 0; i < keys.length; i++) {
							$('.' + keys[i]).text(res.scanStats[keys[i]]); 
						}
					}

					if (res.scanStages) {
						var keys = Object.keys(res.scanStages);
						for (var i = 0; i < keys.length; i++) { 
							var element = $('#wf-scan-' + keys[i]);
							if (element) {
								var existingClasses = element.attr('class');
								if (existingClasses.match(/ /)) {
									existingClasses = existingClasses.split(' ');
								}
								else {
									existingClasses = [existingClasses];
								}
								
								var newClasses = res.scanStages[keys[i]];
								if (newClasses.match(/ /)) {
									newClasses = newClasses.split(' ');
								}
								else {
									newClasses = [newClasses];
								}
								
								var mismatch = false;
								if (existingClasses.length != newClasses.length) {
									mismatch = true;
								}
								else {
									var intersection = existingClasses.filter(function(value) {
										for (var n = 0; n < newClasses.length; n++) {
											if (newClasses[n] == value) {
												return true;
											}
										}
										return false;
									});
									mismatch = (intersection.length != newClasses.length);
								}
								
								if (mismatch) {
									element.removeClass();
									element.addClass(newClasses.join(' '));
								}
								
								if (oldScanRunning != WFAD.scanRunning) {
									if (WFAD.scanRunning) {
										$('#wf-scan-running-bar').show();
									}
									else {
										$('#wf-scan-running-bar').hide();
									}
									$(window).trigger('wfScanUpdateButtons');
								}
								else if (oldScanStalled != WFAD.scanStalled) {
									$(window).trigger('wfScanUpdateButtons');
								}
							}
						}
					}
				}
				this.activityLogUpdatePending = false;
			},

			updateSignaturesTimestamp: function(signatureUpdateTime) {
				var date = new Date(signatureUpdateTime * 1000);

				var dateString = date.toString();
				if (date.toLocaleString) {
					dateString = date.toLocaleString();
				}

				var sigTimestampEl = $('#wf-scan-sigs-last-update');
				var newText = sprintf(__('Last Updated: %s'), dateString);
				if (sigTimestampEl.text() !== newText) {
					sigTimestampEl.text(newText)
						.css({
							'opacity': 0
						})
						.animate({
							'opacity': 1
						}, 500);
				}
			},

			processActQueue: function(currentScanID) {
				if (this.activityQueue.length > 0) {
					this.addActItem(this.activityQueue.shift());
					this.totalActAdded++;
					if (this.totalActAdded > this.maxActivityLogItems) {
						jQuery('#wf-scan-activity-log > li:first').remove();
						this.totalActAdded--;
					}
					var timeTillNextUpdate = this.actNextUpdateAt - (new Date()).getTime();
					var maxRate = 50 / 1000; //Rate per millisecond
					var bulkTotal = 0;
					while (this.activityQueue.length > 0 && this.activityQueue.length / timeTillNextUpdate > maxRate) {
						var item = this.activityQueue.shift();
						if (item) {
							bulkTotal++;
							this.addActItem(item);
						}
					}
					this.totalActAdded += bulkTotal;
					if (this.totalActAdded > this.maxActivityLogItems) {
						jQuery('#wf-scan-activity-log > li:lt(' + bulkTotal + ')').remove();
						this.totalActAdded -= bulkTotal;
					}
					var minDelay = 100;
					var delay = minDelay;
					if (timeTillNextUpdate < 1) {
						delay = minDelay;
					} else {
						delay = Math.round(timeTillNextUpdate / this.activityQueue.length);
						if (delay < minDelay) {
							delay = minDelay;
						}
					}
					var self = this;
					setTimeout(function() {
						self.processActQueue();
					}, delay);
				}
				jQuery('#wf-scan-activity-log').scrollTop(jQuery('#wf-scan-activity-log').prop('scrollHeight'));
			},
			processActArray: function(arr) {
				for (var i = 0; i < arr.length; i++) {
					this.addActItem(arr[i]);
				}
			},
			addActItem: function(item) {
				if (!item) {
					return;
				}
				if (!item.msg) {
					return;
				}
				if (item.msg.indexOf('SUM_') == 0) {
					this.processSummaryLine(item);
				}
				else if (this.debugOn || item.level < 4) {

					var html = '<li class="wfActivityLine';
					if (this.debugOn) {
						html += ' wf' + item.type;
					}
					html += '">[' + item.date + ']&nbsp;' + item.msg + '</div>';
					jQuery('#wf-scan-activity-log').append(html);
					if (/Scan complete\./i.test(item.msg) || /Scan interrupted\./i.test(item.msg)) {
						this.loadIssues();
					}
				}
			},
			processSummaryLine: function(item) {
				var msg, summaryUpdated;
				if (item.msg.indexOf('SUM_START:') != -1) {
					msg = item.msg.replace('SUM_START:', '');
					jQuery('#consoleSummary').append('<div class="wfSummaryLine"><div class="wfSummaryDate">[' + item.date + ']</div><div class="wfSummaryMsg">' + msg + '</div><div class="wfSummaryResult"><div class="wfSummaryLoading"></div></div><div class="wfClear"></div>');
					summaryUpdated = true;
				} else if (item.msg.indexOf('SUM_ENDBAD') != -1) {
					msg = item.msg.replace('SUM_ENDBAD:', '');
					jQuery('div.wfSummaryMsg:contains("' + msg + '")').next().addClass('wfSummaryBad').html('Problems found.');
					summaryUpdated = true;
				} else if (item.msg.indexOf('SUM_ENDFAILED') != -1) {
					msg = item.msg.replace('SUM_ENDFAILED:', '');
					jQuery('div.wfSummaryMsg:contains("' + msg + '")').next().addClass('wfSummaryBad').html('Failed.');
					summaryUpdated = true;
				} else if (item.msg.indexOf('SUM_ENDOK') != -1) {
					msg = item.msg.replace('SUM_ENDOK:', '');
					jQuery('div.wfSummaryMsg:contains("' + msg + '")').next().addClass('wfSummaryOK').html('Secure.');
					summaryUpdated = true;
				} else if (item.msg.indexOf('SUM_ENDSUCCESS') != -1) {
					msg = item.msg.replace('SUM_ENDSUCCESS:', '');
					jQuery('div.wfSummaryMsg:contains("' + msg + '")').next().addClass('wfSummaryOK').html('Success.');
					summaryUpdated = true;
				} else if (item.msg.indexOf('SUM_ENDERR') != -1) {
					msg = item.msg.replace('SUM_ENDERR:', '');
					jQuery('div.wfSummaryMsg:contains("' + msg + '")').next().addClass('wfSummaryErr').html('An error occurred.');
					summaryUpdated = true;
				} else if (item.msg.indexOf('SUM_ENDSKIPPED') != -1) {
					msg = item.msg.replace('SUM_ENDSKIPPED:', '');
					jQuery('div.wfSummaryMsg:contains("' + msg + '")').next().addClass('wfSummaryResult').html('Skipped.');
					summaryUpdated = true;
				} else if (item.msg.indexOf('SUM_ENDIGNORED') != -1) {
					msg = item.msg.replace('SUM_ENDIGNORED:', '');
					jQuery('div.wfSummaryMsg:contains("' + msg + '")').next().addClass('wfSummaryIgnored').html('Ignored.');
					summaryUpdated = true;
				} else if (item.msg.indexOf('SUM_DISABLED:') != -1) {
					msg = item.msg.replace('SUM_DISABLED:', '');
					jQuery('#consoleSummary').append('<div class="wfSummaryLine"><div class="wfSummaryDate">[' + item.date + ']</div><div class="wfSummaryMsg">' + msg + '</div><div class="wfSummaryResult">' + __('Disabled') + '</div><div class="wfClear"></div>');
					summaryUpdated = true;
				} else if (item.msg.indexOf('SUM_PAIDONLY:') != -1) {
					msg = item.msg.replace('SUM_PAIDONLY:', '');
					jQuery('#consoleSummary').append('<div class="wfSummaryLine"><div class="wfSummaryDate">[' + item.date + ']</div><div class="wfSummaryMsg">' + msg + '</div><div class="wfSummaryResult"><a href="https://www.wordfence.com/wordfence-signup/" target="_blank"  rel="noopener noreferrer">' + __('Paid Members Only') + ' (' + __('opens in new tab') + ')</a></div><div class="wfClear"></div>');
					summaryUpdated = true;
				} else if (item.msg.indexOf('SUM_FINAL:') != -1) {
					msg = item.msg.replace('SUM_FINAL:', '');
					jQuery('#consoleSummary').append('<div class="wfSummaryLine"><div class="wfSummaryDate">[' + item.date + ']</div><div class="wfSummaryMsg wfSummaryFinal">' + msg + '</div><div class="wfSummaryResult wfSummaryOK">' + __('Scan Complete.') + '</div><div class="wfClear"></div>');
				} else if (item.msg.indexOf('SUM_PREP:') != -1) {
					msg = item.msg.replace('SUM_PREP:', '');
					jQuery('#consoleSummary').empty().html('<div class="wfSummaryLine"><div class="wfSummaryDate">[' + item.date + ']</div><div class="wfSummaryMsg">' + msg + '</div><div class="wfSummaryResult" id="wfStartingScan"><div class="wfSummaryLoading"></div></div><div class="wfClear"></div>');
				} else if (item.msg.indexOf('SUM_KILLED:') != -1) {
					msg = item.msg.replace('SUM_KILLED:', '');
					jQuery('#consoleSummary').empty().html('<div class="wfSummaryLine"><div class="wfSummaryDate">[' + item.date + ']</div><div class="wfSummaryMsg">' + msg + '</div><div class="wfSummaryResult wfSummaryOK">' + __('Scan Complete.') + '</div><div class="wfClear"></div>');
				}
			},
			processActQueueItem: function() {
				var item = this.activityQueue.shift();
				if (item) {
					jQuery('#consoleActivity').append('<div class="wfActivityLine wf' + item.type + '">[' + item.date + ']&nbsp;' + item.msg + '</div>');
					this.totalActAdded++;
					if (this.totalActAdded > this.maxActivityLogItems) {
						jQuery('#consoleActivity div:first').remove();
						this.totalActAdded--;
					}
					if (item.msg == 'Scan complete.') {
						this.loadIssues();
					}
				}
			},
			updateLiveTraffic: function(forceUpdate) {
				if ((!forceUpdate) && (this.liveTrafficUpdatePending || (!this.windowHasFocus() && WordfenceAdminVars.allowsPausing == '1'))) {
					if (!jQuery('body').hasClass('wordfenceLiveActivityPaused') && !this.liveTrafficUpdatePending) {
						jQuery('body').addClass('wordfenceLiveActivityPaused');
					}
					return;
				}
				if (jQuery('body').hasClass('wordfenceLiveActivityPaused')) {
					jQuery('body').removeClass('wordfenceLiveActivityPaused');
				}
				
				if (this.mode == 'liveTraffic') {
					this.liveTrafficUpdatePending = true;
					var self = this;
					var otherParams = this.newestActivityTime;
					var data = '';
					
					if (this.wfLiveTraffic) {
						data += this.wfLiveTraffic.getCurrentQueryString({
							since: this.newestActivityTime
						});
					}

					data += '&otherParams=' + encodeURIComponent(otherParams);
					this.ajax('wordfence_ticker', data, function(res) {
						self.handleLiveTrafficReturn(res);
					}, function() {
						self.liveTrafficUpdatePending = false;
					}, true);
				}
			},
			handleLiveTrafficReturn: function(res) {
				this.liveTrafficUpdatePending = false;
				this.serverTimestampOffset = (new Date().getTime() / 1000) - res.serverTime;
				this.serverMicrotime = res.serverMicrotime;
				
				var newMsg = "Idle";
				var oldMsg = jQuery('.wf-live-activity-message').text();
				if (res.msg) { newMsg = res.msg; }
				if (newMsg && newMsg != oldMsg) {
					jQuery('.wf-live-activity-message').hide().html(newMsg).fadeIn(200);
				}

				if (this.mode == 'liveTraffic') {
					if (res.events.length > 0) {
						this.newestActivityTime = res.events[0]['ctime'];
					}
					
					if (typeof WFAD.wfLiveTraffic !== undefined) {
						WFAD.wfLiveTraffic.prependListings(res.events, res);
						this.reverseLookupIPs();
						this.avatarLookup();
						this.updateTimeAgo();
					}
				}
			},
			avatarLookup: function() {
				var ids = [];
				$('.wfAvatar').each(function(idx, elem) {
					var userID = Number.parseInt($(elem).data('userid'));
					if (!Number.isNaN(userID) && !$(elem).data('wfAvatarDone')) {
						$(elem).data('wfAvatarDone', true);
						ids.push(userID);
					}
				});
				
				if (ids.length < 1) { return; }
				
				var uni = {};
				var uniqueIDs = [];
				for (var i = 0; i < ids.length; i++) {
					if (!uni[ids[i]]) {
						uni[ids[i]] = true;
						uniqueIDs.push(ids[i]);
					}
				}
				this.ajax('wordfence_avatarLookup', {
						ids: uniqueIDs.join(',')
					},
					function(res) {
						if (res.ok) {
							$('.wfAvatar').each(function(idx, elem) {
								var userID = Number.parseInt($(elem).data('userid'));
								if (!Number.isNaN(userID)) {
									if (res.avatars[userID]) {
										$(elem).html(res.avatars[userID]);
									}
								}
							});
						}
					}, false, false);
			},
			reverseLookupIPs: function() {
				var self = this;
				var ips = [];
				jQuery('.wfReverseLookup').each(function(idx, elem) {
					var txt = jQuery(elem).text().trim();
					if (/^\d+\.\d+\.\d+\.\d+$/.test(txt) && (!jQuery(elem).data('wfReverseDone'))) {
						jQuery(elem).data('wfReverseDone', true);
						ips.push(txt);
					}
				});
				if (ips.length < 1) {
					return;
				}
				var uni = {};
				var uniqueIPs = [];
				for (var i = 0; i < ips.length; i++) {
					if (!uni[ips[i]]) {
						uni[ips[i]] = true;
						uniqueIPs.push(ips[i]);
					}
				}
				this.ajax('wordfence_reverseLookup', {
						ips: uniqueIPs.join(',')
					},
					function(res) {
						if (res.ok) {
							jQuery('.wfReverseLookup').each(function(idx, elem) {
								var el = jQuery(elem);
								var txt = el.text().trim();
								for (var ip in res.ips) {
									if (txt == ip) {
										if (res.ips[ip]) {
											var hostnameTemplate = el.attr('data-reverse-lookup-template');
											if (hostnameTemplate) {
												jQuery(elem).html(jQuery.tmpl($('#' + hostnameTemplate), {
													ip: res.ips[ip]
												}));
											} else if (el.hasClass('wf-hostname-only')) {
												jQuery(elem).text(res.ips[ip]);
											} else {
												jQuery(elem).html('<strong>Hostname:</strong>&nbsp;' + self.htmlEscape(res.ips[ip]));
											}
										} else {
											jQuery(elem).html('');
										}
									}
								}
							});
						}
					}, false, false);
			},
			killScan: function(callback) {
				this.ajax('wordfence_killScan', {}, function(res) {
					if (res.ok) {
						typeof callback === 'function' && callback(true);
						WFAD.scanRunning = false;
						WFAD.scanFailed = false;
						$(window).trigger('wfScanUpdateButtons');
					} else {
						typeof callback === 'function' && callback(false);
					}
				});
			},
			startScan: function() {
				this.ajax('wordfence_scan', {}, function(res) {
					if (res.ok) {
						WFAD.scanRunning = true;
						$('#wf-scan-results-new').empty();
						$('#wf-scan-bulk-buttons-delete, #wf-scan-bulk-buttons-repair').addClass('wf-disabled');
						WFAD.updateIssueCounts(res.issueCounts);
						$(window).trigger('wfScanUpdateButtons');
					}
				});
			},
			loadIssues: function(callback, offset, limit) {
				if (this.mode != 'scan') {
					return;
				}
				offset = offset || 0;
				limit = limit || WordfenceAdminVars.scanIssuesPerPage;
				var self = this;
				this.ajax('wordfence_loadIssues', {offset: offset, limit: limit}, function(res) {
					var newCount = parseInt(res.issueCounts.new) || 0;
					var ignoredCount = (parseInt(res.issueCounts.ignoreP) || 0) + (parseInt(res.issueCounts.ignoreC) || 0);
					jQuery('#wfNewIssuesTab .wfIssuesCount').text(' (' + newCount + ')');
					jQuery('#wfIgnoredIssuesTab .wfIssuesCount').text(' (' + ignoredCount + ')'); 
					self.displayIssues(res, callback);
				});
			},
			loadMoreIssues: function(callback, offset, limit, ignoredOffset, ignoredLimit) {
				offset = offset || 0;
				limit = limit || WordfenceAdminVars.scanIssuesPerPage;
				ignoredOffset = ignoredOffset || 0;
				ignoredLimit = ignoredLimit || WordfenceAdminVars.scanIssuesPerPage;
				
				if (offset >= WFAD.scanIssuesNewCount && ignoredOffset >= WFAD.scanIssuesIgnoredCount) {
					return;
				}
				
				WFAD.ajax('wordfence_loadIssues', {offset: offset, limit: limit, ignoredOffset: ignoredOffset, ignoredLimit: ignoredLimit}, function(res) {
					WFAD.updateIssueCounts(res.issueCounts);
					WFAD.appendIssues(res.issues, callback);
				});
			},
			sev2num: function(str) {
				if (/wfProbSev1/.test(str)) {
					return 1;
				} else if (/wfProbSev2/.test(str)) {
					return 2;
				} else {
					return 0;
				}
			},
			isIssueExpanded: function(issueID) {
				var key = 'wf-scan-issue-expanded-' + issueID;
				if (window.localStorage) {
					return !!parseInt(window.localStorage.getItem(key));
				}
				return false;
			},
			expandIssue: function(issueID, makeVisible) {
				var key = 'wf-scan-issue-expanded-' + issueID;
				if (window.localStorage) {
					window.localStorage.setItem(key, makeVisible ? 1 : 0);
				}
			},
			displayIssues: function(res, callback) {
				for (var issueStatus in res.issues) {
					var containerID = 'wf-scan-results-' + issueStatus;
					if ($('#' + containerID).length < 1) {
						continue;
					}
					
					if (res.issues[issueStatus].length < 1) {
						continue;
					}
					
					$('#' + containerID).empty();
				}
				
				WFAD.appendIssues(res.issues, callback);
				
				return true;
			},
			appendIssues: function(issues, callback) {
				for (var issueStatus in issues) {
					var containerID = 'wf-scan-results-' + issueStatus;
					if ($('#' + containerID).length < 1) {
						continue;
					}
					
					var container = $('#' + containerID);
					for (var i = 0; i < issues[issueStatus].length; i++) {
						var issueObject = issues[issueStatus][i];
						WFAD.appendIssue(issueObject, container);
					}
				}
				
				WFAD.sortIssues();
				WFAD.updateBulkButtons();
				if (typeof callback === 'function') {
					callback();
				}
			},
			appendIssue: function(issueObject, container) {
				var issueType = issueObject.type;
				var tmplName = 'issueTmpl_' + issueType;
				var template = $('#' + tmplName);
				if (template.length) {
					var issue = template.tmpl(issueObject);
					issue.data('sourceData', issueObject);
					issue.data('templateName', tmplName);
					if (this.isIssueExpanded(issueObject.id)) {
						issue.addClass('wf-active');
					}

					//Hook up Details button
					issue.find('.wf-issue-control-show-details').on('click', function(e) {
						e.preventDefault();
						e.stopPropagation();

						var isActive = $(this).closest('.wf-issue').hasClass('wf-active');
						var issueID = $(this).closest('.wf-issue').data('issueId'); 
						WFAD.expandIssue(issueID, !isActive);
						$(this).closest('.wf-issue').toggleClass('wf-active', !isActive);
					});

					//Hook up Ignore button
					issue.find('.wf-issue-control-ignore').each(function() {
						var issueID = $(this).closest('.wf-issue').data('issueId');
						var menu = $(this).parent().find('.wf-issue-control-ignore-menu').menu().hide();

						$(this).on('click', function(e) {
							e.preventDefault();
							e.stopPropagation();

							var ignoreAction = $(this).data('ignoreAction');
							if (ignoreAction == 'choice') {
								menu.show().position({
									my: "left top",
									at: "left bottom",
									of: this
								});

								$(document).on('click', function() {
									menu.hide();
								});
							}
							else {
								var self = this;
								WFAD.updateIssueStatus(issueID, ignoreAction, function(res) {
									if (res.ok) {
										var issueContainer = $(self).closest('.wf-scan-results-issues');
										var issueElement = $(self).closest('.wf-issue');
										var sourceData = issueElement.data('sourceData');
										sourceData['status'] = ignoreAction;

										var targetContainerID = 'wf-scan-results-' + (issueContainer.attr('id') == 'wf-scan-results-new' ? 'ignored' : 'new');
										var targetContainer = $('#' + targetContainerID);
										issueElement.remove();
										WFAD.appendIssue(sourceData, targetContainer);
										WFAD.sortIssues();
										WFAD.updateIssueCounts(res.issueCounts);
										WFAD.repositionSiteCleaningCallout();
										WFAD.updateBulkButtons();
									}
								});
							}
						});

						menu.find('.wf-issue-control-ignore-menu-ignorec').on('click', function(e) {
							e.preventDefault();
							e.stopPropagation();

							var self = this;
							WFAD.updateIssueStatus(issueID, 'ignoreC', function(res) {
								if (res.ok) {
									var issueContainer = $(self).closest('.wf-scan-results-issues');
									var issueElement = $(self).closest('.wf-issue');
									var sourceData = issueElement.data('sourceData');
									sourceData['status'] = 'ignoreC';

									var targetContainerID = 'wf-scan-results-' + (issueContainer.attr('id') == 'wf-scan-results-new' ? 'ignored' : 'new');
									var targetContainer = $('#' + targetContainerID);
									issueElement.remove();
									WFAD.appendIssue(sourceData, targetContainer);
									WFAD.sortIssues();
									WFAD.updateIssueCounts(res.issueCounts);
									WFAD.repositionSiteCleaningCallout();
									WFAD.updateBulkButtons();
								}
							});
						});

						menu.find('.wf-issue-control-ignore-menu-ignorep').on('click', function(e) {
							e.preventDefault();
							e.stopPropagation();

							var self = this;
							WFAD.updateIssueStatus(issueID, 'ignoreP', function(res) {
								if (res.ok) {
									var issueContainer = $(self).closest('.wf-scan-results-issues');
									var issueElement = $(self).closest('.wf-issue');
									var sourceData = issueElement.data('sourceData');
									sourceData['status'] = 'ignoreP';

									var targetContainerID = 'wf-scan-results-' + (issueContainer.attr('id') == 'wf-scan-results-new' ? 'ignored' : 'new');
									var targetContainer = $('#' + targetContainerID);
									issueElement.remove();
									WFAD.appendIssue(sourceData, targetContainer);
									WFAD.sortIssues();
									WFAD.updateIssueCounts(res.issueCounts);
									WFAD.repositionSiteCleaningCallout();
									WFAD.updateBulkButtons();
								}
							});
						});
					});
					
					//Hook up Mark as Fixed button
					issue.find('.wf-issue-control-mark-fixed').each(function() {
						var issueID = $(this).closest('.wf-issue').data('issueId');

						$(this).on('click', function(e) {
							e.preventDefault();
							e.stopPropagation();

							var self = this;
							WFAD.updateIssueStatus(issueID, 'delete', function(res) {
								if (res.ok) {
									var issueElement = $(self).closest('.wf-issue');
									issueElement.remove();
									WFAD.updateIssueCounts(res.issueCounts);
									WFAD.repositionSiteCleaningCallout();
									WFAD.updateBulkButtons();
								}
							});
						});
					});
					
					//Hook up Delete File button
					issue.find('.wf-issue-control-delete-file').each(function() {
						var issueID = $(this).closest('.wf-issue').data('issueId');

						$(this).on('click', function(e) {
							e.preventDefault();
							e.stopPropagation();

							var self = this;
							WFAD.deleteFile(issueID, false, function(res) {
								if (res.ok) {
									var issueElement = $(self).closest('.wf-issue');
									issueElement.remove();
									WFAD.updateIssueCounts(res.issueCounts);
									WFAD.repositionSiteCleaningCallout();
									WFAD.updateBulkButtons();
									WFAD.colorboxModal((WFAD.isSmallScreen ? '300px' : '400px'), __("Success deleting file"), sprintf(__("The file %s was successfully deleted."), res.file));
								}
								else if (res.errorMsg) {
									WFAD.colorboxError(res.errorMsg, res.tokenInvalid);
								}
							});
						});
					});

					//Hook up Repair button
					issue.find('.wf-issue-control-repair').each(function() {
						// Show prompt to download repair file

						var issueID = $(this).closest('.wf-issue').data('issueId');

						$(this).on('click', function(e) {
							e.preventDefault();
							e.stopPropagation();

							WFAD.promptToRepairFile(issueID, issueObject.data);
						});
					});
					
					//Hook up Hide File button
					issue.find('.wf-issue-control-hide-file').each(function() {
						var issueID = $(this).closest('.wf-issue').data('issueId');

						$(this).on('click', function(e) {
							e.preventDefault();
							e.stopPropagation();

							var self = this;
							WFAD.hideFile(issueID, function(res) {
								if (res.ok) {
									var issueElement = $(self).closest('.wf-issue');
									issueElement.remove();
									WFAD.updateIssueCounts(res.issueCounts);
									WFAD.repositionSiteCleaningCallout();
									WFAD.updateBulkButtons();
									WFAD.colorboxModal((WFAD.isSmallScreen ? '300px' : '400px'), __("File hidden successfully"), sprintf(__("The file %s was successfully hidden from public view."), res.file));
								}
								else if (res.errorMsg) {
									WFAD.colorboxError(res.errorMsg, res.tokenInvalid);
								}
							});
						});
					});

					//Hook up Tooltips
					issue.find('[data-tooltip]').each(function() {
						$(this).tooltip({
							tooltipClass: "wf-tooltip",
						});
					});

					//Swap out if the row already exists
					var existing = $('.wf-issue[data-issue-id="' + issueObject.id + '"]');
					if (existing.length) {
						existing.replaceWith(issue);
					}
					else {
						container.append(issue);
					}

					//Make row tappable
					issue.find('.wf-issue-summary').on('mousedown', function(e) {
						$(this).data('clickTapX', e.pageX).data('clickTapY', e.pageY);
					}).on('click', function(e) {
						var buffer = 10;
						var clickTapX = $(this).data('clickTapX');
						var clickTapY = $(this).data('clickTapY');
						if (clickTapX > e.pageX - buffer && clickTapX < e.pageX + buffer && clickTapY > e.pageY - buffer && clickTapY < e.pageY + buffer) {
							var links = $(this).find('a');
							for (var i = 0; i < links.length; i++) {
								var t = $(links[i]).offset().top;
								var l = $(links[i]).offset().left;
								var b = t + $(links[i]).height();
								var r = l + $(links[i]).width();

								if (e.pageX > l - buffer && e.pageX < r + buffer && e.pageY > t - buffer && e.pageY < b + buffer) {
									return;
								}
							}
							
							$(this).closest('.wf-issue').find('li.wf-issue-controls .wf-issue-control-show-details').trigger('click');
						}
					}).css('cursor', 'pointer');
				}
			},
			sortIssues: function() {
				var issueTypes = ['new', 'ignored'];
				for (var i = 0; i < issueTypes.length; i++) {
					var containerID = 'wf-scan-results-' + issueTypes[i];
					if ($('#' + containerID).length < 1) {
						continue;
					}

					var container = $('#' + containerID);
					var issuesDOM = container.find('.wf-issue');
					issuesDOM.detach();
					issuesDOM.sort(function(a, b) {
						var severityA = $(a).data('issueSeverity');
						var severityB = $(b).data('issueSeverity');
						if (severityA > severityB) { return -1; }
						else if (severityA < severityB) { return 1; }

						var typeA = $(a).data('issueType');
						var typeB = $(b).data('issueType');
						
						var typeAIndex = WFAD.siteCleaningIssueTypes.indexOf(typeA);
						var typeBIndex = WFAD.siteCleaningIssueTypes.indexOf(typeB);
						if (typeAIndex > -1 && typeBIndex > -1) {
							if (typeAIndex < typeBIndex) { return -1; }
							else if (typeAIndex > typeBIndex) { return 1; }
							return 0;
						}
						else if (typeAIndex > -1) {
							return -1;
						}
						else if (typeBIndex > -1) {
							return 1;
						}
						
						if (typeA < typeB) { return -1; }
						else if (typeA > typeB) { return 1; }

						return 0;
					});
					container.append(issuesDOM);
				}

				WFAD.repositionSiteCleaningCallout();
				WFAD.scanIssuesOffset = $('#wf-scan-results-new .wf-issue').length;
				WFAD.scanIssuesIgnoredOffset = $('#wf-scan-results-ignored .wf-issue').length;
			},
			updateBulkButtons: function() {
				var containerID = 'wf-scan-results-new';
				if ($('#' + containerID).length < 1) {
					return;
				}

				var hasDeleteable = false;
				var hasRepairable = false;
				
				var container = $('#' + containerID);
				var issuesDOM = container.find('.wf-issue');
				for (var i = 0; i < issuesDOM.length; i++) {
					var sourceData = $(issuesDOM[i]).data('sourceData');
					if (sourceData) {
						if (sourceData.data.canDelete) {
							hasDeleteable = true;
						}

						if (sourceData.data.canFix) {
							hasRepairable = true;
						}

						if (hasDeleteable && hasRepairable) {
							break;
						}
					}
				}

				$('#wf-scan-bulk-buttons-delete').toggleClass('wf-disabled', !hasDeleteable);
				$('#wf-scan-bulk-buttons-repair').toggleClass('wf-disabled', !hasRepairable);
			},
			updateIssueCounts: function(issueCounts) {
				var newCount = (typeof issueCounts['new'] === 'undefined' ? 0 : parseInt(issueCounts['new']));
				var ignoredCount = (typeof issueCounts['ignoreC'] === 'undefined' ? 0 : parseInt(issueCounts['ignoreC'])) + (typeof issueCounts['ignoreP'] === 'undefined' ? 0 : parseInt(issueCounts['ignoreP']));
				WFAD.scanIssuesNewCount = newCount;
				WFAD.scanIssuesIgnoredCount = ignoredCount;
				WFAD.scanIssuesTotalCount = newCount + ignoredCount;
				
				$('#wf-scan-tab-new a').html($('#wf-scan-tab-new').data('tabTitle') + ' (' + newCount + ')');
				$('#wf-scan-tab-ignored a').html($('#wf-scan-tab-ignored').data('tabTitle') + ' (' + ignoredCount + ')'); 

				if (newCount == 0) {
					var existing = $('.wf-issue[data-issue-id="no-issues-new"]');
					if (existing.length == 0) {
						var issue = $('#issueTmpl_noneFound').tmpl({shortMsg: __('No new issues have been found.'), id: 'no-issues-new'});
						$('#wf-scan-results-new').append(issue);
					}
				}
				else {
					$('.wf-issue[data-issue-id="no-issues-new"]').remove();
				}
				
				if (ignoredCount == 0) {
					var existing = $('.wf-issue[data-issue-id="no-issues-ignored"]');
					if (existing.length == 0) {
						var issue = $('#issueTmpl_noneFound').tmpl({shortMsg: __('No issues have been ignored.'), id: 'no-issues-ignored'});
						$('#wf-scan-results-ignored').append(issue);
					}
				}
				else {
					$('.wf-issue[data-issue-id="no-issues-ignored"]').remove();
				}
			},
			repositionSiteCleaningCallout: function() {
				$('.wf-issue-site-cleaning').remove();
				
				var issueTypes = WFAD.siteCleaningIssueTypes;
				for (var i = 0; i < issueTypes.length; i++) {
					if ($('#wf-scan-results-new .wf-issue-' + issueTypes[i]).length) {
						if (!!$('#wf-scan-results-new .wf-issue-' + issueTypes[i]).data('betaSignatures')) {
							$('#wf-scan-results-new .wf-issue').first().after($('#siteCleaningBetaSigsTmpl').tmpl());
						}
						else if (!!$('#wf-scan-results-new .wf-issue-' + issueTypes[i]).data('highSensitivity')) {
							$('#wf-scan-results-new .wf-issue').first().after($('#siteCleaningHighSenseTmpl').tmpl());
						}
						else {
							$('#wf-scan-results-new .wf-issue').first().after($('#siteCleaningTmpl').tmpl());
						}
						return;
					}
				}
			},
			ajax: function(action, data, cb, cbErr, noLoading) {
				if (typeof(data) == 'string') {
					if (data.length > 0) {
						data += '&';
					}
					data += 'action=' + action + '&nonce=' + this.nonce;
				} else if (typeof(data) == 'object' && data instanceof Array) {
					// jQuery serialized form data
					data.push({
						name: 'action',
						value: action
					});
					data.push({
						name: 'nonce',
						value: this.nonce
					});
				} else if (typeof(data) == 'object') {
					data['action'] = action;
					data['nonce'] = this.nonce;
				}
				if (!cb) {
					cb = function() {
					};
				}
				if (!cbErr) {
					cbErr = function() {
					};
				}
				var self = this;
				if (!noLoading) {
					this.showLoading();
				}
				jQuery.ajax({
					type: 'POST',
					url: WordfenceAdminVars.ajaxURL,
					dataType: "json",
					data: data,
					success: function(json) {
						if (!noLoading) {
							self.removeLoading();
						}
						if (json && json.nonce) {
							self.nonce = json.nonce;
						}
						if (json && json.errorMsg) {
							WFAD.colorboxError(json.errorMsg, json.tokenInvalid);
						}
						cb(json);
					},
					error: function() {
						if (!noLoading) {
							self.removeLoading();
						}
						cbErr();
					}
				});
			},
			colorbox: function(width, heading, body, settings) {
				if (typeof settings === 'undefined') {
					settings = {};
				}
				this.colorboxQueue.push([width, "<h3>" + heading + "</h3><p>" + body + "</p>", settings]);
				this.colorboxServiceQueue();
			},
			colorboxModalHTML: function(width, heading, body, settings) {
				if (typeof settings === 'undefined') {
					settings = {};
				}
				
				var prompt = $.tmpl(WordfenceAdminVars.modalHTMLTemplate, {title: heading, message: body});
				var promptHTML = $("<div />").append(prompt).html();
				var callback = settings.onComplete;
				settings.overlayClose = false;
				settings.closeButton = false;
				settings.className = 'wf-modal';
				settings.onComplete = function() {
					$('#wf-generic-modal-close').on('click', function(e) {
						e.preventDefault();
						e.stopPropagation();

						WFAD.colorboxClose();
					});

					typeof callback === 'function' && callback();
				};
				this.colorboxHTML(width, promptHTML, settings)
			},
			colorboxModal: function(width, heading, body, settings) {
				if (typeof settings === 'undefined') {
					settings = {};
				}

				var prompt = $.tmpl(WordfenceAdminVars.modalTemplate, {title: heading, message: body});
				var promptHTML = $("<div />").append(prompt).html();
				var callback = settings.onComplete;
				settings.overlayClose = false;
				settings.closeButton = false;
				settings.className = 'wf-modal';
				settings.onComplete = function() {
					$('#wf-generic-modal-close').on('click', function(e) {
						e.preventDefault();
						e.stopPropagation();

						WFAD.colorboxClose();
					});

					typeof callback === 'function' && callback();
				};
				this.colorboxHTML(width, promptHTML, settings)
			},
			colorboxError: function(errorMsg, isTokenError) {
				var callback = false;
				if (isTokenError) {
					if (WFAD.tokenErrorShowing) {
						return;
					}
					
					callback = function() {
						setTimeout(function() {
							WFAD.tokenErrorShowing = false;
						}, 30000);
					};
					
					WFAD.tokenErrorShowing = true;
				}

				var prompt = $.tmpl(WordfenceAdminVars.tokenInvalidTemplate, {title: __('An error occurred'), message: errorMsg});
				var promptHTML = $("<div />").append(prompt).html();
				var settings = {};
				settings.overlayClose = false;
				settings.closeButton = false;
				settings.className = 'wf-modal';
				settings.onComplete = function() {
					$('#wf-token-invalid-modal-reload').on('click', function(e) {
						e.preventDefault();
						e.stopPropagation();

						window.location.reload(true);
					});

					typeof callback === 'function' && callback();
				};
				WFAD.colorboxHTML((WFAD.isSmallScreen ? '300px' : '400px'), promptHTML, settings);
			},
			colorboxHTML: function(width, html, settings) {
				if (typeof settings === 'undefined') {
					settings = {};
				}
				this.colorboxQueue.push([width, html, settings]);
				this.colorboxServiceQueue();
			},
			colorboxServiceQueue: function() {
				if (this.colorboxIsOpen) {
					return;
				}
				if (this.colorboxQueue.length < 1) {
					return;
				}
				var elem = this.colorboxQueue.shift();
				this.colorboxOpen(elem[0], elem[1], elem[2]);
			},
			colorboxOpen: function(width, html, settings) {
				var self = this;
				this.colorboxIsOpen = true;
				var onClosed = settings.onClosed || null;
				jQuery.extend(settings, {
					width: width,
					html: html,
					onClosed: function() {
						self.colorboxClose();
						if (onClosed)
							onClosed();
					}
				});
				jQuery.wfcolorbox(settings);
			},
			colorboxClose: function() {
				this.colorboxIsOpen = false;
				jQuery.wfcolorbox.close();
			},
			bulkOperationConfirmed: function(op) {
				WFAD.colorboxClose();
				this.ajax('wordfence_bulkOperation', {
					op: op
				}, function(res) {
					if (res.ok) {
						for (var i = 0; i < res.idsRemoved.length; i++) {
							$('.wf-issue[data-issue-id="' + res.idsRemoved[i] + '"]').remove();
						}

						WFAD.updateIssueCounts(res.issueCounts);
						WFAD.repositionSiteCleaningCallout();
						WFAD.updateBulkButtons();
						setTimeout(function() {
							WFAD.colorboxModalHTML((WFAD.isSmallScreen ? '300px' : '400px'), res.bulkHeading, res.bulkBody);
						}, 500);
					}
				});
			},
			deleteFile: function(issueID, force, callback) {
				this.ajax('wordfence_deleteFile', {
					issueID: issueID,
					forceDelete: force
				}, function(res) {
					if (res.needsCredentials) {
						document.location.href = res.redirect;
					} else {
						typeof callback === 'function' && callback(res);
					}
				});
			},
			promptToRepairFile: function(issueID, data) {
				if (window.localStorage) {
					var sudoExpiration = window.localStorage.getItem('wf-repair-file-sudo');
					if (sudoExpiration && parseInt(sudoExpiration, 10) > new Date().getTime()) {
						this.repairFile(issueID);
						return;
					}
				}
				WFAD.colorboxModalHTML((WFAD.isSmallScreen ? '300px' : '400px'), __("Download Backup File"), __('Please make a backup of this file before proceeding. If you need to restore this backup file, you can copy it to the following path from your site\'s root:') + '<p class="wf-padding-add-top-medium"><code>' + data.file + '</code></p>'
					+ '<a href="' + WFAD.makeDownloadFileLink(data) + '" onclick="jQuery(\'#wfRepairFileNextBtn\').prop(\'disabled\', false); return true;">' + __('Click here to download a backup copy of this file now') + '</a><p class="wf-flex-horizontal">' +
					'<input type="button" class="wf-btn wf-btn-primary" name="but1" id="wfRepairFileNextBtn" value="Repair File" disabled="disabled" onclick="WFAD.promptToRepairFileDone(' + parseInt(issueID, 10) + ', jQuery(\'#forceRepairFileCheckbox\').prop(\'checked\'));this.disabled=true;" />' +
					'<label class="wf-padding-add-left"><input type="checkbox" id="forceRepairFileCheckbox" onclick="jQuery(\'#wfRepairFileNextBtn\').prop(\'disabled\', !this.checked); return true;"> ' + __('Don\'t ask again') + '</label>' +
					'</p>' +
					'<div class="wordfenceHelpLink"><a href="' + WordfenceAdminVars.supportURLs['scan-result-repair-modified-files'] + '" target="_blank" rel="noopener noreferrer" class="wfhelp"></a><a href="' + WordfenceAdminVars.supportURLs['scan-result-repair-modified-files'] + '" target="_blank" rel="noopener noreferrer">' + __('Learn more about repairing modified files.') + ' (' + __('opens in new tab') + ')</a></div>'
				);
			},
			promptToRepairFileDone: function(issueID, dontPromptAgain) {
				if (dontPromptAgain) {
					if (window.localStorage) {
						window.localStorage.setItem('wf-repair-file-sudo', (new Date().getTime() + 86400000));
					}
				}
				this.repairFile(issueID);
			},
			repairFile: function(issueID) {
				var self = this;
				self.colorboxClose();
				this.restoreFile(issueID, function(res) {
					if (res.ok) {
						var issueElement = $('.wf-issue[data-issue-id=' + parseInt(issueID, 10) + ']');
						issueElement.remove();
						self.updateIssueCounts(res.issueCounts);
						self.repositionSiteCleaningCallout();
						self.updateBulkButtons();
						self.colorboxModal((self.isSmallScreen ? '300px' : '400px'), __("Success restoring file"), sprintf(__("The file %s was successfully restored."), res.file));
					}
					else if (res.errorMsg) {
						self.colorboxError(res.errorMsg, res.tokenInvalid);
					}
				});
			},
			deleteDatabaseOption: function(issueID) {
				var self = this;
				this.ajax('wordfence_deleteDatabaseOption', {
					issueID: issueID
				}, function(res) {
					self.doneDeleteDatabaseOption(res);
				});
			},
			doneDeleteDatabaseOption: function(res) {
				var cb = false;
				var self = this;
				if (res.ok) {
					this.loadIssues(function() {
						self.colorboxModal((self.isSmallScreen ? '300px' : '400px'), __("Success removing option"), sprintf(__("The option %s was successfully removed."), res.option_name));
					});
				} else if (res.cerrorMsg) {
					this.loadIssues(function() {
						WFAD.colorboxError(res.cerrorMsg, res.tokenInvalid);
					});
				}
			},
			useRecommendedHowGetIPs: function(issueID) {
				var self = this;
				this.ajax('wordfence_misconfiguredHowGetIPsChoice', {
					issueID: issueID,
					choice: 'yes'
				}, function(res) {
					if (res.ok) {
						jQuery('#wordfenceMisconfiguredHowGetIPsNotice').fadeOut();
						
						self.loadIssues(function() {
							self.colorboxModal((self.isSmallScreen ? '300px' : '400px'), __("Success updating option"), __("The 'How does Wordfence get IPs' option was successfully updated to the recommended value."));
						});
					} else if (res.cerrorMsg) {
						self.loadIssues(function() {
							WFAD.colorboxError(res.cerrorMsg, res.tokenInvalid);
						}); 
					}
				});	
			},
			fixFPD: function(issueID) {
				var self = this;
				var title = __("Full Path Disclosure");
				issueID = parseInt(issueID);

				this.ajax('wordfence_checkHtaccess', {}, function(res) {
					if (res.ok) {
						self.colorboxModalHTML((self.isSmallScreen ? '300px' : '400px'), title, __('We are about to change your <em>.htaccess</em> file. Please make a backup of this file before proceeding.')
							+ '<br/>'
							+ '<a href="' + WordfenceAdminVars.ajaxURL + '?action=wordfence_downloadHtaccess&nonce=' + self.nonce + '" onclick="jQuery(\'#wfFPDNextBut\').prop(\'disabled\', false); return true;">' + __('Click here to download a backup copy of your .htaccess file now') + '</a><br /><br /><input type="button" class="wf-btn wf-btn-default" name="but1" id="wfFPDNextBut" value="Click to fix .htaccess" disabled="disabled" onclick="WFAD.fixFPD_WriteHtAccess(' + issueID + ');" />');
					} else if (res.nginx) {
						self.colorboxModalHTML((self.isSmallScreen ? '300px' : '400px'), title, __('You are using an Nginx web server and using a FastCGI processor like PHP5-FPM. You will need to manually modify your php.ini to disable <em>display_error</em>'));
					} else if (res.err) {
						self.colorboxModal((self.isSmallScreen ? '300px' : '400px'), __("We encountered a problem"), sprintf(__("We can't modify your .htaccess file for you because: %s"), res.err));
					}
				});
			},
			fixFPD_WriteHtAccess: function(issueID) {
				var self = this;
				self.colorboxClose();
				this.ajax('wordfence_fixFPD', {
					issueID: issueID
				}, function(res) {
					if (res.ok) {
						self.loadIssues(function() {
							self.colorboxModal((self.isSmallScreen ? '300px' : '400px'), __("File restored OK"), __("The Full Path disclosure issue has been fixed"));
						});
					} else {
						self.loadIssues(function() {
							WFAD.colorboxError(res.cerrorMsg, res.tokenInvalid);
						});
					}
				});
			},
			
			hideFile: function(issueID, callback) {
				WFAD.ajax('wordfence_checkHtaccess', {}, function(checkRes) {
					if (checkRes.ok) {
						WFAD.colorboxModalHTML((WFAD.isSmallScreen ? '300px' : '400px'), __('.htaccess change'), __('We are about to change your <em>.htaccess</em> file. Please make a backup of this file before proceeding.')
							+ '<br/>'
							+ '<a id="dlButton" href="' + WordfenceAdminVars.ajaxURL + '?action=wordfence_downloadHtaccess&nonce=' + WFAD.nonce + '">' + __('Click here to download a backup copy of your .htaccess file now') + '</a>'
							+ '<br /><br /><input type="button" class="wf-btn wf-btn-default" name="but1" id="wfFPDNextBut" value="' + __('Click to fix .htaccess') + '" disabled="disabled" />'
						);
						$('#dlButton').on('click', function(e) {
							$('#wfFPDNextBut').prop('disabled', false);
						});
						$('#wfFPDNextBut').on('click', function(e) {
							e.preventDefault();
							e.stopPropagation();

							WFAD.ajax('wordfence_hideFileHtaccess', {
								issueID: issueID
							}, function(res) {
								WFAD.colorboxClose();
								typeof callback === 'function' && callback(res);
							});
						});
					}
					else if (checkRes.nginx) {
						WFAD.colorboxModal((WFAD.isSmallScreen ? '300px' : '400px'), __('Unable to automatically hide file'), __('You are using an Nginx web server and using a FastCGI processor like PHP5-FPM. You will need to manually delete or hide those files.'));
					}
					else if (checkRes.err) {
						WFAD.colorboxModal((WFAD.isSmallScreen ? '300px' : '400px'), __("We encountered a problem"), sprintf(__("We can't modify your .htaccess file for you because: %s"), res.err));
					}
				});
			},

			restoreFile: function(issueID, callback) {
				this.ajax('wordfence_restoreFile', {
					issueID: issueID
				}, function(res) {
					if (res.needsCredentials) {
						document.location.href = res.redirect;
					}
					else {
						typeof callback === 'function' && callback(res);
					}
				});
			},

			disableDirectoryListing: function(issueID) {
				var self = this;
				var title = "Disable Directory Listing";
				issueID = parseInt(issueID);

				this.ajax('wordfence_checkHtaccess', {}, function(res) {
					if (res.ok) {
						self.colorboxModalHTML((self.isSmallScreen ? '300px' : '400px'), title, __('We are about to change your <em>.htaccess</em> file. Please make a backup of this file before proceeding.')
							+ '<br/>'
							+ '<a href="' + WordfenceAdminVars.ajaxURL + '?action=wordfence_downloadHtaccess&nonce=' + self.nonce + '" onclick="jQuery(\'#wf-htaccess-confirm\').prop(\'disabled\', false); return true;">' + __('Click here to download a backup copy of your .htaccess file now') + '</a>' +
							'<br /><br />' +
							'<button class="wf-btn wf-btn-default" type="button" id="wf-htaccess-confirm" disabled="disabled" onclick="WFAD.confirmDisableDirectoryListing(' + issueID + ');">' + __('Add code to .htaccess') + '</button>');
					} else if (res.nginx) {
						self.colorboxModalHTML((self.isSmallScreen ? '300px' : '400px'), __("You are using Nginx as your web server. You'll need to disable autoindexing in your nginx.conf. See the <a target='_blank'  rel='noopener noreferrer' href='https://nginx.org/en/docs/http/ngx_http_autoindex_module.html'>Nginx docs for more info</a> on how to do this."));
					} else if (res.err) {
						self.colorboxModal((self.isSmallScreen ? '300px' : '400px'), __("We encountered a problem"), sprintf(__("We can't modify your .htaccess file for you because: %s"), res.err));
					}
				});
			},
			confirmDisableDirectoryListing: function(issueID) {
				var self = this;
				this.colorboxClose();
				this.ajax('wordfence_disableDirectoryListing', {
					issueID: issueID
				}, function(res) {
					if (res.ok) {
						self.loadIssues(function() {
							self.colorboxModal((self.isSmallScreen ? '300px' : '400px'), __("Directory Listing Disabled"), __("Directory listing has been disabled on your server."));
						});
					} else {
						//self.loadIssues(function() {
						//	self.colorbox('400px', 'An error occurred', res.errorMsg);
						//});
					}
				});
			},

			deleteIssue: function(id) {
				var self = this;
				this.ajax('wordfence_deleteIssue', {id: id}, function(res) {
					self.loadIssues();
				});
			},
			updateIssueStatus: function(id, st, callback) {
				this.ajax('wordfence_updateIssueStatus', {id: id, 'status': st}, function(res) {
					typeof callback === 'function' && callback(res);
				});
			},
			es: function(val) {
				if (val) {
					return val;
				} else {
					return "";
				}
			},
			noQuotes: function(str) {
				return str.replace(/"/g, '&#34;').replace(/\'/g, '&#145;');
			},
			commify: function(num) {
				return ("" + num).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,");
			},
			switchToLiveTab: function(elem) {
				jQuery('.wfTab1').removeClass('selected');
				jQuery(elem).addClass('selected');
				jQuery('.wfDataPanel').hide();
				var self = this;
				jQuery('#wfActivity').fadeIn(function() {
					self.completeLiveTabSwitch();
				});
			},
			completeLiveTabSwitch: function() {
				this.ajax('wordfence_loadActivityLog', {}, function(res) {
					var html = '<a href="#" class="wfALogMailLink" onclick="WFAD.emailActivityLog(); return false;" role="button"></a><a href="#" class="wfALogReloadLink" onclick="WFAD.reloadActivityData(); return false;" role="button"></a>';
					if (res.events && res.events.length > 0) {
						jQuery('#wfActivity').empty();
						for (var i = 0; i < res.events.length; i++) {
							var timeTaken = '0.0000';
							if (res.events[i + 1]) {
								timeTaken = (res.events[i].ctime - res.events[i + 1].ctime).toFixed(4);
							}
							var red = "";
							if (res.events[i].type == 'error') {
								red = ' class="wfWarn" ';
							}
							html += '<div ' + red + 'class="wfALogEntry"><span ' + red + 'class="wfALogTime">[' + res.events[i].type + '&nbsp;:&nbsp;' + timeTaken + '&nbsp;:&nbsp;' + res.events[i].timeAgo + ' ago]</span>&nbsp;' + res.events[i].msg + "</div>";
						}
						jQuery('#wfActivity').html(html);
					} else {
						jQuery('#wfActivity').html("<p>&nbsp;&nbsp;" + __('No activity to report yet. Please complete your first scan.') + "</p>");
					}
				});
			},
			emailActivityLog: function() {
				this.colorboxModalHTML((this.isSmallScreen ? '300px' : '400px'), __('Email Wordfence Activity Log'), __("Enter the email address you would like to send the Wordfence activity log to. Note that the activity log may contain thousands of lines of data. This log is usually only sent to a member of the Wordfence support team. It also contains your PHP configuration from the phpinfo() function for diagnostic data.") + "<br /><br /><input type='text' value='wftest@wordfence.com' size='20' id='wfALogRecip' /><input class='wf-btn wf-btn-default' type='button' value='" + __('Send') + "' onclick=\"WFAD.completeEmailActivityLog();\" />");
			},
			completeEmailActivityLog: function() {
				WFAD.colorboxClose();
				var email = jQuery('#wfALogRecip').val();
				if (!/^[^@]+@[^@]+$/.test(email)) {
					alert(__("Please enter a valid email address."));
					return;
				}
				var self = this;
				this.ajax('wordfence_sendActivityLog', {email: jQuery('#wfALogRecip').val()}, function(res) {
					if (res.ok) {
						self.colorboxModal((self.isSmallScreen ? '300px' : '400px'), __('Activity Log Sent'), sprintf(__("Your Wordfence activity log was sent to %s"), email));
					}
				});
			},
			reloadActivityData: function() {
				jQuery('#wfActivity').html('<div class="wfLoadingWhite32"></div>'); //&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />
				this.completeLiveTabSwitch();
			},
			switchToSummaryTab: function(elem) {
				jQuery('.wfTab1').removeClass('selected');
				jQuery(elem).addClass('selected');
				jQuery('.wfDataPanel').hide();
				jQuery('#wfSummaryTables').fadeIn();
			},
			switchIssuesTab: function(elem, type) {
				jQuery('.wfTab2').removeClass('selected');
				jQuery('.wfIssuesContainer').hide();
				jQuery(elem).addClass('selected');
				this.visibleIssuesPanel = type;
				jQuery('#wfIssues_' + type).fadeIn();
			},
			switchTab: function(tabElement, tabClass, contentClass, selectedContentID, callback) {
				jQuery('.' + tabClass).removeClass('selected');
				jQuery(tabElement).addClass('selected');
				jQuery('.' + contentClass).hide().html('<div class="wfLoadingWhite32"></div>');
				var func = function() {
				};
				if (callback) {
					func = function() {
						callback();
					};
				}
				jQuery('#' + selectedContentID).fadeIn(func);
			},
			reloadLiveTraffic: function() {
				this.newestActivityTime = 0;
				this.updateLiveTraffic(true);
			},
			ucfirst: function(str) {
				str = "" + str;
				return str.charAt(0).toUpperCase() + str.slice(1);
			},
			makeIPTrafLink: function(IP) {
				return WordfenceAdminVars.siteBaseURL + '?_wfsf=IPTraf&nonce=' + this.nonce + '&IP=' + encodeURIComponent(IP);
			},
			getRealFileParameters: function(data) {
				if ('realFile' in data) {
					return '&realFile=' + encodeURIComponent(this.es(data['realFile'])) + '&realFileToken=' + encodeURIComponent(this.es(data['realFileToken']));
				}
				else {
					return '';
				}
			},
			makeDiffLink: function(dat) {
				return WordfenceAdminVars.siteBaseURL + '?_wfsf=diff&nonce=' + this.nonce +
					'&file=' + encodeURIComponent(this.es(dat['file'])) +
					this.getRealFileParameters(dat) +
					'&cType=' + encodeURIComponent(this.es(dat['cType'])) +
					'&cKey=' + encodeURIComponent(this.es(dat['cKey'])) +
					'&cName=' + encodeURIComponent(this.es(dat['cName'])) +
					'&cVersion=' + encodeURIComponent(this.es(dat['cVersion']));
			},
			makeViewFileLink: function(data) {
				return WordfenceAdminVars.siteBaseURL + '?_wfsf=view&nonce=' + this.nonce + '&file=' + encodeURIComponent(data.file) + this.getRealFileParameters(data);
			},
			makeDownloadFileLink: function(data) {
				return WordfenceAdminVars.siteBaseURL + '?_wfsf=download&nonce=' + this.nonce + '&file=' + encodeURIComponent(data.file) + this.getRealFileParameters(data);
			},
			makeViewOptionLink: function(option, siteID) {
				return WordfenceAdminVars.siteBaseURL + '?_wfsf=viewOption&nonce=' + this.nonce + '&option=' + encodeURIComponent(option) + '&site_id=' + encodeURIComponent(siteID);
			},
			parseHashes: function() {
				var hashes = window.location.hash.replace('%23', '#');
				var splitHashes = hashes.split('#');
				var result = [];
				for (var i = 0; i < splitHashes.length; i++) {
					if (splitHashes[i].length > 0) {
						result.push(splitHashes[i]);
					}
				}
				return result;
			},
			makeTimeAgo: function(t) {
				var months = Math.floor(t / (86400 * 30));
				var days = Math.floor(t / 86400);
				var hours = Math.floor(t / 3600);
				var minutes = Math.floor(t / 60);
				if (months > 0) {
					days -= months * 30;
					return this.pluralize(months, 'month', days, 'day');
				} else if (days > 0) {
					hours -= days * 24;
					return this.pluralize(days, 'day', hours, 'hour');
				} else if (hours > 0) {
					minutes -= hours * 60;
					return this.pluralize(hours, 'hour', minutes, 'min');
				} else if (minutes > 0) {
					//t -= minutes * 60;
					return this.pluralize(minutes, 'minute');
				} else {
					return Math.round(t) + " seconds";
				}
			},
			pluralize: function(m1, t1, m2, t2) {
				if (m1 != 1) {
					t1 = t1 + 's';
				}
				if (m2 != 1) {
					t2 = t2 + 's';
				}
				if (m1 && m2) {
					return m1 + ' ' + t1 + ' ' + m2 + ' ' + t2;
				} else {
					return m1 + ' ' + t1;
				}
			},
			isValidIP: function(ip) {
				if (!ip) {
					return false;
				}
				ip = ip.replace(/ /g, '');
				if (ip.match(/^(?:\d{1,3}(?:\.|$)){4}/)) { //IPv4
					var octets = ip.split('.');
					if (octets.length != 4) {
						return false;
					}
					
					for (var i = 0; i < octets.length; i++) {
						if (parseInt(octets[i]) > 255) {
							return false;
						}
					}

					return !!this.inet_pton(ip);
				}
				else if (ip.match(/^((?:[\da-f]{1,4}(?::|)){0,8})(::)?((?:[\da-f]{1,4}(?::|)){0,8})$/i)) { //IPv6
					if (ip == '::') {
						return true;
					}

					var colonCount = ip.split(':').length - 1;
					var doubleColonPos = ip.indexOf('::');
					if (doubleColonPos > -1) {
						var expansionLength = ((doubleColonPos == 0 || doubleColonPos == ip.length - 2) ? 9 : 8) - colonCount;
						if (expansionLength == 0) { //Double-colon in a full IPv6 address
							return false;
						}
						
						var expansion = '';
						for (i = 0; i < expansionLength; i++) {
							expansion += ':0000';
						}
						ip = ip.replace('::', expansion + ':');
						ip = ip.replace(/(?:^\:|\:$)/, '', ip);
					}

					var ipGroups = ip.split(':');
					var ipBin = '';
					for (i = 0; i < ipGroups.length; i++) {
						var group = ipGroups[i];
						if (group.length > 4 || group.length == 0) {
							return false;
						}
						group = ("0000" + group).slice(-4);
						var b1 = parseInt(group.slice(0, 2), 16);
						var b2 = parseInt(group.slice(-2), 16);
						if (isNaN(b1) || isNaN(b2)) {
							return false;
						}
						ipBin += String.fromCharCode(b1) + String.fromCharCode(b2);
					}

					return ipBin.length == 16 ? true : false;
				}
				
				return false;
			},
			parseIPRange: function(range) {
				if (!range) {
					return false;
				}
				range = range.replace(/ /g, '');
				range = range.replace(/[\u2013-\u2015]/g, '-'); //Non-hyphen dashes to hyphen
				if (range && /^[^\-]+\-[^\-]+$/.test(range)) {
					var count = 1;
					var countOverflow = false;

					var ips = range.split('-');
					var ip1 = this.inet_pton(ips[0]);
					var ip2 = this.inet_pton(ips[1]);

					if (ip1 === false || !this.isValidIP(ips[0]) || ip2 === false || !this.isValidIP(ips[1])) {
						return false;
					}
					
					//Both to 16-byte binary strings
					var binStart = ("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff" + ip1).slice(-16);
					var binEnd = ("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff" + ip2).slice(-16);

					for (var i = 0; i < binStart.length; i++) {
						var n0 = binStart.charCodeAt(i);
						var n1 = binEnd.charCodeAt(i);

						if (i < 11 && n1 - n0 > 0) { //Based on Number.MAX_SAFE_INTEGER, which equals 2 ^ 53 - 1. Any of the first 9 bytes and part of the 10th that add to the range will put us over that
							countOverflow = true;
							break;
						}
						else if (i < 11 && n1 - n0 < 0) {
							return false;
						}

						count += (n1 - n0) << (8 * (15 - i));
						if (count < 1) {
							return false;
						}
					}
					
					return {start: ip1, end: ip2, count: count, countOverflow: countOverflow};
				}
				else if (range && /^[^\/]+\/\d+$/.test(range)) {
					var count = 1;
					var countOverflow = false;

					var components = range.split('/');
					var ip = this.inet_pton(components[0]);
					var bits = parseInt(components[1]);
					
					if (ip === false || !this.isValidIP(components[0])) {
						return false;
					}
					
					var binIP = ("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff" + ip).slice(-16);
					if (binIP.slice(12) === "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff") {
						if (bits < 1 || bits > 32) {
							return false;
						}
					}
					else {
						if (bits < 1 || bits > 128) {
							return false;
						}
					}
					
					if (bits >= 53) {
						countOverflow = true;
						count = Math.pow(2, 53) - 1; /* Number.MAX_SAFE_INTEGER is unavailable in IE */
					}
					else {
						count = Math.pow(2, bits);
					}

					return {ip: ip, bits: bits, count: count, countOverflow: countOverflow};
				}
				
				return false;
			},
			calcRangeTotal: function() {
				var range = jQuery('#ipRange').val();
				if (!range) {
					return;
				}
				range = range.replace(/ /g, '');
				range = range.replace(/[\u2013-\u2015]/g, '-'); //Non-hyphen dashes to hyphen
				if (range && /^[^\-]+\-[^\-]+$/.test(range)) {
					var count = 1;
					var countOverflow = false;
					var badRange = false;
					var badIP = false;
					
					var ips = range.split('-');
					var ip1 = this.inet_pton(ips[0]);
					var ip2 = this.inet_pton(ips[1]);
					
					if (ip1 === false || ip2 === false) {
						badIP = true;
					}
					else {
						//Both to 16-byte binary strings
						var binStart = ("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff" + ip1).slice(-16);
						var binEnd = ("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff" + ip2).slice(-16);
						
						for (var i = 0; i < binStart.length; i++) {
							var n0 = binStart.charCodeAt(i);
							var n1 = binEnd.charCodeAt(i);
							
							if (i < 11 && n1 - n0 > 0) { //Based on Number.MAX_SAFE_INTEGER, which equals 2 ^ 53 - 1. Any of the first 9 bytes and part of the 10th that add to the range will put us over that
								countOverflow = true;
								break;
							}
							else if (i < 11 && n1 - n0 < 0) {
								badRange = true;
								break;
							}
							
							count += (n1 - n0) << (8 * (15 - i));
							if (count < 1) {
								badRange = true;
								break;
							}
						}
					}
					
					if (badIP) {
						jQuery('#wfShowRangeTotal').html("<span style=\"color: #F00;\">Invalid IP entered.</span>"); 
						return;
					}
					else if (badRange) {
						jQuery('#wfShowRangeTotal').html("<span style=\"color: #F00;\">Invalid. Starting IP is greater than ending IP.</span>");
						return;
					}
					else if (countOverflow) {
						jQuery('#wfShowRangeTotal').html("<span style=\"color: #0A0;\">Valid: &gt;281474976710656 addresses in range.</span>");
						return;
					}

					jQuery('#wfShowRangeTotal').html("<span style=\"color: #0A0;\">Valid: " + count + " addresses in range.</span>"); 
				}
				else {
					jQuery('#wfShowRangeTotal').empty();
				}
			},
			completeWhois: function(res, ret) {
				ret = ret === undefined ? false : !!ret;
				var self = this;
				var rawhtml = "";
				var ipRangeTmpl = jQuery("<div><div class='wf-flex-row'>" +
					"<a class=\"wf-btn wf-btn-default wf-flex-row-0\" href=\"${adminUrl}\">" + __('Block This Network') + "</a>" +
					"<span class='wf-flex-row-1 wf-padding-add-left'>{{html totalStr}}{{if totalStr.indexOf(ipRange) == -1}} (${ipRange}){{/if}}" +
					'{{if (totalIPs)}}<br>[' + __('${totalIPs} addresses in this network') + ']{{/if}}' +
					"</span></div></div>");
				if (res.ok && res.result && res.result.rawdata && res.result.rawdata.length > 0) {
					for (var i = 0; i < res.result.rawdata.length; i++) {
						res.result.rawdata[i] = jQuery('<div />').text(res.result.rawdata[i]).html();
						res.result.rawdata[i] = res.result.rawdata[i].replace(/([a-zA-Z0-9\-._+]+@[a-zA-Z0-9\-._]+)/, "<a href=\"mailto:$1\">$1<\/a>");
						res.result.rawdata[i] = res.result.rawdata[i].replace(/(https?:\/\/[a-zA-Z0-9\-._+\/?&=#%:@;]+)/, "<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"$1\">$1<\/a>");

						function wfm21(str, startStr, ipRange, offset, totalStr) {
							var ips = ipRange.split(/\s*\-\s*/);
							var totalIPs = NaN;
							if (ips[0].indexOf(':') < 0) {
								var ip1num = self.inet_aton(ips[0]);
								var ip2num = self.inet_aton(ips[1]);
								totalIPs = ip2num - ip1num + 1;
							}
							var adminUrl = "admin.php?page=WordfenceWAF&wfBlockRange=" + encodeURIComponent(ipRange) + "#top#blocking";
							return jQuery(ipRangeTmpl).tmpl({
								adminUrl: adminUrl,
								totalStr: totalStr,
								ipRange: ipRange,
								totalIPs: totalIPs
							}).wrapAll('<div>').parent().html();
						}

						function buildRangeLink2(str, startStr, octet1, octet2, octet3, octet4, cidrRange, offset, totalStr) {

							octet3 = octet3.length > 0 ? octet3 : '0';
							octet4 = octet4.length > 0 ? octet4 : '0';

							var rangeStart = [octet1, octet2, octet3, octet4].join('.');
							var rangeStartNum = self.inet_aton(rangeStart);
							cidrRange = parseInt(cidrRange, 10);
							if (!isNaN(rangeStartNum) && cidrRange > 0 && cidrRange < 32) {
								var rangeEndNum = rangeStartNum;
								for (var i = 32, j = 1; i >= cidrRange; i--, j *= 2) {
									rangeEndNum |= j;
								}
								rangeEndNum = rangeEndNum >>> 0;
								var ipRange = self.inet_ntoa(rangeStartNum) + ' - ' + self.inet_ntoa(rangeEndNum);
								var totalIPs = rangeEndNum - rangeStartNum + 1;
								var adminUrl = "admin.php?page=WordfenceWAF&wfBlockRange=" + encodeURIComponent(ipRange) + "#top#blocking";
								return jQuery(ipRangeTmpl).tmpl({
									adminUrl: adminUrl,
									totalStr: totalStr,
									ipRange: ipRange,
									totalIPs: totalIPs
								}).wrapAll('<div>').parent().html();

							}
							return str;
						}

						var rangeRegex = /(.*?)(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} - \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}|[a-f0-9:.]{3,} - [a-f0-9:.]{3,}).*$/i;
						var cidrRegex = /(.*?)(\d{1,3})\.(\d{1,3})\.?(\d{0,3})\.?(\d{0,3})\/(\d{1,3}).*$/i;
						if (rangeRegex.test(res.result.rawdata[i])) {
							res.result.rawdata[i] = res.result.rawdata[i].replace(rangeRegex, wfm21);
							rawhtml += res.result.rawdata[i];
						} else if (cidrRegex.test(res.result.rawdata[i])) {
							res.result.rawdata[i] = res.result.rawdata[i].replace(cidrRegex, buildRangeLink2);
							rawhtml += res.result.rawdata[i];
						} else {
							rawhtml += res.result.rawdata[i] + "<br />";
						}
					}
					rawhtml = rawhtml.replace(/<\/div><br \/>/g, '</div>');
				} else {
					var message = __('Sorry, but no data for that IP or domain was found.');
					var content = jQuery('<span style="color: #F00;">');
					content.text(message);
					rawhtml = content.get(0).outerHTML;
				}
				if (ret) {
					return rawhtml;
				}
				jQuery('#wfrawhtml').html(rawhtml);
			},
			blockIPUARange: function(ipRange, hostname, uaRange, referer, reason) {
				if (!/\w+/.test(reason)) {
					this.colorboxModal('300px', __("Please specify a reason"), __("You forgot to include a reason you're blocking this IP range. We ask you to include this for your own record keeping."));
					return;
				}
				ipRange = ipRange.replace(/ /g, '').toLowerCase();
				ipRange = ipRange.replace(/[\u2013-\u2015]/g, '-'); //Non-hyphen dashes to hyphen
				if (ipRange) {
					var range = ipRange.split('-'),
						validRange;
					if (range.length !== 2) {
						validRange = false;
					} else if (range[0].match(':')) {
						validRange = this.inet_pton(range[0]) !== false && this.inet_pton(range[1]) !== false;
					} else if (range[0].match('.')) {
						validRange = this.inet_aton(range[0]) !== false && this.inet_aton(range[1]) !== false;
					}
					if (!validRange) {
						this.colorboxModal('300px', __('Specify a valid IP range'), __("Please specify a valid IP address range in the form of \"1.2.3.4 - 1.2.3.5\" without quotes. Make sure the dash between the IP addresses in a normal dash (a minus sign on your keyboard) and not another character that looks like a dash."));
						return;
					}
				}
				if (hostname && !/^[a-z0-9\.\*\-]+$/i.test(hostname)) {
					this.colorboxModalHTML('300px', __('Specify a valid hostname'), sprintf(__('%s is not valid hostname'), '<i>' + this.htmlEscape(hostname) + '</i>'));
					return;
				}
				if (!(/\w+/.test(ipRange) || /\w+/.test(uaRange) || /\w+/.test(referer) || /\w+/.test(hostname))) {
					this.colorboxModal('300px', __('Specify an IP range, Hostname or Browser pattern'), __("Please specify either an IP address range, Hostname or a web browser pattern to match."));
					return;
				}
				var self = this;
				this.ajax('wordfence_blockIPUARange', {
					ipRange: ipRange,
					hostname: hostname,
					uaRange: uaRange,
					referer: referer,
					reason: reason
				}, function(res) {
					if (res.ok) {
						self.loadBlockRanges();
						return;
					}
				});
			},
			blockIP: function(IP, reason, callback) {
				var self = this;
				this.ajax('wordfence_blockIP', {
					IP: IP,
					reason: reason
				}, function(res) {
					if (res.errorMsg) {
						return;
					} else {
						self.reloadLiveTraffic();
						typeof callback === 'function' && callback();
					}
				});
			},
			unlockOutIP: function(IP) {
				var self = this;
				this.ajax('wordfence_unlockOutIP', {
					IP: IP
				}, function(res) {
					self.staticTabChanged();
				});
			},
			unblockIP: function(IP, callback) {
				var self = this;
				this.ajax('wordfence_unblockIP', {
					IP: IP
				}, function(res) {
					self.reloadLiveTraffic();
					typeof callback === 'function' && callback();
				});
			},
			unblockNetwork: function(id) {
				var self = this;
				this.ajax('wordfence_unblockRange', {
					id: id
				}, function(res) {
					self.reloadLiveTraffic();
				});
			},
			unblockIPTwo: function(IP) {
				var self = this;
				this.ajax('wordfence_unblockIP', {
					IP: IP
				}, function(res) {
					self.staticTabChanged();
				});
			},
			permBlockIP: function(IP) {
				var self = this;
				this.ajax('wordfence_permBlockIP', {
					IP: IP
				}, function(res) {
					self.staticTabChanged();
				});
			},
			makeElemID: function() {
				return 'wfElemGen' + this.elementGeneratorIter++;
			},
			pulse: function(sel) {
				jQuery(sel).fadeIn(function() {
					setTimeout(function() {
						jQuery(sel).fadeOut();
					}, 2000);
				});
			},
			twoFacStatus: function(msg) {
				this.colorboxModal('300px', __('Two Factor Status'), msg);
			},
			addTwoFactor: function(username, phone, mode) {
				var self = this;
				this.ajax('wordfence_addTwoFactor', {
					username: username,
					phone: phone,
					mode: mode
				}, function(res) {
					if (res.ok) {
						if (mode == 'authenticator') {
							var totpURL = "otpauth://totp/" + encodeURI(res.homeurl) + encodeURI(" (" + res.username + ")") + "?" + res.uriQueryString + "&issuer=Wordfence"; 							
							var message = __('Scan the code below with your authenticator app to add this account. Some authenticator apps also allow you to type in the text version instead.') + "<br><div id=\"wfTwoFactorQRCodeTable\"></div><br><strong>" + __('Key:') + "</strong> <input type=\"text\"" + (self.isSmallScreen ? "" : " size=\"45\"") + " value=\"" + res.base32Secret + "\" onclick=\"this.select();\" readonly>";
							if (res.recoveryCodes.length > 0) {
								message = message + "<br><br><strong>" + __('Recovery Codes') + "</strong><br><p>" + sprintf(__("Use one of these %s codes to log in if you lose access to your authenticator device. Codes are 16 characters long, plus optional spaces. Each one may be used only once."), res.recoveryCodes.length) + "</p><ul id=\"wfTwoFactorRecoveryCodes\">";

								var recoveryCodeFileContents = __('Cellphone Sign-In Recovery Codes') + " - " + res.homeurl + " (" + res.username + ")\r\n";
								recoveryCodeFileContents = recoveryCodeFileContents + "\r\n" + __("Each line of 16 letters and numbers is a single recovery code, with optional spaces for readability. When typing your password, enter \"wf\" followed by the entire code like \"mypassword wf1234 5678 90AB CDEF\". If your site shows a separate prompt for entering a code after entering only your username and password, enter only the code like \"1234 5678 90AB CDEF\". Your recovery codes are:") + "\r\n\r\n";
								var splitter = /.{4}/g;
								for (var i = 0; i < res.recoveryCodes.length; i++) { 
									var code = res.recoveryCodes[i];
									var chunks = code.match(splitter);
									message = message + "<li>" + chunks[0] + " " + chunks[1] + " " + chunks[2] + " " + chunks[3] + "</li>";
									recoveryCodeFileContents = recoveryCodeFileContents + chunks[0] + " " + chunks[1] + " " + chunks[2] + " " + chunks[3] + "\r\n"; 
								}
								
								message = message + "</ul>";
								
								message = message + "<p class=\"wf-center\"><a href=\"#\" class=\"wf-btn wf-btn-default\" id=\"wfTwoFactorDownload\" target=\"_blank\" rel=\"noopener noreferrer\"><i class=\"dashicons dashicons-download\"></i> " + __('Download') + "</a></p>";
							}

							message = message + "<p><em>" + __("This will be shown only once. Keep these codes somewhere safe.") + "</em></p>";
							
							self.colorboxModalHTML((self.isSmallScreen ? '300px' : '440px'), __("Authentication Code"), message, {onComplete: function() {
								jQuery('#wfTwoFactorQRCodeTable').qrcode({text: totpURL, width: (self.isSmallScreen ? 175 : 256), height: (self.isSmallScreen ? 175 : 256)});
								jQuery('#wfTwoFactorDownload').on('click', function(e) {
									e.preventDefault();
									e.stopPropagation();
									saveAs(new Blob([recoveryCodeFileContents], {type: "text/plain;charset=" + document.characterSet}), self.htmlEscape(res.homeurl) + "_" + self.htmlEscape(res.username) + "_recoverycodes.txt");
								});
							}});
						}
						else {
							if (res.recoveryCodes.length > 0) {
								var message = "<p>" + sprintf(__("Use one of these %s codes to log in if you are unable to access your phone. Codes are 16 characters long, plus optional spaces. Each one may be used only once."), res.recoveryCodes.length) + "</p><ul id=\"wfTwoFactorRecoveryCodes\">";

								var recoveryCodeFileContents = __('Cellphone Sign-In Recovery Codes') + " - " + res.homeurl + " (" + res.username + ")\r\n";
								recoveryCodeFileContents = recoveryCodeFileContents + "\r\n" + __("Each line of 16 letters and numbers is a single recovery code, with optional spaces for readability. When typing your password, enter \"wf\" followed by the entire code like \"mypassword wf1234 5678 90AB CDEF\". If your site shows a separate prompt for entering a code after entering only your username and password, enter only the code like \"1234 5678 90AB CDEF\". Your recovery codes are:") + "\r\n\r\n";
								var splitter = /.{4}/g;
								for (var i = 0; i < res.recoveryCodes.length; i++) {
									var code = res.recoveryCodes[i];
									var chunks = code.match(splitter);
									message = message + "<li>" + chunks[0] + " " + chunks[1] + " " + chunks[2] + " " + chunks[3] + "</li>";
									recoveryCodeFileContents = recoveryCodeFileContents + chunks[0] + " " + chunks[1] + " " + chunks[2] + " " + chunks[3] + "\r\n";
								}

								message = message + "<p class=\"wf-center\"><a href=\"#\" class=\"wf-btn wf-btn-default\" id=\"wfTwoFactorDownload\" target=\"_blank\" rel=\"noopener noreferrer\"><i class=\"dashicons dashicons-download\"></i> " + __('Download') + "</a></p>";

								message = message + "</ul><p><em>" + __("This will be shown only once. Keep these codes somewhere safe.") + "</em></p>";

								self.colorboxModalHTML((self.isSmallScreen ? '300px' : '400px'), __("Recovery Codes"), message, {onComplete: function() {
									jQuery('#wfTwoFactorDownload').on('click', function(e) {
										e.preventDefault();
										e.stopPropagation();
										saveAs(new Blob([recoveryCodeFileContents], {type: "text/plain;charset=" + document.characterSet}), self.htmlEscape(res.homeurl) + "_" + self.htmlEscape(res.username) + "_recoverycodes.txt");
									});
								}});
							}
						}
						
						var updatedTwoFac = jQuery('#wfTwoFacUserTmpl').tmpl({users: [res]});
						jQuery('#twoFactorUser-none').remove();
						jQuery('#wfTwoFacUsers > table > tbody:last-child').append(updatedTwoFac.find('tbody > tr'));
					}
				});
			},
			twoFacActivate: function(userID, code) {
				var self = this;
				this.ajax('wordfence_twoFacActivate', {
					userID: userID,
					code: code
				}, function(res) {
					if (res.ok) {
						var updatedTwoFac = jQuery('#wfTwoFacUserTmpl').tmpl({users: [res]});
						updatedTwoFac.find('tbody > tr').each(function(index, element) {
							jQuery('#' + jQuery(element).attr('id')).replaceWith(element);
						});
						self.twoFacStatus(__('Cellphone Sign-in activated for user.'));
					}
				});
			},
			delTwoFac: function(userID) {
				this.ajax('wordfence_twoFacDel', {
					userID: userID
				}, function(res) {
					if (res.ok) {
						jQuery('#twoFactorUser-' + res.userID).fadeOut(function() {
							jQuery(this).remove();
							
							if (jQuery('#wfTwoFacUsers > table > tbody:last-child').children().length == 0) {
								jQuery('#wfTwoFacUsers').html(jQuery('#wfTwoFacUserTmpl').tmpl({users: []}));
							}
						});
					}
				});
			},
			loadTwoFactor: function() {
				this.ajax('wordfence_loadTwoFactor', {}, function(res) {
					jQuery('#wfTwoFacUsers').html(jQuery('#wfTwoFacUserTmpl').tmpl(res));
				});
			},
			getQueryParam: function(name) {
				name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
				var regexS = "[\\?&]" + name + "=([^&#]*)";
				var regex = new RegExp(regexS);
				var results = regex.exec(window.location.search);
				if (results == null) {
					return "";
				} else {
					return decodeURIComponent(results[1].replace(/\+/g, " "));
				}
			},
			inet_aton: function(dot) {
				var d = dot.split('.');
				return ((((((+d[0]) * 256) + (+d[1])) * 256) + (+d[2])) * 256) + (+d[3]);
			},
			inet_ntoa: function(num) {
				var d = num % 256;
				for (var i = 3; i > 0; i--) {
					num = Math.floor(num / 256);
					d = num % 256 + '.' + d;
				}
				return d;
			},

			inet_pton: function(a) {
				//  discuss at: http://phpjs.org/functions/inet_pton/
				// original by: Theriault
				//   example 1: inet_pton('::');
				//   returns 1: '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0'
				//   example 2: inet_pton('127.0.0.1');
				//   returns 2: '\x7F\x00\x00\x01'

				var r, m, x, i, j, f = String.fromCharCode;
				m = a.match(/^(?:\d{1,3}(?:\.|$)){4}/); // IPv4
				if (m) {
					m = m[0].split('.');
					m = f(m[0]) + f(m[1]) + f(m[2]) + f(m[3]);
					// Return if 4 bytes, otherwise false.
					return m.length === 4 ? m : false;
				}
				r = /^((?:[\da-f]{1,4}(?::|)){0,8})(::)?((?:[\da-f]{1,4}(?::|)){0,8})$/i;
				m = a.match(r); // IPv6
				if (m) {
					if (a == '::') {
						return "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00";
					}

					var colonCount = a.split(':').length - 1;
					var doubleColonPos = a.indexOf('::');
					if (doubleColonPos > -1) {
						var expansionLength = ((doubleColonPos == 0 || doubleColonPos == a.length - 2) ? 9 : 8) - colonCount;
						var expansion = '';
						for (i = 0; i < expansionLength; i++) {
							expansion += ':0000';
						}
						a = a.replace('::', expansion + ':');
						a = a.replace(/(?:^\:|\:$)/, '', a);
					}
					
					var ipGroups = a.split(':');
					var ipBin = '';
					for (i = 0; i < ipGroups.length; i++) {
						var group = ipGroups[i];
						if (group.length > 4) {
							return false;
						}
						group = ("0000" + group).slice(-4);
						var b1 = parseInt(group.slice(0, 2), 16);
						var b2 = parseInt(group.slice(-2), 16);
						if (isNaN(b1) || isNaN(b2)) {
							return false;
						}
						ipBin += f(b1) + f(b2);
					}
					
					return ipBin.length == 16 ? ipBin : false;
				}
				return false; // Invalid IP.
			},
			inet_ntop: function(a) {
				//  discuss at: http://phpjs.org/functions/inet_ntop/
				// original by: Theriault
				//   example 1: inet_ntop('\x7F\x00\x00\x01');
				//   returns 1: '127.0.0.1'
				//   example 2: inet_ntop('\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1');
				//   returns 2: '::1'

				var i = 0,
					m = '',
					c = [];
				a += '';
				if (a.length === 4) { // IPv4
					return [
						a.charCodeAt(0), a.charCodeAt(1), a.charCodeAt(2), a.charCodeAt(3)].join('.');
				} else if (a.length === 16) { // IPv6
					for (i = 0; i < 16; i++) {
						c.push(((a.charCodeAt(i++) << 8) + a.charCodeAt(i))
							.toString(16));
					}
					return c.join(':')
						.replace(/((^|:)0(?=:|$))+:?/g, function(t) {
							m = (t.length > m.length) ? t : m;
							return t;
						})
						.replace(m || ' ', '::');
				} else { // Invalid length
					return false;
				}
			},

			deleteAdminUser: function(issueID) {
				var self = this;
				this.ajax('wordfence_deleteAdminUser', {
					issueID: issueID
				}, function(res) {
					if (res.ok) {
						self.loadIssues(function() {
							self.colorboxModal((self.isSmallScreen ? '300px' : '400px'), __("Successfully deleted admin"), sprintf(__("The admin user %s was successfully deleted."), res.user_login));
						});
					} else if (res.errorMsg) {
						self.loadIssues(function() {
							WFAD.colorboxError(res.errorMsg, res.tokenInvalid);
						});
					}
				});
			},

			revokeAdminUser: function(issueID) {
				var self = this;
				this.ajax('wordfence_revokeAdminUser', {
					issueID: issueID
				}, function(res) {
					if (res.ok) {
						self.loadIssues(function() {
							self.colorboxModal((self.isSmallScreen ? '300px' : '400px'), __("Successfully revoked admin"), sprintf(__("All capabilties of admin user %s were successfully revoked."), res.user_login));
						});
					} else if (res.errorMsg) {
						self.loadIssues(function() {
							WFAD.colorboxError(res.errorMsg, res.tokenInvalid);
						});
					}
				});
			},
			
			acknowledgeAdminUser: function (issueID) {
				var self = this;
				this.ajax('wordfence_acknowledgeAdminUser', {
					issueID: issueID
				}, function(res) {
					if (res.ok) {
						self.loadIssues(function() {
							self.colorboxModal((self.isSmallScreen ? '300px' : '400px'), __("Successfully acknowledged admin"), sprintf(__("The admin user %s will no longer show up in future scans."), res.user_login));
						});
					} else if (res.errorMsg) {
						self.loadIssues(function() {
							WFAD.colorboxError(res.errorMsg, res.tokenInvalid);
						});
					}
				});
			},

			windowHasFocus: function() {
				if (typeof document.hasFocus === 'function') {
					return document.hasFocus();
				}
				// Older versions of Opera
				return this._windowHasFocus;
			},

			htmlEscape: function(html) {
				return String(html)
					.replace(/&/g, '&amp;')
					.replace(/"/g, '&quot;')
					.replace(/'/g, '&#39;')
					.replace(/</g, '&lt;')
					.replace(/>/g, '&gt;');
			},

			permanentlyBlockAllIPs: function(type) {
				var self = this;
				this.ajax('wordfence_permanentlyBlockAllIPs', {
					type: type
				}, function(res) {
					$('#wfTabs').find('.wfTab1').eq(0).trigger('click');
				});
			},

			showTimestamp: function(timestamp, serverTime, format) {
				serverTime = serverTime === undefined ? new Date().getTime() / 1000 : serverTime;
				format = format === undefined ? '${dateTime} (${timeAgo} ago)' : format;
				var date = new Date(timestamp * 1000);

				return jQuery.tmpl(format, {
					dateTime: date.toLocaleDateString() + ' ' + date.toLocaleTimeString(),
					timeAgo: this.makeTimeAgo(serverTime - timestamp)
				});
			},

			updateTimeAgo: function() {
				var self = this;
				jQuery('.wfTimeAgo-timestamp').each(function(idx, elem) {
					var el = jQuery(elem);
					var testEl = el;
					if (typeof jQuery === "function" && testEl instanceof jQuery) {
						testEl = testEl[0];
					}

					var rect = testEl.getBoundingClientRect();
					if (!(rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth))) {
						return;
					}
					
					var timestamp = el.data('wfctime');
					if (!timestamp) {
						timestamp = el.attr('data-timestamp');
					}
					var serverTime = self.serverMicrotime;
					var format = el.data('wfformat');
					if (!format) {
						format = el.attr('data-format');
					}
					el.html(self.showTimestamp(timestamp, serverTime, format));
				});
			},

			wafData: {
				whitelistedURLParams: []
			},
			restoreWAFData: {
				whitelistedURLParams: []
			},
			
			wafWhitelistedBulkChangeEnabled: function(enabled) {
				$('.wf-whitelist-table-bulk-checkbox.wf-option-checkbox.wf-checked').each(function() {
					$(this).closest('tr').find('.wf-whitelist-item-enabled.wf-option-checkbox').each(function() {
						if (($(this).hasClass('wf-checked') && !enabled) || (!$(this).hasClass('wf-checked') && enabled)) {
							var tr = $(this).closest('tr');
							if (tr.is(':visible')) {
								WFAD.wafWhitelistedChangeEnabled(tr.data('key'), enabled);
							}
						}
					});
				})
			},
			
			wafWhitelistedChangeEnabled: function(key, enabled) {
				$('#waf-whitelisted-urls-wrapper .whitelist-table > tbody > tr[data-key="' + key + '"]').each(function() {
					var adding = !!$(this).data('adding');
					if (adding) {
						WFAD.pendingChanges['whitelistedURLParams']['add'][key]['data']['disabled'] = !enabled ? 1 : 0;
					}
					else {
						if (!(WFAD.pendingChanges['whitelistedURLParams'] instanceof Object)) {
							WFAD.pendingChanges['whitelistedURLParams'] = {};
						}

						if (!(WFAD.pendingChanges['whitelistedURLParams']['enabled'] instanceof Object)) {
							WFAD.pendingChanges['whitelistedURLParams']['enabled'] = {};
						}

						WFAD.pendingChanges['whitelistedURLParams']['enabled'][key] = !!enabled ? 1 : 0;
					}
					$(this).find('.wf-whitelist-item-enabled.wf-option-checkbox').toggleClass('wf-checked', !!enabled);
				});
			},

			wafWhitelistedBulkDelete: function() {
				$('.wf-whitelist-table-bulk-checkbox.wf-option-checkbox.wf-checked').each(function() {
					$(this).closest('tr').find('.wf-whitelist-item-enabled.wf-option-checkbox').each(function() {
						var tr = $(this).closest('tr');
						if (tr.is(':visible')) {
							WFAD.wafWhitelistedDelete(tr.data('key'));
						}
					});
				});
			},

			wafWhitelistedDelete: function(key) {
				$('#waf-whitelisted-urls-wrapper .whitelist-table > tbody > tr[data-key="' + key + '"]').each(function() {
					var adding = !!$(this).data('adding');
					if (adding) {
						delete WFAD.pendingChanges['whitelistedURLParams']['add'][key];
					}
					else {
						if (!(WFAD.pendingChanges['whitelistedURLParams'] instanceof Object)) {
							WFAD.pendingChanges['whitelistedURLParams'] = {};
						}

						if (!(WFAD.pendingChanges['whitelistedURLParams']['delete'] instanceof Object)) {
							WFAD.pendingChanges['whitelistedURLParams']['delete'] = {};
						}

						WFAD.pendingChanges['whitelistedURLParams']['delete'][key] = 1;
					}

					for (var i = 0; i < WFAD.wafData.whitelistedURLParams.length; i++) {
						var testKey = WFAD.wafData.whitelistedURLParams[i].path + '|' + WFAD.wafData.whitelistedURLParams[i].paramKey;
						if (testKey == key) {
							WFAD.wafData.whitelistedURLParams.splice(i, 1);
							break;
						}
					}
				});
			},

			wafConfigPageRender: function() {
				WFAD.wafData.ruleCount = 0;
				if (WFAD.wafData.rules) {
					WFAD.wafData.ruleCount = Object.keys(WFAD.wafData.rules).length;
				}
				
				var whitelistedIPsEl = $('#waf-whitelisted-urls-tmpl').tmpl(WFAD.wafData);
				$('#waf-whitelisted-urls-wrapper').html(whitelistedIPsEl);

				var rulesEl = $('#waf-rules-tmpl').tmpl(WFAD.wafData);
				$('#waf-rules-wrapper').html(rulesEl);
				
				$('#waf-show-all-rules-button').on('click', function(e) {
					e.preventDefault();
					e.stopPropagation();
					
					$('#waf-rules-wrapper').addClass('wf-show-all');
				});

				if (WFAD.wafData['rulesLastUpdated']) {
					var date = new Date(WFAD.wafData['rulesLastUpdated'] * 1000);
					WFAD.renderWAFRulesLastUpdated(date);
				}
				$(window).trigger('wordfenceWAFConfigPageRender');
			},

			renderWAFRulesLastUpdated: function(date) {
				var dateString = date.toString();
				if (date.toLocaleString) {
					dateString = date.toLocaleString();
				}
				$('#waf-rules-last-updated').text(sprintf(__('Last Updated: %s'), dateString))
					.css({
						'opacity': 0
					})
					.animate({
						'opacity': 1
					}, 500);
			},

			renderWAFRulesNextUpdate: function(date) {
				var dateString = date.toString();
				if (date.toLocaleString) {
					dateString = date.toLocaleString();
				}
				$('#waf-rules-next-update').text(sprintf(__('Next Update Check: %s'), dateString))
					.css({
						'opacity': 0
					})
					.animate({
						'opacity': 1
					}, 500);
			},

			wafUpdateRules: function(onSuccess) {
				var self = this;
				this.ajax('wordfence_updateWAFRules', {}, function(res) {
					self.wafData = res;
					self.restoreWAFData.rules = res.rules;
					self.restoreWAFData.rulesLastUpdated = res.rulesLastUpdated;
					self.wafConfigPageRender();
					if (self.wafData['updated']) {
						if (!self.wafData['isPaid']) {
							self.colorboxModalHTML((self.isSmallScreen ? '300px' : '400px'), __('Rules Updated'), __('Your rules have been updated successfully. You are currently using the free version of Wordfence. Upgrade to Wordfence premium to have your rules updated automatically as new threats emerge. <a href="https://www.wordfence.com/wafUpdateRules1/wordfence-signup/">Click here to purchase a premium license</a>. <em>Note: Your rules will still update every 30 days as a free user.</em>'));
						} else {
							self.colorboxModal((self.isSmallScreen ? '300px' : '400px'), __('Rules Updated'), __('Your rules have been updated successfully.'));
						}
					}
					else {
						if (self.wafData['failure'] == 'ratelimit') {
							self.colorboxModal((self.isSmallScreen ? '300px' : '400px'), __('Rule Update Failed'), __('No rules were updated. Your website has reached the maximum number of rule update requests. Please try again later.'));
						}
						else if (self.wafData['failure'] == 'unreachable') {
							self.colorboxModal((self.isSmallScreen ? '300px' : '400px'), __('Rule Update Failed'), __('No rules were updated. Please verify your website can reach the Wordfence servers.'));
						}
						else {
							self.colorboxModal((self.isSmallScreen ? '300px' : '400px'), __('Rule Update Failed'), __('No rules were updated. Please verify you have permissions to write to the /wp-content/wflogs directory.'));
						}
					}
					if (typeof onSuccess === 'function') {
						return onSuccess.apply(this, arguments);
					}
				});
			},

			dateFormat: function(date) {
				if (date instanceof Date) {
					if (date.toLocaleString) {
						return date.toLocaleString();
					}
					return date.toString();
				}
				return date;
			},

			confirmWAFConfigureAutoPrepend: function() {
				var self = this;
				this.ajax('wordfence_wafConfigureAutoPrepend', {}, function(res) {
					self.colorboxModal((self.isSmallScreen ? '300px' : '400px'), __('.htaccess Updated'), __("Your .htaccess has been updated successfully. Please verify your site is functioning normally."));
				});
			},
			
			updatePendingChanges: function() {
				$(window).off('beforeunload', WFAD._unsavedOptionsHandler);
				if (Object.keys(WFAD.pendingChanges).length) {
					$('#wf-cancel-changes').removeClass('wf-disabled');
					$('#wf-save-changes').removeClass('wf-disabled');
					$(window).on('beforeunload', WFAD._unsavedOptionsHandler);
				}
				else {
					$('#wf-cancel-changes').addClass('wf-disabled');
					$('#wf-save-changes').addClass('wf-disabled');
				}
			},
			
			_unsavedOptionsHandler: function(e) {
				var message = __("You have unsaved changes to your options. If you leave this page, those changes will be lost."); //Only shows on older browsers, newer browsers don't allow message customization
				e = e || window.event;
				if (e) {
					e.returnValue = message; //IE and Firefox
				}
				return message; //Others
			},
			
			setOption: function(key, value, successCallback, failureCallback, failureAfterModal) {
				var changes = {};
				changes[key] = value;
				this.ajax('wordfence_saveOptions', {changes: JSON.stringify(changes), page: WFAD.getParameterByName('page')}, function(res) {
					if (res.success) {
						typeof successCallback == 'function' && successCallback(res);
					}
					else {
						failureAfterModal = typeof failureAfterModal !== 'undefined' && failureAfterModal;
						var modalSettings = {};
						if (failureAfterModal)
							modalSettings.onClosed = failureCallback;
						WFAD.colorboxModal((self.isSmallScreen ? '300px' : '400px'), __('Error Saving Option'), res.error, modalSettings);
						if (!failureAfterModal)
							typeof failureCallback == 'function' && failureCallback(res);
					} 
				});
			},

			saveOptions: function(successCallback, failureCallback) {
				if (!Object.keys(WFAD.pendingChanges).length) {
					return;
				}
				var self = this;

				this.ajax('wordfence_saveOptions', {changes: JSON.stringify(WFAD.pendingChanges), page: WFAD.getParameterByName('page')}, function(res) {
					if (res.success) {
						typeof successCallback == 'function' && successCallback(res); 
					}
					else {
						WFAD.colorboxModal((self.isSmallScreen ? '300px' : '400px'), __('Error Saving Options'), res.error);
						typeof failureCallback == 'function' && failureCallback
					}
				});
			},
			
			enableAllOptionsPage: function() {
				this.ajax('wordfence_enableAllOptionsPage', {}, function(res) {
					if (res.redirect) {
						window.location.href = res.redirect;
					}
					else {
						WFAD.colorboxModal((self.isSmallScreen ? '300px' : '400px'), __('Error Enabling All Options Page'), res.error);
					}
				});
			},

			getParameterByName: function(name, url) {
				if (!url) url = window.location.href;
				name = name.replace(/[\[\]]/g, "\\$&");
				var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
					results = regex.exec(url);
				if (!results) return null;
				if (!results[2]) return '';
				return decodeURIComponent(results[2].replace(/\+/g, " "));
			},

			base64_decode: function(s) {
				var e = {}, i, b = 0, c, x, l = 0, a, r = '', w = String.fromCharCode, L = s.length;
				var A = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
				for (i = 0; i < 64; i++) {
					e[A.charAt(i)] = i;
				}
				for (x = 0; x < L; x++) {
					c = e[s.charAt(x)];
					b = (b << 6) + c;
					l += 6;
					while (l >= 8) {
						((a = (b >>> (l -= 8)) & 0xff) || (x < (L - 2))) && (r += w(a));
					}
				}
				return r;
			},
			
			base64_encode: function (input) {
				var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
				var output = "";
				var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
				var i = 0;

				while (i < input.length) {
					chr1 = input.charCodeAt(i++);
					chr2 = input.charCodeAt(i++);
					chr3 = input.charCodeAt(i++);

					enc1 = chr1 >> 2;
					enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
					enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
					enc4 = chr3 & 63;

					if (isNaN(chr2)) {
						enc3 = enc4 = 64;
					}
					else if (isNaN(chr3)) {
						enc4 = 64;
					}

					output = output + chars.charAt(enc1) + chars.charAt(enc2) + chars.charAt(enc3) + chars.charAt(enc4);
				}

				return output;
			}
		};

		window['WFAD'] = window['wordfenceAdmin'];
		setInterval(function() {
			WFAD.updateTimeAgo();
		}, 1000);
	}

	__ = window.wfi18n.__;
	sprintf = window.wfi18n.sprintf;

	jQuery(function() {
		wordfenceAdmin.init();
		jQuery(window).on('focus', function() {
			if (jQuery('body').hasClass('wordfenceLiveActivityPaused')) {
				jQuery('body').removeClass('wordfenceLiveActivityPaused');
			}
		});
	});

	$(function() {
		$('#wf-mobile-controls').on('click', function(e) {
			e.preventDefault();
			e.stopPropagation();

			$.wfMobileMenu({
				menuItems: [
					{title: __('Save Changes'), primary: true, disabled: $('#wf-save-changes').hasClass('wf-disabled'), action: function() { $('#wf-save-changes').trigger('click'); }},
					{title: __('Cancel Changes'), primary: false, disabled: $('#wf-cancel-changes').hasClass('wf-disabled'), action: function() { $('#wf-cancel-changes').trigger('click'); }},
					{title: __('Restore Defaults'), primary: false, disabled: $('#wf-restore-defaults').hasClass('wf-disabled'), action: function() { $('#wf-restore-defaults').trigger('click'); }}
				]
			});
		});
		
		$('#wf-restore-defaults').on('click', function(e) {
			e.preventDefault();
			e.stopPropagation();

			var restoreDefaultsSection = $(this).data('restoreDefaultsSection');
			var prompt = $('#wfTmpl_restoreDefaultsPrompt').tmpl();
			var promptHTML = $("<div />").append(prompt).html();
			WFAD.colorboxHTML((WFAD.isSmallScreen ? '300px' : '400px'), promptHTML, {overlayClose: false, closeButton: false, className: 'wf-modal', onComplete: function() {
				$('#wf-restore-defaults-prompt-cancel').on('click', function(e) {
					e.preventDefault();
					e.stopPropagation();

					WFAD.colorboxClose();
				});

				$('#wf-restore-defaults-prompt-confirm').on('click', function(e) {
					e.preventDefault();
					e.stopPropagation();

					WFAD.ajax('wordfence_restoreDefaults', {section: restoreDefaultsSection}, function(res) {
						if (res.success) {
							window.location.reload(true);
						}
						else {
							WFAD.colorboxClose();
							WFAD.colorboxModal((WFAD.isSmallScreen ? '300px' : '400px'), __('Error Restoring Defaults'), res.error);
						}
					});
				});
			}});
		});
		
		$('#wf-save-changes').on('click', function(e) {
			e.preventDefault();
			e.stopPropagation();

			WFAD.saveOptions(function(res) {
				WFAD.pendingChanges = {}; 
				WFAD.updatePendingChanges();

				if (res.redirect) {
					window.location.href = res.redirect;
				}
				else {
					window.location.reload(true);
				}
			});
		});

		$('#wf-cancel-changes').on('click', function(e) {
			e.preventDefault();
			e.stopPropagation();

			WFAD.pendingChanges = {};

			WFAD.updatePendingChanges();

			//On/Off options
			$('.wf-option.wf-option-toggled').each(function() {
				var enabledValue = $(this).data('enabledValue');
				var disabledValue = $(this).data('disabledValue');
				var originalValue = $(this).data('originalValue');
				if (enabledValue == originalValue) {
					$(this).find('.wf-option-checkbox').addClass('wf-checked').attr('aria-checked', 'true');
				}
				else {
					$(this).find('.wf-option-checkbox').removeClass('wf-checked').attr('aria-checked', 'false');
				}
				$(this).trigger('change', [true]);
			});
			
			$('.wf-option-toggled-boolean-switch').each(function() {
				var enabledValue = $(this).data('enabledValue');
				var disabledValue = $(this).data('disabledValue');
				var originalValue = $(this).data('originalValue');
				if (enabledValue == originalValue) {
					$(this).find('.wf-boolean-switch').addClass('wf-active').attr('aria-checked', 'true');
				}
				else {
					$(this).find('.wf-boolean-switch').removeClass('wf-active').attr('aria-checked', 'false');
				}
				$(this).trigger('change', [true]);
			});

			$('.wf-option.wf-option-toggled-segmented').each(function() {
				var originalValue = $(this).data('originalValue');
				$(this).find('[type=radio]').each(function() {
					if (this.value == originalValue) {
						this.checked = true;
						return false;
					}
				});
				$(this).trigger('change', [true]);
			});

			//On/Off multiple options
			$('.wf-option.wf-option-toggled-multiple').each(function() {
				$(this).find('.wf-option-checkboxes > ul').each(function() {
					var enabledValue = $(this).data('enabledValue');
					var disabledValue = $(this).data('disabledValue');
					var originalValue = $(this).data('originalValue');
					if (enabledValue == originalValue) {
						$(this).find('.wf-option-checkbox').addClass('wf-checked').attr('aria-checked', 'true');
					}
					else {
						$(this).find('.wf-option-checkbox').removeClass('wf-checked').attr('aria-checked', 'false');
					}
				});
				$(this).trigger('change', [true]);
			});

			//On/Off options with menu
			$('.wf-option.wf-option-toggled-select').each(function() {
				var selectElement = $(this).find('.wf-option-select select');
				var enabledToggleValue = $(this).data('enabledToggleValue');
				var disabledToggleValue = $(this).data('disabledToggleValue');
				var originalToggleValue = $(this).data('originalToggleValue');
				if (enabledToggleValue == originalToggleValue) {
					$(this).find('.wf-option-checkbox').addClass('wf-checked').attr('aria-checked', 'true');
					selectElement.attr('disabled', false);
				}
				else {
					$(this).find('.wf-option-checkbox').removeClass('wf-checked').attr('aria-checked', 'false');
					selectElement.attr('disabled', true);
				}

				var originalSelectValue = $(this).data('originalSelectValue');
				$(this).find('.wf-option-select select').val(originalSelectValue).trigger('change');
				$(this).trigger('change', [true]);
			});

			//Menu options
			$('.wf-option.wf-option-select').each(function() {
				var originalSelectValue = $(this).data('originalSelectValue');
				$(this).find('.wf-option-select select').val(originalSelectValue).trigger('change');
				$(this).trigger('change', [true]);
			});

			//Text options
			$('.wf-option.wf-option-text').each(function() {
				var originalTextValue = $(this).data('originalTextValue');
				if (typeof originalTextValue !== 'undefined') {
					$(this).find('.wf-option-text input').val(originalTextValue);
				}
				$(this).trigger('change', [true]);
			});

			//Text area options
			$('.wf-option.wf-option-textarea').each(function() {
				var originalTextValue = $(this).data('originalTextValue');
				$(this).find('.wf-option-textarea textarea').val(originalTextValue);
				$(this).trigger('change', [true]);
			});

			//Token options
			$('.wf-option.wf-option-token').each(function() {
				var originalTokenValue = $(this).data('originalTokenValue');
				$(this).find('select').val(originalTokenValue).trigger('change');
				$(this).trigger('change', [true]);
			});
			
			//Switch options
			$('.wf-option.wf-option-switch').each(function() {
				var originalValue = $(this).data('originalValue');
				$(this).find('.wf-switch > li').each(function() {
					$(this).toggleClass('wf-active', originalValue == $(this).data('optionValue')).attr('aria-checked', originalValue == $(this).data('optionValue') ? 'true' : 'false');
				});
				$(this).trigger('change', [true]);
			});

			//Other options
			$(window).trigger('wfOptionsReset');
		});

		var select2s = $('.wf-select2');
		if (select2s.length && $.fn.wfselect2) {
			select2s.wfselect2({
				minimumResultsForSearch: 5
			});
		}


		if ($.fn.tooltip) {
			$('.wf-status-circular').each(function() {
				var circle = $(this);
				var tmplID = 'tooltip-' + this.id + '-tmpl';
				var circleTmpl = $('#' + tmplID);
				if (circleTmpl.length) {
					circle.tooltip({
						tooltipClass: "wf-circle-tooltip",
						position: {
							my: "left-40 bottom",
							at: "center top",
							using: function(obj, info) {
								var el = $(this);
								el.removeClass('wf-tooltip-vertical-top wf-tooltip-vertical-bottom ' +
									'wf-tooltip-horizontal-left wf-tooltip-horizontal-right')
								.addClass('wf-tooltip-vertical-' + info.vertical)
								.addClass('wf-tooltip-horizontal-' + info.horizontal);

								$(this).css({
									left: obj.left + 'px',
									top: obj.top + 'px'
								});
							}
						},
						items: this,
						close: function (event, ui) {
							ui.tooltip.hover(
								function () {
									$(this).stop(true).fadeTo(400, 1);
								},
								function () {
									$(this).fadeOut("400", function () {
										$(this).remove();
									})
								});
						},
						content: function() {
							var circleClone = $(this).clone();
							circleClone.find('svg, .wf-status-circular-text').css('opacity', 1.0);
							var circleHTML = $(circleClone).html();
							return circleTmpl.tmpl({
								statusCircle: circleHTML
							});
						}
					})
					// .tooltip('open');
				}
			});
		}
	});
})(jQuery);

//wfCircularProgress
jQuery.fn.wfCircularProgress = function(options) {
	var __ = window.wfi18n.__;
	var sprintf = window.wfi18n.sprintf;

	jQuery(this).each(function() {
		var creationOptions;
		try {
			creationOptions = JSON.parse(jQuery(this).data('wfCircularProgressOptions'));
		}
		catch (e) { /* Ignore */ }
		if (typeof creationOptions !== 'object') {
			creationOptions = {};
		}
		var opts = jQuery.extend({}, jQuery.fn.wfCircularProgress.defaults, creationOptions, options);

		var center = Math.floor(opts.diameter / 2);
		var insetRadius = center - opts.strokeWidth * 2;

		var circumference = 2 * insetRadius * Math.PI;
		var finalOffset = -(circumference * (1 - opts.endPercent));
		var initialOffset = -(circumference);

		var terminatorRadius = Math.floor(opts.strokeWidth * 1.5);
		var terminatorDiameter = 2 * terminatorRadius;
		var finalTerminatorX = center - insetRadius * Math.cos(Math.PI * 2 * (opts.endPercent - 0.25));
		var finalTerminatorY = center + insetRadius * Math.sin(Math.PI * 2 * (opts.endPercent - 0.25));
		var initialTerminatorX = center - insetRadius * Math.cos(Math.PI * 2 * (opts.startPercent - 0.25));
		var initialTerminatorY = center + insetRadius * Math.sin(Math.PI * 2 * (opts.startPercent - 0.25));

		var terminatorSVG = "m 0,-" + terminatorRadius + " a " + terminatorRadius + "," + terminatorRadius + " 0 1 1 0," + terminatorDiameter + " a " + terminatorRadius + "," + terminatorRadius + " 0 1 1 0,-" + terminatorDiameter;
		
		jQuery(this).data('wfCircularProgressOptions', JSON.stringify(opts));
		
		jQuery(this).css('width', opts.diameter + 'px');
		jQuery(this).css('height', opts.diameter + 'px');

		var svg = jQuery(this).find('svg');
		if (svg.length == 0) { svg = document.createElementNS("http://www.w3.org/2000/svg", "svg"); jQuery(this).append(svg); }
		var inactivePath = jQuery(this).find('.wf-status-circular-inactive-path');
		if (inactivePath.length == 0) { inactivePath = document.createElementNS("http://www.w3.org/2000/svg", "path"); jQuery(inactivePath).addClass('wf-status-circular-inactive-path'); jQuery(svg).append(inactivePath); }
		var activePath = jQuery(this).find('.wf-status-circular-active-path');
		if (activePath.length == 0) { activePath = document.createElementNS("http://www.w3.org/2000/svg", "path"); jQuery(activePath).addClass('wf-status-circular-active-path'); jQuery(svg).append(activePath); }
		var terminator = jQuery(this).find('.wf-status-circular-terminator');
		if (terminator.length == 0) { terminator = document.createElementNS("http://www.w3.org/2000/svg", "path"); jQuery(terminator).addClass('wf-status-circular-terminator'); jQuery(svg).append(terminator); }
		var text = jQuery(this).find('.wf-status-circular-text');
		if (text.length == 0) { text = jQuery('<div class="wf-status-circular-text"></div>'); jQuery(this).append(text); }
		var pendingOverlay = jQuery(this).find('.wf-status-overlay-text');
		if (pendingOverlay.length == 0) { pendingOverlay = jQuery('<div class="wf-status-overlay-text"></div>'); jQuery(this).append(pendingOverlay); }

		jQuery(svg).attr('viewBox', '0 0 ' + opts.diameter + ' ' + opts.diameter);
		jQuery(svg).css('display', 'block');
		jQuery(svg).css('width', opts.diameter + 'px');
		jQuery(svg).css('height', opts.diameter + 'px');
		jQuery(inactivePath).attr('d', 'M ' + center + ',' + center + ' m 0,-' + insetRadius + ' a ' + insetRadius + ',' +insetRadius + ' 0 1 1 0,' + (2 * insetRadius) + ' a ' + insetRadius + ',' + insetRadius + ' 0 1 1 0,-' + (2 * insetRadius));
		jQuery(inactivePath).attr('stroke', opts.inactiveColor);
		jQuery(inactivePath).attr('stroke-width', opts.strokeWidth);
		jQuery(inactivePath).attr('fill-opacity', 0);
		jQuery(activePath).attr('d', 'M ' + center + ',' + center + ' m 0,-' + insetRadius + ' a ' + insetRadius + ',' + insetRadius + ' 0 1 1 0,' + (2 * insetRadius) + ' a ' + insetRadius + ',' + insetRadius + ' 0 1 1 0,-' + (2 * insetRadius));
		jQuery(activePath).attr('stroke', opts.color);
		jQuery(activePath).attr('stroke-width', opts.strokeWidth);
		jQuery(activePath).attr('stroke-dasharray', circumference + ',' + circumference);
		jQuery(activePath).attr('stroke-dashoffset', initialOffset);
		jQuery(activePath).attr('fill-opacity', 0);
		jQuery(terminator).attr('d', 'M ' + initialTerminatorX + ',' + initialTerminatorY + ' ' + terminatorSVG);
		jQuery(terminator).attr('stroke', opts.color);
		jQuery(terminator).attr('stroke-width', opts.strokeWidth);
		jQuery(terminator).attr('fill', '#ffffff');
		jQuery(pendingOverlay).html(opts.pendingMessage);

		jQuery(pendingOverlay).animate({
			opacity: opts.pendingOverlay ? 1.0 : 0.0,
		}, {
			duration: 500,
			step: function(value) {
				var opacity = 1.0 - (value * 0.8);
				jQuery(svg).css('opacity', opacity);
				jQuery(text).css('opacity', opacity);
			},
			complete: function() {
				jQuery(svg).css('opacity', opts.pendingOverlay ? 0.2 : 1.0);
				jQuery(text).css('opacity', opts.pendingOverlay ? 0.2 : 1.0);
			}
		});
		
		jQuery(activePath).animate({
			"stroke-dashoffset": finalOffset + 'px'
		}, {
			duration: 500,
			step: function(value) {
				var percentage = 1 + value / circumference;
				var x = center - insetRadius * Math.cos(Math.PI * 2 * (percentage - 0.25));
				var y = center + insetRadius * Math.sin(Math.PI * 2 * (percentage - 0.25));
				jQuery(terminator).attr('d', 'M ' + x + ',' + y + ' ' + terminatorSVG);
				text.html(Math.round(percentage * 100) + '%');
			},
			complete: function() {
				text.html(Math.round(opts.endPercent * 100) + '%');
			}
		});
	});
};

(function() {
	var __ = window.wfi18n.__;
	var sprintf = window.wfi18n.sprintf;

	jQuery.fn.wfCircularProgress.defaults = {
		startPercent: 0,
		endPercent: 1,
		color: '#16bc9b',
		inactiveColor: '#ececec',
		strokeWidth: 3,
		diameter: 100,
		pendingOverlay: false,
		pendingMessage: __('Note: Status will update when changes are saved'),
	};
})();

//wfDrawer
(function ($, document, window) {
	var __ = window.wfi18n.__;
	var sprintf = window.wfi18n.sprintf;

	var defaults = {
		width: '600px',
		clickOverlayDismiss: false,
		content: false,
		onComplete: false,
	};
	
	var publicMethod = $.fn['wfDrawer'] = $['wfDrawer'] = function (options) {
		var opts = $.extend({}, defaults, options);

		var overlay = $('<div class="wf-drawer-overlay"></div>').css('opacity', 0);
		if (opts.clickOverlayDismiss) {
			overlay.on('click', function(e) {
				e.preventDefault();
				e.stopPropagation();

				$.wfDrawer.close();
			});
		}
		$('body').append(overlay);

		var drawer = $('<div class="wf-drawer"></div>').css('width', opts.width).css('right', '-' + opts.width);
		if (opts.content) {
			drawer.append(opts.content);
		}
		$('body').append(drawer);

		overlay.animate({
			"opacity": 1
		});
		drawer.animate({
				"right": '0px'
			},
			{
				complete: function() {
					typeof opts.onComplete === 'function' && opts.onComplete();
				}
			});
	};

	publicMethod.close = function() {
		var overlay = $('.wf-drawer-overlay');
		overlay.animate({
				"opacity": 0
			},
			{
				complete: function() {
					overlay.remove();
				}
			});
		
		var drawer = $('.wf-drawer');
		drawer.animate({
				"right": '-' + drawer.css('width')
			},
			{
				complete: function() {
					drawer.remove();
				}
			});
	};
}(jQuery, document, window));

//wfMobileMenu
(function ($, document, window) {
	var __ = window.wfi18n.__;
	var sprintf = window.wfi18n.sprintf;

	var defaults = {
		width: '280px',
		clickOverlayDismiss: true,
		menuItems: [],
		onDismiss: false,
	};

	var publicMethod = $.fn['wfMobileMenu'] = $['wfMobileMenu'] = function (options) {
		var opts = $.extend({}, defaults, options);

		var overlay = $('<div class="wf-mobile-menu-overlay"></div>').css('opacity', 0);
		if (opts.clickOverlayDismiss) {
			overlay.on('click', function(e) {
				e.preventDefault();
				e.stopPropagation();

				typeof opts.onDismiss === 'function' && opts.onDismiss(false);
				$.wfMobileMenu.close();
			});
		}
		$('body').append(overlay);

		var menu = $('<div class="wf-mobile-menu"><ul class="wf-mobile-menu-items"></ul></div>').css('width', opts.width).css('bottom', '-9999px');
		var itemsWrapper = menu.find('.wf-mobile-menu-items');
		for (var i = 0; i < opts.menuItems.length; i++) {
			var button = $('<li><a href="#" class="wf-btn wf-btn-callout-subtle" role="button"></a></li>');
			button.find('a').text(opts.menuItems[i].title).css('width', opts.width).on('click', null, {action: opts.menuItems[i].action}, function(e) {
				e.preventDefault();
				e.stopPropagation();
				
				typeof opts.onDismiss === 'function' && opts.onDismiss(true);
				$.wfMobileMenu.close();
				e.data.action();
			});
			
			if (opts.menuItems[i].primary) {
				button.find('a').addClass('wf-btn-primary');
			}
			else {
				button.find('a').addClass('wf-btn-default');
			}
			
			if (opts.menuItems[i].disabled) {
				button.find('a').addClass('wf-disabled');
			}
			
			itemsWrapper.append(button);
		}

		var button = $('<li class="wf-padding-add-top-small"><a href="#" class="wf-btn wf-btn-callout-subtle wf-btn-default" role="button">' + __('Close') + '</a></li>');
		button.find('a').css('width', opts.width).on('click', function(e) {
			e.preventDefault();
			e.stopPropagation();

			typeof opts.onDismiss === 'function' && opts.onDismiss(false);
			$.wfMobileMenu.close();
		});
		itemsWrapper.append(button);
		
		$('body').append(menu);
		menu.css('bottom', '-' + menu.height() + 'px');

		overlay.animate({
			"opacity": 1
		});
		menu.animate({
				bottom: '0px'
			},
			{
				complete: function() {
					typeof opts.onComplete === 'function' && opts.onComplete();
				}
			});
	};

	publicMethod.close = function() {
		var overlay = $('.wf-mobile-menu-overlay');
		overlay.animate({
				"opacity": 0
			},
			{
				complete: function() {
					overlay.remove();
				}
			});

		var menu = $('.wf-mobile-menu');
		menu.animate({
			bottom: '-' + menu.height() + 'px'
			},
			{
				complete: function() {
					menu.remove();
				}
			});
	};
}(jQuery, document, window));

/*! @source https://github.com/eligrey/FileSaver.js/blob/master/dist/FileSaver.min.js */

(function(a,b){if("function"==typeof define&&define.amd)define([],b);else if("undefined"!=typeof exports)b();else{b(),a.FileSaver={exports:{}}.exports}})(this,function(){"use strict";function b(a,b){return"undefined"==typeof b?b={autoBom:!1}:"object"!=typeof b&&(console.warn("Deprecated: Expected third argument to be a object"),b={autoBom:!b}),b.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(a.type)?new Blob(["\uFEFF",a],{type:a.type}):a}function c(a,b,c){var d=new XMLHttpRequest;d.open("GET",a),d.responseType="blob",d.onload=function(){g(d.response,b,c)},d.onerror=function(){console.error("could not download file")},d.send()}function d(a){var b=new XMLHttpRequest;b.open("HEAD",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent("click"))}catch(c){var b=document.createEvent("MouseEvents");b.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof global&&global.global===global?global:void 0,a=/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),g=f.saveAs||("object"!=typeof window||window!==f?function(){}:"download"in HTMLAnchorElement.prototype&&!a?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement("a");g=g||b.name||"download",j.download=g,j.rel="noopener","string"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target="_blank")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:"msSaveOrOpenBlob"in navigator?function(f,g,h){if(g=g||f.name||"download","string"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement("a");i.href=f,i.target="_blank",setTimeout(function(){e(i)})}}:function(b,d,e,g){if(g=g||open("","_blank"),g&&(g.document.title=g.document.body.innerText="downloading..."),"string"==typeof b)return c(b,d,e);var h="application/octet-stream"===b.type,i=/constructor/i.test(f.HTMLElement)||f.safari,j=/CriOS\/[\d]+/.test(navigator.userAgent);if((j||h&&i||a)&&"undefined"!=typeof FileReader){var k=new FileReader;k.onloadend=function(){var a=k.result;a=j?a:a.replace(/^data:[^;]*;/,"data:attachment/file;"),g?g.location.href=a:location=a,g=null},k.readAsDataURL(b)}else{var l=f.URL||f.webkitURL,m=l.createObjectURL(b);g?g.location=m:location.href=m,g=null,setTimeout(function(){l.revokeObjectURL(m)},4E4)}});f.saveAs=g.saveAs=g,"undefined"!=typeof module&&(module.exports=g)});
js/jquery-ui-timepicker-addon.1722265817.js000064400000235503150755146450014000 0ustar00/*! jQuery Timepicker Addon - v1.6.3 - 2016-04-20
 * http://trentrichardson.com/examples/timepicker
 * Copyright (c) 2016 Trent Richardson; Licensed MIT */
(function (factory) {
	if (typeof define === 'function' && define.amd) {
		define(['jquery', 'jquery-ui'], factory);
	} else {
		factory(jQuery);
	}
}(function ($) {

	/*
	 * Lets not redefine timepicker, Prevent "Uncaught RangeError: Maximum call stack size exceeded"
	 */
	$.ui.timepicker = $.ui.timepicker || {};
	if ($.ui.timepicker.version) {
		return;
	}

	/*
	 * Extend jQueryUI, get it started with our version number
	 */
	$.extend($.ui, {
		timepicker: {
			version: "1.6.3"
		}
	});

	/*
	 * Timepicker manager.
	 * Use the singleton instance of this class, $.timepicker, to interact with the time picker.
	 * Settings for (groups of) time pickers are maintained in an instance object,
	 * allowing multiple different settings on the same page.
	 */
	var Timepicker = function () {
		this.regional = []; // Available regional settings, indexed by language code
		this.regional[''] = { // Default regional settings
			currentText: 'Now',
			closeText: 'Done',
			amNames: ['AM', 'A'],
			pmNames: ['PM', 'P'],
			timeFormat: 'HH:mm',
			timeSuffix: '',
			timeOnlyTitle: 'Choose Time',
			timeText: 'Time',
			hourText: 'Hour',
			minuteText: 'Minute',
			secondText: 'Second',
			millisecText: 'Millisecond',
			microsecText: 'Microsecond',
			timezoneText: 'Time Zone',
			isRTL: false
		};
		this._defaults = { // Global defaults for all the datetime picker instances
			showButtonPanel: true,
			timeOnly: false,
			timeOnlyShowDate: false,
			showHour: null,
			showMinute: null,
			showSecond: null,
			showMillisec: null,
			showMicrosec: null,
			showTimezone: null,
			showTime: true,
			stepHour: 1,
			stepMinute: 1,
			stepSecond: 1,
			stepMillisec: 1,
			stepMicrosec: 1,
			hour: 0,
			minute: 0,
			second: 0,
			millisec: 0,
			microsec: 0,
			timezone: null,
			hourMin: 0,
			minuteMin: 0,
			secondMin: 0,
			millisecMin: 0,
			microsecMin: 0,
			hourMax: 23,
			minuteMax: 59,
			secondMax: 59,
			millisecMax: 999,
			microsecMax: 999,
			minDateTime: null,
			maxDateTime: null,
			maxTime: null,
			minTime: null,
			onSelect: null,
			hourGrid: 0,
			minuteGrid: 0,
			secondGrid: 0,
			millisecGrid: 0,
			microsecGrid: 0,
			alwaysSetTime: true,
			separator: ' ',
			altFieldTimeOnly: true,
			altTimeFormat: null,
			altSeparator: null,
			altTimeSuffix: null,
			altRedirectFocus: true,
			pickerTimeFormat: null,
			pickerTimeSuffix: null,
			showTimepicker: true,
			timezoneList: null,
			addSliderAccess: false,
			sliderAccessArgs: null,
			controlType: 'slider',
			oneLine: false,
			defaultValue: null,
			parse: 'strict',
			afterInject: null
		};
		$.extend(this._defaults, this.regional['']);
	};

	$.extend(Timepicker.prototype, {
		$input: null,
		$altInput: null,
		$timeObj: null,
		inst: null,
		hour_slider: null,
		minute_slider: null,
		second_slider: null,
		millisec_slider: null,
		microsec_slider: null,
		timezone_select: null,
		maxTime: null,
		minTime: null,
		hour: 0,
		minute: 0,
		second: 0,
		millisec: 0,
		microsec: 0,
		timezone: null,
		hourMinOriginal: null,
		minuteMinOriginal: null,
		secondMinOriginal: null,
		millisecMinOriginal: null,
		microsecMinOriginal: null,
		hourMaxOriginal: null,
		minuteMaxOriginal: null,
		secondMaxOriginal: null,
		millisecMaxOriginal: null,
		microsecMaxOriginal: null,
		ampm: '',
		formattedDate: '',
		formattedTime: '',
		formattedDateTime: '',
		timezoneList: null,
		units: ['hour', 'minute', 'second', 'millisec', 'microsec'],
		support: {},
		control: null,

		/*
		 * Override the default settings for all instances of the time picker.
		 * @param  {Object} settings  object - the new settings to use as defaults (anonymous object)
		 * @return {Object} the manager object
		 */
		setDefaults: function (settings) {
			extendRemove(this._defaults, settings || {});
			return this;
		},

		/*
		 * Create a new Timepicker instance
		 */
		_newInst: function ($input, opts) {
			var tp_inst = new Timepicker(),
				inlineSettings = {},
				fns = {},
				overrides, i;

			for (var attrName in this._defaults) {
				if (this._defaults.hasOwnProperty(attrName)) {
					var attrValue = $input.attr('time:' + attrName);
					if (attrValue) {
						try {
							inlineSettings[attrName] = eval(attrValue);
						} catch (err) {
							inlineSettings[attrName] = attrValue;
						}
					}
				}
			}

			overrides = {
				beforeShow: function (input, dp_inst) {
					if ($.isFunction(tp_inst._defaults.evnts.beforeShow)) {
						return tp_inst._defaults.evnts.beforeShow.call($input[0], input, dp_inst, tp_inst);
					}
				},
				onChangeMonthYear: function (year, month, dp_inst) {
					// Update the time as well : this prevents the time from disappearing from the $input field.
					// tp_inst._updateDateTime(dp_inst);
					if ($.isFunction(tp_inst._defaults.evnts.onChangeMonthYear)) {
						tp_inst._defaults.evnts.onChangeMonthYear.call($input[0], year, month, dp_inst, tp_inst);
					}
				},
				onClose: function (dateText, dp_inst) {
					if (tp_inst.timeDefined === true && $input.val() !== '') {
						tp_inst._updateDateTime(dp_inst);
					}
					if ($.isFunction(tp_inst._defaults.evnts.onClose)) {
						tp_inst._defaults.evnts.onClose.call($input[0], dateText, dp_inst, tp_inst);
					}
				}
			};
			for (i in overrides) {
				if (overrides.hasOwnProperty(i)) {
					fns[i] = opts[i] || this._defaults[i] || null;
				}
			}

			tp_inst._defaults = $.extend({}, this._defaults, inlineSettings, opts, overrides, {
				evnts: fns,
				timepicker: tp_inst // add timepicker as a property of datepicker: $.datepicker._get(dp_inst, 'timepicker');
			});
			tp_inst.amNames = $.map(tp_inst._defaults.amNames, function (val) {
				return val.toUpperCase();
			});
			tp_inst.pmNames = $.map(tp_inst._defaults.pmNames, function (val) {
				return val.toUpperCase();
			});

			// detect which units are supported
			tp_inst.support = detectSupport(
				tp_inst._defaults.timeFormat +
				(tp_inst._defaults.pickerTimeFormat ? tp_inst._defaults.pickerTimeFormat : '') +
				(tp_inst._defaults.altTimeFormat ? tp_inst._defaults.altTimeFormat : ''));

			// controlType is string - key to our this._controls
			if (typeof(tp_inst._defaults.controlType) === 'string') {
				if (tp_inst._defaults.controlType === 'slider' && typeof($.ui.slider) === 'undefined') {
					tp_inst._defaults.controlType = 'select';
				}
				tp_inst.control = tp_inst._controls[tp_inst._defaults.controlType];
			}
			// controlType is an object and must implement create, options, value methods
			else {
				tp_inst.control = tp_inst._defaults.controlType;
			}

			// prep the timezone options
			var timezoneList = [-720, -660, -600, -570, -540, -480, -420, -360, -300, -270, -240, -210, -180, -120, -60,
				0, 60, 120, 180, 210, 240, 270, 300, 330, 345, 360, 390, 420, 480, 525, 540, 570, 600, 630, 660, 690, 720, 765, 780, 840];
			if (tp_inst._defaults.timezoneList !== null) {
				timezoneList = tp_inst._defaults.timezoneList;
			}
			var tzl = timezoneList.length, tzi = 0, tzv = null;
			if (tzl > 0 && typeof timezoneList[0] !== 'object') {
				for (; tzi < tzl; tzi++) {
					tzv = timezoneList[tzi];
					timezoneList[tzi] = { value: tzv, label: $.timepicker.timezoneOffsetString(tzv, tp_inst.support.iso8601) };
				}
			}
			tp_inst._defaults.timezoneList = timezoneList;

			// set the default units
			tp_inst.timezone = tp_inst._defaults.timezone !== null ? $.timepicker.timezoneOffsetNumber(tp_inst._defaults.timezone) :
				((new Date()).getTimezoneOffset() * -1);
			tp_inst.hour = tp_inst._defaults.hour < tp_inst._defaults.hourMin ? tp_inst._defaults.hourMin :
				tp_inst._defaults.hour > tp_inst._defaults.hourMax ? tp_inst._defaults.hourMax : tp_inst._defaults.hour;
			tp_inst.minute = tp_inst._defaults.minute < tp_inst._defaults.minuteMin ? tp_inst._defaults.minuteMin :
				tp_inst._defaults.minute > tp_inst._defaults.minuteMax ? tp_inst._defaults.minuteMax : tp_inst._defaults.minute;
			tp_inst.second = tp_inst._defaults.second < tp_inst._defaults.secondMin ? tp_inst._defaults.secondMin :
				tp_inst._defaults.second > tp_inst._defaults.secondMax ? tp_inst._defaults.secondMax : tp_inst._defaults.second;
			tp_inst.millisec = tp_inst._defaults.millisec < tp_inst._defaults.millisecMin ? tp_inst._defaults.millisecMin :
				tp_inst._defaults.millisec > tp_inst._defaults.millisecMax ? tp_inst._defaults.millisecMax : tp_inst._defaults.millisec;
			tp_inst.microsec = tp_inst._defaults.microsec < tp_inst._defaults.microsecMin ? tp_inst._defaults.microsecMin :
				tp_inst._defaults.microsec > tp_inst._defaults.microsecMax ? tp_inst._defaults.microsecMax : tp_inst._defaults.microsec;
			tp_inst.ampm = '';
			tp_inst.$input = $input;

			if (tp_inst._defaults.altField) {
				tp_inst.$altInput = $(tp_inst._defaults.altField);
				if (tp_inst._defaults.altRedirectFocus === true) {
					tp_inst.$altInput.css({
						cursor: 'pointer'
					}).focus(function () {
						$input.trigger("focus");
					});
				}
			}

			if (tp_inst._defaults.minDate === 0 || tp_inst._defaults.minDateTime === 0) {
				tp_inst._defaults.minDate = new Date();
			}
			if (tp_inst._defaults.maxDate === 0 || tp_inst._defaults.maxDateTime === 0) {
				tp_inst._defaults.maxDate = new Date();
			}

			// datepicker needs minDate/maxDate, timepicker needs minDateTime/maxDateTime..
			if (tp_inst._defaults.minDate !== undefined && tp_inst._defaults.minDate instanceof Date) {
				tp_inst._defaults.minDateTime = new Date(tp_inst._defaults.minDate.getTime());
			}
			if (tp_inst._defaults.minDateTime !== undefined && tp_inst._defaults.minDateTime instanceof Date) {
				tp_inst._defaults.minDate = new Date(tp_inst._defaults.minDateTime.getTime());
			}
			if (tp_inst._defaults.maxDate !== undefined && tp_inst._defaults.maxDate instanceof Date) {
				tp_inst._defaults.maxDateTime = new Date(tp_inst._defaults.maxDate.getTime());
			}
			if (tp_inst._defaults.maxDateTime !== undefined && tp_inst._defaults.maxDateTime instanceof Date) {
				tp_inst._defaults.maxDate = new Date(tp_inst._defaults.maxDateTime.getTime());
			}
			tp_inst.$input.bind('focus', function () {
				tp_inst._onFocus();
			});

			return tp_inst;
		},

		/*
		 * add our sliders to the calendar
		 */
		_addTimePicker: function (dp_inst) {
			var currDT = $.trim((this.$altInput && this._defaults.altFieldTimeOnly) ? this.$input.val() + ' ' + this.$altInput.val() : this.$input.val());

			this.timeDefined = this._parseTime(currDT);
			this._limitMinMaxDateTime(dp_inst, false);
			this._injectTimePicker();
			this._afterInject();
		},

		/*
		 * parse the time string from input value or _setTime
		 */
		_parseTime: function (timeString, withDate) {
			if (!this.inst) {
				this.inst = $.datepicker._getInst(this.$input[0]);
			}

			if (withDate || !this._defaults.timeOnly) {
				var dp_dateFormat = $.datepicker._get(this.inst, 'dateFormat');
				try {
					var parseRes = parseDateTimeInternal(dp_dateFormat, this._defaults.timeFormat, timeString, $.datepicker._getFormatConfig(this.inst), this._defaults);
					if (!parseRes.timeObj) {
						return false;
					}
					$.extend(this, parseRes.timeObj);
				} catch (err) {
					$.timepicker.log("Error parsing the date/time string: " + err +
						"\ndate/time string = " + timeString +
						"\ntimeFormat = " + this._defaults.timeFormat +
						"\ndateFormat = " + dp_dateFormat);
					return false;
				}
				return true;
			} else {
				var timeObj = $.datepicker.parseTime(this._defaults.timeFormat, timeString, this._defaults);
				if (!timeObj) {
					return false;
				}
				$.extend(this, timeObj);
				return true;
			}
		},

		/*
		 * Handle callback option after injecting timepicker
		 */
		_afterInject: function() {
			var o = this.inst.settings;
			if ($.isFunction(o.afterInject)) {
				o.afterInject.call(this);
			}
		},

		/*
		 * generate and inject html for timepicker into ui datepicker
		 */
		_injectTimePicker: function () {
			var $dp = this.inst.dpDiv,
				o = this.inst.settings,
				tp_inst = this,
				litem = '',
				uitem = '',
				show = null,
				max = {},
				gridSize = {},
				size = null,
				i = 0,
				l = 0;

			// Prevent displaying twice
			if ($dp.find("div.ui-timepicker-div").length === 0 && o.showTimepicker) {
				var noDisplay = ' ui_tpicker_unit_hide',
					html = '<div class="ui-timepicker-div' + (o.isRTL ? ' ui-timepicker-rtl' : '') + (o.oneLine && o.controlType === 'select' ? ' ui-timepicker-oneLine' : '') + '"><dl>' + '<dt class="ui_tpicker_time_label' + ((o.showTime) ? '' : noDisplay) + '">' + o.timeText + '</dt>' +
						'<dd class="ui_tpicker_time '+ ((o.showTime) ? '' : noDisplay) + '"><input class="ui_tpicker_time_input" ' + (o.timeInput ? '' : 'disabled') + '/></dd>';

				// Create the markup
				for (i = 0, l = this.units.length; i < l; i++) {
					litem = this.units[i];
					uitem = litem.substr(0, 1).toUpperCase() + litem.substr(1);
					show = o['show' + uitem] !== null ? o['show' + uitem] : this.support[litem];

					// Added by Peter Medeiros:
					// - Figure out what the hour/minute/second max should be based on the step values.
					// - Example: if stepMinute is 15, then minMax is 45.
					max[litem] = parseInt((o[litem + 'Max'] - ((o[litem + 'Max'] - o[litem + 'Min']) % o['step' + uitem])), 10);
					gridSize[litem] = 0;

					html += '<dt class="ui_tpicker_' + litem + '_label' + (show ? '' : noDisplay) + '">' + o[litem + 'Text'] + '</dt>' +
						'<dd class="ui_tpicker_' + litem + (show ? '' : noDisplay) + '"><div class="ui_tpicker_' + litem + '_slider' + (show ? '' : noDisplay) + '"></div>';

					if (show && o[litem + 'Grid'] > 0) {
						html += '<div style="padding-left: 1px"><table class="ui-tpicker-grid-label"><tr>';

						if (litem === 'hour') {
							for (var h = o[litem + 'Min']; h <= max[litem]; h += parseInt(o[litem + 'Grid'], 10)) {
								gridSize[litem]++;
								var tmph = $.datepicker.formatTime(this.support.ampm ? 'hht' : 'HH', {hour: h}, o);
								html += '<td data-for="' + litem + '">' + tmph + '</td>';
							}
						}
						else {
							for (var m = o[litem + 'Min']; m <= max[litem]; m += parseInt(o[litem + 'Grid'], 10)) {
								gridSize[litem]++;
								html += '<td data-for="' + litem + '">' + ((m < 10) ? '0' : '') + m + '</td>';
							}
						}

						html += '</tr></table></div>';
					}
					html += '</dd>';
				}

				// Timezone
				var showTz = o.showTimezone !== null ? o.showTimezone : this.support.timezone;
				html += '<dt class="ui_tpicker_timezone_label' + (showTz ? '' : noDisplay) + '">' + o.timezoneText + '</dt>';
				html += '<dd class="ui_tpicker_timezone' + (showTz ? '' : noDisplay) + '"></dd>';

				// Create the elements from string
				html += '</dl></div>';
				var $tp = $(html);

				// if we only want time picker...
				if (o.timeOnly === true) {
					$tp.prepend('<div class="ui-widget-header ui-helper-clearfix ui-corner-all">' + '<div class="ui-datepicker-title">' + o.timeOnlyTitle + '</div>' + '</div>');
					$dp.find('.ui-datepicker-header, .ui-datepicker-calendar').hide();
				}

				// add sliders, adjust grids, add events
				for (i = 0, l = tp_inst.units.length; i < l; i++) {
					litem = tp_inst.units[i];
					uitem = litem.substr(0, 1).toUpperCase() + litem.substr(1);
					show = o['show' + uitem] !== null ? o['show' + uitem] : this.support[litem];

					// add the slider
					tp_inst[litem + '_slider'] = tp_inst.control.create(tp_inst, $tp.find('.ui_tpicker_' + litem + '_slider'), litem, tp_inst[litem], o[litem + 'Min'], max[litem], o['step' + uitem]);

					// adjust the grid and add click event
					if (show && o[litem + 'Grid'] > 0) {
						size = 100 * gridSize[litem] * o[litem + 'Grid'] / (max[litem] - o[litem + 'Min']);
						$tp.find('.ui_tpicker_' + litem + ' table').css({
							width: size + "%",
							marginLeft: o.isRTL ? '0' : ((size / (-2 * gridSize[litem])) + "%"),
							marginRight: o.isRTL ? ((size / (-2 * gridSize[litem])) + "%") : '0',
							borderCollapse: 'collapse'
						}).find("td").click(function (e) {
							var $t = $(this),
								h = $t.html(),
								n = parseInt(h.replace(/[^0-9]/g), 10),
								ap = h.replace(/[^apm]/ig),
								f = $t.data('for'); // loses scope, so we use data-for

							if (f === 'hour') {
								if (ap.indexOf('p') !== -1 && n < 12) {
									n += 12;
								}
								else {
									if (ap.indexOf('a') !== -1 && n === 12) {
										n = 0;
									}
								}
							}

							tp_inst.control.value(tp_inst, tp_inst[f + '_slider'], litem, n);

							tp_inst._onTimeChange();
							tp_inst._onSelectHandler();
						}).css({
							cursor: 'pointer',
							width: (100 / gridSize[litem]) + '%',
							textAlign: 'center',
							overflow: 'hidden'
						});
					} // end if grid > 0
				} // end for loop

				// Add timezone options
				this.timezone_select = $tp.find('.ui_tpicker_timezone').append('<select></select>').find("select");
				$.fn.append.apply(this.timezone_select,
					$.map(o.timezoneList, function (val, idx) {
						return $("<option />").val(typeof val === "object" ? val.value : val).text(typeof val === "object" ? val.label : val);
					}));
				if (typeof(this.timezone) !== "undefined" && this.timezone !== null && this.timezone !== "") {
					var local_timezone = (new Date(this.inst.selectedYear, this.inst.selectedMonth, this.inst.selectedDay, 12)).getTimezoneOffset() * -1;
					if (local_timezone === this.timezone) {
						selectLocalTimezone(tp_inst);
					} else {
						this.timezone_select.val(this.timezone);
					}
				} else {
					if (typeof(this.hour) !== "undefined" && this.hour !== null && this.hour !== "") {
						this.timezone_select.val(o.timezone);
					} else {
						selectLocalTimezone(tp_inst);
					}
				}
				this.timezone_select.change(function () {
					tp_inst._onTimeChange();
					tp_inst._onSelectHandler();
					tp_inst._afterInject();
				});
				// End timezone options

				// inject timepicker into datepicker
				var $buttonPanel = $dp.find('.ui-datepicker-buttonpane');
				if ($buttonPanel.length) {
					$buttonPanel.before($tp);
				} else {
					$dp.append($tp);
				}

				this.$timeObj = $tp.find('.ui_tpicker_time_input');
				this.$timeObj.change(function () {
					var timeFormat = tp_inst.inst.settings.timeFormat;
					var parsedTime = $.datepicker.parseTime(timeFormat, this.value);
					var update = new Date();
					if (parsedTime) {
						update.setHours(parsedTime.hour);
						update.setMinutes(parsedTime.minute);
						update.setSeconds(parsedTime.second);
						$.datepicker._setTime(tp_inst.inst, update);
					} else {
						this.value = tp_inst.formattedTime;
						this.blur();
					}
				});

				if (this.inst !== null) {
					var timeDefined = this.timeDefined;
					this._onTimeChange();
					this.timeDefined = timeDefined;
				}

				// slideAccess integration: http://trentrichardson.com/2011/11/11/jquery-ui-sliders-and-touch-accessibility/
				if (this._defaults.addSliderAccess) {
					var sliderAccessArgs = this._defaults.sliderAccessArgs,
						rtl = this._defaults.isRTL;
					sliderAccessArgs.isRTL = rtl;

					setTimeout(function () { // fix for inline mode
						if ($tp.find('.ui-slider-access').length === 0) {
							$tp.find('.ui-slider:visible').sliderAccess(sliderAccessArgs);

							// fix any grids since sliders are shorter
							var sliderAccessWidth = $tp.find('.ui-slider-access:eq(0)').outerWidth(true);
							if (sliderAccessWidth) {
								$tp.find('table:visible').each(function () {
									var $g = $(this),
										oldWidth = $g.outerWidth(),
										oldMarginLeft = $g.css(rtl ? 'marginRight' : 'marginLeft').toString().replace('%', ''),
										newWidth = oldWidth - sliderAccessWidth,
										newMarginLeft = ((oldMarginLeft * newWidth) / oldWidth) + '%',
										css = { width: newWidth, marginRight: 0, marginLeft: 0 };
									css[rtl ? 'marginRight' : 'marginLeft'] = newMarginLeft;
									$g.css(css);
								});
							}
						}
					}, 10);
				}
				// end slideAccess integration

				tp_inst._limitMinMaxDateTime(this.inst, true);
			}
		},

		/*
		 * This function tries to limit the ability to go outside the
		 * min/max date range
		 */
		_limitMinMaxDateTime: function (dp_inst, adjustSliders) {
			var o = this._defaults,
				dp_date = new Date(dp_inst.selectedYear, dp_inst.selectedMonth, dp_inst.selectedDay);

			if (!this._defaults.showTimepicker) {
				return;
			} // No time so nothing to check here

			if ($.datepicker._get(dp_inst, 'minDateTime') !== null && $.datepicker._get(dp_inst, 'minDateTime') !== undefined && dp_date) {
				var minDateTime = $.datepicker._get(dp_inst, 'minDateTime'),
					minDateTimeDate = new Date(minDateTime.getFullYear(), minDateTime.getMonth(), minDateTime.getDate(), 0, 0, 0, 0);

				if (this.hourMinOriginal === null || this.minuteMinOriginal === null || this.secondMinOriginal === null || this.millisecMinOriginal === null || this.microsecMinOriginal === null) {
					this.hourMinOriginal = o.hourMin;
					this.minuteMinOriginal = o.minuteMin;
					this.secondMinOriginal = o.secondMin;
					this.millisecMinOriginal = o.millisecMin;
					this.microsecMinOriginal = o.microsecMin;
				}

				if (dp_inst.settings.timeOnly || minDateTimeDate.getTime() === dp_date.getTime()) {
					this._defaults.hourMin = minDateTime.getHours();
					if (this.hour <= this._defaults.hourMin) {
						this.hour = this._defaults.hourMin;
						this._defaults.minuteMin = minDateTime.getMinutes();
						if (this.minute <= this._defaults.minuteMin) {
							this.minute = this._defaults.minuteMin;
							this._defaults.secondMin = minDateTime.getSeconds();
							if (this.second <= this._defaults.secondMin) {
								this.second = this._defaults.secondMin;
								this._defaults.millisecMin = minDateTime.getMilliseconds();
								if (this.millisec <= this._defaults.millisecMin) {
									this.millisec = this._defaults.millisecMin;
									this._defaults.microsecMin = minDateTime.getMicroseconds();
								} else {
									if (this.microsec < this._defaults.microsecMin) {
										this.microsec = this._defaults.microsecMin;
									}
									this._defaults.microsecMin = this.microsecMinOriginal;
								}
							} else {
								this._defaults.millisecMin = this.millisecMinOriginal;
								this._defaults.microsecMin = this.microsecMinOriginal;
							}
						} else {
							this._defaults.secondMin = this.secondMinOriginal;
							this._defaults.millisecMin = this.millisecMinOriginal;
							this._defaults.microsecMin = this.microsecMinOriginal;
						}
					} else {
						this._defaults.minuteMin = this.minuteMinOriginal;
						this._defaults.secondMin = this.secondMinOriginal;
						this._defaults.millisecMin = this.millisecMinOriginal;
						this._defaults.microsecMin = this.microsecMinOriginal;
					}
				} else {
					this._defaults.hourMin = this.hourMinOriginal;
					this._defaults.minuteMin = this.minuteMinOriginal;
					this._defaults.secondMin = this.secondMinOriginal;
					this._defaults.millisecMin = this.millisecMinOriginal;
					this._defaults.microsecMin = this.microsecMinOriginal;
				}
			}

			if ($.datepicker._get(dp_inst, 'maxDateTime') !== null && $.datepicker._get(dp_inst, 'maxDateTime') !== undefined && dp_date) {
				var maxDateTime = $.datepicker._get(dp_inst, 'maxDateTime'),
					maxDateTimeDate = new Date(maxDateTime.getFullYear(), maxDateTime.getMonth(), maxDateTime.getDate(), 0, 0, 0, 0);

				if (this.hourMaxOriginal === null || this.minuteMaxOriginal === null || this.secondMaxOriginal === null || this.millisecMaxOriginal === null) {
					this.hourMaxOriginal = o.hourMax;
					this.minuteMaxOriginal = o.minuteMax;
					this.secondMaxOriginal = o.secondMax;
					this.millisecMaxOriginal = o.millisecMax;
					this.microsecMaxOriginal = o.microsecMax;
				}

				if (dp_inst.settings.timeOnly || maxDateTimeDate.getTime() === dp_date.getTime()) {
					this._defaults.hourMax = maxDateTime.getHours();
					if (this.hour >= this._defaults.hourMax) {
						this.hour = this._defaults.hourMax;
						this._defaults.minuteMax = maxDateTime.getMinutes();
						if (this.minute >= this._defaults.minuteMax) {
							this.minute = this._defaults.minuteMax;
							this._defaults.secondMax = maxDateTime.getSeconds();
							if (this.second >= this._defaults.secondMax) {
								this.second = this._defaults.secondMax;
								this._defaults.millisecMax = maxDateTime.getMilliseconds();
								if (this.millisec >= this._defaults.millisecMax) {
									this.millisec = this._defaults.millisecMax;
									this._defaults.microsecMax = maxDateTime.getMicroseconds();
								} else {
									if (this.microsec > this._defaults.microsecMax) {
										this.microsec = this._defaults.microsecMax;
									}
									this._defaults.microsecMax = this.microsecMaxOriginal;
								}
							} else {
								this._defaults.millisecMax = this.millisecMaxOriginal;
								this._defaults.microsecMax = this.microsecMaxOriginal;
							}
						} else {
							this._defaults.secondMax = this.secondMaxOriginal;
							this._defaults.millisecMax = this.millisecMaxOriginal;
							this._defaults.microsecMax = this.microsecMaxOriginal;
						}
					} else {
						this._defaults.minuteMax = this.minuteMaxOriginal;
						this._defaults.secondMax = this.secondMaxOriginal;
						this._defaults.millisecMax = this.millisecMaxOriginal;
						this._defaults.microsecMax = this.microsecMaxOriginal;
					}
				} else {
					this._defaults.hourMax = this.hourMaxOriginal;
					this._defaults.minuteMax = this.minuteMaxOriginal;
					this._defaults.secondMax = this.secondMaxOriginal;
					this._defaults.millisecMax = this.millisecMaxOriginal;
					this._defaults.microsecMax = this.microsecMaxOriginal;
				}
			}

			if (dp_inst.settings.minTime!==null) {
				var tempMinTime=new Date("01/01/1970 " + dp_inst.settings.minTime);
				if (this.hour<tempMinTime.getHours()) {
					this.hour=this._defaults.hourMin=tempMinTime.getHours();
					this.minute=this._defaults.minuteMin=tempMinTime.getMinutes();
				} else if (this.hour===tempMinTime.getHours() && this.minute<tempMinTime.getMinutes()) {
					this.minute=this._defaults.minuteMin=tempMinTime.getMinutes();
				} else {
					if (this._defaults.hourMin<tempMinTime.getHours()) {
						this._defaults.hourMin=tempMinTime.getHours();
						this._defaults.minuteMin=tempMinTime.getMinutes();
					} else if (this._defaults.hourMin===tempMinTime.getHours()===this.hour && this._defaults.minuteMin<tempMinTime.getMinutes()) {
						this._defaults.minuteMin=tempMinTime.getMinutes();
					} else {
						this._defaults.minuteMin=0;
					}
				}
			}

			if (dp_inst.settings.maxTime!==null) {
				var tempMaxTime=new Date("01/01/1970 " + dp_inst.settings.maxTime);
				if (this.hour>tempMaxTime.getHours()) {
					this.hour=this._defaults.hourMax=tempMaxTime.getHours();
					this.minute=this._defaults.minuteMax=tempMaxTime.getMinutes();
				} else if (this.hour===tempMaxTime.getHours() && this.minute>tempMaxTime.getMinutes()) {
					this.minute=this._defaults.minuteMax=tempMaxTime.getMinutes();
				} else {
					if (this._defaults.hourMax>tempMaxTime.getHours()) {
						this._defaults.hourMax=tempMaxTime.getHours();
						this._defaults.minuteMax=tempMaxTime.getMinutes();
					} else if (this._defaults.hourMax===tempMaxTime.getHours()===this.hour && this._defaults.minuteMax>tempMaxTime.getMinutes()) {
						this._defaults.minuteMax=tempMaxTime.getMinutes();
					} else {
						this._defaults.minuteMax=59;
					}
				}
			}

			if (adjustSliders !== undefined && adjustSliders === true) {
				var hourMax = parseInt((this._defaults.hourMax - ((this._defaults.hourMax - this._defaults.hourMin) % this._defaults.stepHour)), 10),
					minMax = parseInt((this._defaults.minuteMax - ((this._defaults.minuteMax - this._defaults.minuteMin) % this._defaults.stepMinute)), 10),
					secMax = parseInt((this._defaults.secondMax - ((this._defaults.secondMax - this._defaults.secondMin) % this._defaults.stepSecond)), 10),
					millisecMax = parseInt((this._defaults.millisecMax - ((this._defaults.millisecMax - this._defaults.millisecMin) % this._defaults.stepMillisec)), 10),
					microsecMax = parseInt((this._defaults.microsecMax - ((this._defaults.microsecMax - this._defaults.microsecMin) % this._defaults.stepMicrosec)), 10);

				if (this.hour_slider) {
					this.control.options(this, this.hour_slider, 'hour', { min: this._defaults.hourMin, max: hourMax, step: this._defaults.stepHour });
					this.control.value(this, this.hour_slider, 'hour', this.hour - (this.hour % this._defaults.stepHour));
				}
				if (this.minute_slider) {
					this.control.options(this, this.minute_slider, 'minute', { min: this._defaults.minuteMin, max: minMax, step: this._defaults.stepMinute });
					this.control.value(this, this.minute_slider, 'minute', this.minute - (this.minute % this._defaults.stepMinute));
				}
				if (this.second_slider) {
					this.control.options(this, this.second_slider, 'second', { min: this._defaults.secondMin, max: secMax, step: this._defaults.stepSecond });
					this.control.value(this, this.second_slider, 'second', this.second - (this.second % this._defaults.stepSecond));
				}
				if (this.millisec_slider) {
					this.control.options(this, this.millisec_slider, 'millisec', { min: this._defaults.millisecMin, max: millisecMax, step: this._defaults.stepMillisec });
					this.control.value(this, this.millisec_slider, 'millisec', this.millisec - (this.millisec % this._defaults.stepMillisec));
				}
				if (this.microsec_slider) {
					this.control.options(this, this.microsec_slider, 'microsec', { min: this._defaults.microsecMin, max: microsecMax, step: this._defaults.stepMicrosec });
					this.control.value(this, this.microsec_slider, 'microsec', this.microsec - (this.microsec % this._defaults.stepMicrosec));
				}
			}

		},

		/*
		 * when a slider moves, set the internal time...
		 * on time change is also called when the time is updated in the text field
		 */
		_onTimeChange: function () {
			if (!this._defaults.showTimepicker) {
				return;
			}
			var hour = (this.hour_slider) ? this.control.value(this, this.hour_slider, 'hour') : false,
				minute = (this.minute_slider) ? this.control.value(this, this.minute_slider, 'minute') : false,
				second = (this.second_slider) ? this.control.value(this, this.second_slider, 'second') : false,
				millisec = (this.millisec_slider) ? this.control.value(this, this.millisec_slider, 'millisec') : false,
				microsec = (this.microsec_slider) ? this.control.value(this, this.microsec_slider, 'microsec') : false,
				timezone = (this.timezone_select) ? this.timezone_select.val() : false,
				o = this._defaults,
				pickerTimeFormat = o.pickerTimeFormat || o.timeFormat,
				pickerTimeSuffix = o.pickerTimeSuffix || o.timeSuffix;

			if (typeof(hour) === 'object') {
				hour = false;
			}
			if (typeof(minute) === 'object') {
				minute = false;
			}
			if (typeof(second) === 'object') {
				second = false;
			}
			if (typeof(millisec) === 'object') {
				millisec = false;
			}
			if (typeof(microsec) === 'object') {
				microsec = false;
			}
			if (typeof(timezone) === 'object') {
				timezone = false;
			}

			if (hour !== false) {
				hour = parseInt(hour, 10);
			}
			if (minute !== false) {
				minute = parseInt(minute, 10);
			}
			if (second !== false) {
				second = parseInt(second, 10);
			}
			if (millisec !== false) {
				millisec = parseInt(millisec, 10);
			}
			if (microsec !== false) {
				microsec = parseInt(microsec, 10);
			}
			if (timezone !== false) {
				timezone = timezone.toString();
			}

			var ampm = o[hour < 12 ? 'amNames' : 'pmNames'][0];

			// If the update was done in the input field, the input field should not be updated.
			// If the update was done using the sliders, update the input field.
			var hasChanged = (
				hour !== parseInt(this.hour,10) || // sliders should all be numeric
				minute !== parseInt(this.minute,10) ||
				second !== parseInt(this.second,10) ||
				millisec !== parseInt(this.millisec,10) ||
				microsec !== parseInt(this.microsec,10) ||
				(this.ampm.length > 0 && (hour < 12) !== ($.inArray(this.ampm.toUpperCase(), this.amNames) !== -1)) ||
				(this.timezone !== null && timezone !== this.timezone.toString()) // could be numeric or "EST" format, so use toString()
			);

			if (hasChanged) {

				if (hour !== false) {
					this.hour = hour;
				}
				if (minute !== false) {
					this.minute = minute;
				}
				if (second !== false) {
					this.second = second;
				}
				if (millisec !== false) {
					this.millisec = millisec;
				}
				if (microsec !== false) {
					this.microsec = microsec;
				}
				if (timezone !== false) {
					this.timezone = timezone;
				}

				if (!this.inst) {
					this.inst = $.datepicker._getInst(this.$input[0]);
				}

				this._limitMinMaxDateTime(this.inst, true);
			}
			if (this.support.ampm) {
				this.ampm = ampm;
			}

			// Updates the time within the timepicker
			this.formattedTime = $.datepicker.formatTime(o.timeFormat, this, o);
			if (this.$timeObj) {
				if (pickerTimeFormat === o.timeFormat) {
					this.$timeObj.val(this.formattedTime + pickerTimeSuffix);
				}
				else {
					this.$timeObj.val($.datepicker.formatTime(pickerTimeFormat, this, o) + pickerTimeSuffix);
				}
				if (this.$timeObj[0].setSelectionRange) {
					var sPos = this.$timeObj[0].selectionStart;
					var ePos = this.$timeObj[0].selectionEnd;
					this.$timeObj[0].setSelectionRange(sPos, ePos);
				}
			}

			this.timeDefined = true;
			if (hasChanged) {
				this._updateDateTime();
				//this.$input.focus(); // may automatically open the picker on setDate
			}
		},

		/*
		 * call custom onSelect.
		 * bind to sliders slidestop, and grid click.
		 */
		_onSelectHandler: function () {
			var onSelect = this._defaults.onSelect || this.inst.settings.onSelect;
			var inputEl = this.$input ? this.$input[0] : null;
			if (onSelect && inputEl) {
				onSelect.apply(inputEl, [this.formattedDateTime, this]);
			}
		},

		/*
		 * update our input with the new date time..
		 */
		_updateDateTime: function (dp_inst) {
			dp_inst = this.inst || dp_inst;
			var dtTmp = (dp_inst.currentYear > 0?
					new Date(dp_inst.currentYear, dp_inst.currentMonth, dp_inst.currentDay) :
					new Date(dp_inst.selectedYear, dp_inst.selectedMonth, dp_inst.selectedDay)),
				dt = $.datepicker._daylightSavingAdjust(dtTmp),
				//dt = $.datepicker._daylightSavingAdjust(new Date(dp_inst.selectedYear, dp_inst.selectedMonth, dp_inst.selectedDay)),
				//dt = $.datepicker._daylightSavingAdjust(new Date(dp_inst.currentYear, dp_inst.currentMonth, dp_inst.currentDay)),
				dateFmt = $.datepicker._get(dp_inst, 'dateFormat'),
				formatCfg = $.datepicker._getFormatConfig(dp_inst),
				timeAvailable = dt !== null && this.timeDefined;
			this.formattedDate = $.datepicker.formatDate(dateFmt, (dt === null ? new Date() : dt), formatCfg);
			var formattedDateTime = this.formattedDate;

			// if a slider was changed but datepicker doesn't have a value yet, set it
			if (dp_inst.lastVal === "") {
				dp_inst.currentYear = dp_inst.selectedYear;
				dp_inst.currentMonth = dp_inst.selectedMonth;
				dp_inst.currentDay = dp_inst.selectedDay;
			}

			/*
			 * remove following lines to force every changes in date picker to change the input value
			 * Bug descriptions: when an input field has a default value, and click on the field to pop up the date picker.
			 * If the user manually empty the value in the input field, the date picker will never change selected value.
			 */
			//if (dp_inst.lastVal !== undefined && (dp_inst.lastVal.length > 0 && this.$input.val().length === 0)) {
			//	return;
			//}

			if (this._defaults.timeOnly === true && this._defaults.timeOnlyShowDate === false) {
				formattedDateTime = this.formattedTime;
			} else if ((this._defaults.timeOnly !== true && (this._defaults.alwaysSetTime || timeAvailable)) || (this._defaults.timeOnly === true && this._defaults.timeOnlyShowDate === true)) {
				formattedDateTime += this._defaults.separator + this.formattedTime + this._defaults.timeSuffix;
			}

			this.formattedDateTime = formattedDateTime;

			if (!this._defaults.showTimepicker) {
				this.$input.val(this.formattedDate);
			} else if (this.$altInput && this._defaults.timeOnly === false && this._defaults.altFieldTimeOnly === true) {
				this.$altInput.val(this.formattedTime);
				this.$input.val(this.formattedDate);
			} else if (this.$altInput) {
				this.$input.val(formattedDateTime);
				var altFormattedDateTime = '',
					altSeparator = this._defaults.altSeparator !== null ? this._defaults.altSeparator : this._defaults.separator,
					altTimeSuffix = this._defaults.altTimeSuffix !== null ? this._defaults.altTimeSuffix : this._defaults.timeSuffix;

				if (!this._defaults.timeOnly) {
					if (this._defaults.altFormat) {
						altFormattedDateTime = $.datepicker.formatDate(this._defaults.altFormat, (dt === null ? new Date() : dt), formatCfg);
					}
					else {
						altFormattedDateTime = this.formattedDate;
					}

					if (altFormattedDateTime) {
						altFormattedDateTime += altSeparator;
					}
				}

				if (this._defaults.altTimeFormat !== null) {
					altFormattedDateTime += $.datepicker.formatTime(this._defaults.altTimeFormat, this, this._defaults) + altTimeSuffix;
				}
				else {
					altFormattedDateTime += this.formattedTime + altTimeSuffix;
				}
				this.$altInput.val(altFormattedDateTime);
			} else {
				this.$input.val(formattedDateTime);
			}

			this.$input.trigger("change");
		},

		_onFocus: function () {
			if (!this.$input.val() && this._defaults.defaultValue) {
				this.$input.val(this._defaults.defaultValue);
				var inst = $.datepicker._getInst(this.$input.get(0)),
					tp_inst = $.datepicker._get(inst, 'timepicker');
				if (tp_inst) {
					if (tp_inst._defaults.timeOnly && (inst.input.val() !== inst.lastVal)) {
						try {
							$.datepicker._updateDatepicker(inst);
						} catch (err) {
							$.timepicker.log(err);
						}
					}
				}
			}
		},

		/*
		 * Small abstraction to control types
		 * We can add more, just be sure to follow the pattern: create, options, value
		 */
		_controls: {
			// slider methods
			slider: {
				create: function (tp_inst, obj, unit, val, min, max, step) {
					var rtl = tp_inst._defaults.isRTL; // if rtl go -60->0 instead of 0->60
					return obj.prop('slide', null).slider({
						orientation: "horizontal",
						value: rtl ? val * -1 : val,
						min: rtl ? max * -1 : min,
						max: rtl ? min * -1 : max,
						step: step,
						slide: function (event, ui) {
							tp_inst.control.value(tp_inst, $(this), unit, rtl ? ui.value * -1 : ui.value);
							tp_inst._onTimeChange();
						},
						stop: function (event, ui) {
							tp_inst._onSelectHandler();
						}
					});
				},
				options: function (tp_inst, obj, unit, opts, val) {
					if (tp_inst._defaults.isRTL) {
						if (typeof(opts) === 'string') {
							if (opts === 'min' || opts === 'max') {
								if (val !== undefined) {
									return obj.slider(opts, val * -1);
								}
								return Math.abs(obj.slider(opts));
							}
							return obj.slider(opts);
						}
						var min = opts.min,
							max = opts.max;
						opts.min = opts.max = null;
						if (min !== undefined) {
							opts.max = min * -1;
						}
						if (max !== undefined) {
							opts.min = max * -1;
						}
						return obj.slider(opts);
					}
					if (typeof(opts) === 'string' && val !== undefined) {
						return obj.slider(opts, val);
					}
					return obj.slider(opts);
				},
				value: function (tp_inst, obj, unit, val) {
					if (tp_inst._defaults.isRTL) {
						if (val !== undefined) {
							return obj.slider('value', val * -1);
						}
						return Math.abs(obj.slider('value'));
					}
					if (val !== undefined) {
						return obj.slider('value', val);
					}
					return obj.slider('value');
				}
			},
			// select methods
			select: {
				create: function (tp_inst, obj, unit, val, min, max, step) {
					var sel = '<select class="ui-timepicker-select ui-state-default ui-corner-all" data-unit="' + unit + '" data-min="' + min + '" data-max="' + max + '" data-step="' + step + '">',
						format = tp_inst._defaults.pickerTimeFormat || tp_inst._defaults.timeFormat;

					for (var i = min; i <= max; i += step) {
						sel += '<option value="' + i + '"' + (i === val ? ' selected' : '') + '>';
						if (unit === 'hour') {
							sel += $.datepicker.formatTime($.trim(format.replace(/[^ht ]/ig, '')), {hour: i}, tp_inst._defaults);
						}
						else if (unit === 'millisec' || unit === 'microsec' || i >= 10) { sel += i; }
						else {sel += '0' + i.toString(); }
						sel += '</option>';
					}
					sel += '</select>';

					obj.children('select').remove();

					$(sel).appendTo(obj).change(function (e) {
						tp_inst._onTimeChange();
						tp_inst._onSelectHandler();
						tp_inst._afterInject();
					});

					return obj;
				},
				options: function (tp_inst, obj, unit, opts, val) {
					var o = {},
						$t = obj.children('select');
					if (typeof(opts) === 'string') {
						if (val === undefined) {
							return $t.data(opts);
						}
						o[opts] = val;
					}
					else { o = opts; }
					return tp_inst.control.create(tp_inst, obj, $t.data('unit'), $t.val(), o.min>=0 ? o.min : $t.data('min'), o.max || $t.data('max'), o.step || $t.data('step'));
				},
				value: function (tp_inst, obj, unit, val) {
					var $t = obj.children('select');
					if (val !== undefined) {
						return $t.val(val);
					}
					return $t.val();
				}
			}
		} // end _controls

	});

	$.fn.extend({
		/*
		 * shorthand just to use timepicker.
		 */
		timepicker: function (o) {
			o = o || {};
			var tmp_args = Array.prototype.slice.call(arguments);

			if (typeof o === 'object') {
				tmp_args[0] = $.extend(o, {
					timeOnly: true
				});
			}

			return $(this).each(function () {
				$.fn.datetimepicker.apply($(this), tmp_args);
			});
		},

		/*
		 * extend timepicker to datepicker
		 */
		datetimepicker: function (o) {
			o = o || {};
			var tmp_args = arguments;

			if (typeof(o) === 'string') {
				if (o === 'getDate'  || (o === 'option' && tmp_args.length === 2 && typeof (tmp_args[1]) === 'string')) {
					return $.fn.datepicker.apply($(this[0]), tmp_args);
				} else {
					return this.each(function () {
						var $t = $(this);
						$t.datepicker.apply($t, tmp_args);
					});
				}
			} else {
				return this.each(function () {
					var $t = $(this);
					$t.datepicker($.timepicker._newInst($t, o)._defaults);
				});
			}
		}
	});

	/*
	 * Public Utility to parse date and time
	 */
	$.datepicker.parseDateTime = function (dateFormat, timeFormat, dateTimeString, dateSettings, timeSettings) {
		var parseRes = parseDateTimeInternal(dateFormat, timeFormat, dateTimeString, dateSettings, timeSettings);
		if (parseRes.timeObj) {
			var t = parseRes.timeObj;
			parseRes.date.setHours(t.hour, t.minute, t.second, t.millisec);
			parseRes.date.setMicroseconds(t.microsec);
		}

		return parseRes.date;
	};

	/*
	 * Public utility to parse time
	 */
	$.datepicker.parseTime = function (timeFormat, timeString, options) {
		var o = extendRemove(extendRemove({}, $.timepicker._defaults), options || {}),
			iso8601 = (timeFormat.replace(/\'.*?\'/g, '').indexOf('Z') !== -1);

		// Strict parse requires the timeString to match the timeFormat exactly
		var strictParse = function (f, s, o) {

			// pattern for standard and localized AM/PM markers
			var getPatternAmpm = function (amNames, pmNames) {
				var markers = [];
				if (amNames) {
					$.merge(markers, amNames);
				}
				if (pmNames) {
					$.merge(markers, pmNames);
				}
				markers = $.map(markers, function (val) {
					return val.replace(/[.*+?|()\[\]{}\\]/g, '\\$&');
				});
				return '(' + markers.join('|') + ')?';
			};

			// figure out position of time elements.. cause js cant do named captures
			var getFormatPositions = function (timeFormat) {
				var finds = timeFormat.toLowerCase().match(/(h{1,2}|m{1,2}|s{1,2}|l{1}|c{1}|t{1,2}|z|'.*?')/g),
					orders = {
						h: -1,
						m: -1,
						s: -1,
						l: -1,
						c: -1,
						t: -1,
						z: -1
					};

				if (finds) {
					for (var i = 0; i < finds.length; i++) {
						if (orders[finds[i].toString().charAt(0)] === -1) {
							orders[finds[i].toString().charAt(0)] = i + 1;
						}
					}
				}
				return orders;
			};

			var regstr = '^' + f.toString()
						.replace(/([hH]{1,2}|mm?|ss?|[tT]{1,2}|[zZ]|[lc]|'.*?')/g, function (match) {
							var ml = match.length;
							switch (match.charAt(0).toLowerCase()) {
								case 'h':
									return ml === 1 ? '(\\d?\\d)' : '(\\d{' + ml + '})';
								case 'm':
									return ml === 1 ? '(\\d?\\d)' : '(\\d{' + ml + '})';
								case 's':
									return ml === 1 ? '(\\d?\\d)' : '(\\d{' + ml + '})';
								case 'l':
									return '(\\d?\\d?\\d)';
								case 'c':
									return '(\\d?\\d?\\d)';
								case 'z':
									return '(z|[-+]\\d\\d:?\\d\\d|\\S+)?';
								case 't':
									return getPatternAmpm(o.amNames, o.pmNames);
								default:    // literal escaped in quotes
									return '(' + match.replace(/\'/g, "").replace(/(\.|\$|\^|\\|\/|\(|\)|\[|\]|\?|\+|\*)/g, function (m) { return "\\" + m; }) + ')?';
							}
						})
						.replace(/\s/g, '\\s?') +
					o.timeSuffix + '$',
				order = getFormatPositions(f),
				ampm = '',
				treg;

			treg = s.match(new RegExp(regstr, 'i'));

			var resTime = {
				hour: 0,
				minute: 0,
				second: 0,
				millisec: 0,
				microsec: 0
			};

			if (treg) {
				if (order.t !== -1) {
					if (treg[order.t] === undefined || treg[order.t].length === 0) {
						ampm = '';
						resTime.ampm = '';
					} else {
						ampm = $.inArray(treg[order.t].toUpperCase(), $.map(o.amNames, function (x,i) { return x.toUpperCase(); })) !== -1 ? 'AM' : 'PM';
						resTime.ampm = o[ampm === 'AM' ? 'amNames' : 'pmNames'][0];
					}
				}

				if (order.h !== -1) {
					if (ampm === 'AM' && treg[order.h] === '12') {
						resTime.hour = 0; // 12am = 0 hour
					} else {
						if (ampm === 'PM' && treg[order.h] !== '12') {
							resTime.hour = parseInt(treg[order.h], 10) + 12; // 12pm = 12 hour, any other pm = hour + 12
						} else {
							resTime.hour = Number(treg[order.h]);
						}
					}
				}

				if (order.m !== -1) {
					resTime.minute = Number(treg[order.m]);
				}
				if (order.s !== -1) {
					resTime.second = Number(treg[order.s]);
				}
				if (order.l !== -1) {
					resTime.millisec = Number(treg[order.l]);
				}
				if (order.c !== -1) {
					resTime.microsec = Number(treg[order.c]);
				}
				if (order.z !== -1 && treg[order.z] !== undefined) {
					resTime.timezone = $.timepicker.timezoneOffsetNumber(treg[order.z]);
				}


				return resTime;
			}
			return false;
		};// end strictParse

		// First try JS Date, if that fails, use strictParse
		var looseParse = function (f, s, o) {
			try {
				var d = new Date('2012-01-01 ' + s);
				if (isNaN(d.getTime())) {
					d = new Date('2012-01-01T' + s);
					if (isNaN(d.getTime())) {
						d = new Date('01/01/2012 ' + s);
						if (isNaN(d.getTime())) {
							throw "Unable to parse time with native Date: " + s;
						}
					}
				}

				return {
					hour: d.getHours(),
					minute: d.getMinutes(),
					second: d.getSeconds(),
					millisec: d.getMilliseconds(),
					microsec: d.getMicroseconds(),
					timezone: d.getTimezoneOffset() * -1
				};
			}
			catch (err) {
				try {
					return strictParse(f, s, o);
				}
				catch (err2) {
					$.timepicker.log("Unable to parse \ntimeString: " + s + "\ntimeFormat: " + f);
				}
			}
			return false;
		}; // end looseParse

		if (typeof o.parse === "function") {
			return o.parse(timeFormat, timeString, o);
		}
		if (o.parse === 'loose') {
			return looseParse(timeFormat, timeString, o);
		}
		return strictParse(timeFormat, timeString, o);
	};

	/**
	 * Public utility to format the time
	 * @param {string} format format of the time
	 * @param {Object} time Object not a Date for timezones
	 * @param {Object} [options] essentially the regional[].. amNames, pmNames, ampm
	 * @returns {string} the formatted time
	 */
	$.datepicker.formatTime = function (format, time, options) {
		options = options || {};
		options = $.extend({}, $.timepicker._defaults, options);
		time = $.extend({
			hour: 0,
			minute: 0,
			second: 0,
			millisec: 0,
			microsec: 0,
			timezone: null
		}, time);

		var tmptime = format,
			ampmName = options.amNames[0],
			hour = parseInt(time.hour, 10);

		if (hour > 11) {
			ampmName = options.pmNames[0];
		}

		tmptime = tmptime.replace(/(?:HH?|hh?|mm?|ss?|[tT]{1,2}|[zZ]|[lc]|'.*?')/g, function (match) {
			switch (match) {
				case 'HH':
					return ('0' + hour).slice(-2);
				case 'H':
					return hour;
				case 'hh':
					return ('0' + convert24to12(hour)).slice(-2);
				case 'h':
					return convert24to12(hour);
				case 'mm':
					return ('0' + time.minute).slice(-2);
				case 'm':
					return time.minute;
				case 'ss':
					return ('0' + time.second).slice(-2);
				case 's':
					return time.second;
				case 'l':
					return ('00' + time.millisec).slice(-3);
				case 'c':
					return ('00' + time.microsec).slice(-3);
				case 'z':
					return $.timepicker.timezoneOffsetString(time.timezone === null ? options.timezone : time.timezone, false);
				case 'Z':
					return $.timepicker.timezoneOffsetString(time.timezone === null ? options.timezone : time.timezone, true);
				case 'T':
					return ampmName.charAt(0).toUpperCase();
				case 'TT':
					return ampmName.toUpperCase();
				case 't':
					return ampmName.charAt(0).toLowerCase();
				case 'tt':
					return ampmName.toLowerCase();
				default:
					return match.replace(/'/g, "");
			}
		});

		return tmptime;
	};

	/*
	 * the bad hack :/ override datepicker so it doesn't close on select
	 // inspired: http://stackoverflow.com/questions/1252512/jquery-datepicker-prevent-closing-picker-when-clicking-a-date/1762378#1762378
	 */
	$.datepicker._base_selectDate = $.datepicker._selectDate;
	$.datepicker._selectDate = function (id, dateStr) {
		var inst = this._getInst($(id)[0]),
			tp_inst = this._get(inst, 'timepicker'),
			was_inline;

		if (tp_inst && inst.settings.showTimepicker) {
			tp_inst._limitMinMaxDateTime(inst, true);
			was_inline = inst.inline;
			inst.inline = inst.stay_open = true;
			//This way the onSelect handler called from calendarpicker get the full dateTime
			this._base_selectDate(id, dateStr);
			inst.inline = was_inline;
			inst.stay_open = false;
			this._notifyChange(inst);
			this._updateDatepicker(inst);
		} else {
			this._base_selectDate(id, dateStr);
		}
	};

	/*
	 * second bad hack :/ override datepicker so it triggers an event when changing the input field
	 * and does not redraw the datepicker on every selectDate event
	 */
	$.datepicker._base_updateDatepicker = $.datepicker._updateDatepicker;
	$.datepicker._updateDatepicker = function (inst) {

		// don't popup the datepicker if there is another instance already opened
		var input = inst.input[0];
		if ($.datepicker._curInst && $.datepicker._curInst !== inst && $.datepicker._datepickerShowing && $.datepicker._lastInput !== input) {
			return;
		}

		if (typeof(inst.stay_open) !== 'boolean' || inst.stay_open === false) {

			this._base_updateDatepicker(inst);

			// Reload the time control when changing something in the input text field.
			var tp_inst = this._get(inst, 'timepicker');
			if (tp_inst) {
				tp_inst._addTimePicker(inst);
			}
		}
	};

	/*
	 * third bad hack :/ override datepicker so it allows spaces and colon in the input field
	 */
	$.datepicker._base_doKeyPress = $.datepicker._doKeyPress;
	$.datepicker._doKeyPress = function (event) {
		var inst = $.datepicker._getInst(event.target),
			tp_inst = $.datepicker._get(inst, 'timepicker');

		if (tp_inst) {
			if ($.datepicker._get(inst, 'constrainInput')) {
				var ampm = tp_inst.support.ampm,
					tz = tp_inst._defaults.showTimezone !== null ? tp_inst._defaults.showTimezone : tp_inst.support.timezone,
					dateChars = $.datepicker._possibleChars($.datepicker._get(inst, 'dateFormat')),
					datetimeChars = tp_inst._defaults.timeFormat.toString()
							.replace(/[hms]/g, '')
							.replace(/TT/g, ampm ? 'APM' : '')
							.replace(/Tt/g, ampm ? 'AaPpMm' : '')
							.replace(/tT/g, ampm ? 'AaPpMm' : '')
							.replace(/T/g, ampm ? 'AP' : '')
							.replace(/tt/g, ampm ? 'apm' : '')
							.replace(/t/g, ampm ? 'ap' : '') +
						" " + tp_inst._defaults.separator +
						tp_inst._defaults.timeSuffix +
						(tz ? tp_inst._defaults.timezoneList.join('') : '') +
						(tp_inst._defaults.amNames.join('')) + (tp_inst._defaults.pmNames.join('')) +
						dateChars,
					chr = String.fromCharCode(event.charCode === undefined ? event.keyCode : event.charCode);
				return event.ctrlKey || (chr < ' ' || !dateChars || datetimeChars.indexOf(chr) > -1);
			}
		}

		return $.datepicker._base_doKeyPress(event);
	};

	/*
	 * Fourth bad hack :/ override _updateAlternate function used in inline mode to init altField
	 * Update any alternate field to synchronise with the main field.
	 */
	$.datepicker._base_updateAlternate = $.datepicker._updateAlternate;
	$.datepicker._updateAlternate = function (inst) {
		var tp_inst = this._get(inst, 'timepicker');
		if (tp_inst) {
			var altField = tp_inst._defaults.altField;
			if (altField) { // update alternate field too
				var altFormat = tp_inst._defaults.altFormat || tp_inst._defaults.dateFormat,
					date = this._getDate(inst),
					formatCfg = $.datepicker._getFormatConfig(inst),
					altFormattedDateTime = '',
					altSeparator = tp_inst._defaults.altSeparator ? tp_inst._defaults.altSeparator : tp_inst._defaults.separator,
					altTimeSuffix = tp_inst._defaults.altTimeSuffix ? tp_inst._defaults.altTimeSuffix : tp_inst._defaults.timeSuffix,
					altTimeFormat = tp_inst._defaults.altTimeFormat !== null ? tp_inst._defaults.altTimeFormat : tp_inst._defaults.timeFormat;

				altFormattedDateTime += $.datepicker.formatTime(altTimeFormat, tp_inst, tp_inst._defaults) + altTimeSuffix;
				if (!tp_inst._defaults.timeOnly && !tp_inst._defaults.altFieldTimeOnly && date !== null) {
					if (tp_inst._defaults.altFormat) {
						altFormattedDateTime = $.datepicker.formatDate(tp_inst._defaults.altFormat, date, formatCfg) + altSeparator + altFormattedDateTime;
					}
					else {
						altFormattedDateTime = tp_inst.formattedDate + altSeparator + altFormattedDateTime;
					}
				}
				$(altField).val( inst.input.val() ? altFormattedDateTime : "");
			}
		}
		else {
			$.datepicker._base_updateAlternate(inst);
		}
	};

	/*
	 * Override key up event to sync manual input changes.
	 */
	$.datepicker._base_doKeyUp = $.datepicker._doKeyUp;
	$.datepicker._doKeyUp = function (event) {
		var inst = $.datepicker._getInst(event.target),
			tp_inst = $.datepicker._get(inst, 'timepicker');

		if (tp_inst) {
			if (tp_inst._defaults.timeOnly && (inst.input.val() !== inst.lastVal)) {
				try {
					$.datepicker._updateDatepicker(inst);
				} catch (err) {
					$.timepicker.log(err);
				}
			}
		}

		return $.datepicker._base_doKeyUp(event);
	};

	/*
	 * override "Today" button to also grab the time and set it to input field.
	 */
	$.datepicker._base_gotoToday = $.datepicker._gotoToday;
	$.datepicker._gotoToday = function (id) {
		var inst = this._getInst($(id)[0]);
		this._base_gotoToday(id);
		var tp_inst = this._get(inst, 'timepicker');
		if (!tp_inst) {
			return;
		}

		var tzoffset = $.timepicker.timezoneOffsetNumber(tp_inst.timezone);
		var now = new Date();
		now.setMinutes(now.getMinutes() + now.getTimezoneOffset() + parseInt(tzoffset, 10));
		this._setTime(inst, now);
		this._setDate(inst, now);
		tp_inst._onSelectHandler();
	};

	/*
	 * Disable & enable the Time in the datetimepicker
	 */
	$.datepicker._disableTimepickerDatepicker = function (target) {
		var inst = this._getInst(target);
		if (!inst) {
			return;
		}

		var tp_inst = this._get(inst, 'timepicker');
		$(target).datepicker('getDate'); // Init selected[Year|Month|Day]
		if (tp_inst) {
			inst.settings.showTimepicker = false;
			tp_inst._defaults.showTimepicker = false;
			tp_inst._updateDateTime(inst);
		}
	};

	$.datepicker._enableTimepickerDatepicker = function (target) {
		var inst = this._getInst(target);
		if (!inst) {
			return;
		}

		var tp_inst = this._get(inst, 'timepicker');
		$(target).datepicker('getDate'); // Init selected[Year|Month|Day]
		if (tp_inst) {
			inst.settings.showTimepicker = true;
			tp_inst._defaults.showTimepicker = true;
			tp_inst._addTimePicker(inst); // Could be disabled on page load
			tp_inst._updateDateTime(inst);
		}
	};

	/*
	 * Create our own set time function
	 */
	$.datepicker._setTime = function (inst, date) {
		var tp_inst = this._get(inst, 'timepicker');
		if (tp_inst) {
			var defaults = tp_inst._defaults;

			// calling _setTime with no date sets time to defaults
			tp_inst.hour = date ? date.getHours() : defaults.hour;
			tp_inst.minute = date ? date.getMinutes() : defaults.minute;
			tp_inst.second = date ? date.getSeconds() : defaults.second;
			tp_inst.millisec = date ? date.getMilliseconds() : defaults.millisec;
			tp_inst.microsec = date ? date.getMicroseconds() : defaults.microsec;

			//check if within min/max times..
			tp_inst._limitMinMaxDateTime(inst, true);

			tp_inst._onTimeChange();
			tp_inst._updateDateTime(inst);
		}
	};

	/*
	 * Create new public method to set only time, callable as $().datepicker('setTime', date)
	 */
	$.datepicker._setTimeDatepicker = function (target, date, withDate) {
		var inst = this._getInst(target);
		if (!inst) {
			return;
		}

		var tp_inst = this._get(inst, 'timepicker');

		if (tp_inst) {
			this._setDateFromField(inst);
			var tp_date;
			if (date) {
				if (typeof date === "string") {
					tp_inst._parseTime(date, withDate);
					tp_date = new Date();
					tp_date.setHours(tp_inst.hour, tp_inst.minute, tp_inst.second, tp_inst.millisec);
					tp_date.setMicroseconds(tp_inst.microsec);
				} else {
					tp_date = new Date(date.getTime());
					tp_date.setMicroseconds(date.getMicroseconds());
				}
				if (tp_date.toString() === 'Invalid Date') {
					tp_date = undefined;
				}
				this._setTime(inst, tp_date);
			}
		}

	};

	/*
	 * override setDate() to allow setting time too within Date object
	 */
	$.datepicker._base_setDateDatepicker = $.datepicker._setDateDatepicker;
	$.datepicker._setDateDatepicker = function (target, _date) {
		var inst = this._getInst(target);
		var date = _date;
		if (!inst) {
			return;
		}

		if (typeof(_date) === 'string') {
			date = new Date(_date);
			if (!date.getTime()) {
				this._base_setDateDatepicker.apply(this, arguments);
				date = $(target).datepicker('getDate');
			}
		}

		var tp_inst = this._get(inst, 'timepicker');
		var tp_date;
		if (date instanceof Date) {
			tp_date = new Date(date.getTime());
			tp_date.setMicroseconds(date.getMicroseconds());
		} else {
			tp_date = date;
		}

		// This is important if you are using the timezone option, javascript's Date
		// object will only return the timezone offset for the current locale, so we
		// adjust it accordingly.  If not using timezone option this won't matter..
		// If a timezone is different in tp, keep the timezone as is
		if (tp_inst && tp_date) {
			// look out for DST if tz wasn't specified
			if (!tp_inst.support.timezone && tp_inst._defaults.timezone === null) {
				tp_inst.timezone = tp_date.getTimezoneOffset() * -1;
			}
			date = $.timepicker.timezoneAdjust(date, $.timepicker.timezoneOffsetString(-date.getTimezoneOffset()), tp_inst.timezone);
			tp_date = $.timepicker.timezoneAdjust(tp_date, $.timepicker.timezoneOffsetString(-tp_date.getTimezoneOffset()), tp_inst.timezone);
		}

		this._updateDatepicker(inst);
		this._base_setDateDatepicker.apply(this, arguments);
		this._setTimeDatepicker(target, tp_date, true);
	};

	/*
	 * override getDate() to allow getting time too within Date object
	 */
	$.datepicker._base_getDateDatepicker = $.datepicker._getDateDatepicker;
	$.datepicker._getDateDatepicker = function (target, noDefault) {
		var inst = this._getInst(target);
		if (!inst) {
			return;
		}

		var tp_inst = this._get(inst, 'timepicker');

		if (tp_inst) {
			// if it hasn't yet been defined, grab from field
			if (inst.lastVal === undefined) {
				this._setDateFromField(inst, noDefault);
			}

			var date = this._getDate(inst);

			var currDT = null;

			if (tp_inst.$altInput && tp_inst._defaults.altFieldTimeOnly) {
				currDT = tp_inst.$input.val() + ' ' + tp_inst.$altInput.val();
			}
			else if (tp_inst.$input.get(0).tagName !== 'INPUT' && tp_inst.$altInput) {
				/**
				 * in case the datetimepicker has been applied to a non-input tag for inline UI,
				 * and the user has not configured the plugin to display only time in altInput,
				 * pick current date time from the altInput (and hope for the best, for now, until "ER1" is applied)
				 *
				 * @todo ER1. Since altInput can have a totally difference format, convert it to standard format by reading input format from "altFormat" and "altTimeFormat" option values
				 */
				currDT = tp_inst.$altInput.val();
			}
			else {
				currDT = tp_inst.$input.val();
			}

			if (date && tp_inst._parseTime(currDT, !inst.settings.timeOnly)) {
				date.setHours(tp_inst.hour, tp_inst.minute, tp_inst.second, tp_inst.millisec);
				date.setMicroseconds(tp_inst.microsec);

				// This is important if you are using the timezone option, javascript's Date
				// object will only return the timezone offset for the current locale, so we
				// adjust it accordingly.  If not using timezone option this won't matter..
				if (tp_inst.timezone != null) {
					// look out for DST if tz wasn't specified
					if (!tp_inst.support.timezone && tp_inst._defaults.timezone === null) {
						tp_inst.timezone = date.getTimezoneOffset() * -1;
					}
					date = $.timepicker.timezoneAdjust(date, tp_inst.timezone, $.timepicker.timezoneOffsetString(-date.getTimezoneOffset()));
				}
			}
			return date;
		}
		return this._base_getDateDatepicker(target, noDefault);
	};

	/*
	 * override parseDate() because UI 1.8.14 throws an error about "Extra characters"
	 * An option in datapicker to ignore extra format characters would be nicer.
	 */
	$.datepicker._base_parseDate = $.datepicker.parseDate;
	$.datepicker.parseDate = function (format, value, settings) {
		var date;
		try {
			date = this._base_parseDate(format, value, settings);
		} catch (err) {
			// Hack!  The error message ends with a colon, a space, and
			// the "extra" characters.  We rely on that instead of
			// attempting to perfectly reproduce the parsing algorithm.
			if (err.indexOf(":") >= 0) {
				date = this._base_parseDate(format, value.substring(0, value.length - (err.length - err.indexOf(':') - 2)), settings);
				$.timepicker.log("Error parsing the date string: " + err + "\ndate string = " + value + "\ndate format = " + format);
			} else {
				throw err;
			}
		}
		return date;
	};

	/*
	 * override formatDate to set date with time to the input
	 */
	$.datepicker._base_formatDate = $.datepicker._formatDate;
	$.datepicker._formatDate = function (inst, day, month, year) {
		var tp_inst = this._get(inst, 'timepicker');
		if (tp_inst) {
			tp_inst._updateDateTime(inst);
			return tp_inst.$input.val();
		}
		return this._base_formatDate(inst);
	};

	/*
	 * override options setter to add time to maxDate(Time) and minDate(Time). MaxDate
	 */
	$.datepicker._base_optionDatepicker = $.datepicker._optionDatepicker;
	$.datepicker._optionDatepicker = function (target, name, value) {
		var inst = this._getInst(target),
			name_clone;
		if (!inst) {
			return null;
		}

		var tp_inst = this._get(inst, 'timepicker');
		if (tp_inst) {
			var min = null,
				max = null,
				onselect = null,
				overrides = tp_inst._defaults.evnts,
				fns = {},
				prop,
				ret,
				oldVal,
				$target;
			if (typeof name === 'string') { // if min/max was set with the string
				if (name === 'minDate' || name === 'minDateTime') {
					min = value;
				} else if (name === 'maxDate' || name === 'maxDateTime') {
					max = value;
				} else if (name === 'onSelect') {
					onselect = value;
				} else if (overrides.hasOwnProperty(name)) {
					if (typeof (value) === 'undefined') {
						return overrides[name];
					}
					fns[name] = value;
					name_clone = {}; //empty results in exiting function after overrides updated
				}
			} else if (typeof name === 'object') { //if min/max was set with the JSON
				if (name.minDate) {
					min = name.minDate;
				} else if (name.minDateTime) {
					min = name.minDateTime;
				} else if (name.maxDate) {
					max = name.maxDate;
				} else if (name.maxDateTime) {
					max = name.maxDateTime;
				}
				for (prop in overrides) {
					if (overrides.hasOwnProperty(prop) && name[prop]) {
						fns[prop] = name[prop];
					}
				}
			}
			for (prop in fns) {
				if (fns.hasOwnProperty(prop)) {
					overrides[prop] = fns[prop];
					if (!name_clone) { name_clone = $.extend({}, name); }
					delete name_clone[prop];
				}
			}
			if (name_clone && isEmptyObject(name_clone)) { return; }
			if (min) { //if min was set
				if (min === 0) {
					min = new Date();
				} else {
					min = new Date(min);
				}
				tp_inst._defaults.minDate = min;
				tp_inst._defaults.minDateTime = min;
			} else if (max) { //if max was set
				if (max === 0) {
					max = new Date();
				} else {
					max = new Date(max);
				}
				tp_inst._defaults.maxDate = max;
				tp_inst._defaults.maxDateTime = max;
			} else if (onselect) {
				tp_inst._defaults.onSelect = onselect;
			}

			// Datepicker will override our date when we call _base_optionDatepicker when
			// calling minDate/maxDate, so we will first grab the value, call
			// _base_optionDatepicker, then set our value back.
			if(min || max){
				$target = $(target);
				oldVal = $target.datetimepicker('getDate');
				ret = this._base_optionDatepicker.call($.datepicker, target, name_clone || name, value);
				$target.datetimepicker('setDate', oldVal);
				return ret;
			}
		}
		if (value === undefined) {
			return this._base_optionDatepicker.call($.datepicker, target, name);
		}
		return this._base_optionDatepicker.call($.datepicker, target, name_clone || name, value);
	};

	/*
	 * jQuery isEmptyObject does not check hasOwnProperty - if someone has added to the object prototype,
	 * it will return false for all objects
	 */
	var isEmptyObject = function (obj) {
		var prop;
		for (prop in obj) {
			if (obj.hasOwnProperty(prop)) {
				return false;
			}
		}
		return true;
	};

	/*
	 * jQuery extend now ignores nulls!
	 */
	var extendRemove = function (target, props) {
		$.extend(target, props);
		for (var name in props) {
			if (props[name] === null || props[name] === undefined) {
				target[name] = props[name];
			}
		}
		return target;
	};

	/*
	 * Determine by the time format which units are supported
	 * Returns an object of booleans for each unit
	 */
	var detectSupport = function (timeFormat) {
		var tf = timeFormat.replace(/'.*?'/g, '').toLowerCase(), // removes literals
			isIn = function (f, t) { // does the format contain the token?
				return f.indexOf(t) !== -1 ? true : false;
			};
		return {
			hour: isIn(tf, 'h'),
			minute: isIn(tf, 'm'),
			second: isIn(tf, 's'),
			millisec: isIn(tf, 'l'),
			microsec: isIn(tf, 'c'),
			timezone: isIn(tf, 'z'),
			ampm: isIn(tf, 't') && isIn(timeFormat, 'h'),
			iso8601: isIn(timeFormat, 'Z')
		};
	};

	/*
	 * Converts 24 hour format into 12 hour
	 * Returns 12 hour without leading 0
	 */
	var convert24to12 = function (hour) {
		hour %= 12;

		if (hour === 0) {
			hour = 12;
		}

		return String(hour);
	};

	var computeEffectiveSetting = function (settings, property) {
		return settings && settings[property] ? settings[property] : $.timepicker._defaults[property];
	};

	/*
	 * Splits datetime string into date and time substrings.
	 * Throws exception when date can't be parsed
	 * Returns {dateString: dateString, timeString: timeString}
	 */
	var splitDateTime = function (dateTimeString, timeSettings) {
		// The idea is to get the number separator occurrences in datetime and the time format requested (since time has
		// fewer unknowns, mostly numbers and am/pm). We will use the time pattern to split.
		var separator = computeEffectiveSetting(timeSettings, 'separator'),
			format = computeEffectiveSetting(timeSettings, 'timeFormat'),
			timeParts = format.split(separator), // how many occurrences of separator may be in our format?
			timePartsLen = timeParts.length,
			allParts = dateTimeString.split(separator),
			allPartsLen = allParts.length;

		if (allPartsLen > 1) {
			return {
				dateString: allParts.splice(0, allPartsLen - timePartsLen).join(separator),
				timeString: allParts.splice(0, timePartsLen).join(separator)
			};
		}

		return {
			dateString: dateTimeString,
			timeString: ''
		};
	};

	/*
	 * Internal function to parse datetime interval
	 * Returns: {date: Date, timeObj: Object}, where
	 *   date - parsed date without time (type Date)
	 *   timeObj = {hour: , minute: , second: , millisec: , microsec: } - parsed time. Optional
	 */
	var parseDateTimeInternal = function (dateFormat, timeFormat, dateTimeString, dateSettings, timeSettings) {
		var date,
			parts,
			parsedTime;

		parts = splitDateTime(dateTimeString, timeSettings);
		date = $.datepicker._base_parseDate(dateFormat, parts.dateString, dateSettings);

		if (parts.timeString === '') {
			return {
				date: date
			};
		}

		parsedTime = $.datepicker.parseTime(timeFormat, parts.timeString, timeSettings);

		if (!parsedTime) {
			throw 'Wrong time format';
		}

		return {
			date: date,
			timeObj: parsedTime
		};
	};

	/*
	 * Internal function to set timezone_select to the local timezone
	 */
	var selectLocalTimezone = function (tp_inst, date) {
		if (tp_inst && tp_inst.timezone_select) {
			var now = date || new Date();
			tp_inst.timezone_select.val(-now.getTimezoneOffset());
		}
	};

	/*
	 * Create a Singleton Instance
	 */
	$.timepicker = new Timepicker();

	/**
	 * Get the timezone offset as string from a date object (eg '+0530' for UTC+5.5)
	 * @param {number} tzMinutes if not a number, less than -720 (-1200), or greater than 840 (+1400) this value is returned
	 * @param {boolean} iso8601 if true formats in accordance to iso8601 "+12:45"
	 * @return {string}
	 */
	$.timepicker.timezoneOffsetString = function (tzMinutes, iso8601) {
		if (isNaN(tzMinutes) || tzMinutes > 840 || tzMinutes < -720) {
			return tzMinutes;
		}

		var off = tzMinutes,
			minutes = off % 60,
			hours = (off - minutes) / 60,
			iso = iso8601 ? ':' : '',
			tz = (off >= 0 ? '+' : '-') + ('0' + Math.abs(hours)).slice(-2) + iso + ('0' + Math.abs(minutes)).slice(-2);

		if (tz === '+00:00') {
			return 'Z';
		}
		return tz;
	};

	/**
	 * Get the number in minutes that represents a timezone string
	 * @param  {string} tzString formatted like "+0500", "-1245", "Z"
	 * @return {number} the offset minutes or the original string if it doesn't match expectations
	 */
	$.timepicker.timezoneOffsetNumber = function (tzString) {
		var normalized = tzString.toString().replace(':', ''); // excuse any iso8601, end up with "+1245"

		if (normalized.toUpperCase() === 'Z') { // if iso8601 with Z, its 0 minute offset
			return 0;
		}

		if (!/^(\-|\+)\d{4}$/.test(normalized)) { // possibly a user defined tz, so just give it back
			return parseInt(tzString, 10);
		}

		return ((normalized.substr(0, 1) === '-' ? -1 : 1) * // plus or minus
		((parseInt(normalized.substr(1, 2), 10) * 60) + // hours (converted to minutes)
		parseInt(normalized.substr(3, 2), 10))); // minutes
	};

	/**
	 * No way to set timezone in js Date, so we must adjust the minutes to compensate. (think setDate, getDate)
	 * @param  {Date} date
	 * @param  {string} fromTimezone formatted like "+0500", "-1245"
	 * @param  {string} toTimezone formatted like "+0500", "-1245"
	 * @return {Date}
	 */
	$.timepicker.timezoneAdjust = function (date, fromTimezone, toTimezone) {
		var fromTz = $.timepicker.timezoneOffsetNumber(fromTimezone);
		var toTz = $.timepicker.timezoneOffsetNumber(toTimezone);
		if (!isNaN(toTz)) {
			date.setMinutes(date.getMinutes() + (-fromTz) - (-toTz));
		}
		return date;
	};

	/**
	 * Calls `timepicker()` on the `startTime` and `endTime` elements, and configures them to
	 * enforce date range limits.
	 * n.b. The input value must be correctly formatted (reformatting is not supported)
	 * @param  {Element} startTime
	 * @param  {Element} endTime
	 * @param  {Object} options Options for the timepicker() call
	 * @return {jQuery}
	 */
	$.timepicker.timeRange = function (startTime, endTime, options) {
		return $.timepicker.handleRange('timepicker', startTime, endTime, options);
	};

	/**
	 * Calls `datetimepicker` on the `startTime` and `endTime` elements, and configures them to
	 * enforce date range limits.
	 * @param  {Element} startTime
	 * @param  {Element} endTime
	 * @param  {Object} options Options for the `timepicker()` call. Also supports `reformat`,
	 *   a boolean value that can be used to reformat the input values to the `dateFormat`.
	 * @param  {string} method Can be used to specify the type of picker to be added
	 * @return {jQuery}
	 */
	$.timepicker.datetimeRange = function (startTime, endTime, options) {
		$.timepicker.handleRange('datetimepicker', startTime, endTime, options);
	};

	/**
	 * Calls `datepicker` on the `startTime` and `endTime` elements, and configures them to
	 * enforce date range limits.
	 * @param  {Element} startTime
	 * @param  {Element} endTime
	 * @param  {Object} options Options for the `timepicker()` call. Also supports `reformat`,
	 *   a boolean value that can be used to reformat the input values to the `dateFormat`.
	 * @return {jQuery}
	 */
	$.timepicker.dateRange = function (startTime, endTime, options) {
		$.timepicker.handleRange('datepicker', startTime, endTime, options);
	};

	/**
	 * Calls `method` on the `startTime` and `endTime` elements, and configures them to
	 * enforce date range limits.
	 * @param  {string} method Can be used to specify the type of picker to be added
	 * @param  {Element} startTime
	 * @param  {Element} endTime
	 * @param  {Object} options Options for the `timepicker()` call. Also supports `reformat`,
	 *   a boolean value that can be used to reformat the input values to the `dateFormat`.
	 * @return {jQuery}
	 */
	$.timepicker.handleRange = function (method, startTime, endTime, options) {
		options = $.extend({}, {
			minInterval: 0, // min allowed interval in milliseconds
			maxInterval: 0, // max allowed interval in milliseconds
			start: {},      // options for start picker
			end: {}         // options for end picker
		}, options);

		// for the mean time this fixes an issue with calling getDate with timepicker()
		var timeOnly = false;
		if(method === 'timepicker'){
			timeOnly = true;
			method = 'datetimepicker';
		}

		function checkDates(changed, other) {
			var startdt = startTime[method]('getDate'),
				enddt = endTime[method]('getDate'),
				changeddt = changed[method]('getDate');

			if (startdt !== null) {
				var minDate = new Date(startdt.getTime()),
					maxDate = new Date(startdt.getTime());

				minDate.setMilliseconds(minDate.getMilliseconds() + options.minInterval);
				maxDate.setMilliseconds(maxDate.getMilliseconds() + options.maxInterval);

				if (options.minInterval > 0 && minDate > enddt) { // minInterval check
					endTime[method]('setDate', minDate);
				}
				else if (options.maxInterval > 0 && maxDate < enddt) { // max interval check
					endTime[method]('setDate', maxDate);
				}
				else if (startdt > enddt) {
					other[method]('setDate', changeddt);
				}
			}
		}

		function selected(changed, other, option) {
			if (!changed.val()) {
				return;
			}
			var date = changed[method].call(changed, 'getDate');
			if (date !== null && options.minInterval > 0) {
				if (option === 'minDate') {
					date.setMilliseconds(date.getMilliseconds() + options.minInterval);
				}
				if (option === 'maxDate') {
					date.setMilliseconds(date.getMilliseconds() - options.minInterval);
				}
			}

			if (date.getTime) {
				other[method].call(other, 'option', option, date);
			}
		}

		$.fn[method].call(startTime, $.extend({
			timeOnly: timeOnly,
			onClose: function (dateText, inst) {
				checkDates($(this), endTime);
			},
			onSelect: function (selectedDateTime) {
				selected($(this), endTime, 'minDate');
			}
		}, options, options.start));
		$.fn[method].call(endTime, $.extend({
			timeOnly: timeOnly,
			onClose: function (dateText, inst) {
				checkDates($(this), startTime);
			},
			onSelect: function (selectedDateTime) {
				selected($(this), startTime, 'maxDate');
			}
		}, options, options.end));

		checkDates(startTime, endTime);

		selected(startTime, endTime, 'minDate');
		selected(endTime, startTime, 'maxDate');

		return $([startTime.get(0), endTime.get(0)]);
	};

	/**
	 * Log error or data to the console during error or debugging
	 * @param  {Object} err pass any type object to log to the console during error or debugging
	 * @return {void}
	 */
	$.timepicker.log = function () {
		// Older IE (9, maybe 10) throw error on accessing `window.console.log.apply`, so check first.
		if (window.console && window.console.log && window.console.log.apply) {
			window.console.log.apply(window.console, Array.prototype.slice.call(arguments));
		}
	};

	/*
	 * Add util object to allow access to private methods for testability.
	 */
	$.timepicker._util = {
		_extendRemove: extendRemove,
		_isEmptyObject: isEmptyObject,
		_convert24to12: convert24to12,
		_detectSupport: detectSupport,
		_selectLocalTimezone: selectLocalTimezone,
		_computeEffectiveSetting: computeEffectiveSetting,
		_splitDateTime: splitDateTime,
		_parseDateTimeInternal: parseDateTimeInternal
	};

	/*
	 * Microsecond support
	 */
	if (!Date.prototype.getMicroseconds) {
		Date.prototype.microseconds = 0;
		Date.prototype.getMicroseconds = function () { return this.microseconds; };
		Date.prototype.setMicroseconds = function (m) {
			this.setMilliseconds(this.getMilliseconds() + Math.floor(m / 1000));
			this.microseconds = m % 1000;
			return this;
		};
	}

	/*
	 * Keep up with the version
	 */
	$.timepicker.version = "1.6.3";

}));js/wfdropdown.1722265817.js000064400000011121150755146450011006 0ustar00/* ========================================================================
 * Bootstrap: dropdown.js v3.4.1 (adapted to WF prefix)
 * https://getbootstrap.com/docs/3.4/javascript/#dropdowns
 * ========================================================================
 * Copyright 2011-2019 Twitter, Inc.
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * ======================================================================== */


+function ($) {
	'use strict';

	// DROPDOWN CLASS DEFINITION
	// =========================

	var backdrop = '.wf-dropdown-backdrop'
	var toggle   = '[data-toggle="wf-dropdown"]'
	var WFDropdown = function (element) {
		$(element).on('click.bs.wf-dropdown', this.toggle)
	}

	WFDropdown.VERSION = '3.4.1'

	function getParent($this) {
		var selector = $this.attr('data-target')

		if (!selector) {
			selector = $this.attr('href')
			selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
		}

		var $parent = selector !== '#' ? $(document).find(selector) : null

		return $parent && $parent.length ? $parent : $this.parent()
	}

	function clearMenus(e) {
		if (e && e.which === 3) return
		$(backdrop).remove()
		$(toggle).each(function () {
			var $this         = $(this)
			var $parent       = getParent($this)
			var relatedTarget = { relatedTarget: this }

			if (!$parent.hasClass('wf-open')) return

			if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return

			$parent.trigger(e = $.Event('hide.bs.wf-dropdown', relatedTarget))

			if (e.isDefaultPrevented()) return

			$this.attr('aria-expanded', 'false')
			$parent.removeClass('wf-open').trigger($.Event('hidden.bs.wf-dropdown', relatedTarget))
		})
	}

	WFDropdown.prototype.toggle = function (e) {
		var $this = $(this)

		if ($this.is('.wf-disabled, :disabled')) return

		var $parent  = getParent($this)
		var isActive = $parent.hasClass('wf-open')

		clearMenus()

		if (!isActive) {
			if ('ontouchstart' in document.documentElement && !$parent.closest('.wf-navbar-nav').length) {
				// if mobile we use a backdrop because click events don't delegate
				$(document.createElement('div'))
					.addClass('wf-dropdown-backdrop')
					.insertAfter($(this))
					.on('click', clearMenus)
			}

			var relatedTarget = { relatedTarget: this }
			$parent.trigger(e = $.Event('show.bs.wf-dropdown', relatedTarget))

			if (e.isDefaultPrevented()) return

			$this
				.trigger('focus')
				.attr('aria-expanded', 'true')

			$parent
				.toggleClass('wf-open')
				.trigger($.Event('shown.bs.wf-dropdown', relatedTarget))
		}

		return false
	}

	WFDropdown.prototype.keydown = function (e) {
		if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return

		var $this = $(this)

		e.preventDefault()
		e.stopPropagation()

		if ($this.is('.wf-disabled, :disabled')) return

		var $parent  = getParent($this)
		var isActive = $parent.hasClass('wf-open')

		if (!isActive && e.which != 27 || isActive && e.which == 27) {
			if (e.which == 27) $parent.find(toggle).trigger('focus')
			return $this.trigger('click')
		}

		var desc = ' li:not(.wf-disabled):visible a'
		var $items = $parent.find('.wf-dropdown-menu' + desc)

		if (!$items.length) return

		var index = $items.index(e.target)

		if (e.which == 38 && index > 0)                 index--         // up
		if (e.which == 40 && index < $items.length - 1) index++         // down
		if (!~index)                                    index = 0

		$items.eq(index).trigger('focus')
	}


	// DROPDOWN PLUGIN DEFINITION
	// ==========================

	function WFPlugin(option) {
		return this.each(function () {
			var $this = $(this)
			var data  = $this.data('bs.wf-dropdown')

			if (!data) $this.data('bs.wf-dropdown', (data = new WFDropdown(this)))
			if (typeof option == 'string') data[option].call($this)
		})
	}

	var old = $.fn.wfdropdown

	$.fn.wfdropdown             = WFPlugin
	$.fn.wfdropdown.Constructor = WFDropdown


	// DROPDOWN NO CONFLICT
	// ====================

	$.fn.wfdropdown.noConflict = function () {
		$.fn.wfdropdown = old
		return this
	}


	// APPLY TO STANDARD DROPDOWN ELEMENTS
	// ===================================

	$(document)
		.on('click.bs.wf-dropdown.data-api', clearMenus)
		.on('click.bs.wf-dropdown.data-api', '.wf-dropdown form', function (e) { e.stopPropagation() })
		.on('click.bs.wf-dropdown.data-api', toggle, WFDropdown.prototype.toggle)
		.on('keydown.bs.wf-dropdown.data-api', toggle, WFDropdown.prototype.keydown)
		.on('keydown.bs.wf-dropdown.data-api', '.wf-dropdown-menu', WFDropdown.prototype.keydown)

}(jQuery);
js/jquery.colorbox-min.1722265817.js000064400000027172150755146450012560 0ustar00/*!
 Colorbox 1.6.4 (prefixed wf)
 license: MIT
 http://www.jacklmoore.com/colorbox
 */
!function(t,e,i){function n(i,n,o){var h=e.createElement(i);return n&&(h.id=Z+n),o&&(h.style.cssText=o),t(h)}function o(){return i.innerHeight?i.innerHeight:t(i).height()}function h(e,i){i!==Object(i)&&(i={}),this.cache={},this.el=e,this.value=function(e){var n;return void 0===this.cache[e]&&(void 0!==(n=t(this.el).attr("data-cbox-"+e))?this.cache[e]=n:void 0!==i[e]?this.cache[e]=i[e]:void 0!==X[e]&&(this.cache[e]=X[e])),this.cache[e]},this.get=function(e){var i=this.value(e);return t.isFunction(i)?i.call(this.el,this):i}}function r(t){var e=W.length,i=(A+t)%e;return i<0?e+i:i}function a(t,e){return Math.round((/%/.test(t)?("x"===e?E.width():o())/100:1)*parseInt(t,10))}function s(t,e){return t.get("photo")||t.get("photoRegex").test(e)}function l(t,e){return t.get("retinaUrl")&&i.devicePixelRatio>1?e.replace(t.get("photoRegex"),t.get("retinaSuffix")):e}function d(t){"contains"in x[0]&&!x[0].contains(t.target)&&t.target!==v[0]&&(t.stopPropagation(),x.focus())}function c(t){c.str!==t&&(x.add(v).removeClass(c.str).addClass(t),c.str=t)}function g(e){A=0,e&&!1!==e&&"nofollow"!==e?(W=t("."+tt).filter(function(){return new h(this,t.data(this,Y)).get("rel")===e}),-1===(A=W.index(_.el))&&(W=W.add(_.el),A=W.length-1)):W=t(_.el)}function u(i){t(e).trigger(i),at.triggerHandler(i)}function f(i){var o;if(!G){if(o=t(i).data(Y),_=new h(i,o),g(_.get("rel")),!U){U=$=!0,c(_.get("className")),x.css({visibility:"hidden",display:"block",opacity:""}),I=n(st,"LoadedContent","width:0; height:0; overflow:hidden; visibility:hidden"),b.css({width:"",height:""}).append(I),j=T.height()+k.height()+b.outerHeight(!0)-b.height(),D=C.width()+H.width()+b.outerWidth(!0)-b.width(),N=I.outerHeight(!0),z=I.outerWidth(!0);var r=a(_.get("initialWidth"),"x"),s=a(_.get("initialHeight"),"y"),l=_.get("maxWidth"),f=_.get("maxHeight");_.w=Math.max((!1!==l?Math.min(r,a(l,"x")):r)-z-D,0),_.h=Math.max((!1!==f?Math.min(s,a(f,"y")):s)-N-j,0),I.css({width:"",height:_.h}),J.position(),u(et),_.get("onOpen"),O.add(F).hide(),x.focus(),_.get("trapFocus")&&e.addEventListener&&(e.addEventListener("focus",d,!0),at.one(ht,function(){e.removeEventListener("focus",d,!0)})),_.get("returnFocus")&&at.one(ht,function(){t(_.el).focus()})}var p=parseFloat(_.get("opacity"));v.css({opacity:p===p?p:"",cursor:_.get("overlayClose")?"pointer":"",visibility:"visible"}).show(),_.get("closeButton")?B.html(_.get("close")).appendTo(b):B.appendTo("<div/>"),w()}}function p(){x||(V=!1,E=t(i),x=n(st).attr({id:Y,class:!1===t.support.opacity?Z+"IE":"",role:"dialog",tabindex:"-1"}).hide(),v=n(st,"Overlay").hide(),L=t([n(st,"LoadingOverlay")[0],n(st,"LoadingGraphic")[0]]),y=n(st,"Wrapper"),b=n(st,"Content").append(F=n(st,"Title"),R=n(st,"Current"),P=t('<button type="button"/>').attr({id:Z+"Previous"}),K=t('<button type="button"/>').attr({id:Z+"Next"}),S=t('<button type="button"/>').attr({id:Z+"Slideshow"}),L),B=t('<button type="button"/>').attr({id:Z+"Close"}),y.append(n(st).append(n(st,"TopLeft"),T=n(st,"TopCenter"),n(st,"TopRight")),n(st,!1,"clear:left").append(C=n(st,"MiddleLeft"),b,H=n(st,"MiddleRight")),n(st,!1,"clear:left").append(n(st,"BottomLeft"),k=n(st,"BottomCenter"),n(st,"BottomRight"))).find("div div").css({float:"left"}),M=n(st,!1,"position:absolute; width:9999px; visibility:hidden; display:none; max-width:none;"),O=K.add(P).add(R).add(S)),e.body&&!x.parent().length&&t(e.body).append(v,x.append(y,M))}function m(){function i(t){t.which>1||t.shiftKey||t.altKey||t.metaKey||t.ctrlKey||(t.preventDefault(),f(this))}return!!x&&(V||(V=!0,K.click(function(){J.next()}),P.click(function(){J.prev()}),B.click(function(){J.close()}),v.click(function(){_.get("overlayClose")&&J.close()}),t(e).bind("keydown."+Z,function(t){var e=t.keyCode;U&&_.get("escKey")&&27===e&&(t.preventDefault(),J.close()),U&&_.get("arrowKey")&&W[1]&&!t.altKey&&(37===e?(t.preventDefault(),P.click()):39===e&&(t.preventDefault(),K.click()))}),t.isFunction(t.fn.on)?t(e).on("click."+Z,"."+tt,i):t("."+tt).live("click."+Z,i)),!0)}function w(){var e,o,h,r=J.prep,d=++lt;if($=!0,q=!1,u(rt),u(it),_.get("onLoad"),_.h=_.get("height")?a(_.get("height"),"y")-N-j:_.get("innerHeight")&&a(_.get("innerHeight"),"y"),_.w=_.get("width")?a(_.get("width"),"x")-z-D:_.get("innerWidth")&&a(_.get("innerWidth"),"x"),_.mw=_.w,_.mh=_.h,_.get("maxWidth")&&(_.mw=a(_.get("maxWidth"),"x")-z-D,_.mw=_.w&&_.w<_.mw?_.w:_.mw),_.get("maxHeight")&&(_.mh=a(_.get("maxHeight"),"y")-N-j,_.mh=_.h&&_.h<_.mh?_.h:_.mh),e=_.get("href"),Q=setTimeout(function(){L.show()},100),_.get("inline")){var c=t(e).eq(0);h=t("<div>").hide().insertBefore(c),at.one(rt,function(){h.replaceWith(c)}),r(c)}else _.get("iframe")?r(" "):_.get("html")?r(_.get("html")):s(_,e)?(e=l(_,e),q=_.get("createImg"),t(q).addClass(Z+"Photo").bind("error."+Z,function(){r(n(st,"Error").html(_.get("imgError")))}).one("load",function(){d===lt&&setTimeout(function(){var e;_.get("retinaImage")&&i.devicePixelRatio>1&&(q.height=q.height/i.devicePixelRatio,q.width=q.width/i.devicePixelRatio),_.get("scalePhotos")&&(o=function(){q.height-=q.height*e,q.width-=q.width*e},_.mw&&q.width>_.mw&&(e=(q.width-_.mw)/q.width,o()),_.mh&&q.height>_.mh&&(e=(q.height-_.mh)/q.height,o())),_.h&&(q.style.marginTop=Math.max(_.mh-q.height,0)/2+"px"),W[1]&&(_.get("loop")||W[A+1])&&(q.style.cursor="pointer",t(q).bind("click."+Z,function(){J.next()})),q.style.width=q.width+"px",q.style.height=q.height+"px",r(q)},1)}),q.src=e):e&&M.load(e,_.get("data"),function(e,i){d===lt&&r("error"===i?n(st,"Error").html(_.get("xhrError")):t(this).contents())})}var v,x,y,b,T,C,H,k,W,E,I,M,L,F,R,S,K,P,B,O,_,j,D,N,z,A,q,U,$,G,Q,J,V,X={html:!1,photo:!1,iframe:!1,inline:!1,transition:"elastic",speed:300,fadeOut:300,width:!1,initialWidth:"600",innerWidth:!1,maxWidth:!1,height:!1,initialHeight:"450",innerHeight:!1,maxHeight:!1,scalePhotos:!0,scrolling:!0,opacity:.9,preloading:!0,className:!1,overlayClose:!0,escKey:!0,arrowKey:!0,top:!1,bottom:!1,left:!1,right:!1,fixed:!1,data:void 0,closeButton:!0,fastIframe:!0,open:!1,reposition:!0,loop:!0,slideshow:!1,slideshowAuto:!0,slideshowSpeed:2500,slideshowStart:"start slideshow",slideshowStop:"stop slideshow",photoRegex:/\.(gif|png|jp(e|g|eg)|bmp|ico|webp|jxr|svg)((#|\?).*)?$/i,retinaImage:!1,retinaUrl:!1,retinaSuffix:"@2x.$1",current:"image {current} of {total}",previous:"previous",next:"next",close:"close",xhrError:"This content failed to load.",imgError:"This image failed to load.",returnFocus:!0,trapFocus:!0,onOpen:!1,onLoad:!1,onComplete:!1,onCleanup:!1,onClosed:!1,rel:function(){return this.rel},href:function(){return t(this).attr("href")},title:function(){return this.title},createImg:function(){var e=new Image,i=t(this).data("cbox-img-attrs");return"object"==typeof i&&t.each(i,function(t,i){e[t]=i}),e},createIframe:function(){var i=e.createElement("iframe"),n=t(this).data("cbox-iframe-attrs");return"object"==typeof n&&t.each(n,function(t,e){i[t]=e}),"frameBorder"in i&&(i.frameBorder=0),"allowTransparency"in i&&(i.allowTransparency="true"),i.name=(new Date).getTime(),i.allowFullscreen=!0,i}},Y="wfcolorbox",Z="wfcbox",tt=Z+"Element",et=Z+"_open",it=Z+"_load",nt=Z+"_complete",ot=Z+"_cleanup",ht=Z+"_closed",rt=Z+"_purge",at=t("<a/>"),st="div",lt=0,dt={},ct=function(){function t(){clearTimeout(r)}function e(){(_.get("loop")||W[A+1])&&(t(),r=setTimeout(J.next,_.get("slideshowSpeed")))}function i(){S.html(_.get("slideshowStop")).unbind(s).one(s,n),at.bind(nt,e).bind(it,t),x.removeClass(a+"off").addClass(a+"on")}function n(){t(),at.unbind(nt,e).unbind(it,t),S.html(_.get("slideshowStart")).unbind(s).one(s,function(){J.next(),i()}),x.removeClass(a+"on").addClass(a+"off")}function o(){h=!1,S.hide(),t(),at.unbind(nt,e).unbind(it,t),x.removeClass(a+"off "+a+"on")}var h,r,a=Z+"Slideshow_",s="click."+Z;return function(){h?_.get("slideshow")||(at.unbind(ot,o),o()):_.get("slideshow")&&W[1]&&(h=!0,at.one(ot,o),_.get("slideshowAuto")?i():n(),S.show())}}();t[Y]||(t(p),(J=t.fn[Y]=t[Y]=function(e,i){var n=this;return e=e||{},t.isFunction(n)&&(n=t("<a/>"),e.open=!0),n[0]?(p(),m()&&(i&&(e.onComplete=i),n.each(function(){var i=t.data(this,Y)||{};t.data(this,Y,t.extend(i,e))}).addClass(tt),new h(n[0],e).get("open")&&f(n[0])),n):n}).position=function(e,i){function n(){T[0].style.width=k[0].style.width=b[0].style.width=parseInt(x[0].style.width,10)-D+"px",b[0].style.height=C[0].style.height=H[0].style.height=parseInt(x[0].style.height,10)-j+"px"}var h,r,s,l=0,d=0,c=x.offset();if(E.unbind("resize."+Z),x.css({top:-9e4,left:-9e4}),r=E.scrollTop(),s=E.scrollLeft(),_.get("fixed")?(c.top-=r,c.left-=s,x.css({position:"fixed"})):(l=r,d=s,x.css({position:"absolute"})),!1!==_.get("right")?d+=Math.max(E.width()-_.w-z-D-a(_.get("right"),"x"),0):!1!==_.get("left")?d+=a(_.get("left"),"x"):d+=Math.round(Math.max(E.width()-_.w-z-D,0)/2),!1!==_.get("bottom")?l+=Math.max(o()-_.h-N-j-a(_.get("bottom"),"y"),0):!1!==_.get("top")?l+=a(_.get("top"),"y"):l+=Math.round(Math.max(o()-_.h-N-j,0)/2),x.css({top:c.top,left:c.left,visibility:"visible"}),y[0].style.width=y[0].style.height="9999px",h={width:_.w+z+D,height:_.h+N+j,top:l,left:d},e){var g=0;t.each(h,function(t){h[t]===dt[t]||(g=e)}),e=g}dt=h,e||x.css(h),x.dequeue().animate(h,{duration:e||0,complete:function(){n(),$=!1,y[0].style.width=_.w+z+D+"px",y[0].style.height=_.h+N+j+"px",_.get("reposition")&&setTimeout(function(){E.bind("resize."+Z,J.position)},1),t.isFunction(i)&&i()},step:n})},J.resize=function(t){var e;U&&((t=t||{}).width&&(_.w=a(t.width,"x")-z-D),t.innerWidth&&(_.w=a(t.innerWidth,"x")),I.css({width:_.w}),t.height&&(_.h=a(t.height,"y")-N-j),t.innerHeight&&(_.h=a(t.innerHeight,"y")),t.innerHeight||t.height||(e=I.scrollTop(),I.css({height:"auto"}),_.h=I.height()),I.css({height:_.h}),e&&I.scrollTop(e),J.position("none"===_.get("transition")?0:_.get("speed")))},J.prep=function(i){if(U){var o,a="none"===_.get("transition")?0:_.get("speed");I.remove(),(I=n(st,"LoadedContent").append(i)).hide().appendTo(M.show()).css({width:(_.w=_.w||I.width(),_.w=_.mw&&_.mw<_.w?_.mw:_.w,_.w),overflow:_.get("scrolling")?"auto":"hidden"}).css({height:(_.h=_.h||I.height(),_.h=_.mh&&_.mh<_.h?_.mh:_.h,_.h)}).prependTo(b),M.hide(),t(q).css({float:"none"}),c(_.get("className")),o=function(){function i(){!1===t.support.opacity&&x[0].style.removeAttribute("filter")}var n,o,d=W.length;U&&(o=function(){clearTimeout(Q),L.hide(),u(nt),_.get("onComplete")},F.html(_.get("title")).show(),I.show(),d>1?("string"==typeof _.get("current")&&R.html(_.get("current").replace("{current}",A+1).replace("{total}",d)).show(),K[_.get("loop")||A<d-1?"show":"hide"]().html(_.get("next")),P[_.get("loop")||A?"show":"hide"]().html(_.get("previous")),ct(),_.get("preloading")&&t.each([r(-1),r(1)],function(){var i=W[this],n=new h(i,t.data(i,Y)),o=n.get("href");o&&s(n,o)&&(o=l(n,o),e.createElement("img").src=o)})):O.hide(),_.get("iframe")?(n=_.get("createIframe"),_.get("scrolling")||(n.scrolling="no"),t(n).attr({src:_.get("href"),class:Z+"Iframe"}).one("load",o).appendTo(I),at.one(rt,function(){n.src="//about:blank"}),_.get("fastIframe")&&t(n).trigger("load")):o(),"fade"===_.get("transition")?x.fadeTo(a,1,i):i())},"fade"===_.get("transition")?x.fadeTo(a,0,function(){J.position(0,o)}):J.position(a,o)}},J.next=function(){!$&&W[1]&&(_.get("loop")||W[A+1])&&(A=r(1),f(W[A]))},J.prev=function(){!$&&W[1]&&(_.get("loop")||A)&&(A=r(-1),f(W[A]))},J.close=function(){U&&!G&&(G=!0,U=!1,u(ot),_.get("onCleanup"),E.unbind("."+Z),v.fadeTo(_.get("fadeOut")||0,0),x.stop().fadeTo(_.get("fadeOut")||0,0,function(){x.hide(),v.hide(),u(rt),I.remove(),setTimeout(function(){G=!1,u(ht),_.get("onClosed")},1)}))},J.remove=function(){x&&(x.stop(),t[Y].close(),x.stop(!1,!0).remove(),v.remove(),G=!1,x=null,t("."+tt).removeData(Y).removeClass(tt),t(e).unbind("click."+Z).unbind("keydown."+Z))},J.element=function(){return t(_.el)},J.settings=X)}(jQuery,document,window);js/jquery.colorbox.1722265817.js000064400000070765150755146450012005 0ustar00/*!
	Colorbox 1.6.4
	license: MIT
	http://www.jacklmoore.com/colorbox
*/
(function ($, document, window) {
	var
	// Default settings object.
	// See http://jacklmoore.com/colorbox for details.
	defaults = {
		// data sources
		html: false,
		photo: false,
		iframe: false,
		inline: false,

		// behavior and appearance
		transition: "elastic",
		speed: 300,
		fadeOut: 300,
		width: false,
		initialWidth: "600",
		innerWidth: false,
		maxWidth: false,
		height: false,
		initialHeight: "450",
		innerHeight: false,
		maxHeight: false,
		scalePhotos: true,
		scrolling: true,
		opacity: 0.9,
		preloading: true,
		className: false,
		overlayClose: true,
		escKey: true,
		arrowKey: true,
		top: false,
		bottom: false,
		left: false,
		right: false,
		fixed: false,
		data: undefined,
		closeButton: true,
		fastIframe: true,
		open: false,
		reposition: true,
		loop: true,
		slideshow: false,
		slideshowAuto: true,
		slideshowSpeed: 2500,
		slideshowStart: "start slideshow",
		slideshowStop: "stop slideshow",
		photoRegex: /\.(gif|png|jp(e|g|eg)|bmp|ico|webp|jxr|svg)((#|\?).*)?$/i,

		// alternate image paths for high-res displays
		retinaImage: false,
		retinaUrl: false,
		retinaSuffix: '@2x.$1',

		// internationalization
		current: "image {current} of {total}",
		previous: "previous",
		next: "next",
		close: "close",
		xhrError: "This content failed to load.",
		imgError: "This image failed to load.",

		// accessbility
		returnFocus: true,
		trapFocus: true,

		// callbacks
		onOpen: false,
		onLoad: false,
		onComplete: false,
		onCleanup: false,
		onClosed: false,

		rel: function() {
			return this.rel;
		},
		href: function() {
			// using this.href would give the absolute url, when the href may have been inteded as a selector (e.g. '#container')
			return $(this).attr('href');
		},
		title: function() {
			return this.title;
		},
		createImg: function() {
			var img = new Image();
			var attrs = $(this).data('cbox-img-attrs');

			if (typeof attrs === 'object') {
				$.each(attrs, function(key, val){
					img[key] = val;
				});
			}

			return img;
		},
		createIframe: function() {
			var iframe = document.createElement('iframe');
			var attrs = $(this).data('cbox-iframe-attrs');

			if (typeof attrs === 'object') {
				$.each(attrs, function(key, val){
					iframe[key] = val;
				});
			}

			if ('frameBorder' in iframe) {
				iframe.frameBorder = 0;
			}
			if ('allowTransparency' in iframe) {
				iframe.allowTransparency = "true";
			}
			iframe.name = (new Date()).getTime(); // give the iframe a unique name to prevent caching
			iframe.allowFullscreen = true;

			return iframe;
		}
	},

	// Abstracting the HTML and event identifiers for easy rebranding
	colorbox = 'wfcolorbox',
	prefix = 'wfcbox',
	boxElement = prefix + 'Element',

	// Events
	event_open = prefix + '_open',
	event_load = prefix + '_load',
	event_complete = prefix + '_complete',
	event_cleanup = prefix + '_cleanup',
	event_closed = prefix + '_closed',
	event_purge = prefix + '_purge',

	// Cached jQuery Object Variables
	$overlay,
	$box,
	$wrap,
	$content,
	$topBorder,
	$leftBorder,
	$rightBorder,
	$bottomBorder,
	$related,
	$window,
	$loaded,
	$loadingBay,
	$loadingOverlay,
	$title,
	$current,
	$slideshow,
	$next,
	$prev,
	$close,
	$groupControls,
	$events = $('<a/>'), // $({}) would be preferred, but there is an issue with jQuery 1.4.2

	// Variables for cached values or use across multiple functions
	settings,
	interfaceHeight,
	interfaceWidth,
	loadedHeight,
	loadedWidth,
	index,
	photo,
	open,
	active,
	closing,
	loadingTimer,
	publicMethod,
	div = "div",
	requests = 0,
	previousCSS = {},
	init;

	// ****************
	// HELPER FUNCTIONS
	// ****************

	// Convenience function for creating new jQuery objects
	function $tag(tag, id, css) {
		var element = document.createElement(tag);

		if (id) {
			element.id = prefix + id;
		}

		if (css) {
			element.style.cssText = css;
		}

		return $(element);
	}

	// Get the window height using innerHeight when available to avoid an issue with iOS
	// http://bugs.jquery.com/ticket/6724
	function winheight() {
		return window.innerHeight ? window.innerHeight : $(window).height();
	}

	function Settings(element, options) {
		if (options !== Object(options)) {
			options = {};
		}

		this.cache = {};
		this.el = element;

		this.value = function(key) {
			var dataAttr;

			if (this.cache[key] === undefined) {
				dataAttr = $(this.el).attr('data-cbox-'+key);

				if (dataAttr !== undefined) {
					this.cache[key] = dataAttr;
				} else if (options[key] !== undefined) {
					this.cache[key] = options[key];
				} else if (defaults[key] !== undefined) {
					this.cache[key] = defaults[key];
				}
			}

			return this.cache[key];
		};

		this.get = function(key) {
			var value = this.value(key);
			return $.isFunction(value) ? value.call(this.el, this) : value;
		};
	}

	// Determine the next and previous members in a group.
	function getIndex(increment) {
		var
		max = $related.length,
		newIndex = (index + increment) % max;

		return (newIndex < 0) ? max + newIndex : newIndex;
	}

	// Convert '%' and 'px' values to integers
	function setSize(size, dimension) {
		return Math.round((/%/.test(size) ? ((dimension === 'x' ? $window.width() : winheight()) / 100) : 1) * parseInt(size, 10));
	}

	// Checks an href to see if it is a photo.
	// There is a force photo option (photo: true) for hrefs that cannot be matched by the regex.
	function isImage(settings, url) {
		return settings.get('photo') || settings.get('photoRegex').test(url);
	}

	function retinaUrl(settings, url) {
		return settings.get('retinaUrl') && window.devicePixelRatio > 1 ? url.replace(settings.get('photoRegex'), settings.get('retinaSuffix')) : url;
	}

	function trapFocus(e) {
		if ('contains' in $box[0] && !$box[0].contains(e.target) && e.target !== $overlay[0]) {
			e.stopPropagation();
			$box.focus();
		}
	}

	function setClass(str) {
		if (setClass.str !== str) {
			$box.add($overlay).removeClass(setClass.str).addClass(str);
			setClass.str = str;
		}
	}

	function getRelated(rel) {
		index = 0;

		if (rel && rel !== false && rel !== 'nofollow') {
			$related = $('.' + boxElement).filter(function () {
				var options = $.data(this, colorbox);
				var settings = new Settings(this, options);
				return (settings.get('rel') === rel);
			});
			index = $related.index(settings.el);

			// Check direct calls to Colorbox.
			if (index === -1) {
				$related = $related.add(settings.el);
				index = $related.length - 1;
			}
		} else {
			$related = $(settings.el);
		}
	}

	function trigger(event) {
		// for external use
		$(document).trigger(event);
		// for internal use
		$events.triggerHandler(event);
	}

	var slideshow = (function(){
		var active,
			className = prefix + "Slideshow_",
			click = "click." + prefix,
			timeOut;

		function clear () {
			clearTimeout(timeOut);
		}

		function set() {
			if (settings.get('loop') || $related[index + 1]) {
				clear();
				timeOut = setTimeout(publicMethod.next, settings.get('slideshowSpeed'));
			}
		}

		function start() {
			$slideshow
				.html(settings.get('slideshowStop'))
				.unbind(click)
				.one(click, stop);

			$events
				.bind(event_complete, set)
				.bind(event_load, clear);

			$box.removeClass(className + "off").addClass(className + "on");
		}

		function stop() {
			clear();

			$events
				.unbind(event_complete, set)
				.unbind(event_load, clear);

			$slideshow
				.html(settings.get('slideshowStart'))
				.unbind(click)
				.one(click, function () {
					publicMethod.next();
					start();
				});

			$box.removeClass(className + "on").addClass(className + "off");
		}

		function reset() {
			active = false;
			$slideshow.hide();
			clear();
			$events
				.unbind(event_complete, set)
				.unbind(event_load, clear);
			$box.removeClass(className + "off " + className + "on");
		}

		return function(){
			if (active) {
				if (!settings.get('slideshow')) {
					$events.unbind(event_cleanup, reset);
					reset();
				}
			} else {
				if (settings.get('slideshow') && $related[1]) {
					active = true;
					$events.one(event_cleanup, reset);
					if (settings.get('slideshowAuto')) {
						start();
					} else {
						stop();
					}
					$slideshow.show();
				}
			}
		};

	}());


	function launch(element) {
		var options;

		if (!closing) {

			options = $(element).data(colorbox);

			settings = new Settings(element, options);

			getRelated(settings.get('rel'));

			if (!open) {
				open = active = true; // Prevents the page-change action from queuing up if the visitor holds down the left or right keys.

				setClass(settings.get('className'));

				// Show colorbox so the sizes can be calculated in older versions of jQuery
				$box.css({visibility:'hidden', display:'block', opacity:''});

				$loaded = $tag(div, 'LoadedContent', 'width:0; height:0; overflow:hidden; visibility:hidden');
				$content.css({width:'', height:''}).append($loaded);

				// Cache values needed for size calculations
				interfaceHeight = $topBorder.height() + $bottomBorder.height() + $content.outerHeight(true) - $content.height();
				interfaceWidth = $leftBorder.width() + $rightBorder.width() + $content.outerWidth(true) - $content.width();
				loadedHeight = $loaded.outerHeight(true);
				loadedWidth = $loaded.outerWidth(true);

				// Opens inital empty Colorbox prior to content being loaded.
				var initialWidth = setSize(settings.get('initialWidth'), 'x');
				var initialHeight = setSize(settings.get('initialHeight'), 'y');
				var maxWidth = settings.get('maxWidth');
				var maxHeight = settings.get('maxHeight');

				settings.w = Math.max((maxWidth !== false ? Math.min(initialWidth, setSize(maxWidth, 'x')) : initialWidth) - loadedWidth - interfaceWidth, 0);
				settings.h = Math.max((maxHeight !== false ? Math.min(initialHeight, setSize(maxHeight, 'y')) : initialHeight) - loadedHeight - interfaceHeight, 0);

				$loaded.css({width:'', height:settings.h});
				publicMethod.position();

				trigger(event_open);
				settings.get('onOpen');

				$groupControls.add($title).hide();

				$box.focus();

				if (settings.get('trapFocus')) {
					// Confine focus to the modal
					// Uses event capturing that is not supported in IE8-
					if (document.addEventListener) {

						document.addEventListener('focus', trapFocus, true);

						$events.one(event_closed, function () {
							document.removeEventListener('focus', trapFocus, true);
						});
					}
				}

				// Return focus on closing
				if (settings.get('returnFocus')) {
					$events.one(event_closed, function () {
						$(settings.el).focus();
					});
				}
			}

			var opacity = parseFloat(settings.get('opacity'));
			$overlay.css({
				opacity: opacity === opacity ? opacity : '',
				cursor: settings.get('overlayClose') ? 'pointer' : '',
				visibility: 'visible'
			}).show();

			if (settings.get('closeButton')) {
				$close.html(settings.get('close')).appendTo($content);
			} else {
				$close.appendTo('<div/>'); // replace with .detach() when dropping jQuery < 1.4
			}

			load();
		}
	}

	// Colorbox's markup needs to be added to the DOM prior to being called
	// so that the browser will go ahead and load the CSS background images.
	function appendHTML() {
		if (!$box) {
			init = false;
			$window = $(window);
			$box = $tag(div).attr({
				id: colorbox,
				'class': $.support.opacity === false ? prefix + 'IE' : '', // class for optional IE8 & lower targeted CSS.
				role: 'dialog',
				tabindex: '-1'
			}).hide();
			$overlay = $tag(div, "Overlay").hide();
			$loadingOverlay = $([$tag(div, "LoadingOverlay")[0],$tag(div, "LoadingGraphic")[0]]);
			$wrap = $tag(div, "Wrapper");
			$content = $tag(div, "Content").append(
				$title = $tag(div, "Title"),
				$current = $tag(div, "Current"),
				$prev = $('<button type="button"/>').attr({id:prefix+'Previous'}),
				$next = $('<button type="button"/>').attr({id:prefix+'Next'}),
				$slideshow = $('<button type="button"/>').attr({id:prefix+'Slideshow'}),
				$loadingOverlay
			);

			$close = $('<button type="button"/>').attr({id:prefix+'Close'});

			$wrap.append( // The 3x3 Grid that makes up Colorbox
				$tag(div).append(
					$tag(div, "TopLeft"),
					$topBorder = $tag(div, "TopCenter"),
					$tag(div, "TopRight")
				),
				$tag(div, false, 'clear:left').append(
					$leftBorder = $tag(div, "MiddleLeft"),
					$content,
					$rightBorder = $tag(div, "MiddleRight")
				),
				$tag(div, false, 'clear:left').append(
					$tag(div, "BottomLeft"),
					$bottomBorder = $tag(div, "BottomCenter"),
					$tag(div, "BottomRight")
				)
			).find('div div').css({'float': 'left'});

			$loadingBay = $tag(div, false, 'position:absolute; width:9999px; visibility:hidden; display:none; max-width:none;');

			$groupControls = $next.add($prev).add($current).add($slideshow);
		}
		if (document.body && !$box.parent().length) {
			$(document.body).append($overlay, $box.append($wrap, $loadingBay));
		}
	}

	// Add Colorbox's event bindings
	function addBindings() {
		function clickHandler(e) {
			// ignore non-left-mouse-clicks and clicks modified with ctrl / command, shift, or alt.
			// See: http://jacklmoore.com/notes/click-events/
			if (!(e.which > 1 || e.shiftKey || e.altKey || e.metaKey || e.ctrlKey)) {
				e.preventDefault();
				launch(this);
			}
		}

		if ($box) {
			if (!init) {
				init = true;

				// Anonymous functions here keep the public method from being cached, thereby allowing them to be redefined on the fly.
				$next.click(function () {
					publicMethod.next();
				});
				$prev.click(function () {
					publicMethod.prev();
				});
				$close.click(function () {
					publicMethod.close();
				});
				$overlay.click(function () {
					if (settings.get('overlayClose')) {
						publicMethod.close();
					}
				});

				// Key Bindings
				$(document).bind('keydown.' + prefix, function (e) {
					var key = e.keyCode;
					if (open && settings.get('escKey') && key === 27) {
						e.preventDefault();
						publicMethod.close();
					}
					if (open && settings.get('arrowKey') && $related[1] && !e.altKey) {
						if (key === 37) {
							e.preventDefault();
							$prev.click();
						} else if (key === 39) {
							e.preventDefault();
							$next.click();
						}
					}
				});

				if ($.isFunction($.fn.on)) {
					// For jQuery 1.7+
					$(document).on('click.'+prefix, '.'+boxElement, clickHandler);
				} else {
					// For jQuery 1.3.x -> 1.6.x
					// This code is never reached in jQuery 1.9, so do not contact me about 'live' being removed.
					// This is not here for jQuery 1.9, it's here for legacy users.
					$('.'+boxElement).live('click.'+prefix, clickHandler);
				}
			}
			return true;
		}
		return false;
	}

	// Don't do anything if Colorbox already exists.
	if ($[colorbox]) {
		return;
	}

	// Append the HTML when the DOM loads
	$(appendHTML);


	// ****************
	// PUBLIC FUNCTIONS
	// Usage format: $.colorbox.close();
	// Usage from within an iframe: parent.jQuery.colorbox.close();
	// ****************

	publicMethod = $.fn[colorbox] = $[colorbox] = function (options, callback) {
		var settings;
		var $obj = this;

		options = options || {};

		if ($.isFunction($obj)) { // assume a call to $.colorbox
			$obj = $('<a/>');
			options.open = true;
		}

		if (!$obj[0]) { // colorbox being applied to empty collection
			return $obj;
		}

		appendHTML();

		if (addBindings()) {

			if (callback) {
				options.onComplete = callback;
			}

			$obj.each(function () {
				var old = $.data(this, colorbox) || {};
				$.data(this, colorbox, $.extend(old, options));
			}).addClass(boxElement);

			settings = new Settings($obj[0], options);

			if (settings.get('open')) {
				launch($obj[0]);
			}
		}

		return $obj;
	};

	publicMethod.position = function (speed, loadedCallback) {
		var
		css,
		top = 0,
		left = 0,
		offset = $box.offset(),
		scrollTop,
		scrollLeft;

		$window.unbind('resize.' + prefix);

		// remove the modal so that it doesn't influence the document width/height
		$box.css({top: -9e4, left: -9e4});

		scrollTop = $window.scrollTop();
		scrollLeft = $window.scrollLeft();

		if (settings.get('fixed')) {
			offset.top -= scrollTop;
			offset.left -= scrollLeft;
			$box.css({position: 'fixed'});
		} else {
			top = scrollTop;
			left = scrollLeft;
			$box.css({position: 'absolute'});
		}

		// keeps the top and left positions within the browser's viewport.
		if (settings.get('right') !== false) {
			left += Math.max($window.width() - settings.w - loadedWidth - interfaceWidth - setSize(settings.get('right'), 'x'), 0);
		} else if (settings.get('left') !== false) {
			left += setSize(settings.get('left'), 'x');
		} else {
			left += Math.round(Math.max($window.width() - settings.w - loadedWidth - interfaceWidth, 0) / 2);
		}

		if (settings.get('bottom') !== false) {
			top += Math.max(winheight() - settings.h - loadedHeight - interfaceHeight - setSize(settings.get('bottom'), 'y'), 0);
		} else if (settings.get('top') !== false) {
			top += setSize(settings.get('top'), 'y');
		} else {
			top += Math.round(Math.max(winheight() - settings.h - loadedHeight - interfaceHeight, 0) / 2);
		}

		$box.css({top: offset.top, left: offset.left, visibility:'visible'});

		// this gives the wrapper plenty of breathing room so it's floated contents can move around smoothly,
		// but it has to be shrank down around the size of div#colorbox when it's done.  If not,
		// it can invoke an obscure IE bug when using iframes.
		$wrap[0].style.width = $wrap[0].style.height = "9999px";

		function modalDimensions() {
			$topBorder[0].style.width = $bottomBorder[0].style.width = $content[0].style.width = (parseInt($box[0].style.width,10) - interfaceWidth)+'px';
			$content[0].style.height = $leftBorder[0].style.height = $rightBorder[0].style.height = (parseInt($box[0].style.height,10) - interfaceHeight)+'px';
		}

		css = {width: settings.w + loadedWidth + interfaceWidth, height: settings.h + loadedHeight + interfaceHeight, top: top, left: left};

		// setting the speed to 0 if the content hasn't changed size or position
		if (speed) {
			var tempSpeed = 0;
			$.each(css, function(i){
				if (css[i] !== previousCSS[i]) {
					tempSpeed = speed;
					return;
				}
			});
			speed = tempSpeed;
		}

		previousCSS = css;

		if (!speed) {
			$box.css(css);
		}

		$box.dequeue().animate(css, {
			duration: speed || 0,
			complete: function () {
				modalDimensions();

				active = false;

				// shrink the wrapper down to exactly the size of colorbox to avoid a bug in IE's iframe implementation.
				$wrap[0].style.width = (settings.w + loadedWidth + interfaceWidth) + "px";
				$wrap[0].style.height = (settings.h + loadedHeight + interfaceHeight) + "px";

				if (settings.get('reposition')) {
					setTimeout(function () {  // small delay before binding onresize due to an IE8 bug.
						$window.bind('resize.' + prefix, publicMethod.position);
					}, 1);
				}

				if ($.isFunction(loadedCallback)) {
					loadedCallback();
				}
			},
			step: modalDimensions
		});
	};

	publicMethod.resize = function (options) {
		var scrolltop;

		if (open) {
			options = options || {};

			if (options.width) {
				settings.w = setSize(options.width, 'x') - loadedWidth - interfaceWidth;
			}

			if (options.innerWidth) {
				settings.w = setSize(options.innerWidth, 'x');
			}

			$loaded.css({width: settings.w});

			if (options.height) {
				settings.h = setSize(options.height, 'y') - loadedHeight - interfaceHeight;
			}

			if (options.innerHeight) {
				settings.h = setSize(options.innerHeight, 'y');
			}

			if (!options.innerHeight && !options.height) {
				scrolltop = $loaded.scrollTop();
				$loaded.css({height: "auto"});
				settings.h = $loaded.height();
			}

			$loaded.css({height: settings.h});

			if(scrolltop) {
				$loaded.scrollTop(scrolltop);
			}

			publicMethod.position(settings.get('transition') === "none" ? 0 : settings.get('speed'));
		}
	};

	publicMethod.prep = function (object) {
		if (!open) {
			return;
		}

		var callback, speed = settings.get('transition') === "none" ? 0 : settings.get('speed');

		$loaded.remove();

		$loaded = $tag(div, 'LoadedContent').append(object);

		function getWidth() {
			settings.w = settings.w || $loaded.width();
			settings.w = settings.mw && settings.mw < settings.w ? settings.mw : settings.w;
			return settings.w;
		}
		function getHeight() {
			settings.h = settings.h || $loaded.height();
			settings.h = settings.mh && settings.mh < settings.h ? settings.mh : settings.h;
			return settings.h;
		}

		$loaded.hide()
		.appendTo($loadingBay.show())// content has to be appended to the DOM for accurate size calculations.
		.css({width: getWidth(), overflow: settings.get('scrolling') ? 'auto' : 'hidden'})
		.css({height: getHeight()})// sets the height independently from the width in case the new width influences the value of height.
		.prependTo($content);

		$loadingBay.hide();

		// floating the IMG removes the bottom line-height and fixed a problem where IE miscalculates the width of the parent element as 100% of the document width.

		$(photo).css({'float': 'none'});

		setClass(settings.get('className'));

		callback = function () {
			var total = $related.length,
				iframe,
				complete;

			if (!open) {
				return;
			}

			function removeFilter() { // Needed for IE8 in versions of jQuery prior to 1.7.2
				if ($.support.opacity === false) {
					$box[0].style.removeAttribute('filter');
				}
			}

			complete = function () {
				clearTimeout(loadingTimer);
				$loadingOverlay.hide();
				trigger(event_complete);
				settings.get('onComplete');
			};


			$title.html(settings.get('title')).show();
			$loaded.show();

			if (total > 1) { // handle grouping
				if (typeof settings.get('current') === "string") {
					$current.html(settings.get('current').replace('{current}', index + 1).replace('{total}', total)).show();
				}

				$next[(settings.get('loop') || index < total - 1) ? "show" : "hide"]().html(settings.get('next'));
				$prev[(settings.get('loop') || index) ? "show" : "hide"]().html(settings.get('previous'));

				slideshow();

				// Preloads images within a rel group
				if (settings.get('preloading')) {
					$.each([getIndex(-1), getIndex(1)], function(){
						var img,
							i = $related[this],
							settings = new Settings(i, $.data(i, colorbox)),
							src = settings.get('href');

						if (src && isImage(settings, src)) {
							src = retinaUrl(settings, src);
							img = document.createElement('img');
							img.src = src;
						}
					});
				}
			} else {
				$groupControls.hide();
			}

			if (settings.get('iframe')) {

				iframe = settings.get('createIframe');

				if (!settings.get('scrolling')) {
					iframe.scrolling = "no";
				}

				$(iframe)
					.attr({
						src: settings.get('href'),
						'class': prefix + 'Iframe'
					})
					.one('load', complete)
					.appendTo($loaded);

				$events.one(event_purge, function () {
					iframe.src = "//about:blank";
				});

				if (settings.get('fastIframe')) {
					$(iframe).trigger('load');
				}
			} else {
				complete();
			}

			if (settings.get('transition') === 'fade') {
				$box.fadeTo(speed, 1, removeFilter);
			} else {
				removeFilter();
			}
		};

		if (settings.get('transition') === 'fade') {
			$box.fadeTo(speed, 0, function () {
				publicMethod.position(0, callback);
			});
		} else {
			publicMethod.position(speed, callback);
		}
	};

	function load () {
		var href, setResize, prep = publicMethod.prep, $inline, request = ++requests;

		active = true;

		photo = false;

		trigger(event_purge);
		trigger(event_load);
		settings.get('onLoad');

		settings.h = settings.get('height') ?
				setSize(settings.get('height'), 'y') - loadedHeight - interfaceHeight :
				settings.get('innerHeight') && setSize(settings.get('innerHeight'), 'y');

		settings.w = settings.get('width') ?
				setSize(settings.get('width'), 'x') - loadedWidth - interfaceWidth :
				settings.get('innerWidth') && setSize(settings.get('innerWidth'), 'x');

		// Sets the minimum dimensions for use in image scaling
		settings.mw = settings.w;
		settings.mh = settings.h;

		// Re-evaluate the minimum width and height based on maxWidth and maxHeight values.
		// If the width or height exceed the maxWidth or maxHeight, use the maximum values instead.
		if (settings.get('maxWidth')) {
			settings.mw = setSize(settings.get('maxWidth'), 'x') - loadedWidth - interfaceWidth;
			settings.mw = settings.w && settings.w < settings.mw ? settings.w : settings.mw;
		}
		if (settings.get('maxHeight')) {
			settings.mh = setSize(settings.get('maxHeight'), 'y') - loadedHeight - interfaceHeight;
			settings.mh = settings.h && settings.h < settings.mh ? settings.h : settings.mh;
		}

		href = settings.get('href');

		loadingTimer = setTimeout(function () {
			$loadingOverlay.show();
		}, 100);

		if (settings.get('inline')) {
			var $target = $(href).eq(0);
			// Inserts an empty placeholder where inline content is being pulled from.
			// An event is bound to put inline content back when Colorbox closes or loads new content.
			$inline = $('<div>').hide().insertBefore($target);

			$events.one(event_purge, function () {
				$inline.replaceWith($target);
			});

			prep($target);
		} else if (settings.get('iframe')) {
			// IFrame element won't be added to the DOM until it is ready to be displayed,
			// to avoid problems with DOM-ready JS that might be trying to run in that iframe.
			prep(" ");
		} else if (settings.get('html')) {
			prep(settings.get('html'));
		} else if (isImage(settings, href)) {

			href = retinaUrl(settings, href);

			photo = settings.get('createImg');

			$(photo)
			.addClass(prefix + 'Photo')
			.bind('error.'+prefix,function () {
				prep($tag(div, 'Error').html(settings.get('imgError')));
			})
			.one('load', function () {
				if (request !== requests) {
					return;
				}

				// A small pause because some browsers will occasionally report a
				// img.width and img.height of zero immediately after the img.onload fires
				setTimeout(function(){
					var percent;

					if (settings.get('retinaImage') && window.devicePixelRatio > 1) {
						photo.height = photo.height / window.devicePixelRatio;
						photo.width = photo.width / window.devicePixelRatio;
					}

					if (settings.get('scalePhotos')) {
						setResize = function () {
							photo.height -= photo.height * percent;
							photo.width -= photo.width * percent;
						};
						if (settings.mw && photo.width > settings.mw) {
							percent = (photo.width - settings.mw) / photo.width;
							setResize();
						}
						if (settings.mh && photo.height > settings.mh) {
							percent = (photo.height - settings.mh) / photo.height;
							setResize();
						}
					}

					if (settings.h) {
						photo.style.marginTop = Math.max(settings.mh - photo.height, 0) / 2 + 'px';
					}

					if ($related[1] && (settings.get('loop') || $related[index + 1])) {
						photo.style.cursor = 'pointer';

						$(photo).bind('click.'+prefix, function () {
							publicMethod.next();
						});
					}

					photo.style.width = photo.width + 'px';
					photo.style.height = photo.height + 'px';
					prep(photo);
				}, 1);
			});

			photo.src = href;

		} else if (href) {
			$loadingBay.load(href, settings.get('data'), function (data, status) {
				if (request === requests) {
					prep(status === 'error' ? $tag(div, 'Error').html(settings.get('xhrError')) : $(this).contents());
				}
			});
		}
	}

	// Navigates to the next page/image in a set.
	publicMethod.next = function () {
		if (!active && $related[1] && (settings.get('loop') || $related[index + 1])) {
			index = getIndex(1);
			launch($related[index]);
		}
	};

	publicMethod.prev = function () {
		if (!active && $related[1] && (settings.get('loop') || index)) {
			index = getIndex(-1);
			launch($related[index]);
		}
	};

	// Note: to use this within an iframe use the following format: parent.jQuery.colorbox.close();
	publicMethod.close = function () {
		if (open && !closing) {

			closing = true;
			open = false;
			trigger(event_cleanup);
			settings.get('onCleanup');
			$window.unbind('.' + prefix);
			$overlay.fadeTo(settings.get('fadeOut') || 0, 0);

			$box.stop().fadeTo(settings.get('fadeOut') || 0, 0, function () {
				$box.hide();
				$overlay.hide();
				trigger(event_purge);
				$loaded.remove();

				setTimeout(function () {
					closing = false;
					trigger(event_closed);
					settings.get('onClosed');
				}, 1);
			});
		}
	};

	// Removes changes Colorbox made to the document, but does not remove the plugin.
	publicMethod.remove = function () {
		if (!$box) { return; }

		$box.stop();
		$[colorbox].close();
		$box.stop(false, true).remove();
		$overlay.remove();
		closing = false;
		$box = null;
		$('.' + boxElement)
			.removeData(colorbox)
			.removeClass(boxElement);

		$(document).unbind('click.'+prefix).unbind('keydown.'+prefix);
	};

	// A method for fetching the current element Colorbox is referencing.
	// returns a jQuery object.
	publicMethod.element = function () {
		return $(settings.el);
	};

	publicMethod.settings = defaults;

}(jQuery, document, window));
js/jquery.tmpl.min.1722265817.js000064400000013743150755146450011705 0ustar00/*
 * jQuery Templates Plugin 1.0.0pre
 * http://github.com/jquery/jquery-tmpl
 * Requires jQuery 1.4.2
 *
 * Copyright Software Freedom Conservancy, Inc.
 * Dual licensed under the MIT or GPL Version 2 licenses.
 * http://jquery.org/license
 */
(function(a){var r=a.fn.domManip,d="_tmplitem",q=/^[^<]*(<[\w\W]+>)[^>]*$|\{\{\! /,b={},f={},e,p={key:0,data:{}},i=0,c=0,l=[];function g(g,d,h,e){var c={data:e||(e===0||e===false)?e:d?d.data:{},_wrap:d?d._wrap:null,tmpl:null,parent:d||null,nodes:[],calls:u,nest:w,wrap:x,html:v,update:t};g&&a.extend(c,g,{nodes:[],parent:d});if(h){c.tmpl=h;c._ctnt=c._ctnt||c.tmpl(a,c);c.key=++i;(l.length?f:b)[i]=c}return c}a.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(f,d){a.fn[f]=function(n){var g=[],i=a(n),k,h,m,l,j=this.length===1&&this[0].parentNode;e=b||{};if(j&&j.nodeType===11&&j.childNodes.length===1&&i.length===1){i[d](this[0]);g=this}else{for(h=0,m=i.length;h<m;h++){c=h;k=(h>0?this.clone(true):this).get();a(i[h])[d](k);g=g.concat(k)}c=0;g=this.pushStack(g,f,i.selector)}l=e;e=null;a.tmpl.complete(l);return g}});a.fn.extend({tmpl:function(d,c,b){return a.tmpl(this[0],d,c,b)},tmplItem:function(){return a.tmplItem(this[0])},template:function(b){return a.template(b,this[0])},domManip:function(d,m,k){if(d[0]&&a.isArray(d[0])){var g=a.makeArray(arguments),h=d[0],j=h.length,i=0,f;while(i<j&&!(f=a.data(h[i++],"tmplItem")));if(f&&c)g[2]=function(b){a.tmpl.afterManip(this,b,k)};r.apply(this,g)}else r.apply(this,arguments);c=0;!e&&a.tmpl.complete(b);return this}});a.extend({tmpl:function(d,h,e,c){var i,k=!c;if(k){c=p;d=a.template[d]||a.template(null,d);f={}}else if(!d){d=c.tmpl;b[c.key]=c;c.nodes=[];c.wrapped&&n(c,c.wrapped);return a(j(c,null,c.tmpl(a,c)))}if(!d)return[];if(typeof h==="function")h=h.call(c||{});e&&e.wrapped&&n(e,e.wrapped);i=a.isArray(h)?a.map(h,function(a){return a?g(e,c,d,a):null}):[g(e,c,d,h)];return k?a(j(c,null,i)):i},tmplItem:function(b){var c;if(b instanceof a)b=b[0];while(b&&b.nodeType===1&&!(c=a.data(b,"tmplItem"))&&(b=b.parentNode));return c||p},template:function(c,b){if(b){if(typeof b==="string")b=o(b);else if(b instanceof a)b=b[0]||{};if(b.nodeType)b=a.data(b,"tmpl")||a.data(b,"tmpl",o(b.innerHTML));return typeof c==="string"?(a.template[c]=b):b}return c?typeof c!=="string"?a.template(null,c):a.template[c]||a.template(null,q.test(c)?c:a(c)):null},encode:function(a){return(""+a).split("<").join("&lt;").split(">").join("&gt;").split('"').join("&#34;").split("'").join("&#39;")}});a.extend(a.tmpl,{tag:{tmpl:{_default:{$2:"null"},open:"if($notnull_1){__=__.concat($item.nest($1,$2));}"},wrap:{_default:{$2:"null"},open:"$item.calls(__,$1,$2);__=[];",close:"call=$item.calls();__=call._.concat($item.wrap(call,__));"},each:{_default:{$2:"$index, $value"},open:"if($notnull_1){$.each($1a,function($2){with(this){",close:"}});}"},"if":{open:"if(($notnull_1) && $1a){",close:"}"},"else":{_default:{$1:"true"},open:"}else if(($notnull_1) && $1a){"},html:{open:"if($notnull_1){__.push($1a);}"},"=":{_default:{$1:"$data"},open:"if($notnull_1){__.push($.encode($1a));}"},"!":{open:""}},complete:function(){b={}},afterManip:function(f,b,d){var e=b.nodeType===11?a.makeArray(b.childNodes):b.nodeType===1?[b]:[];d.call(f,b);m(e);c++}});function j(e,g,f){var b,c=f?a.map(f,function(a){return typeof a==="string"?e.key?a.replace(/(<\w+)(?=[\s>])(?![^>]*_tmplitem)([^>]*)/g,"$1 "+d+'="'+e.key+'" $2'):a:j(a,e,a._ctnt)}):e;if(g)return c;c=c.join("");c.replace(/^\s*([^<\s][^<]*)?(<[\w\W]+>)([^>]*[^>\s])?\s*$/,function(f,c,e,d){b=a(e).get();m(b);if(c)b=k(c).concat(b);if(d)b=b.concat(k(d))});return b?b:k(c)}function k(c){var b=document.createElement("div");b.innerHTML=c;return a.makeArray(b.childNodes)}function o(b){return new Function("jQuery","$item","var $=jQuery,call,__=[],$data=$item.data;with($data){__.push('"+a.trim(b).replace(/([\\'])/g,"\\$1").replace(/[\r\t\n]/g," ").replace(/\$\{([^\}]*)\}/g,"{{= $1}}").replace(/\{\{(\/?)(\w+|.)(?:\(((?:[^\}]|\}(?!\}))*?)?\))?(?:\s+(.*?)?)?(\(((?:[^\}]|\}(?!\}))*?)\))?\s*\}\}/g,function(m,l,k,g,b,c,d){var j=a.tmpl.tag[k],i,e,f;if(!j)throw"Unknown template tag: "+k;i=j._default||[];if(c&&!/\w$/.test(b)){b+=c;c=""}if(b){b=h(b);d=d?","+h(d)+")":c?")":"";e=c?b.indexOf(".")>-1?b+h(c):"("+b+").call($item"+d:b;f=c?e:"(typeof("+b+")==='function'?("+b+").call($item):("+b+"))"}else f=e=i.$1||"null";g=h(g);return"');"+j[l?"close":"open"].split("$notnull_1").join(b?"typeof("+b+")!=='undefined' && ("+b+")!=null":"true").split("$1a").join(f).split("$1").join(e).split("$2").join(g||i.$2||"")+"__.push('"})+"');}return __;")}function n(c,b){c._wrap=j(c,true,a.isArray(b)?b:[q.test(b)?b:a(b).html()]).join("")}function h(a){return a?a.replace(/\\'/g,"'").replace(/\\\\/g,"\\"):null}function s(b){var a=document.createElement("div");a.appendChild(b.cloneNode(true));return a.innerHTML}function m(o){var n="_"+c,k,j,l={},e,p,h;for(e=0,p=o.length;e<p;e++){if((k=o[e]).nodeType!==1)continue;j=k.getElementsByTagName("*");for(h=j.length-1;h>=0;h--)m(j[h]);m(k)}function m(j){var p,h=j,k,e,m;if(m=j.getAttribute(d)){while(h.parentNode&&(h=h.parentNode).nodeType===1&&!(p=h.getAttribute(d)));if(p!==m){h=h.parentNode?h.nodeType===11?0:h.getAttribute(d)||0:0;if(!(e=b[m])){e=f[m];e=g(e,b[h]||f[h]);e.key=++i;b[i]=e}c&&o(m)}j.removeAttribute(d)}else if(c&&(e=a.data(j,"tmplItem"))){o(e.key);b[e.key]=e;h=a.data(j.parentNode,"tmplItem");h=h?h.key:0}if(e){k=e;while(k&&k.key!=h){k.nodes.push(j);k=k.parent}delete e._ctnt;delete e._wrap;a.data(j,"tmplItem",e)}function o(a){a=a+n;e=l[a]=l[a]||g(e,b[e.parent.key+n]||e.parent)}}}function u(a,d,c,b){if(!a)return l.pop();l.push({_:a,tmpl:d,item:this,data:c,options:b})}function w(d,c,b){return a.tmpl(a.template(d),c,b,this)}function x(b,d){var c=b.options||{};c.wrapped=d;return a.tmpl(a.template(b.tmpl),b.data,c,b.item)}function v(d,c){var b=this._wrap;return a.map(a(a.isArray(b)?b.join(""):b).filter(d||"*"),function(a){return c?a.innerText||a.textContent:a.outerHTML||s(a)})}function t(){var b=this.nodes;a.tmpl(null,null,null,this).insertBefore(b[0]);a(b).remove()}})(jQuery);js/admin.liveTraffic.1722265817.js000064400000071145150755146450012156 0ustar00(function($) {
	var __ = window.wfi18n.__;
	var sprintf = window.wfi18n.sprintf;

	var LISTING_LIMIT = 50;

	LiveTrafficViewModel = function(listings, filters) {
		var self = this;
		var listingIDTable = {};
		self.listings = ko.observableArray(listings);
		self.listings.subscribe(function(items) {
			listingIDTable = {};
			for (var i = 0; i < items.length; i++) {
				listingIDTable[items[i].id()] = 1;
			}
			//console.log(items);
		});
		self.hasListing = function(id) {
			return id in listingIDTable;
		};
		self.filters = ko.observableArray(filters);

		var urlGroupBy = new GroupByModel('url', __('URL'));
		var groupBys = [
			new GroupByModel('type', __('Type')),
			new GroupByModel('user_login', __('Username')),
			new GroupByModel('statusCode', __('HTTP Response Code')),
			new GroupByModel('action', __('Firewall Response'), 'enum', ['ok', 'throttled', 'lockedOut', 'blocked', 'blocked:waf']),
			new GroupByModel('ip', __('IP')),
			urlGroupBy
		];

		self.presetFiltersOptions = ko.observableArray([
			new PresetFilterModel(__('All Hits'), "all", []),
			new PresetFilterModel(__('Humans'), "humans", [new ListingsFilterModel(self, 'type', 'human')]),
			new PresetFilterModel(__('Registered Users'), "users", [new ListingsFilterModel(self, 'userID', '0', '!=')]),
			new PresetFilterModel(__('Crawlers'), "crawlers", [new ListingsFilterModel(self, 'type', 'bot')]),
			new PresetFilterModel(__('Google Crawlers'), "google", [new ListingsFilterModel(self, 'isGoogle', '1')]),
			new PresetFilterModel(__('Pages Not Found'), "404s", [new ListingsFilterModel(self, 'statusCode', '404')]),
			new PresetFilterModel(__('Logins and Logouts'), "logins", [
				new ListingsFilterModel(self, 'action', 'login', 'contains'),
				new ListingsFilterModel(self, 'action', 'logout', 'contains')
			]),
			//new PresetFilterModel('Top Consumers', "top_consumers", [new ListingsFilterModel(self, 'statusCode', '200')], urlGroupBy),
			//new PresetFilterModel('Top 404s', "top_404s", [new ListingsFilterModel(self, 'statusCode', '404')], urlGroupBy),
			new PresetFilterModel(__('Locked Out'), "lockedOut", [new ListingsFilterModel(self, 'action', 'lockedOut')]),
			new PresetFilterModel(__('Blocked'), "blocked", [new ListingsFilterModel(self, 'action', 'blocked', 'contains')]),
			new PresetFilterModel(__('Blocked By Firewall'), "blocked:waf", [new ListingsFilterModel(self, 'action', 'blocked:waf')])
		]);

		self.showAdvancedFilters = ko.observable(false);
		self.showAdvancedFilters.subscribe(function(val) {
			if (val && self.filters().length == 0) {
				self.addFilter();
			}
		});

		self.presetFiltersOptionsText = function(item) {
			return item.text();
		};

		self.selectedPresetFilter = ko.observable();
		self.selectedPresetFilter.subscribe(function(item) {
			var clonedFilters = ko.toJS(item.filters());
			var newFilters = [];
			for (var i = 0; i < clonedFilters.length; i++) {
				newFilters.push(new ListingsFilterModel(self, clonedFilters[i].param, clonedFilters[i].value, clonedFilters[i].operator));
			}
			self.filters(newFilters);
			self.groupBy(item.groupBy());
		});

		self.filters.subscribe(function() {
			self.checkQueryAndReloadListings();
		});

		self.addFilter = function() {
			self.filters.push(new ListingsFilterModel(self));
		};

		self.removeFilter = function(item) {
			self.filters.remove(item);
		};

		var currentFilterQuery = '';
		var getURLEncodedFilters = function() {
			var dataString = '';
			ko.utils.arrayForEach(self.filters(), function(filter) {
				if (filter.getValue() !== false) {
					dataString += filter.urlEncoded() + '&';
				}
			});
			var groupBy = self.groupBy();
			if (groupBy) {
				dataString += 'groupby=' + encodeURIComponent(groupBy.param()) + '&';
			}
			var startDate = self.startDate();
			if (startDate) {
				dataString += 'startDate=' + encodeURIComponent(startDate) + '&';
			}
			var endDate = self.endDate();
			if (endDate) {
				dataString += 'endDate=' + encodeURIComponent(endDate) + '&';
			}
			if (dataString.length > 1) {
				return dataString.substring(0, dataString.length - 1);
			}
			return '';
		};

		self.filterGroupByOptions = ko.observableArray(groupBys);

		self.filterGroupByOptionsText = function(item) {
			return item.text() || item.param();
		};

		self.groupBy = ko.observable();
		self.groupBy.subscribe(function() {
			self.checkQueryAndReloadListings();
		});

		self.startDate = ko.observable();
		self.startDate.subscribe(function() {
			// console.log('start date change ' + self.startDate());
			self.checkQueryAndReloadListings();
		});

		self.endDate = ko.observable();
		self.endDate.subscribe(function() {
			// console.log('end date change ' + self.endDate());
			self.checkQueryAndReloadListings();
		});

		/**
		 * Pulls down fresh traffic data and resets the list.
		 *
		 * @param options
		 */
		self.checkQueryAndReloadListings = function(options) {
			if (currentFilterQuery !== getURLEncodedFilters()) {
				self.reloadListings(options);
			}
		};
		self.reloadListings = function(options) {
			pullDownListings(options, function(listings) {
				var groupByKO = self.groupBy();
				var groupBy = '';
				if (groupByKO) {
					groupBy = groupByKO.param();
					WFAD.mode = 'liveTraffic_paused';
				}
				else {
					WFAD.mode = 'liveTraffic';
				}

				var newListings = [];
				for (var i = 0; i < listings.length; i++) {
					newListings.push(new ListingModel(listings[i], groupBy));
				}
				self.listings(newListings);
			})
		};

		/**
		 * Used in the infinite scroll
		 */
		self.loadNextListings = function(callback) {
			var lastTimestamp = self.filters[0];
			pullDownListings({
				since: lastTimestamp,
				limit: LISTING_LIMIT,
				offset: self.listings().length
			}, function() {
				self.appendListings.apply(this, arguments);
				typeof callback === 'function' && callback.apply(this, arguments);
			});
		};

		self.getCurrentQueryString = function(options) {
			var queryOptions = {
				since: null,
				limit: LISTING_LIMIT,
				offset: 0
			};
			for (var prop in queryOptions) {
				if (queryOptions.hasOwnProperty(prop) && options && prop in options) {
					queryOptions[prop] = options[prop];
				}
			}
			currentFilterQuery = getURLEncodedFilters();
			var data = currentFilterQuery;
			for (prop in queryOptions) {
				if (queryOptions.hasOwnProperty(prop)) {
					var val = queryOptions[prop];
					if (val === null || val === undefined) {
						val = '';
					}
					data += '&' + encodeURIComponent(prop) + '=' + encodeURIComponent(val);
				}
			}
			return data;
		};

		var pullDownListings = function(options, callback) {
			var data = self.getCurrentQueryString(options);

			WFAD.ajax('wordfence_loadLiveTraffic', data, function(response) {
				if (!response || !response.success) {
					return;
				}
				callback && callback(response.data, response);
				self.sql(response.sql);
			});
		};

		self.prependListings = function(listings, response) {
			for (var i = listings.length - 1; i >= 0; i--) {
				// Prevent duplicates
				if (self.hasListing(listings[i].id)) {
					continue;
				}
				var listing = new ListingModel(listings[i]);
				listing.highlighted(true);
				self.listings.unshift(listing);
			}

			//self.listings.sort(function(a, b) {
			//	if (a.ctime() < b.ctime()) {
			//		return 1;
			//	} else if (a.ctime() > b.ctime()) {
			//		return -1;
			//	}
			//	return 0;
			//});
		};

		self.appendListings = function(listings, response) {
			var highlight = 3;
			for (var i = 0; i < listings.length; i++) {
				// Prevent duplicates
				if (self.hasListing(listings[i].id)) {
					continue;
				}
				var listing = new ListingModel(listings[i]);
				listing.highlighted(highlight-- > 0);
				self.listings.push(listing);
			}

			//self.listings.sort(function(a, b) {
			//	if (a.ctime() < b.ctime()) {
			//		return 1;
			//	} else if (a.ctime() > b.ctime()) {
			//		return -1;
			//	}
			//	return 0;
			//});
		};

		self.whitelistWAFParamKey = function(path, paramKey, failedRules) {
			WFAD.ajax('wordfence_whitelistWAFParamKey', {
				path: path,
				paramKey: paramKey,
				failedRules: failedRules
			}, function(response) {

			});
		};

		self.trimIP = function(ip) {
			if (ip && ip.length > 16) {
				return ip.substring(0, 16) + "\u2026";
			}
			return ip;
		};

		$(window).on('wf-live-traffic-ip-blocked', function(e, ip) {
			ko.utils.arrayForEach(self.listings(), function(listing) {
				if (listing.IP() === ip) {
					listing.blocked(true);
				}
			});
		}).on('wf-live-traffic-ip-unblocked', function(e, ip) {
			ko.utils.arrayForEach(self.listings(), function(listing) {
				if (listing.IP() === ip) {
					listing.blocked(false);
				}
			});
		});

		// For debuggering-a-ding
		self.sql = ko.observable('');
	};

	LiveTrafficViewModel.truncateText = function(text, maxLength) {
		maxLength = maxLength || 100;
		if (text && text.length > maxLength) {
			return text.substring(0, Math.round(maxLength)) + "\u2026";
			// return text.substring(0, Math.round(maxLength / 2)) + " ... " + text.substring(text.length - Math.round(maxLength / 2));
		}
		return text;
	};

	var ListingModel = function(data, groupBy) {
		var self = this;

		self.id = ko.observable(0);
		self.ctime = ko.observable(0);
		self.IP = ko.observable('');
		self.jsRun = ko.observable(0);
		self.statusCode = ko.observable(200);
		self.isGoogle = ko.observable(0);
		self.userID = ko.observable(0);
		self.URL = ko.observable('');
		self.referer = ko.observable('');
		self.UA = ko.observable('');
		self.loc = ko.observable();
		self.type = ko.observable('');
		self.blocked = ko.observable(false);
		self.rangeBlocked = ko.observable(false);
		self.ipRangeID = ko.observable(-1);
		self.extReferer = ko.observable();
		self.browser = ko.observable();
		self.user = ko.observable();
		self.hitCount = ko.observable();
		self.username = ko.observable('');

		// New fields/columns
		self.action = ko.observable('');
		self.actionDescription = ko.observable(false);
		self.actionData = ko.observable();

		self.highlighted = ko.observable(false);
		self.showDetails = ko.observable(false);
		self.toggleDetails = function() {
			self.showDetails(!self.showDetails());
		};
		//self.highlighted.subscribe(function(val) {
		//	if (val) {
		//		_classes += ' highlighted';
		//		self.cssClasses(_classes);
		//	} else {
		//		_classes.replace(/  highlighted(\s*|$)/, ' ');
		//		self.cssClasses(_classes);
		//	}
		//});

		for (var prop in data) {
			if (data.hasOwnProperty(prop)) {
				if (prop === 'blocked' || prop === 'rangeBlocked') {
					data[prop] = !!data[prop];
				}
				self[prop] !== undefined && self[prop](data[prop]);
			}
		}

		if (data['lastHit'] !== undefined) {
			self['ctime'](data['lastHit']);
		}

		self.timestamp = ko.pureComputed(function() {
			var date = new Date(self.ctime() * 1000);
			return date.toLocaleDateString() + ' ' + date.toLocaleTimeString();
		}, self);

		// Use the same format as these update.
		self.timeAgo = ko.pureComputed(function() {
			var serverTime = WFAD.serverMicrotime;
			return $(WFAD.showTimestamp(this.ctime(), serverTime)).text();
		}, self);

		self.displayURL = ko.pureComputed(function() {
			return LiveTrafficViewModel.truncateText(self.URL(), 105);
		});

		self.displayURLShort = ko.pureComputed(function() {
			var a = document.createElement('a');
			if (!self.URL()) {
				return '';
			}
			a.href = self.URL();
			if (a.host !== location.host) {
				return LiveTrafficViewModel.truncateText(self.URL(), 30);
			}
			var url = a.pathname + (typeof a.search === 'string' ? a.search : '');
			return LiveTrafficViewModel.truncateText(url, 30);
		});

		self.firewallAction = ko.pureComputed(function() {
			//Grouped by firewall action listing
			if (groupBy == 'action') {
				switch (self.action()) {
					case 'lockedOut':
						return __('Locked out from logging in');
					case 'blocked:waf-always':
						return __('Blocked by the Wordfence Application Firewall and plugin settings');
					case 'blocked:wordfence':
						return __('Blocked by Wordfence plugin settings');
					case 'blocked:wfsnrepeat':
					case 'blocked:wfsn':
						return __('Blocked by the Wordfence Security Network');
					case 'blocked:waf':
						return __('Blocked by the Wordfence Web Application Firewall');
					case 'cbl:redirect':
						return __('Redirected by Country Blocking bypass URL');
					default:
						return __('Blocked by Wordfence');
				}
			}

			//Standard listing
			var desc = '';
			switch (self.action()) {
				case 'lockedOut':
					return __('locked out from logging in');

				case 'blocked:waf-always':
				case 'blocked:wordfence':
				case 'blocked:wfsnrepeat':
					desc = self.actionDescription();
					if (desc && desc.toLowerCase().indexOf('block') === 0) {
						return 'b' + desc.substring(1);
					}
					return sprintf(__('blocked for %s'), desc);

				case 'blocked:wfsn':
					return __('blocked by the Wordfence Security Network');

				case 'blocked:waf':
					var data = self.actionData();
					if (typeof data === 'object') {
						var paramKey = data.paramKey ? WFAD.base64_decode(data.paramKey) : null;
						var paramValue = data.paramKey ? WFAD.base64_decode(data.paramValue) : null;
						// var category = data.category;

						var matches = paramKey !== null && paramKey.match(/([a-z0-9_]+\.[a-z0-9_]+)(?:\[(.+?)\](.*))?/i);
						desc = self.actionDescription();
						if (matches) {
							switch (matches[1]) {
								case 'request.queryString':
									desc = sprintf(__('%s in query string: %s'), self.actionDescription(), matches[2] + '=' + LiveTrafficViewModel.truncateText(encodeURIComponent(paramValue)));
									break;
								case 'request.body':
									desc = sprintf(__('%s in POST body: %s'), self.actionDescription(), matches[2] + '=' + LiveTrafficViewModel.truncateText(encodeURIComponent(paramValue)));
									break;
								case 'request.cookie':
									desc = sprintf(__('%s in cookie: %s'), self.actionDescription(), matches[2] + '=' + LiveTrafficViewModel.truncateText(encodeURIComponent(paramValue)));
									break;
								case 'request.fileNames':
									desc = sprintf(__('%s in file: %s'), self.actionDescription(), matches[2] + '=' + LiveTrafficViewModel.truncateText(encodeURIComponent(paramValue)));
									break;
							}
						}
						if (desc) {
							return sprintf(__('blocked by firewall for %s'), desc);
						}
						if (data.failedRules == 'blocked') {
							return __('blocked by real-time IP blocklist');
						}
						return __('blocked by firewall');
					}
					return sprintf(__('blocked by firewall for %s'), self.actionDescription());
				case 'cbl:redirect':
					desc = self.actionDescription();
					return desc;
			}
			return desc;
		});

		self.cssClasses = ko.pureComputed(function() {
			var classes = 'wf-live-traffic-hit-type';
			if (self.statusCode() == 403 || self.statusCode() == 503) {
				classes += ' wfActionBlocked';
			}
			if (self.statusCode() == 404) {
				classes += ' wf404';
			}
			if (self.jsRun() == 1) {
				classes += ' wfHuman';
			}
			if (self.actionData() && self.actionData().learningMode) {
				classes += ' wfWAFLearningMode';
			}
			if (self.action() == 'loginFailValidUsername' || self.action() == 'loginFailInvalidUsername') {
				classes += ' wfFailedLogin';
			}
			// if (self.highlighted()) {
			// 	classes += ' highlighted';
			// }
			return classes;
		});

		self.typeIconClass = ko.pureComputed(function() {
			var classes = 'wf-live-traffic-type-icon';
			if (self.statusCode() == 403 || self.statusCode() == 503) {
				classes += ' wf-icon-blocked wf-ion-android-cancel';
			} else if (self.statusCode() == 404 || self.action() == 'loginFailValidUsername' || self.action() == 'loginFailInvalidUsername') {
				classes += ' wf-icon-warning wf-ion-alert-circled';
			} else if (self.jsRun() == 1) {
				classes += ' wf-icon-human wf-ion-ios-person';
			} else {
				// classes += ' wf-ion-soup-can';
				classes += ' wf-ion-bug';
			}
			return classes;
		});

		self.typeText = ko.pureComputed(function() {
			var type = '';
			if (self.action() == 'loginFailValidUsername' || self.action() == 'loginFailInvalidUsername') {
				type = __('Failed Login');
			} else if (self.statusCode() == 403 || self.statusCode() == 503) {
				type = __('Blocked');
			} else if (self.statusCode() == 404) {
				type = __('404 Not Found');
			} else if (self.statusCode() == 302) {
				type = __('Redirected');
			} else if (self.jsRun() == 1) {
				type = __('Human');
			} else {
				type = __('Bot');
			}
			return sprintf(__('Type: %s'), type);
		});

		function slideInDrawer() {
			overlayWrapper.fadeIn(400);
			overlay.css({
				right: '-800px'
			})
			.stop()
			.animate({
				right: 0
			}, 500);
		}

		self.showWhoisOverlay = function() {
			slideInDrawer();
			overlayHeader.html($('#wfActEvent_' + self.id()).html());
			overlayBody.html('').css('opacity', 0);

			WFAD.ajax('wordfence_whois', {
				val: self.IP()
			}, function(result) {
				var whoisHTML = WFAD.completeWhois(result, true);
				overlayBody.stop()
				.animate({
					opacity: 1
				}, 200)
				.html('<h4 style=\'margin-top:0;\'>' + __('WHOIS LOOKUP') + '</h4>' + whoisHTML);
				$(window).trigger('wf-live-traffic-overlay-bind', self);
			});
		};

		self.showRecentTraffic = function() {
			slideInDrawer();
			overlayHeader.html($('#wfActEvent_' + self.id()).html());
			overlayBody.html('').css('opacity', 0);

			WFAD.ajax('wordfence_recentTraffic', {
				ip: self.IP()
			}, function(result) {
				overlayBody.stop()
				.animate({
					opacity: 1
				}, 200)
				.html('<h3 style=\'margin-top:0;\'>' + __('Recent Activity') + '</h3>' + result.result);
				$(window).trigger('wf-live-traffic-overlay-bind', self);
				WFAD.avatarLookup();
			});
		};

		/*
			Blocking functions
		*/
		self.unblockIP = function() {
			WFAD.unblockIP(self.IP(), function() {
				$(window).trigger('wf-live-traffic-ip-unblocked', self.IP());
			});
		};
		self.unblockNetwork = function() {
			WFAD.unblockNetwork(self.ipRangeID());
		};
		self.blockIP = function() {
			WFAD.blockIP(self.IP(), __('Manual block by administrator'), function() {
				$(window).trigger('wf-live-traffic-ip-blocked', self.IP());
			});
		};
	};

	var ListingsFilterModel = function(viewModel, param, value, operator) {
		var self = this;
		self.viewModel = viewModel;
		self.param = ko.observable('');
		self.value = ko.observable('');
		self.operator = ko.observable('');

		self.param(param);
		self.value(value);
		self.operator(operator || '=');

		var filterChanged = function() {
			self.viewModel && self.viewModel.checkQueryAndReloadListings && self.viewModel.checkQueryAndReloadListings();
		};
		self.param.subscribe(filterChanged);
		self.operator.subscribe(filterChanged);
		self.value.subscribe(function(value) {
			if (value instanceof FilterParamEnumOptionModel && value.operator()) {
				self.selectedFilterOperatorOptionValue(value.operator());
			}
			filterChanged();
		});

		var equalsOperator = new FilterOperatorModel('=');
		var notEqualsOperator = new FilterOperatorModel('!=', '\u2260');
		var containsOperator = new FilterOperatorModel('contains');
		var matchOperator = new FilterOperatorModel('match');
		self.filterOperatorOptions = ko.observableArray([
			equalsOperator,
			notEqualsOperator,
			containsOperator,
			matchOperator
		]);

		self.filterParamOptions = ko.observableArray([
			new FilterParamModel('type', __('Type'), 'enum', [
				new FilterParamEnumOptionModel('human', __('Human')),
				new FilterParamEnumOptionModel('bot', __('Bot'))
			]),
			new FilterParamModel('user_login', __('Username')),
			new FilterParamModel('userID', __('User ID')),
			new FilterParamModel('isGoogle', __('Google Bot'), 'bool'),
			new FilterParamModel('ip', __('IP')),
			new FilterParamModel('ua', __('User Agent')),
			new FilterParamModel('referer', __('Referer')),
			new FilterParamModel('url', __('URL')),
			new FilterParamModel('statusCode', __('HTTP Response Code')),
			new FilterParamModel('action', __('Firewall Response'), 'enum', [
				new FilterParamEnumOptionModel('', __('OK')),
				new FilterParamEnumOptionModel('throttled', __('Throttled')),
				new FilterParamEnumOptionModel('lockedOut', __('Locked Out')),
				new FilterParamEnumOptionModel('blocked', __('Blocked'), containsOperator),
				new FilterParamEnumOptionModel('blocked:waf', __('Blocked WAF'))
			]),
			new FilterParamModel('action', __('Logins'), 'enum', [
				new FilterParamEnumOptionModel('loginOK', __('Logged In')),
				new FilterParamEnumOptionModel('loginFail', __('Failed Login')),
				new FilterParamEnumOptionModel('loginFailInvalidUsername', __('Failed Login: Invalid Username')),
				new FilterParamEnumOptionModel('loginFailValidUsername', __('Failed Login: Valid Username'))
			]),
			new FilterParamModel('action', __('Security Event'))
		]);

		self.filterParamOptionsText = function(item) {
			return item.text() || item.param();
		};

		self.selectedFilterParamOptionValue = ko.observable();
		self.selectedFilterParamOptionValue.subscribe(function(item) {
			self.param(item && item.param ? item.param() : '');
		});

		ko.utils.arrayForEach(self.filterParamOptions(), function(item) {
			if (self.param() == item.param()) {
				switch (item.type()) {
					case 'enum':
						// console.log(self.param(), item.param(), self.value(), values);
						switch (self.operator()) {
							case '=':
								ko.utils.arrayForEach(item.values(), function(enumOption) {
									if (enumOption.value() == self.value()) {
										self.selectedFilterParamOptionValue(item);
									}
								});
								break;
						}
						break;

					default:
						self.selectedFilterParamOptionValue(item);
						break;
				}
			}
		});

		self.filterOperatorOptionsText = function(item) {
			return item.text() || item.operator();
		};

		self.selectedFilterOperatorOptionValue = ko.observable();
		self.selectedFilterOperatorOptionValue.subscribe(function(item) {
			self.operator(item.operator());
		});

		ko.utils.arrayForEach(self.filterOperatorOptions(), function(item) {
			if (self.operator() == item.operator()) {
				self.selectedFilterOperatorOptionValue(item);
			}
		});

		self.getValue = function() {
			var value = self.value() instanceof FilterParamEnumOptionModel ? self.value().value() : self.value();
			return (typeof value === 'string' || typeof value === 'number') ? value : false;
		};
		self.urlEncoded = function() {
			var value = self.getValue();
			return 'param[]=' + encodeURIComponent(self.param()) + '&value[]=' + encodeURIComponent(value) +
				'&operator[]=' + encodeURIComponent(self.operator());
		};
	};

	var PresetFilterModel = function(text, value, filters, groupBy) {
		this.text = ko.observable('');
		this.value = ko.observable('');
		this.filters = ko.observableArray(filters);
		this.groupBy = ko.observable(groupBy);

		this.text(text);
		this.value(value);
	};

	var FilterParamModel = function(param, text, type, values) {
		this.text = ko.observable('');
		this.param = ko.observable('');
		this.type = ko.observable('');
		this.values = ko.observableArray(values);

		this.text(text);
		this.param(param);
		this.type(type || 'text');

		this.optionsText = function(item) {
			if (item instanceof FilterParamEnumOptionModel) {
				return item.label() || item.value();
			}
			return item;
		}
	};

	var FilterParamEnumOptionModel = function(value, label, operator) {
		this.value = ko.observable('');
		this.label = ko.observable('');
		this.operator = ko.observable('');

		this.value = ko.observable(value);
		this.label = ko.observable(label);
		this.operator = ko.observable(operator);

		this.toString = function() {
			return this.value();
		}
	};

	var FilterOperatorModel = function(operator, text) {
		this.text = ko.observable('');
		this.operator = ko.observable('');

		this.text(text);
		this.operator(operator);
	};

	var GroupByModel = function(param, text) {
		this.text = ko.observable('');
		this.param = ko.observable('');

		this.text(text);
		this.param(param);
	};

	ko.bindingHandlers.datetimepicker = {
		init: function(element, valueAccessor, allBindingsAccessor) {
			//initialize datepicker with some optional options
			var options = allBindingsAccessor().datepickerOptions || {},
				$el = $(element);

			$el.datetimepicker(options);

			//handle the field changing by registering datepicker's changeDate event
			ko.utils.registerEventHandler(element, "changeDate", function() {
				var observable = valueAccessor();
				observable($el.datetimepicker("getDate"));
			});

			//handle disposal (if KO removes by the template binding)
			ko.utils.domNodeDisposal.addDisposeCallback(element, function() {
				$el.datetimepicker("destroy");
			});

		},
		update: function(element, valueAccessor) {
			var value = ko.utils.unwrapObservable(valueAccessor()),
				$el = $(element);

			//handle date data coming via json from Microsoft
			if (String(value).indexOf('/Date(') == 0) {
				value = new Date(parseInt(value.replace(/\/Date\((.*?)\)\//gi, "$1")));
			}

			var current = $el.datetimepicker("getDate");

			if (value - current !== 0) {
				$el.datetimepicker("setDate", value);
			}
		}
	};

	var overlayWrapper = null,
		overlay = null,
		overlayCloseButton = null,
		overlayHeader = null,
		overlayBody = null;
	$(function() {

		var liveTrafficWrapper = $('#wf-live-traffic');
		$('#wf-lt-preset-filters').wfselect2({
			templateSelection: function(value) {
				return $('<span><em>' + __('Filter Traffic') + '</em>: ' + value.text + '</span>');
			}
		});

		overlayWrapper = $('#wf-live-traffic-util-overlay-wrapper').on('click', function(evt) {
			if (evt.target === this) {
				overlayCloseButton.trigger('click');
			}
		});
		overlay = overlayWrapper.find('.wf-live-traffic-util-overlay');
		overlayCloseButton = overlayWrapper.find('.wf-live-traffic-util-overlay-close').on('click', function() {
			overlayWrapper.fadeOut(250);
			overlay
			.stop()
			.animate({
				right: '-800px'
			}, 250);
			overlayHeader.html('');
			overlayBody.html('').css('opacity', 0);
			$(window).trigger('wf-live-traffic-overlay-unbind');
		});
		overlayHeader = overlayWrapper.find('.wf-live-traffic-util-overlay-header');
		overlayBody = overlayWrapper.find('.wf-live-traffic-util-overlay-body');
		$([overlayHeader, overlayBody]).on('click', function() {
			return false;
		});

		// liveTrafficWrapper.find('#wf-lt-advanced-filters select').wfselect2({
		//
		// });

		WFAD.wfLiveTraffic = new LiveTrafficViewModel();
		ko.applyBindings(WFAD.wfLiveTraffic, liveTrafficWrapper.get(0));
		liveTrafficWrapper.find('form').submit();
		WFAD.mode = 'liveTraffic';

		var legendWrapper = $('#wf-live-traffic-legend-wrapper');
		var placeholder = $('#wf-live-traffic-legend-placeholder');
		var legend = $('#wf-live-traffic-legend');
		var adminBar = $('#wpadminbar');
		var liveTrafficListings = $('#wf-lt-listings');
		var groupedListings = $('div#wf-live-traffic-group-by'); 

		var hasScrolled = false;
		var loadingListings = false;
		$(window).on('scroll', function() {
			var win = $(this);
			var needsSticky = (WFAD.isSmallScreen ? (legendWrapper.offset().top < win.scrollTop() + 10) : (legendWrapper.offset().top < win.scrollTop() + adminBar.outerHeight() + 10));
			if (needsSticky) {
				var legendWidth = legend.width();
				var legendHeight = legend.height();

				legend.addClass('sticky');
				legend.css('width', legendWidth);
				legend.css('height', legendHeight);
				placeholder.addClass('sticky');
				placeholder.css('width', legendWidth);
				placeholder.css('height', legendHeight);
			} else {
				legend.removeClass('sticky');
				legend.css('width', 'auto');
				legend.css('height', 'auto');
				placeholder.removeClass('sticky');
			}

			var firstLTRow = liveTrafficListings.children().filter(':visible').first();
			if ((firstLTRow.length > 0 && firstLTRow.offset().top + firstLTRow.height() < win.scrollTop() + adminBar.outerHeight() + 20) ||
				(groupedListings.filter(':visible').length > 0)) {
				if (WFAD.mode != 'liveTraffic_paused') {
					WFAD.mode = 'liveTraffic_paused';
				}
			} else {
				if (WFAD.mode != 'liveTraffic') {
					WFAD.mode = 'liveTraffic';
				}
			}

			// console.log(win.scrollTop() + window.innerHeight, liveTrafficWrapper.outerHeight() + liveTrafficWrapper.offset().top);
			var currentScrollBottom = win.scrollTop() + window.innerHeight;
			var scrollThreshold = liveTrafficWrapper.outerHeight() + liveTrafficWrapper.offset().top;
			if (hasScrolled && !loadingListings && currentScrollBottom >= scrollThreshold) {
				// console.log('infinite scroll');

				loadingListings = true;
				hasScrolled = false;
				WFAD.wfLiveTraffic.loadNextListings(function() {
					loadingListings = false;
					WFAD.reverseLookupIPs();
					WFAD.avatarLookup();
				});
			} else if (currentScrollBottom < scrollThreshold) {
				hasScrolled = true;
				// console.log('no infinite scroll');
			}
		})
		.on('wf-live-traffic-overlay-bind', function(e, item) {
			ko.applyBindings(item, overlayHeader.get(0));
		})
		.on('wf-live-traffic-overlay-unbind', function(e, item) {
			ko.cleanNode(overlayHeader.get(0));
		});

		$([liveTrafficWrapper.find('.wf-filtered-traffic'), overlayWrapper]).tooltip({
			tooltipClass: "wf-tooltip",
			track: true
		});
	});
})
(jQuery);
js/chart.umd.1722265817.js000064400000614666150755146450010531 0ustar00/*!
 * Chart.js v4.2.1
 * https://www.chartjs.org
 * (c) 2023 Chart.js Contributors
 * Released under the MIT License
 */
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Chart=e()}(this,(function(){"use strict";var t=Object.freeze({__proto__:null,get Colors(){return jo},get Decimation(){return Uo},get Filler(){return ha},get Legend(){return fa},get SubTitle(){return ba},get Title(){return pa},get Tooltip(){return La}});function e(){}const i=(()=>{let t=0;return()=>t++})();function s(t){return null==t}function n(t){if(Array.isArray&&Array.isArray(t))return!0;const e=Object.prototype.toString.call(t);return"[object"===e.slice(0,7)&&"Array]"===e.slice(-6)}function o(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)}function a(t){return("number"==typeof t||t instanceof Number)&&isFinite(+t)}function r(t,e){return a(t)?t:e}function l(t,e){return void 0===t?e:t}const h=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100:+t/e,c=(t,e)=>"string"==typeof t&&t.endsWith("%")?parseFloat(t)/100*e:+t;function d(t,e,i){if(t&&"function"==typeof t.call)return t.apply(i,e)}function u(t,e,i,s){let a,r,l;if(n(t))if(r=t.length,s)for(a=r-1;a>=0;a--)e.call(i,t[a],a);else for(a=0;a<r;a++)e.call(i,t[a],a);else if(o(t))for(l=Object.keys(t),r=l.length,a=0;a<r;a++)e.call(i,t[l[a]],l[a])}function f(t,e){let i,s,n,o;if(!t||!e||t.length!==e.length)return!1;for(i=0,s=t.length;i<s;++i)if(n=t[i],o=e[i],n.datasetIndex!==o.datasetIndex||n.index!==o.index)return!1;return!0}function g(t){if(n(t))return t.map(g);if(o(t)){const e=Object.create(null),i=Object.keys(t),s=i.length;let n=0;for(;n<s;++n)e[i[n]]=g(t[i[n]]);return e}return t}function p(t){return-1===["__proto__","prototype","constructor"].indexOf(t)}function m(t,e,i,s){if(!p(t))return;const n=e[t],a=i[t];o(n)&&o(a)?b(n,a,s):e[t]=g(a)}function b(t,e,i){const s=n(e)?e:[e],a=s.length;if(!o(t))return t;const r=(i=i||{}).merger||m;let l;for(let e=0;e<a;++e){if(l=s[e],!o(l))continue;const n=Object.keys(l);for(let e=0,s=n.length;e<s;++e)r(n[e],t,l,i)}return t}function x(t,e){return b(t,e,{merger:_})}function _(t,e,i){if(!p(t))return;const s=e[t],n=i[t];o(s)&&o(n)?x(s,n):Object.prototype.hasOwnProperty.call(e,t)||(e[t]=g(n))}const y={"":t=>t,x:t=>t.x,y:t=>t.y};function v(t){const e=t.split("."),i=[];let s="";for(const t of e)s+=t,s.endsWith("\\")?s=s.slice(0,-1)+".":(i.push(s),s="");return i}function M(t,e){const i=y[e]||(y[e]=function(t){const e=v(t);return t=>{for(const i of e){if(""===i)break;t=t&&t[i]}return t}}(e));return i(t)}function w(t){return t.charAt(0).toUpperCase()+t.slice(1)}const k=t=>void 0!==t,S=t=>"function"==typeof t,P=(t,e)=>{if(t.size!==e.size)return!1;for(const i of t)if(!e.has(i))return!1;return!0};function D(t){return"mouseup"===t.type||"click"===t.type||"contextmenu"===t.type}const C=Math.PI,O=2*C,A=O+C,T=Number.POSITIVE_INFINITY,L=C/180,E=C/2,R=C/4,I=2*C/3,z=Math.log10,F=Math.sign;function V(t,e,i){return Math.abs(t-e)<i}function B(t){const e=Math.round(t);t=V(t,e,t/1e3)?e:t;const i=Math.pow(10,Math.floor(z(t))),s=t/i;return(s<=1?1:s<=2?2:s<=5?5:10)*i}function N(t){const e=[],i=Math.sqrt(t);let s;for(s=1;s<i;s++)t%s==0&&(e.push(s),e.push(t/s));return i===(0|i)&&e.push(i),e.sort(((t,e)=>t-e)).pop(),e}function W(t){return!isNaN(parseFloat(t))&&isFinite(t)}function H(t,e){const i=Math.round(t);return i-e<=t&&i+e>=t}function j(t,e,i){let s,n,o;for(s=0,n=t.length;s<n;s++)o=t[s][i],isNaN(o)||(e.min=Math.min(e.min,o),e.max=Math.max(e.max,o))}function $(t){return t*(C/180)}function Y(t){return t*(180/C)}function U(t){if(!a(t))return;let e=1,i=0;for(;Math.round(t*e)/e!==t;)e*=10,i++;return i}function X(t,e){const i=e.x-t.x,s=e.y-t.y,n=Math.sqrt(i*i+s*s);let o=Math.atan2(s,i);return o<-.5*C&&(o+=O),{angle:o,distance:n}}function q(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function K(t,e){return(t-e+A)%O-C}function G(t){return(t%O+O)%O}function Z(t,e,i,s){const n=G(t),o=G(e),a=G(i),r=G(o-n),l=G(a-n),h=G(n-o),c=G(n-a);return n===o||n===a||s&&o===a||r>l&&h<c}function J(t,e,i){return Math.max(e,Math.min(i,t))}function Q(t){return J(t,-32768,32767)}function tt(t,e,i,s=1e-6){return t>=Math.min(e,i)-s&&t<=Math.max(e,i)+s}function et(t,e,i){i=i||(i=>t[i]<e);let s,n=t.length-1,o=0;for(;n-o>1;)s=o+n>>1,i(s)?o=s:n=s;return{lo:o,hi:n}}const it=(t,e,i,s)=>et(t,i,s?s=>{const n=t[s][e];return n<i||n===i&&t[s+1][e]===i}:s=>t[s][e]<i),st=(t,e,i)=>et(t,i,(s=>t[s][e]>=i));function nt(t,e,i){let s=0,n=t.length;for(;s<n&&t[s]<e;)s++;for(;n>s&&t[n-1]>i;)n--;return s>0||n<t.length?t.slice(s,n):t}const ot=["push","pop","shift","splice","unshift"];function at(t,e){t._chartjs?t._chartjs.listeners.push(e):(Object.defineProperty(t,"_chartjs",{configurable:!0,enumerable:!1,value:{listeners:[e]}}),ot.forEach((e=>{const i="_onData"+w(e),s=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value(...e){const n=s.apply(this,e);return t._chartjs.listeners.forEach((t=>{"function"==typeof t[i]&&t[i](...e)})),n}})})))}function rt(t,e){const i=t._chartjs;if(!i)return;const s=i.listeners,n=s.indexOf(e);-1!==n&&s.splice(n,1),s.length>0||(ot.forEach((e=>{delete t[e]})),delete t._chartjs)}function lt(t){const e=new Set;let i,s;for(i=0,s=t.length;i<s;++i)e.add(t[i]);return e.size===s?t:Array.from(e)}const ht="undefined"==typeof window?function(t){return t()}:window.requestAnimationFrame;function ct(t,e){let i=[],s=!1;return function(...n){i=n,s||(s=!0,ht.call(window,(()=>{s=!1,t.apply(e,i)})))}}function dt(t,e){let i;return function(...s){return e?(clearTimeout(i),i=setTimeout(t,e,s)):t.apply(this,s),e}}const ut=t=>"start"===t?"left":"end"===t?"right":"center",ft=(t,e,i)=>"start"===t?e:"end"===t?i:(e+i)/2,gt=(t,e,i,s)=>t===(s?"left":"right")?i:"center"===t?(e+i)/2:e;function pt(t,e,i){const s=e.length;let n=0,o=s;if(t._sorted){const{iScale:a,_parsed:r}=t,l=a.axis,{min:h,max:c,minDefined:d,maxDefined:u}=a.getUserBounds();d&&(n=J(Math.min(it(r,a.axis,h).lo,i?s:it(e,l,a.getPixelForValue(h)).lo),0,s-1)),o=u?J(Math.max(it(r,a.axis,c,!0).hi+1,i?0:it(e,l,a.getPixelForValue(c),!0).hi+1),n,s)-n:s-n}return{start:n,count:o}}function mt(t){const{xScale:e,yScale:i,_scaleRanges:s}=t,n={xmin:e.min,xmax:e.max,ymin:i.min,ymax:i.max};if(!s)return t._scaleRanges=n,!0;const o=s.xmin!==e.min||s.xmax!==e.max||s.ymin!==i.min||s.ymax!==i.max;return Object.assign(s,n),o}class bt{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(t,e,i,s){const n=e.listeners[s],o=e.duration;n.forEach((s=>s({chart:t,initial:e.initial,numSteps:o,currentStep:Math.min(i-e.start,o)})))}_refresh(){this._request||(this._running=!0,this._request=ht.call(window,(()=>{this._update(),this._request=null,this._running&&this._refresh()})))}_update(t=Date.now()){let e=0;this._charts.forEach(((i,s)=>{if(!i.running||!i.items.length)return;const n=i.items;let o,a=n.length-1,r=!1;for(;a>=0;--a)o=n[a],o._active?(o._total>i.duration&&(i.duration=o._total),o.tick(t),r=!0):(n[a]=n[n.length-1],n.pop());r&&(s.draw(),this._notify(s,i,t,"progress")),n.length||(i.running=!1,this._notify(s,i,t,"complete"),i.initial=!1),e+=n.length})),this._lastDate=t,0===e&&(this._running=!1)}_getAnims(t){const e=this._charts;let i=e.get(t);return i||(i={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},e.set(t,i)),i}listen(t,e,i){this._getAnims(t).listeners[e].push(i)}add(t,e){e&&e.length&&this._getAnims(t).items.push(...e)}has(t){return this._getAnims(t).items.length>0}start(t){const e=this._charts.get(t);e&&(e.running=!0,e.start=Date.now(),e.duration=e.items.reduce(((t,e)=>Math.max(t,e._duration)),0),this._refresh())}running(t){if(!this._running)return!1;const e=this._charts.get(t);return!!(e&&e.running&&e.items.length)}stop(t){const e=this._charts.get(t);if(!e||!e.items.length)return;const i=e.items;let s=i.length-1;for(;s>=0;--s)i[s].cancel();e.items=[],this._notify(t,e,Date.now(),"complete")}remove(t){return this._charts.delete(t)}}var xt=new bt;
/*!
 * @kurkle/color v0.3.0
 * https://github.com/kurkle/color#readme
 * (c) 2022 Jukka Kurkela
 * Released under the MIT License
 */function _t(t){return t+.5|0}const yt=(t,e,i)=>Math.max(Math.min(t,i),e);function vt(t){return yt(_t(2.55*t),0,255)}function Mt(t){return yt(_t(255*t),0,255)}function wt(t){return yt(_t(t/2.55)/100,0,1)}function kt(t){return yt(_t(100*t),0,100)}const St={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},Pt=[..."0123456789ABCDEF"],Dt=t=>Pt[15&t],Ct=t=>Pt[(240&t)>>4]+Pt[15&t],Ot=t=>(240&t)>>4==(15&t);function At(t){var e=(t=>Ot(t.r)&&Ot(t.g)&&Ot(t.b)&&Ot(t.a))(t)?Dt:Ct;return t?"#"+e(t.r)+e(t.g)+e(t.b)+((t,e)=>t<255?e(t):"")(t.a,e):void 0}const Tt=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function Lt(t,e,i){const s=e*Math.min(i,1-i),n=(e,n=(e+t/30)%12)=>i-s*Math.max(Math.min(n-3,9-n,1),-1);return[n(0),n(8),n(4)]}function Et(t,e,i){const s=(s,n=(s+t/60)%6)=>i-i*e*Math.max(Math.min(n,4-n,1),0);return[s(5),s(3),s(1)]}function Rt(t,e,i){const s=Lt(t,1,.5);let n;for(e+i>1&&(n=1/(e+i),e*=n,i*=n),n=0;n<3;n++)s[n]*=1-e-i,s[n]+=e;return s}function It(t){const e=t.r/255,i=t.g/255,s=t.b/255,n=Math.max(e,i,s),o=Math.min(e,i,s),a=(n+o)/2;let r,l,h;return n!==o&&(h=n-o,l=a>.5?h/(2-n-o):h/(n+o),r=function(t,e,i,s,n){return t===n?(e-i)/s+(e<i?6:0):e===n?(i-t)/s+2:(t-e)/s+4}(e,i,s,h,n),r=60*r+.5),[0|r,l||0,a]}function zt(t,e,i,s){return(Array.isArray(e)?t(e[0],e[1],e[2]):t(e,i,s)).map(Mt)}function Ft(t,e,i){return zt(Lt,t,e,i)}function Vt(t){return(t%360+360)%360}function Bt(t){const e=Tt.exec(t);let i,s=255;if(!e)return;e[5]!==i&&(s=e[6]?vt(+e[5]):Mt(+e[5]));const n=Vt(+e[2]),o=+e[3]/100,a=+e[4]/100;return i="hwb"===e[1]?function(t,e,i){return zt(Rt,t,e,i)}(n,o,a):"hsv"===e[1]?function(t,e,i){return zt(Et,t,e,i)}(n,o,a):Ft(n,o,a),{r:i[0],g:i[1],b:i[2],a:s}}const Nt={x:"dark",Z:"light",Y:"re",X:"blu",W:"gr",V:"medium",U:"slate",A:"ee",T:"ol",S:"or",B:"ra",C:"lateg",D:"ights",R:"in",Q:"turquois",E:"hi",P:"ro",O:"al",N:"le",M:"de",L:"yello",F:"en",K:"ch",G:"arks",H:"ea",I:"ightg",J:"wh"},Wt={OiceXe:"f0f8ff",antiquewEte:"faebd7",aqua:"ffff",aquamarRe:"7fffd4",azuY:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"0",blanKedOmond:"ffebcd",Xe:"ff",XeviTet:"8a2be2",bPwn:"a52a2a",burlywood:"deb887",caMtXe:"5f9ea0",KartYuse:"7fff00",KocTate:"d2691e",cSO:"ff7f50",cSnflowerXe:"6495ed",cSnsilk:"fff8dc",crimson:"dc143c",cyan:"ffff",xXe:"8b",xcyan:"8b8b",xgTMnPd:"b8860b",xWay:"a9a9a9",xgYF:"6400",xgYy:"a9a9a9",xkhaki:"bdb76b",xmagFta:"8b008b",xTivegYF:"556b2f",xSange:"ff8c00",xScEd:"9932cc",xYd:"8b0000",xsOmon:"e9967a",xsHgYF:"8fbc8f",xUXe:"483d8b",xUWay:"2f4f4f",xUgYy:"2f4f4f",xQe:"ced1",xviTet:"9400d3",dAppRk:"ff1493",dApskyXe:"bfff",dimWay:"696969",dimgYy:"696969",dodgerXe:"1e90ff",fiYbrick:"b22222",flSOwEte:"fffaf0",foYstWAn:"228b22",fuKsia:"ff00ff",gaRsbSo:"dcdcdc",ghostwEte:"f8f8ff",gTd:"ffd700",gTMnPd:"daa520",Way:"808080",gYF:"8000",gYFLw:"adff2f",gYy:"808080",honeyMw:"f0fff0",hotpRk:"ff69b4",RdianYd:"cd5c5c",Rdigo:"4b0082",ivSy:"fffff0",khaki:"f0e68c",lavFMr:"e6e6fa",lavFMrXsh:"fff0f5",lawngYF:"7cfc00",NmoncEffon:"fffacd",ZXe:"add8e6",ZcSO:"f08080",Zcyan:"e0ffff",ZgTMnPdLw:"fafad2",ZWay:"d3d3d3",ZgYF:"90ee90",ZgYy:"d3d3d3",ZpRk:"ffb6c1",ZsOmon:"ffa07a",ZsHgYF:"20b2aa",ZskyXe:"87cefa",ZUWay:"778899",ZUgYy:"778899",ZstAlXe:"b0c4de",ZLw:"ffffe0",lime:"ff00",limegYF:"32cd32",lRF:"faf0e6",magFta:"ff00ff",maPon:"800000",VaquamarRe:"66cdaa",VXe:"cd",VScEd:"ba55d3",VpurpN:"9370db",VsHgYF:"3cb371",VUXe:"7b68ee",VsprRggYF:"fa9a",VQe:"48d1cc",VviTetYd:"c71585",midnightXe:"191970",mRtcYam:"f5fffa",mistyPse:"ffe4e1",moccasR:"ffe4b5",navajowEte:"ffdead",navy:"80",Tdlace:"fdf5e6",Tive:"808000",TivedBb:"6b8e23",Sange:"ffa500",SangeYd:"ff4500",ScEd:"da70d6",pOegTMnPd:"eee8aa",pOegYF:"98fb98",pOeQe:"afeeee",pOeviTetYd:"db7093",papayawEp:"ffefd5",pHKpuff:"ffdab9",peru:"cd853f",pRk:"ffc0cb",plum:"dda0dd",powMrXe:"b0e0e6",purpN:"800080",YbeccapurpN:"663399",Yd:"ff0000",Psybrown:"bc8f8f",PyOXe:"4169e1",saddNbPwn:"8b4513",sOmon:"fa8072",sandybPwn:"f4a460",sHgYF:"2e8b57",sHshell:"fff5ee",siFna:"a0522d",silver:"c0c0c0",skyXe:"87ceeb",UXe:"6a5acd",UWay:"708090",UgYy:"708090",snow:"fffafa",sprRggYF:"ff7f",stAlXe:"4682b4",tan:"d2b48c",teO:"8080",tEstN:"d8bfd8",tomato:"ff6347",Qe:"40e0d0",viTet:"ee82ee",JHt:"f5deb3",wEte:"ffffff",wEtesmoke:"f5f5f5",Lw:"ffff00",LwgYF:"9acd32"};let Ht;function jt(t){Ht||(Ht=function(){const t={},e=Object.keys(Wt),i=Object.keys(Nt);let s,n,o,a,r;for(s=0;s<e.length;s++){for(a=r=e[s],n=0;n<i.length;n++)o=i[n],r=r.replace(o,Nt[o]);o=parseInt(Wt[a],16),t[r]=[o>>16&255,o>>8&255,255&o]}return t}(),Ht.transparent=[0,0,0,0]);const e=Ht[t.toLowerCase()];return e&&{r:e[0],g:e[1],b:e[2],a:4===e.length?e[3]:255}}const $t=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;const Yt=t=>t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055,Ut=t=>t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4);function Xt(t,e,i){if(t){let s=It(t);s[e]=Math.max(0,Math.min(s[e]+s[e]*i,0===e?360:1)),s=Ft(s),t.r=s[0],t.g=s[1],t.b=s[2]}}function qt(t,e){return t?Object.assign(e||{},t):t}function Kt(t){var e={r:0,g:0,b:0,a:255};return Array.isArray(t)?t.length>=3&&(e={r:t[0],g:t[1],b:t[2],a:255},t.length>3&&(e.a=Mt(t[3]))):(e=qt(t,{r:0,g:0,b:0,a:1})).a=Mt(e.a),e}function Gt(t){return"r"===t.charAt(0)?function(t){const e=$t.exec(t);let i,s,n,o=255;if(e){if(e[7]!==i){const t=+e[7];o=e[8]?vt(t):yt(255*t,0,255)}return i=+e[1],s=+e[3],n=+e[5],i=255&(e[2]?vt(i):yt(i,0,255)),s=255&(e[4]?vt(s):yt(s,0,255)),n=255&(e[6]?vt(n):yt(n,0,255)),{r:i,g:s,b:n,a:o}}}(t):Bt(t)}class Zt{constructor(t){if(t instanceof Zt)return t;const e=typeof t;let i;var s,n,o;"object"===e?i=Kt(t):"string"===e&&(o=(s=t).length,"#"===s[0]&&(4===o||5===o?n={r:255&17*St[s[1]],g:255&17*St[s[2]],b:255&17*St[s[3]],a:5===o?17*St[s[4]]:255}:7!==o&&9!==o||(n={r:St[s[1]]<<4|St[s[2]],g:St[s[3]]<<4|St[s[4]],b:St[s[5]]<<4|St[s[6]],a:9===o?St[s[7]]<<4|St[s[8]]:255})),i=n||jt(t)||Gt(t)),this._rgb=i,this._valid=!!i}get valid(){return this._valid}get rgb(){var t=qt(this._rgb);return t&&(t.a=wt(t.a)),t}set rgb(t){this._rgb=Kt(t)}rgbString(){return this._valid?(t=this._rgb)&&(t.a<255?`rgba(${t.r}, ${t.g}, ${t.b}, ${wt(t.a)})`:`rgb(${t.r}, ${t.g}, ${t.b})`):void 0;var t}hexString(){return this._valid?At(this._rgb):void 0}hslString(){return this._valid?function(t){if(!t)return;const e=It(t),i=e[0],s=kt(e[1]),n=kt(e[2]);return t.a<255?`hsla(${i}, ${s}%, ${n}%, ${wt(t.a)})`:`hsl(${i}, ${s}%, ${n}%)`}(this._rgb):void 0}mix(t,e){if(t){const i=this.rgb,s=t.rgb;let n;const o=e===n?.5:e,a=2*o-1,r=i.a-s.a,l=((a*r==-1?a:(a+r)/(1+a*r))+1)/2;n=1-l,i.r=255&l*i.r+n*s.r+.5,i.g=255&l*i.g+n*s.g+.5,i.b=255&l*i.b+n*s.b+.5,i.a=o*i.a+(1-o)*s.a,this.rgb=i}return this}interpolate(t,e){return t&&(this._rgb=function(t,e,i){const s=Ut(wt(t.r)),n=Ut(wt(t.g)),o=Ut(wt(t.b));return{r:Mt(Yt(s+i*(Ut(wt(e.r))-s))),g:Mt(Yt(n+i*(Ut(wt(e.g))-n))),b:Mt(Yt(o+i*(Ut(wt(e.b))-o))),a:t.a+i*(e.a-t.a)}}(this._rgb,t._rgb,e)),this}clone(){return new Zt(this.rgb)}alpha(t){return this._rgb.a=Mt(t),this}clearer(t){return this._rgb.a*=1-t,this}greyscale(){const t=this._rgb,e=_t(.3*t.r+.59*t.g+.11*t.b);return t.r=t.g=t.b=e,this}opaquer(t){return this._rgb.a*=1+t,this}negate(){const t=this._rgb;return t.r=255-t.r,t.g=255-t.g,t.b=255-t.b,this}lighten(t){return Xt(this._rgb,2,t),this}darken(t){return Xt(this._rgb,2,-t),this}saturate(t){return Xt(this._rgb,1,t),this}desaturate(t){return Xt(this._rgb,1,-t),this}rotate(t){return function(t,e){var i=It(t);i[0]=Vt(i[0]+e),i=Ft(i),t.r=i[0],t.g=i[1],t.b=i[2]}(this._rgb,t),this}}function Jt(t){if(t&&"object"==typeof t){const e=t.toString();return"[object CanvasPattern]"===e||"[object CanvasGradient]"===e}return!1}function Qt(t){return Jt(t)?t:new Zt(t)}function te(t){return Jt(t)?t:new Zt(t).saturate(.5).darken(.1).hexString()}const ee=["x","y","borderWidth","radius","tension"],ie=["color","borderColor","backgroundColor"];const se=new Map;function ne(t,e,i){return function(t,e){e=e||{};const i=t+JSON.stringify(e);let s=se.get(i);return s||(s=new Intl.NumberFormat(t,e),se.set(i,s)),s}(e,i).format(t)}const oe={values:t=>n(t)?t:""+t,numeric(t,e,i){if(0===t)return"0";const s=this.chart.options.locale;let n,o=t;if(i.length>1){const e=Math.max(Math.abs(i[0].value),Math.abs(i[i.length-1].value));(e<1e-4||e>1e15)&&(n="scientific"),o=function(t,e){let i=e.length>3?e[2].value-e[1].value:e[1].value-e[0].value;Math.abs(i)>=1&&t!==Math.floor(t)&&(i=t-Math.floor(t));return i}(t,i)}const a=z(Math.abs(o)),r=Math.max(Math.min(-1*Math.floor(a),20),0),l={notation:n,minimumFractionDigits:r,maximumFractionDigits:r};return Object.assign(l,this.options.ticks.format),ne(t,s,l)},logarithmic(t,e,i){if(0===t)return"0";const s=i[e].significand||t/Math.pow(10,Math.floor(z(t)));return[1,2,3,5,10,15].includes(s)||e>.8*i.length?oe.numeric.call(this,t,e,i):""}};var ae={formatters:oe};const re=Object.create(null),le=Object.create(null);function he(t,e){if(!e)return t;const i=e.split(".");for(let e=0,s=i.length;e<s;++e){const s=i[e];t=t[s]||(t[s]=Object.create(null))}return t}function ce(t,e,i){return"string"==typeof e?b(he(t,e),i):b(he(t,""),e)}class de{constructor(t,e){this.animation=void 0,this.backgroundColor="rgba(0,0,0,0.1)",this.borderColor="rgba(0,0,0,0.1)",this.color="#666",this.datasets={},this.devicePixelRatio=t=>t.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(t,e)=>te(e.backgroundColor),this.hoverBorderColor=(t,e)=>te(e.borderColor),this.hoverColor=(t,e)=>te(e.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(t),this.apply(e)}set(t,e){return ce(this,t,e)}get(t){return he(this,t)}describe(t,e){return ce(le,t,e)}override(t,e){return ce(re,t,e)}route(t,e,i,s){const n=he(this,t),a=he(this,i),r="_"+e;Object.defineProperties(n,{[r]:{value:n[e],writable:!0},[e]:{enumerable:!0,get(){const t=this[r],e=a[s];return o(t)?Object.assign({},e,t):l(t,e)},set(t){this[r]=t}}})}apply(t){t.forEach((t=>t(this)))}}var ue=new de({_scriptable:t=>!t.startsWith("on"),_indexable:t=>"events"!==t,hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}},[function(t){t.set("animation",{delay:void 0,duration:1e3,easing:"easeOutQuart",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),t.describe("animation",{_fallback:!1,_indexable:!1,_scriptable:t=>"onProgress"!==t&&"onComplete"!==t&&"fn"!==t}),t.set("animations",{colors:{type:"color",properties:ie},numbers:{type:"number",properties:ee}}),t.describe("animations",{_fallback:"animation"}),t.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:t=>0|t}}}})},function(t){t.set("layout",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})},function(t){t.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(t,e)=>e.lineWidth,tickColor:(t,e)=>e.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:ae.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),t.route("scale.ticks","color","","color"),t.route("scale.grid","color","","borderColor"),t.route("scale.border","color","","borderColor"),t.route("scale.title","color","","color"),t.describe("scale",{_fallback:!1,_scriptable:t=>!t.startsWith("before")&&!t.startsWith("after")&&"callback"!==t&&"parser"!==t,_indexable:t=>"borderDash"!==t&&"tickBorderDash"!==t&&"dash"!==t}),t.describe("scales",{_fallback:"scale"}),t.describe("scale.ticks",{_scriptable:t=>"backdropPadding"!==t&&"callback"!==t,_indexable:t=>"backdropPadding"!==t})}]);function fe(){return"undefined"!=typeof window&&"undefined"!=typeof document}function ge(t){let e=t.parentNode;return e&&"[object ShadowRoot]"===e.toString()&&(e=e.host),e}function pe(t,e,i){let s;return"string"==typeof t?(s=parseInt(t,10),-1!==t.indexOf("%")&&(s=s/100*e.parentNode[i])):s=t,s}const me=t=>t.ownerDocument.defaultView.getComputedStyle(t,null);function be(t,e){return me(t).getPropertyValue(e)}const xe=["top","right","bottom","left"];function _e(t,e,i){const s={};i=i?"-"+i:"";for(let n=0;n<4;n++){const o=xe[n];s[o]=parseFloat(t[e+"-"+o+i])||0}return s.width=s.left+s.right,s.height=s.top+s.bottom,s}function ye(t,e){if("native"in t)return t;const{canvas:i,currentDevicePixelRatio:s}=e,n=me(i),o="border-box"===n.boxSizing,a=_e(n,"padding"),r=_e(n,"border","width"),{x:l,y:h,box:c}=function(t,e){const i=t.touches,s=i&&i.length?i[0]:t,{offsetX:n,offsetY:o}=s;let a,r,l=!1;if(((t,e,i)=>(t>0||e>0)&&(!i||!i.shadowRoot))(n,o,t.target))a=n,r=o;else{const t=e.getBoundingClientRect();a=s.clientX-t.left,r=s.clientY-t.top,l=!0}return{x:a,y:r,box:l}}(t,i),d=a.left+(c&&r.left),u=a.top+(c&&r.top);let{width:f,height:g}=e;return o&&(f-=a.width+r.width,g-=a.height+r.height),{x:Math.round((l-d)/f*i.width/s),y:Math.round((h-u)/g*i.height/s)}}const ve=t=>Math.round(10*t)/10;function Me(t,e,i,s){const n=me(t),o=_e(n,"margin"),a=pe(n.maxWidth,t,"clientWidth")||T,r=pe(n.maxHeight,t,"clientHeight")||T,l=function(t,e,i){let s,n;if(void 0===e||void 0===i){const o=ge(t);if(o){const t=o.getBoundingClientRect(),a=me(o),r=_e(a,"border","width"),l=_e(a,"padding");e=t.width-l.width-r.width,i=t.height-l.height-r.height,s=pe(a.maxWidth,o,"clientWidth"),n=pe(a.maxHeight,o,"clientHeight")}else e=t.clientWidth,i=t.clientHeight}return{width:e,height:i,maxWidth:s||T,maxHeight:n||T}}(t,e,i);let{width:h,height:c}=l;if("content-box"===n.boxSizing){const t=_e(n,"border","width"),e=_e(n,"padding");h-=e.width+t.width,c-=e.height+t.height}h=Math.max(0,h-o.width),c=Math.max(0,s?h/s:c-o.height),h=ve(Math.min(h,a,l.maxWidth)),c=ve(Math.min(c,r,l.maxHeight)),h&&!c&&(c=ve(h/2));return(void 0!==e||void 0!==i)&&s&&l.height&&c>l.height&&(c=l.height,h=ve(Math.floor(c*s))),{width:h,height:c}}function we(t,e,i){const s=e||1,n=Math.floor(t.height*s),o=Math.floor(t.width*s);t.height=Math.floor(t.height),t.width=Math.floor(t.width);const a=t.canvas;return a.style&&(i||!a.style.height&&!a.style.width)&&(a.style.height=`${t.height}px`,a.style.width=`${t.width}px`),(t.currentDevicePixelRatio!==s||a.height!==n||a.width!==o)&&(t.currentDevicePixelRatio=s,a.height=n,a.width=o,t.ctx.setTransform(s,0,0,s,0,0),!0)}const ke=function(){let t=!1;try{const e={get passive(){return t=!0,!1}};window.addEventListener("test",null,e),window.removeEventListener("test",null,e)}catch(t){}return t}();function Se(t,e){const i=be(t,e),s=i&&i.match(/^(\d+)(\.\d+)?px$/);return s?+s[1]:void 0}function Pe(t){return!t||s(t.size)||s(t.family)?null:(t.style?t.style+" ":"")+(t.weight?t.weight+" ":"")+t.size+"px "+t.family}function De(t,e,i,s,n){let o=e[n];return o||(o=e[n]=t.measureText(n).width,i.push(n)),o>s&&(s=o),s}function Ce(t,e,i,s){let o=(s=s||{}).data=s.data||{},a=s.garbageCollect=s.garbageCollect||[];s.font!==e&&(o=s.data={},a=s.garbageCollect=[],s.font=e),t.save(),t.font=e;let r=0;const l=i.length;let h,c,d,u,f;for(h=0;h<l;h++)if(u=i[h],null!=u&&!0!==n(u))r=De(t,o,a,r,u);else if(n(u))for(c=0,d=u.length;c<d;c++)f=u[c],null==f||n(f)||(r=De(t,o,a,r,f));t.restore();const g=a.length/2;if(g>i.length){for(h=0;h<g;h++)delete o[a[h]];a.splice(0,g)}return r}function Oe(t,e,i){const s=t.currentDevicePixelRatio,n=0!==i?Math.max(i/2,.5):0;return Math.round((e-n)*s)/s+n}function Ae(t,e){(e=e||t.getContext("2d")).save(),e.resetTransform(),e.clearRect(0,0,t.width,t.height),e.restore()}function Te(t,e,i,s){Le(t,e,i,s,null)}function Le(t,e,i,s,n){let o,a,r,l,h,c,d,u;const f=e.pointStyle,g=e.rotation,p=e.radius;let m=(g||0)*L;if(f&&"object"==typeof f&&(o=f.toString(),"[object HTMLImageElement]"===o||"[object HTMLCanvasElement]"===o))return t.save(),t.translate(i,s),t.rotate(m),t.drawImage(f,-f.width/2,-f.height/2,f.width,f.height),void t.restore();if(!(isNaN(p)||p<=0)){switch(t.beginPath(),f){default:n?t.ellipse(i,s,n/2,p,0,0,O):t.arc(i,s,p,0,O),t.closePath();break;case"triangle":c=n?n/2:p,t.moveTo(i+Math.sin(m)*c,s-Math.cos(m)*p),m+=I,t.lineTo(i+Math.sin(m)*c,s-Math.cos(m)*p),m+=I,t.lineTo(i+Math.sin(m)*c,s-Math.cos(m)*p),t.closePath();break;case"rectRounded":h=.516*p,l=p-h,a=Math.cos(m+R)*l,d=Math.cos(m+R)*(n?n/2-h:l),r=Math.sin(m+R)*l,u=Math.sin(m+R)*(n?n/2-h:l),t.arc(i-d,s-r,h,m-C,m-E),t.arc(i+u,s-a,h,m-E,m),t.arc(i+d,s+r,h,m,m+E),t.arc(i-u,s+a,h,m+E,m+C),t.closePath();break;case"rect":if(!g){l=Math.SQRT1_2*p,c=n?n/2:l,t.rect(i-c,s-l,2*c,2*l);break}m+=R;case"rectRot":d=Math.cos(m)*(n?n/2:p),a=Math.cos(m)*p,r=Math.sin(m)*p,u=Math.sin(m)*(n?n/2:p),t.moveTo(i-d,s-r),t.lineTo(i+u,s-a),t.lineTo(i+d,s+r),t.lineTo(i-u,s+a),t.closePath();break;case"crossRot":m+=R;case"cross":d=Math.cos(m)*(n?n/2:p),a=Math.cos(m)*p,r=Math.sin(m)*p,u=Math.sin(m)*(n?n/2:p),t.moveTo(i-d,s-r),t.lineTo(i+d,s+r),t.moveTo(i+u,s-a),t.lineTo(i-u,s+a);break;case"star":d=Math.cos(m)*(n?n/2:p),a=Math.cos(m)*p,r=Math.sin(m)*p,u=Math.sin(m)*(n?n/2:p),t.moveTo(i-d,s-r),t.lineTo(i+d,s+r),t.moveTo(i+u,s-a),t.lineTo(i-u,s+a),m+=R,d=Math.cos(m)*(n?n/2:p),a=Math.cos(m)*p,r=Math.sin(m)*p,u=Math.sin(m)*(n?n/2:p),t.moveTo(i-d,s-r),t.lineTo(i+d,s+r),t.moveTo(i+u,s-a),t.lineTo(i-u,s+a);break;case"line":a=n?n/2:Math.cos(m)*p,r=Math.sin(m)*p,t.moveTo(i-a,s-r),t.lineTo(i+a,s+r);break;case"dash":t.moveTo(i,s),t.lineTo(i+Math.cos(m)*(n?n/2:p),s+Math.sin(m)*p);break;case!1:t.closePath()}t.fill(),e.borderWidth>0&&t.stroke()}}function Ee(t,e,i){return i=i||.5,!e||t&&t.x>e.left-i&&t.x<e.right+i&&t.y>e.top-i&&t.y<e.bottom+i}function Re(t,e){t.save(),t.beginPath(),t.rect(e.left,e.top,e.right-e.left,e.bottom-e.top),t.clip()}function Ie(t){t.restore()}function ze(t,e,i,s,n){if(!e)return t.lineTo(i.x,i.y);if("middle"===n){const s=(e.x+i.x)/2;t.lineTo(s,e.y),t.lineTo(s,i.y)}else"after"===n!=!!s?t.lineTo(e.x,i.y):t.lineTo(i.x,e.y);t.lineTo(i.x,i.y)}function Fe(t,e,i,s){if(!e)return t.lineTo(i.x,i.y);t.bezierCurveTo(s?e.cp1x:e.cp2x,s?e.cp1y:e.cp2y,s?i.cp2x:i.cp1x,s?i.cp2y:i.cp1y,i.x,i.y)}function Ve(t,e,i,o,a,r={}){const l=n(e)?e:[e],h=r.strokeWidth>0&&""!==r.strokeColor;let c,d;for(t.save(),t.font=a.string,function(t,e){e.translation&&t.translate(e.translation[0],e.translation[1]);s(e.rotation)||t.rotate(e.rotation);e.color&&(t.fillStyle=e.color);e.textAlign&&(t.textAlign=e.textAlign);e.textBaseline&&(t.textBaseline=e.textBaseline)}(t,r),c=0;c<l.length;++c)d=l[c],r.backdrop&&Ne(t,r.backdrop),h&&(r.strokeColor&&(t.strokeStyle=r.strokeColor),s(r.strokeWidth)||(t.lineWidth=r.strokeWidth),t.strokeText(d,i,o,r.maxWidth)),t.fillText(d,i,o,r.maxWidth),Be(t,i,o,d,r),o+=a.lineHeight;t.restore()}function Be(t,e,i,s,n){if(n.strikethrough||n.underline){const o=t.measureText(s),a=e-o.actualBoundingBoxLeft,r=e+o.actualBoundingBoxRight,l=i-o.actualBoundingBoxAscent,h=i+o.actualBoundingBoxDescent,c=n.strikethrough?(l+h)/2:h;t.strokeStyle=t.fillStyle,t.beginPath(),t.lineWidth=n.decorationWidth||2,t.moveTo(a,c),t.lineTo(r,c),t.stroke()}}function Ne(t,e){const i=t.fillStyle;t.fillStyle=e.color,t.fillRect(e.left,e.top,e.width,e.height),t.fillStyle=i}function We(t,e){const{x:i,y:s,w:n,h:o,radius:a}=e;t.arc(i+a.topLeft,s+a.topLeft,a.topLeft,-E,C,!0),t.lineTo(i,s+o-a.bottomLeft),t.arc(i+a.bottomLeft,s+o-a.bottomLeft,a.bottomLeft,C,E,!0),t.lineTo(i+n-a.bottomRight,s+o),t.arc(i+n-a.bottomRight,s+o-a.bottomRight,a.bottomRight,E,0,!0),t.lineTo(i+n,s+a.topRight),t.arc(i+n-a.topRight,s+a.topRight,a.topRight,0,-E,!0),t.lineTo(i+a.topLeft,s)}function He(t,e=[""],i=t,s,n=(()=>t[0])){k(s)||(s=Qe("_fallback",t));const o={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:t,_rootScopes:i,_fallback:s,_getTarget:n,override:n=>He([n,...t],e,i,s)};return new Proxy(o,{deleteProperty:(e,i)=>(delete e[i],delete e._keys,delete t[0][i],!0),get:(i,s)=>Xe(i,s,(()=>function(t,e,i,s){let n;for(const o of e)if(n=Qe(Ye(o,t),i),k(n))return Ue(t,n)?Ze(i,s,t,n):n}(s,e,t,i))),getOwnPropertyDescriptor:(t,e)=>Reflect.getOwnPropertyDescriptor(t._scopes[0],e),getPrototypeOf:()=>Reflect.getPrototypeOf(t[0]),has:(t,e)=>ti(t).includes(e),ownKeys:t=>ti(t),set(t,e,i){const s=t._storage||(t._storage=n());return t[e]=s[e]=i,delete t._keys,!0}})}function je(t,e,i,s){const a={_cacheable:!1,_proxy:t,_context:e,_subProxy:i,_stack:new Set,_descriptors:$e(t,s),setContext:e=>je(t,e,i,s),override:n=>je(t.override(n),e,i,s)};return new Proxy(a,{deleteProperty:(e,i)=>(delete e[i],delete t[i],!0),get:(t,e,i)=>Xe(t,e,(()=>function(t,e,i){const{_proxy:s,_context:a,_subProxy:r,_descriptors:l}=t;let h=s[e];S(h)&&l.isScriptable(e)&&(h=function(t,e,i,s){const{_proxy:n,_context:o,_subProxy:a,_stack:r}=i;if(r.has(t))throw new Error("Recursion detected: "+Array.from(r).join("->")+"->"+t);r.add(t),e=e(o,a||s),r.delete(t),Ue(t,e)&&(e=Ze(n._scopes,n,t,e));return e}(e,h,t,i));n(h)&&h.length&&(h=function(t,e,i,s){const{_proxy:n,_context:a,_subProxy:r,_descriptors:l}=i;if(k(a.index)&&s(t))e=e[a.index%e.length];else if(o(e[0])){const i=e,s=n._scopes.filter((t=>t!==i));e=[];for(const o of i){const i=Ze(s,n,t,o);e.push(je(i,a,r&&r[t],l))}}return e}(e,h,t,l.isIndexable));Ue(e,h)&&(h=je(h,a,r&&r[e],l));return h}(t,e,i))),getOwnPropertyDescriptor:(e,i)=>e._descriptors.allKeys?Reflect.has(t,i)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(t,i),getPrototypeOf:()=>Reflect.getPrototypeOf(t),has:(e,i)=>Reflect.has(t,i),ownKeys:()=>Reflect.ownKeys(t),set:(e,i,s)=>(t[i]=s,delete e[i],!0)})}function $e(t,e={scriptable:!0,indexable:!0}){const{_scriptable:i=e.scriptable,_indexable:s=e.indexable,_allKeys:n=e.allKeys}=t;return{allKeys:n,scriptable:i,indexable:s,isScriptable:S(i)?i:()=>i,isIndexable:S(s)?s:()=>s}}const Ye=(t,e)=>t?t+w(e):e,Ue=(t,e)=>o(e)&&"adapters"!==t&&(null===Object.getPrototypeOf(e)||e.constructor===Object);function Xe(t,e,i){if(Object.prototype.hasOwnProperty.call(t,e))return t[e];const s=i();return t[e]=s,s}function qe(t,e,i){return S(t)?t(e,i):t}const Ke=(t,e)=>!0===t?e:"string"==typeof t?M(e,t):void 0;function Ge(t,e,i,s,n){for(const o of e){const e=Ke(i,o);if(e){t.add(e);const o=qe(e._fallback,i,n);if(k(o)&&o!==i&&o!==s)return o}else if(!1===e&&k(s)&&i!==s)return null}return!1}function Ze(t,e,i,s){const a=e._rootScopes,r=qe(e._fallback,i,s),l=[...t,...a],h=new Set;h.add(s);let c=Je(h,l,i,r||i,s);return null!==c&&((!k(r)||r===i||(c=Je(h,l,r,c,s),null!==c))&&He(Array.from(h),[""],a,r,(()=>function(t,e,i){const s=t._getTarget();e in s||(s[e]={});const a=s[e];if(n(a)&&o(i))return i;return a||{}}(e,i,s))))}function Je(t,e,i,s,n){for(;i;)i=Ge(t,e,i,s,n);return i}function Qe(t,e){for(const i of e){if(!i)continue;const e=i[t];if(k(e))return e}}function ti(t){let e=t._keys;return e||(e=t._keys=function(t){const e=new Set;for(const i of t)for(const t of Object.keys(i).filter((t=>!t.startsWith("_"))))e.add(t);return Array.from(e)}(t._scopes)),e}function ei(t,e,i,s){const{iScale:n}=t,{key:o="r"}=this._parsing,a=new Array(s);let r,l,h,c;for(r=0,l=s;r<l;++r)h=r+i,c=e[h],a[r]={r:n.parse(M(c,o),h)};return a}const ii=Number.EPSILON||1e-14,si=(t,e)=>e<t.length&&!t[e].skip&&t[e],ni=t=>"x"===t?"y":"x";function oi(t,e,i,s){const n=t.skip?e:t,o=e,a=i.skip?e:i,r=q(o,n),l=q(a,o);let h=r/(r+l),c=l/(r+l);h=isNaN(h)?0:h,c=isNaN(c)?0:c;const d=s*h,u=s*c;return{previous:{x:o.x-d*(a.x-n.x),y:o.y-d*(a.y-n.y)},next:{x:o.x+u*(a.x-n.x),y:o.y+u*(a.y-n.y)}}}function ai(t,e="x"){const i=ni(e),s=t.length,n=Array(s).fill(0),o=Array(s);let a,r,l,h=si(t,0);for(a=0;a<s;++a)if(r=l,l=h,h=si(t,a+1),l){if(h){const t=h[e]-l[e];n[a]=0!==t?(h[i]-l[i])/t:0}o[a]=r?h?F(n[a-1])!==F(n[a])?0:(n[a-1]+n[a])/2:n[a-1]:n[a]}!function(t,e,i){const s=t.length;let n,o,a,r,l,h=si(t,0);for(let c=0;c<s-1;++c)l=h,h=si(t,c+1),l&&h&&(V(e[c],0,ii)?i[c]=i[c+1]=0:(n=i[c]/e[c],o=i[c+1]/e[c],r=Math.pow(n,2)+Math.pow(o,2),r<=9||(a=3/Math.sqrt(r),i[c]=n*a*e[c],i[c+1]=o*a*e[c])))}(t,n,o),function(t,e,i="x"){const s=ni(i),n=t.length;let o,a,r,l=si(t,0);for(let h=0;h<n;++h){if(a=r,r=l,l=si(t,h+1),!r)continue;const n=r[i],c=r[s];a&&(o=(n-a[i])/3,r[`cp1${i}`]=n-o,r[`cp1${s}`]=c-o*e[h]),l&&(o=(l[i]-n)/3,r[`cp2${i}`]=n+o,r[`cp2${s}`]=c+o*e[h])}}(t,o,e)}function ri(t,e,i){return Math.max(Math.min(t,i),e)}function li(t,e,i,s,n){let o,a,r,l;if(e.spanGaps&&(t=t.filter((t=>!t.skip))),"monotone"===e.cubicInterpolationMode)ai(t,n);else{let i=s?t[t.length-1]:t[0];for(o=0,a=t.length;o<a;++o)r=t[o],l=oi(i,r,t[Math.min(o+1,a-(s?0:1))%a],e.tension),r.cp1x=l.previous.x,r.cp1y=l.previous.y,r.cp2x=l.next.x,r.cp2y=l.next.y,i=r}e.capBezierPoints&&function(t,e){let i,s,n,o,a,r=Ee(t[0],e);for(i=0,s=t.length;i<s;++i)a=o,o=r,r=i<s-1&&Ee(t[i+1],e),o&&(n=t[i],a&&(n.cp1x=ri(n.cp1x,e.left,e.right),n.cp1y=ri(n.cp1y,e.top,e.bottom)),r&&(n.cp2x=ri(n.cp2x,e.left,e.right),n.cp2y=ri(n.cp2y,e.top,e.bottom)))}(t,i)}const hi=t=>0===t||1===t,ci=(t,e,i)=>-Math.pow(2,10*(t-=1))*Math.sin((t-e)*O/i),di=(t,e,i)=>Math.pow(2,-10*t)*Math.sin((t-e)*O/i)+1,ui={linear:t=>t,easeInQuad:t=>t*t,easeOutQuad:t=>-t*(t-2),easeInOutQuad:t=>(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1),easeInCubic:t=>t*t*t,easeOutCubic:t=>(t-=1)*t*t+1,easeInOutCubic:t=>(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2),easeInQuart:t=>t*t*t*t,easeOutQuart:t=>-((t-=1)*t*t*t-1),easeInOutQuart:t=>(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2),easeInQuint:t=>t*t*t*t*t,easeOutQuint:t=>(t-=1)*t*t*t*t+1,easeInOutQuint:t=>(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2),easeInSine:t=>1-Math.cos(t*E),easeOutSine:t=>Math.sin(t*E),easeInOutSine:t=>-.5*(Math.cos(C*t)-1),easeInExpo:t=>0===t?0:Math.pow(2,10*(t-1)),easeOutExpo:t=>1===t?1:1-Math.pow(2,-10*t),easeInOutExpo:t=>hi(t)?t:t<.5?.5*Math.pow(2,10*(2*t-1)):.5*(2-Math.pow(2,-10*(2*t-1))),easeInCirc:t=>t>=1?t:-(Math.sqrt(1-t*t)-1),easeOutCirc:t=>Math.sqrt(1-(t-=1)*t),easeInOutCirc:t=>(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1),easeInElastic:t=>hi(t)?t:ci(t,.075,.3),easeOutElastic:t=>hi(t)?t:di(t,.075,.3),easeInOutElastic(t){const e=.1125;return hi(t)?t:t<.5?.5*ci(2*t,e,.45):.5+.5*di(2*t-1,e,.45)},easeInBack(t){const e=1.70158;return t*t*((e+1)*t-e)},easeOutBack(t){const e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack(t){let e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:t=>1-ui.easeOutBounce(1-t),easeOutBounce(t){const e=7.5625,i=2.75;return t<1/i?e*t*t:t<2/i?e*(t-=1.5/i)*t+.75:t<2.5/i?e*(t-=2.25/i)*t+.9375:e*(t-=2.625/i)*t+.984375},easeInOutBounce:t=>t<.5?.5*ui.easeInBounce(2*t):.5*ui.easeOutBounce(2*t-1)+.5};function fi(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:t.y+i*(e.y-t.y)}}function gi(t,e,i,s){return{x:t.x+i*(e.x-t.x),y:"middle"===s?i<.5?t.y:e.y:"after"===s?i<1?t.y:e.y:i>0?e.y:t.y}}function pi(t,e,i,s){const n={x:t.cp2x,y:t.cp2y},o={x:e.cp1x,y:e.cp1y},a=fi(t,n,i),r=fi(n,o,i),l=fi(o,e,i),h=fi(a,r,i),c=fi(r,l,i);return fi(h,c,i)}const mi=/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/,bi=/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;function xi(t,e){const i=(""+t).match(mi);if(!i||"normal"===i[1])return 1.2*e;switch(t=+i[2],i[3]){case"px":return t;case"%":t/=100}return e*t}function _i(t,e){const i={},s=o(e),n=s?Object.keys(e):e,a=o(t)?s?i=>l(t[i],t[e[i]]):e=>t[e]:()=>t;for(const t of n)i[t]=+a(t)||0;return i}function yi(t){return _i(t,{top:"y",right:"x",bottom:"y",left:"x"})}function vi(t){return _i(t,["topLeft","topRight","bottomLeft","bottomRight"])}function Mi(t){const e=yi(t);return e.width=e.left+e.right,e.height=e.top+e.bottom,e}function wi(t,e){t=t||{},e=e||ue.font;let i=l(t.size,e.size);"string"==typeof i&&(i=parseInt(i,10));let s=l(t.style,e.style);s&&!(""+s).match(bi)&&(console.warn('Invalid font style specified: "'+s+'"'),s=void 0);const n={family:l(t.family,e.family),lineHeight:xi(l(t.lineHeight,e.lineHeight),i),size:i,style:s,weight:l(t.weight,e.weight),string:""};return n.string=Pe(n),n}function ki(t,e,i,s){let o,a,r,l=!0;for(o=0,a=t.length;o<a;++o)if(r=t[o],void 0!==r&&(void 0!==e&&"function"==typeof r&&(r=r(e),l=!1),void 0!==i&&n(r)&&(r=r[i%r.length],l=!1),void 0!==r))return s&&!l&&(s.cacheable=!1),r}function Si(t,e,i){const{min:s,max:n}=t,o=c(e,(n-s)/2),a=(t,e)=>i&&0===t?0:t+e;return{min:a(s,-Math.abs(o)),max:a(n,o)}}function Pi(t,e){return Object.assign(Object.create(t),e)}function Di(t,e,i){return t?function(t,e){return{x:i=>t+t+e-i,setWidth(t){e=t},textAlign:t=>"center"===t?t:"right"===t?"left":"right",xPlus:(t,e)=>t-e,leftForLtr:(t,e)=>t-e}}(e,i):{x:t=>t,setWidth(t){},textAlign:t=>t,xPlus:(t,e)=>t+e,leftForLtr:(t,e)=>t}}function Ci(t,e){let i,s;"ltr"!==e&&"rtl"!==e||(i=t.canvas.style,s=[i.getPropertyValue("direction"),i.getPropertyPriority("direction")],i.setProperty("direction",e,"important"),t.prevTextDirection=s)}function Oi(t,e){void 0!==e&&(delete t.prevTextDirection,t.canvas.style.setProperty("direction",e[0],e[1]))}function Ai(t){return"angle"===t?{between:Z,compare:K,normalize:G}:{between:tt,compare:(t,e)=>t-e,normalize:t=>t}}function Ti({start:t,end:e,count:i,loop:s,style:n}){return{start:t%i,end:e%i,loop:s&&(e-t+1)%i==0,style:n}}function Li(t,e,i){if(!i)return[t];const{property:s,start:n,end:o}=i,a=e.length,{compare:r,between:l,normalize:h}=Ai(s),{start:c,end:d,loop:u,style:f}=function(t,e,i){const{property:s,start:n,end:o}=i,{between:a,normalize:r}=Ai(s),l=e.length;let h,c,{start:d,end:u,loop:f}=t;if(f){for(d+=l,u+=l,h=0,c=l;h<c&&a(r(e[d%l][s]),n,o);++h)d--,u--;d%=l,u%=l}return u<d&&(u+=l),{start:d,end:u,loop:f,style:t.style}}(t,e,i),g=[];let p,m,b,x=!1,_=null;const y=()=>x||l(n,b,p)&&0!==r(n,b),v=()=>!x||0===r(o,p)||l(o,b,p);for(let t=c,i=c;t<=d;++t)m=e[t%a],m.skip||(p=h(m[s]),p!==b&&(x=l(p,n,o),null===_&&y()&&(_=0===r(p,n)?t:i),null!==_&&v()&&(g.push(Ti({start:_,end:t,loop:u,count:a,style:f})),_=null),i=t,b=p));return null!==_&&g.push(Ti({start:_,end:d,loop:u,count:a,style:f})),g}function Ei(t,e){const i=[],s=t.segments;for(let n=0;n<s.length;n++){const o=Li(s[n],t.points,e);o.length&&i.push(...o)}return i}function Ri(t,e){const i=t.points,s=t.options.spanGaps,n=i.length;if(!n)return[];const o=!!t._loop,{start:a,end:r}=function(t,e,i,s){let n=0,o=e-1;if(i&&!s)for(;n<e&&!t[n].skip;)n++;for(;n<e&&t[n].skip;)n++;for(n%=e,i&&(o+=n);o>n&&t[o%e].skip;)o--;return o%=e,{start:n,end:o}}(i,n,o,s);if(!0===s)return Ii(t,[{start:a,end:r,loop:o}],i,e);return Ii(t,function(t,e,i,s){const n=t.length,o=[];let a,r=e,l=t[e];for(a=e+1;a<=i;++a){const i=t[a%n];i.skip||i.stop?l.skip||(s=!1,o.push({start:e%n,end:(a-1)%n,loop:s}),e=r=i.stop?a:null):(r=a,l.skip&&(e=a)),l=i}return null!==r&&o.push({start:e%n,end:r%n,loop:s}),o}(i,a,r<a?r+n:r,!!t._fullLoop&&0===a&&r===n-1),i,e)}function Ii(t,e,i,s){return s&&s.setContext&&i?function(t,e,i,s){const n=t._chart.getContext(),o=zi(t.options),{_datasetIndex:a,options:{spanGaps:r}}=t,l=i.length,h=[];let c=o,d=e[0].start,u=d;function f(t,e,s,n){const o=r?-1:1;if(t!==e){for(t+=l;i[t%l].skip;)t-=o;for(;i[e%l].skip;)e+=o;t%l!=e%l&&(h.push({start:t%l,end:e%l,loop:s,style:n}),c=n,d=e%l)}}for(const t of e){d=r?d:t.start;let e,o=i[d%l];for(u=d+1;u<=t.end;u++){const r=i[u%l];e=zi(s.setContext(Pi(n,{type:"segment",p0:o,p1:r,p0DataIndex:(u-1)%l,p1DataIndex:u%l,datasetIndex:a}))),Fi(e,c)&&f(d,u-1,t.loop,c),o=r,c=e}d<u-1&&f(d,u-1,t.loop,c)}return h}(t,e,i,s):e}function zi(t){return{backgroundColor:t.backgroundColor,borderCapStyle:t.borderCapStyle,borderDash:t.borderDash,borderDashOffset:t.borderDashOffset,borderJoinStyle:t.borderJoinStyle,borderWidth:t.borderWidth,borderColor:t.borderColor}}function Fi(t,e){return e&&JSON.stringify(t)!==JSON.stringify(e)}var Vi=Object.freeze({__proto__:null,easingEffects:ui,isPatternOrGradient:Jt,color:Qt,getHoverColor:te,noop:e,uid:i,isNullOrUndef:s,isArray:n,isObject:o,isFinite:a,finiteOrDefault:r,valueOrDefault:l,toPercentage:h,toDimension:c,callback:d,each:u,_elementsEqual:f,clone:g,_merger:m,merge:b,mergeIf:x,_mergerIf:_,_deprecated:function(t,e,i,s){void 0!==e&&console.warn(t+': "'+i+'" is deprecated. Please use "'+s+'" instead')},_splitKey:v,resolveObjectKey:M,_capitalize:w,defined:k,isFunction:S,setsEqual:P,_isClickEvent:D,toFontString:Pe,_measureText:De,_longestText:Ce,_alignPixel:Oe,clearCanvas:Ae,drawPoint:Te,drawPointLegend:Le,_isPointInArea:Ee,clipArea:Re,unclipArea:Ie,_steppedLineTo:ze,_bezierCurveTo:Fe,renderText:Ve,addRoundedRectPath:We,_lookup:et,_lookupByKey:it,_rlookupByKey:st,_filterBetween:nt,listenArrayEvents:at,unlistenArrayEvents:rt,_arrayUnique:lt,_createResolver:He,_attachContext:je,_descriptors:$e,_parseObjectDataRadialScale:ei,splineCurve:oi,splineCurveMonotone:ai,_updateBezierControlPoints:li,_isDomSupported:fe,_getParentNode:ge,getStyle:be,getRelativePosition:ye,getMaximumSize:Me,retinaScale:we,supportsEventListenerOptions:ke,readUsedSize:Se,fontString:function(t,e,i){return e+" "+t+"px "+i},requestAnimFrame:ht,throttled:ct,debounce:dt,_toLeftRightCenter:ut,_alignStartEnd:ft,_textX:gt,_getStartAndCountOfVisiblePoints:pt,_scaleRangesChanged:mt,_pointInLine:fi,_steppedInterpolation:gi,_bezierInterpolation:pi,formatNumber:ne,toLineHeight:xi,_readValueToProps:_i,toTRBL:yi,toTRBLCorners:vi,toPadding:Mi,toFont:wi,resolve:ki,_addGrace:Si,createContext:Pi,PI:C,TAU:O,PITAU:A,INFINITY:T,RAD_PER_DEG:L,HALF_PI:E,QUARTER_PI:R,TWO_THIRDS_PI:I,log10:z,sign:F,almostEquals:V,niceNum:B,_factorize:N,isNumber:W,almostWhole:H,_setMinAndMaxByKey:j,toRadians:$,toDegrees:Y,_decimalPlaces:U,getAngleFromPoint:X,distanceBetweenPoints:q,_angleDiff:K,_normalizeAngle:G,_angleBetween:Z,_limitValue:J,_int16Range:Q,_isBetween:tt,getRtlAdapter:Di,overrideTextDirection:Ci,restoreTextDirection:Oi,_boundSegment:Li,_boundSegments:Ei,_computeSegments:Ri});function Bi(t,e,i,s){const{controller:n,data:o,_sorted:a}=t,r=n._cachedMeta.iScale;if(r&&e===r.axis&&"r"!==e&&a&&o.length){const t=r._reversePixels?st:it;if(!s)return t(o,e,i);if(n._sharedOptions){const s=o[0],n="function"==typeof s.getRange&&s.getRange(e);if(n){const s=t(o,e,i-n),a=t(o,e,i+n);return{lo:s.lo,hi:a.hi}}}}return{lo:0,hi:o.length-1}}function Ni(t,e,i,s,n){const o=t.getSortedVisibleDatasetMetas(),a=i[e];for(let t=0,i=o.length;t<i;++t){const{index:i,data:r}=o[t],{lo:l,hi:h}=Bi(o[t],e,a,n);for(let t=l;t<=h;++t){const e=r[t];e.skip||s(e,i,t)}}}function Wi(t,e,i,s,n){const o=[];if(!n&&!t.isPointInArea(e))return o;return Ni(t,i,e,(function(i,a,r){(n||Ee(i,t.chartArea,0))&&i.inRange(e.x,e.y,s)&&o.push({element:i,datasetIndex:a,index:r})}),!0),o}function Hi(t,e,i,s,n,o){let a=[];const r=function(t){const e=-1!==t.indexOf("x"),i=-1!==t.indexOf("y");return function(t,s){const n=e?Math.abs(t.x-s.x):0,o=i?Math.abs(t.y-s.y):0;return Math.sqrt(Math.pow(n,2)+Math.pow(o,2))}}(i);let l=Number.POSITIVE_INFINITY;return Ni(t,i,e,(function(i,h,c){const d=i.inRange(e.x,e.y,n);if(s&&!d)return;const u=i.getCenterPoint(n);if(!(!!o||t.isPointInArea(u))&&!d)return;const f=r(e,u);f<l?(a=[{element:i,datasetIndex:h,index:c}],l=f):f===l&&a.push({element:i,datasetIndex:h,index:c})})),a}function ji(t,e,i,s,n,o){return o||t.isPointInArea(e)?"r"!==i||s?Hi(t,e,i,s,n,o):function(t,e,i,s){let n=[];return Ni(t,i,e,(function(t,i,o){const{startAngle:a,endAngle:r}=t.getProps(["startAngle","endAngle"],s),{angle:l}=X(t,{x:e.x,y:e.y});Z(l,a,r)&&n.push({element:t,datasetIndex:i,index:o})})),n}(t,e,i,n):[]}function $i(t,e,i,s,n){const o=[],a="x"===i?"inXRange":"inYRange";let r=!1;return Ni(t,i,e,((t,s,l)=>{t[a](e[i],n)&&(o.push({element:t,datasetIndex:s,index:l}),r=r||t.inRange(e.x,e.y,n))})),s&&!r?[]:o}var Yi={evaluateInteractionItems:Ni,modes:{index(t,e,i,s){const n=ye(e,t),o=i.axis||"x",a=i.includeInvisible||!1,r=i.intersect?Wi(t,n,o,s,a):ji(t,n,o,!1,s,a),l=[];return r.length?(t.getSortedVisibleDatasetMetas().forEach((t=>{const e=r[0].index,i=t.data[e];i&&!i.skip&&l.push({element:i,datasetIndex:t.index,index:e})})),l):[]},dataset(t,e,i,s){const n=ye(e,t),o=i.axis||"xy",a=i.includeInvisible||!1;let r=i.intersect?Wi(t,n,o,s,a):ji(t,n,o,!1,s,a);if(r.length>0){const e=r[0].datasetIndex,i=t.getDatasetMeta(e).data;r=[];for(let t=0;t<i.length;++t)r.push({element:i[t],datasetIndex:e,index:t})}return r},point:(t,e,i,s)=>Wi(t,ye(e,t),i.axis||"xy",s,i.includeInvisible||!1),nearest(t,e,i,s){const n=ye(e,t),o=i.axis||"xy",a=i.includeInvisible||!1;return ji(t,n,o,i.intersect,s,a)},x:(t,e,i,s)=>$i(t,ye(e,t),"x",i.intersect,s),y:(t,e,i,s)=>$i(t,ye(e,t),"y",i.intersect,s)}};const Ui=["left","top","right","bottom"];function Xi(t,e){return t.filter((t=>t.pos===e))}function qi(t,e){return t.filter((t=>-1===Ui.indexOf(t.pos)&&t.box.axis===e))}function Ki(t,e){return t.sort(((t,i)=>{const s=e?i:t,n=e?t:i;return s.weight===n.weight?s.index-n.index:s.weight-n.weight}))}function Gi(t,e){const i=function(t){const e={};for(const i of t){const{stack:t,pos:s,stackWeight:n}=i;if(!t||!Ui.includes(s))continue;const o=e[t]||(e[t]={count:0,placed:0,weight:0,size:0});o.count++,o.weight+=n}return e}(t),{vBoxMaxWidth:s,hBoxMaxHeight:n}=e;let o,a,r;for(o=0,a=t.length;o<a;++o){r=t[o];const{fullSize:a}=r.box,l=i[r.stack],h=l&&r.stackWeight/l.weight;r.horizontal?(r.width=h?h*s:a&&e.availableWidth,r.height=n):(r.width=s,r.height=h?h*n:a&&e.availableHeight)}return i}function Zi(t,e,i,s){return Math.max(t[i],e[i])+Math.max(t[s],e[s])}function Ji(t,e){t.top=Math.max(t.top,e.top),t.left=Math.max(t.left,e.left),t.bottom=Math.max(t.bottom,e.bottom),t.right=Math.max(t.right,e.right)}function Qi(t,e,i,s){const{pos:n,box:a}=i,r=t.maxPadding;if(!o(n)){i.size&&(t[n]-=i.size);const e=s[i.stack]||{size:0,count:1};e.size=Math.max(e.size,i.horizontal?a.height:a.width),i.size=e.size/e.count,t[n]+=i.size}a.getPadding&&Ji(r,a.getPadding());const l=Math.max(0,e.outerWidth-Zi(r,t,"left","right")),h=Math.max(0,e.outerHeight-Zi(r,t,"top","bottom")),c=l!==t.w,d=h!==t.h;return t.w=l,t.h=h,i.horizontal?{same:c,other:d}:{same:d,other:c}}function ts(t,e){const i=e.maxPadding;function s(t){const s={left:0,top:0,right:0,bottom:0};return t.forEach((t=>{s[t]=Math.max(e[t],i[t])})),s}return s(t?["left","right"]:["top","bottom"])}function es(t,e,i,s){const n=[];let o,a,r,l,h,c;for(o=0,a=t.length,h=0;o<a;++o){r=t[o],l=r.box,l.update(r.width||e.w,r.height||e.h,ts(r.horizontal,e));const{same:a,other:d}=Qi(e,i,r,s);h|=a&&n.length,c=c||d,l.fullSize||n.push(r)}return h&&es(n,e,i,s)||c}function is(t,e,i,s,n){t.top=i,t.left=e,t.right=e+s,t.bottom=i+n,t.width=s,t.height=n}function ss(t,e,i,s){const n=i.padding;let{x:o,y:a}=e;for(const r of t){const t=r.box,l=s[r.stack]||{count:1,placed:0,weight:1},h=r.stackWeight/l.weight||1;if(r.horizontal){const s=e.w*h,o=l.size||t.height;k(l.start)&&(a=l.start),t.fullSize?is(t,n.left,a,i.outerWidth-n.right-n.left,o):is(t,e.left+l.placed,a,s,o),l.start=a,l.placed+=s,a=t.bottom}else{const s=e.h*h,a=l.size||t.width;k(l.start)&&(o=l.start),t.fullSize?is(t,o,n.top,a,i.outerHeight-n.bottom-n.top):is(t,o,e.top+l.placed,a,s),l.start=o,l.placed+=s,o=t.right}}e.x=o,e.y=a}var ns={addBox(t,e){t.boxes||(t.boxes=[]),e.fullSize=e.fullSize||!1,e.position=e.position||"top",e.weight=e.weight||0,e._layers=e._layers||function(){return[{z:0,draw(t){e.draw(t)}}]},t.boxes.push(e)},removeBox(t,e){const i=t.boxes?t.boxes.indexOf(e):-1;-1!==i&&t.boxes.splice(i,1)},configure(t,e,i){e.fullSize=i.fullSize,e.position=i.position,e.weight=i.weight},update(t,e,i,s){if(!t)return;const n=Mi(t.options.layout.padding),o=Math.max(e-n.width,0),a=Math.max(i-n.height,0),r=function(t){const e=function(t){const e=[];let i,s,n,o,a,r;for(i=0,s=(t||[]).length;i<s;++i)n=t[i],({position:o,options:{stack:a,stackWeight:r=1}}=n),e.push({index:i,box:n,pos:o,horizontal:n.isHorizontal(),weight:n.weight,stack:a&&o+a,stackWeight:r});return e}(t),i=Ki(e.filter((t=>t.box.fullSize)),!0),s=Ki(Xi(e,"left"),!0),n=Ki(Xi(e,"right")),o=Ki(Xi(e,"top"),!0),a=Ki(Xi(e,"bottom")),r=qi(e,"x"),l=qi(e,"y");return{fullSize:i,leftAndTop:s.concat(o),rightAndBottom:n.concat(l).concat(a).concat(r),chartArea:Xi(e,"chartArea"),vertical:s.concat(n).concat(l),horizontal:o.concat(a).concat(r)}}(t.boxes),l=r.vertical,h=r.horizontal;u(t.boxes,(t=>{"function"==typeof t.beforeLayout&&t.beforeLayout()}));const c=l.reduce(((t,e)=>e.box.options&&!1===e.box.options.display?t:t+1),0)||1,d=Object.freeze({outerWidth:e,outerHeight:i,padding:n,availableWidth:o,availableHeight:a,vBoxMaxWidth:o/2/c,hBoxMaxHeight:a/2}),f=Object.assign({},n);Ji(f,Mi(s));const g=Object.assign({maxPadding:f,w:o,h:a,x:n.left,y:n.top},n),p=Gi(l.concat(h),d);es(r.fullSize,g,d,p),es(l,g,d,p),es(h,g,d,p)&&es(l,g,d,p),function(t){const e=t.maxPadding;function i(i){const s=Math.max(e[i]-t[i],0);return t[i]+=s,s}t.y+=i("top"),t.x+=i("left"),i("right"),i("bottom")}(g),ss(r.leftAndTop,g,d,p),g.x+=g.w,g.y+=g.h,ss(r.rightAndBottom,g,d,p),t.chartArea={left:g.left,top:g.top,right:g.left+g.w,bottom:g.top+g.h,height:g.h,width:g.w},u(r.chartArea,(e=>{const i=e.box;Object.assign(i,t.chartArea),i.update(g.w,g.h,{left:0,top:0,right:0,bottom:0})}))}};class os{acquireContext(t,e){}releaseContext(t){return!1}addEventListener(t,e,i){}removeEventListener(t,e,i){}getDevicePixelRatio(){return 1}getMaximumSize(t,e,i,s){return e=Math.max(0,e||t.width),i=i||t.height,{width:e,height:Math.max(0,s?Math.floor(e/s):i)}}isAttached(t){return!0}updateConfig(t){}}class as extends os{acquireContext(t){return t&&t.getContext&&t.getContext("2d")||null}updateConfig(t){t.options.animation=!1}}const rs={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},ls=t=>null===t||""===t;const hs=!!ke&&{passive:!0};function cs(t,e,i){t.canvas.removeEventListener(e,i,hs)}function ds(t,e){for(const i of t)if(i===e||i.contains(e))return!0}function us(t,e,i){const s=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||ds(i.addedNodes,s),e=e&&!ds(i.removedNodes,s);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}function fs(t,e,i){const s=t.canvas,n=new MutationObserver((t=>{let e=!1;for(const i of t)e=e||ds(i.removedNodes,s),e=e&&!ds(i.addedNodes,s);e&&i()}));return n.observe(document,{childList:!0,subtree:!0}),n}const gs=new Map;let ps=0;function ms(){const t=window.devicePixelRatio;t!==ps&&(ps=t,gs.forEach(((e,i)=>{i.currentDevicePixelRatio!==t&&e()})))}function bs(t,e,i){const s=t.canvas,n=s&&ge(s);if(!n)return;const o=ct(((t,e)=>{const s=n.clientWidth;i(t,e),s<n.clientWidth&&i()}),window),a=new ResizeObserver((t=>{const e=t[0],i=e.contentRect.width,s=e.contentRect.height;0===i&&0===s||o(i,s)}));return a.observe(n),function(t,e){gs.size||window.addEventListener("resize",ms),gs.set(t,e)}(t,o),a}function xs(t,e,i){i&&i.disconnect(),"resize"===e&&function(t){gs.delete(t),gs.size||window.removeEventListener("resize",ms)}(t)}function _s(t,e,i){const s=t.canvas,n=ct((e=>{null!==t.ctx&&i(function(t,e){const i=rs[t.type]||t.type,{x:s,y:n}=ye(t,e);return{type:i,chart:e,native:t,x:void 0!==s?s:null,y:void 0!==n?n:null}}(e,t))}),t);return function(t,e,i){t.addEventListener(e,i,hs)}(s,e,n),n}class ys extends os{acquireContext(t,e){const i=t&&t.getContext&&t.getContext("2d");return i&&i.canvas===t?(function(t,e){const i=t.style,s=t.getAttribute("height"),n=t.getAttribute("width");if(t.$chartjs={initial:{height:s,width:n,style:{display:i.display,height:i.height,width:i.width}}},i.display=i.display||"block",i.boxSizing=i.boxSizing||"border-box",ls(n)){const e=Se(t,"width");void 0!==e&&(t.width=e)}if(ls(s))if(""===t.style.height)t.height=t.width/(e||2);else{const e=Se(t,"height");void 0!==e&&(t.height=e)}}(t,e),i):null}releaseContext(t){const e=t.canvas;if(!e.$chartjs)return!1;const i=e.$chartjs.initial;["height","width"].forEach((t=>{const n=i[t];s(n)?e.removeAttribute(t):e.setAttribute(t,n)}));const n=i.style||{};return Object.keys(n).forEach((t=>{e.style[t]=n[t]})),e.width=e.width,delete e.$chartjs,!0}addEventListener(t,e,i){this.removeEventListener(t,e);const s=t.$proxies||(t.$proxies={}),n={attach:us,detach:fs,resize:bs}[e]||_s;s[e]=n(t,e,i)}removeEventListener(t,e){const i=t.$proxies||(t.$proxies={}),s=i[e];if(!s)return;({attach:xs,detach:xs,resize:xs}[e]||cs)(t,e,s),i[e]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,e,i,s){return Me(t,e,i,s)}isAttached(t){const e=ge(t);return!(!e||!e.isConnected)}}function vs(t){return!fe()||"undefined"!=typeof OffscreenCanvas&&t instanceof OffscreenCanvas?as:ys}var Ms=Object.freeze({__proto__:null,_detectPlatform:vs,BasePlatform:os,BasicPlatform:as,DomPlatform:ys});const ws="transparent",ks={boolean:(t,e,i)=>i>.5?e:t,color(t,e,i){const s=Qt(t||ws),n=s.valid&&Qt(e||ws);return n&&n.valid?n.mix(s,i).hexString():e},number:(t,e,i)=>t+(e-t)*i};class Ss{constructor(t,e,i,s){const n=e[i];s=ki([t.to,s,n,t.from]);const o=ki([t.from,n,s]);this._active=!0,this._fn=t.fn||ks[t.type||typeof o],this._easing=ui[t.easing]||ui.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=e,this._prop=i,this._from=o,this._to=s,this._promises=void 0}active(){return this._active}update(t,e,i){if(this._active){this._notify(!1);const s=this._target[this._prop],n=i-this._start,o=this._duration-n;this._start=i,this._duration=Math.floor(Math.max(o,t.duration)),this._total+=n,this._loop=!!t.loop,this._to=ki([t.to,e,s,t.from]),this._from=ki([t.from,s,e])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){const e=t-this._start,i=this._duration,s=this._prop,n=this._from,o=this._loop,a=this._to;let r;if(this._active=n!==a&&(o||e<i),!this._active)return this._target[s]=a,void this._notify(!0);e<0?this._target[s]=n:(r=e/i%2,r=o&&r>1?2-r:r,r=this._easing(Math.min(1,Math.max(0,r))),this._target[s]=this._fn(n,a,r))}wait(){const t=this._promises||(this._promises=[]);return new Promise(((e,i)=>{t.push({res:e,rej:i})}))}_notify(t){const e=t?"res":"rej",i=this._promises||[];for(let t=0;t<i.length;t++)i[t][e]()}}class Ps{constructor(t,e){this._chart=t,this._properties=new Map,this.configure(e)}configure(t){if(!o(t))return;const e=Object.keys(ue.animation),i=this._properties;Object.getOwnPropertyNames(t).forEach((s=>{const a=t[s];if(!o(a))return;const r={};for(const t of e)r[t]=a[t];(n(a.properties)&&a.properties||[s]).forEach((t=>{t!==s&&i.has(t)||i.set(t,r)}))}))}_animateOptions(t,e){const i=e.options,s=function(t,e){if(!e)return;let i=t.options;if(!i)return void(t.options=e);i.$shared&&(t.options=i=Object.assign({},i,{$shared:!1,$animations:{}}));return i}(t,i);if(!s)return[];const n=this._createAnimations(s,i);return i.$shared&&function(t,e){const i=[],s=Object.keys(e);for(let e=0;e<s.length;e++){const n=t[s[e]];n&&n.active()&&i.push(n.wait())}return Promise.all(i)}(t.options.$animations,i).then((()=>{t.options=i}),(()=>{})),n}_createAnimations(t,e){const i=this._properties,s=[],n=t.$animations||(t.$animations={}),o=Object.keys(e),a=Date.now();let r;for(r=o.length-1;r>=0;--r){const l=o[r];if("$"===l.charAt(0))continue;if("options"===l){s.push(...this._animateOptions(t,e));continue}const h=e[l];let c=n[l];const d=i.get(l);if(c){if(d&&c.active()){c.update(d,h,a);continue}c.cancel()}d&&d.duration?(n[l]=c=new Ss(d,t,l,h),s.push(c)):t[l]=h}return s}update(t,e){if(0===this._properties.size)return void Object.assign(t,e);const i=this._createAnimations(t,e);return i.length?(xt.add(this._chart,i),!0):void 0}}function Ds(t,e){const i=t&&t.options||{},s=i.reverse,n=void 0===i.min?e:0,o=void 0===i.max?e:0;return{start:s?o:n,end:s?n:o}}function Cs(t,e){const i=[],s=t._getSortedDatasetMetas(e);let n,o;for(n=0,o=s.length;n<o;++n)i.push(s[n].index);return i}function Os(t,e,i,s={}){const n=t.keys,o="single"===s.mode;let r,l,h,c;if(null!==e){for(r=0,l=n.length;r<l;++r){if(h=+n[r],h===i){if(s.all)continue;break}c=t.values[h],a(c)&&(o||0===e||F(e)===F(c))&&(e+=c)}return e}}function As(t,e){const i=t&&t.options.stacked;return i||void 0===i&&void 0!==e.stack}function Ts(t,e,i){const s=t[e]||(t[e]={});return s[i]||(s[i]={})}function Ls(t,e,i,s){for(const n of e.getMatchingVisibleMetas(s).reverse()){const e=t[n.index];if(i&&e>0||!i&&e<0)return n.index}return null}function Es(t,e){const{chart:i,_cachedMeta:s}=t,n=i._stacks||(i._stacks={}),{iScale:o,vScale:a,index:r}=s,l=o.axis,h=a.axis,c=function(t,e,i){return`${t.id}.${e.id}.${i.stack||i.type}`}(o,a,s),d=e.length;let u;for(let t=0;t<d;++t){const i=e[t],{[l]:o,[h]:d}=i;u=(i._stacks||(i._stacks={}))[h]=Ts(n,c,o),u[r]=d,u._top=Ls(u,a,!0,s.type),u._bottom=Ls(u,a,!1,s.type);(u._visualValues||(u._visualValues={}))[r]=d}}function Rs(t,e){const i=t.scales;return Object.keys(i).filter((t=>i[t].axis===e)).shift()}function Is(t,e){const i=t.controller.index,s=t.vScale&&t.vScale.axis;if(s){e=e||t._parsed;for(const t of e){const e=t._stacks;if(!e||void 0===e[s]||void 0===e[s][i])return;delete e[s][i],void 0!==e[s]._visualValues&&void 0!==e[s]._visualValues[i]&&delete e[s]._visualValues[i]}}}const zs=t=>"reset"===t||"none"===t,Fs=(t,e)=>e?t:Object.assign({},t);class Vs{static defaults={};static datasetElementType=null;static dataElementType=null;constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=As(t.vScale,t),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(t){this.index!==t&&Is(this._cachedMeta),this.index=t}linkScales(){const t=this.chart,e=this._cachedMeta,i=this.getDataset(),s=(t,e,i,s)=>"x"===t?e:"r"===t?s:i,n=e.xAxisID=l(i.xAxisID,Rs(t,"x")),o=e.yAxisID=l(i.yAxisID,Rs(t,"y")),a=e.rAxisID=l(i.rAxisID,Rs(t,"r")),r=e.indexAxis,h=e.iAxisID=s(r,n,o,a),c=e.vAxisID=s(r,o,n,a);e.xScale=this.getScaleForId(n),e.yScale=this.getScaleForId(o),e.rScale=this.getScaleForId(a),e.iScale=this.getScaleForId(h),e.vScale=this.getScaleForId(c)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){const e=this._cachedMeta;return t===e.iScale?e.vScale:e.iScale}reset(){this._update("reset")}_destroy(){const t=this._cachedMeta;this._data&&rt(this._data,this),t._stacked&&Is(t)}_dataCheck(){const t=this.getDataset(),e=t.data||(t.data=[]),i=this._data;if(o(e))this._data=function(t){const e=Object.keys(t),i=new Array(e.length);let s,n,o;for(s=0,n=e.length;s<n;++s)o=e[s],i[s]={x:o,y:t[o]};return i}(e);else if(i!==e){if(i){rt(i,this);const t=this._cachedMeta;Is(t),t._parsed=[]}e&&Object.isExtensible(e)&&at(e,this),this._syncList=[],this._data=e}}addElements(){const t=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(t.dataset=new this.datasetElementType)}buildOrUpdateElements(t){const e=this._cachedMeta,i=this.getDataset();let s=!1;this._dataCheck();const n=e._stacked;e._stacked=As(e.vScale,e),e.stack!==i.stack&&(s=!0,Is(e),e.stack=i.stack),this._resyncElements(t),(s||n!==e._stacked)&&Es(this,e._parsed)}configure(){const t=this.chart.config,e=t.datasetScopeKeys(this._type),i=t.getOptionScopes(this.getDataset(),e,!0);this.options=t.createResolver(i,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(t,e){const{_cachedMeta:i,_data:s}=this,{iScale:a,_stacked:r}=i,l=a.axis;let h,c,d,u=0===t&&e===s.length||i._sorted,f=t>0&&i._parsed[t-1];if(!1===this._parsing)i._parsed=s,i._sorted=!0,d=s;else{d=n(s[t])?this.parseArrayData(i,s,t,e):o(s[t])?this.parseObjectData(i,s,t,e):this.parsePrimitiveData(i,s,t,e);const a=()=>null===c[l]||f&&c[l]<f[l];for(h=0;h<e;++h)i._parsed[h+t]=c=d[h],u&&(a()&&(u=!1),f=c);i._sorted=u}r&&Es(this,d)}parsePrimitiveData(t,e,i,s){const{iScale:n,vScale:o}=t,a=n.axis,r=o.axis,l=n.getLabels(),h=n===o,c=new Array(s);let d,u,f;for(d=0,u=s;d<u;++d)f=d+i,c[d]={[a]:h||n.parse(l[f],f),[r]:o.parse(e[f],f)};return c}parseArrayData(t,e,i,s){const{xScale:n,yScale:o}=t,a=new Array(s);let r,l,h,c;for(r=0,l=s;r<l;++r)h=r+i,c=e[h],a[r]={x:n.parse(c[0],h),y:o.parse(c[1],h)};return a}parseObjectData(t,e,i,s){const{xScale:n,yScale:o}=t,{xAxisKey:a="x",yAxisKey:r="y"}=this._parsing,l=new Array(s);let h,c,d,u;for(h=0,c=s;h<c;++h)d=h+i,u=e[d],l[h]={x:n.parse(M(u,a),d),y:o.parse(M(u,r),d)};return l}getParsed(t){return this._cachedMeta._parsed[t]}getDataElement(t){return this._cachedMeta.data[t]}applyStack(t,e,i){const s=this.chart,n=this._cachedMeta,o=e[t.axis];return Os({keys:Cs(s,!0),values:e._stacks[t.axis]._visualValues},o,n.index,{mode:i})}updateRangeFromParsed(t,e,i,s){const n=i[e.axis];let o=null===n?NaN:n;const a=s&&i._stacks[e.axis];s&&a&&(s.values=a,o=Os(s,n,this._cachedMeta.index)),t.min=Math.min(t.min,o),t.max=Math.max(t.max,o)}getMinMax(t,e){const i=this._cachedMeta,s=i._parsed,n=i._sorted&&t===i.iScale,o=s.length,r=this._getOtherScale(t),l=((t,e,i)=>t&&!e.hidden&&e._stacked&&{keys:Cs(i,!0),values:null})(e,i,this.chart),h={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY},{min:c,max:d}=function(t){const{min:e,max:i,minDefined:s,maxDefined:n}=t.getUserBounds();return{min:s?e:Number.NEGATIVE_INFINITY,max:n?i:Number.POSITIVE_INFINITY}}(r);let u,f;function g(){f=s[u];const e=f[r.axis];return!a(f[t.axis])||c>e||d<e}for(u=0;u<o&&(g()||(this.updateRangeFromParsed(h,t,f,l),!n));++u);if(n)for(u=o-1;u>=0;--u)if(!g()){this.updateRangeFromParsed(h,t,f,l);break}return h}getAllParsedValues(t){const e=this._cachedMeta._parsed,i=[];let s,n,o;for(s=0,n=e.length;s<n;++s)o=e[s][t.axis],a(o)&&i.push(o);return i}getMaxOverflow(){return!1}getLabelAndValue(t){const e=this._cachedMeta,i=e.iScale,s=e.vScale,n=this.getParsed(t);return{label:i?""+i.getLabelForValue(n[i.axis]):"",value:s?""+s.getLabelForValue(n[s.axis]):""}}_update(t){const e=this._cachedMeta;this.update(t||"default"),e._clip=function(t){let e,i,s,n;return o(t)?(e=t.top,i=t.right,s=t.bottom,n=t.left):e=i=s=n=t,{top:e,right:i,bottom:s,left:n,disabled:!1===t}}(l(this.options.clip,function(t,e,i){if(!1===i)return!1;const s=Ds(t,i),n=Ds(e,i);return{top:n.end,right:s.end,bottom:n.start,left:s.start}}(e.xScale,e.yScale,this.getMaxOverflow())))}update(t){}draw(){const t=this._ctx,e=this.chart,i=this._cachedMeta,s=i.data||[],n=e.chartArea,o=[],a=this._drawStart||0,r=this._drawCount||s.length-a,l=this.options.drawActiveElementsOnTop;let h;for(i.dataset&&i.dataset.draw(t,n,a,r),h=a;h<a+r;++h){const e=s[h];e.hidden||(e.active&&l?o.push(e):e.draw(t,n))}for(h=0;h<o.length;++h)o[h].draw(t,n)}getStyle(t,e){const i=e?"active":"default";return void 0===t&&this._cachedMeta.dataset?this.resolveDatasetElementOptions(i):this.resolveDataElementOptions(t||0,i)}getContext(t,e,i){const s=this.getDataset();let n;if(t>=0&&t<this._cachedMeta.data.length){const e=this._cachedMeta.data[t];n=e.$context||(e.$context=function(t,e,i){return Pi(t,{active:!1,dataIndex:e,parsed:void 0,raw:void 0,element:i,index:e,mode:"default",type:"data"})}(this.getContext(),t,e)),n.parsed=this.getParsed(t),n.raw=s.data[t],n.index=n.dataIndex=t}else n=this.$context||(this.$context=function(t,e){return Pi(t,{active:!1,dataset:void 0,datasetIndex:e,index:e,mode:"default",type:"dataset"})}(this.chart.getContext(),this.index)),n.dataset=s,n.index=n.datasetIndex=this.index;return n.active=!!e,n.mode=i,n}resolveDatasetElementOptions(t){return this._resolveElementOptions(this.datasetElementType.id,t)}resolveDataElementOptions(t,e){return this._resolveElementOptions(this.dataElementType.id,e,t)}_resolveElementOptions(t,e="default",i){const s="active"===e,n=this._cachedDataOpts,o=t+"-"+e,a=n[o],r=this.enableOptionSharing&&k(i);if(a)return Fs(a,r);const l=this.chart.config,h=l.datasetElementScopeKeys(this._type,t),c=s?[`${t}Hover`,"hover",t,""]:[t,""],d=l.getOptionScopes(this.getDataset(),h),u=Object.keys(ue.elements[t]),f=l.resolveNamedOptions(d,u,(()=>this.getContext(i,s,e)),c);return f.$shared&&(f.$shared=r,n[o]=Object.freeze(Fs(f,r))),f}_resolveAnimations(t,e,i){const s=this.chart,n=this._cachedDataOpts,o=`animation-${e}`,a=n[o];if(a)return a;let r;if(!1!==s.options.animation){const s=this.chart.config,n=s.datasetAnimationScopeKeys(this._type,e),o=s.getOptionScopes(this.getDataset(),n);r=s.createResolver(o,this.getContext(t,i,e))}const l=new Ps(s,r&&r.animations);return r&&r._cacheable&&(n[o]=Object.freeze(l)),l}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,e){return!e||zs(t)||this.chart._animationsDisabled}_getSharedOptions(t,e){const i=this.resolveDataElementOptions(t,e),s=this._sharedOptions,n=this.getSharedOptions(i),o=this.includeOptions(e,n)||n!==s;return this.updateSharedOptions(n,e,i),{sharedOptions:n,includeOptions:o}}updateElement(t,e,i,s){zs(s)?Object.assign(t,i):this._resolveAnimations(e,s).update(t,i)}updateSharedOptions(t,e,i){t&&!zs(e)&&this._resolveAnimations(void 0,e).update(t,i)}_setStyle(t,e,i,s){t.active=s;const n=this.getStyle(e,s);this._resolveAnimations(e,i,s).update(t,{options:!s&&this.getSharedOptions(n)||n})}removeHoverStyle(t,e,i){this._setStyle(t,i,"active",!1)}setHoverStyle(t,e,i){this._setStyle(t,i,"active",!0)}_removeDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!1)}_setDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!0)}_resyncElements(t){const e=this._data,i=this._cachedMeta.data;for(const[t,e,i]of this._syncList)this[t](e,i);this._syncList=[];const s=i.length,n=e.length,o=Math.min(n,s);o&&this.parse(0,o),n>s?this._insertElements(s,n-s,t):n<s&&this._removeElements(n,s-n)}_insertElements(t,e,i=!0){const s=this._cachedMeta,n=s.data,o=t+e;let a;const r=t=>{for(t.length+=e,a=t.length-1;a>=o;a--)t[a]=t[a-e]};for(r(n),a=t;a<o;++a)n[a]=new this.dataElementType;this._parsing&&r(s._parsed),this.parse(t,e),i&&this.updateElements(n,t,e,"reset")}updateElements(t,e,i,s){}_removeElements(t,e){const i=this._cachedMeta;if(this._parsing){const s=i._parsed.splice(t,e);i._stacked&&Is(i,s)}i.data.splice(t,e)}_sync(t){if(this._parsing)this._syncList.push(t);else{const[e,i,s]=t;this[e](i,s)}this.chart._dataChanges.push([this.index,...t])}_onDataPush(){const t=arguments.length;this._sync(["_insertElements",this.getDataset().data.length-t,t])}_onDataPop(){this._sync(["_removeElements",this._cachedMeta.data.length-1,1])}_onDataShift(){this._sync(["_removeElements",0,1])}_onDataSplice(t,e){e&&this._sync(["_removeElements",t,e]);const i=arguments.length-2;i&&this._sync(["_insertElements",t,i])}_onDataUnshift(){this._sync(["_insertElements",0,arguments.length])}}class Bs{static defaults={};static defaultRoutes=void 0;active=!1;tooltipPosition(t){const{x:e,y:i}=this.getProps(["x","y"],t);return{x:e,y:i}}hasValue(){return W(this.x)&&W(this.y)}getProps(t,e){const i=this.$animations;if(!e||!i)return this;const s={};return t.forEach((t=>{s[t]=i[t]&&i[t].active()?i[t]._to:this[t]})),s}}function Ns(t,e){const i=t.options.ticks,n=function(t){const e=t.options.offset,i=t._tickSize(),s=t._length/i+(e?0:1),n=t._maxLength/i;return Math.floor(Math.min(s,n))}(t),o=Math.min(i.maxTicksLimit||n,n),a=i.major.enabled?function(t){const e=[];let i,s;for(i=0,s=t.length;i<s;i++)t[i].major&&e.push(i);return e}(e):[],r=a.length,l=a[0],h=a[r-1],c=[];if(r>o)return function(t,e,i,s){let n,o=0,a=i[0];for(s=Math.ceil(s),n=0;n<t.length;n++)n===a&&(e.push(t[n]),o++,a=i[o*s])}(e,c,a,r/o),c;const d=function(t,e,i){const s=function(t){const e=t.length;let i,s;if(e<2)return!1;for(s=t[0],i=1;i<e;++i)if(t[i]-t[i-1]!==s)return!1;return s}(t),n=e.length/i;if(!s)return Math.max(n,1);const o=N(s);for(let t=0,e=o.length-1;t<e;t++){const e=o[t];if(e>n)return e}return Math.max(n,1)}(a,e,o);if(r>0){let t,i;const n=r>1?Math.round((h-l)/(r-1)):null;for(Ws(e,c,d,s(n)?0:l-n,l),t=0,i=r-1;t<i;t++)Ws(e,c,d,a[t],a[t+1]);return Ws(e,c,d,h,s(n)?e.length:h+n),c}return Ws(e,c,d),c}function Ws(t,e,i,s,n){const o=l(s,0),a=Math.min(l(n,t.length),t.length);let r,h,c,d=0;for(i=Math.ceil(i),n&&(r=n-s,i=r/Math.floor(r/i)),c=o;c<0;)d++,c=Math.round(o+d*i);for(h=Math.max(o,0);h<a;h++)h===c&&(e.push(t[h]),d++,c=Math.round(o+d*i))}const Hs=(t,e,i)=>"top"===e||"left"===e?t[e]+i:t[e]-i,js=(t,e)=>Math.min(e||t,t);function $s(t,e){const i=[],s=t.length/e,n=t.length;let o=0;for(;o<n;o+=s)i.push(t[Math.floor(o)]);return i}function Ys(t,e,i){const s=t.ticks.length,n=Math.min(e,s-1),o=t._startPixel,a=t._endPixel,r=1e-6;let l,h=t.getPixelForTick(n);if(!(i&&(l=1===s?Math.max(h-o,a-h):0===e?(t.getPixelForTick(1)-h)/2:(h-t.getPixelForTick(n-1))/2,h+=n<e?l:-l,h<o-r||h>a+r)))return h}function Us(t){return t.drawTicks?t.tickLength:0}function Xs(t,e){if(!t.display)return 0;const i=wi(t.font,e),s=Mi(t.padding);return(n(t.text)?t.text.length:1)*i.lineHeight+s.height}function qs(t,e,i){let s=ut(t);return(i&&"right"!==e||!i&&"right"===e)&&(s=(t=>"left"===t?"right":"right"===t?"left":t)(s)),s}class Ks extends Bs{constructor(t){super(),this.id=t.id,this.type=t.type,this.options=void 0,this.ctx=t.ctx,this.chart=t.chart,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this._margins={left:0,right:0,top:0,bottom:0},this.maxWidth=void 0,this.maxHeight=void 0,this.paddingTop=void 0,this.paddingBottom=void 0,this.paddingLeft=void 0,this.paddingRight=void 0,this.axis=void 0,this.labelRotation=void 0,this.min=void 0,this.max=void 0,this._range=void 0,this.ticks=[],this._gridLineItems=null,this._labelItems=null,this._labelSizes=null,this._length=0,this._maxLength=0,this._longestTextCache={},this._startPixel=void 0,this._endPixel=void 0,this._reversePixels=!1,this._userMax=void 0,this._userMin=void 0,this._suggestedMax=void 0,this._suggestedMin=void 0,this._ticksLength=0,this._borderValue=0,this._cache={},this._dataLimitsCached=!1,this.$context=void 0}init(t){this.options=t.setContext(this.getContext()),this.axis=t.axis,this._userMin=this.parse(t.min),this._userMax=this.parse(t.max),this._suggestedMin=this.parse(t.suggestedMin),this._suggestedMax=this.parse(t.suggestedMax)}parse(t,e){return t}getUserBounds(){let{_userMin:t,_userMax:e,_suggestedMin:i,_suggestedMax:s}=this;return t=r(t,Number.POSITIVE_INFINITY),e=r(e,Number.NEGATIVE_INFINITY),i=r(i,Number.POSITIVE_INFINITY),s=r(s,Number.NEGATIVE_INFINITY),{min:r(t,i),max:r(e,s),minDefined:a(t),maxDefined:a(e)}}getMinMax(t){let e,{min:i,max:s,minDefined:n,maxDefined:o}=this.getUserBounds();if(n&&o)return{min:i,max:s};const a=this.getMatchingVisibleMetas();for(let r=0,l=a.length;r<l;++r)e=a[r].controller.getMinMax(this,t),n||(i=Math.min(i,e.min)),o||(s=Math.max(s,e.max));return i=o&&i>s?s:i,s=n&&i>s?i:s,{min:r(i,r(s,i)),max:r(s,r(i,s))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}getLabelItems(t=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(t))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){d(this.options.beforeUpdate,[this])}update(t,e,i){const{beginAtZero:s,grace:n,ticks:o}=this.options,a=o.sampleSize;this.beforeUpdate(),this.maxWidth=t,this.maxHeight=e,this._margins=i=Object.assign({left:0,right:0,top:0,bottom:0},i),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+i.left+i.right:this.height+i.top+i.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=Si(this,n,s),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const r=a<this.ticks.length;this._convertTicksToLabels(r?$s(this.ticks,a):this.ticks),this.configure(),this.beforeCalculateLabelRotation(),this.calculateLabelRotation(),this.afterCalculateLabelRotation(),o.display&&(o.autoSkip||"auto"===o.source)&&(this.ticks=Ns(this,this.ticks),this._labelSizes=null,this.afterAutoSkip()),r&&this._convertTicksToLabels(this.ticks),this.beforeFit(),this.fit(),this.afterFit(),this.afterUpdate()}configure(){let t,e,i=this.options.reverse;this.isHorizontal()?(t=this.left,e=this.right):(t=this.top,e=this.bottom,i=!i),this._startPixel=t,this._endPixel=e,this._reversePixels=i,this._length=e-t,this._alignToPixels=this.options.alignToPixels}afterUpdate(){d(this.options.afterUpdate,[this])}beforeSetDimensions(){d(this.options.beforeSetDimensions,[this])}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=0,this.right=this.width):(this.height=this.maxHeight,this.top=0,this.bottom=this.height),this.paddingLeft=0,this.paddingTop=0,this.paddingRight=0,this.paddingBottom=0}afterSetDimensions(){d(this.options.afterSetDimensions,[this])}_callHooks(t){this.chart.notifyPlugins(t,this.getContext()),d(this.options[t],[this])}beforeDataLimits(){this._callHooks("beforeDataLimits")}determineDataLimits(){}afterDataLimits(){this._callHooks("afterDataLimits")}beforeBuildTicks(){this._callHooks("beforeBuildTicks")}buildTicks(){return[]}afterBuildTicks(){this._callHooks("afterBuildTicks")}beforeTickToLabelConversion(){d(this.options.beforeTickToLabelConversion,[this])}generateTickLabels(t){const e=this.options.ticks;let i,s,n;for(i=0,s=t.length;i<s;i++)n=t[i],n.label=d(e.callback,[n.value,i,t],this)}afterTickToLabelConversion(){d(this.options.afterTickToLabelConversion,[this])}beforeCalculateLabelRotation(){d(this.options.beforeCalculateLabelRotation,[this])}calculateLabelRotation(){const t=this.options,e=t.ticks,i=js(this.ticks.length,t.ticks.maxTicksLimit),s=e.minRotation||0,n=e.maxRotation;let o,a,r,l=s;if(!this._isVisible()||!e.display||s>=n||i<=1||!this.isHorizontal())return void(this.labelRotation=s);const h=this._getLabelSizes(),c=h.widest.width,d=h.highest.height,u=J(this.chart.width-c,0,this.maxWidth);o=t.offset?this.maxWidth/i:u/(i-1),c+6>o&&(o=u/(i-(t.offset?.5:1)),a=this.maxHeight-Us(t.grid)-e.padding-Xs(t.title,this.chart.options.font),r=Math.sqrt(c*c+d*d),l=Y(Math.min(Math.asin(J((h.highest.height+6)/o,-1,1)),Math.asin(J(a/r,-1,1))-Math.asin(J(d/r,-1,1)))),l=Math.max(s,Math.min(n,l))),this.labelRotation=l}afterCalculateLabelRotation(){d(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){d(this.options.beforeFit,[this])}fit(){const t={width:0,height:0},{chart:e,options:{ticks:i,title:s,grid:n}}=this,o=this._isVisible(),a=this.isHorizontal();if(o){const o=Xs(s,e.options.font);if(a?(t.width=this.maxWidth,t.height=Us(n)+o):(t.height=this.maxHeight,t.width=Us(n)+o),i.display&&this.ticks.length){const{first:e,last:s,widest:n,highest:o}=this._getLabelSizes(),r=2*i.padding,l=$(this.labelRotation),h=Math.cos(l),c=Math.sin(l);if(a){const e=i.mirror?0:c*n.width+h*o.height;t.height=Math.min(this.maxHeight,t.height+e+r)}else{const e=i.mirror?0:h*n.width+c*o.height;t.width=Math.min(this.maxWidth,t.width+e+r)}this._calculatePadding(e,s,c,h)}}this._handleMargins(),a?(this.width=this._length=e.width-this._margins.left-this._margins.right,this.height=t.height):(this.width=t.width,this.height=this._length=e.height-this._margins.top-this._margins.bottom)}_calculatePadding(t,e,i,s){const{ticks:{align:n,padding:o},position:a}=this.options,r=0!==this.labelRotation,l="top"!==a&&"x"===this.axis;if(this.isHorizontal()){const a=this.getPixelForTick(0)-this.left,h=this.right-this.getPixelForTick(this.ticks.length-1);let c=0,d=0;r?l?(c=s*t.width,d=i*e.height):(c=i*t.height,d=s*e.width):"start"===n?d=e.width:"end"===n?c=t.width:"inner"!==n&&(c=t.width/2,d=e.width/2),this.paddingLeft=Math.max((c-a+o)*this.width/(this.width-a),0),this.paddingRight=Math.max((d-h+o)*this.width/(this.width-h),0)}else{let i=e.height/2,s=t.height/2;"start"===n?(i=0,s=t.height):"end"===n&&(i=e.height,s=0),this.paddingTop=i+o,this.paddingBottom=s+o}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){d(this.options.afterFit,[this])}isHorizontal(){const{axis:t,position:e}=this.options;return"top"===e||"bottom"===e||"x"===t}isFullSize(){return this.options.fullSize}_convertTicksToLabels(t){let e,i;for(this.beforeTickToLabelConversion(),this.generateTickLabels(t),e=0,i=t.length;e<i;e++)s(t[e].label)&&(t.splice(e,1),i--,e--);this.afterTickToLabelConversion()}_getLabelSizes(){let t=this._labelSizes;if(!t){const e=this.options.ticks.sampleSize;let i=this.ticks;e<i.length&&(i=$s(i,e)),this._labelSizes=t=this._computeLabelSizes(i,i.length,this.options.ticks.maxTicksLimit)}return t}_computeLabelSizes(t,e,i){const{ctx:o,_longestTextCache:a}=this,r=[],l=[],h=Math.floor(e/js(e,i));let c,d,f,g,p,m,b,x,_,y,v,M=0,w=0;for(c=0;c<e;c+=h){if(g=t[c].label,p=this._resolveTickFontOptions(c),o.font=m=p.string,b=a[m]=a[m]||{data:{},gc:[]},x=p.lineHeight,_=y=0,s(g)||n(g)){if(n(g))for(d=0,f=g.length;d<f;++d)v=g[d],s(v)||n(v)||(_=De(o,b.data,b.gc,_,v),y+=x)}else _=De(o,b.data,b.gc,_,g),y=x;r.push(_),l.push(y),M=Math.max(_,M),w=Math.max(y,w)}!function(t,e){u(t,(t=>{const i=t.gc,s=i.length/2;let n;if(s>e){for(n=0;n<s;++n)delete t.data[i[n]];i.splice(0,s)}}))}(a,e);const k=r.indexOf(M),S=l.indexOf(w),P=t=>({width:r[t]||0,height:l[t]||0});return{first:P(0),last:P(e-1),widest:P(k),highest:P(S),widths:r,heights:l}}getLabelForValue(t){return t}getPixelForValue(t,e){return NaN}getValueForPixel(t){}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);const e=this._startPixel+t*this._length;return Q(this._alignToPixels?Oe(this.chart,e,0):e)}getDecimalForPixel(t){const e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0}getContext(t){const e=this.ticks||[];if(t>=0&&t<e.length){const i=e[t];return i.$context||(i.$context=function(t,e,i){return Pi(t,{tick:i,index:e,type:"tick"})}(this.getContext(),t,i))}return this.$context||(this.$context=Pi(this.chart.getContext(),{scale:this,type:"scale"}))}_tickSize(){const t=this.options.ticks,e=$(this.labelRotation),i=Math.abs(Math.cos(e)),s=Math.abs(Math.sin(e)),n=this._getLabelSizes(),o=t.autoSkipPadding||0,a=n?n.widest.width+o:0,r=n?n.highest.height+o:0;return this.isHorizontal()?r*i>a*s?a/i:r/s:r*s<a*i?r/i:a/s}_isVisible(){const t=this.options.display;return"auto"!==t?!!t:this.getMatchingVisibleMetas().length>0}_computeGridLineItems(t){const e=this.axis,i=this.chart,s=this.options,{grid:n,position:a,border:r}=s,h=n.offset,c=this.isHorizontal(),d=this.ticks.length+(h?1:0),u=Us(n),f=[],g=r.setContext(this.getContext()),p=g.display?g.width:0,m=p/2,b=function(t){return Oe(i,t,p)};let x,_,y,v,M,w,k,S,P,D,C,O;if("top"===a)x=b(this.bottom),w=this.bottom-u,S=x-m,D=b(t.top)+m,O=t.bottom;else if("bottom"===a)x=b(this.top),D=t.top,O=b(t.bottom)-m,w=x+m,S=this.top+u;else if("left"===a)x=b(this.right),M=this.right-u,k=x-m,P=b(t.left)+m,C=t.right;else if("right"===a)x=b(this.left),P=t.left,C=b(t.right)-m,M=x+m,k=this.left+u;else if("x"===e){if("center"===a)x=b((t.top+t.bottom)/2+.5);else if(o(a)){const t=Object.keys(a)[0],e=a[t];x=b(this.chart.scales[t].getPixelForValue(e))}D=t.top,O=t.bottom,w=x+m,S=w+u}else if("y"===e){if("center"===a)x=b((t.left+t.right)/2);else if(o(a)){const t=Object.keys(a)[0],e=a[t];x=b(this.chart.scales[t].getPixelForValue(e))}M=x-m,k=M-u,P=t.left,C=t.right}const A=l(s.ticks.maxTicksLimit,d),T=Math.max(1,Math.ceil(d/A));for(_=0;_<d;_+=T){const t=this.getContext(_),e=n.setContext(t),s=r.setContext(t),o=e.lineWidth,a=e.color,l=s.dash||[],d=s.dashOffset,u=e.tickWidth,g=e.tickColor,p=e.tickBorderDash||[],m=e.tickBorderDashOffset;y=Ys(this,_,h),void 0!==y&&(v=Oe(i,y,o),c?M=k=P=C=v:w=S=D=O=v,f.push({tx1:M,ty1:w,tx2:k,ty2:S,x1:P,y1:D,x2:C,y2:O,width:o,color:a,borderDash:l,borderDashOffset:d,tickWidth:u,tickColor:g,tickBorderDash:p,tickBorderDashOffset:m}))}return this._ticksLength=d,this._borderValue=x,f}_computeLabelItems(t){const e=this.axis,i=this.options,{position:s,ticks:a}=i,r=this.isHorizontal(),l=this.ticks,{align:h,crossAlign:c,padding:d,mirror:u}=a,f=Us(i.grid),g=f+d,p=u?-d:g,m=-$(this.labelRotation),b=[];let x,_,y,v,M,w,k,S,P,D,C,O,A="middle";if("top"===s)w=this.bottom-p,k=this._getXAxisLabelAlignment();else if("bottom"===s)w=this.top+p,k=this._getXAxisLabelAlignment();else if("left"===s){const t=this._getYAxisLabelAlignment(f);k=t.textAlign,M=t.x}else if("right"===s){const t=this._getYAxisLabelAlignment(f);k=t.textAlign,M=t.x}else if("x"===e){if("center"===s)w=(t.top+t.bottom)/2+g;else if(o(s)){const t=Object.keys(s)[0],e=s[t];w=this.chart.scales[t].getPixelForValue(e)+g}k=this._getXAxisLabelAlignment()}else if("y"===e){if("center"===s)M=(t.left+t.right)/2-g;else if(o(s)){const t=Object.keys(s)[0],e=s[t];M=this.chart.scales[t].getPixelForValue(e)}k=this._getYAxisLabelAlignment(f).textAlign}"y"===e&&("start"===h?A="top":"end"===h&&(A="bottom"));const T=this._getLabelSizes();for(x=0,_=l.length;x<_;++x){y=l[x],v=y.label;const t=a.setContext(this.getContext(x));S=this.getPixelForTick(x)+a.labelOffset,P=this._resolveTickFontOptions(x),D=P.lineHeight,C=n(v)?v.length:1;const e=C/2,i=t.color,o=t.textStrokeColor,h=t.textStrokeWidth;let d,f=k;if(r?(M=S,"inner"===k&&(f=x===_-1?this.options.reverse?"left":"right":0===x?this.options.reverse?"right":"left":"center"),O="top"===s?"near"===c||0!==m?-C*D+D/2:"center"===c?-T.highest.height/2-e*D+D:-T.highest.height+D/2:"near"===c||0!==m?D/2:"center"===c?T.highest.height/2-e*D:T.highest.height-C*D,u&&(O*=-1),0===m||t.showLabelBackdrop||(M+=D/2*Math.sin(m))):(w=S,O=(1-C)*D/2),t.showLabelBackdrop){const e=Mi(t.backdropPadding),i=T.heights[x],s=T.widths[x];let n=O-e.top,o=0-e.left;switch(A){case"middle":n-=i/2;break;case"bottom":n-=i}switch(k){case"center":o-=s/2;break;case"right":o-=s}d={left:o,top:n,width:s+e.width,height:i+e.height,color:t.backdropColor}}b.push({label:v,font:P,textOffset:O,options:{rotation:m,color:i,strokeColor:o,strokeWidth:h,textAlign:f,textBaseline:A,translation:[M,w],backdrop:d}})}return b}_getXAxisLabelAlignment(){const{position:t,ticks:e}=this.options;if(-$(this.labelRotation))return"top"===t?"left":"right";let i="center";return"start"===e.align?i="left":"end"===e.align?i="right":"inner"===e.align&&(i="inner"),i}_getYAxisLabelAlignment(t){const{position:e,ticks:{crossAlign:i,mirror:s,padding:n}}=this.options,o=t+n,a=this._getLabelSizes().widest.width;let r,l;return"left"===e?s?(l=this.right+n,"near"===i?r="left":"center"===i?(r="center",l+=a/2):(r="right",l+=a)):(l=this.right-o,"near"===i?r="right":"center"===i?(r="center",l-=a/2):(r="left",l=this.left)):"right"===e?s?(l=this.left+n,"near"===i?r="right":"center"===i?(r="center",l-=a/2):(r="left",l-=a)):(l=this.left+o,"near"===i?r="left":"center"===i?(r="center",l+=a/2):(r="right",l=this.right)):r="right",{textAlign:r,x:l}}_computeLabelArea(){if(this.options.ticks.mirror)return;const t=this.chart,e=this.options.position;return"left"===e||"right"===e?{top:0,left:this.left,bottom:t.height,right:this.right}:"top"===e||"bottom"===e?{top:this.top,left:0,bottom:this.bottom,right:t.width}:void 0}drawBackground(){const{ctx:t,options:{backgroundColor:e},left:i,top:s,width:n,height:o}=this;e&&(t.save(),t.fillStyle=e,t.fillRect(i,s,n,o),t.restore())}getLineWidthForValue(t){const e=this.options.grid;if(!this._isVisible()||!e.display)return 0;const i=this.ticks.findIndex((e=>e.value===t));if(i>=0){return e.setContext(this.getContext(i)).lineWidth}return 0}drawGrid(t){const e=this.options.grid,i=this.ctx,s=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t));let n,o;const a=(t,e,s)=>{s.width&&s.color&&(i.save(),i.lineWidth=s.width,i.strokeStyle=s.color,i.setLineDash(s.borderDash||[]),i.lineDashOffset=s.borderDashOffset,i.beginPath(),i.moveTo(t.x,t.y),i.lineTo(e.x,e.y),i.stroke(),i.restore())};if(e.display)for(n=0,o=s.length;n<o;++n){const t=s[n];e.drawOnChartArea&&a({x:t.x1,y:t.y1},{x:t.x2,y:t.y2},t),e.drawTicks&&a({x:t.tx1,y:t.ty1},{x:t.tx2,y:t.ty2},{color:t.tickColor,width:t.tickWidth,borderDash:t.tickBorderDash,borderDashOffset:t.tickBorderDashOffset})}}drawBorder(){const{chart:t,ctx:e,options:{border:i,grid:s}}=this,n=i.setContext(this.getContext()),o=i.display?n.width:0;if(!o)return;const a=s.setContext(this.getContext(0)).lineWidth,r=this._borderValue;let l,h,c,d;this.isHorizontal()?(l=Oe(t,this.left,o)-o/2,h=Oe(t,this.right,a)+a/2,c=d=r):(c=Oe(t,this.top,o)-o/2,d=Oe(t,this.bottom,a)+a/2,l=h=r),e.save(),e.lineWidth=n.width,e.strokeStyle=n.color,e.beginPath(),e.moveTo(l,c),e.lineTo(h,d),e.stroke(),e.restore()}drawLabels(t){if(!this.options.ticks.display)return;const e=this.ctx,i=this._computeLabelArea();i&&Re(e,i);const s=this.getLabelItems(t);for(const t of s){const i=t.options,s=t.font;Ve(e,t.label,0,t.textOffset,s,i)}i&&Ie(e)}drawTitle(){const{ctx:t,options:{position:e,title:i,reverse:s}}=this;if(!i.display)return;const a=wi(i.font),r=Mi(i.padding),l=i.align;let h=a.lineHeight/2;"bottom"===e||"center"===e||o(e)?(h+=r.bottom,n(i.text)&&(h+=a.lineHeight*(i.text.length-1))):h+=r.top;const{titleX:c,titleY:d,maxWidth:u,rotation:f}=function(t,e,i,s){const{top:n,left:a,bottom:r,right:l,chart:h}=t,{chartArea:c,scales:d}=h;let u,f,g,p=0;const m=r-n,b=l-a;if(t.isHorizontal()){if(f=ft(s,a,l),o(i)){const t=Object.keys(i)[0],s=i[t];g=d[t].getPixelForValue(s)+m-e}else g="center"===i?(c.bottom+c.top)/2+m-e:Hs(t,i,e);u=l-a}else{if(o(i)){const t=Object.keys(i)[0],s=i[t];f=d[t].getPixelForValue(s)-b+e}else f="center"===i?(c.left+c.right)/2-b+e:Hs(t,i,e);g=ft(s,r,n),p="left"===i?-E:E}return{titleX:f,titleY:g,maxWidth:u,rotation:p}}(this,h,e,l);Ve(t,i.text,0,0,a,{color:i.color,maxWidth:u,rotation:f,textAlign:qs(l,e,s),textBaseline:"middle",translation:[c,d]})}draw(t){this._isVisible()&&(this.drawBackground(),this.drawGrid(t),this.drawBorder(),this.drawTitle(),this.drawLabels(t))}_layers(){const t=this.options,e=t.ticks&&t.ticks.z||0,i=l(t.grid&&t.grid.z,-1),s=l(t.border&&t.border.z,0);return this._isVisible()&&this.draw===Ks.prototype.draw?[{z:i,draw:t=>{this.drawBackground(),this.drawGrid(t),this.drawTitle()}},{z:s,draw:()=>{this.drawBorder()}},{z:e,draw:t=>{this.drawLabels(t)}}]:[{z:e,draw:t=>{this.draw(t)}}]}getMatchingVisibleMetas(t){const e=this.chart.getSortedVisibleDatasetMetas(),i=this.axis+"AxisID",s=[];let n,o;for(n=0,o=e.length;n<o;++n){const o=e[n];o[i]!==this.id||t&&o.type!==t||s.push(o)}return s}_resolveTickFontOptions(t){return wi(this.options.ticks.setContext(this.getContext(t)).font)}_maxDigits(){const t=this._resolveTickFontOptions(0).lineHeight;return(this.isHorizontal()?this.width:this.height)/t}}class Gs{constructor(t,e,i){this.type=t,this.scope=e,this.override=i,this.items=Object.create(null)}isForType(t){return Object.prototype.isPrototypeOf.call(this.type.prototype,t.prototype)}register(t){const e=Object.getPrototypeOf(t);let i;(function(t){return"id"in t&&"defaults"in t})(e)&&(i=this.register(e));const s=this.items,n=t.id,o=this.scope+"."+n;if(!n)throw new Error("class does not have id: "+t);return n in s||(s[n]=t,function(t,e,i){const s=b(Object.create(null),[i?ue.get(i):{},ue.get(e),t.defaults]);ue.set(e,s),t.defaultRoutes&&function(t,e){Object.keys(e).forEach((i=>{const s=i.split("."),n=s.pop(),o=[t].concat(s).join("."),a=e[i].split("."),r=a.pop(),l=a.join(".");ue.route(o,n,l,r)}))}(e,t.defaultRoutes);t.descriptors&&ue.describe(e,t.descriptors)}(t,o,i),this.override&&ue.override(t.id,t.overrides)),o}get(t){return this.items[t]}unregister(t){const e=this.items,i=t.id,s=this.scope;i in e&&delete e[i],s&&i in ue[s]&&(delete ue[s][i],this.override&&delete re[i])}}class Zs{constructor(){this.controllers=new Gs(Vs,"datasets",!0),this.elements=new Gs(Bs,"elements"),this.plugins=new Gs(Object,"plugins"),this.scales=new Gs(Ks,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...t){this._each("register",t)}remove(...t){this._each("unregister",t)}addControllers(...t){this._each("register",t,this.controllers)}addElements(...t){this._each("register",t,this.elements)}addPlugins(...t){this._each("register",t,this.plugins)}addScales(...t){this._each("register",t,this.scales)}getController(t){return this._get(t,this.controllers,"controller")}getElement(t){return this._get(t,this.elements,"element")}getPlugin(t){return this._get(t,this.plugins,"plugin")}getScale(t){return this._get(t,this.scales,"scale")}removeControllers(...t){this._each("unregister",t,this.controllers)}removeElements(...t){this._each("unregister",t,this.elements)}removePlugins(...t){this._each("unregister",t,this.plugins)}removeScales(...t){this._each("unregister",t,this.scales)}_each(t,e,i){[...e].forEach((e=>{const s=i||this._getRegistryForType(e);i||s.isForType(e)||s===this.plugins&&e.id?this._exec(t,s,e):u(e,(e=>{const s=i||this._getRegistryForType(e);this._exec(t,s,e)}))}))}_exec(t,e,i){const s=w(t);d(i["before"+s],[],i),e[t](i),d(i["after"+s],[],i)}_getRegistryForType(t){for(let e=0;e<this._typedRegistries.length;e++){const i=this._typedRegistries[e];if(i.isForType(t))return i}return this.plugins}_get(t,e,i){const s=e.get(t);if(void 0===s)throw new Error('"'+t+'" is not a registered '+i+".");return s}}var Js=new Zs;class Qs{constructor(){this._init=[]}notify(t,e,i,s){"beforeInit"===e&&(this._init=this._createDescriptors(t,!0),this._notify(this._init,t,"install"));const n=s?this._descriptors(t).filter(s):this._descriptors(t),o=this._notify(n,t,e,i);return"afterDestroy"===e&&(this._notify(n,t,"stop"),this._notify(this._init,t,"uninstall")),o}_notify(t,e,i,s){s=s||{};for(const n of t){const t=n.plugin;if(!1===d(t[i],[e,s,n.options],t)&&s.cancelable)return!1}return!0}invalidate(){s(this._cache)||(this._oldCache=this._cache,this._cache=void 0)}_descriptors(t){if(this._cache)return this._cache;const e=this._cache=this._createDescriptors(t);return this._notifyStateChanges(t),e}_createDescriptors(t,e){const i=t&&t.config,s=l(i.options&&i.options.plugins,{}),n=function(t){const e={},i=[],s=Object.keys(Js.plugins.items);for(let t=0;t<s.length;t++)i.push(Js.getPlugin(s[t]));const n=t.plugins||[];for(let t=0;t<n.length;t++){const s=n[t];-1===i.indexOf(s)&&(i.push(s),e[s.id]=!0)}return{plugins:i,localIds:e}}(i);return!1!==s||e?function(t,{plugins:e,localIds:i},s,n){const o=[],a=t.getContext();for(const r of e){const e=r.id,l=tn(s[e],n);null!==l&&o.push({plugin:r,options:en(t.config,{plugin:r,local:i[e]},l,a)})}return o}(t,n,s,e):[]}_notifyStateChanges(t){const e=this._oldCache||[],i=this._cache,s=(t,e)=>t.filter((t=>!e.some((e=>t.plugin.id===e.plugin.id))));this._notify(s(e,i),t,"stop"),this._notify(s(i,e),t,"start")}}function tn(t,e){return e||!1!==t?!0===t?{}:t:null}function en(t,{plugin:e,local:i},s,n){const o=t.pluginScopeKeys(e),a=t.getOptionScopes(s,o);return i&&e.defaults&&a.push(e.defaults),t.createResolver(a,n,[""],{scriptable:!1,indexable:!1,allKeys:!0})}function sn(t,e){const i=ue.datasets[t]||{};return((e.datasets||{})[t]||{}).indexAxis||e.indexAxis||i.indexAxis||"x"}function nn(t,e){if("x"===t||"y"===t||"r"===t)return t;var i;if(t=e.axis||("top"===(i=e.position)||"bottom"===i?"x":"left"===i||"right"===i?"y":void 0)||t.length>1&&nn(t[0].toLowerCase(),e))return t;throw new Error(`Cannot determine type of '${name}' axis. Please provide 'axis' or 'position' option.`)}function on(t){const e=t.options||(t.options={});e.plugins=l(e.plugins,{}),e.scales=function(t,e){const i=re[t.type]||{scales:{}},s=e.scales||{},n=sn(t.type,e),a=Object.create(null);return Object.keys(s).forEach((t=>{const e=s[t];if(!o(e))return console.error(`Invalid scale configuration for scale: ${t}`);if(e._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${t}`);const r=nn(t,e),l=function(t,e){return t===e?"_index_":"_value_"}(r,n),h=i.scales||{};a[t]=x(Object.create(null),[{axis:r},e,h[r],h[l]])})),t.data.datasets.forEach((i=>{const n=i.type||t.type,o=i.indexAxis||sn(n,e),r=(re[n]||{}).scales||{};Object.keys(r).forEach((t=>{const e=function(t,e){let i=t;return"_index_"===t?i=e:"_value_"===t&&(i="x"===e?"y":"x"),i}(t,o),n=i[e+"AxisID"]||e;a[n]=a[n]||Object.create(null),x(a[n],[{axis:e},s[n],r[t]])}))})),Object.keys(a).forEach((t=>{const e=a[t];x(e,[ue.scales[e.type],ue.scale])})),a}(t,e)}function an(t){return(t=t||{}).datasets=t.datasets||[],t.labels=t.labels||[],t}const rn=new Map,ln=new Set;function hn(t,e){let i=rn.get(t);return i||(i=e(),rn.set(t,i),ln.add(i)),i}const cn=(t,e,i)=>{const s=M(e,i);void 0!==s&&t.add(s)};class dn{constructor(t){this._config=function(t){return(t=t||{}).data=an(t.data),on(t),t}(t),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=an(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){const t=this._config;this.clearCache(),on(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return hn(t,(()=>[[`datasets.${t}`,""]]))}datasetAnimationScopeKeys(t,e){return hn(`${t}.transition.${e}`,(()=>[[`datasets.${t}.transitions.${e}`,`transitions.${e}`],[`datasets.${t}`,""]]))}datasetElementScopeKeys(t,e){return hn(`${t}-${e}`,(()=>[[`datasets.${t}.elements.${e}`,`datasets.${t}`,`elements.${e}`,""]]))}pluginScopeKeys(t){const e=t.id;return hn(`${this.type}-plugin-${e}`,(()=>[[`plugins.${e}`,...t.additionalOptionScopes||[]]]))}_cachedScopes(t,e){const i=this._scopeCache;let s=i.get(t);return s&&!e||(s=new Map,i.set(t,s)),s}getOptionScopes(t,e,i){const{options:s,type:n}=this,o=this._cachedScopes(t,i),a=o.get(e);if(a)return a;const r=new Set;e.forEach((e=>{t&&(r.add(t),e.forEach((e=>cn(r,t,e)))),e.forEach((t=>cn(r,s,t))),e.forEach((t=>cn(r,re[n]||{},t))),e.forEach((t=>cn(r,ue,t))),e.forEach((t=>cn(r,le,t)))}));const l=Array.from(r);return 0===l.length&&l.push(Object.create(null)),ln.has(e)&&o.set(e,l),l}chartOptionScopes(){const{options:t,type:e}=this;return[t,re[e]||{},ue.datasets[e]||{},{type:e},ue,le]}resolveNamedOptions(t,e,i,s=[""]){const o={$shared:!0},{resolver:a,subPrefixes:r}=un(this._resolverCache,t,s);let l=a;if(function(t,e){const{isScriptable:i,isIndexable:s}=$e(t);for(const o of e){const e=i(o),a=s(o),r=(a||e)&&t[o];if(e&&(S(r)||fn(r))||a&&n(r))return!0}return!1}(a,e)){o.$shared=!1;l=je(a,i=S(i)?i():i,this.createResolver(t,i,r))}for(const t of e)o[t]=l[t];return o}createResolver(t,e,i=[""],s){const{resolver:n}=un(this._resolverCache,t,i);return o(e)?je(n,e,void 0,s):n}}function un(t,e,i){let s=t.get(e);s||(s=new Map,t.set(e,s));const n=i.join();let o=s.get(n);if(!o){o={resolver:He(e,i),subPrefixes:i.filter((t=>!t.toLowerCase().includes("hover")))},s.set(n,o)}return o}const fn=t=>o(t)&&Object.getOwnPropertyNames(t).reduce(((e,i)=>e||S(t[i])),!1);const gn=["top","bottom","left","right","chartArea"];function pn(t,e){return"top"===t||"bottom"===t||-1===gn.indexOf(t)&&"x"===e}function mn(t,e){return function(i,s){return i[t]===s[t]?i[e]-s[e]:i[t]-s[t]}}function bn(t){const e=t.chart,i=e.options.animation;e.notifyPlugins("afterRender"),d(i&&i.onComplete,[t],e)}function xn(t){const e=t.chart,i=e.options.animation;d(i&&i.onProgress,[t],e)}function _n(t){return fe()&&"string"==typeof t?t=document.getElementById(t):t&&t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas),t}const yn={},vn=t=>{const e=_n(t);return Object.values(yn).filter((t=>t.canvas===e)).pop()};function Mn(t,e,i){const s=Object.keys(t);for(const n of s){const s=+n;if(s>=e){const o=t[n];delete t[n],(i>0||s>e)&&(t[s+i]=o)}}}class wn{static defaults=ue;static instances=yn;static overrides=re;static registry=Js;static version="4.2.1";static getChart=vn;static register(...t){Js.add(...t),kn()}static unregister(...t){Js.remove(...t),kn()}constructor(t,e){const s=this.config=new dn(e),n=_n(t),o=vn(n);if(o)throw new Error("Canvas is already in use. Chart with ID '"+o.id+"' must be destroyed before the canvas with ID '"+o.canvas.id+"' can be reused.");const a=s.createResolver(s.chartOptionScopes(),this.getContext());this.platform=new(s.platform||vs(n)),this.platform.updateConfig(s);const r=this.platform.acquireContext(n,a.aspectRatio),l=r&&r.canvas,h=l&&l.height,c=l&&l.width;this.id=i(),this.ctx=r,this.canvas=l,this.width=c,this.height=h,this._options=a,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new Qs,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=dt((t=>this.update(t)),a.resizeDelay||0),this._dataChanges=[],yn[this.id]=this,r&&l?(xt.listen(this,"complete",bn),xt.listen(this,"progress",xn),this._initialize(),this.attached&&this.update()):console.error("Failed to create chart: can't acquire context from the given item")}get aspectRatio(){const{options:{aspectRatio:t,maintainAspectRatio:e},width:i,height:n,_aspectRatio:o}=this;return s(t)?e&&o?o:n?i/n:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}get registry(){return Js}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():we(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return Ae(this.canvas,this.ctx),this}stop(){return xt.stop(this),this}resize(t,e){xt.running(this)?this._resizeBeforeDraw={width:t,height:e}:this._resize(t,e)}_resize(t,e){const i=this.options,s=this.canvas,n=i.maintainAspectRatio&&this.aspectRatio,o=this.platform.getMaximumSize(s,t,e,n),a=i.devicePixelRatio||this.platform.getDevicePixelRatio(),r=this.width?"resize":"attach";this.width=o.width,this.height=o.height,this._aspectRatio=this.aspectRatio,we(this,a,!0)&&(this.notifyPlugins("resize",{size:o}),d(i.onResize,[this,o],this),this.attached&&this._doResize(r)&&this.render())}ensureScalesHaveIDs(){u(this.options.scales||{},((t,e)=>{t.id=e}))}buildOrUpdateScales(){const t=this.options,e=t.scales,i=this.scales,s=Object.keys(i).reduce(((t,e)=>(t[e]=!1,t)),{});let n=[];e&&(n=n.concat(Object.keys(e).map((t=>{const i=e[t],s=nn(t,i),n="r"===s,o="x"===s;return{options:i,dposition:n?"chartArea":o?"bottom":"left",dtype:n?"radialLinear":o?"category":"linear"}})))),u(n,(e=>{const n=e.options,o=n.id,a=nn(o,n),r=l(n.type,e.dtype);void 0!==n.position&&pn(n.position,a)===pn(e.dposition)||(n.position=e.dposition),s[o]=!0;let h=null;if(o in i&&i[o].type===r)h=i[o];else{h=new(Js.getScale(r))({id:o,type:r,ctx:this.ctx,chart:this}),i[h.id]=h}h.init(n,t)})),u(s,((t,e)=>{t||delete i[e]})),u(i,(t=>{ns.configure(this,t,t.options),ns.addBox(this,t)}))}_updateMetasets(){const t=this._metasets,e=this.data.datasets.length,i=t.length;if(t.sort(((t,e)=>t.index-e.index)),i>e){for(let t=e;t<i;++t)this._destroyDatasetMeta(t);t.splice(e,i-e)}this._sortedMetasets=t.slice(0).sort(mn("order","index"))}_removeUnreferencedMetasets(){const{_metasets:t,data:{datasets:e}}=this;t.length>e.length&&delete this._stacks,t.forEach(((t,i)=>{0===e.filter((e=>e===t._dataset)).length&&this._destroyDatasetMeta(i)}))}buildOrUpdateControllers(){const t=[],e=this.data.datasets;let i,s;for(this._removeUnreferencedMetasets(),i=0,s=e.length;i<s;i++){const s=e[i];let n=this.getDatasetMeta(i);const o=s.type||this.config.type;if(n.type&&n.type!==o&&(this._destroyDatasetMeta(i),n=this.getDatasetMeta(i)),n.type=o,n.indexAxis=s.indexAxis||sn(o,this.options),n.order=s.order||0,n.index=i,n.label=""+s.label,n.visible=this.isDatasetVisible(i),n.controller)n.controller.updateIndex(i),n.controller.linkScales();else{const e=Js.getController(o),{datasetElementType:s,dataElementType:a}=ue.datasets[o];Object.assign(e,{dataElementType:Js.getElement(a),datasetElementType:s&&Js.getElement(s)}),n.controller=new e(this,i),t.push(n.controller)}}return this._updateMetasets(),t}_resetElements(){u(this.data.datasets,((t,e)=>{this.getDatasetMeta(e).controller.reset()}),this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){const e=this.config;e.update();const i=this._options=e.createResolver(e.chartOptionScopes(),this.getContext()),s=this._animationsDisabled=!i.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),!1===this.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0}))return;const n=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let o=0;for(let t=0,e=this.data.datasets.length;t<e;t++){const{controller:e}=this.getDatasetMeta(t),i=!s&&-1===n.indexOf(e);e.buildOrUpdateElements(i),o=Math.max(+e.getMaxOverflow(),o)}o=this._minPadding=i.layout.autoPadding?o:0,this._updateLayout(o),s||u(n,(t=>{t.reset()})),this._updateDatasets(t),this.notifyPlugins("afterUpdate",{mode:t}),this._layers.sort(mn("z","_idx"));const{_active:a,_lastEvent:r}=this;r?this._eventHandler(r,!0):a.length&&this._updateHoverStyles(a,a,!0),this.render()}_updateScales(){u(this.scales,(t=>{ns.removeBox(this,t)})),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const t=this.options,e=new Set(Object.keys(this._listeners)),i=new Set(t.events);P(e,i)&&!!this._responsiveListeners===t.responsive||(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:t}=this,e=this._getUniformDataChanges()||[];for(const{method:i,start:s,count:n}of e){Mn(t,s,"_removeElements"===i?-n:n)}}_getUniformDataChanges(){const t=this._dataChanges;if(!t||!t.length)return;this._dataChanges=[];const e=this.data.datasets.length,i=e=>new Set(t.filter((t=>t[0]===e)).map(((t,e)=>e+","+t.splice(1).join(",")))),s=i(0);for(let t=1;t<e;t++)if(!P(s,i(t)))return;return Array.from(s).map((t=>t.split(","))).map((t=>({method:t[1],start:+t[2],count:+t[3]})))}_updateLayout(t){if(!1===this.notifyPlugins("beforeLayout",{cancelable:!0}))return;ns.update(this,this.width,this.height,t);const e=this.chartArea,i=e.width<=0||e.height<=0;this._layers=[],u(this.boxes,(t=>{i&&"chartArea"===t.position||(t.configure&&t.configure(),this._layers.push(...t._layers()))}),this),this._layers.forEach(((t,e)=>{t._idx=e})),this.notifyPlugins("afterLayout")}_updateDatasets(t){if(!1!==this.notifyPlugins("beforeDatasetsUpdate",{mode:t,cancelable:!0})){for(let t=0,e=this.data.datasets.length;t<e;++t)this.getDatasetMeta(t).controller.configure();for(let e=0,i=this.data.datasets.length;e<i;++e)this._updateDataset(e,S(t)?t({datasetIndex:e}):t);this.notifyPlugins("afterDatasetsUpdate",{mode:t})}}_updateDataset(t,e){const i=this.getDatasetMeta(t),s={meta:i,index:t,mode:e,cancelable:!0};!1!==this.notifyPlugins("beforeDatasetUpdate",s)&&(i.controller._update(e),s.cancelable=!1,this.notifyPlugins("afterDatasetUpdate",s))}render(){!1!==this.notifyPlugins("beforeRender",{cancelable:!0})&&(xt.has(this)?this.attached&&!xt.running(this)&&xt.start(this):(this.draw(),bn({chart:this})))}draw(){let t;if(this._resizeBeforeDraw){const{width:t,height:e}=this._resizeBeforeDraw;this._resize(t,e),this._resizeBeforeDraw=null}if(this.clear(),this.width<=0||this.height<=0)return;if(!1===this.notifyPlugins("beforeDraw",{cancelable:!0}))return;const e=this._layers;for(t=0;t<e.length&&e[t].z<=0;++t)e[t].draw(this.chartArea);for(this._drawDatasets();t<e.length;++t)e[t].draw(this.chartArea);this.notifyPlugins("afterDraw")}_getSortedDatasetMetas(t){const e=this._sortedMetasets,i=[];let s,n;for(s=0,n=e.length;s<n;++s){const n=e[s];t&&!n.visible||i.push(n)}return i}getSortedVisibleDatasetMetas(){return this._getSortedDatasetMetas(!0)}_drawDatasets(){if(!1===this.notifyPlugins("beforeDatasetsDraw",{cancelable:!0}))return;const t=this.getSortedVisibleDatasetMetas();for(let e=t.length-1;e>=0;--e)this._drawDataset(t[e]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(t){const e=this.ctx,i=t._clip,s=!i.disabled,n=function(t){const{xScale:e,yScale:i}=t;if(e&&i)return{left:e.left,right:e.right,top:i.top,bottom:i.bottom}}(t)||this.chartArea,o={meta:t,index:t.index,cancelable:!0};!1!==this.notifyPlugins("beforeDatasetDraw",o)&&(s&&Re(e,{left:!1===i.left?0:n.left-i.left,right:!1===i.right?this.width:n.right+i.right,top:!1===i.top?0:n.top-i.top,bottom:!1===i.bottom?this.height:n.bottom+i.bottom}),t.controller.draw(),s&&Ie(e),o.cancelable=!1,this.notifyPlugins("afterDatasetDraw",o))}isPointInArea(t){return Ee(t,this.chartArea,this._minPadding)}getElementsAtEventForMode(t,e,i,s){const n=Yi.modes[e];return"function"==typeof n?n(this,t,i,s):[]}getDatasetMeta(t){const e=this.data.datasets[t],i=this._metasets;let s=i.filter((t=>t&&t._dataset===e)).pop();return s||(s={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e&&e.order||0,index:t,_dataset:e,_parsed:[],_sorted:!1},i.push(s)),s}getContext(){return this.$context||(this.$context=Pi(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){const e=this.data.datasets[t];if(!e)return!1;const i=this.getDatasetMeta(t);return"boolean"==typeof i.hidden?!i.hidden:!e.hidden}setDatasetVisibility(t,e){this.getDatasetMeta(t).hidden=!e}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,e,i){const s=i?"show":"hide",n=this.getDatasetMeta(t),o=n.controller._resolveAnimations(void 0,s);k(e)?(n.data[e].hidden=!i,this.update()):(this.setDatasetVisibility(t,i),o.update(n,{visible:i}),this.update((e=>e.datasetIndex===t?s:void 0)))}hide(t,e){this._updateVisibility(t,e,!1)}show(t,e){this._updateVisibility(t,e,!0)}_destroyDatasetMeta(t){const e=this._metasets[t];e&&e.controller&&e.controller._destroy(),delete this._metasets[t]}_stop(){let t,e;for(this.stop(),xt.remove(this),t=0,e=this.data.datasets.length;t<e;++t)this._destroyDatasetMeta(t)}destroy(){this.notifyPlugins("beforeDestroy");const{canvas:t,ctx:e}=this;this._stop(),this.config.clearCache(),t&&(this.unbindEvents(),Ae(t,e),this.platform.releaseContext(e),this.canvas=null,this.ctx=null),delete yn[this.id],this.notifyPlugins("afterDestroy")}toBase64Image(...t){return this.canvas.toDataURL(...t)}bindEvents(){this.bindUserEvents(),this.options.responsive?this.bindResponsiveEvents():this.attached=!0}bindUserEvents(){const t=this._listeners,e=this.platform,i=(i,s)=>{e.addEventListener(this,i,s),t[i]=s},s=(t,e,i)=>{t.offsetX=e,t.offsetY=i,this._eventHandler(t)};u(this.options.events,(t=>i(t,s)))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const t=this._responsiveListeners,e=this.platform,i=(i,s)=>{e.addEventListener(this,i,s),t[i]=s},s=(i,s)=>{t[i]&&(e.removeEventListener(this,i,s),delete t[i])},n=(t,e)=>{this.canvas&&this.resize(t,e)};let o;const a=()=>{s("attach",a),this.attached=!0,this.resize(),i("resize",n),i("detach",o)};o=()=>{this.attached=!1,s("resize",n),this._stop(),this._resize(0,0),i("attach",a)},e.isAttached(this.canvas)?a():o()}unbindEvents(){u(this._listeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._listeners={},u(this._responsiveListeners,((t,e)=>{this.platform.removeEventListener(this,e,t)})),this._responsiveListeners=void 0}updateHoverStyle(t,e,i){const s=i?"set":"remove";let n,o,a,r;for("dataset"===e&&(n=this.getDatasetMeta(t[0].datasetIndex),n.controller["_"+s+"DatasetHoverStyle"]()),a=0,r=t.length;a<r;++a){o=t[a];const e=o&&this.getDatasetMeta(o.datasetIndex).controller;e&&e[s+"HoverStyle"](o.element,o.datasetIndex,o.index)}}getActiveElements(){return this._active||[]}setActiveElements(t){const e=this._active||[],i=t.map((({datasetIndex:t,index:e})=>{const i=this.getDatasetMeta(t);if(!i)throw new Error("No dataset found at index "+t);return{datasetIndex:t,element:i.data[e],index:e}}));!f(i,e)&&(this._active=i,this._lastEvent=null,this._updateHoverStyles(i,e))}notifyPlugins(t,e,i){return this._plugins.notify(this,t,e,i)}isPluginEnabled(t){return 1===this._plugins._cache.filter((e=>e.plugin.id===t)).length}_updateHoverStyles(t,e,i){const s=this.options.hover,n=(t,e)=>t.filter((t=>!e.some((e=>t.datasetIndex===e.datasetIndex&&t.index===e.index)))),o=n(e,t),a=i?t:n(t,e);o.length&&this.updateHoverStyle(o,s.mode,!1),a.length&&s.mode&&this.updateHoverStyle(a,s.mode,!0)}_eventHandler(t,e){const i={event:t,replay:e,cancelable:!0,inChartArea:this.isPointInArea(t)},s=e=>(e.options.events||this.options.events).includes(t.native.type);if(!1===this.notifyPlugins("beforeEvent",i,s))return;const n=this._handleEvent(t,e,i.inChartArea);return i.cancelable=!1,this.notifyPlugins("afterEvent",i,s),(n||i.changed)&&this.render(),this}_handleEvent(t,e,i){const{_active:s=[],options:n}=this,o=e,a=this._getActiveElements(t,s,i,o),r=D(t),l=function(t,e,i,s){return i&&"mouseout"!==t.type?s?e:t:null}(t,this._lastEvent,i,r);i&&(this._lastEvent=null,d(n.onHover,[t,a,this],this),r&&d(n.onClick,[t,a,this],this));const h=!f(a,s);return(h||e)&&(this._active=a,this._updateHoverStyles(a,s,e)),this._lastEvent=l,h}_getActiveElements(t,e,i,s){if("mouseout"===t.type)return[];if(!i)return e;const n=this.options.hover;return this.getElementsAtEventForMode(t,n.mode,n,s)}}function kn(){return u(wn.instances,(t=>t._plugins.invalidate()))}function Sn(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}class Pn{static override(t){Object.assign(Pn.prototype,t)}constructor(t){this.options=t||{}}init(){}formats(){return Sn()}parse(){return Sn()}format(){return Sn()}add(){return Sn()}diff(){return Sn()}startOf(){return Sn()}endOf(){return Sn()}}var Dn={_date:Pn};function Cn(t){const e=t.iScale,i=function(t,e){if(!t._cache.$bar){const i=t.getMatchingVisibleMetas(e);let s=[];for(let e=0,n=i.length;e<n;e++)s=s.concat(i[e].controller.getAllParsedValues(t));t._cache.$bar=lt(s.sort(((t,e)=>t-e)))}return t._cache.$bar}(e,t.type);let s,n,o,a,r=e._length;const l=()=>{32767!==o&&-32768!==o&&(k(a)&&(r=Math.min(r,Math.abs(o-a)||r)),a=o)};for(s=0,n=i.length;s<n;++s)o=e.getPixelForValue(i[s]),l();for(a=void 0,s=0,n=e.ticks.length;s<n;++s)o=e.getPixelForTick(s),l();return r}function On(t,e,i,s){return n(t)?function(t,e,i,s){const n=i.parse(t[0],s),o=i.parse(t[1],s),a=Math.min(n,o),r=Math.max(n,o);let l=a,h=r;Math.abs(a)>Math.abs(r)&&(l=r,h=a),e[i.axis]=h,e._custom={barStart:l,barEnd:h,start:n,end:o,min:a,max:r}}(t,e,i,s):e[i.axis]=i.parse(t,s),e}function An(t,e,i,s){const n=t.iScale,o=t.vScale,a=n.getLabels(),r=n===o,l=[];let h,c,d,u;for(h=i,c=i+s;h<c;++h)u=e[h],d={},d[n.axis]=r||n.parse(a[h],h),l.push(On(u,d,o,h));return l}function Tn(t){return t&&void 0!==t.barStart&&void 0!==t.barEnd}function Ln(t,e,i,s){let n=e.borderSkipped;const o={};if(!n)return void(t.borderSkipped=o);if(!0===n)return void(t.borderSkipped={top:!0,right:!0,bottom:!0,left:!0});const{start:a,end:r,reverse:l,top:h,bottom:c}=function(t){let e,i,s,n,o;return t.horizontal?(e=t.base>t.x,i="left",s="right"):(e=t.base<t.y,i="bottom",s="top"),e?(n="end",o="start"):(n="start",o="end"),{start:i,end:s,reverse:e,top:n,bottom:o}}(t);"middle"===n&&i&&(t.enableBorderRadius=!0,(i._top||0)===s?n=h:(i._bottom||0)===s?n=c:(o[En(c,a,r,l)]=!0,n=h)),o[En(n,a,r,l)]=!0,t.borderSkipped=o}function En(t,e,i,s){var n,o,a;return s?(a=i,t=Rn(t=(n=t)===(o=e)?a:n===a?o:n,i,e)):t=Rn(t,e,i),t}function Rn(t,e,i){return"start"===t?e:"end"===t?i:t}function In(t,{inflateAmount:e},i){t.inflateAmount="auto"===e?1===i?.33:0:e}class zn extends Vs{static id="doughnut";static defaults={datasetElementType:!1,dataElementType:"arc",animation:{animateRotate:!0,animateScale:!1},animations:{numbers:{type:"number",properties:["circumference","endAngle","innerRadius","outerRadius","startAngle","x","y","offset","borderWidth","spacing"]}},cutout:"50%",rotation:0,circumference:360,radius:"100%",spacing:0,indexAxis:"r"};static descriptors={_scriptable:t=>"spacing"!==t,_indexable:t=>"spacing"!==t};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const e=t.data;if(e.labels.length&&e.datasets.length){const{labels:{pointStyle:i,color:s}}=t.legend.options;return e.labels.map(((e,n)=>{const o=t.getDatasetMeta(0).controller.getStyle(n);return{text:e,fillStyle:o.backgroundColor,strokeStyle:o.borderColor,fontColor:s,lineWidth:o.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(n),index:n}}))}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}}}};constructor(t,e){super(t,e),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(t,e){const i=this.getDataset().data,s=this._cachedMeta;if(!1===this._parsing)s._parsed=i;else{let n,a,r=t=>+i[t];if(o(i[t])){const{key:t="value"}=this._parsing;r=e=>+M(i[e],t)}for(n=t,a=t+e;n<a;++n)s._parsed[n]=r(n)}}_getRotation(){return $(this.options.rotation-90)}_getCircumference(){return $(this.options.circumference)}_getRotationExtents(){let t=O,e=-O;for(let i=0;i<this.chart.data.datasets.length;++i)if(this.chart.isDatasetVisible(i)&&this.chart.getDatasetMeta(i).type===this._type){const s=this.chart.getDatasetMeta(i).controller,n=s._getRotation(),o=s._getCircumference();t=Math.min(t,n),e=Math.max(e,n+o)}return{rotation:t,circumference:e-t}}update(t){const e=this.chart,{chartArea:i}=e,s=this._cachedMeta,n=s.data,o=this.getMaxBorderWidth()+this.getMaxOffset(n)+this.options.spacing,a=Math.max((Math.min(i.width,i.height)-o)/2,0),r=Math.min(h(this.options.cutout,a),1),l=this._getRingWeight(this.index),{circumference:d,rotation:u}=this._getRotationExtents(),{ratioX:f,ratioY:g,offsetX:p,offsetY:m}=function(t,e,i){let s=1,n=1,o=0,a=0;if(e<O){const r=t,l=r+e,h=Math.cos(r),c=Math.sin(r),d=Math.cos(l),u=Math.sin(l),f=(t,e,s)=>Z(t,r,l,!0)?1:Math.max(e,e*i,s,s*i),g=(t,e,s)=>Z(t,r,l,!0)?-1:Math.min(e,e*i,s,s*i),p=f(0,h,d),m=f(E,c,u),b=g(C,h,d),x=g(C+E,c,u);s=(p-b)/2,n=(m-x)/2,o=-(p+b)/2,a=-(m+x)/2}return{ratioX:s,ratioY:n,offsetX:o,offsetY:a}}(u,d,r),b=(i.width-o)/f,x=(i.height-o)/g,_=Math.max(Math.min(b,x)/2,0),y=c(this.options.radius,_),v=(y-Math.max(y*r,0))/this._getVisibleDatasetWeightTotal();this.offsetX=p*y,this.offsetY=m*y,s.total=this.calculateTotal(),this.outerRadius=y-v*this._getRingWeightOffset(this.index),this.innerRadius=Math.max(this.outerRadius-v*l,0),this.updateElements(n,0,n.length,t)}_circumference(t,e){const i=this.options,s=this._cachedMeta,n=this._getCircumference();return e&&i.animation.animateRotate||!this.chart.getDataVisibility(t)||null===s._parsed[t]||s.data[t].hidden?0:this.calculateCircumference(s._parsed[t]*n/O)}updateElements(t,e,i,s){const n="reset"===s,o=this.chart,a=o.chartArea,r=o.options.animation,l=(a.left+a.right)/2,h=(a.top+a.bottom)/2,c=n&&r.animateScale,d=c?0:this.innerRadius,u=c?0:this.outerRadius,{sharedOptions:f,includeOptions:g}=this._getSharedOptions(e,s);let p,m=this._getRotation();for(p=0;p<e;++p)m+=this._circumference(p,n);for(p=e;p<e+i;++p){const e=this._circumference(p,n),i=t[p],o={x:l+this.offsetX,y:h+this.offsetY,startAngle:m,endAngle:m+e,circumference:e,outerRadius:u,innerRadius:d};g&&(o.options=f||this.resolveDataElementOptions(p,i.active?"active":s)),m+=e,this.updateElement(i,p,o,s)}}calculateTotal(){const t=this._cachedMeta,e=t.data;let i,s=0;for(i=0;i<e.length;i++){const n=t._parsed[i];null===n||isNaN(n)||!this.chart.getDataVisibility(i)||e[i].hidden||(s+=Math.abs(n))}return s}calculateCircumference(t){const e=this._cachedMeta.total;return e>0&&!isNaN(t)?O*(Math.abs(t)/e):0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,s=i.data.labels||[],n=ne(e._parsed[t],i.options.locale);return{label:s[t]||"",value:n}}getMaxBorderWidth(t){let e=0;const i=this.chart;let s,n,o,a,r;if(!t)for(s=0,n=i.data.datasets.length;s<n;++s)if(i.isDatasetVisible(s)){o=i.getDatasetMeta(s),t=o.data,a=o.controller;break}if(!t)return 0;for(s=0,n=t.length;s<n;++s)r=a.resolveDataElementOptions(s),"inner"!==r.borderAlign&&(e=Math.max(e,r.borderWidth||0,r.hoverBorderWidth||0));return e}getMaxOffset(t){let e=0;for(let i=0,s=t.length;i<s;++i){const t=this.resolveDataElementOptions(i);e=Math.max(e,t.offset||0,t.hoverOffset||0)}return e}_getRingWeightOffset(t){let e=0;for(let i=0;i<t;++i)this.chart.isDatasetVisible(i)&&(e+=this._getRingWeight(i));return e}_getRingWeight(t){return Math.max(l(this.chart.data.datasets[t].weight,1),0)}_getVisibleDatasetWeightTotal(){return this._getRingWeightOffset(this.chart.data.datasets.length)||1}}class Fn extends Vs{static id="polarArea";static defaults={dataElementType:"arc",animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:"number",properties:["x","y","startAngle","endAngle","innerRadius","outerRadius"]}},indexAxis:"r",startAngle:0};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const e=t.data;if(e.labels.length&&e.datasets.length){const{labels:{pointStyle:i,color:s}}=t.legend.options;return e.labels.map(((e,n)=>{const o=t.getDatasetMeta(0).controller.getStyle(n);return{text:e,fillStyle:o.backgroundColor,strokeStyle:o.borderColor,fontColor:s,lineWidth:o.borderWidth,pointStyle:i,hidden:!t.getDataVisibility(n),index:n}}))}return[]}},onClick(t,e,i){i.chart.toggleDataVisibility(e.index),i.chart.update()}}},scales:{r:{type:"radialLinear",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};constructor(t,e){super(t,e),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart,s=i.data.labels||[],n=ne(e._parsed[t].r,i.options.locale);return{label:s[t]||"",value:n}}parseObjectData(t,e,i,s){return ei.bind(this)(t,e,i,s)}update(t){const e=this._cachedMeta.data;this._updateRadius(),this.updateElements(e,0,e.length,t)}getMinMax(){const t=this._cachedMeta,e={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY};return t.data.forEach(((t,i)=>{const s=this.getParsed(i).r;!isNaN(s)&&this.chart.getDataVisibility(i)&&(s<e.min&&(e.min=s),s>e.max&&(e.max=s))})),e}_updateRadius(){const t=this.chart,e=t.chartArea,i=t.options,s=Math.min(e.right-e.left,e.bottom-e.top),n=Math.max(s/2,0),o=(n-Math.max(i.cutoutPercentage?n/100*i.cutoutPercentage:1,0))/t.getVisibleDatasetCount();this.outerRadius=n-o*this.index,this.innerRadius=this.outerRadius-o}updateElements(t,e,i,s){const n="reset"===s,o=this.chart,a=o.options.animation,r=this._cachedMeta.rScale,l=r.xCenter,h=r.yCenter,c=r.getIndexAngle(0)-.5*C;let d,u=c;const f=360/this.countVisibleElements();for(d=0;d<e;++d)u+=this._computeAngle(d,s,f);for(d=e;d<e+i;d++){const e=t[d];let i=u,g=u+this._computeAngle(d,s,f),p=o.getDataVisibility(d)?r.getDistanceFromCenterForValue(this.getParsed(d).r):0;u=g,n&&(a.animateScale&&(p=0),a.animateRotate&&(i=g=c));const m={x:l,y:h,innerRadius:0,outerRadius:p,startAngle:i,endAngle:g,options:this.resolveDataElementOptions(d,e.active?"active":s)};this.updateElement(e,d,m,s)}}countVisibleElements(){const t=this._cachedMeta;let e=0;return t.data.forEach(((t,i)=>{!isNaN(this.getParsed(i).r)&&this.chart.getDataVisibility(i)&&e++})),e}_computeAngle(t,e,i){return this.chart.getDataVisibility(t)?$(this.resolveDataElementOptions(t,e).angle||i):0}}var Vn=Object.freeze({__proto__:null,BarController:class extends Vs{static id="bar";static defaults={datasetElementType:!1,dataElementType:"bar",categoryPercentage:.8,barPercentage:.9,grouped:!0,animations:{numbers:{type:"number",properties:["x","y","base","width","height"]}}};static overrides={scales:{_index_:{type:"category",offset:!0,grid:{offset:!0}},_value_:{type:"linear",beginAtZero:!0}}};parsePrimitiveData(t,e,i,s){return An(t,e,i,s)}parseArrayData(t,e,i,s){return An(t,e,i,s)}parseObjectData(t,e,i,s){const{iScale:n,vScale:o}=t,{xAxisKey:a="x",yAxisKey:r="y"}=this._parsing,l="x"===n.axis?a:r,h="x"===o.axis?a:r,c=[];let d,u,f,g;for(d=i,u=i+s;d<u;++d)g=e[d],f={},f[n.axis]=n.parse(M(g,l),d),c.push(On(M(g,h),f,o,d));return c}updateRangeFromParsed(t,e,i,s){super.updateRangeFromParsed(t,e,i,s);const n=i._custom;n&&e===this._cachedMeta.vScale&&(t.min=Math.min(t.min,n.min),t.max=Math.max(t.max,n.max))}getMaxOverflow(){return 0}getLabelAndValue(t){const e=this._cachedMeta,{iScale:i,vScale:s}=e,n=this.getParsed(t),o=n._custom,a=Tn(o)?"["+o.start+", "+o.end+"]":""+s.getLabelForValue(n[s.axis]);return{label:""+i.getLabelForValue(n[i.axis]),value:a}}initialize(){this.enableOptionSharing=!0,super.initialize();this._cachedMeta.stack=this.getDataset().stack}update(t){const e=this._cachedMeta;this.updateElements(e.data,0,e.data.length,t)}updateElements(t,e,i,n){const o="reset"===n,{index:a,_cachedMeta:{vScale:r}}=this,l=r.getBasePixel(),h=r.isHorizontal(),c=this._getRuler(),{sharedOptions:d,includeOptions:u}=this._getSharedOptions(e,n);for(let f=e;f<e+i;f++){const e=this.getParsed(f),i=o||s(e[r.axis])?{base:l,head:l}:this._calculateBarValuePixels(f),g=this._calculateBarIndexPixels(f,c),p=(e._stacks||{})[r.axis],m={horizontal:h,base:i.base,enableBorderRadius:!p||Tn(e._custom)||a===p._top||a===p._bottom,x:h?i.head:g.center,y:h?g.center:i.head,height:h?g.size:Math.abs(i.size),width:h?Math.abs(i.size):g.size};u&&(m.options=d||this.resolveDataElementOptions(f,t[f].active?"active":n));const b=m.options||t[f].options;Ln(m,b,p,a),In(m,b,c.ratio),this.updateElement(t[f],f,m,n)}}_getStacks(t,e){const{iScale:i}=this._cachedMeta,n=i.getMatchingVisibleMetas(this._type).filter((t=>t.controller.options.grouped)),o=i.options.stacked,a=[],r=t=>{const i=t.controller.getParsed(e),n=i&&i[t.vScale.axis];if(s(n)||isNaN(n))return!0};for(const i of n)if((void 0===e||!r(i))&&((!1===o||-1===a.indexOf(i.stack)||void 0===o&&void 0===i.stack)&&a.push(i.stack),i.index===t))break;return a.length||a.push(void 0),a}_getStackCount(t){return this._getStacks(void 0,t).length}_getStackIndex(t,e,i){const s=this._getStacks(t,i),n=void 0!==e?s.indexOf(e):-1;return-1===n?s.length-1:n}_getRuler(){const t=this.options,e=this._cachedMeta,i=e.iScale,s=[];let n,o;for(n=0,o=e.data.length;n<o;++n)s.push(i.getPixelForValue(this.getParsed(n)[i.axis],n));const a=t.barThickness;return{min:a||Cn(e),pixels:s,start:i._startPixel,end:i._endPixel,stackCount:this._getStackCount(),scale:i,grouped:t.grouped,ratio:a?1:t.categoryPercentage*t.barPercentage}}_calculateBarValuePixels(t){const{_cachedMeta:{vScale:e,_stacked:i,index:n},options:{base:o,minBarLength:a}}=this,r=o||0,l=this.getParsed(t),h=l._custom,c=Tn(h);let d,u,f=l[e.axis],g=0,p=i?this.applyStack(e,l,i):f;p!==f&&(g=p-f,p=f),c&&(f=h.barStart,p=h.barEnd-h.barStart,0!==f&&F(f)!==F(h.barEnd)&&(g=0),g+=f);const m=s(o)||c?g:o;let b=e.getPixelForValue(m);if(d=this.chart.getDataVisibility(t)?e.getPixelForValue(g+p):b,u=d-b,Math.abs(u)<a){u=function(t,e,i){return 0!==t?F(t):(e.isHorizontal()?1:-1)*(e.min>=i?1:-1)}(u,e,r)*a,f===r&&(b-=u/2);const t=e.getPixelForDecimal(0),s=e.getPixelForDecimal(1),o=Math.min(t,s),h=Math.max(t,s);b=Math.max(Math.min(b,h),o),d=b+u,i&&!c&&(l._stacks[e.axis]._visualValues[n]=e.getValueForPixel(d)-e.getValueForPixel(b))}if(b===e.getPixelForValue(r)){const t=F(u)*e.getLineWidthForValue(r)/2;b+=t,u-=t}return{size:u,base:b,head:d,center:d+u/2}}_calculateBarIndexPixels(t,e){const i=e.scale,n=this.options,o=n.skipNull,a=l(n.maxBarThickness,1/0);let r,h;if(e.grouped){const i=o?this._getStackCount(t):e.stackCount,l="flex"===n.barThickness?function(t,e,i,s){const n=e.pixels,o=n[t];let a=t>0?n[t-1]:null,r=t<n.length-1?n[t+1]:null;const l=i.categoryPercentage;null===a&&(a=o-(null===r?e.end-e.start:r-o)),null===r&&(r=o+o-a);const h=o-(o-Math.min(a,r))/2*l;return{chunk:Math.abs(r-a)/2*l/s,ratio:i.barPercentage,start:h}}(t,e,n,i):function(t,e,i,n){const o=i.barThickness;let a,r;return s(o)?(a=e.min*i.categoryPercentage,r=i.barPercentage):(a=o*n,r=1),{chunk:a/n,ratio:r,start:e.pixels[t]-a/2}}(t,e,n,i),c=this._getStackIndex(this.index,this._cachedMeta.stack,o?t:void 0);r=l.start+l.chunk*c+l.chunk/2,h=Math.min(a,l.chunk*l.ratio)}else r=i.getPixelForValue(this.getParsed(t)[i.axis],t),h=Math.min(a,e.min*e.ratio);return{base:r-h/2,head:r+h/2,center:r,size:h}}draw(){const t=this._cachedMeta,e=t.vScale,i=t.data,s=i.length;let n=0;for(;n<s;++n)null!==this.getParsed(n)[e.axis]&&i[n].draw(this._ctx)}},BubbleController:class extends Vs{static id="bubble";static defaults={datasetElementType:!1,dataElementType:"point",animations:{numbers:{type:"number",properties:["x","y","borderWidth","radius"]}}};static overrides={scales:{x:{type:"linear"},y:{type:"linear"}}};initialize(){this.enableOptionSharing=!0,super.initialize()}parsePrimitiveData(t,e,i,s){const n=super.parsePrimitiveData(t,e,i,s);for(let t=0;t<n.length;t++)n[t]._custom=this.resolveDataElementOptions(t+i).radius;return n}parseArrayData(t,e,i,s){const n=super.parseArrayData(t,e,i,s);for(let t=0;t<n.length;t++){const s=e[i+t];n[t]._custom=l(s[2],this.resolveDataElementOptions(t+i).radius)}return n}parseObjectData(t,e,i,s){const n=super.parseObjectData(t,e,i,s);for(let t=0;t<n.length;t++){const s=e[i+t];n[t]._custom=l(s&&s.r&&+s.r,this.resolveDataElementOptions(t+i).radius)}return n}getMaxOverflow(){const t=this._cachedMeta.data;let e=0;for(let i=t.length-1;i>=0;--i)e=Math.max(e,t[i].size(this.resolveDataElementOptions(i))/2);return e>0&&e}getLabelAndValue(t){const e=this._cachedMeta,i=this.chart.data.labels||[],{xScale:s,yScale:n}=e,o=this.getParsed(t),a=s.getLabelForValue(o.x),r=n.getLabelForValue(o.y),l=o._custom;return{label:i[t]||"",value:"("+a+", "+r+(l?", "+l:"")+")"}}update(t){const e=this._cachedMeta.data;this.updateElements(e,0,e.length,t)}updateElements(t,e,i,s){const n="reset"===s,{iScale:o,vScale:a}=this._cachedMeta,{sharedOptions:r,includeOptions:l}=this._getSharedOptions(e,s),h=o.axis,c=a.axis;for(let d=e;d<e+i;d++){const e=t[d],i=!n&&this.getParsed(d),u={},f=u[h]=n?o.getPixelForDecimal(.5):o.getPixelForValue(i[h]),g=u[c]=n?a.getBasePixel():a.getPixelForValue(i[c]);u.skip=isNaN(f)||isNaN(g),l&&(u.options=r||this.resolveDataElementOptions(d,e.active?"active":s),n&&(u.options.radius=0)),this.updateElement(e,d,u,s)}}resolveDataElementOptions(t,e){const i=this.getParsed(t);let s=super.resolveDataElementOptions(t,e);s.$shared&&(s=Object.assign({},s,{$shared:!1}));const n=s.radius;return"active"!==e&&(s.radius=0),s.radius+=l(i&&i._custom,n),s}},DoughnutController:zn,LineController:class extends Vs{static id="line";static defaults={datasetElementType:"line",dataElementType:"point",showLine:!0,spanGaps:!1};static overrides={scales:{_index_:{type:"category"},_value_:{type:"linear"}}};initialize(){this.enableOptionSharing=!0,this.supportsDecimation=!0,super.initialize()}update(t){const e=this._cachedMeta,{dataset:i,data:s=[],_dataset:n}=e,o=this.chart._animationsDisabled;let{start:a,count:r}=pt(e,s,o);this._drawStart=a,this._drawCount=r,mt(e)&&(a=0,r=s.length),i._chart=this.chart,i._datasetIndex=this.index,i._decimated=!!n._decimated,i.points=s;const l=this.resolveDatasetElementOptions(t);this.options.showLine||(l.borderWidth=0),l.segment=this.options.segment,this.updateElement(i,void 0,{animated:!o,options:l},t),this.updateElements(s,a,r,t)}updateElements(t,e,i,n){const o="reset"===n,{iScale:a,vScale:r,_stacked:l,_dataset:h}=this._cachedMeta,{sharedOptions:c,includeOptions:d}=this._getSharedOptions(e,n),u=a.axis,f=r.axis,{spanGaps:g,segment:p}=this.options,m=W(g)?g:Number.POSITIVE_INFINITY,b=this.chart._animationsDisabled||o||"none"===n,x=e+i,_=t.length;let y=e>0&&this.getParsed(e-1);for(let i=0;i<_;++i){const g=t[i],_=b?g:{};if(i<e||i>=x){_.skip=!0;continue}const v=this.getParsed(i),M=s(v[f]),w=_[u]=a.getPixelForValue(v[u],i),k=_[f]=o||M?r.getBasePixel():r.getPixelForValue(l?this.applyStack(r,v,l):v[f],i);_.skip=isNaN(w)||isNaN(k)||M,_.stop=i>0&&Math.abs(v[u]-y[u])>m,p&&(_.parsed=v,_.raw=h.data[i]),d&&(_.options=c||this.resolveDataElementOptions(i,g.active?"active":n)),b||this.updateElement(g,i,_,n),y=v}}getMaxOverflow(){const t=this._cachedMeta,e=t.dataset,i=e.options&&e.options.borderWidth||0,s=t.data||[];if(!s.length)return i;const n=s[0].size(this.resolveDataElementOptions(0)),o=s[s.length-1].size(this.resolveDataElementOptions(s.length-1));return Math.max(i,n,o)/2}draw(){const t=this._cachedMeta;t.dataset.updateControlPoints(this.chart.chartArea,t.iScale.axis),super.draw()}},PolarAreaController:Fn,PieController:class extends zn{static id="pie";static defaults={cutout:0,rotation:0,circumference:360,radius:"100%"}},RadarController:class extends Vs{static id="radar";static defaults={datasetElementType:"line",dataElementType:"point",indexAxis:"r",showLine:!0,elements:{line:{fill:"start"}}};static overrides={aspectRatio:1,scales:{r:{type:"radialLinear"}}};getLabelAndValue(t){const e=this._cachedMeta.vScale,i=this.getParsed(t);return{label:e.getLabels()[t],value:""+e.getLabelForValue(i[e.axis])}}parseObjectData(t,e,i,s){return ei.bind(this)(t,e,i,s)}update(t){const e=this._cachedMeta,i=e.dataset,s=e.data||[],n=e.iScale.getLabels();if(i.points=s,"resize"!==t){const e=this.resolveDatasetElementOptions(t);this.options.showLine||(e.borderWidth=0);const o={_loop:!0,_fullLoop:n.length===s.length,options:e};this.updateElement(i,void 0,o,t)}this.updateElements(s,0,s.length,t)}updateElements(t,e,i,s){const n=this._cachedMeta.rScale,o="reset"===s;for(let a=e;a<e+i;a++){const e=t[a],i=this.resolveDataElementOptions(a,e.active?"active":s),r=n.getPointPositionForValue(a,this.getParsed(a).r),l=o?n.xCenter:r.x,h=o?n.yCenter:r.y,c={x:l,y:h,angle:r.angle,skip:isNaN(l)||isNaN(h),options:i};this.updateElement(e,a,c,s)}}},ScatterController:class extends Vs{static id="scatter";static defaults={datasetElementType:!1,dataElementType:"point",showLine:!1,fill:!1};static overrides={interaction:{mode:"point"},scales:{x:{type:"linear"},y:{type:"linear"}}};getLabelAndValue(t){const e=this._cachedMeta,i=this.chart.data.labels||[],{xScale:s,yScale:n}=e,o=this.getParsed(t),a=s.getLabelForValue(o.x),r=n.getLabelForValue(o.y);return{label:i[t]||"",value:"("+a+", "+r+")"}}update(t){const e=this._cachedMeta,{data:i=[]}=e,s=this.chart._animationsDisabled;let{start:n,count:o}=pt(e,i,s);if(this._drawStart=n,this._drawCount=o,mt(e)&&(n=0,o=i.length),this.options.showLine){const{dataset:n,_dataset:o}=e;n._chart=this.chart,n._datasetIndex=this.index,n._decimated=!!o._decimated,n.points=i;const a=this.resolveDatasetElementOptions(t);a.segment=this.options.segment,this.updateElement(n,void 0,{animated:!s,options:a},t)}this.updateElements(i,n,o,t)}addElements(){const{showLine:t}=this.options;!this.datasetElementType&&t&&(this.datasetElementType=this.chart.registry.getElement("line")),super.addElements()}updateElements(t,e,i,n){const o="reset"===n,{iScale:a,vScale:r,_stacked:l,_dataset:h}=this._cachedMeta,c=this.resolveDataElementOptions(e,n),d=this.getSharedOptions(c),u=this.includeOptions(n,d),f=a.axis,g=r.axis,{spanGaps:p,segment:m}=this.options,b=W(p)?p:Number.POSITIVE_INFINITY,x=this.chart._animationsDisabled||o||"none"===n;let _=e>0&&this.getParsed(e-1);for(let c=e;c<e+i;++c){const e=t[c],i=this.getParsed(c),p=x?e:{},y=s(i[g]),v=p[f]=a.getPixelForValue(i[f],c),M=p[g]=o||y?r.getBasePixel():r.getPixelForValue(l?this.applyStack(r,i,l):i[g],c);p.skip=isNaN(v)||isNaN(M)||y,p.stop=c>0&&Math.abs(i[f]-_[f])>b,m&&(p.parsed=i,p.raw=h.data[c]),u&&(p.options=d||this.resolveDataElementOptions(c,e.active?"active":n)),x||this.updateElement(e,c,p,n),_=i}this.updateSharedOptions(d,n,c)}getMaxOverflow(){const t=this._cachedMeta,e=t.data||[];if(!this.options.showLine){let t=0;for(let i=e.length-1;i>=0;--i)t=Math.max(t,e[i].size(this.resolveDataElementOptions(i))/2);return t>0&&t}const i=t.dataset,s=i.options&&i.options.borderWidth||0;if(!e.length)return s;const n=e[0].size(this.resolveDataElementOptions(0)),o=e[e.length-1].size(this.resolveDataElementOptions(e.length-1));return Math.max(s,n,o)/2}}});function Bn(t,e,i,s){const n=_i(t.options.borderRadius,["outerStart","outerEnd","innerStart","innerEnd"]);const o=(i-e)/2,a=Math.min(o,s*e/2),r=t=>{const e=(i-Math.min(o,t))*s/2;return J(t,0,Math.min(o,e))};return{outerStart:r(n.outerStart),outerEnd:r(n.outerEnd),innerStart:J(n.innerStart,0,a),innerEnd:J(n.innerEnd,0,a)}}function Nn(t,e,i,s){return{x:i+t*Math.cos(e),y:s+t*Math.sin(e)}}function Wn(t,e,i,s,n,o){const{x:a,y:r,startAngle:l,pixelMargin:h,innerRadius:c}=e,d=Math.max(e.outerRadius+s+i-h,0),u=c>0?c+s+i+h:0;let f=0;const g=n-l;if(s){const t=((c>0?c-s:0)+(d>0?d-s:0))/2;f=(g-(0!==t?g*t/(t+s):g))/2}const p=(g-Math.max(.001,g*d-i/C)/d)/2,m=l+p+f,b=n-p-f,{outerStart:x,outerEnd:_,innerStart:y,innerEnd:v}=Bn(e,u,d,b-m),M=d-x,w=d-_,k=m+x/M,S=b-_/w,P=u+y,D=u+v,O=m+y/P,A=b-v/D;if(t.beginPath(),o){const e=(k+S)/2;if(t.arc(a,r,d,k,e),t.arc(a,r,d,e,S),_>0){const e=Nn(w,S,a,r);t.arc(e.x,e.y,_,S,b+E)}const i=Nn(D,b,a,r);if(t.lineTo(i.x,i.y),v>0){const e=Nn(D,A,a,r);t.arc(e.x,e.y,v,b+E,A+Math.PI)}const s=(b-v/u+(m+y/u))/2;if(t.arc(a,r,u,b-v/u,s,!0),t.arc(a,r,u,s,m+y/u,!0),y>0){const e=Nn(P,O,a,r);t.arc(e.x,e.y,y,O+Math.PI,m-E)}const n=Nn(M,m,a,r);if(t.lineTo(n.x,n.y),x>0){const e=Nn(M,k,a,r);t.arc(e.x,e.y,x,m-E,k)}}else{t.moveTo(a,r);const e=Math.cos(k)*d+a,i=Math.sin(k)*d+r;t.lineTo(e,i);const s=Math.cos(S)*d+a,n=Math.sin(S)*d+r;t.lineTo(s,n)}t.closePath()}function Hn(t,e,i,s,n){const{fullCircles:o,startAngle:a,circumference:r,options:l}=e,{borderWidth:h,borderJoinStyle:c}=l,d="inner"===l.borderAlign;if(!h)return;d?(t.lineWidth=2*h,t.lineJoin=c||"round"):(t.lineWidth=h,t.lineJoin=c||"bevel");let u=e.endAngle;if(o){Wn(t,e,i,s,u,n);for(let e=0;e<o;++e)t.stroke();isNaN(r)||(u=a+(r%O||O))}d&&function(t,e,i){const{startAngle:s,pixelMargin:n,x:o,y:a,outerRadius:r,innerRadius:l}=e;let h=n/r;t.beginPath(),t.arc(o,a,r,s-h,i+h),l>n?(h=n/l,t.arc(o,a,l,i+h,s-h,!0)):t.arc(o,a,n,i+E,s-E),t.closePath(),t.clip()}(t,e,u),o||(Wn(t,e,i,s,u,n),t.stroke())}function jn(t,e,i=e){t.lineCap=l(i.borderCapStyle,e.borderCapStyle),t.setLineDash(l(i.borderDash,e.borderDash)),t.lineDashOffset=l(i.borderDashOffset,e.borderDashOffset),t.lineJoin=l(i.borderJoinStyle,e.borderJoinStyle),t.lineWidth=l(i.borderWidth,e.borderWidth),t.strokeStyle=l(i.borderColor,e.borderColor)}function $n(t,e,i){t.lineTo(i.x,i.y)}function Yn(t,e,i={}){const s=t.length,{start:n=0,end:o=s-1}=i,{start:a,end:r}=e,l=Math.max(n,a),h=Math.min(o,r),c=n<a&&o<a||n>r&&o>r;return{count:s,start:l,loop:e.loop,ilen:h<l&&!c?s+h-l:h-l}}function Un(t,e,i,s){const{points:n,options:o}=e,{count:a,start:r,loop:l,ilen:h}=Yn(n,i,s),c=function(t){return t.stepped?ze:t.tension||"monotone"===t.cubicInterpolationMode?Fe:$n}(o);let d,u,f,{move:g=!0,reverse:p}=s||{};for(d=0;d<=h;++d)u=n[(r+(p?h-d:d))%a],u.skip||(g?(t.moveTo(u.x,u.y),g=!1):c(t,f,u,p,o.stepped),f=u);return l&&(u=n[(r+(p?h:0))%a],c(t,f,u,p,o.stepped)),!!l}function Xn(t,e,i,s){const n=e.points,{count:o,start:a,ilen:r}=Yn(n,i,s),{move:l=!0,reverse:h}=s||{};let c,d,u,f,g,p,m=0,b=0;const x=t=>(a+(h?r-t:t))%o,_=()=>{f!==g&&(t.lineTo(m,g),t.lineTo(m,f),t.lineTo(m,p))};for(l&&(d=n[x(0)],t.moveTo(d.x,d.y)),c=0;c<=r;++c){if(d=n[x(c)],d.skip)continue;const e=d.x,i=d.y,s=0|e;s===u?(i<f?f=i:i>g&&(g=i),m=(b*m+e)/++b):(_(),t.lineTo(e,i),u=s,b=0,f=g=i),p=i}_()}function qn(t){const e=t.options,i=e.borderDash&&e.borderDash.length;return!(t._decimated||t._loop||e.tension||"monotone"===e.cubicInterpolationMode||e.stepped||i)?Xn:Un}const Kn="function"==typeof Path2D;function Gn(t,e,i,s){Kn&&!e.options.segment?function(t,e,i,s){let n=e._path;n||(n=e._path=new Path2D,e.path(n,i,s)&&n.closePath()),jn(t,e.options),t.stroke(n)}(t,e,i,s):function(t,e,i,s){const{segments:n,options:o}=e,a=qn(e);for(const r of n)jn(t,o,r.style),t.beginPath(),a(t,e,r,{start:i,end:i+s-1})&&t.closePath(),t.stroke()}(t,e,i,s)}class Zn extends Bs{static id="line";static defaults={borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:"default",fill:!1,spanGaps:!1,stepped:!1,tension:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};static descriptors={_scriptable:!0,_indexable:t=>"borderDash"!==t&&"fill"!==t};constructor(t){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,t&&Object.assign(this,t)}updateControlPoints(t,e){const i=this.options;if((i.tension||"monotone"===i.cubicInterpolationMode)&&!i.stepped&&!this._pointsUpdated){const s=i.spanGaps?this._loop:this._fullLoop;li(this._points,i,t,s,e),this._pointsUpdated=!0}}set points(t){this._points=t,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=Ri(this,this.options.segment))}first(){const t=this.segments,e=this.points;return t.length&&e[t[0].start]}last(){const t=this.segments,e=this.points,i=t.length;return i&&e[t[i-1].end]}interpolate(t,e){const i=this.options,s=t[e],n=this.points,o=Ei(this,{property:e,start:s,end:s});if(!o.length)return;const a=[],r=function(t){return t.stepped?gi:t.tension||"monotone"===t.cubicInterpolationMode?pi:fi}(i);let l,h;for(l=0,h=o.length;l<h;++l){const{start:h,end:c}=o[l],d=n[h],u=n[c];if(d===u){a.push(d);continue}const f=r(d,u,Math.abs((s-d[e])/(u[e]-d[e])),i.stepped);f[e]=t[e],a.push(f)}return 1===a.length?a[0]:a}pathSegment(t,e,i){return qn(this)(t,this,e,i)}path(t,e,i){const s=this.segments,n=qn(this);let o=this._loop;e=e||0,i=i||this.points.length-e;for(const a of s)o&=n(t,this,a,{start:e,end:e+i-1});return!!o}draw(t,e,i,s){const n=this.options||{};(this.points||[]).length&&n.borderWidth&&(t.save(),Gn(t,this,i,s),t.restore()),this.animated&&(this._pointsUpdated=!1,this._path=void 0)}}function Jn(t,e,i,s){const n=t.options,{[i]:o}=t.getProps([i],s);return Math.abs(e-o)<n.radius+n.hitRadius}function Qn(t,e){const{x:i,y:s,base:n,width:o,height:a}=t.getProps(["x","y","base","width","height"],e);let r,l,h,c,d;return t.horizontal?(d=a/2,r=Math.min(i,n),l=Math.max(i,n),h=s-d,c=s+d):(d=o/2,r=i-d,l=i+d,h=Math.min(s,n),c=Math.max(s,n)),{left:r,top:h,right:l,bottom:c}}function to(t,e,i,s){return t?0:J(e,i,s)}function eo(t){const e=Qn(t),i=e.right-e.left,s=e.bottom-e.top,n=function(t,e,i){const s=t.options.borderWidth,n=t.borderSkipped,o=yi(s);return{t:to(n.top,o.top,0,i),r:to(n.right,o.right,0,e),b:to(n.bottom,o.bottom,0,i),l:to(n.left,o.left,0,e)}}(t,i/2,s/2),a=function(t,e,i){const{enableBorderRadius:s}=t.getProps(["enableBorderRadius"]),n=t.options.borderRadius,a=vi(n),r=Math.min(e,i),l=t.borderSkipped,h=s||o(n);return{topLeft:to(!h||l.top||l.left,a.topLeft,0,r),topRight:to(!h||l.top||l.right,a.topRight,0,r),bottomLeft:to(!h||l.bottom||l.left,a.bottomLeft,0,r),bottomRight:to(!h||l.bottom||l.right,a.bottomRight,0,r)}}(t,i/2,s/2);return{outer:{x:e.left,y:e.top,w:i,h:s,radius:a},inner:{x:e.left+n.l,y:e.top+n.t,w:i-n.l-n.r,h:s-n.t-n.b,radius:{topLeft:Math.max(0,a.topLeft-Math.max(n.t,n.l)),topRight:Math.max(0,a.topRight-Math.max(n.t,n.r)),bottomLeft:Math.max(0,a.bottomLeft-Math.max(n.b,n.l)),bottomRight:Math.max(0,a.bottomRight-Math.max(n.b,n.r))}}}}function io(t,e,i,s){const n=null===e,o=null===i,a=t&&!(n&&o)&&Qn(t,s);return a&&(n||tt(e,a.left,a.right))&&(o||tt(i,a.top,a.bottom))}function so(t,e){t.rect(e.x,e.y,e.w,e.h)}function no(t,e,i={}){const s=t.x!==i.x?-e:0,n=t.y!==i.y?-e:0,o=(t.x+t.w!==i.x+i.w?e:0)-s,a=(t.y+t.h!==i.y+i.h?e:0)-n;return{x:t.x+s,y:t.y+n,w:t.w+o,h:t.h+a,radius:t.radius}}var oo=Object.freeze({__proto__:null,ArcElement:class extends Bs{static id="arc";static defaults={borderAlign:"center",borderColor:"#fff",borderJoinStyle:void 0,borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0,circular:!0};static defaultRoutes={backgroundColor:"backgroundColor"};constructor(t){super(),this.options=void 0,this.circumference=void 0,this.startAngle=void 0,this.endAngle=void 0,this.innerRadius=void 0,this.outerRadius=void 0,this.pixelMargin=0,this.fullCircles=0,t&&Object.assign(this,t)}inRange(t,e,i){const s=this.getProps(["x","y"],i),{angle:n,distance:o}=X(s,{x:t,y:e}),{startAngle:a,endAngle:r,innerRadius:h,outerRadius:c,circumference:d}=this.getProps(["startAngle","endAngle","innerRadius","outerRadius","circumference"],i),u=this.options.spacing/2,f=l(d,r-a)>=O||Z(n,a,r),g=tt(o,h+u,c+u);return f&&g}getCenterPoint(t){const{x:e,y:i,startAngle:s,endAngle:n,innerRadius:o,outerRadius:a}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius"],t),{offset:r,spacing:l}=this.options,h=(s+n)/2,c=(o+a+l+r)/2;return{x:e+Math.cos(h)*c,y:i+Math.sin(h)*c}}tooltipPosition(t){return this.getCenterPoint(t)}draw(t){const{options:e,circumference:i}=this,s=(e.offset||0)/4,n=(e.spacing||0)/2,o=e.circular;if(this.pixelMargin="inner"===e.borderAlign?.33:0,this.fullCircles=i>O?Math.floor(i/O):0,0===i||this.innerRadius<0||this.outerRadius<0)return;t.save();const a=(this.startAngle+this.endAngle)/2;t.translate(Math.cos(a)*s,Math.sin(a)*s);const r=s*(1-Math.sin(Math.min(C,i||0)));t.fillStyle=e.backgroundColor,t.strokeStyle=e.borderColor,function(t,e,i,s,n){const{fullCircles:o,startAngle:a,circumference:r}=e;let l=e.endAngle;if(o){Wn(t,e,i,s,l,n);for(let e=0;e<o;++e)t.fill();isNaN(r)||(l=a+(r%O||O))}Wn(t,e,i,s,l,n),t.fill()}(t,this,r,n,o),Hn(t,this,r,n,o),t.restore()}},LineElement:Zn,PointElement:class extends Bs{static id="point";static defaults={borderWidth:1,hitRadius:1,hoverBorderWidth:1,hoverRadius:4,pointStyle:"circle",radius:3,rotation:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};constructor(t){super(),this.options=void 0,this.parsed=void 0,this.skip=void 0,this.stop=void 0,t&&Object.assign(this,t)}inRange(t,e,i){const s=this.options,{x:n,y:o}=this.getProps(["x","y"],i);return Math.pow(t-n,2)+Math.pow(e-o,2)<Math.pow(s.hitRadius+s.radius,2)}inXRange(t,e){return Jn(this,t,"x",e)}inYRange(t,e){return Jn(this,t,"y",e)}getCenterPoint(t){const{x:e,y:i}=this.getProps(["x","y"],t);return{x:e,y:i}}size(t){let e=(t=t||this.options||{}).radius||0;e=Math.max(e,e&&t.hoverRadius||0);return 2*(e+(e&&t.borderWidth||0))}draw(t,e){const i=this.options;this.skip||i.radius<.1||!Ee(this,e,this.size(i)/2)||(t.strokeStyle=i.borderColor,t.lineWidth=i.borderWidth,t.fillStyle=i.backgroundColor,Te(t,i,this.x,this.y))}getRange(){const t=this.options||{};return t.radius+t.hitRadius}},BarElement:class extends Bs{static id="bar";static defaults={borderSkipped:"start",borderWidth:0,borderRadius:0,inflateAmount:"auto",pointStyle:void 0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};constructor(t){super(),this.options=void 0,this.horizontal=void 0,this.base=void 0,this.width=void 0,this.height=void 0,this.inflateAmount=void 0,t&&Object.assign(this,t)}draw(t){const{inflateAmount:e,options:{borderColor:i,backgroundColor:s}}=this,{inner:n,outer:o}=eo(this),a=(r=o.radius).topLeft||r.topRight||r.bottomLeft||r.bottomRight?We:so;var r;t.save(),o.w===n.w&&o.h===n.h||(t.beginPath(),a(t,no(o,e,n)),t.clip(),a(t,no(n,-e,o)),t.fillStyle=i,t.fill("evenodd")),t.beginPath(),a(t,no(n,e)),t.fillStyle=s,t.fill(),t.restore()}inRange(t,e,i){return io(this,t,e,i)}inXRange(t,e){return io(this,t,null,e)}inYRange(t,e){return io(this,null,t,e)}getCenterPoint(t){const{x:e,y:i,base:s,horizontal:n}=this.getProps(["x","y","base","horizontal"],t);return{x:n?(e+s)/2:e,y:n?i:(i+s)/2}}getRange(t){return"x"===t?this.width/2:this.height/2}}});function ao(t,e,i,s){const n=t.indexOf(e);if(-1===n)return((t,e,i,s)=>("string"==typeof e?(i=t.push(e)-1,s.unshift({index:i,label:e})):isNaN(e)&&(i=null),i))(t,e,i,s);return n!==t.lastIndexOf(e)?i:n}function ro(t){const e=this.getLabels();return t>=0&&t<e.length?e[t]:t}function lo(t,e,{horizontal:i,minRotation:s}){const n=$(s),o=(i?Math.sin(n):Math.cos(n))||.001,a=.75*e*(""+t).length;return Math.min(e/o,a)}class ho extends Ks{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(t,e){return s(t)||("number"==typeof t||t instanceof Number)&&!isFinite(+t)?null:+t}handleTickRangeOptions(){const{beginAtZero:t}=this.options,{minDefined:e,maxDefined:i}=this.getUserBounds();let{min:s,max:n}=this;const o=t=>s=e?s:t,a=t=>n=i?n:t;if(t){const t=F(s),e=F(n);t<0&&e<0?a(0):t>0&&e>0&&o(0)}if(s===n){let e=0===n?1:Math.abs(.05*n);a(n+e),t||o(s-e)}this.min=s,this.max=n}getTickLimit(){const t=this.options.ticks;let e,{maxTicksLimit:i,stepSize:s}=t;return s?(e=Math.ceil(this.max/s)-Math.floor(this.min/s)+1,e>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${s} would result generating up to ${e} ticks. Limiting to 1000.`),e=1e3)):(e=this.computeTickLimit(),i=i||11),i&&(e=Math.min(i,e)),e}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const t=this.options,e=t.ticks;let i=this.getTickLimit();i=Math.max(2,i);const n=function(t,e){const i=[],{bounds:n,step:o,min:a,max:r,precision:l,count:h,maxTicks:c,maxDigits:d,includeBounds:u}=t,f=o||1,g=c-1,{min:p,max:m}=e,b=!s(a),x=!s(r),_=!s(h),y=(m-p)/(d+1);let v,M,w,k,S=B((m-p)/g/f)*f;if(S<1e-14&&!b&&!x)return[{value:p},{value:m}];k=Math.ceil(m/S)-Math.floor(p/S),k>g&&(S=B(k*S/g/f)*f),s(l)||(v=Math.pow(10,l),S=Math.ceil(S*v)/v),"ticks"===n?(M=Math.floor(p/S)*S,w=Math.ceil(m/S)*S):(M=p,w=m),b&&x&&o&&H((r-a)/o,S/1e3)?(k=Math.round(Math.min((r-a)/S,c)),S=(r-a)/k,M=a,w=r):_?(M=b?a:M,w=x?r:w,k=h-1,S=(w-M)/k):(k=(w-M)/S,k=V(k,Math.round(k),S/1e3)?Math.round(k):Math.ceil(k));const P=Math.max(U(S),U(M));v=Math.pow(10,s(l)?P:l),M=Math.round(M*v)/v,w=Math.round(w*v)/v;let D=0;for(b&&(u&&M!==a?(i.push({value:a}),M<a&&D++,V(Math.round((M+D*S)*v)/v,a,lo(a,y,t))&&D++):M<a&&D++);D<k;++D)i.push({value:Math.round((M+D*S)*v)/v});return x&&u&&w!==r?i.length&&V(i[i.length-1].value,r,lo(r,y,t))?i[i.length-1].value=r:i.push({value:r}):x&&w!==r||i.push({value:w}),i}({maxTicks:i,bounds:t.bounds,min:t.min,max:t.max,precision:e.precision,step:e.stepSize,count:e.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:e.minRotation||0,includeBounds:!1!==e.includeBounds},this._range||this);return"ticks"===t.bounds&&j(n,this,"value"),t.reverse?(n.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),n}configure(){const t=this.ticks;let e=this.min,i=this.max;if(super.configure(),this.options.offset&&t.length){const s=(i-e)/Math.max(t.length-1,1)/2;e-=s,i+=s}this._startValue=e,this._endValue=i,this._valueRange=i-e}getLabelForValue(t){return ne(t,this.chart.options.locale,this.options.ticks.format)}}class co extends ho{static id="linear";static defaults={ticks:{callback:ae.formatters.numeric}};determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=a(t)?t:0,this.max=a(e)?e:1,this.handleTickRangeOptions()}computeTickLimit(){const t=this.isHorizontal(),e=t?this.width:this.height,i=$(this.options.ticks.minRotation),s=(t?Math.sin(i):Math.cos(i))||.001,n=this._resolveTickFontOptions(0);return Math.ceil(e/Math.min(40,n.lineHeight/s))}getPixelForValue(t){return null===t?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getValueForPixel(t){return this._startValue+this.getDecimalForPixel(t)*this._valueRange}}const uo=t=>Math.floor(z(t)),fo=(t,e)=>Math.pow(10,uo(t)+e);function go(t){return 1===t/Math.pow(10,uo(t))}function po(t,e,i){const s=Math.pow(10,i),n=Math.floor(t/s);return Math.ceil(e/s)-n}function mo(t,{min:e,max:i}){e=r(t.min,e);const s=[],n=uo(e);let o=function(t,e){let i=uo(e-t);for(;po(t,e,i)>10;)i++;for(;po(t,e,i)<10;)i--;return Math.min(i,uo(t))}(e,i),a=o<0?Math.pow(10,Math.abs(o)):1;const l=Math.pow(10,o),h=n>o?Math.pow(10,n):0,c=Math.round((e-h)*a)/a,d=Math.floor((e-h)/l/10)*l*10;let u=Math.floor((c-d)/Math.pow(10,o)),f=r(t.min,Math.round((h+d+u*Math.pow(10,o))*a)/a);for(;f<i;)s.push({value:f,major:go(f),significand:u}),u>=10?u=u<15?15:20:u++,u>=20&&(o++,u=2,a=o>=0?1:a),f=Math.round((h+d+u*Math.pow(10,o))*a)/a;const g=r(t.max,f);return s.push({value:g,major:go(g),significand:u}),s}class bo extends Ks{static id="logarithmic";static defaults={ticks:{callback:ae.formatters.logarithmic,major:{enabled:!0}}};constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(t,e){const i=ho.prototype.parse.apply(this,[t,e]);if(0!==i)return a(i)&&i>0?i:null;this._zero=!0}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=a(t)?Math.max(0,t):null,this.max=a(e)?Math.max(0,e):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!a(this._userMin)&&(this.min=t===fo(this.min,0)?fo(this.min,-1):fo(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let i=this.min,s=this.max;const n=e=>i=t?i:e,o=t=>s=e?s:t;i===s&&(i<=0?(n(1),o(10)):(n(fo(i,-1)),o(fo(s,1)))),i<=0&&n(fo(s,-1)),s<=0&&o(fo(i,1)),this.min=i,this.max=s}buildTicks(){const t=this.options,e=mo({min:this._userMin,max:this._userMax},this);return"ticks"===t.bounds&&j(e,this,"value"),t.reverse?(e.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),e}getLabelForValue(t){return void 0===t?"0":ne(t,this.chart.options.locale,this.options.ticks.format)}configure(){const t=this.min;super.configure(),this._startValue=z(t),this._valueRange=z(this.max)-z(t)}getPixelForValue(t){return void 0!==t&&0!==t||(t=this.min),null===t||isNaN(t)?NaN:this.getPixelForDecimal(t===this.min?0:(z(t)-this._startValue)/this._valueRange)}getValueForPixel(t){const e=this.getDecimalForPixel(t);return Math.pow(10,this._startValue+e*this._valueRange)}}function xo(t){const e=t.ticks;if(e.display&&t.display){const t=Mi(e.backdropPadding);return l(e.font&&e.font.size,ue.font.size)+t.height}return 0}function _o(t,e,i,s,n){return t===s||t===n?{start:e-i/2,end:e+i/2}:t<s||t>n?{start:e-i,end:e}:{start:e,end:e+i}}function yo(t){const e={l:t.left+t._padding.left,r:t.right-t._padding.right,t:t.top+t._padding.top,b:t.bottom-t._padding.bottom},i=Object.assign({},e),s=[],o=[],a=t._pointLabels.length,r=t.options.pointLabels,l=r.centerPointLabels?C/a:0;for(let u=0;u<a;u++){const a=r.setContext(t.getPointLabelContext(u));o[u]=a.padding;const f=t.getPointPosition(u,t.drawingArea+o[u],l),g=wi(a.font),p=(h=t.ctx,c=g,d=n(d=t._pointLabels[u])?d:[d],{w:Ce(h,c.string,d),h:d.length*c.lineHeight});s[u]=p;const m=G(t.getIndexAngle(u)+l),b=Math.round(Y(m));vo(i,e,m,_o(b,f.x,p.w,0,180),_o(b,f.y,p.h,90,270))}var h,c,d;t.setCenterPoint(e.l-i.l,i.r-e.r,e.t-i.t,i.b-e.b),t._pointLabelItems=function(t,e,i){const s=[],n=t._pointLabels.length,o=t.options,a=xo(o)/2,r=t.drawingArea,l=o.pointLabels.centerPointLabels?C/n:0;for(let o=0;o<n;o++){const n=t.getPointPosition(o,r+a+i[o],l),h=Math.round(Y(G(n.angle+E))),c=e[o],d=ko(n.y,c.h,h),u=Mo(h),f=wo(n.x,c.w,u);s.push({x:n.x,y:d,textAlign:u,left:f,top:d,right:f+c.w,bottom:d+c.h})}return s}(t,s,o)}function vo(t,e,i,s,n){const o=Math.abs(Math.sin(i)),a=Math.abs(Math.cos(i));let r=0,l=0;s.start<e.l?(r=(e.l-s.start)/o,t.l=Math.min(t.l,e.l-r)):s.end>e.r&&(r=(s.end-e.r)/o,t.r=Math.max(t.r,e.r+r)),n.start<e.t?(l=(e.t-n.start)/a,t.t=Math.min(t.t,e.t-l)):n.end>e.b&&(l=(n.end-e.b)/a,t.b=Math.max(t.b,e.b+l))}function Mo(t){return 0===t||180===t?"center":t<180?"left":"right"}function wo(t,e,i){return"right"===i?t-=e:"center"===i&&(t-=e/2),t}function ko(t,e,i){return 90===i||270===i?t-=e/2:(i>270||i<90)&&(t-=e),t}function So(t,e,i,s){const{ctx:n}=t;if(i)n.arc(t.xCenter,t.yCenter,e,0,O);else{let i=t.getPointPosition(0,e);n.moveTo(i.x,i.y);for(let o=1;o<s;o++)i=t.getPointPosition(o,e),n.lineTo(i.x,i.y)}}class Po extends ho{static id="radialLinear";static defaults={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:ae.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback:t=>t,padding:5,centerPointLabels:!1}};static defaultRoutes={"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"};static descriptors={angleLines:{_fallback:"grid"}};constructor(t){super(t),this.xCenter=void 0,this.yCenter=void 0,this.drawingArea=void 0,this._pointLabels=[],this._pointLabelItems=[]}setDimensions(){const t=this._padding=Mi(xo(this.options)/2),e=this.width=this.maxWidth-t.width,i=this.height=this.maxHeight-t.height;this.xCenter=Math.floor(this.left+e/2+t.left),this.yCenter=Math.floor(this.top+i/2+t.top),this.drawingArea=Math.floor(Math.min(e,i)/2)}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!1);this.min=a(t)&&!isNaN(t)?t:0,this.max=a(e)&&!isNaN(e)?e:0,this.handleTickRangeOptions()}computeTickLimit(){return Math.ceil(this.drawingArea/xo(this.options))}generateTickLabels(t){ho.prototype.generateTickLabels.call(this,t),this._pointLabels=this.getLabels().map(((t,e)=>{const i=d(this.options.pointLabels.callback,[t,e],this);return i||0===i?i:""})).filter(((t,e)=>this.chart.getDataVisibility(e)))}fit(){const t=this.options;t.display&&t.pointLabels.display?yo(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(t,e,i,s){this.xCenter+=Math.floor((t-e)/2),this.yCenter+=Math.floor((i-s)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(t,e,i,s))}getIndexAngle(t){return G(t*(O/(this._pointLabels.length||1))+$(this.options.startAngle||0))}getDistanceFromCenterForValue(t){if(s(t))return NaN;const e=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-t)*e:(t-this.min)*e}getValueForDistanceFromCenter(t){if(s(t))return NaN;const e=t/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-e:this.min+e}getPointLabelContext(t){const e=this._pointLabels||[];if(t>=0&&t<e.length){const i=e[t];return function(t,e,i){return Pi(t,{label:i,index:e,type:"pointLabel"})}(this.getContext(),t,i)}}getPointPosition(t,e,i=0){const s=this.getIndexAngle(t)-E+i;return{x:Math.cos(s)*e+this.xCenter,y:Math.sin(s)*e+this.yCenter,angle:s}}getPointPositionForValue(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))}getBasePosition(t){return this.getPointPositionForValue(t||0,this.getBaseValue())}getPointLabelPosition(t){const{left:e,top:i,right:s,bottom:n}=this._pointLabelItems[t];return{left:e,top:i,right:s,bottom:n}}drawBackground(){const{backgroundColor:t,grid:{circular:e}}=this.options;if(t){const i=this.ctx;i.save(),i.beginPath(),So(this,this.getDistanceFromCenterForValue(this._endValue),e,this._pointLabels.length),i.closePath(),i.fillStyle=t,i.fill(),i.restore()}}drawGrid(){const t=this.ctx,e=this.options,{angleLines:i,grid:n,border:o}=e,a=this._pointLabels.length;let r,l,h;if(e.pointLabels.display&&function(t,e){const{ctx:i,options:{pointLabels:n}}=t;for(let o=e-1;o>=0;o--){const e=n.setContext(t.getPointLabelContext(o)),a=wi(e.font),{x:r,y:l,textAlign:h,left:c,top:d,right:u,bottom:f}=t._pointLabelItems[o],{backdropColor:g}=e;if(!s(g)){const t=vi(e.borderRadius),s=Mi(e.backdropPadding);i.fillStyle=g;const n=c-s.left,o=d-s.top,a=u-c+s.width,r=f-d+s.height;Object.values(t).some((t=>0!==t))?(i.beginPath(),We(i,{x:n,y:o,w:a,h:r,radius:t}),i.fill()):i.fillRect(n,o,a,r)}Ve(i,t._pointLabels[o],r,l+a.lineHeight/2,a,{color:e.color,textAlign:h,textBaseline:"middle"})}}(this,a),n.display&&this.ticks.forEach(((t,e)=>{if(0!==e){l=this.getDistanceFromCenterForValue(t.value);const i=this.getContext(e),s=n.setContext(i),r=o.setContext(i);!function(t,e,i,s,n){const o=t.ctx,a=e.circular,{color:r,lineWidth:l}=e;!a&&!s||!r||!l||i<0||(o.save(),o.strokeStyle=r,o.lineWidth=l,o.setLineDash(n.dash),o.lineDashOffset=n.dashOffset,o.beginPath(),So(t,i,a,s),o.closePath(),o.stroke(),o.restore())}(this,s,l,a,r)}})),i.display){for(t.save(),r=a-1;r>=0;r--){const s=i.setContext(this.getPointLabelContext(r)),{color:n,lineWidth:o}=s;o&&n&&(t.lineWidth=o,t.strokeStyle=n,t.setLineDash(s.borderDash),t.lineDashOffset=s.borderDashOffset,l=this.getDistanceFromCenterForValue(e.ticks.reverse?this.min:this.max),h=this.getPointPosition(r,l),t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(h.x,h.y),t.stroke())}t.restore()}}drawBorder(){}drawLabels(){const t=this.ctx,e=this.options,i=e.ticks;if(!i.display)return;const s=this.getIndexAngle(0);let n,o;t.save(),t.translate(this.xCenter,this.yCenter),t.rotate(s),t.textAlign="center",t.textBaseline="middle",this.ticks.forEach(((s,a)=>{if(0===a&&!e.reverse)return;const r=i.setContext(this.getContext(a)),l=wi(r.font);if(n=this.getDistanceFromCenterForValue(this.ticks[a].value),r.showLabelBackdrop){t.font=l.string,o=t.measureText(s.label).width,t.fillStyle=r.backdropColor;const e=Mi(r.backdropPadding);t.fillRect(-o/2-e.left,-n-l.size/2-e.top,o+e.width,l.size+e.height)}Ve(t,s.label,0,-n,l,{color:r.color})})),t.restore()}drawTitle(){}}const Do={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},Co=Object.keys(Do);function Oo(t,e){return t-e}function Ao(t,e){if(s(e))return null;const i=t._adapter,{parser:n,round:o,isoWeekday:r}=t._parseOpts;let l=e;return"function"==typeof n&&(l=n(l)),a(l)||(l="string"==typeof n?i.parse(l,n):i.parse(l)),null===l?null:(o&&(l="week"!==o||!W(r)&&!0!==r?i.startOf(l,o):i.startOf(l,"isoWeek",r)),+l)}function To(t,e,i,s){const n=Co.length;for(let o=Co.indexOf(t);o<n-1;++o){const t=Do[Co[o]],n=t.steps?t.steps:Number.MAX_SAFE_INTEGER;if(t.common&&Math.ceil((i-e)/(n*t.size))<=s)return Co[o]}return Co[n-1]}function Lo(t,e,i){if(i){if(i.length){const{lo:s,hi:n}=et(i,e);t[i[s]>=e?i[s]:i[n]]=!0}}else t[e]=!0}function Eo(t,e,i){const s=[],n={},o=e.length;let a,r;for(a=0;a<o;++a)r=e[a],n[r]=a,s.push({value:r,major:!1});return 0!==o&&i?function(t,e,i,s){const n=t._adapter,o=+n.startOf(e[0].value,s),a=e[e.length-1].value;let r,l;for(r=o;r<=a;r=+n.add(r,1,s))l=i[r],l>=0&&(e[l].major=!0);return e}(t,s,n,i):s}class Ro extends Ks{static id="time";static defaults={bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{source:"auto",callback:!1,major:{enabled:!1}}};constructor(t){super(t),this._cache={data:[],labels:[],all:[]},this._unit="day",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(t,e={}){const i=t.time||(t.time={}),s=this._adapter=new Dn._date(t.adapters.date);s.init(e),x(i.displayFormats,s.formats()),this._parseOpts={parser:i.parser,round:i.round,isoWeekday:i.isoWeekday},super.init(t),this._normalized=e.normalized}parse(t,e){return void 0===t?null:Ao(this,t)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){const t=this.options,e=this._adapter,i=t.time.unit||"day";let{min:s,max:n,minDefined:o,maxDefined:r}=this.getUserBounds();function l(t){o||isNaN(t.min)||(s=Math.min(s,t.min)),r||isNaN(t.max)||(n=Math.max(n,t.max))}o&&r||(l(this._getLabelBounds()),"ticks"===t.bounds&&"labels"===t.ticks.source||l(this.getMinMax(!1))),s=a(s)&&!isNaN(s)?s:+e.startOf(Date.now(),i),n=a(n)&&!isNaN(n)?n:+e.endOf(Date.now(),i)+1,this.min=Math.min(s,n-1),this.max=Math.max(s+1,n)}_getLabelBounds(){const t=this.getLabelTimestamps();let e=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;return t.length&&(e=t[0],i=t[t.length-1]),{min:e,max:i}}buildTicks(){const t=this.options,e=t.time,i=t.ticks,s="labels"===i.source?this.getLabelTimestamps():this._generate();"ticks"===t.bounds&&s.length&&(this.min=this._userMin||s[0],this.max=this._userMax||s[s.length-1]);const n=this.min,o=nt(s,n,this.max);return this._unit=e.unit||(i.autoSkip?To(e.minUnit,this.min,this.max,this._getLabelCapacity(n)):function(t,e,i,s,n){for(let o=Co.length-1;o>=Co.indexOf(i);o--){const i=Co[o];if(Do[i].common&&t._adapter.diff(n,s,i)>=e-1)return i}return Co[i?Co.indexOf(i):0]}(this,o.length,e.minUnit,this.min,this.max)),this._majorUnit=i.major.enabled&&"year"!==this._unit?function(t){for(let e=Co.indexOf(t)+1,i=Co.length;e<i;++e)if(Do[Co[e]].common)return Co[e]}(this._unit):void 0,this.initOffsets(s),t.reverse&&o.reverse(),Eo(this,o,this._majorUnit)}afterAutoSkip(){this.options.offsetAfterAutoskip&&this.initOffsets(this.ticks.map((t=>+t.value)))}initOffsets(t=[]){let e,i,s=0,n=0;this.options.offset&&t.length&&(e=this.getDecimalForValue(t[0]),s=1===t.length?1-e:(this.getDecimalForValue(t[1])-e)/2,i=this.getDecimalForValue(t[t.length-1]),n=1===t.length?i:(i-this.getDecimalForValue(t[t.length-2]))/2);const o=t.length<3?.5:.25;s=J(s,0,o),n=J(n,0,o),this._offsets={start:s,end:n,factor:1/(s+1+n)}}_generate(){const t=this._adapter,e=this.min,i=this.max,s=this.options,n=s.time,o=n.unit||To(n.minUnit,e,i,this._getLabelCapacity(e)),a=l(s.ticks.stepSize,1),r="week"===o&&n.isoWeekday,h=W(r)||!0===r,c={};let d,u,f=e;if(h&&(f=+t.startOf(f,"isoWeek",r)),f=+t.startOf(f,h?"day":o),t.diff(i,e,o)>1e5*a)throw new Error(e+" and "+i+" are too far apart with stepSize of "+a+" "+o);const g="data"===s.ticks.source&&this.getDataTimestamps();for(d=f,u=0;d<i;d=+t.add(d,a,o),u++)Lo(c,d,g);return d!==i&&"ticks"!==s.bounds&&1!==u||Lo(c,d,g),Object.keys(c).sort(((t,e)=>t-e)).map((t=>+t))}getLabelForValue(t){const e=this._adapter,i=this.options.time;return i.tooltipFormat?e.format(t,i.tooltipFormat):e.format(t,i.displayFormats.datetime)}format(t,e){const i=this.options.time.displayFormats,s=this._unit,n=e||i[s];return this._adapter.format(t,n)}_tickFormatFunction(t,e,i,s){const n=this.options,o=n.ticks.callback;if(o)return d(o,[t,e,i],this);const a=n.time.displayFormats,r=this._unit,l=this._majorUnit,h=r&&a[r],c=l&&a[l],u=i[e],f=l&&c&&u&&u.major;return this._adapter.format(t,s||(f?c:h))}generateTickLabels(t){let e,i,s;for(e=0,i=t.length;e<i;++e)s=t[e],s.label=this._tickFormatFunction(s.value,e,t)}getDecimalForValue(t){return null===t?NaN:(t-this.min)/(this.max-this.min)}getPixelForValue(t){const e=this._offsets,i=this.getDecimalForValue(t);return this.getPixelForDecimal((e.start+i)*e.factor)}getValueForPixel(t){const e=this._offsets,i=this.getDecimalForPixel(t)/e.factor-e.end;return this.min+i*(this.max-this.min)}_getLabelSize(t){const e=this.options.ticks,i=this.ctx.measureText(t).width,s=$(this.isHorizontal()?e.maxRotation:e.minRotation),n=Math.cos(s),o=Math.sin(s),a=this._resolveTickFontOptions(0).size;return{w:i*n+a*o,h:i*o+a*n}}_getLabelCapacity(t){const e=this.options.time,i=e.displayFormats,s=i[e.unit]||i.millisecond,n=this._tickFormatFunction(t,0,Eo(this,[t],this._majorUnit),s),o=this._getLabelSize(n),a=Math.floor(this.isHorizontal()?this.width/o.w:this.height/o.h)-1;return a>0?a:1}getDataTimestamps(){let t,e,i=this._cache.data||[];if(i.length)return i;const s=this.getMatchingVisibleMetas();if(this._normalized&&s.length)return this._cache.data=s[0].controller.getAllParsedValues(this);for(t=0,e=s.length;t<e;++t)i=i.concat(s[t].controller.getAllParsedValues(this));return this._cache.data=this.normalize(i)}getLabelTimestamps(){const t=this._cache.labels||[];let e,i;if(t.length)return t;const s=this.getLabels();for(e=0,i=s.length;e<i;++e)t.push(Ao(this,s[e]));return this._cache.labels=this._normalized?t:this.normalize(t)}normalize(t){return lt(t.sort(Oo))}}function Io(t,e,i){let s,n,o,a,r=0,l=t.length-1;i?(e>=t[r].pos&&e<=t[l].pos&&({lo:r,hi:l}=it(t,"pos",e)),({pos:s,time:o}=t[r]),({pos:n,time:a}=t[l])):(e>=t[r].time&&e<=t[l].time&&({lo:r,hi:l}=it(t,"time",e)),({time:s,pos:o}=t[r]),({time:n,pos:a}=t[l]));const h=n-s;return h?o+(a-o)*(e-s)/h:o}var zo=Object.freeze({__proto__:null,CategoryScale:class extends Ks{static id="category";static defaults={ticks:{callback:ro}};constructor(t){super(t),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(t){const e=this._addedLabels;if(e.length){const t=this.getLabels();for(const{index:i,label:s}of e)t[i]===s&&t.splice(i,1);this._addedLabels=[]}super.init(t)}parse(t,e){if(s(t))return null;const i=this.getLabels();return((t,e)=>null===t?null:J(Math.round(t),0,e))(e=isFinite(e)&&i[e]===t?e:ao(i,t,l(e,t),this._addedLabels),i.length-1)}determineDataLimits(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let{min:i,max:s}=this.getMinMax(!0);"ticks"===this.options.bounds&&(t||(i=0),e||(s=this.getLabels().length-1)),this.min=i,this.max=s}buildTicks(){const t=this.min,e=this.max,i=this.options.offset,s=[];let n=this.getLabels();n=0===t&&e===n.length-1?n:n.slice(t,e+1),this._valueRange=Math.max(n.length-(i?0:1),1),this._startValue=this.min-(i?.5:0);for(let i=t;i<=e;i++)s.push({value:i});return s}getLabelForValue(t){return ro.call(this,t)}configure(){super.configure(),this.isHorizontal()||(this._reversePixels=!this._reversePixels)}getPixelForValue(t){return"number"!=typeof t&&(t=this.parse(t)),null===t?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getValueForPixel(t){return Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange)}getBasePixel(){return this.bottom}},LinearScale:co,LogarithmicScale:bo,RadialLinearScale:Po,TimeScale:Ro,TimeSeriesScale:class extends Ro{static id="timeseries";static defaults=Ro.defaults;constructor(t){super(t),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const t=this._getTimestampsForTable(),e=this._table=this.buildLookupTable(t);this._minPos=Io(e,this.min),this._tableRange=Io(e,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){const{min:e,max:i}=this,s=[],n=[];let o,a,r,l,h;for(o=0,a=t.length;o<a;++o)l=t[o],l>=e&&l<=i&&s.push(l);if(s.length<2)return[{time:e,pos:0},{time:i,pos:1}];for(o=0,a=s.length;o<a;++o)h=s[o+1],r=s[o-1],l=s[o],Math.round((h+r)/2)!==l&&n.push({time:l,pos:o/(a-1)});return n}_getTimestampsForTable(){let t=this._cache.all||[];if(t.length)return t;const e=this.getDataTimestamps(),i=this.getLabelTimestamps();return t=e.length&&i.length?this.normalize(e.concat(i)):e.length?e:i,t=this._cache.all=t,t}getDecimalForValue(t){return(Io(this._table,t)-this._minPos)/this._tableRange}getValueForPixel(t){const e=this._offsets,i=this.getDecimalForPixel(t)/e.factor-e.end;return Io(this._table,i*this._tableRange+this._minPos,!0)}}});const Fo=["rgb(54, 162, 235)","rgb(255, 99, 132)","rgb(255, 159, 64)","rgb(255, 205, 86)","rgb(75, 192, 192)","rgb(153, 102, 255)","rgb(201, 203, 207)"],Vo=Fo.map((t=>t.replace("rgb(","rgba(").replace(")",", 0.5)")));function Bo(t){return Fo[t%Fo.length]}function No(t){return Vo[t%Vo.length]}function Wo(t){let e=0;return(i,s)=>{const n=t.getDatasetMeta(s).controller;n instanceof zn?e=function(t,e){return t.backgroundColor=t.data.map((()=>Bo(e++))),e}(i,e):n instanceof Fn?e=function(t,e){return t.backgroundColor=t.data.map((()=>No(e++))),e}(i,e):n&&(e=function(t,e){return t.borderColor=Bo(e),t.backgroundColor=No(e),++e}(i,e))}}function Ho(t){let e;for(e in t)if(t[e].borderColor||t[e].backgroundColor)return!0;return!1}var jo={id:"colors",defaults:{enabled:!0,forceOverride:!1},beforeLayout(t,e,i){if(!i.enabled)return;const{data:{datasets:s},options:n}=t.config,{elements:o}=n;if(!i.forceOverride&&(Ho(s)||(a=n)&&(a.borderColor||a.backgroundColor)||o&&Ho(o)))return;var a;const r=Wo(t);s.forEach(r)}};function $o(t){if(t._decimated){const e=t._data;delete t._decimated,delete t._data,Object.defineProperty(t,"data",{configurable:!0,enumerable:!0,writable:!0,value:e})}}function Yo(t){t.data.datasets.forEach((t=>{$o(t)}))}var Uo={id:"decimation",defaults:{algorithm:"min-max",enabled:!1},beforeElementsUpdate:(t,e,i)=>{if(!i.enabled)return void Yo(t);const n=t.width;t.data.datasets.forEach(((e,o)=>{const{_data:a,indexAxis:r}=e,l=t.getDatasetMeta(o),h=a||e.data;if("y"===ki([r,t.options.indexAxis]))return;if(!l.controller.supportsDecimation)return;const c=t.scales[l.xAxisID];if("linear"!==c.type&&"time"!==c.type)return;if(t.options.parsing)return;let{start:d,count:u}=function(t,e){const i=e.length;let s,n=0;const{iScale:o}=t,{min:a,max:r,minDefined:l,maxDefined:h}=o.getUserBounds();return l&&(n=J(it(e,o.axis,a).lo,0,i-1)),s=h?J(it(e,o.axis,r).hi+1,n,i)-n:i-n,{start:n,count:s}}(l,h);if(u<=(i.threshold||4*n))return void $o(e);let f;switch(s(a)&&(e._data=h,delete e.data,Object.defineProperty(e,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(t){this._data=t}})),i.algorithm){case"lttb":f=function(t,e,i,s,n){const o=n.samples||s;if(o>=i)return t.slice(e,e+i);const a=[],r=(i-2)/(o-2);let l=0;const h=e+i-1;let c,d,u,f,g,p=e;for(a[l++]=t[p],c=0;c<o-2;c++){let s,n=0,o=0;const h=Math.floor((c+1)*r)+1+e,m=Math.min(Math.floor((c+2)*r)+1,i)+e,b=m-h;for(s=h;s<m;s++)n+=t[s].x,o+=t[s].y;n/=b,o/=b;const x=Math.floor(c*r)+1+e,_=Math.min(Math.floor((c+1)*r)+1,i)+e,{x:y,y:v}=t[p];for(u=f=-1,s=x;s<_;s++)f=.5*Math.abs((y-n)*(t[s].y-v)-(y-t[s].x)*(o-v)),f>u&&(u=f,d=t[s],g=s);a[l++]=d,p=g}return a[l++]=t[h],a}(h,d,u,n,i);break;case"min-max":f=function(t,e,i,n){let o,a,r,l,h,c,d,u,f,g,p=0,m=0;const b=[],x=e+i-1,_=t[e].x,y=t[x].x-_;for(o=e;o<e+i;++o){a=t[o],r=(a.x-_)/y*n,l=a.y;const e=0|r;if(e===h)l<f?(f=l,c=o):l>g&&(g=l,d=o),p=(m*p+a.x)/++m;else{const i=o-1;if(!s(c)&&!s(d)){const e=Math.min(c,d),s=Math.max(c,d);e!==u&&e!==i&&b.push({...t[e],x:p}),s!==u&&s!==i&&b.push({...t[s],x:p})}o>0&&i!==u&&b.push(t[i]),b.push(a),h=e,m=0,f=g=l,c=d=u=o}}return b}(h,d,u,n);break;default:throw new Error(`Unsupported decimation algorithm '${i.algorithm}'`)}e._decimated=f}))},destroy(t){Yo(t)}};function Xo(t,e,i,s){if(s)return;let n=e[t],o=i[t];return"angle"===t&&(n=G(n),o=G(o)),{property:t,start:n,end:o}}function qo(t,e,i){for(;e>t;e--){const t=i[e];if(!isNaN(t.x)&&!isNaN(t.y))break}return e}function Ko(t,e,i,s){return t&&e?s(t[i],e[i]):t?t[i]:e?e[i]:0}function Go(t,e){let i=[],s=!1;return n(t)?(s=!0,i=t):i=function(t,e){const{x:i=null,y:s=null}=t||{},n=e.points,o=[];return e.segments.forEach((({start:t,end:e})=>{e=qo(t,e,n);const a=n[t],r=n[e];null!==s?(o.push({x:a.x,y:s}),o.push({x:r.x,y:s})):null!==i&&(o.push({x:i,y:a.y}),o.push({x:i,y:r.y}))})),o}(t,e),i.length?new Zn({points:i,options:{tension:0},_loop:s,_fullLoop:s}):null}function Zo(t){return t&&!1!==t.fill}function Jo(t,e,i){let s=t[e].fill;const n=[e];let o;if(!i)return s;for(;!1!==s&&-1===n.indexOf(s);){if(!a(s))return s;if(o=t[s],!o)return!1;if(o.visible)return s;n.push(s),s=o.fill}return!1}function Qo(t,e,i){const s=function(t){const e=t.options,i=e.fill;let s=l(i&&i.target,i);void 0===s&&(s=!!e.backgroundColor);if(!1===s||null===s)return!1;if(!0===s)return"origin";return s}(t);if(o(s))return!isNaN(s.value)&&s;let n=parseFloat(s);return a(n)&&Math.floor(n)===n?function(t,e,i,s){"-"!==t&&"+"!==t||(i=e+i);if(i===e||i<0||i>=s)return!1;return i}(s[0],e,n,i):["origin","start","end","stack","shape"].indexOf(s)>=0&&s}function ta(t,e,i){const s=[];for(let n=0;n<i.length;n++){const o=i[n],{first:a,last:r,point:l}=ea(o,e,"x");if(!(!l||a&&r))if(a)s.unshift(l);else if(t.push(l),!r)break}t.push(...s)}function ea(t,e,i){const s=t.interpolate(e,i);if(!s)return{};const n=s[i],o=t.segments,a=t.points;let r=!1,l=!1;for(let t=0;t<o.length;t++){const e=o[t],s=a[e.start][i],h=a[e.end][i];if(tt(n,s,h)){r=n===s,l=n===h;break}}return{first:r,last:l,point:s}}class ia{constructor(t){this.x=t.x,this.y=t.y,this.radius=t.radius}pathSegment(t,e,i){const{x:s,y:n,radius:o}=this;return e=e||{start:0,end:O},t.arc(s,n,o,e.end,e.start,!0),!i.bounds}interpolate(t){const{x:e,y:i,radius:s}=this,n=t.angle;return{x:e+Math.cos(n)*s,y:i+Math.sin(n)*s,angle:n}}}function sa(t){const{chart:e,fill:i,line:s}=t;if(a(i))return function(t,e){const i=t.getDatasetMeta(e);return i&&t.isDatasetVisible(e)?i.dataset:null}(e,i);if("stack"===i)return function(t){const{scale:e,index:i,line:s}=t,n=[],o=s.segments,a=s.points,r=function(t,e){const i=[],s=t.getMatchingVisibleMetas("line");for(let t=0;t<s.length;t++){const n=s[t];if(n.index===e)break;n.hidden||i.unshift(n.dataset)}return i}(e,i);r.push(Go({x:null,y:e.bottom},s));for(let t=0;t<o.length;t++){const e=o[t];for(let t=e.start;t<=e.end;t++)ta(n,a[t],r)}return new Zn({points:n,options:{}})}(t);if("shape"===i)return!0;const n=function(t){if((t.scale||{}).getPointPositionForValue)return function(t){const{scale:e,fill:i}=t,s=e.options,n=e.getLabels().length,a=s.reverse?e.max:e.min,r=function(t,e,i){let s;return s="start"===t?i:"end"===t?e.options.reverse?e.min:e.max:o(t)?t.value:e.getBaseValue(),s}(i,e,a),l=[];if(s.grid.circular){const t=e.getPointPositionForValue(0,a);return new ia({x:t.x,y:t.y,radius:e.getDistanceFromCenterForValue(r)})}for(let t=0;t<n;++t)l.push(e.getPointPositionForValue(t,r));return l}(t);return function(t){const{scale:e={},fill:i}=t,s=function(t,e){let i=null;return"start"===t?i=e.bottom:"end"===t?i=e.top:o(t)?i=e.getPixelForValue(t.value):e.getBasePixel&&(i=e.getBasePixel()),i}(i,e);if(a(s)){const t=e.isHorizontal();return{x:t?s:null,y:t?null:s}}return null}(t)}(t);return n instanceof ia?n:Go(n,s)}function na(t,e,i){const s=sa(e),{line:n,scale:o,axis:a}=e,r=n.options,l=r.fill,h=r.backgroundColor,{above:c=h,below:d=h}=l||{};s&&n.points.length&&(Re(t,i),function(t,e){const{line:i,target:s,above:n,below:o,area:a,scale:r}=e,l=i._loop?"angle":e.axis;t.save(),"x"===l&&o!==n&&(oa(t,s,a.top),aa(t,{line:i,target:s,color:n,scale:r,property:l}),t.restore(),t.save(),oa(t,s,a.bottom));aa(t,{line:i,target:s,color:o,scale:r,property:l}),t.restore()}(t,{line:n,target:s,above:c,below:d,area:i,scale:o,axis:a}),Ie(t))}function oa(t,e,i){const{segments:s,points:n}=e;let o=!0,a=!1;t.beginPath();for(const r of s){const{start:s,end:l}=r,h=n[s],c=n[qo(s,l,n)];o?(t.moveTo(h.x,h.y),o=!1):(t.lineTo(h.x,i),t.lineTo(h.x,h.y)),a=!!e.pathSegment(t,r,{move:a}),a?t.closePath():t.lineTo(c.x,i)}t.lineTo(e.first().x,i),t.closePath(),t.clip()}function aa(t,e){const{line:i,target:s,property:n,color:o,scale:a}=e,r=function(t,e,i){const s=t.segments,n=t.points,o=e.points,a=[];for(const t of s){let{start:s,end:r}=t;r=qo(s,r,n);const l=Xo(i,n[s],n[r],t.loop);if(!e.segments){a.push({source:t,target:l,start:n[s],end:n[r]});continue}const h=Ei(e,l);for(const e of h){const s=Xo(i,o[e.start],o[e.end],e.loop),r=Li(t,n,s);for(const t of r)a.push({source:t,target:e,start:{[i]:Ko(l,s,"start",Math.max)},end:{[i]:Ko(l,s,"end",Math.min)}})}}return a}(i,s,n);for(const{source:e,target:l,start:h,end:c}of r){const{style:{backgroundColor:r=o}={}}=e,d=!0!==s;t.save(),t.fillStyle=r,ra(t,a,d&&Xo(n,h,c)),t.beginPath();const u=!!i.pathSegment(t,e);let f;if(d){u?t.closePath():la(t,s,c,n);const e=!!s.pathSegment(t,l,{move:u,reverse:!0});f=u&&e,f||la(t,s,h,n)}t.closePath(),t.fill(f?"evenodd":"nonzero"),t.restore()}}function ra(t,e,i){const{top:s,bottom:n}=e.chart.chartArea,{property:o,start:a,end:r}=i||{};"x"===o&&(t.beginPath(),t.rect(a,s,r-a,n-s),t.clip())}function la(t,e,i,s){const n=e.interpolate(i,s);n&&t.lineTo(n.x,n.y)}var ha={id:"filler",afterDatasetsUpdate(t,e,i){const s=(t.data.datasets||[]).length,n=[];let o,a,r,l;for(a=0;a<s;++a)o=t.getDatasetMeta(a),r=o.dataset,l=null,r&&r.options&&r instanceof Zn&&(l={visible:t.isDatasetVisible(a),index:a,fill:Qo(r,a,s),chart:t,axis:o.controller.options.indexAxis,scale:o.vScale,line:r}),o.$filler=l,n.push(l);for(a=0;a<s;++a)l=n[a],l&&!1!==l.fill&&(l.fill=Jo(n,a,i.propagate))},beforeDraw(t,e,i){const s="beforeDraw"===i.drawTime,n=t.getSortedVisibleDatasetMetas(),o=t.chartArea;for(let e=n.length-1;e>=0;--e){const i=n[e].$filler;i&&(i.line.updateControlPoints(o,i.axis),s&&i.fill&&na(t.ctx,i,o))}},beforeDatasetsDraw(t,e,i){if("beforeDatasetsDraw"!==i.drawTime)return;const s=t.getSortedVisibleDatasetMetas();for(let e=s.length-1;e>=0;--e){const i=s[e].$filler;Zo(i)&&na(t.ctx,i,t.chartArea)}},beforeDatasetDraw(t,e,i){const s=e.meta.$filler;Zo(s)&&"beforeDatasetDraw"===i.drawTime&&na(t.ctx,s,t.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};const ca=(t,e)=>{let{boxHeight:i=e,boxWidth:s=e}=t;return t.usePointStyle&&(i=Math.min(i,e),s=t.pointStyleWidth||Math.min(s,e)),{boxWidth:s,boxHeight:i,itemHeight:Math.max(e,i)}};class da extends Bs{constructor(t){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e,i){this.maxWidth=t,this.maxHeight=e,this._margins=i,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){const t=this.options.labels||{};let e=d(t.generateLabels,[this.chart],this)||[];t.filter&&(e=e.filter((e=>t.filter(e,this.chart.data)))),t.sort&&(e=e.sort(((e,i)=>t.sort(e,i,this.chart.data)))),this.options.reverse&&e.reverse(),this.legendItems=e}fit(){const{options:t,ctx:e}=this;if(!t.display)return void(this.width=this.height=0);const i=t.labels,s=wi(i.font),n=s.size,o=this._computeTitleHeight(),{boxWidth:a,itemHeight:r}=ca(i,n);let l,h;e.font=s.string,this.isHorizontal()?(l=this.maxWidth,h=this._fitRows(o,n,a,r)+10):(h=this.maxHeight,l=this._fitCols(o,s,a,r)+10),this.width=Math.min(l,t.maxWidth||this.maxWidth),this.height=Math.min(h,t.maxHeight||this.maxHeight)}_fitRows(t,e,i,s){const{ctx:n,maxWidth:o,options:{labels:{padding:a}}}=this,r=this.legendHitBoxes=[],l=this.lineWidths=[0],h=s+a;let c=t;n.textAlign="left",n.textBaseline="middle";let d=-1,u=-h;return this.legendItems.forEach(((t,f)=>{const g=i+e/2+n.measureText(t.text).width;(0===f||l[l.length-1]+g+2*a>o)&&(c+=h,l[l.length-(f>0?0:1)]=0,u+=h,d++),r[f]={left:0,top:u,row:d,width:g,height:s},l[l.length-1]+=g+a})),c}_fitCols(t,e,i,s){const{ctx:n,maxHeight:o,options:{labels:{padding:a}}}=this,r=this.legendHitBoxes=[],l=this.columnSizes=[],h=o-t;let c=a,d=0,u=0,f=0,g=0;return this.legendItems.forEach(((t,o)=>{const{itemWidth:p,itemHeight:m}=function(t,e,i,s,n){const o=function(t,e,i,s){let n=t.text;n&&"string"!=typeof n&&(n=n.reduce(((t,e)=>t.length>e.length?t:e)));return e+i.size/2+s.measureText(n).width}(s,t,e,i),a=function(t,e,i){let s=t;"string"!=typeof e.text&&(s=ua(e,i));return s}(n,s,e.lineHeight);return{itemWidth:o,itemHeight:a}}(i,e,n,t,s);o>0&&u+m+2*a>h&&(c+=d+a,l.push({width:d,height:u}),f+=d+a,g++,d=u=0),r[o]={left:f,top:u,col:g,width:p,height:m},d=Math.max(d,p),u+=m+a})),c+=d,l.push({width:d,height:u}),c}adjustHitBoxes(){if(!this.options.display)return;const t=this._computeTitleHeight(),{legendHitBoxes:e,options:{align:i,labels:{padding:s},rtl:n}}=this,o=Di(n,this.left,this.width);if(this.isHorizontal()){let n=0,a=ft(i,this.left+s,this.right-this.lineWidths[n]);for(const r of e)n!==r.row&&(n=r.row,a=ft(i,this.left+s,this.right-this.lineWidths[n])),r.top+=this.top+t+s,r.left=o.leftForLtr(o.x(a),r.width),a+=r.width+s}else{let n=0,a=ft(i,this.top+t+s,this.bottom-this.columnSizes[n].height);for(const r of e)r.col!==n&&(n=r.col,a=ft(i,this.top+t+s,this.bottom-this.columnSizes[n].height)),r.top=a,r.left+=this.left+s,r.left=o.leftForLtr(o.x(r.left),r.width),a+=r.height+s}}isHorizontal(){return"top"===this.options.position||"bottom"===this.options.position}draw(){if(this.options.display){const t=this.ctx;Re(t,this),this._draw(),Ie(t)}}_draw(){const{options:t,columnSizes:e,lineWidths:i,ctx:s}=this,{align:n,labels:o}=t,a=ue.color,r=Di(t.rtl,this.left,this.width),h=wi(o.font),{padding:c}=o,d=h.size,u=d/2;let f;this.drawTitle(),s.textAlign=r.textAlign("left"),s.textBaseline="middle",s.lineWidth=.5,s.font=h.string;const{boxWidth:g,boxHeight:p,itemHeight:m}=ca(o,d),b=this.isHorizontal(),x=this._computeTitleHeight();f=b?{x:ft(n,this.left+c,this.right-i[0]),y:this.top+c+x,line:0}:{x:this.left+c,y:ft(n,this.top+x+c,this.bottom-e[0].height),line:0},Ci(this.ctx,t.textDirection);const _=m+c;this.legendItems.forEach(((y,v)=>{s.strokeStyle=y.fontColor,s.fillStyle=y.fontColor;const M=s.measureText(y.text).width,w=r.textAlign(y.textAlign||(y.textAlign=o.textAlign)),k=g+u+M;let S=f.x,P=f.y;r.setWidth(this.width),b?v>0&&S+k+c>this.right&&(P=f.y+=_,f.line++,S=f.x=ft(n,this.left+c,this.right-i[f.line])):v>0&&P+_>this.bottom&&(S=f.x=S+e[f.line].width+c,f.line++,P=f.y=ft(n,this.top+x+c,this.bottom-e[f.line].height));if(function(t,e,i){if(isNaN(g)||g<=0||isNaN(p)||p<0)return;s.save();const n=l(i.lineWidth,1);if(s.fillStyle=l(i.fillStyle,a),s.lineCap=l(i.lineCap,"butt"),s.lineDashOffset=l(i.lineDashOffset,0),s.lineJoin=l(i.lineJoin,"miter"),s.lineWidth=n,s.strokeStyle=l(i.strokeStyle,a),s.setLineDash(l(i.lineDash,[])),o.usePointStyle){const a={radius:p*Math.SQRT2/2,pointStyle:i.pointStyle,rotation:i.rotation,borderWidth:n},l=r.xPlus(t,g/2);Le(s,a,l,e+u,o.pointStyleWidth&&g)}else{const o=e+Math.max((d-p)/2,0),a=r.leftForLtr(t,g),l=vi(i.borderRadius);s.beginPath(),Object.values(l).some((t=>0!==t))?We(s,{x:a,y:o,w:g,h:p,radius:l}):s.rect(a,o,g,p),s.fill(),0!==n&&s.stroke()}s.restore()}(r.x(S),P,y),S=gt(w,S+g+u,b?S+k:this.right,t.rtl),function(t,e,i){Ve(s,i.text,t,e+m/2,h,{strikethrough:i.hidden,textAlign:r.textAlign(i.textAlign)})}(r.x(S),P,y),b)f.x+=k+c;else if("string"!=typeof y.text){const t=h.lineHeight;f.y+=ua(y,t)}else f.y+=_})),Oi(this.ctx,t.textDirection)}drawTitle(){const t=this.options,e=t.title,i=wi(e.font),s=Mi(e.padding);if(!e.display)return;const n=Di(t.rtl,this.left,this.width),o=this.ctx,a=e.position,r=i.size/2,l=s.top+r;let h,c=this.left,d=this.width;if(this.isHorizontal())d=Math.max(...this.lineWidths),h=this.top+l,c=ft(t.align,c,this.right-d);else{const e=this.columnSizes.reduce(((t,e)=>Math.max(t,e.height)),0);h=l+ft(t.align,this.top,this.bottom-e-t.labels.padding-this._computeTitleHeight())}const u=ft(a,c,c+d);o.textAlign=n.textAlign(ut(a)),o.textBaseline="middle",o.strokeStyle=e.color,o.fillStyle=e.color,o.font=i.string,Ve(o,e.text,u,h,i)}_computeTitleHeight(){const t=this.options.title,e=wi(t.font),i=Mi(t.padding);return t.display?e.lineHeight+i.height:0}_getLegendItemAt(t,e){let i,s,n;if(tt(t,this.left,this.right)&&tt(e,this.top,this.bottom))for(n=this.legendHitBoxes,i=0;i<n.length;++i)if(s=n[i],tt(t,s.left,s.left+s.width)&&tt(e,s.top,s.top+s.height))return this.legendItems[i];return null}handleEvent(t){const e=this.options;if(!function(t,e){if(("mousemove"===t||"mouseout"===t)&&(e.onHover||e.onLeave))return!0;if(e.onClick&&("click"===t||"mouseup"===t))return!0;return!1}(t.type,e))return;const i=this._getLegendItemAt(t.x,t.y);if("mousemove"===t.type||"mouseout"===t.type){const o=this._hoveredItem,a=(n=i,null!==(s=o)&&null!==n&&s.datasetIndex===n.datasetIndex&&s.index===n.index);o&&!a&&d(e.onLeave,[t,o,this],this),this._hoveredItem=i,i&&!a&&d(e.onHover,[t,i,this],this)}else i&&d(e.onClick,[t,i,this],this);var s,n}}function ua(t,e){return e*(t.text?t.text.length+.5:0)}var fa={id:"legend",_element:da,start(t,e,i){const s=t.legend=new da({ctx:t.ctx,options:i,chart:t});ns.configure(t,s,i),ns.addBox(t,s)},stop(t){ns.removeBox(t,t.legend),delete t.legend},beforeUpdate(t,e,i){const s=t.legend;ns.configure(t,s,i),s.options=i},afterUpdate(t){const e=t.legend;e.buildLabels(),e.adjustHitBoxes()},afterEvent(t,e){e.replay||t.legend.handleEvent(e.event)},defaults:{display:!0,position:"top",align:"center",fullSize:!0,reverse:!1,weight:1e3,onClick(t,e,i){const s=e.datasetIndex,n=i.chart;n.isDatasetVisible(s)?(n.hide(s),e.hidden=!0):(n.show(s),e.hidden=!1)},onHover:null,onLeave:null,labels:{color:t=>t.chart.options.color,boxWidth:40,padding:10,generateLabels(t){const e=t.data.datasets,{labels:{usePointStyle:i,pointStyle:s,textAlign:n,color:o,useBorderRadius:a,borderRadius:r}}=t.legend.options;return t._getSortedDatasetMetas().map((t=>{const l=t.controller.getStyle(i?0:void 0),h=Mi(l.borderWidth);return{text:e[t.index].label,fillStyle:l.backgroundColor,fontColor:o,hidden:!t.visible,lineCap:l.borderCapStyle,lineDash:l.borderDash,lineDashOffset:l.borderDashOffset,lineJoin:l.borderJoinStyle,lineWidth:(h.width+h.height)/4,strokeStyle:l.borderColor,pointStyle:s||l.pointStyle,rotation:l.rotation,textAlign:n||l.textAlign,borderRadius:a&&(r||l.borderRadius),datasetIndex:t.index}}),this)}},title:{color:t=>t.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:t=>!t.startsWith("on"),labels:{_scriptable:t=>!["generateLabels","filter","sort"].includes(t)}}};class ga extends Bs{constructor(t){super(),this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e){const i=this.options;if(this.left=0,this.top=0,!i.display)return void(this.width=this.height=this.right=this.bottom=0);this.width=this.right=t,this.height=this.bottom=e;const s=n(i.text)?i.text.length:1;this._padding=Mi(i.padding);const o=s*wi(i.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=o:this.width=o}isHorizontal(){const t=this.options.position;return"top"===t||"bottom"===t}_drawArgs(t){const{top:e,left:i,bottom:s,right:n,options:o}=this,a=o.align;let r,l,h,c=0;return this.isHorizontal()?(l=ft(a,i,n),h=e+t,r=n-i):("left"===o.position?(l=i+t,h=ft(a,s,e),c=-.5*C):(l=n-t,h=ft(a,e,s),c=.5*C),r=s-e),{titleX:l,titleY:h,maxWidth:r,rotation:c}}draw(){const t=this.ctx,e=this.options;if(!e.display)return;const i=wi(e.font),s=i.lineHeight/2+this._padding.top,{titleX:n,titleY:o,maxWidth:a,rotation:r}=this._drawArgs(s);Ve(t,e.text,0,0,i,{color:e.color,maxWidth:a,rotation:r,textAlign:ut(e.align),textBaseline:"middle",translation:[n,o]})}}var pa={id:"title",_element:ga,start(t,e,i){!function(t,e){const i=new ga({ctx:t.ctx,options:e,chart:t});ns.configure(t,i,e),ns.addBox(t,i),t.titleBlock=i}(t,i)},stop(t){const e=t.titleBlock;ns.removeBox(t,e),delete t.titleBlock},beforeUpdate(t,e,i){const s=t.titleBlock;ns.configure(t,s,i),s.options=i},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const ma=new WeakMap;var ba={id:"subtitle",start(t,e,i){const s=new ga({ctx:t.ctx,options:i,chart:t});ns.configure(t,s,i),ns.addBox(t,s),ma.set(t,s)},stop(t){ns.removeBox(t,ma.get(t)),ma.delete(t)},beforeUpdate(t,e,i){const s=ma.get(t);ns.configure(t,s,i),s.options=i},defaults:{align:"center",display:!1,font:{weight:"normal"},fullSize:!0,padding:0,position:"top",text:"",weight:1500},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const xa={average(t){if(!t.length)return!1;let e,i,s=0,n=0,o=0;for(e=0,i=t.length;e<i;++e){const i=t[e].element;if(i&&i.hasValue()){const t=i.tooltipPosition();s+=t.x,n+=t.y,++o}}return{x:s/o,y:n/o}},nearest(t,e){if(!t.length)return!1;let i,s,n,o=e.x,a=e.y,r=Number.POSITIVE_INFINITY;for(i=0,s=t.length;i<s;++i){const s=t[i].element;if(s&&s.hasValue()){const t=q(e,s.getCenterPoint());t<r&&(r=t,n=s)}}if(n){const t=n.tooltipPosition();o=t.x,a=t.y}return{x:o,y:a}}};function _a(t,e){return e&&(n(e)?Array.prototype.push.apply(t,e):t.push(e)),t}function ya(t){return("string"==typeof t||t instanceof String)&&t.indexOf("\n")>-1?t.split("\n"):t}function va(t,e){const{element:i,datasetIndex:s,index:n}=e,o=t.getDatasetMeta(s).controller,{label:a,value:r}=o.getLabelAndValue(n);return{chart:t,label:a,parsed:o.getParsed(n),raw:t.data.datasets[s].data[n],formattedValue:r,dataset:o.getDataset(),dataIndex:n,datasetIndex:s,element:i}}function Ma(t,e){const i=t.chart.ctx,{body:s,footer:n,title:o}=t,{boxWidth:a,boxHeight:r}=e,l=wi(e.bodyFont),h=wi(e.titleFont),c=wi(e.footerFont),d=o.length,f=n.length,g=s.length,p=Mi(e.padding);let m=p.height,b=0,x=s.reduce(((t,e)=>t+e.before.length+e.lines.length+e.after.length),0);if(x+=t.beforeBody.length+t.afterBody.length,d&&(m+=d*h.lineHeight+(d-1)*e.titleSpacing+e.titleMarginBottom),x){m+=g*(e.displayColors?Math.max(r,l.lineHeight):l.lineHeight)+(x-g)*l.lineHeight+(x-1)*e.bodySpacing}f&&(m+=e.footerMarginTop+f*c.lineHeight+(f-1)*e.footerSpacing);let _=0;const y=function(t){b=Math.max(b,i.measureText(t).width+_)};return i.save(),i.font=h.string,u(t.title,y),i.font=l.string,u(t.beforeBody.concat(t.afterBody),y),_=e.displayColors?a+2+e.boxPadding:0,u(s,(t=>{u(t.before,y),u(t.lines,y),u(t.after,y)})),_=0,i.font=c.string,u(t.footer,y),i.restore(),b+=p.width,{width:b,height:m}}function wa(t,e,i,s){const{x:n,width:o}=i,{width:a,chartArea:{left:r,right:l}}=t;let h="center";return"center"===s?h=n<=(r+l)/2?"left":"right":n<=o/2?h="left":n>=a-o/2&&(h="right"),function(t,e,i,s){const{x:n,width:o}=s,a=i.caretSize+i.caretPadding;return"left"===t&&n+o+a>e.width||"right"===t&&n-o-a<0||void 0}(h,t,e,i)&&(h="center"),h}function ka(t,e,i){const s=i.yAlign||e.yAlign||function(t,e){const{y:i,height:s}=e;return i<s/2?"top":i>t.height-s/2?"bottom":"center"}(t,i);return{xAlign:i.xAlign||e.xAlign||wa(t,e,i,s),yAlign:s}}function Sa(t,e,i,s){const{caretSize:n,caretPadding:o,cornerRadius:a}=t,{xAlign:r,yAlign:l}=i,h=n+o,{topLeft:c,topRight:d,bottomLeft:u,bottomRight:f}=vi(a);let g=function(t,e){let{x:i,width:s}=t;return"right"===e?i-=s:"center"===e&&(i-=s/2),i}(e,r);const p=function(t,e,i){let{y:s,height:n}=t;return"top"===e?s+=i:s-="bottom"===e?n+i:n/2,s}(e,l,h);return"center"===l?"left"===r?g+=h:"right"===r&&(g-=h):"left"===r?g-=Math.max(c,u)+n:"right"===r&&(g+=Math.max(d,f)+n),{x:J(g,0,s.width-e.width),y:J(p,0,s.height-e.height)}}function Pa(t,e,i){const s=Mi(i.padding);return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-s.right:t.x+s.left}function Da(t){return _a([],ya(t))}function Ca(t,e){const i=e&&e.dataset&&e.dataset.tooltip&&e.dataset.tooltip.callbacks;return i?t.override(i):t}const Oa={beforeTitle:e,title(t){if(t.length>0){const e=t[0],i=e.chart.data.labels,s=i?i.length:0;if(this&&this.options&&"dataset"===this.options.mode)return e.dataset.label||"";if(e.label)return e.label;if(s>0&&e.dataIndex<s)return i[e.dataIndex]}return""},afterTitle:e,beforeBody:e,beforeLabel:e,label(t){if(this&&this.options&&"dataset"===this.options.mode)return t.label+": "+t.formattedValue||t.formattedValue;let e=t.dataset.label||"";e&&(e+=": ");const i=t.formattedValue;return s(i)||(e+=i),e},labelColor(t){const e=t.chart.getDatasetMeta(t.datasetIndex).controller.getStyle(t.dataIndex);return{borderColor:e.borderColor,backgroundColor:e.backgroundColor,borderWidth:e.borderWidth,borderDash:e.borderDash,borderDashOffset:e.borderDashOffset,borderRadius:0}},labelTextColor(){return this.options.bodyColor},labelPointStyle(t){const e=t.chart.getDatasetMeta(t.datasetIndex).controller.getStyle(t.dataIndex);return{pointStyle:e.pointStyle,rotation:e.rotation}},afterLabel:e,afterBody:e,beforeFooter:e,footer:e,afterFooter:e};function Aa(t,e,i,s){const n=t[e].call(i,s);return void 0===n?Oa[e].call(i,s):n}class Ta extends Bs{static positioners=xa;constructor(t){super(),this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=t.chart,this.options=t.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(t){this.options=t,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const t=this._cachedAnimations;if(t)return t;const e=this.chart,i=this.options.setContext(this.getContext()),s=i.enabled&&e.options.animation&&i.animations,n=new Ps(this.chart,s);return s._cacheable&&(this._cachedAnimations=Object.freeze(n)),n}getContext(){return this.$context||(this.$context=(t=this.chart.getContext(),e=this,i=this._tooltipItems,Pi(t,{tooltip:e,tooltipItems:i,type:"tooltip"})));var t,e,i}getTitle(t,e){const{callbacks:i}=e,s=Aa(i,"beforeTitle",this,t),n=Aa(i,"title",this,t),o=Aa(i,"afterTitle",this,t);let a=[];return a=_a(a,ya(s)),a=_a(a,ya(n)),a=_a(a,ya(o)),a}getBeforeBody(t,e){return Da(Aa(e.callbacks,"beforeBody",this,t))}getBody(t,e){const{callbacks:i}=e,s=[];return u(t,(t=>{const e={before:[],lines:[],after:[]},n=Ca(i,t);_a(e.before,ya(Aa(n,"beforeLabel",this,t))),_a(e.lines,Aa(n,"label",this,t)),_a(e.after,ya(Aa(n,"afterLabel",this,t))),s.push(e)})),s}getAfterBody(t,e){return Da(Aa(e.callbacks,"afterBody",this,t))}getFooter(t,e){const{callbacks:i}=e,s=Aa(i,"beforeFooter",this,t),n=Aa(i,"footer",this,t),o=Aa(i,"afterFooter",this,t);let a=[];return a=_a(a,ya(s)),a=_a(a,ya(n)),a=_a(a,ya(o)),a}_createItems(t){const e=this._active,i=this.chart.data,s=[],n=[],o=[];let a,r,l=[];for(a=0,r=e.length;a<r;++a)l.push(va(this.chart,e[a]));return t.filter&&(l=l.filter(((e,s,n)=>t.filter(e,s,n,i)))),t.itemSort&&(l=l.sort(((e,s)=>t.itemSort(e,s,i)))),u(l,(e=>{const i=Ca(t.callbacks,e);s.push(Aa(i,"labelColor",this,e)),n.push(Aa(i,"labelPointStyle",this,e)),o.push(Aa(i,"labelTextColor",this,e))})),this.labelColors=s,this.labelPointStyles=n,this.labelTextColors=o,this.dataPoints=l,l}update(t,e){const i=this.options.setContext(this.getContext()),s=this._active;let n,o=[];if(s.length){const t=xa[i.position].call(this,s,this._eventPosition);o=this._createItems(i),this.title=this.getTitle(o,i),this.beforeBody=this.getBeforeBody(o,i),this.body=this.getBody(o,i),this.afterBody=this.getAfterBody(o,i),this.footer=this.getFooter(o,i);const e=this._size=Ma(this,i),a=Object.assign({},t,e),r=ka(this.chart,i,a),l=Sa(i,a,r,this.chart);this.xAlign=r.xAlign,this.yAlign=r.yAlign,n={opacity:1,x:l.x,y:l.y,width:e.width,height:e.height,caretX:t.x,caretY:t.y}}else 0!==this.opacity&&(n={opacity:0});this._tooltipItems=o,this.$context=void 0,n&&this._resolveAnimations().update(this,n),t&&i.external&&i.external.call(this,{chart:this.chart,tooltip:this,replay:e})}drawCaret(t,e,i,s){const n=this.getCaretPosition(t,i,s);e.lineTo(n.x1,n.y1),e.lineTo(n.x2,n.y2),e.lineTo(n.x3,n.y3)}getCaretPosition(t,e,i){const{xAlign:s,yAlign:n}=this,{caretSize:o,cornerRadius:a}=i,{topLeft:r,topRight:l,bottomLeft:h,bottomRight:c}=vi(a),{x:d,y:u}=t,{width:f,height:g}=e;let p,m,b,x,_,y;return"center"===n?(_=u+g/2,"left"===s?(p=d,m=p-o,x=_+o,y=_-o):(p=d+f,m=p+o,x=_-o,y=_+o),b=p):(m="left"===s?d+Math.max(r,h)+o:"right"===s?d+f-Math.max(l,c)-o:this.caretX,"top"===n?(x=u,_=x-o,p=m-o,b=m+o):(x=u+g,_=x+o,p=m+o,b=m-o),y=x),{x1:p,x2:m,x3:b,y1:x,y2:_,y3:y}}drawTitle(t,e,i){const s=this.title,n=s.length;let o,a,r;if(n){const l=Di(i.rtl,this.x,this.width);for(t.x=Pa(this,i.titleAlign,i),e.textAlign=l.textAlign(i.titleAlign),e.textBaseline="middle",o=wi(i.titleFont),a=i.titleSpacing,e.fillStyle=i.titleColor,e.font=o.string,r=0;r<n;++r)e.fillText(s[r],l.x(t.x),t.y+o.lineHeight/2),t.y+=o.lineHeight+a,r+1===n&&(t.y+=i.titleMarginBottom-a)}}_drawColorBox(t,e,i,s,n){const a=this.labelColors[i],r=this.labelPointStyles[i],{boxHeight:l,boxWidth:h,boxPadding:c}=n,d=wi(n.bodyFont),u=Pa(this,"left",n),f=s.x(u),g=l<d.lineHeight?(d.lineHeight-l)/2:0,p=e.y+g;if(n.usePointStyle){const e={radius:Math.min(h,l)/2,pointStyle:r.pointStyle,rotation:r.rotation,borderWidth:1},i=s.leftForLtr(f,h)+h/2,o=p+l/2;t.strokeStyle=n.multiKeyBackground,t.fillStyle=n.multiKeyBackground,Te(t,e,i,o),t.strokeStyle=a.borderColor,t.fillStyle=a.backgroundColor,Te(t,e,i,o)}else{t.lineWidth=o(a.borderWidth)?Math.max(...Object.values(a.borderWidth)):a.borderWidth||1,t.strokeStyle=a.borderColor,t.setLineDash(a.borderDash||[]),t.lineDashOffset=a.borderDashOffset||0;const e=s.leftForLtr(f,h-c),i=s.leftForLtr(s.xPlus(f,1),h-c-2),r=vi(a.borderRadius);Object.values(r).some((t=>0!==t))?(t.beginPath(),t.fillStyle=n.multiKeyBackground,We(t,{x:e,y:p,w:h,h:l,radius:r}),t.fill(),t.stroke(),t.fillStyle=a.backgroundColor,t.beginPath(),We(t,{x:i,y:p+1,w:h-2,h:l-2,radius:r}),t.fill()):(t.fillStyle=n.multiKeyBackground,t.fillRect(e,p,h,l),t.strokeRect(e,p,h,l),t.fillStyle=a.backgroundColor,t.fillRect(i,p+1,h-2,l-2))}t.fillStyle=this.labelTextColors[i]}drawBody(t,e,i){const{body:s}=this,{bodySpacing:n,bodyAlign:o,displayColors:a,boxHeight:r,boxWidth:l,boxPadding:h}=i,c=wi(i.bodyFont);let d=c.lineHeight,f=0;const g=Di(i.rtl,this.x,this.width),p=function(i){e.fillText(i,g.x(t.x+f),t.y+d/2),t.y+=d+n},m=g.textAlign(o);let b,x,_,y,v,M,w;for(e.textAlign=o,e.textBaseline="middle",e.font=c.string,t.x=Pa(this,m,i),e.fillStyle=i.bodyColor,u(this.beforeBody,p),f=a&&"right"!==m?"center"===o?l/2+h:l+2+h:0,y=0,M=s.length;y<M;++y){for(b=s[y],x=this.labelTextColors[y],e.fillStyle=x,u(b.before,p),_=b.lines,a&&_.length&&(this._drawColorBox(e,t,y,g,i),d=Math.max(c.lineHeight,r)),v=0,w=_.length;v<w;++v)p(_[v]),d=c.lineHeight;u(b.after,p)}f=0,d=c.lineHeight,u(this.afterBody,p),t.y-=n}drawFooter(t,e,i){const s=this.footer,n=s.length;let o,a;if(n){const r=Di(i.rtl,this.x,this.width);for(t.x=Pa(this,i.footerAlign,i),t.y+=i.footerMarginTop,e.textAlign=r.textAlign(i.footerAlign),e.textBaseline="middle",o=wi(i.footerFont),e.fillStyle=i.footerColor,e.font=o.string,a=0;a<n;++a)e.fillText(s[a],r.x(t.x),t.y+o.lineHeight/2),t.y+=o.lineHeight+i.footerSpacing}}drawBackground(t,e,i,s){const{xAlign:n,yAlign:o}=this,{x:a,y:r}=t,{width:l,height:h}=i,{topLeft:c,topRight:d,bottomLeft:u,bottomRight:f}=vi(s.cornerRadius);e.fillStyle=s.backgroundColor,e.strokeStyle=s.borderColor,e.lineWidth=s.borderWidth,e.beginPath(),e.moveTo(a+c,r),"top"===o&&this.drawCaret(t,e,i,s),e.lineTo(a+l-d,r),e.quadraticCurveTo(a+l,r,a+l,r+d),"center"===o&&"right"===n&&this.drawCaret(t,e,i,s),e.lineTo(a+l,r+h-f),e.quadraticCurveTo(a+l,r+h,a+l-f,r+h),"bottom"===o&&this.drawCaret(t,e,i,s),e.lineTo(a+u,r+h),e.quadraticCurveTo(a,r+h,a,r+h-u),"center"===o&&"left"===n&&this.drawCaret(t,e,i,s),e.lineTo(a,r+c),e.quadraticCurveTo(a,r,a+c,r),e.closePath(),e.fill(),s.borderWidth>0&&e.stroke()}_updateAnimationTarget(t){const e=this.chart,i=this.$animations,s=i&&i.x,n=i&&i.y;if(s||n){const i=xa[t.position].call(this,this._active,this._eventPosition);if(!i)return;const o=this._size=Ma(this,t),a=Object.assign({},i,this._size),r=ka(e,t,a),l=Sa(t,a,r,e);s._to===l.x&&n._to===l.y||(this.xAlign=r.xAlign,this.yAlign=r.yAlign,this.width=o.width,this.height=o.height,this.caretX=i.x,this.caretY=i.y,this._resolveAnimations().update(this,l))}}_willRender(){return!!this.opacity}draw(t){const e=this.options.setContext(this.getContext());let i=this.opacity;if(!i)return;this._updateAnimationTarget(e);const s={width:this.width,height:this.height},n={x:this.x,y:this.y};i=Math.abs(i)<.001?0:i;const o=Mi(e.padding),a=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;e.enabled&&a&&(t.save(),t.globalAlpha=i,this.drawBackground(n,t,s,e),Ci(t,e.textDirection),n.y+=o.top,this.drawTitle(n,t,e),this.drawBody(n,t,e),this.drawFooter(n,t,e),Oi(t,e.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,e){const i=this._active,s=t.map((({datasetIndex:t,index:e})=>{const i=this.chart.getDatasetMeta(t);if(!i)throw new Error("Cannot find a dataset at index "+t);return{datasetIndex:t,element:i.data[e],index:e}})),n=!f(i,s),o=this._positionChanged(s,e);(n||o)&&(this._active=s,this._eventPosition=e,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,e,i=!0){if(e&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const s=this.options,n=this._active||[],o=this._getActiveElements(t,n,e,i),a=this._positionChanged(o,t),r=e||!f(o,n)||a;return r&&(this._active=o,(s.enabled||s.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,e))),r}_getActiveElements(t,e,i,s){const n=this.options;if("mouseout"===t.type)return[];if(!s)return e;const o=this.chart.getElementsAtEventForMode(t,n.mode,n,i);return n.reverse&&o.reverse(),o}_positionChanged(t,e){const{caretX:i,caretY:s,options:n}=this,o=xa[n.position].call(this,t,e);return!1!==o&&(i!==o.x||s!==o.y)}}var La={id:"tooltip",_element:Ta,positioners:xa,afterInit(t,e,i){i&&(t.tooltip=new Ta({chart:t,options:i}))},beforeUpdate(t,e,i){t.tooltip&&t.tooltip.initialize(i)},reset(t,e,i){t.tooltip&&t.tooltip.initialize(i)},afterDraw(t){const e=t.tooltip;if(e&&e._willRender()){const i={tooltip:e};if(!1===t.notifyPlugins("beforeTooltipDraw",{...i,cancelable:!0}))return;e.draw(t.ctx),t.notifyPlugins("afterTooltipDraw",i)}},afterEvent(t,e){if(t.tooltip){const i=e.replay;t.tooltip.handleEvent(e.event,i,e.inChartArea)&&(e.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(t,e)=>e.bodyFont.size,boxWidth:(t,e)=>e.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:Oa},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:t=>"filter"!==t&&"itemSort"!==t&&"external"!==t,_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]};return wn.register(Vn,zo,oo,t),wn.helpers={...Vi},wn._adapters=Dn,wn.Animation=Ss,wn.Animations=Ps,wn.animator=xt,wn.controllers=Js.controllers.items,wn.DatasetController=Vs,wn.Element=Bs,wn.elements=oo,wn.Interaction=Yi,wn.layouts=ns,wn.platforms=Ms,wn.Scale=Ks,wn.Ticks=ae,Object.assign(wn,Vn,zo,oo,t,Ms),wn.Chart=wn,"undefined"!=typeof window&&(window.Chart=wn),wn}));
//# sourceMappingURL=chart.umd.js.map
js/wfonboarding.1722265817.js000064400000011243150755146450011301 0ustar00(function($) {
	$(function() {

		function showRegistrationModal(id, message) {
			console.log("Registration error message: ", message);
			var content = $("#wf-onboarding-registration-" + id + "-template").clone().attr('id', null);
			if (message)
				content.find('.message').empty().text(message);
			$.wfcolorbox({
				width: (wordfenceExt.isSmallScreen ? '300px' : '500px'),
				html: content[0].outerHTML,
				overlayClose: false,
				closeButton: false,
				className: 'wf-modal'
			});
		}

		function toggleInstallType(event) {
			event.preventDefault();
			event.stopPropagation();
			$(event.target).parents('.wf-onboarding-registration-prompt').find('.wf-onboarding-install-type').toggle();
			$.wfcolorbox.resize();
		}

		$(document).on('click', '.wf-onboarding-install-type-toggle', toggleInstallType);
		$('.wf-onboarding-install-type-toggle').on('click', toggleInstallType);

		$(document).on('input', '#wf-onboarding-email-input,#wf-onboarding-license-input', function(event) {
			var context = $(event.target).parents('.wf-onboarding-registration-prompt');
			context.find('.wf-onboarding-consent-group').show();
			context.find('#wf-onboarding-consent-input').prop('checked', false);
		});

		var subscriptionOptionSelector = '.wf-onboarding-subscription-options li';
		function handleSubscriptionOptionClick(event) {
			var target = $(event.target);
			target.parent().find('li').removeClass('wf-active').attr('aria-checked', 'false');
			target.addClass('wf-active').attr('aria-checked', 'true');
			event.stopPropagation();
		};
		$(subscriptionOptionSelector).on('click', handleSubscriptionOptionClick);
		$(document).on('click', subscriptionOptionSelector, handleSubscriptionOptionClick);

		$(document).on('keyup keydown', subscriptionOptionSelector, function (event) {
			if (event.which == 32) {
				event.preventDefault();
				event.stopPropagation();
				if (event.type == 'keyup')
					$(event.target).trigger('click');
			}
		});

		$(document).on('submit', '.wf-onboarding-form', function(event) {
			event.preventDefault();
			var context = $(this);
			if (context.data('submitting'))
				return;
			context.data('submitting', true);
			var button = context.find('button');
			button.prop('disabled', true);
			var enable = function (result) {
				context.data('submitting', false);
				button.prop('disabled', false);
				if (typeof result !== 'undefined')
					return result;
			};
			var email = context.find('#wf-onboarding-email-input').val();
			var licenseKey = context.find('#wf-onboarding-license-input').val();
			var subscriptionWarning = context.find('.wf-onboarding-subscription-option-required').hide();
			var subscribe = false;
			if (context.find('.wf-onboarding-subscription-options:visible').length) {
				var subscriptionOption = context.find(subscriptionOptionSelector).filter('.wf-active');
				if (!subscriptionOption.length) {
					subscriptionWarning.show();
					return enable(false);
				}
				subscribe = !!parseInt(subscriptionOption.data('value'));
			}
			var attempt = context.data('attempt');
			var optionKey = 'onboardingAttempt' + attempt;
			var optionValueEmail = context.data('option-value-email');
			var optionValueLicense = context.data('option-value-license');
			wordfenceExt.onboardingInstallLicense(
				licenseKey,
				function(licenseResponse) {
					wordfenceExt.setOption(
						optionKey,
						optionValueLicense,
						function(optionResponse) {
							wordfenceExt.onboardingProcessEmails(
								[
									email
								],
								subscribe,
								null,
								function(success, error) {
									if (!success) {
										showRegistrationModal('error', error);
										enable();
										return;
									}
									if (licenseResponse.isPaid) {
										var modalType;
										if (licenseResponse.type === 'care' || licenseResponse.type === 'response') {
											modalType = licenseResponse.type;
										}
										else {
											modalType = 'premium';
										}
										showRegistrationModal('success-' + modalType);
									}
									else {
										showRegistrationModal('success-free');
									}
									enable();
								}
							);
						},
						function() {
							showRegistrationModal('error');
							enable();
						}
					);
				},
				function(error) {
					showRegistrationModal('error', (typeof error === 'string') ? error : null);
					enable();
				}
			);
		});

		$(document).on('click', '#wf-onboarding-delay', function() {
			wordfenceExt.setOption(
				'onboardingDelayedAt',
				$('#wf-onboarding-delay').data('timestamp'),
				function() {
					$('#wf-onboarding-banner').hide();
					showRegistrationModal('delayed');
				},
				function() {
					showRegistrationModal('delayed-error');
				}
			);
		});

	});
})(jQuery);
readme.txt000064400000325060150755146450006564 0ustar00=== Wordfence Security - Firewall, Malware Scan, and Login Security ===
Contributors: mmaunder, wfryan, wfmatt, wfmattr
Tags: security, waf, malware, 2fa, two factor, login security, firewall, brute force, scanner, scan, web application firewall, protection, stop hackers, prevent hacks, secure wordpress, wordpress security
Requires at least: 3.9
Requires PHP: 5.5
Tested up to: 6.6
Stable tag: 7.11.7
License: GPLv3
License URI: https://www.gnu.org/licenses/gpl-3.0.html

Firewall, Malware Scanner, Two Factor Auth and Comprehensive Security Features, powered by our 24 hour team. Make security a priority with Wordfence.

== Description ==

### THE MOST POPULAR WORDPRESS FIREWALL & SECURITY SCANNER

WordPress security requires a team of dedicated analysts researching the latest malware variants and WordPress exploits, turning them into firewall rules and malware signatures, and releasing those to customers in real-time. Wordfence is widely acknowledged as the number one WordPress security research team in the World. Our plugin provides a comprehensive suite of security features, and our team's research is what powers our plugin and provides the level of security that we are known for.

At Wordfence, WordPress security isn't a division of our business - WordPress security is all we do. We employ a global 24 hour dedicated incident response team that provides our priority customers with a 1 hour response time for any security incident. The sun never sets on our global security team and we run a sophisticated threat intelligence platform to aggregate, analyze and produce ground breaking security research on the newest security threats.

Wordfence Security includes an endpoint firewall, malware scanner, robust login security features, live traffic views, and more. Our Threat Defense Feed arms Wordfence with the newest firewall rules, malware signatures and malicious IP addresses it needs to keep your website safe. Rounded out by 2FA and a suite of additional features, Wordfence is the most comprehensive WordPress security solution available.

#### WORDPRESS FIREWALL
* Web Application Firewall identifies and blocks malicious traffic. Built and maintained by a large team focused 100% on WordPress security.
* [Premium] Real-time firewall rule and malware signature updates via the Threat Defense Feed (free version is delayed by 30 days).
* [Premium] Real-time IP Blocklist blocks all requests from the most malicious IPs, protecting your site while reducing load.
* Protects your site at the endpoint, enabling deep integration with WordPress. Unlike cloud alternatives does not break encryption, cannot be bypassed and cannot leak data.
* Integrated malware scanner blocks requests that include malicious code or content.
* Protection from brute force attacks by limiting login attempts.

#### WORDPRESS SECURITY SCANNER
* Malware scanner checks core files, themes and plugins for malware, bad URLs, backdoors, SEO spam, malicious redirects and code injections.
* [Premium] Real-time malware signature updates via the Threat Defense Feed (free version is delayed by 30 days).
* Compares your core files, themes and plugins with what is in the WordPress.org repository, checking their integrity and reporting any changes to you.
* Repair files that have changed by overwriting them with a pristine, original version. Delete any files that don’t belong easily within the Wordfence interface.
* Checks your site for known security vulnerabilities and alerts you to any issues. Also alerts you to potential security issues when a plugin has been closed or abandoned.
* Checks your content safety by scanning file contents, posts and comments for dangerous URLs and suspicious content.
* [Premium] Checks to see if your site or IP have been blocklisted for malicious activity, generating spam or other security issue.

#### LOGIN SECURITY
* Two-factor authentication (2FA), one of the most secure forms of remote system authentication available via any TOTP-based authenticator app or service.
* Login Page CAPTCHA stops bots from logging in.
* Disable or add 2FA to XML-RPC.
* Block logins for administrators using known compromised passwords.

#### WORDFENCE CENTRAL
* Wordfence Central is a powerful and efficient way to manage the security for multiple sites in one place.
* Efficiently assess the security status of all your websites in one view. View detailed security findings without leaving Wordfence Central.
* Powerful templates make configuring Wordfence a breeze.
* Highly configurable alerts can be delivered via email, SMS or Slack. Improve the signal to noise ratio by leveraging severity level options and a daily digest option.
* Track and alert on important security events including administrator logins, breached password usage and surges in attack activity.
* Free to use for unlimited sites.

#### SECURITY TOOLS
* With Live Traffic, monitor visits and hack attempts not shown in other analytics packages in real time; including origin, their IP address, the time of day and time spent on your site.
* Block attackers by IP or build advanced rules based on IP Range, Hostname, User Agent and Referrer. 
* Country blocking available with Wordfence Premium.

== Installation ==

Secure your website using the following steps to install Wordfence:

1. Install Wordfence automatically or by uploading the ZIP file. 
2. Activate the Wordfence through the 'Plugins' menu in WordPress. Wordfence is now activated.
3. Go to the scan menu and start your first scan. Scheduled scanning will also be enabled.
4. Once your first scan has completed, a list of threats will appear. Go through them one by one to secure your site.
5. Visit the Wordfence options page to enter your email address so that you can receive email security alerts.
6. Optionally, change your security level or adjust the advanced options to set individual scanning and protection options for your site.
7. Click the "Live Traffic" menu option to watch your site activity in real-time. Situational awareness is an important part of website security.

To install Wordfence on WordPress Multi-Site installations:

1. Install Wordfence via the plugin directory or by uploading the ZIP file.
2. Network Activate Wordfence. This step is important because until you network activate it, your sites will see the plugin option on their plugins menu. Once activated that option disappears. 
3. Now that Wordfence is network activated it will appear on your Network Admin menu. Wordfence will not appear on any individual site's menu. 
4. Go to the "Scan" menu and start your first scan. 
5. Wordfence will do a scan of all files in your WordPress installation including those in the blogs.dir directory of your individual sites. 
6. Live Traffic will appear for ALL sites in your network. If you have a heavily trafficked system you may want to disable live traffic which will stop logging to the DB. 
7. Firewall rules and login rules apply to the WHOLE system. So if you fail a login on site1.example.com and site2.example.com it counts as 2 failures. Crawler traffic is counted between blogs, so if you hit three sites in the network, all the hits are totalled and that counts as the rate you're accessing the system.

== Frequently Asked Questions ==

[Visit our website to access our official documentation which includes security feature descriptions, common solutions and comprehensive help.](https://wordfence.com/help/)

= How does Wordfence Security protect sites from attackers? =

The WordPress security plugin provides the best protection available for your website. Powered by the constantly updated Threat Defense Feed, Wordfence Firewall stops you from getting hacked. Wordfence Scan leverages the same proprietary feed, alerting you quickly about security issues or if your site is compromised. The Live Traffic view gives you real-time visibility into traffic and hack attempts on your website. A deep set of additional tools round out the most comprehensive WordPress security solution available.

= What features does Wordfence Premium enable? =

We offer a Premium API key that gives you real-time updates to the Threat Defense Feed which includes a real-time IP blocklist, firewall rules, and malware signatures. Premium support, country blocking, more frequent scans, and spam and spamvertising checks are also included. [Click here to sign-up for Wordfence Premium now](https://www.wordfence.com/) or simply install Wordfence free and start protecting your website.

= How does the Wordfence WordPress Firewall protect websites? =

* Web Application Firewall stops you from getting hacked by identifying malicious traffic, blocking attackers before they can access your website.
* Threat Defense Feed automatically updates firewall rules that protect you from the latest threats. Premium members receive the real-time version.
* Block common WordPress security threats like fake Googlebots, malicious scans from hackers and botnets.

= What checks does the Wordfence Security Scanner perform? =

* Scans core files, themes and plugins against WordPress.org repository versions to check their integrity. Verify security of your source.
* See how files have changed. Optionally repair changed files that are security threats.
* Scans for signatures of over 44,000 known malware variants that are known WordPress security threats.
* Scans for many known backdoors that create security holes including C99, R57, RootShell, Crystal Shell, Matamu, Cybershell, W4cking, Sniper, Predator, Jackal, Phantasma, GFS, Dive, Dx and many more.
* Continuously scans for malware and phishing URL’s including all URLs on the Google Safe Browsing List in all your comments, posts and files that are security threats.
* Scans for heuristics of backdoors, trojans, suspicious code and other security issues.

= What security monitoring features does Wordfence include? =

* See all your traffic in real-time, including robots, humans, 404 errors, logins and logouts and who is consuming most of your content. Enhances your situational awareness of which security threats your site is facing.
* A real-time view of all traffic including automated bots that often constitute security threats that Javascript analytics packages never show you.
* Real-time traffic includes reverse DNS and city-level geolocation. Know which geographic area security threats originate from.
* Monitors disk space which is related to security because many DDoS attacks attempt to consume all disk space to create denial of service.

= What login security features are included =

* See all your traffic in real-time, including robots, humans, 404 errors, logins and logouts and who is consuming most of your content. Enhances your situational awareness of which security threats your site is facing.
* A real-time view of all traffic including automated bots that often constitute security threats that Javascript analytics packages never show you.
* Real-time traffic includes reverse DNS and city-level geolocation. Know which geographic area security threats originate from.
* Monitors disk space which is related to security because many DDoS attacks attempt to consume all disk space to create denial of service.

= How will I be alerted if my site has a security problem? =

Wordfence sends security alerts via email. Once you install Wordfence, you will configure a list of email addresses where security alerts will be sent. When you receive a security alert, make sure you deal with it promptly to ensure your site stays secure.

= Do I need a security plugin like Wordfence if I’m using a cloud based firewall (WAF)? =

Wordfence provides true endpoint security for your WordPress website. Unlike cloud based firewalls, Wordfence executes within the WordPress environment, giving it knowledge like whether the user is signed in, their identity and what access level they have. Wordfence uses the user’s access level in more than 80% of the firewall rules it uses to protect WordPress websites. Learn more about the [Cloud WAF identity problem here](https://www.wordfence.com/blog/2016/10/endpoint-vs-cloud-security-cloud-waf-user-identity-problem/). Additionally, cloud based firewalls can be bypassed, leaving your site exposed to attackers. Because Wordfence is an integral part of the endpoint (your WordPress website), it can’t be bypassed. Learn more about the [Cloud WAF bypass problem here](https://www.wordfence.com/blog/2016/10/endpoint-vs-cloud-security-cloud-waf-bypass-problem/). To fully protect the investment you’ve made in your website you need to employ a defense in depth approach to security. Wordfence takes this approach.

= What blocking features does Wordfence include? =

* Real-time blocking of known attackers. If another site using Wordfence is attacked and blocks the attacker, your site is automatically protected.
* Block entire malicious networks. Includes advanced IP and Domain WHOIS to report malicious IP’s or networks and block entire networks using the firewall. Report WordPress security threats to network owner.
* Rate limit or block WordPress security threats like aggressive crawlers, scrapers and bots doing security scans for vulnerabilities in your site.
* Choose whether you want to block or throttle users and robots who break your WordPress security rules.
* Premium users can also block countries and schedule scans for specific times and a higher frequency.

= What differentiates Wordfence from other WordPress Security plugins? =

* Wordfence Security provides a WordPress Firewall developed specifically for WordPress and blocks attackers looking for vulnerabilities on your site.  The Firewall is powered by our Threat Defense Feed which is continually updated as new threats emerge.  Premium customers receive updates in real-time.
* Wordfence verifies your website source code integrity against the official WordPress repository and shows you the changes. 
* Wordfence scans check all your files, comments and posts for URLs in Google's Safe Browsing list. We are the only plugin to offer this very important security enhancement.
* Wordfence scans do not consume large amounts of your bandwidth because all security scans happen on your web server which makes them very fast.
* Wordfence fully supports WordPress Multi-Site which means you can security scan every blog in your Multi-Site installation with one click.
* Wordfence includes Two-Factor authentication, the most secure way to stop brute force attackers in their tracks.
* Wordfence fully supports IPv6 including giving you the ability to look up the location of IPv6 addresses, block IPv6 ranges, detect IPv6 country and do a whois lookup on IPv6 addresses and more.

= Will Wordfence slow down my website? =

No. Wordfence Security is extremely fast and uses techniques like caching its own configuration data to avoid database lookups and blocking malicious attacks that would slow down your site.

= What if my site has already been hacked? =

Wordfence Security is able to repair core files, themes and plugins on sites where security is already compromised. You can follow this guide on [how to clean a hacked website using Wordfence](https://www.wordfence.com/docs/how-to-clean-a-hacked-wordpress-site-using-wordfence/). If you are cleaning your own site after a hack, note that site security cannot be assured unless you do a full reinstall if your site has been hacked. We recommend you only use Wordfence Security to get your site into a running state in order to recover the data you need to do a full reinstall. If you need help with a security issue, check out [Wordfence Care](https://www.wordfence.com/products/wordfence-care/), which offers hands-on support from our team, including dealing with a hacked site. For mission-critical sites, check out [Wordfence Response](https://www.wordfence.com/products/wordfence-response/).

= Does Wordfence Security support IPv6? =

Yes. We fully support IPv6 with all security functions including country blocking, range blocking, city lookup, whois lookup and all other security functions. If you are not running IPv6, Wordfence will work great on your site too. We are fully compatible with both IPv4 and IPv6 whether you run both or only one addressing scheme.

= Does Wordfence Security support Multi-Site installations? =

Yes. WordPress Multi-Site is fully supported. Using Wordfence you can scan every blog in your network for malware with one click. If one of your customers posts a page or post with a known malware URL that threatens your whole domain with being blocklisted by Google, we will alert you in the next scan.

= What support options are available for Wordfence users? =

Providing excellent customer service is very important to us. Our free users receive volunteer-level support in our [support forums](https://wordpress.org/support/plugin/wordfence). [Wordfence Premium](https://www.wordfence.com/products/wordfence-premium/) customers get paid ticket-based support. [Wordfence Care](https://www.wordfence.com/products/wordfence-care/) customers receive hands-on support including help with security incidents and a yearly security audit. [Wordfence Response](https://www.wordfence.com/products/wordfence-response/) customers get 24/7/365 support from our incident response team, with a 1 hour response time, and a maximum of 24 hours to resolve a security issue.

= Where can I learn more about WordPress security? =

Designed for every skill level, [The WordPress Security Learning Center](https://www.wordfence.com/learn/) is dedicated to deepening users’ understanding of security best practices by providing free access to entry-level articles, in-depth articles, videos, industry survey results, graphics and more.

= Where can I find the Wordfence Terms of Service and Privacy Policy? =

These are available on our website: [Terms of Service](https://www.wordfence.com/terms-of-service/) and [Privacy Policy](https://www.wordfence.com/privacy-policy/)

== Screenshots ==

Secure your website with Wordfence. 

1. The dashboard gives you an overview of your site's security including notifications, attack statistics and Wordfence feature status.
2. The firewall protects your site from common types of attacks and known security vulnerabilities.
3. The Wordfence Security Scanner lets you know if your site has been compromised and alerts you to other security issues that need to be addressed.  
4. Wordfence is highly configurable, with a deep set of options available for each feature. High level scan options are shown above.
5. Brute Force Protection features protect you from password guessing attacks.
6. Block attackers by IP, Country, IP range, Hostname, Browser or Referrer.
7. The Wordfence Live Traffic view shows you real-time activity on your site including bot traffic and exploit attempts.
8. Take login security to the next level with Two-Factor Authentication.
9. Logging in is easy with Wordfence 2FA.

== Changelog ==

= 7.11.7 - July 29, 2024 =
* Improvement: Optimized scan performance by reducing database queries by approximately 38% along with CPU usage
* Fix: Added translation support for "Page not found" string when viewing recent traffic

= 7.11.6 - June 6, 2024 =
* Improvement: Revised the strong password requirements notice to be more readable
* Improvement: Removed unnecessary calls for the plugin and theme vulnerability checks
* Improvement: Reduced the frequency of calls to Wordfence Central during some operations where the values do not need to be synced
* Improvement: Refactored some queries to avoid the automatic SHOW FULL COLUMNS queries that WordPress performs to verify database encodings
* Improvement: Infrequently-used config values are no longer automatically loaded into memory and instead loaded only on demand
* Fix: Fixed an issue where multisite installations using the WAF mysqli storage engine could repeatedly attempt to update WAF rules when not in optimized mode
* Improvement: Updated the bundled GeoIP database
* Change: Revised the formatting of TOTP app URLs to prioritize the site's own URL for better sorting and display
* Fix: Fixed the last captcha column in the users page so it no longer displays "(not required)" on 2FA users since that no longer applies
* Fix: Added a check in wflogs/rules.php to only run when within the WAF's bootstrap stage when hosted behind nginx

= 7.11.5 - April 3, 2024 =
* Fix: Revised the behavior of the reCAPTCHA verification to use the documented expiration period of the token and response to avoid sending verification requests too frequently, which could artificially lower scores in some circumstances
* Fix: Addressed PHP 8 deprecation notices in the file differ used by file changed scan results
* Fix: Reduced the frequency of Wordfence Central status update callbacks in sections of the scan that occur quickly in sequence

= 7.11.4 - March 11, 2024 =
* Change: CAPTCHA verification when enabled now additionally applies to 2FA logins (may send an email verification on low scores) and no longer reveals whether a user exists for the submitted account credentials (credit: Raxis)
* Fix: Addressed a potential PHP 8 notice in the human/bot detection AJAX call
* Fix: Addressed a potential PHP 8 notice when requesting a lockout unlock verification email
* Fix: Fixed the emailed diagnostics view not showing the missing table information when applicable
* Fix: Improved quick scan logic to base timing on regular scans so they're more evenly distributed

= 7.11.3 - February 15, 2024 =
* Fix: Fixed an issue with sites containing invalid Wordfence Central site data where they could throw an error when viewing Wordfence pages

= 7.11.2 - February 14, 2024 =
* Improvement: Enhanced the vulnerability scan to check and alert for WordPress core vulnerabilities and to adjust the severity of the scan result based on findings or available updates
* Improvement: Updated the bundled GeoIP database
* Improvement: Increased compatibility of brute force protection with plugins that override the normal login flow and omit traditional hooks
* Change: Adjusted the behavior of automatic quick scans to schedule themselves further away from full scans
* Fix: Added detection for a site being linked to a non-matching Wordfence Central record (e.g., when cloning the database to a staging site)
* Fix: Streamlined the license and terms of use installation flow to avoid unnecessary prompting
* Fix: Fixed an issue where user profiles with a selected locale different from the site itself could end up loading the site's locale instead

= 7.11.1 - January 2, 2024 =
* Improvement: Added ".env" to the files checked for "Scan for publicly accessible configuration, backup, or log files"
* Improvement: Provided better descriptive text for the option "Block IPs who send POST requests with blank User-Agent and Referer"
* Improvement: The diagnostics page now displays the contents of any `auto_prepend_file` .htaccess/.user.ini block for troubleshooting
* Fix: Fixed an issue where a login lockout on a WooCommerce login form could fail silently
* Fix: The scan result for abandoned plugins no longer states it has been removed from wordpress.org if it is still listed
* Fix: Addressed an exception parsing date information in non-repo plugins that have a bad `last_updated` value
* Fix: The URL scanner no longer generates a log warning when matching a potential URL fragment that ends up not being a valid URL

= 7.11.0 - November 28, 2023 =
* Improvement: Added new functionality for trusted proxy presets to support proxies such as Amazon CloudFront, Ezoic, and Quic.cloud
* Improvement: WAF rule and malware signature updates are now signed with SHA-256 as well for hosts that no longer build SHA1 support
* Improvement: Updated the bundled trusted CA certificates
* Change: The WAF will no longer attempt to fetch rule or blocklist updates when run via WP-CLI
* Fix: Removed uses of SQL_CALC_FOUND_ROWS, which is deprecated as of MySQL 8.0.17
* Fix: Fixed an issue where final scan summary counts in some instances were not sent to Central
* Fix: Fixed a deprecation notice for get_class in PHP 8.3.0
* Fix: Corrected an output error in the connectivity section of Diagnostics in text mode

= 7.10.7 - November 6, 2023 =
* Fix: Compatibility fix for WordPress 6.4 on the login page styling

= 7.10.6 - October 30, 2023 =
* Fix: Addressed an issue with multisite installations when the wp_options tables had different encodings/collations

= 7.10.5 - October 23, 2023 =
* Improvement: Updated the bundled GeoIP database
* Improvement: Added detection for Cloudflare reverse proxies blocking callbacks to the site
* Change: Files are no longer excluded from future scans if a previous scan stopped during their processing
* Fix: Added handling for the pending WordPress 6.4 change that removes $wpdb->use_mysqli
* Fix: The WAF MySQLi storage engine will now work correctly when either DB_COLLATE or DB_CHARSET are not defined
* Fix: Added additional error handling to Central calls to better handle request failures or conflicts
* Fix: Addressed a warning that would occur if a non-repo plugin update hook did not provide a last updated date
* Fix: Fixed an error in PHP 8 that could occur if the time correction offset was not numeric
* Fix: 2FA AJAX calls now use an absolute path rather than a full URL to avoid CORS issues on sites that do not canonicalize www and non-www requests
* Fix: Addressed a race condition where multiple concurrent hits on multisite could trigger overlapping role sync tasks
* Fix: Improved performance when viewing the user list on large multisites
* Fix: Fixed a UI bug where an invalid code on 2FA activation would leave the activate button disabled
* Fix: Reverted a change on error modals to bring back the additional close button for better accessibility

= 7.10.4 - September 25, 2023 =
* Improvement: "Admin created outside of WordPress" scan results may now be reviewed and approved
* Improvement: The WAF storage engine may now be specified by setting the environmental variable "WFWAF_STORAGE_ENGINE"
* Improvement: Detect when a plugin or theme with a custom update handler is broken and blocking update version checks
* Change: Deprecated support for WordPress versions lower than 4.7.0
* Change: Exclude parse errors of a damaged compiled rules file from reporting
* Fix: Suppress PHP notices related to rule loading when running WP-CLI
* Fix: Fixed an issue with the scan monitor cron that could leave it running unnecessarily

= 7.10.3 - July 31, 2023 =
* Improvement: Updated GeoIP database
* Fix: Added missing text domain to translation function call
* Fix: Corrected inconsistent styling of switch controls
* Change: Made MySQLi storage engine the default for Flywheel hosted sites

= 7.10.2 - July 17, 2023 =
* Fix: Prevented bundled sodium_compat library from conflicting with versions included with older WordPress versions

= 7.10.1 - July 12, 2023 =
* Improvement: Added support for processing arrays of files in the WAF
* Improvement: Refactored security event processing to send events in bulk
* Improvement: Updated bundled sodium_compat and random_compat libraries
* Fix: Prevented deprecation warning caused by dynamic property creation
* Fix: Added translation support for additional strings
* Change: Adjusted Wordfence registration UI

= 7.10.0 - June 21, 2023 =
* Improvement: Added translation support for strings from login security plugin
* Improvement: Added translator notes regarding word order and hidden text
* Improvement: Added translation support for additional strings
* Improvement: Prevented scans from failing if unreadable directories are encountered
* Improvement: Added help link to IPv4 scan option
* Improvement: Updated scan result text to clarify meaning of plugins removed from wordpress.org
* Improvement: Made "Increased Attack Rate" emails actionable
* Improvement: Updated GeoIP database
* Improvement: Updated JavaScript libraries
* Fix: Corrected IPv6 address expansion
* Fix: Ensured long request payloads for malicious requests are recorded in live traffic
* Fix: Prevented "commands out of sync" database error messages when the database connection has failed
* Fix: Prevented rare JSON encoding issues from breaking free license registration
* Fix: Prevented PHP notice from being logged when request parameter is missing
* Fix: Prevented deprecation warning in PHP 8.1
* Change: Moved detection for old TimThumb files to malware signature
* Change: Moved translation file from .po to .pot
* Change: Renamed "Macedonia" to "North Macedonia, Republic of"

= 7.9.3 - May 31, 2023 =
* Improvement: Added exception handling to prevent WAF errors from being fatal
* Fix: Corrected error caused by method call on null in WAF
* Change: Deprecated support for PHP 5.5 and 5.6, ended support for PHP 5.3 and 5.4
* Change: Specified WAF version parameter when requesting firewall rules

= 7.9.2 - March 27, 2023 =
* Improvement: The vulnerability severity score (CVSS) is now shown with any vulnerability findings from the scanner
* Improvement: Changed several links during initial setup to open in a new window/tab so it doesn't interrupt installation
* Change: Removed the non-https callback test to the Wordfence servers
* Fix: Fixed an error on PHP 8 that could occur when checking for plugin updates and another plugin has a broken hook
* Fix: Added a check for disabled functions when generating support diagnostics to avoid an error on PHP 8
* Fix: Prevent double-clicking when activating 2FA to avoid an "already set up" error

= 7.9.1 - March 1, 2023 =
* Improvement: Further improved performance when viewing 2FA settings and hid user counts by default on sites with many users
* Fix: Adjusted style inclusion and usage to prevent missing icons
* Fix: Avoided using the ctype extension as it may not be enabled
* Fix: Prevented fatal errors caused by malformed Central keys

= 7.9.0 - February 14, 2023 =
* Improvement: Added 2FA management shortcode and WooCommerce account integration
* Improvement: Improved performance when viewing 2FA settings on sites with many users
* Improvement: Updated GeoIP database
* Fix: Ensured Captcha and 2FA scripts load on WooCommerce when activated on a sub-site in multisite
* Fix: Prevented reCAPTCHA logo from being obscured by some themes
* Fix: Enabled wfls_registration_blocked_message filter support for WooCommerce integration

= 7.8.2 - December 13, 2022 =
* Fix: Releasing same changes as 7.8.1, due to wordpress.org error

= 7.8.1 - December 13, 2022 =
* Improvement: Added more granualar data deletion options to deactivation prompt
* Improvement: Allowed accessing diagnostics prior to completing registration
* Fix: Prevented installation prompt from displaying when a license key is already installed but the alert email address has been removed

= 7.8.0 - November 28, 2022 =
* Improvement: Added feedback when login form is submitted with 2FA
* Fix: Restored click support on login button when using 2FA with WooCommerce
* Fix: Corrected display issue with reCAPTCHA score history graph
* Fix: Prevented errors on PHP caused by corrupted login timestamps
* Fix: Prevented deprecation notices on PHP 8.2 related to dynamic properties
* Change: Updated Wordfence registration workflow

= 7.7.1 - October 4, 2022 =
* Fix: Prevented scan resume attempts from repeating indefinitely when the initial scan stage fails

= 7.7.0 - October 3, 2022 =
* Improvement: Added configurable scan resume functionality to prevent scan failures on sites with intermittent connectivity issues
* Improvement: Added new scan result for vulnerabilities found in plugins that do not have patched versions available via WordPress.org
* Improvement: Implemented stand-alone MMDB reader for IP address lookups to prevent plugin conflicts and support additional PHP versions
* Improvement: Added option to disable looking up IP address locations via the Wordfence API
* Improvement: Prevented successful logins from resetting brute force counters
* Improvement: Clarified IPv6 diagnostic
* Improvement: Included maximum number of days in live traffic option text
* Fix: Made timezones consistent on firewall page
* Fix: Added "Use only IPv4 to start scans" option to search
* Fix: Prevented deprecation notices on PHP 8.1 when emailing the activity log
* Fix: Prevented warning on PHP 8 related to process owner diagnostic
* Fix: Prevented PHP Code Sniffer false positive related to T_BAD_CHARACTER
* Fix: Removed unsupported beta feed option

= 7.6.2 - September 19, 2022 =
* Improvement: Hardened 2FA login flow to reduce exposure in cases where an attacker is able to obtain privileged information from the database

= 7.6.1 - September 6, 2022 =
* Fix: Prevented XSS that would have required admin privileges to exploit (CVE-2022-3144)

= 7.6.0 - July 28, 2022 =
* Improvement: Added option to start scans using only IPv4
* Improvement: Added diagnostic for internal IPv6 connectivity to site
* Improvement: Added AUTOMATIC_UPDATER_DISABLED diagnostic
* Improvement: Updated password strength check
* Improvement: Added support for scanning plugin/theme files in when using the WP_CONTENT_DIR/WP_PLUGIN_DIR constants
* Improvement: Updated GeoIP database
* Improvement: Made DISABLE_WP_CRON diagnostic more clear
* Improvement: Added "Hostname" to Live Traffic message displayed for hostname blocking
* Improvement: Improved compatibility with Flywheel hosting
* Improvement: Adopted semantic versioning
* Improvement: Added support for dynamic cookie redaction patterns when logging requests
* Fix: Prevented scanned paths from being displayed as skipped in rare cases
* Fix: Corrected indexed files count in scan messages
* Fix: Prevented overlapping AJAX requests when viewing Live Traffic on slower servers
* Fix: Corrected WP_DEBUG_DISPLAY diagnostic
* Fix: Prevented extraneous warnings caused by DNS resolution failures
* Fix: Corrected display issue with Save/Cancel buttons on All Options page
* Fix: Prevented errors caused by WHOIS searches for invalid values

= 7.5.11 - June 14, 2022 =
* Improvement: Added option to toggle display of last login column on WP Users page
* Improvement: Improved autocomplete support for 2FA code on Apple devices
* Improvement: Prevented Batcache from caching block pages
* Improvement: Updated GeoIP database
* Fix: Prevented extraneous scan results when non-existent paths are configured using UPLOADS and related constants
* Fix: Corrected issue that prevented reCAPTCHA scores from being recorded
* Fix: Prevented invalid JSON setting values from triggering fatal errors
* Fix: Made text domains consistent for translation support
* Fix: Clarified that allowlisted IP addresses also bypass reCAPTCHA

= 7.5.10 - May 17, 2022 =
* Improvement: Improved scan support for sites with non-standard directory structures
* Improvement: Increased accuracy of executable PHP upload detection
* Improvement: Addressed various deprecation notices with PHP 8.1
* Improvement: Improved handling of invalidated license keys
* Fix: Corrected lost password redirect URL when used with WooCommerce
* Fix: Prevented errors when live traffic data exceeds database column length
* Fix: Prevented bulk password resets from locking out admins
* Fix: Corrected issue that prevented saving country blocking settings in certain cases
* Change: Updated copyright information

= 7.5.9 - March 22, 2022 =
* Improvement: Updated GeoIP database
* Improvement: Removed blocking data update logic in order to reduce timeouts
* Improvement: Increased timeout value for API calls in order to reduce timeouts
* Improvement: Clarified notification count on Wordfence menu
* Improvement: Improved scan compatibility with WooCommerce
* Improvement: Added messaging when application passwords are disabled
* Fix: Prevented warnings and errors when constants are defined based on the value of other constants in wp-config.php
* Fix: Corrected redundant escaping that prevented viewing or repairing files in scan results

= 7.5.8 - February 1, 2022 =
* Launch of Wordfence Care and Wordfence Response

= 7.5.7 - November 22, 2021 =
* Improvement: Made preliminary changes for compatibility with PHP 8.1
* Change: Added GPLv3 license and updated EULA

= 7.5.6 - October 18, 2021 =
* Fix: Prevented login errors with WooCommerce integration when manual username entry is enabled on the WooCommerce registration form
* Fix: Corrected theme incompatibilities with WooCommerce integration

= 7.5.5 - August 16, 2021 =
* Improvement: Enhanced accessibility
* Improvement: Replaced regex in scan log with signature ID
* Improvement: Updated Knockout JS dependency to version 3.5.1
* Improvement: Removed PHP 8 compatibility notice
* Improvement: Added NTP status for Login Security to Diagnostics
* Improvement: Updated plugin headers for compatibility with WordPress 5.8
* Improvement: Updated Nginx documentation links to HTTPS
* Improvement: Updated IP address geolocation database
* Improvement: Expanded WAF SQL syntax support
* Improvement: Added optional constants to configure WAF database connection
* Improvement: Added support for matching punycode domain names
* Improvement: Updated Wordfence install count
* Improvement: Deprecated support for WordPress versions older than 4.4.0
* Improvement: Added warning messages when blocking U.S.
* Improvement: Added MYSQLI_CLIENT_SSL support to WAF database connection
* Improvement: Added 2FA and reCAPTCHA support for WooCommerce login and registration forms
* Improvement: Added option to require 2FA for any role
* Improvement: Added logic to automatically disable NTP after repeated failures and option to manually disable NTP
* Improvement: Updated reCAPTCHA setup note
* Fix: Prevented issue where country blocking changes are not saved
* Fix: Corrected string placeholder
* Fix: Added missing text domain to translation calls
* Fix: Corrected warning about sprintf arguments on Central setup page
* Fix: Prevented lost password functionality from revealing valid logins

= 7.5.4 - June 7, 2021 =

* Fix: Resolve conflict with woocommerce-gateway-amazon-payments-advanced plugin

= 7.5.3 - May 10, 2021 =

* Improvement: Expanded WAF capabilities including better JSON and user permission handling
* Improvement: Switched to relative paths in WAF auto_prepend file to increase portability
* Improvement: Eliminated unnecessary calls to Wordfence servers
* Fix: Prevented errors on PHP 8.0 when disk_free_space and/or disk_total_space are included in disabled_functions
* Fix: Fixed PHP notices caused by unexpected plugin version data
* Fix: Gracefully handle unexpected responses from Wordfence servers
* Fix: Time field now displays correctly on "See Recent Traffic" overlay
* Fix: Corrected typo on Diagnostics page
* Fix: Corrected IP counts on activity report
* Fix: Added missing line break in scan result emails
* Fix: Sending test activity report now provides success/failure response
* Fix: Reduced SQLi false positives caused by comma-separated strings
* Fix: Fixed JS error when resolving last scan result

= 7.5.2 - March 24, 2021 =

* Fix: Fixed fatal error on single-sites running WordPress <4.9.

= 7.5.1 - March 24, 2021 =

* Fix: Fixed fatal error when viewing the Login Security settings page from an allowlisted IP.

= 7.5.0 - March 24, 2021 =

* Improvement: Translation-readiness: All user-facing strings are now run through WordPress's i18n functions.
* Improvement: Remove legacy admin functions no longer used within the UI.
* Improvement: Local GeoIP database update.
* Improvement: Remove Lynwood IP range from allowlist, and add new AWS IP range.
* Fix: Fixed bug with unlocking a locked out IP without correctly resetting its failure counters.
* Fix: Sites using deleted premium licenses correctly revert to free license behavior.
* Fix: When enabled, cookies are now set for the correct roles on previously used devices.
* Fix: WAF cron jobs are now skipped when running on the CLI.
* Fix: PHP 8.0 compatibility - prevent syntax error when linting files.
* Fix: Fixed issue where PHP 8 notice sometimes cannot be dismissed.

= 7.4.14 - December 3, 2020 =

* Improvement: Added option to disable application passwords.
* Improvement: Updated site cleaning callout with 1-year guarantee.
* Improvement: Upgraded sodium_compat library to 1.13.0.
* Improvement: Replaced the terms whitelist and blacklist with allowlist and blocklist.
* Improvement: Made a number of WordPress 5.6 and jQuery 3.x compatibility improvements.
* Improvement: Made a number of PHP8 compatilibility improvements.
* Improvement: Added dismissable notice informing users of possible PHP8 compatibility issues.

= 7.4.12 - October 21, 2020 =

* Improvement: Initial integration of i18n in Wordfence.
* Improvement: Prevent Wordfence from loading under <PHP 5.3.
* Improvement: Updated GeoIP database.
* Improvement: Prevented wildcard from running/saving for scan's excluded files pattern.
* Improvement: Included Wordfence Login Security tables in diagnostics missing table list.
* Fix: Removed new scan issues when WordPress update occurs mid-scan.
* Fix: Specified category when saving `whitelistedServiceIPs` to WAF storage engine.
* Fix: Removed localhost IP for auto-update email alerts.
* Fix: Fixed broken message in Live Traffic with MySQLi storage engine for blocklisted hits.
* Fix: Removed optional parameter values for PHP 8 compatibility.

= 7.4.11 - August 27, 2020 =

* Improvement: Added diagnostic debug button to clear Wordfence Central connection data from the database.
* Improvement: Added help documentation links to modified plugin/theme file scan results.
* Fix: Prevent file system scan from following symlinks to root.
* Fix: Cleared pending plugin/theme update scan results and notification when a plugin/theme is auto-updated.
* Fix: Added check for when site is disconnected on Central's end, but not in the plugin.

= 7.4.10 - August 5, 2020 =

* Improvement: Prevent author sitemap from leaking usernames in WordPress >= 5.5.0.
* Fix: Prevent Wordfence auto-update from running if the user has enabled auto-update through WordPress.
* Fix: Added default `permission_callback` params to Wordfence Central REST routes.
* Fix: Fixed missing styling on WAF optimization admin notice.

= 7.4.9 - July 8, 2020 =

* Improvement: Added list of known malicious usernames to suspicious administrator scan.
* Improvement: Added ability for the WAF to determine if a given plugin/theme/core version is installed.
* Improvement: Added a feature to export a diagnostics report.
* Improvement: Add php_errorlog to the list of downloadable logs in diagnostics.
* Improvement: Added a prompt to allow user to download a backup prior to repairing files.
* Improvement: Prevent scan from failing when the home URL has changed and the key is no longer valid.
* Improvement: Deprecated PHP 5.3, and ended PHP 5.2 support by prevent auto-update from running on older versions.
* Fix: Fixed issue where WAF mysqli storage engine cannot find credentials if wflogs/ does not exist.
* Fix: Changed capability checked to read WP REST API users endpoint when "Prevent discovery of usernames through ..." is enabled.
* Fix: Prevented duplicate queries for wordfenceCentralConnected wfconfig value.
* Fix: Prevented custom wp-content or other directories from appearing in "skipped paths" scan result, even when scanned.
* Fix: Login Attempts dashboard widget "Show more" link is not visible when long usernames and IPs cause wrapping.
* Fix: Fix typo in the readme.

= 7.4.8 - June 16, 2020 =
* Fix: Fixed issue with fatal errors encountered during activation under certain conditions.

= 7.4.7 - April 23, 2020 =
* Improvement: Updated bundled GeoIP database.
* Improvement: Better messaging when selecting restrictive rate limits.
* Improvement: Scan result emails now include the count of issues that were found again.
* Improvement: Resolved scan issues will now email again if they reoccur.
* Improvement: Added the state/province name when applicable to geolocation displays in Live Traffic.
* Improvement: New blocking page design to better inform blocked visitors on how to resolve the block.
* Improvement: Custom WP_CONTENT_DIR, WP_PLUGIN_DIR, and UPLOADS path constants will now get scanned correctly.
* Improvement: Added TLS connection failure detection to brute force reporting and checking and a corresponding backoff period.
* Fix: Fixed an issue where a bad cron record could interfere with automatic WAF rule updates.
* Fix: Fixed a PHP warning that could occur if a bad response was received while updating an IP list.
* Fix: The new user tour and onboarding flow will now work correctly on the 2FA page.

= 7.4.6 - February 12, 2020 =
* Improvement: Enhanced the detection ability of the WAF for SQLi attacks.
* Improvement: Updated the bundled GeoIP database.
* Improvement: Modified some country names in the block configuration to align with those shown in Live Traffic.
* Change: Moved the skipped files scan check to the Server State category.
* Fix: Fixed an issue where after scrolling on the Live Traffic page, updates would no longer automatically load.
* Fix: Modified the number of login records kept to align better with Live Traffic so they're trimmed around the same time.

= 7.4.5 - January 15, 2020 =
* Improvement: Improved WAF coverage for an Infinite WP authentication bypass vulnerability.

= 7.4.4 - January 14, 2020 =
* Fix: Fixed a UI issue where the scan summary status marker for malware didn't always match the findings.

= 7.4.3 - January 13, 2020 =
* Improvement: Added WAF coverage for an Infinite WP authentication bypass vulnerability.
* Improvement: The malicious URL scan now includes protocol-relative URLs (e.g., //example.com)
* Improvement: Malware signatures are now better applied to large files read in multiple passes.
* Improvement: Added a scan issue that will appear when one or more paths are skipped due to scan settings excluding them.
* Changed: AJAX endpoints now send the application/json Content-Type header.
* Changed: Updated text on scan issues for plugins removed from wordpress.org to better indicate possible reasons.
* Changed: Added compatibility messaging for reCAPTCHA when WooCommerce is active.
* Fixed: Added missing $wp_query->set_404() call when outputting a 404 page on a custom action.
* Fixed: Fixed the logout username display in Live Traffic broken by a change in WordPress 5.3.
* Fixed: Improved the response callback used for the WAF status check during extended protection installation.
* Fixed: The "Require 2FA for all administrators" notice is now automatically dismissed if an administrator sets up 2FA.

= 7.4.2 - December 3, 2019 =
* Improvement: Increased performance of IP CIDR range comparisons.
* Improvement: Added parameter signature to remote scanning for better validation during forking.
* Change: Removed duplicate browser label in Live Traffic.
* Fix: Added compensation for PHP 7.4 deprecation notice with get_magic_quotes_gpc.
* Fix: Fixed potential notice in dashboard widget when no updates are found.
* Fix: Updated JS hashing library to compensate for a variable name collision that could occur.
* Fix: Fixed an issue where certain symlinks could cause a scan to erroneously skip files.
* Fix: Fixed PHP memory test for newer PHP versions whose optimizations prevented it from allocating memory as desired.

= 7.4.1 - November 6, 2019 =
* Improvement: Updated the bundled GeoIP database.
* Improvement: Minor changes to ensure compatibility with PHP 7.4.
* Improvement: Updated the WHOIS lookup for better reliability.
* Improvement: Added better diagnostic data when the WAF MySQL storage engine is active.
* Improvement: Improved the messaging when switching between premium and free licenses.
* Change: Deprecated DNS changes scan.
* Change: The plugin will no longer email alerts when Central is managing them.
* Fix: Added error suppression to ignore_user_abort calls to silence it on hosts with it disabled.
* Fix: Improved path generation to better avoid outputting extra slashes in URLs.
* Fix: Applied a length limit to malware reporting to avoid failures due to large content size.

= 7.4.0 - August 22, 2019 =
* Improvement: Added a MySQL-based configuration and data storage for the WAF to expand the number of hosting environments supported. For more detail, see: https://www.wordfence.com/help/firewall/mysqli-storage-engine/
* Improvement: Updated bundled GeoIP database.
* Fix: Fixed several console notices when running via the CLI.

= 7.3.6 - July 31, 2019 =
* Improvement: Multiple "php.ini file in core directory" issues are now consolidated into a single issue for clearer scan results.
* Improvement: The AJAX error detection for false positive WAF blocks now better detects and processes the response for presenting the allowlisting prompt.
* Improvement: Added overdue cron detection and highlighting to diagnostics to help identify issues.
* Improvement: Added the necessary directives to exclude backwards compatibility code from creating warnings with phpcs for future compatibility with WP Tide.
* Improvement: Normalized all PHP require/include calls to use full paths for better code quality.
* Change: Removed deprecated high sensitivity scan option since current signatures are more accurate.
* Fix: Fixed the status circle tooltips not showing.
* Fix: IP detection at the WAF level better mirrors the main plugin exactly when using the automatic setting.
* Fix: Fixed a currently-unused code path in email address verification for the strict check.

= 7.3.5 - July 16, 2019 =
* Improvement: Improved tagging of the login endpoint for brute force protection.
* Improvement: Added additional information about reCAPTCHA to its setting control.
* Improvement: Added a constant that may be overridden to customize the expiration time of login verification email links.
* Improvement: reCAPTCHA keys are now tested on saving to prevent accidentally inputting a v2 key.
* Improvement: Added a setting to control the reCAPTCHA human/bot threshold.
* Improvement: Added a separate option to trigger removal of Login Security tables and data on deactivation.
* Improvement: Reworked the reCAPTCHA implementation to trigger the token check on login/registration form submission to avoid the token expiring.
* Fix: Widened the reCAPTCHA key fields to allow the full keys to be visible.
* Fix: Fixed encoding of the ellipsis character when reporting malware finds.
* Fix: Disabling the IP blocklist once again correctly clears the block cache.
* Fix: Addressed an issue when outbound UDP connections are blocked where the NTP check could log an error.
* Fix: Added handling for reCAPTCHA's JavaScript failing to load, which previously blocked logging in.
* Fix: Fixed the functionality of the button to send 2FA grace period notifications.
* Fix: Fixed a missing icon for some help links when running in standalone mode.

= 7.3.4 - June 17, 2019 =
* Improvement: Added security events and alerting features built into Wordfence Central.

= 7.3.3 - June 11, 2019 =
* Improvement: Added support for managing the login security settings to Wordfence Central.
* Improvement: Updated the bundled root CA certificate store.
* Improvement: Added a check and update flow for mod_php hosts with only the PHP5 directive set for the WAF's extended protection mode.
* Improvement: Added additional values to Diagnostics for debugging time-related issues, the new fatal error handler settings, and updated the PHP version check to reflect the new 5.6.20 requirement of WordPress.
* Change: Changed the autoloader for our copy of sodium_compat to always load after WordPress core does.
* Fix: Fixed the "removed from wordpress.org" detection for plugin, which was broken due to an API change.
* Fix: Fixed the bulk repair function in the scan results when it included core files.

= 7.3.2 - May 16, 2019 =
* Improvement: Updated sodium_compat to address an incompatibility that may occur with the pending WordPress 5.2.1 update.
* Improvement: Clarified text around the reCAPTCHA setting to indicate v3 keys must be used.
* Improvement: Added detection for Jetpack and a notice when XML-RPC authentication is disabled.
* Fix: Suppressed error messages on the NTP time check to compensate for hosts with UDP connections disabled.

= 7.3.1 - May 14, 2019 =
* Improvement: Two-factor authentication is new and improved, now available on all Premium and Free installations.
* Improvement: Added Google reCAPTCHA v3 support to the login and registration forms.
* Improvement: XML-RPC authentication may now be disabled or forced to require 2FA.
* Improvement: Reduced size of SVG assets.
* Improvement: Clarified text on "Maximum execution time for each scan stage" option.
* Improvement: Added detection for an additional config file that may be created and publicly visible on some hosts.
* Improvement: Improved detection for malformed malware scanning signatures.
* Change: Long-deprecated database tables will be removed.
* Change: Removed old performance logging code that's no longer used.
* Fix: Addressed a log notice when using the See Recent Traffic feature in Live Traffic.
* Fix: WAF attack data now correctly includes JSON payloads when appropriate.
* Fix: Fixed the text for Live Traffic entries that include a redirection message.
* Fix: Fixed an issue with synchronizing scan issues to Wordfence Central that prevented stale issues from being cleared.

= 7.2.5 - April 18, 2019 =
* Improvement: Added additional data breach records to the breached password check.
* Improvement: Added the Accept-Encoding compression header to WAF-related requests for better performance during rule updates.
* Improvement: Updated to the current GeoIP database.
* Improvement: Added additional controls to the Wordfence Central connection page to better reflect the current connection state.
* Change: Updated the text on the option to alert for scan results of a certain severity.

= 7.2.4 - March 26, 2019 =
* Improvement: Updated vulnerability database integration.
* Improvement: Better messaging when a WAF rule update fails to better indicate the cause.
* Fix: Removed a double slash that could occur in an image path.
* Fix: Adjusted timeouts to improve reliability of WAF rule updates on slower servers.
* Fix: Improved connection process with Wordfence Central for better reliability on servers with non-standard paths.
* Fix: Switched to autoloader with fastMult enabled on sodum_compat to minimize connection issues.

= 7.2.3 - February 28, 2019 =
* Improvement: Country names are now shown instead of two letter codes where appropriate.
* Improvement: Updated the service allowlist to reflect additions to the Facebook IP ranges.
* Improvement: Added alerting for when the WAF is disabled for any reason.
* Improvement: Additional alerting and troubleshooting steps for WAF configuration issues.
* Change: Live Traffic human/bot status will additionally be based on the browscap record in security-only mode.
* Change: Added dismissible prompt to switch Live Traffic to security-only mode.
* Fix: The scan issues alerting option is now set correctly for new installations.
* Fix: Fixed a transparency issue with flags for Switzerland and Nepal.
* Fix: Fixed the malware link image rendering in scan issue emails and switched to always use https.
* Fix: WAF-related scheduled tasks are now more resilient to connection timeouts or memory issues.
* Fix: Fixed Wordfence Central connection flow within the first time experience.

= 7.2.2 - February 14, 2019 =
* Improvement: Updated GeoIP database.
* Fix: Syncing requests from Wordfence Central no longer appear in Live Traffic.
* Fix: Addressed some display issues with the Wordfence Central panel on the Wordfence Dashboard.

= 7.2.1 - February 5, 2019 =
* Improvement: Integrated Wordfence with Wordfence Central, a new service allowing you to manage multiple Wordfence installations from a single interface.
* Improvement: Added a help link to the mode display when a host disabling Live Traffic is active.
* Improvement: Added an option for allowlisting ManageWP in "Allowlisted Services".
* Fix: Enqueued fonts used in admin notices on all admin pages.
* Fix: Change false positive user-reports link to use https.
* Fix: Fix reference to non-existent function when registering menus.

= 7.1.20 - January 8, 2019 =
* Fix: Fixed a commit error with 7.1.19

= 7.1.19 - January 8, 2019 =
* Improvement: Speed optimizations for WAF rule compilation.
* Improvement: Added Kosovo to country blocking.
* Improvement: Additional flexibility for allowlist rules.
* Fix: Added compensation for really long file lists in the "Exclude files from scan" setting.
* Fix: Fixed an issue where the GeoIP database update check would never get marked as completed.
* Fix: Login credentials passed as arrays no longer trigger a PHP notice from our filters.
* Fix: Text fixes to the WAF nginx help text.

= 7.1.18 - December 4, 2018 =
* Improvement: Removed unused font glyph ranges to reduce file count and size.
* Improvement: Switched flags to use a CSS sprite to reduce file count and size.
* Improvement: Added dates to each release in the changelog.
* Change: Live Traffic now defaults to only logging security events on new installations.
* Change: Added an upper limit to the maximum scan stage execution time if not explicitly overridden.
* Fix: Changed WAF file handling to skip some file actions if running via the CLI.
* Fix: Fixed an issue that could prevent files beginning with a period from working with the file restore function.
* Fix: Improved layout of options page controls on small screens.
* Fix: Fixed a typo in the htaccess update panel.
* Fix: Added compensation for Windows path separators in the WAF config handling.
* Fix: Fixed handling of case-insensitive tables in the Diagnostics table check.
* Fix: Better messaging by the status circles when the WAF config is inaccessible or corrupt.
* Fix: REST API hits now correctly follow the "Don't log signed-in users with publishing access" option.

= 7.1.17 - November 6, 2018 =
* Improvement: Increased frequency of filesystem permission check and update of the WAF config files.
* Improvement: More complete data removal when deactivating with remove tables and files checked.
* Improvement: Better diagnostics logging for GeoIP conflicts.
* Fix: Text fix in invalid username lockout message.
* Fix: PHP 7.3 syntax compatibility fixes.

= 7.1.16 - October 16, 2018 =
* Improvement: Service allowlisting can now be selectively toggled on or off per service.
* Improvement: Updated bundled GeoIP database.
* Change: Removed the "Disable Wordfence Cookies" option as we've removed all cookies it affected.
* Change: Updates that refresh country statistics are more efficient and now only affect the most recent records.
* Change: Changed the title of the Wordfence Dashboard so it's easier to identify when many tabs are open.
* Fix: Fixed an issue with country blocking and XML-RPC requests containing credentials.

= 7.1.15 - October 1, 2018 =
* Fix: Addressed a plugin conflict with the composer autoloader.

= 7.1.14 - October 1, 2018 =
* Improvement: Reduced queries and potential table size for rate limiting-related data.
* Improvement: Updated the internal browscap database.
* Improvement: Better error reporting for scan failures due to connectivity issues.
* Improvement: WAF-related file permissions will now lock down further when possible.
* Improvement: Hardening for sites on servers with insecure configuration, which should not be enabled on publicly accessible servers. Thanks Janek Vind.
* Change: Switched the minimum PHP version to 5.3.
* Fix: Prevent bypass of author enumeration prevention by using invalid parameters. Thanks Janek Vind.
* Fix: Wordfence crons will now automatically reschedule if missing for any reason.
* Fix: Fixed an issue where the block counts and total IPs blocked values on the dashboard might not agree.
* Fix: Corrected the message shown on Live Traffic when a country blocking bypass URL is used.
* Fix: Removed extra spacing in the example ranges for "Allowlisted IP addresses that bypass all rules"

= 7.1.12 - September 12, 2018 =
* Improvement: Updated bundled GeoIP database.
* Improvement: Restructured the WAF configuration storage to be more resilient on hosts with no file locking support.
* Change: Moved the settings import/export to the Tools page.
* Change: New installations will now use lowercase table names to avoid issues with some backup plugins and Windows-based sites.
* Fix: The notice and repair link for an unreadable WAF configuration now work correctly.
* Fix: Improved appearance of some stat components on smaller screens.
* Fix: Fixed duplicate entries with different status codes appearing in detailed live traffic.
* Fix: Added better caching for the breached password check to compensate for sites that prevent the cache from expiring correctly.
* Fix: Changing the frequency of the activity summary email now reschedules it.

= 7.1.11 - August 21, 2018 =
* Improvement: Added a custom message field that will show on all block pages.
* Improvement: Improved the standard appearance for block pages.
* Improvement: Live Traffic now better displays failed logins.
* Improvement: Added a constant to prevent direct MySQLi use for hosts with unsupported DB configurations.
* Improvement: Malware scan results have been modified to include both a public identifier and description.
* Change: Description updated on the Live Traffic page.
* Fix: Removed an empty file hash from the old Wordpress core file detection.
* Fix: Update locking now works on multisites that have removed the original site.

= 7.1.10 - July 31, 2018 =
* Improvement: Better labeling in Live Traffic for 301 and 302 redirects.
* Improvement: Login timestamps are now displayed in the site's configured time zone rather than UTC.
* Improvement: Added detection and a workaround for hosts with a non-functional MySQLi interface.
* Improvement: The prevent admin registration setting now works with WooCommerce's registration flow.
* Improvement: For hosts with varying URL values (e.g., AWS instances), notification and alert links now correctly use the canonical admin URL.
* Fix: Fixed a layout problem with the live traffic disabled notice.
* Fix: The scan stage that checks "How does Wordfence get IPs?" no longer shows a warning if the call fails.

= 7.1.9 - July 12, 2018 =
* Improvement: Added an "unsubscribe" link to plugin-generated alerts.
* Improvement: Added some additional flags.
* Change: Removed some unnecessary files from the bundled GeoIP library.
* Change: Updated wording in the Terms of Use/Privacy Policy agreement UI.
* Change: The minimum "Lock out after how many login failures" is now 2.
* Change: The diagnostics report now includes the scan issues for easier debugging.
* Fix: Multiple improvements to automatic updating to avoid broken updates on sites with low resources or slow file systems.
* Fix: Better text wrapping in the top failed logins widget.
* Fix: Onboarding CSS/JS is now correctly enqueued for multisite installations.
* Fix: Fixed a missing asset with the bundled jQueryUI library.
* Fix: Fixed memory calculation when using PHP's supported shorthand syntax.
* Fix: Better wrapping behavior on the reason column in the blocks table.
* Fix: Fixed an issue with an internal data structure to prevent error log entries when using mbstring functions.
* Fix: Improved bot detection when no user agent is sent.

= 7.1.8 - June 26, 2018 =
* Improvement: Better detection of removal status when uninstalling the WAF's auto-prepend file.
* Improvement: Switched optional mailing list signup to go directly through our servers rather than a third party.
* Fix: Fixed the dashboard erroneously showing the payment method as missing for some payment methods.
* Fix: If a premium license is deleted from wordfence.com, the plugin will now automatically downgrade rather than get stuck in an intermediate state.
* Fix: Changed some wording to consistently use "License" or "License Key".

= 7.1.7 - June 5, 2018 =
* Improvement: Added better support for keyboard navigation of options.
* Improvement: staging. and dev. subdomains are now supported for sharing premium licenses.
* Improvement: Bundled our interface font to avoid loading from a remote source and reduced the pages some assets were loaded on.
* Improvement: Added option to trim Live Traffic records after a specific number of days.
* Improvement: Updated to the current GeoIP2 database.
* Improvement: Extended the automatic redaction applied to attack data that may include sensitive information.
* Change: Removed a no-longer-used API call.
* Fix: Fixed a few options that couldn't be searched for on the all options page.
* Fix: Activity Report emails now detect and avoid symlink loops.

= 7.1.6 - May 22, 2018 =
* Fix: Added a workaround for sites with inaccessible WAF config files when reading php://input

= 7.1.5 - May 22, 2018 =
* Improvement: GDPR compliance updates.
* Improvement: The list of blocks now shows the most recently-added blocks at the top by default.
* Improvement: Added better table status display to Diagnostics to help with debugging.
* Improvement: Added deferred loading to Live Traffic avatars to improve performance with some plugins.
* Improvement: The server's own IP is now automatically allowlisted for known safe requests.
* Fix: Added a workaround to Live Traffic human/bot detection to compensate for other scripts that modify our event handlers.
* Fix: Fixed an error with Live Traffic human/bot detection when plugins change the load order.
* Fix: Fixed auto-enabling of some controls when pasting values.
* Fix: Fixed an instance where http links could be generated for emails rather than https.

= 7.1.4 - May 2, 2018 =
* Improvement: Added additional XSS detection capabilities.
* Change: Initial preparation for GDPR compliance. Additional changes will be included in an upcoming release to meet the GDPR deadline.
* Change: Reworked Live Traffic/Rate Limiting human and bot detection to function without cookies.
* Change: Removed the wfvt_ cookie as it was no longer necessary.
* Change: Better debug messaging for scan forking.
* Fix: PHP deprecation notices no longer suppress those of old OpenSSL or WordPress.
* Fix: Fixes to the deprecated OpenSSL version detection and alerting to handle non-patch version numbers.
* Fix: Added detection for and fixed a very large pcre.backtrack_limit setting that could cause scans to fail, when modified by other plugins.
* Fix: Scan issue alert emails no longer incorrectly show high sensitivity was enabled.
* Fix: Fixed wrapping of long strings on the Diagnostics page.

= 7.1.3 - April 18, 2018 =
* Improvement: Improved the performance of our config table status check.
* Improvement: The IP address of the user activating Wordfence is now used by the breached password check until an admin successfully logs in.
* Improvement: Added several new error displays for scan failures to help diagnose and fix issues.
* Improvement: Added the block duration to alerts generated when an IP is blocked.
* Improvement: A text version of scan results is now included in the activity log email.
* Improvement: The WAF install/uninstall process no longer asks to backup files that do not exist.
* Change: Began a phased rollout of moving brute force queries to be https-only.
* Change: Added the initial deprecation notice for PHP 5.2.
* Change: Suppressed a script tag on the diagnostics page from being output in the email version.
* Fix: Addressed an issue where plugins that return a null user during authentication would cause a PHP notice to be logged.
* Fix: Fixed an issue where plugins that use non-standard version formatting could end up with a inaccurate vulnerability status.
* Fix: Added a workaround for web email clients that erroneously encode some URL characters (e.g., #).

= 7.1.2 - April 4, 2018 =
* Improvement: Added support for filtering the blocks list.
* Improvement: Added a flow for generating the WAF autoprepend file and retrieving the path for manual installations.
* Improvement: Added a variety of new data values to the Diagnostics page to aid in debugging issues.
* Improvement: SVG files now have the JavaScript-based malware signatures run against them.
* Improvement: More descriptive text for the scan issue email when there's an unknown WordPress core version.
* Improvement: Added a dedicated error display that will show when a scan is detected as failed.
* Improvement: readme.html and wp-config-sample.php are no longer scanned for changes due to differences between languages (malware signatures still run).
* Improvement: When the license status changes, it now triggers a fresh pull of the WAF rules.
* Improvement: Added dedicated messaging for leftover WordPress core files that were not fully removed during upgrade.
* Improvement: Improved labeling in Live Traffic for hits blocked by the real-time IP blocklist.
* Improvement: Added forced wrapping to the file paths in the activity report email to avoid scroll bar overlap making them unreadable.
* Improvement: Updated the bundled GeoIP database.
* Improvement: Updated the bundled browscap database.
* Improvement: All emailed alerts now include a link to the generating site.
* Change: Minor text change to unify some terminology.
* Fix: Removed a remaining reference to the CDN version of Font Awesome.
* Fix: Removed an old reference to the pre-Wordfence 7.1 lockouts table.
* Fix: Scan results for malware detections in posts are no longer clickable.
* Fix: We now verify that there's a valid email address defined before attempting to send an alert and filter out any invalid ones.
* Fix: Added a workaround for GoDaddy/Limit Login Attempts suppressing the 2FA prompting.

= 7.1.1 - March 20, 2018 =
* Improvement: Added the ability to sort the blocks table.
* Improvement: Added short-term caching of breach check results.
* Improvement: The check for passwords leaked in breaches now allows a login if the user has previously logged in from the same IP successfully and displays an admin notice suggesting changing the password.
* Improvement: Switched the bundled select2 library to use to prefixed version to work around other plugins including older versions on our pages.
* Improvement: The scan page now displays when beta signatures are enabled since they can produce false positives.
* Improvement: Improved positioning of the "Wordfence is Working" message.
* Improvement: Added a character limit to the reason on blocks and forced wrapping to avoid the layout stretching too much.
* Fix: Fixed an issue with some table prefixing where multisite installations with rare configurations could result in unknown table warnings.
* Fix: Removed an older behavior with live traffic buttons that could allow them to open in a new tab and show nothing.
* Fix: Added a check for sites with inaccurate disk space function results to avoid showing an issue.
* Fix: Added a secondary check to the email summary cron to avoid repeated sending if the cron list is corrupted.
* Fix: Fixed a typo on the Advanced Comment Spam Filter page.

= 7.1.0 - March 1, 2018 =
* Improvement: Added a new feature to prevent attackers from successfully logging in to admin accounts whose passwords have been in data breaches.
* Improvement: Added pagination support to the scan issues.
* Improvement: Improved time zone handling for the WAF's learning mode.
* Improvement: Improved messaging on file-related scan issues when the file is wp-config.php.
* Improvement: Modified the appearance of the "How does Wordfence get IPs" option to be more clear.
* Improvement: Better messaging about the scan options that need to be enabled for free installations to achieve 100%.
* Improvement: The country blocking selection drawer behavior has been changed to now allow saving directly from it.
* Improvement: Increased the textarea size for the advanced firewall options to make editing easier.
* Improvement: The URL blocklist check now includes additional variants in some checks to more accurately match.
* Change: Adjusted messaging when blocks are loading.
* Change: Wording change for the option "Maximum execution time for each stage".
* Change: Permanent blocks now display "Permanent" rather than "Indefinite" for the expiration for consistency.
* Fix: Fixed the initial status code recorded for lockouts and blocks.
* Fix: Fixed PHP notices that could occur when using the bulk delete/repair scan tools.
* Fix: Improved the state updating for the scan bulk action buttons.
* Fix: Usernames in live traffic now correctly link to the corresponding profile page.
* Fix: Addressed a PHP warning that could occur if wordpress.org returned a certain format for the abandoned plugin check.
* Fix: Fixed a possible PHP notice when syncing attack data records without metadata attached.
* Fix: Modified the behavior of the disk space check to avoid a scan warning showing without an issue generated.
* Fix: Fixed a CSS glitch where the top controls could have extra space at the top when sites have long navigation menus.
* Fix: Updated some wording in the All Options search box.
* Fix: Removed an old link for "See Recent Traffic" on Live Traffic that went nowhere.

= 7.0.4 - February 12, 2018 =
* Change: Live Traffic records are no longer created for hits initiated by WP-CLI (e.g., manually running cron).
* Fix: Fixed an issue where the human/bot detection wasn't functioning.

= 7.0.4 =
* Fix: Re-added missing file to fix commit excluding it.

= 7.0.3 - February 12, 2018 =
* Improvement: Added an "All Options" page to enable developers and others to more rapidly configure Wordfence.
* Improvement: Improved messaging for when a page has been open for more than a day and the security token expires.
* Improvement: Relocated the "Always display expanded Live Traffic records" option to be more accessible.
* Improvement: Improved appearance and behavior of option checkboxes.
* Improvement: For plugins with incomplete header information, they're now shown with a fallback title in scan results as appropriate.
* Improvement: The country block rule in the blocks table now shows a count rather than a potentially large list of countries.
* Change: Modified behavior of the advanced country blocking options to always show.
* Fix: Fixed the "Make Permanent" button behavior for blocks created from Live Traffic.
* Fix: Better synchronization of block records to the WAF config to avoid duplicate queries.
* Fix: The diff viewer now forces wrapping to prevent long lines of text from stretching the layout.
* Fix: Fixed an issue where the scanned plugin count could be inaccurate due to forking during the plugin scan.
* Fix: Adjusted sizing on the country blocking options to prevent placeholder text from being cut off at some screen sizes.
* Fix: Block/Unblock now works correctly when viewing Live Traffic with it grouped by IP.
* Fix: Fixed an issue where the count of URLs checked was incorrect.

= 7.0.2 - January 31, 2018 =
* Improvement: Added CSS/JS filename versioning to address caching plugins not refreshing for plugin updates.
* Improvement: The premium key is no longer prompted for during installation if already present from an earlier version.
* Improvement: Added a check and corresponding notice if the WAF config is unreadable or invalid.
* Improvement: Improved live traffic sizing on smaller screens.
* Improvement: Added tour coverage for live traffic.
* Change: IPs blocked via live traffic now use the configurable how long is an IP blocked setting to match previous behavior.
* Change: Changed the option to enable live traffic to match the wording and style of other options.
* Change: Changed styling on the unknown country display in live traffic to match the common coloring.
* Change: Statistics that do not depend on the WAF for their data now display when it is in learning mode.
* Change: Scan issues that are indicative of a compromised site are moved to the top of the list.
* Change: Changed styling on unselected checkboxes.
* Fix: Quick scans no longer run daily if automatic scheduled scans are disabled.
* Fix: The update check in a quick scan no longer runs if the update check has been turned off for regular scans.
* Fix: Fixed the quick navigation letters in the country picker not scrolling.
* Fix: Fixed editing the country block configuration when there are a large number of other blocks.
* Fix: Addressed an issue where having the country block or a pattern block selected when clicking Make Permanent could break them.
* Fix: Live traffic entries with long user agents no longer cause the table to stretch.
* Fix: Fixed an issue where live traffic would stop loading new records if always display expanded records was on.
* Fix: Suppressed warnings on IP conversion functions when processing potentially incomplete data.
* Fix: Added a check in REST API hooks to avoid defining a constant twice.

= 7.0.1 - January 24, 2018 =
* Comprehensive UI refresh.
* Improvement: Updated bundled GeoIP database.

= 6.3.22 - November 30, 2017 =
* Fix: Addressed a warning that could occur on PHP 7.1 when reading php.ini size values.
* Fix: Fixed a warning by adjusting a query to remove old-style variable references.

= 6.3.21 - November 1, 2017 =
* Improvement: Updated bundled GeoIP database.
* Fix: Fixed a log warning that could occur during the scan for plugins not in the wordpress.org repository.

= 6.3.20 - October 12, 2017 =
* Improvement: The scan will now alert for a publicly visible .user.ini file.
* Fix: Fixed status code and human/bot tagging of block hit entries for live traffic and the Wordfence Security Network.
* Fix: Added internal throttling to ensure the daily cron does not run too frequently on some hosts.

= 6.3.19 - September 20, 2017 =
* Emergency Fix: Updated wpdb::prepare calls using %.6f since it is no longer supported.

= 6.3.18 - September 7, 2017 =
* Improvement: Reduced size of some JavaScript for faster loading.
* Improvement: Better block counting for advanced comment filtering.
* Improvement: Increased logging in debug mode for plugin updates to help resolve issues.
* Fix: Reduced the minimum duration of a scan stage to improve reliability on some hosts.

= 6.3.17 - August 24, 2017 =
* Improvement: Prepared code for upcoming scan improvement which will greatly increase scan performance by optimizing malware signatures.
* Improvement: Updated the bundled GeoIP database.
* Improvement: Better scan messaging when a publicly-reachable searchreplacedb2.php utility is found.
* Improvement: The no-cache constant for database caching is now set for W3TC for plugin updates and scans.
* Improvement: Added an additional home/siteurl resolution check for WPML installations.

= 6.3.16 - August 8, 2017 =
* Improvement: Introduced a new scan stage to check for malicious URLs and content within WordPress core, plugin, and theme options.
* Improvement: New scan stage includes a new check for TrafficTrade malware.
* Improvement: Reduced net memory usage during forked scan stages by up to 50%.
* Improvement: Reduced the number of queries executed for some configuration options.
* Improvement: Modified the default allowlisting to include the new core AJAX action in WordPress 4.8.1.
* Fix: Synchronized the scan option names between the main options page and smaller scan options page.
* Fix: Fixed CSS positioning issue for dashboard metabox with IPv6.
* Fix: Fixed a compatibility issue with determining the site's home_url when WPML is installed.

= 6.3.15 - July 24, 2017 =
* Improvement: Reduced memory usage on scan forking and during the known files scan stage.
* Improvement: Added additional scan options to allow for disabling the blocklist checks while still allowing malware scanning to be enabled.
* Improvement: Added a Wordfence Application Firewall code block for the lsapi variant of LiteSpeed.
* Improvement: Updated the bundled GeoIP database.
* Fix: Added a validation check to IP range allowlisting to avoid log warnings if they're malformed.

= 6.3.14 - July 17, 2017 =
* Improvement: Introduced smart scan distribution. Scan times are now distributed intelligently across servers to provide consistent server performance. 
* Improvement: Introduced light-weight scan that runs frequently to perform checks that do not use any server resources. 
* Improvement: If unable to successfully look up the status of an IP claiming to be Googlebot, the hit is now allowed.
* Improvement: Scan issue results for abandoned plugins and unpatched vulnerabilities include more info.
* Fix: Suppressed PHP notice with time formatting when a microtimestamp is passed.
* Fix: Improved binary data to HTML entity conversion to avoid wpdb stripping out-of-range UTF-8 sequences.
* Fix: Added better detection to SSL status, particularly for IIS.
* Fix: Fixed PHP notice in the diff renderer.
* Fix: Fixed typo in lockout alert.

= 6.3.12 - June 28, 2017 =
* Improvement: Adjusted the password audit to use a better cryptographic padding option.
* Improvement: Improved the option value entry process for the modified files exclusion list.
* Improvement: Added rel="noopener noreferrer" to all external links from the plugin for better interoperability with other scanners.
* Improvement: Added support to the WAF for validating URLs for future use in rules.
* Fix: Time formatting will now correctly handle :30 and :45 time zone offsets.
* Fix: Hosts using mod_lsapi will now be detected as Litespeed for WAF optimization.
* Fix: Added an option to allow automatic updates to function on Litespeed servers that have the global noabort set rather than site-local.
* Fix: Fixed a PHP notice that could occur when running a scan immediately after removing a plugin.

= 6.3.11 - June 15, 2017 =
* Improvement: The scan will alert for plugins that have not been updated in 2+ years or have been removed from the wordpress.org directory. It will also indicate if there is a known vulnerability.
* Improvement: Added a self-check to the scan to detect if it has stalled.
* Improvement: If WordPress auto-updates while a scan is running, the scan will self-abort and reschedule itself to try again later.
* Improvement: IP-based filtering in Live Traffic can now use wildcards.
* Improvement: Updated the bundled GeoIP database.
* Improvement: Added an anti-crawler feature to the lockout page to avoid crawlers erroneously following the unlock link.
* Improvement: The live traffic "Group By" options now dynamically show the results in a more useful format depending on the option selected.
* Improvement: Improved the unknown core files check to include all extra files in core locations regardless of whether or not the "Scan images, binary, and other files as if they were executable" option is on.
* Improvement: Better wording for the allowlisting IP range error message.
* Fix: Addressed a performance issue on databases with tens of thousands of tables when trying to load the diagnostics page.
* Fix: All dashboard and activity report email times are now displayed in the time zone configured for the WordPress installation.

= 6.3.10 - June 1, 2017 =
* Improvement: Reduction in overall memory usage and peak memory usage for the scanner.
* Improvement: Support for exporting a list of all blocked and locked out IP addresses.
* Improvement: Updated the WAF's CA certificate bundle.
* Improvement: Updated the browscap database.
* Improvement: Suppressed the automatic HTTP referer added by WordPress for API calls to reduce overall bandwidth usage.
* Improvement: When all issues for a scan stage have been previously ignored, the results now indicate this rather than saying problems were found.
* Fix: Worked around an issue with WordPress caching to allow password audits to succeed on sites with tens of thousands of users.
* Fix: Fixed an IPv6 detection issue with one form of IPv6 address.
* Fix: An empty ignored IP list for WAF alerts no longer creates a PHP notice.
* Fix: Better detection for when to use secure cookies.
* Fix: Fixed a couple issue types that were not able to be permanently ignored.
* Fix: Adjusted the changelog link in the scan results email to work for the new wordpress.org repository.
* Fix: Fixed some broken links in the activity summary email.
* Fix: Fixed a typo in the scan summary text.
* Fix: The increased attack rate emails now correctly identify blocklist blocks.
* Fix: Fixed an issue with the dashboard where it could show the last scan failed when one has never ran.
* Fix: Brute force records are now coalesced when possible prior to sending.

= 6.3.9 - May 17, 2017 =
* Improvement: Malware signature checking has been better optimized to improve overall speed.
* Improvement: Updated the bundled GeoIP database.
* Improvement: The memory tester now tests up to the configured scan limit rather than a fixed value.
* Improvement: Added a test to the diagnostics page that verifies permissions to the WAF config location.
* Improvement: The diagnostics page now contains a callback test for the server itself.
* Improvement: Updated the styling of dashboard notifications for better separation.
* Improvement: Added additional constants to the diagnostics page.
* Change: Wordfence now enters a read-only mode with its configuration files when run via the 'cli' PHP SAPI on a misconfigured web server to avoid file ownership changing.
* Change: Changed how administrator accounts are detected to compensate for managed WordPress sites that do not have the standard permissions.
* Change: The table list on the diagnostics page is now limited in length to avoid being exceedingly large on big multisite installations.
* Fix: Improved updating of WAF config values to minimize writing to disk.
* Fix: The blocklist's blocked IP records are now correctly trimmed when expired.
* Fix: Added error suppression to the WAF attack data functions to prevent corrupt records from breaking the no-cache headers.
* Fix: Fixed some incorrect documentation links on the diagnostics page.
* Fix: Fixed a typo in a constant on the diagnostics page.

= 6.3.8 - May 2, 2017 =
* Fix: Addressed an issue that could cause scans to time out on sites with tens of thousands of potential URLs in files, comments, and posts.

= 6.3.7 - April 25, 2017 =
* Improvement: All URLs are now checked against the Wordfence Domain Blocklist in addition to Google's.
* Improvement: Better page load performance for multisite installations with thousands of tables.
* Improvement: Updated the bundled GeoIP database.
* Improvement: Integrated blocklist blocking statistics into the dashboard for Premium users.
* Fix: Added locking to the automatic update process to ensure non-standard crons don't break Wordfence.
* Fix: Fixed an activation error on multisite installations on very old WordPress versions.
* Fix: Adjusted the behavior of the blocklist toggle for Free users.

= 6.3.6 - April 5, 2017 =
* Improvement: Optimized the malware signature scan to reduce memory usage.
* Improvement: Optimized the overall scan to make fewer network calls.
* Improvement: Running an update now automatically dismisses the corresponding scan issue if present.
* Improvement: Added a time limit to the live activity status so only current messages are shown.
* Improvement: WAF configuration files are now excluded by default from the recently modified files list in the activity report.
* Improvement: Background pausing for live activity and traffic may now be disabled.
* Improvement: Added additional WAF support to allow us to more easily address false positives.
* Improvement: Blocking pages presented by Wordfence now indicate the source and contain information to help diagnose caching problems.
* Fix: All external URLs in the tour are now https.
* Fix: Corrected a typo in the unlock email template.
* Fix: Fixed the target of a label on the options page.

= 6.3.5 - March 23, 2017 =
* Improvement: Sites can now specify a list of trusted proxies when using X-Forwarded-For for IP resolution.
* Improvement: Added options to customize which dashboard notifications are shown.
* Improvement: Improvements to the scanner's malware stage to avoid timing out on larger files.
* Improvement: Provided additional no-caching indicators for caches that erroneously save pages with HTTP error status codes.
* Improvement: Updated the bundled GeoIP database.
* Improvement: Optimized the country update process in the upgrade handler so it only updates changed records.
* Improvement: Added our own prefixed version of jQuery.DataTables to avoid conflicts with other plugins.
* Improvement: Changes to readme.txt and readme.md are now ignored by the scanner unless high sensitivity is on.
* Fix: Addressed an issue with multisite installations where they would execute the upgrade handler for each subsite.
* Fix: Added additional error handling to the blocked IP list to avoid outputting notices when another plugin resets the error handler.
* Fix: Made the description in the summary email for blocks resulting from the blocklist more descriptive.
* Fix: Updated the copyright date on several pages.
* Fix: Fixed incorrect wrapping of the Group by field on the live traffic page.

= 6.3.4 - March 13, 2017 =
* Improvement: Added a path for people blocked by the IP blocklist (Premium Feature) to report false positives.

= 6.3.3 - March 9, 2017 =
* New: Malicious IPs are now preemptively blocked by a regularly-updated blocklist. [Premium Feature]
* Improvement: Better layout and display for mobile screen sizes.
* Improvement: Dashboard chart data is now updated more frequently.
* Fix: Fixed database errors on notifications page on multisite installations.
* Fix: Fixed site URL detection for multisite installations.
* Fix: Fixed tour popup positioning on multisite.
* Fix: Increased the z-index of the AJAX error watcher alert.
* Fix: Addressed an additional way to enumerate authors with the REST JSON API.

= 6.3.2 - February 23, 2017 =
* Improvement: Improved the WAF's ability to inspect POST bodies.
* Improvement: Dashboard now shows up to 100 each of failed/successful logins.
* Improvement: Updated internal GeoIP database.
* Improvement: Updated internal browscap database.
* Improvement: Better documentation on Country Blocking regarding Google AdWords
* Advanced: Added constant "WORDFENCE_DISABLE_FILE_VIEWER" to prohibit file-viewing actions from Wordfence.
* Advanced: Added constant "WORDFENCE_DISABLE_LIVE_TRAFFIC" to prohibit live traffic from capturing regular site visits.
* Fix: Fixed a few links that didn't open the correct configuration pages.
* Fix: Unknown countries in the dashboard now show "Unknown" rather than empty.

= 6.3.1 - February 7, 2017 =
* Improvement: Locked out IPs are now enforced at the WAF level to reduce server load.
* Improvement: Added a "Show more" link to the IP block list and login attempts list.
* Improvement: Added network data for the top countries blocked list.
* Improvement: Added a notification when a premium key is installed on one site but registered for another URL.
* Improvement: Switching tabs in the various pages now updates the page title as well.
* Improvement: Various styling consistency improvements.
* Change: Separated the various blocking-related pages out from the Firewall top-level menu into "Blocking".
* Fix: Improved compatibility with our GeoIP interface.
* Fix: The updates available notification is refreshed after updates are installed.
* Fix: The scan notification is refreshed when issues are resolved or ignored.

= 6.3.0 - January 26, 2017 =
* Enhancement: Added Wordfence Dashboard for quick overview of security activity.
* Improvement: Simplified the UI by revamping menu structure and styling.
* Fix: Fixed minor issue with REST API user enumeration blocking.
* Fix: Fixed undefined index notices on password audit page.

= 6.2.10 - January 12, 2017 =
* Improvement: Better reporting for failed brute force login attempts.
* Change: Reworded setting for ignored IPs in the WAF alert email.
* Change: Updated support link on scan page.
* Fix: When a key is in place on multiple sites, it's now possible to downgrade the ones not registered for it.
* Fix: Addressed an issue where the increased attack rate emails would send repeatedly if the threshold value was missing.
* Fix: Typo fix in firewall rule 11 name.

= 6.2.9 - December 27, 2016 =
* Improvement: Updated internal GeoIP database.
* Improvement: Better error handling when a site is unreachable publicly.
* Fix: Fixed a URL in alert emails that did not correctly detect when sent from a multisite installation.
* Fix: Addressed an issue where the scan did not alert about a new WordPress version.

= 6.2.8 - December 12, 2016 =
* Improvement: Added support for hiding the username information revealed by the WordPress 4.7 REST API. Thanks Vladimir Smitka.
* Improvement: Added vulnerability scanning for themes.
* Improvement: Reduced memory usage by up to 90% when scanning comments.
* Improvement: Performance improvements for the dashboard widget.
* Improvement: Added progressive loading of addresses on the blocked IP list.
* Improvement: The diagnostics page now displays a config reading/writing test.
* Change: Support for the Falcon cache has been removed.
* Fix: Better messaging when the WAF rules are manually updated.
* Fix: The proxy detection check frequency has been reduced and no longer alerts if the server is unreachable.
* Fix: Adjusted the behavior of parsing the X-Forwarded-For header for better accuracy. Thanks Jason Woods.
* Fix: Typo fix on the options page.
* Fix: Scan issue for known core file now shows the correct links.
* Fix: Links in "unlock" emails now work for IPv6 and IPv4-mapped-IPv6 addresses.
* Fix: Restricted caching of responses from the Wordfence Security Network.
* Fix: Fixed a recording issue with Wordfence Security Network statistics.

= 6.2.7 - December 1, 2016 =
* Improvement: WordPress 4.7 improvements for the Web Application Firewall.
* Improvement: Updated signatures for hash-based malware detection.
* Improvement: Automatically attempt to detect when a site is behind a proxy and has IP information in a different field.
* Improvement: Added additional contextual help links.
* Improvement: Significant performance improvement for determining the connecting IP.
* Improvement: Better messaging for two-factor recovery codes.
* Fix: Adjusted message when trying to block an IP in the allowlist.
* Fix: Error log download links now work on Windows servers.
* Fix: Avoid running out of memory when viewing very large activity logs.
* Fix: Fixed warning that could be logged when following an unlock email link.
* Fix: Tour popups on options page now scroll into view correctly.

= 6.2.6 - November 17, 2016 =
* Improvement: Improved formatting of attack data when it contains binary characters.
* Improvement: Updated internal GeoIP database.
* Improvement: Improved the ordering of rules in the malware scan so more specific rules are checked first.
* Fix: Country blocking redirects are no longer allowed to be cached.
* Fix: Fixed an issue with 2FA on multisite where the site could report URLs with different schemes depending on the state of plugin loading.

= 6.2.5 - November 9, 2016 =
* Fix: Fixed an issue that could occur on older WordPress versions when processing login attempts

= 6.2.4 - November 9, 2016 =
* Improvement: Scan times for very large sites with huge numbers of files are greatly improved.
* Improvement: Added a configurable time limit for scans to help reduce overall server load and identify configuration problems.
* Improvement: Email-based logins are now covered by "Don't let WordPress reveal valid users in login errors".
* Improvement: Extended rate limiting support to the login page.
* Fix: Fixed a case where files in the site root with issues could have them added multiple times.
* Fix: Improved IP detection in the WAF when using an IP detection method that can have multiple values.
* Fix: Added a safety check for when the database fails to return its max_allowed_packet value.
* Fix: Added safety checks for when the configuration table migration has failed.
* Fix: Added a couple rare failed login error codes to brute force detection.
* Fix: Fixed a sequencing problem when adding detection for bot/human that led to it being called on every request.
* Fix: Suppressed errors if a file is removed between the start of a scan and later scan stages.
* Fix: Addressed a problem where the scan exclusions list was not checked correctly in some situations.

= 6.2.3 - October 26, 2016 =
* Improvement: Reworked blocking for IP ranges, country blocking, and direct IP blocking to minimize server impact when under attack.
* Improvement: Live traffic better indicates the action taken by country blocking when it redirects a visitor.
* Improvement: Added support for finding server logs to the Diagnostics page to help with troubleshooting.
* Improvement: Allowlisted StatusCake IP addresses.
* Improvement: Updated GeoIP database.
* Improvement: Disabling Wordfence now sends an alert.
* Improvement: Improved detection for uploaded PHP content in the firewall.
* Fix: Eliminated memory-related errors resulting from the scan on sites with very large numbers of issues and low memory.
* Fix: Fixed admin page layout for sites using RTL languages.
* Fix: Reduced overhead of the dashboard widget.
* Fix: Improved performance of checking for Allowlisted IPs.
* Fix: Changes to the default plugin hello.php are now detected correctly in scans.
* Fix: Fixed IPv6 warning in the dashboard widget.

= 6.2.2 - October 12, 2016 =
* Fix: Replaced a slow query in the dashboard widget that could affect sites with very large numbers of users.

= 6.2.1 - October 11, 2016 =
* Improvement: Now performing scanning for PHP code in all uploaded files in real-time.
* Improvement: Improved handling of bad characters and IPv6 ranges in Advanced Blocking.
* Improvement: Live traffic and scanning activity now display a paused notice when real-time updates are suspended while in the background.
* Improvement: The file system scan alerts for files flagged by antivirus software with a '.suspected' extension.
* Improvement: New alert option to get notified only when logins are from a new location/device.
* Change: First phase for removing the Falcon cache in place, which will add a notice of its pending removal.
* Fix: Included country flags for Kosovo and Curaçao.
* Fix: Fixed the .htaccess directives used to hide files found by the scanner.
* Fix: Dashboard widget shows correct status for failed logins by deleted users.
* Fix: Removed duplicate issues for modified files in the scan results.
* Fix: Suppressed warning from reverse lookup on IPv6 addresses without valid DNS records.
* Fix: Fixed file inclusion error with themes lacking a 404 page.
* Fix: CSS fixes for activity report email.

= 6.2.0 - September 27, 2016 =
* Improvement: Massive performance boost in file system scan.
* Improvement: Added low resource usage scan option for shared hosts.
* Improvement: Aggregated login attempts when checking the Wordfence Security Network for brute force attackers to reduce total requests.
* Improvement: Now displaying scan time in a more readable format rather than total seconds.
* Improvement: Added PHP7 compatible .htaccess directives to disable code execution within uploads directory.
* Fix: Added throttling to sync the WAF attack data.
* Fix: Removed unnecessary single quote in copy containing "IP's".
* Fix: Fixed rare, edge case where cron key does not match the key in the database.
* Fix: Fixed bug with regex matching carriage returns in the .htaccess based IP block list.
* Fix: Fixed scans failing in subdirectory sites when updating malware signatures.
* Fix: Fixed infinite loop in scan caused by symlinks.
* Fix: Remove extra slash from "File restored OK" message in scan results.

= 6.1.17 - September 9, 2016 =
* Fix: Replaced calls to json_decode with our own implentation for hosts without the JSON extension enabled.

= 6.1.16 - September 8, 2016 =
* Improvement: Now performing malware scanning on all uploaded files in real-time.
* Improvement: Added Web Application Firewall activity to Wordfence summary email.
* Fix: Now using 503 response code in the page displayed when an IP is locked out.
* Fix: `wflogs` directory is now correctly removed on uninstall.
* Fix: Fixed recently introduced bug which caused the Allowlisted 404 URLs feature to no longer work.
* Fix: Added try/catch to uncaught exception thrown when pinging the API key.
* Improvement: Improved performance of the Live Traffic page in Firefox.
* Improvement: Updated GeoIP database.

= 6.1.15 - August 25, 2016 =
* Improvement: Removed file-based config caching, added support for caching via WordPress's object cache.
* Improvement: Allowlisted Uptime Robot's IP range.
* Fix: Notify users if suPHP_ConfigPath is in their WAF setup, and prompt to update Extended Protection.
* Fix: Fixed bug with allowing logins on admin accounts that are not fully activated with invalid 2FA codes when 2FA is required for all admins.
* Fix: Removed usage of `wp_get_sites()` which was deprecated in WordPress 4.6.
* Fix: Fixed PHP notice from `Undefined index: url` with custom/premium plugins.
* Improvement: Converted the banned URLs input to a textarea.

= 6.1.14 - August 11, 2016 =
* Improvement: Support downloading a file of 2FA recovery codes.
* Fix: Fixed PHP Notice: Undefined index: coreUnknown during scans.
* Improvement: Add note to options page that login security is necessary for 2FA to work.
* Fix: Fixed WAF false positives introduced with WordPress 4.6.
* Improvement: Update Geo IP database.

= 6.1.12 - July 26, 2016 =
* Fix: Fixed fatal error on sites running Wordfence 6.1.11 in subdirectory and 6.1.10 or lower in parent directory.
* Fix: Added a few common files to be excluded from unknown WordPress core file scan.

= 6.1.11 - July 25, 2016 =
* Improvement: Alert on added files to wp-admin, wp-includes.
* Improvement: 2FA is now available via any authenticator program that accepts TOTP secrets.
* Fix: Fixed bug with specific Advanced Blocking user-agent patterns causing 500 errors.
* Improvement: Plugin updates are now only a critical issue if there is a security related fix, and a warning otherwise. A link to the changelog is included.
* Fix: Added group writable permissions to Firewall's configuration files.
* Improvement: Changed allowlist entry area to textbox on options page.
* Fix: Move flags and logo served from wordfence.com over to locally hosted files.
* Fix: Fixed issues with scan in WordPress 4.6 beta.
* Fix: Fixed bug where Firewall rules could be missing on some sites running IIS.
* Improvement: Added browser-based malware signatures for .js, .html files in the malware scan.
* Fix: Added error suppression to `dns_get_record`.

= 6.1.10 - June 22, 2016 =
* Fix: Fixed fatal error in the event wflogs is not writable.

= 6.1.9 - June 21, 2016 =
* Fix: Using WP-CLI causes error Undefined index: SERVER_NAME.
* Improvement: Hooked up restore/delete file scan tools to Filesystem API.
* Fix: Reworked country blocking authentication check for access to XMLRPC.
* Improvement: Added option to require cellphone sign-in on all admin accounts.
* Improvement: Updated IPv6 GeoIP lite data.
* Fix: Removed suPHP_ConfigPath from WAF installation process.
* Fix: Prevent author names from being found through /wp-json/oembed.
* Improvement: Added better solutions for fixing wordfence-waf.php, .user.ini, or .htaccess in scan.
* Improvement: Added a method to view which files are currently used for WAF and to remove without reinstalling Wordfence.
* Improvement: Changed rule compilation to use atomic writes.
* Improvement: Removed security levels from Options page.
* Improvement: Added option to disable ajaxwatcher (for allowlisting only for Admins) on the front end.

= 6.1.8 - May 26, 2016 =
* Fix: Change wfConfig::set_ser to split large objects into multiple queries.
* Fix: Fixed bug in multisite with "You do not have sufficient permissions to access this page" error after logging in.
* Improvement: Update Geo IP database.
* Fix: Fixed deadlock when NFS is used for WAF file storage, in wfWAFAttackDataStorageFileEngine::addRow().
* Fix: Added third param to http_build_query for hosts with arg_separator.output set.
* Improvement: Show admin notice if WAF blocks an admin (mainly needed for ajax requests).
* Improvement: Clarify error message "Error reading config data, configuration file could be corrupted."
* Improvement: Added better crawler detection.
* Improvement: Add currentUserIsNot('administrator') to any generic firewall rules that are not XSS based.
* Improvement: Update URLs in Wordfence for documentation about LiteSpeed and lockouts.
* Improvement: Show message on scan results when a result is caused by enabling "Scan images and binary files as if they were executable" or...
* Fix: Suppressed warning: dns_get_record(): DNS Query failed.
* Fix: Suppressed warning gzinflate() error in scan logs.
* Fix: On WAF roadblock page: Warning: urlencode() expects parameter 1 to be string, array given ...
* Fix: Scheduled update for WAF rules doesn't decrease from 7 days, to 12 hours, when upgrading to a premium account.
* Improvement: Better message for dashboard widget when no failed logins.

= 6.1.7 - May 10, 2016 =
* Security Fix: Fixed reflected XSS vulnerability: CVSS 6.1 (Medium). Thanks Kacper Szurek.

= 6.1.6 - May 9, 2016 =
* Fix: Fixed bug with 2FA not properly handling email address login.
* Fix: Show logins/logouts when Live Traffic is disabled.
* Fix: Fixed bug with PCRE versions < 7.0 (repeated subpattern is too long).
* Fix: Now able to delete allowlisted URL/params containing ampersands and non-UTF8 characters.
* Improvement: Reduced 2FA activation code to expire after 30 days.
* Improvement: Live Traffic now only shows verified Googlebot under Google Crawler filter for new visits.
* Improvement: Adjusted permissions on Firewall log/config files to be 0640.
* Fix: Fixed false positive from Maldet in the wfConfig table during the scan.

= 6.1.5 - April 28, 2016 = 
* Fix: WordPress language files no longer flagged as changed.
* Improvement: Accept wildcards in "Immediately block IP's that access these URLs."
* Fix: Fixed bug when multiple authors have published posts, /?author=N scans show an author archive page.
* Fix: Fixed issue with IPv6 mapped IPv4 addresses not being treated as IPv4.
* Improvement: Added WordPress version and various constants to Diagnostics report.
* Fix: Fixed bug with Windows users unable to save Firewall config.
* Improvement: Include option for IIS on Windows in Firewall config process, and recommend manual php.ini change only.
* Fix: Made the 'administrator email address' admin notice dismissable.

= 6.1.4 - April 20, 2016 =
* Fix: Fixed potential bug with 'stored data not found after a fork. Got type: boolean'.
* Improvement: Added bulk actions and filters to WAF allowlist table.
* Improvement: Added a check while in learning mode to verify the response is not 404 before whitelising.
* Fix: Added index to attackLogTime. wfHits trimmed on runInstall now.
* Fix: Fixed attack data sync for hosts that cannot use wp-cron.
* Improvement: Use wftest@wordfence.com as the Diagnostics page default email address.
* Improvement: When WFWAF_ENABLED is set to false to disable the firewall, show this on the Firewall page.
* Fix: Prevent warnings when $_SERVER is empty.
* Fix: Bug fix for illegal string offset.
* Fix: Hooked up multibyte string functions to binary safe equivalents.
* Fix: Hooked up reverse IP lookup in Live Traffic.
* Fix: Add the user the web server (or PHP) is currently running as to Diagnostics page.
* Improvement: Pause Live Traffic after scrolling past the first entry.
* Improvement: Move "Permanently block all temporarily blocked IP addresses" button to top of blocked IP list.
* Fix: Added JSON fallback for PHP installations that don't have JSON enabled.

= 6.1.3 - April 14, 2016 =
* Improvement: Added dismiss button to the Wordfence WAF setup admin notice.
* Fix: Removed .htaccess and .user.ini from publicly accessible config and backup file scan.
* Fix: Removed the disallow file mods for admins created outside of WordPress.
* Fix: Fixed bug with 'Hide WordPress version' causing issues with reCAPTCHA.
* Improvement: Added instructions for NGINX users to restrict access to .user.ini during Firewall configuration.
* Fix: Fixed bug with multiple API calls to 'get_known_files'.

= 6.1.2 - April 12, 2016 =
* Fix: Fixed fatal error when using a allowlisted IPv6 range and connecting with an IPv6 address.

= 6.1.1 - April 12, 2016 =
* Enhancement: Added Web Application Firewall
* Enhancement: Added Diagnostics page
* Enhancement: Added new scans:
	* Admins created outside of WordPress
	* Publicly accessible common (database or wp-config.php) backup files
* Improvement: Updated Live Traffic with filters and to include blocked requests in the feed.

You can find a [complete changelog](https://www.wordfence.com/help/advanced/changelog/) on our documentation site.
lib/wordfenceHash.php000064400000125316150755146450010627 0ustar00<?php
require_once(dirname(__FILE__) . '/wordfenceClass.php');
class wordfenceHash {

	const KNOWN_FILE_CORE = 'core';
	const KNOWN_FILE_PLUGIN = 'plugins';
	const KNOWN_FILE_THEME = 'themes';
	const KNOWN_FILE_OTHER = 'other';
	const MAX_QUEUED_RECORDS = 500;

	private static $KNOWN_FILE_TYPES = [
		self::KNOWN_FILE_CORE,
		self::KNOWN_FILE_PLUGIN,
		self::KNOWN_FILE_THEME
	];

	private $engine = false;
	private $db = false;
	private $startTime = false;
	private $currentFile = null;
	private $scanFileLogger;
	private $knownFileExclude;
	private $fileRecords = [];
	private $fileRecordCount = 0;

	//Begin serialized vars
	public $totalFiles = 0;
	public $totalDirs = 0;
	public $totalData = 0; //To do a sanity check, don't use 'du' because it gets sparse files wrong and reports blocks used on disk. Use : find . -type f -ls | awk '{total += $7} END {print total}'
	public $stoppedOnFile = false;
	private $coreEnabled = false;
	private $pluginsEnabled = false;
	private $themesEnabled = false;
	private $malwareEnabled = false;
	private $coreUnknownEnabled = false;
	private $knownFiles = false;
	private $malwareData = "";
	private $coreHashesData = '';
	private $haveIssues = array();
	private $status = array();
	private $possibleMalware = array();
	private $scannedFiles;
	private $totalForks = 0;
	private $alertedOnUnknownWordPressVersion = false;
	private $foldersEntered = array();
	private $foldersProcessed = array();
	private $suspectedFiles = array();
	private $indexed = false;
	private $indexSize = 0;
	private $currentIndex = 0;
	private $coalescingIssues = array();
	private $pathMap = array();

	/**
	 * @param string $path
	 * @param array $only
	 * @param array $themes
	 * @param array $plugins
	 * @param wfScanEngine $engine
	 * @throws Exception
	 */
	public function __construct($scannedFiles, $engine, $malwarePrefixesHash, $coreHashesHash, $scanMode) {
		$this->scannedFiles = $scannedFiles;
		$this->engine = $engine;

		$this->startTime = microtime(true);

		$options = $this->engine->scanController()->scanOptions();
		if ($options['scansEnabled_core']) { $this->coreEnabled = true; }
		if ($options['scansEnabled_plugins']) { $this->pluginsEnabled = true; }
		if ($options['scansEnabled_themes']) { $this->themesEnabled = true; }
		if ($options['scansEnabled_malware']) { $this->malwareEnabled = true; }
		if ($options['scansEnabled_coreUnknown']) { $this->coreUnknownEnabled = true; }

		$this->db = new wfDB();

		//Doing a delete for now. Later we can optimize this to only scan modified files.
		//$this->db->queryWrite("update " . wfDB::networkTable('wfFileMods') . " set oldMD5 = newMD5");
		$this->db->truncate(wfDB::networkTable('wfFileMods'));
		$this->db->truncate(wfDB::networkTable('wfKnownFileList'));
		$this->db->truncate(wfDB::networkTable('wfPendingIssues'));
		$fetchCoreHashesStatus = wfIssues::statusStart(__("Fetching core, theme and plugin file signatures from Wordfence", 'wordfence'));
		try {
			$this->knownFiles = $this->engine->getKnownFilesLoader()->getKnownFiles();
		} catch (wfScanKnownFilesException $e) {
			wfIssues::statusEndErr();
			throw $e;
		}
		wfIssues::statusEnd($fetchCoreHashesStatus, wfIssues::STATUS_SUCCESS);
		if ($this->malwareEnabled) {
			$malwarePrefixStatus = wfIssues::statusStart(__("Fetching list of known malware files from Wordfence", 'wordfence'));
			
			$stored = wfConfig::get_ser('malwarePrefixes', array(), false);
			if (is_array($stored) && isset($stored['hash']) && $stored['hash'] == $malwarePrefixesHash && isset($stored['prefixes']) && wfWAFUtils::strlen($stored['prefixes']) % 4 == 0) {
				wordfence::status(4, 'info', __("Using cached malware prefixes", 'wordfence'));
			}
			else {
				wordfence::status(4, 'info', __("Fetching fresh malware prefixes", 'wordfence'));
				
				$malwareData = $engine->api->getStaticURL('/malwarePrefixes.bin');
				if (!$malwareData) {
					wfIssues::statusEndErr();
					throw new Exception(__("Could not fetch malware signatures from Wordfence servers.", 'wordfence'));
				}
				
				if (wfWAFUtils::strlen($malwareData) % 4 != 0) {
					wfIssues::statusEndErr();
					throw new Exception(__("Malware data received from Wordfence servers was not valid.", 'wordfence'));
				}
				
				$stored = array('hash' => $malwarePrefixesHash, 'prefixes' => $malwareData);
				wfConfig::set_ser('malwarePrefixes', $stored, true, wfConfig::DONT_AUTOLOAD);
			}
			
			$this->malwareData = $stored['prefixes'];
			wfIssues::statusEnd($malwarePrefixStatus, wfIssues::STATUS_SUCCESS);
		}
		
		if ($this->coreUnknownEnabled) {
			$coreHashesStatus = wfIssues::statusStart(__("Fetching list of known core files from Wordfence", 'wordfence'));
			
			$stored = wfConfig::get_ser('coreHashes', array(), false);
			if (is_array($stored) && isset($stored['hash']) && $stored['hash'] == $coreHashesHash && isset($stored['hashes']) && wfWAFUtils::strlen($stored['hashes']) > 0 && wfWAFUtils::strlen($stored['hashes']) % 32 == 0) {
				wordfence::status(4, 'info', __("Using cached core hashes", 'wordfence'));
			}
			else {
				wordfence::status(4, 'info', __("Fetching fresh core hashes", 'wordfence'));
				
				$coreHashesData = $engine->api->getStaticURL('/coreHashes.bin');
				if (!$coreHashesData) {
					wfIssues::statusEndErr();
					throw new Exception(__("Could not fetch core hashes from Wordfence servers.", 'wordfence'));
				}
				
				if (wfWAFUtils::strlen($coreHashesData) % 32 != 0) {
					wfIssues::statusEndErr();
					throw new Exception(__("Core hashes data received from Wordfence servers was not valid.", 'wordfence'));
				}
				
				$stored = array('hash' => $coreHashesHash, 'hashes' => $coreHashesData);
				wfConfig::set_ser('coreHashes', $stored, true, wfConfig::DONT_AUTOLOAD);
			}
			
			$this->coreHashesData = $stored['hashes'];
			wfIssues::statusEnd($coreHashesStatus, wfIssues::STATUS_SUCCESS);
		}

		$this->haveIssues = array(
			'core' => wfIssues::STATUS_SECURE,
			'coreUnknown' => wfIssues::STATUS_SECURE,
			'themes' => wfIssues::STATUS_SECURE,
			'plugins' => wfIssues::STATUS_SECURE,
			'malware' => wfIssues::STATUS_SECURE,
			);
		if($this->coreEnabled){ $this->status['core'] = wfIssues::statusStart(__("Comparing core WordPress files against originals in repository", 'wordfence')); $this->engine->scanController()->startStage(wfScanner::STAGE_FILE_CHANGES); } else { wfIssues::statusDisabled(__("Skipping core scan", 'wordfence')); }
		if($this->themesEnabled){ $this->status['themes'] = wfIssues::statusStart(__("Comparing open source themes against WordPress.org originals", 'wordfence')); $this->engine->scanController()->startStage(wfScanner::STAGE_FILE_CHANGES); } else { wfIssues::statusDisabled(__("Skipping theme scan", 'wordfence')); }
		if($this->pluginsEnabled){ $this->status['plugins'] = wfIssues::statusStart(__("Comparing plugins against WordPress.org originals", 'wordfence')); $this->engine->scanController()->startStage(wfScanner::STAGE_FILE_CHANGES); } else { wfIssues::statusDisabled(__("Skipping plugin scan", 'wordfence')); }
		if($this->malwareEnabled){ $this->status['malware'] = wfIssues::statusStart(__("Scanning for known malware files", 'wordfence')); $this->engine->scanController()->startStage(wfScanner::STAGE_MALWARE_SCAN); } else { wfIssues::statusDisabled(__("Skipping malware scan", 'wordfence')); }
		if($this->coreUnknownEnabled){ $this->status['coreUnknown'] = wfIssues::statusStart(__("Scanning for unknown files in wp-admin and wp-includes", 'wordfence')); $this->engine->scanController()->startStage(wfScanner::STAGE_FILE_CHANGES); } else { wfIssues::statusDisabled(__("Skipping unknown core file scan", 'wordfence')); }
		
		if ($options['scansEnabled_fileContents']) { $this->engine->scanController()->startStage(wfScanner::STAGE_MALWARE_SCAN); }
		if ($options['scansEnabled_fileContentsGSB']) { $this->engine->scanController()->startStage(wfScanner::STAGE_CONTENT_SAFETY); }
		
		if ($this->coreUnknownEnabled && !$this->alertedOnUnknownWordPressVersion && empty($this->knownFiles['core'])) {
			require(ABSPATH . 'wp-includes/version.php'); /* @var string $wp_version */
			$this->alertedOnUnknownWordPressVersion = true;
			$added = $this->engine->addIssue(
				'coreUnknown',
				wfIssues::SEVERITY_MEDIUM,
				'coreUnknown' . $wp_version,
				'coreUnknown' . $wp_version,
				sprintf(/* translators: WordPress version. */ __('Unknown WordPress core version: %s', 'wordfence'), $wp_version),
				__("The core files scan will not be run because this version of WordPress is not currently indexed by Wordfence. This may be due to using a prerelease version or because the servers are still indexing a new release. If you are using an official WordPress release, this issue will automatically dismiss once the version is indexed and another scan is run.", 'wordfence'),
				array()
			);
			
			if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $this->haveIssues['coreUnknown'] = wfIssues::STATUS_PROBLEM; }
			else if ($this->haveIssues['coreUnknown'] != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $this->haveIssues['coreUnknown'] = wfIssues::STATUS_IGNORED; }
		}
		$this->initializeProperties();
	}
	private function initializeProperties() {
		$this->scanFileLogger = $this->getScanFileLogger();
		$this->knownFileExclude = wordfenceScanner::getExcludeFilePattern(wordfenceScanner::EXCLUSION_PATTERNS_KNOWN_FILES);
	}
	public function __sleep(){
		return array('totalFiles', 'totalDirs', 'totalData', 'stoppedOnFile', 'coreEnabled', 'pluginsEnabled', 'themesEnabled', 'malwareEnabled', 'coreUnknownEnabled', 'knownFiles', 'haveIssues', 'status', 'possibleMalware', 'scannedFiles', 'totalForks', 'alertedOnUnknownWordPressVersion', 'foldersProcessed', 'suspectedFiles', 'indexed', 'indexSize', 'currentIndex', 'coalescingIssues', 'pathMap');
	}
	public function __wakeup(){
		$this->db = new wfDB();
		$this->startTime = microtime(true);
		$this->totalForks++;
		
		$stored = wfConfig::get_ser('malwarePrefixes', array(), false);
		if (!isset($stored['prefixes'])) {
			$stored['prefixes'] = '';
		}
		$this->malwareData = $stored['prefixes'];
		
		$stored = wfConfig::get_ser('coreHashes', array(), false);
		if (!isset($stored['hashes'])) {
			$stored['hashes'] = '';
		}
		$this->coreHashesData = $stored['hashes'];
		$this->initializeProperties();
	}
	public function getSuspectedFiles() {
		return array_keys($this->suspectedFiles);
	}
	public function run($engine) {
		if($this->totalForks > 1000){
			throw new Exception(sprintf(/* translators: File path. */ __("Wordfence file scanner detected a possible infinite loop. Exiting on file: %s", 'wordfence'), $this->stoppedOnFile));
		}
		$this->engine = $engine;
		if (!$this->indexed) {
			$start = microtime(true);
			$indexedFiles = array();
			foreach ($this->scannedFiles as $file) {
				$this->_dirIndex($file, $indexedFiles);
			}
			$this->_serviceIndexQueue($indexedFiles, true);
			$this->indexed = true;
			unset($this->foldersEntered); $this->foldersEntered = array();
			unset($this->foldersProcessed); $this->foldersProcessed = array();
			$end = microtime(true);
			wordfence::status(4, 'info', sprintf(/* translators: Time in seconds. */ __("Index time: %s", 'wordfence'), ($end - $start)));
		}
		
		$this->_checkForTimeout();
		
		wordfence::status(4, 'info', __("Beginning file hashing", 'wordfence'));
		while ($file = $this->_nextFile()) {
			$this->processFile($file);
			wfUtils::afterProcessingFile();
			$this->_checkForTimeout($file);
		}

		$this->processFileRecords(); // Ensure all file records have actually been inserted before processing pending issues
		
		wordfence::status(4, 'info', __("Processing pending issues", 'wordfence'));
		$this->_processPendingIssues();
		
		wordfence::status(2, 'info', sprintf(/* translators: 1. Number of files. 2. Data in bytes. */ __('Analyzed %1$d files containing %2$s of data.', 'wordfence'), $this->totalFiles, wfUtils::formatBytes($this->totalData)));
		if($this->coreEnabled){ wfIssues::statusEnd($this->status['core'], $this->haveIssues['core']); $this->engine->scanController()->completeStage(wfScanner::STAGE_FILE_CHANGES, $this->haveIssues['core']); }
		if($this->themesEnabled){ wfIssues::statusEnd($this->status['themes'], $this->haveIssues['themes']); $this->engine->scanController()->completeStage(wfScanner::STAGE_FILE_CHANGES, $this->haveIssues['themes']); }
		if($this->pluginsEnabled){ wfIssues::statusEnd($this->status['plugins'], $this->haveIssues['plugins']); $this->engine->scanController()->completeStage(wfScanner::STAGE_FILE_CHANGES, $this->haveIssues['plugins']); }
		if($this->coreUnknownEnabled){ wfIssues::statusEnd($this->status['coreUnknown'], $this->haveIssues['coreUnknown']); $this->engine->scanController()->completeStage(wfScanner::STAGE_FILE_CHANGES, $this->haveIssues['coreUnknown']); }
		if(sizeof($this->possibleMalware) > 0){
			$malwareResp = $engine->api->binCall('check_possible_malware', json_encode($this->possibleMalware));
			if($malwareResp['code'] != 200){
				wfIssues::statusEndErr();
				throw new Exception(__("Invalid response from Wordfence API during check_possible_malware", 'wordfence'));
			}
			$malwareList = json_decode($malwareResp['data'], true);
			if(is_array($malwareList) && sizeof($malwareList) > 0){
				for($i = 0; $i < sizeof($malwareList); $i++){ 
					$file = $malwareList[$i][0];
					$md5 = $malwareList[$i][1];
					$name = $malwareList[$i][2];
					$added = $this->engine->addIssue(
						'file',
						wfIssues::SEVERITY_CRITICAL,
						$file,
						$md5,
						sprintf(/* translators: File path. */ __('This file is suspected malware: %s', 'wordfence'), $file),
						sprintf(/* translators: Malware name/title. */ __("This file's signature matches a known malware file. The title of the malware is '%s'. Immediately inspect this file using the 'View' option below and consider deleting it from your server.", 'wordfence'), $name),
						array(
							'file' => $file,
							'realFile' => array_key_exists($file, $this->pathMap) ? $this->pathMap[$file] : null,
							'cType' => 'unknown',
							'canDiff' => false,
							'canFix' => false,
							'canDelete' => true
							)
						);
					
					if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $this->haveIssues['malware'] = wfIssues::STATUS_PROBLEM; }
					else if ($this->haveIssues['malware'] != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $this->haveIssues['malware'] = wfIssues::STATUS_IGNORED; }
				}
			}
		}
		if($this->malwareEnabled){ wfIssues::statusEnd($this->status['malware'], $this->haveIssues['malware']); $this->engine->scanController()->completeStage(wfScanner::STAGE_MALWARE_SCAN, $this->haveIssues['malware']); }
		unset($this->knownFiles); $this->knownFiles = false;
	}
	private function _dirIndex($file, &$indexedFiles) {
		$realPath = $file->getRealPath();
		//Applies to files and dirs
		if (!is_readable($realPath))
			return;
		if (!$this->_shouldProcessFile($file))
			return;
		if (is_dir($realPath)) {
			if (isset($this->foldersEntered[$realPath]))
				return;
			
			$this->foldersEntered[$file->getRealPath()] = 1;
			
			$this->totalDirs++;
			try {
				foreach (wfFileUtils::getContents($realPath) as $child) {
					if (wfFileUtils::isCurrentOrParentDirectory($child)) {
						continue;
					}
					try {
						$child = $file->createChild($child);
					}
					catch (wfInvalidPathException $e) {
						wordfence::status(4, 'info', sprintf(__("Ignoring invalid scan file child: %s", 'wordfence'), $e->getPath()));
						continue;
					}
					if (is_file($child->getRealPath())) {
						$relativeFile = $child->getWordpressPath();
						if ($this->stoppedOnFile && $child->getRealPath() != $this->stoppedOnFile) {
							continue;
						}

						if (preg_match('/\.suspected$/i', $relativeFile)) { //Already iterating over all files in the search areas so generate this list here
							wordfence::status(4, 'info', sprintf(/* translators: File path. */ __("Found .suspected file: %s", 'wordfence'), $relativeFile));
							$this->suspectedFiles[$relativeFile] = 1;
						}

						$this->_checkForTimeout($child, $indexedFiles);
						if ($this->_shouldHashFile($child)) {
							$indexedFiles[] = $child;
						}
						else {
							wordfence::status(4, 'info', sprintf(/* translators: File path. */ __("Skipping unneeded hash: %s", 'wordfence'), (string) $child));
						}
						$this->_serviceIndexQueue($indexedFiles);
					}
					elseif (is_dir($child->getRealPath())) {
						$this->_dirIndex($child, $indexedFiles);
					}
				}
			}
			catch (wfInaccessibleDirectoryException $e) {
				wordfence::status(4, 'info', sprintf(/* translators: File path. */ __("Skipping inaccessible directory: %s", 'wordfence'), (string) $file));
			}
			
			$this->foldersProcessed[$realPath] = 1;
			unset($this->foldersEntered[$realPath]);
		}
		else {
			if (is_file($realPath)) {
				$relativeFile = $file->getWordpressPath();
				if ($this->stoppedOnFile && $realPath != $this->stoppedOnFile) {
					return;
				}
				
				if (preg_match('/\.suspected$/i', $relativeFile)) { //Already iterating over all files in the search areas so generate this list here
					wordfence::status(4, 'info', sprintf(/* translators: File path. */ __("Found .suspected file: %s", 'wordfence'), $relativeFile));
					$this->suspectedFiles[$relativeFile] = 1;
				}
				
				$this->_checkForTimeout($file, $indexedFiles);
				if ($this->_shouldHashFile($file)) {
					$indexedFiles[] = $file;
				}
				else {
					wordfence::status(4, 'info', sprintf(/* translators: File path. */ __("Skipping unneeded hash: %s", 'wordfence'), (string) $file));
				}
				$this->_serviceIndexQueue($indexedFiles);
			}
		}
	}
	private function _serviceIndexQueue(&$indexedFiles, $final = false) {
		$files = array();
		if (count($indexedFiles) > 500) {
			$files = array_splice($indexedFiles, 0, 500);
		}
		else if ($final) {
			$files = $indexedFiles;
			$indexedFiles = array();
		}

		$fileCount = count($files);
		if ($fileCount > 0) {
			$payload = array();
			foreach ($files as $file) {
				$payload[] = (string) $file;
				$payload[] = $file->getWordpressPath();
			}
			global $wpdb;
			$table_wfKnownFileList = wfDB::networkTable('wfKnownFileList');
			$query = substr("INSERT INTO {$table_wfKnownFileList} (path, wordpress_path) VALUES " . str_repeat("('%s', '%s'), ", count($files)), 0, -2);
			$wpdb->query($wpdb->prepare($query, $payload));
			$this->indexSize += $fileCount;
			wordfence::status(2, 'info', sprintf(/* translators: Number of files. */ __("%d files indexed", 'wordfence'), $this->indexSize));
		}
	}
	private function _loadFileBatch() {
		global $wpdb;
		$table_wfKnownFileList = wfDB::networkTable('wfKnownFileList');
		$rows = $wpdb->get_results($wpdb->prepare("SELECT id, path, wordpress_path FROM {$table_wfKnownFileList} WHERE id > %d ORDER BY id ASC LIMIT 500", $this->currentIndex));
		end($rows);
		while (($row = prev($rows)) !== false) {
			$this->currentFile = new wfScanFileListItem($row->id, $row->path, $row->wordpress_path, $this->currentFile);
		}
	}
	private function _nextFile() {
		if ($this->currentFile !== null)
			$this->currentFile = $this->currentFile->getNext();
		if ($this->currentFile === null) {
			$this->_loadFileBatch();
		}
		if ($this->currentFile !== null)
			$this->currentIndex = $this->currentFile->getId();
		return $this->currentFile;
	}
	private function _checkForTimeout($file = null, $indexQueue = false) {
		$realPath = $file ? $file->getRealPath() : null;
		if (($this->stoppedOnFile !== $realPath) && $this->engine->shouldFork()) { //max X seconds but don't allow fork if we're looking for the file we stopped on. Search mode is VERY fast.
			$this->processFileRecords(false);
			if ($indexQueue !== false) {
				$this->_serviceIndexQueue($indexQueue, true);
				$this->stoppedOnFile = $realPath;
				wordfence::status(4, 'info', sprintf(/* translators: File path. */ __("Forking during indexing: %s", 'wordfence'), (string) $file));
			}
			else {
				wordfence::status(4, 'info', sprintf(/* translators: PHP max execution time. */ __("Calling fork() from wordfenceHash with maxExecTime: %s", 'wordfence'), $this->engine->maxExecTime));
			}
			$this->engine->fork();
			//exits
		}
		
		if ($this->stoppedOnFile && $realPath != $this->stoppedOnFile && $indexQueue !== false) {
			return;
		}
		else if ($this->stoppedOnFile && $realPath == $this->stoppedOnFile) {
			$this->stoppedOnFile = false; //Continue indexing
		}
	}
	private function _shouldProcessFile($file) {
		$excludePatterns = wordfenceScanner::getExcludeFilePattern(wordfenceScanner::EXCLUSION_PATTERNS_USER);
		if ($excludePatterns) {
			foreach ($excludePatterns as $pattern) {
				if (preg_match($pattern, $file->getWordpressPath())) {
					return false;
				}
			}
		}
		
		$realPath = $file->getRealPath();
		if ($realPath === '/') {
			return false;
		}
		if (isset($this->foldersProcessed[$realPath])) {
			return false;
		}
		
		return true;
	}
	private function getScanFileLogger() {
		if (function_exists('memory_get_usage')) {
			return function($realPath) {
				wordfence::status(4, 'info', sprintf(/* translators: 1. File path. 2. Memory in bytes. */ __('Scanning: %1$s (Mem:%2$s)', 'wordfence'), $realPath, sprintf('%.1fM', memory_get_usage(true) / (1024 * 1024))));
			};
		}
		else {
			return function($realPath) {
				wordfence::status(4, 'info', sprintf(/* translators: File path. */ __("Scanning: %s", 'wordfence'), $realPath));
			};
		}
	}
	private function isKnownFileScanAllowed($realPath) {
		if ($this->knownFileExclude) {
			foreach ($this->knownFileExclude as $pattern) {
				if (preg_match($pattern, $realPath)) {
					return false;
				}
			}
		}
		return true;
	}
	private function getKnownFileType($properties) {
		if ($this->isKnownFileScanAllowed($properties->realPath)) {
			foreach (self::$KNOWN_FILE_TYPES as $type) {
				if (isset($this->knownFiles[$type][$properties->wordpressPath]))
					return $type;
			}
			if ($this->coreUnknownEnabled && !$this->alertedOnUnknownWordPressVersion)
				return self::KNOWN_FILE_OTHER;
		}
		return null;
	}
	private function checkKnownCoreFile($properties) {
		if (strtoupper($this->knownFiles['core'][$properties->wordpressPath]) == $properties->shac) {
			$properties->freeContent();
			return true;
		}
		else {
			if ($this->coreEnabled) {
				if ($properties->loadContent() && (!preg_match('/<\?' . 'php[\r\n\s\t]*\/\/[\r\n\s\t]*Silence is golden\.[\r\n\s\t]*(?:\?>)?[\r\n\s\t]*$/s', $properties->content))) {
					$this->engine->addPendingIssue(
						'knownfile',
						wfIssues::SEVERITY_HIGH,
						'coreModified' . $properties->wordpressPath,
						'coreModified' . $properties->wordpressPath . $properties->md5,
						sprintf(/* translators: File path. */ __('WordPress core file modified: %s', 'wordfence'), $properties->wordpressPath),
						__("This WordPress core file has been modified and differs from the original file distributed with this version of WordPress.", 'wordfence'),
						array(
							'file' => $properties->wordpressPath,
							'realFile' => $properties->realPath,
							'cType' => 'core',
							'canDiff' => true,
							'canFix' => true,
							'canDelete' => false,
							'haveIssues' => 'core'
						)
					);
				}
			}
			return false;
		}
	}
	private function checkKnownPluginFile($properties) {
		if (in_array($properties->shac, $this->knownFiles[self::KNOWN_FILE_PLUGIN][$properties->wordpressPath])) {
			return true;
		}
		else {
			if ($this->pluginsEnabled) {
				$options = $this->engine->scanController()->scanOptions();
				$shouldGenerateIssue = true;
				if (!$options['scansEnabled_highSense'] && preg_match('~/readme\.(?:txt|md)$~i', $properties->wordpressPath)) { //Don't generate issues for changed readme files unless high sensitivity is on
					$shouldGenerateIssue = false;
				}

				if ($shouldGenerateIssue) {
					$itemName = $this->knownFiles['plugins'][$properties->wordpressPath][0];
					$itemVersion = $this->knownFiles['plugins'][$properties->wordpressPath][1];
					$cKey = $this->knownFiles['plugins'][$properties->wordpressPath][2];
					$this->engine->addPendingIssue(
						'knownfile',
						wfIssues::SEVERITY_MEDIUM,
						'modifiedplugin' . $properties->wordpressPath,
						'modifiedplugin' . $properties->wordpressPath . $properties->md5,
						sprintf(/* translators: File path. */ __('Modified plugin file: %s', 'wordfence'), $properties->wordpressPath),
						sprintf(
							/* translators: 1. Plugin name. 2. Plugin version. 3. Support URL. */
							__('This file belongs to plugin "%1$s" version "%2$s" and has been modified from the file that is distributed by WordPress.org for this version. Please use the link to see how the file has changed. If you have modified this file yourself, you can safely ignore this warning. If you see a lot of changed files in a plugin that have been made by the author, then try uninstalling and reinstalling the plugin to force an upgrade. Doing this is a workaround for plugin authors who don\'t manage their code correctly. <a href="%3$s" target="_blank" rel="noopener noreferrer">Learn More<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'),
							$itemName,
							$itemVersion,
							wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_RESULT_MODIFIED_PLUGIN)
						),
						array(
							'file' => $properties->wordpressPath,
							'realFile' => $properties->realPath,
							'cType' => 'plugin',
							'canDiff' => true,
							'canFix' => true,
							'canDelete' => false,
							'cName' => $itemName,
							'cVersion' => $itemVersion,
							'cKey' => $cKey,
							'haveIssues' => 'plugins'
						)
					);
				}
			}
			return false;
		}
	}
	private function checkKnownThemeFile($properties) {
		if (in_array($properties->shac, $this->knownFiles[self::KNOWN_FILE_THEME][$properties->wordpressPath])) {
			return true;
		}
		else {
			if ($this->themesEnabled) {
				$options = $this->engine->scanController()->scanOptions();
				$shouldGenerateIssue = true;
				if (!$options['scansEnabled_highSense'] && preg_match('~/readme\.(?:txt|md)$~i', $properties->wordpressPath)) { //Don't generate issues for changed readme files unless high sensitivity is on
					$shouldGenerateIssue = false;
				}

				if ($shouldGenerateIssue) {
					$itemName = $this->knownFiles['themes'][$properties->wordpressPath][0];
					$itemVersion = $this->knownFiles['themes'][$properties->wordpressPath][1];
					$cKey = $this->knownFiles['themes'][$properties->wordpressPath][2];
					$this->engine->addPendingIssue(
						'knownfile',
						wfIssues::SEVERITY_MEDIUM,
						'modifiedtheme' . $properties->wordpressPath,
						'modifiedtheme' . $properties->wordpressPath . $properties->md5,
						sprintf(/* translators: File path. */ __('Modified theme file: %s', 'wordfence'), $properties->wordpressPath),
						sprintf(
							/* translators: 1. Plugin name. 2. Plugin version. 3. Support URL. */
							__('This file belongs to theme "%1$s" version "%2$s" and has been modified from the original distribution. It is common for site owners to modify their theme files, so if you have modified this file yourself you can safely ignore this warning. <a href="%3$s" target="_blank" rel="noopener noreferrer">Learn More<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'),
							$itemName,
							$itemVersion,
							wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_RESULT_MODIFIED_THEME)
						),
						array(
							'file' => $properties->wordpressPath,
							'realFile' => $properties->realPath,
							'cType' => 'theme',
							'canDiff' => true,
							'canFix' => true,
							'canDelete' => false,
							'cName' => $itemName,
							'cVersion' => $itemVersion,
							'cKey' => $cKey,
							'haveIssues' => 'themes'
						)
					);
				}
			}
			return false;
		}
	}
	private function checkKnownFileOther($properties) {
		$restrictedWordPressFolders = array(ABSPATH . 'wp-admin/', ABSPATH . WPINC . '/');
		$added = false;
		foreach ($restrictedWordPressFolders as $path) {
			if (strpos($properties->realPath, $path) === 0) {
				if ($this->isPreviousCoreFile($properties->shac)) {
					$added = $this->engine->addIssue(
						'knownfile',
						wfIssues::SEVERITY_LOW,
						'coreUnknown' . $properties->wordpressPath,
						'coreUnknown' . $properties->wordpressPath . $properties->md5,
						sprintf(/* translators: File path. */ __('Old WordPress core file not removed during update: %s', 'wordfence'), $properties->wordpressPath),
						__('This file is in a WordPress core location but is from an older version of WordPress and not used with your current version. Hosting or permissions issues can cause these files to get left behind when WordPress is updated and they should be removed if possible.', 'wordfence'),
						array(
							'file' => $properties->wordpressPath,
							'realFile' => $properties->realPath,
							'cType' => 'core',
							'canDiff' => false,
							'canFix' => false,
							'canDelete' => true,
						)
					);
				}
				else if (preg_match('#/php\.ini$#', $properties->wordpressPath)) {
					$this->engine->addPendingIssue(
						'knownfile',
						wfIssues::SEVERITY_HIGH,
						'coreUnknown' . $properties->wordpressPath,
						'coreUnknown' . $properties->wordpressPath . $properties->md5,
						sprintf(/* translators: File path. */ __('Unknown file in WordPress core: %s', 'wordfence'), $properties->wordpressPath),
						__('This file is in a WordPress core location but is not distributed with this version of WordPress. This scan often includes files left over from a previous WordPress version, but it may also find files added by another plugin, files added by your host, or malicious files added by an attacker.', 'wordfence'),
						array(
							'file' => $properties->wordpressPath,
							'realFile' => $properties->realPath,
							'cType' => 'core',
							'canDiff' => false,
							'canFix' => false,
							'canDelete' => true,
							'coalesce' => 'php.ini',
							'learnMore' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_RESULT_UNKNOWN_FILE_CORE),
							'haveIssues' => 'coreUnknown',
						)
					);
				}
				else {
					$added = $this->engine->addIssue(
						'knownfile',
						wfIssues::SEVERITY_HIGH,
						'coreUnknown' . $properties->wordpressPath,
						'coreUnknown' . $properties->wordpressPath . $properties->md5,
						sprintf(/* translators: File path. */ __('Unknown file in WordPress core: %s', 'wordfence'), $properties->wordpressPath),
						sprintf(/* translators: Support URL. */ __('This file is in a WordPress core location but is not distributed with this version of WordPress. This scan often includes files left over from a previous WordPress version, but it may also find files added by another plugin, files added by your host, or malicious files added by an attacker. <a href="%s" target="_blank" rel="noopener noreferrer">Learn More<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_RESULT_UNKNOWN_FILE_CORE)),
						array(
							'file' => $properties->wordpressPath,
							'realFile' => $properties->realPath,
							'cType' => 'core',
							'canDiff' => false,
							'canFix' => false,
							'canDelete' => true,
						)
					);
				}
			}
		}

		if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $this->haveIssues['coreUnknown'] = wfIssues::STATUS_PROBLEM; }
		else if ($this->haveIssues['coreUnknown'] != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $this->haveIssues['coreUnknown'] = wfIssues::STATUS_IGNORED; }
		return false;
	}
	private function checkKnownFile($properties, $type) {
		switch ($type) {
		case self::KNOWN_FILE_CORE:
			return $this->checkKnownCoreFile($properties);
		case self::KNOWN_FILE_PLUGIN:
			return $this->checkKnownPluginFile($properties);
		case self::KNOWN_FILE_THEME:
			return $this->checkKnownThemeFile($properties);
		case self::KNOWN_FILE_OTHER:
			return $this->checkKnownFileOther($properties);
		}
	}
	private function recordFile($properties) {
		$this->fileRecords[$properties->wordpressPathMd5] = $properties;
		$this->fileRecordCount++;
		if ($this->fileRecordCount >= self::MAX_QUEUED_RECORDS)
			$this->processFileRecords();
	}
	private function processFileRecords($check = true) {
		if ($this->fileRecordCount == 0)
			return;
		$this->db->insert(
			wfDB::networkTable('wfFileMods'),
			[
				'filename' => '%s',
				'real_path' => '%s',
				'filenameMD5' => 'UNHEX(%s)',
				'knownFile' => '%d',
				'newMD5' => 'UNHEX(%s)',
				'SHAC' => 'UNHEX(%s)',
			],
			array_map(function($properties) {
				return [
					$properties->wordpressPath,
					$properties->realPath,
					$properties->wordpressPathMd5,
					(int) $properties->known,
					$properties->md5,
					$properties->shac,
				];
			}, $this->fileRecords),
			[
				'newMD5',
				'SHAC',
				'knownFile'
			]
		);
		$this->fileRecords = [];
		$this->fileRecordCount = 0;
	}
	private function processFile($file) {
		$properties = $file->initializeProperties();
		try {
			$properties->realPath = $file->getRealPath();
			$wordpressPath = $file->getWordpressPath();
			if (wfUtils::fileTooBig($properties->realPath, $fileSize, $properties->handle)) {
				wordfence::status(4, 'info', sprintf(/* translators: File path. */ __("Skipping file larger than max size: %s", 'wordfence'), $properties->realPath));
				return;
			}

			call_user_func($this->scanFileLogger, $properties->realPath);

			$knownFileType = $this->getKnownFileType($properties);
			$allowKnownFileScan = $knownFileType !== null;

			$hashed = self::hashFile($properties->realPath, $properties);
			$this->engine->scanController()->incrementSummaryItem(wfScanner::SUMMARY_SCANNED_FILES);
			if (!$hashed) {
				//wordfence::status(2, 'error', "Could not gen hash for file (probably because we don't have permission to access the file): $properties->realPath");
				return;
			}

			$properties->known = $allowKnownFileScan && $this->checkKnownFile($properties, $knownFileType);

			if($this->malwareEnabled && $this->isMalwarePrefix($properties->md5)){
				$this->possibleMalware[] = array($properties->wordpressPath, $properties->md5);
				$this->pathMap[$properties->wordpressPath] = $properties->realPath;
			}

			$this->recordFile($properties);

			$this->totalFiles++;
			$this->totalData += $fileSize;
			if($this->totalFiles % 100 === 0){
				wordfence::status(2, 'info', sprintf(
					/* translators: 1. Number of files. 2. Data in bytes. */
					__('Analyzed %1$d files containing %2$s of data so far', 'wordfence'),
					$this->totalFiles,
					wfUtils::formatBytes($this->totalData)
				));
			}
		}
		finally {
			$properties->releaseHandle();
		}
	}
	private function flagSafeFiles($filenames) {
		$fileModsTable = wfDB::networkTable('wfFileMods');
		$allSafeFiles = [];
		$existingSafeFiles = $this->db->selectAll(
			$fileModsTable,
			[
				'filename'
			],
			[
				'filename' => $filenames,
				'isSafeFile' => '1'
			]
		);
		foreach ($existingSafeFiles as $row) {
			$allSafeFiles[$row[0]] = true;
		}
		$remainingFilenames = [];
		foreach ($filenames as $filename) {
			if (!array_key_exists($filename, $allSafeFiles))
				$remainingFilenames[] = $filename;
		}
		$filenames = $remainingFilenames;
		do {
			$results = $this->db->select(
				$fileModsTable,
				[
					'HEX(filenameMD5)',
					'UPPER(HEX(SHAC))',
					'filename'
				],
				[
					'filename' => $filenames,
					'isSafeFile' => '?'
				]
			);
			$hashes = array_column($results, 1);
			$safeHashes = array_flip($this->engine->isSafeFile($hashes));
			$safeFiles = [];
			$unsafeFiles = [];
			foreach ($results as $row) {
				$filenameMD5Hex = $row[0];
				if (array_key_exists($row[1], $safeHashes)) {
					$safeFiles[] = $filenameMD5Hex;
					$allSafeFiles[$row[2]] = true;
				}
				else {
					$unsafeFiles[] = $filenameMD5Hex;
				}
			}
			foreach (['1' => $safeFiles, '0' => $unsafeFiles] as $safe => $files) {
				if (count($files) == 0)
					continue;
				$this->db->update(
					$fileModsTable,
					[
						'isSafeFile' => [ '%s', $safe ]
					],
					[
						'filenameMD5' => $files
					],
					[
						'filenameMD5' => 'UNHEX(%s)'
					]
				);
			}
		} while (!empty($results));
		return $allSafeFiles;
	}
	private function _processPendingIssues() {
		$count = $this->engine->getPendingIssueCount();
		$offset = 0;
		while ($offset < $count) {
			$issues = $this->engine->getPendingIssues($offset);
			if (count($issues) == 0) {
				break;
			}

			$safeFiles = $this->flagSafeFiles(array_map(function($i) { return $i['data']['file']; }, $issues));
			
			//Migrate non-safe file issues to official issues and begin coalescing tagged issues
			foreach ($issues as &$i) {
				if (!array_key_exists($i['data']['file'], $safeFiles)) {
					$haveIssuesType = $i['data']['haveIssues'];
					if (isset($i['data']['coalesce'])) {
						$key = $i['data']['coalesce'];
						if (!isset($this->coalescingIssues[$key])) { $this->coalescingIssues[$key] = array('count' => 0, 'issue' => $i); }
						$this->coalescingIssues[$key]['count']++;
					}
					else {
						$added = $this->engine->addIssue(
							$i['type'],
							$i['severity'],
							$i['ignoreP'],
							$i['ignoreC'],
							$i['shortMsg'],
							$i['longMsg'],
							$i['data'],
							true //Prevent ignoreP and ignoreC from being hashed again
						);
						if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $this->haveIssues[$haveIssuesType] = wfIssues::STATUS_PROBLEM; }
						else if ($this->haveIssues[$haveIssuesType] != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $this->haveIssues[$haveIssuesType] = wfIssues::STATUS_IGNORED; }
					}
				}
			}
			
			$offset += count($issues);
			$this->engine->checkForKill();
		}
		
		//Insert the coalesced issues (currently just multiple php.ini in system directories)
		foreach ($this->coalescingIssues as $c) {
			$count = $c['count'];
			$i = $c['issue'];
			$haveIssuesType = $i['data']['haveIssues'];
			$added = $this->engine->addIssue(
				$i['type'],
				$i['severity'],
				$i['ignoreP'],
				$i['ignoreC'],
				$i['shortMsg'] . ($count > 1 ? ' ' . sprintf(/* translators: Number of scan results. */ __('(+ %d more)', 'wordfence'), $count - 1) : ''),
				$i['longMsg'] . ($count > 1 ? ' ' . ($count > 2 ? sprintf(/* translators: Number of files. */ __('%d more similar files were found.', 'wordfence'), $count - 1) : __('1 more similar file was found.', 'wordfence')) : '') . (isset($i['data']['learnMore']) ? ' ' . sprintf(__('<a href="%s" target="_blank" rel="noopener noreferrer">Learn More<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'), esc_attr($i['data']['learnMore'])) : ''),
				$i['data'],
				true //Prevent ignoreP and ignoreC from being hashed again
			);
			if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $this->haveIssues[$haveIssuesType] = wfIssues::STATUS_PROBLEM; }
			else if ($this->haveIssues[$haveIssuesType] != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $this->haveIssues[$haveIssuesType] = wfIssues::STATUS_IGNORED; }
		}
	}
	public static function hashFile($file, &$properties) {
		if (!$properties->resetHandle()) {
			return false;
		}
		$md5Context = hash_init('md5');
		$sha256Context = hash_init('sha256');
		while (!feof($properties->handle)) {
			$data = fread($properties->handle, 65536);
			if ($data === false) {
				return false;
			}
			hash_update($md5Context, $data);
			hash_update($sha256Context, str_replace(array("\n","\r","\t"," "),"", $data));
		}
		$properties->md5 = strtoupper(hash_final($md5Context, false));
		$properties->shac = strtoupper(hash_final($sha256Context, false));
		return true;
	}
	private function _shouldHashFile($file) {
		$wordpressPath = $file->getWordpressPath();

		//Core File, return true
		if ((isset($this->knownFiles['core']) && isset($this->knownFiles['core'][$wordpressPath])) ||
			(isset($this->knownFiles['plugins']) && isset($this->knownFiles['plugins'][$wordpressPath])) ||
			(isset($this->knownFiles['themes']) && isset($this->knownFiles['themes'][$wordpressPath]))) {
			return true;
		}
		
		//Excluded file, return false
		$excludePatterns = wordfenceScanner::getExcludeFilePattern(wordfenceScanner::EXCLUSION_PATTERNS_USER | wordfenceScanner::EXCLUSION_PATTERNS_MALWARE); 
		if ($excludePatterns) {
			foreach ($excludePatterns as $pattern) {
				if (preg_match($pattern, $wordpressPath)) {
					return false;
				}
			}
		}
		
		//Unknown file in a core location
		if ($this->coreUnknownEnabled && !$this->alertedOnUnknownWordPressVersion) {
			$restrictedWordPressFolders = array(ABSPATH . 'wp-admin/', ABSPATH . WPINC . '/');
			foreach ($restrictedWordPressFolders as $path) {
				if (strpos($file->getRealPath(), $path) === 0) {
					return true;
				}
			}
		}
		
		//Determine treatment
		$fileExt = '';
		if (preg_match('/\.([a-zA-Z\d\-]{1,7})$/', $wordpressPath, $matches)) {
			$fileExt = strtolower($matches[1]);
		}
		$isPHP = false;
		if (preg_match('/\.(?:php(?:\d+)?|phtml)(\.|$)/i', $wordpressPath)) {
			$isPHP = true;
		}
		$isHTML = false;
		if (preg_match('/\.(?:html?)(\.|$)/i', $wordpressPath)) {
			$isHTML = true;
		}
		$isJS = false;
		if (preg_match('/\.(?:js|svg)(\.|$)/i', $wordpressPath)) {
			$isJS = true;
		}
		
		$options = $this->engine->scanController()->scanOptions();
		
		//If scan images is disabled, only allow .js through
		if (!$isPHP && preg_match('/^(?:jpg|jpeg|mp3|avi|m4v|mov|mp4|gif|png|tiff?|svg|sql|js|tbz2?|bz2?|xz|zip|tgz|gz|tar|log|err\d+)$/', $fileExt)) {
			if (!$options['scansEnabled_scanImages'] && !$isJS) {
				return false;
			}
		}
		
		//If high sensitivity is disabled, don't allow .sql
		if (strtolower($fileExt) == 'sql') {
			if (!$options['scansEnabled_highSense']) {
				return false;
			}
		}
		
		//Treating as binary, return true
		$treatAsBinary = ($isPHP || $isHTML || $options['scansEnabled_scanImages']);
		if ($treatAsBinary) {
			return true;
		}
		
		//Will be malware scanned, return true
		if ($isJS) {
			return true;
		}
		
		return false;
	}
	private function isMalwarePrefix($hexMD5){
		$hasPrefix = $this->_binaryListContains($this->malwareData, wfUtils::hex2bin($hexMD5), 4);
		return $hasPrefix !== false;
	}
	private function isPreviousCoreFile($hexContentsSHAC) {
		$hasPrefix = $this->_binaryListContains($this->coreHashesData, wfUtils::hex2bin($hexContentsSHAC), 32);
		return $hasPrefix !== false;
	}
	
	/**
	 * @param $binaryList The binary list to search, sorted as a binary string.
	 * @param $needle The binary needle to search for.
	 * @param int $size The byte size of each item in the list.
	 * @return bool|int false if not found, otherwise the index in the list
	 */
	private function _binaryListContains($binaryList, $needle, $size /* bytes */) {
		$p = substr($needle, 0, $size);
		
		$count = ceil(wfWAFUtils::strlen($binaryList) / $size);
		$low = 0;
		$high = $count - 1;
		
		while ($low <= $high) {
			$mid = (int) (($high + $low) / 2);
			$val = wfWAFUtils::substr($binaryList, $mid * $size, $size);
			$cmp = strcmp($val, $p);
			if ($cmp < 0) {
				$low = $mid + 1;
			}
			else if ($cmp > 0) {
				$high = $mid - 1;
			}
			else {
				return $mid;
			}
		}
		
		return false;
	}
	
}lib/.htaccess000064400000000542150755146450007125 0ustar00<IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{REQUEST_URI} \.php$
        RewriteRule .* - [F,L,NC]
</IfModule>
<IfModule !mod_rewrite.c>
	<FilesMatch "\.php$">
	<IfModule mod_authz_core.c>
		Require all denied
	</IfModule>
	<IfModule !mod_authz_core.c>
		Order deny,allow
		Deny from all
	</IfModule>
	</FilesMatch>
</IfModule>lib/wfWebsite.php000064400000003400150755146450007773 0ustar00<?php

class wfWebsiteEphemeralPayloadRetrievalException extends RuntimeException {
}

class wfWebsiteEphemeralPayloadExpiredException extends wfWebsiteEphemeralPayloadRetrievalException {

	const STATUS = 404;

	public function __construct() {
		parent::__construct('Ephemeral payload expired', self::STATUS);
	}

}

class wfWebsiteEphemeralPayloadRateLimitedException extends wfWebsiteEphemeralPayloadRetrievalException {

	const STATUS = 429;

	public function __construct() {
		parent::__construct('Request limit reached', self::STATUS);
	}

}

/**
 * Utilities related to the Wordfence website (wordfence.com)
 */
class wfWebsite {

	private static $INSTANCE = null;

	private $url;

	private function __construct($url) {
		$this->url = trailingslashit($url);
	}

	public function getUrl($relative) {
		return $this->url . $relative;
	}

	public function retrievePayload($token, &$expired) {
		$url = $this->getUrl("api/ephemeral-payload/$token");
		$response = wp_remote_get($url);
		$status = wp_remote_retrieve_response_code($response);
		if (!is_wp_error($response) && $status === 200) {
			return wp_remote_retrieve_body($response);
		}
		switch ($status) {
		case wfWebsiteEphemeralPayloadExpiredException::STATUS:
			throw new wfWebsiteEphemeralPayloadExpiredException();
		case wfWebsiteEphemeralPayloadRateLimitedException::STATUS:
			throw new wfWebsiteEphemeralPayloadRateLimitedException();
		default:
			throw new wfWebsiteEphemeralPayloadRetrievalException('Failed to retrieve ephemeral payload', (int) $status);
		}
	}

	public static function getInstance() {
		if (self::$INSTANCE === null)
			self::$INSTANCE = new self(WORDFENCE_WWW_BASE_URL);
		return self::$INSTANCE;
	}

	public static function url($relative) {
		return self::getInstance()->getUrl($relative);
	}

}lib/wfCentralAPI.php000064400000061636150755146450010332 0ustar00<?php

class wfCentralAPIRequest {
	/**
	 * @var string
	 */
	private $endpoint;
	/**
	 * @var string
	 */
	private $method;
	/**
	 * @var null
	 */
	private $token;
	/**
	 * @var array
	 */
	private $body;
	/**
	 * @var array
	 */
	private $args;


	/**
	 * @param string $endpoint
	 * @param string $method
	 * @param string|null $token
	 * @param array $body
	 * @param array $args
	 */
	public function __construct($endpoint, $method = 'GET', $token = null, $body = array(), $args = array()) {
		$this->endpoint = $endpoint;
		$this->method = $method;
		$this->token = $token;
		$this->body = $body;
		$this->args = $args;
	}
	
	/**
	 * Handles an internal error when making a Central API request (e.g., a second sodium_compat library with an
	 * incompatible interface loading instead or in addition to ours).
	 * 
	 * @param Exception|Throwable $e
	 */
	public static function handleInternalCentralAPIError($e) {
		error_log('Wordfence encountered an internal Central API error: ' . $e->getMessage());
		error_log('Wordfence stack trace: ' . $e->getTraceAsString());
	}

	public function execute() {
		$args = array(
			'timeout' => 10,
		);
		$args = wp_parse_args($this->getArgs(), $args);
		$args['method'] = $this->getMethod();
		if (empty($args['headers'])) {
			$args['headers'] = array();
		}

		$token = $this->getToken();
		if ($token) {
			$args['headers']['Authorization'] = 'Bearer ' . $token;
		}
		if ($this->getBody()) {
			$args['headers']['Content-Type'] = 'application/json';
			$args['body'] = json_encode($this->getBody());
		}

		$http = _wp_http_get_object();
		$response = $http->request(WORDFENCE_CENTRAL_API_URL_SEC . $this->getEndpoint(), $args);

		if (!is_wp_error($response)) {
			$body = wp_remote_retrieve_body($response);
			$statusCode = wp_remote_retrieve_response_code($response);

			// Check if site has been disconnected on Central's end, but the plugin is still trying to connect.
			if ($statusCode === 404 && strpos($body, 'Site has been disconnected') !== false) {
				// Increment attempt count.
				$centralDisconnectCount = get_site_transient('wordfenceCentralDisconnectCount');
				set_site_transient('wordfenceCentralDisconnectCount', ++$centralDisconnectCount, 86400);

				// Once threshold is hit, disconnect Central.
				if ($centralDisconnectCount > 3) {
					wfRESTConfigController::disconnectConfig();
				}
			}
		}

		return new wfCentralAPIResponse($response);
	}

	/**
	 * @return string
	 */
	public function getEndpoint() {
		return $this->endpoint;
	}

	/**
	 * @param string $endpoint
	 */
	public function setEndpoint($endpoint) {
		$this->endpoint = $endpoint;
	}

	/**
	 * @return string
	 */
	public function getMethod() {
		return $this->method;
	}

	/**
	 * @param string $method
	 */
	public function setMethod($method) {
		$this->method = $method;
	}

	/**
	 * @return null
	 */
	public function getToken() {
		return $this->token;
	}

	/**
	 * @param null $token
	 */
	public function setToken($token) {
		$this->token = $token;
	}

	/**
	 * @return array
	 */
	public function getBody() {
		return $this->body;
	}

	/**
	 * @param array $body
	 */
	public function setBody($body) {
		$this->body = $body;
	}

	/**
	 * @return array
	 */
	public function getArgs() {
		return $this->args;
	}

	/**
	 * @param array $args
	 */
	public function setArgs($args) {
		$this->args = $args;
	}
}

class wfCentralAPIResponse {

	public static function parseErrorJSON($json) {
		$data = json_decode($json, true);
		if (is_array($data) && array_key_exists('message', $data)) {
			return $data['message'];
		}
		return $json;
	}

	/**
	 * @var array|null
	 */
	private $response;

	/**
	 * @param array $response
	 */
	public function __construct($response = null) {
		$this->response = $response;
	}

	public function getStatusCode() {
		return wp_remote_retrieve_response_code($this->getResponse());
	}

	public function getBody() {
		return wp_remote_retrieve_body($this->getResponse());
	}

	public function getJSONBody() {
		return json_decode($this->getBody(), true);
	}

	public function isError() {
		if (is_wp_error($this->getResponse())) {
			return true;
		}
		$statusCode = $this->getStatusCode();
		return !($statusCode >= 200 && $statusCode < 300);
	}

	public function returnErrorArray() {
		return array(
			'err'      => 1,
			'errorMsg' => sprintf(
				/* translators: 1. HTTP status code. 2. Error message. */
				__('HTTP %1$d received from Wordfence Central: %2$s', 'wordfence'),
				$this->getStatusCode(), $this->parseErrorJSON($this->getBody())),
		);
	}

	/**
	 * @return array|null
	 */
	public function getResponse() {
		return $this->response;
	}

	/**
	 * @param array|null $response
	 */
	public function setResponse($response) {
		$this->response = $response;
	}
}


class wfCentralAuthenticatedAPIRequest extends wfCentralAPIRequest {

	private $retries = 3;

	/**
	 * @param string $endpoint
	 * @param string $method
	 * @param array $body
	 * @param array $args
	 */
	public function __construct($endpoint, $method = 'GET', $body = array(), $args = array()) {
		parent::__construct($endpoint, $method, null, $body, $args);
	}

	/**
	 * @return mixed|null
	 * @throws wfCentralAPIException
	 */
	public function getToken() {
		$token = parent::getToken();
		if ($token) {
			return $token;
		}

		$token = get_transient('wordfenceCentralJWT' . wfConfig::get('wordfenceCentralSiteID'));
		if ($token) {
			return $token;
		}

		for ($i = 0; $i < $this->retries; $i++) {
			try {
				$token = $this->fetchToken();
				break;
			} catch (wfCentralConfigurationException $e) {
				wfConfig::set('wordfenceCentralConfigurationIssue', true);
				throw new wfCentralAPIException(__('Fetching token for Wordfence Central authentication due to configuration issue.', 'wordfence'));
			} catch (wfCentralAPIException $e) {
				continue;
			}
		}
		if (empty($token)) {  
			if (isset($e)) {
				throw $e;
			} else {
				throw new wfCentralAPIException(__('Unable to authenticate with Wordfence Central.', 'wordfence'));
			}
		}
		$tokenContents = wfJWT::extractTokenContents($token);

		if (!empty($tokenContents['body']['exp'])) {
			set_transient('wordfenceCentralJWT' . wfConfig::get('wordfenceCentralSiteID'), $token, $tokenContents['body']['exp'] - time());
		}
		wfConfig::set('wordfenceCentralConfigurationIssue', false);
		return $token;
	}

	public function fetchToken() {
		require_once(WORDFENCE_PATH . '/lib/sodium_compat_fast.php');

		$defaultArgs = array(
			'timeout' => 6,
		);
		$siteID = wfConfig::get('wordfenceCentralSiteID');
		if (!$siteID) {
			throw new wfCentralAPIException(__('Wordfence Central site ID has not been created yet.', 'wordfence'));
		}
		$secretKey = wfConfig::get('wordfenceCentralSecretKey');
		if (!$secretKey) {
			throw new wfCentralAPIException(__('Wordfence Central secret key has not been created yet.', 'wordfence'));
		}

		// Pull down nonce.
		$request = new wfCentralAPIRequest(sprintf('/site/%s/login', $siteID), 'GET', null, array(), $defaultArgs);
		$nonceResponse = $request->execute();
		if ($nonceResponse->isError()) {
			$errorArray = $nonceResponse->returnErrorArray();
			throw new wfCentralAPIException($errorArray['errorMsg']);
		}
		$body = $nonceResponse->getJSONBody();
		if (!is_array($body) || !isset($body['nonce'])) {
			throw new wfCentralAPIException(__('Invalid response received from Wordfence Central when fetching nonce.', 'wordfence'));
		}
		$nonce = $body['nonce'];

		// Sign nonce to pull down JWT.
		$data = $nonce . '|' . $siteID;
		try {
			$signature = ParagonIE_Sodium_Compat::crypto_sign_detached($data, $secretKey);
		}
		catch (SodiumException $e) {
			throw new wfCentralConfigurationException('Signing failed, likely due to malformed secret key', $e);
		}
		$request = new wfCentralAPIRequest(sprintf('/site/%s/login', $siteID), 'POST', null, array(
			'data'      => $data,
			'signature' => ParagonIE_Sodium_Compat::bin2hex($signature),
		), $defaultArgs);
		$authResponse = $request->execute();
		if ($authResponse->isError()) {
			$errorArray = $authResponse->returnErrorArray();
			throw new wfCentralAPIException($errorArray['errorMsg']);
		}
		$body = $authResponse->getJSONBody();
		if (!is_array($body)) {
			throw new wfCentralAPIException(__('Invalid response received from Wordfence Central when fetching token.', 'wordfence'));
		}
		if (!isset($body['jwt'])) { // Possible authentication error.
			throw new wfCentralAPIException(__('Unable to authenticate with Wordfence Central.', 'wordfence'));
		}
		return $body['jwt'];
	}
}

class wfCentralAPIException extends Exception {

}

class wfCentralConfigurationException extends RuntimeException {

	public function __construct($message, $previous = null) {
		parent::__construct($message, 0, $previous);
	}

}

class wfCentral {

	/**
	 * @return bool
	 */
	public static function isSupported() {
		return function_exists('register_rest_route') && version_compare(phpversion(), '5.3', '>=');
	}

	/**
	 * @return bool
	 */
	public static function isConnected() {
		return self::isSupported() && ((bool) self::_isConnected());
	}

	/**
	 * @return bool
	 */
	public static function isPartialConnection() {
		return !self::_isConnected() && wfConfig::get('wordfenceCentralSiteID');
	}

	public static function _isConnected($forceUpdate = false) {
		static $isConnected;
		if (!isset($isConnected) || $forceUpdate) {
			$isConnected = wfConfig::get('wordfenceCentralConnected', false);
		}
		return $isConnected;
	}

	/**
	 * @param array $issue
	 * @return bool|wfCentralAPIResponse
	 */
	public static function sendIssue($issue) {
		return self::sendIssues(array($issue));
	}

	/**
	 * @param $issues
	 * @return bool|wfCentralAPIResponse
	 */
	public static function sendIssues($issues) {
		$data = array();
		foreach ($issues as $issue) {
			$issueData = array(
				'type'       => 'issue',
				'attributes' => $issue,
			);
			if (array_key_exists('id', $issueData)) {
				$issueData['id'] = $issue['id'];
			}
			$data[] = $issueData;
		}

		$siteID = wfConfig::get('wordfenceCentralSiteID');
		$request = new wfCentralAuthenticatedAPIRequest('/site/' . $siteID . '/issues', 'POST', array(
			'data' => $data,
		));
		try {
			$response = $request->execute();
			return $response;
		}
		catch (wfCentralAPIException $e) {
			error_log($e);
		}
		catch (Exception $e) {
			wfCentralAPIRequest::handleInternalCentralAPIError($e);
		}
		catch (Throwable $t) {
			wfCentralAPIRequest::handleInternalCentralAPIError($t);
		}
		return false;
	}

	/**
	 * @param int $issueID
	 * @return bool|wfCentralAPIResponse
	 */
	public static function deleteIssue($issueID) {
		return self::deleteIssues(array($issueID));
	}

	/**
	 * @param $issues
	 * @return bool|wfCentralAPIResponse
	 */
	public static function deleteIssues($issues) {
		$siteID = wfConfig::get('wordfenceCentralSiteID');
		$request = new wfCentralAuthenticatedAPIRequest('/site/' . $siteID . '/issues', 'DELETE', array(
			'data' => array(
				'type'       => 'issue-list',
				'attributes' => array(
					'ids' => $issues,
				)
			),
		));
		try {
			$response = $request->execute();
			return $response;
		}
		catch (wfCentralAPIException $e) {
			error_log($e);
		}
		catch (Exception $e) {
			wfCentralAPIRequest::handleInternalCentralAPIError($e);
		}
		catch (Throwable $t) {
			wfCentralAPIRequest::handleInternalCentralAPIError($t);
		}
		return false;
	}

	/**
	 * @return bool|wfCentralAPIResponse
	 */
	public static function deleteNewIssues() {
		$siteID = wfConfig::get('wordfenceCentralSiteID');
		$request = new wfCentralAuthenticatedAPIRequest('/site/' . $siteID . '/issues', 'DELETE', array(
			'data' => array(
				'type'       => 'issue-list',
				'attributes' => array(
					'status' => 'new',
				)
			),
		));
		try {
			$response = $request->execute();
			return $response;
		}
		catch (wfCentralAPIException $e) {
			error_log($e);
		}
		catch (Exception $e) {
			wfCentralAPIRequest::handleInternalCentralAPIError($e);
		}
		catch (Throwable $t) {
			wfCentralAPIRequest::handleInternalCentralAPIError($t);
		}
		return false;
	}

	/**
	 * @param array $types Array of issue types to delete
	 * @param string $status Issue status to delete
	 * @return bool|wfCentralAPIResponse
	 */
	public static function deleteIssueTypes($types, $status = 'new') {
		$siteID = wfConfig::get('wordfenceCentralSiteID');
		$request = new wfCentralAuthenticatedAPIRequest('/site/' . $siteID . '/issues', 'DELETE', array(
			'data' => array(
				'type'       => 'issue-list',
				'attributes' => array(
					'types' => $types,
					'status' => $status,
				)
			),
		));
		try {
			$response = $request->execute();
			return $response;
		}
		catch (wfCentralAPIException $e) {
			error_log($e);
		}
		catch (Exception $e) {
			wfCentralAPIRequest::handleInternalCentralAPIError($e);
		}
		catch (Throwable $t) {
			wfCentralAPIRequest::handleInternalCentralAPIError($t);
		}
		return false;
	}

	public static function requestConfigurationSync() {
		if (! wfCentral::isConnected() || !self::$syncConfig) {
			return;
		}

		$endpoint = '/site/'.wfConfig::get('wordfenceCentralSiteID').'/config';
		$args = array('timeout' => 0.01, 'blocking'  => false);
		$request = new wfCentralAuthenticatedAPIRequest($endpoint, 'POST', array(), $args);

		try {
			$request->execute();
		}
		catch (Exception $e) {
			// We can safely ignore an error here for now.
		}
		catch (Throwable $t) {
			wfCentralAPIRequest::handleInternalCentralAPIError($t);
		}
	}

	protected static $syncConfig = true;

	public static function preventConfigurationSync() {
		self::$syncConfig = false;
	}

	/**
	 * @param $scan
	 * @param $running
	 * @return bool|wfCentralAPIResponse
	 */
	public static function updateScanStatus($scan = null) {
		if ($scan === null) {
			$scan = wfConfig::get_ser('scanStageStatuses');
			if (!is_array($scan)) {
				$scan = array();
			}
		}
		
		wfScanner::shared()->flushSummaryItems();

		$siteID = wfConfig::get('wordfenceCentralSiteID');
		$running = wfScanner::shared()->isRunning();
		$request = new wfCentralAuthenticatedAPIRequest('/site/' . $siteID . '/scan', 'PATCH', array(
			'data' => array(
				'type'       => 'scan',
				'attributes' => array(
					'running'      => $running,
					'scan'         => $scan,
					'scan-summary' => wfConfig::get('wf_summaryItems'),
				),
			),
		));
		try {
			$response = $request->execute();
			wfConfig::set('lastScanStageStatusUpdate', time(), wfConfig::DONT_AUTOLOAD);
			return $response;
		}
		catch (wfCentralAPIException $e) {
			error_log($e);
		}
		catch (Exception $e) {
			wfCentralAPIRequest::handleInternalCentralAPIError($e);
		}
		catch (Throwable $t) {
			wfCentralAPIRequest::handleInternalCentralAPIError($t);
		}
		return false;
	}

	/**
	 * @param string $event
	 * @param array $data
	 * @param callable|null $alertCallback
	 */
	public static function sendSecurityEvent($event, $data = array(), $alertCallback = null, $sendImmediately = false) {
		return self::sendSecurityEvents(array(array('type' => $event, 'data' => $data, 'event_time' => microtime(true))), $alertCallback, $sendImmediately);
	}
	
	public static function sendSecurityEvents($events, $alertCallback = null, $sendImmediately = false) {
		if (empty($events)) {
			return true;
		}
		
		if (!$sendImmediately && defined('DISABLE_WP_CRON') && DISABLE_WP_CRON) {
			$sendImmediately = true;
		}
		
		$alerted = false;
		if (!self::pluginAlertingDisabled() && is_callable($alertCallback)) {
			call_user_func($alertCallback);
			$alerted = true;
		}
		
		if ($sendImmediately) {
			$payload = array();
			foreach ($events as $e) {
				$payload[] = array(
					'type' => 'security-event',
					'attributes' => array(
						'type' => $e['type'],
						'data' => $e['data'],
						'event_time' => $e['event_time'],
					),
				);
			}
			
			$siteID = wfConfig::get('wordfenceCentralSiteID');
			$request = new wfCentralAuthenticatedAPIRequest('/site/' . $siteID . '/security-events', 'POST', array(
				'data' => $payload,
			));
			try {
				// Attempt to send the security events to Central.
				$response = $request->execute();
			}
			catch (wfCentralAPIException $e) {
				// If we didn't alert previously, notify the user now in the event Central is down.
				if (!$alerted && is_callable($alertCallback)) {
					call_user_func($alertCallback);
				}
				return false;
			}
			catch (Exception $e) {
				wfCentralAPIRequest::handleInternalCentralAPIError($e);
				return false;
			}
			catch (Throwable $t) {
				wfCentralAPIRequest::handleInternalCentralAPIError($t);
				return false;
			}
		}
		else {
			$wfdb = new wfDB();
			$table_wfSecurityEvents = wfDB::networkTable('wfSecurityEvents');
			$query = "INSERT INTO {$table_wfSecurityEvents} (`type`, `data`, `event_time`, `state`, `state_timestamp`) VALUES ";
			$query .= implode(', ', array_fill(0, count($events), "('%s', '%s', %f, 'new', NOW())"));
			
			$immediateSendTypes = array('adminLogin',
										'adminLoginNewLocation',
										'nonAdminLogin',
										'nonAdminLoginNewLocation',
										'wordfenceDeactivated',
										'wafDeactivated',
										'autoUpdate');
			$args = array();
			foreach ($events as $e) {
				$sendImmediately = $sendImmediately || in_array($e['type'], $immediateSendTypes);
				$args[] = $e['type'];
				$args[] = json_encode($e['data']);
				$args[] = $e['event_time'];
			}
			$wfdb->queryWriteArray($query, $args);
			
			if (($ts = self::isScheduledSecurityEventCronOverdue()) || $sendImmediately) {
				if ($ts) {
					self::unscheduleSendPendingSecurityEvents($ts);
				}
				self::sendPendingSecurityEvents();
			}
			else {
				self::scheduleSendPendingSecurityEvents();
			}
		}
		
		return true;
	}
	
	public static function sendPendingSecurityEvents() {
		$wfdb = new wfDB();
		$table_wfSecurityEvents = wfDB::networkTable('wfSecurityEvents');
		
		$rawEvents = $wfdb->querySelect("SELECT * FROM {$table_wfSecurityEvents} WHERE `state` = 'new' ORDER BY `id` ASC LIMIT 100");

		if (empty($rawEvents))
			return;

		$ids = array();
		$events = array();
		foreach ($rawEvents as $r) {
			$ids[] = intval($r['id']);
			$events[] = array(
				'type' => $r['type'],
				'data' => json_decode($r['data'], true),
				'event_time' => $r['event_time'],
			);
		}
		
		$idParam = '(' . implode(', ', $ids) . ')';
		$wfdb->queryWrite("UPDATE {$table_wfSecurityEvents} SET `state` = 'sending', `state_timestamp` = NOW() WHERE `id` IN {$idParam}");
		if (self::sendSecurityEvents($events, null, true)) {
			$wfdb->queryWrite("UPDATE {$table_wfSecurityEvents} SET `state` = 'sent', `state_timestamp` = NOW() WHERE `id` IN {$idParam}");
			
			self::checkForUnsentSecurityEvents();
		}
		else {
			$wfdb->queryWrite("UPDATE {$table_wfSecurityEvents} SET `state` = 'new', `state_timestamp` = NOW() WHERE `id` IN {$idParam}");
			self::scheduleSendPendingSecurityEvents();
		}
	}
	
	public static function scheduleSendPendingSecurityEvents() {
		if (!defined('DONOTCACHEDB')) { define('DONOTCACHEDB', true); }
		$notMainSite = is_multisite() && !is_main_site();
		if ($notMainSite) {
			global $current_site;
			switch_to_blog($current_site->blog_id);
		}
		if (!wp_next_scheduled('wordfence_batchSendSecurityEvents')) {
			wp_schedule_single_event(time() + 300, 'wordfence_batchSendSecurityEvents');
		}
		if ($notMainSite) {
			restore_current_blog();
		}
	}
	
	public static function unscheduleSendPendingSecurityEvents($timestamp) {
		if (!defined('DONOTCACHEDB')) { define('DONOTCACHEDB', true); }
		$notMainSite = is_multisite() && !is_main_site();
		if ($notMainSite) {
			global $current_site;
			switch_to_blog($current_site->blog_id);
		}
		if (!wp_next_scheduled('wordfence_batchSendSecurityEvents')) {
			wp_unschedule_event($timestamp, 'wordfence_batchSendSecurityEvents');
		}
		if ($notMainSite) {
			restore_current_blog();
		}
	}
	
	public static function isScheduledSecurityEventCronOverdue() {
		if (!defined('DONOTCACHEDB')) { define('DONOTCACHEDB', true); }
		$notMainSite = is_multisite() && !is_main_site();
		if ($notMainSite) {
			global $current_site;
			switch_to_blog($current_site->blog_id);
		}
		
		$overdue = false;
		if ($ts = wp_next_scheduled('wordfence_batchSendSecurityEvents')) {
			if ((time() - $ts) > 900) {
				$overdue = $ts;
			}
		}
		
		if ($notMainSite) {
			restore_current_blog();
		}
		
		return $overdue;
	}
	
	public static function checkForUnsentSecurityEvents() {
		$wfdb = new wfDB();
		$table_wfSecurityEvents = wfDB::networkTable('wfSecurityEvents');
		$wfdb->queryWrite("UPDATE {$table_wfSecurityEvents} SET `state` = 'new', `state_timestamp` = NOW() WHERE `state` = 'sending' AND `state_timestamp` < DATE_SUB(NOW(), INTERVAL 30 MINUTE)");
		
		$count = $wfdb->querySingle("SELECT COUNT(*) AS cnt FROM {$table_wfSecurityEvents} WHERE `state` = 'new'");
		if ($count) {
			self::scheduleSendPendingSecurityEvents();
		}
	}
	
	public static function trimSecurityEvents() {
		$wfdb = new wfDB();
		$table_wfSecurityEvents = wfDB::networkTable('wfSecurityEvents');
		$count = $wfdb->querySingle("SELECT COUNT(*) AS cnt FROM {$table_wfSecurityEvents}");
		if ($count > 20000) {
			$wfdb->truncate($table_wfSecurityEvents); //Similar behavior to other logged data, assume possible DoS so truncate
		}
		else if ($count > 1000) {
			$wfdb->queryWrite("DELETE FROM {$table_wfSecurityEvents} ORDER BY id ASC LIMIT %d", $count - 1000);
		}
	}

	/**
	 * @param $event
	 * @param array $data
	 * @param callable|null $alertCallback
	 */
	public static function sendAlertCallback($event, $data = array(), $alertCallback = null) {
		if (is_callable($alertCallback)) {
			call_user_func($alertCallback);
		}
	}

	public static function pluginAlertingDisabled() {
		if (!self::isConnected()) {
			return false;
		}

		return wfConfig::get('wordfenceCentralPluginAlertingDisabled', false);
	}
	
	/**
	 * Returns the site URL as associated with this site's Central linking.
	 * 
	 * The return value may be:
	 *  - null if there is no `site-url` key present in the stored Central data
	 *  - a string if there is a `site-url` value
	 * 
	 * @return string|null
	 */
	public static function getCentralSiteUrl() {
		$siteData = json_decode(wfConfig::get('wordfenceCentralSiteData', '[]'), true);
		return (is_array($siteData) && array_key_exists('site-url', $siteData)) ? (string) $siteData['site-url'] : null;
	}
	
	/**
	 * Populates the Central record's site URL if missing locally.
	 * 
	 * @return array|bool
	 */
	public static function populateCentralSiteUrl() {
		$siteData = json_decode(wfConfig::get('wordfenceCentralSiteData', '[]'), true);
		if (!is_array($siteData) || !array_key_exists('site-url', $siteData)) {
			try {
				$request = new wfCentralAuthenticatedAPIRequest('/site/' . wfConfig::get('wordfenceCentralSiteID'), 'GET', array(), array('timeout' => 2));
				$response = $request->execute();
				if ($response->isError()) {
					return $response->returnErrorArray();
				}
				$responseData = $response->getJSONBody();
				if (is_array($responseData) && isset($responseData['data']['attributes'])) {
					$siteData = $responseData['data']['attributes'];
					wfConfig::set('wordfenceCentralSiteData', json_encode($siteData));
				}
			}
			catch (wfCentralAPIException $e) {
				return false;
			}
			catch (Exception $e) {
				wfCentralAPIRequest::handleInternalCentralAPIError($e);
				return false;
			}
			catch (Throwable $t) {
				wfCentralAPIRequest::handleInternalCentralAPIError($t);
				return false;
			}
		}
		return true;
	}
	
	public static function isCentralSiteUrlMismatched() {
		if (!wfCentral::_isConnected()) {
			return false;
		}
		
		$centralSiteUrl = self::getCentralSiteUrl();
		if (!is_string($centralSiteUrl)) {
			return false;
		}
		
		$localSiteUrl = get_site_url();
		return !wfUtils::compareSiteUrls($centralSiteUrl, $localSiteUrl, array('www'));
	}
	
	public static function mismatchedCentralUrlNotice() {
		echo '<div id="wordfenceMismatchedCentralUrlNotice" class="fade notice notice-warning"><p><strong>' .
			__('Your site is currently linked to Wordfence Central under a different site URL.', 'wordfence')
			. '</strong> '
			. __('This may cause duplicated scan issues if both sites are currently active and reporting and is generally caused by duplicating the database from one site to another (e.g., from a production site to staging). We recommend disconnecting this site only, which will leave the matching site still connected.', 'wordfence')
			. '</p><p>'
			. __('If this is a single site with multiple domains or subdomains, you can dismiss this message.', 'wordfence')
			. '</p><p>'
			. '<a class="wf-btn wf-btn-primary wf-btn-sm wf-dismiss-link" href="#" onclick="wordfenceExt.centralUrlMismatchChoice(\'local\'); return false;" role="button">' .
			__('Disconnect This Site', 'wordfence')
			. '</a> '
			. '<a class="wf-btn wf-btn-default wf-btn-sm wf-dismiss-link" href="#" onclick="wordfenceExt.centralUrlMismatchChoice(\'global\'); return false;" role="button">' .
			__('Disconnect All', 'wordfence')
			. '</a> '
			. '<a class="wf-btn wf-btn-default wf-btn-sm wf-dismiss-link" href="#" onclick="wordfenceExt.centralUrlMismatchChoice(\'dismiss\'); return false;" role="button">' .
			__('Dismiss', 'wordfence')
			. '</a> '
			. '<a class="wfhelp" target="_blank" rel="noopener noreferrer" href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_DIAGNOSTICS_REMOVE_CENTRAL_DATA) . '"><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a></p></div>';
	}
}lib/wfDirectoryIterator.php000064400000003621150755146450012054 0ustar00<?php

abstract class wfDirectoryIterator {

	abstract public function file($file);

	/**
	 * @var string
	 */
	private $directory;

	/**
	 * @var int
	 */
	private $directory_limit;
	
	
	private $directories_entered = array();
	private $directories_processed = array();

	/**
	 * @var callback
	 */
	private $callback;
	/**
	 * @var int
	 */
	private $max_iterations;
	private $iterations;

	/**
	 * @param string $directory
	 * @param int    $max_files_per_directory
	 * @param int    $max_iterations
	 */
	public function __construct($directory = ABSPATH, $max_files_per_directory = 20000, $max_iterations = 1000000) {
		$this->directory = $directory;
		$this->directory_limit = $max_files_per_directory;
		$this->max_iterations = $max_iterations;
	}

	public function run() {
		$this->iterations = 0;
		$this->scan($this->directory);
	}

	protected function scan($dir) {
		$dir = rtrim($dir, DIRECTORY_SEPARATOR);
		$handle = opendir($dir);
		$file_count = 0;
		while ($file = readdir($handle)) {
			if ($file == '.' || $file == '..') {
				continue;
			}
			$file_path = $dir . '/' . $file;
			$real_path = realpath($file_path);
			if (isset($this->directories_processed[$real_path]) || isset($this->directories_entered[$real_path])) { //Already processed or being processed, possibly a recursive symlink
				continue;
			}
			
			else if (is_dir($file_path)) {
				$this->directories_entered[$real_path] = 1;
				if ($this->scan($file_path) === false) {
					closedir($handle);
					return false;
				}
				$this->directories_processed[$real_path] = 1;
				unset($this->directories_entered[$real_path]);
			}
			else {
				if ($this->file($file_path) === false) {
					closedir($handle);
					return false;
				}
			}
			if (++$file_count >= $this->directory_limit) {
				break;
			}
			if (++$this->iterations >= $this->max_iterations) {
				closedir($handle);
				return false;
			}
		}
		closedir($handle);
		return true;
	}
}

lib/wfCurlInterceptor.php000064400000002027150755146450011521 0ustar00<?php

class wfCurlInterceptionFailedException extends RuntimeException {
}

class wfCurlInterceptor {

	const HOOK_NAME = 'http_api_curl';

	private $handle = null;
	private $options = array();
	private $requireInterception;

	public function __construct($requireInterception = true) {
		$this->requireInterception = $requireInterception;
	}

	private function reset() {
		$this->handle = null;
	}

	public function setOption($option, $value) {
		$this->options[$option] = $value;
	}

	public function getHandle() {
		return $this->handle;
	}

	public function handleHook($handle) {
		$this->handle = $handle;
		curl_setopt_array($handle, $this->options);
	}

	public function intercept($callable) {
		$this->reset();
		$action = array($this, 'handleHook');
		add_action(self::HOOK_NAME, $action);
		$result = $callable();
		if ($this->handle === null && $this->requireInterception)
			throw new wfCurlInterceptionFailedException('Hook was not invoked with a valid cURL handle');
		remove_action(self::HOOK_NAME, $action);
		return $result;
	}

}lib/email_unsubscribeRequest.php000064400000002065150755146450013106 0ustar00<?php if (!defined('WORDFENCE_VERSION')) { exit; } ?>
<?php echo wp_kses(sprintf(
	/* translators: 1. IP address. 2. Site URL. 3. Site name.  */
		__('Either you or someone at IP address <b>%1$s</b> requested an alert unsubscribe link for the website <a href="%2$s"><b>%3$s</b></a>.', 'wordfence'), esc_html($IP), esc_attr($siteURL), esc_html($siteName)), array('a'=>array('href'=>array()), 'b'=>array())); ?>
<br><br>
<?php echo esc_html(sprintf(
	/* translators: Localized date.  */
		__('Request was generated at: %s', 'wordfence'), wfUtils::localHumanDate())); ?>
<br><br>
<?php esc_html_e('If you did not request this, you can safely ignore it.', 'wordfence'); ?>
<br><br>
<?php echo wp_kses(sprintf(
	/* translators: URL to WordPress admin panel. */
		__('<a href="%s" target="_blank">Click here<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a> to stop receiving security alerts.', 'wordfence'), wfUtils::getSiteBaseURL() . '?_wfsf=removeAlertEmail&jwt=' . $jwt), array('a'=>array('href'=>array(), 'target'=>array()))); ?>lib/wfDateLocalization.php000064400001300206150755146450011624 0ustar00<?php
class wfDateLocalization {
	static $localizations = array (
  'af-ZA' => 'Date.CultureInfo={name:"af-ZA",englishName:"Afrikaans (South Africa)",nativeName:"Afrikaans (Suid Afrika)",dayNames:["Sondag","Maandag","Dinsdag","Woensdag","Donderdag","Vrydag","Saterdag"],abbreviatedDayNames:["Son","Maan","Dins","Woen","Dond","Vry","Sat"],shortestDayNames:["So","Ma","Di","Wo","Do","Vr","Sa"],firstLetterDayNames:["S","M","D","W","D","V","S"],monthNames:["Januarie","Februarie","Maart","April","Mei","Junie","Julie","Augustus","September","Oktober","November","Desember"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Aug","Sep","Okt","Nov","Des"],amDesignator:"",pmDesignator:"nm",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"ymd",formatPatterns:{shortDate:"yyyy/MM/dd",longDate:"dd MMMM yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dd MMMM yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uarie)?/i,feb:/^feb(ruarie)?/i,mar:/^maart/i,apr:/^apr(il)?/i,may:/^mei/i,jun:/^jun(ie)?/i,jul:/^jul(ie)?/i,aug:/^aug(ustus)?/i,sep:/^sep(t(ember)?)?/i,oct:/^okt(ober)?/i,nov:/^nov(ember)?/i,dec:/^des(ember)?/i,sun:/^so(n(dag)?)?/i,mon:/^ma(an(dag)?)?/i,tue:/^di(ns(dag)?)?/i,wed:/^wo(en(sdag)?)?/i,thu:/^do(nd(erdag)?)?/i,fri:/^vr(y(dag)?)?/i,sat:/^sa(t(erdag)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'ar-AE' => 'Date.CultureInfo={name:"ar-AE",englishName:"Arabic (U.A.E.)",nativeName:"العربية (الإمارات العربية المتحدة)",dayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],abbreviatedDayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],shortestDayNames:["أ","ا","ث","أ","خ","ج","س"],firstLetterDayNames:["أ","ا","ث","أ","خ","ج","س"],monthNames:["يناير","فبراير","مارس","ابريل","مايو","يونيو","يوليو","اغسطس","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],abbreviatedMonthNames:["يناير","فبراير","مارس","ابريل","مايو","يونيو","يوليو","اغسطس","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],amDesignator:"ص",pmDesignator:"م",firstDayOfWeek:6,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dd MMMM, yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dd MMMM, yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^يناير/i,feb:/^فبراير/i,mar:/^مارس/i,apr:/^ابريل/i,may:/^مايو/i,jun:/^يونيو/i,jul:/^يوليو/i,aug:/^اغسطس/i,sep:/^سبتمبر/i,oct:/^اكتوبر/i,nov:/^نوفمبر/i,dec:/^ديسمبر/i,sun:/^الاحد/i,mon:/^ا(1)?/i,tue:/^الثلاثاء/i,wed:/^الاربعاء/i,thu:/^الخميس/i,fri:/^الجمعة/i,sat:/^السبت/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'ar-BH' => 'Date.CultureInfo={name:"ar-BH",englishName:"Arabic (Bahrain)",nativeName:"العربية (البحرين)",dayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],abbreviatedDayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],shortestDayNames:["أ","ا","ث","أ","خ","ج","س"],firstLetterDayNames:["أ","ا","ث","أ","خ","ج","س"],monthNames:["يناير","فبراير","مارس","ابريل","مايو","يونيو","يوليو","اغسطس","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],abbreviatedMonthNames:["يناير","فبراير","مارس","ابريل","مايو","يونيو","يوليو","اغسطس","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],amDesignator:"ص",pmDesignator:"م",firstDayOfWeek:6,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dd MMMM, yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dd MMMM, yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^يناير/i,feb:/^فبراير/i,mar:/^مارس/i,apr:/^ابريل/i,may:/^مايو/i,jun:/^يونيو/i,jul:/^يوليو/i,aug:/^اغسطس/i,sep:/^سبتمبر/i,oct:/^اكتوبر/i,nov:/^نوفمبر/i,dec:/^ديسمبر/i,sun:/^الاحد/i,mon:/^ا(1)?/i,tue:/^الثلاثاء/i,wed:/^الاربعاء/i,thu:/^الخميس/i,fri:/^الجمعة/i,sat:/^السبت/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'ar-DZ' => 'Date.CultureInfo={name:"ar-DZ",englishName:"Arabic (Algeria)",nativeName:"العربية (الجزائر)",dayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],abbreviatedDayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],shortestDayNames:["أ","ا","ث","أ","خ","ج","س"],firstLetterDayNames:["أ","ا","ث","أ","خ","ج","س"],monthNames:["جانفييه","فيفرييه","مارس","أفريل","مي","جوان","جوييه","أوت","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],abbreviatedMonthNames:["جانفييه","فيفرييه","مارس","أفريل","مي","جوان","جوييه","أوت","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],amDesignator:"ص",pmDesignator:"م",firstDayOfWeek:6,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd-MM-yyyy",longDate:"dd MMMM, yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"dd MMMM, yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^جانفييه/i,feb:/^فيفرييه/i,mar:/^مارس/i,apr:/^أفريل/i,may:/^مي/i,jun:/^جوان/i,jul:/^جوييه/i,aug:/^أوت/i,sep:/^سبتمبر/i,oct:/^اكتوبر/i,nov:/^نوفمبر/i,dec:/^ديسمبر/i,sun:/^الاحد/i,mon:/^ا(1)?/i,tue:/^الثلاثاء/i,wed:/^الاربعاء/i,thu:/^الخميس/i,fri:/^الجمعة/i,sat:/^السبت/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'ar-EG' => 'Date.CultureInfo={name:"ar-EG",englishName:"Arabic (Egypt)",nativeName:"العربية (مصر)",dayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],abbreviatedDayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],shortestDayNames:["أ","ا","ث","أ","خ","ج","س"],firstLetterDayNames:["أ","ا","ث","أ","خ","ج","س"],monthNames:["يناير","فبراير","مارس","ابريل","مايو","يونيو","يوليو","اغسطس","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],abbreviatedMonthNames:["يناير","فبراير","مارس","ابريل","مايو","يونيو","يوليو","اغسطس","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],amDesignator:"ص",pmDesignator:"م",firstDayOfWeek:6,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dd MMMM, yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dd MMMM, yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^يناير/i,feb:/^فبراير/i,mar:/^مارس/i,apr:/^ابريل/i,may:/^مايو/i,jun:/^يونيو/i,jul:/^يوليو/i,aug:/^اغسطس/i,sep:/^سبتمبر/i,oct:/^اكتوبر/i,nov:/^نوفمبر/i,dec:/^ديسمبر/i,sun:/^الاحد/i,mon:/^ا(1)?/i,tue:/^الثلاثاء/i,wed:/^الاربعاء/i,thu:/^الخميس/i,fri:/^الجمعة/i,sat:/^السبت/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'ar-IQ' => 'Date.CultureInfo={name:"ar-IQ",englishName:"Arabic (Iraq)",nativeName:"العربية (العراق)",dayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],abbreviatedDayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],shortestDayNames:["أ","ا","ث","أ","خ","ج","س"],firstLetterDayNames:["أ","ا","ث","أ","خ","ج","س"],monthNames:["كانون الثاني","شباط","آذار","نيسان","أيار","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول"],abbreviatedMonthNames:["كانون الثاني","شباط","آذار","نيسان","أيار","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول"],amDesignator:"ص",pmDesignator:"م",firstDayOfWeek:6,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dd MMMM, yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dd MMMM, yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^كانون الثاني/i,feb:/^شباط/i,mar:/^آذار/i,apr:/^نيسان/i,may:/^أيار/i,jun:/^حزيران/i,jul:/^تموز/i,aug:/^آب/i,sep:/^أيلول/i,oct:/^تشرين الأول/i,nov:/^تشرين الثاني/i,dec:/^كانون الأول/i,sun:/^الاحد/i,mon:/^ا(1)?/i,tue:/^الثلاثاء/i,wed:/^الاربعاء/i,thu:/^الخميس/i,fri:/^الجمعة/i,sat:/^السبت/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'ar-JO' => 'Date.CultureInfo={name:"ar-JO",englishName:"Arabic (Jordan)",nativeName:"العربية (الأردن)",dayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],abbreviatedDayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],shortestDayNames:["أ","ا","ث","أ","خ","ج","س"],firstLetterDayNames:["أ","ا","ث","أ","خ","ج","س"],monthNames:["كانون الثاني","شباط","آذار","نيسان","أيار","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول"],abbreviatedMonthNames:["كانون الثاني","شباط","آذار","نيسان","أيار","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول"],amDesignator:"ص",pmDesignator:"م",firstDayOfWeek:6,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dd MMMM, yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dd MMMM, yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^كانون الثاني/i,feb:/^شباط/i,mar:/^آذار/i,apr:/^نيسان/i,may:/^أيار/i,jun:/^حزيران/i,jul:/^تموز/i,aug:/^آب/i,sep:/^أيلول/i,oct:/^تشرين الأول/i,nov:/^تشرين الثاني/i,dec:/^كانون الأول/i,sun:/^الاحد/i,mon:/^ا(1)?/i,tue:/^الثلاثاء/i,wed:/^الاربعاء/i,thu:/^الخميس/i,fri:/^الجمعة/i,sat:/^السبت/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'ar-KW' => 'Date.CultureInfo={name:"ar-KW",englishName:"Arabic (Kuwait)",nativeName:"العربية (الكويت)",dayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],abbreviatedDayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],shortestDayNames:["أ","ا","ث","أ","خ","ج","س"],firstLetterDayNames:["أ","ا","ث","أ","خ","ج","س"],monthNames:["يناير","فبراير","مارس","ابريل","مايو","يونيو","يوليو","اغسطس","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],abbreviatedMonthNames:["يناير","فبراير","مارس","ابريل","مايو","يونيو","يوليو","اغسطس","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],amDesignator:"ص",pmDesignator:"م",firstDayOfWeek:6,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dd MMMM, yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dd MMMM, yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^يناير/i,feb:/^فبراير/i,mar:/^مارس/i,apr:/^ابريل/i,may:/^مايو/i,jun:/^يونيو/i,jul:/^يوليو/i,aug:/^اغسطس/i,sep:/^سبتمبر/i,oct:/^اكتوبر/i,nov:/^نوفمبر/i,dec:/^ديسمبر/i,sun:/^الاحد/i,mon:/^ا(1)?/i,tue:/^الثلاثاء/i,wed:/^الاربعاء/i,thu:/^الخميس/i,fri:/^الجمعة/i,sat:/^السبت/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'ar-LB' => 'Date.CultureInfo={name:"ar-LB",englishName:"Arabic (Lebanon)",nativeName:"العربية (لبنان)",dayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],abbreviatedDayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],shortestDayNames:["أ","ا","ث","أ","خ","ج","س"],firstLetterDayNames:["أ","ا","ث","أ","خ","ج","س"],monthNames:["كانون الثاني","شباط","آذار","نيسان","أيار","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول"],abbreviatedMonthNames:["كانون الثاني","شباط","آذار","نيسان","أيار","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول"],amDesignator:"ص",pmDesignator:"م",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dd MMMM, yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dd MMMM, yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^كانون الثاني/i,feb:/^شباط/i,mar:/^آذار/i,apr:/^نيسان/i,may:/^أيار/i,jun:/^حزيران/i,jul:/^تموز/i,aug:/^آب/i,sep:/^أيلول/i,oct:/^تشرين الأول/i,nov:/^تشرين الثاني/i,dec:/^كانون الأول/i,sun:/^الاحد/i,mon:/^ا(1)?/i,tue:/^الثلاثاء/i,wed:/^الاربعاء/i,thu:/^الخميس/i,fri:/^الجمعة/i,sat:/^السبت/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'ar-LY' => 'Date.CultureInfo={name:"ar-LY",englishName:"Arabic (Libya)",nativeName:"العربية (ليبيا)",dayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],abbreviatedDayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],shortestDayNames:["أ","ا","ث","أ","خ","ج","س"],firstLetterDayNames:["أ","ا","ث","أ","خ","ج","س"],monthNames:["يناير","فبراير","مارس","ابريل","مايو","يونيو","يوليو","اغسطس","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],abbreviatedMonthNames:["يناير","فبراير","مارس","ابريل","مايو","يونيو","يوليو","اغسطس","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],amDesignator:"ص",pmDesignator:"م",firstDayOfWeek:6,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dd MMMM, yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dd MMMM, yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^يناير/i,feb:/^فبراير/i,mar:/^مارس/i,apr:/^ابريل/i,may:/^مايو/i,jun:/^يونيو/i,jul:/^يوليو/i,aug:/^اغسطس/i,sep:/^سبتمبر/i,oct:/^اكتوبر/i,nov:/^نوفمبر/i,dec:/^ديسمبر/i,sun:/^الاحد/i,mon:/^ا(1)?/i,tue:/^الثلاثاء/i,wed:/^الاربعاء/i,thu:/^الخميس/i,fri:/^الجمعة/i,sat:/^السبت/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'ar-MA' => 'Date.CultureInfo={name:"ar-MA",englishName:"Arabic (Morocco)",nativeName:"العربية (المملكة المغربية)",dayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],abbreviatedDayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],shortestDayNames:["أ","ا","ث","أ","خ","ج","س"],firstLetterDayNames:["أ","ا","ث","أ","خ","ج","س"],monthNames:["يناير","فبراير","مارس","ابريل","ماي","يونيو","يوليوز","غشت","شتنبر","اكتوبر","نونبر","دجنبر"],abbreviatedMonthNames:["يناير","فبراير","مارس","ابريل","ماي","يونيو","يوليوز","غشت","شتنبر","اكتوبر","نونبر","دجنبر"],amDesignator:"ص",pmDesignator:"م",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd-MM-yyyy",longDate:"dd MMMM, yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"dd MMMM, yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^يناير/i,feb:/^فبراير/i,mar:/^مارس/i,apr:/^ابريل/i,may:/^ماي/i,jun:/^يونيو/i,jul:/^يوليوز/i,aug:/^غشت/i,sep:/^شتنبر/i,oct:/^اكتوبر/i,nov:/^نونبر/i,dec:/^دجنبر/i,sun:/^الاحد/i,mon:/^ا(1)?/i,tue:/^الثلاثاء/i,wed:/^الاربعاء/i,thu:/^الخميس/i,fri:/^الجمعة/i,sat:/^السبت/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'ar-OM' => 'Date.CultureInfo={name:"ar-OM",englishName:"Arabic (Oman)",nativeName:"العربية (عمان)",dayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],abbreviatedDayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],shortestDayNames:["أ","ا","ث","أ","خ","ج","س"],firstLetterDayNames:["أ","ا","ث","أ","خ","ج","س"],monthNames:["يناير","فبراير","مارس","ابريل","مايو","يونيو","يوليو","اغسطس","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],abbreviatedMonthNames:["يناير","فبراير","مارس","ابريل","مايو","يونيو","يوليو","اغسطس","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],amDesignator:"ص",pmDesignator:"م",firstDayOfWeek:6,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dd MMMM, yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dd MMMM, yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^يناير/i,feb:/^فبراير/i,mar:/^مارس/i,apr:/^ابريل/i,may:/^مايو/i,jun:/^يونيو/i,jul:/^يوليو/i,aug:/^اغسطس/i,sep:/^سبتمبر/i,oct:/^اكتوبر/i,nov:/^نوفمبر/i,dec:/^ديسمبر/i,sun:/^الاحد/i,mon:/^ا(1)?/i,tue:/^الثلاثاء/i,wed:/^الاربعاء/i,thu:/^الخميس/i,fri:/^الجمعة/i,sat:/^السبت/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'ar-QA' => 'Date.CultureInfo={name:"ar-QA",englishName:"Arabic (Qatar)",nativeName:"العربية (قطر)",dayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],abbreviatedDayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],shortestDayNames:["أ","ا","ث","أ","خ","ج","س"],firstLetterDayNames:["أ","ا","ث","أ","خ","ج","س"],monthNames:["يناير","فبراير","مارس","ابريل","مايو","يونيو","يوليو","اغسطس","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],abbreviatedMonthNames:["يناير","فبراير","مارس","ابريل","مايو","يونيو","يوليو","اغسطس","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],amDesignator:"ص",pmDesignator:"م",firstDayOfWeek:6,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dd MMMM, yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dd MMMM, yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^يناير/i,feb:/^فبراير/i,mar:/^مارس/i,apr:/^ابريل/i,may:/^مايو/i,jun:/^يونيو/i,jul:/^يوليو/i,aug:/^اغسطس/i,sep:/^سبتمبر/i,oct:/^اكتوبر/i,nov:/^نوفمبر/i,dec:/^ديسمبر/i,sun:/^الاحد/i,mon:/^ا(1)?/i,tue:/^الثلاثاء/i,wed:/^الاربعاء/i,thu:/^الخميس/i,fri:/^الجمعة/i,sat:/^السبت/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'ar-SA' => 'Date.CultureInfo={name:"ar-SA",englishName:"Arabic (Saudi Arabia)",nativeName:"العربية (المملكة العربية السعودية)",dayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],abbreviatedDayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],shortestDayNames:["أ","ا","ث","أ","خ","ج","س"],firstLetterDayNames:["أ","ا","ث","أ","خ","ج","س"],monthNames:["محرم","صفر","ربيع الأول","ربيع الثاني","جمادى الأولى","جمادى الثانية","رجب","شعبان","رمضان","شوال","ذو القعدة","ذو الحجة"],abbreviatedMonthNames:["محرم","صفر","ربيع الاول","ربيع الثاني","جمادى الاولى","جمادى الثانية","رجب","شعبان","رمضان","شوال","ذو القعدة","ذو الحجة"],amDesignator:"ص",pmDesignator:"م",firstDayOfWeek:6,twoDigitYearMax:1451,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yy",longDate:"dd/MMMM/yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dd/MMMM/yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^محرم/i,feb:/^صفر/i,mar:/^ربيع الأول/i,apr:/^ربيع الثاني/i,may:/^جمادى الأولى/i,jun:/^جمادى الثانية/i,jul:/^رجب/i,aug:/^شعبان/i,sep:/^رمضان/i,oct:/^شوال/i,nov:/^ذو القعدة/i,dec:/^ذو الحجة/i,sun:/^الاحد/i,mon:/^ا(1)?/i,tue:/^الثلاثاء/i,wed:/^الاربعاء/i,thu:/^الخميس/i,fri:/^الجمعة/i,sat:/^السبت/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'ar-SY' => 'Date.CultureInfo={name:"ar-SY",englishName:"Arabic (Syria)",nativeName:"العربية (سوريا)",dayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],abbreviatedDayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],shortestDayNames:["أ","ا","ث","أ","خ","ج","س"],firstLetterDayNames:["أ","ا","ث","أ","خ","ج","س"],monthNames:["كانون الثاني","شباط","آذار","نيسان","أيار","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول"],abbreviatedMonthNames:["كانون الثاني","شباط","آذار","نيسان","أيار","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول"],amDesignator:"ص",pmDesignator:"م",firstDayOfWeek:6,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dd MMMM, yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dd MMMM, yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^كانون الثاني/i,feb:/^شباط/i,mar:/^آذار/i,apr:/^نيسان/i,may:/^أيار/i,jun:/^حزيران/i,jul:/^تموز/i,aug:/^آب/i,sep:/^أيلول/i,oct:/^تشرين الأول/i,nov:/^تشرين الثاني/i,dec:/^كانون الأول/i,sun:/^الاحد/i,mon:/^ا(1)?/i,tue:/^الثلاثاء/i,wed:/^الاربعاء/i,thu:/^الخميس/i,fri:/^الجمعة/i,sat:/^السبت/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'ar-TN' => 'Date.CultureInfo={name:"ar-TN",englishName:"Arabic (Tunisia)",nativeName:"العربية (تونس)",dayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],abbreviatedDayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],shortestDayNames:["أ","ا","ث","أ","خ","ج","س"],firstLetterDayNames:["أ","ا","ث","أ","خ","ج","س"],monthNames:["جانفي","فيفري","مارس","افريل","ماي","جوان","جويلية","اوت","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],abbreviatedMonthNames:["جانفي","فيفري","مارس","افريل","ماي","جوان","جويلية","اوت","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],amDesignator:"ص",pmDesignator:"م",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd-MM-yyyy",longDate:"dd MMMM, yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"dd MMMM, yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^جانفي/i,feb:/^فيفري/i,mar:/^مارس/i,apr:/^افريل/i,may:/^ماي/i,jun:/^جوان/i,jul:/^جويلية/i,aug:/^اوت/i,sep:/^سبتمبر/i,oct:/^اكتوبر/i,nov:/^نوفمبر/i,dec:/^ديسمبر/i,sun:/^الاحد/i,mon:/^ا(1)?/i,tue:/^الثلاثاء/i,wed:/^الاربعاء/i,thu:/^الخميس/i,fri:/^الجمعة/i,sat:/^السبت/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'ar-YE' => 'Date.CultureInfo={name:"ar-YE",englishName:"Arabic (Yemen)",nativeName:"العربية (اليمن)",dayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],abbreviatedDayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],shortestDayNames:["أ","ا","ث","أ","خ","ج","س"],firstLetterDayNames:["أ","ا","ث","أ","خ","ج","س"],monthNames:["يناير","فبراير","مارس","ابريل","مايو","يونيو","يوليو","اغسطس","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],abbreviatedMonthNames:["يناير","فبراير","مارس","ابريل","مايو","يونيو","يوليو","اغسطس","سبتمبر","اكتوبر","نوفمبر","ديسمبر"],amDesignator:"ص",pmDesignator:"م",firstDayOfWeek:6,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dd MMMM, yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dd MMMM, yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^يناير/i,feb:/^فبراير/i,mar:/^مارس/i,apr:/^ابريل/i,may:/^مايو/i,jun:/^يونيو/i,jul:/^يوليو/i,aug:/^اغسطس/i,sep:/^سبتمبر/i,oct:/^اكتوبر/i,nov:/^نوفمبر/i,dec:/^ديسمبر/i,sun:/^الاحد/i,mon:/^ا(1)?/i,tue:/^الثلاثاء/i,wed:/^الاربعاء/i,thu:/^الخميس/i,fri:/^الجمعة/i,sat:/^السبت/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'az-Cyrl-AZ' => 'Date.CultureInfo={name:"az-Cyrl-AZ",englishName:"Azeri (Cyrillic, Azerbaijan)",nativeName:"Азәрбајҹан (Азәрбајҹан)",dayNames:["Базар","Базар ертәси","Чәршәнбә ахшамы","Чәршәнбә","Ҹүмә ахшамы","Ҹүмә","Шәнбә"],abbreviatedDayNames:["Б","Бе","Ча","Ч","Ҹа","Ҹ","Ш"],shortestDayNames:["Б","Бе","Ча","Ч","Ҹа","Ҹ","Ш"],firstLetterDayNames:["Б","Б","Ч","Ч","Ҹ","Ҹ","Ш"],monthNames:["Јанвар","Феврал","Март","Апрел","Мај","Ијун","Ијул","Август","Сентјабр","Октјабр","Нојабр","Декабр"],abbreviatedMonthNames:["Јан","Фев","Мар","Апр","Мај","Ијун","Ијул","Авг","Сен","Окт","Ноя","Дек"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"d MMMM yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"d MMMM yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^јан(вар)?/i,feb:/^фев(рал)?/i,mar:/^мар(т)?/i,apr:/^апр(ел)?/i,may:/^мај/i,jun:/^ијун/i,jul:/^ијул/i,aug:/^авг(уст)?/i,sep:/^сен(тјабр)?/i,oct:/^окт(јабр)?/i,nov:/^нојабр/i,dec:/^дек(абр)?/i,sun:/^базар/i,mon:/^базар ертәси/i,tue:/^чәршәнбә ахшамы/i,wed:/^чәршәнбә/i,thu:/^ҹүмә ахшамы/i,fri:/^ҹүмә/i,sat:/^шәнбә/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'az-Latn-AZ' => 'Date.CultureInfo={name:"az-Latn-AZ",englishName:"Azeri (Latin, Azerbaijan)",nativeName:"Azərbaycan­ılı (Azərbaycanca)",dayNames:["Bazar","Bazar ertəsi","Çərşənbə axşamı","Çərşənbə","Cümə axşamı","Cümə","Şənbə"],abbreviatedDayNames:["B","Be","Ça","Ç","Ca","C","Ş"],shortestDayNames:["B","Be","Ça","Ç","Ca","C","Ş"],firstLetterDayNames:["B","B","Ç","Ç","C","C","Ş"],monthNames:["Yanvar","Fevral","Mart","Aprel","May","İyun","İyul","Avgust","Sentyabr","Oktyabr","Noyabr","Dekabr"],abbreviatedMonthNames:["Yan","Fev","Mar","Apr","May","İyun","İyul","Avg","Sen","Okt","Noy","Dek"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"d MMMM yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"d MMMM yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^yan(var)?/i,feb:/^fev(ral)?/i,mar:/^mar(t)?/i,apr:/^apr(el)?/i,may:/^may/i,jun:/^iyun/i,jul:/^iyul/i,aug:/^avg(ust)?/i,sep:/^sen(tyabr)?/i,oct:/^okt(yabr)?/i,nov:/^noy(abr)?/i,dec:/^dek(abr)?/i,sun:/^bazar/i,mon:/^bazar ertəsi/i,tue:/^çərşənbə axşamı/i,wed:/^çərşənbə/i,thu:/^cümə axşamı/i,fri:/^cümə/i,sat:/^şənbə/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'be-BY' => 'Date.CultureInfo={name:"be-BY",englishName:"Belarusian (Belarus)",nativeName:"Беларускі (Беларусь)",dayNames:["нядзеля","панядзелак","аўторак","серада","чацвер","пятніца","субота"],abbreviatedDayNames:["нд","пн","аў","ср","чц","пт","сб"],shortestDayNames:["нд","пн","аў","ср","чц","пт","сб"],firstLetterDayNames:["н","п","а","с","ч","п","с"],monthNames:["Студзень","Люты","Сакавік","Красавік","Май","Чэрвень","Ліпень","Жнівень","Верасень","Кастрычнік","Лістапад","Снежань"],abbreviatedMonthNames:["Сту","Лют","Сак","Кра","Май","Чэр","Ліп","Жні","Вер","Кас","Ліс","Сне"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"d MMMM yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"d MMMM yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^сту(дзень)?/i,feb:/^лют(ы)?/i,mar:/^сак(авік)?/i,apr:/^кра(савік)?/i,may:/^май/i,jun:/^чэр(вень)?/i,jul:/^ліп(ень)?/i,aug:/^жні(вень)?/i,sep:/^вер(асень)?/i,oct:/^кас(трычнік)?/i,nov:/^ліс(тапад)?/i,dec:/^сне(жань)?/i,sun:/^нядзеля/i,mon:/^панядзелак/i,tue:/^аўторак/i,wed:/^серада/i,thu:/^чацвер/i,fri:/^пятніца/i,sat:/^субота/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'bg-BG' => 'Date.CultureInfo={name:"bg-BG",englishName:"Bulgarian (Bulgaria)",nativeName:"български (България)",dayNames:["неделя","понеделник","вторник","сряда","четвъртък","петък","събота"],abbreviatedDayNames:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],shortestDayNames:["не","по","вт","ср","че","пе","съ"],firstLetterDayNames:["н","п","в","с","ч","п","с"],monthNames:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],abbreviatedMonthNames:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.M.yyyy \'г.\'",longDate:"dd MMMM yyyy \'г.\'",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dd MMMM yyyy \'г.\' HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy \'г.\'"},regexPatterns:{jan:/^януари/i,feb:/^февруари/i,mar:/^март/i,apr:/^април/i,may:/^май/i,jun:/^юни/i,jul:/^юли/i,aug:/^август/i,sep:/^септември/i,oct:/^октомври/i,nov:/^ноември/i,dec:/^декември/i,sun:/^не((деля)?)?/i,mon:/^по((неделник)?)?/i,tue:/^вторник/i,wed:/^сряда/i,thu:/^че((твъртък)?)?/i,fri:/^пе((тък)?)?/i,sat:/^съ((бота)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'bs-Latn-BA' => 'Date.CultureInfo={name:"bs-Latn-BA",englishName:"Bosnian (Bosnia and Herzegovina)",nativeName:"bosanski (Bosna i Hercegovina)",dayNames:["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],abbreviatedDayNames:["ned","pon","uto","sri","čet","pet","sub"],shortestDayNames:["ned","pon","uto","sri","čet","pet","sub"],firstLetterDayNames:["n","p","u","s","č","p","s"],monthNames:["januar","februar","mart","april","maj","jun","jul","avgust","septembar","oktobar","novembar","decembar"],abbreviatedMonthNames:["jan","feb","mar","apr","maj","jun","jul","avg","sep","okt","nov","dec"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d.M.yyyy",longDate:"d. MMMM yyyy",shortTime:"H:mm:ss",longTime:"H:mm:ss",fullDateTime:"d. MMMM yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uar)?/i,feb:/^feb(ruar)?/i,mar:/^mar(t)?/i,apr:/^apr(il)?/i,may:/^maj/i,jun:/^jun/i,jul:/^jul/i,aug:/^avg(ust)?/i,sep:/^sep(tembar)?/i,oct:/^okt(obar)?/i,nov:/^nov(embar)?/i,dec:/^dec(embar)?/i,sun:/^nedjelja/i,mon:/^ponedjeljak/i,tue:/^utorak/i,wed:/^srijeda/i,thu:/^četvrtak/i,fri:/^petak/i,sat:/^subota/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'ca-ES' => 'Date.CultureInfo={name:"ca-ES",englishName:"Catalan (Catalan)",nativeName:"català (català)",dayNames:["diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"],abbreviatedDayNames:["dg.","dl.","dt.","dc.","dj.","dv.","ds."],shortestDayNames:["dg","dl","dt","dc","dj","dv","ds"],firstLetterDayNames:["d","d","d","d","d","d","d"],monthNames:["gener","febrer","març","abril","maig","juny","juliol","agost","setembre","octubre","novembre","desembre"],abbreviatedMonthNames:["gen","feb","març","abr","maig","juny","jul","ag","set","oct","nov","des"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, d\' / \'MMMM\' / \'yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dddd, d\' / \'MMMM\' / \'yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM\' / \'yyyy"},regexPatterns:{jan:/^gen(er)?/i,feb:/^feb(rer)?/i,mar:/^març/i,apr:/^abr(il)?/i,may:/^maig/i,jun:/^juny/i,jul:/^jul(iol)?/i,aug:/^ag(ost)?/i,sep:/^set(embre)?/i,oct:/^oct(ubre)?/i,nov:/^nov(embre)?/i,dec:/^des(embre)?/i,sun:/^dg((.(umenge)?)?)?/i,mon:/^dl((.(lluns)?)?)?/i,tue:/^dt((.(marts)?)?)?/i,wed:/^dc((.(mecres)?)?)?/i,thu:/^dj((.(jous)?)?)?/i,fri:/^dv((.(vendres)?)?)?/i,sat:/^ds((.(ssabte)?)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'cs-CZ' => 'Date.CultureInfo={name:"cs-CZ",englishName:"Czech (Czech Republic)",nativeName:"čeština (Česká republika)",dayNames:["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],abbreviatedDayNames:["ne","po","út","st","čt","pá","so"],shortestDayNames:["ne","po","út","st","čt","pá","so"],firstLetterDayNames:["n","p","ú","s","č","p","s"],monthNames:["leden","únor","březen","duben","květen","červen","červenec","srpen","září","říjen","listopad","prosinec"],abbreviatedMonthNames:["I","II","III","IV","V","VI","VII","VIII","IX","X","XI","XII"],amDesignator:"dop.",pmDesignator:"odp.",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d.M.yyyy",longDate:"d. MMMM yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"d. MMMM yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^leden/i,feb:/^únor/i,mar:/^březen/i,apr:/^duben/i,may:/^květen/i,jun:/^červen/i,jul:/^červenec/i,aug:/^srpen/i,sep:/^září/i,oct:/^říjen/i,nov:/^listopad/i,dec:/^prosinec/i,sun:/^neděle/i,mon:/^pondělí/i,tue:/^úterý/i,wed:/^středa/i,thu:/^čtvrtek/i,fri:/^pátek/i,sat:/^sobota/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'cy-GB' => 'Date.CultureInfo={name:"cy-GB",englishName:"Welsh (United Kingdom)",nativeName:"Cymraeg (y Deyrnas Unedig)",dayNames:["Dydd Sul","Dydd Llun","Dydd Mawrth","Dydd Mercher","Dydd Iau","Dydd Gwener","Dydd Sadwrn"],abbreviatedDayNames:["Sul","Llun","Maw","Mer","Iau","Gwe","Sad"],shortestDayNames:["Sul","Llun","Maw","Mer","Iau","Gwe","Sad"],firstLetterDayNames:["S","L","M","M","I","G","S"],monthNames:["Ionawr","Chwefror","Mawrth","Ebrill","Mai","Mehefin","Gorffennaf","Awst","Medi","Hydref","Tachwedd","Rhagfyr"],abbreviatedMonthNames:["Ion","Chwe","Maw","Ebr","Mai","Meh","Gor","Aws","Med","Hyd","Tach","Rhag"],amDesignator:"a.m.",pmDesignator:"p.m.",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dd MMMM yyyy",shortTime:"HH:mm:ss",longTime:"HH:mm:ss",fullDateTime:"dd MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^ion(awr)?/i,feb:/^chwe(fror)?/i,mar:/^maw(rth)?/i,apr:/^ebr(ill)?/i,may:/^mai/i,jun:/^meh(efin)?/i,jul:/^gor(ffennaf)?/i,aug:/^aws(t)?/i,sep:/^med(i)?/i,oct:/^hyd(ref)?/i,nov:/^tach(wedd)?/i,dec:/^rhag(fyr)?/i,sun:/^dydd sul/i,mon:/^dydd llun/i,tue:/^dydd mawrth/i,wed:/^dydd mercher/i,thu:/^dydd iau/i,fri:/^dydd gwener/i,sat:/^dydd sadwrn/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'da-DK' => 'Date.CultureInfo={name:"da-DK",englishName:"Danish (Denmark)",nativeName:"dansk (Danmark)",dayNames:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],abbreviatedDayNames:["sø","ma","ti","on","to","fr","lø"],shortestDayNames:["sø","ma","ti","on","to","fr","lø"],firstLetterDayNames:["s","m","t","o","t","f","l"],monthNames:["januar","februar","marts","april","maj","juni","juli","august","september","oktober","november","december"],abbreviatedMonthNames:["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd-MM-yyyy",longDate:"d. MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"d. MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d. MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uar)?/i,feb:/^feb(ruar)?/i,mar:/^mar(ts)?/i,apr:/^apr(il)?/i,may:/^maj/i,jun:/^jun(i)?/i,jul:/^jul(i)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^okt(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^søndag/i,mon:/^mandag/i,tue:/^tirsdag/i,wed:/^onsdag/i,thu:/^torsdag/i,fri:/^fredag/i,sat:/^lørdag/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'de-AT' => 'Date.CultureInfo={name:"de-AT",englishName:"German (Austria)",nativeName:"Deutsch (Österreich)",dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],abbreviatedDayNames:["So","Mo","Di","Mi","Do","Fr","Sa"],shortestDayNames:["So","Mo","Di","Mi","Do","Fr","Sa"],firstLetterDayNames:["S","M","D","M","D","F","S"],monthNames:["Jänner","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],abbreviatedMonthNames:["Jän","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"dddd, dd. MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dddd, dd. MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jän(ner)?/i,feb:/^feb(ruar)?/i,mar:/^mär(z)?/i,apr:/^apr(il)?/i,may:/^mai/i,jun:/^jun(i)?/i,jul:/^jul(i)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^okt(ober)?/i,nov:/^nov(ember)?/i,dec:/^dez(ember)?/i,sun:/^sonntag/i,mon:/^montag/i,tue:/^dienstag/i,wed:/^mittwoch/i,thu:/^donnerstag/i,fri:/^freitag/i,sat:/^samstag/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'de-CH' => 'Date.CultureInfo={name:"de-CH",englishName:"German (Switzerland)",nativeName:"Deutsch (Schweiz)",dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],abbreviatedDayNames:["So","Mo","Di","Mi","Do","Fr","Sa"],shortestDayNames:["So","Mo","Di","Mi","Do","Fr","Sa"],firstLetterDayNames:["S","M","D","M","D","F","S"],monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],abbreviatedMonthNames:["Jan","Feb","Mrz","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"dddd, d. MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dddd, d. MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uar)?/i,feb:/^feb(ruar)?/i,mar:/^märz/i,apr:/^apr(il)?/i,may:/^mai/i,jun:/^jun(i)?/i,jul:/^jul(i)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^okt(ober)?/i,nov:/^nov(ember)?/i,dec:/^dez(ember)?/i,sun:/^sonntag/i,mon:/^montag/i,tue:/^dienstag/i,wed:/^mittwoch/i,thu:/^donnerstag/i,fri:/^freitag/i,sat:/^samstag/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'de-DE' => 'Date.CultureInfo={name:"de-DE",englishName:"German (Germany)",nativeName:"Deutsch (Deutschland)",dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],abbreviatedDayNames:["So","Mo","Di","Mi","Do","Fr","Sa"],shortestDayNames:["So","Mo","Di","Mi","Do","Fr","Sa"],firstLetterDayNames:["S","M","D","M","D","F","S"],monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],abbreviatedMonthNames:["Jan","Feb","Mrz","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"dddd, d. MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dddd, d. MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uar)?/i,feb:/^feb(ruar)?/i,mar:/^märz/i,apr:/^apr(il)?/i,may:/^mai/i,jun:/^jun(i)?/i,jul:/^jul(i)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^okt(ober)?/i,nov:/^nov(ember)?/i,dec:/^dez(ember)?/i,sun:/^sonntag/i,mon:/^montag/i,tue:/^dienstag/i,wed:/^mittwoch/i,thu:/^donnerstag/i,fri:/^freitag/i,sat:/^samstag/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'de-LI' => 'Date.CultureInfo={name:"de-LI",englishName:"German (Liechtenstein)",nativeName:"Deutsch (Liechtenstein)",dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],abbreviatedDayNames:["So","Mo","Di","Mi","Do","Fr","Sa"],shortestDayNames:["So","Mo","Di","Mi","Do","Fr","Sa"],firstLetterDayNames:["S","M","D","M","D","F","S"],monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],abbreviatedMonthNames:["Jan","Feb","Mrz","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"dddd, d. MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dddd, d. MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uar)?/i,feb:/^feb(ruar)?/i,mar:/^märz/i,apr:/^apr(il)?/i,may:/^mai/i,jun:/^jun(i)?/i,jul:/^jul(i)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^okt(ober)?/i,nov:/^nov(ember)?/i,dec:/^dez(ember)?/i,sun:/^sonntag/i,mon:/^montag/i,tue:/^dienstag/i,wed:/^mittwoch/i,thu:/^donnerstag/i,fri:/^freitag/i,sat:/^samstag/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'de-LU' => 'Date.CultureInfo={name:"de-LU",englishName:"German (Luxembourg)",nativeName:"Deutsch (Luxemburg)",dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],abbreviatedDayNames:["So","Mo","Di","Mi","Do","Fr","Sa"],shortestDayNames:["So","Mo","Di","Mi","Do","Fr","Sa"],firstLetterDayNames:["S","M","D","M","D","F","S"],monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],abbreviatedMonthNames:["Jan","Feb","Mrz","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"dddd, d. MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dddd, d. MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uar)?/i,feb:/^feb(ruar)?/i,mar:/^märz/i,apr:/^apr(il)?/i,may:/^mai/i,jun:/^jun(i)?/i,jul:/^jul(i)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^okt(ober)?/i,nov:/^nov(ember)?/i,dec:/^dez(ember)?/i,sun:/^sonntag/i,mon:/^montag/i,tue:/^dienstag/i,wed:/^mittwoch/i,thu:/^donnerstag/i,fri:/^freitag/i,sat:/^samstag/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'dv-MV' => 'Date.CultureInfo={name:"dv-MV",englishName:"Divehi (Maldives)",nativeName:"ދިވެހިބަސް (ދިވެހި ރާއްޖެ)",dayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],abbreviatedDayNames:["الاحد","الاثنين","الثلاثاء","الاربعاء","الخميس","الجمعة","السبت"],shortestDayNames:["أ","ا","ث","أ","خ","ج","س"],firstLetterDayNames:["أ","ا","ث","أ","خ","ج","س"],monthNames:["محرم","صفر","ربيع الأول","ربيع الثاني","جمادى الأولى","جمادى الثانية","رجب","شعبان","رمضان","شوال","ذو القعدة","ذو الحجة"],abbreviatedMonthNames:["محرم","صفر","ربيع الاول","ربيع الثاني","جمادى الاولى","جمادى الثانية","رجب","شعبان","رمضان","شوال","ذو القعدة","ذو الحجة"],amDesignator:"މކ",pmDesignator:"މފ",firstDayOfWeek:0,twoDigitYearMax:1451,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yy",longDate:"dd/MMMM/yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dd/MMMM/yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^محرم/i,feb:/^صفر/i,mar:/^ربيع الأول/i,apr:/^ربيع الثاني/i,may:/^جمادى الأولى/i,jun:/^جمادى الثانية/i,jul:/^رجب/i,aug:/^شعبان/i,sep:/^رمضان/i,oct:/^شوال/i,nov:/^ذو القعدة/i,dec:/^ذو الحجة/i,sun:/^الاحد/i,mon:/^ا(1)?/i,tue:/^الثلاثاء/i,wed:/^الاربعاء/i,thu:/^الخميس/i,fri:/^الجمعة/i,sat:/^السبت/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'el-GR' => 'Date.CultureInfo={name:"el-GR",englishName:"Greek (Greece)",nativeName:"ελληνικά (Ελλάδα)",dayNames:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],abbreviatedDayNames:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],shortestDayNames:["Κυ","Δε","Τρ","Τε","Πε","Πα","Σά"],firstLetterDayNames:["Κ","Δ","Τ","Τ","Π","Π","Σ"],monthNames:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],abbreviatedMonthNames:["Ιαν","Φεβ","Μαρ","Απρ","Μαϊ","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],amDesignator:"πμ",pmDesignator:"μμ",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d/M/yyyy",longDate:"dddd, d MMMM yyyy",shortTime:"h:mm tt",longTime:"h:mm:ss tt",fullDateTime:"dddd, d MMMM yyyy h:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^ιαν(ουάριος)?/i,feb:/^φεβ(ρουάριος)?/i,mar:/^μάρτιος/i,apr:/^απρ(ίλιος)?/i,may:/^μάιος/i,jun:/^ιούνιος/i,jul:/^ιούλιος/i,aug:/^αύγουστος/i,sep:/^σεπ(τέμβριος)?/i,oct:/^οκτ(ώβριος)?/i,nov:/^νοέμβριος/i,dec:/^δεκ(έμβριος)?/i,sun:/^κυ(ρ(ιακή)?)?/i,mon:/^δε(υ(τέρα)?)?/i,tue:/^τρ(ι(τη)?)?/i,wed:/^τε(τ(άρτη)?)?/i,thu:/^πε(μ(πτη)?)?/i,fri:/^πα(ρ(ασκευή)?)?/i,sat:/^σά(β(βατο)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'en-029' => 'Date.CultureInfo={name:"en-029",englishName:"English (Caribbean)",nativeName:"English (Caribbean)",dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["Su","Mo","Tu","We","Th","Fr","Sa"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"mdy",formatPatterns:{shortDate:"MM/dd/yyyy",longDate:"dddd, MMMM dd, yyyy",shortTime:"h:mm tt",longTime:"h:mm:ss tt",fullDateTime:"dddd, MMMM dd, yyyy h:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^jan(uary)?/i,feb:/^feb(ruary)?/i,mar:/^mar(ch)?/i,apr:/^apr(il)?/i,may:/^may/i,jun:/^jun(e)?/i,jul:/^jul(y)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^oct(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^su(n(day)?)?/i,mon:/^mo(n(day)?)?/i,tue:/^tu(e(s(day)?)?)?/i,wed:/^we(d(nesday)?)?/i,thu:/^th(u(r(s(day)?)?)?)?/i,fri:/^fr(i(day)?)?/i,sat:/^sa(t(urday)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'en-AU' => 'Date.CultureInfo={name:"en-AU",englishName:"English (Australia)",nativeName:"English (Australia)",dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["Su","Mo","Tu","We","Th","Fr","Sa"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d/MM/yyyy",longDate:"dddd, d MMMM yyyy",shortTime:"h:mm tt",longTime:"h:mm:ss tt",fullDateTime:"dddd, d MMMM yyyy h:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uary)?/i,feb:/^feb(ruary)?/i,mar:/^mar(ch)?/i,apr:/^apr(il)?/i,may:/^may/i,jun:/^jun(e)?/i,jul:/^jul(y)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^oct(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^su(n(day)?)?/i,mon:/^mo(n(day)?)?/i,tue:/^tu(e(s(day)?)?)?/i,wed:/^we(d(nesday)?)?/i,thu:/^th(u(r(s(day)?)?)?)?/i,fri:/^fr(i(day)?)?/i,sat:/^sa(t(urday)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'en-BZ' => 'Date.CultureInfo={name:"en-BZ",englishName:"English (Belize)",nativeName:"English (Belize)",dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["Su","Mo","Tu","We","Th","Fr","Sa"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, dd MMMM yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dddd, dd MMMM yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uary)?/i,feb:/^feb(ruary)?/i,mar:/^mar(ch)?/i,apr:/^apr(il)?/i,may:/^may/i,jun:/^jun(e)?/i,jul:/^jul(y)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^oct(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^su(n(day)?)?/i,mon:/^mo(n(day)?)?/i,tue:/^tu(e(s(day)?)?)?/i,wed:/^we(d(nesday)?)?/i,thu:/^th(u(r(s(day)?)?)?)?/i,fri:/^fr(i(day)?)?/i,sat:/^sa(t(urday)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'en-CA' => 'Date.CultureInfo={name:"en-CA",englishName:"English (Canada)",nativeName:"English (Canada)",dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["Su","Mo","Tu","We","Th","Fr","Sa"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"MMMM d, yyyy",shortTime:"h:mm tt",longTime:"h:mm:ss tt",fullDateTime:"MMMM d, yyyy h:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^jan(uary)?/i,feb:/^feb(ruary)?/i,mar:/^mar(ch)?/i,apr:/^apr(il)?/i,may:/^may/i,jun:/^jun(e)?/i,jul:/^jul(y)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^oct(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^su(n(day)?)?/i,mon:/^mo(n(day)?)?/i,tue:/^tu(e(s(day)?)?)?/i,wed:/^we(d(nesday)?)?/i,thu:/^th(u(r(s(day)?)?)?)?/i,fri:/^fr(i(day)?)?/i,sat:/^sa(t(urday)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'en-GB' => 'Date.CultureInfo={name:"en-GB",englishName:"English (United Kingdom)",nativeName:"English (United Kingdom)",dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["Su","Mo","Tu","We","Th","Fr","Sa"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dd MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dd MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uary)?/i,feb:/^feb(ruary)?/i,mar:/^mar(ch)?/i,apr:/^apr(il)?/i,may:/^may/i,jun:/^jun(e)?/i,jul:/^jul(y)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^oct(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^su(n(day)?)?/i,mon:/^mo(n(day)?)?/i,tue:/^tu(e(s(day)?)?)?/i,wed:/^we(d(nesday)?)?/i,thu:/^th(u(r(s(day)?)?)?)?/i,fri:/^fr(i(day)?)?/i,sat:/^sa(t(urday)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'en-IE' => 'Date.CultureInfo={name:"en-IE",englishName:"English (Ireland)",nativeName:"English (Eire)",dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["Su","Mo","Tu","We","Th","Fr","Sa"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dd MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dd MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uary)?/i,feb:/^feb(ruary)?/i,mar:/^mar(ch)?/i,apr:/^apr(il)?/i,may:/^may/i,jun:/^jun(e)?/i,jul:/^jul(y)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^oct(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^su(n(day)?)?/i,mon:/^mo(n(day)?)?/i,tue:/^tu(e(s(day)?)?)?/i,wed:/^we(d(nesday)?)?/i,thu:/^th(u(r(s(day)?)?)?)?/i,fri:/^fr(i(day)?)?/i,sat:/^sa(t(urday)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'en-JM' => 'Date.CultureInfo={name:"en-JM",englishName:"English (Jamaica)",nativeName:"English (Jamaica)",dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["Su","Mo","Tu","We","Th","Fr","Sa"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, MMMM dd, yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dddd, MMMM dd, yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^jan(uary)?/i,feb:/^feb(ruary)?/i,mar:/^mar(ch)?/i,apr:/^apr(il)?/i,may:/^may/i,jun:/^jun(e)?/i,jul:/^jul(y)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^oct(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^su(n(day)?)?/i,mon:/^mo(n(day)?)?/i,tue:/^tu(e(s(day)?)?)?/i,wed:/^we(d(nesday)?)?/i,thu:/^th(u(r(s(day)?)?)?)?/i,fri:/^fr(i(day)?)?/i,sat:/^sa(t(urday)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'en-NZ' => 'Date.CultureInfo={name:"en-NZ",englishName:"English (New Zealand)",nativeName:"English (New Zealand)",dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["Su","Mo","Tu","We","Th","Fr","Sa"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"a.m.",pmDesignator:"p.m.",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d/MM/yyyy",longDate:"dddd, d MMMM yyyy",shortTime:"h:mm tt",longTime:"h:mm:ss tt",fullDateTime:"dddd, d MMMM yyyy h:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uary)?/i,feb:/^feb(ruary)?/i,mar:/^mar(ch)?/i,apr:/^apr(il)?/i,may:/^may/i,jun:/^jun(e)?/i,jul:/^jul(y)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^oct(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^su(n(day)?)?/i,mon:/^mo(n(day)?)?/i,tue:/^tu(e(s(day)?)?)?/i,wed:/^we(d(nesday)?)?/i,thu:/^th(u(r(s(day)?)?)?)?/i,fri:/^fr(i(day)?)?/i,sat:/^sa(t(urday)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'en-PH' => 'Date.CultureInfo={name:"en-PH",englishName:"English (Republic of the Philippines)",nativeName:"English (Philippines)",dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["Su","Mo","Tu","We","Th","Fr","Sa"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"mdy",formatPatterns:{shortDate:"M/d/yyyy",longDate:"dddd, MMMM dd, yyyy",shortTime:"h:mm tt",longTime:"h:mm:ss tt",fullDateTime:"dddd, MMMM dd, yyyy h:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^jan(uary)?/i,feb:/^feb(ruary)?/i,mar:/^mar(ch)?/i,apr:/^apr(il)?/i,may:/^may/i,jun:/^jun(e)?/i,jul:/^jul(y)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^oct(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^su(n(day)?)?/i,mon:/^mo(n(day)?)?/i,tue:/^tu(e(s(day)?)?)?/i,wed:/^we(d(nesday)?)?/i,thu:/^th(u(r(s(day)?)?)?)?/i,fri:/^fr(i(day)?)?/i,sat:/^sa(t(urday)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'en-TT' => 'Date.CultureInfo={name:"en-TT",englishName:"English (Trinidad and Tobago)",nativeName:"English (Trinidad y Tobago)",dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["Su","Mo","Tu","We","Th","Fr","Sa"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, dd MMMM yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dddd, dd MMMM yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uary)?/i,feb:/^feb(ruary)?/i,mar:/^mar(ch)?/i,apr:/^apr(il)?/i,may:/^may/i,jun:/^jun(e)?/i,jul:/^jul(y)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^oct(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^su(n(day)?)?/i,mon:/^mo(n(day)?)?/i,tue:/^tu(e(s(day)?)?)?/i,wed:/^we(d(nesday)?)?/i,thu:/^th(u(r(s(day)?)?)?)?/i,fri:/^fr(i(day)?)?/i,sat:/^sa(t(urday)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'en-US' => 'Date.CultureInfo={name:"en-US",englishName:"English (United States)",nativeName:"English (United States)",dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["Su","Mo","Tu","We","Th","Fr","Sa"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"mdy",formatPatterns:{shortDate:"M/d/yyyy",longDate:"dddd, MMMM dd, yyyy",shortTime:"h:mm tt",longTime:"h:mm:ss tt",fullDateTime:"dddd, MMMM dd, yyyy h:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^jan(uary)?/i,feb:/^feb(ruary)?/i,mar:/^mar(ch)?/i,apr:/^apr(il)?/i,may:/^may/i,jun:/^jun(e)?/i,jul:/^jul(y)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^oct(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^su(n(day)?)?/i,mon:/^mo(n(day)?)?/i,tue:/^tu(e(s(day)?)?)?/i,wed:/^we(d(nesday)?)?/i,thu:/^th(u(r(s(day)?)?)?)?/i,fri:/^fr(i(day)?)?/i,sat:/^sa(t(urday)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'en-ZA' => 'Date.CultureInfo={name:"en-ZA",englishName:"English (South Africa)",nativeName:"English (South Africa)",dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["Su","Mo","Tu","We","Th","Fr","Sa"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"ymd",formatPatterns:{shortDate:"yyyy/MM/dd",longDate:"dd MMMM yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dd MMMM yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uary)?/i,feb:/^feb(ruary)?/i,mar:/^mar(ch)?/i,apr:/^apr(il)?/i,may:/^may/i,jun:/^jun(e)?/i,jul:/^jul(y)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^oct(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^su(n(day)?)?/i,mon:/^mo(n(day)?)?/i,tue:/^tu(e(s(day)?)?)?/i,wed:/^we(d(nesday)?)?/i,thu:/^th(u(r(s(day)?)?)?)?/i,fri:/^fr(i(day)?)?/i,sat:/^sa(t(urday)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'en-ZW' => 'Date.CultureInfo={name:"en-ZW",englishName:"English (Zimbabwe)",nativeName:"English (Zimbabwe)",dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["Su","Mo","Tu","We","Th","Fr","Sa"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"mdy",formatPatterns:{shortDate:"M/d/yyyy",longDate:"dddd, MMMM dd, yyyy",shortTime:"h:mm tt",longTime:"h:mm:ss tt",fullDateTime:"dddd, MMMM dd, yyyy h:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^jan(uary)?/i,feb:/^feb(ruary)?/i,mar:/^mar(ch)?/i,apr:/^apr(il)?/i,may:/^may/i,jun:/^jun(e)?/i,jul:/^jul(y)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^oct(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^su(n(day)?)?/i,mon:/^mo(n(day)?)?/i,tue:/^tu(e(s(day)?)?)?/i,wed:/^we(d(nesday)?)?/i,thu:/^th(u(r(s(day)?)?)?)?/i,fri:/^fr(i(day)?)?/i,sat:/^sa(t(urday)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'es-AR' => 'Date.CultureInfo={name:"es-AR",englishName:"Spanish (Argentina)",nativeName:"Español (Argentina)",dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],abbreviatedDayNames:["dom","lun","mar","mié","jue","vie","sáb"],shortestDayNames:["do","lu","ma","mi","ju","vi","sá"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],abbreviatedMonthNames:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],amDesignator:"a.m.",pmDesignator:"p.m.",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^ene(ro)?/i,feb:/^feb(rero)?/i,mar:/^mar(zo)?/i,apr:/^abr(il)?/i,may:/^may(o)?/i,jun:/^jun(io)?/i,jul:/^jul(io)?/i,aug:/^ago(sto)?/i,sep:/^sep(tiembre)?/i,oct:/^oct(ubre)?/i,nov:/^nov(iembre)?/i,dec:/^dic(iembre)?/i,sun:/^do(m(ingo)?)?/i,mon:/^lu(n(es)?)?/i,tue:/^ma(r(tes)?)?/i,wed:/^mi(é(rcoles)?)?/i,thu:/^ju(e(ves)?)?/i,fri:/^vi(e(rnes)?)?/i,sat:/^sá(b(ado)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'es-BO' => 'Date.CultureInfo={name:"es-BO",englishName:"Spanish (Bolivia)",nativeName:"Español (Bolivia)",dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],abbreviatedDayNames:["dom","lun","mar","mié","jue","vie","sáb"],shortestDayNames:["do","lu","ma","mi","ju","vi","sá"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],abbreviatedMonthNames:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],amDesignator:"a.m.",pmDesignator:"p.m.",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^ene(ro)?/i,feb:/^feb(rero)?/i,mar:/^mar(zo)?/i,apr:/^abr(il)?/i,may:/^may(o)?/i,jun:/^jun(io)?/i,jul:/^jul(io)?/i,aug:/^ago(sto)?/i,sep:/^sep(tiembre)?/i,oct:/^oct(ubre)?/i,nov:/^nov(iembre)?/i,dec:/^dic(iembre)?/i,sun:/^do(m(ingo)?)?/i,mon:/^lu(n(es)?)?/i,tue:/^ma(r(tes)?)?/i,wed:/^mi(é(rcoles)?)?/i,thu:/^ju(e(ves)?)?/i,fri:/^vi(e(rnes)?)?/i,sat:/^sá(b(ado)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'es-CL' => 'Date.CultureInfo={name:"es-CL",englishName:"Spanish (Chile)",nativeName:"Español (Chile)",dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],abbreviatedDayNames:["dom","lun","mar","mié","jue","vie","sáb"],shortestDayNames:["do","lu","ma","mi","ju","vi","sá"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],abbreviatedMonthNames:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],amDesignator:"",pmDesignator:"",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd-MM-yyyy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^ene(ro)?/i,feb:/^feb(rero)?/i,mar:/^mar(zo)?/i,apr:/^abr(il)?/i,may:/^may(o)?/i,jun:/^jun(io)?/i,jul:/^jul(io)?/i,aug:/^ago(sto)?/i,sep:/^sep(tiembre)?/i,oct:/^oct(ubre)?/i,nov:/^nov(iembre)?/i,dec:/^dic(iembre)?/i,sun:/^do(m(ingo)?)?/i,mon:/^lu(n(es)?)?/i,tue:/^ma(r(tes)?)?/i,wed:/^mi(é(rcoles)?)?/i,thu:/^ju(e(ves)?)?/i,fri:/^vi(e(rnes)?)?/i,sat:/^sá(b(ado)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'es-CO' => 'Date.CultureInfo={name:"es-CO",englishName:"Spanish (Colombia)",nativeName:"Español (Colombia)",dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],abbreviatedDayNames:["dom","lun","mar","mié","jue","vie","sáb"],shortestDayNames:["do","lu","ma","mi","ju","vi","sá"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],abbreviatedMonthNames:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],amDesignator:"a.m.",pmDesignator:"p.m.",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^ene(ro)?/i,feb:/^feb(rero)?/i,mar:/^mar(zo)?/i,apr:/^abr(il)?/i,may:/^may(o)?/i,jun:/^jun(io)?/i,jul:/^jul(io)?/i,aug:/^ago(sto)?/i,sep:/^sep(tiembre)?/i,oct:/^oct(ubre)?/i,nov:/^nov(iembre)?/i,dec:/^dic(iembre)?/i,sun:/^do(m(ingo)?)?/i,mon:/^lu(n(es)?)?/i,tue:/^ma(r(tes)?)?/i,wed:/^mi(é(rcoles)?)?/i,thu:/^ju(e(ves)?)?/i,fri:/^vi(e(rnes)?)?/i,sat:/^sá(b(ado)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'es-CR' => 'Date.CultureInfo={name:"es-CR",englishName:"Spanish (Costa Rica)",nativeName:"Español (Costa Rica)",dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],abbreviatedDayNames:["dom","lun","mar","mié","jue","vie","sáb"],shortestDayNames:["do","lu","ma","mi","ju","vi","sá"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],abbreviatedMonthNames:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],amDesignator:"a.m.",pmDesignator:"p.m.",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^ene(ro)?/i,feb:/^feb(rero)?/i,mar:/^mar(zo)?/i,apr:/^abr(il)?/i,may:/^may(o)?/i,jun:/^jun(io)?/i,jul:/^jul(io)?/i,aug:/^ago(sto)?/i,sep:/^sep(tiembre)?/i,oct:/^oct(ubre)?/i,nov:/^nov(iembre)?/i,dec:/^dic(iembre)?/i,sun:/^do(m(ingo)?)?/i,mon:/^lu(n(es)?)?/i,tue:/^ma(r(tes)?)?/i,wed:/^mi(é(rcoles)?)?/i,thu:/^ju(e(ves)?)?/i,fri:/^vi(e(rnes)?)?/i,sat:/^sá(b(ado)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'es-DO' => 'Date.CultureInfo={name:"es-DO",englishName:"Spanish (Dominican Republic)",nativeName:"Español (República Dominicana)",dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],abbreviatedDayNames:["dom","lun","mar","mié","jue","vie","sáb"],shortestDayNames:["do","lu","ma","mi","ju","vi","sá"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],abbreviatedMonthNames:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],amDesignator:"a.m.",pmDesignator:"p.m.",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^ene(ro)?/i,feb:/^feb(rero)?/i,mar:/^mar(zo)?/i,apr:/^abr(il)?/i,may:/^may(o)?/i,jun:/^jun(io)?/i,jul:/^jul(io)?/i,aug:/^ago(sto)?/i,sep:/^sep(tiembre)?/i,oct:/^oct(ubre)?/i,nov:/^nov(iembre)?/i,dec:/^dic(iembre)?/i,sun:/^do(m(ingo)?)?/i,mon:/^lu(n(es)?)?/i,tue:/^ma(r(tes)?)?/i,wed:/^mi(é(rcoles)?)?/i,thu:/^ju(e(ves)?)?/i,fri:/^vi(e(rnes)?)?/i,sat:/^sá(b(ado)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'es-EC' => 'Date.CultureInfo={name:"es-EC",englishName:"Spanish (Ecuador)",nativeName:"Español (Ecuador)",dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],abbreviatedDayNames:["dom","lun","mar","mié","jue","vie","sáb"],shortestDayNames:["do","lu","ma","mi","ju","vi","sá"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],abbreviatedMonthNames:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],amDesignator:"",pmDesignator:"",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^ene(ro)?/i,feb:/^feb(rero)?/i,mar:/^mar(zo)?/i,apr:/^abr(il)?/i,may:/^may(o)?/i,jun:/^jun(io)?/i,jul:/^jul(io)?/i,aug:/^ago(sto)?/i,sep:/^sep(tiembre)?/i,oct:/^oct(ubre)?/i,nov:/^nov(iembre)?/i,dec:/^dic(iembre)?/i,sun:/^do(m(ingo)?)?/i,mon:/^lu(n(es)?)?/i,tue:/^ma(r(tes)?)?/i,wed:/^mi(é(rcoles)?)?/i,thu:/^ju(e(ves)?)?/i,fri:/^vi(e(rnes)?)?/i,sat:/^sá(b(ado)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'es-ES' => 'Date.CultureInfo={name:"es-ES",englishName:"Spanish (Spain)",nativeName:"español (España)",dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],abbreviatedDayNames:["dom","lun","mar","mié","jue","vie","sáb"],shortestDayNames:["do","lu","ma","mi","ju","vi","sá"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],abbreviatedMonthNames:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^ene(ro)?/i,feb:/^feb(rero)?/i,mar:/^mar(zo)?/i,apr:/^abr(il)?/i,may:/^may(o)?/i,jun:/^jun(io)?/i,jul:/^jul(io)?/i,aug:/^ago(sto)?/i,sep:/^sep(tiembre)?/i,oct:/^oct(ubre)?/i,nov:/^nov(iembre)?/i,dec:/^dic(iembre)?/i,sun:/^do(m(ingo)?)?/i,mon:/^lu(n(es)?)?/i,tue:/^ma(r(tes)?)?/i,wed:/^mi(é(rcoles)?)?/i,thu:/^ju(e(ves)?)?/i,fri:/^vi(e(rnes)?)?/i,sat:/^sá(b(ado)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'es-GT' => 'Date.CultureInfo={name:"es-GT",englishName:"Spanish (Guatemala)",nativeName:"Español (Guatemala)",dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],abbreviatedDayNames:["dom","lun","mar","mié","jue","vie","sáb"],shortestDayNames:["do","lu","ma","mi","ju","vi","sá"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],abbreviatedMonthNames:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],amDesignator:"a.m.",pmDesignator:"p.m.",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^ene(ro)?/i,feb:/^feb(rero)?/i,mar:/^mar(zo)?/i,apr:/^abr(il)?/i,may:/^may(o)?/i,jun:/^jun(io)?/i,jul:/^jul(io)?/i,aug:/^ago(sto)?/i,sep:/^sep(tiembre)?/i,oct:/^oct(ubre)?/i,nov:/^nov(iembre)?/i,dec:/^dic(iembre)?/i,sun:/^do(m(ingo)?)?/i,mon:/^lu(n(es)?)?/i,tue:/^ma(r(tes)?)?/i,wed:/^mi(é(rcoles)?)?/i,thu:/^ju(e(ves)?)?/i,fri:/^vi(e(rnes)?)?/i,sat:/^sá(b(ado)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'es-HN' => 'Date.CultureInfo={name:"es-HN",englishName:"Spanish (Honduras)",nativeName:"Español (Honduras)",dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],abbreviatedDayNames:["dom","lun","mar","mié","jue","vie","sáb"],shortestDayNames:["do","lu","ma","mi","ju","vi","sá"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],abbreviatedMonthNames:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],amDesignator:"a.m.",pmDesignator:"p.m.",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^ene(ro)?/i,feb:/^feb(rero)?/i,mar:/^mar(zo)?/i,apr:/^abr(il)?/i,may:/^may(o)?/i,jun:/^jun(io)?/i,jul:/^jul(io)?/i,aug:/^ago(sto)?/i,sep:/^sep(tiembre)?/i,oct:/^oct(ubre)?/i,nov:/^nov(iembre)?/i,dec:/^dic(iembre)?/i,sun:/^do(m(ingo)?)?/i,mon:/^lu(n(es)?)?/i,tue:/^ma(r(tes)?)?/i,wed:/^mi(é(rcoles)?)?/i,thu:/^ju(e(ves)?)?/i,fri:/^vi(e(rnes)?)?/i,sat:/^sá(b(ado)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'es-MX' => 'Date.CultureInfo={name:"es-MX",englishName:"Spanish (Mexico)",nativeName:"Español (México)",dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],abbreviatedDayNames:["dom","lun","mar","mié","jue","vie","sáb"],shortestDayNames:["do","lu","ma","mi","ju","vi","sá"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],abbreviatedMonthNames:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],amDesignator:"a.m.",pmDesignator:"p.m.",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^ene(ro)?/i,feb:/^feb(rero)?/i,mar:/^mar(zo)?/i,apr:/^abr(il)?/i,may:/^may(o)?/i,jun:/^jun(io)?/i,jul:/^jul(io)?/i,aug:/^ago(sto)?/i,sep:/^sep(tiembre)?/i,oct:/^oct(ubre)?/i,nov:/^nov(iembre)?/i,dec:/^dic(iembre)?/i,sun:/^do(m(ingo)?)?/i,mon:/^lu(n(es)?)?/i,tue:/^ma(r(tes)?)?/i,wed:/^mi(é(rcoles)?)?/i,thu:/^ju(e(ves)?)?/i,fri:/^vi(e(rnes)?)?/i,sat:/^sá(b(ado)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'es-NI' => 'Date.CultureInfo={name:"es-NI",englishName:"Spanish (Nicaragua)",nativeName:"Español (Nicaragua)",dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],abbreviatedDayNames:["dom","lun","mar","mié","jue","vie","sáb"],shortestDayNames:["do","lu","ma","mi","ju","vi","sá"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],abbreviatedMonthNames:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],amDesignator:"a.m.",pmDesignator:"p.m.",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^ene(ro)?/i,feb:/^feb(rero)?/i,mar:/^mar(zo)?/i,apr:/^abr(il)?/i,may:/^may(o)?/i,jun:/^jun(io)?/i,jul:/^jul(io)?/i,aug:/^ago(sto)?/i,sep:/^sep(tiembre)?/i,oct:/^oct(ubre)?/i,nov:/^nov(iembre)?/i,dec:/^dic(iembre)?/i,sun:/^do(m(ingo)?)?/i,mon:/^lu(n(es)?)?/i,tue:/^ma(r(tes)?)?/i,wed:/^mi(é(rcoles)?)?/i,thu:/^ju(e(ves)?)?/i,fri:/^vi(e(rnes)?)?/i,sat:/^sá(b(ado)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'es-PA' => 'Date.CultureInfo={name:"es-PA",englishName:"Spanish (Panama)",nativeName:"Español (Panamá)",dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],abbreviatedDayNames:["dom","lun","mar","mié","jue","vie","sáb"],shortestDayNames:["do","lu","ma","mi","ju","vi","sá"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],abbreviatedMonthNames:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],amDesignator:"a.m.",pmDesignator:"p.m.",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"mdy",formatPatterns:{shortDate:"MM/dd/yyyy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^ene(ro)?/i,feb:/^feb(rero)?/i,mar:/^mar(zo)?/i,apr:/^abr(il)?/i,may:/^may(o)?/i,jun:/^jun(io)?/i,jul:/^jul(io)?/i,aug:/^ago(sto)?/i,sep:/^sep(tiembre)?/i,oct:/^oct(ubre)?/i,nov:/^nov(iembre)?/i,dec:/^dic(iembre)?/i,sun:/^do(m(ingo)?)?/i,mon:/^lu(n(es)?)?/i,tue:/^ma(r(tes)?)?/i,wed:/^mi(é(rcoles)?)?/i,thu:/^ju(e(ves)?)?/i,fri:/^vi(e(rnes)?)?/i,sat:/^sá(b(ado)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'es-PE' => 'Date.CultureInfo={name:"es-PE",englishName:"Spanish (Peru)",nativeName:"Español (Perú)",dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],abbreviatedDayNames:["dom","lun","mar","mié","jue","vie","sáb"],shortestDayNames:["do","lu","ma","mi","ju","vi","sá"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],abbreviatedMonthNames:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],amDesignator:"a.m.",pmDesignator:"p.m.",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^ene(ro)?/i,feb:/^feb(rero)?/i,mar:/^mar(zo)?/i,apr:/^abr(il)?/i,may:/^may(o)?/i,jun:/^jun(io)?/i,jul:/^jul(io)?/i,aug:/^ago(sto)?/i,sep:/^sep(tiembre)?/i,oct:/^oct(ubre)?/i,nov:/^nov(iembre)?/i,dec:/^dic(iembre)?/i,sun:/^do(m(ingo)?)?/i,mon:/^lu(n(es)?)?/i,tue:/^ma(r(tes)?)?/i,wed:/^mi(é(rcoles)?)?/i,thu:/^ju(e(ves)?)?/i,fri:/^vi(e(rnes)?)?/i,sat:/^sá(b(ado)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'es-PR' => 'Date.CultureInfo={name:"es-PR",englishName:"Spanish (Puerto Rico)",nativeName:"Español (Puerto Rico)",dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],abbreviatedDayNames:["dom","lun","mar","mié","jue","vie","sáb"],shortestDayNames:["do","lu","ma","mi","ju","vi","sá"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],abbreviatedMonthNames:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],amDesignator:"a.m.",pmDesignator:"p.m.",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^ene(ro)?/i,feb:/^feb(rero)?/i,mar:/^mar(zo)?/i,apr:/^abr(il)?/i,may:/^may(o)?/i,jun:/^jun(io)?/i,jul:/^jul(io)?/i,aug:/^ago(sto)?/i,sep:/^sep(tiembre)?/i,oct:/^oct(ubre)?/i,nov:/^nov(iembre)?/i,dec:/^dic(iembre)?/i,sun:/^do(m(ingo)?)?/i,mon:/^lu(n(es)?)?/i,tue:/^ma(r(tes)?)?/i,wed:/^mi(é(rcoles)?)?/i,thu:/^ju(e(ves)?)?/i,fri:/^vi(e(rnes)?)?/i,sat:/^sá(b(ado)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'es-PY' => 'Date.CultureInfo={name:"es-PY",englishName:"Spanish (Paraguay)",nativeName:"Español (Paraguay)",dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],abbreviatedDayNames:["dom","lun","mar","mié","jue","vie","sáb"],shortestDayNames:["do","lu","ma","mi","ju","vi","sá"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],abbreviatedMonthNames:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],amDesignator:"a.m.",pmDesignator:"p.m.",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^ene(ro)?/i,feb:/^feb(rero)?/i,mar:/^mar(zo)?/i,apr:/^abr(il)?/i,may:/^may(o)?/i,jun:/^jun(io)?/i,jul:/^jul(io)?/i,aug:/^ago(sto)?/i,sep:/^sep(tiembre)?/i,oct:/^oct(ubre)?/i,nov:/^nov(iembre)?/i,dec:/^dic(iembre)?/i,sun:/^do(m(ingo)?)?/i,mon:/^lu(n(es)?)?/i,tue:/^ma(r(tes)?)?/i,wed:/^mi(é(rcoles)?)?/i,thu:/^ju(e(ves)?)?/i,fri:/^vi(e(rnes)?)?/i,sat:/^sá(b(ado)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'es-SV' => 'Date.CultureInfo={name:"es-SV",englishName:"Spanish (El Salvador)",nativeName:"Español (El Salvador)",dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],abbreviatedDayNames:["dom","lun","mar","mié","jue","vie","sáb"],shortestDayNames:["do","lu","ma","mi","ju","vi","sá"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],abbreviatedMonthNames:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],amDesignator:"a.m.",pmDesignator:"p.m.",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^ene(ro)?/i,feb:/^feb(rero)?/i,mar:/^mar(zo)?/i,apr:/^abr(il)?/i,may:/^may(o)?/i,jun:/^jun(io)?/i,jul:/^jul(io)?/i,aug:/^ago(sto)?/i,sep:/^sep(tiembre)?/i,oct:/^oct(ubre)?/i,nov:/^nov(iembre)?/i,dec:/^dic(iembre)?/i,sun:/^do(m(ingo)?)?/i,mon:/^lu(n(es)?)?/i,tue:/^ma(r(tes)?)?/i,wed:/^mi(é(rcoles)?)?/i,thu:/^ju(e(ves)?)?/i,fri:/^vi(e(rnes)?)?/i,sat:/^sá(b(ado)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'es-UY' => 'Date.CultureInfo={name:"es-UY",englishName:"Spanish (Uruguay)",nativeName:"Español (Uruguay)",dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],abbreviatedDayNames:["dom","lun","mar","mié","jue","vie","sáb"],shortestDayNames:["do","lu","ma","mi","ju","vi","sá"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],abbreviatedMonthNames:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],amDesignator:"a.m.",pmDesignator:"p.m.",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^ene(ro)?/i,feb:/^feb(rero)?/i,mar:/^mar(zo)?/i,apr:/^abr(il)?/i,may:/^may(o)?/i,jun:/^jun(io)?/i,jul:/^jul(io)?/i,aug:/^ago(sto)?/i,sep:/^sep(tiembre)?/i,oct:/^oct(ubre)?/i,nov:/^nov(iembre)?/i,dec:/^dic(iembre)?/i,sun:/^do(m(ingo)?)?/i,mon:/^lu(n(es)?)?/i,tue:/^ma(r(tes)?)?/i,wed:/^mi(é(rcoles)?)?/i,thu:/^ju(e(ves)?)?/i,fri:/^vi(e(rnes)?)?/i,sat:/^sá(b(ado)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'es-VE' => 'Date.CultureInfo={name:"es-VE",englishName:"Spanish (Venezuela)",nativeName:"Español (Republica Bolivariana de Venezuela)",dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],abbreviatedDayNames:["dom","lun","mar","mié","jue","vie","sáb"],shortestDayNames:["do","lu","ma","mi","ju","vi","sá"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],abbreviatedMonthNames:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],amDesignator:"a.m.",pmDesignator:"p.m.",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^ene(ro)?/i,feb:/^feb(rero)?/i,mar:/^mar(zo)?/i,apr:/^abr(il)?/i,may:/^may(o)?/i,jun:/^jun(io)?/i,jul:/^jul(io)?/i,aug:/^ago(sto)?/i,sep:/^sep(tiembre)?/i,oct:/^oct(ubre)?/i,nov:/^nov(iembre)?/i,dec:/^dic(iembre)?/i,sun:/^do(m(ingo)?)?/i,mon:/^lu(n(es)?)?/i,tue:/^ma(r(tes)?)?/i,wed:/^mi(é(rcoles)?)?/i,thu:/^ju(e(ves)?)?/i,fri:/^vi(e(rnes)?)?/i,sat:/^sá(b(ado)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'et-EE' => 'Date.CultureInfo={name:"et-EE",englishName:"Estonian (Estonia)",nativeName:"eesti (Eesti)",dayNames:["pühapäev","esmaspäev","teisipäev","kolmapäev","neljapäev","reede","laupäev"],abbreviatedDayNames:["P","E","T","K","N","R","L"],shortestDayNames:["P","E","T","K","N","R","L"],firstLetterDayNames:["P","E","T","K","N","R","L"],monthNames:["jaanuar","veebruar","märts","aprill","mai","juuni","juuli","august","september","oktoober","november","detsember"],abbreviatedMonthNames:["jaan","veebr","märts","apr","mai","juuni","juuli","aug","sept","okt","nov","dets"],amDesignator:"EL",pmDesignator:"PL",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d.MM.yyyy",longDate:"d. MMMM yyyy\'. a.\'",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"d. MMMM yyyy\'. a.\' H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d. MMMM",yearMonth:"MMMM yyyy\'. a.\'"},regexPatterns:{jan:/^jaan(uar)?/i,feb:/^veebr(uar)?/i,mar:/^märts/i,apr:/^apr(ill)?/i,may:/^mai/i,jun:/^juuni/i,jul:/^juuli/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^okt(oober)?/i,nov:/^nov(ember)?/i,dec:/^dets(ember)?/i,sun:/^pühapäev/i,mon:/^esmaspäev/i,tue:/^teisipäev/i,wed:/^kolmapäev/i,thu:/^neljapäev/i,fri:/^reede/i,sat:/^laupäev/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'eu-ES' => 'Date.CultureInfo={name:"eu-ES",englishName:"Basque (Basque)",nativeName:"euskara (euskara)",dayNames:["igandea","astelehena","asteartea","asteazkena","osteguna","ostirala","larunbata"],abbreviatedDayNames:["ig.","al.","as.","az.","og.","or.","lr."],shortestDayNames:["ig","al","as","az","og","or","lr"],firstLetterDayNames:["i","a","a","a","o","o","l"],monthNames:["urtarrila","otsaila","martxoa","apirila","maiatza","ekaina","uztaila","abuztua","iraila","urria","azaroa","abendua"],abbreviatedMonthNames:["urt.","ots.","mar.","api.","mai.","eka.","uzt.","abu.","ira.","urr.","aza.","abe."],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"ymd",formatPatterns:{shortDate:"yyyy/MM/dd",longDate:"dddd, yyyy.\'eko\' MMMM\'k \'d",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dddd, yyyy.\'eko\' MMMM\'k \'d HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"yyyy.\'eko\' MMMM"},regexPatterns:{jan:/^urt(.(arrila)?)?/i,feb:/^ots(.(aila)?)?/i,mar:/^mar(.(txoa)?)?/i,apr:/^api(.(rila)?)?/i,may:/^mai(.(atza)?)?/i,jun:/^eka(.(ina)?)?/i,jul:/^uzt(.(aila)?)?/i,aug:/^abu(.(ztua)?)?/i,sep:/^ira(.(ila)?)?/i,oct:/^urr(.(ia)?)?/i,nov:/^aza(.(roa)?)?/i,dec:/^abe(.(ndua)?)?/i,sun:/^ig((.(andea)?)?)?/i,mon:/^al((.(telehena)?)?)?/i,tue:/^as((.(teartea)?)?)?/i,wed:/^az((.(teazkena)?)?)?/i,thu:/^og((.(teguna)?)?)?/i,fri:/^or((.(tirala)?)?)?/i,sat:/^lr((.(runbata)?)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'fa-IR' => 'Date.CultureInfo={name:"fa-IR",englishName:"Persian (Iran)",nativeName:"فارسى (ايران)",dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["Su","Mo","Tu","We","Th","Fr","Sa"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"ق.ظ",pmDesignator:"ب.ظ",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"mdy",formatPatterns:{shortDate:"M/d/yyyy",longDate:"dddd, MMMM dd, yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dddd, MMMM dd, yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^jan(uary)?/i,feb:/^feb(ruary)?/i,mar:/^mar(ch)?/i,apr:/^apr(il)?/i,may:/^may/i,jun:/^jun(e)?/i,jul:/^jul(y)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^oct(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^su(n(day)?)?/i,mon:/^mo(n(day)?)?/i,tue:/^tu(e(s(day)?)?)?/i,wed:/^we(d(nesday)?)?/i,thu:/^th(u(r(s(day)?)?)?)?/i,fri:/^fr(i(day)?)?/i,sat:/^sa(t(urday)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'fi-FI' => 'Date.CultureInfo={name:"fi-FI",englishName:"Finnish (Finland)",nativeName:"suomi (Suomi)",dayNames:["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"],abbreviatedDayNames:["su","ma","ti","ke","to","pe","la"],shortestDayNames:["su","ma","ti","ke","to","pe","la"],firstLetterDayNames:["s","m","t","k","t","p","l"],monthNames:["tammikuu","helmikuu","maaliskuu","huhtikuu","toukokuu","kesäkuu","heinäkuu","elokuu","syyskuu","lokakuu","marraskuu","joulukuu"],abbreviatedMonthNames:["tammi","helmi","maalis","huhti","touko","kesä","heinä","elo","syys","loka","marras","joulu"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d.M.yyyy",longDate:"d. MMMM\'ta \'yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"d. MMMM\'ta \'yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d. MMMM\'ta\'",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^tammi(kuu)?/i,feb:/^helmi(kuu)?/i,mar:/^maalis(kuu)?/i,apr:/^huhti(kuu)?/i,may:/^touko(kuu)?/i,jun:/^kesä(kuu)?/i,jul:/^heinä(kuu)?/i,aug:/^elo(kuu)?/i,sep:/^syys(kuu)?/i,oct:/^loka(kuu)?/i,nov:/^marras(kuu)?/i,dec:/^joulu(kuu)?/i,sun:/^sunnuntai/i,mon:/^maanantai/i,tue:/^tiistai/i,wed:/^keskiviikko/i,thu:/^torstai/i,fri:/^perjantai/i,sat:/^lauantai/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'fo-FO' => 'Date.CultureInfo={name:"fo-FO",englishName:"Faroese (Faroe Islands)",nativeName:"føroyskt (Føroyar)",dayNames:["sunnudagur","mánadagur","týsdagur","mikudagur","hósdagur","fríggjadagur","leygardagur"],abbreviatedDayNames:["sun","mán","týs","mik","hós","frí","leyg"],shortestDayNames:["su","má","tý","mi","hó","fr","ley"],firstLetterDayNames:["s","m","t","m","h","f","l"],monthNames:["januar","februar","mars","apríl","mai","juni","juli","august","september","oktober","november","desember"],abbreviatedMonthNames:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd-MM-yyyy",longDate:"d. MMMM yyyy",shortTime:"HH.mm",longTime:"HH.mm.ss",fullDateTime:"d. MMMM yyyy HH.mm.ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d. MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uar)?/i,feb:/^feb(ruar)?/i,mar:/^mar(s)?/i,apr:/^apr(íl)?/i,may:/^mai/i,jun:/^jun(i)?/i,jul:/^jul(i)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^okt(ober)?/i,nov:/^nov(ember)?/i,dec:/^des(ember)?/i,sun:/^su(n(nudagur)?)?/i,mon:/^má(n(adagur)?)?/i,tue:/^tý(s(dagur)?)?/i,wed:/^mi(k(udagur)?)?/i,thu:/^hó(s(dagur)?)?/i,fri:/^fr(í(ggjadagur)?)?/i,sat:/^ley(g(ardagur)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'fr-BE' => 'Date.CultureInfo={name:"fr-BE",englishName:"French (Belgium)",nativeName:"français (Belgique)",dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],abbreviatedDayNames:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],shortestDayNames:["di","lu","ma","me","je","ve","sa"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],abbreviatedMonthNames:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d/MM/yyyy",longDate:"dddd d MMMM yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"dddd d MMMM yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^janv(.(ier)?)?/i,feb:/^févr(.(ier)?)?/i,mar:/^mars/i,apr:/^avr(.(il)?)?/i,may:/^mai/i,jun:/^juin/i,jul:/^juil(.(let)?)?/i,aug:/^août/i,sep:/^sept(.(embre)?)?/i,oct:/^oct(.(obre)?)?/i,nov:/^nov(.(embre)?)?/i,dec:/^déc(.(embre)?)?/i,sun:/^di(m(.(anche)?)?)?/i,mon:/^lu(n(.(di)?)?)?/i,tue:/^ma(r(.(di)?)?)?/i,wed:/^me(r(.(credi)?)?)?/i,thu:/^je(u(.(di)?)?)?/i,fri:/^ve(n(.(dredi)?)?)?/i,sat:/^sa(m(.(edi)?)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'fr-CA' => 'Date.CultureInfo={name:"fr-CA",englishName:"French (Canada)",nativeName:"français (Canada)",dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],abbreviatedDayNames:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],shortestDayNames:["di","lu","ma","me","je","ve","sa"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],abbreviatedMonthNames:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],amDesignator:"",pmDesignator:"",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"ymd",formatPatterns:{shortDate:"yyyy-MM-dd",longDate:"d MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"d MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^janv(.(ier)?)?/i,feb:/^févr(.(ier)?)?/i,mar:/^mars/i,apr:/^avr(.(il)?)?/i,may:/^mai/i,jun:/^juin/i,jul:/^juil(.(let)?)?/i,aug:/^août/i,sep:/^sept(.(embre)?)?/i,oct:/^oct(.(obre)?)?/i,nov:/^nov(.(embre)?)?/i,dec:/^déc(.(embre)?)?/i,sun:/^di(m(.(anche)?)?)?/i,mon:/^lu(n(.(di)?)?)?/i,tue:/^ma(r(.(di)?)?)?/i,wed:/^me(r(.(credi)?)?)?/i,thu:/^je(u(.(di)?)?)?/i,fri:/^ve(n(.(dredi)?)?)?/i,sat:/^sa(m(.(edi)?)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'fr-CH' => 'Date.CultureInfo={name:"fr-CH",englishName:"French (Switzerland)",nativeName:"français (Suisse)",dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],abbreviatedDayNames:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],shortestDayNames:["di","lu","ma","me","je","ve","sa"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],abbreviatedMonthNames:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"dddd, d. MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dddd, d. MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^janv(.(ier)?)?/i,feb:/^févr(.(ier)?)?/i,mar:/^mars/i,apr:/^avr(.(il)?)?/i,may:/^mai/i,jun:/^juin/i,jul:/^juil(.(let)?)?/i,aug:/^août/i,sep:/^sept(.(embre)?)?/i,oct:/^oct(.(obre)?)?/i,nov:/^nov(.(embre)?)?/i,dec:/^déc(.(embre)?)?/i,sun:/^di(m(.(anche)?)?)?/i,mon:/^lu(n(.(di)?)?)?/i,tue:/^ma(r(.(di)?)?)?/i,wed:/^me(r(.(credi)?)?)?/i,thu:/^je(u(.(di)?)?)?/i,fri:/^ve(n(.(dredi)?)?)?/i,sat:/^sa(m(.(edi)?)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'fr-FR' => 'Date.CultureInfo={name:"fr-FR",englishName:"French (France)",nativeName:"français (France)",dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],abbreviatedDayNames:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],shortestDayNames:["di","lu","ma","me","je","ve","sa"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],abbreviatedMonthNames:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd d MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dddd d MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^janv(.(ier)?)?/i,feb:/^févr(.(ier)?)?/i,mar:/^mars/i,apr:/^avr(.(il)?)?/i,may:/^mai/i,jun:/^juin/i,jul:/^juil(.(let)?)?/i,aug:/^août/i,sep:/^sept(.(embre)?)?/i,oct:/^oct(.(obre)?)?/i,nov:/^nov(.(embre)?)?/i,dec:/^déc(.(embre)?)?/i,sun:/^di(m(.(anche)?)?)?/i,mon:/^lu(n(.(di)?)?)?/i,tue:/^ma(r(.(di)?)?)?/i,wed:/^me(r(.(credi)?)?)?/i,thu:/^je(u(.(di)?)?)?/i,fri:/^ve(n(.(dredi)?)?)?/i,sat:/^sa(m(.(edi)?)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'fr-LU' => 'Date.CultureInfo={name:"fr-LU",englishName:"French (Luxembourg)",nativeName:"français (Luxembourg)",dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],abbreviatedDayNames:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],shortestDayNames:["di","lu","ma","me","je","ve","sa"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],abbreviatedMonthNames:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd d MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dddd d MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^janv(.(ier)?)?/i,feb:/^févr(.(ier)?)?/i,mar:/^mars/i,apr:/^avr(.(il)?)?/i,may:/^mai/i,jun:/^juin/i,jul:/^juil(.(let)?)?/i,aug:/^août/i,sep:/^sept(.(embre)?)?/i,oct:/^oct(.(obre)?)?/i,nov:/^nov(.(embre)?)?/i,dec:/^déc(.(embre)?)?/i,sun:/^di(m(.(anche)?)?)?/i,mon:/^lu(n(.(di)?)?)?/i,tue:/^ma(r(.(di)?)?)?/i,wed:/^me(r(.(credi)?)?)?/i,thu:/^je(u(.(di)?)?)?/i,fri:/^ve(n(.(dredi)?)?)?/i,sat:/^sa(m(.(edi)?)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'fr-MC' => 'Date.CultureInfo={name:"fr-MC",englishName:"French (Principality of Monaco)",nativeName:"français (Principauté de Monaco)",dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],abbreviatedDayNames:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],shortestDayNames:["di","lu","ma","me","je","ve","sa"],firstLetterDayNames:["d","l","m","m","j","v","s"],monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],abbreviatedMonthNames:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd d MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dddd d MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^janv(.(ier)?)?/i,feb:/^févr(.(ier)?)?/i,mar:/^mars/i,apr:/^avr(.(il)?)?/i,may:/^mai/i,jun:/^juin/i,jul:/^juil(.(let)?)?/i,aug:/^août/i,sep:/^sept(.(embre)?)?/i,oct:/^oct(.(obre)?)?/i,nov:/^nov(.(embre)?)?/i,dec:/^déc(.(embre)?)?/i,sun:/^di(m(.(anche)?)?)?/i,mon:/^lu(n(.(di)?)?)?/i,tue:/^ma(r(.(di)?)?)?/i,wed:/^me(r(.(credi)?)?)?/i,thu:/^je(u(.(di)?)?)?/i,fri:/^ve(n(.(dredi)?)?)?/i,sat:/^sa(m(.(edi)?)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'gl-ES' => 'Date.CultureInfo={name:"gl-ES",englishName:"Galician (Galician)",nativeName:"galego (galego)",dayNames:["domingo","luns","martes","mércores","xoves","venres","sábado"],abbreviatedDayNames:["dom","luns","mar","mér","xov","ven","sab"],shortestDayNames:["do","lu","ma","mé","xo","ve","sa"],firstLetterDayNames:["d","l","m","m","x","v","s"],monthNames:["xaneiro","febreiro","marzo","abril","maio","xuño","xullo","agosto","setembro","outubro","novembro","decembro"],abbreviatedMonthNames:["xan","feb","mar","abr","maio","xuñ","xull","ago","set","out","nov","dec"],amDesignator:"a.m.",pmDesignator:"p.m.",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^xan(eiro)?/i,feb:/^feb(reiro)?/i,mar:/^mar(zo)?/i,apr:/^abr(il)?/i,may:/^maio/i,jun:/^xuñ(o)?/i,jul:/^xull(o)?/i,aug:/^ago(sto)?/i,sep:/^set(embro)?/i,oct:/^out(ubro)?/i,nov:/^nov(embro)?/i,dec:/^dec(embro)?/i,sun:/^do(m(ingo)?)?/i,mon:/^lu(1)?/i,tue:/^ma(r(tes)?)?/i,wed:/^mé(r(cores)?)?/i,thu:/^xo(v(es)?)?/i,fri:/^ve(n(res)?)?/i,sat:/^sa(b(ado)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'gu-IN' => 'Date.CultureInfo={name:"gu-IN",englishName:"Gujarati (India)",nativeName:"ગુજરાતી (ભારત)",dayNames:["રવિવાર","સોમવાર","મંગળવાર","બુધવાર","ગુરુવાર","શુક્રવાર","શનિવાર"],abbreviatedDayNames:["રવિ","સોમ","મંગળ","બુધ","ગુરુ","શુક્ર","શનિ"],shortestDayNames:["ર","સ","મ","બ","ગ","શ","શ"],firstLetterDayNames:["ર","સ","મ","બ","ગ","શ","શ"],monthNames:["જાન્યુઆરી","ફેબ્રુઆરી","માર્ચ","એપ્રિલ","મે","જૂન","જુલાઈ","ઑગસ્ટ","સપ્ટેમ્બર","ઑક્ટ્બર","નવેમ્બર","ડિસેમ્બર"],abbreviatedMonthNames:["જાન્યુ","ફેબ્રુ","માર્ચ","એપ્રિલ","મે","જૂન","જુલાઈ","ઑગસ્ટ","સપ્ટે","ઑક્ટો","નવે","ડિસે"],amDesignator:"પૂર્વ મધ્યાહ્ન",pmDesignator:"ઉત્તર મધ્યાહ્ન",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd-MM-yy",longDate:"dd MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dd MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^જાન્યુ(આરી)?/i,feb:/^ફેબ્રુ(આરી)?/i,mar:/^માર્ચ/i,apr:/^એપ્રિલ/i,may:/^મે/i,jun:/^જૂન/i,jul:/^જુલાઈ/i,aug:/^ઑગસ્ટ/i,sep:/^સપ્ટે(મ્બર)?/i,oct:/^ઑક્ટ્બર/i,nov:/^નવે(મ્બર)?/i,dec:/^ડિસે(મ્બર)?/i,sun:/^ર(વિ(વાર)?)?/i,mon:/^સ(ોમ(વાર)?)?/i,tue:/^મ(ંગળ(વાર)?)?/i,wed:/^બ(ુધ(વાર)?)?/i,thu:/^ગ(ુરુ(વાર)?)?/i,fri:/^શ(ુક્ર(વાર)?)?/i,sat:/^શ(નિ(વાર)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'he-IL' => 'Date.CultureInfo={name:"he-IL",englishName:"Hebrew (Israel)",nativeName:"עברית (ישראל)",dayNames:["יום ראשון","יום שני","יום שלישי","יום רביעי","יום חמישי","יום שישי","שבת"],abbreviatedDayNames:["יום א","יום ב","יום ג","יום ד","יום ה","יום ו","שבת"],shortestDayNames:["א","ב","ג","ד","ה","ו","ש"],firstLetterDayNames:["א","ב","ג","ד","ה","ו","ש"],monthNames:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],abbreviatedMonthNames:["ינו","פבר","מרץ","אפר","מאי","יונ","יול","אוג","ספט","אוק","נוב","דצמ"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd dd MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dddd dd MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^ינו(אר)?/i,feb:/^פבר(ואר)?/i,mar:/^מרץ/i,apr:/^אפר(יל)?/i,may:/^מאי/i,jun:/^יונ(י)?/i,jul:/^יול(י)?/i,aug:/^אוג(וסט)?/i,sep:/^ספט(מבר)?/i,oct:/^אוק(טובר)?/i,nov:/^נוב(מבר)?/i,dec:/^דצמ(בר)?/i,sun:/^א(ום א(אשון)?)?/i,mon:/^ב(ום ב(ני)?)?/i,tue:/^ג(ום ג(לישי)?)?/i,wed:/^ד(ום ד(ביעי)?)?/i,thu:/^ה(ום ה(מישי)?)?/i,fri:/^ו(ום ו(ישי)?)?/i,sat:/^ש(1)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'hi-IN' => 'Date.CultureInfo={name:"hi-IN",englishName:"Hindi (India)",nativeName:"हिंदी (भारत)",dayNames:["रविवार","सोमवार","मंगलवार","बुधवार","गुरुवार","शुक्रवार","शनिवार"],abbreviatedDayNames:["रवि.","सोम.","मंगल.","बुध.","गुरु.","शुक्र.","शनि."],shortestDayNames:["र","स","म","ब","ग","श","श"],firstLetterDayNames:["र","स","म","ब","ग","श","श"],monthNames:["जनवरी","फरवरी","मार्च","अप्रैल","मई","जून","जुलाई","अगस्त","सितम्बर","अक्तूबर","नवम्बर","दिसम्बर"],abbreviatedMonthNames:["जनवरी","फरवरी","मार्च","अप्रैल","मई","जून","जुलाई","अगस्त","सितम्बर","अक्तूबर","नवम्बर","दिसम्बर"],amDesignator:"पूर्वाह्न",pmDesignator:"अपराह्न",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd-MM-yyyy",longDate:"dd MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dd MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^जनवरी/i,feb:/^फरवरी/i,mar:/^मार्च/i,apr:/^अप्रैल/i,may:/^मई/i,jun:/^जून/i,jul:/^जुलाई/i,aug:/^अगस्त/i,sep:/^सितम्बर/i,oct:/^अक्तूबर/i,nov:/^नवम्बर/i,dec:/^दिसम्बर/i,sun:/^र(वि(.(वार)?)?)?/i,mon:/^स(ोम(.(वार)?)?)?/i,tue:/^म(ंगल(.(वार)?)?)?/i,wed:/^ब(ुध(.(वार)?)?)?/i,thu:/^ग(ुरु(.(वार)?)?)?/i,fri:/^श(ुक्र(.(वार)?)?)?/i,sat:/^श(नि(.(वार)?)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'hr-BA' => 'Date.CultureInfo={name:"hr-BA",englishName:"Croatian (Bosnia and Herzegovina)",nativeName:"hrvatski (Bosna i Hercegovina)",dayNames:["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],abbreviatedDayNames:["ned","pon","uto","sri","čet","pet","sub"],shortestDayNames:["ned","pon","uto","sri","čet","pet","sub"],firstLetterDayNames:["n","p","u","s","č","p","s"],monthNames:["siječanj","veljača","ožujak","travanj","svibanj","lipanj","srpanj","kolovoz","rujan","listopad","studeni","prosinac"],abbreviatedMonthNames:["sij","vlj","ožu","tra","svi","lip","srp","kol","ruj","lis","stu","pro"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d.M.yyyy",longDate:"d. MMMM yyyy",shortTime:"H:mm:ss",longTime:"H:mm:ss",fullDateTime:"d. MMMM yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^sij(ečanj)?/i,feb:/^veljača/i,mar:/^ožu(jak)?/i,apr:/^tra(vanj)?/i,may:/^svi(banj)?/i,jun:/^lip(anj)?/i,jul:/^srp(anj)?/i,aug:/^kol(ovoz)?/i,sep:/^ruj(an)?/i,oct:/^lis(topad)?/i,nov:/^stu(deni)?/i,dec:/^pro(sinac)?/i,sun:/^nedjelja/i,mon:/^ponedjeljak/i,tue:/^utorak/i,wed:/^srijeda/i,thu:/^četvrtak/i,fri:/^petak/i,sat:/^subota/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'hr-HR' => 'Date.CultureInfo={name:"hr-HR",englishName:"Croatian (Croatia)",nativeName:"hrvatski (Hrvatska)",dayNames:["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],abbreviatedDayNames:["ned","pon","uto","sri","čet","pet","sub"],shortestDayNames:["ne","po","ut","sr","če","pe","su"],firstLetterDayNames:["n","p","u","s","č","p","s"],monthNames:["siječanj","veljača","ožujak","travanj","svibanj","lipanj","srpanj","kolovoz","rujan","listopad","studeni","prosinac"],abbreviatedMonthNames:["sij","vlj","ožu","tra","svi","lip","srp","kol","ruj","lis","stu","pro"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d.M.yyyy",longDate:"d. MMMM yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"d. MMMM yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d. MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^sij(ečanj)?/i,feb:/^veljača/i,mar:/^ožu(jak)?/i,apr:/^tra(vanj)?/i,may:/^svi(banj)?/i,jun:/^lip(anj)?/i,jul:/^srp(anj)?/i,aug:/^kol(ovoz)?/i,sep:/^ruj(an)?/i,oct:/^lis(topad)?/i,nov:/^stu(deni)?/i,dec:/^pro(sinac)?/i,sun:/^ne(d(jelja)?)?/i,mon:/^po(n(edjeljak)?)?/i,tue:/^ut(o(rak)?)?/i,wed:/^sr(i(jeda)?)?/i,thu:/^če(t(vrtak)?)?/i,fri:/^pe(t(ak)?)?/i,sat:/^su(b(ota)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'hu-HU' => 'Date.CultureInfo={name:"hu-HU",englishName:"Hungarian (Hungary)",nativeName:"magyar (Magyarország)",dayNames:["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"],abbreviatedDayNames:["V","H","K","Sze","Cs","P","Szo"],shortestDayNames:["V","H","K","Sze","Cs","P","Szo"],firstLetterDayNames:["V","H","K","S","C","P","S"],monthNames:["január","február","március","április","május","június","július","augusztus","szeptember","október","november","december"],abbreviatedMonthNames:["jan.","febr.","márc.","ápr.","máj.","jún.","júl.","aug.","szept.","okt.","nov.","dec."],amDesignator:"de.",pmDesignator:"du.",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"ymd",formatPatterns:{shortDate:"yyyy. MM. dd.",longDate:"yyyy. MMMM d.",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"yyyy. MMMM d. H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM d.",yearMonth:"yyyy. MMMM"},regexPatterns:{jan:/^jan(.(uár)?)?/i,feb:/^febr(.(uár)?)?/i,mar:/^márc(.(ius)?)?/i,apr:/^ápr(.(ilis)?)?/i,may:/^máj(.(us)?)?/i,jun:/^jún(.(ius)?)?/i,jul:/^júl(.(ius)?)?/i,aug:/^aug(.(usztus)?)?/i,sep:/^szept(.(ember)?)?/i,oct:/^okt(.(óber)?)?/i,nov:/^nov(.(ember)?)?/i,dec:/^dec(.(ember)?)?/i,sun:/^vasárnap/i,mon:/^hétfő/i,tue:/^kedd/i,wed:/^szerda/i,thu:/^csütörtök/i,fri:/^péntek/i,sat:/^szombat/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'hy-AM' => 'Date.CultureInfo={name:"hy-AM",englishName:"Armenian (Armenia)",nativeName:"Հայերեն (Հայաստան)",dayNames:["Կիրակի","Երկուշաբթի","Երեքշաբթի","Չորեքշաբթի","Հինգշաբթի","ՈՒրբաթ","Շաբաթ"],abbreviatedDayNames:["Կիր","Երկ","Երք","Չրք","Հնգ","ՈՒր","Շբթ"],shortestDayNames:["Կ","Ե","Ե","Չ","Հ","Ո","Շ"],firstLetterDayNames:["Կ","Ե","Ե","Չ","Հ","Ո","Շ"],monthNames:["Հունվար","Փետրվար","Մարտ","Ապրիլ","Մայիս","Հունիս","Հուլիս","Օգոստոս","Սեպտեմբեր","Հոկտեմբեր","Նոյեմբեր","Դեկտեմբեր"],abbreviatedMonthNames:["ՀՆՎ","ՓՏՎ","ՄՐՏ","ԱՊՐ","ՄՅՍ","ՀՆՍ","ՀԼՍ","ՕԳՍ","ՍԵՊ","ՀՈԿ","ՆՈՅ","ԴԵԿ"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"d MMMM, yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"d MMMM, yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^հունվար/i,feb:/^փետրվար/i,mar:/^մարտ/i,apr:/^ապր(իլ)?/i,may:/^մայիս/i,jun:/^հունիս/i,jul:/^հուլիս/i,aug:/^օգոստոս/i,sep:/^սեպ(տեմբեր)?/i,oct:/^հոկ(տեմբեր)?/i,nov:/^նոյ(եմբեր)?/i,dec:/^դեկ(տեմբեր)?/i,sun:/^կ(իր(ակի)?)?/i,mon:/^ե(րկ(ուշաբթի)?)?/i,tue:/^ե(րք(քշաբթի)?)?/i,wed:/^չ(րք(եքշաբթի)?)?/i,thu:/^հ(նգ(գշաբթի)?)?/i,fri:/^ո(ւր(բաթ)?)?/i,sat:/^շ(բթ(աթ)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'id-ID' => 'Date.CultureInfo={name:"id-ID",englishName:"Indonesian (Indonesia)",nativeName:"Bahasa Indonesia (Indonesia)",dayNames:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],abbreviatedDayNames:["Minggu","Sen","Sel","Rabu","Kamis","Jumat","Sabtu"],shortestDayNames:["M","S","S","R","K","J","S"],firstLetterDayNames:["M","S","S","R","K","J","S"],monthNames:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","Nopember","Desember"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agust","Sep","Okt","Nop","Des"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dd MMMM yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"dd MMMM yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uari)?/i,feb:/^feb(ruari)?/i,mar:/^mar(et)?/i,apr:/^apr(il)?/i,may:/^mei/i,jun:/^jun(i)?/i,jul:/^jul(i)?/i,aug:/^agust(us)?/i,sep:/^sep(t(ember)?)?/i,oct:/^okt(ober)?/i,nov:/^nop(ember)?/i,dec:/^des(ember)?/i,sun:/^m(1)?/i,mon:/^s(en(in)?)?/i,tue:/^s(el(asa)?)?/i,wed:/^r(1)?/i,thu:/^k(1)?/i,fri:/^j(1)?/i,sat:/^s(1)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'is-IS' => 'Date.CultureInfo={name:"is-IS",englishName:"Icelandic (Iceland)",nativeName:"íslenska (Ísland)",dayNames:["sunnudagur","mánudagur","þriðjudagur","miðvikudagur","fimmtudagur","föstudagur","laugardagur"],abbreviatedDayNames:["sun.","mán.","þri.","mið.","fim.","fös.","lau."],shortestDayNames:["su","má","þr","mi","fi","fö","la"],firstLetterDayNames:["s","m","þ","m","f","f","l"],monthNames:["janúar","febrúar","mars","apríl","maí","júní","júlí","ágúst","september","október","nóvember","desember"],abbreviatedMonthNames:["jan.","feb.","mar.","apr.","maí","jún.","júl.","ágú.","sep.","okt.","nóv.","des."],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d.M.yyyy",longDate:"d. MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"d. MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d. MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(.(úar)?)?/i,feb:/^feb(.(rúar)?)?/i,mar:/^mar(.(s)?)?/i,apr:/^apr(.(íl)?)?/i,may:/^maí/i,jun:/^jún(.(í)?)?/i,jul:/^júl(.(í)?)?/i,aug:/^ágú(.(st)?)?/i,sep:/^sep(t(ember)?)?/i,oct:/^okt(.(óber)?)?/i,nov:/^nóv(.(ember)?)?/i,dec:/^des(.(ember)?)?/i,sun:/^su(n(.(nudagur)?)?)?/i,mon:/^má(n(.(udagur)?)?)?/i,tue:/^þr(i(.(ðjudagur)?)?)?/i,wed:/^mi(ð(.(vikudagur)?)?)?/i,thu:/^fi(m(.(mtudagur)?)?)?/i,fri:/^fö(s(.(tudagur)?)?)?/i,sat:/^la(u(.(gardagur)?)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'it-CH' => 'Date.CultureInfo={name:"it-CH",englishName:"Italian (Switzerland)",nativeName:"italiano (Svizzera)",dayNames:["domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"],abbreviatedDayNames:["dom","lun","mar","mer","gio","ven","sab"],shortestDayNames:["do","lu","ma","me","gi","ve","sa"],firstLetterDayNames:["d","l","m","m","g","v","s"],monthNames:["gennaio","febbraio","marzo","aprile","maggio","giugno","luglio","agosto","settembre","ottobre","novembre","dicembre"],abbreviatedMonthNames:["gen","feb","mar","apr","mag","gio","lug","ago","set","ott","nov","dic"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"dddd, d. MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dddd, d. MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d. MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^gen(naio)?/i,feb:/^feb(braio)?/i,mar:/^mar(zo)?/i,apr:/^apr(ile)?/i,may:/^mag(gio)?/i,jun:/^giugno/i,jul:/^lug(lio)?/i,aug:/^ago(sto)?/i,sep:/^set(tembre)?/i,oct:/^ott(obre)?/i,nov:/^nov(embre)?/i,dec:/^dic(embre)?/i,sun:/^do(m(enica)?)?/i,mon:/^lu(n(edì)?)?/i,tue:/^ma(r(tedì)?)?/i,wed:/^me(r(coledì)?)?/i,thu:/^gi(o(vedì)?)?/i,fri:/^ve(n(erdì)?)?/i,sat:/^sa(b(ato)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'it-IT' => 'Date.CultureInfo={name:"it-IT",englishName:"Italian (Italy)",nativeName:"italiano (Italia)",dayNames:["domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"],abbreviatedDayNames:["dom","lun","mar","mer","gio","ven","sab"],shortestDayNames:["do","lu","ma","me","gi","ve","sa"],firstLetterDayNames:["d","l","m","m","g","v","s"],monthNames:["gennaio","febbraio","marzo","aprile","maggio","giugno","luglio","agosto","settembre","ottobre","novembre","dicembre"],abbreviatedMonthNames:["gen","feb","mar","apr","mag","giu","lug","ago","set","ott","nov","dic"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd d MMMM yyyy",shortTime:"H.mm",longTime:"H.mm.ss",fullDateTime:"dddd d MMMM yyyy H.mm.ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^gen(naio)?/i,feb:/^feb(braio)?/i,mar:/^mar(zo)?/i,apr:/^apr(ile)?/i,may:/^mag(gio)?/i,jun:/^giu(gno)?/i,jul:/^lug(lio)?/i,aug:/^ago(sto)?/i,sep:/^set(tembre)?/i,oct:/^ott(obre)?/i,nov:/^nov(embre)?/i,dec:/^dic(embre)?/i,sun:/^do(m(enica)?)?/i,mon:/^lu(n(edì)?)?/i,tue:/^ma(r(tedì)?)?/i,wed:/^me(r(coledì)?)?/i,thu:/^gi(o(vedì)?)?/i,fri:/^ve(n(erdì)?)?/i,sat:/^sa(b(ato)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'ja-JP' => 'Date.CultureInfo={name:"ja-JP",englishName:"Japanese (Japan)",nativeName:"日本語 (日本)",dayNames:["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],abbreviatedDayNames:["日","月","火","水","木","金","土"],shortestDayNames:["日","月","火","水","木","金","土"],firstLetterDayNames:["日","月","火","水","木","金","土"],monthNames:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],abbreviatedMonthNames:["1","2","3","4","5","6","7","8","9","10","11","12"],amDesignator:"午前",pmDesignator:"午後",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"ymd",formatPatterns:{shortDate:"yyyy/MM/dd",longDate:"yyyy\'年\'M\'月\'d\'日\'",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"yyyy\'年\'M\'月\'d\'日\' H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"M\'月\'d\'日\'",yearMonth:"yyyy\'年\'M\'月\'"},regexPatterns:{jan:/^1(月)?/i,feb:/^2(月)?/i,mar:/^3(月)?/i,apr:/^4(月)?/i,may:/^5(月)?/i,jun:/^6(月)?/i,jul:/^7(月)?/i,aug:/^8(月)?/i,sep:/^9(月)?/i,oct:/^10(月)?/i,nov:/^11(月)?/i,dec:/^12(月)?/i,sun:/^日曜日/i,mon:/^月曜日/i,tue:/^火曜日/i,wed:/^水曜日/i,thu:/^木曜日/i,fri:/^金曜日/i,sat:/^土曜日/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'ka-GE' => 'Date.CultureInfo={name:"ka-GE",englishName:"Georgian (Georgia)",nativeName:"ქართული (საქართველო)",dayNames:["კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი"],abbreviatedDayNames:["კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი"],shortestDayNames:["კ","ო","ს","ო","ხ","პ","შ"],firstLetterDayNames:["კ","ო","ს","ო","ხ","პ","შ"],monthNames:["იანვარი","თებერვალი","მარტი","აპრილი","მაისი","ივნისი","ივლისი","აგვისტო","სექტემბერი","ოქტომბერი","ნოემბერი","დეკემბერი"],abbreviatedMonthNames:["იან","თებ","მარ","აპრ","მაის","ივნ","ივლ","აგვ","სექ","ოქტ","ნოემ","დეკ"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"yyyy \'წლის\' dd MM, dddd",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"yyyy \'წლის\' dd MM, dddd H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^იან(ვარი)?/i,feb:/^თებ(ერვალი)?/i,mar:/^მარ(ტი)?/i,apr:/^აპრ(ილი)?/i,may:/^მაის(ი)?/i,jun:/^ივნ(ისი)?/i,jul:/^ივლ(ისი)?/i,aug:/^აგვ(ისტო)?/i,sep:/^სექ(ტემბერი)?/i,oct:/^ოქტ(ომბერი)?/i,nov:/^ნოემ(ბერი)?/i,dec:/^დეკ(ემბერი)?/i,sun:/^კ(1)?/i,mon:/^ო(1)?/i,tue:/^ს(1)?/i,wed:/^ო(1)?/i,thu:/^ხ(1)?/i,fri:/^პ(1)?/i,sat:/^შ(1)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'kk-KZ' => 'Date.CultureInfo={name:"kk-KZ",englishName:"Kazakh (Kazakhstan)",nativeName:"Қазақ (Қазақстан)",dayNames:["Жексенбі","Дүйсенбі","Сейсенбі","Сәрсенбі","Бейсенбі","Жұма","Сенбі"],abbreviatedDayNames:["Жк","Дс","Сс","Ср","Бс","Жм","Сн"],shortestDayNames:["Жк","Дс","Сс","Ср","Бс","Жм","Сн"],firstLetterDayNames:["Ж","Д","С","С","Б","Ж","С"],monthNames:["қаңтар","ақпан","наурыз","сәуір","мамыр","маусым","шілде","тамыз","қыркүйек","қазан","қараша","желтоқсан"],abbreviatedMonthNames:["Қаң","Ақп","Нау","Сәу","Мам","Мау","Шіл","Там","Қыр","Қаз","Қар","Жел"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"d MMMM yyyy \'ж.\'",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"d MMMM yyyy \'ж.\' H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^қаң(тар)?/i,feb:/^ақп(ан)?/i,mar:/^нау(рыз)?/i,apr:/^сәу(ір)?/i,may:/^мам(ыр)?/i,jun:/^мау(сым)?/i,jul:/^шіл(де)?/i,aug:/^там(ыз)?/i,sep:/^қыр(күйек)?/i,oct:/^қаз(ан)?/i,nov:/^қар(аша)?/i,dec:/^жел(тоқсан)?/i,sun:/^жексенбі/i,mon:/^дүйсенбі/i,tue:/^сейсенбі/i,wed:/^сәрсенбі/i,thu:/^бейсенбі/i,fri:/^жұма/i,sat:/^сенбі/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'kn-IN' => 'Date.CultureInfo={name:"kn-IN",englishName:"Kannada (India)",nativeName:"ಕನ್ನಡ (ಭಾರತ)",dayNames:["ಭಾನುವಾರ","ಸೋಮವಾರ","ಮಂಗಳವಾರ","ಬುಧವಾರ","ಗುರುವಾರ","ಶುಕ್ರವಾರ","ಶನಿವಾರ"],abbreviatedDayNames:["ಭಾನು.","ಸೋಮ.","ಮಂಗಳ.","ಬುಧ.","ಗುರು.","ಶುಕ್ರ.","ಶನಿ."],shortestDayNames:["ರ","ಸ","ಮ","ಬ","ಗ","ಶ","ಶ"],firstLetterDayNames:["ರ","ಸ","ಮ","ಬ","ಗ","ಶ","ಶ"],monthNames:["ಜನವರಿ","ಫೆಬ್ರವರಿ","ಮಾರ್ಚ್","ಎಪ್ರಿಲ್","ಮೇ","ಜೂನ್","ಜುಲೈ","ಆಗಸ್ಟ್","ಸೆಪ್ಟಂಬರ್","ಅಕ್ಟೋಬರ್","ನವೆಂಬರ್","ಡಿಸೆಂಬರ್"],abbreviatedMonthNames:["ಜನವರಿ","ಫೆಬ್ರವರಿ","ಮಾರ್ಚ್","ಎಪ್ರಿಲ್","ಮೇ","ಜೂನ್","ಜುಲೈ","ಆಗಸ್ಟ್","ಸೆಪ್ಟಂಬರ್","ಅಕ್ಟೋಬರ್","ನವೆಂಬರ್","ಡಿಸೆಂಬರ್"],amDesignator:"ಪೂರ್ವಾಹ್ನ",pmDesignator:"ಅಪರಾಹ್ನ",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd-MM-yy",longDate:"dd MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dd MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^ಜನವರಿ/i,feb:/^ಫೆಬ್ರವರಿ/i,mar:/^ಮಾರ್ಚ್/i,apr:/^ಎಪ್ರಿಲ್/i,may:/^ಮೇ/i,jun:/^ಜೂನ್/i,jul:/^ಜುಲೈ/i,aug:/^ಆಗಸ್ಟ್/i,sep:/^ಸೆಪ್ಟಂಬರ್/i,oct:/^ಅಕ್ಟೋಬರ್/i,nov:/^ನವೆಂಬರ್/i,dec:/^ಡಿಸೆಂಬರ್/i,sun:/^ರ(ಾನು(.(ವಾರ)?)?)?/i,mon:/^ಸ(ೋಮ(.(ವಾರ)?)?)?/i,tue:/^ಮ(ಂಗಳ(.(ವಾರ)?)?)?/i,wed:/^ಬ(ುಧ(.(ವಾರ)?)?)?/i,thu:/^ಗ(ುರು(.(ವಾರ)?)?)?/i,fri:/^ಶ(ುಕ್ರ(.(ವಾರ)?)?)?/i,sat:/^ಶ(ನಿ(.(ವಾರ)?)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'ko-KR' => 'Date.CultureInfo={name:"ko-KR",englishName:"Korean (Korea)",nativeName:"한국어 (대한민국)",dayNames:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],abbreviatedDayNames:["일","월","화","수","목","금","토"],shortestDayNames:["일","월","화","수","목","금","토"],firstLetterDayNames:["일","월","화","수","목","금","토"],monthNames:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],abbreviatedMonthNames:["1","2","3","4","5","6","7","8","9","10","11","12"],amDesignator:"오전",pmDesignator:"오후",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"ymd",formatPatterns:{shortDate:"yyyy-MM-dd",longDate:"yyyy\'년\' M\'월\' d\'일\' dddd",shortTime:"tt h:mm",longTime:"tt h:mm:ss",fullDateTime:"yyyy\'년\' M\'월\' d\'일\' dddd tt h:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"M\'월\' d\'일\'",yearMonth:"yyyy\'년\' M\'월\'"},regexPatterns:{jan:/^1(월)?/i,feb:/^2(월)?/i,mar:/^3(월)?/i,apr:/^4(월)?/i,may:/^5(월)?/i,jun:/^6(월)?/i,jul:/^7(월)?/i,aug:/^8(월)?/i,sep:/^9(월)?/i,oct:/^10(월)?/i,nov:/^11(월)?/i,dec:/^12(월)?/i,sun:/^일요일/i,mon:/^월요일/i,tue:/^화요일/i,wed:/^수요일/i,thu:/^목요일/i,fri:/^금요일/i,sat:/^토요일/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'kok-IN' => 'Date.CultureInfo={name:"kok-IN",englishName:"Konkani (India)",nativeName:"कोंकणी (भारत)",dayNames:["आयतार","सोमार","मंगळार","बुधवार","बिरेस्तार","सुक्रार","शेनवार"],abbreviatedDayNames:["आय.","सोम.","मंगळ.","बुध.","बिरे.","सुक्र.","शेन."],shortestDayNames:["आ","स","म","ब","ब","स","श"],firstLetterDayNames:["आ","स","म","ब","ब","स","श"],monthNames:["जानेवारी","फेब्रुवारी","मार्च","एप्रिल","मे","जून","जुलै","ऑगस्ट","सप्टेंबर","ऑक्टोबर","नोवेम्बर","डिसेंबर"],abbreviatedMonthNames:["जानेवारी","फेब्रुवारी","मार्च","एप्रिल","मे","जून","जुलै","ऑगस्ट","सप्टेंबर","ऑक्टोबर","नोवेम्बर","डिसेंबर"],amDesignator:"म.पू.",pmDesignator:"म.नं.",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd-MM-yyyy",longDate:"dd MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dd MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^जानेवारी/i,feb:/^फेब्रुवारी/i,mar:/^मार्च/i,apr:/^एप्रिल/i,may:/^मे/i,jun:/^जून/i,jul:/^जुलै/i,aug:/^ऑगस्ट/i,sep:/^सप्टेंबर/i,oct:/^ऑक्टोबर/i,nov:/^नोवेम्बर/i,dec:/^डिसेंबर/i,sun:/^आ(य(.(तार)?)?)?/i,mon:/^स(ोम(.(ार)?)?)?/i,tue:/^म(ंगळ(.(ार)?)?)?/i,wed:/^ब(ुध(.(वार)?)?)?/i,thu:/^ब(िरे(.(स्तार)?)?)?/i,fri:/^स(ुक्र(.(ार)?)?)?/i,sat:/^श(ेन(.(वार)?)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'ky-KG' => 'Date.CultureInfo={name:"ky-KG",englishName:"Kyrgyz (Kyrgyzstan)",nativeName:"Кыргыз (Кыргызстан)",dayNames:["Жекшемби","Дүйшөмбү","Шейшемби","Шаршемби","Бейшемби","Жума","Ишемби"],abbreviatedDayNames:["Жш","Дш","Шш","Шр","Бш","Жм","Иш"],shortestDayNames:["Жш","Дш","Шш","Шр","Бш","Жм","Иш"],firstLetterDayNames:["Ж","Д","Ш","Ш","Б","Ж","И"],monthNames:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],abbreviatedMonthNames:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yy",longDate:"d\'-\'MMMM yyyy\'-ж.\'",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"d\'-\'MMMM yyyy\'-ж.\' H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d MMMM",yearMonth:"MMMM yyyy\'-ж.\'"},regexPatterns:{jan:/^янв(арь)?/i,feb:/^фев(раль)?/i,mar:/^мар(т)?/i,apr:/^апр(ель)?/i,may:/^май/i,jun:/^июн(ь)?/i,jul:/^июл(ь)?/i,aug:/^авг(уст)?/i,sep:/^сен(тябрь)?/i,oct:/^окт(ябрь)?/i,nov:/^ноя(брь)?/i,dec:/^дек(абрь)?/i,sun:/^жекшемби/i,mon:/^дүйшөмбү/i,tue:/^шейшемби/i,wed:/^шаршемби/i,thu:/^бейшемби/i,fri:/^жума/i,sat:/^ишемби/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'lt-LT' => 'Date.CultureInfo={name:"lt-LT",englishName:"Lithuanian (Lithuania)",nativeName:"lietuvių (Lietuva)",dayNames:["sekmadienis","pirmadienis","antradienis","trečiadienis","ketvirtadienis","penktadienis","šeštadienis"],abbreviatedDayNames:["Sk","Pr","An","Tr","Kt","Pn","Št"],shortestDayNames:["S","P","A","T","K","Pn","Š"],firstLetterDayNames:["S","P","A","T","K","P","Š"],monthNames:["sausis","vasaris","kovas","balandis","gegužė","birželis","liepa","rugpjūtis","rugsėjis","spalis","lapkritis","gruodis"],abbreviatedMonthNames:["Sau","Vas","Kov","Bal","Geg","Bir","Lie","Rgp","Rgs","Spl","Lap","Grd"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"ymd",formatPatterns:{shortDate:"yyyy.MM.dd",longDate:"yyyy \'m.\' MMMM d \'d.\'",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"yyyy \'m.\' MMMM d \'d.\' HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM d \'d.\'",yearMonth:"yyyy \'m.\' MMMM"},regexPatterns:{jan:/^sau(sis)?/i,feb:/^vas(aris)?/i,mar:/^kov(as)?/i,apr:/^bal(andis)?/i,may:/^geg(užė)?/i,jun:/^bir(želis)?/i,jul:/^lie(pa)?/i,aug:/^rugpjūtis/i,sep:/^rugsėjis/i,oct:/^spalis/i,nov:/^lap(kritis)?/i,dec:/^gruodis/i,sun:/^s(k(kmadienis)?)?/i,mon:/^p(r(rmadienis)?)?/i,tue:/^a(n(tradienis)?)?/i,wed:/^t(r(ečiadienis)?)?/i,thu:/^k(t(tvirtadienis)?)?/i,fri:/^penktadienis/i,sat:/^š(t(štadienis)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'lv-LV' => 'Date.CultureInfo={name:"lv-LV",englishName:"Latvian (Latvia)",nativeName:"latviešu (Latvija)",dayNames:["svētdiena","pirmdiena","otrdiena","trešdiena","ceturtdiena","piektdiena","sestdiena"],abbreviatedDayNames:["Sv","Pr","Ot","Tr","Ce","Pk","Se"],shortestDayNames:["Sv","Pr","Ot","Tr","Ce","Pk","Se"],firstLetterDayNames:["S","P","O","T","C","P","S"],monthNames:["janvāris","februāris","marts","aprīlis","maijs","jūnijs","jūlijs","augusts","septembris","oktobris","novembris","decembris"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","Mai","Jūn","Jūl","Aug","Sep","Okt","Nov","Dec"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"ymd",formatPatterns:{shortDate:"yyyy.MM.dd.",longDate:"dddd, yyyy\'. gada \'d. MMMM",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"dddd, yyyy\'. gada \'d. MMMM H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d. MMMM",yearMonth:"yyyy. MMMM"},regexPatterns:{jan:/^jan(vāris)?/i,feb:/^feb(ruāris)?/i,mar:/^mar(ts)?/i,apr:/^apr(īlis)?/i,may:/^mai(js)?/i,jun:/^jūn(ijs)?/i,jul:/^jūl(ijs)?/i,aug:/^aug(usts)?/i,sep:/^sep(tembris)?/i,oct:/^okt(obris)?/i,nov:/^nov(embris)?/i,dec:/^dec(embris)?/i,sun:/^svētdiena/i,mon:/^pirmdiena/i,tue:/^otrdiena/i,wed:/^trešdiena/i,thu:/^ceturtdiena/i,fri:/^piektdiena/i,sat:/^sestdiena/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'mi-NZ' => 'Date.CultureInfo={name:"mi-NZ",englishName:"Maori (New Zealand)",nativeName:"Reo Māori (Aotearoa)",dayNames:["Rātapu","Mane","Tūrei","Wenerei","Tāite","Paraire","Hātarei"],abbreviatedDayNames:["Ta","Ma","Tū","We","Tāi","Pa","Hā"],shortestDayNames:["Ta","Ma","Tū","We","Tāi","Pa","Hā"],firstLetterDayNames:["T","M","T","W","T","P","H"],monthNames:["Kohi-tātea","Hui-tanguru","Poutū-te-rangi","Paenga-whāwhā","Haratua","Pipiri","Hōngoingoi","Here-turi-kōkā","Mahuru","Whiringa-ā-nuku","Whiringa-ā-rangi","Hakihea"],abbreviatedMonthNames:["Kohi","Hui","Pou","Pae","Hara","Pipi","Hōngoi","Here","Mahu","Whi-nu","Whi-ra","Haki"],amDesignator:"a.m.",pmDesignator:"p.m.",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d/MM/yyyy",longDate:"dddd, d MMMM yyyy",shortTime:"h:mm:ss tt",longTime:"h:mm:ss tt",fullDateTime:"dddd, d MMMM yyyy h:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^kohi(-tātea)?/i,feb:/^hui(-tanguru)?/i,mar:/^pou(tū-te-rangi)?/i,apr:/^pae(nga-whāwhā)?/i,may:/^hara(tua)?/i,jun:/^pipi(ri)?/i,jul:/^hōngoi(ngoi)?/i,aug:/^here(-turi-kōkā)?/i,sep:/^mahu(ru)?/i,oct:/^whiringa-ā-nuku/i,nov:/^whiringa-ā-rangi/i,dec:/^haki(hea)?/i,sun:/^rātapu/i,mon:/^mane/i,tue:/^tūrei/i,wed:/^wenerei/i,thu:/^tāite/i,fri:/^paraire/i,sat:/^hātarei/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'mk-MK' => 'Date.CultureInfo={name:"mk-MK",englishName:"Macedonian",nativeName:"македонски јазик (Македонија)",dayNames:["недела","понеделник","вторник","среда","четврток","петок","сабота"],abbreviatedDayNames:["нед","пон","втр","срд","чет","пет","саб"],shortestDayNames:["не","по","вт","ср","че","пе","са"],firstLetterDayNames:["н","п","в","с","ч","п","с"],monthNames:["јануари","февруари","март","април","мај","јуни","јули","август","септември","октомври","ноември","декември"],abbreviatedMonthNames:["јан","фев","мар","апр","мај","јун","јул","авг","сеп","окт","ное","дек"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"dddd, dd MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dddd, dd MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^јан(уари)?/i,feb:/^фев(руари)?/i,mar:/^мар(т)?/i,apr:/^апр(ил)?/i,may:/^мај/i,jun:/^јун(и)?/i,jul:/^јул(и)?/i,aug:/^авг(уст)?/i,sep:/^сеп(тември)?/i,oct:/^окт(омври)?/i,nov:/^ное(мври)?/i,dec:/^дек(ември)?/i,sun:/^не(д(ела)?)?/i,mon:/^по(н(еделник)?)?/i,tue:/^вт(р(рник)?)?/i,wed:/^ср(д(да)?)?/i,thu:/^че(т(врток)?)?/i,fri:/^пе(т(ок)?)?/i,sat:/^са(б(ота)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'mn-MN' => 'Date.CultureInfo={name:"mn-MN",englishName:"Mongolian (Cyrillic, Mongolia)",nativeName:"Монгол хэл (Монгол улс)",dayNames:["Ням","Даваа","Мягмар","Лхагва","Пүрэв","Баасан","Бямба"],abbreviatedDayNames:["Ня","Да","Мя","Лх","Пү","Ба","Бя"],shortestDayNames:["Ня","Да","Мя","Лх","Пү","Ба","Бя"],firstLetterDayNames:["Н","Д","М","Л","П","Б","Б"],monthNames:["1 дүгээр сар","2 дугаар сар","3 дугаар сар","4 дүгээр сар","5 дугаар сар","6 дугаар сар","7 дугаар сар","8 дугаар сар","9 дүгээр сар","10 дугаар сар","11 дүгээр сар","12 дугаар сар"],abbreviatedMonthNames:["I","II","III","IV","V","VI","VII","VШ","IX","X","XI","XII"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"ymd",formatPatterns:{shortDate:"yy.MM.dd",longDate:"yyyy \'оны\' MMMM d",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"yyyy \'оны\' MMMM d H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d MMMM",yearMonth:"yyyy \'он\' MMMM"},regexPatterns:{jan:/^1 дүгээр сар/i,feb:/^2 дугаар сар/i,mar:/^3 дугаар сар/i,apr:/^4 дүгээр сар/i,may:/^5 дугаар сар/i,jun:/^6 дугаар сар/i,jul:/^7 дугаар сар/i,aug:/^8 дугаар сар/i,sep:/^9 дүгээр сар/i,oct:/^10 дугаар сар/i,nov:/^11 дүгээр сар/i,dec:/^12 дугаар сар/i,sun:/^ням/i,mon:/^даваа/i,tue:/^мягмар/i,wed:/^лхагва/i,thu:/^пүрэв/i,fri:/^баасан/i,sat:/^бямба/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'mr-IN' => 'Date.CultureInfo={name:"mr-IN",englishName:"Marathi (India)",nativeName:"मराठी (भारत)",dayNames:["रविवार","सोमवार","मंगळवार","बुधवार","गुरुवार","शुक्रवार","शनिवार"],abbreviatedDayNames:["रवि.","सोम.","मंगळ.","बुध.","गुरु.","शुक्र.","शनि."],shortestDayNames:["र","स","म","ब","ग","श","श"],firstLetterDayNames:["र","स","म","ब","ग","श","श"],monthNames:["जानेवारी","फेब्रुवारी","मार्च","एप्रिल","मे","जून","जुलै","ऑगस्ट","सप्टेंबर","ऑक्टोबर","नोव्हेंबर","डिसेंबर"],abbreviatedMonthNames:["जाने.","फेब्रु.","मार्च","एप्रिल","मे","जून","जुलै","ऑगस्ट","सप्टें.","ऑक्टो.","नोव्हें.","डिसें."],amDesignator:"म.पू.",pmDesignator:"म.नं.",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd-MM-yyyy",longDate:"dd MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dd MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^जाने(.(वारी)?)?/i,feb:/^फेब्रु(.(वारी)?)?/i,mar:/^मार्च/i,apr:/^एप्रिल/i,may:/^मे/i,jun:/^जून/i,jul:/^जुलै/i,aug:/^ऑगस्ट/i,sep:/^सप्टें(.(बर)?)?/i,oct:/^ऑक्टो(.(बर)?)?/i,nov:/^नोव्हें(.(बर)?)?/i,dec:/^डिसें(.(बर)?)?/i,sun:/^र(वि(.(वार)?)?)?/i,mon:/^स(ोम(.(वार)?)?)?/i,tue:/^म(ंगळ(.(वार)?)?)?/i,wed:/^ब(ुध(.(वार)?)?)?/i,thu:/^ग(ुरु(.(वार)?)?)?/i,fri:/^श(ुक्र(.(वार)?)?)?/i,sat:/^श(नि(.(वार)?)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'ms-BN' => 'Date.CultureInfo={name:"ms-BN",englishName:"Malay (Brunei Darussalam)",nativeName:"Bahasa Malaysia (Brunei Darussalam)",dayNames:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"],abbreviatedDayNames:["Ahad","Isnin","Sel","Rabu","Khamis","Jumaat","Sabtu"],shortestDayNames:["A","I","S","R","K","J","S"],firstLetterDayNames:["A","I","S","R","K","J","S"],monthNames:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"],abbreviatedMonthNames:["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ogos","Sept","Okt","Nov","Dis"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dd MMMM yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"dd MMMM yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uari)?/i,feb:/^feb(ruari)?/i,mar:/^mac/i,apr:/^apr(il)?/i,may:/^mei/i,jun:/^jun/i,jul:/^jul(ai)?/i,aug:/^ogos/i,sep:/^sep(t(ember)?)?/i,oct:/^okt(ober)?/i,nov:/^nov(ember)?/i,dec:/^dis(ember)?/i,sun:/^a(1)?/i,mon:/^i(1)?/i,tue:/^s(el(asa)?)?/i,wed:/^r(1)?/i,thu:/^k(1)?/i,fri:/^j(1)?/i,sat:/^s(1)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'ms-MY' => 'Date.CultureInfo={name:"ms-MY",englishName:"Malay (Malaysia)",nativeName:"Bahasa Malaysia (Malaysia)",dayNames:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"],abbreviatedDayNames:["Ahad","Isnin","Sel","Rabu","Khamis","Jumaat","Sabtu"],shortestDayNames:["A","I","S","R","K","J","S"],firstLetterDayNames:["A","I","S","R","K","J","S"],monthNames:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"],abbreviatedMonthNames:["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ogos","Sept","Okt","Nov","Dis"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dd MMMM yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"dd MMMM yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uari)?/i,feb:/^feb(ruari)?/i,mar:/^mac/i,apr:/^apr(il)?/i,may:/^mei/i,jun:/^jun/i,jul:/^jul(ai)?/i,aug:/^ogos/i,sep:/^sep(t(ember)?)?/i,oct:/^okt(ober)?/i,nov:/^nov(ember)?/i,dec:/^dis(ember)?/i,sun:/^a(1)?/i,mon:/^i(1)?/i,tue:/^s(el(asa)?)?/i,wed:/^r(1)?/i,thu:/^k(1)?/i,fri:/^j(1)?/i,sat:/^s(1)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'mt-MT' => 'Date.CultureInfo={name:"mt-MT",englishName:"Maltese (Malta)",nativeName:"Malti (Malta)",dayNames:["Il-Ħadd","It-Tnejn","It-Tlieta","L-Erbgħa","Il-Ħamis","Il-Ġimgħa","Is-Sibt"],abbreviatedDayNames:["Ħad","Tne","Tli","Erb","Ħam","Ġim","Sib"],shortestDayNames:["Ħad","Tne","Tli","Erb","Ħam","Ġim","Sib"],firstLetterDayNames:["Ħ","T","T","E","Ħ","Ġ","S"],monthNames:["Jannar","Frar","Marzu","April","Mejju","Ġunju","Lulju","Awissu","Settembru","Ottubru","Novembru","Diċembru"],abbreviatedMonthNames:["Jan","Fra","Mar","Apr","Mej","Ġun","Lul","Awi","Set","Ott","Nov","Diċ"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, d\' ta\\\' \'MMMM yyyy",shortTime:"HH:mm:ss",longTime:"HH:mm:ss",fullDateTime:"dddd, d\' ta\\\' \'MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(nar)?/i,feb:/^fra(r)?/i,mar:/^mar(zu)?/i,apr:/^apr(il)?/i,may:/^mej(ju)?/i,jun:/^ġun(ju)?/i,jul:/^lul(ju)?/i,aug:/^awi(ssu)?/i,sep:/^set(tembru)?/i,oct:/^ott(ubru)?/i,nov:/^nov(embru)?/i,dec:/^diċ(embru)?/i,sun:/^il-ħadd/i,mon:/^it-tnejn/i,tue:/^it-tlieta/i,wed:/^l-erbgħa/i,thu:/^il-ħamis/i,fri:/^il-ġimgħa/i,sat:/^is-sibt/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'nb-NO' => 'Date.CultureInfo={name:"nb-NO",englishName:"Norwegian, Bokmål (Norway)",nativeName:"norsk, bokmål (Norge)",dayNames:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],abbreviatedDayNames:["sø","ma","ti","on","to","fr","lø"],shortestDayNames:["sø","ma","ti","on","to","fr","lø"],firstLetterDayNames:["s","m","t","o","t","f","l"],monthNames:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],abbreviatedMonthNames:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"d. MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"d. MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d. MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uar)?/i,feb:/^feb(ruar)?/i,mar:/^mar(s)?/i,apr:/^apr(il)?/i,may:/^mai/i,jun:/^jun(i)?/i,jul:/^jul(i)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^okt(ober)?/i,nov:/^nov(ember)?/i,dec:/^des(ember)?/i,sun:/^søndag/i,mon:/^mandag/i,tue:/^tirsdag/i,wed:/^onsdag/i,thu:/^torsdag/i,fri:/^fredag/i,sat:/^lørdag/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'nl-BE' => 'Date.CultureInfo={name:"nl-BE",englishName:"Dutch (Belgium)",nativeName:"Nederlands (België)",dayNames:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],abbreviatedDayNames:["zo","ma","di","wo","do","vr","za"],shortestDayNames:["zo","ma","di","wo","do","vr","za"],firstLetterDayNames:["z","m","d","w","d","v","z"],monthNames:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],abbreviatedMonthNames:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d/MM/yyyy",longDate:"dddd d MMMM yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"dddd d MMMM yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uari)?/i,feb:/^feb(ruari)?/i,mar:/^maart/i,apr:/^apr(il)?/i,may:/^mei/i,jun:/^jun(i)?/i,jul:/^jul(i)?/i,aug:/^aug(ustus)?/i,sep:/^sep(t(ember)?)?/i,oct:/^okt(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^zondag/i,mon:/^maandag/i,tue:/^dinsdag/i,wed:/^woensdag/i,thu:/^donderdag/i,fri:/^vrijdag/i,sat:/^zaterdag/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'nl-NL' => 'Date.CultureInfo={name:"nl-NL",englishName:"Dutch (Netherlands)",nativeName:"Nederlands (Nederland)",dayNames:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],abbreviatedDayNames:["zo","ma","di","wo","do","vr","za"],shortestDayNames:["zo","ma","di","wo","do","vr","za"],firstLetterDayNames:["z","m","d","w","d","v","z"],monthNames:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],abbreviatedMonthNames:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d-M-yyyy",longDate:"dddd d MMMM yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"dddd d MMMM yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uari)?/i,feb:/^feb(ruari)?/i,mar:/^maart/i,apr:/^apr(il)?/i,may:/^mei/i,jun:/^jun(i)?/i,jul:/^jul(i)?/i,aug:/^aug(ustus)?/i,sep:/^sep(t(ember)?)?/i,oct:/^okt(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^zondag/i,mon:/^maandag/i,tue:/^dinsdag/i,wed:/^woensdag/i,thu:/^donderdag/i,fri:/^vrijdag/i,sat:/^zaterdag/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'nn-NO' => 'Date.CultureInfo={name:"nn-NO",englishName:"Norwegian, Nynorsk (Norway)",nativeName:"norsk, nynorsk (Noreg)",dayNames:["søndag","måndag","tysdag","onsdag","torsdag","fredag","laurdag"],abbreviatedDayNames:["sø","må","ty","on","to","fr","la"],shortestDayNames:["sø","må","ty","on","to","fr","la"],firstLetterDayNames:["s","m","t","o","t","f","l"],monthNames:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],abbreviatedMonthNames:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"d. MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"d. MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d. MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uar)?/i,feb:/^feb(ruar)?/i,mar:/^mar(s)?/i,apr:/^apr(il)?/i,may:/^mai/i,jun:/^jun(i)?/i,jul:/^jul(i)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^okt(ober)?/i,nov:/^nov(ember)?/i,dec:/^des(ember)?/i,sun:/^søndag/i,mon:/^måndag/i,tue:/^tysdag/i,wed:/^onsdag/i,thu:/^torsdag/i,fri:/^fredag/i,sat:/^laurdag/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'ns-ZA' => 'Date.CultureInfo={name:"ns-ZA",englishName:"Northern Sotho (South Africa)",nativeName:"Sesotho sa Leboa (Afrika Borwa)",dayNames:["Lamorena","Mošupologo","Labobedi","Laboraro","Labone","Labohlano","Mokibelo"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["Pherekgong","Hlakola","Mopitlo","Moranang","Mosegamanye","Ngoatobošego","Phuphu","Phato","Lewedi","Diphalana","Dibatsela","Manthole"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"ymd",formatPatterns:{shortDate:"yyyy/MM/dd",longDate:"dd MMMM yyyy",shortTime:"hh:mm:ss tt",longTime:"hh:mm:ss tt",fullDateTime:"dd MMMM yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^pherekgong/i,feb:/^hlakola/i,mar:/^mopitlo/i,apr:/^moranang/i,may:/^mosegamanye/i,jun:/^ngoatobošego/i,jul:/^phuphu/i,aug:/^phato/i,sep:/^lewedi/i,oct:/^diphalana/i,nov:/^dibatsela/i,dec:/^manthole/i,sun:/^lamorena/i,mon:/^mošupologo/i,tue:/^labobedi/i,wed:/^laboraro/i,thu:/^labone/i,fri:/^labohlano/i,sat:/^mokibelo/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'pa-IN' => 'Date.CultureInfo={name:"pa-IN",englishName:"Punjabi (India)",nativeName:"ਪੰਜਾਬੀ (ਭਾਰਤ)",dayNames:["ਐਤਵਾਰ","ਸੋਮਵਾਰ","ਮੰਗਲਵਾਰ","ਬੁਧਵਾਰ","ਵੀਰਵਾਰ","ਸ਼ੁੱਕਰਵਾਰ","ਸ਼ਨੀਚਰਵਾਰ"],abbreviatedDayNames:["ਐਤ.","ਸੋਮ.","ਮੰਗਲ.","ਬੁਧ.","ਵੀਰ.","ਸ਼ੁਕਰ.","ਸ਼ਨੀ."],shortestDayNames:["ਐ","ਸ","ਮ","ਬ","ਵ","ਸ਼","ਸ਼"],firstLetterDayNames:["ਐ","ਸ","ਮ","ਬ","ਵ","ਸ਼","ਸ਼"],monthNames:["ਜਨਵਰੀ","ਫ਼ਰਵਰੀ","ਮਾਰਚ","ਅਪ੍ਰੈਲ","ਮਈ","ਜੂਨ","ਜੁਲਾਈ","ਅਗਸਤ","ਸਤੰਬਰ","ਅਕਤੂਬਰ","ਨਵੰਬਰ","ਦਸੰਬਰ"],abbreviatedMonthNames:["ਜਨਵਰੀ","ਫ਼ਰਵਰੀ","ਮਾਰਚ","ਅਪ੍ਰੈਲ","ਮਈ","ਜੂਨ","ਜੁਲਾਈ","ਅਗਸਤ","ਸਤੰਬਰ","ਅਕਤੂਬਰ","ਨਵੰਬਰ","ਦਸੰਬਰ"],amDesignator:"ਸਵੇਰੇ",pmDesignator:"ਸ਼ਾਮ",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd-MM-yy",longDate:"dd MMMM yyyy dddd",shortTime:"tt hh:mm",longTime:"tt hh:mm:ss",fullDateTime:"dd MMMM yyyy dddd tt hh:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^ਜਨਵਰੀ/i,feb:/^ਫ਼ਰਵਰੀ/i,mar:/^ਮਾਰਚ/i,apr:/^ਅਪ੍ਰੈਲ/i,may:/^ਮਈ/i,jun:/^ਜੂਨ/i,jul:/^ਜੁਲਾਈ/i,aug:/^ਅਗਸਤ/i,sep:/^ਸਤੰਬਰ/i,oct:/^ਅਕਤੂਬਰ/i,nov:/^ਨਵੰਬਰ/i,dec:/^ਦਸੰਬਰ/i,sun:/^ਐ(ਤ(.(ਵਾਰ)?)?)?/i,mon:/^ਸ(ੋਮ(.(ਵਾਰ)?)?)?/i,tue:/^ਮ(ੰਗਲ(.(ਵਾਰ)?)?)?/i,wed:/^ਬ(ੁਧ(.(ਵਾਰ)?)?)?/i,thu:/^ਵ(ੀਰ(.(ਵਾਰ)?)?)?/i,fri:/^ਸ਼(ੁਕਰ(.(ਰਵਾਰ)?)?)?/i,sat:/^ਸ਼(ਨੀ(.(ਚਰਵਾਰ)?)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'pl-PL' => 'Date.CultureInfo={name:"pl-PL",englishName:"Polish (Poland)",nativeName:"polski (Polska)",dayNames:["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"],abbreviatedDayNames:["N","Pn","Wt","Śr","Cz","Pt","So"],shortestDayNames:["N","Pn","Wt","Śr","Cz","Pt","So"],firstLetterDayNames:["N","P","W","Ś","C","P","S"],monthNames:["styczeń","luty","marzec","kwiecień","maj","czerwiec","lipiec","sierpień","wrzesień","październik","listopad","grudzień"],abbreviatedMonthNames:["sty","lut","mar","kwi","maj","cze","lip","sie","wrz","paź","lis","gru"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"ymd",formatPatterns:{shortDate:"yyyy-MM-dd",longDate:"d MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"d MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^sty(czeń)?/i,feb:/^lut(y)?/i,mar:/^mar(zec)?/i,apr:/^kwi(ecień)?/i,may:/^maj/i,jun:/^cze(rwiec)?/i,jul:/^lip(iec)?/i,aug:/^sie(rpień)?/i,sep:/^wrz(esień)?/i,oct:/^paź(dziernik)?/i,nov:/^lis(topad)?/i,dec:/^gru(dzień)?/i,sun:/^niedziela/i,mon:/^poniedziałek/i,tue:/^wtorek/i,wed:/^środa/i,thu:/^czwartek/i,fri:/^piątek/i,sat:/^sobota/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'pt-BR' => 'Date.CultureInfo={name:"pt-BR",englishName:"Portuguese (Brazil)",nativeName:"Português (Brasil)",dayNames:["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],abbreviatedDayNames:["dom","seg","ter","qua","qui","sex","sáb"],shortestDayNames:["dom","seg","ter","qua","qui","sex","sáb"],firstLetterDayNames:["d","s","t","q","q","s","s"],monthNames:["janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"],abbreviatedMonthNames:["jan","fev","mar","abr","mai","jun","jul","ago","set","out","nov","dez"],amDesignator:"",pmDesignator:"",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d/M/yyyy",longDate:"dddd, d\' de \'MMMM\' de \'yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"dddd, d\' de \'MMMM\' de \'yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd\' de \'MMMM",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^jan(eiro)?/i,feb:/^fev(ereiro)?/i,mar:/^mar(ço)?/i,apr:/^abr(il)?/i,may:/^mai(o)?/i,jun:/^jun(ho)?/i,jul:/^jul(ho)?/i,aug:/^ago(sto)?/i,sep:/^set(embro)?/i,oct:/^out(ubro)?/i,nov:/^nov(embro)?/i,dec:/^dez(embro)?/i,sun:/^domingo/i,mon:/^segunda-feira/i,tue:/^terça-feira/i,wed:/^quarta-feira/i,thu:/^quinta-feira/i,fri:/^sexta-feira/i,sat:/^sábado/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'pt-PT' => 'Date.CultureInfo={name:"pt-PT",englishName:"Portuguese (Portugal)",nativeName:"português (Portugal)",dayNames:["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],abbreviatedDayNames:["dom","seg","ter","qua","qui","sex","sáb"],shortestDayNames:["dom","seg","ter","qua","qui","sex","sáb"],firstLetterDayNames:["d","s","t","q","q","s","s"],monthNames:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],abbreviatedMonthNames:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd-MM-yyyy",longDate:"dddd, d\' de \'MMMM\' de \'yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"dddd, d\' de \'MMMM\' de \'yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d/M",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^jan(eiro)?/i,feb:/^fev(ereiro)?/i,mar:/^mar(ço)?/i,apr:/^abr(il)?/i,may:/^mai(o)?/i,jun:/^jun(ho)?/i,jul:/^jul(ho)?/i,aug:/^ago(sto)?/i,sep:/^set(embro)?/i,oct:/^out(ubro)?/i,nov:/^nov(embro)?/i,dec:/^dez(embro)?/i,sun:/^domingo/i,mon:/^segunda-feira/i,tue:/^terça-feira/i,wed:/^quarta-feira/i,thu:/^quinta-feira/i,fri:/^sexta-feira/i,sat:/^sábado/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'quz-BO' => 'Date.CultureInfo={name:"quz-BO",englishName:"Quechua (Bolivia)",nativeName:"runasimi (Bolivia Suyu)",dayNames:["intichaw","killachaw","atipachaw","quyllurchaw","Ch\' askachaw","Illapachaw","k\'uychichaw"],abbreviatedDayNames:["int","kil","ati","quy","Ch’","Ill","k\'u"],shortestDayNames:["int","kil","ati","quy","Ch’","Ill","k\'u"],firstLetterDayNames:["i","k","a","q","C","I","k"],monthNames:["Qulla puquy","Hatun puquy","Pauqar waray","ayriwa","Aymuray","Inti raymi","Anta Sitwa","Qhapaq Sitwa","Uma raymi","Kantaray","Ayamarq\'a","Kapaq Raymi"],abbreviatedMonthNames:["Qul","Hat","Pau","ayr","Aym","Int","Ant","Qha","Uma","Kan","Aya","Kap"],amDesignator:"a.m.",pmDesignator:"p.m.",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"hh:mm:ss tt",longTime:"hh:mm:ss tt",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^qul(la puquy)?/i,feb:/^hat(un puquy)?/i,mar:/^pau(qar waray)?/i,apr:/^ayr(iwa)?/i,may:/^aym(uray)?/i,jun:/^int(i raymi)?/i,jul:/^ant(a sitwa)?/i,aug:/^qha(paq sitwa)?/i,sep:/^uma( raymi)?/i,oct:/^kan(taray)?/i,nov:/^aya(marq\'a)?/i,dec:/^kap(aq raymi)?/i,sun:/^intichaw/i,mon:/^killachaw/i,tue:/^atipachaw/i,wed:/^quyllurchaw/i,thu:/^ch\' askachaw/i,fri:/^illapachaw/i,sat:/^k\'uychichaw/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'quz-EC' => 'Date.CultureInfo={name:"quz-EC",englishName:"Quechua (Ecuador)",nativeName:"runasimi (Ecuador Suyu)",dayNames:["intichaw","killachaw","atipachaw","quyllurchaw","Ch\' askachaw","Illapachaw","k\'uychichaw"],abbreviatedDayNames:["int","kil","ati","quy","Ch’","Ill","k\'u"],shortestDayNames:["int","kil","ati","quy","Ch’","Ill","k\'u"],firstLetterDayNames:["i","k","a","q","C","I","k"],monthNames:["Qulla puquy","Hatun puquy","Pauqar waray","ayriwa","Aymuray","Inti raymi","Anta Sitwa","Qhapaq Sitwa","Uma raymi","Kantaray","Ayamarq\'a","Kapaq Raymi"],abbreviatedMonthNames:["Qul","Hat","Pau","ayr","Aym","Int","Ant","Qha","Uma","Kan","Aya","Kap"],amDesignator:"",pmDesignator:"",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"H:mm:ss",longTime:"H:mm:ss",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^qul(la puquy)?/i,feb:/^hat(un puquy)?/i,mar:/^pau(qar waray)?/i,apr:/^ayr(iwa)?/i,may:/^aym(uray)?/i,jun:/^int(i raymi)?/i,jul:/^ant(a sitwa)?/i,aug:/^qha(paq sitwa)?/i,sep:/^uma( raymi)?/i,oct:/^kan(taray)?/i,nov:/^aya(marq\'a)?/i,dec:/^kap(aq raymi)?/i,sun:/^intichaw/i,mon:/^killachaw/i,tue:/^atipachaw/i,wed:/^quyllurchaw/i,thu:/^ch\' askachaw/i,fri:/^illapachaw/i,sat:/^k\'uychichaw/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'quz-PE' => 'Date.CultureInfo={name:"quz-PE",englishName:"Quechua (Peru)",nativeName:"runasimi (Peru Suyu)",dayNames:["intichaw","killachaw","atipachaw","quyllurchaw","Ch\' askachaw","Illapachaw","k\'uychichaw"],abbreviatedDayNames:["int","kil","ati","quy","Ch’","Ill","k\'u"],shortestDayNames:["int","kil","ati","quy","Ch’","Ill","k\'u"],firstLetterDayNames:["i","k","a","q","C","I","k"],monthNames:["Qulla puquy","Hatun puquy","Pauqar waray","ayriwa","Aymuray","Inti raymi","Anta Sitwa","Qhapaq Sitwa","Uma raymi","Kantaray","Ayamarq\'a","Kapaq Raymi"],abbreviatedMonthNames:["Qul","Hat","Pau","ayr","Aym","Int","Ant","Qha","Uma","Kan","Aya","Kap"],amDesignator:"a.m.",pmDesignator:"p.m.",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd, dd\' de \'MMMM\' de \'yyyy",shortTime:"hh:mm:ss tt",longTime:"hh:mm:ss tt",fullDateTime:"dddd, dd\' de \'MMMM\' de \'yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM\' de \'yyyy"},regexPatterns:{jan:/^qul(la puquy)?/i,feb:/^hat(un puquy)?/i,mar:/^pau(qar waray)?/i,apr:/^ayr(iwa)?/i,may:/^aym(uray)?/i,jun:/^int(i raymi)?/i,jul:/^ant(a sitwa)?/i,aug:/^qha(paq sitwa)?/i,sep:/^uma( raymi)?/i,oct:/^kan(taray)?/i,nov:/^aya(marq\'a)?/i,dec:/^kap(aq raymi)?/i,sun:/^intichaw/i,mon:/^killachaw/i,tue:/^atipachaw/i,wed:/^quyllurchaw/i,thu:/^ch\' askachaw/i,fri:/^illapachaw/i,sat:/^k\'uychichaw/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'ro-RO' => 'Date.CultureInfo={name:"ro-RO",englishName:"Romanian (Romania)",nativeName:"română (România)",dayNames:["duminică","luni","marţi","miercuri","joi","vineri","sâmbătă"],abbreviatedDayNames:["D","L","Ma","Mi","J","V","S"],shortestDayNames:["D","L","Ma","Mi","J","V","S"],firstLetterDayNames:["D","L","M","M","J","V","S"],monthNames:["ianuarie","februarie","martie","aprilie","mai","iunie","iulie","august","septembrie","octombrie","noiembrie","decembrie"],abbreviatedMonthNames:["ian.","feb.","mar.","apr.","mai.","iun.","iul.","aug.","sep.","oct.","nov.","dec."],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"d MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"d MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^ian(.(uarie)?)?/i,feb:/^feb(.(ruarie)?)?/i,mar:/^mar(.(tie)?)?/i,apr:/^apr(.(ilie)?)?/i,may:/^mai(.()?)?/i,jun:/^iun(.(ie)?)?/i,jul:/^iul(.(ie)?)?/i,aug:/^aug(.(ust)?)?/i,sep:/^sep(.(tembrie)?)?/i,oct:/^oct(.(ombrie)?)?/i,nov:/^noiembrie/i,dec:/^dec(.(embrie)?)?/i,sun:/^duminică/i,mon:/^luni/i,tue:/^marţi/i,wed:/^miercuri/i,thu:/^joi/i,fri:/^vineri/i,sat:/^sâmbătă/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'ru-RU' => 'Date.CultureInfo={name:"ru-RU",englishName:"Russian (Russia)",nativeName:"русский (Россия)",dayNames:["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],abbreviatedDayNames:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],shortestDayNames:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],firstLetterDayNames:["В","П","В","С","Ч","П","С"],monthNames:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],abbreviatedMonthNames:["янв","фев","мар","апр","май","июн","июл","авг","сен","окт","ноя","дек"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"d MMMM yyyy \'г.\'",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"d MMMM yyyy \'г.\' H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM yyyy \'г.\'"},regexPatterns:{jan:/^янв(арь)?/i,feb:/^фев(раль)?/i,mar:/^мар(т)?/i,apr:/^апр(ель)?/i,may:/^май/i,jun:/^июн(ь)?/i,jul:/^июл(ь)?/i,aug:/^авг(уст)?/i,sep:/^сен(тябрь)?/i,oct:/^окт(ябрь)?/i,nov:/^ноя(брь)?/i,dec:/^дек(абрь)?/i,sun:/^воскресенье/i,mon:/^понедельник/i,tue:/^вторник/i,wed:/^среда/i,thu:/^четверг/i,fri:/^пятница/i,sat:/^суббота/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'sa-IN' => 'Date.CultureInfo={name:"sa-IN",englishName:"Sanskrit (India)",nativeName:"संस्कृत (भारतम्)",dayNames:["रविवासरः","सोमवासरः","मङ्गलवासरः","बुधवासरः","गुरुवासरः","शुक्रवासरः","शनिवासरः"],abbreviatedDayNames:["रविवासरः","सोमवासरः","मङ्गलवासरः","बुधवासरः","गुरुवासरः","शुक्रवासरः","शनिवासरः"],shortestDayNames:["र","स","म","ब","ग","श","श"],firstLetterDayNames:["र","स","म","ब","ग","श","श"],monthNames:["जनवरी","फरवरी","मार्च","अप्रैल","मई","जून","जुलाई","अगस्त","सितम्बर","अक्तूबर","नवम्बर","दिसम्बर"],abbreviatedMonthNames:["जनवरी","फरवरी","मार्च","अप्रैल","मई","जून","जुलाई","अगस्त","सितम्बर","अक्तूबर","नवम्बर","दिसम्बर"],amDesignator:"पूर्वाह्न",pmDesignator:"अपराह्न",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd-MM-yyyy",longDate:"dd MMMM yyyy dddd",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dd MMMM yyyy dddd HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^जनवरी/i,feb:/^फरवरी/i,mar:/^मार्च/i,apr:/^अप्रैल/i,may:/^मई/i,jun:/^जून/i,jul:/^जुलाई/i,aug:/^अगस्त/i,sep:/^सितम्बर/i,oct:/^अक्तूबर/i,nov:/^नवम्बर/i,dec:/^दिसम्बर/i,sun:/^र(1)?/i,mon:/^स(1)?/i,tue:/^म(1)?/i,wed:/^ब(1)?/i,thu:/^ग(1)?/i,fri:/^श(1)?/i,sat:/^श(1)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'se-FI' => 'Date.CultureInfo={name:"se-FI",englishName:"Sami (Northern) (Finland)",nativeName:"davvisámegiella (Suopma)",dayNames:["sotnabeaivi","vuossárga","maŋŋebárga","gaskavahkku","duorastat","bearjadat","lávvardat"],abbreviatedDayNames:["sotn","vuos","maŋ","gask","duor","bear","láv"],shortestDayNames:["sotn","vuos","maŋ","gask","duor","bear","láv"],firstLetterDayNames:["s","v","m","g","d","b","l"],monthNames:["ođđajagemánnu","guovvamánnu","njukčamánnu","cuoŋománnu","miessemánnu","geassemánnu","suoidnemánnu","borgemánnu","čakčamánnu","golggotmánnu","skábmamánnu","juovlamánnu"],abbreviatedMonthNames:["ođđj","guov","njuk","cuo","mies","geas","suoi","borg","čakč","golg","skáb","juov"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d.M.yyyy",longDate:"MMMM d\'. b. \'yyyy",shortTime:"H:mm:ss",longTime:"H:mm:ss",fullDateTime:"MMMM d\'. b. \'yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^ođđajagemánnu/i,feb:/^guov(vamánnu)?/i,mar:/^njuk(čamánnu)?/i,apr:/^cuo(ŋománnu)?/i,may:/^mies(semánnu)?/i,jun:/^geas(semánnu)?/i,jul:/^suoi(dnemánnu)?/i,aug:/^borg(emánnu)?/i,sep:/^čakč(amánnu)?/i,oct:/^golg(gotmánnu)?/i,nov:/^skáb(mamánnu)?/i,dec:/^juov(lamánnu)?/i,sun:/^sotnabeaivi/i,mon:/^vuossárga/i,tue:/^maŋŋebárga/i,wed:/^gaskavahkku/i,thu:/^duorastat/i,fri:/^bearjadat/i,sat:/^lávvardat/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'se-NO' => 'Date.CultureInfo={name:"se-NO",englishName:"Sami (Northern) (Norway)",nativeName:"davvisámegiella (Norga)",dayNames:["sotnabeaivi","vuossárga","maŋŋebárga","gaskavahkku","duorastat","bearjadat","lávvardat"],abbreviatedDayNames:["sotn","vuos","maŋ","gask","duor","bear","láv"],shortestDayNames:["sotn","vuos","maŋ","gask","duor","bear","láv"],firstLetterDayNames:["s","v","m","g","d","b","l"],monthNames:["ođđajagemánnu","guovvamánnu","njukčamánnu","cuoŋománnu","miessemánnu","geassemánnu","suoidnemánnu","borgemánnu","čakčamánnu","golggotmánnu","skábmamánnu","juovlamánnu"],abbreviatedMonthNames:["ođđj","guov","njuk","cuo","mies","geas","suoi","borg","čakč","golg","skáb","juov"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"MMMM d\'. b. \'yyyy",shortTime:"HH:mm:ss",longTime:"HH:mm:ss",fullDateTime:"MMMM d\'. b. \'yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^ođđajagemánnu/i,feb:/^guov(vamánnu)?/i,mar:/^njuk(čamánnu)?/i,apr:/^cuo(ŋománnu)?/i,may:/^mies(semánnu)?/i,jun:/^geas(semánnu)?/i,jul:/^suoi(dnemánnu)?/i,aug:/^borg(emánnu)?/i,sep:/^čakč(amánnu)?/i,oct:/^golg(gotmánnu)?/i,nov:/^skáb(mamánnu)?/i,dec:/^juov(lamánnu)?/i,sun:/^sotnabeaivi/i,mon:/^vuossárga/i,tue:/^maŋŋebárga/i,wed:/^gaskavahkku/i,thu:/^duorastat/i,fri:/^bearjadat/i,sat:/^lávvardat/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'se-SE' => 'Date.CultureInfo={name:"se-SE",englishName:"Sami (Northern) (Sweden)",nativeName:"davvisámegiella (Ruoŧŧa)",dayNames:["sotnabeaivi","mánnodat","disdat","gaskavahkku","duorastat","bearjadat","lávvardat"],abbreviatedDayNames:["sotn","mán","dis","gask","duor","bear","láv"],shortestDayNames:["sotn","mán","dis","gask","duor","bear","láv"],firstLetterDayNames:["s","m","d","g","d","b","l"],monthNames:["ođđajagemánnu","guovvamánnu","njukčamánnu","cuoŋománnu","miessemánnu","geassemánnu","suoidnemánnu","borgemánnu","čakčamánnu","golggotmánnu","skábmamánnu","juovlamánnu"],abbreviatedMonthNames:["ođđj","guov","njuk","cuo","mies","geas","suoi","borg","čakč","golg","skáb","juov"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"ymd",formatPatterns:{shortDate:"yyyy-MM-dd",longDate:"MMMM d\'. b. \'yyyy",shortTime:"HH:mm:ss",longTime:"HH:mm:ss",fullDateTime:"MMMM d\'. b. \'yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^ođđajagemánnu/i,feb:/^guov(vamánnu)?/i,mar:/^njuk(čamánnu)?/i,apr:/^cuo(ŋománnu)?/i,may:/^mies(semánnu)?/i,jun:/^geas(semánnu)?/i,jul:/^suoi(dnemánnu)?/i,aug:/^borg(emánnu)?/i,sep:/^čakč(amánnu)?/i,oct:/^golg(gotmánnu)?/i,nov:/^skáb(mamánnu)?/i,dec:/^juov(lamánnu)?/i,sun:/^sotnabeaivi/i,mon:/^mánnodat/i,tue:/^disdat/i,wed:/^gaskavahkku/i,thu:/^duorastat/i,fri:/^bearjadat/i,sat:/^lávvardat/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'sk-SK' => 'Date.CultureInfo={name:"sk-SK",englishName:"Slovak (Slovakia)",nativeName:"slovenčina (Slovenská republika)",dayNames:["nedeľa","pondelok","utorok","streda","štvrtok","piatok","sobota"],abbreviatedDayNames:["ne","po","ut","st","št","pi","so"],shortestDayNames:["ne","po","ut","st","št","pi","so"],firstLetterDayNames:["n","p","u","s","š","p","s"],monthNames:["január","február","marec","apríl","máj","jún","júl","august","september","október","november","december"],abbreviatedMonthNames:["I","II","III","IV","V","VI","VII","VIII","IX","X","XI","XII"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d. M. yyyy",longDate:"d. MMMM yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"d. MMMM yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^január/i,feb:/^február/i,mar:/^marec/i,apr:/^apríl/i,may:/^máj/i,jun:/^jún/i,jul:/^júl/i,aug:/^august/i,sep:/^sep(t(ember)?)?/i,oct:/^október/i,nov:/^november/i,dec:/^december/i,sun:/^nedeľa/i,mon:/^pondelok/i,tue:/^utorok/i,wed:/^streda/i,thu:/^štvrtok/i,fri:/^piatok/i,sat:/^sobota/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'sl-SI' => 'Date.CultureInfo={name:"sl-SI",englishName:"Slovenian (Slovenia)",nativeName:"slovenski (Slovenija)",dayNames:["nedelja","ponedeljek","torek","sreda","četrtek","petek","sobota"],abbreviatedDayNames:["ned","pon","tor","sre","čet","pet","sob"],shortestDayNames:["ne","po","to","sr","če","pe","so"],firstLetterDayNames:["n","p","t","s","č","p","s"],monthNames:["januar","februar","marec","april","maj","junij","julij","avgust","september","oktober","november","december"],abbreviatedMonthNames:["jan","feb","mar","apr","maj","jun","jul","avg","sep","okt","nov","dec"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d.M.yyyy",longDate:"d. MMMM yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"d. MMMM yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d. MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uar)?/i,feb:/^feb(ruar)?/i,mar:/^mar(ec)?/i,apr:/^apr(il)?/i,may:/^maj/i,jun:/^jun(ij)?/i,jul:/^jul(ij)?/i,aug:/^avg(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^okt(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^ne(d(elja)?)?/i,mon:/^po(n(edeljek)?)?/i,tue:/^to(r(ek)?)?/i,wed:/^sr(e(da)?)?/i,thu:/^če(t(rtek)?)?/i,fri:/^pe(t(ek)?)?/i,sat:/^so(b(ota)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'sma-NO' => 'Date.CultureInfo={name:"sma-NO",englishName:"Sami (Southern) (Norway)",nativeName:"åarjelsaemiengiele (Nöörje)",dayNames:["aejlege","måanta","dæjsta","gaskevåhkoe","duarsta","bearjadahke","laavvardahke"],abbreviatedDayNames:["aej","måa","dæj","gask","duar","bearj","laav"],shortestDayNames:["aej","måa","dæj","gask","duar","bearj","laav"],firstLetterDayNames:["a","m","d","g","d","b","l"],monthNames:["tsïengele","goevte","njoktje","voerhtje","suehpede","ruffie","snjaltje","mïetske","skïerede","golke","rahka","goeve"],abbreviatedMonthNames:["tsïen","goevt","njok","voer","sueh","ruff","snja","mïet","skïer","golk","rahk","goev"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"MMMM d\'. b. \'yyyy",shortTime:"HH:mm:ss",longTime:"HH:mm:ss",fullDateTime:"MMMM d\'. b. \'yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^tsïen(gele)?/i,feb:/^goevt(e)?/i,mar:/^njok(tje)?/i,apr:/^voer(htje)?/i,may:/^sueh(pede)?/i,jun:/^ruff(ie)?/i,jul:/^snja(ltje)?/i,aug:/^mïet(ske)?/i,sep:/^skïer(ede)?/i,oct:/^golk(e)?/i,nov:/^rahk(a)?/i,dec:/^goev(e)?/i,sun:/^aejlege/i,mon:/^måanta/i,tue:/^dæjsta/i,wed:/^gaskevåhkoe/i,thu:/^duarsta/i,fri:/^bearjadahke/i,sat:/^laavvardahke/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'sma-SE' => 'Date.CultureInfo={name:"sma-SE",englishName:"Sami (Southern) (Sweden)",nativeName:"åarjelsaemiengiele (Sveerje)",dayNames:["aejlege","måanta","dæjsta","gaskevåhkoe","duarsta","bearjadahke","laavvardahke"],abbreviatedDayNames:["aej","måa","dæj","gask","duar","bearj","laav"],shortestDayNames:["aej","måa","dæj","gask","duar","bearj","laav"],firstLetterDayNames:["a","m","d","g","d","b","l"],monthNames:["tsïengele","goevte","njoktje","voerhtje","suehpede","ruffie","snjaltje","mïetske","skïerede","golke","rahka","goeve"],abbreviatedMonthNames:["tsïen","goevt","njok","voer","sueh","ruff","snja","mïet","skïer","golk","rahk","goev"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"ymd",formatPatterns:{shortDate:"yyyy-MM-dd",longDate:"MMMM d\'. b. \'yyyy",shortTime:"HH:mm:ss",longTime:"HH:mm:ss",fullDateTime:"MMMM d\'. b. \'yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^tsïen(gele)?/i,feb:/^goevt(e)?/i,mar:/^njok(tje)?/i,apr:/^voer(htje)?/i,may:/^sueh(pede)?/i,jun:/^ruff(ie)?/i,jul:/^snja(ltje)?/i,aug:/^mïet(ske)?/i,sep:/^skïer(ede)?/i,oct:/^golk(e)?/i,nov:/^rahk(a)?/i,dec:/^goev(e)?/i,sun:/^aejlege/i,mon:/^måanta/i,tue:/^dæjsta/i,wed:/^gaskevåhkoe/i,thu:/^duarsta/i,fri:/^bearjadahke/i,sat:/^laavvardahke/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'smj-NO' => 'Date.CultureInfo={name:"smj-NO",englishName:"Sami (Lule) (Norway)",nativeName:"julevusámegiella (Vuodna)",dayNames:["sådnåbiejvve","mánnodahka","dijstahka","gasskavahkko","duorastahka","bierjjedahka","lávvodahka"],abbreviatedDayNames:["såd","mán","dis","gas","duor","bier","láv"],shortestDayNames:["såd","mán","dis","gas","duor","bier","láv"],firstLetterDayNames:["s","m","d","g","d","b","l"],monthNames:["ådåjakmánno","guovvamánno","sjnjuktjamánno","vuoratjismánno","moarmesmánno","biehtsemánno","sjnjilltjamánno","bårggemánno","ragátmánno","gålgådismánno","basádismánno","javllamánno"],abbreviatedMonthNames:["ådåj","guov","snju","vuor","moar","bieh","snji","bårg","ragá","gålg","basá","javl"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"MMMM d\'. b. \'yyyy",shortTime:"HH:mm:ss",longTime:"HH:mm:ss",fullDateTime:"MMMM d\'. b. \'yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^ådåj(akmánno)?/i,feb:/^guov(vamánno)?/i,mar:/^sjnjuktjamánno/i,apr:/^vuor(atjismánno)?/i,may:/^moar(mesmánno)?/i,jun:/^bieh(tsemánno)?/i,jul:/^sjnjilltjamánno/i,aug:/^bårg(gemánno)?/i,sep:/^ragá(tmánno)?/i,oct:/^gålg(ådismánno)?/i,nov:/^basá(dismánno)?/i,dec:/^javl(lamánno)?/i,sun:/^sådnåbiejvve/i,mon:/^mánnodahka/i,tue:/^dijstahka/i,wed:/^gasskavahkko/i,thu:/^duorastahka/i,fri:/^bierjjedahka/i,sat:/^lávvodahka/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'smj-SE' => 'Date.CultureInfo={name:"smj-SE",englishName:"Sami (Lule) (Sweden)",nativeName:"julevusámegiella (Svierik)",dayNames:["ájllek","mánnodahka","dijstahka","gasskavahkko","duorastahka","bierjjedahka","lávvodahka"],abbreviatedDayNames:["ájl","mán","dis","gas","duor","bier","láv"],shortestDayNames:["ájl","mán","dis","gas","duor","bier","láv"],firstLetterDayNames:["á","m","d","g","d","b","l"],monthNames:["ådåjakmánno","guovvamánno","sjnjuktjamánno","vuoratjismánno","moarmesmánno","biehtsemánno","sjnjilltjamánno","bårggemánno","ragátmánno","gålgådismánno","basádismánno","javllamánno"],abbreviatedMonthNames:["ådåj","guov","snju","vuor","moar","bieh","snji","bårg","ragá","gålg","basá","javl"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"ymd",formatPatterns:{shortDate:"yyyy-MM-dd",longDate:"MMMM d\'. b. \'yyyy",shortTime:"HH:mm:ss",longTime:"HH:mm:ss",fullDateTime:"MMMM d\'. b. \'yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^ådåj(akmánno)?/i,feb:/^guov(vamánno)?/i,mar:/^sjnjuktjamánno/i,apr:/^vuor(atjismánno)?/i,may:/^moar(mesmánno)?/i,jun:/^bieh(tsemánno)?/i,jul:/^sjnjilltjamánno/i,aug:/^bårg(gemánno)?/i,sep:/^ragá(tmánno)?/i,oct:/^gålg(ådismánno)?/i,nov:/^basá(dismánno)?/i,dec:/^javl(lamánno)?/i,sun:/^ájllek/i,mon:/^mánnodahka/i,tue:/^dijstahka/i,wed:/^gasskavahkko/i,thu:/^duorastahka/i,fri:/^bierjjedahka/i,sat:/^lávvodahka/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'smn-FI' => 'Date.CultureInfo={name:"smn-FI",englishName:"Sami (Inari) (Finland)",nativeName:"sämikielâ (Suomâ)",dayNames:["pasepeivi","vuossargâ","majebargâ","koskokko","tuorâstâh","vástuppeivi","lávárdâh"],abbreviatedDayNames:["pa","vu","ma","ko","tu","vá","lá"],shortestDayNames:["pa","vu","ma","ko","tu","vá","lá"],firstLetterDayNames:["p","v","m","k","t","v","l"],monthNames:["uđđâivemáánu","kuovâmáánu","njuhčâmáánu","cuáŋuimáánu","vyesimáánu","kesimáánu","syeinimáánu","porgemáánu","čohčâmáánu","roovvâdmáánu","skammâmáánu","juovlâmáánu"],abbreviatedMonthNames:["uđiv","kuov","njuh","cuoŋ","vyes","kesi","syei","porg","čoh","roov","ska","juov"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d.M.yyyy",longDate:"MMMM d\'. p. \'yyyy",shortTime:"H:mm:ss",longTime:"H:mm:ss",fullDateTime:"MMMM d\'. p. \'yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^uđđâivemáánu/i,feb:/^kuov(âmáánu)?/i,mar:/^njuh(čâmáánu)?/i,apr:/^cuáŋuimáánu/i,may:/^vyes(imáánu)?/i,jun:/^kesi(máánu)?/i,jul:/^syei(nimáánu)?/i,aug:/^porg(emáánu)?/i,sep:/^čoh(čâmáánu)?/i,oct:/^roov(vâdmáánu)?/i,nov:/^ska(mmâmáánu)?/i,dec:/^juov(lâmáánu)?/i,sun:/^pasepeivi/i,mon:/^vuossargâ/i,tue:/^majebargâ/i,wed:/^koskokko/i,thu:/^tuorâstâh/i,fri:/^vástuppeivi/i,sat:/^lávárdâh/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'sms-FI' => 'Date.CultureInfo={name:"sms-FI",englishName:"Sami (Skolt) (Finland)",nativeName:"sääm´ǩiõll (Lää´ddjânnam)",dayNames:["pâ´sspei´vv","vuõssargg","mââibargg","seärad","nelljdpei´vv","piâtnâc","sue´vet"],abbreviatedDayNames:["pâ","vu","mâ","se","ne","pi","su"],shortestDayNames:["pâ","vu","mâ","se","ne","pi","su"],firstLetterDayNames:["p","v","m","s","n","p","s"],monthNames:["ođđee´jjmään","tä´lvvmään","pâ´zzlâšttammään","njuhččmään","vue´ssmään","ǩie´ssmään","suei´nnmään","på´rǧǧmään","čõhččmään","kålggmään","skamm´mään","rosttovmään"],abbreviatedMonthNames:["ođjm","tä´lvv","pâzl","njuh","vue","ǩie","suei","på´r","čõh","kålg","ska","rost"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d.M.yyyy",longDate:"MMMM d\'. p. \'yyyy",shortTime:"H:mm:ss",longTime:"H:mm:ss",fullDateTime:"MMMM d\'. p. \'yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^ođđee´jjmään/i,feb:/^tä´lvv(mään)?/i,mar:/^pâ´zzlâšttammään/i,apr:/^njuh(ččmään)?/i,may:/^vue(´ssmään)?/i,jun:/^ǩie(´ssmään)?/i,jul:/^suei(´nnmään)?/i,aug:/^på´r(ǧǧmään)?/i,sep:/^čõh(ččmään)?/i,oct:/^kålg(gmään)?/i,nov:/^ska(mm´mään)?/i,dec:/^rost(tovmään)?/i,sun:/^pâ´sspei´vv/i,mon:/^vuõssargg/i,tue:/^mââibargg/i,wed:/^seärad/i,thu:/^nelljdpei´vv/i,fri:/^piâtnâc/i,sat:/^sue´vet/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'sq-AL' => 'Date.CultureInfo={name:"sq-AL",englishName:"Albanian (Albania)",nativeName:"shqipe (Shqipëria)",dayNames:["e diel","e hënë","e martë","e mërkurë","e enjte","e premte","e shtunë"],abbreviatedDayNames:["Die","Hën","Mar","Mër","Enj","Pre","Sht"],shortestDayNames:["Di","Hë","Ma","Më","En","Pr","Sh"],firstLetterDayNames:["D","H","M","M","E","P","S"],monthNames:["janar","shkurt","mars","prill","maj","qershor","korrik","gusht","shtator","tetor","nëntor","dhjetor"],abbreviatedMonthNames:["Jan","Shk","Mar","Pri","Maj","Qer","Kor","Gsh","Sht","Tet","Nën","Dhj"],amDesignator:"PD",pmDesignator:"MD",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"ymd",formatPatterns:{shortDate:"yyyy-MM-dd",longDate:"yyyy-MM-dd",shortTime:"h:mm.tt",longTime:"h:mm:ss.tt",fullDateTime:"yyyy-MM-dd h:mm:ss.tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"yyyy-MM"},regexPatterns:{jan:/^jan(ar)?/i,feb:/^shk(urt)?/i,mar:/^mar(s)?/i,apr:/^pri(ll)?/i,may:/^maj/i,jun:/^qer(shor)?/i,jul:/^kor(rik)?/i,aug:/^gusht/i,sep:/^sht(ator)?/i,oct:/^tet(or)?/i,nov:/^nën(tor)?/i,dec:/^dhj(etor)?/i,sun:/^di(e(iel)?)?/i,mon:/^hë(n(ënë)?)?/i,tue:/^ma(r(artë)?)?/i,wed:/^më(r(ërkurë)?)?/i,thu:/^en(j(njte)?)?/i,fri:/^pr(e(remte)?)?/i,sat:/^sh(t(htunë)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'sr-Cyrl-BA' => 'Date.CultureInfo={name:"sr-Cyrl-BA",englishName:"Serbian (Cyrillic) (Bosnia and Herzegovina)",nativeName:"српски (Босна и Херцеговина)",dayNames:["недеља","понедељак","уторак","среда","четвртак","петак","субота"],abbreviatedDayNames:["нед","пон","уто","сре","чет","пет","суб"],shortestDayNames:["нед","пон","уто","сре","чет","пет","суб"],firstLetterDayNames:["н","п","у","с","ч","п","с"],monthNames:["јануар","фебруар","март","април","мај","јун","јул","август","септембар","октобар","новембар","децембар"],abbreviatedMonthNames:["јан","феб","мар","апр","мај","јун","јул","авг","сеп","окт","нов","дец"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d.M.yyyy",longDate:"d. MMMM yyyy",shortTime:"H:mm:ss",longTime:"H:mm:ss",fullDateTime:"d. MMMM yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^јан(уар)?/i,feb:/^феб(руар)?/i,mar:/^мар(т)?/i,apr:/^апр(ил)?/i,may:/^мај/i,jun:/^јун/i,jul:/^јул/i,aug:/^авг(уст)?/i,sep:/^сеп(тембар)?/i,oct:/^окт(обар)?/i,nov:/^нов(ембар)?/i,dec:/^дец(ембар)?/i,sun:/^недеља/i,mon:/^понедељак/i,tue:/^уторак/i,wed:/^среда/i,thu:/^четвртак/i,fri:/^петак/i,sat:/^субота/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'sr-Cyrl-CS' => 'Date.CultureInfo={name:"sr-Cyrl-CS",englishName:"Serbian (Cyrillic, Serbia)",nativeName:"српски (Србија)",dayNames:["недеља","понедељак","уторак","среда","четвртак","петак","субота"],abbreviatedDayNames:["нед","пон","уто","сре","чет","пет","суб"],shortestDayNames:["не","по","ут","ср","че","пе","су"],firstLetterDayNames:["н","п","у","с","ч","п","с"],monthNames:["јануар","фебруар","март","април","мај","јун","јул","август","септембар","октобар","новембар","децембар"],abbreviatedMonthNames:["јан","феб","мар","апр","мај","јун","јул","авг","сеп","окт","нов","дец"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d.M.yyyy",longDate:"d. MMMM yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"d. MMMM yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d. MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^јан(уар)?/i,feb:/^феб(руар)?/i,mar:/^мар(т)?/i,apr:/^апр(ил)?/i,may:/^мај/i,jun:/^јун/i,jul:/^јул/i,aug:/^авг(уст)?/i,sep:/^сеп(тембар)?/i,oct:/^окт(обар)?/i,nov:/^нов(ембар)?/i,dec:/^дец(ембар)?/i,sun:/^не(д(еља)?)?/i,mon:/^по(н(едељак)?)?/i,tue:/^ут(о(рак)?)?/i,wed:/^ср(е(да)?)?/i,thu:/^че(т(вртак)?)?/i,fri:/^пе(т(ак)?)?/i,sat:/^су(б(ота)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'sr-Latn-BA' => 'Date.CultureInfo={name:"sr-Latn-BA",englishName:"Serbian (Latin) (Bosnia and Herzegovina)",nativeName:"srpski (Bosna i Hercegovina)",dayNames:["nedelja","ponedeljak","utorak","sreda","četvrtak","petak","subota"],abbreviatedDayNames:["ned","pon","uto","sre","čet","pet","sub"],shortestDayNames:["ned","pon","uto","sre","čet","pet","sub"],firstLetterDayNames:["n","p","u","s","č","p","s"],monthNames:["januar","februar","mart","april","maj","jun","jul","avgust","septembar","oktobar","novembar","decembar"],abbreviatedMonthNames:["jan","feb","mar","apr","maj","jun","jul","avg","sep","okt","nov","dec"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d.M.yyyy",longDate:"d. MMMM yyyy",shortTime:"H:mm:ss",longTime:"H:mm:ss",fullDateTime:"d. MMMM yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uar)?/i,feb:/^feb(ruar)?/i,mar:/^mar(t)?/i,apr:/^apr(il)?/i,may:/^maj/i,jun:/^jun/i,jul:/^jul/i,aug:/^avg(ust)?/i,sep:/^sep(tembar)?/i,oct:/^okt(obar)?/i,nov:/^nov(embar)?/i,dec:/^dec(embar)?/i,sun:/^nedelja/i,mon:/^ponedeljak/i,tue:/^utorak/i,wed:/^sreda/i,thu:/^četvrtak/i,fri:/^petak/i,sat:/^subota/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'sr-Latn-CS' => 'Date.CultureInfo={name:"sr-Latn-CS",englishName:"Serbian (Latin, Serbia)",nativeName:"srpski (Srbija)",dayNames:["nedelja","ponedeljak","utorak","sreda","četvrtak","petak","subota"],abbreviatedDayNames:["ned","pon","uto","sre","čet","pet","sub"],shortestDayNames:["ne","po","ut","sr","če","pe","su"],firstLetterDayNames:["n","p","u","s","č","p","s"],monthNames:["januar","februar","mart","april","maj","jun","jul","avgust","septembar","oktobar","novembar","decembar"],abbreviatedMonthNames:["jan","feb","mar","apr","maj","jun","jul","avg","sep","okt","nov","dec"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d.M.yyyy",longDate:"d. MMMM yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"d. MMMM yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d. MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uar)?/i,feb:/^feb(ruar)?/i,mar:/^mar(t)?/i,apr:/^apr(il)?/i,may:/^maj/i,jun:/^jun/i,jul:/^jul/i,aug:/^avg(ust)?/i,sep:/^sep(tembar)?/i,oct:/^okt(obar)?/i,nov:/^nov(embar)?/i,dec:/^dec(embar)?/i,sun:/^ne(d(elja)?)?/i,mon:/^po(n(edeljak)?)?/i,tue:/^ut(o(rak)?)?/i,wed:/^sr(e(da)?)?/i,thu:/^če(t(vrtak)?)?/i,fri:/^pe(t(ak)?)?/i,sat:/^su(b(ota)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'sv-FI' => 'Date.CultureInfo={name:"sv-FI",englishName:"Swedish (Finland)",nativeName:"svenska (Finland)",dayNames:["söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"],abbreviatedDayNames:["sö","må","ti","on","to","fr","lö"],shortestDayNames:["sö","må","ti","on","to","fr","lö"],firstLetterDayNames:["s","m","t","o","t","f","l"],monthNames:["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"],abbreviatedMonthNames:["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d.M.yyyy",longDate:"\'den \'d MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"\'den \'d MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"\'den \'d MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uari)?/i,feb:/^feb(ruari)?/i,mar:/^mar(s)?/i,apr:/^apr(il)?/i,may:/^maj/i,jun:/^jun(i)?/i,jul:/^jul(i)?/i,aug:/^aug(usti)?/i,sep:/^sep(t(ember)?)?/i,oct:/^okt(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^söndag/i,mon:/^måndag/i,tue:/^tisdag/i,wed:/^onsdag/i,thu:/^torsdag/i,fri:/^fredag/i,sat:/^lördag/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'sv-SE' => 'Date.CultureInfo={name:"sv-SE",englishName:"Swedish (Sweden)",nativeName:"svenska (Sverige)",dayNames:["söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"],abbreviatedDayNames:["sö","må","ti","on","to","fr","lö"],shortestDayNames:["sö","må","ti","on","to","fr","lö"],firstLetterDayNames:["s","m","t","o","t","f","l"],monthNames:["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"],abbreviatedMonthNames:["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"ymd",formatPatterns:{shortDate:"yyyy-MM-dd",longDate:"\'den \'d MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"\'den \'d MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"\'den \'d MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^jan(uari)?/i,feb:/^feb(ruari)?/i,mar:/^mar(s)?/i,apr:/^apr(il)?/i,may:/^maj/i,jun:/^jun(i)?/i,jul:/^jul(i)?/i,aug:/^aug(usti)?/i,sep:/^sep(t(ember)?)?/i,oct:/^okt(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^söndag/i,mon:/^måndag/i,tue:/^tisdag/i,wed:/^onsdag/i,thu:/^torsdag/i,fri:/^fredag/i,sat:/^lördag/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'sw-KE' => 'Date.CultureInfo={name:"sw-KE",englishName:"Kiswahili (Kenya)",nativeName:"Kiswahili (Kenya)",dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["S","M","T","W","T","F","S"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"mdy",formatPatterns:{shortDate:"M/d/yyyy",longDate:"dddd, MMMM dd, yyyy",shortTime:"h:mm tt",longTime:"h:mm:ss tt",fullDateTime:"dddd, MMMM dd, yyyy h:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^jan(uary)?/i,feb:/^feb(ruary)?/i,mar:/^mar(ch)?/i,apr:/^apr(il)?/i,may:/^may/i,jun:/^jun(e)?/i,jul:/^jul(y)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^oct(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^s(un(day)?)?/i,mon:/^m(on(day)?)?/i,tue:/^tu(e(s(day)?)?)?/i,wed:/^w(ed(nesday)?)?/i,thu:/^th(u(r(s(day)?)?)?)?/i,fri:/^f(ri(day)?)?/i,sat:/^s(at(urday)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'syr-SY' => 'Date.CultureInfo={name:"syr-SY",englishName:"Syriac (Syria)",nativeName:"ܣܘܪܝܝܐ (سوريا)",dayNames:["ܚܕ ܒܫܒܐ","ܬܪܝܢ ܒܫܒܐ","ܬܠܬܐ ܒܫܒܐ","ܐܪܒܥܐ ܒܫܒܐ","ܚܡܫܐ ܒܫܒܐ","ܥܪܘܒܬܐ","ܫܒܬܐ"],abbreviatedDayNames:["܏ܐ ܏ܒܫ","܏ܒ ܏ܒܫ","܏ܓ ܏ܒܫ","܏ܕ ܏ܒܫ","܏ܗ ܏ܒܫ","܏ܥܪܘܒ","܏ܫܒ"],shortestDayNames:["܏","܏","܏","܏","܏","܏","܏"],firstLetterDayNames:["܏","܏","܏","܏","܏","܏","܏"],monthNames:["ܟܢܘܢ ܐܚܪܝ","ܫܒܛ","ܐܕܪ","ܢܝܣܢ","ܐܝܪ","ܚܙܝܪܢ","ܬܡܘܙ","ܐܒ","ܐܝܠܘܠ","ܬܫܪܝ ܩܕܝܡ","ܬܫܪܝ ܐܚܪܝ","ܟܢܘܢ ܩܕܝܡ"],abbreviatedMonthNames:["܏ܟܢ ܏ܒ","ܫܒܛ","ܐܕܪ","ܢܝܣܢ","ܐܝܪ","ܚܙܝܪܢ","ܬܡܘܙ","ܐܒ","ܐܝܠܘܠ","܏ܬܫ ܏ܐ","܏ܬܫ ܏ܒ","܏ܟܢ ܏ܐ"],amDesignator:"ܩ.ܛ",pmDesignator:"ܒ.ܛ",firstDayOfWeek:6,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dd MMMM, yyyy",shortTime:"hh:mm tt",longTime:"hh:mm:ss tt",fullDateTime:"dd MMMM, yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^ܟܢܘܢ ܐܚܪܝ/i,feb:/^ܫܒܛ/i,mar:/^ܐܕܪ/i,apr:/^ܢܝܣܢ/i,may:/^ܐܝܪ/i,jun:/^ܚܙܝܪܢ/i,jul:/^ܬܡܘܙ/i,aug:/^ܐܒ/i,sep:/^ܐܝܠܘܠ/i,oct:/^ܬܫܪܝ ܩܕܝܡ/i,nov:/^ܬܫܪܝ ܐܚܪܝ/i,dec:/^ܟܢܘܢ ܩܕܝܡ/i,sun:/^܏(ܐ ܏ܒܫ(ܐ)?)?/i,mon:/^܏(ܒ ܏ܒܫ(ܫܒܐ)?)?/i,tue:/^܏(ܓ ܏ܒܫ(ܫܒܐ)?)?/i,wed:/^܏(ܕ ܏ܒܫ(ܒܫܒܐ)?)?/i,thu:/^܏(ܗ ܏ܒܫ(ܫܒܐ)?)?/i,fri:/^܏(ܥܪܘܒ(ܐ)?)?/i,sat:/^܏(ܫܒ(ܐ)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'ta-IN' => 'Date.CultureInfo={name:"ta-IN",englishName:"Tamil (India)",nativeName:"தமிழ் (இந்தியா)",dayNames:["ஞாயிறு","திங்கள்","செவ்வாய்","புதன்","வியாழன்","வெள்ளி","சனி"],abbreviatedDayNames:["ஞா","தி","செ","பு","வி","வெ","ச"],shortestDayNames:["ஞ","த","ச","ப","வ","வ","ச"],firstLetterDayNames:["ஞ","த","ச","ப","வ","வ","ச"],monthNames:["ஜனவரி","பெப்ரவரி","மார்ச்","ஏப்ரல்","மே","ஜூன்","ஜூலை","ஆகஸ்ட்","செப்டம்பர்","அக்டோபர்","நவம்பர்","டிசம்பர்"],abbreviatedMonthNames:["ஜன.","பெப்.","மார்.","ஏப்.","மே","ஜூன்","ஜூலை","ஆக.","செப்.","அக்.","நவ.","டிச."],amDesignator:"காலை",pmDesignator:"மாலை",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd-MM-yyyy",longDate:"dd MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dd MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^ஜன(.(வரி)?)?/i,feb:/^பெப்(.(ரவரி)?)?/i,mar:/^மார்(.(ச்)?)?/i,apr:/^ஏப்(.(ரல்)?)?/i,may:/^மே/i,jun:/^ஜூன்/i,jul:/^ஜூலை/i,aug:/^ஆக(.(ஸ்ட்)?)?/i,sep:/^செப்(.(டம்பர்)?)?/i,oct:/^அக்(.(டோபர்)?)?/i,nov:/^நவ(.(ம்பர்)?)?/i,dec:/^டிச(.(ம்பர்)?)?/i,sun:/^ஞ(ா(யிறு)?)?/i,mon:/^த(ி(ங்கள்)?)?/i,tue:/^ச(ெ(வ்வாய்)?)?/i,wed:/^ப(ு(தன்)?)?/i,thu:/^வ(ி(யாழன்)?)?/i,fri:/^வ(ெ(ள்ளி)?)?/i,sat:/^சனி/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'te-IN' => 'Date.CultureInfo={name:"te-IN",englishName:"Telugu (India)",nativeName:"తెలుగు (భారత దేశం)",dayNames:["ఆదివారం","సోమవారం","మంగళవారం","బుధవారం","గురువారం","శుక్రవారం","శనివారం"],abbreviatedDayNames:["ఆది.","సోమ.","మంగళ.","బుధ.","గురు.","శుక్ర.","శని."],shortestDayNames:["ఆ","స","మ","బ","గ","శ","శ"],firstLetterDayNames:["ఆ","స","మ","బ","గ","శ","శ"],monthNames:["జనవరి","ఫిబ్రవరి","మార్చి","ఏప్రిల్","మే","జూన్","జూలై","ఆగస్టు","సెప్టెంబర్","అక్టోబర్","నవంబర్","డిసెంబర్"],abbreviatedMonthNames:["జనవరి","ఫిబ్రవరి","మార్చి","ఏప్రిల్","మే","జూన్","జూలై","ఆగస్టు","సెప్టెంబర్","అక్టోబర్","నవంబర్","డిసెంబర్"],amDesignator:"పూర్వాహ్న",pmDesignator:"అపరాహ్న",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd-MM-yy",longDate:"dd MMMM yyyy",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dd MMMM yyyy HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^జనవరి/i,feb:/^ఫిబ్రవరి/i,mar:/^మార్చి/i,apr:/^ఏప్రిల్/i,may:/^మే/i,jun:/^జూన్/i,jul:/^జూలై/i,aug:/^ఆగస్టు/i,sep:/^సెప్టెంబర్/i,oct:/^అక్టోబర్/i,nov:/^నవంబర్/i,dec:/^డిసెంబర్/i,sun:/^ఆ(ది(.(వారం)?)?)?/i,mon:/^స(ోమ(.(వారం)?)?)?/i,tue:/^మ(ంగళ(.(వారం)?)?)?/i,wed:/^బ(ుధ(.(వారం)?)?)?/i,thu:/^గ(ురు(.(వారం)?)?)?/i,fri:/^శ(ుక్ర(.(వారం)?)?)?/i,sat:/^శ(ని(.(వారం)?)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'th-TH' => 'Date.CultureInfo={name:"th-TH",englishName:"Thai (Thailand)",nativeName:"ไทย (ไทย)",dayNames:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัสบดี","ศุกร์","เสาร์"],abbreviatedDayNames:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],shortestDayNames:["อ","จ","อ","พ","พ","ศ","ส"],firstLetterDayNames:["อ","จ","อ","พ","พ","ศ","ส"],monthNames:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],abbreviatedMonthNames:["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:1,twoDigitYearMax:2572,dateElementOrder:"dmy",formatPatterns:{shortDate:"d/M/yyyy",longDate:"d MMMM yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"d MMMM yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^ม(.(กราค)?)?/i,feb:/^ก(.(ุมภาพันธ์)?)?/i,mar:/^มี(.(นาคม)?)?/i,apr:/^เม(.(ษายน)?)?/i,may:/^พ(.(ฤษภาคม)?)?/i,jun:/^มิ(.(ถุนายน)?)?/i,jul:/^ก(.(รฎาคม)?)?/i,aug:/^ส(.(ิงหาคม)?)?/i,sep:/^ก(.(ันยายน)?)?/i,oct:/^ต(.(ุลาคม)?)?/i,nov:/^พ(.(ฤศจิกายน)?)?/i,dec:/^ธ(.(ันวาคม)?)?/i,sun:/^อ(า(.(ทิตย์)?)?)?/i,mon:/^จ((.(ันทร์)?)?)?/i,tue:/^อ((.(ังคาร)?)?)?/i,wed:/^พ((.(ุธ)?)?)?/i,thu:/^พ(ฤ(.(หัสบดี)?)?)?/i,fri:/^ศ((.(ุกร์)?)?)?/i,sat:/^ส((.(สาร์)?)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'tn-ZA' => 'Date.CultureInfo={name:"tn-ZA",englishName:"Tswana (South Africa)",nativeName:"Setswana (Aforika Borwa)",dayNames:["Latshipi","Mosupologo","Labobedi","Laboraro","Labone","Labotlhano","Lamatlhatso"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["Ferikgong","Tlhakole","Mopitloe","Moranang","Motsheganong","Seetebosigo","Phukwi","Phatwe","Lwetse","Diphalane","Ngwanatsele","Sedimothole"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"ymd",formatPatterns:{shortDate:"yyyy/MM/dd",longDate:"dd MMMM yyyy",shortTime:"hh:mm:ss tt",longTime:"hh:mm:ss tt",fullDateTime:"dd MMMM yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^ferikgong/i,feb:/^tlhakole/i,mar:/^mopitloe/i,apr:/^moranang/i,may:/^motsheganong/i,jun:/^seetebosigo/i,jul:/^phukwi/i,aug:/^phatwe/i,sep:/^lwetse/i,oct:/^diphalane/i,nov:/^ngwanatsele/i,dec:/^sedimothole/i,sun:/^latshipi/i,mon:/^mosupologo/i,tue:/^labobedi/i,wed:/^laboraro/i,thu:/^labone/i,fri:/^labotlhano/i,sat:/^lamatlhatso/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'tr-TR' => 'Date.CultureInfo={name:"tr-TR",englishName:"Turkish (Turkey)",nativeName:"Türkçe (Türkiye)",dayNames:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],abbreviatedDayNames:["Paz","Pzt","Sal","Çar","Per","Cum","Cmt"],shortestDayNames:["Pz","Pt","Sa","Ça","Pe","Cu","Ct"],firstLetterDayNames:["P","P","S","Ç","P","C","C"],monthNames:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],abbreviatedMonthNames:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"dd MMMM yyyy dddd",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"dd MMMM yyyy dddd HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^oca(k)?/i,feb:/^şub(at)?/i,mar:/^mar(t)?/i,apr:/^nis(an)?/i,may:/^may(ıs)?/i,jun:/^haz(iran)?/i,jul:/^tem(muz)?/i,aug:/^ağu(stos)?/i,sep:/^eyl(ül)?/i,oct:/^eki(m)?/i,nov:/^kas(ım)?/i,dec:/^ara(lık)?/i,sun:/^pz(z(ar)?)?/i,mon:/^pt(t(artesi)?)?/i,tue:/^sa(l(ı)?)?/i,wed:/^ça(r(şamba)?)?/i,thu:/^pe(r(şembe)?)?/i,fri:/^cu(m(a)?)?/i,sat:/^ct(t(artesi)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'tt-RU' => 'Date.CultureInfo={name:"tt-RU",englishName:"Tatar (Russia)",nativeName:"Татар (Россия)",dayNames:["Якшәмбе","Дүшәмбе","Сишәмбе","Чәршәмбе","Пәнҗешәмбе","Җомга","Шимбә"],abbreviatedDayNames:["Якш","Дүш","Сиш","Чәрш","Пәнҗ","Җом","Шим"],shortestDayNames:["Якш","Дүш","Сиш","Чәрш","Пәнҗ","Җом","Шим"],firstLetterDayNames:["Я","Д","С","Ч","П","Җ","Ш"],monthNames:["Гыйнварь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],abbreviatedMonthNames:["Гыйнв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"d MMMM yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"d MMMM yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^гыйнв(арь)?/i,feb:/^фев(раль)?/i,mar:/^мар(т)?/i,apr:/^апр(ель)?/i,may:/^май/i,jun:/^июн(ь)?/i,jul:/^июл(ь)?/i,aug:/^авг(уст)?/i,sep:/^сен(тябрь)?/i,oct:/^окт(ябрь)?/i,nov:/^ноя(брь)?/i,dec:/^дек(абрь)?/i,sun:/^якшәмбе/i,mon:/^дүшәмбе/i,tue:/^сишәмбе/i,wed:/^чәршәмбе/i,thu:/^пәнҗешәмбе/i,fri:/^җомга/i,sat:/^шимбә/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'uk-UA' => 'Date.CultureInfo={name:"uk-UA",englishName:"Ukrainian (Ukraine)",nativeName:"україньска (Україна)",dayNames:["неділя","понеділок","вівторок","середа","четвер","п\'ятниця","субота"],abbreviatedDayNames:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],shortestDayNames:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],firstLetterDayNames:["Н","П","В","С","Ч","П","С"],monthNames:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],abbreviatedMonthNames:["Січ","Лют","Бер","Кві","Тра","Чер","Лип","Сер","Вер","Жов","Лис","Гру"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"d MMMM yyyy\' р.\'",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"d MMMM yyyy\' р.\' H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d MMMM",yearMonth:"MMMM yyyy\' р.\'"},regexPatterns:{jan:/^січ(ень)?/i,feb:/^лют(ий)?/i,mar:/^бер(езень)?/i,apr:/^кві(тень)?/i,may:/^тра(вень)?/i,jun:/^чер(вень)?/i,jul:/^лип(ень)?/i,aug:/^сер(пень)?/i,sep:/^вер(есень)?/i,oct:/^жов(тень)?/i,nov:/^лис(топад)?/i,dec:/^гру(день)?/i,sun:/^неділя/i,mon:/^понеділок/i,tue:/^вівторок/i,wed:/^середа/i,thu:/^четвер/i,fri:/^п\'ятниця/i,sat:/^субота/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'ur-PK' => 'Date.CultureInfo={name:"ur-PK",englishName:"Urdu (Islamic Republic of Pakistan)",nativeName:"اُردو (پاکستان)",dayNames:["اتوار","پير","منگل","بدھ","جمعرات","جمعه","هفته"],abbreviatedDayNames:["اتوار","پير","منگل","بدھ","جمعرات","جمعه","هفته"],shortestDayNames:["ا","پ","م","ب","ج","ج","ه"],firstLetterDayNames:["ا","پ","م","ب","ج","ج","ه"],monthNames:["جنورى","فرورى","مارچ","اپريل","مئ","جون","جولاٸ","اگست","ستمبر","اکتوبر","نومبر","دسمبر"],abbreviatedMonthNames:["جنورى","فرورى","مارچ","اپريل","مئ","جون","جولاٸ","اگست","ستمبر","اکتوبر","نومبر","دسمبر"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dd MMMM, yyyy",shortTime:"h:mm tt",longTime:"h:mm:ss tt",fullDateTime:"dd MMMM, yyyy h:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^جنورى/i,feb:/^فرورى/i,mar:/^مارچ/i,apr:/^اپريل/i,may:/^مئ/i,jun:/^جون/i,jul:/^جولاٸ/i,aug:/^اگست/i,sep:/^ستمبر/i,oct:/^اکتوبر/i,nov:/^نومبر/i,dec:/^دسمبر/i,sun:/^ا(1)?/i,mon:/^پ(1)?/i,tue:/^م(1)?/i,wed:/^ب(1)?/i,thu:/^ج(1)?/i,fri:/^ج(1)?/i,sat:/^ه(1)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'uz-Cyrl-UZ' => 'Date.CultureInfo={name:"uz-Cyrl-UZ",englishName:"Uzbek (Cyrillic, Uzbekistan)",nativeName:"Ўзбек (Ўзбекистон)",dayNames:["якшанба","душанба","сешанба","чоршанба","пайшанба","жума","шанба"],abbreviatedDayNames:["якш","дш","сш","чш","пш","ж","ш"],shortestDayNames:["якш","дш","сш","чш","пш","ж","ш"],firstLetterDayNames:["я","д","с","ч","п","ж","ш"],monthNames:["Январ","Феврал","Март","Апрел","Май","Июн","Июл","Август","Сентябр","Октябр","Ноябр","Декабр"],abbreviatedMonthNames:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd.MM.yyyy",longDate:"yyyy \'йил\' d-MMMM",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"yyyy \'йил\' d-MMMM HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d-MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^янв(ар)?/i,feb:/^фев(рал)?/i,mar:/^мар(т)?/i,apr:/^апр(ел)?/i,may:/^май/i,jun:/^июн/i,jul:/^июл/i,aug:/^авг(уст)?/i,sep:/^сен(тябр)?/i,oct:/^окт(ябр)?/i,nov:/^ноя(бр)?/i,dec:/^дек(абр)?/i,sun:/^якшанба/i,mon:/^душанба/i,tue:/^сешанба/i,wed:/^чоршанба/i,thu:/^пайшанба/i,fri:/^жума/i,sat:/^шанба/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'uz-Latn-UZ' => 'Date.CultureInfo={name:"uz-Latn-UZ",englishName:"Uzbek (Latin, Uzbekistan)",nativeName:"U\'zbek (U\'zbekiston Respublikasi)",dayNames:["yakshanba","dushanba","seshanba","chorshanba","payshanba","juma","shanba"],abbreviatedDayNames:["yak.","dsh.","sesh.","chr.","psh.","jm.","sh."],shortestDayNames:["yak","dsh","sesh","chr","psh","jm","sh"],firstLetterDayNames:["y","d","s","c","p","j","s"],monthNames:["yanvar","fevral","mart","aprel","may","iyun","iyul","avgust","sentyabr","oktyabr","noyabr","dekabr"],abbreviatedMonthNames:["yanvar","fevral","mart","aprel","may","iyun","iyul","avgust","sentyabr","oktyabr","noyabr","dekabr"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM yyyy",longDate:"yyyy \'yil\' d-MMMM",shortTime:"HH:mm",longTime:"HH:mm:ss",fullDateTime:"yyyy \'yil\' d-MMMM HH:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d-MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^yanvar/i,feb:/^fevral/i,mar:/^mart/i,apr:/^aprel/i,may:/^may/i,jun:/^iyun/i,jul:/^iyul/i,aug:/^avgust/i,sep:/^sentyabr/i,oct:/^oktyabr/i,nov:/^noyabr/i,dec:/^dekabr/i,sun:/^yak((.(shanba)?)?)?/i,mon:/^dsh((.(hanba)?)?)?/i,tue:/^sesh((.(anba)?)?)?/i,wed:/^chr((.(rshanba)?)?)?/i,thu:/^psh((.(shanba)?)?)?/i,fri:/^jm((.(ma)?)?)?/i,sat:/^sh((.(anba)?)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'vi-VN' => 'Date.CultureInfo={name:"vi-VN",englishName:"Vietnamese (Vietnam)",nativeName:"Tiếng Việt (Việt Nam)",dayNames:["Chủ Nhật","Thứ Hai","Thứ Ba","Thứ Tư","Thứ Năm","Thứ Sáu","Thứ Bảy"],abbreviatedDayNames:["CN","Hai","Ba","Tư","Năm","Sáu","Bảy"],shortestDayNames:["C","H","B","T","N","S","B"],firstLetterDayNames:["C","H","B","T","N","S","B"],monthNames:["Tháng Giêng","Tháng Hai","Tháng Ba","Tháng Tư","Tháng Năm","Tháng Sáu","Tháng Bảy","Tháng Tám","Tháng Chín","Tháng Mười","Tháng Mười Một","Tháng Mười Hai"],abbreviatedMonthNames:["Thg1","Thg2","Thg3","Thg4","Thg5","Thg6","Thg7","Thg8","Thg9","Thg10","Thg11","Thg12"],amDesignator:"SA",pmDesignator:"CH",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dd MMMM yyyy",shortTime:"h:mm tt",longTime:"h:mm:ss tt",fullDateTime:"dd MMMM yyyy h:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^tháng giêng/i,feb:/^tháng hai/i,mar:/^tháng ba/i,apr:/^tháng tư/i,may:/^tháng năm/i,jun:/^tháng sáu/i,jul:/^tháng bảy/i,aug:/^tháng tám/i,sep:/^tháng chín/i,oct:/^tháng mười/i,nov:/^tháng mười một/i,dec:/^tháng mười hai/i,sun:/^c(n(ủ nhật)?)?/i,mon:/^h(ai(́ hai)?)?/i,tue:/^b(a(ứ ba)?)?/i,wed:/^t(ư(ứ tư)?)?/i,thu:/^n(ăm(́ năm)?)?/i,fri:/^s(áu( sáu)?)?/i,sat:/^b(ảy( bảy)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'xh-ZA' => 'Date.CultureInfo={name:"xh-ZA",englishName:"Xhosa (South Africa)",nativeName:"isiXhosa (uMzantsi Afrika)",dayNames:["iCawa","uMvulo","uLwesibini","uLwesithathu","uLwesine","uLwesihlanu","uMgqibelo"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["eyoMqungu","eyoMdumba","eyoKwindla","Tshazimpuzi","Canzibe","eyeSilimela","eyeKhala","eyeThupha","eyoMsintsi","eyeDwara","eyeNkanga","eyoMnga"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"ymd",formatPatterns:{shortDate:"yyyy/MM/dd",longDate:"dd MMMM yyyy",shortTime:"hh:mm:ss tt",longTime:"hh:mm:ss tt",fullDateTime:"dd MMMM yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^eyomqungu/i,feb:/^eyomdumba/i,mar:/^eyokwindla/i,apr:/^tshazimpuzi/i,may:/^canzibe/i,jun:/^eyesilimela/i,jul:/^eyekhala/i,aug:/^eyethupha/i,sep:/^eyomsintsi/i,oct:/^eyedwara/i,nov:/^eyenkanga/i,dec:/^eyomnga/i,sun:/^icawa/i,mon:/^umvulo/i,tue:/^ulwesibini/i,wed:/^ulwesithathu/i,thu:/^ulwesine/i,fri:/^ulwesihlanu/i,sat:/^umgqibelo/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'zh-CN' => 'Date.CultureInfo={name:"zh-CN",englishName:"Chinese (People\'s Republic of China)",nativeName:"中文(中华人民共和国)",dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],abbreviatedDayNames:["日","一","二","三","四","五","六"],shortestDayNames:["日","一","二","三","四","五","六"],firstLetterDayNames:["日","一","二","三","四","五","六"],monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],abbreviatedMonthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],amDesignator:"上午",pmDesignator:"下午",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"ymd",formatPatterns:{shortDate:"yyyy/M/d",longDate:"yyyy\'年\'M\'月\'d\'日\'",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"yyyy\'年\'M\'月\'d\'日\' H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"M\'月\'d\'日\'",yearMonth:"yyyy\'年\'M\'月\'"},regexPatterns:{jan:/^一月/i,feb:/^二月/i,mar:/^三月/i,apr:/^四月/i,may:/^五月/i,jun:/^六月/i,jul:/^七月/i,aug:/^八月/i,sep:/^九月/i,oct:/^十月/i,nov:/^十一月/i,dec:/^十二月/i,sun:/^星期日/i,mon:/^星期一/i,tue:/^星期二/i,wed:/^星期三/i,thu:/^星期四/i,fri:/^星期五/i,sat:/^星期六/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'zh-HK' => 'Date.CultureInfo={name:"zh-HK",englishName:"Chinese (Hong Kong S.A.R.)",nativeName:"中文(香港特别行政區)",dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["Su","Mo","Tu","We","Th","Fr","Sa"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"",pmDesignator:"",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d/M/yyyy",longDate:"dddd, d MMMM, yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"dddd, d MMMM, yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^jan(uary)?/i,feb:/^feb(ruary)?/i,mar:/^mar(ch)?/i,apr:/^apr(il)?/i,may:/^may/i,jun:/^jun(e)?/i,jul:/^jul(y)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^oct(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^su(n(day)?)?/i,mon:/^mo(n(day)?)?/i,tue:/^tu(e(s(day)?)?)?/i,wed:/^we(d(nesday)?)?/i,thu:/^th(u(r(s(day)?)?)?)?/i,fri:/^fr(i(day)?)?/i,sat:/^sa(t(urday)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'zh-MO' => 'Date.CultureInfo={name:"zh-MO",englishName:"Chinese (Macao S.A.R.)",nativeName:"中文(澳門特别行政區)",dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],abbreviatedDayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],shortestDayNames:["日","一","二","三","四","五","六"],firstLetterDayNames:["日","一","二","三","四","五","六"],monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],abbreviatedMonthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],amDesignator:"",pmDesignator:"",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d/M/yyyy",longDate:"dddd, d MMMM, yyyy",shortTime:"H:mm",longTime:"H:mm:ss",fullDateTime:"dddd, d MMMM, yyyy H:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^一月/i,feb:/^二月/i,mar:/^三月/i,apr:/^四月/i,may:/^五月/i,jun:/^六月/i,jul:/^七月/i,aug:/^八月/i,sep:/^九月/i,oct:/^十月/i,nov:/^十一月/i,dec:/^十二月/i,sun:/^星期日/i,mon:/^星期一/i,tue:/^星期二/i,wed:/^星期三/i,thu:/^星期四/i,fri:/^星期五/i,sat:/^星期六/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'zh-SG' => 'Date.CultureInfo={name:"zh-SG",englishName:"Chinese (Singapore)",nativeName:"中文(新加坡)",dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],abbreviatedDayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],shortestDayNames:["日","一","二","三","四","五","六"],firstLetterDayNames:["日","一","二","三","四","五","六"],monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],abbreviatedMonthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"d/M/yyyy",longDate:"dddd, d MMMM, yyyy",shortTime:"tt h:mm",longTime:"tt h:mm:ss",fullDateTime:"dddd, d MMMM, yyyy tt h:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"d MMMM",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^一月/i,feb:/^二月/i,mar:/^三月/i,apr:/^四月/i,may:/^五月/i,jun:/^六月/i,jul:/^七月/i,aug:/^八月/i,sep:/^九月/i,oct:/^十月/i,nov:/^十一月/i,dec:/^十二月/i,sun:/^星期日/i,mon:/^星期一/i,tue:/^星期二/i,wed:/^星期三/i,thu:/^星期四/i,fri:/^星期五/i,sat:/^星期六/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'zh-TW' => 'Date.CultureInfo={name:"zh-TW",englishName:"Chinese (Taiwan)",nativeName:"中文(台灣)",dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],abbreviatedDayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],shortestDayNames:["日","一","二","三","四","五","六"],firstLetterDayNames:["日","一","二","三","四","五","六"],monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],abbreviatedMonthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],amDesignator:"上午",pmDesignator:"下午",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"ymd",formatPatterns:{shortDate:"yyyy/M/d",longDate:"yyyy\'年\'M\'月\'d\'日\'",shortTime:"tt hh:mm",longTime:"tt hh:mm:ss",fullDateTime:"yyyy\'年\'M\'月\'d\'日\' tt hh:mm:ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"M\'月\'d\'日\'",yearMonth:"yyyy\'年\'M\'月\'"},regexPatterns:{jan:/^一月/i,feb:/^二月/i,mar:/^三月/i,apr:/^四月/i,may:/^五月/i,jun:/^六月/i,jul:/^七月/i,aug:/^八月/i,sep:/^九月/i,oct:/^十月/i,nov:/^十一月/i,dec:/^十二月/i,sun:/^星期日/i,mon:/^星期一/i,tue:/^星期二/i,wed:/^星期三/i,thu:/^星期四/i,fri:/^星期五/i,sat:/^星期六/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
  'zu-ZA' => 'Date.CultureInfo={name:"zu-ZA",englishName:"Zulu (South Africa)",nativeName:"isiZulu (iNingizimu Afrika)",dayNames:["iSonto","uMsombuluko","uLwesibili","uLwesithathu","uLwesine","uLwesihlanu","uMgqibelo"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["uJanuwari","uFebuwari","uMashi","uAprhili","uMeyi","uJuni","uJulayi","uAgaste","uSepthemba","uOkthoba","uNovemba","uDisemba"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"ymd",formatPatterns:{shortDate:"yyyy/MM/dd",longDate:"dd MMMM yyyy",shortTime:"hh:mm:ss tt",longTime:"hh:mm:ss tt",fullDateTime:"dd MMMM yyyy hh:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^ujanuwari/i,feb:/^ufebuwari/i,mar:/^umashi/i,apr:/^uaprhili/i,may:/^umeyi/i,jun:/^ujuni/i,jul:/^ujulayi/i,aug:/^uagaste/i,sep:/^usepthemba/i,oct:/^uokthoba/i,nov:/^unovemba/i,dec:/^udisemba/i,sun:/^isonto/i,mon:/^umsombuluko/i,tue:/^ulwesibili/i,wed:/^ulwesithathu/i,thu:/^ulwesine/i,fri:/^ulwesihlanu/i,sat:/^umgqibelo/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|after|from)/i,subtract:/^(\\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
',
);
	
	public static function localizationForLanguage($language) {
		if (isset(self::$localizations[$language])) {
			return self::$localizations[$language];
		}
		return false;
	}
}
lib/wfFileUtils.php000064400000005340150755146450010276 0ustar00<?php

require_once __DIR__ . "/wfInvalidPathException.php";
require_once __DIR__ . "/wfInaccessibleDirectoryException.php";

class wfFileUtils {

	const CURRENT_DIRECTORY = '.';
	const PARENT_DIRECTORY = '..';
	const DIRECTORY_SEPARATOR = '/';

	public static function isCurrentOrParentDirectory($file) {
		return $file === self::CURRENT_DIRECTORY || $file === self::PARENT_DIRECTORY;
	}

	public static function getContents($directory) {
		$contents = @scandir($directory);
		if ($contents === false)
			throw new wfInaccessibleDirectoryException("Unable to read contents", $directory);
		return array_filter($contents, function ($file) { return !wfFileUtils::isCurrentOrParentDirectory($file); });
	}

	public static function trimSeparators($path, $trimLeft = true, $trimRight = true) {
		if ($trimLeft)
			$path = ltrim($path, self::DIRECTORY_SEPARATOR);
		if ($trimRight)
			$path = rtrim($path, self::DIRECTORY_SEPARATOR);
		return $path;
	}

	public static function joinPaths() {
		$paths = func_get_args();
		$count = count($paths);
		$filtered = array();
		$trailingSeparator = false;
		for ($i = 0; $i < $count; $i++) {
			$path = self::trimSeparators($paths[$i], !empty($filtered));
			if (!empty($path)) {
				$filtered[] = $path;
				$trailingSeparator = substr($paths[$i], -1) === self::DIRECTORY_SEPARATOR;
			}
		}
		return implode(self::DIRECTORY_SEPARATOR, $filtered) . ($trailingSeparator ? self::DIRECTORY_SEPARATOR : '');
	}

	public static function splitPath($path, &$count = null) {
		$components = array_values(array_filter(explode(self::DIRECTORY_SEPARATOR, $path)));
		$count = count($components);
		return $components;
	}

	public static function isReadableFile($file) {
		return @is_file($file) && @is_readable($file);
	}

	public static function belongsTo($child, $parent) {
		$childComponents = self::splitPath($child, $childCount);
		$parentComponents = self::splitPath($parent, $parentCount);
		if ($childCount < $parentCount)
			return false;
		for ($i = 0; $i < $parentCount; $i++) {
			if ($childComponents[$i] !== $parentComponents[$i])
				return false;
		}
		return true;
	}

	public static function matchPaths($a, $b, $allowChild = false) {
		$aComponents = self::splitPath($a, $aCount);
		$bComponents = self::splitPath($b, $bCount);
		if ($allowChild ? ($bCount < $aCount) : ($aCount !== $bCount))
			return false;
		for ($i = 0; $i < $aCount; $i++) {
			if ($aComponents[$i] !== $bComponents[$i])
				return false;
		}
		return true;
	}

	public static function realPath($path) {
		$realPath = realpath($path);
		if ($realPath === false)
			throw new wfInvalidPathException("Realpath resolution failed", $path);
		return $realPath;
	}

	public static function isChild($parent, $child) {
		return self::matchPaths($parent, $child, true);
	}

}lib/wfIssues.php000064400000066415150755146450007663 0ustar00<?php
require_once(dirname(__FILE__) . '/wfUtils.php');
class wfIssues {
	//Possible responses from `addIssue`
	const ISSUE_ADDED = 'a';
	const ISSUE_UPDATED = 'u';
	const ISSUE_DUPLICATE = 'd';
	const ISSUE_IGNOREP = 'ip';
	const ISSUE_IGNOREC = 'ic';
	
	//Possible status message states
	const STATUS_NONE = 'n'; //Default state before running
	
	const STATUS_SKIPPED = 's'; //The scan job was skipped because it didn't need to run
	const STATUS_IGNORED = 'i'; //The scan job found an issue, but it matched an entry in the ignore list
	
	const STATUS_PROBLEM = 'p'; //The scan job found an issue
	const STATUS_SECURE = 'r'; //The scan job found no issues
	
	const STATUS_FAILED = 'f'; //The scan job failed
	const STATUS_SUCCESS = 'c'; //The scan job succeeded
	
	const STATUS_PAIDONLY = 'x';
	
	//Possible scan failure types
	const SCAN_FAILED_GENERAL = 'general';
	const SCAN_FAILED_TIMEOUT = 'timeout';
	const SCAN_FAILED_DURATION_REACHED = 'duration';
	const SCAN_FAILED_VERSION_CHANGE = 'versionchange';
	const SCAN_FAILED_FORK_FAILED = 'forkfailed';
	const SCAN_FAILED_CALLBACK_TEST_FAILED = 'callbackfailed';
	const SCAN_FAILED_START_TIMEOUT = 'starttimeout';
	
	const SCAN_FAILED_API_SSL_UNAVAILABLE = 'sslunavailable';
	const SCAN_FAILED_API_CALL_FAILED = 'apifailed';
	const SCAN_FAILED_API_INVALID_RESPONSE = 'apiinvalid';
	const SCAN_FAILED_API_ERROR_RESPONSE = 'apierror';

	const SEVERITY_NONE = 0;
	const SEVERITY_LOW = 25;
	const SEVERITY_MEDIUM = 50;
	const SEVERITY_HIGH = 75;
	const SEVERITY_CRITICAL = 100;

	const SCAN_STATUS_UPDATE_INTERVAL = 10; //Seconds

	private $db = false;

	//Properties that are serialized on sleep:
	private $updateCalled = false;
	private $issuesTable = '';
	private $pendingIssuesTable = '';
	private $maxIssues = 0;
	private $newIssues = array();
	public $totalIssues = 0;
	public $totalIgnoredIssues = 0;
	private $totalIssuesBySeverity = array();

	public static $issueSeverities = array(
		'checkGSB' => wfIssues::SEVERITY_CRITICAL,
		'checkSpamIP' => wfIssues::SEVERITY_HIGH,
		'spamvertizeCheck' => wfIssues::SEVERITY_CRITICAL,
		'commentBadURL' => wfIssues::SEVERITY_LOW,
		'postBadTitle' => wfIssues::SEVERITY_HIGH,
		'postBadURL' => wfIssues::SEVERITY_HIGH,
		'file' => wfIssues::SEVERITY_CRITICAL,
		'timelimit' => wfIssues::SEVERITY_HIGH,
		'checkHowGetIPs' => wfIssues::SEVERITY_HIGH,
		'diskSpace' => wfIssues::SEVERITY_HIGH,
		'wafStatus' => wfIssues::SEVERITY_CRITICAL,
		'configReadable' => wfIssues::SEVERITY_CRITICAL,
		'wfPluginVulnerable' => wfIssues::SEVERITY_HIGH,
		'coreUnknown' => wfIssues::SEVERITY_HIGH,
		'easyPasswordWeak' => wfIssues::SEVERITY_HIGH,
		'knownfile' => wfIssues::SEVERITY_HIGH,
		'optionBadURL' => wfIssues::SEVERITY_HIGH,
		'publiclyAccessible' => wfIssues::SEVERITY_HIGH,
		'suspiciousAdminUsers' => wfIssues::SEVERITY_HIGH,
		'wfPluginAbandoned' => wfIssues::SEVERITY_MEDIUM,
		'wfPluginRemoved' => wfIssues::SEVERITY_CRITICAL,
		'wfPluginUpgrade' => wfIssues::SEVERITY_MEDIUM,
		'wfThemeUpgrade' => wfIssues::SEVERITY_MEDIUM,
		'wfUpgradeError' => wfIssues::SEVERITY_MEDIUM,
		'wfUpgrade' => wfIssues::SEVERITY_HIGH,
		'wpscan_directoryList' => wfIssues::SEVERITY_HIGH,
		'wpscan_fullPathDiscl' => wfIssues::SEVERITY_HIGH,
	);

	public static function validIssueTypes() {
		return array('checkHowGetIPs', 'checkSpamIP', 'commentBadURL', 'configReadable', 'coreUnknown', 'database', 'diskSpace', 'wafStatus', 'easyPassword', 'file', 'geoipSupport', 'knownfile', 'optionBadURL', 'postBadTitle', 'postBadURL', 'publiclyAccessible', 'spamvertizeCheck', 'suspiciousAdminUsers', 'timelimit', 'wfPluginAbandoned', 'wfPluginRemoved', 'wfPluginUpgrade', 'wfPluginVulnerable', 'wfThemeUpgrade', 'wfUpgradeError', 'wfUpgrade', 'wpscan_directoryList', 'wpscan_fullPathDiscl', 'skippedPaths');
	}
	
	public static function statusPrep(){
		wfConfig::set_ser('wfStatusStartMsgs', array());
		wordfence::status(10, 'info', "SUM_PREP:Preparing a new scan.");
		wfIssues::updateScanStillRunning();
	}
	
	public static function statusStart($message) {
		$statusStartMsgs = wfConfig::get_ser('wfStatusStartMsgs', array());
		$statusStartMsgs[] = $message;
		wfConfig::set_ser('wfStatusStartMsgs', $statusStartMsgs);
		wordfence::status(10, 'info', 'SUM_START:' . $message);
		wfIssues::updateScanStillRunning();
		return count($statusStartMsgs) - 1;
	}
	
	public static function statusEnd($index, $state) {
		$statusStartMsgs = wfConfig::get_ser('wfStatusStartMsgs', array());
		if ($state == self::STATUS_SKIPPED) {
			wordfence::status(10, 'info', 'SUM_ENDSKIPPED:' . $statusStartMsgs[$index]);
		}
		else if ($state == self::STATUS_IGNORED) {
			wordfence::status(10, 'info', 'SUM_ENDIGNORED:' . $statusStartMsgs[$index]);
		}
		else if ($state == self::STATUS_PROBLEM) {
			wordfence::status(10, 'info', 'SUM_ENDBAD:' . $statusStartMsgs[$index]);
		}
		else if ($state == self::STATUS_SECURE) {
			wordfence::status(10, 'info', 'SUM_ENDOK:' . $statusStartMsgs[$index]);
		}
		else if ($state == self::STATUS_FAILED) {
			wordfence::status(10, 'info', 'SUM_ENDFAILED:' . $statusStartMsgs[$index]);
		}
		else if ($state == self::STATUS_SUCCESS) {
			wordfence::status(10, 'info', 'SUM_ENDSUCCESS:' . $statusStartMsgs[$index]);
		}
		wfIssues::updateScanStillRunning();
		$statusStartMsgs[$index] = '';
		wfConfig::set_ser('wfStatusStartMsgs', $statusStartMsgs);
	}
	
	public static function statusEndErr() {
		$statusStartMsgs = wfConfig::get_ser('wfStatusStartMsgs', array());
		for ($i = 0; $i < count($statusStartMsgs); $i++) {
			if (empty($statusStartMsgs[$i]) === false) {
				wordfence::status(10, 'info', 'SUM_ENDERR:' . $statusStartMsgs[$i]);
				$statusStartMsgs[$i] = '';
			}
		}
		wfIssues::updateScanStillRunning();
	}
	
	public static function statusPaidOnly($message) {
		wordfence::status(10, 'info', "SUM_PAIDONLY:" . $message);
		wfIssues::updateScanStillRunning();
	}
	
	public static function statusDisabled($message) {
		wordfence::status(10, 'info', "SUM_DISABLED:" . $message);
		wfIssues::updateScanStillRunning();
	}
	
	public static function updateScanStillRunning($running = true) {
		static $lastUpdate = 0;
		if ($running) {
			$timestamp = time();
			if ($timestamp - $lastUpdate < self::SCAN_STATUS_UPDATE_INTERVAL)
				return;
			$lastUpdate = $timestamp;
		}
		else {
			$timestamp = 0;
		}
		wfConfig::set('wf_scanLastStatusTime', $timestamp);
	}
	
	/**
	 * Returns false if the scan has not been detected as failed. If it has, returns a constant corresponding to the reason.
	 * 
	 * @return bool|string
	 */
	public static function hasScanFailed() {
		$lastStatusUpdate = self::lastScanStatusUpdate();
		if ($lastStatusUpdate !== false && wfScanner::shared()->isRunning()) {
			$threshold = WORDFENCE_SCAN_FAILURE_THRESHOLD;
			if (time() - $lastStatusUpdate > $threshold) {
				return self::SCAN_FAILED_TIMEOUT;
			}
		}
		
		$scanStartAttempt = wfConfig::get('scanStartAttempt', 0);
		if ($scanStartAttempt && time() - $scanStartAttempt > WORDFENCE_SCAN_START_FAILURE_THRESHOLD) {
			return self::SCAN_FAILED_START_TIMEOUT;
		}
		
		$recordedFailure = wfConfig::get('lastScanFailureType');
		switch ($recordedFailure) {
			case self::SCAN_FAILED_GENERAL:
			case self::SCAN_FAILED_DURATION_REACHED:
			case self::SCAN_FAILED_VERSION_CHANGE:
			case self::SCAN_FAILED_FORK_FAILED:
			case self::SCAN_FAILED_CALLBACK_TEST_FAILED:
			case self::SCAN_FAILED_API_SSL_UNAVAILABLE:
			case self::SCAN_FAILED_API_CALL_FAILED:
			case self::SCAN_FAILED_API_INVALID_RESPONSE:
			case self::SCAN_FAILED_API_ERROR_RESPONSE:
				return $recordedFailure;
		}
		
		return false;
	}
	
	/**
	 * Returns false if the scan has not been detected as timed out. If it has, it returns the timestamp of the last status update.
	 *
	 * @return bool|int
	 */
	public static function lastScanStatusUpdate() {
		if (wfConfig::get('wf_scanLastStatusTime', 0) === 0) {
			return false;
		}
		
		$threshold = WORDFENCE_SCAN_FAILURE_THRESHOLD;
		return (time() > wfConfig::get('wf_scanLastStatusTime', 0) + $threshold) ? wfConfig::get('wf_scanLastStatusTime', 0) : false;
	}
	
	/**
	 * Returns the singleton wfIssues.
	 *
	 * @return wfIssues
	 */
	public static function shared() {
		static $_issues = null;
		if ($_issues === null) {
			$_issues = new wfIssues();
		}
		return $_issues;
	}
	
	public function __sleep(){ //Same order here as vars above
		return array('updateCalled', 'issuesTable', 'pendingIssuesTable', 'maxIssues', 'newIssues', 'totalIssues', 'totalIgnoredIssues', 'totalIssuesBySeverity');
	}
	public function __construct(){
		$this->issuesTable = wfDB::networkTable('wfIssues');
		$this->pendingIssuesTable = wfDB::networkTable('wfPendingIssues');
		$this->maxIssues = wfConfig::get('scan_maxIssues', 0);
	}
	public function __wakeup(){
		$this->db = new wfDB();
	}
	
	public function addIssue($type, $severity,  $ignoreP, $ignoreC, $shortMsg, $longMsg, $templateData, $alreadyHashed = false) {
		return $this->_addIssue('issue', $type, $severity, $ignoreP, $ignoreC, $shortMsg, $longMsg, $templateData, $alreadyHashed);
	}
	public function addPendingIssue($type, $severity,  $ignoreP, $ignoreC, $shortMsg, $longMsg, $templateData) {
		return $this->_addIssue('pending', $type, $severity, $ignoreP, $ignoreC, $shortMsg, $longMsg, $templateData);
	}
	
	/**
	 * Create a new issue
	 *
	 * @param string	$group The issue type (e.g., issue or pending
	 * @param string	$type
	 * @param int		$severity
	 * @param string	$ignoreP	string to compare against for permanent ignores
	 * @param string	$ignoreC	string to compare against for ignoring until something changes
	 * @param string	$shortMsg
	 * @param string	$longMsg
	 * @param array		$templateData
	 * @param bool		$alreadyHashed If true, don't re-hash $ignoreP and $ignoreC
	 * @return string	One of the ISSUE_ constants
	 */
	private function _addIssue($group, $type, $severity, $ignoreP, $ignoreC, $shortMsg, $longMsg, $templateData, $alreadyHashed = false) {
		if ($group == 'pending') {
			$table = $this->pendingIssuesTable;
		}
		else {
			$table = $this->issuesTable;
		}
		
		if (!$alreadyHashed) {
			$ignoreP = md5($ignoreP);
			$ignoreC = md5($ignoreC);
		}
		
		$results = $this->getDB()->querySelect("SELECT id, status, ignoreP, ignoreC FROM {$table} WHERE (ignoreP = '%s' OR ignoreC = '%s')", $ignoreP, $ignoreC);
		foreach ($results as $row) {
			if ($row['status'] == 'new' && ($row['ignoreC'] == $ignoreC || $row['ignoreP'] == $ignoreP)) {
				if ($type != 'file' && $type != 'database') { //Filter out duplicate new issues except for infected files because we want to see all infections even if file contents are identical
					return self::ISSUE_DUPLICATE;
				}
			}
			
			if ($row['status'] == 'ignoreP' && $row['ignoreP'] == $ignoreP) { $this->totalIgnoredIssues++; return self::ISSUE_IGNOREP; } //Always ignore
			else if ($row['status'] == 'ignoreC' && $row['ignoreC'] == $ignoreC) { $this->totalIgnoredIssues++; return self::ISSUE_IGNOREC; } //Unchanged, ignore
			else if ($row['status'] == 'ignoreC') {
				$updateID = $row['id']; //Re-use the existing issue row
				break;
			}
		}
		
		if ($group != 'pending') {
			if (!array_key_exists($severity, $this->totalIssuesBySeverity)) {
				$this->totalIssuesBySeverity[$severity] = 0;
			}
			$this->totalIssuesBySeverity[$severity]++;
			$this->totalIssues++;
			if (empty($this->maxIssues) || $this->totalIssues <= $this->maxIssues)
			{
				$this->newIssues[] = array(
					'type' => $type,
					'severity' => $severity,
					'ignoreP' => $ignoreP,
					'ignoreC' => $ignoreC,
					'shortMsg' => $shortMsg,
					'longMsg' => $longMsg,
					'tmplData' => $templateData
					);
			}
		}

		if (isset($updateID)) {
			if ($group !== 'pending' && wfCentral::isConnected()) {
				wfCentral::sendIssue(array(
					'id' => $updateID,
					'lastUpdated' => time(),
					'type' => $type,
					'severity' => $severity,
					'ignoreP' => $ignoreP,
					'ignoreC' => $ignoreC,
					'shortMsg' => $shortMsg,
					'longMsg' => $longMsg,
					'data' => $templateData,
				));
			}

			$this->getDB()->queryWrite(
				"UPDATE {$table} SET lastUpdated = UNIX_TIMESTAMP(), status = '%s', type = '%s', severity = %d, ignoreP = '%s', ignoreC = '%s', shortMsg = '%s', longMsg = '%s', data = '%s' WHERE id = %d",
				'new',
				$type,
				$severity,
				$ignoreP,
				$ignoreC,
				$shortMsg,
				$longMsg,
				serialize($templateData),
				$updateID);


			return self::ISSUE_UPDATED;
		}
		
		$this->getDB()->queryWrite("INSERT INTO {$table} (time, lastUpdated, status, type, severity, ignoreP, ignoreC, shortMsg, longMsg, data) VALUES (UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), '%s', '%s', %d, '%s', '%s', '%s', '%s', '%s')",
			'new',
			$type,
			$severity,
			$ignoreP,
			$ignoreC,
			$shortMsg,
			$longMsg,
			serialize($templateData));

		if ($group !== 'pending' && wfCentral::isConnected()) {
			global $wpdb;
			wfCentral::sendIssue(array(
				'id' => $wpdb->insert_id,
				'status' => 'new',
				'time' => time(),
				'lastUpdated' => time(),
				'type' => $type,
				'severity' => $severity,
				'ignoreP' => $ignoreP,
				'ignoreC' => $ignoreC,
				'shortMsg' => $shortMsg,
				'longMsg' => $longMsg,
				'data' => $templateData,
			));
		}

		return self::ISSUE_ADDED;
	}
	public function deleteIgnored(){
		if (wfCentral::isConnected()) {
			$result = $this->getDB()->querySelect("SELECT id from " . $this->issuesTable . " where status='ignoreP' or status='ignoreC'");
			$issues = array();
			foreach ($result as $row) {
				$issues[] = $row['id'];
			}
			wfCentral::deleteIssues($issues);
		}

		$this->getDB()->queryWrite("delete from " . $this->issuesTable . " where status='ignoreP' or status='ignoreC'");
	}
	public function deleteNew($types = null) {
		if (!is_array($types)) {
			if (wfCentral::isConnected()) {
				wfCentral::deleteNewIssues();
			}

			$this->getDB()->queryWrite("DELETE FROM {$this->issuesTable} WHERE status = 'new'");
		}
		else {
			if (wfCentral::isConnected()) {
				wfCentral::deleteIssueTypes($types, 'new');
			}

			$query = "DELETE FROM {$this->issuesTable} WHERE status = 'new' AND type IN (" . implode(',', array_fill(0, count($types), "'%s'")) . ")";
			array_unshift($types, $query);
			call_user_func_array(array($this->getDB(), 'queryWrite'), $types);
		}
	}
	public function ignoreAllNew(){
		if (wfCentral::isConnected()) {
			$issues = $this->getDB()->querySelect('SELECT * FROM ' . $this->issuesTable . ' WHERE status=\'new\'');
			if ($issues) {
				wfCentral::sendIssues($issues);
			}
		}

		$this->getDB()->queryWrite("update " . $this->issuesTable . " set status='ignoreC' where status='new'");
	}
	public function emailNewIssues($timeLimitReached = false, $scanController = false){
		$level = wfConfig::getAlertLevel();
		$emails = wfConfig::getAlertEmails();
		if (!count($emails)) {
			return;
		}
		
		$shortSiteURL = preg_replace('/^https?:\/\//i', '', site_url());
		$subject = "[Wordfence Alert] Problems found on $shortSiteURL";

		if(sizeof($emails) < 1){ return; }
		if($level < 1){ return; }
		$needsToAlert = false;
		foreach ($this->totalIssuesBySeverity as $issueSeverity => $totalIssuesBySeverity) {
			if ($issueSeverity >= $level && $totalIssuesBySeverity > 0) {
				$needsToAlert = true;
				break;
			}
		}
		if (!$needsToAlert) {
			return;
		}
		$emailedIssues = wfConfig::get_ser('emailedIssuesList', array());
		if(! is_array($emailedIssues)){
			$emailedIssues = array();
		}
		$overflowCount = $this->totalIssues - count($this->newIssues);
		$finalIssues = array();
		$previousIssues = array();
		foreach($this->newIssues as $newIssue){
			$alreadyEmailed = false;
			foreach($emailedIssues as $emailedIssue){
				if($newIssue['ignoreP'] == $emailedIssue['ignoreP'] || $newIssue['ignoreC'] == $emailedIssue['ignoreC']){
					$alreadyEmailed = true;
					$previousIssues[] = $newIssue;
					break;
				}
			}
			if(! $alreadyEmailed){
				$finalIssues[] = $newIssue;
			}
			else {
				$overflowCount--;
			}
		}
		if(sizeof($finalIssues) < 1){ return; }
		
		$this->newIssues = array();
		$this->totalIssues = 0;

		$totals = array();
		foreach($finalIssues as $i){
			$emailedIssues[] = array( 'ignoreC' => $i['ignoreC'], 'ignoreP' => $i['ignoreP'] );
			if (!array_key_exists($i['severity'], $totals)) {
				$totals[$i['severity']] = 0;
			}
			$totals[$i['severity']]++;
		}
		wfConfig::set_ser('emailedIssuesList', $emailedIssues, false, wfConfig::DONT_AUTOLOAD);
		$needsToAlert = false;
		foreach ($totals as $issueSeverity => $totalIssuesBySeverity) {
			if ($issueSeverity >= $level && $totalIssuesBySeverity > 0) {
				$needsToAlert = true;
				break;
			}
		}
		if (!$needsToAlert) {
			return;
		}

		$content = wfUtils::tmpl('email_newIssues.php', array(
			'isPaid' => wfConfig::get('isPaid'),
			'issues' => $finalIssues,
			'previousIssues' => $previousIssues,
			'totals' => $totals,
			'level' => $level,
			'issuesNotShown' => $overflowCount,
			'adminURL' => get_admin_url(),
			'timeLimitReached' => $timeLimitReached,
			'scanController' => ($scanController ? $scanController : wfScanner::shared()),
			));
		
		foreach ($emails as $email) {
			$uniqueContent = str_replace('<!-- ##UNSUBSCRIBE## -->', wp_kses(sprintf(__('No longer an administrator for this site? <a href="%s" target="_blank">Click here</a> to stop receiving security alerts.', 'wordfence'), wfUtils::getSiteBaseURL() . '?_wfsf=removeAlertEmail&jwt=' . wfUtils::generateJWT(array('email' => $email))), array('a'=>array('href'=>array(), 'target'=>array()))), $content);
			wp_mail($email, $subject, $uniqueContent, 'Content-type: text/html');
		}
	}
	public function clearEmailedStatus($issues) {
		if (empty($issues)) { return; }
		
		$emailed_issues = wfConfig::get_ser('emailedIssuesList', array());
		if (!is_array($emailed_issues)) { return; }
		
		$updated = array();
		foreach ($emailed_issues as $ei) {
			$cleared = false;
			foreach ($issues as $issue) {
				if ($issue['ignoreP'] == $ei['ignoreP'] || $issue['ignoreC'] == $ei['ignoreC']) {
					//Discard this one
					$cleared = true;
				}
			}
			if (!$cleared) {
				$updated[] = $ei;
			}
		}
		
		wfConfig::set_ser('emailedIssuesList', $updated, false, wfConfig::DONT_AUTOLOAD);
	}
	public function deleteIssue($id){ 
		$this->clearEmailedStatus(array($this->getIssueByID($id)));
		$this->getDB()->queryWrite("delete from " . $this->issuesTable . " where id=%d", $id);
		if (wfCentral::isConnected()) {
			wfCentral::deleteIssue($id);
		}
	}

	public function deleteUpdateIssues($type) {
		$issues = $this->getDB()->querySelect("SELECT id, status, ignoreP, ignoreC FROM {$this->issuesTable} WHERE status = 'new' AND type = '%s'", $type);
		$this->clearEmailedStatus($issues);
		
		$this->getDB()->queryWrite("DELETE FROM {$this->issuesTable} WHERE status = 'new' AND type = '%s'", $type);

		if (wfCentral::isConnected()) {
			wfCentral::deleteIssueTypes(array($type));
		}
	}

	public function deleteAllUpdateIssues() {
		$issues = $this->getDB()->querySelect("SELECT id, status, ignoreP, ignoreC FROM {$this->issuesTable} WHERE status = 'new' AND (type = 'wfUpgrade' OR type = 'wfUpgradeError' OR type = 'wfPluginUpgrade' OR type = 'wfThemeUpgrade')");
		$this->clearEmailedStatus($issues);
		
		$this->getDB()->queryWrite("DELETE FROM {$this->issuesTable} WHERE status = 'new' AND (type = 'wfUpgrade' OR type = 'wfUpgradeError' OR type = 'wfPluginUpgrade' OR type = 'wfThemeUpgrade')");

		if (wfCentral::isConnected()) {
			wfCentral::deleteIssueTypes(array('wfUpgrade', 'wfUpgradeError', 'wfPluginUpgrade', 'wfThemeUpgrade'));
		}
	}

	public function updateIssue($id, $status){ //ignoreC, ignoreP, delete or new
		if($status == 'delete'){
			if (wfCentral::isConnected()) {
				wfCentral::deleteIssue($id);
			}
			$this->clearEmailedStatus(array($this->getIssueByID($id)));
			$this->getDB()->queryWrite("delete from " . $this->issuesTable . " where id=%d", $id);
		} else if($status == 'ignoreC' || $status == 'ignoreP' || $status == 'new'){
			$this->getDB()->queryWrite("update " . $this->issuesTable . " set status='%s' where id=%d", $status, $id);

			if (wfCentral::isConnected()) {
				$issue = $this->getDB()->querySelect('SELECT * FROM ' . $this->issuesTable . ' where id=%d', $id);
				if ($issue) {
					wfCentral::sendIssues($issue);
				}
			}
		}
	}
	public function getIssueByID($id) {
		$rec = $this->getDB()->querySingleRec("select * from " . $this->issuesTable . " where id=%d", $id);
		$rec['data'] = unserialize($rec['data']);
		return $rec;
	}
	public function getIssueCounts() {
		global $wpdb;
		$counts = $wpdb->get_results('SELECT COUNT(*) AS c, status FROM ' . $this->issuesTable . ' WHERE status = "new" OR status = "ignoreP" OR status = "ignoreC" GROUP BY status', ARRAY_A);
		$result = array();
		foreach ($counts as $row) {
			$result[$row['status']] = $row['c']; 
		}
		return $result;
	}
	public function getIssues($offset = 0, $limit = 100, $ignoredOffset = 0, $ignoredLimit = 100) {
		/** @var wpdb $wpdb */
		global $wpdb;
		
		$siteCleaningTypes = array('file', 'checkGSB', 'checkSpamIP', 'commentBadURL', 'knownfile', 'optionBadURL', 'postBadTitle', 'postBadURL', 'spamvertizeCheck', 'suspiciousAdminUsers');
		$sortTagging = 'CASE';
		foreach ($siteCleaningTypes as $index => $t) {
			$sortTagging .= ' WHEN type = \'' . esc_sql($t) . '\' THEN ' . ((int) $index);
		}
		$sortTagging .= ' ELSE 999 END';
		
		$ret = array(
			'new' => array(),
			'ignored' => array()
			);
		$userIni = ini_get('user_ini.filename');
		$q1 = $this->getDB()->querySelect("SELECT *, {$sortTagging} AS sortTag FROM " . $this->issuesTable . " WHERE status = 'new' ORDER BY severity DESC, sortTag ASC, type ASC, time DESC LIMIT %d,%d", $offset, $limit);
		$q2 = $this->getDB()->querySelect("SELECT *, {$sortTagging} AS sortTag FROM " . $this->issuesTable . " WHERE status = 'ignoreP' OR status = 'ignoreC' ORDER BY severity DESC, sortTag ASC, type ASC, time DESC LIMIT %d,%d", $ignoredOffset, $ignoredLimit);
		$q = array_merge($q1, $q2);
		foreach($q as $i){
			$i['data'] = unserialize($i['data']);
			$i['timeAgo'] = wfUtils::makeTimeAgo(time() - $i['time']);
			$i['displayTime'] = wfUtils::formatLocalTime(get_option('date_format') . ' ' . get_option('time_format'), $i['time']);
			$i['longMsg'] = wp_kses($i['longMsg'], 'post');
			if($i['status'] == 'new'){
				$ret['new'][] = $i;
			} else if($i['status'] == 'ignoreP' || $i['status'] == 'ignoreC'){
				$ret['ignored'][] = $i;
			} else {
				error_log("Issue has bad status: " . $i['status']);
				continue;
			}
		}
		foreach($ret as $status => &$issueList){
			for($i = 0; $i < sizeof($issueList); $i++){
				if ($issueList[$i]['type'] == 'file' || $issueList[$i]['type'] == 'knownfile') {
					if (array_key_exists('realFile', $issueList[$i]['data'])) {
						$localFile = $issueList[$i]['data']['realFile'];
						$issueList[$i]['data']['realFileToken'] = self::generateRealFileToken($localFile);
					}
					else {
						$localFile = $issueList[$i]['data']['file'];
						if ($localFile != '.htaccess' && $localFile != $userIni) {
							$localFile = ABSPATH . '/' . preg_replace('/^[\.\/]+/', '', $localFile);
						}
						else {
							$localFile = ABSPATH . '/' . $localFile;
						}
					}
					
					if(file_exists($localFile)){
						$issueList[$i]['data']['fileExists'] = true;
					} else {
						$issueList[$i]['data']['fileExists'] = '';
					}
				}
				if ($issueList[$i]['type'] == 'database') {
					$issueList[$i]['data']['optionExists'] = false;
					if (!empty($issueList[$i]['data']['site_id'])) {
						$table_options = wfDB::blogTable('options', $issueList[$i]['data']['site_id']);
						$issueList[$i]['data']['optionExists'] = $wpdb->get_var($wpdb->prepare("SELECT count(*) FROM {$table_options} WHERE option_name = %s", $issueList[$i]['data']['option_name'])) > 0;
					}
				}
				$issueList[$i]['issueIDX'] = $i;
				if (isset($issueList[$i]['data']['cType'])) {
					$issueList[$i]['data']['ucType'] = ucwords($issueList[$i]['data']['cType']);
				}
			}
		}
		return $ret; //array of lists of issues by status
	}
	public function getPendingIssues($offset = 0, $limit = 100){
		/** @var wpdb $wpdb */
		global $wpdb;
		$issues = $this->getDB()->querySelect("SELECT * FROM {$this->pendingIssuesTable} ORDER BY id ASC LIMIT %d,%d", $offset, $limit);
		foreach($issues as &$i){
			$i['data'] = unserialize($i['data']);
		}
		return $issues;
	}
	public function getFixableIssueCount() {
		global $wpdb;
		$issues = $this->getDB()->querySelect("SELECT * FROM {$this->issuesTable} WHERE data LIKE '%s:6:\"canFix\";b:1;%'");
		$count = 0;
		foreach ($issues as $i) {
			$i['data'] = unserialize($i['data']);
			if (isset($i['data']['canFix']) && $i['data']['canFix']) {
				$count++;
			}
		}
		return $count;
	}
	public function getDeleteableIssueCount() {
		global $wpdb;
		$issues = $this->getDB()->querySelect("SELECT * FROM {$this->issuesTable} WHERE data LIKE '%s:9:\"canDelete\";b:1;%'");
		$count = 0;
		foreach ($issues as $i) {
			$i['data'] = unserialize($i['data']);
			if (isset($i['data']['canDelete']) && $i['data']['canDelete']) {
				$count++;
			}
		}
		return $count;
	}
	public function getIssueCount() {
		return (int) $this->getDB()->querySingle("select COUNT(*) from " . $this->issuesTable . " WHERE status = 'new'");
	}
	public function getPendingIssueCount() {
		return (int) $this->getDB()->querySingle("select COUNT(*) from " . $this->pendingIssuesTable . " WHERE status = 'new'");
	}
	public function getLastIssueUpdateTimestamp() {
		return (int) $this->getDB()->querySingle("select MAX(lastUpdated) from " . $this->issuesTable);
	}
	public function reconcileUpgradeIssues($report = null, $useCachedValued = false) {
		if ($report === null) {
			$report = new wfActivityReport();
		}
		
		$updatesNeeded = $report->getUpdatesNeeded($useCachedValued);
		if ($updatesNeeded) {
			if (!$updatesNeeded['core']) {
				$this->deleteUpdateIssues('wfUpgrade');
			}
			
			if ($updatesNeeded['plugins']) {
				$upgradeNames = array();
				foreach ($updatesNeeded['plugins'] as $p) {
					$name = $p['Name'];
					$upgradeNames[$name] = 1;
				}
				$upgradeIssues = $this->getDB()->querySelect("SELECT * FROM {$this->issuesTable} WHERE status = 'new' AND type = 'wfPluginUpgrade'");
				foreach ($upgradeIssues as $issue) {
					$data = unserialize($issue['data']);
					$name = $data['Name'];
					if (!isset($upgradeNames[$name])) { //Some plugins don't have a slug associated with them, so we anchor on the name
						$this->deleteIssue($issue['id']);
					}
				}
			}
			else {
				$this->deleteUpdateIssues('wfPluginUpgrade');
			}

			if ($updatesNeeded['themes']) {
				$upgradeNames = array();
				foreach ($updatesNeeded['themes'] as $t) {
					$name = $t['Name'];
					$upgradeNames[$name] = 1;
				}
				$upgradeIssues = $this->getDB()->querySelect("SELECT * FROM {$this->issuesTable} WHERE status = 'new' AND type = 'wfThemeUpgrade'");
				foreach ($upgradeIssues as $issue) {
					$data = unserialize($issue['data']);
					$name = $data['Name'];
					if (!isset($upgradeNames[$name])) { //Some themes don't have a slug associated with them, so we anchor on the name
						$this->deleteIssue($issue['id']);
					}
				}
			}
			else {
				$this->deleteUpdateIssues('wfThemeUpgrade');
			}
		}
		else {
			$this->deleteAllUpdateIssues();
		}
		
		wfScanEngine::refreshScanNotification($this);
	}
	private function getDB(){
		if(! $this->db){
			$this->db = new wfDB();
		}
		return $this->db;
	}

	/**
	 * @return string
	 */
	public function getIssuesTable() {
		return $this->issuesTable;
	}

	private static function getRealFileTokenKey($realFile) {
		return 'wf-real-file-' . base64_encode($realFile);
	}

	private static function generateRealFileToken($realFile) {
		$key = self::getRealFileTokenKey($realFile);
		return wp_create_nonce($key);
	}

	public static function verifyRealFileToken($token, $realFile) {
		$key = self::getRealFileTokenKey($realFile);
		return wp_verify_nonce($token, $key);
	}
}lib/wfAdminNoticeQueue.php000064400000012313150755146450011573 0ustar00<?php

class wfAdminNoticeQueue {
	protected static function _notices() {
		return self::_purgeObsoleteNotices(wfConfig::get_ser('adminNoticeQueue', array()));
	}

	private static function _purgeObsoleteNotices($notices) {
		$altered = false;
		foreach ($notices as $id => $notice) {
			if ($notice['category'] === 'php8') {
				unset($notices[$id]);
				$altered = true;
			}
		}
		if ($altered)
			self::_setNotices($notices);
		return $notices;
	}
	
	protected static function _setNotices($notices) {
		wfConfig::set_ser('adminNoticeQueue', $notices);
	}
	
	/**
	 * Adds an admin notice to the display queue.
	 * 
	 * @param string $severity
	 * @param string $messageHTML
	 * @param bool|string $category If not false, notices with the same category will be removed prior to adding this one.
	 * @param bool|array $users If not false, an array of user IDs the notice should show for.
	 */
	public static function addAdminNotice($severity, $messageHTML, $category = false, $users = false) {
		$notices = self::_notices();
		foreach ($notices as $id => $n) {
			$usersMatches = false;
			if (isset($n['users'])) {
				$usersMatches = wfUtils::sets_equal($n['users'], $users);
			}
			else if ($users === false) {
				$usersMatches = true;
			}
			
			$categoryMatches = false;
			if ($category !== false && isset($n['category']) && $n['category'] == $category) {
				$categoryMatches = true;
			}
			
			if ($usersMatches && $categoryMatches) {
				unset($notices[$id]);
			}
		}
		
		$id = wfUtils::uuid();
		$notices[$id] = array(
			'severity' => $severity,
			'messageHTML' => $messageHTML,
		);
		
		if ($category !== false) {
			$notices[$id]['category'] = $category;
		}
		
		if ($users !== false) {
			$notices[$id]['users'] = $users;
		}
		
		self::_setNotices($notices);
	}
	
	/**
	 * Removes an admin notice using one of three possible search methods:
	 * 
	 * 	1. If $id matches. $category and $users are ignored
	 * 	2. If $category matches. $users must be false for this.
	 * 	3. If $category matches and the notice's user IDs matches $users.
	 * 
	 * @param bool|int $id
	 * @param bool|string $category
	 * @param bool|int[] $users
	 */
	public static function removeAdminNotice($id = false, $category = false, $users = false) {
		if ($id === false && $category === false && $users === false) {
			return;
		}
		else if ($id !== false) {
			$category = false;
			$users = false;
		}

		$notices = self::_notices();
		$found = false;
		foreach ($notices as $nid => $n) {
			if ($id == $nid) { //ID match
				unset($notices[$nid]);
				$found=true;
				break;
			}
			else if ($id !== false) {
				continue;
			}
			
			if ($category !== false && isset($n['category']) && $category == $n['category']) {
				if ($users !== false) {
					if (isset($n['users']) && wfUtils::sets_equal($users, $n['users'])) {
						unset($notices[$nid]);
						$found=true;
					}
				}
				else {
					unset($notices[$nid]);
					$found=true;
				}
			}
		}
		if($found)
			self::_setNotices($notices);
	}
	
	public static function hasNotice($category = false, $users = false) {
		$notices = self::_notices();
		foreach ($notices as $nid => $n) {
			$categoryMatches = false;
			if (($category === false && !isset($n['category'])) || ($category !== false && isset($n['category']) && $category == $n['category'])) {
				$categoryMatches = true;
			}
			
			$usersMatches = false;
			if (($users === false && !isset($n['users'])) || ($users !== false && isset($n['users']) && wfUtils::sets_equal($users, $n['users']))) {
				$usersMatches = true;
			}
			
			if ($categoryMatches && $usersMatches) {
				return true;
			}
		}
		return false;
	}
	
	public static function enqueueAdminNotices() {
		$user = wp_get_current_user();
		if ($user->ID == 0) {
			return false;
		}
		
		$networkAdmin = is_multisite() && is_network_admin();
		$notices = self::_notices();
		$added = false;
		foreach ($notices as $nid => $n) {
			if (isset($n['users']) && array_search($user->ID, $n['users']) === false) {
				continue;
			}
			
			$notice = new wfAdminNotice($nid, $n['severity'], $n['messageHTML']);
			if ($networkAdmin) {
				add_action('network_admin_notices', array($notice, 'displayNotice'));
			}
			else {
				add_action('admin_notices', array($notice, 'displayNotice'));
			}
			
			$added = true;
		}
		
		return $added;
	}
}

class wfAdminNotice {
	const SEVERITY_CRITICAL = 'critical';
	const SEVERITY_WARNING = 'warning';
	const SEVERITY_INFO = 'info';
	
	private $_id;
	private $_severity;
	private $_messageHTML;
	
	public function __construct($id, $severity, $messageHTML) {
		$this->_id = $id;
		$this->_severity = $severity;
		$this->_messageHTML = $messageHTML;
	}
	
	public function displayNotice() {
		$severityClass = 'notice-info';
		if ($this->_severity == self::SEVERITY_CRITICAL) {
			$severityClass = 'notice-error';
		}
		else if ($this->_severity == self::SEVERITY_WARNING) {
			$severityClass = 'notice-warning';
		}
		
		echo '<div class="wf-admin-notice notice ' . $severityClass . '" data-notice-id="' . esc_attr($this->_id) . '"><p>' . $this->_messageHTML . '</p><p><a class="wf-btn wf-btn-default wf-btn-sm wf-dismiss-link" href="#" onclick="wordfenceExt.dismissAdminNotice(\'' . esc_attr($this->_id) . '\'); return false;" role="button">' . esc_html__('Dismiss', 'wordfence') . '</a></p></div>';
	}
}lib/wfScan.php000064400000037654150755146450007277 0ustar00<?php
class wfScan {
	public static $debugMode = false;
	public static $errorHandlingOn = true;
	public static $peakMemAtStart = 0;
	
	/**
	 * Returns the stored cronkey or false if not set. If $expired is provided, will set to <timestamp>/false based
	 * on whether or not the cronkey is expired.
	 * 
	 * @param null $expired
	 * @return bool|string
	 */
	private static function storedCronKey(&$expired = null) {
		$currentCronKey = wfConfig::get('currentCronKey', false);
		if (empty($currentCronKey))
		{
			if ($expired !== null) {
				$expired = false;
			}
			return false;
		}
		
		$savedKey = explode(',',$currentCronKey);
		if (time() - $savedKey[0] > 86400) {
			if ($expired !== null) {
				$expired = $savedKey[0];
			}
			return $savedKey[1];
		}
		
		if ($expired !== null) {
			$expired = false;
		}
		return $savedKey[1];
	}
	
	public static function wfScanMain(){
		self::$peakMemAtStart = memory_get_peak_usage(true);
		$db = new wfDB();
		if($db->errorMsg){
			self::errorExit(sprintf(/* translators: Error message. */ __("Could not connect to database to start scan: %s", 'wordfence'), $db->errorMsg));
		}
		if(! wordfence::wfSchemaExists()){
			self::errorExit(__("Looks like the Wordfence database tables have been deleted. You can fix this by de-activating and re-activating the Wordfence plugin from your Plugins menu.", 'wordfence'));
		}
		if( isset( $_GET['test'] ) && $_GET['test'] == '1'){
			echo "WFCRONTESTOK:" . wfConfig::get('cronTestID');
			self::status(4, 'info', __("Cron test received and message printed", 'wordfence'));
			exit();
		}
		
		self::status(4, 'info', __("Scan engine received request.", 'wordfence'));
		
		/* ----------Starting signature check -------- */
		self::status(4, 'info', __("Verifying start request signature.", 'wordfence'));
		if (!isset($_GET['signature']) || !wfScanEngine::verifyStartSignature($_GET['signature'], isset($_GET['isFork']) ? wfUtils::truthyToBoolean($_GET['isFork']) : false, isset($_GET['scanMode']) ? $_GET['scanMode'] : '', isset($_GET['cronKey']) ? $_GET['cronKey'] : '', isset($_GET['remote']) ? wfUtils::truthyToBoolean($_GET['remote']) : false)) {
			self::errorExit(__('The signature on the request to start a scan is invalid. Please try again.', 'wordfence'));
		}
		
		/* ----------Starting cronkey check -------- */
		self::status(4, 'info', __("Fetching stored cronkey for comparison.", 'wordfence'));
		$expired = false;
		$storedCronKey = self::storedCronKey($expired);
		$displayCronKey_received = (isset($_GET['cronKey']) ? (preg_match('/^[a-f0-9]+$/i', $_GET['cronKey']) && strlen($_GET['cronKey']) == 32 ? $_GET['cronKey'] : __('[invalid]', 'wordfence')) : __('[none]', 'wordfence'));
		$displayCronKey_stored = (!empty($storedCronKey) && !$expired ? $storedCronKey : __('[none]', 'wordfence'));
		self::status(4, 'info', sprintf(/* translators: 1. WordPress nonce. 2. WordPress nonce. */ __('Checking cronkey: %1$s (expecting %2$s)', 'wordfence'), $displayCronKey_received, $displayCronKey_stored));
		if (empty($_GET['cronKey'])) { 
			self::status(4, 'error', __("Wordfence scan script accessed directly, or WF did not receive a cronkey.", 'wordfence'));
			echo "If you see this message it means Wordfence is working correctly. You should not access this URL directly. It is part of the Wordfence security plugin and is designed for internal use only.";
			exit();
		}
		
		if ($expired) {
			self::errorExit(sprintf(
			/* translators: 1. Unix timestamp. 2. WordPress nonce. 3. Unix timestamp. */
				__('The key used to start a scan expired. The value is: %1$s and split is: %2$s and time is: %3$d', 'wordfence'), $expired, $storedCronKey, time()));
		} //keys only last 60 seconds and are used within milliseconds of creation
		
		if (!$storedCronKey) {
			wordfence::status(4, 'error', __("Wordfence could not find a saved cron key to start the scan so assuming it started and exiting.", 'wordfence'));
			exit();
		} 
		
		self::status(4, 'info', __("Checking saved cronkey against cronkey param", 'wordfence'));
		if (!hash_equals($storedCronKey, $_GET['cronKey'])) { 
			self::errorExit(
				sprintf(
				/* translators: 1. WordPress nonce (used for debugging). 2. WordPress nonce (used for debugging). 3. WordPress nonce (used for debugging). */
					__('Wordfence could not start a scan because the cron key does not match the saved key. Saved: %1$s Sent: %2$s Current unexploded: %3$s', 'wordfence'),
					$storedCronKey,
					$_GET['cronKey'],
					wfConfig::get('currentCronKey', false)
				)
			);
		}
		wfConfig::set('currentCronKey', '');
		/* --------- end cronkey check ---------- */

		wfScanMonitor::logLastSuccess();

		$scanMode = wfScanner::SCAN_TYPE_STANDARD;
		if (isset($_GET['scanMode']) && wfScanner::isValidScanType($_GET['scanMode'])) {
			$scanMode = $_GET['scanMode'];
		}
		$scanController = new wfScanner($scanMode);

		wfConfig::remove('scanStartAttempt');
		$isFork = ($_GET['isFork'] == '1' ? true : false);

		wfScanMonitor::handleStageStart($isFork);

		if(! $isFork){
			self::status(4, 'info', __("Checking if scan is already running", 'wordfence'));
			if(! wfUtils::getScanLock()){
				self::errorExit(__("There is already a scan running.", 'wordfence'));
			}
			
			wfIssues::updateScanStillRunning();
			wfConfig::set('wfPeakMemory', 0, wfConfig::DONT_AUTOLOAD);
			wfConfig::set('wfScanStartVersion', wfUtils::getWPVersion());
			wfConfig::set('lowResourceScanWaitStep', false);
			
			if ($scanController->useLowResourceScanning()) {
				self::status(1, 'info', __("Using low resource scanning", 'wordfence'));
			}
		}
		self::status(4, 'info', __("Requesting max memory", 'wordfence'));
		wfUtils::requestMaxMemory();
		self::status(4, 'info', __("Setting up error handling environment", 'wordfence'));
		set_error_handler('wfScan::error_handler', E_ALL);
		register_shutdown_function('wfScan::shutdown');
		if(! self::$debugMode){
			ob_start('wfScan::obHandler');
		}
		@error_reporting(E_ALL);
		wfUtils::iniSet('display_errors','On');
		self::status(4, 'info', __("Setting up scanRunning and starting scan", 'wordfence'));
		try {
			if ($isFork) {
				$scan = wfConfig::get_ser('wfsd_engine', false, false);
				if ($scan) {
					self::status(4, 'info', sprintf(/* translators: Error message (used for debugging). */ __("Got a true deserialized value back from 'wfsd_engine' with type: %s", 'wordfence'), gettype($scan)));
					wfConfig::set('wfsd_engine', '', wfConfig::DONT_AUTOLOAD);
				}
				else {
					self::status(2, 'error', sprintf(/* translators: Error message (used for debugging). */ __("Scan can't continue - stored data not found after a fork. Got type: %s", 'wordfence'), gettype($scan)));
					wfConfig::set('wfsd_engine', '', wfConfig::DONT_AUTOLOAD);
					wfConfig::set('lastScanCompleted', __('Scan can\'t continue - stored data not found after a fork.', 'wordfence'));
					wfConfig::set('lastScanFailureType', wfIssues::SCAN_FAILED_FORK_FAILED);
					wfUtils::clearScanLock();
					self::status(2, 'error', "Scan terminated with error: " . __('Scan can\'t continue - stored data not found after a fork.', 'wordfence'));
					self::status(10, 'info', "SUM_KILLED:" . __('Previous scan terminated with an error. See below.', 'wordfence'));
					exit();
				}
			}
			else {
				$delay = -1;
				$isScheduled = false;
				$originalScanStart = wfConfig::get('originalScheduledScanStart', 0);
				$lastScanStart = wfConfig::get('lastScheduledScanStart', 0);
				$minimumFrequency = ($scanController->schedulingMode() == wfScanner::SCAN_SCHEDULING_MODE_MANUAL ? 1800 : 43200);
				if ($lastScanStart && (time() - $lastScanStart) < $minimumFrequency) {
					$isScheduled = true;
					
					if ($originalScanStart > 0) {
						$delay = max($lastScanStart - $originalScanStart, 0);
					}
				}
				
				wfIssues::statusPrep(); //Re-initializes all status counters
				$scanController->resetStages();
				$scanController->resetSummaryItems();
				
				if ($scanMode != wfScanner::SCAN_TYPE_QUICK) {
					wordfence::status(1, 'info', __("Contacting Wordfence to initiate scan", 'wordfence'));
					$wp_version = wfUtils::getWPVersion();
					$apiKey = wfConfig::get('apiKey');
					$api = new wfAPI($apiKey, $wp_version);
					$response = $api->call('log_scan', array(), array('delay' => $delay, 'scheduled' => (int) $isScheduled, 'mode' => wfConfig::get('schedMode')/*, 'forcedefer' => 1*/));
					
					if ($scanController->schedulingMode() == wfScanner::SCAN_SCHEDULING_MODE_AUTOMATIC && $isScheduled) {
						if (isset($response['defer'])) {
							$defer = (int) $response['defer'];
							wordfence::status(2, 'info', sprintf(/* translators: Time until. */ __("Deferring scheduled scan by %s", 'wordfence'), wfUtils::makeDuration($defer)));
							wfConfig::set('lastScheduledScanStart', 0);
							wfConfig::set('lastScanCompleted', 'ok');
							wfConfig::set('lastScanFailureType', false);
							wfConfig::set_ser('wfStatusStartMsgs', array());
							$scanController->recordLastScanTime();
							$i = new wfIssues();
							wfScanEngine::refreshScanNotification($i);
							wfScanner::shared()->scheduleSingleScan(time() + $defer, $originalScanStart);
							wfUtils::clearScanLock();
							exit();
						}
					}
					
					$malwarePrefixesHash = (isset($response['malwarePrefixes']) ? $response['malwarePrefixes'] : '');
					$coreHashesHash = (isset($response['coreHashes']) ? $response['coreHashes'] : '');
					
					$scan = new wfScanEngine($malwarePrefixesHash, $coreHashesHash, $scanMode);
					$scan->deleteNewIssues();
				}
				else {
					wordfence::status(1, 'info', __("Initiating quick scan", 'wordfence'));
					$scan = new wfScanEngine('', '', $scanMode);
				}
			}
			
			$scan->go();
		}
		catch (wfScanEngineDurationLimitException $e) { //User error set in wfScanEngine
			wfUtils::clearScanLock();
			$peakMemory = self::logPeakMemory();
			self::status(2, 'info', sprintf(
				__('Wordfence used %1$s of memory for scan. Server peak memory usage was: %2$s', 'wordfence'),
				wfUtils::formatBytes($peakMemory - self::$peakMemAtStart),
				wfUtils::formatBytes($peakMemory)
			));
			self::status(2, 'error', sprintf(__("Scan terminated with error: %s", 'wordfence'), $e->getMessage()));
			exit();
		}
		catch (wfScanEngineCoreVersionChangeException $e) { //User error set in wfScanEngine
			wfUtils::clearScanLock();
			$peakMemory = self::logPeakMemory();
			self::status(2, 'info', sprintf(
				/* translators: 1. Bytes of memory. 2. Bytes of memory. */
				__('Wordfence used %1$s of memory for scan. Server peak memory usage was: %2$s', 'wordfence'),
				wfUtils::formatBytes($peakMemory - self::$peakMemAtStart),
				wfUtils::formatBytes($peakMemory)
			));
			self::status(2, 'error', sprintf(/* translators: Error message. */ __("Scan terminated with error: %s", 'wordfence'), $e->getMessage()));
			
			$nextScheduledScan = wfScanner::shared()->nextScheduledScanTime();
			if ($nextScheduledScan !== false && $nextScheduledScan - time() > 21600 /* 6 hours */) {
				$nextScheduledScan = time() + 3600;
				wfScanner::shared()->scheduleSingleScan($nextScheduledScan);
			}
			self::status(2, 'error', wordfence::getNextScanStartTime($nextScheduledScan));
			
			exit();
		}
		catch (wfAPICallSSLUnavailableException $e) {
			wfConfig::set('lastScanCompleted', $e->getMessage());
			wfConfig::set('lastScanFailureType', wfIssues::SCAN_FAILED_API_SSL_UNAVAILABLE);
			
			wfUtils::clearScanLock();
			$peakMemory = self::logPeakMemory();
			self::status(2, 'info', sprintf(
				/* translators: 1. Bytes of memory. 2. Bytes of memory. */
				__('Wordfence used %1$s of memory for scan. Server peak memory usage was: %2$s', 'wordfence'),
				wfUtils::formatBytes($peakMemory - self::$peakMemAtStart),
				wfUtils::formatBytes($peakMemory)
			));
			self::status(2, 'error', sprintf(/* translators: Error message. */__("Scan terminated with error: %s", 'wordfence'), $e->getMessage()));
			exit();
		}
		catch (wfAPICallFailedException $e) {
			wfConfig::set('lastScanCompleted', $e->getMessage());
			wfConfig::set('lastScanFailureType', wfIssues::SCAN_FAILED_API_CALL_FAILED);
			
			wfUtils::clearScanLock();
			$peakMemory = self::logPeakMemory();
			self::status(2, 'info', sprintf(
				/* translators: 1. Bytes of memory. 2. Bytes of memory. */
				__('Wordfence used %1$s of memory for scan. Server peak memory usage was: %2$s', 'wordfence'),
				wfUtils::formatBytes($peakMemory - self::$peakMemAtStart),
				wfUtils::formatBytes($peakMemory)
			));
			self::status(2, 'error', sprintf(/* translators: Error message. */ __("Scan terminated with error: %s", 'wordfence'), $e->getMessage()));
			exit();
		}
		catch (wfAPICallInvalidResponseException $e) {
			wfConfig::set('lastScanCompleted', $e->getMessage());
			wfConfig::set('lastScanFailureType', wfIssues::SCAN_FAILED_API_INVALID_RESPONSE);
			
			wfUtils::clearScanLock();
			$peakMemory = self::logPeakMemory();
			self::status(2, 'info', sprintf(
				/* translators: 1. Bytes of memory. 2. Bytes of memory. */
				__('Wordfence used %1$s of memory for scan. Server peak memory usage was: %2$s', 'wordfence'),
				wfUtils::formatBytes($peakMemory - self::$peakMemAtStart),
				wfUtils::formatBytes($peakMemory)
			));
			self::status(2, 'error', sprintf(/* translators: Error message. */ __("Scan terminated with error: %s", 'wordfence'), $e->getMessage()));
			exit();
		}
		catch (wfAPICallErrorResponseException $e) {
			wfConfig::set('lastScanCompleted', $e->getMessage());
			wfConfig::set('lastScanFailureType', wfIssues::SCAN_FAILED_API_ERROR_RESPONSE);
			
			wfUtils::clearScanLock();
			$peakMemory = self::logPeakMemory();
			self::status(2, 'info', sprintf(
				/* translators: 1. Bytes of memory. 2. Bytes of memory. */
				__('Wordfence used %1$s of memory for scan. Server peak memory usage was: %2$s', 'wordfence'),
				wfUtils::formatBytes($peakMemory - self::$peakMemAtStart),
				wfUtils::formatBytes($peakMemory)
			));
			self::status(2, 'error', sprintf(/* translators: Error message. */ __("Scan terminated with error: %s", 'wordfence'), $e->getMessage()));

			if (preg_match('/The Wordfence API key you\'re using is already being used by: (\S*?) /', $e->getMessage(), $matches)) {
				wordfence::alert(__('Wordfence scan failed because of license site URL conflict', 'wordfence'), sprintf(
				/* translators: Site URL. */
					__(<<<MSG
The Wordfence scan has failed because the Wordfence API key you're using is already being used by: %s

If you have changed your blog URL, please sign-in to Wordfence, purchase a new key or reset an existing key, and then enter that key on this site's Wordfence Options page.
MSG
					, 'wordfence'), $matches[1]), false);
			}

			exit();
		}
		catch (Exception $e) {
			wfUtils::clearScanLock();
			self::status(2, 'error', sprintf(/* translators: Error message. */ __("Scan terminated with error: %s", 'wordfence'), $e->getMessage()));
			self::status(10, 'info', "SUM_KILLED:" . __('Previous scan terminated with an error. See below.', 'wordfence'));
			exit();
		}
		wfUtils::clearScanLock();
	}
	public static function logPeakMemory(){
		$oldPeak = wfConfig::get('wfPeakMemory', 0, false);
		$peak = memory_get_peak_usage(true);
		if ($peak > $oldPeak) {
			wfConfig::set('wfPeakMemory', $peak, wfConfig::DONT_AUTOLOAD);
			return $peak;
		}
		return $oldPeak;
	}
	public static function obHandler($buf){
		if(strlen($buf) > 1000){
			$buf = substr($buf, 0, 255);
		}
		if(empty($buf) === false && preg_match('/[a-zA-Z0-9]+/', $buf)){
			self::status(1, 'error', $buf);
		}
	}
	public static function error_handler($errno, $errstr, $errfile, $errline){
		if(self::$errorHandlingOn && error_reporting() > 0){
			if(preg_match('/wordfence\//', $errfile)){
				$level = 1; //It's one of our files, so level 1
			} else {
				$level = 4; //It's someone elses plugin so only show if debug is enabled
			}
			self::status($level, 'error', "$errstr ($errno) File: $errfile Line: $errline");
		}
		return false;
	}
	public static function shutdown(){
		self::logPeakMemory();
	}
	private static function errorExit($msg){
		wordfence::status(1, 'error', sprintf(/* translators: Error message. */ __('Scan Engine Error: %s', 'wordfence'), $msg));
		exit();	
	}
	private static function status($level, $type, $msg){
		wordfence::status($level, $type, $msg);
	}
}lib/Diff.php000064400000013202150755146450006705 0ustar00<?php
/**
 * Diff
 *
 * A comprehensive library for generating differences between two strings
 * in multiple formats (unified, side by side HTML etc)
 *
 * PHP version 5
 *
 * Copyright (c) 2009 Chris Boulton <chris.boulton@interspire.com>
 * 
 * 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 the Chris Boulton 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 THE COPYRIGHT OWNER OR CONTRIBUTORS 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.
 *
 * @package Diff
 * @author Chris Boulton <chris.boulton@interspire.com>
 * @copyright (c) 2009 Chris Boulton
 * @license New BSD License http://www.opensource.org/licenses/bsd-license.php
 * @version 1.1
 * @link http://github.com/chrisboulton/php-diff
 */

class Diff
{
	/**
	 * @var array The "old" sequence to use as the basis for the comparison.
	 */
	private $a = null;

	/**
	 * @var array The "new" sequence to generate the changes for.
	 */
	private $b = null;

	/**
	 * @var array Array containing the generated opcodes for the differences between the two items.
	 */
	private $groupedCodes = null;

	/**
	 * @var array Associative array of the default options available for the diff class and their default value.
	 */
	private $defaultOptions = array(
		'context' => 3,
		'ignoreNewLines' => false,
		'ignoreWhitespace' => false,
		'ignoreCase' => false
	);

	/**
	 * @var array Array of the options that have been applied for generating the diff.
	 */
	private $options = array();

	/**
	 * The constructor.
	 *
	 * @param array $a Array containing the lines of the first string to compare.
	 * @param array $b Array containing the lines for the second string to compare.
	 */
	public function __construct($a, $b, $options=array())
	{
		$this->a = $a;
		$this->b = $b;

		$this->options = array_merge($this->defaultOptions, $options);
	}

	/**
	 * Render a diff using the supplied rendering class and return it.
	 *
	 * @param object $renderer An instance of the rendering object to use for generating the diff.
	 * @return mixed The generated diff. Exact return value depends on the rendered.
	 */
	public function render(Diff_Renderer_Abstract $renderer)
	{
		$renderer->diff = $this;
		return $renderer->render();
	}

	/**
	 * Get a range of lines from $start to $end from the first comparison string
	 * and return them as an array. If no values are supplied, the entire string
	 * is returned. It's also possible to specify just one line to return only
	 * that line.
	 *
	 * @param int $start The starting number.
	 * @param int $end The ending number. If not supplied, only the item in $start will be returned.
	 * @return array Array of all of the lines between the specified range.
	 */
	public function getA($start=0, $end=null)
	{
		if($start == 0 && $end === null) {
			return $this->a;
		}

		if($end === null) {
			$length = 1;
		}
		else {
			$length = $end - $start;
		}

		return array_slice($this->a, $start, $length);

	}

	/**
	 * Get a range of lines from $start to $end from the second comparison string
	 * and return them as an array. If no values are supplied, the entire string
	 * is returned. It's also possible to specify just one line to return only
	 * that line.
	 *
	 * @param int $start The starting number.
	 * @param int $end The ending number. If not supplied, only the item in $start will be returned.
	 * @return array Array of all of the lines between the specified range.
	 */
	public function getB($start=0, $end=null)
	{
		if($start == 0 && $end === null) {
			return $this->b;
		}

		if($end === null) {
			$length = 1;
		}
		else {
			$length = $end - $start;
		}

		return array_slice($this->b, $start, $length);
	}

	/**
	 * Generate a list of the compiled and grouped opcodes for the differences between the
	 * two strings. Generally called by the renderer, this class instantiates the sequence
	 * matcher and performs the actual diff generation and return an array of the opcodes
	 * for it. Once generated, the results are cached in the diff class instance.
	 *
	 * @return array Array of the grouped opcodes for the generated diff.
	 */
	public function getGroupedOpcodes()
	{
		if(!is_null($this->groupedCodes)) {
			return $this->groupedCodes;
		}

		require_once(dirname(__FILE__) . '/Diff/SequenceMatcher.php');
		$sequenceMatcher = new Diff_SequenceMatcher($this->a, $this->b, null, $this->options);
		$this->groupedCodes = $sequenceMatcher->getGroupedOpcodes();
		return $this->groupedCodes;
	}
}
lib/wfIpLocator.php000064400000005372150755146450010277 0ustar00<?php

require_once __DIR__ . '/../vendor/autoload.php';

require_once __DIR__ . '/wfIpLocation.php';

use Wordfence\MmdbReader\Database;
use Wordfence\MmdbReader\Exception\MmdbThrowable;

class wfIpLocator {

	const SOURCE_BUNDLED = 0;
	const SOURCE_WFLOGS = 1;

	const DATABASE_FILE_NAME = 'GeoLite2-Country.mmdb';

	private static $instances = array();

	private $database;
	private $preferred;

	private function __construct($database, $preferred) {
		$this->database = $database;
		$this->preferred = $preferred;
	}

	public function isPreferred() {
		return $this->preferred;
	}

	private static function logError($message) {
		if (class_exists('wfUtils'))
			wfUtils::check_and_log_last_error('ip_locator', 'IP Location Error:', $message, 0);
	}

	public function locate($ip) {
		if ($this->database !== null) {
			try {
				$record = $this->database->search($ip);
				if ($record !== null)
					return new wfIpLocation($record);
			}
			catch (MmdbThrowable $t) {
				self::logError('Failed to locate IP address: ' . $t->getMessage());
			}
		}
		return null;
	}

	public function getCountryCode($ip, $default = '') {
		$record = $this->locate($ip);
		if ($record !== null)
			return $record->getCountryCode();
		return $default;
	}

	public function getDatabaseVersion() {
		if ($this->database !== null) {
			try {
				return $this->database->getMetadata()->getBuildEpoch();
			}
			catch (MmdbThrowable $t) {
				self::logError('Failed to retrieve database version: ' . $t->getMessage());
			}
		}
		return null;
	}

	private static function getDatabaseDirectory($source) {
		switch ($source) {
		case self::SOURCE_BUNDLED:
			return WFWAF_LOG_PATH;
		case self::SOURCE_BUNDLED:
		default:
			return __DIR__;
		}
	}

	private static function initializeDatabase($preferredSource, &$isPreferred) {
		$sources = array();
		if ($preferredSource !== self::SOURCE_BUNDLED)
			$sources[] = $preferredSource;
		$sources[] = self::SOURCE_BUNDLED;
		$isPreferred = true;
		foreach ($sources as $source) {
			$directory = self::getDatabaseDirectory($source);
			try {
				$path = $directory . '/' . self::DATABASE_FILE_NAME;
				if (file_exists($path)) //Preemptive check to prevent warnings
					return Database::open($path);
			}
			catch (MmdbThrowable $t) {
				self::logError('Failed to initialize IP location database: ' . $t->getMessage());
			}
			$preferred = false;
		}
		return null;
	}

	public static function getInstance($preferredSource = null) {
		if ($preferredSource === null)
			$preferredSource = self::SOURCE_WFLOGS;
		if (!array_key_exists($preferredSource, self::$instances)) {
			$database = self::initializeDatabase($preferredSource, $isPreferred);
			self::$instances[$preferredSource] = new wfIpLocator($database, $isPreferred);
		}
		return self::$instances[$preferredSource];
	}

}lib/wfJWT.php000064400000012517150755146450007046 0ustar00<?php

class wfJWT {

	private $claims;
	const JWT_TTL = 600;
	const ISSUER = 600;

	public static function extractTokenContents($token) {
		if (!is_string($token)) {
			throw new InvalidArgumentException('Token is not a string. ' . gettype($token) . ' given.');
		}

		// Verify the token matches the JWT format.
		if (!preg_match('/^[a-zA-Z0-9\-_]+?\.[a-zA-Z0-9\-_]+?\.[a-zA-Z0-9\-_]+?$/', $token)) {
			throw new wfJWTException('Invalid token format.');
		}
		list($header, $body, $signature) = explode('.', $token);

		// Test that the token is valid and not expired.
		$decodedHeader = base64_decode($header);

		if (!(is_string($decodedHeader) && $decodedHeader)) {
			throw new wfJWTException('Token header is invalid.');
		}

		$header = json_decode($decodedHeader, true);
		if (!is_array($header)) {
			throw new wfJWTException('Token header is invalid.');
		}

		$decodedBody = base64_decode($body);

		if (!(is_string($decodedBody) && $decodedBody)) {
			throw new wfJWTException('Token body is invalid.');
		}

		$body = json_decode($decodedBody, true);
		if (!is_array($body)) {
			throw new wfJWTException('Token body is invalid.');
		}

		return array(
			'header'    => $header,
			'body'      => $body,
			'signature' => $signature,
		);

	}

	/**
	 * @param mixed $subject
	 */
	public function __construct($subject = null) {
		$this->claims = $this->getClaimDefaults();
		$this->claims['sub'] = $subject;
	}

	/**
	 * @return string
	 */
	public function encode() {
		$header = $this->encodeString($this->buildHeader());
		$body = $this->encodeString($this->buildBody());
		return sprintf('%s.%s.%s', $header, $body,
			$this->encodeString($this->sign(sprintf('%s.%s', $header, $body))));
	}

	/**
	 * @param string $token
	 * @return array
	 * @throws wfJWTException|InvalidArgumentException
	 */
	public function decode($token) {
		if (!is_string($token)) {
			throw new InvalidArgumentException('Token is not a string. ' . gettype($token) . ' given.');
		}

		// Verify the token matches the JWT format.
		if (!preg_match('/^[a-zA-Z0-9\-_]+?\.[a-zA-Z0-9\-_]+?\.[a-zA-Z0-9\-_]+?$/', $token)) {
			throw new wfJWTException('Invalid token format.');
		}
		list($header, $body, $signature) = explode('.', $token);

		// Verify signature matches the supplied payload.
		if (!$this->verifySignature($this->decodeString($signature), sprintf('%s.%s', $header, $body))) {
			throw new wfJWTException('Invalid signature.');
		}

		// Test that the token is valid and not expired.
		$decodedHeader = base64_decode($header);

		if (!(is_string($decodedHeader) && $decodedHeader)) {
			throw new wfJWTException('Token header is invalid.');
		}

		$header = json_decode($decodedHeader, true);
		if (!(
			is_array($header) &&
			array_key_exists('alg', $header) &&
			$header['alg'] === 'HS256' &&
			$header['typ'] === 'JWT'
		)) {
			throw new wfJWTException('Token header is invalid.');
		}

		$decodedBody = base64_decode($body);

		if (!(is_string($decodedBody) && $decodedBody)) {
			throw new wfJWTException('Token body is invalid.');
		}

		$body = json_decode($decodedBody, true);
		if (!(
			is_array($body) &&

			// Check the token not before now timestamp.
			array_key_exists('nbf', $body) &&
			is_numeric($body['nbf']) &&
			$body['nbf'] <= time() &&

			// Check the token is not expired.
			array_key_exists('exp', $body) &&
			is_numeric($body['exp']) &&
			$body['exp'] >= time() &&

			// Check the issuer and audience is ours.
			$body['iss'] === 'Wordfence ' . WORDFENCE_VERSION &&
			$body['aud'] === 'Wordfence Central'
		)) {
			throw new wfJWTException('Token is invalid or expired.');
		}

		return array(
			'header' => $header,
			'body'   => $body,
		);
	}

	/**
	 * @param string $string
	 * @return string
	 */
	public function sign($string) {
		$salt = wp_salt('auth');

		return hash_hmac('sha256', $string, $salt, true);
	}

	/**
	 * @param string $signature
	 * @param string $message
	 * @return bool
	 */
	public function verifySignature($signature, $message) {
		return hash_equals($this->sign($message), $signature);
	}

	/**
	 * @return string
	 */
	public function __toString() {
		return $this->encode();
	}

	/**
	 * @param string $data
	 * @return string
	 */
	public function encodeString($data) {
		return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
	}

	/**
	 * @param string $data
	 * @return bool|string
	 */
	public function decodeString($data) {
		return base64_decode(strtr($data, '-_', '+/'));
	}

	/**
	 * @return mixed|string
	 */
	protected function buildHeader() {
		return '{"alg":"HS256","typ":"JWT"}';
	}

	/**
	 * @return mixed|string
	 */
	protected function buildBody() {
		return json_encode($this->getClaims());
	}

	/**
	 * @return array
	 */
	protected function getClaimDefaults() {
		$now = time();
		return array(
			'iss' => 'Wordfence ' . WORDFENCE_VERSION,
			'aud' => 'Wordfence Central',
			'nbf' => $now,
			'iat' => $now,
			'exp' => $now + self::JWT_TTL,
		);
	}

	/**
	 * @param array $claims
	 */
	public function addClaims($claims) {
		if (!is_array($claims)) {
			throw new InvalidArgumentException(__METHOD__ . ' expects argument 1 to be array.');
		}
		$this->setClaims(array_merge($this->getClaims(), $claims));
	}

	/**
	 * @return array
	 */
	public function getClaims() {
		return $this->claims;
	}

	/**
	 * @param array $claims
	 */
	public function setClaims($claims) {
		$this->claims = $claims;
	}
}

class wfJWTException extends Exception {

}lib/sysinfo.php000064400000002730150755146450007533 0ustar00<?php if (!defined('WORDFENCE_VERSION')) { exit; } ?>
<?php if(! wfUtils::isAdmin()){ exit(); } ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"  dir="ltr" lang="en-US">
<head>
<title><?php esc_html_e('Wordfence System Info', 'wordfence') ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel='stylesheet' id='wordfence-main-style-css'  href='<?php echo wfUtils::getBaseURL() . wfUtils::versionedAsset('css/phpinfo.css'); ?>?ver=<?php echo WORDFENCE_VERSION; ?>' type='text/css' media='all' />
<body>
<?php 
ob_start();
if (wfUtils::funcEnabled('phpinfo')) { phpinfo(INFO_ALL); } else { echo '<center><strong>' . esc_html__('Unable to output phpinfo content because it is disabled', 'wordfence') . "</strong></center>\n"; }
$out = ob_get_clean();
$out = str_replace('width="600"','width="900"', $out);
// $out = preg_replace('/<hr.*?PHP Credits.*?<\/h1>/s', '', $out);
$out = preg_replace('/<a [^>]+>/', '', $out);
$out = preg_replace('/<\/a>/', '', $out);
$out = preg_replace('/<title>[^<]*<\/title>/','', $out);
echo $out;
?>
<div class="diffFooter"><?php echo wp_kses(sprintf(__('&copy;&nbsp;%d to %d Wordfence &mdash; Visit <a href="http://wordfence.com/">Wordfence.com</a> for help, security updates and more.', 'wordfence'), date_i18n('Y', WORDFENCE_EPOCH), date_i18n('Y')), array('a'=>array('href'=>array()))) ?></div>
</body>
</html>lib/wfActivityReport.php000064400000050721150755146450011371 0ustar00<?php
if (defined('WORDFENCE_VERSION')) {

class wfActivityReport {
	const BLOCK_TYPE_COMPLEX = 'complex';
	const BLOCK_TYPE_BRUTE_FORCE = 'bruteforce';
	const BLOCK_TYPE_BLACKLIST = 'blacklist';

	/**
	 * @var int
	 */
	private $limit = 10;

	/**
	 * @var wpdb
	 */
	private $db;

	/**
	 * @param int $limit
	 */
	public function __construct($limit = 10) {
		global $wpdb;
		$this->db = $wpdb;
		$this->limit = $limit;
	}

	/**
	 * Schedule the activity report cron job.
	 */
	public static function scheduleCronJob() {
		self::clearCronJobs();

		if (!wfConfig::get('email_summary_enabled', 1)) {
			return;
		}

		if (is_main_site()) {
			list(, $end_time) = wfActivityReport::getReportDateRange();
			wp_schedule_single_event($end_time, 'wordfence_email_activity_report');
		}
	}

	/**
	 * Remove the activity report cron job.
	 */
	public static function disableCronJob() {
		self::clearCronJobs();
	}

	public static function clearCronJobs() {
		wp_clear_scheduled_hook('wordfence_email_activity_report');
	}

	/**
	 * Send out the report and reschedule the next report's cron job.
	 */
	public static function executeCronJob() {
		if (!wfConfig::get('email_summary_enabled', 1)) {
			return;
		}
		
		$emails = wfConfig::getAlertEmails();
		if (count($emails)) {
			$report = new self();
			$report->sendReportViaEmail($emails);
		}
		self::scheduleCronJob();
	}

	/**
	 * Output a compact version of the email for the WP dashboard.
	 */
	public static function outputDashboardWidget() {
		$report = new self(5);
		echo $report->toWidgetView();
	}

	/**
	 * @return array
	 */
	public static function getReportDateRange() {
		$interval = wfConfig::get('email_summary_interval', 'weekly');
		$offset = get_option('gmt_offset');
		return self::_getReportDateRange($interval, $offset);
	}

	/**
	 * Testable code.
	 *
	 * @param string $interval
	 * @param int    $offset
	 * @param null   $time
	 * @return array
	 */
	public static function _getReportDateRange($interval = 'weekly', $offset = 0, $time = null) {
		if ($time === null) {
			$time = time();
		}

		$day = (int) gmdate('w', $time);
		$month = (int) gmdate("n", $time);
		$day_of_month = (int) gmdate("j", $time);
		$year = (int) gmdate("Y", $time);

		$start_time = 0;
		$end_time = 0;

		switch ($interval) {
			// Send a report 4pm every day
			case 'daily':
				$start_time = gmmktime(16, 0, 0, $month, $day_of_month, $year) + (-$offset * 60 * 60);
				$end_time = $start_time + 86400;
				break;
			
			// Send a report 4pm every Monday
			case 'weekly':
				$start_time = gmmktime(16, 0, 0, $month, $day_of_month - $day + 1, $year) + (-$offset * 60 * 60);
				$end_time = $start_time + (86400 * 7);
				break;

			// Send a report at 4pm the first of every month
			case 'monthly':
				$start_time = gmmktime(16, 0, 0, $month, 1, $year) + (-$offset * 60 * 60);
				$end_time = gmmktime(16, 0, 0, $month + 1, 1, $year) + (-$offset * 60 * 60);
				break;
		}

		return array($start_time, $end_time);
	}

	/**
	 * @return int
	 */
	public static function getReportDateFrom() {
		$interval = wfConfig::get('email_summary_interval', 'weekly');
		return self::_getReportDateFrom($interval);
	}

	/**
	 * @param string $interval
	 * @param null   $time
	 * @return int
	 */
	public static function _getReportDateFrom($interval = 'weekly', $time = null) {
		if ($time === null) {
			$time = time();
		}

		// weekly
		$from = $time - (86400 * 7);
		switch ($interval) {
			case 'daily':
				$from = $time - 86400;
				break;

			// Send a report at 4pm the first of every month
			case 'monthly':
				$from = strtotime('-1 month', $time);
				break;
		}

		return $from;
	}

	/**
	 * @return array
	 */
	public function getFullReport() {
		$start_time = microtime(true);
		$remainder = 0;
		$recent_firewall_activity = $this->getRecentFirewallActivity($this->limit, $remainder);
		return array(
			'top_ips_blocked'          => $this->getTopIPsBlocked($this->limit),
			'top_countries_blocked'    => $this->getTopCountriesBlocked($this->limit),
			'top_failed_logins'        => $this->getTopFailedLogins($this->limit),
			'recent_firewall_activity' => $recent_firewall_activity,
			'omitted_firewall_activity'=> $remainder,
			'recently_modified_files'  => $this->getRecentFilesModified($this->limit),
			'updates_needed'           => $this->getUpdatesNeeded(),
			'microseconds'             => microtime(true) - $start_time,
		);
	}

	/**
	 * @return array
	 */
	public function getWidgetReport() {
		$start_time = microtime(true);
		return array(
			'top_ips_blocked'       => $this->getTopIPsBlocked($this->limit),
			'top_countries_blocked' => $this->getTopCountriesBlocked($this->limit),
			'top_failed_logins'     => $this->getTopFailedLogins($this->limit),
			'updates_needed'        => $this->getUpdatesNeeded(),
			'microseconds'          => microtime(true) - $start_time,
		);
	}
	
	public function getBlockedCount($maxAgeDays = null, $grouping = null) {
		$maxAgeDays = (int) $maxAgeDays;
		if ($maxAgeDays <= 0) {
			$interval = 'FLOOR(UNIX_TIMESTAMP(DATE_SUB(NOW(), interval 7 day)) / 86400)';
			switch (wfConfig::get('email_summary_interval', 'weekly')) {
				case 'daily':
					$interval = 'FLOOR(UNIX_TIMESTAMP(DATE_SUB(NOW(), interval 1 day)) / 86400)';
					break;
				case 'monthly':
					$interval = 'FLOOR(UNIX_TIMESTAMP(DATE_SUB(NOW(), interval 1 month)) / 86400)';
					break;
			}
		}
		else {
			$interval = 'FLOOR(UNIX_TIMESTAMP(DATE_SUB(NOW(), interval ' . $maxAgeDays . ' day)) / 86400)';
		}
		
		//Possible values for blockType: throttle, manual, brute, fakegoogle, badpost, country, advanced, blacklist, waf
		$groupingWHERE = '';
		switch ($grouping) {
			case self::BLOCK_TYPE_COMPLEX:
				$groupingWHERE = ' AND blockType IN ("fakegoogle", "badpost", "country", "advanced", "waf")';
				break;
			case self::BLOCK_TYPE_BRUTE_FORCE:
				$groupingWHERE = ' AND blockType IN ("throttle", "brute")';
				break;
			case self::BLOCK_TYPE_BLACKLIST:
				$groupingWHERE = ' AND blockType IN ("blacklist", "manual")';
				break;
		}
		
		$table_wfBlockedIPLog = wfDB::networkTable('wfBlockedIPLog');
		$count = $this->db->get_var(<<<SQL
SELECT SUM(blockCount) as blockCount
FROM {$table_wfBlockedIPLog}
WHERE unixday >= {$interval}{$groupingWHERE}
SQL
			);
		return $count;
	}

	/**
	 * @param int $limit
	 * @return mixed
	 */
	public function getTopIPsBlocked($limit = 10, $maxAgeDays = null) {
		$maxAgeDays = (int) $maxAgeDays;
		if ($maxAgeDays <= 0) {
			$interval = 'FLOOR(UNIX_TIMESTAMP(DATE_SUB(NOW(), interval 7 day)) / 86400)';
			switch (wfConfig::get('email_summary_interval', 'weekly')) {
				case 'daily':
					$interval = 'FLOOR(UNIX_TIMESTAMP(DATE_SUB(NOW(), interval 1 day)) / 86400)';
					break;
				case 'monthly':
					$interval = 'FLOOR(UNIX_TIMESTAMP(DATE_SUB(NOW(), interval 1 month)) / 86400)';
					break;
			}
		}
		else {
			$interval = 'FLOOR(UNIX_TIMESTAMP(DATE_SUB(NOW(), interval ' . $maxAgeDays . ' day)) / 86400)';
		}
		
		$table_wfBlockedIPLog = wfDB::networkTable('wfBlockedIPLog');
		$query=<<<SQL
SELECT IP, countryCode, unixday, blockType,
SUM(blockCount) as blockCount
FROM {$table_wfBlockedIPLog}
WHERE unixday >= {$interval}
GROUP BY IP
ORDER BY blockCount DESC
LIMIT %d
SQL;
		$results = $this->db->get_results($this->db->prepare($query, $limit));
		if ($results) {
			foreach ($results as &$row) {
				$row->countryName = $this->getCountryNameByCode($row->countryCode);
			}
		}
		return $results;
	}

	/**
	 * @param int $limit
	 * @return array
	 */
	public function getTopCountriesBlocked($limit = 10, $maxAgeDays = null) {
		$maxAgeDays = (int) $maxAgeDays;
		if ($maxAgeDays <= 0) {
			$interval = 'FLOOR(UNIX_TIMESTAMP(DATE_SUB(NOW(), interval 7 day)) / 86400)';
			switch (wfConfig::get('email_summary_interval', 'weekly')) {
				case 'daily':
					$interval = 'FLOOR(UNIX_TIMESTAMP(DATE_SUB(NOW(), interval 1 day)) / 86400)';
					break;
				case 'monthly':
					$interval = 'FLOOR(UNIX_TIMESTAMP(DATE_SUB(NOW(), interval 1 month)) / 86400)';
					break;
			}
		}
		else {
			$interval = 'FLOOR(UNIX_TIMESTAMP(DATE_SUB(NOW(), interval ' . $maxAgeDays . ' day)) / 86400)';
		}
	  	
		$table_wfBlockedIPLog = wfDB::networkTable('wfBlockedIPLog');
		$query=<<<SQL
SELECT *, COUNT(IP) as totalIPs, SUM(ipBlockCount) as totalBlockCount
FROM (SELECT *, SUM(blockCount) AS ipBlockCount FROM {$table_wfBlockedIPLog} WHERE unixday >= {$interval} GROUP BY IP) t
GROUP BY countryCode
ORDER BY totalBlockCount DESC
LIMIT %d
SQL;
		$results = $this->db->get_results($this->db->prepare($query, $limit));
		if ($results) {
			foreach ($results as &$row) {
				$row->countryName = $this->getCountryNameByCode($row->countryCode);
			}
		}
		return $results;
	}

	/**
	 * @param int $limit
	 * @return mixed
	 */
	public function getTopFailedLogins($limit = 10) {
		$interval = 'UNIX_TIMESTAMP(DATE_SUB(NOW(), interval 7 day))';
		switch (wfConfig::get('email_summary_interval', 'weekly')) {
			case 'daily':
				$interval = 'UNIX_TIMESTAMP(DATE_SUB(NOW(), interval 1 day))';
				break;
			case 'monthly':
				$interval = 'UNIX_TIMESTAMP(DATE_SUB(NOW(), interval 1 month))';
				break;
		}
	  
		$table_wfLogins = wfDB::networkTable('wfLogins');
		$failedLogins = $this->db->get_results($this->db->prepare(<<<SQL
SELECT wfl.*,
sum(wfl.fail) as fail_count
FROM {$table_wfLogins} wfl
WHERE wfl.fail = 1
AND wfl.ctime > $interval
GROUP BY wfl.username
ORDER BY fail_count DESC
LIMIT %d
SQL
			, $limit));
		
		foreach ($failedLogins as &$login) {
			$exists = $this->db->get_var($this->db->prepare(<<<SQL
SELECT !ISNULL(ID) FROM {$this->db->users} WHERE user_login = '%s' OR user_email = '%s'
SQL
			, $login->username, $login->username));
			$login->is_valid_user = $exists;
		}
		
		return $failedLogins;
	}

	/**
	 * Returns any updates needs or false if everything is up to date.
	 *
	 * @return array|bool
	 */
	public function getUpdatesNeeded($useCachedValued = true) {
		$update_check = new wfUpdateCheck();
		$needs_update = $update_check->checkAllUpdates($useCachedValued)
			->needsAnyUpdates();
		if ($needs_update) {
			return array(
				'core'    => $update_check->getCoreUpdateVersion(),
				'plugins' => $update_check->getPluginUpdates(),
				'themes'  => $update_check->getThemeUpdates(),
			);
		}
		return false;
	}

	/**
	 * Returns list of firewall activity up to $limit number of entries.
	 *
	 * @param int $limit Max events to return in results
	 * @param int $remainder
	 * @return array
	 */
	public function getRecentFirewallActivity($limit, &$remainder) {
		$dateRange = wfActivityReport::getReportDateRange();
		$recent_firewall_activity = new wfRecentFirewallActivity(null, max(604800, $dateRange[1] - $dateRange[0]));
		$recent_firewall_activity->run();
		return $recent_firewall_activity->mostRecentActivity($limit, $remainder);
	}

	/**
	 * Returns list of files modified within given timeframe.
	 *
	 * @todo Add option to configure the regex used to filter files allowed in this list.
	 * @todo Add option to exclude directories (such as cache directories).
	 *
	 * @param string $directory Search for files within this directory
	 * @param int    $time_range One week
	 * @param int    $limit Max files to return in results
	 * @param int    $directory_limit Hard limit for number of files to search within a directory.
	 * @return array
	 */
	public function getRecentFilesModified($limit = 300, $directory = ABSPATH, $time_range = 604800, $directory_limit = 20000) {
		$recently_modified = new wfRecentlyModifiedFiles($directory);
		$recently_modified->run();
		return $recently_modified->mostRecentFiles($limit);
	}

	/**
	 * Remove entries older than a month in the IP log.
	 */
	public function rotateIPLog() {
		$table_wfBlockedIPLog = wfDB::networkTable('wfBlockedIPLog');
		$this->db->query(<<<SQL
DELETE FROM {$table_wfBlockedIPLog}
WHERE unixday < FLOOR(UNIX_TIMESTAMP(DATE_SUB(NOW(), interval 1 month)) / 86400)
SQL
		);
	}

	/**
	 * @param mixed $ip_address
	 * @param int|null $unixday
	 */
	public static function logBlockedIP($ip_address, $unixday = null, $type = null) {
		/** @var wpdb $wpdb */
		global $wpdb;
		
		//Possible values for $type: throttle, manual, brute, fakegoogle, badpost, country, advanced, blacklist, waf

		if (wfUtils::isValidIP($ip_address)) {
			$ip_bin = wfUtils::inet_pton($ip_address);
		} else {
			$ip_bin = $ip_address;
			$ip_address = wfUtils::inet_ntop($ip_bin);
		}
		
		$blocked_table = wfDB::networkTable('wfBlockedIPLog');

		$unixday_insert = 'FLOOR(UNIX_TIMESTAMP() / 86400)';
		if (is_int($unixday)) {
			$unixday_insert = absint($unixday);
		}
		
		if ($type === null) {
			$type = 'generic';
		}

		$country = wfUtils::IP2Country($ip_address);
		
		$ipHex = wfDB::binaryValueToSQLHex($ip_bin);
		$wpdb->query($wpdb->prepare(<<<SQL
INSERT INTO $blocked_table (IP, countryCode, blockCount, unixday, blockType)
VALUES ({$ipHex}, %s, 1, $unixday_insert, %s)
ON DUPLICATE KEY UPDATE blockCount = blockCount + 1
SQL
			, $country, $type));
	}

	/**
	 * @param $code
	 * @return string
	 */
	public function getCountryNameByCode($code) {
		static $wfBulkCountries;
		if (!isset($wfBulkCountries)) {
			include(dirname(__FILE__) . '/wfBulkCountries.php');
		}
		return array_key_exists($code, $wfBulkCountries) ? $wfBulkCountries[$code] : "";
	}

	/**
	 * @return wfActivityReportView
	 */
	public function toView() {
		return new wfActivityReportView('reports/activity-report', $this->getFullReport() + array(
				'limit' => $this->getLimit(),
			));
	}

	/**
	 * @return wfActivityReportView
	 */
	public function toWidgetView() {
		return new wfActivityReportView('reports/activity-report', $this->getWidgetReport() + array(
				'limit' => $this->getLimit(),
			));
	}

	/**
	 * @return wfActivityReportView
	 */
	public function toEmailView() {
		return new wfActivityReportView('reports/activity-report-email-inline', $this->getFullReport());
	}

	/**
	 * @param $email_addresses string|array
	 * @return bool
	 */
	public function sendReportViaEmail($email_addresses) {
		$shortSiteURL = preg_replace('/^https?:\/\//i', '', site_url());
		
		$content = $this->toEmailView()->__toString();
		
		$success = true;
		if (is_string($email_addresses)) { $email_addresses = explode(',', $email_addresses); }
		foreach ($email_addresses as $email) {
			$uniqueContent = str_replace('<!-- ##UNSUBSCRIBE## -->', wp_kses(sprintf(/* translators: URL to the WordPress admin panel. */ __('No longer an administrator for this site? <a href="%s" target="_blank">Click here</a> to stop receiving security alerts.', 'wordfence'), wfUtils::getSiteBaseURL() . '?_wfsf=removeAlertEmail&jwt=' . wfUtils::generateJWT(array('email' => $email))), array('a'=>array('href'=>array(), 'target'=>array()))), $content);
			if (!wp_mail($email, sprintf(/* translators: 1. Site URL. 2. Localized date. */ __('Wordfence activity for %1$s on %2$s', 'wordfence'), date_i18n(get_option('date_format')), $shortSiteURL), $uniqueContent, 'Content-Type: text/html')) {
				$success = false;
			}
		}
		
		return $success;
	}

	/**
	 * @return string
	 * @throws wfViewNotFoundException
	 */
	public function render() {
		return $this->toView()
			->render();
	}

	/**
	 * @return string
	 */
	public function __toString() {
		return $this->toView()
			->__toString();
	}

	/**
	 * @return int
	 */
	public function getLimit() {
		return $this->limit;
	}

	/**
	 * @param int $limit
	 */
	public function setLimit($limit) {
		$this->limit = $limit;
	}
}

class wfRecentFirewallActivity {
	private $activity = array();
	
	private $max_fetch = 2000;
	private $time_range = 604800;
	
	public function __construct($max_fetch = null, $time_range = null) {
		if ($max_fetch !== null) {
			$this->max_fetch = $max_fetch;
		}
		
		if ($time_range !== null) {
			$this->time_range = $time_range;
		}
	}
	
	public function run() {
		global $wpdb;
		
		$table_wfHits = wfDB::networkTable('wfHits');
		$results = $wpdb->get_results($wpdb->prepare(<<<SQL
SELECT attackLogTime, IP, URL, UA, actionDescription, actionData
FROM {$table_wfHits}
WHERE action = 'blocked:waf' AND attackLogTime > (UNIX_TIMESTAMP() - %d)
ORDER BY attackLogTime DESC
LIMIT %d
SQL
			, $this->time_range, $this->max_fetch));
		if ($results) {
			foreach ($results as &$row) {
				$actionData = json_decode($row->actionData, true);
				if (!is_array($actionData) || !isset($actionData['paramKey']) || !isset($actionData['paramValue'])) {
					continue;
				}
				
				if (isset($actionData['failedRules']) && $actionData['failedRules'] == 'blocked') {
					$row->longDescription = __("Blocked because the IP is blocklisted", 'wordfence');
				}
				else {
					$row->longDescription = sprintf(__("Blocked for %s", 'wordfence'), $row->actionDescription);
				}
				
				$paramKey = base64_decode($actionData['paramKey']);
				$paramValue = base64_decode($actionData['paramValue']);
				if (strlen($paramValue) > 100) {
					$paramValue = substr($paramValue, 0, 100) . '...';
				}
				
				if (preg_match('/([a-z0-9_]+\.[a-z0-9_]+)(?:\[(.+?)\](.*))?/i', $paramKey, $matches)) {
					switch ($matches[1]) {
						case 'request.queryString':
							$row->longDescription = sprintf(__('Blocked for %1$s in query string: %2$s = %3$s', 'wordfence'), $row->actionDescription, $matches[2], $paramValue);
							break;
						case 'request.body':
							$row->longDescription = sprintf(__('Blocked for %1$s in POST body: %2$s = %3$s', 'wordfence'), $row->actionDescription, $matches[2], $paramValue);
							break;
						case 'request.cookie':
							$row->longDescription = sprintf(__('Blocked for %1$s in cookie: %2$s = %3$s', 'wordfence'), $row->actionDescription, $matches[2], $paramValue);
							break;
						case 'request.fileNames':
							$row->longDescription = sprintf(__('Blocked for %1$s in file: %2$s = %3$s', 'wordfence'), $row->actionDescription, $matches[2], $paramValue);
							break;
					}
				}
			}
		}
		
		$this->activity = $results;
	}
	
	public function mostRecentActivity($limit, &$remainder = null) {
		if ($remainder !== null) {
			$remainder = count($this->activity) - $limit;
		}
		return array_slice($this->activity, 0, $limit);
	}
}

class wfRecentlyModifiedFiles extends wfDirectoryIterator {

	/**
	 * @var int
	 */
	private $time_range = 604800;

	/**
	 * @var array
	 */
	private $files = array();
	private $excluded_directories;

	/**
	 * @param string $directory
	 * @param int    $max_files_per_directory
	 * @param int    $max_iterations
	 * @param int    $time_range
	 */
	public function __construct($directory = ABSPATH, $max_files_per_directory = 20000, $max_iterations = 250000, $time_range = 604800) {
		parent::__construct($directory, $max_files_per_directory, $max_iterations);
		$this->time_range = $time_range;
		$excluded_directories = explode("\n", wfUtils::cleanupOneEntryPerLine(wfConfig::get('email_summary_excluded_directories', '')));
		$this->excluded_directories = array();
		foreach ($excluded_directories  as $index => $path) {
			if (($dir = realpath(ABSPATH . $path)) !== false) {
				$this->excluded_directories[$dir] = 1;
			}
		}
	}

	/**
	 * @param $dir
	 * @return bool
	 */
	protected function scan($dir) {
		if (!array_key_exists(realpath($dir), $this->excluded_directories)) {
			return parent::scan($dir);
		}
		return true;
	}


	/**
	 * @param string $file
	 */
	public function file($file) {
		$mtime = filemtime($file);
		if (time() - $mtime < $this->time_range) {
			$this->files[] = array($file, $mtime);
		}
	}

	/**
	 * @param int $limit
	 * @return array
	 */
	public function mostRecentFiles($limit = 300) {
		usort($this->files, array(
			$this,
			'_sortMostRecentFiles',
		));
		return array_slice($this->files, 0, $limit);
	}

	/**
	 * Sort in descending order.
	 *
	 * @param $a
	 * @param $b
	 * @return int
	 */
	private function _sortMostRecentFiles($a, $b) {
		if ($a[1] > $b[1]) {
			return -1;
		}
		if ($a[1] < $b[1]) {
			return 1;
		}
		return 0;
	}

	/**
	 * @return mixed
	 */
	public function getFiles() {
		return $this->files;
	}
}


class wfActivityReportView extends wfView {

	/**
	 * @param $file
	 * @return string
	 */
	public function displayFile($file) {
		$realPath = realpath($file);
		if (stripos($realPath, ABSPATH) === 0) {
			return substr($realPath, strlen(ABSPATH));
		}
		return $realPath;
	}

	/**
	 * @param null $unix_time
	 * @return string
	 */
	public function modTime($unix_time = null) {
		if ($unix_time === null) {
			$unix_time = time();
		}
		return wfUtils::formatLocalTime('F j, Y g:ia', $unix_time);
	}
	
	public function attackTime($unix_time = null) {
		if ($unix_time === null) {
			$unix_time = time();
		}
		return wfUtils::formatLocalTime('F j, Y', $unix_time) . "<br>" . wfUtils::formatLocalTime('g:ia', $unix_time);
	}
	
	public function displayIP($binaryIP) {
		$readableIP = wfUtils::inet_ntop($binaryIP);
		$country = wfUtils::countryCode2Name(wfUtils::IP2Country($readableIP));
		return "{$readableIP} (" . ($country ? $country : __('Unknown', 'wordfence')) . ")";
	}
}
}lib/menu_options.php000064400000060067150755146450010567 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
$waf = wfWAF::getInstance();
$d = new wfDashboard(); unset($d->countriesNetwork);
$firewall = new wfFirewall();
$scanner = wfScanner::shared();
$config = $waf->getStorageEngine();
$wafURL = wfPage::pageURL(wfPage::PAGE_FIREWALL);
$wafConfigURL = network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options#configureAutoPrepend');
$wafRemoveURL = network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options#removeAutoPrepend');
/** @var array $wafData */

$backPage = new wfPage(wfPage::PAGE_FIREWALL);
if (isset($_GET['source']) && wfPage::isValidPage($_GET['source'])) {
	$backPage = new wfPage($_GET['source']);
}
?>
<script type="application/javascript">
	(function($) {
		WFAD.wafData = <?php echo json_encode($wafData); ?>;
		WFAD.restoreWAFData = JSON.parse(JSON.stringify(WFAD.wafData)); //Copied into wafData when canceling changes

		$(function() {
			document.title = "<?php esc_attr_e('All Options', 'wordfence'); ?>" + " \u2039 " + WFAD.basePageName;
			
			WFAD.wafConfigPageRender();

			//Hash-based option block linking
			if (window.location.hash) {
				var hashes = WFAD.parseHashes();
				var hash = hashes[hashes.length - 1];
				var block = $('.wf-block[data-persistence-key="' + hash + '"]');
				if (block.length) {
					if (!block.hasClass('wf-active')) {
						block.find('.wf-block-content').slideDown({
							always: function() {
								block.addClass('wf-active');
								$('html, body').animate({
									scrollTop: block.offset().top - 100
								}, 1000);
							}
						});

						WFAD.ajax('wordfence_saveDisclosureState', {name: block.data('persistenceKey'), state: true}, function() {}, function() {}, true);
					}
					else {
						$('html, body').animate({
							scrollTop: block.offset().top - 100
						}, 1000);
					}

					history.replaceState('', document.title, window.location.pathname + window.location.search);
				}
			}
		});

		$(window).on('wfOptionsReset', function() {
			WFAD.wafData = JSON.parse(JSON.stringify(WFAD.restoreWAFData));
			WFAD.wafConfigPageRender();
		});
	})(jQuery);
</script>
<div class="wf-options-controls">
	<div class="wf-row">
		<div class="wf-col-xs-12">
			<?php
			$indexOptions = array(
				'wf-option-apiKey' => __('License Key', 'wordfence'),
				'wf-option-displayTopLevelOptions' => __('Display All Options menu item', 'wordfence'),
				'wf-option-displayTopLevelBlocking' => __('Display Blocking menu item', 'wordfence'),
				'wf-option-displayTopLevelLiveTraffic' => __('Display Live Traffic menu item', 'wordfence'),
				'wf-option-autoUpdate' => __('Update Wordfence automatically when a new version is released?', 'wordfence'),
				'wf-option-alertEmails' => __('Where to email alerts', 'wordfence'),
				'wf-option-howGetIPs' => __('How does Wordfence get IPs', 'wordfence'),
				'wf-option-howGetIPs-trusted-proxies' => __('Trusted Proxies', 'wordfence'),
				'wf-option-enableRemoteIpLookup' => __('Look up visitor IP locations via Wordfence servers', 'wordfence'),
				'wf-option-other-hideWPVersion' => __('Hide WordPress version', 'wordfence'),
				'wf-option-disableCodeExecutionUploads' => __('Disable Code Execution for Uploads directory', 'wordfence'),
				'wf-option-liveActivityPauseEnabled' => __('Pause live updates when window loses focus', 'wordfence'),
				'wf-option-actUpdateInterval' => __('Update interval in seconds', 'wordfence'),
				'wf-option-other-bypassLitespeedNoabort' => __('Bypass the LiteSpeed "noabort" check', 'wordfence'),
				'wf-option-deleteTablesOnDeact' => __('Delete Wordfence tables and data on deactivation', 'wordfence'),
				'wf-option-notification-updatesNeeded' => __('Updates Needed (Plugin, Theme, or Core)', 'wordfence'),
				'wf-option-notification-securityAlerts' => __('Security Alerts', 'wordfence'),
				'wf-option-notification-promotions' => __('Promotions', 'wordfence'),
				'wf-option-notification-blogHighlights' => __('Blog Highlights', 'wordfence'),
				'wf-option-notification-productUpdates' => __('Product Updates', 'wordfence'),
				'wf-option-notification-scanStatus' => __('Scan Status', 'wordfence'),
				'wf-option-alertOn-update' => __('Email me when Wordfence is automatically updated', 'wordfence'),
				'wf-option-alertOn-wordfenceDeactivated' => __('Email me if Wordfence is deactivated', 'wordfence'),
				'wf-option-alertOn-wafDeactivated' => __('Email me if the Wordfence Web Application Firewall is turned off', 'wordfence'),
				'wf-option-alertOn-scanIssues' => __('Alert me with scan results of this severity level or greater', 'wordfence'),
				'wf-option-alertOn-block' => __('Alert when an IP address is blocked', 'wordfence'),
				'wf-option-alertOn-loginLockout' => __('Alert when someone is locked out from login', 'wordfence'),
				'wf-option-alertOn-lostPasswdForm' => __('Alert when the "lost password" form is used for a valid user', 'wordfence'),
				'wf-option-alertOn-adminLogin' => __('Alert me when someone with administrator access signs in', 'wordfence'),
				'wf-option-alertOn-firstAdminLoginOnly' => __('Only alert me when that administrator signs in from a new device', 'wordfence'),
				'wf-option-alertOn-nonAdminLogin' => __('Alert me when a non-admin user signs in', 'wordfence'),
				'wf-option-alertOn-firstNonAdminLoginOnly' => __('Only alert me when that user signs in from a new device', 'wordfence'),
				'wf-option-wafAlertOnAttacks' => __('Alert me when there\'s a large increase in attacks detected on my site', 'wordfence'),
				'wf-option-alert-maxHourly' => __('Maximum email alerts to send per hour', 'wordfence'),
				'wf-option-email-summary-enabled' => __('Enable email summary', 'wordfence'),
				'wf-option-email-summary-excluded-directories' => __('List of directories to exclude from recently modified file list', 'wordfence'),
				'wf-option-email-summary-dashboard-widget-enabled' => __('Enable activity report widget on the WordPress dashboard', 'wordfence'),
				'wf-option-wafStatus' => __('Web Application Firewall Status', 'wordfence'),
				'wf-option-protectionMode' => __('Web Application Firewall Protection Level', 'wordfence'),
				'wf-option-disableWAFBlacklistBlocking' => __('Real-Time IP Blocklist', 'wordfence'),
				'wf-option-disableWAFIPBlocking' => __('Delay IP and Country blocking until after WordPress and plugins have loaded (only process firewall rules early)', 'wordfence'),
				'wf-option-whitelisted' => __('Allowlisted IP addresses that bypass all rules', 'wordfence'),
				'wf-option-whitelistedServices' => __('Allowlisted services', 'wordfence'),
				'wf-option-bannedURLs' => __('Immediately block IPs that access these URLs', 'wordfence'),
				'wf-option-wafAlertWhitelist' => __('Ignored IP addresses for Wordfence Web Application Firewall alerting', 'wordfence'),
				'wf-option-wafRules' => __('Web Application Firewall Rules', 'wordfence'),
				'wf-option-loginSecurityEnabled' => __('Enable brute force protection', 'wordfence'),
				'wf-option-loginSec-maxFailures' => __('Lock out after how many login failures', 'wordfence'),
				'wf-option-loginSec-maxForgotPasswd' => __('Lock out after how many forgot password attempts', 'wordfence'),
				'wf-option-loginSec-countFailMins' => __('Count failures over what time period', 'wordfence'),
				'wf-option-loginSec-lockoutMins' => __('Amount of time a user is locked out', 'wordfence'),
				'wf-option-loginSec-lockInvalidUsers' => __('Immediately lock out invalid usernames', 'wordfence'),
				'wf-option-loginSec-userBlacklist' => __('Immediately block the IP of users who try to sign in as these usernames', 'wordfence'),
				'wf-option-loginSec-strongPasswds-enabled' => __('Enforce strong passwords', 'wordfence'),
				'wf-option-loginSec-breachPasswds-enabled' => __('Prevent the use of passwords leaked in data breaches', 'wordfence'),
				'wf-option-loginSec-maskLoginErrors' => __('Don\'t let WordPress reveal valid users in login errors', 'wordfence'),
				'wf-option-loginSec-blockAdminReg' => __('Prevent users registering "admin" username if it doesn\'t exist', 'wordfence'),
				'wf-option-loginSec-disableAuthorScan' => __('Prevent discovery of usernames through "/?author=N" scans, the oEmbed API, the WordPress REST API, and WordPress XML Sitemaps', 'wordfence'),
				'wf-option-loginSec-disableApplicationPasswords' => __('Disable WordPress application passwords', 'wordfence'),
				'wf-option-other-blockBadPOST' => __('Block IPs who send POST requests with blank User-Agent and Referer', 'wordfence'),
				'wf-option-blockCustomText' => __('Custom text shown on block pages', 'wordfence'),
				'wf-option-other-pwStrengthOnUpdate' => __('Check password strength on profile update', 'wordfence'),
				'wf-option-other-WFNet' => __('Participate in the Real-Time Wordfence Security Network', 'wordfence'),
				'wf-option-firewallEnabled' => __('Enable Rate Limiting and Advanced Blocking', 'wordfence'),
				'wf-option-neverBlockBG' => __('How should we treat Google\'s crawlers', 'wordfence'),
				'wf-option-maxGlobalRequests' => __('If anyone\'s requests exceed', 'wordfence'),
				'wf-option-maxRequestsCrawlers' => __('If a crawler\'s page views exceed', 'wordfence'),
				'wf-option-max404Crawlers' => __('If a crawler\'s pages not found (404s) exceed', 'wordfence'),
				'wf-option-maxRequestsHumans' => __('If a human\'s page views exceed', 'wordfence'),
				'wf-option-max404Humans' => __('If a human\'s pages not found (404s) exceed', 'wordfence'),
				'wf-option-blockedTime' => __('How long is an IP address blocked when it breaks a rule', 'wordfence'),
				'wf-option-allowed404s' => __('Allowlisted 404 URLs', 'wordfence'),
				'wf-option-wafWhitelist' => __('Web Application Firewall Allowlisted URLs', 'wordfence'),
				'wf-option-ajaxWatcherDisabled-front' => __('Monitor background requests from an administrator\'s web browser for false positives (Front-end Website)', 'wordfence'),
				'wf-option-ajaxWatcherDisabled-admin' => __('Monitor background requests from an administrator\'s web browser for false positives (Admin Panel)', 'wordfence'),
				'wf-option-cbl-action' => __('What to do when we block someone visiting from a blocked country', 'wordfence'),
				'wf-option-cbl-redirURL' => __('URL to redirect blocked countries to', 'wordfence'),
				'wf-option-cbl-loggedInBlocked' => __('Block countries even if they are logged in', 'wordfence'),
				'wf-option-cbl-bypassRedirURL' => __('If user from a blocked country hits the relative URL ____ then redirect that user to ____ and set a cookie that will bypass all country blocking', 'wordfence'),
				'wf-option-cbl-bypassViewURL' => __('If user who is allowed to access the site views the relative URL ____ then set a cookie that will bypass country blocking in future in case that user hits the site from a blocked country', 'wordfence'),
				'wf-option-scheduledScansEnabled' => __('Schedule Wordfence Scans', 'wordfence'),
				'wf-option-scanType' => __('Scan Type', 'wordfence'),
				'wf-option-scansEnabled-checkGSB' => __('Check if this website is on a domain blocklist', 'wordfence'),
				'wf-option-spamvertizeCheck' => __('Check if this website is being &quot;Spamvertised&quot;', 'wordfence'),
				'wf-option-checkSpamIP' => __('Check if this website IP is generating spam', 'wordfence'),
				'wf-option-scansEnabled-checkHowGetIPs' => __('Scan for misconfigured How does Wordfence get IPs', 'wordfence'),
				'wf-option-scansEnabled-checkReadableConfig' => __('Scan for publicly accessible configuration, backup, or log files', 'wordfence'),
				'wf-option-scansEnabled-suspectedFiles' => __('Scan for publicly accessible quarantined files', 'wordfence'),
				'wf-option-scansEnabled-core' => __('Scan core files against repository versions for changes', 'wordfence'),
				'wf-option-scansEnabled-themes' => __('Scan theme files against repository versions for changes', 'wordfence'),
				'wf-option-scansEnabled-plugins' => __('Scan plugin files against repository versions for changes', 'wordfence'),
				'wf-option-scansEnabled-coreUnknown' => __('Scan wp-admin and wp-includes for files not bundled with WordPress', 'wordfence'),
				'wf-option-scansEnabled-malware' => __('Scan for signatures of known malicious files', 'wordfence'),
				'wf-option-scansEnabled-fileContents' => __('Scan file contents for backdoors, trojans and suspicious code', 'wordfence'),
				'wf-option-scansEnabled-fileContentsGSB' => __('Scan file contents for malicious URLs', 'wordfence'),
				'wf-option-scansEnabled-posts' => __('Scan posts for known dangerous URLs and suspicious content', 'wordfence'),
				'wf-option-scansEnabled-comments' => __('Scan comments for known dangerous URLs and suspicious content', 'wordfence'),
				'wf-option-scansEnabled-suspiciousOptions' => __('Scan WordPress core, plugin, and theme options for known dangerous URLs and suspicious content', 'wordfence'),
				'wf-option-scansEnabled-oldVersions' => __('Scan for out of date, abandoned, and vulnerable plugins, themes, and WordPress versions', 'wordfence'),
				'wf-option-scansEnabled-suspiciousAdminUsers' => __('Scan for suspicious admin users created outside of WordPress', 'wordfence'),
				'wf-option-scansEnabled-passwds' => __('Check the strength of passwords', 'wordfence'),
				'wf-option-scansEnabled-diskSpace' => __('Monitor disk space', 'wordfence'),
				'wf-option-scansEnabled-wafStatus' => __('Monitor Web Application Firewall status', 'wordfence'),
				'wf-option-other-scanOutside' => __('Scan files outside your WordPress installation', 'wordfence'),
				'wf-option-scansEnabled-scanImages' => __('Scan images, binary, and other files as if they were executable', 'wordfence'),
				'wf-option-lowResourceScansEnabled' => __('Use low resource scanning (reduces server load by lengthening the scan duration)', 'wordfence'),
				'wf-option-scan-maxIssues' => __('Limit the number of issues sent in the scan results email', 'wordfence'),
				'wf-option-scan-maxDuration' => __('Time limit that a scan can run in seconds', 'wordfence'),
				'wf-option-maxMem' => __('How much memory should Wordfence request when scanning', 'wordfence'),
				'wf-option-maxExecutionTime' => __('Maximum execution time for each scan stage', 'wordfence'),
				'wf-option-scan-exclude' => __('Exclude files from scan that match these wildcard patterns', 'wordfence'),
				'wf-option-scan-include-extra' => __('Additional scan signatures', 'wordfence'),
				'wf-option-scan-force-ipv4-start' => __('Use only IPv4 to start scans', 'wordfence'),
				'wf-option-scan-max-resume-attempts' => __('Maximum number of attempts to resume each scan stage', 'wordfence'),
				'wf-option-liveTrafficEnabled' => __('Traffic logging mode (Live Traffic)', 'wordfence'),
				'wf-option-liveTraf-ignorePublishers' => __('Don\'t log signed-in users with publishing access', 'wordfence'),
				'wf-option-liveTraf-ignoreUsers' => __('List of comma separated usernames to ignore', 'wordfence'),
				'wf-option-liveTraf-ignoreIPs' => __('List of comma separated IP addresses to ignore', 'wordfence'),
				'wf-option-liveTraf-ignoreUA' => __('Browser user-agent to ignore', 'wordfence'),
				'wf-option-liveTraf-maxRows' => __('Amount of Live Traffic data to store (number of rows)', 'wordfence'),
				'wf-option-liveTraf-maxAge' => __('Maximum days to keep Live Traffic data', 'wordfence'),
				'wf-option-exportOptions' => __('Export this site\'s Wordfence options for import on another site', 'wordfence'),
				'wf-option-importOptions' => __('Import Wordfence options from another site using a token', 'wordfence'),
			);
			
			if (wfCredentialsController::useLegacy2FA()) {
				$indexOptions['wf-option-loginSec-requireAdminTwoFactor'] = __('Require Cellphone Sign-in for all Administrators', 'wordfence');
				$indexOptions['wf-option-loginSec-enableSeparateTwoFactor'] = __('Enable Separate Prompt for Two Factor Code', 'wordfence');
			}
			
			$indexOptions = array_merge($indexOptions, wfModuleController::shared()->optionIndexes);
			
			echo wfView::create('options/block-all-options-controls', array(
				'showIcon' => false,
				'indexOptions' => $indexOptions,
				'restoreDefaultsSection' => wfConfig::OPTIONS_TYPE_ALL,
				'restoreDefaultsMessage' => __('Are you sure you want to restore the default settings? This will undo any custom changes you have made to the options on this page. If you have manually disabled any rules or added any custom allowlisted URLs, those changes will not be overwritten.', 'wordfence'),
			))->render();
			?>
		</div>
	</div>
</div>
<div class="wf-options-controls-spacer"></div>
<?php
if (!wfOnboardingController::shouldShowAttempt3() && wfConfig::get('touppPromptNeeded')) {
	echo wfView::create('gdpr/disabled-overlay')->render();
	echo wfView::create('gdpr/banner')->render();
}
?>
<div class="wrap wordfence">
	<div class="wf-container-fluid">
		<?php
		if (function_exists('network_admin_url') && is_multisite()) {
			$firewallURL = network_admin_url('admin.php?page=WordfenceWAF#top#waf');
			$blockingURL = network_admin_url('admin.php?page=WordfenceWAF#top#blocking');
		}
		else {
			$firewallURL = admin_url('admin.php?page=WordfenceWAF#top#waf');
			$blockingURL = admin_url('admin.php?page=WordfenceWAF#top#blocking');
		}
		?>
		<div class="wf-row">
			<div class="wf-col-xs-12">
				<div class="wp-header-end"></div>
			</div>
		</div>
		<div class="wf-row">
			<div class="<?php echo wfStyle::contentClasses(); ?>">
				<div id="wf-all-options" class="wf-fixed-tab-content">
					<?php
					$stateKeys = array(
						'wf-unified-global-options-license',
						'wf-unified-global-options-view-customization',
						'wf-unified-global-options-general',
						'wf-unified-global-options-dashboard',
						'wf-unified-global-options-alert',
						'wf-unified-global-options-email-summary',
						'wf-unified-waf-options-basic',
						'wf-unified-waf-options-advanced',
						'wf-unified-waf-options-bruteforce',
						'wf-unified-waf-options-ratelimiting',
						'wf-unified-waf-options-whitelisted',
						'wf-unified-blocking-options-country',
						'wf-unified-scanner-options-schedule',
						'wf-unified-scanner-options-basic',
						'wf-unified-scanner-options-general',
						'wf-unified-scanner-options-performance',
						'wf-unified-scanner-options-custom',
						'wf-unified-2fa-options',
						'wf-unified-live-traffic-options',
					);
					
					echo wfView::create('options/options-title', array(
						'title' => __('All Options', 'wordfence'),
						'stateKeys' => $stateKeys,
						'showIcon' => true,
					))->render();
					?>
					
					<p><?php esc_html_e('These options are also available throughout the plugin pages, in the relevant sections. This page is provided for easier setup for experienced Wordfence users.', 'wordfence'); ?></p>
					
					<?php
					echo wfView::create('common/section-subtitle', array(
						'title' => __('Wordfence Global Options', 'wordfence'),
						'showIcon' => false,
					))->render();
					
					echo wfView::create('dashboard/options-group-license', array(
						'stateKey' => 'wf-unified-global-options-license',
					))->render();
					
					echo wfView::create('dashboard/options-group-view-customization', array(
						'stateKey' => 'wf-unified-global-options-view-customization',
					))->render();
					
					echo wfView::create('dashboard/options-group-general', array(
						'stateKey' => 'wf-unified-global-options-general',
					))->render();
					
					echo wfView::create('dashboard/options-group-dashboard', array(
						'stateKey' => 'wf-unified-global-options-dashboard',
					))->render();
					
					echo wfView::create('dashboard/options-group-alert', array(
						'stateKey' => 'wf-unified-global-options-alert',
					))->render();
					
					echo wfView::create('dashboard/options-group-email-summary', array(
						'stateKey' => 'wf-unified-global-options-email-summary',
					))->render();
					?>
					
					<?php
					echo wfView::create('common/section-subtitle', array(
						'title' => __('Firewall Options', 'wordfence'),
						'showIcon' => false,
					))->render();
					
					echo wfView::create('waf/options-group-basic-firewall', array(
						'firewall' => $firewall,
						'waf' => $waf,
						'stateKey' => 'wf-unified-waf-options-basic',
					))->render();
					
					echo wfView::create('waf/options-group-advanced-firewall', array(
						'firewall' => $firewall,
						'waf' => $waf,
						'stateKey' => 'wf-unified-waf-options-advanced',
					))->render();
					
					echo wfView::create('waf/options-group-brute-force', array(
						'firewall' => $firewall,
						'waf' => $waf,
						'stateKey' => 'wf-unified-waf-options-bruteforce',
					))->render();
					
					echo wfView::create('waf/options-group-rate-limiting', array(
						'firewall' => $firewall,
						'waf' => $waf,
						'stateKey' => 'wf-unified-waf-options-ratelimiting',
					))->render();
					
					echo wfView::create('waf/options-group-whitelisted', array(
						'firewall' => $firewall,
						'waf' => $waf,
						'stateKey' => 'wf-unified-waf-options-whitelisted',
					))->render();
					?>

					<?php
					echo wfView::create('common/section-subtitle', array(
						'title' => __('Blocking Options', 'wordfence'),
						'showIcon' => false,
					))->render();
					
					echo wfView::create('blocking/options-group-advanced-country', array(
						'stateKey' => 'wf-unified-blocking-options-country',
					))->render();
					?>
					
					<?php
					echo wfView::create('common/section-subtitle', array(
						'title' => __('Scan Options', 'wordfence'),
						'showIcon' => false,
					))->render();
					
					echo wfView::create('scanner/options-group-scan-schedule', array(
						'scanner' => $scanner,
						'stateKey' => 'wf-unified-scanner-options-schedule',
					))->render();
					
					echo wfView::create('scanner/options-group-basic', array(
						'scanner' => $scanner,
						'stateKey' => 'wf-unified-scanner-options-basic',
					))->render();
					
					echo wfView::create('scanner/options-group-general', array(
						'scanner' => $scanner,
						'stateKey' => 'wf-unified-scanner-options-general',
					))->render();
					
					echo wfView::create('scanner/options-group-performance', array(
						'scanner' => $scanner,
						'stateKey' => 'wf-unified-scanner-options-performance',
					))->render();
					
					echo wfView::create('scanner/options-group-advanced', array(
						'scanner' => $scanner,
						'stateKey' => 'wf-unified-scanner-options-custom',
					))->render();
					?>

					<?php
					echo wfView::create('common/section-subtitle', array(
						'title' => __('Tool Options', 'wordfence'),
						'showIcon' => false,
					))->render();
					
					if (wfCredentialsController::useLegacy2FA()) {
						echo wfView::create('tools/options-group-2fa', array(
							'stateKey' => 'wf-unified-2fa-options',
						))->render();
					}
					
					echo wfView::create('tools/options-group-live-traffic', array(
						'stateKey' => 'wf-unified-live-traffic-options',
						'hideShowMenuItem' => true,
					))->render();
					?>

					<div class="wf-row">
						<div class="wf-col-xs-12">
							<div class="wf-block wf-always-active" data-persistence-key="">
								<div class="wf-block-header">
									<div class="wf-block-header-content">
										<div class="wf-block-title">
											<strong><?php esc_html_e('Import/Export Options', 'wordfence'); ?></strong>
										</div>
									</div>
								</div>
								<div class="wf-block-content">
									<ul class="wf-block-list">
										<li>
											<ul class="wf-flex-horizontal wf-flex-vertical-xs wf-flex-full-width wf-add-top wf-add-bottom">
												<li><?php esc_html_e('Importing and exporting of options is available on the Tools page', 'wordfence'); ?></li>
												<li class="wf-right wf-left-xs wf-padding-add-top-xs-small">
													<a href="<?php echo esc_url(network_admin_url('admin.php?page=WordfenceTools&subpage=importexport')); ?>" class="wf-btn wf-btn-primary wf-btn-callout-subtle" id="wf-export-options"><?php esc_html_e('Import/Export Options', 'wordfence'); ?></a>
												</li>
											</ul>
											<input type="hidden" id="wf-option-exportOptions">
											<input type="hidden" id="wf-option-importOptions">
										</li>
									</ul>
								</div>
							</div>
						</div>
					</div> <!-- end import options -->
					<?php
					$moduleOptionBlocks = wfModuleController::shared()->optionBlocks;
					foreach ($moduleOptionBlocks as $b) {
						echo $b;
					}
					?>
				</div> <!-- end options block -->
			</div> <!-- end content block -->
		</div> <!-- end row -->
	</div> <!-- end container -->
</div>lib/wfHelperBin.php000064400000003737150755146450010256 0ustar00<?php

class wfHelperBin {

	/**
	 * @param string $bin1
	 * @param string $bin2
	 * @return mixed
	 */
	public static function addbin2bin($bin1, $bin2) {
		if (strlen($bin1) % 4 != 0) {
			$bin1 = str_repeat("\0", 4 - (strlen($bin1) % 4)) . $bin1;
		}
		if (strlen($bin2) % 4 != 0) {
			$bin2 = str_repeat("\0", 4 - (strlen($bin2) % 4)) . $bin2;
		}

		$bin1_ints = array_reverse(array_values(unpack('N*', $bin1)));
		$bin2_ints = array_reverse(array_values(unpack('N*', $bin2)));
		$return = array();
		$carries = 0;
		for ($i=0; $i < max(count($bin1_ints), count($bin2_ints)); $i++) {
			$int1 = array_key_exists($i, $bin1_ints) ? $bin1_ints[$i] : 0;
			$int2 = array_key_exists($i, $bin2_ints) ? $bin2_ints[$i] : 0;
			$val = $int1 + $int2 + $carries;
			if ($carries > 0) {
				$carries = 0;
			}
			if ($val >= 0x100000000) {
				$val -= 0x100000000;
				$carries++;
			}
			$return[] = $val;
		}
		if ($carries) {
			$return[] += $carries;
		}
		$return = array_reverse($return);
		array_unshift($return, 'N*');
		$return = call_user_func_array('pack', $return);
		$return = ltrim($return, "\x00");
		return strlen($return) == 0 ? "\x00" : $return;
	}

	/**
	 * Convert binary string to the 10101's representation.
	 *
	 * @param string $string
	 * @return string
	 */
	public static function bin2str($string) {
		$return = '';
		for ($i = 0; $i < strlen($string); $i++) {
			$return .= str_pad(decbin(ord($string[$i])), 8, '0', STR_PAD_LEFT);
		}
		$return = ltrim($return, '0');
		return strlen($return) == 0 ? '0' : $return;
	}

	/**
	 * Convert 10101's representation back to the binary data.
	 *
	 * @param string $string
	 * @return string
	 */
	public static function str2bin($string) {
		if (strlen($string) % 32 > 0) {
			$string = str_repeat('0', 32 - (strlen($string) % 32)) . $string;
		}
		$ints = str_split($string, 32);
		$return = '';
		foreach ($ints as $int) {
			$return .= pack('N', bindec($int));
		}
		$return = ltrim($return, "\0");
		return strlen($return) == 0 ? "\0" : $return;
	}
}lib/wfCrawl.php000064400000015102150755146450007443 0ustar00<?php
require_once(dirname(__FILE__) . '/wfUtils.php');
class wfCrawl {
	const GOOGLE_BOT_VERIFIED = 'verified';
	const GOOGLE_BOT_FAKE = 'fakeBot';
	const GOOGLE_BOT_UNDETERMINED = 'undetermined';
	
	public static function isCrawler($UA){
		$browscap = new wfBrowscap();
		$b = $browscap->getBrowser($UA);
		if (!$b || $b['Parent'] == 'DefaultProperties') {
			$IP = wfUtils::getIP(); 
			return !wfLog::isHumanRequest($IP, $UA);
		}
		else if (isset($b['Crawler']) && $b['Crawler']) {
			return true;
		}
		
		return false;
	}
	public static function verifyCrawlerPTR($hostPattern, $IP){
		$table = wfDB::networkTable('wfCrawlers');
		$db = new wfDB();
		$IPn = wfUtils::inet_pton($IP);
		$ipHex = wfDB::binaryValueToSQLHex(wfUtils::inet_pton($IPn));
		$status = $db->querySingle("select status from $table where IP={$ipHex} and patternSig=UNHEX(MD5('%s')) and lastUpdate > unix_timestamp() - %d", $hostPattern, WORDFENCE_CRAWLER_VERIFY_CACHE_TIME);
		if($status){
			if($status == 'verified'){
				return true;
			} else {
				return false;
			}
		}
		$host = wfUtils::reverseLookup($IP);
		if(! $host){ 
			$db->queryWrite("insert into $table (IP, patternSig, status, lastUpdate, PTR) values ({$ipHex}, UNHEX(MD5('%s')), '%s', unix_timestamp(), '%s') ON DUPLICATE KEY UPDATE status='%s', lastUpdate=unix_timestamp(), PTR='%s'", $hostPattern, 'noPTR', '', 'noPTR', '');
			return false; 
		}
		if(preg_match($hostPattern, $host)){
			$resultIPs = wfUtils::resolveDomainName($host);
			$addrsMatch = false;
			foreach($resultIPs as $resultIP){
				if($resultIP == $IP){
					$addrsMatch = true;
					break;
				}
			}
			if($addrsMatch){
				$db->queryWrite("insert into $table (IP, patternSig, status, lastUpdate, PTR) values ({$ipHex}, UNHEX(MD5('%s')), '%s', unix_timestamp(), '%s') ON DUPLICATE KEY UPDATE status='%s', lastUpdate=unix_timestamp(), PTR='%s'", $hostPattern, 'verified', $host, 'verified', $host);
				return true;
			} else {
				$db->queryWrite("insert into $table (IP, patternSig, status, lastUpdate, PTR) values ({$ipHex}, UNHEX(MD5('%s')), '%s', unix_timestamp(), '%s') ON DUPLICATE KEY UPDATE status='%s', lastUpdate=unix_timestamp(), PTR='%s'", $hostPattern, 'fwdFail', $host, 'fwdFail', $host);
				return false;
			}
		} else {
			$db->queryWrite("insert into $table (IP, patternSig, status, lastUpdate, PTR) values ({$ipHex}, UNHEX(MD5('%s')), '%s', unix_timestamp(), '%s') ON DUPLICATE KEY UPDATE status='%s', lastUpdate=unix_timestamp(), PTR='%s'", $hostPattern, 'badPTR', $host, 'badPTR', $host);
			return false;
		}
	}
	public static function isGooglebot($userAgent = null){
		if ($userAgent === null) {
			$userAgent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '';
		}
		return (bool) preg_match('/Googlebot\/\d\.\d/', $userAgent);
	}
	public static function isGoogleCrawler($userAgent = null){
		if ($userAgent === null) {
			$userAgent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '';
		}
		foreach (self::$googPat as $pat) {
			if (preg_match($pat . 'i', $userAgent)) {
				return true;
			}
		}
		return false;
	}
	private static $googPat = array(
'@^Mozilla/5\\.0 \\(.*Google Keyword Tool.*\\)$@',
'@^Mozilla/5\\.0 \\(.*Feedfetcher\\-Google.*\\)$@',
'@^Feedfetcher\\-Google\\-iGoogleGadgets.*$@',
'@^searchbot admin\\@google\\.com$@',
'@^Google\\-Site\\-Verification.*$@',
'@^Google OpenSocial agent.*$@',
'@^.*Googlebot\\-Mobile/2\\..*$@',
'@^AdsBot\\-Google\\-Mobile.*$@',
'@^google \\(.*Enterprise.*\\)$@',
'@^Mediapartners\\-Google.*$@',
'@^GoogleFriendConnect.*$@',
'@^googlebot\\-urlconsole$@',
'@^.*Google Web Preview.*$@',
'@^Feedfetcher\\-Google.*$@',
'@^AppEngine\\-Google.*$@',
'@^Googlebot\\-Video.*$@',
'@^Googlebot\\-Image.*$@',
'@^Google\\-Sitemaps.*$@',
'@^Googlebot/Test.*$@',
'@^Googlebot\\-News.*$@',
'@^.*Googlebot/2\\.1.*$@',
'@^AdsBot\\-Google.*$@',
'@^Google$@'
	);


	/**
	 * Has correct user agent and PTR record points to .googlebot.com domain.
	 *
	 * @param string|null $ip
	 * @param string|null $ua
	 * @return bool
	 */
	public static function isVerifiedGoogleCrawler($ip = null, $ua = null) {
		static $verified;
		if (!isset($verified)) {
			$verified = array();
		}
		if ($ip === null) {
			$ip = wfUtils::getIP();
		}
		
		if ($ip === null || $ip === false) { //Likely a CLI execution
			return false;
		}
		
		if (array_key_exists($ip, $verified)) {
			return $verified[$ip];
		}
		if (self::isGoogleCrawler($ua)) {
			if (self::verifyCrawlerPTR(wordfence::getLog()->getGooglePattern(), $ip)) {
				$verified[$ip] = true;
				return $verified[$ip];
			}
			$noc1Status = self::verifyGooglebotViaNOC1($ip);
			if ($noc1Status == self::GOOGLE_BOT_VERIFIED) {
				$verified[$ip] = true;
				return $verified[$ip];
			}
			else if ($noc1Status == self::GOOGLE_BOT_FAKE) {
				$verified[$ip] = false;
				return $verified[$ip];
			}
			
			return true; //We were unable to successfully validate Googlebot status so default to being permissive
		}
		$verified[$ip] = false;
		return $verified[$ip];
	}

	/**
	 * Attempts to verify whether an IP claiming to be Googlebot is actually Googlebot.
	 * 
	 * @param string|null $ip
	 * @return string
	 */
	public static function verifyGooglebotViaNOC1($ip = null) {
		$table = wfDB::networkTable('wfCrawlers');
		if ($ip === null) {
			$ip = wfUtils::getIP();
		}
		$db = new wfDB();
		$IPn = wfUtils::inet_pton($ip);
		$ipHex = wfDB::binaryValueToSQLHex($IPn);
		$patternSig = 'googlenoc1';
		$status = $db->querySingle("select status from $table
				where IP={$ipHex}
				and patternSig=UNHEX(MD5('%s'))
				and lastUpdate > unix_timestamp() - %d",
				$patternSig,
				WORDFENCE_CRAWLER_VERIFY_CACHE_TIME);
		if ($status === 'verified') {
			return self::GOOGLE_BOT_VERIFIED;
		} else if ($status === 'fakeBot') {
			return self::GOOGLE_BOT_FAKE;
		}

		$api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion());
		try {
			$data = $api->call('verify_googlebot', array(
				'ip' => $ip,
			));
			if (is_array($data) && !empty($data['verified'])) {
				// Cache results
				$db->queryWrite("INSERT INTO {$table} (IP, patternSig, status, lastUpdate) VALUES ({$ipHex}, UNHEX(MD5('%s')), '%s', unix_timestamp()) ON DUPLICATE KEY UPDATE status = VALUES(status), lastUpdate = VALUES(lastUpdate)", $patternSig, 'verified');
				return self::GOOGLE_BOT_VERIFIED;
			} else {
				$db->queryWrite("INSERT INTO {$table} (IP, patternSig, status, lastUpdate) VALUES ({$ipHex}, UNHEX(MD5('%s')), '%s', unix_timestamp()) ON DUPLICATE KEY UPDATE status = VALUES(status), lastUpdate = VALUES(lastUpdate)", $patternSig, 'fakeBot');
				self::GOOGLE_BOT_FAKE;
			}
		} catch (Exception $e) {
			// Do nothing, bail
		}
		return self::GOOGLE_BOT_UNDETERMINED;
	}
}
lib/GeoLite2-Country.mmdb000064400030656011150755146450011256 0ustar00@
@�!������u�=	@
@@@
@@@@@@@@@@@@@@@@@@@ @!@"@#@$@%@&@'@(@)@*@+@,@-@.@/@0@1@2@3@4@5@6@7@8@9@:@;@<@=@>@?@@@A@B@C@D@E@F@G@H@I@J@K@L@M@N@O@P@Q�.R@S@T@U@V@W@X@Y@Z@[@\@]@^@_@`@a��b�Xc��d=]e%�f
�g�@hiCj1k�l�m�n�o�p�qxr@&sAt@&uAvAewAB\AyBaBaz{Ba|BaBa}~BaBa�Ba�Ba�BaBa��BaBa�Ba�@Ba�Ba�@&�A�A���A�AA��B\�B\�B\�B\�B\�B\�B�B�B\A�A�AC��A�Ba�A�A�A���AA�AAe�A�AADN�E�@&�Ba�A�A�A���A�AAeA�A�AADN�A��AEz�E��Ba�A�A�AA��AA�EA�AE���EBa@&�/�����@&Ez�F����������F��GF��F�F�G��F����GF�GF��F��GtGF����F��F��F��F��F��F��F�F���F�F��F�GF���F�G�F����F��F�F���F��F��F�F��F��F���F��F�F�G�F��F���F�G�F��H �H ��H �H H H H H H H H H H 	H 
H H-H H 
H H H H H H H H H H H H H @EH:HGAeAeABa Ba!BaBa"Ba#Ba$Ba%&Ba'Ba(Ba)Ba*Ba+Ba,Ba-Ba.BaBaH�0AAH�263A4@&5AH:@&E�78Ae@&9A:;A<A=AA>?A@AAABAIKAD�AeEFXH GH HIH H JKH H LMH H NH OH PH QRH SH H TUH H VH WH I�YqZAE�[\g]b^`Ae_I�KAeaAeK�cedAeK�AefLAeK�hBailAejkAeAeK�mpnoAeK�AeK�AeL�rAAstEMuv~wMMxyMz|{MMM�M}M�MM���M�MM�MM������MM�MM��M�MM�M�M��MM�M�M��M�M�MMM��E��E�A��A�AH E��	v�	g�	;������L�M�L�L���L��L�L��L���L�L���L��L�L��L��L���L�L���L�L���L�L��L�@�M���G���P�������N��N+N;N�N����OEN�OTN;�N;�������N;OcN;Oc��N;OcN;��OcN;Oc����N;OcN;Oc�N;N;�OcN;OqN������O�P}NP�Oc�P}Q�N��N;NN;��������N;��N;N;��N;�N;N;�N;��N;Q�N;Q�N�OEQ�Q����NNN;�N;Q�N����NOTN�N;OcOENQ�Q�NO4&	N

NN�NN�NN�NN�N�NNN�NN�NN�NN�NN�NN�"N N�!NN�N#$%N�NN�N'N(/),*+NN�NN�-.NN�NN�0N1NN23NN�N5N6?N78<N9N:;N;NN;=>NN;NN;@GADBCNN;NN;EFNN;NN;HKIJNN;NN;LNNMNNN;NN;R�QdR[SWTVUN+OESQ�P}XYN;NZNQ�S�\_]^P}NNP}`baN;OEOTcNNOTemfiN;gN;hNOcjkN;NlN;NTFn�opOTQ�q�OTrNst}NuNvwzNxyOTNOT{OT|OTNOT~NOTOT��NOT�OTNNN;���NN+N;OTN�.����������Q�N;NOTN;�T�P}�N�NNQ�����Q�P}OTU\����OTQ�OcQ�N�Q�N������N�TFQ���N;OTN+Q�����NN+Q�U��Q�VpQ���OT��N;N�����������NN;NN;��NN;NN;����NN;N���NN;N;N��NN;NN;���N�NNN;��N�NN;��NN;N��N;N;N��������NN;NN;��NN;NN;����N�N;�NN;N��N;NN;��N�N;�N;NNN;������NN;NN;��NN;NN;�N�NNN;�-N;����N�N�N���N��N;NN;NN;�NN;NN;NN;NN;	
NN;NN;
NN;NNN;NNNNN;NN;NNNN;NNN$! NN;NN;"#NN;NN;%(&'NN;NN;),N*+N;N;NNN;N+P�/:0714N;2N+3Q�TF5N;N+6N;N89OTN;N+P�;@<=OEOTQ�>?N;NN;AFBDN;COTQ�EQ�TFOTQ�N;H�IxJUKPLMR�Q�OqNNONOTQTN;RNSN;NV�NVwWqXZNYN;OE[\NOE]OT^N_N`iadbcNQ�NQ�efNQ�NgQ�hQ�NjmklNQ�NQ�nNNoQ�pQ�NrustQ�N+N+Q�NvNN+W�W�yzQ�Q�{�|O�}~NN;P}�NN�Q�W����X#��NQ�OTN�P}N���N�N���N�N�N��N;NN;����NN;NN;�NNN;�N�N������NN;NN;��NN;N�N;�N;N�N��N�N;�N;NN�N;N��������NU\U\P}���Q�Oc�OcN�OEVp�N;������NX�N+NTFN+X�Y�����NW��TF��N;NOEN��N+���Q���N�����N�NQ���NQ�NQ�����NQ�NQ���NQ�NQ���������N�Q��Q�NN�Q��NQ���NQ�N���NQ�Q�N����N�Q��NQ�N�Q��Q�N��NQ�NQ��N����NQ�NQ���NQ�N��NQ�NQ�OEN+NU\U\VpO�	Y�ZZ�Q�U\
U\N�
?+P}U\VpNN[#NNN+NNYNN;VpNP} &!"Q�O�#Q�$%OTO�OTQ�')(Q�[�[�[�*OTQ�,8-4.2/O�01N;NQ�OTQ�3NO�Q�5OE6OE7OEN9<:;N;Q�NQ�N=N>NN+@TABOTW�CIDHN;EFGN+Q�N;Q�O�[�JPKMLNNOTNONQ�TFOENQRSOENQ�P}U�U\VW�NXNYZ�[�\u]j^c_bN`N;aNN;NN;dgNeN;fNN;NhN;iNN;kplmNN;NnN;oNN;qrNN;NstN;N;Nv}wzxyNN;NN;{|NN;NN;~��NN;NN;��NN;NN;�N�N�N�NN���N;NN;N���N������NN;NN;��NN;NN;�N�NNN;N��N����NN;NN;�NNN;P}OT����OTN+P}Y�����NP}NN�N[��P}��N+N\;N+�������P}��Q�N�N��NN+N+N;���[�\�N����N�NP���Q�NSTFQ�Y��Oq��Q��N;��N;OTN;N�����N;N;�NOEN;OT��N�Q��NN;N;��N;P}N;����Q�N�����Q�Q��N\�Q����\�R�N;N������YN[�P}��NOcNQ��N;�Q�N;Q���������NP}U\��U\O�N;N��U\�U\NOcN��OTU\U\N;NN+N�OEN;NOE	N;N
Q�NN
N+TFNOTN0�4+U�P}OTP}NTFOqN+U\Vp% !VpNOT"#$N]RNP}&*']�()NQ�NQ�TFP�,X#-3.2N;/01OTW�N;OEO�U\P}OT5q6f7c8_N9:U\;OT<T=B>N;?N;@N;N+AN+N;CODHEN;FN;GN;N;N+ILN;JKN;N;N+MN;N;NN+N;PN+N;QRN+N;SN;N+N+UN+VW[N+XN+YZN;N+N;\N+N+]N;^N;N+`bNaNN+NN;de]�U\NP}NghnikNjTFN;lmN;U\N+NoN;pNNOErwsOqtP}OTuvNN+NP}xy�z�Oq{N|}N~N��OT�OTN��OTOTNOT��N�NOT�OTN��N�����N�N�N�N��Q�NQ����N��NQ�N��NQ�N����N�N�NQ�NQ��NNQ��N�N������NQ�Q�N��NQ�Q�N�N�NNQ�NOq����Q�Q�NOE�OcP}OE�����������NN�NN+����Q�Q�NP}��P}OTP}N��W��N;�OqOTN;R��P}���OE�OTNOTQ�R���������N�N+Q��N\�P��N;N�N�\���Q�N+�N�NN^C�N���NQ��TF��N;��������N;Q�N;Q���N;Q�N;Q�����N;Q�N;Q���N;Q�N;Q��N;�N;�N;N;Q�N�N;N���^�NOTN;N;OEN+OTN+	TFP}S
N^CN
NNO�NO�NO�NO�NO�NO�NNO�SNQ�Q� !Q�OT"(#&OT$N%NQ�TF'NU\)/*-+,Q�N+TFNN.N+OTU\OT1�2�3�4\5867Q�Q�P}Q�9XQ�:P};N<=FN>N?@DNANBCOTOTNENNOTGNHOILJKNOTNOTMNNOTNOTPSQRNOTNOTTNNUVWNOTOTNN;YZ[OTNNQ�]`^_P}Q�Q�Q�aqbdNcN;N+epfNgNNhNijlkVpNVpmNVpnVpoVpNNOTOTrstQ�N;P}uvNwNxNy|z{NU�NU�}~NU�N�NU�N������NQ�_FOT��OTN�NO�N;Q����O�NN+N����Q��������Q�N�NN���N�����N��Q�NQ�NQ��NN��Q�NQ��N����NQ�NQ��NNQ��N]�[�OqQ��_�Q��U\TF��TF���OENP}OE��������N+OTOTY�NQ�N����P}_�P}N�NNOc����N;�N;N�Q�Q�P��N�NP}Q������_��P}��N��N;NQ�N���NNOT��N;�����N;�N;N��P}Q�Q�N���Q�Q�N�N;Q�N�������NN+O�N[�N+NOTQ��	����NQ���Q�N��N�O�P}�NN;N���Q����[�NP}Oc`+�R�OqN;N;Q�]�NSNN+Q�N
`+N;Q�
Q�OEN;Q�N`�`�`�	2�W<5(`�aNa]aNak 'az!az"az#az$az%az&aza�bb�)*b�b�+M�,b�-b�b�./b�b�01b�b�2b�3b�4b�b�6978azb�cWcf:;c�akNc�=H>A?@Lc�c�dBEL�CDMdMF`�b�Gd$d2IPJLdKd?dNd]MNOdld{d{d�QTRd�See!d?e�UVe�e�d�XwYfZ`[\`�d]e�^_e�e�e�e�aefbcdg	gc�g&c�L�gshlg4ijkgCgQazgQmpnod{cWdg_qre�d�e�d�tvub�e�d�gng�x�y|z{NMNh}�g4~hhh%N��h4d]hB����NhQb�d����e��e�h^d�db�����h�h�ii��i#i1di@�����������L��b�dLiMc�N������e�i�`�i�i�i�i��jj����`����b�b�b�b�g_M��g4b��j*�NN_�������j�kXL�az��b�`��dh�kfd�����kuLg4L��b�d�Ba��l��ll��ll�l�l�l�c�l�l���ll�l�l��ll�ll��l�l��l�ll�ll��l��ll�l�lll��ll�l�ll��������Lc�c�L���b����e�lKe�e�lZg4����daz�d]��Q�_FP}N+��lig4b�c��LMMd{c�c�lx`�j*l�	
L`�kX
liMc�N`�M�mmmm,��I M�Mm;m�m�m�NnWi�!*"&#b�$%nfnum�n�c�'()g	c�n�c�+,n�d-o5.N/N0=17m�23m�m�45m�m�6m�oD8m�m�9m�:;m�m�<oDm�m�>?Dm�@m�Am�BCm�oDm�m�Em�FGm�Hm�oDm�JtKPLMoYb�Noho�OnfdQVRTb�So�b�Ugnpzh�p�WXYak`�`�Z[p�\p�]bp�^p�_p�`p�ap�p�cmdiegp�fp�p�p�hp�p�p�jklp�p�p�p�nqp�opp�p�p�rp�p�sp�p�uzvywde�xe�e�c�p�{|L�}~dm�db�L��p��p�p���������`�K�`�c���mNME����M��N�N�N�N�N�NN�N��NN;N����p�qpp�q~�i�i�i���azi�`�L������q��d�m�q��q�b��b�o���`�Nc�p�����L��HG�HG�HG�HG�HG�HG�HG�HGq�HG�N��q�q�q�q������H rH r�rdr�b�gC�����������`�b�r�lr,r:��`��rIdNMd����dNe�d����rX�rXb�rfru��li�lign�gngns8������g_L�L�b���b�dNL�����H:��sGsWsWsGi�L��L���g4c�sfc�cWL�	�	����c�dN`���L��b��sui@				s�s�s�H:	d	b�b�			
b�	b�		b�	
	b�	b�db�	b�b�		b�	b�	b�db�				b�l�N	s�m		rX			a]t"a]t1aNL�		)	 	$	!	"Lq~	#t@MtO	%	(M�	&	'e�t]e�b�q�	*	-	+	,E`�LL�	.	/b�L`�	0ak	1aktkb�	3b�	4b�	5	6	9	7	8b�b�b�b�b�	:b�b�	<	A	=	>M�ku	?	@tyt�t�b�	B	f	CaNM	D	EM	F	VM	GM	H	IM	JMM	K	LM	MM	NM	OM	PM	QM	RM	SM	TM	UMM�M	WMM	X	YMM	Z	[M	\M	]M	^MM	_	`M	aM	bMM	cM	dM	e@M`�M	h	p	i	o	j	l	kLaNku	m	niMnWL`�diM	q	t	r	s`�ddM`�	udM�	w
!	x
	y	�	z	�	{	�	|	�t�	}	~az	az	�azaz	�	�	�	�	�	�	�	�	�	�	�	�	�t�ubupu�	�	�azkXu�az	�	�	�	�v�azv�v�	�	�b�jazu�	�	�az	�	�	�v�azv�v�	�	�	�	�gCazmv�	�azv�az	�az	�	�az	�az	�t�m	�	�	�	�v�v�azv�	�azww	�az	�	�	�azgCj	�azazb�	�u�az	�	�	�	�	�az	�	�	�	�	�wu�mu�	�	�v�wv�az	�az	�azv�	�	�azv�az	�	�	�	�	�	�	�	�az	�azb�b�v�	�v�	�t�v�t�	�	�	�	�azm	�v�maz	�v�azv�	�	�	�	�az	�	�kXazv�	�	�u�	�u�azubup	�	�	�	�kXv�jaz	�	�v�gCv�v�gCazaz	�m	�v�az	�	�	�az	�v�	�v�az	�	�az	�azaz	�	�az	�	�	�azaz	�azb�	�az	�azazm	�azaz	�az	�	�azaz	�az	�	�az	�az	�azaz	�az

azaz

azaz
az
az
azm

	b�az




v�azm


u�
u�
u�
u�
u�
u�
u�
u�u�
u�
u�

u�
u�
u�
u�u�
u�
b�u�
 b�v�az
"
�
#
8
$azaz
%az
&az
'az
(
)azaz
*az
+
,az
-az
.azaz
/az
0
1az
2azaz
3
4az
5az
6az
7azaz@
9azaz
:az
;
<az
=az
>az
?az
@az
A
`
B
S
C
J
D
EazgC
F
Hw
GwazgC
IgCaz
K
Nv�
L
Mazw*az
O
Q
Pazw8az
Razb�az
T
Y
U
Wv�
Vb�az
Xazb�az
Z
^
[
]
\azjazb�az
_azwFaz
a
q
b
j
c
f
d
emazubaz
g
ht�az
iazv�az
k
naz
l
mazwUazaz
o
pazwcaz
r
y
s
v
t
ukXazv�az
waz
xazmaz
z
}
{
|wqazwaz
~az
azwaz
�
�
�
�
�azaz
�
�azaz
�az
�az
�az
�
�azaz
�
�az
�azaz
�az
�
�az
�az
�az
�azaz
�az
�@azaz
�
�azaz
�
�az
�azaz
�az
�az
�
�azaz
�az
�
�az
�az
�az
�azaz
�az
�az
�
�azazw�
�
�
�az
�azaz
�
�az
�az
�azaz
�az
�az
�
�azaz
�
�azaz
�
�azaz
�
�azaz
�
�azaz
�w�azazv�
�%�
�

��
�*
��
�G
�#
�az
�
�az
�
�azaz
�
�
�az
�
�az
�azaz
�
�t�az
�
�az
�az
�az
�azaz
�
�azt�azaz
�
�az
�
�v�
�
�v�v�
�
�
�
�
�
�v�v�
�azv�
�
�
�
�v�
�
�v�azv�v�azv�azv�
�
�v�v�
�
�v�v�
�azv�
�az
�azaz
�az
�
�azaz
�v�az
�az
�
�
�azaz
�
�azazazv�azazazazazazaz	az
azv�azaz
azazw�w�w�w�w�w�w�azw�w�w�w�w�azw�azaz az!azaz"w�azaz$az%az&'az(az)azaz*+az,:-9.azaz/031az2v�v�azaz45azaz6az78azv�azv�az;az<A=az>azaz?az@azv�BazCazDazazEFazv�azH�IaJPKazLazMazazNazOv�azQazRazazSTazUazVazWazazXazYazZaz[az\az]az^az_az`azw�bsazcazdazefazazghazazijazazklazazmaznoazazpazqrazaz@aztuazvazazwx�y{azzazgQ|}~azubazgQ��b�azazb�������gCb�gCaz��w�gCb�az��gCaz��azkXkXazaz����azaz��az�az�azazv�az�az�az��azaz��az�az�az�azaz��azaz�az�azv���������az�az�az���gC�gC�gCw��gC��jgC�gCw�gC�az�azaz�az�az�az��azaz��az�azaz�azv��az��az��az�az�az�az�az�azaz��azaz��azgQazaz��az�azaz�az��azaz��azaz��az�azv�az�azaz��az�az��az��az�azv�az�az�az��v�azv�az�	az���az�az��az�azaz�az��az�az�az�azaz�az��azazv�az��az�az��azazazazb�azazazazb�gCgCaz
azazaz
azazazazazazazazazazgQazazazv�azazazaz azaz!"v�#v�v�$v�%v�&'v�v�(v�)azv�+�,az-aaz./H08az12azaz3az4az56azaz7gCkXaz9:az;azaz<az=>az?azaz@azAazBCazDazEazFazGazazgQazIJRKazazLazMNazOazPQazkXb�azSazTazazUazVWazXazazYZazaz[az\]azaz^_azaz`v�azazbazcdpeazfazazgazhiazazjkazlazmaznazazoazv�qazazrazst}azuvazazwazxazyzazaz{az|v�az~azaz�azaz�az�az�az�az��az�azaz�v�az�az�az�az�azaz��azaz��azaz�az�az�az�az��az�az�azaz��az�azaz�u�az����az����az���t�wt�t�maz�azgC��������jv�v�w��wububv����w8v�jv��v�gQ������kXw��w�kXaz��gQv�b�v����u��b��b��b���b�azaz�azb���u�v�v�w����������wt�t�mm��mm�maz����mjj�j��azjaz���v�azv�v�v�����v���kXv�gQ�v�kXu�����v�v�v�w���w�v�v�ub�
������u�ubwaz��jv�v��gQv��
�
�kXv��v��
v�
v�v�azgCw�

az
mazjv�


	


u�v�azv�


w8
gQv�azu�




azv�azgC
azkX

wv�
azazm
_
�
�

�

q
 d
!
Dw�
"
#d
$
/d{
%
&
.L
'
(
+
)
*xgb�`�iM
,
-`�MerXb�xv
0
;
1
4
2dd
3o�d
5
8
6dd
7do�
9d
:do�d
<
=cWx�
>d
?
B
@
AcWx�x�cWcW
CcWx�
Eb�
Fl
G
J
Hb�`�
IML
KM
L
p
M
X
NNN
ON
PN
QN
RN
S
TN
UN
VNN
Wx�N
Y
c
ZN
[N
\NN
]N
^
_NN
`N
aN
bx�NN
dN
eN
f
gNN
hN
i
j
m
kNN
lNx�N
nN
ox�Nc�L
rl
s
�
td
u
�
v
�
w

x
yx�b�
z
}
{b�b�
|x�b�
~b�h4x�
�
�
�
�
�b�
�
�x�x�x�x�
�
�h4b�
�d$d$yb�
�b�
�b�
�b�x�
�`�
�
�
�b�
�
�b�y
�yd]b�b�
�b�
�h4
�y(y
�
�y7
�b�
�b�
�L
�
�Ly�
�
�y�y�
�y�
�y�y�b�
�b�
�b�
�
�L
�
�Q�L�NgC
�
�
�
�
�
�
�
�dM
�dj*dNQ�
�
�
�d
�ML�
�M
�M
�M
�
�MM
�M
�M
�My�
�
�
�d
�L
�
�
�
�NQ�[�Q�
�
�[�Q�[�Q�
�
�b�
�
�azgQ
�gQgCy�
�
�y�
�z�z�y�
�c�
�
�
�
�
�Mg4M
�
�`�K�d
�L�b�
�`�b�
�NM
��b�
�
�
�liz�
�PiM
�
�
�
�{

�
�`�Md
�
�
�
�
�{}{�{�{�
�LL
�
�L
�LL
�
�LL
�L
�L
�L{�
�K
�
�iM
�iMQ�
�!
�p�
�p�
�
�p�p�p�p�p�p�p�{�p�p�p�	
p�p�p�
p�p�{�p�p�p�p�p�{�p�p�p�p�p�p�{�p�p�p�p�p� p�{�{�"#:$2p�%p�&',p�(p�)p�*p�+p�{�-p�.p�/p�01{�p�{�p�p�3p�4p�5p�6p�78p�9p�{�p�;Cp�<p�=p�>?p�p�@Ap�Bp�{�p�Dp�Ep�Fp�p�GHp�Ip�p�Jp�{�LOMMM�N{�M�dNQg_R�S�TcU`VYWX||||Z|.[|\|]|^|_||=|a|L|b|[|dzepfg||h|i|j||jkl||ymn||�o|�|j|�qr|s|t|uyv||�wx||�||�|{~|}|�|�|L||�|�|�|�|�||L|��`�L�b�p�|��b��iMc�c���`��`����d���b�q~`��M|�d`�d�s�������aN`���z�����akn�b�M��d`�|�d��ku���L���K�j��`���}�}�}���d{d{�d{��d{�d{d{��d{d{�d{}���iM�~�B�~��dN�~~��e�~�~�����b���b�d$�b�d$�����b�b�d$�b��b�~�b��b��kub��b��b�~���b����~�ZNM�����gCLlL�q��d����q�ddq���q�dq�dz����`�q~���"���3�
��L���iL��L�����L�L��L���L�L�x�L��L�L���L��L���L�L�L�L�L�L��L�L�L�L�	L��L�.L�
L�L�L�L��L�L��L�L�L�L�L��L�"L�L�L�L� !L��L�#L�$(L�%&L�L�'�L�)L�L�*+L�,L�-L�L��/L�L�01L�L�2�L�4n5a6F7:L�89L�L��;L�L�<=L�>DL�?@BAL��L�CL��L�L�EL��GWHRIOJL�L�KL�LL�MNL��L�PL�QL��L�SL�TL�UL�L�V�L�X]L�YZL�L�[\L�L��L�^L�_L�`L��bL�cL�L�deL�L�fL�ghkiL�jL��L�lL�mL��L�o�puL�qL�rsL�L�tL�iv�L�wx|L�yzL�{L�L��}L�L�~�L���L����L�L��L��L���L��L��L�L�����L�L����L���L�L���L�L����L��L���L�L��L��L���L��L��L�L���L��L��L�L���L��L���L�����L���L���L��L�L�iL���i�L��L�L�����L���L���L��L��L��L��L�L��L���L��L���L���L���L��L����L���L�L���L��L�L��L��L��L�������L��L��L����L�L��L��L���L��L��L���L���L���L���L�L���L��L��L�L���L��L��L���L��L��L���L��L��L�L���L��L�����L���L��L����L��L��L�L��xL�L�L�L�L��L�L�L�	
L�L�L�
L��L�L�L�L�L��L�L�L�L��L�L�L�L�L�L�L�L� L�!L��L�L�#$]%L&4L�'(L�L�)*.+L�,L�L�-�L�L�/L�0L�12L�3L�L��5BL�6L�78<L�9:L�;L��L�=L�L�>L�?@L�AL��L�CIDL�L�EL�FGL�L�H�L�JL�L�KL��MQL�NOL�PL�L�iRL�SYTL�UL�L�VL�WL�XL��Z[L��\L��L�^}_v`mL�aL�bciL�degL�fL��hL�L��jL�L�klL�L�inL�oL�pL�qL�rL�L�sL�tuL��L�wL�xL�L�yzL�{L�|L��L�L�~L�����L���L��L��L�L��L��L���L�L��L�����L�L���L��L��L�L��L��L��L���L����,���b�NMN����c��xvhLNL��d����MM�;���;�JM�;���Lt�����b��������Y�b�b���b��b��b��b��b��b�b��b���gb�����Y����Y�Y��Y��Y���Y�Y��z�Y��Y��Y�Y��Y���Y��Y��Y�Y��z�Yb����Y�Yb��b��b���b��b�d2d$��������~�d`�L�����az�kX�kXkXaz�t�����������L�Np���dL�lb�����L�dc�az��de���N���b���s8p���b�����b�iMx�b���b�l�kuiMty��b��,K�xv`�b�`�c�	.

b�Mb���b���b�yx�b�c�nWNcWdddm�"c�j*aN !L�b�M�l�#%M�$g4m�M&p�'(+)*��q�^CQ�,-d{`�K�az/b0<132MdL4857N6i�t]L�m�M9xv:��;����=@q�>?q��q�Al�BWCMdDEddFGddHIdJdKddL�ddNOdPddQRddSdTdUVdd�XdYdZdd[\dd]d^_d`dad�dcmdgrfefnW�+dLhdijy7kly(h4x�x�nb�b�opb�b�qrb�b�~�t�L�uvt�iMwxaky|ziM{b�LxvM}~`�cWd{b���������`�����L`�dd{��q~L�ML�d���aN�b�iM��iMiM�:�dLM��������y7�I�LN��NQ�N��iMdaNM����Md{{
c������dcW�b������ixve�w��b�Q�c�c���OEb�M�Nd{���������������xv��������xv����xv�xv������������xv�����������xv�q�������xv��xv��������������xv��������xv����xvq�������������xvxv���������xv����������q�����������������xv�����������������xv���q�������������xv�����xv��q�����)�������)���������	q�
xvxvxv
xvxvxvxv��xvb6 azazazazazazazwUazazazwUaz!/az"#az$azaz%&az'az(az)azaz*az+az,-azaz.azwU0az1azaz2az34azaz5azwU7S8M9?:;`�b�b�<=iMiM>iM�8�;@ALBq�q�Cq�Dq�EFq�Gq�Hq�q�Iq�Jq�Kq��Fq�MNQOPdMdp�akRi�MdTU_V[WLX�[YZ�j�[�[�y\`�]L�L^oYd`acWb�q~Nc�d�e�fyMghtijg��k����lMmnMoMpMMqrMsM��MuwvMg�MMxg�Mz�{�|�}�~M�M�M�M�M�M�M�M��M���������������������M���M���M����������������������g���g��g���g���������M��M�M��M��������������������������������������������M�M�q��q��q���q�q�g����MM�;g��g��g��g��g��g���g������g������g�������g������������;�V�����.��������g�����g��������g����� g�� ������	g��	��g������xg��x���g�����������Ng��N��g��]�]g������g�����hg��h������wg��w��+g��+g����;g��;��Kg��K��g���	��g���
�Wg��W
��g�����g���g��)�)g���g���#��g�����g���! �]g��]"��g���$)%'&�4g��4(��g���*,+�g��-�vg��v/X0E1<27354��g���6�bg��b8:9��g���;�Zg��Z=@>��?�5g��5ACB��g���D�Tg��TFMGH��g�IKJ��g���L�
g��
NSOQP��g���R�pg��pTVU��g���W��g���YoZc[^��\]�g��_a`�g��b��g���diegf��g���h�Yg��Yjlk�g��mng�����g�p{qvrts�g��u�yg��ywyx��g���z��g���|g�}~��g�����!g��!�������g�g���g���;g��;g����g�����g����g��Mg�Mg���g��g������g�����	g��	g��g���g�g��g����g��J����������g��g��������g����� ��� ���g���	g��	����xg��x���g�����������Ng��N��]g��]�����g�����hg��h������wg��w��+g��+����;g��;��Kg��K�����������g������g�������Wg��W���g����������g�����)g��)�����g������g������������g�����]g��]����4g��4���g���������g����vg��v�����g�����bg��b�)�����g����Zg��Z��g��5�5g�	

��g���g��T��g�����g����pg��p��g����pg��p�g��$ "!�g��#��g���%'&��g���(��g���*A+6,1-/.�Yg��Y0�g��243��g���5�g��7<8:9�yg��y;��g���=?>��g���@��g���BFCg�Dg�E�!g��!Gg�g�HI�;g��;Kg�LPg�MNg�Og���MQg�RTg�Sg���Ug��	g�W%XY�Z�[p\e]`g�^_��g���acb�g��d�sg��sfkgih��g���j��g���lnm��g���o�7g��7q|rwsut��g���v�6g��6xzy��g���{��g���}�~��0g��0���g��������g�����Gg��G����������Wg��W��eg��e����ug��u���g������g����g�������gg��g��g�����������g������g�������g�����g����������g������g��������g�����g��������������,g��,���g�������[g��[���g���������>g��>��Mg��M����]g��]��lg��l��������{g��{���g�������g�����g���������g��1g��1��@g��@����g��Og��O��^g��^����������mg��m��|g��|�����g������g���������g�����g��������g������g����
�
g��
��g����g��	�g��
�-g��-��g�����g����$g��$�������������������� ��!����"��#$������&�'�(U)>*3+.g�,-��g���/10�g��2�sg��s49576��g���8��g���:<;��g���=�7g��7?J@EACB��g���D�6g��6FHG��g���I��g���KPLNM�0g��0O��g���QSR��g���T�Gg��GVmWbX]Y[Z�Wg��W\�eg��e^`_�ug��ua��g���chdfe��g���g�gg��gikj�g��l��g���nyotprq��g���s�g��uwv��g���x��g���z{}|��g���~��g�������g����,g��,�������������g�����[g��[�����g�����>g��>������Mg��M��]g��]����lg��l��{g��{��������g�����g�������1g��1��@g��@������Og��O��^g��^����mg��m��|g��|�����������g������g�������g�����g����������g������g�������
g��
���g�����������g����g������-g��-g����������g�����$g��$�����g�����#g��#�@������������g������g��������g�����g��������+g��+���g�������
g��
���g�������g����g����)g��)��g���	
�g��
�~g��~�g���g��+ ��g�����g�����g����:g��:!&"$#��g���%��g���')(�ig��i*��g���,5-0�
./Òg�Ò132ēg�ē4Ģg�Ģ6;798�g��:�*g��*<>=��g���?Źg�ŹAnBYCNDIEGF��g���H�6g��6JLK��g���M�4g��4OTPRQ�Kg��KS�Zg��ZUWV�g��X�g��Ze[`\^]�%g��%_Ʌg�Ʌacb�g��dʰg�ʰfigg�h�ʰ�jlk��g���m��g���o�p{qvrts��g���u˜g�˜wyx˫g�˫z˺g�˺|�}~�*g��*�̣g�̣�g���g�������g���-g��-�<����g����g������g����΄g�΄����b�`���� ��� Ϩ� ���%�4d������b�do���db�su�C����i#d�Qdd�do��iM�iMb��b�v����ku�d���_iM�L�����L`�M`���d�oaNiM�q~�����`��~d]gCp���h`�dc����M���iM�iM�iMd��ku��h�`�b�Mb���b�M��N���N�NN��N�N�N�NN��N�NN�Nx�N��N�NN��NN��NN��N�NN�NQ��`��`�M�t����������NMd{aNl�Lp�L���M`�`�`��d��ddddb�Mi�nWL�Kr`�	H
db�
dL�azgCgCgQnWЌMЛN`�`�y7b�7)b�&"b� !hЪhd$#$%d$b�b�d$'(b�kukub�*1+/,b�b�-b�.b�hb�0b�й2l�gQ3gQ456azb�gQaz8>9<:;b�MMb�=l�dM?b�b�@b�ABECDx���b���FGd]����x�IaNJjKQ`�LMxvNc�cWO�P��!RcSMc�TUXVW�0��"�Yb�"Z[�1�1\�1]^�1_�1`�1a�1�"�1���dgefӛөӹ��hiK�өӛK�k`�lomnLNcWb�pqdMz�Mst�tJu�v�wzxb���yxv`�{�|�}�~���w8b���v�ububgC�b���v�gQwUb��cW�i#i#�������������������������i#���NL�d���ak��w�Nd�d�dl����L�b�iMg4��Nku�c�`�������������d{���}�d{����d{�d{���}���!d{����d{�d{}����!d{d{�!���.��!d{d{��!d{�����d{���!d{�!d{�����.d{�=d{���!�L}��L���}��[��j�L���d{d{�.��d{�d{�!��������d{��L���}��L}�d{�d{���L��y�!������d{�jd{��}�d{}���d{����Ld{���d{����d{�yd{}�d{��Ld{�����d{�!�L��}���L�.�d{�y�.�Ld{�Ld{(d{	
d{d{}�d{
}�d{d{�L}��d{d{}�d{d{�L}��Ld{�}�d{d{}�# }�!"}�d{d{}�$&%d{�d{'d{d{}�)<*3+0,.-d{d{}�/�L}�d{1d{2d{d{}�475d{d{6d{}�8;9:�L}��L}�d{�=F>C?@�d{AB��L�.Ԉ}�DEd{}�ԈGd{Hd{d{Id{ԗiM`�LiMiMMNiMiMOiMPQiMiMRiMSTiMiMUiMViMWiMXYiMZiM[iM\iM]iM^iM@iM`�a�b�cb�b�de�fnNght�ig4g4jg4kg4lg4m�+g4o�pvqtrs��c�MK�u`�`�Mw�x{yzliL�Mb�|M}~N[�NMak����`�Ԧp����Դ`�lKe����b���dL�`�c�����������M�M���j*���j*����M�����M�M���M��M��M�M��M��M���M���M���M��M��M���M��M�M��M���M���M��M��M��M��M��M��M�����M��M�M���M��M��M���M���M�M���M�M���M��M����Mc�����������g_MdcWL����c���i�h��hh�
��L�{
L`�iM��w���iMw��b��c��c��c�c��c��c��c���c����{�8����+����+���+��+��+�+���+��+��+�+���+��+i�+��+���+���+��+��+��+����+��+�+�+�+�+�+�+�+��+i	�+
�+�+
�+�+�+�+��+(�+�+�+�+�+�+�+��+#�+�+�+�+ !"�+���+$�+�+%&�+'�+��+�+)*�++1,�+-�+.�+/�+0�+�+�2�+3�+�+4�+567�+���+9M�+:;B<=��+>�+�+?�+@�+A�+iCI�+D�+E�+F�+G�+H�+��+J�+K�+L��+NX�+OPU�+Q�+R�+S�+T��+�+V�+W�+iYh�+Z�+[�+\�+]^c�+_`�+a�+b�+��+d�+e�+�+f�+g��+ip�+jk�+l�+m�+n�+�+o�+iqu�+rs�+�+t��+�+vw�+�+x�+yz�+�+�|�}�~��+�+��+���+�+��+���+��+��+��+��+�+���+��+�+���+�+��+��+��+�����+��+��+��+��+�+���+�+����+���������+�+��+���+��+��+��+��+�+���+��+��+��+��+��+��+����+�+���+��+�+���+�+��+��+��+�������+�+���+��+��+�+���+��+�+��+��+��+��+���+L��+������+��+�+���+�+��+��+���+�+��+���+�+���+��L���L�L��L����L��L���L�L���L�L��L���L�iL���L��L���L�L���L���L��L��:�L�L��:L��L��L��L��L���L��L��L��X�8 
L�L�	L�L�L��L�L��L�L�
L�L�L�L�L��L�L�L�L�L��L�L�L�L��L�L�L�L��!0"+L�#$L�%L�L�&'L�L�()L�*L��L�L�,-L�.L�L�/�L�1L�2L�3L�L�45L�6L�L�7�L�9B:L�;L�<L�L�=>L�?L�@L�L�AL��CKL�DL�EL�FL�GHL�IL�L�J�L�L�LMSNL�OL�PL�QL�RL��L�L�TUL�VL�L�W�L�YoZi[c\L�L�]L�^L�_L�`L�abL��L�L�deL�fL�L�gL�h�L�jL�kL�lL�L�mL�nL��p�q}L�rsL�tyL�uL�vwL�xL�L��L�zL�{L�|�L�L�~L��L��L��L�L���L��L��L��L�L��L���L�L���L�L��L������d������cW�cW`��b�b�M�t�����iML�LM`���`���M��;M�M�OM��cW�cW���cWxviM`��b���d�xvnW��b�L�d�azdM�������M�M�MM��M�MM��MM���q~McW�����cW�cWcWM���b��d]�wU�^�����b�t�g_�L�c�i����b�c�b�d�q~����l�{Պ�l��M��M��M`��i��m;az���M��M�M�M��MM��M�JM�M�M�M�MM��M�MM��M�M�MM��;MM���M��MM�q�M�MM��MMMMMMMq�Md9	!j*

nW`�xv`�`�M�`�M�`�c�LcWo�rm�b�b��Qb�M m���`�`�"&N#M$%cWMnW'/b�(b�)*b�b�+,-b�b�b�.b�b�M018M23645e~�~�ՙ7eed?cWM:w�L;<PM=>Dd?@B��AcWlLCըLEKFIGHLddLJMdl�LOMNMLcWLMd`�QR]SWTVUdl{
��dXZYLMd[\l`�`�l^b_M�`aazLMd��cն��e�t�fg�h�i�jwkqlnme~���op~�~�~�erustb~�~�~�~�v~�~�x�y|z{~�b~�~�}~����d?��������������������~����b�~�ՙ~�������rX�~�rX�~�e~�����~�ՙb~��~�~�b������~��.~�dN~��~�~��b�be~�����Mn�N��N�N_�N`��`���`�`���`�`��`��`��`��`���`�`��`�@�l�l�l�l�l��=l�=����ty��b�`��LMd�����nWL��LM��MM��M�M�M�MM��OM�L�Mb���������g4Lj*d��Ni�iMdd�b��b�ML������MNMMd]��Mq~Lc���� �b�����iM����iMiM�iM��iMiM�L�iMiM�iM�iM��LiM�iM�iM�iMiMiMiMiM�[b�b�b�b�b�	b�
b�b�b�
b�b�b�b�b�db�b�b�b�b�b�b�b�b�b�b�b�db�z�t�!3"`�#`�`�$%`�&`�'`�`�()`�*`�`�+`�,-`�.`�`�/`�01`�2`��j`�4J5c�6:7`�b�89M{
N;G<>cW=M�MM?@c�ADBCQ��yb�ֈEFQ�enWMHc�t�I`�NKcL[MTazNOazazPazQazRazSwUazUazVazazWazXYazazZwUazaz\az]az^_azaz`azabazwUazdzemfjq�ghiq�dq�dkl`�L`�Mnb�oypvqtrs`��[֖֥u�[ִ���[wx�[����Nb�{�|�}�~�d�do�d���do�dd�d�������d��d��d�o����o��d�d�d��o�o�d��d��dd�o�d����d�o�dd�o��d��dd�d��-d�����do��<�do��b���b��db�nf���dd��dd�d��Kdo�d��������d�do�d�o�d���o�do�d�d�db������o���db�db��d�ddb�����d��o��d�d�Zdo�d�d�d�d�d�dm�d��d��dd�do����dd�o�dd�d�d��d�d�d�dd�d�d�b�d��.��c��c��c��c��c�c��c��c���c�c��c���c�c��c�c�c��ic�"j*	��
�����x
׆ווy�Nb�j�N`�NM�b�`�!M�OM�OMM�OMM M�ON`�#*$%m�i�&('aNi�MM)M�L�`�+,d-dL�d/80�1u2X3@4756M�פײg48=9;:e�Դ`�<d����d�>d�?kfd�AMBFC��DE����e�GJHI�d���)KL�8���F�UNTOQe�P�e�RS��d��d�sL�UVWo�ddq�YjZd[a\`�d]^d_d`d؂dp�bv�ct�gQeifQ�gh�����Udb�kploMmn��ؒb�c�`�qtrcW`�sg4`�q~Nv�w�x{yzd{cWrXN|�}�~d�h%d�ء��sudb�o��b��gnذgn����Nd]`�b�������d{N+Q��S�ؿc���g�M��������dxvxv`����M�Mg��;�i#N;OT����NL�`���h�e��8��b���L�db�����������b���g���tOi�����������c�����%�4�;��ak��d]�Cd]x�������R�a�oeL��d���ML�^CakMb��������`���d�}i#ٌM���x���x�y���d{�ak�ak�akak�ak��akak��akak�akٰٛxv�����LL�Ly�Mb����d��Q�OTN;OEd��i��i����i��i��i��i��i�i�i�i��i��i��i��i��i��i�i���	i�`�`�i�ٽi�i���Mc�

`�m���+aN`���`���|�b�L��h��"gnb�azc���1gn ,!'"#`��@$�N%&g&lg	g&()b�c�*L�C+b�i@-5.1/g4�]0�k|2L34�y��g&ڈ67L�d{b�9�:z;T<H=@>?db�MliAEBakCDb�do�b�Fפe�Gږe�IQJPKMLdb�dNOڥڳ���diMRSazb�`�IKUfVYWXb�`�LMZeL[b�\]p�d$^d$_`d$d$abd$d$cdd$��d$db�grhld{ijkkXwUazv�moaNnK�dpq��i�e��sytwuvq~�qpq~xs���*az�8{�|�}�~��HaN��aN�aN������aN�W���f�uۄۓ����ۢ۱t1�������������������)�8���G�V�e�t����܃ܒܡܰ�aNܿt"L�c���L�xvdL���L�L�L��d`��N�az���������daz��az�����N���L��L��i�H:M����b�pzg4d��`�c�cWL���������cW�b�xv��L�d{
b�����b��dM��dg_LM����b��daz��Mdaz�i#d����ty���az�az��az�az�azaz��azaz��"az�az�az�az�azaz��az�az�azgCazL�`���MrrL���������N��ؒrXlxrXdN��b��L�Lb�e�b��aN�0lg4b�tOg�g��;Lb�	

c��d{mL�dbLdg4LakQ�OTN;OEb�g_azg4L�b�,c�aN !q~"+#%$MoYj*&*'b�(LL)xvLc�cWb��?-�.�/^0J1=2;39465b�h4�N78�^x��n�}:Nb�yl�<l�b�>E?b�@CABh4݋x�b�Db�ݙb�FHGb�ݨd$b�Iݨb�KTLOMb�kuNb�ݶPRb�Qb���b�Sݶ��UXb�Vb�W��h4b�YZ][\�Nb���h4h4hB_y`kaebb�b�cdd]���Nfjb�ghihBb�b�ykub�lrb�mnpݙo~�b�qlipz�Rsutxgd$b�b�vwxhBd]ݙ�nz�{�|~}b�b�����d$b�b�d$��ݨb��b�b���h4b�x��ku������b��^�����x�b�݋h4���b��b�b��^b��d�����b������݋b��+ݶ��x�b�x��+b��d$���d]��hBb�b��b�����d$�d$b�iM���",�"�!�`���!����� �� ����L���L��L��L��L�L��L��L���L��L��L�L��:�L�L���L��L�L���L��L�L���L��L��L��L�����������L���L��L�L��L���L��L��L��L��L��L��L�L��L��L���L��L�L��L��L��L��L��L��L����L��iL��L�L���L��L��L�L���L�L���L�L��� � L���L��L��L��L� L�iL�L� L�  L�L� L��   L�L� 	L� 
 L�L��L� 
L�   L�  L�L�� L�  L��L� L� �L�  &L� L� L� L� L�  L�  L�L� ! "L� #L� $L�L� %�:L� ' a ( J ) 9 *L� + 5 ,L� - 1 .L�L� / 0L�L��L� 2 3L�L� 4�L�L� 6L� 7 8L�iL�L� : ; AL� < =L� >L� ?L� @L��L�L� B CL� D G EL�L� Fx�: HL� IL��:L� K Y L SL� ML� NL� OL� P QL�L� R�L� TL� UL� VL�L� W XL��L�L� ZL� [L� \ ]L�L� ^L� _L� `�L� b pL� c d jL� eL� fL� g hL�L� i�L� kL�L� l mL�L� nL� o�L� q | r w sL� tL� uL� vL��+L�L� xL� y zL�L� {L��+ } � ~L� L�L�� �L�L� � �L�L� � �L� �L�iL� �!D � � � � � � � � �L�L� � �L�L� � �L�L�� �L� �L�L� ��L� � � �L�L� � � � �L�L� �L� � � �L��L��L� �L� �L�i � � �L� � � �L�L� �L� �L� �iL�L� � �L� �L�L��L� � �L�L� � �L�L��+ � � � � � � �L�L� � �L� �L�L� �L� ��L� �L� �L�L� � �L�L� �L� �L�� �L� � � �L� �L�L� � �L� �L�L�� �L�L� � �L�L� � �L�L�� �L� � � �L� �L�L� �L� �L�� �L� �L�L� � �L�L� �L� �L�� �! � � � � �L�L� � �L� �L�L� �L� �L� � �L� �L�iL� � ��L�L� � � � �L�L� �L��+ �L� �L�L� �L� ��L� �!L� � �L� �L�L� ��L�!!L�!!L�L�!!L�!L�!L�L��L�!	L�!
L��!!&!
!!!!!L�!!L�!L�!L�!L��L�!L�L�!�L�L�!!L�L��L�!L�!!!!!L�L�! �L�!"L�L�!#L�!$L�!%�IL�!'L�!(!1!)L�!*L�!+L�!,L�!-!/!.L��L�!0L��L�!2!:!3L�L�!4L�!5!6!8L�!7L��!9L���+!;!@!<L�!=L�!>L�!?L��L�L�!AL�!BL�!C�L�!E!�!F!y!G!W!H!P!IL�!JL�!KL�L�!L!ML�!NL�!OL�L��+L�!QL�!R!SL�L�!TL�!UL�!VL��!X!dL�!Y!Z!`![L�L�!\!]L�!^L�!_L��L�!aL�!bL�L�!c�L�!e!t!f!iL�!g!hL�L��L�!j!k!o!lL�L�!mL�!nL��L�!p!qL�!r!sL���L�!uL�!vL�!wL�!xL�L��!z!�!{!�L�!|!}L�L�!~L�!L�!�L��!�L�!�!�!�L�!�L�!�L�!�L�!���L�!�L�L�!�L�!�!�L�L�!��L�!�L�!�L�!�L�!�L�iL�!�!�L�!�L�!�L�!�!�!�L�!�L�!�L�!�L�!�!�L�iL�!�!���L�!�!�!�!�L�!�L�L�!�L�!��L�L�!�!�L�L�!�!�L�L��!�!�!�!�!�!�!�L�L�!�!�L�L�!�L��L�!�L�!�L�!�L�!�L��!�!�!�L�!�L�!�!�L�!�L�!�L�!��L�!�!�L�!�L�!��L�L�!�!�L�L��L�!�!�L�L�!�L�!�!�L�L��L�!�!�L�!��!�L�L�!�!�L�L�!�L�!��L�!�!�M!�!�!�!�iM!�g4xvML�!�`�!�rf�XM!�!�!�!�!�dN!�!�!�lili!�!�li!�li!�lili!�li!�!�li!�li!�li!�liq�lid!�rfNb�!�!�dLd{!�"!�"!�"!�iM!�iM!�b�!�N!�NN""NN�gc�iMiMt�""q~L"d{b�"q~"	"
""NaNg4"
c�ty�m""""iMiM"iM""iMiM"iM""iMiM"iM"iM"iM""iM"iM"iMiM"iM"" iMiM"!@iMiM"#iM"$"%d"&��"'d"(d")d"*d"+dm�d"-#".#"/"OL"0"1b�"2"9"3c�"4"5L�L"6"7M�N"8M~Ae":c�";"F"<"=c�M">b�cW"?cW"@"AcWcW"B"CcW"DcWcW"EcW��"G"NnW"H"I"L"J"KL��L��"MLL��ML"P"Qb�c�"R"�"S"g"Td"Ud"V"c"W"a"X"\"Ydd"Z"[db�d"]dd"^b�"_"`db�d"bdq�d"dd"ed"fddo�"h"�"i"�"j"z"kd"l"s"mdd"n"ob�"pb�b�"q"rb�b�d"td"uo�"vd"wd"xdb�"yb�d"{"}d"|dq�"~"�"ddo�"�"�do�o�"�"�o�"�o�"�o�o�"�"�o�o�"�o�"�o�d"�d"�dd"�d"�"�d"�d"�d"�d�Cd"�d"�d"�dd"�"�do�d"�#"�"�"�"�"�"�"�"�"�"�"�do�"�"�d"�d"�do�d"�"�"�"�"�d"�d"�d��ddb�"�ddb�"�"�"�"�o�"�"�c�"�c�"�c�nfc��d"�"�"�"�"�d"�d"�d�Nd"�d"�d"�do�db�"�"�d"�d"�d�d"�"�"�"�o�"�"�"�"�d"�d"�d�ddb�"�d"�"�db�db�"�"�"�"�do�d"�"�d"�d"�do�d"�dd�N"�d"�d"�d"�ddm�"�"�"�d"�"�"�d"�dq�d"�"�d"�"�d"�d"�d"�d"�d�-d"�"�"�"�"�d"�d"�d"�d�Kd"�d"�d"�d"�dnfddm�"�d"�##do�#do�d#do�d#d###d#d#	#
ddo�d#d#
d#dq�#iMiM##iM#iM#iMiM##iMiM##iM#iM#iM#iMiM�%##M�t�##=# #3d{#!ty#"###-`�#$#%#+#&cW#'#)d#(o�m�#*ddq��5#,�5�Cb�#.#/�R#0�R#1�R#2nW�RnW#4kuiM#5#6#:ku#7#8#9p�b�q��N��#;#<c�M�b�#>$*#?#�#@#�#A#_#B#O#C#F#D#ELc�Lg4#G#K`�#H#I#Jb�d$p�~�#Lb�#M#N�^y(�a�o#P#]#Q#\#RMj�#Sj�#Tj�#Uj�#Vj�#Wj�#X#Yj�#Zj�j�#[�~j�xv`�#^L���b�#`#z#a#g#b#cb�i�#di�#e#f��`�ߍe�#h#y#i`�#j`�i�#k#l#r#mi�#ni�#oi�#pi�#qi�`�i�i�#si�#ti�#ui�#vi�#wi�#xi�`�L�L#{#~#|#}c�dLc�##�ߜ#�rX#�brXEd#�#�#�#�#�#�#�#�M�akcWb�L�#�߫M#�#�#�#�#�#�#�#�i�i�ߺ`�#�#�az#�gQ#�#�gQgQ#�#�gQ#�gQ#�gQ#�gQgQazazgCm�b�#�#�#�d{#�#���פ����lib�#�#�#�#�#�#�b�#�#�#�c�g&ڈc�c�c�#�#�Mc�iMM#�#�#�#�#�c�#�d#�d#�d#�dd#�d#�#�dd#�#�dd�#�{
d#�b�o�#�#�`�nWdL#�#�#�#�#�#�#�#�#�#�dLdAe#�#�#�Aerm�iM#�#�#����e��#�#�#�#�N#�#�kf�h#�#�#�#��!�8�0�>kf#�e�kf#�#�`�lak#�b�#�b�d$#�#�#�#�#�#�#�K�akp�p�� #�#�t�az#�d#�#�NOTP}Vp#�#�#�MiMb�#�#�#�c�M#�M�;c�i�#�$#�#�#�#�#�#�tyL�#�c�#�#�m�Mm�[#�#�b�NL�L$$
$$cfb�$c�$M$M$M$M$M�O$	�OM$$l�ty$
l�j$v�az$$$$$$d`�i�$$$�x���$$cW`�g4c�$$!$$ $פ$$MiMVpdb�q�$"$)m�$#$$$%dm�$&d$'m�m�$(m�dc�M$+$�$,$�$-$b$.$E$/$8$0$5$1$4$2$3g�MMg�g��;�;$6�;$7�;q�$9$?$:$<�;$;�;�4$=$>�;g�g��;$@$C$A$Bd�;q��;$Dd�;g�$F$M$G$Jg�$Hg�$Ig�q�g�$K$Lg�Mg�$N$]$O$R$P$Qq������4$S$\$T�4$U��$V��$W����$X$Y��$Z����$[M��g�M$^$`��$_M��$ag����;$c$�$d$�$e$�$f$$g��g�$h$i$x$j$r$k�;$l�;�;$m$n$p$o�;�;�O$q�;���;�;$s$t�;$u�;�;$v$w�;�;��$y�;�;$z${�;�;$|�;$}�;$~�;��$�$��;��q�g�$�$�$�g��;q�g�$�Mg�$�$�$�$�$�$��4g��;�4$�$�g��;�;g�$����;g�$�$���$�$�g�$�M�;$��;$�$��;$��;�;$��;��$�$�$�$�$�g�M��$�$���q���g��;$�$�g�q���$�$�H:$�$�$�MM�b�$�$�g4$�g4$�g4$�g4$�g4g4$�g4$�$�g4$�g4$�g4g4@M�b�$�%�$�$�Ќ$�d{$�M$�$�$�$�McWc�$�$�M�yc�$�$�c�$�c��yc�N$�$�%_$�%E$�%$�$�$�$�N$�N$�$�NN$�N$�$�NN$�x�NN$�N$�$�NN$�N$�N$�$�NNx�$�$�$�$�$�N$�NN$�$�NN$�N$�Nx�$�$�$�NN$�$�NN$�N$�Nx�$�$�$�N$�NN$�N$�x�N$�N$�NN$�N$�Nx�$�%$�$�$�N$�N$�NN$�$�NNx�N$�$�%N%N%%Nx�NN%N%%Nx�N%N%	NN%
%N%NN%
Nx�%%.%%%%%N%NN%N%%NN%x�NN%%NN%N%%NN%Nx�% %'%!N%"N%#NN%$%%NN%&x�N%(N%)N%*N%+N%,NN%-Nx�%/%7%0N%1NN%2%3NN%4%5NN%6Nx�N%8%9%?N%:N%;N%<N%=N%>x�NN%@%ANN%B%CNN%DNx�%F%U%GN%HNN%IN%J%K%P%LNN%M%NNN%Ox�N%QNN%RN%SN%TNx�N%VN%W%XNN%Y%ZN%[N%\N%]N%^Nx�N%`%�%a%wN%b%c%kN%d%eNN%f%gNN%h%iNN%jNx�%lN%mNN%n%o%sN%p%qNN%rx�NN%t%uNN%vx�N%x%�N%y%zN%{NN%|N%}N%~%N%�Nx�N%�N%�%�N%�N%�%�NN%�%�N%�Nx�NN%�N%�N%�%�NN%�%�Nx�N%�%�N%�N%�N%�%�NN%�%�N%�NN%�%�Nx�N%�%�%�%�N%�%�N%�NN%�%�NN%�N%�x�N%�%�%�NN%�%�NN%�%�N%�NNx�%�%�%�NN%�N%�%�N%�NNx�%�N%�N%�NN%�%�Nx�NN%�N%�N%�%�NN%�N%�N%�N%�x�N%�%�%�d{%�%�g_MLN%�%�%�b�%�b�%�b�b�%�b�%�%�b�%�b��b�b�%�b�%�%�b�b�%�b�%�p��az%�%�azaz%�%�azaz%�%�az%�az%�azaz%�az%�%�azaz%�%�az%�azaz%�az%�az%�az%�%�az%�azaz%�%�az%�az%�azazw%�.V%�.=%�.%�,%�,T%�*�%�&�%�&c%�&M%�&F%�az%�az%�&8%�&3az&&&/&az&&b�az&az&&&&
b�&&	b�b�&
b�&&b�azb�&&&b�&b�b�&&b�b�azb�&&b�b�&&b�b�az&&%&&&b�b�&b�&&b�b�azb�& b�&!b�&"&#&$azb�b�az&&b�&'&+b�&(&)b�b�&*b�azb�&,b�&-&.b�b�az&0az&1&2gCazgCaz&4azaz&5&6az&7azt�v�az&9az&:&;azaz&<&=az&>az&?az&@az&Aaz&Baz&Caz&Daz&Eazb�azaz&G&Hazaz&Iaz&Jaz&K�&L��&N&Zaz&Oaz&Paz&Qaz&Raz&S&T&Waz&U&Vazv�az&Xazaz&Yazv�&[az&\azaz&]az&^az&_&`az&aaz&bazw�az&d&maz&e&faz&gaz&haz&iaz&jaz&kazaz&laz�az&n&o&�az&paz&q&r&|&saz&t&waz&u&vazazv�&x&z&yjazj&{azjaz&}&�&~&�&&�w�&�w�azw�&�w�az&�az&�&�w�azazw�&�azaz&�&�azazw�&�az&�az&�az&�azaz&�az&�&�azv�az&�'&�&�&�&�az&�az&�az&�&�az&�azaz&�az&�&�&�az��u�az&�&�&�&�&�&�az&�az&�&�az&�azaz&�b�azaz&�az&�&�az&�az&�azazjaz&�&�az&�az&�az&�&�az&�v�u�&�azwaz&�az&�az&�az&�azaz&�&�az&�azgQaz&�'&�&�&�&�az&�az&�&�&�&�azaz&�&�&�wgCazm&�&�az&�&�azazgQ&�&�az&�{�az&�&���az&�&�b�&�b�&�b�&�&�b�b�&�&�b�&�b�{�b�&�b�b�&�&�b�b�&�&�b�&�b�b�&�b�kXaz&�az&�az&�az&�az&�&�azazv�&�az&�&�&�&�&�azaz&�&�az&�&�gQv�gQazaz&�&�az&�azaz&�azv�az&�&�azaz&�az&�az&�{�v�az'az'''	'az'azaz''azaz'az{�az'
az''az'
az'azu�az''J''0'' '''az'az'azv�azaz'az'az''az''az'azm'az��az'!')az'"az'#'$az'%az'&az'''(t�v�gCazaz'*az'+az',az'-'.az'/azazw'1'>'2'7'3az'4azaz'5'6az��az'8azaz'9az':';az'<az'=azb�az'?azaz'@'Aaz'Baz'C'G'D'Eazb�'Fazv�t�az'Haz'Iazt�'K*�'L'j'M'c'N'X'Oaz'P'T'Qazaz'R'SazmgC'Uazaz'V'Wazt�az'Y'^az'Z'[az'\azaz']u�azaz'_az'`az'aaz'bazu�az'd'eazaz'f'gazaz'h'iazazu�'k(Paz'laz'm'nazaz'o'p'r'qazazt�'sazaz't'u'�'v'�'w'�'x'�'y'|'zaz'{gCazgC'}''~azmt�'�'�jazazt�'�'�'�'�gC'�v�v�'�'�gCv�v�az'�'�'�azt���'�'�v�azazgQ'�'�'�'�'�'�'�gCazb�'�'�azgCgCv�az'�'�azazv�'�'�az'�'�azazv�'�'�'�'�kXb�azgC'�'�azkXazu�'�'�'�'�'�'�'�'�'�'�az�wcgC'�azgCwU'�'�'�azgCaz'�azazgQ'�'�'�'�'�'�v�gCkXaz'�'�u�t�t�gQ'�'�'�azazv�'�'�t�azw�w�'�'�'�'�'�'�'�'�azwv�kX'�'�gQv�v�az'�'�'�'�mgCazw*'�'�u�mgC��'�'�'�'�'�'�gQv��az'�'�t�waz��'�'�'�'��wU�"j'�'�jubu��1'�('�'�'�'�'�'�'�'�'�'�u�mazgC'�'�gCwu�jaz'�m'�maz'�'�'�'�'�'�v�kXazu�'�'�t�kXmaz'�'�'�'�azb�b�az'�az�?u�'�('�('�(b�(gCaz((v�azazgQ((((w*v�azb�(	(
jazmaz(((
(((b�azu�az((w�azkXgC(((wgCv�(azgCb�((3(('((!((((gCwt�v�( az�Maz("(%(#($gCwwgCaz(&waz(((-()(+(*azazt�az(,azv�(.(0az(/azw(1(2gCt�az��(4(B(5(;(6(9(7(8b�t�v�m(:azjw(<(?(=(>azt�wj(@(AgCwmaz(C(I(D(G(E(FjazgCazaz(Haz�(J(M(K(L�azv�az(N(Oaz�"azgCaz(Qaz(R(Saz(Tazaz(U(V)+(Waz(X(�(Y(�(Z(t([(f(\(_(]az(^gCazgC(`(c(a(bb�t�azub(d(ejv�azt�(g(n(h(k(i(jazv�kXaz(l(mv�az�1��(o(qaz(pv�az(r(sazgQazb�(u(~(v({(w(yaz(xgCazaz(zu�azaz(|(}azazgC((�(�(�(�(�v�azazkX(�(�b�azgCaz(�(�(�azkXazaz(�azgC(�(�(�(�(�(�(�(�(�azv�gC(�azazb�(�(�(�(�v�u�v�az(�b�azw(�(�(�(�(�(�v�azgCt�(�(�azw�w�v�(�(�(�(�jazu�az(�(�azv�b�az(�(�(�(�(�(�(�(�t�v�v�az(�(�az�?azm(�(�(�(�azkXv�u�(�(�mv�mu�(�(�(�(�(�(�wt�t�j(�(�azw�v�t�(�az(�(�gCwu�j(�(�(�(�(�(�(�(�(�(�mazaz(�mgC(�(�(�(�azwazu�azgQ(�(�(�(�(�azv�az(�(�azv�azj(�(�(�(�azmazv�(�(�azu�azu�(�(�(�(�(�(�(�(�azkXmv�(�(�wt�kXb�(�(�(�(�azgCt�b�(�azw�az(�(�(�(�(�(�gCv�v�gCaz(�waz(�(�(�azv�t�az(�v�u�(�)(�)(�)(�)(�)b�v�azu�))u�wv�azaz)az)azt�)))	))
)w�mv�kX)
azb�gC))azv�az)azm)) ))))))v�wazmaz)azgC))))t�u�azgQ)azjaz)!)()")%)#)$azv�gQw)&)'v�v�t�waz))az)*v��),)�)-)�).)^)/)D)0);)1)5)2az)3)4az�wcub)6)8)7azw�ub)9):�?�M�[wU)<)?)=)>gCt�azt�)@)BgC)Aw�w)Cu�gC)E)P)F)J)G)Im)Hv�azv�az)K)MgC)Lazv�)N)OgCv�v�az)Q)X)R)U)S)Tazu�u�az)V)WazgCgCu�)Y)[u�)Zazv�)\)]v�azazt�)_)u)`)k)a)f)b)e)c)dazgCb�v�u�gC)g)i)hb�mazaz)jww)l)r)m)p)n)o�?v�v�w�az)qgCb�az)saz)tw�gC)v)�)w)~)x){)y)zmububaz)|)}v�b�azgC))�)�)�gCb�t�azaz)�azw�)�)�)�)�)�)�azv�wj)�)�azgCgCazaz)�)�azazgC)�)�)�)�)�)�)�)�)�)�w�azaz)�azgC)�)�)�)�v�azmgC)�)�maz�"v�)�)�)�)�az)�gCv�)�)��"azu�t�)�)�)�)�azt�azwc)�)�mazazgC)�)�)�)�)�)�)�azu�gC)�azkXt�)�)�)�azv�w)�azv�b�)�)�)�)�)�)��^azgCt�)�)�jv�azb�)�)�)�)�gCv�v�azaz)��1u�)�)�)�)�)�)�)�az)�)�b�azkXaz)�)�)�)�t�v�gCazv�)�gCb�)�)�)�)�)�)�u�v��gC)�)�mazw*az)�)�)�)�u�v�azkX)�azb�az)�)�)�)�)�)�)�)�v�azazt�gC)�wu�)�)�)�)�b�kX�?az)�)�wazb�az)�)�)�)�)�azv�az)�)�v�b�azb�az)�)�azv�b�)�*j)�*3)�*)�*
)�*****az�azv�**azgCwwU*az**	�^azv�b�*****
azw�azaz*waz****azmazgQ**t�v�azm**&** ****wu�azm**mu��iaz*!*#u�*"v�kX*$*%m�^v�t�*'*-*(*+*)**t�azazv�*,azu�az*.*1*/*0v�azazw�*2v�azv�*4*P*5*B*6*=*7*:*8*9v�azmt�*;*<mt�u�v�*>*@*?azgCwaz*Aaz�*C*I*D*G*E*Fwv�waz*Hazt�kX*J*M*K*Lazt�u�m*N*Ou�v�jaz*Q*]*R*Y*S*V*T*Uu�wcw*u�*W*Xazv�jaz*Z*[b�gCaz*\azv�*^*d*_*b*`*aazv�v�azv�*cv�az*e*h*f*g��az�wv�az*i�az*k*�*l*�*m*z*n*s*o*q*pazw*�az*razgC*t*w*u*vv�azgCaz*x*ywUb��az*{*�*|*}azgC*~*wazgCaz*�*�*�*��mazw*�azmaz*�*�*�*�*�*�*�azb�gC*�azb�t�*�*�*�azv�gC*�azaz�*�az*�*�az*�gCt�*�*�azt�azkX*�*�*�*�*�*�*�*�*�*�v�azgCaz*�*�t�mmaz*�*�*�*�t�v�gCaz*�*�v�jkX�*�*�*�*�*�*�gQv��az*�*�t�azgQaz*�*�*�*�u�b�v�kX*�*�w�v�u�az*�*�*�*�*�*�az*�azt�*�*�gCwkXv�*�*�*�*�v�w�waz*�*�mazb�az*�*�*�*�*�*�v�azazv�*�*��b�azw�*�*�*�azgCt�*�*��w�az*�azaz*�az*�az*�*�azaz*�*�azaz*�t�az*�,-*�+}*�+ *�*�az*�az*�*�az*�az*�azaz*�*�az*�azaz*�az*�*�azaz*�az*�*�az*�azaz*�kXaz*�+*�*�az*�*�az*�az*�azaz*�*�*�azu�v�v�az*�+az++az++az++{�v�t�az++
+azw*+	azw*azw*+++
azaz+az+az++az+v�az�+++azaz++azaz++azazv�+azaz++az+azaz+azv�+!+E+"+-az+#az+$+%azaz+&az+'+(+++)+*v�jjkX+,az��az+.+6+/azaz+0+1azaz+2+3az+4+5azw�azv�az+7az+8+9azaz+:+;az+<azaz+=+>azaz+?+@azaz+A+Baz+Cazaz+Daz��+F+Uaz+G+Haz+I+Paz+J+Kaz+L+Naz+Mazt�+Oazt�v�+Qazaz+Raz+S+Tazv�az+V+h+W+a+Xaz+Y+]+Zazaz+[az+\a�az+^az+_azaz+`mazaz+baz+caz+daz+e+f+gazv���az+i+o+jazaz+k+laz+maz+nazb�az+paz+q+xaz+r+s+u+tmazm+v+wt���az+yazaz+z+{+|gC�ww+~+�++�+�+�+�+�+�+�+�azaz+�az+�+�+�az+��i{�+�+�v���MkXaz+�+�azaz+�+�+�az+�azwUaz+�azw�+�az+�az+�azaz+�az+�+�az+�az+�ubub+�ub+�ub+�ub+�+�ubub+�ub{�+�+�+�az+�+�+�az+�azaz+�+�+�azb�kXgC+�az+�azaz+�+�azw�{�+�az+�az+�az+�azaz+��az+�+�+�+�+�azaz+�az+�+�az+�+�az+�az�^+�+�+�az+�wc+�wcwc+�wc+�wc+�+�wcwc+�{�wcb�w+�+�az+�+�az+�+�+�+�+�azazw+�az�azaz+�+�az+�az+�gC+�gC+�gC+�gCgC+�gC+�gC+�gCv�az+�az+�+�azaz+�+�azaz�+�+�az+�az+�az+�az+�+�az+�+�azb�b�v�az+�az+�+�az+�az+�az+�+��"��?az+�,+�,+�az+�az+�,
+�az+�,+�,+�+�b��w*waz,v�az,az,azaz,az,,azaz,,	azaz�az,az,,
v�az,��az,az,,,az�1azaz,az,az,az,,azazv�,,%,azaz,az,az,,az, ,",!azazw�,#,$azv�v�az,&azaz,',(az,)az,*azaz,+,,azaz�-,.az,/,9az,0,1az,2az,3az,4azaz,5,6az,7az,8azazw�,:az,;azaz,<az,=,>,O,?,J,@,G,A,D,B,Cb�v�kXv�,E,Fb�kX�"b�,Hb�b�,IkXb�,Kaz,Laz,M,Nb�kXgQb�,Pazaz,Q,Raz,Sazazv�,U,jaz,V,Wazaz,Xaz,Yaz,Zaz,[,\az,]az,^azaz,_,`az,aaz,baz,cazaz,d,eaz,faz,gaz,hazaz,iwaz,kaz,lazaz,m,naz,oaz,paz,qaz,raz,sazaz,t,uaz,vaz,wazaz,xaz,yaz,zaz,{az,|az,}az,~v�az,�,�,�F�,�,�,��;,��;,��;F��;,�F��;,�,�F�F��;,�,�,�,�,�az,�az,�az,�az,�azaz,�az,�,�azaz,�az,�,�azaz,�,�,�gCgQb�,�,�azv�az,�,�,�,�,�,��H,�,�,�,��V�d,�,��q,�,�G,��F����dG�,�,�Gt,�,�Gt,�,�Gt,�Gt,�,�Gt,�Gt,�GtGt,�Gt,�Gt,�Gt,�Gt,�Gt,�Gt,�Gt�;,�GtGt,�,�GtGt,�Gt,�F�,�F�,�,�F�F�,�,�F�F�,�,�F�GtF��V,�G��H,�,�,�,�Gt,����,�,��F�,�,�F��F�F��,�,�,�,�,�GtG�F�,�F�,�,�Gt,�,�GtGt,�,�Gt,�GtGt,�Gt��,�GtGt,�Gt,�Gt,�,�Gt,�GtGt,�,�GtGt,�,�GtGt,�,�Gt,�Gt,�GtGtF�,�,�,�,�,�,����V�G�i@G�,�F�,�F�,�,�,�,������,�F�G�F�,�-
az-az-az--az-az-az-az-az-az-	azwaz-az--�az-
--X------j-jj-j--azaz-az-az-az-az-az-az--azjaz--)- -$-!j-"w�-#jw�j-%-(-&w�-'w�w�az��jaz-*az-+-,w�w�az-.-9-/-2-0w�az-1azw�-3-7w�-4-5w�-6w�azw�-8w�w�j-:-D-;-C-<j-=��w�->-?az-@az-Aaz-Bazw�azw���-E-N��-F-G�-H�-I�-J�-K��-L�-M��-Oaz-Paz-Q�
-R�
-S�
-T�
-U�
�
-V-W�
���
-Y-}-Z-l-[jw�-\-]-a-^az-_-`w�azazw�w�-b-caz-dazw�-e-faz-gaz-hazaz-i-jaz-kazw�az-m-nw�az��-o-p-z-q����-r��-s��-t��-u��-v-w��-x��-y�����az-{��-|��az-~-�--�-�jw�-�az-�w�az-�jw�-�-�az-�azaz-�-�az-�azw�-�w�-�w�az-�-���-�w�-�-�w�-�w�-�w�az-�-�az-�azaz-�jaz-�-��
-�-�-��
-��
-�-��
-��
-��
�
-��&�
�
-�-��
-�-��
-��
-��
-�-��
�
-��
�-��
�
-�-�-�-��
���
-�-�-��
�4�
-�-��
�&���
���-�-�-�-�-�v�-�-�-�-�-�az-�-�az-�az-�-�az-�azaz-�azw-�az-�az-�az-�az-�azazw-�az-�az-�-�az-�azw-�azaz-�-�azaz-�-�azaz-�waz-�az-�az-�v�-�az-�-�-�azaz-�-�azazt�azt�-�-�-�m-�v�-�-�t�-�-�t�-�t�gQt�t�-�t�-�-�t�-�t�-�-�t�v�wm-�m-�m-�m-�m-�m-�m-�mm-�m-�m-�-�m-�mm-�m-�t�m-�az.azm.maz...az.az.azaz..az.	azaz.
.az.az.
az.azaz..az.azaz..cW.cW.cW.cWcW..cW.cWcWx�../..&..!az.az.. azazM."az.#az.$.%azMMaz.'az.(.,.)az.*.+MazazM.-az..azazM.0.9.1.5az.2az.3.4azazMaz.6az.7az.8azM.:azaz.;.<azazM@.>.?azaz.@.Aazaz.Baz.C.Daz.Eazaz.F.Gazaz.H.Iazaz.J.Kazaz.Laz.Maz.Naz.Oaz.P.Qazaz.Raz.Saz.T.Uazv�az.W8�.X/X.Y.�.Z.naz.[.\az.].f.^azaz._az.`az.a.baz.cazaz.d.eazaz�.gaz.hazaz.iaz.j.kaz.laz.maz�az.o.�az.p.q.�az.raz.s.t.~az.uaz.v.wazaz.x.yaz.zaz.{az.|az.}azaz�az.az.�az.�.�az.�az.�az.�az�az.�.�az.�az.�az.�az.�.�azaz.�.�az.�azaz.��azaz.�.�azaz.�az.�.�azaz.�az.�.�az.�azaz�az.�.�.�az.�az.�.�azaz.�.�az.�.�az.�.�az.�azaz.��az.�az.�azaz.�az.��azaz.�.�.�.�az.�azaz.�.�azaz.�.�az.�az.�az�azaz.�az.�.�az.�az.�az.�az.�azaz.�.�az.�az�az.�.�az.�.�.�az.�az.�az.�.�azaz.�az.�az.�az�az.�.�az.�az.�az.�az.�az.�azaz.�az.�az.�az.�azgQ.�/).�/.�/.�.�.�az.�az.�az.�azaz.�az.�az.�az.�.�az.�azaz.�.�az.�az.�az�az.�az.�az.�az.�azaz.�az.��.�.�.�.��.��.��.��.��.��.��.���.�az�/�/��//�/�/�az�az//az/	//
az/az/az/
azaz�//az�/azaz//azaz/az/az/az//az/az/az/az/az/azaz/@az/ az/!az/"az/#azaz/$/%azaz/&/'azaz/(�azaz/*az/+/,/@/-az/./6az///0az/1azaz/2az/3/4az/5azaz�/7az/8azaz/9/:azaz/;az/</=azaz/>/?az�az/Aaz/Baz/Cazaz/D/E/Kaz/F/Gaz/Haz/Iazaz/J�az/Lazaz/M/Naz/Oaz/Paz/Qaz/R��/S/T�/U��/V�/Waz�/Y8�/Z2�/[/oaz/\/]az/^az/_az/`azaz/a/baz/caz/dazaz/e/faz/gazaz/h/iaz/jaz/kaz/lazaz/m/nazaz�B/p2�/q2�/rkXaz/s/taz/uaz/v1�/w1[/x0�/y/�/z/�/{/�/|/�/}/�/~az//�/�azaz/�azm/�azaz/�az/�azmv�az/�/�v�/�/�/�/�az/�m/�m/�mazm/�az/�m/�m/�mazm/�az/�/�/�az/�/�/�t�/�t�azt�t�/�azt�/�az/�/�/�t�/�t�azt�t�/�azt�/�/�az/�v�az/�u�/�az/�/�/�az/�/�/�v�/�v�azv�v�/�azv�/�az/�/�/�v�/�v�azv�v�/�azv�/�/�/�/�/�/�/�az/�/�/�azaz/�az/�azt�/�azaz/�az/�azt�/�v�/�/�/�az/�/�/�v�/�v�azv�v�/�azv�/�az/�/�/�v�/�v�azv�v�/�azv�b�v�/�/�az/�/�u�/�/�/�az/�/�/�ub/�ubazubub/�azub/�az/�/�/�ub/�ubazubub/�azubaz/�/�v�/�/�/�az/�/�/�m/�mazm/�m/�/�mazazm/�az/�/�/�m/�mazm/�m/�/�mazazm/�0e/�0A00000az000azaz0az0azgC0azaz0	az0
azgCaz00
00az000b�0b�azb�b�0azb�0az000b�0b�azb�b�0azb�00-v�000&0az0 0#0!b�0"b�azb�b�0$0%b�b�az0'az0(0+0)b�0*b�azb�b�0,azb�az0.0/0800az010402v�03v�azv�05v�0607v�azazv�09az0:0=0;v�0<v�azv�0>v�0?0@v�azazv�0B0W0Caz0Daz0E0N0Faz0G0J0Hv�0Iv�azv�0Kv�0L0Mv�azazv�0Oaz0P0S0Qv�0Rv�azv�0Tv�0U0Vv�azazv�0X0daz0Y0Z0_0[az0\m0]m0^mazm0`az0am0bm0cmazmazv�0f0�0g0xaz0h0iaz0j0q0kaz0l0o0mv�0nv�azv�v�0pazv�0raz0s0v0tv�0uv�azv�v�0wazv�az0yu�0z0{0�0|az0}0�0~u�0u�azu�u�0�azu�0�az0�0�0�u�0�u�azu�u�0�azu�0�0�0�0�0�0�0�0�0�az0�0�0�t�0�t�azt�t�0�azt�0�az0�0�0�t�0�t�azt�t�0�azt�0�0�0�az0�ub0�ub0�ubazub0�az0�ub0�ub0�ubazubazj0�0�v�azup0�0�0�0�az0�j0�j0�jazj0�az0�j0�j0�jazj0�1$0�0�0�0�0�0�az0�mu�0�0�u�az0�az0�0�0�az0�t�0�t�0�t�azt�0�az0�t�0�t�0�t�azt�0�0�0�0�0�az0�0�0�0�0�v�0�v�0�v�azv�0�az0�azv�az0�0�0�v�0�v�0�v�azv�0�az0�azv�azgCm0�0�0�v�0�0�0�az0�t�0�t�0�t�azt�0�az0�t�0�t�0�t�azt�0�v�0�0�0�azaz0�0�maz0�azm0�azaz0�0�maz0�azm0�10�1
up0�0�v�0�10�az0�10�v�1v�azv�v�1azv�1az111v�1v�azv�v�1	azv�111az1
11az111v�1v�azv�v�1azv�1az111v�1v�azv�v�1azv�v�az1az11"az11 u�az1!azu�1#azu�az1%1T1&1K1'151(az1)141*1/1+az1,ub1-ub1.ubazub10az11ub12ub13ubazubu�az161B17az181=19az1:gC1;gC1<gCazgC1>az1?gC1@gC1AgCazgCaz1C1D1I1E1Haz1Faz1Gu�azazu�az1Jazu�1L1Oaz1Mub1NgCaz1P1RgC1QgCj1Sazjaz1U1Xaz1V1Wazjazaz1Yaz1Zjaz1\1�1]1�1^1{1_1u1`1saz1aaz1b1c1k1d1h1eu�1fu�1gu�azu�1iaz1jazu�az1l1p1mu�1nu�1ou�azu�1qaz1razu�azb�1tb�ub1v1y1w1xubu�v�azv�1zv�u�1|1�1}m1~1u�kXkXv�1�ww1�w1�1�1�1�az1�1�1�v�1�v�azv�1�v�1�1�v�azazv�1�az1�1�1�v�1�v�azv�1�v�1�1�v�azazv�1�1�1�1�1�1�1�v�azw1�mazm1�1�az1�azj1�azu�az1�1�1�az1�1�azt�t�v�1�1�1�v�u�v�b�1�azj1�1�1�1�1�1�1�v�1�v�u�gC1�az1�azazv�1�1�1�1�1�gCazgC1�1�kXv�1�1�t�v�v�v�1�1�1�az1�1�v�t�t�az1�1�az1�azu�1�azu�t�1�1�1�1�1�azazv�1�1�1�1�u�azv�v�1�1�v�azazt�1�1�az1�1�azazv�1�1�1�1�azwv�v�1�azazj1�2K1�21�1�1�1�1�1�1�v�kX1�u�v�1�azaz1�gCaz1�1�1�1�1�1�azu�az1�1�1�1�az1�m1�m1�mazm1�az1�m1�m1�mazmv�1�azu�1�1�az1�u�azv�1�u�j2222az222azb�b�az2azj2azu�2	22
22azv�t�2
2gCu�gCaz2222u�azv�up22v�azgCu�22322%22222u�v�m22v�jv�gC2 2"2!azupaz2#2$v�mv�az2&2-2'2*2(2)jazazv�2+2,v�v�v�gC2.202/azv�az2122u�v�v�b�242@252926v�2728jt�b�az2:2=2;2<v�v�ubaz2>2?azubazgC2A2F2B2E2C2Dazb�v�kXv�az2G2I2Hazazv�az2Jazt�2L22M2i2N2]2O2V2P2S2Q2RgCwv�t�2T2Uv�v�v�az2W2Z2X2Yu�azb�az2[2\v�t�azu�2^2d2_2a2`azv�az2b2cazb�azkX2e2g2fazazv�az2hazm2j2r2k2naz2l2mazazb�2o2qb�2pb�v�v�az2s2y2t2v2uv�t�v�2w2xv�azwaz2z2}2{2|azv�gCazaz2~b�v�2�2�2�2�2�2�2�2�2�2�azv�b�v�2�2�v�azazt�az2�az2�azv�2�2�2�azaz2�v�v�2�az2�azv�az2�2�2�2�2�2�2�2�azu�v�az2�2�v�kXt�v�2�2�2�2��Ku�u�t�2�azmaz2�az2�2�2�2�v�v�v�az2�azupv�gCaz2�2�ub2�2�mazubaz2�ubaz2�3-2�2�2�2�2�2�az2�az2�t�az2�2�az2�2�v�gQ2�gQ2�2�gQgQ2�gQ2�2�gQgQ2�gQ2�2�gQ2�gQ2�gQ2�gQ2�gQgQ2�gQaz2�2�2�2�wmmv�u�2�2�azv�v�2�2�2�2�2�2�az2�az2�wm2�2�2�2�v�azazmgQ2�2�2�maz2�azgQv�2�2�v�2�v�2�v�2�v�2�v�2�2�v�v�2�v�2�v�2�2�v�v�2�2�v�2�v�2�v�2�v�w*v�wm2�2�t�2�2�azmaz2�v�v�az2�32�32�azgQ2�2�gQ2�gQgQ2�gQ2�3gQ3gQgQ33gQgQ33gQgQ33gQgQ3gQ3	gQ3
gQw*az3az3
3azgC3gC3gC3az3gC3333gCgC3333gC3gCgCazgCazgC3az3az3azgC3 3'3!az3"azaz3#az3$3%v�3&wv�gQ3(3*az3)gQaz3+gQ3,gQwv�3.8}3/39az3031az32az33az34az35az36azaz3738azazv�3:8.3;6�3<4�3=3�3>3Q3?3D3@az3Aaz3Baz3Cazv�az3E3Kaz3F3G3Hazv�3I3JgQv�kXv�3L3MgCazv�3Nv�3Ov�3Pv�azaz3R3S3�3T3�3U3�3V3�3W3c3X3\gC3Y3Zazaz3[azv�3]3_az3^azv�3`gC3agCv�3bv�az3d3t3e3l3f3h3gazgCazaz3i3j3kazv�b�u�3m3q3naz3o3pv�mv�az3rv�3sv�azm3u3|3v3y3wv�3xazazv�az3z3{azv�az3}3�az3~3gQu�gQgQ3�3�3�jazb�gC3�3�3�3�3�3�azgCaz3�gC3�gCaz3�3�az3�az3�3�v�azb�azv�3�3�3�3�gQ3�gQv�v�azjaz3�3�3�azgQ3�v�az3�3�3�3�gQazgCaz3�3�jazmaz3�3�3�3�3�3�3�3�v�mjaz3�3�gCjazj3�3�3�3�jazgCgQ3�jgQaz3�3�3�3�3�3�azgCazu�3�3�v�u�azgQ3�3�3�3�gCazgQaz3�3�azv�v�v�3�az3�3�3�3�3�3�az3�gCw�3�gCw�az3�3�w�3�gCaz3�azgQaz3�az3�3�azgC3�azgQaz3�4�3�43�3�3�3�3�3�3�waz3�az3�gCv�gCv�3�3�gQw�3�b�az3�az3�3�azaz3�az3�azv�3�43�3�3�3�3�3�3�3�w3�azb�3�3�azv�azb�az3�3�gQb�gC3�az3�gQgQgC3�3�3�3�v�u�3�v�t�v�3�3�v�3�v�kX3�3�kXv�v�v�4444
44v�az44	44t�4t�w�t�w�u�t�44t�v�4
4w�wmw44kX4v�u�44444az4w�w�az44v�4v�gQv�mgC4v�az44#44!az4 azw4"azazw�4$4G4%4(4&4'v�azmu�az4)4*474+404,4-azu�4.4/�wgQw*v�41444243az���Mub4546v�v�azv�484?494=4:4;azv�az4<az�4>azt�m4@4D4Aaz4Baz4C��az��4E4Fw�azt�v�4H4�4I4i4J4X4K4R4L4O4M4Nazw�azwc4P4Qv��Kv�j4S4U4Tazju�4V4Wmu�wqw�4Y4b4Z4_4[4\w�t�4]az4^jjaz4`4av�azazt�4c4f4d4ejazt�gQ4g4hw�b�gCaz4j4{4k4r4l4o4m4nb�waz�i4p4qkXv�azv�4s4v4t4uazwwUw4w4zwU4x4yv�azv��j4|4�4}4�4~4���1�?gC4�4�v�w�v�az4�4�4�4�azjgCv�4�azjaz4�az4�az4�az4�az4�azv�w4�4�4�4�az4�az4�azkX4�4�4�4�4�4�4�gQaz4�4�azaz4�v�v�v�4�az4�mw4�4�4�4�4�4�wb�b�v�azt�4�azgQaz4�4�4�4�az4�azw�4�azw�gQ4�4�azv�az4�az4�v�v�4�4�az4�4�4�v�mazt�4�4�4�4�jwmwaz4�4�4�4�4�4�4�4�4�4�4�azu�v�u�4�4�u�azazv�4�4�4�4�gQazb�v�4�4�b�azu�j4�4�4�4�4�azazv�az4�azgQ4�4�az4�azw4�4�v�gCjaz4�4�4�4�4�4�4�azazu�4�4�azkXjub4�4�ubw�4�4�v�w�azu�4�4�4�4�4�4�kXw�w�v�4�4�u�azv�gQ4�4�4�u�ubu�4�4�azwwub4�6c4�5n4�5C4�5 4�4�4�4�azv�t�m4�4�jgQj4�55az5azw5az555555az5v�az5	5
azgQazt�555
5azb�azgC55b�azgQgC5555gQ5azgQ55kXgCjw5555ubgCv�az55v�azazv�5!5/5"5)5#5&5$azw5%azm5'az5(azv�v�5*5-5+v�v�5,mazgQ5.azgQ5056az51az52az535455jmazv�575=585<59az5:azaz5;gQv�azgQ5>5@az5?azu�5Au�u�5Bu�az5D5S5E5P5F5GgQaz5Hu�5I5N5Jaz5K5Maz5Lazjazjaz5Oazv�5Q5Rv�azv�u�5T5_az5U5VgQ5W5]5X5\5Y5Zjaz5[azazjjmaz5^maz5`5au�w�5baz5c5j5d5h5e5gaz5fazgQazgQ5iv�gQaz5kb�5lv�5mazazv�5o5�5p5�5q5�5r5�5s5}5taz5u5yaz5vaz5waz5xazt�5zaz5{azaz5|azm5~5�55�5�azb�az5�az5�azazgQv�az5�5�5�5�v�az5�azazv�5�5�5�5�v�v�azgQ5�5�wt�waz5�5�az5�5�5�5�5�az5�azb�azb�5�5�5�5�az5�azu�azu�5�ubu�ubj5�5�az5�az5�azv�az5�5�5�5�5�5�5�5�az5�v�w�5�5�w�gCwv�5�5�5�5�t�mmb�5�5�azgCgCaz5�5�5�5�5�5�u�wmaz5�5�v�mmaz5���5�5�b�u�v�v�5�5�5�u�5�5�az5�azj5�5�5�az5�5�5�5�5�azazgC5�5�mgQu�az5�5�5�5�azwb�az5�5�mazv�az5�5�5�5�5�5�5�5�gQazazw�5�5�v�v�u�gC5�5�az5�w8v�az5�v�az5�5�5�5�5�azb�az5�5�azv�azgQ5�5�5�5�azgQazgC5�5�azwwgQu�v�5�6]5�6)5�65�5�5�5�5�v�ub5�az5�azv�5�w�5�5�azv�v�w�666az66u�6u�azu�az66	az6w86w8ub6
ubw8ub666
6666w6ububw66w6wwww666azwaz66w86w8azw8w66%66!6az6 wwaz6"6$v�6#v�azv�az6&az6'w86(azazw86*6J6+6:6,636-60az6.6/azazwUwU61v�62v�az64676566v�azazgQ68v�69gQgQv�6;6D6<6@6=6?az6>azv�azv�6A6Bv�v�6Cv�v�v�6E6Hv�6Fv�6Gv�az6Iazv�az6K6U6Lw�6M6P6Nv�6Oazazv�6Q6Saz6Razw�az6Tw���6V6Z��6W��6X6Yaz��w�6[w���6\azw6^6`az6_azu�6a6bv�ububwU6d6�6e6laz6f6g6j6h6iv�v�w8az6kv�azw�6m6�6n6�6o6|6p6v6q6t6r6sazb�azwv�6uv�az6w6z6x6yazv�u�az6{v�kXu�6}6�6~6�wU6b�az6�6�w�gCazgC6�6�6�6�azv�azu�6�6�azv�v�v�6�6�6�6�6�6�6�6�v�azv�az6�azazv�az6�az6�azw6�6�6�v�6�v�v�gQ6�6�6�6�t�azazv�6�w�v�w�6�az6�6�6�6�6�6�6�6�w�v�v�ww6�wt�6�6�t�6�t�w�w�6�w�ub6�6�6�6�6�6�ubwjv�6�6�v�w8w8v�6�6�6�v�v�v�6�azv�az6�az6�6�6�6�6���b�t�6�6�wv�6�az6�6�6�az6�az6�6�6�6�6�6�gCazgCb�6�6�mazv�gC6�6�6�6�u�azv�u�6�6�azt�wazazv�6�6�6�6�azu�v�ub6�azubaz6�7i6�76�6�6�6�6�6�6�6�u�6�t�v�6�gCv�6�6�az6�6�6�6�6�gCgCazgCaz6�azgCaz6�az6�azgCv�6�6�az6�6�6�v�v�wu�6�6�6�azv�az6�6�azmmaz6�7
6�76�7gQ6�azv�77v�azgQ�az777v�v�v�7az7az7	az7
az77�az�7777az7azgQ77v�azv�v�7777az�azv�77azm7azgCaz77@77.77$7 7!azkX7"7#gQkXgQkX7%7'az7&t�v�az7(7)az7*azaz7+7,azaz7-gQt�7/79az707172t�v�az7374az7578v�7677v�azv�v�az7:7=7;7<mwv�v�7>7?mazv�az7A7W7B7G7C7E7Dazt�mm7Fv�az7H7U7I7Tv�7Jaz7Kaz7L7M7P7Nazaz7Oaz�7Qazaz7R7Sazv�azv�wv�7VgQaz7X7b7Yaz7Z7\az7[wcw8u�7]7^az7_az7`az7aazv�az7c7f7d7et�azgQv�7g7hv�v�mv�az7j7k7�az7laz7maz7n7oaz7paz7q7�7r7{7s7w7taz7uazaz7v�Kazaz7xaz7y7zv�azv�7|7�7}7�7~7azv�waz7�7�7�7�t�azazgQgQ7�gQwU7�7�az7�7�7�u�azazv�7�7�7�azwUaz7�7�azmmaz7�7�7�7�7�7�7�7�az7�jgC7�v�v�azaz7�azv�7�7�7�7�7�7�gQazwv�7�7�gCazgCu�7�7�7�7�mgCazkXaz7�azv�7�7�7�7�7�7�kX7�kXv�7�7�u�v�v�v�7�7�7�7�v�t�t�az7�azazt�7�7�7�7�7�mv�m7�7�v�v�v�az7�7�7�7�v�az��v�7�7�w�azw�gQ7�az7�az7�az7�azaz7�7�7�7�7�7�7�7�7�az7�7�gCazv�7�7�7�7�azv�v�w7�7�azwt�az7�7�7�7�b�7�azw�7�7�w�azv�az7�7�7�7�gQazv�az7�7�azjazj7�7�7�7�7�7�7�7�azu�gQaz7�b�azv�7�7�u�az7�azazj7�7�7�7�7�azv�gQ7�azazgQ7�7�7�ububaz7�7�azw�w�v�7�88888888ubu�v�8wazw888
88	azwwaz8azw8az8
88888w8wUazv�88v�azv�v�888w�azw�az8��w88%8888wj8azv�v�8 8"8!t�jt�8#8$v�azazv�8&8+8'8)u�8(u�v�8*azv�az8,azaz8-v�v�8/8b80az818[82az83az84az85az868Paz87az88898H8:8A8;azaz8<8=8?az8>gCaz8@azazgCaz8B8Caz8D8Faz8EazkXkX8GkXaz8Iaz8Jaz8Kaz8L8Naz8Mazb�8Oazb�azaz8Q8Raz8Sazaz8T8U8Xaz8Vaz8Wazb�8Yaz8ZazgCazaz8\8]az8^az8_azaz8`az8agQaz8caz8daz8eazaz8faz8g8haz8iaz8jazaz8k8laz8m8uaz8naz8o8p8s8q8razmmv�v�8tv�az8vazaz8w8x8{8y8zazgQgQub8|azubaz8~8v�azaz8�v�u�az8�8�8�8�8�az8�u�az8�az8�t�8�mv�v�8�8�8�8�8�8�8�azaz8�az8�8�az8�az8�az8�az8�az8�azaz8�8�az8�az8�az8�azaz8�az8�8�azv�azt�v�u�m8�8�azv�8�az8�t�8�az8�az8�8�v�8�waz8�8�8�az8�8�8�8�8�8�u�wv�m8�8�wv�v�u�8�az8�8�v�v�azv�8�8�8�8�8�8�8�8�v�b�v�az8�8�ubgCmaz8�8�8�8�ju�upt�8�8�azmu�az8�8�8�8�8�8�azv�jv�8�v�azu�8�8�8�8�gCv�ubb�8�8�azt�v�t�8�9�8�9J8�9'8�E�8�A8�98�E�8�98�8�8�H:8�E�8�8�8�H�A8�@&A�X8�8�8�8�E�8�8�E��X�X�e8�8�8�8��s���8�8������s8�Ez8�8�8���8�8�8�@&A@&8�8�Aes�Ai@8�98�98�9�18�999��m9��m99��1��1u��1999	m9
9m�
m�9
9m9m��9u��1m99999�A9AC��'A99F�EE�6Ae@&9@&9@&@&99@&@&9 9!@&@&9"9#@&9$@&@&9%@&9&@&�EE�9(9)A9*AE9+9,9-F�@&9.AE9/909=9196929493AeA@&Ez95�A979:9899E@&HGaz9;9<AeAH:E@&9>9?@9@9D9A9BwUazaz9Cjaz9E9G9Fazazb�9H9IazkXb�az9K9�9L9�9MA9N9Y9O9X9PA9QE�9RE�9S@&9TF�9U@&9V9W@&��Ba�@&A9Z9�9[9�9\9lH:9]9^H:9_H:9`H:9a9gH:9b9cH:9dH:9eH:9fH:�H:9hH:9iH:H:9j9kH:�H:9m9�9nAe��9o9p9}9q9x9r9u9s9t����9v9w�������9y9{��9z����9|��
9~�
99��
9��
��9����9�9�9�9�9�9�9�9��(�H�V�69�9��D�RG��9�F�9�9����`�n�}Ae@&E�E9�E9�E9�E9�EE9�E9�E9�9�EE9�E9�E9�9�E9�EE9�E�H�9�H�9�H�9�H�9�H�9�H�9�9�H�9�H�9�H�H�9�9�H�9�H�H�9�9�H�H�9�H�9�9�H�9�H�H�9�H�9�@H�9�H�9�A9�9�9�9�9�E9�@&9�9�9�9�9�9�9�9�9�9�Es�H:E9�EE@@&9�9�9�9�E9�9�Ez�Ez�AeA9�@&9�E�9�9�Ez9�9�Ez�Ez�A9�Ez�'H:AH:Ae9�A9�E�Ba9�:az9�9�9�az9�az9�9�az9�9�az9�az9�9�azaz9�9�az9�az9�v�az9�9�az9�az9�az9�az9�azaz9�9���9����9�azaz9�9�azaz9�9�az9�az9�azaz9�9�az9�az9�az9�az9�azaz�B:::azaz::az:az:az:az:az:azaz:	:
azazv�az:az:
:az:azaz::az:az::az:gCt�:azazu�::�::|az:::%:az:azaz::az: az:!az:":#azb�:$azb�az:&:(:'azv�azv�:):*az:+az:,az:-:R:.:?:/:9:0:5:1:2azwcaz:3v�:4v�azaz:6:7azu�:8u�az:::<:;azjup:=az:>wqwqaz:@:F:A:C:BjgCv�az:Du�:Ev�az:G:L:H:J:Iu��ub:Kazazub:M:Q:N:Ov�ubaz:Pazububw:S:j:T:]:U:X:Vazaz:Wv�az:Y:\:Zj:[wUt�wUwUu�:^:e:_:b:`azgQ:agQaz:cazu�:du�az:f:igC:gb�:hb�azu�az:k:u:l:p:maz:nu�gC:ogCaz:q:taz:rm:smazazw:vaz:w:ygC:xwazaz:z�1:{�1az:}:�:~:�::�v�azv�az:�az:�azv�az:�:�:�:�:�azaz:�:�az:�:�:�:�az:�azj:�:�v�v�t�m:�:�:�:�:�:�az:�b�j:�:�:�:�ubu�kXv�:�:�v�v�gCv�:�:�:�:�az:�t�m:�:�v�azazup:�:�:�:�jv�v�v�:�:�u�v�u�v�:�az:�az:�:�:�:�mwwv�:�azv�azaz:�:�azaz:�:�az:�azaz:�az:�jaz:�:�upaz:�:�kXaz:�az:�az:�az:�:�:�v�:�:�v�v�v�azv�v�:�;Y:�;:�:�:�az:�:�az:�:�az:�az:�az:�az:�:�:�:�:�:�u�v�t�m:�azb�gC:�az:�:�v�v�v�azaz:�az:�:�azaz:�az:�az:�:�az:�azazb�:�;az:�az:�az:�:�:�:�:�:�azaz:�:�az:�azaz�B:�az:�az:�azaz:�:�az:�az:�az:�azaz:�az:�az:�:�azkXazaz:�az:�az;;az;azazgCazu�;;;azaz;az;az;	;
azaz;;azaz;
;az;azaz�az;;v�;;5;;;;az;;;az;azt�wU��;;wU��t�;jw�;;&; ;$u�;!;"b�;#wcb��;%w��wc;';,;(;*;)az�wazaz;+u�az;-;4;.;1;/u�az;0azu�;2az;3azu�az�waz;6;N;7az;8;A;9;?;:t�;;;=az;<v�b�az;>jaz;@azazm;B;G;Cj;Dt�;E;Fazv�v�t�;Haz;I;L;J;KgCazkXv�;Mazv�ub;Oaz;Paz;Q;S;Razmj;T;V;Uazv�az;Waz;Xazv�v�;Z<�;[<�;\;faz;]az;^az;_az;`az;aaz;baz;c;daz;eazazjj;g;haz;i<];j;�;k;�;l;�;m;�;n;{;o;z;pu�;qaz;raz;saz;taz;u;vazj;w;xjazj;yjazazt�;|;�;}az;~;�;az;�azaz;�;�az;�azaz;�azt�;�az;�;�;�;�;�azt�az;�t�azt�;�t�;�azt�u�t�az;�;�;�;�az;�;�;�;�az;�;�;�azaz;�;�gCazgC;�azaz;�azgCaz;�az;�az;�az;�;�;�;�azgCazgCazupazaz;�az;�;�;�;�b�;�b�;�;�;�;�;�b�;�;�b�azazb�b�;�;�b�azb�;�b�;�az;�azb�azb�;�;�;�;�;�;�b�b�azb�;�b�azaz;�az;�az;�azb�;�;�;�;�az;�azv�;�mazv�v�;�;�v�azt�;�;�;�;�;�az;�azv�az;�az;�;�az�KazgC;�;�;�;�;�v�az�K;�;�b�t�u�gC;�;�az;�azv�;�;�v�v�v�;�;�az;�az;�az;�az;�;�j;�j;�jazjaz;�<;�<;�;�;�;�;�az;�;�u�;�u�b�b�az;�;�;�;�azub;�upubup;�;�u�;�u�kXkXaz;�<;�<<<<v�azv�j<jaz<<azv�<v�v�v�<	<
<
<v�<v�v�v�t�<<<mt�mv�<v�az<<<<<<b�v�kXaz<<v�b�gCaz<<azv�<<azjjaz< <=<!</<"<$ub<#upv�<%<.<&kX<'az<(az<)az<*az<+az<,azj<-jazazv�<0<;<1<2u�azgC<3<4az<5az<6az<7az<8az<9az<:mmazaz<<v�b�<><L<?<B<@<Av�v�azm<C<Kub<D<Eaz<Faz<Gaz<Haz<Iaz<Jazv�azmaz<Maz<Naz<O<V<Paz<Qaz<Raz<Saz<Taz<Uazt�az<Waz<Xaz<Yaz<Zaz<[az<\azupaz<^<�<_<�<`<n<a<g<b<e<c<dazv�azb�<fazv�t�<h<k<i<jubazv�az<l<maz�Kazv�<o<|<p<r<qazb�az<sv�az<t<uaz<vaz<waz<xaz<y<{m<zmazmaz<}<<~v�v�gC<�gCkXaz<�<�<�<�<�<�v�<�azt�<�<�t�gCv�az<�<�azw<�<�azgCupaz<�<�<�<�<�<�v�<�<�az<�az<�az<�az<�azv�<�<�azv�azu�az<�<�azv�v�az<�<�az<�azv�<�<�v�<�v�gCgCaz<�<�<�<�<�<�<�<�az<�u�v�<�<�v�jupaz<�<�<�<�t�azazu�az<�azv�<�<�<�<�<�mazt�m<�azu�<�<�<�<�azu�azv�az<�m<�<�az<�az<�az<�azv�azaz<�<�<�<�<�<�<�azb�azt�<�<�wazu�az<�<�<�<�azmj<�<�az<�az<�az<�azt�az<�<�ju�azgC<�<�az<�az<�|<�<�����<�<�����<���<���<���<�<�����<�<�����<���<�����kXazaz<�<�az<�=;<�az<�az<�=3<�=/<�=,<�az<�=<�=<�<�<�azaz<�<�<�az<�azjj<�jaz=az=azaz=azj====	==v�b�v�=b�kX=
=gC=v�b�=
=b�v�v�b�=gC=gC===b�gCb�=gCb�v�=az==&====t�v�=u�v�m== u�=u�v�=!=#u�="u�v�=$=%u�v�v�u�='m=(m=)m=*=+v�t�t�m=-=.kXupu�gC=0=2=1azubv�v�v�=4=6=5azv�az=7azaz=8=9az=:azkXazaz=<==az=>az=?az=@az=Aaz=Baz=Caz=Daz=Eaz=Faz=G=P=H=Kaz=I=Jazmaz=L=Mazj=N=Ojv�v�az=Q=Y=R=V=Saz=T=Uazv�v�azaz=Waz=Xazv�=Zaz=[az=\azv�az=^��=_F�=`E�=a>	=b=�=c=�=d=�=e=�=f=v=gazaz=h=iazaz=j=kaz=laz=m=s=n=q=o=pgCb�t�m=rwv�u�b�=t=uaz�Kaz=w=�=x==yaz=zazaz={=|az=}az=~azazgC=�az=�az=�az=�az=�=�=�azaz=�az=�azu�=�=�=�az=�azu�az=�az=�azu�az=�az=�az=�az=�=�=�=�=�=�=�=�=�=�j=�jazv�az=�=�=�ubazubv�=�v�gC=�b�=�=�gCkX=�azkXv�=�=�=�=�b�u�=�=�u�v�=�azv�azt�=�=�azv�=�v�v�=�az=�azaz=�=�azaz=�maz=�=�=�az=�azubaz=�az=�=�upazmazaz=�=�=�=�azazm=�=�=�azaz=�=�azt�azazw=�=�=�azaz=�az=�az=�u�az=�az=�azaz=�=�az=�az=�az=�az=�az=�azaz=�=�azazv�=�=�az=�=�=�=�=�=�=�azwaz=�=�azaz=�=�azaz=�=�az=�az=�azaz=�az=�=�azaz=�=�azaz=�az=�=�azaz=��[azubazaz=�=�az=�az=�az=�azv�azaz=�az=�=�az=�azaz=�=�azaz=�az>>>az>>azb�az>>az>u�v�>azmt�>
D�>?�>?>
>�>>~>>r>az>>6>>(az>az>>azaz>az>>azaz>>>!>>az>az>azkXaz>> azkXaz>">%az>#az>$azkX>&az>'azkXaz>)azaz>*az>+az>,>-az>.az>/az>0azaz>1>2az>3az>4az>5azmaz>7>T>8>G>9az>:az>;az><azaz>=az>>az>?az>@>Aaz>Baz>C>E>Dwazw>Fazwazaz>H>Iazaz>J>Kazaz>L>Maz>Nazaz>Oaz>P>Qaz>Razaz>Su�az>Uazaz>V>Waz>X>baz>Yaz>Z>[az>\az>]azaz>^>_azaz>`az>agCazaz>c>daz>eaz>f>laz>g>haz>iazaz>jaz>kb�azaz>m>naz>oaz>pazaz>qb�az>saz>taz>uaz>vaz>waz>xazaz>yaz>z>{>}>|azazjjaz>>�>�az>�azaz>�>�az>�azaz>�>�azaz>�>�az>�az>�azt�azaz>�az>�>�az>�az>�azaz>�>�azazu�>�>�>�>�az>�>�>�>�az>�az>�>�az>�azv�>�azv�az>�az>�>�>�az>�>�azv�v�azaz>�>�azv�az>�>�>�az>�>�>�>�>�>�azv�az>�v�azaz>�v�az>�>�>�>�>�azazv�>�>�v�azazv�>�>�v�>�v�az>�v�v�azaz>�>�az>�>�az>�>�az>�>�>�>�az>�v�azazm>�az>�>�kX>�kXaz>�az>�azv�az>�az>�az>�az>�azaz>�>�az>�az>�az>�az>�azu�az>�>�az>�>�>�az>�>�azaz>�az>�v�az>�>�az>�>�azv�az>�azaz>�>�azv�az>�>�>�az>�>�>�>�>�>�>�>�azv�v�az>�azazv�>�az>�>�azv�v�az>�az>�az>�azazv�>�az>�az>�az>�???????????b�v�wv�?azv�t�?	??
v�jazv�az?
??azubjb�w???v�azkXv�t�????mazubgC?azjaz??x??+?az?azaz?az? ?!az?"az?#az?$?)?%az?&az?'azaz?(azw?*azazgQ?,?Daz?-az?.?/?=?0azaz?1?2az?3?9?4az?5az?6az?7azaz?8v�az?:az?;azaz?<azw�?>az???B?@az?Aazazjaz?Cjaz?E?o?F?Saz?G?H?P?I?M?Jazaz?K?Lv�v�az?Nazaz?Oazv�?Q?Razv�v�az?T?b?U?^?V?\az?W?X?Zaz?Yazv�az?[azv�az?]azw�?_az?`?av�azw�az?c?k?daz?e?iaz?f?g?hv�azv�j?jazazw�?l?n?mazazv�azv�az?p?qaz?raz?saz?taz?uazaz?v?wazjaz?y?�?zaz?{??|az?}az?~azjaz?�az?�az?�?�?�?�azjaz?�w�az?�az?�azazw�az?�?�azaz?�az�"?�C�?�A�?�@c?�?�v�?�?�?�?�?�v�?�?�?�?�?�b�?�b�w�?�?�kXwc?�b�?�?�b�az?�azb�?�?�azb�?�b�?�b�az?�?�?�?�b��M?�b��Mw�?��"azgC?�az?�?�?�?�kX?�az?�?�azgC?�?�azgCaz?�?�?�?�?�gCkXgCb�kX?�wub?��MgCv�?�?�wv�?�azw*?�?�?�?�?�?�?�?�?�?�?�gCazb�wcazaz?�w�ubgCkX?�?�?�w?�azgQaz?�?�azub?�b�az�"az?�?�?�?�?�?�?�gQ?�b�w?�b��Mb�?�azw*v�?�?�w?�?�w?�wb�waz?�gCb�?�@%?�?�?�?�?�?�?�?�az?�w*kX?�?�v�?�gCubw�kX?�?�?�azb�azaz?�v�?�gCaz?�?�?�az?�az?�azv�az?�az?�az?�?�azu�u�az@@@@gC@@gC@az@az@@gCgQv�v�@	@@
@ubb�@b�v�@
v�az@v�@@azv�@v�wcaz@@@@@@gC@v�kXazgC@{�v�@v�@v�@v�@v�az@ @"gC@!b�az@#@$v�gCw��@&@J@'@=@(@6@)@4az@*az@+@,az@-az@.az@/az@0az@1azaz@2az@3gQazaz@5b�w@7@:@8@9kXwazkX@;@<v�wkXb�@>@D@?@A@@kXv�b�@B@CkXv�kXb�@E@H@F@Gb�gQv�kX@Ib�v�b�@K@W@L@Q@M@O@Nv�kXv�v�@PkXb�@R@T@SkXb�kX@U@Vv�wazb�@X@]@Y@[kX@ZgQv�b�@\kXv�@^@a@_@`kXv�v�kXb�@bv�gQ@d@�@e@�@f@�@g@�az@h@i@{@j@u@k@o�@l@m{�az@nw�az@p@rgQ@qwU�@s@twaz{�az@v@x@wgCb�gC@yazaz@zwaz@|@�@}@�@~@�@@�@�@�gQ�w�az@�@��"azgQu�@�@�wazubaz@�@�@�@��azu�azv��"@�@�@�@�b�u�w*azazu�v�az@�az@�az@�@�@�v�azv�@�azazw@�@�@�gC@�gC@�@�az@�az@�@�az@�az@�az@�az@�az@�azaz@�az@�gCaz@�gCazgC@�@�@�@�@�@�gC@�gCwgC@�wgCw@�w@�gC@�az@�@�azgQaz@�@�@�@�@�@�gCwwaz@�@�gCububgC@�@�@�@�wgCazub@�@�wazazw@�Au�@�@�@�@�@�@�@�az@�az{�@�@�gQ@�wUv�@�@�wgQv�v�@�@�@�@�b�gC@�gCazgC@�@�@�@�gC@�@�azgCaz@�@�gCazb�azb�@�b�v�@�@�@�@�@�@�@�@�@�@�az�w�az@�@��wwu�@�@�az@�wwub@�gQb�@�@�@�@��w@�b�u�@�@�azb�azv��"@�@�@�@�b�u�w*@�b�v�v�gCAAAA	Av�v�Av�AAv�Av�v�AkXubv�A
gCgQAALA
gCAAv�AAgCgCAb�gCAgCAA4AA&AAAAAAb�w�kXwcAAwb��MkXAA!AA gCwgCkXA"A%A#�"A$gCubwww*A'A.A(A+A)A*w��"gCgQA,A-gCb��wA/A2A0A1�b�wUv�A3b�wb�A5A=A6A9A7gCgCA8v�b�A:gCA;A<gCv�v�gQA>AJA?ABA@AAubb�b�gCACAGADgCAEAFb�v�gCubAHgCAIgCubgCgCAKv�gCAMAQANgCAOgCAPgCgCubARAUb�ASgCATwgCgCAVAWApgCAXgCAYAZgCA[gCA\gCA]AhA^AagCA_gCA`gC�AbAeAcAd�gCgCb�AfAgb�wUwUv�AiAnAjAmAkAlv�gCb�gCwgCgCAob�gCAqA}gCArAsgCAtgCAugCAvgCAwAygCAxgCgQAzA{wgCA|gCv�gCA~A�AgCA�gCA�A�A�A�A�A�gCA�kXwcA�A�ubgCgCkXA�A�A�A�wv�wUgCA�A�gQb�gCubA�A�gCA�A�gCgC�A�A�A�gCA�gCwgCb�gCA�gCA�gCA�gCA�A�A�A�gCA�kXA�wcgCA�A�b�gCgCkXA�A�A�A�wv��b�b�A�wgCA�B�A�BLA�BKA�A��KA��KA��KA�A��KA��KA��K�KA��Kv�A�A�A�A�A�A�A��KA��KA�A�az�K�KA�wq�KA�A�A�A�A�A�A��K�KazA�A��Kaz�KwqA��K�KA�az�KA�A�A��KA��Kaz�KA�A�A��Kaz�KA��Kwqv�A�A�A�A�A�A��KA��KA��w�KA��K�KA�wq�KA�A��KA�A��Kwq�KA�A�A�azaz�KazA�az�KA�azA�A��KA�A�az�KazA�A�A�azazwqA�az�Kv�A�BA�BA�A��KA�A�A�A��K�Kaz�KA��KazA�A�A�A�A��K�KwqA�A�az�Kaz�K�KA��KBaz�KBBBB
BBBwqv��KB�K�KBB	azB
azazBBazaz�K�KBB�K�K�wBBBBB�Kazwq�KBwq�KBB�KBaz�KBazaz�KBB1BB'BB!�KB�KB �KazB"B$�KB#�Kaz�KB%�KB&�KazB(B-B)B+�KB*�Kaz�KB,�KazB.B/az�KazB0�KazB2B<B3B8B4B6B5�Kaz�KB7az�KwqB9azB:azB;v��KazazB=B>azazB?azB@BAazBBazBCBJ�KBD�KBEBFBHwqBGwq�KBI�K�wwq�Kazt�v�BMBmBNB\BOBPazt�azBQBRazBSBUBTazv�azBVBZBWazBXBYazv�v�azB[azv�azB]�KB^BjB_BiB`azBaazazBbazBcBdazBeazazBfBgazBhaz�Kaz�KazBkazBlaz�KazBnB{mBomBpBqBxmBrmBsBtBwt�BumBvmt�mt�BymBzmt�mB|B�B}B�B~B�B�K�KB�B��KB��Kv��KB�B��Kv�B��KB�B��KB�v��KB�B�v��Kv��KB�B�B�B��KB�B�v�B�v�B�v�v�B�v�B�v�B�B�v�B�v�B�v��Kv�v��Kv��KB�B�B��KB�v��KB�B�B�v�B�B�v�v�B�B�v�v�B�B�v�B�v�B�v��Kv�B��Kv��K�KB��KB�B��KB�B�v��KB��K�KB��Kv�B�CWB�C	B�azB�B�B�B�B�v�B�v�B�v�B�v�v�B�B�v�B�v�B�v�B�v�v��KB�B�B�B�v�B�B�B�B�B�azB�B�azB�azB�azB�azB�azB�az�Kazaz�Kazv�B�v�B�v�B�v�B�v�v�B�B�v�v�B�B�v�B�v�B�v��Kv�B�B�B�B�B�v�B�v�B�v�v�B�B�v�B�v�v�B�B�v�B�v��Kv�B�azazv�B�B�B�v�B�v�B�v�B�v�v�B�v�B�v�B�v�B�v�B�v��Kv�B�v�azv�B�B�CB�azv�B�v�B�v�B�azB�azB�azCCazCazCazCazCaz�KazCazCazv�azC
CCCCmC
mazmCCmCmCmv�CazCazmazCCHCCBCC@Cv�CazCazCazCC3CazCC)C azC!C%azC"C#azC$azv�azC&azC'azC(azv�azC*azC+C/azC,C-azC.azv�azC0azC1azC2azv�azC4azC5C<C6azC7C:C8azC9azwazC;azv�azC=azC>azC?azv�azv�CAv�v�CCCECDwv�wCFCGv�wv���CICPCJCMCKCLv��wv�CNCOwt���v�CQCTCRCS�wv�v��wCUCVt��t�v�CXC�CYCwCZCbC[azC\C`C]azv�C^C_azv�azCaazazv�CcCjCdCgCeCfwazv��wChCiwu�az��CkCmCl�����1CnCqCoazazCpazwCrazCsCuwqCtazwqCvazwqazCxC�CyC~CzC}C{C|az�Kaz�Kaz�KC�K�KazC�C�C�C�C�C�az�Kaz�KazC�az�KC�C�C�C�az�KC��K�KazC�azC��K�KazC�azC�C�C��KC��KC��KC�azC�azC�C�C�azC�azC�azC�C�azC�C�azazC�azC��KazazC�C�azazC�azC��KazazC�C�C�C�azC�azC�azC�azC�az�KazazC�azC�azC�az�K�KC��KC��KC��KazC�C�C�azazC�C�azazC�azC�azC�azC�azC�azC�C�azazC�azC�azC�azgQC�D^azC�C�C�C�azC�azazC�azC�azC�C�C�v�v�t�azC�D0C�C�C�C�C�C�C�azC�azazC�azC�azC�C�azC�azC�azC�azazC�v�azC�C�azC�C�azC�azC�azC�azC�azazjC�C�az�C�azv�azC�C�C�azazC�azC�C�azazC�C�azC�azv�azC�C�azC�az�azC���azazC�C�D*C�D(C�D'C�DC�DC�azDazazDDDDazazDDazDazazgCDazD	azazD
azDazgCazD
azDDazazDDazazDwazDD DazDDDDazDubazazD�ubDDazDazwFDaz�"azD!azazD"D#D%azD$��azazD&kX�az��D)az�ubD+D.D,D-azwF�"azD/azazubD1DFD2D6azD3D4azD5azjazD7DCD8D;D9azazD:v�azD<D=jazazD>D?azD@azDAazDBazazv�azDDazDEazjDGDKazDHazDIDJazazmDLDYDMDWDNazazDODPazDQazDRazDSDUDTazazgQDVaz�"azazDXaz�DZD\azD[�0�azD]az��azD_azD`DaDsazDbazDcDdazDeazDfDpDgDjazDhazDiazv�DkDnDlDmazgCazu�Doazazu�DqazazDrazgQazDtDuD�DvD�DwD�DxD{Dyaz�KDz�KazD|azazD}azD~Dazt�azD�azD�azt�azD�azD�D�D�azD�azD�azmazD�azD�azazD�azv�D�D�azD�D�D���azwazD�D�D�azkX�D�azub�"D�D�D�D�D�azD�azazD�D�azD�azD�azazD�D�azD�D�azD�D�D�D�D�azt�wv��"D�gQazD�azD�azD�D�v�t�ubmazD�azD�azD�D�azazD�D�azazD�azD�azD�gQazazD�D�D�azD�D�azD�D�D�D�D�D�azD�gCgQD�azu�azD�D�azD�D�D�D�D�b�gQazD�D�azazD�azD�azD�D�azazD�D�azD�azD�azazD�azu�u�D�azt�D�D�azD�u�azD�azazD�D�azazD�D�D�D�D�azD�azD�D�azu�azazD�azD�D�azazu�azD�D�D�D�D�azb�D�azazgQD�azazD�azD�az�"azD�azD�D�D�D�D�v�t��Kmb�D�v�v�D�ED�azazD�azD�D�EazD�azu�EazEazgCazEE`EECEazazEEE+E	EazE
EEEEE
b�gCb�EEb�gCubv�EEEEwu�t�mEazwazEE$EEEEEEwv�u�wEv�t�wE E#E!E"v�azwv�b�azE%azE&E(gQE'gCazE)E*gC�"b�mE,E2azE-E.azE/azE0E1azb�azgCE3E;E4E8E5azE6E7t�v�wazazE9E:azaz�"azE<E=E@E>E?b��"kXazEAEBmv�azv�EDazEEazEFETgCEGgCEHEIgCEJgCEKgCELgCEMgCgCENgCEOgCEPEQgCERgCgCESazgCEUE[gCEVEWgCEXEZgCEYb�gCubgCE\��E]��azE^azE_az��EaE�EbEiEcazEdazazEeazEfazEgazEhazgCEjE�EkE�ElEyEmErazEnEoEqazEpjazazb�EsEvEtazazEuu�azEwExv�azgCazEzEE{azE|E~azE}mazgCubE�E�azE�gQE�azv�E�E�b�azt�v�E�E�E�E�E�E�E�v�azmE�E�b�v�gCb�E�E�E�wb�azE�E�mv�v�wE�E�E�E�E�E�azgCgCgQE�E�gQ�"kXv�E�E�E�E�kXv���E�t�azE�azE�E�azmkXazazE�azE�E�azE�azE�azE�azE�azE�az�"azazE�azE�azE�azE�azE�azE�E�E�E�azE�azE�azE�azE�azE�azgCazE�E�E�azazE�E�azazE�E�az�azt�E�E�azazE�E�azazE�v�azE�F�E�FvE�E�azE�azE�azE�azE�u�azE�FRE�FLE�azE�E�azE�E�azE�azazE�azE�azE�E�azE�azE�azE�azE�azazE�E�azE�azE�azE�azazE�azb�E�azE�azE�azE�azE�FE�E�azE�E�E�E�E�E�E��iazE�az�"azE�E�u�az��azE�E�u�azE�E�E�azwaz�azE�F
E�FFFFFmazu�Fu�azazw�FFjazFF	v�azkXazFFFFF
v��?azFF�azFazw�azFFFazv�azazF�azFF1FF+FF$FFFFkXazFazb�azF F"F!azupazv�F#v�azF%F'F&jw�azF(F*F)azjazv�azF,F-azb�F.azF/azv�F0v�azF2F:F3F7azF4F5gQkXF6kXazazF8�wF9v�azF;FCF<F?F=F>gQazu�azF@FAu�azFBazv�azFDFGazFEFFazmazFHFJFIazw�azFKazu�azazFMFNazFOazazFPFQazb�azFSazFTazFUFtFVFaFWF_FXF\FYF[FZb�azv�jv�F]F^azv�wu�azF`azv�FbFhFcFeazFdkXu�FfFgv�gCmwFiFmFjFkv�t�v�FlubazFnFqFoFpv�v�u��KFrFsmv�upazwFuv�azFwF�FxF�FyF�FzF}F{gCazF|gCazF~t�Ft�t�azazF�F�b�F�azazb�F�F�F�F�F�F�azF�wF�azF�F�azF�azF�azF�azazF�azF�F�azazF�azF�azF�azF�azF�F�azazF�wazazwgCF�azF�azgCv�F�F�azb�azF�F�F�azb�F�v�F�F�azF�azazF�F�azF�azazF�F�azF�azazF�azF�azF�F�azazF�azF�azF�azF�F�azw�azF�azF�azazjF�azF�azF�azF�F�azF�azF�F�azF�azF�azF�azF�F�azF�gCazF�azF�azmazazF�F�azazF�F�azF�azazF�F�azazF�F�azF�azF�azF�azF�azF�azF�azF�azazF�azF�F�azubazF�N�F�N�F�J'F�IF�GOF�F�F�F�F�F�F�F�gCazwazF�F�gQmF�azt�wF�F�F�F�gQazazmF�azazF�gQv�F�G7F�GF�F�gQF�F�v�v�F�F�v�F�v�v�azF�kXv�F�F�v�v�Gv�Gv�azGG6Gw8GG0GG$azGGGG	GG
GGGGGG
jjububv�wUv�GGv�w���wGGGGt�b�w�wGGv�v�w8Gv�GGv�azv�GazGazG azG!azG"azu�G#u�azG%azG&azG'azG(azG)azG*azG+azG,azu�G-u�G.u�G/u�azG1azG2azG3azG4azG5azv�azazgQG8GLG9GKG:azG;GJG<wG=t�G>t�G?t�G@t�GAt�GBt�GCt�GDt�GEt�GFt�GGt�GHt�t�GIt�b�t�wgCv�GMGNmazazgQGPH�GQHMGRHGSazazGTGUG�GVG�GWGqGXGcGYG`GZG]G[G\azgQgQazG^G_azjgQv�GaazGbv�azu�GdGkGeGhGfGgv�v�wu�GiGjazgQazkXGlGoGmGngCgQazv�Gpazu�azGrG�GsGzGtGwGuGvazgQgCt�GxGygQazt�gQG{G~G|G}v�azazt�azGazu�G�G�G�G�G�G�azgQu�azG�G�u�azu�azG�G�G�G�u�azu�azG�G�u�azgCjG�azG�G�G�G�G�G�G�G�u�azgQazG�G�v�azu�mG�G�G�G�gQazu�azG�G�v�azv�azG�azG�azG�G�u�v�mu�G�G�G�G�G�G�G�G�G�G�G�G�v�v�w�wG�G�kXazgCazG�G�G�G�t�v�azv�G�azv�azG�G�G�G�G�G�azgQmazG�G�gCv�azv�G�G�G�G�v�u�v�wazG�t�azG�G�G�G�G�G�G�G�azju�gQazG�gCazG�G�G�G�gCv�w�ubG�G�mv�wUubG�G�G�G�G�G�w8azv�w�G�G�azmb�wG�G�G�G�wazazv�G�G�kXazt�azG�G�G�G�G�G�G�G�G�G�v�v�w�v�G�G�t�azgQv�G�G�azG�v�v�G�G�wUazazgQG�G�G�G�G�G�azv�u�azazG�mazG�azG�G�azgQazu�G�azG�azazHv�azHH
HH	HazHHazmmHHmazmH
HmHv�v�azmHH?HH2HHHazazHHHHHHHw8wUv���HH��v�v�w�HazHHwv�t�u�v�HH H&H!H#azH"azv�H$H%azgCgQazH'H-H(H+mH)H*b�v�v�v�H,b�azH.H1H/azw�H0v�v�v�u�H3H:H4H7H5H6u�v�v�v�azH8azH9mkXH;azH<azH=H>azkXgQazH@HCazHAHBmmkXHDHIHEHFv�gCHGHHgCv�v�v�HJHKv�gCHLkXgCkXHNHqHOHbHPH_HQH]HRHWHSHUu�HTjazHVu�ju�HXHZmHYmv�H[H\v�gCjmH^azkXmH`Haazv�azu�HcHjazHdHemazHfHgazHhazHimazmHkHpHlHmv�kXv�HnmHoazu�t�azHrHHsHyHtHxHuazHvu�azHwazv�v�t�HzH|azH{v�azH}azH~gCv�mH�H�H�H�H�H�azv�azH�mv�H�H�H�v�azv�v�azH�azH�H�H�H�H�H�H�H�azH�azH�azgQH�H�H�H�v�t�v�gCH�azv�azH�H�H�H�azgQv�azH�H�azH�wb�H�H�kXazgQazH�H�H�H�H�H�H�H�v�t�gCmmH�mjH�H�v�H�u�wH�v�kXb�H�H�H�H�w�v�H�v�u�wH�azH�azgCu�H�H�H�H�H�H�H�H�H�H�t�b�v�wH�H�gCazazwH�azu�mH�H�H�H�kXgCb�H�jv�H�H�H�v�v�u�v�v�H�H�H�H�H�H�gQH�t�v�H�H�azv�kXwazH�azH�azv�H�H�H�H�H�H�b�azgCgQH�H�azv�gQazH�H�azmu�wH�H�H�H�H�H�H�H�v�v�azgCH�azH�gQgQH�H�gCv�H�v�gQH�H�H�mH�b�b�H�H�b�b�H�H�b�H�azH�azH�azH�azb�H�b�azH�azv�gQH�IH�H�gQazIazgCmII}IgQIICII$IIIIazII	II
Iv�azu�kXI
Iv�kXazw�IIIIIIv�gCazv�Ib�azv�IazazgQII!IIIImazjazIIv�v�I azazv�I"azazI#azu�I%I-I&I(azI'mubI)I+azI*u�wazI,wUv�I.I9I/I3I0I1w�wwI2mv�I4I7I5I6v�v�u�mI8w�v�wI:I@I;I>I<I=gC����t�t�I?v�azIAu�azIBazu�IDIaIEITIFINIGIJIHazazIIgQwIKIMILt�t�azazv�IOIRIPIQv�azazgQazISkXazIUIZIVIWazgCIXIYazu�v�wI[I^I\I]wazazmI_I`azv�kXv�IbIpIcIiIdIgIeIfubazgQazv�Ihv�w�IjImIkIlw8v�v�mInIou�azazgQIqIvIrItIsazazu�IuazazubIwIzIxIyazv�azv�I{I|v�gQubwazI~v�v�I�JI�I�I�I�I�I�azI�azI�gQv�I�I�gCazmgQI�I�I�I�azgQI�azkXv�I�I�gQgCv�b�I�I�I�I�azI�I�azgQv�azI�gQv�I�I�I�I�azv�gCubI�I�mI�v�I�gQI�gQI�I�gQgQI�I�gQgQI�gQI�I�gQI�gQI�gQI�gQgQI�I�gQI�gQgQazazI�I�I�I�I�I�I�azI�I�I�I�I�I�azazv�I�azv�azazI�I�azazv�I�I�azv�I�azI�azI�azazv�I�I�I�I�I�I�I�I�I�I�gQw�gQgCgQI�b�gCI�I�gQgCgQb�I�v�I�I�I�gCb�gQI�I�gCkXgCubI�azI�I�I�I�wI�gQgCgCI�b�gQI�I�I�I�v�gCwgQkXazI�I�I�azI�azI�I�I�I�I�I�v�w8v�u�I�azt�wI�I�I�I�u�t�v�wI�azv�u�I�I�I�I�mI�mI�I�azmazI�azI�azI�azmazI�JI�azI�azI�azv�azJazJazJazjazJJJJ
azJJJ	w�gQazgQJJJJv�J
v�gQazJgQv�JJgCazazJkXazJJJJJazazb�Jazv�gCJJ%azJazJJgQJv�v�J v�J!J"v�v�J#v�J$u�v�azJ&gQazJ(L�J)LmJ*KJ+J�azJ,J-J[azJ.J/azJ0azJ1JCJ2azJ3J@J4J6J5azaz�BJ7azJ8azazJ9J:azJ;azazJ<J=azJ>azazJ?az�BJAazJBazgCazJDazJEJPJFazJGazJHazJIazJJazJKazazJLJMazJNazazJO�BazJQazJRazJSazJTazJUazJVazJWazazJXazJYJZazazgCJ\JlJ]azJ^azJ_azazJ`azJaazJbazJcazJdazJeazJfazJgazJhazJiazJjazJkazt�JmJ�JnJ�JoJvazJpJqJsazJrv�azJtJugQv�kXv�JwJ}JxJ{JyJzv�azv�u�J|u�wu�J~J�Jmv�mJ�J�b�w�ubwJ�J�J�J�J�J�J�azgCv�azJ�jv�J�J�v�t�J�u�t�u�J�J�J�J�u�J�u�v�v�v�J�mJ�v�v�v�J�J�J�J�J�J�J�J�jJ�jv�v�gQJ�J�J�kXgQkXb�J�b�w�J�J�J�J�w�ubJ�wubwJ�J�gCJ�gCv�v�azazJ�J�J�azJ�J�J�azwww8J�J�J�w8azw8J�J�wUv�v�azJ�J�J�J�J�azazJ�J�azJ�azJ�azJ�azJ�azJ�azt�J�t�azJ�J�J�azJ�azJ�azazJ�J�azJ�azazJ�J�azJ�gCJ�gCgCJ�gCJ�J�gCJ�gCgCJ��BgCJ�azJ�J�azJ�J�azJ�azJ�azazJ�azv�J�azJ�azJ�azJ�azazu�azJ�J�J�J�azazJ�azJ�azJ�J�J�azJ�J�az�BazJ�azJ�azu�azJ�KJ�azJ�KJ�J�J�J�J�J�J�J�azgQazv�azwUazJ�J�v�azv�J�J�wwUJ�J�v�v�ww�KKKKKKgQazazKazgQ��Kv�v�K	KK
Kv�gQazv�t�K
t�v�azKazKazKKazKazKazu�azKK�azKazKKv�KazKKTKK8KK&KK#KK"K gCw�K!v�wv�v�K$K%gQv�mv�K'K1K(K-K)K+v�K*azt�K,kXgCu�K.K0K/v�v�azwazK2K5K3K4u�azv�gCK6K7t�azazv�K9KFK:K=azK;K<azazgQK>KCK?KAK@gCgCv�gQKBu�azubKDgCKEazv�KGKMKHKJKIazv�azKKKLgCw�b�wKNKQKOKPw�azazwKRKSb�kXv�azKUKnKVKcKWK]KXKZu�KYmazK[K\azgCazv�K^KaK_K`azjgQv�KbazgQazKdKkKeKhKfKgjazazgQKiKjv�v�t�azazKlKmazmazKoK~KpKwKqKtKrKswu�azubKuKvv�v�azmKxK{KyKzv�v�u�azK|K}azu�gCjKK�K�K�K�K�b�v�u�v�K�K�wmwmK�K�K�K�ubw�gQjK�K�mb�azt�K�K�K�azK�azK�azK�azK�K�K�K�azK�K�w�v�v�K�K�azu�K�azu�azK�azK�azv�azK�azazK�K�K�K�K�K�K�K�K�K�K�K�K�mw�v�azv�v�K�K�K�K�K�K�t�azgQazK�K�v�gQgQt�K�K�azK�v�v�K�K�gCazgQt�K�K�K�K�K�K�K�azazgQazK�v�azK�K�azK�jazmK�gCazK�K�azK�K�K�v�wazjK�K�K�azv�azK�azv�azK�K�K�K�azK�K�azazK�v�b�K�K�azK�K�azazu�K�K�K�azazb�K�K�u�azb�azK�K�K�K�K�K�K�K�azgQt�azK�K�v�mu�v�K�K�azK�azmK�K�v�azazv�K�K�K�K�K�K�gCv�azgQK�K�azt�azv�K�K�K�K�gCv�azgQazK�t�v�K�L4K�LK�LK�LK�LLLt�kXazv�LLazwazu�LL	LLu�v�mu�L
azv�v�LLL
LLLv�azgQazLubv�azLLu�Lw8mLLkXgCgQv�LL'LL LLLLb�v�v�azLazazw�L!L$L"L#wUv�gQazL%L&az����wL(L.L)L,L*L+t�wu�v�azL-gCb�L/L1azL0gQ��L2L3��jw8azL5LRL6LDL7L=L8L:��L9azubL;L<ubw�jv�L>LAL?L@v�u�u�v�LBLCw�t�wUw8LELKLFLHLGwwazLILJgQwmazLLLOLMLNazv�t�wLPLQmgQjgQLSLbLTL[LULXLVLWv�wUmjLYLZv�b�gQazL\L_L]L^ubu�u�azL`Laazv�v�azLcLjLdLgLeLfazw�v�wLhLiv�gQgCv�azLkazLlv�v�LnL|LoLvLpLsLqLrgQazgCazLtLuv�azv�mLwLyazLxb�azLzL{azw8v�v�azL}L~L�LL�L�azL�azt�azazL�L�L�azwwL�L�wL�azwazL�L�L�L�L�mL�L�v�kXazt�L�L�azwazv�L�L�L�L�azL�t�mL�azL�L�L�L�L�L�L�azL�azazv�L�L�L�L�azgQazv�L�L�L�v�t�wmgCL�L�L�L�L�L�L�L�gCv�ju�u�kXL�azv�azazL�azL�azv�L�L�L�L�L�L�L�L�gQv�v�t�L�L�wv�v�mL�L�L�gCmgCL�u�gCjL�L�L�L�L�L�u�kXkXv�L�L�v�ububwL�L�L�L�ww�w�v�L�L�v�L�L�L�b�mmv�L�L�L�azv�b�u�L�azw8L�L�v�azL�mt�v�L�N}L�M�L�ML�L�L�L�u�L�mu�L�L�v�v�L�L�t�L�L�t�L�L�t�wt�wL�jL�jL�jL�jjazL�L�L�L�L�v�v�v�L�ju�t�L�L�u�t�L�wL�kXL�kXkXL�L�kXL�kXL�kXkXL�L�kXkXL�kXMkXMkXMMkXkXMwkXMM�MM(MM	v�v�jM
MazMM#M
MMMMMMv���v�jMjazMMMw*azw*v�Mv�u�MMMMu�Mv�azMMazv�v�azM M"azM!u�azu�azM$azM%azM&azM'azazv�M)M�M*MvM+MEM,M7M-M5M.M4M/M2M0M1kXv�gQgCM3kXgCkXkXgQM6azgQazM8M=azM9M:t�M;M<v�u�v�t�M>M@M?v�t�v�MAMCu�MBv�t�MDmw�mMFM]MGMSMHMNMIMKMJv�w�mMLMMubmmv�MOMRMPMQv�u�u�jjv�MTMVjMUazv�MWMZMXMYv�azazv�M[M\v�azazv�M^MkM_MdM`McMaMbv�azazt�v�v�MeMhMfMgkXazazt�MiMjkXazazt�MlMsMmMpMnMokXazazt�MqMrkXazazv�azMtazMuazv�MwM�MxM�MyM�MzM�M{M~M|M}kXazazt�MM�kXazazt�M�M�M�M�kXazazt�M�v�gQv�M�M�v�M�v�M�gQv�M�M�M�M�gQv�gQv�M�M�gQv�gQv�M�M�M�M�M�M�M�M�gQv�gQv�M�M�gQv�gQv�M�mM�M�gQkXu�mM�azjM�M�M�jv�v�v�M�M�azM�M�ubM�ubazM�azubM�M�M�M�M�azubazazM�azv�M�M�v�M�M�u�kXu�M�M�M�azgQazu�M�u�azv�M�M�wM�wwM�M�wwM�wM�M�wM�wM�wM�wM�wwM�M�wwM�wgQM�M�u�M�M�M�wM�M�wwM�wmM�t�M�t�wt�ju�M�NeM�NRM�NQwM�M�NM�M�M�M�M�M�M�M�M�M�azw8azgCM�M�kXgQjv�M�M�M�M�v�azt�v�M�M�w�azwgCM�M�M�M�M�azb�azM�M�az����v�M�M�M�M�gQv�azw8M�M�u�v�wUazM�NM�NM�M�M�M�v�v�azv�M�NgQazgQv�NNNNv�jazv�NNgCazazwUN	NN
NNazv�azN
Nv�azgQazNNazNazv�NNv�w�azt�NN2NN$NNNNNNgCv�gCv�azNv�azNN!N az��azN"N#��azmgCN%N,N&N)N'N(v�azmwN*N+v�v�u�wN-N0N.N/b�azazu�azN1t�azN3NCN4N;N5N8N6N7gQazazgCN9N:v�w8mb�N<N?N=N>v�jv�kXN@NBubNAazv�v�w�NDNJNENGazNFwgQNHNIjv�v�v�NKNNNLNMgCb�azt�NONPazv�w�azv�mNSNdNTmNUt�t�NVNWt�t�NXNYt�t�NZN[t�N\t�t�N]N^t�t�N_t�N`t�NaNbt�t�Nct�azv�wUNfNzNgNyNhNmv�NikXNjkXNkNlazkXazNnNtNoNsv�NpNqv�Nrv�v�azv�azNuNxNvv�Nwazv�azv�azb�u�N{N|v�azv�v�N~N�NN�N�N�N�N�gQazjN�N�mmw�N�N�azgQazN�azN�N�azN�azN�N�N�N�N�N�N�N�N�N�N�jjububv�wUv�N�N�v�w���wN�N�N�N�N�t�N�N�N�v�azv�u�N�u�azw�b�N�N�wv�v�w8N�azN�azN�azN�azv�azN�N�N�N�azv�N�u�v�gQazN�N�wv�gQN�N�N�N�N�N�N�azN�ububN�ubazazv�N�N�u�azazN�wt�N�N�N�N�mv�ww�azN�gCwN�azN�N�N�azazN�N�azazN�N�azazN�N�azN�azN�azN�azazN�azN�azN�azN�N�azN�azN�azazN�N�azN�azazN�w*azN�azazN�azN�N�azN�azazN�N�azN�azN�azN�azazN�N�azazN�azN�azN�N�azN�azN�azazN�N�azazN�azw�N�ON�azN�azazN�azN�N�azN�azazN�N�azN�azazN�N�azazN�azN�N�azOazOazazOazOmazO`EOZ�OR�OQ�O	P?O
O�OO^OO9O
OazOOazazOazb�OO.azOOu�OO+OazOOu�w*Ov�OazOazOO azOOazOu�azu�O!O'azO"O#O%O$u�u�azO&u�u�azO(azu�O)u�O*u�azu�O,u�O-wazO/O5O0O2azO1mazO3O4azgQazv�azO6azO7O8azazgQO:OMO;OEO<OBO=O@O>O?az�azu�OAazv�azOCazODazazu�OFOGv�jOHazOIOLOJazOKazv�azazb�ONOPOOv�azw�OQORazw�OSOWOTazazOUOVazazu�OXO[OYazOZazmazazO\azO]kXazO_OyO`OsOaOqObOlOcOhazOdazOeOfOgazb�azu�OiazOjazOkazwazOmOoOnazazv�Opazazv�azOrw�azOtOvazOuazjOwOxazgQgQazOzO�O{O�O|O�O}azO~O�OazazO�wazazO�azO�v�O�O�azO�O�O�O�O�O�O�gCazgCgCO�O�azgCO�gCazazO�azO�azgCO�azO�O�O�O�azgCazgCO�azazO�gCazazjO�O�O�O�O�O�azO�O�u�azv�O�u�O�O��>v�v�u�O�O�w�azO�azb�ubO�azO�O�O�O�azO�azwazv�O�b�O�O�v�azu�azO�O�O�O�O�azO�O�jazO�w�azw�azw�O�O�w�azazjO�O�O�O�O�O�azO�O�azjO�azO�w�azO�O�w�azazO�azO�O�azO�azO�azO�azazO�O�O�O�O�azO�O�O�azO�azv�azv�O�O�O�O�azv�azv�O�O�azO�O�v�v�azazO�v�O�azv�O�azO�azO�O�azO�v�O�azv�azv�O�O�O�O�O�azazjazO�v�azO�azazO�O�azO�azazO�O�azgQt�O�PO�PO�O�O�azjazO�O�azv�azO�O�azO�azO�azazw�azPPPazu�jv�PPPazPazw�azP	PP
azazw�PP
azwazPPP�1Paz�1PazazPazPPP&PPazPazPazPazPazb�PP#PP PPazb�azb�P!P"azb�azb�P$azP%azazb�P'P2P(P+azP)azP*azb�P,P/P-P.azb�azb�P0P1azb�azb�P3P:P4P7P5P6azb�azb�P8P9azb�azb�P;azP<P=azb�azP>b�azP@P�PAPWPBPKPCPFPDazazPEw�azPGPIPHazaz�1�1PJazu�PLPSPMPPPNPOazu�azw�PQPRu�azazu�azPTPUPVu�u�azu�PXP}PYP_PZP]P[P\v�azu�jP^azwazv�P`azPau�PbPcPdazv�PePgPfazazwPhazPiazazPjPkPvPlPoazPmazPnazgCPpPsPqPrazgCazgCPtPuazgCazgCPwazPxazPyPzazgCazP{gCP|gCazP~P�PP�azP�azu�P�P�az��azu�P�P�P�azu�azP�P�P�P�azP�P�P�P�az�wazazP�b�azP�azazP�azu�P�P�azP�P�azazP�azu�P�azv�azP�P�P�P�P�P�azP�azP�v�jP�u�P�w�v�P�P�P�azP�azw�w�azP�P�P�azP�P�azw�azv�P�P�azP�azP�P�wazP�azv�P�azazP�azP�P�azazP�azwP�P�P�P�P�P�P�P�azw�w�P�P�P�w�azazu�P�P�jP�P�P�P�P�w�azazP�azjP�P�azP�w*azazP�P�azazP�P�P�azP�azP�P�b�azb�P�azP�P�P�P�P�b�b�P�b�azb�P�b�P�b�azP�azP�azb�P�b�azazwP�P�P�azP�azazP�wazP�azv�azP�Q~P�Q|P�Q(P�v�P�QP�azP�azazP�P�QP�P�P�P�P�v�azP�azP�azv�P�v�v�P�v�azP�azP�azP�P�P�v�v�P�azv�Qazv�azQQazQazQazQv�azQQQQQ	Q
v�azv�azQQ
v�azv�azQazQQv�azQazv�azQQ&azQQazQazazQQQazQQQQv�azQazv�v�azQ Q"Q!v�azv�Q#azQ$azv�Q%v�azQ'azv�v�Q)azQ*QzQ+Q-Q,u�azu�Q.Q/azu�Q0azazQ1Q2QMQ3Q8azQ4azQ5azQ6b�Q7b�azQ9QBQ:Q=azQ;Q<b�azb�Q>Q@Q?azb�azQAb�azb�QCQHQDQFQEazb�azQGb�azb�QIQKQJazb�azQLb�azb�QNQeQOQZQPQUQQQSQRazb�azQTb�azb�QVQXQWazb�azQYb�azb�Q[Q`Q\Q^Q]azb�azQ_b�azb�QaQcQbazb�azQdb�azb�QfQqQgQlQhQjQiazb�azQkb�azb�QmQoQnazb�azQpb�azb�QrQwQsQuQtazb�azQvb�azb�QxazQyazb�azQ{w8azw8azQ}t�azQQ�Q�Q�Q�t�Q�Q�azQ�wazQ�azazQ�u�azw�Q�Q�Q�Q�azQ�Q�azb�b�kXjQ�azjQ�Q�Q�azQ�azQ�azju�azQ�Q�Q�Q�Q�azt�Q�az��azt�azQ�Q�Q�Q�|Q�azQ�Q�azQ�azazQ�Q�Q�azQ�Q�azQ�azt�azQ�MQ�azQ�dQ�ddQ�dQ�Q�ddQ�b�dazQ�azQ�azQ�Q�azazQ�azQ�azQ�Q�azazQ�azQ�Q�azazQ�Q�azazQ�azQ�azQ�Q�azw�azQ�RqazQ�Q�R2Q�Q�Q�Q�azQ�Q�Q�Q�Q�Q�Q�Q�Q�azwv�azazQ�azwQ�Q�Q�Q�azgC�Q���LwQ�azwQ�Q�wQ�Q�Q�w�wwazwQ�Q�wazwQ�Q�Q�Q�Q�Q�azQ�Q�Q�wazazwazQ�azQ�azwQ�Q�Q�azv�Q�azwQ�Q�Q�azwazQ�wazwQ�Q�Q�Q�azQ���azQ�azQ�Q��1azazwQ�azQ�azQ�Q�azwgCazRRRazRRazRRRazRazwRazazgCR	RazR
azRazwazR
azRwazRRRRRRazRazR�ZazRazazRazwazRRRRazjwu�azRR(RR"R azR!azaz�MR#R&R$R%v�azjazazR'azv�R)R,azR*azR+azb�R-R/R.azwazR0R1azv�azt�R3RWR4RMR5RBR6R<azR7R8R:azR9azv�R;azazgCazR=R>R@R?azwUazRAazv�azRCRGazRDazRERFazv�azRHazRIRKRJazwazRLazv�v�azRNRORSRPazazRQRRazazt�azRTazRURVazb�azRXR`azRYRZazazR[R\R^R]azazv�R_azv�azRaRlRbRhRcazRdRfazReazwazRgazv�azRiRjazRkazv�azazRmazRnazRoRpazazv�RrRvazRsazRtazRu|azRwazazRxRyazazRzazR{R|azazR}azR~RazR�azR�azazR�azR�R�azazR�R�azaz@R�W:R�T�R�S�R�S!R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�jazazv�R�azazmR�R�azv�v�azR�R�azR�R�mwv�ubR�R�R�u�t�wazR�R�R�R�kXazR�azgCw�R�R�t�b�R�R�R�w�v�u�R�azmwR�R�R�R�azR�R�wR�R��wazwqazR�R�azubR�azu�azR�R�b�R�u�azR�azwazR�R�R�R�R�R�azR�azwR�R�azR�R�w�azw�azjazR�R�R�u�azb�azR�R�w�R�R�R�w�b�azv�R�R�R�R�v�azu�R�azb�R�R�R�u�R�b�wv�R�azR�azv�azR�SR�R�R�R�v�R�azR�R�R�azR�azkXazR�azgQR�R�R�azR�v�v�azazR�azw�R�R�v�R�R�R�R�azw�azR�R�azR�kXwR�azwazR�R�azR�w�v�R�SR�R�azR�u�azazR�ww�wqSSSwazwazSSSSSjSS
S	az�wmazSazwS
SSazv�azSSSazazjSazwazSSazSSSb�azu�wUSSSSazw�kXSazSazwS azazu�S"SiS#SMS$SFS%S*S&S(S'u�v�v�azS)u�az�"S+S,S-v�azazS.azS/S0azS1S6kXS2kXS3kXS4kXS5kXazS7kXS8SBS9S>S:S=kXS;S<azazkXkXazS?S@kXazkXSAazkXSCkXSDSEkXazkXazSGSLazSHSIazSJ��SKazazu�v�azSNS_SOSUSPazSQSRv�v�SSv�ST{�v�azSVS]SWSZSXazazSYazgQv�S[S\w�azw�S^w�ubv�S`Saazv�SbSdazScubmSeShazSfSgw�v�azazu�SjS|SkSpSlSou�SmSnazazu�u�azSqSvSru�SsazStazSuazazkXSwv�SxSyazv�SzS{{�azv�v�S}S�S~S�SS�v�v�S�azS�S�u�azS��wwS�S�u�S�S�u�S�u�S�u�S�u�gQS�u�S�S�S�S�u�gQu�gQS�S�u�gQu�gQazS�jS�wazS�S�S�S�v�azS�S�w�w�S�v�S�S�wazv�azb�S�S�S�u�wS�azwazS�THS�T&S�TS�S�S�S�S�S�S�azS�u�azS�S�S�S�azS�S�S�S�S�S�S�S�azS�v�S�v�azazv�S�S�azv�azv�S�S�S�S�azv�azv�S�S�azv�azv�S�S�S�S�S�S�azv�azv�S�S�azv�azv�S�S�S�S�azv�azv�S�S�azS�S�v�v�azazv�S�azS�S�S�S�S�S�S�S�azv�azv�S�S�azv�azS�S�S�v�azazv�S�S�S�S�azv�azS�S�v�v�azS�S�azv�azv�S�azS�S�S�azazv�S�S�azv�azv�S�u�v�azS�S�S�azt�azS�S�t�azazS�azw�S�S�S�azazS�azS�w�S�azw�v�S�Tw��azTTTT
TTu�azTT	TazTu�b�azazb�TTTTb�T
jazgCazTTTTTazazu�Tazazv�w�wTTazTw�TTv�Tv�w�azTT!Tb�wTazT wazT"T%T#gQT$u���azgCt�T'T:T(T1T)T-T*T+gCjT,azazw�T.b�b�T/b�T0b�azT2T7azT3T4T5v�u�azT6v�azazT8T9azazv�T;T?T<T>mT=azv�wv�T@TAu�azTBu�TCTGTDTFazTEb�azjazazb�TITuTJTbTKTNTLTMv�gQu�u�TOTTTPTRv�TQb�azTSazb�azTUTZTVTXTWazazb��1TYazu�T[T]azT\jazT^T`T_b�b�w�azTaazv�TcTmTdTemjTfTkTgTjazThazTimazazv�Tlazazu�TnazTov�TpTtTqTsazTrazu�v�azw�azTvT�TwT�TxT}TyT|Tzt�azT{t�azazw�azT~TT�T�t�azT�v�azj��T�T�v��wT�v��wT�v�T��1azT�T�T�T�azT�azT�T�b�azv�T�azT�T�T�azT�T�v�azt�azazT�T�azazu�T�T�T�T�v���T�T�T�ubazT��jv�T�T�azjazT�kXT�T�gCazu�T�azu�T�U�T�UT�T�T�T�T�T�T�T�kXazT�T�t�T�T�v�T�T�t�azazgCT�azazT�az�1T�T�T�w�azT�mwqT�T�T�T�azT�T�t�azmaz�"T�T�kXgCv�ubT�T�T�T�T�T�v�T�azv�T�T�azv�v�v�T�T�mazT�T�T�azw�azazT�T�azw�wT�T�T�v�T�azv�az�"T�T�T�wT�azT�azu�w�1T�T�T�T�T�T�T�T�T�T�u�azT�azazT�jjT�T�T�v�azt�azu�az��T�T�wazT�T�T�T�mazv�jT�T�v�azu�v�T�UT�T���jT�T�T�T�v�T�azT�azb�azjT�UUUazUw*azb�azUw�UUazmu�v�UUu�U	U
Uw�kXw�az�1U
UUazUazjazUb�jUU(UUUUUt�v�b�UUv�az��v�UU$UU#jUUU!�wUazU v�azazU"v�azgQwU%U'U&azjazmv�U)U@U*U4azU+U,U/U-U.gCu�v�azU0U3U1mwU2wazazb�U5U9U6azgCU7gCU8gCazU:U<azU;azubu�U=U>azazU?azwUAUbUBUCkXt�UDazUEU`UFUHUG�wazv�UIu�azUJv�UKULUVv�UMUNUSUOURv�UPUQazv�azv�azUTUUv�azv�azUWv�UXU[UYUZv�azv�azU\U]v�azv�U^azU_azv�azUaazv�azUcazUdUeUhUfazUgv��1azUiazUjv�u�UkUlU�UmU~UnUwUoUrUpUqazv�azv�UsUvazUtv�Uuv�azazv�UxU{UyUzazv�azv�U|U}azv�azv�UU�U�U�U�U�azU�v�U�azv�azv�U�U�azU�v�azU�U�azv�v�azU�U�U�U�U�U�azU�v�azv�azU�U�azv�v�azU�U�U�U�azv�v�azU�U�azv�v�azU�azU�U�U�U�U�U�U�U�azv�v�azU�U�azU�azv�v�azU�U�U�U�azv�v�azU�U�azv�v�azU�azU�U�U�U�azU�v�azv�azU�azazv�U�V=U�U�U�U�U�U�U�U�U�azU�U�t�U�t�U�azv�U�v�azu�azU�U�U�U�v�azU�azv�azb�U�U�U�azU�azgCgQU�b�U�U�U�azazU�azw�azU�b�azU�U�U�U�U�U�azU�U�v�azU�gCazaz�1U�jazU�U�U�U�azmazU�U�v�v�v�azU�U�U�U�U�azazkXU�U�azU�azU�t��Mw�1U�azU�U�U�U�U�azv�azazU�azjazU�U�azu�azU�VU�VU�U�U�azU�U�azw�U�U�azu�azjU�VVVazVv�azazVazVazu�Vv�azv�VVazV	V
Vt�azVVazV
azu�w�Vw�azb�VVVVVazVv�b�Vazv�azVVVVv�kXv�azVVazv�azwVV1V V(V!V%V"V$V#azv�azazv�azV&V'jv�azV)V,u�V*mV+azgQV-V0V.azV/azv�azu�azV2V7V3jV4V5az��V6azmjV8ubV9V:jazV;b�V<azv�azV>V�V?V\V@VWVAVPVBVIVCVFVDVEjw�azu�VGazVHazv�u�VJVNVKVMVLjt�az�wazVOazv�v�mVQVRVTVSazwazazVUazVVaz��VXV[VY�gQVZgCw�1ubV]VrV^Vfv�V_V`VcVaazazVbazkXVdazazVeazv�VgVkVhViw�v�b�VjmazVlVoVmazazVnazmVpazazVqazu�VsV�VtVyVuVvazwazVwv�Vxv�u�VzV}V{azV|azazt�azV~v�Vv�azV�V�V�azazV�V�azazv�V�V�azjazkXV�WV�V�V�V�V�azV�v��w��wazV�WV�v�azV�V�WV�mazV�V�V�V�V�V�V�V�V�V�V�V�V�azmmazV�V�azmmazV�V�V�V�azmmazV�V�azmmazV�V�V�V�V�V�azmmazV�V�azmmazV�V�V�V�azmmazV�azazmV�V�azV�V�V�azV�mazV�V�azV�azmmazV�V�V�V�V�V�azmmazV�V�azmV�azmazV�V�V�V�V�mazmV�azmazV�V�V�mazmV�azmazV�WV�V�V�V�V�V�V�V�V�mazmV�azmazV�V�V�mazmV�azmazV�V�V�azV�mazmV�V�V�mazmV�azmazV�V�V�V�V�V�V�mazmV�azmazV�V�V�mazmV�azmazV�V�V�V�V�mazmV�azmazV�V�V�mazmV�azmazWazWWWWWazWmazmWW	WmazmW
azmazWWW
WWmazmWazmazWazWWazmmazv�azwWWWv�v�WWWv�azwWWv�azu�azW W2W!W*v�W"W#W'W$W%azv�W&azazu�azW(azW)azv�W+W.W,azazW-kXazazW/azW0�W1t�azW3u�W4W9W5W6azu�azW7azW8azw�jazW;YW<XW=W�W>W�W?WcW@WRWAWLWBWHWCWFwUWDWEw�azv�azWGjb�WIWKazWJazb�azmWMWOazWNv�azWPWQu�azazv�WSWZ�wWTWUWW�wWV�wv�azWX�1WYazmW[WaW\W^W]azmazW_v�azW`u�t�v�WbazgQWdWwWeWjgQWfWgWiazWhv�azazmWkazWlWqWmWoWnazazv�Wpv�azgCWrWuWsWtv�t�mazWvazt�u�WxW�WyWWzW{�wazW|azW}W~azwb�azW�W�azW�W�W�azv�wazazmW�W�W�W�W�wW�W�azu�u�mazu�W�W�azW�u�azW�azazmW�W�W�W�W�W�W�azazW�t�azw�W�W�W�W�w�v�azazW�W�azt�azW�W�W�v�v�jW���W�W�W�wW�v�azv�W�ubW�azwt�W�W�W�W�v�v�gCazW�W�azmazW�W�azW��v�W�v�azW�W�W�W�W�W�W�W�W�wW�W�v�azazwqW�W�azu�W�W�azW�azW�wb�W�W�W�W�gQgCkXubv�W�v�wW�W�azt�wW�W�W�azW�W�v�azu�W�azW�azazv�W�W�W�v�W�v�W�W�W�ubW�W�u�azazb�azkXW�W�v�v�W�u�W�W�W�azaz��W��wW�azt�azW�W�W�W�W�W�W�W�v�W�azW�u�W�v�azW�W�u�W�azW�azb�azv�v�W�W�W�v�azazv�W�W�gQazkXb�W�W�W�W�v�jv�w�W�XazW�W�XkXw�azu�azv�XX|XXAXX*XXXXXubX	azX
w�azXazv�X
v�XXv�v�Xt�Xazt�azXXXXXXXXwXwv�azXt�azXubXu�azu�Xazv�ubX X'X!X$X"v�gCX#azv�X%azv�X&v�azX(X)t�azb�gCX+X=X,X3X-azX.azX/X1azX0azt�azX2jazX4X:azX5X6X8azX7v�t�v�X9v�azX;X<gCb�wUw�X>mX?azazX@w�azXBXbXCXWXDXPXE�wXFXKXGXIazXHv�azXJazv�azXLXNXMazv�azazXOazu�XQXVXRXUXSv�XTazv�t�b�azazmXXXZXY�wu�j�wX[X\X_gQX]X^azazv�X`azXaazv�azXcXhXdXeu�azXft�t�Xgu�gCXiXoXjXmv�Xkv�Xlv�azwqXnt�azXpXuXqXtv�XrXsazv�azb�mXvXyXwgQXxazu�mXzjX{ubv�azX}X�X~X�XX�X�X�ubX�X�X�X�jv�azX�X�u�v�u�X�mazazX�X�X�u�u�t�v�X�X�X�u�X�azX�azX�v�azv�b�X�X�X�wX�X�X�azt�t�azv�X�X�X�t�azw�azX�X�X�X�kXX�azX�X�X�azX�azt�gCX�t�v�X�azX�X�azX�azt�azu�X�X�X�azX�X�u�azazX�azb�w�X�v�jX�X�X�X�X�X�mu�X�X�X�X�w�X�azX�mt�t�X�X�wX�v�X�azX�X�X�X�X�X�X�X�azv�azv�X�X�azv�azv�X�X�X�X�azv�azv�X�X�azv�azv�X�X�X�X�X�X�azv�azv�X�X�azv�azv�X�azX�azazX�v�azX�X�X�wX�X�kXazgQazX�azX�azv�azw�X�X�X�X�X�w*azX�X�azX�u�azX�X�u�b�b�azX�azX�jv�w�X�X�X�X�X�kXX�X�X�azv�azjazX�X�X�azb�azX�azX�t�azX�azv�X�YazYYYazYjazazYazYmazYYb�YY	azY
azv�v�YazY
u�azYmazYZYY�YYYYcYYYubYYYazazYazYazv�Ywv�wazYYazYY%Y Y#Y!Y"waz�^azY$azazu�azY&Y'azY(YNY)azY*Y;Y+Y2Y,Y/Y-Y.azv�azv�Y0Y1azv�azv�Y3Y8Y4Y7azY5Y6v�v�azazv�Y9Y:azv�azv�Y<YEY=Y@Y>Y?azv�azv�YAYBazv�azYCYDv�azv�YFYKYGYHazv�azYIv�YJv�azYLazazYMv�azYOazYPYUazYQazYRYSYTazkXazkXYVY]YWYZYXYYazkXazkXY[Y\azkXazkXY^azY_Y`azkXazYakXYbkXazYdYpYeYfaz�wYgYmYhYiazwYjYkazv�azYlv�azYnYoazwgCazYqYwYrYsw�b�YtYvazYuazjjazYx��YyY|YzazkXY{azv�azY}azY~gCu�Y�Y�Y�Y�Y�u�Y�b�Y�Y�azkXY�u�azY�azv�Y�Y�Y�Y�Y�Y�Y�Y�azY�wmY�azazu�u�Y�Y�u�u�t�Y�Y�kXv�azv�azY�Y�Y�wv���u�Y�u�azv�Y�Y�Y�Y�u�Y�Y�Y�u�Y�Y�Y�Y�Y�u�Y�v�azazv�Y�Y�Y�azv�azY�Y�azu�Y�u�Y�azY�azY�Y�Y�Y�Y�Y�azY�jY�jazazY�azY�jazY�Y�azY�Y�Y�azjjazazY�azY�jazY�azY�azazY�azjmY�Y�Y�gQw�Y�Y�Y�azu�azY�Y�azv�azv�Y�Y�Y�v�Y�Y�azY�azt�Y�Y�Y�v�Y�Y�azv�azju�Y�azY�v�wY�azY�Y�Y�ubkXmazY�b�Y�azwY�Y�Y�Y�Y��"v�Y�azY�azu�Y�Y�Y�Y�Y�Y�gCazY�azY�azv�azY�Y�Y�wUY�azt�azY�v�azv�Y�w�w�azY�ZY�Y�v�Y�azY�Y�v�azv�Y�ZY�ZY�v�azY�azmZZZZt�azb�gCazZazu�Zu�ZZ
azZ	v�azZazazw�Z
ZazZZazw�ZZZv�b�azjZZZZazjZjZZazjjazazZazZv�ZjazZZZ ZFZ!Z5Z"Z(Z#azZ$azazZ%v�Z&azZ'jjZ)Z2Z*Z0Z+Z.azZ,Z-wqazubv�Z/t�azZ1azjazZ3azZ4azazjZ6ZDZ7Z<azZ8Z9Z:azmu�Z;v�azZ=v�Z>Z?v�w�Z@ZBZAazazu�ZCazu�azZEwb�azZGZXZHZNZIazZJazZKazZLw*ZMazt�azZOZSv�ZPZQazwZRv�azazZTZUZWu�ZVazjjazZYZZjazZ[ZdZ\ZbazZ]Z^Z`azZ_azwZaazv�t�azZcazw�ubZeZfZjubZgZhZiv�azv�u�ZkazazZlv�ZmZnazZoZ{ZpZtazZqZrZsazv�azv�ZuZxZvZwazv�azv�ZyZzazv�azv�Z|azZ}azZ~azazv�Z�Z�Z�Z�Z�Z�Z�Z�Z�Z�Z�Z�u�Z�Z�azv�azZ�Z�Z�azmv�u�azZ�azu�Z�v�azZ�Z�azZ�u�azZ�Z�Z�Z�Z�azw�azZ�azazt�jZ�Z�azazgQazZ�Z�azZ�Z�Z�Z�Z�gQazv�Z�azgQu�azZ�azu�Z�Z�Z�Z�azZ�Z�Z�azZ�t�azZ�Z�v�azmazazZ�Z�Z�azZ�wZ�azv�v�wZ�Z�Z�Z�gCw�Z�Z�azZ�Z�azv�b�azw�Z�mZ�Z�Z�Z�Z�azazt�azZ�azmv�Z�azv�Z�Z�Z�Z�Z�mmZ�Z�azmZ�mazZ�Z�azZ�Z�Z���Z�Z�gCu�azgCw�Z�b�Z�Z�azZ�gQazazu�Z�Z�Z�azb�Z�Z�azb�Z�b�azZ�Z�Z�Z�Z�az�wazazu�Z�azZ�Z�Z�azu�azZ�v�Z�Z�mv�azv�Z�^~Z�\�Z�[�Z�azZ�[�Z�[Z�[Z�[Z�Z�Z�gCZ�Z�Z�azu�azazZ�Z�azwUazgCZ�azZ�Z�azZ�[azw�w�u�az[az[az[[az[[azw�t�az[	[[
az[az[[[
[azu�u�azaz[[wUu�azaz[wUaz[[$[[[[az[az[az[[azaz�"azv�az[az[[ [!azwUaz["[#w�u�az[%[�[&['jw�w�[([)[}w�[*az[+az[,[-[6az[.az[/az[0az[1[2[4az[3azv�v�[5v�az[7[d[8[M[9[D[:[?[;[=az[<azv�v�[>v�az[@[Baz[Aazv�v�[Cv�az[E[I[F[Haz[Gazv�v�azaz[J[K[Lazv�v�az[N[Y[O[T[P[Raz[Qazv�v�[Sv�az[U[Waz[Vazv�v�[Xv�az[Z[_[[[]az[\azv�v�[^v�az[`[baz[aazv�v�[cv�az[eaz[f[r[g[l[h[jaz[iazv�v�[kv�az[m[oaz[nazv�[p[qv�azv�az[s[x[t[vaz[uazv�v�[wv�az[y[{az[zazv�[|azv�azaz[~[azv�az[�azkXaz[�[�[�[�[�[�[�[�[�azaz[�azv�[�azw[�[�[�wazwazaz[�[�az[�t�az[�az[�azj[�[�[�azaz[�[�[�[�wwazw[�wazaz[�[�azaz[�[�az[�azazm[�[�[�[�[�[�azw�[�[�[�[�[�[�[�mmaz[�mwm[�[�[�[�b�u�azm[�[�v�mmw[�[�az[�[�[�azv�u�az[�[�[�azazwaz[��az[�az[�azaz[�v�az[�[�[�[�b�azb�azaz[�az[�[�azaz[�kXaz[�\.[�\[�[�[�[�[�azaz[�[�az[�azv�[�v�az[�[�[�az[�azaz[�[�azaz[�azubaz[�[�[�[�az[�azazkXub[�[�gQkX[�kXj[�[�[�[�[�az[�[�[�[�[�[�[�ubgQububazkXt�[�[�t�az[�azaz�"azt�[�[�[�az[�az[�[�az[�[�azwazgC[��Maz[�azaz[�\\\\\jjazaz\azj\az\azjaz\	\\
\\az\az\
\az\az\az\azwv�az\azaz\\az\\gCazt�wU\\'\\#\azaz\\az\\ \azgQaz\!\"{�t�azt�\$az\%az\&az�Mazaz\(\)azaz\*\+\,azt�\-azkXaz\/\c\0\G\1\7az\2az\3\4az\5\6t�azazv�\8\@\9azaz\:az\;\<\>\=azazv�u�\?waz\Aaz\Baz\C\Dazv�az\E\FwgQaz\H\N\I\Jwaz\Kazaz\Laz\Mazt�\O\Rm\P\QazkXaz\S\`\T\[\U\X\V\Ww�azkX�"az\Y\Zazv�az\\\^az\]v�w\_azv�azaz\aaz\b�"az\d\r\e\h\faz\g�"azw�\i\n\jaz\kazaz\laz\mv�az\oazaz\paz\qwaz\s\vaz\t\uwqazv�az\waz\x\y\�\z\\{\}\|azv�gC\~azazm\�az\�az��az\�azaz\�az\�kXv�\�\�\�az\�\�az\�\�az\�azaz\�\�azaz@&az\�\�\�az\�\�\�\�azNazazNaz\�\��az|\�]�\�]R\�\�d\�az\��gaz\�\�az\�\�\�\�\�\�\�\�gQ\�gQb�\�\�b�\�b�gQb�gQ\�\�gQ\�gQ\�gQ\�b�\�b�gQ\�gQb�\�gC\�gC\�gC\�\�\�gCgC\�b�\�b�\�b�gC\�gC\�gCb�\�b�\�b�gCb�\�\�\�gQ\�b�\�\�gQ\�\�\�\�b�\�b�\�b�gQb�\�b�\�b�gQgQ\�b�\�b�gQ\�b�gQ\�gQb�\�](\�]\�\�\�\�t�\�\�az\�\�\�\�t�\�az\�az\�azt�\�t�az\�az\�azt�t�az\�t�\�\�\�\�t�\�\�t�t�\�t�az\�azt�az\�azt�az\�\�v�\�\�az\�azv�\�\�\�az\�az\�azv�az\�az\�azv�\�azv�\�\�v�v�\�v�]]azv�]v�az]]]]]]]azm]]	]]
]m]azmaz]
az]azm]azaz]az]azm]]]mmazmaz]azmaz]]&u�]az]]az]]u�az] ]#az]!az]"azu�az]$az]%azu�]'azu�az])az]*]?]+]<],]:]-v�].]5v�]/]0]2az]1v�azaz]3az]4azv�]6v�]7azaz]8az]9azv�];v�azv�v�]=v�]>v�az]@]O]Av�]Bv�]C]Jv�]D]E]Gaz]Fv�azaz]Haz]Iazv�v�]K]Lazaz]Maz]Nazv�v�]Pv�]Qv�az]S]�]T]�]U]\az]V]W]Yaz]XgQaz]Zaz][azazw]]]b]^az]_azM]`]aazEaz]c]xaz]d]eaz]f]o]gaz]haz]iaz]jazaz]kaz]laz]maz]nb�azaz]paz]q]razaz]s]tazaz]uaz]vaz]wazm]y]�az]z]{]�az]|az]}]~azaz]]�azaz]�]�azaz]�azgQaz]�az]�az]�]�azaz]�az]�]�azaz]�azb�]�azaz]�]�az]�az]�azaz]�]�azaz]�az]�]�azazgQ]�L�]�]�{�b�]�]�gQ]�w]�v�w]�]�gCv�]�]�gCaz]�]�wazazw]�]�az]�]�]�az|]�az]�]�]�]�]�]�w]�]�]�]�az]�azaz]�az]�az]�]�azwaz]�]�]�az]�azaz]�az]�az]�azwaz]�az]�]�az]�az]�azazw]�az]�]�]�]�az]�az]�]�azaz]�az]�wazaz]�]�az]�az]�azaz]�wazaz]�az]�az]�az]�]�azaz]�waz]�w]�]�]�]�]�az]�azaz]�az]�]�az]�azwazaz]�]�azaz]�]�azaz]�az]�wazaz]�]�az]�azaz]�az]�]�azaz]�waz]�]�waz]�azwqaz|]�az|]�^5]�^]�^]�^]�azaz]�az^az^az^az^az^^azaz^^azaz^^	azaz^
azw�az^az^
^^^^e^e�e^e�ve^e^�~�^az|az^az^az^^(^az^azaz^^az^ az^!azaz^"az^#az^$az^%az^&az^'@azaz^)^*az^+az^,az^-az^.az^/az^0az^1azaz^2^3az^4azaz@^6az^7^T^8^Faz^9^:az^;azaz^<^=az^>azaz^?^@az^Aaz^Bazaz^Caz^Daz^Ew�azaz^G^H^P^I^Laz^J^KazazgQ^Maz^N^OazgQazgQaz^Q^Raz^SazgQaz^U^^^Vaz^Waz^X^[az^Yaz^ZgQazaz^\az^]azgQ^_^qaz^`^a^l^bazaz^caz^d^eaz^faz^gazaz^haz^i^jaz^kazazw�^m^ogQ^nazgQ^pazgQaz^razaz^saz^t^uaz^vazaz^w^xaz^yaz^zaz^{azaz^|^}az�az^`^�_�^�^�^�^�az^�^�gQ^�^�az^�azt�w^�j^�^�j^�j^�az^�azj^�^�j^�jjaz^�^�^�az^�t�az^�^�^�w^�w^�^�^�wazgQazaz^�^�az^�azv�^�^�azazv�^�azaz^�azw^�^�^�^�^�^�^�^�^�^�gQazazv�^�^�az^�azwv�^�t�azv�az^�^�^�^�^�^�wt�azv�^�azgQazaz^�^�mazm^�^�^�^�v�^�v�azaz^�^�w^�azaz^�^�azwazaz^�^�_\^�_I^�_^�^�^�^�az^�az^�^�^�az^�az^�azt�^�azt�gQ^�^�^�^�^�^�^�^�^�^�v�wcw�wc^�^�w�gQw�v�^�^�^�kXwcw�^�^�^�b�wazazgQaz^�^�^�v�wcw�v�^�^�^�^�^�^�w�^�v�w�v�gQgC^�gCv�^�^�kXaz^�az^�^�^�^�gQw�v�w�^�^�w�gQv�w�^�_^�_az^�^�az^�azazw________v�v�v�azazt�__
_	azt�azazt�__az_
azv�v�az____az___u�azu�v�az_v�_v�_wt�_az_az_azazm__6__._ az_!_(_"_%_#_$wcazv�az_&_'gQazgQaz_)_,_*_+v�azv�azaz_-v�az_/azaz_0_1_3az_2azgQ_4azaz_5v�az_7_C_8_<az_9_:az_;azt�azaz_=_>_A_?_@t�azt�az_Bazwt�_Dazaz_E_Faz_G_Hv�azv�azv�_J_K_Raz_Laz_M_N_Pv�_OgQt�_Qazt�azaz_Saz_T_Uaz_V_Xt�_Wazt�_Y_Zazv�_[t�v�azaz_]_^_x___h_`_c_a_bgQazazgC_d_f_ev�azw�_gazazwc_i_m_j_l_kjv�t�kXv�_n_q_omm_pv�az_r_u_s_tjju�v�_v_wgCv�u�kX_yaz_z_�_{_�_|_v�_}_~wu�v�b�_�_�v�ww�_�_�_�_�_�v�v�ub_�v�ubw8_�_�_�w�wUw�az_�v�v�_�az_�_�_�_�_�b�w��_�_���t�v�u�_�az_�_�v�azu�az_�_�_�_�az_�az_�az_��b�_�az_�_�_�_�az_�_�_�MazF�M_�_�_�az_�_�t�_�t�_�azt�_�_�_�azt�azazt�_�_�az_�_�_�_�Q�Q�N_�Q�Q�N_�F�N_�_�Q�Q�N_�_�_�az�k_��k�az_�_�_�@&MAe_�_�_�_�i@_�F�i@_�i@_�i@_�i@_�i@_�_�i@i@_�i@F�F�i@_�`_�_�_�_�az_�az_�_�az_�az_�_�_�_�F�i@i@F�_�F�i@F�az_�_�azaz_�_�NN_�N_�Q�N_�_�N_�_�N_�NN_�_�N_�NN[�_�`_�N_�NN_�_�N_�N_�`_�_�_�NN_�N_�_�NN_�N_�\;N_�N_�NN_�_�`_�NN`\;N`NN`\;N`N`N`N`NN`	N`
N`\;NN`
N``NN`OcNaz``````b�`NN`azF�`b�|Naz`b�`N`Naz``2az` az`!`"azaz`#az`$az`%az`&az`'`(azaz`)`*azaz`+az`,az`-`.az`/azaz`0`1az@az`3az`4az`5azaz`6az`7az`8`9azaz`:az`;az`<az`=`>az`?az`@az`Aazaz`Baz`C`Dazaz@`F|6`Go�`Hh`Id`Jb&`Ka2`L`�`M`�`N`g`O`[`P`W`Q`T`R@`S@|@`U@`V@�@`X@`Y@`Z@�@`\`c`]```^@`_@az@`a@`b@az@@`d`e@`f@az@`h`t`i`l`j@`k@az@`m`q`n@`o`p|@|@`r@`s@az@`u`{`v`y`w@az`xaz@`z@az@`|``}@`~@az@`�@az`�az@`�`�`�`�`�`�`�`�`�@az@`�@`�@az@`�`�az@`�@`�@�@`�`�`�`�`�@`�@|@`�@`�@�@`�`�`�@`�@az@`�@`�@|@`�`�`�`�`�`�`�@`�@az@`�@`�@|@`�`�`�@`�@az@`�@`�@az@`�`�`�`�`�@`�@|@`�@`�@|@`�`�`�@`�@az@`�@`�@az@`�`�`�`�`�`�`�`�`�`�`�@`�@az@`�@`�@az@`�`�`�@`�@|@`�@`�@az@`�`�`�`�`�@`�@`�@`�||`��|`�@`�@�@`�@`�@az@`�`�`�`�`�@`�@`�@az@`�`�`�@`�`�az@az@`�@`�@az@`�`�`�`�`�@`�@az@`�@`�@az@@`�`�@`�@az@`�a`�a`�`�`�@`�@`�@az@aaa@a@az@a@a@az@aaaaa	@a
@az@a@a
@az@aaa@a@�@a@a@az@aa%aaaaa@a@az@a@a@v�@aa"a @a!@az@a#@a$@az@a&a-a'a*a(@a)@az@a+@a,@�@a.a1a/@a0@az@v�ja3a�a4ala5aSa6aDa7a>a8a;a9@a:@az@a<@a=@az@a?aAa@@az@aB@aC@az@aEaLaFaIaG@aH@|@aJ@aK@az@aMaPaN@aO@az@aQ@aR@az@aTaaaUaYaV@aW@aX@az@aZa^a[@a\a]az@az@a_@a`@az@abafacaead@az@az@agajah@ai@az@ak@�@ama�ana�aoa�aparaq@az@as@ata�|auav����aw��ax��ayaz��a{a~a|a}����|a��|���|a�a�a�@a�@�@a�@az@a�a�a�a�a�@a�@az@a�@a�@��@a�a�a�@a�@az@a�@a�@az@a�a�a�a�a�a�a�@a�@az@a�@a�@az@a�a�a�@a�@az@a�@a�@az@a�a�a�a�a�@a�@f@a�@a�@az@a�a�a�@a�@az@a�@a�@|@a�a�a�a�a�a�a�a�a�@a�@a�@az@a�a�a�@a�@�@a�@a�@w@a�a�a�a�a�@a�@a�@|a�a�||a��|a�@a�@|@a�a�a�@a�@az@a�@a�@�@a�a�a�a�a�@a�@az@a�@a�@a�a�az@�@a�a�a�a�a�@a�@az@a�@a�@az@a�a�a�@a�@|@a�@a�@|@a�ba�a�a�a�a�@a�@a�@az@a�@a�@a�@az@a�ba�a�a�@az@b@b@az@bbb@b@az@bb	b@w�w�b
@�@bbb
bbbb@b@az@b@az@bbb@b@��@b@b@az@bbb@b@b@az@b b#b!@b"@az@b$@b%@az@b'cb(b�b)bdb*bJb+b7b,b0@b-b.@b/@az@b1b4b2@b3@az@b5@b6@az@b8bCb9b@b:@b;@azb<azb=azb>azb?v�t�bA@bB@az@bDbGbE@bF@�@bH@bI@az@bKbXbLbPbM@bN@bO@az@bQbUbR@bSbTaz@az@bV@bW@az@bYb]bZ@b[@b\@az@b^bab_@b`@az@bb@bc@az@beb�bfbtbgbmbhbkbi@bj@az@bl@az@bnbqbo@bp@��@br@bs@�@bub|bvbybw@bx@|@bz@b{@az@b}b�b~@b@|@b�@b�@azb�azb�b�azb�azazb�azb�b�b�azb�w�azazb�azw�b�b�b�b�b�b�b�@|@b�@b�@|@b�b�b�@b�@az@b�@b�@az@b�b�b�b�b�@az@b�@b�@az@b�b�b�@b�@az@b�@b�@|@b�b�b�b�b�b�b�b�b�b�azb�azb�az@b�@b�@H @b�b�b�@b�@az@b�@b�@az@b�b�b�@b�@b�@az@b�b�b�@az@b�@az@b�b�b�b�b�@b�@b�@b�@b�||b�b�|b�|�|b�b�b�@b�b�az@az@b�@b�@az@b�b�b�b�b�@b�@az@b�@b�@az@b�b�b�@b�@|@b�@b�@�@b�cb�b�b�b�b�@b�@b�@az@@b�b�@b�@az@b�b�b�b�b�@b�@az@b�@b�@|@b�b�b�@b�@az@c@c@az@cccc@cc@c@az@c	cc
@c@|@c
@c@az@ccccc@c@az@c@c@az@@cccmcmazazcazv�cc�cc\c c>c!c/c"c)c#c&c$@c%@az@c'@c(@�@c*c,c+@az@c-@c.@az@c0c7c1c4c2@c3@|@c5@c6@az@c8c;c9@c:@|@c<@c=@az@c?cNc@cDcA@cB@cC@az@cEcIcF@cGcHaz@az@cJcLazcKwkXazcMaz@cOcUcPcRcQ@az@cS@cT@az@cVcYcW@cX@|@cZ@c[@az@c]c|c^cmc_cfc`ccca@cb@az@cd@ce@az@cgcjch@ci@az@ck@azclaz@cncucocrcp@cq@|@cs@ct@az@cvcycw@cx@az@cz@c{@az@c}c�c~c�cc�az@c�@az@c�c�c�@az@c�@c�@az@c�c�c�c�c�@az@az@c�c�c�@c�@|@c�@c�@az@c�c�c�c�c�c�@c�c�c�c�@azc�az@c�@c�@az@c�c�c�c�c�@c�@az@c�@c�@az@c�c�c�@c�@az@c�@c�@az@c�c�c�c�c�@c�@c�@az@c�c�c�@@c�az@c�@c�@|@c�c�c�@c�@c�@|@c�c�c�@c�@az@c�@c�@az@c�c�c�c�c�c�c�c�c�@c�@az@c�@c�@az@c�c�c�@c�@|@c�@az@c�c�c�c�c�@c�@az@c�@c�@az@c�c�c�@c�@|@c�@c�@az@c�c�c�c�c�c�c�@c�@|@c�@c�@az@c�c�c�@c�@az@c�@c�@az@c�c�c�c�c�@c�@az@c�@c�@�@c�dd@d@az@d@d@az@df;deUddud	d=d
d dddd@d
d@d@u�@ddd@d@az@d@d@az@dd@dd@d@az@@dd@d@az@d!d.d"d&d#@d$@d%@az@d'd+d(@d)d*�@|@d,@d-@az@d/d6d0d3d1@d2@f@d4@d5@az@d7d:d8@d9@�@d;@d<@az@d>dZd?dNd@dGdAdDdB@dC@az@dE@dF@az@dHdKdI@dJ@az@dL@dM@az@dOdVdPdSdQ@dR@az@dT@dU@az@@dWdX@dY@az@d[dgd\d`d]@d^@d_@az@dadddb@dc@az@de@df@az@dhdndidldj@dk@�@dm@az@dodrdp@dq@|@ds@dt@L�@dvd�dwd�dxd�dyd�dzd}d{@d|@|@d~@d@az@d�d�d�@d�@az@d�@d�@az@d�d�d�d�d�@d�@az@d�@d�@��@d�d�d�@d�@az@d�@azd�az@d�d�d�d�d�@d�@d�@az@d�d�d�@d�d�|@az@d�@d�@az@d�d�d�d�d�@d�@az@d�@d�@az@d�d�d�@d�@f@azd�az@d�d�d�d�d�d�d�d�d�@az@az@d�d�d�@d�@az@d�@d�@az@d�d�d�d�d�@d�@az@d�@d�@az@d�d�d�@d�@az@d�@d�@az@d�d�d�d�@d�d�@d�@az@d�d�d�@d�@az@d�@d�@|@d�d�d�d�d�@az@d�@d�@|@d�d�d�@d�@az@d�eBd�e*d�ed�d�gQd�d�d�d�gQd�gQgQd�d�gQgQ��d�gQd�gQgQd�d�gQ��gQd�gQd�gQd�d�gQd�d�gQgQd�gQ��gQd�egQegQ��gQeeee
egQegQgQeegQe	gQ��gQegQegQe
gQegQegQgQ@ee eeeegQegQegQegQ��egQgQegQe��gQgQegQeegQegQgQ��gQe!e"e&e#gQe$gQgQe%gQ��e'gQe(gQe)gQ��gQe+e9e,gQe-e3gQe.e/gQe0gQe1gQgQe2��gQe4gQgQe5e6gQe7gQgQe8gQ��e:gQe;gQgQe<gQe=gQe>gQe?e@eAgQ����gQeCazeDeFazeEaz�eGazeHeNeIazeJazazeKeLazeMazazw�azeOePazazeQazeReSeTw�azw�azeVe�eWe�eXeueYeheZeae[e^e\@e]@az@e_@e`@az@ebeeec@ed@az@ef@eg@az@eienejemek@el@az@az@eoerep@eq@|@es@et@az@eve�ewezex@ey@|@e{e~e|@e}az�@e@e�@�@e�e�e�e�e�@e�@az@e�@e�@|@e�e�az@e�@e�@��@e�e�e�e�e�e�e�e�e�@|@e�@e�@az@e�e�e�@e�@az@e�@e�@az@e�e�e�e�e�@e�@az@e�@e�@az@e�e�e�@e�@az@e�@e�@w�@e�e�e�e�e�e�e�@e�@az@e�@e�@az@e�e�e�@e�@az@e�@e�@az@e�e�e�e�e�@e�@az@e�@e�@v�@e�@e�@az@e�fe�e�e�e�e�e�e�e�e�@e�@az@e�@e�@az@e�e�e�@e�@|@e�@az@e�e�e�e�e�@e�@az@e�@e�@az��e�e�e�@e�@az@e�@e�@az@e�e�e�e�e�@e�@aze�az@e�e�e�@e�e�az@az@e�@e�@az@e�e�e�e�e�@e�@az@e�@e�@az@e�ff@f@az@f@f@az@ff"fffff	ff
@f@|@f
@f@az@fff@f@|@f@f@|@fffff@f@az@f@f@az@f@f @f!@az@f#f2f$f+f%f(f&@f'@az@f)@f*@az@f,f/f-@f.@|@f0@f1@az@f3f7f4@f5@f6@az@@f8f9@f:@az@f<g f=f�f>fuf?f^f@fOfAfHfBfEfC@fD@|@fF@fG@az@fIfLfJ@fK@az@fM@fN@az@fPfWfQfTfR@fS@az@fU@fV@|@fXf[fY@fZ@az@f\@f]@az@f_fh@f`fafefb@fcfd�@|@ff@fg@�@fifnfjfkaz@fl@fm@az@fofrfp@fq@az@fs@ft@|@fvf�fwf�fxf|@fyfz@f{@az@f}f�f~@f@az@f�@f�@az@f�f�f�f�f�@f�@�@f�@f�@az@f�f�f�@f�@az@f�@f�@az@f�f�f�@f�f�f�@f�@az@f�@f�@az@f�f�f�f�f�@f�@az@f�@f�@|@f�f�f�@azf�az@f�@az@f�f�f�f�f�f�f�f�@f�f�@f�@az@f�f�f�@f�@az@f�@f�@az@f�f�f�f�f�@f�@az@f�@f�@az@f�f�f�@f�@az@f�@f�@az@f�f�f�f�f�@f�@f�@az@f�f�f�@f�f�|@az@f�@f�@az@f�f�f�f�f�@f�@az@f�@f�@|@f�f�f�@f�@az@f�@f�@|@f�gf�f�f�f�f�f�f�@f�@|@f�@f�@az@f�f�f�@f�@|@f�@f�@az@f�f�f�f�f�@f�@az@f�@f�@|@f�gf�@g@az@g@g@az@gggg
gg
g@g	@az@g@g@az@ggg@g@az@g@g@��@ggggg@g@az@g@g@az@@gg@g@|@g!g�g"g]g#g?g$g1g%g,g&g)g'@g(@|@g*@g+@az@g-g0g.@g/@az@az@g2g8g3g5g4@az@g6@g7@az@g9g<g:@g;@az@g=@g>@az@g@gNgAgEgB@gC@gD@az@gFgKgGgIgHaz�@gJ@az@gL@azgMaz@gOgVgPgSgQ@gR@az@gT@gU@az@gWgZgX@gY@az@g[@g\@az@g^g~g_gog`gggagdgb@gc@�@ge@gf@az@ghglgi@gjgkaz�az@gm@gn@az@gpgwgqgtgr@gs@az@gu@gv@az@gxg{gy@gz@az@g|@g}@az@gg�g�g�g�g�g�@g�@az@g�@g�@az@g�g�g�@g�@az@g�@g�@az@g�g�g�g�g�@g�@az@g�@g�@|@g�g�g�@az@g�@g�@az@g�g�g�g�g�g�g�g�g�g�g�@g�@az@g�@g�@az@g�g�g�@g�@az@g�@g�@az@g�g�g�g�g�@g�@az@g�@az@@g�g�@g�@|@g�g�g�g�g�@g�@g�@az@g�g�g�@g�g�|@az@g�@g�@|@g�g�g�g�g�@g�@az@g�@g�@az@g�g�g�@g�@|@g�@g�@�@g�g�g�g�g�g�g�g�g�@g�@az@g�@g�@az@@g�g�@g�@az@g�g�g�g�g�@g�@�@g�@g�@az@g�g�g�@g�@az@g�@g�@az@g�hg�g�@g�g�@g�@az@g�g�g�@g�@az@g�@g�@|@hhhhh@h@az@h@h@az@h	hh
@h@az@h
@h@|@hk�hjhihh�hhNhh1hh%hhhhh@h@az@h@h@|@hh"h @h!@az@h#@h$@az@h&h*@h'h(@h)@az@h+h.h,@h-@az@h/@h0@az@h2h?h3h7h4@h5@h6@az@h8h<h9@h:h;az@az@h=@h>@az@h@hGhAhDhB@hC@az@hE@hF@�@hHhKhI@hJ@az@hL@hM@az@hOhmhPh_hQhXhRhUhS@hT@|@hV@hW@az@hYh\hZ@h[@az@h]@h^@az@h`hfhahdhb@hc@az@he@az@hghjhh@hi@az@hk@hl@az@hnh}hohvhphshq@hr@az@ht@hu@az@hwhzhx@hy@az@h{@h|@az@h~h�hh�h�@h�@�@h�@h�@az@h�h�h�@h�@|@h�@h�@h�@h�azh�azh�az�azh�h�h�h�h�h�h�h�h�@h�@h�@az@h�h�h�@h�@az@h�@h�@v�@h�h�h�h�h�@az@h�@h�@az@h�h�h�@h�@az@h�@h�@azb�h�h�h�h�@h�h�@h�@az@h�h�h�@az@h�@h�@az@h�h�h�h�h�@h�@�@h�@h�@az@h�h�h�@h�@�@h�@h�@az@h�h�h�h�h�h�h�h�h�@h�@az@h�@h�@az@h�h�h�@h�@az@h�@h�@az@h�h�h�h�h�@h�@az@h�@h�@az@h�h�h�@h�@az@h�@h�@az@h�h�h�h�h�h�h�@h�@az@h�@h�@az@h�h�h�@h�@az@h�@h�@az@h�h�h�h�h�@az@h�@h�@az@iii@i@az@i@i@az@iiyiiAi	i#i
iiiiii
@i@az@i@i@az@iiaz@i@i@b�@iiiii@i@|@i@i@az@@i i!@i"@|@i$i3i%i,i&i)i'@i(@az@i*@i+@az@i-i0i.@i/@az@i1@i2@az@i4i;i5i8i6@i7@az@i9@i:@az@i<i?i=@i>@az@i@@az@iBiaiCiRiDiKiEiHiF@iG@az@iI@iJ@|@iLiOiM@iN@az@iP@iQ@az@iSiZiTiWiU@iV@az@iX@iY@az@i[i^i\@i]@|@i_@i`@az@ibioicihidie|@if@ig@az@iiilij@ik@az@im@in@az@ipit@iqir@is@az@iuivaz@iw@ix@M@izi�i{i�i|i�i}i�i~i�i@i�@az@i�@i�@az@@i�i�@i�@az@i�i�i�i�i�@i�@az@i�@i�@az@i�i�i�@i�@az@i�@i�@az@i�i�i�i�i�i�i�@i�@az@i�@i�@az@i�i�i�@i�@|@i�@az@i�i�i�i�i�@i�@az@i�@i�@az@i�i�i�@i�@az@i�@i�@i�@azi�azi�azi�i�i�i�i�azi�azi�az�i�azi�azv�t�i�i�azi�azi����
i�i�i���v�az��i���azi�i�i�i�i�i�@i�i�@i�@az@i�i�i�@i�@az@i�@i�@az@i�i�i�i�i�@i�@az@i�@i�@i�@i�i�azi�i�azi�azi�az�az�azi�i�i�@i�@az@i�@i�@az@i�i�i�i�i�i�i�@i�@az@i�@i�@az@i�i�i�@az@i�@i�@az@i�jazi�i�@j@v�@@jj@j@az@jj�jjyjjDj	j%j
jjjjjazj
j@az@j@j@az@jjj@j@�@j@j@�@jj@jj@j@az@jj"j @j!@az@j#@j$@az@j&j5j'j.j(j+j)@j*@az@j,@j-@az@j/j2j0@j1@az@j3@j4@az@j6j=j7j:j8@j9@|@j;@j<@az@j>jAj?@j@@az@jB@jC@az@jEj_jFjTjGjNjHjKjI@jJ@|@jL@jM@az@jOjRjP@azjQaz@jS@az@jUjY@jVjW@jX@az@jZj\j[@az@j]@j^@az@j`jmjajfjbjc|@jd@je@az@jgjjjh@ji@az@jk@jl@az@jnjujojrjp@jq@az@js@jt@az@@jvjw@jx@az@jzj�j{j�j|j�j}j�@j~j@j�@az@j�j�j�@j�@az@j�@j�@az@j�j�j�j�j�@j�@az@j�@j�@|�@j�j�j�@j�@az@j�@j�@az@j�j�j�j�j�j�j�@j�@az@j�@az@j�j�j�@j�@az@j�@j�@az@j�j�j�j�j�@j�@az@j�@j�@az@@j�j�@j�@az@j�j�j�j�j�j�j�j�j�@|@j�@j�@az@j�j�j�@j�@az@j�@j�@v�@j�j�j�j�j�@j�@az@j�@j�@az@j�j�j�@j�@|@j�@j�@|@j�j�j�j�j�j�j�@j�@az@j�@j�@az@j�j�j�@j�@az@j��j�@az@j�j�j�j�j�@j�@az@j�@j�@|�@j�j�j�@j�@az@j�@j�@az@j�koj�k0j�kj�kj�kj�j�j�@j�@|@j�@j�j�j�j�azv�gCazazj���v�kkazkk@az@k@k@az@kk
k	kk
@az@k@az@kkk@k@az@k@k@az@kk!kkkkk@k@az@k@k@az@@kk@k @az@k"k)k#k&k$@k%@az@k'@k(@az@k*k-k+@k,@az@k.@k/@az@k1kPk2kAk3k:k4k7k5@k6@az@k8@k9@az@k;k>k<@k=@|@k?@k@@az@kBkIkCkFazkDkE@az@kG@kH@az@kJkMkK@kL@az@kN@kO@|@kQk`kRkYkSkVkT@kU@az@kW@kX@az@kZk]k[@k\@az@k^@k_@|@kakhkbkekc@kd@az@kf@kg@az@kiklkj@kk@�@km@kn@az@kpk�kqk�krk�kskzktkwku@kv@|@kx@ky@az@k{k}k|@az@k~@k@az@k�k�k�k�k�@az@k�@k�@az@k�k�k�@k�@|@k�@k�@az@k�k�k�k�k�k�k�@k�@az@k�@k�@az@k�k�k�@k�@az@k�@k�@az@k�k�k�k�k�@k�@|@k�@k�@az@k�k�k�@k�@az@k�@k�@az@k�k�k�k�k�k�k�k�k�@k�@|@k�@az@k�k�k�@k�@|@k�@k�@az@k�k�k�@k�@k�@�@k�k�k�@k�@az@k�@k�@az@k�k�k�k�k�k�k�@|@k�@k�@az@k�k�k�@k�@az@k�@k�@wU@k�k�k�k�k�@k�@az@k�@az@k�k�k�@k�@az@k�@k�@az@k�m�k�l�k�ljk�l.k�lk�lk�k�k�k�k�@k�@az@k�@k�@az@k�k�k�@k�@az@k�@k�@k�@k�azazk�k�azk�azazlazllazazw�lllll@l@az@l	@l
@azw�lll
@l@az@l@l@az@ll"lllll@l@az@l@l@az@lll@l@az@l @l!@az@l#l'@l$l%@l&@az@l(l+l)@l*@az@l,@l-@az@l/lLl0l=l1l7l2l4l3@az@l5@l6@|@l8l:l9@az@l;@l<@az@l>lEl?lBl@@lA@az@lC@lD@az@lFlIlG@lH@az@lJ@lK@|@lMl^lNlUlOlRlP@azlQaz@lS@lT@az@lVlYlW@lX@az@lZl\l[@az@l]@�@l_lfl`lcla@azlbaz@ld@le@az@@lglh@li@|@lkl�lll�lmlylnlulolrlp@lq@az@ls@lt@az@@lvlw@lx@az@lzl�l{l~l|@l}@az@l@l�@az@l�l�l�@l�@|@l�@l�@az@l�l�l�l�l�l�l�@l�@az@l�@l�@az@l�l�l�@l�@az@l�@l�@az@l�l�l�l�l�@l�@|@l�@l�@az@l�l�l�@l�@az@l�@l�@az@l�l�l�l�l�l�l�l�l�@l�@|@l�@l�@az@l�l�l�@l�@az@l�@l�@az@l�l�l�l�l�@l�@|@l�@l�@az@l�l�l�@l�@az@l�@l�@az@l�l�l�l�l�l�l�@l�@az@l�@l�@az@l�l�l�@az@l�@l�@az@l�l�l�l�l�@l�@az@l�@l�@b�@l�l�l�@l�@az@l�@l�@az@l�mll�m#l�ml�l�l�l�l�l�l�@|l�|@l�@l�@azv�l�l�l�@azl�az@l�@l�@az@l�ml�l�l�@l�@|@l�@l�@az@@mm@m@az@mmmm
mm
m@m	@az@m@m@az@mmm@m@�|m@m@az@mmmmm@m@az@m@m@az@mm m@m@az@m!@m"@az@m$mMm%m4m&m-m'm*m(@m)@|@m+@m,@�@m.m1m/@m0@az@m2@m3@az@m5m<m6m9m7@m8@|@m:@m;@az@m=mJm>@m?@azm@mAazmBazmCazmDmGmEw�mFw�azw�w�mHmIazw�azmK@mL@az@mNm]mOmVmPmSmQ@mR@az@mT@mU@az@mWmZmX@mY@|@m[@m\@az@m^mem_mbm`@ma@az@mc@md@az@mfmimg@mh@az@mj@mk@az@mmm�mnm�mom�mpmmqmtmr@ms@az@mu@mv@mw@mxazazmyazmzm{azazm|m}azm~azw�azm�m�m�@azm�az@m�@m�@m�azm�azm�azm�azm�azm�azazm�m�m�w�azw�azm�m�m�m�m�@m�@az@m�@m�@az@m�m�m�@m�@az@m�@m�@|@m�m�m�m�m�m�m�@m�@|@m�@m�@az@m�m�m�@m�@az@m�@m�@az@m�m�m�m�m�@m�@az@m�@m�@az@m�m�m�@m�@az@m�@m�@az@m�m�m�m�m�m�m�m�|@m�@m�@az@m�m�m�@m�@|@m�@m�@az@m�m�m�m�m�@m�@az@m�@m�@az@m�m�m�@azm�az@m�@az@m�m�m�m�@m�m�@m�@az@m�m�m�@az@m�@m�@m�@|m�|�m�m�m�m�m�@m�@az@m�@m�@az@@m�m�@m�@az@m�n�m�njm�n/m�nm�nm�m�@m�m�@m�@az@m�nn@n@|@n@|@nnnn	n@n@�'@n
@n@az@n
nn@n@az@n@n@az@nn nn@nn@n@az@nnn@n@|@n@n@az@n!n(n"n%n#@n$@az@n&@n'@�@n)n,n*@n+@az@n-@n.@az@n0nLn1n@n2n9n3n6n4@n5@az@n7@n8@az@n:n=n;@n<@az@n>@n?@azwnAnEnB@nC@nD@|@nFnInG@nH@|@nJ@nK@az@nMn\nNnUnOnRnP@nQ@az@nS@nT@az@nVnYnW@nX@az@nZ@n[@az@n]ndn^nan_@n`@az@nb@nc@|@nenhnf@ng@gQ@ni@az@nkn�nln�nmn{nnnunonrnp@nq@�@ns@nt@az@nvnynw@nx@az@nz@az@n|n�n}n�n~@n@az@n�@n�@az@n�n�n�@n�@az@n�@n�@az@n�n�n�n�n�n�n�@n�@az@n�@n�@az@n�n�n�@n�@az@n�@n�@b�@n�n�n�n�n�@n�@az@n�@az@n�n�n�@az@n�@n�@az@n�n�n�n�n�n�n�n�n�@n�@az@n�@n�@|@n�n�n�@az@n�@n�@az@n�n�n�n�n�@n�@az@n�@n�@az@n�n�n�@n�@n�@n�azn�azn�azn�n�azn�n�azazn�b�azazn�azn�n�azwazn�@az@n�n�n�n�n�n�n�@n�@az@n�@n�@az@n�n�n�@n�@az@n�@az@n�n�n�n�n�@n�@az@n�@n�@az@n�n�n�@n�@az@n�@n�@az@n�oen�o-n�on�on�n�n�n�n�@n�@az@n�@n�@az@n�n�n�@n�@az@o@o@v�@oo
ooo@o@az@o@o	@az@ooo@o
@|@o@o@b�@oooo@oo@o@az@ooo@o@az@o@o@az@oo&o o#o!@o"@az@o$@o%@w@o'o*o(@o)@az@o+@o,@az@o.oMo/o>o0o7o1o4o2@o3@|@o5@o6@az@o8o;o9@o:@az@o<@o=@az@o?oFo@oCoA@oB@az@oD@oE@az@oGoJoH@oI@�@oK@oL@az@oNoZoOoS@oPoQ@oR@az@oToWoU@oV@az@oX@oY@az@o[oao\o_o]@o^@az@o`@az@@oboc@od@az@ofo�ogo�ohowoiopojomok@ol@az@on@oo@az@oqotor@os@|@ou@ov@az@oxo~oyo{oz@az@o|@o}@az@oo�o�@o�@az@o�@o�@az@o�o�o�o�o�o�o�@o�@az@o�@o�@az@@o�o�@az@o�o�o�o�o�@o�@|@o�@o�@az@o�o�o�@o�@�@o�@o�@az@o�o�o�o�o�o�o�o�o�@o�@az@o�@o�@az@o�o�o�@o�@|@o�@o�@az@o�o�o�o�o�@o�@az@o�@az@o�o�o�@o�@az@o�@o�@az@o�o�o�o�@o�o�@o�@o�@o��o���o�o�o�azgCgC�@o�o�@o�@az@o�o�o�o�o�@o�@az@o�@az@o�o�o�@o�@|@o�@o�@az@o�w�o�s�o�q�o�p�o�pmo�p+o�po�o�o�o�o�o�o�@o�@az@o�@o�@az@o�o�o�@o�@az@o�@o�@az@o�po�po�@o�@o�@azo�o�po�o�o�azv�azo�pazjv�w�pazppazjjazp@p@|@p	pp
@|p|@p
@p@az@ppppppp@p@az@p@p@b�@ppp@p@az@p@p@|@p p&p!p#p"@az@p$@p%@az@p'p)p(@az@p*@az@p,pPp-pBp.p5p/p2p0@p1@az@p3@p4@az@@p6p7@p8@p9@p:|p;p?p<p>p=|��||�6p@|�pA�|[pCpIpDpFpE@az@pG@pH@az@pJpMpK@pL@�@pN@pO@az@pQp^pRpWpSpTaz@pU@pV@�azpXp[pY@pZ@az@p\@p]@az@p_pfp`pcpa@pb@az@pd@pe@az@pgpjph@pi@|@pk@pl@az@pnp�pop�ppp}pqpvprpsaz@pt@pu@H:@pwpzpx@py@�@p{@p|@az@p~p�pp�p�@azp�az@p�@p�@p�@azp�azp�p�azp�azp�azazp�azp�azgQp�p�p�@azp�az@p�@p�@az@p�p�p�p�p�p�p�@p�@|@p�@p�@az@p�p�p�@p�@az@p�@p�@az@p�p�p�p�p�@p�@az@p�@p�@az@p�p�p�@p�@az@p�@p�@az@p�p�p�p�p�p�p�p�p�@p�@az@p�@p�@az@p�p�p�@az@p�@p�@az@p�p�p�p�p�@p�@az@p�@p�@az@p�p�p�@p�@|@p�@p�@az@p�p�p�p�p�p�p�@p�@az@p�@p�@az@p�p�p�@p�@az@p�@p�@az@p�p�p�p�p�@p�@az@p�@p�@az@p�p�p�@p�@az@p�@p�@|@p�qmp�q1p�qp�qp�p�p�p�p�@p�@az@p�@p�@az@p�qp�@q@az@q@q@az@qqqq	q@q@az@q
@q@az@q
qq@q@az@q@q@v�@qq#qqqqq@q@�@q@q@az@qq q@q@az@q!@q"@az@q$q+q%q(q&@q'@�@q)@q*@az@q,q.q-@az@q/@q0@v�@q2qPq3qBq4q;q5q8q6@q7@az@q9@q:@gC@q<q?q=@q>@az@q@@qA@kX@qCqJqDqGqE@qF@az@qH@qI@�@qKqNqL@qM@az�qO@|@qQq`qRqYqSqVqT@qU@az@qW@qX@v�@qZq]q[@q\@az@q^@q_@az@qaqhqbqeqc@qd@az@qf@qg@|@qiqj|@qk@ql@az@qnq�qoq�qpqqqqxqrquqs@qt@az@qv@qw@az@qyq|qz@q{@az@q}@q~@az@q�q�q�q�q�@q�@az@q�@q�@az@q�q�q�@q�@az@q�@q�@az@q�q�q�q�@q�q�@q�@az@q�q�q�@q�@az@q�@q�@az@q�q�@q�q�@q�@gQ@q�q�q�@az@q�@q�@az@q�q�q�q�q�q�q�q�q�@az@q�@q�@az@q�q�q�@az@q�@q�@az@q�q�q�q�q�@q�@az@q�@q�@az@@q�q�@q�@az@q�q�q�q�q�q�q�@q�@|@q�@q�@az@q�azazq�az@q�q�q�q�q�@az@q�@q�@az@q�q�q�@q�@az@q�@q�@az@q�r�q�rLq�rq�q�q�q�q�q�q�q�q�@q�@az@q�@q�@az@q�q�q�@az@q�@q�@az@q�q�@q�q�@q�@az@q�q�q�@q�@|@q�@az@q�rq�q�q�@q�@q�@az@rrr@r@az@r@r@az@rrrrr	@r
@|@r@r
@az@rrr@azraz@r@r@az@rr-rr@rrrr@azraz@r@az@rr&r r#r!@r"@az@r$@r%@|@r'r*r(@r)@|@r+@r,@gC@r.r=r/r6r0r3r1@r2@az@r4@r5@|@r7r:r8@r9@|@r;@r<@az@r>rEr?rBr@@rA@az@rC@rD@az@rFrIrG@rH@wc@rJ@rK@|@rMr�rNrmrOr^rPrWrQrTrR@rS@az@rU@rV@az@rXr[rY@rZ@az@r\@r]@az@r_rfr`rcra@rb@az@rd@re@az@rgrjrh@ri@az@rk@rl@az@rnr|rorurprsrq@rr@az@rt@|@rvryrw@rx@|@rz@r{@az@r}r�r~r�r@r�@az@r�@r�@r�@r�azazr�azr�azr�r�azazr�azr�azw�r�r�r�@r�@az@r�@r�@az@r�r�r�r�r�r�r�r�r�@r�@az@r�@r�@az@r�r�r�@az@r�@r�@az@r�r�r�r�r�@r�@az@r�@r�@|@r�r�r�@r�@az@r�@r�@az@r�r�r�r�r�r�r�@r�@�@r�@r�@b�@r�r�r�@r�@az@r�@r�@az@r�r�r�r�az@r�@r�@az@r�r�r�@r�@az@r�@r�@az@r�sNr�sr�r�r�r�r�r�r�r�r�@r�@|@r�@r�@az@r�r�r�@r�@az@r�@r�@az@r�r�r�r�r�@r�@|@r�@r�@az@r�r�r�@r�@|@r�@r�@az@r�sr�r�r�r�r�@r�@az@r�@r�@az@r�r�r�@r�@az@r�@s@w@ss	sss@s@az@s@s@az@s
s
s@s@az@s@s@gC@ss0ss!sssss@s@az@s@s@az@sss@s@az@s@s @az@s"s)s#s&s$@s%@az@s'@s(@az@s*s-s+@s,@az@s.@s/@az@s1s@s2s9s3s6s4@s5@az@s7@s8@az@s:s=s;@s<@�@s>@s?@az@sAsHsBsEsC@azsDaz@sF@sG@f@sIsKsJ@az@sL@sM@az@sOs�sPsosQs`sRsYsSsVsT@sU@az@sW@sX@az@sZs]s[@s\@az@s^@s_@|@sashsbsesc@sd@az@sf@sg@az@sislsj@sk@�@sm@sn@az@sps~sqsxsrsuss@st@|@sv@sw@az@sys{sz@�@s|@s}@az@ss�s�s�s�@s�@az@s�@s�@az@s�s�s�@s�@az@s�@s�@az@s�s�s�s�s�s�s�s�s�@s�@az@s�@s�@az@s�s�s�@s�@|@s�@s�@az@s�s�s�s�s�@s�@az@s�@s�@|@s�s�s�@s�@az@s�@s�@az@s�s�s�s�s�s�s�@s�@az@s�@s�@az@s�s�s�@s�@az@s�@s�@az@s�s�s�s�s�@s�@|@s�@s�@az@s�s�s�@s�@az@s�@s�@az@s�u�s�t�s�tCs�t
s�s�s�s�s�s�s�s�s�@s�@az@s�@s�@|@s�s�s�@s�@|@s�@s�@az@s�s�@s�s�@s�@|@s�s�s�@az@s�@s�@|@s�s�s�s�s�s�s�@s�@az@s�@s�@az@s�s�s�@s�@az@s�@s�@az@s�ts�ts�@az@t@t@az@ttt@t@az@t@t	@az@tt&ttt
t@tt@t@az@ttt@az@t@t@az@ttttt@t@az@t@t@az@t t#t!@t"@az@t$@t%@az@t't5t(t.t)t+t*@az@t,@t-@az@t/t2t0@t1@|@t3@t4@az@t6t=t7t:t8@t9@az@t;@t<@az@t>t@t?@az@tA@tB@|@tDttEtatFtRtGtK@tHtI@tJ@az@tLtOtM@tN@az@tP@tQ@az@tStZtTtWtU@tV@|@tX@tY@az@t[t^t\@t]@az@t_@t`@az@tbtptctitdtfte@az@tg@th@az@tjtmtk@tl@az@tn@to@kX@tqtxtrtuts@tt@az@tv@tw@az@tyt|tz@t{@az@t}@t~@az@t�t�t�t�t�t�t�t�t�@t�@az@t�@t�@az@t�t�t�@t�@az@t�@t�@az@t�t�t�t�t�@t�@az@t�@t�@��@t�t�t�@t�@az@t�@t�@az@t�t�t�t�t�t�t�@t�@az@t�@t�@az@t�t�t�@t�@az@t�@t�@az@t�t�t�t�t�@az@t�@t�@az@t�azazt�az@t�u't�t�t�t�t�t�t�t�t�t�t�@t�@az@t�@t�@az@t�t�t�@t�@|@t�@t�@az@t�t�t�t�t�@|@t�@t�@az@t�t�t�@az@t�@t�@az@t�t�t�t�t�t�t�@t�@@azt�@t�@az@t�t�t�@t�@�E@t�@t�@az@t�t�t�t�t�@t�@az@t�@t�@az@t�t�t�@t�@az@t�@t�@az@t�ut�ut�t�@t�t�@t�@az@uuu@az@u@u@az@uuuu	azuaz@u
@u@az@@u
u@u@|@uuuuuuu@u@az@u@u@az@uuu@az@u@u@az@u azu!u$u"@u#@az@u%@u&@az@u(ucu)uHu*u9u+u2u,u/u-@u.@az@u0@u1@az@u3u6u4@u5@az@u7@u8@az@u:uAu;u>u<@u=@az@u?@u@@az@uBuEuC@uD@az@uF@uG@az@uIuTuJuPuKuMuL@az@uN@uO@az@@uQuR@uS@az@uUu\uVuYuW@uX@az@uZ@u[@az@u]u`u^@u_@az@ua@ub@az@udu�ueutufumugujuh@ui@|@uk@ul@az@unuquo@up@�@ur@us@az@uuu|uvuyuw@ux@|@uz@u{@az@u}uu~@az@u�@u�@az@u�u�u�u�@u�u�@u�@az@u�u�u�@u�@|@u�@u�@az@u�u�u�u�u�@u�@az@u�@u�@az@u�u�u�@u�@|@u�@u�@|@u�v�u�vu�u�u�u�u�u�u�u�u�u�u�@u�@az@u�@u�@|@u�u�u�@u�@az@u�@u�@az@u�u�u�u�u�@u�@�@u�@u�@az@u�u�u�@u�@|@u�@u�@az@u�u�u�u�u�u�u�@�@u�@u�@az@u�u�u�@u�@az@u�@u�@az@u�u�u�u�u�@u�@az@u�@u�@az@u�u�u�@azu�az@u�@u�@az@u�u�u�u�u�u�@u�az@u�u�u�@u�@|@u�@u�@az@u�u�u�u�u�@u�@az@u�@u�@az@u�u�u�@u�@az@u�@u�@az@u�v
u�vu�vu�@u�@az@v@v@az@vvv@v@|@v@v	@az@vvvvv
@v@|@v@v@az@vvv@v@|@v@v@t�@vvVvv:vv+vv$vv!v@v @az@v"@v#@az@v%v(v&@v'@az@v)@v*@az@v,v3v-v0v.@azv/az@v1@v2@az@v4v7v5@v6@|@v8@v9@az@v;vGv<v@@v=v>@v?@az@vAvDvB@vC@az@vE@vF@|@vHvOvIvLvJ@vK@az@vM@vN@|@vPvSvQ@azvRaz@vT@vU@az@vWvvvXvgvYv`vZv]v[@v\@az@v^@v_@az@vavdvb@vc@|@ve@vf@az@vhvovivlvj@vk@�@vm@vn@az@vpvsvq@vr@az@vt@vu@az@vwv�vxvvyv|vz@v{@az@v}@v~@az@v�v�azv�v�@az@v�@v�@az@v�v�v�v�v�@az@v�@v�@az@v�v�v�@v�@az@v�@v�@az@v�wv�v�v�v�v�v�v�v�v�v�azv�v�@az@v�@v�@az@v�v�v�@v�@az@v�@v�@az@v�v�v�v�v�@v�@az@v�@v�@az@v�v�v�@v�@az@v�@v�@az@v�v�v�v�v�v�v�@v�@az@v�@v�@az@v�v�v�@v�@az@v�@v�@az@v�v�v�v�v�@v�@|@v�@v�@az@v�v�v�@v�@az@v�@v�@L�@v�v�v�v�v�v�v�v�v�@az@v�@v�@az@v�v�v�@v�@|@v�@v�@az@v�v�v�v�v�@az@v�@v�@az@v�v�v�@v�@az@v�@v�@az@v�wv�v�v�v�v�@v�@az@v�@v�@|@v�wv�@v�@az@w@w@|@wwwww@w@|@w	@w
@az@www
@w@az@w@w@az@wwQww2ww#wwwww@az@w@w@az@ww w@w@az@w!@w"@az@w$w+w%w(w&@w'@|@w)@w*@az@w,w/w-@azw.az@w0@w1@az@w3wBw4w;w5w8w6@w7@az@w9@w:@az@w<w?w=@w>@az@w@@wA@az@wCwJwDwGwE@wF@az@wH@wI@az@wKwNwL@wM@az@wO@wP@az@wRwqwSwbwTw[wUwXwV@wW@|@wY@wZ@az@w\w_w]@azw^az@w`@wa@az@wcwjwdwgwe@wf@az@wh@wi@az@wkwnwl@wm@�@wo@wp@az@wrwwswzwtwwwu@wv@j@wx@wy@az@w{w|az@w}@w~@az@w�w�w�w�w�@w�@az@w�@w�@az@w�w�w�@w�@|@w�@w�@az@w�zVw�yJw�x�w�xw�w�w�w�w�w�w�w�w�w�w�@w�@|@w�@w�@az@w�w�w�@w�@az@w�@w�@az@w�w�w�w�w�@w�@az@w�@w�@az@w�w�w�@w�@�@w�@w�@az@w�w�w�w�w�w�w�@w�@az@w�@w�@az@w�w�w�@w�@az@w�@w�@az@w�w�w�w�w�@w�@az@w�@w�@az@@w�w�@w�@az@w�w�w�w�w�w�w�w�w�@w�@az@w�@w�@az@w�w�w�@w�@az@w�@w�@az@w�w�w�w�w�@w�@az@w�@w�@az@w�w�w�@w�@az@w�@w�@az@w�w�w�w�w�w�w�@w�@|@w�@w�@az@w�w�w�@w�@az@w�@w�@az@xxxxx@x@az@x@x@az@xxx	@x
@��@x@x
@az@xxKxx/xx xxxxx@x@az@x@x@b�@xxx@x@az@x@x@az@x!x(x"x%x#@x$@az@x&@x'@az@x)x,x*@x+@az@x-@x.@az@x0x?x1x8x2x5x3@x4@az@x6@x7@az@x9x<x:@x;@az@x=@x>@az@x@xD@xAxB@xC@az@xExHxF@xG@az@xI@xJ@az@xLxhxMxYxNxR@xOxP@xQ@az@xSxVxT@xU@|@xW@xX@az@xZxax[x^x\@x]@|@x_@x`@az@xbxexc@xd@az@xf@xg@v�@xixxxjxqxkxnxl@xm@az@xo@xp@az@xrxuxs@xt@az@xv@xw@az@xyx�xzx}x{@x|@az@x~@x@az@x�x�x�@x�@�@x�@x�@az@x�yx�x�x�x�x�x�x�x�x�x�x�@|@x�@x�@az@x�x�x�@x�@az@x�@x�@az@x�x�x�x�x�@x�@az@x�@x�@az@x�x�x�@x�@az@x�@x�@az@x�x�x�x�x�x�x�@x�@|@x�@x�@az@x�x�x�@x�@az@x�@x�@az@x�x�x�x�x�@x�@az@x�@x�@az@x�x�x�@x�@az@x�@x�@az@x�x�x�x�x�x�x�x�x�@x�@az@x�@x�@az@x�x�x�@x�@az@x�@x�@az@x�x�x�x�x�@x�@az@x�@x�@az@x�x�x�@azx�az@x�@x�@az@x�x�x�x�@x�x�@x�@az@x�x�x�@x�@az@x�@x�@az@x�x�x�x�x�@x�@az@x�@x�@az@x�@x�@x�@az@yy$yyyy	yyy@|@y@y@az@y
yy@y@y
@az@y@y@y@az@yyyyy@y@y@az@y@y@az@yy y@y@y@az@y!@y"@y#@az@y%y7y&y.y'y+y(@y)@y*@az@y,@y-@az@y/y3y0@y1@y2@|@y4@y5@y6@az@y8yAy9y=y:@y;@�y<�@y>@y?@y@@az@yByFyC@yD@yE@az@yG@yH@yI@az@yKy�yLy�yMylyNy]yOyXyPyTyQ@yR@yS@az@yU@yV@yW@az@@yYyZ@y[@y\@az@y^ygy_ycy`@ya@yb@|@yd@ye@yf@|@@yhyi@yj@yk@az@ymy|ynywyoysyp@yq@yr@az@yt@yu@yv@az@@yxyy@yz@y{@az@y}y�y~y�y@y�@y�@az@y�@y�@y�@az@@y�y�@y�@y�@az@y�y�y�y�y�y�y�@y�@y�@y�@�@@y�y�@y�@y�@az@y�y�y�y�y�@y�@y�@az@y�@y�@y�@az@@y�y�@y�@y�@az@y�y�y�y�y�y�y�@y�@y�@|@y�@y�@y�@az@@y�y�@y�@y�@az@y�y�y�y�y�@y�@y�@az@y�@y�@y�@az@@y�y�@y�@y�@�@y�zy�y�y�y�y�y�y�y�y�@y�@y�@|@y�@y�@y�@az@@y�y�@y�@y�@az@y�y�y�y�y�@y�@az@y�@y�@|@@y�y�@y�@y�@|@y�y�y�y�y�y�y�@y�@az@y�@y�@y�@�@@y�y�@y�@y�@az@y�y�y�y�y�@y�@y�@az@y�@y�@y�@�@@y�z@z@z@az@zzzzzzzzz@z	@z
@az@z@z
@z@az@@zz@z@z@az@zzzzz@z@z@az@z@az@@zz@az@z z/z!z*z"z&z#@z$@z%@az@z'@z(@z)@az@@z+z,@z-@z.@az@z0z8z1z4z2@z3@|@z5@z6@z7@�@@z9z:@z;zDazz<azz=z>zAz?z@azv�v�azzBzCv�azv�azzEzQzFzIzGb�v�zHv�gCazzJazzKazzLzMazzNazzOazzPazt�azzRzSb�t�zTgCb�zUazgCzW{ZzXz�zYz�zZz�z[z}z\zez]zaz^@z_@z`@az@zb@zc@zd@az@@zfzg@zh@zi@zj@zkzvazzlazzmznzrzoazazzpzqazazw�azzsazztazzuazw�zwazzxazzyazzzazz{azz|azw�azz~z�zz�z�@z�@z�@az@z�@z�@z�@az@@z�z�@z�@z�@az@z�z�z�z�z�z�z�@z�@z�@az@z�@z�@z�@az@@z�z�@z�@z�@az@z�z�z�z�z�@z�@z�@az@z�@z�@z�@az@@z�z�@z�@z�@az@z�z�z�z�z�z�z�z�z�@z�@z�@az@z�@z�@�@@z�z�@z�@z�@�T@z�@z�z�z�@z�@z�@az@z�@z�@z�@�@z�z�z�z�z�z�z�@z�@z�@az@z�@z�@z�@�@@z�z�@z�@z�@az@z�z�z�z�z�@z�@z�@az@z�@z�@z�@az@@z�z�@z�@az@z�{z�z�z�z�z�z�@z�z�@z�@z�@az@@z�z�@z�@z�@�@z�z�z�z�z�@z�@z�@v�@z�@z�@z�@|@@z�z�@z�@az@{{{{{{{@{@{@az@az@@{{	@{
@{@az@{
{{{{@{@{@|@{@{@{@az@@{{@{@{@�c@{{B{{+{{&{{"{ @{!@az@{#@{$@{%@az@@{'{(@{)@{*@az@{,{={-{9{.@{/@{0@{1@@{2@{3@{4@{5@{6@{7@{8�@{:@{;@{<@az@@{>{?@{@@{A@az@{C{O{D{K{E{I{F@{G@{H@az@{J@az@@{L{M@{N@az@{P{U@{Q{R@{S@{T@az@@{V{W@{X@{Y@az@{[{�{\{�{]{y{^{j{_{e{`{d{a@{b@{c@�r@az@@{f{g@{h@{i@az@{k{t{l{p{m@{n@az{oaz@{q@{r@{s@|@@{u{v@{w@{x@az@{z{�{{{�@{|{}@{~@{@az@@{�{�@{�@{�@|@{�{�{�{�{�@{�@{�@az@{�@{�@{�@az@@{�{�@{�@{�@az@{�{�{�{�{�{�{�{�{�@{�@{�@az@{�@{�@{�@|@@{�{�@{�@{�@az@{�{�{�{�{�@{�@az@{�@{�@az@@{�{�@{�@{�@az@{�{�{�{�{�@{�@{�@{�@az@@{�{�@{�@{�@f@{�{�@{�{�@{�@{�@az@@{�{�@{�@{�@az@{�|{�{�{�{�{�{�{�{�{�@{�@{�@�@{�@{�@{�@az@@{�{�@az@{�{�{�{�{�@{�@{�@az@az@@{�{�@{�@{�@�T@{�{�{�{�{�{�{�@{�@{�@|@{�@{�@{�@az@@{�{�@{�@{�@az@{�{�{�{�{�@{�@{�@az@{�@{�@{�@az@@||@|@az@|||||||@|@|	@|
@az@@||
@|@|@az@||@||@|@|@|@@||@|@|@az@||'||"||!|@| @|@az@@|#|$@|%@|&@az@|(|1|)|-|*@|+@|,@az@|.@|/@|0@az@@|2|3@|4@|5@az@|7�S|8�|9}�|:}|;|�|<|x|=|P|>|Baz|?|@azaz|Aazv�|C|Dazw�|E|J|F|Gu��waz|H|Iazmaz|K|N|L|Mazu�azkX|Oazazu�|Q|k|R|[w�|S|T|Z|U|W|Vazazw�|X|Yw�w�t�azb�az|\|c|]|b|^|`|_gQazw�|aazazt�kXv�|d|g|eu�az|fjazj|h|i|jw�azjv�|l|o|maz|nazv�az|pb�|q|tkX|raz|sazw|u|vu�jkX|wazm|y|�|z|�|{|�az|||}|v�|~gCaz��az|�|�|�|�b�az|�azu�|�ubaz|�|�u�az|�w�|�azu�azaz|�|�|�|�|�v�az|�v�|�azt�az|�az|�|�az|�u�az|�|�b�azazv�|�|�az|�|�|�|�|�|�|�az|�azv�w�j|�|���|�v�az|�azw�az|�|�az|�|�v�azv�|�wqv�|�v�az|�w�|�|�|�|�az|�azv�azu�|�|�w�u�az�w|�|�|�|�|�|�|��wgC|�wkXaz|�|�|�|�azv�az|�|�|�azaz|�azv�az|�v�az|�|�|�|�|�az|�|�azm|�t�wqwaz|�|�|�v�azt�az|�az|�|�|�|�v�v�|�az|�azazv�|�|�|�azgQaz|�|�azjjaz|�}|�|�|�|�|�|�|�|�azw8v�v�az|�az|�azv�|�|�az|�v�azu�|�u�v�|�|�|�|�|�|�az|�azgC|�azaz|�u�az|�|�azv�v�az|�}|�|�|�azw|�azj|�w|�v�u�az}}wq}az}azv�t�w�}}}j}}
}	}
v�azaz}v�}v�az}}azjt�u�az}az}}}u�u��M}azw�}}k}}<}}&}}$}} }w�az}az}az}u�w�}!azaz}"az}#mazaz}%kXaz}'}.}(}*})azu�v�}+az},}-gCazazv�}/}3az}0}1azaz}2jw�}4};}5}8}6}7jazazb�b�}9}:az{�azb�u�}=}Z}>}O}?}G}@}D}A}Bazb�b�}Cb�az}Eazaz}FazgCaz}H}I}M}J}L}Kazazv�b�v�}Nazazw�}P}Waz}Q}RgQ}S}U}Tw�u�azaz}Vv�az}Xb�az}YwUaz}[}`}\}]b�gQv�}^az}_azv�}a}h}bw�az}c}d}fv�}ev�azaz}gmubw�}i}jazw�az}l}�}m}�}n}z}o}w}pt�}q}taz}r}sazu�az}uazaz}vazw}xm}ymazwaz}{}|az}}az}~w��}az}�}�}�az}�az}�az}�az}�}�v�azv�}�}�}�az}�az}�azv�}�v�}�v�az}�}�}�}�}�}�}�v�az}�azv�v�}�}�v�v�az}�v�}�v�}�v�azv�}�azv�az}�}�}�}�}�az�1t�azw�}�azw�}�}�}�w�}�w�azwj}�}�}�}�}�}�az}�az}���b�}�}�}�}�}�azaz}���az�waz}�}�az}�}�azazv�}�azv�az}�az}�}�}�}�}�}�azu�}�}�mu�maz}�w}�}��v�az�"}�}�jv�azu�}�}�v�az}�}�jb�}�}�v�}�}�u�azv�t�}�ub}�}�}�jt�t�az}�~�}�~k}�~(}�~}�}�}�}�}�}�az}�}�kXaz}�azv�}�}�v�az}�t�t�}�azw�}�}�}�}�}�w�}�azazj}�azw�az}�azu�}�w�v�}�~}�}�}�}�}���azw}�}�az}�wv�az}�azu�}�~}�}�az}�azj}�kXkXaz~~az�w~azazt�v�az~~~~~~~	~az~
az~azu��w~
~wmaz~~~w~~azwazgCw~azkX~~~azwUazt�gQ~~$~~az~azu�~~ azkX~!��~"~#u�azt�az~%azaz~&w~'azu�~)~Y~*~C~+~2~,~-m��~.~/v�azv�~0~1azazb�~3~<~4~7~5v�az~6azv�~8~:��~9��ubaz~;azu�~=~@az~>u�~?azu�~Aazaz~Bv�u�~D~H~Eaz~F~GgCazww~Ij~J~Taz~Kaz~Lu�~Mw~N~O~Sw~Pw~Qw~Rwazazw~U~Waz~Vazu�az~Xwaz~Z~`~[az~\~]u�m~^~_v�azu�v�~ab�~b~h~c~gaz~d~e~fazb�azw�u�v�~i~jw*azju�~l~�~m~�~n~y~o~pazj~q~u~raz~saz~twazt�az~vaz~w~xaz�0az~z~az~{az~|~}az~~azazwq~�~�~�~�~�az~�azazv�azu�~�~�azub~���~�v�azw�~�~�~�~�t�~�~�~�az�1az~�~�azgCazm~�~�~�azv�waz~�~�azj~�b�~�~�v�~�~�~�az~�~�~�u�~�~�~�~�~�u�~�u�gQ~�~�u�gQu�gQ~�~�~�~�u�gQu�gQ~�~�u�gQu�gQ~�u�~�u�~�~�~�~�u�~�~�gQgQu�u�gQ~�~�u�gQu�gQmazaz�w~�~�~�~�az~�~�~�u�azaz~�az~�~�~�w�azazu�~�~�~�azw�t�~�~�az~�azt�az~�azw�~�~�~�~�~�az~�~�v�~�v�~�azwjv�~�az~�~�kX~�~�azazu�az~�az~��v�~�~�u�azaz~�az~�~�az~�v�mv�~��~�~�az~�~�~�~�~�~�~�maz~�azaz~�azv�~�~�~���~���waz��~���~�azj~�~�~�~�~�~�ub~�wazaz~�w�azaz~�az~�kXazazv�u�v�azu�azazaz	b�
azu�{�
azv�wazazgCazazu�azr!azazw�azu�v�azv�az azv�az"0#'$azm%az&u�v�(,)kX*+u�azv�az-b�./u�azv�az152azaz34azazu�6<7:89az����mm;u�v�=K>J?azj@AjBGjCjDEazjFjazHjIjazjazw�LazMNazObPYQVRSazjazTjUjazWXazjazjZ][\azjazj^aaz_j`jazazjcjdgefazjazjhiazjazjknlmazjazjoazazpqazjazs|twazuvazv�azxw�yzgCazaz{��az}�az~�t��az�azv�u��u��azu���jw�w����azu�v��gCv�����������az��azb�gCb�v�az��azazub���azkXgCv���azj�v�w���az���az���az�gCaz��azu�azv���azt�����az�jazu���������az�mazazm�u�kXaz�azb���azwb��������u�mazaz�����w�azu�v��v�az���v�azm�az��v�azv�v�������azv�����mu�azkXaz�azj�gQ�u�azu���az���az�azv���v�t�u�t��az����t�azazub���azaz�b�j�az�azazu���W��
��b��,�����az��az�az���v�jazv����v�azub��az�jaz�azazm����	��u�azazj�
������
v�v�azubv�ub�����w��wazw�w�azazj��%����az��waz��az�b�w�azw�� ��!�$az�"az�#az�azv��&�+��'�(�)�v�u��*azu�v�gC�-�V�.�:�/�2�0�1jw�w�az�3azaz�4�5�8�6�7mazv�t��9t�azv��;�J�<�C�=�@�w�>�?u�v�az�Av��BazazgC�D�F�Eaz�azv��G�H�Iazv�azv��K�R�L�O���Maz�Nazu��Pazaz�Qv�az�S�T��azaz�UgQaz�W�^az�Xaz�Y�Zazv��[�\�]�wazazmu��_�`�au�gQ�wu��c���d��e�q�f�m�g�iaz�ht�az�j�kgQv��lazazv��naz�o�pazv�v�w�r�~�s�x�t�uju��vu�az�wv�u��y�{m�zw�azaz�|�}azazu�t�b�����az��ubm������������az�1��azazv�����az��az��az����v�azv���������v�ubub������az������azu�az����������������������v�azv�az����v�azv�az��������v�azv�az����v�azv�az��v���������v�azv�az����v�azv�az����������������v�azv�az����v�azv�az��������v�azv�az����v�azv�az��v���������v�azv�az����v�azv�az��ub����azkXt�j��������������wU����jwb���az��v�wwU��az��w�����1u�azwU����������gCaz��az��azazu�����az����azmv�v���azw�����������u�����az��az��azu�������azwu���u�t�az�"��������az����azv�v�azgQv�u����������u�����gCazw������t�azt�v�az�v�azj��	azv�az�������
�i��A��3�az��2��'�azaz��az�az������azgCazgC��azgCazgC��"� �!azgCazgC�#�$azgCaz�%gC�&gCaz�(v�az�)�*u�u��+�,u��-�/u��.u�w��0�1u�w�u�w�azv�w�4�5�;�6�9�7�8v�w�u�v�gQ�:azu��<�>gC�=u�az�?�@��azazu��B�Faz�C�D�Eazjb�t��Gu��H�L�I�Kaz�Jmu�azu�u��M�N�h�Ou��Pu��Q�^�R�Y�S�U�TgCu�gCgC�VgC�WgC�XgCu��ZgCu��[�\gC�]gCu�gC�_u��`�cgC�agC�bgCu��du��e�fu�gC�gu�gCu��Maz�j�{�k�nu��laz�mazkX�o�u�p�tu��q�r�su�azazkXt�az�v�wv�az�x�yazgQaz�zt�j�|��}b��~b�waz������azkXazu���azu�����������������������azu���v�azj����azu�v�������azaz��jaz����az��azw�����w�jjv�����az����w����azv�v�t�����v�azkXazaz��u�az����������az��������������az��az��az����������������azmmaz����azmmaz��������azmmaz����azmmaz������������azmmaz����azmmaz��������azmmaz��azazmw�t�v�azazv�����������b�b�azb�az������u�az��azw���az��mv�v���������������t�jt�az����azv�azu�����������az������azv�v�azazgQ��gC����gQ��gQaz��azazb�����������wm�����������az��gC�"��v�v���azu��������u�az��mu�azv�����mazmaz�azv�az�	�az�
azm��
azgCv�az��gC���j��az�azv�u��"az�az�az��az�u��mazv�v���<��6� �-�!�+�"�&az�#�$�%u�azazt��'�)�(azu�az�*azw�azb��,v�az�.�4�/�3�0az�1�2azv�v�u�azv�az�5mazaz�7az�8�9�;v��:v�azb�az�=�K�>�E�?�D�@�C�A�BubazazgCmazazv��F�H�Gazv����I�Jazwazw�L�V�M�Ou��Nazu��P�Taz�Q�R�Sazv�azu�az�UjazgCv��X���Y���Z���[�y�\�o�]�g�^���_�d�`�b�aazazv��cazv�azaz�e�fjv�az���h�i�l���jaz�kt�azm�mkX�nt�m�pm�q�w�r�t�sazazv�az�u�vazazb�az�xw�az�z���{jaz�|az�}�~���v�azv�u���u�v�������w�����jw���b�w�b�w���u�az��������������u�����azgC��azaz��az������jaz����w���u���v�az��v�u�azw���������������az��azgQ����t�azazm��������azv�b�azazu���azt�az����������������������v�v�azv�kXaz��azj�1u�����u�azv���kXv���kX������azw�w������az����gCazwaz����az��t�az��azv�az����������������az��kXv���gQv�����v�v���maz��������gQgC������u���azaz�u�����v�ubaz��az��az����mazazu���������az��az��u���v���u�azb���b�az����az����azb�����azazj����������az��azazv�az��azv�����azu���az��azazu����4���	���v�az�azv��az�����az�azv�azj�
�/�����
v��jmv�w��azjaz��az�b��maz�azaz�az���&az���az�az�az�M� �#�!�"az�Maz�M�$�%az�Maz�M�'az�(az�)�,�*�+az�Maz�M�-�.az�Maz�Mu��0u��1�2azv��3azv��5���6���7�N�8�L�9waz�:�;az�<az�=az�>�E�?�B�@�Aazb�azb��C�Dazb�azb��F�I�G�Hazb�azb��J�Kazb�azb��Maz{�az�O�P��j�Q�S�Razazw��T�Uv�azaz�V�W���X�o�Y�d�Z�a�[�^az�\�]jazjaz�_j�`jaz�b�cazjazj�e�l�f�iaz�gj�hazjaz�j�kjazj�m�nazjazj�p�y�q�v�r�sazjaz�t�ujazj�w�xazjazj�z��{�~az�|j�}jazazj��azazj��az��az��az��azazj����az������az��v�az��azwazaz����u���u�u�az��az����gC��az��u�az��azmaz����������������maz������������v���v���v�azaz����azazm����u���v�azu�v�az����azgQaz��������az��azw��������az��az��azv�azu�����az����azkXaz�waz������������w����azaz��azt�az��azw�������u�����v���az��azv�����az��v�az��v�u�v�������������v�������az��maz��v�azv���������u�az��az��azgQaz��az��u�����azmu�az����������az����v���azv�u�azu�azaz�1����v�w������az����w��wazv�������az��az��az��u�azaz��w�az���!�������gQaz�����azgQt�az�azaz�u�az�	�
�
t���gQt�wazt�az�����azwv�azw���azw�����az��v�azv�v����azjjj�� azwazj�"�=�#�8�$�,u��%�&az�'�*�(�)mv�waz�+azmaz�-�6�.�1�/az�0azazv��2�4az�3u�az�5u�azu��7azmaz�9�:v�ww�;�<gCu�az�>�B�?azaz�@az�Au�az�C�I�D�Faz�Eazj�G�Hazmv�az�J�L�KjmkX�M�R�N�Paz�Oazu��Qazu�azv�az�T�V�U�8�V���W��X�w�Y�h�Zaz�[azaz�\�]azaz�^az�_az�`�aaz�bazaz�c�daz�eaz�fazaz�gazwaz�iaz�j�kazaz�laz�maz�n�oaz�paz�qaz�razaz�saz�t�uazaz�vwazaz�x�yaz�zaz�{az�|az�}azaz�~waz����������az������az��H:H:��H:����H:H:����H:��H:��H:��H:��H:��H:s�H:��azaz����az��azw�azaz����azaz��������az��azv�az��azaz��azv�������azaz|����������az��az��azaz��v�azaz��az��az��az��waz��azaz��|az����az����az����������������������|�����������������������������������������|�������������������������������|�������������������������������������������������������|�������������|�����2������������azaz��������azazv���azv�az�������������azaz����azaz�������azazv�az�v�az�az��az�azv�azgC��
�	az�
azaz��azazv��azaz����az�azaz�az��azaz���azwaz��$�az�� �azaz���v�azgCaz�!azaz�"az�#az�1�%�*az�&�'azaz�(az�)v�az�+az�,�/�-azaz�.b�azaz�0az�1azgC�3az�4az�5az�6azaz�7azgQ�9���:�y�;|az�<�=�Y�>�K�?�H�@�E�A�C@&�B@&��D����F���G����I��J�*@&�L�U�M�P�N@&�O@&�@&�Q�S@&�R�@&@&�T@&�@&�V�W@&@&�X@&��Z�l�[�d�\�a�]�_�^���7�`@&�@&�b@&�c@&�@&�e�h�f@&�g@&@&��i�k�j@&@&�@&�@&�m�n�r@&�o�p�q�E�T�b�q�s�v�t�u�����w�x������az�z�{���|��az�}�~az�����azaz��azt���������azmazb���azw�v���az|azaz��az����azazgQ�����������������az��azaz��������������gC��v�az����gCwgC������������gCb�azaz��b�az������������azb�wazazt�����az����az��az��azaz��az��az��az��az��w�azaz��azj���������������������|���������������������|�������|���������������������������������������������������������������|L����|���������������|��|��|����|��|�|���������������������������az����azaz��az��azw�����az��az��az��v�az��az��az��azv�az��������azv��azazb�az��az�azazv��azaz�	�
azv�az�az�
az�azaz�azv���-az���"��az�az��azaz�v�az��az��az�azv�azaz�� az�!azazj�#�(�$az�%az�&az�'azazw�)azaz�*az�+az�,v�az�.�0�/azaz|�1�M�2�G�3�=�4�:�5�8�6�7L����L�9����LL�;�<L��L�>�C�?�B�@�AL����LL��L�D�E�FL��L��az�H�Iaz�Jazaz�Kaz�Lv�azaz�N�O�Raz�Paz�Qb�azaz�S�Tazaz�Uazb��W���X�y�Yazaz�Z�[�jaz�\�]az�^az�_az�`az�aazaz�baz�caz�daz�e�fazaz�gaz�h�iaz@azaz�k�lazaz�m�naz�oaz�pazaz�qaz�raz�s�tazaz�u�vazaz�w�xazaz@az�z�{���|az�}az�~��az�����az��jaz��azazub����az��az��azv���������wv�azt���azwazaz����������������������az��kXaz����azjazj������wt�azaz��gCaz����jazgQaz��������az|�����������������az����gQaz��azv�az��������|az��azaz��az��kXaz����az��az��az��waz����jgQaz����azaz|���T���#����|������|������������������v�az��azaz����az��az��azaz��az����azazw��azv�ju�����azazt�������������u�azaz��azv�����azgQazv�az��az����az��az��azwaz����������az����v���������wv�v�az��v�v�azaz������az��az��az��v�����v�v���v���v�����v���v���v���
az��azaz�az�az�az�az�az��	azazw�azazu�az�
az|�����az�az������azv�Nv��azv�azaz��v�az|��!|��azaz� azgC�"azazN�$�<�%az�&�-az�'�(az�)az�*azaz�+�,azazv��.az�/�4az�0az�1az�2�3azv�azaz�5az�6az�7az�8�9azaz�:az�;azv��=�Q�>�Aaz�?�@azwazaz�B�C�I�D�G�Eaz�Fazazj�Hazw�az�J�N�K�M�Lazb�azazv��Oj�Pazt�az�Raz�S|w*az�U�u�Vaz�W�p�X�Zaz�Y|az�[�i�\az�]�b�^�_azc��`�ac�azazc��c�f�d�eb�azazc��g�hc�azazc��jaz�k��l�n�m||�]�o|�|�q�saz�r@azaz�t|az�vaz�waz�x��az�yaz�zaz�{�|az�}azaz�~az�az��azv�����az����azaz��az��az��az����az��azaz�K����az������������az����az��������az��azaz������t�azt�az��t�azt���t�azt�azv�az��azgC��az������azazt�az����az��az��v�������v�azv�azv����u���X������P�������/������azaz������������az��az��azaz����az��az��az��azaz��az����az��azaz��az��az��az@��az����az����azaz����az��azaz��az��az��az��az����azaz����azaz@��azaz����azaz����az��azaz����az��az��azaz��az��az��az@��azaz����azaz����azaz��az��az��az����az��azaz����azaz����az��az@az������
��azaz��az��az����az��az��azaz��azaz��az�az�azaz�az�az��	az@azaz�az�az�
�azaz��az�azaz�az�az�az��az�az�azaz�az�az�@az�az�az�az� az�!azaz�"az�#�$azaz�%az�&az�'�(azaz�)�*az�+az�,azaz�-�.azwUaz�0�d�1�8az�2|�3�4azaz�5�6az�7azaz|�9az�:�Z�;�Vaz�<�=az�>�Jd�?�@�Dd�Ad�Bd�Cb�d�Edd�F�G�Hdb��Iddb��Kd�L�Qd�Md�Nd�Od�Pb�dd�R�Sd�Tdd�Udb��W�az�Xaz�Yaz@&�[az�\az��]�^K�K��_K��`�aK�ӹ�b�cK�ӹK��e���f���g�t�h�q|�i�j�laz�kaz|�m���n��o��p��az�raz�saz|�u�z�v�x�w|az|�y�az|�{���|�T�}az�~az���������v�azv���v�azv�����az����v�azv�v���v�azaz��az|��������az��az|����|����|az|az��@&|��������|��|azaz�����az���|az���az��azaz|��������|����|������az|��������az|azaz����azaz��az����azaz��az����azaz����az��az��az��az@azaz��az����azaz��az||��������azaz������az|az|��az��azaz����az��azaz��������az��������������az��az����azaz��az����az��az��azaz��az��az����azaz����azaz@az|az����az��azaz����az��az��azaz����azaz����azaz����az��az��az@az��az��az|az�����az����az����azaz|��az��|az��az���azaz�az�gQaz|�az��az�azaz��	az�
az�az�azaz�
az�az�az�az��az�azaz�@az��;��)az�|�az��az�azaz��az�azaz� �!az�"azaz�#az�$�%az�&az�'az�(azaz@az�*�+az�,azaz�-�.az�/azaz�0az�1az�2�3az�4az�5az�6azaz�7�8azaz�9az�:az@�<�>az�=|azaz�?�@azaz�Aaz�Baz�Caz�Daz�Eaz�F�Gaz�Hazaz�Iaz�J�Kazaz�L�Mazaz�Naz�Oaz@�Q���R���S���T�p�U�m�V�\az�Waz�Xaz�Y�Z�[|az|az�]az�^az�_az�`az�aazaz�b�cazaz�daz�eaz�faz�gaz�haz�iaz�j�kazaz�laz@�n�oNc�d{
�q�~�r�xaz�s�t�v�u|az|az�w|��y�{|�z|��|��}�|az�����|az��az��az|������az|������az|az����az����az��az�B��azgCazaz��|az��������������az��azaz����az��azaz��azgQ��az|az����az��az����az��az��az��az��az��azazv�|az������az������az��������������!������1�@������O�O�_��az����|azaz��|az��az����az|��|��|��azaz�����az����azaz��az��az��az�����az��az����az��azaz����az��azaz����az��az��az��azaz����az��az��az��azaz��@azaz����az��azaz����azaz��az��az��az��az����azaz��az����azaz����azaz��az��@az���H���<az�����|����||��|��|��|��|��|����||��|��|��||��|�||�|@���azaz�	�
|�azaz|�
�;�az���Taz�������az��azv�azw�azazv�az�az�azv���,��%��"� �!v�gCkXv��#�$gCw�v�ub�&�)�'�(wv�v�b��*�+kXwkXgC�-�4�.�1�/�0b��v�gQ�2�3v���w���5�8�6�7b��MwUkX�9�:w*�b�w|az�=�Eaz�>�?�C|�@�Aazaz�B|azaz�D|azaz�Faz�G|az�I���J�o�K�c�L�O�M�Naz|az||�P�Qaz�Raz�Saz�T���U�V��W��X���Y�Z��[���\�]�`��^��_����a��b����az�d�e�i�f�h�gazL�azaz|�jaz�k�m�l�T|az|�n|az�p���q���_�raz�s�taz�u�}�vaz�wAe�xAe�yAeAe�zB��{�|AeAeB�az�~�az��az��az��azaz����azaz����az��azaz����az@azaz����|������|������azaz������azwaz|azH:az|����az����az��az��azaz����az��az��az��az��azaz����azaz��az��az����az@azaz��������az��az|az��az��������������������mt�t�u�����v�mu�w��������v�mm�w��u�u�v����������������1u�v���u�mw��az��azmt�����������������jw�w�j����j��jw���az��azjw�����az������azv�azwc��az��az�az����az��������������|��|��az|�T|az��az��az��|az��az��az|��|azaz����az��azaz��az��az����az��az��azaz����az��az��azaz��az��az��az��az��@az�M��-��M�M��M�M�M�	M�
M�MM�M�
�MM��M�M�M�MM�M�M��M�oMM�M��MM��MM�M�M� M�!M�"�#M�$M�%M�&M�'MM�(M�)M�*M�+�,MMM��.�CM�/M�0�1M�2M�3MM�4�5MM�6M�7M�8�9MM�:�;M�<M�=M�>MM�?M�@�AMM�BMg��DMM�E�FMM�GM�H�IMM�JM�K�LMM�M�NMM�OM�P�QMM�R�SMM�T�UMM�VM�W�JMaz�Y�Z�.�[���\���]A�^A�_E�`H��aE��b�j�c�i�d�h�e@&�f�g@&EzF�H�@&EAe��k�y�l�t�m�nAEE�oH �pH:�q�rH:�sH:s�H:�u�wA�vELE�x�'A�z��{�~�|�}@�EAAE��������azE��E�����w����az��az��az��azaz��az����azwazt�u���EH�E������A��AAe����E��~������@&��@&@@&����EAeA��E��������EHG��H ��A���������������HGEAe�����H:A��GtF�����F�F�GtAe@&H ����Ba����F���������AeAeA@&������@&��'@&��A��EAe���A������@&��H�H���H���H�����H�H���H�����H�H���H�����H�H�����H�H���H���H�����H�H�����H�@H����?�������������E����������@&@&��@&���F�������@&��@&����@&|�E�'E���AeH ����@&��@&����A@AAeA�����E���E���H ������������Ae@@&E����H:�������H:��E@&��@&��Ba@&���azmazE�A����F���H �H H �H �	H �
H ��H H �
H �H �H H-�EGt�A��@&��Ae�AeA@&HG��$HG������EAHG���!@&� F�Ae�"�#|���@&A�%�,�&HG@&�'�(�*�)Ez@&H:@&�+@&���-�:�.�2�/��0�~Ae�1|����3E��4�6Ae�5E@&�7AeAe�8�9Ae��Ae�;�<@&H:�=�>H:F�F�Ae�@�p�A�X�B�T�C�N�DE�A�E�F�I�GA��HAe��J�L�K@&@AeA�ME@&E��OA�P@&�Q@&�RAe�S@&E�U�W@&�V��F�AE��Y�f�ZE��[E��\E��]�_@&�^E@&�`�d�a�c�bAeF�G�EAE�e@|��gE��hE��iE��j�k@&H��lE�mEE�nE�oE��q���r���s�u�t@&E�@&�v@&@&�w�x�|�y�zAeA��{�@&�}���~���E��Ez��������������������������M�M���AeA������E�����������������@&@&H:@&��@&����EH:�@&��@&Ae������E���������@&��AeBa����������H:��H:���,H:��H:�9������H:�����FH:�FH:�����FH:�F�9H:�S�������������9����H:�9H:�9����@&�6E���������@����s��H:H:@&����EdE����!�����E����������������F�����F���F���F���F���F�F�����F�F���F���F�Gt��������G�GtGti@����GtGGF���������������������������������������������Gt�������������������������������������������Gt������Gt���������F���F�i@F���F�F�����F���F���F���F���F�F���F��F���;F���F������F��F��F��	F��
F��F��F��
F�F��F����F�F��GtF��Ae������E�����E�E��F���Ez�Ae�� �bF�E@&�"�*�#�$E�@&�%H:�&�)@&�'Ae�(HG@@&H:@&�+@&�,Ae�-Ae@&�/�L�0�J�1�C�2@&�3@&A�4Ba�5�6�;�7Ae�8Ez�9@&��:@&�Ba�<�=�@@&�>E�?AeA@&�A@&�B�az�DA�EA�F�GABaEz�H�I�H @&E��KE�AA�M�N�P�OE�A@&H �QE�R�S�U���TAe@&Ba�V�WE�X�g�Y�^�ZF�F��[�\F�F��]F��.�_�cF��`F��a�bF�F��.�dF��eF�F��fF��.�hE��iE�E��j�kE�E��lE��mE��nE��o�pE��qE��rE�E��sE��t�<E�az�vaz�w�x�:�yM�z��{�!�|��}���~�c�az����aziM����������j�������N��c�c����Oc�b�b���������MaNd|�NL������`�����cWL�d��Q�����Q�Q�N��Md{M����Ll������c�������������������������az�?kXb�b���b�az��������b�waz������mazazkX������������������az��az��az��azaz��az����azazw�az��v�az���b�az�M��������w*�-b�azgQ��w�"����������������azw*ubb�����azw��w�Mw��������kXazazkX����wv�kXv�������b�����azwgQ�"����az��az�1��azv�az������`�c�Mb���b���b���b�����b�b���b���b�����b�b�����b�b���b�b���������������p�NM����c�c�i��^��iMiM��b���iMg4�������iM`��dh�|��|��|��mn��b��xvL���8�	�
b�w���2�cW�
b���0���b���b��b�ku�b�b��l~�~���!�~�~~�~�~��~~�~� ~�|~�"~�#�$�*�%~�&~�'~~�(~�)�|~~�+~�,�-~~�.�/~�|~M�1`�xv�3c��4|�cW�5�6�7`�L���M�9���:�H�;d{�<�?�=d�>|�g4`��@M�A�Fg_�B�C��D�Ed`�c�b�M��GN��I�~�J�N�Kb��L�MMM�b�i��O�r�P�d�Q�V�R�T�S����U�����W�Y�Xi���i��Z�c�[i��\�����]�^���_���`�����a�b���������e�l�f�i�g�h�i��
��j�k�*�9���I�m�o�n�9��W�p�qi���f�v�s�w�ti�i��ui��vi���x�{�yi�i��zi����|i�i��}i�������������b�`�b�����M��M��M��MM����M��M��M��MMg�����K�db���d�������=g&������������ak��akak��`�ak��ak����ak����ak���������������������`������akh4�akak��ak����`���`�ak`��������������������L�����l����l��i�N������l��llg4������������������������������������������LgCku����`�ddM��������������lN{
��tOg�Ml��Nd����������g_Nl��lc�llL������iM������L���Mc�M��������xv�q���iM��lN��l��M�(��������`�iM������t���w�l����`���`�li��N��N`���������lLt�����lM��c�m������
l�b��b���b��b�b��b��b���b��	b�b��6��
�Nc�`�m��Elt��M���lc�M�T�n����M���Lxv�L�db����b�d`��� `�M|�p��"�K�#�5d�$d�%d�&�'dd�(d�)�*d�+dd�,�-dd�.�/d�0dd�1�2d�3d�4dd@N�6�7b��8ty�9�@�:�>�;�=M�<b�Mg_d�?�bb�M�A�D�B�CdMNM��E�Gc��FM�;�Hd]t��I�Jt��qt��L���M`��N���O�l�P�W�Q�T�R�SMcWq~b��U�VMLNl��X�i�Y�a�ZM��[M�M��\�]M�M��^M��_M��`�{��bЛ�c�f�d�eL�d{Ԧc��g�hb�dMb��j�kdMg_L�m�t�n�q�o�pnW`�dL�r�sNdj�q~�u�x�v�wm�iMj�M�y�~�ziM�{M�|�}M��Mq�L����������L���g_��g_��������������g_��g_��g_�����������p����g_������g_��g_��g_g_�������g_��g_������p���g_����g_����g_g_�����g_���g_g_��g_�Nb�����b�`�c�b�����������������M����cWty����cWaNb�����`�ddM��������M�K�i�����iM�iM����NiMazcW������������iMb�p�d����Mc�LM��������azb�MnW���������MiMMb�c�������������������b���b���b���b���b�b���b���b�b�Mb�����xv����j���j���j���j�j���j�����j�j�����j�j�����j�j����j�b�b���b������Id`�L�xv����������`�����cWN`���d{����b�xvaN��L�N����g_����ЌM�c���xvb���dku���L����������\�����b��	�
�
b�iM���8iM�8d{��b���b�b�d{��B��9��0��+��)�� �b��b�b���b��b��b�b��b��b�b��!b�b��"b��#�$b��%b��&b�b��'b��(b�b��*b�b�b��,�.�-b�b�b��/b�b�b��1�5b��2�3�4b�b�b�b��6�7b�b��8b�b�b��:�@�;b��<�=b�b��>�?b�b�b�b�b��Ab�b��C�S�D�M�E�I�Fc��G�H�^azgCaz�JԦ�K�Lb���H:�N�Rb��O�P�Q��i@�Z�R�%�T�W�U�Vg&�4gncW�X�Yc�L�Zb�b��[b�b��]�q�^�k�_�ab��`akc��b�j�cb��d�g�e�fb��bg�iM�h�iL�az�B�Pd{b��l�nd{�mc�d{�o�pb�d{d{b��r�y�s�v�t�ud{c�c�b��w�xb�c�c�b��z�}�{�|b�xvc�d{�~�b�c�b�����������lim�M�F�����]�l�{N������������c���b�d{����d{m�b�d{��b�b���d{������������d{c������dd{}�x�������d{d{��d{��������d{��d{��d{d{��d{��}�d{d{����d{��d{��d{d{��d{}�}���d{�d{������d{����������d{������d{}��d{d{��|����L�������d{c���d{ku������L�L�d{d{��d{�b�d{����������������������`���b�N����NQ�NcWb������bb���`�li��������������h�xg����������������`�L`�b�����c�L�M�b�nW�,q~������������iM��������p�Ld��xvb�b�����d����hM�lM�����M��MM��M��M��M����MM����M��MM��M��M����MM��M����M�M@M�c��iM�iM�iM��)�����	��
���iM���
iM��������iM��,�iM����;�,iM���;iM�KiM��"���Z��Z��ZiM�i� �!�xiM�x�#�(�$�&�%��xiM��'iM����*iM�+�3�,�0�-�/�.��iM��%�%�1�%�2�%iM�4�7�5�����6��iM���8�9iM��iM�;�[�<�X�=��>��?���@�j�A�P�B�M�C�Kc��D�E�G�Fb���b�b��Hb��I�Jb�hb�d{�Ld{}��N�Ob�d{b�d{�Q�g�R�`�Sb�b��T�Ub�b��Vb��W�Xb��Y�����Z�[���\���]���^���_������d{�ab��bnW�c�d�edb��fb�b�`��h�ib�d{b�d{�k�{�l�ob��mb��nc�b��p�sb��q�riMj�xv�t�w�u�vb�� c���x�yb��zv�gCv��|���}���~�����`���g&l����d{��}�d{��d{d{}���c�d{��l����l��d{d{��b���m�b�����������b�d{��d{b�������c�l�L��b���aNb�b���j���`�b�����������������������xvM��cWp�����������az��b�b�����b���b���b���b�b�����b���b�b�p�`�H:����`�az��d� M���b���kuc�hb�����b���b�lN������������������xv��c���c���c���c�c�����c�c�����c�c�����c��/c�c�l��������b���b�b���b�b���b�b�b�b�����d{������d{�d{�������b�d{`�d{b������b���gQlb�������������b���b�c�d{����d{j�d{b�����b�����b�Nd{xv����������b���c���b���������yl��b�b�����d{��c���d{b���b�c����liNc���T����d{c�j*�,��S�	N�
�&�����
������������q��������q�����q��������q�q���)�������������q���� �!���"���#�>�$�%��xvxvq��'�;�(�3�)�/�*�.�+�-�,�������Mq������0�\�>�1�2q���q��4xv�>�5�6�9�7�8q�����q����:���>�<�L�=�C�>�?���>�@�B�A�������q��D�E�>��F�I�G�H����q��>�J�K�>q�xv�����M�N�Q�>�O�P����q��Rq����kdN�U`��V�Wt�e�`�c��Y���Z�k�[�j�\b�N�]�^N�_N�`N�aNN�bN�c�dN�eN�fNN�g�hNN�iQ�NcWt��l���m�{`��n�oxv�p�tku�q�r�sML�nWNc��u�v�w�O`�M�x�yak�zm�b��z�|���}���~���������i�L�m�M�����b�`���iMiM��iM��iM�8j���������dy7��L��L��b�o�����d{��������b�d�����d�kfd�xvb�d������������ku������`���Q�����NW�Q�NcW���b����������b�NaziMq~cW��c���b�����d����d��d����������{�{�{���oYoY������oY����oY����{�oY����������������b�d{d]p���c�L���c�L�b�����M��L�liL�����������c�����c�����c�������������L�liMxv����N`�Lt�b�������Nb�`�db�c���`�������������dNiM��������b�b���b���b���x�y����b�����b�������b�b�d]��M������M������b�`�nWaN������`���d��d��d����d��d��d��dd����d��ddn���9����	c�����`�������ն�Ib��
�b��c�nW�
�b�t�~�d��b��N��xv��ӹc����(������Mq�q��;M�q�MM��o�� q��!�o�"�o�o�#�o�$�%�o�o�&�'�oM�o�)�+q��*Mq��,�6M�-�.M�/MM�0�1M�2M�3M�4MM�5M�;�7�8q�Mq�M�:N���;�<�Y�=�V�>�G�?�E�@�Dm��A�B�C����i#d�Fo�Lq��H�K�I�Jo�b�d�C�L�Mm�d�Nd�Onu�Pnu�Qnu�Rnu�Snu�Tnu�Unub�nu�W�Xdp�daz�Zdb�`��\d�]��^���_`��``��a���b�sj*�c�d�qxv�exv�fxv�gxv�hxv�ixv�jxv�kxv�l�mxv�nxv�oxvxv�p��xv�rNMb�b��t�u�wM��vc�c��x���y�{M��z�M��|�~x��}�,d$����9p��,d$���IM��M���oM������������M`�������g_�G�VL�`�����w�d{����c�NiMb���������M`�����g4Mg_����������d{`�iMc�����lakd{}���������liM�cW��i���i���i��e����LaN�tM�������������c���i�������b���Nb�b���Lb���N��NN����N��N��NN��N����N��N��N��N��NN����NQ�Nd{�H������M������������������x���x�����b���b�p�x�����x�x������,��������������������d2b�����y����b�����������nW��M�����������M�M���M����M�M����M���M���M�M���M��L�d]b�d������b���������NQ���NOTN������N��NNW�N��Oc��Q�Nc�����b�������NazN��L��MN��NcWazcW�	`�b��
c�L����
����1��M���M���M�����M��M�{�M�M��M���0M��M��M�M���M��M�� �(M��!�"�#lid�$d�%c��&c��'c���c��)|��*�/�+|��,|����-�.��az��d�0M�d�2��3�k�4c��5c��6�\L��7�8�M�9�?q~�:�;�>q~�<q~�=q~��q~���@�E�Aq~q~�B�Cq~q~�D��q~�F�K�Gq~�Hq~���I�Jq~��q~�Lq~q~��N�Zq~�O�Pq~�Qq~q~�R�Sq~�T�W�Uq~q~�V�q~�Xq~q~�Y�q~��[�q~�]M�^�a�_�`Nc�lN�bQ��cP}�d��e��f���g��h��i��j�N�l�{�m�u�n�rM�o�p� �qb�b�{��sc�L�tb�d�v`�d�w�x�z�y�lb�`��lkub��|�}�~LMMM�b�����M�ak������MnWdLd����`��H������������������������db��.�=b���������b�c�c��L��i#c��������d��iMdc���������c�`�iML��suy�m���L��iM��d��b�do�������������db���diMb�d������d��db�b�d������b�diMdiM�����`�����������e�����M����L�L�����L���L���L���L���L�L������M�cWM����������azؒg_i@����dNL�iMؒ��������������M�`�dd]`�b���b����,����`�M�i��,��������t���L���L������������[�������L���L����L���L���L��L���L���L�����L�����������L���L�L�ߜ��L���L���L�L����L�L��j��������p�`�iMg4�����HL�i����������x������Ae��d{b�db���[��Z�	�A�
�.��*�� �
����dm���dd��dd��d�dd�d����m���C���i#�i#�Zd�i@��!�$d��"d��#d�kfN�%�&b��'d�(�)�N��q��Q�+d�d�,m��-m���d�/�0d�1�<�2dd�3�4dd�5�6d�7d�8dd�9�:dd�;d��=�?d��>kfd�d��@�kf�B�T�Cb��D�Eld�Fb��G�J�H�Ic�Lc�dK��Kd�L�M`��N`��O`��P`��Q`��R`��S`��`�M�UM�V�WM�XMM�YMq�ML�\���]�o�^�j�_�d�`�cxv�axv�b��xvc�cW�e�fb��b�gm;m;�hm;�i��m;�kL�lL�md���n�e�M�p�q�t�rML��sg����u���v�}�w�z�x�yb���q�b��{�|��h��b��~�����Lm���d{����d{���ՙ�������������b�erX�����*eՙe���������9e�HrX�����VrXb�lxc�����������N��K�����������yb�b�E�e��L�L�����s����`�c�q~��@�������!���[��az�������=����az������az��az����azaz��az����az��azaz����az��azaz����azaz��az����azaz����az��azaz���az��az��az��az��az��azaz��az��az��az��az��az����az��az��azaz����azaz��t�az���d����az��az��az��az����azaz����azaz��az��az����azaz����az��az��az��azaz����azazt���azaz����az������az�������N�������az����az��az������azaz��azgQ����gQaz��gQgQaz���
����������azgQ�azgQaz�azgQgQaz�gQaz��gQ�	gQgQaz��gQ��
�az�azgQgQazgQ��az��az�gQazgQaz��$�gQ�gQgQ��gQ�gQgQ�gQ���"� �!b�w*kXgC�#gCwkX�%�9�&�,�'gQ�(�+�)�*azgQgQazazgQ�-�0az�.az�/azgQ�1�4�2�3azgQazgQ�5�7az�6azgQ�8gQgQaz�:�G�;�>gQ�<az�=azgQ�?�Caz�@�A�BazgQgQaz�D�F�EazgQazgQazaz�H�I�JgQazaz�K�L�MazgQazgQ�O�{�P�g�Q�X�Raz�Saz�Tazaz�U�V�WazgCgCaz�Y�c�Z�^�[gCaz�\�]gCgCazgC�_�`�agCazgC�bazgCgC�daz�eaz�fgCazaz�h�i�m�jaz�kaz�lazgCaz�n�v�o�raz�pgC�qazgC�s�tazgCgC�ugCaz�waz�x�zaz�yazgCgCaz�|���}az�~��az�������az����azgCgCaz����az��azgC����gCazazgC��azazgC����az��gC��az��������azazgC����gCazazgC������gC��az����azgCaz��gCaz��az����gCazgCaz��az������������az����azaz��azgQaz��az����az��gQgQaz��������������az����gQazaz��azgQ��azaz��gQaz��azazgQ��azaz����az��azgQaz������az��az��az��gQ����gQazazgQaz��az����azgQaz��az���������az��az������u���az��������az��azu�u�azaz��u�az��������������u�azu���u�u�az����u���u�az������azazu�u�az��az������u�u�azu�az��az���������w��az��������az��azw��azwazaz��waz�������������wazwwazaz�azw�azwaz��az��	azaz�
azwaz��
azazw�azaz������azw�wazazw�az�w�azazw��E��3�az��)az�� w�!�&�"�%�#�$wazazwazw�'az�(wwazaz�*�+�0w�,�-�/�.wazwazw�1azaz�2waz�4az�5�A�6�:�7azaz�8�9azv�az�;az�<az�=�?�>v�v�az�@azv�az�Baz�Cazaz�Dv�az�Faz�Gaz�H�Vaz�I�J�N�Kaz�Lm�Mmmaz�O�Q�Pazmaz�R�T�Sazazm�Umazmaz�Wm�X�Y�^�Z�\az�[azmm�]maz�_azaz�`�aazaz�baz�cmazaz�e�f��az�g�h��i���j�yaz�kaz�laz�m�naz�o�r�paz�qazgCazaz�s�taz�u�waz�vgCaz�xb�azgC�zaz�{az�|az�}azgQ�~az���az������azazgQ��azazgQ��������az��az��az����az��azgQaz��az��������az��azb���azb�azaz������azgCgCaz����az��kX����az����az������b�����b���azb�az����azb�b���b���b�azaz����az��������b�azb���azb���azb�az����������az��azaz������az������az��gCazazgC����az��az��azgC��az��gCgCaz��������������azaz����azazgC����������az��gCgCaz����gC��gCaz��azgCaz������������gCazgCazgC��gCaz��gC��gCgCazgC����azgC��������gCgCazgCaz��az��az��az��azaz��azgC��az������az������gQ����az����azazgQ��gQ��azgQaz��������gQazgQazazgQ���az����azazgQgQaz�����~��W��:��5��3��,�	��
�����az�
azj�azjazj�jaz����azjaz�jaz�azazj��!���azaz�azj�j� jjaz�"�*�#�(�$jaz�%az�&�'azjazaz�)jazaz�+jaz�-�2�.az�/�1az�0azjazjazjj�4azjaz�6�7azaz�8�9az�
az�;�O�<az�=az�>az�?�K�@�H�A�Cj�Bjazj�Dj�E�Fazaz�Gjaz�Ij�Jjjaz�Lazaz�Maz�Njazaz�P�Qazj�R�Saz�Taz�Uaz�Vazazjw��X�Y�v�Zw��[w��\�m�]�i�^�d�_�aw��`w�w��b�cw�w�w�w��e�g�fw�w�w��hw�w�w��jw�w��kw��lw�w��nw��o�t�p�rw��qw�w��sw�w�w��uw�w�w�az�w�xazaz�yaz�z�{az�|az�}azjaz���������w���w�w�����w���w�w�jw�����w���w���w�w�����w���w���w�w�����w���w�w�����az��az��az������az����������jaz��jazazj��������j��jazazjjazjaz��������az����az��azaz��az����az��w�������w�azw���w�azw�������az��az��az��az��az��az��az��az��azaz����az����������������jazjaz��azazj����az������jazazj����j��jazaz��jaz��������az��jazj����azjazaz��az����az��az��azaz��jaz��az��az��az��az��az��az��az��az��az��azw�az��az��az��az��v����������az������az��azaz����azu�az��az��az��az��az��azmaz������azazv����az���azt�azaz��azaz�t�az�	azaz�
�az�az�
azazwt����)���azazt���az���az���azt�t�azazt���"��t�az��!� t�azt�azt�t��#�$�'az�%az�&azt��(azt�az�*az�+�<�,�5�-�/�.azazt��0�2t��1t�azt��3t��4azt��6�9�7t�az�8t�azt��:t��;t�azt�az�>�w�?�f�@az�Aaz�Baz�Cazaz�D�Eazaz�F�Gaz�H�Z�I�R�Jaz�Kaz�Laz�M�P�N�OgCb�kXgQ�QazgCb��Saz�Taz�Uaz�V�X�Wmv�w�Yazt�w�[�a�\az�]az�^az�_az�`w�jw��baz�caz�daz�eazv�azaz�gaz�haz�iaz�jaz�kaz�laz�m�naz�oaz�paz�qazaz�r�saz�tazaz�uaz�vv�az�x��y���z���{az�|azaz�}az�~az���azaz������az����az��azaz����v�azv�az����az����v���az��az��v�azaz��v���v�az����az��az����az��az��az����az��az��azv�az����azazv���azaz����az��az��������az��az��azv�v�������azv�azv���az��az��azv�az���j����������az������azaz����az��az������az��w���������w���azw���azw�az����w���azw���w�w�azjaz��az��az��az��az��azaz��az����azaz��az��w�az��az��azaz����������az��azj������jjaz��azazw�az��az��az��azw����]������������������������azazb�azb���������azb�gQazgQ��b�gQ����b���az��azb�az��az��azb����b�������b���azb�b��azb��az��gC�gQazazgC���azaz�	�
�kXazkXaz�
�������azgCgCaz�azw�az��w�waz�azwaz��azw�azw��G��2��+� �'�!�$�"�#wb�waz�%�&az�"waz�(�*az�)azwwaz�,�/az�-�.azwcv�az�0�1azw�az�3�@�4�;�5�8�6�7az�"�"az�9�:azw���az�<�=azgC�>�?azgCazgC�A�DgC�BgC�Cv�azaz�Eaz�FazgQ�H�XgQ�I�J�O�K�M�LazgQazaz�Nw*gQ�Pazaz�Qaz�R�Saz�Taz�Uaz�V�Wb�gQgCaz�Yaz�Zaz�[azw*�\w*az�^az�_azaz�`�aaz�baz�caz�daz�eaz�fazaz�g�haz�iazgCaz�kazaz�l�m���naz�o���p�vaz�qaz�r�saz�taz�uazw�az�w��az�x�yaz�zaz�{���|�~j�}jw����j���
w���az��azw�azaz����az��az��azv���v�az����az����azaz��������������t�wm��u��1����v���v�v�t�m������������u�v���u���u�v�u���az������v��1azaz������az��������������gQkXw��v�b���������b�w*w*gCgCv��������������-�Mwcub����w�b�gC�"����v���azb������Mwv����az��az��az���������wwUw��������v�azaz��az����������az������az��az����azgCaz��azaz����az����gQazgQaz��az����az��������az��azwaz��az��azazt�������v���v�����mv�mv�������az��azwaz��az��azv�az��azaz���������az����az��azv�az��������jw���azw�az��az��azw�az�����az�azw�az�az�azv�az�	��
az�azjaz�
az�azv�az�����/����S����gC�����e��'��gC�gC���b�gCb�gC��!gC� kXgCgC�"�#gCgQ�$gQ�%gC�&gQgC�(�A�)�2�*�,�+gCgQgC�-�0gC�.�/gCv�gC�1gCv�gC�3�:�4�7�5gCgC�6v�gC�8gCw*�9w*gC�;�>�<gCw*�=w*gC�?gC�@gCwcgC�B�T�C�M�D�I�E�GgC�FgCb�gC�Hb�gC�J�L�Kb�v�gC��gC�N�Q�OgC�PgCv�gC�R�Sv�gCw�gC�U�^�V�XgC�WwgC�Y�\�Z�[wgCwgC�]gCwgC�_�b�`gC�agCb�gCgC�c�dgCgCw�fgC�g�~�h�q�i�m�jgC�kgC�lgC�"gCgC�ngC�o�pgC�MgC�r�z�s�w�t�v�ugC�gC�-gC�xgC�ygCw�gC�{gC�|gC�}gCubgC���gC����gCkXgC��gC��gCb�gC��������gC����gCgC����gC��gCgQ��gQgCgC��gC��gC��gC��gC��gC��gC��gCgQ����������������gC������gCgQ����gQgCgQ��gCkX��gC������gCgCkX��������gCv�v�gCv�gC����gC��������gC����b�gCgCb���gCb�gC��gCgC����gCwgC����������gCgC������gCw*w*gCgC����gC���"v�gC����gC��gC��gC���-gCgC��gC��gC��wgC����������������gC����gQgCgQ��gC��gCgQgC��gC��gCgC����gC������gC����gQkXgQkX��gCgC����gCgCb���gC��gC������gC��gCkXgC����gCb�b�gC���������������^���N�������������v�������v���v�b�v�����v�����v�b�b�v���v���v�v��v��v��wv��v�ubb����v��gCv��	�
�
�v�v��b�v��v�v��b�v���kX�v�w*gQ����v�gCv�v���v�v��gQv���@��+��!v��v�� kXv�v��"�#�)v��$�%�'v��&gCv�v��(gCv��*v�wv��,�9v��-�.�5�/�2v��0v��1wv�v��3v��4wv�v��6v��7v��8wv��:�?�;v��<v��=v�v��>wv�v�gC�Av��B�Hv��Cv��Dv��E�Fv�v��GgCv��Iv��Jv��Kv�v��Lv��Mb�v��O�Sv��P�Qv�v��RgQv��Tv�v��U�Vv�v��W�Xv�v��Y�Z�\v��[wv�v��]wv��_v��`�~�a�v�b�iv��cv��d�ev��fv�v��gv��hwv��j�pv��k�lv�v��m�nv�v��owv�v��q�rgCv��sv��tv��ub�v�v��w�xv�v��yv��zv��{�|v�v��}b�v����������v���v�v�����v���v�v����v�v���v���������v���v�v���b�v�v�����v�v���kXv�������v���v�v�����v���v�v���b�v���v���v�v�����v���v�v���v�v�������v���v�����v�����v�v�v�����v���v�w*��v�����v���v�wc��v�v�b�����v���v�����������v�����v�v���v���v���b�v�������v���v�v���v�����v�v���b�v�v���v���gC��v�b���v���v���v�������v�ub���"v�b�����v���v���v�v�b����H���������������v���v�b�v�����v���v���v���v�v���v���gCv�������v���v�v�����v�����v���v���b�v���v�v���b�v�����v���v���v�����v�v���v����?v�����v���b�v�v�gQ��v���������v��v��gQv�b�v��v������v�v�v�v��	v�v��
v��b�v��
�v���w*v���v��v�v��b�v����v�v���v�v��v��v��gCv���'v���v�� v�v��!v��"�#v�v��$v��%v��&�v�v��(�)�.v��*�+v�w*�,�-v�gCv��/�;�0v��1�6�2v��3v��4v�v��5gCv�v��7gC�8�9gCgC�:v�gC�<�B�=v�v��>v��?�@v�v��Av�v��Cv��Dv�v��E�Fv�v��G�"v��I���J���K�[v��L�M�T�Nv��Ov�v��P�Qv�v��Rv��SgCv�v��Uv��V�Wv�v��Xv��Yv��ZgCv��\�q�]�j�^�dv��_v��`v��a�bv�v��cwv��ev��fv��gv��hv�v��iwv��kv��lv�v��mv��n�ov�v��pgCv��r���s�~v��t�u�zv��vv��w�x�yv��M�Mv��{v��|v�v��}b�v������v�v���v���v���gQv���v���v���v�v���gCv�����v�����v���v���v�v���gQv�����v�����v�wv�v�����v�v���v���wUv���v���v�������v�������v���v�gCv�v���v�����v�v���b�v�����v���v���v���v�������v�gQgQv���v���v�v�����v�v���v�v�����v���������v�v�����v���v�v���v���v���gQv�������v���v�v�����v���v�v���b�v���v�v�����v���v�v���v���gQv�������v���v���v���v�v�����v���v�v���b�v�����v�����v���v�v���v���v���v�����v�����v���v���v�����v�v���v���kXv���v���v�v���v���v���v���b�v�������gC��������gC��gC��gC��gC��gCgC����gC��gCgC��b�gC��gC�gC��gC�gC�gC��gCgC�gC�wgC�	gC�
gCkXgC�gC�
gC�gC���gCgC��gC�gC�gC�gCgC�v�gCgC����gCb�gC�w*�gCb�gC�gC� gC�!�B�"�1�#�+�$gCgC�%gC�&gC�'gC�(�)gCgC�*b�gCgC�,gC�-�.gCgC�/gC�0gCw�2�:gC�3�4gC�5gCgC�6�7gC�8gCgC�9�gC�;gC�<gCgC�=�>gCgC�?gC�@gC�Av�gCgC�C�D�L�EgC�FgCgC�G�HgC�IgCgC�JgC�K�"gCgC�M�NgC�O�RgC�PgC�QwgCgQgC�T�laz�U�V�caz�W�Xaz�Yaz�Zazaz�[�\az�]az�^azaz�_�`azaz�aaz�bubaz�dazaz�e�faz�gazaz�haz�i�jaz�kazv�az�mazaz�n�o�w�pazaz�q�raz�saz�taz�uaz�vazazw��xazaz�y�zaz�{az�|az�}az�~azazgC�������n�����az����������������az����azv���v�az����v�azaz��maz������������m��maz��azmaz��azw��azwaz����azt�az��������������azt�azaz��u�az��������az����azu�azu���azu���azt���t�az��������������azmazaz��azt�����az�1��azaz��az��������������wazmazmw��������azv�v�azt���t�az������az��������az��azv���az��azv�az������azwaz��az��azv�az������������az����������v�azv�azmaz��������w��w��wazwaz������az��azmaz��az��azv�az��az��az��azwv�����������������az��maz��azaz������az��wazaz��azv���az��az��azv�az�az�azaz��az�azt�az��l��@�az�	�/�
��az�az�
azv�az��'����az�az�az��azaz�v�az�azaz��azaz�az�waz��$�azaz� az�!�"azaz�#v�azaz�%az�&v�az�(azaz�)�*azaz�+az�,az�-az�.v�az�0�7�1az�2az�3azaz�4�5azaz�6mazaz�8�9az�:az�;az�<azaz�=az�>az�?v�az�A�c�B�Yaz�C�D�Qaz�Eaz�F�G�L�Hazaz�I�Jazaz�Kv�azaz�Maz�Naz�Oaz�Pmaz�Raz�Saz�Taz�Uaz�Vaz�Wazaz�Xmaz�Zaz�[az�\az�]az�^azaz�_�`azaz�aaz�bt�az�dazaz�eaz�f�gaz�haz�iaz�jaz�kazu�az�m��az�n�oaz�paz�q���r�z�s�tazu�az�u�vaz�wazaz�xaz�yv�azu��{�|��az�}�~az�azaz��wazaz����az��azaz��t�az��az��az����az��az��az��az��t�az��azaz��az��az��t�az���;��������������az��azaz��mazaz����az������azaz����azaz��u�azaz��az����azaz��v�az��������az������az��az����azaz��v�azaz��az����azaz��t�azaz��������az��az��azaz��t�az��azaz��az��az��t�az��������az��az��az��az��az��t�az��az��azaz����azaz��t�az����az����az��azaz��az��v�az����az������az��az����az��azaz����az����az����azaz����az��az��azaz����az��������az������az��������az������v�azv�az����az��v�azaz��v�az��az��azaz��v�az���az���az�azaz�v�az�az��az�az�v�az�	azaz�
v�az�az�
��azaz�az�az�az�wazaz�az�az�maz�az��!�� az��az�azaz�az�v�azaz���"�,�#�%az�$azt��&azu��'�(�*az�)mazaz�+maz�-�4�.az�/az�0�2az�1waz�3wmwm�5az�6�7�9az�8mazaz�:mazaz�<�=�M�>az�?�F�@azaz�A�Baz�Caz�Dazaz�Ewazaz�G�Haz�Iaz�Jazaz�Kaz�Lt�az�N�_�Oazaz�P�Q�V�Razaz�S�Tazaz�Uv�az�W�[az�Xaz�Yaz�Z�1az�\az�]azaz�^�1az�`�g�aaz�baz�cazaz�d�eazaz�fv�az�haz�iaz�jaz�kazaz�laz�mt�az�o���p�zaz�qaz�r�saz�taz�uaz�vaz�wazaz�x�yazwazaz�{az�|�}az�~az�azaz��az����azt�az����������az��az��az��azaz����azaz��azmaz����azaz����az��az��az��azaz��az����azaz��t�az��������az��azu�����u�az��az��az��az��azaz��az����az��azaz��v�azaz����az��azaz����azaz��az��az��az����azaz��u�az�����v�������az������az��az��������az����azjaz��az��azw�az����������az�az��azjaz��az��azw�az������az��az����������w���azw�az����w���jazazj��azjaz��az��azaz��az����azazj���������w���w�����w�����w���w�w�����w���w�w���jw���w�w���w�����w���w�����w���jw�w���jw���w���w�w���w�����w�w���w���w�w���w���w��w��w��w�w��w���	w��
w�w��jw�w��
w��w���w�w���w��w�w���w�w��jw��az��-�az��$�az�az�az�az� �"w��!w�az�#azw�azaz�%�&az�'azaz�(�)�+az�*w�az�,azw�az�.azw�az�0�raz�1az�2�3�f�4�V�5azaz�6�7az�8az�9az�:�F�;�<azw�=w�>�Baz�?az�@az�Av�az�Cazaz�Daz�Ev�az�G�P�Ht��Iaz�J�Maz�Kaz�Lt�az�Nazaz�Ot�azv��Q�Raz�Sazaz�Taz�Umaz�Waz�Xazaz�Y�Zaz�[azaz�\�]�`az�^az�_v�az�aazaz�b�caz�dazaz�ev�azaz�gaz�haz�i�jazaz�k�lazaz�m�naz�oaz�paz�qazazv��s�#�t��u���v���w��az�x�yaz�zaz�{az�|���}az�~��az���az����az��u�azaz��u�az����t�az��az��azaz��waz��������az��az����azaz��t�azaz����azaz��az��v�az��azaz��azm��az��az��az��azaz��az����azaz����azazm��az��az��azaz��u�az��az����w�����w�w�����w�����w���w���w���w���w���w���jw�w���w�����������w���w���jw���w�w���jw���w�w���w���jw�az����az��az��az��������������azaz����azaz��jaz��az����az��az��jaz��azaz��jaz������������az��az��jaz��azaz��jaz����az��az��jaz����az��jazaz��jaz������������az��jazaz��jazaz��az��jaz����az��az��jaz����az��jazaz��w�az����az������az�w�azaz�w�az��
az�	w�azaz�jaz�
��azaz�jazaz�az�w�az�az�az�az�azaz�w�azaz�az�az�az��az�az� az�!az�"azu�az�$az�%���&�j�'�G�(az�)az�*�<�+�3�,�.az�-azgC�/�2�0�1gCazgCazgCaz�4az�5�9�6b��7�8b�azb�az�:b��;azb�az�=�@az�>�?azkXaz�A�E�B�D�CazazgQazgQaz�FgQaz�H�]�I�Naz�J�K�M�LazgQazgCaz�O�U�P�S�Q�Rb�azazb��TazkXaz�V�Z�WgQ�X�YgQazgQazgC�[�\azazgC�^�h�_�d�`gQ�agC�bgCgC�cazgCb��egC�faz�ggCaz�iazkXaz�kaz�l���m���n�z�o�u�paz�q�t�raz�smmazazm�v�xaz�wazv��yazv�az�{���|��}�~azwazw��az����azw����azwwazaz��az��azt�������az����az��azu���azt�az������az��az��az��azu�az������azt���t�azazt���������azv�wt�����mazaz��m��azm������az��azw�azaz��az��gCaz��az��az��az��az��az������azaz����az��azaz����az��azazw�����������������az��w����azaz��waz��azv�����azaz��v�az��azaz��t�azaz��az��az��������������u�azwaz����t�az����v�mu�azaz��v�az��az��az��az��az��az��azgCaz������az��az��az��azaz����azaz��az��az��az����az��azaz��az����azaz��azb����az��az�����az����azaz��az��az��az����azaz����azaz��az�az�az�az��az�az�azaz@az�az�	az�
az��az�
az�az�azaz�az�az��azaz��az�az�az�azaz@��J�azaz�az���?��7� az�!�.�"�'az�#�$�&az�%azv�v�az�(az�)�,�*�+azv�v�azv��-v�az�/�3az�0v��1�2azv�az�4az�5azaz�6v�azaz�8az�9az�:az�;�<�>az�=v�azazv��@az�Aazaz�B�Caz�D�Gaz�Eaz�Fazjj�Haz�Iw�azaz�Kaz�L�Maz�Naz�Oaz�Pazaz�Qaz�R�Saz�Tazaz�U�Vaz�Wazaz�Xaz�Yaz�ZgQaz�\��]���^���_���`�|�aaz�baz�caz�d�s�e�j�f�i�g�hu�mv�jv�v��k�lazv�w�m�nwU�oaz�paz�q�rb�azb�u��t�x�uaz�v�wkXazw8���yaz�z�{t�u�b�az�}az�~�����azv�w8��azv���������v�azazt���az��w*az��v���v�w*������������������azb�gQ��v�gQ��w*����azaz��azu�����az�������w*��w*��w*��w*w*��w*��w*��gCw*gCj������az��azb�maz��az����u�v�v���az��azaz����az��azv�u����6����������az��az������v���v���v���az��az��azv���v�az��ww��w����w��w��ww��v�waz��w*����w*��w*��w*w*��w*��w*����w*��w*��w*w*��w*����w*w*����w*w*��w*��gCw*��������������az��azaz��az��az����azaz����azaz��az����az��azaz����azaz����azjaz����v���v�azaz��t���t�m�����gQwc����������gCgC��gC����gC��gCgC��gC��gC�gC�gC�gC�gCgC�gCv�gC��	gC�
gCgC�gC��
gCgC�gC�gC��gCgC��gCgC�v�gCb��b���b��b��b�b��b�kX��wu�az�� �/v��!az�"�#az�$azaz�%�&az�'az�(az�)azaz�*az�+az�,az�-�.azazw�j�0j�1�2j�3j�4jj�5w�j�7�Z�8�0�9�o�:�<�;v�azw�=�laz�>�?�V�@�N�A�Laz�B�C�K�DgC�EgC�FgCaz�G�Haz�Iaz�JazjazgCazgC�M��w�O�S�P�Qv�v�v��Rv�v��T�UgCkXkXv��W�]�X�Z�Yu���u����[�\u�u����^�e�_�b�`�a�Zu�v���c�d�1t��wwq�f�i�g�h�Zu�v���j�k�1t��wwq�m�4�n���o���p��m�qm�r�st��t�{�ut��vt��wt��xt�t��y�zt�mt��|���}t��~��t��t���t�����t�mt�t�����t�t�������t�mmt���t���t�������t���t�mt�t�����t�mt�������m����m����t���t���t�t�����t�t���t�����t�t�m��m����������wc�[w�{���ub��wcub��������������gQw*�"��gQw*�"��az��v�az��az��az��az��az��az��az��az��az��azv�����������w�w��
����az����w����2���
�������������������w���������w�w�w���w�w�w���w�����w���w�w�w���w�w���w�w�����w�w�w�������w�w���w���w���w�w���w���w�w���w�w������������������w�w���w�w�w�����w�w�w�������w�w�w�������w�w�w�����w�w�w�w�������w���w�w�w�����w���w���w�w������w�w�w���w�w�w�w��w�����w��w�w��	�
w�w��w�w�w��
�w��w��w�w��w�w��w�w��w������w��w�w��w��w�w�w���w��w�w�w�� �,�!�(�"�%w��#�$w�w�w�w��&�'w�w�w��)w��*w��+w�w�w�w��-�.w��/w��0�1w�w�w�w�az�3��w��5�R�6�C�7�=�8�:�9v�����;�<��w��ia��>�@�?b��MwF�A�Bb����v��D�K�E�H�F�Gv��0�����I�J����wU�L�O�M�N��?���-�P�Q��www�S�`�T�Z�U�X�V�Ww�^v����Yv�����[�^�\�]��w��ia��_b��MwF�a�h�b�e�c�db����v��f�gv��0�����i�l�j�k����wU�m�n��?���-�p���q���ru��s���t���u�w�vjw���x�yjj�z���{��w��|w��}�~w�w��w���w���w�����w�jw�w���w�����w���w�w���w���w���w���w�j��������������w������j��jj����w��������������az����azaz��az������������az������az��azaz��w�az��az����az��azw�w�azaz��az��az������azw�����w�azw�azaz����az����������������azw�w�az��w�azw�w���w�az��az��az��azazw�v�az����az����azv�az����������azu�������az��az����az��az��az��azaz��az����azazu���azaz����az��az��az��azaz����azaz��azu���u���u���u�������az��azu���u�az������u�az��u�azu�azaz���������`���S���G���D���$�Z����u������u����	����������u���t�u��u�t�u�u��u��u�t�t����t�u�u��t�u��
������
u�t�u�u��t�u�u���t�u�t��u��u��u�t�u����t�u��u���t�u��u�t�t��t�� t��!t��"t��#t�u��%��&�<�'�-�(v��)v��*t��+v��,v�v�t��.�6�/t�v��0�1�4v��2�3v�v�t��5t�v�t�t��7t��8t��9t��:t��;t�v�v��=�>v��?v��@v��Av�v��Bv��Ct�v��E�F�1t��wwqgC�H�IgCgC�JgC�K�LgCgC�M�NgCgC�OgC�PgC�QgC�RgCm�T�Z�U�X�V�W���[w�{��YgC{�gC�[�^�\�]gCkXkXv��_gQw*�"�a�}�b�d�cazv�az�eaz�faz�g�|�h�
�iw��j�v�k�r�lw��m�ow��nw�w��pw��qw�w�w�w��s�tw��uw�w�w��ww�w��x�yw��zw��{w�w�w��
az�~�������az�azaz��az����az��az��azaz��az��az����az��azazjaz����azaz����azaz����az��azaz��az����az��azazj�����������i���.w����w����������������������������w��w�����v���wv�w��������w�w������w�w����������w���������w�w������v�����������v�wv�v���v�w��v�v���v�w��w��wv�w����w��w������w������w����w�������������������w�����w������w������������w��������ww���������������w�w���w�����w����������w������	�������������wFv���w�wF��v�wFv�������w���w�ww���w��wwF�wFwwF�wF�wF�wFwF�wFw�
��wF�wFwF�
wFw�v���wF�v��v�w�v��v�wv���"��v��v��v���wv�w�w�w��� w�w��!w�w�#�)�$w�w��%�&w��'�(w�www�w��*w��+w��,�-ww�w�/�h�0�^�1�P�2���3�C�4�:�5���6�8���7��v��9�������;�?���<���=���>v����@v����A���B��v��D�M�E���F�Hv��G��v��I�K�Jv���v��L��v����N���O�������Q�a�R�\�S���T���U�W�V������X�Y����Z�[��-�-�����]�^�`�_������-�b���c���d���-�e�-�f�-�g�-��v����j�l�kv�����m�n��w��i�o�p���q���r���s�~�t�|�u�z�v�xa��wa�v��y��v����{a��0a�a��}a�v�v����������v��������������0�0���0���0���0w��a���a�wa�a���a���a���a���a���a���v�a���a�������a���a�������a���a�a�w��a�a�wa���������wa�w��a�w����a�wa��������������MwF��b�b���b���b�����b�b�����b�b���b���wb�����b�����������������������������������w����w������w����w������w����������������������b����v���������v��0�������������������������������������v����v�����v����v������v����wU������������������?���-������ww�����L���2����������������������wwFww��v�wv�������wFwv���wwFw���w��w�wv��w�v�wv���
��wv����	�
wv�v�w�v�wv�����v�wwv���v�w�wv�w��-��!��v����v�wv�w��v��wv�� wv�w�"�(�#�%w�$wv��&�'v�wwv��)�*wv��+�,v�wwv��.�1�/wF�0wFv�wwFww�3�4�=�5�8w�6w�7www�9�:�<w�;wwv�w�>�D�?�Bv��@�Awwv��Cwwv��E�K�F�I�G�Hwv�v�w�Jv�wv�v�w�M���N�l�O�^�P�V�Q�T�Rw�Swv�w�Uwwv��W�Zw�X�Yv�wv��[�]�\wv�wwv��_�d�`w�aw�b�cwv�v�w�e�hw�f�gv�wv��i�kv��jv�wwv��m�u�nw�ow�p�s�q�rwv�v�ww�tv�w�v�{�w�xwv�w�y�zwwv��|�w�}�~wv�w��������wv�v�w��wv�ww����������w������v�w��wv�w��������w��v�wwv�v�����wv�ww��w������wv�v�w��������w�^v�������������b���b�������b���b���b���b���b�b�wb���b�����b�b���b���b�w�������v���w��i����������������a��MwFb�b��������������v�v��0������������������������wU��?����w�-����������w�^v�������v�b��������������������������������az�����0���0�������0���0���������0�����������0��������������������������������������������������������w������w��w����w��w�����^���^w�^�^���^���^�������^����az����
���v��v��v��v�azv��	���
��v�����v������v�����v��v���v��wUv��v���wUv�wU��$��wU�������wU��� �!����"�#������%�*���&���'�(�-�)�-���-�-�+�-�,�-�-�.�/�-v�v�az�1�Q�2�O�3�N�4v��5�>az�6az�7�8�;�9az�:jazv��<�=azt�azv��?�C�@�Baz�Aazv�jw�D�Hwc�E�F�Gmt�u�w�I�K�JwUb�v��L�Mu�mazgQazgCaz�Pb�az�Raz�Sazaz�T�Uazaz�Vaz�Waz�X�Yazaz��[�kaz�\�]�`�^az�_wUazm�aazwU�bv��caz�daz�e�f�iaz�gb��hv�b�az�jazw*az�l�m���naz�ot��p���q�u�r�taz�sazv�jw�v�zwc�w�x�ymt�u�w�{�}�|wUb�v��~�u�mazgQ����������������w������������������������������������ww��w������-�-���-���-���-���-�����-�-w��������������wFwF��wF��wF����wF��wF��wFwFw���0���0�0���0���0�����0�0���0w����������������������������������w����w������w����w��ww��w��w��ww��w��ww����w��w��www��azv�����v�v���v�����v�v���v���v�w��az��w*v�w*azv���������az��t���t�����t���t�t���t�����t�t���t���t���t���t���t���t��w����t���t���t���t���t���t�����t�t���t���t���t�����t�t���t��w��azmu�az����azaz��az��������az��jazv�����azgCazv���������*���az���m�az�u�az�	�
���az��
azmv���azv�t�����gC�azmv���azv�t��v�u����azaz����'��&w*�� w*w*�!�"w*w*�#�$w*�%w*kXw*b�gQ�(�)gCt�azt��+�5�,�/az�-v��.gQgCaz�0�1�2waz�3�4jmmj�6�n�7�W�8�D�9azv��:�;az�<�@�=azu��>�?azu�v��Aaz�B�Cb�az��v��E�N�Fazaz�G�Haz�Iaz�J�L�Kazu�jaz�Mv�azaz�Oaz�P�Qaz�Raz�S�U�Tazu�jaz�Vv�az�XkX�Y�d�Zv�v��[v��\�]v��^v�v��_�`v�v��a�b�c�v��,v�v��ev��fv��gv��h�iv�v��j�kv�v��lv��m�;v��o��az�p�q���r�|�s�w�tazaz�u�vkXv�az�xb��y�zazgCgC�{waz�}��v��~�������gQt�az��azu���gQt�v�az��az��������azazv�v�w8����������azaz����kXv�az��b�����azv�gC��waz����v�����������gQt�az��azu���gQv�azaz��az��������v�azv�w8��u�v�azb�������������az��azkX����wv���azaz��az��azw��az��az��azj����az��azaz��������azu���b�az��az��az��v������az����az��az����az��azaz��az����az��az��az��azaz��az��az��az��az��az����az��azw�az������az��az��azaz����azaz��az��az����az��az��azaz����az��azaz��az��az��w�azaz������az��az��az����az��azaz����az��azaz����az��azaz����azaz��az��@azaz��az��az����az�azaz��az�azaz��az�azaz��azaz�	az�
@azazv��
�_��9��$�az�az�az�az�az�azaz�az�az�az�az�az�az��az�azaz�az� �!azaz�"�#azw�azaz�%az�&�'azaz�(az�)�*az�+azaz�,�-az�.az�/az�0az�1az�2azaz�3az�4�5az�6az�7azaz�8w�az�:az�;az�<v�az�=az�>az�?�@azaz�A�B�E�Cazaz�Dv�az�F�U�G�N�H�K�I�Ju�mubup�L�Mu�kXazv��O�R�P�Qv�b�jaz�S�Tu�v�v�gC�V�\�W�Z�X�Ymv�v�azaz�[t�v��]az�^azww�`���a�{�b�vaz�caz�d�eazaz�f�gazaz�h�iazaz�jaz�kaz�l�maz�nazaz�o�pazaz�qaz�r�sazaz�t�uazaz@az�w�xb��y�zv�azu�azaz�|�}�gC�~kXv���������az��az����az������t�����az����az��azazt�w*��������w*az��v�����t�t���t���t�����t���t���t�t�����t���t�t�����t�t�v�����az����������m����mm����m��m��mm��m��m��m��m��m��m��maz��gC��gC��gCgC����gC��gCgC����gC��gC��gC��gCgC����gCgCv���w*v�����azaz��az��w*��v�az���g�����������az����������az��azv�w*����w*��w*w*����w*w*��w*����w*��w*w*��w*����w*w*��w*����w*wUw*����az��az����gCt�m��������jb�b�����t���t���t���t�t���t���t���t���t���t�����t���t���t�t��w��azazj����������v�u�������azm����azaz���az�azazu�az�v��az���az���
�	gCazgCgCaz�az�
wc��az��waz��gQw*��az�w*����azb�b�u���D��;az��az��,w*��w*� w*�!w*�"w*�#w*w*�$�%w*�&w*�'w*�(w*w*�)w*�*�+w*w*kXw*�-�.w*w*�/�0w*w*�1�2w*w*�3w*�4w*�5�6w*w*�7w*�8w*�9�:w*w*b��<�?az�=v��>t�m�@�AgCgQ�B�Cv�azwj�E�N�F�J�G�Hv�w�Iv�wcazaz�Ku��Laz�Mazv��Oaz�P�e�Qw�R�d�S�Zaz�T�U�W�VgCgQb��Xazt��Ywcw�[�b���\�]�`�^�_jmu�v��aazwv�az�cv�azazw*�f��azv��h���i�saz�j�k�mwc�laz���nazaz�o�p�qgCazaz�razv��t���u��az�v�waz�xw*w*�y�zw*�{w*�|w*�}w*w*�~�w*��w*��w*w*����w*��w*��w*w*w�����������b������������������������������������������������������������������������������������������������������az����gC��gQaz����t�u�mv�������az����j��b�gCaz����azaz��az����w��www��az��azaz����az��az������������w*����t�t���t�����t�t�����t���t���t���t���t�t���t�����t���t��wt���w*azw����������������az��������gCgQb���azt���wcw����������������jmu�v���azwv�az��v�azw*az��b���gCgC����gCgC��gC��gC����gCgC����gCgC����gCgC��gC��gCv���az��v�������azazwaz��azv������az����u�m�az�azaz�az��az�azaz��azaz�az�	az�
az��az�
azazgQ���b��gC�gC�gC�gC�gC�gCgC��gC�gCgC�gC�gC��gC�gCv�gCaz� t�j�"���#�/�$���%���&�1�'A�(@&�)A�*@&�+A�,A�-A�.A�/A�0AA�~�2�>�3AA�4�5E�A�6�7|��8�A�9�:A�;A@�<A�=AeA�?A�@@&A�A�BA�C���D�f�E�V�F�N�G�K�H�JAe�ImEE�6��L�MH:�J��O�S�P�QH���R���gH��TH��UHG��W�_�X�\�Y�ZazF��[AeE�Y�]���^Ae��`�c�aH�@&�bE��dH���eHGF��g�u�h�m��i�j�k�'��lE�'��n�r�o�q��pEazF���s���tH:Ae�v�~�w�z�x�y�Ae���{�|���}HGAe��������E���E������������������H��H:�������Ae���Ae�~��������������E�E����H��������H���H����������������������AeE�������E���������H�����E��������H:�������������AH EzH���H���������������H ���A@&���A������������������������������������������������������������@�A��A��������H ��H ��H H ����H H ��H ����H ��H ��H ��H H ����H H ������H ����H H ���hH H ��H �v@&��A���~��A�������������E��E��azE�������'�'@&����Ae�H:HG���������AeE������EE����������������'�����������E��HG�	�
AeA@&F����
�����AE@���Ez��|�F�F�E����@&AEA��AEE���*��$�� H:EE�!�"s��#�,��H:�%�)E�&�'�(�����@&F��+�-E�,E@&�.EEHG�0��1���2���3�T�4���5���6M��7�Y�8�V�9�J�:cW�;�Ii��<�=�?�>NQ�NN�@�ANN�BN�C�DNN�E�FN�GNN�HQ�NNl��K�M�LN��L��N�OML�Pb��Q�Saz�Rubaz�T�Uv�gCb�kX�"�W�XM��"�1�Z�jb��[�\�hb��]b��^�_M�`M�a�fM�b�cM�dM�eMM�;M�gM�idMN�k���l�nb��mc�M�o���p�{�q�w�r�td�sq�dm��u�v�@o�q��xdm��ym��z�m��|L��}�~�Px�L�L�i����L��L����L��L�_L��������{����n�}��������{������������������������������������������������������$�3�������B�Q�����������`�o{����~p����n���������}�Bp��B���������;��������q�q���q�����q���q�q�����q���q���q��Fq���q���q�q�����q���q�q���q���q���q����q�g�q���L�ML�d��t���az��az��az��az��az����azaz����az��az��az��azaz����azaz��az��wUaz��L�������K�����c���L���b�������b�����b�ku������b���b���h4h4x���Mb���b�������������b�b�L�����Nj�e�d��������xvc�q~N�����`�`���`���`���`���`�����`���`���`���`�`���`���b�iM��D��5��!��N�N���Q��	[��
�Q��Q��
Q�Q���Q�Q��Q��[�Q��N�N�NN��N�N�N�N�NNQ��NN�N�� NQ�N�"�'�#`��$LiM�%d�&Lo��(�-o��)�*�+�Qb��,dLiM�.b��/�2�0�1�MMMo��3�4� iMb�d�6L�7LL�8L�9L�:L�;�<LL�=�>LL�?�@L�AL�BLL�CL���ELL�FL�G�HL�ILL�JL�KL�LL�M�NLL�OL�P�QL�RL�SL@L�U�5�Vb��W�|�X�l�Yt��Z�[azt��\p��]�ed�^�_�b�`�ag4b�Nc��c�ds�L�x�b��f�gd�h�k~��i�jd�odb���m�n�wb��oq~�pku�q�r�tM�s�;M�u�vM��M���x�yrfN�z�{dcWd{M��}�	�~���������������������Ocb�NW���Ocb���b���������������������������������Oc����������Oc��Oc��N��N��NN����N������NOcN��OcNOcOc��b�Oc��������N;OcOcb�b���~�b�������������b���b�Oc��Oc��Oc����OcL�nW������d����NOc��U\����U\��U\U\����U\U\��U\����U\U\Oc��������nW��b���b�Oc��������Oc��Nb���Ocb�Oc��Ocb���b�~���������U\��b���b�N��b�Oc��Nb�b�����Ocb���b�Oc�������������� ��L������g���M��MM��M����MM��M��M�o��M��M������M��Mg�M��M��Mg�Mi�b����L�����L�L���L���������L���L�L�����L�L��������������L��L�L���L�L��L���+�az{
M��n��Lb��
����b��
�b�g_p�M���iM�5b��`��{
�i�i���i�����i����e�i��L���L��)� �#�!g����"�;�4�$�'�%�&g�������(g��otO�*�/�+�.�,�-�O��g�����d�0�3�1�2g��o����g��4y��4�6���7�Cd�8�9m��:�?t��;�<�>`��=L�MdL��@d{�A�BdL�|�� �D�g�E�N���F�G�L�H�K�m�I�JMi�M�bM�M_�|�M�O�T�P�R`��Q`�M��SL�c�h�U�W�VnWc�d�X�f�Yb��Z�\Q��[N;Q��]Q�OT�^Q��_Q��`�aQ�Q��bQ��cQ��dQ��eOTQ�L�L�h���i���j���k���l���m�w���n���o�p�����q���r���s���t�u���v����d�x���y���z���{���|���}�����~���������d��c�����z�����ty��b�����nWaNaNc�b�L���6��������������p���t�����iM��iM��nWL�������`���iM��`�L������Mb�Md�������H��������`�N��`�����L`�����K�ӹ��������������p�L�{
��l����l���������l���l���������mMp�M��cWaN����cW��cWcW��cW��cW����������cW�������(�7cW�G�����W�f���u�fcW��cW��cW��cW��LL��L����LL��L��L��L����L��L��LL����LL����L���H�H�����H���H�H�����H���H�H�����H�H�����H���H�H�����H���H�H�����H�H������z�t����
��������������xvdN����rfb�p�iMnW���������b����%M����xv�������mm�dv�g4������Md{L���	g_��Cb�aNb��c���&�
�����M�dc�i�M`���b�~�b�����q~LxvL���j*kud��$��!�� Q�\;]R���"�#��]R]ROq�%Q�Q�N�'�/�(M��)�*b�N�+LcW�,�-�.VpNQ�P}�0d{�1�5�2MN�3Q��4NN;xvd{�7�k�8d{�9d�:�\�;�Wxv�<�=�J�>N�?NN�@N�A�BNN�C�DN�ENN�FN�GN�H�INx�NN�KN�L�MN�NN�ONN�PN�Q�RN�SN�TNN�U�VNx�Nw��Xw��Y�Z�[M�,Mb�d�]�^�h�_b�aN�`�ad�b�e�c�diM�8��iM�f�giM���8iMb��i�jM���L��l�g�m�nt�d{�o���p�v�qN�r�tj��sc�M�udb�g_�wL��x���yL��zL��{L��|L��}L��~L��L�L���L�����L���L�L���i��L�����L�L�����L���L���L���L���L���L���L�L���L���x�����������L���L�L�����L���L���L�L�����L�L���L���L�����L���L�L�ߜ��L�����������L�����L�����L���L���L���L���L�iL���L�������L���L�L�i�L�����L�����L�L�����L���L�L���L����L���L�L�����L�L�����L���L��L���������L�����L���L���L�L���L���L���L�����L�L�����L�L���L�����L�L��������L�������L�L�������L���L���L���L�L���L���L���L���L���L������L�����L���L�L�����L���L�L�iL���L���L�����L���L�L���L�����L�L���������e���1���������L���L���L���L���L��L��L�L��L��L���L��L��	��
L�L���L��
L��L�L���L����L��L��L��L��L�L��L���L��L�L���L�L����)��&� L��!L��"L�L��#L��$�%L��L��'L�L��(�L�L��*�+L�L��,�-L��.L��/L�L��0�L��2�J�3�;�4L�L��5�6L�L��7�8L�L��9L��:L���<L�L��=�>�E�?L��@L�L��AL��BL��C�DL��L�L��F�GL��HL��IL�L���K�QL��LL��ML��NL��O�PL�L���R�^�S�X�TL��UL�L��VL��W�L��YL��ZL�L��[L��\L��]�L��_L��`L��aL�L��bL��c�dL��L��f���g���h�y�i�r�jL��kL�L��lL��m�nL��oL�L��p�qL�L��L��sL��tL��uL��vL��w�xL�L���z���{L��|L�L��}�~L��L�L�����L�L����L���L���L�����L���L���L���������L�iL���L�L�iL�����L�L���L��������L���L���L�L�����L���L�L����L�������L�L��L�����L�L����+L�L�����L�������L�L���L�����L���L���L�L����L�L���L���L����L����	������������L���������L���L���L���L�L�����������L����L���L���L�������L���L�L���L��L���L������������L�L���L�����L�L�����L�L��L�����L�L���L�����L�L���L��������L�L�������L�����L���L�L��L���L���L����L�L�����L�L���L�����L�L���L��������L�L���������L�L�����L�L���L����L�L�����L���L���L�L�����L�L����L����L�L���L��L�L��L���L��L�L���
�9����L��
���L�L���L�L���L�L��+L���L��L��L��L���,�� L���L��L�L���L�L��!�"�(�#L��$L��%L��&�'�L��L�L��)�*L��+L�L�iL��-L��.�/�4�0L��1L��2L��3L��L�L��5L��6�7L�L��8L���:�D�;�?�<L�L��=�>L�L��L��@�AL�L��BL��C�L��E�O�FL��G�L��HL��IL��JL��K�LL��ML���N�L��P�WL��Q�RL�L��SL��T�UL�L��V�L��X�^L��YL��Z�[L��\L��]L��L�L��_�`L�L��aL��b�cL�L��d�e�fL��+�+L��h���i���j�q�kM�l�o�m�ndL�b�c��pL�`�`��r�|�s�y�t�x�,�uak�vak�wliakK�L��z�{aNdb�L��}��~b�Nd��d����b���b�����b�b�����b���b�b�����b�b���b���b�m�b���b�����b�b�����b�����b���b���b�����b�b�m���b���b���b�b���m�b�������������dLj���b�g4����������q�������dq�ddq�d��d��d��d��d��d��d��d����d��d��ddq�������M��������݋li�
az����`�x�li�+L�Lg_��akiM���+��dL�������������d{��������L����c�`�d{b���N��Mc���L����������������������d{ak�����M���VN+��������Q�L�Nlx����b�azj*H:d�(����g_����azaz��azgQb�������e��e�.��ee�7N��������`����X��`�b�c�������aN����j*g4rfN����b���K�b�����NMiMb���b���q~�b��K�t�����c��L��b���	��
YN�V��
N�VN�V��b��fak�`�`�b���(��"���`��b��b�kub��c�����`�xverX� �!rX��b�N�#�$`�{
M�%�&�'azgCgQaz�)xv�*`�Md�,�^�-�M�.`��/�9aN�0�1NaN�2L��3L��4�5�6c���7L�8ln��=�:�GiM�;�<�B�=b�p��>�?�FM�@M�AMq��C�E�Dc��UL�Fb�b�azku�Ht��I�J`��K�Lt�d`�b�t��Nc��O�P�\b��Q�R�Sb�j*�T�Z�U�VL�cW���Wi��Xi��Yi��eb��[b�M���]�'��_�q�``�b��a�bd{�c�p�d�l�e�g�fb�b�`��hd�id�jdd�kdm��md�n�oL��Xp�N��iM�r�
�s���tt�d�u�v���w���x���y���z���{��l�|�}��~�������������n�����g&c�c���������g&�ն����lg	�=��������������dn��g&�����=�yg&����������s�ڈ������g&�c���d��dd��d����d��d��d��dd����dd��d��d���������������������g	��n�����c��=��������c���g&���y���y���y���������l����������������ڈ���g&�ն��������g&��g&����=������l����������n�c������������g	����g	��g	g	��g	��g	����g	g	��g	������l����lg&ll����l����b�����������d������M�����EE����E`���`�K���������ML�o���Lg4c���aNM����c���rf������c�d��d��M�����;MM�oM����������c�B�������~�b��Q�Q��NQ���	M�g_`�Mt��t���
t��t��t��t��t�t��t��t��t��t��t��t����t���V��������k�L��=� iMc��!�"�)�#�&�$�%M`�R�c��'�(c�LcWM�*�8�+aN�,�7�-�0v��.�/v�azv��1�4�2�3azv�v�az�5�6azv�v�azy��	l�9~�:�;�<Ae~�~�>�b�?�@c�c��A�D�Bp�d�CL`��E�I�F�H�GiMb�x�L`��J�a�KM�L�N�MazgQaz�O�Xaz�Paz�Q�Raz�Sazaz�T�Uazaz�V�WazazgC�Yaz�Zazaz�[�\azaz�]az�^�_az�`azgCazakM�x�c�d�gc��ec��fdcWb��h�i�jj*ddc��l���m�np�iMd�o�p���q�wgQ�rb��s�tb�b��u�vb�p�b��x���y���zc��{�}�|d{d{�%�~��%d{�3�%b�`�����������b�b���b���b�����b���b���b�b���b�����b�b�b���b�b���b�����b���b�b���b�����b�b���b���b�b��b���b����C������N���R����tk�bakH:c�M�������t�b���������b�����b���b���b���x�b�b����������������pp���p������9���~�����������pp���p������9���~����������b�h4c�����������ږc�`�aN����xvrXQ�d�����L�gQ������������^Cb�c�ku����ib�������������b�N}�d{����N��Oqlx`�����������������b���b�������Nd����nWL�d������i�i�i�i���������l�q~Nd{b���xvL��ak����������M��d{��������|L|�iMj*lg4���b�����ku��e�iM����������NdnWd��Nm�g_��N�P}NP}�	��
�Nm�c���
M��M��`�dL��iML���?�c���!�������c�rfNM�MM��j��L|�c�� MLiM�"�*b��#�$�'�%�&b�McWL�(�)gQazazgQ�+N�,�;�-�6�.�3iM�/�0�1u�p��2`���i�4L��5M�lc�t��7L��8�9�:���+i����<iMt��=N�>��{
�@���A���B�b�C�Q�D�K�EiM�FiMiM�G�H�Il`��Jl��i�LiM�McW�N�Pc��O��ll~��R�[�Sd�T�Z�U�WM�VOTl�X�Y|�NNlML�\iM�]�^`�iM�_Lb��`�ab���b��c�t�d�giM�e�fiMiM`��h�miM�i`��j�k�lLM`�j*�n�oiMl�pL�q�r��xv�sxv����u��M��v�w�x`�iM�yli�z���{li��|�}li�~li�����������li���lis8li������iM��Nl��il����iM������`�lc�NiMN������l�������b�aNL�����MdML�������ak����L�aklid]������hxvc�����L�b�MdL`����������L���L�������L�L���L���L�����L���L���L���L���L���L���L�L�����L�L�����L�L����+L���L���L���L�L�����L�L���L���L���L���L���L�����L�L���L���L�����L�L�@`������Jg_��������`���h����g4��g4t�����������L���L���L�L�����L�L���L���L�����L���L���L���L���L��:L���L���L�L�����L�L�����L�L�����L���L�L���L�����L�L���L������L���L���L�����L�L�����L�L�����L���L�L�����L�iL���;��"��L���L��L��L�L��L���	L�L��
�L���
L��+�+L�����L��L�i���L��L��L��L�L��L���L�L���L�L��L���L�� �!L���L��#�)�$�'�%�&i�L���(L�L��L��*�+�4�,L�L��-L��.L��/L��0�1L�L��2L��3�+L��5L�L��6L��7�8L��9L��:L�L��L��<�=L��>�@L��?L���AL��BL��CL�L��D�EL��FL�L��G�HL��IL�L���K�Q�Lty�Mxvb��N�OMN�Pq~L��R�Sb�c��TnWq~�UiMM�W��X���Y�Zb�M��[���\�l�]d�^z�nW�_�`�fb��a�bb�`��c�d�edNcWc��g�k�hwd�i�jdq�dMb��m�u�niM�orf�p�s�q�rdb�`�nWc��tc�nW�v�}�w��d{�x�y�|�zM�{m��!m�i�NM�~���������b��ei���N��������dN~�dN�e��erI`���b�cW��`�b�����`�������������c�xvb�������|�L�b�Mb����,��b�aN������Л����������������M���������kuL�g_����b���Mg_����b�dNb�d������c�����cWLak������Maz`�b���b�y7����t�����p�L���I������c�ӹ����`�q~��d��N��NNQ���L������������M����L�N`�����{
����M������yb�yd$��b��0Mrf��q~����q~��Nb���b�b�N����iM����������������xv���>ݨ�>dԦ������L���rXrXlxxvd��������`�c�M���az��v�az������xv����g&c��g&ak�������L�[�j�����d{������l����g&�l�yb�������d��������~�b�kub�b��b�kuq~M�xvM�L�������	��
`�t�c���B�
d{��c�����b�kug_��L��b�d�i��d�d��A��6��5|����-�����(� �$�!�����"�#���������%�&���'���������)���*���+���,�����.���/���0���1���2���3�4��������diM�7�@�8iMd�9d�:�;dd�<d�=�>dd�?��ddiMiMd�C�H�D�O�E�Kd�Fd�GM�H���I�JM�ML�L�M�NNc�b�g_�P�v�Q�`�R�[�S�X�T�UQ�N�V�WP}��NP}�YOcOc�ZMb��\�_Oc�]Oc�^OcNb�Oc�a�g�b�cOc���db��e�f��x�Q�N�h�o�i�l�j�kP}Q�Q�b��m�n�������p�s�q�rb�b�Q��t�ub�x��x��w���x�|b��y�zOc�{OcOcb��}�Oc�~b���������Oc��������������Nb�OcOc��OcN��Oc��OcOcb�Oc����������b�OcOcOc��OcN��.��������j*b���j*`�������������M���M�����������������������������������=L��=�������[���jy�������������[j��������y���b�p�c���b��Xq~����b�����������iM��N����g4��g4���g4������LM��g4���������������������������������#g4����2�L��B��������b�c�NL�����������xv��xv�����xvxv����xvxv��xv��xv��xv��xv�����xv��Q����������`��NM���Qt��������`����,��M�����������az��az��az��azaz����azaz����azaz��az��v�azaz�az�gQazaz��az�az�az���	gQ�
gQgQ��gQ�
�gQ�gQb�b�gQ�gQ�gQgQ�gQ��gQ�b�gQb���az�maz�azaz�v�azo��c�� �#M��!N�"`�c��$�Md�%�&�1m��'�(m�m��)m��*m��+m��,m��-�.m�m��/m��0m��-�2�<m��3m��4m��5m��6�7m�m��8m��9m��:�;m�q�m�m��=�>m��?�F�@m��Am��Bm�m��C�Dm��Em��Km�m��Gm��Hm��Im��J�Km�m��L�Zm�c��N�OLc��P��c��R�]c��SM��TN�U�V�Xl�WlN�Y�[�Zlc�Q�d�\OTl�^iM�_nW�`�z�a�v�bM�c�u�d�h�e�g��f�M�~�i�s�j~M�kM�lM�mM�n�oMM�pM�q�rMy�M�tq��q�b�Mh�w�x�yLdnWN�{�cW�|�}�~gQb�Ng4��������M����������L�������������������������L��������L������������L������L��L����������nW��nWh������L�brfd�����������������m,��+�M���������������g4�Ug4g4��������������g4g4����������������������+�+�����+�+��#�+g42����g4�������2��22����2��2��2��22@2����2��2��2��22��2��2@�������Q���������������.����az����������az��Taz����v�azaz����az��azazv���azaz��v����������_���7�����������az��az����w���w�azw�������w�w�����w�w���w�w�w���w���w���w���w���w�v������azw����azw��w���azw�az���w�az��w��	w��
w�azw�w��w��
w��w��w��w�v���%��w���azw��w���azw�az��az�az�az�az�azw�w�� w��!w��"w��#w��$w�v�w��&�'�-�(w��)w��*w�w��+w��,w�w�w��.�/�3w��0�1azw��2w�azaz�4az�5az�6azv��8�I�9�Aaz�:az�;az�<az�=az�>az�?az�@azv�gC�BgC�CgC�DgC�EgC�FgC�GgC�HgCv��J�WgC�K�L�MgCv��N�Rv��O�PgC�QgCv�gCgC�SgC�TgC�UgC�VgCv�gC�XgC�Y�Zv��[v�gC�\gC�]�^v�gCv��`���a�r�b�jgC�cgC�dgC�egC�fgC�ggC�hgC�igCv�gC�kgC�lgC�mgC�ngC�ogC�pgC�qgCv��s���t�xaz�uaz�vaz�wazgCgC�y�z�}gC�{gC�|gCv�v��~v��v���v���v�v�����v�����kX��kX��kX��kX��kXv�kX����kX����m��mkX����mkXmm��m��m��m��m��mv�������������m����t�m��m����t�mt���v�t���t���t���t���t�v�������b�v�����b���b���b�v���v�b�������gQ��gQ��gQb���b���b�gQgQ������gQ����gCgQ��gQgCgC��gC��gC��gCv�����gC��gC��gC��gC��gC��gC��gCv�����gC����mgC����mgC����mgCmm��m��m��m��m��m��mv����X���
��������m����v���v���v���v���v�mv�����v���v���v���v���v�����w�v�w�w���w���w���w���w���w���w�v�����w�������w�������w�������w�������������������������v�����j�j�j�����������jj�j�j�	j�
j�j�jv���1��"�����w��w�j��w�jw�w���gQw��w��w�gQgQ�gQ�gQ�gQ�gQ� gQ�!gQv��#�*�$gCgQ�%gQ�&�'gCgQ�(gQ�)gQgC�+v��,v�gC�-gC�.�/v�gC�0gCv��2�D�3�8v��4v��5�6v��7v�v�v��9�>�:kXv��;�<kXv��=v�kXkX�?kX�@kX�AkX�BkX�CkXv��E�LkX�F�GgCkX�HkX�IkX�JkX�KkXgCgC�M�N�S�OgQ�PgQ�QgQgC�RgCgQgQ�TgQ�UgQ�VgQ�WgQv��Y���Z�u�[�g�\�`�]b�gQ�^�_b�gQb�b��ab��bb��cw��dw��ew��fw�v�w��h�i�o�jv��kv��lv�w��mw��nw�v�v��pv��qv��rv��sv��tv�v��v��v��w�xv��y�}�zm�{m�|mv�mm�~�v�mv�������ub��ubv���v�����ub��ubv�ub����ub����b�ub��ub��ub��ubb�b���b���b���b���b���b�v���������j��j��j��j��j��j��j��jv�������wj����wj��j����wjww��w��w��w��w��w��wv�����w������w��w��w��w��wu�u���u���u���u���u���u�v�����u������1u������1u������1u��1�1���1�������1����b��1���1b�b���b���b���b�v�����az����az��az��az��az��az��az��az��az��az��azazgQ���������az������������az����azazv���azaz��azv���az��az��v�azv�az��������������v�azv�azaz��azv���azaz��azv�������azazv�az����az��az����waz��azwwaz����	�w�����w�bw��4�
�p��az�
������az�az�az�azaz��az�azaz�azu��w����
�����jazw���-� ���!�'�"�&�#az�$�%w�j�jaz�(�+�)~�*azaz�az�,azwjj�/�t�0�Kaz�1�2�H�3�D�4�8�5��6�7mjgCw�9�>�:�=�;j�<jj�����?u��@�B��Ajaz�Cjaz��az�Ep�Fj�Gv�j�I�Ju��jaz�Laz�M�a�N�Ou�az�P�Y�Q�S�Raz�w�T�X�U�&�V�W�az�j�1w��Z�_�[�^j�\j�]��j��u��`azw�az�b�o�c�k�daz�e�h�f���gv���iv��1�jjw����l�maz��nw�azaz�p��q�r�az�saz��u�zaz�v�w�yaz�xv�azv�azaz�{�|�}azv��~�����az������az����azv�azv���v�az����azv�v�az��azaz��az����az��azaz��az��az��az��az����azaz����azaz@���O��������az����az��az����az����v�v�����������������v�v���v���azv���v�v�����v�azv�������v�v���v���v�az��v���v���v�v�az��v�����v���v���v���v�azv���v�����v�v�����v�v�az����az��az��az��azv�azv���������az��azv���az��������v�azaz������azv�v�az��v���v���v�v���v�����v���v�v���v�����v�v���v���@v�az����az��az��azaz��az����az��az��azaz����az��azv�az���.�������az��az����v�azv�������v�������v�v���v�azv���azv������v�v���azv��v�v���v���
v��az�az�az�az�	az�
az�az�azv���az�az�az�az�az�az�az�azv�az�az�az�az�az�az�az�azv���*� az�!�(az�"az�#�$�&az�%v�az�'v�azv�az�)v�az�+azaz�,az�-azv��/�L�0�Aaz�1�2�7�3azv��4�5az�6azv�az�8�=�9v�v��:�;�<azv�azv��>�?v�kX�@v�v�az�Bazaz�C�D�Jw��E�Fw��Gw��Hw��Iazw�az�Kw�azw��Mv�az�Nv�az�P�r�Q�Saz�R����T�m�U�X�Vaz�Wazazv�az�Yaz�Z�[�f�\�a�]�_az�^v�az�`azv�az�b�d�cazazv�az�eazv��g�jaz�h�iazv�azaz�kaz�lazv��nazaz�oaz�p�qaz�az�s���t�}az�uaz�vaz�waz�x�yazaz�z�{�|{�azwaz�~az�az��v�az��az������azv�������az��az��azazv�v�az��az��az��az����az����azaz����az��az��az��az��az��azw�az��azaz����az��az��az��az������������v�azazv�v���v�az��azazv����r�������}���V���I��������������az��az��w���v���������v�����v���v�v�azv�����v�v���azv�v���v�����v�azv�az��az����az����v�������v���v�����v�v�az��v�v���v�az��v�������v���v���v�v�az��v���������v�azazv���v�v�azaz����az��azaz��az����az��azaz��az����azgCaz�������az��az��az����v���v�����v�����v�v���azv�v�����v���v�v�az��azaz��az����az��az��az��az��az��azgCaz����az��az�azw�azaz�az�az�	az�
az�az��
azaz�v�az��;��4�����v�az��v�az�azv��v��v��v��v��v�v�az��)� v��!�'�"azaz�#az�$�%az�&v�azv��(v�azv��*�/v��+�,v��-�.v�azazv�v��0�1v��2v��3v�azv��5az�6v��7v��8v��9v�az�:azv�az�<w��=�>�C�?w��@w�az�A�Bw�azw��Dw��Ew�w��Fw��Gaz�Hazw�az�J�Kaz�Lazaz�M�N�Qaz�Oaz�Pazw�R�Taz�Sv�az�Uv�azv��W�s�X�[�Y�Zazv�v�az�\azaz�]�^�b�_azaz�`az�av�azaz�c�d�f�eazazv��gaz�haz�iazaz�jaz�kaz�l�maz�n�paz�oazw�q�razwwaz�t�uv�az�v�ww�azv��xw��yw��zw��{w��|azw�az�~���az��az��az������az��az����t�t�az��azt�����azt�az������v���azaz��v�az����������azv�v�v�az��azv�az��������������azaz��azv��������������������azv����jaz��azazwu���az��������w��azaz��az��az��az��az��az����azaz���az��azj��ju�����az�����j��j����&��v�jwUaz������az����������j��az������jw�jw���az��az�j��������w�jj��v�����w�az���������������������������j������v����2�������������������azv��������
���ww�����������������az��azw����az��az������az����������w�w��az�������az������v�������azazw�az�����
az��	��gC��gC���
w��jaz�azaz��az�azaz��az�az��az�azv��azv�az��!�az�azaz�az�az� v�az�"�+�#�'az�$�%az�&azgCazaz�(�)az�*az��wv��,�-w��.w�w��/w��0�1azw�az�3�K�4�;�5az�6azaz�7az�8az�9�:azaz�1�<az�=azaz�>�?�G�@�Av�az�Bv�az�Cv��D�Ev�v��Fv�az�Hv��Iv�v��Jv�az�L�a�M�Uaz�N�O�P�Z��Q�Razv�az�S�Tazazwu��V�W�]�X�Yv�w�Z�[v�w�\v�wv�az�^�_v��`wwv��b�iaz�c�1�d�e�g�fu�t�u�u��hv�u�w�j�k�n�l�mt�wwazw�oaz�paz�q�Kaz�s���t���u���v�~�wazaz�xaz�yaz�zaz�{az�|�}azmazaz�����w�v���azaz��������������u�az�1wq������b���t�����v���kX��������v�wv�������������������������w�����v��j������azaz��w�azj��w�az�w���azj�����������������az����jw���������������������az��w���w�az��w�w���azw����������������v�~��������������azw���az��az���j������������az��jw�����az�������jw���������������az������w��az����j��������������4j��w��w���������������w���w�w�az���
���
��az����az��w���az������j��w���������az���������w����az����������az��w������v����j�w���az��	�az�����~w��w�j��&�
������w�����az��L��7��&�����upv�t��az�Z��az�Zaz��%v���az�az�az� az�!az�"az�#az�$az�Kazb�wq�'�4�(�)t�az�*�3�+���,az�-azaz�.�/az�0az�1az�2azjazazw�5�6az�i��wq�8�A�9�<�:�;�waz�1���=�@�>�?v�az��azw�j�B�E�C�Dazv�jw�F�I�G�Hv�jjwF�J�KwF��azv��M�x�N�m�O�S�P�R�Qv�v�u�gC��T�V�Uv���wv��W���X�Y�f�Z�`�[v��\v��]v��^v��_v���v�v��a�bv�v��cv��dv��e��v��gv��hv�v��i�jv��kv�v��l��v��n�s�o�q�1�p�w�1�r�1b�w�t�uv��1�v�w�1�Z�1az�y���z�~v��{�|az�}azt�az�az����azw��������v�����wq������w�wt�������kXw�az������v�������az��az��az��az��az��az��azaz������az��az����azaz����az��az��azaz����az��azgCv�����az��������azv�az��azwmazw���4�����������������v�j�����j��az��jw�������������az��w����azj�������v�����u�j�"w�w���w����az������������az��az����������������������������������������������w�������azt���������w���j����az�w�����b��v���j��w�v���az��������az��v�az������azaz������az����azm����azmt�������az��az����t�v�waz��az������kXb�gQ��azgCazaz��az�az����az�az�az��
az����
az��az�	azw�az�az���
��az�w��w�azw��azw�az�azaz����w�w�az�azaz��az�az�az�azw�azaz� �!�#�"v�v�azaz�$�%�(�&azaz�'azb�az�)az�*az�+�,azaz�-�.az�/az�0az�1azaz�2�3azazw�5���6���7�O�8azaz�9�:�C�;�>�<azaz�=��az�?�A�@azwaz�Bazazw��Daz�Eaz�Fazaz�G�Hazaz�I�Jaz�Kazaz�L�Mazaz�Nazw�P�{�Q�c�R�[�S�Uaz�TwkX�V�Y�W�XkXazazwqaz�Zw�K�\�`�]�^�Kt��_�1azt��a�b�1�w�wgC�d�n�e�h�f�ggCazazkX�i�kkX�jwu��l�m�1�w�wkX�o�t�p�r�qw�kXv��sazv�v��u�x�v�wazkXwu��y�zw�wju��|���}���~��v��gCt���az�����waz��w��az��az��az��az��az��az��azv�az������������wj��b�����v�az���������������������������������K������������������������������������������kX��{�az����v�{�kX{�����������az����w�azwFazaz����wazv�����az������az�1�1�i��������gCb�b�azwq���ww�������az��azv�v�az��az����v���v�azaz��v�����v���az����az��azv�az��azv���ĩ���P�������E��az�����������az��������azaz��������v���azv�azv�az������az������w���w���w���az��w�azw�w�azazw���azaz����az��azaz����az��azgCaz��������������v���az��v�v������v���v��azv�azv��v�v��azv����v�v�az�	v�v��
v�az���
v�v���v�azv�azv����v�v���v��v�v�azv��v��v��v��v�az��'�az�az� az�!az�"az�#az�$azaz�%�&azazgC�(az�)�5�*w��+�2�,w��-w��.w�w��/�0w�w��1w�azw��3�4w�azw��6�<�7w��8�:w��9w�azw��;w�az�=�B�>�@w��?w�azw��Aw�az�Cw��Dw�azw��F�_az�Gaz�H�I�\�J�Y�K�Uv��L�M�Q�Nv�v��Ov��Pv�az�Rv�v��S�Tv�azv�v��V�Wv��Xv�v�azv��Z�[v�azv�az�]�^azmaz�`azaz�a�b���c†�dv�v��ev��f�gƒv��h�iv��jv��k�{�l�t�m�pj�n�oazjaz�q�razgCgC�sgCgQ�u�vgQb��w�y�xv�b�v�v��zw���|v��}€�~v���w�v�w‚v�wv�az„az…azgCv�‡v�ˆ‰v�Š��‹��Œ£˜Ž“v�v�v�‘’bv�baz”az•az–—azazv�™žšb��-›œ�M�M�Mv�ŸazgC ¡¢gCv�v�az¤¶¥°¦«az§¨ªaz©azv�az�-¬®�-­�-�M�M¯�Mb�±´b�²b�³b�gCgCµv�az·¼az¸az¹º�-»azazv�½�¾¿�-�M�Mb�b��b���gC��gCv�������kXaz��az��������gCazgC������v�gCv���ubv�ubkX��kX��kX��kX��kX��kX��kXv���v�az��������kX��kXazkXkX��kX��kX��kX��kX��kXv�az����azaz��az����azaz����az��az��az��azaz����az��azaz@������az��az�az�az����azaz��az�azaz��azaz��azaz�az�az��az�az@az�az�az�	az�
��v��v��
v����v��v��v��v�azv�v�azaz��v��v��v��v��v�v��azv��az��8�az� �2�!�-�"�*�#�%az�$azgCaz�&�'az�(azaz�)azgC�+az�,azgCaz�.az�/az�0azaz�1azv��3az�4az�5azaz�6az�7kXaz�9�Iaz�:�;az�<az�=az�>w��?�H�@w��A�F�B�Dw��Cw�azw��Ew�az�Gw�w�azw�azaz�Jaz�K�Laz�Mazaz�Naz�Ov�az�QÔ�R�j�S�^�Taz�Uazaz�V�W�Zv��X�Yv�v�azv��[v��\v��]v�azaz�_�`azaz�a�b�eaz�caz�d�azaz�f�gaz�haz�iazkXaz�k�w�l�t�maz�naz�oaz�pazaz�q�raz�sazmazaz�u�vazazv��xÀaz�y�zazaz�{az�|�}azaz�~�azaz�ÁÈÂÃv�azÄazazÅazÆazÇv�azazÉazÊËÏÌ�ÍazÎazaz�ÐÓazÑazÒazv��azÕ�hÖaz×�]Ø�Ù��ÚðÛazÜèazÝazÞßv�àäáv�âv�ãv�v�azv�åæv�v�çazv�éazazêëazìazazíazîazïaz�Kazñò�óazazôõüazö÷azøúazùv�azazûv�azazýazþÿaz�azv�az��az��azaz����az��az��az��azkXaz������������������v���v���v�������v���v�azv�v���v���v�azv�azv�����v�v���az����v�v���v�az��az��v���v�v���������v���v�v�az��azazv�����������az��azv�azaz��az��v�azaz������v�azv�az��"���az�az�az�az�az�az�az�az�az�az���azaz��az��
�azaz�az�	az�
�az�azjazaz�az�az�az�az�&�az�az���v�v���v��v��v�azv�az�az�az�az�az� �!azgCaz�#�6�$�-az�%az�&�'azaz�(az�)�*az�+azaz�,v�az�.az�/azaz�0�1az�2az�3az�4az�5azazv�az�7�8�K�9az�:az�;�F�<�Bv��=�>v�v��?v��@�Av�v�az�Cv�v��D�Ev�v�az�Gv�v��H�Iv��Jv�azv�az�L�Maz�N�Saz�O�Paz�Qaz�Razv�azaz�T�U�Z�V�Xaz�Wazv��YazgCaz�[az�\azazv��^�caz�_�`azaz�a�bazazgCaz�daz�eaz�f�gaz�[az�i�{�jaz�k�taz�laz�m�n�r�oaz�paz�qazazv��saz�az�uazaz�v�wazaz�xaz�y�zazazw��|ġ�}ĕaz�~�ĄĀw�āw�w�Ăăazw�aząazĆĊćazĈazazĉv�gQazċazČčazĎazazďazĐđazĒazēazazĔaz�KĖazėazĘazęazazĚazěazĜazĝazĞğazazĠv�azazĢģazazĤĥazĦazħazĨaz�?azĪɵī��Ĭţĭ��Į��įĶİazıazazIJijazĴazazĵjazķ��ĸazĹazĺazĻ��azļĽazľazazĿaz�az�azv���az��az��azaz��azv�����az����azaz��az����az��az��az��az��azazb�az��az��az��az��v�az��azaz��az��az����azaz����az��azaz��az��az��az����azaz����azw�az���az��������az��az��azaz��azwaz��az����azaz����azazv���az����azaz��azaz��azv�azaz��azaz��azkXaz��O��,��#���v�v��	v��
�v�v��v��
v��v�az��v��azv������v�v��v���v�v��azv��v��v�v��v�azv��� v�v��!v��"v�azv��$�%v��&v�v��'�(�*v��)azv�v��+azv��-�A�.�;�/�6v��0�1v�v��2�3v�v��4v��5v�azv��7v��8�9v��:v�azv��<�=v�az�>v��?v�v��@v�az�B�G�Cv�v��Dv��E�Fv�v�az�Hv��Iv�v��Jv��Kv��Lv��M�Nv�v�az�PŌ�Q�l�R�[az�S�Tazaz�U�Vazaz�Waz�X�Yaz�Zazazv��\�d�]az�^azaz�_az�`�aazaz�baz�cv�azaz�eaz�faz�gaz�h�iaz�jazaz�kv�az�m�|az�n�oaz�p�vaz�q�raz�saz�tazaz�uv�az�waz�xazaz�yaz�z�{azv�azaz�}�~Ņaz�azŀŁazazłŃazazńazv�azņŇazňazazʼnŊazŋazv�azōőazŎazŏŐazazjazŒazœŔazŕazŖazŗŝazŘazřazŚazśazŜu�azŞazşazŠazšazazŢv�azŤ�ťżazŦŧazŨŲũazŪazūazŬazŭazŮazůazŰazűazazb�ųazŴazazŵazŶŷazazŸŹazazźŻazazv�Ž��azžſ���azaz�az����az��az��azaz��az��w�az��az��azaz��az����az���az����az��az��az�������������az��������az������w�gCazb���azaz��v�az��az����az����azv�az��az��az�Kaz��az��azaz����azaz����azb�w���az�����az��az��azaz��az�waz�azaz�az�az�az�azw���	�azaz���az��azaz�v�azaz�az��az�az�Kw�az�
�azaz�az�
az��azaz�w�az�azaz����azaz�az��az�azgQazaz�az�azw���e��Qaz� �!�K�"�2�#v��$�1�%�+v��&�'az�(v��)v��*v�v�az�,v��-�/�.v�azv��0v�v�azv�az�3�G�4�6�5v�azv��7v��8v��9�@v��:�;v��<v��=v�v��>v��?v���Av�v��B�Cv�v��Dv��E�Fv��v��H�Jv��Iv�azv�az�Lv��Mv�v��N�O�P�v�azv�az�R�Saz�Taz�Uaz�Vaz�W�^�Xazaz�Yaz�Z�[az�\az�]azazv�az�_az�`az�aaz�baz�caz�dv�az�f��az�g�haz�iaz�jƧ�kƉ�l�{�maz�n�u�oaz�pazaz�qaz�r�sazaz�t�Kazaz�v�waz�xazaz�y�zazv�az�|az�}az�~Ƅ�azazƀazƁazƂƃazv�azƅazazƆazƇazƈazv�ƊƙƋƒƌazƍazazƎƏazƐazazƑv�azazƓazƔƕazazƖazƗƘazw�azƚazƛơƜazazƝazƞazƟazƠazw�ƢazƣazƤazƥazƦazv�azƨazƩƾƪƱƫazƬazazƭazƮazƯưazazv�ƲƸƳazazƴƵazazƶƷazazv�azƹazƺƻazazƼƽazv�azƿaz�az�az��az��az��az��azazv�������azaz��az����v���v���v�v�����v���v�v���azv���az��az��az��azaz��azv����j���(������
az���������az������az��az��az����azaz����azazv���az��az��az��az��azaz��az��az��wazaz�����az���az�az�azaz�az��azaz�wazaz�az��az�azaz��azazw�az�az�az�az�az�az�	�
azaz�az�azgQ�Ǒ�dž��.��az�az�az��az�azaz�az�azgC��!�az�az�azaz��az� azazt��"�(az�#az�$�%az�&azaz�'azkX�)azaz�*�+azaz�,�-azv�azaz�/�0�O�1�8�2v��3v�v��4v��5v��6v��7azv��9�J�:�Bv��;�<�?v��=v��>v�azv��@�Av�azv��Cv��D�G�Ev�v��Fazv�v��H�Iv�azv��Kv��Lv�v��Mv��Nazv��P�e�Q�Vv��Rv��Sv��Tv��Uv�az�W�\v��X�Yv��Zv�v��[azv��]�av��^v��_�`v�v�az�bv��cv�v��dv�az�f�}�g�p�h�lv��i�jv��kv�v�az�mv��nv��ov�v�az�q�y�r�w�s�u�tv�azv��vv�azv��xv�azv�v��z�{v�v��|azv��~ǂ�v�v�ǀǁv�v�azǃv�DŽv�v�Džv�azLJazLjazazljazNJNjazaznjazǍǎazazǏazǐ�azǒǮǓǟǔazǕazǖazv�ǗǘazǙǜazǚǛazw�azǝazǞazazw�ǠazǡazǢǨv�ǣv�Ǥv�ǥv�Ǧv�ǧazv�ǩazǪazǫazazǬǭazw�azǯDzǰazDZazazv�dzǵazǴw�azǶ�Ƿ��Ǹ��ǹ��Ǻw�ǻ�Ǽw�ǽ�Ǿǿw�azazw�azw�������w�w�azw�az��w�����������w�azw�azw���w�azw�w�������w�����w�azw���w�w���azw�����������az��������az��w�az��azw�azaz��az��azw�azw���������v�����v�azv�����v�������v�w�v�w���v�v���w�v�����������azv�v���w�v�v��v��v�w������azw�v�v��w�v�����w�v�w�v��v�w�v�az��az�az�az�	az�
azv�az��!�
az�az���azaz��azaz��azazkX�az�azaz�az�az�az�az��azaz��azaz� �1azaz�"az�#�$az�%azaz�&�'azazb�az�)�*�.az�+�,azaz�-az��/�X�0�K�1az�2�H�3v��4�A�5�:v��6az�7�8v��9v�azv��;v��<�>v��=v�azv��?az�@azv��B�Ev��C�Dv�v�azv��Fv��Gazv��Iv�v��Jazv�az�L�Maz�Naz�Oaz�Pazaz�Q�Razaz�Saz�T�Uazaz�Vaz�W�1az�Y�faz�Z�[�^az�\az�]waz�_az�`az�aazaz�baz�c�daz�eazw�az�gazaz�h�iazaz���k���lȬ�maz�n�raz�o�paz�qaz�
az�saz�tȠ�uȗ�vȆ�wȁv��x�yȀ�z�}az�{�|v�v�az�~az�azv�azazv�v�ȂazȃȄazȅazazv�ȇȎv�ȈȉȋȊazazv�azȌazȍv�azv�ȏȐȔȑazv�Ȓȓazazv�azȕȖazv�azv�Șv�șv�Țțv�ȜȟazȝȞazv�azv�azȡȪȢȨȣȧȤv�ȥazazȦazv�v�azȩv�v�azv�ȫv�azazȭȮ��azȯȰazȱazȲ�ȳ�ȴȽȵv�ȶȹazȷȸazazv�ȺazȻȼv�azazv�Ⱦazv�ȿv�azazv�azv�az����az��azaz����azkXaz������az�������������v���v���v�����v�����azv���v�v���v�azaz������v�az��v�v�������v�azv�az������v���az����������v���az��azv�az��az��az��azv�az������v���az��v�azv�����azv�v�azaz��������v�v�az�v��v�azv�az�az��v�azv�v�az��az���v�azv�azv���	�
azv�az�az�az�
��v�az��v�az�v�v�az�azaz��az�azazt��ɥ�� �azaz�az��azaz�azkXaz�!v��"�#ɕ�$�&�%v�azv��'v��(ɓ�)�\�*�E�+�5�,�0�-az�.az�/azv�azaz�1�2�3azv�v��4v�v��6gC�7�>�8�;�9�:v�mmw��<�=w�wcwc��?�B�@�A�v�v��1�C�D�1���?�F�L�G�J�Hb�gC�IgCb�b��Kb�kX�M�V�N�S�O�Q�Pw�kX�?�R�w���Taz��U�az�W�Xazw�Y�Zw���[�
���
�]�|�^�o�_�h�`�c�av�w��bw�v��d�f�ejgQj�ggQjgQ�i�lgQ�jgQ�kgQv�w*�mw*�nw*ub�p�u�q�rubw*�sb��tb�w*b��v�yb��wb��xjb�b��zj�{jb��}Ʉ�~ɂb��ɀb�Ɂjb�jb�Ƀb�{�ɅɏɆɊ{�ɇɈɉ�jj��ɋɍɌj��jjɎ��jjɐɑb�jɒjb�v�ɔazv�v�ɖɗv�ɘɝv�əv�ɚɛkXɜkXv�kXazɞazɟazɠazɡazɢazɣazɤazv�ɦazɧazazɨɩazɪazɫazazɬɭ{�ɮ{�ɯɴazɰɱ{�ɲ{�ɳ{�{�azaz{�ɶ�gɷ�ɸʳɹʠɺazɻʕɼazɽ�kɾ�ɿ�������������v�������v�v���v�azv�������v�azazv�v�����v�������v�azv�v���azv���������v�����v���v�azv���v�v���v���v�az��v���v�v�����v�azv���������v�������v�������azv�v�azv���v���azv�v�����v���v�v���azv������v�����v�v��v�az�v��v�v�az���v��v�v��v�az��v���v�azv�v��v��azv��az��az�	�
azaz�az��
azazv�az�az�az��az�azazv���;��.�� v��v����v���v�v�azv���v�azv��!�&�"v��#v�v��$v��%v�azv��'�(v��)�,�*�+v�azv�az�-v�azv��/�5v��0�1v��2v�v��3�4v�azv�v��6�7v��8v�v��9v��:azv��<�W�=�K�>�Cv��?�@v��Av�v��Bazv��Dv��Ev��F�I�G�Hv�azv�azv��Jazv��Lv��M�S�N�Qv��Ov��Pv�azv��Razv��Tv��Uv�v��Vazv��X�^�Yv�v��Zv��[�\v�v��]v�az�_�f�`v�v��a�b�d�cv�v�az�ev�v�azv��g�hv��iv�v��jv�az�lʅ�m�yaz�naz�oaz�p�q�uaz�raz�saz�tazv�az�v�waz�xazv�az�zazaz�{�|az�}ʁ�~az�azazʀazv�azʂazʃʄazv�azazʆʇʎazʈʉazʊazazʋazʌazʍazv�ʏazazʐazʑazʒazʓʔazv�azv�ʖʗv�v�ʘʙv�ʚv�v�ʛv�ʜv�ʝv�ʞʟv�azv�azʡʢazazʣʤʯʥv�ʦʨv�ʧv�azʩʭʪv�ʫv�v�ʬazv�ʮv�v�azv�ʰʱv�v�ʲazv�ʴazʵazazʶazʷʸʼʹazazʺazʻb�azazʽʾazʿazgCaz�az����az��az����az������az��v���azv�����az��azaz��azv���az��az��azaz����az��az��az��azv�az��azaz���������v�����azv�����v�����v���v�az����v�azaz��az��azv����v��������v�����������azaz��azv���azv�az�����azaz�azv�v�az�v�����v�azazv���v�az�azazv���v��azv��v��v�����v�az�	azaz�
v�azv��az�
�azv�az��$���v�v���azazv����v��v��v�v��v��azv��v��v��v�� �"v��!azv��#v�azv�v��%�&�'azv��(�fv��)�*�G�+�6�,�1�-az�.az�/az�0azv�azaz�2az�3az�4az�5�az�7�?�8�;w�9�:azwaz�<gCaz�=�>gCazgC�@�C�Aw�Bwww�Dj�Ej�Fjwj�H�Y�I�U�J�Q�K�Nj�L���Mjb�Ow��Pw�bj�Rw�w��Sw��Tw�gQ�Vaz�Waz�Xazw�az�Z�b�[w��\�_az�]az�^azw��`w��aw�w�w��cu��du��eu�w�u�azv��h���i˯�jˉ�kaz�laz�maz�n�~�oazaz�paz�q�raz�s�z�t�w�uaz�vazv�azaz�xaz�y�Kaz�{az�|az�}azazv��azˀazˁaz˂az˃az˄az˅azw�ˆˇazˈazw�azˊˬˋˎˌazazˍaz�ˏ˩ːazazˑ˒˚˓˗˔az˕v�v�˖v�azv�˘v�˙azv�v�˛az˜˝ˠaz˞az˟azv�azˡazˢazˣˤ˧az˥az˦azv�az˨azv�˪azaz˫az�[az˭azˮazv�˰��˱̠˲�&˳��az˴˵az˶az˷az˸�˹w�˺˾˻w�˼w�w�˽azw�w�˿�w�azw���w�������������v�w�w�v�����w���v�w�v�w���w���v�w�v����az������������w�������w���w���w�azw�����w���w���w�az����w���w�az��w�azw�v���v���v���v�����v���v�v�az�����v���v����������������v�azv�azv���v�az����v�v�azv�az��v��azv��v�azv���az�az��azaz�az�v�az������	�az�azazv��
��azazv�az�
v�az�azaz�az�v�az�az�az�az��azv�v�azaz�az�az���!az��az�az� az�Mazaz�"�#azaz�$az�%jaz�'�J�(az�)azaz�*�+�9v��,�-�1�.v��/v�v��0azv��2�5�3v�v��4azv��6v��7v��8v�v�az�:�E�;�@v��<�=v��>v��?v�azv�v��A�Bv�v��C�Dv�azv��Fv��Gv�v��Hv��Iv�az�K�z�Laz�M�a�N�U�Ov��Pv��Qv��Rv�v��Sv��Tv�az�Vv��Wv��Xv��Y�^�Z�\�[v�azv�v��]azv��_v��`azv�az�b�lv��c�d�h�ev��fv�v��gazv��iv��jv�v��kazv��m�r�nv�v��o�pv�v��qazv��sv��t�w�uv�v��vv�az�xv�v��yazv�az�{az�|�}az�~̘�̎̀̊́̇̂̅̃w�̄w�w�az̆w�azw�̈w�̉w�azw�̋w�w�̌̍w�azw�̏̓w�̐̑̒azw�w�az̖̔̕w�azw�̗w�w�az̙az̚az̛̞̜̝azw�azw�̟azw�az̡̦az̢aẓaz̤̥azv�azaz̧̨��̩��az̪̫̱az̬az̭az̮az̯̰azv�az̸̴̲̳̿v�̵v�̶v�̷v�v�az̹̼̺v�̻v�v�azv�̽v�̾v�azv���������v���v�azv���azv���v�v���v�az��az��az��az��azaz��az����azazv���azaz����az��azaz����azaz����azazv�����az����azw�azaz����az������w���w�w���az��w�azw���w���w���azw�����������az����azaz��az����az��az�Maz��az��azaz��w��w��w��w�w���w��w�azw��az��
w��w��w���w��w��w��	�
azw��w��w�azw��w��w�w��w�az�az���azaz��azaz�az�azb�az��azaz��azaz�azgC� �>�!�(�"azaz�#�$azaz�%az�&�'azazt�az�)�*azaz�+�,azaz�-�.azaz�/�0�7az�1az�2�3az�4az�5azaz�6jazaz�8az�9az�:�;azaz�<�=azjaz�?azaz�@�A�Jv��B�Cazaz�D�Eazaz�F�Gaz�Haz�Iazazv��K�M�Lazaz�[�Nazaz�Oaz�Pazj�R��S��T���U���V�~�W�h�X�_az�Yaz�Zaz�[v��\v��]�^azkXv��`az�aaz�b�cazv�v��d�ev�v��fv��gazv��i�q�jazaz�kaz�laz�m�nv�v��o�pv�v�az�r�z�saz�taz�uaz�v�yaz�waz�x�azaz�
�{azaz�|v��}azv��̀͑́͞az͂azaz̓̈́v�az͆ͅaz͇͐az͈͉azaz͊az͋͌azaz͍͎az͏azazv�v�az͕͓͒az͔v�azv�͖azaz͗az͙͚͘͜az͛azwUazaz͝azv�͟Ͳͧ͠az͡az͢azͣͤazazͥͦazv�azazͨazͩazͪͫ�ͬazͭͱazͮͯ�Ͱ��azaz�ͳ��ʹͻaz͵azͶͷazaz͸͹ͺazwcazb�ͼazazͽ;azazͿ�az�az��az��az�az��az��az��az��az��az��v���v���az��v���az��v�v�az�����azaz������u�az����az������jw�j�������������������az��������azaz����������������w���w���w���w���w���w���w���w���w�w�������w����������w������w�����az����^w��Ϋ�Ν��N��6���azaz��azaz�v���v��v�v���	�
azv�azv���-�
��azaz��az�azaz�az��azv�azaz�az���(��!���v��v��v�v�azv��� v�azv�v��"�#�%az�$azv��&�'azv�azv��)v��*v��+v��,v�v�azaz�.az�/az�0�1azaz�2az�3�4az�5azazwaz�7�8az�9�Faz�:�;az�<�A�=v��>v�v��?�@v�azv��Bv��Cv��Dv��Ev�v�azaz�Gaz�Haz�Iaz�J�Kazaz�L�Mazazw��O�j�P�`az�Qaz�Raz�S�T�Zaz�Uaz�V�Waz�Xaz�Yazv�az�[azaz�\az�]�^azaz�_azv�az�a�baz�caz�dazaz�e�fazaz�g�haz�iazazw��kΓaz�laz�m�n΀�ov��pv��q�{�r�u�sv�v��tv�az�v�x�wv�v�az�y�zazv�v�az�|v��}v��~�azv�azv�΁v�΂·v�΃v�΄΅v�v�Άv�azΈΌv�Ήv�Ίv�΋v�az΍v�v�ΎΏv�ΐv�Αv�v�Βazv�ΔazΕazΖazazΗazΘΙazΚazazΛazΜazv�Ξ΢ΟazΠazΡazazv�ΣΪv�ΤΥazv�ΦΧΨazv�v�Ωv�azv�azάϲέ�Oή�;ί�ΰazα��β��γ��δμειv�ζηv�v�θazv�v�κv�λv�azν�v�ξv�οv��azv�������v���v�azv�������v�azv�v���t�v�����������������v�az��v�azv���v�����v�azazv�v�����v�v���azv�����v���v�����v�azv�����v���v���azv���v�v���v�az��az��az��azaz��az��az��waz��������az��azaz��������azazv��azazv��azaz��azaz�az�v�az�v��v��v��v��v��v�azv�az����az����
�	azaz�
az�az�azv��az���azaz�v�az�az�azv�azaz�az�az�az�az�v�azaz���,v����%v�� �!�#v��"azv�v��$v�az�&�)�'v�v��(v�azv��*v��+azv��-�6�.�2v��/v��0v��1v�az�3v��4v��5v�azv�v��7v��8�9v��:v�v�az�<azaz�=az�>�?az�@v��Av��B�K�C�Hv��Dv��E�Fv��Gv�azv��Iv��Jv�azv��Lv��Mv�v��Nazv��Pϐ�Q�{�R�[az�S�Taz�Uaz�Vazaz�W�Xazaz�Y�ZazazgC�\�d�]az�^az�_azaz�`az�aaz�baz�cv�az�e�r�f�laz�gaz�h�iazaz�jaz�kaz�
�mazaz�n�oazaz�p�qazjaz�saz�taz�uaz�vaz�w�y�xazazv�az�zv�az�|az�}υaz�~�azπazρazςazazσazτazv�azφχazazψωazϊύazϋazόazv�ώazϏazv�azϑazϒϡϓazϔazϕϛϖazϗazϘazϙazazϚgCazϜazϝazϞazazϟϠaz�azϢϪϣazϤazϥazϦazϧazazϨϩazazv�azϫazϬϭazϮazϯazϰazazϱ�azϳϻϴazazϵ϶ϺϷv�v�ϸv�Ϲazv�v�azϼazϽazϾ��v�Ͽ�v�v����azazv�������v�v���v�az��v���v�v�gC���&�������az������az������az������az����azazv���azazv�����azv�v�az��az��az��az�
az��������az����az��az��azaz��w�az��az��az��azaz��v�az�����az��az��v�����az����v�azv�v��v��v�az��az���az����az�azaz�az��azaz�az�az��azwaz�azaz�az�	�
az�azaz�az�
az�az�azwazwaz�azv����azaz��az�azv�az�az�az��!�az�azaz�� wt�v�az�"�#az�$�%t�u��Zv��'Н�(�s�)�K�*�:�+�4az�,az�-�.�1az�/�0azazgC�2azaz�3gCaz�5az�6azaz�7az�8az�9gCazaz�;�<�C�=azaz�>�?�A�@azazgCaz�BgCaz�Daz�E�Haz�Faz�GgCazaz�I�JazazgC�L�h�M�a�N�[�O�W�P�S�Qaz�RazazgC�T�V�UazgCazazgCaz�X�Yazaz�Zv�azaz�\az�]az�^�_�`azgCazv�v��bv��c�d�fv��ev�gQ�gazgQazaz�iaz�j�k�o�lv��mv�az�nazv�v��p�qazv��rv�gC�taz�uЈ�vЂ�w�|az�xaz�yaz�z�{azgCaz�}az�~az�azЀЁgCazgCazЃazazЄЅІazv�Їazv�azЉЏЊazЋazazЌazЍazЎgCazazАazБВЕazГДgCazgCgCЖЗgCgCИgCЙКgCЛgCМgCgC~О��ПazРиСЫТu�УЩФХjazazЦЧШu�w��w�Ъjaz�Ьw�ЭбЮаjЯazjwbw�вгждеj�jazw�зju�йоazкazлazмazнazw�azп�������w�j���������azjaz���j�
����������w�������������v�az��w�az�������������az�az���������az�������w����������������������������az�����az���������az��w�����jaz�������az�������w�j����v��w���v���azj����w����az���j������!��az�����	�azv�azaz�
�azv�az�
azaz��azaz�az�t�az�� az�az�az�w���w����&�w�����w�w��w��w�w���az�"�Eaz�#�$��%�,az�&�'v�az�(az�)az�*az�+gCaz�-�:�.azv��/v��0�1�8v��2�3v��4v��5v��6v�v��7azv��9azv�azaz�;�<�?az�=�>gQazgQ�@v��A�CgQ�BgQaz�Dazv�az�F�p�G�e�H�R�Iazaz�J�K�O�L�Mwv��N��u����P�Qww����S�_�T��U�Z�V�W����Xaz�Y���jv��[�\�]u���^j�~�`v��a�c�baz�&az�daz���
�fazaz�g�haz�iaz�j�maz�k�lazv�az�nazaz�oazv��q�s�razv�az�t��u���v���w��x���yќ�zы�{уaz�|az�}az�~az�azрazсazтazv�azфazхazцazчazшazщazъazv�ьєazэazюazяazѐazёazђazѓazv�azѕazіazїazјazљazњazћazv�ѝѻўѳџѬѠѦazѡazѢѣw�azѤazѥazw�ѧazѨazѩwcw�Ѫw�ѫw�wcazѭazѮazѯazѰazѱazѲazv�azѴazѵazѶazѷazѸazѹazѺazv�Ѽ��azѽazѾazѿaz�az�az��az��azv�az��az��az��az��az��az��az��azv������������������gC��gC��gC��gCaz����gCazgCgC��gC��gC��gC��gC��gC��gCv�az��az��az��az��az��az��az��azv�����az��az��az��az��az��az��az��azv���v�az����v�az��az���v�azv�v��v�����gC�gCv���gCv�gCgC�gC�gC�gC�gC�gC�gCv���`��0���	�gC�
gC���gC�
�azgC�gC�gCazaz�az�az�az�azv�az���azgCgC�gC�gC�gC�gC�gCv�� �(gC�!gC�"gC�#gC�$gC�%gC�&gC�'gCv�gC�)gC�*gC�+gC�,gC�-gC�.gC�/gCv��1�B�2�:gC�3gC�4gC�5gC�6gC�7gC�8gC�9gCazgC�;gC�<gC�=gC�>gC�?gC�@gC�AgCaz�C�QgC�D�E�KgC�FgC�GgC�H�IkX�JkXgCkXkX�LkX�MkX�NkX�OkX�PkXaz�R�UkX�S�TazkXaz�V�Zaz�Waz�X�YgCazgCgC�[gC�\gC�]gC�^gC�_gCv��a���bҜ�c�}�d�m�e�k�faz�gaz�hazgC�i�jazgCaz�lv�azv��n�t�owv��pv��q�rwv��sv�ww�u�v�y�wb�w�xwb�b��zb��{b��|b�az�~ҋ�҅Ҁw�b�ҁb�҂҃w�҄w�b�w�҆az҇azw�҈҉azw�Ҋw�azҌҒazҍҎv�azҏazҐazґazv�v�ғҔҘҕv�Җv�җv�v�v�v�ҙv�Қv�қv�azҝҴҞҨҟңҠ�v�ҡҢ�v��ҤazҥazҦaz�ҧ�azҩҮazҪҫv�azҬҭv�azv�v�үv�Ұv�ұv�Ҳv�ҳv�azҵ�v�ҶҷҼҸazҹazҺazһazv�azazҽҾv�ҿv�az�azv�����v���������w�v�����w�v�w�w���w���w�az����az����w�az��az��azw�w���az��az��az��azv����H�����������������kXaz����kXazkX��az��az��azkX��kXaz����az����kXaz����kXazkX��azkX��kX��kXaz��������kX��kXaz��az��azkXaz�az��b��b�azb���b���j�jb�j��j��kXj�jkX�azkX��azkXaz�	��
���az��
kXazkX��kX�&���j�&jjw����az�azw��w�azaz�azv���-��%��"��!� �v���az�#w�az�$azw��&�)kX�'�(v�kXv��*�+v��-�-�,�-az�.�;�/�6�0�3�1v�az�2azv�az�4�5�az��7az�8�9�b�b��:b�az�<�D�=�A�>�@�?gQazgQgQaz�BgQaz�CazgQaz�E�-�Faz�Gazv��IӾ�J�~�K�f�L�Z�M�V�N�Qaz�O�Pubazub�R�T�Sazubaz�Uwcazwc�Waz�Xaz�Yazwcaz�[�b�\�_az�]�^v�azv��`az�aazv�azaz�caz�daz�eaz�
�g�r�h�n�i�k�jaz�
az�laz�M�m�Maz�oazaz�pw*�qw*az�s�yaz�t�u�w�v�-az�-az�xazw�z�|�{azwaz�}az�m�ӚӀӌӁӅӂӃ�-azazӄaz�1ӆӉӇӈwc�-az�-ӊӋw�az�-azӍӔӎӑӏӐb�wcazwcӒӓw�w�azw�ӕӗazӖgCazӘәazw�wcazӛӯӜӣӝӟazӞazv�Ӡӡazw�Ӣazb�azӤӪӥӧӦaz�-azӨөv�az{�azӫӭazӬv�azazӮb�azӰӺӱӷӲӴӳazaz�-ӵӶjazv�azӸazazӹv�azazӻazӼazӽazv�jӿ����w�j����w�j��jw�����w���������az��azw�az��az����azw�w�azaz��az��az��az��azv�������az��az��az��az����az����w�az��az��az��azw���������w���������az��az��������az����gC������gCgC��gC��gC��gC��gCaz��azv�azaz��az��������Mw���?��w*�"w�v�����w��a�wUazm�azv�az��]�ԁ��Faz��	�6az�
az�az��
�!�� az���az�az�az�az�az�az��azazt�az�az�az��azaz�az��azazt�azt��"�#t�az�$�-az�%az�&az�'az�(az�)az�*az�+�,azazt��.az�/azaz�0az�1az�2az�3az�4�5azazt�az�7az�8az�9�:az�;�Eaz�<az�=�>az�?azaz�@az�Aaz�Baz�C�Dazazt�t�azaz�G�HԀ�I�}�J�h�K�Z�L�S�M�P�N�O��u�v�t��Q�RwgQu�m�T�W�U�Vu��v�v��X�Yu�w�wqu��[�b�\�_�]�^az�1�Mu��`�amu��"u��c�f�d�e��u�m�u��gmv��i�x�j�q�k�n�l�m�u�wU�?�o�pv�u�v�u��r�u�s�tm�wu�wq�v�wu�v�mw8�yw�zw�{�|v�w8wv��~az�azwv�wqazԂ�ԃ��Ԅ��ԅ԰ԆԠԇԓԈԍԉԋԊ�ikXw�azԌazv�ԎԑԏԐgCt��v�v�Ԓ�MwԔԛԕԘԖԗj�w*�ԙԚ�"v�v�w�ԜԞԝv�wUazv�ԟgCkXԡԨԢԦԣ��Ԥԥ�?wwU�?azԧ�wԩԬԪԫ�MwUwv�ԭԯԮw�ubgQazkXԱԽԲԸԳԵԴgQgC{�ԶԷ�"t�w�jԹԻazԺww*azԼkXwԾ��Կ�gQ���?����wt��wU��������wgQgQv�gQ����v�gQaz��gQ����������������m��azgQgQ��gQaz����az��azgC����gCazazw�������������w�azazv�����v�wwv���gQ����v�kXkXgQ��gQ��gQ��gQ����gQwwgQ������������w��ww����wwt���wazt�az���az����wv�azt�t�wt�az�azaz��azaz��azaz�azw��>�az�	�$�
u������
���azmu�u��az�1v�����azb�v����az��az��az���az��azw��!�� t�w��w8�"�#mu�wqaz�%�3�&�.�'�*���(�)az�+�,�-��azaz���/�0�����1-�2-az�4�:�5�7w�6az�1�8�9v�wqaz�w�;�<v�w�=azu����?�Du��@�A�Bu�azu��C�j�E�X�F�Q�G�K�H��Iw�j�Ju����L�Nu��M�j�OwU�Pwc�az��R�S�U��T����V���Wj�w��Y��Z�[�j�\�u���^�gaz�_�`�d�aaz�bazv��cazv��eaz�fw���az�h՘�iՕ�j�}�k�w��l�m�nu�j�o�r�p��qaz�az���s�t�v�uazjw�w�az��x�yu��z�|��{��azju��~Մaz��ՀՁ�4Ղu�jՃw�jՅՍՆՌ��ՇՈՊ�Չazu���Ջ��u�azt�ՎՒՏ�Րw�Ցj�w�ՓՔ��u�w�azՖ՗az�azՙջ՚w*՛զ՜w*՝բ՞ա՟w��&ՠjaz��j�գդjեazw��էկըլazթժjիw�w�jazխծazjw�հոձմղazjճw�azյն~��շu���azչjպ���ռ��ս��վ��տaz�azaz�azw���j������j�����w�w�������w����������������jw��
�������az��jw�azaz��w�j��������az<��jv�u���������v��������������w�jw�jjaz������az�����azazj���j��j��w���az�������������azpj��jw�t��J����w����փ��{��H��	���az�az�v��v��v�v��v�j�azaz�az��w�v�az�
�/�az����
������j���az�j����u��az�az������w��K��azu�u���#az� ��!az�"���$�*�%�(az�&�'�wj��)�j��+�,�.w��-j�w�azaz�0�1X�2�9�3��4�6�5azj���7�8azw�azw��:�C�;az�<�@�=�>azw��?azw�az�Aaz�Bazazw��D�F�Eazj���Gv�az�I�Qaz�J�Kazaz�L�Mazaz�N�Oazaz�Paz�?az�Raz�Saz�T�U�m�V�b�W�\�X�Z�Ywazv��[wv�kX�]�`�^�_wv�azt��aazv�w�c�h�d�g�e�fwazwazazw�i�kaz�jwaz�lazwaz�naz�o�uw�p�q�sw�rwaz�tazwazaz�v�w�yaz�xazw�zwazw�|ր�}az�~azaz�az�azցazւ�azք֟օazֆ֜ևazֈaz։az֊֚֋֒az֌֍��֎֐j֏w�azaz֑��az֓֕az֔w�az֖֘֗w�azw֙azw�j֛az��azaz֝֞azXaz֠�֡azֽ֢֣azֲ֤֥azaz֦֧֪֯֨֩azgQgC֭֫֬mv�m֮azwazְazazֱgCazֳִֹazֵazֶazazַazָv�azv�ֺֻazּazv�az־azazֿ����gCb�������w��w��w��������w��w��w��w��w��wwb���ww��w��w����w��wwb�w����w��w��w��w��ww����w��w��wb�w����b�����b���b���b�b���b���b�����b���b�b�����b�b���gCb���������b���b���b�b����b�b��b���b��b��b�b��"b��b��b���b��b�b��b��b��b��b��gb�b���b��	b��
b�b���b��
b��b�b��b��b��azb���7az��az��&���az�az�az�az�azjaz��jaz� �"�!azjaz�#�%���$��azazj�'�(��az�)�2�*j�+jj�,j�-v��.�/az�0az�1azjaz�3�4azj�5jj�6azj�8׌�9�g�:�K�;�@�<��=��>v��
�?j�1�A�G�B�Cj��Dw��Ej�Fjj���Haz���Ij�Jj��L�X�M�R��N�O�Qj�Pj�Z��w�az�S�T�U�az��V�Wazazw�Y�^�Zazaz�[�\j��]�~�_az�`�d�a�cj�bw�j�j�ew��f�u��h�v��i�j�z�k�s�l�p�m�ow��nw��w�u��qw��rw�azw�t�w�u��v���jaz�xaz�yaz�v��{�|�}azjj�~��j��׀�ׁׂ׆az׃ׄazazׅu�azazׇ׈׉azu�׊׋u�azazu�׍ס׎ן׏זאazבד��גjazהazו�w�azw�חטךי��~כל�jazםjמ��w�נu�azu�ע��ף׸פת��ץצק�"���רש���j׫׮az׬az׭azgCׯ׳װazױײgCgQgQaz״׵azgC׶׷gCgQgCaz׹��׺׼t�׻�j׽�׾�׿j�j�������w������������az�������4jj��������azaz�az������������'��E���H ��E���@&��H ��A��A��A��A��A��A��AAAeA����E�A��A����@&A��H:F���������A��A��AA����AA����A��A��AA����AA��A���AA�A��A�AA{A�A�A��AA��A�AA��AA��A�A��A�A�	A�
A��AA�
A�@A�AA�A�A��A�A�A@A����%��������8�az�az��0� �+�!az�"az�#�%az�$azgC�&�(�'v�gCazaz�)az�*azv�az�,�-az�.azaz�/v�az�1az�2azaz�3az�4az�5az�6�7azv�az�9���:���;�(�<��=ؽ�>ػ�?�@u�az�Aر�B�vaz�C�Daz�Eaz�F�d�G�V�H�K�I�JazgQv�az�L�Oaz�Maz�Nww��P�S�Q�RazgCu�t��T�Uju�gCv��W�^�X�[�Y�ZazgCu�az�\�]ju�gCv��_�a�`azazt��b�cwv�kXb��e�r�f�l�g�i�hv�u�m�j�kmazazv��m�o�nazv�v��p�qazv�w�m�saz�tazv��uwu��wؓ�x؆�y��z�|m�{jv��}�~v�u�azj؀؃؁؂wazazkX؄؅kXv�v�v�؇؍؈؋؉؊v�azv�az،gCt�u�؎ؑ؏ؐazgQu�azazؒazv�ؔآؕ؜ؘؙؖؗv�mv�mؚ؛v�azwaz؝؟؞w�wb�ؠءb�ububjأتؤاإئazu�u�w8بة��wUw�v�ثخجحwt�v�v�دذazw���w*زazسazشazصazضعطظv�u�azu�غazv�azazؼt�azؾ�ؿaz����kX��azaz������mazmgQ������������������az��az����������������azgQwaz����kXv�jazaz��az��v�v�������������v�v�t�azu�az��������azmmgC��azgCazv�az����azmmv���������v�v�t�j����azgC��az��az��az��azv�az�������v�azv�m��wv�gCm�az��azgCgQ�t�azaz�az�gQv��az���gQ�gQgQ��	gQgQ�
�gQ�gQ�
gQ�gQ�gQgQ�gQ��gQgQ�gQ�gQgC��&��%v���v�v���v��v�v���v��v�� v�v��!v��"v��#v��$w*v�v�v�az�'v�az�)�>A�*�+az�,�;�-v�gQ�.gQ�/�0gQ�1gQ�2gQ�3gQgQ�4�5gQ�6gQgQ�7�8gQgQ�9gQ�:gQw�<az�=azv�az�?ٕaz�@az�A�B�m�C�T�Daz�E�Iaz�F�G�Hazv�waz�Jaz�Kaz�Laz�Maz�N�Q�O�Pazwv�az�R�Sazv�az�K�U�f�V�`�W�^�Xaz�Y�\�Zw�[wazw�]wwaz�_azazv�az�aaz�bv��caz�d�eazwv��gazaz�haz�i�jaz�kazaz�lazv��n�t�oaz�p�qwaz�raz�sazazw�uٍ�v�|�w�zaz�x�yazwv��{azazv��}قaz�~�azazـفazwv�كazلٌمهنazv�azويazىazv�ً�Kwazazwazَazُwِّْٔazazٓ�Kazv�azٖ٧azٗaz٘ٙ٥ٚٛu�azٜ٢ٝ٠ٟٞazv�gQv�١azwcw�az٣az٤azt�٦azazt�az٨٩ٮ٪٬kX٫kXazm٭kXv�ٯazٰ��v�ٱٲٵٳٴazgCgCv�ٶ��ٷٽٸټٹٻv�ٺv�azv�azazjپ�kXٿ�azazu�u���gQ��gQaz������az����gQt�azv���az����azu���u�u�az��������v���wm����mu�u�gC����v���gCu�v�kX���,������������������������������gCwcazgC����gCkXkXw�����v�v�u�v�u���kXaz����az������azv�v�azaz��v�v��������azwazmu�gC��gC�gCv�v�u�������
��az���azv�azt����azmaz�	azv�az�azaz�az�
azgQ��v�v�m�kX�maz�azazw��az�v���v��azv�az��az�azv�az�� �$v��!az�"az�#gQv��%�)�&�(�'v�wt�mu��*az�+azu�gC�-�@�.�4az�/�0�2�1azv�azkX�3v�az�5�5�6�w�7az�8az�9�?�:az�;�=az�<azwaz�>azb��@�[�A�W�B�N�C�G�D�Eazv��Fazazv��H�K�I�Jv�gCgQaz�L�Mv�gCv�v��O�T�P�S�Qaz�Rv�mazazgQ�Uaz�Vazv�w�Xaz�Y�ZazgQgQaz�\�g�]�b�^�_maz�`�aazv�v�az�c�du�az�e�fmazazv��h�o�i�l�j�kv�azazgC�m�ngCjjgC�p�sm�q�razwaz�tv��u�vb�azazm�xaz�yt��z���{ڵ�|ڢ�}ڒ�~ڌ�چڀڃځڂv�v�azv�ڄڅv�v�v�gCڇڊڈډazv�gCv�wڋazb�ڍڐڎazazڏazb�azڑv�azړڟڔڙڕږgQmڗژazmazgCښڜڛazgCv�ڝڞazmv�kXڠڡazgCv�azڣڱڤڪڥazڦڨkXڧkXazکazv�azګڮڬڭgQjv�azگt�ڰv�azjڲazڳڴt�gQgQazڶ��ڷ��ڸھڹںazkXڻڽkXڼazv�kXazڿ����v�azt�azu���v�az������������gQv�v�t�����mazazu�����azgCv�az����������az����b�mv�az��������azgQjv���gCv�gQ����������mv�az����azmv���gQaz��������azgCgCaz��azv�v��������������az��az��gQj��������v�azazj��jazgQv������az�azazgQ��gQt�azt��kX��azb�mv�����
az���	az�v�azazv��v���
azmmaz���gQ�gCmaz��az�v�v���azb�azv���(��"��az���v�azv�v�� v�az�!gCaz�#�&�$�%gCazt�w�'azazm�)�2�*�-�+azv��,v�v��.�0�/gQjv�az�1gCv��3gQ�4azv�az�6�?�7az�8�<az�9�:�;azv�azgQ�=az�>azv�azazgQ�A���B۩�C۔�D�d�E�S�F�L�Gaz�H�J�IazazwUaz�KwUaz�M�P�Naz�OazgQw�az�Qaz�Rb�az�T�W�Uaz�Vazazv��X�^�Y�[�Zv�w�gQ�\�]v�t�ww��_�b�`�aw�w�v�gQ�cmwt��eۀ�f�t�g�n�h�k�i�jv�wcw�gQ�l�mwcw�gQv��o�r�p�qw�wcv�w�kX�sgCgQ�u�{�v�xb��wwt��y�zv�v�w�v��|��}�~v�v�w�gQwazہۍۂۆۃۄjv�ۅu�v�v�ۇۊۈۉt�v�v�v�ۋیazububgCێۑۏېgCw8v�v�ےۓv�www�ەۚۖazۗazۘazۙazkXazazۛۜ۟az۝az۞azv�ۣ۠ۡۢt�v�v�u�ۤۦmۥb�t�ۧۨwt�v�w۪��۫۳۬azazۭۮazۯ۰azv�۱۲azjjaz۴az۵��۶ۼ۷ۺ۸۹v�gQwgCۻ��gCkX۽ۿ۾v���v���kXb�b�v�������������v�w�w�wU����w8wwv���az��azv�az������az��az������������wt�v�u�u�v�����mv�����w�t�v�az��azaz����azaz������azububaz���a���4�������az��������az��azv�azaz��az��az��azv���az��az�����az���azv�azv��azazv�����	������wcv�wcw���gQwckXgQ����w�gQgQwc��kXgQgQkX�
���
kX�kXgC��gCv�v��gQaz������gQazgQaz�u�gQaz���gCgQaz��wcazwcaz�az� �/�!�(�"�%�#�$wcazwcaz�&�'v�azwcaz�)�,�*�+gCazkXaz�-�.kXazkXaz�0az�1az�2�3w�azw�azaz�5az�6�7�R�8�K�9�G�:�=�;�<v�azmaz�>�?t�az�@az�Av�v��B�Cv�v��Dv��Ev��Fazv��H�J�Iv�u�azv�t��L�O�M�Nt�v�v�v��P�Qv�u�u�kX�S�Z�T�W�U�Vmv�v�v��X�Yv�azv�v��[�_�\�]azt��^t�waz�`v�waz�bܺ�c܆�d�w�e�n�f�k�g�i�hazazwUaz�jwUazaz�l�mazv�az�o�raz�paz�qazv��s�u�tazv�az�vazv�azaz�x�y܀�z�}�{�|azww�gQ�~�v�v�t�w܁܃w�܂w�v�܄܅gQwt�m܇ܤ܈ܖ܉ܐ܊܍܋܌v�wcw�gQ܎܏wcw�gQv�ܑܔܒܓw�wcv�w�kXܕgCb�ܗܝܘܛܙܚgCwt�v�ܜv�v�w�ܞܡܟܠv�w�gQb�ܢܣwgQw�v�ܥܳܦܭܧܪܨܩmazazjܫܬjv�v�v�ܮܱܯܰv�u�u�t�v�ܲv�azܴܷܵܶubgCw8v�ܸܹv�www�ܻ�ܼazܽazܾazܿazkXazaz�����az��az��azv���������t�v�v�u�����m��v�t�����wt�v�w����������g������ݾ��az��ݱ���N���������������az��az��az��az��azt���������t���t���t�az��v�azv���az��azv�az��az����waz��az��azw�az������az��az���azaz�azm����az�azv��azv�azaz��az�azjaz��	az��az��az��gQazgQgQaz�
�az��az�
azazj��azt�t�az��4��&�����azaz��azgQaz��azv��azv��v�az�� azw�!�#�"v�wv�v��$�%azv�az�'�.az�(�)�,az�*�+azw�azaz�-azgQ�/azaz�0az�1�2�3v�azazt��5�C�6�@�7�;�8az�9azj�:jaz�<azaz�=az�>az�?v�az�Aazaz�Bv�az�D�K�E�Haz�Faz�Gwcazaz�I�Jwazw�Laz�Mazwaz�O݃�P�j�Q�_�R�Uaz�Saz�Tazwc�V�Y�Waz�Xazwcaz�Z�]�[az�\azazw�az�^azv��`�e�a�bv�az�c�dazv�v�azaz�faz�g�hazaz�iazw��k�saz�l�m�oaz�nazgC�pgC�qgCgC�rgCaz�t�{�u�xaz�vaz�wazgCgC�y�zgCazgCaz�|�}�~azv�v��݂݀݁azv�azv�az݄ݠ݅ݙ݆ݑ݇݋az݈݉az݊azazw݌ݎݍt�wazt�ݏݐazt�azazݒݓݗazݔazݕݖw�azw�w�ݘw�azazݚݛazݜݟݝv�ݞv�azv�azv�ݡݪݢazݣݨݤazݥݧݦv�mazv�azݩazv�azݫazݬazݭݮazv�azݯazݰv�azݲazݳazݴazݵazݶazݷݹݸazv�azݺazݻazazݼݽazwcazݿaz����������az��az��az����az��jazj��azaz����azazv�az��az��az����azaz��v���v�az��az��azaz����az��azaz����azv�azaz�����@������n���,���������v�����u�����u�u�v�u�v���������u���u���u���v�u�����v�u���v���v�t���t�u���v���v���v�v�v�v�v��v��v��t�u�������v������u�v�v�u��u�t�v��	�
�
�v�u��t�u�t��v�v�u���t��t��t�v���v�u�v��v��v�v���#�v���v�v���!v���� v�v�t�v�v��"v�v��$v��%�)v��&�'�(v�v�v�v��*v��+v�v�t��-�J�.�?�/�9�0�6t��1�2�3t�v��4�5v�u�v�u��7u�u��8u�v��:�>�;�<u�v�v��=t�v�t�v��@�E�A�Dv��Bv��Ct�v�v�t��F�Gv�t��Hv��Iv�t�v��K�X�L�Qv��M�Nv��Ov��Pv�v�v��Rw8�S�Vv��T�Uv�v�w8�Ww8v�w8�Y�e�Z�`�[�^w8�\w8�]w8v��_u�t�u�u��a�bv��c�du�v�v�v��f�k�g�hv�v�v��iv��jt�u��l�mv�t�u�v��oު�pޏ�qރ�r�z�s�v�tv�v��uv�v�v��wt��xv��yv�u��{ށ�|�}v�v��~u��ހv�u�u�v�ނv�u�v�ބމޅވކv�v�އv�v�v�v�ފގދv�ތލv�v�v�v�v�v�ސޘv�ޑޒޖv�ޓޔv�v�ޕv�v�v�ޗv�v�ޙޠޚޞޛv�v�ޜޝv�v�t�v�ޟv�t�ޡޥv�ޢt�ޣޤv�t�v�ަާv�v�v�ިީv�v�v�ޫ��ެ޵ޭްޮv�ޯv�v�v�ޱ޴v�޲޳u�v�v�v�u�޶޼޷޹u�޸v�v�v�޺޻v�v�t�޽��t�޾v�޿v��v��v�v�����v�v�����v�������v�v�v�u�v�u�����������������u���u���u���u�v�u�����u�u���v�u���v�����u�����u�u�v�v���v�v�����v�����u�v�����u�v�v�������v���v�u�v�v���v���v���v�u�������u���u���u���u�v�u����u�������u��v�u�v�u��u�v������u�v��v�v��v�u�v�v���v�v�v������Z��0��v���	��
v�v���v��
v�v�v�v�v��� �����v�v��v�v�v���v�v�v�����v���u�v�u�u��u�v�v�u��!�'u��"�#�%u��$u�v�v��&v�u��(�-�)�,u��*u��+u�v�v�v�v��.�/v�v�u��1�<�2v��3�8�4v��5v�v��6v��7v�v��9v��:v�v��;v�v��=�O�>�G�?�E�@v��A�C�Bv�v�v��Dv�v�v�v��Fv�v��H�K�Iv�v��Jv�v�v��L�M�Nv�v�v�v��P�T�Qv��Rv�v��Sv�v��U�Vv�v�v��Wv��Xv��Yv�v��[ߘ�\߂�]�o�^u��_�h�`�d�av��b�cv�v�v�v��e�gv��fv�v�v�v��i�l�jv�v��kv�u�v��m�nu�v�u��p�y�q�uu��ru��su��tu�w8�vu�w8�w�xu�w8u��z�~�{v��|v�u��}u�v��v�v�߀v�߁v�v�߃ߎ߄߉v�߅v�߆v�߇v�߈v�v�v�ߊߋv�ߌv�v�ߍv�v�ߏv�ߐߔߑv�v�ߒv�ߓv�v�v�ߕߖv�v�ߗv�v�ߙߴߚߥߛߠߜu�ߝu�v�ߞߟu�v�u�ߡv�ߢv�ߣv�u�ߤu�v�ߦ߯ߧ߫ߨv�ߩv�ߪv�v�v�߬v�v�߭߮v�v�v�v�߰v�߱v�߲߳v�v�v�ߵ��߶߾v�߷߸߼߹߻ߺv�v�v�v�v�߽u�v�u�߿v��v��v�u���u�v�����v���v�����v�v�v�v���v�v����#������������������v���v���v�v�v�����v�����v�v�v�v���v���v�u�u���u�v���������������u�v�u�u�v���v�v���v�v�v�������v�v���v���v�v�v������������v�v���v�����v�v�v���v�v�v���t�v���t�v�t�����t���v��v�t�v������u�v��v�u�u���v�u�v��v�v��	v��
v�v����
��v��v��v�v�v���v���v�v�v�v��v��v�v��� ����v�u�u�v�v��v��v�v��!u�v��"v����$�;�%�8�&�7�'�-�(�*u��)u�v�u��+�,v�u�w�.az�/�4�0�2w�1v�t��3��t������5���6��azb�v��9�:gCv�v�kX�<�>�=v�v�v�v��?azv��A��B��C�Jm�Daz�E�Fazaz�G�Haz�Iazv�az�K�{�L�[�M�U�N�Q�OgQb��Pb�gQ�RgQ�S�TgQv�gQkX�V�Xv��Wv�ubv��Y�Zb�ubb��\�q�]�g�^�ab��_�`b�v�b��b�e�c�dgQgCgCgQ�fgCgCkX�h�mb��i�j�kb�gCb��lgCw�b��n�o�pgQb�b�gQ�r�vb��sgC�t�ub�gQkXb��w�x�zgC�ygCv�gQv��|��}��~�v��gC�gC�gCkXgC��ubkX�ubgQ���v��gCgQ�gCub��kXgQ��ubb�ubb�����b�ubb���b�b��gQb��gQ�v�b��v�gQ���az��az���az��v�azv�az��v�azv��az�azv�az�azaz��azaz�az��azazw���3������������gCgQ��gQgQgCgQ���gCgQv�gQ��gQv�gQgC������v���v���v���v�gCw���������w�ub��ubw���ubgC��ubgC��ubw���������������gQ������gQ��gQw�kXgQv�v�������gC��gCwwgC��������w�gC����gQub��gQubgQ��ubub����kX��kXkXw����gQ����kXgQ��kXgC����gQ������gQkXv�gQkXv�������gQ��v���gQwUv��wUgC��wU�wUgCwUkX�����gC�gCkXgC�gCgC�	gC�
kXgC���
��gCgC�b�kX��gCkXv�kXw�kX��"����v�kX���kXw�w�gCkXgC�gCgC�� gC�!wgCwU�#�,�$�*�%�(�&gCw��'gCkXkX�)kXv�v��+kXgQ�-�2gQ�.�/�1gQ�0v�b�w�gQv�w��4�M�5�=�6azaz�7�8�<az�9�:v��;v�azv�v�az�>�Daz�?az�@az�A�Baz�Cazazv��Eaz�F�J�G�Hazv��Iazv�azaz�Kaz�Lazv��N�_�O�X�Paz�Qazaz�Raz�S�T�Vaz�Uazv��Wazv�azaz�Y�Zw��[w��\w�az�]�^w�azw��`az�aazw��b�cazw��dw��ew��fw�az�h�W�i��j���k���l��m�y�n�xw�o�p�t�q�rt�w��sv�w�v��u�w�vmv�v�mu�waz�z�{v�v��|t��}��~v��v�u�v���t��t�u���u�v�azw����t������wt��azt�az��v��v�jjazw��v�����v��v��v�azaz�az��v�azv����azv��v�az�v�az��v�azv���v�������azv��v��v�az�v�az�az�azv�wt�����w�w��w�w�wwaz���mazm�azmaz����v���azv�azv���v���ju���az��az����������������u���u�w8w8v�������w�v�w�������v���������v�t�����t���v�u�����u�u���azu�az��az��az����u�m����mv�v�az��az��������az��u���u�az������mm��m��maz��v�azv���azv����gC�gC�azaz�az��azazgC��S��8�����gQ�w�ub���v��v�gQgQw��gQ��	��
��gQgCgQv��
v�az�az�azkXaz�wc����az�azb�b��b�w�w���ubw�ubv����-wc��w�� �%�!w�az�"�#w�az�$azw��&�)�'azw��(w�azaz�*az�+�,w�azw��.gQ�/�4�0�2�1b�wb�kX�3kXgC�5�6gCw��7azw�az�9�@�:�=�;�<wcw�v�w��>�?gQwcgQkX�A�Cv��BgQaz�D�P�Eaz�F�K�G�I�HwUubwUv��Jv�w*�L�Mw*az�N�OazgCkXazgQ�Q�RwcgQv��Taz�Uaz�Vv�v�kX�X�k�Yaz�Zaz�[�g�\�_�]�^azjjaz�`az�aaz�b�dj�cjw�eaz�fazwaz�haz�i�jjazaz��laz�m�}�n���o���p��q��raz�s��t�{�u�x�v�wgQv�wcw��y�zgQv�wcw��|��}�~gQv�wcw���gQv�wcw�������gQv�wcw���gQv�wcw�����gQv�wcw���gQv�wcw���az�az�az���gQv�v�w��az������gQv�v�w���gQv�v�w�����gQv�v�w���gQv�v�w�az��������az��azazv�����wcazazgQ��wcv�w�gQ������wcv�w�gQaz�w�az���azazv����wcv�w�gQ��az��az��������wcv�w�gQ����wcv�w�gQ����az��az������������������gQw�wcv�����gQw�wcv���������gQw�wcv�����gQw�wcv���az��az����gQw�wcv�az������az����az��az��azazt�az��az��az������v�w�gQwc���c���C�������������v�w�gQwc��v�w�gQwc����v�w�gQwc��v�w�gQwc��
��
��	v�w�gQwc��v�w�gQwc����v�w�gQwc��v�w�gQwc�az�az�az��v�w�gQwc��+az���$��!�� wcgQv�w��"�#wcgQv�w��%�(�&�'wcgQv�w��)�*wcgQv�w��,�;�-�4�.�1�/�0wcgQv�w��2�3wcgQv�w��5�8�6�7wcgQv�w��9�:wcgQv�w��<az�=�@�>�?wcgQv�w��A�BwcgQv�w�az�D�E�W�F�Laz�G�H�Jaz�IwcgQaz�KwcgQ�M�R�N�Paz�OwcgQaz�QwcgQ�S�Uaz�TwcgQaz�VwcgQ�Xaz�Y�^�Z�\az�[wcgQaz�]wcgQ�_�aaz�`wcgQaz�bwcgQaz�d�e�{az�f�g�v�h�o�i�l�j�kw�v�wcgQ�m�nw�v�wcgQ�p�s�q�rw�v�wcgQ�t�uw�v�wcgQ�waz�xaz�y�zw�v�wcgQaz�|azm�~az�az�az�az�azmaz��x����az�az�az��������az�az���az�az�v�az�az�azazv����j�az�az�azmazt�w����v�azazv��v�gCaz������azkXjwU��az����kXubv�w���w�wgCw���������v�w�ubv���kXv�v�az����b�v�t�v��azb�m������az�ubw����v�t�v�az��az����u�v�v�azaz�����0�����������������������kXw�w�����w�w���w�����w���w�w�����w�azw�t���v�wc��������w�kXt�w8����w8wcw�v�����������v�gQv�����v�w�gQw��������wgQw�v�v�v�������w��w���w8m��mv��u�v�u�����v��v�u�u�v����u�v�u�m�mv�������
��azv�v��	azwU��
�azv�azaz�wUkX�az���azazv�az�v�az��!��az�az�azw�����v�gQwm�� mazazj�"�)�#�&�$�%jv�v�v��'�(v�v�azub�*�-�+�,ubgCgCw8�.�/w8t�t�b��1�Q�2�G�3�?�4�:�5�7v��6kXt��8�9kXt�t�b��;�=�<b�mkX�>v�b�v��@�Cv��Ab��Bb�w��D�Ew�wU�Fw�wUw��Haz�I�N�J�LkX�KkXv�v��Mv�ww�O�Pazwaz�R�d�S�Z�T�Xv��U�V�Wt�v�v�az�Yjazj�[�^az�\az�]azt��_�a�`azwaz�b�cazv�u�az�e�m�f�h�gazw�az�i�kaz�jazv�az�lazu��n�s�o�q�pazt�w�az�razgQ�t�v�uazazv�az�wazv��yaz�zazaz�{�|��}��~���az�az�jaz��az�azgQv��v�gQ��az�az�azgQ����gQv�azv��mv�v�������v��azgCv��gCv��az�azv�az��gQ��azgCaz��az�maz��gCazazgQ��������gQ�azgQ��azmv�v��az�azv�az����az�azgQ�azgQaz����gCt�gCkX��kXmmaz�������������azv�v�v�����wgCgQv�������azgCaz����t�v�wv�������������azgQv�gQ����v�wt�az��������azmazgQ����v�jmgQ����������������az����v�����az��azaz����������v�gQ��mgQv���azaz��azgQv�gQ����v���v�gQgQaz���az�gQ�gQ�gQ��gQgQ�gQ�gQ�gQ�gQ��gQgQ�gQ��gQgQ�azgQ�v�gQ�mv���az�	�
az�azv�az�
�gQaz��az�����v�v�w�azb����w�b�azubu��t�gQv�����c�az��"� v��!gCv�v��#az�$�O�%�<�&�5�'�/�(az�)az�*azv��+�,azv��-v��.v�az�0az�1azv��2v��3v��4v�azgC�6�7az�8azw��9�:azw��;w�az�=�F�>az�?az�@azw�A�Bazw�Cw�Dw�Ewaz�Gaz�HazgQ�I�Jaz�KazgQ�LgQ�MgQ�NgQaz�P�Y�Q�Rv�azaz�S�Taz�Uazt��V�Waz�Xazt�az�Zazaz�[�\az�]az�^az�_azv��`v��a�bazv�azaz�daz�e�f��g�u�h�k�i�jjazazgQ�l�taz�m�naz�oazw8�pw8�qw8�rw8�sw8azazv��v�az�waz�x�y���zv�wU�{wU�|wU�}�~azwU�wUaz��azgQazt�v��v�v���az��A�azv�az�������A�������az�azazv�����azgQazv����v�t�wmgC��������gCv�ju�u�kX�azv�azaz�az�azv���������gQv�v�t���wv�v�m���gCmgC�u�gCj������u�kXkXv���v�ububw����ww�w�v�����v�������b�mmv�������azv�b�u���azw8m����m��v���������v�w����azb�b�az����w���azub����ubu�u�j��������v�����m��m��m��mu�mm��v�m��v�v���v�����v���v�v���v�����v�v�����v�v���v���v�����v��iv����0az������azaz��az�az��azg��g�g��g���g��g�g���g��g��%g�az����	v��
v��v��v�v��
�v�v���v��v��v��v��v��v��v��v��v�v��wv��� v�����v�v�v�u�v�v��!�"v�v��#v��$�%v�v��&�'v�v��(�)v��*v��+v��,v��-v��.v�v��/v�t��1�i�2�R�3�C�4�;�5�:�6v�v��7v��8t��9v�t�v�v��<�B�=v��>�@w��?w�az�Aaz��azv���D�Pv��E�F�K�G�Hjw�w��Iw��Jw�w��Laz�Mazw��N�Oazw�azgC�QkXv��S�c�T�`�U�_�Vv��W�[�Xw*kX�YkX�ZkXw*w*�\�]gCw*�^w*gCw�b��a�bubww��d�f��e{�v��g�hgCwU�����j��k�pgC�lgC�mgC�n�ogCv�gC�qgC�rgC�s�u�tgCwgC�vaz�waz�xaz�yaz�zazgC�{gC�|gC�}�~gC�gC�gCgC�gC��gCgC�w�gC��gC���gCaz��v��v����az�azv��azv�az��azgCazv�����az�gC��v�gCv���v��v��v��u�v��v��v��v��v��v�v��v��v���v����v��v�v��v���v�t�v��v�v���v�v���v�v�t�����gC�gC������wgCgCv���gCubw*kX�gCkX��kXgC������az��az���������w�v�az��azjaz��az����azw�v�az������F������sGsG����sGsG��sG����sGsG��sG��sG��sG��sG����sG�sG���sG��������sG�����sG�����������@��������@��@����@��@@��@��@��@��@@�@��@�@�@@�@�@��@sG@�
��+��#��
���	*�*�:J*���*�
Z�J*��**J����*�*J�J�JJ��J�J�J�J�J�JJ� J�!J�"*J�$sG�%sG�&sG�'sGsG�(sG�)�*sGjsGz�,�-�D*�.�/�7�0sG�1�4sG�2��3���5sG�6sG�sG�8�@�9�<�:���;����=�>�?����sG�AsG�BsG�CsG��E��G���H��I�e�J�U��K�L�O�M�N+;sGJ�P�TZ�Q�R++�S@+�@��V�W�XjsG�Yz�Z�[�az�\z�]z�^�_�`z����b��c���d���f��g��h��i�|�j�u�k�p@�l@�m@�n�o@@�@�q�r@@�s�t@�@�v*@�w@�x@�y�z�{@��@�}�sG�~�����������@�����sG�+@����
��������������������
�����������@�@��@���_J�
�+�++��+�+�++�+����+sG;sG��sG@������++J��K�sGj���[sG��@�
���������������������k{�@����sG�R@sG��������@sG��sG@������������sG+k�����+�sG�������sG�sG����sG+��������������������������������*jsG��sGk���������@[�sG���@��������k������sG��+�@������sG�@�@�@��@+��@ @+�	�X�
�<��#���
���@sG�+����sG��!��@sG�+@�@�@�@��@@�@�@�� @@0;�"j@�$�+�%�(�&�'
+K��)�*�[�+�,�9�-�8�.��/@@�0�1@�2@�3@�4@@�5�6@@�7@+Z�:�;@k{J�=�J�>�E�?�B�@�AsG+�sG�C�D+�+��F�I�G�H+@
�+sG�K�Q�L�N�MsG�O�P�sGjsG�R�U�S�T�sGsG+�V�W�sGj��Y�u�Z�h�[�a�\�_�]�^+��+sG�`���b�e�c�dsG@_�f�go@�lx�i�o�j�l�ksG�
�m�nsG+jsG�p�r�qsGJ+�s�t+��+�v��w�~�x�{�y�z+�|�}@sG�sG����sG@��sG�sG���@sG
�������sGK�����sG�sG����_����sGk���

�
��
�
�
�����������sG����+�������R�����[ sG���sG��sG�������lx@sG���
sG�����j+��R�sG���������������@���������������������������@@�@������@��@������������@��@����@������@��@��@�@@�
��@�kZ�����sG��sGsG����sG��sGsG����sG���sG��sG��sG����sG��sGsG��sG����sGsG��sG��sG@sGsG�sG�sG�sG�sG��sGsG��sGsG��sGsG�sG@����!�����sG�	��
��R����
���@k�;��sG;��sG������@[k���J+sG��� ��@�J�sG��"��#�1�$�+�%�'		�&		�R		�(�)�R�*�R		�R		�,�R�-�.�R�/�R�0�R		�R�2�7�3�5�4				�R�6�R		�R�8�Y�R�9�:�Q�;�R�<�J	�=�>�I�R�?�@�R�R�A�R�B�R�C�D�R�E�R�R�F�G�R�R�H��R�R	)�K�R�L�R�M�O�N�R	)�R�P�R�R�R�R�S�T�W�U�V�R�X	)��R�Z�i�[�g��\�]�^�_�c�`�a�b�R�R�d�f�e�R�R�h�R	9�j�m�k�l�R�R��n��o��p�q�r�s�|�t�u�v�w�x�y�z�{		�}�~������		��R��R	I�������sG����sG�������	Y��	Y	g�	Y�sG	Y����	YsG�	YsG	vsG��sGsG	g���sGsG��sGsG	����sGsG�sGsW	���sGsG�sG�sG�sG�sG	��sG�����sG;��������
sG�����+sG+��+J	���������������������������J��@@	�@	������Jj����	++�����������@����	���	���	��	�����+��������������+k[������sG+��������J��+����+����**	�lxsG����sG@�������������+�R�����@�[@�������6��*��sG�sG�sG��sG�sGsG��sG�sGsG��sGsG�	sG�
�sGsG�sG�
sG�@sG�sG�sG����sG�sG�sG��sG
	sG�sG�sG�sG�sGsG
�sG��#sG� �!sGsG�"
)sG�$sG�%sGsG�&sG�'�(sG�)sG
9sG�+�,�;�-��.�5�/�1�0
I�R
I�2�R�R�3�4�R��R		�R�7�L��8�9�D�:�<�;+@sG�=�C�>Z�?@�@@�A@�B@@
Y�[�E�FsG��G�Ik�HsG��J�K��;lx�M��N�]�O�R�P�Q J��S�T
�sG�U�V@@�W@�X�Y�[�Z@
d@@�\
d@�^��_��`�a�m@�b@�c@�d@�e@�f�g@�h@�i@@�j@�k�l@@�n@�o�y�p@�q@�r@@�s@�t@�u�v@�w@�x@@�z@@�{@�|�}@@�~@��@�@�@@������
o+�@��������+���R�				��				��		�			I		���sGsG+����+�����������
���
���R�+�����+��RsG
��J������������sG�_�sG���Z+@����J�
��@�
�@[����J �R����+��+
o�����������R��������������������
���������������
�������
��sG�������������������� J*����++����+sG������������	)���2���(����������������+��+��+��+
�+*	)�����sG;��������
���
��
�
��
��
���
�
��	Y
�
��
���
���
��	sG
�
�sG�sG��sG�
��+���j�������@��@@�@�@��@@�
�@��%��"� �!sG+
��#�$+		j��&�'�[sG+�)�/�*�.Z�+�,��-��J�0�1���+�3�S�4�A�5�;�6�9�7�8[�k@��:lx��<�?�=�>
�k
�@�k[�B�H�C�E�D
sG��F�Gk[j+�I�L�J�K@����M�N+sG�O�PsG�QsGsG�R!sG�T�z�U�e�V�]�W�Z�X�Y	�*@�[�\sG�sG
�^�b�_�a��`��+
�c�d�RsGosG�f�m�g�j�h�i�sG�sG�k�lsG�
j�n�u�o�r�p�q�lx�s�t�sG@�v�xsG�wJ�y@;�{��|��}��~���+
sG+��@�sG���sG�������������������������1���sG�������+�R�@�[�����K��@*sGk���������[�����k����Z@sG���
�@�@�@�@�@�@�@@�@�
�@{+���������Zlx����+{lx�R��������	)
;������sG�sG����������zz��z��z����zz��z����zz����z��zz����zz����z��z��z��z@z�����������������������������������O��OO����OO����OO���O��$��Z����������_�@��
YsG��
��
���@@��@
d@@�@��	@@
d��sG_�@���Jj@���sG������_+@;�RzsG+�sG��#�@�@�@�� @�!@�"@@+@��_�&���'��(�v�)�<�*E��+E��,A�-H:�.�6�/A�0H �1A�2�4�3AA�A�5AEz�7A�8H�A�9A�:A�;AEz�=�[E��>�?�Q�@E��AE��BE��CE��DE�E��E�FE�E��G�HE�E��I�JE��KE��LE��ME�E��N�OE�E��P�E��RE�E��SE��TE��UE��V�WE��XE��YE��ZE��E�A�\A�]�^�oF��_�`F��aF��bF��cF��dF�F��eF��fF��gF��hF��iF��jF��k�lF�F��mF��n�F��pAA�q�rAeA�sA�t�uA�A�w�H �x�yA�zAA�{E��|�}A@&�~�AA��AA�'���E�A���A�AH��A��AA�EAH:���A�A�A��AA@�@&�������@&@&�@&��@&�@&@&�@&�@&�*�@&@&��@&�*@&��@&��@&@&��@&�@&@&��@&@&��@&�@&�@&�@&@&��@&�@&��H���@&A�A��A�AA��A�A@&A������A��@&��Ez����A��A��A��AA����A��A��AA��A����EzA��A����AA��A��A��A��A@&������AA����A��AH:��A��F���F���F�����F�F�����F��.F�A����A��A��AAAe���F�������F���F���������i@i@F�i@F�F����F��F��F�F��F��F��F���F��F��F�����������
&4��'�����	A�
�m��4�� �
�Gt�F��F��F��F����;F��;�����G��G��G��G�B�G����������;��!�/�"�(Gt�#��$��%��&��'�F�Gt�)�*F��+F��,�-GtF��.F�GtF��0Gt�1GtF��2F��3F�Gt�5�^�6�E�7�?�8i@i@�9�:�=i@�;�<F�i@F��>i@F�i@�@i@i@�A�B�D�Ci@i@F�i@F��F�P�GF��HF��I�M�Ji@�K�Li@F�F�i@F��NF��OF�i@�Q�Y�RF��S�V�TF�P�UPF��WF��XF�PF�G��ZG��[G��\G��]G�F��_�f�V�`�d�a�d�b�d�c�dF��eF��dF��g�h�dF��iG��d�j�d�k�d�l�dF��n��o��pGt�q��r��s�w�tF��uF��vF��HF�F��xF��y�zF�F��{F��|�}F��~F�F��F��F��F��F�Gt��F����F��F��V�F��VF��F�F��F��F��V�Gt�������H�6�G���.�F�F��i@F�����F���G��F�i@G����^�d��i@F�������G�F�G���������F��F����G�G�G���F��F��GtF�Gt���i@�i@�i@�i@F��F�I��I��I��I�F�A�������������������������������I�i@F����F�����F����.l��GtF�z����F���F���i@Gt��F�Gt�V��������F���I�F�F����VF�����F�����F�F�Gt������i@F������qF��q����^I�I�F���F���������F���Gt�V��F�i@G���������GtF�G������di@I��F�����i@�G�F�Gt�GtG���F���V�I�����V��d�����F��F�GtF�i@Gt�	��
��F���F��
��Gt��i@GtF��F�G�F��F��F���F��F��F�F���F�F���F�I�F�A�A�A� A�!�"A�#A�$AA�%A�&A��(�3�)�.�*�,A�+Awv��-u�v�az�/�0�2v��1u�azaz@&�4�X�5��6��7���8�|�9�_�:�P�;�I�<�?�=�>EH:EA�@�A�H A�B�C�HEz�D�EEz�FEz�GEz�EzEz��J�M�K�L@&���A�N�OH:AAAe�Q�Y�R�V�S�U�TAC��AB��W�XA��EzH:�Z�]�[�\EAE����^����`�n�a�g�b�dE�cE@&�e�fAH:F�E�h�k�i�jAE�E�l�mAEAHG�o�t�p�r�qA�H:A�sAE�u�x�v�ws�H:H:�'�y�zAH:�{EH ���}��~�������EF�H:AeE�E@����AeEz�H:��Ae�`���`����`�`��`��`���`��`�t]`�`���`�`��`��`���`�`�t]H:Ae�������EEA��ٰAAeE�����'�H:Ez��� EAE����������@H:����Ae�F�H:���E�E��AA��A�AA��AA��AA�C�A����AeA�������E��E������������EH:�����AAEA��A��EA��������������A����������HGM�E��|�H:��azEA��A��A��AH:A������A��A��������A�����'���,���H:H A���������A����A��A��E��H H:A���A�AAe���E��Ez�������EzEz�Ez��Ez�EzE�Ae��
��
��EA�	AA�A�A�EAA�����EF�AH:�AF�E����Q��*A���!��A�EA�� Ba�����H:E�"�%�#�$EA@��&�)E�'�(AA�A��+�?�,�6�-�0�.�/�6AAE�1�2F�AA�3�4�5����
�7�<�8�9E�EE�:E�;@&��=�>EH:
A�@�H�A�D�B�C�~BaEzA�E�F�F��GE�9H:�I�N�J�KH:EF��L�M
&�
4�O�PAEzEz@�R�p�S�b�T�[�U�X�V�WE�H:li��Y�Z@�EH:�\�_�]�^@&H:ABa�`�aAH:AAe�c�i�d�g�e�f~BaEBa�hEEF��j�m�k�lAEEH:�n�oE�H:@�Y�q�{�r�x�s�u�tAF�Ba�v�wABaH:F��yA�zAE�'�|��}�A�~E��A�H:���AE@@&�������������H:E����
B���H:A��F��F�����EAE��Ae@&�|�������EAAE���E���
QDN
QH:�'������AeE���B���B�Ae��H:s��A����������EAK���s�E�E����v�H:H:@���Ae�����Gt�F����F��F�������F���Gt������G����;���F���F���F���F��F�EH:��A��������|�EEH:������E����Y�gE�A��������������������H:EzEzaz����H:�Ae��A��E��E�'������A������AeEz�A����E�6E���������A��A��E���E@A�A�H:@&��������H:Ae����E���~E@&|�����EzHGazE�EE@&@&��	�A�
A�A��
A�A�AA@A���*��A�A��EAE������H:E�E��EH:M��� �'�!�&�"�$���#���F��%�F�@&E�(�)EAAE�+�F�,�2�-�/E�.H:E�0�1EH�EH:�3�D�4�C�5H:�6�<�7�9�8H:s�H:�:H:�;H:s�H:�=�@�>H:�?H:s�H:�AH:�BH:s�H:EA�EH�A���G�M�H�KE�IE�JEz��E�LEH��N�S�O�PH�E�QE�REzH:EzE�T�UEz�V�W@&v���Ba�Y��Z�;�[���\��]�y�^�l�_�f�`�c�a�bAEEH:�d�eH:EzH H:�g�j�h�i��H:AeH �kAH:@�m�s�n�p�oAEA�q�r�A
_@�t�v�uH Ae��w�xBa@AeA�z��{A�|�~A�}AgC��AdH AA��A��
nE�������A�AE����H E����
w��E�E�
���
��
�E
�E�E�E���E�E
�E
�E�H:s�H:��AAeBaE���AE�H:A���E�Ez@�EAE������E��YE��E�H:K����AH 
�A�AAe���A��E@AeH:A��AA�����Ae������������������A��A
�@��A����H:EAeH:������A��AAAe��������A�'EEz��EE�E����������A����H:�����@&H:����A��AH:�����'AF�A��������A��H:AEA����E��@H:�����6EAeA�������������AAeA��A����@��K�H:���H:K�E���@H:��	��H:�H:E��E����|AK��
����~�@�
�@�@�@@�@��@@�@�@
�@H:��@�Ae�
�Ae
�HG��*��$��"� �!A�'A�A�#�A�%�'H:�&H:E�(�)
�A�E��+�4�,�1�-�0�.��H:�/H:OAe��2�3H:EE�@�5�8�6�7H:AAAe�9�:H:A@H �<��=�E�>@&�?@&@&�@�A@&�B@&@&�C�D@&�@&�F�k�G�\�H�M�I�KE�J�'E�LAeF�E�N�Q�O�P|�AeAe���R�V�SAe�T�Umt�maz��W�XF�F��YF��ZF��[F����]�c�^�`�_Ae@Ae�a�b���~E�~�d�f�e����E�g�jAe�hgn�i�]�Ez�l�{�m�t�n�q�o�p�'AeE��r�sBa@AeK��u�yAe�v�w���xAe��Ae�z�Ae��|��}��~������s�s��s���s��s�s��s��s��s�H:�H:|��'��K��|��������������������l������������������z����AeF���~������F������A�A����EAE�EAH:�������E@&H:E�E�E���H:EEz��EzE�BaH ������@&��H:����H:@H �'���������'AAeE��EE@&��������������������H:AA�����HG���E�������EA����AEBa�������������AeA�A��AAeA����A��E�A����AAe�'Ae���������������AeH:E������EAAE��A����EH:����@&��7�A�A�AE�A��$��n��'����
����A�H:�'��H A�A��
E�	@&Ae��AAeEH:�A�A��H:EEA����A�A�E��A��@&H:H:F��� A���A�@&E�!�$�"�#H:AAE�%�&EAH:@�(�J�)�;�*�1�+�0�,�-H:A�.F�A�/��@H:�2�9�3�5Ba�4H:F�@�6�7�8���@&�:Ba�FE�<�E�=�BBa�>�?H:�@�A�����C�DH:E@@&�F�GH:Ba�H�IBaAeA@�K�\�L�W�MA�N�V�OA�P�S�Q�R�~�~�T�U~�~�A��X�ZA�YAH:�[E�E�]�g�^�a�_�`A����H:�b�f��c�d�eF�GF��EH:�h�jE�iEA@&�k�lH:�mF�GtF��o���p��q�}�r�x�s�v�t�uF�AH:AA�wAeA�y�{A�zEH �|H:�~Ae�~�����H:AeA�����'@&Ae��A��A�����A��A��A�A�AA��AA��A�AA�A�A����AA�A�A��AA��A�C�A��A�AA�A�A��AA�A�E���6��6��������AE�gAeA�E�E����AEA����C�A��H:A�A�����������F�@&A��Ae��Ae���AEA��������HG|���AAe��Ae@�����A��E��AeAeB���������������������LAAH:������H:H:EzH:E���������H:AAeH:��H |�Ae������������HGE�EH:��EE����������AH:Ae����Ae����
Q��E�E���������H:EzH:E��H:Ae�Ae����Ed�
��Ae�
����E���u�v��	az�
�az���
��azaz��azaz�az���az�az�az���K@&E������AH:AeBa�EEzE�� �AH:@�!�#�"A
�AeH:�'�%�`�&@&�'�D�(�7�)�0�*�-�+�,AeE���.�/|�Aed{az�1�4�2�3EEzH:Ez�5�6AH:AE�8�=�9�;���:�Ae�<E��H:�>�A�?�@AeE�Ae�B�CAeEAe�E�Q�F�M�G�J�H�IAeH:�E�K�L�H:Ez�H:�N�O�PH:Ba�E�R�Y�S�UE�TH:E�V�WH:EzEz�XE��Z�]�[�\@H:Ez��^�_@&�EAe�a��b��c�q�d�j�e�gA�fA��h�iH ��AE�k�n�l�mEAEA�o�pEA
�HG�r��s��t��u��v��w��xC��y�}C��z�{�|C�AAC��~C���AC�C�AC�����C�AC��C��C�AC��C���C�����C�C�A�C�AC�C���C��C�AC�AEz�A�A�����AAEA�Ez������A�A�Ba���AE���H:s�s��AEA����A�AE��AEH:AA��AAE�����������A�AH ��A��H:
�������Ae@@&Ae����AH:������&�&Ba��Ba5����A����H ��AH:��H:�,��������A����F��F��K�����|�H:��F�H:����H:����������������AeEAeE����ABF������9H:�F����������EH:Ez����AH A������v�azu�w���������AA�A��HGE��A�A��E�BaA�+���h������l��az��azaz�azw*az�az�az�az��	�>�
�!���az�
�az��azv�azaz�v��v�az���azaz�az�azm�����azazw�azgCazaz�az� v�az�"�1�#�*�$�'az�%�&azw*azaz�(�)azazw��+�.�,az�-azgCaz�/azaz�0�iaz�2�6�3az�4az�5azwaz�7�;az�8�9�:azwazv�az�<az�=b�az�?�Maz�@�A�I�Baz�Caz�Dazaz�Ew�F�Gw�Hwt�waz�Jaz�K�LazazgC�N�]az�Oaz�P�Q�Saz�Rb�azaz�Taz�U�Vaz�Waz�Xaz�Yaz�Zaz�[az�\azazm�^�e�_�b�`azaz�amaz�cazaz�dazm�f�i�gaz�hazmazaz�j�kazv�az�maz�naz�oaz�paz�qaz�raz�s�yaz�taz�uaz�vaz�waz�xaz���zaz�{az�|azaz�}az�~�Bazaz�az�az�az�az�az��az�az�az�azaz��azaz��Baz��R������������az��azaz�az��azaz��az�azaz�v���v��v��v�azv�az��az�az�az�������azazgCgC�gCaz��az�gCaz��azgCgCaz�az��az�gCazaz�gCaz�azaz�az�az�az��azaz��az�azazw����������gQaz����az��az����az����azaz��maz������az��azazmaz��az��azmazwc��azub����azaz��az��az��az��az����azazw�az����azaz����azaz����az��az��az��az����az����az������������������������������gQb����az�az�����������������gQ����gQ����az����az�azaz��az�az�az�	azaz�
gQaz�az�
az�azaz��azaz�azj��az�a�azaz��azaz�az��az�azaz�b�az��.az�az� �!az�"�'�#azaz�$az�%�&azaz�?�(azaz�)�*az�+az�,az�-azgQazaz�/az�0�1az�2�M�3�F�4�@�5�=�6�9�7azaz�8w�az�:az�;�<mazazkX�>azaz�?azb��Aaz�Bazaz�C�D�Eb�azazwFaz�Gaz�Haz�I�J�Laz�KkXazgQaz�Naz�Oaz�Paz�QazgQaz�Saz�Taz�Uazaz�Vaz�W�Xazaz�Yaz�Z�[az�\azaz�]�^azaz�_�`azaz�aaz�b�caz�dazaz�e�faz�gazazw��ia�j���k���laz�m�,�n���o�xaz�paz�q�razaz�saz�t�uaz�vazaz�wjaz|�y�zaz�{az|�|�}���~��m��m���m�o�o���o�d����d����c�dc�c�d�������������������������Q�������������a��_���������_��p��_����������������@�a�����_��Qaz�������������az���a�����_���������_���������������������_��1�������p��_������_�a��������������������������������������������������������������������������a����������Q��@�����������������_�_������O����O���O��O��������������	���������������������_�_���������1L����L�������������_����������������_����������_�������@���
�������
����������������������_�_������_�����_��$� ��!��"�#��O�
�%�(��&�'��_��)�_�*�+�Q�a�-���.�K�/���0�k�1�Q�2�J�3�6�4�5n�LnWL�7�F�8�;�9�:[�NNQ��<�=L�>L���?���@�A���B�����C���D���E��)�GH:�H�I=L[i��K�N�L�Mdj*xvl�O�PLp�`�g4�R�`�S�Z�T�XL�U�V�WW�N�VR��YLtk`�N�[�\�^�]e�e�e�ak�_aktk�a�f�b�e�cMb��d~�b�kb��g�hi#kuM�ib��jx�b��l���m�{�n�s�o�rp��pd�qdm�LN�t�x�u�wd$�vx��Y�ZdM��y�ze�e�e��|���}�~iMdp����ignpz����fM��������e���hkf��e�������������������������>���>������kf�d�����d�kf�����rXq~��i#����gn�gn#��������M��e�����e�����`���`���`���`�����`�`���`�e���`���`���`�`�����`�`���e�`�L�N����cWNb���kf���kf����������������������������e���1��kfkf��������azaz�B��d�e�d�����e�����MH:c�b�����d{dld{��������j*Lb�j*�����NNd������������c�d��cW�����rXlxrXd��b�������N;OEQ�OT��������`��XL�H:����L�����dNlxdN��pzdN��dNlx���,���"��������dLc�b����iM��������AA��A����AA��A����AA��AP�e��e�e��e�ee�e�et�	e�
e�e�e�
ee�tegn�ak���ak��ak�ak�akak��akak��{akak��akak�ak�ak�ak� �!akak�{�#�&�$�%cWb�q~N;�'�(b�c��)m��*�+N;OEQ�OT�-�4�.�1�/�0b�L�q~L��2�3tkb�b�g4�5�:�6�7`����8d{�9~v�M�;�<LL��=iM�>�J�?�c��@�A�Ec��B�Cc��Dc�c���Fc��Gc��H�I����=c�����L���M�w�N�f�O�Y�P�T�Q�S�RL�+mL�`��U�XN�V�Wb�m�b�dq~�Z�`�[�_d{�\�]�^L�c�c�cWd$L��a�b{
b��cd�d�ec�azx�ݶ�g�n�h�k�i�jrXaz`�M�l�mrX`�d{q~�o�t�p�s�qM�rdlxvLe��u�vLNL�N�x���y���z��{�~�|NL�}Lv�c�b�����g4c�����������q���b���b�b���b���b���b�����b�db����m�d��������db�cW��`�M����cWL���������Q�OTN;OE����ak�����������E��Mq~����H:�������}�a��b�`���������L�N���ei#m�b���H:c����b������������������b�����azv�v�az��N����Q�OTN;OE����d��lxrX��Ni�e�����az��c�d����L�������N;OEQ�OT��c�}���}�����}���}���}�}���}���}�����}��}�������������Lg4�xM������p�����m�b�m�b����x���x�b����_����c�i���q~����wjgQ�����$�������������������az��b�gC����azgQ{�az������azwazaz��azt���az��azt���azt�����az��az��az��gQgC���az�wt�gQ{��b��{�az�����	�
�
�gQaz�az{�az�az�gCt�az����azwwjaz���wt�azw�� �������azw{�azaz�azwaz�!�"waz�#wt��%�O�&�=�'�/�(�-�)�+�*azazb�az�,�^azaz�.v�az�0�6�1�4�2�3w�"azv��5ubw��M�7�:�8�9w�azw*�;�<w�wU�v��>�I�?�D�@�Baz�Aaz�az�Cv��i�E�Gaz�Ft�azaz�Hazw�Jaz�K�Mw�Lv�kXaz�Nw{��P�W�Qaz�R�T�Sazb�az�Uazaz�Vb�{��X�[�Yaz�Zazaz{�az�\az�]w�^wv��`�ab�`�c�rX�c���d�m�e�h�f�gcWxvhaz�i�j�L��kL��R�lq�i�n�t�o�p`�Ni��q�r�sL�L��u�|�v�y�w�xN;OEQ�OT�z�{o�#����}���~�2@�8O�8���:]������������m�������lL�d{c�c�d����L�����e�e�{McW��������q~��db���gC����wjaz����L�����do�m��-�������;������������������������d{��d{����d{d{����d{d{����d{��d{��d{}�d{b���b���b���b���b���b�����b���b�b���b��dgn����b�Mq�����llc���������faNq~g4����d��F�c�wdN������������b�cWb�d������c���gngn����d��i@i@������F���F�����F���F�F�����F�G�F���F�F�����F���F�F�����F�G�F���������g4dpz��d���e�d�����e�dcWb��������������������e���e�d�e���d�e���e���d�d�e�d���LaN��������L�����mm����m,��m,�m,�m,�m,�m,m,�m,�+dM�����	�
����e��
N;OEQ�OT�ML��L�i��2��)��d��azgCaz��'�d�dd�d���"�d�dd� d�!dn��#dd�$�%dd�&n�dg��(�tO�*�+MN�,�/�-�.M�;d�o�0�1�n�ն�y�3�6�4�5L�b�mb��7�8MN`��9�:ak��l�<�o�=�R�>�I�?�B�@�ANMLd�C�Dkud�E�H�F�Gdle�lazb��J�M�K�LL�lj*L��N�OL�li�Pp���Qb�d�S�a�T�^�U�Vaz`��W�]�X�Y����Z�[�\i1��g�M�_�``�N`�d�b�h�c�dm�g_L��e�f�gN;OEQ�OT�i�mL��j�k�l������`��nnW�p���q�}�r�x�s�u`��t�d��vq~�wj�lj��y�|`��zgn�{,ذML��~�����H:NLL���������l��lg&����N;OEQ�OT����d?����;d{��d{J����������������b���o�dLcW����Llde�����������wUd��dm�b�d����aNme���h%������������������������NM�q~N��d{y�b���������c���p�m����NnWlcW������������i#��di#��L��azb�v�������Lb�w��q~o���sud��������db���d{����i#�Ci#�C������M���azgCazLd����������������cWNq~aN����pzL�`�xv��������`���tk��tkYMd����L�������N;OEQ�OT`�d��������������L�����b���b���b�b���b�����b���b�b���db�p�L����L�Q��������N;OEQ�OTrX��rXb���������NMdl���N�����Mq����;LM��G��.��#��	��LaNH:Q��
�"�� ��M��
�����������������������h���M�����=Lv��M�h[���������!llg&b�M��$�+�%�'L�&g4m�(n��)�*azli^C���,�-Lg4xvL��/�A�0�>�1�2`�q~�3d�4�=`��5`��6�7`�`��8`��9`��:`��;�<`�`�e�`�ږ�?�@cWdd`��B�Dd�CMnW�E�Fb�Ldd��H���I�n�J�O�K�N�LLe��Md�e�Ld��P�S�Qhe��Rd�e�e��T�U�^d$�V���W�X�����Y���Z�[���\���]������_d$�`�g�ab�b��b�cb��db�b��eb��fb��g�hb�b��i�jb��kb�b��l�mb�b��g�o�x�p�u�q�s�re�e�d��td�d�e��v`�e��wd�e��y�|�zak�{d�d�h%�}cWe��~e����e���e���e�e�����e���e�e���e�1����������������������q����������;�����;�;�J�;����;�;���;���;�����;My���N��N��N��NN����N��NN����N�NiML�������L�N��N�dL���������`��Hd{��lx��rX�����dפiM����b���b���������������������������������v���v���az��azaz����azaz����azaz����az��az��azv�az��v�v���v���v�����v�v�����v���v���v���v�v���v���v�����t�����az����az��az��az��az��azaz��az����az��azaz��v�az���������az��az��az��azaz����az��azaz����azazv�az��az������az����azaz����az��az��azv�az��az��azaz����azaz��az�v�azaz��azaz�az�az��az�azaz�	az�
az�v�az�
���az�kXb�az�gC�gQm����az��[��3��"�azaz��azaz��azaz�az�� �!v�azv�az�#�+�$az�%azaz�&�'azaz�(az�)�*azv�azaz�,�-az�.az�/az�0az�1azaz�2azv��4�E�5�=az�6�7az�8az�9azaz�:�;az�<azazv�az�>�?az�@az�Aaz�Bazaz�C�Dazazv��F�N�Gaz�Haz�Iaz�Jazaz�K�Laz�Mazazv��Oazaz�P�Q�Vaz�R�Saz�Tazaz�Uv�azaz�Waz�X�Yazaz�Zv�az�\�y�]az�^�jaz�_�`az�aaz�b�f�caz�daz�eazazv��gaz�hazaz�iazv��k�r�lazaz�m�naz�oaz�pazaz�qazv�az�saz�taz�u�vaz�wazaz�xazv��zaz�{���|��az�}az�~az���azaz��az��v�az��az��az��az��azaz����azv�azaz����az��azaz��az��az����azv�az������gQ����az��az����azaz��az��az��az����azaz��azv���azaz��az����az��azaz����az��azaz��azv�mv�����������������az��az��az��az��az��az��az��az����az��azaz��azw���azaz����az��az��az��azaz����azaz����azaz��w�az��az��azaz����az��az��az��azaz��az��az��az��az��az@��azaz����azaz����az��azaz��az��az����azaz��az��az��az@������azaz��az����������kXazgCazaz��gCv�������az������az���az|��az|az`�az�������az��az����az��azaz��az��gQaz��azaz��az��azaz�az�v�azaz��az���az�	azaz�
az�azgQaz�
�azaz�az�v�azaz���I��#�az��az��az�azaz�azgCaz��� �azaz�kXaz�!azaz�"azv��$�1�%�*�&azaz�'�(az�)azazb�az�+az�,�-�/az�.azub�0azazu��2�A�3�=�4�:�5�7�6azb�az�8�9azv�gCazaz�;�<azv�az�>az�?az�@azazv�az�B�C�F�Daz�Eazazb��Gaz�HazgCaz�J�faz�K�L�Paz�M�Naz�OazazgC�Q�_�R�U�Sazaz�Tv�az�V�]�W�Xazv��Yv��Zazaz�[az�\��az�^azv�az�`�caz�a�bazazw�dazaz�eazv��g�taz�h�i�n�jaz�k�maz�lwUazv�az�oaz�p�r�qazazv��sazv�az�uaz�v�~�w�yaz�xazw�z�|az�{az��az�}wazaz���azaz��azm������������������������az|az������t��w��v�����az��az����az��az��azaz��az����azazu�u�w����|az������az��azaz��azjaz����az����v�b��[azaz����A�����������������������������������azaz��������azaz|az��az|��az����az��az��az@�azaz��������az��������az��az��azm��az��b�gCb������azaz��az����������������az|az��az|az��az��azaz|����az����|az���1az��az��az������azgCv�azv����L����������������������az|��|��|azaz��|az��az��azaz|��|��azaz|�������������|��az���az���������v��1��az��az������azaz�azaz�)az���	��
��azaz���
�8azt���az�az�G������Wazaze�az�az|az��0��$��!�az�|�� t|az�"az�#|az�%�+�&�(az�'�az�)azaz�*�azaz�,�-�.�||�/�|�1�=�2�5�3az�4az|��6�:�7�9�E�8��E�E�az�;�<az�az�>�I|�?az�@az�A�Baz�Caz�Daz�Eaz�Faz�Gazaz�Hazu��J@�Kazaz��M���N�}az�O�P�e�Q�dw�R�S���T�\az�Uaz�V�Wazaz�X�Yaz�Zazaz�[��az�]az�^az�_az�`azaz�a�bazaz�c��azv�u��f�z�g�hv��1az�i�j�r�kazaz�l�maz�naz�oazaz�paz�qazwaz�saz�taz�uaz�vaz�w�xazaz�y��azaz�{�|azv�az�~az�����MM����M��M��q�M��M��M����az��������g���M��M����OM����M��MMq�Md��az|��|����������������az��az��azwb�����az������|azgCazaz����azaz����������|az��������azkX��az��az��az��az��az��az��azaz��v�az��|||���az��azaz��azw������az��az��az����azv�az|az��az��|az������azaz����az��azaz����azaz����az��az��az��azaz����azaz����azaz��az��az��@az�������O�������az������az����az��az��azaz��az����azaz��az��az��az��az��w�az��azaz����az��az��azaz����azaz����az��azaz��az��azw������az����az����az��azazv����azaz��1az���azwt��mju��	�q�
az�az�az�
azb�az��D��*��������gCazv�j��az�jazv�b��az��w�ww*wU��"� azaz�!wcaz�#�%�$az�u��&�(�'az��az�)azjaz�+�9�,�3�-�0�.�/t�azazm�1�2v�b�azb��4�7�5�6�?v�u�azaz�8��az�:�>�;�=�<azu�jb�az�?�B�@�Aazw��kX�Cazazv��Eaz�Faz�Gazaz�H�Iazaz�J�Kazaz�L�Maz�Nazaz�K�P�t�Q�[�R�X�S�Taz|�Uaz�Vazaz�Wv�az�Y�Zaz||az�\�k�]az�^�b�_gQ�`azaz�aazgQ�cgQ�daz�eaz�faz�gaz�haz�iaz�jazgQaz�l�naz�mazv�az�o�p�raz�qazgC�sazgCaz�u���v���wazaz�x�y�~�z�|�{azazjaz�}gCv��������gQazwUaz��azazgC������az��|az��az��waz������az|az����������azb�azaz���az��az��az�az��az������������az������az�"������az����mazaz������������az�Z�����azaz'�����������5az��azaz�1������azaz��az����D������az����Raq�az|���az��������������|az��������az��b���v�gC��az��azgCaz��az��az��azazv�����az����v�az��az���az��azv�v���az��������az����az��gCazgQ������azaz����az��az��azaz��az����az��azaz��u�azgC����azb�az��������������azazgQaz��az��gCazaz����azazgCaz����az���
�����az��azaz����azaz��az�az�azw�az��azaz��azaz�az��	azw�az��az�az�
�az�azaz��azaz�azw�az�az��az�azaz��az�azw�az��i��0��,az�� �)�!�(�"�%�#�$kXgCgCgQ�&�'mv�gCazazw�*�+gCazazwU|�-��.��/�6��1�[az�2�3�;�4�8�5�7az�6azv�azw�9�:wazwazaz�<az�=�>�K�?v�v��@�A�H�B�Fv��Cv��Dv��Eazv�v��Gazv��Iazv��Jv�azv��L�M�T�N�Q�O�P������R�S�����U�X�V�W��D��Y�Z��|�\|�]�^|�_||�`|�a�b||�c|�d|�e�f||�g|�h|�6�j���k���l�naz�mazm�o���p���q��az�r�s��tazaz�uaz�v�w�{�xaz�yazaz�zv�az�|azaz�}�~azazv���az��azaz��az��az����azaz��v�az��az��az��azaz��az��az��az����az��azv�azgQaz��azaz��az����az��az��az��azaz��az����az��azazv�������az��az��azaz��az��az��az����az��azaz����az��azv�az����gCaz��v�kXb�����az��az��az����az��azw�j��az��az��azw�az��|��R�������S���������������������E����E���'H ��������H AeF��������H:Ae��������������H:Ae��BaF�H ����HGEBaE���������������EH:��������H:����*9HHG|�����������������F���E�����E�AeE�E���������~�EzE�����E�'BaE������EE��WE��������EH H EH:���Y�)AF���Aeh4d]x�	
H:EE
H:H:H:H:H:H:H:H:H:s�H:E�gAe Lakt�e�GaNaN�!#"L�M`�$(%'&��siMi�i�`�m�*C+@,=�-.�/4�O0�O1�O23�O��O�O5�O6�O7�O89;:��O�<��O�>?��_���A�B��DJE��FG�HI�O��_�KNLM�_��O�OPQ�1�QR߫�_�T�U�V|W^X[YZ�HcWNb�\]`�c�kud_u`taMNbNcdNeNfogkNhiNNjx�NlNNmx�nx�NpNqNrNNsNx�t�akvy�w��x��q�Mzli{gnli}�~��LMj�N��`�ddM����N`�q~L���Nb�dt���������i#�g��tOMb�c���`����pz�gnpz�d��kfkf������d�d��d��b�cW���L�t�H:������p�liq~`���b�Li#cW����`�akcWc���L`���x�b������������ohnW�ak�p�tk���d{mg4b�d�����lb��ڳd$`�g4��cW���g�tO��Mb����������L�dazd��L��o��i#b�akaN���N�az��Q��NOE��`�`�ؒ`���������l��d��azazw���Laz�b�azc�q~����nWi�g4M��cfLLi������b��d��gn��b���h4x�h4db�b�b�b�b�b�b�	b�
b�@
dc�#����m�i@�N�`����c�e�L�LML�1@@@ '!#"�_p�@$�OQ%1&1�(-),*�O+a�O@�1Q./�@�!�0�1@2Z3B4;586��7�_��9�:��<?�=�>�_��@A���_CMDG�E�F�_�HJ�I�O�KL�p�_�NTORPQ�����S��_UXVW�A��Y�A�[u\m]f^d_c�`ab��_��OQ�e���gjhi���Qkl�a�_��nos�pq��r�_�t���v~wz�x�y�_k�{|}��O���������_��_�������D�����|az���az�az�az�az�gCaz�az�����azgCazaz�v�azaz�az�azv�|��azaz���az�����w�wqv�az�azv�az�azgC��azubu��C������������gCgQazw��b�azw*gC��az�����gCazmaz����az�wc�������������������������������������������az��az�{��{��{�{���{�{��{��{��M����azgQv�az��maz�?��������azv�b���u�mgCt�����gCwt����ubu�ubb�������azv�azv�az�gQwFaz��azv�gCaz||azv�v�v�v�	
v�azv�v�
v�v�azv�azv�%v�v�v�v�azv�v�azazv�v�!v� v�v�az"v�#v�$v�v�az&6v�'(-)v�*v�+az,azazv�.2/v�0v�az1v�azv�3v�45azv�az7=v�89v�:;v�azaz<azv�>@v�?v�azv�ABv�v�az@&ME�F5G�H�IaazJKVLazMazazNOazazPazQRazazSTazUazazv�WazazXazYZazaz[\az]azaz^az_`azazv�bngQcgQdekXfkXkXgkXhikXjkXkXkkXlmkXkX��v�opazq�r�szaztuazvazwazazxazyazv�az{|�az}~azaz�azv�az�azaz�az��azazv������az�azaz�az�az�azv�az�az�az�az��azazv��azaz�az��az�azaz�azv��az�azaz��az�az�az�az�azv�az���b���az�az�az���az�az��az�az�az�azazv��az�azaz�az��azaz�azv�az���az�az�az��az�az�az�az�azazv�az��azaz��az�az�azaz��azv�azv�m����gCt��t��azt�azv�����az���az��az�az�azaz�az�az��azazv��azaz��az�azaz�az�az�az�v�az��az���az�az�az��az�azaz�az�azv�az��azaz��az�az�az�azv�az�azazazazazazazazv�az	
azazazaz
azazazv�azazazazazazazazv�azazazazazazv� az!+az"#az$az%az&azaz'az()azaz*v�az,azaz-az./azaz0az12az3az4azv�az6y7B8>9:azv�;v�v�<=v�v�wt�?@Amb�gCkXCHDFEazb�azazGgCazImJUKazazLazMNazOazazPQazRazazSTazv�azazVWazX`YazZazaz[az\az]^az_azv�azazaazbchdazazefazgazazv�azijazazkazlazv�aznoazpazqazazrsazaztazuazvwazxazv�azz�{�|~v�}gQb�az�azaz��azaz�az��az�azaz��azaz�azv���azt�v�az����az����az��az�az�az��az���azaz�azv��azaz�v�az�azaz�az��azaz�az��azazv��az�azaz��azaz�az�az�az��azv�az�������az�az�az�az�az�azaz�az�azv�����az��azaz�az�az�az�azv��azaz�az�az��az�azazv��az�azaz��az�az�azaz�v�az�azaz��azaz��azaz��azaz�az�azv��az�azaz�az�az�az��az�az�az�azazv��t�gCm����������]�]�k�|�A�|az|��az�az��az�azaz��azaz��azazazazazazazw�azaz	azaz
azazaz
azazazazazazw�azu�azv�u�mazL(azazazaz azaz!az"#azaz$az%az&az'w�az)@*5az+,azaz-az./az0azaz12azaz3az4az@6azaz78az9azaz:;azaz<=az>azaz?w�azAazBazCazazDEazFazGazazHIazazJKazazw�azMNPazOazmazQb�azS�T1U*V�W�XpYdZ_[^L�\M�]M�[L�L`acWL�L�bMcM�OekfgL�Nhb�aNiaNj۱Plomm�n_�bnM�o�qvrtb�sdL�Lu`�aNw}xyazN`�z{|l�dl�d~H:}lxM���������{
�b�d2b�cWd��nWlb����Q�N�N���N�NN�N��NN�Nx�N��N�NN�N��NNx�����Mm�N�`��c�~��g4�C�d���a����������o�b�o�v�b��������d]�+��+��+���+��+��+��+�+�d]h4����݋ݶb����e�b�lKb�����Lb�Nq~��b�MazL������������b���i�i�i�e��~g4m���8��gQazgQ�j*�e�i�e�����M��tkak��dj���N��L�s8�li�������`�cWMrXL��Lxv����xvc�Lq~����d{dl��b�v�azv�~L�����d�g�Mg�c�H:�b�|�6��L`�	
b�
azkXkXwNL�akp�	��[L�b�L�L�dQ�N;OT Nddg4!&"%#$�l'tkakmg4d'()6`�6פ+�,�-C.:/501`�Q�d{234b��Y~�y67p�db�8l9d]�+;@<=licW>Nt]?e�EABu�pzNb�DMEGNFb�rHLI}�JKTc`�����MNUOSrPQR���C�Tp�N�VW`�H:XdYxZi[bd\]dd^_dd`da�dcdddedfddgdh�djqdkdlmddnodpdd�rddsdtuddvdw�dyddz{d|dd}d~d���d�d��������N`�iMM��c�p��xv���������������d]h4�nh4M�g��;md�NNL�������d�����e`��g4m��L�db��Z����b�`�xv��������AIK
Q����d�e�e�d����d�e�d�e��d�e����������d{N��פ��b�e�d����NQ�Q�Q�����c����M��M�M���MM�4M���MM�M�M�M��J����o�t��`�`��%��Ll�`�M�������dcWl�M��L��e�d�e��b���c�g&��������c������`�L�d�d�dd��d�d�dd��d�dd��������f�Zf��e���e�	
$3CS
d�cs��k��ddMMN�`�p�b�Nu�v�b�&# �dN!"NP}N$%NxvakM�',(){�L�N*az+azgC-.Ndak/m0g4m2�3�4p5Z6K7<8;9N:b��>b�Nb�=Hc�>M?M@MABMCMMDEMFMMGq�MdI��J����LTMPdNy7Ob��NQRSgQv�v�kXUVLL�Wb�XYQ�Q�OEQ�[d\_]^db�dq~`a�ib�bd{cak�akejfiL�ghw�"azds8klL��mmq~nog&g	�g	q�rzswtub�q~v`�q�dxyg4d{b�iM{~|}o�xv`�ak��dlx��rXakc�������ak�d���b�M���L�N�N;N���NN�'�ak'����b��e��b���liM�����iM���m,g4�g4������������ g��MtOc�g4��`�g_b�g_����L�d{dL���dL�dM�������b��e�e�`�M�M��L�m�cW��Q�N+NW�����cWM����NN���d��l�g	�,���Q�N;OTQ����������L�w�azLb���b�NMaz����e`���xv��L�Lc���N^�Q��������� m����+dqp��c�b�dN�����dp�d������gCwUgCwQ��Q�N�xv����oo���n�,��	�iMH:H:�M*rIdN9פazu�
c�
b�cWQ�L�rX�Mgn{
e�e�d�&d�d�e�He�d�e�e�d�#ku !"N�b�Aed$g_%g_X')L�(M�`�*+`�g4Md-N.C/201�NcWlH:`�34A5@b�67<d89;d:i#db�d=d>n�?m���fb�ddBdo�DKEHFg4m�Gm�dIp�e�Je�uLMNb�LNOaP\QRg4iMSL�T[NU�V�W�XY��ZN�N;Q�]^g�c�cW_`MlBbhcgLdef����H:nWimljkle���e�do�p�q�rxstNiMuxvvw�su�z�y}dz{|OEQ�NQ��,~Q�Q�Q�����c�`�Ngn���H:L���azgCaz������`�dcWg_��hdd{��C�i#�C����q~��azv�azb�N��q~xv���l�`�s��s���������M{
db���b�d�d��x�d$d$b������b���p�akaktkaz���lih�h�liL���d��E`�E`�����g4�p�q~��M����ڈg&c���,e��e�����i�H:Mxv���b�e��e��)bH:�8��	����l�-���������f�f��ff�f��f�f�f�ffZ�Nc�N����`�i�F�`��i�i���N���OTQ�OTQ�x�M����c�m;�p���azv�t�v��N��b�b��b�b�b�b�b�b�b�b�b�	b�
b�b�b�b�
b�b�MdNNl�L�aktkN`�Ni�Q�q~akaktk& %!#"`�lKi�$x��p�Nd'(MnW),*+NQ�NQ�Ud.I/:0512g4az3L�d{4d�dl67li�L8L9{�{�;@<=e�M>l?d�d�e�ADd�BCd�h%d�EGYFQ�P}dHc�dJUKPLMs��Nq~OnW��QRe�dazSTb�b��V^W]X[YZs�Np�az\gCazMd_ag4`OEYLbcb�db�eb�fb�b�ghb�b�ijb�b�kb�b�m�n�o{psqrcWMc�g4txb�uvwb�Oqb�e�b�yL�z��|�}�Y~�OTQ�OTQ�L`��Maz����x�~��������rX��rXrXlx�L���LMq�d���d�����d��d�kf��L��`�d��������dNiMd��N���Qd�CL�M�����ld�d�-d���c�g&�l��Ba`�L�b�������nW�e��d�e�iMb����m;dm�i#L����b��e��`���dr����i��i�i�ak�'ak���i���`���i�`�`���	5�	��������c���d�dd�d�d��dd��dd�d�~N���P}{��L�g4az����b�nW��M�Mc��b�b��9���L���w{�������dg4iMg4���b��K�K�tk`��	��dxvq�b�		i#N	`�d	db�									
ldL�			
Mg�tOg�			M	azazgCdM				L�c�`�M		d{i�N;L		.		!		 L�		elx��Q�az	"	#rM�rX	$	%b�b�	&	'�	(�	)�	*�	+�	,�	-�o��	/	2	0	1L��C`�L	3	4`�b�s8j*	6	r	7	Z	8	N	9	>	:	;xvl	<d	=s�H:	?	M	@	J	AMg�	B	CM	DM	EM	FMM	GM	H	IMq�M	K	LP}Q�OT_Fg4xv	O	R	P	Qs8ML�g4	S	Y	T	VQ�	UQ�Q�	W	Xdy�y��%Nd	[	g	\	a	]	`	^N	_b��9b�Md	b	cg�`�j	d	e	f=���	h	k	i	jNdq~az	l	nM	mQ�N	oL�	p	q`�Q�Q���	s	�	t	�	u	{	v	wd{W�	xg_	y	zlih�li	|	L�	}Vp	~Vpc�iMd	�	�	�	�	��	�	�e�ߺe�`�	�L�	�,;	�	�	�xv	�b�	�b��J`�az	�	�	�	�	�	�	�d	�akak	�	�akak	�	�akak	�	�akak	�	�akakYN�f	�	�	�d	�	�ՙbbe�L��	�	�	�	�	�cW	�	�H:s�H:s�L	�h	�h�	�	�b�g4	�	�b�	�b�dMg4	�
{	�
	�	�	�	�	�	�	�	�	�	�	�Q�	�	�Q�	�	�NN	�	�N	�NN	�	�NN	�x�NOTQ�dM�	�	�az9L	�	�||�	�	�	�	�	�	�	�c�ڈvM	�y�g�	�M	�M�;M	�	�dL�`�M	�	�	�	�	�	�L�	�ty	��h4L	�	�	�VpgnVpN	�	�Ae�Q�iM	�	�	�	�Ael�s8	�	�cWcW�	�	�d`�M�	�
	�	�	�	�	�	�d]Ldd�	�	�M`�Ae	�m�d	�	�d�	�~�	�	�e�e�e�	�
b�L�Ld






d�g_L�L

Ng4
	Mdr



N



[�Q�NP}Q�xv

c�


�rI�lxNL�

Q

5

'

!

i#b�
b�

 b��Yp�y
"
&
#
$
%b�L�lx�az�
(
.
)
*N`�N
+
,
-e��Fe�
/
3N
0
1
2���d�L
4b�p�
6
B
7
:
8
9H:�*Nd
;
A
<
?
=
>rXx��`�
@NNOTcW`�
C
G
Dd
Eb�
Fm�dm�
H
PM
Ig4
Jm
K
L�
M�
N��
O��Lm�
R
c
S
\
T
W
U
Vlb��nW
X
[L�
Y
ZYQ��Vxvb�
]
a
^
`c�
_W�N�yM
bddL
d
r
e
j
f
gLl
h`�e�
ie�b�
k
oL
l
m
n
b�
b�
p�btO
qg�M
s
v
t
us8c�M�d
w
zM�
xc�
yc�dg4
|
�
}
�
~
�

�
�
�
�
�`�c�m;t�
�
�L�e�
�
�
�
�azgCv�b�
�
�Q�\�N+
�N
�
�NN
�N
�
�NN
�
�Nx�N
�
�
�
�M��
�
�rd
�lx&lx
�
�d
�
�55D
�M
�dRd
�
�
�
�
�
��QMi�b�
�
�MdcW
�d{
�d�d{
�
�
�
���Lb�d
�
�Yb�b�L�
�
�
�
�
�
�
�
�L�az
�b�
�u�w�az
�
�Nc�
�d{
�t�azgC
�
�
�
�
�g4
�
�aq�J
�N
�dl}�d{
�
�MNd
�N
�N;N
�
�
�
�
�
�q~NQ�N
�
�
�iM
�
���di#d�FN
�
�
�
�L��azpz
�
�Mb�diM
�
�
�
�
�
�
�
�akd
�
�
�
�p�L�`��
�
���i�e�
�
�
�
�b�
�azgC
�
��i�i�e�&
�
���8
�
�
�
�li
�
�
���e��Nq~
�b�db�d	N�`��e�azL
�XL�פ`�
dcWelx��lxL�M�o�o�dg4T$ e��p�b�g4!#"�Ng4M%O&*'�C()�����+q�,�,�,-.9�,/�,0152�,3�,�,4�,��,67�,�,8��,:@�,;�,<�,=>�,?�,��,AF�,B�,C�,D�,E�,�GKH�,�I�J��,�,L�,M�,N�,�PQNm�Rc�SazgCazUoVdWXazLYdZ[rX \rX]rX^rXrX_rX`arXbrXcrX rXekfhg`�aNazij 1gnh�xgllmnYP}VpOqpvqri#lsQ�tuڥ��b�yw{xz�yz`+N @O�MN�}~
j��������������EEF�E�H:E����EF�E OE�E��������BaE�F��E��dF�HGE��E��L����������@&AEBaEE���E��E�E�������u�azaz��azu�azEA���A��EEzEH:���A�SA�EE��AeB�Ae�������A��H:@&��A����H:AeAE���E�AA�E������E ]AE���@H:�H:s�EAe�����EEK���H:���'���E����������H:�EH:A�EH ��H:�A@&��AEAE���A�AH:Ae������Ae�N�gnb���AAeEA�3�������ڈAF���@&HGH:EzAEAH:EEA
E	E��Ez
AEzE�H:@& k� yM�A#EHGE��XE�AEH:|�H:E @&!"
�Ae
�$+%(&'EAAAe)*ڈEEM,0-.azA/H:�az12azEEA4k5P6G79E8E�:;@Ae<F=>�H:?�s�@As�Bs�Cs�Ds�Es�s�E�HKIJ@&H:@ALOMENBaAe�'EazQbR_S^�TAeUAeVWAeXAeAeYZAeAe[\AeAe]B�Ae
�E`a|��'E�cfdeEAENgj�hAeiBaEAH:lymtnqopAeA�ErsAEE�AuwvEH:AxEE|�z�{~|}@&H:Aaz�|�A�~Ez�����A �HGAeA��H:AAE�
����������E�H:��s�H:s���A�~AE��A�H:E��AeAEH:������H:E@&H:���E�������H:�H:@@&�EA�EAe���������@&�g�H:@F�A��H:EA�����EzH:wEz��EzENE��E���A@BaAe����@&E�'EzEz�K�E����������EK�AE���@&AAeE�����6��K�E��E���azv�azb�@�������EAEH���H�@�'E����H:��~Ae~�'EE�EzA��������E�M@&��EzE�~H�H����H�EEF��
���EH: ��EBaE



EEz`�Ez�S
EA

;


	



EE


E

 �E � �



EHG@&EE
E�


E

Ae�E|�E


�EE@
 
3
!
/
"
.
#H�E
$
%F�F�
&
'F�
(F�F�
)
*F�F�
+F�
,
-F� �F�H�EE
0
1
2EF�[��E
4E
5
6
7E�
8@
9
: ��� ��w
<
S
=
F
>
@
?EH:E
A
CE
B@E
D
EEAEA
G
L
H
JA
IAH�H�
KEH:
M
P
N
OH:��AH�
Q
REA@d
T
]
U
Z
V
X
WEE|�
YF�E�E
[E
\EEz@&
^
d
_
aE
`F�@&
b
cazH�H�Ae
e
gE
fAE
h
iH�EEEz
kj
l
m
�
n
�
o
|
p
t
q
rH:EE
sEH:
u
z
v
yE
w
x�AeEEH:
{E�Ez
}
�
~
�E�
E
�
�Ez
�Ez
�Ez
�Ez
�Ez
�Ez�Ez
�EH:��
�
�
�
��AAeHG
�E���
�
�
�
�
�
�
�
�Ez@&EA
�
�EF�H:
�
�
�H:s�H:s�
�
�
�
�EAH:
�
�
�
�
�
�E
�E
�E
�
�
�EE
�
�EE �
�EE
�
�E �E
�E
�E
�E
�E
�EE
�
�
�E � �E
�E
�
�
�E
�E
�
�
�EE
�
�EE �
�EE
�
�E �E
�E
�E
�E
�E
�EE
� �E
�
�
�H:�
��t@@E
�
�
�
�
�
�@�'
�H:
�
�� ����
�
�H:EH:L
�
�H�E
�EA�
�
�
�
�
�
�E
�
�
�EH:H�E
�
�
�
��~Ez�E
�
�H AH:Ba
�
�
�
�A
�AE
�
�H:F��A
�E
�
�AEK�E
�
�
�
�
�
�EAeH:@
�
�Ez@&H�EH�E�EA	A�Ae!!
F��@&H:
�,A�EAEE|�< AAAEBa��AAAAE!3"A#&$%EH:H:EE'E()*H:s�H:+,H:-H:H:./H:0H:1H:H:2H:�47A5A6AH�8H�9H�@&:Ae;Ae@=S>F?CE@ABEH:EADAAENAGJAHAIAEKNLMH�EzAeEORH:PQH !H AEzTcU\VXAWA�YAZA[b�azv�]_^AEAA`AaH:b!+H:dAegH:f��Ahi��AE�~k�l�m�n�ovpsqrAEH:�tuHGAH:Aw�AxyAzAeAe{|Ae}Ae~!9Ae!9Ae��EAeHG@&������H:AH:A�H�AH������A�FEzE�E@��H:EEA�����E��EH:@&E����H:Ae�A�EAE����E�Ae@&�@&AAeE�E�A���Gti@�V�d���������H:H:����AF�A@����H:EEA��H:AAE���A���E��H:!+!+H:�A��A�@��H:�H:�H:�H:s�H:�AeH:E�����E���E�Ba!FBaAE��H:���EE�E@&����F�H���H�EH:�����@BaE�H���@&�E�E
�HG���ײ��*�������H:�EH:E�AeE��E��AeA��F����E��H:
����HGEzH�H��EAAA��	

���E�EE��@&EEF�G�F�EH:�EEAeEi@AH:A "!EBaH:#'H:$%&��!Tٰ@()EE�g+B,8-2.0/AH:EzE1E@&354EF�H:67�EEBa9<E:E;EAe=?>E@E@As��;EH:CQDJEHFGA�E�AI|�AKNLMH:HGF�AeOPK�AeH:ER]SXTWUEVazaz�E�EYZE[\C�A�AE^_`E�azH�b%Bcxde�f�g�hi�j�kxlqmnNakLopd�Cdrts`�cW�fug4vw&!b!bby�z~M{|}g&����=L���!p!�d�e����e�d�d�e�������Nq~d����lxe��!���M��MM�;akd����akdMc���L�lb����s��!�������������!���������!��!�!���!�!���!�!�!�!��!���!����!�!��!�!��!�!��!�!�!��MiM�����azazw��d{}�}�!�����tO�;g�q��Q�Q���N�N�N�N�N�N�NNN;�����g4lg4��lxdb�d{������M����N!�[�NL��b�b��}��rMc����[�NNQ��������L�!��ak���l��l���l��l�l��l�"�l��l���l���l�l��l��l"��l�l���l�l�"�l`�lx`�dR	�
rX"�r
llg	azLxvg4diMi1b�dL�l�NM��0M�C#lg_d{ !"b��0")b�$(d%&'b"6ak�{),*+OTQ�OTQ�d-�K./;0d1o�2o�3846o�5o�do�7"Eo�9o�:o�do�d<d=d>d?d@ABd"E"Eo�DLEHFMG"Kl�"KIL�JK��xvxv��MNdiMc�OPQlx"ZdNeSoT`U]VZWYX!�l!�Q�N;[b�\y7"jy7^_Ndb�xvaibf`�cdel�`�"yaNgNi�hږ`�jkNdlM�mn~�b�b�x�pzqwrvL�stus�"��*l�b�rXxyazaNL�az{�|}cWF�N~e�e�d�`�c�����������d{�b�c���Lm�L�c�������H�t�gCazb���dNM��L���NNQ�M����������t]e�cg4li������_F^CQ�Q������hM�`�d����K�N�`�db������������P}N������"���e�*lx��������bL����OE\����Q�W�N+Vp�����e�e�`�ږe�gCc����b�Laz��c�d�b�az�az��������dN�m��Q�Q�U\�^�"���c��~�"�NL��������"�d"��C���C��C��C��C��C�C��C��C��C"�dL���q~d{xv���*)��lx�7������N�c��Oc�`�qpdy7g4L	c�db�e�lKe�

Le�e�b�b�NW�-*'%dddb�d"b�b�o�o�o�d !dq���N#d$dm�d{�&{�b�q~(P})P}N+,LNM�.4/0b�"�l123m�ddm�56M��dh8i9X:=;<lLM"�>?X#q~@H:AWBdCb�Db�Eb�FSGLHJb�Idb�b�Ko�b�MPNOb�c�b�i#QR�Qb�b�n�Tb�Ub�Vb�"�ddi#Y`Z_[]ֈ\#G�*^l�l�"KcWLafbdcazazwNe�#VgM�cWh�fcWjsknlmQ�c�Nc�orNp#eq"ZrIM`�twuv&Q�d`�x�NyzcW{cW|cW}cW~cWcW��cW�cW�cW#s��#s�cW#s�cW#scWY#���	�����������OT��L�p���VpNg4��e�lx�d�MMM���������iMazLg4��rX�HNM����dlx�rX������c�#�#�c��g4�+g4������l�d�d?���b�L#����Lkudd{�����q~��h�0h#�NM���d��VpW�NQ�Q�d�������M�e�rXlx��c��������N���dsudb����iM��M����~�b��d{d{dlb�l��������w����Q�Oc�Oc��OcOc��Oc�OcOc�NOc#�Nq~�e��e�i�`���`�d�di#�����MQ��OqQ�M���azazw�b��d��dd�ddddddd�L�lxrXlx
T2'
OE]�NQ�Q��Vd`�$MOcOcOcOcOc OcOcOc_FOc!OcOc"#OcOc_FM�%`�&`�e�(/)*e�c�+.,-�o#��-RQ�OT01NM�liL3D4956g4L�7e8db�q�:C;g4<B=M>�o?�o�o@A�o��o�;MMakEHFGb�akhs8IMazJNKNLMNNNONPNQNRNSNQ�NUxVcW_XYMe�Z\[Lazxv]^NOTNOE`a`�b�lbdb�dlefNaNgjhi#��i�i�i�ki�i�mwnqop#�ߺ��ߺrvstoh#�ug#�#���c�Ndy�z{~|N�}v�w�fL���rIaz�dN��$e�e�i�����lxH:��Դ�Դe��Mg���������M`�`�b��lxlx���Q��Q�ak��NQ�NQ��2�����������|g4�g4m�b��b�b�J������M�Mg���Q�NP}N�e�e���e��`�����`��`��`��`��`�e�`��`���`�`��e�`��`��`��`�`���`�`�e�����L�����ob�b�ddM���llxM�b�������b��Ns8����e���L�|��]�qp����$$$�W��d��b���
4c�M�b���������cW��NQ�NQ���N�OEN��g���g�$3��H:�w�gCb�L��b�$B$Q���laN��d�dr�d{d{d{d{d{d{d{d{d{d{}�	
Q�b�
&�"Zlx$`$o$$�L�dK�dnW��~d�>Q�N*)M db�!"d#dd$%d&dd'(d�ddq~+,b�g4-0./OTQ�OTQ�e�1i�e�3]4M5?6<78d{N9�:;OTQ�OTQ�=>m�d`�rX@JAGBDrXCՙ$�EFlxeՙlx�CHH:Is�H:KLv�LNdNUORPQaN`�L�NSTb�xvz�b�VXWdNg4Y\t�Z[Mg����Rd^�_y`saobecde�e�e�Դfe�gԴh`�i`�j`�`�kl`�`�mn`�$�`�pazqrgCv�azgCtxp�uvwc�db�dxvnWz�{az|}~e�i�`�e��ty�OTNOT�������`�e��`�i�`������OE[�Q�d��-d������dLdc���N�b��b�~�c�g4����l���x�h4h4݋��e��e�H:��iMdli�$�$�����%�����������c�����M���az���b���db�o�dazd����LaNl���$�A$�A��q�j*kug4��������N;�NN;�$�i�NM��nWNdL�����de�c��M�`�N��d���d�d�$�q~���%
e�e�%��������d�j����cWcW��cWcW�cW�cW��cW�cWcW%(��,YN��b�d��M������;���O����d��d���ՙ��db�#�,���L�d������Me�e�e�b�Md	
OTQ�OTQ�
N&bblxW�Q�Q�Q�e��&B`�e�i�e�W�W�NNN !N"N#NN$NW�&g'E(5).*+lg4,L-azazw/30&Q12iMsMiML�4`�i�6<78LM9M:;#e����#e=AM>?@&`��`�lKdBCDlx���lxFXGOHKNIJddb�LLMN؂&n&}&�PWQTRSrIlx�bUVrI���.eNdY_Z^[N\]ililipzrXq~`cb�ab&�e�&�q~def��i�t]ߍh�ixjmkl��ELdnrL�opq�h%h%kfsue�te�e�vwi��re�y|z{Lj�d�-}~L�~i���Դe�e�`��������N��dm�b�d����q�m�b�m�N�Q�N��M���Mq�g��+ak����c�`�`��M��M�M�M�MM����L�d��d�d�d�d�dd�d�d�db��,b����X�>�8�������NQ�N;����bՙ�*�li����������������&��5���T���g�����������Z�����K&��h΄�������
�]�+���'���������'�'��(�]���w�W(|� ��������(��y(�(���(������b���������˜����������������x�N�u�-���Y�������������������Ʌ�m���*�6�g4�5�N��VpVpVpVpVp(�VpVpVpVp	
Vp(�VpVp
VpVpVp(�VpVpVpVp(�VpVpVpVp(�VpVpVpVpVp(� )!%Vp"#VpVp$Vp(�Vp&Vp'Vp((�Vp*.+VpVp,Vp-(�Vp/20Vp1Vp(�Vp3Vp4VpVp(�P}N7�NQ�9<:;s8Ndj*=ddN?O@IABl|CFDE���(�rXGHOTQ�OTQ�JNH:KLMv��"���?q~kXPUQRlb�xvSTg4g4��VWL�dg_NYqZf[^\]N;iMNM�_b`OEae�e�i�c�cde�rXl�glhib�azjd(�k(���mpMnod{d{�jj�`�r�sytuL�az`�vwxq�(�)
m�z�{}|�����~�.rXrX)N�xv������N�e�ee�e�e��ee��ee��e�K�nW��R)(���QLML��������������i�lKߺe�~Ae�M���i���8iM��b�L�b����Ei�$������xv��OTQ�OTQ�l�����N�rX�brXxvg4������xv�g&lL�b���M�.xvc���`���lx��ak)7akl���dm���Q���tkb��bb�b��b�b�b)Fb�rXrXlx�������dcWe���b�db����dm�d�Q�����NN�P}NrXN��e�i�b�)[�����������Cb�d�C�wb�jc�Q���azt�q~c���������MtO��M��OTQ�OTQ�ײb��i�M�dY�)is=%	

nWu����Nlx~�lxL�e�e�i�iMku�)m�db�dd{�;��xv l�b�!#"b�db�$e�e�E&5'0(/),*+rX!�ՙb-.OTQ�OTQ�rXb�12b�`�3b�4Mg���6;7:M8cW9cW�"�L�d<d{d>^?M@GAFBCi#dDENMQ�OTMNHLIg4JK�OM�q�dNNYOSLPQR�oMdMTVe�Ue�i�WXi��e�e�Z[b�d\N]db�d_k`eadb`���c)x��Q`�fidgNhOTQ�cWjazgQlniMmq~)�orxvpqazkXw(�Mt�u�v�wzxyc�L�Raz{~N|d}dm�N�W�Q�Q�����c�d`�d������OTQ�OTQ���x�cW$$)����)�g4��NQ�N;������LH:db���gnb�N�e��e�{����cWe�NM���L�d�Nb��o�q����������Maz�b�az��Q��)�MM)���g4c����c��g&ak�)�ak����q~L��L�)�n����d��lx��dN���d��e��e�������Le�N�N�N;N�b��N�N+�������Vp��VpVp��VpVp(�Vp�Vp����Vp(�Vp�(�Vp(���Vp����Vp(�Vp����(�Vp(�VpVp�Vp(������Vp�VpVp(�Vp�Vp(��Vp�VpVp�(�Vp�Vp��Vp��Vp�Vp�Vp(��Vp��Vp(�(�VpVpVpVpVpVp(�Vp!��Q	
M`�M
p�akakakakakakakakaktkakLg4m���d�X5+ &!"fd�,#$%ML�L�`�'(Nd�b)*��lx�,2-0b�./rXrXbL1ږe�34xvt�dg46@7:89hLe�H:;?m�<=>y7)�)�)�d{azAGBCazl�DL�EFdm�i#m�HSI��JddKdLMdNdOddPdQdRdm�TVUrXrX)�Wi#ri#YvZc[^\]ak`�y7p�_`Ndag�H:b"�H:diehc�fgW�NW�`�L�judkdlmdnddodpqddrsdtddm�`�iMw�x�y|zrfl{g&l}�~e�h�h��OTQ�OTQ������b�d$b���*$*$ՙd����cWLN��gnpzgn��g4���gCaz{�b�|b��������������d�Qd��*`�,*)�fli�)��pz�pz��pzpz��pz�pzpz�gnpz��db�g4b�����L`�Nפ���C���VpNOEVpL�NQ�������g4�c�d���b��C�b�suku���`���`�`���`��`����`�`��`�e�`���`�`�e�`�e�����c�`�*8j*M�McW�������dMb����i�$e�����Laz�azgC�cWx�����x��x�x���x�x��x��x��b�x��p�p��p��p��p��p��p��p�b�������`�e�e�`�b�x�b�L��-d`�dc�
	M
NQ�NQ�b�hi�cW�,����AMdi#b�p���rXNפ���G 5!+"'#&$l�%H:��b�i�L()iML���*q��,2-0`�.e�/e�i�1b��0b�34wUn�M`�6@7=89rXg4:nW;<�+���>?b�g4&L�ADBCd`�dQ�EFg�M�c�iMH~IwJ_KLW�dMWNazazOPazQazazRazSTazazUazVwazX`�`�Y`�Z`�[`�\`�]^`�`�*F`aMNbtcakdleakfakakgakhiakakjkakak'makaknoakpakqakakrsakak'uvOTQ�OTQ�x{yzMW�rX`�|}e�Md������q~Q�g4L��g4�d{�dld{Nb������L���Q�N*V����%q��;��Mq�����q��q��q��q��q��q��q�g�q��Lg��NQ���������������*e�i�e���x�b�d$x�dd?���c��l�g`�������MM��MMd�d�dMd����M�M�Mq�����M�M~�M~M�����MM�J�M�J��M���MMq��M�Mq�M����li���d]d`�dd�Vp�OEN��M���i�`�i�e��y7��&ee��������b�azg�A��g4M�aNe��i�e�����gnMlN�L�L�b��
�����`�LMN��Q�Q��Q���*d[M�#�L�`�i��*re��	פMQ�b�
`�g4Nc�v�xvwazv�d|�dLdi#dNQ�OTP}� �!R"9#-$)%(q~&N'[�VpMK�d*+drX,erX.4/0L�*�1c�23e�`�e�`�58M�67Q�VpW�NM:E;><=b�MMl�?B@dAlilih�CdDlx"ZlxFLGHd]NIxvJKM�#�M�hMPN�OH:�9H:QNg&ڈSnT^U[VZWdXYlx�wlx*�dak\]MLb�M_g`dab�bclih����ede�fe�e�hkMij�lx�wlLYm�VQ�o~pvqsrNgnx�to�liuli�wxNL�g4yz{mgC|�1}v��v����Le��d)�n����j�����B�~��~~*�p�d�������������e�e�i�b�dazrX��LL�H:���lx� ������Q�dcWc���d�az�gCaz��*�ku�azv�v�������K��kX�ub�diM��b����Mb�b�NMN����L�eL�+L�b�N��������Lgnn�d{��b�b����s8)�s8��*�q~*�q~�����xv�b�x�d]rXb���b��d�M��M�M�M��M�q�*��MM�J�������Ne��*�e�e�L��L�H:cWd�����d���TL*�Laz`���N�e����e�����b�gCv�w�i�e�ږ���u�G�*���i����=M�M�*�Mlg&g	l`�M�M�	M�
M�M�
M�M�M�M�{�M�M�M�{�M�$�VpW�Q�Q�Ls8c�s8)d cWp�N!"N#N$N%N&N'N(NQ�NMN+4,1-0.LQ�/NN;LM23xvLLb�5:697*8Q�N+Q�+
L�;<dcWN=>b�b�?b�@b�Ab�Bb�CDb�b�EFb�b�x�HbIXJSKMg4L+hNPc�Oc�b�QR`�i�t]`�TUf��ؒVL�WL��IY_Z^L�[\]`�e�i�b�N@&`aLdN�Ncjdgefm�L"�M�hid`�dLkplmdd{ncWo`�`��qte�rsb�d$b�iMMv�w�x�y�z{~|}VpW�N;+'i#dNQ���Ajd{&����g4��L�iL�b�N��c���NNdL��i��e�i��������H:g_�MiM���`�e��e�������NQ�N;N���+7)���)��)��)��)��)��)�+E)��5+T����g_���+cxgq�gn�N�Q�NQ���d�LM�ak����������rX����v��e�e�i�e�aNL���rIazL�i#����+r���e�i�i���N�g��g�M��j�L�Ms8����"�������g4��Q�OEN+�Ld��c�M�dM�����L��	Y�+�sG�cW�ak`�ak��akb�NM�T�-�������N����+��lb�L��Q��+��i����N����MxvN����+�+�+�+�iM�8iMazM	
b�d�Co�
+�r"�sudd#�Qe�i�i�"d�g�(��M�NLg&liM !VpNVpN#)$%g4dN&'(+���b���*d+W�,b�p�b�.@/90312W�NdM48M567b�d{iMc�dN:=;<M�g�פaz>?dפLd$AJBGCFLDEazazgC`�b�HI`�azLazKNLMg�Mpz�OSPNQRv��^���^L��U�VnWcX^Y]Zl�[\�jd{dld{L�`�_`L�dAabb�b���dhNeL�fs8g�s8ijL{�kb�lmdb�q�b�o{puqt`�rsOcOc��Lb�vxMwcWNydakz�lak|�}�~d?�d2b�b�x��b���lxՙՙbN��c�sud��������p�g���b��b�~�M�M�O��e�dazN����d�d�d��d�d�d�dd���d��ddm��LML��������LפNg4��L��cW���$$c�L�����Lb��d{��,x�b���dLc�Q������(��������M��LN�P}Q���L�dAM������NN+Q�P}g4���su�sud��nWg4�d��NN;OqQ������������g_����g_d{N�Mg_���x�b�x�b�����j�dp�d�����d$��x�rX�rI9b�d�
������az�d`��Lm�azw��`���NOEQ�dL���b�d{b�M�MtOg�g&�g&�=L�	n�dm�
NlxlxedlxelxdNb��be�Դe�@&b�#"d !e�b�e�i�MN$'%dpz&s8h�NM)\*D+8,2-1N./0s8,gnpzazb�37N456ՙ ��,db�9<:;dMm�b�=C>@?Դ�e�ABe�Դe�d��EOFIGH��e�b�aNJKdNLL�MNlcWdlPWQTLR��S, ��nWUakVaktkXYdb�M�Z[azazwU]y^g_b`awMcWg4cddq~g_ef�,/�hmil��jkM�J��mL�nuot�dpdqdrdsdtd�-vb�wxhkfh��z�{�|}xvb�~L�YYQ����Ch�M��lx�� ,������e��e�i���i�e�i�e�w���azwUw*��d��db�dԦN�:�������������x�p�x��N;Q�W�N��MM)���MdW�M������M�N�NliMN��dnW�L���lx�*lxe������typ�`�ak���������g��g��g����	g��	g�����������l��~����l�����g��g��g��g�g�$3�g��g��g��g�$3g��bb��j*d�����i���g_��p����d��li�lign��p�d{wFaz��������d{��MdM�����VpOTOTN��c�Maz����i�8�%�8�����Ne��i�e�L�L��akazb�N�
�azazazazw	azaz
azazwwazcWMdMMg�c�azcWd{az&d*�w)$�nW%N P}!P}P}"P}#$P}N+P}NQ�'+L�()*#e$�dN�w,8-M.M/M0�;12M�;374M5M6M�;M�;MM9�y�;t<V=G>C?Bc�@NAb�d$`�xvDi�EMs8Fs8gnHNIJLgCK�LMn��ROSLPQR�%�m�m�LTUlKe�WmXhY^Z\[gn�gn]bb�c�_`cW$$abec$$d$$$$��$$f$$g$$��ijd{dkb�H:lH:,>nqopM�Mb�Mdrsc�g	,Lu�v�wyxdb�y7z{b�c�M�|}�~e�e��e��e��e�e��e��e��e�i�e�ߍ����kX��`��%`�L�d��L�Mg4M������iM�e�b��p�b�N�N���tOMg�M�����L�H:�H:��H:�H:�H:�H:�H:�H:�H:s�H:Mb���Lg4����dm��d��,[LL�z�����������b�m,aNc���N���H:��"��c����"��,i����l�d{Lxv��N���v�azv�az�`�,[��������mLc�w��M��NN��N�NN�N��N�N�NN;Ndp�����MLp�d�����xvxv���8�%i�d�������tyL�e���n�,wn�������a]aNaNa]��e�lK$�e�g_��NNP}dH:NLiMiML�
iMiM	
azazgCH:Lb�,�L�L�c�g4L���p�O5'$Mn�n��Cc�ddq� !q�"q�#q�dq�%&liLNd(0)/*,Q�+Q�N-.),���wMd14cW23b�x�b�LL�6B7?8=9H::;`�֥,�<֖�[>Naz�@A�NMBaMCHDGE)
VpFOTNp�NINJMKLNVpYOT�����PhQ_R\SVTNYUYQ�WZXY~�d�Vp[b�b�d$]^db�j*N`eabb�aN
cNdNMfgdpz�NcWitjokll�L�md{nNP}Npsqb�Lr���TLduwvdcW`�xydiML�M{�|�}�~����Lc��c���h�pzlign��{
�|��|�|�|�|�|�|�|�|�|`�ak���������g4��g4gQ�b�jd��e�e�e����Cl�����q�h�gnq�+T�5������dL�c���M�M��o��o�o��o��o��o��o�,��o���Ll���g&��nW�����HLq~c���i�p�iM��MM����������d{b�c�d]��i�azq~K�����ak��az�az�azgCaz�d��gni,�gn��i���H:H:�H:�s�H:�b�e�be������az,�azN��aN��LH:������H:b�n���Nd{dH:�+�������b��b��b�o���M��LM���b�azt�c�����d`�MNi#dH:`�,�`�
	L�M`�hLc�
rX���rXM,�(d{wwUazb�"��������� �!����#�$�%�&�'����)*iMxvlx�,c-Y.V/0`�b�x�12M3N4Q�5Q�6Q�7C8>9;N:NN;<=N_FP}�g?AN@NN;BNNN;DJEHFGW�NN_FNIN_FKQ�LQ�N-NN;W�OW�PQW�RW�W�STW�UW�W�W�WXd?iMMM�Z][\K�c�Li�^bd_`a--"-1`�y7�dmejfigiMP}hNP}b�Nklx�dazdnpdot�c�qtdrVpsOTVpuNvwp��~���y"Gz �{ |�}�~���������Q�Q����_�����!�������Q��-@��������������_�����Q��������_�_����Q����
������������_������������Q�������Q��Q�_����������_����_����_�Q��������!�������������O������_�������_��������O������O�O�a��_�������_��_��������_�O����������Q��_�����_�����!Q�������Q�����Q�� � ��������_�p���O��O�_ � ���_  �  ��_�� �� 	  
  �  
�_���_� � ��!    � ���  �   @@-K @@-K� � �_�   e ! M " 9 # 2 $ , % '� &��1 (��_ ) * +-V�-V� -� .�� / 0@ 1@@-K 3 6 4� 5��� 7�� 8�� : C ; @ < >� =�� ?���@ A�� B��1 D I E�� F� G�_ H�� J� K L��_�� N [ O W� P Q T R S��_Q�_ U�� V�!�� X� Y Z��_� \� ] b� ^� _ `� a�_�@� c�� dQ� f � g y h l i�� j k�
� m u n r� oQ p�_ q�_� s t�_��a v� w x���� z � { ~� | }�Q��  ���_� � �� �� ��� � � �� ���� � ��@���_ � � � � �� � � � ����� � � ��_ ��_��Q� � �� �� ��_�� � � ��� � ��_��O ��O�_ � � � �� �� ��� � �� ��_� �� ���� � � � � � �Q���� ���_ � � � ���� � ���-d� ��O� �!� �! � � � �� � � � � � ���Q �� �� ���_� ��� ��O� � �� � ��� �� �a
 � � � � ���_� ����_ �� ���@ � � � �� � � � ��� � ���� � �� ��_Q�� � �� �� ��� � � � � � � ��O߫� � �-r-�-�-��_� ���!� �! � � � �� ��
 ���Q ��!!!-��!�Q�_�!!!�!��1�!	!�!
��!!
�a!!��_!���O!!\!!*!!"!!!!�!�_!!�-���!��!! !!a��_�!!����!#!$!(!%!&�Q�!!'�_
�!)��O!+!M!,!J!-�!.��!!/!0!I!1!9�O!2�O!3!4-��O!5�O!6�O!7�O!8-�-�!:�O!;!C�O!<!=�O!>�O!?!A!@�O�O�!B�O-��O!D�O!E�O!F�O!G�O!H�O.	�O..)�!K�!L�_�!N!Q�!O!P���_!R!U!S!T����!V!W�O�!X!Z�!Y�-V![�-V�!]!x!^!e�!_!`!b!a���_!c�!d�Q�!f!o!g!k!h!i�@��!j��!l�!m��_!n�_�!p!r�!q��!s!v�_!t�!u�O�!w���!y!�!z!!{!}!|���_�!~��!�!�!����!����O!�!�!�!��!�a��!��Q!��!���_�!�!�!�!�!�!�!�!�!��!�!��!���!��_�_�!�!��!���!���!���_!�!�!�!�!�!��!�Q�_�!��1��!�!�!�!���_�O�O�_!�!��!��!�!�!��!��O�_�_�O!�!�!���_�!�!��_�!�!�!�!�!�!�!�!�!�!��_�O�O!�!��O�O�!���_�!�!��!��_!�!���O�!�!���_��_!�!�!��!�!���O���!�!�!���Q�!�!�!�!�!��!��Q�!�!��!��_�!���!�!��_��_!�!�!�!�!�!��_
�
�_!��@�!�!�!����!����_!�"!�"!�!�!�!�!�!��!�!��!��
�!�!���_�_�!�!��!����_!���_!�"!�!�!����!����"""""���Q��"��"""	""
""�"�"
�_��_"���_""��"�"���_"""��"�Q"�"�"��O"@�O""2" "+"!"'�"""#��"$"%"&�OQ
�"(�")"*�
�_�","/"-�".�a�1"0�"1���_"3"?"4"<"5"9�"6"7�_�_"8.9�O":";��_�_�!"=�">��_�"@"C�"A"B��
"D"E���"F��"H#�"I#"J"�"K"�"L"e"M"V"N"S"O"Q�"P�_�"R���_"T�"U��_�"W"_"X"["Y��"Z��O"\"^�"]�1�!�_�1"`"c"a"b�1���_"d��Q"f"{"g"j"h�"i��_�"k"m"l��Q"n"y"o��"p"q��"r�"s"t��"u"v�"w��"x�-d�"z.I�"|"�"}�"~�"�"��_Q�O"���"��O�"�"�"�"�"�"�"�"�"���1�"��"��"�"��!.Y�!.Y"�"��"���"���"��O"��O�"�"�"�"��_"��_�"��_�_�"�"�"�"�Q���O�"���"�"�"�"�"�"�"���_�"���_��"�"����_"�"�"��"�"��"��"����_�!"���"���_"�"�"�"�"�"�"�"�"��"�"��_�O�_�O"�"�"����"���!�_"�"�"�"�"�"��O�_��"�"���_��"��"�"��_��_�"�"�"�"�"��"���Q"�"�"���
�"��_�"�"�"��"���_��"�"�"���_��_"�"�"�"�"�"�"���"��
�"�"�"��"���_�"�"���_�"��"�"��"��_��"���_"�"�"�"�"�"��"����"��!�"��"���O
"�##�##�!#�#�@��O��###��O�#	�#
�_#.h#.h#
.h#.h#.h�_##v##F##2#######�#�@##�#߫�OQ�##!�#�## ��O��#"��_#$#+#%#(#&#'�Q��_#)�#*���O�#,#-#1#.�#/#0�O��!�A�#3#@#4#7#5��#6��#8#<�#9�#:.x#;.�Q#=�#>�!�_#?��_�#A#B#D�#C��#E���#G#`#H#T#I#O#J�#K#N�#L�#M����#P��#Q#R�_�#S��@#U#]#V#[#W#X�߫�#Y#ZL�@#\��a�#^�#_Q
#a#l#b#g#c#e#d��_��#f��O#h#j#i���_�#k��O#m#p#n��#o��O#q#s#r�
�#t#u��_
�#w#�#x#�#y#�#z#~�#{#|#}�a��_#�#�#���#��#�#���O��#�#��#�#���_��#�#�#��_#�#��Q���_#�#�#�#�#��#�#��!��#�
#���_�#�#�#���_#�#���_#��Oc�߫#�#��#��#���_#���#���_#�#�#�#�#�#�#��#���`�#�#��#�#��#�
�O߫#�#���_��!�#�#�#�#�#��#��#��.�#�����#�@�#�#�#�#�#�#����#���_#�#��#���_#�#�#���#��Qp�#�#�#�#�#����O�#��#��@��#�#���#��#���O#�$v#�$##�#�#�#�#�#�#���#�#����_#�#��#�#�#��Q�a#�#�#�#��#��#��
�_�!#�#���_��#�#�#��#�#�#����1�#��_�!�#�#�#�#����_#�#��#�-K@
�#�$
#��$$�$$$
.��$�$.��O$$�$$	��$
��$���$$$$$$$�߫�$��$$�
�$$$����$$�_
�$$"$$ �$��_�$!��_��$$$J$%$7$&$0$'$-$($+$)$*����1$,�_��_$.��$/��_�$1$2$4�$3�@��$5�$6�_�$8$A$9�$:$>$;$<�_��_$=��$?$@
Q��$B$G$C$E�$D
�_$F�
��$H�$I��$K$\$L$V$M$P$N�$O��
$Q$T$R$S��_��$U��O�$W�$X$Z�$Y��_�$[�_
$]$l$^�$_$j$`$a��_$b�$c��$d�$e�$f�$g�$h�$i�.�$k���$m$q�$n$o�$p��_��$r�$s$t�$u��_�$w$�$x$�$y$�$z$�${$�$|$~$}��@�$���_�$�$�$���$���$��@�$�$�$�$��$����$���$�$��$����$���$�$�$�$�$��$�$�.�$�$�����_�$�$�$�$��_���_�$���_$�$��$�$�$��_$�$��_.��_$���$���$�$�$�$������$�߫�$�$�$�$��$�$�$�$��$�
$�$�$�$�@-K@-K@$�@-K�$���$�$�$���$���_$�$��$�$��$�$�@-K$�$�-K@-K@$���$��$���O$�$�$�$��$�$����$�$��$���_�$��_�$�$�$�$��_$��_��$��_�$�$��$�$���_$�
�O�$���$�%$�$�$�$�$��$�$��$��$�$�$��a��_$��Q�$�$�$�$�$�$��-K��$�$��$�
$��O���!�$��$��$�$�

.�$�%	�%%%%%��_%�
%��%%��a�!%
%
%�%��1�%%�%��%���%%-%% %%%�%�%�_%�O.).%%�%��O%%Q��_�%!%'%"%%�%#%$���O�_%&�!�%(%+%)%*�Q��_%,��_�%.%8%/%2�%0�%1��_%3%5%4��e�%6%7�_���_%9%<%:�%;��_�%=%@%>%?�_��O�%A���@%C'a%D'%E&z%F&'%G%\%H/%I%J		/%K/%L/%M%V%N%R%O/%P%Q/		/+/:/:%S%T%U/I/X/X/I%W%[%X/I%Y%Z/X//X/g/v/�%]%|%^/%_%p%`%j/�%a%b%e/�%c/%d/�/%f%h/�%g/�/�%i/�/��R/�%k%l/�0	%m%n%o0/��R/�/%q%r%u%s/%t/�/0(%v%y%w%x//�060E%z/0S%{0S/%}%�%~%�%%�%�%�%�%�%�%�%�%�/�0b/X0(		%�		�0q%�%�%�%�%�0�%�%�0�0�%�%�0�%�0�0�%�%�0�0q0�%�0�%�0�0�%�0�%�%�0�0�%�%�0�0�0q%�0�%�0�0�%�%�0�0�%�0�%�%�0�0�%�0q0�/%�%�/�%�/�/�R%�%��R%��R%��R%��R%��R%�%��R%�%��R%��R%��R%�%��R�R/%��R%��R�R%��R%��R/%�%�%��R%��R%��R%��R�R%��R%��R%��R%��R%��R%�/�R%�%��R//�%�0�0q%�%�%�%�%�%�%�%�%�%�0�0�/v0�%�0�0�/�%�%�%�%�/0(�R0�%�1/�1%�%�%�%�%�/�0q1#�R%��R/�%�%�%�%�%�0�R%�%��R0%��R0%�%�0�R%�00%�%��R�R0%�%�0%�0�R�R%�%��R%��R%�00%��R0/%��R/%�&
%�/�%�&%�%��R%�%�%�0�0S/�1#%��R&&/�R�R/�&&	&&&&/�/12//&�R/0�1A&&&�R&
&�R&�R&/1&&&/1P//12&&&/�1�R&&&/&///�&�R&&/�/�&�R& �R&!�R&"�R&#�R&$�R&%�R&&�R�R1P&(&L&)&A&*&5&+/&,/�1_&-&.&1/�&//�&0/�06�R&2&3&4/�/��R/�&6/&7/�&8&<&9&:0�/�&;/�0�1A/�&=/�&>&?&@/�/�/�0b&B&E&C/&D/�/��R&F/�&G/�&H�R&I�R�R&J&K�R1�R/�&M/&N&O/�&P&_&Q&U�R&R&S�R�R&T1P�R&V&Z/�&W&X&Y�R/��R/�&[&]/�&\/�0&^/�1n/�&`&d&a/�/�&b&c/�/�/&e&l&f&i&g&h�R/�1}�R&j&k1#//�R&m&x&n&w&o/�&p0&q�R&r�R&s�R&t�R&u�R&v�R0�R/�1�/�&y1�/�&{&�&|&�&}&�&~&�&&�&�/&�&�&�&�/�/&�//�/&�/&�/&�/1//&�&�&�/&�/&�&�/�0�//&�&�/&�/11&�/&�/&�&�&�&�/&�&�1/1�1n/&�//&�/�&�0�/0�&�0�&�&�&�0�&�&��R0�&�0��R&��R�R/&�&�&�&�&�/�&�/�&�/�/�&�/�/&�/�/�&�/�&�0b/&�/�&�//�&�/�&�/�&�/�/�&�&�&�&�&�/&�&�&�/�/�&�/�&�/�/�&�/�&�/�&�&�&�&�&�//�/&�&�/�///�/�&�&�&�0(1�1�0(&�/�&�/�&�/�&�/�&�/�/�0E&�&�&�/�/�&�/�&�/�&�&�/�&�/�&�/�/�&�/�&�/�1�&�'	&��R&�&�&�&�&�//&��R0q&�&�0	&�&��R0q0�R&��R&�1�0�&�'&�&�&��R&��R&��R&�/�&�/�&�/�&�/�&�/�&�/�&�/�/�/��R&�&�'/�&�/�&�&�/�/�'/�''/�/�'/�'1/�/��R�R'�R'�R1�'
'/''//'
'''�R//�'�R�R1/�R''''*'JJ'J''JJ''JJ''J'J'J' J'!J'"J'#J'$J'%J'&JJ1��'(')'I'*'2'+sG',@sG'-@'.'/sG'0�'1@
sG'3'E'4'?'5sG'6'9'7'8		[sG':';�R@'<@'='>JjsG+'@sG'AsG'B['C1�'D,�1�,�sG'F'G�'HsG
sG'J'Q'KJ'L'NsG'MsGJsG'O'PsG�sG'R'Y'Saz'Taz'Uaz'Vazaz'W'Xazazjaz'Z'[az'\az']az'^az'_'`b�azwaz'b*]'c(�'d(5'e'�'f'�'g'z'h'r'i'o'j'l�'k�_�'m'n����_�'p'q���_�'s't'w'u'v��_�_�'x'y����_'{'�'|'�'}'�'~��_'�'�����_�'��'�'��_'�'��_��O�'�'�'���'�'���'���_'�'�'�����'���'�'�'�'�'�'�'�'�'���_��'���_'���'�'���_'�AQ'�'�'�'�'�'��'��_߫'���'�߫p�'��Q'��'�'��_���'�'�'�'�'�'�'���'�Q'��_߫�'�'��_2��'��'�Q�'�'�'�'��'��Q'��_��_'�'�'���O��'�'��'����1'�'�'�'�'�'�'�'�'�'��'��_��'���_'�'�'��2��'�'���'��_a'�'�'��'����'�'�'����_'���O�'�'�'�'��'�'���_�'�'��'�Q�_'�'��@�!'�'��_�O�@'�'�'���'���'���_�'�('�('�'�'�'�'��_�'�'����O'����'�(�_�((@��((QQ�((
((	(���_�(
(�_(2&2&26�(�(�@(((((((�(��_(�_Q�(�_�((�_(��_(�Q�((%( (#(!("��_���($�_�(&((('��_�()(*��_�(+߫(,(-߫(.߫(/߫(0߫(1߫߫(2߫(3(4߫߫2E(6(�(7(d(8(I(9(C(:(=�(;(<��_�(>(@(?��@(A(B���_�!(D�(E�(F�_(G�2T(H�O2d(J(X(K(R(L(N�(M�!��(O�_(P(Q�A�(S(U�(T��(V(W�_���_(Y(a(Z(^�([(\��(]�_�(_(`Q���_(b��(c�@�(e(~(f(t(g(m(h(j(i���(k(l�_���_(n(q(o(p�1�_�@�_(r(s��߫�_(u�(v(z�(w(x��O(y�_�({��(|�_(}�_�((�(�(�(�(�(�(��@�(��(���Q(���(��1(���(�(��(��!�(�(���_�Q(�(�(��(�(�(�߫�O(��p��_�(�(�(��(�p(��Q�_�(�(�(�(�(�(�(�(�(�(��(��_L(���(�(�Q�_Q(�(�(�(�(�Q(��_��O�
(�(�Q���_(�(�(�(�(�(��_��_�(���_(��(�
��(��(���(�(��(�(���(�
�(�(�(�(�(�(�����_�(��1��(�(�(�����(�(�(�(��(�(�(�(����(��Q�(�(�(�(��(���(����(���(��1�(�(�(�(��(�(�(����(��_(��_�(�(��(����(��O�(�(�(�(��(��(��(�e��(�(��(���_�_�(�(�(���_��(��_�(�)�(�)N(�),(�)(�)))))))�_���_)��_�)�))	Q��)
�p))�)
�)�Q))))�_���))��Q�))"))�)))�_��_�)) ))��_��1)!�Q�)#)))$)')%)&����_)(�Q��)*�)+��)-)>).)2)/�)0�)1���O)3)9)4)7)5)6�@�_�O��)8��):)<);���)=���)?)H)@)E)A��)B�)C�_)D�_.9)F��)G�O��)I)J��)K)L)M��_�_�)O)s)P)b)Q)W�)R)S)U)T��_��)V�
)X)^�)Y)Z)]�)[�!)\�!�_A��)_)`)ak�_�_�)c)n)d)g�)e�)f�Q)h)l)i)k)j.��_���_)m���_�)o)p�)q)rQ�_a�)t)�)u)})v)y)w��)x��)z�){)|�Q�O�)~)��)�)��_�)�)�)���_��)�)���!)��!)�)��!)��!�!)�)��!�!)��!2t)�)�)�)�)��)�)�����)���)���)�)��)�)����)�)�)��)��1�_)��߫�)���)�*)�)�)�)�)�)�)�)��)��)��_
)��)�)��_��_�)�)��)�)�)��_�)��_Q)�Q)�Q)�Q)�Q)�Q)�)�)�Q)�)�)�Q2�2�2�)�Q)�2�2�2�)�)�)�)���_���)�)�Q)��
�)�)�)�)�)�)�)�)�Q���)����)�)�)�)��Q�)��Q�)�Q�)�)�)��)��p�)�)�)�)����_�)����!)�)�)�)��)�)�)�)�)���_��!)���1�_)���)�)�)���.��)�)�)�)�)��)�)��QQ�)�)��)���)�)��_�߫�)���)��)���_**+******	**��_**�_Q��*
**���!*
*��_�Q�**��*�_�**!****�*�a**�O�Q��*** *�OQ*�Q��*"*(*#*%*$��_�O*&*'��_��_�*)�**�_�*,*P*-*9*.*3�*/*0*2�*1���Q*4*6�_*5��!*7*8����_*:*A*;*>*<*=����*?*@��_�O�_*B*J*C*DQ�*E*H*F*G�_���OQ*I2�Q*K*O*L�_*M*NQ��_�OQ�_*Q*X*R*U*S�*T��_�*V�*W���*Y��*Z*[*\Q�Q��*^*_+7*`*�*a*�*b*{*c*q*d*g*eEE*fAE*h*l*i*kE*jEEzEt�*mEAe*n*o*pB��B�Ae*r*x*s*v*t*uEH:E�AeA*wAEA*y@*zE|*|*�*}*�*~*�A*EAe*�*�M��EE*�*�*�@E@E*�A*�A*�*�EAe*�A*��F�Fs�*�*�*�*�*�*�*�AA*��'A*�*�A*�E*�*�,�
&!T*�*�E*�E�E@*�*�*�*�*�EE�EE*�*�H:*�azwv�*�*�*�*�H:F�*�E*�2�2�*�2�*�2�*�*�2�2�*�2�*�2�*�*�2�2�2�*�EAAe*�*�*�*�*�E*�*�@EE@*�*�*�*�E�EE@@*��A*�*�A*�A*�*�*��E�*��*�*�*�E*�@�*�HGE*�EEH:*�+
*�*�*�*�*�*�*�*�E*�azA*�*�A�*�Ag�M*�*�A*�AEE*�Eaz*�*�*�A*�*�lEazA*�A*�AA�*�*�*�*�A*�A*�AHG*�*�*�*�*�A*�F��F�E*�@*�*�@*�@�@*�ABaA*�+*�*�*�*�AH:��E�*�*�E�EEE�++++E�E|�++��EE+++	jazazv�++&+++
+++++A�AEA+HGE++E+Eaz++EA�li++"++ +++EH:+H:@&�E+!AEA+#+$AH:+%AH�E+'+/+(A+)A+*++�@&+,A+-+.C��
QAA+0+1+3+2EA�+4+6+5E�A@E+8+j+9+U+:+F+;+@A+<A+=+>+?ABa2�@+AA+B+D+CEBaE+EAazA+G+OA+HA+I+J+KA�yAe+L+M+Nٰ
�E2�A+P+Q+SA+RALH�+TH�Ae+V+^A+W+X+[A+YA+ZHGAA+\A+]A��+_+d+`A+aA+bA+cAAeazA+eA+f+gfA+h+iC�C�A+k+�+l+u+mA+n+qA+oA+pC�A+rA+s+tH�F�A@A+vA+w+x+zA+y@A+{+A+|+}+~az�1�3
A+�+�+�s�s�3�9+�+�A+�A+�A+�A+�A+�+�C�3&3++�+�+�A+�A+�A+�+�+�azu�az3&+�3&DNA+�A+�A+�AEz+�=�+�3q+�1N+�.�+�,j+�+�+�+�+�+�b�c�c�+�+�+�+�+�+�+�+�+�b�+�x�b�+�+�x�b���+�x�+���b�+�x�p�b�+�+�+�+�+�b�b�
+�+�x�+�+�x�x�b�x�
d2x�+�+�+�+�+�+�x�+���x�+�+�38��3F+�x�3S+�+�+�x�x�d2x�+�x�+�+�x�x�b�+�+�+�x�b�+�+�+�x�+�b�p�+�x�p�x�+�+�+�+���x�3`+�x�3S+�+�d2+�+�+�x�b�x�b�+�x�+�x�x�b�+�+�+�dd+�+�d+�d+�d+�d+�d+�d+�d+�dd+�d+�+�do�dLi�+�,g+�,f+�nW+�,)+�,+�,+�+�+�+���+�+�����xv+�+�xv��+�����xv��+�+�,,���)��,,q�������,,,,,,	��,q��>,
������,����,
xv����,��,,,��,,xv,xvxv,xv,,xv,xvxv,��xvq�����,,,$,,!,�3n, ��3|��,",#��xv��xv,%,&,'�3�,(�3��,*,G,+,7,,,0��,-,.��,/����xv,1,4��,2,3������,5��,6�������,8�,9,:,E,;,<��xvxv,=xv,>,?xvxv,@xv,Axv,B,Cxv,Dxv��xvxv,F��xv,H,`,I��,J,O,K,M��,L3�3��,N3n�,P,Rxv,Q��3�,S,V,T,U��xv��xv,W,_xv,Xxv,Yxv,Zxv,[,\xv,]xv,^xvxv��xv����,a��,b,c,e,d����������ak�X,h,it�xvcWnW,k-�,l-,m,�,n,�,o,�,p,},q,t,r,sMb���b�,u,|,vL�,w,y,xb�l`�,z,{b�H:NLnWL,~,�,,�b�dM`�,�,�b�{
l�xv,�,�,�,�,�,�,�e�m�LkucW,�,�,�`�,�,�Md{,�,�Md{Md{b�N,�,�,�,�akcWMd,�,�b�M�,�Ng_,�g_,�g_3�,�,�,�,�,�,�N,�nWN,�,�i�b�b�M,�,�,�,�L�fL�M,�,�N,�,�d,�,�rX��ec�{
,�,�,�,�,�,�c�L{
`�,�,�M,�M�,��C�,�M�azM,�,�,�,�p�b�M,�,�{
,�{
MM�,�,�g4̣,�,�3�d,�,�,�e�e�Դe�,�e�Դ,�,�,�,�,�,�,�,�,�,�d{MK�`�,�,�g_LMd,�,�,�,���Lg�L�,�,�L�,�,�,�,�,�`�c�^CN,�,�lb�d~ML�,�,�,�,�,�,�L�`�j�M,�,�t�iMd,�,�,�,�L�b�L�M,�,�L�`�diM,�-,�,�,�,�,�,�g_n�nWL�,�,�Nku`�d,�-,�-,�`�b�,�d$,�b�~�`�d--hL�b�L�------
L�--	--
�^�^3��^-�^3�m�d---cWM-M��L�3�----y7m�-N--�-3�i��-�4--�b`�MaN- -�-!-b-"-4-#-&-$-%c�g4dc�-'-(b�`�-)M-*--t�-+-,t�t�4-.-1-/-0t��q4#t�-2-342t��qt�-5-8-6-7lc�L�b�-9-=�F-:-;��-<K�K�4AM->-?cW-@-U-A-JcW-B-C-FcW-DcW-E�cWcW-GcW-HcW-IcW�-K-O-LcWcW-McW-N�cW-P-RcW-Q�cW-ScWcW-TcW�f-V-Z-W-XcW��cW-Y��cW-[�-\-`-]cWcW-^cW-_$$cWcW-acW4P-c-n-d-g-e-fdcWaNe�-h-ib�iM-jL�-kM�M�-l-mM��M�-o-y-p-xL�-q-r-u-saz-tgQazgQaz-v-wazgQazN`�-z-�-{c�-|L�-}L�-~L�-L�-�L��L�N-�-�-�e�b�-�b�b�-�Nb�-�-�-�-�-�-�-�-�dcWdb�-�-�-�L�-�-�-�-�-�-�gQaz���i-�-��azwcm-�-�gQ-�mgCb�az|�M�-�-�-�-�i�-�-�d{
Mc�N-�-�L�l���b�-�-�-�-�-�-�n�dm�xv-�-�-�NM-�q�-�q�-�M-�q�M-�rf-�-�-�4^-�-��x���x����-�-�-�4l��4^4z-�-�-�-�xvb�p�b�-�-�`�d-�L�Md-�-�-�L-�L-�-�-�LL-�L-�L-�-�L-�LL-�L-�L-�L-�-�LL-�-�L-�LL@-�L-�LL-�-�L-�LL-�-�L-�LL-�L-�L-�L-�-�LL-�L4�-�.;-�.-�-�-�-�-�-�-�-�`�-�c�-�c�-�c�`�b�`�-�-�d-���4�Mm�-�-�-�-�d{iMdb�-�-�Лxvd`�-�.-�.-�-�b�K�M�|�..LL�e�d....d{cWLq~..b�.	.
.c�.akc�.
c�����c�M..$.......b�j�4�c�.�y...�4�4�L..g4dLM..!.. db�t�M.".#d`�b�L�.%.,.&.).'.(d{q~c�b�.*.+b�|�d]xv.-.0.../b�`�b�nW.1.7xv.2.3.5b�.4����d$.6d$N.8e.9.:ee~�.<.`.=.L.>.E.?.B.@.AdMLd.C.Db�d$Md.F.I.G.Hxvddxv.J.KMLdaN.M.W.N.Q.O.Pp�Mxvb�.R.S�^`�c�.TL�.U.Vdm�d.X.^.Y.ZdL�.[`�.\aN.]aN4�aN._`�b�xv.a.x.b.i.c.f.d.eb�NaNb�.g.hc�L�NL.j.u.k.t.l.s.m.p.n.oj*LQ�b�.q.rLt�`�Mdc�Mg_.v.w`�`�c�d.y.�.z.}.{.|`��,c�b�.~.L�Mq~nW.�.�.�.�L�� L�d.�.�M.�.�az.�.�gCb�gQv��`�.�1*.�0�.�/V.�.�.�.�.�.�.�.�iMaNb�rf.�.�aN.���.���.��	��K�o�.�.�.�.�Md{.�xv.�.�.�.�.�.�az.�.�az.�azaz.�az.�azkXaz.�az.�.�.�az.�az.�az.�ubaz.�azaz.�az.�gCaz.�azaz.�.�az.�azaz.�.�az.�az.�azazw.�.�.�.�az.�.�az.�azaz.�az.�az.�.�az.�az.�azazgC.�az.�.�.�az.�.�.�azaz.�.�az.�azkX.�azkX.�az.�azaz.�b�az.�az.�azaz.�.�az.�azazgC.�.�az.�.�az.�az.�az.�az.�azaz.�.�azaz.�v�az.�az.�az.�az.�azaz.�az.�azgC.�.�ML���d{.�/B.�/ .�/M.�.�.�.�LL.�.�.�L��L��.�/.�.�.�L4�LL.�LoY/LL/Ly�/iM//	/L/L/Lc�L/
//L/L/
LL//LL/L/L//L/Ly�L/L/c�/LL//��/����/��//����/��4�/!/A/"iM/#/>/$b�/%/4/&kub�/'/(~�/)~�/*///+~�~�/,~�/-~�/.b�~�~�/0~�/1~�/2~�/3b�~�b�/5b�/6~�/7/8~�~�/9~�/:/;~�/<~�~�/=b�~�/?b�/@b�b�kukuj�/C/F/D/EL�dЌL/G/H��akq~/Ib�/Jb�/K/Lb�/Mb�/Nb�b�/O/Pb�/Qb�b�/R/Sb�/Tb�/Ub�b�b�/W0�/X0�/Y/]/Z/[b�xvli/\iMh/^/_ku��/`c�/a0�M/b/caN/d0,/e/�/f/�/g/�/h/w/i/p/j/m/ks8/ls8lis8/n 1s8/os8 1/q/t 1/r/s4� 14�4�/u4�/v4�5/x/|5/y/zi/{i5i/}/�/~5i/i55/�/�i5i/�/�/�/�/�5"i/�i/�i5"/�/�/�4�/�4�5"4�/�pz4�/�4�pz/�/�/�/�pz/�/�51pz5151/�51/�516^6^/�/�6m/�6m6^6m/�/�/�/�/�/�/�/�/�6|6m/�6m6|6|/�/�6�6|6�/�6�6�/�6�/�6�6�/�/�/�/�/�+c/�+c6�+c/�gn+c/�+cgngn/�gn/�gn/�gn6m/�/�/�/�/�/�6ms8s8/�s86�/�/�/�q�6�/�6�q�6�/�/�6�6�6�/�/�/�/�/�/�6�gngn/�gn6�6�gn/�/�/�/�/�6�gn6�6�6�/�gn6�/�6�gn/�/�/�/�/�/�/�gn/�/�/�/�/�gnligngn7/�77/�77gn/�/�gn/�lign/�gnli/�/�gn/�gn/�/�+cgn/�gn+c/�/�/�/�/�/�/�3�+c3�/�+cli+c+c/�+c/�+c7'/�/�7'76/�/�/�gn76gngni/�0/�0/�0/�0/�7Ei/�i7Egn007Tgn7T0s8007T7c7c07cs80	gn0
000
0#s8##�R07r�R0�R7r0000gn0000+cgn+c+c6m6m0s8007�s87�00"00!00 7�7�7�7�7�7�0#0'0$0&0%7�7�7�7�7�0(0*7�0)7�9�9�0+9�li0-0]0.0Q0/0I000?0105029�039�049�cW9�060:9�0708099�9�9���0;0=9�0<9�9�cW0>cW9�0@0E0A0DcW0B0C9�9�9�9�9�cW0F0G9�0H9�9�9�0JcW0KcW0LcW0M0O9�0N:
9�9�0P9�cW0RcW0S0X0T9�0U9�0V9�:0W:9�9�0Y0ZcW9�0[0\:*9�:*0^0�0_0|0`0n0a0f0b0cd�Q0d:9�Q0e�Q:90g0j:I0h0i:Y:I:Y0k0l:Y:i:i0m:id0o0u0p0qd:y0r0t0s:�:y:�:�:�0v0y0w:�:�0x:�:�:�0z0{:�:�:�0}m�0~0�00�0�0�:�:�:�0�:�:�:�o�0�0�0�:�0�m�o�m�0�m�:�0�:�m�0�0�0�0�0�0�0�0�0�dm�0�m�;;;#0�d;2;A0�0�;Q<|m�<�0�d0�0�db�0�db�daNl�0�0�0�0�`�ML0�0�0�0�0�0�0�0�0�MM�g��O0�0�g��;Mg�0�0�M0�M�O0�MM�O0�0�0�0�0�0�M�;���O0�0�g��OMg�0�0�d0��dM0�M��0�0�b�Md{`�0�0�0�0�b�0�t�b�0�0�0�M0�0�0�iM0�iM0�0�<�iM<�iMiM0�0�iM0�iMiM�i0�0�N0�N0�0�N0�N0�0�0�N0�N0�N0�N0�0�NOTW�N;0�N0�0�0�0�N0�NW�0�0�NN;N;N0�0�0�NOTNN0�N\;d0�d0�d0�d0�d0�0�d0�d0�dd0�d0�0�dd0�d�0�0�b�0�d{M�0�0�l�xvLb�0�10�11111{
akw�z�11db�1iM1c�c�11	c�c�1
1c�1c�1
c�c�11c�1c�c�11c�c�1c�<�1111b��xb�ku11MK�Mb�11#11 11b�t�N`�1!1"b�c�c�b�1$1'1%1&b�d{b�nW1(1)b�akxvb�1+1>1,171-1/b�1.j*t�1011tyb�iM12i�1314�
i�1516��i�181;191:t�b�w�Л1<1=�Xn�`�ak1?1E1@1BЛ1Ag4w�1C1Dp�w�M�d1F1K1Gb�1HM1IK�1JK�K�c�1L1Mb�dd{b�1O1W1Pd1Q1T1R1SMnWMh1U1Vb�g4c�d1X3Y1Y1�1Z1m1[1\d{ld{1]1^�m�m1_�m1`1a�m�m1b1c�m1d�m�m1e1f�m1g�m�m1h�m1i1j�m1k�m1l�m<��m1n1�iM1o1p1ugC1q1rb�1sgC1tgCgCb�1v1�1wb�1xb�1yb�1zb�1{b�b�1|1}b�b�1~b�11�b�b�1�b�1�1�b�b�v�b�1�b�1�b�1�1�b�1�b�1�b�1�b�1�b�b�1�1�b�b�1�b�1�b�1�v�b�1�t�1�1�l1���1�1�1�1�1���1�1�1�c�`�dL1�l1�1�NgCq�(|1�iM`�1�1��iM1�1�1�1�iM1�1�1�lN1�1�1�1�<���YMg4gC1�1�L1�1�1�lM1�1�OT`�`�l1�1�1�1�1���OE��1�g�MYiM1�`�1�wlM1�1�1�N1�1�1�1�lg&l1�1�lߍcWgQl1�1�1�1�1�Mll1�<���cfl1�3F1�32c�1�1�2L�1�1�21�1�1�L�L�1�1�L�1�L�1�L�1�L�L�1�1�L�L�1�1�L�1�L��L�1�1�1�1�1�1�1�L�L�1�1�L�L�1�1�L�1�L�1�L�L�1�L��+L�1�L�1�1�L�1�L�1�L�L�1��L�1�1�1�L�L�1�1�L�1�L�iL�L�1�1�L�L�1�L��1�2	L�2L�22L�L�22L�L�22L�L�2L�2L��L�2
2L�2L�L�2
L�2L�2L�2�L�L�22L�2L�2L�2L�L�22L�2L�2L�L�2L�22L�L��22�2 2�2!2C2"2/2#L�2$2)L�2%L�2&L�2'L�2(L��2*2-L�2+L�2,�L�L�2.iL�202;L�21222823L�L�2425L�L�2627L�L��29L�L�2:�L�L�2<L�2=L�2>2?L�2@L�L�2A�2B��2D2r2E2h2F2Y2G2S2HL�2I2ML�2JL�2K2LL�L��2NL�L�2OL�2P2QL�L�2RiL�2TL�L�2U2VL�2WL�L�2X�L�2Z2`L�2[2\L�L�2]2^L�2_L���L�2a2bL�2cL�2dL�2eL�2fL�2gL��L�2iL�2jL�2kL�L�2lL�2m2nL�2oL�2pL�L�2q�L�L�2s2t2�2u2{2vL�2wL�L�2x2yL�2zL�L��L�2|L�2}2~L�L�2L�2�L��2�L�2�L�L�2�2�L�L�2�L��2�2�2�2�2�2�L�2�2�L�2�L�L�2�2�L�L�2�2�L�2�L�2�L�L��+2�L�L�2�L�2�L�2�L�2�L��+2�2�2�L�L�2�L�2�2�L�2�L�L�2�2�L�L��2�L�2��L�2�2�L�2�L�L�2�2�L�L�2�2�L�iL�2�2�2�L�L�2�L�2�L�2�2�L�L�2�2�L�L�2�L�2�2�2�L���L�2�2�2�L�L�2�2�L�L�2�L�2�2�L�L�2�L��2�2�2�L�L�2�2�L�L�2�2�L�2�L��L�2�L�L�2�2�L�2�L��L�2�2�L�2�2�2�2�2�L�2�2�L�L�2�2�L�L�2�L�2�L��L�2�L�2�L�2�L�2�2�L�2�L�2�L��L�L�2�2�L�L�2�L�2�2�L�2�L�2�L�2�L�L��2�2�2�L�L�2�L�2�2�2�2�L�2�L�L�2�L��2�2�L�2�L�2�L�2�L��2�L�L�2�L�2��+L�2�333L�3L�33L�3L�L�3L�33L��L�3	L�L�3
3L�3L�L�3
L�3L��33.33"3333L�3L�33L�L�3L��3L�3L�L�33L��L�3L�L�3L�3 3!L��L�3#3&3$L�L�3%L��3'L�3(3+3)L�3*L��L�L�3,3-L�L��3/L�30L�31L��L�c�33q~34q~35q~3637q~383Cq~393:q~3;q~q~3<3=q~q~3>q~3?3@q~q~3A3Bq~<�q~q~3Dq~3Eq~<�3G3X3Hm�3Im�3Jm�m�3K3Lm�3Mm�m�3Nm�3Om�3P3Qm�3Rm�m�3Sm�3T3Um�3Vm�3Wm�m�#azb�3Z3n3[3\c�d`�3]d{3^d{3_3`d{3ad{3bd{d{3cd{3dd{3e3fd{3gd{3hd{d{3i3jd{d{3k3ld{3md{@d{3o3p`�n�g4cW3r5�3s4*3t3�3u3|3v3y3w3xdNhl�3z3{p�d{c�xv3}3�3~3�L3i�3�i��b�q~3�3�cW`�d3�iM3�t�iM3�4'3�3�Nb�3�3�3�3�3�3�3�3�3�3�c�liiMb�c�3�b�3�3�3�3�3�3�3�d{}�}�d{3�d{d{=3�3�d{3�d{}�}�3�}�=3�3�3�3�b�c�c�b�3�b�b�3�3�b�3�b�3�b�x�b�3�3�3�3�3�3�t�azb�d{3�3�3�d{b�d$3�xv3�3�3�3�3�3�`�`�Lb�3�3�p�b�`�3�M3�M3�3�MM3�M3�3�M3�MMd3�3�3�3�MdLL�3�3�`�db�M3�3�3�3�3�c�3�3�3�3���3�=3`3�3�=%��=33�3�3�����x�3�"�=A3�d{3�3�=Ob�`�3�3�3�H:��b�3�3�H:c�b�M3�3�3�3�3�d{d{n�b�3�j�b�3�43�43�3�b�3�c�d$3�43�3�3�g&3�ll3�l3�l3�l3�3�l3�ll3�l3�gl3�b�3�b�3�b�b�3�b�3�4b�4b�b�4b�4b�4b�b�4j�b�b�444	4
b�c�d{b�44
g_b�c�{
44444b��,c�44db�4c�OE444[�=^=^U�44$44#4g444 44��*���g�4!4"g�M��g�t�c�4%4&c�n�b�d{4(4)t�c�nWb�4+504,4�4-4�4.4L4/4140b�b�d{424B43��444=4549b�4647b�48b�b�b�b�4:4;ݨb�4<yd$4>b�b�4?4@b�4Ab�d$yb�4C4DЌ4E4Hb�4F4Gw�b�w�4I4K4JNQ�NQ�N4M4d4N4c4O4Ud{4Pd{4Qd{4Rd{4S4Td{}�d{4VM�M�4WM�4X4YM�4ZM�4[M�M�4\4]M�M�4^4_M�4`M�4aM�4bM�@M�L�h4e4�4f44g4h=ln�n�4i4j4o4k4mn�4ln�=l4nn�n�=l4p4}4q4z4rn�n�4sn�4t4un�+T4v4wn�n�4xn�4yn�={=l4{4|n�=�n�4~n�=�n�4�4�q�d4�4�dq�q�db�p�4�4�4�4�4�4�n�iMd{b�4�4�b�L�d4�4�4�4�dd4�4�d4�d4�d4�dd4�4�d4�d4�dd4�4�d��d4�4�4�d4�d4�dd4�4�d4�dd4�d4�4�dd4�d4��Zd4�d4�dd4�d4�4�d4�dd4�4�d4�dd4�4�d�d4�4�4�4�`�b�4�b�4�4�4�NN4�4�NN4�N4�4�NN4�N4�4�NN4�N4�N4�Nx�4�Nli4�4�li4�li4�li4�li4�lili4�4�lili)�4�4�db�4�xviMd4�4�azc�4�4�4�4�4�4�b�4�d{b�4�4�d{b�b�=�4�4�b�4�}�d{4�4�d{4�d{b�4�4�xvb�p�4�g&4��4���4�54�4�4�4�4�4�4�4�c�b�xvc�4�4�xvb�b�xv4�4�4�b�d{c�4�4�{
4�4�b�4�b�~�b�b�d{4�54�555N5�,xvlxv55d{c�c�=�55
55	�lc�=�c�5d{b�5
5555555j�5cW55c�b�Md{b�55b�c�Md55d{5d{xv55b�c�c�b�55.5 5+5!5)5"d{5#5&5$5%LNb�N5'5(H:dj*M}�5*=�=�5,5-d{Лxvd{b�5/c�d{515�5253t�g_b�54555i565Z575S585G595:L�i�5;b�d5<5=dd5>d5?d5@d5Ad5Bd5C5Dd5E5F�d�d5H5L5IL�5JiMiM5KiM�8Л5M5NMM5O5PM5QM5RMM�;5T5W5U5Vc�L�d{`�5X5Yc�Np�N5[5c5\5_5]5^b�dd`�5`5bp�5awhN|�5d5g5e5fg_M�L�N5hdn�`�5j5�5k5r5l5o5m5nb�Mt�M�5p5qL�dL�xv5s5{5t5uxvp�b�5v5w5y5xv�v�az5z��v���5|5d5}5~i��e�OL�b5�5�5�5�5�5�b�aN5�d5�az5�5�gQazazgQ5�5�b�nWb�5�5�g45�5�=�5�5�=�=�5�5�=�5�=�5�=�5�=�5�=�=�>>�5�5�M5�c�5�>5�>5�5�>>5�5�>>5�>5�5�5�>5�>.5�>>.5�>>.>5�NL�`�5�5�5�5�5�5�t��xd{rf5�5�c��Hb�c�5�5�5�5�b��,5�ty5�5�5�dd5�d5�d5�5�d5�dd5�d5�5�dd5�5�d5�dd5��Kd5�5�5�d5�d5�dd5�d5�d5�d5�d5�d5�o�dd5�d5�5�d5�dd5�5�d5�dd5�d5�5�d5�d5�d)
d5�5�t�m�Лb�5�9�5�9�5�9�5�9�5�9_L�5�5�7�5�L�5�6�5�L�5�L�5�6V5�6'5�65�65�5�L�5�L�5�5�5�5�L�5�L�L��L�5�L�5�L��+5�L�5�5�5�L�L�5�L�5�L�iL�6L�6L�6�L�6L�66
L�66L�L�66	L�L��L�6L�6L�6
L�6L��66 L�6666L�L�66L�6L�L��+666L�L�6L�6L��L�66L�6L��L�L�6!6"L�L�6#6$L�L�6%L�6&�L�6(6>6)60L�6*L�6+L�6,6-L�6.L�6/L�L��61L�626763L�L�64L�6566L�L�i68L�69L�6:6<L�6;�L�6=L�L�>C6?6OL�6@6A6F6BL�L�6CL�6D6EL��L�6G6K6HL�L�6I6JL��L�6LL�L�6M6NL�>SL�L�6PL�6QL�6R6SL�6TL�L�6U�L�6W6�6X6p6Y6f6Z6`6[L�6\L�L�6]L�6^L�6_L�>c6aL�L�6bL�6c6dL�6eL�L��+L�6gL�6h6iL�6j6m6k�6l�L��6nL�6oL��L�6q6x6rL�6sL�6tL�6uL�6vL�6wL�L�iL�6yL�6z6{6L�6|6}L�L�6~L��6�6�L���6��6��L�6�6�6�6�6�6�6�6�6�6�6�6�6��6��L��6�L�6�L��L�L��6�6�6���6�6���L��6��6��6���6�6�6�L�L�6�6�L�6��L��6�6�6�L�L�6�L�6��L�6��L�6�L�6�L��6�6�6�6�6�L�6�L��6�6�L�L��L�6�6�L�L�6�L�6�L��6�6�L�6�L�6�6��+L��+�+6�6�L��+L�L�6�6�L�L�6�L�6�6�L�L�6�6�L��L�L�6�6�L�6�6�6�6�L�6�6�L�6�6�L�6�L�6�6�L�6�L�6�6�L���L�6�L�6�L�6�L�L�6�6�L��L�L�6�6�6�L�6�6�6�6�L�L�6�L�6�6�L��L�L�6�L�6�L�6�6�L�L��6�6�6�L�6�L�L�6�6�L�L�6�L�i6�L�L�6�L�6�L�6�L�6�L��6�7l6�76�76�6�L�6�6�L�6�L�L�6�L�6��L�6�7L�7L�77L�7L�iL�7L�77	L�7L�7�L�L�7
7L�L��7
L�L�7L�77L�L�7L�7L��77577$77777L�7L�L�7L��+7L�7L�L�7L��L�7 L�7!7"L�7#L��+�7%7*L�7&L�7'7(L�L�7)L��+7+7/7,L�7-L�L�7.�L�L�70717372>CL�>r74L�>C>c767Y777G787<79L�7:L�7;L�>SL�7=7AL�7>7?7@L�>rL��+7B7D7CL��L�7E7FL��>rL�7H7Q7I7LL�7J7KL�>�L�7M7O7NL��L�L�7P>cL�7R7V7SL�7T7UL��L��+L�7WL�7X�L�7Z7bL�7[7\7_L�7]7^L�L�>�L�7`L�7aL��L�7c7d7g7eL�L�7f�L�7h7j7iL�L��L�7k>cL�7mL�7n7�7o7�7p7�7q7|7r7x7s7uL�7tL��7v7wL��L��L�7y7z7{�>�L�>S7}7�7~7�L�7L��7�L��L�L�7�L�7�L��7�7�7�7�7�7�L�7�>�L�7�7�L���L�L�7�7�L�L�iL�7�7�7�L�7�L�>�7�7�>�L�L�>�7�7�7�7�7�L�7�L�>�L�L�7�L�7�L�7�>c�L�7�L�7�L�7�L�7�iL�7�L�7�7�7�7�7�L�L�7�L�7�L��7�L�L�7�L�7��L�7�7�7�7�L�7�7�L�L��L�7�L�7��L�7�7�7�7�7�7��L���L�7�>C�7�7�L�7�L��7�L�iL�L�7�7�9Z7�L�7�8I7�87�7�7�L�7�7�7�L�7�7�7�L�7�L�L�7�7�L��L�7�7�L�7�7��7��L��7�L�7�7�7�L��L�L�7�L��L�7�7�7�L�7�L�7�7��7��L��7�7�7���7����7��7��7��L�7�87�L�7�87�7�7�7�7�7�7��7��L���7��7�L��7�7�7�L��L�7��L�7���8�+888L�8L��L�8�+L�8L��888	8
�+8
8L�8L��+L�8L�8L�8L�L��8L�8L�L�8L�8�L�8L�8L�L�8L�88L�8L�8L�L�i88(8 L�L�8!8"L�8#L�L�8$L�8%L�8&8'L�L��L�8)8*8:L�8+8,81L�8-8.L�L�8/L�80�L�8286L�8384L�85L�L��+L�87L�88L�89L��8;8A8<L�8=L�L�8>8?L�8@L�L��+8BL�8CL�8DL�8E8G8FL�L�iL�8HL�i8JL�8K8�8L8�8M8~8N8`8O8TL�8PL�8Q8RL�L�8SL��8U8\8V8Y8WL�L�8X�L�8ZL�8[L��L�L�8]L�8^L�8_�+L�8a8o8b8k8c8h8d8f8eL��L�L�8g�L�8iL�8jL��IL�8lL�L�8m8nL�L��8p8z8q8w8r8u8s8t�L�L��+L�8vL�iL�8x8yL��+L�8{L�L�8|L�8}L��8L�8�8�L�8�8�L�L�8�8�L�L��8�8�L�8�8�L�L�8�L��L�8�L�8�L�8�L��8�8�8�8�8�8�8�L�L�8�8�8�8�L��L�L�8�L�iL�8�L�8�8�>c8�>cL�>C8�8�8�L�8�L�8�L�>�8�>SL�8�8�8�8�8�8�8�L�>rL�L�8�L�iL�8�L�8�L�>c8�L�8�8�8�L�>cL�L�8�iL�8�8�8�8�8�8�8�8�L�8�L�8��L�L�8�L�8�L��+L�8�8�8�8�L�L��8�L��L�8�8�8�L�8�L�L�8�L��L�8�L�8�L�8��+L�8�8�8�L�8�L�8�L�L�8�L��8�8�8�8�8�8�L�8�L��8�8�L�>SL�>CL�8�L�8�L��+8�8�8�L�L�8�L��8�L��8�L�i8�L�8�9-8�98�8�8�8�8�8�8�8�L�8��L�8�8�>�>c>c>�L�8�8�8����L�8�L�8�8�L�8�iL�8�8��L�L��8�98�98�9L�8�L��L�9��+L�99L�L�x9999L�>�9	9
>�L�>�>c9L�9
L�L�>C9999L�9L�9L�9L��99L�999L��i�9999�PL�L��P9L�L��9 9$9!L�9"L�9#L�L�i9%9(L�9&L�9'L��9)9+L�9*�L�L�9,�L�9.9A9/9590L�L�9192L�9394L�iL�>�969:L�97L�98L�99�L�L�9;9<9?9=9>�L��L�L�9@L�i9B9N9C9G9DL�9EL�L�9FL�i9H9K9IL�9JL�L�>CL�9L9ML�L��9O9V9P9S9QL�L�9R�L�L�9TL�9U�i9WL�9XL�9YL��L�i9[9\ii9]9^iL�iM�9`9a9�M�9bM�9cM�9d9e9p9fM�9gM�9hM�M�9i9jM�9kM�M�9lM�9m9nM�9oM�>�M�9q9{M�9r9sM�9tM�9uM�M�9v9wM�9xM�M�9y9zM�>�M�9|M�9}M�M�9~99�M�9�M�9�M�9�9�M�M�9�>�M�M�9�9�M�9�M�9�M�M�9�>�M�M�9�9�9�M�9�9�M�9�9�9�M�M�9�9�M�9�M�M�9�9�M�9�M�9�M�9�M�M�>�M�9�9�M�M�9�M�9�9�M�9�M�M�9�M�9�9�M�M�>�M�9�M�9�M�9�9�M�M�9�9�M�9�M�M�9�9�M�M�9�M�9�M�9�>�M�c�9�9�e�e�t�d{9�c�g49�9�9�9�9�9�MiM`�9�9�d{d{9�d{9�d{9�9�d{9�d{9�d{d{9�9�d{9�d{d{9�d{9�d{9�d{9�9�d{d{}�9�9�nW>�l9�az9�az9�9�az9�az9�9�az9�9�az9�az9�az9�azaz9�az9�az9�az9�az9�wUazaz9�az9�9�azazwU9�9�9�9�Л|�L�d{9�9�g4c�Ld9�;�9�:�9�:iiM9�9�:H9�:9�:9�9�9�9�MnWxvnWL9�9�N9�MM9�9�MM9�M9�M9�9�M9�M9�MM:My�::::b�MdN::b�::L�L�:	L�:
L�:L�::
L�:L�L�:L�:L�:�:L�d:::::Mc�b�ku::NQ�Nd::.::::L�l�LM�: :-:!M:":#>���:$>�:%?:&?:'?:(?:)??:*?:+?:,??`�� :/:E:0:1t�`��I:2M:3:4M:5:=:6MM:7:8M:9M::M:;M:<M@M:>MM:?:@M:AM:BM:CM:DM@M:F:Gb�Nb�M:I:W:J:Q:K:N:L:M`�xvL�b�:O:Pc�MMt�:R:TM�:SL�d:U:Vdc�?"��:X:b:Y:\:Z:[dd{MnW:]:a:^xvb�:_:`b�b�m�j�ku:c:f:d:enWMb�d:g:hcWNc�y7:j:�:k:�:l:w:m:u:n:ob�xv:pnW�O:q:r�O�O:s�O:tM�O:vb�b�c�:x:�:y:�p�:z:{:�:|:~:}b�v�b�:v�b�v�:�azv�azM��:�:�dj�c�`�:�:�:�:�d:�dd{:�:�b�`�b�xv:�:�:�:�b�c�Q�b�:�:�akb�j�:�:�:�:�:�:�:�NMMg	Mak:�:�M:��,l:�:���lN=^:�:�t�:�:�M�nW:�:�M�nWM�:�:�:�:�:�:�:�:�LMN`�:�:�`�N:�c�dL:�:�:�:�MxvNd:�:�j�OTML:�:�:�:�:�:�L�dL�c�:�:�Mb�dM:�:�:�:�dcWb�L�:�:�d{d:�NL�N:�;�:�;:�:�:�:�:�:�:�:�:�:�:�b�x�:�:�:�b�x�b�x�:�b�x�b�x�:�:�:�d2�P:�:�:�d2d2�P:�b��Pd2:�:�x�p�x�:�x�:�d2x�:�:�:�:�:�:�c�`�`�ak:�:�b�LcWd:�:�:�:�Mb�:�b�:�c��B:�:�dd{b�:�:�Nd:�d:�d:�:�dd:�d:�d:�d:�d:�d�:�;;;ak;;akak;ak;;akak;ak;ak;ak;	ak;
;ak;ak;
ak?1ak;M;M;;M;;MM;;;q�dd��;M;M;M�J�`�b�;;9;;7;;-c�; ;!cWcW;"cW;#cW;$cW;%;&cWcW;'cW;(;)cWcW;*;+cW;,cWcW?@�,;.;/;3xv;0xv;1xv;2xv��;4xv;5xv;6xvxv��;8`�Lxv;:;~;;;I;<;B;=;AM;>c�;?c�;@c���L�d;C;H;DNM;E;F;GtOMM��b�cW;J;O;K;Nb�;Lku;MiMb�kut�;P;}{
;Q;R;\az;S;Taz;Uaz;Vaz;Waz;Xaz;Yazaz;Zaz;[�az;];faz;^;_az;`azaz;aaz;b;cazaz;daz;ekXaz;gaz;h;v;i;qaz;jaz;kaz;l;m;oaz;nw�azaz;pw�az;razaz;saz;t;uazb�azaz;w;xaz;yaz;zazaz;{;|azb�azdc�;;�;�;�;�;��`�cW;�;�;�;�;�gCkXgCw*;�;�;�w;�;�;�;��;w��wF;�;�����,w;�v�;�;�;�;�����;�w?Uw;�;�b�ML�b�;�;�d;��xb�;�;�MM�db�;�;�;�;�;�;�MM�b�d;�;�b�akMd;�;�;�;�akc�;�c�;�;�;�?d;��?;��?�??d;�;�;��??d�?�?;��?;�?d�?;�;���M�c�|�;�<�;�<N;�;�;�;�t�{
b�h;�;�;�c�;�b�;�b�;�b�b�;�b�;�b�;�b�;�;�b�;�b�;�b�;�b�;�b�b�;�b�;�@b�;�;�;�;�;�;�;�;�fb�b�p�;�;�`�Nxv;�L�b�;�;�;�dj�d;�;�Ng4ld;�<;�;�;�;�N;�;�;�;�;�?s?�?�?�;�;�W�b�;�b�;�b�;�b�b�;�b�;�;�b�;�b�;�b�b�b�;�;�`�;�;�;�;�?�?�;�?�;�?�;�?�?�@���Nc�;�<<<<Oc<OcliOcOc<<Ocb�Oc<<
Oc<b�<	b��}b�N<<7<
< N<<<<N;Q�b�<<Q�b�b�<<Q�<Q�Q�<<<<Q�<Q�Q�<@�Q�<Q�<Q�<Q�@�Q�<!<0<"<-<#<,<$b�<%OT<&OT<'OT<(OTOT<)OT<*OT<+OT@��Y��<.</��NQ�\;<1<4<2<3OqW�йb�<5<6OcO�_FQ�<8<B<9<?<:<<<;b�@�Q�<=<>d�e�d�Oc<@N;<AN;N<C<H<D<F<E_FQ�?s<GQ���b�<I<L<J<KNQ�[�NOc<Mb�Oc<O<}<P<m<Qd<R<`<S<_N<T<U<X<VNN<WYNN<Y<ZNQ�<[N<\N<]<^N@�NazNK�<a<b<i<c<f<dN<eNNVpN<gN<hNP}<jN<kQ�N<lNOTiM<n<o<v<p<s<q<rb�t�cWM�<t<uc�b�dcW<w<z<x<yc�g4i�d<{<|L�@|M<~<�<t�<�<�<�<�<�M�M�<�<�M�M��<�M�<�M��M�<�<�<�M�<�<�<�<�<����0M��<��{��<�<�M�<�<�M�<�<�[M��0M�<�<�<�<�<�{��{�<�{�{�M�<�<�<�{�<�{�<�{�{�<�{�<�<�{�<�{�M�<�{�<�{�M�<�M�{�M�<�<�M<�<�Maz<�d{M<�<�<�L�<�azL�<��<�<�M<�<�<�<��P<����:L��<����<����:g4L�<�==<�<�<�<�<�<�<�<�NiMn�M<�<�<�<�<�g�<�<�<�g�<�g�g�<�<�g�<�g�<�g�<�g�<�g��;g�<�g�g�<�g�<�g�<�g�<�<�g�<�g���g�<�c�c�<�c�<�c�<�c�<�<�c�<�c�<�c�c�<�c�@�rf<�<�M<�MM<�M<�M�J<�<�<�<�b�Nak<�<�<�<�<�<��<��Ae�Ae<��AeAeiM<�<�q~liMnW<�="<�<�<�<�d{b�b�d{<�=b�@�==nW=nW=nW=nW=nW=nW=nW=nW=	nW=
)(@�M=M=
===M=MM=M==M=MM==MM=MtO=MM=M=M==MM=M=M= =!MMtO=#=)=$=(=%li=&q~q~='{
q~b�e�=*=+t�L�I=,=-=8=.=2=/d=0=1iMdiMd=3=5�C=4o�d=6=7suiMd�Md=9=:L=;=<dLLd=>=�=?=b=@=W=A=U=B=T=C=L=D=I=E=GM�=F[M�M�=H��{�=JM�M�=KM�[=M=Q=N=Pd=Oq�ddq�d=Rd=Sdq��bakM=Vc�b�=X=[=Y=Zd`�b�L�=\=a=]d{m�=^=_m�m�=`m�dxvb�=c=v=d=s=e=fakdL=g=hdd=id=jd=k=ldd=m=nd=od=pdd=qd=rd@=t=udK�xvd=w=�=x=�=yd=z=�={=}=|azH:M=~=�=db�=�=�b�=�b�b�=�b�=�=�b�=�b�b�b�akQ�=�=�=�LQ�N=�=�e�=�=�=�R@�)
Ac�b�g_cW=�=�M�c�Ld=�=�=�=�=�=�=�=�=�b�n�M�`�=�c�n�=�=�=�=�xvc�b�=��b�=�=�p�=�=�=�=�=�Ll}�d{=�=�Q�lxlMMd=�=�=�=�=�=�akdn�`�=�=�b�N`�M=�=�M=�p�b�=�=�L�`�b�~�=�=�=�=�=�=�=�=�MxvnW@=�=��C=�=�az=�azb�azL�z�=�=�=�=���M`�N=�=�b�NM=�=�=�=�=�d�e�e�d�=�e�d�kf=�=�=�=�=�=�L�b��bi�=�=�L�cWL�L=�=�=�=�p�L�liiM=�=�xvku`�M=�>�=�>.=�>=�=�az=�=�=�E=�azEaz=�azEaz=�az=�=�E=�E=�az=�az=�azaz=�az=�az=�az=�=�az=�azaz=�=�azaz=�=�azaz=�=�azaz@>>(>>az>az>az>>az>az>az>	az>
az>azaz>>
azaz>>az>azaz>>az>azaz>az@az>>azaz>az>az>az>>azaz>>azaz>az> >!azaz>">#azaz>$>%azaz>&>'az@az>)>,az>*>+|wv�>-www>/A>0>�b�>1>2>�>3>Rt�>4>5v�>6>D>7v�v�>8>9v�v�>:>;v�><v�v�>=>>v�v�>?v�>@>Av�>Bv�v�>Cv�v�>Ev�>Fv�>Gv�>Hv�>Iv�v�>Jv�>K>Lv�>Mv�v�>N>Ov�>Pv�v�>Qb�v�>S>d>T>Uv�mt�>Vt�>Wt�>X>Yt�>Zt�t�>[t�>\t�>]>^t�t�>_>`t�>at�t�>bt�>c�t�w>e>fww>g>h>tw>iw>j>kww>lw>m>nww>ow>p>qww>r>sww�K>uw>vw>www>xw>yw>z>{w>|w>}ww>~>ww�K>�>�wazaz>�>�az>�az>�azt�az>�>�az>�az>�az>�az>�az>�az>�>�>�>�>�b�>�b�>�b�azazgQ>�az>�azgQaz>�A>�>�>�>�azt�>�az>�>�>�ww>�w>�w>�>�ww>�>�w>�w>�w>�ww>�>�w>�ww�K>�>�>�>�>�>�>�>�>�>���v�v�azaz>�{�azt�azaz>�t�azaz>�>�>�u�>�>�azu�az>�az>�az�wwq>�>�waz>�w>�>�v�mb�v�>�?�>�?�>�>�>�azt�az>�?N>�>�>�>�>�>�az>�>�azaz>�>�az>�az>�azaz>�>�azaz>�az>�>�azaz>�>�az>�azaz>�az@az>�>�azaz>�>�az>�azaz>�az>�>�azaz>�az>�>�az>�azaz>�az>�az>�@az>�az>�azaz>�>�azaz>�>�az>�az>�az>�azaz>�>�azaz>�>�azaz>�az>�az>�@az??!??az?az??az?azaz?az??az?	azaz?
az??azaz?
?az?az?az@azaz?az?az??az?az?azaz?az?az?az??azaz??azaz?? az@azaz?"?#??az?$?%?2?&azaz?'az?(?)azaz?*?+az?,azaz?-az?.az?/az?0az?1az@az?3az?4az?5az?6az?7az?8az?9az?:?;az?<az?=azaz?>@az?@azaz?Aaz?Baz?Caz?D?Eazaz?F?Gaz?Hazaz?I?Jaz?Kaz?Laz?Mazaz@?O?�?P?o?Qaz?Raz?S?aaz?T?Uazaz?V?Wazaz?Xaz?Y?Zaz?[azaz?\?]az?^az?_az?`azaz@?bazaz?c?daz?eaz?faz?gazaz?h?iazaz?jaz?kaz?laz?maz?n@az?paz?q?�az?raz?saz?t?uaz?vaz?waz?xaz?yazaz?zaz?{?|az?}azaz?~az?az@az?�az?�az?�az?�az?�?�az?�az?�azaz?�?�azaz?�?�azaz?�az?�@az?�az?�az?�az?�az?�az?�az?�?�az?�?�az?�azaz?�az?�az?�az?�?�az?�az?�azaz@?�azaz?�az?�?�az?�azaz?�?�az?�azaz?�?�az@azaz?�?�?�az?�?�?�az?�?�az?�azaz?�?�az?�azaz?�?�az?�azaz?�az?�az?�?�az?�azaz?�?�azaz@az?�?�az?�az?�az?�az?�az?�az?�az?�az?�az?�az?�az?�az?�az?�az?�azazv�az?�?�az?�az?�?�az?�?�azaz?�?�azaz?�?�az?�azaz?�?�azaz?�az?�az?�az?�az?�az@?�azaz?�?�az?�azaz?�az?�?�az?�az?�az?�azaz?�?�az?�az?�az@az?�@az?�?�@
?�azaz?�az?�az?�az?�?�az?�az?�azaz@@azaz@az@@az@az@az@azaz@@	az@azaz@az@@
azaz@@az@azaz@@azaz@@azaz@az@@az@azaz@az@@az@azaz@@@)az@@ @(az@!az@"@#az@$az@%az@&az@'azt�azt�w@*@�@+@>@,@-wt�w@.@/ww@0@1w@2ww@3@4ww@5@6ww@7@8w@9w@:ww@;@<w@=wAw@?@Pw@@@Ab�v�@Bt�@C@Dt�t�@E@Ft�t�@G@Ht�t�@I@Jt�@Kt�t�@L@Mt�t�@Nt�@Ot�A*@QE@Raz@S@�@T@i@U@`@V@]@W@Z@X@Y�1t�{�az@[@\v�azazwq�w@^v�@_u�az@a@d@baz@cazwaz@e@fazv�@g@h�v���v�@j@u@k@naz@l��@m��t�@o@r@p@qazmmb�@s@tubwv�gC@v@|@w@z@x@ygQazkXu�u�@{��az@}@�w@~t�v�wu�@�@�@�azazt�@�azaz@�t�az@�@�az@�v�az@�@�@�azazm@�azaz@�b�v�@�v�@�Y9@�A�@�@�az@�az@�@�azM@�M@�@�M@�@�@�g�Mg�tOM@�A@�A@�@�@�@�@�@�@�A@�Ae@�E�@�@�@�Ba@�@�@�@�@�Ae��@&@�����@��@�@�@�@�@�t�v�wm@�@�mu�u��1@�@��6@�@��6Ez�6@�Gt@�F��F�E�@�@�Ed@�@�d@�dd@�d@�@�d@�dd@�@�d@�dd@�d@�d@�@�dd@�@�dc�d@�E�@�E�E�@�@�E�@�E�@�E�E�@�@�E�E�@�@�E�E�@��E�E@�@�E�@�ABa@�@�@�@�@�@�E@�E�@�E�@�@�E�@��@&�EzE�@���@�@�����@�BaEz@�@�@�@�A=@��@�@�@��@��A=A@�AA=@�@��@��A=@�AA=@�A=@�A=A@�A
QA
Q��AA�A�A��AAAAAAA	AA
AAAAA
AAAAAAAAAAAAAAAAA�A@&AAAAAEzA�~AeAA�AA�AAgAAPA @&A!H:A"@&A#ALA$A+A%F�A&@&A'A*A(AA)AA�F�AeA,AIA-ABH A.A/A1H A0H AKA2AAH A3A4H A5A;A6H A7H H A8A9H H A:AKH H A<A=H H A>H A?H A@AKH H AKACAFH ADAEH H AKAGH AHH H AKAJH @&AK
_EAMAO@&ANE�E�AeEAQAARE�ASE�ATE�AUE�AVAWAeAXAYAe��AZ@A[A_H:A\A]H:H:A^H:�,A`�AaH:AbH:AcH:AdH:�,H:@&Af@EHGAhAAiAjH AkHGAlA�AmAwAnAsAoAqAp@&|�@&ArAeAe�|�AtAu�AvH�AXAgAxEEAyAzEEA{EA|A}EA~EEAEA�A�EA�EEA�A�E@EA�@&E@&E�AeA�A�A�A�AeEA�A�AA�A�H @&A�A�H A�H�A�@H:A�A�GtF�A�F���H AA�A�A�A���BaAA�A�A�A�BaA�A�`�E�A�A�A�E�E�A�E�A�E�A�E�AvA�A�EzA�A��H��~@&AeA�A�A�E�A�E�@&EA�A�A@&E�AA�A�@&A�A�A��~F�A�E�E�A�H�A�H�AA�A�A�@&A�EA�EEA�EA�EA�A�EEA�A�EA�EA�EA�EEA�EA�EA�A�EEA�@E@&A�E�A�A�A�AeA�A�AeA�AeAeA�A�Ae�A�Ae�A�A�A�AeAeA�AeA�AeA�AeA�AeA�A�AeAeA��AeA�AeAeA�A�AeA�AeAe�A�DiA�D#A�C,A�CA�B�A�azA�BGA�A�A�azazA�A�azA�azA�azA�azA�azA�azA�azA�azA�azA�azazA�azA�azA�azA�az@A�B&BBBBBb�Bb�b�Bb�azBb�BBBb�B	b�B
b�b�azBb�B
b�b�Bb�Bb�BBb�Bb�BBb�Bb�Bb�Bazb�Bb�b�Bb�Bb�azBB"BB Bb�b�Bazb�b�B!b�azB#b�B$b�B%b�azb�B'B,B(b�b�B)b�B*b�B+azb�B-BCB.B2b�B/b�B0B1b�b�v�b�B3B4b�b�B5wUB6B7wUwUB8B9wUB:wUB;B?B<wUwUB=B>wUwUA�wUB@wUBABBwUA�wUb�BDBEb�BFb�azb�BHBiBIBYazBJBKazBLazBMazazBNBOazBPazBQazBRazBSazBTazBUazBVazazBWazBX@azazBZB[azazB\azB]azB^B_azazB`BaazazBbBcazazBdBeazBfazazBgBhazaz@azBjBkB�BlB�BmB~BnBvBoBsBpBrBqjazjv�wUazBtazBuv�azBwB{BxBzByazazwazgQB|B}gQazb�wBB�B�B�B�B�kXjw�ubB�B�w�wc�iB�B�B�B�w�azB�B�azwcazv�B�B�azB�azwB�B�t�v�gCb�B�B�azB�B�B�wB�B�B�gCb�gCb�b�gQazB�B�B�B�B�B�B�gCw�gCw�B�azb�kXgQB�b�gQB�B�B�B�gQB�B�B�gQkXB�B�gCB�gCB�B�B�gCB�gCB�B�B�gCazgCv�B�gCB�gCB�B�v�kX�wgCb�v�gQB�gQB�B�gQB�gQw�w�B�B�B�B�B�B�gQB�gQgCB�B�kXgCgQwB�gQB�B�wgQgCgQB�B�B�gQgCB�gCgQB�B�B�B�gQkXkXwB�B��^wt�B�gQ�MB�B�azB�B�azB�B�B�B�azB�MazB�B�B�MMB�B�MB�MB�MB�B�g�Mg�MazB�B�azv�u�B�B�azB�B�azB��|azB�B�B�B�|az|azazB�|azazB�azB�B�B�azB�B�azB�azazB�azB�B�azB�azv�azazB�CCCCCazazCCazazCazv�CazCazC	azC
azazv�azCC
CazCgQCgQCwgQCv�Cazv�azCC)azCCazCazazCCazCazCazCazazCCazC azazC!azC"C#azC$azC%azazC&C'azC(azaz@azC*azC+t�azC-C=C.C2|C/C0azC1az|azC3C6azC4C5azazMazC7C8az|C9|C:C;azazC<v�azC>C_C?azC@CRCA|azCBCCazCDazCEazazCFCGazCHazazCIazCJCKazCLazazCMCNazCOazCPazazCQwazCSazCT|CU|CV|CW|CXCZv�CY|v�C[|C\C]|v�v�C^v�|C`DCaC�azCbCcC�CdC�CeC�CfCrCgCmazChCiCkazCjazv�ClazazwCnazCoazCpCqwu�azv�CsC|CtCwCuazCvazaz�ZCxCzazCyazjC{azazv�C}C�C~C�CazjazC�C�waz�1t�C�C�azC�azwC�C�u�jjazC�azC�azazC�C�azC�azv�u�C�C�C�C�azC�azwC�C�C�C�C�w�^C�b���C�wC�C����v��iC�C�C�C�C�C�wv�azwwazC�wUC�C�wwwwUC�C�C�C�C�C�azC�C�C�gC�wazb�C�azC�C�kXt�u�azC�azC�azazC�u�azazC�azC�C�azC�C�az�1��t�C�C�azC�C�azazC�azC�azC�azC�azv�C�C�azC�az|C�azazC�azC�v�azC�C�C�C�C�azC�azC�C�C�azC�azC�azazC�C�azazC�C�azC�azazC�C�azazC�azC�az@azC�azC�azC�C�azC�azC�azC�azC�azC�azazC�azC�C�azw�azC�|C�C�C�azC�azazC�azC�C�azkXazC�azC�azC�azC�azC�azazgCC�t�azC�azC�azC�azC�C�azC�azazC�v�azazDazDDDazDDazDazazDDazD	azazD
DazazDazD
DazDazDazazDazD@azDazDazDazDazDazazDazDDazDazDazDazazDD azD!azazD"az@azD$D%D2azD&azD'D(azD)azD*azazD+D,azD-azazD.D/azD0azD1azazu�D3azD4DVD5azD6azazD7D8azD9azazD:azD;azD<azD=D>azazD?D@azDADGDBazDCazDDazazDEDFazb�azDHazazDIDJDQDKDNDLDMazgCgCazDODPkX�iwv�DRDTDSazazubazDUb�azazDWazDXazDYDZazD[azD\azD]azazD^D_azazD`DaazazDbDcazazDdDeazazDfazDgazDh@azDjP�DkIDlE�DmE�DnD�DoD�DpD�DqMDrDzDsDvDtazb�Duazb�DwDxazv�DyazkXazD{azD|azD}azD~azDazb�azMazD�MD�D�nudD�dD�dD�D�D�D�D�D�b�D�o�D�o�+�D�D�+�D�+�m�D�D�m�susu+�D�D�D�D�+�D�o��D�D���C�Cb�D�D�D�D�b�rc�q�d+�D�D�D�D�D�D�D�i#�Qi#D�b�i#�QD�D�b�A�D�b��b�D�D�D�D�D�D�c���Q#D�D�#�Zb�nuD�dD�dJ�ND�D�D�D�b�MMD�MD�M�oD�D�D�D�D�y�y�D�y�D�D�y�y�D�D�MD�MD�MD�My�M)xD�)xMMD�D�EhD�EZD�EMD�ED�D�D�D�L�D�L�D�L�D�L�D�D�L�D�D�D�L�L�D�L�D�L��L�D�D�L�L�D�L��L�D�D�L�D�D�L�D�D�L�L�D�D�L�L�D�L�D�L��D�L�L�D�L�D�D�D�L�D�D�L�L��L�D�L�D�L��D�ED�D�D�L�D�L�D�L�D�L�L�D�D�L�L�D�D�L�L��D�L�D�L�L�D�L�EL�EL�EL�EL�EL��L�EL�EL�EL�E	L�E
EL�EL�E
L�L�E�L�EEJEE7EE.EE&EEL�EEEEL�EL�EL�L�E�L�L�EL�EEL��L�E L�L�E!E"L�L�E#E$L�L�E%L��E'L�E(L�L�E)L�E*L�E+E,L�L�E-L��E/L�L�E0E1L�E2L�L�E3E4L�E5L�E6L�L��E8L�E9L�E:L�E;EAE<L�E=L�L�E>L�E?E@L��L�EBL�L�ECEDEGL�EEEFL�L��EHL�L�EIL��EKL�ELL��L�L�ENL�EOEPL�L�EQL�ERESL�ETL�EUL�EVL�L�EWL�EXL�EYL��:L�E[L�E\E]E^E_E`EaEbEcEdEeEfEgA�EiE�EjL�L�EkElEwL�EmEnL�EoL�EpL�L�EqErL�L�EsEtL�EuL�L�Ev�L�ExE�EyE�EzE�E{E�E|E�E}L�L�E~L�EE�L�E�L�L��E�L�L�E�L�E�L�E�L�E��L�E�L�E�L�E�L�L�E�E�L�E�L��L�E�L�L�E�E�L�E�L�E�L�E�L�E�L�L��E�L�E�L�L�E�E�L�E�L�E�L�E�L�E�L�L��E�E�L�E�L�E�E�L�L�E�L�E�E�L�L�E�L�E��L�E�L�L�E�E�E�E�E�E�E�E�E�L�E�L�E�L��E�L�E�L��L�E�L�E�L�E�L��L�E�L�E�E�E�L�L�E��L�E�L�L�E�L��E�E�L�E�L�E�L�E�E�L��L�E�L�E�L�L�E�E�E��L��L�L�E�E�E�E�L�E�L�L�E�L�E�E�L�L�E�L�E�E�L�L�E�L�E�E�L�L��:L�E�E�L�E�L�L�E�L�E�E�L�L�E�E�L�E�L�E�L�E�L��:L�E�azE�E�v�E�dMubkXE�H�E�H�E�E�E�azazME�E�t�i�E�t�E�H8E�FE�L�E�FE�FL�E�E�L�E�L�L�E�L�E�FL�FL��L�FL�FL�FL�FL�L�FFL�L�F	F
L��L�FFL�F
FL�L�F�FFL�FL�L�FFL��+L�L�FFF�L�L�FFL�L�FL�FFL�FL��L�F G>F!F|F"F2F#iiF$F%F+F&L�L�F'F(L�F)L�L�F*L�iF,F/L�F-F.L�iL�L�F0L�F1iL�F3F`F4FDF5F;L�F6L�F7F8F9L�iF:L�L�iL�F<F=F>L�iL�F?L�F@FAL�FBL�FCL�iL�FEFNFFFJFGL�L�FHL�FIL�iFKL�L�FLFML�L�iFOL�FPFZFQL�FRFVFSL�L�FTFUL�L�iFWL�FXL�L�FYiL�L�F[F\L�F]L�F^L�L�F_L�iFaFnL�FbFcL�FdFkFeFjL�FfL�FgFhL�FiL�L�iL�iFlL�FmL�iL�FoL�FpFuL�FqFrL�FsL�FtL�L�iL�FvL�FwL�FxFyL�FzL�L�F{L�iF}F�F~F�FF�F�F�F�F�F�L�L�F�F�L�F�F�F�L�F�L�L�iF�L�F�L�iL�F�L�L�F�L�F�F�L�L�F�F�L�L�iF�F�F�F�L�F�L�F�F�L�F�L�F�L�iL�L�F�F�L�F�L�F�L�F�L�L�iF�L�F�L�F�L�F�F�L�F�L�F�L��:F�L�F�L�L�iF�L�F�L�L�F�F�L�F�L�L�F�L�F�L�F�L�iF�F�F�F�F�F�F�F�L�F�iL�L�F�F�F�L�F�F�L�F�L�L�iF�L�L�F�L�F�L�iL�F�F�L�F�L�F�L�L�iF�F�F�L�F�L�iL�L�F�L�F�L�F�L�iF�F�F�L�F�F�F�L�L�F�L�F�F�L�F�L�iL�L�iF�F�L�F�L�F�F�L�L�F�L�F�F�L�L�iF�F�L�F�F�L�F�F�L�F�L�F�iL�F�L�F�L�iL�F�L�F�F�F�L�F�L�L�F�L�iF�L�F�L�F�L�L�iF�G"F�G
F�GL�F�F�F�F�L�L�iL�F�L�F�L�iGGL�GGL�GL�L�GiL�GL�L�GL�G	G
L�iGGiiL�GGGGGL�L�GiGGL�iL�L�GGL�GL�GGL�GL�GiL�L�GL�GL�iiGG iG!i�iG#G,G$iG%L�G&L�G'L�L�G(G)L�L�G*G+L�L�iG-L�G.G3L�G/G0L�iG1G2L��L�G4G8L�G5L�G6L�G7iL�G9L�G:L�G;L�L�G<L�G=L�iG?G�G@GlGAGZGBGKGCL�GDL�GEL�L�GFL�GGGHL�L�GIGJL��L�L�GLGML�GNGTGOL�GPL�L�GQL�GRL�GS�L�GUL�L�GVGWL�GXL�L�GY�L�G[L�G\G`G]L�L�G^L�G_�L�GaGfL�GbL�GcL�GdL�GeL��GgGkL�GhGiL�GjL��L��L�GmG|GnGoL��GpGuGqL�GrL�GsL�L�GtL��L�GvGwL�L�GxGyL�GzG{�L�L��G}G�G~L�GG�L�G�G�L�L�G�G�L�G�L�L�G�L��L�G�G�L�G�G�G�G�G�L�L�G��L�G�G�G�L�L��L�G�L��G�L�G�L��G�L��L�G�L�G�G�L�G�L�L�G�G�G�L�G�L�G�L��G�G�L��L�G�L��G�HG�G�G�L�G�G�G�G�G�L�G�L�G�L�G�L�L�G�L�G��L�L�G�G�L�G�G�G�L�L�G�G�L�L��G�L�L�G�L�G��L�G�L�L�G�L�G�L�G�G�L�L�G�L�G��:L�G�G�G�G�G�G�G�L�L��G��G�L�G�G�L�G�G�G�G�G��L��L�G�G��L�L��G�L�G�L�G�G�L��L��G�L�G�G�G�L�G���G�L�G�L�G�L��L�G�L�G�L�G�L�G��L�G�G�G�G�L�G�L�G�G�L��L�G�L�L�G�G�L�G�G�L�G�L�G�L��G�L�G�L��L�L�G�G�L�G�L�G�L�G�G�L�G�L�G�L��G�L�G�G�L��L��H�HHHL�L�HL�HHHHL�L�HL�H	L�H
�L�HHH
L�L�HL�H�L�HL�L�HHL��L�HL�HH-HL�HH#HHL�HL�HHL��L�L�HHH!H L��+L�H"L��L�H$L�H%H*H&H(H'L��L�H)L��L�H+L�H,L��L�H.H2H/L�L�H0H1L�L��H3L�H4L�H5L�H6L�H7L�L��H9H�H:H�H;H�H<HxH=HPH>HGH?L�L�H@L�HAL�HBHCL�HDL�L�HEHFL��L�HH�L�HIHJL�HKL�L�HLHML�L�HNHOL�L��HQHZL�HR�HSL�HTHUL�HVL�HWL�HXL�L�HY�L�H[HpH\HcH]L�L�H^H_L�L�H`HaL�HbL��L�HdHjL�HeHfL�L�HgHhL�HiL�L��HkL�L�HlL�HmHnL�HoL��L�HqL�HrL�L�HsHtL�HuL�L�HvHwL��L�L�HyL�HzL�H{L�H|�H}H~L�L�HH�L�L�H�H�L��L�H�L�H�L�H�H�L�H�H�L�H�L�H�L�H�L�H�L�H�L�H�L��L�H�H�L�H�L�H�L�H�H�L��L�L�H�L�H�H�L�L�H�L�H�H�L�H�L�L��H�L�H�H�H�H�L�H�H�H��L�H�L�L�H�H�L�L�H�L��H�L�L�H�L��H�H�H�L�L�H�H�L�L��L�H�L�H�L�H�L�H�H�L�H�L�L�H��L�H�H�H�H�L�H�H�L�H�L�H�H��L�H�L�L�H�L�H�L�H�L��H�H�H�L�L�H�L�H�L��L�H�H�L�L�H�L��L�H�H�H�L�H�H�L�L�H�L�H�H�L�L�H�L�H�L��H�H�L�H�L�H�H�L�L�H�H�L�H�L�H�L�H�H�L�H�L�iH�L�iL�H�H�H�L�L�H�L�H�L�H�L�H��L�H�L�L��H�H�H�MazMH�azkXazH�H�H�H�azH�azMH�MMH�A�H�A�H�H�MH�MA�)�MH�H�MazMIP�IM:IJcMIIJbIazIIsIIBI	I$I
IIiiII
IiIiIiIIiIiIiiIIiiL�iIi�iIIiIIIi�iiIiIiI iI!I"iiI#i�iI%iI&iI'I(I1iI)iI*I+I.I,iI-i�iI/iiI0�iI2I<I3I8I4iI5iiI6I7ii�iI9iI:I;ii�I=iiI>iI?iI@�IA�iICI[IDIMIEIIIFiiIGiIH�iIJiiIKILi�iiINIOIQiIPL�iIRiiISITiiIUIViIWiiIXIYiIZiL�iI\IgI]iI^iI_IeI`iiIaIbiiIcIdii�Ifii�iIhiIiiIjIkiiIliImiInIoiiIpIqiIriL�iItJ"�IuIvI�IwI�IxI�IyI�IziI{I�I|I�I}iiI~IiI�iiI�i�I�iI�iiI�I�iI�ii�iI�iI�iI�i��I�I�iI�iiI�iI�I�iiI�I�i�iiI�iI�iI�I�iI�iiI�iI�iI�iI��iI�I�I�I�iI�I�iiI�I�iI�iI�iiI�I�i�iI�iI�iI�I�i�iI�I�iiI�i�I�iI�I�iI�I�iI�iiI�I�I�I�iiI��iI�iiI�@iI�I�I�I�I�iI�iiI�I�iiI�i�I�iI�iI�iiI�I�i�iI�iiI�I�iiI�iI�iI�A�iI�I�I�I�I�I�I�I�iI�iI�I�iiI�iI�iI�iI�i�I�iI�iI�iI�iI�iiI�iI�i�I�iI�i�iI�iiI�I�iiI�iI�I�iiI�iI�iI��iI�JI�JI�I�I�iiI�i�I�iI�JiI�iI�Jii�JiJiiJiJiJi�JJJ	iJ
iJiiJJ
iJiiJ�iiJJiiJiJiJJi�J�iJi�JJiJiJiiJJiiJ iJ!i�J#J:J$J.J%iJ&iJ'iJ(iJ)iJ*iiJ+J,iiJ-i�iJ/iJ0J1iJ2iiJ3J4iiJ5J6iiJ7iJ8iJ9L�iJ;JNJ<JGJ=iJ>iiJ?iJ@JAiJBiiJCJDiiJEiJFiL�iJHiJIiJJiJKiJLiJMi�iJOJPJXiJQiJRiJSiJTJUiJViJWi�iJYiJZiiJ[iJ\iJ]J^iiJ_iJ`iJai�+azMJdK�azJeazJfJgKzJhKJiJ�JjL�JkJ�A�JlJmA�JnJvA�JoA�JpJqA�JrA�JsA�JtA�A�JuA�L�A�JwJxJ~JyA�JzA�J{A�A�J|J}A�A�L�A�JA�J�A�J�J�A�A�J�A�L�A�J�A�J�A�J�J�A�J�A�J�J�J�A�J�A�L�A�J�A�J�A�J�A�J�A�L�A�J�J�J�J�J�J�J�J�L��J�J�L�J�J�L�J�L�L�J�L�J�L�J�L�J��L�L�J�J�L�L�J�L�J�L�J�J�L�J�L�L��J�J�L�J�J�L�L�J�J�L�J�L�L��L�J�L�J�J�L��L�J�L�J�J�J�J�J�J�L�J�J�L�J�L�L�J�J�L�J��L��L�J�L�J�J�L�J�L�J�L�J�J�L��L��J�J�J�L�L�J�J�L�L�J�J�L�J�L��L�L�J�J�L�L���L�J�J�J�J�J�J�J�L�J�L�L�J�J�L��L�L�J�L�J�J�L�L�J�L�J�J�L�J�L�J�L��L�J�J�J�L�J�L�J�L�L�J�L�J�L�J�L�J�L�J��L�L�J�J�L�J�L�L�J�J�L�L�J�L�J�J�L�L��J�KJ�KL�J�L�J��J�L�J�L�J�J�L�L�J�KL��L�KL�KL�KL�KL�KK
KL�KL�L�K	L��KL�KL�L�K
L��KL�KL�KL�KL�L�KKL�KL�KL��L�KKnKK%K�K�K�K�K�K�K ��K!K"��K#�K$�A�K&�K'KGK(K/L�K)L�K*L�K+L�K,K-L�L�K.L��K0K;K1L�K2L�L�K3K4L�K5K8K6L�K7L�L��L�K9K:L�L��K<L�K=L�K>L�K?KCK@L�L�KAKBL��L�L�KDKEL�KFL�L��KHK_KIL�L�KJKKKQKLL�L�KMKNL�L�KOKPL��L�KRKZL�KSKTKWKU�L�KV�L�L�KXKYL�L��L�K[L�K\L�K]L�K^�L�K`KhL�KaKbL�KcL�L�KdKeL�KfL�L�KgL��L�KiL�KjKkL�KlL�KmL�L��KoL�KpKuKqL�KrL�L�KsL�KtiL�KvL�L�KwKxKyL���L�K{K�K|K�L�K}K~K�KK�K�L�K�K�K�L�K�L�L�K�K�L�L�K�K�L�L�K�L��L�K�K�L�K�L�L�K�L�K�K�L�L��L�K�L�K�K�L�K�L�K�L�K�L�K�L��L�K�K�K�L��L�K�L�K�L�K�L�L�K�L�K�L�K�K�L�L�K�L�K��L�iK�iK�K�K�iK�iK�K�ii�K�iiK�i�L�K�K�L�K�K�K�L�K�L�L�K�K�L�L�K�K�L�L��K�L�K�K�L�K�K�L�L��K�L�L�K��L�K�M8azK�K�MK�K�K��K�K�K�K�K�L�L�K�K�L��L�K�L�K�K�L�K�L�K�K�L�L�K�K�L�L��K�L�L�K�K�L�K�L�K�L�K�L��L�L�K�K�K�K�L�K�K�L�K�L�K�K�L�L�K�L�K��L�K�L�L�K�L�K�K�L��L�L�K�K�L�L��K�LMK�LK�L�K�L�K�K�L�K�L�K�K�K�L�L�K�L�K�L�K�K�L��L�K�L��K�L�K�K�L�L�LL�iLLLL�LLL�LL�LL�LL�LL�L	L�L
LL�L��L
L�LL�LL�LL��L�LL�L��LL.LL$LL L�LLL�LLLL�LL��L�L�LL�LL�LL��L!L�L"L�L�L#L��L%L�L&L�L'L�L�L(L)L�L�L*L�L+L,L�L�L-�L�L/L?L�L0L�L1L�L2L3L9L4L�L5L�L6L�L�L7L�L8L��L:L�L;L�L<L�L�L=L�L>L�iL�L@LALGL�LBLCL�LDL�LEL�LFL�L��LHL�LIL�L�LJL�LKL�LLL��LNL�LOLlLPL[LQLZLRL�L�LSL�LTL�LUL�LVLWL�L�LXL�LYL�iiL�L\LaL]L�L�L^L_L�L`L�iL�LbLhLcL�L�LdL�LeLfL�LgL�iL�L�LiL�LjL�LkiL�LmL�LnLpL�LoiL�LqiLrLyL�LsLtL�L�LuL�LvLwL�L�LxiL�LzL�L�L{L|L�L}L�L�L~LL�iL�L�L�L�L�L�L�L�L�L�L�L�L�L�L�L�iL�L�L�L�L�L�L�L�L�iL�L�L�L�L�L�L�L�L�L�L�L�L�L�L�L�L�L�iL�L�L�L�L�L�L�L�L�L�L�iL�L�L�L�L�L�iL�L�L�L�L�L�L�L�L�L�L�L�L�L�L�L�L�iL�L�L�L�L�L�L�L�L�L�iL�L�L�L�L�L�L�L�L�L�L�L�L�L�L�L�iL�L�L�L�L�L�L�L�L�L�L�L�L�L�iL�L�L�L�L�L�L�iL�L�L�L�L�L�L�L�L�L�iiL�iL�L�L�L�L�L�iiL�L�L�L�L�L�L�L�L�L�L�L�L�L�L�iL�L�L�L�L�L�L�L�L�L�L�L�L�iL�L�L�iL�L�L�L�L�L�L�L�L�L�L�iL�L�L�L�L�L�L�L�L�L�L�L�L�iL�L�L�L�L�L�L�L�iL�L�L�L�L�L�L�L�L�L�iL�L�L�L�L�L�L�L�L�L�L�L�L�L�L�iL�L�L�ML�ML�L�ML�MML�L�iL�MMMML�M	L�L�M
L�ML�ML�M
ML�ML�L�M�L�MM3ML�ML�MML�ML�MML�L�ML�MiL�MM+MM!ML�ML�L�M L��M"M(L�M#M$L�M%L�L�M&L�M'L�iM)L�M*L�L�iL�M,M-L�M.L�M/L�M0L�M1L�M2L�L�iM4L�M5L�L�M6M7L�L��azM9|��M;N+M<N*M=MhM>MLM?azazM@MAazazMBazMCazMDazMEMFazazMGazMHMIazazMJMKazkXazazMMazMNMOM\azMPazMQazMRazMSMTazMUazMVazazMWazMXazMYazMZazM[w�azazM]azM^azM_azM`MaazMbazMcazMdazMeazazMfazMgazw�azMiMjM�MkM�MlMyL�MmMnMqMoL�MpL�L�iL�MrL�MsL�MtL�MuL�MvL�MwL�MxiL�L�MzM{M�L�M|M}L�M~L�L�ML��M�L�M�M�M�L�L�M�L�M�L�M�L��L�M�L��M�L�L�M�L�M�M�M�M�L�L�M�M�L�M�L�M�L�L�iL�M�M�L��L��M�M�M�M�M�M�L�M�M�M�L�L�M��M�M�L�L�M�L�M�M�L�L�M�L�M�L��L�M�M�L�M�L�M�L�M�L�M�L�M�L�M�M�L�M�L���M��L�M�M�M�M�M�M�L�M�L�M�M�L�L�M�M�L�L�M�L��M�L�L�M�L�M�M�L�M�L�M�L��L�L�M�M��M�L�M�L�M�L�M�L�M�L�M�L�M�L��L�M�L�M�L�L�M�M�L�L��M�NM�M��M�M�M�M�M�M�L�L�M�M�L�L�M�L�M�M�L�M�L�L��L�M�L�M�M�L�M�L�L�M�M�L�L�M�L��M�M�M�L�M�M�L�M�L�M�L�M��L�M�M��L�M�L�L�M�L�M�L�M��L�L�M�L�M�M�L�M�L�L�M�L�M�L�M�L��M�NL�M�M�L�L�NL�NN�L�NNL�NL�L�NL��NNN	��N
NL�L�NN
L�NL�L�NL�NL���N�NNL�L�NL�NNL�NL�NL��L�NNNL�L�NNL��L�N �N!��N"�N#N$�N%��N&N'��N(�N)�L�v�azN,P�N-P�azN.N/PN0OVN1N�N2N�N3NHN4iN5iN6NCN7N>N8iiN9iN:iN;N<iiN=L�iN?iiN@iNAiNBi�NDiNEiiNFiNGixNINpNJ�NKNVNLiNMiiNNNOiNPNSiNQNRi�iNTiiNUi�NWNZNXiNYi�iiN[N\NjN]NaN^iN_iiN`i�NbNgNcNeiNdi�Nfi�iiNhNii�iiNkiNlNmiNnNoi��iNqN}iNrNsNxNtiiNuiNviNwi�NyiiNzN{iN|i�iN~N�iNiN�N�N�N�iiN�N�N�i��iN�iN�iN�iN�i�iiN�iN�iN�iN�N�iN�N�iN�i��iN�N�N�N�N�N�N�N�N�N�N�iiN�N�ii�iN�N�iN�iN�iiN��iiN�iN�N�iiN�N�iiN�iN��iiN�N�iiN�N�iiN�N�iiN�N�ii�iN�i�N�iN�N�N�N�N�iiN�N�iN�iN�i�iiN�N�N�N�iiN�iN��iN�iN�iiN��iiN�N�N�N�iN�iiN�N�i�iiN�N�ii�N�ON�N�N�N�N�N�iN�iN�iN�iN�i�iN�iN�N�iN�iiN�N�i�iN�N�iN�N�iN�iN�iN�i�iN�iN�iN�iN�iiN�iN�iN�iN��iN�ON�N�i�iN�iN�iN�N�iN�iN�iN�N�iN�i�iO�iiOOOOiiOi�OOiOiO	O
iiOiOO
ii�iOOiiOiOOii�OO&OOiOOiiOOiiOiOOi�iOO%O iO!iiO"O#iiO$i��iO'O7iO(O)O1O*iO+iO,iiO-O.iO/iO0ii�O2iO3iiO4iO5O6�i�O8OFO9O>O:iO;iiO<O=i�iiO?O@iiOAOBiiOCiODiOE�iOGOMiOHOIiiOJOKi�OL�iONOQOOiOPiiL�iORiOSiOTOUii�OWO�OXO~OYObiOZiO[iO\iO]O^iiO_iO`iOa�iOcOlOdOkOeiOfiOgiiOhOiiOjii��iOmOni�OoiOpOwOqiOriOsiOtiOuiiOvi�OxiOyiOziiO{O|iO}i�iOO�iO�O�iiO�O�O�O�iO�iiO�O�ii�iO�O�iiO��iO�O�O�iO�iO�iiO�O�i�iiO�iO�O�iiO�O�O�iO�O�iO�ii�iO�iO�iO�O�i�iO�O�O�O�O�O�O�ii�O�O�O�iO�iO�iiO�iO��iiO�iO�iO�iO�O�i�iO�iiO�O�iO�iO�iiO�i�O�O�O�iO�O�O�O�O�iiO�iO�i�iO�iO�O�iiO�iO�iO�iO��iO�O�O�iiO�iO�O�iO�iO�iiO��iiO�O�iiO�iO�O�iiO�O�ii�O�O�O�O�iO�iO�iO�iO�O�O�O�iiO�iO�i�O�iiO�iO��iO�O�iO�iO�O�iiO�i�iO�iO�i�O�PO�PO�iO�iO�iO�O�O�iO�iO�ii�iO�O�PiPi�Pi�iPiPiPiiPiPiP	iP
i�PPP
iPiPii�PiiPPiiPPi�iPPjPPDPP0PP%PPiPi�PiiPiP iP!P"iiP#iP$iL�P&iiP'P(iP)iP*iiP+iP,P-iP.iiP/iA�P1P9P2iiP3P4iiP5P6iP7iiP8�iP:iP;iiP<P=iiP>iP?iP@PAiPBiPCiA�iPEPQPFiiPGPHiiPIPJiPKiPLiPMiPNiiPOPPiiA�PRPaPSiiPTPUP[PViiPWiPXiPYiPZi�iP\iP]P^iiP_P`ii�iPbiPciPdPeiPfiPgiiPhiPii�PkiPlPsiPmiPniPoiPpiPqiPr�iPtiPuiPvP�PwiiPxPyP}PziP{iP|i�iiP~iPP�P��ii�iP�P�P�iP�iP�iP�P�ii�P�ii�azP�P�L�P�L�P�L�L�P�P�L�P�L�L�P�P�L�L�P�P�L�P�L�L�P�P�L�L�P�L�P�L��:P�azwazP�P�P�P�P�P�P�azwazazP�azP��oP��P�P��P��P��P��oP��oP��oP��o��oP�P�P�P�P�P�P�P�M�O�OMP�q�MP�P�q�MP�M�oMP��P�P�P��P��y�P���)xP�P�azMazMP�P�P�P�P�P�v�azazMP�az�;azP�P�P�az)xazP�P�q�azMazP�SP�R"P�P�P�P�P�P�azP�MazMP�azMP�P�P�P�q�P�q�P�Mq�P�azq�P�P�P��oP�P��O�oM�oP��OMP�P�MP�MP�P�MMg�MP�g�MP�P�P�P�P�Mq�P�Mq�MazP�P�azP�cWMazP�P�RP�Q P�QP�L�L�P�P�L�L�P�QQ	QL�QL�L�QQL�L�QQL�L�QL�Q�L�L�Q
QL�L�QL�Q
QL�QL�QL�QL�L��L�QL�QQL�QL�L�QL�QQL�QL�L�QL�QL�QL�QL�Q�:L�Q!Q�Q"Q�L�Q#Q$QeQ%QXQ&QIQ'Q4Q(L�L�Q)Q*Q/L�Q+Q,L�Q-L�Q.L��L�Q0L�Q1L�Q2L�Q3L�L��Q5QBQ6Q<Q7L�Q8L�L�Q9L�Q:L�Q;L��Q=L�Q>L�L�Q?Q@L�L�QAL��L�QCQDL�L�QEQFL�QGL�L�QHL���QJL�QKQLQRQML�L�QNQOL�L�QPQQL�L��QSL�L�QTQUL�QVL�QWL�L��L�QYQZL�L�Q[L�Q\Q]L�Q^L�L�Q_Q`QbL�Qa�L�QcQd�L�L��QfQpQgL��QhQiL�L�QjQkL�L�QlL�QmL�QnQoL�L��QqL�QrL�QsQzL�QtL�QuL�QvL�QwQxL�QyL��L�L�Q{L�Q|L�Q}L�Q~L�QQ�L��L�Q�Q�Q�Q�Q�Q�Q�L�L�Q�Q�L�Q�L�Q�L�Q�L�Q�L�Q�L�L�Q��L�Q�L�L�Q�L�Q�L�Q�L�Q�Q�L�L�Q�Q�L�Q�L�L��Q�L�Q�L�Q�Q�Q�L�Q�L�Q�L�Q�L�Q�L�Q�L�Q�L��L�L�Q�L�Q�L�Q�Q�L�L�Q�Q�L�L�Q��L�Q�Q�Q�L�Q�Q�Q�L�Q�L�Q�L�Q�L�Q�L�Q�L�Q�L�Q�L��L�L�Q�L�Q�Q�L�Q�Q�L�Q�Q�L�Q�L�L�Q��L�L�Q�L�Q�L�Q�Q�L��L�Q�L�Q�L�Q�L�L�Q�Q�L�L�Q�Q�L�Q�L�Q�L�Q�L�L��Q�RQ�L�Q�Q�Q�L�L�Q��L�Q�L�Q�RQ��Q�Q�Q�Q�L�Q�Q�L�L�Q�Q�L�Q�L��L�Q�Q�Q�Q�Q�Q�L�Q�Q�Q��L��L�Q�Q�Q��L��L��Q�Q��Q�Q���L��Q�Q�Q��L��L�Q�L�Q�Q�Q��Q�Q��L�L��Q�L��Q��L�Q�L�Q�L�RL�RL�RL�RL��L��L�L�RL�RL�RR	L�L�R
RL�L�RR
L�RL�RL�L�RL�R�L�L�RL�RRL�L�RRL�RL�L�RL�RRL�RL�L�RL�RL�RR L�R!L�L��:R#RKR$RGR%azR&R(azR'|BR)R.AeR*R+MMR,MR-M�MR/R?R0MR1MR2MR3MR4MR5MR6R;R7MR8MR9MR:MM�R<MR=MR>M�MR@RAMNRBNNRCRDNNRENRFNQ�RHRJazRIMi�aznWRLSRMSazRNROSRPR�RQRjRRR]RSL�RTL�RUL�L�RVRWR\L�RXRYL�RZL�L�R[�L��L�R^L�L�R_L�R`RaL�L�RbL�RcL�RdReL�L�RfL�RgRhL�RiL��:L�L�RkRlRxRmRtRnL�L�RoL�RpRqL�L�RrL�RsiL�L�RuL�RvL�Rw�L�RyR�L�RzR{L�R|L�L�R}L�R~RL�R�L�L��L�R�L�R�L�R�R�L�L�R�R�L�L�R�L�R�R�L�L�R�L��+R�R�R�R�R�R�R�B R�B R�B R�B R�B B R�B R�R�B R�B R�B B R�B L�R�R�R�R�R�L�R�L��L�L�R�R�L�R�L�L�R�L�R�R�L��L�R�L�L�R�L�R��L�R�R�R�R�R�R�R�L�R�L�L�R�R�L�L�R�R�L��L�L�R�R�L�R�L�R�L�L�R�L�R�L��R�L�L�R�R�L��L�L�R�L�R�R�L�R�L�R�L�L�R�R�L�L��R�R�R�R�R�L�R�L�R�L�L�R�R�L�L�R�L�R�L�R�L��R�R�L�R�R�L�R�L�R�L�L�R�R�L�R�L�L�R�L��L�R�R�R�L�R�L�R�R�L�L�R�L�R�R�L�R�L�R�L��+L�R�L�L�R�R�L�L�R�R�L�R�L��L�R�R�R�L�R�L�L�R�L�R��L�L�R�R�R�R�L�R�L��L�R�SR�L�R�L�L�R�R�L�L�SSL�L�SL�SL��SL��L�`�MazMS	S
azMazMSVXS
U�SazSU�azSMSSUSS�SS�SSdSS;SS0SS'L�SSL�SS!SL�L�SSL�SL�L�S �L�L�S"L�S#L�S$L�S%L�S&L��L�S(S)L�S*L�L�S+L�S,L�S-L�S.L�S/L��S1S2L��S3L�S4L�L�S5S6L�L�S7L�S8S9L�L�S:�L�S<SFL�S=L�S>S?L�L�S@SAL�L�SBL�SCL�SDSEL��L�SGSPL�SHL�SIL�SJL�SKL�SLSML�SNL�SOL��L�L�SQSRL�SSS_STL�SUL�SVS\SWSY�SXL��SZS[�L�L��S]L�S^L��L�S`SbL�Sa��ScL��L�L�SeSfSvL�SgShL�L�SiSjSpSkL�L�SlSmL�L�SnSoL��+L�SqL�SrL�SsL�StL��SuL��L�SwSxSzL�SyL��L�S{S|L�L�S}S~L�L�SL��S�S�S�S�S�S�S�L�S�L�S�L�S�L�S�L�S�L�S�L�L�S�S�L��L�S�S�S�S�S�S�L�S�L�S�L�S�S�L�L�S�S�L�L��L�S�S�L�S�L�L�S�S�L�L�S��L�L�S�S�L�S�L�S�L�S�L�L�S�L�S��L�S�L�S�S�L�S�S�L�L�S�L��L�S�L�S�L�S�xL�S��S�L�L�S�L�S�L�S�S�L�L�S�L�S�S�L�S�L�L��S�S�L�S�L�S�S�L�S�L�L�S�S�L�L�S�S�L�L�S�L��S�S�S�L�L�S�L�S�L�S�S��L���S�S�L�S�S�S�L�L�S�L�S�S�L�S�L�L�S��L�L�S�S�L�S�L�S�L�S�L�S�L��L�S�TxS�TAS�TS�S�S�S�S�S�S�L�L�S�L�S�iL�S�L�S�L�S�L�L�S�S�L�L��L�S�S�L�S�S�S�L�L�S�L�S���L�S�L�S�L�S�L�S�L�L�S��L�S�TS�TL�S�L�S�L�TTL�TL��L�TTTL�L�TTL�TL�L�T	T
L�L��TL�T
L�TL�TL�L�TTL�L�iTL�L�TL�TL�TTTL�TL���L�TT/TT)TL�L�TTL�T L�T!T&L�T"T#T$L���T%L��T'L�T(L��L�T*L�T+L�L�T,L�T-L�T.L��T0T7L�T1L�T2L�T3L�T4T5T6�L��L�L�T8T9L�L�T:T;L�L�T<T=L�L�T>T?T@L���L�TBTZTCTRTDTI�TETFL�TGL�L�TH�L�L�TJL�TKL�TLTML�TNL�TOL�L�TPL�TQL��TSL�L�TTL�TUL�TVL�TWL�TXL�TYL��T[TnT\TeL�T]L�T^L�T_L�T`TaL�L�TbL�TcTdL��L�L�TfTgL�L�ThL�TiL�TjL�TkL�TlTmL��:L�ToL�TpL�L�TqL�TrTsL�TtL�L�TuL�TvL�Tw�L�TyT�TzT�T{T�T|L�L�T}T~T�TL�T�L�T�L�L��T�L�T�T�T�L�L�T�T�L�T�L��L�T�L�T�L�L�T�T��L���T�L�T�L�T�T�L�L�T�L�T�L�T�L�T�L�T��L�T�L�L�T�L�T�T�L�T�L�T�L�T�L�L�T�L�T�T�L��L�T�T�T�T�T�T�L�T�T�T��T�T�L�T�L�T�L�T�L�T�L��L�T�L�L�T�T�L�L�T�T�L�L�T��L�L�T�T�L�T�L�L�T�T�L�T�L�T�L�T�L�L��T�T�T�L�T�L�T�L�L�T�L�T�T�L�L�T�L�T��L�T�L�T�T�T�L�T�L�L�T�L�T�T�L�L�T�L��L�T�L�T�L�T�L�T�T�L�T�L��L�T�T�T�T�T�T�T�L�T�L�T�T�T�L�T�L�L��L�T�L�T��L�T�L�T�L�L�T�L�T�T�L��L�T�T�L�T�L�T�L�T�T�L�L�T�L�T�L�T��L�L�T�T�L�L�T�T�L�L��T�UL�T�T�L�L�T�L�T�L�T�UL��L�UU�L��L�UUVUUIUU;UU"U	UiU
iUiUiU
iUUiiU�iUUiUiUiUiUiUiU�iiUUiiUUiUiiUU ��U!��iU#U$U1iU%U&U*iU'iU(iU)�iU+iU,iiU-U.iiU/�U0��U2iiU3iU4U5iU6iU7iiU8U9U:i�i�iU<U=iU>iU?UDiU@iUAiUBUCii�UEiUFiUGiiUH��UJiUKiiULiUMUNiiUOUPiiUQURiiUSiUTiUUA�iUWU�iUXUYU�UZU�U[UuU\UdU]Ua�[U^�[U_U`�[�[i�[UbUc�[��[�[UeUfUo�[UgUh�[UiUl�[UjUki�[iUm�[Un�[i�[Up�[�[UqUr�[Us�[�[Uti�[UvU�UwU��[UxUy�[UzU~U{�[U|�[U}�[�[iU�[U��[U��[i�[U�U��[U��[U��[i�[U�U��[i�[U��[U��[iU��[U�U��[U��[�[U�i�[�[U��[iU�U�U�U��[U�U�U��[U��[U�U��[U��[�[U��[U�i�[�[U��[U�U��[U��[�[U�U��[i�[U�U�U��[�[U��[U�U��[U��[�[U�U��[�[i�[U��[U��[U��[U��[U�U��[�[U�i�[U�U�U��[U�U�U��[�[U�U��[�[U�U��[�[U�i�[U��[�[U�U��[�[U�U��[U��[�[iU�U�U��[�[U��[U�U��[�[U��[U��[U�i�[�[U��[U�U��[�[U�U��[U��[�[U�i�[iU�iU�iU�iU�U�iiU�iU�U�iiU�iU�iU�U�iiL�azU�MU�MU��OU��OMU�V4U�azazU�U�t�U�U�L�U�U�L�L�U�U�L�L�U�L�U�L�U�L��U�VU�VU�L�L�U�U�L�L�U�U�L�L�U�L�VVL�L��VL�VV	L�VVL�VL�L�V�L�V
L�L�VL�VV
L�L�VL�VVL��L�VVVL�L�VVVVL�VL��L�L�VL�VVL�L��VL�VL�VV,V L�L�V!V"V)L�V#L�V$L�V%L�V&V'L�L�V(L��L�V*V+L��+�L�V-L�V.L�V/L�V0L�V1L�V2V3L��L�V5V7azV6t�MazV8V9t�V:VI|V;V<||V=V>||V?V@|VA|VB|VC||VDVE||VF|VG|VHB/|VJ|VK|VL||VM|VN|VOVP|VQ||VRVS|VT|VU|VV||VW|B/VYVaVZV]V[V\b�azazMV^V`azV_Mt�azMVbVfVcVeVdMazMazMVgViazVhb�Mt�VjVkXVlWRVmV�VnV�VoV�VpVtL�VqVrL�L�Vs�L�VuV�VvVyVwL�VxL�L��VzL�L�V{V|L�V}L�L�V~L�V�L�V�V�L�V�L�V�V�L�V�L�L�V��L�L�V�L�V�V�L�L��V�V�V�V�V�V�V�L�V���V��V��V�V��V��V����V�L�V�L�L�V�L�V�V�L�L�V��L�L�V�L�V�V�L�L�V��L�L�V�V�L�V�L�V�L�L�V�V�L�L�V��L�L�V�V�V�V�V�L�V�V�V�L�V�L�V�V�L�V�L��L�V�L�V�L�V�L�iL�V�L�L�V�V�L�L��V�V�L�V�V�L�L�V�L�V�L�V�L�V�V�L�L��V�V�L�V�V�L�L�V�L�V�L�V�V�L�V�L�V�L��L�V�L�V�V�V�L��L�V�L�L�V�iL�V�W$V�WV�V�V�L�V�V�V�L�V�L�L�V�L�V�V�L�L�V�V�L�L�V��L�V�V�V�L�V�L�L�V�L�V�L�V�L��L�V�L��L�V�L�V�V�V�L�V�L�V�V�L�V�L�L�V�L�V�L�V�L��V�V�V��V�L�V�L�L�V�L��WL�WL�L�iWWWWWWWL�L�WL��L�W	L�W
L�WL�WL�W
L�iL�WWL�WL�WL�WL�WL�L��WWL�WWL�WL�L��L�WWL�L�WWL�WL�L�W W!L�L�W"W#L��L�W%WFW&W1L�W'W(L�W)L�W*L�L�W+L�W,L�W-L�W.L�W/W0L��L�W2W?W3L�L�W4L�W5L�W6W7L�W8W<L�W9L�W:L�W;L��+W=L�W>L��+L�W@WCL�WAL�WB�L�L�WDL�WE�L�L�WGL�WHL�WIL�WJWKL�L�WLL�WML�WNL�WOL�WPL�WQ�L�WSW�WTW�L�WUWVWoWWWjWXWaWYW[L�WZL��W\L�L�W]L�W^W_L�W`L�L�iWbL�L�WcWdWgL�WeWfL�L��L�WhWiL�L��L�WkWlL�WmL�L�WniL�WpL�WqW|WrWtWsL�L��L�WuWvL�WwL�L�WxL�WyWzL�L�W{L��W}WL�W~L��W�L�L�W�L�W�W�L�W�L�W�L�W�L�L��W�W�W�W�L�W�W�L�W�W�W�L�W�L�W�W�W�L�L�W��L�W�L�W�L�W�L�W��L��W�L�L�W�L�W�L�W�W�L��L�W�W�W�W�W�W�W�L�W�L�W�L�L�W��L�L�W�L��W�L�L�W�W�L�W�L�W�W�W�L���L�W��L�W�L�W�L�L�W�L��W�W�W�W�W�L�L�W�W�L�W�L�L�W�L��W�L�W�L�W�L�W�L�L�W�W�L�L�W�iL�L�W�W�L�L�W�L�W�L��W�W�L�W�W�L�L�W�W�L�L�W�L�W�L�W�W�L�W�L�W�L�W�L�W�L�L��+W�W�W�W�W�W�L�W�L�W�W�L�L�W��L�W�L�W�L�L�W�W�L�W�L�L�W�L�W��L�L�W�W�W�W�L�W�L�W�L�W�L�L�W�L�W�L�iW�L�W�L�L�W�W�L�W�L�W�L�W�L�W�L��L�W�XW�XL�W�W�L�W�L�W�L�XL�iL�XL�L�XXXL�XL�XXL�XL�X	L�L�X
L��XXL�X
L�XL�X�L�XL�XL�XL��L�L�XXL�XL�XL�XL�L�XL�XL��XX�XXzXX`X X2X!X'L�X"L�X#X$L�X%L�L�X&L��L�X(L�X)X*L�X+L�L�X,L�X-L�X.L�X/L�X0X1L�L��X3XJX4XBL�X5L�X6L�X7L�X8X9L�X:X>X;L�X<L�X=L�L��+L�X?L�X@XAL�L��+XCL�L�XDL�XEL�XFL�XGXHL�XIL�L��XKXUL�XLXML�XNL�L�XOXPL�XQL�XRL�L�XSXTL��L�L�XVXWL�XXL�XY�L�XZL�X[X\X^�X]L��X_L��L�L�XaXbXiL�XcXdL�XeL�XfXhL�Xg�L��L�XjL�L�XkXlXrL�XmXnXo�L�L�XpXqL�L��XsL�L�Xt�XuXv�Xw�Xx��Xy�L�L�X{X|X�X}X�X~X�XL�X�X�L�X�X�L�L�X�L�X�L�X�L�iX�L�L��X�L�X�L��L�X�L�X�X�L�X�X�L�L�X�L�X�L�X�X�L��L�L�X�L�X�L��X�X�L�X�L�X�L�X�X�L�L�X�X�L�L�X�L�X�X�L�X�L��L�X�X�X�L�X�L�L�X�L��L�X�L�X�L�X�X�L�X�L�L�X�X�L�L�X�L�X�iL�X�YX�X�X�X�X�X�X�X�X�L�L�X�L�X�X�L�X�L�X�L�L��X�X�L�X�X�L�X�L�X�L��L�X�X�X�X�L�X�L��X�X�X�L�L�X�L�X��L�L�X�L��X�L�L��X�L�X�L�X�X�X�L�X�L�X�L�L�X��L�X�L�X�L�L�X�X�L�L��X�L�X�X�X�L�L�X�L�X�L�X�L�X�L�X�L�X�X�L�L�X��L�L�X�L�X�X�L�L�X��L�X�L�X�X�X�L�L�X�X�L�X�L�X�L�L�X�L�X�L�X�L�X�L�X�L��+X�L�X�L�L�X�L�YL�YL�YL�YYL�L�YYL�L��+YY%L�Y	Y
YYL�YYY
L�YL�L�YYL�YL�L�Y�L�YL�L�YYL�YL�L�YYL�L�YL�YL��L�YYY!YL�L�Y L��L�Y"Y#L�L�Y$L��Y&L�L�Y'Y(L�Y)Y2Y*L�L�Y+L�Y,Y-L�Y.L�Y/L�L�Y0Y1L�iL�Y3L�Y4L�L�Y5Y6L�L�Y7Y8L��L�Y:n�Y;n�Y<k�Y=Y�Y>YWY?YSY@azYAazYBazYCazYDazYEazYFazYGazazYHazYIazYJazYKYLazazYMYNazazYOazYPYQazYRaz@azYTYUv�azazYVb�v�YXY�azYYazYZazY[Y\kXY]YzY^YyazY_Y`YkYaYfYbYdazYcgCazYeazwcazYgYiazYhazjYjazwazYlYrYmYoYnazv�u�YpYqazv�v�v�YsYvYtYu�i��mazYwYxazv���v�kXazY{Y�azY|Y}Y�Y~Y�YazY�azY�azazY�azY�azY�azY�azY�Y�azY�azgCazazjazY�b�azY�Y�ubY�ubY�azubazY�Y�azv�azY�Y�v�Y�azY�azY�azY�azY�azY�Y�azazY�azY�azY�Y�azazY�Y�azazY�azY�Y�azazY�azY�azw�Y�Y�Y�b�gCb�Y�mv�azY�\�Y�Y�Y�Y�Y�Y�mY�u�jY�Y�Y�v�Y�v�v�Y�Y�v�Y�v�Y�v�v�Y�v�Y�Y�v�Y�v�Y�v�Y�v�v�Y�v�Y�v�Y�v�Y�v�wazY�Y�azY�azY�azazY�Y�azazY�Y�azY�azY�azazY�Y�azazY�Y�azY�azY�azjazY�Y�azY�t�azt�v�Y�Y�AazazY�Y�[�Y�Y�Y�azY�v�Y�v�v�azY�Z�Y�ZY�Y�Y�Y�Y�Y�Y�Y�Y�Y�v�azv�azY�v�azv�t�azY�azY�Y�v�Y�v�t�Y�Y�azv�azb�Y�ZY�ZY�ZY�azY�ZazY�Y�azazY�azY�Y�ZZZZazv�azazZazmZazZazv�azazZazZ	azZ
ZazZazZ
azmazZv�v�azZZZv�azv�ZazjZv�v�ZZZazv�azZZZZgCv�v�azazZazt�Z Z>Z!Z6Z"Z0Z#Z%azZ$v�jZ&Z'u�upazZ(Z)azZ*azazZ+Z,azZ-v�azZ.Z/v�azv�Z1Z3v�Z2azv�Z4Z5azmmu�Z7Z:Z8azZ9t�gCv�azZ;Z<Z=azv�azv�Z?ZGZ@ZDZAZCZBu�v�azv�azazZEazZFazb�ZHZMZIZKv�ZJazu�ZLazu�azZNZyZOZiZPZWazZQZRazazZSazZTZUazZVazv�azazZXZYZaazZZazZ[azZ\Z]Z_azZ^azv�v�Z`v�azZbazZcazZdazZeZgazZfazv�v�Zhv�azZjZqazZkazZlZmazZnazazZoZpazazjZrazZsazZtazZuazZvazazZwazZxkXazZzZ�Z{azZ|Z�Z}Z�Z~azZazazZ�azZ�azv�azZ�Z�azZ�azZ�azkXazazZ�Z�azazZ�Z�azZ�Z�azv�kXazZ�Z�Z�Z�azZ�Z�azZ�azazZ�azZ�Z�azv�azZ�Z�Z�azZ�Z�Z�Z�Z�b�azmmazZ�azZ�azazv�Z�Z�Z�azZ�Z�azZ�azv�azZ�u�jZ�Z�azZ�Z�azazjZ�Z�azZ�u�azZ�azazkXZ�Z�Z�Z�Z�azazZ�Z�Z�Z�azZ�azazkXv�azZ�Z�Z�Z�Z�azazZ�azjazZ�az�KZ�Z��KZ�Z�t��Kt�Z�Z�t�Z�t�v�Z�Z�v�azazu�Z�Z�Z�Z�Z�Z�Z�Z�u�Z�u�azZ�azazb�Z�Z�Z�Z�azv�v�azZ�Z�ubv�v�v�Z�Z�Z�Z�Z�azjazazZ�azv�Z�azv�azZ�Z�Z�azZ�Z�Z�Z�azt�v�v�Z�v�azv�Z�Z�azZ�Z�Z�Z�azv�azZ�Z�azb�b�v�Z�v�azv�Z�[oZ�[eZ�[GZ�[BZ�[Z�[azZ�Z�azazZ�Z�azazZ�az[az[az[azv�az[az[az[[azaz[az[	[
az[azazv�[
[1az[[[az[az[az[az[az[az[azv�[az[[%[[ [az[[[[azv�azv�[azazv�az[!["az[#[$azv�azv�[&[*az['az[(az[)azv�[+az[,[/[-[.azv�azv�[0azazv�[2[:az[3[4azaz[5az[6[7azaz[8[9azazv�az[;az[<[=az[>az[?az[@azaz[Aazv�[C[E[DgCv�v�[Fubu�az[H[P[I[Kub[Jjaz[L[O[Mazu�[Nu�azv�j[Qaz[Razaz[S[T[[az[U[Vazaz[W[Xaz[Yaz[ZazgCaz[\az[][aaz[^[_azaz[`gCaz[b[cazgC[dazgCazaz[f[gazaz[haz[i[j[laz[kmaz[mazaz[nv�az[p[~[qaz[raz[s[{[tazaz[uaz[vaz[w[xaz[yazv�[zv�azaz[|[}azkXaz[[�[�azup[�[�azaz[�az[�[�az[�azaz[�[�azaz[�gCaz[�[�[�[�az[�v�az[�[�b�v�az[�v�az[�[�[�v�v�azaz[�azgC[�\[�[�[�[�[�gC[�[�[�[�az[�[�[�azv�v�j[�[�[�[�v�azazt�[�[�azmv�gC[�[�[�[�[�[�kXb�v�v�[�[�u�azazubv�[�az[�v�az[�[�[�v�[�azv�[�[�azazb�v�[�[�azgCaz[�[�[�[�[�[�azb�[�[�[�jaz[�b�az[�az[�az[�az[�[�[�az[�az[�az[�az[�azaz[�azv�[�azaz[�az[�mazgCaz[�[�[�[�[�[�az[�[�[�v�az[�az[�[�[�[�[�[�azjazb�[�[�v�u�t�m[�az[�azv�gC[�[�[�[�v�azaz[�az[�[�az[�az[�azaz[�az[�azmb�jazv�az[�az[�[�az[�\[�\[�\[�[�[�[�azv�t�j[�[�mv�azb�\\\\azu�azv�\azgCv�\\\\
az\	kXv�az\v�az\
\\\ubazupv�\\u�u�v�w\az\az\\\\wmv�v�\azazv�\\1\\*\\"az\az\ az\!azv�\#\'\$az\%maz\&v�t�az\(v�\)v�azu�\+\,v�\-\.u�azv�\/az\0azv�\2\Y\3\C\4\9m\5\6\8w\7wwwgC\:\?\;\=\<v�gCv�gC\>gCv�\@\Av�kX\Bv�kXv�\D\N\E\I\F\Haz\Gazjjm\J\L\Kubmubup\Mupv�\O\T\P\R\Qu�v�u�\Sv�v�v�\U\Wu�\Vu�v�v�\Xv�gC\Z\]v�\[\\azazt�\^\j\_\e\`\c\a\bv�v�azub\dazupv�\f\haz\gazu�az\iazgC\k\q\l\o\m\njmt�v�\pazv�az\r\u\s\tb�u�v�az\v\wv�gCkX\x\y\\z\}\{\|jmt�v�\~azv�az\�az\�azb��K\�i\�f�\�dm\�`\�]c\�\�\�\�\�\�\�az\�az\�az\�az\�az\�az\�az\�azazj\�\�az\�az\�az\�az\�\�azaz\�w�az\�az\�\�\�\�az\�\�azaz\�az\�\�azazu�\�v�\�\�azv�\�az\�azv�az\�azv�az\�\�az\�az\�\�az\�az\�azazv�\�\�az\�az\�\�azaz\�\�azaz\�\�\�azu�u�\�u�az\�\�\�az\�az\�azazu�\�az\�azaz\�\�azaz\�v�az\�]\�\�az\�az\�az\�\�az\�azaz\�az\�\�\�az\�azv�v�\�v�az\�\�\�az\�\�az\�az\�az\�az\�azv�az\�az\�v�\�\�azv�az\�\�az\�az\�az\�\�\�\�v�az\�azv�v�az\�\�\�\�az\�\�azaz\�\�v�azv�\�azaz\�\�azv�azaz\�\�\�az\�\�azazv�az\�\�az]]azv�azv�]]8]]]]]az]az]]]	azv�]
azv�]az]
az]v�v�az]]]az]]]azaz]azv�azv�az]az]]azaz]azv�]]2]]']] ]v�azv�]!]$]"azv�]#azv�]%azv�]&azv�](]-])],]*az]+azv�azazv�].v�]/v�]0azv�]1v�azaz]3az]4az]5]6v�az]7azv�]9]T]:az];]@]<az]=azv�]>]?azv�az]A]F]Bazaz]C]Daz]Eazazv�]G]P]H]M]I]K]Jv�azv�]Lv�azv�]Nv�v�]Oazv�v�]Q]Raz]Sazv�az]Uaz]V]\az]W]Xaz]Yaz]Zazaz][azv�]]az]^]b]_azaz]`az]av�azazv�]d^�]e^ ]f]�]g]x]hj]ij]j]n]kj]lj]mjjj]o]s]p]qjj]rjjjj]t]ujj]v]wjjj]y]�j]z]{]j]|j]}]~jjjj]�j]�j]�j]�jj]�]�]�]�]�]�jj]�]�]�jj]�jjjj]�j]�]�]�jjj]�]�]�jjjjj]�]�j]�]�jj]�jj]�]�]�jj]�j]�jj]�]�jj]�j]�jjj]�]�]�]�]�]�]�]�j]�]�jj]�j]�]�jjj]�j]�j]�]�]�jjj]�jj]�jj]�]�]�jj]�j]�j]�]�jjj]�]�]�]�]�jj]�]�jjjj]�]�j]�jjjj]�]�jj]�j]�jj]�]�]�]�]�]�]�j]�j]�j]�jjj]�jj]�]�j]�jjj]�]�]�jj]�j]�jj]�]�]�j]�jjj]�jj]�j]�jj]�j]�]�]�]�]�j]�j]�jjjj]�j]�j]�jj]�jj]�]�j]�jjj]�^]�^]�^]�^j]�]�]�]�j]�jjj^j^jjj^^^jj^j^jjj^^	jj^
jj^^^
^j^j^j^jjj^^^^jjjjjj^^azj^jaz^azkXaz^^v�gCb�^mkX^!az^"^r^#^L^$^;^%^+^&az^'^*^(^)azjjazazj^,^/^-j^.jazj^0^7^1j^2^4^3azjaz^5^6jazazjj^8j^9az^:azjaz^<^=^F^>^Baz^?az^@az^Aazjj^Cj^Dj^Eazjj^Gj^Hj^I^J^Kjazjaz^M^p^N^_^O^Z^P^S^Qazaz^Razj^T^Waz^Uaz^Vazjaz^Xaz^Yjaz^[jaz^\az^]^^azazj^`j^a^g^b^d^cazjaz^eaz^fjazj^h^l^ij^j^kazjjaz^mj^n^oazjazj^qjjaz^s^}^t^{^u^zv�^v^wazv�^xv�^yv�azgCwaz^|v�v�^~^�^ubb�m^�^�u�ubv�w�^�_>^�^�^�^�^�^�^�^�^�gCw�gC^�^�wc^�^�gCaz^�^�^�w�azazw�^�^�^�^�^�^�gQazaz^�azgQ^�azaz^�ubaz^�gQ^�^�az^�azwgQ^�b�gQ^�^�gQ^�^�gQv�^�w�^�gQ^�w�v�^�^�^�w�v�^�gQ^�^�gQgQww�^�gQ^�^�w�gQw�^�^�^�^�^�^�gQ^�^�v�^�v�^�v�wv�gCgQ^�^�^�gQv�w�kXgQ^�^�^�^�^�^�w�gQv�^�^�^�kXgQ^�w�gCw�w�^�gQv�^�^�v�gQgQ^�gQw�^�_^�^�^�^�^�gQw�v�^�^�v�gCgC^�gC^�w�^�^�gQv�^�v�gQ^�^�^�^�^�^�^�^�^�w�gQ^�^�gQgQv�w�^�kXgQ^�v�^�v�gQv�^�^�^�gQ^�^�v�gQgQ^�v�w�gQ^�v�^�gQ^�^�w�gQw�^�^�^�^�w�gQ^�w�^�w�kXw�^�_^�gQ^�^�w�^�^�^�w�gQv�gQgQv�v�gQ__&_______gQgQ__w�_	_
gQw�v�gQw�v�_
__gQ__v�gQgCgQgQ____v�__gQv�gQw�gQgC__!__v�gQ_gQ__ww�w�__ gQw�v�w�_"v�_#_$_%v�gQgQw_'_4_(_/gQ_)_*w�w_+_,w�_-_.gQkXw�v�_0_3w_1w_2wgQgQv�_5_9_6b�_7kX_8b�v�kXb�_:kX_;_<_=kXgQw�v�_?_�_@_g_A_L_B_F_CgQgQ_D_EgQgQaz_Gv�gQ_HgQ_I_J_KgQkXv�kX_M_^_N_W_O_T_P_SgQ_QgQ_RgQgCgQv�_U_VkXgQgQw_X_]_Y_[_ZgCwv�gQ_\kXv�kXv�___d_`v�gQ_a_b_cgQv�v�gQkX_e_fgQkXgQ_h_�_i_qgC_j_k_ogC_l_mgCgC_nv�gQ_pgCv�gC_r_�_s_y_t_w_ugCgQ_vgQv�_xgQgQkX_z_}kX_{kX_|v�gQ_~kXgQ_kXgC_�_�gC_�_�_�_�kXgCkXkX_�_�gCkXgC_�_�gCkX_�_�_�kXv�kXv�gQ_�_�_�_�_�_�kXv�gQv�_�_�_�kX_�_�v�gCgQkXgQ_�_�gCgQ_�gQv�_�_�_�_�gQkX_�v�kX_�v�gQ_�gQkXv�_�_�_�_�_�_�_�_�_�_�gQw�v�gCgC_�w�gC_�_�_�_�_�gCgC_�_�gCgCw�w�_�w�_�_�w�w�b�_�_�w�_�w�_�_�_�gQw�v�w�gQw�_�_�_�_�_�_�v�_�_�w_�_�gQkXgQkXkXgQ_�_�gQ_�_�_�_�_�gQw�kXv�_�_�w�kXgQv�w�kX_�_�_�_�v�gC_�gC_�gCgC_�gCgQgC_�_�w�_�_�gCw�kXv�_�_�_�_�_�_�_�_�kXv�gQ_�_�_�gQgCkXgC_�_�gQkX_�gCgC_�gCw�_�_�_�_�w�_�gC_�v�gQv�gQ_�_�kXv�_�_�kXgQ_�v�_�v�kXv�_�`_�_�gQ_�gQ_�gQw_�gQgQ_�wgQ````w``gCwgCgC`gC`gCkX`	`
kX`
``gQv�gQgCv�gQ`dB`a�``�``m`v�az``t``<``.``&``#```v�v�``v�v�t�``!w` v�w`"v�v�t�`$t�`%t�v�t�`'u�t�`(`)`*v�u�u�`+`,`-u�t�v�v�`/`9`0`1u�t�`2v�`3`6t�`4v�`5v�w`7v�v�`8v�t�`:`;v�v�v�v�`=```>`R`?`F`@t�`A`Bv�t�`C`Dv�v�`Ev�wv�`G`P`H`M`I`K`Jv�wv�`Lv�v�w`Nv�v�`Ou�wv�`Qv�v�`S`X`T`Wv�`U`Vt�v�t�t�w`Y`_`Zv�`[`]w`\wazw`^v�wv�v�v�`a`b`h`c`f`dv�v�`et�v�v�`gv�w`i`o`j`l`kv�wv�`mv�`nv�v�w`p`qv�v�`rv�v�`swv�`u`�`v`�`w`|`x`{v�`yv�`zv�v�v�v�`}`�`~t�``�`�t�v�t�`�v�t�v�v�`�v�v�`�`�`�`�`�v�`�v�`�v�v�v�`�v�`�`�`�v�v�t�v�v�`�`�`�t�v�`�t�v�v�t�`�`�`�`�`�`�`�u�`�v�t�v�u�`�`�u�u�`�u�v�`�`�`�v�`�`�`�u�v�t�`�v�v�t�`�v�`�`�`�`�v�u�t�u�`�`�v�v�t�v�`�`�v�`�`�`�`�v�v�v�`�u�`�u�t�u�`�`�`�u�u�`�u�`�`�u�u�v�`�`�u�`�v�`�v�v�`�`�v�wv�`�`�`�v�v�v�v�`�aZ`�a/`�`�`�`�`�`�`�t�`�`�v�`�`�`�`�`�v�u�v�v�`�`�u�v�v�w`�`�`�v�`�v�v�v�v�`�`�v�v�w`�`�t�v�`�`�`�`�`�`�`�v�v�v�`�`�v�v�v�v�`�`�`�v�v�v�`�`�v�v�v�v�`�`�`�`�`�`�v�v�wv�v�v�`�v�v�`�v�v�`�t�v�`�`�v�v�`�`�wv�v�`�a`�a`�a`�aaaaav�av�wav�v�wv�av�av�wa	aa
av�awv�a
v�wv�v�av�av�v�av�av�v�t�v�av�av�aaav�v�v�v�aa maav�mav�av�t�a!v�a"a(v�a#a$a&a%wv�wwa'wv�a)a,a*wwa+v�wa-wv�a.wv�a0aHa1a7a2a4a3v�t�v�a5v�a6v�v�t�a8u�a9a;t�a:v�v�a<a@v�a=v�a>a?v�v�v�aAaEv�aBaCaDu�v�v�v�aFv�aGt�v�t�aIaWaJaSu�aKv�aLaMaPv�aNaOv�t�v�v�aQaRwv�waTv�t�aUt�aVazt�v�aXaYv�v�v�a[a�a\ala]a`wa^a_wwt�t�aaabact�azadaiaet�afagv�t�ahwwv�ajakv�v�v�u�amazanauaoatu�apaqarwv�asv�v�v�v�v�avawv�t�axv�v�ayv�v�a{a�a|aa}t�v�a~v�t�v�a�a�v�a�v�a�v�v�u�a�a�t�a�v�v�v�a�a�v�v�v�a�a�a�a�a�a�a�a�a�v�a�a�v�v�a�v�v�a�v�u�a�v�v�a�v�a�v�v�a�a�v�a�v�a�v�v�v�a�v�a�a�t�v�v�a�a�a�a�t�v�a�v�a�v�v�v�a�v�a�v�v�a�a�v�v�u�a�a�a�a�v�a�v�u�a�u�a�u�a�t�u�v�a�a�a�a�v�a�a�v�a�v�t�v�a�v�a�a�a�a�a�v�v�u�u�a�v�v�v�u�a�u�a�v�u�a�v�u�a�b�a�bma�a�a�a�a�a�a�gQa�a�a�a�gCgQw�a�a�a�w�w�a�w�kXw�kXa�a�a�gCkXa�kXa�a�gCgCkXa�a�gCa�gCb�gCkXa�a�a�a�a�a�a�kXa�a�kXgQkXgQa�a�a�kXkXgQa�gQgQkXa�ubkXuba�a�a�gQuba�gQa�kXgCuba�gCa�gQkXa�ba�ba�a�v�a�a�a�v�b�a�a�b�gCgCb�gCa�gCa�bv�gCubbgQv�bubbgQbubbw�wbkXb	kXb
gQgQbw�kXb
bIbb.bb%bbbbkXbbv�kXv�bbbb�v�bv�b�b�bb�bb�wbbb�wbgCbb"b kXb!wwkXb#gCb$gCkXgQb&b(gCb'kXgCb)gQb*gQgCb+b,b-gCv�gQkXb/bBb0b;b1b5v�b2b3gCgQb4gCwb6b9gCb7b8gQgCgQgCb:gCv�b<b?b=v�gCb>gQkXgQb@kXbAgQb�bCbEbDgCgQgCgCbFbGgQbHgQb�gQbJb�bKbkbLbZbMbVbNbRubbObPv�ubbQubv�v�bSv�bTv�bUv�b�bWb�bXb�v�bYv�b�b[bfb\bcb]b`b�b^b�b_b�gCb�bab�bbgCb�bdb�bekXb�kXbgb�bhb�bib�b�bjb�ubblb}bmbybnbrubbobpv�bqv�ubkXbsbvv�btubbuubkXbwkXubbxubkXbzv�kXb{b|v�gQgCb~b�bb�b�b�b�b�v�kXb�gQkXubb�ubgCkXubb�ubb�ubgCb�b�ubb�b�w�b�w�ubw�b�azb�b�w�b�w�w�w�b�w�azb�b�b�azkXazb�b�gCt�w�u�b�cb�b�b�b�b�b�b�b�b�b�b�v�b�b�gQv�kXv�kXv�b�b�kXb�b�b�kXubgQgCubgQb�b�gCb�b�gCb�wgCwb�b�b�gCgCwgCb�gCb�b�kXgQb�v�kXb�b�b�b�b�gCgCkXb�b�b�b�gCb�kXb�w�b�b�gCb�b�b�b�b�gCb�gCb�b�b�b�b�b�b�gCgCb�w�gCb�ubb�gCb�gCv�ubb�ubb�b�b�ububb�gCb�kXb�kXgCb�b�b�b�b�b�gQb�kXgQb�b�gQb�gQkXkXb�gCwgCb�gCgQb�b�b�b�b�b�b�b�gQv�b�ubb�b�v�ubgQkXb�b�gQkXv�b�b�kXv�ubb�b�b�gQubb�kXgQb�b�b�kXb�b�gQkXgQgCb�v�gCb�gCv�b�cb�cccgQcccgQv�gQkXv�gQkXccv�cc
kXc	gCgQv�gQccc
cgQv�ckXccv�kXkXgQcckXgQgQccb�gQcgQb�cc�ccWcc4cc(cc!gQccgCgCc gCkXc"c%c#kXc$kXgCkXc&v�kXc'kXv�c)c.c*c-v�c+c,v�v�ububkXc/kXc0c3c1ubc2ububv�ubgCc5cIc6cAc7c=c8c:kXc9kXb�ubc;c<b�ubgQgQc>c?c@gQububkXcBcHcCcFcDv�kXcEkXb�cGb�v�b�b�v�cJcNcKcLv�w�w�cMw�v�cOcTcPcRcQubv�ubcSv�ubv�v�cUv�cVv�gQcXcxcYc_cZc^c[c\gQkXkXc]kXv�v�gQc`ckcacgcbccgQw�cdcfv�cev�kXkXubchkXcigCcjgQubgQclcqcmcnkXv�v�cov�cpv�gQcrcsubgQctcvgQcukXv�cwgQv�ubcyc�czc�c{c�c|cgQc}c~ubgQububc�c�gCubw�c�c�gCw�w�c�c�ubw�ububc�c�v�c�v�c�v�ubv�c�c�v�c�v�c�v�c�v�c�v�w�c�c�c�c�w�c�c�gQw�gQgQb�b�c�c�c�b�v�v�c�v�w�c�c�c�c�c�c�c�c�b�c�c�c�b�w�gQc�gQkXc�c�c�kXc�gQkXgQc�c�c�b�kXubc�c�b�c�ubv�v�c�v�b�c�c�v�c�c�c�v�c�b�v�v�c�v�b�c�c�b�c�ubc�c�kXubkXc�v�c�v�kXv�c�c�c�c�c�c�v�c�c�c�v�gCgCwwc�c�kXc�kXkXw�c�c�c�c�w�wc�v�c�c�ww�w�v�c�ubv�c�c�wv�wc�c�c�c�c�c�c�c�c�gCwgCc�wgCw�c�v�c�c�b�ububv�c�c�w�c�c�kXw�kXc�c�kXububc�ubgCc�c�c�w�c�c�c�c�gCwwgCww�c�kXubc�ubc�ubkXc�d c�dc�wc�dc�c�c�v�kXc�kXv�v�c�dv�v�kXdwddv�kXkXdkXwddddd	dd
w�wdww�d
ddv�w�v�v�dv�wdddwwwdubwdwubdddw�dw�dw�ubw�dwdwdww�wd!d3d"d,d#d(d$b�wd%d&d'wkXkXb�b�d)d*b�b�d+b�ubd-d0b�d.b�d/b�wd1ubd2b�wb�d4d9d5v�ubd6ubd7ubd8ubv�d:d>d;kXd<kXv�d=v�kXd?ubkXd@kXdAkXubdCd\dDazdEazdFazdGazdHazdIdWdJdPdKazdLdNdMazazgQazdOazv�dQdTdRazazdSazv�dUazazdVazw�dXazdYazdZazd[azgQazd]azd^azd_azd`azdaazdbazdcdidddfazdewazazdgazdhazt�djazazdkazdlt�azdne5dod�dpd�dqazdrazdsd�dtd{dudxdvdwv�wwb�dydzb�wcv�w�d|dd}d~gQwcw�gQd�d�v�gQv�w�d�azd�d�d�d�w�v�wcw�d�d�v�azwUazd�d�d�d�d�d�d�d�d�d�d�azazwUazd�v�azazd�d�azv�azd�azd�d�d�d�azv�v�azazd�v�azd�d�d�d�azd�d�azt�azazd�azd�gQw�d�d�d�d�kXgCv�d�wv�d�d�d�d�t�mmu�d�d�u�v�v�v�d�d�d�d�d�d�d�d�d�d�v�t�t�v�d�d�v�gQv�md�d�d�d�ww�gQv�w�d�gQw�d�d�d�d�d�azv�mjv�d�d�d�u�v�v�d�d�t�v�v�v�d�d�d�d�d�d�d�d�azububgCd�d�gCw8w8v�d�d�v�www�d�azd�azkXazd�d�azd�d�d�d�d�d�d�d�d�d�v�azv�d�gQv�gQd�ubgQubd�d�ubd�d�azv�azd�d�gCwwd�wgCd�d�d�d�gCd�gCd�gCv�az����d�d�v���d���v�d�e d�ed�ed�ewd�d�t�wt�eet�ev�u�u�v�ee
eeu�eu�v�e	mv�mee
ev�mv�eev�v�azv�eeeev�kXb�v�eeeeew�v�w�eew�wUwUw8eeeww8wev�wv�e!e,e"aze#e)e$e'e%e&v�azazgCe(jgCje*aze+azjaze-aze.e2e/e1e0u�v�u�v���e3e4w�t�v�aze6fDe7fe8aze9aze:e�e;e�e<ede=eTe>eQe?eEe@eDeAgQeBeCazmmwv�gQeFeJv�eGeHeIazt�v�jeKeNeLeMv�u�u�v�eOePjmmt�azeRazeSgQazazeUeVe^eWe[eXeZt�eYv�wwt�we\e]t�t�aze_ebaze`azeaazv�ecv�u�v�eee�efeqegekv�eheiwv�ejazv�elemv�v�enepeoazv�azazmerexesv�etevmeuubazewv�ubv�eye|ubezube{v�u�e}e�e~ev�u�t�gCgCe�gQt�e�e�e�aze�e�t�e�b�aze�azb�aze�azaze�aze�e�azazgQe�e�e�e�e�e�e�e�gCazv�e�gQt�e�e�azgQw�aze�e�e�e�e�e�aze�aze�azw�aze�azv�e�e�gQw�w�e�e�v�v�gQe�e�gQe�v�e�w8v�e�azgQv�e�e�e�e�e�e�e�v�w�aze�e�e�e�u�v�v�me�e�mu�v�v�e�e�e�e�e�e�v�v�mv�e�gQmv�gQe�w�v�e�e�w�v�e�e�gQw8e�e�e�e�e�e�v�wUwUv�e�e�v�v�v�w�v�v�e�fe�e�e�e�e�e�e�e�e�e�v�wUwUw�v�gQe�w�v�w�e�e�e�v�gQe�gQe�gQv�e�e�v�gQe�kXgQe�gQe�gQkXe�fe�e�e�e�e�e�e�e�e�v�kXv�w�v�e�v�v�w�e�e�e�w�e�w�kXw�e�e�e�w�w�w�e�ww�we�e�e�e�e�we�wwwe�gCwe�waze�azgCazffazfffffazfazw�azw�f��f	f
w�����azff��f
��f��az��fazt�fazfazfazt�ft�azff7ffazffazffv�fazjfazjazf f,f!f'f"f$f#ubv�gQf%f&gCwgCkXf(f*��f)��v�v�f+kXb�f-f4f.f1f/f0b�v�v�w�f2f3w�wUw8wf5azf6azwv�f8azf9azf:f?f;f>f<f=wt�v�u�u�v�f@fAmv�fBfCw�t�v�azfEfsfFfffGfNazfHfIazfJfKazv�fLfMazjjazfOf[fPfVfQfSfRubv�gQfTfUwgCgCkXfWfY��fX��v�v�fZkXb�f\fcf]f`f^f_b�v�v�w�fafbw�wUw8wfdazfeazwv�fgazfhazfifnfjfmfkflwt�v�u�u�v�fofpmv�fqfrw�t�v�azftf�fuf~fvfzfwazazfxazfyazv�f{azf|azf}jv�azff�f�f�f�f�f�ubv�gQf�f�wgCgCkXf�f���f���v�v�f�kXb�f�f�f�f�f�f�b�v�v�w�f�f�w�wUw8wf�azf�azwv�f�azf�azf�f�f�f�f�f�wt�v�u�u�v�f�f�mv�f�f�w�t�v�azf�g�f�g�f�f�f�f�f�f�f�f�f�f�azf�f�f�wf�w�azazv�f�f�f�gCf�gCw�azf�f�gCazv�azf�f�f�f�azf�f�azazw�f�f�f�azv�azf�f�jazazv�f�f�f�f�f�f�azv�jazf�f�azv�v�v�f�azf�azv�azf�f�f�f�f�f�f�azf�azazu�azf�f�azv�azf�f�f�f�azf�u�azf�f�azjjazf�azf�f�azjjazf�f�azf�f�azf�azazjazf�f�f�azf�azv�f�azv�azf�azf�azazf�f�azazf�f�f�ubkXv�t�f�g)f�azf�gf�gf�f�f�f�f�f�gQv�v�gQf�gQv�wf�gggv�v�v�v�ggb�gQv�gCgg
gg
gg	gCgQw�gCgggCgQjgQgggCggQv�v�gCggggv�gggCv�gQggggw�ububgQgQgv�gQgg#gg!gg gQkXkXgCgCg"gCkXg$g'g%g&kXgCgCb�g(gQb�v�g*g^g+gFg,g8g-g2g.g0g/gQb�v�g1v�gQv�g3g6g4g5gQb�gQv�g7gCb�gQg9g@g:g=g;g<gQv�t�wg>g?gCv�v�gCgAgCgBgQv�gQgDgEwv�gQw�gGgQgHgLv�gIgJgKgQv�v�wUgMgPgNgOwUv�gQv�gCv�gRgWgSgUgTgQv�v�gVwkXb�gXg[gYgZkXububkXg\g]ubw�kXv�g_gug`gigagdgbgcu�t�v�v�geggu�gfu�wghmt�mgjgpgkgnglgmmv�mv�wgou�v�gqgsgrv�v�t�gtv�mv�gvg�gwg{gxgymv�t�gzmt�g|gg}g~v�u�u�mg�g�mu�u�mg�g�g�g�g�g�mv�t�v�g�g�u�t�v�w8g�g�g�g�w8v�v�����v�azg�g�g�g�azg�azg�azg�azg�g�v�g�v�b�g�g�v�v�v�azazg�azg�g�g�g�g�g�g�g�azg�g�g�g�kXg�b�g�w�azg�g�v�wgCv�g�azb�g�kXazg�azg�azazg�g�azw�azg�g�g�azg�azg�azg�g�v�azv�azg�g�g�azg�azv�mg�azg�g���g�t�v�mg�v�azg�g�g�g�g�g�gQg�v�wcg�g�gCg�kXg�gCwg�g�g�g�kXg�b�w�b�g�w�wg�g�v�v�b�w8g�azg�g�w�jg�g�g�g�jjwUazubazg�g�azg�azg�azg�v�azg�g�g�g�t�g�azmg�g�mu�g�v�u�v�g�azv�g�v�g�v�g�v�azg�h�g�hrg�h/g�g�g�g�azg�azgQg�g�g�g�wjg�g�mv�u�v�g�gQg�g�v�gCkXv�hhhh
hhazht�v�hhhhazu�mwh	azb�w�hhhhh
hgQwjmhhv�u�v�v�hhhhgCkXv�t�hhv�azu�mhh#hh hhhhwb�w�gCgCazazh!gQh"gQjh$h(h%azh&h'jazazw�h)h,h*h+azv�v�u�h-h.u�v�w�t�h0hYh1hDh2h=h3h9h4h7h5h6wcwUw8azh8ubazwh:azh;h<��gCgCazh>azh?hBh@hAwUv�v�w�hCazwazhEhJazhFhGhIkXhHkXjjv�hKhRhLhOhMhNv�w�b�whPhQmazazv�hShVhThUt�azazv�hWhXkXgCv�v�hZhjh[hgh\hch]h`h^h_u�v�mt�hahbv�azw�b�hdhfheazwmv�t�azhhazhiv�kXhkhqhlhohmhngCv�v�u�hpt�v�mv�azhsh�hth}huhxazhvazhwazgChyh{gChzgCv�h|u�v�v�h~h�hh�h�h�u�kXkXv�h�h�h�h�v�w�t�w�gQv�h�h�h�h�v�h�mb�h�jb�v�mh�wt�h�azh�h�h�h�h�azmv�h�h�h�h�w�wUw8v�h�wv�wh�azh�azv�h�h�azjazh�h�h�azh�azh�azh�h�h�h�h�h�h�h�gQazazgCh�h�h�v�azw�h�azazwch�h�h�h�h�jv�t�kXv�h�h�h�mmh�v�azh�h�h�h�jju�v�h�h�gCv�u�kXh�azh�h�h�h�h�h�v�h�h�wv�u�b�h�h�v�ww�h�h�h�h�h�v�v�ubh�v�ubw8h�h�h�w�wUw�azh�v�v�h�azh�h�h�h�h�b�w��h�h���t�v�u�h�azh�h�v�azu�azazh�azh�h�h�h�h�h�h�h�h�h�h�v�v�v�w�h�h�t�w�w�wUh�h�h�ww8wh�h�v�gCazjh�azh�azh�h�azububazh�ih�h�h�h�h�h�mjv�azh�h�wazazkXiiv�iv�aziiv�v�v�azii
ii
ii	t�u�gCgQiiu�azazv�iimimv�ib�u�kXij�ij|ij	ii�iiXii3ii&ii iiaziaziazv�aziazgQi!azi"i$i#gQazgQazi%gQazi'i,i(t�i)azi*azi+azazv�i-azi.i0v�i/v�v�i1i2v�azu�azi4iCi5i>i6i:i7azazi8azi9azv�i;azi<i=azv�v�azi?iBi@azaziAazgQv�aziDiNiEiKiFiHiGgQazgQiIiJwUv�gQkXaziLaziMgQaziOiRaziPaziQjubiSiUubiTubaziViWgQv�kXaziYiwiZiki[gQi\ifi]ibi^i_azubi`iagQazgQazicidv�azgCiegQazigubihijiiazazgQazubilisimirinubioipgCgQaziqgQazgCkXv�itv�iuazivkXv�ixi�iyi�izi�i{i�i|i�azi}i~igQazgQazazi�i�i�azi�gQi�gQazi�azgQazi�azazgQv�i�v�i�jv�i�gQi�i�i�azi�i�gCgQazi�gQazi�kXgCkXi�gCi�i�ubi�i�gCi�v�azgQi�i�i�ubv�gQi�i�v�gQgQubi�i�i�i�i�i�i�azi�i�i�i�i�azi�t�azwi�i�azi�mazazi�i�wi�azwazi�i�i�u�i�gQazv�i�i�gQmv�u�i�v�i�v�i�i�i�i�i�azv�azi�i�mazmazi�gQw�gQi�i�i�i�i�i�i�i�i�i�i�wUi�t�azwi�i�azi�mazazi�i�azwazi�u�i�gQi�azv�azv�i�mv�i�i�i�i�i�i�i�i�i�azv�azi�i�mazmazv�gQi�i�azgQgQv�mu�i�v�i�i�wi�i�i�wt�v�mi�i�i�v�wt�i�v�wt�i�ji�azi�i�i�v�i�i�i�i�gCazgQt�i�i�jv�u�azgQi�i�i�i�v�jt�v�u�jgCjazjjazjazjazgQgCjjazgCv�j
jPjj'jjj
jjjwt�mu�jjv�ju�v�jjv�jazt�jjt�mmazjjjjazjgQv�jgCt�gCj j!azkXj"j$j#azv�kXj%azj&azv�azj(j+azj)j*azv�azj,j8j-j2j.j0j/jmjjj1w8azj3j7j4j6j5azazv�azv�t�azj9jHj:jAj;j>j<j=v�ubwubj?j@v�ubwv�jBjEjCjDv�v�w�ubjFjGv�ubw�ubjIjOjJjMjKjLb�gQgQubjNazb�azv�gQjQjhjRj\jSjVjTazv�jUv�azjWazjXjYt�azazjZazj[wv�azj]j^jdj_jbj`v�jamwt�jcv�v�v�jeazjfazkXjgv�azjijmjjazjkazkXjlkXazazjnjojwjpjsjqjrazgQgQazjtjvazjuazv�v�jjxazjyjzu�azu�j{u�wazj}azj~jj�j�azj�azj�azazj�j�azazj�az|j�j�v�j�azj�azj�t�b�j�j�j�j�j�j�v�azazj�j�azazt�j�v�j�azazmazj�v�j�j�azj�azazupj�k�j�j�j�j�azj�j�j�j�gCj�j�gQv�t�j�azj�j�mt�wj�j�v�gQazgCj�j�j�j�j�j�j�j�azj�v�j�v�j�v�u�v�gQj�v�azjj�j�gQj�j�kXv�j�v�v�j�j�j�j�kXv�j�mv�mj�j�wv�j�u�v�u�j�j�j�j�t�j�t�v�j�j�j�j�v�j�v�j�azv�v�v�j�azj�j�v�kXkXj�v�wj�azubazj�j�j�j�j�j�j�j�azj�j�j�azgQv�kXj�j�j�j�v�v�v�ubj�azmjj�j�j�v�azv�gQj�gQubj�j�j�azubj�j�azkXazj�j�j�j�j�j�azt�t�v�j�j�v�v�v�v�j�j�j�j�v�jmv�j�j�v�j�j�ubu�azubj�j�azubazj�k(kazkkkk	kkazkazkv�gQkkv�azazv�k
kkkkk
v�azgQazku�v�wkkkku�mmu�jkv�u�kk!kkkkkXb�kv�v�v�kk kkw�azwUw8w�v�k"azk#k%k$ubt�wk&k'wv�v�gCk)kRk*k@k+k2k,k/azk-k.gQazgQv�k0k1gCv�gCk3k9k4k6kXk5kXw�k7k8w�w8w8v�k:k=k;k<v�wwgCk>k?gCv�v�ubkAkIkBkEmkCkDwu�wv�kFkGkHv�v�v�u�kJkOkKkLu�t�kMkNt�jjv�kPazkQazv�azkSk\kTazkUkZkVkXazkWazgQazkYww�k[azb�azk]kjk^azk_azk`azkakgkbkdkcb�v�v�kekfw����t�khmkiazv�u�kkk�klk|kmkogQknv�wckpksgCkqkXkrgCwktkykukwkXkvb�w�b�kxw�wkzk{v�v�b�wUk}azk~kw�jk�k�k�ubjjk�v�w8b�k�k�azk�azk�azk�v�azk�k�k�k�t�k�azmk�k�mu�k�v�u�azk�k�v�k�v�k�v�k�v�azk�k�k�kXv�w�k�k�k�v�azw�k�v�mazk�azk�k�k�azk�|k�k�k�k�az|azk�azk�k�||azazk�|k�azk�azk�|azazk�k�azk�azk�azazk�k�k�azv�gQazk�mmk�l�k�l*k�k�k�azk�Ak�k�k�k�k�azk�azazk�k�k�k�azk�azv�az�azazk�azH:k�azk�azk�k�k�k�azk�k�azazk�az|k�k�azk�k�azaz|az|k��k�azk�azazk�BD|k�k�k�k�k�k�k�k�k�azk�u�k�k�azkXk�k�k�k�u�gCgCv�k�k�k�k�u�mt�v�k�k�kXazazv�kXgQk�azgQazk�k�k�v�v�azv�k�wt�k�l
k�lk�lk�u�u�k�k�u�k�u�k�u�k�u�u�k�u�lu�lu�lu�lu�lu�lu�lu�BSu�v�l	azv�azllll
azv�gCgQllgQazkXllazllllllazlgQv�llt�azazmllmlv�v�v�lv�azl l&l!l$l"l#gQv�t�azazl%azkXl'l(kXml)v�azv�l+l�l,l�l-l�l.azl/l7l0l6l1azazl2azl3l4azazl5az|`�azl8lAl9azl:azl;azazl<l=azazl>l?azl@azazgClBl�lClOlDlIazlEazlFazlGazlHv�azlJazlKazazlLlMlNazv�v�azlPl|lQlglRl\lSlYlTv�lUv�lVazlWazlXazubazlZl[b�gCkXgCl]l`l^l_v�kXv�b�lalbb�gCgClcldazleazgClfgCazlhlnlillljlkazv�azv�lmazazgClolqazlpv�azlrlwlsazltazluazlvazv�azazlxlyazlzazubl{ubazl}l�l~l�lazl�azl�azl�azl�azubl�ubazl�azv�azazl�azl�l�l�azu�u�azl�azl�l�l�l�l�l�l�l�l�l�azmt�azl�l�azv�v�azazl�l�l�azv�azv�l�l�l�l�l�l�l�ml�azl�azl�azu�azu�v�l�azmv�l�l�l�l�v�azazl�l�azl�l�azl�azt�l�azt�azl�azazt�l�azl�azazl�l�l�azl�l�azl�azv�azl�v�l�azl�azv�azl�l�azv�l�azml�v�v�l�l�l�l�l�l�azt�azgQl�azazgQazl�l�azazgCl�l�azl�azl�l�v�l�l�v�azv�v�l�l�l�l�l�l�l�azv�v�l�v�azml�gQazgQl�l�v�l�l�azmazl�azl�azl�l�azl�azl�azl�azl�l�azazl�azl�l�azl�azazl�l�azaz�Bl�azl�azl�azl�azl�azl�azazl�azl�l�azazl�l�az�Bazl�m:l�ml�mazmazt�mmmazv�mv�mmv�mv�v�mv�m	m
v�v�mmv�v�m
mv�mv�v�mmv�v�mv�w*gQazmm5mazazmmv�mm'mv�v�mmv�mv�v�mv�mv�m m!v�m"v�m#v�m$v�v�m%v�m&w*v�m(v�m)v�m*v�v�m+v�m,v�m-m.v�m/v�v�m0m1v�v�m2v�m3v�m4w*v�m6m7u�azgQm8wm9v�azm;m`m<m\azm=m>azm?mMm@gQmAgQgQmBmCgQmDgQmEgQgQmFmGgQmHgQmIgQmJgQmKgQmLgQgQazmNv�mOv�mPv�v�mQmRv�v�mSv�mTv�mUv�mVmWv�mXv�v�mYmZv�v�m[v�w*azm]azm^azm_u�azmamimbmfmcmdwazazmev�azazmgt�mht�mmjazazmkazmlazmmnm�mompv�azv�mqmrm�azmsmtmuv�azmvm�mwm�mxm}v�mymzazv�m{m|azv�azm~m�t�mt�b�azm�v�m�v�u�m�m�m�azm�m�u�v�b�azazm�azm�azt�m�m�m�m�m�m�t�m�v�m�m�azb�azm�m�v�m�v�v�v�u�m�m�m�m�m�t�u�v�b�v�m�t�azt�m�m�m�m�m�m�m�v�azm�azv�m�v�v�v�m�m�b�azm�azazm�b�gCazm�azm�azm�azm�v�azt�azm�nm�m�azm�m�m�m�m�v�azm�wazv�m�v�t�azm�m�m�m�m�m�gQm�m�azm�azm�m�v�mm�m�m�m�v�m�azgQm�azv�azm�m�m�m�azwmv�azm�v�azm�m�v�azgQm�m�gQm�gQm�gQgQm�m�gQgQm�m�gQm�gQgQm�m�gQm�gQgQm�m�gQgCgQazm�m�azv�azm�m�m�m�v�gQm�m�v�t�azmazm�azm�m�nm�m�m�m�m�m�m�m�m�mwt�mm�kXm�m�u�kXu�v�gQm�azv�m�m�azm�azm�azm�v�v�azm�nm�azaznnaznnaznv�v�nnv�aznazazv�azn	n
n
aznazngCu�nnu�v�nazv�v�naznazaznaznnazv�aznnCnn aznnnnazv�aznaznmazv�n!n=azn"n#azn$n/n%n(azn&mn'azv�n)n,n*n+v�v�v�azn-n.gQazwazn0n7n1n4n2n3gCazazu�n5n6t�u�v�v�n8n:n9azu�v�n;n<v�kXkXgQn>azazn?n@aznAv�wnBazv�nDnInEazaznFnGazaznHu�aznJn�aznKnLnOaznMnNv�azt�nPnlaznQnRn_nSnYnTnVnUgCazv�nWnXazwww�nZn\n[b�w�b�n]n^b�v�v�wn`nfnandnbncww�w�azneazazu�ngnjnhniazjjububnkubu�nmaznnnwnonru�npnqazv�jnsnuw8ntw8w�wUnvwUw�nxn|nynzw�t�n{wt�wn}nv�n~v�����wazn�n�azn�azazmn�ddn�dn�dn�dn�n�ddn�n�ddn�dn�n�dn�dn�ddn�n�dn�dn�dn�ddn�n�dn�ddn�dn�dBfn�azn�t�n�t{n�n�n�n�azn�azn�azn�n�azn�azn�azn�azn�azazn�azn�n�azazn�n�azn�azkXazn�azn�azazn�n�azn�azn�azn�azn�azazn�azwn�azn�azazn�n�r�n�p�n�oQn�on�n�n�n�n�n�L�n�n�L�n�L��L�n�L�L�n�L�n�n�L�n�n�n�L�L�n�L�n�n�L�n�L�L��L�n�L�n�n�L�n�L�L�n�L��n�n�L�n�n�L�n�L�L�n�L�n�n�L�L�n�L�n�L�n�L�n�L��n�n�L�n�L�n��n�n�L�L�n�n�L��L�L�n�n�L�L�n�n�n�L�n�n�L��L�n�L�L��n�L�L�n�n�on�L�n�L�L�n�n�L�L�n�L�n�oL�oL�L�o�L�oL�L�oL��oo8ooo	oo
L�oL�ooL�o
L�ooL�oL�L�o�L�L��L�ooL�L�o�L�oo+oo#oL�oL�oL�L�ooL�oL�L�o o!L�L�o"L��o$L�o%L�o&L�L�o'o(L�o)L�o*L��L�o,L�o-L�o.o/L��L�o0o1L�L�o2o3L�o4L�o5o7L�o6L���L�o9L�o:oEL�o;o<L�L�o=o>L�o?L�o@L�L�oAoBL�L�oCoDL�L��:L�oFoGoPoH�L�oIoJL�L�oKoLL�oML�oNL�L�oO�:L�L��oRo�oSoyoToloUoboVoXL�oWL��L�oYL�oZo[L�L�o\o]L�L�o^L�o_L�o`oaL�L��ocL�L�odoeof�L�ogL�ohL�oiL�ojL�L�okL��omoqonL�ooL�L�opL��orL�osL�L�otouL�ovL�owL�L�oxiL�ozo�o{o�o|o�io}o~o�oL�o�L�o�L�o�L�o�L�o�L�L�o�L�iL�o�o�L�o�L�L�o�o�L�L�o�L�o�L�io�o�io�o�L�o�L�o�L�L�o�L�o�L�o�L�o�L�iiL�o�o�o�L�o�L�o�L�L�o�L�o�L�o�L�o�o�L�o�L�L��o�o�o�L�L�o�L�o�o�L�o�L�o�L�L�o�L�o��L�o�o�o�L�o�L�L�o�o�L�o�L�L�o�L�o�L��o�o�o�L�o�L�L�o�L�o�o�L�o�L��L�o�L�o�L�o�L�L�o�o�L�L�o�L��L�o�o�L�o�o�L�o�o�o�L�o�o�L�L���L�o�o�o�L�o�L�o�L�L�o��L�L�o�L��o�po�o�o�o�o�L�o�L�L�o�L�o�o�L�o�L�o�L��L�o�o�o�L�L�o��L�L�o�o�L�o�L�L�o�o�L�o�L�L��o�o�o�L�o�L�L�o�L�o�L�o�L�o�L�o�L�o�L�o�o�o�L��:�:L�o�po�o�L�o��+L�L�o�L�p�L�pL�L�ppL�pL�pL�L�pL�pp	L�L�p
�L�pp�p
p;ppppppL�ppipL�iL�L�piL�piL�pL�ppL�L�ppL�iL�pp&L�pp p%p!L�p"L�L�p#p$L��L�L�ip'p6p(p4L�p)p*p/L�p+L�p,p-L�p.L�L�ip0L�p1L�p2L�p3L�iL�p5L�L�ip7ip8L�p9L�L�p:L�ip<pZp=pTp>pIp?L�p@pGpApFL�pBpCL�pDL�pEL��L�L��pHL�L��pJL�pKL�pLL�pML�pNpQL�pOpP�L��pRL�pSL��L�pU�pVL�pWL�pXL�L�pY�L�p[paL�p\L�p]L�p^p_L�L�p`�L�pbpuL�pcpdpnpeL�pfpjL�pgL�phpiL��L�pkL�plL�pmL�L��L�poppL�pqprL��psL�ptL�L��pvppwp{L�pxpyL�L�pzL��L�p|p}L�L�p~�L�p�p�p�L��L�L�p�L�p�L�p�L�p�p�L��L�p�p�p�p�L�p�L�p��p�L�p�p�L�p�L�p�L�L�p�L�p�L�ip�L�L�p�p�L�p�L�p�L�p�L�p�L�p�L�p�L��L�p�L�p�p�p�L�L�p��L�L�p�p�L�L�p�L�p�p�L�L��p�q�p�qp�p�p�p�p�L�L�p�L�p�p�L�L�p�p�L�L�p�p�L�L�p�L�p�L�p�iL�p�L�p�L�p�p�p�p�L�p�p�p�L�p�p�L�L�p�p�L�p�L�iL�L�p�L�p�L�p�L�p�p�L�iL�L�p�p�L�L�p�p�L�L�p�p�L�L�p�L�iL�p�p�p�p�p�L�p�p�L�p�L�p�L�p�L�L�ip�L�L�p�p�L�p�p�p�L�iL�p�L�L�iL�p�p�L�p�L�p�L�L�p�p�L�L�ip�p�L�p�L�p�L�p�L�p�p�L�L�p�L�p�p�p�L��L��L�p�p�L�p�L�L�p�p�L�p�L�p�L�L�p�L�p��L�qqfqq6L�qqqqL��qL�qqL�q	L�L�q
qL�L�qL�q
L��qqL�qL�qL�qL�qL�qqL�L�qL�qL��qq!qL�qL�L�qL�qqL�qL�q L�L��q"q/q#q)L�q$L�q%L�q&L�q'q(L��L�q*L�L�q+L�q,L�q-L�q.L��L�q0L�q1q2L�L�q3L�q4L�q5�L�L�q7q8qRL�q9q:qEq;qBq<L�q=L�q>L�q?L�q@L�L�qA�L�qCL�L�qDL��qFL�L�qGL�qHqIL�qJqMqKL�L�qL�L�qNqPqOL�L��qQL�L��qSq\qTL�L�qUqVL�qWL�qXL�qYL�qZL�q[L�L��L�q]q^L�L�q_L�q`qaL�qbL�L�qcqdqeL���L�qgq�qhqyqiqrqjqlL�qk�L�L�qmL�qnqoL�qpL�qqL�L��L�qsqtL�quL�qvL�qwL�L�qxL��qzL�q{L�L�q|q}L�L�q~L�qq�L��L�q�q�L�q�q�L�q�L�q�L�L�q�L�q�L�q��L�q�L�L�q�q�L�L��q�q�q�q�q�L�q�q�L�q�L�q�q�L�q�L�q�L�L�q�L�q�L�q�L�q�q�L�L��q�q�q�L�q�L�q�q�L�q�q�L�L�q�L�q�q�L�L�q�L��q�q�L�q�q�L�L�q�q�L�L�q��L�q�L�L�q�L�q�L�q�q�L��L�q�L�L�q�q�L�q�L�L�q�q�L�q�L�L�q�L�q��L�q�q�q�q�q�L�q�q�L�q�q�L�q�L�q�L�L�q�q�L�L��L�q��L�q�q�q�L��L�q�L�q�L�L��q�q�L�q�q�L�L�q�L�q�L�q�L�q�L�q�L�q�L��q�L�q�L�L�q�L�q�q�L�L�q�q�L�L��q�r^q�rTq�rq�r
q�q�q�q�q�L�L�q�q�L�L��L�q�L�q�L�q�q�L��q���q�rq�q�q�L�q�L�q�L�q�L�q�L�q�L�L��q�L�q�rL��iL�rrrL�L�rL��L�rL�rL�rL�r	L��rL�rrL�r
L�rL�rL�rL�r�L�L�rL�rL�rrL�L�rL�rrL��L�rrMrrDrr5rr*L�rr r%r!L�r"L�L�r#r$L��L�L�r&r'L�r(L�r)L�L��r+r/r,L�r-L�L�r.�L�L�r0r1L�r2L�L�r3r4L��L�r6r=L�r7r8L�r9L�r:L�L�r;r<L�L��r>L�r?L�L�r@rAL�rBL�rCL�L��rErJrFL�rGL�L�rHrIL�L��L�rKrLL��L�L�rNL�rOrPL�L�rQL�rRL�rSxL�L�rUL�rVrWL�rXL�rYL�L�rZr[L�L�r\r]L�L��r_r�L�r`rartrbrsrcrkrdL�reL�L�rfrgL�rhL�riL�L�rj�L�rlL�L�rmL�rnroL�L�rprqL�L�rr�L��L�rur|L�rvrwL�L�rxryL�rzL�L�r{�L��r}L�r~L�rL�r�L�r�r�L�L�r�r�L�L��r�L�r�r�r�r�ir�r�r�L�ir�r�r�r�L�r�L�r�L�iL�iL�r�L�r�L�r�r�L�r�L�L�ir�r�L�r�r�L�r�L�L�iL�r�r�L�L�r�r�L�r�L�r�L�r�L�iL�ir�r�L�r�L�r�L�L�r�r�L�L�r�r�L�r�L�L�ir�tmr�skr�sr�r�L�r�L�r�L�r�L�r�r�L�r�L�L�r�r�L�r�L�L��L�r�r�r�r�r�r�r��L�r�L�L�r�r�L��L�r�r�r�L�L�r�r�L�L�r�r�r�L�r�L�r�r�L��L�r�L�r�L�r�L�L��r�r�r�L�r�L�L�r�L�r�r�L�L�r�r�L�L��L�r�r�L�L�r�L�r�L�r�L�r�r�L��L�r�r�r�r��L�r�r�r�L�L�r�r�L�r�L�r�L�L�r�L�r�L��r�L�r�L�r�r�r�L�r�L�r�L�L�r�L��L�r�L�r��L�r�s
r�sr�L�r�L�sL�sL�L�ssL�sL�L��L�ssL�L�sL�s	s
L�L�sL�sL��L�sL�ssL�sL�L�sL��ssWsL�L�sssCss3ss(sL�L�sL�sss!L�sL�ss L�L�is"s%s#L�L�s$L�iL�s&s'L�iL�s)s,s*L�s+L�iL�is-s.L�s/L�s0L�s1L�s2L�iL�is4s5s8L�s6s7L�iL�s9L�s:L�s;s?L�s<L�s=s>L�iL�s@L�L�sAsBL�L�isDsNsEsML�sFL�sGL�sHL�sIL�sJL�sKsLL�iL�L�isOisPL�sQL�L�sRL�sSsTL�sUL�L�sViL�L�sXsYs\L�sZs[L��L�s]sds^sbs_L�L�s`saL��L�scL�L��seL�sfL�sgL�L�shL�sisjL�L��sltsms�sns�sosyspstL�sqL�srL�ss�L�L�suL�svL�swL�sxL���szL�s{s|L�s}L�s~s�sL�L�s�L�s�L�s�s�L�L��L�s�L�s�L�s�s�L�s�L�L��s�s�s�s�s�s�s�L�s�s�s�s�s�L�s�L�s�s�L�s�s�L�L�iL�s�s�s�L�iiL�s�s�L�iiL�L�s�s�L�s�L�L�s�L�s�L�s�L�is�L�s�L�L�s�L�s�s�L�L�s�L�s�L�s�L�is�s�s�L�s�s�L�is�L�L�s�L�s�L�s�L�s�s�L�iL�s�s�s�L�L�s�s�L�L�is�s�L�s�L�s�s�L�s�L�s�L�L�s�L�iL�s�s�s�L�is�L�s�L�iL�s��s�s�s�s�s�s�s�s�s�s�s�L�s�L�s�L�s�L��L�L�s�L�s�s�L�s�L�L��s�s�s�L�L�s�L�s�s�L�L��s�L�s�L�s�L�L�s�L��s�L�s�L�L�s�s�L�s�L�L�s�L��s��L�s�L�s�L�s�s�L�s�L�s�L��L��L�s�L�s�L�s�s�L�s�s�L�L�s�L�s�L��+s�L�L�tL��ttatt"tttitiittiit	t
ititit
itii�tttiitttttittiititit�itiit�i�itiit t!��iit#t$tKt%t?t&t4t'it(t.it)t*it+it,it-i�iit/t0iit1t2it3i�it5it6it7t<t8it9iit:t;i�iit=it>i�t@tEitAitBitCitDi�itFitGitH�tIitJi�tLitMtTitNtO�itPitQitRitSi�itUtVitWt\itXtYiitZt[i�iit]t^it_it`ii�tbtktctgitdteitfii�thiititjii�tliL�i|tnto|tp|tq||trts||tttu||tvtw||txty|tz|�|t|azt}t�t~t�tazt�t�t�v�v�t�t�v�t�v�t�v�t�v�t�v�t�v�v�t�v�t�v�t�v�t�v�t�t�v�v�t�v�t�azv�mazv�t�v�t�v�mazt�t�t�t�azt�azazt�azt�t�azazt�t�azt�azt�azazt�t�azt�azt�azazt�azt�azt�azt�w�azt�t�t�t�v�azb�t�t�b�t�b�b�t�t�b�b�t�b�t�t�b�b�t�t�b�b�t�b�t�t�b�t�b�t�b�azb�jv�t�u)t�t�azt�t�t�azt�azt�v�t�azt�t�azt�t�azt�azmv�t�v�t�v�t�v�t�v�t�t�v�v�t�v�t�v�t�t�v�t�v�v�t�t�v�t�v�t�v�v�t�gCv�t�u$t�t�t�azazt�t�t�azt�t�azt�azazt�azt�t�azazt�t�azazt�t�azt�azt�azt�azazt�azt�w�azazt�azt�azt�t�azt�azt�azt�azt�azt�azazt�azt�t�azazt�azt�t�azw�azuuuv�v�ut�uut�t�uut�t�uut�t�u	u
t�t�ut�ut�u
t�ut�uut�t�ut�u�azuuazuazazuazuuazazuazuazuazuuazuazazuu azazu!azu"u#azv�azu%azu&u(azu'v�t�v�azu*uKu+u3u,u0u-u.azv�azu/azv�azu1azu2mju4uGazu5azu6azu7azu8u9azu:azazu;u<azazu=azu>u?azazu@uAazuBazuCazazuDuEazazuF@azuHuIv�azuJAv�azuLu�uMuauNu`uOazuPazuQazazuRuSazuTazazuUazuVazuWazuXuYazazuZu[azazu\azu]azu^azu_w�azv�azubutucazjudjuejufjugjuhjuijujukjjuljumjunjuoupjuqjjurusjjazazuuv�uvuwu�uxu�uyu�uzazu{azu|b�u}azu~u�uu�u�u�azu�azv�u�u�jv�t�mu�u�u�u�az�Kb��Ku�u�v�u�azgCu�u�u�u�u�u�v�kXv�v�azu�ubupu�u�u�u�v�u�u�v�u�u�wwmv�u�u�v�u�u�azu�azu�azazu�u�azu�azazu�azv�u�b�azu�v�b�u�u�u�azb�azu�u�u�u�u�u�u�u�v�azazv�gCazu�azazb�u�v�u�v�u�u�azv�u�u�v�u�v�azv�azu�u�u�u�u�azu�azazu�azu�azb�u�azazu�u�azazu�azwUazu�azu�azu�azu�azu�azu�azu�u�azazu�u�azu�azazu�u�azazgCu�vzu�vpu�azu�azu�u�u�azu�azu�u�u�azu�u�azu�azu�u�azu�azu�azu�azazu�u�azazu�azgQazu�azu�u�azu�azazu�azu�u�azu�azu�azazkXu�azu�azu�azazwazu�u�vu�vu�u�mu�u�u�azv�azt�vmvvv�azazmazvazv�vvnvv
vazv	t�azv�azvvazv
azvazvvNvv/vv vvvvvvazv�v�azvvazv�v�azvvvvazv�v�azvvazv�v�azv!v(v"v%v#v$azv�v�azv&v'azv�v�azv)v,v*v+azv�v�azv-v.azv�v�azv0v?v1v8v2v5v3v4azv�v�azv6v7azv�v�azv9v<v:v;azv�v�azv=v>azv�v�azv@vGvAvDvBvCazv�v�azvEvFazv�v�azvHvKvIvJazv�v�azvLvMazv�v�azvOazvPv_vQvXvRvUvSvTazv�v�azvVvWazv�v�azvYv\vZv[azv�v�azv]v^azv�v�azv`vgvavdvbvcazv�v�azvevfazv�v�azvhvkvivjazv�v�azvlvmazv�v�azvoazazjazvqv�vrvsv�v�vtv�vuv�vvv�vwv�vxv�vy�Bv�v{v�v�v|v�v}v~t�vt�t�v�v�t�v�t�v�t�v�t�v�v�t�v�t�v�t�v�t�v�v�t�v�t�t�v�azt�v�t�v�t�t�v�t�v�t�v�v�t�v�t�azt�mt�v�}�v�{�v�v�v�v�v�v�azv�v�azv�azv�azazv�v�azv�azazv�v�azv�azazv�v�azazv�azv�v�v�v�azv�azv�azv�v�azv�v�azv�azazv�v�azazv�azv�v�azv�azv�azv�azv�azazv�azv�v�azv�azazv�azu�v�azv�azjazv�azv�azazv�azv�v�azazv�azv�v�azv�y�v�v�v�v�v�v�v�cWv�v�v�cWcWg_g_v�g_i�v�v�cWv�v�cWcWi�cWv�cWg_v�v�v�v�v�v�cWv�cWi�cWv�g_cWcWv�cWv�cWg_v�cWv�cWv�cWx�cWv�yv�x�v�w�v�w�azv�v�wpv�wEv�wv�v�v��ei�v�v�i�i�v�i�v�v�i�v�i�v�i�v�i�v�i�i�v�v�i��ei�i�wwwi�wi�wi�wwi�wi�wi�wi�w	i�w
i�i�w�ei�w
i�wi�Bpi�ww(wi�ww$ww!wi�i�wwi�wi�wwwi�w�ew�e�ew�eBpwi�wi�i�w i��ew"w#i�BpBpi�i�w%w&w'i�BpBpi�w)w5i�w*i�w+w,i�w-i�w.Bpw/BpBpw0w1Bpw2BpBpw3Bpw4Bp�ew6w:i�w7i�w8w9i��ei�i�w;�ew<i�w=i�w>i�w?w@i�wAi�wBi�i�wCwDi��ei�wFwjwGwNwH3�3�wIwJwL3�wKBp3�wM3�3��wOwS3�wP3�wQ3�wR3�BpwTw_3�wU3�wVwW3�wX3�wY3�wZ3�w[3�3�w\3�w]3�w^Bp3�w`3�wa3�3�wbBpwcwdBpBpwewfBpwgBpwhBpwiBpBp3�wk3�wl3�wm3�wn3�3�wo3�Bzwqw{wr�ws��wt�wu�wv�wwwx�wy�wz����w|w�w}w�w~w�ww�B�w�B�w�B�B�w�w�w�B��B�w�B�B�Bpw�B�w�B�w�w�B�B�BpB�w�B�w�B�w�w�w�w�B�BpB�Bpw�B�BpB�w�B�i�w�w�w�i�w�w�i�w�i�i�B�w�w�i�w�w�i�i�w�w�w�w�w�i�w�B�i�i�w�B�i�w�w�i�w�i�B�w�w�B�i�B�i�w�i�w�i�w�i�w�i�w�i�w�i�w�i�w�i�i�w�i�B�w�w�w�w��w��w�w���W��w�w�i��i�w�w�w�w�w�B�i�w�w�i�w�i�w�i�w�i�w�i�i�w�i�w�i�B�w�w���w�w�w�w�w�w�w�B�B�B�Cw�w�CCC.C=w�w�w�w�CLC[CjCyw�C[C�C[w�w�CjCyB�CLw�i�w�w�w�w�C.CC=Cw�w�CB�B�i�w�xmw�x7w�xw��
w�w�w�4w�w�w�w�4w�4w�C�4w�4w�w�w�4C�w�w�C�w�C��C�4C�w�44w�4w�C�4w��w�xw�xxC�C�xC�C�C�C�xxC�D
xi�DD+xxx	�x
xxxxx�x
�x�C��x�x�C�xxx��xC��x�xx�C��C�x�x�x�x��C�x x1x!�Ix"x.x#D:D:x$x%D:D:x&x'C�x(C�x)C�C�x*x+C�C�x,x-C�C�D:DHx/x0D:DV�vx2���x3x4��x5x6DeDtD�D�x8x^x9xQ�9x:x;xBx<x?x=x>D�D�D�D�x@xAD�D�D��9xCxJxDxGxExFE
EE(E7xHxIEFEUEdEsxKxNxLxME�E�E�E�xOxPE�E�E��9xRxS�fE�xTxXE�xUxVxWFFF+F;FKxYxZx\F[x[FkF{x]FKF�FKx_xfx`xb��xa���xcxd��F�xe�F�xgxjxhxi�&F��4�xkxlb�
��azxnxtxoxp�W�xqxr�i�xs���xuxx��xvxw��i�F�xyxzx�F�x{��x|x}F�x~xF�F�GGx�x�x�x�x�GGx�G!GGG0G0x�F�Gx�yx�x��x�x�x�x�x�x�x�B�x�x�x�x�x�G?GOG_GOx�x�x�x�GoGG�G�x�x�G�G�G�G�x�x�x�x�x�G�x�G�G�G�x�x�x�x�HHH/H?x�x�HOH_HoH/x�x�x�Hx�x�H�H�H�H�x�x�x�x�H�H�H�H�x�x�III/I?x�B�x�x�x�x�IOx�I_Iox�x�x�x�IG�I�I�x�x�HI�I�I�x�G�x�x�G�x�I�I�x�G�I�G�x�x�x�x�x�x�Jx�JJ.x�i�J=i�x�x�JLx�I_J[x�x�JjJyJ�J�x�x�i�x�Hi�x�x�i�H�x�i�i�x�x�i�x�i�I�i�x�x�x�x�x�x�x�x�x�x�eJ���x�x�J�J��azx�x�x�azJ�?Uazx�azJ�x�azazx�x�x�azJ��azx�yx�x�x�x�Kx�Kx�x�Kx�KKx�KBpx�K�x�x��K,�x���x�yx�yy����yy����Bpy��y��y��y����y��y	��y
K��y��y
yK;KJKYKhKyyyyyK;KYKJi�yi�Kwi�yyeyy*yy&yy yyazyupazyy�"azazv�y!y$y"y#az��az�y%azw8��y'azy(azy)azv�azy+yYy,yGy-yAy.y2y/�*y0i�i�y1i�K�y3y?y4�*y5�*y6�*�*y7Bpy8Bpy9y:Bpy;Bpy<BpBpy=y>Bp�*BpK�y@K�K�yByEyCK�yDK�K�K�K�yFK�KwyHyUyIyTyJyMyKyLo5L
LL+yNyQyOyPL:LILXLgyRySLvL�L�i�BzL�yVyXyWL�L�i�K�L�yZy`y[y]y\azTazy^y_�azaz�azyaybyc�>azydazL�azyfy{ygytyhynyiykyji�i�C�ylymC�i�L��yoyqypi��vL+yrysD+i�i�Lyui�yvyyywyxC�DL�DHyzi�LvC�y|azy}wy~wv�wy�azy�azy�y�y�y�y�y�y�i�y�y�y�4y�y��i��i�y�B��
i�y�i�i�y�y��y���9E�y�azy�i�y�y��e3�y�y���y��B�y�B�J[y�IOJ[y�azi�azy�{.y�z�y�zCy�zy�y�y�L�y�y�L�y�iy�y�iy�iy�y�iy�y�iiy�y�iiy�y�iiy�iy�iy�y�i�iy�iy�iiy�y�iy�iiy�iy�iy�y�iy�ii�y�L�y�L�y�L�y�y�y�L�y�L�y�y�L���L�y�y�y�L�L�y�y��L�y�L�y�L�y�y�L�L�y�L�y�L�y��L�y�L�y�L��L�y�zazy�y�zy�y�y�y�dy�y�y��Jy��Jy�y��J�Jy�y��J�Jdy��Jy��J�Jy�y��J�Jy��Jy��Jy�d�Jy�q�y��y��y��y��y��y��y���y���;y�d�;y��;y�y��;�;y�y��;�;y��;y�y��;�;z�;z�;d�;M|azzzi�azzi�zz9z	z1z
z#zzzzz
zzzzt�azgCzazaz��azzazzazv�zzazgCzazzt�azt�zzzzazv�jgQzz"z kXz!b�azb�wv�z$z+z%z(z&z'v�mv�v�z)z*u�v��1wz,z/z-z.��u�mazz0az�wazz2azazz3azz4azz5azz6z7z8azv�gCv�z:i�z;i�z<i�z=i�z>z@i�z?�i�zAzB3��eD:i�zDz�zEz�zFi�zGi�zHz|zIzczJzWzKzQzLzOzMzN����3��zP��B�zRzTzS��B�zUzVJ�i��f��zXz^zYz[�zZ�D�z\z]3�K�Kwz_zaz`�eL��
�ezbFF�zdzpzezizfzg��zh��e�zjzmzkzl�W3����znzoK����*zqzwzrzuzszt�F��v��zv�9Bzzxzzzy�BzE��z{�L�z}i�z~i�zi�z�i�z�i��9�Wi�z�z�z�z�Mz�z�z�z�z�z�z�z�z�z�g�q�g���g�z�z�g�g�z�g�z�z�g��Oz��Og�z�z�z�z�z�g�g�M�z�z�z��oz�g�z�g�z�g��Og��Mz�g�Mg�z�z�z�z�z�z�g�M��Jg�z�z��og�����z�z�z�z��Og�g���z�g�g�y�z�z�z�z�z�z�g�z�g��Og�z�~�Oz�z�z�g�q�g�z�z�Mq�ML�z�Mz�Mz�z�g��Oz�g�L�Mg�z�z�Mg�Mz�Mz�z�g�q�z�z�g�z�g�M��MMz�z�z�z�v�AazcWz�z�{z�cWz�g_z�g_z�z�z�z�z�z�z�z�z�z�z�g_z�g_z�g_z�g_�g_g_�z�z�M	MM'�z�z�z�z�M6��MEz�z�g_MTMc�z�g_z�z�z�z�Mrg_M�M�z�z�M�3�p�g_z�{z�z�z�z�z�z�z�g_z�g_z�g_z�g_g_��g_����M�z�g_z�z���M�M���g_{{{{g_g_M�{{g_M�M�4�{{{	g_{
g_{g_{g_{
g_{g_{g_g_{{g_{g_{g_{{{M�{M�M�{p�M�{{M�{M�{M�p�M�{M�{p�M�{ {){!{%{"g_{#g_{$g_�g_{&g_{'g_{(g_M�g_{*g_{+g_{,g_{-g_��g_{/{�{0{i{1{\{2{4{3i�cWaz{5{[az{6{7{L{8i�i�{9i�{:{;{Fi�{<i�{=i�{>{?i�{@i�{Ai�{Bi�i�{C{Di�{Ei��i�{G{Ii�{H4�{J{K�e��B�i�{M{Ni�i�{Oi�{P{Qi�i�{R{Si�{Ti�{Ui�{Vi�{Wi�{Xi�{Yi�i�{Z�i�azi�{]{_{^i�i�az{`{aazi�{bi�{ccW{dcW{ecW{fcW{gcW{hcWEcW{j{�i�{k{li�{mi�{n{~i�{o{pi�i�{qi�{r{si�i�{t{ui�{vi�{wi�i�{xi�{y{zi�{{i�{|{}i�44i�i�{i�{�{�i�{�i�i�{�{�i�{�i�i�{�i�{�i�{�{�i�i�{�{�i�{�{�i�B�B�i�{�{�{�{�{�i�{�i�i�{�{�i�{�i�i�{�{�i�i�{�{�i�{�i�{�i�{�i�{�i�i�{�i�{�i�{��
i�i�{�i�{�i�{�{�i�i�{�{�i�i�{�i�{�{�i�{�i�{�i�{�i�i�{�i�{�{�i�{�i�i��{�i�i�{�{�{�i�{�{�{�i�{�{�i�i�{�i�{�i�3�i�{�{�i�{�i�i�{�i��ei�{�{�i�{�i�i�{�{�i�{�i��i�{�{�{�{�cW{�cW{�g_cW{�{�{�{�cWg_g_cW{�{�g_cWg_cW{�{�{�{�{�{�cWg_g_cWcW{�azcW{�{�{�{�azcW{�azg_{�g_{�g_{�g_{�{�g_g_{�{�g_g_M�cWg_{�|�{�|�{�|({�|
{�|{�{�{�{�@&{�E@&@&Ae{�|Ba{�{�Ba{�Ba{�BaBa{�Ba{�Ba{�{�BaBa{�Ba{�{�BaBa{�|Ba|Ba|BaBa|Ba|Ba@@&AA|||A|	Ez|
Ez�'|A��E�A|A|A||AA||A|A|A|AA||AA||A|A||"|A|A|A| A|!AA@A|#|$A|%AA|&|'AA@|)|v|*|U|+E�|,|7|-A|.|/BaH:|0|2|1E�F�@&�'|3�'|4|5|6�A�Ae|8|S|9|:EA|;HG|<HGHG|=|>HGHG|?|@HG|A|JHG|BHG|C|DHG|EHG|FHGHG|G|HHGHG|Iq�HG|KHGHG|LHG|M|NHGHG|O|PHG|QHGHG|RHGq�@&|THGEz|V@&|W|[@&|X|YAA|ZBaH:|\|q|]@&|^|n|_Ae|`|h|a|e|b|cH�H:Ez|d�E|f|gEzEE�'|i|l|j|k���EzE�|mE��H:Ae|oAe|p��@&H |r|s@&|tA|uE�Ae@&|w|�|xAe|y|�|z|�|{|~Ae|||}F�AeH:Ba||�|�|�HG|��w�|�|�|�kX|�w@&|�H AAE�|�E�|�A@&H |�|�|�|�|�|�A|�|�E�Ba|�|�Ez@&|�@&E�|�|�|�E�|�|�A|�E�|�|�|�Ae|�|�|�@&�@&�@&|�|�@&|�|�|�|�@&|�F�Gt|�|�@&��F�|�F�F�|�@&F�|�|�|�|�@&|�@&EF�E�Ba|�|�@&�g|�|�|�@&�E��|�@&H:AAe|�|�|�|�|�H:Ae|�|�E�|�|�BaE�|�Ae�'F�@&|�@&|�H�E�|�|�F�F�|�|�F�F�|�|�F�F�|�F�|�F��A|�E�A|�}|�|�|�AE�|�|�E�|�E�|�E�|�E�E�|�E�|�E�|�|�E�|�E�|�E�E�|�|�E�E�|�E�|�|�E�E�|�|�E�E�|�|�E�E�@|�}A|�|�E|�}|�AA|�A|�|�|�|�|�|�AA|�A|��A|�AA|�|�A�A|�|�|�AA|�A|�NA|�A|�AA}A{@&}}@&@&}}E�@&Ae}H }}E}	Ae}
}�'AeH }
AH }@&A}A}}�@&}}}%}}E@&}}"}H:H:}}H:H:}H:}}H:H:}H:}}H:} H:}!H:H:�E�}#A}$azE�}&@&}'}�}(}R})}D}*}=}+},�A}-}:A}.E}/}0}1H:,>N}2}3}5N}4�N}6}9}7s�}8H:N*H:O};}<H:EE�}>}AA}?}@K�E
��}BA}CEazE�}E}FH:H:}GH:}HH:}I}JH:H:}KH:}L}MH:}NH:H:}O}PH:H:}QH:N7}S}t}T}f}U}]}V}Y}W}XEAAeu�}Z}[���}\��Ez}^}c}_}`AE}a�}b@&@&�}d}e@H:H:A}g}m}h}jA}iAF�}k}l��6��A}n}q}o}pE�F���}r}s�6AE�g}u}�}v}�}w}z}x}y�
�A@&}{}�}|H:s�}}}~}�}H:}�H:s�H:}�H:s�H:A}�}�}�H:N*}�N@}�H:NNH:}�A}�A}�A}�H:H:}�}�H:}�H:s�H:}�H�}�}�}�}�AH:�@&}�H�BaH�AeA}�}�}�}�}�}�}�E}�EE}�}�EE}�E}�}�E}�EE}�E�E}�@&Ae@&AE}�}�}�EE�}�}�H:F�@&}�A}�@&}�}�}��Ae}�H:Ae@}��}�~0}�}�}�@&A}�@&}�}�}�Ez}�Ez}�EzA@&}�@&}�@&A}�}�@&A}�}�}�A}�}�}�}�@&AE�H }�A}�A}�A}�}�}�}�A}�AN�}��AA}��A}�}�Ae}�}�@&A}���A}�}�}�}�Ae}�AeE}�}�H }�H A��}�}�AA}�A}�}�AA}�}�A}�A}�A}�AA}�}�AA}�}�AA}�}�AN\A}�~}�H }�H }�H H }�}�H H }�H }�}�H }�H }�H }�H }�H ~H ~H ~H ~H H ~H �v~~
A~~AE�~	E��~AE~~
@&~~#~~~~~az~az~azaz~~az~azaz~az~az~~azazv�az~az~azm~azaz~ ~!~"mazu�az~$azaz~%az~&~'azaz~(~)w~*ww~+~,w~-ww~.w~/�Kw~1�~2�~3A~4~5~NE~6~7~J~8~E~9~BH:~:~;~<��AEz~=H:~>H:~?~@~AH:�9�9H:~CE�@&~D@&A�~F~G~H�'E�~I@&�g�~K~MEz~LEz�@&Ba~O~n~P~i~Q~h~R~e~S~cAe~T~U~\~V@&~W@&~X@&~Y@&~Z@&@&~[Nj@&~]@&~^@&~_@&~`@&@&~a~b@&�@&~dAe�@&~fF�d~gA|HGAeH:~jE~k@&~l~mH�@&Ez~o~q~pF�E@&~rH:~s~�~t~�~u~~v~|~w~{~x��~y~z��Ae��~~Ae~}~~��Ae��
�~�~�~�!~�~~�
�~�
�
�~���~�~���~���~���~���~�~���~~��~�!!~�~�!��!F�Ae~�~�~�~�~�~�~�~�~�~�@&~�~�@&@&~�~�~�@&~�@&�*~�@&@&�*~�@&~�~�@&~�@&~�~�@&~�@&~�~�@&~�~�@&@&Nw~�@&~�@&Nw@&~�@&@&~�~�@&@&N�@&~�~�@&~�@&@&~�@&~�@&~�~�@&@&~�~�@&@&~��@&~�~�~�~�@&~�~��~����~�@&~�@&@&~�~�@&@&�~�@&@&~�~�@&@&~�~�@&~�@&~�@&~�@&~�@&@&~�N�@&~�~�~�~�~�@&~�@&@&~�~�@&~�@&~�@&~�@&~�@&~�@&~�@&�*@&@&~�~�~�~�@&~�@&~�@&~�@&@&~�@&~�~�@&~�@&@&N�@&~�~�~�@&�*~�@&�*@&~��~�@&@&~�~�@&~�@&~�@&~�@&@&�*~�~�~�~�HG~�H:E~�AE�A~�~�~�H�azEA�H:	EF�EH:Ba@&H @&@&
H +A
HGH�AeAe
�Ae��AeN�AeAe�Ae!AeAe!9Ae AeN�Ae")#$AeB�%N�&'AeB�B�(AeB�Ae*AeN�Ae,A-A.A/0;18233&N�3&453&63&73&IK3&9:N���N�<?=>IKN�C�N�@��N�B�E�CE�DEK@&F@&GAH@&IAJ@&Ae@&LM�NxOgPYQVRUST@&��@&@&��W�X�@&Z`[]\��@&^_�@&@&�adbc@&F��@&ef�@&�F�hl�i�j@&k@&�mrnpo@&�@&q@&�@&sut�@&�vwF��F��yz~{@&|�@&}@&���,�������@&�@&�@&AE�A�H ��H H ��H H ��H �H �H H ��H H �H-H �����E�H �AeH ��E��E��@&�@&��A�@&@&�*���BaAe@&H:���AeE��E��E��E���E�E��E���E�E��E����X���XE�E��X���@&@&��@&@&�@&�@&�@&�@&�@&�@&��@&�@&@&�@&�@&��@&�@&�@&�@&@&��@&N�@&���AA��AA��A���AA��A�A�AA��A�AA��AA��A�AA�A�@A�AA��A�AA��A�A�A�AA��AA��AA�A�N�A��@&��H @&��@&@&�@&��@&@&�@&��@&@&��@&@&���H �A�AH:�E�A���H:��	��
�HG@&@&�@&�
@&�HG@&��Ae��E�@&E�E����E���E��H �E�E��A�����2������� ���!�i�"�#`�t�cW�$�%�g�&M�'�H�(�9�)�/�*�,�+rIh�O�-�.OQ�azO�0�6�1�5d�2�3�4#�oi#daz���7�8OMiMb��:�A�;�>�<�=hc��N�?�@li`��VO�B�F�C�EM�D�o�d{c�l�Gj*O�I�X�J�Q�K�N�L�Me�L�b�az�O�Pc�Nc�ak�R�U�S�TdiMiMd�V�WM�b�b�g4�Y�`�Z�]�[�\H:��g_Q��^�_MNi�N�a�d�b�cb�Q��`��e�fOT}�Nb��hMM�c��jM�k���lg_�m�{�n���oL�L��pL��qL��r�sL��tL��uL�L��v�wL��xL�L��yL��zL���|��d�}�~d�d��dd����dd����ddo�����xv��xv�������)��xvq���xv��xv��xvO%O4Mb�����������i���d����L�d��M�������������
������������
����Jg��J��L������cW����N��������aN����aN��ۄaNaN��OCaNaN������M��������M��Mg�M��M��Mg�Mg�Me���Z����M�������M`���Lg4����g4g4��mg4����������`���i���������d{b���b�K�w�����nW��nW��nW����nWnW��nW��OR��OR������OR��OR����OROR��ORnWOR����OROR��OR��nWORnW����nW��nWnW��nW��ORnW����M���c�N������L��LL��������LL����LL����4�4�����4�4���L4���LL����LL4�����������s��5��	�o���o��o�o���o�o���o�;�o�o�
�o���o�
�"������������o�o���o����oq��o����M�o����q��������;��!�;� ���;���;�#�,�$�(�%�'q��&��o��o�)�*���o�+�;�o�;�-�1�o�.�/�0�o��y�q��2�3y�q��4���o�6�n�o�7�8�?�o�9�o�:�;�o�o�<�o�=�o�>�;�o�o�@�A�V�B�M�C�G�D�F�o�E�od�4d�H�J�o�I�o�J�K�L�o�4�oM�N�R�O�P�;�4�Q��o�;�S�T�����U�oq��W�c�X�^�Y�\�Z�[�oq������]����_�a��`��o�o�b�o��d�i�e�g��f��o��h�q��j�l��k���o�mq��o�;�o�o�o�p�q�o�r�4�o�4�t���o�u�v�o�w���x�o�y���z���{��|�}d�o�~dd�od����dd�o������������d�od�o�����odd�o��d��d�od����������d��d�odd��d���odd�����������od�od��dd�o�o�������������������oq���q�q��o���������o�;�;�4���4�4�o�������������o�����;���o�o���;�J���������������o�J�;�;���;M�����oM���J�Jq����������;���;�o��M�o�J�������o�o�;�o��d�J�����o�����o���o�o���o���o�����o���o�o�4�o�����o������������������������q������������o���o��������q��������������o��������������������q���q��������oq����������������o����������q��������������o�����o�;�o�����o����O�O���������o�q��o��o�oq���	��;�;�oq��
q��o���
������Jy��oM�oM����o�;MM�o�����;��oMM�o���o�;�;��;M� �g�!�c�"�R�o�#�o�$�%�o�&�:�'�/�(�,�)�+���*d�d��-�;�;�.�;�o�0�6�1�3�;�2���;�4�5�o��od�;�7�8�9�;�od�;�;�G�<�B�=�?�>�;�o�;�@�Ad�o�;��C�E�;�D�o���F�o���;�H�L�I�K�;�Jd�;�o��M�P�N�Od�oM���Q�;�;�o�o�S�T�o�U�^�V�o�o�W�X�[�Y�o�Z�o�od�\�o�]�o�oM�o�_�o�`�a�o�b�o�;�o�o�d�e�o�f�o�J�o�h���i�|�o�j�k�v�l�q�m�o�n�o�o�o�o�p�;�o�o�r�o�s�t�o�o�u�oq��w�o�o�x�y�o�o�z�o�{�;�o�}���o�~�o��o��������������������o�o�������o���o�y����������o�;�o��������y��������o�����o��������o���������y��y����o�������o�����O�����������o�O�o�O���o�O�o�����������O�o�O�O���o�O�����o���OM���OM�O���������������;�o�;�������;�o�;�����o�;�;�o�����;�����;�o�;�;���o���o�;�������������;�o�����o�;�;�o�;���;���;�o�������o�;���;�o���������o�;�o�;�;���;�o�����o�����o�o�����4�4�����4�4���;�4�����o�����o���o�o���o�����o�oM�o���o�����o�������o���o�o����o�o�;���U���������������S��� �O�������������o����M�oM�����oM�oMM��oM����	M�M�oM�
�oM���
MM�o��M�oM�o������M�o��M�o�MM�o���MM�o�oMM��M�oM�o�!�"�>�#�/�$�*�%�'�o�&�o�J�(�)�J�o�J�o�+�-�,�o�J�o�J�.�o�J�0�7�1�4�2�3�J�o�o�J�5�6�o�J�J�o�8�<�9�;�:�o�o�J�o�J�o�=�o�J�?�K�@�F�A�D�J�B�o�C�o�J�J�E�J�o�G�I�J�H�o�J�J�J�o�J�L�O�o�M�J�N�o�J�J�P�Q�R�J�o�o�J�T�U�J�o�V�o�W�k�X�c�Y�_�Z�\�[�J�o�J�J�]�o�^�J�o�J�`�a�b�J�o�o�J�d�g�e�f�o�J�J�o�h�j�i�J�J�o�o�J�l�v�m�s�n�p�J�o�J�o�q�r�o�J�o�J�t�J�J�u�o�J�w�{�x�z�y�J�o�J�J�o�|��}�~�J�o�o�J�����J�o�J�o�����������o�o�J�oM���o�o�J�����������o�o�����o�o���o�����o�oM���o���o�o�����o���o���o���o�od���������o�������������J�J���J���J�o�����J���o���J�o�����J�o�J�o�����������J�o�J�����o���o�J�o�J�J���J���o�J���o���4���4�������4�4�;�4���4�����o���o�����������������4���o�4���4�o�4���4���4�o�;���������o�4�4���o�4���������4�o�4�o�o�4���������4�������4�o�o�4�������4�4�o�����4���4�o�4�o�������4�����4�o�o�4���4�4���o���o�4�������o���o�o���o�����o�o�����o���o�;�o�����������o�Jd�o���od���������o�4d�o���+��o����
��d����od�od��
�	dd�o��d�od�o�����dd�o�odd��dd�o��#�����d�odd��od���d�od� �"�!d�od�od�$d�%�(�&�'Md�od�)�*�odd�o�,�o�-�>�.�7�/�3�0�2�1�o�J�o�o�J�4�5�J�o�6�J�o�J�J�8�9�;�:�J�o�J�J�<�o�=�J�o�?�J�@�E�A�B�o�J�C�D�o�J�J�o�F�H�G�J�o�J�I�J�o�J�K�P�L�N�J�M�o�J�J�O�o�J�Q�S�R�o�J�o�T�J�J�o�V���W�q�X�l�Y�f�Z�`�o�[�\�o�]�o�o�^�o�_�oM�;�a�4�b�4�c�4�d�4�e�4M�g�o�h�o�i�o�j�o�o�k�;�o�m�o�o�n�;�o�o�p�oM�r�|�s�u�;�t�J�;�v�o�o�w�4�x�4�y�z�4�{�4�4�;�}���;�~��o���o���o�o���o���od���o�J�o�����������o���o�o�4�����o���;�����������o���o���o�;�������o�o�;�o�;�o�����o���o�o�;�o�����;�����������������������o�������o���o�����o�������������o���o���������o���������o���o���o���o�o�������������o���o���������;�����;�;���;�o�������������o�;�;�o�����;�o�;�o�;���o�;���������;�������o�;�;�o�;���;���o���o�;���;�����;���o�;�o���;�o����M�o�o���o�����o���o���o�oM���d�����d�����������������J�o�J���J���J�o�������J�o�J�J�o���������J���o�J�o�J�J�����J�J�o�������J���J�J���o�J�������o��J�o�J��J�o��o��J�o�J��5���	��
���
��;�;�o��;�;�o�;���o�o�;���;���;��;�o�;����o�;�o��;�;�o��+��#��!�;� �;�o�"�;�o�;�$�'�%�&�;�o�o�;�(�)�o�;�*�o�;�o�,�/�-�;�.�;�o�;�0�3�;�1�;�2�;�o�;�4�;�o�6�L�7�A�8�?�9�=�:�<�;�o���o���o�>���o�����@�o���B�G�C�E���D���o���F�o���H�J���I�oOa�K�o�o���M�W�N�S�O�Q���P�o���R���o���T���U�Vq��o�o���X�^�Y�[�Z���o���\�]�o���o���_�b�`�a���o�o���c�o���o�e��o�f�g�q�h�m���i�j�l�k�o���o�o�����n���o���pq����r�x���s�t�v�u��q��o���w�o���y�{�z���o���|�~���}���o�o�����������������;������M�;MM�;�����;�����;�oy����;�����;��o�;��������������MM�;�����;���o�;�o���������oq���M�;M���������oMM������;�o�oy����o���������������o�������o�o���������o�����������������o�y������o�d����o���od�o������d������M����dnWxv�����NM����M��tOMM��M��M��M����M��M��MM����M��M��M��M��MM����Mty��c�c�������������L���b���L����cW����N��NN��N��NQ���������b���b���b���kub�����b���kub�b���kub�az��������azaz����azaz��az����azaz����azaz������gCazgCaz��az��az�azaz��azgCazL�t�L�����L��A�	g4�
�di���(�
xv�xv��xv�xv��xvxv��xv�xvxv���xv��!�xvxv��xv�xvxv�xv�xv�xv� ��xv�"xv�#xvxv�$�%xv�&xv�'xvxv���)�5�*N�+NN�,�-N�.NN�/N�0�1NN�2�3NN�4SNN�6N�7�8N�9N�:NN�;N�<�=N�>N�?NN�@SN�B���C�i�D�a�E�O�Faz�G�Iaz�HazkX�Jazaz�Kaz�L�Mazaz�NazkX�P�Yaz�Q�R�SOpaz�Taz�Uaz�Vaz�Waz�XazgCaz�ZN�[b�az�\�]azaz�^�_az�`azazkX�b�h�cN�d�f�eNazN�gNNazNaz�j��k�|�l�waz�m�naz�oaz�pazaz�qaz�r�saz�tazaz�u�vazgQaz�xaz�yaz�zaz�{�BgQ�B�}Naz�~azN��N��NN��N��azN��NN����N��N��N��NgQN��g4��N��������xvaNMak�0p���������������M��ty����cW`�dcW��az��������������az��azaz��az����az��azaz��az��az��gQaz��azaz��az����az��az��az��azb�az��d��azaz����azaz��az����az��azwaz����aznW|��|��|����|��||��|��|����||��|��|��|����|��dd����d��d��d��d��d��dd��do�������N��LM������������`�`�����`�`���,`���M`���O�`�����L��[`�`���������`�`�����`���`�`�����`�`�����`���`�`���`�O�O�`�������M���������iM��iM����iM���8������iMO��iMO�8iM������iM��iMiM���iM��	�p�b�c��
�aNz�����
����������������������������������O������������������O���� �!d]L��"�#nWb�m��$M��%M��&�'M�M��(�)M��*M��+M��,M��-M�M��.M��/M��0�1M�>�M��3���4���5�X�6��7�X�8�;�9M�:d{b�L��<�V�=M��>l�M��?�@�KM��AM��BM��C�DM�M��EM��FM��G�HM��IM�M��J{�M�M��LM��MM��N�OM��PM��QM��RM��SM��TM��UM�M�{��Wl�cWj�aN�Y�Z���[���\���]�q�^�;�_�d�;�`�a�;�;�b�c��;��e�;�f�;�g�l�h�j�i�;�;~�;�k~�;�;�m�;�n�o�;�;�p�;~�r�;�s���t�;�u�;�v�{�w�y�;�x��;�z�;��;�|�~�}�;�;������;���;���;���;���;���;�����;�;�����;���;���;�����;�����;���;�;g����;���;���;���;���;�;���;�����;���;���;�;���o�;���;���;�����;���������;�;�����;���;�;Ź�;�����;�;�����;���;�������;�;�����;���;�����;���;)x�;��)x�;�;���;�����;���;�;���;��M�;����M��M��M��������������M��M��M���M��M��M��MM�4��M������M��MM����M��M��MMŹM��M��M��M����d�4d��M������������������M��M��MM����MM�;M�;��MM�;������M��O�M����MM��M��M����MM���JMM����M������MM����M��M����M�l�l�����M������MM��MM��MM�;�M�M�4MM�	�
MM�M��
M�M�M�M�MM��;M��O��G��7��d�_�����)��"����VpL�VpM�� �!Q�VpakN�#�&�$�%Vpפd{d�'�(VpL�L���*�0�+�.�,�-iVpdؒ�/ؒNO��1�4�2�3L�Vpakl�5�6VplxvM�8�?b��9�:�=(��;�<�((��((��>(�(|�@�g4�A�Bg4�C�E�Dg4�+g4g4�F�+g4�H�J�IMb�M�Kc��Lp��M�N`�MdaN�Pp��QnW�RnW�SnWnW�TnW�UnW�V�WnWO�nW�Y���Z���[���\�}�]�j�^�d�_�ab��`su+��b�cq��b�+��e�h�f�g�q�+�db��i+�sud�k�l���m���n���o�x���p�q�t���r���s�;���u�����v�w���;�����y���z�{��|�����}���~��q���������q���������������������������q���������������q���������q�������������������q�����M��������������������������q�������q�����������q���������������q�������Oa������������������q�������������q�������������q�������q�������Oaq�����������������������������Oa����Oa��q���Oa��������Oa������q���Oa����������Oa������������������q�������������������������q���������������q���������������Oaq�����������������������������q�����������Oa���/������������������������������q������������������;����������������������q������$������
���������q�q�������	����q����������
��q���������������q�������������q�������q���q�������q���� �����!�"�����#q����%�*�&�����'�(�����)��q��+�����,�-�����.��Oa�0�N�1�;�2���3�7���4���5�6����Oa�8�����9���:Oa���<�I�=�D�>�A�?�����@��q����B�C����q����E�F�G��q��H����q��J���K���L�����M��q��O�g�P�]�Q�W�R���S�U�T��q����V��q����X�Z���Yq������[���\q����^���_�c�`���a�bq�����q����d���eq��f��q��h�q�i�m���j���k���l��q����n���o�p��q����r�v�s���t�����uOa���w�z���x���y��Oa�{���|�����;�~��M�����������������rfO�rfO���rfO�rfrf��rf��rfO���������rf��Prf����PO�O�rf������rfrfO�����PrfrfP-Np�������ak��p���L�L�����L�P<L���nWM����MM����MM��Mq�t�������t�����t���t���t���t���t�PBt���q�q���q�����q���q���q���q���q���q�dq���������������b���b���b�b���b�����b�b�b�������b�b���������b�b�x���b���b�b�x�b�����b�����������xv������������xvPW����xv����PW������xvM`���q~��i�������|�q~{
q~li��aN��p�����azb���p�db����m���������L����d��Md����p�d{M�liL����LL����LL��L��L����L��LL��L����LL����L�LL�L@��k��h��
��m�kuy7��	b�d$b���
xv�dm���f�����j��8��y����y���y��y�y���y��y�y��y����*��"y��y�� y��!�y�y��#�$�'�%y��&y��y��(y��)y�y���+�2�,�/y��-y��.y��;�0y��1�;y���3y��4�6�5y�y��J�7y��y��9�D�:�?�;y�y��<y��=�>y�y��;y��@�Ay�y��B�Cy��y��E�Ry��F�G�N�Hy��I�K�Jy��y��L�M�;y��y�y��O�Py�y��Qy���S�a�T�Zy��U�V�Wy���X�Yy��y���[�^�\y�y��]y��y��_�`y��y��b�f�cy�y��d�ey�y��y��g�hy��iy��;y��k���l�y�m�t�ny��oy��p�r�qy�y���sy�y��y��u�vy�y��w�xy�y��y��z�{���|y�y��}y��~�y��y�y���������y�y����y�������y��y�y���y���������;��y�y���y������;�;y������������������������J�Jy���y��Jy��J���J��y��J�������J�Jy�������y�y��Jy��J�������J���������Jy�y��J�����Jy�y��J�������J���J�Jy����J�J��y��J����y���y�����y�y��;��y�y�����y��y����������y�y���y�����y���y�y���y��;�������4�������������������;y��;y��;���������;y�y��;�;��y��;�����;���;��y��;��������y��;�;y�����y��;�;y�������������y���y���y��;��y��;y��������;y��;y��;�����;�����;�;y�����y��;�������;y��;�;y������������;���;y���������y��;�;y����y�y��;y��;�������;y�y��;�	�
y��;�;y����
�;y��;�;��;��;y��y��y�y�����y��y���8��&��y���y��y�y��q�y�� y��!y��"�$y��#y��y��%�y�y��'�(�/�)�,d�*d�+dy��-dd�.y�d�0�5�1�4�2�3dy�y�dy�dd�6d�7dy��9�?�:�;�;�;�<�;�=�;�>�;�O�;�@�X�A�I�B�Fy��C�Dy�y��Ey���y��G�Hy��y��J�Q�K�Ny��L�My��y��Oy��Py��Jy��R�Uy��Sy��T�y�y��V�Wy�y���Y�^y��Zy��[y��\�]y��y��_y��`�cy��ay��b�y��dy�y��e�y�n��gNd{m��i�j`�L�`�`��lLc��n�y�o�x�p�qg_M��r�t�sc�hnW�u�vMd�wb�b�=A`�d�z��nW�{�|�~�}g4dc����q�azd����dd���Zd`���M�d���������������}���]����������������;�����;�;���;���;�����;���;���;�4�;���;�����������;�;���;���;�����;�;��;���;�����;�;������4�;�;���;M���;�;�����;���;���������������������;M�;�o����d���;M�����;���;�o���;�o�;�����������;�;�o���oMd���������4�o�od��y��J�;�������������o�;�����;���M���������J�oy��;����y��;��;�����������;M�;�;���o�;���������o�;�o�;�;��y��;�����������;�������;�;�����;���;���;�;���;�4�;���;���;�����;���;�;��q��;���;�;���;�����;�;���;��d�����;d�;�;�����;���;���;�;���;�;�d�;��;�;��;�	�;�
��
�;��J�;�;�M�;��?��#����;��;��;��;��;�;��;�Oa�;�;���;�;��;��;�� �;�;�!�"�;�o�;�$�-�%�;�&�;�;�'�(�;�)�;�;�*�;�+�,�;M�;�.�7�/�;�0�;�1�;�;�2�;�3�4�;�;�5�6�;�4�;�8�;�9�;�;�:�;�;�;�<�=�;�;�>�;M�@�S�;�A�;�B�C�K�D�;�;�E�;�F�G�;�;�H�;�I�J�;�;�o�;�L�M�;�;�N�;�O�P�;�;�Q�R�;�;�J�;�T�U�;�;�V�W�;�X�;�;�Y�Z�;�;�[�\�;�4�;�^�{`��_�`d�a�sd�bd�cd�dd�e�f�kd�gd�hd�id�jdq��ld�m�p�ndd�od�J�qdd�rd�Jd�td�u�vd�wdd�xd�yd�z�Jd�|nWLnW`��~�g4��LL����L��LL����LL����LL����L��L��LL��L��@L������������N��`�L����L�M��q~��������Q�����Q�P}Q�NM������Q����VpQ�OEQ�������`�`�M���nW��L{
����t�M��������nWiM����`��M�dL���������d������b�M��azb�M��aN��L�p�����b�����������������azq��L����d{ei#c���������b�L�Q�d����b�L�M���������Q���^C`�����d{MԴL��������LN��Q�����lcWc�iM����������������Ndc�{
������c���cWcW����cWM�`������db����������M���M���M�����M�M�{�������M�M�����M���M���M�M���M���M�����M�[M�M���M�����M���M�M�����M��M�M����
M���M�M��M��M��M���	M�{�M��M�M���
�xvb������f��T��?��+��!�����N��NN;NQ��N�NN;N�N�N� NNQ��"�(�#�%�$NNN;N�&�'NNQ��)N�*NQ�NN�,�-�5�.�1N�/N�0NQ��2�3Q�NN�4NQ��6�<�7�:�8�9Q�N[�N�;NNQ��=N�>NQ�N�@�ANQ��B�S�C�L�D�J�E�G�FNQ�N�H�IQ�NNN;�KNQ�N�MN�N�Q�O�PNN;Q�N�RNNQ�Q�N�U�Y�V�X�WQ�Q�NNQ�N�Z�[�bN�\�]�a�^�_NQ��`Q�Q�NQ�N�cN�dNN�eNQ��g�v�hN�iN�jQ��k�o�lNQ��mN�nQ�N�p�rN�qNQ��s�tQ�NQ��uQ�N�w���x��Q��y�z�}N�{N�|NQ��~���Q�Q���Q�N��N��NQ�N��NN��NQ���N��N��N��NQ���Q�N��������Q�����Q���Q���Q�Q���Q�NQ�������������N��Q�����Q�N��NQ�N��N��������Q�N��NQ�NNQ�������N��N��NQ�N��N��������Q�N��NQ�NNQ���������NQ�N����N��N��N��NN��NQ�Q�����NNQ�`���dc������������
�����������������������azu�������NN��N����NN����NN����N��NOqNazg_g_���K������rg_azg_��dd��d��d����d��d��dd������d��d����dd�N������d����do�m�q���d��d�oddb�������N��M����M�g������N����q~��`�������PfPu���iq~����������d]�d]d]x����b���b��	dnWp�������
�{���M�M���M�M��M��M��M���M��M�M���M�M��M�h��e��:��,�M�� M�M��!M��"M��#�$�(�%M�M��&M��'M�hM��)�*M�M��+M�hM��-�.M��/M�M��0�1�6M��2�3M��4M�M��5M�h�7M��8M��9M�M�h�;�L�<M��=M��>M�M��?M��@�A�E�BM�M��Ch�DM�h�FM��G�I�HM�M�h�J�KhM�hM��M�^�N�VM��OM��P�QM��RM�M��SM��T�UM�M�hM��Wh�X�YM�M��ZM��[�\M�M��][M��_M��`M�M��aM��bM��cM��dM���f�p�gM��hM��iM�M��jM��kM��l�mM�M��n�oM�hM�M��q�rM�M��sM��t�uM�M��vM��wM��xM��yM��z��M��|���}M��~M��M���M�����M�����������������#��M�{��0[���0{���������{���v��M�vM���M���M���M���M���M�M�����M�[M�������M�M���M�����M���M������������[��P�v�������M���h��M�M���M�����M���M���M�M���M���M���M�M�����hM�����M�M�������M���M�����M��"M���M���M���M�M��"���r���<�������M���M�������M�����M���M���M�M�����M�M�����M�M�����M�M�����M���M���M���M�M�h��M�����������������M���M���M���M���M���M��M���M�����M�M���M���M�hM���M���M�����M���M���M�M���M���M���M�����M���M���M���M���M�M�����M�M�M���M��������M���M�M���M�M��vM���	M��M���M�M���M�M��
M��M���
M�M�h��!��M���M��M��M��M��M��M�M��M��M�hM���M��M�M���M�M�� ��M��"�3�#M��$�+�%M�M��&�'M�M��(�)M��*M�M�P��,M�M��-M��.�/M��0M�M��1�2M�M��"�4M��5M�M��6M��7�8M��9M��:M��;M�hM��=�H�>M�M��?M��@�AM��BM�M��C�DM��EM��FM��GM�hM��I�p�J�\�K�T�LM�M��M�NM��OM��PM��QM�M��R�SM�M���UM��VM��WM�M��XM��YM��ZM��[[M�M��]�^�c�_M�M��`M��aM��bM�h�d�jM��eM��fM��gM��h�iM�M�P�M��k�lM�M��mM��nM��oM���qM�M�hM��s�t���uM��v���wM�M��x�y�}�zM��{�|P�M�M��M��~M����M�{�M���M�M�����������M�����v��M���M�M�����M�������P����P�vP����M���M���M�P�[������M�����M��M��������M�M�����M�M�������M���M�����M�M���P�M���M��M�M���M���M�������M��0��M���{�M�{���������g4��d��aNM���L��b�d�b�M���������t���������lMp���cWc�aN��`�����������������kuL�m���g4p�������NLg_b�d{��������d{��`�li֥b���c�b�ku������������b��Fb�d{����aNgQb�����������`�gns8q������Ey�c�Q���������b�d{b���d$d{������c�L�Lb�nWN��NM����I�������*������������������������d`�`����������Oc��OcVp���Oc������N�N���N�NNN�NNP���-�	�+�
N�����
��NP�NN��N��P�P�NP�N��"��!����N�N�NN�N�NN� NN�#�%N�$N�&�)�'N�(NNN�*N�,P�P�N�.��N�/�0���1���2�`�3�L�4�?�5�9N�6�7�8VpN;OcN�:�<�;P�OcQ��=�>NVpNVp�@�F�A�C�BOcN�D�EN;OcP����G�I�HP���N�J�KU�NNOc�M�Z�N�T�O�R�P�QVpOcNP��SVp^C�U�X�V�WQ�N;Q��YNNP��[�]�\P�Q�P��^NP��_P�N�a�j�b�fN�cN�dOc�eOc�gN�hN�iNN�k�t�l�nN�mP�N�o�r�p�qVpN;OcN�sP�OcQ��u�{�v�y�w�xNVpNVp�zOcN�|��}�~N;OcP�����P���N������������������������U�NNOc����VpNNP�������Vp^C����Q�N;Q���N������NNP�Q�NN����N����Oc��Oc��NNN��N��N��N������NOcP�N��NN����NNP�����������NN��P�N��N����N����NN����N��NP�N��N��NN��N����NNOcOc��������NN����NN����NP�N����NP���P�N��P�N����M����d��o�������dP�dd��dP�MnW������dL�xv��c�NL�MN�������������������������NazN����azN����azN��NazN��NN����NNazN��N����N����NazazN��N��N��N��NN��azN�����NM�����
������Lm�dN����	g&��l�l�l�l�l�ll�llP�P���Me��
���cWM�b�ak��p�d$����Nc�b���������3��&�M�MM��MM��M� MM�!M�"M�#M�$�%MM�;�'�/M�(�)�,�*�+M�;�;M�-�.O�MO�M�0MM�1�2MO�M�4M�5�s�6�B�7�>�8M�9MM�:�;M�<M�=MM�;M�?�@M�AM�;M�C�l�D�f�E�T�F�M�G�J�HM�I�;�;M�K�L�;M�;M�N�QM�O�P�;M�;�RM�SM�;M�U�]�V�Z�W�X�;M�;�YM�;�[MM�\�;M�^�a�_M�`MM�;�b�dM�c�;M�eM�;MM�g�hMM�iM�j�k�;M�;�mMM�n�oM�pM�qM�rMM�;M�t�u�M�vM�w�x�;M�yM�zM�{�|M�}MM�~�;MM������M�;�������������;���;M��MM�;���;�;M������������M�;�;MM���;M�������;M�;���;M�;������MM����M��MM���;M������M��M������M��MO���O���O���O���O���O���O����;O�M����M��MM��M��M��M~M����MM����M����M����MM��M��M�M��������MM��M��M��M���;M��M��MM����M��MM�;�aN����M�����������dq���do���d��������dq�q���q�d������dd��q���q�dq���q�����q�dq����)���$��������g4������MM����M��MM����M��M��MM�;M��������������MM����MM����M��M��MM�;M��M���MM�M��MM��;M��M�M��	MM�
M�;�MM�
M�M�M�y�M�MM�M��;MN�M��b�b��b��b��b��b��b��b��b�� �!b��"b��#b�b�b��%�'�&b�xvd�(c�nWdp�d�+�h�,�?�-�8d�.�/�6�0Md�1�2N�3N�4NN�5NP��7N|�p��9L�d�:�;d�<dd�=d�>�Zd�@�K�A�H�B�E�C�Db�nWc�p��F�Gb�Np�b��I`��Jt�QM�L�c�M�H�H�N�O�V�H�P�H�Q�R�T�H�S�HQ�U�HQ�H�H�W�X�H�H�Y�Z�H�H�[�H�\�H�]�H�^�H�_�H�`�a�H�H�b�HQL�d�eLL�fL�g��L�i���jd�k���l���m�ne�b�b��o�p�y�J�q�J�r�s�J�J�t�u�J�v�J�J�w�x�J�Jq��J�z�{�J�|�J�J�}�J�~��J���J�J���J���o�J����c�db�j�d��d��d����d��d��dd��dBf��d��dd��d��d����dd����dd����d��o�o���o���o���o�d������������L���|�N��������L��M��Maz����b�Np�q~NcW����������������xvj�����M�j*db�������tyd`���t���j�M��M����Md��ML�`���cW����M��d��dd����d��dd��d����dd����dd����d��dd���LM��������M�X���Mb�`����E������������������akb�p�����dj�nWd��N��xv`�b�g4����N��N��NVpN����������;�;���;���;�����;���;�;���;�J������M�c�b�����dc���M�M�����M���M���M�M���M�����M���M��M�M�{���D��3��
����M�b�Mb��	��
�c�L�dL�b�g_��-b���b���#d{���d{��d{�d{�d{d{�d{�d{�d{}�d{��d{d{�d{�� d{�!d{d{�"d{}��$d{�%d{d{�&�'d{�(d{d{�)�*d{�+d{d{�,}�d{�.�2�/c��0�1Mg�פdakd{�4�<�5�8b��6c��7{
b��9�;d{�:e�`�Q'cW�=�?b��>c�M��@�Ac�xvN�B�CaNt1aNb�p�N�F�G�HNMMN�J���K���L���M���NN�O���P�s�Q�r�Rb��S�a�T��U�Z��V�W���X��Y�;���[�\��]���^�_���`�;���b�c�m��d�e�j��f��g�h���i��;��k��l�M�n���o�p���q��;t�az�t���u���v�{�w�z�xak�yMMO�lxL��|�}L�`��~L����Q6d"Km;��������aNN������b��Zb�����h�gngn������q��Z��H:����Mg�g�Mdb��������iML���L�{
+���0`���������g_d��M����M��Mq�M��j���p�����������M��N+Q����N+��N+��N+��N+N+��N+����N+��N+N+��N+��NN+������������"�QE^�����QS-?���������QbQqQ�Q�����Q�Q�Q�Q�������cW�������X�����������N����N����N����NN��N��N����N��NN��P}N��N��NN����N��N��N��NN��P}N��������N����N��NN��N������N����NN��OqN��N��NN��OqNN��NQ�N��N��N��N��N��N��N��N��NOTN����NN����Q���N��NN����N�NN�NQ���@��4�� ���N�N�	N�
N��N�N�
N�N�N�NNN���NR�N��������NNR�NR�R���R�R�NN�N�R�N�!N�"�-N�#�$�)�%N�&NN�'N�(Q�NN�*�+NN�,NQ��.NN�/N�0Q��1�2N�3NNQ�N�5N�6N�7N�8N�9�:NN�;N�<N�=�>N�?NNN�A�B�O�CN�DN�EN�F�K�GN�HN�INN�JN;NN�L�MNN�NNN;N�P�QN�RNN�SN�T�UNN�VN�WNW��Y�p�Z�g�[_��\_�_��]_��^�__�_��`_��a_��b_��c�d_��e_�_��fTF_�_��h�i_��j_�_��k_��l�m_��n_�_��oN_��q���r�y�s_��t_�_��u_��v�w_�_��x]R_�_��z�{_��|��_��}�~_��_�����_���_�YY_���_�����������_���_�_�W�����_���_���_�W�����W���_�W���_�W�_���_�_���_�����_�_�W���_���_�_�����_�_���_���_���_���_�����_���_�_���Q�_�������q~��M�Lxv��b�L�d����������������p��������������������^Cՙx�����Q�h!��V����������b���M���M�{��0�lL�����`�m�dc�������������t�azNd{�����xvg�s8��������Mؒc�Q�����Q�iM@MNcW����akdLxv������g_`�t���m�Q�b�dN�����������6����������������;���;��d�;�;���;���;�o�;�����;���;q��;�;���������;���;�������;�;d���;�;�����;�;���;�����;���;�����;���;~���;�;~����;��;��;�;M��;�;��;���;�	�;�
�;��;��;�
�;��;��;�;����nW�xN;�xv�����*�M�M��M����M��M��M��M��M��� �%�!M���"M��#�$M�M���&M��'M�M��(�)M��M��+M��,M�M��-�.M��/M��0M��1M�M��2�3M��4M��5M�M���7`��8�p�9�b�:L��;L�L��<�=�XL��>�?�P�@L�L��A�B�GL��CL��DL��E�FL��L��H�L�IL��JL��KL��L��ML��NL��OL�L���QL��RL�L��SL��T�UL�L��V�WL��L�L��Y�ZL�L��[�\L�L��]L��^L��_�`L��aL�L���cL��dL��eL�L��fL��gL��h�iL��jL�L��kL��lL��mL��n�oL�L���qL��r��sL�L��t�uL�L��v�wL��xii�yi�z�{ii�|i�}i�~iL�����L�����L�L�����L���L�L���L���L���L�����L�L����L���L�L�����L�L�����L���L���L�L�����L�L���L���@L�����������������`�j*NL�����Ng4li��b�����g_m�L�d�H���
���	�����������Nd{��p�����g&����ll��l��l����ll����l��ll��l��lc�l������l��l��l����ll��l����l��ll��lg&������gg��g������g��g����gg���g��g�������������gg���g�gg����g�gڈl������dM����MM��M����M��M��M����������MM����M��M��MM����M��MM����MM����Mg�Md����Q����N����N��N��NN����NN��N��N���NNQ��Q��NNQ����t�L�d�l��b�g4`��i�����
���db�`�iM����M������p��@��-��$�cW�� ���cW�cW�cWcWQ�cW�Q�cW�!�"cWQ�cW�#Q�cW�%�'cW�&cWQ��(�+�)cWcW�*cWQ��,cWcWQ��.�8�/�3Q��0�1cW�2cWQ�cWcW�4�5�6cWQ��7cWcWQ��9�;cW�:Q�cWcW�<�=Q��>cW�?Q�Q�cW�A�XcW�B�C�LcW�D�E�H�FcW�GQ�Q�cWcW�I�J�KQ�cWQ�cW�M�R�N�PQ��OQ�cWcW�QcWQ��ScW�T�V�UcWQ�cWcW�WQ�cW�Y�g�Z�`cW�[�\cWcW�]�^�_cWQ�Q�cW�a�dQ��bQ��ccWQ�cW�e�fcWcWQ��h�lcW�i�jcWcW�kcWQ��mcW�ncW�ocWQ�cW�qcW�r�~cW�s�t�|cW�u�v�y�wQ��xQ�cWQ�cW�zQ��{Q�cW�}Q�cWQ��cW����cW��Q���cWQ�����cW��cWQ�cWQ���������������cW��cW����������cWQ�cWcWQ�cW����cWQ�cW��Q�cW��cW����cW��cWcWQ�����Q���������������Q��cWQ�������Q���cW��cW��cWQ�cW����cWQ�cWQ�|�p�������`���d{dM����ak`�N��������d��d����OEYOTNdN�������������dd����d��dd��d��d����dd��d��d����d��dd��d��d��d��Bfd����e�����������waz���gQ���w������azazgQaz��waz������az��az��azubaz������lb�i���z�Mb����
���	M����c���Mg_������������������Q�gC�e����NakQ�b�������b�d]tyrX��lxrX�����������leb�gn��OTNLM�����*�M`�d{��ؒ��c�`�Ag_p��NM�
�)���aN������{
�_p�����xv���g4cWL����L�`��nWb��p��M� �(�!�%�"�#d{L��$c�c�M�&d�'xv�6b�dM��*�4�+�2�,�-c�p��.�0�/g4ty`��1Mb�nWN�3N�M�5�6MM�7�8MM�9�:M�;M�<M�=MM�>�O�?�O�@M�O�B�|�C�Gaz�D�Eaz�Fazv�az�H�]az�Iaz�Jaz�K�Laz�Mazaz�Naz�Oaz�Paz�Qaz�R�Saz�Taz�Uaz�Vaz�Waz�Xazaz�Yaz�Z�[az�\azazv��^�t�_�iaz�`az�aaz�b�caz�dazaz�eaz�f�gaz�hazaz��jazaz�k�laz�maz�naz�oaz�paz�qaz�raz�sazaz�1�uaz�vazaz�waz�x�yaz�zaz�{azQ�az�}���~�[����������az��������azaz��az����azaz����az��az��azaz��az����az��az��azaz��az��gCazaz��az��az��az�����az��az��az����azaz��az��az����azazv�����az����az��az��azaz��az����az��az��azaz����azaz��az��az����azaz@��������|az��az��azazM����az����az������az��azv�az��azaz��az|az��az�������az��az��azaz��az��az���raz����������az��az��az��az��H:��H:��H:�H:������azaz��������az����azR�az������azaz�����������azb�v�����u�b�azv�az����az��az��az��azaz����azazgC���������az��az��az��������d��b�#��b�rb�����c���c�dd#�azaz��az�|�|�||��|�|�	||�
�|�||�
|��azaz�����'�'��'���R�'�'R(��'���'��'��'R(��'�'�R(�'� �P�!�0az�"az�#�$azaz�%�&azaz�'�(azaz�)�*azaz�+�,azaz�-�.azaz�/gCazaz�1�2azaz�3�4az�5az�6azaz�7�8�?�9azaz�:az�;az�<az�=�>azt�az�@az�A�Faz�Baz�Caz�D�Eazv�az�G�Laz�H�I�Kaz�Jv�azv�azaz�Maz�N�Oazazv�az�Q�Razaz�Saz�T�Uazaz�V�Waz�Xaz�Yaz�Zazv�az�\���]���^�+�_��`���a���b�v�caz�d�p�eaz�fazaz�g�haz�iaz�jaz�kaz�laz�maz�naz�oaz�az�qaz�raz�saz�tazaz�u�Kaz�wazaz�x�y���zazaz�{az�|�}azaz�~�az��azaz����azaz��baz����az����azaz��az��az��az����az��azaz��v�azaz��az����azaz��az��azv���az������azaz��az����azjazaz����az��az��azaz����az��azaz��v�az��������������w�������w���w���az��w���w�w���w���w�az������w�az��azw�����w�azw�����w���w�w�az��������w�����w���w�w���az��������w�w�azw�az��w�w�����w�w�az����w�����w���w���w���w�w���az��w�az��w���������w���w���azw�w�����w�������w�w�����w�w���gQw�����w�azazw�azw���azaz����azaz��az����az��az��az��az��azaz����az��az�az��az��az��az��azaz��az����az��az��azaz����az�azaz��azazv���az����azaz�az�	az�
�azaz��
az�azaz��az�azaz��az�Kaz�az�az�az�azaz��azazv��az�az�az�az� az�!az�"az�#az�$azaz�%�&az�'azaz�(�)az�*azaz�M�,���-�?�.az�/az�0az�1azaz�2az�3�4az�5az�6az�7az�8�:�9azazv�az�;�<az�=az�>az��az�@�Waz�Aaz�B�C�K�Daz�Eazaz�Faz�G�Haz�Iaz�Jazazjaz�Laz�M�Nazaz�Oaz�P�Qaz�Raz�Sazaz�Taz�U�Vazaz�X�qaz�Yaz�Z�[�f�\az�]az�^az�_azaz�`�aaz�baz�cazaz�d�eazJ��az�g�haz�iaz�jazaz�kaz�l�mazaz�naz�o�pazubaz�r�az�s�taz�uaz�vazaz�w�xaz�yazaz�z�{az�|az�}az�~azazw*��azaz��az��az��az����azaz��az����az��az��az��azazw������azaz��az����az��az��az��azaz����az��azaz����azaz����az��azt�az����az��az����az��azaz��az����azazv�az������az�����az��az����azaz��az��az����az��az��azaz����az��az��az��azaz��az����az��az��az��az��az��az�?az���O���������������az����azaz��az����az����azv�az����az��az��az��azaz����azR7az������azaz����az��az��az��az��az��az��az��azaz����az�^azaz����az��az��az��az��az��az��azaz��v�az��azaz����azaz����az�az���az��az��az����azaz����az��az��az��azaz����az�az�az�az{�az�az�azaz�az�az�az�	�
az�az�azaz�
�az�azaz�az��az��<�� �azaz�az�az��az�az�az�az�az�az�azv�azaz�!�"�/�#azaz�$�%azaz�&az�'az�(�)az�*v�v��+�,v��-v��.v�a�v�az�0az�1�2az�3azaz�4az�5az�6�7azaz�8�9az�:az�;az��az�=az�>az�?az�@�L�Aaz�Bazaz�C�Daz�Eaz�Faz�Gazaz�Haz�I�Jaz�Kaz<az�Maz�Nazaz��P�o�Q�a�Raz�Sazaz�Taz�U�Vaz�Waz�Xaz�Yaz�Zaz�[az�\azaz�]az�^�_azaz�`az�i�b�iaz�c�daz�eaz�fazaz�g�hazazv��jazaz�k�lazaz�maz�n�az�p��az�qaz�raz�s�taz�uazaz�vaz�waz�xaz�y�zaz�{azaz�|�}azaz�~az�azw�az����az��azaz��az��az����azaz���azb�az����az������������az����az��az����az��az��az��azaz��azu�az����az��azaz��az����azaz�az��az��az��az����az��azaz����azaz��gQaz�������w�������az������az����az����az������az����azaz��az����azaz��az��wazaz��az������az��az��wazaz����az��azaz��waz��az��az��az��az��az��az��azaz����azwazaz����az��az��az��azaz����az��azaz����az��az��azaz~��az�������az��az����az��azaz��az��az��az����azazv�������az��az��az��azazt�������az��az��az��azaz��az����azaz��az��waz��az��az��az�az�az�az�az�azaz�waz��az�az�	�
az�azaz�az�
az�waz�az�az�az�azaz�az�az��azaz��azaz�waz��h��>��3az�� az�!az�"az�#�+az�$az�%�&az�'azaz�(az�)�*azwaz�,azaz�-�.azaz�/�0az�1azaz�2wazaz�4az�5az�6�7azaz�8�9az�:az�;�<az�w�=azaz�w�?az�@�L�Aaz�Bazaz�C�Dazaz�Eaz�Faz�Gaz�H�Iaz�Jazaz�Kwaz�M�]�N�P�Oazaz�Kaz�Q�Razaz�S�Taz�Uaz�Vaz�Waz�X�[�Y�Zazwwaz�\azwaz�^azaz�_az�`�aaz�bazaz�c�daz�eazaz�f�gaz��azaz�iaz�j�kazaz�laz�m�nazaz�oaz�paz�q�raz�saz�taz�uazaz�vwaz�x���y���z���{az�|��az�}az�~az�az��������az��azaz��azgQaz��az����az��azaz��az��b�az��az��az��azaz����az��azaz����az��az������az������az��azaz��az����az��azaz��gQaz����az��az���azaz������������az��az��azaz����azaz��az����azaz��az��az����azt�az����az��az��az��az��v�az������az��az��az��kXkX����kXkX����kX��kXwkX��������az��az��az��az��az��az��b�azaz����azaz����azaz����az��azazv�az����azaz��az��az����azaz��az��azv���az��az��azaz��az����az��az��azaz��az��az��az��az��azkX���������az��az��az��az��az��az��azaz��az��azwaz����azaz��az����azaz��az�azaz�az���gCazgCaz����	���
�Z��5���
azaz���az���az�az��az�azaz�az�waz�azaz�az�az�gCwazw�azaz� �!�/�"az�#�(az�$�%az�&az�'azazw�)az�*az�+az�,azaz�-az�.waz�0az�1azaz�2�3az�4azv�az�6�B�7azaz�8�9az�:az�;az�<az�=az�>az�?az�@azaz�A�az�C�R�D�Laz�E�Faz�Gazaz�H�Iaz�Jaz�Kazazv�az�M�Nazaz�O�Paz�Qazaz���Saz�Tazaz�U�Vazaz�W�Xazaz�Yv�az�[�d�\azaz�]�^azaz�_�`az�aaz�baz�cazazv��e�iaz�f�gaz�hazwq���j���kaz�l���m��az�n�o�u�paz�qaz�razaz�saz�twaz�v�|az�waz�xaz�y�z�{azv�v�az�}az�~az�azazw��az��az��az��az��azaz��az���az��azaz��az����az��az��azt�az����az������az����azaz��gCaz��az����az��azt�az����az��az����az��azkXkXaz��az������az��az�azaz��az��waz����������az��az��az����w���jazaz��az�����������wwu��1����v�t�v�m��������az����azaz��w�azaz����az��azb�gCaz��az����az����v�wFv�������az��������az��azaz��az��v�az������az��azaz��azv�����az����azazv���azaz��azv�������az����az��������azb�az��azb�azaz��az����azazw��azaz����az��az��az��az������az��azazwwaz���k���P�����azaz����azaz����az��az�az�az�azaz���	az�az��azaz�v�az�
azaz�az��
azgCaz��0��"az��azaz�az�az��az�azaz�az����azaz�azw�� az�azgCaz�!gCaz�#azaz�$az�%�&azaz�'�(az�)az�*az�+az�,az�-azaz�.az�/gCaz�1�Aaz�2az�3az�4az�5�6az�7az�8az�9azb��:�;�>�<b�b��=b�kX�?b��@b�kXgQaz�Baz�C�Dazaz�E�Faz�Gazaz�Haz�I�J�Naz�K�Laz�Maz��azaz�Ob�az�Qazaz�R�S�[az�Taz�Uaz�Vaz�W�Xaz�Yaz�ZazgCazaz�\�]az�^azaz�_az�`�aazaz�baz�caz�daz�e�fazaz�g�haz�iazaz�j�az�l���m�waz�naz�oaz�p�qazaz�raz�s�tazaz�uaz�v�1az�x��az�y�z���{���|��az�}�~����az�&az��az��az�az�����������az��azaz�az��az����azaz����az��������azazw�RFazaz����azaz����azaz����azv�az������������az����az��������az��������az�1t�az��azb�������������wb�b���������&F��
��az��azazw�����������������azRT<azaz����az��az����az�az��������az����j�az�4az��az��az�az��az������������azubv�gC��gCazaz��gQb���az��d��azaz������v���az�^az���azaz��az����az��g4������������Q�VpP}OE����OTN;OTOE����������OT��OT��OTOT����OTOTQ�OTVp������P}����OT��OT����Q�OT��OT����OTOTQ���OT��OTOT��OTQ�N;Vp��az���az��az�azaz�az�az�az��azaz��	azaz�
az�az��
azaz�az�@az��E��6��'az�az���"|���!v���B��B��B��B��B��B��B� gC�BgQaz�#�%��$,�%�&`��%`�az�(|�)|�*�+|�,|�-|�.�3|�/|�0|�1|�2�|�4|�5|�|�7az�8�;az�9�:azjaz�<�A�=�>v�azaz�?�@azazjaz�Baz�C�Dazazj�F�Qaz�Gaz�Haz�I�J�Maz�K�LazazM��N�Paz�OLazazt��Raz�Sazaz�Taz�Uaz�Vaz�W�az�Y�g�Z��[�6�\��]���^���_���`���a���b�<�c��az�d�e���f�u�g�n�h�maz�i�jaz�kaz�lazazwc|az�oazaz�p�qazaz�r�saz�tu�gCaz�v��az�w�x�az�yaz�z�{�}az�|�1az�~azaz�1az��az����azaz��az����azaz����az��az��az��azaz��w�azaz|����az��az����az|az������azaz��az|����|az������az��azaz��az�?az����@��@az@������azaz��az��az��az������az��az��az��az������az������v�w����������azaz������v�w����������az����az��az��az������az������v�w����������azaz������v�w����������az����az��az������az������v�w����������azaz������v�w����������azaz��az������az������v�w����������azaz������v�w����������az���3��az���az��������az����������gCw�gCkX��az����az����w�azv�wUaz����azaz��az����az��az���azaz��azaz�az�az��azaz�az�	�
az�az�az�
az����az���az�azgQ��gCwUt�u��az����v�mmt���w�w�jaz��,� �%�!�#az�"azt�az�$azb��&�)�'�(gCkX�b��*�+v�wkXv��-az�.�1�/�0w�gCubb��2azu�azaz�4�5�:�6�8az�7Ae|�9az|az�;az|az�=���>���?�g�@�]�A�[�B�Y�C�L�D�G�E�Fv�azazv��H�Iv�az�Jaz�Kazv�az�M�S�N�P�Oazv�azv��Qaz�Razv�az�T�U�W�Vazv�az�Xazazv�az�Zaz@az�\t�az�^az�_azaz�`az�av��bv��c�dv�v��e�fv�v�az�haz�i�kaz�j|az�l�z�m|�naz�oaz�pazaz�q�raz�saz�taz�uaz�vaz�waz�xazaz�yazwU�{azaz�|�}azaz�~az�az��az��az��gCaz��azaz��az����azaz��az��az|��������az������az��az����azaz��az|��azaz|����az��|azaz����azaz��az������az��az������az����������������az��az��nW��nW��nW��nW��nW��nWnW����nW��nW��nW��nW��nW)(nW��������.�az@azaz����az|az������az��azaz���az��az������|����az������azmgCm��az����t�gQb�azaz����azaz������azgCu�azaz����az��az������az����az����azkX���azaz��azv�������azaz����azaz����v�az��v���v���v���v�����v�v�azaz��az��az��azkX�������]���7����������az���1az����azaz����az��az|az��az@&az��az�����	����|�����|�||�6��|��
���|��
||��||�|��|�||�|�|�|�|���1|�������'������ �!��"��#���$�%���&|���(�)��*���+��,�-���.��/��0�|�2�5��3��4�||�6|��8�=az�9�:az�;azaz�<��az�>�D�?azaz�@az�A�BazM�CMaz�E�Raz�Faz�G�Haz�I�N�J�L�Kazazv�w�Mwaz�Oaz�P�Qazv�gQaz�S�Taz|az�U�Vazaz�W�X�Z�Yazazd�[�\dt�m�az�^���_���`az�a�m�b�i�caz�daz�e�faz|�gaz�hazazgCaz�j�kazaz�lazv��n�{�o�zaz�p�q�ub��r�s�tw�b�azb��v�xb��wazb��yb�azb�az|�|�}@az�~|�azaz��az����az��az��azaz��az����az��az��azazb�����az����|��azaz��|az����i�����������������ln�l����ն�����ln�lc�������g&��g&g&���g&����i���i���i�����i���i���i���i���i���i���i���i���i���i��i�az��az������az����azv�az����az����azaz��azv���az��azaz��azv�����az������i@az��azaz����azaz������az��az|��azaz|������az|��az����azaz��az��gCaz������az��az��az��az��azaz����azaz����azaz��az����azaz��azv���az��az��az��az��az��azaz����az��az��az��az��azaz����azazw������������az����az@az��azaz����az��azaz|��az��az��
���azaz��azaz��azaz|�azaz�	�
az�az�azazgC�azaz��az�azaz��Mg�M��5��$�� az���|@&�|az��az�azaz�az|�!azaz�"az�#az��%�)�&az�'azaz�(|azaz�*�+�2�,||�-�.|�/|�0|�1||��3az�4e�|azaz�6�7��8�P�9�N�:�B�;�<azv��=�?�>v�azv�v��@v��Aazv��C�E�Dv�azv�v��Fv��G�Hv��Iv�v��J�Kv��Lv�v��Mv�azv��Oazv�az�Q�R�z�S�maz�Taz�U�Vaz�Waz�XkX�Y�g�ZkX�[�a�\kX�]�_�^kXkX��`kX�kXkX�b�c�e�dkXkX��fkX�kXkX�h�ikX�jkXkX�k�lkX�kXaz�n�oazaz�paz�q�raz�sazaz�taz�uaz�v�waz�x�yu�azazu�az�{�|azaz�}az�~az���azaz@&���G�������8����������������az��az������az��az����azv�az����������az��az��azaz������������&���������
��������gCazu�gCaz������|az��az��az@az���az��t�����az��������az��azazv���az���az����������������az��������az����az����������az��az������az�����T|��az��az|azaz��|��|az���&������	����az����az��azaz����az@azaz��������az��az��azaz��������������az��gQazaz��azv���az����gQt�gCt���������az��t�azaz��gQazaz������azv�azv���az������az��az����az����az����v�azv�azaz��az����azv�az��az����az�azaz��azv�azaz�az�az��azv�azaz�
�az|�az�
az�az�azw��az���az�az�az�azaz�jb��az|��|�||��||�|� �!||�"�#|�$|�%�|�az�'az�(�)�6�*az�+az�,azaz�-az�.v��/�0�2�1v�v�az�3v�v��4�5v�azv�az�7az|�9�V�:�E�;azaz�<az�=�>|�?az�@�Aaz|az�B�C�Db�azazu��Faz�G�O�Haz�Iaz�Jazaz�Kaz�L�Mazaz�Nwaz�Pazaz�Q�Raz�Saz�Taz�Uv�azv��W���X���Y�|�Z�o�[�i�\�aw��]w��^�_�`w�w�w�w��b�g�c�ew��dw�w��fw�w�w��hw�w�w��j�mw��k�lw�w�w�w��nw����p�y�q�t�r���s���az�u�x�vaz�wazw�azw����z�{j��w�w��}���~���j��j����w�j��w�w�j������������w�����az����������w�azw�����az��w�azw���w�az�az����������azaz����azaz����azazv���azaz��H azaz��az��az����������az��azwU��azv�az��az��azaz��v�kX����az������az����az��az��|az��az����azjaz������������az��az����az��az��az��az��az��azv�azaz����azaz��az��v�����az��az��azv�����az��az��az��azv�az����az��az����azaz����azaz����az��az��az��az��azw�az������azaz����az��az��azaz����azaz��azkXaz����az��az������v���az����v���v�az��azaz��v�azazv���|az|���������az��az��az����azv�����v�v��v���v��v�v���v��v�w�v����	az�
az�az��az�
@az�az�az�az�azaz�az�|��az�azazgQ��!az��azaz��� �az�azaz�|az�"�1�#az�$�+az�%az�&az�'��(�)�*az�az��,azaz�-�.azaz�/az�0|az�2�7az�3az�4�5az�6azgQaz�8�B�9�=az�:�;azaz�<azM�az�>az�?az�@gC�AazgC�Caz�Daz�Eazaz�F|az�H���I��J�v�K�N�Laz�Maz|��O�j�P�e�Q�W�R�V�S���T�U|�||���X�Y���Z��[�\���]�^��_���`��a��b�c��d�@��f��g|�h|�i�|��k�s�l�n�m||�|�o�p��q�|�r|��t��u||�az�waz�x�yu��z�}gQ�{�|gQgQgCgC�~gCgQ������az��az����v���t�v���mu�v�az��������������az��cW����az��az��azaz����azaz����az��az��azaz����az@azv���v���v�azaz|��azaz����azaz����v���v�����azv�azv����$��������������az��������������azaz|��az�'azaz��������azaz|��az����mgCt�v�����������az��|��azaz@����azi@|az��az��az|az��az��az��az��azaz��azu�|az����������azaz��az����az��az����az����az��az��az��azaz��w�az��az��az��az��az��azaz��az����azaz��w�az������azaz����azaz��az��az���azaz����azaz����az��az��az��az��azaz����az��azaz����az��azazj�������az�azaz|az�az|��!�� �az���	azaz�
az�az�az�
�azaz�az��v�az��v�v�az��6�6��6��6���6��6��6��6��6��6�6�Rb�6az|az�"�#az��|�%�4�&az�'az�(azaz�)�*�-az�+az�,H:F��.�1az�/az�0azF�H:�2�3azH:az�5���6���7�n�8�S�9�Caz�:az�;�<az�=azaz�>�?azaz�@�Aaz�Bazv�az�D�I�Eazaz�F�Gaz�Hazazv��Jazaz�Kaz�Laz�M�N�R�Oazv��Pv��Qv�azazv��T�^�Uazaz�Vaz�Waz�X�Yazaz�Z�[az�\az�]azazv��_�haz�`az�a�baz�cazaz�daz�eaz�f�gazv�az�iaz�jaz�k�lv�azaz�mazv��oaz�p�{�qaz�raz�saz�taz�uazv��vv��wv��x�yv�v��zv�azaz�|az�}�~���azaz��az����az��az��azazv���az��F�F���F���F���F���F�G���������az����azaz����az��azaz����azaz��azv�az����az��az��azaz��az����azaz��az��v�az��azaz��az����azaz��az����az��az��az��az��azazv�����az��az��L���L���L�����L�L����L�az��az��azF����T�������|������azaz����az������az������azaz����azaz��v�azaz����az��������azv�b�az��gQgQazaz����azaz|���i���$������azaz��az��az|���"������������M����M���;dM����M����MM����M��M��M��M��M��M��Mg�MM��M*�������������M�;�+M�;����MMg�M����M�o�J������M�������MddtO��MddM��	�J��Mg�M�
�
��Mdg�MM�;����d�y�M�M���M�M�����M�MM��g����MM�+� �!�q�M�;�#t�|az�%az�&�^�'az�(az�)az�*�;�+�1az�,az�-�.az�/azaz�0waz�2azaz�3�4azaz�5�6azaz�7az�8�9azaz�:t�az�<�Qaz�=�>�Laz�?�@�Faz�Aaz�Baz�Caz�Daz�Ev�az�Gaz�Hazaz�I�Jazaz�Kt�az�Maz�Nazaz�Oaz�Pt�az�Raz�S�V�Tazaz�Uwazaz�Waz�Xaz�Y�Zaz�[az�\azaz�]azw�_az�`azaz�a�baz�caz�daz�eaz�faz�gazaz�hazt��jaz�k�{�l�oaz�maz�naz|�paz�qaz�r�waz�saz�taz�uaz�v��w���x��y�zRp�Rp|az�}���~�����az����azaz����az������az��azaz��azv�az����azazv�az������az����azaz��az��az��az|az������az��az�Taz��az|az��az������az��az����azaz��az��az��az��azgQ��azaz��az��az����azaz����azaz����az��az��az��az��az��azaz��v�az������az��azaz��az����az��az��az��az��azaz����azjaz��������������az��������jv���azwUt�����az��v�gCazv�����az������|az�azaz��az����azaz|��az|������az����azaz����azaz��az����az��azaz���azazj�����������az��az��|azaz��az���az�����az��az��az����������azaz��az@����az��|azaz�az��az��v���v����v��v�v��v���v�v��v��azv���|�	az�
��az�az�
�azd]azaz��azaz�az|��az�az|�azaz��az�azaz|��%�az�az�az� �$az�!�"azaz�#azgQE�az�&�J�'�3�(�-az�)az�*az�+az�,azdaz�.az�/�0az�1�2azLazL��4�>az�5�6�:�7azaz�8az�9azL�az�;�<azaz�=|az�?�D�@azaz�A�Baz�Cazaz|�E�Haz�Faz�Gazdaz�Iazli�K�N�Lazaz�M|azaz�O�Pazaz�Qaz�Raz�Sw�az�U���V���W�a�Xaz�Yazaz�Z�[azaz�\az�]az�^az�_�`azaz��b���c�jaz�d�e�g�fazaz|�h�iaz||az�k���l��az�maz�n�o�z�p�v�q�saz�razv��t�uv�azazv��waz�x�yazv�v�azaz�{�|�~az�}azv��azv�az��az��azaz|��azaz��|azaz��az��������az����M����MM����M��MMg�M��M����MM��M��Mg�az����az����az��az��az��|az�g��az����azaz|��az������{���1������������������azaz��az��az����azaz��az����az��azazgCaz����azaz����azaz��az����azaz����az��azaz��w�az����az����az��az��azaz��az������az��azw�����w�az�az��az��az��azaz�Baz��az��az��az����azaz����azaz��az��w�az���
����az��az��az��az����az����az��az��az��az��waz��az��az��azazb����������azaz����az��az��azaz��az��v�az��azaz����azaz����az��azaz��az����azaz�gCaz�azaz��azaz�az��azaz��	az�
az�azaz�jaz��)��az�az��azaz��azaz��az�az�az�azaz�jazaz�az�az��az� az�!�%az�"az�#�$azkXazaz�&�'az�(azazgC�*az�+w�w��,w��-w��.w��/�0w�w�az�2�a�3�N�4az�5�Gaz�6az�7�8az�9�Aaz�:az�;az�<�=azaz�>az�?az�@w�azaz�B�Caz�Dazaz�E�Fazazw�az�Haz�Iaz�Jaz�K�Lazaz�M�
azaz�O�Pazaz�Qaz�R�Sazaz�T�U�\az�V�Waz�Xazaz�Y�Zazj�[jaz�]az�^az�_az�`azazgCaz�b�c�eaz�daz|az�f�g�vaz�h�iaz�j�paz�k�l�oaz�m�nazwazazww�qaz�r�s�tazw�uazwaz�waz�xazaz�yaz�zazw�|���}az�~���������az��az��az����azaz��az����az��az��az��azaz��v�az��azaz����azaz��az��az����azaz����azwcaz��azaz�������az��az������az�
az��azaz����azaz����az��azaz��az��az��gQazw�az������������az����azaz��az��az����az��az��az��azw�azaz����az��azaz��az��az��az��az��az����azazkX��az������������az����azaz����az����az��az��gQazaz��az��b�az��azaz��az��az����azaz��az��azgQ��azaz��az����az��azaz��gCaz������azaz��az����azaz����az��az��azaz��az��kXaz��azaz����az��azaz����azazj����az����azaz����az��az��azaz����azaz��az��az��azkX�azaz�az��azaz�az�az����d��"�	�az�
az�az��
az�az�azaz��azaz��az�az��azaz�az��az�w��w��w�w���w�w��w��� w��!w�gCw��#�I�$�8�%�0az�&�'mm�(m�)�*m�+m�,mm�-m�.m�/azmaz�1�2�
az�3�4az�5az�6az�7azazgQaz�9�:az�;�A�<az�=azaz�>az�?az�@kXaz�Baz�Caz�Dazaz�Eaz�F�Gazaz�Hazw��Jaz�K�Q�Laz�Mazaz�Naz�Oaz�Pazv��Raz�Saz�T�Zaz�U�Vazaz�Waz�Xaz�Yaz�az�[�\az�]azaz�^�_azaz�`�aaz�bazaz�cgCaz�e���f�paz�gaz�haz�iaz�jaz�kaz�l�mazaz�n�oazazv�az�q�r�{�sazaz�t�uaz�vaz�waz�xazaz�yaz�z�az�|az�}az�~azaz���azaz��az��az����az��azazt�����������az������w�w�����w���w�w���w���w���w���w�azj��j����j��j��j��j��jj��j��jt�����az����az��az��az����az����az��az��az��azt�azaz��az��az��az����azaz�����
��az����az����azaz����az��azazt�azgC��azaz��������az��azv�azaz����az��az��azaz��az��az����azaz��azgC������t��|�����������������������az����aNaz|��az��������azwu�az��az|HG��az��az��azaz����az��az��az��az����azb���az��az��azb�azaz��HG��HG��HG��HG��HG����HGHG����HG��HG��HGHG��HG��HG@������azHG�g|��|��|az���az���gQ���gQu�azb�b�az��
�Lc��	L|L�az��
azaz�M��az|��Z���b���|azaz��HGaz�|�dNR~��L�L��G�az�az� az�!az�"az�#�<�$�+az�%az�&�'�)�(azv�az�*azazj�,�5�-�0�.az�/azazw��1�3�2azaz���4azaz���6�9az�7�8azazb�:az�;azaz�4�=az�>az�?�D�@�B�Aazaz��Cazaz��Eaz�Fazaz�az�H�I�J|az�K��e��M|�N|�O|�P|�Q|�R|�S|�T|�U|�V|�W|�X|�Y||L|�[�m�\�^az�]gCaz�_�`gQazaz�a�bb��cb�b��db��e�fb�b��g�hb��ib�b��jb��kb��lgb�u��n�o�qaz�p|az�raz�saz|az�u���v��waz�xaz�yazaz�z�{az�|azaz�}�~wazw������azaz��az��az����az����az��az|az��|az��������az����������������azazgQ��azazgQ��������azt�azt���azazt�az��az����azazt�az��|az������azaz������az��w�azaz��az��gCaz|�����m�������������v�����������������v��wv�v�t���v�t���t�����t�v�v�w�������������1wqt�v�v�t����������1t�t�az����u�v�t���wv�az��������������w����wt�az��t�t�v���������az�1v�t�����v���t�v����������1t���t��Kt���v������wt�v��w������az����������������wt�t���t�v���wv�t���t���t���az������������u�v�t�v������1v�t�v�����t�����v�wv�����wt�wv��az��	���t���v�azazt�v��t��t�v��
�����
t�wt���K�����v�t�wv�w����u�u�v��1���wwqm�t�w��4��2�az��%� t�w�!�"�$w�#wqt�t�v��&�*t��'�(�)v�u�v�t��+�/�,�-t�v�w�.v�w�0�1v�t�wv��3azazw�5�K�6az�7�A�8�>�9�<�:v��;wv��1v��=t�v��?�@t�mv�t��Bv��C�G�D�F�1�Ewv�v�m�H�Iv��w�J�1wt��L�T�M�Nt�az�Ot��Paz�Q�S�Rv�t�v�v�w�U�a�V�]�W�Yv��Xt�v��Z�[v�t�t��\t�v�v��^v��_v��`�1v��b�g�c�dv��1�e�ft�wwv��h�l�i�jv�t��kt�t�v�t�v��n���oaz�paz�q�}�rv��s�y�t�wv��uv��vv�t��xv�v�t��z�|t��{wv�t�v��~�������az��t�v�t�����t���azt�az��wv�����b�����wu�v�����v���wt�w��t�v���������az��waz��az����������azv���az��t�az��t�����waz����azwt�az������������azwv�t�az��v���v�az��v���azazv�������azaz��az��az��az����azwaz��������az������az��v�v���az�wazaz��az��az��az��wt�������az��azaz��v�azaz����az��azv�az������������M����MM����M��MM��g�M����������MM��M����MM����Mg�M��M��M��MM��M����M��M��MM����MM��M��MO���MM��������M��Mg�M��M��MMO�az�����az��az����az��azaz������az��az�;��azg�az������	���|az|�|�||��|�
�|azaz|�
��az|��|az|�||�az|az�az��az|�|M��'az�az���#�azaz�� az�!���"t�Nazaz�$�%az|�&�az�(�Aaz�)�*�7�+az�,�5�-azaz�.�/az�0�2�1azazm�3�4wt�gQaz�6azaz|�8�:az�9|azaz�;�<azAe�=�>azaz�?az�@t�az�B���C���D�_az�E�F�P�G�Jaz�Haz�Iazj�K�N�L�MjgCgCb��Oazb�az�Q�X�R�U�S�Tazu�u�t��V�Wt�mmv��Y�\�Z�[v�v�v�azaz�]�^azv�az�`az�a�y�b�m�c�gaz�d�e�fwv�waz�h�k�i�j�1azkXwaz�lazv��n�s�o�q�pazv�u��razu�w�t�w�u�vgCazazu�az�xazv��z���{���|�~az�}v�u����u�azgCv�����az���w*����v�azazj������������azu�gQj����gQv�v�az����az��w�m��azt�az��������azM��azaz��az��az����az�waz��az|az������������|azaz��az����azaz��az��az��az����az��az��az��azaz��az��b�azaz��az|az��az��az����az��azaz|�������j����������azu�az��az����az����������az��az��az������������������������������������������������@cW����az��e���az����az��gCw��azmt�az����azaz����az��az��az��azaz��az��az����az��az��azaz��az��azu�����������.����az��az����az��azaz��gCazu���wubaz��az�������az|��|az���`��Maz�az���#��!��az��az�|�	�|�
�|�||�
���azaz��az�az���az�az|az�az�az�?��?���?�?���?��?�?�� �?R��?az�"�az�$�&|�%L�az�'�?�(|�)||�*�+�5�,|�-||�.|�/�0|�1|�2|�3|�4�|��6|�7|�8|�9||�:|�;|�<�=|�>�|��@�H�A�E|�B|�C�D��az�F�G|�|�|�I|�J�K||�L�|�Nazaz�O�Paz�Qaz�Razaz�S�Taz�Uaz�Vaz�Waz�Xazaz�Y�Zaz�[az�\az�]azaz�^�_azaz@�a�\�b���caz�d��az�e�f�v�g�q�h�l�i�k���j��R�R�R����m�n�p�oR���R�R����r�����s�t�u��R�R����w���x�}���y�z�{��R�R��|R����~�����������R�������R�R���������������������R�������R���R�����������az����az��������az��az����az����azaz����azaz��az��azv���azaz��az��az����azaz��v�azaz����azaz����azaz����az��azaz��az���1azaz����az��azaz���az��az��azaz����az��az��az��az��azaz����������az��u�azaz��azu�az��az��u�az������az������az���az���|�����]azaz�������az|��|�k������az����az����azv�az����gQwaz������v�azazv����A���(������������az��az��az��az��az����az��azaz����azazgQaz����az����v�az��azv���az��v�az��az��az��az��az��azv�az��������az��azaz�j��az��	j����jazjj�jaz�
�az�azj�
az�azjaz�azaz��azazjaz�az��az��"�����az���az��az���� ��!��az�#�%�$az�az�&az�'azaz��)azaz�*�+�9�,az�-�3az�.�/az�0azaz�1az�2v�azaz�4�5azaz�6az�7az�8azgCaz�:az�;�<az�=azaz�>�?az�@azgCaz�Baz�C�Oaz�Daz�Eaz�Faz�G�Haz�Iazaz�J�Kazaz�Laz�Maz�N�Kaz�Pazaz�Qaz�R�Saz�Taz�Uaz�V�Y�W�Xv�wt�v��Z�[mazwt�az�]�^azaz�_�`�i�aazaz�baz�caz�d�e�g|�f|azaz�h@azaz|�k���l�raz�m�nazaz�oaz�p�qazaz�T�s��az�taz�uaz�v�w���xaz�yaz�zaz�{�}az�|waz�~az���azb�azwaz��az|az����||��|����|��|��||��|����|��|��|��||����||��|����|B/|���e���,�������az��������azaz��|azaz|������az����������������az����azazg�az����azg�az������azaz��azg�az����azazg�������az��az����g�azg�az��az��az����g�azazg���������az��az����azg�azaz����az����azg�g�az��������az��az��azg�az����azg�azaz��������azazg�����azg�azg��������������azaz����azaz����az��azaz��az��az����azaz��az��azv�az��az��az��az��az���az��az��azaz������v�az������az��az��az��az��azaz����azv�azaz��az����az�azaz�az��azazv��az�M�M���M��	M�M��
M���M��
��M��M�M��M��0�M�M���M�M���az�az��%�az�az�azaz�az��azaz�az� �!az�"azaz�#az�$azb�az�&az�'�(az�)azaz�*�+azazwaz�-�.�L�/�����0�1�����2�3�?�4�����5���6���7���8���9���:���;�<���=�����>d���@���A���B�K���C�D���E���F�����G���H�I�����Jd����d�M�_�N�W�Oaz|�P�Qazaz�R�S�U�TazkXazaz�Vazu��X�^az�Yv��Zv��[v��\v��]v�az|az�`�b�aazb�az�caz�dazaz|�f���g���h�w�i�paz�j�kaz�lazaz�m�naz�oazaz���qazaz�r�s�uaz�taz���vazaz��az�x�y���zazaz�{az�|az�}�~az�azaz����az��az��az������azazw*��az��azaz��az��az��az����azaz����azaz����azjaz������azaz��az����azaz��az��az��az��az����azaz����azaz��v�az��az��az��az��azaz����az��az��az��az��az��azaz��az����az��az��azaz@����az��az����azaz��az����az��az��azaz��az����az��azaz��az��azv�az��az��az��az����az��az��az��az����az����azaz��az����azazmaz��az��az��az����azmaz�������m������az��az������azaz����azaz����azaz����az��az��az��az��azaz��az��az��az����az@az��az��az��az��azaz����az��azaz��az����az��azaz��az����azaz����az@az��?���az�az�az�azaz��azaz��	azv��
azv�az�az�
az��az����v��v���v��v��v��v��v��v�v����v�b�b�v�gCaz��+az� az�!�"az�#az�$az�%az�&az�'az�(azaz�)�*azazb�az�,�-az�.�7m�/�0az�1az�2azaz�3�4az�5azaz�6azm�8az�9azaz�:�;azaz�<az�=az�>azm�@az�A�_�B�O�Cazaz�Daz�E�Faz�Gaz�Haz�Iaz�Jaz�Kaz�Lazaz�M�Nazazv��Paz�Qaz�R�U�Saz�Tazv�azaz�Vaz�W�Xaz�Yazaz�Z�[az�\az�]az�^azazw�`azaz�aaz�baz�c�dazaz�e�fazaz�g�haz�iaz�jaz�kazaz�lb�az�n�~�o���p���q��az�raz�s�tazaz�uaz�v�waz�xazaz�y�zazaz�{�|azaz�}az�~�azaz����azv�az����az����azaz��az��az����az�azaz��������az��az��azaz��az����azaz����azaz�"��az��azaz����azaz����az��azaz����azaz����azaz����azv�az����������azaz������az��az��az��az����az��azaz����az��az��az��az��azazb���azaz����azaz����az��az��az��az��az��az��az��az��az��azaz��az����azaz��az��az��az��az����az��azaz����az��az��az�
az����az��az��az��az���azaz��az��az���az���^���+�������az����azaz����azaz��az����az��azaz��az����azaz��az��az��maz������az��azaz����azaz����az��azaz��az����azaz����az��azwUazaz��az��azaz�az�az��azaz�az��azaz�	�
azaz�kXaz�
��az�azaz��az�az�az�azaz��azaz�az��az�az�az��azaz��azaz�az� �!az�"azaz�#�$azaz�%az�&�'az�(azaz�)�*azaz�,�,�H�-az�.azaz�/�0�<�1azaz�2�3azaz�4�5az�6az�7azaz�8az�9�:az�;azt�az�=azaz�>�?az�@az�Aazaz�Baz�C�Dazaz�Eaz�F�Gaz��az�Iaz�J�X�Kaz�Lazaz�Maz�Naz�O�Paz�Qazaz�R�Saz�Tazaz�Uaz�V�Waz~azaz�Y�Zaz�[az�\azaz�]�az�_�s�`�c�aaz�baz�az�daz�eaz�faz�gaz�haz�iaz�jazaz�kaz�laz�maz�n�oaz�paz�qaz�raz��azaz�t�uaz�vaz�w���x���y��az�z�{��az�|�}���~az���az��azv���az��azazv�����������azv�azaz��v�az��azaz����azv�azaz����az����az��az��azv�����az��az��v�az��azazv�������az����az����az��azazv�az����az��az����azv�v�az����������������az��azv�az��az������azv�v�azaz��az����azazv���������az����azazv���azaz��v�azaz����������v�azv�az��azaz��azw�����������az����azv�az����azw�az������az��azazv�����az��v�az����v�azazv�����������az��azazj��azaz��az��v�az����az��azv���azaz��w�az���|���+���������������������azaz��azv�����v�azazv�az��v�az������az��azv�azaz������azv�azv�����azaz�az�v�az����	���w�v�azazv��
v�az�azv��
azaz�azv������az�azaz�v�az�az�azaz��azazv���%��"���azv�azv�� az�!v�az�#azaz�$azv��&az�'�)az�(azv�v��*v�az�,�Q�-�=�.�5�/�2az�0az�1v�azaz�3az�4v�azaz�6�7�:�8�9azv�azw��;�<v�jazv��>�K�?�E�@�C�Aazaz�Bv�azaz�Dazv��F�I�Gazv��Hazv�az�Jaz���Lazaz�M�N�P�Oaz�azv�az�R�i�S�\�T�Y�U�W�Vazv�azaz�Xv�az�Zazaz�[v�az�]�baz�^�_�`azv�az�aazv��c�e�dazazv��f�h�gazv�azazv��j�u�k�q�l�o�m�nazv�azv�az�pv�az�raz�sv��tazv�az�v�yaz�w�xazv�az�zazw��{v�azaz�}�~�������azaz������az��azv�azv�������az��az��azazv���az����azv�v�az������������az��az��w�azaz����az��azjaz��az��azaz��azv�az��������az��v�w�az����azv�����v�azv�az���Y�������������������az��az����azv�w�az��az����azazv�������az��azaz��v�az����az����azv���azv�az��az��v�az����az����������az��azv�az�
��azaz��jaz��������az��az��azv���������az��az��azv���azv�az��az������azaz����az��azazw���������az������az������v�azazv���azv�az����������azaz��azv�az��az��w�az��������v�az��azaz��v�az��azaz����azv�azaz�����az����az��azv�w��az�azazv���-�������azaz�	�
azj�azw��
azaz��az�azv�az�az�az�az��azv�azv���"��az��az�azazv��az�az� azaz�!azv��#�)az�$�%�'�&azazv��(azv�az�*azaz�+az�,azv��.�@�/�9az�0�1�4az�2az�3v�az�5�7az�6azv��8azv�az�:azaz�;�<�>az�=jaz�?azazv��A�O�B�K�C�F�Dazv��Eazv�az�G�H�Jaz�Iazv�azv�az�L�Maz�Nazv�az�Paz�Q�Taz�R�Sazv�az�U�W�Vazv�az�Xazazv��Z�c�[az�\az�]az�^azaz�_�`azaz�aaz�bazv�az�d�e�p�f�j�gaz�hazaz�iv�az�kaz�lazaz�m�naz�oazazv��q�vaz�r�sazaz�taz�uv�azaz�waz�x�y�|az�zaz�{azv��}azv�az�azaz������az����az����������������mv���m�1��m����v�m����v�������R����m����R�S	�m|azH:������az��az��az��azg���g�����g�az����g�azg�az������az��az��az��������az��az��az�4��az�����4azbazaz��az��az��az�4��az��az��az�'az����������azaz��az����azaz��az������az���az��az��azaz��az��Saz������az��az��az��azaz��az��az��az����azazRF��az������az��azaz����azaz����az��az��az��az��azaz����azazv���azaz����az��azaz���az���X��azaz�����Saz�����
������az��azaz��az����az��gCgC����gCgC��gC��gC��gC��gC��v�gCaz��az��az��az��az�azaz��az�az�azaz�az�az�	u�az�az��F�
���az�v�m��ubt�jaz��2���u�kX�az��azaz�az�az��azaz�azkX� �)�!azaz�"az�#�$az�%azaz�&�'az�(azgCaz�*azaz�+�,azaz�-�.azaz�/�0az�1azazwaz�3�4�=�5azaz�6�7azaz�8az�9�:azaz�;�<azazwb��>b��?�@b�b��Ab��Bb��C�Db�b��Eb�gC�Gaz�Haz�Iazaz�J�KgQaz�L�Mazaz�Naz�O�Paz�Qazaz�RgQazaz�Taz�Uaz�Vaz�Wazu��Y�t�Z�baz�[az�\�]azaz�^az�_�`az�aazaz��cazaz�daz�eaz�faz�g�haz�iazaz�j�kazaz�l�maz�naz�oaz�pazaz�qaz�r�sazazm�u��vaz�wazaz�x�yazaz�z�{az�|az�}az�~azSazaz��������azaz����azE��E��E����E��E��E��E��E��EE����EE��E
�������azaz����S%������������u�u�u�az��azazu�������azv�azazb�����az��@|az��|az�������m�����������S���������azaz������az����az��azaz���az��az��azaz����az��azaz���azaz��������az��az����az����az����az��v�v�v���gQazaz��az��az|����az��|az��az����������� ����az��������az��az��azaz��v�az��azaz��az����az��azazj�����������������azaz��w�az��az��azaz��v�az��az��azaz��azv�����������az��azazv�����az��v���azv�az��azv�����������v�v�azaz��azw�az��azv�az������	��v�azaz�jazaz�
�azazj�
��az�azv�az�azaz�azv������az�azv�azaz��azazv��az�azaz�az�w�az�!�^�"�A�#�0az�$�%�*�&az�'�(azv��)azv�az�+�-�,azazv��.azaz�/azv��1�9�2�6�3v��4�5azv�azv��7azaz�8v�az�:�;v�az�<�?�=�>azv�azv��@azazv��B�Q�C�K�D�Haz�E�Faz�Gazv�az�Iazaz�Jazv��Lazaz�M�N�Ow�azaz�Pazv��R�Y�S�V�Taz�Uazv�az�Wazaz�Xv�az�Z�]az�[az�\azv�v�az�_�qaz�`�a�h�baz�c�e�dazv�az�faz�gazv�az�i�l�jaz�kazazv��maz�n�oazv��pazazv�az�r�s�x�taz�uazaz�vaz�wv�az�y�}az�z�{�|azv���azaz�~���azjv�az��az����������������az��az����azazv�����������azv�azaz��v�az��azaz��v�az��������az��az��jazaz��az��v�az������azaz��az��azv���azaz��az��v�azaz������������az����v���v�azv�az��az��azv�azaz����az�azaz������������azaz��azv�az��az����azazv�������azaz��azv�����������azv�azaz��v�az����az��v�az��azazv��������/�������������������azv���az��azjaz��az��������az��azv�w�v�az��az��v�j������������az��azjaz��jazaz������v�azazv�����������azaz��azw���azaz��azw�����az��az��v�az��azazj�������az��az������azv�v�azaz�az�az�v��azv���az���	az�azv�az�
���v�az�
��azv�az�v�azv��az��'�������v�azv��azazv��az��azv�v�az��$az� �!�#�"azv�azv�az�%az�&azv�az�(�+�)azaz�*azv��,azaz�-�.azv�az�0�i�1�H�2�?�3�:�4�8az�5�6az�7azv�az�9azv�az�;azaz�<az�=�>azv�az�@az�A�D�Bv�az�Cv�az�E�Fazv�az�Gv�az�I�\�J�U�K�P�Lv��Maz�N�Oazv�v�az�Q�S�Razazv��Tazazv��V�Yaz�Waz�Xv�az�Zaz�[azv�az�]�`az�^�_azv�az�a�d�bazaz�cv�az�e�g�fazazv��hazv�az�j��k�paz�laz�m�nazaz�oazv��q�y�r�u�saz�tazv�azaz�vaz�waz�xv�azaz�z�{�}az�|azv�v��~v�az��az��������az����azazjaz����azv�az��azaz����azv�az������������������������az����azazv�az��az��azv���az��azv�az��az������azaz��w�azaz����az��azw�az����������az��������az��azw�w���azw���az��azazw�������w�az��azv���az��azv�az������������az��az��azv�az��az����������v�azv�azaz������gCazazj��az��az��azv�az��az����������az������v�v�azv�az��az��azv�az������az��az��azv�az��azaz����azazv�az����������������azaz������azv�azv�����������azv�az��azazw���az��azw�az������azaz��az����azv�az��az������azjazaz����azv�az��������azaz�az�&az��azv�az�az�	azaz�
v�az���
az���azazv�az�azv���az�v��v�az��v�az��v�azazv��az��=��sGaz� �,�!�"K�az�#�+az�$�%�(az�&�'azazgC�)azaz�*azgCazt��-t�t��.�/�9�0�4�1�3�2w�wFS4���5�7SC�6SC�>�8j��4�:�;w�az�<w�azw�az�>�?�P�@�Baz�A|@&|�Caz�Daz�E�Fazaz�Gaz�Haz�Iaz�Jaz�K�Laz�Maz�Naz�Oazw�az�Qaz�R|az|�T���U�[az�V�Waz�X�Zaz�YsGazaz|az�\�]���^���_�y�`�faz�aaz�b�c�eaz�dv�azjaz�g�p�h�kb��igQ�jgQb��l�mkXv��n�ogQb�kXb��q�u�raz�s�tazv�v�azaz�v�w�xazb�v�az�z���{���|���}�v��~azt�����t�����v�����azt�����jmu�az������������azmazv�����v�azazt���u���t�u�j��������������azv�u�jv���az����v�azjaz����������jv�j����azu�az����az��az����az��az��az��az��azb���az��az��az��kXb�kX��������b�azgQ������t�b�v�m����az��|az����az��az��az��t�azaz����azaz����az�?az|����azazEz��azaz��az����azaz��az��az����az��az��azaz��az����az��az��az��az��azaz��az@���;�������j���az����az��������������az|��|��az|��azaz����||az������az������||az��||azaz��|������az|az|������������|����az|az||���|az|az��|�|ty|���az�|�	�
az||az|azaz�
�az�az�azaz���A��v�az��*�v����az�az�azaz��azaz�azkX�az� �%az�!�"azaz�#az�$wazaz�&�'azaz�(az�)azt��+v��,�7�-az�.az�/�3az�0az�1az�2azjaz�4�5azaz�6azw��8azaz�9�:az�;�>az�<az�=azw�az�?az�@az��B�`az�Caz�D�E�R�F�L�Gaz�Hazaz�Iaz�Jaz�Kazw�az�Maz�Naz�O�Paz�Qazazw�az�S�T�Yaz�U�Vazaz�Waz�X�az�Zaz�[az�\�^az�]u�az�_azjazaz�av��b�cv�v��dv��ev��f�gv��hv�v��iv�t��k��laz�m�raz�naz�o�paz�qazaz|�s�t|az�u�z�vaz�wazaz�x�yazSQaz�{azaz�|�}azaz�~az���azaz����|��||����|��|����v�|v�|���(������az�����������az���������az����az��az��az��gQ��gQgCgQ�����az����az��v�t�������az������������az��az����azaz����az��azaz��az��v�az��az��azaz��az����az��azaz����azv�azaz����az��az��az��az��azaz��az��az��v�az��az��������������azaz����azaz��az����azazv�az��az��az����az��az��azv�azaz������az����azaz��az����azv�az��azaz����azaz����azazv�������azaz��az��az��az����az��azazv�az����az��azaz����azaz����azv�az�����az���������azaz����azaz����az��azaz��az��v�azaz���az�azaz�az�az�az�az�azv�az��	az�
azaz��azaz�
az�az�az�azv��az�az�azaz��az�az�azaz�az�az�az�v�az�az��!az� az|�"azaz�#az�$az�%�&�'az��az�)�:az�*�+az�,�2�-azaz�.�/azaz�0�1azaz|az�3�4�9�5az�6az�7azaz�8v�azazL|az�<���=�i�>�V�?�U�@az�Aaz�Baz�Caz�Dazaz�Eaz�Faz�Gaz�H�I�O�Jaz�Kaz�Laz�Maz�Nazazv��Paz�Qaz�Razaz�Saz�Tazv�az|��W�X�c�Y�a�Z�\az�[|azaz�]az�^az�_az�`SCazaz�b|az�d�g�e�f|az|azaz�haz|az�j�k�|�lazaz�m�n�{�o�taz�p�qaz�r�sgCazazgC�u�xaz�vaz�wb�azaz�y�zazazmazS`�}��az�~�����az������azaz��v�az��az��azazv�az����az��azaz��az��az��az��az��az����az��az��az��azaz��az��azv�����az��az��az��|����azaz��������azb���b�az��az��az�az������az�����_az��az��az��azaz��az����azaz����azaz��az��az��az��az����az@azaz��az����azaz����azaz����az��azgQaz�����������az��az������az����||��������||��|����|��|��||����||����||���|��||����|��||����||��|��|����||���|az��`�azaz��az�������az��|����az����������azgQwv�az�����	����az����azv�u���������v�v�����v����v�����v���v�v��v�So�v��v��v��v�Sov�v�kXgC�v�azaz�
����
azkXgCazaz�wUaz��az�aziMaz�az|��k��(�azaz�az���azL��fazaz�� �%�!�#�"azb�azu��$gQaz�&az�'azmaz�)�W�*�:�+azaz�,�-az�.az�/�2�0� � �1� S�� �3� �4� �5�6� �7� � �8�9S�� S��;�Q�<�L�=�G�>�E�?�B�@azaz�A�Tazaz�C�Daz|azaz�Faz|�Haz�Iaz�Jazaz�K|az�Mazaz�Naz�O�Pazaz|az�Raz�Saz�Taz�Uaz�V|azaz�Xaz�Y�Z�f�[�_�\azaz�]az�^�az�`az�aaz�baz�caz�daz�eaz�az�gaz�haz�iazaz�j�az�lazaz�m�naz�oazaz�p�q���r�{�s�w�t�ut�w�j�vjkX�x�zw��yw�jj���|���}��~w���gQjgQ������{�ww�{���gQ{�����������gQ����{�wt�v�����gC��w�gC{��M����������wwv���azt�j��az����az{�{�az������������������������������az|������az����j�&��az��azaz��az����azaz�&az��az����������������������v��v���v���v������������v���az�>��������������w�S�az����kXw���������,��w�������w��^gC����������������gCJ�J������S4u�azS���������SCS�S�~����S�J�J��"����������az�4S�����v�S��F���������Tw8azgC����az�w��az��F��������������az|w�az|��az��az��az����az|az���az����������az����az|azaz����az�azaz|aNaz�az�az�1��1�az�az��	���
�k��]��,�
azaz���#�azaz����az�azaz����azaz�{��az�az��[az�az�az�az� azaz�!�"azaz�[az�$�%azaz�&�'az�(az�)az�*azaz�+b�az�-az�.�L�/�>�0�7�1�4�2�3azj�az�5�6�Z~azJ�8�;�9�:�?azv�X�<�=��azaz�?�F�@�C�A�BTT%�����D�Ev��wkX�[�G�J�H�IwkXaz)�Kaz{��"�M�X�N�U�O�R�P�QJ�wv�t��S�Tb�azw�az�Vaz�WazT4?Uaz�Yaz�Z�[�\azTC��az�^az|�_�`||�a|�b|�c�d||�e�f||�g|�h|�i�j||@�l�z�mazv��naz�o�pazaz�q�raz�sazaz�t�uazaz�vaz�w�xazaz�yaz@az�{az�|�K�}�K�~az�az�K������az��|az������������������azmw8wcgQ��v�v���������v�����j��j��j����j��j��jw���j��jw��v�u�az��waz��az��az��azazu�������azaz��az��|az�azaz��az������������������az����az��az��azaz����az��az��az��az��azw�azaz����az��azv�����az��az��az��az��az��az��az��azazv�az��az��az����az��az��az��az��az��azaz��az����azaz���"az��az|��|az������azaz��|��az��������@��@�@��azgCaz��az������az��az��azaz��azv�maz��az���#��������az������az��az|��azaz���azaz��az��az|�����az��azaz��az��az����az�����wazu�azaz��az����
�v��v��v��v��	v�v��
�v�v��v�az��v���v�v�az��v��azv��v�v�az�az�azaz��azaz�az��az�azaz�� azaz�!az�"@az�$�-�%�&az`��'az�(az�)azaz�*�+az�,azgCaz�.�P�/�A�0az�1�4az�2�3az|az�5�;�6�7|�c�8az�9�:��i��wcaz�<�=�@�>�?v�azaz|az|t��Baz�C�D�I�E�F�az�Gi@|�H��|�J�Maz�K�Lazazb�az�Naz�Oazi@�Q�Waz�R�Sazaz�Taz�Uaz�Vbaz�Xaz�Y||�Z�[�c�\�^az�]azt��_�`az�K�aaz�bazazgQ�d�g�eaz�fv�t�az�hazw�iw�j�kaz�lazgQaz�n���o���p��qaz�r�~�s|�t�z�uaz�v�xaz�w�_az�yazaz|az�{�|az|�}�|�������az����������������������|��|��|����||��|����||����||�����|� �I||����||��|��|����||��|��|����|�|����|����|az|������||az|��|az����az��|������az||az����|����|az|��||��az|����������������|��|az|��az||az��|��az��||az����������������az�az|����az||az������||az��||az����|����||az|��|��|az��az����az����azaz��az����azaz����az��H:az��azjaz������������az��az��az��az��azaz��az��az��az����az��azaz����azazv�az|az����azaz����azaz��az����azaz����azaz��az���az�az�azb�az��9��az��azaz��	�
|az�az���
az�az�azaz��az�azaz��az�az�az�azazw�az�az��az�azaz�az���'� azaz�!�"az�#�%�$azNU��&azN;N�(az�)az�*az�+azaz�,az�-az�.�/azaz�0�1azaz�2az�3�4�7�5�6azw��w�8az��az�:���;�?�<az�=azaz�>|az�@�T�Aazaz�Baz�C�D�J�E��F�I�G�H|��||��K�P��L�M�O�N||�|���Q�R�S|�|��Uaz�V�h�W�d�X���Y���Z�[||�\�]|�^|�_|�`|�a||�b�c|||��e��f�g�|��i���j�l�k��|���m�n����o�p�||�q�r|�s�z|�t|�u|�v|�w�x|�y|||�{��|�|�}|�~|�||��||��|����|��|����|||��|��||��||���|���|az������az����az|az��������az��|azaz����|��������@azaz@az|az����az������������v���v�t���������t��w�1���w��������v���azu�����u�u�v�t���������m��mt�����mwcw�ub����gCkX����v��ia��M���3��������������azaz����az��az��az��az��az��az�����azaz��v�azaz����������|����azaz��az��az��az����az��az������azv�az�az��az|azaz����az|������������azgQ����w*��w*��w*��w*��w*��w*w*��w*v���azgQaz��������gQazazgQaz��gQaz��azaz��az��az��|az��� az�����az����az��az|az��azaz|����
az��|�	az�
�jazaz�kXwUaz�|az����|az|azaz��az�az�azaz��az�az�az�azaz���azv�v�azaz�!az�"�#�$|azaz�%az�&�'azaz�(�)az�*az�+az�,azaz�-�.az�/azaz�0�1az�2azaz@�4���5�iaz�6�7�S�8�L�9�F�:az�;�B�<�?az�=�>azaz�az�@az�A�az�Caz�Daz�Eazazjaz�G�Haz�Iaz�Jaz�KazazS��Maz�Naz�Oazaz�P�Qaz�RazgCaz�T�b�U�\�Vaz�W�Yaz�X|az�Zazaz�[|az�]azaz�^�_azaz�`�aaz|az�caz�dazaz�e�fazaz�gaz�h|az�j���k�t�lazaz�m�naz�oaz�p�qaz|�razaz�sazv�az�u�vazaz�w�6�x�6�y�6�z�6�{�6�|�}�6�~�6��6���6���6���6�6��Rb�6az��|����||����||��|����||����|��|��||��|��|����||B/��az����az����������az����|������@��@��@TR@@��@TR����az|az������az������azw�wUu����������Mv�az��az��az��azkXaz��az��az��az�az��|az������������az����azaz����������azt�azwU��azazt�|azaz����az��az��������az�baz�baz��|��az|����������az��azaz��az��az��@az����az����az��az��az��az��azaz��az����az��azaz��az��azv�az|az��������az��az|az��@az��az������jazv�az����������������az��az��az��az��az��az��azw�����w�w���w��w��w�az��R��#�az��az�|az�	az�
az�az���
��azaz�gQaz�az���azazb�azgQ������azgC�azaz�azkXaz�azv�az�� az�!�"gCazazv�az�$az�%�&�@�'�2�(�,az�)�*�+gCazmaz�-�/�.azjaz�0�1azb�azt��3�:�4�7�5�6kXwv�v��8�9wgQwUw��;�=�<az�?v��>�?jw*b�az�A�K�B�G�C�E�Dazubwaz�Fazv�az�H�I�Jazv�u�j�Laz�M�P�N�Ojv�wct�b��Qb�u��S�t�T�j�U�d�Vaz�Wazaz�X�Yazaz�Z�[az�\az�]az�^�caz�_�`az�av��bv�azv�v�az�eazaz�f�gaz�haz�iazv�az�k�naz�l�mazazt�az�o�paz�qazaz�r�sazw�az�u�x�vazaz�w|az�yaz|�z|�{�|�~�}|�|�||���������az������az����az��az��azaz��az����az��azaz����azaz����azaz��az��az@��|az������������az��azbaz����azb��azazb��������az��baz��azbaz��az��azaz��az��������������az��az��azj����az����jjazaz��azj��������azjazj����az��j��jazaz����azjaz��az����az��az��az��azj��azaz������azjjazaz������az��az��az������������azmj��azazw�az��T\Tk������|azH:|az����az����������azv�e�azaz��az����������|azaz|����az��az��az|��|az|����������az��az������az��azazb�az����azb���azt�az��az|������az��az���az�azaz��azaz|az�|az��:���	azaz�
���azaz�
az|�azaz�az|��)�az��#��"��az��azaz�az�gQazaz��� az��'��'R(az�!��azt��$�%az|az�&v��'v��(v�azaz�*az�+az�,az�-�.az�/az�0az�1azaz�2az�3�4az�5az�6az�7azaz�8�9azaz@�;�Zaz�<�=az�>�S�?�Maz�@�Aaz�Baz�Caz�Daz�Eazaz�Faz�G�Hazaz�Iaz�Jaz�Kaz�Laz@az�N�Oaz�Paz�Qaz�1�R�1az�Tazaz�U�Vaz�Wazaz�Xaz�Yaz���[�q�\azaz�]�^�baz�_�`azaz�aaz|�c�d|azaz�e�faz�gazaz�h�iazaz�jaz�k�lazaz�maz�naz�oaz�pw�az�r�saz|�taz�u���v�z�w�az�x�yazaz�az�{�|��}��~��az���az���az����az��az��az��az���������az����az����������������az��az��|������������az������azazv�����v�azazv���azaz����az�?az��������az��az��gCazaz��az��v�az������azaz��v�azaz������azv�v�az��������az����az��||az��az|�T��azaz��az��az����azaz��az��b�az������az��az��az��azF�az����az��az��az��az��az���az����az����az�az��azaz���az��az������az������az����H:az��������az����azt�v���az��azgQazaz��az|��az��azaz����azv�az��az������az��|��|���������az�az��������az����az��azaz��Aeaz���'���
������az�|azaz��az�az|az�az�azaz�az�	|az�az��az�
az|az���#az��az��az�az�azv��az�az�az��!�azaz��az�az�az� azv�azaz�"azv��$�&�%azgCaz|v��(���)�o�*�;az�+�,�-az��.�5�/az�0�3�1az�2azv�az�4Nv�az�6az�7�8az�az�9�:azazM�<�\az�=�>azaz�?�@az�A�Raz�B�Caz�Dazaz�E�Faz�G�N�H�Kaz�I�Jaz��az�Laz�Mazaz��az�Oaz�Paz�Qaz���Sazaz�Tj�U�Vjj�W�Xj�Yj�Zjj�[jaz�]�c�^azaz�_�'�`�a�'S`�bS`�'�daz�eaz�f�l�g�i�hazbaz�j�kbazbazaz�maz�nazb�p���q���razaz�saz�taz�u�vaz�waz�xaz�y���z�~�{v��|v��}v�v�azv��v�����v�v�azv���������v���v�azv�v�����v�azv�az��az��az��az��az����az��azaz����azaz��az����azaz��v�azaz��sG����azaz��az����az��az{�az��������az����az��azaz|az��az����az��azaz��az��az��v�az������az��azaz|az��az����az��azaz��az|�������n���+����az��az��az����azaz����azaz��az��az��az��az��azv���az�����az��������az��az����az��az��azaz��az��az��az��az����azaz����az��azazgC��az��az��az��azaz����azaz��az��az����azaz����az��az��azazb�az������az����az��az��az��az��az��azaz��az����azaz��wcaz��az��az������az����az�az�az�azaz�az�az�az�gCaz�az�	azaz�
�azaz��
az�azgCaz�azaz�
��az���az�az�|az�|�azaz|�az��&��#az�N�N� N�!�"azb�az|�$|�%az|�'�)�(az|azaz�*|az�,�Baz�-�.azaz�/az�0�1�9az�2�3azaz�4�5azaz�6�7�8azgCb�gC�:�@�;az|�<az�=az�>�?az�azaz�A|az�C�Haz�Daz�Eaz�F�Gaz|az�I�Saz�J�Kaz�L�Qaz�Maz�N�Oazaz�PazgQaz�R|az�T�eaz�Uaz�V�Waz�Xazaz�Yaz�Zaz�[az�\az�]az�^�_az�`az�aazaz�b�caz�daz@azaz�f�gaz�hazaz�iaz�jaz�kN�l�mNNQ��o���p���q�raz|�saz�tazaz�uaz�v�w��x�{�y�zazw�jw��|�}�����~w�j�az��w���w���w���w�����azaz����azaz����azaz����azaz����az��az��az��azaz��az��az��az����azaz��az��@az��az��az��azaz����azaz����az����az��az��az����azkXaz��az�az��¿���K����az��az��az������az����az�������������������������������������������az����������������������������az����������������������������az���������������������������������az���az��azaz��az��az��az��az��azv����az�������az��az����az��az����az��az��azaz������������az��azazv�azgC��az����az��v�azazgC��az��az�az�azaz��azaz�az��az�azgQv��	az�
azaz��az�
azaz��az�az�azaz�az�az�az��azaz�az�az@az�az���,�az��*az�az� �!�&�"�$az�#|az�%azEazaz�'�(�)az|i�az�+az|az�-�D�.az�/�;�0�3gQ�1�2azgQaz�4�6az�5azgQ�7�8azm�9�:wUwubm�<�@�=az�>�?jt�v�azaz�A�Bazaz�Cv�azaz�E�F��G|�Hazaz�Iaz�Jaz���Laz�MŽ�N�|�Oaz�Paz�Q�`�Raz�Sazaz�T�Uazaz�Vaz�Waz�Xaz�Y�Zaz�[azaz�\�]az�^azaz�_az@az�a�b�o�cazaz�daz�e�faz�gazaz�haz�iaz�j�kazaz�laz�m�naz@az�paz�qaz�razaz�s�tazaz�uaz�v�wazaz�xaz�yaz�zaz�{@az�}az�~azaz�az€azaz‚ƒazaz„az…†az‡azˆaz‰azŠazaz‹Œazazaz@az¡‘azaz’“azaz”•az–azaz—˜azaz™šaz›azazœazazžŸazaz az@¢azaz£az¤¥²¦azaz§¨az©azazªaz«¬azaz­®az¯azaz°az±@az³azaz´µazaz¶az·¸azaz¹ºaz»az¼az½azaz¾@az�ƴ��Y���9������azaz|az������az����az��azaz����azaz��az����az��azaz����azaz��az��az����azazwaz�����3��az���
����az��az��az��az��az��az��waz����������az��azaz����az��azaz��azmaz��az��az��az����azazv����������azaz�az��azaz�az�waz�azaz��azaz�az�az�waz�azaz��az�az�az�	azaz�
waz�azwaz��Z���az�azmv���G��3��&����t��t��wv��v���t�azmw��"� �!azwwaz�#�%�$gC�"v�v�w�'�,�(�*t��)wazt��+t�w�-�/t��.azt��0�2m�1v�t�waz�4�6�5mwt��7�>�8�<�9�:t�wt��;v�t��=v�t�v��?�C�@�Amw�Bv�wt��D�Ewaz�Ft�v�t�t��H�I�Y�J�N�Kt��L�Mwmwv��O�S�P�Qww�Rmv�m�T�U�1w�Vv�t��W�Xazwazt�v��[���\Ö�]�w�^�l�_�e�`�c�am�bv�azwm�dv�m�f�i�g�hazt�v�w�jv��kv�mw�m�s�n�q�o�pv�t�wv��K�r��v��tv��u�vmwv�v��xÆ�y��z�}�{w�|wazv��~t�wwÀÃÁÂv�t�kXv�ÄÅt�azwwÇÌÈÉwv�ÊËv�t�v�t�ÍÒÎÐÏv�t�azw*ÑazwÓÕt�Ôwt�waz×øØçÙàÚÝÛÜwv�v�wÞßwwqwt�áãâazazv�äåv�t�æmt��1èîéëêv��1t�ìt�ít�gCazïòðñwt�v�wóöôv�t�õt�w÷�Kt��"ù�úþûüt�azýwt�mÿazaz�waz�������������1azv�azaz��azt���������wv�v�w��azw��v�az�����������������az�����1t�t�v����������Kt�v�az��u�v�m��������azw���1v�w�����1��wv�w��w�1�����������������mkXmw��t�gC��mw��waz������v�azmv���u�wazw�������1kX�Kaz�wv�w��w�mww�u�w��w����	��
wv��wv��
���w�Km�azwt�m�����azv�w�v�ww�t�azt���'��#�� ��v�v�Tzaz�!w�"v�v�az�$waz�%�&v�wt��(�.�)�,�*w�+v�t�ww�-m�1v��/�0�2�1�1�KgCt�gCaz�4�5az�6az�7azaz�8azv��:�E�;�>az�<az�=|az�?�Caz�@�Aazaz�B|azaz�Daz��F�K�G�Iaz�Haz|�Jazaz|�L�Saz�M�N�az�Oaz�Paz�Q�Razaz|�Tazaz�U�Vaz�Waz�Xb�azgC�Z��[Ĕ�\�o�]�c�^az�_az|�`az�a�bazazM�d�l�eazaz�f�g�h|az�iazaz�j�kt�gCv��mazku�nf��pĀ�q�z�r�t�saz@azaz�uaz�vaz�waz�xu��yazu��{�~�|�}|az|az�azazv�āĐazĂăĄH:azą|ĆČćĉazĈv�azazĊazċv�azazčĎďazv�azgCazđĒē|azaz�ĕ��ĖīėęazĘ|azazĚazěĜazĝazĞazğazĠazġazĢĦģv�Ĥv�ĥv�azv�v�ħv�Ĩĩazv�Īv�azĬĶazĭ|Į|įİijazıazIJwazazĴazĵazwķazĸĿĹĻazĺazAe�'ļ�'Ľ�'ľ�'S`az������az��azwaz��������b�gCb�gC����gCazb�azaz�������������|azaz|��������az��az����azaz����������az����az��azaz����azazkX��az��az��az��azaz��v�azaz��az��az����az��az��azazw���az��������t�azwmv���v�az�������az��|az�az|az��G�������azaz|az��az��az��az��az���
az�	gCazaz�azm�
��azaz�azu����azazt��azazb�az�az���az|az�az�az���+��!�azaz� az��"�#�az�$Laz�%az�&�'�)�(azaz|az�*az|�,�;az�-az�.�/azm�0m�1�2mm�3m�4�5m�6m�7mm�8m�9�:mmU��<az�=�B�>azaz�?�@az�A�|�az�Caz�Daz�E�F|az|�Hƭ�IƦ�J�M�Kazaz�L|az�NƤ�Oaz�P�6�QŮ�R��S�\�Tazaz�U�Vazaz�Waz�Xaz�Yaz�Zaz�[waz�]az�^�n�_�e�`�b�at�wv��c�dt�wt�az�f�j�g�it��hwu�v�t��k�lv�v�az�mwv��o�w�p�t�q�s�ru�wt�v�az�u�vazu�t�w�x�}�y�{�zt�t�w�|t�t�v�t��~t�mŀŗŁazłŌŃňńŇŅņv�wwv�t�v�t�ʼnŊŋwwmwōŒwŎŏőŐu�azt�wazœŕŔt�v�wŖw�1v�azŘřţŚŠśŝt�Ŝv�t�Şşu�v�azwšt�ŢwwazŤũťŧŦv�mv�v�Ũwu�ŪŬt�ūv�t�ŭv�t�v�ů�Ű��ű��ŲžųźŴŷŵŶv�u�t�u�ŸŹt�v�v�t�Żżv�v�Žu�wu�ſ��������wmmv�����t��w�wu�������azu�v�w��u��1����������������t�v����1v����1v���������wv���v�v�v�����v�wwv������������Kv�w�����1wwv���������v�wqv�v�����t�wt���t�az��az�������������w�1w����u�wv�v�����wu�ww�wv��������mwazmv���mwv�w��t�v�����v�wt��az��#�	��
������
w�1azwu�u��wv���v��v�t���v�wt�v��� ���v�v�u���w�azw�t�wv�w�!w�"wqt��$�.�%�*�&�(�'w�1mt��)v�w�+�-v��,v�u��1v��/�3�0�1azt��2wt�v��4�5wu�wm�7�k�8�c�9�O�:az�;�B�<�?�=t��1�>wv�t��@u��Awv��C�I�D�G�E�Ft�v��wt��Hv�waz�J�M�K�Lt�v�azwq�Nv�azv��Paz�Q�_�R�W�S�Uw�Tt�w�Vwazt��X�[w�Y�Zazmaz�\�]wm�^wu�az�`v��aaz�bazazu��daz�eaz�fv��gaz�haz�iaz�jazazv��lƋ�maz�naz�o�~�p�w�q�t�r�su�v�u�v��u�vv�wqu�t��x�{�y�zt��wwv�v��|�}wmu��ƆƀƃƁƂv�azt�v�Ƅƅ�1u�t�wƇƉt�ƈwqv�v�Ɗu�v�ƌƗƍazƎazƏƔƐƒƑv�wv�v�Ɠazu�ƕazƖazazwƘazƙazƚơƛƞƜƝu�t�u��KƟƠwqt�wu�Ƣazƣaz�wmazƥv�azƧƪƨazazƩaz|ƫazƬazaz|azƮƯƲazư|Ʊ|azƳaz|azƵazƶazƷ��Ƹ��ƹ��ƺ�azƻƼƽaz|ƾazazƿ���v��v���v�az��azv�az|az����az��|����||������az@��azaz��|az��az��������az��az������v���azv�v�az��azaz����az��azazv�������az����az��az��wazaz��az��v�v�����az������w�az����azwazw��az����azb�b���b�azaz��������az�����az��az|����az�azaz|����az���az�az�az�az�	az�
az�az��
azv�azaz�az��az�azaz�az�az�az�az���azv�v�azaz`��azaz|��G���� ȗ�!���"Ǎ�#�{�$�Z�%�7�&az�'az�(az�)az�*azaz�+az�,az�-az�.�/az�0az�1az�2azaz�3�4azaz�5�6azaz@�8�Iaz�9�:azaz�;�<az�=azaz�>�?az�@az�Aaz�Baz�Caz�Daz�Eazaz�F�Gaz�Haz@az�Jazaz�Kaz�Laz�M�Nazaz�Oaz�P�Qazaz�Raz�Saz�T�Uazaz�Vaz�Waz�Xaz�Y@az�[az�\az�]az�^az�_�maz�`az�a�baz�caz�daz�eaz�fazaz�g�haz�iaz�jaz�kazaz�l@azaz�n�oazaz�paz�qaz�r�saz�taz�uazaz�v�wazaz�xaz�yaz�zaz@az�|az�}�~Džaz�azǀǁazazǂǃazazDŽ�azazdžLJazLjazljazNJazazNjnjaz�azǎǢazǏǐazǑazǒazǓazazǔǕazazǖazǗazǘazǙazǚazǛazǜǝazǞazazǟǠazǡaz@azǣazǤazǥazazǦazǧǨazǩǷǪazǫazǬazǭazazǮazǯazǰazDZDzazazdzǴǶazǵaz@@azazǸǹazazǺǻazǼazǽazǾazǿazaz��az��az��azaz@���[���G���B���
��������������az��azaz������������azmaz��azazu�az��az��azt�az��az����az����az��az��w�azaz����azw�����azw�azaz��az������az��az����azfaz������AeazAeaz����azazgC�����az��az����az��az�az�jw�az��azv�azaz|�az�az�|�az����N�[�NN�U�N�NU��	[�N��'���
��az�az|azaz���az�az�az�az|az����@@�@�@���$�� �azaz|az�!az�"�#az|az�%�&|az|az�(�9az�)�*�,�+azaz|�-az�.az�/�3�0x��1�2��cWcWx��4�6x��5$$x��7�8cWx�cW��:�;|azaz�<az�=az�>�?azaz�@�Aazv�azaz�Caz�Daz�E�FazAazaz�H�Iazaz�Jaz�Kaz�L�Maz�Nazaz�Oaz�Paz�Q�Razaz�S�Taz�Uaz�Vazaz�W�Xaz�Yaz�Zaz@az�\ȃ�]�paz�^�_azaz�`�aazaz�baz�caz�daz�eaz�faz�gaz�h�iaz�jaz�kaz�lazaz�m�naz�oazaz@az�q�raz�sazaz�taz�uaz�vaz�w�xaz�yazaz�z�{azaz�|�}az�~az�azȀazȁazȂazaz@azȄazȅazȆȇazazȈȉazazȊazȋazȌȍazazȎȏazazȐȑazazȒazȓazȔȕazazȖ@azȘ�QșȷȚȲazțazȜazȝȞazȟazazȠȡȩȢȤȣazaz�ȥȧȦaz�azȨaz�azȪȮȫazazȬȭazw�jazȯazȰȱazaz�|ȳȴazazȵazȶw�azȸ�azȹȺazȻ��ȼ��Ƚ��Ⱦ��ȿazaz�az�az��az��azgCaz��az��|��|����|��||��|��|����|a|��az��az�azaz����az��azaz����azaz��az��az����az��azaz��az��az����az��az@az���������az��az��az������azaz��v�azM|��azaz����azaz��az����az��azaz���azaz�az��az�azaz�az@��az��az|azaz�az��||�|��|�|V	�V	��	V	�
V	�V	�V	�
V	V	|��.��az���az��az��azu�u�az|azaz���|�|�|�|���%� �#�!�"gQazgCaz�$azb�u��&�(az�'azt��)�*v�b�t��+�,�-b�u�azgCaz�/�0az�1�Aaz�2�3azaz�4�5az�6azaz�7az�8az�9az�:�;az�<azaz�=�>az�?azaz�@@az�Baz�Cazaz�D�Eazaz�F�Gaz�Hazaz�Iaz�J�Kaz�Lazaz�Maz�N�Oaz�Pazaz@�R�caz�S�T�Y�Uazaz�V�W�Xw�azjaz�Z�aaz�[�\�^m�]mazv��_�`v�v�gQ�bazazw�d��e�x�faz�gazaz�haz�iaz�jaz�k�laz�maz�nazaz�o�pazaz�q�raz�saz�tazaz�uaz�vaz�w@az�yaz�zɰ�{ɫ�|�~az�}|az�azɀazɁəɂɋazɃɄazɅazazɆɇazazɈɉazɊazgCazɌazazɍɎazɏɔazɐazɑɒazɓazgQazɕazazɖɗazɘazgQazazɚazɛazɜɝɣɞazɟazɠazazɡɢazv�azɤazazɥazɦɧazɨazazɩazɪgCazɬazazɭazɮu�ɯu�v�ɱɽazɲazɳazɴɵɹɶazɷazɸazv�azazɺɻazɼazv�azazɾɿazaz�az|az������az��az����az��azaz��az��az��az��az��az��az��az����az��azaz��az����azaz@��az��az��azaz��az��az��az��az����azaz����azaz����azaz��az����az��azaz@�����ͱ���r��ʙ���2������az��azaz��������������az�azaz�az�gCaz�azaz���az��Taz��az|�az�azaz��azb�az�az�azaz�az�	az�
az@���
az��e��X�az@&�az�az�az��az�az�az�az�azaz�az��azazv���%az�� az�!azaz�"az�#az�$`�az�&�0�'az�(az�)azaz�*az�+�,az�-gC�.gC�/gCazgCaz�1az|�3�j�4�R�5�E�6azaz�7az�8az�9az�:�;azaz�<�=az�>az�?azaz�@�Aazaz�Baz�C�DazgCaz�Fazaz�Gv��H�I�Lv��J�Kv�v�az�M�O�Nv�azv�v��P�Qv�azv��S�iaz�T�U�g�Vaz�W�[|�X�Y||�Z|��|�\�]|�^|�_|�`||�a�b|�c|�d|�e||�f|�az�h|az|az�k�x�laz�maz�n�raz�o�paz�qaz|azaz�s�taz@�u�v�c�w||az�yʉ�zazaz�{�|azaz�}az�~�azʀazazʁazʂʃazazʄazʅazʆazʇʈazaz@ʊMʋʒMʌʍMMʎMʏʐMMʑMg�MʓʔMʕMMʖMʗʘMMg�ʚʰʛʫʜazʝʨazʞʟazʠazazʡʢʥʣazazʤaz�"azʦʧazazv�azʩ|ʪ��|ʬazʭazazʮazʯaz|ʱ�!ʲ��ʳ�ʴʷʵazazʶaz|azʸʹazʺazʻʾazʼʽ�az�ʿaz�az�azaz����azaz����azaz����w���w�w�����w���w���w���w���w�w���w���azw����������az����������az����az��az��az��azaz��az��jaz��azaz��az��az��az����az��az��az��az��azazv�az��az����az��az��azaz����az��azaz����az�azazm|az�azaz����gC��azgCgC�gCgQ��
���mazmaz���	�az�az�azmazmaz����m�
���az�azmazm��mmaz���mmaz�mm�azm�maz��azmaz�azaz� az|�"�h�#az�$�B�%�4az�&az�'az�(�)az�*�3�+az�,az�-az�.az�/az�0az�1az�2azJazazw�5azaz�6�7az�8azaz�9v��:az�;az�<az�=az�>az�?az�@�Aazazv��C�\�D�I�Eazaz�Faz�Gaz�Haz��J�U�K�P�L�Naz�Mazv�az�Ow�az�Q�Saz�Raz��Taz�az�V�Yaz�W�Xaz�azaz�Z�[v�v���]�b|�^�_�`�|��a�||�c�d�e�|�f�g|��|�i˅�j�saz�k�lazaz�m�n�paz�ogCaz�qaz�razazVaz�taz�uaz�vaz�w�xazaz�yaz�zaz�{�|az�}az�~azaz�ˀ˂��ˁazv�˃˄�V'��azˆ�Oˇ�Bˈ�ˉ��ˊ�ˋ˵ˌˤˍ˖azˎˏ˒azːˑazv�az˓az˔az˕azazv�˗˝˘az˙az˚˛azv�˜azv�az˞ˡaz˟ˠazazv�azˢˣazazb�˥az˦˯˧˪˨az˩azazv�az˫ˬ˭v�azazˮazv�˰˳az˱az˲v�azaz˴v�azaz˶az˷˸˾˹˼˺azaz˻w�v�˽azv�azaz˿azv��������������az������az��azv�az������azv�azaz��azv���az����az��azv�������azazv�az��v�az������az��az��az��azv�azaz����������v�azv�azaz����azv�azaz����az��azaz����azaz��v�azaz��������az��az��������v�azv�v����azv�az�az���az���azv�azaz�az�v�az�azaz���az���azazv��az�����	�az�
�azazv�az�
gCazaz�az�v��v�az���azazv��azv�az�azaz��az��7��'��!�azaz�� azv�az�"�$�#azazv��%az�&azv�az�(�1�)�,az�*az�+v�az�-�/az�.azv�az�0azv��2az�3�5az�4v�az�6azazv��8az�9az�:�?�;�=�<azazv�az�>v�az�@azaz�Av�azaz�C�Daz�Eazaz�F�Gazaz�H�Iaz�Jaz�Kaz�Laz�Maz�NazazgQ�P|�Q|�Raz�Saz�Taz�Uaz�Vaz�W�j�X�_�Y�\v��Zv��[t�v��]�^wt�t�v��`�fv��a�bwv��c�d�e���wv�az�g�ht��1t��it�az�k�o�l�mt�v�v��nwv��paz�qazt�az�s���t̊az�u�vaz�waz�x�zaz�yaz|�{az�|az�}az�~azaz�az̀́aẑaz̃az̄azaz̅̆̉̇̈azb�mv�v�az̸̦̋̌aẓ̍̎̏azaz̘̐̑̒az̖̓̔̕azu�az�1̗azu��1̙̝az̛̜̚wU��?wU̡̞̟̠�?w*w*az̢az�?azaz̤̥az|az̧az̨̯̩azaz̪az̫̬|̭|̮�|�̰̲aẕaz|̳azaz̴̵az̶az̷azazb�̹��̺azaz̻az̼̽az̾azaz̿�azaz�����az����az����v�az��az����azaz��waz��az��|az��az��������azazt���azazgC���N���������az��������az����az��az����az|az������az��azazMaz��az��azN������az��az��az|az��azaz�������az������az��azv�az�az��w�m��mm��mt�m�az�wc�wcwc��wcwct��azu�az�az��az|az|�	��
�az��az���
��|azaz�az�gQaz�azaz|az�az|��I��4��!az��az�az�az�� az�gCazgCaz�"�+�#az�$az�%�(az�&az�'azwaz�)az�*azt��,az�-az�.�1az�/az�0gQv�az�2�3azu�azaz�5az�6az�7�8�?�9�<�:azaz�;azgCaz�=az�>azt��@�E�A�Caz�BgQazaz�DazgC�Faz�G�HgQt�v�azaz�Jaz�Kaz�Laz�Maz|�O͐�P�raz�Q�R�U�Saz�Taz|az�V�`az�W�X�\az�Yaz�Z�[azM�azaz�]az�^�_azazg��a�baz|�c�m�d�gV6�e���fVE���h�j�iV6VEVT�k�lVE��VcVE�n�q�o���p����VrV6Vc�saz�taz�u͎�vaz�ẁ�x��y��z��{���|��}�~����V�|́͂̈́|̓|azazͅaz͆az͇az͈͉az͊az͋az͌az͍azazv�az͏|az͑͒͘az͓͖az͔͕az|azaz͗az|͙ͩaz͚az͛az͜͝azaz͞az͟͠az͡azaz͢azͣͤazazͥazͦazͧͨaz@azͪͮͫͬaz|ͭaz azazͯazͰaz|Ͳ��ͳ�Aʹ��͵��Ͷ��ͷaz͸Ϳaz͹azͺazͻazͼazͽaz;azv�az�az�az������������azazv�����az����az��azb�azv�az����v�az��maz����az����az��azw���azw�azaz��������az����|azsGaz��az��|az����azaz����azw�azaz��|����azaz��|az�����az���
�����������az��az��az��az|az��|az�azaz�H:az���az��az��az�azg�az�azaz��azazg�az�az���az��azg�az�	azg�azaz�az��
�����������R����������R������������R�����R���R����R��R���� �$az�!az�"�#azaz|az�%�&�;�'�/�(az�)az�*�+�-az�,�az�.az�az�0�4�1az�2azaz�3az��5�9az�6az�7az�8az�az�:az�az�<�=�>�az�?az�@az�az�B�~�C�a�Daz�Eaz�F�Z�Gaz�H�L�IR��JR��KR���R��M�Q�N�OR�V�V��PV�R��R�W�S�UR��TR������V��R��X��R��YR���az�[az�\�]az�^|�_|�`azaz|�b�paz�c�dazaz�e�fazaz�g�h�kaz�iaz�j�Zw��l�n�mazt�az�oazwq�Kaz�qaz�r�s�uaz�taz@�vazaz�w�x�{az�yaz�z@azaz�|az�}azv����΀Γ΁Ώ΂az΃az΄Ύaz΅Ά΋·ΉΈaz�azazΊaz��Όaz΍azazu�az|ΐazΑazazΒ�azΔβΕΡΖΛ|ΗΘ|ΙΚ�|�||Μ|ΝΞ�|Ο|Π|�΢ήΣΫΤΥ�|ΦΩΧ|Ψ|���Ϊ�|�άέ|�|�|ί�ΰ|α|�azγδazενζazηκazθιgCgCazλazμazgCazazξazοaz��azv�azaz����az��az����������azaz��az��az��az|��az������������xv����xv��xv��xv��xv��xvxv��xv����xvxv��xv����xv��xv��xv��e�������������NN*,>H:�FH:����N*N��H:N,>���
az����azaz��az����az��az��az��az��azaz��az���az���az�t�az����azv�v�v��azv�az�����azt�az��azkXazj�az�	azupazaz��azaz�
az�az�az�az��az�azaz�az�az�az��azaz�az�az��az�azaz@�҇� �\�!�Z�"�G�#�5az�$�%azaz�&�'az�(azaz�)az�*az�+az�,�-azaz�.�/az�0az�1az�2azaz�3�4azaz@�6azaz�7�8az�9azaz�:az�;�<az�=azaz�>�?azaz�@az�Aaz�Baz�Caz�Daz�Eaz�Faz@az�H�Iaz�Jazaz�Kaz�Laz�Maz�N�Oazaz�Paz�Q�Razaz�S�Taz�Uaz�Vazaz�Waz�Xaz�Y@azaz�[az|�]�,�^�B�_ϓ�`�z�a�l�b�e�c�d��azaz�'�fazaz�g�haz�iH:�jaz�kazaz|az�m�n�o|az�paz�q�t�raz�sjjaz�u�w�v|v���az�x�yv�v�t��{ϋaz�|az�}az�~az�azπazρςazazσazτazυazφχazψazazωϊaz@azόazazύazώϏazazϐϑazϒaz�Kazϔ��ϕϺϖϷϗϩϘϝazϙϚϜazϛv�azazv�ϞϣϟϡϠazazv�azϢjazϤazϥϧazϦazjϨaz�azϪϲazϫϬϯϭazϮaz2Tazϰazazϱaz2Tϳazϴazϵazaz϶2TazϸazazϹaz|ϻ��ϼ��ϽazϾazazϿaz��azazw��az��|��az��az��azb�v���||����||����||����|��|��|��||����||��|��@|��������������azaz|az��az|az��az����azaz��az����azv�az��azaz����П���X���*���������������azaz����azazkX���az���azazv�az����azazv�v�az���azb���azb�az�azaz��azazv���	�azaz��azv�az�
���az��
azazw�az����azv�azazv�az�v�az���azaz�az��azaz�azv��� az�az�v�az�!�(�"�%�#az�$azjaz�&azaz�'azv�az�)v�az�+�8�,�2�-az�.az�/az�0az�1azazv��3azaz�4�5azaz�6az�7azv��9�K�:�C�;�?az�<az�=�>azjw��@azaz�A�Bazazv�az�D�E�G�Fazv�az�Haz�I�Jw�v�v�az�Laz�M�Q�Nazaz�Oaz�PgCv��Raz�S�Uaz�Tv�azaz�V�Wazv�azaz�Y�ZЍ�[�l�\az�]�b�^az�_azv��`az�av�az�c�g�dazaz�eaz�fv�az�h�j�iazv�azaz�kazv��mЁ�n�y�o�r�p�qazv�v�az�s�v�tazaz�uv�az�wazaz�xazv��z�}�{azaz�|jaz�~�azv�Ѐazazv�ЂІazЃЄazЅazazw�ЇЊazЈЉazazv�azЋazЌv�azЎazЏazАЛБЖВДazГazw�Еazv�azЗЙИazw�jazКv�azМazazНazОazv�Р�СazТ��УнФдХazЦЭЧЪШЩazv�azv�azЫazЬv�azЮбЯаazv�v�azazвazгazv�еazжкazзиazйazv�azлazмazazv�о��п�����az���azw�az��az��azv���azv���az��azaz��azv���az����az����azjaz��azaz��v�az����������������az����azv�az����azv���azv�azaz������az��w�azaz��azv�����������azw�az��azaz��v�j����az����azazv�v�az�����azaz��az���azw�az�az����az�v�azaz�azv�az���azw�w�azaz���-��������azv��	az�
az�azazv��
�az�az�v�az���azazv�az�azv��az�az���azazv�v�az�az��(��"��!az� gCazazv��#�&az�$�%azazv��'azv�azaz�)az�*az�+v��,azj�.�<�/az�0�8�1�5az�2�3�4azv�azv�az�6�7azv�az�9azaz�:az�;v�az�=az�>az�?azaz�@�Aazv�az�C�s�D�[�E�Taz�F|�Gaz�H�Iaz�J�M�Kazaz�LgCaz�N�Q�O�PazgCgQgC�R�Saz�^az�^�Uaz�Vaz�Wazaz�X�Yaz�Zazazv��\�daz�]�^azaz�_az�`az�aaz�b�cazkXaz�e�laz�f�g�k�haz�i|�j|�k||az|�m�nazaz�o�paz�qazaz�rb�az�tѯ�uћ�v�xaz�wH:`��y�{�z|az|�|є�}ё�~��|р|сѐт||уфъ|хц||чш||щ|�|ы|ьэ|ю|я||�|�ђѓ�||�ѕјії|��|љ|њ�|�ќўѝazaz|џazѠaz|ѡѢѤѣazb�azazѥazѦѧwѨt�t�ѩѪt�ѫt�Ѭt�ѭt�Ѯt�t�azѰazѱazѲ��ѳ��Ѵ��ѵѽѶazazѷazѸazѹѺazѻazѼazv�azazѾѿazaz��az��azaz����az��az��azaz��v�az��az��az��azaz����az��azaz��az����azazv���azaz��az����azaz����az����az��w�az��azazw����������azaz����az��azaz����azw�v�az������az��az����az��azaz����az��azaz����azw�az�����azaz�az�az��azv�azaz��azaz��azazv����az��az�gQazgQazaz���$��az��	�w�
az�azt��
�az�azm��az���azt�wmazu�������az�azwaz�azv�az��azazt�az� �!az�"az�#azaz�K�%az�&azaz�'az�(az�)az�*az�+v�az�-�g�.�U�/�D�0az�1�Baz�2�3azaz�4az�5�6�@az�7�8azaz�9az�:az�;�<az�=azaz�>az�?azwaz�Aazw�Cazaz|az�E�Faz�Gaz�Haz�Iazaz�J�Kaz�Lazaz�Maz�N�Oaz�Pazaz�Qaz�Raz�Saz�T��az�Vazaz�W�Xaz�Yaz�Zaz�[az�\az�]azaz�^�_az�`az�aaz�bazaz�caz�d�eazaz�f@azaz�haz�iaz�j�k�taz�l�mazaz�n�oaz�p�raz�qazgC�sazwv��u�~az�vaz�w�x�{�y�zgCv�b�w�|az�}azgCaz�azҀazazҁ҂҄҃t�b�az҅҆gCb�v�w҈�7҉�	Ҋazҋ��Ҍ��ҍazҎҽҏҸҐazґazҒwғҨҔҕazu�azҖazҗazҘҙңҚҜқv�azv�ҝҠv�Ҟҟv�azv�v�ҡҢv�v�azv�Ҥҥazv�Ҧv�ҧv�azҩazҪazazҫazҬazҭҮazүҲazҰv�ұv�azҳҶҴҵazv�v�azҷazazv�ҹҺazv�һw�azҼv�azҾ��ҿ��azv�az��az��azb�t���azaz��az����az��azazw��az������iM��|��azaz���az����az@H:az��az������������|az|az|az��az��az�����������az������b�gCwv���������j��w�j����w�����gQ��gQgQ����gQ��gQgQ������gQv�v�gQubaz������kXmmwU��v�azwv��az�azt�gC��az�az�az�azv����az�azgCazv�az�
az�az��az�
�azaz�az��az�az�az�azaz�az�az�az�az��azaz�az�@az�az�azaz� �!az�"az�#az�$�-az�%�&azaz�'�(azaz�)�*azaz�+az�,azmaz�.�/azaz�0�1v��2v�v��3�4v�v��5v��6azv��8az�9�@az�:az�;�<�>az�=azAaz�?Aaz�Aazaz�B�C�Eaz�DazAaz�FAaz�H��IԶ�JԀ�K�taz�Laz�M�N�`�O||�P|�Q|�R|�S�T||�U|�V�W||�X|�Y|�Z|�[�\|�]|�^||�_||�a|�b|�c||�d|�e�f|�g|�h||�i�j||�k�l|�m|�n|�o|�p�r|�q||�s|||�u�[�v��w��xӋ�yӁaz�z�{az�|az�}azaz�~�azazӀaz�azӂazӃ|ӄӅӇ|ӆ�||ӈ�Ӊӊ�|��ӌӶӍӜӎazazӏӐӑazgQӒӕazӓazӔazgQӖәӗӘazgCEazӚӛE
�
�azazӝubӞLӟӠӫwUӡӢwUwUӣӤwUӥwUӦwUwUӧӨwUөwUӪwUazwUwUӬwUӭӮwUwUӯwUӰӱwUӲwUӳwUӴwUӵwUA�wUazӷӸӿӹӺ�azӻaz|Ӽӽ|Ӿ|�|�azaz|����������az��az����V�azaz|az����az��az��������az��az����az��azv�az��az����az��azaz����jazm����|az��������az����az��azgCaz��azaz��az����az��az��az��azaz��az��az����azaz��az��v�az��az��azaz��az����azaz�az��az�az���v�v�azaz�v�az��N��3��az��az�v��v�v���v��v�azv��	��
�az�az��
azaz��az�azgQaz�az�az�v�v��v����v�m��az�w�w��b�gCjv�az�az� az�!�"�,az�#az�$�%�&azm�'�)az�(w�w�*�+b�gCjazaz�-az�.az�/az�0az�1az�2jaz�4az�5�G�6az�7azaz�8az�9az�:�;az�<�?�=azaz�>v�az�@az�Aaz�Baz�Cv��Dv��Ev��Fv�v�azaz�H�Iazaz�J�Kazaz�L�Mazazw�Oazaz�P�Q�V��R��S�T��U����W��X���Y�Z����\az|�]�^�o|�_|�`�a|�b|�c|�d||�e�f||�g|�h|�i�j|�k|�l|�m|�n||B/|�p�q||�r|�s|�t�u|�v||�w|�x|�y�z||�{|�||�}|�~|�|@ԁaz|ԂԃԄ|azazԅԆԥazԇazԈԉԗazԊazԋԌazԍazazԎԏazazԐazԑԒazԓazԔazazԕazԖaz@azԘԙazԚazazԛazԜԝazԞazazԟԠazazԡԢazazԣԤazaz@azԦԧazazԨԩazԪazazԫԬazazԭԮazԯazaz԰azԱԲazԳazԴazazԵ@azԷՍԸ�AԹ�
ԺazazԻԼ�ԽazԾazԿaz������������������azb�v�t�����b�azazu���������v�az�"az����w�azkXgC������������kXv�azv�����gCazazu�����u���az����azkXm������������az��b�azaz��gCaz��������v�azb�az����jazgCaz����������v�azgC����azv�azv�az��az��azb��az�az�azaz�az�az�az��azaz����az�azaz�az�az��azaz@az�az��	az�
azaz�az�@azaz���=�az��:�az�az��,������mjv��u�az��azkX��b�v�v�v�� �%�!�$�"�#v�wUazv�w�v��&�)�'�(azu�t�ub�*�+ubwwv��-az�.�4�/�2�0�1v�gCgCaz�3azgQu��5�8�6�7azb�v�v��9azw�wu��;u��<u�az�>az�?�@waz��az�B�yaz�C�D�g�E�Vaz�Faz�Gaz�Haz�Iaz�J�Kaz�Laz�Mazaz�N�Oaz�Pazaz�Qaz�Raz�Saz�Taz�U@azaz�Waz�Xaz�Yaz�Z�[az�\az�]azaz�^az�_�`azaz�a�bazaz�caz�daz�eaz�f@az�hazaz�iaz�j�kaz�laz�maz�nazaz�oaz�paz�qaz�r�sazaz�taz�uaz�vaz�w�xazaz@�zaz�{azaz�|�}azaz�~az�ՀazazՁՂazՃazazՄՅazazՆՇazazՈazՉՊazՋazՌazaz@azՎՏazՐգazՑazՒazՓazՔՕazՖaz՗az՘azՙaz՚az՛az՜az՝azaz՞az՟ՠazazաazբ@azդazեկզazէazazըթլmժmիmazwխwծwv�azհձazazղazճazմazյazնշazazոazչպazջazռazazսվazտazaz@��b���8���������azaz��az��az��az|��az��az����az|��������������az������az��az��azazt�az��az��az��wazaz����az��azaz����azazw������az������az��azaz��azwaz��az��wazaz��az������az��az��azt�az��v���azt�|����
�|az��az���az�az�azaz�az��azaz��azaz�w�az�az�azaz��az�az�	az�
az�az�azazw�az�az|��$�azaz�az��az�az�azaz��azaz��az�azaz�az��azaz�� azaz�!�"az�#azaz@az�%az�&az�'az�(�)az�*az�+az�,azaz�-�.az�/az�0az�1azaz�2az�3�4azaz�5�6az�7az@az�9az�:�Naz�;�<azaz�=�>azaz�?az�@az�A�Baz�Caz�Dazaz�E�Fazaz�Gaz�Haz�Iaz�Jaz�K�Laz�Maz@az�Oaz�Paz�Qaz�Razaz�Saz�Taz�Uaz�Vaz�W�Xaz�Yazaz�Z�[azaz�\az�]az�^az�_az�`az�a@az�c֒�d�}�eaz�f�o�g�kaz�haz�iaz�jazA�laz�maz�nazAaz�p�v�qaz�r�t�sazazA�uazAaz�wazaz�x�yaz�zaz�{az�|azazu��~azaz�azրazցazւփazazքօazֆazևazazֈ։az֊az֋azaz֌֍az֎azaz֏֐azaz֑az@֓�֔��֕az֖֨֗az֘az֙az֚azaz֛֜az֝az֞azaz֟az֠az֡az֢az֣֤azaz֥֦az֧azaz@֩��֪azaz֫֬az֭azֺ֮֯azְazֱazֲazazֳazִֵazazֶazַazָֹaz@azazֻּazazֽaz־ֿaz�azaz�az����az��az��azaz@��az��az��az��az��az��az��az��az��azaz����azaz��az����azaz����az@az�����azaz������az��az��az����azaz����az��azaz����az��azaz����azaz��az����az@azaz����az��az��az��az��azaz��az����az�azaz��azaz��az�azaz@�azaz��azaz��az�az�az�azaz��az�azaz�az��	az�
azaz�az��
azaz@�az��#�az�azaz��azaz�az��azaz�az��azaz�az��azaz�az�az� az�!�"az@azaz�$�%az�&azaz�'az�(�)az�*az�+azaz�,az�-az�.�/azaz�0az�1�2az�3azaz�4az�5@az�7�f�8�X�9�U�:��;�`�<ص�=�[�>�h�?�O�@�L�A�H�B�Eaz�C�Daz|azaz�F|�Gaz|az�Iaz�J|�Kt�az�Maz�Naz|az�P�`az�Q�R�X�Sazaz�T�Uazaz�V�Wazaz�?�Yazaz�Z�[az�\az�]az�^�_azt�azgQ�aaz�baz�caz�daz�eaz�fazaz�gaz��iׄ�j�oaz�kaz�l�maz�n|�~az�p�}az�q�raz|�s�taz�u|�v||�w|�x|�y�z||�{�||�|az�~�az׀|azׁazׂaz׃gQazׅ׎׆׋ׇ׊az׈az׉|az|azaz׌׍azaz|׏�Jאךazבazגדזהazוazaz�חazazטיaz|azכױלפazםמסazןazנazv�עazazףazv�|ץצazקazazרazשתaz׫az׬az׭azaz׮ׯazazװw�azײ�#׳az״׷׵az׶azaz�B׸az׹azaz׺׻�׼��׽�׾׿gQb�v�{����w��V�wU�����^��wFkX������gQ��w����������������gC���;J����w�����w*��������<�ia��M�����"V�wc��������������pv�v����������[�������������w�����S���?����az��������������-��v�����ubw�,v���az������kXgCw������t�u���u��1��v��wwq�m���az�������"wv�����t�t�v��	��
����mv��
���v�v�az�az�����az��azjv�azjaz����w�w�w���v��� ��j����&�!�"������$az�%azaz�&az�'�(�8�)az�*�1�+�.�,�-mu�t�w�/�0v���u�v��2�6�3�5�4u�wazazu��7azu�v��9az�:�A�;�>�<�=mt�wu��?�@v���v�u��B�D�Cazv�az�E�Gaz�Fwazaz�H�Iazu�az�K�X�Lazaz�Maz�N|�O|�P|�Q�R|�S||�T|�U|�V|�W�|�Yaz�Zazaz|�\،�]�i�^�`�_azazMaz�a�baz�caz�daz�e�gaz�faz�az�h|az�j؂�k�t�laz�maz�naz�o�r�p�qv�w�v�az�sazkXaz�uaz�v�z�wazaz�x�yaz|az�{azaz�|�}�az�~azt�؀azaz؁jaz؃azaz؄؅az؆az��؇؈؊؉����R�؋����R�؍؛؎ؑaz؏azؐaz|ؘؒazؓazؔؕazazؖazؗgQt��'ؙ�'ؚ�'az؜az؝إ؞azaz؟ؠazء||آ|أؤ||v�azئazاب|ةazazتثazazجحazخazazدذazazرazزazسazشv�azض�ط��ظ��azعazغػؿؼazؽazؾazv�azaz�az�az��kX��V���H:az��|az��az��������az����az��az����azv�az��az��az��azaz����az��azv���v�azaz��az��az������az��az��azv�az��az����az��azazjaz������������az��az��azaz���azaz|��az���������azaz��az��faz��azaz���|���gCv�v�t�|az�az�az��az�az�az���@�q�az��1az����az�	az�
������
����||��|�|�|�6������|�||�|���+��#�������R�� R��!�"R�����V��$�)�%�'�&R���R�R��(R�R��*��R������,���-�.�/��R��0R�R����2�]�3�Z�4azaz�5�6�Maz�7az�8az�9�:az�;az�<�F�=az�>az�?az�@�Caz�Aaz�Bb�azaz�Daz�Eb�azaz�Gaz�Haz�I�Jaz�Kaz�Lazazv��N�Raz�O�Pazaz�QazgQ�Saz�Taz�Uazaz�V�Waz�Xaz�Yazu�az|�[�\||azM�^az�_|azaz�a�b���cٶ�daz�eaz�f٦�gٗaz�h�iazaz�j�kaz�l�v�mazaz�n�oaz�paz�qaz�raz�saz�taz�uazaz@�wـaz�x�yaz�zazaz�{�|azaz�}az�~�az@azفىقazكazلazمazنazهazazوaz@يazًّazٌazٍazَazُazِaz@ْazazٓazٔazٕٖaz@az٘azazٙazٚazٜٛazٝazٞazazٟaz٠١azaz٢az٣az٤٥azaz@٧az٨azaz٩٪az٫az٬azaz٭azٮٯazazٰazٱٲazazٳazٴٵazaz@azٷٸazazٹٺazazٻazټٽazazپٿazaz��az��az��az��azaz��az��az��az��@azaz����az��az����az��������azaz����az��azaz����azaz����az��az��az��azaz��az��az@��azaz��az��az����azaz��az��az����azaz����az��az��azaz@az����azaz��az����azaz����az��az��azaz�az��azaz��azaz�az@��4���azaz|�az����az�az�az�u��u��v���	��
v��Kv��Kv�az�
az��az�azaz��azaz�az�az�az��azaz��az�az�azaz��azazw���)� az�!az�"azaz�#�$az�%az�&azaz�'�(azazv��*az�+az�,�1az�-�.|�/az�0az|az�2azaz�3|az�5�o�6�J�7azaz�8�9azaz�:az�;az�<az�=az�>az�?�@az�Aazaz�Baz�C�Dazaz�Eaz�Faz�Gaz�H�Iazaz@�Kaz�Laz�M�^�Naz�Oaz�Pazaz�Q�Razaz�S�Taz�Uaz�Vaz�Waz�Xaz�Yazaz�Zaz�[�\azaz�]@azaz�_�`az�aazaz�baz�c�daz�eaz�fazaz�gaz�haz�iaz�j�kazaz�l�mazaz�nazw�az�p�q�az�raz�s�t��uڔ�vڈ�w�}az�x�y�|�zaz�{azu�azazb��~څaz�ڀڂazځazv�ڃڄjazazwچazڇazw�azډڏڊڌazڋw�u�ڍazڎazazw�ڐazڑazazڒazړazv�ڕ�ږڪazڗژکgCڙgCښڛv�ڜazڝڢazڞazڟڠڡazv�azv�ڣazڤڧڥڦazv�azv�ڨazazv�u�azګڭazڬb�azazڮگڱڰazazjڲ��ڳںڴazڵazڶazazڷڸڹazv�azv�azڻڼ��ڽ��azھڿ�az�azv�����v�azazv�������������v�azazv�����v�azazv�����������azazv�azv�����v�azazv���az��az��az����v�azazv�����az������az��az��az��az��v���v�az��az������v�v�����v�v�az������v���v�v�az��azv�az���az�����az��az��az�azv����v�v��v��v�azv�����azazv��azv�azaz��az�az��azv�azv��azaz�	�
�w�w��az�
az�azaz��az������azj�j�jazjj�jazaz�az��az�azjaz��q� �,�!�$az�"az�#azw��%�)az�&�'az�(azw�az�*azaz�+azu��-�kaz�.�/az�0az�1az�2t��3�S�4�:az�5az�6�7�9az�8azv�azv��;�C�<�?�=�>azv�azv��@azaz�A�Bazv�az�D�Iaz�E�F�Gazv��Hazv�az�J�O�K�M�Lv�azv��Nazv�az�Paz�Q�Razv�v�az�Taz�U�\�V�Y�W�Xazv�azv��Z�[azv�azv��]�b�^�_azv�az�`�av�azv��c�h�d�f�eazv�az�gv�azv��iaz�jazv�azaz�l�m�nazwaz�oaz�pazt��r��s�}�t�vaz�uv�az�w�y�xazazw��zaz�{�|azb�b�w�~ہ�ۀwkXv�azۂazۃ��ۄۅgCazۆ۠azۇazۈۉۖۊۑۋێazیۍb�azb�azۏb�ېb�azےۓazb�az۔ەb�b�azۗۜۘۙazb�azۚb�ۛazb�۝azaz۞۟azb�azۡ۴azۣۢۮۤ۫ۥۨazۦazۧazb�az۩۪b�b�azۭ۬azb�azb�ۯ۲۰۱azb�azb�۳azazb�۵ۼ۶az۷az۸ۻaz۹ۺb�azb�azb�۽az۾�ۿ�azb�azb���azazb�����az����������az��az������az��azv�����v�azazv�����������������v�azazv�����v�azazv���������v�azazv�����v�azazv�������������v�azazv�����v�azazv���������v�azazv�����v�azazv���az��az��az��az��azv�azwUaz�����azazv����wv�azaz�az�azm�az�azb�az��1��az�az�az��az�	��
v��v�v��v��
v���v�������v�azv�az��v�azv�az����v�azv�az��v�azv�az�azaz� |�!az�"az�#az�$�%�0gQ�&�'gQ�(gQ�)gQ�*gQ�+gQgQ�,�-gQ�.gQ�/gQ{�gQgQaz�2�P�3�@�4��5�=�6�;�7�8azSaz�9�:�az��<az�azaz�>�?�az�az�Aaz�B�Caz�Dazaz�E�Fazaz�G�Haz�Iazaz�Jaz�Kaz�Laz�M�Naz�Oazazw�az�Q�R�S�'azaz�TazH:�V��Wܓ�Xaz�Y�az�Z�[�maz�\az�]�^azaz�_�`az�aazaz�b�caz�dazaz�eaz�faz�g�haz�iaz�jaz�kazaz�laz@az�naz�oaz�p�qaz�raz�sazaz�t�uazaz�vaz�waz�xaz�y�zaz�{az�|az�}azaz�~@az܀az܁az܂azaz܃܄az܅azaz܆az܇܈azaz܉az܊܋azaz܌܍az܎azaz܏ܐazܑazܒazaz@ܔ��ܕazܖ��azܗazܘܙܷܚazܛܩܜazܝazazܞܟazazܠazܡazܢazܣazܤazܥܦazܧazazܨ@azܪazܫazܬazazܭazܮazܯazܰazܱܲazܳazazܴazܵazܶ@azazܸazܹazܺazܻazܼazܾܽ��azܿaz�az�az����az��azaz����az@azaz��az��az����azaz����azaz��az��az@��az��azaz��az����azaz����azaz��az����azaz��az��az����azaz����az��az��az@azaz�����az����az��azaz����azaz��az��az����az��az��azaz��az����az��azaz��az�azaz@�azaz��azaz��azaz��az�az�az�az�az�azaz�az�az��azaz�	�
azaz@�ݡ�
�6��"�az�azaz�az�az��azaz�az�az�az�az�az�az�az�az��az�azaz� �!azaz@az�#az�$az�%�&azaz�'az�(�)azaz�*�+azaz�,�-az�.azaz�/az�0�1az�2azaz�3az�4az�5az@�7��8�Kaz�9az�:az�;�<azaz�=�>azaz�?az�@�Aazaz�B�Caz�Daz�Eazaz�Faz�G�Haz�Iazaz�J@az�L�maz�M�Naz�O�^�Pazaz�Qaz�R�Saz�Tazaz�Uaz�Vaz�W�Xazaz�Y�Zazaz�[az�\az�]az@az�_az�`�aazaz�baz�c�dazaz�e�faz�gazaz�h�iaz�jazaz�kaz�l@azaz�n�oaz�paz�qaz�raz�sazaz�t�uaz�vazaz�waz�x�yazaz�z�{az�|az�}azaz�~@azaz݀az݂݁azaz݃az݄݅ݓ݆azaz݇az݈az݉݊azaz݋az݌ݍazazݎazݏݐazazݑݒaz@azݔazazݕݖazazݗazݘazݙݚazݛazݜazݝazݞazݟazazݠ@azݢ�ݣ��azݤݥݷazݦݧazazݨݩazݪazݫazݬazݭazazݮݯazazݰݱazazݲazݳݴazazݵݶazaz@ݸazݹazazݺݻazݼazݽazazݾݿazaz�az���azaz����azaz����az��az��az@azaz��az��az������az����az��az��az��az��azaz����az��az��azaz����azaz����azaz��@az������azaz����az��azaz����az��az��az��azaz��az��az����azaz��az@��azaz��az��az��az����az��az�az�az�azaz��az�azaz�az@��$��az�az�az�az��azaz�az��azaz��az�	az�
az�az�az�
azaz��azaz�@az�azaz�az��azaz��azaz�az�az��azaz��azaz�az�� azaz�!�"az�#azaz@�%az�&�8az�'�(az�)azaz�*�+azaz�,�-az�.azaz�/az�0az�1az�2az�3�4azaz�5az�6�7azaz@az�9�:azaz�;�<�J�=az�>az�?az�@az�Aazaz�Baz�C�Dazaz�Eaz�Faz�Gaz�H�Iazaz@�Kaz�Lazaz�Maz�N�Oazaz�Paz�Qaz�Raz�S�Tazaz�Uaz�Vaz�W@az�Y��Z��[���\�x�]az�^�e�_�caz�`az�aaz�b|azaz�dazMaz�f|�g�h|�i||�j�k|�l|�m||�n�o||�p�q||�r�s||�t|�u|�v�w|@|az�y�zޣ�{az�|ހ�}|��~���|ށޠނޑރދބazޅazazކއazazވމފQ��>��azތލazazގޏazazސv�azޒޓaz|ޔޖazޕ��azޗaz|ޘ|ޙޚ|ޛ||ޜޝ||ޞ|ޟ�|ޡazޢazaz||ޤazޥazަާ�ިazީazc�ުޫ޻ެ޵azޭޮ޲w�ޯw�ްw�ޱw�azj޳j޴jaz޶޷t�v�޸v�wF޹wF޺wFub޼޿޽޾b�gQgC�Kaz�azmaz����az��azaz��az��az��azv���߽����az��az��az��az����az��az��azaz��az��az����az��azaz��az��az����az��az��azaz��@az��ߜ���k���,��az���az�������������az������v�azu����������wcwazv�����az�iwj��������w�wUubv���v�v��M����wb�upw���v�azv�b�������az�b�v�az��1m�	��
���u��kX�
az��gQ����az�az�K��azwFv�az����azv�t�gCt��azm��"az��az�azaz� �!az|az�#az�$�&az�%@az�'�*�(az�)azaz��+azaz@�-az�.�c�/�[�0�@�1�=az�2�3az�4azaz�5az�6az�7v��8�9v��:v��;v��<v��v�az�>az�?gQaz�A�Uaz�Baz�Caz�D�E�Maz�Faz�G�Haz�Iazaz�Jaz�K�Lazazwaz�Naz�O�Paz�Qaz�Raz�Sazaz�Tw�az�Vaz�Waz�Xaz�Yaz�Zazwaz�\az�]|�^|�_�a�`|�|�b|�|�d�j�eaz�fazaz�g�hazaz�iazm�az�laz�m�uaz�n�oazaz�p�qaz�razaz�s�tazjaz�vߌ�w߆�xaz�yazaz�z�{az�|azaz�}�~azaz�az߀az߁߂azaz߃߄߅mazmaz߇az߈az߉azߊazazߋv�azߍߔߎazazߏazߐߑߓazߒ|az�azߕazazߖazߗߘߚazߙ�azazߛu�azߝazazߞߟ߯azߠazߡߢazazߣߤazazߥߦazߧazazߨazߩazߪ߫azaz߬az߭az߮az@߰az߱azaz߲az߳ߴߺߵ߸߶߷gCazkXaz߹azv�azaz߻߼azv�kX߾��߿az�az�az��az��azaz��az��az����az��azaz����az��azaz����azaz����az��azaz��@az���7���^���������������az����azaz|����az��az����azaz��az|������azaz@az��az|��������az��|azaz������|azaz|az����azaz����������az����|azaz|�azaz|���az��az||az�azaz�faz����	az��azaz��azgCazaz�
|az���
azaz��az�azaz��az��@az�azaz�azv���L��8��.��+��*az���(�az� az�!az�"az�#az�$azaz�%az�&�'azgCaz�)azu�az|azaz�,�-azV�az�/�1�0azaz|�2�4�3azaz|�5azaz�6�7az�"az�9�D�:�A�;�=az�<|azaz�>�?az�@�|��Bazaz�CH:|�E�I�F�Haz�G@az|azaz�J�Kaz��az�M�W�N�Saz�O�Paz�Qaz�Razazv�az�Taz�Uaz�Vaz@az�X�Yaz�Z�\|�[az|az�]az|�_��`��a��b�p�c�h�daz�eaz�fazaz�gazb��i�n�jaz�kaz�l�mwUgQv�azaz�o�'az�q�~az�raz�saz�t���u�v���w���x�����y�z�����{���|�}����V����azaz��azazgC|�|az����az�az�az|az�az|��az�az|�az�az|az����az�az��azaz|�azaz��azaz�����az�azaz�az|����az�az�az�azgCazV�az�az|�������az����azaz|�azaz|��az��az�gaz�az�azaz|�������az��az�az�@az��������gQazazgQ����gQazazgQaz��az����azaz��t�az����������az�kazaz��az������azjjaz����@azaz��|az������������������az|azaz���az��az��az����az��gCaz����waz{�az����az��az|az��az��|az���(���&az����az���azazb���|�|��|�|���||�|����|����������|��	����
��������
�W��WW�W�W��������|j�|j|j|���W|�|W���|�||� |�!|�"|�#|�$|�%||az�'az|�)az�*az�+az�,az�-�6�[�.�/W$�0W$�1W$�2W$�3W$�4W$�5W$W2W$פ��8���9�w�:�\�;�M�<�D�=�A�>�@�?azaz|az�az�B�Cazaz|�E�G�Fazaz|�H�Iaz@az�J�Kaz�LH W@r�N�Uaz�O�P�Qaz�az�Raz�S�Tazb�az�V�Yaz�Waz�Xaz|�Zazaz�[|az�]�f�^�baz�_�`az�aaz|azaz�caz�daz�e|az�g�s�h�q�i�maz�j�kazaz�lkXaz�nH:�o��pazv�az�razv�azaz�taz�u�vazaz|�x��y��z�az�{�|��}azaz�~�az�az�az�az���az����az��v�v���azgC��v��az�az��v�azaz���azaz|��az�az������azwaz��azazv��azaz��azazm�����az|az�azaz�az|��az�|az��az�az�az�az`��azaz|�������azaz�|azaz��az�az�az���azaz|az�az|az��az��az��az��azaz@���xaz�����Y���8����az����az��az������������az�Ku�v�w*az����az��mgCazv�����az��������������az��gCazaz��azgCaz��wcw*az�������az����������azaz��v�azaz����azu�az���������azkX��azb���azaz��azub�az���az�gQgCazazgC��7����
���b���w�w*w�M����wwckX���	v�v�gQw������
�wU�ubgC����wv��"�az�az�gCwUaz��%������w�w*w�Mb���"w��"� �!wckX�v��#�$v�gQw�wU�&�-�'�*�(�)�ubgCb��+�,kXv�{�gC�.�1�/�0��wv�az�2az�3�5�4azazv��6azazgCazu��9�M�:�Iaz�;�<�G�=�Faz�>�?w*�@w*�Aw*w*�B�Cw*w*�Dw*�Ew*�Bwcazaz�Hazwc�Jaz�Kaz�Lazazv�az�N�O�U�Paz�Q�Rwcaz�Sazaz�TwcgQ�Vaz�W�Xaz�B�Baz�Zazaz�[az�\�]�f�^�baz�_u��`az�awaz�cazaz�dw*�eazgQ�g�maz�h�i�kaz�jaz��az�lb�az�n�wv��o�paz�qaz�razaz�s�tazaz�uaz�vazb�t�az�y��z�|az�{az|�}azaz�~azLaz�az|����az��M��M�M��M�M�MM�M��MM��MM�M�M�M��Mg�MM��MM��M�M�M�M�M�MMg��azaz��az�az�az�az�azaz��azaz�az�������n��Eaz�az�|�az���J����C������az������v��az�v�az�����az�azw���az��v�azv���azaz���az������az��az��az��azv�azaz����azaz��az��azw�az��az������������azaz����az�azaz����azv�az��az��azv�az����������az��az������az����az�az��azu�az����az��az����azazw���azaz�������azazw�azv����azaz��azaz�azj��az��az�azazv�����az�v�azaz��az�az�	az�
az�azw�az�
�.�������azaz��v�azv���az�az�v�azaz�azv�azb���%�� �az�b�azb��!�#az�"v�az�$azazw��&�*�'az�(�)azv�v�azaz�+az�,�-gCazv��/�>�0�4�1azaz�2�3azazgC�5�;�6�9�7�8v�azv�az�:azazv�az�<az�=azv�az�?�@az�Aaz�Bazazv��D�uaz�E�F�_�G�Z�H�Q�I�O�J�M�K�Lv�azw�az�Nazazv�az�Pazv��R�Vv��S�Tazv��Uazv�az�W�X�Yw�azw�azaz�[az�\az�]�^v�jaz�`�i�a�e�baz�caz�dazv�azaz�faz�g�hazaz�&�j�naz�k�laz�mazaz�az�o�paz�qaz�rv��saz�tazv�az�v��w��x��y�|az�zaz�{w�az�}azaz�~�az�azjv�az����az�azazv��azb��azv��az�azaz����azjaz�az�azv�az�����azaz���az��azazj�azaz�azj���azaz��azv��v�az���az�az�azv�azaz�az��azazw���az��az�azaz�w�az�az���azaz�az�v�az�azaz�v�az��%���az�az���������az��azaz��azv���azaz��az��az��azv�����������azaz��az��azw���azv�az����������azaz��azv���azv�az��azaz��v�az���������az��az��azaz����azw�az�����������az����azazw�az����azazv���������v���v�az��azv�azaz��az�w�az����az��azazv�az�az�w�azaz�az�az�az�azv�������
��
�azaz�	azw�az��azw�az�az����azv�v�azaz�v�az��az��azaz�az�v�az��az�azv�az�v�az� az�!az�"az�#az�$azv�azaz�&�'�H�(�6�)�2az�*�+�.az�,�-azv�azaz�/�0az�1azazv��3azaz�4�5azv�az�7�?az�8�9�<�:azw��;�j�=azaz�>jazaz�@�A�Eaz�B�C�Dazw�w�w��Faz�Gazw�azaz�Iazv��K�{�L���M��N��O�`�P�Z�Q�Vaz�R�Saz�Tazaz�Ujaz�Wazaz�Xaz�Yv�azaz�[�\az�]azaz�^�_azazv��a�r�b�j�c�f�daz�eazazv�az�g�h�iazv�v�az�k�o�l�n�mazw�azv�az�pazaz�qv�az�s�{�taz�u�x�v�wazv�v���yaz�zazazv��|az�}�az�~��&azv��azaz�az��azaz�az�az��azaz�jaz������az�az��az�azaz�azv���az���azb��azb�az���azaz�azw�����azv�azv�az�v�az������az�az�azv��v�az�w�azaz�v��az��azazv��azaz��az�azaz�v�az������������az�az�azazv����az�v�az��azaz��az�az����azazj��az��azv�����azazj����������azaz��az��azv���az������azaz��azv�����az��v�azjaz����������az��az��azw�azv���v���azv���az����az����azv�az����azv�v�az���6��������azaz����az��azaz�azv���az����azaz�azv��az�azazv��az��az��az�azazv�az�az�azj�	��
������
az�azjazaz��azv�azaz���v�az�v�azv��az�azaz��azv�az��,��(��"� az�!azv�az�#az�$�&�%azw�az�'azazv�az�)az�*�+azazv��-�2�.az�/az�0azaz�1v�azaz�3�4az�5azv�az�7�N�8�>�9az�:azaz�;�<az�=az�az�?az�@�Faz�Aaz�B�C�Dv�az�Eazazv��G�Jaz�H�Iv�azv��K�Lv�az�Mazazv��O�`�P�U�Qv��Raz�Sazaz�Tv�az�V�Zaz�W�Xaz�Yazazv�az�[�\�^az�]azv��_azv�az�a�q�b�faz�caz�d�ev�v�az�g�jaz�h�iv�azv��k�n�l�mv�azazv��o�pv�w�azw��r�x�saz�t�vaz�uw�az�wazazw�az�y�zazv�az�|�k�}���~����az����az��azaz�azv���az�v�azazv��az�azv�az�����az�az���azazv�az�v�azaz����v�azv���azv�v�az�����az�azazv��azaz�az�azv��azaz�az�az�azv���������azaz�az�az�&��az���azv�v�azaz�v��v�az��������az�azv���azw���azazv�az��az��az��azv�����az������azv�v�az������azazv�az��azv���������������az��v�v�az��azaz��v�az������az��azazv�������v�azv�v�az������az��azaz��azv���������az��azv���azazv���az��az��azv�����-��������az��azv�az���az��v�azv�azaz�az�w�az��
��	��az�azv���azb�az�v�az�
az�az�azw�az��az�az�azv��az�azazv���%��az�az��azaz���� �az��w�azaz�v�az�!�#�"azazw��$azazv��&az�'�*�(azaz�)v�az�+az�,azw�az�.�Baz�/�0�:�1�7�2�5�3�4azv�v�az�6v�azv��8az�9azazv��;�?az�<az�=az�>v�azaz�@�Aazjaz�C�\�D�P�E�Iaz�F�G�Hazv�v�az�J�Maz�K�Lazv�azaz�N�Ow�azv��Q�Y�R�U�S�Tazw�v�az�V�Xaz�Wv�azjaz�Zaz�[azv�az�]�d�^�b�_�a�`w�v�azazw��cazw�az�e�iaz�f�gaz�hazv�az�jazazv��l���m��n�xaz�o�paz�q�taz�r�sazv�az�uaz�vazaz�wazj�y��z��{�~az�|az�}azw��az�azw�azaz��az�azv�az��az�az��azw�az��v�az�azazw���������az���az�v�azaz�v�azaz��azaz�v�az�az�az��az�azv��azv�azaz����az��azj�v�v�az���azazv�az�v�az�������az�azazv�gCazaz����azazv��azv�azaz���az�azv��������azv�����v�azazv�azv����������az����v�����azaz��w�az��������az��v�v���azv�az��azaz��v�az��������������azv���v�azaz����azv�az������az����azv�az���az��azazv���������az����v�azv�����v�azv���azv������az�azazv����azaz�azv���jaz�azv�az��'������az�az��azazv�az���	azv��
azazv���az�
�jv�az�az�azv�az��!����az�az�v�az�azazv����jazv���v�azaz� azv��"�$az�#azv��%az�&azv�az�(�5�)az�*�0�+�.az�,�-azazv�az�/F�az�1�4�2azaz�3v�azazv��6�=�7�:az�8�9azazv��;v��<azv�j�>�B�?�@v�azaz�Aazv��Cazaz�Dazv��F�K�Gaz�Haz�Iaz�Jazv�az�L�Zaz�Maz�N�O�Taz�P�Q|�R||�S|��U�Vaz|az�W�Xaz�Yaz�az�[�^az�\�]az|azaz�_az�`az�aaz�baz�c�daz�eaz�fazaz�g�hazaz�i�jazaz�kaz�l�mazw�az�o��p��q��r��sazaz�taz�u�vazaz�w�xazaz�y�zazaz�{�|az�}az�~az�az�az�azw�azaz��az�az�az�azaz�az�jaz|��azaz�az���az���az��azaz|�azaz���|az�az�az�az�azaz�gQaz���az|�az��az�az�azaz�az�azv���������az�azazM�azaz|�����azaz|�azaz��az�azaz�azv��az�az�az��az�az�azv���������azv���gCb�v�������b�kXw��az����t�gCv�w*��az��azaz���raz����������azu���v���v�����az��azv�az��azaz����azv�gQ������az������ubw�����az��az��azw�az������ww����az��azwazv�����az��az��azv�az��az��az�azwUaz����7��az�az��az�azaz�az��az�az�az�az�azaz��az�az�az�	az�
az�az�azaz�
@az��#az�az�az��az�az�azaz��azaz��az�azaz�az�az�az��az� az�!az�"azaz@az�$�%az�&azaz�'�(az�)az�*az�+az�,azaz�-�.azaz�/�0azaz�1az�2az�3�4az�5az�6az@az�8��9�]az�:az�;az�<�=�Maz�>az�?�@az�Aazaz�Baz�C�Dazaz�E�Faz�Gaz�Haz�Iaz�Jaz�Kaz�Lazazmaz�Naz�Oaz�Paz�Qaz�R�Sazaz�Taz�U�Vaz�Wazaz�X�Yazaz�Zaz�[az�\azv��^��_az�`�q�aaz�bazaz�caz�d�eaz�faz�gazaz�h�iazaz�jaz�kaz�l�maz�naz�oazaz�p@azaz�raz�s�tazaz�uaz�v�wazaz�x�yazaz�zaz�{az�|az�}�~azaz�az�az�az@�azaz��az�azaz�az�az��azaz�az��azaz�az��azaz��azaz�az�@az�������az��az���az�azaz��az��azv�azv����az|az�az|azaz��az�az�az����az��azaz�azv����azaz�v�azaz��azv�az���az�az�azwm���az�azw�azgQ��v�az��az������az����az����az��azaz������������az��gC��gCazgCaz��az��az��v�����az��az��azaz��azv�az��ubaz��azaz����az������azaz��az������az��w�w����b�gCjaz��az����w�azw�azaz����azaz����az��az��az��az�azaz��az�azaz�v�az�azaz�az�az����az�az�azaz�az��azaz�az�az�az�	�
az�azaz�az�
az@��d�az�az��az�azaz�az|�az��.��-az�az��az�az�azaz�az� �!azaz�"�#az�$azaz�%az�&az�'�(azaz�)az�*�+az�,az@azaz|�/�C�0azaz�1az�2�3azaz�4�5azaz�6az�7az�8az�9�:az�;azaz�<�=az�>azaz�?az�@�Aaz�Bazaz@az�Daz�E�Fazaz�G�H�Waz�Iaz�J�Kazaz�Laz�Maz�Naz�Oaz�Paz�Qaz�R�Saz�Tazaz�Uaz�V@az�Xaz�Yaz�Zazaz�[�\azaz�]az�^az�_az�`�aaz�baz�caz�dazaz�e@az�g���h��i�C�j��k��l�az�m�n��o�{�p�v�qaz�r�taz�s��azaz�uaz|�w�y�xazaz|az�z|az�|�~az�}|az|azaz��azaz��az�azaz�az��azaz��az�az�az�azaz��az�az�az@az�azaz��azaz��azaz��az�azaz�az�az��az�az�az�az�az�az�az�azaz@�az�az�az�az�azaz��azaz�az��azaz��az�azaz��az�azaz�az��az�azaz@�����U����||��|�||��|����||����|��|��||����||��|����||����||@���0��������az������az����az��az��az��azgCazaz��az�i@az���,�������������T������az����������az��az��azj��v�����jaz��azaz��azv����az��az���azazv����az�az�azazv��azaz�azv���az�az����az�azazv�az��azv�az�	�az�
�az�azaz�
�azazv����azaz�az�az�azv�������azv�az�gQaz�azazgQaz�azv�� �8az�!�"�-�#�'�$azaz�%�&azv�az�(�*az�)azv��+azaz�,v�az�.�3�/azaz�0�1azaz�2v�az�4azaz�5�6az�7v�v�az�9�M�:�C�;�?az�<az�=�>azu�az�@az�Aazaz�B��az�D�Haz�E�Fazaz�Gazv��Iazaz�J�Kazaz�Lv�az�Nazaz�O�Pazaz�Qaz�Raz�Sv�az�U��V�naz�W�X�`az�Y�Zaz�[�]az�\v�azaz�^az�_azj�a�h�b�e�cazaz�dazv��faz�gazv�az�iaz�j�laz�kazv�az�mazj�o��p��q�uaz�r�saz�tazv�az�v�yaz�w�xazv��"�z�|�{az��az�}azaz�~azv��������azv�az�az�azazw������azazv�az�v�az�azaz�v�azaz��az��v�azazv�az����az�azaz��azv�az�az�azaz��azazv���az�������az�az�azv�az��azv�az�az�azaz�azw�az��az�az��v�azv�az�����az��az���azv�az��azgCaz�azv�����az��az����azazv�az��az����azaz��v�az������azaz��az��az��az��v�az��az��az����az����azazv���azaz��azv����'�������������������azaz��az��az��azv�������azaz��v�azaz������w*azaz��v�az������azaz����azv�az�az��az�az�w���w�w�w��azw�az��	��az��azv���azv�az�azaz��az�azazj�
azaz�v��az�
v�azaz������az�az�azaz�jazaz��azaz�azv��azaz�az��azazjaz� �!az�"v��#az�$az�%azaz�&v�az�(�_�)�3az�*az�+�,az�-az�.azaz�/�0azaz�1az�2jazaz�4�5�F�6�A�7az�8�>�9az�:�=az�;�<azv�azv�az�?�@azv�v�azaz�Baz�Caz�D�Ev�azv��G�T�H�P�I�M�J�Kazjj�Lv�az�Nazaz�Oazv�az�Qaz�R�Sazv�az�U�Yaz�Vaz�Waz�Xv�az�Z�]�[azaz�\jaz�^azw�az�`�jaz�aaz�b�caz�d�g�eaz�fazv�az�hazaz�iazv�az�kaz�l�m�raz�naz�oaz�p�qazv�az�s�|�t�x�u�vazw��wazw�az�y�{az�zazb�azb��}az�~azv��b�az��N�������v����az���az�az�v�azaz��azv�azaz��az�azaz��azazv���������az��azv�azaz�az�azv�az��azaz��azv�azaz��az��az��azv�az�azv�az��az�az����az�azazv�az��azazv����az�az�azv�azaz�az�v�az������az�az�������az������azv�azv�az��az��azazv�az��������jazv�w���������azw�az��az��azv�az��az��������az����az��az��azazv�������azaz��az��v�az��azaz����az��az��az����az�������>az�>az��az��azazw����>�������������az�az�az�azazv�az��azaz�az�v�az�az�azaz�az��azv�az��
az�az�az�az�	v�azaz��v��
azaz��azazv���)����az��azaz�az�w�az�azaz��azazv�az���%��#� �!azv��"azazw�az�$azv��&az�'az�(azv�az�*�9�+�4�,�.�-azjazaz�/�0�2v��1v�azaz�3v�az�5azaz�6az�7az�8azv��:azaz�;az�<�=azazv��?azaz�@�A�I�Baz�C�F�Dazaz�EazgC�Gazaz�Hazw��Jazaz�K�Lazv��MazgC�O��P�o�Q�caz�R�S�]�T�Yaz�Uaz�Vaz�W�Xazazw�az�Zaz�[�\azv�azaz�^az�_az�`�aazaz�bgQazaz�d�e�j�fazaz�gaz�h�iazv�az�kazaz�laz�maz�nv�az�p��q��r�~az�s�t�z�u�x�v�wazv�v�azaz�yv�azaz�{�|azaz�}w�az������az�azgCaz�azv��azv��v�az�az�azaz�v�azaz�����v�azaz�az��azazv�������v�azazv���azv�v�az����azv�azv��v�v�azaz���az�az�az�az�az�jazaz����az��azw��v�azv�az��azazw��������az������az�az�azw�az����azaz��azazv�����az��az��azv�az����azv�az����az������������azv�azv�az��azv�az��az��azaz��az��az����azazw���az����az����������az��azv���azv�az��azaz��v�az��az��az��azaz��azv���az�����az��az������az��azazv���azaz��v�az����az��az���azv�azazv�az��az�azv�az��
��az����azazv�azv��	�v��
v�az�azv�az��az�azv����azv�az��azv��azazv�����|�����|�|��|� �(�!�$�"||�#|��%��&|�'|�|�)�+|�*|�|��-�.az||�/az|�1�M�2�H�3�A�4�@�5az�6az�7�:�8azaz�9|az�;�=az�<|az�>�?az|az�raz|�B�Faz�C�DV6VT�EVcVT�Gaz�az�Iaz�J�Laz�Kaz@&|az�Nazaz�Oaz�Paz�Qaz�R�Saz�Tazazv��V��W�iaz�X�Yaz�Zaz�[az�\azaz�]az�^az�_�`azaz�a�baz�caz�dazaz�e�faz�gaz�hazaz@az�j�kaz�l�{az�maz�naz�oaz�paz�qaz�r�sazaz�t�uaz�vaz�wazaz�x�yazaz�z@az�|az�}az�~azaz�az��azaz�az��azaz��azaz�az�az�az@�����az�az�az���az�azaz��azaz��azaz��az�az�az�az�azaz@�az�az�azaz��azaz�az��az�az�azaz�az�@az�azaz��az�az�azaz��az�az�az�azaz�az��azaz�az�az�az@az�az�����azaz�az���azaz����azaz��az��az��az��az��az����azaz��@azaz��az��az����az��az��az��azaz��az����azaz����az��azaz��az@���!���az��az����az���������azaz����azaz����azaz����az��azaz��az��az����azaz��@azaz��az����az�az�az�az�az�azaz�az��azaz��azaz@az��az�az�azaz�az�az��az�az�	azaz�
�az�azaz�
az@az�az�az��azaz�az��azaz�az��az�az�azaz��azaz��azaz�az� @azaz�"az�#az�$�%az�&az�'�5�(az�)az�*azaz�+�,az�-az�.azaz�/az�0az�1az�2az�3az�4@azaz�6az�7�8az�9az�:azaz�;�<az�=az�>az�?azaz�@�Aazaz�B@az�D�
�E��F�}�Gaz�H�k�I�Zaz�J�Kazaz�L�Maz�Naz�Oaz�Pazaz�Q�Raz�Sazaz�T�Uazaz�Vaz�Waz�Xaz�Yaz@az�[�\az�]az�^az�_az�`az�aazaz�baz�caz�daz�eaz�f�gazaz�h�iazaz�jaz@�laz�mazaz�n�oaz�pazaz�qaz�r�saz�taz�uaz�vaz�waz�xazaz�y�zaz�{az�|azaz@�~azaz�az��azaz�az�az�az��az�azaz�az��az�az�az�az�azaz��az@az�az���az����azaz�az��azaz�az�|azaz������az��az�az�azaz�az��azaz��az�az�azaz��azaz@���az�azaz��azaz��azaz�az��azaz�az��azaz@az��az�azaz�az�az�az����az��az��azaz��az��@az��azaz��az��az��az����azaz����az��az��az��az��azaz����azaz@��az���az������az��az��az��az����azaz����az��azaz��az����az��azaz��az��az@az��az����az��azaz��az����az��az��azaz��az��az�azaz�@azaz��az�azaz��azaz��az�az�azaz��azaz��az�az�azaz�	@az��k�� �
azaz�az��az�az�az�azaz�az�az�az�az�az��az�azaz�az��azaz�@azaz�!�"�Daz�#�$�4az�%az�&az�'�(az�)az�*az�+az�,azaz�-az�.az�/az�0az�1�2az�3azaz@�5azaz�6az�7az�8az�9�:az�;az�<az�=azaz�>az�?�@azaz�A�Baz�Cazaz@�E�V�Faz�Gaz�Hazaz�I�Jaz�Kaz�Lazaz�M�Nazaz�Oaz�P�Qaz�Razaz�S�Tazaz�Uaz@az�Waz�X�Yazaz�Z�[az�\�c�]�`�^�_azgCb�u��a�bv�jkXaz�dazaz�e�faz�gaz�haz�i�jv�azv�azaz�l�maz�naz�oaz�p�az�q�razaz�s�taz�uaz�vazaz�w�xaz�yaz�zazaz�{az�|�}azaz�~az�@az�az�az�az�azaz��az�az�azaz��az�az�az�az�azaz�az@�����n����d��dd�d�d�d�d�d��dd�d�d��d�d�dd��d�d�ddq���nWd���Ld�d�X|�t���/�����b��aN`��L��L��cWc�������iM�����l�l�g&l�����ll���ll��l��l�=��g&����l�l����l��l��l��b�������������������dd��dm���d��d�Zdd��d����ddm���������������o�b�do�q�su+���b�������q��C�m��������������������b�d�Cb�su��������b��C�"�b�d�b���"�m��q�db�d����dd�b��Cq��q�su��n�m�b�`�����	�b�b�nW�
��y7�dd�
d��d���dd@��d@�d`�b�����Mw�c�b���c�{
d���(��%��#d{� d{�!d{�"dl}�d{�$��d{�&�'d{d{WM�)�-d{�*�+d{d{�,�d{d{�.d{}��0�Z�1�W�2b��3t��4�K�5xv�6xvxv�7xv�8xv�9�:xv�;xvxv�<xv�=�>�F�?xv�@�C�Axv�BxvxvW[xv�D�ExvW[xv�Gxvxv�Hxv�IW[�JxvW[�L�Q�Mxv�Nxv�Oxv�Pxvxv���Rxvxv�Sxv�Txv�U�Vxv��xv�X�Yd{M�tyc�cW�[N�\�]NN�^N�_�`NN�aN�bN�cN�dN�eN�fN�gN�hN�i�j�lN�kQ�N;�mNOTN�o���p�r�q��r��s�u�tc�t�d�v�waNb��xc��y���z��{��|gC�}gCgC�~gC�gCv�����gC�gCw�gC�wgC��gC�gC�gC�gC��gC�azgCgC�gCaz�gC�gCgC�gC��gC�gC�gCgCv���gC�gC����gCgC�gC�gC�kXgCgC�gC�gC�b�gC����gC��gC��gC�gC�gC�v�gCgC�gCw�gC��gC�����b��M�wU�MwU�?��gC�"gC�gC�b�gC����gC�gC�gCgC����gC��gC��gCkXgCgC����gC����gC��������gCwgCgC��gCv�������gC��gCkXgC������gCgQwgC��v�gC���&��������gC����gCgCazgC��gC��gC����gCgC����gC��gCgCaz��gCgC�����gC������gC��gC��gC����azgCaz��gC��gCaz��az���gC�gCazgC����	������[u�b����gCw*v�v������gC�Mubb���v��M�v�wUgC�
����MwU�
gCgC�b�wc�gCv�gQ��gC�gC���b���MgCb��gCkX��!����v�wv�gC�� ubkXwU{��"�$�#gC�Mv�gC�%b�v��'�X�(�/gC�)�*gC�+gCgC�,gC�-gC�.gCu��0�L�1�F�2�6�3gCgC�4�5gQ�?gC�7�?�8�;�9gC�:gCgCkXgC�<�=gC�>gCgCwgC�@gC�AgC�BgC�C�DgCgC�EwUgCgC�GgC�HgC�IgC�JgC�Kw*w��M�R�NgC�OgCgC�PgC�QazgCgC�SgC�TgC�U�VgCgC�WgC��Y�d�Z�_�[w�\�^�]wwb�b�ww�`�aw�bww�cwgQ�e�u�fw�gw�hw�i�o�jw�kww�l�mww�ngCw�pw�qww�rw�sw�tgCw�vw�ww�x�~w�yw�z�{w�|ww�}wgCw��ww�w�wUw����MaNt��x��aknWak�X��=�������������Md�`����Rpz�pz��`�L�aNp�����cWi��L�����iMliQ�"���s�l�H:`���M�LNb������Ndb���g4NcWc�����`�MLd�b�M�g_�������M��b�c�q����L�c��azm�|�b�`����������M����m�WpWp��Wpm�Lb���Mg_��n�d��������������b���������� W~kuW���kuW�*�M��M��M��M����M��M��M��M��M��MM��M�����LMg_߫��������t�Li�c�����Nb�cWd�����������������cWb�`�b�����Лj*NcW����kub�cWg_��cWMg4��NM�Ml��	����M�d`����nW��cWcWW�4Pb��
���
M�nWq~L�nW���d�������W�����W�W���L�cW��'�� ��b�g4��c�li��Nd`�M�!�$�"�#L�xvaNy7�%�&i�McWM�(�/�)�,�*�+b�Md{b��-�.aNb�LM�0�3�1�2MdnWc��4�<�5M�6�9�7�8t�di�`��:�;L�Q�W�c�i�d�>�_�?�H�@�G�AM�Bak�Cakak�D�Eak�Fakak�{akd�I�JakiM�K���L�P�M�N�iaz�Oazaz�i�Q�gC�R�S��T��U�k�V�\gC�W�X�Y��b��Z�[kXwcgQgC�]�d�^�a�_�`w��M�M�gQ�bw*�cb�ub�e�gw�fazgC�h�j�ikXkX�Mw��l�~�m�u�n�r�o�pwkX�qw*wgQ�s�tw�kXgCb��v�z�w�ygQ�xgCkXwUgC�{�|b�gC�}wb������gC�w*ub�b�kXgQ��gC�b��v�kX��wUww*wU�����v����ub�wUw*gCkXgC������gC�gC<v�gCgC�i���i�wcgC�v��ub�������kX�azwgCkX�b�gC��gQ�v�v�gCaz���gQ��kX�b�gCb�gC���b�azw��wub�iv����gC������az����azazw�azkX���v�����v�wwU����azubb�wb�����������gCkXwkX������az��wgCaz������������������gCw�az������w�gCupgCb���������gC��wgCwkXv�gC����������kX�azkXv�����gC��w��kXRT��gCkXgC�����������w*gCw���v���wwgC�����azgCgCaz������azv��w�v�gC�azw�wUgC���azgC�v�gC��v��gCv�v��gCw��	��
�M��,���
v�������gC�ubb�kXazgC�gCaz���w*v�gC���-gC�b��igC��!��gC�� w*�gC�"�(�#�&kX�$gC�%b�gQv��'�-az�)b��*b�w�+gQw�az�-�.�=�/�6�0�3�1�2azkXw�w*�4�5w*ww�gC�7�;�8�9azb�wU�:gCwgC�<v�az�>�F�?�C�@�Ab�wgC�BazgC�D�Eazb�wb��G�K�H�Jaz�I�wgCkXv��Lu�wU�N�k�Ov��P�^�Q�U�R�TgC�SgCv�gCkX�V�[�W�Y�X��?gQgC�ZgCv��\�]�kX�"w��_�f�`�b�a�iazw*�c�eb��dazv�w���gaz�h�igCv��jgQwaz�l�|�m�q�ngCb��ogC�pazkX�r�y�s�w�t�vkX�ukXgCgQaz�xkXkXgC�zw��{b�gCaz�}��~������wgQw�gCb�v�gC��w��b�gQgC��gCwUgCv��gC���b�gCw��wc�wcwwUgC�������gC������gCww��b�kXgQ��b����"�ubkXw���gC����kXub��gQkXb������gCw�kX���wwcgCubv�����ubkXkXb���w�Mb�gC���������gC��gQw*gC�gCv��������gC��gCb��?kXazb���������az��kX�i����w*kXw*gC������b����-kXaz��azb�w*�������������M����gCkX����kXgC�-b���������gQwUaz��b�gC��gCb�az������gC����b����?w*waz��������azkXgC��w*kXgC��b���b�v����.�����������gC��v����?wubgC����wUv��kXwgCgC�gCaz������b��ubv�ubw�	�
azkX��gQ���
��Mw�ub�gCwU����v�b�az��"����b��b��wUwkX�azgC�� ��azgCkX�ww�!azazw�#�)�$�'�%kX�&gCkXb�kX�(ww�*�,w��+kXv�gC�-kX�"�/�N�0�@�1�9�2�5�3�4wwUazw�6�8kX�7gCkXkXgC�:�=�;�<gCkXkXgC�>�?kXgCb�w*�A�H�B�D�CgCgCw*�E�FgQwUkX�GgCw*�I�L�JgC�KkXgCwgC�MkXgC�Ow�P�X�Q�V�R�T�SkXwcv�wU�UgQgCgC�WwgC�Y�\�Z�[gCb�w*b��]�^ubgCgCb��`�o�a�mak�b�c�i�dxv�e�gxv�fxvq��hxvm�xvxv�jxv�k�lxvi#xv�n��akd�p�qlic�b�c��s���t�Y�u���v�wg4M��x��y��z��{l�|l�}��~�NazlOT�M�lb�iM�����d�cWlL��������l�ll`���l�d(|iM�iM�8�����8iMM�Ml�w�M`�M�������l�lW��M`��b��b�b����b��b���b�b���b��b��?b��b��b�b���b�b��b��b��?L��M��l������iMiM���g&�g&����lwoh`������LX��������l��ll����ll��l��l����ll�=`�L����������lb�kul��i�l����lc�M���lMiM��`�������g	��g	��g	����g	g	����g	��g	g	����g	��g	��g	b������!��������������������e�b�i�e���e�i�b�`��������b�X�?v�w�azX!����b��d{�d��Lc��azgQ���b��wb�Nz�������
`��u��	wwUe�aN���
�e��e�`�b�x��x�e��e�����L�=�}�d{�g4��e�i�i�`��� `���b�yb��bL�"�4�#�-�$�'�%�&c�akdaz�(�*L�)H:�p��+m�,m���.�1�/�0NllN�2�3dNb^C�5�D�6�?�7�>�8�;�9�:�*�8s��<�=X/X>XMtkc���@�AL�e`��BgQ�Cv�v��E�G�FdML��H�V�I�L�J�KgQt�gQazy�Mb��N�O+��P+�+��Q�R+�+��S�T+��U+�+��e��W�Xgnh�gn�Z�[L�ak�\�]Mp��^�s�_�e�`�c�a�bc�lit�i�d{�ddN�f�i�g�hb�c�b�l�j�kb�L�b��l�m�p�n�oؒM�c�d{�q�rb�c�Nd{�t�z�u�w�vd{cWc��x�yNb�� d�{�~�|�}�^b�b�c����dxvxvd���d��������������nW������b�����b�����b�b���b���b�����b�b���b�����b�b���b����b���b�b���b�p���b�b���b���b���b�x�c���������d{��d{��d{��d{��d{��d{��d{��d{d{����d{d{����d{d{@Md{����`�c�M`��������dli��t���������d����dd��d��������������������b�db���o�b�o�������c�o�c���q�c�q�����������dq�d����d����#���+���+��������������Q���Q������su"�X\���������i#�N<�d����J@��}�o�������������Xl#�a����m���A����������m���o����d�@������d������d�m�dd������do�b�d��������������i#�K�K�����db�b��N����b�"�"�R��i#b�d�C��
�	��
dd�ad�b�d��d��Cd�o�do���\c����H��%������=�j*j*X|��X�X�X�X���"� �!X�X�X�X��#�$X�j*X�X��&�BX��'�(�1X��)X��*�+X��,X�X��-�.X��/X�X��0X�Y�2�:�3X�X��4�5X�X��6X��7X��8X��9X�Y�;X�X��<�=X��>X�X��?X��@X��AX�Y�C�F�D�EYY&Y6YE�GYTYcYr�I�P�JX��K�M�LX�Y6���N�OY�Y�Y�Y��Q�W�R�U�S�TY�Y�Y�Y��VY�Y�Y��X�YX�Z
�Z�[Y�X���Z
K��]�^�a�_�`b�typ�M��b�cb�dL�M�e���f�o�g�j�h�ic�c�Mc��k�nc��l�m�xZ�xxvj*�p�s�q�rm�d{Nb��t���ul�v��w�zM�x�yMM�O�{�|M���}�~�OM�OM��MM��Mq�xv`�������������������ku��ku��kue���e�ku������������������b���b�Z(b����}��b���li������b���b���b�`�b�����n�b�b�����NL�nW�����������������Fb���azp�b�����Mxvc��I��������L�nWdb�����NM���cWMm������������b�`�p�L����i�`�Mh��������xvb�`�t�����N����c�akc�p�N����M������������������L�iMMxv������p���{
������{
{
����{
Z7{
��{
{
��{
��Z7{
��M�����������d$b�����b�p�b���b���b�b�����p���p���p�p�����p�p�����p�p���ZEp���b���b���������b�p�x�b�b����������b���nWb�����M�MMi����$�������`�b���b�M��M���M�M�MM�O��
d{��g_�g_���	�
g_p�p��g_p�p�g_�p��cW��cW�cW��cW�cWcW�cW�cW�cW�cW�cW��cWcW$$�cW�cW�cW� cWcW�!cW�"�#cW�WcW�%�q�&�5M��'y7�(y7�)�*y7y7�+y7�,y7�-�.y7�/y7�0y7�1y7�2y7�3y7y7�4ZYy7q~�6�7nWnW�8�9nWnW�:nW�;�<nW�=�T�>�K�?�D�@OR�AOROR�BOR�CnWOR�EOR�FOR�G�IOR�HORnW�JORnWOR�LOR�MOR�N�QOR�O�PORnWOROR�ROR�SnWOR�U�[�VOROR�WOR�X�YOROR�ZnWOR�\�d�]OR�^�a�_OROR�`nWOR�bOROR�cnWOR�e�kOR�f�g�iOR�hnWOROR�jnWOROR�l�m�oOR�nnWOROR�pnWOR�r�vn��s�tq~ak�uakq~�w��q~�xq~�yq~�z�{q~�|q~q~�}q~�~�q~��q~q~����q~��q~q~��@q~����az����ML�M��������McWcWM��MaN������O�Zh������O���O�O���O���O���O�����O�O�������g4������az��azaz��az��az��az��az����az��azwUaz����az��az��az����az��az��az��az��azazwU��azaz����az��azaz��az����azaz��wUaz��`�����������d{��d{d{��d{��d{��b�d{������d{������d{d{��d{��d{��b�d{b�b���d{��d{d{����d{d{��d{����d{d{��d{��d{����d{d{����d{d{��d{@d{��d{��d{����b���b�b���b�����b���b���b�b���b�����b���b���b���b�b�b���������L�L���������ZvL���Zv��Zv����>C��L���L�ZvL�L���L�����L���L���>C��>C>C�>C��>C>r>C�d�N�NN�N��	N�
N�N�N�
NN��N�NN�N�N�N�N�N��N@N�����.�L��L��L�L��L��L�� �!L��"L�L��#L��$L��%L��&�'L��(L�L��)�*L��+L�L��,L��-@L��/�0LaN�1�K�2�7�3�6�4�"�"�5�"M��"M��8�H�9M��:M�M��;�<M��=M�M��>M��?M��@M��AM��B�CM��DM��EM�M��F�GM�Z�M��IM��J�"Z�M��L���M�i�N�U�O�Q�Pb�Z��9��Rg4�S�Tg4g4Z�b��V�Wd�X�g�Y�db��Z�[ak�\akak�]ak�^ak�_ak�`ak�aak�b�cakakٛL�e�fku�IZ��hb�b�N�j�m�k�l��q~lit��n���oM�p�t�q�(b��rB�sZ�F��u���v���w�xZ�F��y�V�zF��{F��|F�F��}�~F�F����F��dF�����F�i@Z�F������6B�����V���V���V���V�����V�V���V�����V�VZ�Z�������Z�����Z���Z�Z�����Z�Z���Z�[����Z���Z���Z���������Z�[Z���Z�Z�[��Z���Z���Z���Z�[Z�b�aN��������������b�Nb�����d{nWnWc�������b���p���d��dg4`�������nWc�����c���c��Oc���t�����az����c�azc���xvc���c�az����L�����P�����������b�����t���M�M�����M���M�M���M���M�����M���M���M�M���M���=M�����������b�b���b���b����Y���Y���Y���Y���Y���������Y�Y���Y�z�������Y�z�Y�Y���Y�z����b�Mt�b���dg&l������b��������������az��������az���az����azmaz�azaz��azZ�L���Mb�b�aN��!�	��
�b����d�
����xv����������3���3�3��3���3�3���3�[3���xvnWcWq~p��� n�aNb�j��"�M�#�L�I�$e��%�&�1�'e�e��(�)e�e��*�+e��,e�e��-e��.�/e�e��0e�h�2�<e��3�4e�e��5�6e�e��7e��8e��9�:e��;e�he�e��=�>e��?e��@�F�Ae��Be�e��C�De��Ee�e�he��G�He�e��Ie��J�Ke�e�hg4`��N�Oy7db�M��Q�s�R�^�S�[�T�Uc�b�b��V�W�Z�Xd�YL�dL�dt��\�]t�akxvb��_�b�`�ac�g4iM�,�c�dxviMcW�e�f�q�gd�h�n�i�ld�j�k�o�!�md����o�pd��Q��d�rMd�t���u�z�v�w`�M�ak�x�yiMb�iM�{��b��|�}���~��OMM��M��M����O�O�������o��M���oM�oM��i�����������cW������MM����MM��g�M����`�d{b�3����������������������������Mp�kuM����M�t�xvL��������t�b�b�xv����L�M�`�����lil�m�������������`�b�b�L������g_����m�NԦMnWL���������0b���M��Lm�L����li`�Nb�����������������b��b`�j*����g4xvb�����N��NN����NN����NN����NN��N��N��U�N��������`�������q~����q~q~*�q~����qpp�*�cW`�����M�Gc�`�����������aNb�{
��b��X����������ku��`�e�b��Nlxm���
����aNM�N����������������M����q��;�����;���;�����;�;���l�;������M�����;��;���;q�q��;��;�;�	�
��;��Oa�;M����Lq~Nb���6��!������M�b�d{cW��b�`�d������M�Fb�`��� akb�M�g4�"�0�#�-�$�%rfcWd�&�'az�(az�)azaz�*�+az�,azgCaz�.�/MNkub��1�4�2�3L�c�b�cWb��5iMc��7�[�8�E�9�B�:�;`�MM�<̣�=�>�@M�?M���AM��M�C�Dy7L�d$d�F�K�G�JcW�Hb��Iٰb�ML�L�Rp��M�N�Oak[#ak�P�QakX>akb��S�Tb��U�X�V�We�g_`�N�Y�ZeNnWku�\���]���^t��_d{�`�v�a�l�b�kaz�caz�d�eaz�fazaz�g�haz�iazaz�jkXazb�azaz�m�naz�oaz�pazaz�q�razaz�s�tazaz�u�Maz�waz�xazaz�y�zazaz�{az�|�}az�~azaz���azgCaz����aN��d�b��������d{
L�������Al�����g&azL��Mg���������b�nWb���Nb�����������{
��������g_dl�b����p�q~�F`�b�d{����j�b�b��bNc���������������K���������,`�c�az����i�g_���������������������������b�xvi�b�����L�b���b��������������������������������������������������������������q~����������3�3���3�[1pz`���Mb�������{
xvb�M������g_��g_��������������L�LnWb�����c�g_b�q~��������l�����������b�c�aNc�����b��8ld� b���L�b�xv����d{b�b�M������d{nW��`���`���`���`�����`�`��i����Np�d{��^���^�^��^��^wU����
��	c�Z���m�b��tyg_�
���Lc�{
b���!������b��x�[@b�xv��aNL�Nl����db�nWc��� b�MNc��"�/�#�%�$c�lc��&�+�'d�(�)b�c��*c�@L�,li�-b��.b�d{��0�F�1�6�2�3M�dd�4az�5�"w��7b��8�;�9�:Mc�b�Ae�<c��=�Ai��>i��?�@i��ei�i��Bi��C�D�Ei�3�B�i��G�Ili�HiMq~b��Jb�aN�L���M�]�N�\M�Od�P�Qd�Rd�Sdd�T�Ud�Vd�Wdd�Xd�Y�Zd�[dd�Nb�iM�^���_d�`���a�~�b�j�c�g�d�f|��eL�LMb��h�iMM�L�M�k�v�l�uN�m�ncW�ocW�pcW�qcW�rcW�s�tcW��cWb�L��w�{g_�xj*�yku�zN`��|L�L��}�Yb����������M`���ak����ak[Oak`���y7b���������N��`���[^`�g4��������b�yb�b���b�[m����c�MM|�������������������xv�������������������������$�xv��c�����c�c�[{����b���MnW��y7dL���������g_N��b�L�9b���g4nW������������L�������M���HMM��b�Mg4M����L�j�b�L���������b�NMd������L���dd��dP�M�L�����xv����xvxv����xvxv����xv��xvxv��xv��xv��xv����xvxv��xv����xv��xv��xvd����dd��d��d����dd����d��d��dd����d��d��dd��d��do�d����li��lili����li��lili����lili��li����li��lili����lili����lili��li��li�li@��a��*��M���M�M��M��M��	M��
M��M���
M��M��M��M��M�M��M���M�M��M��M�@M��M���M��M�M���M�M��M��� M��!M�M��"�#M�M��$�%M��&M�M��'M��(M��)��M��+�2�,�/�-�.xvb�M�ak�0�1m�b�Mt��3�N�4�=c��5�H�6�7�H�8�H�9�H�:�H�H�;�<�H�HQ�>nW�?ak�@ak�Aak�Bakak�C�Dak�Eak�Fakak�G�Hakak�Iak�Jak�K�Lakak�Mak@�O�Pq~t��Qt��Rd�Sdd�Td�Ud�V�Wd�Xdd�Yd�Z�[d�\dd�]d�^�_dd�`dq��bL��c�g�d�elj����fxvN�h�j�ib�g4M�k���l���m�v�n�q�o�pM�q~t�M�b��rxv�saz�t�uazb�az�w���x�yNxvy7�z�{���|��|�}�~���|��||��|����|��[�|��|[���|����|��|����||��|��|[�|��|����||����||[�[�|��||����||��|����|[�|����b�������tye���d����b�azazgC��ak��������������d{q�������q���q�O�q���O�q�b�����d����hL�{
b�������Mb�ku����iMaNb�L�����������������t��Xl�b������xM�w�iM��������cWb�M`�����g_xvdb�������������iMd{z�������d������b�N��b�N_F��xv������������dc�c�y(d]���^h4����h4��c�h4����y(�^[�c���������ݶb�aN��#�����#�#�����#���#�#�����#���#���#�#���#���#��������(d{`�b����T������2��������������akxvg_M��tyakq~c�����g4b��Xc���`��,�	i��
c��������
����������������������������������c���n��5��/��MLxv���(� b��!�"b�b��#�&�$�%[�"�=3����'=3`b��)b��*�+�,�p�~�-�.�~3Syx��0�4�C�1Ќ�2�3Mdb�i�ty�6�k�7�j�8�]�9�K�:�B�;�?�<��=�>az�[�?`��@H:�A��[��N�C�F�Dg4�E`�mv��G�I�H`�az�^`��Jmaz�L�S�M�N`���O�Q�P`�az[��Raz�>��T�Waz�U�V[�ݶ[��X�Z`��YL�`��[�\`�dxv[��^�a�_dd�`�Km��b�dq��cq�d�e�hd�fd�gq�dd�idq�b�t��l�mq~b�j*b��o���p���q��b��r�sd�t�|d�u�vd�wd�xd�yd�zd�{ddi#�}d�~d�d������d��d��dd����d��d��d��dd����d����[�������[�����[�[�����[���[�[���[���[���[���[�����[�[�N����[�����[�[�N��[���[�[�N����b���b���b���b���b�~�b���b���b�Л����Mj�d]����gCgCgQ����������g4��ak����������ak��aktkak��ak��aktkak��ak��akak����akak��ak����akak��ak����akak��akٛg4��������������m�`�dq~����c�L��b�az��azgC��������c�m�b������ֈ�������Ba����`�\�N+Q�LE�����aN���;���;�����~��~��������������~��~~��~������~��~����~����~����~~��~�;��~��~������~~�4~���;~�����~~����~~���~~�~��;~��%���������	���
�
������������������������������������������i��M������[����� �M�Mg�M�!M�"�,�#M�$�(�%M�&MM�'�;MM�)M�*�;�+�%�4M�-M�.�/M�0M�1M��M�3�FM�4M�5�6M�7M�8M�9M�:MM�;�<MM�=�>M�?M�@MM�AM�B�CM�DMM�EM@�G���H���I�w�J�u�K�tc��L�M�d�N�]N�O�P�WN�QN�RN�S�TN�U�VQ�NNQ�N�X�YN�ZNN�[�\NQ�NN�^N�_N�`N�aN�b�cNQ�N�e�l�fNN�g�hNN�iN�jN�kQ�NN�m�nN�oN�pN�qN�rN�sNYNg4`��vi�L�d{�x�{�y�zb�n�dq~�|���}aN�~�������b�b�����b���������b�b�b����b�p�b���b���b���b�yb�i�L�������������akiMc�M���Hm�d{��������cW��w�c�����L�b�b����O���O�����O�O���O���O�����O���O���O���O���O�O���OM����������������nWxv��aN��M����xvwM�b���������|�iM��aNli��li��li��li��li����lilih�����xv��xv������xv����xv������xvxv����xv����xv��xv����xv��xv��xv��xv��xv��xv��xvxv��xv����b�M����M��MM����M��M��MM��M��M�;������������liMMi�����e�iM��nW��b���b���b���b�b�b���������L�d{c�d������H��������akL�ak������azt�maz��ak`�������L�akak����ub��ub�ub�ub�ub�ub�ubazub`�b���@��c��	c��
�c��c�c��
c���c�c��c��c���c��c��c�c��c���c�c���c�c�[���.c��c��c��� c��!c�c��"�#c�c��$c��%c��&�'c��(c�c��)c��*�+c�c��,�-c�@c�c��/�0c��1c�c��2c��3c��4�5c�c��6c��7c��8c��9�:c�c��;c��<�=c�c��>�?c�c�@c��A�Bc�c��Cc��Dc��Ec��Fc��G�Hc��Ic��Jc��Kc�c��L�Mc�c��N�Oc�c��Pc��Qc��Rc��Sc�@�UL�L��V�W�j�X��Y���Z��[�\���]�^���_��`��a�b���c��d��e��f��g�h��i��L��k�u��l��m��n�o���p��q�r���s�t��L��v���w�x���y��z�{���|�}��~�������������������������L��������`���`�����`���`���`�`���`���`���`���`�����`�`�����`���`�`�����`�`���`���`�����`���`�`�@�����L���@���M��������8��������������������������azazgC����gCazazgC������gCazgCazgC����az��az��azgC��azaz��azgC����az��������azgCaz��azazgC��������az��azgCaz��gCaz��������azgCazgC����gCazgCaz����������������az��gCaz��azazgC������azazgC��azgCaz��������gCazaz��gCaz������azgCaz��azazgC������az��������azgCazgCaz��gCaz����������azgCaz��azazgC��gC��gCgCaz��&������������azazgCazazgCazazgCazgCaz
azaz	gCaz
azgCgCazgCgCazazgCazgCazazgCazgCgCazazgC!azaz azgC"$#azgCazaz%azgC'3(,az)*az+azazgC-0.azaz/azgCaz1az2azgC4azaz5az6az7azgC9�:^;P<D=@gC>az?gCazazABCgCazgCazEJFHGazgCazIazazgCKNLMazgCazgCOazazgCQXRazSVTUgCazgCazWazazgCazYZ\az[azgCaz]azgC_s`kagbecdazgCgCazazfgCazhiazgCazjgCazlnmazgCazoqpazgCazrazazgCt~uzvxwazazgCyazgCaz{|gCaz}gCgCaz�az��azgCaz���azazgCgCaz��������az��gCazgC����gCazazgC�azazgC�����azgCaz��gCazgCaz���azazgCgC�azgC������gC�azgCazgC���gCgCazgC�azgC�����azazgCaz�gCaz��az�gCaz�gCazgC���������azgCaz�azgCaz���azgCazaz�gCazaz��azaz�gCaz������az�gCaz��azgCgCazaz��azazgC�az�az�azgCaz�P� ����������azazgCgCazaz��azgCaz�����azazgCaz�azgC��az�gCazaz�azgC�����az�gCazgC��az�gCazaz�azgC�����azazgCazgC��az�azgCazazgC	azazgCazazazgCaz

azgCazgCazazgCazgCazgCazazazgCgCazazazgCazazgCazaz!"<#0$*%(&'gCazgCaz)gCazgC+.,-gCazazgCaz/gCaz172534azgCazgC6azgCaz8:9azgCaz;azazgC=F>C?Aaz@gCazazBgCazDazEazgCazGMHJIazgCazKLgCazazgCNazazOazgCQ�RuSaT[azUVYWXgCazgCazZazgCazaz\]`^_gCazgCazazgCbkcfazdazeazgCgiazhazgCjazgCazlpmoazngCazazgCqsazrgCaztazgCazv�w�x{azyzazgCaz|~}gCazgCgCgCaz��az�gC�azgC��az�azgCaz�azgC������gCaz�azgCazaz��azazgCaz����gCazgCgCaz������az���azgCgCaz�����azazgC��gCazgCaz�az�azgCaz����az�az�gCaz��az�azgCaz�gCaz����az�gCazaz�azgC���azgCazaz�gCaz���azaz�az��azazgCaz������azazgCaz�gCaz��az�azgCaz�gCaz�����\�-����������azgCaz��gCazazgC���azgCazaz�azgC�az����azgCgCaz�azazgC������azgC�azgCaz��az�gCaz�az�az�az�azaz�az�az�az�gCaz��az��gCgCazazazgCazgCaz
az	azazgCazgCgC
azgCazgCazgCazazazgCgCaz#azazgCazazgC!az azgCaz"gCaz$(%'&azazgCgCaz)+az*gCaz,gCgCazaz./@09142az3azgCaz57az6azgCaz8gCaz:=;azaz<gCaz>az?azgCazAIBEazCazDazgCazFGHgCazgCazJVKTazLMazazNOazazPazQRazazSgCazazUgCazWYazXazgCZ[azgCazgC]�^�_v`kafbdcgCazgCazeazgCgihazazgCazjgCazlqmogCngCazpgCgCazrtazsazgCuazazgCw�x|yzazgC{azazgC}az~gCazaz�gCaz�����azgCazaz�gCaz�azaz�azgC��������gCazgC�gCaz��az�azgC��gCazgCaz�����azazgCaz�gCaz���azazgC��gCazazgC��������gCazazgCgC�azgC���azgCazaz�azgC��az��az�gCgCazaz���gCazazgC��az�������az�azgC�azgCaz�azaz�gCaz�azaz��azazgC����az�az���gCazazgCaz����azgCaz�azazgC�������azgCazaz�gCaz���azgCaz��gCazgCaz���az�azgCaz��azgC��gCazgCaz�e�4��������az�gCaz�azgCaz��az�azgCaz�azgC��az�gCazazgCazazgCaz	azazgCazgC

azazgCgCazgCazazazgCazazgC%azgCgCazazazgCgCaz "az!azgCaz#$azgCaz&1',(+)*azgCazgCazgC-/az.azgC0azgCazaz23azazgC5X6F7<8;9az:gCgCazazgC=C>A?@azgCgCazBazgCazazDazEazgCGOHKazIJazgCazazLMNazgCgCazPTQSazRgCazazgCUazVWgCazgCazazYZa[^\az]azgCazaz_`azgCazbazcazdazazgCf�g�h}ipjnkmlazazgCazgCoazazgCqvrtsazazgCazuazgCwzxygCazazgC{|azgCgCaz~����az�gCaz�azgCazaz�az�gCaz���azaz�gCazaz�az�azgC����������gCazgCaz��gCazazgC�az��gCazazgC���azaz�gCazaz�gC�azgC��������azgCgCazaz�gCaz�az��azgCazgC��az�az�azgC����gCazazgC��azgCazgCaz��������azazgC����gCazazgC��azgCgCaz����az�azgC��azgCazgC��az�azgC�azgCaz������gC�gCazaz�azgC�azaz�azgC������gCazazgC�azazgC��az�gCazazgC���T�.��������azgC�gCgCaz�azaz�azgC�����gCgCazazgC���azazgCgC�azgC	azgCazgCgCazgCaz
gCgCaz
gCazazgCazgCazazgCazazgCazazazazazazgC&" azaz!azgCaz#$%gCazgCaz'+(az)*azgCgCazaz,-azgCaz/az0?18253az4azazgCaz67azgCaz9<az:;azazgCaz=>azgCaz@JAGBECDgCazazgCgCFgCazHazIazgCazKOLMazgCNazgCazPRazQazgCSazazgCUvazVWgX^Y[azZgCaz\az]azgCaz_b`azazaazgCcedazgCazfazgCazhlazijazkazazgCmrnpazogCazqazazgCsutazgCazazgCw�xazazyazz{az|azaz}~azaz�azaz��azaz�gCaz���������azazgC��gCazazgC�az��gCazazgC�az�azaz�gCaz����az��azazgC����azgCgCaz�azgCaz�az�az�azgCaz����������az�az�azgCaz���az�azazgCaz���azgCazgC��az��az��gCazazgCaz��azaz�azgC�����az���azgCazaz�gCaz��az�az�azgC�azaz�gCazaz�����az�gCazaz�azgCaz��azazgC�������az�gC�azgCaz��azazgC������azgCgCaz�azgCaz����gCazgCaz�azazgC�������gCazgC�azazgCaz�gCaz�����azazgCaz�gCazaz�azgCazazazazazgCazazaz	
gCazazgC
9azazazazazgCazazazgCazazazazgCaz-& #!az"azgCazaz$az%gCaz'*(azaz)gCaz+azaz,gCazaz./402az1azgC3azazgC576azgCazaz8gCazaz:az;az<=az>az?azgCazA�B[CXDOEM�FJ[�GHM�M�IL[�KM�LM��MM�NM�� PM�QM�RWS==T=UVM�=M�=M�Y�Z�[�\q]g^c_aaz`gCazbgCgCazdfgCeazgCazgChlikjazgCazazgCmogCngCazpazgCazr~sxtugCazvwgCazgCazy|z{gCazgCaz}gCazgC����azgCazgC�gCaz�azaz�azgC��az���az�az�azgC����gCazgCaz�gCazgC�������gCazgCgCaz�az�azgCaz�����gCazgC�azazgC�az�azgCaz���az�����az��azgCazgC���azgCaz��gCazazgC������gCazgCaz�azgCazaz��azgCaz����������azgCgCazaz�gCaz����gCazazgCaz�gCaz��az�az�gCaz�az�azazgC�����az�azgCaz�azaz�azgC������azgCazgCgC�azgC����gCazazgCgCaz� ���������gC�azgCgCaz���gCazgCgC�azgC����az�gCazazgC��az�azgCaz�azgCgCazgCgCazgC
	gCazazgCazgCaz
azazgCazazgCgCazgCazgCazgCgCazazgCazazazgCaz!I"7#.$)%'&azgCazaz(gCaz*,az+gCazgC-azgCaz/03az1az2gCaz465azazgCgCaz8B9<:az;azgCaz=?az>azgC@AazgCgCazCFDazazEazgCGazazHazgCJRKazLOMazazNazgCazPQazazgCSazTWUazazVazgCXZYgCgCazgCazM\]�^az_maz`aibfcazdeazgCgCazazgazhazgCazjazklazgCazn{otpazqazrsazgCazgCuxvazazwgCazyazzazgCaz|�}�~azazazgCaz�az�gCaz��az�az�azgC�azaz�gCazaz�az����azaz��az�azazgC���azaz��azazgCaz�az��azazgC���M������������M������M��M���M�����M�����M���M�����������M������M�������������M���������M�������M���M���M�M��M���������M��M�M��������M���M��M���M������M����M��M�M����������M����M������������M��M�M�����M��M��������M������M���M�M����M���M��M���M����M��������M��������M���M�����������M�����������M�M�M�M�M���M���M�	M�
M���M�
��M�M�����M�����M���M���M���M�������M�X= +!M�"%��#��$M���&(��'M���)*M�����M�,4-0��.��/M���1��23��M���M�58��67��M���9;:����M�<����M�>H?M�@FADBC��M���M�M�EM�����G��M�IQJMK����LM�����NOPM�����M�RUS��T��M���V��W��M���Y�Zq[e\b]_^����M�`aM�����M�c��d����M�fkgih����M�j��M���ln��mM�����o��p��M�r|sv��t��uM���wy��xM���z{��M���M�}�~�����M�����M�M��������M��������������M����M�������M�����M�����M���M���M��M��M����M�M��M�������M���M�M������M���M��M���M��������M�������M���M��MM��MM�M��MM��M�MM��M�MM�M��M@M���9���c�i�����������`�b�L�li��M`�ЛL�����LxvMb���L�ak�b`�������c�b�c�xv��MN��N���w�azv�wb�cW����aNb�b�L��dM�b�#��y����\
��������M�`�b�N��L�Mb�|�����M�M�M�g�Md�Mj*��db�`�g_��Ndp�MMtOL�M�c�N	
Mg_Lb�
M�Nb�j*ak{
t�!M�M�M�M�M�M�M�M�M�M�M�M�M�M� >�M�M�"#M�$M�%M�M�&'0M�(M�)M�*M�+M�,-M�M�.M�/>�M�M�12M�M�34M�5M�M�6M�7M�8M�>�:<b�;�bt�L=>b�?]@ZAMc�BCGd{DEF\d{d{\*HKIJ}�d{\*\9d{L�d{xvNOVPSQR�bYak'TUg	g&g&\HL�WXYQ��{ak\V[\d{dd{ak^x_`d{{
avbeMcakdak\ffMguM�hM�ijM�kplM�M�mnM�oM�M�\uqM�rM�sM�M�tM�hhM�azwazb�y�zd{c�{c�|}c�~c�c��c��c�c���c�c���c�@c��b�������Q��b�\���Q�t�Q�d����b�c�c�cW��NL�lipz��l��=l������b�q~q~M��q~b�Mc������d{���ak�ak���ak�akak�{�ak�ak�ak�l��l��l��l���l��l��l�l"akc�i�|���b�|�iM�xv����������M��M���og�Mg�������g�g�q�����g�g��������;���+��M���;�o�g����;g��lg��������������;q���M$3��g�����g���g���M�g�q������;g�����g��Jd���g�g�y���M�;��M�d�*��	�t���	B�	����akL�m�b��	�li	L�				m�dm�	d�N					oY��oY��	
oYoY\�	g_	
iM	iM	b�iMb�		7		'		 \�		\�	\�	\�\�		\�	\�\�		\�	\�	\�\�	p�\�	!d	"	$	#d�-d	%dd	&d�-b�	(	)	/	*	+�`��	,	-	.�nh4h4�N�	0	1	4	2	3ݶh4����	5	6h4d]x�b�	8	Ab�	9b�	:	;ku	<	?	=	>p�b���xv	@b�d$b�c�li	C	X	D	H	E	Gb�	Fkuakb�p�	I	O	Jak	Krfrf	L	Mrfrf	Nrf\�b�	P	Q	UcW	RcW	S	TcW\�cWcW	VcW	WcW\�	Y	�	Z	[nW`�b�	\	]	�M	^	_�X	`cWcW	a	b	{	c	p	d	j	e	h	f	g\�\�cW\�	i9�]
]	k	mcW	l]+];	n	o]K][]k]z	q	x	r	u	s	tcW]�]�]�	v	w]�]�]�]�	y]�	z^^^$	|	�	}	�	~	�	^4^C^4	�^ScW^c	�	�	�^s^�^�	�	�^�^�:*^�	�cW	�	�	�	�^�^�^�_	�cW__dM	�	�m�c�d{b�	�
j	�
W	�	�	�b�M�	�M�	�M�	�	�M�M�	�	�M�M�	�M�	�	�M�	�M�	�M�M�{�	�
)	�	�	�	�	�	�	�L�	�	�	�	�L�	��L�L��	�	�L�	�L�	�L�	�	�L�	�L�	�L�L���	�	�L�	�L�L�	�iL�	�	�	�	�	�L�L�	�L�	�	�L�	�L�L�	�L�	�	�L�L�	�iL�	�	�	�	�	�L�L��	�L�	�L�	�L�L�	�	�L�	�L�L�	��+L�L�	�	�L�	�L�L�	�L��	�L�	�L�	�L�L�	�	�L�L��	�	�L�	�L�	�	�L�	��	�L�L��	�L�	�L�L�	�L�	�	�L��L�	�	�	�L�	�L�L�	�	�	�L�	�	�L�	�L�L�	�	�L�	�L�	�L�L�	��L�L��	�
	�
		�
	�L�	�L�	�L�
L�L�

L�
L�L�
L�
L��L�
L�
L�i

L�
L�
L�L�

L�
L�
L�
L��

!


L�
L�
L�
L�L�

L�
L�L�

L��L�
L�
L�
 L��L�
"L�
#L�L�
$L�
%
&L�
'L�
(L��L�
*
6
+
0
,b�
-b�b�
.
/b�b�d$
1
4b�
2
3b�b�ku
5b�kub�
7
R
8b�
9
N
:
Db�
;d$
<
=d$d$
>d$
?
@d$
Ad$d$
Bd$
Cd$��d$
E
Fd$d$
Gd$
H
Id$d$
J
Kd$d$
L
Md$d$��
O
Pb�p�d$
Q�p�b�
Sb�
T
Ub�
Vb��b�M�
X
Yb�
Z
_
[
\Mc�t�
]
^q~c�gC
`
h
a
e
bt�
cc�az
dc�L�
ft�
gMazc�c�
ic�L
k
�
l
~
m
s
n
p
odd{b�
q
rb�`�b�d
t
w
u
vi���`�d
x
}
yi�
zMM
{
|MM_/kub�

�
�
�
�
�L�d]
�b�
�
�
�M
�M
�
�
�M
�MM
�M
��OM
�M
�M
�MM�o
�
�M
�
�M
�M
�M
�MM�O
�
�
�M
�M
�M
�MM
�
�Mq�M
�MM
�
�M
�MM�o
�
�b�cWnW|�
�
�
�
�Mp�
�`�
�
�tk
��lՊ
�
�)��{
�X>_9tk
�
�L�b�w�xv
�
�
�
�
�
�
�
�
�b�
���
���
�����_?dku
�
�
�
�
�
�
�
�
�Q�NQ�
�
�Q�Oq]RQ�
�
�
�Q�Q�Q�Q�
�Q�Oqb�
�b�
�
�kub�kub�li
�
�
�
�cWxvb�
�
�
�g_��Ld
�
�d{M�aNM�
�
�
�
�
�
�b�
�
�b�
�kuq�
�q�Md{
�
�
�
�
�
�
�g4_Ng4�[
�
�g4�g4�M
�
�g4
�g4m
�
�g4��mg4
�
�b�
�
�LM
�iM
�iM�L��`�
�
�
�M
�
�LNQ�NQ�i#NQ�OTQ���d	dd
dd
ddddddd�i�Nb�L�LLLLLLLLL LL!"L#L$L%L&L'L(L)L��L+�,@-?nW./c�c�01c�2c�3c�4c�5c�6c�7c�8c�9c�:c�;c�<c�=c�>c�_]c�b�t�A�tyBCcDSELFIGHt�LM�b�JK� o�t�L�MPNOLMnWNQRNЛ{
t�T\UYVWaNb�Xb�L�LZ[b�c�M�F]`^_MJg4L�ab`�L�i�xvdvelfighc�b�c�LjkML�bdmpnonWi�nWdqr|�Lsd{b�tue�b�e�w�x�q~yzMaN{|aNaN}~aNaN�aNaN�aN�f��`�b�dxv����Ndb�Lp���xM�����b��t��q~��q~�q~�q~�q~qpq~��c�b��rf�MM��MM�M�M��M�M�M�M�M�MM��;M�������b�����d�db���nWm�bMb�g4�L�����g_ddaN��iMMnWb���b����{
�{
�{
�{
�{
Z7���{
�{
�{
Z7{
�{
{
��{
{
_liMc���`���`��`�`���`�`���`�`��`��`��`��`��`���`�`��`���`�`��`�_{�c��c��c��c�c��c��c���c��c��c��c��c��c�c���c��c�c��c��c�@�ZD�8 �)�!~�������~M��8��L�>C>CL�
L�B L�B L�	L�B L�L�L�
L�L�L�L�L�L�L�L�L�L�L�L�L�B )L�L�L�L�L�L� L�!L�"L�#L�$L�%&L�L�'L�(L��L�*L�+,L�L�-L�./L�L�0L�1L�23L�4L�L�56L�L�7>CL�9L�:L�;sL�<=H>L�?L�@L�AL�L�BCL�DL�L�EL�FL�GL�>CIL�JL�KL�LkML�L�NO[PTL�QRSL��L��UXVWL��L��YZL��L��\b]L�^aL�_�`�L�L��cgL�dL�ef��L�hL�L�ijL��L�lL�L�mL�noL�L�pqL�L�rL��L�tuyL�vwL�L�x>CL�L�z{>C|L�>C}L�>C`��LL��LL��LL�L��L�LL�L�L�L�L�L��L�L�LL@��LM�����c�c���c�c���c��c��c��c��c��c��c��c��c��c��c��c��c�_]c��c��c��c�c�����c��c��c��c��c��c��c��c��c��c��c��c�_]c�c��c���c��c�c��c��c��c��c��c���c�c��c�_]��NLNaN�d���a�
��
*�
	������p��b������_�_�e�c��e��`���`��`�`��`���`��`�`�e�`�e�LM��q~d{�`�b���b��b���b���b��b�b��p�b�b��b��b��p���p�p��p��b�p�����g4d]b�d�
nW�

�X`�Q�d


N
L�
L�_�L�
NN;N







b�N
N
N
OENd
nW


nW
nW)(

nW)(nW)(��N

!

g_`�
xvn�
n�
 n�=�
"
)M�
#
$
(
%c�
&
'b�db�nu_��L�� 
+
�
,
J
-
.dg4
/
I
0
7
1
4
2b�b�
3�b�b�
5b�
6b��>
8
F
9
Cb�
:b�
;
<


=
>

?

@


A
B
b�

D
Eb�p�b�p�
Gb�
Hb�d$b�dL
K
~
L
}
Mb�
N
l
O
\g_
P
Qg_g_
Rg_
S
T
V
Ug_g_Xg_
W
Xg_g_
Y
Z
[(�_�MT_�
]
d
^g_
_
bg_
`g_
ag_��g_
c��g_g_
e
fg_
g
j
h
i_�g_g_����
k��g_
m
zg_
n
o
t
p��
qg_
rg_
s��g_��
u
v��g_
w
y
x����g_Xg_
{
|g_����g_p�iM

�
�`�
�
�d
�
�db�m�Md~l�
�
�
�
�
�
�
�
�
�M�M�
�M�
�M�{�
�
�
�q�
�
�dq�dq�q�
�
�
�q�dq�d
�b�
�
�_�nWb�L
�
�
�
�
�
�
�
�
�Q�Q�_�
�Q�P}Q�
�Q�Q�
�
�Q�
�Q�
�
�
�
�
�
�
�
�Q�N;Q�N;
�
�Q�N;Q�N;
�
�
�
�Q�N;Q�N;
�
�Q�N;Q�N;
�
�
�
�
�
�Q�N;Q�N;
�
�Q�N;Q�N;
�
�
�
�Q�N;Q�N;
�
�Q�N;Q�N;
�
�
�NN
�OqN
�NNOTL`�
�
�
�
��RcW
�
�
�
�L�
�L�
�L�
�
�L�L�
�
�L�L�
�
�L�
�L�
�L�L��:L�
�
�L�
�L�L�
�
�L�L�
�
�L�
�L�
�L�L�
��:L�
�
�L�
�
�L�L��+L�
�L�
�L��+
�
�M�b�db�
�
�
�
�
�
�
�Mb�M
�M�b�M
�

�L
�
�
�dؒc�d{eg4eq~	Mn�M�OE
�d]ؒ_�d`�`�Mc�b�Md��NdMb�p�b�d��M�`�.%" !aNm�L�Md{#b�$`�w�&('d`�M�)-az*L�+L�,L�_�b�{
/@0>M12�X3||45|6||7|89|:||;<||=�|aN?�XiMARBb�aNCDKEHFG��j*c�IJb�iMx�Q�LOMNx�deLPQb��[d{s�STp�b�Ub�V[WY`�X`��y`�Z`�֥\^]`��y`�_`֥`�֥`�b�c�d�e�f|glM�hik`
j��`
`
b�c�mn~~o~p~qr~s~~tu~vy~w~x~�|~z{~�|~}�~�akak�ak�tkakak��ak�tktk��ak�ak�ak�ak�ak�akak�aktk�b�����daN`��I��c�b�b�d������d{b�dM�b��d�db������L�NN�N�azubb�M���b��`��`+`�``+`���M�����FL�el�Nec�������M�xvd�`�L�t���cW�{
`�p�M�����g4iM�dm���Mb�p�cW����b�L��g4cW�������aNMdp���diMo��L����N;do�M��ds8N;b����
�����`��L~�~�~��`:�~����~��~�~~�|~�~�~�~�|�~�~~��~~�|������K���be�azb��b�p��`Itk)7�Me�`�i�e�`�b�M	
b�M���b�Mb��Mdddo�ddd��d{j*9,aNaNaN% aN!aN"a]#$a]aN`XaN&aN')aN(a]aNaN*+aNaNa]-.Mg�M/0MM1M2M34M5MM67MM8g�M:q~;h<`=U>M�?K@M�AGBM�CM�DM�EFM�hhM�HM�IM�JM�hM�LM�MM�NROM�M�PM�QhM�SM�TM�hM�VM�WM�XZYM�hM�[M�\M�M�]^M�_M�M���aM�M�bM�cdgeM�hfhM�hM�iM�jqM�klM�mM�nM�oM�pM�M�{�rzsM�tM�uM�vhwM�xM�M�y{�M�{M�|�}�~hM�M�h�M�hM����hM�h�hhM�����?"|�b�y7���XdL�M�������d{L��$�b��bd���d�xv��L���d�d�d�d��d��d�Zo�b�b�dxv�`fM��b�M�akb��������xv��xvNd���aN�b��t�`{�i�NM��b���M��M�O�MM��MM��M�M�MO�MNl�����My7M�b���NMdb��*�����V�L�E�D�������������������;����������;������������;���������������y���y���������y�������������y�������y���������y�	�
���
y�������y���������;��3) &!#�"���$�%�����'(������*0+-�,����.�/���1�2�����49�56��7�8�y�:@;�<>�=��;�?��;�A�BC��y����,Fb�M�GHJI=�NLK=�L4�MOakN�mMPQb���Rg4cWScWTcWUcW`�WqXYdm�ZL[M\eM]^M_M`MaMMbMcMdM��fMMghMikjM���olMMmnMopM�oM��rsp�ty7uxvazwazt�azy|z{gQazb�gQaz}az~t�v���db�j�d�������b�`�c����b���N�N��N`���`�`���`��`��`�`��`�NN�N����N�N�N�NN�N�N�x�N�`�`���`�`���`��`�`��`�NaNM���b�Mxv���dxvdL�M�����cWp�y7�dxv����M�v�M�L����j*M`�d�b�b�M�����������d�g_�g_���g_M���g_M�MM�`�b�������L����LL`���L�LL��L`�L�d{�������oMy�q����;�oq����M�MM�;dN������de�Nq~��Q���NNgC�XM�����Nb�Nb���dMc���b��i��p�b����
�d|M`�lM�q�q�dq�	q�dq�
nW`�dddd�Zdddd�-cWnWhj�Mc�M�Jb�d #!"Mb�dxv$)%j�b�&b�'b�(d$b�L���+�,g-F.@/<0;1d2735sG4[*�6@�8�9:��sGNb�=M�>`�d?db�ACaNB`�p�MDE�xL`�GTHPInWJaNKOL��MN")d2�p�b��9QSRMdm�g4L�Udb�VM�W�X�YZ[�`�\�]�^�_�`��ab��c`��efb�cWNe�hyinjkdd]lmb��bdb�ovpqxvdrfrsb�t~�b�ub�d$wxo�g_d{b�z�{~|}aNb�nW`�������w���w�w�ww�w�azww��w�ww�waz����wazazw�����az�azazw�az��w�w�azw�w�azwaz�azwaz��w�az�wazwwd�b���d{aNg_��b��������iM�`�!b��(��d{L�����c�diMN��xvgMdM��M����M���M�M��M���M��M�M���M�M��[M�M���M��M�M���M�M��M���M�M��hM��$������b��b��d��dd�d`�d]�b�g4����M�Mb�j*���b������� � kuku� `�����[פ�b�d{xv��
��i���i��i���i�i���i�i���i�����i��i�i��i�i�i�i�i�F�i�	i�i��i�i�
i��i�g4b�`�L�b�d{`��XMb�{
Mc��^`�d]c�x�a! c�ݶx�d]"#c�h4�h4%W&P'*()Lc�Mj�+O,7-NN./N0NN1N23N4N5NN6YN8:9b�`�d;><=VpNN+N?l@lAHlBlCDllEFllGllIlJllKLllMlNc�l��`�QTRSdcWЛL�UVMM�Л`�X]Y\Z[sGakb�Mq~xv^a_`p�dNMbcM�xn�xve�f�g�hq~iyjqklllmllnlopl���rlslltlulvwxڈg&g&�=zl{�l|}ll~����ն��l�����gg&l��l�l�l�l�slNL��`�t�g4�g4Y����N�N�N�N�b�N`�L������g4g4��g4g4��g4�g4g4�g4�g4��g4�g4�g4g4��g4g4�g4��g4�g4g4��g4g4�g4��g4g4��g4g4��g4g4��g4�g4�g4g4�g4�g4m,L�N�~�g������d�d��d�d�d�d�d�dd��d�dd��d�dd�d��di#d�d�d�dd��dd��d�dd��dd�d��dd��d�dd�do�d�d�d�d��dd��dd�d��d�d�dd�d��dd��d�dd@�d��d�d��dddddddddd	d
�-�Zda
dddddddddddddddddBfE0d d!"dd#d$%dd&d'(d)dd*+d,d-dd./dBfd1d2dd3d45A6d7dd89dBf:;Bf<Bf=Bf>Bf?BfBf@BfdBddCDddb�FdGOHdIddJKddLdMNdq�dPdQdRdSddTUeb�VWdXb�Y`Zdd[d\]d^_db�c�dadbcdb�c�ddb�fb�b�c�h]aNijIkHMlmnUo�pzMqMrsMMtMuMvMwMxyMM�{M|�}M~MM�M�MM�Md�������y���y����M�;y�M�����y�y�M��y�MMy�����y��M�M�My�����y�My�My��My������y�y����M�y�M�y�y��y�M����M�����My�y�M�y�y�M���M��y�My��y�M���My�M�MMy��������MMy�M��y�y�M��M��y�My��MMy�����y�M��y�My��y�M��M�My�y��My������y�y���;y���y��y��y��;y���y��y��y�y��y���4y�����M���M�MM��M�MM�dM�M�M�MM��Mq�M�MM�M�M�M��M�M�;M	MMMMMMMM�4
�OM�O
�O�O�OM�O��MMMMq�MM�JML2$�� "M!M����#M��%+&)'M(MM����*M��,.��-M��/10��M����M3@4;5867q�����MM9:��Oa��<=��M>?M��M��ADB��C��M��EJFHMG��MI��Oa����KMq�MQ��NO��P����q�R����S��T��q�VVW�XnYfZMM[\a]�4^�4_�4`�4M�4�4b�4cde�4M�4MghM�Ji�Jj�Jk�Jl�Jm�J�;�Jo�pdq�r�s�t{uxvw�4MM�4yzM�4�4M|}�4~�4�4M��4�MM�4�����4�M�4�4���4M�4����M�4M�4�4�M�4�����4���M�4�4M��M��4M��4M�4��4����4�4M���4MM�4�4���4�4��4�;�d�d��������d�M�MdMd��d�MdMd�������ddMMddM���dMd���MdMdM�������ddM��dMdMd�M�Md��d��ddM��d�dM��Md�ddM�E�����������������M����M�����M�Oa����������M��q�������M��������q�M�����M�����������M��M�������M���M��M��MMM����M��M��	
��Oa����
������Oa��dd(dddMMdMdM$"! MMdMd#Md�J%d&'dMMd)8*2+.,-MdMd/10dMdMd3645MdMd7MMd9>:<d;Md=dMd?C@AMdBdMdDddMFNGMHMMIMJMKMLMMM�;MOPMQMMRSMMTUMdMW�XrYeZ_[MM\]M^MdM`M�Oab�Oc�O�Od�OMflMg�4h�4i�4j�4k�4�;MmMnoMpMMq�;Mszt�Ju�Jv�Jw�J�Jxy�J�;�J�J{|��}�~������M��M����M���M���M������M���M�������M��M��Oa��M�M��M���������MM�������q�������MM��M��������M��M��M�M��������M�����M��J����������J��JM�J��JM�J���JM�J�J��J�M�J���������JM�JM��J�JM��J���JM�JM�����M�JM��J�JM�J��M�JM��M��MM���M�;�M�Md�;�M���������J�M�M�J���JMM�J����JM�J�M�JM�������JM��JM�JM�M�J�J��J�M�J�����M�M�J�M�JM���JM�JMM�J	M�J�JM�J�JM

�JMM�JM�JMMMMMMM�oMMMMMMMd�~ p!2"(#MM$%MM&'Mq�M).M*M+,M-M�;M/MM01MM�O3l4f5a6L7C8>9=:;�OM<�O�OMM�O?A@�O�OM�OBM�ODG�OEMFM�OHJ�OIM�OKMM�OMXNTOQMP�OMRSM�O�OM�OUVW�OM�OMY\�OZ[�O�OM]_�O^�OM�O`�OMb�O�Ocd�O�Oe�O�;�Og�Oh�Oi�Ojk�OM�O�Om�On�Oo�OMqMrMMstyuMMvwMxM�;�ozMM{|MM}�oM��MM�M��M�MM��MM��;M����M�M�y��y��y��y��y����y���y��y��y��y��y��y���y��y���y�y��;y��y��y���My����J��������y�M�My��;M��y�M�;��y���MMy�y��y��My������y�y��y�My���My�M������;�;y���My��M���y�My��y��;y��n���M��M��M�MM�M����MM�OM��;MM��MM�M�M��M�M�oM��M��d���d��M�dMd����M�Md��d�MddMM��MdM��������������M�����Oa��M���M��M��q�M����M����M	

��M��q�M��M����M��M��M��MM��MW1'!�O �O�OM"%#$�OM�OM�O&M�O(.)+M*M�O,-M�OM�O�O/0�OM�O2G3<4956�OM78�OMM�O:�O�O;�OM=B>@?�O�OM�OAM�OCED�O�OM�OF�OMHSIMJ�OKL�OM�OMNQOPM�O�OMRM�OMT�O�OU�OV�OMMXYfZ_[]\�OM�O^�OM�O`cabM�OM�OdeM�OM�Ogjh�Oi�O�OMkmMl�OM�OMop�q�rsMdt�Ju�v�w}xzy�J�JM{|M�J�JM~��JM�J�M�MM�J�����J��MM�J��J�J�M�J����JM�J��M�JM�J��������J�JM�M��JM�J�����JMM�J�M�JM�����M�JM�J��JM��M�M�J�J��JM�M������O���O�M�O�O�M�O�����O��MM�O�����OMM�O�O��OM������OM�O��O�OM��O�O��OM�����O��M�OM�����OM�OM�O��OM����OM�M�O�O����OMM�O����J�M�O����������O�M�O��M�OM�O����O�OM�O�M�O����O�O�M�O���O�M�OM�O�����O�M�O��O��M�O�OM��O��M�OM�OM�OM�OME�	MM
MMM
Mdddddd�;dd.%MddMMdM "d!Md#$MdMd&)'d(ddM*,+ddMd-Md/:06132MMd45MddM7d89MddM;@<=Md>?MdMdACdBdMdDMdMFMGq�MM�dJLtyKLa"MMLNOLPLQLLRSLTLLULVLWXLLYZLL[\L4�L^`_`�M`�a{bc�HL�p�ddefrgddhildjdkdBfmpnoBfdBfddqBfdsddtuwBfvBfdxydBfzBfdBf|}xvMdiM�����M��aN�aNaN�aN�aN��aNaN�aN�aN�aN��aN�aNaN��aN�aNaNa]�`�g_�nW�nWaz��������aN�cW���@&�d�M��MM������������������������c���lidp��`��M�ldaN�M�d�li���azdc��N�lL���iMiM��`��aNaN�aN�aN��aNaN�aN�aN�aN�aN�aN��aNa1aN`��`��aF�`�aUnWL��p�M�cW��������LM�d`���dM`���'���b�4��|��|��ad���|�����������|ap�|�||=|���|�|�|�|����|�|�6�||��|||����|W�||�|�aa|�||||||	
a������
��||��|||||||�6|||||||a|+ &!|"|#|$||%a�|'||(|)|*||,|-0|.|L/||�1||23|W|5B|67A|89|:|;|<|=>a�||?@|a�||��CQDIE|F|G|H|||JL��K|��M|N|O|P|a�||RS|T|UZV|j��W|yXY|�|���[|\||]^`|�_|�||a||�c�dse|f|g|h|ipjlkaa�am|anaoa|q|r|a|t}u|v��w|x|y|z��{��|��|La�~||��|��|��||�|�|����������|�����|�|L|=����BD|��|��|�6��|�|����6�6��6||�6�|�|�|�|�|�WW����WW�6�|W|�||�����|�|�|�|��|������|�|�|�|����||�||����|����|��|�|�|a�||L|��||��|=�|=�|=��|=��|=a|=a|=�||����|����6�6��6���6�6��|�6W��|�|�|�6�|�6|�|�|�|�|���|L�|�||L|||�|�����|��|��|�|�|��||��|��|���|�|�|�||��||�|���||||�|||||�	
||�||�|
|�||�||�|�|||�|�|�|�||�||�|�|�| a|!|"|L#|$|L%||L&|L|(a)E*9+5|,|-.3��/��0��1��2��|��4��|6|78|a��||:;|<|=|>||?@|A|B|C||D|�6FV|GHL|I|J|K|��M|N||O|PQ||R|ST||U|[|��WX|Y||Z[|\_]||^||`|||b�crdl|e|fg||hi��|j|kW||mn|o�6p|q||�6s~tvu|a�|wx|�||yz|{|||}|[�||��|����������|�������|�������|��||��||���||����|�|||��|�||�|�|�|�||�|���|���|�|�|���|��|�|�|�|�|��||���|�|��|�|������nW��m�m���m�m���m�m��m���m�a�m��m��i�i���i�i���i�i��i��i���i��i��i��i�i��i��i�@��b�Ml�M����L�g_b���dd�q�d����Mc������F��F��F���F��F���F�F��F���F��F��F��F�F��F��a�F����F��F��F�F��F��F���F�F���F�F��F�a�F��Gt�F�Gt�F��F�nW������CM���M�M�M���M���[M�	M�
M����M�[
M���[��LM�M�M�M��.'M�b�0[[M�# !M�bM�"�M��$%&��M�vM�([)M�*M�+b,-[b$vb3/0[M�1@293745Lv�6[Lh8vL:?;<[L=>vP�M�v[��A�B�[D�M�EFgGTHM�IL�JKM�M�vMQNO�{�[P��R[S�1[�UaM�VWZXYM�vvM�v[v\]_v^v��`�vM�bce�d�vhfM��htM�i[jkqln�mL�op{�LM�LrM��s�u�v�wzM�xy[�{��|}~M�h[hv[���v��0[���P���0v�LvL����v�b[��[����y��[�v�0�v�0v�����������[�[�[���[{����"���"�����y���LM�L�M���v�M�[M������M���b3M����bBP�M�v����M�[M�M���M���M��M��M��M���{�M�{�������M�{�M�{���M�{�M�{��M��M�M��{�M��M������M��M��M�M��M��M��M���M�M��LM��M�M����M��M��M���[M���M�M������M�M���M�M���M��M�P�M����M��M��M��M��M�M��M����M��M��M���M�M�[�C�g�*M��	M�M�M�M�P�M���M��L
#
�b3M�[M�{��[P�LM��0[ =[=M��=����0!"[v�[$(M�%&v'M�M�bQM�)[M�+],B-M�.3M�/0M�12b`M�M��04;5968=7M��jv:M�vM�<?M�=>M�j�M�@AM�v�CM�M�DERFLGIyH�[JKP�vP�MONM��b3PQ�LM��SW�TUVvP��boX[YZ��[�M�M�\boM�M�^M�_`[aM�bM�cM�dM�eM�M�f[M�h�i�j�[klpm�n�o�{��q{ru�stvvvxwvv�yzv��b3|�}�~��P�v�vv[�v�����v�v�v�v�P�����������v�=��������������=P�=�[=������L�LP�b��L�=[��[�[�[�[L�������v���Z��[M�v��v���v��v�����M�����[[����[�[[��P�����P��P��������v������v���0�L�b~�0v�������0[�����[[��������������vM����[hv�M��M������b��1�������������������[�L[M������v�=[vM�����v���Lv[M����M���[��[	M�M�vM�
M�=M�
M����M�M�M���v�����M�M���M�vM�v/)�� !%"$#P��0[P�[&P�'M���(���M�*+�,-���.M���10>M�12M�M�3465�M��7;8�9:M���M��<�=�M�?�M�@AM�BM�M�[D�EbFMGLHLLIJL[KLL��LNVLOPLQURLSLTL�LL�W]XLYLZL[LL\Lv^LL_`LLa=LckLdeLfLg=hLiLjLb�LlLLmnLo{ptLqrsLM�LM�uxvwLM�LM�yzLM�LM�|}L~LLM�����L��M�LM��L�LM�L�L���M�LM��LM�L�L��L��L�L�L�LL�L�L�L�{�LL����L������[LLv�L��L��L�vLL�L[L�����������L�0�0L��L�0�0L�L��L�0�0LL���L�0L�0�L����L�0L�0��L�0L�0���c�:�������b�lib���t���MM�M�g�M�������b�݋d]��b�y(b�az����x�y(e�L�M�b�az���b���y([@d]ݶb���L�^b����L�gQ{
���b�g4b��3����kug4ku�M�d��d�dd�d��d�dd�d�d�d��2nW+azazazazazaz	
azazazw�
azazw�az"azazazazazazazgCgCazazazazazaz az!azazgCaz#$azaz%az&'azaz(az)az*azkX,az-azaz./azaz01azazgCcW~48576�xc�`�azj*d9`�j*;L<I=G>?iMp�j�@b�ABECDi�e�i�e�e�Fi�e�b�Hb���dJKNcWkuMVNPOdb�liQRb�tyxvSTaNaNUaN۱WZXYb�d{g4M[\dcW]b^a�+_`v��-m{
xv��"d�e�f{gyhxie�jqknlmb�L�LdopNb�`�iMrustMM�tyiMvwgnpzlignb�LM�zq~`�|~c�}`�M�M�db�d������LL������kX���kX�����kXazw*�az�azkXaz���az�kXb�az�kXkXazkXaz���kXkX�az�azkXgC�kXazkX��kXkXaz��d`�����{
aNd��+��+�b�b���d�t�c���g4�XM�b�����������b��b�����E�"�d�q����q��q�d�ddq�b��d]d����`�p�p�N��Nb��b��n���n��n�b���n�b�b�n�������L�Mb�M�b�`�M������h4����h4h4��x��x��x�x���x��x�x��x�b�h4�h4c���h4h4�h4c�h4�h4y(h4Nb�N�L�p�� Z�4��������|�Nb��p��b��M�b�p�ML�~~�|~	~
�|~~
~~~~~~~�|~M�p� AeM`�M�ЛMiMdg4`�!0"/#.$+%(&'Mb�c�b�)*NxvL�b�,ku-kub�kub�kuq~b�13b�2NMd{i�5A6;79xv8�m�b�:Ml�<>=b�d`�?@iMb�b�j�BJCEMDc�b�FGLdHb�L�IL��+K SLQb�Mb�NOb�Pb�rXbR�S�ToUjVaW\�XY�Z�[��d�]^�_��`�dbfc��d�e�d�g�hi��;�k�l�m�n�d�pw�qr�s��t�u�vd�xy�z�{}�|�d�~�d��������d������������d�������d�dd��d��������������d���d������d��������d�����������������d�d��d�d�d�ddM�J���;��;��;��;�;��;�d�;� ���d���������d��������M��MM���M�M��M�M�����M�M��M��M�M���������M���MM������M�M�M�M����M�M���M�M���M�M������������d������d���d������d���� � �d� d  0      d  	 
�dd� d 
 �dd�     d�dd�  d d�d �d  "   d� �d  !d  �d�d # * $ ' % &d��d ( )�d�d + -d ,�d . /�d�d 1 G 2 = 3 9 4 7 5 6�J���J 8�J��J�J : ; <�J���J > A�J ?�J @d�J B E C D��J��J F���J H L I�J J K��J�J� M P N�J� O�J� Q�J�J R�J� T Y U� VM�M� WM� X�0M�b�xv [ � \ i ] d ^ a _ `c�b��-q~ b cMNdM e fb�M� g h`�M�`�d{ j � k mb� l`�ak n oLcW p � q � r � s � t � u � v { w x���% y zy��JOa�� | ~ }~��~  �~�J���� � � � � � �Źy�y���� ���d � �M ��;y� ���-y� � � � � � � � ��� ����%�d � ���ddy� � � � � �MMdMd � �d)x�Jy� � � � � �y�y�dy�d � �y�� ��J�Jy� �M ��o ��o ��o ��o�oq� �M � � � � � � ��;�; �~�;�; ��; ���;�; � � ��; �g��;�; ��;g� ��; ��; ��; ��;g��; � � �M �MM �M � �M �MMM� �M �M �q� �q� �q�q� ��oq� �M � �M �M�O �M �M �M �M �M � ���O�JM � �iM ��,c' � �L� � �dd � �dm�db� �c� � � � ��vc6�vԦc� �!@ � � � � � �d{b�nWb� �b�cW�X �!: �cWd � �! �!gC � �gC �gC �gCgC �!gC!gCgC!!gC�BgC!!!b�!!
!�B�B!	�B!
!�B!�B�Bb�!�B!!!�B�B!!�B�B!b��B!�B!�B!�B�B!b��B!az!azaz!!az!azazkX! azaz!!!"!*!#az�"!$!%�B!&�B!'�B!(�B�B!)�B�"!+�B�B!,!-!5�B!.!/!2!0�B�B!1�Bw!3�B�B!4�Bw!6�B!7�B!8�B�B!9�Bw!;!<`�m�!=M�!>!?LM�xv��!A!m!B!j!C!Z!Db�!E!Sd!F!G!Nd!Hd!I!J!Kd�d!Ld!Mb�dd!O!Pdd!Q!Rd�Zdd!T!Ud!Vdd!W!Xd!Yd�Zd![g�g�!\!]!`!^!_Mg��;�|g�!ag�!b!cg�!dg�!eg�!fg�!gg�g�!h!ig��;g�!k!ld{b�cWL!n!|b�!o!pb�!qd]!rd]d]!sd]!t!ud]!vd]!wd]!xd]d]!yd]!z!{d]d]cEM!}cON!&R!�%!�$�!�":!�"+!�!�!�!�!�!�!�!�L!�!�q~q~!�!�q~q~!�q~!�q~!�!�q~!�q~q~!�q~!�q~!�q~!�!�q~@q~nW!�!�!�xv!�xv!�!�!�xvo�o�xvxv!�!�!�xv!�xvo�!�xvo�xv!�b�!�M!�L�L�!�L�!�L�!�!�L�L�!�c^L�!�!�!�!�b�M!�xv!�!�!�!�!�!�!�v�!�!�b�!�!�!�gQ��az!�azb���wgC!�gC!�!�azaz!�az!�!�az!�az!�azaz!�!�azwaz!�gCv�!�!�ww*!�!�v�v�!�!�!�!�!�!�!�!�!�!�!�gCv�gCv�!�!�gCv�gCv�v�w*!�!�kXwv�gQ!�!�!�!��^wc�b�!�!�wU�?w��igC!�gC!�!�!�w!�!�b�!�az!�az!�az!�!�!�gQb�azubb�az!�b���!�!�d!�!�MM!�!�M!�MM!�O�Mb�g4!�"!�"!�"!�N!�@!�@@!�@"@"cl@e�b�""`�b�"g4"MM"M"	M"
"M$3M"
"""cWc�"M"c�c�"c�""c�c�"c�"c�""c�c�""c�"c�"c�"c�cvc�"" dliaN"!""cWd"#d"$"%d"&d"'d"(dd")"*d�Cd","3"-"0"."/c�M�b�L"1"2�g4dg_"4"7"5"6iMlb�cW"8"9L�d|�c�";#s"<"�"="�">"m"?"T"@"Q"A"Dh"Bd"Cg4m�"Ed"Fg4"Gg4"Hg4g4"I"Jg4"Kg4g4"L"Mg4g4"N"Og4g4"Pc�g4"R"Sp�b�g4iM"U"g"V"_"Wg4"X"Yg&`�"Z"]"["\��g4g4�+"^e�i�`�M�"`"a"c"bdMd"d"ev�az"fazgCv�"h"lq~"i"j"kb�LM`�lij*"n"�"o""p"}b�"q�^"r�^"s"t�^"u�^"v�^�^"w"x�^�^"y�^"z�^"{�^"|�^c�N"~NM"�"�M��d"�d"�"�d"�"�dm�+�<�"�"�"�"�d{b�kuq~"�"�p�d"�i�"�"�n�"�"�=�=ln�"�"�,w"�c�n�=�n�"�"�"�"�"�"�"�"�NcWku{
l"�db�"�"�b�"�NL�c�"�?"N"�"�"�"�"�"�xvL�"�Mxv"�xv"�"�xvc�xvb�"�"�p�M"�M"�M"�"�M"�M"�M"�M"�M"�M"�MM"�y�M"�"�"�"�"�g4"�"�"�"�b�"�b�p�b�"�p�b�"�"�"�"�b�"�"�����"���"���"���"���"���"����b��"�b�"�p�"�"�"���"�����"�"�����"�"���d$��"�����"���"���"���"���"���b�LM"�aN"�"�"�"�az"�az"�azgQ"�b�gQ"�azb�"�"�"�Mq�M"�M"�Mq�M"�#9"�#"�#"�"�"�MM�I"�#"�d"�#M"�"�"�q�M"�M"�q�M"�q�MM###�M#M#MdMb�d###	#
dl�b�~�###
L�#b�#b�b�##b�b�#b�#b�##b�b�#b�##b���b�p�ty##.##+##*#`�##%# ###!#"rfPc�PO�#$O�rf#&#(rf#'O�rfrf#)rfO�e�t�#,#-o����g4#/#3#0#2#1az`�Nc�N#4#5c�M�#6Z�#7#8M�L
�N+#:#e#;#I#<#G#=#>b��x#?b�#@#Db�#A#B#Cm�i#b�m�L#E#Fb�`�e�+#Hc�t�#J#Z#K#Y#Ll#M#T#N#Q#O#Pd{}�d{}�#R#S}�}�}�d{#U#X#V#W�j}�}��}��Lp�q~#[#a#\#`#]b�#^i�#_b�b��b�L�#bp�#c#d`�q~Lxv#f#l#g#j#h#ib�d{L�M#kb�cW`�#m#o#nb�aNb�#p#qb�@&N#rNM#t#�#u#�#v#�#w#~#x#{#y#zNldN#|#}db�Nb�##�#�#�b�t�Lb�#�#�Md{`�#�{
i�#�#�#�#�#�#�b�xvLb�#�#�#�M�#�#�b�#�#�#�`�ue�i�`�e�`�L#�#�#�#�d]M�d?"#�#�#�g4#�#�M#�#��oM#�M#�M#�#�M#�M#�M�oM#�MM#�#�MM�Jd{l�#�#�#�#�#�#�c�nW#�M#�b�@sG#�#�#�#�b�#�b�#�b�#�#�c�c�b�db�#�M�#�N`��b#�#�#�#�#�#�M�L�nWb�M#�� d#�#�#�#�`�b�d`�#�#�xvaNd#�b�#�#�b�b�#�b�#�#�#�b�#�#�b�b�#�p�b�#�b���b�#�$#�#�#�#�#�#�#�iM#�xv#�#�b�#�,#��%`�`�#�#�#�x��d]x�#�#�dNL�rf#�#�#�b�g4az#�#�L�b�d#�#�#�Lb���iM#�$#�#�#�#�klinWM#�$#�M#�MM#�M#�#�MM#�#�MM#�M#�#�$M#�M$Mʰ$M$$*���M��b�$$$$b�$	$
$$$$$
�iִ`�ִ$ִaUc�$$$$ִaU�yc�$$�dִd��`�P}$`�iM$$'$$"$$`�$Nb�$ $!NЛ@b�$#$&$$$%c�dd{b�b�xv$($d$)$b$*$a$+$V$,kX$-kX$.$I$/$EkX$0$1$=$2$7kX$3kX$4kX$5kX$6azkXkX$8$9$:azkXkX$;$<kXazkXkX$>kX$?$@$DkX$A$B$CkXazazkXkXaz$FkXkX$G$HkXazkX$JkX$K$P$LkX$MkX$NkXkX$OazkX$QkX$RkX$SkX$T$UkXazazkXaz$W$Xaz$Y$Zb�azaz$[$\azaz$]$^az$_azaz$`b�azxvp�$cMMaN$e$g$fiMפ`�$h$u$i$o$j$ntk$k$l$mLN[#�NML�$pN$q$razb�$s$tgCazb�az$v$~$w$ziM$xiM$yiM�L${iM$|$}�8iM�xiM$$�$�$�iM���:<�iM��L$�$�%L�$�$�L�$�L�L�$�$�$�$�$�$�$�$�L�$�$�L�$�L�$�$�L�$�L�L�$�$�$�L�$�L�$�$�L��L�$�L�L��L�$�$�L�$�$�$�$�$�$�$�$�$�$�L��L��$�$�L��L��$�$�$�$�L��L��$�$�L��L�$��$�L��$�$�$�$�$�$�L��L��$�$�L��L��$�$�$�$�L��L��$�$�L��L�$�$�$�L���L�$�$�$�$�$�$�$�$�L��L��$�$�L��L��$�$�$�$�L�$�$���L�L��$�$�L��L��$�L�$�L�$�$�L�$��$�L��L�$�$�L��L�$�B $�L�$�L�L�$�L�$�L�$�L�$�L�$�L�$�$�L�$�L�B L�$�L�$�L�$�L�$�L�L�$�$�L�L�$�$�L�$�L�L�d!L�$�$�L�$�L�$�L�$�L�L�$�$�L�L�$�$�L�L�$�L�$�L�$�$�L�L�B %%%N%�%��%%��%%�%	�%
��%%�%
��%%�%�%��%�@LcW%&)%%%%L�A`�M%%2%%%g_L�`�%Mty%% %&%!N%"NN%#%$N%%NNQ�%'%,N%(%)N%*N%+NNQ�N%-%.NN%/N%0%1NN_F%3%z%4%Q%5%C%6%=%7%:%8%9M�dd`�%;%<nWb�L�b�%>%A%?%@j�ku� cW%B`��Ib�%D%K%E%Gl%FLj�%H%Jb�%Ib�ddb�%L%O%M%NMM�db�%Pddh%R%f%S%Z%T%W%U%Vb�b�dty%X%Yp�MLl�%[%c%\%]MiMxv%^%_%`c�b�cW%a��%btOg�%d%edb�d{xv%g%o%h%k%ib�M�%jdЌ%l%mL�xv%nc�Md%p%wiM%qd%r%s%tNkuku%u%vЛkub�%x%yMxv�M%{%�%|%�%}%�%~%�%%�d%�%�%�%�d%�dd%�d%�d%�%�%�%�%��-m��Kq�%�%���N�Zm�%�dd%�%�%�b�%�b�%�%�%�Jc�%�%�su���z�%��%��%�%�%������!p`�t�%�%�M�L�cW%�g_%�g_%�%�g_g_%�%�g_g_%�g_%��g_%�%�%�%�Lxv%�N%�d%�d%�dd%�d%��-d%�%�%�%�%�%�%�M�gC%�%�gC%�gC%���gC%�MM%�M%�M%�%�MM%�%�MM%�~MM%�%�M�%�%�d1gC%�gCw*gC%�%�%�%�%�d]d]%�%�%�%�d]%�d]ݶd]d]%�%�d]%�d]%�d]x�d]d]%�d]%�%�d]d]%�d]%�%�d]%�d]`�d]%�j�g4az%�%�%�%�L�%�`�N��%�nWd%�%�M�%�nW%�%�MM%�%�MM%�M%�%�M%�MM�o%�%�q~MML�%�&%�%�%�%�%�%���b�b�g4M�%�azcW%�&b�&M�q~M&m�q~&&&&&&&b�&dd&	d&
d&d&&
&&&o�m�d&d�Z�db�M&&Ld]xvg_&&&&&%b�&&NN&N&N&&NN&N& &!N&"N&#N&$NQ�Nj*d{&'&(c�b���aN&*&>M&+&,MM&-&.MM&/&0MM&1&2M&3M&4MM&5M&6&7MM&8&9MM&:M&;M&<M&=M@&?`�&@`�`�&A&B`�&C`�`�&D`�&E`�&F`�&G&H`�`�&I&J`�`�&K&L`�`�&M&N`�&O`�&P`�`�&Q`�d?&S'�&T&�&U&u&VM&W&c&XM&YMM&Z&[MM&\&]M&^MM&_M&`M&ag�&bg�M&dMM&e&fMM&gM&hM&iM&j&kM&lMM&m&nMM&o&pMM&q&rM&sMM&tM@&vMM&w&xMM&yM&zM&{M&|M&}M&~M&&�M&�MM&�&�M&�MM&�&�MM&�&�M@M&�'`&�&�&�&�&�&�&�&�dq~&�&�&�&�&�&�&�b�g&&��lb�&�&�&��c�&�&�~&�L�lj�&�@��&�&�xv�&�&�&�c�&�c�aNb�&�b�&�b�c�&�b�g4aN&�&�&�c�b�&�ak&�&�M&�&�&�&�tk&�tk&�tk&�tk&�tk&�tktk&�&�tk)7tk�{ak`�&�&�&�'tk�ltk&�&�&�&�&�&�b�&�b�&�&�b�b�&�b�&�dO� &�b�d{j�o&�&�d{xv&�c�d{&�&�&�&�&�b�&�b�iMc�&�&�&�&�b�m�b�d{b�d{&�&�&�b�b�&�b�b�&�b�&�d{&�c�dcWg_&�nW&�&�nWnW&�nW&�nW&�&�nWnW&�nW&�nW&�&�nW&�nW&�nW&�nWnW&�nW&�&�nWnW@&�'&&�'&�'&�c�&�&�M&�&�MM&�&�M&�MM$3M&�&�'&�M&�M&�M�oM''M''M���oM'M'�oMg_d'	'M'
'M�'M�M�'
'M�'M�M�{�'M''N'N'N'N'''Q�Q�N�''!'N''N'OEQ�'NN' Q�Q�'"NN'#'$N'%NNOT'''\'(')LN'*d'+'?',':'-'4'.'1N'/N'0m�N'2i�'3`��`�'5'7'6��M��M'8'9M��M';N'<'=N`�'>NLnW'@'DN'A'BcW'CcW#cW'E'Y'F'O'G`�N'HN'IN'J'KNN'L'MN'NNNQ�'PLL'Q'RL'SLL'TL'UL'VL'W'XLd^L'Z'[dMMN']'^`�M'_p�nWN'a'�'b'cb�M'dq~'e'}'f'vl'g'h'ldn'i'jll'kdnll'm'n's'o'r'p'qնڈg	g&c�ն't'u�ڈg&ll'wl'xl'yl'zl'{l'|l��'~'�''�'�'�l'�l'�'�ll'�l�l'�'�'�g&'�'�g&g&�'�'�'�'��g&ڈc�'�'�g&նg&�'�'�'�l'�ll'�'�lc�l'�ll'�'�'�'�g&�g&'�'�c��g	�l'�'�l'�l'�l'�ll'�dnl'�'�'�'�LL�'�'�t�'�t�'�t�'�c�M�'�'�'�M'�MM'�'�MM'�M'�'�MM'�'�M'�MM'�'�M'�MM'�@M'�MM'�M'�M'�M'�M'�'�M'�M'�MM'�'�MM'�M'�'�M@M'�'�g_g4c�nW'�(�'�(m'�(5'�'�'�'��tyL�b�'�'�lp�'�'�m�'�'�m�m�'�m�'�m�'�m�'�'�m�m�d}'�(+'�'�'�'�'�'�'�`�'�`�`�'�d�'�'�`�'�`�'�`�`�'�'�`�'�`�`�'�,`�'�'�O�`�'�'�az'�b�m'�'�u�azazgC'�`�'�`�`�v�'�(b�'�(((`�`�(`�(`�((`�`�(`�d�((
(	`�`�,`�((((
`�(`�(`�(`�(`�(`�(`�d�`�(`�(`�(`�(`�(`�(`�(`�d�`�((%((!(`�( d�O�d�("`�(#($O�`�,`�(&`�('()�%((d�d�`�(*`�d�(,`�(-`�(.(2(/(1(0`�,`�O�`�(3`�(4`�az`�(6N(7L(8(K(9(?(:(<b�(;L�xv(=(>Nb�db�(@(H(A(G`�(Bb�(C(D(Eb�yy(Fb�~�M�L�(I(Jdb�`�b�(L(f(M(P(N(O`�b�dxv(Q(Xb�(R(Sg_(T(Vg_(Ug_���(WM�g_(Y(]N(ZN([(\NNN;N(^N(_(`N(aN(b(dN(cP}N(eNP}N(g(j(h(iMdML�(k(lcWM�db�(n(�(o(�(p(�(q(�`�(r(s(�(t(uMM�(v(���(w(x(�(y��(z����({��(|(}��(~��(��(�����(���[�(�����(�(���(�����(���(�(�����(���(���[�M���bM�p�(�(�d(�(�d(�(�(�d(�(�dd(�(�(�d�(�dd(�dm�d(�(�d(�d�(�(��(���(��(��d(�(�d(�(�(�d(�(�dd(�do�(�di1��d(�d(�d(��d(�(�c�db�kuc�(�c�(�(�c�(�c�(�c�(�c�(�c�c�d�(�(�(�(�(�g4(�M�(�M�M�(�M�(�M�(�(�(��0M�M��`�c�(�(�L�cWb�g4M�(�g_(�(�(�(�(�(�L�(�(�(�>�(�>S>�>c>c>CL�(�(�L�L�(�(�L�L�(�(�L�L�(�(�L�L�(�L�(�(�L�(�L�L�(�L�(�(�L�L�(�L�@(�)L�(�(�)L�(�(�(�(�L�(�L�L�_�(�)L�(�L�(�(�L�L�(�(�(�(�L�L�(�(�L�L�(�(�L�L�(�L�B (�L�L�(�L�(�(�L�L�)L�)B L�B L�L�)L�)L�B L�)L�))	L�)
L�L�)L�))
L�L�)L�)L�))L�)L�)L�)L�)L�)L�L�_�)1�)+))k))D))0)M)MM)M) M)!M)")#MM)$M)%)&M)'M)(M))M)*M)+M),MM)-M).M)/@M)1M)2MM)3)4M)5MM)6)7M)8MM)9):MM);M)<)=MM)>)?M)@M)AMM)B)CM@M)E`�M)F)G)YM)H)IMM)J)KMM)L)MMM)NM)OM)PM)Q)RM)SM)TM)UM)VM)WMM)X@M)ZMM)[M)\)]M)^MM)_)`MM)a)bMM)cM)dM)e)fMM)gM)hM)iM)jO�M)l)�)m)�)n)�L�)o)pM)qM)rM)sMM)tM)u)vM)wM)xMM)yM)zM){M)|)}M)~M)MM)�Md�)�l)�NN)�)�NN)�)�NN)�N)�N)�)�NN)�N)�)�N)�N)�NN)�)�NN)�N_�)�)�)�)�`�d`�)�)�M)�LL4�`�N)�*S)�*R)�*)�)�)�)�)�)�)�d)�M�)�)�M�)�M�)�M�)�M�{�)�M�)�M�)�M�)�M�)�M�M�)�)�M��0M�L�b�)�)�L�dd)�)�)�)�w�)�)�)�)�Mb�az)�b�az)�)�)�)�azb�b�d])�)�b�eh4b�`�)�)�e$e$)�e$)�e1e$)�)�)�)�L�dL)�)�)�)�d)�dM)�)�)�)�M)�MM)�M)�Mq�M��)�M)��o)�dd)�d)�d)�q�d)�*)�M�)�)�)�M�)�)�)�M�)�M�)�M�M�)�)�M�M�)�M�)�M�)��M�)�)�M�)�M�)�M�)�M�)�)�M�M�)�M��)�M�)�M�)�M��M�)�*)�*)�M�)�M�M�)�)�M�M�)�*M�*M�*M�M�{�*M�*M�*M�M�*M�**	M�*
M�{�M�***
M�M�**M�M�*M�**M�*M�M�*�M�*M�M�**M�*M�M�*M�*M�*M�*M�{�xviM* ***!*'*"*#xvM�*$dw�*%w�*&w�HG*(*)L�ak�N*+*O*,*N*-e�*.e�*/*4*0MM�*1*2*3e?M�M�ty*5*G*6*D*7*C*8d*9*>�;*:*;�;*<�;*=�;�;~*?�;�;*@*A�;�;*B�J�;�o��*E*F��J)x��*H*L*I*J���*K)x�Jd*Mg�tOg�`�K�*P*Qg4akaNp�`�M*T+*U*�*V*�*W*}*X*gb�*Y|�*Z*[MM*\*]MM*^M*_*`*e*aM*bMM*cM*dMq�*fMM�;*h*n~�*i*jb�y7*k*lak*makak�{*oM*p�J�J*q*r�J*s�J*t�J*u*y*v�J�J*w�J*x�o�J*z�J�J*{�J*|�;�J*~*�**���xvMdM*�`�M*�*�*�*�*�*�b�e��mb�*�*�b�Ќxvb�*�*�*�*�*�ku*�*�*�*�AeB�*�*��AeAe*�wAAe*�Ae*�Ae�c�d*�*�M�`�*�MM�*�*�*�*�*�*�akak_�*�*�L�eN`�v�*�*�*�dd�K*�*��rX�rX*�*�*�*�*�*�b�*�nWd*�*�*�L*�l�l�*�l�*�*�l�e\l�e�p�*�*�*�*�~nW*�M�b�*�*�*�*�*�*�*�����ek*�x����Y*�*�*�*�3S������P*��P��*�*�xvb�{
*�*�*�*���*�*�*�*�y(���y(*�c�d]d{*�*�*�*�*�Md{d]*�d{d{Md{*�az*�az�?*�+*�*�*�*�*�d��*�*�*�d{=*�*�*�*�M�#�M�ezM�*��M�*�M*�az*�az*�azazgC*�*�*�t�*�g4*�g4*�*�2g4g4*�g42p�*�*�+*�*�ak*�*�ake�ak*�ak*�akak�+ak+akak++ak+++akak++ak+	akak+
+akٛak+
ak+akak+ak+ak+ak+ٛak++++d`�akj�++b�d`�+j�xv+L�L�+L�+L�>S+ /+!-�+"+�+#+b+$+Z+%+V+&+'@p�+(+O+)+G+*+;+++4+,+/w+-+.wb��"+0+2+1azb�w+3wwgC+5+8p+6p+7�ip+9b�w+:azw+<az+=+Dw+>az+?+@gCb�+A+BazgQ+Cb�azw+E+FgCb�gC+HgC+IgC+JgC+KgC+LgC+MgCaz+NazgC�+P+Q��+R�+S�+T+U�e��+W+Y+XLp�cWl�q~+[+^+\+]�,MMp�+_+anW+`aN`�dli+c+�+d+k+e+h+f+gMcWM�N+i+jlakb�w�+l+�+m+�b�+n+o+�+p+�+q+xkX+rkX+s+tkX+uazaz+v+wkXkXaz+y+�+z+�+{+�+|az+}az+~az+azazkXazkX+�kXaz+�+�azazkXkX+�+�+�+�+�+�kXkXazaz+�az+�kXazkXaz+�+�kX+�az+�kX+�azkXkX+�az+�+�+�az+�az+�kXazaz+�azkX+�+�kX+�kXwkXw+�Mp�+�p�+�p�+�p�+�p�+�p�e�+�+�c�Nc�d+�+�+�+�+�+�db�+�b�+�+�+�+�li+�+�+��lili+�q�li+�+�+�+�+�+���#li��+�+�lixglixg+�+�lie�+�lili�1li+�+�lili+�+�+�li#pz,+�+�dp�q~i�+�+�+�+�L�xvb�M+�+�`�g_c�aN+�,�+�,�+�,}+�+�+�+�+�+�Ldb�L+�+�xvq~d{M+�+�+�+�dMc�`�+�+�M�`�+�c�d+�+�,;+�,'+�+�+�+�+�O�+�+�O�+�O�+�O�+�+�O�+�O�O�@+�O�+�O�O�+�+�O�+�O�@O�nWO�+�,+�,	O�+�+�,+�,+�O�+�O�O�+�O�@,O�O�,,O�@O�,O�O�,O�,,O�O�@,
,O�,O�,O�,
O�,,O�@O�O�,,O�,O�,O�O�,O�@O�,O�,,,",,,O�,O�,O�@O�O�,O�, ,!O�O�@,#O�O�,$,%O�,&O�@O�,(nW,)nW,*e�,+,5,,e�,-,1e�,.,/e�,0e�@e�,2e�,3e�,4e�@e�e�,6e�,7e�,8,9e�,:e�e�e�nW,<,=,_,>,Q,?,J,@e�,Ae�,B,Fe�,Ce�,De�,Ee�@e�,G,He�,Ie�e�@,Ke�e�,L,Me�,Ne�e�,Oe�,Pe�nWe�,R,S,Y,Te�e�,U,Ve�e�,W,Xe�@e�,Ze�e�,[,\e�e�,],^e�e�@,`,o,a,h,be�,ce�e�,de�,e,fe�e�,g@e�e�,i,je�,ke�e�,l,me�e�,n@e�,pe�,q,we�,r,se�,te�e�,ue�,v@e�,xe�,ye�,ze�,{e�e�,|e�@,~,�,,�,�,�,�b�,�,�ak,�ak,�,�ak!�[#,�akՊaknWg_,�,�My7cWc�,�,�,�b�MnW,�,�akl�t�aN,�,�,�,�,�,�,�,�,�M,�b��0b�|���nW,�NM,�,�,�,�n�`�,�g4,�,�d,��,�,�,�e�e�e�q,�d,�d,�,�fff!,�,�b�db�d,�,�,�,�,�,�,�q~,�,�,�,�M,�,�,�M�OM,�,�MM,�,�MM,�M,�M�O,�M,�M,�,�M,�M,�M�4,�,�,�,�,�,�M,�M�4,��4M�4,�,�,�,��4M�4M,�,��4MM�4,��,�,�,�,�M�4�4M,�M�JM,�,�,�,�,�M,�MM,�M,�M,��oM,�MM,�M,�,�M,�MM,�M�J,�MM,�M�oc�,�,�M,�,�Mg�,�MM,�tOM,�,�Nxvg4d,�,�,�,�L�N�b�,�,�c�Nb�M,�-�,�-�,�-.-------M-MM-tOMM--MM-	�;-
�o�;-MM-
M--MMA�--&---M--M--M��$3-MM$3M--M-M˫-M--MM- M-!-"MM-#-$M-%MdMM-'M-(M-)-*-,-+MMq�$3--M$3-/-C-0-;-1-6-2M-3M-4M-5$3M��M-7-8M-9MM-:���o-<M-=M->M-?-A-@MdtOM-B�;g�-D-x-EM-F-oM-G-H-m-I-J�J$3-K$3-L-f-M-X-N-S��-O��-P-Q��-R��f*����-T-U��-V��-W��f*��-Y-^-Z����-[��-\��-]��f*��-_-`-c��-a��-b��f*-d��-e��f*��-g����-h��-i-j����-k��-lf*��-nM$3M-p-sM-q-rM�oM-t-v-uMMtO-wMtOM-y-�-z-~M-{-|M-}MtOMM-M-�-�-�M$3M$3-�-�-�M-�-�M-�Mg�A�M-�-�-�-�-�-�$3M�;M-�MM˫-�M-�-��o$3$3M-�ty-�ty-�tyty-�ty-�-�tyty-�ty-�f?tyAL-�.�-�.�-�.-�-�c�Nb�-�-�-�-�-�-�-�-�-�M-�-�MMtO-�M-�M-�-���M�4M-�-�-�N`�L�-�-�-�-�-�-��`�,`�fNӛf\��-�-�-�-�-�-���K�-�MM-�q�M-�-�-�M-�M-�MM-�M-�-�-����O�MM-�M-�d�o-�-�fk��M-�aNM-�-�-�-�-�M-�-�MaN-�`�-�-�`�-�`�-�`�-�-�-�-�-�-�`�,`�-�-�,fyb�f�-�-�-�-�`�f�b�`�-�-�=Of�f��%`�f�-�M-�-�aNMf�ӹ-�.-�-�M-�-�-�-�-�q��;�O�o-�-�y�~d��-�-�-�-�-�M��M-�-�M~�oM.M.M�;M..
..f���M.M.M..	MM.
.M.MM�4M..M..�`��`�..�nW...,.d..'.. ...o�d�N..d.�Ndd.�Nd.!d.".$.#�No�m�.%.&dq�o�d.(d.)d.*do�.+o�d.-.[...6./.2.0d.1dd�Nd.3d.4d.5o�d.7.@.8.;d.9m�.:q�dd.<.=.?d.>o�dq��N.A.Q.B.O.C.Lo�.D.Eo�o�.Fo�.G.Ho�.Io�o�.Jo�.Kdo��N.M.Nq�m�q�q�.Pq�o�.R.U.S.T�dq��N.V.Wo�dd.Xd.Yd.Z�No�.\.x.].ad.^._.`o�do�d.b.vb�.c.d.mb�.e.fb�b�.gb�.hb�.ib�.j.kb�.lb�Jb�.nb�.ob�b�.pb�.qb�.rb�.s.tb�b�.uf�b�d.wo�d.y.�.z.}d.{d.|o�d.~dd.q�o�.�.�.�.�.�.�q�m��N.�.�o�.�o�o�.�o�.�.�o�o�.�o�.�do�d.��Nd.�.�.�.��Nd.�dd.�d�.�.�q�o��No�.�t�`�.�.�`�`�.�`�.�`�.�.�`�.�`�`�.�`�.�.�`�`�.�.�`�`�.�`�.�.�`�`�@.�.�N.�NMN.�.�N.�N.�N.�NN.�N.�.�NN.�N.�N.�N.�N.�.�N.�NN.�.�NN@.�`�.�.�.�.�Nc�.�b�.�.�.�z�z�.�.�z�.�z�.�z�`�z�.�z�.�z�z�.�z�.�z�.�z�.�.�`�.�`�.�.�`�.�.�.�`�.�`�f�.�.�`�f�`�f�.�.�.�.�.�`�`�.�f�`�`�.�`�.�.�f�`�f�.�`�f�.�.�`�f�`�.�M�.�p�.�.�.�daN`�.�iM.�.�.�.�.�.�b�.�b�sub�+�.�.�.�.��.��K�N.�.��Zo�m��.�su.�.��Csuo�m�.�//b�b�+�d�/L�/0�/0�//�/////	//
//n�/g4/
g4/g4g4�UN//M/M/MMd//`�aNdcW//`�/m��^//b�M��,d//.//+/ /!���xL/"/#dd/$/%dd/&d/'d/(/)dd/*dm�/,/-g4b�nWb�///2/0/1b�NdM/3/�i�/4/5/o/6/EM/7/8MM/9/:/</;MMg�M/=/>/D/?g�/@M/AM/B/CM���)�4g�M/F/Y/GM/H/T/I/Jg�M/K/N/LM/Mg�g�MM/O/PM/Qg�/RM/SM�*�M/U/VMM/W/XMMg�/Z/k/[/_M/\M/]/^MMg�M/`�/aM/bg�/c/dM/e/h/f/gM�	����/i/j�+�;����/lM/mMM/ng�M/p/�/q/w/rMM/s/tM/uM/vMMg�/xM/yM/z/~M/{/|M/}MMg�M/M/�M/�/�M/�/�/�/�$3���p��/�/��	M����/�M/�/��MM/�/�M/�M/�MM/�/�M/�/�/�/��������/�/��������Mp�cW/�0=/�/�/�/�/�/�/�/�gQL�M/�M/�/�M/�M��Mb�M�/�/�b�/�M�/�/�M�/�M�/�M�/�M�M�/�/�M�M�/�/�M�/�M�/�M�/�M�{�M�nWM/�0/�/�p�t�/�/�/�b�d/�M/�/�/��@g
gX\/�/�/�/�/��/��/��/���/�/��/���/��/�/���g+/��"�"/��"/�/��"/��"/��"/��"/��"/��"/��"�"g+/�/�/�/�/�/�/���/�����/���/���/���/�/�����/�g+����/�/���/���/�����/�/�����/�/���g+��/���/�����/���/���/���/�/�����/�/�����g+/��/�0/��/��/���/��/��/�0�0�g+�0��0�0�00��00	��0
g+�00<0
000000d0dm�d0d0do�d0dq�d00000(0cWcW000 cW00cW0cW$$cW0!cW0"cWcW0#cW0$0%cW0&cW0'cWcW)�0)cW0*cWcW0+0,cW0-cWcW0.0/����cW01cWcW02cW0304cWcW0506cWcW0708cW09cW0:cW0;cWcW?@NM�0>0X0?0U0@0T0AL0B0I0C0F0D��0E��b���b�0Gb�0H��b�0J0N0Kb�0Lb�0Mb�b���0O0R0P0Qb�g;b���0Sb�b���dL0V0Wi�b�dM0Y0p0Z0[nWL0\b�N0]0^0eN0_0`N0aN0bNN0c0dNQ�N0fNN0gN0h0iN0jN0kN0lNN0m0nQ�Q�0oU�Q�0q0�0r\�0s0�0t0~0u0xd0v0wddo�d0y0zdd0{0|dd0}�Zd00�0�d0�d0�dd0�d0�0�db�d0�dd�Zd0�d0�d0�d0�d0��Z0�d0�0�d�Zd0�p�hb�0�0�0�0�0�0�b�kuN�0�0�xv0�0�b�b�0�b�0�b�0�0�b�cWb�Mp�0�0�0�0�Nb�K�0�0�0�0�d0�d0�d0�0�`�0�e�0�0�`�0�`�e�`�`�d0�0�0�`�d0�0�`�d`�0�0�0�`�0�`�0�`�gI`�`�0�`�0�0�`�`�g^0�0�0�0�0�0�0�$$0�0�0�0�0�ghgv$$0��fx�gvcW$$0�x�0�x�$$x�0�0�0�0�0�M0�M0�M0�M�M0�MM0�0�MM0�*�MM0�0�M0�0�0�M)x0�)xMM0�M0�Mg�d{d0�1o0�10�0�0�0�0�0�0�b�0�0�xv0�0�xvxvd0�xvxv0�0�xv0�xv0�xv0�xv0�xvxv0�xv0�xv0�0�xvxv0�xv��l{
0�0�xvb�M�Л0�10�1L�1g_Nl1d1d111d1d11dBf1	1
Bf1BfdBf1
d1ddBf111M1dd11d1d1dd�Zj*aN111111drfg_d1LK�`�1 1U1!10M�1"1#1,1$1(=�1%=�1&=l1'=l=�1)=�=�1*1+=�,w=�=l1-,w1.=l1/=l=�c�11121:13d1417d1516d�dd1819dBfd1;1J1<1?d1=1>dBfdd1@d1Ad1B1Cd1Dd1Ed1Fd1Gdd1H1Id�d1Kd1L1Nd1Mo�d1Od1Pdd1Q1Rd1S1Tdq�m��o1V1nN1W1X��1Y1j1Z1g1[1e1\��1]d1^MM1_M1`M1a1bMM1cM1dMg���1fdgQ��1h1i��g���1k����1l1m��g���`�p�1p1s1q1rL�Ng4M1t1�cW1u|�1v1w|�1x1�1y|�1z1�1{|�1|1�1}|�|�1~1|�|�1�|�1�|�1�|�1�|�1�|�g�|�1�1�|�1�1�1�|�1�|�1�|�|�1�1�|�|�g�1�|�1�|�1�|�|�1�|�1�|�g�1�|�|�1�|�1�|�1�1�|�|�1�|�1�|�1�|�1�|�1�g�|�1�|�1�|�|�1�1�1�g�g�g�|�c�L1�2�1�1�1�1�c�1�1�c�1�c�1�c�c�1�1�c�1�c�1�c�1�c�1�c�1�c�c�1�1�c�c�1�1�c�1�c�c�1�c�1�1�c�c�1�g�c�1�LL1�1�LL1�1�L1�L1�LL1�1�LL1�1�L1�LL1�1�L1�LL1�1�LL1�L1�L1�L*�1�21�1�1�1�1�1�g41�c�M1�i�1�1�1�1�1�1�Nb�c�L�1�1�g4�HcWM�1�1�1�b�b�xv1�b���b�aN1�cW1�1�cWcW1�cW1�1�cWcW1�1�cWcW1�cW1�cW1�cW1�1�cW1�cW1�cWcW1�1�cW1�cWcW@N1�1�aN1�aN1�21�aN2aNaN22aNaN22aN2aN2aNaN2aN22	aNaN2
aN2aN22
aNaN�uaN2aN2aN22aN2aN2aN2aN2aN2aNaN22aN2aN2aNaN22aN@aN22|2 2z2!2o2"2d2#23�H2$N2%2&NN2'2(NN2)2*NN2+2,N2-NN2.N2/N20N21N22Nx�24L252K262E2728b�N29akM2:2;2D2<l2=ll2>2?l2@ll2Al2B2Cllll�2F2J2GdM2H2IMMt�dL�2L2]2M2\ak2N2O2Q2PL�iMb�2R2Sd{kuM2T�92U2V�92W�9�92X2Y�9�92Z�92[h�9cWN2^2_`�b�2`cW2aaz2b2c��oo�<�2e2n2f2iM2g2hMM`�N2j2kN2lNN2mNcWd]m�2p2w2q2rp�M2st�2tF�2uF�2vF�hF�2x2yp�b�`�lM2{nW`�2}2�L�2~az22�2�Ba2�nW2�L�2�2�2�2�azNgCb�az2�azNaziM2�2�2�d2�d2�2�d2�d2�d2�2�2��2��2�2�2��2��2��d2�d�2���2�2��2���2�2��o��2��2��2���2��2�2���o�2�d2�d2�2�2�2�d2�2�d�N2�2�m�2�m�m�2�2�m�2�2�m�2�m�o�2�m�o�m�2�o�m�2�m�2�m�2�2�m�2�m�m�2�2�m�m�2�m�2�m�2�o�m�2�d2�do�d2�6�2�4�2�42�2�2�2�2�2�Naz`��,2�2�tydg_d2�3~2�3c2�32�2�2�2�2�2�2�2�Mt�Nb�2�2�g4i�2��xazM2�2�2�2�MddaN2�2�d`�b�M2�2�2�2�2�2�dm�2�c�c�L�2�2�L�i�2�LL2�2�2�i#b�b�i#2�2�2�2�Nxv2�2�i2��L�2�2��Cb�2�2�kum�b�L�2�3c�2�b�33b�b��b��}33O33A33;33:3M�3	3�o3
3�o�o3�o3
q��oM33M�433333�3�3�3�3�J�33�O�y��33!3�3��3�3 ��J3"3.3#3)3$3&3%M�M3'3(�MM�3*3,�3+M��3-�M3/343032M31M�33��M35383637M�M�39��MNcW3<3=dg4b�3>`�3?`�3@`�h"3B3L3C3DdcW3Ed{�Z3F3G�Z3H�Z3I�Z3J�Z�Z3Kd�Z3M3Nd`�g4aN3P3\3Q3Y3R3SMNN3T3U3W3Vq~h1q~q~3Xq~h@3Z3[`�dMd3]3`3^3_N��Mb�3a3bM`�L�~�3d3{3e3z3fd3g3i3hMNi�3j3kML3l3s3m3p3n3oe^Cli�3q3r9�
g43t3w3u3vg_dL�b�3x3ydNMg_ML3|3}h�,b�`�33�3�3�3�3�3�3�3�M�M�3�M�3�3�M�M�3�3�3�3�3�3�M�3�M�3�M�M�3�M�{�M�3�M�3�M�3�3�M�M�{�3�M�3�M�M�3�3�M�3�M�M�{�3�3�M�3�M�3�M�3�M�3�M�[M�3�3�M�3�M�3�M�M�[3�3�3�3�3�M�3�M�M�3�3�M�M�3�3�M�M�3�M�3�3�M�3�M�3�M�3�M��0M�3�M�M�3�3�M�M�3�M���3�3�M�3�M�3�M�3�3�M�M�[M�3�M�3�3�M�3�M�M�v3�L�di�3�3�3�3�3�3�3�3�3�3�M�b�akM3�3�Mc�3�c��C`�3�3�3�3�Mp�dcW3�c�nWd{3�3�3�3�3�3�dc�L�c�3�c�b�c�3�3�3�3�c�az3�c�3�3�U�P�P�3�P�[�3�3�Md{L�X3�43�3�3�3�3�3�d�i�3�3�b�c�b�p�3�3�3�3�3�3�b��3�N3�cW�u�fnWp�3�3�c�3�eL3�aN3�43�ak�lak4azgCaz44	44c�4akb�44c�LakN4
4
44b�b�dp�44Md{4ak444M4M4M4M��4��4�M44M�;g�M44�44x44O44"4 4!L�c�tycW4#4N4$L�4%4:4&40�4'�4(4)��4*4+��4,�4-4.�4/�{��41�42M�M�43M�4445M�46M�M�4748M�M�49{�M�M�4;M�4<M�4=4>M�M�4?4@4H{�4A{�4B{�4C{�4D4E4G{�4FM�{�{�M�{�4I4J{�4K4L{�M�{�4MM�{�c�p�4P4R4Qp�Mb�4S4h4T`�4U4a4V4XL4W�d^4Y4^4Z4\4[y���y�L4]L��4_4`L*�L��4b4e4c4dL����L��4fy�4g�Li�4i4j4riM4k4l4miMhN4n4p4oiM@iMiM4qiMO4s4uiM4t�8iM4v4w�8���8iM4y4�4z4}4{4|xvakMp�4~4�b�4N4�N4�N4�N4�N4�4�NN4�4�N4�NN4�N4�N4�4�NNN;`�b�4�4�4�4�cWp�M�4�4�4�4�4�4�4�iMc�w�d{4�4�g_c�4�e�4�4�tkYYtk4�4�4�4�H:�N4�4�AAr:4�M�L�4�4�4�4�4�4�b�dc�dM4�M4�4�M4�M4�M4�M4�MM4�4�M4�M4�M4�M4�MM�oaN4�4�M4�M4�MM4�4�4�M4�M4�4�MM4�4�MM4�M4�M4��M��L�4�L�4��L�4�5�4�5N4�4�4�g4L4�4�4�4�4�4�M�l�Mb�4�4�cWM4�4�4�4�l4�l4�4�llg&4�4�4�l4�lg&l4�l4�lg&l4�b�b�4��>4�4�b��>b�4�54�b�b�4�4�4�L�4�4�L�L�4�L�4�4�L�L�4�L�4�L�4�L��L�4�4�L�4�L�L�4�L�4�L�4�4�L�4�L�L�4�L�x55L�MNxv55�55H55=55e�5c�5	c�5
c�5c�55
c�h]c�j�555*M�555M�55M�LM�55 M�55M��55�5��55��55��M�M�5!M�5"5#[5$[5%[5&[5'[5([[5)[M�5+59M�5,5-M�M�5.5/M�50�051�052�053�05456�055�0M�57�0�058M��05:M�M�5;M�5<hM�5>5G5?L�5@5Bq�5Aq�dd5C5Ddd5E5Fdq�ddb�5I5T5J5KdM5Ld{5M5RM5N5OMM5P5QM��M5SMM�5U5Vlib�d5W5X5g5Y5d5Z5[y7`�5\)75]5aq�5^5_5`hkhzh��5bsu5csu�h�5e5fL��d]L5h5|5i5{5jM�5kb�b�5l5m5t5nb�5ob�b�5pb�5qb�5rb�5sx�b�5ub�5vb�b�5wb�5xb�5y5zb�b�x�"�d5}5~b�c�5b�db�5�5�5�5�5�5�5�M�b�5�b�5�b�5�b�b�5�cW5�5�5�5�N5�5�5�5�NNL�NL�5�5�N5�5�NNL�5�5�5�L�L�NL�5�L�N5�5�5�5�N5�NL�5�N5�L�L�NN5�5�5�L�5�NL�NL�5�5�|�L�L5�cW5�5�cWcW5�cW5�cW5�5�cWcW5�cW5�cW5�5�cWcW5�5�cWcW5�$$cW5�5�5�5�tyM�5�b�5�i�N5�5�t�`�t�5�5�`�g4c�L5�6F5�65�5�5�5�5�5�5��"Z��"5��15��15�5�5��"5��"�"Z�5�Z��"Z�5�5��"5�5��"M��"5�M�Z�5�M�5�M�5�M�5�5�M�5�M�M�5�5�M�M�5�5�M�5�M�5�M�M�5�M��15�5�5�5�M�5�M�5�5��"M�5��"M�5�5�5�5�Z�M�M�5�M�5�M�5�Z�M�5�5�5�M�M�5�M�5�M�Z�5��"5�5�M�5�Z�M�M��"5�65��15��15��1�166�1�16�166�1M��166Z�M��166	6
6
�16�1�16�1�"�16�166�1�"�166B66(66$66Z�M��"66Z�Z�66Z�Z�6Z�66Z�Z�66Z�Z�6 Z�6!Z�6"Z�6#�"Z�6%M�6&M�6'M�M��"6)6-6*�1M�6+M�6,�"�16.646/�160�1�16162�163�1�1M�65�"�"66�"6768�"69�"�"6:6;�"6<�"6=�"6>�"6?�"�"6@�"6A�"M�M�6C6DM�6EM�M��"6G6[6H6Q6I6J�"M�6K6M6LM��"M�6NM�M�6OM�6P�"M�6R6SM��"6T6W6U�16VM�M��16XM�6YM�M�6ZM�Z�6\6k6]6dM�6^6_M��"6`M�6a6bM�M�6c�1M�6e6i�16fM�6g6h�1M��16j�1M��16l6�6mM�M�6nM�6o6pM�6q6|M�6rM�6sM�6tM�6u6vM�M�6wM�6x6yM�6zM�6{M��1M�M�6}6~M�6M�6�M�6�M�M�6�M�6�6�M�M�6�M�6��1M�6�6�M�6��"M�M�Z�6�7 6�6�6�6�L�6�L�6�>CL�6�L�L�6�L�6�>�L�6�6�6�6�6�6�xvM�i�`�6�6�t�LL�g46�6�6�6�6�6�6�6�6�6�p�6�g46����MM�6�6�M`�g4d6�6�6�6�6�b�6�b�b�6�6�b�6�6�b�6�6���6�6��6���6�6��6���h�b�p�6�Mg_6�g_6�g_p�6�6�g_6�M`�b�6�6�6�6�M6�MM6�M��6�MM6�6�MM6�M6�6�M6�M6�M6�M6�M6�M�oM6�6�6�6�6�6�� dM�c�6�6�Mg4`�d{6�6�6�6�b�MN6�6�cW6�d6�d6�?16�tkh�h�6�6�b�g4M�b�6�6�6�6�6�6�6�6�`�b�b�c�6�6�6�b�d6�6�d6�ddm�i�b�6�6�6�6�b�dd`�6�6�aN��b�d6�76�76�b�7d]7b�7b�b�7b���77cW77ak7ak7	akak7
h�akb�M7
777M�NdM77m�ty7ty7nWd7d77d7d7dd7d7d7d7d77db�d7!7�7"7�7#7$`�M�7%7t7&7'akcW7(b�7)7Q7*7B7+757,727-7/[�7.`�az7071yaz�[�`�73[�74b��+767<777:7879{
g�`�L�M7;`�N7=7@7>7?`�b�M[�L�7A[�`�7C7J7DH:7E7H7F7Gh4LNaz[�7ILaz7K7Laz,7M7N`�[�7O7P[���h�`�7R7c7S7\7T7Y7U7X7V7Wg4t�[�az,`�7Zj`�7[`�,7]7_7^�%`��t�7`7a7b[�g4h�`�7d7o7e7k7f7i7g7ht�b�azt�i7jiim7l7m7nig4[�i7pi(7q[�7r7sazN[�az7u7vc�LL7w7x7�7y7�7z7�7{M7|MM7}7~M7MdM7�7�M7�7�7�M7�M7�M7�M7�7�7�M7���;7�7��o��Md7�M7�M7�M7�M7�M7�My�M7�M�;MM7�M7�7�MM7�M7�M7�7�M7�MM7�7�7�M�M�7�MM7�7�MM7�M7�7�M7�7��;7��;7��;7�7��;�J�;7�7��;7�7��;�;7��;��7�7�7�7�7��;�;�%7��;�;��7��;7��;�;�7�7�7�7�NM�b�t�7�7�db�c�b�7�M�7�8
7�7�7�7�xvtym�7�7�7�7�7�M�7�M�7�7�M�7�M�M�7�7�M�7�M�M�7�M�7�7�M�M�{�M�7�M�7�M�7�M�7�7�M�7�M�7�M�M�7�M�7�7�M�7�M�M�7�{�M�7�M�M�7�M�7�7�M�7�M�M�7�M�7�M�7�M�7�M�7�M�7�7�M�M�7��M�7�7�7�b�7�7�nWdc�7�7�c�7�b�7�7�7�b�b�b�b�b�7�nW7�87�888dd]L�M�8dc�d88b�8dm�88	Mc�d8
8L�8g4g4i78888K�M8p�88M8M8M88M8M�OMM8M8M8M8M�O88db�NL8!O�8"E�8#A�8$A�8%>�8&;�8'8`8(L�8)8Jq~8*8+8@8,82q~8-8.q~q~8/q~8081<�q~<�q~83848<8588q~86q~87iFq~89q~8:q~q~8;iFq~8=q~8>q~8?q~q~iF8A8G8Bq~q~8Cq~8D8Eq~q~8F<�q~q~8Hq~8I<�q~8Kq~8Lq~8Mq~8N8[q~8Oq~8P8Qq~8Rq~8Sq~8Tq~8Uq~8Vq~8Wq~8Xq~8Yq~q~8ZiFq~q~8\8]q~8^q~q~8_iFq~8a8y8b8x8cM8d8u8e8m8fM�8g8l8h� � 8i� 8j8kM�� M�� M�8nM�8o8r[�8p[�8q[�iUM�8s8tM�[�M�8vM�8wM�b~��c�d8z8{MM�8|;�8}:�8~:89c8�8�8��o8��o8��o8��o�o8��o8�8��o8��o�o8��oM8�98�8�8��J�o8�8�8��O8�8�8�8�8��o�O�O�o�O8��o�O8��O8�8��O�o�O8��O�o8�8�8�8�d8�d8�8�d8�dd�o8�8�8�8�8�8�d8��od8�d8�dd�o8�8�8�d8�d�od8�8�d8��odd8�d�o8�8�8�8�8�8�d8�d�o8�8�d�o�odd8�d�od8�8�8�8�8��odd�od8�d�o8�8�8�8�8�8�8�8��J�o�J8�8��J�J�o8�8�8��J8��J�J�o8��J8��o�o�J8�8�8�8�8�8��J�o�o�J8�8��J8��J�o�o�J8�8��J8��J�o8��J�J�o8�8�8�8�8�8�8�8�8��;�;�o�;8��;�o8�8��;�o8�8��o�;�;�o8�8��;8��o8��o�;8�8��;8��;�o8�8��;�o�;�o8�98�8�8�8�8��;�o�;�;8��;�o9�;9�;�o�;9�;999�;�;�o9�;�;�o9	�o9
9399999
d999dd9d�o99d�o�od9dd9�od99,99#9999d�o�o9d�o99!9 dd�o9"d�od9$9)9%9'9&dd�od9(�od9*d9+d�od9-dd9.9/9190�o�od92d�od949E959>969997��o98�o�9:9<9;���o�o9=��o9?9B9@�o9A��o�9C�9D���o9F9V9G9O9H9L�O9I�O9J�O9K�O�o9M�O9N�O�O�o9P9S�O9Q�O9R�oM9T�O9U�O�O�o9W9_9X9[9Y9Z�O�o�O�o9\9^9]�o�O�oM�o9`�O9a�O9b�OM�O9d9�9e9�9f9~9g�o9h�o9i9s9j9o9k9m9lM�oM9nM�oMM9p9q9rM�o�oM9t9z9u9x9v9w�oM�oM9yMM�oM9{9|9}�oMM�o99�M9�9��o9��o�o9�9��od�oM9�9�9�9�9�9�9�9�9�M9�M�oM9�M�o9�9�M9��oMM�o9�9�9�9�9�MM�o9��o�oM9�9�9�9�M�o�oMM9�M�o9�9�9�9�9�9�9�9�M�o�oMM9��oM9�9�9�M�oM9�9�M�oM�o9�9�M9�M9��oM9�9�9�MM�o9��oM�o�o9��o9��o9�9��o9��o�o9�9��oq��o9�9��o9��o9��o9�9��o�o9�9��o�od�o9�9�9��o9�9�9�9�9�9�9�9�9�q�9�q��oq�9��oq�9�9�9�9��oq�q��o9��oq��o9�9�9�q��oq�9�9�9�q�q��o9�9��oq��oq�9�9�9�9�q�9�q�9�q��oq�9�9�q�q��o9�9�9�q�q�9��oq�q�9�q�9��oq��J9�9�:9�9�9�9��o9��o9��;�o9�9�9��o���o�o9��o�;9�9��o9��o9��o�;9�:�o�;:�o��;:::::�o:�;�o�;:�;:	:
�;��;�4:::
:�;:�;�:�;�oq�:::�;�;�M�;::�::�::%::#�o:�o:�4::: �4:�4:�4d:!�4:"�4M�4�o:$�o�J:&:�:':S:(:8:):/M:*:+M:,:.:-MM�oM�o:0:3M:1:2M�oM:4:6:5M�oMM:7M�o:9:E:::?:;:=:<�o�o�;:>�;�o�;:@:C:A:B�;�o�o�;:D�;�o�;:F:K:G:I:H�o�;�o�o:J�o�;:L:P:M:O:N�o�;�o�o�;:Q:R�;�o�o�;:T:z:U:m:V:b:W:^:X:[:Y:Z�;�o�o�;:\:]�o�;�o�;:_:`�;�o�;:a�;�o:c:g:d:e�;�o:f�;�o�;:h:j:i�;�o�;:k:l�o�;�o�;:n:x:o:s:p:r�o:q�o�;�o�;:t�;:u:v�o�;�;:w�;�o�;:y�;�o:{�o:|::}�O:~�O�o�O�O:�:��O�O�o:��o:�d:�:�:�:�:�:�:��J�J�o:��o�J�o:��J�o:��o�J:�:�:�:�:�:��o�J�o�J:�:��J�o�o�J:�:�:�:�:��J�o�J�o�J�o�J:��o�o:��o:�:��;�;:��;:�:��;:��;�4�;:��o�o:�:��o�o:�:��o:��o�o:��o:�:��o�;�o:�;:�:�:�:�:�:��o:��o:�:��o�o:�:��o:��o:��o:��o�od�o:��o:��o:�:��o�o:��o:�:��o�o�;�o:�:��o:��o:��o:�:�:�:�:��o:��o:��o�od:��o:��o�o:�d�o�o:��o:��o:��o�;�o:��o:�:��o:�;:��o:�:�:�:�:�:�:�M:��o�oMM:�:�M�oM:�:�:�:�M�o:�M�oM:�M:�:��oM:�M�oM:�:�:�:�:�MM�o:�:�M:��oM:�:�M�oM�o:�:�:�MM:��oM:�:�M:�M�oM;M�oM;;M;M;M;Mq�M;;,;	;�o;
�o;;�o;
�o�o;;�o�o;�o;d�o;;#;;;�o;�o�o;;�o;�o�o;�o;M�o;�o�o;;�o; �o�o;!�o;"M�o�o;$;%�o�o;&;'�o;(�o;);+�o;*�oM�oM;-;6;.�o�o;/;0�o;1�o�o;2�o;3�o;4;5�o�oq��o;7;8;{;9;f�o;:;;;O;<;D;=;@�4;>;?�4�o�4;A;B�4�o;C�4�4�;;E;I;F;H�4;G�4�o�o�4;J;M;K;L�4�o�o�4;N�4�o�4;P;\;Q;W;R;T�4;S�;�o;U;V�4�o�o�4;X;Z;Y�4�;�o�4;[�4�o;];d;^;a;_;`�o�4�o�4;b;c�o�;�o�4�4;e�4�o;g�o;h;r;i;l;j�;k��o�;m;o�;n�o�;p;q�o��o�;s;x;t;v;u�o�o�;w�o�o�;y�;z���o;|;�;}�o;~�o;�o�o;�;��o�;�o;��o;��o;��o�o;�;��o�;�oli;�;�;�;�li;�liliie;�li;�ie;�ieieli;�N;�>�;�>H;�>!;�;�;�;�;�j�LoY;�xvcW;�;�cWcW;�cW;�;�cWcW;�;�cW;�cW$$cW;�>b�;�;�<;�;�;�;�;�;�;�;��;��;�;�;�;�;�;��;���y��y�;��;�;��;��y��y�;�;��;�;���;��;�y��;��;��;��;��y��;�;�;�;�;�;��;�;��y���;��;���;;���;�y��;��;��;��;��y�;��y�;�;�;��;�;�;�;��;�;�;��;���;�;�y��;��;���;�y��;�;�;�;�;��y���;��;��;��y��;�;���;��y���;�<;�;�;�;�;��;��;���q�;��;���;��;�;��;�<;�<;�<�;��y��<<�y���<<�<�y��<<<	�<
<
<<y��y���<y���<<�<��y�<��<�<<��<�y�<=?<<�<<G�<<<1<<(< <$d<!<"<#d��d<%d<&<'d��d<)<.<*<,d<+�d<-d�d</dd<0�d<2<;<3<7<4d<5<6d��d<8<9�dd<:�d<<<A<=<?�<>�dd<@�d<B<D<Cd�d<E<Fd��d<H<n<I<Y<J<S<K<P<L<M��O<N<O�O���O<Q�O�O<R��O<T<V<U�O�O��O<W<X�OM�O<Z<f<[<a<\<^�O<]�O�<_<`�O���O<b<d<c�O��O�O<e�O�<g<k<h�O<i<j�O�M�O�O<l<m�OM�O<o<�<p<w<q<t<r�;�;<s��;<u�;�;<v��;<x<<y<|<z<{��;��;<}<~�;���O<�<�<�<���;�;�<��;��;<�<�<�<�<�<��;��;<���;<�<�<�<���;�;��;<���;<�<�<�<��<��;�<��;�;<���;<�<�<�<��;��;�<��;�;�<�<�<�<�<�<�<�<��;<�<��;�;�<��;<�<�<�<���;�;��;<���;<�<�<�<�<�<�<�<���;��;<�<���;��;<�<�<�<��;���;�;<��;�<�<�<�<�<��;��;<�<��<���;��;<�<�<����;�<��;�<�<�<�<�<�<�<�<�<�<��;���;<���;�<�<�<���;�<�<��;��;�<�<��;<�<��;�;�<�<�<���;��;<���;<�<�<�<��;<�<��;�;�<�<�<�<��;��;�<�<��;���;<�<�<�<�<��;�;�<��;��;<�<���;�;<��;�<�=<�=<�=<�<�M<�<�<�M�M�M<�=MM�====M�M=�M==	=��M=
M�M===
==M=MM�=M=MM�==M==M�M===MM��=�M==-=='=="= =!�MM�M=#=$=%M�=&M�M=(M=)=,=*=+�MM��M=.=7=/=2=0M=1�M�=3=5=4MM��=6M�=8=:M=9�M=;===<MM�M=>M�=@=�=A=�=B=o=C=Z=D=N=E=I=F=G�;��=H��;=J=L�;=K�;��=M��;=O=S�;=P=Q�;=R��;�=T=X=U=V�;�=W���;=Y�;�;�=[=e=\=b=]=_�=^��;=`�;=a�;��;�;=c=d�;��;=f=i=g�;=h��;�=j=m=k=l�;��;�=n�;�;�=p=�=q=|=r=w=s=u=t�;�;��;=v�;�=x=z=y��;�={�;��;=}=�=~=�==���;��;�;=�M�;=�=��;�=��;�;�=�=�=�=�=�=��;�=�=���;=��;��;=�=��;��;=���;=�=�=�=�=�=���;�;�=��;��;�;=���;=�=�=�=�=�=�=�=��=�=�=�����=�=�=�=�������=�=�=�=�=�=�����=�=�M���=�=��=���=����=�=�=�=�=��=����=��=����=�=��=����=���=�=�=�=�=��4=�=��4=��4�=��4��4=�=��4=�=�=��4��;�4=��4�4=��;�=�=�=�=��4=�=�=��4��4�=�=�=�=���4��4=��4�4�=�=�=�=�=�=���4��4=�=��4���4=�=��4=���4�=�=��4��;=��=�>=�=�=�=�=�=�Oa=�Oa��Oa��=�����Oa=�=�=�=�Oa��=�=�Oa=���OaOa��=�>>>Oa��Oa��>OaOa��>>>>
>>�MM>	�M>>M�>
>�MM�>>M�M>M�nW>>d>d>d>d>dd>d>d>>d>d>dd> d�>">8>#>7b�>$>%>.>&>+>'>)��>(tOg�>*��y���>,>-g��og�q�>/>2>0>1�;M�~>3>4���J>5>6�o��dg�c�d>9>Gg_>:d>;><dd>=d>>d>?>@d>Ad>Bd>Cdd>D>Edd>Fdb�M�b�>I>O>J>M>K>LLrfrfb�>NM`�M>P>S>Q>RdMxvM>T>�>U>�>V>hM�>WM�>X>YM�>ZM�M�>[>\M�>]M�M�>^>_>b>`M�M�>a=P�>c>f>d>eM�{��Z�>gM��M�>iM�>j>�>k>�>l>tM�>m>nM�M�>o>pM�>qM�M�>rM�>s{�M�>u>|>vM�M�>wM�>x>yM�M�>zM�>{�0M�>}M�>~M�>M�M�>�>�M�M�>�M�{�M�>�>�M�>�M�M�>�{�M�>�M�M�>�>�M�>�M�>�M�>�M�M�>�M�>�>�M�M�{�d>�>�dd>�d>�>�d>�d>�d>�dd>�>�dd>�>�d�ddM>�>�>�>�>�>�>�>�>�cW>�>�az>�>�azaz>�azw>�azaz>�>�azaz>�az>�>�azwaz�bnW>�>�p�g4>�n�>�M>�MM>�M>�M>�>�MM>�>�MM>�M>�M>�M>��OM>�>�>�>�q~>�>�>�db�>�dd>�>�ddb�b�xv>�>�M>�>�>�>�>��b�>�>��>��Q>�>�b�>�b�>�b�b�>�b�>�b�>�>�b�db�>�akaktk>�>�`�q~d>�>�>�ՙeeՙakb�>�>�>�>�>�>�ak�m>�N>�L�>�L�>�L�L�>�L�it>�>�b�Mb�t�>�>�>�>�Mb�dt�>�>�M�c�tyd>�@�>�@>�?�>�?�>�?}>�?H??$??????li?gn?gnli??	gn?�Rgnli?
gnli??li?
?lipz)�?gnh�?�gn????????h�lignlili?li�?gn?gnlis8??pzgn? ?"pz?!pzlipz?#gnli?%?C?&?1?'?.?(?+?)?*pzgn��#?,?-gnh�li��li?/gn?0pzgn?2?8?3?5li?4gn�R?6?7ligngnq�?9gngn?:?;li?<gn?=gn?>gn??gn?@gn?Agn?Bgnh�gn?Dlili?E?Fpz?Glii�gn?I?^?J?X?K?N?L?Mgnlignli?O?Rli?Pli?Qgnli?S?V?T?Ulignlign?Wgnlign?Y?]li?Zli?[?\gngnlili�R?_?lli?`?a?e?b?dli?ci�gngnli?f?i?g?hgnlilign?j?kh�gngn7r?m?w?n?t?o?r?p?qgn�gnh�gn?sh�lign?u?vgnlign?x?{gn?y?zgnlign?|gnlign?~?�?`�?�`�?�?�?�?�?�?�`�?�`�?�`�?�֥`�?�`�`�?�`�?�`�֥`�?�,�?��ii�?�`�?�`�i�`�`�?�`�?�`�?�?�`�`�?��i`�p�N?�?��?�?�L�L�?�?�L�L�?�?�L�?�L�L�?�?�L�?�L�?�L�?�L�L�?�L�?�iL�?�?�?�?�?�?�?�?�?�c�?�nWb�H:M`�?�?�dc�c�g4?�?�?�?�?�nW?�m�?�?�?�?�m���>A?�>>��c�b�?�?�?�c�d?�b�dN?�?�?�?�?�?�?�n�c�Lak?�Mq~j*?�?�?�?�L�g_ak`�?�?�Lb�Mi�?�?�?�?�?�L�?�N?�N?�N?�N?�N?�N?�N?�N?�N?�N?�N?�NOENd?�d?�?�N?�?�?�M?��?��?��?���?��Ź?��?�?�?�M?�M?�M?�?�M�M?�M�o?��?���?��?��?�?��?���M?�@
?�@@@b�az@@@@�N�Z�N@dc�@@	@azb�gC@
azazb�c�@Lg4@@@n�@@w�c�dN@b�azi�@@J@@G@@(@@Makc�@@c�c�@@c�@c�c�@c�@ @!c�@"c�@#c�@$c�c�@%c�@&@'c���c�@)Nn�@*n�@+@,@2n�@-@.@0@/n�=�n�@1n�n�=�@3n�@4@6n�@5n�,w@7@A@8@=@9n�@:n�n�@;n�@<n�=�n�@>@?n�n�@@n�=�@Bn�@Cn�n�@Dn�@E@Fn�n�=�@H@Ib�xvMak@K@M@LMc�d@N@id@O@P@\li@Q@Rli@S@Wli@T@U@Vliq��1li@X@Zli@Ys8pzli@[,li@]@b@^lili@_@`li@alignli@cpzli@d@e@flign@g@hgn�1�1gnj�@j@kiM@l@v@m@p@nb�b�@oc�b�@q@t@rb�b�@slb�@ub�b��@w@{@xb�b�@yb�@zi�l@|@�@}@b�@~b�c�@�b�c�b�@�@�@�b��l@�b�b�l@�d@�@�@�@�@�@�nWaznW@�@�nW@�nWnW@�@�nW@�nW@�nWnW@�@�nWnW@�@�nWnW@�nW@�@�nW@�nW@nWl�@�@�@�c�b�M@�b�i�@�Av@�@�@�@�l�b�n�nW@�@�nWN@�b�@�A0@�@�@�@�N@�OEN@�@�N@�W�N@�@�@�N@�@�@�@�@�@�@�@�@�@�NN;NN;@�@�NN;NN;@�@�@�@�NN;NN;@�@�NN;NN;@�@�@�@�@�@�NN;NN;@�@�NN;NN;@�@�@�@�NN;NN;@�@�NN;NN;@�N@�@�@�@�@�@�NN;NN;@�@�NN;NN;@�@�@�@�NN;NN;@�NN@�N;@�N;NN@�@�N@�@�N@�N@�N@�N@�N;@�N;N@�@�@�@�@�@�NN;NN;@�@�NN;N@�@�N;NN;@�N@�@�NN;N@�@�NN;N@�N@�NN@�AA
ANANNAANAAAN;AN;NN;A	AA
N;NN;ANN;NANAA AAAAAANOTNOTAANOTNOTAAAANOTNOTAANAAOTOTNNOTA!A*A"A'A#A&NA$OTA%OTNNOTA(A)NOTNOTA+NA,NNA-A.A/OTNOTNA1AoA2AlA3NA4NNA5A6AZA7AFA8A?A9A<A:A;NO�NO�A=A>NO�NO�A@ACAAABNO�NO�ADAENO�NO�AGAQAHALAIAJNO�NAKNO�AMAPNANAOO�NO�NO�ARAWASAVNATO�AUNO�NO�AXAYNO�NO�A[NA\AgA]A`A^A_NO�NO�AaAdNAbO�AcO�NNAeO�AfNO�AhNAiNNAjAkO�O�NNAmAnNR�NApAsAqNArNNP}AtNAuNP}NAwA�AxA�Ay��AzA�A{A�A|A}c�e�s�A~Ac��Ic�A�A��A�q�A��b�Le�A�A�A�A�A�A�A�A�i�_Fl�A�b�p�A�A�b�A�b�A�b�A�b�A�b�A�b�A�b�b�d$NA�A�b�b�X�A�A�A�A�A�A��{�i�A�A��lA�A��lA��lA��lA��lA�A��l�l"A��lA��lA��l�lA�"�lA�A�`�e�i�e�b�A�A�A��:��L�akb�A�A�liM�L�cWA�A�A�A�MA�cWLA�A�A�NA�NNMA�A�LtyM`�A�A�L�A�N`�A�A�g4A�A�dA�lA�NA�NA�A�NA�NO�O�A�A�O�A�A�O�NA�O�O�A�O�A�A�O�A�O�A�O�A�O�A�O�A�O�NO�A�LA�LA�LLA�A�LA�LLA�A�LLA�LA�A�LA�LLA�LA�A�LLA�LA�LA�Li�A�BA�ddA�dA�dA�A�ddA�A�ddA�A�ddA�dA�A�ddA�dA�dA�A�ddA�BdBddBdBd@BCZBB�g_BBB)B	B(B
BBddBB
dBddBdBdBdB�-dBBBdBddBBdBdBBdm�m�dBB%Bb�Bb�b�B b�B!b�B"b�B#b�B$d$b�B&B'akc�akb�nWi�B*B6b�B+B,B/B-B.c�nWN�B0t�L�B1B2c�B3c�B4c�B5c�c�Mq~B7B8B<B9dB:dq�B;q�ddB=B>BVB?BLB@BDBABCo�BBo����BEo�o�BFBGo�o�BHBIo�o�BJo�BKo�m�BMm�BN��BO�BPBQ�BR��BS�BTBU�m��BWBkBXBhBYB`m�BZm�B[B\m�m�B]B^m�m�B_dm�m�BaBbm�m�Bcm�Bdm�BeBfm�Bgm�o�m�Bio�Bjo�m�o�BlB�BmBvo�Bno�Bo�BpBqBs�Br�o�o�Bto�Bu�o�Bwo�Bxo�Byo�BzBB{B|�o�B}o�o�B~m�o�o�B�o�B�B�o�do�B�B�o�B�B�o�o�B�B�o�B�o�B�o�o��B�B�B�o�B�o�B�o�o�B�B�o�o�m�o�B�o�B�o�B�o�B�o�B�o�B�m�o�B�B�B�nWnWB�nWB�nWB�nWB�nWB�B�nWB�nWB�nWB�nWnWB�B�nWB�nWnWB�nWB�B�nWnWB�nWB�jnWB�B�B�M�M�B�B�M�M�B�B�M�B�M�B�M�B�M�B�M�M�B�B�M�B�M�B�M�M�B�M�B�B�M�B�M�M�@`�B�B�C3B�B�B�B�B�MB�B�B�B�B�MMB�B�B��JM�JMB�MB�MB�M�JMB�MB�B�MB��JMMB�B�M�JMB�B�B�B�B�B�MB�B�B�B�MM�J�JMB�MB�MB�B��JMM�JB�B�B�B�B�B�B�MM�JMB�B�MM�JMB�MB��JMB�MMB�B�MM�JMB�MB�B�MB�B�MB��JMB�M�JMB�CB�MB�CMB�MCCMCM�JMCCCCCCCM�JMC	C
M�JM�JMCC
MM�JCMCMMCCMCMCMMCMCCMCMM�JCC MCMCCMMCMCM�JC!C&MC"MC#C$MC%M�JMC'C-MC(C)C+MC*�JMMC,�JMC.MC/C1MC0�JMC2MM�JC4CDC5C<MC6C7MC8MC9MMC:C;MM�JC=MC>MC?MMC@CAMCBCCM�J�JMCECSMCFCGCLCHMCIMCJMCKMM�JCMMMCNCOCQMCP�JMMCRM�JCTMMCUCVMMCWCXMMCY�JMC[D�C\C_C]C^q~cW`�p�C`DACaDCbCpCclCdLLCeLCfCgLChLLCiLCjLCkClLLCmCnLCoLa"L�CqCrC�CsC�CtC�kXCuCvkXkXCwkXCxCykXCzkXkXC{C|kXkXC}kXC~kXCgCkXkXC�C�kXkXC�C�C�kXC�kXC�kXC�kXC�kXC�kXC�C�kXkXv�C�C�C�kXC�kXC�kXkXC�kXC�kXC�kXv�kXC�C�kXv�kXC�C�C�kXC�kXC�kXC�kXC�kXkXC�C�kXC�kXkXC�kXC�kXC��MkXC�C�C�C�C�C�kXC�C�C�wC�wkXwkXkXC�C�kXC�kXkXC�gQkXkXC�kXC�kXC�C�kXC�kXkXazC�C�kXC�kXC�kXC�kXC�kXC�C�kXwkXkXC��BC�C�gQC�kXkXC�kXgQC�C�C�C�C�C�C�kXC�kXkXC�kXC�C�kXC�kXkXC�kX�ikXC�C�kXkXC�C�C�kXC�C�kXC�kXC�kXkXC�C�kXwkXkXC�kXC�C�kXkXwC�kXkXC�C�kXkXC�C�kXkXC�C�kXkXC�C�kXkXC�C�kXwUkXC�C�C�kXC�kXC�C�kXC�kXC�kXC�kXC�C�kXC�kXv�kXC�kXkXC�kXC�kXC�v�kXC�kXC�D	kXC�kXC�kXDkXDDDkXDkXgQDgQDkXDkXDkXkXgQkXD
kXDDkXkXD
DDv�kXDkXDkXkXDDkXv�kXDD$DnWDDDDc�DDDDgCazv�azgCc�`�DD p�aND!c�D"D#l`�b�d{D%D0t�D&t�D'D(t�D)D-t�D*D+D,t�jjt�D.t�t�D/t�jD1D9D2�D3D8D4� � D5� D6D7M�� M�� M�D:D@D;M�D<�D=D>b$�D?�[Lv� DBDEDCDDq~Lb�m�DFDTaNDGDHakDIDMDJakDKakakDLj)akDNDQDOakDPakj8�DRakDSakjGakDUp�DVL�DWDiDXDaDYD\lDZD[g&lg&D]D_lD^g&lD`lg&lDbDeDclg&Dd�lDfg&DgDhlg&lg&DjDDkDpDlDnDmllg&Dollg&DqDtDrDslg&c�g&DuDvlg&Dwg&lDxDylDzllD{D|lD}lD~lllD�D�D�D�D�D�g&lg&lD�D�g&l��llD���D���g&D�E@D�D�D�D�D�D�D�D�D�p�D�liD�liD�liD�liliD�jVli`�kuD�NiMcWD�D�D�D�D�xvD�D�D�db�g4z�K�akb�D�D�M�lnWND�D�D�D�D�D�b�xvNM�D�D�D�j�ND�ND�Q�D�D�Q�D�Q�Q�P}dm�D�D�D�D�ND�D�D�D�D�d�HD�M�D�D�D�D�}���HQ�D�ؒؒ�D�D��,D�D�D�D�D�L�b�ؒd{D�D��;ؒ��MdD�D�D�D�D�D�M�M`�MD�MxvMD�D�D�D�M� LL�D�D�D�cWL�D�L�D�L��aNdD�E"D�ED�D�D�D�D�ND�L�D�az�o�(D�D�D�D�D�D�`�M`�LD�lazMD�lD�D�VpNOTVpD�D�D�D�MlMD�NlD�D�D�D�D�D�����y�D�lOTYD�D�D�D�lc�lb�D�D��eg4�nWEEEEEEElEEl����lEE
E	g&l��lE��llE
EEljdjtj�EEEEEEj�j�j�\HEEEE�����g&�Ec�g&EEEEg&c�g	g&E lE!llg&E#`�E$E&dE%�Ci#E'E4E(ddE)E*ddE+E,dE-ddE.dE/E0dE1E3dE2d��dE5dE6ddE7E8dE9dE:dE;ddE<dE=dE>dE?�dp�EAEBEkECEhEDEcakEEEFEUEGENEHEMEIEKEJv���w�EL�H:hrXaNEOERc�EPwEQwwtyESETc�j�j�EVE]EWEY`�EXH:`�EZi�E[E\M�,rfNE^EbE_j�E`Eaj�j�j��[dNEdMEeb�b�Efb�Egb�kuEiEjcWb�`�p�ElE�EmEqt�EnEoEpdcWcWdErb�EsE�EtE�EuE{EvExEw�[k�[EyEz�[kk-�[E|EE}E~*F`�k<�[E�E��[kL�[aUE�E�E�E��[E�i��[E�E�k\klk|k�E�E�E�E�k�k��[k�E�E�k�k�k�k�E�E�E�E�E�E�E�E�lll,l<E�E�i��[lLl[E�E�E�E�lkl{�[l�E�E�h���l�l��[E��[E��[E�k�`�E�E��XaN�xn�E�J3E�G.E�G
E�F[E�E�cWE�E�E�E�cWcWE�cWE�cWE�E�cWcWE�E�cWcWE�E�cWcWE�E�cWE�cWE�cWcWE�E�cWcWE�cW@cWE�E�cWE�cWE�cWcWE�E�cWE�cWcWE�cWE�E�cWE�cWE�cWcWE�cWE�cWE�cWE�cW@E�FE�FE�E�E�E�M�dE�ME�E�E�E�E�LE�dE�E���FQ�NE�E�c�azE�ԦE�E�`�`�db�E�E�E�E�c�Mgn`�E�E�M�E�LH:E�E�E�e�e�`�E�gQkXv�E�E�E�iME�llE�lE�lE�E�llE�E�lE�llE�lE�E�lE�llE�l�l�FMFFFFFFn�Fn��,g_l�NFdFdF	F
ddFFddF
dFFdFFdF�ZddFdFd�ZFFM�c�FM�akFakFFFak�{FakakFak�{F FTF!FQF"FPF#MF$FKF%F;F&NNF'F(F+NF)NF*NQ�F,F1F-F/NF.�Q�Q�F0Q�Q�F2F5NF3NF4N=F6F9F7F8W�*V��VF:Q�=^W�NF<NF=F>FBNF?NF@FANQ�NFCFGFDFFFEQ�NQ�Q�_FNFHNFINFJ_FQ�NFLNFMNFNFONNQ�L�b�FRFSg4xvdMFUFXFVFWakc�L�dFYFZiMb�b�m�F\FsF]FpF^FodF_F`NFaNFbNFcNNFdFeNFfNNFgFhNNFiFjNNFkFlNFmNNFnNx�`�nWFqFr`�b�dp�FtF�FuF�FvFwaNM�FxF�FyF�Fzq�q�F{F|F�F}F~q�dFdq�dF�ddq�F�F�F�F�F�q�F�F�F�q�q�dF�F�q�ddq�dF�dq�F�F�F�F�F�F�dq�F�q�q�dq�F�q�F�q�dq�F�F�q�F�q�q�dF�F�F�F�q�F�q�F�q�F�q�F�dq�F�q�q�F�q�F�q�F�q�dF�F�q�F�F�F�q�F�F�q�dq�q�F�F�q�q�dF�F�q�F�F�q�q�F�dq�F�q�F�F�dq�F�F�q�dq�dF�F�g_b�g_aNF�F�F�F�F�F�F�F�b�F�b�F�F�F���F���=3F�F�F�F�p�p�p�p�3SF��P3Fg_F�g_F�g_F�g_F�g_F�g_F�F�g_g_F�F�g_g_F�F�g_g_F�g_F�l�g_c�F�b�F�b�F�b�F�b�F�F�b���b�F�F�c�p�kul�F�F�F�F�M�|�M�b�F�F�F�F�g4F�F�F�F�F�L�b�b�F�F�F��tkak�lF�F�s�F�F�az�^azL*�F�F�MF�MF�MF�F�MM`fF�b�m�L�GGGGGGLML�~GG`�GL�db�dL�G	G
c�GGb�sub�q�GGG`�G`�G`�`�G`�GG`�G`�G`�`�GG`�G`���`�LGGLLGLGLGLG G!LLG"LG#LG$LG%G&LLG'G(LLG)LG*G+LG,LLG-��LG/H�G0G5G1G4G2G3`�q~L�xvt�p�G6GIG7LaNG8G9aNaNG:G;aNG<aNaNG=aNG>G?aNaNG@GAaNaNGBGCaNGDaNaNGEaNGFaNGGGHaN�WaNGJHJGKG�GLG�GMGPGNGOdg_nWNGQG�GRb�GSG�GTG�GUGlGVGfGWG]�GX�GYGZ�G[�G\���;G^GbG_�G`��Ga�dGc��GdGe�d��Gg�Gh�Gi�GjGk���;GmG�GnGr�Go�Gp�Gq�dGsGvGt��Gu�dGwGz�GxGy�d�G{G}�G|�d�G~G�d�G��G�G�G��G��G���d�G��o�G��G�G�dG�G�G��G�G���G��~G���dG�G�G�G�G���G�d�G�G��G�d��G��G��dG�G��G�G��G���G��d�G�G���G�G��d�G�G�G�G�G�G�G�G��G��G��G�G��G���d�G��G�G��G��G��d��MG�dG��G�G�G���G��G��G��;�G�G��G�G���G�d�G���G��G�d�G�G�G�G�G�dG��G��G�G��G�q�dG���d�G��G�d�G��G���G�G��G��G���d`�MG�G�G�G�nWl�M�b�G�G�`�c�nWG�G�aNaNG�aNG�G�aNaNl�G�H&G�H	G�HcWG�G�G��oG�G��oG��oG��oG��oG��oG��oG��oG��o�oG�G��o�oM�oG�G��oG��o�oH�oHH�oH�oH�oH�o�oHH�oM�oNb�H
Hg4q~HH#H
HHHHHHHh4yd]MHaz�?azd{HHHy�nx��HHHHMHc�d{HHd]LLyH H"H!LݶhBazd{Q�H$H%NNb�H'H:H(H,i�H)H*MMH+M|LH-H.H3b�H/H0��H1H2b�lb�lH4H7b�H5H6b�նlH8lb�H9b�lH;H<akg_H=Mb�H>b�H?b�H@HAb�b�HBb�HCHDb�b�HEHFb�b�HGHHb�HIb�b�b�HKH�HLHkHMH^HNHOb�xvMHPHQHVHRHSxvM�HTHUb�d$b�HWH]HXH[HYHZH:s�s�H:b�H\b�l�kul�H_HjH`MNHaHbQ�NHcHdNHeNNHfHgNHhNNHiQ�NM��HlH�HmHzHnb�HoHvHpdHqHtHrHs#dl�dHudd�HwddHxHyd�dH{xvdH|H}q�H~ddHdq�H�H�b�xvH�nWd]H�d]H�H�d]d]H�H�d]d]H�d]H�H�d]H�d]d]H�d]H�H�d]md]H�H�H�H�b�H��,��H�H���=�`�d]H�H�MH�H�MazH�H�H�azH�az�iH�azH�az�iazb�H�L�c�H�H�c�H�c�H�c�H�c�H�H�c�H�c�c�H�c�H�c�H�c�H�H�c�c�H�H�c�H�c�H�c�H�c�H�c�H�c�c�H�mc�H�I�H�I8H�IH�H�H�H�H�H�Lb�y7b�H�H�nWM�L�dH�H�H�H��Ib�H�K�H�H�H�nWc�H�MH�v�wH�H�MH�H�H azMH��H�b�azMH�H�b�nWb�H�H�H�H�H�H�H�H�H�Q�N;OTQ�H�Q�N;OTH�H�Q�N;N;OTH�H�H�H�OTH�H�H�O�P}O�P}H�H�H�H�OEH�S_�OEH�S_�H�H�H�H�YH�VpH�N�P�H�Q�H�H�X#P���m+H�H�YH�VpH�N�P�H�Q�H�H�X#P���m+H�Q�IIOqI_�[�IQ���Q�IIII	IIb��,b�K�I
Idb�d{j*I
I,II+dIIIIIIIIIg�q�M~II*�y�M�JIIIMg�MIId)x���II$I I"MI!M��MI#Mg�I%I(I&I'�;q��;g�I)I*�o���o�%`�m�I-I.m;b�I/b�I0I4I1I2L`�b�I3�l�I5I7I6c�db�dLI9IRI:IAI;I>I<I=ML�|�b�I?I@`�Md`�IBIEICIDc�j*b�kuIFIGL�M�M�IHIIILIJIKMaNe�c�IMIQINLIOIPb�db�m�LdISIvITIdIUIcMIVL�IWL�IXL�IYIZL�L�I[I\L�I]L�L�I^L�I_I`L�IaL�L�IbiL�akj*IeIoIfIlIgIhxvb�`�IiIjMMIk*�MImIndMb�g4IpIsIqIrakM�g_cWItIub�MLdIwI�IxI�IyI�IzI{cWq~I|MNI}I~NNII�NI�NI�NI�NI�NI�NNI�Q�NI�I�c�`�NMI�I�I�I�c�b�I�xvI�MMI�I�MMI�I�MI�MI�MMI�MI�MI�d�MI�I�MNM�XI�I�I�I�I�I�M�nWb�q�I�I�dL�`�g_I�I�I�I�Lddg_I�I�MI�I�cWI�cWI�cWcWI�cWI�I�cWI�cWcWI�I�cWI�cWm:cWNMI�g4I�I�I�I�I�I�lI�I�llI�I�llI�I�ln�llI�lI�I�lI�lI�I�g&I�g&lI�I�g&�=��նI�I�I�I�lI�lI�I�lI�I�I�I�l�c���I�I�նg&���lI�lI�lI�I�I�I�I�lg&���I�I���ն����I�I�lI�I�llI�I�lI�I���l�dlI�I�lI�I�lI�I�g	���=I�I�lI�I�I�I�I�������նI�lg&��I�lI�I�I�I�g�g�I�I��g&�նJlJJ
lJlJlJlJJJg&J��g&J	l����JJlJJ
lJJ�JJ��ڈJJ�J�g	նg&JJ%JJJJ�J��=J��=�JJ g&Jg&Jg&�J!J"�g&J#J$���g&J&J/J'J-J(J+J)J*g	ննڈg&J,g&��g&J.c�g	g&J0J1J2g&����J4K�J5KDJ6J�J7JxJ8JOJ9J;c�J:aNt�J<JLakJ=J>`�J?`�J@`�`�JAJB`�`�JCJD`�JE`�JF`�JG`�JH`�JI`�`�JJ`�JK`�@p�JMJN@&d|JPJuJQJT��JRxvJSde�MJUJVJ\iMJWJXiMiMJYiMJZiMJ[�8iMJ]JnJ^JdiMJ_J`JbiMJa�LiMJciMiM�JeJjJfJhJgiM�8iMiMJiiM�8JkiMJlJmiM����8JoiMJpiMJqJsiMJriM�JtiM�iMJvJwp�i�xvj�JyJzLtyb�J{J|b�J}J�b�J~Jb�J�J�b�J�J�J�J�b�~�b�J�b�~�b�J�b�J�J�b�J��}b�J�b�b��}J�b�J�b�b�J�J�b�J�b�J�b��}b�J�J�J�J�NJ�J�NJ�NJ�NJ�NJ�NNJ�NJ�J�NJ�NNJ�NJ�J�NJ�NNJ�J�NJ�N@NNJ�NazJ�J�J�J�LJ�J�c�J�J�J�J�J��J�J�l�J�J���l�J�l�J�l��l�J�J�J�J�J��J���l�J���J��l��J�J��l�J�l��J�J�J�J�J��J��J��l���J�l��J�J��l�J�J�J��J���l�J�J��J�l���J��l�z�Lp�J�J�KJ�J�J�J�J�J�J�J�dJ�L�cWL�cWJ�J���Mb�J�J�c�J�J�c�����c�J�J�J�J�Mm�nWb�J�L�c�J�g_akJ�KJ�KJ�K�xJ�J�MJ�J�MJ�MJ�MJ�J�MJ�MJ�MJ�MMJ�MO�J�O�J��;K�;K�;�;KO��;KMKmDKK��y�z�mDK	K
NLd��KKK
KdNg_lKKg4cWKNK`�K`�`�K`�K`�K`�KK`�`�K`�K`�KmS`�KK1KK%K K#K!K"d{di�kub�K$q~MK&K'c�MK(K)Nj�K*m;K+K.K,K-MiMp�`�K/K0b�פ`�g4K2K8K3K5MK4`�MK6K7`�M`�L�K9K;`�K:gCrfK<KCK=NK>K@b�K?p�b�KAKB��3`p�b�dMKEKHKFKGxvnWL�b�dKIKJK�KKKmKLiMKMK`KNKUKOK�KPxvMKQNKRKSKTOENOTYL�KVKW�XKXK\�XKYKZK[mampmmaK]K_K^�Xm�m��Xm�aNKaKbKdKc� M� KeKgKft�LNKhKlK�KiKjKkx�m�x�cWdcWlKnKoKzKpakKqKvakKrKsakakKtKuakak�akKwKxKyakLLakK{K~K|akK}azt�azKakakK�K�akakK�K�|ak|K�K�K�MK�K�p�M�M�MK�aNK�K�dK�K�NK�K�K�L�K�L�L�K�L��K�L�K�K�K�K�K�K�iK�iL��+K��+L�K��i��+L�K�K�K�K�K�K�K�K�K�K�db��QdK�dK�db�dK�K�K�K�K�K�db�d�QK�K�do�dsuK�b�b�dK�dK�ddb�dK�K�K�K�K�dK�K�K�b��zm�dK�K�m�q�q�K�����K�K�dK��K�o�q�dK�K�ddK�d�QK�N7K�L�K�LK�LK�K�K�K�K�K�K�Lb�K�K�K�b�K�K�b�d$b�K�K�K�b�d$b�b�K�b�K�b�p�b�L�K�K�xvK�K�kuK�K�K�K�b�b�b�K�K�K�MlMc�b�K�b�K�yK�b�yK�c�K�g4g4MK�K�K�K�M�t�M�K�K�K�K�p�K�K�p�b�l�p�K�K�p�K�K�p�K�p�p�aNc�K�b�K�daNK�K�M�dt�cWLLLLLLt�nWakl�dLM�|�LLL	LL
LiMLNiML
b�b�Lb�Lkub�d{c�LLg4ddMLLnLLnWg_LL;LL(LLLc�b�aNLL'aNLLL&L L#L!L"d��b�dL$L%e���ce�dy7c�{
L)L3L*L+b�c�L,b�L-L2L.L0L/azb�aze�L1i�lKNazL4b�L5c�L6L7kuML8q�L9L:dp�c�m�L<aNL=L�L>L\L?LPL@LCNLALBNW�NLDLNLENNLFLGVpLHVpLIVpLJVpLKVpLLVpLMVpOEVpNLONN;LQLXLRLULSLTVpOTQ�OELVLWm+[�N[�LYP}LZL[NVpN�L]LiL^LeL_LbL`La�NQ��VLcLdQ�NVpNLfLgLhQ�OqQ�R�LjLmQ�LkLlQ�N_��Q�LoL�Lpm�LqL�LrL�LsLlLtLuL{LvLyLwLxlL`�lL�Lz`�lL|L~L�L}Bac�azm�L�L�L�L�lL�L�L�Mdn�dL�llL�`�lL�lML�ldL�L�L�iML�L�t�L�lL��o�(L�L�L�L��lm�liML�jt��L�L�L�L�L�ldlL�L�iMlL�llNL�L�`�L�L�L�L�NL�L�lL�L�llL�lL�L�lL�lllL�L�L�lL�llL�L�llL�llL�L�lL�L�lL�llL�llL�llL�lL�lL�lll`�L�L�aNllL�l��L�L�L�L�L�L�L�L�iML�aNL�l�(L�LaNlL�LL�iL�L��(lL`�L�L�L�L�wUlL`�L�l`�L�L�`�`��[L�L�L�iML�LL�L�L�aN�(llL�c�llL�L�L�L�L�L�L�b�llBaL�L�Bas8lBaL�L�lL�Bas8L�L�`�Bal`�lixvL�M�L�M�L�M�L�MXL�M)L�ML�L�L�L�L�Mp�d]LL�dlL�ML�L�o�i�EM�M�MMMt�MMdA�o�dH:m;MMM	MM
M
c�MML�L�xM`�Me�i�i�MMM�MMb�b�x�nWp�MM!MMd�MLML��MMMM�kf��e�MM nh�8M"M(M#M&M$M%e�kf�Ee�d�M'd��8c�pzM*MGM+M@M,M/M-M.d	akLM0M4L�M1M2M3RT����M5b�M6M7�nM8mM9g4M:g4M;g4M<g4M=g4M>g4g4M?g4mMAMDMBMCNM�g4n�MEMFdL�N�NMHMQMIMLMJMKL�M`�y7MMMPMNtOMOx�b�x�L�b�MRMUMSMTlib�`�dMVMW`�ddiMMYM~MZMjM[MdM\MaM]M`M^MM_rX�rXe��,MbMcgng4dxvMeMhMfMgg_c�Ad{dMiakdMkMrMlMoMmMnc�b�L�eMpMqj*�N�NMsMxMtMu��p�MvNMw`�e�`�MyMz`�aNM{xvM|M}dln!d{�jMM�M�M�M�M�M�M�M�M�M�M�~�lxlx;M�M�akM�M�tktkM�tkM�tkM�M�tkM�tkM�tkn/tknCakcfcWM�M�b�M�M�x��}x�M�M�M�M�d�h��M�M�1nSd�naM�M�M�M��M�M�c�Ԧc�p�M�dM�dM�dM�M�dM�dM�dM�dM�M�dM�db�M�ddb�M�M�M�LM�M�M�`�M�����M���M�M���M�����M���M���npi�e�M�akM�ddM�M�dM�dM�dM�d�ZdM�M�M�M�M�M�M�p�d�M��dazM�M�Mb�M�M�M�gQv�v�M�M�h�gnpzgnM�M�M�M�L�M�gnM�gnh�d]t�M�M�c�`��bM�M�m�MmMM�L�MM�M�MM�M�azM�azM�azazM�M�azazM�M�azazv�dM�M�ddM�M�dM�ddM�dM�M�dM�dM�dM�ddM�dM�dM�dM�dM��dM�NM�NM�M�dj�p�NNNNNNN
NNNLNaktkLLNN	LakLNLNN
�{LakLNNNNcWakNcWakn�akNcWNakv�NakakNcWN@NazNakn�NNcWaNLc�N N#N!N"|�dnWc�N$N6c�N%N&N0N'N,N(N+N)azazN*azb�kXb�N-{
N.�,N/�,{
�,N1N3N2dNL�N4NNN5l�NNd{N8OwM�N9N:N�N;NIN<NCN=N@N>N?dMg4b�NANBli�"�Xc�NDNFdNEb�g4NGNHb�MOTaNNJNgNKN`NLN[NMb�b�NNNOb�b�NPNQb�NRb�NSx�NTx�NUx�NVx�x�NWNXx�NYNZx�b�x�b�MN\N]b�b�N^N_b�b�d$NaNbMm�g_NcNNdNec�Nfl�Nn�NhNrNiNjM�b�NkMNlNoNmNndLc�MNpNqb���cWq~NsN�Ntb�NuN�`�NvNw`�`�Nx`�Ny`�NzN{`�N|`�`�N}`�N~`�NN�`�`���N�`�N�`�N�`�`�N�`�N�`�N�N�`�N�`�`�N�`�N�N�`�`���b��0N�O9N�N�N�N�N�N�b�daNN�N�aNN�N�N�N�N�aNaN۱N�aN۱aNN�aNaN�uN�N�N�b�N�N�M�XM|�dg4N�O%N�N�g4b�N�N�N�N�N�ddN�dN�db�N�N�b�dN�dN�N�d�N�QٌN�N�N�L�N�N�N�N�L�N�N�N�N�N�L�N�L��L��N�L��L�L�N�N�N�N�N��L�N�N�N���L��N��L��N��L�N�L�N�L�N�N�N�N��L�N�N��L��N�L��N�L�N�N��L��L�N�N�N�N�N�N�N�L�N�L�N�L�N�N�L�N��L�N�L�iL�N�L�N�L�N�L�N�L��tN�iN�N�L�N�L���L�N�N�L�N�L�N�L�N�L�N�L�N�N�N�N�L�N�n�n�N�N��[n�n�d!N�N�N�N��n�ooN�N�o"o2oBoRL�N�L�OL�OOOOO	OL�OL�OL�OL�OL�ZvL��O
OO�OO
OOOoboqo�o�OOo���L�o�OOOOOO�o�o�OO�Zvo�B OL�OOo�o�pA�O L�O!O$O"O#Zv��L��L�O&O't�c�O(j�O)O3O*O-O+c�c�O,��c�O.O1O/O0�c�c���O2pc�h]O4c�O5O7c�O6�cvc�O8c�p$O:OUO;O>O<O=Lj*q~d{O?OQO@g4OAOOOBOCb�ddODOEOFp2dOGdOHddOIdOJOKdOLdOMdONd�CdOPddm�M�ORdOSdOTd�oOVOfOWOe�HOXOYO`OZO^O[b�O\O]b��>�>b�O_x�[�b�OaOdb�Obx�Ocx�ݨx�p�xvdOgOnOh`�LOiOjakakOkOlOmp�akp�akiMOoOpOsOqb�xvOrxvb�b�OtOuxvb�Ovb�xvtyOxOyO|OzO{j�b�`�LO}O~nWl�OO�O�O�O�O�O�O�O�O�O�m�O�O�m�O�+rm�O�O�p<m�m�+rm�O�m�O�O�O�m�+rpKm�O�O�m�O�O�O�O�+r+rm�m�O�m�#VO�O�O�m�m�O�m�+rO�O�m�O�m�pKm�O�pZ+rO�O�O�O�O�O�O�m�+rm�m�O�O��!+r�!O�m��!O�+rm�O�O�O�pZd}O�m�O�m�pKO�O�+rO�O�+rpZ+rO�O�m�O�pZm�+rO�pim�O�m�O�O�O�m�O�O�+rO�m�O�pim�O�O�O�+rm�pKO�m�+rm�O�O�O�O�O�m�O�m�m�d}O�O�d}m�m�+rO�m�O�O�m�+r+rm�O�O�O�O�O�O��O�O�O�O�O�,�%O�O��O�O�O�O�O�O�O�pxp�p�p�O�O�p�p�p�p�O�O�O�O�p�iqqO�O�q(q8qHqXqh&BO�O�O�,b�d��%b�nWliO�O�m�O�O�O�dL�xvLliO���=O�O�O�O�akg4akO��!b�O�O�g_NMc�O�S�O�SjPQ PP)MPPPPMMPMPPMMPP	MP
MPMPMP
MMPPMMPMPPMPMPMMPM@PMPMPMPMPMPMPMMPMPMP P!MP"MP#MP$MP%MP&MMP'P(MM@P*P�P+P�P,P-�,l��P.P/g_P0POP1PIP2P>P3P:P4liP5P7liP6qwliP8P9q��1lipzliP;P<liP=liذliP?liP@PEPAPCPBlignliPDlilipzliPFPGPH��liq�liPJliliPKliPLPMliliPNliq�PPPjPQPYliPRPSPVliPTliPUlipzliPWPXlilignPZP^liP[liP\liP]lignP_PcP`PbPas8lipz�1liPdPgPePfligngnliPhPilignh�liPkPwPlPqliPmPnPpPogngnligns8liPrPsPugnPtgn�1Pvli�gnPxP�PyPPzP}P{P|q�gngnliliP~liq�P�liP�P�)�lilipzP�pzP�P�P�P�li6mgn)�liP�liq�P�i�P�P�P�i�P�i�P�i�i�P�P�i�P�i�i�P�i�P�i�P�P�i�P�i�P�i�P�i�i�P�P�i�i�P�@i�i�P�i�P�i�P�P�i�P�i�P�i�i�P�i�P�i�P�i�P�P�i�i�P�i�P�P�i�P�i�P�i�@i�P�P�P�P�P�P�P�xvP�P�P�P�P�P�P�b�P�P�dP�P�P�q�d��-P�P�P��C�Qb�i#c�P�aNaNP�aNdP�aNP�aNP�aNaNNNP�P�P�NP�P�P�P�NP�P�P}OTYQ�P�P�P�P�Q�VpN;Q�P�P�OTNNN;NP�P�NP�NP�P�W�[�Q�Np�t�P�P�aNMMiMP�P�P�P�P�P�P�g4P�dP�ddP�P�ddP�dP�dP�dP�dP�dP�P�ddP�dP�dP�d@iMЛP�P�n�P�aNP�P�aNP�P�aNP�NaNNaNg4q~P�QP�P�t�p�n�xvQQQQQb�QQQQQQ��b�db�Q	Q
e�LQQ
aNQaNq�QQ�@Mg��OQQQQg4akLd{QQb�QQQgQ{�{��g&kXnW��QQMc�QQazm�xvL�Q!Q8L�Q"NQ#Q$Q&NQ%NMQ'NNQ(Q)NQ*NQ+NQ,NNQ-Q.NNQ/NQ0NQ1NQ2NQ3Q4NNQ5Q6NQ7N@NQ9S/Q:Q>`�Q;Q<Q=liq~b�dQ?R�Q@RQAQ�QBQjQCQ[QDQZQEQSQFQLQGQI��QHtOlQJQKlM`�lQMQPQNQOazllMQQQR�(l�yq�QTQXQUQWlQVl`��oq�LQYcfLiMM�Q\QeQ]iMQ^QaQ_t�Q`l�(lQbb�QcQdפq�lZq�iMQfLQgt�QhlQiMNQkQyQlQrQmQqQnllQolQpY`�lM�QsQtӹLQuQxlQvQwlliLK�QzQ�Q{Q�Q|M�Q}`�Q~Q`�lQ�`�Q�lQ�lQ�lQ�llQ�lQ�Q�lllQ�Q�Q�Q�Q�Q�Mazc�lQ�Q�MtOllim�Q�lg�Q�Q�Q�iMQ�Q�g�Q��liQ�lx`�iMQ�Q�Q�Q�MQ���oQ�Q��oQ��o�oQ�Q��o�oQ��oQ���oL�lQ�Q�Q�Q�Q�Q�Q�Q�Q�Q�Q�Q�Q�Q�Mq�g�MQ�Q�`�q�Ms8Q�Q�Q��(`�lQ�Q�Ms8`�lQ�Q�Q�nWlQ���lQ�LQ�lNlQ�Q�liM֥`�Q�Q�lQ�`�L�Q�Q�c�Q�wUlM�lQ�Q�Q�Q�iMQ�Q�Q�b�Q�Q�Q�NOEYllLQ�Q�Q�Q�NlQ�`�Q�lOTlQ�Q�Q�Q�Q�Q�M`�M`�lQ�+r��Q�t�MQ�wc�Q�Q�Q�Q�Q�Q�Q�Q�lQ�c�lQ�Q�Mc�lLt�lQ�Q�Q�Q�`�Q�`��[Q�Q�Q�L�Q�L�Q�L�Q�L�L�Q�Q�L�Q�L�L�Q�L��lc�lQ�Q�db�NQ�RRRRRRRlMlrRRlg�g�lR`�R	R
NlLcfRRR
NRMdgCt�RRL�hlRRuRRRRR(RlRRLRRMlRMdRR"RRRL֖LR R!g	c���azR#R&R$R%_�M�\�lazR'lc�R)R<R*R0LR+R,R.lR-�d`�R/l`�s�R1R6R2R4lR3c�c�lR5lg&R7R:R8R9LM��c�R;MOTq�R=RHR>RCR?RAR@laNڈlRBr�RDRFREMlMRGMazMRIRNRJRLRKMMl��RMMg4ROlRPRQazg&�q~RSRrRTRfRURaRVR\RWRYlRXlq�RZR[�llMR]R_R^g�c�lg�R`iMg&`�RbL�RcRdRelM�lRgRkM�RhlRiRjg�Mt�RlRqRmRoazRnc�lRpg4lhL`�Rs`�Rt`�iMlRvR�RwR�RxR�iMRyRzR}K�R{R|ll�lR~lR��lR�R�`�R�R�R�LR�cflkulR�R�R�R�R�`�rM�R�R�lBa��g&R�R�R�lLllR���lR�R�R�iMR�R�`�lR�lR�lg�lR�R�R�R�`�R�`�R�R�M��r&R�R�R�R�gllOEgCR�`�lR�g_c��R�R�R�R�kuiMR�R�`�R�R�iMR�A`�lR�R�R�R�lR�g	lR�ll��R�R�lNR�R�c�L�L�dR�R�R�iMR�NR�R�R�MlMR�kuOEhlR�R�L�R�lR�[lMR�R�R�R�rfc�R�R�R�R�R�iMR�R�R�R�azR�b�azazR�R�t�azgQNg4q~LR�R�`�Lb�dR�R�R�R�R�R�b�l�R�R�R�dR�ddR�R�dR�ddR�d�-b�R�R�b�b�R�R�b�b�R�b�R�b�R�b�R�R�b�R�b�R�b�R�b�p�b�R�R�`�b�R�j�R�b�b�R�b�e�R�SR�Sb�R�g4R�R�SR�R�nWg4g4�g4Ld{c�SS"SScWSb�dMSSSMS	S
MSMSMS
MMSMSMSMSSMg�MMSMSMSMSMSMSSSMSSMSMg�MMSMS MS!g�MS#S*S$S%t�c�S&MNS'S(S)p�xvMaNS+S.S,d��S-��Q�c�dS0SdS1SSS2SBazS3azS4S5azS6S<S7azS8azS9azazS:azS;azgCS=azS>azS?azazS@azSAgCazp�SCSDp�p�SEp�SFp�SGSHp�SIp�p�SJp�SKp�SLp�SMSNp�p�SOp�SPp�SQp�SRp��$STcWcWSUSVS]SWcWcWSXSYcWcWSZcWS[cWS\cW9�S^cWS_cWS`cWcWSacWSbSccW�ucWlSelSflSglShlSil�=SkL�SlMSmMSnMMSoSpMMSqMSrMSsMStSuMSvMMSwSxMSyMSzMMS{MS|MS}S~MSMMS�@MS�V�S�S�`�S�i�S�aNS�S�aNS�S�S�aNS�aNaNS�e�S�S�S�S�e�S�e�S�e�S�e�r4e�e�S�S�e�e�S�S�e�e�r4S�aNS�aNaNS�cWrCS�S�S�S�S�S�g_`�S�S�aNMS�dS�dS�d{S�t�S�kub�azS�S�MS�S�MMS�S�MS�MMS�S�MS�MS�MMS�MS�MS�MS�MS�S�MMS�M�;L�p�S�T�S�T�S�T�S�S�S�S�c�M�q~S�akS�akS�akS�akS�S�akakS�S�akakS�akS�akS�akS�akS�S�akakS��{akS�T�S�TS�S�S�S�S�NS�NS�S�NS�S�NS�S�NS�S�NNS�P�NNS�NS�NP�S�NNP�S�NS�NS�S�S�NS�P�NS�S�NS�NP�S�P�NP�S�NS�S�NNS�NS�NS�NS�NP�S�TNS�NS�NS�S�TNS�S�NNS�NS�S�NNP�TTTNNTNTNTP�NNTNTT	NNT
P�N_FT_FT
NTNTTTTNTNTNTNQ�NNTNTNTNTNTNQ�TT*L�TL�TTL�T L�L�T!T"L�L�T#T$L�T%L�T&L�T'L�T(L�T)L�L��L�T+T,T0T-�T.�T/�L��T1TeT2TMT3TLL�T4T5T@L�T6L�T7T8T<T9L�T:L�T;L�L��L�T=T>L�T?L�L��L�TATBTGL�TCL�TDL�TETFL�L��L�THL�TITJL�TKL��L��L�TNTOL��TPL�TQT^TRTXTSL�L�TTL�TUTVL�L�TWL��L�TYL�TZL�T[T\L�L�T]�L�L�T_L�T`TaL�L�TbTcL�L�TdL��TfT�TgTpL�ThTiL�TjL�L�TkL�TlTmL�L�TnToL�L�iTqL�TrTTsTyL�TtL�TuL�TvL�TwL�TxL�iL�TzL�T{L�T|T}L�L�T~L�iT�L�T�L�L�T�T�L�L�T�T�L�iL�T�T�T�T�T�L�L�T�L�T�T�L�L�T�L�T�L�T�L��+T�L�L�T�T�L�L�T�T�L�L�T�L�T��+L�iL�T�Nc�T�m�c�T�T�T�T�L�p�T�t�T�T�T�T�Nc�c�|T�T�c�T�T�T�ڈNLT�T�T�T�g&��T�T�����T�T�����T�T�����T���rR��g&@&q~T�T�McWtyb�T�T�T�T�aNc�T�iMT�T�dT�T�T�dT�dT�dT��NdT�T�T�T�q�o�T�T�o�T�o�dT�T�q�o�T�dq�o�dT�q�T��NdT�T�T�T�dT�dT�dT�T�dT�d�dT�ddT�dT�T�dd�NT�T�T�T�dT�T�T�o�T�o��N�NT�T�dq�o�dT�dT��NdT�dT�T�T�T�d�N�NdT�T�T�ddo��NdT�T�p�t�T�Lm�T�m�T�m�T�T�m�m�T�T�m�T�m�m�d}T�V2MT�UUUUUUaNak{
c�UU
b�UUUUMU	MMU
McWLUMcWb�MUUKUUJnWUdUUUdUdUdUUdUdUdUddUdUUddUd�U U:U!U+dU"U#dU$dU%ddU&U'ddU(dU)U*d�dU,dU-dU.ddU/U0U5dU1dU2U3ddU4�dU6dU7ddU8dU9d�U;ddU<U=dU>dU?dU@UEdUAdUBdUCdUD�ddUFUGdUHddUId�akb�ULV(F�UMUNVazUOUPazUQU�URU�USUhUTU`UUU\UVUXwUUWkXgCUYUZb�kXU[azv��U]U^ubgCU_b�gCwgCUaUbUeb�UcUdazgCv�UfwUUgw�gCb�UiUwUjUqUkUpUlUoUmUnw{�wUb�gQgCb�gCUrUvUsUugCUtgCwubw*gCazUxgQUyU}UzU|U{b�wUww�azU~Ub�v�az�-U�U�U�U�U�U�U�U�U��"ww*U�U�U�U�kXwv���U�kX�U�U�gCU�gCwU�U�wUU�gCw*w�gQU�U�U�U�U�U�wU�gCb�U�kX�"gQ��U�U�b�ubb�U�U�U�U�U��"ubv��"U�v�gQU�U�gQU�wUv�wU��?b�U�U�U�U��"U�U�U�wcw��"gQU�U�U�ubgCv�v�U�U�U�b�U�U�gC�U�gC{��-U�U�U�U�b�gCgCU�wgCU�U�gC�"v�kXU�U�U�U�U�U�U�U�U�U�U�U�gCwgCwcU�U�b�U�v��?b�gCU�U�U�azgCazgCU�wcU�gCU�azU�azgCU�U�U�U�U�U�U�gQkXv�azgCU�U��MgCubb�azgCU�U�U�w*U�U�U�wUgCU�wkXU�U�w*w�U�U�v�U�gCwcazU�U�U�U�U�U�b�gCwUazU�U�v�kXv�gCU�U�U�kXwUazU�U��Mw*�w*U�gCU�V
U�VU�U�U�U�wub�ikXVV�gCwwUVVazVv�V�"gCVVgQb�V	v�wcgCgQVVVgQV
v�V�"wVVgCv�VazubwUVVVVVazVazazVVazazVVazVazazgCaz�i�iVV azazV!azV"azV#azV$azV%azV&V'azwazV)V*n�l�V+b�V,V0V-dV.dm�V/m�q�dV1dq�V3V�V4dV5V�V6V^V7VGV8V=V9MakV:V;akakV<akrgV>VAakV?akV@ak`�v�VBVCVEdVDliakakVFli`�VHVUVIVLVJakakVKakdVMVRVNVO`�dVPVQtk`�`�)7akVSVTdakrvVVakVWVYVX�b`�akVZV\akV[aakakV]ak`�V_VsV`VfVaVeVbakVcakakVd�akdakVgVmVht�ViVjNg4VkVleakakx�VnVqVoakVpakak`�akVrdakVtV�VuV}VvVxVwakr�akVyV{akVz�`�V|akyakdV~VakakV�`�akV�V�V�V�V�akV�V�`�ak`�ak`�V�V�dak�V�V�i�V�akV�aklii�V�V�V�h4akV�akV�V�V�akakV�akV�V�akV�akV�akٛakV�akV�akV�akV�akakV�V�akٛakV�V�V�V�V�V�akV�V�V�V�V�NV�ak`�akV�ak|�akdV�V�V�V�V�V�V�akak��`�V�akh4akV�V�ak�{akV�V�akV�V�V�akh4aky(V�V�akV��l`�V�r�'YV�V�V�V�V�V�V�V�ak`�V�ak`��lAeakV�V�V�V�daktkakakAeV�V�V�V�V�V�akV�akr�akV�liakV�akV�akak�{V�V�V�V�akrvV�ak`�HGV�V�ak')�akV�V�V�V�V�V�akL�V�akakV�`�akV�t�V�z�V�akakV�)�akV�V�dV�L�V�akV�akV�tkakdV�t�V�Aei�V�V�V�LBaLakMV�W8V�W#V�WV�ddV�dV�V�dWddWdWWdWdWdWddWdWW	ddW
WdWdW
dWdd@WddWdWWdWdWddWWddWWdWdWdWdWddWWddW dW!dW"@dW$ddW%dW&dW'dW(dW)dW*dW+dW,W-ddW.dW/W0dW1ddW2W3ddW4W5ddW6dW7�NdW9W^W:W]W;WJW<WGW=WFW>di�W?i�W@i�WAWBi�WCi�i�WDWEi��ei�MNWHWItyj�i�c�WKc�WLt�WM`�WN`�WO`�WP`�WQ`�`�WR`�WSWT`�WU`�WV`�WW`�`�WXWY`�`�WZ`�W[`�W\*r`�NLW_X�W`W�WaWwWbWtWcWsWdb�WeMMWfWgMWhMMWiWjMMWkMWlMWmMWnMWoWpMWqMMWrg�Mb�dWuWvm�b�M�akWxW{WyWzb�e�q~b�W|L�W}t�W~W�q�WW�W�W�dq�dW�dW�dq�dW�dW�W�dW�dq�W�q�W�q�q�dW�W�W�W�W�Ni�W�W�i�W�i�W�i�W�i�i�W�i�W��ei�W�LdW�dW�dW�dW�W�ddW�dW�dW�P�W�P�W�W�P�P�W�dP�W�XW�W�W�W�W�W�W�W�W�b�Nb�W�W�W�b�W�W�W�L�Lg_W�iMc�p��xMW�W�W�W�AeL�b�M�W�W�Nb�g4�HW�W�W�W�W�W�M�xW�p�W�W�W�W�lnWl�`�W�W�Q�b��ؒW�W�W�p�W�W�W�W�`�c�LW�W�Q�Q�W�W�W�W�_FW�_FQ�_FW�Q�W�Q�_FW�_FW�_FQ�W�W�q�MAeՙW�b�W�LW�g_MakW�W�W�W�xvcWiMLW�W�p�rfLlW�W�W�W�W�W�W�W�Ng_MNW�W�|�b�W�MMdW�W�MW�LdW�W�Nlb�dW�XW�W�W�W�~�b�MM�W�XW�cWdW�W�XMXNXN;XXN;XN;N;_FazWMdXXNNX	X
NNXXNNX
NXXNNXNXOTNXXXX�x{
M�XdXXddp2Xdt���XXCXX)XX`�nWX X#X!X"nWMi�LX$X%b���X&ddX'dX(d��X*X<X+X.X,X-rfcWL�d{X/X;X0Ng_X1g_X2X3g_g_X4g_X5X6g_g_X7g_X8X9g_X:g_g_p�L�dX=X@X>X?dM�mMXAXBg_b�LaNXDXuXEXnXFXIXGXHb�NMb�XJXKb�c�XLj�XMLXNr�XOr��XP�XQXRX_XSX[�XTXUXXXVXW�����+XYXZmm,�+�X\�X]�X^����X`XeXa�Xb�XcXdm�m,�XfXi�XgXh���+XjXl�Xk����Xm��+XoXrXpXqaNc�lic�XsXtNb�lip�XvX�XwXydXxb�akXzX{kuc�c�X|X}X�X~q�Xq�q�X�q�X�q�X�q�X���q�X��;�q�X�X�X�X�c�cWcWc�X�X�cWt�c�X�X�X�X�M!TMq�X��r�X�Y^X�X�X�X�X�X�X�X�b�L�b�d]X�X�X�M�X�X��JX�X�X��JX�X��JX��JX��JX��J�JX�X��J�JX��Jd�JX�X��J�JX��JX�X��J�JX��JX����J�JX��JX�X��J�JX�X�X��JX�X�X��JX�X��J�JMX��JX�M�JMX�X��JX��JX�X��JM�JX��JX��JX��J�JMhb�X�X�X�Mq~b�X�X�X�akX�kuX�kulkug4MX�Y@X�X�X�X�b�~�d{j�X�X�dcWb�X�X�Y*b�X�X���X�YX�MX�X�X�MX�X��%X�X�MX�MX�MMX��%MX�MMX�X�MX�MX�MM�%MX�X�X�MX�X�X�X�X�M�%M�%X�MM�%X�YX�X�X�X�MX��%MX�X�M�%�%MX�YX�X�M�%�%MYYM�%�%MYYYY	YYM�%YMM�%Y
YM�%�%MY
MYMM�%YY)YMYMYY"YYYYYYM~M~YYM~M~YYYYM~M~Y Y!M~M~Y#MY$MY%Y&M~MY'Y(M~M�;MY+Y7MY,MY-MY.MY/MY0Y1MMY2MY3MY4MY5MY6�MMY8Y9MY:MY;MMY<MY=MY>MY?M�%YAYIYBYHYCMYDakYEYFak�{r�YGak�{m�c�YJYKkuliYLYZYMYWYNYSYOYPLb���YQe�YRe�i�YTYU�OTd{YVe�`�YXYY|�iMiM��g4Y[Y\Y]L�`�o�akY_ZY`Y�YaY�YbY�YcYdnW`�c�YeYfYs�OYgYhYqYiYjM�;YkYnMYlYm~M~MYoYp�JM�J�OYr�OMYt�OYuYwYvMMq�YxY{q�YyMYzq�MY|Y~Y}MM�;MY�;MY�Y�Y�`�Y�Y�Y�Y�Y�iMY�Y�iMY���iMiM�8iMY�iMY�iMr�Y�Y�Y�Y�iMY��LiMY�iM�8iMiMY�Y�Y�iM�i�LiMY�b�Y�Y�Y�Y�Y�gQubv�gQY�gCY�wY�azubgCY�Y�Y�Y�gC�gCY�Y�azwY�wazkXY�Y�Y�Y�b�Y�b�Y�Y�b�Y�b�b�Y�yb�Y�NY�Y�Y�MMY�M)xY�MMY�MY�M)xY�b�Y�M�Y�xvY�Y�Y�Y�Y�Y�tOMM��Y�Y��;�4g���Y�xvY�Y�g��Og��OY�Y�Y�Y�Y�Y�b�{
`���Y�Y�NY�azY�Y�azazY�azY�gQazb�Y�b�Y�Y�b�b�Y�Y�b�Y�b�p��Y�ZY�Y�Y�NY�Y�Y��yY�Y��yc�Y�c���c�c�Y�Y�Y�Y�Y���RTY�Y��a�wcubY�b�Y�Y�Y�Y�b�Y�b�Y�b�Y�Y�b�Y�b�b�Y�b�Y�Y�b�b�Y�Y�b��>b�Y�Y�Y�b�d$b�p�Y�b�x�Y�Zb�Zb�Zb�p�Zb�Zb�p�b�ZZiMb�M�c�Z	Z"Z
ZZZZZ
L�MnWZZZ�xZZK��x`�MZdZd�xZZ�,akZЛNYZZZZb�j*M�`�ZZNdb�Z Z!dLL�Z#Z=Z$Z,Z%Z+Z&nWMZ'MZ(MZ)MZ*M�;� d]Z-Z.b�akZ/��Z0Z9Z1Z6Z2Z4p�Z3�Qp�Z5p��Qp�r�Z7r�Z8r�p�Z:p�p�Z;Z<p�p��QZ>ZAZ?Z@b�N`��ZBZCL�M�kub�ZE��ZF{@ZGh�ZHcBZIZYLZJ`�ZK`�ZL`�ZMZN`�ZO`�ZP`�`�ZQZR`�`�ZSZT`�ZUZWZV`�`�r�ZX`�`�r�ZZZ�dZ[Z\nWZ]Z�Z^Z�Z_Z�Z`ZpZaZoZbb�M�ZcZdM�M�ZeZfM�ZgM�ZhM�M�ZiZjM�M�ZkZlM�M�ZmM�Zn>�M�`�akZqZ�ZrZ}ZsZxakZtZuZwakZvsakakr�ZyakZzn�Z{Z|n��d�n�Q�Z~ZgCQ�NZ�j�Z�Z�Z�q�q�Z�Z�q�q�dZ�Z�q�Z�q�Z�dq�q�Z�Z�Z�dq�dq�Z�Z�Z�Z�t�b�xvi�Z�Z��(`�b�d{Z�Z�Z�Z�Z�Z�Mg_b�~Z�Z�Mb�LdZ�Z�Z�Z���M�aNMZ�Z�M�xvb�xvZ�Z�Z�Z�Z�Z�Z�Z�cWnWLt�Z�Z�Z�nWZ�q�Z�Z�Z�Z�q�Z�q�Z�Z�q�Z�q�o�q�q�Z�q�Z�q�Z�Z�q�o�q�q�Z�q�Z�q�Z�Z�q�q�Z�q��Zb�M�Z�Z�Z�Z�cW?"N|�Z�Z�p�b�b�t�Z�Z�Z�Z�Z�Z�w�Z�Z�Z�Z�Z�Z�Z��Q�K�Kq�Z�o�q�Z�d�Z�Z�Z�Z�o�m�m�i#Z�Z�i#m���b�xvZ�Z�p�`�b�L�Z�Z�Z�Z�ak)(b�`�Z�Z�Li�Lq~Z�c7Z�[Z�xvMZ�Z�[Z�Z�Z�Z�Z�MMZ�Z�MZ�MMZ�MZ�Z�MZ�Z�MZ�Z�MM��Z�MMZ�g���MLZ�MMZ�Z�MMZ�[M[M[[	M[[M[[M[Mq�M[�JM[
MM[�OM[
dd[[dd[[d[dd[d[d[d[d[d[[d[dd[�Zd[^�[\�[[�[ [l[![H["[B[#[,[$[(az[%az[&az['azgCaz[)[*azaz[+gCaz[-[9[.[4[/[1[0gCgCaz[2[3gCazgCaz[5[6gCaz[7[8gCazazgC[:[=[;az[<azazgC[>[?gCaz[@[AgCazazgC[Caz[Dazaz[E[Faz[GazazgC[I[P[Jaz[Kaz[Lazaz[M[N[OgCazgCaz[Qaz[R[_[S[Y[T[W[U[VazgCgCazaz[XgCaz[Z[][[[\gCazgCaz[^azgCaz[`[g[a[d[b[cazgCgCaz[e[fazgCazgC[h[jgC[igCazaz[kazgCaz[m[n[~[o[t[pazaz[q[razaz[sazgC[u[yaz[v[waz[xazgCaz[zaz[{az[|[}azgCazgC[[�[�[�[�[�[�[�[�azazgCaz[�azgC[�az[�azgCaz[�[�[�[�[�[�azgCazgC[�azgCazgC[�[�[�azgCazgC[�[�[�[�[�[�az[�gCazgC[�azgC[�[�[�azgCaz[�azazgC[�[�[�[�az[�azgCgCaz[�[�[�[�azgCazgCaz[�azgC[�\7[�[�[�[�[�[�[�[�[�[�[�[�[�[�azgCgCaz[�[�azgCazgC[�[�azgC[�gCgC[�azgC[�[�[�[�gC[�gCazgC[�gCaz[�[�[�[�gCazgCaz[�azazgC[�[�[�[�[�gCaz[�azgC[�[�gC[�gCaz[�[�azgCazgC[�[�[�azaz[�azgC[�[�azgC[�[�azgCazgC[�[�[�[�[�[�[�[�az[�gCazgC[�azgC[�azaz[�gCaz[�[�[�[�[�[�gCazazgC[�gCazgC[�[�[�azazgC[�[�gCazgCaz[�az[�azaz[�[�azgCaz[�\[�az[�\
[�\[�\az\azgC\azazgC\\\\azgCgCaz\\	gCazazgC\\\\\
\azgCgCaz\gCgCazgC\gCaz\\"\\az\\azaz\azgC\\\\gC\gCazgCaz\\ azgC\!gCazgC\#\-\$\)\%\'az\&azgCgC\(gCaz\*az\+\,azgCgCaz\.\2\/\0azgC\1azgCaz\3\5az\4azgC\6azgCaz\8\x\9\]\:\M\;\E\<\?\=\>azgCazgC\@\Baz\AgCaz\C\DazgCgCaz\F\J\Gaz\H\IgCazgCazaz\K\LazazgC\N\U\O\R\Paz\QgCgCaz\Sazaz\TgCaz\V\Y\Waz\XazazgC\Z\\az\[gCazazgC\^\c\_azaz\`\aaz\bazazgC\d\n\e\h\faz\gazgCaz\i\k\jazazgC\l\mazgCazgC\o\t\p\s\q\rgCazazgCgCaz\u\wgC\vgCazazgCaz\y\zaz\{\�\|\�\}\\~azazgC\�gCgCazaz\�\�gCazgC\�\�\�\�azgCgCaz\�az\�azazgC\�]�\�]\�\�\�\�\�\�\�\�\�\�\�\�\�gCazgC\�gCgCaz\�\�\�gCazgCgCaz\�\�\�\�gCazaz\�gCazgC\�gC\�azgC\�\�\�\�\�\�gC\�azgC\�gCazgCgC\�gCaz\�\�\�\�\�gCgCaz\�\�gCazazgC\�\�\�\�azgCazgCgC\�azgC\�\�\�\�\�az\�\�az\�azgC\�gCgCaz\�\�az\�\�gCgCaz\�\�az\�azgC\�azazgC\�\�az\�az\�\�azazgC\�\�\�az\�\�azgCazgC\�\�\�azazgC\�\�azgCgCaz\�]\�\�\�\�\�\�gC\�azgC\�\�azgC\�\�azgCazgC\�\�\�\�\�gCgCaz\�\�azgCazgC\�\�az\�azgC\�\�azgCazgC\�\�\�\�gC\�\�gCazgCgC\�gC\�gCaz\�\�gC\�gC\�azgCgC\�]]azgCazgC]az]]
]]
]]gC]gCazaz]	gCaz]gCgC]azgC]]]gCgC]gCaz]gCgC]azgC]]H]]+az]]]]gC]gC]]gCazgCaz]](gC]gC] ]!gCaz]"]#az]$azaz]%]&az]'azazgCgC])gC]*azgC],]@]-]4].]1gC]/gC]0azgC]2gCgC]3azgC]5]:]6]8]7gCazgC]9gCazgC];]>]<]=gCazgCaz]?gCazgCaz]A]B]EgC]CgC]DgCazgC]Faz]GgCaz]I]k]J]`]K]Z]L]R]M]P]N]OazgCgCaz]QgCazgC]S]V]T]UazgCgCaz]W]YgC]XgCazazgC][]^]\gC]]gCgCazgC]_gCaz]a]e]baz]caz]dazazgCaz]f]g]iaz]hgCaz]jazazgC]l]�]m]x]n]rgC]o]p]qgCazazgC]s]ugC]tazgC]v]wgCazazgC]y]�]z]}]{gC]|gCazgC]~]gCazazgC]�]�]�gCazgCgC]�gCaz]�]�]�]�]�]�]�gCgCaz]�gCazgC]�]�]�azazgC]�azazgC]�]�]�]�]�]�azgCgCaz]�gCgCaz]�]�az]�azgCgCaz]�^]�]�]�]�]�]�az]�]�gC]�]�]�gCazgCgC]�azgC]�]�]�]�]�]�]�]�azgCgCaz]�azazgC]�azazgC]�]�]�]�gCazaz]�azgC]�]�gC]�gCaz]�gCazgC]�]�]�]�]�]�]�gC]�gCgCaz]�]�gC]�azgCgCaz]�]�gC]�gC]�gCaz]�gCgC]�azgC]�]�]�]�]�]�gC]�gCazgCaz]�]�]�azazgC]�]�gCazazgC]�]�]�]�]�gCazgC]�azgCaz]�]�]�azgCaz]�azgCaz]�^]�]�]�]�]�]�]�]�]�]�azgCgCaz]�azgCazaz]�]�gCgCaz]�]�gC]�]�azazgCgC]�]�gCgCaz]�]�]�]�]�gC]�gCazgCgC]�]�gCgCazaz^^^az^azgCaz^gCaz^^
^gCgC^^	^^
gCgCaz^gCazgC^az^^^^gC^azgCgCaz^^^gCgCazaz^gCaz^^Z^^>^^&^az^^#^^!^^ azgCgCaz^"gCgCazaz^$az^%azgC^'^3^(^-^)^+^*gCgCazaz^,gCaz^.^0gC^/azgCgC^1gC^2azgC^4^:^5^7az^6azgC^8^9azgCgCazaz^;^<^=azgCgCaz^?^G^@gC^A^DgC^Baz^CazgCaz^Eaz^FgCaz^H^NgC^I^J^L^KgCgCaz^MgCazgC^O^U^P^S^Q^RgCazazgCaz^TgCaz^V^XgC^WgCazgC^YgCaz^[^z^\^n^]^i^^^b^_gC^`^aazgCgCaz^c^f^d^eazgCazgC^g^hazgCazgC^jgC^kgC^l^mazgCazgC^ogC^p^v^q^t^r^sgCazgCazaz^uazgCgC^w^x^yazgCazgC^{^�^|^�gC^}^~^�^^�azgCgCazgC^�gCaz^�^�gC^�az^�gCaz^�^�^�gCazgCgC^�gCaz^�^�^�^�^�^�^�azazgCgCaz^�^�^�gCgCaz^�gCazgC^�^�^�^�^�azgCaz^�gCazgC^�^�^�gCazgC^�^�gCazgCaz^�`�^�_�^�_^�^�^�^�^�^�^�az^�az^�az^�azgCaz^�^�^�^�gC^�^�gCazgC^�^�^�gCazgC^�^�azgCgCaz^�^�^�^�^�gCazgCgC^�azgCgC^�^�gCazgC^�az^�^�^�^�^�gCgC^�gCaz^�^�gC^�azgCgC^�azgC^�^�^�gCgC^�gCaz^�^�gC^�gCaz^�gCazgC^�^�^�^�^�^�^�^�^�^�^�^�azgCgCaz^�^�azgCgCaz^�^�az^�azgC^�^�azgCazgC^�^�^�^�^�azazgCaz^�azgCaz^�gC^�gCaz^�^�^�gC^�^�azgCgC^�gCaz^�^�gC^�gCaz^�gC^�^�gCazgCazaz^�^�__gC_gC_gCgCaz______gCazazgC_	_
gCazazgCgC_gC_
azgC__]__>__&_______gCazgCgC_azgC_gCgC_gCaz__!__gC_azgC_ gCazgC_"_$gC_#azgC_%gCazgC_'_3_(_._)_,_*_+azgCazgCgC_-azgC_/_1az_0azgC_2azgCaz_4_;_5_8_6_7gCazazgC_9_:gCazazgC_<azaz_=azgC_?_Q_@_J_A_E_B_DgC_CazgCazgC_F_HgC_GazgC_IgCazgC_KgC_L_NgC_MgCaz_O_PgCazazgC_Razaz_S_Tazaz_Uaz_Vaz_Waz_Xaz_Yaz_Zaz_[_\azgCaz_^_�___s_`_h_a_dgC_bgC_cazgC_e_fgCazgC_gazgC_i_m_jgC_k_lgCazazgC_n_pgC_ogCaz_q_rgCazgCaz_t_|_u_wgC_vgCaz_x_zgC_yazgCgC_{gCaz_}gCgC_~gC_azgC_�_�_�_�_�_�_�_�_�_�azgCazgC_�azgCaz_�_�_�_�azgCgCazgC_�azgC_�_�_�_�_�gCazgCazgC_�_�_�_�azgCazgCgC_�gCaz_�az_�azaz_�_�azgCaz_�`P_�_�_�_�_�_�_�_�_�_�_�gC_�gCazgC_�_�_�gCazgCgC_�azgC_�_�_�_�gC_�azgC_�azaz_�gCazgC_�_�_�azgCazgC_�_�_�_�gC_�_�_�gCazgCazgC_�gCaz_�_�_�_�azgC_�gCgCaz_�gCgC_�azgC_�_�_�_�_�_�_�_�_�gCazgC_�gCgCaz_�_�gC_�gCaz_�gCazgC_�_�_�_�_�gCgCazazgC_�_�gCaz_�gCgCaz_�_�_�_�_�_�gC_�gCazgC_�gCaz_�_�_�azazgC_�gCgCaz_�_�gC_�_�_�azgCazgC_�_�_�gCazgCgC_�gCaz_�`_�`_�_�gC_�_�_�gCaz_�_�azgCgCaz_�`_�`gC`azgC`gCgCazgC`gC`azgC`````	``
azgCaz``
azgCgCaz``gCazgC`gCaz```gCgC`gCaz```gCgCaz``gCazgCaz``4``&``#` `!gCaz`"gCgCazgC`$`%gCazgC`'`.`(`+`)`*gCazazgC`,`-azgCgCaz`/`1`0gCazgC`2`3azgCazgC`5`B`6`<`7`9`8gCazgC`:`;azgCgCaz`=`@`>`?azgCazgCgC`AazgC`C`J`D`G`E`FgCazgCaz`H`IazgCazgC`K`N`L`MgCazazgCgC`OazgC`Q`�`R`w`S`h`T`^`U`Z`V`Xaz`WazgC`YazgCazaz`[`\`]azgCgCaz`_`c```aazgC`bgCgCaz`d`faz`egCaz`ggCazgC`i`ogC`j`k`mgC`lazgCgC`nazgC`p`sgC`qgC`rgCaz`t`v`uazgCazazgC`x`�`y`�`z`}gC`{`|gCgCaz`~`�`gCazgCgC`�azgC`�`�`�`�`�`�gCazazgCgCazaz`�gCaz`�`�`�gC`�`�gC`�gCazaz`�gCaz`�`�`�gC`�gCgCaz`�`�gC`�azgCaz`�gCaz`�`�`�`�`�`�`�`�`�`�azgC`�`�azgCgCaz`�`�`�gCgCazgC`�gCazaz`�az`�`�`�gCazazgC`�`�`�gC`�`�gC`�azgCgC`�gCaz`�`�`�`�gC`�gCaz`�gCgCaz`�`�gC`�azgC`�`�gCazgCaz`�`�`�az`�`�gC`�`�`�gCazazgC`�`�`�`�gCazgCaz`�azgCaz`�`�`�`�`�`�`�gCgCaz`�gCgCaz`�`�azgC`�gCgCaz`�`�az`�`�azazgCaz`�`�`�azgCgCaz`�b`�ar`�a#`�`�az`�`�`�`�`�`�`�`�gCgCaz`�`�azgCazgC`�`�`�`�gCazazgCgC`�azgC`�`�`�gC`�azazgC`�gC`�`�gCazazgC`�a
`�a`�a`�gCaaazgCazgCgCaaagCazazgCagCaaa	a
gCazazgCagCazgCaaaaaaagCgCazaagCazazgCgCaagCgCazaaaaagCazgCagCazgCaa!a gCazgCa"azazgCa$aOa%a<a&a/a'a*a(gCaza)azgCa+a.a,a-gCazazgCgCaza0a7a1a4a2a3azgCgCaza5a6gCazazgCa8a:a9azazgCa;gCazgCa=aGa>aDa?aAa@gCgCazaBazazaCgCazgCaEgCaFgCazaHaKgCaIaJazgCazaLgCaMaNazgCazgCaPa`aQa[aRaTaSgCgCazaUaXaVaWazgCazgCaYaZgCazgCazgCa\a]a_a^gCgCazgCazaaalabafacgCgCadaeazgCazagajahaiazgCgCazgCakgCazamgCanapaogCgCazaqgCazgCasa�ata�aua�ava�awa|axa{ayazgCazgCazgCaza}agCa~azgCa�gCazgCa�a�a�a�a�a�azgCazgCa�azazgCaza�aza�gCaza�a�a�a�a�a�gCa�azgCgCa�azgCgCa�a�a�azgCazgCa�a�a�a�gCazgCa�gCaza�a�a�azgCaza�azazgCa�a�a�a�a�a�a�a�a�azgCazgCa�azgCa�azgCaza�a�a�a�gCa�gCaza�a�azgCazgCa�a�gCa�gCaza�azazgCa�a�a�a�a�a�gCa�gCaza�gCgCaza�a�a�a�gCazgCaza�a�azgCgCaza�a�a�a�a�gCsgCa�gCazgCa�gCa�gCa�gCaza�a�azgCaza�a�a�a�aza�a�a�aza�a�azgCazaza�a�azazgCa�a�a�a�gCa�a�a�gCazazgCa�a�gCa�gCaza�gCgCaza�a�gCa�a�gCazgCa�a�azgCa�a�gCazgCa�azgCa�ba�a�a�a�a�a�a�a�gCazazgCa�azgCaza�a�gCa�gCazgCa�gCaza�ba�azbgCazgCbbgCazgCbgCazbb
gCbbbb	b
gCazazgCazbgCazbbbbbgCazgCbbazgCazgCgCbbbgCazgCazbb�bbgbbDbb/bb&bb!bgCb gCazgCb"b$gCb#azgCgCb%azgCb'b*gCb(gCb)gCazb+b-gCb,azgCgCb.azgCb0b9b1b6b2b4gCb3gCazgCb5azgCgCb7b8gCgCazb:b?b;b=b<gCazgCgCb>gCazb@bBgCbAgCazbCgCgCazbEbVbFbPbGbJbHbIazgCgCazbKbMazbLazgCbNbOazgCgCazbQbTazbRgCbSazgCbUazgCazbWb^bXb[gCbYgCbZazgCb\gCb]gCgCazb_bbb`gCbagCazgCbcbegCbdazgCbfgCgCazbhb�bibzbjbnbkgCblgCgCbmazgCbobtbpbrgCbqazgCgCbsgCazbubwgCbvazgCbxbygCazazgCb{gCb|b~b}gCazgCgCbgCb�gCazb�b�b�azb�b�b�b�b�azazgCazgCb�azb�b�gCazazgCb�b�b�b�gCb�gCb�azgCgCb�gCb�azgCgCb�gCb�gCb�azgCb�b�b�b�b�b�b�b�b�b�b�b�b�gCazgCgCb�gCazb�b�b�b�gCazgCazb�gCazgCb�b�gCb�b�gCazgCb�b�b�b�azgCgCazb�b�azgCazgCb�b�b�b�b�b�gCb�b�gCgCazb�b�azgCazgCgCb�b�gCazgCb�b�b�b�b�gCgCazazgCgCb�gCb�gCazb�b�b�b�b�b�b�b�azb�gCazazb�gCazb�azb�azgCazazb�b�b�b�azgCazazb�gCazgCb�gCb�b�gCazb�gCazb�cb�b�b�b�b�b�b�b�b�b�azgCazgCb�b�gCazgCazb�gCb�b�gCazgCazb�b�b�b�b�gCgCazb�b�gCazgCazb�b�b�gCgCazgCb�gCazb�cb�b�b�b�b�gCazgCgCb�gCazccccazgCcgCazgCgCcazgCcc
gCcgCc	gCazcc
gCcazgCgCcgCazcc%cccccgCccazgCgCazccccazgCazgCgCcgCazcc gCcgCcgCazc!c#azc"azgCgCc$gCazc&c-c'c*c(gCgCc)azgCc+gCc,gCazgCc.c3c/c1gCc0azgCgCc2azgCgCc4c5c6azgCazgCc8L�p�c9g4c:lic;lic<c=lilic>c?lilic@cAlili�RcCc�cDL�cEcncFL�cGcQcHcIdM�dcJM�cKM�cLcMM�M�cNcOM�cPM�M�{�cRcYq~cSdcTcUdcVddcWg4cXg4ddcZc[clc\c_c]c^b�s*iMb�c`cgcab�cbcfLcccdceiMc�|�nW@Lchb�civ�cjv�gQckv�b�cmd{m�c�coc�cpc�cqc�M�crM�csctM�M�cucvM�cwM�cxM�M�cyczM�M�c{c|M�c}M�c~M�M�cM�c�c�M�M���xvc�`�b�c�c�c�c�Lp�|�`�c�c�dMc�c�c�c�c�c�c�c�i�c�c�c�c�c�,iq���c�c�d{�vL�ؒLi�c�c�c�M��N|�c�c�c�c�c�q~p�p�q~q~c�q~qpc�c�c�c�dg4i�b�c�c�q~b�c�Nc�c�c�c�x�d{b�x�c�c�g_b�kub�c�c�c�c�c�c�azc�cWMc�c�nWM�kub�c�c�c�c�c�b�c�c�c�c�4z��mD4zc�c���c���c�c���c���c���c���c�����c���ו��y�LMc�c�azL�g_b�c�c�dd{c�c�c�tylNc�hhc�d�c�c�p�c�c�c�l�c�t�g_c�c�dc�c�ddc�c�dc�ddc�c�dc�ddc�c�dc�dc�dc�ddc�c�dm�dc�d�c�c�c�c�n�b��xb�c�d�c�dPc�d#c�dc�c�c�c��[c�c�c��[s9sIsYc�c�c��[sik��[c�l�[c�dd�[dd�[s9`��[d�[d�[kl�[dddd
d	dd
�[syk�d�[l��[�[d�[d�[s9dddd�[d`��[dd�[k<`����[dddkLh���dd`�`�dd`�d`�d `�d!`�d"`�֥`�d$d:d%d-d&d*d'�[d(d)sik|`�sI�[d+�[d,sY֥d.d3d/d2d0d1k��[k��[֥�[d4d7d5d6�[k�֖k\d8d9��`��[`�d;dFd<dBd=d@d>d?�[l��h���dA�[sydC�[dDdE`�֖�[��dGdKdH�[dIdJ��s�`�k�dLdOdMdN`��[֖�i`���dQdoMdRdSdTNMdUd]dVMdWdXMq�dYMdZMMd[Md\g�Md^Md_Md`MMdaMdbdcdjdddgdeMdfMq�MMdhMdiMg�MdkMdldmMdnMg�MdpdyMdqMdrdsdvdtdu`�,`�,dwdx`���`�dzMd{d�Md|Md}Md~dMd�Md�d�d�Md�d���d���d���Md�d���d���M��d���M��MML��Xakd�d�d�d�d�kud�b�b�d�d�b�b�d�d�d�d�d���s����d�d�p�y3Sydb�d�d�b�M��,d]d�e\d�ed�d�d�d�d�d�Nd�xvd�d�xvxvd�d�xvd���xv��dMd�d�d��t�d�d�d�d�d�d�d�d�d�q~d�q~p�d�q~q~d�d�qpd�qpd�qpd�qpqpd�d�qpd�qps�qpd�d�d�d�s�*�s�qpq~d�q~s�q~d�d�d�d�q~s�s�d�d�*�q~q~s�d�d�d�d�d�d�q~d�tqpd�d�q~qpqp�qpq~d�d�qpd�d�q~q~s�d�d��q~d�d�tq~q~qpd�ed�d�d�tyd�d�d�b�d�d�d�d�b�d�b�d$b�d�d$b�d�d�d�d$b�d$d$d�d$b�d�b�d�b�b�d�gnd��Rpzd�j*d�ed�eMd�Md�d�Md�MMd�Md�d�MMd�eMeMeMM�;MeeMMe�OMeMe	Me
MeMeMe
MeMeMMeMeMeeM�OMMNee,ee$eej�aNeb�eeMeL�eL�MMeMe Me!e"e#LMLMt�e%cWe&e'L�ake(ake)ake*ake+aktke-eYe.eDe/d{e0e9e1e4e2e3wccWd{de5e8�be6de7i#ddNe:e=e;e<b�Mc�`�e>eAe?gns�e@s��*eBddeCdb�tyeEeFeReGMeHeLeIMeJeKMg�g�MeMeOeNMMg�ePeQMg�g�MeSMeTeWMeUMeV�MMeX�MeZe[Mdb�de]f$e^e�e_de`e�eae|ebejeceeedlignlieflieggneheign)�gnq�ekeweleremeognent gnepeqixggn�1eseveteugnh�gnt t gnliexeypzeze{q�lign#e}e�e~e�elie�lignlilie�e�e�lignigne�lie�e�e�e�e�gn+cgne�gn�gngne�e�gnligne�e�e�e�e�lie�lie�e�e�e�gnlignlignlilie�e�e�lie�e�pzspze�gne�e�s8gns8lie�e�e�e�e�xglie�e�gnigne�e�e�e�e�e�ligngn)�gne�ligne�e�e�lignlie�e�pzlilipze�e�e�e��Rlignlis8gne�L�e�e�e�e�e�e�e�e�e�e�lNLL�e�e�e�M�e�e�@�:iM�LcWe�e�d{}�d{e�e�e�e�e�e�e�e�e�L�e�L�e�L�e�L�e�L��L�L�aze�i�i��e�aze�e�Q�W�Q�Ne�b�hg4e�e�e�e�b�e�rXtke�e�e�de��jaz��Me�e�e�t/ht>tMe�e�e�e�L�e�e�gQkXv�e�de�v�v�w�e�e�e�e�e�e�t]����j*v�gQlg_e�fe�fe�e�e�e�c�N{
y7e�e�gQMNLffffdf�dd$Q�ffaNd{fd{f	f
tltz�{ ]fff
fffdkXfff��b��fftOM~)xffdb�b�`�ffffdL�e�fmfmwUff jVb�f!c�f"f#i�e�e�e�f%lic�f&f'g�f(f�f)fPf*fLf+f.f,N;N+f-N+NNf/Nf0Nf1f2f?Nf3f4f8Nf5Nf6f7OTNOTOTf9f:f<OTf;OTNf=Nf>NOTNf@NfANfBfHfCfENfDNOTfFOTfGOTOTNfINfJNOTfKOTNNfMfNP}NfONQ�fQfTfRfSQ�Q�NOEfUf�fVNfWfbNfXNfYNfZNf[f\f_f]f^NQ�NQ�f`NNfaQ�NNfcfdf�fef�fffsfgflfhfkNfifjQ�Q�NNQ�fmfpNfnQ�foQ�NNfqQ�frQ�NftfzfufyNfvfwfxQ�NQ�NNQ�f{f~Nf|f}Q�Q�NNfQ�f�NQ�f�f�f�f�f�f�NQ�Nf�f�Q�Q�Nf�f�Nf�Q�f�NQ�NQ�f�f�f�f�Nf�f�Q�NQ�NQ�f�NNQ�f�f�f�f�f�f�f�f�NQ�NQ�f�f�NQ�Nf�f�Q�NQ�f�Nf�NNQ�f�Nf�f�f�f�NQ�NQ�f�NNf�Q�Nf�N;f�P}NQ�f�f�f�f�f�f�SNf�N;OEf�OEQ�f�f�f�f�Nf�NW�f�f�Q�NNQ�f�f�f�NQ�f�f�f�Nf�Nf�f�Nf�NNf�Nf�NYf�f�Nf�f�f�f�NNf�NYf�f�NYNYf�f�f�f�f�f�NYNf�f�YYNf�f�NYNYf�f�f�f�NYNYf�NNf�YNf�NO�Nf�f�f�f�Q�P}f�f�f�NR�OTNf�N;P}f�g�f�gKNf�f�gf�f�Nf�Nf�f�f�Nf�Nf�Nf�NOTf�f�Nf�OTf�OTNNf�OTf�NOTf�gggggggNOTNOTggNOTNOTggg	g
NOTNOTgg
NOTNOTggggggNOTNOTggNOTNOTgNgNNgOTgOTNgg<gg,gg%gg"g g!NOTNOTg#g$NOTNOTg&g)g'g(NOTNOTg*g+NOTNOTg-g6g.g1g/g0NOTNOTg2g5Ng3g4OTOTNNOTg7Ng8NNg9g:g;OTNOTNg=Ng>gEg?gBg@gANOTNOTgCgDNOTNOTgFgIgGgHNOTNOTgJNNOTNgLgMNgNg\NgOgPgUNgQNgRNgSN;gTNN;gVgYgWgXNN;NN;gZg[NN;NN;g]gxg^gig_gdg`gaNN;NgbN;gcNN;geghNgfN;ggNN;NN;gjgpgkgmNglN;NgngoNN;N;NgqgugrgtNgsNN;N;NgvgwNN;N;NgyNgzg�g{g~g|g}NN;N;Ngg�NN;N;Ng�g�g�g�NN;N;Ng�NNN;g�N;g�N;Q�OEg�g�g�g�g�g�g�N;g�g�g�Q�Q�OTg�Q�Ocg�Ng�g�Ng�Ng�g�g�g�NOcNOcg�g�NOcNg�g�OcNOcg�Q�g�OTg�NNOTg�g�g�g�NQ�N;g�Q�g�OTP}Q�Ng�hcg�g�g�NN;g�N;g�OTNg�g�g�g�g�g�N;VpN]Rg�g�NOEN;Ng�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�NQ�Ng�Q�g�NQ�g�g�NQ�NQ�g�g�g�g�NQ�NQ�g�g�NQ�NQ�g�g�g�g�g�g�NQ�NQ�g�g�NQ�NQ�g�g�g�g�NQ�NQ�g�g�Ng�Q�g�Q�NNQ�g�Ng�Ng�Ng�g�NQ�NQ�Ng�g�Ng�g�Ng�g�Q�NQ�g�Ng�Ng�Ng�NQ�NN;Ng�g�NN;g�Ng�hg�h	Ng�g�g�Ng�g�g�g�YNYg�NYNg�hhhhYNYhNYNhhhYNYhNYNh
Nhhhhh
hhYNYhNYNhhhYNYhNYNhNhNhNNYhh?hh-hh(hh#hh!h YNYh"NYNh$h&h%YNYh'NYNh)Nh*Nh+h,NYYNh.h4Nh/h0h2Nh1NYYh3YNh5h:h6h8Nh7NYYh9YNh;h=Nh<NYYh>YNh@hWhAhLhBhGhChENhDNYYhFYNhHhJNhINYYhKYNhMhRhNhPNhONYYhQYNhShUNhTNYYhVYNhXNhYh^hZh\Nh[NYYh]YNh_haNh`NYYhbYNhdhfP}heNOETFhgTFNhih�hjh}c�hkc�hlhmc�hnc�c�hoc�hphqc�hrc�hsc�htc�c�huc�hvhwc�c�hxc�hyc�hzc�h{h|c�c�@h~c�c�hh�c�c�h�c�h�h�c�h�c�h�c�c�h�h�c�h�c�c�h�h�c�c�h�h�c�c�h�h�c�c�h�t�c�h�c�c�h�c�h�h�c�h�c�c�h�h�c�h�c�c�h�c�h�c�h�h�c�c�h�c�h�c�h�h�c�h�c�h�c�h�c�@c�h�s}h�p�h�j�h�h�h�h�h�h�dh�L�h�L�h�L�h�L�h�L�h�h�>�>�h�h�>�>�h�h�>�>�h�h�>�h�>�h�>�>�h�>�h�>�>ct�LnWdh�ih�ih�h�h�h�h�h�h�h�h�b�h��"��"i�b�h�h�dMg4h�h�h�Mh�Mh�Mh�M�;h�Mh�h�h�h�M�;�oMh�Mh�dh��OMh�M�Oh�h�h�h��,b�p�Mh�h�|�`�Lc�h�h�h�h�h�h�l�,i�M�h�h�b�Nm�p�h�h�h�h�c�h�h�h�h�h�h�Mb�azh�h�kXjh�h�i��i�Eh�h�h�aNh�h�i�i�i�`�x�Ni�d{h�ih�b�h�d{id{d{iid{id{d{iid{d{id{id{ii	d{d{i
d{t�idb�i
iiyiyd$ib�d$b�ii/ii iiiib�ib�iib�ib�iazkut�Nb�iib�NMnWi!i,i"i#Q�di$di%i*i&d{i'Li(i)�M�q�i+d{o�d{i-i.b�N`�Mi0iRi1i=i2i<i3i5i4b�c�Li6i7c�d{i8b�i9b�i:i;xvlMi�xvdb�i>i?iCi@iBiAd{lc�c�b�iDiFd$iEb�d$iGb�iHb�iIb�iJb�b�iKb�iLiMb�b�iNiOb�iPb�iQb�b�b�iSi}b�iTiUigiVi[{
iW{
iXiYiZt�{
{
Z7i\ibi]i_Z7i^t�{
i`ia{
Z7{
Z7icieid{
_lt�if{
Z7{
ihisiiilb�ijb�ikb�d$imipiniob�d$p�d$iqirp�b�d$b�itiwb�iub�ivb�d$ixizb�iyb��Yi{i|��xviML�b�i~b�aNi�i�i�i�xvi�akc�i�i�g4i�i�tytyt�p�di�i�i�i�`�i�i�i�i�i�i�i�kudL�cWi�i�b�MdMi�i�i�i�b�d{p�rfi�i�c�i�Mi�i�i��MM��db�xvLi�j|i�jxi�i�i�i�i�i�i�L�L�i�i�L�i�i�i�L�i�L�i�L�ii�i�i�iL��L�i�ii�L�i�L�i�L�iL�i�i�i�i�i�L�iL�i�L�_�L�L�i�L�i�L�i�L�i�L�i�L�i�L�i��ji�iL�i�i�i�L�i�i�i�i�L��i�L�L�i�L�i�L�i�L�i�L�i�L�ii�i�L�i�L�i�L�i�L�xL�i�i�L�i�i�i�L�i�L�L�i�L�ii�L�L�i�i�i�L�ii��L�i�i��tL�i�i�iL�i�i�L�i�L�i�i�i�L�j�L�L�ߜi�ji�i�i�i�i��i�L�t�L�L�i�i�i�L��L��ji�j	i�i�iL�i�j�ji�i�ji�i��L�L�i�jL�jjL���L�L�jjL�jjiL�L�iL��L�j
jj�[�j
L�L�jjjjL�jL��L�L�jL�ijj=jj1jL�jjjL�jjL��L�jjiL�jiL�j j/j!j*j"j(j#L�j$j&L�j%iL�j'L���j)L�iL�j+L�L�j,L�j-L�j.�L�j0L�iL�j2L�j3j<L�j4j5L�j6L�j7L�j8j;j9j:�L��L�L��L��j>j\j?jKj@jAL��jBL�jCjGL�jDjEjF���L�L�jHL�jIjJL�L�iL�jLjMjZjNjRL�jOL�jPijQL�ijSL�jTjWL�jUL�jVL�ijXL�jYL��:L�j[L�xL�j]j_L�j^L��j`jqjaL�jbjiL�jcjdL�jeL�jfL�L�jgjhL�iL�jjL�jkjnjlL��jmL��joL�jpL�t�L�jrL�jsjwL�jtjuL�jvL�iL��L�NjyNjzj{NNMj}j�j~j�jj�j�j�dxvb�j�lMj�j�b�xv`�Nj�j�j�b�c�`�j�j�Nb�b�j�j�j�j�j��uug4j�j�MtOtOq�j�j�j�j�j�j�g4dL�|�j�j�xvi�t�b�j�j�j�j��x`�Mj�j�b�Vpj��Q�j�j�tyMj�M�azj�azj�azj�azj�azj�azj�j�azazj�j�azazj�azb�j�prj�m�j�l*j�kTj�j�j�j�j�j�iMj�j�j�M�j�j�lj�j�q�lNg�m�`�j�j�j�j�LM�LMiMj�Lj�Mj�j�j�c�gCפMj�j�j�j�j�j�j�`�j�b�j�azc�mc�j�j�`�`�lj�j�Lj�j�`�`�j�MNLj�j�j�j�`�az��j�j�NLOE��j�j�j�j�j�j�j�j�nWLiMlj�j�j�j�lic�wazj�j�lic�l�(t�l`�j�Nj�j�`�iMj�u)iMj�k$j�kj�kj�kj�j�j�j�j�j�OTYNOTlMlj�j�j��lN�(kkklkiMdNlk`�kNlkk
lk	k
kkLLkulMlw�kkkkklkg�kb�cfNklkklkMliNlkkkkliMkLklMlk lkuk!k"k#M,�1lk%k6k&k.k'k-k(M�k)k*m�lk+k,l`�M`�L�lk/k4k0lk1k3Lk2M��lc�k5LlLk7k@k8kuk9k=k:k<lk;���l��k>k?��liMMkAkEw�kBkClkDiM`�lkFkPkGkHiMlkIkJl�ekKlkLlkMlkNlkOll�dkQkRlMkSMLlkUk�kVk�kWk{kXiMkYkakZlk[k^k\k]wu8{
dk_k`wl`�mkbkzkckykdkpkeazkfazkgazazkhazkikjkmazkkazklgQazazknazkoazgQkqazkrazksazktazkuazazkvkwazkxazgQaziMnWlLk|k�k}k�`�k~lkk�azLNlk�k�k�iMlliMk�k�k�k�Mk�lk�M��k�k�Mk�`�lMk�lq�`�k�Lk�b�Q�k�k�iMk�k�k�k�k�k�Mk�w�l`�k�k�iMk�Nazk�k�k�li)�lc�k�M�k�liMk�lOEk�k�k�k�`�k�k�`�iMk�`�`�lk�k�k�k�k�OENc�`�lMk�k�k�k�k�k�g&k���k�g&g&�`�k�k�k�`�uG�R`�M�iMk�k�k�k�k�k�k�k�k�`�dlg_k�k�Mk�lLMk�k�k�`�k�k�k�k�AlNlnWk�lcWk�k�k�k�k�l��uVk�k�c�l��lk�k�k�iMAc�c�Lk�k�k�k�iMk�k�k�k�lNߍk�cWNlk�k�k�`�l�(k�azk�k�Nq�g�NL�k�k�k�k�k�lk�OEllk�i�`�iMk�kuk�k�N)�]k�lk�lk�k�k�Lk�k�k�`�l*�iMk�LL�k�k�c�Lk�ll�c�MiMll[�ll
lllMlllN`�l	ldllliM�8l
r,�lllllllMliMl`�`�ll`�lLL�lll&ll llllcWLllL�llLl!l#ll"c�ll$l%l��l{
ll'l(kul)lN��l+l�l,l�l-lJl.l;l/l6l0l1Lll2Ml3l4iMlll5N[�l7iMl8Ldl9l:MQ�ll<lIl=lDMl>l?lAl@g_lNlBlC�l��lLlElFlGlhllHlg	iMMlKlclLlXlMlTllNlOlQlPMg�ߍlRlSe�M7rlllUlV`�llWl`�lYiMlZl^l[kul\l]q�ie��gnl_l`LcWlalb[�ffLldlolelllflklglhliMliljl`�lBaku`�lmln`��[֥��lpl�lql�lrltlsiMlq�lulv`�lgClwelxlyllzel{el|el}el~eueel�el�eel�el�el�eue`�gCll�ll�iMl�l�l�l�l�l�l�l�iMl���l�kul�l�iMazll�l���l�l�`�l�iMNlll�l�l�ll�gC�(azNl�l�l�l�l�LMl�M`�l�l�Lg_g4l�Ml�Mײl�ll�l�l�l�l��Mll�iMaz!Tl�ll�l�`�NazL�l�l�l�l�l�l�l�l�l�l�l�MgCM��l�Mll�l�l�l�lOEYdl�lddiMl�iMll�l�ll�iMl�l�MM�M�l�l�azl�llW�l�l�l�l�l�d]`�l�l�iM#�ll�l�iMll�kuaziMl�iMl�l�l�iLl�uyLl�,ll�s8ll�m/l�ml�l�l�l�ll�Ll�l�`�iMl�Mll�l�l�l�`�l�dl�Q�Nl�l�l�l�LoYL,[l�l�`�L��Lll�l�azl�lc�ll�l�l�iMl�l���l�Ml�X#c�l��l�ml�mNmmiMlW�mlmazlt�dMmmmmm	mm
mmmmm
��Eh%hazmBa�mlmlQ�lmm���[mlfm��b�mmmlNkuLiMmm!mmiMLm LliMm"m+m#m'm$lm%m&����=g&m(m*��m)azM�lL�m,lm-iMm.iMg�lm0mRm1m5m2Lm3Llm4iMlm6mFm7m>m8m=m9m;lm:lc�m<llg�l`�m?m@l`�mAmDmBmCdllBamE��`�lmGmK`�mHNmImJlc�l`�mLmMmPlmNmOaNr&�"mQlL`�mSmjmTm\mUmVdMmWLmXmZ{
mYMazlm[azc�m]mfm^mdm_mbm`maL�^NP}YmcMLc�meb�lmgmhlLmilaziMmkmxmlmpt�mmmnL`�moazlmqLmrmumsmtiMlazgCmvmwMc�lM`�mymzm�m{m~m|m}c�M`�llmlMlm�m�m���l`���m�om�n?m�nm�m�m�m�m�m�m�m�m�lipzm�lim�m�m��lijVm�jVm�jVm�jVm�m�jVjVm�jVm�jVlim�m�lm�m�llc�m�m�m�m�u�lt�lm�m�y7t���lm�kum�m�m�m�lm�lפm�iMu�`�m�m�m�m�lazdazMlm�m�m�m�m�m�m�m�m�m��(l`�lm�m�c�l`�lm�m�lm�Llm�iM�lm�m�m�Lm�m�Lazg&lm�m�liMm�lQ�lm�m�m�m���lm�m�liMaziMm�m��[֥��֥m�m�m�m�m�m�m�m�m�m�iMm�lc�ldm�m�lm�wc�M`�m�iMc�lm�m�m�m�m�m�m�lN`�azm�jlm�`�Nm�`�hm�lm�m�m�iL�im�m�OTl���m�nm�m�m�m�kulm�m�lm�lLm�m�lg&g&g�m�nm�m�Mm�L�Q�m�m�Mc�l`�nnhlL�lniMnnn`�lnq�`�n	n
l`�aznLln
n&n`�nnnnniMu���iMnnnnnMlg&M��nc�lnnnnnliMdiMg_nn"n g_n!Mp�Mn#n$lm�Mn%mln'n8n(n,n)lg4n*n+w�lw�n-n1M�n.Nn/n0l�d]n2n5ln3n4llg	iMn6n7M`�MiMn9n:n>n;azazn<azn=V�aziMd]n@n�nAnxnBncnCnTnDnK`�nEnFnInGnHq�lMlnJl{
lnLnNlnM���nOnQnPl`�`�nRnSlgC#c�nUn]nVnYnWliMnXc�lnZiMn[n\azllp�n^n`n_g_azlnakuiMnbMlndnqnenhnf`�`�ngiMLninnnjnlg&nkg&�lnmg&llnoc�nplg&nrntiMns`�lnuLnvlLnwM�(nyn�nzn�n{n�n|n`�n}ln~`�liMn�M�n�g	g&n�n�azn�liMn�l��Mn�n�n�n�u�LNn�c��(n�iMn�`�ln�x��(n�n�n�n�n�n�liMlkun�liMn�n�n���azlazn�ln�n�`�n�iMn�`�lln�Ln�n�c�n�c��n�n���n��n�n��n���c�n�n�n�n�n�n�iMn�n�n�lkulc�n�n�n�n�n�n�n�n�q��֥`�iMn���c�n�ln�llu�n�n�n�n�n�n�`�n�n��(n��(n��(n��(n��(n��(n��(M�(lazn�l`�lt�n�n�n�cfl`�ln�n�n�n�n�n�c�n�aziMn�n�n�LLlLn�c�ln�iMlLn�n�iMn�n�n�n�n�h4���^y(n�n�yh4d]n�d�cWn�n�n�n�n�n�n�n�`�q~ln�n�n�g&�c�g&iML�n�n�n�n�lku`�n��(ln�n�ln�liMt�n�iMln�on�on�on�on�l`�lc�oLW�oolcfiMc�MiMoliMM�o	o�o
oroo@ooo
ooLM�ookuood���loLoooLLov�LMloo/ooLot�ool`�io o.o!o$o"o#��fLfo%fo&ffo'o(ffo)fo*o+fo,fo-ff��lt�o0o8o1o4t�o2lo3v�cfo5o7lo6c�(|lL�o9o=o:o<iMo;Ym`�iMlo>lo?NOEoAoRoBoJoCoDiMloEoIoFoHoGiMlL`�L`�t�oKoNoLd]loMlg_iMoOLoPoQiMc�`�oSohoToboUo\oVoYoWoXx��+y(ݶoZo[h4��y(��o]o_o^iMlc�o`oal��`�=oct�odofloeazp�ogllazoiomlojlokoll��lonM�iMooopoqMml�oso�oto�ouo�ovoowoz`�oxg&oygn�o{o}o|lNc�lo~OTll`�o�iMo�o�o�Llo�lu�`�o�W�o��ylo�o�o�o�o�lo�o�lo�dq�iM��o�o�o�cWiMo�Mlo�o�o�o�liMo�lo�g&g&o�o�g&o�g&o�g&o�g&o�g&@g&o�o�g&lc�`�lo�iMo�t�o�liMo�o�o�o�w�o�liMo�Mo�lo�o�lo�rlo�llnWo�o�lo�o�o�o�`�Ll`�Lo�o�o�M�o�o�o�o�g&lM�[`�iMLlo�po�o�o�o�o�o�o�o�o�o�o�o�o�o�g&�lg&o�lc�lM��M�lo�o�o�o�o�o�o�o�LkukuLLo�fLo�o�No�`�gC�8o�Q�g�lo�lo�iMo�g&Mo�o�`�o�o�o�o�o�o�o�[M�[M�� o�M�� Lo�o�iMNlo�o�o�`�L�lo�o�o�cWlo�g&OEo�o�o�o�ldg4Mo�{
g4do�po�o�o�o�o�Ll`�c�b�o�po�ll`�piM��ӹpp	pp`�b�lpiMplpMq�p
p`�lppp
pppfu����ppf��fLMt�ppSpp7pp#pLpppLpplNaz��pp Np��aNp!p"lazl[�p$p-p%p*p&p(`�p'lic�p)g_`�gnp+t�{
p,lgCp.p2cWp/p0p1`�ll`�p3p5Np4!TElp6c�azp8p@iMp9w�p:p;p>p<p=lN;OEllp?BaOEpApEpBlpCllpDlg&pFpMpGpJpHpIlu��g&pKpL\Hg&�g&pNpQpOpPl#�lc�pRg&c�g&pTp`iMpUpVpZlipWpXq�lipYliu�p[M�p\p^Np]NlNp_N`�papepblpcpdliMiMlpfpjlpgphLlpi��MpkpmlpllMpnpppol(|gCpql`�(|dpsptddpupvdpwdpxdpyp�dpzp{p�p|�-�-p}p~�-�-p�-p�p��-�-p�p��-p��-�-p�u��-p�ddp�p�dp�p�p�ddp�dp�p�dp�dp�dd@dp�p�ddp�dp�p�dp�d�dp�p�dp�p�dp�ddp�dp�p�p�p�ddp�dp�dp�p�d�ddp�dp�dp�p�ddp�d�dp�dp��-p��-p��-p��-p�p��-p��-�-p�p��-p��-u��-p�p�p�L�p�p�p�c�p�c�p�c�p�c�c�p�c�p�c�p�c�p�c�p�c�p�c�p�p�c�p�c�p�c�p�c�p�c�p�c�c�p�@c�c�p�p�c�p�c�p�c�p�c�p�c�p�c�p�c�p�c�p�c�c�p�p�c�c�p�c�p�p�c�p�c�c�p�c�p�c�@p�q�p�p�p�p�`�Ni�xvp�qap�qp�qp�p�p�p�g4Mb�p�p�p�p�p�b�p�{�p���b�p�p�b�p�b�d$b�{�p�p�b�p�b�p�b�d$p�p�p�gCb��Fp�b�b�d$p�q|�NaNMqqqqMnW`�Mqqb�g4qd{Nq	Nq
qq
NqNQ�qNQ�Nqq6qqqqc�p�dakqqqqqqMi�MdqqNb�ML�qq3qq2b�qq q0q!q/q"cWNq#q$Nq%Nq&q)Nq'Nq(NQ�q*Nq+q.q,q-W�NNOqQ�NlxMq1NVpgng4dq4q5Mkug_b�q7qSq8qMq9qJq:qA� q;q<q?q=q>Q�li�!b�q@ؒ��c�qBqIqCNqDNqENqFqGNQ�qHNNQ�MNqKqLb�MLgCqNqQqOqPdMb�`�qRb�ku`�qTq\qUqYqVqXxvqWb�b�j�c�qZq[dL�Ldq]q^b�M�q_q`c�MLq~qbqhqcqfqdqet�b�y7c�qgb�b�tyqiq~qjq}b�qkqlqzqmqyqnd$d$qoqpd$qqd$qrd$d$qsqtd$qud$qvd$d$qwd$qxd$��d$b�q{d$q|d$b�d$d{
qq�m�xvb���q�s|q�q�b�tyq�`�q�r�q�r�q�r_q�q�q�q�q�liq�liq�lignliq�pzq�q�liq�+cli)�liq�rXq�rSq�r'q�q�q�q�q�q�q�q�)�q�)�q�)�q�)�q�)�q�gn)�q�)�q�q�q�q�q�q�q�)�)�gn)�q�)�gnq�q�q�)�gn)�q�)�)�gn)�q�q�)�)�q�gn)�q�q�)�q�)�q�)�q�)�q�q�q�gn)�)�gnq�q�q�q�q�q�q�)�q�)�)�gnq�q�)�q�gn)�q�q�gn)�)�gnq�)�q�)�)�q�gn)�q�)�q�)�q�q�q�)�gn)�q�)�)�gnq�q�)�q�q�q�q�q�q�)�)�q�q�)�gn)�q�q�)�q�)�q�)�gnq�)�)�q�gn)�q�)�q�)�q�)�)�q�)�gn)�q�q�)�q�q�q�)�q�)�q�)�)�gnq�q�q�)�)�q�gn)�)�q�)�q�gn)�q�rq�r
q�q�)�q�)�q�q�q�)�q�)�q�)�gnq�)�)�q�)�gnq�)�rr	rrr)�rr)�gn)�gn)�rrrgn)�gn)�r
)�)�rr)�gn)�)�rrrr)�rrr)�)�rgn)�)�r)�r)�gnr)�r)�r)�r)�)�gnr��r�rr �r!r$�r"�r#�gn�r%�r&gn�r(rR�r)r*r>�r+r,r9r-r1�r.�r/r0��gnr2r6�r3r4r5gn�gn�r7�r8�gn�r:�r;�r<�r=��gnr?�r@rE�rA�rBrC��rDgn�rFrNrGrKrH�rIrJ�gngn�rL�rM�gn�rO�rP�rQ�gn���RrTrVrUli6mlirWpzgnlirYr\gnrZ�Rr[�R6mr]gnr^h�li+cr`rsrarorbrircrfrdregn�1�1+crgrhgnh�gnlirjrmrkrlgnh�h�pzlirnliqwgnrprqrr�lilis8rtr�rur|rvryrwrxpzlign6mrzr{gns8s8pzr}rs8r~gns8r��gns8r�r�r�lir�r�6mgn�h�r�r�r�r��)�)�lir�r�li#q��r�r�r�r�r�r�r�r�r�r�r�r�gnliq�lir�r�6m)�)�vr�r�r�r�)�pz)��Rr�r��"��gnlir�r�r�r�gn�r�r�s8gn)�lir�gn�Rr�gnlir�r�r�r�r�r�lir�lis8lir�6mgnr�r�pzgnr�r�lignlignr�r�r�r�r�r�lignliq�r�r�ligngn+cr�gnvr�h�gnr�r�r�r�r�r�r�r�gnr�gn,gnr�pzgnr�gnr�r�lignlis8r�r�r�r�r�gnq�lir�r�gnh�h�lignr�r�r�gn7rgn6mr�r�r�r�r�r�h��Rs8q�r�r�r�r�lignpzlir�r�lignlignr�r�r�r�lir�q�gnr�gn��lir�r�r�r�6mlilignr�r�ligngnpzr�s>r�sr�sr�r�r�r�r�r�r�r�gnpz�gnr�h�gn,r�r�gnlir�lign+cgnr�ssss�Rh�li)�ssgnlignlispzss
s	sh�s
gnlis8sgnlisgnsgngn��ss%sssgnssgnsligns�s8lisssssgngn�sslignli�s s#s!s"gn6m6mpzlis$gn+cs&s0s's,s(s*s)+cgn+cs+�ligngns-s.s/gns8lipzs1s7s2s5s3s4li6m6m��s66mlis8s;s9s:gn+ch�gns<s=gnli�lis?scs@sSsAsLsBsGsCsEsDgnli��lisFgnpzsHsKsIsJpzlilignli6mgnsMsNsPsOgnlisQsRli)�gn6msTs^sUsYgnsVsWsXi�liliq�sZs\�s[ligns]6mgn6mlis_lis`sasb)�gn6mgnsdslliselisfsgsjshsi6mgns8liliskv&lismsrsnlisosqlispgn6ms8gnsssxstsvsuliliv5swlign)�lisyszs{gnlignlili�s~w
su{s�s�s�s�Lq~s�s�l`�Ln�s�u\s�ts�s�s�s�s�s�dt�iMs�s�g4s�g4s�g4s�g4g4s�s�g4g4s�g4s�g4s�s�g4s�g4g4s�s�g4vDg4s�s�dMs�Mb�s�s�s�s�M$$cWcWc�s�s�s�s�N����ds�tt�s�s�s�q~{
s�s�s�s�q~s�s�dd#L�s�s�s�s�s�s�s�s�s�|�s�|�s�|�s�s�s�s�|�g�|�|�s�g�|�s�|�|�s�|�s�s�|�|�s�g�|�|�s�s�|�|�s�s�|�s�|�s�|�|�g�|�s�|�s�|�s�s�|�s�|�s�|�|�s�g�|�s�s�s�s�|�s�s�s�|�s�s�|�s�|�|�s�g�|�|�s�s�|�|�s�|�s�g�|�s�s�s�|�|�s�|�s�s�|�|�s�g�|�s�|�s�s�|�s�s�|�s�s�g�|�g�|�s�|�|�s�|�s�g�|�s�|�|�s�s�s�|�s�s�|�|�s�|�s�|�g�|�s�|�s�|�s�s�|�g�|�q~s�Aeq~���tu8tttt�xq~`�b�tt-t`�t	tt
t
ltltlg&ttttttg&��g&lltնc�tlttg	��g&ltt"ttltttl�նc�tt!t g&��c�g&t#t(t$t&t%lg&lt'l��g&t)t+t*l��llt,g&��t.Nt/t�azt0t1t:azt2t3azazt4t5azt6t8t7azgCazt9gCgCazt;t�t<tyt=tXt>tJt?tEt@tCtAtBwUubwUv�tDwkX�?tFtHgCtG�"w�tIwwc�tKtStLtPtMtN�?wtO{�gQgCtQtRb�gCb�v�tTaztUtWtVv�wgQkXgCtYtjtZtct[t_t\t]w��Mt^ubv�gCt`tbtakXv�kX{�b�tdtgtetfv�kXkX�b�thtigCb�gCtktptltmazb�tnto�iazazv�tqtutrtttsazv�azv�aztvtwwUgCgCtxw*b�tzt�t{t�t|t�t}t�t~gC�"t�t�azv�t�b�kXwt�t�gCt�azgCt���kXt�t�t�t�t�azgCgQgQt�azb�t�t�w*t�t�t�azgCw*azt�azv�b�b�gQazt�t�t�azt�t�azazgCazt�t�azazgQt�azt�t�azt�t�t�t�azt�t�azgCt�t�t�v�az�Mazt�azkXt�t�t�t�t�t�t�t�t�t�t��Mw*�t�gCwgQt�v�azt�wv�t�azgCazt�t�azt�t�azw�wt�t�t�gQt�gCazw*wt�ubgCt�t�t�t�t�t�t�t��t�w�gCgCt�azgCt�t�t�t�wgCgCgQt�t�wUkXwcmt�gCb�t�gCkXt�t�wt�gCt�gCazazt�t�t�wv��wazt�t�ut�t�t�t�t�t�t�t�gQt�t�ubaz�it��v�t�wUb�t�t�t�wUww�t�t�t�azazt�t�azgCazt�kXazgQt�t�azt�t�t�wgCw�gCt�t�t�t�azgCgCb�t�t�t�kXgQw�b�gCuuuu	uuuuu�"gC�?azwcuu�"v�w��u
uv�v�uu
v�b�w*gCuugCugCugCazw*uw*uv�ugCazuu(uu$uuuazazub�ugC�"uu!uu gCkXwazu"azu#gCkXw*gCu%gCu&u'gC�M�?u)u1u*w*u+u/u,u.u-gCv�b�b�v�u0b�v�b�u2wu3u5azu4wckXu6u7kXazazgCu9uYu:uXu;aNu<u@u=Mu>=�u?=�j*=�uAuKuBuHuCuEuD`�`�vSuFuGvb`�vb`�uI`�uJ`�ak`�uLuSuMuPuNuOak`�c�MuQuR`�xvxvcWuTuVuU`�`�?1`�uW`�NaNF�uZu[c�Mb�nWu]uotyu^tyu_tyu`uatyubtytyuctyuduetytyuftyugtyuhuityujtytyuktyulumtytyuntyvqupL�L�uqurL�L�usutuvL�uuL�>cuwux>c>�>cuy>cuz>�>cu|u�u}u�u~u�uu�u�c�M�|�u�u�nWd{b�u�u�du�ddu�du�u�ddu�du�du�u�du�du�ddu�u�du�d�du�u��,u�iMlu�u�p�ddu�u�u�u�Mu�Mu�Mu�u�u�u�u�dMu�u�MMu�Mu�Mu�Mu�g�u��Og�M�;Mu��oMu�MMu�Mu�Mu�u�M�OMu�u�u�u�u�u�u�Mu�[u�vu��LM�u�b�u�u�b�u�b�u�u�b�b�v�b�+�L�c�u�u��,j�c�b�u�u�u�u�xvb�tyu�du�u�du�du�du�du�ddu�du�u�du�ddu�du�u�ddu�du�u�db�du�vSu�vu�u�u�u�u�u�u�i�b�u�u�p�u�p�u�u�~�y�Y3S�^`�u�u�aNNmb�u�vu�u�u�L�u�u�u�d{u�d{u�u�}�d{�Ld{u�v�d{u�d{u��Ju�g4u�u�b�u�b�u�u�u���ڳ��x�u�v	b�u�v
p�vp�vvp�vp�vp�p�vp�vvp�ZEp�v
b��Pb�vv
ML�|�xvvvvvvvc��G`�q~vvdaNvb�vvcWakcWdvv3vv.v`�vv%vv!d{vv d{�jWMv"d{v#v$d{}�d{WMv&v*d{v'v(v)d{}�d{v�d{v+v,v-WMv�WM}�v/Mv0Mv1MMv2gCMv4vOv5vBv6xvxvv7xvv8xvv9xvv:v;xvv<xvv=xvxvv>xvv?xvv@xvvAxvW[vCvMvDvHvEvFv�3nvG���v�vIvKvJ���3���vL������vN��xvvPc�vQvRxvddy7vTvdvUv^vVv[vWvXN��vYb�vZaNg4aNv\v]`�b�c�b�v_vbv`vab�`�Ќb�b�vcM�t�vev�vfvqvgvhp�xvvilixvvjvkvnvlxvvmxvxv��voxvvpxvxv��vrv�vs`�vtv�vuvvxvMdvwNvxNvyNvzNv{Nv|v}Nv~NvNv�N@Nv�v�cWliLv�v�v�gQazazgQakb�v�v�v�v�nWi�dm�c�v�v�wv�v�v�v�v�v�Mv�v�Mg�Mv�v�v�v�v�v�g�MMv�Mv�Mv�g�MMv�Mv�v�g�v�g�Mg�Mv�Mv�g�Mv�v�v�v�v�v�Mv�v�g�Mv�g�Mv�v�v�v�Mv��g�g�Mv�g�v�v�v�g�g�M��v��g�Mv�g�v�v�v�v�Mv�g�Mg�v�MMg�v�MMv�v��v��v�M�g�v�v�Mv�v�Mv���Mv�v�v�v�v�v�Mv�Mv�v�v�v�MMg�v�MMg�v�v�v�Mv�Mv�MMv�v�v�v�v��l�-���v�v��^�|���mv�v�v�g�v�Mg�Mv�v�v�g�v�g�v�Mv�v�g�Md��Mg�v�v�v�v�g�v�Mv�Mv�M�Mv�M��g�v�v�v�g�Mv�Mv�MMg�Mv�v�Mv�Mv�Mv�MMv�Mw�Mwb�ww	wwwwp�b�yb�wb�yb�w
b�wwyb�x�b�wz"wxYwwMwwiMiMMww�ww*ww)NwwwwwMc�wwc�db�Lww"ww p�Nc�w!c�cWw#w$c��Cw%d{w&w'azlw(l`�lm��,w+w�dw,w-w�w.whw/w[w0wLw1w5w2v�v�w3w4v�v�gCw6wGw7w?w8v�v�w9v�w:w;v�v�w<v�w=v�w>b�v�v�w@v�wAwBv�v�wCwDv�v�wEv�wFb�v�v�wHv�wIwJv�wKv�v�b�wMwTv�wNv�wOwPv�v�wQwRv�wSv�kXv�wUv�v�wVv�wWv�wXv�wYwZv�v�gQv�w\w]wdv�w^w_v�w`v�wav�wbv�v�wcwv�v�wewfv�v�wg�"v�wiw{wjv�wkwtwlwpv�wmv�wnwov�wv�wqv�v�wrwsv��v�v�wuv�wvwwv�v�wxwyv�wzv�ubv�w|w�v�w}w~v�wv�v�w�v�w�w�w�w�v�w�v�v�v�v�w�w�v�v�v�w�w�v�w�w�v�v�w�w�w�w�v�w�v�w�v�v�w�w�v�v�wv�w�v�w�v�wv�w�w�v�w�v�w�v�v�w�w�v�v�w�w�v�v�w��Bv�w�w�w�w�w�w�w�v�w�v�w�w�w�w�v�w�v�w�v�w�w�v�v�kXw�v�w�v�w�v�w�v�v�w�v�w�kXv�w�v�v�w�w�v�w�v�w�v�w�v�w�v�v�kXw�w�v�w�v�w�w�v�w�v�v�w�v�kXv�w�v�w�w�v�w�b�v�w�w�v�v�b�w�w�v�w�w�v�w�w�v�w�v�w�v�w�w�v�v�gQ�Bw�w��B�Bw�w��Bw��B�Bw�w��BgQ�Bw�v�v�w�w�w�v�b�w�v�v�w�v�w�v�w�w�v�w�v�v�w�b�v�v�w�v�w�v�w�v�w�v�w�w�v�v�w�v�w�w�v�w�v�w�v�v�w�b�v��Hxvw�xw�xb�w�w�w�di�i�w�i�w�i�w�i�w�w�i�i�w�i�xi�xi�xxi�i��e|�NxxxMc�cWx	x!x
xxxxxMx
cWc�xNgQxgQt�b�xMi�xxb�x`�b�xxb�`�xxxxxxN[�[�N[�Ng4xx g4�+g4x"xBx#x.x$x%NnWx&x'g4lix(x+x)x*d{dg_`�x,x-nWL�b��x/x@x0x1Mazx2�ox3�oMx4x5Mx6MMx7x8x<Mx9x:Mx;MM~Mx=x>Mx?M~MxAg_azdxCxFxDxE��dMb�xGxXxHcWcWxIcWxJxKcWxLxRxMxPxNxOx�cWx�v�x�xQv��7xSxVxTxU�x�v�cWcWxWcWx�m�dxZx�x[x�x\x�x]d{x^xpx_xex`xbxab�`�b�b�xcxd`�b�azb�xfxgxlxhxkb�xib�xjb�p�d$b�b�xmxnb�b�xob�kuxqx|xrxyxsb�`�xtxuxwxvb�b�d$b�xxd$b�b�xzx{b�b�azx}x�b�x~b�xx�b�b�d$b��t�x�x���x�����x���x���x���x���x�w��x�x�n�x�x�x�x�x�x�x�x�Mx�Mx�x���Mx�MM��x�MMx�x�MMx���MMx�x�x�x�x�x�Mx�Mq�Mx�MMx�$3�ox�x�x�x��ox��o��x��;�oŹx�x�x�x�M�oMtO��Mx�x�x�x�x�x�x�x�x�x�x�x�g�MM�oMx�M�ox�x�x�x�$3�o�oM�ox���M�x�x�x�x�x�x��oMMM�x�x�)x�o��q�x�x�x�x��o��M�Mx�x�M�o�o�px�x�x�x�x�x�x�x���M���ox�x�g�MM�px�x�x�x��oM�oMx�x�$3g����ox�x�x�x�Mx�����x�x�MM�g�Mx�x�x��;g��o�ox�M�ox�x�x�x�x�MMx�M)�Mx�x�Mx�x���M�;��x�x�x�Mx�MMx�M�oMx�x�x���MM�tyakx�y�yy{
cWkuyyyyiMyyykuykuNkuy	��y
��ku��yiMy
y�yyryy0yy.yy#yyyP�yyyywyyP�P�wywwyP�wP�ywyywwP�wy y!wP�y"wP�y$y*wy%y&wwy'y(y)P�wP�wy+wy,wwy-P�w��y/P�wy1yPy2y<y3y8y4wwy5y6wy7P�P�wwy9y:wy;wP�wy=yEy>y@wy?wP�wyAyBwyCwyDwwP�P�yFyGyKyHwwyIP�yJwP�wyLyMyOyNwP�wP�wyQyfyRy`ySyVwyTwyUP�wyWy]yXyZyYP�wP�y[wwy\wP�wy^wy_wP�wyaybwycwwydwyewP�P�ygyhynyiylwyjykwwP�wymP�wwyoypwwyqwP�ysy�yty�yuy�yvyywy{yxNNyyyzNP�Ny|NNy}y~NNP�y�y�Ny�y�NNy�y�NNP�Ny�y�Ny�NP�Ny�y�y�Ny�Ny�NNy�P�Ny�y�y�NNy�y�NP�Ny�NNy�Ny�NP�y�y�y�y�y�NNy�Ny�P�Ny�Ny�Ny�Ny�NP�Ny�Ny�y�y�y�y�NNP�Ny�y�Ny�NNP�y�Ny�NNP�y���y�y�y�y�y�y�Ny�NP�Ny�Ny�y�NP�Ny�y�y�y�P�NP�y�y�y�Ny�NP�NP�y�Ny�NNy�y�NP�Ny���Ny�NP�y���y�y�y���y�y���y�y�wy�wy�wy�wwy�Nww��y���y���N��y�y�Ny�y�y�y�y�y�y�db�`�b�y�y�l�iMnWm�y�y�`�y�aNNy�y�y�xvb�y�y�y�b�y�b��y�y���b�w(b�y�y�y�b�y�b�y�b�w7wFy�M�y�y�M�{�{�y�{�M�y�y�My�b�y�y�b�b�y�y�b�b�p�zq~zzzb�zzzz
zzzzkub�ku��z	b�kub�zz
b�zb�kub�azzb�zzb�azb�gCzz zzb�zzb�b�zb���b�zzzzzwUh4wd��zzh4���݋b�z!kub�z#z�z$z%L�c�z&zTz'z<z(z1z)z*j*b�z+b�b�z,z-z/b�z.b�e�b�z0�0b�z2z;�0z3dz4z5n�nWz6z7z9z8gQv�t�z:azb�v�xvM�z=zQz>z?Mi�z@c�zAL�zBzEL�zCL�zDL��L�zFL�zGzHL�L�zIL�zJL�zKL�zLL�zML�zNL�zOL�zP�:L�zRzSxviMb�l�zUzjzVzgzWzfM�zXp�zYp�zZz[p�z\p�z]p�z^p�z_p�p�z`p�zazbp�zcp�p�zdzep�wsp�cW��zhzib�Zvt��Izkz�zlzmc�dznlzozxMzpzqMzrMMzsztMzuMMzvzwM��Mzyz�zzMz{z�z|MMz}Mz~zMMz�Mz�Mz�q�MMz�z�MMz�Mz�Mz�z�MM��z�z�z�Mz�z�Mq�dMz�z�z�z�Mq�z�Mz�����z���z�z�������Mz�Mz�z�Mz�MMz�Mz��OMz�z�z�c�xvz�K�azb�aNz�z�Mdz�{!z�z�z�z�z�z�z�z�z�z�nWMcWMz�z�z�m�z�L�z�z�z�z�^CNG��,z�z���n�ؒe�Lb�z�z�z�z�Nz�~z�~z�~z�~z�z�~z�~z�~~z�~z�~z�~z��|~Nb�z�z�b�L�z�xvz�b�z�b�b�z�b�Lz�z�z�z�z�z�aNb�cWz�z�z�z�b�z�z�b�bb�v�w���z�z�z�liz�z�z�Mz�Mz��;M�;z�Mz�MMz��;���,b�z�z�b�z�b�z�`�g4z�b�z�y7hz�z�hz�z�h��h��z�{z�z�z�z�b�z�Mp�z�z�NkuxvnWz�z�z�z�db�b�p�z�{c�b�b�xv{{{{{{{{
{{VpM{M{	Aew�w�{{{{{
{Ԉ}�d{Ԉd{{=d{{{d{{v�d{d{{!�d{q~L�{{b��Hb�M{{{{db�b�`�{{ Me�LcW{"{){#{&{${%d{b�c�ak{'{(b�M�akb�{*{,nW{+m�b�{-{.Nb�M{/{0{9{1{2cWNM{3{4{6N{5NQ�{7{8Q�Q�NQ�M�{:M�{;{<{>N{=NN;{?NNOE{A}5{B|I{C{�{D{�{E{�L�{F{G{�L�{H{IL�{J{YL�{KL�{LL�{ML�{N{OL�{PL�{QL�L�{RL�{S{TL�{UL�{VL�L�{W{XL�L�>CL�{ZL�{[{\{`{]L�L�{^{_L�>CL�L�{a{b{u{c{l{dL�{eL�L�{fL�{gL�{h{iL�L�{j{kL�>CL�{mL�L�{nL�{o{pL�L�{qL�{r{sL�L�{tL�>CL�{v{wL�{x{L�{y{zL�{{L�L�{|{}L�L�{~>CL�{�L�L�{�L�{�L�{�L�{�{�L�L�>C{�{�{�L�{�L�L�{�{�L�{�L�L�{�L�{�L�{�L�{�L�{�{�L�{�L�L�{�L�{�L�{�{�L�L�@L�>cL�{�L�{�L�{�L�{�L�{�{�L�{�L�{�L�{�L�L�{�L�{�L�{�L�{�L�{�{�L�{�L�{�L�{�L�L�{�>SL�{�{�{�{�L�{�{�L�{�L�>cL�{�L�{�L�{�L�L�{�{�{�L�{�L�{�L�{�L�{�{�L�{�L�{�L�L�{�{�{�L�{�{�L�{�L�{�L�iL�{�L�{�L�{�L�L�{�L�i{�L�{�L�{�L�{�L�{�L�{�L�{�L�{�L�{�L�L�{�L�{�{�L�{�L�L�iL�{�L�{�{�L�{�L�{�L�{�L�L�{�{�L�L�{�{�L�{�L�L�{�{�L�L�{�L�{�L�{�{�L�{�L�{�L��L�{�|D{�{�{�{�{�{�{�L���L��{�L��{�{�L��{�L�L��{�|A{�|{�|	{�L�{�L�{�L�|L�|L�|L�|L�|L�L�||L�L�||L�_�L�|
L�|L�|L�L�|
L�|>cL�|L�|L�||<||;L�|L�||L�L�||L�|L�L�|||%L�|||!L�|L�|| �L��|"|$L�|#L��L��|&|1|'|,|(|+L�|)|*�L��L��|-|.L��L�|/�|0L��|2|7|3|6L�|4|5�L��L��|8L�L�|9|:�L��B �IL�|=|>|@L�|?�L��L�L�|BL�|C��|EL�L�|F|GL�L�|H�L�|J}|K}|L|�|M|�|N|�|O|R|PM�|QM�Z�M�|S|q|T|n|U|Z|VZ�Z�|WZ�|XZ�|YZ�Z�|[Z�|\Z�Z�|]|^Z�Z�|_|`Z�|a|hZ�|bZ�|cZ�|d|eZ�|fZ�Z�|gZ�Z�|iZ�|jZ�Z�|k|lZ�Z�|mM�Z�Z�|oZ�|pZ�M�|r|�|s|�|t�1�1|u�1|v|w�1�1|x|y�1�1|z|{�1�1|||}�1�1|~|�1|��1[�1M��1|�|�Z�|��1|�|�Z�|�Z�|�Z�|�Z�|�Z�|�Z�|�Z�|�Z�|�Z�|�Z�|�Z��1Z��"|��"|��"Z�|�|�|�|�M�|�|�M�M��"Z�|�M�|�Z�|�Z�|�Z�|�Z�|�Z�|�Z�|�|�Z�Z�|�Z��"|��1|��"|��"�1M�|�|�|�|�M�|�|�|��1M�|�M�|�|�|�|�|�M�M�|�M�Z��"|�M��"|��"|��"�"M��1|�|�Z�Z�|�Z�|�M�Z�|�|��1|�|�M�M�|�M�|�|�|�|�M�|�M�|�M�|�M�|�M�|�M�|�M�|�M�|�M�|�M�|�M��1M�|�M�|�M�|�M�|�M�|�M�|�M�|�M�|�M�|�M�|�M�|�M��1M�|�|�M�|�M��1|�M�M�|��1M�|�|�|�|�|�|�|�N|�M�|�M�M�|��"M�g4`�|�b�t�@&|�|�|�|�|�|�|�g4M|�|�|���M|�M|�M|�MM|�|�MM|�M�dw�|�|�b�akMb�|�c�}}c�}}}
}}b�}}b�}b�e�}`�Դ}	b���b�}}
}b���b�}b�}b�b�}}}yb�~�yb�n�L}}}}xv}xv}xv}xv}xvj�xv}}aNdb�l�M} }!M}"M�}#M�}$M�}%M�}&M�M�}'}(M�M�})}*M�M�}+},M�}-M�}.M�}/M�}0M�M�}1}2M�}3M�}4M�@M�}6�|}7}Md}8d}9d}:};dd}<}=dd}>d}?}@d}Add}B}Cd}Dd}Edd}F}Gdd}H}Id}Jd}Kdd}Ld@}N~*}O}R}P}QdL�`�b�}S}n}T}f`�}U}Vq~q~}W}Xq~q~}Yq~}Zq~}[q~}\}]q~}^q~}_q~q~}`q~}a}bq~}cq~q~}dq~}ew�q~}gg_}h}k}iMM}jcWMM}l}mMMaz}o}�}p}qL�d}rL�}s}�}t}{}u}x}v}wLd{d{M�}y}zb�nWp�c�}|}}}}~nWc�dc�}�}�L�nWc�}�}�}�}�}�w�c�w��}�}�w�c�w�c�}�}�}�}�`�d}�c�}�}�}�}�}�}�c��_r:w�c�}���}�c�w�}�xM}�m�}�}�}��[}�}�}�}��l_��ltkd{b�}�}�}�b�}�b�kub���}�b�Л}�~)}�c�}�}�}�}�}�}�}�}�}�ak}�}�}�}��rvx`�Md}�}�}�}�}�L�akaz}�azazak}�i�`�}�[#ak}�ak}�}�}�}�}�}�v�akp��{}�az�?wak}�tk}�tk�{}�}�}�ak}�ak}�}�}�akwakak}�akcW}�}�ak}�}�}�}�akiMak}�}�e�}�}�ak}�}�ak}�}�akak}�}�akak}�akٛak}�ak}�ak}�ak}�ak}�ٛakake�}�}�}�$$}�}�}�c�}�c�c�}�c�}�c�}��yc�iMy7}�iM}�iMn�iM}�~}�~
}�}�}�}�}�iM}�iMn�iM}�}�}�}�n�e�azak}�$$$$cW}�~	}�iM~iM~iMe�~~e�~e�~e�e�~e�~~e�e�n�cWiM~~~~~
iMMakakiM~iM~iMt�az~~~~~~~~iM~aktk~akMakcWiMiM~~iMaz~azrv~ ~%~!~$cW~"iM~#akiMakiMak~&~'ak~(akak�lc�M�~+`~,~�~-~/d~.iMd~0~9aN~1aN~2~3aNaN~4aN~5aN~6aN~7aN~8aN۱~:~q~;~U~<~G~=~@~>~?Mdt��f~A~F�H~B~CM~D~EM�o�M`�M~H~K~I~JMb�i�aN~L~T�M~M~N~Q~O~Px"x1���~R~Sx@�c�xOc�`�~V~j~W~Z~X~Y`�d�Hb�~[~`~\{
c�~]~^~_x^��Ԧc�~aMd{~b~c~e~d��R7~f~i~g~hw��wcwU�^wU~k~n~l~mcWb�Nb�~o~p{
�HLL�~r~�~s~�~t~�~u~vi�d~whN~x~y~�N~z~{N~|~~}NN~~Q�N~�NN~�~�N~�NN~�Q�NNQ�~�~�~�~�~�~�M~�M�~�~��d~�d�~�����~�L�xl~�~�L�L�~�L�~�L�~�L�~�L�~�L�~�L�~��tL�Lh~�~�~�~�4Pb�M�X~�~�li~�ku~�lib�d~��L�~�~�~�~�~�~�M~�~�~�~�~�M��c�c�~�~�b�Nb�s8~�Nc�L~�MxvM~�~�b�~�b�o�~�~�b�L�d~�h~�~�~�b~�9~�~�9~�9~�99~�9~�~�99xzrX$�~�~�~�~�q~~�m�~�b�~�~�~�~�~�~�~�~�b�Zb�m�~�m��Cd{N~�~�Mb�dp�~�~�~�~�~�~�~�b�d~�Lc�iM~�rf~�b�dd~�~�~�~�~�M�b�e�~�~�azc�~�Ԧc�~�xvNb�~�d~�~�~�b�~�b�~�b�~�b�~�b�x�b�~�~�~�~�b�`�b�`�b�~�~�~�b�~�~�b�p�b�p�~�b�~�b�p�~�MBx�3�x�x�3�
	
3���3�3���3���3���x���dd�+�o�m��Cq�q�o�q�"��su-iM !"Mb�#&e$e%d?~�'*()cWxvliЪ+,c�i�MN.1/0�;g��;g�29354)����;�O678�o���o��:?;=<���o�%�;>�;y���@��A��MCODKEIFdGq�Ho�o�q�J`�xvMb�LMNLiMgCL�PVb�QRL�S`�TLULl�4�WZXY`�b�c��g[\b�M]m;M^_MM�;acg4bLg4d�e�q~fgvhL�L�iL�jL�klL�L�mL�nL�opL�L�qrL�sL�tL�L�uiL�L�wx�L�yL�z{L�|�L�}L�~L�L���L�L��L���L��+L�L����L��L��L���L��L��L�L��+L���L�L���L�L��L���+L����������L��L��L��L��L�L���L��L��L����L��L�L��L�����L��L�L���L��L��L�L���L�L���L�L���L�����L��L���L��L����L��L�L��L���L����L��L��L��L��L�L���L��L��L�L�i���L��L��L���L���L�L���L��L��L�L���L����L�L��L�����L��L�L���L��L��L��L�L���L�L��L��L��L���L��L�L��b�������nW�b�Q��Q�X#��m�b�cWL����c�p�d{��M�c�i�N��w�M��8��&����	�}����}�}�d{����j�
�
��}��d{�������L���d{v�����������d{���������d{�d{d{�[� �#�!�"=d{d{}��$�%d{x�d{dl�'�3�(�+�)d{�*d{}�d{�,�0�-d{�.�/�d{}�d{�1d{�%�2}��jd{�4d{�5d{�6�%�7�d{�9�W�:�K�;�F�<�B�=�?�>d{d{��@�Ax�d{}���C�E�%�Dx��d{�%�Gd{�H�J�Id{�}�d{WM�L�Pd{�Md{�N�O�%�d{�Q�T�Rd{�S}��d{�Ud{�%�Vd{��X�j�Y�`�Z�]�[d{�\WM�\9�^d{�_�%d{��a�d�bd{�cv�}���e�h�f�g}�d{x�}��iv��d{�k�pd{�ld{�m�n�od{}����q�t�rd{�sd{x�d{d{�u}��v�d{�xj��yL�zL�{LnWL�}���~�����������������������M�M��"��M�M�Z�M���Z����"���"M�����������������������������b���l�=ds8��Lt�b���������M�"NL�������M�����`�ߍi�`���ak��Ae��Ae������������z�M��dn�=�����M������azgCgCazd������x�������������b�����Lx�{�b�L�������Lc��������Mg�Maz�����������������My��y����նg&����d��d{��d��d��d��dd��d��d����dd��d���������gn������e�`�e���`���`�e�M��b����M�cWazb���������������������d$�x�b�d����xv��xv����n�`���d��b�b�b�����������b�����lNlx��xvcW����NLlL���iM��g4b�aN�������l���D��2�����L�L��L���L��L�L��L��	�
�
L���L�L���L��L��L�L��L��L���L�L���L����L��L��L��L��L��L���#L��L�� �!L�L��"L���$�*L��%L��&�'L��(L��)L�L���+L�L��,L��-L��.�/L��0L��1L�L��L��3�4L��5L�L��6�7L�L��8L��9�:�?�;L�L��<�=L�L��>L���@L�L��A�BL��CL�L��L��EL��F�G�W�HL��I�RL��JL��K�LL�L��M�NL��OL��P�QL���L�L��S�TL��UL��VL�L���X�`L��YL��Z�[L�L��\�]L��^L��_L��L�L��a�bL�L��cL��d�eL�L��f�g�iL��hL��+�jL�L��kL��+�m��n���o�{�pL�L��q�rL�L��s�tL�L��uL��vL��w�xL��yL��zL�L��+�|���}���~��L��L���L���L���L���L���L���L���iL�L���L�����L���L�L���L���L���L���L��L���L�����L���L���L�L�����L�L���L���L������������L�����������L�L��L���L��L���L����L�����L�����L�L�������c^L�L���L��L��L�����L���L�L���L���L�����L���L���L�L����������������L���L�L���L���L���L�����L�L�����L��L���L���L���L�����L���L���L����L���L�L�����L�L��������������L���L�����L�iL�����������L�L���L���L�����L��L�L�����L���L�L�����L��L���L�L����L�������L�L�����L�L�����L���L�L���L��L���L�����L�L��L���L�������L��L��������
L�����L��L��L��L��L���L��L��L��	L�L���L����
L��L�L��L���L��L�L���L��L����L�L��L���L����L��L�L��L�i� �I�!�-�"�&�#L��$L�L��%L���'L��(L��)i�*L��+L��,L�L���.L��/�?L��0�1�7L��2�3L�L��4�5L��6L�L�i�8L�L��9L��:L��;L��<�=L��>L��L��@�B�AL�L���CL�L��D�EL��FL��GL��HL�L�ob�J�Z�K�T�L�PL��ML��N�OL�L��L��Q�RL�L��SL��L��U�VL��W�XL��L��YL���[�fL��\�]�cL��^L��_L��`L��aL��b�L��dL��eL�L��L��g�h�y�i�pL��jL��k�lL�L��m�n�oL��L�i�q�v�rL�L��sL��tL��uL���w��xL�L���zL��{L��|L�L��}�~L�L���L�����������nWMm�������m�����cW����cW�fcWcW����cWycW`�q~��������nWb�g4L�����kub�M��������������|ddq~����cWt�����xv����xvxv��xv��xv��xv��xv����xv��xvxv����xv��xv��xvxv��xv@��akak����ak��ak��ak��ak��akak����ak��akak����akak��ak��ٛak��������t����H���H���H�����H���H���H�HQg4N����������������m�g4Md]������b�`�b�i�M�����������b�������������Mb�c�N����Nc�Mb���������aNc�b��,����c�b�c�`�d{d����c�Li�N����b�������Mdg4aN����b���b�M����`�{
`�d�������������������w�q~b�aN����M�p�c�d{������b���l�����Lo�Mxvq~c���
b����iMkuku�ku�	�
��ku�skuy"kut��q~�q~�{
q~�����l��j�{
���ak�ak�akak�ak�y0y@��&��"�NN� �!NNQ��#N�$NN�%Q�N�'�FN�(�)�*N;N�+�-Q��,N;N�.�7�/�2�0�1OqO�[�OT�3�4N;N�5�6NQ�P�yO�8�?�9�<�:�;P�L[�N+�=�>^CU\��S�@�C�A�B��P}[�X#�D�E]R@�Vp�GN�H�Z�I�KN�JNQ��L�R�M�ON�N_�W��P�QR�TFQ�OcN�S�T�W�U�VN��YU��X�Y_�OEN���[�]N�\NQ��^�d�_�aN�`_�W��b�cR�TFQ�OcN�e�f�i�g�hN��YU��j�k_�OEN���m�p�nb�nW�oM�nW�q�r���s���t���uc��v��wc��xc��yc��zc��{c��|c��}c��~c�g�c�cv����c���c���c���c���c���c���c�cvc���c�c�g�c�������c����y^c�ym������������c���c�������cv����c�����ymc�y|��g���������_]�_]c���c�y^��������p�{
c���c�aN������������Mdb�L�����L�����c�c���c�`�LL���������j*dt�b�����b�My7Mp�����p���p�p���p�����p���p���p�p�����p���p���p�p���p�����p���p�p���p���@p�������L�L���L���L�����L�L���L���L�����L�L���L�����L���L���L���L�L�����L�L���L���L�@g_��������������������R���dm�iMj*����nWde���������p�b���yp���������p���yb�b���p�b�p�����p�b�p���������kub�b�{
���iM��M��Mc�n�b�������MdnWb���g4M�	rf�
���
�<�iM�8OiM���8]����8O����Lxv=��m��{
li`�c���]��8����`�m�L�c�� �!��b��"�.�#�)�$�%c�b��&Q��'�(g42g4m�*�+y7rXc��,rX�-rXb��/�2�0�1le�nWs��3�5��4b�x�e��6ak�7r�Y�9�J�:�@�;�=�<c�c�y��>�?c�M�b�c��A�G�B�Ci�c�b��D�EMM�FMg��H�INL�b�nW�K�U�L�O�M�Nd{c�Md{�P�Qb�nWnW�R�S�xm�T�Mm�V�Z�W�XdaN�Yc�N`��[�\Nb�b�c��^���_�u�`�fcW�am��bm��cm��dm��em�pZ�g�ib��hb�iM�jb��k�q�l�o�m�nOTQ�NOT�pW�N[��rQ��s�tOTQ�Q�N�v���w���x�ym�M�d�z�{�~�|�}H:ؒli{����b��X�B�������(L�b�������q~��y�qpq~��y�y���������p�dg_d]��ddb�������j���������M�������L���L���L�����L��L�L���L�����L���L�L��c�������d��e�`���������e�cy�e�����ږe�e�`���b���������������azazakaz��azak��akak��azak���=���%����������{���
��������������������c�b�������dj*c�d��d����dd����d��dd����d��ddo�����Mb�`�M���������xvNdd{����g4aNc�b��������������Ib�b�c�������������jVq�lijV����N;OEQ�OTc�b���������b�cW��Ld{M����M�Mc�`�������������d{��d{l��d{c�b�������b�d{c�����y7d{d{b�����������Mc��c�d{d��Mazd{nW��
��	�c�c��N|�Mak��}�b�c�M���M��,�� ����nW���ն����ڈMc����cW�{�X/tk����lb��FL�g	�=�!�&�"�#d{b��$`�c��%L�b��'�*`��(�)`�cWl�+t�j*M�-�9�.�4�/�0m�d{�1d{�2�3dc�y�y��5�6d{c��7Lb��8cWL��:�?�;�<c�v��=�>ML�Mb��@�L�AM�B�KN�C�Ddd�E�Fd�Gd�Hdd�I�Jddb�gCNc�d{�N�g�O�`�P�]�Q�\�Rxv�Sd{�Td{�Ud{�Vd{d{�W�Xd{d{�Y�Zd{�[d{}�d{aNb��^�_c�b�Lak�a�d�b�cc�d{b�d{�e�fb��c�i��h�o�i�m�j�l�kc�N^Cakd{�nb�c�b��p�ub��q�rb��s�t}�d{�j}��v�wb�Ml�x�y�z�y�zz�|��}���~�����������������Nb�L��iMj*����N��M��b�N��������b�c�p�M���lM��M�p�������������azd{aNM�����d{M��Ml��l��l����l������c�cWd{����d{b�L�L��������������Mb�M�����d{MMd{��������d{{
dg_����d{dlaN��������L���L��H����Mc�d���cW��������b�`�Md����b�c�dM��������������������L��Hd��}�d{����N��c�cWc�`���������c�cW��Mg4e�����MaNc�M����������������z w7b�b�b�c���b�d{ty����������L�m�c�dty����b�M�c�b�������������c���cWc�������g_Naz��b���gQ��������L�c�b�p�����{
NMd������������Nb�c�d����dlkb�����b�p��,��g4d{b��-��B��$�����	��
lNd{��
nWd{c�l����b�cWb�z.��akc�lb�������M�L�{
c�����g4c�lc���!d� d{d�"�#c�aNb�l�%�3�&�,�'�)N�(d{M�*�+Ld{M�d�-�0�.�/NMlb��1�2t�d{c�g4�4�<�5�9�6�7d{lb��8L{}�:�;dxvc�z=�=�@�>�?Mb�g4N�Ab�d{M�C�a�D�R�E�K�F�Hb��Ge�c��I�Jb�c�dcW�L�O�M�Nln�b�d�P�Qt�M�d{c��S�Z�T�W�U�VN`�L�M�X�YMb�d{i��[�^�\�]{
b�lM�_�`d{McWc��b�r�c�j�d�g�e�fMllg4�h�iNxvb�L��k�n�l�mi�b�M�d{�o�q�pdg4ldM��s�z�t�w�u�vM�kudd{�x�yc�NNcW�{�}d�|d{l��~�d{c�l�h�������������������������c�d{������b�MnWX/����`�g4NM��������b�hxvl����c�d{c�d{������������`�����ddb�b�����d{d{b�����d{��Nc�����q~Md{ak����������������L��d����dd{��d{����}�lld����d{��NaN����d{b�i����MaNd����������dd{j�����Lc�N����o�b�o���������akd{��b���aNaNzM��b�M�b���������������������m�������d{L�L�d{b�e�����d{b�d{d��������Mg&M���e�y7����d{��b���b�����`���d{d{b�������������b�#�Nb�����d{p�c�M��������b�`�b�g_������xvLb����������������d{b�L�M����d{c�c�b���������b�L�d{b�b���d{b�������b�`�lb��d{p�b����	�
c�Mi�d{��
@laNu��������O��1��"������n�d{dM��d{`�cWq~����cWMd{cW� �!cWMb�c��#�*�$�'�%�&c�lidM��(�)c�dM�kX�+�.�,�-Mg4g_N�/�0c�ML�d{�2�@�3�9�4�7�5�6db�d{d�8b�d{L�:�=�;�<MLaNd�>�?L�g4b�ty�A�H�B�E�C�DLc�d{L��F�Gn�c�b�c��I�L�J�Kc�e�cW|��M�Ndc�t�ku�P�m�Q�^�R�X�S�V�T�Uc�Lh�db��W`�b��Y�[cW�Zc�b��\�]c��RdcW�_�f�`�c�a�bc�Mdd{�d�e`�b�dN�g�j�h�iL�c�tym��k�lM�g4c�li�n�{�o�v�p�s�q�rn�c�b�M�t�uc�ku@N�w�z�x�yb�L�NMhc��|���}���~�n�dd�R����d{Mc�ak��������p�c�L��R����c�L�d]b�������������������������g4`�b�q~����akm;�HM���������d�aNd����d{`�g4d{������������aNc�c�`�����g4b�c�N��������N;b�cWb�����m�d`�L�����������������lc�ld����M�o�Vp`�����aNN����dcWazb�������������nWc�Nc�����Maktyt���������b�dc�d����`�dn�L���������������������dM�c�g4d��q~L���������NnWM�p�����aN`�l�z����������b�b�c�b���n�b����������,c�b�������e�b�c�M�����������������db�c�aN����dcWlxb���������c�d{Nd{����`�aNdty������������g4Mdg_����i�c�c�d{������c�d{dt���aNde�M�����D��&���	��
�
��L�Maklx��b�g4@t�����diMb�L���c�d{b�g_������b�{
iMM��kudc�n�� �#�!�"Mc�b�iM�$�%d{�iMj��'�6�(�/�)�,�*�+�,d{b�d{�-�.`�d{hy7�0�3�1�2Nz[ziL��4�5�,d{b�zx�7�>�8�;�9�:LlX#c��<�=q~`�e�li�?�A�@N�Xc��B�Cg4n�b�nW�E�c�F�U�G�N�H�K�I�JM�dcWb��L�MM�`�g4M�O�R�P�Qq~c�i�d�S�TcW�,M�,�V�]�W�Z�X�Yb�dh4� �[�\݋cWm�x��^�a�_�`dc�Ld{d{�b`�c��d�{�e�l�f�i�g�ht�c�cW`��j�k`�c�L@�m�x�n�w�oc�l�pl�ql�rl�sl�tl�u�vll@}�t��y�zL��Mc��|���}���~��IaNb�b�����tyc��;`���������LaNdL����j�McWc�������������������������akMMn�����c��>|�N������d{Ml�c���n�b�������������d{g4c�l�����p�b�akM��������L�b�l�q~����b�MdM����������������l�n�dli����xvdliN��������gnd`�b�����liNb�g4������������c�Nb�L�M��azM����N��cWt�����d{�aNc���������������������dnWd{nWb���cWb���������g4n�`�c�����@b�Nxv������������aNv�l`�����Mi�dz���������laNcWN����lL�d{`�����������������b�dhN����cWb�L|���������b�L�L�n�����NakM�d������������c�dL�l����b�d{c�d������`�Mc�b��L�Moh��Z�����U��)���	�
d{�
��Nt�c�b���c��d{b���Nd{����=d{d{z��b�d{M��"����m�c��c�d{�d{}�� �!d{b�Mc��#�&�$�%ldc�d�'�(d{Lld{�*�C�+�:�,�1�-�0`��.�/n�l�=�L�2�9�3�6�4�5cWli�q��7�8~�b�b�~�M�d{�;�=b��<Lc��>�B�?d{�@�An�L�m�`�c�az�D�M�E�H�F�Gp��Xd{L��I�J`��!�F�K�L}�z�n!�N�Pb��Od{c��Q�T�RL�Si#i#dd{li�V�}�W�i�X�c�Y�^�Z�[b�`��\m�b��]kub��_�`c�xv�aj��bb�b�N�d�g�e�fxvd{b�c�b��hcWM��j�s�k�n�l�mid{b�l�o�rl�pb��qb�lic�xv�t�z�u�vj*d�wb��x�y`�ML�`��{�|d$b�c�N�~�������������dL{
��b�gC����d{cWc�d{��������MN��ak����d{aNazg4����b�d{Ocd{������������l������hLMN��b�������nW��az��azaz����az��az��azaz��az���^az����b���cWkukul��������d{b�d{b�d{b����������������������b�d{����d{c�����c�c���c�����c�c�����c���c�<�c�b���b�M��������g_b�db�����dxv=�li������������n�b�d{b�����nWb�lb�������d{b�c�����p�g4cWc�������������d{��Mb�����d{b�c�M���������d{b�`�c�����c�b�b�L������������c�b���b����1���1��w*������w*��w*b�w*��w*��w*��w*��w*w*��gQw*��b���d{����Nh�N`��������Mc���Mz�b���d{��e��e�t�b���*�����	��
�b�d{b�d{�
�c�kud{���n�l�azcW����L�b�M�b���d{c�Md{�� ����b�m�MNb��d{L��!�'�"�#nWd�$d�%�&c�b�dd{�(�)d{nW`�b��+�J�,�D�-�/�.d{dE�0�C�1N�2d{�3�;d{�4d{�5�6d{�7d{�8d{�9d{d{�:}�d{�<d{d{�=d{�>d{�?�@d{d{�A�Bd{}�d{b�c��E�H�F�GM�d{b���b��IL�b��K�R�L�Mb�d�N�Ob�dc��P�Qc�`�c��S�W�Tb��Udb��Vb�ku�X�Yb�c�c�b��[���\���]���^�z�_�q�`�e�a�bM�dd�c�dd{d{\b��f�gc��hcWcW�i�jcW�kcW�lcW�mcW�ncWcW�o�pcW4PcW�r�u�s�tdd{Md�v�y�w{
�xi#di#b�d{�{���|��}�~m�b�lid{������d{����Mdi�xvc�d{b�������d{L�d{L����������������b�d{b�c�b���c�ak��������c�b�dM����b���x���ekx�b�h��������������d{��g4z�g4b�c�����Md{g4ak����������b�s���s�s�b�������b�M`�b���������������������b�Lb�d����d{c�b�d��������Nd��b�����xvc�b�L������Ib�dM�������������d{��c�d����`�b�c�xv��������Maz��Mb�q�����tyL�b�������dMLM���������������hb�h����b�cW`�������L�=�d{nW����b���b�db���nWb���������������hN��Nxvb�d{����b�Nd{������L_�c�Q���������b�������Mb�ըnW-�b�����b�c�Mb��������U���'���������M�gnd{d{c��b�g4�L�cW�	�b��
z�b���cW�
�c��c��c��c�c��c���c�c��<�c��d{Md������d{nWlc�l�ld� �#�!�"ML�cWb��$�&b��%b�Mdb��(�D�)�2�*�/�+�,Mb��-�.rX `�az�0�1b�`�yml�3�?�4�5Nl�6d�7g_�8g_g_�9�:g_g_�;�<g_g_�=�>g_g_��@�Bb��Ac�xve��CN`��E�L�F�I�G�Hc�db�g4�J�KcWKJc�d{�M�Q�N�P�Oc�q~g4b�M�R�Tb��Sdld{b��V�y�W�f�X�_�Y�\�Z�[`�b�lit��]�^Naki�d�`�c�a�b� b�b�az�d�edc�L�l�g�p�h�l�i�kl�jNd]aNd{�m�o�n@[�Nc�M��q�u�r�t�sc�cWiMc�M�v�wdd{�xt�dq��z���{���|��}�~g4Lb�L�����d{g4g4l����������c��
i�b�d����b�d{fb�������������g4d{����akL�aN`���g4NM����b���c�N����b�g_d{@����������������������b���aN�i�������c�kub�dc���������d��iMazL��,b����Ib�����������MaN`�b�d{��������c�Mc�d{������b�M��d{{
����������������c�d{c�d����db�b���b�p�������b�M�b�����d{`���dBfd��������������b�b�b�����nWg4l��l��l��lz�����d{��b�b�b�M��������M�b���dz�aN����ld{lc��������������������d~b�g4��b�b�iM��������lib�c�`�����Mlic�nW������������ld��c�cW4P����c�b�������ڈg&�������L�cWb��Nb�c��xvak����
��	��Md{nWazc��
��MiMMcW����L�d{�aNgQgC��l�^MnW������b�nWaNxv��Nxvt�b���!�� `�c�d{b��"�$�#dc�d{b�L��&���'���(�B�)�E�*���+�h�,�K�-�<�.�5�/�2�0�1i�MM�M�3�4t�de�g4�6�9�7�8nWL�c�M�:�;g_d`�l��=�D�>�A�?�@i�ddi��B�Cb�i�|�b��E�H�F�GnWd{l�n��I�JMb�cWd�L�Y�M�T�N�Q�O�Pc�b�azb��R�Sq~g_db��U�W�Vb�L�j��Xdc�d�Z�a�[�^�\�]dNc�g_�_�`d$MnWc��b�e�c�dg4t�dN�f�gN`�Nak�i���j���k�r�l�o�m�ndd{MN�p�qdv�c�aN�s���t�uc�wd�v�w���xl�yl�zl�{l�|�~l�}ll�lll��������l��l��������lll��llll����l��ll��lll����ll��l��l��ll����hNc�cW������������g4M�cWd����b�L�`�N��������n�{
laz����Mc�d{M����������������y7d{g4o������,n�L�M���������azMc�d����liazNM������������xv�,Md{����d{M`�b���������lb�Ml����Mn�b�N���������������������cW�,`�����b�c�b�c���������b��,d{`�����`�MlaN������������j*d{M`�����nWb�c��,��������`�d{d{d��dt�aN����������������db�`�iM����p�iMb�N��������n�g4Mb�����L�cWM�g	��������c�l����cWL�c�b���������`�b�c�b����M�c�c�d��(������d�d{`���N�	`��
�`��`�`��
�`��`��`�z�`�d{c�����n�g4d�H��c�b�`�L���!������L�b�g_�� dL�L�l�"�%�#�$b�g4`�M�&�'g_M�L�l�)�8�*�2�+�.�,�-L�n�L�cW�/�1�0N{
��d{�3�5�4lb����6�7azL�b�M�9�?�:�<�;MazN�=�>dazazc��@�Bb��Ac�N�C�DMb�b����F���G���H�g�I�X�J�Q�K�N�L�MM�n�g4cW�O�P�,lazN�R�U�S�Takb�K�d{�V�WQ�NNL��Y�`�Z�]�[�\tyb�n�L��^�_c�NNl�a�d�b�cd{L�dc��e�fcWp�nW{�h�w�i�p�j�m�k�l�,j�ML��n�od{MhaN�q�t�r�sc�cWd@�u�vL�lg4t��x��y�|�z�{c�n�c�d{�}�~dcWb�d{��������c�L�c�b���c�Ml��������������������d{b�`�b�����Mb�AL���������b�b�i�g4����b�XL�N������������b�dM{(����cWb�Maz��������nWg4Mb�����dc�b�c�����������������iM`�cWM����MxvlL�����������c���az��azaz����azazgQi�L�����LlNcW������������g4`�q~c�����c�L�d{b�����d��b�l����b�Md{b��������������������b���b�j*����n�g_$$@������d{�,N����b�c�M`�������������Mn�akb�����b�c�n�c�����c���L�c�����aNd{cWd����������������diMi�������Nd{aN�,��������NcWcWl�����Ht�L�c�������������d{c�MiM����c�n�H:iM�����iMdiMM��n�laNL���$�����	��
�Nd{`�l�
�M@lc����d{Md{��cWj�d{n�������b�j�d{d��e�Nd{j���!�� �,Mb�g4�"�#@c�c�M�%�3�&�,�'�*�(�)j���NL��+��g�L��-�0�.�/M�b�Ld{�1�2g_n�@d{�4�;�5�8�6�7M�liML�9�:ML�Mj��<�?�=�>rfd{dn��@�AMt�dl�C���D�q�E�\�F�L�G�Ib��Hd{c��J�Kxvd{b�d{�M�Od{�Nhb��P�Qc�b��RM�aN�SaN�T�UaN�VaNaN�WaN�XaN�Y�ZaN�[aNaNa1�]�g�^�d�_�cM�`�a�b�~��cW�~dc��e�fazb�akb��h�k�i�jb�Mb�d{�l�mb�d{j*�n�o�pM�NLN�r���s���t�w�u�vc�b��bg4�x�~�y�|�z�{{7d{{F�.�}b�b�b��b�����b�d{Tl��������b���tk��aktkb�ku����b�j�b�ak����b�������t�`�b�g4��������db�i�c�c���d{b�����������������������b�����McWb�Mdd{������b���b���b���b���b���b���b���b���b���b�b�b���b�t�b���������g4b�db���b�`�b�������������L�d{Nb�����b�������`�Mj*l��b�����=d{d{=����������c�� ����� ��� ��� � ����� �� b�ak������d{����`�b�Md$d{b�����������������b�d{�Cb�b���M`���������NL�M�b�����d{b�b�ak������������b�g4��d{`������b�t�b�c���������c�b�akb�����g4liNc����	������p���3�����������������rfy7c�d������c�db�����b�c�M�L���MakL�{
���	��
�iMakML��
�N+L�d{l����n�c�L�N+��aNcWc��,��%������~�L�d{l��aNak�Vl� �"d�!NcW�#�$�,Ng4b��&�,�'�*�(�)aN`�b�`��+d`�`��-�0�.�/d{b�L�@�1�2b��lm��4�R�5�C�6�=�7�:�8�9b�`�lt��;�<b�{
lh�>�@`��?lcW�A�B`�cWL�@�D�K�E�H�F�Gd{b���d�I�Jc�dc�d�L�O�M�N����McW�P�QnWMMd�S�a�T�[�U�X�V�W�bb�L��,�Y�ZelK���\�_�]�^NMd{c�`lMcW�b�i�c�f�d�ej�d`�M�g�hL�cWb�L��j�m�k�l{rdVpe�n�o��d{c�c��q���r���s���t�{�u�x�v�wL�aNdM�y�zEkun�c��|��}�~g4b�MN����dc�c�l������������de�b�L�����lc�Ab���������xdd{c�����dL�b�d������������`���ld����t�c�b�`���������c�{�c�b�����g4d{d{L������������Nd{c�b�������dMN��������Ng_dg4��lM�`���������������������ldd{L����cWb�b�n���������cWb�L�d{����@L�dM�������������n�M�ML�����Mj*d{N��������)�b�b�`�����b�dNc�����������������aNj*b�l����M���lx��lx������lx��lx��lx��lx ������lx��lx��lx lx��lx��lxlx��lx{r`�l��������@akcWak����L�NL�b���������������`�c�����m���m���m���m���m�m�����m�dm������m���X������.`�q~{����iM�.�����K��%���	��
�
��M�c�cWaz��cWb�g4`�����Mq~xvl��akNb�L�������ldt�cWd�db���"� �!cWL�L�d�#�$Me�L���&�5�'�.�(�+�)�*cWd{le��,�-dNc����/�2�0�1q~L�Ml��3�4b�MLnW�6�E�7�B�8�9dԴ�:b��;`�`��<�=`��>`�`��?`��@`��Ae�`��C�Dt�Ng4l�F�I�G�Hdlc�d{d�Jd{M�L�i�M�[�N�U�O�R�P�Qc�tynWb��S�TdNaNc��V�X�WLN@�Y�Zlg4NL��\�c�]�`�^�_n�azL�iM�a�b�,rIdnb��d�g�e�fc�n�L�d�hNd{N�j�y�k�r�l�o�m�nc�p�dږ�p�qcWlL�d�s�v�t�ub�m�m�c��w�xc�b�MN�z���{�~�|�}Nb�b�N���d�*@d{����L��xvc�����c�b�l�nW������������������������cW`�b�n�����g4cWNl������b�cWc�����Mb�b�xv������������b�L�L�n�����L�d{q~iM��������ak`�d{b�����c�iMb�cW����������������xvp�c�b�����MNb�iM����b���c�cW����iM}�azd{������������b�dNM�����L�`�@M��������b�L�b�d{����lazNb�����������������������c�cWN����b�n�dM��������wNcWnW����g4t�c�d������������Md{`�@����M����@��@��@��@@����@@��@{�azd����MN����Mdg4L�����������������nWMc�cW����t�L�Xd{��������d�Ig4d��c�L�@�����������b�n�L�b���b�c�M�ku����+�b�M�m���dc�c�c��
�v��J��%�
�����c�Mdl��d{��aN�aNaN��aN�aN�aN�aNaN�aN��faNc�d{��"c�� �!Nb�ku�#�$b�c�b�`��&�<�'�.�(�+�)b�d�*q�m�`��,b��-d$b��/�;�0d{�1�2b�b�b��3b��4b��5�6b�b��7�8b�b��9�:b�b�b�M�d�=�@�>�?b�`��,az�A�F�B�D�CL�q~L��Eb�x�b�b��G�H�I{�d{{�d�K�g�L�]�M�Z�N�Y�Od{b��P�Qb�b��R�Sb��Tb��Ub��Vb�b��W�Xb�b�b�d{b��[�\b�N�Hxv�^�d�_�`d{p�cW�a�b�cb�i�kub��e�fd{=b�cW�h�o�i�l�j�kxvb�`�b��m�nd{b�azb��p�s�q�rb�Md{e��t�ub�d{d{d�w���x���y��z�}�{�|c�Nd{xvb��~d{b���������c�b�b�c�����Ld{d{b�������������Ld{db�����c���b���M�Nb�M���������kudc�b�����b�db�d{����������������b�p���b�ku����ku��ku��ku��kuku����ku��ku��ku� ku����d{NakN������b�aNM����ЛMMb�����������b�b�������b�~�~�����~�~���~�����~���~�~�����~�b�~�b���akb���������b�c�b�c�����g4b�b�b����q�����������F���
��������������������M�m�m�b�����iMc�i�M���������g4Mg_L�����LdaNL�������������c�`�ML�����g_`�d{d��������M�c�L�l����d{@c�L����������������M�dNd����cW��`�L���������cWg_ML�d��b�`�������b���b�c���lb�n�M����i�akL�e���	q~d{M�L��'���
�����c�M�b�L�b��q~@����b�Ln�l��t�Llp���!����lb�McWcW� l�n��"�$M�#dc��%�&g4Md{ak�(�7�)�0�*�-�+�,b�`�b�c��.�/LaNkuaN�1�4�2�3�Oazd{L��5�6dn�L�M��8�?�9�<�:�;@Nb�c��=�>MtyaNc��@�C�A�BL�b�Lb��D�Ec�c�b�`��G���H�f�I�X�J�Q�K�N�L�Mdb�b�N�O�PNd{��d{�R�U�S�Tp�MgCN�V�WL�NNM�Y�`�Z�]�[�\lg_j�b��^�_c�c�q~l�a�d�b�cl�X�X@l�edM�g�v�h�o�i�l�j�kc�d{Nli�m�nb�d{`�b��p�s�q�rxvazc�iM�t�un�d{akb��w�~�x�{�y�zd{lkuxv�|�}t�MaNM�������N`��b������Hkuazc���������������������c�Mc�L�����d{db�l��������Nc�c�L�����c�b�t�^C������������b�L�Lb�����b�c�c�v�������Ld@����ML�`�c�����������������c�laNl����L�cWg4d{��������d{lL�d����i�d{g_c�������������b�i��+d����d{dMg4��������dg4��d{az������azt�mgQ����`�akL|������������������������c�b�b��b���d{����{
��{
��{
��{
��{
{
��{
����{
{
{���������b�c�b���Ld����c�dlN������������j�b�dg4����c�b�L�b���������c���l�`�xvg4����Nd{d{b����������������iMd{d{b�����{�b���b��rX�������rXlMd��i�d{n�L���
����xvc�d{b��	b�c�az����
d{L�p��L�c���g�n��n�L{���Y��3��$������cWb�ld��c�aNdaz��!b�� ��az�"�#L�dc�b��%�,�&�)�'�(�CdNc��*�+akgnc�cW�-�0�.�/c�m�L�t��1�2b�hc�b��4�B�5�<�6�9�7�8azc�azb��:�;L�dd{w*�=�@�>�?L�q~cWc��AdL�g4�C�R�D�O�E�Nd�F�GiM�HiM�IiMiM�JiM�KiM�LiM�MiM{�b�d{�P�Qb�M�c�d{�S�V�T�Ub�b�M�l�W�XdM�b�M�Z���[�j�\�c�]�`�^�_dc�b�`��a�bb�d{c�d�d�g�e�fNaNb�l�h�ic�akd~�k�r�l�o�m�nc�M�Nq��p�qt�L�d@�s�~�t�uMc�c��vL��wL��xL��yL��zL��{L��|L��}�:L��n�b�c�����������������c�g4lb�����c�g4dM��������db�L�N����VpMc�Vp������������l�iMc�t�����b�Me�cW��������p�N;Q�d����p�Nd{n�������������������������lhb�d{����d{������m�c�t�db�b���������d{������d{N��McW����cWcW��cW��cW����cWcW��|cWb�d{����d{m���c�������LMc�������������dc�d{������c�`�����akb�d{b���������d{b�d{b�b�����N}�d{������������b�������b���b�x���b�~�b�����b�N��c�K�v����������Fc��F��{
��{
cW��������b���|x�h��M�|nWxv������������d{c�c�M�����c�d{c�b���������`�b�xvg�����c�b�b�l���!����������c�b�db���l���MLc�b�b��	�
�}�d{z���
�b��Mxv��b�d{b��d{}�������b�g4b�N��d{q~b�t���b��c�N�� c�Lc�b��"�:�#�*�$�'�%�&c�j�b��^�(�)d{b�aNb��+�-b��,d{p��.�9b��/b��0b��1�2b�b��3�4b�b��5b��6�7b��8b�b��c�b��;�L�<�>�=b�b�d{�?�Kc��@�A�Bg&gg&�C�D�y�E�y�y�F�y�G�H�y�y�I�y�Jn��yM�d{�M�o�N�O� b�|+�P�Q�f�R�Z�Sq~q~�Tq~�U�Vq~�Wq~q~�X�Yq~q~w��[q~�\q~q~�]�^�b�_q~q~�`q~�aq~w�q~�c�dq~�eq~w�q~q~�gq~�h�iq~q~�j�kq~�lq~q~�mq~�nw�q~xv�pb�d{�r��s�k�t���u���v���w���x��y�|�z�{c�b�g4d{�}�~`�b�NaN��������liLdb�����b�ll`�������������b�c�c�M�����liN`�cW����M��lL�����Nq~Nb�����������������c�b�dN����dNb�c���������cWb�Mm�����c�i�b�M�������������ldc�L�����MNc�n���������db�M�lid{��cWl��������������������cWc�Ld����g_b�LN��������lc�dl����b�cWn�iM��������e���N`������L�lb���������Ng4*rd{b���`�|�����������������ldM�cW����cWd{g_c���������d{c�d{n�����t�b�|�g_������������b�iMliM����L�M�Mn���������b�lxvN����b�d*�M���/������������������cWdc�t�����Mb�db���������g_b�|��X���d{M`�nW��	����`�b�b�N��dlM�d{�
�
��b�Ng_b���n�e�Ld�� ������Md{cWb���c�nWb�l����`�b�b�t���q~l�d{M�!�(�"�%�#�$t�c�Mg4�&�'Mb�c�l�)�,�*�+t�db����-�.b�aktyg_�0�M�1�?�2�9�3�6�4�5M�i�n�rf�7�8nWL�|:M�:�<�;g�L�xv�=�>d{c�e�`��@�G�A�D�B�Ct�lig4b��E�FMn�Mb��H�J�Ib���nW�K�Lb�n�c�e��N�]�O�V�P�S�Q�Ri�c�d{M��T�Ude�d{N�W�Z�X�Ylb�Md{�[�\t�j�c�g4�^�e�_�b�`�an�p�c�iM�c�ddL�L�q~�f�i�g�hL�|IЛq~d{�jM�d{�l���m���n�{�o�v�p�s�q�rb�xvj��^�t�ud�Xdd{�w�yb��xm�t��zb�b�c��|���}���~�`�b�b���|Xe�������b�cW��cW��cW��cW��cW����cW��cWcW��4PcWc�xv��������b�aN|+M����b�dhm�����������������d{��p�����p���p���p���p�p�����p���p�p�|h��b�b�N����Nd{Ll��������VpcWd{L����c�b����������������N��b�q�g4b�����d�b�j���������j�c���cW���8����dc�d{c����������������������HnWb�{
����b�g4b�aN��������c�L�xvN����Md{b�c�������������Nb�b�d{����Mn�c�b���������b�d{b�d����t�aNb�}�����������������cWb�aNb�����b�t�daN��������azd{xvc�����{
d{�H��z�@������������L�dhN������d{iM�8`�p���������iMb�L�b�����b�dd{L���A��"��������d{{
o�d{�	�
d{akc�b���d{�
�d��d{L���d{xvc�d{������d{c�c�d{��d{cWkug4����dc�j�c�� �!d{c�b�c��#�3�$�,�%�*�&�)b��'�(��M��d{c�c��+d{b��-�0�.�/c�b�d{}��1�2dd{c�p��4�;�5�8�6�7c�iMt�iM�9�:b�c�b�}��<�?�=�>c�b�db��@d{b�d{�B���C���D�c�E�T�F�M�G�J�H�Ic�b�dc��K�Lc�L�c�L�N�Q�O�Pc�i�M`��R�S`�c�c�b��U�\�V�Y�W�Xo�cWb��^�Z�[dg_L�c��]�`�^�_�,b�n�p��a�bb��,d{c��d�s�e�l�f�i�g�hb�c�@L��j�knWb�g4n��m�p�n�oL�dt�n��q�rb�lMM��t�{�u�x�v�wb�n�lM��y�zc�j*`�c��|��}�~Nc�Md{����`�@L�b���������������������c��,akc�����c�j�b�L���������c�L�xvb�����L�d{c�cW������������n�c�hc�����L�aNd{i���������d{b�b�g4����M�b�d{`�����������������dd{b�d����e�g4d�j��������t�b�`�p�b���d{M������������d{n�dn�����iMlb�N��������b�cWd{�l����NL�dd{������������������������b�dc�L���c�cW����������d{b�b�L�����Ndc�L������������b�d@g4����ld{L�d��������d{b�cW`�����lc�lL�����������������c�� {
m�����e�m�n�c���������c�;b�c�����Nj�n�c�������������b�d{b�cW����d{b�n�b���������c�lcWiM����b�n�laz������	����nWn�d{g_��c�n�dH:�
�
��lg4rfM��dd{LL�������e�j�t�d��c�nWd{y7����d{b�MM���|vc�q~d{� �.�!�'�"�%�#�$b�c�b�d{d�&n�M��(�+�)�*M�Nd{aN�,�-,|�n�b��/�6�0�3�1�2L�c�b�l��4�5b�j*b�d�7�:�8�9g4�,c�b��;�<b�L�b�M�>��?���@�"�A��B���C��D�c�E�T�F�L�G�J�H�I{
e�p�L�d{�Km�b��M�P�N�Od{b�iMe��Q�R�^Mc��Sb�b��U�\�V�Xb��WM�c��Y�[�Zj��=�d{c��]�`�^�_xvlb�N�a�bc�xvc�b��d�r�e�l�f�i�g�hxvg4d{g4�j�k`�d{b�e��m�ob��nd{b��p�qp�xvMcW�s�z�t�w�u�vd{b�xvb��x�yc�b�MiM�{�}�|c�d{i��~b�c�N��������������������c�b�b�lib�����c�rX^C����c���L�L����Mb�d{d������������p�L���b�g4d����b���c�d{n�aN��������iMd{c�����b���b�b�����b���b�b�����b�b���@b�����c�Ml�M��������������c�c�b�d{b���������b�aN��c��l����c�b�c�d{������������c�dp�L�b���c�n�������M�LN����N{
d{b�����������������������d{����g4L�d]dc���l�����Mb���c�b���kub�����������d{azlb�d{����d{iMd{nW����������b�c�p���d{d{xv��������n�b�lid{����b�d{d{����b�b�e��������������d{xvc�����d{b���c�j*����j*��j*��j*��j*j*����j*��j*j*��j*|+d{����c�c�`���
����b�d{d{t�b���d{��	b�`�wF������
b��}�d{}�d{b���c�`�azb������X��>��'�� �����llc�d{c����,b�hb��!�$�"�#c�L�|�c��%�&Mc�L�b��(�/�)�,�*�+Nd{M�c��-�.M�d{d{d�0�2�1lb�c��3b��4�5�n!�6d{�7���8��9�:��;���<�=��y��?�K�@�H�A�Bb�c��C�E�D`�`�b��F�G`�n�c�q~�I�Jb�Mdb��L�S�M�Q�NM�O�Pc�uyL�n�b��R`�c��T�Wj��U�VM�b�c�b�xv�Y�v�Z�c�[�^b��\�]b�b�d{�_�b�`b�aN�ac�`�b�g4�d�k�e�h�fb��gdc�b��ib�N�j�,b��l�q�m�oL�nb�j*�p�lM�M�r�u�s�tc�b�b�d{b�d{�w���x���y�|�zc��{c�d{L��}��~cWb�d{b���Md{����b���d{L�xv����b��b�1����������c�iM��dN��c�c���b�h����{
�������,`�iM���d{d��b�c���������������������c���c���c�xvb���b�������b�������dc�t�b���b�t���MiM����������L���b�b�az��b����d{n�����������b�cWM�b���b�g4c���c���lic�������������c�����`�b�d{��������dN����c���Mb�����c�iM��b�c���lb�������������xvd��c�tym�c�����n�t�`�������c�b���lic���M��c�c�`��������������������g4��g4laNxv��b���q~b�r&����gQ��b�d{b�c���������b���`���lc���b���aN��b�s8��s8��s8��s8��s8����s8s8��s8�R������d{����c�aNMN�b���i`�gnd��������
��	NdL�b�c��b�c�c��
g4d{���c��b�M�g_c�M����j���g4b�Nxvg4����g4b��iMb�MnW�� �!cWpzd{j*�#�E�$���%�_�&�C�'�5�(�.M�)�*�,c��+p�c��-��d{�/�1{
�0{
iM�2�3i�b��4b�c�l�6�<�7�:c��8l�9akku�;xvb�c��=�?b��>db��@�B�Ad{Nb�cWb��D�O�E�I�F�G��MM�Hb�M�J�Kc�li�Lc��M�Nb�c�M�L�P�U�Q�Tb��R�Sb�xvdd`��V�[�W�Yc��XaNMb��Zb�l�\�]b�d{�^`�b�c��`���a�o�b�g�c�ft��diM�eazdc���h�n�i�k�jd{dl�l�mb�azcWNoYc��p�w�q�t�rj��s`�azb��ud�vdiMc��x�{�yb��zb���b��|��}�~b�c��Oxv��dL�|���������������c���M�kuM�����xv��xv������c�b�azn�����b���q~��nWX!��b���d{ײd{������������b���b�L�����b�d{b�OT����M��Md��b�d{c���������L��Mdj�b���������`�lb�OT{
��{
c�������������������������l��b�d��lMN+b�l����g	������L�nWc�N������c�j�OTj�l����������j�t�c�c���c�iM����������b�b�N��t���t���N����c�g4Lb���������������c�`�d{��d{��b�n�d����cWc�����c�e�����Mq~gQL���������b�����cWb�d{��b���c���`�`���`���`�����`���`�`���`���e�`���������b���q�d{e���`�e�d{M������	�����������b�L�)�|������p�L�p��nWcWM����kuN�b���lN�b�c��
���������
Md{d��ML�M����b�d��MNc�l����c�c�`�M�b�`�b���/��&� �#�!b��"di�c��$d{�%b�b�@�'�,�(�*b��)c�b��+iM�Hdd{�-�.Mt�b��0�=�1�7�2�5�3�4�Ij�d{L��6L�azd�8�:�9b�Nb��;�<aNb�c��>�>�Bd{�?�@�Ab�ddK��Cxv�Dc�dc��F���G���H�u�I�Z�J�P�K�N�L�ML�g4p�ak�Olic�b��Q�V�R�T�Sb�Mc�b��Udb��W=��X�Yc�d{b�d�[�l�\�`�]�_�^NiMNc�e��a�c�bc�|�`�j��dN�e�fd�gd�hdd�i�jdd�kd���m�s�n�q�o�p`�Nb�Nb��rb�L�tb�Lc��v���w���x�{�yaN�zL�g_b��|�~�}c�b�g�c��M�`��������������c�g4d��c�b�c�����c���n�b�d{xv��������������c�`�Mb�`�����L��m�b�M�����d��o�������o���o�o�����o���o�o��|�����|�|�����|�|���|�dc�����������c�d{c�lt�M�����������������M�������M�b�g4b�b���cWg4������������xv`�b�g4��b�c�c�b���c���b�c�����������c�dc���dL�g_��������g_��g_����b�c�Mb�������L�Me�b�������������ak��b�d{c���c�l����b�������M�H`�b���������li`�b�|���c�d{c���������������b�b�Q�b�ak��������lc�lL�����`�Nn�aN��������l��g4MN���;����������lcWLb�b��b���5������
������������ld{c�kXN�Nl�c���b�c��X`����	�
b�c�c��`�c�c�xv�����c�c�Md{�c��ML���t���d{c�`����c��`�M���)��#��"�� b�ku�!c�m�d{c�li�$�%c�d{�&�(�'M{
L�c�b��*�0�+�.�,c��-d{b�dc��/g_c��1�2b�c�c��3c��4L�d{�6�l�7�G�8�>b��9�:�<b��;lL��=ec�b��?�B�@d{M�Ab�aN�C�E�Di�c�M��F{
L�c��H�P�I�L�J`��Kb�d{b��M�Oc��Nd{xv`�L��Q�W�R�Tb��Sc�`��U�Vd$d{^Cl�X�[�Y�ZNazy�Դ�\�]���q��^�_xv�`�f�axv�bxvxv�cxv�dxv�e�xv�gxv�hxvxv�i�jxv�kxv�xv�m�}�n�t�o�p`�b�h�q�r�scWc�d{l�u�xl�v�wb�@b��y�ztyb��{�|dc�|�c��~����������l��c�L�d{��b���b�cWb�������c�����d{c�c�`�c��F�����������������������������b�d{��c�b���������l������dld{��d{N��j*c�������������nW��b�L����McWc�b�L�c�����c���c���dl�������c�M�M�c�������������iM��iM��b�LiML������xv����b�LxvnW��b�d]c�������������d��lL�y7��c�L���b���{
MN������b���Nc�b�b���M��b�c�������������������b�����d{`+Nb�azc�����b�M������p�lM��d{p�d{����������c�c���b�g4b���b���c�c�����������d{c�d{����`�Mlc�����l��lL�b�c������������c���b���`+d{��b�{
b�������xv��l`+ak��j�b�j���������L�b��b�l~��
g4�	n�`+{
�d{n��
���d{�L�b�b��b�xv���c��c��aN�aN�aNaN��aNaN��aNۄaNb��l{c� �h�!�F�"�5�#�,�$�)�%�&g&l�'�(b�MNg4d�*g4�+ORj*�-�2�.�0�/c�MA�1Nlq~�3b��4d{
c��6�<�7b��8�;�9�:akMc�d�,d�=�B�>�@d{�?M�L�N�A*b�iM�C�D�Ec�d{�b��G�W�H�O�Ic��J�M�K�LaNb�L�Oc�Nc�L�c��P�T�Qd�R�Sc�Mb�M�Ub��Vd{b�*�X�]d{�Y�Zd{�[�\@Nlc��^�ac��_p��`g_L��b�e�c�dl�L�d{�f�gMp�cWd{�i���j�v�k�q�l�n�mb�Mlc��o�paNd{p��r�ub��sb��tc���Mc��w�~�x�{�yb�c��zc�n�b��|b��}t�b����li��`���cWd{c���b���lg4������������l��L��azN������ll�c�g_��b�xv��b�m�������������N��b�g4c�b�c���c�b�b�����`���c�j�#��� ����������������d{����c�����c�L�c�b�����������Mb�N����c�akb�Md{��d{��dd{��������d{����@AMd{��c����,b�����������Nb�c�����iMc�b�d�b�����������d{��b�b�c�����b�t�d{ak����������c�b���b�AL�b�����c�b���c�������������������c�{
d{��d{c�������������c�g_c�b���lNaNb�g&����������b���xvcWaz��b�l��b�d������b�����c�b�b�g4����Mc���{
b�cW���
�������������L��Nlxd{��������liMc�g_p��Nc�����kud{��ldM|v�l�	��dc������
�b�d{�g_j*g4����c�l�M����L�`�L�d�����lM�l�c�dc�xv�c��i�e��!�n�"�;�#�.�$�+�%�*�&�(c��'Mll�)|�b�db�c��,�-b�c�b��/�8�0�2�1�Fb��%�3�5L�4b�l�6�7Mdd{d�9�:Lj�MnW�<�Z�=�V�>�B�?d{�@�Ac�Mb�d{b��C�DL�i��E�Fi��Gi��Hi��I�R�J�O�K�Mi��Li�Ki��Ni�K�Pi��Qi�Ki�i��S�Ti��Ui�Ki��Wb��X|+b��Yn�N�[�c�\�`i��]�^�_aNb�d{b��aLc��bb�`��d�j�e�g�fdb�N+�h�ili�Mm;�k�l`�lc��mc�b��o���p���q���r���saz�tMd{�u�v�}}��w�x}�}��y�z}�}��{}��|}�d{}��~�}�}�����}���}���}�d{}�����d$��L�aN��d{ML�����b�����`�b�c�c���b���ek`���������c�����lakl��������Nb�MdM��Nb���b�ku��b���Lxv������������c�b�����xv��c�b�����dMdl����d������cWb�Mp�c���b�c���������d{c���������aNb���e�l���l���l�����l�l���l���l���|�l���c�dN������b�����db�n�j*akc��������\���������������������c���b�c�n�����c�b���b�b�c�������������aNMMNc�b�������Mb�L���b�aNx���������c�����l�d{�,xv����ll�cW����b�c���b�����Mc�lL������������Mj�����c���v�l��cW�������c�b���j�N��b�lg&������d{b��b��db�c���	��b��b�b��}�y�M�
�
��lxrXdaN�d{b�c���/������c��c�b��b��d{b�c���akb��d{�b�ML���&��#� b��!�"g4L�`�c��$c�iM�%ld{�'�*b��(b��)q~b��+�-d{�,aNM�.Mm�N�0�C�1�:�2�5�3b�N�4Nפ�6�8�7Nb�l�b��9MM��;�?�<�=M�aN�>NM�b�gC�@�A�BcWd{l�l�D�N�E�Id{�F�G�Hlc�g�N�J�Kc�b��L�My7lb�L��O�Qd�Pg_b�d{�Rb��SL��TL��U�VL��WL��XL��YL�L��ZL��[�L��]���^�y�_�h�`�b�ad{b�d{�c�g�d�e`�c��ft�b�t�d{t��i�r�j�o�k�m�lnWb�n��nL�d{b��pg&d{�qm�L��s�x�t�vl�uK�xv�wb�c�b�akc��z���{���|��}c��~M�d{g4����c�M����b�c�Nc���������c�b�c���c�xv����d��M�l�����lb�M���������������m�g4b�dak��d{����|��HM�d{��������c�d{����d{dc�d{d{����d{Md{������������������n���ld{Nc���M��d{li����b�������b�c�hp���c���c�d{N����������d{c���kub�����j���j�c�c�az����������b�MNb�b�������b�L�Mb���c�M�������������������g&b�l����c�MNb�b�d{����������ML�b�����L�b�dL���b�c���d]c���������c���c���b�Md{xvd{����������lb�d{`�b�iM�������1���������������������b�iML���{
dd{��`���b�߫d{��������d{��L�g4����azd{b���b�g_���������b�g_az��c�ll��b�������	c�b��
lM�c���
�c�{
lL���!����b��b����az��L�b�c��c�b�����b���;az�b�azc�b�� �:`��"�'�#�$b�d{�%b�d{�&akc��(�,�)`��*�+azt�azb��-�/b��.b�פc��0Lb��2�P�3�D�4�=�5�:�6�8b��7ML��9c�d{b�b��;�<c�b�N�>�B�?�A�@d{cWc�azL��Cb�c�N�E�I�F�HM�GMc�b�c��J�N�K�LNc��Mb�dq��Ob�b�l�Q�f�R�[�S�V@�TM�UMak�W�Yb��Xb�wak�ZaNaz�\�`�]�^Mb��_MaNaz�a�d�b�cc�dlg_�eb�L�M�g�x�h�t�ib��j�kb�g4�lb��mcW�ncW�ocW�pcW�qcW�rcW�scWcW|�c��u�v�wd� ML�y�{c��zb�c��|�~b��}`�akb��c�ak��������������������g&��b�L�`�������lakiMg4����b�������dLhd$��c���b�anW������������Nd��aNc�g4����b���b�azb���Mak����d{������cW}�L�M��������L�M}`�����b�c�Mb���������������b���c�m��n��d{M��d{cW����d{������d`
dM����b���c�Md��b�d{������������n�b���b�aNkud{iM����������c�b�c�����akp�g4b����������,b�aNlMb�������������������b�����lc��;b�d{b�������������c��bAei������=��d{{
c�����b�M�;��������d{ڈc�����Nb�l������c���lb�d��������b�c�N����b�L�iM���	����������c�����@n�le�xv����j*c�c��������q�LiMd��}})iMb���gn�nWg_�
�����l�
�e�b��lg4d{�xv�e�b����c����bd{c�}7c��nW�c�M�������������� �c�!�@�"�1�#�)�$�(�%�'�&MMll{
ku���*�-�+li�,cWb�M�.c��/�0Mb�c����2�=�3�9�4�7�5�6L�#�dxv�8b�b�c�{
�:�;�<c�b�xvM�>�?d{n�LiM�A�V�B�N�C�I�D�F�EM�v[�G�Hc�@c�s��J�L�Kb�L�`��ML�c�d�O�Py7b��Q�S�Rb�aNAv�T�Udc�l@�W�^�X�Zd{�Yc�b��[�\azc��]b�c�L��_b�b��`�a�biMg4H:b��d���e�u�f�k�g�j�hc��ic���dc�d{�l�r�m�p�n�ob�d{�%��qlK�l�sg&c��tlb��v���w�|�x�zd�yb�d�{`�d�bb��}�~�b�LM�������iM����MlMb�������aNlaN��b�laN��������������c�����Mc�M�nW��nWN��o�b�����b���b�`�������b�n�d����b�Mb�c���������������MMb���`�}EM������`�c�`�lc�������������NL�b�}U��m�d{�Ic���M���b�ak������������������������M��nWty��Nb�c�xv��b�`���������b���b�H:iM��b�xvc�������g_Ng_c�����c�������c���L�b���b�db�����c�������c��,b�����c�����ML�b�f��d{��������m���b���Md{d��`���Mg_����d{��b�`�b�����t�iMd���b�������b�xv����d{b���b�b���b�b����T���
������������b���b���iMl��c�ld{��������`�פ��`���`�פ�`��`���`�פ`�פ�`���	`��פ`��
פ��`�פ`�פ��'���L�L�����e����������������������b�� �$�!b��"�#Nb�L�j�b��%�&c�Md�(�5�)�*d{nW�+�/d{�,�-�.db�azm�0�3�1�2lo�c��c��4d{N�6�E�7�>�8�;�9�:L�!bbrX�<�=g��`�c��?�B�@�AazQ�p�`��C�Dՙec6!��F�M�G�J�H�Iؒ}cNL�K�LlW�^Cg4�N�Q�O�Pm�o�`��V�R�SQ�NH:b��U���V�ad{�W�X�^�Y�Zݨb��[й�\�]b�p�p�b��_�`b�й��b��b�t�c�m�d�i�e�fNc��g�hb�nWdku�j�l�km�i@�RL�g4�nb��o�q�pb�b�x��r�sb�d]b�b��u�v�|�w�yb��xiMc��z�{c�L�`��8�}�b��~j�{
b�iM����L��iM��������d{M��}qM`�������b���x�b�d{b��������������C��������b���b�b�����c�Nd{ku������b�����d{c�MiM������d{dp�d{����d{��b�����c�b�������dMc�b�������c�����M������O���OL�N��������������c�Nc���c�NM������b�b�����b���b���b���b�b���b���b���b�b�M��L�M����b�������b�MLlc�b���������xvb���d{����b�d{c�������ն����b���cW��l��g&������������L��ku����akn�m�t�����������b�lc�����Md{{
d����d��cWc�����N@e�d{����������iMߺ��`�e���������}�A`�az�����gC�u�����Ni�y7������g&���g���M���:��6��
����b�d{M���akc��Hc�b��	�
�b�MM�liM��'������Q�s8ؒ�VQ���g�����Ni��d{��}�}�e�����iMH:�d� az�!az�"az�#azaz�$�%az�&azgQaz�(�/�)�,�*�+ؒAe��az�-�.LؒؒM��0�3�1�2�Q�g�N�4�5c�L�Q��7�8c�ku�9b�kuc��;�@d{�<�=�?b��>c�lg&l�An��B�H�C�D�l�El�F�G�=ld�c��I�Jd{�K�Llc�`�b��N�c�O�Wb��P�Q�U�Rlib��Sak�Tlxd{�V�Ilit��Xb��Yd{�Z�\�[b�j*iM�]�`�^�_m�MnWL��a�bd{lxelx�d���e�ib��f�gb��hb�dc��j�x�k�q�l�o�m�ndؒؒaz�pؒc�ؒ�r�u�s�tc�b�b�iM�v�wQ�ؒiML�y���z�}�{�|cW���l�~�akq�d{ؒ��������Nli^Cd����c�d{b�Q�����b���b���b�����b�b�g�������b�d{nWl��b�����b�c�cW��`�����d����d��dd����dd��d��d����dd��d��d����dd��d��d��@d��iM����d{������d��q���q�d����q�dq�dL��M���iM��������������ըL��c�d����d��d������d��d��dd#��d��d��dd#��laz`�������l}�}���llL��������������M���������w������M�M�����M���M���M�M���M���M���M���M����������b���n�b����2������������������>������xv���>�����>����q��>������������������q�xv�������>���������)q����k���>���>���>�k��������3����������q�`����*�����	�b��
h4�b���
�x�x�ݙd]�����d]d]h4h4�^��b�x���b�d]d]h4��"�����d]�� h4�h4hB�!�d]h4�#�'�$�&h4�%yh4ݙx��(b��)x�x�h4�+�.b��,�-b�azb�b��/�0b��1b�d$b��3�B�4�7�5�6M�dM�}��8�9b���b��:�;�@�<�=sud�>�?sudd�N�Ad�Nd�C�F�D�Eb�`�g4i��G�H� b�b��I�J�q�K�SL��L��M�NL��OL��PL��QL��RL��L��TL��U�YL��VL��WL��Xd!L�L��Z�[�g�\L��]�`L��^�_iL�i�a�d�bL�i�c�L��eL�L��f�L��hL��i�mL��j�k��l�L���nL��oL��pL��L��rL�L��sL��tL��u�vL�L�d!�x��M�y�z���{���|���}���~���b���������ll�dL�����c�Nb�p���b�g4`�����c���b�diMM��������nWM�`�b�������q�����������M�g4ak����lg_b���c�M������������b���g4����g4���+��g4��g4g4��g4��g4mMM�����b�Md]cW��������db�b�L�����dNcW{
����������������b�No�xv����M�Mdxv��������MaN��aN�CgC����g4����d��d��d��dd����d�Zdc�aN������������L�hc�b�������t�iM��`�b�aNb���������|�q~�cW����LaN`�L�c�ku���3���������������t�Mg_N����m�������������"��"�"�b�ku������b���d��Q���Q�_���_���_�Q�������j*����b���b���b�b���������x���yb�x�d$��`���i���q��q�d�dq�d��+����j�Md{�	�
q~q~��q~q~�
q~�qpq~��|�b���'�� n��n��n��n��n���n�n���n�n��n���n�n��@n��!�$�"�#+T}��5n��%�&�5n�n�)�L�(�)�*b�M�MN�,�/�-�.Lb�Mj*�0�1b�|��2c�lkuL�4�5���6�N�7�G�8�@�9�:g4�b�;j��<�=Ld�>Mm��?m�i#�A�F�Bb��Cn�n��Dn��Esfn�Mo��H�K�I�Jc�aNLd{�L�Mi�d{
M�O�h�P�S�Q�Rc�b�lig4�T�Z�Uxv�VL��W�X}�b�b��Y}���[q~�\�a�]�_�^�*�~	��`*�q~�b�e�c�dy�~	qp~	�f�gy�qph1~�i�l�j�kL�M�L�iM�m�zi��n�og4�pg4�qg4g4�r�sg4�tg4�ug4�vg4�wg4g4�xg4�yg4z��{���|`�`��}�~�f�`���`�`�����`���`���`�����`���`�b���`�b�`���azaz����azgCaz����������������Mg4nW3������I`�l�������b�d��xv����Z_�~'~7��������lib�y7cW����aN��߫����߫߫��߫~Fxvak������������c�n�c�xv����b�m�b�L��������Mg4N������`�����e�~Ve�b�e�������g4����b�����b�b�~db���`�q~���F���)��dN��N��N�����(��������������az��az����azaz��������az��azazgC��azaz��kXaz������gC��������az��az��az��azwU��az��az����wUw*w*az��az��az��az��az��azwaz����az��������az��az��az��az��azaz�BgQaz��az��az����az��az��azb�azgC��az������az����azaz�azgC�azaz�azgC��	az�az��azazkX�
azaz��az�
azaz�az��azaz�gQazgQ�b��kXgC��$����w*��v���w�v�w��!�� w�wU�"w��"�#ubwc�-w�%az�&az�'azazwazN�*�5l�+�,l�-ll�.l�/�0l�1l�2ll�3l�4li��6L��7L�L��8�9L�L��:�;L��<L��=L��>L�L��?L��@�AL�L��BL��CL��D�EL�L���G�K�H�J`��Ib�L�cWN�L���M���N�U�Od{�Pd{�Qd{��R�Sd{�Td{}�d{�V`��W`��X�p�Y�a�ZiM�[m��\�^�]lNc��_�`LM�Lku�b�j�c�i�d�g�e�f`�lc�cf�hlLlK����k�oiM�l�m�nlLi�(|Laz�q�{iM�r�s�x�t�w�u�vMazlLNll�y�zlq�W��|l�}���~NnW�lc�����l��lOT����lBaazld�������������������������Np���������elx����i#����i#��i#��i#i#��i#����i#��i#q�i#i#d������y7Mg�q~M��������i�������lg&l����g&��g&��g&g&��g&��g&��g&��lg&c�������g&ڈc�g&b���b���o���rR������������b�������~s~�~�~�`
d{����Mb���b���������L�L������c���c�c�����c���c���c�c���c���c���~�c�����פtyNM������b�����x�b�b�~�db����������������d����b�b�b�d{b�����H:������Y�X/tkakl����������c�����������`���`���`���`���`���`�`���`�i�i�i���L����b�d$��b�����q~L����������������������!�p��(��d�Cd������db�b��	�
�b��b�m��
��eg_g4�C���d�d{d��LcWL���I��0������Lddgn��g�LazN��*� �&�!�#�"`�ߍi��$�%Q�cWcWi���'�(�)gQwUkXaz�+�,`�L��-b��.�/�:iMiM�i�1�8�2�5�3�4xviMLc��6�7b�dpzg4�9�<�:�;LQ'dL�=�>Nxvq~�?Y�@�AYY�B�CYY�D�EY�FY�GYY�HY~��J���K�_�L�Q�M�P�N`��Oe�~��ML�R�SMmE�T�U�V����W�XhQ�YhQhQ�ZhQ�[hQ�\hQ�]�^hQhQ��`�g�a�e�bd�c�dlxbrXeoh�fg�M�h�o�i�l�j�kc�g&�g	�m�nkXwUb�gQ�pl�q{��r`��s`��t�z`��u`��v�w`��x`��y`�`�{��{`�`��|�}`�`��~`��`�{���������������������d?lxrXlx�{��tk�{��cW��������dMb�d{��������`�������e�e�e�e�L��b����d{az��M��b�����������N��N��N��N��N������N������NN����N_�NN��N��N��N��N����NN��N_���N������N��N��N��NN��N��N��X#N��N��N��N��NN��N������X#NX#N��NN����N����[�NQ�N���b���b���:��������Q���Q�Q�����X#N;N;N����P}��OTOE��N��������N���N������N��N����N����N��NN;N;��N;N��N��N��������N��NN;N;N����N��NN;N;��N;NOTN���9�����N���������������NQ�NQ�����NQ�NQ��������NQ�NQ���NQ�N�Q��NQ�����
��	NQ�NQ���N�Q��
NQ�N���NQ�NQ�����NQ�NQ���NQ�N�Q�N��*N���!N��� NW�NW��"�'�#�$NW�N�%W��&W�N�(�)NW�NW��+N�,�3�-�0�.�/NW�NW��1�2NW�NW��4�7�5�6NW�NW��8NNW�Q�N�;�E�<�?�=�>Q�P}R�N;�@�AR�N\��B�C�DQ�NNP}�F�I�G�HN;NN;N�JN�K�L�MNP}N�N�O�UN�PN�QN�R�S�TNN;NN;�VN�W�^�X�[�Y�ZNN;NN;�\�]NN;NN;�_N�`�aNN;NN;�c���d��N�e�f�gP}Q��h���i��N�j�k���l�{�m�t�n�q�o�pNQ�NQ��r�sNQ�NQ��u�x�v�wNQ�NQ��y�zNQ�NQ��|���}���~�NQ�NQ�����NQ�N��Q���Q�N��������NQ�N��Q���NQ�����NQ�N����Q�NQ���N��N��������NQ�NQ���NN������Q�NQ�NQ�����N��N��������N��NQ�����NQ�NQ���������NQ�NQ���NN��Q�N\�OT������NY������NOTOTNN������N��~�`�������NOT����OT����OT����OEOT����OEOEOT��OT��OTOE��OE��OEOT��N��N����N������N��NQ�����NQ�NQ�������������NQ�NQ���NNQ���NN��NQ����Y���Q������N��NN����N��������N������NQ�NQ���������NQ�NQ�����NQ�NQ���N��������N����Q�Q�NNQ���NNQ�����NN+N����N���7������	���N�N�NQ�����Q�NNQ���Q�NNQ��
�����
Q�NNQ���Q�NNQ�����Q�NNQ���Q�NNQ���%��!����Q�NNQ��� Q�NNQ��"N�#N�$NNQ��&�,�'�)N�(NQ��*�+Q�NNQ��-�2�.�0�/NQ�NN�1NQ��3�5�4NQ�NN�6Q�N�8N�9�H�:�A�;�>�<�=Q�NNQ��?�@Q�NNQ��B�E�C�DQ�NNQ��F�GQ�NNQ��IN�J�M�K�LQ�NNQ��N�OQ�NN�PQ�N�R�W�S�UN�TOTQ��VN;N;N�XNNOT�Z�^�[N�\N�]NOTP}�_�aN�`N;P}P}N�c�9�d�{�e�r�f�n�g�j�hN+�iN+NN+�k�mN+�lN+NN;NN;�o�pQ�N�qQ�Oq�s�v�t�uOEO�NP}�w�z�xW��yW�P}NOEN�|���}���~�����N����N��������������������N����Q�NQ�NQ�����NQ�NQ���������NQ�N����Q�Q�N����N����Q�Q�NNQ�������������NQ�N������NQ�Q�N����NQ�NQ���������NQ�N����Q�NQ�����N����Q�Q�NN��Q���Q�N��N������������NQ�NQ�����NQ�NQ���N����NQ�NQ�����OTNN;N����N��N;NN����N��������������������NQ�NQ�����NQ�NQ���������NQ�NQ�����NQ�NQ���N��N����NQ�N��Q�N����������N������NN��Q�N��NNQ���N��N��N��NQ�N��NN����NN������NQ�Q�N����X#[�P�N���2���/N����X#��P}������
����������NOTNOT��NOTNOT����NOTNOT��	NOTNOT�����
�NOTNOT��N�OT�OTNN��OTOTN����NOTNOT��NOTNOT�N��(� �%�!�$N�"OT�#NOTNOT�&�'NOTNOT�)�,�*�+NOTNOT�-NN�.OTN�0NN;�1P}N;�3�5P}�4OEQ��6N�7�8Q�]�N;N�:�s�;�j�<�D�=�A�>�?Q�N�@Q�Q�N;N�B�CQ�Q�N�E�H�FN;�GNNN+�IQ�N�JN�K�L�YN�M�N�TN�O�P�RN�QQ�N�SQ�NQ��UQ��VQ��W�XQ�NNQ��Z�`�[NQ��\�]N�^N�_NQ�N�a�eN�bN�cN�dNQ�Q��f�gN�hN�iNQ�N�k�mN�lNTF�n�pN;�oP}NN�q�rNNVp�t���u�x�v�wNQ�Q�Q��y�zP}NN�{�|N�}N�~N�N������������NN;NN;����NN;NN;��������NN;NN;����NN;NN;����������N��NN������N��N����N��NN��N��NN;��������������NN��N��N;NN��N��N��NN;������������N;��N;NN��NN;����N;��N;NN��NN;��������N;��N;NN��NN;����N;��N;NN��NN;����������������N;��N;NN��NN;����N;��N;NN��NN;��������N;��N;NN��NN;����N;��N;NN��NN;��N��N����N;��N;NN��NN;NOT����Q�����NN;��N����NN��������������NQ�Q�N����NQ�Q�N��������NQ�Q�N��NNQ���N;N��N����N���������������NQ�NQ�����NQ�NQ�����NQ�NQ���NQ�NQ������	�
NQ�NQ���
NQ�NQ�����NQ�NQ���NQ�NQ������N��J��.��L��>CL��L�L��L��L�� L��!�"L�L��#L��$L��%�&L��'L�L��(L��)�*L�L��+L��,�-L��:L�L��/�0�AL��1�2L��3L�L��4L��5L��6L��7L��8L��9�:L�L��;L��<�=L��>L�L��?�@L��L��BL��C�F�D>S�E>SL�>S�G�I�H>rL�>r>rL��KL��LL��ML�>�L��O���P�c�QL��RL�L��SL��TL��U�VL�L��WL��X�YL��ZL��[L��\L��]L�L��^L��_L��`�aL��bL��+L��d�y�eL��fL��gL��hL��iL��jL��kL��lL��mL�L��n�oL�L��p�qL��rL��s�vL��t�uL��L��wL�L��xL�>C�z�{�L��|L�L��}L��~L��L���L�����L���L�L���L�����L�L�����L���L�L���L����L�������������L���L��������L���~�����L�~�L��������L�����L���������B����d����d��dd��d��d��d����d��dd��d��d��d����dd��d��d��d��d@������@&d����azaz��az����azaz��az������az��b�azaz��azb����A����������������q�o���q�dq���������q�dq�d����b�d��d��d��db�d��������b���b�d��q���q���q���q�dq���q���q�m�d������������q���q���q���q���q���q�����q���q���q�q�����q���q�q���q�m���q�d��q�q���dq����1��������q���q���q�q�����q�q���q���q����q�q��q��q�q�d���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��+�,q�q��-q��.�/q�q��0q��2�4d�3q�d�5dd�6d�7�8dd�9d�:d�;d�<�=d�>d�?dd�@d�dM�C�N�Ddd�E�Fdd�G�Hdd�Id�J�Kdd�Ld�Mdb��O�Td�P�Qd�Rdd�SfdnW�U�V�z�W���X���Y�|�ZL��[�q�\�fL��]L��^L��_�`L��aL��bL��cL��dL��eL�L���g�pL��hL��iL��j�kL�L��l�mL��nL��oL��L��L�L��r�sL��tL�L��u�vL�L��w�xL��yL�L��zL��{L��L��}�~L��L���L�L���L���L��L�����������������L�L�����L���L���L���L�L����L�L���L���L�����L�L���L����i������L�L���L�����L���L�iL�L�����L�L�����L���L�L���L��+��������L�����L���L�L�����L�L���L���L����L�L���L�����L���L��L�������������L���L�����L��L���L�L���L���L���L����L���L���L�L���L���L�����L���L���L�L����L�����������L�L�������L�����L�L����L���L��+L�L���iL�L���L�����L�iL����!�������L�����L���������L�����L�L�����L�L����L�L���L����L�L�����L���L���L���L��L����������L���L���L�L���L���L���L��L�����L���L�L����L�L��L����L��L���L�L��L��L��	�
L�obL��L��
L�L���L�L���L�L���L����L�L���L�L���L����L�iL�L��L���L�� L�L���"�W�#�D�$�=�%�2�&L�L��'L��(L��)L��*�+L��,�/L��-L��.�L�L��0�1L��L��3�9�4L��5L�L��6L��7L��8L�iL��:L��;�<L�L���>L�L��?�@L�L��AL��BL��CL���EL��F�S�G�JL��HL��IL��L��K�LL��ML��NL�L��O�PL�L��QL��R�L��TL�L��U�VL��L��X�u�Y�j�Z�d�[L�L��\�]L�L��^L��_�`L�L��a�bL��cL�L�iL��eL��f�g�iL��hL��L���kL�L��lL��mL��n�oL�L��pL��q�rL��sL��tL�L���vL�L��w�xL��yL��L��{���|���}���~�������������x���y(b���b�d]����b��^�����^h4b��������d]x���x�d]d]��x���h4x���������b�������b���b�h4��������y(b�d]b�������h4y����������d]d]b�����݋�+d]ݶ����h4x�����b���oy��������������h4b���h4b�������(b������݋d]�������������h4b��^������x���d]d]����d]d]����d]d]����d]ݶd]x�b�����d]��݋b��������h4x�����������������h4d]d]�+����d]h4h4b���b�d]��b�h4��������d]b�x�h4������b�h4݋y(x�`�����`�`�����`�`�����`�`�������`��i���i�i�����i�i���i�����i`��i���#�����d��d��dd��d����d��dd��d��d����dd����d��dd�d��d�d@d�MM�M��N�	�"Y�
�N���
N�N�N�NN��N�NN�N��NNY�NN�N�N�N�N�N��NN� �!NNY��P��$���%���&�I�'�@�(�+�)�*M��m�cW�,�3�-xvb��.�/p�N�0�1�2NVpNVp�4j��5�<b��6�7�9�8b�~db��:�;�b�7yb��=�>b��?b�b�x��A�D�B�Cb�rfj*b��E�F��b��Gb�aN�HM�aN�J�{�K�n�L�Ub��M�N�Rb��O�Pb��Qb�b�b�b��Sb��Tb�x�b��V�W�bb��Xb��Yb��Z�[b��\b�b��]b��^�_b��`�ab�b�b�b�b��c�db��eb�b��fb��gb��h�ib�b��j�kb�b��lb��mb�b��o�zM�p�q�t�r�sMb�y7`��u�vakc��wb��x�yi�e�i�EiM�,�|���}���~g4L��L�����L���L���L�L�����L�L�����L���L���L�L���L��:��b������������������=�2T����`�vb�`���MMF�������������ctyh4g4��`�+rc�������`�x�g4��`�g4y(����`�b�xvaN����������������M�c�n�d{����{
MM�b���������j�b�q~�I����L�`�j�M��ak��������aN`���`���������Lb�Mږ����L����d��dd����d��d��d��dd����dd�dN������b�����������hN��N+N��������v�>���v�������������������������������rv������iMb�b�iMb�����azaz��az����azaz����az��azaz��az��az����az��azgCaz���A�������g4b���q~��d{����������b�������b�m;g_NL����e�i�lKe���ٰg4����N`��t��	�
azu�wFaz���
�v���߫2E߫L�b����{
���akak�ak��akak�ak�ak�ak�ٛaktk`�iMc�� �@ty�!�"�-�#�(�$d]�%d]�&d]d]�'d]ݶ�)d]d]�*d]�+�,d]d]ݶ�.�3d]�/�0d]�1d]d]�2d]y(�4d]d]�5d]�6�7d]�8d]�9d]�:d]�;d]�<d]�=d]�>d]�?d]x�d]�Xi��B�Y�C�Ddb�rf�E�F�G��xv�H�S�I�O�>�J�K�N�L�M��xv�>��q����P�Q��q��Rxv��xv�T���\�U�Vq��W�X��q�q����Z�[NM��\b��]�l�^�c�_b��`b��ab��bb�gCb��d�eazb��f�ib��g�hb�gCb��jb��kb�e�H:�m�v�n�r�ob��pe��qb�gCb��sb�gC�t�uaze�H:b��w�xb��yb��zb��{b��|b��}�~b���b����U����L���`�����`���`�`���`�����`���`���`���`�`�����`���`���`�`���`�����`�`���`�����`���`�@`��������/`��������������^��az��az��azaz��������azaz����az�^azaz����azaz��az�^����������az��az��azaz����azaz����az�^az��az��azaz��az��az��az��az���^az������azaz����azaz����azaz����az��azaz����az��az��az��azaz��az�^������azaz����az������azaz���^azaz����az�^azaz��������az��az��azaz���^az��az��az��az��az��azaz����azaz��az�^���������az����az�����^��azaz����az��azaz�^az��az����azaz��az�^�����az��az��az��azaz��az��az���az�az�azaz��azaz�az�az�^�azaz�	�
b��b��b��
b��b�b�b������az�az�az�az�az�azaz��^azaz��az�az�azaz�az�^az� az�!az�"az�#az�$�%azaz�&�'az�(az�)azaz�*�+az�,az�-azaz�.az�^�0�D�1�2b�g4�3{
�4�5{
�6{
{
�7�8{
�9{
{
�:{
�;�<{
�={
�>{
�?{
{
�@�A{
�B{
�C{
{
��E���F�w�G�[�H�T�I�O�J�Nb��K�L�MdLNL`�d{�P`��Q��iM�R�Sb�iM�l�U�W�Vb�b�N�X�Z�Yb�q~cWdcW�\�c�]�`�^�_dc�nW`��a�bc�MxvnW�d�g�e�fMxvq~b��h�vc��i�j�o�k�m�ly�y���ny�n�!��p�s�q�r�y����t�u����c�i��x���y���z�}�{�|aNLb�p��~���b�������cWN��N��N��N��N��N����N��NN;N��LH:����`���`���`���`�`���`���`���`���`�$�b�aN��������dM�xvd��b��;b�������������b�MMxv����c�����d��d��d��d��d��d��d��d��dd��d��BfdnWb���������`�xvb�p�����b�c�b�xv���)��������������������M�i�����������g_akg_��g_Xg_��N��NN��N����NN��N��N��N��N��W�N����b�dxvq~������b�b�`�����NL���M��d�����e�e�b�������������db���`�q���dq�����g4Lb�`�����b���azb�L��`�{
���������������i���ak���ak`�c�����xvL�d]li���
���L����nW��nW��nWnW����nWnW���nW������nW�nW���@�)(��	nW�
�e�nWnW�Mb���nW�Ng_LN������Mb�rfL���`���bb�LL���$�M{
���!�� Li1dQ��"�#iM`���e�M�%�&dH:�'t��(v�t��*�V�+�H�,�A�-�0�.�/dnWc�`��1�@`��2�3cW�4cWcW�5�6�=cW�7$$�8�9cW�:cW�;cWcW�<#scW�>cW�f�?�fcWb�ty�B�E�C�DcWMd`��F�GLg_i�M�I�O�J�L�Kb�dak�M�NL�M�b�c��P�S�Q�Rc�NM�h�T�UNb�cWc��W�t�X�f�Y�c�Z�[NML�\�]�`�^�_li|�c�iM�a�bg4��LL��d�exv�g_L��g�j�h�i|�|�i�c��k�lb�M�mM�n�q�o�p[�N[�N�r�sNQ�W�Vp�u�{�v�y�w�xdb�Nb�b��zc�d{�|���}�~b�rf�`�����L��LML��Nd������L�������|�|���|�����|���|���|�|���|�����|�|�g�������|�����|���|���|���|���|�����|�|�g�|�����|���|�|���|�����|�|�g�����������|�|���|�����|�|���|���g�|���|�|�����|���|�|�����|�|�g���|�������|���|�|���|���|���g�|���|�|���|�����|���|�g�|�kuN������������M��t�����xvxv������xv��xv��xv��xv����xv��xvxv����xv��xv��xv������xv��xvxv����xv��xvxv��W[xv������xv��xv������xv��xvW[xv��xvxv��W[xv��xv��xv��xv��xvxv��W[xv����b�`�tyn���������dc�p�i�����tye�iMg4�������Q���mt������1������l��L�����lMl�l,����l���h4x�OTOE���	�
����`�l�
�L��l�c��ll`�����`�N`���`��lc�`���-��(���lc�c��� Nc�L�!�"�$�#`�`��i�%`��&`�`��'�i`��)�+�*l�l�,Mc�`�`��.t��/v��0lM�2�L�3�=�4�9�5L�6l�7�8dh���`��:l�;l�<��`��>�E�?�@Lw��A�Cl�Bli�l�DlM�Fx��G�I�Hڈl\H�J�K�g&�l�M�f�N�_l�O�P�]M�Q�Rl�S��T��U��V��W�Z�X��Y����[��\����^L�ld�`�cd�a�bllNt��d�elYOEiM�g�h�il`��j�kl{
l�lL�l�n���o���p���q�v�riMu��s�t�uaz��0�Z�w��l�x�y�{���z��M�|���}���~MM���M������M��MM��O�M��MM��M��MO���������M��lg�g���g�g	��MlM����������l����N��lN��llc���������l��lM��MgCOEl`���l��iM��l��ll�d����������L������������hM��`���NOTkf����azl����lc�b�l����l����l����`�az`�g	����L���N��azߍ����������MM����MM����MM��M����M��Mlg&(|l����������L��t�����[�OElN+w�l����L����b�lM����L��������`�NL��L����lLc�l���+���������������������rfeNlaz��{
l��������Mg_c�liaz��kurf��li����h��h�h��h��������l��������ldl������azLq�c���`�l��l�lMA`�����	l�c�c��
���
����M����M�;��M�MM�M��M��M�M�M�M���M�M�M��M��*� �#�!�"L�llL��$�'�%�&&`�!+���(�){
�lL�liM�,�8�-�4�.�/L`�iM�0�1L�2�3Ll`�az�5MM��6�7lg_`��9�D�:�@�;�<ML�=L�>�?�cfLe��AiM�BLl�C`�cWiM�E�F�L�G�J�H�I�h4Lll�KlM�M�Nlg&�O�Pb�cWOEN�R�l`��S�T�]�U�WiM�ViM`��XiM�YL�Z`��[`��\lc�L�^N�_�g�`�d`��a�b`��clOEcf`��e�f`�`�l�hiM`��i`��j`��kLl�m���n�{�o�yd�p�qw��r�vL��s�t�u+�`�q�ltO�w�xlc�l�ziMLl�|liM�}iM�~���`�iMiM`�����������iMN������L`�i�LiM������`�����`�dn��#�dn����l��lM����M��l��Ml������������`���l`�`�����Ll��ٽN����`�l����l����l�g&��gQgQaz������iM��`���`�����laz`�`���d��`�l`����"����������b�������������g&����l�lg&����lg&����l��g&����l���������������������������������=���ll��l�=l��g&��g&lM�?����dl��b�������������ak������ak��akx���cW��ak��akak��ak��ak����ak��ak��akٛak������ak��akakx���ak��akakli��ak��akak��ak���0ak������������ak`���ak��)�bak��ak����akcWak`������ak�p��x�ak���akak�ak��ak�	�ak�
��ak��
akp�ak�akak�p�ak���akak�ak�akp��akak��akakp���`�akakli�akak�� �!Yak�lak�#�&�$�%b�nWЛN�'�)�(y7iMd{d{�*�+�>d�,�-�6�.�2�/�0dq��1+�db��3�4+��C+��5b�d�7�;�8��9m��@�:�?l��<su�=�d+��?d�@�I�A�E�B�Cm�+��D+��Cb��F�H�Gq�b��Cq�+��J�P�K�M�Lsu+�su�N�Osu��b��Q�Sb��Rb�"��Td"�o��V���W���X�Yd�,`��Z�[�z�\�w�]�vM�^ak�_�`�r�a�fak�bak�c�d�eaktktkp��g�l�h�j�itkaktk�ktk�btk�m�p�n�o[#ak�bp�tk�q�btk�sak�tak�uakak�bxvb��x�yNc�c�ak�{��L�|�}���~���������N��b�d{b�}�����cWb�d������b�����b�b�A����c���`�c�����c�����������ؒ�8b�L����lؒrX��c�b�������������xvNb�c�b���ku����c�����g4`�b�az����������������db�����@b�b�db�M��b��Ib�������������L�����L���L�L�����L�iL�M�����M���M�����M�{�M���M�[b���������Nb�N��b�b���c��O����c����,dc������������bML��b�������~�b�~�b�����4Pb�b�d����aN������t������d�����������������������q�������q����>���������>�)��������q�xvq��>�����k������q�q���������q����������kq���O4������q���q��������q�����������q���q��������xvq���q����������q�xv����������	���
��������
�������������������������q���q������q���9��,�q���q��q��q�xv� �!q����"�+�#xv���$�%���&���'�����(�)�����*q���xv�k�-�2�>�.�/�0�>q����1��q��3�5�4�����)�6�7�kq�q��8�����:�@���;�<�=�>���>�>q��?��q��A�^�B�]�C�>�D�M�E�>xv�F�Gxv�Hxvxv�Ixv�J�Kxvxv�L�>xv�Nxv�O�Vxv�P�Qxvxv�R�Sxv�Txvxv�U�>xv�Wxvxv�Xxv�Y�Zxv�[xvxv�\�>xv���k�_�a�`������xv�b�c���kq��e��f�x�g���h�p�i�m�j�k����q��l�k�����n�o��xv��q�txv�rxv�sxv��xv�u�v�w��xv��xv�y�}�z�����{���|�)q��~�k��xv����������������q������������)xvq����������>���������������������������������������>������q�q�������q����������������k��xvq�������q���xv����q����^�k������������q������>������q�xv������������������������m�����������>��q�����q���q��)���^����q���������������q����>��������q��>�������>����q�q�����q���q�`�����������������������LMcWc���b�L�d]��������`�b�M��N��N��`�N����MNb�t�������������b�ML�M����li�j�cW������Mp�N����b�Mb�����������Mg���M��Mg���������c�b�`���������c�Nc�Nd{��d{������Lak`�aN������@��-�����aN������"�"��	�
����"��Lc��
�,b��������dL��H:��g&�c�����L��`�M�L�c��v�az��%���c�� �#�!�"�b�d?az�$azgQ�&�(L�'x�b�L�)�*�+Л`�b�Mj*m��.�1�/�0t�b�aNd{�2�?�3�4nWM��5�;�6�9�7���8M���:j*��<�=�b���>��]`�c��A�Y�B�V�C�Hb��D�E���F�GNdaNcW�I�Q�Jc��K�M�Lb�q~c����N�Od�Pddq��R�Uaz�S�Tb�azdazd�W�Xdxvc�b��Z�c�[�bb��\c��]c��^�_c�c��`�ac���c�M�L��d���e�r�fp��g�ip��hr�p��j�m�kp�r��lp��|�n�p�op��Qp�r��qr����s�{�t�x�ub�b��vd$�wp�b��y�zb�kud$b��|�~�}b�ku3�b��3�i�akd{�����������������������K�cWL�d����j�{
NnW��������dc�b�d����aN����������gQgCb���kXaz��gC��azazgQ��M������������xvb�hxv����kuy7xv`���������g4������x����P����b�p�b���b���������W���LNb�d$��b��oJ����b�d{y7l�����������������dMMb�������`���{
{
����{
��{
b�c�����������M`�����`���`�`���`���`���`�����������`�,���`�,�`���`�����`�,���`�,�`�dN������j*��d��dd���Ndb�`�����������������N��`���az��azgC����az��azaz��az��az��az��az��gQaz����b�L�Nd����������b���������aky7c�L�����g4aNc�i�nW`����b��xv�xv��b��db�����
��	�azH:L�(b��b�h��
t��MMaz����cWc�cW�azN��Mq�{
d��v��I��)��"����M�j*b�d� �!�^b�Ld�#�&�$�%NcW��nW�'�(`�d`�b��*�:�+�7�,�3�-L�.�0�w�/v�az�1�2wazv�gQL��4�5b�b��6b�ak�8�9d�L�Mb��;�A�<�@�x�=b��>b��?~�b�b�l�B�H`��C�D�F�R�EnW�R�GnW�RnWdN�J�g�K�\�L�O�M�NMb�b�g4�P�T�Qb�L�RL�SLl�b��U�V�Y�W�Xpz�RjVli�Z�[pz�RpzjV�]�`�^�_cWb�b�L�a�bt�Mq~�cL�d�el�fll�=�h�o�i�l�j�kN`�b�d�m�n�dL`��p�s�q�rt�b�`�b��t�uЛcWM�b��w���x���y���z�}�{�|q~c�b�iM�~xv�d{L�c���������dcWnWd����p�b�M�����������*~�l�0����Ne�cWaN������������xvNl����L��L4�L����{
M��N��b�b���b�b���������M�b�L�c�����b�d��dku�������e!������������������N����b���b���b�b���b���b�����b���b�����b���b�b�����b�b�b�b�b�M����ML�db����������Hb�L�cW����Лt���p�b�L������������NLi�aN����d����N��NNQ�rfL�����������~�����m;����m;m;��dL�����kuM�`�cW���d������d��d��d����d��dd��d����d��dd����dd����dd��d��d��d����ddb���d��dd��d��d����dd��d��d����d��dd����d�dd�d�d�d�@dd��d�dd�	d�
�d�dd�
d�d��d�d�dd��dd�d��d�d�dd������T����zM�� ���!�u�"�t�#�X�$cW�%�=�&g4�'�2�(�,g4�)�*�+m2�+g4�-�/�.�+u�+�0�1u�+mg4�3�9�4�6�5g4g4�+�7�8g4mx�g4�:g4�;�<m,g4�Lg4d�>�?�G�@�+�A�D�B�Cg4m�+i7�E�Fm22���H�_�I�S�J�+�K�+�L�+�M�+�N�+�+�O�P�+�+�Q�+�R���+�T�+�U�+�V�+�+�W�X�+�+�Y�Z�+�[�]�\�+�+���+�^���+�`�q�a�+�+�b�c�j�+�d�e�+�+�f�+�g�h�+�+�i�+���+�k�+�l�m�+�n�+�o�+�+�p���+�r�s�Mg4mg4aNb��v�w��q~p��x�y�l�z��L��{L��|�}L�L��~�L�L�����L�L���L���L���L�����L�L���obL���������������������L�����L�L�����L���L���L���L�L���L����L���L���L�������L���L�L�����L�L����L�L�����L�L����L�������L���L���L���L�L�����L���L�L���L����L�L���L�����L���L�L���L���L���L��������������������������������������������������������������������������������������������������������������������������������������������������L�������7�������L�����L�L�����L�����L��+L�����L���L���L�L��������L�L���L���L�����L����+�L���L��L���L��L��L��L���L���	L��
L�L����L��
L�����L��L��+x��"��!���L��L��L�L��L��L���L��L��L�L��L�� L��L���#�*�$L�L��%�&L�L��'�(L��)L��L��+�1L��,�-L�L��.�/L��0L�L��L��2�3L��4L��5L�L��6L���8�G�9�;�:L�L���<L��=�C�>L�L��?�@L�L��AL��BL�iL��DL��EL��F�L��HL��IL��J�Y�K�RL��LL��M�NL��OL��PL��QL�L�i�SL�L��TL��UL��V�WL�L��XL�i�Z�aL��[L��\�]L��^L��_L��`L�iL��bL�L��c�d�hL��eL��f�gL�L�iL��i�jL�L��kL�i�m���n�pL��o�i�q����r�s���t���u�}L��vL��wL��xL��yL��z�{L�L��|�L�L��~�L���L�L�����L���L������L�L���L���L���L�L�����L�L�����L���L���L�L���L��������������������L�L�����L�L���L���L��L���������L���L���L�L�obL�����L��L�L�����L���L���L���L�L���L���L���L����L�����L�����L�L���iL���L���L���L���L������L�L������L�����L�L�����L�L���L���L���L�����L�L��L�����L�������L�L���L�����L�c^��������������L���L�L�������������L�z.L�L���L�>�������L�L���o�o��L���L���L���L�L�����L���L���L�L���L�����L�L���L�����L�iL����H��������b���������iM��iM��L�����L�c��������LL����L���lg4�����iMN�l�l�lc��LiM�L��l�azb��	�
b�b���b�b��
b���b��b��b��b��b��b��b�b���b�@b���G��E��(��#ak�ak���!az� akazak�"akaz�$akak�%ak�&�'azazak�)�:�*�1�+�.�,akkX�-akaz�/ak�0akakaz�2�4ak�3azak�5�7�6akak�b�8�9akm;akm;�;K��<�B�=�?�>m;akm;�@�Aakm;akm;ak�C�Db�akm;b��FЌb�d{q~�I�Kb��Jb��H�L�MMm��Nb��Od�P�YM�QM�R�SMM�TM�U�VMM�WM�X�OM�ZM�[�r�\�j�]�c�^MM�_M�`M�a�bMM�o�dMM�eM�f�gM�hMM�iM��kM�lMM�m�nM�oMM�p�qMM�o�sM�tM�uMM�v�wM�xMM�yM�;�{��|���}���~`������`�`�����`���`���`���`�`�����`���`���`���`���`�`���`���`���`���`���`���`���`�����`�`���`�����`�`�����`���`���`�`�����`�`���`�@��azaz����azaz����az��azaz��az����azazw��������c�b�c�j*����q~����������b�d{��d{��d{��d{��d{d{����d{d{����d{d{��d{����d{d{��d{��d{�����d{������Gt��Gt����GtGti@��GtGt��Gt��Gt�6b�d��w�����������������w��M�ty��tyt�ty��M�wM�d����M���M��MM��g�M������������ty��M�������M�tytyM�������������gQv�ubwU����ubb�gCkX��gQ����wUgCb�gQty��ty��gCcW������������gCe�e����&��ײgCe���NgCe������M�gC�M�M��M�ty����t�b�lc�`�ty�	���
�����t��
t��t�t��t���t�t��t��t���t��t�t���t��t�t��t���t��t�@t���q� �L�!�E�"�2b��#�$�1g_�%g_�&�'g_�(g_�)g_g_�*�+g_g_�,�-g_�.g_g_�/�0g_�5g_o�b��3M�4�;�5�9d�6ak�7�8akakp�ak�:h�ak�<�=azd�>d�?�B�@�AazwUazv��C�D�gCazj�F�H�G`�K�Lc��Ib��J~��Kb�~��M�`�N�S`��O�P�Q@�F�Gt�R�Gt�Txv�UiM�V�\iM�W�X�Z�YiMiM�i�[iM�:iMiM�]�8�^�_�i�iiM�a�bb�c�b��cN�d�eN�fN�gN�hNN�i�jNN�k�lNN�m�nN�oN�pNNx��r�x�s�v�t�u�xd{LMb��wb�t��y���z��cW�{�|c�c��}c��~�c���c�c�����c�c�����c���c���c�c���c�����c�c�b�����b�����������������������c���������������������c�d�x����`���`���`���`�����`���`���`���`���`���`�`��D����`�����`�`���`�����`�`���`���`���`���`�����`�`���`�����`���`�`�����`��S`�`�����`�`���`���`���`���ִ`����v��g_t����������������������m�������������gQaz�����azgQgQaz��gQ����gQ�t�az`�������{
����{
{
{���{
��{
��{
��{
{
��{
����{
��{
{
��{
��{
�����db�|�g_��������dcWL�b�����b�d{j*d�����������p�c�d`�����b�c������������b���MliM��L�az��������Nb�LN���`�d{b�`����N��db��Z�KdL���	�
iMMMiM��
akaNm�iM��1��&�� ��c�b�nW��N�NN�N��N�N�N�NN�N�N�Nx��!�%c��"w��#�$w�b�c�g4b��'�.�(�)`�Mg_�*b��+�,b��-b�z�b��/�0i�d��M�2�S�3�=�4�<�5N�6�7`��]�8�;�9�:g�q��q���c�m��>�En��?�@�C�Ab�i��Bi�b�b��Db�i�cW�F�G�H`�LL��I�Jtk�Kak�l�L�M�l�l�N�l�O�l�P�Q�l�R�l"�l�T�m�U�VL�Nd�W�X�^�Y�\�Z�[��gnerX�]e�dn��_�b�`�ae�`�}�pz�c�l�de�eb�b��f�gb�b��hb��i�jb��kb��>b���e�n�oM�d]b��p�q�rML�sc��t�uVpNOTVp�w���x�yxvdM�zM�{�|M�}M�~M�M��M��Md��d����d������������nfai1�������o�����������b��d�o��d�n�c����������������������c���c�L����`�xv`�N��������`�����������d�c�nW�*����c�~�NAeL�N������xv��d��azaz����azaz��az��az����az��azaz����az��N��������`�Nb�g4d��db�������������L�Nj������������g+�0�"������g+g+�0������b���d{azd{��xv3�������x�������b���d�����b�L�b�xv������������b���Md����Mb�b���� ����� ��������� �q�q�����q� �q������� ����� ���q� � �q�q� ����d��`�b�������L�Lak�bd{������������M��������=�L��=�Le�dL���q~b�����Md]dxv����`�b�q~��3���	��
�
��aN`�cWb����M�d��NYOTNg_`�����NdM�b����d�g4���Lg4�+g4L�M� �'�!�$�"�#g_`�tyb��%�&p�tyaN`��(�0�)�/M�*�+�-�,b�b�kub��.3S��MM��1�2M�MLcW�4�G�5�<�6�9�7�8{
L�dn��:�;M�`�aNnW�=�D�>�C`��?N�@�A�BN;NN;Q�`�b��E�FNc�NnW�H�N�I�K�Jb�xvb��L�MLb�b�L�O�R�P�QLb�rfb��Sb�d`��U���V���W���X���Y���Z�k�H�[�\�H�H�]�^�H�_�H�`�H�H�a�b�H�c�H�H�d�H�e�f�H�g�H�H�h�i�H�j�H@�H�l�|d�md�nd�o�pd�qdd�rd�sd�td�ud�v�wdd�x�yd�zd�{d��d�}���~�������������������������Q���������������������`����������������������m;������������������%�4�������C��Q��R������`��a`����p��p������������`������4����`����������������p��Q������������m;������������c�#���#�����������#�#�c�c�#�����c�����#�c���#�c���d{tyd��������������������g4o�M�g4����j�����dd��Mdb�M����b�����M�����b�����������x�d2b�����b���x�b���b�������38b�������b���j*aN���bd������������b�`�aNxv����b�`�c��X��������d��������mg_��L�g_w��az��azg_nWb�����`�iMak��j����b���b���b�b�~����<���(���&���
��M������L��|`�azb��g4e���
�g4�	azaznW�`��g4�uxvn��m�����m�m��m���m��m�m��m��m��m��m��m���m���m�m��m��� m�m��!m��"m��#m��$m��%m���'b�b�g_�)�1�*�+`�b����,�-b��.b��/v�N�0U\N�2�7c��3�4b��5b��6b�p�b�w��8ku�9�:�;kub�kub��=�y�>�F�?�@b�rfM�A�B���C���D�����E�����G�V�H�R�I�Q�J�N�Kg_�L�Mb�Lymc��OrXb�P�rX`�|��S�Tg4M�UM`�d�W�Z�X�Y`�LNd�[�\M�xv�]�r�^�h�_NN�`N�aN�b�cN�dN�eN�fNN�gx�N�iN�jN�kN�lN�mNN�n�oN�pN�qNx�N�s�v�t�ub�d{b�M��w�xdNc�X/�z���{���|��}�~cWaNL�L����b���b���b���b���b���b���b���b���b���b�����b���b�ڥb���������nWNL�cW����`�ML���w�M�������������b�Lb�`�����b�xvt���g_����g_g_��g_��g_����g_����3�g_l�p����������ILNL�������xv����������ؒaN����L�aNx�db�MaN���������c�d{��ak��������������c�������������d֥dLL���L�d��������BcW��b���L�cWp�����������������dl�dld{��d{�d{�������dl��d{dc�b�������c�{
������������Lazg�N����Q�c�lxL���������azdl`������%dQ�g���d{������������d$t�di�����l�d�b��M��Mg���������tkcW����az��az�"��`�aktk�����azaz��JazM����{���o�N��>��#���	��
�
ak�ak��lak�akak�tkak��`�ak�i�ak`��� ������`�bake�akd��li�akli�akak��`��!ak�"akli�$�5�%�,�&�)ak�'�(ak�lak�*ak`��+�4y7ak�-d�.�/�0ak�N�1`��2�4�3�4�4�4ak�4�6ak�7�=�8�;�9�:��akak��ak�<�{akak`��?�Z�@�K�A�D�Bakak�Cliak�E�H�Fi��Gake�liak�I`��J�Cak�L�Q�M�O�Nak`�ak�Pak`�ak�R�Tak�Sak`��U�X�V�W`�?1�J`��Yakake��[�`�\ak�]�_�^ak`�akcWi��a�f�b�d�ci�liak�eakak`��g�j`��h�i`�?1�J�k�mak�l�{ak�ndak�l�p���q�|�r�z�s�yb��t�u�xb��v�wb���p�akcWb����{b�t�d{�}���~�c�d{b�������d{L�`�������rXlxlx�R����b���b���������>b�kub���b�kuc��������;������פ`���פ`���`���`���`�����`���`���`�z�`�g_Lb�`�����`���N����Mc���M����M��M��MM����MM����MM����M��M��M��MM����MM@���t���s��d{�����������������z���iM����azl��lYl��aziM����`���lb�OT����`�az��v�������d��g_gC`�����l��q�L����l��Q�N��������������L��������lMl`�gCl��l����l��Ldl��az`�����������lL���lmdb�����L��l���ݶ����`�lli��lM����������l��d{cWL��������MN����`�li�`�ml��dM�����li��li�li�Rli��[��#������L�Maz�	�
g4l�gC��`��
����`�lM��j�`�s8gC����Ll�laz�lL�ll����m`��l`��� �l�!�"NOTYN�$�+�%�*�&iM�'`��(�)c�azl��ld]�,�P�-�.lcW�/l�0�1LN�2l�3�I�4�CW��5�6�=�7�:W��8�9W�W��aW��;W��<�aW��>�@W��?W��a�AW�W��BW��a�DW�W��E�FW��GW�W��HW��aW��J�KW�W��LW��M�NW��OW��aW��Q�V�R�T�S`��azg4�Uazc��W�Yl�X��rl�ZM`��\�n�]`��^�g�_�e�`�c�a�bNu�My�dwUu�d�fcWlM�hL�i�l�j�kL���l`��=�m`�`�`��o�p�q֥�[�r���[֥b�iM�u���v�}iM�w�xMz��y�z`��{�|L�`�Q�d�~���d��Z�Z�����Z���Z���Z�Z�����Z�Z�����Z���Z���Z���Z���Z�Z���Z�M�y7�����HL��H��������b���������`���`�`�����`���`�`�����`�`���`�����`�`���`���`���`����������`�����������`�f��`����`��������������v}`����%,`���`�}��`������������`�f�����`�f�`�b���`�����f��v�v�aN{
����b���������ak������akaktk��l���l���l���l�������H:��Nakm;H:��M����akaz��v�azAM����w���S��`�M��M���������������������b�Mb�N����b�����L������g&���d��b�|�b���������M�`�ML����`�b��Mi������������b�g4L�N����g_����MM��M~���M��������"�"������	��b�L�`��b��~��b��}�
�|b�[�cW�
�.��%��"��!�`�����iM�����������������������������NL��� b�L�N`��FM�#�$c�xvq~p��&�(b��'`�d�)�-�*b�xv�+g4�,m�[p�L��/�H�0�E�1�D�2�CgC�3�4�;gC�5�6gC�7gC�8gC�9�:b�gCb�gCgC�<�=gC�>gCgC�?�@gCgC�A�BgCb�gCiMMML��F�Gd{g4q~M�I�L�J�Kxvc�db��M�Ni�M�ON�Pq��Q�Rq�ddq��Td�UNN�V�W�gN�X�YN�ZN�[NN�\N�]�^NN�_N�`�aN�bN�cN�dN�eN�fNNQ�N�h�iNN�jN�kN�l�mN�nN�oN�pN�qN�rNN�sN�t�uNN�v@N�x���y�g_�z�{���|���}���~�����LhMcW����Mj�d��b�����b�b���yb���������NcW����������������b�d$�������Y���Y���Y�Y���Y�����Y���Y�Y�zyb���b���b�p�������������������������������������L���L�������L���L���L���L�L���L���L�i��L���L���L���L�L���L���L�i����b�N{
b�������������azb�j�N����M����xvxv��������xvxv��3�{
��������MdMd��b�Lc�����������������b�c�b�d����`�`�i�b���������b�xvb�{
����d{����cW��cW��cW��cWcW����cW��cWcW����cW����cW��cW?@��cW?@cW��b�������������c�b���c���L�d{��L�d{����d{cWaNb�����b���b�d{�����������������c�y7t�g4`��`�b�����`�c�LL���`��L�`��	�
ty�
��b�NL�lib�[mc�N��7��6�b���$����b��b�����b��`�b��b�c�b��� ��b�d{t�b��!�#�"b��c�|vli�%�*�&�'b�c��(�)NiMd{b��+�.�,�-db�d{c��/�0lib��1�5l��2�3�4lZ���lZ`�m�M�c��8L��9�:Mak�;b��<�d�=�W�>�A�?p��@{�p���p��B�C�Mp��D�Ep��Fp��Gp�p��Hp��I�Jp��Kp��Lp�p��Qp��N�Op��Pp��Qp�p��Rp��S�Tp�p��Up��Vp��Q�X�}�Y{��}�Z�}�[�\�}�}�]�^�}�_�}�}�`�}�a�}�b�c�}p��}�e�}���f�g�r�hp��ip�p��jp��k�lp�p��m�np�p��o�pp�p��qp��Q�sp��tp��up��vp��wp��xp�p��yp��zp��{p��|�Qp��~�����������p���p�����p�����p�p�����p�p�����p��Qp�����p���p���p�����p���p�p��Q������p���p�p���p����Qp���p�p���p�����p�p��Q����p���p�����p���p���p���p�p�����p��Qp���p�p�������p���p���p���p�����p�p��Q��p���p�p�����p�p���p��Qp�{�p����}p���������������������b�c���c���c���`�c�d{j*����b�xv��b�������iM������iM�����:����<��8��hN<��������������8�:�8iM<��:�8����iM����������xvb���b�Wpb�d]��b�b�`������������d{li��cWF���F�����F�F���F�����F����M����������O�����������������O���O���O�y������O�4�o�O���������o�O�o�4�4y����O��O��O��O�Oq��g4�b��b��b�b��b��	b��
�b��b�b��
�b�b��b���b�@b���9��8nW���%M��M���M���M��M���M�M��M��� M�M��!�"M��#M�M��$M���&�)M��'�(��M��*M�M��+�,�2�-M��.M��/M�M��0�1M�{�M��3M�M��4�5M��6M��7M�{�M�c�l��:�n�;�L�<�F�=�>N`�b��?�@�DL��A�BL�L��CL��L��EL���G�Kxv�H�Idd�J�Zdi�b��M�k�N�OkuN�Pq~�Q�[�RMM�SM�T�UM�VMM�W�XM�YM�ZMM�;�\M�]cf�^cf�_�ecf�`cf�a�bcfcf�c�dcfcfq�cf�f�gcf�hcf�icf�jcfq�cf�l�mMb�db��o‡�p„�qƒku�r�s�v�t�uNb�Q�Q��w�xb�L�yd�zMg��{�|�}g�g��~g��g�€g�M‚Mg�Mg4M…†L�M�L�`�ˆ‹‰ŠN{
b�cWŒb�d{L�Ž��»™‘’d{L“–q~”q~•q~{
q~—˜q~q~{
rfš›´œ¨¤ž¡dŸd o�d¢dd£o�dd¥¦dd§q�d©°dª«­d¬dq�®¯do�q�o�±d²dd³do�µdd¶·dd¸¹dºddo�¼����½�,¾d¿M��b�`���M��dMb�c���������d]w�b��,����M�c�b�M����v�����������c�����c�c�����c���c���c���c�c���c���c�����c���c�c�����c���c���c���c�c���c���@c�Lb�����������������b�dnW`�����Nb�iML�����ak��az�����az��az�az�az�azaz��azazwUaz�az��az�az�azaz��azwUazi����i��5������k�	��
��q�q����
q����>�����q�����q��xv�������q�xv��������)��k�>��!��>�>�q��� ��q����"�,�#�&�$�>�%���>���'�*�(�)q�����q��+��q����-�0�.�����/q����1�2��q��3�4q���q�xv�6�\�7�M�8�Dxv�9�:q��;�����<�=���>���?���@�����A���B���C�����E�H�F���G�)��q��I�K���J�)q��L����q��N�[�O�Pq����Q���R�����S���T���U���V���W�X�����Y�Z��q�����xv�]�e�^�a�_�k���`��q��bxv�cq��dxv�k���f�gxv���hxv�kxv�jÓ�kÂ���l�m�o�nxv�����p�|q��q�rq�xv�sxv�txv�uxv�vxv�wxv�xxv�y�z�{xv����xv�}À�~�q�����q��kÁ�k����ÃÄËÅÊÆÈxvÇxv�k��Éq���q��>ÌÏxvÍq�Î��q�ÐÑ�>q��>Òq��>Ô��Õ��Ö��kרãÙâq�ÚxvÛq�ÜxvÝÞxvßxvàxvxváxv��xv��äå��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�����xv�������������>�)��������xvq�����������������q���q�����q�����q������)������q�PW������������������xv��������������O4��������q�����xvq��������k�����������)�����>PW�>��������������xvq�����xv��q���c�b�kuL�ĩ����������iMb�`�c����Hb�d{b�����m�b�tyd{�b�b�c��	�
b�`�lb���u�
�B��'����M�b�iMxv���iMdg4�b�L��L���L����L���_�L�L���L�� L��!L��"�&L��#L��$L��%�L�L���(�0�)�/�*ku�+�-�,AeAe��.AeAeN�xvb�b��1b��2�3�5�4i�i��e�6i��7i�i��8�9i��:i��;�e�<�e�e�=�>�e�?�e�@�e�A�ei��e�C�e�D�F�Eb�b��x�G�dgQ�H�I���J�Y�K�R�L�O�M�Nh4d]d]y�P�Qy(�Cx�x��S�V�T�U�n݋x�x��W�Xݙ�^x�h4�Z�]�[���\�M�^�a�_�`b�hBݶy�b�c�^d]yd]{
xv�f�o�g�n�h`�|��i�j�lt��k�m|�{
�m�m|���b��p�tak�q�I�rM�sHG`�n�ak�vty�wĈ�xdd�yd�z�{d�|d�}dd�~�ddĀāddĂăddĄdąĆdćd@dĉędĊċddČdčĎdďddĐdđdĒdēdĔĕdĖdėddĘd@ĚděddĜĝdĞddğĠdġdĢddģĤddĥĦdħddĨ@dĪ�uī�EĬ��NĭĮľNįİNıNIJNNijNĴNĵĶNNķNĸĹNNĺNĻļNNĽ@NĿN�N�N��NN����NN����NN����N��NN��N����N��NN@��j����������������_�TF��Oq��NN+N����N;������N;������NOTOT\�������N[�N��OTNOT��OE��������N��YQ���NSN������Q�Q�OE����TFNNVp��Ű���������P}���OEOTNN;P}Q����SN+�N�N��NR��N;N+N��}N��NN�Q����1���	��
OT�OTNOT�
NOTN��!��N���N�NOTOT�OTN����N�NOTOT�OTN��N�NOT� NOTN�"�'N�#N�$�%�&NOTOTN�(�,�)�+N�*NOTOTN�-�/N�.NOTOT�0OTN�2�`�3�I�4�=�5�8N�6OT�7OTN�9�;N�:NOTOT�<OTN�>�C�?�AN�@NOTOT�BOTN�D�FN�ENOT�G�HNOTOTN�J�T�K�P�L�NN�MNOTOT�OOTNN�Q�R�SNOTOTN�U�Z�V�XN�WNOTOT�YOTN�[�]N�\NOT�^�_NOTOTN�a�v�b�m�c�h�d�fN�eNOTOT�gOTN�i�kN�jNOTOT�lOTN�n�qN�oOT�pOTN�r�tN�sNOTOT�uOTN�wN�xN�y�{N�zNOT�|NOTN�~ůQ��ŀ[�NŁłNŃŚńœŅŌņʼnNŇN;ňNN;NŊN;ŋN;NōŐNŎN;ŏNN;NőN;ŒN;NŔŗŕŖNN;NN;ŘřNN;NN;śũŜšŝŞNN;NşŠN;NN;ŢŦNţŤťNN;NN;NŧN;ŨNN;ŪNūŬNN;NŭŮNNN;OTU�ű�Ų��ų��ŴNŵ��NŶŷNŸNŹ�źŽŻżNN;NN;žſNN;NN;�������NN;NN;����NN;NN;��N��N����������������N����N;NN;NN;����N��N;��N;NNN;��������N��N;��NN;NN;����NN;NN;������������NN;NN;����NN;NN;��������NN;NN;����N����N;NN;NN;��_���OTOTN���N+NTFX#P}����Q�Oq�P}N��NP}�NOTN�����A����	Q�����[�NN+�U\NQ��
�OE���
P}NP}O�����[�N+NN;�NQ�N�����N��NOqP}NN+N;��Q��N�N;NN� N�!�"Q��#N�$�3�%�,�&�)�'�(NN;NN;�*�+NN;NN;�-�0�.�/NN;NN;�1�2NN;NN;�4�;�5�8�6�7NN;NN;�9�:NN;NN;�<N�=�>NN;N�?�@NN;N�B��Cƾ�D�EN;P}�F�HN�GNO��INN�J�Kƅ�L�XN�MN�N�O�S�P�QN;NN�RNN;�T�VN;�UN;NN�WNN;�Y�o�Z�e�[�`�\�^N;�]N;NN�_NN;�a�cN;�bN;NN�dNN;�f�i�gNN;�hN;N�j�m�k�lN;NN;NN�nNN;�p�{�q�v�r�tN;�sN;NN�uNN;�w�yN;�xN;NN�zNN;�|Ɓ�}�N;�~N;NNƀNN;ƂNƃƄN;NN;NƆƪƇƝƈƒƉƌNƊƋN;NN;ƍƏƎNN;NƐƑNN;N;NƓƘƔƖƕNN;NƗN;NN;ƙƛƚNN;NƜN;NN;ƞNƟƤƠƢơNN;NƣN;NN;ƥƧƦNN;NƨƩNN;N;NƫNƬƵƭưNƮƯN;NN;ƱƳƲNN;NƴN;NN;ƶƻƷƹƸNN;NƺN;NN;ƼNƽNN;Nƿ�NQ�]�N+��������Q�TFN+������OTOEOTN;��������N��P}NN��NOc��N+NP}���8���/���,��������Q�N����NQ�OTN;���*��N������N��������������N��NQ�����Q�NNQ���������Q�NNQ���N��NQ�N��������N��NQ�����Q�NNQ�����Q�NNQ���Q�NNQ��N�N������Q�NNQ���Q�NNQ���	��Q�NNQ��
�Q�NNQ��
N��"������N��NQ�NN�NQ���NQ�NQ�����NQ�NQ���!N�� Q�NQ�NQ��#N�$N�%�(N�&Q��'NQ�N�)Q�NN�+Q�Q��-�.NN;N;P}�0�4�1�2Q�TF�3Q�Q�N�5�7N;�6P}NN;P}�9�=�:P}�;�<R�N;N;N�>Q��?�BOT�@N;�AN;N�CQ��DNN;N�F�[�G�J�H�Ij*b�b�j�b��Kb��L�b�M�N�b�b�O�b�P�Q�b�b�R�b�S�T�b�b�U�b�V�b�W�X�b�b�Y�Z�b�b@�\�_�]�^c�b�M�d{�`�ab�`�ak�b�c�dinW�e�h���f�g�
p�r��idd�jd�kd�l�md�nd�od�pd�qd�rd�sd�td�ddL�w˽�xɧ�y�%�z�5�{d{�|���}���~ǘ�ǑǀǃǁǂNMdaNDŽǐcWDždžL�L�LJL�LjL�ljNJL�L�NjnjL�ǍL�L�ǎǏL��:L�Mc�ǒǕǓǔЛL�cWNǖǗg_nWM�d]ǙǧǚǤǛǜMb�L�ǝǞǡǟǠ`�`�`�iMǢǣb�daziMǥǦb�lb�|�Ǩ�ǩ�ǪdǫǶǬǵ�ǭǮNǯNǰNDZNDzNdzNǴNQ�NiM�iMǷǸdǹiMǺiMǻiMǼiMǽiMǾiMǿiM�LiMdM����b��,b�d����������������dt�M��NM����`�t�db���������Mb�Nb�����xvMLN������������Nb�b�Lb���b�M��������l�g4dL����c�b�xvL���
������������������L�dc�dp�����m�g_LiM��������M�MЛK�M��dg4������b�`�ML���dc�b�d]����McWaNnW��	�N�����iMe�ږ��^Cb�b��IiMd�����
�b��L�b���c�`�q~`�����o�b�Mb���dMm�d��+����j�L�b�ML�b�� ���!�"�����#�$���%���&���'�����(���)���*�����,�2�-�1g4�.�/@�0@ku@b�M�3�4b��XL�M�6�^�7�I�8�Hty�9�:L��;L�L��<L��=L��>�?L��@L��AL�L��BL��CL��DL��E�FL�L��G�L�b�j*�Jb��K�Z?d�L�M?d�N?d�O?d?d�P�Q?d�R?d�S?d�T?d�U?d?d�V?d�W?d�X�Y?d?d�'M�[�\b��]aNq~M�_ȴ�`Ȍ�a�w�b�l�c�dL�b�q~�e�f�iM�gM�hM�OM�jM�k�;M�m�vM��n�o�s�p3��q�rx���3��7���t�u3�3���w�{
�xȂ�yȁ`��z�{��|�}b�d$b��~b�b�yȀyd$t�M�ȃȄhakȅxvȆȈwȇubv�ȉȋgQȊ�v�b�kXȍȞȎȝȏȐb�Mȑy7Ȓ`�ȓ`�`�Ȕ`�ȕȖ`�ȗ`�Ș`�`�șȚ`�`�țȜ`�`���nWL�ȟȢȠȡkuMMb�ȣȤb�rfb�ȥȦȭȧȪȨȩLM�dc�ȫȬMd{b�liȮȱȯȰc�Md`�Ȳȳkuakdq~ȵ�ȶ��ȷ��ȸ��a"ȹȺ��Ȼ`�ȼ�`�ȽȾ`�ȿ`��`�`����`�`�����`��`�`�������`���`���N��b���b���b�d$b�����d�FN���������������~�Fj��F�����Uj��U�d��������j������d���d���d�d���������~���~�d�~���d���d�~�d�r������j��d�������c���Mo���`���L���L���L�L�����L��L�L��L��L��L��L��L��:���`�b��b��b��d$b�iMc�����b��azcW���g4L��	�
L�L���L�L��
�L��L�L����`�b�����xvn�db���$�b��M��M��M�M���M�M��M��M�� M��!M��"�#M�M�>�g4c�M�&�'�}�(�N�)�,�*�+b�cWNM�-�?�.`��/Z�Z��0�1�<��2�3��4���5��6��7��8��9�:���;Z����=�>�Z���@b��Ab��Bb��Cb�b��Db��Eb��F�Gb��Hb�b��I�Jb�b��K�Lb�b��Mb�b��O�n�P�_aN�Q�Rb��Sb��Tb��Ub�b��V�Wb��Xb��Yb��Zb��[b�b��\�]b��^b�b�b�b��`�aM�bM�cMM�d�eM�fM�gM�hM�iMM�jM�k�lM�mMd�M�o�p��c��qM�N�rN�sN�tN�uN�vN�wN�x�yN�zN�{NN�|NQ��~ɠ�ɞɀɁ|�b���ɂɃɓɄɍɅɊɆɈdɇb�ddɉb�dɋLdɌdLɎɑdɏɐddb���ɒdiMɔɚdɕɖɘɗiMdiMiMəb�dc�ɛɜiMiMɝo�lxɟL�d`�ɡɤɢɣd{c�akb�ɥɦw�b�b�n�ɨ�2ɩʏɪ�ɫ�c�ɬɭ��3�ɮɯɸ��ɰɱɵɲ��ɳɴ����3���3�ɶ3�ɷ��3�ɹɾɺɼɻ3�3���ɽ��3�����ɿ���3����3�����������b�������b�b���b���ku����~���b�~�����~�~���~�����~�~�����~�b�~������b�������ku������b���~���~�~���~���~���~�b�b���������~���~�~�����~�~�b�~���~�����~�~���~���~���b�~�b���~�����~���~����~����~�~��~���~�~�b��~��~��~�~��~��b�~����b��b��ku�ku�kuku��kuku��	kuku�
ku�y"ku�
3���������3�iM�b������b���b��az�b�b�kudb��b��b��ʌ�b���v� �Z�!�>�"�6�#�2�$�'�%�&���`�m;�(�1�)���*�����+���,�-�����.�/���0��������`��3m;�4�5�������7���8�;�9�:�p`������<�=Q������?�S�@�G�A�D�B�C���4���E�F����� `�Q��H�I�J�����K�p�/�L�/�M�N�/�O�/�/�P�/�Q�R�/�>�/�T�W�Um;m;�VQ��4Q��X�Y�S����[�l�\�d�]�aQ��^�_�`�p�����Q��b�c��Q����e�hQ��f�g`�� ���i�k�jm;���pm;Q����m�n�u�o�r�p�q���C���b�s�t��p�������wʅ�xʁ�y�}�z���{�����|�����~�����ʀ�����qʂ��m;ʃʄQ���Q�ʆʇ����ʈʊ��ʉ������ʋm;��ʍb�ʎaNMaNʐ��ʑ��ʒʼʓʖʔʕL�q~q~�,ʗʱdʘʙʥNʚNʛʜNNʝNʞʟNʠNʡNNʢNʣNʤNx�MʦʧMʨMMʩMʪʫMMʬMʭʮMMʯMʰM��ʲakxvʳxvʴxvʵʶxvʷxvxvʸʹxvʺxvxvʻ��xvʽ�ʾʿ�nW`�b����b�d��L��ak������ak��akhak������akake��ak��������L���Nb�b���b�j���������b�`�q~c�����L�g_c�����g4������2g4��g422g4������
���
����Mb���b�������M��������MM����M��MM���;���;�����;M�;M����M�M�;M�MM���;�M�MM��MM�M�M�g�MM����M�M�M�Mq�M�	M�;M��b�tyrfM����c�lixvd��b�c��c��xv�xv��Mxv��xv��xv����+��(��`�c�� `
�!�'�"L��#�&�$�%��n��yg	��gndb��)�*dL�b�cW�,�/�-�.c�`�v�p��0�1ML�Mb��3˪�4�P�5�8�6�7L�n�Mt��9�I�:�,�;�@�<�>�=t�c�az�?t�Lc��A�Dt��Bt��CL�c��E�Hc��F�GL�c�NLc�b��J�K�MgQ�Lb�gQ�N�OgCkXgCb��Q�w�R�S{
|�b��T�U�i�V�\�W�Xb���Yb���Zb��[b�p��]�d�^�a�_b��`b�b�p�b��b�cb�~�x��e�h�fb�b��g~�b�b���j�mb��k��l�L��n�vb��o�p�s�q�r������+��t�u���������b��x˞�yˏ�z�}�{b�ku�|kuc��~˄�����ˀ��ˁ˂˃�M��q���˅��ˆˎˇˊˈxvˉxv��xvˋxvˌˍ��xv��xv����ːg_ˑg_˒g_˓g_g_˔g_˕˖g_g_˗˘g_g_˙˚g_g_˛g_˜g_˝@g_˟c�ˠb�ˡ˩ˢb�ˣb�ˤ˦˥�,�˧˨,�`��b�cW˫b�t�ˬt�˭ˮt�t�˯˰t�˱t�t�˲t�˳˴t�t�˵t�˶˷t�t�˸t�˹t�˺t�˻˼t���t�˾`�˿��M���M�M�����M���M�M���M�����M�M�����M���M�M�����M���M���M���M�M�����M�M���M�[���S��̢����d��M�����M�M�����M�M������b���=���
�������[�����[������k�k�l�[��������`��[Pfִ������`�`��[������������[`�����֖`�֖l,��֖�����,�d��*�����֖uG֖�h�l<֖��
��	�lkl[�l[�l[�l[�l[�l[�[l{l����:֖l�����2����֖������[Pfk����ִaFsy֥��lL�y�jPf��#�� ��kִaF֥�!�"���JlL�y�$�/�%�&�[aU�j�'�(�[�)�[�*�[�+�[�[�,�-�[�[�.�[֥�0�1`��[�[�Y�3�9�[�4�5�7`��6l`�֖�8�[`��:�[`��;�[�<�[��>�]�?�X�@�L�A�G�B�D�C�[l�[�E�F�[`�`�d�H�I�i�y�J�Ks���*`��M�T�N�Q�O�PuG�,���R�S�[h��[si�U�W���V���[`��[�Y�[�[�Z�[�[�\�[�[`��[�^�[�_�[�`�[�a�[`�N�c�d�r�eNN�f�gN�hNN�iN�jN�k�lNN�mN�nN�o�pNN�q��N�s̀N�t�uN�vNN�w�xN�yNN�zN�{�|N�}NN�~N�Nx�Ń̂̍Q�̃̄Q�̅Q�̆Q�̇Q�̈Q�Q�̉Q�̊Q�̋̌Q���Q�̘̎Q�̏Q�̐̑Q�̒Q�Q�̓̔Q�Q�̖̕Q�Q�̗NQ�Q�̙̚Q�̛Q�̜Q�Q�̝Q�̞Q�̟̠Q�Q�̡Q�Ṇ̤w�b�̥�̦��̧̨̹̲̩̭̪̫Lc�̬d{���̮̯Nٰ̰g_̱�l�yak̷̴̶̳L�̵Lld{L�̸b�Nc�̺��̻�̼̽p�akc�̾̿�w�gQwb�������az����ubv�ubaz`��������-ww����������c�w�akL������b�����������hzq~`�����������������dlazg_����LcW��N+��������d��rdd������b�azv�kX����������2�8�i����b�ww�wME�����������dL�d{
������y7�d���Kb�����dMd{d��LgQe�`���3��&��
����b�d{�b�����ML�M�	c�p�c��� ��
dazd{��m����m��m�m���m�m��m���m��m��m��m��m��m��m��m��m��m��!�"d{c��#�W�$�%i�b�cWiM�'�.�(�+�)�*c�b�L�c��,�-xvb�Md{�/�1b��0K�b�b��2Lb��4�C�5�<�6�9�7�8K�l���li�:�;azb�b�d{�=�B�>�?iMd{M�@�AMdiMb�N�D�L�E�Gc��FkXN�H�Ib�dd{�Jl�Kld{�M�Q�N�OMb�c��PL�b��Rb�b��I�T�f�Ut����V���W�X�����Y���Z�[�����\���]���^�_���`���a���b���c���d���e��d��b�d�h�z�i;r�j�<�kҋ�l�0�maz�n��o�?�pΦ�qΊ�r͔�saz�t|�u͌�v̀�w�{�x�zm�ym�����"�|�~�}��"�j�ju�͇́͂̓u�t�̈́ͅt�azaz͆azt�͈t�az͉az͊͋azt�az͍az͎az͏͓͐t�͑t�t�͒t�j�1jaz͕͖��͗��͙͘͜͡az͚͛azw�az͝azu�͟͞az͠azaz�waz͢azͣͤͧazͥazͦv�azͨ��azͩazͪazͫͬͳazͭazͮͯͲazͰͱjazjazjʹ�͵ͻͶ͸azͷazjaz͹ͺjjazͼͽazjaz;Ϳjazj�������azjazj��azaz��j��azj��azt�az������azaz��az��az��azj��az��j���4���/����w�az������az��������az�1azv�azv����.���az��az������az��az����azaz��az��azgC���	���������������azgCgCaz����azgC��azazgC�����azgCgCaz��azgCgCaz������azgCgCaz��azgCgCaz����azgCgCaz�azaz�gCaz�
az��az��
�azgCgCaz����azgCgCaz�azaz�gCazaz�az��az��&az���!�� az�az�azwazw�"�#azwaz�$w�%waz�'az�(�+�)�*azwazw�,�-azwazwazu��0�3�1az�2azazv�waz�5�:�6azaz�7�8�9ubazu�az�;�Baz�<�=�>t�az�?�Aaz�@azv�jaz�C�I�D�Haz�E�F�Gazv�v�azazj�J�O�K�M�LazazkX�Nazv�az�P���Q�w�Raz�Saz�T�o�U�^�V�Zaz�Waz�X�Yazazv�az�[az�\az�]azv��_�g�`�caz�a�bazazv�az�d�e�fazv�v�az�h�laz�i�j�kv�azazv�az�m�nv�v�az�paz�qaz�r�uaz�saz�tazv�az�vazv�az�x�yazaz�z�{΀az�|az�}az�~az�azv�΁΅΂v�v�΃΄v�v�azΆaz·azΈΉv�azv�az΋azΌazaz΍ΎΐazΏ|�|ΑΚz�Β��ΓΔΗ�,ΕΖ�,H:�,�Θs�Ι�,N*ΛΠazΜΝazΞΟazt�t�gCΡaz΢azΣΥazΤv�azwazΧ�Ψ|ΩazΪ��Ϋ��άκazέήΰίazv�azαηβδγubgQubεζubgQwUazkXθazιazjλ��μξνazkXazο�gCw�az��b�waz�����������waz��azv�waz����azt�����azkXaz�w����az����azub��waz��������az��v�����azu�az����az��jazazwaz��az����azkXgQ���U������az��j��az��wc�����az���az��az����az���w�����w������w��waz��wazazw���az�azwaz�w�azaz�azw��
��w�w��azwazaz���	az�azwwaz�w�w�
waz��wazw�az�azt�az�az��S���azt�azaz��az��"�azaz�az��az� az�!v�azv��#�,az�$az�%az�&�'�*�(�)azv�v�azaz�+azv��-�D�.�9�/�4�0�2v��1v�azaz�3azv��5�7v��6v�azaz�8azv��:�?�;�=v��<v�azaz�>azv��@�Bv��Av�azaz�Cazv��E�O�F�K�G�Iv��Hv�azaz�Jazv��L�Mv�azaz�Nazv��Paz�Qazv��Rv�az�TazkXaz�V��W�az�X�YϨaz�Z�[ς�\az�]�r�^az�_�h�`�e�a�bazwUaz�c�dwUwUaz�f�gazwUazwU�i�l�j�kazwUazwU�m�oaz�nazwUaz�pwU�qwUazaz�s�t�|�u�waz�vazwU�x�{az�y�zwUazwUazwU�}az�~�azwUazπρazwUazu�στϑυωazφazχazψazv�ϊόv�ϋv�azύazazώazϏazϐazv�ϒazϓϝazϔϕϘazϖazϗazv�ϙϛv�Ϛv�azazϜazv�ϞϥϟϢϠazv�ϡv�azϣazv�Ϥv�azϦazϧazv�azϩazϪazϫazϬ��ϭϾazϮϯϳazϰazϱazϲazb�ϴϹϵϷ϶azb�azϸb�azb�Ϻϼϻazb�azϽb�azb�Ͽ��������������azb�az��b�azb�������azb�az��b�azb�����az����b�azb�az����b�azb���������������azb�az��b�azb�������azb�az��b�azb�����������azb�az��b�azb�������azb�az��b�azb���az��az�������������azb�az��b�azb������azb�az�b�azb������azb�az�b�azb����azb�az�b�azb���	��az��azw�az�azu�az�
���azgC�
�t�mu�azmw���az���azkX�u�azaz�azkXaz�w��,az�az�az�az��az� az�!azaz�"az�#�$azaz�%�&az�'az�(az�)azaz�*�+azazw�az�-�.az�/�>az�0Ba�1Ba�2�3Ba�4Ba�5Ba�6BaBa�7Ba�8Ba�9Ba�:�;Ba�<BaBa�=Ba|az�@��az�A�B�y�C�Taz�D�Eazaz�Faz�G�Hazaz�Iaz�J�Kazaz�L�Mazaz�N�Oaz�Paz�Qaz�Raz�Sazaz@�U�e�Vaz�Waz�Xazaz�Yaz�Z�[azaz�\�]az�^az�_azaz�`az�aaz�baz�caz�dazw��f�uaz�gaz�h�iazaz�j�kaz�laz�maz�nazaz�o�pazaz�q�raz�saz�tazazw�v�waz�'az�x|az�z���{��|�~�}|az|az|Ѐ��Ё��ЂЃ|azЄ@Ѕ�azІazЇЈЬЉУЊДЋt�ЌАЍt�t�Ўt�Џv�t�Бt�Вt�Гt�azt�ЕОЖКt�Зt�Иt�Йw�KЛt�Мt�Нt�u�t�Пt�Рt�t�Сt�Тt�mФt�t�ХЦt�t�ЧШЪЩt�t�t�t�Ы�1t�Э��Ю��Яоазбдb�вb�гb�wb�ежb�b�v�илйb�b�кb��?мb�нb�b�gCп���b��b�b�����b�b�����b�b���b�v�����������b���b���b�b�v���������b���b��M����b�gCwgQ��b�b���w*b�b���b���b���b���wb�����b���������b�b�����b�v�b�b�������b���gQb�b���v�b���b�����������b���b�b�gQb���b���b�kX�����b��b�v�b�b��b��v�b��ѧ��Y��9����gC��gC�gC���gCgCv�gC�gCv������	gCgC�
gC�gCv��
�gC��gCkXgC�gCgC�w�gQ����gC�gC�gCv��gC�gCgC��gC�gC�gC�gQgC� �3�!�+�"�&gC�#�$gCgC�%b�gCgC�'gC�(�)�*gCv�gCv�gC�,�-�0gC�.�/gCwgC�1gCgC�2gC�M�4gC�5gCgC�6�7gCgC�8wgC�:�G�;�AkX�<�=kXkX�>kX�?kX�@kXwkX�BkX�C�DkX�EkX�FkXkXv��HkX�I�PkX�J�KkX�L�NkX�MkXv�kX�Ov�kX�Q�UkX�RkX�SkX�TkXv��VkXkX�W�XkXkXgQ�Zњ�[�x�\�k�]�b�^kX�_kXkX�`�akXkXgQ�c�gkX�dkX�e�fkXgQkXkX�h�ikXkX�jkXgC�l�qkX�mkX�n�okXkX�pwwkX�r�skX�t�v�ukXv�kXkX�wv�v��yѐ�zч�{�kX�|kX�}kX�~��kXрфсkXтуv�kXwkXхkXцkXv�kXшьkXщъkXыkX�MkXэkXkXюkXяv�kXёkXђіѓkXєkXkXѕkXv�kXїkXјљkXkX�?v�ћќv�ѝѢўv�џv�Ѡv�ѡv�v�v�v�ѣѤv�v�ѥѦv�gCv�ѨmѩmѪ��ѫѵѬmѭѱѮmѯmmѰmv�ѲmѳmѴmu�mѶѻѷmѸmѹmѺmmt�mѼѽ�mѾѿmmwm�m���1mm��������mm����m��mwm��m������mm��t�m��m��mmt���azaz������az����azv�az������azazj��azjw�����az��az���az|az����������azaz|az����az|azaz����azaz��@||��az��az��az������|az��az|�|az���az�az�azaz��az�az�az�az�azaz�az�az�az�az��az�azaz�az�	�
az�azw�azaz�
az�az���az�az�����|daz||�az|��.�azaz���!�az�azaz�az� v�az�"az�#az�$azaz�%�&azaz�'�(az�)azaz�*�+az�,azaz�-w�azaz�/az|�1�taz�2�3�S�4az�5�G�6az�7az�8az�9az�:�@�;�<az���=�>az�?azazw��A�Daz�B�Caz�az�E�Faz�az��Hazaz�I�J�O�Kazaz�L�Mazaz�Nt�az�P�Q|azaz�R|az�Tazaz�U�V|az�Waz�X�Y�\�Zazaz�[az|�]�_az�^az|�`�aaz|�baz�caz�daz�e|�f|��g�h�n��i�j���k�l��m�|��o���p�q���r�s�|��uaz�vazaz�w�xaz�yaz�zaz�{az�|azaz�}�~azaz�Ҁazazҁaz҂҃az҄az҅azaz҆az҇az҈az҉azҊ@azҌ�^ҍԯҎ�#ҏҷazҐґҤҒazғazҔazazҕҖazҗazҘazҙazazҚқazҜazҝazҞazazҟazҠҡazazҢazң@azҥazazҦazҧazҨazҩazҪҫazҬazҭazazҮazүazҰұazҲazazҳҴazҵazҶazaz@Ҹ�ҹ��Һazһ��azҼҽazҾazҿaz�azaz���az��azaz��az��az����azaz����az��az��azaz@az������az����azaz��az����azaz����az��azaz����az��az��az��az��az@azaz����az��az��azaz��az����azaz��az����azaz����az��az��az@azaz��az�����az����azaz����az��az�az�az�azaz�az��azaz�az�az��azaz@�azaz�az�az�az�az��azaz�az�az�	�
az�azaz��
az�az@az�az�azaz�az�az�az�az��az�az�az�azaz��azaz�az��az� az�!az�"azaz@�$�D�%az�&az�'�/�(�)gQkXkX�*�+b�b��,�-az�.azb�az�0�A�1az�2az�3az�4azaz�5az�6�7az�8azaz�9�:azaz�;az�<�=azaz�>az�?az�@azgC�B�Cu�azv�gQ�E��Faz�Gaz�HӀ�I�Taz�J�K�Naz�LM�MazLaz�Oaz�Paz�Q�Razaz�Sazw��U�k�V�`az�Waz�X�Yaz�Z�]�[�\������^�_D���az�aaz�bazaz�c�d�faz�e���g����h�i�j�����l�z�m�v�naz�oaz�p�sv��qv��rv�az�tazv��uv�az�waz�xaz�yazR7�az�{�|az�}��~|�|�|Ӂazӂ��ӃӜӄӍw�Ӆӆӈw�Ӈw�jӉӋw�ӊw�w�ӌjjjӎӗӏӕӐӓӑӒjw�w�v�Ӕwq�ww�1Ӗv�v�Әӛwәw�Ӛmv�v�w�ӝӮw�ӞӟӫӠӪw�ӡӢw�ӣw�w�Ӥw�ӥw�Ӧw�ӧw�Өw�өazw�w�azӬazӭazw�azӯ�ӰӽӱӻazӲӳazw�Ӵӵw�w�Ӷӷw�Ӹw�ӹw�Ӻw�azw�azӼv�w�Ӿӿwqv���v��t�����w���w�����w�w�u���������������������������������������w��������������������gQ������������{���gC��������kXgCv�������������b�����������v�v���v�az��v���wv����������azwu���az�az��az��ubaz��������������w���������������gC������0wgC���b�{��0kX��0w������	�t�azv��
azu����az�
azv���v���az����az�az��az�w8azaz�az��az�az��|az�az�Ԃ��e� �-az�!az�"az�#�$�+�%az�&azaz�'�(az�)azaz�*t�azaz�,azt��.�4az�/az�0�1azaz�2�3azv�az�5�M�6�;az�7az�8az�9az�:t�az�<�H�=�E�>�Aaz�?az�@azv��B�Cazwt��Dazu��Fv��Gv�t�waz�Iaz�J�K�Lt�u�v�v��Naz�O�[az�P�Q�V�R�T�Saz�1u�v��U�Kaz�W�Y�Xv�u��K�ZgC�Kv��\�_�]az�K�^gCTz�`�cw�av��bazt�w�dt�kX�f�v�g�l�hazaz�iaz�jaz�kv�azaz�m�nazaz�o�p�saz�qaz�razv�az�taz�uazwaz�waz�xaz�y�z�~az�{az�|�}azazv�az�Ԁazԁazazv�ԃazԄԧԅazԆԐԇԌԈazԉazԊazazԋv�azԍazԎazazԏazv�ԑazԒԣԓԟԔԗazԕԖazazw�ԘazԙԜԚazazԛv�azԝazԞazv�azazԠԡazԢazv�azԤazazԥԦazazv�ԨazԩazԪazԫazazԬԭazazԮv�az԰��Ա�hԲ�Գ��ԴazԵ��ԶazM�ԷԸM�M�ԹԺM�M�ԻM�ԼԽM�M�ԾԿM��M�M����M���M���M���M�M�>�u�azaz��az����������az��az����azaz��az����az��azaz����azaz��az��u�az���������az�azaz��az�����������|����|���|���������k��]�������6|W|����az��|��|az��������|az@az����az|az|az�az�az��������azaz@��azv��az�����f��#���az|azaz��	�
az�
az�az�n�az��az��v�azv�b�gQ��1�azaz��az��az���<azaz����� az�az��wazaz�!�"az�#�*�$�'�%�&������Z�(�)���j��
�+�.�,�-������/�0wqu��1�waz�2az�3�4|�5�G�6azaz�7�8az�9�@�:�=�;�<����;J�>�?����<wF�A�D�B�CwF"��1���E�FRT���?���Haz�I�g�Jaz�K�Z�L�T�M�O�N�����P�&�&�Q�R�&�&�S��&�U���V��W��X��Y�����[�a�\�
�]��^��_���`����b�c��d���e��f��1gCaz�i՝�jՆ�kaz�lazaz�m�nazaz�o�p�y�qazaz�raz�saz�t�uaz�vaz�waz�xazgCaz�zazaz�{az�|az�}az�~az�ՀazazՁazՂazՃazՄՅaz@azՇazՈazՉazՊazazՋazՌazՍՎazՏՖՐazՑazՒazՓazՔazazՕazgCaz՗az՘ՙazaz՚՛azaz՜azw՞ձaz՟azՠաazazբգazդazեazazզazէazըazթժazիazլazխazazծկazazհaz@ղ�azճմazյazնazշazazոչazպazazջռazazսվazazտ�azgCaz��azaz��az��az��az����azaz����az��az��az��az��azaz���az�������az��az��az��az��az����azaz��az����azaz��az��az��az����azaz����azaz��az��az��@az��az��az��az��az��az��azaz����azaz����az��az��az��az��azaz���az�az�azaz�@az���az�azaz��azaz�az��az�az�az�az�azaz�az��az�	azaz�
az�az��
azaz@��"az��az�azaz�az�az�az�az�az��azaz��azaz��azaz�az�az� az�!@az�#�D�$az�%az�&�5�'az�(azaz�)az�*�+az�,az�-az�.az�/az�0azaz�1az�2�3az�4azaz@az�6�7azaz�8az�9az�:az�;�<azaz�=az�>�?azaz�@az�A�Bazaz�Caz@�Eaz�Faz�Gazaz�Haz�Iaz�J�Kaz�Laz�Maz�N�Vaz�Oaz�Paz�Q�Raz�Saz�Taz�Uaz@az�Waz�Xazaz�Y�Zazaz�[�\azaz�]az@�_׸�`��a���b։�c�vaz�daz�e�fazaz�g�haz�iaz�jaz�kazaz�l�mazaz�naz�o�paz�qaz�raz�saz�tazaz�u@az�wazaz�xaz�y�zaz�{az�|azaz�}�~az�azazրazցւazփazazքazօazֆևazֈaz@az֊־az֋֌֭֍֝֎azaz֏֐az֑az֒az֓az֔azaz֕az֖az֗az֘֙az֚az֛az֜azaz@az֞az֟֠azaz֢֡az֣azaz֤az֥az֦֧azaz֨az֪֩azaz֫֬az@azaz֮az֯azְazֱazֲֳazazִֵazazֶazַָazazֹֺazazֻּazazֽaz@ֿ���azaz���az��azaz����az��az��az��azaz����az��azaz��az��az����azaz��@azaz��az��az��az����azaz����az��azaz����azaz��az����azaz��az����az��azaz@az��az����azaz��az��az��az��az����azaz����az��az��az��azaz��az��az���az�azaz�az@�ף��daz�az���Maz�������v��v��v�ww�wv��azaz�az�	az�
�az�azaz�
�az�azaz�az��azaz�@az��7��1��#��az���azv�gCkX�� ��b�ubv�v��!�"v�v�azt��$�+�%�(�&�'mu�azup�)�*v�jv�az�,�.az�-azv��/�0gCkXb�v��2az�3az�4az�5�6v�t�azv�az�8�9�Aaz�:�;�>�<�=azv�jv��?�@upu�u�m�B�I�C�F�D�Et�azv�v��G�Hv�v�ubb��Jaz�K�LkXgCv�az�Nv�az�O�P�[�Q�Tv��Rv��Sv�b��U�Zb��V�W�Xb�m�Yazv�azazv��\�a�]�^azu��_�`v�mazup�bu��cu�azu��eaz�fטv��g�hׄ�i�n�jaz�kaz�laz�mazv�az�oaz�p�sup�qup�rupaz�tׂ�u�{�v�y�w�xu�kXv�b��zazjaz�|��}�~v�gCv�az׀ׁazt�v�azaz׃mazׅazaz׆ׇ׋׈׉azu�׊azmv�׌ז׍ד׎אaz׏azb�בגv�azt�b�הazוazt�azazחmazazיazךכazלazםנמu�ןu�t�u�סazעazv�azazפץazצazקazazרשazתazaz׫׬az׭az׮azazׯװazױazײazaz׳az״az׵az׶az׷@az׹�׺��az׻׼az׽��׾azaz׿az�az�az����azaz����az��azaz����az��az��az��azaz��az����azaz@az��������az��������az��b�v�����mgCv�az��������ubkXv�az����v�v�u�v�����az����������wmwv�����azt�jaz��az��������v�u�v�v�����v�v�az��az��b�azaz��az�az��azaz�az��azaz��azaz�az�az�az��azaz��az�az�azaz�az�@az�	|�
|�����
az�az|azaz��|�azaz��az��w�j�azaz�az���%�� �az�az�azaz�az��!az�"az�#azaz�$az��&�+�'az�(az�)azaz�*az��,�0�-az�.az�/az�azaz�1�2�7�3az�4az�5azaz�6az��8az�9az�:azaz�;az��=ڈ�>ء�?az�@@�A�y�Baz�C�faz�Daz�E�F�Vaz�G�Haz�Iazaz�Jaz�K�Lazaz�Maz�Naz�O�Paz�Qazaz�R�Saz�Tazaz�U@az�Waz�Xazaz�Yaz�Zaz�[az�\az�]�^az�_az�`az�aazaz�b�caz�daz�eaz@azaz�gaz�h�iaz�jazaz�k�laz�mazaz�n�oazaz�p�qazaz�r�saz�taz�uazaz�vaz�w�xazaz@�z؍az�{�|azaz�}�~؊�؇؀az؁azaz؂؃؄azv�؅azaz؆v�azaz؈az؉az|؋azaz،{
|؎az؏azؐazؑazؒazؓazؔazؕazؖazؗazؘazؙazؚaz؛az؜azaz؝az؞؟azazؠ@azآ�أٰؤؼإAئH اAبصةدتH ثAeجEح@&خ@&A�ذ@&ر@&زE�س@شE�AH:ضH EطظAe@&عغ��ػAeAؽ�dؾ�-ؿ��A���������������Gt��Gt����GtGt����Gt��Gt��Gt��Gt��GtGt��Gt��Gt��F�Gt��GtGt����GtGt����Gt��GtGt����GtGt��Gt����GtGt���Gt����Gt������������G���F�G�F�����F���F�GtGt����F��������������F���A���
����������������F����I��V��������G�i@�I�F����F�I�F���F�B�F���Gt��F�GtF��	�
F�G�����F�G�F������G��G��G�G�F�G���F�F�G����F��F�F��F�G��GtF�Gt�A�A� AA�!A�"�#�)�$�'�%�&�*s�,>�(H:s�H:�*H:�+H:H:�,s�s�A�.�/�F�0az�1�7�2�5�3�4�M@�^F�Gt�6GtF��8�:F��9F�@��;�?F��<�=�>BG��^�@�BF��AF�GtF��CF��D�EF�^�\�G�a�H�N�I�L�J�KF�GtF���MF��k��O�U�P�S�Q�R�\F��F�F��TF���V�X�WF��k��Y�\�Z�[�V�H�F�F��]Gt�^�_�`��GtF��bF�F��cGtF��eٌ�f�v�g�lA�hA�i�jA�k�A��mBa�n@&�o�'�p�s�q��rA�@&@&�t@&�uA@&�wنA�x�y�~H��zE��{�|@&�}@&@&A�مEـفazقazazكلazv�az���'AهE�و@&ى@&يً@&A@&ٍ`�َُٟ`�`�ِّ`�`�ْ`�ٓ`�ٕٔ`�`�ٖ`�ٗ`�٘`�ٙ`�ٚ`�ٜٛ`�`�ٝٞ`�`��z`�٠١`�`�٢٣`�٤`�٥`�`�٦`�٧٨`�`�٩`�٪٫`�٬`�٭`�ٮ`�`�ٯ`��zٱ��ٲAAٳAٴAٵٶټٷH:ٸF�ٹAٺEzٻ�A@&E�ٽپE�ٿE�E���E�E�������������������������������A��H���@&��AA��AH���@&��F�@&Ae��������H�����AEz��Ez��Ez����Ez��EzEz������Ez��Ez����Ez����Ez��Ez��Ez����Ez��Ez��Ez��Ez����Ez����EzEz����Ez
_�����
_�������������F���F��E���A��A�A��H�H:�AAH �Ae�@&@&�A��A�A@&�A�AH A�Ba�	�
@&�@&@&�A�
A��A��AAe�A�A�AF���6��"�A��!�A�A�A�@&���A�A� AAAeH @&�#Ae�$AeAe�%Ae�&Ae�'Ae�(�)�1Ae�*Ae�+�,�/�-�.Ae��Ae
��0��AeN��2Ae�3�4��
��5Ae
�N��7�R�8E�9�CA�:A�;�<AA�=A�>�?A�@A�AAA�BA��DAA�EE��F�G�M@&�H�I@&@&�J�K@&@&�Laz@&�N@&A�O�PAA�Q�A�S�v�T�gA�UA�V�WAA�XA�YA�ZA�[A�\A�]�^AA�_A�`�aA�bA�cAA�d�eAA�fC�A�hAA�i�jE��k�pF��l�mA�nAA�oAeA�qAe�rAeAe�s�tAeAe�u
�AeA�w�xچA�yE��z�{A�|ڀ�}A�~A�AA�~ځAAڂAڃAڄAڅA�AڇA�ډ��ڊ��ڋ�/ڌ��ڍڎ��ڏzڐڑڒڮړڝڔڕJsGږڙsGڗژsGsG@ښsGڛڜ@+[�;ڞڟڡsGڠ��ڢsG�ڣڤsGڥ�ڦ�ڧ�ڨ�ک��ڪګ��ڬ�ڭ���گ��;ڰڱڴ@ڲڳsG�zڵ�ڶ��ڷ@�ڸڹ�ں�ڻ�ڼ�ڽ��ھ�ڿ���������J*@����������sG����@ �[��sG��sGsG���sGsG��sG�����_sG
���.�������sG��[�������sGsG������������������@��sG��sG�������jk�����������;����zsG����������� sGJ��@��������sG�sGsG��[sG������@sG�sG�@�sG���sG�_�sG���K@�sG���J�	��
z��z�z�
z��z��z��z��!������z�z���z�-�;z�����K�Z�i�x�� ���������"�(�#�&�$�%��������z�'����)�+�*�����,�-��-��<���0��1ۿ�2��3�m�4�L�5sG�6��7�A�8�<�9sG�:J��;��sG�=��>�?sG�@���B�G�C�E
�D�@�F@sGsG�H�I�JsGK�K�sG	YsG�M�N�a�O�`�P�]�Q��R��S���T��U�V���W�X��Y���Z�[���\��K��^sG�_sGsG;�b+�c�gsG�d�e�f ��sG�h�k�i�j*sG�;sG�lsGk�nj�oۡ�pۑ�q�}�r�y�s�usG�t�sG�vsGK�w��x�@�z�{;sG�| @�~ۉ�ۄۀۃ
ہsGۂ�
sG�ۅ@ۆۈsGۇsG�[��kۊیۋ�sG;		ۍsGێۏې[;�@ےۓۛ۔ۙ�_ە*ۖۗۘ@��sGKۚsGۜ۞sG۝�[۟۠�sG@;ۣۢۤ�_�{�_ۥ۲ۦۭsGۧۨ۬�۩۪۫�R��+;sGۮ۰ۯsG{
۱sGsG۳۷sG۴۵۶sG�sGJ۸ۼ�۹�ۺsGۻsG�۽sG�۾sGJ[�����z�RZ������C���B�����ܺ���0��������z����sG��sG@��@����������sGKsG������sGsG������e��&e���sG����������@����sG��sG�@KsG��������������	Y����	Y	Y������	Y��	Y��	YsW	Y������	Y��	Y�������	g	Y�������	YsG	g��	YsG	YsG���	Y
�	Y�	Y	YsG��	Y��sG�	Y��
��	��	YsG��sG	Y���
�����	Y�	Y+�sG	Y	Y��	Y�	v���	Y	Y�
�	Y�	Y�	Y	�	Y��(��$��"� �!sG
���	Y�#	Y���	Y�%�&�'sG	Y	Y�	Y�)�*�-�+�,sG	YsG	Y�.�/	YsGsG	Y�1ܬ�2ܦ�3�o�4�7�5sG��6@sG�8�9;sG�:@�;��<�=,�1�1��>�?�h�@�M�Alx�Blx�C�J�D�G�E�Flx1�lx1��H�Ilx1�lx1��Klx�Llxlx1��N�R�Olx�Plx�Qlx{rlx�S�Z�T�Vlx�Ulx{r�W�Y�Xlxelxlx�w�[�a�\�^�w�]lx���_�`lx��lx���b�e�c�dlx��lx���f�glx��lx���ilx�jlx�klx�llx�mlx�nlxlx���p�~�qsG�rsG�s�y�t�u�v�w�x���z�{�|�}���܅܀sG܁܂sG@܃܄*j��܆ܛ܇ܑ܈sGsG܉܊sG܋sG܌sG܍sGsG܎܏sGܐsGsG��ܒsGsGܓsGܔܕsGsGܖܗsGܘsGsGܙsGܚsG��sGܜsGܝsGܞܟsGsGܠsGܡsGܢܣsGsGܤܥsGsG��sGܧܨܩܫ+ܪ�sGsGZܭ�ܮ�ܯܵ@ܱܴܰܲsGܳsGJ@@sGܸܷܶ@���RܹzsGܻ��ܼsGܽsGܾ�ܿsGsG����sG����@sG@��sG��sG������sG�k�����sG�sG�����������������sG�����sG�sG����sGsG+���������sG��sG@��sGsG_����sG�sG��sG��������������sG��JsG�@[[sGsG����lx��lx����lxlx��lx����lx���	���sG�������sG��+���J�sG+������������������sG��)sG+���@��,��sG�	�
�sG���sG�
sG�sG�9����9�9sG�9sG���@sG@��{�sG�R����������
��� ���!�"���#�$
�
��%�&
�
��'�(
��)
��*
�
��+�
��-�1K�.sG�/sG�0sGsG�2�3�9�4�7�5�6sGKlxz�8@sG��:sG�;�<sG@�=lx�>�?sG��sG��A[Z*z�D��Eݮ�R�F�G��H�_�I�Z�J�PsG�K�L�N��M@��O�@�sG�Q�R�S�_sG�T�V�UsGz��W��X�Y[sG�J��[sG�\��]�^osGz�`ݦ�aݡ�b݋�c�|�d�w�e�h�f�g��sG�G�isG	Y�j�k��l��m�r��n��o��p��q���s���t��u��v���x�zsG�y	v	Y�{	YsG	Y�}݄�~݁�݀	Y�	YsG݂݃sG�	YsG݈݆݅݇	Y�U	YsG݉݊	Y��sG݌ݗݍݑݎ	Yݏݐ�	Y	Y	�ݒݔsGݓ	g	YݕݖsG
��UsGݘݛݙsG	Yݚ�	Yݜݟݝݞ�+��e�ݠsGsG�sGݢ�ݣݤݥ�sGsG�ݧsGݨsGݩsGݪ�ݫݬݭsG�@
ݯzݰzݱzzݲzݳzݴzݵzݶzݷzݸݹzzݺzݻzݼzݽzݾzݿz��sz��������;����J�������������R���R���R/���/��R�������;�sG@sG��sG��������k��jsG����sG����������sG���@
@������@@JsG��sG��sG��sG�������	����sG��	v����sG�sG������sGsG�����sW�������sWsW��sW��sWsW��sW��sGsWsWsG�sW���sW�sW�sW�sW�sWsWsGsW��sW�sWsW�sW�sGsW��
	Y����
	g��������	��@�@�@��;�Z�Z�Z@sG@�����/@�@��@@�� @�!@�"@@�#�$@�%@@�&�'@�(@�)@@�*�+@�,@@�-�.@0@�0�:�1��2�y@�3�4�T�5�E�6�>�7�9�8sG�_�:�=�;sGj�<@����?�B�@�A�_
sG��C�DsG+�j�F�N�G�J�H�I�_�K��K�L�sG�M

��O�R�P�Q�R�J[�SsG�_sG�U�i�V�`�W�Z�X�Y[
�sG�[�\sGJ�]sG�^�_
���a�d�b�c+�;�_�e�f���sG�g;�h�sG�j�q�k�n�l�msG�[��o�p�+@�r�v@�ssG�t��u�[�w�xsG�k�_�z���{ޜ�|ތ�}ރ�~ށ�ހsG��sG�ނ�+sGބއޅކJsG�
ވދsGމފ
[sG��ލޔގޑޏސsG�k�ޒޓ+
��ޕޙޖޘ*ޗ�*�[ޚޛ���ޝްޞޥޟޡsGޠsGz�ޢ�ޣsGޤ[ަެާި*ީ�ުޫ�sGޭޮ
�ޯ�sGޱ޼޲޷޳޶޴sG޵��[
sG޸޻޹�޺sG+���޽�޾޿sGsGZ���������KsGsG��������������������������R�_+{����sG��j��JjJsG��������
sG�sG����sG��J����[�������������
;sG�����sG
sG�����������k�����R���z������sG�J��sG����
;�sG����������sG�����_�sG����sG��������[�_��
��
��	��
�sG�sG��z��sG������sG+sG��sG{
sG�ߥ��a��9��)��$��"��sG+�� z�����!sGsGsG�#sG��%�'sG�&�sGsG�(JsG�*�4�+�/�,�.�-��sG����0�3�1sG�2
�+1���5�8�6�7sG��

sG�:�L�;�A�<sG�=�>sG��_�?�@��sG�B�I�C�F�DsG;�EsG�sG�GsG�H�+�J�KJ*sG+�M�U�N�RsG�O���P�Q����S�T���V�^�W�[sG�X�Y�Z �����\�]�����_�`��z��b߀�c�t�d�k�e�gsG�f���h�j�isG
�sGj�l�o�m�n
��_�p�s��qo�r
�k�u�|�v�y�w�xsG��sG��z�{sG����}�~�+sGsG߁ߒ߂߈߃߅sG߄�sGsG߆߇sG�[sG߉ߌߊߋ�sGsG+ߍߑߎ�_ߏߐ�jsG���_ߓߛߔߗߕߖ[sG+ߘߚ�ߙ;J�{ߜߟߝߞ@�_KsGߠߤߡkߢߣ����sGߦ��ߧ��ߨߺߩ߳ߪ߰߫߬ksG߭߮߯sG��@߲߱�sGJ
ߴ߷ߵ߶
;
߸߹
J�@߻��߼߾߽�;�߿�sG��sG����JsG	������������R�_sG������sG�����������������������������
�����sG[sG��������� �_KsGsG��������sGsG�����+sG[�����sG��������sG��;sG��������@sGsG�������sG��@����������������;����sG��
�����sG�[��sG�����������	sG�sG��
�@k���
�sG�[������sG���RsGsG �[��sG�����(��!��sG��sG�� @
sG@�"�%�#�$
[@�&�'���)�1�*�-�+�,sG�_sG�sG�.�/�0@z����2�8�3�7+�4�5�6+�+�-@sGsG�9sG+�;�k�<���=��>�c�?�T�@�L�A�CsG�B���D�HsG�E�F�GsG�sG�IsG�J�KsG
@��M�R�N�Q��OsG�P�JsG�S
�U�Z�V�W�sG�X�Y+�@sG�[�^�\�]�+sG��_�bsG�`��a��;sG�d�v�e�p�f�m�g�l�h�j��i
sG�k�+sG�_[�n�osG���q�t�r�ssG@
�usGsG��w��x�{�y�z�sG�+�|�~�}J*�sG����sG@sG��[��
{����������������sG�sGsG�����[�[@��������
sG��
sGsG@����k��sG���;�J+�Y�����������sG���JsG���sG�z��sG�sGsG�������sGsG��sG�����[z
���sG�sG��������h�;�x����sG�sG��sG�������
����������������������@���sGK����sG�sG
������sG�[������sGKsG������������sGZ
������[�����������@��KZsG[����z�sG���������������sG�����R��R��sG�sG
����j�@�_��;sG�������sG�_�sG�sG�sG��
��	JsG����sG
@���A��!�����sG;@��sG�sG��R�sG���
sGsG����J@sG�� sGsG��"�:�#�(�$�%sG��&sG[�'sG�)�7�*�-�+�,J�
�.+sG�/�0sGsG�1�2sGsG�3�4sGsG�5�6sGsG��sG�8�9J;sG�;�>�<�=�[@sG�?�@zsG
�B�W�C�K�D�I�E�F@��G�sG�HsG�sG�J�sG�L�Q�M�NsGzsG�O�P��
;�R�Uz�S�TjsGlx�V���X�b�Y�_�Z�\�[sG��sG�]
�^��`�a�@
��c�h�d�g�esGsG�f�_sG��i�jsG@�sG�l��m���n��o��p��q��r�v@�s�t@�u@�@sG�w�x��y��z��{���|�}���~�������������������[k����������@�@�@K�sG�sG����sG�
sGsG�lx[�������sGsGzsGJ��sG���z�sG��sG��R����������sG
�@�_��@sGZ�[*�����+����@�
d@@��@�@�@�@�@�@@�
d@���sG@
�������������z[�����sGzsG���������J��������sG�sG�����@K��sG����sG[j����������������sG���_sG�����
sGJ���������sGsG�����sG�_sG������������{���sG����sG�sG�����sG��sG������sG�@����sG��sG�
sG�����	����z���sG�@��sG�sG+@�
���sG�
�sG�sG�R��sG�sG�����sG�sG�sG�����_JsG��sG	�sG��w��H��3� �*�!�$�"�#sG�sG�%�&sG�'sG�(�)@�R@
�+�.�,�-@�sG��/�0�@;�1�2sG@��4�A�5�=�6�8�7[�sG�9�;�:[�sG�<rX1�rX�>�@�?
sG+���B�E�C�D�sG�RsG�F�GsG�;sG�I�f�J�_�K�\�L�MsG���N+sG�O�P�U�QsG�RsG�SsG�TsGsG��VsG�WsG�X�Z�YsG�[��[sG�ksG�]�^�sG[sG�`�dsG�asG�b�cJJ�esG�sG�g�m�h�jsG�iJ��k�lsG����n�r�o�p@[�qsG@�s�tsG@sG�u�_�v@sG�x��y��z��{��|��}��~�

dsGsG��

sG��
Jo+���sG����z����������������sG�@sG�������@1��sG�sG�[��sG�[�J��j����sG���J�@sGsG�@�sGJ���1�@sG��sG��������sG@sG���sG��_@[����@sG[��;@J���zsG�K������������zsGsG����R����sG[KsG��������@sG���������[+�sG+��J�@����sGz���Y���&����������������'Ae��������������������Ae������AeF�EAeAH:����H:AA�����H:��H:@������AeE�Ae�����AeB�
�Ae�������Ez�H:�H:��Ae��EF�A�~������EEzAe��EHG@&E���	��
�
��EEzF�@&Ez���H:�H:"��H:��Ba�AF��Ae��S��!����Ae��&&u�H�Ae�� H�AeAeH �"�%�#�$H:Ae�H��&@&Ae@&�(�P�)�7@&�*�+�1�,�.@&�-@&E��/�0EzE��E��2�4@&�3F�A�5�6BaAe��@&�8�G�9�@�:�=�;�<@&E@&Tk�>�?���A�A�C�BAe@&A�D�EAeF���FAE�H�L�I�JAeAA�KH H��M�NH�E�O@&Ae@&�Q�d�R�]�S�W@&�T�U�V@&EzH:|��X�[�Y�ZEE�E�@&�\�F��^A�_�b�`�aBa�Ez��cAHGA�e�r�f�iA�g�hAAeA�j�p�k�nAe�l�mF�F�����o��Ez�q@&Ba@&�s�y�t�w�u�vH AeF�E��xAe��z��{�|�E�}�~�EAeB��H�
_H���<�������������@&�Ez��AeH:��"�H:�H:�H:�H:s�H:����@&F�@&Ez��E�����AeAAe�������@&���F����AeEz�'������F��F���F��F��F��F��F��F��F�F�K��'�F�AKH ����H:F����AeAe���F�F���F��F��F�F��F���F���F�F������������������H���Ae���Ez�����E���Ba��������Ae�A��Ae�E���A�������������azF�@&�����E@����EAeBaE��������ABa��Ae��AeF�E�������H:��H:s�azE��������������HG��F�H:����E@&Ba����H���Ae�����AH �H ��H �H H-H @&H ���AAHG����	��@&�Ae�E�����Ae�EH:�
Ae��E���
�AeH �����EEzAe���E@&�|���Ba��'��!����E�E�'@&�� E�����~F�A���"�%�#�$@&AeA�g�&E@&Ez�(�4�)�.�*�-A�+@�,@F�EH��/�2H��0Ae�1
���3H:����5�9�6�8���7�~|��Ez�:�;F�E@&A�=��>�m�?�T�@�I�A�F�B�E�CH:��DEAe|�Ae@&�G�H��AeE�J�O�K�N�L�E�M�Ae�@&�P�QH:�@&�R�S@&N�@&�U�`�V�Y�W�XF�@&E�A�Z�]E��[w�\wu��^@&�_EEHG�a�f�b�cHGE��dA�eF�HGAe�g�k@&�h�i�jAe��Ez�lH E��n��o�u�p�r�qH:H:E�s�t��F�H:E�v��w�}�x�z��yBaEz�{�|EBa�E�~E�t�az��H:���/�HGEAe������H:Ez��Ae�����AeAeA����@&A�Ez�H���@&Ez�AeH����������������AeE�H�F����@@&|��C�A����E�H�H�@��Ae��H:Ba�'������E���"Ae�'��E�Ae@&�����
_��Ae�E���@&�F�������������E��@&��@&�1AeA������E����|�EHGAe@&F���������H:Ae������H�H��������E����H����AeE���������������������@&H��<F�M��A@&A��������������HG�Ae@&����H:E���Y���(������:������������A��A�����'�H�����|�Ez�AeF����EAE��@&A�����6AeE��������A������	�
��@&@&�1���
��E�H A���'E�E��F���E��%������BaAeAe����EzEF�A��!� AeEzE@&�"��#E�$AeH:�&�.�'�)�(A�@&�*�-Ba�+F��,�'H:EA�/�7�0�4��1�2�3�AeE��'���5Ae�6�az�8�9|��E���;�^�<�M�=�E�>�@H��?AE�A�DAe�BAe�C��'A@&�F�I�G�HE������JAe�KAeAe�L�Ez�N�S�O�QAe�PEH�H��R�6@&�T�[�U�X�VF�@&�W@&�K�YA��Z����\�]�H @&��_�r�`�h�a�e�b�cE����d�@�f�g�EzAH��i�l�j�kAe@&Ae@&�m�q�Y�n�o�p@&��'��|��s�y�t�v�uH�H:H�H��w���x�E�z��{��|
��}�~�E��E���AAeH:�������������AH �H:��AeE@Ae��A�6E�~����Ae��@&@&N�EzH���Ae������Ez��������H��Ae�EEz���A��Ae@H�E������F�����AeE��@&E������,Aeaz����������E�A��HGEz����Ez@&�H:��E�����HGE�E��������������H:��HGH ����EH�E���F���E���������EBa��H:��EAe��@&������E������@E���������������������'@&AeBa����A�����E�E�����������@HGE�����F�AeE��'�����������az�'��AeH:�EH:�����H:�H:H:���HGE@&������	����E����F��AeF���Ae��F�E@&�
����b��
�
�~Ae!9AH����A������F�Ae���!�����6��H�F�Ae��@&Ae|��� ��'@&�"�%�#�$EH:E@&�&�'��EE���)���*��+�h�,�S�-�@�.�;�/�:�0Ae�1�9�2E@&�3@&�4@&�5�6@&@&�7@&�8�@&F�AeAe��<�?@&�=��>Ae�E��A�D�B�CAAe�'��E�O�F@&�G�JH:�H�IH:s�H:�K�M�LH:s�H:�NH:s�H:�P�R�~�Q�'Ae�pEz�T�`�U�Z�V�XEz�WA@��YH��'�[�_�\�]���^Ae�EHGA�a�e�b�d�cAeAeAH�Ae�f�g�E�'E�i�~�j�s�k�n�l�mAeEAEz�o�pEzH:Ez�qE�r@&Ae�t�z�u�y|��v�w�x�Ae��E��{�}��|�F�AAe������E�'Ae������az��F�E�9�������A��E������AeE�E��������������EE�'��A@&�@&Ba������������E@&��H:E�Ae@&�������gAe�H�EEzAe��@&���EEAe��E��EzA���������F����HGE�@&��A�@&��������E����Ae@&F���������H:E����E�HGE��H:HGAe�������������A��~������Ba,����%��H:Ae��AeE���������Ba����@&��A������EE�����W���&����������������Ae����Ec����Ba@&������������������������������}��Ez��BaAew�j����F��6�����EAe���AeH�E�HGAeE�	��
���Ae��
�����������������
���������G����G�F���@&A��F�Ae��%��"� AE�!EF�_{�#�$���H:E�'�=�(�3�)�,�*�+�AA���-�1�.�/�H��0�E@�2AEH��4�8�5�6EBa�7Ae�H �9�:@&E�;E�<AeEzF��>�K�?�E�@�D�AE�B�C��HG�@��F�G��F����H�I�JH:�,s���L�R�M�QH��N�O�PAe�Ae�EF��S�TAF�|��U
��VAe!9�X��Y�s�Z�d�[�^�\�]@&AA��_�`AH:�aH:�b�cH:��H:�e�j�f�i@&�g��h�g@&�@�kEH��l���m�n���o�����p���q�r�������t�~�u�z�v�wE@&�x@&Ae�yE���{�|EH:H��}@&H�����AF��@&�EzEz�Ez��Ez�Ez�EzEz��Ez�Ez�Ez���@&H:����Eaz��������AeH:Ez�������BaAe���E�azE�������Ae��AeN��@&�H:��EAeAeE����H:�AAe��Ae���H:�H:H������E���F�F��Ae�g�����EE�E���W����w��� ��������������������H�����E@&��E��E�<����F�����E�����H:H:����H:H:��H:����H:H:��H:���H:��������E@&EzE������A���EAeE|�������������AeE������E�A��AAe��������Ae��EF�EA����A����������Ae��Ae�E��EAe�������EH�@HG����E���Ezs��������Ae�	�
�E�EBa�
��H��~Ae@&����EE������H:H���@&H ����H:���������,>�!�K�"�8�#�/�$�*�%�&��H:H �'�(�)E����E�+�.�,HGAe�-EEz�H:�0�3�1�2��A��4�5E��6�gAe�7�Ae�9�A�:�?�;�<A�H:�=��>Ez�E�@H�H:�B�F�C�D!9EE�E�6E�G�H
_H:A�IEz�J@&Ba�L�`�M�V�N�R�O�PEAeA�QH���S�UF��THG�AeE�W�\�X�[A�Y�Z�g��gEz��]@&�^�_�����a�n�b�l�c�k�d�f�eE�E�g�hs��i�jN�s�s��'A�mAeEz|��o�r�p�qAeAAeH��s�tH ��uAe�vAe�Ba�x���y��z��{��|�~�}�'EzH�����'@&������AeAe�Ae��@&������������HGEE��Ez�Ae�����@&EAe��������'�EAe��������H ���E���Ae���Ae@�&�&u������gEE���H���H:�����A���Ae������AAe����}{A�E�����AHG���Ae����Ez�����AeE�'@Ae��������������������@&����AF���������F���EHGEH:H�������AHG��������H:@������E�'��Ae��������A��A�������az�F�EAe��������H���Ba�����Ae@&��E�E�������������E��EE�����AeEE�����@&H��AeEAe���H:�������EAe��Ae
������E�Eٰ�H��	�
AeEAeEz���
����AH:��@&ME�J�����n��F��.��"�����'@&@&A��!���Ae�Ae� AeAe��E�#�&�$�%A@&H A�'�*�(�Ae�)��+H:�,�-AeE@F��/�8�0�3�1�2EA@&��4�5|���6F��7����9�A�:�>�;�<H�H �=H�Aes��?�@E����B�CAE�Ba�D�EE
BE�G�V�H�N�I�L�J�KA�'���H��M�6|��O�T�P�SA�Q�R�EH:F�L��U�H ��W�b�X�\�Y�[H:�Z�@&AeBa�]�^AeE�_H:�`�aAeF�E��c�h�d�fEz�e�E�gH:�<t��i�m�j�kEz��lAeEAeAAe�o��p��q��r�z�s�uAe�tAeE�vHGH:�w�xH:�yH:s�H:�{�~�|Ae�}EEAeBa�GtF�����Ez@&�Ez��Ae��EazE�H Aet]�������E�E�E����F�EEz�������H�AH�A@&AeA�H�E������Ae��AA�N�A��AeH�EzAe����E�HG����AEzEE��������H ��H:�����E����A������]����������Ed���A���az�m�Ez�������A��A����A��A��A�����������������������H:OH:�E����AeEz@&HG��������Ez������@&��E���F������@BaAeA��������������Ae����r�h4d]���������t�v�v�w������H ��Ae@Ae��E��H�������AAe�Ae~�E���������A��+����
����Ae@&A@&�����E���	�E������
��g���Ez�Ez���6�A�L���"����Ae�@&�Ae���F�@&�@&�E���� ��H�E�!HG��#�'�$�&�%����AeH �(�*az�)�EBa���,�A�-�8�.�3�/�0@&��|��1�2��E��4�7H��5H:�6E�AeH��9�?A�:�;�=�<s�s�s����>Ae��@AeA��B�L�C�F�D�EH:����G�KF��H�I�J��|�EEzAe@&�M�P�N�O�A�E�Q�U��R�S�T�Ae��@@&�V�'��X��Y���Z��[��\�p�]�g�^�c�_�`H:F�E��a��bAeH:�d�f�eE�|�A���h�m�i�j|�E���kF��lEAe�n�o�H �E�q�{�r�x�s�uAe�t��'��v�w��F�E�y�zH:�H��|��}�~�'H �E���AAeE���������A�Ae�EzE��A�H:F�����@&F�@&E��AEAE��������Ez@&E@&��Ae��A�H:,>H:�����AazL��AeH�H:A���������E����AHG�AE�A��A�AE��A���F�AeAeH:����A�H:�����������*�@&|�������Ba@&H:�����Ae�������EE��������������E���'�����azAEA������EAe�����E�����HGAe�������������������HGF�E�����AeA�����HGAe������H E���<��azE���������H:���Y�����������������A�E������Ba@&����������@&HGF�EzE�EAe������AAe�AEEz�'�Ae�H:�H:
��	�
�
EE���������H:`���H��>�����A�az��=�Ez��4��(�������������M�� �#M�!�"��M���$�&M�%�����'MM��)M�*�/�+�-tO�,MtOtO�.tOM�0�1��M�2�3M�tOM�5���6�����7�8�;�9�:��M���tO�<��tO�@&A�?�C�@�AA@&�BAeEEz�D�E�Ba�'�F��G����I�Q�J�O�K�L�6Ez�ME�N��LE��PEF��R�V�S�TEAE�UAe�'�W�XA�EzH��Z��[�o�\�f�]�c�^�b�_A�`�aH:AeE�EA�d�eE�'AAe�g�l�h�kAe�i�jAe���@&F��m�nE��AH��p�x�q�u�r�sH�H:Ez�tB����v�w@&E��Ae�y�|�z�{ABaEzH:�}�~Ez���H:�HGE����������E�v�@&E��K�E�Ae@&�����EAe�
�AeEAeH:��Ae�������AeBa�Ez���@C���������@&��@&�������Ae�Ae�������������EH���A@&����@&Ez��m��������������|�AA��@&���H ��Ae����H��AeH:����Ae����F�����������������������������E�������������E�������wazaz����gQ��gQgQ����gQgQ����gQgQ��gCgQ��H:���Ae@&������~����H:Ez���Ae���������@&Ba�������E����Ba������������Ae����g�g��H�E��H:���'�'E�����@&��Ae�Ez�@&H����EA�������	�Ae�
AH HG��
F�A��Ae����@&�@&���EBa|��E��@&�����G��2��'��!��H��� H:���"�#AHG�$�%AH��&��EA�(�,E�)�*EAe�+@Ae�-�.@&Ae�/�1�0EzEz���E�3�<�4�7�5�6AeG�H:Ae�8�:�9AeEAe�;H:Ae���=�A�>�?EAe�@F��F��B�F�CE�D�EAe@&�~Ae���H�Z�I�O�J�LA�KAH:�M�N�6��E�P�V�Q�T�R�Ae�SAe�'�UAeAe��W�Y@&�X���Ba�[�d�\�a�]AeAe�^�_�`�EEz�6�b�cE�AeE�e�i�f�g�Y�E�hA��j�kEz���lHGEHG�n��o��p��q�{�r�v�s�t�H:�uazHGH��w�y�xAs�H:�z�E
n�|��}�~F�H�H:H ��H:@&��������EH:EH:��E�����AH:AE���
�E�Ba��AeF�������@��gE���AE@����E�@&����Ae���E�Ae��������|�AE�����@�`������EzAeF�Ae�����EA�AAe����@&��$����9H:�9H:��������������Aaz��@&E�H:����AeF���AeEz��A��������Ez���E���������A��HG@&�����'��Ae�'��������H:�'�'���������H�Ae��az�����������������|��H:E����EA����������A�AF������E���E�H:�����������@&H A�����E@&�E�������F��A���@&�A�@&��j��W��JA�A���'��A�A��	�
AEM@&���
���H�EH:��H:���H:�H:s�H:�H:�H:s�H:��AeH:�Ae���EF���!�� BaEA��"�$�#AAeE�%azE�&H:E�(�:�)�1�*�/�+�,AeEEz�-��.EEzH:�0���2�6�3�5�C�4E��H:�7�9�8A�e�H:פ�;�B�<�>E�=@H �'�?�@A�A��E�C�EAe�DE�E�F�GH:�H�IF�i@GtF��K���L��M�p�N�_�O�W�P�SAe�Q��RAe��T�UHGH:�VAH E�X�[�Y�Z�A�E�\AE�]��^v�az�`�j�a�g�b�fA�c�d�e�Ae�EAEE�h�iF��F��k�n�l�mA�Ee1�oEH:H �q��rA�s�x�t�w�uA�vAe��AeA@&�y�|�<�z�{
BAeE�}E�~H:�,H:A�A�A���Ae��E@&�����������E���PuAKH �AAe@&��AEAH�����H�H H:A��HGAA�H�Ae������@&AeAE��EK��@&@&Ae����EAA@&@&�Ae��������A�AAe@&��A��A��An��A��~���A��H:F����E�����������Ae�H:|�����@&�H:A�����������������������AE��E��Ae��Ae�����EzE�H:������AAE����E��E�AEz������������H:EF�A����H:A��AEH:�������A�����@AAeE��������������EAH�A���������H H:@@��EHG�H:�s�����H:��H:HG��E�H�EF���EHGE�����EEz�~���HG�@&�	�
�E�E��F��
�A�AH���EH��H:�~��F���?��,�� ����E�E�EzF�E���E���H:E�!�&�"�$�#E�EH �%��A�F��'�+��(�)�*�AeEAeH:Ae�-�4�.�1�/�0A��H:�2�3�'AeAH��5�8�6�7H�AAH:�9�<�:E�;��Ae@&�=�>�EzH�E�@�J�AA�B�FE�C�DEzAe�EAeE�G�I�HH:EHGH:E�K�O�LA�MA@&�N���P�SA�QA�REAeE�T�U�Ae�VAeE�X��Y���Z��[�|�\�f�]�b�^A�_�a�`H:�HGF�AA�c�dEE�e���g�q�h�l�i�kE�j�AeEH:�m�p�nAe�o�E��A��r�y�s�v@&�tA�u�C�@&�w�xH:�Ae�z�{H:Ba�@&�}��~����Ba@&BaBa�H:��A����H:�HG�E�H:A�BaH:Ba�����EAE��F�A@&A�A�A�A��Ae@����������AH:�F�HGE�EAE��E�Eaz��H:A�@&EBa������H:i@E�E���H:BaE��6���E�H:���Ae������A�6��s���������������H:��F�GtF�@&�����EAAAe����A�����~�������E�����B�s�s��������������E��������EAeA����A��AE����@&�����@&���6���
����������������g�����A��E�������AeE��H:AeA����A�
Q�������AH:�@&����AeE�H�H��E�Ae����A�EA��@&EE�HG��3HG����HGH:AAe�	��
�H �E���E��!�������AeE@&HGAeH ��E��E�@&E��H:��A�C�E���� EAe��H:�"�,�#�(E�$�%�&E��'EzBa��)�*�����+E��-�1�.�0Ae�/�MAAe�2�5�3��4���E��7�f�8�H�9�A�:�>�;�=�<E�EH:@�?�@AH:�H:�B�F�C�EE�DEAe`���G�H ��I�\�J�U�K�T�L�N�M�E�E�OEz�PEz�QEz�REz�SEz�Ez���V�WEC��X�Z�Y
�Ae
��[�Ae��]�_A�^A�A�`�e�a�c�bEE�OAe�d�AeE�A�g�x�h�q�i�n�j�k�A�l@&�mAeBaAe�o�p��az��r�v�s�uH:�t�@�~H:Ae�wAF��y��z�}A�{E�|�\���~�AHGH:A����A���
&�k�
&`�H:��AH:E��AeEAe����������������EF��E���@@&�E��H:Ae�����Ae�Ae��AeBa��E�A��H:������H:���F�G��i@����A@&E������E����Ae@&�*E����EzH:�AF�E���������E@&A���A����Ae��E��A����H:��AE����A������@&�Ba������F�E�����A����AAe,>A����A����A��AH:AA��A��������H�AH�������������`�=O;�A��HGAe���
������A��A��A����A��A���������A��A������NNH:��F�AH �A�A��H H:�������E�E��EE@&���gAe�Ae��
�EEz�Ae�	Ae���EAAAe��7��%�������AAe�@&���E��EAH:F�����EAAE��Ali� �#�!�"gQb�azu��$az�H:�&�/�'�+�(�)EK�E�*H:E�,�-ABa�.EH:E�0�4�1�3A�2F��EA�5�6H:AAE�8�L�9�E�:�=�;A�<�EEz�>�B�?E�@�A���y
�y�C`�E�DEz��E�F�G�IH:�H�'��J@���KF�Ae�M�T�N�Q�O�PH�EH:
�R�SF�AEH:�U�[�V�XF��W�HG�YE�ZAeF�Ae�\�i�]�gF��^�_F��`F��aF��bF��cF�F��dF��eF��fF�Gt�hAeF�AeH:Ez�k���l��m��n��o��p��q��r�x�s�u�tH:�'E���v�w@Ba��y�{��zAe@�|�~�'�}@�@�HG@&�����@&az�azv��E@&E�E�AH:E����E�EH�H���A�E�~AeE���E����6|����@&E���������E�@&H:�AEA�����@&H:F�E��H���6�6��������H�E�Ba�AAe@�AAe�EAeA�A�@&�@&�������������@&AeH:A��AeAEz���������az����AeHG���E�����|�����|�������EE�EH:����������ABa�������'����Ae�@&H:��������A���E��A�Ae������EE�����EH:E��H:Ae����������������C���DN��������N���N�"�N�N���N���N�����N���N�N���N��N�N�H:�'@&����Ae�HGEBa��AeazH:����H:E���
B��
BA����	��
��A���
�E��E���K�H:@&�����E�E�E���E�EH:H:E��_��E��:��4� �.�!�,�"E�#F��$F��%G��&G��'G�G��(�)G��*G�G��+@G�H:�-AeF��/�0H:E��1�2�3
�����ײ�5A�6�9�7A�8AegCw�E�A�;�A�<�>A�=AE�?�@E@&Ezaz�BA�C�DH:Ae��A�F�S�G�O�H�J�IA�A�K�NE�L�MEEAeE�'�PA�Q�REEz�A�T�[�U�WA�VA�6E�X�YA��Z�EA�\A�]A�^H:s��`��a�x�b�k�c�i�d�f�e@&E��gH:�hBaE@�jE�~E�l�r�m�naz@&�o��p�qAeEzAeEz�s�uEz�t�EE�v�wA�6Ae�y��z�}�{�|BaAeEL�~�@&����H E������H�����@��H:H����AeE�@H�����������E��Ae�EH ��H:EE�����Ae���E�F�d�E�E�@&����E��E����E@&E��E�'Ae�E��EBad��I������������������EAe��E�����@&az�~�����EE�'A����EEz�����������������AA���SH�����A��A��Ba�������AeH����N��E����������������@&�����@&�E������@&H:������A����AAe�����AEAH:��������������A���EzAeE�������E���H: ]E������@&E������@&E�E����	�������K�H:����g�����E�g��E����EzEE�'��H:EHGE�
���
A�E�����F������EH�A���E@&A���AeE�E�Ae@&A��9��/A��� A���!�.�"HG�#H:�$H:�%H:H:�&�'H:�(�,�)�+�*s�H:s�s�H:H:�-s�H:BaH��0�4�1�3�2E��'H�F��5�6�A�7���8EzAe�:�C�;�A�<�@��=�>�?Ae
�
���AeAA�B��HG�D�G�E�FH:H�EAE�HAH��J��K�m�L�Z�M�Q�NE�O�P�H:AE�R�U�S�TE��Ez�V�WAEz�XE�az�Yazv��[�e�\�b�]�^EAe�_�aE��`E��XEB�c�d�HG����f�jE�gE�h��iEzAe�k�l|�H:@��n��o�z�p�w�q�tH:�rAe�s�EE�uE�vHGaz�x�yE�F�@&�{�A�|��}�~E�EE�@&E������H:E��@&��@&A�E�����������@&EAe�EAe�H�AE������������Ba�Ba��H:E�@&��H:�,H:���Ae�E������������Ae�AeE�EAe��
��AeBa�E��AeBa������E�'EAe��A�EAe���EEN���AeH:AeAF����������������H:����AeAe�'��Ba�'��F�������AeA��@&��@�����������E��Ae���EA������EAe��
���EE���������@&��H:A����A����EAeE��������AeH:Ae���������AcWA�����E@&����������D���%������������HGAAe���A�A�A�AA�A�A��A�A�AC�AH:�E�EAe��
��	AEEH:�A@&�H:�
H:s������AE�E��Ae����Ev�E��A����@&AA@&��$H:�� �#H:�!�"��H:�H:E@�&�7�'�/�(�+�)�*HG@&�A�,�.��-�AeAH��0�5H��1H��2�3�4NE|�EE�6A��8�A�9�<�:�;H:EA��=�?�>@&�E�@EH:s��BEE�C�E�E�k�F�U�G�N�H�K�I�JAe@&�A�L�ME�@@&�O�R�P�QAe�N@&�S�T@&AAE��V�c�W�^�X�[E�Y�ZEAeE�\AM��]M��0E�_�`�6�a�bEAeH:Ae�d�h�e�g�f@&E�~H�K��i�jH�E�E�l�}�m�v�n�q�o�pH�EAE�r�u@&�s��tE��'F��w�z�x�yEAe�'EE�{E�|Ez���~������AEz�~��H�EEH������H:�'�EHG��EE��E�������������������E�L�E��Ez�SAE�E���E�AeAe��E����E���	������E@&�EE�E�����E�����F���E���EF�@E�EAe�����E��E�Ba�~����E�E�E@��H:����������EAe���AeE�����������E����@����E��EAeE�������E����������@����|����E�����H:H:�9��������E��EAE��������H:E@&������������������������������"��������������"�����EAE�A��A��AC�NA��������AE@&E��H:AEE�����	�A����
@AH��E��
EAe��E�E��H �'Ez�EE��E��E�����s��A��/��)��$��!E� E��"az�#F�Gt��%�(H��&�'AeAeEEzE�*�-�+�,A@&EAE�.EzF��0�7�1�3�2EH:EE�4�5���6�Ae�8�@�9�=�:E�;�<Ae�Ae���>H:�?AeEAeEE��B�b�C�X�D�H�EEE�FAe�GAeE�I�W�JH:��K�LEz�M�Q�NEz�OEz�PEz�Ez�REz�SEzEz�TEz�UEz�VEz�AeE�Y�\�Z�[�AHG��]�^E��_�a�`EHGBa�H:�c�l�d�h�e�fE�EAe�g�H�E�i�jH:�kEAeF��m�p�n�o@&A�A�q�rH�EH:HG�t��u��v��w�z�x�y@���E�{��|�}��H:�~H:��H:s�H:@H:����EH:�H��AeAe���H�EEA�����EE���E��Ae�E�E@����AeEAE��E�H�Ez��������AeEH A�AH:�E�E@&����AEH:A��AE`�A�����E�EF�EE�EHG������E�AeE�H:���@&�E�E��������������������1F�H�EE��A��AeHG����������������Ae~!9Ae��AeAe
�azH:��E��A���,�����H:��H:��H:�?H:��A����EAA��AE������A����A��E����������E�EHGA������A����A���E��AAe���������AE��'E��EF�@&�����A��H:EE������
�az�azu���A�A�A����
�H�����	Ae��1AeH��H�E�
�������EH:H:A��AEAAeA�A�A����Ae|���� A���AH�Ba@�!A�"�#@&Ae�$H:�%�E��'�U�(�!�)���*�%�+���,�?�-�6�.A�/A�0�4A�1F��2�3��Ez�5AF�H �7A�8A�9�=�:�;E@&�<A
�@�>AAAe�@�W�A�O�B�GA�C�DEA�EE�FAeE�HA�I�LE�J�K3&NC��M@&�NC�3+C�A�P�Q�T�RA�SA�H:�U�A�VHG��X�p�Y�b�ZA�[�^�\��]@&AeE�_�`H���a�Ae�<A�c�d�oEz�eH:�fH:�g�hH:�iH:H:�jH:�k�lH:�mH:H:�ns�H:HGEz�q�y�r�uE�s�tA�~E�v�w@&�H:�xAeHG�z���{�}�|azA��~�AeH��������������������Ae�'E����������������E��E�������Ae����v�t�waz��������A�������Ae�AeA�����E��Ae��E�H:��E�����������E
������E��E���EHGA��������EH:EAE��E������������������BaAeE���HG����E���'EzH�E����E����E���Ae@&��������ٰ@E�������������E��AEE��A����HGAeE��A����E�E��E�����������������A��AE����E��Ae���@&�����E����������EzazE���@������������A�'����AeE�|�������������������AeAe�����H H���������������EE����A��AEA������A��A�����E��EAe��	����H H���AeHG�'AeF��AIK�
�
�E�E�Ae�EH��������AH��H �azt�az��@A�@&���E�� ��H:HG�EE�M�!�"�E�#A�$Ae�MAe�&���'���(�O�)�4�*�.�+E�,�-��E@&�/�1E�0E|�E�2�3H:E���5�>�6�8�7H�AH��9�;H��:H�EA�<Ae�=F�E�?�G�@�AE�A�B�E�C�D�AeF��6�F�����[�H�IE��J�M�K�Lazmt�az�NEAeF��P�t�Q�\�R�Y�S�VA�TF��U�`F��WE��XH F��Z�[@&E�E�HG�]�a�^H:Ae�_��`i@��b�d�cH:EAeE�e�fAe�g�l�hAe�iAeAe�j�kAe�iAe�mAe�nAe�o�r�p�qAe�xAe�x�sAe��Ae�u���v���w�}�x�zA�y�C��{�|E���E�~�F�AeAeE����Ae�E��E��Aes���H�����������@���������������������E��EAe�'����AEE��E��EAeE��������H H E�����'��A������������F�|�����Ae��N������F��������H�H H�E��H ���������H���H�E����Ae����'HG@����EA���~����������H:s�H:��H:s�H:������H:s�H:��H:s�H:������������������C��yF�H:Gt����E�H:
�����������Ae�EEEz�����EH:H�������������H�������E�AeHGEM��EEzF�������������n�����n��������AeEE��Ez������Ae��
n@HG����9������������������H:BaA��H�A�����|��H�������EE��Eaz������H ��azmaz�EAe�EH:������F���Ae�EAe�	H:�
E���
E�'����EE�����H:H�H�H:�E��)����E����������E�EEA� �#E�!�"AeH���$�(�%�&EH��'H:�9H:@E�*�0�+�-�,EAeE�.�/Es���A�1�4�2�3A�AeA�5�6@&Ba�7A�8�'E���:�f�;�U�<�H�=�C�>�@A�?E�Ba��AH:�BH:E�D�EH:�F�GH:�t�Ae�I�M�J�KH:@&���L���N�Q�OEA�PC�A�Raz�S�TN��Ez�g�V�\�W�Z�X�YEAAEA�[AHG�]�c�^�a�_�`H�E�6�H��bEH��dA�eEE@&�g�z�h�o�i�l�j�kAF��YH �m�nAH:H:@&�p�u�q�r�EE�sE�t�E�v�wEzH�H��x�y��E�{���|���}�~EAA���Ae�SE@��@��|�E���������H:AH:������@��~����H:��s���������������������������A�����'��s�EEAA��A������H�HG��������������������H���H���JEaz����az�'��Ez���<Ae���A����H�E����@&E���Ae�������������A����E��'����F�����3+���H:E����������H:H:EzEA����EAAeHG��A��������������EF�EE���E��AeEAe��E�����Ae��������A�������������EazAe�����A
���������AeHGAe�������������HGmw����������AeAeH�H:E��������H:�'�Ae����AeAA������Ae�AeE�������A������AEE�����E��������H:|�AL���AE�E�M������
����	H:s�AeA��
AE�E�������������F���'���C��A���@����@�����_��-��)� �'�!�$E��"�#�E��%�&E���~�(AE�'A�*�+AA�,H:E�.�6�/�4�0�2�1EEAeE�3c6!��5EA��7�:�8�9EH�H�EH��;H��<�=�Y�>�N�?�G�@�DC��A�B�CAC�AC�C��EC��FAC��H�K�IC��JC�AC��LC��MC�AC��O�RC��P�QC�AC��SC�C��T�UC��VC��WC�C��XAC�C��Z�[C�C��\C��]C��^AC��`�t�a�i�b�g�c�dH:&QE�eE�fAe��hAEA�j�p�k�l@&��mH:�n�oAeE�Ae�qAe�rE�s
�
���u�}�v�y�w�xH:EAeA�z�|���{�EAeE�~������������E��AeEAE����AeEH:Ba��������������������H:Ae��H:����
�EE2�����H:���<��HGAe�E��������ENEH:��������~�E��E��������������W�H���H�H:��A���EC������A����A������|�]�kBAE����������������AAe��E������A��@���F�AE����E�����E��EF�H���H�Ez������������E���Ae@��Ae!9�����@&F�&Q��������E�������N�����H:�'E@&�������2���������������������EE������E��������'��F����������H:F�Ae�������b�E���AeEA��������A��AE����E@&��AEz��Ae���������dE�����'����H:��@&E���E�Ae�Ae�������E���	�
W�LNW���
�����E��AeAe�S������HGE�t��Ae���BaAe�����E��az��&��%� �"�!BaE���#�$E���EA�'�*�(�)AEE�}�+�/��,�-�.AeEAe��E�0E�1Eaz�3�[�4�H�5�B�6�>�7�:E�8���9EAe�'�;�<�=��AeE@�?�@�H:�AA�E�C�E�DEL�E�F�G�AA��I�P�J�M�K�L�AeA��NA�OE�EBa�Q�T�R�SE��E�U�Z�V�Y�W�XF�AeEAe�EAeE�\�n�]�f�^�c�_�b�`A�aF�AeHGEF��d�eAeAE�H��g�h�k�i�j�|�AeH��l��mE@��o�|�p�v�q�sH:�rEAe�t��uEF����w�z�x�yH�H:�~H��{A����}���~���E���Ae�SAeEH���������E ���������������������H����EE���F���������Ez�H:�����EEz��A���Ez��Ae���������A���H���H��H�������������Ba��������*dAe����Y��������Y@&��A����azu�����������������|���E��'������AeE�����E������EEAe@&���E��������azEEA����AE���w��EEAe����������E��A���Ae���������HGAeE���������A�E�����E��Ez�Ae�������������������EAeE@&��A�'������AeEAe��������AEA��A��H:E���������A����i@����AeEEAeA����F�Ae�����������E����EAe��AeHG���E�����E�i@E|Ae����
�����E�AH��	�
H�F����6�EAe��E�EAe����@&�Ae�H:A��A�A��E������A���AeE�� EH:��"���#���$���%���&�W�'�;�(�1�)�-�*�+�@&�,EAez[�.�0H:�/AeEH:A�2�7�3�4E���5AAe�6Ae�b�8EBa�9�:EE@�<�G�=�E�>�AE�?�@�EF�A�B�C�D����}��F��L�H�L�I�K��JBaAe@&�Y�M�VE�N�OEE�P�QE�REE�SE�TE�UE�%AeH:�X�n�Y�e�Z�c�[�b�\�_�]�^AeBaEF��`�as�s�s�H:AeHG�dEH:E�f�l�g�jE�h�iEAe��kEEAeA�mA��o���p�s�q�rAEA@&�t�w�u��v�6��AeBa�x�y���zH:�{H:�|H:�}H:H:�~�H:H:����H:H:s���H:��H:��H:��H:H:����H:H:��H:��s�H:��������E�A������Ae����E��EAeH:Ae��������������������EAAEA��E���@����E��AeA����A��Ae��Ae�E���������������@&����EAeEH�E��������A�����AeE�����EE�������E����E��AAe�������������������F���GF����������~E�E����� [��E@&A����������AE��EzF�A�����@&��������E����������������������.�EA��E������B�C����������������E�A�E�����Ae���Ae����������������F�EazwAE����E��Ae���s�����E���R���-������������M����H:�s��s���
�s��s�s���	s�H:s�s���s��
s�s��H:s����H�H:H���H��E�EHG��LA�A��"���E�A��E�� EA@&�!���#�(�$�'E�%E�&�vrXAAe�)�*@&HG�'�+�,�AeE�.�>�/�6�0�4�1�3M�2�OH�AeEzE�5AeE�7�<�8�;E�9�:��BaH:��=EE��?�F�@�CH��A��BH�E�D�EEH:H:E�G�L�H�IAEz�JA�K�����M�P��N��O���Q�'Ba���S���T�l�U�b�V�]�W�Z�X��YE�EE�[E�\Ae��^�`�_�'H:@@&�aE�'�c�g�d�f�e����HGA�h�i�A�jA�kEAeE�m�z�n�q�o�pAEAE�r�v�s�tE��uE�Ae�w��x�y��'��'�{��|E��}��~AeF�����A�����ANAe��AeE����������������E��E�E�E��EF��������������|�F�EEz������AE����������������������az�u�w�������EBa���E��EAeE��������HG���~��AeH:����HG��E�E���d�����������������A����A��A��������H:�AeH:����A�'��E�'�������������AEAH���H:EH:��������������AeE�g��H�E����H:H:N*����������������]@&����������������E�����������Ae���A������A����AA����AA��A��A��AC�A��A����A��A��AA��A��AC�������'�����v�wt������������E��E@&���H:A��E��AeHGE��������E���E@����EF�H:�	��
�Ae��E�
�E����EAe���=��-��&�������E���EA�����%A��A�A� AA�!A�"A�#A�$�AA��'�+�(�)LAe�*AEaz�,�A��.�6�/�2�0�1�@H:E�3�4E�AE�5E��7�9E�8��Ez�:�<��;�E�E�>�S�?�J�@�E�A�D�'�BE�CHGdAE�F�GA��H��'�IE���K�M�LA�A�N�PA�OE��QH:�l�RC���T�\�U�W��V�E�X�[E�Y�ZAeH:F����]�`�^�_Aٰaz��a�c��bEH�AeH:�e���f���g�y�h�q�i�mE�j�'�kH:�lH:�FE�n�oA��pEAe�r�u�s�tA�'EE��v�wBa�'�xA�~Ae�z���{�~�|H:@�}E�z���A�B�����'EAe���E�����������������������Ae�E�����Ae����g����HG�1HG��������������������'�Ez������AeE���������EAeE������EEEzHGAe��A��A����A����������������A��H:���E�A������EA����Ae��E��E�����������������E������6@������E�����gEEAe��������AEE������v�wwaz�����E������EE�����������������EA�E����@&���E�H:������E��E����'Ae����@&A�����F���F��������������'���E����E��Ae����Ae���H���AeAeBa��������A�az������@����H:����az��Ae�6���&�������D����������AEAA��E��A��	@&E�
HGF���
��EEA������AHGA�E�Ae�E��H:���Ae����AE��H�H��H�E� �4�!�*�"�&E�#�$���%EAeAe�'�(E��)Ae|��+�0�,�/�-AE�.|�Ae�E�1H:���2Ae�3EAe�5�:�6�8�7��g��9E�A�;�B�<�?E�=�>��E��@Ej�Aw�j�C�E��E�c�F�W�G�P�H�L��I�Jaz�KAeEAe�M�O�NH @���A�Q�U�RE��S�TAe�E�VE��E�X�`�Y�^�Z�[Ew�\��]EH:Ae�_H�AeH�A�aA�bH���d�v�e�o�f�k�g�hH:M�iF��j�EH:�l�mH:A�n�~�g��p�u�q�t��r��s�EEA��AA�w�x�zA�yEHG�{�}�|����~E���E��������������������������������AeE��E�'���H ���������@&Ae�@&��������E��ٰEBaE������AAe��AeH:���H:Ae��������������E����AeE������H:���E����H:�~AeA��A��AEA������������A��s�Ae�����~|�AE��������az@&A������H:A����AE��A��E������������A���EE��HGH:�����������AeE��EAeH�����H���H�E���EE����������������������@&H:����E����������AA�����E�����@�ME������������EzEE��E����EE��E��E���E��EE��E��E�����E����A�az������EA�E������EF�H:E������	������E�HG�AE�����F�lx�H:AH:�
���EAe�
��EH���AE�Ba�E@&Ae���������Ae�Ez@ABaA��E��Aes�Eaz� �#�!�"E��A�$�%EzEEA�'���(�c�)�C�*�4�+�1A�,�-H��.�'�/�0F�AeEzE�2A�3EH���5�;A�6�7�:A�8��9AAeAAe�<�A�=�>F�E�?A�@E�BaE�BEA�D�S�E�O�F�L�G�K�HA�I�J@H:fAeH:Ae�M�NHGEz�A�PA�QA�RA�E�T�]�U�X�V�WAF�E��Y�\�Z��[az���Ae�^A�_�`�@&�aA��b�E�d���e�x�f�o�g�iA�hE�'�j�n�k�mE�l�EE�~AeA�p�u�q�r�EE�sE�tH:E�v�wE��@&�y���z�}�{�|�AeH:tO�~���AAe��AeE����E���Ae����H��E�'����E��EAeE����H:��@���������������������E��F�Ae�A����������AeAeB�A��Ae���������������BaF�AeE���EA��������E��EA������������'EE��
n@�'HG�������Ae������Ae����E�E��F����gF������������������������A����H�A��A�g��AeEA������Ae��EAe������������E��AH:E��A��������E���E���'H:���EA��������������E�����������H:Ae�����~Ae�F��������A����E�Ae�E����H�����
������������H:i@�'E������������EEzA��E��EAe����Ae���H:�@�������F�@&���E�E���E����'���~��2���	��
���
Ae�����E���~��@&����Ez���EEz�Ae�H ���A�EE�H:����%��$� �!H:AAe�"�#AeF�AeEA�&�-�'�+��(�)�*E��H:@&�,�Ae�.�1Ae�/`��0�`�EL�3�C�4�:�5�7�6AA|��8�9AHGAH��;�@�<�?�=E��>�@&H�E�A�BH:@&@&E�D�P�E�L�F�H�GH�EAeE�I�J�KAe@@&az�MA��NHG�OAeGt�QA�R�SABa�TAHGE�Vu�W~�X��Y�Z���[���\�k�]�e�^�a�_�`�AeAE�b�cEAeAe�dAeE�f�h�gE�~��i�jE�Ae���l�w�m�p�n�o@&�H:@�q�t�r���s�GtG��uE�v�Ae��x�|E�y��zF��{����}��@&�~������9A������A��������H:�����AeEA����EAAe��A�H:����A��A��AE������������A�����E@&��E������g�������~EEz��@&��EEzAe��������������A��AH:�����������AAC�A���E����H ������~�
�Ae��A����C�AA����AA����AA��A��A����AC�A��������A��A���������C���AC�E��E����E�R��xg����������E������EE��E�����A���H�����������������AH�E���EzA����H ����Ez��'Ae���������E�����'AeAe��@H:����H:EEA������������A��E�����H:������L������E@&E��Ae��AeEAe������@&�����EA��Ae�EAeE!9�Q2	
EAEH:
H:"�EH:E�9s�H:@A�EAA�EEF�AEE� )!%"#��6H $�E&AA'(Ae@E*-A+,E��.1/�0H:H:F��A3C4<596A�~7F�8F��:;AH�H�E=@>?H�AAazAB�AAeEDKEGF�EAHAEIazJazv�LAAMANOPAeEzAe�R�SpTaUZVWH�F�XEEYEBa[^E\Ae]�H:_���`
��bjcgdEefazE���hAeC�iE�SkAlmEF�no�AA�q~rysutEAeEH:vwx�AC�Az}@&{�|B��H E���F�����AeE�6AE���A��Aei@A@&����������'�H �H E�AE����HG������@&��E������i@�EE�EAe��E�����s��H:AeEA���AAe��H���H���AeH��H��b�����������AE�EE��<AeE��AeAe�����A��A�
�AeA�AeEz����A�@&E��E����A�������HG����'�HG���EAe��H:AAe@���������BaHGH:��A�AeEEz��*@&����H�H H:�����H:E����@&�'@&�������Ae��E�Ae��Ez��'EzE�EH:E����AeH��A�AA���E/	AAmwm
���E��

�@H��~HG���EEz���EA' E�@E@&H�!$|�"#���#i�%E&Ae�(,)+*E���EE-A.�A0F1<2837Ae456EAeEAe��2A9:|�;�|�az=C>@H�?�AeAeABEEAeDEv�AAs�GTHOILJ�K��<�azMH:Ns��PS|�QERAeH:�@&U[�VWYXAe�'E�~ZF��\]�SEz^`_��,�aEz�~�c�d�e�fugnhmik�jE@&s�ls�s�Ae�oqpH�N��@rEstAeE��v~wzH:x�~y�'@{|�'�az}waz����������AeE�����E�EA�EAE��E����EEAe��{�
������E�AeEEHG��������H��������E��E��'���A���v���az�az�az��az�azaz�azv����azaz�az��azaz�az�v�azaz���az�azv��azv�azAe�az��A�A�Ae����A�A�A����gAe����AeL���Ae�EF���Ez���EAe�ӹ���E�	�����������EHGAe�@EA��A���E������A������'��azEE���F��F���������H:H:���BaAAe��H ��M�M���M��M��M�M��M�E�EAe����H��'EAe�E�
!
H E�AeE�AeF�EzE@&@&E��E� H:H:s���AeA"t#K$'%E�&��@(A):*2+A,A-A.A/A0A1A�A3A4A5A6A7A8A9A�A;C<A=A>A?A@AAABA�ADAEAFAGAHAIAJA�ALNMEEAeOQ kP��ERcS[TAUAVAWAXAYAZA�A\A]A^A_A`AaAbA�AdleAfAgAhAiAjAkA�AmAnAoApAqArAsA�AuyAvAwExAe�zA{H:|}azwazm�M�������������A���A�A�A�A�A�A�A�A�A���A�A�A�A�A�A�A�A�A�A�A�A�A�A�A�A�����H:��HGڈH��~�����AAe�AEE��N�EE������EA��EEEz��Ae��'�E��'@&E�����HG�'�F���`�A�A���EH�H�E����������!T��az�����H ��gAAe�����'Ae�H:���[��d�����E��E��H:Ba�A�������n��AF��~��AeE��E�'���EH:E����E���|�F�AeE�~Ae���NAe��Aaz�azgQ�#���A�A�E�A��EAE�E	

�Mg�Mg��A���EBa��HG�EEE��E!A �Ae��"EE�$?%2&0'+�()*AN��A,.E-EzAe��/�F�Ae1EE�3948E�567���|���'Ae��:;EAA<=>E���@JAEBA�C�DAe�FG�'HGHA�I@AeEKELE�N�O�PlQeRbS`T_UVz `��WXq�q�YZq�q�[q�\q�]q�^��q��EzBaa�AecdEzEAeEfhgA�Aij@&H kA�azmzntoqpA���r�s��Ezuy�vwx@E�'AeAe��{�|}AE~H�EAe�����������������������F�A@&������A�EE����E�@Ae�E�����A�Ae���E�E��gE
�H:������EA�|��AE����A�H�����H�����k����BE����@EzA����������A��H:�H:H:E���E��AeNEA����A�E��Ae�A��F�Ae���E�~F��E�EF�E������E���Ba�A���HG����Ez�E���FH:H:�F����E�H:C���E��E��@���������Ae����E�������AeE��HG�����AAE���H��Ae�A���Ae��A�AAe
�H���AeAe�HGH:	

�'��}�Ae�E�y@&E��H:EEH:��E� �H:E@&!%"A#$EBaAeEE�'4(+)E*Ae@&H:,1-/�.�E�0Ae��2�3���59687H�azE��@:>�;<=AeEE�E?Ae�AYBLCIDE�H�H�FGH��H:EJK�EE�MQANAeOPEH:�RUSH:T���@VXAWAe�M�Zn[i\g]AA^A_`AAaAbAcdAeAfAC�AhE�AeAjklH:|�mAeE@osp@&AqAer~Aetu�AvxH:wH:��Ae�z�{�|�}�~��H:E�E��@��AeA�H���H��H�E��A��Ba������E�@��E��EEAe���E�azA��������H:H:��H:H:�H:��H:H:��H:�H:H:���E�AH:���Ae�������'��Ae��������Ae�AeEEAe������F��EE���E���HGH������E����@��E����E�~Ae���@&���������AHG�+���������E��E���EE�@&�Ae������EH���HG�����E�����EAe��g�'�g�@�������Ez��E��HG�����H�H:�AeE�A������E����ٰEEٰ���Ae���A���E	
AH��AeA
EAeA�EE�EAeE��A�E$���AeEEA !M��"F�#E�%'&E�|�E()E �*��E,Y-A.5/20�E1�E34AeEAe�6;7E89az�:�'�E<=E��>?@��'���BOCJDGAEFE�6EEzH��IAe�zKN�L�'M�Ae��PR�Q�ESU)�T���VWXH:��AeZi[_\]E��^�E`eadb��'c�AeAeAf�Aegu�hwmjo�k�lm�n����psqr�EEH�H�t�Avbw�x(y�z�{�|�}�~E��'����'�EE�E�EA����E
���E��E��H �����c����������A��AeH:A�AeH:�A�E�EF����������N*H:s�H:�AeAe��AAe�E|�A��H�����E���������H����	��A������E��'�������gE��Aazl���@&��gAe�gA���Ae���������Ae���H�EE�Ba�����E��E����E��E|�������������A��EAeE�Ez����@��Ba��E���E��E���Ba��@&H:������E�����6פ�[��H���H�C�����E�'E��EE���E��EA�E�H:	E
�F�Gt
��@&AeBa@HGEF�F��������E�|�EA "!A�E#&H $Ae%@&@'E�Ae)�*U+F,8-2./EA0Ae1�HGAe374�56EAe�@�~A9>:=;�E<Ae�lxH:?B�@�A�AeCD�E�EE�EGOHMILJAEK�&�A��N|��PSQR�AH���T�E�VmW`X[Y�ZA�gAe\_]A^��AeEAahbei@c�d�E�fg�Ae�ij�@&@&kElAee1n~o{pxqvrH:H:stH:uH:H:�wHG�AeBayEzAe��|}EA�E���E�AeE@&A��A��E�EE�E�������������E�E@&�����Ae������Ae�g����A�A����EAe�����A�A�����HGF������A��F����@&���A@Ae��������MEF������4���F��EH E��Ae�AE��������EBaAe������B��P��P��P��P��P��P�P��P�B���AH:�H:EE�����Ae����AeH��~Ez|�����t��L�L�T�Ae�����^�'����������'
_EE�ME��Ae����EAe@&Ez������Ae�Ae������EAeE����F�A����d�5� �Ae@&H�EH ���	H:azE
EEE�g
EEH�AEzEzEzEzEzEzEzEzEz�mEzH�Ba�~���E!,"'#$C�H %AC�&A�(*)EE�+A�F�-2./H H�H�0�1�@34��AF�6O7E8?9<A:A;Ae�=E
�>{A@AEA@&BCD�SEE��FKGHE�I�JAe�ELME�AN����P]QWRUSE��T��Ae�V�AX\Y@Z[����Ae�A^aA_`EE�bcAeH:�'�e�f}guhnijE�H kElm�E��orApqEEz@&H:st�AeEvxEwH EyzEF��{E|EAe~��E�AH:���@���YEzA�~������Ae��Aewv���Ae�H Ae��H ��HGH:EH:E��������F�H A���HGEz��H:BaE��EE������'�EzAe�zE��E�E�Ae�EA�������H�E�E�EA���EH �H�����H:OH:��VF����������������E��E��Ae*8 ����EzE�H H������H:AeEH:|��A�AH:�E������A�A�����F���EA@&��E�����Ae�Ae@&��������E�H E���@&�EEzE�����E�AeEAeE���EA����E�EA����AA��AC�A�8A��AA��gA	

�AeEzE�H:����&��EdE��#H�E|�|�|�|�|� |�!|�"|���|�@&$%��6HG'/()|��*,C�+A�B-.������041�23BE�AE567@�'�Y@&9L:D;A<>H:=H:HG?�@�HGH:BC�F�|�AEIEFGH��EEH:JEKA�EMUNPEOA�QREH ESETAeEVZWXA�EzY�E[_E\]^�EE�E`aEEAec	�d	)e�f�g�hrinjmEkHGl�AeAeHGoq@&pAe�H:Es�tu���v�wAe�xyF�zF�{F�|F�}F�F�~F���F��E�A�EazAe����������'�HGA��H��Ae��H:@&AE��A�E���EH:�E��Ba�'|���E���������|����EE���A��EzAe���H �H�E�������E@&@&E�������A��������EH:��Ae��Ae����A�H:Ez�E�E�E���H�F�E���F�BaF�����������E�E�'����'�'E��������Ba�����'@&���Al�����AeE�Ae�������EHGEE���HG�H�A������E��Ae�'��	������Ae��������EE�E�����	A����~�E�	��		��		��		���		
		���'	|���	
						�E��	E	@Ae	�v��		$		!��		��	��	��	��	����	��	 ����	"	#AeEE�	%	&E�	'AAe	(A�	*	�	+	i	,	Q	-	7	.	5	/	3�	0	1	2Ae�E�	4E�EH 	6E�	8	=	9	:�E��	;	<��Ba	>EA	?	@	P	AE�j	B	C	Gt�	D	E	FL���t�xl	HL�	IL�	J	M	K	L�����
�j	N	O���&L�Ae�	R	]	S	X�	T	U	V���	WE@	Y	[	ZEEH�	\H:Ae�	^	a	_��	`�Ae	b	eBa	cH 	dAKH 	fH 	g	hAe��Ae	j	�	k	t	l	oE	m�	nH��	p	r	qH E�E�	sE�'	u	y	vEH�	w	xAeEz�	z	�	{	~	|	}�C��
QHG	E@E�H 	�	�	�	�	�	�AH 	�	�E�E�	�	�@	��AeH 	�H��'	�	�	�	�H EEH 	��A	�	�AeAe�5	�	�	�	�	�	�	�	�	�	�H A�	�	�����	�	�	��	�AeE	�H:,>	�	�H:H:	�	�H:H:	�	�H:N*H:	�	�	�	��	�E	�E�HGEE	�A	��~�	�	�	�	��	�	�EE	�E�'	�A�	�	�E�z�	�	�	�	�	��9�	�	��	��	���	�	���	��	��	��@�	�	�	����@E	�	��'A�H 	�	�	�	�	�	�	�	�	�H 	�H rH v�H 	�	�HG�E	�E	����	�	�	�	�H:���	�E�	�H A@&	�	�	�	�H AA	�H az	�	�	�	�E�	�	��E	�Ez�F�	�	�	��H r�H 	�
�	�
G	�
%	�
	�
	�
	�	�@&�	�E	�E�E

@&
�EA
E�




	�
AeEH �
H�A�






A�H EE
�H�



�~E��
E��
E


u�ww
w
w
w
 w
!w
"w
#w
$v�w
&
9
'
1
(
+
)
*t����E
,
-�H 
.
0E
/EH:E@
2
4
3E�E
5
6H �
7��B
8MB
:
A
;
>
<
=H:�@&E
?
@EAA�
B
D
C���
E
FE��H 
H
o
I
]
J
R
K
M
L�H �
N
O�A
P�
Q�~��~
S
V
T
UF���A
W
Z�
X
Y��E�
[
\E�'E
^
f
_
a
`EH �'
b
e
cEzE
dBaF��Ba
g
j
h
i����E�
k
n
l�E
mEH:�@&
p
�
q
�
r
u
s
tEA��'
v
y
wHG

x�|�'
z
{AeE
|HG
}��
~��
��
���
���
���
���
����P��
�
�
�
�EAH��
�
��'
��Ez
�H��
��gAe
�
�
�
�
�
�H�A
�AeE��
�
�
�
�
�v�t�mv���
�Ae�
�
�H 
�
�A�V�d
�
��'
�
�Ae��Ae��
�

�
�
�
�
�
�
�
�
�
�A
��gE�Ae
�
�A�
��
�
�H:Ae�Ae
�
�
�
�E�
�AH:E
�
�
�Aee�l�
��E
�
�
�
�
�
�E�EE�
�
�
��Ae
�F��H H:
�
�
�
��A�6�
�
���
�A
����Ae
�
�
�
�
�
�A
�
�
�
�t�v�mEF�
�H�Ae�
�
�
�
�
�H 
�H�H�
�
�H�
�H�H�
�H�
�
�H�H�
�H�
��rH�
��
�
�AeEEAe
�
�@&H 
�
��Ae
�@@��
�
�
�
�
�
�
�EAe
�Ae��
�EAe
�
�
��
�AC�A���EAe�H:�E���E	
�~H:E@BaH 5 ��E�AeHGH:EE�'AeL��~Ez�E�~!-"(#$��%'E&EAerXE)*H:�+�Ba,�E.2/0�E1EE�34
nEAeE�6J7B8=9<:�;EH:��E>@?H �EAEF��CIDFEEEAeG��HE��EKPH�LMN�E�H O��QSRH EH TUH AeH:VWXE��YEZ([�\�]
�^e_�@`a�bucmdiefE�Egh�'E@jlk����@&np�o��qr�A�st�Y�Ev|wzxyE�E��H�{H��}E~�E����E�t�az���H�HG�HG�HG��HG�HG�HGHG��HGHG�������������~H �'��H �������AeE@��@
n@��H �H �H �E�H�������EN����E�E������������������������������Ae�E�E���H ��H:�
����������H ��EzAe�E����H H @H ���H H�H��������E��E��
������H EH ��H �E�E�EAe�H �������������A�|����Ez�c��c���'�AeAEz����A��������w�1�;��Ba����~H���H��������F�H:EE��~�A@&H �'	H �Ae7!
��'Ae�AE�EzAF�H:BaAeH:��E�H�� 
�E�".#'$H�%H�&Ba��(+)*�AeH����,E-�HG/401��2��3���56H �@&H 8Q9E:A;?<>E=GtG�@&Ez@Ez�ABD�CH @&A�FKGJHE�AeIAeGtAH LNAM�EEOPF�F�GR_SYTXUWV@&HG��EAeBaH:Z[Ae�'�\]^AeHG�Ae`bAaAe�cdA�EH f

g�h�i�j{kwlvmLntoBaBapBaqBarsBa��BaBau��Ba|��xEyzE��A|E�}~@����H:�EA��A���AF����A����g���E��A�A��Ae�HG��������E@F��E��H ��E������A�E�EHG����A��E�������F�E�E��AeEA�������E����C���EE��Ae��������������EmAe�EA������EAe�E���������EEAeAH ��EAe���E�E������E���H:�H:�g���L�HG�g�H:��Ae���H�AeH��E��E���E����������A�Ez�A���H E�������E�AeE���C���EEAe��AeH:�
����EzE�
��
EAe��Y
E�



H�EA
�Ae
	


E���E�E�

W

7

!





�'EE

AeAHG
��Ae




��@&�E
��
 Ae�
"
0
#
*
$
&
%�Ae�
'�
(
)�~�E�&
+
/H 
,
-
.��H:��G�
1
3E
2�E
4
6E
5EBH �
8
E
9
@
:
<E
;azH:
=
?H:
>AeH:F�E
A
BE�
C�|�
DEAe
F
M
G
J
H
I�A���
K
L���~�
N
S
O
Q
P�Ae�
R�'A@&
T
U��E
VE�
X
�
Y
n
Z
a
[
_�
\E
]
^�EAeH 
`�H�
b
h
c
fw
d
eEE��F�
g�'E
i
j�E
kE
l
mG�F��Gt
o
z
p
u
q
tE
r�
sEAe��
v
wAAe�
xE
y�E
{
�
|
~
}H:�Ae

�H:
�AeE
�
�Ba�/Ba
�
�
�H 
�
���������EA
�
�
�
�
�
�
�
�
��EzE�H:
�
�H:A�A
�
�A
�E�
�
�A�A
�
�EAeE
�
�
�
�A
�E|�
�
������
�
�
�
��
�E
�EAe�A
�
�@&
�
�Ae@&Ez
��H:N�
��
�|
�
�
�
�
�
�
�
�
�
�
���
���
�AeEz
���|�
�
�
�
�F�E
�E�
��hQ
�
�Ba
�F����
�H �
�
�
�
�
�
�E
��
��
�E�
�E
�
��E
�
�E@AeE
�
�
�
��Ae�HG
�
�
�|�@H�AeF�
�
�
�
�
�
�
�
�A��
�AeE@&
�
�AeH:@&�
�
�
�
��HG
�E
��BaHG
�
���
�HG�
�
�s�
�s�H:EAe
�
�
�
�
��H:@&
�
�
�
�EH �Ae
�F�Ae
�E�H �H��A�
	EE���
N*��9H:Ba�6AeH1!�EH��Ae��~E EBaE�'H �'E"*#&�$%�E�')(��H:E�+,E�-/.AAe@0H AE2=37465�'���A8<9:��E;@E�E>D?A@EEz��BC@@&��EGFAeE�Ez�IeJZKSLOM��N��Ae�SPRAQE���TX�UVWE@H:2�EYH��[_\E�]^�HGE`caAbHG�H:H�d�BafqgkhjEi�E�~HGlom@&HGnF�HGpHGBaErustE�@&Avy@&wxH E��Ez{�Ae��}�~����������EAE@��E���'A���Ae�E�EAe��E������Ae��H:EAe�b��E�������'��|����E�������Ez����H:s��s���s�s���s�H:s��E�F����B�|�AeH��H �AeHG�����@&�EE��H�EH ��H���F�����E�����������Ae��EAE�Ba�������H:������E�A��������~�'����Ba����F����HG��EE��������E|�H ��Ae�����A�AeE��A�'���E����Ae|�E���Ae������AeAe�AN��A�����@�����AEH���|��|�A�Ae�	

�E�AeF�H�H��Aee1B�Ae�EEE�'Ae,#E!EGtGt GtF�Gt�"���$(%'&�HGEE�@&)+E*H:EA�-7.1/0Ae���H�24Ae3@&��5@&6���Ba8<9;:F��AEE�=?�>�'Ae�'�ApB`CZDVEUEFGF�HOIF�JKF�GtLF�MF�F�Ni@G�PRF�QF�GtSF�TG�G�F��AWXA��'YH:E[]\���6^E_H��~AeagbecdH����EfA�hlij�'�kEzE�mo��n�E�Eq�r{swtv�u��E�H:xyEH�Az���|}~��EAE��EE��AeE����EAe��E��@&�E����H E�E���@&HGAe��~Ae����"�������������~�E��H�Ez��A�6E�A��E����E���Eaz�'������Ae��H��EH���E@&�����@&E��E�~��EzAe����Ez����������H:A��E���������EAe��Ae����������@H�Ae���E�E����@&��@&��|�@�'EA���������E��~�AeE��@&EzA�E������AF��H:AeH:��A��EH:���������E��AeEaz����H:EHGAeE�������E���E}c���E	A���Ae�
@&Ae��
E��Ae�'AeEE�Ae�H:C�EH �|�H:@&@E�H� !EEAe#g$G%5&-'*()H:��'M+,�A�Ae.1/0H:E��E23MBa4|�AeHG6@7<8:9@&azE;�
�@=?�>E�'���ACBE@&EDEEAF���HUIPJL�KM�MNH:�OE�EQSH REzEETE@&V^W[XZ@&Y��EHG��\]���E_c`bEaAeEEH:dfBaeHG�EzEh�ivjokH�lmAH:n��Eprq�H�@&su�t�Ae��'wxz�y|�E{}E|�Ez~�v�az����H�Ae�@&���A��H:�E���������E���EAe���HG��@E�����Ae�azAeEE�H:���������HG����E����'����BaAe�EH:�����EA�E��Ae�6��E��9�������������Ae�@&�|���H:E@&���E��H�H��AE��������Ae�H:�Ae����AeH @H:�������Ae�EzAeE���A���E�������������ٰ������EAe�H��6E���H:�A������A�H:A���E��E����E�E�EHG��EA@&��'@&��������AH:@&EH����N����H:Ba��E
_AAAe	E
E��E
�Ae@AEH �A��AAeA&��@E�az�" !|���g�#$HGH�A%t�m'1(.)+*Ae�E,-Ae
�AGt/0lxAF�A253H:�4��6687�C���F��:w;[<L=D>B?A�@�E�ECH:EH:EHAFG��AeIJ�H:H:KwAMUNPOEE��QR�6�STAemE�VXW�F�EYZH �Ae�\k]b�^_`H:AaE�b�azcfH:deH:EAegi�hF����jAe�lo�m�nE�psqrAe���tvu@&�B�A�x�y�z~{|�A}H�@&����H�E���
������EAeH:������H:���E
�E��E��A�E����E�F�E����EEAe��������@H��gH����EH��Ae�~��Ae��Ez�������@AH:�����H:����F��������Ae��@����@�������5������������HGH:�HG�����'�������AeE�H:E�����H �E���A���Ba�������EzEA���E@�E�Ez��������EA�AEz���A����H����Ae�����y�E�EAe������H:AeAe�����~AE��E��EEF���E@&��Ae����
��F�A�Ezf@&�	�
C�AeH�HGA�@�������|�Ez�E�)$! E��~H:�"#�@&EzF�%'�&���(�EO*0+-,����E./@��g132H:A@4�@&�6w7W8H9?:<H�;H�E=>E@��@DACBEE@H:H EGAeF����INJL�KEC�AM��OSPRQE���ETVU�E�C�H�XfY`Z][\����^_C���H�adbcA�@AeAEH:gphlij�Ak�E�moH:n�BA�Equrt�s�9�Ae�v���@x�y�z~{|��}�|�����H:����~Ez��EzAe�'HG�������EE�E�E������Ae�A�'���HG��������������HG�����E���Ez�������EAe�Ae��6�������H��H�H�E�0������������E��AeEAe�@H:����H��H�����EAe������E����Ae��E�|��EAe������H:H:������HG��������@&������A��HG��s�H:����H H:��EAe������A�����������AeEH:E�E���g�AeE����Ae@&�EE���AEH����������E�����H:�'A����g��~�AeEEH:

	BaAeH H�EEE��EH:E��#��Ae��g���BaHG @&H H AeE!"E�~�E$*%(&'EEzEAE)AE+,E�-/.H AeEAE1w2Y3C4;5967E��8�E�:AH:<?H:=H:>H H-@A�E�B�EDLEHFG�H�H�EIJ��'K�AeH:MUN�O�AePQAeRAeSAeTAe
�~VW�@X�~EAeZj[b\_�]�^EAe�`�at�azce�d��'fhEgE�iE�EkqlnEmH��opE�F��rts�E�uvEH�AH�x�y�z{~|}EH E�E������E�����E�E������E��������p3S�EH:E��E���AeEH��H����������E�SH:C�H:�@A����E�E����&Q���E�����Ae��Ae�AeAe��AeAe��AeAe�������H:�~�������gH:�E�����������@&���E�E���H:����C�������������AeE��E��E�������Ae�E�~�����@&������EAeH:E���E��������S��H�H:�EHGAe������E�H �g��AK���������������'������E������HG��Ez���E��H:EEH:Ae@$	

�'���EEH ��wH EH:�H:E�'EH� EE�'�|E�A!"�E#���H:%0&)�'(E�H:*,+���-.�H:/AeAeE1:2634HGH:|�5EH:79�8Ae�azF�;?<>=�Ae��H:HG@BEA�Ae�H�D�EjFXGOHKIJ�E@&ALN�'MEF�H��PUQSR�EAET�F�VW�H:H�@&YcZ^[\�'�HG]E�g_aH:`�AeAbF��dgefHG��E�hi�E�H:kylrmpH nEoE��qE�svtu�H:F�H�wxAeH:H:Ez�{|}EH�HG~H:E��AeC�����E����Ae�E�E����������H:�C�H���H����������C���H EH:��H:�E�AE������E���
����EE�����H�H�E�����H:�C���Ae�E���������EF�E��H:�Ae��~Ae�����A�A�����'AeAe�ABa���������Ae����EAe���A�'A�H�C�H��`�����������H��@&������Av��'���������Ae��A���H:Aeu�t�������H ��Ae����'�F������EEs�������Ae�E��������A��EAe�A������������)����Ae	
���'��
HGE��@H:�'��H:�AH�A<)#ABaAe "!EE�F�E$&%�AeA'(E�'Ez�*3+/,.-E�E�F�A�02�1��AeA�4856Ae�7�AC�9;H::azu�Ez�=O>E?B�@�AAeH:CDAHGE��'FKGH�'C�IJH:Ae�ALMA�HGNE�PXQTRS@&���@UWV�F�AeH��'Y\Z[H��'AAe]^AeH:_�Ae�a�b�ctdlehfg�EzAEzij���k�Ez�mon�E�psqr�Ae�'�HG�u}vy�w�xEAez|{�'���A�'~�H��Ba��Ae��H����Ez����������F����AeAe��AeAe��8Ae���Ae�8Ae��8�8~Ba�E�������Ae�����az�EAe�AeAe@&�����g�E�������E����e���E��'E�����E�EF�|��H��H����|������������E��H:@�F��E��BA�A���A�H:Ae���E�@&�EA������H:��E���AeH:s������C�F�������E�E��E���������Ae��E���@H:�EzA����E�H:�����C��������Ae��B�E�YE��'H���H��H�����H:�AeBaE�
� �K-	Ae�N�Ae
HG�E�
��HGEz�P���x�Ae�E�A�C�A$ H:�Ae�E!"E�'#H�E�%)H�&'(�BaEAe*+A@HG,E�.:/60312Ae@&E�45�AeAE7�89�H:�HG;C<@=?�>�^�k�'��AB��EDHEG�FEF��'�AIJ�y��@LmM]NVOSPQAe@&C�REF�TUF�@&��W[XZ�~Y���H \EA�^e_aH�`H�EzbcAC�Ed����fjgi��h@&EE`�klEA��AnoxptqrAH:Aes��EuvAH Aew���y|z{AH:�HG}~HG�AKAe������A�A����A�A�A�AA�A��AA��A�@&�����������AeAC���AeAH �'��������������EAeA���L���AeE��'E������H:AeAe�E���az@&��Ae�������E�C��'��E��EzAe�����M����F�����AeEEAe�����H��H�H���F��������gE�Ez��EAeE��������EzC�����E����Ae����F�A�'�BaAe����AH:����������A���A����C��EE�6������A���E��Ae����E��������AH:�EAeF�����Ez��H EE�����	
�Ae�~�@&H 
��AeH�E��H�E��Ae�~HG�Ae��F��EEH�!�"X#C$3%,&)'(H�EE@&*+EEz�~Ez-0./�A|�E12�EAeA4<586EA7@E9;A:@&�HG�~=A>@�?AeE�EEBHGH�DOELFIGH�'A��BaJ��K�E�M�N�BaP�QTRH�BS�EU�VWH:EE�'YoZa[^\��]���_`��Aebhcfde�AAH�g�A�iljkH��H�H:mnEH��Ep|qyrvst�
��'uazAewExE��@z�{�E�}��~��EEzE�E���������C�H�E�E��EAeHGE����������E��'Ae������AEH:����~��'N���������E�����AeEA��E��F����@&����A�F�Gt��EAe��E�H:�'����������BaE�~�E�AH���H��EH:��HGH:EzE��������EAeAH:��EC������E�������H:�b�@���������E�EzE��E�EAeEH:�����E��'H:����H:����H��H�����EE�����Ez���~EzAe����E���������E���H �EE�~��E�EA��H���EE�H��EEi#E
	E��H:�A��H���H*H�H�H���EEE�Ez�~AH�"H�H� !H�HGAe#&$%H����F�')(H���H�E+9,2-0./E�A��1H:A3645AeEzEz�78�H�H�E:B;><E=E��~?@AE�A�BaCE�DH �F�GE�EIkJ[KTLQMO�N�Ae�PEAeRS�'E�EUXVWE��BaYZ�'��AeA\b]`^_�Ae��EaEAcfde�H:�EgihAH AKj�gE�lzmrnEoq��pAe���AeswtvEuE�E��xy�E�{�|~�}A���E������H �'����F����������E����EE��E�����H�EAeH�E��H:A���������~�E����'H �~������EE�E���Ae�����������'�EAeE��E��E�����H Ae�g���'�~����������E��Ae@�Ae��EAeAe��������E��E�EF�E��������E�E���AeAAe@&���E������E�'@&E���E�E��A@|�E����6EE����������EF�Ez���'�H�E����E��'A�'H�E��E���EA�EF������E@&Ae����'@�A����~�9
A��AeA�	F��'��A
EAe�E�H:E��Ae�'H:�EEEAe�Ae�, &!$"�#�AeE%H �3+'*()EH:Ae�E+HGE-2�.E/01E���~E35@4H:�687AeE���:X;K<E=B>@�?�E�A���'ECEDE�FHEGEH:IJ���E�LQMENOH:��PEz�RUSETE��EVWEH �C�YoZa[]�\��~^`A_H:�E�bdcE��EeEfNgNhNiNjkNlNNmnNQ�NpwqtrsAEH EuvAe��'Ex{yEEzEAe|}���E��������������Ba�HG��EzE�����H����'HG�$E���EE��EH��H��H����������t�EE�EF�����'��'E�����A�Ae�E����H �E������E�E�EE�E�E��������H ��H AA�����������EzA��EH:@&A���EE��EE�Es������EE��E�g��E��E���EH E��E��H:��������E���E��H ����E�E�E���E��������E��AeEE�E���EHG�!O�������l�0�������H��H����Ae���E����~��
AE�s�s��	H:E
H:@&E����t�u�Ae�!EF��EH�EH���~H�H H� ��"+#'$%@E&Ev�az(*)EF���EAe,.A-Ae�/EE�1Q2C3:465EEAe798���BaE;><�E=���?A@��EEB���DKEIFH�GAeE�EJEEzELOMNE�H �PE�ERbSZTWUEVEE��XYE@�[_\^]E�E�H `aEazH EcfdEH eH�EgiEhA�jkH�H �Am�n�opyqvrust@��EE�H wx�EEAz|H�{@H�}E~EAeE�����H�EH:E������E�'E��E�AeEHG���������E����E�H �F������E�@�E@&H ������H�EEA���H���H���H�������������� kEz�����A����E���E������EH:�������Ez�H��H���H��H�����E���������E�Ae��E�����AH�H�����EA�AeE������H:��Ae�E�AeE��g�����HG��6EAeF����YHG�AAe��\�"�����������~E��~H:��EA�~H����H��H�H�Ez������A��H:�E�'�Ba������E����
E�EE	E�EE
���H @H���'AeH��Ae����Ba��AE�� E�E!�gHG#>$2%-&)'(E�EAe*+�'H:,F�E�.0�/�'�1E�Ae38E4576H:�EH:Ez9=:;��EE�<E��E?L@GACBE@EDEEH:FEAe�HJIE�EK�E�MSNQO�EPEazR���~TWUV��~�EXZAeYF���[F�@&]�^{_n`haebc@&Aed�EzAefgE��EilEjk�Ez�H�mA�otprq�AAeEsEAuEvyw�x�!�!@zE�lx|�}�~�EE�~���A���EF������EE�AeE�������EE�E�E�����E�E��H��EHGH������������EH:�������~�HGE���@&H:���E�H:�H:�H:�H:H:��H:H:��H:E���������|�F�E����������E�EA�~�E��Q�Q�����E�E�E�����H�H:���H���H��H��H��H��H�H���H�H��H��r�EzW�[���������EBaE���'�����EE���E@&H:�'���S����������E�AeEAAe���'������EE�EAe������AH�H��A��EE�����'�|�F���H:	AEzE�E@&
AE�
�GtAe���Ba����E���@&����H�= -!&"$#�AeH %E�H�'*(�)HGAe��H�+E,�~Ez.5/3021��EH�@&4�@&�6:78EA9�+�E;<E�E�>F?D@A�EBEECEEzE�E�GNHJI�H:H�KM�LEz�@&�OQEPH�E�R��T�UhV]WZXEYE�E[E\EH:Ae^b�_�`Aa�6Aece�dA|�fgBa��EivjnEkElmEٰ��ospqH:AH:r�Etu�&E�Ew}x{yEzEEAeE|EA~�EH:E��Ba������������H�����H���������E����E��EEzE��������'@�AeAeE���~�@&�g��������@&����������~��7��������������@Ae�E����Ae�~A��������HG������������Y�������A�A��Ae�Ae�E���������E���E�H�������@F�H AH:������|�E������H:��~�'�E����EAeF��EzE��@��H:���������H:AeAe��Ae�H��A������F�AeAe�Ae�'�����8���������AeHG��~�H:H��BaEH�	
H��E�
�����F�EEz����&EEEE�'" ��Ae!�[�N#%F�$�E&F�Ae@&(4)*�AE+�d,@-.@@/0@1@2@3@@��56HG���8y9\:L;D<@=?A>��'�@ACEBAe���EH�FG���IJ�F�K�AeEMUNQOPE�AERS�@&@&T@&�VYWXEH EH:Z[���H:H�]k^e_c`�abH:HGAeEdE�~figH�hi�EAeH�jH�Elom�EnAEpuqs�r�Et�HGEzvw�ExEEAez�{�|�}E~�H:���Ae��F��V�����#���E��F�&��'�E������HG�'@��E��E��
wEAe��E�~|���������H�BaE��H�EE@&�����E�Ez��E����E����E��������T"�R�~�^���~�l�{����E����H EAeHG�'�j���/�������������E�eEEEz�E�HG�����EAeHG�EE����E��������6�&EH�HG���'Ae���Ae���H�EH����H��6E�E�F
w�����E��E�����E��@AeE����F�E������EAH�E�������������HG�@����Ae���HG�H �
E@�E	�E�A
BaB�E�EBaERb�6#EE��gEE�EE�@& "E!AeE��E$(%E&'�EEH:),E*+�E�-.E�E�0Z1B263��4�5�Ae7=8;9:�H�����<�H >@?E�AEAEACODKEIFH�'GF��HG�JE�EELMNEEzAe�PWQTRSH:�'�EUV�H A��X�Y�AK[u\g]a�^�_Ae`Ae�becd@&H��H:EfE�hnikjE�AlmH�EH�EorEpqH�Ae�st@&��Aev�w|xz�yE�{��A}�~��E�H E���Ae������@&����EE����EE����&��H:E�������������E�AeEAEE�EH �����HGE�6E�����wv�Ae����E���E��������&E�E�E�EHG����E�����~��
�Ae��E��E���e���EE�EH:��������g�Ae�E�E����E�E�EH�H��@&�HGE����������HGBaEA���AeE��EE�Mg���E���E��Ez���EE�'�����E�Ae������E����AeE��Ez�����AAE��E@E�E�~����E�E���v���m�AeEEH�H�EH�8	
EH�EEE
��E@&�HG�Et���EAH:�EEEEzE,% "E!�@E#E$E�&)'(E��E*H�+H�EHG-3.0E/EH�12EzEEٰ465EH�E7EE�'9M:?;<E�=�>�H:�@FAC�B�AEDEٰE@GKHJH:IAe�E�LE�ENZOUPSQEREAeEET@EVXEW��AYEH�@[b\_E]^@Ae@`a���HGcfde��~�Egih�EHG@&�k ]l�m�n�o|ptqr�EEsE�uxv�w���yz��'�{���}�~��A�����H:��E����E�BaAeH:EEH�������H��H����EEzAeH��E�EH:E�����Ae�E�E��EF��F�Ae�����q�������Ba�H @�������������EAKH ��EAe�H:�H:�H:�H:H:�H:��H:H:���H:������Ae�Ae�'Ae�E�E�E�E������A@&��'�����Ae�E�����E��F���@����A��������E��EE��E��E�E�~�E�@��E��H���H����E�|��  � ��������Ae�HG�'����@&EH:EE���EH:@����E��������~E��E���   �H:Ae��'      	  EH�EAe� 
� ��� 
 E 
�E  E�EH       E���A  @&�EHG   EEEzE E ���� ! A " 2 # * $ ( % &�E 'EE� )�E� + 0 , . -EEH: /߫EAe 1H��H� 3 8 4 6 5�@� 7��E 9 = : < ;ٰAeE@&A > @A ?�'|�HGE B M C G DEE E FEE� H JE I@&E KE�' LE� N V O R P Q�H�H�� S U� T�Ae@&E W YE XE@ Z \ [��AeEEH� ^ � _ � ` | a q b k c g d f� e��Ae�'Ae h i�E j�HG� l o� m n��E pE�E r v s uE t�EE� w y xEAe� z {EAe@&� } � ~ �  �� ��~EH� �E� � � � �E �EAe�~E � �F���A � � �E � �� ���J�E � �� � �E�E� � �EH E � � � � � � � �E �E@ � �Ez�E@& � � � �EEzE� � ��@ �E �@ � � � � �� � �@��
n� �� ��@� � � � � ������ � �-@z���cl � � � ��[������ � �
�@�Y@ � �E � ���~Ae� � � � �@�@�Ba � � � � � � � ���'@&E � �Ae�&Ae�' � � � �� �E@H��H� �H�� � � � � � �� �EAeAe�� �� ���'E � �EE �@F� �!  �! � � � �E �E �EC� � � � � ���Ez��E �E� �F�G� � � � � � �E
n ��@&E ���� �! �E�Ez!E�E!!!!
!!H�!H�EE!E!	����!!�!�!
@&�E!�~E!!!!!EE!��E!E@&!!!!�AEA!!Ae!�'�Ba!@�!!!;!"!/!#!)!$!'!%!&H:��EE!(EH�!*!-H�!+!,Ez
��!.�@�!0!5!1E!2!4�!3�E@H !6!9!7EE!8E�E!:�E!<!C!=�!>!A!?!@�~H H:H�!B�E��!D!H�!E!F�!GM�Ae!I!L!J!K���E!M!NH�EEH !P$�!Q#:!R"@!S!�!T!�!U!o!V!c!W!^!X![!Y!ZH:��'EE!\
�!]E�!_!a!`H�E�!b�H��!d!g�!e�!f�E!h!l!i!jEH A!kAeHG!m!nEF�AeE!p!!q!x!r!u!s!tE��E!v�!wEEzE!y!|!z!{��'E�!}!~�H:H��!�!��!��H�!�!�!�!�H�HGEAe!�E!�H:Ae�!�!�!�!�!�!�E!�E!�E!�E�H�!�!�E!�!��M�6E!�!�!�!�E!�H�E!�!�H�EE�!�E!��!�H�E�!�!�!�!�!�!�E!�tO�!�!��HG�'HG!�!�E!�E!�E
�Ae!�AeA!�!�!�!�!�!�!�!�!�@�@HG��~EE!��E!�!�E!�A�'!�!��H��E!�"!�!�!�!�!�!�!�!�E!�E��!�E�!�!�!�!�E!�@��EE!�AE!�!�!�!�!�!�H H��H�E!�!�F�!�A!�AA!�A!�A!�!�A!�AA!�AC�!�!�!�!��H �~�!�!��E!�E�E!�!�!�!�!�!�!�!�!�EE@&�~A!�!��!���FF�E!�!�!�!�s�E!���EAe!��az�!�!��!��H�!�!�E!�!��L�@&""E��@""!""""""E"EEz"	""
�C�A=��"
"""�H�E�""�EEAe""""""Ae"AC�H��"E�H�"""E�E"" E��E"""3"#","$")"%"'"&EEAeM"(E�"*"+�EE�g"-"1"."/HG|�"0����"2�H:"4"8"5E"6EE"7E��"9"<":";�'�az�"=">+EE"?E�"A"�"B"}"C"a"D"S"E"K"F"I"G"HE�F��"J��@"L"N"M��|�"O"QE"P��&"R��5d]"T"Z"U"Y"V"W�E�H "X�F��E"["_E"\"]"^�D���[
�"`EAE"b"p"c"j"d"g"e"fE�@�"h"i�EE�'"k"n"l�E�"m���"oH �"q"v"rE"s"u"t@�'EHGH�"w"yE"xE��"z"{�'E"|EE�"~"�""�E"�"�"�"��E�"�E�E"�"�"�"�"�"���EE"�ٰR"��E�E"�"��E�"�"�"�"�"�"�"�"�E"���S�E"�EE��"�"�E"�EH�"�"��'"��Ba��"�"�"�"��H�H�"�&Q�"�"�"�EA�"�"�E@"�E�E"�"�"�"�"�"�"�"�"�"�E"�E@E"�"��E�E"�"�"���H �"�"�"�"��"�"�EAe"�"�"�Ae"�"�"�Ae"�AeB�B�"�B�Ae"�"�Ae"�"�AeAe
�"�Ae"�"�N���RAeE"�"�E�Oٰ"�"�E"�E�"����"�"�"�"�"�"��"��"�Ez��A"�"�"��"�"�@"�@"�@"�@"�@"�@�`�F�"�"��"�Eaz�"�ٰ�e"�"�"�E"�E"�Eٰ
w"�"�"�"�"�E�@"�"�
���&R"��"�EE�e"�#"�#
"�#"�###�Ez#�Ae��#�#�m|##
##	HGE���##H:��@&######@&EE@EH�#H��##���##$####E#E�##���Ae�Y# ###!#"�EE��E#%#6#&#4#'#*#(#)EײE�&E#+#,EE#-E#.#/EE#0#1EE#2#3E@EE#5E�#7�#8#9�'H:��'#;$"#<#�#=#�#>#^#?#T#@#F#A#C#B@�E#D#E@��@H H #G#H#R#I@#J,i#K,i#L,i#M,i#N,i#O,i#P,i#Q,iH:,iw#SEzE#U#X#VE@#W@E#Y#\#Z���#[HGE�#]E@#_#l#`#e#a#c#b@@E#d@E@#f#h#g@E@#i#jE@E#kE�#m#|#n#p#o@H�@#q#r�E#s"�A#t#u#z#v�#w�B#x#yC��j�j3+#{�x��#}#�#~��#}7��#��E�#�#�#�#�#�H�#�H�@&H�#�#�#�#�#��F�#��E#�#��eE#�#�ײ��Eٰ#�#�#�#�#�E���E@#�#�@E#�Aem�#�#�#�#�#�#�#��#����u#�#�HG����#�E#�#�AeE#�E
4�e#�#�#�#�#�@@A#�#�@EeE#�#�#�#��~�'��#�#�#���E@E#�#�#�#�#�#�#�#�#�#�#�#�#�EAe~��EE#�H:E#�#�#�EE#���E#�����#�#�E#�#�#�E�Ae�#�E#�E#�#�G�F�EzE#�#�#�#�#�#�#��#�E���e��#�E#�#�#���E#�#�ٰ��ײ��#�#�#�#�#�E�Ae#�E�@#�#�#�EE#�"��e#�#�#��E@@E#�$#�#�#�#�#�#�#�#�#�Ae@��'az�#�E�#�EE#�E#��E#�$#�$#�$E�AE$$E@@$Eٰ$@E$��$	$$
$$$$$@$
E�@$
4�eE@$$$$E@E@$$E@@E$$$$$$Ae�~H:E$EEA$ �$!�Ae�$#$x$$$Q$%$8$&$.$'$-$($*$)@�@$+$,@EE�'H�@$/$3@$0$1$2AeEE�$4$6�$5�E$7@@E$9$C$:$>E$;$<�$=E�Ae$?$A$@@�E$B@@E$D$I$EE$F$H$G�waz@E$J$M$K$LE@E��$N$PE$O�XE�EE�$R$c$S$[$T$VE$U�E$W$XE�$YE$ZEAeE$\$aE$]$^$_Ae�$`�~��Ae$b�E�$d$o$e$g$f��E$h$k$i$j�E�E$l$nE$mE�E�$p$s$q�$r��H $t$v�$u��$w��E�$y$�$z$�${$�$|$$}�$~��O$�$�$����$�EEA$�$�$�$�E$�E�$�E$�E@Ae$�$�@E�$���$�$�$�$�$�$�$�$�|�A�E$�$�E�@&H E$�E$��$��HG$�$�$�$�$�$�E��E$�$�E�H�$�H�Ae$�$�H�$��H�$�$�H�AA$�H ��$�$�$�$�$�$�E$�E$����H�$�$�EH�H E$�$��$��E�$�$�$�$�$�E$�$�HG��EH E$�$�$�$�$�ٰ��H:�$�EAeH�E$�$�$�E$�@HG$��Ae�$�&f$�%w$�%%$�$�$�$�$�$�$�$�$�$�$�E�'Ae$��E$�@&E$�$��$��E$����$�$�$�$�$�EAeEEA�$�$�$���'A�$�$�$�$�$�E�E$�$�$�$�@E@E$�$�@E�'�$�$�$�$�$�$�H��@$�F�EE@$�$�$�EH�@�$�H�E$�%%%%%%%%@%E�H:%E%�~�E@%	%
%@E@E%
%%%E%@%E�E%�Ae%%%�E�%@E@%%E@%%%%%@@E@E% %"%!@@E@%#%$@EAe%&%I%'%9%(%3%)%,@%*%+@@E%-%/@%.���%0%2�%1E�H @%4%6%5�@�%7@�%8�@%:%B%;%?@%<%=%>@E@A%@@%AEA�%C@%D%G@%E%FEEazE%HE�%J%^%K%T%L%O%M@@%N@E%P%R%Q@@Ba@%S@H:%U%Y%V%WE@@%X@E%Z%]%[%\�EE@H�@%_%m%`%e%aE%b%d%c�E��E%f%i%g%hE@E@%j%lE%kEHGE��%n%t%o%r�%pC�%q|��g%sEH�EE%u%v�H:�%x%�%y%�%z%�%{%�%|%�%}%�%~A�~�%�%�E�Ae%�%�E%���'%�%�H��Ae�%�%�%�E�E%�%�%�%�E��E%����%�%�%�%�%�%�H�E%��'EF�%��%�%�%���Ae�azH:%�%�%�%��%�H��%�%���HGA%�EzE%�%�%�%�%��'C�NEzH %�%�E��E@%�%�%�%�%�%�%�%�E%�E�'%�%�AHG�H %�%�%�%�HGH�H�EH�%�%�AAeHG%�%�%�%�%��EzC�%�E�E�%�%�%�H�%��E�%�%�EH EBa%�%�%�%�%�%��%��~E�%�%�HG�F�%�%�%�%�%����H:�E%�%�%�%�%�%�E�AE%�%�E%�EHGE�%�%�%�%���Ae@E%�%�%�EEF��E%�&'%�&%�%�%�%�%�%�H�%�H���%�%�%�F��~��@%�%�E%�E�%�%��EzHG�%�&%�%�%�%���%�AvE�E�&@Ae@&&&@@E&E@E&&&&&	&
&
&E�&H:��E&@E&&E&E��&&��&
4&&&&&EE�&&&&Ae���AeE�E&&#& &"�&!�Ae�Ae&$&&Ae&%AeE�@&&(&J&)&=&*&7&+&-&,E@&E&.&0&/Ae�E&1EHG&2HG&3&4HG&5HG&6HG�MHG&8&;&9&:@�@��&<�E&>&D&?&B&@&AE��E&C@H�E&E&H&F&G@E@E�&I�E&K&W&L&Q&M&O&NEAeE&P@E@&R&U&S&T@EE�&V�E�&X&^&Y&Z�E&[&\E��&]EAe&_&d&`&bAe&a}��&cE��&&e@E@&g'*&h&�&i&�&j&}&k&t&l&p@&m&n&o@��@&q@&r&s@EH�Ae&u&y�&v&w&x�HG�E&z@&{&|E��@&~&�&&�@&�@E&�&�H�&�H�HG&�&�&�&�EzE���E&�E@&��!@@&�&�&�&�&�@E@�&�&�H �@E&�&�&�&�&�@&�&�@&�@Ae&�@�@&�&�&��&�H�@E&�@&�&��EH:Ae&�&�&�&�@&�&�&�E@E@@&�&�&�@EE@&�&�&�&�@&�@`�&�&����E@&�&�&�&�@H�H�E&��&�H�E�&�&�&�&�&�&�&�@&�&�&���&��'E&�@Ae&���&�&�@&�&�@E@&�&�&�@&�@E�&��E�&�&�&�&�&�H�&�&����'&�H�E&�&�&�EE&�R�&&�&�F�EA�&�&�&�&�&�E�E&�&���H �&�&�&���&����&�E�'&�'&�&�&�&�&�&�&�&�H:EH E&�&�Ba�AE&�&�&�E�EA�&�&�&�&�&���~��&�E@''''�EAeE'''|�E@&@&`�'''	''
'''���''
�E�'����''''H�'AeEAeE''E�E�''"''''E�''E�E�' '!�'����'#'''$'%Ae�'&�E��'(�')�F�'+'�','f'-'E'.':'/'5'0'2'1E�E'3EE'4EBa'6'9'7'8�AeA�'E�';'A'<'>'=H���'?'@�~���'B'C�E'D�Eli'F'W'G'N'H'M'I'K'JE�Ae�'L��A��'O'R'P'QH�����'S'UAe'TAeEE'V�E'X'`'Y'\E'ZE'["�+�']'^AH��'_�@&'a'b�A'c'dH�AH:'eF�E'g'~'h'r'i'o'j'm'k'lAe���'n@�HG'p@'q@E@'s'y't'w@'u@'vE@'x@H �'z'|'{@@F�@'}@E''�'�'�'�'�'�'�@E@'�E�H�'��Ae'��@'�E�'�'�'�'�'�'����'��E'�'�H:@@E'�'�'�@@E'�'�@EE@'�'�'�'�'�'��'�'�'�'�H �'��'EE@'�'�'�'�@'�Ae'����E'�E@'�'�'��F�2��'��'�E�'�'�'�'�'�'�'�'�EBaAe�'�'��Ez'�@Ez��'�'�@'��EE'��'��E'�'�'�'�'�'�@�EA'�'�'�HGEAe'�HGHG�'�'�E'���''��E�''�'�'�'�'�'�'�'�'�E��~E'�'�AeE�'�'�H���'�'��E�'�'�'�'�'�'��~�'��~E�'�'��'�E�E�'�'�'�'���'�EEH '�@@E'�'�'�'�'�'�@'��E'�'��EE@'�'�'�@E@�@'�'�@'�'�@@E'�('�@�A((@�@�(0�(,h(*�()%((�(	(B(
(((A((
(((EH:H:��A(AE((((((E@&E�~(A(A(Ae��A(((AE@&HG( (/(!(%A("(#($A@&���(&(,('((dAE()(*(+EAe�Ae(-(.H:@HGA(0(;(1(9(2(5Ae(3(4EAe
H:(6(7(8Eըr�EA(:AE(<(?(=(>H:@&@H�(@(A��EEA(C(f(D(T(E(P(F(K(G(HEF�(I(J�P�@&��(LE(ME(N(O��Ae�'�(QE(RAH:(SE��(U(`(V(^(W(XEH:(Y([(ZE
��(\(]AeEAeE(_EAeEE(a(b(cE�A(dGt(eF�Gt(g(�(h(p(i(n(j(m(kK�@&(l@&�*��A(oE�H:(q(v(r(uA(s(t���HG�H:(w(�(x
��(y�(z�({�(|�(}(~��((��(������9A(�(�(�(�(�(�AEE|�(�AAeAA(�(�(�@(�(�(�H:(�(�H:(�H:s�H:(�H:(�H:(�H:s�H:H:(�
�(�
�E(�(�(�(�(�(�(�(�(�(�AeE(�EAE(�(�(�(�EH:(�(�s�(�s�H:E�(�EAeE(�(�(�(�(�(�E(�(�EAeE@&F�(�(�Ez@E�'(�(�(�(�EH:H:E�(�(�(�(�(�(�E����
�����(�Ae(�EEAe(�(�(�(�(�(�(�E(�EE(��E(�EEH:(�(�(�(�E@&(��(��E�(�(��6EH:H�(�(�E(�(�EE(�H:Ez(�(�(�(�E(�(�F�EAeEH:(�(�EH:EE�(�)(�(�(�(�(�(�(�(��H:��Ae(�(�(�Ez(��EAeE�(�(�(�EF�E(�(�H:(�Ae��Ae(�(�(�(�(�E(�E(�AeAe�E(��E(�)(�(�Ei@AH:)EA))H:)H:)H:s�H:)))))	))
)AeH:F�)�)
�Ez))@&AA�))))A�)E�AeE))F�E)E��)) )E))H:EE)�Ae)!)#E)"EH�)$EH�E)&)�)')�)()`)))L)*)<)+).E),az)-Ba�)/):H�)0az)1)2wt�)3)4t�t�)5)6t�)7t�t�)8t�)9t�az);E��F�)=)I)>�E)?)@s�s�)A)Bs�s�)Cs�)D)Es�s�)Fs�)Gs�)Hs���)J)K�;EHGH:)M)U)N)Q)O)PAAeAE)RA��)S)TH:Ae�)V)[)W)XAH:HG)Y��)ZEAe)\)_F�)])^��EK�H:)a)})b)l)c)f)d)eHGEHGF�)g)i)hAeH���)j)kBa�E)m)z)n)y�')o)p��)q����)r��)s)t����)u)v����)w��)x���AH ){E)|azHG�)~)�)E)�)�)�EE)�AeEzEA)�)�E)��H�)�)�
�H�)�F�H�)���H�)�)�)�)�)�)�)�)�)�)�AH:d@&)�)�EEzH:F�)�)�E)�E�')�)�)�)��)��E��)�{��Ez��)�)�)�)�)�EAeH:)�)�EHG)��)�H�Ae�)�E)�)�AeE)�E�~E)�)�)�)�E)�)�)�Ae`��)���H )�)�)�)�@��H:H )�)��YA)��H�Ae)�)�)�)�)�)�)���)�)�H:)�)�H:)�H:s�H:)�H:)�H:s�H:HG�)�)�@&Ae)�EH:)�H:)�)�H:)�H:s�H:)�)�)�AeEA)�)�|�Ba�)�)�F�)�AeN�)�)�N�N�)�)�N�N�)�)�N�)�N���N�)�*C)�*)�*)�)�)�)�)�)�)�@)��Ae�)�@&�~E)�)�)�AEzH:)�EAeEz)�)�)�)�)�@&)�E)�Ae�AeAe)�)�@)�@)�@�@)�*H:)�EzAeH:A**
****AEzAF�**
*EzL*	H:EHG**�Ae�**E**@&��Ae***�Ae��A**1**"*****�**E�Ae��F�** F���*!AH �'*#*&*$*%@&E�E*'*(
�A*)*+��**��EH:*,*-*/*.H:s�H:*0H:s�H:*2*=*3*9*4*5H:A*6H:*7*8H:��H:*:A*;@&@&*<@&H�A*>*?*B*@AA*A
QAH:�*D*a*E*J*FH�*GH�*HH�*IH����*K*QH�*L*M*P*N�*OAeAe����E*R*X*S*W*TE�*U*VAeE�+rH:�*YEE*Z*[*`*\�*]�9*^�9�9*_E�9�Ae*b*w*c*k*d*h*e*fE@&E*g�'E*i*jEEz�E*l*r*m*pE*nA*oA�*qE�Ba*s*tK�E*uEe*ve�G*x*}*y*{*zEEAE*|Ez@&*~*�**�EAc��*�AE*�*�H:*�H:*�H:*�H:s�H:*�+<*�*�*�*�*�*�*�*�*�*�*�*�*�AeH *�*�*�F�GtGt�*�*��H�H�@&*�*�*�E*��*�HGHG*�*�HG*�HG*�HG*�HG*�HG*�HG*�HGq�HG*�*�EAEH�*�*�*�*�A*�*�E|EE*�E�*�*�*�*�*�E*�H:�s�E*��U*��E*�*�*��*�H:H:s�H�H:*�*�*�A*�A*�A���*�A*�*�*�*�A�'*��G*�GF�*�*�F�EF�A*�*�*�*�*�AA*�A*�H:A*�*�*�A*�*�A*�s�H:H:AA*�A*�AE*�A*�A*�*�*�E@&EEA*�*�*�*�*�AA*�A*�*�AH:*�gC*�gCgQ*�*�*�AA*�*�AA�c*�*�A*�*�*�AeA*��@&*�HGAe*�A*�*�*�AHG�LA*�+*�+A*�*�+*�*�AEaz�'++H:HGAE++++++E�E�+	+
Ec�+��'�+
A+AA�++#++++++A��EA++E@F�@&+++++A�+�AeAE++ �g4H:+!+"Ae���+$+.+%+(+&+'AAeA�+)+*EAA+++,+-H:�@&H:+/+4E+0+1+3�+2�Ae���+5+:+6+8+7H:H:Ae+9AeEAe+;E�E+=+�+>+�+?+i+@+V+A+M+B+I+C+E+DEzE��Ez+F+G+HHGF�Ae�+J+K��EA+LAe�+N+T+O+Q+PE�'E+R+S�'�E�E+U@&@+W+^+X+\+Y+[@&+Z�EAH:�+]AE+_+c+`+b+a���FH:AeH:+d+hA+e+f+g�Ae�EEgC+j+y+k+p+l+n+mAazEA+oAE+q+vE+rE+s+t+us��H:s�+wE+xH:E��+z+�+{+~+|+}EA�d++���K+�+�A+�EAe�r�~+�+�+�A+�+�Ae��Ae+�@&E+�+�Ae���H:+�+�+�+�+�+�+�+�+�+�H:A+�EC�+���C�+�+��H:MAe+�+�+�A@+��+���E+�+�@&A+�+��H:H��+�+�+�+�+�+�E�@&F�+�+�+�az+�+�AeF��E@&E+�+�H�+�H�A+�+�EA+�EC�+�C��+�+�+�+�+�+�+�+�E�AEE+�E+�,>+�+�H:+�,>,>+�+�,>+�,>+�,>+�,>+�,>H:,>+�+�+�+�+�H:Ba+�AE@&E+�+��'�+�A+�F�@&�+�+�+�+�A+�AAe+�+�EzEE�+�+�+�+�EAe�A+�AH:+�EAe+�,)+�,	+�+�+�+�+�+�+�EAE+�+�+�H:���+�+�+�EEzBa+�F�Ae�O+�E+�+���K�F�A+�+�+�+�+�+�E|�+�@&�E�+�+�HGaz@&H:+�,+�,,EE,H:EEK�,,E,_�E,@H:,H:s�,
,,,E,,
,EA,,�6H:H:,HG@,,E,�,,EE��E,,H:�,�Ae,,#,, ,,�6@|�Ba,!,"EH�H�E,$,',%,&E�MAe�,(E�,*,R,+,<,,,3E,-,.,2,/@&,0,1@E@EzH:Ae,4,8H�,5,6azb�,7gQub,9,:AEE,;EzE,=,F,>,A,?,@EH:Ez��,B,C�~�'E,D,E@AeH:,G,L,H,K�,IE,JAe�AF�,ME@,N,OH:H:,P,QH:s�H:,S,^,T,ZE,UE,V,W,XgCAeH:,YHGH:,[,],\EazH:EA,_,bA,`A,a@&A,c,f,d,eEAA�E,gEH ,i/S,j.
,k-1,l,�,m,�,n,,o,z,p,u,q,t,rAeH:,sAeF�H:A,v,yA,wE,xAe�BaA,{,},|A@
�,~EAE,�,�,�,�,�,�,�E,�,�|�HGEzHG`�E,�,�E,�,�,�����,���,���,���,���,���,�����,�,�������,�,�HGEAe�,�E,�E@&�,�,�,�,�,�,�,�,�E�,����BaE,�,�EE,�EAe,�,�,�E�Ae,�Ae��,�,�,�,�,�,�H:,�H ,�EAeE�,�,�EBaAe@&E,�,�,�E,�,�az,�azaz,�,�az,�azaz,�az,�az,�az,�azgQEF�,�,�,�,�,�,�,�,�,�,�,�,�,�AeF��Ae�,�Ae�,���,�,�E�,�H:AeE,�,�,�,�H�E�Ae,�,�Ba,��',��AeHG,�H�E,�,�,�,�E,�,�,�E@&,�,���������,�,���'E,��,�E�,�,�,�,�,�,�E,��E,�����@,��E,�,�A@&F�,�Ae�D,�-,�-,�,�,�,�,�EH:�AE,�,�E@&-EzAeE----AeF�F�--EE�E-�-	H�-
F�Ae---
---���A-K�--K�-K�K�-K�-K�-fNK�--A-�6EAE--!-- ��-��-��lxH:@&-"-$-#AeEAe�-%-&-/-'�-(�*�*-)-*�*�*-+�*-,�*--�*-.�*��-0���-2-�-3-c-4-Q-5-K-6->-7-9-8�'E�-:-;HGAe-<-=������-?-J�-@F�-A-BF�-CF�-DF�F�-E-FF�-GF�F�-HF�-IGtF�AeE-L-O-ME-NEE�-P�E�-R-X-S-V-T-UE�EAe-WEE@&-Y-^-Z-[AE-\@&-]EE�-_-a-`�EHG�-bAeE-d-q-e-n-f-j-g-i-hE�AeAeE-k-lEAe-mABaAe-oA-pAC�A-r-�-s-w-tE-uE-vAeAe�-x-|-yF�-z-{������A-}-~-H:�HGAe-�-�-�H:-���'F�-�-�-�H:H:-�s�H:-�EAe-��Ae-�-�-�-�-�-�-�-�-�EH:-��AeE-�-�����-�-�-�-�H:EEA-�E-�E-��Ae�-�-�-�-�-�-�@H:@&E-�-�-�EE�E-�-�-�-�-�H:-�-�-�-�,>-�,>-�-�H:H:-�-�-�-�H:-�H:H:-�H:-�-�-�H:,>-�-�H:-�-�,>H:,>H:-�-�H:H:-�H:-�H:-�-�-�-�AH:-�EE�-�-�E-�G�F���H:-�-�-�-�-�-�E-�E-�Ae-�Ae�-�-�
��~EA-�-�-�-�-�-��E-�-���A��AE-�-�HGAeH:-�-�Eaz-�EazE-�-�-�-�-�-�-�-�s�-�C��B-�-��EH:Ae-�-�H�EEH�-�-�AeH�-�A�H-�-�lx-�lx-�lx-�lx-�lxlx-�lx-�-�lxlx�H-�.-�.A..�NN��.H:.AeEz..AeH:A.az.	azm..�..i.
.>....A.E.
_E....@&Ba.A..�EzAe�..A��.@..s�s�s�H:. .*.!.%.".$.#Ez�~AeH:@&.&E.'A.(.)OT_�N�O.+.6.,.-H:A..A./@@.0@.1@.2.3@.4@.5@@�'.7.;.8�6.9.:AeB�Aew�.<E�E.=Ae��.?.U.@.G.A.E.BEE.C �.D ���.FEEA.H.N.I.K.JA�g�6.LE.MF��HF�.O.R.PBa.Q�Ez�.S@&.TH:E�.V.`.W.[.X.Z.YA��AeAE.\._.]EE.^E�AeE�.a.f.b.c�A.d��.e�E.g.hAeE�E�A.j.�.k.y.l.v.m.r.n.pE.owE.qH�H��E.sE.t�.u���~.wA.xAE�A.z.{.~.|.}AAe�g�'..��'�.��~AeH�.�.�.�A.�A.�A�A.�.�.�.�.�.�EA.�Ba.�EAeEE.�H�.��E.�.�.�.�.�.�.�AE�.����Ae.��A�.�.��.�.�.�.�H:.�H:.�H:H:.�.�H:H:.�H:.�.�H:s�H:H:�@&.�Ae�~.�/.�.�.�.�.�.�.�.�.�.�.�N�~EH�HG.�.�H:.�
�.����OE�Ae.�.�.�.�H:@&.�M.�Ae�'H:.�.�A�H:E.�.�.�.�.�.�H:.�.�azgQaz@&H:.�.��AE�
�.�.�.�.�.��E.�Ae�.�i@.������.�.�.�E�E.�E�E.�.�.�.�.�.�E.�EH:.�.�H:|�@&�.�.�.�.�EH:.�H:@&E.�.�.�d.���E�E.�.�.�.�.�.�i�Ez�.���Ae.�.�AeA�Ae.�/.�.�E.�.�E.��.�.�L�.�L�.��jL�.�L�.�.�L�t�t��tE�A///� �F�i@//*///////	/
H:K�@///
Ae��6Ae//�Ae�A//A/H:A//AE@&�//!////Ae�/H:�E//H:@&Ae/ �H�/"/%/#/$EAEA/&/)/'A/(E�'�AH:/+/@/,/6/-/1/./0Ae//AeEEzA/2/3E�E/4EE/5�E/7/:/8/9AeEE@&/;/=�/<�1E/>H:E/?��/A/K/B/D/CE��E/E/G/FH:E�g/HiM/I/Jx�x�ݙ�n/L/Q/M/OE/N�G/PEBaEE/RE@&/T0Y/U/�/V/�/W/p/X/`/Y/\/ZA/[AazAA/]/^/_|�E�iM/a/i/b/e/c/dAEH�E/fEE/gF�/hE�/jH�/k/o/l/mBaEO/ns�H:�A/q/�/r/|/s/y/t/xH�/u/v/w��AeAe�'AEE/zA/{ABa/}/�/~E/E/�F��gEE/�K�/�/�Ae���/�/�/�/�/�/�t�/�/�/���AeN�Ae/�EEE�E/�H:/�/�/�Ae��Ae
�/�AAE/�/�A/�/�/�/�/�/�/�/�/�/�EE���Ez/�/�EAe/�E�E/�/�/�E/�/��Gٰ�G�OEEz/�/�/�/�/�Ae���/��az/�AeE/�E�E/�/�/�/�/�/�E/�/�E@&E/�/��EE��/�/�/�/�/�Ae/�/�N�,O�9A/��Ae/�A�'A/�/�A/�/�/��E�E/�/�/�E�EE/�/�/�/��AeE/�/�mazmaz/�0/�/�/�/�/�A/�/�H:AA/��8AA/�/�/�/�/�HGE/�E/�E�EE/�/�E�H�/�/�/�/�/�/�E/�/�E�EzE/�EE�/�/�/�/�E�/�/����E/�AvE/�/�/�/�|�AE/�E�E�/�/�A/�A/�A@/�00E0EEz�0EH:E00)0000000	EE0
E0�Ae0
AazM00AEE0az0EAe00!0000AHG�000�azv�az0A0A@00@0 @�@0"0$A0#H:��0%0(0&Ez0'����AeE�0*0>0+040,0/0-0.E�E�6E000301EAe02���N��050;0607�E08H:090:gCw�azb�0<0=AH�AHG0?0L0@0G0AE0B0E0C0DH:s�s�H:0F�Ba�0H0KE0IE0JAeEEaz0M0S0N0P0OE��0Q0R��OEzE0T0V0UEAeE�0W0X��E0Z0�0[0�0\0t0]0j0^0e0_0b0`0a��EzH:E0cEE0dE�0fAE0gE0h�0iAe�0k0q0l0n0mH:AH�0o0pEH�EAA0r0sA�A0u0y0vAA0wA0xAE0z0�0{0}A0|A�E0~0l��0�0�H H 0�0�0�AK0�W@��H 0�H 0�H 0�0�H 0�0�!�?�M�v0�A0�E0�E0�0�EAeAeE0�0�0�0�A0�A0�0�0�A�0�Ez0�
�
��\0�A0�0�0�E0�EHG�0�AE0�Ae0�H�AeA0�0�0�A0�0�H�EH�0�0�H�0�0�0�0�EE�@E0�0�F�0�0��'EAeE�0�0�0�0�0�A0�AA0�0�AA�A0�A0�0�0�A0�A0�Ez0�F��A0�H 0�E�0�0�0�0�0�A0�A0�E�H�A0�A0�A0�C�A0�A0�0�0�AA0�AeAA0�A0�AeA0�5�0�3�0�2,0�1�0�1/0�10�0�0�0�0�0�0�0�AE@&�'0�0��0�0�`�H:EE|�0�0�EA0�0�0�0�0�EEAeAe0�E�H:A0�0�0�0�0�0��E0��0�F�Ae�0�0�C�AeAe0�0�HGH Ez0�10�1��1E11AeE�~��11AeF�11
11	Ae
�Ae
��1Ae�g1
1"111E11��H �1�1Ae@&11111F�11Ae��@AeH�1H:1@&E1E�11 1!�EB�Ae1#1*1$1&1%H H Ez1'1)Ae1(Ae�kEA1+1-A1,AEE1.H:@&101_111D121<13161415H ��H:E171:18H:�19A�Ba1;H:E1=1B1>1?EHGE1@�1A�E1CE�'E1E1T1F1N1G1L1H1JM1I�AeM1KE���1ME@1O1S@&1P1Q1RC��
QA��1U1[1V1Z1WE1X1YAe��EEH:1\1^E1]E|�@&E1`1u1a1k1b1h1c1g1dE1e1f8�,��a�HGAe1i1j@&�@&Ae1l1qAe1m1n1oBa��1p�u�1r1sEu�1tE�E1v1�1w1{1x1y@&H:1zEٰE1|1~1}H:���1�'Ae�1�1�1�1�EAeAeH�1�1�1��~Ae1��E1�1��F1�H:�F@&H:1�1�1�1�1�1�1�1�1�1�E1�1�HGAe1�AeE1�1�A1�E�<1�EHG��1�1�1�1�1�1����1�Ae�AeA@&1�1��1�1�1�EAe@&�1�A1�AC�A1�1�1�1�1�E���Ae1�1�AEEH:1�1�1�1�E�H AeH�1�1���1�A�1�1�F�1��AeH:1�NH:1�1�1�1�1�1�1�1�AeA�EE1�H:A1�1�Ae1�E1�F�1��E1�EAeA1�1�1�1�1�ELA1�1�EH 1�Ae�'1��Ae1�1�1�1�E@�E1�1�E1�Ae1�F�AeH���1�2	1�1�1�1�1�1�1�1�1�1�1�HG�E�1��'�@&1�F�1����1�1��gAe1�Ae���1�1�1�1�H E@&HG1�1�AEE1�Ae1�EAe1�21�1�1�AAeE1�2A1�1�1��w ;�wF�E2222EA2AeE�22H�EAE2
222222
2H:AA22�Ez�2E�2�E2222@&F�2|�Ae��22F�Ae�@&22$22!22 H:AAeA2"2#EAH��2%2*2&2'H A2(E2)AeAeHG2+���2-2�2.2�2/2c202I212?2229232624Ba�25�L27A28��E2:2>2;H�2<2=Ae��E�H:2@2D2AEE2B2C��OH�2E2H2FEz2GEF��Ez@&2J2S2K2NH:2L2MEE�O2O2R2Paz�2QH:EAH:2T2_2U2\2V2Y2W2Xv�w*mv�2Z2[F��HGE2]2^mazH:s�2`2a����2b
�H�2d2t2e2m2f2k2g2jL2h2i�ٰAeAEE2lE�'2n2q2o2pAAeH:E2r2sAH:EAe2u2}2v2z2w2y2x@&EBa�A2{2|AAeH E2~2�22�
�AA��2�2��2�E�E2�2�2�2�2�2�2�2�2�2�2�2�2�EEAe2�AeAeEF��2�2�H AE2�2�2�#e!�!� �2�2�2�2�EzL�H��2�2�2�2�Ae2�H EH�H:EzA2�2�2�2�H:2��2��E2�2�2��2��b�N2�@HGE2�2�2�2�2�H F���HG@2�2�Ez2�2�H:H:���6H 2�2�2�2�2�2�2�2�2�H 2�2�F�E���AH:2�2�H:AAeE�2�2��2�LA2�2��6@2�2��2�F�AeHG�'2�2�2�2�2�2�H�2�2�2���EzV����F�2�A�OA2�2�2�2�H:A2�A2�EzEzaz2�2�AH:2�2���E�'�2�3P2�32�2�2�2�2�2�2�2�Aaz2�2��1HGH:s�2�2��E@&A2�2�2�2�2�F�2�H:H:E2�A�H:2�2�2����F�2��Ez2���Ez2�32�32�3�2�2�2�t�azgQazAe��333E33Ae�Ez�E�3F��3	33
3
A33E�E�3EzA33E�HGBaEz33(3333333BaC���H:333v�gQv�az33H:EEAe3 3#3!3"H:E@&Ae3$3'3%�3&EE�Ae�3)3/3*3,3+AH:A3-3.�AH:E30333132EH:F�A3437H:35�36�E38�g393F3:H:3;3?H:3<H:3=3>H:})H:H:3@3AH:H:3B3CH:3DH:H:3Es�H:3G3LH:3H3IH:H:3JH:3KH:s�H:3MH:3NH:3OH:s�3Q3x3R3c3S3Z3T3VE3UEH:A3W3XH:E3YF�M3[3^3\E3]HGE�3_3`H F�3a|�H:3bH:�F3d3n3e3jA3f3gE3h3i6��UO3k3l�H:3m��Ae�3o3s3p3r3qEF�@&K��3t3u�E3vE�3w�
�3y3�3z3�3{3�3|3E�3}E3~HG�iMH:3�3�@H�H:3���Ae3�3�3�3��@3�3�Ae�3�s�H:s�3�3��AAF�3�3�3�3�3�3�@&��AeE3�E3�F�E3�3�3�3�Ez�E3���3�3�HGA3�H:H�3�F�Ez3�4�3�4i3�43�3�3�3�3�3�3�3�3�3�H:AE@&3�3�3�3�3�H:3�H:3�3�3�H:3�H:3�H:s�,>H:3�H:3�3�H:�,H:3�@&��2E3�Ez3��Ae3�3�3�3�3�H:�H:BaN3�H�EzH�3�3�3�3�3�3��H:@&Ae3�3��H:H:Ae3�3�3���Ae�3�3�EAeH�E3�3�3�3�3�3�3�3�EAe3�3��93��93�����Ae�'3�3�A3�3��F�F3��F3�3�3��F3�3��F�F3�3��F3��F�FH:3�3��F3�3��F�F3��F3�H:�F3��F3��F3��F3��F�FH:�~3���3���Ae3�3�3�3�Ae3�AeAAeL�3�3�E��EA3�4
3�444|�Ae@&4��az44Ae44�C��4H:Ae4	AeEz444E4
�~4��E�'4Ae4E4��E44744#444444EzAH:F�44Ae��EAe44 HG4@&A4!4"H�A�~��4$4-4%4*4&4'EH 4(E4)AeAeE4+4,E�E4.434/42H:4041��EA�E4445E46EE�484W494@4:4>4;4<A��A4=E�4?��Ae4A4Q4B4D4CH:EzAE4E�Q4F4G�Q4H�Q4I�Q�C4J4K�Q4L�Q4M4O�Q4N�Q�C4P�Q�C�Q4R4V4S4T�C�Ez4U�~�gH:��4X4_4Y4\4Z4[Ba@&Ba��4]4^Ae|�E��4`4c4a4bAeAH:Ae4d4g4eEF�4fAeEH:4hH:�4j4�4k4�4l4�4m4w4n4s4o4pAE�H:4q4rAe�Ae4t4v4uA����4x4}4y4{4zH�H��H 4|@&N�4~4�H:AAe4�4�4�4�4�4�E4��EH:H 4�4�H F�H�4�4�4�AeEE�4�4�4�4�H:EzF�Ae4�4�4�4�AeEE��4���Y4�4�4�4�4�4�4�4�A��EH:4�4�@4�4�H�F�E4�E@&�O4�4�4�4�4��H�4�EAe@&A4�4�@&AE4�H�F�4�4�4�4�4�4�4�@&�4�Ae��H 4�4��E�H:4�4�H 4�dE4�4�EAAe�4�4�4�4�4�4�4�4�4�4�EH:E@&4�4�H:4�4�4�Ae�AeEE�Ez4�4�4�4��Ae@&H:4�AAAe4�4�4�4�4�4�4�E4��E���'A4�4�t�H E4�4�4�4�AeAE4�4��bAe�4�4�@&AeE@&4�4�4�4�A4�A4�4�E�4�Ae@4�4�4�H:4�EH:�4�4��g4�4��@&�AAe4�A4�4�4�4�A�~A4�AeEH�4�H:A4�5c4�504�5	A4�A4�5555AH:5E��55E5A5AeF�AE5
555555
55�'
��H:�5E@&55����55555E�AeE5�H�55HG@&A�55+55&5 5#5!F�5"�6�E5$E5%AeE�5'5*E5(E5)���H:A5,A5-5/5.EzH:H �E515R525?5356A5455AAeE�575:5859�����C5;5>5<5=H Ae|�azEH�5@5L5A5D5B5CH�AH:�5E5J5F5H5G@F�Ae5IH�EHGA5KAF�5M5P5N5OH���azAeE5Q@&��5SA5T5]5U5[5V5YH:5WF�5X�EAe5Z�F�H�5\AE5^A5_5`Ae��5aEF�5bEAe5d5�5e5}5f5o5g5i5hAAEA5jA5kA5l5m5n��EAe�5p5v5q5t5rH�5sH�E��5uAH���5w5y5xEA�5z5|5{
�E�AeEz5~5�5A5�5�5�5�5�A5�H:H:s��A5�5�AEz5�5�A��zE5�5�5�5�5�5�5�AE5���Ae�AH�5�5�E��5�5�5�5�H:E5�@&�H�5�5�E@&E�A5�5�5�5�5�5�5�5�5�5�A���5�E�5�5�@&�Ae@5�5�5�5�H�E5�A��5�5�5�|�Ae5�EAe�6H 5�5�5�5�5�5�5�AEH�5�5�F�GtAe5�EAe5�5�5�EH��5�@&E@&5�5�5�5�K�H:5�@&5�Ae����5�5�E�H�H�5�E5��Ez5�5�5�5�5�5�AeE5�AE5�H:HG5�5�5�5�B5�5�AeH:�E5��E5�5�H:AA�5�5�5�5�A5�HGA5�5�A5�5��AeE@&F�5�5�5�5�A��EE�5�5�E�AEz�5�8�5�7J5�6�5�6;5�65�65�5�5�5�5�5�5�5�5�����H�E@&5�5�A@&EE�5�65�5�EA6�AeA66E���6Ba��E6666
66	H:�AE666A6
6�9H:�9H:6H:6EAeE66E6E�66|�@&HGA66*66#66 66F�66AeAe��EH:6!6"E8���\6$6'6%6&E��EA6(6)Ez���A6+666,626-61E6.6/60�H:�Fs�AEE63E6465Ae�'az6768AeE696:�A�@&6<6o6=6R6>6I6?6C6@6BAe6A�AeEA6D6EH:E6FBa6G6H�E@�6J6N6K6LBa��6MEAeH�6O6Qd6P������F�6S6^6T6Y6U6X6VH ,6W��=OAE�6Z6]E6[��6\�����A6_6l6`6aA|�6bku6cF�@&6dF�6e6fF�6gF�6hF�6iF�6jF�F�6k�F�6m6nEE���@&6p6�6q6{6r6v6sE@&6t��6u���6w6zE6x6yEzAeE@&�g6|6�6}6~AH:E6A�6�A6�E@�6�6�6�6�6�6�6�6�6���E6�H�E@Ae�6�6�@&6�Ae6�AeB�AeA6�6�6�EEH:6�6�6�EAeEH�Ae6�6�6�6�6�6�6�6�6�6�6�6�H:@&6�H:��6�6�Ez��@&6�6�6�6�Ae��|��66�6�6�H�6��g��Ae|�K�6�6�6�6�6�6�A��6��6��H:�6�6�6�6��6��E�6��EF�Ae6�6�6�6���6�H���H:6�6�@&EE6��B6�6�6�6�6�6�A6�EH:6�EBa6�H:�6�6�6�AA�6�EA6��6�Ae@6�6�6�6�6�6�azEA�6�6�6�A�@�A6�6�6�6�E��6�E6�6�E��Ae6�6�A��Ae@&6�7#6�6�6�6�6�6�6�6�H:E6�6�H:�6�6��F�GtF�6�6�6�E�Ae6��,�H:EE6�6�E�E6�76�76�76�@6�7	H:6�H:777H:7H:7H:s�777H:s�H:7H:�H:7
7H:77H:7
H:s�H:777�,7s��,,i7�,H:�,@�77�Ae7F�E7��Ae77!77��7�~��H�7�7 Ae@E7"@&ty7$777%7,7&7)7'7(H:EA�7*7+EAe@&Ez7-717.7/��H:70F�H���727673H:7475Ae��BaEF�787?797<7:7;Ez@&E�li7=7>@&EzH�F�7@7FE7A7B7D7C�EHGE7E�Ae7G7I@&7H��H A7K7�7L7�7M7o7N7d7O7Y7P7S7Q7RH:EF��7T7WA7UE7VE�7XHGEA7Z7]7[7\E�E�@&7^7b7_H:7`7aE����7cAAeA7e7iA7fA7gH:7h�'E7j7m7k7l�F��E�7nE��B7p7�7q7{7r7u7s7tAe�'H��7v7x7wH:l�g7yH:�7z�E7|7�7}7�7~A�7�AKE�'7�7��'���7���7�EEz7�7�7�7�7�7�7�AeHG@Ae�7�7�@&7���7�����@&7�7�7�7�7��SE7��{AL7�7�E7�7�7�E�F��|�A7�7�7�7�7�7�7�7�7�EE@&7�7��7�E7�EA7�H:A�7�7�7�7�E�@&E7�7�EA�A7�7�7�7�E7�7�|��7�EAe7�7�AAeEzF�7�7�7�7��EE�7�7�Bal�7�AEz�7�7�7�7�7�7�7�7�A�'��7�7�7�H�7�7�E@AeEAe7�7�7�HGAeAe�7�7�7�7�B7�7�7��BaBa�7����E7�7�7��7��F��E7�EH:7�7�7�7�7�7��'EE�7�7�EzAe7�7�Ae7��AeAe7��x�q7�7�7�7�7�@&7�7����Ae@&H�7�H��YH�7�8M7�8 7�87�7�7�7�7�A�Ae7�7�BaHGBaAe7�87�EAe888AeF�H:�888��E8BaAeE�E8	88
888
8@&�~@&88@&8�E8��H:88@&EEzF�88Ae88�'88H�@E�8A8�Ez88Ez�Ez8!888"8+8#8(8$8'8%A8&AeAe�AeF�8)AN8*�@&8,808-8.H:@&8/E��E818582Ae8384H:�9H:s�86Ba�87AeE898A8:8<E8;F�Ez8=8>H E8?H�8@H H:Ez8B8G8C8DE|�8EE�8FAe@&Ae8H8IEH:8J@&8K8Lg&lAeaz8N8v8O8a8P8Y8Q8S8R�AeE8T8W8U��8V�E�8XH:F�8Z8^8[8]�8\azHG��8_8`�E��Ba8b8l8c8h8d8g8e@&@8f�'E��Ae8i8k8j@&E�@&H:8m8p8n8oE�EF�8q8t@8r8sAeAe@�8u�'�8w8�8x8�8y8{8zH:AeF�8|8�H:8}8~8
�E
�E��H:8�8�H:A8�8�A8�8��F�@&Ae8�8�8�Ae@@A8�8�8�8�8�8���8��8��gF�AF�8�8�8�A8�8�@EE��E�8�8�8�8�8�8�Ae�,>8�,>H:E�8�Ae�8�8�8�8�8���E�8�E��AeHG8�9�8�9H8�8�8�8�8�8�8�8�8�8�8�8�8�AeAAe8���azAe8�8�E8�Ae� �8�8�8�8�EK�|�Ae8�8�8�EazAe�E8�8�8�8�8�8�A@&EH:E8�H:E8�8�8�8�8�AAeF�8�Ez8�E�E�Av8�8���EEA8�8�8�8�8�8�8�8�AeF�H:8��'8�H:HG8�8�8�@&F�8��AeAE8�8�H�8�AE8�8���H:�iAe8�8�8�8�8�8�A�8��8�E��F�8�8�EA�8�Ae�'8�8�8�8�A8�F�H�E�8�8�EK�8�H:8�8��NE@&8�9!8�98�98�98�8��EA�999H�E�EE�999EH:E99	AeA9
��9��Ae9
9999999�Ae99Ae|�Ae�.H:E99EEzEEz9999EH�AH:99 99E�'H�EEAe9"949#9,9$9'9%9&AEAAe9(9+A9)�9*B�Ae�'H�9-9/9.AH A9093A91E92Ae!9@&A959A969<9799�98EHG9:EH�9;AeHG9=9@9>@&Ez9?�@@Ae9B9E9CE9D�'@�9F9GEAEA9I9�9J9v9K9`9L9U9M9Q9N9O��Ez9P�Ae�9R9SEAeH�9T�'E9V9[9W9XAE9YE9Z�AeH:9\9]��H:F�9^Ae9_HGAe9a9l9b9g9c9dF��@&9e9fH���HG9h9k9iEE9j�<E��@&9m9r9n9qE9o@&9pAe�AE9s9tE��9uAE|�9w9�9x99yE9z9{��~E9|9}9~����9�9�E9�E@&9�EH:A9�9�9�9�9�9�A9�HG9����@&��9�9�9�Ae�2�A9����'9�9�9�9�A����A9�A��E9�9�9�9�9�9�9�9�9�9�EzAe9�9����Ae9��AeE9�9�E9�azEaz9�E9�9�AH:9�9��9�AeE�9�@Ae9�9�9�9�9�@&Ae9�9�EE�9�9�EAH:E9�9�9�9�AEE�9�F�Ae9�9�H:@&�A9�9�9�9�9�9�9�9�C�9��$AeAeE9�9�AeE�@&9�9�9�9�A9�N9�N9�9�N9�N9�N9�9�N9�9�NN9�x�N9�NN9�9�Nx�N9�Ae9�Ae��E9�E@�9�9�9�E9�9�A9�F�H:EzA9�9�E9��9�H:9�s�H:9�9�A�E9�E�'9�:�9�:U9�:+9�:9�9�9�9�9�9�H�EAe9��Ae9�9�H:�EA9�:9�9�HGA9�9��J9�
4��E:E�:::E:��F�AeE:::::	:
AH H�H:::�':
:��Y�:H�d:q�d::::A:�AeA:::
4�X
wR::):w:F�:F�::!: F��F�:":(:#��:$F�:%F�F�:&:'F�i@F�G�F�:*@�H�:,:?:-:4:.:2:/:0H H::1EH�H:E:3AeE:5:;:6:::7E:8:9�EH:�EA:<:=HGEE:>�Ae:@:K:A:E:B:D:CH EAeF�A:F:GAEE:H:I:J���E:L:O:M:N�E�AE:P:TE:Q:R:SH EAe��AH�:V:�:W:�:X:{:Y:\:Z:[�AH:Ez:]:_:^H�H��':`E:a:r:b:j:c�:d�:e��:f:g�:h��:i�e�:k�:l��:m:n�:o��:p:q�F���:s:t�:u��:v:w�:x�:y�:z��F�:|:�:}:��:~:�q�liH:�:�:���EE�A:�:�:�:�:�:�Ae:��EBa@&:�:�@&:�@&�H�Ae:�:�:�:�|:�Ez�:�Ez:��EEz:�:��:�:�Ae��BaH::�:�:��EAe�:�:�:�:�:�:�:�:�EBa��L:�:�F�EE�':�:�:�E�:��E:�:�:�|��EHG@&:�:�:�:�:�:�:�@:�����AeEA:�:�E�@&A:�:�:�:�A:�:��Ba�AH::�:�E�:���H:@:�;:�:�:�:�:�:�:�:�:�:���AeAH�:�:�H�A:�E:�:�Ae��E:�:�:�:�EHGH�F�:�:�:�E�:�Ae�E@&:�:�:�:�A:�:�A:�:�C��B�C�:�:�E�:�:�Ae:�AeEAe:���:�:�E:��H::�:�AH::��:��6�6�:�;:�:�:�:�:�AeE��:�:�@&H:F���:�;:�:�:�:�:�azazu�:�:��Ae�g��E;;A�~�~A;;;;;E;;E��;	az;
�A;;A;
AA;;A;AA;C�A;;H:;H ;HGBaH�A;;;;�;��;EAe�EE;E�F�; ;J;!;7;";/;#;);$;&;%�'F�EE;';(��Ba;*;+Ae@&��;,;-;.E��Ae;0;3;1;2F�EH H:;4;6Ae;5�AeAF�;8;@;9;>;:;<;;AE�'E;=EAe;?AEH�;A;E;B;D;CEE�E�;F;GE|��;H�;I�~H:;K;];L;T;M;P;NA�';O�E;Q;RE�'HG;S�E;U;Z;V;X;W�H��;Y��EEz;[;\@EAE;^;i;_;f;`;d;a;bF�Aeaz;cBaEA;e�gH ;gE;hAC�H ;j;m;k;lEAEH�;n;o�@&;pH:Ae;qF�Ae;s��;t��;u�,;v~�;wv�;xt�;y;�;z;�;{;�;|;�az;}az;~;az;�azaz;�az;�;�az;�az;�az;�az;�azaz;�;�azaz;�;�az;�az@azaz;�az;�az;�;�az;�azaz;�;�az;�az;�azaz;�az;�;�azaz;�az;�;�azaz;�az@;�az;�az;�az;�az;�azaz;�az;�az;�az;�;�azaz;�;�azaz;�;�azaz;�;�az;�azaz@;�azaz;�;�azaz;�az;�az;�az;�az;�az;�;�azaz;�az;�az;�az;�;�azaz;�;�az;�azaz@�;��;�;�q;�p�;�M{;�C�;�?;�>H;�;�;�w*w*;�;�w*w*;�;�w*;�w*w*;�;�w*;�w*w*;�w*az;�=E;�<�;�<0;�<;�;�;�;�;�;�;�;�;�;�;���w*��v�;�v��y;�;��yT;���T��;�;�;�;��;��JJ;�J�";�;��"�y;�w��yw�;�;�w�;�;�w��;��w�;�mw�;�w�;�w�m;�<m;�;�<;�<<L�mL���<����<<��<<�<�<<��<	<
<<w*��w*<
T4w*T4<<�i<up<up)<<)S�<��S���<<!<j<j<<<<Q�<Q����<j< �����j<"<#<+<$<&j<%j�<'<)<(�����V'<*V'�<,v�<-<.���</F���F�<1<[<2<R<3<@<4<8v�<5v�<6��<7����<9<=<:<;����<<SQ��SQw<>X<?XS	<A<H<B<D<CjS	j<E<Gj<FjTCTC�K<I<M<J<L<Kw��Kw�w���<N<P<O�L���L�<Q�RF<Sb�<Tb�<U<Y<V<WRF��<X�����M<Z�Mb�<\<z<]<l<^<cb�<_<`<ab���<b�"���"<d<h<e<f�"�<g���<i<k�;<j�;�����<m<u<n<s<o<q<pwF�wF��<r����<tw��ww<v<w<yw<xwV�V�wc<{kX<|kX<}<�<~<wc��<��	���	<�<�R�<�R���kX<�<�<�<�<�<�<�<�<�gC<�gC<�gC<�T%kXT%gC<�gC<�gC<�<��gC�<�<�<�<�<�<�<�<��"<��"F�F�<�<�<��&<��&�4<�<�<�<��4S4<�5S45<�<��<���B�B��<�<�<�<���<�<��Q���Q<�<��&<��&���<�w<�w<����<�<�<�<�w<�w<�w<�w�`<�<�<�<�<�<�<��4�`�4a�<�a�SC<�<�SC�<�u��u�<�<�<�v�u�<�u�v�<�<�v�<�v�v�v�<�v�"�<�u�<�u�<�u�<�u�"�u�<�<�<�<�<�<�<�<�u�<�u�<�<�Tzu�Tzp<�p<�V�<�V��<�<�<�v�<�v��v�<�<�<�<�v��1<���1�<�v��0<��0v�v�<�v�<�v�<�<�<�<���v����<���Z<�=<�=<�<�<�<�<�<��Z�o<��}�o�}<�v��<��v�==v�=v���===������=���j===	=
=
=�j~=�~�==��=����S�=====��S����[=�[�==��=���==1=='=="==!��= �������=#=%=$�?��?�=&�T=(=,=)=*T3
=+RT3
RT=-=/=.��=0��
=2=;=3=7=4=5�
�=6���=8=:D=9Dee�=<=A===?=>���J�=@J��=B=C��=Dw��w�=F=�=G=�=H=|=I=]=JgQ=K=T=L=O=Mv�w�=Nw�v�=P=R=Qv�J�=SJ���=U=Y=V=W��J�=X��J���=Z=\�=[���gQ=^=p=_=f=`=cgQ=agQ=bgQw�=d�w�=ew��=g=k=h=jW=iW����t�=l=n=m�t���
=o�
��=q=x=r=u��=s=t������=v�1��=w���1=ywU=z���1={�1��=}=�=~=�==�=�=�wU=�=�R�=�=�R��=�S��S�=�=��=���=����=�=��w8=���w8��=�{�=�=��?=��?=��?�=�{��{�=�t�=�=�=�=�=���=�S�{�S���=���=�����=�=�=�=���=�ububub=�ub=�ubt�=�=�=�=�=�=�t�=�=�=�=�=��
=��
����'=�=�=��-'�-8=�8�=�=�=�=�=�=��?U=�S�?US�=�=�F�=�F���J�=�=�=�=�=�bJ�bS=�S�+=�=��+-=��-�=�=�=�=�=�=�=�=��9=��9�H�HT=��w=��wT�w�w=�=�=��W=��W�e�e�s=�=�=�=�=�=�=����s���,=��,=�www=�w=�=��>w�>=�az=�az=�=�=�=�=�����=�������=�=�J���J�=�=��^=�S�=�S���=�az��azaz=�=�>!=�=�az=�az=�az=�az=�az=�az�=�>>>	>>>>���>��>>>���>
>
>wq>�����>>S�>S������>>>v�>>>�����>��v�>>v�>R7>R7J�>>J�>w�m> b��iv�>">8>#>(b�>$b�>%b�>&b�>'b���>)>3>*>,>+kXwkX>->0>.>/kXu�u�u�>1>2v�v�v���wU>4>5>7wU>6�ububt�>9>@t�>:t�>;><>>t�>=t��w>?���w��>A>D>Baz>Caz��azaz>Eaz>Faz>Gazw*>I>Z>Jw*>Kw*>Lw*>Mw*>Nw*>O>T>Paz>Qaz>Raz>Sazw*az>Uw*>V>WazkXkX>XkX>YkXazw*>[>\>�>]>�>^m>_>gm>`>a>dm>bm>cm��>eu�>fu���u�>h>z>i>nu�>ju�>k>l>mu�mmS�>o>s>pt�>q>rS�mmt�>t>w>u>vt�mm��>x>y��mm��>{m>|m>}>�>~>���s�s>�mm>�m>�>�>�>�>�m>�m>�m�m>�>�>�>�m>�>�>�m����S	>�>�>�>�S	������>�>�Wt�����>�>�>�>�>�>����e��m>�>�m�o�om>�>�m>�mS�>�>�S�mmt�>�m>�>�>�>�t�>�m>�m��>�>�>�>�������3
>�>�3
mm��>�>�>�>�>�>�����>�>���mm�>�m>�m�m>�>�>�>�>�>�>�>�>�kXw*>�w*>��"�>�b�>�b�>�b�kX>�kXb�>�gC>�>�>�>�>�v�b���>�gQv�gQ>�>�gQ>�w�gC>�>�gC>�gQgC��>�RFgC>�gCgC>�>�gC>�gC>�>�gC>�gC"�>�RF"�RF>�w*>�ub>�>�>�>�>�>���>���>���az>�>�>�>�az�"�"�>�wc�wc>�>�wc>�wc>�wc�4>�>�>����4��>�>������[>�?>�?>�>�>�w��[w�>�?w�{�{�ub?{�?{�ub{�{�?{�??ub{�ub?	A�?
@�??�??3?
?.?az?????w�?w�??�F��w�w�????�L���L???��L��b?az??%? ?#?!?"b�SC�4?$w��4�?&?)?'?(L���
�?*?,?+�w�w�?-w�azaz?/?0az?1az?2�az�?4?�?5?o?6?S?7?J?8?@?9?;�;?:���"?<?>�"?=�"TCTC??TC�?A?H?B?E?C?D������9?F?G�9SQSQ����?I��S�?K?N?LkX?MkX�BkX?O?Q?PT%?Rv��&5?T?k?U?b?V?[?W?Xv�X?Y?ZXS�S��?\?_?]?^��?`?a�ee��?c?i?d?g?e?f������w?h��w����?jJ���?l?m��?nw�?pw?q?�?r?}?s?w�?t?u?v�ww�?x?{?y?z�ww�?|���?~?�??�?�?����J�?�?�J�?U?U8?�w?�w8ww?�?�?�w?�wT?�w�,T4?�m?�?�?�?�?�m?�m?�m�m?�?�m?�m?���S	?�?�?�?�����m�o?�?�mu�u�m?�?�?�?�?�?�?�?�mS�mt�t�?�m��?�?�?�?���mR�m?�?�3
m���s?�m?�m?�?���m�?�@(?�?�?�?�?�?�?�?�?�?�?�j?�ju��?�w�?�w���w�?�w�?�w�?�w���?�?�?�?�?�?��L?���?���?�?��u�u���?�?�?�?���?���bb?�bF�?�?�?�?�F����?��&��&?�?�?�?�?��4�SC?�?��u�L��?���?����
��?�u�?�?�?�?���?���?��u�?�?�?�?��u�F�?�?��>u�u���?��?��u�?�@?�u�?�@?�?�?�?��y?�u��y?����yup?�@��?�?�@�������@@@@�u�u��@u��u�@@@	@u�@
u�@u��Z@
@�Z��K�}@@@@����V���@u���u�u�@u�@@@!@@u�@@u�u�u�@@u�@u�u�@ V�u�V�@"@%@#@$V�u�u�p��@&��@'��u�@)@�@*@b@+@C@,@<@-@4@.@1@/����@0����@2@3������j@5@9@6@7��T@8�T�@:v�@;v��v�v�@=@>@@v�@?�J�@A@B�
t��@D@R@E@K@F@G���@H��@I@J��t�t�����@L@M@O��@N��w8@P@Qw8����{�@S@\@T@W@Ut�@Vt�{�t�@X@Z@Y��t�����@[��t�@]@`@^��t�@_t���@at�����@c@@d@k@e@h@fwq@gwqt�wq@iv�wq@jS�v�@l@u@m@qv�@n@o@pv�J�J�-@r�w@s@t-�W�W�w@v@|@w@y@xv��wv�@z@{v�t�t�v�@}@~v���t�S�@�t�@�@�@�@�J���@�@�@�@���t�t���@�@���t�t���@�@�t�R7t�@�az@�az@�az@�@�@�v�@�v�Q�v�@�az@�@�v�@�v��4@�@��4az@�A@�@�@�az@�@�@�@�@�@�@�kXw*@�w*kX@�b�kX@�@�b�kX@�kXb�@�@�@�@�@�gQb�@�@�@�b���gQ@�@�@�@�@�gCgQgC@�@�gCw*gC�	@�gC@�gC�	gC@�gC@�@�gC@�gCw*gC@�w*gC@�@�w*gC@�@�@�@��1�"��@�@�@�@�@�@�@�@�@�kX@�@�@�w*��w*w*@�w*kXkX@�@�@�kX@�kX@�kX�&@�@�@�v��&v�v�@�v��@�@�@�@�@�@�@���@������gQ@�gQ�w@�w@���w@�gCw@�@�gCwgC@�kX@�kXgC@�@�@�@�S4���1�D@�A
@�u�@�A@�@�@�@�m����@�@�@�������kX@�A@�A@�@�kX���AkX�kXkXAkXAkX�ZAA	A�KA�K�Z��KwAAAAA
Au�Au�Au�kXu�AAu�u�kXAu�u�Au�Au�Au�u�AAu�v�v�Av�Av�Av�Av�kXA AgA!AQA"A5v�A#A$A)v�A%v�A&A'v�A(v�v�v�A*A/A+A-A,v�v�v�v�A.v�v�A0A2v�A1�jv�A3v�TA4Tv�A6AJA7A<v�A8v�A9A:A;v��J��A=ADA>A@A?�1����1AAABAC�1�s�s��AEwqAFAHAGt���t�t�AIt�wqwqAKALv�AMAOAN�wwqv�APv��wv�AR�"AS�"ATA^AUAYAVAW���"AXwc�wcAZA\A[b�wcb�b�A]��[A_AdA`Abw�AawUubAcububwUAeubAfub{�ubAhA�AijAjA�AkA�AlAxAmAq�"AnAoAp�"��)ArAuAsAt)TCTC��AvAw���}�}��AyA}Az��A{A|��SQSQ��A~A��j��jA�A�A�A�A�A����BT%����A�A�A�������TA�A�A�A�T��J�A�A�J���S�A�A�A�A�A�v�A�A�J���S�v�A�A�v�A�v�A�v�J�A�A�A�A�J���-A�A�-S�S�J�A�jA�jA�A�J�A�J�R7A�jR7jA�A�A�jw�A�A�jA�A�A��w�A�w���jjA�A�A�A�A�A�jA�jjjA�A�A�A�jF�J��A��������A�A�jA�jv��A�B�A�BLA�A�A�A�A�azA�azA�A�v�A�v�w�A�A�A�azw�azA�azA�azv�azA�v�azA�A�v�azv�A�A�A�A�A�azA�A�A�w�A�A�A�A�F��LA�A��L�����&A�w��&w�A�azA�azA�azw�A�w�azA�A�azA�azA�A�w�azA�azw�A�A�azA�azA�A�A�az��SA�w�A�A�A�A�S����A�w���w�A�BA�B
A�u�A�BA�B�yA��^�yBB�y��BB��upupJBB
BB	B��J�����^BB�^wcwc�"BBu�BBBBV�BBu��^�^V�BBp�^p�^pBB��Bp�^pBB4BB)BB$BB!��B ����B"B#��[��B%����B&B'B(���^�^��B*{�B+B.��B,��B-��w8B/B1B0{�w8{�B2B3{��^�^{�B5BEB6B@B7B=B8B:{�B9{��^B;B<�^�����^�^B>�^B?�^��BABC��BB���+BDv��+�WBF�^BG�^BHBI�^v�BJBKv������^BMBtBNBXBOv�BPv�BQv�BRv�BSBVBT���^BU�^��BWv�v���BYv�BZBhB[gCB\BbB]B`B^B_�kX�4v�Bav��4v�BcBeBdgCv��BfgCv�Bgv�gCBiv�BjBogCBkgCBlBmBngCv�v��1Bpv�Bqv�BrBs�1"�"�v�BuB�Bvb�BwB�BxB{BykXw*Bzw*kXB|b�B}b�kXB~kXBkXb�B�B�B�B�b�B�b�B�b���B�B�B�gQ�B�b�gQgQwB�b�B�b�B�b�gCb�B�B�B�azB�B�B�v�B�v�B�v�Q�v�v�B�B�B�B�B�B�B�v��4�4B�azazazB�azB�v�azazB�azB�B�B�v�B�v�azazB�azB�azB�azv�B�B�B�B�azB�B�azB�azB�B�B�v�B�v�B�v�Q�v�v�B�B�azB�B�B�B�v��4�4B�azazB�B�B�w�B�w�B�w�B�B�B�B�w�B�w�azB�B�B�B�azw�w�azazB�azw�B�w�B�w�B�w�azw�B�B�B�B�w�B�B�jB�jB��w�B�w��jB�jB�jB�jjB�w�B�B�B���jB�j�B�w�B�B���B����B�w�B�B�j����w�B�C�B�C_B�C&B�CB�CB�B�B�B�B�B���;�;�"B�B��"B��"<B��i<�iB�B�B�B�B�B��i))TCTCB�TC��B�CB�B����9�9SQC��SQ��CC	CC��Cv���CCa���a��C
C
CCS��B��kXCkXT%CCCv�Cv���v�CCCCC�0~�0CCCC�0~~�CC��C�C C#C!C"������?C$C%�?J�J��C'C?C(C1C)C.�C*�C+C,C-�����C/�C0��C2C9C3C6C4C5���S�C7C8�����C:C=C;C<������C>����C@CRCACHCBCDCCw��wCECFCGw��CICNCJCLCK�+�+�+CM�+TCOwCPCQT�,�,wCSCXCTwFCUwFCVCWwRTRTwFCYC[CZ�wFT4�C\C]C^�R7R7�C`v�CaCpCbjCcCkCdCh�"CeCfCg�"���CijCjj�jjCljCmCnCojv�v�jCqC�CrCzjCsCtCwCuCvj��F�CxCyF�v�v��C{C�C|CC}C~�55�C�X�XC�C�S�eJ��C�C�C�C�C�C�?U8v�C��F��>C�v��C��v�C�C�C�b�C�C�C�b�C�C�w*C��MkXC�b�kXb�C�C�C�C�C�C�C�v�b�C�b�v�C�C�C�C�v������C�gQ�gQC�C�C�wgQC�gQwwC�C�C�w����S�C�b�C�b�C�b�C�C�S�b�C�C�C�jw�C�C�jC�C�C�C�w�C�w���C���C�jC�j�jC�C�jC�jC�jC�jC�jC�jjC�C�C�C�jC�jC�jC�jF�C�C�C�C�C�C�F�����J�C��J��C�v�C�v��v�C�jv�C�C�jF��C�H�C�E�C�E_C�D{C�DC�C�C�b�C�b�C�C�C�b�C�b�C�C��M�"�"b�C�C�b�C�gQw�C�C�C�C�wUb�b�wUubC�ubb�C�wcC�DC�DC�C�C�C���C���C���wcC�C�wcC�wc�C�wc�wcC���wcC�DDwc�4�4��DDDDDDDD�����D	D
��[�[w�DDD
Dw�{�{�wcD{�wc{�{�D{�D{�D{�ubDwcDwcDwcDwcDDub�^�^wcDDPDD?DD2D �KD!D)��D"D#D&D$D%�������D'D(����KD*D.D+D,�KR�D-TzR�TzD/D1D0�Z�
�Z��KD3D:D4D7�KD5D6�K�
�K�KD8�KD9�K�D;���KD<D=���KD>���D@DFDAu�DBu�wDCDDu�DEu�wu�u�DGu�DHDIDMDJu�DKDLu�wwu�u�DNu�DOu�wDQDcDRD_DSDZDTu�u�DUDVDXu�DWu�wDYu�wu�u�D[D\u�u�D]D^u�u�u�D`v�u�DaDbv�u�v�v�DdDeDiv�Dfv�Dgv�Dhv�wDjDpwDkDlDn�
Dm�
wDov�wv�DqDuDrv�DsDtv�wwv�DvDxv�Dwv�wDyDzwv�v�wD|D�D}D�D~D�DD�D�D�D�D�D�D�D�v�wv�D�v�v�wD�v�D�D�v�wwv�v�D�D�v�v�D��jwD�D�v�D�D�D�v�D�v�D�v��D�D�D�D���
�
wD��w�D�D�D�D�D�D�D�w�wD�D�w����wD���D���w��D�D�D��1D��1���1D�D��1�s{�wD�wD�D�D�wqD�D�{�D�{�t�t�wqwqD�D�D�wqD�wqD�wqwD�D�D��ww�w�wD��wwD�D�D�D�D��KD�D���D�D�D�D�D��������D�D����wwD�D�D�D��Zw�Z��KD�D�D�D��KD�D��Kw�K�KD��KD��KwD�D��KD�D�w�KwD�D�D�D���wD���w����D���D���wD�D�D�u�D�u�wD�D�u�D�u�wu�u�D�u�D�D�D�D�u�D�D�u�wwu�u�D�u�D�u�wD�ED�ED�ED�D�D�u�u�D�D�D�u�D�u�wD�u�wu�u�D�Eu�u�EEu�u�u�Ev�u�EEv�u�v�v�EE	E
v�E
v�Ev�Ev�wEEwEEE�
E�
wEv�wv�EEEv�EEv�wwv�EEv�Ev�wEEwv�v�wE ENE!E0E"E,E#E(E$E&E%v�wv�E'v�v�wE)v�E*E+v�wwv�v�E-E.v�v�E/�jwE1E<v�E2E3E6v�E4v�E5v��E7E:E8E9��
�
wE;�w�E=EGE>EDE?EAE@w�wEBECw����wEE��EF��w��EHEKEI�1EJ�1���1ELEM�1�s{�wEOwEPEUEQwqERET{�ES{�t�t�wqwqEVEWEZwqEXwqEYwqwE[E]E\�ww�w�wE^�wwE`EwEaazEbazEcazEdazEeEsEfElEgEiEhaz�S	EjEk��azaz�oEmEpEnEov�az��R�EqEr3
az{���EtazEuazazEv�azExE�EyE�EzazE{E�E|E�E}v�E~v�EE�E��v�TQ��E�E�E�E�v�E�v��LE�E��L��E��TE�E�E�E�E�E�����SCE�E�SC����E�E�E�E�v�L�L��E�E��v�v��E�azE�azE�azE�azE�az�azazE�azE�E�azE�E�E��azE�azE�az��E�E�azE�az�azE�E�E�azE�E�E�E�E�v�E�v�E�E�v��Q��E�E�E�E�v�E�v��LE�E��L��E��v�E�E�E�E�E�E�v���SCE�E�SC��v�E�E�E�E�v�L�L��E�E��v�v��E�azE�azE�azE�azE�az�azazE�azE�E�azE�E�E��azE�azE�az��E�E�azE�az�azE�G�E�F�E�F�E�F_E�FE�FE�E�E�E�E�E��yE�E��yS��?E�E��y���E���upE�E�E��iE�E�upJJ�iE�E�E�E��i))��E�E����9�9�}E�FE�E�E���E�E��}������FF���?���?FFFF���V���F�����"F	Fu�F
FFFFu�F
u��?FV��?V�FFV�p�?pFFFpFp�?pFFFpp�?FFpv�v���FF7FF*F F#��F!F"�0�?�0F$F'F%��F&���0��F(F)���~�F+F1F,F.�F-��?F/F0����F2��F3F5��F4���?F6���?��F8FPF9FDF:F>��F;F<F=��w8w8�?F?FBF@FA�?S�S��?�?FC�?��FEFJFFFHFG�?���?�?FI�?��FKFNFLFM���?�?����FO���?FQFXFRFUFS���?FT�?��FVFW���S�v�FYF[FZJ��F\F]-�+F^�+�?F`�?FaF�FbFrFcFmFdFh�+FeFfFg�+�W�Wv�FiFkv�Fjv��?Flv��?v�FnFpwFow��Fq�^�?S�FsF{FtFx�^FuFvFw�^�?�?�^�^Fy�^Fz�^�?F|wFF}FF~�^�?�^F�F��^RTRTwFF��?F�F�F�F�wFF�wFJ�F�F�J�����F����?F�F�F�F�F�F��?�����?F���?��F��R7F�F�F�v�F�F�F�F�F�F�F�F��"F�F�F��"��v�F�F�F�F�v�))TCTCF�TC��F�F�F�F�F�F����}�}��F�F���SQSQ����F���v�F�F�F�F�F�F���v����BF�F�V���T%��F�F���F�F�F�������TF�F�T��J�F�F�F�F�F�F�F��J�F�F���S�J���F�v�F�v�S�v�F�F�F�F�F�F�v�F�v�J�F�F�J���-F�F�F�F�-S�S�J�J�F�J�R7F�v�F�v�F�v�R7v�F�v�F�F�F�F�F��KF��KF��K��KF��K�KF��KF�F��K{�v�F�F�F�F�F�F�F��K�Kv��KF��Kv�F�F�v�F���v�F���F���v���F�v�F�F�F�F���F���v�F�wv�wwF�F�v�wv�F�G8GG-GG&GG	Gv�Gv�Gv�GGv��
Gv��
v�G
GGGv�Gv�G
v�Gv�v�GGGGv�Gv��
Gv��
v�GGGGv�R�R�v�GGv�3
3
��GG$GG!G�1G �1���1G"G#�1{�v�{�G%wq{�wqG'v�G(v�G)v�wqG*wqG+G,v�wqv�G.azG/azG0G5v�G1G2w�G3G4v��w���G6azG7azw�azG9G\G:GVG;gCG<GDG=G@G>kXw*G?�kXkXGAkXGBkXGCkX�4GEGQGFGKGGGIGHv��4v�v�GJv�gQGLGNgQGMgQ�GOGP�wwgCGRgCgCGSGTGUgC�4�4azGWgCGXgCGYgCgCGZG[gC�1"�G]gCG^G|G_GuG`GhGaGdGbGc�;TC�S�GeGgGfS4gC�&GiGnGjGk5XGlGmXS�S�GoGrGpGqee��GsGt��gCgC��GvGyGw���Gx��J��Gz�G{�gCG}G�G~G��G�G�G�G��gCgC�G�G�G�G�G�G��gCgC�G����G�G�G�G����J�G�G�J�?U?U8G�G�G�wG�wG�w8wG�G�G�G�G�G�wgCgCwwG�wTG�gCG�G�TT4T4gCG�HSG�HG�G�G�G�G�G�G�G�G�G�G�G��;G���TCG�G�TC��9SQG�G�G�G�S��BkXT%G�G�w�&G�G�G�G�G�G�5XG�G�XS�S�G�G�G�G�ee��G�G���ww��G����G���J�G�G�G�G��G��G��w�G��G��G��wG�G�G�G�G�G�G�G�w��wG�G�w���G�G��G���G�G��J�J�?UG�wG�wG�G�?U88wG�wG�wwG�G�wG�wTT4G�gCG�G�G�gCG�G�G�G�G�kX�kXG�v��4G�G�G�gCv�gCG�gC�gCgCG�G�gCgCG�G�G�gCG�gC�1G�G��1"�"�gCHH HmHHHHHmHmHm�mmH	H
HHH��S	��H
m�oHHu�H�o�emS�HmHHHHHt�mt�HHm����mHHHH����mHm�mH!HMH"H4H#H'H$w�H%w�H&w�F��H(H+w�H)w�H*w���H,H/H-���LH.�L��H0H2��H1��bbH3b�&H5H?H6H:H7w�H8H9�&�4�4w�w�H;w�H<H=H>w����
H@HIHAHFHBHDHCaz�
azazHEw�azazHGazHHw�azHJazazHKHLazw�azHNw�azHOazHPHQazazHRaz�HTH�HUH�HVH�HWHgHXH`HYw�HZH^H[H]H\�w�T�F�H_w���w�HaHbHdw�Hcw����LHe�LHf�L�HhH{HiHqHjHoHkHmHl���Hn�����y��Hp��bHrHuHsHtb���&HvHyHwHx�&��SCHz�4SC�4H|H�H}w�H~w�HH��4��w�H�H�H�H�H�L�������
��H����H�H�H�azH�azH�H�H�H�H��jRFH��	�H�H�F��>H�az�DH�H�H�azH�azH�H�azH�az�H�azSazH�H�azH�azH�H������H��H��H��azH�azH�azH�azH�az�H��H�H�az���H�H�H�H�H�H�H�H�H�w�H�H�H�H�az��F�H�w���w�H�H�H�w�H�w����LH��LH��L�H�H�H�H�H�H�H�H�H����az����H���bH�H�H�H�b���&H�H�H�H��&��SCH��4SC�4H�H�H�w�H�w�H�H��4��w�H�H�H�H�azL���
��H����H�H�H�azH�azH�H�H�H�az�azH�azF��>azH�H�H�azH�azH�az��H��H��H��azH�azH�azH�azH�az�H��H�H�az�azH�KTH�J_H�I�H�IVH�ILH�I2IIII
IIII�;I���IkX�9S�kXIkXI	kXIIIv�I
I�&5v�v�Iv�IXIXS�II'II$IIIIIIS���II��eII!II e������I"I#��kXkX��I%���I&��J�I(I+�I)�I*kX��I,I-I/�I.�kXI0I1kX��kXI3kXI4ICI5wI6I=I7I:I8I9kX���I;I<����I>IAI?I@�?U?U8IBw8wIDIIIEIGIFwwkXwIHwTIJkXIKkX�,T4IMazINazIOazIPazv�IQIRITv�ISv�azazIUazv�IWI�IXwIYIiIZIcI[IaI\I_I]I^��;��<I`kXa�kXkXIbkXb�Idv�IeIfb���v�IgIhv�v�wIjIyIkIsIlIoImIn������IpIr�?Iqw���ItIvIuw��wwIwwIxwIzI�I{I~I|I}wwwIwI�w�,I�wI�wI�wF�,wFI�I�I�I��KI�I�I��KI�I��K�KI��K��KI��KI�I��K�
�I�I�I�I��KI�I�I�I�v��{�v���I�I�I���v�I�v�����I�I�I����o�ov�I�v�I�I�I�wI�wv�wI�v�I�v�wv�v�I�v�I�v�I�v�I�v�I�I�I�v��
�
v�I�JI�I�I�v�I�I�I�I�I�I�I�I�I�I�I�I��
v�v�v�v�I�v�v�I�v�I�v�v�v�I�I�I�I�I�I�v�v�v�v�I�I�v�v�v�v�v�I�v�I�v�v�I�v�I�I�I�I�I�v�v�v�v�I�v�v�I�v�v�I�v�v�I�I�I�I�v�I�I�I�I�I�v�v�v�v�v�I�v��
I�I�I�I�I�v��
v�I�I�v�R�R�v�I�I�I�I�v�3
3
��I��1���1I�v�I�I��1I��1{�I�{�v�{�I�JI�I��KI�I�I��KI�I��K�Kv��KI��KI�v��KI�JI�J�KI�v�I�v���JJJ��v�Jv�����JJJ���o�ov�J	v�J
J
JwJwv�wJv�Jv�wv�v�Jv�Jv�Jv�Jv�JJJv��
�
v�JJXJazJJ<JJ2JJ'JJ$JJ"J J!�
azazv�v�J#v�azJ%v�J&v�azv�J(J/J)J,J*J+v�azazv�J-J.v�azazv�v�J0v�J1v�azJ3v�J4J9J5J7J6v�azv�v�J8v�azJ:v�azJ;azv�J=JRJ>JEv�J?J@JCJAJBv�azazv�v�JDv��
JFJLJGJIJHaz�
azJJJKazR�R�azJMJPJNJOaz3
3
��JQ�1���1JSazJTJV�1JU�1{�JW{�az{�JYazJZazJ[azJ\azv�J]J^azv�azJ`KJaJzJbJiJcazJdazJeazJfazv�JgJhazv�azJjw�Jkw�JlJwJmJpJnwc�"Jo��JqJuJrJtJs�4��w�w��w�Jv{�ubJxw�Jyw�ubw�J{KJ|J�J}J�J~J�JJ�J�J��yJ��?�yJ�J��y���J���upJ�J�J�J�J�J�upJJ<J��i<�iJ�J��iJ��i)J��?)�?J�J�J�J�J�J��?J��?��J�J����?�?�J�J�J�J��V�V���J�J��������"J�J�J�J�J����"��J�J������?J�J�J�V��?V�V�pJ�J�J�J�J�pJ�J��?p�?pJ�J�pJ�p�?pJ�pv�J�J�J�J�J���v�v���J����?J�J��0J��0J��0��J�J�J�J���~~�J�J���?�?�J�J�J�J�J�J�J�J�J���J��������J����?J�{�J�J�w8�?{��?J�J�J�J�{�J�{�S��?J����?J�J��?J����?���?J�J�J�J�J�J���J���J����J�J��J���J��J�J�J��+J��+J�J��+J��+�WJ�v��Wv�J�J�J�J�J�J�J�J�v��?�?v�v�wwJ����?J�J�J��^S��^KK�^K�^�?KK�?�^�^�?K�?K�?KKK	KK
K�^K�^�?�^K
�^RTwFKwFKwFKwF��KKKK��K�?��K��?�K�?K�?�K��?KKBKK&KazK azK!azK"azmK#K$azmK%mazK'azK(K8K)K0K*v�K+K.K,K-az��Q�K/v��v�v�K1v�K2K3K6K4K5v����K7az�azK9azK:azK;azK<K?K=K>az��azK@KAazazazKCKDKNKEazKFKKKGw�v�KHv�KIv�KJv�w�KLazw�KMw�azKOazazKPKQazazKRazKSw�azKULdKVK�KWKnazKXKYKaKZjw�K[K\jK]K`K^�w�K_w���jKbKgjKcjKdKejjKfjjKhjKijKjKljKkj���Kmv��KoK�KpazKqK�KrK}KsKxKtKwKuKvw�<�ia��Mb�b�Kyb�KzK{K|b�����K~K�KK�K�wUK�wU��wUK�K�azK�azwUK�azwUazK�K�K�K�K�K�az�?�?{�K��{��K�K�K�K���-�-��K�K����^�^RTK�azK�azK�azK�azK�azRTazK�azK�K�w�K�K�K�K�K�K��w�K�w���K�jjjK�jK�j��K�K�K���K�����K�K���j��K���K���K����K�����K�LK�K�K�K�K�azK�azv�K�K�K�v�K�v�w�K�K��v�v�azazK�K�azK�azK�azK�azK�K�az��azK�K�K�K�K��KK�K���K�K�K�K�K�������R�K�K�R����K�K�K�v�K�K��TzTzv�K�K�v�K�v��Z�Z�K�K�K��K�KK�K��K�Kv�K�K�K�K�K��Kv��K�Kv�K���K�K�v���v�K�v���K�K�K�u�K�u�K�K�K�wK�K���v�v�wK�u�wK�wu�u�K�K�K�u�K�u�K�u�K�u�v�K�LK�u�K�u�v�u�u�Lu�Lu�v�LL2LLLLLL
Lu�u�L	L
u�LLu�azazu�Lu�u�Lu�Lu�Lu�u�Lv�Lv�u�Lu�Lu�v�v�LLLv�Lv�azLL'LL"LLaz�
L L!�
azazv�L#L%v�L$v�azL&v�azv�L(L,v�L)L*L+v�azazv�L-L0L.L/v�azazv�v�L1v�azL3LWL4LAL5L:L6v�L7L9v�L8t�v�v�t�L;L>v�L<v�L=v��jL?v�L@v�t�v�LBLNv�LCLDLJLELHLFLGv�����LI�t�LK�1LLLMt������1LOLTLPLR�1LQ�s{�LSt�{���LUwqLVwqt�wqLXazLYL_wqLZwqL[wqL\L]L^wqazaz�wL`azLaaz�wLbLcaz�wazLeM
LfL�LgL�LhL�LiL{Lj�KLkLs��LlLmLpLnLo������u�LqLru����LtLwLuu�Lvu��u�LxLzu�Lyu��Z�Z�L|L�L}�K�KL~L�K�Ku�L�L�L�L�L��Ku��K�Ku�L���L�L�u���u�L�u���L�L�L�u�L�u�L�L�L�wL�L���u�u�wL�u�wL�wu�u�L�L�L�u�L�u�L�u�L�u�u�L�L�L�u�L�u�u�u�u�L�u�L�u�u�L�L�L�L�L�L�L�u�u�L�L�u�L�L�u�u�u�u�L�u�u�L�u�L�u�L�u�u�L�v�L�v�u�L�u�L�u�v�v�L�L�L�v�L�v�u�L�L�L�L�L�L�u��
L�L��
u�u�v�L�L�v�L�v�u�L�v�u�v�L�L�v�L�L�L�v�u�u�v�L�L�L�L�v�u�u�v�v�L�v�u�L�ML�L�L�L�L�L�L�v�L�L�v�L�t�v�v�t�L�L�v�L�v�L�v��jL�v�L�v�t�v�L�L�v�L�L�L�L�L�L�L�v�����L��t�L��1L�L�t������1L�L�L�L��1L��s{�L�t�{���L�wqL�wqt�wqL�t�L�L�wqL�wqL�wqL�L�L�wqt�t��wL�t�Mt��wMMt��wt�MazMazMazv�MMMv�M	M
v��yv�Mazw�azMM8MMMazMazMazv�Mv�MMazw�azMazMM%MMMmMmMm�mmMMM"M M!��S	����M#M$m�ou��oM&M4M'M-M(M+M)M*�oS���t�t�M,W��M.M1M/M0��R�t���M2M3����azM5azM6azM7az�azM9MpM:MiM;MJM<MCM=w�M>MAM?M@w���F�MBw���w�MDMEMGw�MFw����LMH�LMI�L�MKM]MLMSMMMQMNMPMO���w�����MR��bMTMWMUMVb���&MXM[MYMZ�&��SCM\�4SC�4M^McM_w�M`w�MaMb�4��w�MdMfw�MeL��MgMh�
���w�MjazMkazMlazMmazMnMo�az�>MqazMrMwazMsMt�Mu�azMvaz�MxazMyazMzaz�azM|W�M}VqM~P�MN�M�NaM�M���M�M�w�M�w�M�M�M�b�M�M�M�M�w�����M����MM�M��MM��M�"�"M��"b�M�M�M�wUM�wUM�M�b���wUM�M�M�M��-M��-{�M�M�{��-�-ubM�M�ubM�ub�^M��-�^�-M�NM�M�M�M�M�M�M�M�M�M�M�M����M�M���w�w�JM��iM�M�J<<�iM�M�M�M�M�a��ia�M�M�a����MM�M��MM��M��M�M����"�"b�M�M�M�M�b�M�M���b���M�pM�M�����ppM�pM�M�M�pw�w�pM�M�M�M�M�M�pM�M�v�pv�M�v�M�v�v�v�M�M�v�M�v�M�v�azM��0M��0az�0M�M�M�M�M�M�~���?wUazM�M�M�M�az�?�azM�M�az��az��M�M�M�M�M�M�M�M�M����w�M��-��M�M�M��+�+M�w�+w�^M�M�M��^M��^M��^RTM�wFM�wFRTwFM�w�Nw�wFw�NNBNN$NNNNNNNN	��N��w�N
Nw�JJ�i�iN
N���i��NN��w�NN��M�wcNN NNNNwc�"�V�NNNNV�ppw�NNw�ppw�N!pN"pN#pw�pN%N8N&N0N'N+N(pN)N*pv�v�pN,N.N-v�pv�N/��v���N1N6N2N4��N3����N5�0���0�0N7��~N9N=N:wUN;N<��[�wUN>N@wUN?wU�?NA{�{�wUNCN[NDNJ{�NENFNINGNHaz��-�+�+wNKNSNLNNNM�^w�^NONQ�^NP�^azNR�^az�^NTNX�^NUNVNW�^azaz�^�^NYNZwF�^wFN\azN]azwFN^N_azN`azwFazNbN�NcN�NdNuNeazNfNjNgv�Nhv�Niv�Q�v�NkNov�Nlv�Nmv�Nnv��4NpazNqNs�4Nr�4NtazazNvv�NwN�NxN�NyN}Nzv�N{N|v�azazv�N~N�Nazv�azN�v�azv�N�azv�N�v�N�v�azN�v�N�v�N�v�N�v�azv�N�azN�azN�N�N�v�N�v�N�azv�azv�N�N�azN�N�N�N�v��4�4N�azazN�N�N�wN�wN�wN�wN�wN�wazwN�wN�N�N�N�N�N�N�kXN�kXw�a�kXN�N�b�kXb�N�v�b�N�N�v�b�v�N�wN�N�N�N�N�N�������N�w�-��N�wwN�w�,N�O@azN�azN�N�ON�N�N�N�N�N�N�N�N�N�N�N�az�"u��;N�N�jmazv�N�N�N�v�u��"v�N�v��0N�N�N�v�N�N�az�����;N�u�v�N�v�w�u�N�N�u�u�N�N�v�u�jN�N�N�N�N�N�u�N�N�b�u�v�b�azN�N�N�N�N�N�az�az�;N�v�az��N�N�N�N�v��1��mN�N�azj�jazN�N�N�N�N�N�N�azkXazN�N�azjv�jN�N�azgCN�N�gCazwFazN�OOu�azOaz�OOu�Ou�jw�Oazu�OO'O	OO
OOOu�Ou�O
jw�w�OOw�w���OOw�O�O�jOOOb��b�Oazb�azOO$OO#OO OOw�wqazO!O"azu�azubt�azazO%O&gCb�gCO(O3O)O-gCO*O+O,gCjjgQO.O1O/gQb�O0b�gQgQO2gQazO4O=O5O8O6azazO7azb�O9O;O:az��u�azO<b�gCO>azO?azjazOAPOOBO�OCOvODO\OEOPOFOLOGazOHOIazjOJOKv�w�gQazOMazazONkXOOkXazOQOXOROTazOSgQazOUazOVOWazv�v�azazOYOZkXazO[azkXO]OmO^OeO_ObkXO`OagQkXgQOcazOdazgQ�OfOjOgOiOhv�wU�wv�azazOkv�Olv�azOnOrazOoazOpazOq��azazOsazOtazOuazv�OwO�OxO�OyO�OzO}O{azO|azaz��O~v�azOazv�O�O�O�kXO�kXv�azO�v�azv�O�O�O�O�O�O�v�O�v�azazO�ubgQO�O�O���gQ��O�O�azkXv�t�O�O�O�O�O�kX�wjkXgCjO�O�b�jb�O�O�O�O�O�O�O�b�O�b�azb�O�O�b�O�b�azO�azaz�wO�O�O�O�O�jazjjO�j�O�O�O�O�az����azjO�j��O�O�O�O�u�O�u�O�u��O�O�u�O�u�jjb�O�O�w�O�O�jw�jjO�O�u�ju�O�PO�O�O�O�O�O�O�O�O�t�O�azazu�O�O�t���ubjO�wO�O�t�O�u�����O���wO�O�O�O�O�O�wO�wmmO�jv�O�O��wO�����O�O����0gQ�O�O�O�w�O�O�v��jwcwcO�O�O�wcazjb�O�O�O�O�O�O�O�azb�azO�O�O�O�az������O�b�u�b�O�O�O�gCO�O�b��"�"O�O�gCw�O�w��;w�O�PO�PPPPazw�azazgCgCPgCPgC��PP
Pb�P	gQv�gQPP
Pv�pv�v�Pv�w�PP.PPPPt�Pv�Pv�Pv�w*P{�PPwPgCw�PPw�jaz{�PP(PP"kXP P!gQkXb�P#P&P$P%gQb��kXkXP'j��P)P+P*v�gCazP,azv�P-v�azP/P@P0P9P1P5P2P3b�jP4azjazP6P8P7azazw�azu�u�P:P;P=P<t��wqP>P?wqazwqt�PAPDPBv�PCv�v�v�PEPJPFPHazPGazjPIazpazPKPMazPLazRTgCPN��wUPPPuPQazPRPePSazPTP_PUP[PVPXPWwUazwUPYPZwUu�J���gCP\P]P^gCv��1jP`azPaPcPbu�jJ�Pdazu�azPfazPgPnPhazPiPkazPjazpPlPmgCv�v��"PoPrazPpazPqa�azPsazPtazazwPvP�PwP�PxP}azPyazPzazP{�?P|�?wP~azPazP�P�P��?w�?�?P��?azP�azP�P�azP�P�P�azP�azv�gCP�gCazP�azP�azkXazP�azP�azP�azP�azP�azP�P�wu�u�azP�StP�Q�P�P�P�P�P�P�P�P�P�jP�P�P�P�P�jP�jazw�P�azjazP�jP�P�P�w�azw�P�P�w���jP�P�P�P�P�P�P���P���j��P�jP�������P�P�jP�P�azjazazP�azjP�P�P�P�jP�jP�jazP�w�P�w�az�&P�azP�azP�azw�azazP�P�azP�azP�azP�azazw�P�P�P�azP�P�azP�azP�azv�P�P�P�P�v�P�v�P����
w�P�P�P�w��4�SCP�azP�azP�P��F��azP�azazP�P�P�P�v�azP�azP�azv�P�azP�azP�azv�azP�QUP�QP�QP�P�P�azP�P�P�gCP�P�gCazazgCP�azgCazP�QazP�P�P�P�P�S�?UT4P�����QQQw�wwQwv�QQQgCQQQ	v�v�Q
v��QgCv�Q
v�gCgCQgCQgCQQv�gCv�QQ4QQ)QQ QQQv�v�Q�v�QQv�Q�"QQJ�S�J���Q!Q&Q"Q$��Q#T��Q%u�J�mQ'mu�Q(u�mmQ*Q+Q.mQ,Q-t�mt�Q/Q2Q0Q1��������Q3�;�,Q5QGQ6Q=Q7Q:Q8gCQ9gC�,wgCQ;Q<v�gCv�Q>QDQ?QAQ@v��v�QBQCv��0v�ppQEQF��p��QHQQQIQMQJQK���QL�i���QNQPQOgC�igCgCwwQRwQSwQTw~QVQ�QWQjQXQbQYu�QZQ`Q[Q]Q\Jw�pQ^Q_J�"��Qau��u�QcQgQdu�u�Qeu�Qfw�u�u�QhQi��u���QkQQlQwQmQsQnQpQov���w8QqQruppp��QtQv��Qu�������QxQ|QyQz��u�Q{u���u�u�Q}u�Q~��u�Q�kXQ�Q�u�Q�Q�u�u���Q�Q��Q����Q�������Q�Q�Q�Q�Q�Q�kXQ�Q�v�kXQ�wv�v�Q�Q�Q�v�Q�v�wwQ��b�Q�b�b�Q�b�Q�Q�Q�b�w�w�b�Q�Q�Q�Q�b�Q�b�Q�b�w�Q�gQQ�w*w�Q�w�w*Q�Q�gQQ�Q�w�gQQ�gQw�Q�Q�gQQ�gQb�b�Q�b�Q�b�a�Q�R{Q�R	Q�Q�Q�Q�Q�Q�Q�Q�Q�Q�Q�w�Q�b�w�b�w��MQ�Q�Q�Q��MQ��M��Q��-b�Q��"b��"Q�Q�wUQ�wUQ�Q�w�wUw�Q�Q�Q�ubw�ubQ�Q�ubQ���^�^Q��^�[Q�Q�Q�Q�Q�{�Q�{�Q�{��[��Q�Q�w�Q�w�Q�{��Q�{�Q�wc��Q�t�Q�t�Q�t�{�Q��wt�Q�Q�Q�Q�t�Q�t�Q�t�Q�Q�v�t�v�Q�Q�Q��wv�Q�Q�wqv�wqQ�Q��wQ�Q�Q��w�����Q�Q��Q��w�Z�ZQ��jwqQ�RQ�wQ�Q�Q��1wqQ���1�1Q�Rw�KwRRwRR��w��Rv���R��R��v�R
RARR*RRR
RRv�RRRv�gCv�Rv�v��RRv�Rv�Rv�gCRv�gCRgCv�RR!RRRgCv�Rv�gCgCR gCv�R"R%v�R#v�R$v�{�R&R(�
R'{�u�R)w�b�wcR+R7R,R2R-R0R.jazR/v�jR1gCjgCR3R4gCjR5gCR6gCjgCR8R<R9azR:R;azjjazazR=R>gCR?R@az�azgCRBRdRCRURDRNRERKRFRHgCRGgCv�RIRJv�u��pRLu�RMu�p�iRORRu�RPu�RQw8pRS��RT�wu��[RVRZRWazRXazRYaz���
R[R^R\R]azwgCkXR_RbR`Ra��azaz�Rcw�kXb�ReRtRfRpRgRjRhwRiwwcwRkRmwRlwazRnRov�azv�jRqazRrazRsjjazazRuazRvRwRyazRxazv�RzkXu�mR|SR}R�R~R�RR�R�R�R�R�R�R�R�kXazkXR�azkX��R�kXu�R�u�kXR�R�R�gQR�gQkXgQgQR�gQb�R�R�R�R�R�R�R�R�b�a�w�azR�wUaz�ubR�R�R�wct�t��1R�R�R�wR�w�1wR�R�R�azwv�R�R�azv�v�azR�R�R�R�R�azR�R�R�v�azv�R�R��u�azjR�R�R�R�azR�wazu�b�R�v�R�azt�mR�R�R�R�R�jv�jR�R�R�R�jazazwR�R�wv�v�jR�R�R�R�R�R�jazJ�t�R�R�pupazgQR�azgQazR�R�R�R�R�R�R�R�azR�R�R�azwwv�azR�kXazR�R�R�azazR�azw�azR�azR�azwR�R�R�R�R�R�R�gCv�gCgCR�gCmR�R�wR�wu�R�R�u�kXazgQR�R�R�R�wR�v�jwR�w�R�R�R�R�jgC�azR�azazv�R�S
R�SR�R�R�R�azR�az��R�R�jazazJR�SSSJv�v�azazSazkXSSSb�kXSu�b�b�S	b�azSSSSazS
Sazazu�SSazSazwSS�i�&az�SSSwUazwUSazSazwazSSHSS9SS)SS"S b�S!b�azb�S#S&b�S$b�S%b�azS'azazS(��v�S*S0S+S-azS,v�kXS.t�azS/j�wS1S3t�S2t�azS4S7S5S6az�w��gCS8t�gCazS:S?S;azS<azt�S=t�S>t�azS@SDSAazSBazazSCkXazazSESFt�azSGazt�SIS\SJSTSKSOSLazt�SMSNazt�azazSPSQSSSR��az����azSUSZazSVazSWSXSYu�jv�azS[kXazkXS]SjS^azS_SdS`SbSaazjazazScazkXSeShSfSgkXt�t�gQSiazgQazSkSoazSlSmSnazwu�azazSpSqSsazSru�azgCazSuTSvS�SwS�SxS�SyS�SzjS{S�S|SS}jS~jazw�S�w�jw�S�jw�S�S�S�w���jS�S�S�jS�S�S���S���j��S�jS�������S�S�S�S�jS�jS�jazS�w�S�w�az�&S�azS�azS�azw�azazS�S�azS�azS�azS�azazw�S�S�S�azS�S�azS�azS�azv�S�S�S�S�v�S�v�S����
w�S�S�S�w��4�SCS�azS�azS�S��F��azS�azazS�S�S�S�v�azS�azS�azv�S�S�S�azS�azv�azazS�azS�mazS�T+S�S�S�S�azS�S�S�azS�S�S�S�S�S�?UT4S�����S�S�S�w�wwS�wv�S�S�S�S�S�S�S�v�v�S�v��S�gCv�S�v�gCS�gCgCS�S�gCazgCgCS�S�S�gCS�gCS�jgCgCS�S�v�gCv�S�T
S�S�S�S�S�S�S�v�v�S��v�S�S�v�S��"S�S�J�S�J���S�S�S�S���S�T��S�u�J�mS�mu�S�u�mmTTTmTTt�mt�TTTT��������T	�;�,TTTTT
TTkXTkX�,wkXTTv��jv�TTTTTv��v�TTv��0v�ppTT��p��TT'TT#T T!���T"�i���T$T&T%�?�i�?�?wwT(wT)wT*w~T,T_T-T@T.T8T/u�T0T6T1T3T2Jw�pT4T5J�"��T7u��u�T9T=T:u�u�T;u�T<azu�u�T>T?��u���TATUTBTMTCTITDTFTEv���w8TGTHuppp��TJTL��TK�������TNTRTOTP��u�TQu���u�u�TSu�TT��u�TVkXTWTZu�TXTYu�u���T[T]�T\���T^������T`TrTaTlTbTfkXTcTdv�kXTewv�v�TgThTjv�Tiv�wwTk�b�Tmb�b�Tnb�ToTpTqb�kXazb�TsTxb�TtTugQTvw*b�Twazw*gQTyTzT|gQT{gQb�b�T}b�T~b�a�T�ULT�T�T�T�T�T�T�T�T�T�T�T�T�w�T�b�w�b�w��MT�T�T�T��MT��M��T��-b�T��"b��"T�T�wUT�wUT�T�w�wUw�T�T�T�ubw�ubT�T�ubT���^�^T��^�[T�T�T�T�T�{�T�{�T�{��[��T�T�T�T�azT�jv�T�T�jaz{��T�{�T�wc��T�t�T�t�T�t�{�T��wt�T�T�T�T�t�T�t�T�t�T�T�v�t�v�T�T�T��wv�T�T�wqv�wqT�T��wT�T�T��w�����T�T��T��w�Z�ZT��jwqT�T�T�wT�T�T��1wqT���1�1T�T�w�KwT�T�wT�T���w��T�v���T���T���v�T�U
T�T�T�T�T�v�T�v�T�T�T�v�w�v�T�v�v��v�T�T�T�v�T�v�T�v�{�T�T��
T�{�u�T�w�b�wcT�T�T�T�T�T�T�jazT�v�jT�T�jT�azgCgCT�azwFT�T�azjT�u�T�u�j�UUUazUUUju�jjazazUUgCUU	az�azgCUU-UUU
UUUUUgCUgCv�UUv�u��pUu�Uu�p�iUUu�Uu�Uw8pU��U�wu��[UU#U azU!azU"az���
U$U'U%U&azwgCkXU(U+U)U*���?�?�U,w�kXb�U.U<U/U8U0U3U1wU2wwcwU4U6wU5wv�v�U7v�jU9azU:azU;jjw�U=UCazU>U?UAazU@azw�UBazw�azUDUGazUEazUFu�azUHUJazUIazv�UKkXu�mUMU�UNU�UOUrUPU^UQUXURUUkXUSUT�?kX��UVkXu�UWu�kXUYU\UZgQU[gQkXgQgQU]gQb�U_UiU`UeUaUcUbw�b�a�UdwUw��ubUfUgUhwct�t��1UjUmUkwUlw�1wUnUpUov�wv�Uqv�u�v�UsU�UtU|UuUxv�UvUwj�u�azUyUzU{azu�u�azU}U�U~U�azUwgCu�b�U�v�U�azt�mU�U�U�U�U�jv�jU�U�U�U�jazazwU�U�wv�v�jU�U�U�U�U�U�jazJ�t�U�gQpupU�azgQazU�U�U�U�U�U�U�U�azU�U�U�azwwv�azU�kXazU�U�U�azazU�azw�U�U�U�azu�azazU�azwU�U�U�U�U�U�U�gCv�gCgCU�gCmU�U�wU�wu�U�gQu�kXU�U�U�U�wU�v�jwU�w�U�U�U�U�jgC�v�U�azu�v�U�U�U�U�U�U�U�U�azU�az��U�U�jazazJU�U�U�U�Jv�v�azazU�azkXU�U�U�b�kXU�u�b�b�U�b�azU�U�U�U�azU�U�azazu�U�U�azU�azwU�U��i�&az�U�U�U�wUU�wUu�jU�azU�azwazU�V,U�V
U�U�U�U�U�b�U�b�azb�U�U�b�U�b�U�b�azU�w�azU���v�U�VU�U�U�U�w�U���w�v�kXU�t�w�Vj�wVVt�Vt�w�VVVVw��w��gCV	t�gC�VVVVV
Vt�Vt�Vt��VazVaz�jVVazVazV�b�VVb�Vb�azazVw�VV(VV%VV"V V!wqazkXazV#V$u�azubt�V&azt�V't�azazV)V*t�azV+azt�V-VIV.V>V/V9V0V3t�V1V2azt�azV4V7V5V6azb�b�gCV8azgCazazV:V;V=V<��az����gCV?VGV@VCVAazVBazgCazazVDVEVFu�jv�gCVHkXgCkXVJV`VKVWVLVQVMVOVNgCjgCgCVPgCkXVRVUVSVTkXt�t�gQVVjgQjVXV]VYV\VZV[jgQgQb�b�gQgQV^gQV_gQw�VaVhVbVeVcazVdazgQazVfVgazwu�azViVlVjazazVkazb�VmVpVnVo��u�u�azgCazVrw�Vsw�VtW�VuWzVvW
VwV�VxV�VyV�VzazV{V�V|V~V}jw�azVV�v�w�gQazV�V�azV�azb�V�V�gCjjazV�V�azV�V�kXV�V�azv�v�kXV�V�V�V�kXV�kXazV�kXazkXV�V�kXV�wU�wv�v�V�V�V�V�V�V�azV�azV�az��V�azV�azaz�V�V�azV�azV�azubV�V�azV�azgQV���gQ��V�V�V�V�V�V�V�V�azkXv�t�V�gC�wjjV�V�V�jazaz�wV�V�V�jazV�azjV�V�V�V�jaz�azV�V�����v�azV�V�V�V�V�V�V�V�V�azV�j��azV�V�azv�V�u�j��V�V�V�V�V�u�azu�u�V��azV�u�V�u�azu�V�V�V�V�V�t�azt�V�V���ubjt�V�V�V�V�V���u���V�w��wwV�b�V�b�azV�V�V�V�V�V�b�V�b�wV�V�wV�wmmV�jv�V�V�V�V��wV�����V�V����0gQ�V�wcV�V�v��jwcV�WV�V�V�azV�b�wcb�V�WazWaz��WW��b�b���WWWWWb�u�b�W	W
b��"�"WgCgCjWWXWW2WW!WWWWWgCWgCw�gCWWgCW��v�gQWgQb�WWWv�b�Wb�pWt�v�W w�t�W"W'W#W&W${�t�W%t�{�{�kXW(W.W)W+W*gQkXb�W,W-gQb��kXW/W1kXW0jazazv�W3WEW4W<W5W8v�W6W7azv�azW9W:azb�jW;jazW=W@W>azazW?azw�WAWDWBWCu�w�w��;w�u�WFWQWGWJu�WHu�WIu��WKWNWLWMwqt�t�wqWOWPazwqt�v�WRWUWSv�WTv�v�v�v�WVv�WWv�azWYw�WZWpW[WeW\W_W]azazW^jpW`WbazWaRTgCWcWdgCv�w*wWfWlWgWiWhw�wgCWjWkjaz��wUwUWmWnWou�J���gCWqw�WrWugCWsWtjv��1WvWxWwu�J�u�w�Wy��gCW{W�W|w�w�W}W~w�WW�W�W�W�W�w�W�pgCW�W�v�v��"azW�w�W�w�azw�W�W�w�W�W�azw�a�W�w�W�azwazW�W�W�W�W�w�w�W�w�W�w�W�w�wW�W�W�W�w�W�W�W�W�W�w�azv�w�w�W�w�kXW�w�W�w�W�w�kXw�w�W�w�W�w�W�w�W�w�wW�w�W�w�W�w�W�w�W�w�u�w�W�v�W�v�W�v�W�W�W�W�W�W�W�W�W�W�W�W�v��"u��;W�W�jmazv�W�W�W�v�u��"v�W�v��0W�W�W�v�W�W�az�����;W�u�v�W�v�w�u�W�W�u�u�W�W�v�u�jW�v�W�W�W�W�u�W�W�b�u�v�b�azW�W�W�W�W�W�az�az�;W�v�az��W�v�W�W�v��1��v�W�dFW�^W�[W�YxW�X�W�XMW�XW�XW�W�W�W�W�W�W�W�W��
az�
�
W��
w�w�W�W��Kw��KW�W��KW�W�v��Kv�v�w*W�W�w*W�W�azw*W�w*azW�gCXgCazXazgCXXXX	XXgCazazXXwazwX
X
wXwXwjjXj�^XXXX�^XX�L�^�L�LDXXXazDazXu�azu�XX3XX)XX#XX X�Ku��KX!gCX"gC�KgCX$X&gCX%gCazazX'azX(azkXX*X,kXX+kX��X-X0X.v���X/��v�X1u�v�X2v�u�X4XAX5X:X6X9u�X7X8�Ku��K�KazX;X>X<��azX=az��X?v���X@��v�XBXGXCXDv�azazXEXFb�azb�XHXIb�azazXJXKXLazjjazXNX�XOXeXPXWXQXVXRu�XSXUXTju�jju�v�azXXX_XYX\XZ�KX[�Kaz�KjX]jX^jazX`XbazXaaz�0Xcv��0Xd�0v�XfXtXgXmXhXkXijv�Xjv�jXlv�jv�XnXpXojv�jXqXsXr�j��b�XuX|XvXyb�XwXx�Kb��K�KXzX{az�KazX}X~azb�Xt�b�X�b�t�X�X�X�X�X�X�X�X�X�X�X��?t��?�?ppX�X�v�pv�X�X�v�X�X�Tv�TX�{�TX�T{�X�X�X�X�X�X�{�X�{�����u�u�X�u�{�X�X�{�X�{�wUX�w�wUX�wUw�X�X�X�X�X�X�X�X�w�X�w�jX�azjazazX�azw�X�X�w�X�w�J�X�ubJ�X�J�ubX�X�X�X�X�v��X��v�X�jv�X�v�jX�X�X�azX�azjazX�X�az����X���azX�YX�X�X�X�X�X�X�X�X�X�X�azX�X�az����azazX�azu�X�gCu�X�u�gCX�X�X�X�gC������X�X���X�����jX�X�X�X�X�X�X�X�jX�j����v�v�X�v�kXkXv�X�X�X�X�v�X�v�X�v��1�1X��1X��1v�v�v�X�YX�X�X�X�kXX�X�X�kX����X�X���X�X�v���v�v�X�X�b�v�b�X�X�X�azb�X�b�X�b�azX�YYwazwwYwazYYYYYY	azYazYaz����Y
Yv���v�Y
Yv�YY�v��YV��Y�V�YYYYYv�V�v�TzYYjTzjYYju�u�Yw�Yw�azY YMY!Y6Y"Y1Y#Y+Y$Y(Y%w�Y&Y'azw�w�w�Y)azY*azw�azY,Y.Y-�Kaz�KY/v�Y0v��Kv�Y2u�gCY3gCY4Y5u�gCu�Y7YCY8Y>Y9Y<u�Y:u�Y;u���Y=p��pY?YAY@azpazazYBazwYDYHwYEYFazwYGwazYIYKYJS�azS�w�YLw�w*YNY^YOYVYPYSw*YQw*YRw*�YTYU�u�u�v�YWYZYXYYv�azazjY[azY\azjY]jazY_YlY`YfYaYcYb�Kaz�KYd��Ye���K��b�YgYhYjYiw�b�w�w�Ykw�azYmYtYnYqazYoazYpazwqwqYrwqYswq�Yuaz�Yv�Yw�azYyZEYzY�Y{Y�Y|Y�Y}Y�Y~Y�Yv�Y�v�azv�Y�Y�Y�wv�wwazY�Y�Y�Y�azY�Y�w�azw�w�Y�Y��yw��yY�Y��ykXkXY�Y�azkXazY�Y�Y�Y�Y�Y�azY�azwFY�azwFY�wFazY�Y�Y��az�Y�b��b�Y�Y�Y�Y�Y�jY�jb�j{�Y�{�Y�{�w�w�azY�Y�Y�Y�Y�Y�azY�Y���Y���az��Y�Y�Y��"��Y����"azY�azY�azL�Y�Y�Y�Y�L�Y�L�wcwcY�Y�azwcazY�Y�azY�Y�S�azS�Y���Y���S���Y�Y�Y�Y�Y�Y���Y���Y�azmmjY�Y�Y�azjY�jazY�{�az{�Y�Y�Y�Y�Y�w�{�w�v�Y�v��Y�Y��Y�Y�az�azazY�azY�v�azY�ZY�Y�Y�Y�Y�Y�Y�b�Y�Y�Y�v�b�v�v�Y�v�b�Y�gCY�gCb�Y�b�gCY�Y�gCY�gCY�Y��gC�Y�Y�Y��L��LY�Y�Y���L��wY�ZY�Y�Y�Y�wazazY�azY�azu�ZZu�Zu�Zu��4�4ZZ�K�4�KZZ
ZZ�KZ	Z
��K�Z�����ZZ���Zaz�azZZ'ZZZZZZazu�u�v�ZZv�����wZZ!ZZwZwazazZazZ azjZ"Z$jZ#j��Z%Z&w�wZ(Z5Z)Z1Z*Z-Z+azwZ,wazZ.Z/az--Z0-��Z2Z4��Z3����azZ6Z=Z7Z:Z8w�azZ9azw�Z;v�w�Z<w�v�Z>ZAZ?�
v�Z@v��
ZBZC�
jjZDjazZFZ�ZGZZHZeZIZYZJZRZKZOZL��ZMZNkXjj��ZPu���ZQ��u�ZSZVZTwu�ZUu�wZWazZXazwazZZZaZ[Z^Z\�^Z]�^az�^azZ_azZ`azv�Zbazv�Zcv�Zdv�azZfZtZgZnZhZkv�Ziv�Zjv�v�v�Zlv�Zmv�kXZoZrkXZpZqazkXazazZsazw�ZuZ{ZvZxw�Zww�jjZyZzazjazZ|Z}az�Z~az�azZ�Z�Z�Z�Z�Z�Z�Z�Z���azZ�az��Z�j��Z���jZ�Z�Z�v�jv�Z�Z�v���Z��b�Z�Z�b�Z�Z��Kb�Z�b��KZ�Z�Z��+�K�+Z�u�Z�u��+u�Z�Z�Z�Z�Z�kXZ�jZ�ju�jZ�Z�Z�azkXazazZ�Z�jazjZ�Z�Z�Z�ju�u�v�Z�Z�Z�{�v�{�Z�Z�Z�az{�azazZ�azkXZ�Z�Z�Z�Z�Z�Z�Z�Z�Z�azZ�Z�azZ�w*Z�w*w*Z�Z�ew*Z�w*eZ�Z�Z�Z�Z�azZ�azeazazZ�{�azZ�Z�azZ�azZ�azw�w�Z�w�Z�w�jZ�Z�Z�Z�Z�Z�jZ�j��Z�az��Z���azazZ�Z�jazjZ�Z�Z�Z�Z��Z��j��Z��w�Z�Z�w�Z�w���Z�Z�����Z�wq��wqZ�Z�Z�Z�Z�Z�Z�Z�wqw�w�Z�w�u�u�Z�u�Z�u�Z�u�jZ�Z�Z�Z�jZ�Z���j��Z�az��azZ�u�azZ�Z���az��[[[[v�[�K[�K[�Kv�v�az[[[[	az��[
az��az[[az[
[gCazgCgC[gC[gCaz[\�[[�[[i[[>[[#[[[[gC��gC[gC[[v�gCv�v�[v�[ [!J�v�["v�J�[$[1[%[+[&[)['�"J�[(J��"[*v��"v�[,[.[-azv�az[/u�az[0azu�[2[9[3[6[4v�u�[5u�v�[7az[8azv�az[:[=[;��az[<az����gC[?[Q[@[F[A[DgC[B[CazgCazaz[EazkX[G[KkX[H[Iaz[JazkXaz[L[N[M��az��[OgC[PgC��gC[R[][S[Y[T[VgC[UgC{�{�[W[Xaz{�az[ZgCaz[[az[\azgC[^[c[_[`gCazaz[a[bTazT[d[fj[ejv�v�[gv�[hS�gC[j[�[k[�[l[|[m[u[n[r[o[q[pS�azS�S���[sw���[t��w�[v[y[wv�[xv�w�v�[z�W[{�Wv��W[}[�[~[�j[j[�jv�v�[�v�[�v�m[�[�m[�[���m����[�[�����[�[�[�[�[�[�[���[���[�az[�az�az[�[�[�u�azu�[��u��[�[�[�az[��^[��^��^[�[�[�w�az[�azw�[�[�[���w�����az[�[�[�[�[�[�az[��[�[�v��v�[�[�v�[�[��ov��o[�az�o[��oaz[�[�[�[�az5[�[�5�"�"[��"azaz[�[�wcazwc[�[�[�[�[�[�[�az[�azwcaz[��^az�^[�[�[�[�[�SQ�^SQSQwqwq[�[���wq��[�[�[�[�[�u���[���u�u�[�[��1u��1�1[�[�[��1[��1��[��u�[�\9[�\[�[�[�[�[�[�[�az[�az[�azaz�az[�[�gC[�gCazgC[�[�[�[�gC[�gC��[�[�az�az[�[�az[�azw8w8[�[�jw8j[�[�[�[�[�azjaz[�[�az[�az[�az����v�\\\\v��\\\w��w�w�\w��\\	�azaz\
\v�azv�\
\\\\\\\v��\v��\�v�\v�\�iv�\v��iaz\az\\v�\v�azv�\\,\\%\ \#\!v�\"v�v�v�\$azv���\&\)az\'az\(azt�t�\*\+ubt�ub\-\2\.\0\/v�ubv�\1wv�w\3\6�+\4\5���+����\7T%\8T%az\:\f\;\N\<\I\=\E\>\B\?��\@\AazT%T%��\Cj\Dj��j\FgC\Gaz\Hazjaz\Jaz\KazgC\L\MazgCaz\O\Z\P\Saz\Qaz\Raz~\T\Y\U\W~\V~�e\Xaz�eazaz�\[\a\\\_\]j�\^�j\`J�jJ�\b\e\caz�o\d�oazazwF\g\|\h\t\i\p\j\m\kj\ljwFj\nv��4\o�4v�\qgC\rgCv�\sv�gC\u\y\v\wgC��\xaz��azaz\zaz\{azb�\}\�\~\�b�\\�azb�az\�\�\�w�az\�azw�w�\��\��j\�\�\�u�j\�ju�\�\�az\�az\�az��\��\���az\�]U\�\�\�\�\�\�\�\�\�\�\�\�\�\�\���az��\�w���w�\�upw�\�w�up\�\�\�azupaz\�\�az\�gC\�\�gC\�gCazaz\�\�u�az\�azu�\�\�\�\�\�\�u�\�\�azu�azaz\�azu�\�\�u�\�\��yu��y�y{�\�\�\�\�\�az{�\�{�az\�v�az\�azv�\�\�\�azv�\�v�azazv�\�\�\�\�\�\�\�\�v���\�az\�az��az\�az\�w�azw�\�\�\�\�\�u�\�u�azu��\��\��az\�\�az\�az�K�K\�\�w��Kw�\�\�\�az\�\�w�\�w�v�v�az\�\�\�\�az\�azm\�\�\��m��\��w�\�\�w�\�\��w��\�\��\��b�b�\�b�az\�]$\�]\�]\�]]]]b�]b�azb�]az]azb�az]]]]	az�^�^]
�^����]��]
���]]]gC]gC�]�gCv�]{�]{�]{��]az]]]]�]�wqwq]wqaz]]!az] azu�u�]"u�]#u�az]%]=]&]0az]'](]-])]+]*��az����],����].]/az�az]1]7]2]4az]3az�-]5az�-]6�-az]8]:]9b�azb�];j]<jb�j]>]I]?]B]@]A�v�v�j]C]F]Dv�j]Ejv�]Gjv�]Hv�j]J]R]K]M]Lv�jv�]N]P]O�v���]Q�wq]Sazwq]Twqaz]V]�]W]�]X]o]Y]d]Z]\az][az�
]]]a]^]`�]_��o�opp]b]cv�pv�]e]k]f]iv�]g]h��v���]jw��w]l]mw��]naz��az]p]w]q]saz]razp]tkX]ukXp]vpkX]x]}]y]|]z�]{�kX��ub]~]�]v�]�v�ubv�]���]���v���]�]�]�]�]�]�]�az]�]���]�������]���azv�]�]�wq]�wqv�wq]�]�v�]�m]�mu�]�]�u�]�u�v�v�]�v�az]�]�]�]�]�]�az]�az]�azv�v�]�v�]�v�v�]�]�v�]�v�]�v�azaz]�az]�azS�]�]�]�azS�azaz]�az]�]�]�az�M�Maz]�]�]�]�]�]�]�]�]�]�]�]�]��Maz�M�Mazaz]�azw�]�]�]�]�]�]�w���]��w�w�X]�]�]��^X�^]�v�]�v��^v�]�]�]�]�az]�]��]��>az�>]�]�]�]��]����]���]��]��]�]�]�]��]�]�u��u�u�]�]�azu�az]�]�azv�v�w�]�^]�]�]�]�]�]�w�j]�v�j]�jv�]�]�]�v�v�]�v�v�]�v�v�]�v�v�]�]�]�gC]�gCv�]�v�gC]�]��]��]��]�az]�az^^^^^^^jazj^�&^�&j�&^	^j^
j^jb�b�^
b�RF^^^^^�RF^RF�^j^j�ju�^�K^�K^�Kaz^a2^_�^^�^^v^^N^ ^4^!^)az^"^#^&^$�az^%az�^'�K�^(��K^*^0^+^-^,az�Kaz^.v�^/v�azv�^1gC^2gC^3gCv�gC^5^C^6^<^7^9^8�KgC�K^:v�^;v��Kv�^=^@^>��^?��v���^Au�^Bu���u�^D^H^Eaz^F��^G��u���^I^L^Jv�^Kv�azv�v�^Mv��K^O^h^P^[^Q^U�K^R�K^S^Tm�Km^V^Y^W�Km^Xm�K^Zv��Kv�^\^d^]^`^^azv�^_v�az^a^baz�?�?^c�?w�^eazw�^f^g��w���^i^t^j^q^k^naz^laz^maz�s�s^o�s^p�sj^razj^sjazaz^uu�az^w^�^x^�^y^�^z^�^{^^|^}az��^~�����b�b�^��^�^�u��u�^�^�^�^�u�v�v�v�^�az^�azv�^�v�az^�^�^�^�^�^�az^�^�v�azv�^�gCv�^�v�gCgC^�^�^�^��gC��b�^�^�b�^�F�^�F�az^�^�az^�az^�az����^�^�R���R�^�^�^�^�^�^�^�^�^�v�R�^�R�v�^���^���v���^�^�az^�az^�azu�u�^�u�^�u�w�^�^�^�^�w�^�w�^�w�mm^�^���m��^�^�^�������^�^�^�m��mm^�m��^�^�^�^�^�^���^�^�)��)^�v�)v�^�w*^�w*^�w*v�w*^�^��KgC^�^�gC^�gC�K�K^�^�az�Kaz^�_-^�_^�^�^�^�az^�^�^�^�^�^�TCazTCTCjj^�^�v�jv�^�^�^�^�v�^�^�v�v�v�v�^�^���v���^�^�^�az��az^�jaz^�azj^�^�^�^�^�^�^�b�jb�b�^�b�kXkXaz^�^��v�__j_j_jwUwUaz______
az_az_	azu�__
u�_u�wqwq_wq�___w�w__8_8azaz_az_az��__%____��_��v�v��4__"_ j_!j�4j��_#��_$��kXkX_&_'_)�_(�wqwq_*_+_,wq��az_._f_/_K_0_=_1_9_2_6_3_5_4�az���K�K_7_8�y�K�y_:_;�y�_<v��v�_>_E_?_B_@u�_Au�v�u�_C�K_D�Ku��K_F_Ij_Gj_Hjwqwq_Jwq<_L_Y_M_S_N_Q_Op<_P<p_Rmpm_T_V�,_U�,azaz_Waz_Xazw�_Z_^w�_[_\v�_]v�w�v�___d_`_b_a�v���_c�azaz_eazR�_g_�_h_v_i_p_j_m_kazR�_lR�azaz_naz_oazb_q_tb_r_s��b��_ugC��gC_w_~_x_{gC_ygC_zgCw�w�_|_}�w��__�_�p�_��p_�kXpkX_�_�_�_�kX_�_�az_�azkXaz_�_�_��az�_�j�j_�_�_�_�_�u�_�u�ju�_�azu�_�u�az_�_�az_�azw�w�_�w�_�v�gC_�`l_�`_�_�_�_�_�_�_�_�_�_�_�v�_�v�azv�_�u�_�u�v�u�_�_�_�_�_�v�u�v�v�jj_�_�azjaz_�_�az_�az_�az_�azQ�_�_�Q�_�Q���_��_���L_�_�_�_��L_�_�{�_�{��L{�_�_�_�gC_�gC{�gCgC_�gC�_�_�_�_���_�v��v�_�_�_�azv�az_���az_�az��_�_�_�_�_�_�_�_����K�K�^_�_�_�w�^_��^w_�S��yS�_�_�_�_�w�_�w�v�v�_�_�v�v�v�_�_�_�azv�_�v�azaz_�_�_�_�_�az_���_�����_�_�v�_�_�u�v�u�_�azu�_�u�az_�`_�_�azwU_�_�_��wU��`�v�``v�`v�`v�u�u�`u�`u�az`	`2`
``az```
````wFazwFwFjj``�9j�9```p�9`�9p``pt�`azt�az``%``!`v�` �az�az`"`#j`$jazj`&`-`'`*�`(�`)�mm`+`,azmaz`.`1az`/`0�az��u�`3`N`4`B`5`>`6`9`7�u�`8u��`:`<`;�������`=��azaz`?`@u�`Au�azu�`C`H`D`F`Eazu�az`G�Kaz�K`I`K`Jm�Kmp`Lp`Mpv�`O`]`P`V`Q`Tv�`Rv�`Sv��K�K`U�Kaz`W`Yaz`Xaz����`Z`[`\��azaz�`^`c`_``�{�`aw�{�`b{�w�`d`g`e�w�`fw��`h`j`i����`k�az`m`�`n`�`o`�`p`}`q`z`r`w`s`u`t�az�`vaz�azaz`x`ygCazgCgC`{`|jgCj`~`�``�`�w�jw�`�`�w��+�+`��+v�`�`�v�`�`��iv��i`�kX�ikX`�`�`�`�kX`�`�az`�azkXazaz`�`�"�az`�az"�`�`�"��jaz`�`�{�az`�az{�`�`�`�`�`�`�`�`�`��{��`�������w`�`�w��	`��	w�`�`�`�`�`�V�`�V�w�V�`�w�`�w�V�w�`�`�`�`�`���w�����`���jj`�j�`�`�`�`�`�gC�gC`�`�gC`�`�jgCjjaz`�`�`�`�az{�`�`�{�`�{�WWazaz`�`�`�`�jazjj`�jaz`�a`�`�`�`�`�`�`��`��`�`��jj�`�`�`�`�azazaz`�az`�azj`�`�`�`�j`�j`�jv�v�`�v���`�`���`�`�v���v�v�`�`�bv�b`�`�`�`�`�`�`�wb`�bw`�u�w`�wu�`�`�u�`�`���u�����`�`�3
��3
`�a`�`�`�az3
azau�azaazu�aau�aaa�u�a�apa�pa	aa
aaaaaa
u�au�pu�azaazaaz�aa�azazv�aaaav�azazaau�azu�aazu�aaazu�aza a(aza!a"a%a#u�aza$azu�a&azu�a'u�azaza)a*a-a+v�a,v�azv�a.a0a/gQv�gQgQa1gQaza3b�a4a�a5a�a6aaa7aQa8aEa9aAa:a=a;gQa<gQkXgQa>a?gQ����a@��v�aBkXv�aCv�aDv�kXaFaLaGaIkXaHkX�0aJaz�0aK�0azaMaNaz�K�KaO�KaP�K�iaRaYaSaUaTgC�igCaVazaWv�aXv�gCv�azaZa[a^a\u�aza]azu�a_azu�a`u�azabayacamadagaeafaz�K�KazahakazaiajTCazTCalazTCazanarazaoapwazaqazwasav�
at�
au�
kXkXawax�KkX�Kaza�a{a~a|a}�Ku�u���aa���w�w���a�a�a�a�a��M��a����Ma��&�M�&a�kX�&kXa�a�a�a�a�a�a�a�a�aza�aza�azazkXa�a�aza�a�mazma�v�ma�mv�a�a�a�a�a��v�a�v��a�az�aza�a�aza�a�wqazwqwqb�a�a�a�a�b�aza�a�a�b�a�b�azb�b�a�a�azb�aza�a�a�a�aza�azTa�v�Ta�Tv�a�a�a�?Uv�a�v�?Ua�w�a�w�?Uw�a�a�a�a�a�a�a�a�a�v�a�v�w�v�a�gQa�gQv�gQa�a�gQa�a�u�gQu�u�a�u�a�u�aza�a�aza�b�a�b�a�b�v�v�u�a�a�a�a�aza�pa�pa�pwa�a�wv�a�azv�a�v�aza�a�a�a�azv�a�azv�aza�a�a�a�aza�az��a��wwa�wa�waza�bVa�b"a�b	a�a�a�a�a�a�a�a�a�wazwa�u�wu�u�a�u�b�b�a�a�a�b���a��gQbbgQbgQbgQbgQv�bbv�bv�bv�{�{�S�b
bbbbazb
bS���b�azbbazbazbazjjbjS	bbbbS	�bv�bv��v�bb!bbv�����b ��J�J�v�b#b?b$b1b%b*b&b'v�u�b(u�u�b)u�u�b+b.b,mu�b-u�mb/azb0�m�b2b8b3b5azb4az��b6��b7��b9b<b:azb;azazv�b=v�b>v���b@bMbAbGbBbD��bC��w�w�bEw�bFw�b�b�bHbIbKb�bJb�bL��bNbO��u�bPbS�bQ��bR������bT��bU�4azbWb�bXbsbYbhbZb`b[b_b\b^b]�4��4�4t�t��babfbbbdbc�4��4�4be�4����bg��jbibobjbkj��blbnbmJ���J�J��Kbpbr�Kbq�KT4T4v�btb~bubwbvgCv�gCbxb{by�"bz�"gC�"b|u�b}u��"u�bb�b�b�b�b�b��u���b��jjb�b��Kj�Kb�b��Ku�u�jb�b�b�b�b�b�b�b�b��+j�+b�gQb�gQ�+gQb�b�gQb�b��gQ��b�b�v��v�b�b�b�b�v�b�b�wv�wwb�wb�wgQgQb�gQb�gQazb�b�b�b�azb�b�wqb�wqazwqb�b�azb�azb�az��b�az��b���azb�b�b�w*b�w*b�w*azw*b�azb�u�b�u�w*u�b�c�b�c"b�b�b�b�b�b�b�b�azb�azb�azb�azV�b�b�V��b��1��1b�b�b�b�b�u��1u�b�b�u���b��kXkXb�b�b�b�b�kXb�b�b�b�b�b�b�b�b�b�jb�jjazb�b�azb�b���az����b���azb�b�azb�azb�azb�azSb�b�Sjb�b�b��j��b����b�c	b�b�b�b���b�b�v�b�v���v�b�w*b�b�b��Bv��B�Bw*b�cb�b�w*b�w*�4cu�cu��4u�ccc�Zc�Zu��Zcazcaz�Zazc
cccu�cJc
JcJ�Kcaz�Kc�KazcccccccS4azS4S4cS4v�v���cccc������c���^�^c �^c!��azc#cQc$cBc%c3c&c-c'c*c(�Kc)�KgC��c+gCc,gC�KgCc.c0gCc/gC�}c1v��}c2�}v�c4c9c5c7c6b�v�b�b�c8b�J�c:c=c;F�J�c<J�F�c>c@c?F�cAazcCcHazcDcEu�cFwcazcGazwccIcMu�cJjcKjcLjgCgCcNgCcOcPu�gCu�cRcicSc^cTcXcUkXu�cVu�cWu�kXcYc[cZ�^kX�^c\azc]az�^azc_cfc`ccazcaazcbazv�v�cdceazv�azazcgazchazjcjcxckcrclcojcmcnazjazazcpcq�;az�;cscvctSC�;cu�;SCcwazSCazcyc�czc}c{�;azc|az�;c~c�c�;c�wwc�c�azwazc�c�c�c�c�c�c�c�c�c�azc�azc�azwcc�c�c�azwcc�wcazc��az�c�c�c�c�c�c�c�����v�c�t�v�c�v�t�c�c�c�v�t�c�t�v�c��Kv�c�v��Kc�c�c�azc�c�c�v��Kc��Kv�c�wqc�wqv�wqazc�c�c�az�c�u��u�c�c�c�c�c�c�c�c�c�ju�jc�c�c�mjmmc�mazazc��c�c������c�c�c�c���c�c�������c�u���c���u�c�c�u�c�c�v�u�v�v�c�v�azc�c�c�c�azc�c�u�c�u�azu�c�c�c��u�c�u��c�F�c�F��F�c�c�c�c�c�u�F�c�F�u�u�c�c��^u��^c�az�^azc�dc�c�c�c�c�azc�c�c�azc�azwazv�c�v�c�v�azc�c�c�c�az�c��[�c���[c�c�c����[��c�az��azc�d
c�dc�dc�u�azdazu�d�Ku�du��Kddd��K�dazd	az�azddddd
pazpdddwpwwdwu�ddu�du�du��^�^d�^wdd/dd!ddwu�daz��d��d ��azd"d(d#d%d$�Kaz�Kd&u�d'u��Ku�d)d,d*�Kd+�Ku��KS�d-d.��S���d0d8d1d5b�d2�Kd3�Kd4�Kazazd6d7jazjd9d@d:d=d;v�d<v�jv�d>u�d?u�v�u�dAdEdBdDdCRTu�RTRTR7R7wdGj|dHgtdIe�dJe%dKd�dLd~dMdfdNd]dOdXdPdUdQdSdR�
gC�
�
dT�
w�w�dVdW�Kw��KdYd\�KdZd[v��Kv�v�w*d^dbw*d_d`azw*daw*azdcgCddgCazdeazgCdgdsdhdmdidjgCazazdkdlwazwdndqwdowdpwjjdrj�^dtdydudx�^dvdw�L�^�L�LDdzd|d{azDazd}u�azu�dd�d�d�d�d�d�d�d��Ku��Kd�gCd�gC�KgCd�d�gCd�gCazazd�azd�azkXd�d�kXd�kX��d�d�d�v���d���v�d�u�v�d�v�u�d�d�d�d�d�d�u�d�d��Ku��K�Kazd�d�d���azd�az��d�v���d���v�d�d�d�d�v�azazd�d�b�azb�d�d�b�azazd�d�d�azjjgCd�d�d�d�d�d�d�d�d�u�d�d�d�jazjju�v�azd�d�d�d�d��Kd��Kaz�Kjd�jd�jazd�d�azd�az�0d�v��0d��0v�d�d�d�d�d�d�d�jv�d�v�jd�v�jv�d�d�d�jv�jd�d�d��j��b�d�d�d�d�b�d�d��Kb��K�Kd�d�az�Kazd�d�azb�d�t�b�d�b�t�d�ed�d�d�d�d�d�d�d�d��?t��?�?ppd�d�v�pv�d�d�v�d�d�Tv�Td�{�Td�T{�d�d�d�d�d�d�{�d�{�����u�u�d�u�{�ee{�e{�wUew�wUewUw�eeeeee
e	ew�e
w�jeazjazazeazw�eew�ew�J�eubJ�eJ�ubeeeeev��e�v�ejv�ev�jee!eaze azjaze"e#az����e$��aze&e�e'eOe(e<e)e4e*e1e+e/e,aze-e.az����azaze0azu�e2gCu�e3u�gCe5e8e6e7gC������e9e;��e:����je=eFe>eEe?eCe@eBjeAj����v�v�eDv�kXkXv�eGeNeHeKv�eIv�eJv��1�1eL�1eM�1v�v�v�ePegeQe]eReVkXeSeTeUkX����eWeZ��eXeYv���v�v�e[e\b�v�b�e^ebe_azb�e`b�eab�azeceeedwazwwefwazeheweiepejemazekazelaz����eneov���v�eqetv�eres�v��euV��ev�V�exe~eye{ezv�V�v�Tze|e}jTzjee�ju�u�e�w�e�w�v�e�e�e�e�e�e�e�e�e�e�e�w�e�e�azw�w�w�e�aze�azw�aze�e�e��Kaz�Ke�v�e�v��Kv�e�u�gCe�gCe�e�u�gCu�e�e�e�e�e�e�u�e�u�e�u���e�p��pe�e�e�azpazaze�azwe�e�we�e�aze�azwaze�e�e�S�azS�w�e�w�w*e�e�e�e�e�e�w*e�w*e�w*�e�e��u�u�v�e�e�e�e�v�azazje�aze�azje�jaze�e�e�e�e�e�e��Kaz�Ke���e����K��b�e�e�e�e�w�b�w�w�e�w�aze�e�e�e�aze�aze�azwqwqe�wqe�wq�e�az�e��e��aze�f�e�fBe�f
e�e�e�e�e�e�e�v�e�v�e�v�waze�e�e�wv�wwaze�e�e�e�aze�e�w�azw�w�e�e��yw��ye�e��ykXkXe�e�azkXaze�fe�e�e�e�aze�azwFe�azwFe�wFazfff�az�fb��b�ffff	fjfjb�j{�f
{�f{�w�w�azff)ffffazff��f��az��fff�"��f���"azfazfazL�ff"ffL�fL�wcwcf f!azwcazf#f&azf$f%S�azS�f'��f(��S���f*f5f+f/f,f.��f-��mmjf0f3f1azjf2jazf4{�az{�f6f;f7f9f8w�{�w�v�f:v��f<f?�f=f>az�azazf@azfAv�azfCfufDf\fEfPfFfLfGb�fHfJfIv�wv�v�fKv�b�fMgCfNgCb�fOb�gCfQfUgCfRgCfSfT�gC�fVfXfW�L��LfYf[fZ��L��wf]fjf^fcf_f`wazazfaazfbazu�fdfgu�feu�ffu��4�4fhfi�K�4�Kfkfqflfo�Kfmfn��K�fp�����frfs���ftaz�azfvf�fwf~fxf{fyfzazu�u�v�f|f}v�����wff�f�f�wf�wazazf�azf�azjf�f�jf�j��f�f�w�wf�f�f�f�f�f�f�azwf�wazf�f�az--f�-��f�f���f�����azf�f�f�f�f�w�azf�azw�f�v�w�f�w�v�f�f�f��
v�f�v��
f�f��
jjf�jazf�gf�f�f�f�f�f�f�f�f�f�f���f�f�azjj��f�u���f���u�f�f�f�wu�f�u�wf�azf�azwazf�f�f�f�f��^f��^az�^azf�azf�azv�f�azv�f�v�f�v�azf�f�f�f�f�f�v�f�v�f�v�v�v�f�v�f�v�kXf�f�kXf�f�azkXazazf�azw�f�f�f�f�w�f�w�jjf�f�azjazf�f�az�f�az�azf�f�f�f�f�f�f�f�f���azf�az��f�j��f���jf�f�f�v�jv�f�f�v���f��b�f�f�b�f�f��Kb�f�b��Kf�f�f��+�K�+f�u�f�u��+u�gggggkXgjgju�jgggazkXazazg	g
jazjggg
gju�u�v�ggg{�v�{�gazgaz{�azggKgg2gg$gg ggazggazgw*gw*w*g!g"ew*g#w*eg%g+g&g)g'azg(azeazazg*{�azg,g/azg-azg.azw�w�g0w�g1w�jg3g=g4g:g5g7jg6j��g8az��g9��azazg;g<jazjg>gDg?gBg@�gA�j��gC�w�gEgGw�gFw���gHgI����gJwq��wqgLgagMgVgNgRgOgPwqw�w�gQw�u�u�gSu�gTu�gUu�jgWg]gXg[jgYgZ��j��g\az��azg^u�azg_g`��az��gbghgcggv�gd�Kge�Kgf�Kv�v�azgigmgjgkaz��glaz��azgngqazgogpgCazgCgCgrgCgsgCazguh�gvh>gwg�gxg�gyg�gzg�g{g|gC��gCg}gCg~gv�gCv�v�g�v�g�g�J�v�g�v�J�g�g�g�g�g�g�g��"J�g�J��"g�v��"v�g�g�g�azv�azg�u�azg�azu�g�g�g�g�g�v�u�g�u�v�g�azg�azv�azg�g�g���azg�az����gCg�g�g�g�g�g�gCg�g�azgCazazg�azkXg�g�kXg�g�azg�azkXazg�g�g���az��g�gCg�gC��gCg�g�g�g�g�g�gCg�gC{�{�g�g�az{�azg�gCazg�azg�azgCg�g�g�g�gCazazg�g�TazTg�g�jg�jv�v�g�v�g�S�gCg�hg�g�g�g�g�g�g�g�g�g�g�S�azS�S���g�w���g���w�g�g�g�v�g�v�w�v�g��Wg��Wv��Wg�g�g�g�jg�jg�jv�v�g�v�g�v�mg�g�mg�g���m����g�g�����g�g�g�g�g�g�g���g���g�azg�az�azg�g�g�u�azu�g��u��g�hg�azg��^g��^��^hhhw�azhazw�hhh��w�����azh	h h
hhhazh�h
hv��v�hhv�hh�ov��ohaz�oh�oazhhhhaz5hh5�"�"h�"azazhhwcazwch!h0h"h(h#h&h$azh%azwcazh'�^az�^h)h-h*h,h+SQ�^SQSQwqwqh.h/��wq��h1h8h2h5h3u���h4��u�u�h6h7�1u��1�1h9h:h<�1h;�1��h=�azh?h�h@hnhAhXhBhKhChGhDazhEazhFazaz�azhHhIgChJgCazgChLhRhMhOgChNgC��hPhQaz�azhShUazhTazw8w8hVhWjw8jhYhahZh\h[azjazh]h`azh^azh_az����v�hbhihchdv��hehghfw��w�w�hhw��hjhk�azazhlhmv�azv�hohhphzhqhvhrhsv��htv��hu�v�hwv�hx�iv�hyv��iazh{azh|h}v�h~v�azv�h�h�h�h�h�h�h�v�h�v�v�v�h�azv���h�h�azh�azh�azt�t�h�h�ubt�ubh�h�h�h�h�v�ubv�h�wv�wh�h��+h�h����+����h�T%h�T%wh�h�h�h�h�h�h�h�h�h�h���h�h�azT%T%��h�jh�j��jh�gCh�azh�azjazh�azh�azgCh�h�azgCazh�h�h�h�azh�azh�az~h�h�h�h�~h�~�eh�az�eazaz�h�h�h�h�h�j�h��jh�J�jJ�h�h�h�az�oh��oazazwFh�h�h�h�h�h�h�h�h�jh�jwFjh�v��4h��4v�h�gCh�gCv�h�v�gCh�h�h�h�gC��h�az��azazh�azh�azb�h�h�h�h�b�h�h�azb�azh�h�h�w�azh�azw�w�h��h��jh�h�h�u�jh�ju�h�h�azh�azh�az��h��h���azh�i�h�i]h�i,h�ih�ih�ih�ih�h�h���az��iw���w�iupw�iw�upiiiazupazii	azi
gCiigCi
gCazaziiu�aziazu�iiiiiiu�iiazu�azaziazu�iiu�ii�yu��y�y{�i i'i!i$i"az{�i#{�azi%v�azi&azv�i(i+i)azv�i*v�azazv�i-iEi.i7i/i4i0i1v���i2azi3az��azi5azi6w�azw�i8i?i9i<i:u�i;u�azu��i=�i>�azi@iBaziAaz�K�KiCiDw��Kw�iFiKiGaziHiJw�iIw�v�v�aziLiTiMiOaziNazmiPiRiQ�m��iS�w�iUiXw�iViW�w��iYi[�iZ�b�b�i\b�azi^i�i_iyi`ipiaihibieicb�idb�azb�ifazigazb�aziiimijikaz�^�^il�^����in��io���iqiuirgCisgC�it�gCv�iv{�iw{�ix{��izazi{i�i|i~�i}�wqwqiwqazi�i�azi�azu�u�i�u�i�u�azi�i�i�i�azi�i�i�i�i�i���az����i�����i�i�az�azi�i�i�i�azi�az�-i�az�-i��-azi�i�i�b�azb�i�ji�jb�ji�i�i�i�i�i��v�v�ji�i�i�v�ji�jv�i�jv�i�v�ji�i�i�i�i�v�jv�i�i�i��v���i��wqi�azwqi�wqazi�ji�i�i�i�i�i�i�i�azi�az�
i�i�i�i��i���o�oppi�i�v�pv�i�i�i�i�v�i�i���v���i�w��wi�i�w��i�az��azi�i�i�i�azi�azpi�kXi�kXpi�pkXi�i�i�i�i��i��kX��ubi�i�i�v�i�v�ubv�i���i���v���i�i�i�i�i�i�i�azi�i���i�������i���azv�i�i�wqi�wqv�wqi�i�v�i�mi�mu�i�i�u�i�u�v�v�i�v�azi�ji�ji�jazjazjazv�v�jv�jv�v�jj	v�jv�jv�azazj
azjazS�j
jjazS�azazjazjjjaz�M�MazjjGjj-jj jjjjjjj�Maz�M�Mazazjazw�j!j'j"j&j#j$w���j%�w�w�Xj(j*j)�^X�^j+v�j,v��^v�j.j<j/j3azj0j1�j2�>az�>j4j9j5j7�j6���j8��j:�j;�j=jDj>jA�j?j@u��u�u�jBjCazu�azjEjFazv�v�w�jHjbjIjVjJjOjKjLw�jjMv�jjNjv�jPjSjQv�v�jRv�v�jTv�v�jUv�v�jWj[jXgCjYgCv�jZv�gCj\j_�j]�j^�j`azjaazjcjpjdjjjejgjfjazjjh�&ji�&j�&jkjnjjljjmjb�b�job�RFjqjxjrjujs�RFjtRF�jvjjwj�ju�jy�Kjz�Kj{�Kazj}m�j~k�jk<j�j�j�j�j�j�j�j�azj�j�j�j��azj�az�j��K�j���Kj�j�j�j�j�az�Kazj�v�j�v�azv�j�gCj�gCj�gCv�gCj�j�j�j�j�j�j��KgC�Kj�v�j�v��Kv�j�j�j���j���v���j�u�j�u���u�j�j�j�azj���j���u���j�j�j�v�j�v�azv�v�j�v��Kj�j�j�j�j�j��Kj��Kj�j�m�Kmj�j�j��Kmj�m�Kj�v��Kv�j�j�j�j�j�azv�j�v�azj�j�az�?�?j��?w�j�azw�j�j���w���j�j�j�j�j�j�azj�azj�az�s�sj��sj��sjj�azjj�jazazj�u�azj�kj�j�j�j�j�j�j�j�j�j�az��j������b�b�j��j�j�u��u�j�j�j�j�u�v�v�v�j�azj�azv�j�v�azj�j�j�j�j�j�azj�j�v�azv�j�gCv�j�v�gCgCj�j�j�j��gC��b�j�kb�j�F�j�F�azkkazkazkaz����kkR���R�kk(k	kk
kkkkv�R�k
R�v�k��k��v���kkazkazkazu�u�ku�ku�w�kk kkw�kw�kw�mmkk��m��k!k#k"������k$k&k%m��mmk'm��k)k4k*k0k+k.��k,k-)��)k/v�)v�k1w*k2w*k3w*v�w*k5k6�KgCk7k9gCk8gC�K�Kk:k;az�Kazk=k�k>kfk?kWk@kIazkAkBkFkCkEkDTCazTCTCjjkGkHv�jv�kJkQkKkNv�kLkMv�v�v�v�kOkP��v���kRkTkSaz��azkUjazkVazjkXk_kYk^kZk\k[b�jb�b�k]b�kXkXazk`ka�v�kbkejkcjkdjwUwUazkgkzkhkqkiklazkjazkkazu�kmkou�knu�wqwqkpwq�krktksw�wkukw8kv8azazkxazkyaz��k{k�k|k�k}k��k~��v�v��4k�k�k�jk�j�4j��k���k���kXkXk�k�k��k��wqwqk�k�k�wq��azk�k�k�k�k�k�k�k�k�k�k�k�k��kX���K�Kk�k��y�K�yk�k��y�k�v��v�k�k�k�k�k�u�k�u�v�u�k��Kk��Ku��Kk�k�jk�jk�jwqwqk�wq<k�k�k�k�k�k�k�p<k�<pk�mpmk�k��,k��,azazk�azk�azw�k�k�w�k�k�v�k�v�w�v�k�k�k�k�k��v���k��azazk�azR�k�k�k�k�k�k�k�k�k�azR�k�R�azazk�azk�azbk�k�bk�k���b��k�gC��gCk�k�k�k�gCk�gCk�gCw�w�k�k��w��k�k�k�p�k��pk�kXpkXk�k�k�k�kXk�k�azk�azkXazk�k�k��az�k�j�jk�k�k�k�k�u�k�u�ju�k�azu�k�u�azk�k�azk�azw�w�k�w�k�v�kXll�llgll3llllll	v�llu�lu�v�u�l
lll
lv�u�v�v�jjllazjazllazlazlazlazQ�llQ�lQ���l�l��Lll(ll"�Lll {�l!{��L{�l#l&l$gCl%gC{�gCgCl'gC�l)l-l*l+��l,v��v�l.l0l/azv�azl1��azl2az��l4lKl5l?l6l9l7l8���K�K�^l:l=l;w�^l<�^wl>S��yS�l@lFlAlCw�lBw�v�v�lDlEv�v�v�lGlJlHazv�lIv�azazlLlXlMlQlNazlO��lP����lRlUv�lSlTu�v�u�lVazu�lWu�azlYl`lZl[azwUl\l^l]�wU��l_�v�laldv�lbv�lcv�u�u�leu�lfu�v�lhl�lil{ljazlklslllplmlolnwFazwFwFjjlqlr�9j�9ltlwlup�9lv�9plxlypt�lzazt�azl|l�l}l�l~v�l�az�azl�l�jl�jazjl�l�l�l��l��l��mml�l�azmazl�l�azl�l��az��u�l�l�l�l�l�l�l�l�l��u�l�u��l�l�l��������l���azazl�l�u�l�u�azu�l�l�l�l�l�azu�azl��Kaz�Kl�l�l�m�Kmpl�pl�pv�l�l�l�l�l�l�v�l�v�l�v��K�Kl��Kazl�l�azl�az����l�l�l���azaz�l�l�l�l��{�l�w�{�l�{�w�l�l�l��w�l�w��l�l�l�����l��azl�m,l�l�l�l�l�l�l�l�l�l�l�l�l��az�l�az�azazl�l�gCazgCgCl�l�jgCjl�l�l�l�l�w�jw�l�l�w��+�+l��+v�l�l�v�l�l��iv��il�kX�ikXl�l�l�l�kXl�l�azl�azkXazazl�l�"�azl�az"�l�l�"��jazl�l�{�azl�az{�l�ml�ml�ml�ml��{��m������wmmw��	m�	w�mmmmm	V�m
V�w�V�mw�m
w�V�w�mmmmm��w�����m��jjmj�mmmmmgC�gCmmgCmmjgCjjazm m&m!m"az{�m#m%{�m${�WWazazm'm(m*m)jazjjm+jazm-mgm.mJm/m<m0m5m1�m2�m3m4azjj�m6m9m7m8azazazm:azm;azjm=mCm>mAjm?jm@jv�v�mBv���mDmG��mEmFv���v�v�mHmIbv�bmKmZmLmSmMmPmNwbmObwmQu�wmRwu�mTmWu�mUmV��u�����mXmY3
��3
m[mam\m^m]az3
azm_u�azm`azu�mbmeu�mcmda�u�a�mfpa�pmhm~mimtmjmqmkmnmlu�mmu�pu�azmoazmpaz�mrms�azazv�mumzmvmwv�azazmxmyu�azu�m{azu�m|m}azu�azmm�azm�m�m�m�u�azm�azu�m�azu�m�u�azazm�m�m�m�v�m�v�azv�m�m�m�gQv�gQgQm�gQazm�om�nOm�m�m�m�m�m�m�m�m�m�m�m�m�gQm�gQkXgQm�m�gQ����m���v�m�kXv�m�v�m�v�kXm�m�m�m�kXm�kX�0m�az�0m��0azm�m�az�K�Km��Km��K�im�m�m�m�m�gC�igCm�azm�v�m�v�gCv�azm�m�m�m�u�azm�azu�m�azu�m�u�azm�m�m�m�m�m�m�m�az�K�Kazm�m�azm�m�TCazTCm�azTCazm�m�azm�m�wazm�azwm�m��
m��
m��
kXkXm�m��KkX�Km�m�m�m�m�m��Ku�u���m�m���w�w���m�m�m�m�m��M��m����Mm��&�M�&m�m��&kXkXm�kXm�kXazm�nm�nm�m�m�m�m�azm�azm�azazkXm�m�azm�m�mazmm�v�mm�mv�m�nm�nm��v�m�v��naz�aznnaznnwqazwqwqb�nnn	n
b�aznnnb�n
b�azb�b�nnazb�aznnnnaznazTnv�TnTv�nnn?Uv�nv�?Unw�nw�?Uw�n n6n!n0n"n)n#n&n$v�n%v�w�v�n'gQn(gQv�gQn*n-gQn+n,u�gQu�u�n.u�n/u�azn1n5azn2b�n3b�n4b�v�v�u�n7nAn8n<azn9pn:pn;pwn=n>wv�n?azv�n@v�aznBnFnCnDazv�nEazv�aznGnLnHnJaznIaz��nK�wwnMwnNwaznPn�nQn�nRnknSnanTn\nUnZnVnXnWwazwnYu�wu�u�n[u�b�b�n]n^n_b���n`�gQnbnfgQncgQndgQnegQv�ngnjv�nhv�niv�{�{�S�nlnxnmnrnnaznonpS���nq�aznsnvazntaznuazjjnwjS	nyn~nzn{S	�n|v�n}v��v�nn�n�n�v�����n���J�J�v�n�n�n�n�n�n�n�n�v�u�n�u�u�n�u�u�n�n�n�mu�n�u�mn�azn��m�n�n�n�n�azn�az��n���n���n�n�n�azn�azazv�n�v�n�v���n�n�n�n�n�n���n���w�w�n�w�n�w�b�b�n�n�n�b�n�b�n���n�n���u�n�n��n���n�������n���n��4azn�n�n�n�n�n�n�n�n�n�n�n�n��4az�4�4t�t��n�n�n�n�n��4��4�4n��4����n���jn�n�n�n�j��n�n�n�J���J�J��Kn�n��Kn��KT4T4v�n�n�n�n�n�gCv�gCn�n�n��"n��"gC�"n�u�n�u��"u�n�n�n�n�n�n�n��u���n��jjn�n��Kj�Kn�n��Ku�u�jn�on�n�n�n�n�n�n��+j�+n�gQn�gQ�+gQn�n�gQn�n��gQ��n�n�v��v�n�on�ov�oowv�wwowowgQgQogQogQazo	oo
oazoowqo
wqazwqooazoazoaz��oaz��o��azooow*ow*ow*azw*oazou�ou�w*u�oo�o o�o!oQo"o8o#o,o$o(azo%azo&azo'azV�o)o*V��o+�1��1o-o4o.o0o/u��1u�o1o2u���o3�kXkXo5o6b�o7b�kXb�o9oEo:o?o;o>b�o<o=jb�jjazo@oCazoAoB��az����oD��azoFoJazoGazoHazoIazSoKoLSjoMoOoN�j��oP���oRokoSo]oToX��oUoVv�oWv���v�oYw*oZo\o[�Bv��B�Bw*o^odo_oaw*o`w*�4obu�ocu��4u�oeohof�Zog�Zu��Zoiazojaz�Zazolotomoqu�onJooJopJ�Koraz�Kos�Kazouo|ovo{owoyoxS4azS4S4ozS4v�v���o}o�o~o������o����^�^o��^o���azo�o�o�o�o�o�o�o�o�o�o��Ko��KgC��o�gCo�gC�KgCo�o�gCo�gC�}o�v��}o��}v�o�o�o�o�o�b�v�b�b�o�b�J�o�o�o�F�J�o�J�F�o�o�o�F�o�azo�o�azo�o�u�o�wcazo�azwco�o�u�o�jo�jo�jgCgCo�gCo�o�u�gCu�o�o�o�o�o�o�o�kXu�o�u�o�u�kXo�o�o��^kX�^o�azo�az�^azo�o�o�o�azo�azo�azv�v�o�o�azv�azazo�azo�azjo�o�o�o�o�o�jo�o�azjazazo�o��;az�;o�o�o�SC�;o��;SCo�azSCazo�o�o�o�o��;azo�az�;o�o�o��;o�wwo�o�o�wazazo�azwo�pOo�po�p
o�o�o�o�o�o�o�azo�azt�azazo�azwco�o�o�azwco�wcazo��az�o�po�po�o�o�����v�pt�v�pv�t�pppv�t�pt�v�p�Kv�p	v��Kpppazp
ppv��Kp�Kv�pwqpwqv�wqazpppaz�pu��u�pp5pp'pp#pppju�jpp!p mjmmp"mazazp$�p%p&�����p(p/p)p,��p*p+������p-u���p.��u�p0p3u�p1p2v�u�v�v�p4v�azp6pBp7p;azp8p9u�p:u�azu�p<p?p=�u�p>u��p@F�pAF��F�pCpJpDpGpEu�F�pFF�u�u�pHpI�^u��^pKpL�^azazpMazpNazt�pPp�pQpepRpZpSazpTpWpUazpVazwazv�pXv�pYv�azp[p`p\p]az�p^�[�p_��[papcpb���[��pdaz��azpfptpgpnphpkpiu�azpjazu�pl�Ku�pmu��Kpopqpp��K�prazpsaz�azpup}pvpxpwpazppyp{pzwpwwp|wu�p~p�u�pu�p�u��^�^p��^wp�p�p�p�p�p�wu�p�az��p���p���azp�p�p�p�p��Kaz�Kp�u�p�u��Ku�p�p�p��Kp��Ku��KS�p�p���S���p�p�p�p�b�p��Kp��Kp��Kazazp�p�jazjp�p�p�p�p�v�p�v�jv�p�u�p�u�v�u�p�p�p�p�p�RTu�RTRTR7R7wp��p�p�p�p�p�p�p�p�u�p�p�p�azv�v�azp�p�p�p�w�azmt�p�p��1v�v��p�p�p�p�p�p�u����Z�;p�ju�jjp�jp�j��p�p�p�p�p�p�jp�jw�p�jj�&p�p�p�kX�"kXp�azkXv�p�p�p�p�azp�az�p�azjazp�p�gCp�u�wp�p�kXazazgCp�p�p�p�p�p�p�p�p�p���u�u�wwp�azjp�p�p�w�jv�p�azwUazp�p�v�p�p�p��1�Z��v�p�p�p�b�v�azazp�azw8p�qp�qp�p�p���w8����q���qqqaz��azqqkXu�v��qqq	qu�q
azv�az�q
�qaz�azqt{qqq�q�q�q�azqaz�q�qtq�q��qqr�qq�qq�q qXq!q<q"q/q#q)q$q'q%q&az�?u�azazq(v�u�q*q-q+q,azv�azwazq.v�v�q0q7q1q4q2q3gCgQazgCq5q6t���gCazq8q:azq9v�kXazq;�azq=qIq>qDq?qAazq@v�gCqBqCwkXmw�qEqGqFgC�v�gCqHgCazqJqQqKqNqLqMazgCgCv�qOqPv�wUwUu�qRqUqSqTu�kXkXv�qVqWv�azkXv�qYqtqZqeq[qaq\q^azq]azgCq_q`gCu�ww�qbazqcqdazu�ubb�qfqmqgqjqhqiu�t��1azqkqlaz�?wazqnqqqoqpgCv�azb�qrqskXv�v�wquq�qvq{qwqyazqxazb�wcqzwcb�q|q}b�azq~qgCazv�azq�q�q�q�q�q�v�v�azgCq�q�v�gCazkXq�q�q�q�mv�jwq�azv�azq�q�q�q�q�azq�azazq�q�q�az��azazq�azq�q�q�u�q�u��^q�q�b�w�?wq�q�q�q�q�q�q�q�q�q�kXub�azazq�t�wq�q�q�q�w�mazv�q�q�azmmt�q�q�q�q�q�q�u�b�gCazazq�azgQq�q�q�az�kXt�azq�q�q�q�q�q�q�q�gCazv�gCq�q�v�azv�w�q�q�q�q�gCazw*azq�q�u�azu�wUq�q�q�q�q�q�azgCgCu�q�azgCazq�q�q�q�azt�v�v�q�q�b�mmwq�rKq�rq�q�q�q�q�q�q�q�q�q�w�v�v�b�q�azw�azq�q�q�q�v�b�u�t�q�q�jmazwq�q�q�q�azq�azb�azq�kXazq�q�q�v�azgCu�q��a�q�rq�q�q�q�q�v��?�q�q�azmaz�q�rq�q�v�b�v�v�rrv��w��wFrrrrrrwcw���w�r	r
��v�v�v�rrr
r�"v�v�b�rrmw�azt�rr/rr rrrrrazv�wazrmw*rrazrv���rru��wv�kXr!r(r"r%r#r$mazazv�r&r'azkXkXv�r)r,r*r+v�azt�w�r-r.wt�v�b�r0r>r1r8r2r5r3r4v�azazwr6r7v�mmv�r9r<r:r;w�gC�Mazazr=wgQr?rFr@rCrArBgCv�gCv�rDrEmazazv�rGrIazrH�azrJazgCazrLr}rMrbrNr]rOrVrPrSrQrRgCjw��
rTrUwazwt�rWrZrXrYaz�w�b�r[r\azgCb�upazr^r_rar`azwcazgCazrcrordrirerfazgCrgrhgCu�v�t�rjrlrkaz�azrmrn�Kt�w8��rprwrqrtrrrsazb�azkXrurvmb�t�u�rxr{ryrzv�wkXgCr|azb�azr~r�rr�r�r�r�r�azr�v�gCr�r�kXazb�v�r�r�r�azwv�azr�mu�r�r�r�r�r�azt��[azr�azjr�r�r�r�azkXazb�r�r�b�gCu�azr�r�r�r�r�r�azgCr�r�mv�v��1r�r�r�azaz�[r�azazgCr�r�r�r�r�v�azv�azr�b�azr�r�r�r�azv�wazr�r�gCmv�kXr�s�r�s r�r�r�r�r�r�r�r�r�r�r�azwu�r�r�b�azmgCr�r�r�r�v�v�v�azazr�azw�r�r�r�r�r�r�azmazgCr�azu�azr�r�azr�b�azr�r�t�azazgCr�r�r�r�r�r�r�r�v�azw�azr�r�wb�v�wcr�r�azr�v�azr�r�azgCazu�r�r�r�r�mazazr�v�azr�r�r�r�mv��b�azr�gQazr�sr�r�r�r�r�r�r�r�v�azgCwr�r�u�gC�1t�r�r�r�r�t�t�az��mr�v�jr�r�r�azr�r�azv�azw�sssskXv�azgCazst�b�ssss
sss	s
v�gCv�msazazu�ssssmgCw�azssv�t�wv�ssssssmazt�v�sazb�azssazsw�azsazv�azs!sYs"s?s#s1s$s*s%s's&azazms(s)gCt�gCazs+s.s,s-gQazazkXs/s0azt�gCv�s2s9s3s6s4s5b�azv�azs7s8azmazjs:s=s;s<wazazmazs>kXgCs@sMsAsHsBsEsCsDazv�kXb�sFsGazt�jt�sIsLsJsKazmmv�azu�sNsRsOazsPsQ�MgC�1t�sSsVsTsUv�az�"v�sWsXmazazkXsZsus[sis\scs]s`s^s_wmazv�sasbv�v�azt�sdsgsesft�v�v�gCazshwv�sjspsksnslsmv�azw�v�soazaz��sqsssrazb�azstazjv�svs�sws~sxs{syszv�wazkXs|s}azv�azv�ss�azs�azkXs�s�v�t�wazs�s�s�s�azs�v�u�s�s�jv�gCv�s�s�s�azt�v�s�s�azv�v�w�s�s�s�s�s�s�s�s�s�s�s�s�s�s�azu�u�js�s�jmmv�s�s�s�s�v�w�w�js�s�jv�v�azs�s�s�s�azs�b�wUs�s�w�wmkXs�s�s�s�v�gCazv�azs�azwFs�s�s�s�s�s�s��wF�����s�s�S�?U�,�;s�s�s�s�v��s�w��s�s�s�s�azb�v�s�azwt�s�s�s�s�ms�s�s�gCs�b�gCs�azt�v�s�s�s�s�gCs�mv�s�s�azgCv�ws�azs�azv�azs�s�s�s�s�s�azs�v�ws�s�b�azazws�s�s�s�w��mjs�s�mv��
ubs�s�s�s�s�v�v�t�s�s�v�gCwjs�s�s�s�ww��s�s�wv�gCws�ts�ts�ts�s�s�azs�s�v�azb�azs�ts�s�azgCv�mttt�v�b��"tt
ttttjwFv�azazt	mb�tttt
gCazazu�tt�iwv�azt�t�t�aztaz��t�t�t�t�t�azttlt�t�t �t!�t"�t#t]t$t?t%t2t&t+t't*t(t)�u�u�azmazt,t/t-t.v�azgCazt0t1azv���azt3t:t4t7t5t6gCazazv�t8t9az�jv�t;t=azt<v�wt>azazb�t@tNtAtHtBtEtCtD�Mazv�b�tFtGwazv�gCtItKaztJt�kXtLtMv�azkXt�tOtVtPtStQtRv�kXazmtTtUmb�gCv�tWtZtXtYb�v�gCt�t[t\v�azazt�t^�t_�t`tftatctbmv�b�tdtev�jwaztgtjthtigCt�gCu�tk�t��tm�tn�to�tp�tq�tr�ts�tt�tu�tvtytwtx�u�gCmtz�mt�t|�t}�t~�t�t��t��t��t�t��t�t��t�gC�t��t�gC�t���gCt�azt�t�azt�t�azt�t�t�t�t�t�t�azt�azaz|t�t�t�az�azt�t�t�azaz|t�azaz|t�t�t�t�azt�t�t�az|az|t�t�az|t�t�azv��azt�azazt�t�azazt�t�azt�azt�azw�t�w�t�t�w�t�w�w�t�w�t�azw�t�t�t�t�t�t�t�t�t�azt�t�azt���{�t�t�v�mt�t�t�������t�mt�mt�mt�t�mt�t�t�t�mmw�mt�mw�t�mt�t�mw�mt�mw�t�t�az|azt�azv�t�t�t�azt�t�t�aNt�aNt�aNaNt�aN�faN�fazt�az|t�t�t�t�t�t�|azt�azt�||�t�az|azazt�t�az|azt�t�t�azazt�t�azaz|t�t�|azazt�t�az|azt�ut�t�t�t�azgQt�t�jv�t�v�azv�azut�azuu�uu�uu�uuuazuazazuu	azazu
uazuazazu
uazuazgQugQazuuluuuazuazuugC�"v�azuu-uu(uazuazuazuazuu%u u"azu!ubazu#u$ubazubazu&azu'azwazu)u,u*azazu+t�azazwu.uGu/u;u0u5u1u3azu2v�azazu4wv�u6u8u7azazt�u9u:azgQazgCu<uBu=u?u>mgCmu@uAt�v�gQwuCuEazuDv�azazuFwv�uHuUuIuNuJuLuKazv�t�u�uMv�azuOuRuPuQgQv�v�muSuTmazgQu�uVu`uWu\uXuZazuYv�azazu[wv�u]u_u^azv�t�u�v�uauhubueucudazv�v�mufugmgQgQu�azuiujukt�azt�azumu�unusuoazupazuqt�azurazt�utu�uuuvazv�uwu}uxuzuyu�azu�u{u|w�v�gQju~azuu�mt�u�u�u�azu�azu�u�azu�azu�jazu�azu�azv�azu�t�azu�azu�wazazu�u�u�u�u�u�u�u�azu�u�azu�azu�azu�azmu�azwazu�azazu�u�u�azu�azu�t�v�u�u�u�azv�azu�wu�azu�u�azv�wazu�u�u�azu�u�u�u�azu�u�t�u�wgQazu�u�wazazu�u�gQazgQu�azu�u�azu�u�u�v�mv�mu�u�u�u�v�azazgQazgQu�u�azu�u�u�azwazu�azu�u�u�azu�u�u�u�u�v�t�v�v�w�azu�azu�mazubazu�azu�u�u�u�azu�azazu�u�u�u�v�azv�u�gQv�gQazu�u�u�u�gQu�t�gQu�v�azu�azgQu�u�v�gQv�u�u�u�u�u�u�u�gQu�u�azv�azu�wmv�azu�u�azmu�u�azv�v�azu�v�u�vKu�v)u�vu�vu�u�u�u�wcw�v�u�gQv�u�u�gQwcw�vw�b�vvvvgQw�v�vvvw�v�b�gQv	v
v�wcw�gQvvv
vvvv�vvw�vv�gQv�vv�vvw�gQgQw�gCvvvwvv�jvvjv�v�v�vv$kXvv v"v!wv�t�v#t�ww�v%v&gQv�v'v�v(v�w�w�v*v=v+v7v,v2azv-v.azv/wUv0v1gQv�t�gQazv3azv4v�v5v6v�v�v�v8azazv9v:azv;v<v�v�v�wv>vEv?azazv@vAvCwvBww�azvDv�gQazvFvGazv�vHvIvJw�kXkXazvLvpvMvfvNvVvOvSazvPvQazazvRwt�azvTazvUazmvWvavXv]vYazvZazv[v\t�wgQv�v^v_azu�v`v�v�t�vbazvcazvdvev�w8w8azvgvnvhvkvivjazt�t�v�vlazv�vmgCazazvov�azvqvzvrvuazvsvtazu�azazvvv�vwvxazvyubv�azv{v�azv|mv}v~t�vazazv�azt�v�v�v�v�wt�v�wv�v�wt�v�t�gQv�v�v�azv�v�v�v�u�azu�v�azv�v�v�v�v�v�azgQv�azv�azv�azv�azv�azazv�azv�azv�v�azv�azv�azv�azv�v�v�azv�v�v�azazv�azv�azgQv�zOv�xhv�wv�v�v�v�v�v�v�v�azv�azv�az�Mv�v�azv��Mazv�v���azazv�v�v�azv�u�azazv�azv�v�azv�azazt�v�v�v�azazv�wv�v�v�v�azgQazazubv�v�v�azazwqv�azaz�1v�v�v�v�v�azv�v�mu�w*azv�v�v�azazv�t�azv�v�v�v�azt�t�azv�azazv�v�v�azv�azv�azv�ubazv�wv�v�v�v�v�v�azv�v�azv�v�azb�azv�azv�v�v�azv�v�azb�azv�wazv�v�v�v�v�v�azv�v�azwazu�v�v�u�v�v�azazv�azv�v�azv�v�azv�azv�wwazwwazazwwazazwwwwUwazww	ww
wazwazww
wwazazwu�t�t�u�wwwwwv�wwwazt�wazmv�wv�azv�azazwazwwazazv�w w�w!w>w"w-w#azazw$w%azw&azw'w*azw(azw)mazgCw+azw,azw�w.w3azw/w0azazw1azw2azubw4w<azw5w6w;w7w8azu�ubw9w:azv�azv�azazw=b�azw?w�w@w�wAwGwBmazwCwDwEazwwFmazmwHazwIazwJazazwKazwLwMazwNwhazwOwPw]wQwXwRwUwSwTazv�v�azwVwWazv�v�azwYw\wZw[azv�v�azv�azw^wcw_wbw`azv�waazv�v�azwdwev�azwfazwgazv�azwiwpazwjazwkazwlwmwoazwnv�azv�azwqwwwrazwsazwtwuazv�wvazv�azwxw�wyw{azwzazv�w|w~w}azv�azwv�azv�w�w�w�w�w�azv�azw�v�azv�w�azw�azv�azw�azw�v�azw�w�w�azv�w�azv�azw�w�w�w�w�w�w�v�w�w�v�w�b�v�v�azv�azw�azazw�w�w�azw�w�az�azb�azw�w�azw�w�azazw�w�azw�w�azv�azw�w�azkXw�w�azkXazw�xw�w�w�w�w�w�w�azazw�azw�ubv�v�w�w�azw�azw�azv�azw�w�w�w�wazazw�w�w�azw�azw�azv�w�w�w�azv�azazw�azv�w�v�w�w�w�w�w�w�w�w�az�waz�ww�az�wazb�azw�w�w�azw�azv�azazw�w�az�?azw�w�w�w�w�w�w�wazw�azw�azv�wazw�w�azw�w�w�w�w�w�az�azw�w�az�1azt�w�w�azw�azv�w�w�az��az��azw�w�azazw�azw�gCazw�xazw�w�w�w�w�w�azgCazw�w�azw�v�azw�w�azu�mazxxxazxazazt�xazxazazv�xazxxazx	x
mazxv�azx
azx�"mazxxOxxazxxazxazxxxazazxazgCv�azxazazxgCxxxazv�xazazx x!v�x"x6x#x)azx$azx%x&x(azx'azv�azv�x*x1x+x.x,x-azv�azv�x/x0azv�azv�x2azx3azazx4v�x5v�azx7azx8xDx9x<azx:azx;azv�x=xAx>x@x?azv�azazv�xBxCv�azazv�xExLxFxIxGxHv�azazv�xJxKv�azazv�xMazxNazv�azxPx_xQxZxRxYxSwxTxVxUazazv�xWv�azxXv�azb�azx[azazx\azx]b�x^gCazazx`xaxgxbv�xcxeazxdazv�v�xfazjv�jxiyqxjx�xkx�xlxxmxtxnazxoxsjxpxqxrjkXazb�azu�azxuxvx}xwxzxxazxyazazgCx{azazx|ubazx~b�gQmx�x�x�x�x�x�b�u�azx�azx�azx�x�wUwUazx�wUx�azazb�x�x�x�azx�azx�x�wUazx�gQazx�t�azx�x�t�wUwUx�x�x�azx�wUazx�u�x�azazmx�x�x�x�azx�x�x�x�b�azx�gCx�gCazb�gCx�x�x�x�gCazazx�azx�azx�azgCazgCx�x�x�x�x�x�x�azx�x�gCx�w�azazwwazx�v�wx�x�x�x�v�wv�v�x�v�azx�x�v�azx�azx�azx�x�wt�azmx�yPx�x�x�x�x�azx�x�azt�t�x�x�x�t�x�t�azb�wUx�x�x�azazx�x�x�b�x�azx�wazx�azubazazx�x�azx�azazx�azx�gQazx�x�x�azx�x�x�kXgQx�v��?kXx�x�azx�kXazkXx�yJu�x�x�azx�azazx�x�yazx�x�azx�yx�x�x�x�x�x�azv�azv�x�azazx�v�azx�x�azx�x�x�azv�v�azx�yyyazv�v�azyyazv�v�azyazyyyyy	y
azv�v�azyy
azv�v�azyyyyazv�v�azyazazv�yazazyyy/azyyy$yyyyb�yb�azazyazb�y y"b�y!b�azazy#azb�y%y*y&y(b�y'b�azazy)azb�y+y-b�y,b�azazy.azb�y0yEy1y<y2y7y3y5b�y4b�azazy6azb�y8y:b�y9b�azazy;azb�y=yBy>y@b�y?b�azazyAazb�yCazb�yDb�azyFazazyGyHazyIazb�azazyKmyLazyMyNb�yOb�v�wUyQybyRyYySyTazb�azyUyVazazyWazyXazgCyZazy[y]azy\b�azazy^y_y`v�azazyau�azycykydyiyeyhazyfazygazjw�azyjazv�azylymazwUynypyob�v�azb�azyry�ysy�yty�yuy{azyvywazyxazyyazazyzazt�y|y�y}v�azy~yy�azu�azv�y�u�y�azy�y�y�azy�azwcazazy�y�azazjy�y�azy�azy�y�y�y�y�y�wwazy�azwazy�y�u�y�kXt�t�azy�y�azy�y�jy�y�w�azu�y�y�y�azjazazy�y�y�azjjazy�y�y�y�y�y�y�azy�y�y�y�jy�y�y�azu�u�wu�azazy�w*azazy�y�azy�azazy�y�azgCazazy�y�azy�azy�y�az�wu�y�y�azt�wy�y�y�y�v�y�y�y�u�y�u�azy�y�wUazy�azazy�gCu�y�azy�y�y�wu�y�wgCwazy�y�w�y�y�azy�azw�y�w�azazy�azy�y�azazu�y�z%y�y�y�y�azy�y�azy�azy�azv�azy�azy�azazy�y�azv�azy�zy�y�y�azy�y�y�y���y�w�azv�azy�y�wy�y�azkXazy�azy�azazu�y�u�azy�y�zy�u�azy�azy�y�azy�zy�zazzzzazgQazzgQzazgQzzzzazgQazz	z
gQazgQzzazz
zgQazgQazzgQzgQazzazzzzzazgQazgQzazazzzazgQazz�"u�azzzazv�z azz!azz"z$v�z#v�azazkXz&z=z'z6z(z.z)azazz*z+z-z,�"azu��"azazz/z0azz1z5azz2z3z4wUazu�az�"azz7z9azz8w�azz:azazz;azz<v�azz>zHazz?azz@zAazzBzEzCazzDazazu�t�zFazzGaz�"zIazazzJazzKazzL�"zMw�zNu�azzP|�zQ|1zRz�zSz�zTz�zUzszVzmzWazzXazzYazzZazz[azazz\z]azz^azz_zfz`zczazbazb�azb�zdzeazb�azb�zgzjzhziazb�azb�zkazazzlb�azznazazzoazzpzqw�azzrazw�ztz|w�zuzvazzwzyzxazw�azzzgCz{azazt�z}azz~azazzazu�z�z�z�z�z�z�z�z�z�z�azgC�"z�azz�gQz�z�z�z�z�gQz�z�z�gQz�gQazz�z�gQazgQazz�z�z�z�z�z�gQazgQazz�z�gQazgQazz�z�z�z�gQazgQazz�z�gQazgQazz�gQz�gQz�z�z�z�gQazgQazz�gQgQz�z�gQazgQz�u�u�azz�w8z�azu�azz�azz�z�azz�azz�z�z�u�azmazz�z�b�z�azz�gQazazz�azv�z�azazz�azz�azz�azmz�z�z�z�z�z�z�azz�azz�z�z�azazz�gCmazu�azz�azz�azz�u�azazz�z�z�z�azz�z�azv�mz�mazazmz�z�z�azz�z�mazazz�azz�z�azz�z�azb�azmz�z�azz�azz�z�z�azz�azu�u�mazz�z�azz�z�azmgQazz�{azz�z�z�z�z�z�azazz�z�z�u�z�z�azazj�1v�azz�z�azazz�v�azazz�z�{az{az{az{{azazw{b�az{azb�{{{	{{
az{b�b�{b�{
{v�{azv�azaz{az{az{{azaz{{azmaz{{�az{{{�{w�{w�wc{az{{{5az{ {!{&az{"az{#{${%azv�azv�{'{.{({+{){*azv�azv�{,{-azv�azv�{/az{0{3az{1{2v�v�azaz{4v�az{6{r{7{O{8{C{9{<{:{;azgCazgC{={@az{>gC{?gCazaz{AgC{BgCaz{D{H{E{FazgCaz{GgCaz{I{Laz{JgC{KgCazaz{M{NgCazgC{P{]{Q{V{R{SazgCaz{T{UazgCaz{W{Z{Xaz{YgCazgC{[az{\gCazgC{^{h{_{d{`{b{agCazgC{cazgCaz{e{fazgC{gazgCaz{i{n{j{l{kgCazgC{mazgCaz{oaz{p{qazgCazgC{s{�{t{�{u{{v{y{waz{xgCazgC{z{}{{{|azgCgCaz{~azgCaz{�{�{�{�{�azazgC{�azgCaz{�{�{�{�azgCgCaz{�azgCaz{�{�{�{�{�az{�gCazgC{�{�{�gCazgC{�azgCaz{�{�{�{�azgC{�azgCaz{�{�{�azazgC{�azgCaz{�az{�az{�{�{�{�{�gCazgC{�azgCazaz{�{�{�gCazazgCw�{�azv�{�{�{�{�az{�t�{�azgCb�az{�{�gCaz{�gC{�{�{�azazgC{�|0{�az{�az{�{�{�{�{�{�{�{�{�{�azgCazgC{�{�azgCazgC{�{�{�{�azgCazgC{�{�azgCazgC{�{�{�{�{�{�azgCaz{�{�azgCaz{�{�{�{�{�gCazgC{�azgCaz{�{�{�gCazgC{�azgCaz{�{�{�{�{�az{�gCazgC{�{�{�gCazgC{�azgCaz{�{�{�{�{�gCazgC{�azgCaz{�{�{�gCazgC{�azgCaz{�|#{�|
{�|{�{�{�{�{�gCazgC{�azgCaz{�|{�gCazgC|azgCaz|||||gCazgC|azgCaz|	||
gCazgC|azgCaz|||||||gCazgC|azgCaz|||gCazgC|azgCaz|||||gCazgC|azgCaz| az|!|"azgCgCaz|$|(az|%|&|'azgCazgC|)|,|*|+azgCazgC|-azaz|.|/azgCaz��w�|2|�|3|K|4|H|5|>|6az|7|8azw�w�|9|:|=w�|;|<v�v�azazu�|?az|@|G|Aj|B|D|Cjazj|Eazaz|Fu�azjaz|Iaz|Jaz�1az|L|Z|M|Taz|N|Ov�az|P|Q|S|Rv�azv�az��az|U|Vaz|Wazaz|X|Yu�azu�|[|||\|uaz|]az|^az|_��|`az|aaz|baz|c|d|iaz|eaz|f|g|hazv�azv�|j|q|k|n|l|mazv�azv�|o|pazv�azv�|raz|sazaz|tv�azaz|v|w|zaz|xaz|ykXaz|{azv�az|}|�|~|w��|�az|�azb�azaz|�ubaz|�|�|�|�|�|�az|�|�az|�v�|�azaz|�az|�az|�|�az|�|�|�|�|�|�|�|�azb�azb�|�|�azb�azb�|�|�|�|�azb�azb�|�|�azb�azb�|�az|�az|�|�azb�az|�|�azb�az|�u�|�azaz|�|�u�b�az|�|�|�az|�|�|�az|�azu�azaz|�|�azaz|�|�azt�az|�|�|�az|�az|�|�|�az|�az{�v�az|�az|�azgQaz|�az|�|�|�v�az|�azgQ|�wv�|�|�|�|�|�|�w�az|�az|�az|�wazm|�|�az|�az|�az|�az|�azgQaz|�az|�|�az|�az|�azgQazaz|�az|�|�azwaz|�}�|�}1|�}	|�|�|�|�|�|�|�az|�az|�az|�azaz|�azv�az|�u�j|�|�|�azj|�|�azj|�jazaz|�|�az|�az|�azaz|�azu�az|�|�}|�}|�azaz|�t�|�t�u�azt�}}t�u�u�}}}u�v�}wUaz}azv�}
}}}az}}
}}u�}az}u�azu�u�az}}}}azu�azv���az}}'}}��}}az}azgC}az}wu�} azaz}!}"}&}#az}$}%v�mb�kXkXaz}(}.az})}*az}+},azv���}-��az}/}0az����az}2}a}3}P}4}?}5}:}6azaz}7}8}9��kXazmaz};}<m}=mkX}>azm}@}H}A}Bmaz}Caz}D}G}Emaz}Fazmazmaz}Iaz}J}Kaz}L}Naz}Maz��}Oazazv�}Q}Yaz}R}Saz}Taz}U}Vaz�&t�}W}Xaz�?w*}Zazaz}[az}\}]azaz}^}_}`azmazgC}b}�}c}�}d}�}eaz}f}�}gazaz}haz}i}ju�}k}�}l}�}m}v}n}q}o}pazv�azv�}r}taz}sazv�az}uazv�}w}}x}|}y}zv�azaz}{azv�}}}~v�azazv�}�}�}�}�v�azazv�}�}�v�azazv�}�az}�}�}�}�}�}�v�azazv�}�}�v�azazv�}�}�}�}�v�azazv�}�azv�az}�}�}�}�az}�az}�az}�azv�}�az}�az}�azv�az}�}�az}�}�}�az}�azv�}�}�v�azazv�}�}�}�}�}�}�v�azazv�}�}�v�azazv�}�az}�az}�azv�azaz}�azv�az}�}�az}�}�azv�}�u�azu�}�}�}�}�azu�u�az}�azaz}�az}�}�az}�azazub}�}�}�}�az}�}�az}�azazkXaz}�}�azm}�t�b�}�}�az}�az}�}�azv�azaz}�az}�v�az}�~R}�~}�}�}�}�}�}�}�}�}�azaz}�v�azaz}�}�}�kXazu�kXu�v�}�}�}�}�}�u�}�}�}�u�azu�}�gCaz}�azt�u�az}�}�az}�az}�kX}�kXu�}�azmaz}�~}�}�kXaz}�az}�az}�}��^}��^azaz}�~azb�~~az~az~~~~~~azb�azb�~	~
azb�azb�~az~
azaz~b�az~~~azaz~~azb�azaz~~az~~azu�az�"~~1~~)~~"~~ az~az~b�az~!azb�az~#u�az~$~%~&�0azu�~'u�~(u�az~*~,~+azw8az~-az��~.~/~0az��u�az~2~H~3~<~4~6az~5azkX~7~8azgQ~9az~:v�az~;kXaz~=~F~>~D~?az~@~Baz~Aazv�~Cazubaz~EgCazu�~Gazv�az~I~L~Jazaz~Ku�az~Mazaz~N~O~Q~Pazazu�u���~S~�~T~n~U~h~V~d~W~_~Xaz~Y~\~Zaz~[azw�az~]azaz~^v�b�az~`~aazaz~baz~cu�azaz~e~fazaz~gazkX~iazaz~jgC~k~lazgC~mgCaz~o~}~p~w~qaz~raz~s~v~tazaz~uazkXu�az~xazaz~y~zaz~{azaz~|wUazaz~~~azaz~�~�~�u�azazu�~�~�~�az~�~�az~�~�az~�azaz~�b�azaz~�az~�azgQ~�az~�az~�~�azgCgCaz~��+~��~���~��h~�~�~�az~�~�~�~�az~�~�azaz~��~��~��~�~���~�~���~��~�~���~�~��@�~�~�~�~�az|az~�~�~�~�azaz||~�azgCaz~�az|~�~�az~�az|~�az~�~�~�~�~�az~�~�v�azaz|az~�az~�~�|@azaz~�~�~�az|�az~���~��~�M~�~�~�~�~�~�~�~�~�az~�t�b�az~�wUaz~�~�~�~�v�kX�1az~�azb�j~�~�~�~�~�~�azb�az~�~�~�~�az~�~�az~�az~�az~�azu�azaz~�~�v�~�az~�az~�azv�azazb�~�~�~�~�wgC�ub~�~�gCazazwU~�~�~�~�~�~�~�v�wazm~�~�v�az��b�~�~�gQaz��wU��gCazaz��w�

v�	gQazv�azb�az�1w�u�azu�b�v��15&azazgCjazgC�1! azu�v�w�az"az#$%��azazkX',(+)*az�az�mw�-2.azaz/01wazb�kX34azb�b�w6>7;az89:azv�v�az<az=azazwU?H@CABv�azazv�DGEkXazFazgCazjIKazJwt�azLu��1N�OjP]QWRTSazv�azUVw*mm�wX[YZv�azwazaz\w�az^d_b`av�azv�azazc��gCegfazv�gChiazv�azv�kvlpmaznow�kXwUazqsrgCwv�tuazwmb�w�xy~z|{azub��az}��azwcgQ�azv�u�����w�v�jt�az�u�az����������az����gQ��u�j�w�azv�az����v�azj�M�azaz�����az�"�?��az��azwc�az���1az�-az��������az�1�v��azv�az�azwaz����u�azazv����azb��wUb�az��������azmb�az��v�az�az�azaz�b��b�az����azu�u�az��b�v�t����*��������az�az�w*az��az�u�az��v�v�az��������az����azaz�azmaz�az�u�������azu��v�az��az���az���u��az�wF����az�azw���azgQ�"���azaz��azazv������az��az�jkX��azv�b�az������v�wUv�az�	�
wUb�azb���az�
azb���azwjb���������v�az�"az�azgCu����azwv��azazu���%� �"�!azv�gC�#�$azgCv�az�&�)�'�(v�m��az�?az�+�p�,�K�-�;�.�4�/�1az�0wu��2�3�1u�v�az�5�8�6�7azv�az��9�:u�v�kXaz�<�C�=�?�>azv�az�@�Awaz�Bv�azv��D�Hv��Ej�Fv��Gv�u��I�Jv�w8u�w�L�a�M�T�N�Q�O�Pwv�u�w8�R�Swazjw�U�^�V�]b��W�X�\w�Y�Zw�[wgCww�azwb��_�`wu�mw�b�i�c�f�d�ev�azv�v��g�hazgQw8m�j�m�k�lv�b�azu��n�ou�azwUw�q���r�}�s�w�taz�u�vwUazazv��x�{�y�zazw8t�v��|azv�az�~���������w�v�azj������v���azazv���v�����azu�v�az��������v�az����az��wv���azu�v���azwUaz��������������azazb�������v�wu�����az��v�az��azkXaz������������v�azazkXaz��jw������azazgC����b�t�������������az��az����������az��azgQaz����az��azu�����az����azgQb���az����u�azaz��������������������azgQazaz����azazgC����az������az�"t�b���������kXazwcv�az��jaz������������az��v�az��azazgQ��azaz��gCgQ������������azb�azb�����v�azv�az��������gCgQazw*����azw*azb���������az��������azazv���azjaz������az��azazu���az��azazv�����az����mazazw�azazgQ�az�az�	�
gCazv�azaz��
�"az��az������v�azaz���v�mazv����az��jazu�v�jaz�azaz�v�� az�!az���#v��$�F�%�=az�&�'az�(az�)az�*�9�+�2�,�/�-�.v�gCgCgQ�0�1�[b�gC��3�6�4�5b�kXb�w��7�8v�v�wU��:az�;az�<b�wwc�>az�?az�@az�Aaz�Bazaz�Caz�Daz�Eazu��G�_az�H�Iaz�Jaz�Kaz�L�[�M�T�N�Q�O�Pv�gCgCgQ�R�S�[b�gC��U�X�V�Wb�kXb�w��Y�Zv�v�wU��\az�]az�^b�wwc�`az�aaz�baz�caz�dazaz�eaz�faz�gazu�az�i�j��kaz�l�xaz�maz�n�oaz�pazaz�q�r�w�saz�t�uazgQ�vazazgQazgQ�yazaz�zaz�{az�|az�}�~azazb�����|������az��az������������azazgC��azazb���������azkXazub����azv�azw��az��az��azv�az��������������azaz����az��az|azwaz����az������az����az��az��az��az��az��azw�azaz��az��azv���az��az��azaz��gCazaz����������az��j��az��v�kX��az������gCv�jkXj������MM����g�g������M��d���;g�M����MMg����P���1���������������az��az��az����az��azaz��az����azgCaz������az��az��az��az��az��azaz��azgC��az��azaz����azaz����azaz������azv�az��azv���az��azaz����azaz����azaz����az����az��azv�����azv�azv�������az��az|azaz��az��azaz�az�az�azv��azaz����	��
��azv�az�
azaz�gQaz���azgQaz�az�az�azv�az��"����az�azt�gQaz�� az��v�azjaz�!azw�#�,�$�'�%az�&azazv��(�*az�)gQazaz�+azv��-�/az�.gQaz�0azazv��2�Eaz�3�4az�5�;az�6�7azaz�8�9az�:azjazaz�<�=�Aaz�>az�?az�@wazaz�B�Caz�Dazazv�az�Fd�G�Haz�Iaz�Jaz�Kaz�L|�M|�N|�O|�|�Q���R���S���T�e�U�^�V�Yaz�Waz�Xaz|az�Z�[az�\az�]az�ib��_�baz�`az�a@azaz�caz�d|az�f�z�g�w�h�uaz�iaz�j�k�s�laz�maz�n�q�o�pazgCb�az�razazt��tazgQwaz�v|az�xaz|�y|az�{�~az�|�}az|az�az����|azaz�'������������az��az��|azaz������|az|az����az����azazQ������az��az��azaz��b�az����������az��|��az����az��`���az|az@����az����azaz|az��az���cazaz������w*��w*��w*��w*��w*��w*��w*azaz��������az�����������az����az|��������azaz��w�az��������mv�w�v�����v�kXu�az������������az���6��az��azgQ��az|az��az��az��azmaz������kXaz��az������azgCaz���az������azaz��az��az��az����azaz����az��az��azazv�����maz��v�az��az������az��az��az����az��azazv�az����azaz����az��azazv���||��|��|��|��|����|��|�|�||��||��|�|�||��	az�
|�|���
�|��|����������������(�az��'�� ����e�ՙee�ՙee�~���!�$�"e�#e~�e�%e�&e��e�az�)���*az�+�B�,�7az�-az�.�/az�0azaz�1az�2�3azaz�4�5az�6azazv�az�8az�9az�:�;az�<azaz�=�>az�?az�@az�Aazazb��C�baz�D�E�Y�F�M�Gaz�Hazaz�Iaz�J�Kazaz�LazgC�Naz�O�V�P�U�Qazaz�Raz�S�Tazazt�waz�Wazaz�Xazwaz�Zaz�[az�\az�]az�^az�_az�`�aaz��az�c�~az�d�e�v�f�o�gaz�hazaz�i�jaz�k�m�lazwFaz�naz��az�pazaz�qaz�r�saz�taz�uazv�azaz�waz�x�yaz�zaz�{az�|az�}azazwF�azmaz|����������|������az����b���b���b���b�b�����b�b���azb��az|az����az��az��az|��|�����|�|az��������azazv�az������azm��m����azv�mu���|az��az����az��az��az��azaz��az����azaz����az��az��az��azaz��@az���E����������az������azaz����azaz��azb���az��az������az��az��az��azaz����azaz��az����azgQazaz��waz����az��az��az����azaz��maz��az����az����az��azgCazaz����azaz��azgC���������az����������azaz��azkXaz����azazwU������azaz��azm��azaz����az��azaz��az����az��az��azaz��az�^��az���az����az��azaz��az���azaz��az�az�az�az�^az�az�azaz�	az�
�az�azaz�
�azaz�az�az�az�^��!az��azaz�az��azaz��az�az�az�az�az�azaz� �^azaz�"az�#�$azaz�%�&�<�'az�(�5�)�/�*az�+azaz�,az�-az�.�^azaz�0�1azaz�2az�3�4az�^azaz�6az�7�8azaz�9az�:az�;az�^az�=az�>az�?az�@az�A�Bazaz�Caz�Daz�^�F��G�_�H�Jaz�I�Tazaz�K�L�X�M�T�N�Q�O�Paz~w�az�R�S�������|�U�V�Wu����Y�\�Zaz�[azaz�az�]az�^b�v��`az�a�p�b�i�c�h�d�eu�v��f�gkXb�kXazwFb��j�k�{��l�mb�az�n�owazgQaz�q�w�r�t�sazgCwv��u�vazv�v�az�x�y�}az�z�{az�|az{�az�~azgQaz������az��az����������M��g�g�M��Mg�����M��c���A����t�azdAaz������������az��az�����azJ�az����az��|���6�|az����������������az�az�����|���������������������������������az|��������az����az��azaz��az��az����azaz��w���w�az�����?e|azaz|����az��az��������azaz��az|����az����az��az��azaz��maz��az��az������az|��az|az|������azaz��az����az��az��azaz����azaz��az����az��az��az��az��azaz��@az��az����az��az��az����az��az��azaz����azaz��az��az��az��az��az��@azaz��az��az��az����azaz����azaz��az����azaz�az�az��az@az���az�azaz�az�	az�
�az�azaz�
�az�azaz��az�az�azaz��az�az�azaz@�azaz�az�az�az��az�az� azaz�!�"az�#azaz�$az�%az�&�'az�(azaz�)az�*az@�,���-���.��/���0���1���2�j�3�R�4�K�5�J�6az�7az�8�Aaz�9az�:�;az�<az�=azaz�>�?azaz�@w�azaz�B�Cazaz�D�Eaz�Fazaz�G�Hazaz�Iw�az|az�L�Paz�M�N|az�Oakaz�Qazaz|�S�g�T�Xaz�U�V|�Waz@az�Y�d�Zazaz�[az�\�]azaz�^�_az�`az�aaz�baz�caz�Kazaz�e�f������az�h�i|az|�k���l���m���nazaz�o�p�y�q||�r�s||�t|�u�v|�w|�x|�||�z|�{�||�}||�~|��|����|az|az����az����|az��az��az����az��az��azaz����azaz��w�azaz������@TR@TR����az��|az��azaz��|az��������������azaz���6��gQaz��||az��������|azaz����|��az��azaz��az��az��az����azaz����az�Kaz��azaz��|az����������az��azaz|����az��az|��az����az��t�az��azazgQ��az������azaz����az||���������������|������azaz����az�az�����az���az��azgC�az������az������azgC��gQ��gQazaz��t�b���az��azaz����azaz��azmaz|az��������azaz������azv�azv�����w*��������w*��w*��w*azw*w*az�������������������������������������������������m���������	���
�az��������
�����������������������az��Y�az�az�����az|az��az|��@&� �O�!az�"�8�#�+az�$�%�*v��&v��'v��(v��)v�azv�az�,�.az�-v�azaz�/�0az�1az�2azaz�3�4az�5azaz�6az�7@az�9�J�:�D�;v��<az�=v�v��>�?v��@v��Av��Bv��Cv�v�az�Ev��Fazv��G�Hv�v��Iv�az�K�Lazv��M�NgCv�v�azaz�P�Q�U�Razaz�S�TazazgCaz�Vaz�W�XazazgC�Z�~�[|v��\v��]�^�w�_v��`�k�a�e�b�daz�cv�azv�az�f�i�g�hazv�v�azv��jazv��l�q�m�ov��nv�az�pazazv��r�u�s�tazv�azv��vv�v�azv��xv��yv��z�{�|azv��}azv�az���������az��az��azaz����az����az����v�v���v�azazv�����az��az��az��azgQaz��az������gQaz��az��azazgQ������azaz��b�����db�d��az��az����������azazb�az��az����azaz����azaz��az��az����az��azazv�az��������azaz����az��az��azaz����azaz��az��v�az��azaz��az������az��az��az����azaz��v�azaz��az����azaz��az��v�az������������������azazw��azaz��m����azaz����az��az��az��az��az��azaz��az����az��azazm������az��m��azaz��az����m����azmazm��u�azu�az������az����gQv�w��t�v�az���naz�����+�������az������az��az|az|���az����az|az|az�az��|gQaz��az��	�
az���azR�az�
����az����v�v�w*az���az�v��v��v�v��v�v�w�azaz��az��)az�az� �!�(az�"�#�%az�$��kX�&�'j�gCw|az�*az�az�,�>�-�4�.�2�/�0az|az�1�E�az�3az|�5�9�6azaz�7�8azg�M�:�<�;azaz|�=|azv��?�G�@�D�A�B|azaz�Caz|az�Eaz�Faz|�H�X�I�K�J||az�L�W�Maz�Nazaz�Oaz�Paz�Qaz�R�Saz�Tazaz�Uaz�Vv�azaz|�Yazaz�Z�[�e�\az�]az�^azaz�_az�`az�aaz�baz�caz�dw�az�faz�gaz�hazaz�iaz�j�kaz�lazaz�mw�az�o���p��az�q�razaz�saz�t�uaz�vaz�waz�xaz�yaz�zaz�{azaz�|�}azaz�~az�az@|az��������az��az��az|��������v���az������az��azgC����v�azjwU����������M�M���g�M���y���y�M�y�M��q�M��az������������gC��v�azazjazkX��������jazaz��v�kXaz��wkX��az����az����az��az��azazgQ��azaz����az��az��azazgQ���W������az���G����������������az��������az��������|i@����|����azaz����az'��'��'��'��'����''��az'����|������|�|�|az��|����az������v�azaz��v�az������az����wazwUaz������azazgC��t�kXgC��az����������6����������azaz��az����azv�az����az��az��az��az��azm��az�����azaz��gQaz�azazv����az��az�az�azv��	�Aaz�
��>az��
az���az���azaz��azaz�az�v�az�azaz����azaz�azv��azaz�v�az� �1�!�'�"azaz�#az�$az�%az�&v�azaz�(�)�-az�*�+az�,azv�azaz�.az�/�0azazv��2�8az�3�4azaz�5az�6�7azv�az�9az�:az�;azaz�<�=azv�az�?azaz�@azv��B�Caz�az�Daz�E�Fazazhaz�H�I�Vaz�J�Kaz�Laz�Maz�N�T�Oazaz�P�Qazaz�Raz�S�Kaz�Uazv�az�W�m�X�h�Y�]�Zazaz�[az�\v�az�^az�_azaz�`�aazaz�b�caz�d�faz�eazv��gv�azv�az�i�jaz�kazaz�lv�azaz�n�o�u�p�r�qazv�az�sazaz�tazv��vgQ�w�~�xazaz�y�zazaz�{�|az�}azv�azaz�az����az��azaz��v�az������������������az������azaz��az|��|����az����az��az��az��azaz|az����az������v���az��v�azv�az����v�azw�������t���M�����;M��M�;M��azaz����az����������azv�az��azv�az��az����az��az��az������az��az��az����azv�az����az��az����azv�az��azaz��az��azv�az����az��az��az��azaz��az������azv�azv���az���4������������������������6�����||�������|����|���k����������|�k����|�]||�������|�|�����������������||�|�����|���|����B�6�6|������������|���%|���|���������|�|�|���������
����|�|�	|����
�||�����4||B�����||L�4|�|�����|a�|��'��!���|��|� ��k�"�$�#||�C�%�&�k|�����(�.�)�+�*|�|�,�-�||��/�2�0�1�|�|�3������5�j�6�H�7�C�8�<|�9�:�;V	|�|�=�@�>�?|�|��A�B�k��||�D�E|�F�G�||�k�I�]�J�M��K�L�|��N�Z�O�P�����Q|�R�S||�T�U|�V|�W|�X�Y|��|�[�\�|��|�^�d�_�b�`�a�]|����c���|�e�g�f||��h�i����|�k���l�v�m�r�n�p|�o|��q|�6��s�u�t�]|��|��w�}�x�z|�y|��{�|�|����~����|�����|������������������|�����|������||����|���������|��|������||��������|�����|�����az������az����azaz���K��gC������wv�wb�������azaz��az��az��az����az��az��azaz����az��az��az��azw�azaz����az��azaz����az��az��az��az����azwwaz���2������az�������������;��~��M�	����q�MM����M��M����M��M��������MM�O����az��w�v�az������azv�azv����'���������azaz����az��az��azaz����az��azaz����az��azazv������v�������az����az����azaz����azaz��az��v�azaz����az��azaz����az��azazv����az��az��azaz��az�az�azv�az�azaz��	��
azaz��az�
azv�az�azaz��az�azazv�az��b�az��az�az�az�az�az�az�azazv���#� gC�!�"v�azazb��$�&�%azb�azgCkX�(�+�)az�*az�az�,azaz�-�.�0��/az|�1azaz@�3az�4�C�5�>�6�:M�7M�8�9MM~M�;M�<�=g��+M�?MM�@���A�BM�+M�D�Q�E�IM�F�GM�HMM�	�J�LM�K��M�M�O�NM�+M~�Pg�M�RM�SM�T�U��MM�VM���X���Y���Z�saz�[az�\|�]�^az�_az�`�kaz�a�bazaz�caz�d�eaz�faz�gaz�haz�iaz�jazb�azaz�laz�maz�n�oazaz�paz�qaz�razb��t�w|�u|�v|az�x�~�y�{�zazaz��|�}az||azaz�������������������y�My�y���y�g�����g���g�Mg���g�y�������azaz��b�azN��az|az������������azu�������azw�az���������b�azwt�����b��v�az�������@���.������az��azaz��tyaz��az���-|��������������������������������������S�������������������S�������������������������S���������������������S��������������S������������������S����������������������������S�����������������S����������������������S��������������������������������S����������S����������������S��������S��	���
�����
��������S�������������S��&�������������S�� �#�!���"�S���$�%���S�'���(��)�*��+���,�S�az��/�4az�0az�1�2�3az�az|�5�<�6�8�7azaz|�9azaz�:az�;gCaz�=�>�'az�?azaz|�A�^�B�M�C�I�Daz|�E�Faz�G�Hazv�gCaz�J�Kaz�]�Laz��az�N�T�O�Q�Paz|azaz�R�S��g�M�U�V�6az�Waz�X�[�Y�Z��"�"��\�]�"���"�_�q�`�maz�a�b|�caz�d|�e||�f�g||�h|�i|�j�k||�l|�|�n�o|azaz�paz��r�{�s�waz�t|�u�c�v�g�c�xazaz�yaz�zazgC�|�~�}az|@�azaz����azazwU����az|����������az������������azv�azwUwU����azwUkX��az����az��azw��azv�az����������az|������|az�az��az|��|az��������az|b�az������az�����|��[�az��az��|az����azc�az|���j��������������������azb�b�az����azgQ��az����t�b�v�az��������b�t�gCaz����gQazazb�������az����M��M��������g�g�M��~g�M����M����M��Mq�MM��g���dg���|������az����i@��|��azgCaz|������az������azv�azaz��azw�����������azaz�1��azwazaz��az��az����M���'����������?���?�?���v�?���H:����H:������9�9��������s����9�9s�����s��9�9s�s���9s���9��9��9�9�	�9�
�9s���
H:��H:�H:|��azaz���%��azu��az���azaz��az�az�azaz�waz�az� az�!azaz�"az�#az�$waz�&azmaz�(�Faz�)�*�8�+�2�,�/�-�.v�az�1w�0�1��gCv�v��3�6�4�5w�gCgCb��7azv�m�9�@�:�=�;�<j�w�az�>�?b�azm��A�D�B�CazgCgC�-az�EgCaz�G�HMd�Iaz�Jazaz�Kaz�Lazm�N�]�O�Qaz�P|az�R�\az�S�T�W�Uazaz�VazwU�X�Z�Yazt�azaz�[ubwU|az�^�e�_�`az@&az�aaz�baz�caz�dmazaz�f�gaz�h�iwv�t�az�k���l���maz�n�t�oaz�paz�qazaz�raz�swazaz�uaz�v�wazaz�x�yaz�zazaz�{�|azaz�}az�~az���azaz���^az��������az��az��az����az��azaz�^��az������az��azaz��azgCaz��az��az��az��az��az��az��az��az��az��az��az�az����az����az��������azmaz����mazazgQ��az��azaz��azu�������������������azaz��|az������az|az��az|az����az��xv|������az��azfazb���������azaz����az��gCazgC����f��������az��az|����az���azaz|��az��az������|��azaz��az��az��azt�������������azaz����||���|������az��HG��az|az����|az��azaz��az�����az������az������������v�azv�����azu�u�m��az����mazazu��������az����u�azu���azu���u�az����azv�azv��u�azu����az�	az�
��mazm�
azv�u��az�az��azv��azv�az�az�az�6az�� ����m;azaz|az��az�������!�'az�"�#�$|azaz�%az�&azb��(�*az�)�Eazaz�+az��-���.���/���0�DsG�1sG�2sG�3sG�4�5sGsG�6�7sGsG�8sG�9�:sGsG�;�<sG�=sGsG�>sG�?�@sG�AsGsG�BsG�C	YsG�E���F�r�G�i�H�R�I�b�J�U�K�Q�R�L�M�O��N�R	I�P		��		�R�R�S�R�T�R��0q�V�\�R�W�R�X�R�Y�Z�[�R1P1P/I�]��^�R�_�R�`�a/I0606�R�c�R�d�g�e�f�R	I��				�h��0q�j�n�k�R�R�l�R�m�R		�o�R�p�R�R�q�R		�s�z�R�t�u�w��v		)�x�y��	I	I���{���|�~		�}		����R0q�R�����R��		�R�R���R		�������������R�����R��		���R	I�R��		�R���R����������R��1P/I���R06�R����		��		��������		��				�		������		��		������				����				���		�������		��		��		��	����������		����			I��		��				����������		���		�����		����		��		/I		�����R�����R		��		���R��		�R�����������������������������������sGsG������sG����sG��sGsG��sG��sG��sG����sGsG����sGsG����sG����;@��@��@;@sG������sG��sG����sG��sG����������sGj��+������������RsG;��������kosGZ���(���%��������A���A�A�H �Ba�A���A�A�	A�
AAAe��E�
EA����E��az�AA��AE�F�A��A�AA�AE��"�A�� �AeH E�!E@&A�#AE��$H A@&�&E�'AE��)�i�*az�+az�,az�-azaz�.�/�@az�0�1az�2azaz�3az�4�5azaz�6az�7az�8az�9�:azaz�;az�<az�=�>az�?az@az�Aaz�B�\�C�Z�D�M�E�F|��G|��H|�I|�J�K|�L|�|�N�Q�O�P|�|��R�S|�|�T�U||�V��W�X��Y��|az�[azt��]az�^�f�_�aaz�`azgQ�b�daz�cazgQgQ�egQazgQ�ggQ�hgQaz�j�v�k�c�l���m���naz�oaz�paz�qazaz�raz�s�taz�uaz�vazaz�waz�x�yazaz�z�{azaz�|az�}�~az�azaz@����az��az����az��az��azaz����az��azaz����az��azaz����az��azaz��az����az@azaz����az��az��azaz����az��azaz����az��az��azaz��az����azaz��az��az��az@����az��������az��az����������az������az��az��v���az��az��az��azaz��az����azv�az������az��az��az��w��azaz����azaz��az��azwaz��az��������azaz����az��azaz��az��azwaz��az����az��azaz��az��waz������azaz��az����az��azaz����az����az��az����t�azt���az��azt�az��az��azaz����az��azaz��az��az����az��az��azwazaz����azaz��az��az��azv��������m�����azaz��az��az����azaz��azaz�az�az�az��azaz�azv��	��
���e��
�e� �e�e��e��ee�e���erX�veaz���:��8��7�az��%�az� azaz�!az�"az�#�$azt�az�&�1�'�,�(az�)azaz�*�+azt�az�-azaz�.az�/�0azazt�az�2�3az�4azaz�5az�6azt�jazaz�9azw�;�R�<�Iaz�=�>az�?az�@az�A�Eaz�Baz�Caz�Dwazaz�Faz�G�Hazwaz�Jazaz�K�Laz�Mazaz�Naz�Oaz�Paz�Qazw�S�d�T�\�Uaz�Vaz�Waz�Xaz�Yazaz�Z�[azazww�]w�^�_w�`w�aww�bw�cw�K�eazaz�f�gazaz�haz�iaz�j�kaz�lazv�az�n�|az�o�p�x�q�s�rc�azc��t�vc��uNc�c��wazc��yaz�zaz�{`��5c��}|az�~�����azazgCaz��gQb�����az����azaz����az��az����azwazw������������������az����azwazwaz��az��v�azaz����az��az��az������azaz����az��az����az����azazt���azaz��maz������az��w������azb�v�az��azwaz��������azazwaz��az��b�v����G����������������az����azaz��az��az����azaz����az��az��azaz��az����az��az��azaz|����������azaz��az����az��azaz����az����az��azv���v�azv���azaz����azaz��kXaz��az����az��az��az����az��az��az����az��azv���v�azv���azaz����azaz����az��az����az��azv���v�azv����F���$�������������@&��@&��������@&�@&@&��@&��	@&����@&@&�@&�
�@&���
�����@&��@&��@&��@&����@&�@&�@&������@&�@&�����@&� �"@&�!@&��#�@&��%�4�&�*�'�@&�(�)N�@&��+�0�,�.�-�@&��/@&��@&�1�3@&�2@&����@&�5�>�6�9@&�7�8����:�<�;@&�@&@&�=���?�A�@@&�@&�B�D�C�@&�@&�E�@&�G�m�H�[�I�Q�J�M�K@&�L@&�@&�N�O@&��P�@&��R�W�S�U�T@&@&��@&�V@&��X�Y�@&�Z@&�@&�\�d�]�`�^@&�_�@&��a�c@&�b@&��@&�e�j�f�h�g@&��@&��i�@&@&�k�l�@&��n�}�o�w�p�r@&�q@&��s�u�t@&�@&@&�v@&��x�z�y@&�@&�{@&��|�@&�~�������@&���@&�����@&���@&�@&����@&������������������������������������������az��az����������az��az����az��azaz����azaz��az��az��azb���azazv���azaz��azu���������������az�����1azazjaz��az��gCazaz��az����azaz��az����az������azgCazaz��waz��azaz��az��az��az������wqazazw����B���������������az������b�azwqaz����az��{�v�t���azv�������������b�kXmw����v�u���t���azgQaz��������t�����u�u���u���u�����u�u����Ku�v��w����v�v�����u���u���u���u���u�u�����������������wqu�v�u����wazv�����u���azv���u�azu���������azb�az{�{��wqaz�����az��az�	�
�az��az�
az�azazt�az��azaz�az�t�azaz��azaz��azaz��azazt���az��azwwqu�� �.�!�*�"�%�#az�$azazt��&�(az�'azt��)azv�azaz�+az�,az�-azt��/�9�0�5�1�3az�2v�azaz�4mwaz�6�7�8azwb�az�:�=�;azaz�<kXaz�>�@az�?gCaz�Aazazubaz�Caz�D�Eaz�Faz��azaz�H�I|�J�^�K�Qaz�Laz�Maz�Naz�Oaz�Pazv��Razaz�S�T�V�Uazwazaz�Waz�X�Yaz�Z�]�[b��\azb�azb�azaz�_�`azaz�aaz�bazgQ�d���e���f���gaz�h�paz�iaz�j�kazaz�l�mazaz�naz�ov�az�q�}�r�z�s�t|az�u�y�vaz�w|�x||�az|�{�||az|az�~az���az��az����az�����v�ymazg�az������������az����azaz����azaz����az��azaz����az��azaz����az��az��azgQaz��������az��az����azaz��azkX��az��az����az��azkX��azazkX��az��az��az��azkXazaz��az��������az��az��azaz��azv���azaz����azaz���^azaz������az��az����az������azaz��az��az��az����az��azaz����azaz��az�1az��az��az����azaz����azaz��az������az��azu���azu�az����az��az��az��az����|��az����@azaz����v���v���������v�azv�����v�v���azv�����v�azv�az�����������I���&������������������������d���d���@������@-K�����@�@��������
n@@��@��	@�-K@�
�@z����
�
n@@�@���@�@��@�����@@�@
��@@���@�@���"�@@� @�!
�@@�#�$@@�%
n@�'�8�(@�)�4�*�-�+@�,@���.�1@�/@�0�@�2@@�3�@�5@�6@�7@@��9�@�:@@�;�<�>@�=�@��?�@�A�E@�B�C@@�D�@@�F�G@�H@@z��J�p�K�a�L�X�M�R�N@�O@�P�Q@�@��S@�T@�U�V�@�W@@�@�Y�Z�^�[@@�\�]@@��_@�`@@��b�h�c@@�d@�e@�f@�g@��i@�j@�k�n�l@@�m@��o@@�Y�q�~�r�v�s@�t@�u@�@�w@�x�{�y@��z�@�|@�}@@������@��@��@��@@�����@��@��@���@��������@���@@���@����@���@@��@�az��az|������az��az��az��az����az��az����azaz��az����az��az��azaz��az��az��azw�az��az��az��az��az����az����az����az��azaz��w�az��az��azaz����azazw�����az��������az��azaz����azaz����azaz����azaz����azaz��az����azw�azaz����az��azaz��az��az��az��az����az��az��azaz����azazw�az��az����az��az��az��az��azazgQ���>�����K��������az��azaz��az����azaz��az��azt�az|�������az����az��az����azw�azw�az���������������M��M��Mg���M��MMq��MM�M���Maz�����	v��azv��
v�gQv����
v�azv�v��v�azaz�az��azaz��azaz�az��azaz��az�az��azw�w��w�az� �=�!�$�"az�#azaz��%�/�&�.�'az�(�+�)��*azazgQaz�,az�-b�waz�az�0�1azaz�2�3azaz�4az�5�6azaz�7az�8az�9az�:�;azaz�<jazd]L�?�o�@�Qaz�A�Bazaz�C�Daz�Eaz�Fazaz�G�Hazaz�I�Jaz�Kazaz�L�Mazaz�Naz�Oaz�Paz@�R�g�S�`�T�Z�Uazaz�V�Waz�Xaz�Yazv�az�[azaz�\�]azaz�^�_azaz�waz�a�baz�cazaz�d�eaz�fazv�az�haz�iazaz�j�kaz�lazaz�maz�nazw�p�az�q�r��saz�taz�u���v�%�w���x����y�z���{���|��}���~�������S�����������������S��������������S�����������������������S������S��������S����������������S����������������������������S��������������������S��������������������������S����������������S���������������������S������������������S�������������������������������S���������������������S������������������S�������������������������S��������S�����������������S���������������������������S����������������S�����������������S�	��
����S���
���������S���������������S�������S�����"� ��!���S�#��$��S��&�}�'�W�(��)�?�*�9�+�4�,�0�-���.�/���S�1��2��3��S���5��6�7��8��S��:��;��<��=��>���S�@�N�A�I�B��C�F��D�E���S�G��H��S���J�K���L�M���S��O�P��Q�T�R���S�S���U��V�S��X�e��Y�Z��[�`�\���]��^�_���S�a���b��c��d��S�f�v��g�h�m��i�j��k��l��S��n�r��o��p��q��S�s��t��u���S�w���x�y��z���{��|�S��~�������b�������b���b���b�����b���b�gb���b�g��b�b���b�����b���b�gb�������������������������S��������������������S�������������������S������S�S���gQ������������������������S���������������S����������������S�gQ��gQ���������������������������������S�����������������������S�����������������������������S����������S��������������������S�������������������������S���������������������S���������������S������������������S�������S�az|��|az��s��Uaz���$az��	��
azaz�az��
az�az�azaz�az�az�azv��kX�az��az��az�azaz�az��azazv��azaz�� azaz�!az�"�#azazv��%�@�&�0�'azaz�(�)az�*azaz�+az�,az�-az�.�/azazv�v��1az�2�3az�4�:az�5az�6�7azaz�8az�9azv�az�;�<az�=azaz�>�?azv�az�A�Km�B�Caz�Daz�Eaz�Faz�Gazaz�H�Iaz�Jazv�az�LkXv��Mv��Nv��O�Pv��Qv��Rv�v��S�Tv�v�@�V�[�Waz�Xazaz�Y�Zazi�az�\az�]�h�^azaz�_az�`�aaz�baz�cazaz�daz�eaz�faz�gaz�;az�i�jaz�kazaz�l�mazaz�naz�o�paz�qaz�razv�azaz�t�uazaz�?�waz�xaz�y���zaz�{azaz�|az�}�~az�az��azaz��az����azaz��az����azaz����azaz��az����az@az��az��az��az����az����azaz��az��az����az��az��azaz����az��az��az��az��az@azaz����az��azaz����az��az��az��az��az��azaz����azaz��az��az@����������������az������az����az��azaz��az��az��az��az��az����azaz��az��az����az��az��azaz��az����az@az����az��az����az��azaz��az����azaz��az��az��az����az��azaz����az��az��azaz��@az����az��az����azaz����az|az��������������az��az|M����az|az�T���az���������az����az��azaz��az����azaz��az��az��az����azazv���azaz��az���azaz�az��az�az�az�az�azazv��	��
���
�gQmwaz�v�gQ�az��azkX�"kX����b�az�azgCgQ���kXazkXazv���3az���#� �!v�gQ�"gCmb��$�&�%v�kXb��'�(mv��)�2gQ�*gQ�+�,gQ�-gQ�.gQgQ�/�0gQ�1gQ��gQb�az�4�\�5�K�6�8az�7gCgQ�9�:v�az�;az�<az�=�D�>az�?az�@az�Aazaz�Baz�Cv�azaz�Eaz�Faz�G�Hazaz�Iaz�Jazv��L�X�M�W�Nb��OkX�PkXkX�Q�RkXkX�S�TkX�UkXkX�V�kXmazaz�Y�Z�[azgCazv��]�n�^�k�_�i�`az�ab�az�b�caz�daz�eaz�faz�gaz�hazv�azaz�jgCazaz�l�mazazkX�o�{�p�zaz�q�razaz�s�taz�uazaz�v�wazaz�x�yazv�azazv��|�~az�}v�m�gQazgQaz|����az��������azaz��az��az����az��azaz����az��az��azaz����az��azaz��az����az��az��az@azaz��az��az����azaz��az��az����azaz����az��az��az��az��az��azaz��az����az@azaz��az����azaz����azaz����azaz����az��az��azaz��az��az����azaz����azaz��az��az��az��������������������v�v���v�����v�v�����v�v�����v���v�v�����v�v�����v�v�����v���v���v���v�azv�����u�az��gQjgQaz��az����azaz����az��az��az��az��azaz����az��az��az����������azaz������az��b�azaz��azb���azaz��az��az��b�az��azaz����az��az��azb�az���A�������[���$�������azaz|��az|�az�||�	|�
|�"���
azv�azaz�az|����az�|azaz�az|��az�|��az�az�azazgQaz�az�� az�!�"azw�az�#azw�%�J�&�'az|�(�6�)|�*||�+|�,�-|�.||�/�0||�1�2||�3�4||�5@|�7�;��8az�9az�:w�az�<�@�=az�>azaz�?mt��A�Dv��Baz�Cazm�E�Gm�Fmaz�H�Iaz�az��K�Raz�L�Mazaz�Naz�O�Paz�QazazgQ�Saz�T||�U|�V|�W|�X�Y|�Z�|��\��az�]�^���_�uaz�`�a�k�b�h�c�f�d�eu��1t�az�gazv�azaz�i�jazazw�l�r�m�oaz�nb�w�p�qazjazv��sazaz�tazkX�v���w�~�x�{�yazaz�zazv�az�|az�}azw������������wazwazwu�����w��azv�az��u�az����������������azgC�wv���azkXaz��������v�azazv�gQ��wqaz����az�������1v�b�u�az������gCt�v�u�������������������az����azv���t���������az�wwqkX����jv�azv�������������jaz��az�1��az��������b�v�az��������az������jazazv�az����azazw��az��azaz��azj������������az������gCazwqaz��az����w�az�1az������������v�t�v�az����azwv�v�az����azv�az��������az����azazkXaz��az��gCaz������azaz��az����az��azaz��az��az��az����az@az������azv�azv�az��azaz��az��az����azazw���*������az|az���az�|az����az�����
��
��	�;{���{������W{���^��^�^v��^������^��u�w��^��?�"|az�az�az��#az��� ��az�"jkX�!�"v�t�v�w�$�'�%az�&azu�v�az�(az�)azu�|�+�,�4�-�0�.az�/azaz|�1az�2�3|az|az�5�<az�6�7�8az|�9az�:azaz�;�az�=�?�>azv�azaz�@|az�Baz�C�Gaz�Daz�E�Fazazm��Haz|�I�J���K�c�L�Y��M��N�O���P��Q��R��S�T��U���V��W�X���1��Z�[�_�\�^�]��k�����`�a��6�b�a����d�s�e�r�f�k�g�hB���i|L��j��k��l��m��n�o��p���q��E�k���t��u�v�x�w�6�C|L�y�6�z�6�6�{�|�6�}�6�~�6�6��6���6���6�[����������������6������������������������������������azaz����az��az��az��az��az��az��azaz��az����azaz����azaz����azaz����az��azaz��az��@az���a���#L�������N����d��d��d��d��d��d��d��d��d��dd����d��dd����dd��d����dd�Z����ty`��0�����������,b���b���������������q~q~b���q~��q~��d]y(���q~������d]��d]h4d]��������d]�pwdݙ��d]d]x�����q~���������������;�o�JtO����q��g�����������d�;��g�g����M����q~cWq~��d]������d]����d]��d]�����b�������������"���"������"�����������"��������������"��"��"����	��
������
�������������b��x���x��x��x��x��x�x���x�x��x���x�x� �x�!�x�"@�x�$���%�_�&��`��'�(���)�[�*�K�+�A�,�.M�-b�`��/�0o�d{d�1�2�?�3�>�4�7�5i��6i�HOi��8�;�9�:G�H/H�H_�<�=H�HHoG�B��e�e�@�eK�B�H�C�G�Db�M�EM�F�;MLnW�I�Jdg4b�h�L�S�M�P�N�Op�b�t�`��Q�Rg_b�nWb��T�X�U�W�Vb�~�Mb�d�Y�Zd�FMp��\�x�]�c�^�`�_b��bL�a�bp�|�Lf�d�r�e�q�fb��gdd�hd�i�jd�kd�ldd�m�nd�od�pdd�Mc��s�wd�tM�uM�v�oMq~p��y���z�}�{�|`�N`�cW�~��bg4kuL���������L�`�xv����g_g_����g_����NMd]g4����������������N��L�b�����L� aNM����������`���MgQ�nWaz������d{g4����g4��g4��g4������g4��g4��g4������c�g4c�c���c�g4��g4��g4��g4��c���c�g4c�cW`���������������MLd^McW����p�L�p�b���������d`�i�d����M��L��������iMg4d`�b���������������dNb�����kutyNaN��������j���d������Md{Mi�McW����cWNdM��������L���nW��MN����d]Mb�N����b���xvd�����I`�����b�������d$b�d$b�c�d��i����=���������������xvMN{
����b�N��������d{����d{}�d{����d{��d{}���d{d{}�������b�|nWN�b�iMM������b�db�d�	�
M`�m�M��6�
��g4��ld�d�L��L��L��L��L��L���L���+L��`���"���MMM�� �!M�MM�MM�#�$�5�%�-M�&�'MM�(M�)M�*�+M�,M��M�.M�/M�M��0�1M�M��2�3M�M��4MM�q�M�7�8b�xv�9K��:azaz�;�<azmaz�>�P�?�I�@�F�A�EM��B�C�Dg_MM��Ќq~�G�H�FL�c�b��J�M�K�Lb�j�b�nW�N�OgCb�iMM�Q�X�R�U�S�Txvdh�F�V�Wy7dd`��Y�\�Z�[b�xvMd�]�^b�dp�b��`�c�a�bxvt�dd{�d�m�ed�fg_g_�gg_�hg_�i�jg_g_�kg_�l��g_{
�n�o���p�x�q�rb�L�b��s�t{
{
�u���v{
�wak{
�y���z�{MN�|b��}���~iM���NؒcWؒ������dm�d����b���������d��e�`�u��b�e���e�i�{
c�����������������c�lb�c�d{��d{��aNiM��������iMb�b�c�b���c���b�����e���e���e���e���e�������������c�`�c�����b�c�c�M������b�b�c�����b�c�Mb���������l��l��l����ll����l��l��l��ll����l��l��l��l��l��l��ll��g&l���R���������������M�do�M������d{�b�����������bn��@���@�����b����������6���6���6�6�����6�6���6���[�6�6�ak`���������q~xvb���aN����aN��aNaN��aN۱������b�d]��d]��d]��d]��d]���e��������������������������������������W���������W���tyaz�������cW����
�c��	i��i�p��K��
cWb�L�`�L�i���b�Nb��{
�m��b��C����c�MakL��Q��;��+��$��!�� l�p�M�iM�"�#��cWc���%�(�&�'ؒi#`�t��)�*i#ؒؒ^C�,�4�-�0�.�/ؒ$$`�ؒ�1�2ؒL�3�V��K�5�8�6�7`�NM�@�9�:o�Nxvl�<�A�=�>b�d$�?d$b��@x���B�Fd$�C�D�Eb�p��b�d$�Gb��H�Ib���J�K���L�M���N�O���P��xvrf�S�b�T�[�U�X�V�Wp�b�d{xv�Y�ZMiMnWd{�\�_�]�^diMnWNM�`�aMdb��c���d�t�e�fm�b��gy7b��h�ib��jb�b��k�lb�b��mb��n�ob�b��pb��q�rb��sb�b�b��u��q~�v�w���x��y�|�z�{|�k�]|�}�~|BD|L|���������k��|�||��|j|����������|�|����|�k��|����|���||�%��e���������b��������Ae��AeB���Ae�b�����=�=�����=���=�=�����=���=�=���=�����=���=���=�=��#b���M{
����`���`�����`���`���`���`���`���`�`���`�����`���`���`���`�`�����`�`��������2`�`��2���S�����������b���d]����d]��d]��d]��d]x�d]��ak���������������(�����HB�@i@������F��NF�����F�����F���F���F�F�����F�F�����F��dF�BF�������F�F���F��d������F���F�F���F�����F���F���F�F���F����dF�F���F��db���������b��V�6��b��V���HZ����
���Z7����{
�����Z7�����\Z7{
�kZ7����zZ7��Z7{
�{
�{
�{
�{
�	{
g4�ak���
ak�akak�ak[O�ak�ak[O�ak�[Oak��3�� �{
d{���d{����d{�.d{d{}�nWd{�!�$���"���#����%iM�&�/�'�,�(�*iM�)�8iM�+iMiM@iM�-iM�.�8iMiM�0iM�1iM�2iM�8�4�Ln��5�6�?�7�;�8M�9MM�:�;M�<M�=M�>M�;M�@M�AMM�BM�C�DMq��E�Fq��Gq��Hq�q��Iq��J�Kq��q�b��Mxv�N�Od�P�C�Qi#m��Rxv�Q�T�Z�U�Wb��VM�b��X�Yi�diMc��[�^�\�]b�g4Лb��_�`��b�b�n��b�s�c���dM�eg_g_�fg_�g�hg_�ig_�jg_�kg_�l�xg_�mg_�ng_�o�pg_�qg_g_�r�sg_�tg_�ug_g_�vg_�wg_���yg_�zg_g_�{�|g_g_�}g_�~�g_g_����g_g_����g_g_�����2������������������`���ak������akak����akak��akj)��ak����ak����p�p�Y��ak��aktk�lb��x����d{iMnW��������������kunWp�b�����������l��llg	l�b�p���������xvcWb���������l����t���������g&l��ڈ��ڈlg&ku��t�ku��kut�Lb�������������`�b���b�����M��������M��M��MM��M����MM����M��M��MM��Md�M��M��M��MtO������MM����M��M��g�nW��nWd����b�Mb�t���������j*������������b�����b���b�����������������3S����3Sg;g;�Pb���b�������������b�b������p������b�b���b���������b���b���b�������b��b��b��d$�d$d$��d$�d$�	d$�
d$d$�d$@�
��b�����b���p���b���b����������������
b�c���b�M���M���)M� M�!M�"M�#M�$M�%�&MM�'�(MM�JM�*�+M�,M�-M�.MM�/M�0M�1q�M�3�l�4�j�5�i�6`��7�G�8M�9M�:�>M�;M�<M�=Mg��?�CM�@�A�BM�M˫M��DM�E�FM���	��M�H�I�V�J�Q�K�NM�L�M�oM�o�OM�PMM��RM�SM�T�UtOMtOMM�W�X�]�Y�[�ZM��tO�\MMg��^�hM�_�`M�aMM�b�cMM�d�eM�fMM�gM�4MtOt�nWM�kn�xv�m�p�n�ob�`�`�b��q�rb�nWL�b��t���uL��v���w���x���yd�zdd�{�|d�}d�~d�dd����dd��d��d��d��d����d��dd@��b���b���b�b�����b�b�����b�b�����b�b�����b���b���b���b�b���b���b�@������������������c�c�b�����b�c���c�b�����������{�$�$����*r`I+�u���������c���d{�����(��e�`�g&��e���e�i�b�c���������������b�M�b�c���b�c���������c�b�lb���b�c�L�����b���������c�����M�b���d{c�dL�c�����b���m�d{����b�lL�b�����������b�{
w��b�aNb���������c�q~c�d����akdnWak���3���������������M�X��b�aNc�����b�Ќ��d{������N����NQ�NP}����Q�Q�NW�������b�iMku������I��N���N����NN����NN��N���N�NN��Nx�NN�N�N�N�N�	�
NN��NN�
�NN;Nb�d{����b��xv���N�N�N��NW�N� n���aNb�cWM��"� �!nWcWL�M�#�-iM�$�%�8�&�8�'�*�(�)�8iM�LiM�+�,�7OiM�Fb��.�/�0��"�1���2�"��4���5�6Mp��7�_�8�X�9�N�:�ML��;�<�K��=���>�?�D�@�AnW�UnW�B�CZhZhnW�EnWnW�FnW�GnW�HnW�I�JnWZhnW���LnW`�`��O�P��j*c��Q�R�U�S�TH:b�H:^C�V�WLhx�N�Y�\�Z�[L�xvb�l�]�^d{`�b�m��`�m�a�cL�bb�M�d�e��cWd�f�g�j�h�iؒ �Q�N�k�lؒ�cNפ�n�}�o�v�pcW�q�sN�rd!T�t�uNddN�wM��x�z���ymDy��{�|�x��y����~�Mli��b���������L{}{�{�L��M�L������������kud{t�{
����b�gQc�����������fL�cW��ak��`�ak������H:�rtk��iMNQ�������������b�M{
c�������b�����g4c�N`�c�d{����������c�������������lg	g	������l�������c�l��b�b�N����d{lb������9�������������������b�xvM��M��M����M��MM��c�d����b�M�iMb���������`�b�db������,�CLb�������������M��M�c�������b�d{b�����b�kum�b��������j���iM��db�b�������������������iM��Ld����c�dd���iM����iMddM������������b�Mg4d����`�db�M����L��Md����MiMLiMd����������C��iMb�diM�d�Q�LiM��c�|xvM�����k�	�*�
������
�iMNLc���`�N`�M����LaNp�`���L�b�Ld��#����d`�xvM��"� d�!NakK�Mb��$�'�%�&L�q~Lc��(�)NL�c�b��+�S�,�A�-�;�.�:nW�/�0M�1M�2M�3M�4MM�5M�6�7M�8M�9MO�My7g_�<�=azMM�>�?nWnW�@nW��B�Oxv�C�Dc��G�E�G�F�G�G�G�H�G�I�G�J�K�G�G�L�G�M�G�N�G�V�P�R`��Qg_kuM`��T�a�U�Y�V�W`�dd�Xm�d�Z�[xvb��\�_�]cW�^cWm:cW�`{
Z7{
�b�i�c�h`��db��e�f�g`�e�Դe�b�`�b��jb�d�l���m���n�w�o�r�p�qL�b�`�b��s`��txv�ui��vi�d$i��x���yLL�z�{�~�|�}azL�liN���Q�cW.a����i�dj*d������������b�`�g4b�����L�MMd����M��Ld�������b��M��Mg�Mp�d����������������xvd{Lb�����NdNd��������liNL�b��������GaznWnWM������������LdM`�����b�M�xvb�������b�������xvxv��xv����xv����xv����xvxv����xv����d��L���L�����L�L�����L�L���L�����L�L�����L��L�l�c���������������������@&`��b������c�x�b���b��K����b�Nb�j���������g_d��aNM`���b�L�b�������������b���������N������NN����N��NNQ���N��N��N��N��NNQ�gCN��cW����Nd{b�����������db�`�d����rfNb�L�������������L�`�xvaN��M�b���b�b��b�~�b�`��	�
�
�M�w��iMkuy"���xv�����d23S����p������P�~����0��b���j*b���-��*�� iM��ku�!�"�%d�#d�$q�d�&�(�'dq�d�)ddq��+�,xvMML��.�6�/�5�0L��13�3��2�3�4x�3�3�x�dn��7�8db�nW`��:�R�;�N�<�M�=c��>p�p��?�@p��Ap�p��Bp��C�Dp��Ep��Fp��Gp�p��H�Ip��Jp��Kp��Lp�p�{�t�c��O�PA{
�QnWMg��S���T���UM�V���W���X�v�Y�t�Z�q�[���\���]�i�^xv�_xv�`xv�a�e�bxv�cxv�dxvxv��xv�f�gxv�hxvxv��xv�j�kxvxv�l�mxvxv�n�oxv�pxv��xv�r���s�����>���u��v��w�~�x�{�y���z�������|�����}��xv������������M�����������>��������������������������������������Q��Q���m�����m���m�m�����m�m�����m���m�m��������������������������������������������������������������������M�>�������������������������������������������������q�������������xv����q���dd{����b�`�b�i����>���{���E����������E�@&����A������@&��E�H:����@&@&Ez��E�@&��������AeHGE�����@&
�Ae��H AAe���#���
���'Ae�����������E��~�������'A��E���Ae������������Ba����BaBa��Ba����Ba��Ba��BaBa��Ba��Ba������Ba��������BaBa��Ba��Ba����Ba�BaBa�Ba���BaBa���E�E���E�H��	��SA��E��
E������E���������E
�az��EA�Ae��@&@&���~E�E��E��� @&A�!�"@�@&H��$A�%�3�&�'ABa�(A�)�0�*�-�+E@&�,Ae@&�.@&@&�/�@&H �1@&�2HG@&A�4�5HG@&�6�7HG�8HG�9HGHG�:�;HGHG�<HG�=HG�>HG�?HG�@HG�AHG�B�CHGHG�D@HG�FA�G�b�H�J�IE�A@&�K�PA�L�MA@&�NEz�O|�@&�Q�a�R�`�S�TAE��UA�V�\�W�Z�X�Y�AAeE���[BaAE�]�^�_Ae@&AH:ABaBaH:A�cA�d�eA�f�q�gE��h�l�i@&@&�j�kHG��E��mF��n@&�o�pH:A�H:�r�z�s�x�tA�u�w@&�vL�AeE�HG�y@&E�E��'�|���}���~��@&��Ae����Ae��Ae��Ae����Ae��Ae��Ae��Ae��AeAe��Ae����Ae��AeAe����AeAe����Ae��Ae��AeAe@A��A��@&Ez��A����@&����A������BaBa����Ba��BaBa��Ba����Ba��Ba��Ba��BaBa����Ba��BaBa��Ba����Ba��@&��E�E�ABa����Ae����������E�����@&��E@@&����@&@&EEA������AA��AH:����Ae����EA��Ae@&������AA����A��A��A��AA����AA����AA��A��A��A��A��A����A��AA��A��A���A����EA��� ������@&��������@&A���E���Ae@&������������@&��@&Ae��@&��Ae@&��������E������~Ae��Ae�'@&��@&��AeE������
��������������F�i@�VG���i@F�i@�V��G�F���VGti@�F��F�F��	F������G�F��
F�G�F����F���G�i@�V�G����i@G�F��i@�VF�H:�HG���E�E�E|�E|�A�!�"�3�#�1�$�%AeЌ�&�+�'@��(�\�M�)@��*�M@��,�/�-F�@��.@�I���0@��Ae�2azAe�4�8�5�7Ae�6Aeaz�F��9�<Ae�:|�;AeF��=Ae|gC�?��@�k�AA�B�VA�CA�D�EAA�F�GAA�HA�I�JA�KAA�L�MA�NA�OAA�P�QAA�RA�SA�T�UA�AA�WA�XA�Y�Z�aA�[�\AA�]A�^A�_A�`�AA�b�cAA�dA�eA�f�g�iA�hA��jA�A�l���m���nA�o���p�u@&�qF��rE��s@&�t��H�A�v�w���x���y��Ae�z�{Ae�|AeAe�}�~AeAe���AeAe����Ae��Ae��Ae��AeAe�EzH ���|�@&@&����E�AE���H ������@&������HGH:��@&�A���'�����H ����@&BaA���������'@&����@&����HGEz����|�@&E������F���F���F���F�F�����F���F���F�E���A����@&E��H�H:������EE�������'���������Ae@��E���H:s�H:������F�F���F�����F���F���F�F���F�����F���F�F�i@@����AA@&�������������������������������������������@&������A��A������E�������|���AeE���������A��AeAeEAeE������A���~����������@&�@&�����������@&@&������@&�*�*����F�A�'A����AA������@&HG��E�Ae��H E@&�g��#���A�A�A�	A�
A�A�AA�
�A�A�A�A�A�AA��A�AA�A��A{A�� A��A@&�A�E�@&A�!�"@&H A�$�fA�%�&�9�'A�(AA�)A�*A�+A�,A�-A�.A�/�0AA�1�2A�3A�4A�5A�6A�7AA�8��A�:�;@&E��<�WAe�=�>A�?�P�@�K�A�B�F�F��C�D�IF��E�FF��GF�G��HG�F��JGtAGt�L�NE��M�F�Ez�OH:@&�Q�T�RF��SF�GtF�F��UF��VGtF�A�X�Y�`�ZF��[Ba�\�^�]AEA�_EAE��a@&�bAe�c�d�eAH:A��gH A�h�i@&@&�j@&�k�l�q@&�m�nA�oHGE�pE@&�rH �sA�t�w�u�vAeEzF�Ae�x�yAeEH:A�{���|���}���~�j��,��������������A��A��A��A��A��A��A��AA����A��A��A������A��AA����AA����A@A��A��A��AA��A����A@AA��A��A��A��A����AA��A��A������A��A���A�A��A������A��A��AA����AA��A��A������A��A���A��AA��������������������A�A��A��A��A����AA��A����AA��A����A��AA����AA����A��AA��A��������A����A@&��������������E���H���E��6E���A��AAC�A�������������������������E�����E������������H�H �HGH ����@&�H ���@&F����A������H E����E�����A���E�@&��@&�E��	���������Ae���
H���
�Ae��Ae���Ae��EA��A�AH:�A�A��&�H:H:�H:�H:�H:�H:��H:H:�H:�� H:�!H:H:�"H:�#�$H:H:�%H:��'�*�(H E��)H E�+E�BaH:�-�S�.E��/E��0�5A�1�2�A�3E��4E�E�6�H�7@&�8�9@&E��:�C�;@&�<�A��=�>H:�?H:�@H:NH:@&�BA@&�D@&�E�FH�@&Ez�GE�@&�IBa�JAe�K�L@&E��ME��N�O@&E��P�Q�@&Ae�RF�E�TA�U�^�VHGA�W�X�\�YH�E�ZE�[E�HGHG�]HGF��_E�HG�`�a�iE��b�cAe�d�gE��e�fH Ae���hH:H:H�E���k���l���m���n�A�o�pAA�q�r�t�sH:E�F���u�v�z��wF��x��yAeEzA�{�|�~E�}AeEz�<F���������A��AHG��������������������Ae������EH:Ae������������SH���@&��@&�������Ae@HG��@&����MMtO��������E���Ae@&���EH ������H ��F���F�F�����F���F���F���F�F���F�����F�H:��������A���Ba@&H�����EzH���H�����H�H���H�����H�H�����H�H�����H�H�����H���H�H���H���A������H:���������#��������������az��������azv�az��az��az��azaz����az��az��azazv�������azaz��az��az��az��azv���az��az����az������v�azv�azaz����azv�az���az��������������az��az��azv�az��az��v�az��az������azaz��az��az��v�azaz��v�azaz�������az��azazv��az�azv�az����az�az�azv�az�	�
azazv��az�
��azaz�az�azv�az��azaz��az�azaz�v�azaz�m�azm�ww��w�w� w�!w�"wwaz�$�t�%�R�&�=�'�2�(m�)mm�*�+mm�,�-mm�.m�/�0�1mt�t�m�3m�4m�5�9m�6�7m�8mt�mm�:�;mm�<mt��>�C�?m�@mm�Am�Bt�mm�D�E�M�Fm�Gm�Hm�Im�Jmm�Km�Lmt��Nmm�Om�Pm�Qt�m�S�bm�T�Um�Vm�W�[m�Xm�Ym�Zmv�m�\m�]m�^m�_m�`�ammv��c�m�dm�em�fm�gmm�h�im�jm�kmw�lwm�nm�om�pm�qwm�rm�smt��u���v�~�wmm�xm�ym�z�{m�|m�}mwm�m��mm��m��m����mmt�m��m��m��v�mE�������E���Ae@&������F�F���GtG�Ae��|�H:��AE�����������E������E��wv�lxF�����azE����EdE��gQb���������azEaz��Ed��az��EzAeF�����@&��@&A����A����A��Ba����������H�Ae@&������A������E�AeH:����AeEzF�@&E�����@&��@@&A����A��A��A��E��������H:���A@&��AE�����H ����E�HGAe����@&Ae��E�H���A��A��AA��A����A��A��A��AA����A��AA����AA��A��A��A��A����AA��@A���
��H�������A��AA����E���E�@&��E���A��A����|���@&��@&@&����@&@&����@&��@&��@&@&��@&��@&@&��@&�@&�@&�@&�@&@&�@&�	�@&�����h�
�D��/�A�E�@&�E���#������EH���H�������������� �!H�@&�"�H ��$�(��%�&�'A�F��'�)�,�*��+E�Ez�-�.A�azH:�0�BH �1�2@&�3�8�4�5Ae@&�6�7F�@&�'@&�9�<�:E��;HG����=Ae�>�?��A�@��AF��;F�E��CE��~�EAA�FA�G�H�OiM�IiM�J�KiMiM�L�MiMiM�NsiML�P�Q�]�'�R�S�X�T�V�'�U�'���W�����'�Y�[�'�Z�'���'�\����^�b�_�'�`��'�a�'���c�'�d�f�'�e�'���'�g�'���i���j�o�kEz�lA�mA@&�nH:A�pA�q���r��A�s�t���u���v��K��w�x���y�z��{��|��}���~�������Ae��HGH E���Ae�������AeA@&���H:@&�������AeHGAA@&��AE�AA��A��AH:���5�������U���<�������������������������������������������������������������������@&��@&��@&��H ����� ����A��A��A����A��AC�����AC�AE���E����������������F���F����F�����F�G�F�����F�����������������F�F������F��F���F�G�����������F�F���F���F�G�F���G�F�����������G�G�����G�G���F�G�����F�����G�G���F���G�F�F�������G���F���G�F�G�F����
����������G�F���G�F�������������F��������G��������G���G�F�����F�G�G�F�F��F���F��F���	G�F�F�G�G�����
�����G�F��G��F�G�F��F�G�F��F����F�G�F�F��G�F���E�EwH �EH:�!�(�"E��#�%E��$H E��&Ae�'�AeE�)�0�*�+�E��,�.�-@&AAe�/E�Ae@&E�1�2�:�3�9�4�7Ae�5Ae�6AeB��8AeAe���@&E�;�E�=�QH �>H �?H �@�AH H �BH �CH �D�EH �FH H �GH �HH �I�JH �KH H �L�MH �NH �OH H �PH @�R�T@&�SE�AazA�V�r�WA�X�m�Y�fA�Z�[A�\AA�]�^�aA�_�`�AN�b�d�c�N��eA�A�gE�A�h@&�i�j�l@&�k@&��EAe�nAe�oAe�p�qE�A�s��A�tA�u�v�y�wBaE��xE�HG�z���{E��|A�}�A�~�E���@&���������@&A��E���E�����E���E�AvE���E�AeA���������AC�AA��A��A��F�A���
��@&��@&������������Ba��������E���������@&���F�@&��E���Ae��������az��az����azaz����azaz����az��az��az��azazmaz��������azaz����az��azaz����azaz��az��maz��az��azaz��az��az��az����az��azmaz��azaz����az��azaz����az��azaz����az��azaz��azm�Ba����AEz��A����������@&����E��E@&��@&���H:���@&@&����������A��A|�����H A����H ����������E������@&E���������AF�A�Ae���v�A����E�������Ae��AeAe���AeF�HG��E@&����
_���
��H:@&������A�A�A�A�A�A�	�A��@&��AeE�A�A�E�@&�A���%Ae���HGH @&���$@&���'�'��'��'��'��'��'� �'�!�"�'�'�#�$�'�A�&E�E��'�(��)�H:�*�+H:H:�,H:�-�.H:H:�/H:�0�1H:H:�2H:�3H:�4H:���6�"�7�}�8�IE��9E��:A�;A�<�=�@�>@&�?H @&F��A�G@&�B�CE��D�F�EAA�@&AeBa�H@&F��JA�K�LA@&�MA�N�_E��OE��P�QE��RE�E��S�TE�E��UE��VE��WE��X�YE�E��Z�[E��\E�E��]E��^@E��`H �a�n�b�jAe�c�d�gE�eE�fEaz�h�iELAH:�k�l�'H @&�mH HGF��o�pF��qF��rF��sF�F��tF��uF��vF��wF��xF��yF��zF��{�|F��F��~�����������������Ae@&F�Ba����E�������Ae����E�AE����E������@&����@&E��E���Ae��AeAe����AeAe����Ae��Ae��AeAe��Ae����AeAe��Ae��Ae����Ae@Ae��H���H�H���H�����H���H�H�����H���H�H�����H�H�����H���H�H���H���H���H���H�@����H ��������������A�������������E��������EE�H�@&AHG����HG���@&��A��E���H ��@&��������EzAeAe��AeB�����Ae��B���B���B�Ae��B�E�Ba��E���E�E�����E�E�����E���E�E�����E�E�����E���E�E���E���E���E���E���E���E�Av���
����EAA����E��E��E��EE��E��E���������ٰE��E����E����E���OE��E���OE������E����EE
��E�E�
��	EE�

�E�E�OEE�A����@&�@&����AeA�@&�EliL�E��H:��E����@&��@&�� ��!�@&�#���$�0�%�'�&E�AeEz�(A�)AE��*�+HG�,HG@&�-Ae�.Ez�/F�H��1�k�2A�3�7�4@&�5E�E��6H:E�8�?Ez�9@&�:�;H @&�<�=�>H�AeE�@&�@�H�A�CAe�BA��D@&�E@&�F@&�GEK�E�I@&�J�`�K�S�L�P�M��N��O���4�Q�R��������T�\�U�Y�V�WF��.�XF��.F��ZF��[�.F��.�]��^����_�'���a�g�bF��c�d�'��'�e�f�'�'����h��i��j�'��l���mA@&�n�o@&�p��q���r���s���t���u�z�9�v�wH:H:�x�y�,H:�,H:�{�|�,�}H:H:�~H:�H:�,��H:��H:�,����H:�,H:Ae����Ae|�H:E����BaE�������EAe@&�����E�������'���'Ae��Ae������EA����������E�E���Ez����EHG����@&��E����6@&��AA��AE���-�����������#������A������A��A��A��@&�������'�����AAeA��Ez������������������F�F�����F�GtF�F�Gt��F�G����F���F���F���F�GF�������������Gt�;��Gt��F�����F�GtGtF�G�F������G�F�����F���F���F�F���F�����F�F���G�F�������������F�GtGt����F���F�F�����F�i@F���F���F�F�����F���F���F�F�����F�F�����F���F���F��F�A����F���A��F����@&��������F���E��������AH:���F��HG�E��A����az�az�az�	az�
az�az�az�
az�az�azgCazH �@&�����
���
�E���Oٰ2�ٰ�AA��H �'��� �@&A@&�!Ba�"A���$���%�a�&�`�'�M@&�(�)�LA�*�+�3E�,Ae�-�.�2�/H:�0�1�IKN�BGtE�4�I�5�6�~��7�B�9�8�9�9�9�:�9�;�<�9�=�9�>�9�?�9�@�9�9�AH:�9�CH:H:�D�EH:�FH:H:�G�HH:H:��J�KAe@��HGE�@&�N�^�OA�P�R�QE
_E��S�X�T�V�UBaH�A��WAH:�Y�[��Z�~@&�\�]�E�E��_�'A@&EA�b�e@&�c�dF�E�A�f���g�qF��hF��i�j�l�kE�H A@&�m���n�o�pAHGH:Ba�r@&�s�yAe�t�u�'�vAH:�w�x��Ae��z�~�{�|��@&��}�A���@&���E��~E�����������������������*������@&����H:@&H:@&����@&��H:@&@&��H:@&��@&�*@&��H:��H:�,����H:��H:s�H:����������@&��@&����H:��H:@&��@&@&H:@&��@&H:H:��H:��H:@&HG����E���E���@&@&AH�����E�A��A����EH���H ��@&��@&AeA���������b����������AA������������A��AF�����@&H�����E���E���E�E�Av��������E��Ba��H:��EzH:��������azAH:�A��Ae���@&������������������������������A��Ez����F����������@&Ae��E�'��H:A@&A��A������A����@&E�E����������������CAe��EEAee�@&����E�d�����AA�����
��������������C�AC�A�����Ae��H:��
��	�g�'E�E��@BaazE�������g4�߫�R߫EzE��H:�@����H:E����gH:�L�A��B� �1�!�)�"�&�#��$��%H:s�H:�'�(|��F���*�,��+���-��.H:
��/�0
��`2��2�;�3�6�4�5�'@&��F��7�:�8�'�9AeAe�5�@&�<�?�=�>azH:lxHG�@�ABaH:@&Ba�C�T�D�M�E�H�F�GAe����'�IEE�J�K�LazEazE�N�Q�O�P���'M����R�SH:�Ae�g�U�\�V�Y�W�X���EF��Z�[H:�AeE�]�_�^�HGAe�`�a��Ez��c��A�d�e��f�u�g�n�h�iE�H��j�l�kH Ae��mH:���oAe|��pA�qE�r�saz��t�@�vA�wA�x�{Ae�y�z�Ae@&�|��}�~�'H:H:A��A��A������AH ��@&|�����A@&F���|����F���F���F���F�F���F�����F���F�F���F���F��A@&A��������A��AAe��H ��H ��H ��H ��H ��H ����H H ����H ��H H ��H ��H ����H ��H H @����A��Ae������AeA������H:����������H:��F�F�����F�A��������A@&��@&������A��AAeE�������x���9����H�A���&���E������������������H:���@&������F���������F�GtG�Gt�����Hi@�;F�������F�GtF�F�����F�GtF�����H:��Ae@&����������������H:F�H:EzH:��H:F���H:��H:M�H:����H:������H:���H:��H:H:��H:az@&��@&�����'����H:����������Ae~B�Ae��B�
�����Ae�Ae�AeAe�Ae�Ae��AeAeB��H �H �	H �
H �H �H �
H �H �H �H �H �H �H �H �H �nH �A�A��%�� ��Ae�'���b��H:F�H:�!�#�"E�Ae@&@&�$|�
_F�E�A�'�(AA�)�*AA�+A�,A�-A�.�/A�0A�1AA�2�3A�4A�5A�6AA�7�8A@A�:�>A�;A�<A�=@&Ba�?�m�@�CA�AA�B�A�D�\E��E�F�V�G�K@&�H�IA@&�J�'��LE��ME��NE��OE��PE�E��QE��RE��SE��TE��U�{E��WE��X�[Ae�Y��ZEz��AeA��]@&�^E��_�`�i�a@&�b�e�g�c�g�d�gN�f�gM���hwv��wAe�jE�k���l��Ae�nA�o�pH A�qAA�r�s�u�tF�E�@&HG�v@&�w�Ae�y���z��A�{�|AA�}�~A�A@&��A��Ae�A��A����AA��������A��AA��A����AA��A����A��A��A��A��AA��A��A@��A��A��AA����A��AA��A����A��AA����A��AA��A@��������E��A�����������'�����Ae����@&�@&@&��������������A����A���������A��cH ����E����HG���~��H�����AH:��@&@&�������A��F�@&������@&������AeA�����������s�H:H:�9�����HG�gE@&E�A����A���������A��A��������F�Ae��|�������AeAe
�������!9Ae����Ae��AeAe����AeAe����Ae��Ae
�Ae������Ae@&��EH:A��A��������BaA��~����������F�������
�F�i@
���Ae~�E�H�AA��E��E�E�E�E�	�
E�E�EE�
�EE�E��E�EE��E�EE�E��E�EE�E��E�EE��EE� E�!E�"�#EE�$E�%E�&�'E�(E�)E�*E�+E�,E@E�.��/���0�]�1E�@&�2@&�3�4AA�5�6�Z�7�C�8�<A�9�:A�;AAH:A�=�>AA�?�@�B�As��*!�s���DA�E�V�F�J�GAA�H�IAF�A�KH:H:�L�MH:H:�N�OH:H:�P�QH:H:�R�SH:H:�TH:�Us�H:A�W�X�YH:@@A@&�[@&�\H�@&�^���_�k�`A�aH�A�bA�c�d�gAe�e@&�f@&AE��h�iM�j���|��l�t�m�sA�n�o@&�p���q@&��rAe@&A@&�u���v�}�wA�xA�yA�zA�{�|EHG��Ae���~E�����������E��~E@&����A�E��E��������������������H H:�Ez��������E��Ae������AH�H:��@&A@&@&������������H:@&�Y������AEA����AF�Ae@&E����'��H:���@&@&��@&��������H�������F�F�����F�F���G�F�����F���F�����F���F���F���F�F�����F���F�F�����F�GtF�F�����F�F�����G�F�����F���F���F���F���F�F���G�F����������'��Ae@&����E�����E���E�AvE���AeF�K�Ez������H:��������EzEz����Ez��H:EzH:A��A��A��A��Ae����E�AAe���w����������E�A�������Ae��Ae����E��F�H:��H:��H:��H:�������H:H:����H:��H:H:����H:�����H:��H:H:����H:H:�H:�9�H:H:�,>H:�H:H:��H:H:��	H:H:�
�H:H:��
H:�H:�H:�@&A����H �@&�@&��@&@&���E�Ae���0��/�H H �H �� H H �!�"H �#H H �$�%H H �&�'H H �(�)H H �*�+H �,H �-H �.H ��H H Ba�1�8�2A�3�4E�@&A�5��6��7���9�R�:A�;E�<A�=�L�>AA�?A�@�AA�B�CC�A�DA�EAA�FA�GA�H�IA�JA�KAAC��MA�NAA�O�PAA�QA��S�U�TF�A�A�V�W�f�X�b�YH:�Z�^A�[A�\�]H:AH:�_H:�`A�aAADN�cH:A�d�eH:AH:�g�iA�hH:A�j�rA�k�l�o�mH:�nH:AH:A�pH:�qH:A�sA�tH:�uH:�vH:AH:�x��y���z���{A�|��A�}�~A�������A����������s����s�s�������s�H:��H:s�H:��A������N*s��9��A�������������*s�s���s�N*����,>s�s���H:��������s����s�s�������s���H:s�H:��AA��A��A����������As����s�,>A�����9s�N*��AF�A��E�Ae��A��������������������F���F�����G����F����F����F�����G�F���F�����������F�����������F���F�������F���F���F���F���F�F���F���F�i@��������F���F���F���F���F�G���F���������F�G�F�G���F�F���G�F�F�����F�������G�F�G���F�G�F���F�F���F��������F�F���GtF�������GtF��
�����F�F���F�G�������F�����F��F�������F�F��F��F���A�F�F��F�������
A�A�	AH ��H E�@&�
@&A�A�A@&�A@&��������;�����!�AA��A�A�� A���HG��Ae��Y�"�{�#�r�$�S�%�7�&�,�'Gt�(Gt�)@��*@��+@�Gt@��-Gt�.�6�/F��0F��1F��2F��3F��4F��5F�KF�I�F��8�>�9F��:�M�;I��<I��=I�F�I�F��?�@�N�A�C�BI�F�I��DGtGt�E�FGt�GGtGt�HGt�IGt�JGt�K�LGt�MGtGtF�Gt�O�P�RF��Q�\F�F�Gt�T�U�,H:�VH:�W�h�X�\�YH:H:�ZH:�[�,H:�]H:�^H:H:�_H:�`H:�aH:�bH:�cH:�d�eH:�fH:�gH:H:�,H:�iH:�j�kH:H:�lH:�m�nH:H:�oH:�p�qH:�,H:�s�zA�t�u@&�v�wAe@�x�y@&��@&Ae��|���}���~���������Aec�`�az����azAe��AeAe����������n���AeEzGtaz��LazAe������������Ae��AeBaF���Ae|�������Gt�����\�H�VGtF�Gt��������Ae��Ae|�F���Ae�'az��u���AeF�H ������������@&������|���Ae��Ae����Ae�Ae
nAe@&��H ��H������A@&���@������A����A��������E�E�AeAeH���A������E�Ae��AeE��������H�����@&��@&H���AA��A@&����@&��@&����A��A@&��@&����@&��@&@&��@&����@&��@&@&����@&@&����@&��@&�@&�����������C���C���N��N��N��C�N��������C��B��C���C��BC�C������C��B��A��A��AA��A��A����AA����A��A��AA��A��A����AAN������'���H ��@&�AE�@&Ba�	�
�0@&��H �
����EE�O��E���E�E�EE�E��E�E�E��E��&�EE��2�2�� 2��!2��"�#2�2��$2��%
�2�E�'�(E�)EE�*E�+�,EE�-�.E�/EE��A�1�2�3AeF�E��4�5�8�6�7E������9�:��E��XE��<�fA�=�>�V�?�F�@A�AAA�B�C�DA��EEz�6Ae�GE�H�Q�IBaA�J�K�N�L�MAe2��M�O�PEzAeEH:�R�U�SE�A�TH:EF�AA�WBa�X�Y@&@&�Z�[�]@&�\H:�@&�^�_�bAe�`�aAe��Ae�c�d��Ae�e��Ae��A�g�h�r�i�k�jAF�E�A�l�mAE��n�oBa�p�q@&H:�g@&A�sA�t�u�~�v�|�wA�x@&�y@�z@HG�{HG@Ba�}H:@&�����@&�'@&��E���Ae@&Ae��������E�����������@&���'F�F�������F�E�E�������F�A@&H ��ABa����H Ae��AeE�������A����A������F�����F�F�����F���F���F���F���F�F�����F���F�F�����F�F���i@F�����Gt����GtGt��Gt����Gt��Gt��GtGt��Gt����Gt��Gt��Gt��Gt�GtF���Gt����GtGt��Gt��Gt��Gt��Gt����Gt��GtGt��Gt��Gt��F�Gt��@&������E��E���@&Ae@&������@&H���Ae@&����@&A����|�A����HG��HGHG��HG����HGHG��HG��HG��HG��HG��HG��HG����HGHG��HG��HG��HG��q�HG��AA��@&��A����HG����Ez����������@&Ez�EzBa���R���A�����'A�������E�������Ae���E��@&Ae��@&E�A@&�E�EA�A�	�?�
A�A���'�
������EA��@���'@BaBa�Ae�Ba@�H ���Ez�'�A��:�Ae��4� �(�!�$�"�#�XE������%E��X�&E��'�XE��)�0�*�-���+E��,��E����.E��/��E��s�1�s�2E��3�sE��5E��6E��7E��s�8E��9�sE�Ae�;�<�>�=@&EF�@&A�@@&�A@&�B@&�C@&�D@&�E@&�F@&�G@&�H@&�I@&@&�J�K@&�L@&�M@&�N@&�O@&�P@&�Q@&@&NwE��S�T���U���V@&�WE�XAe�Y�����Z���[�\�q�]�d3�^�_�b�`�a3H:H:3�c3H:3�e�n�f�i3�g�h3H:3�j�m3�k3�l3H:H:3�o3�p33H:�r�|�s�v3�t3�u3H:�w�y3�x3H:�z�{3H:H:33�}3�~�3H:3��@&��@&��Ae����A��F�������������������E��H:�S�������S@&A������E��@&��E��H:@&����@&��@&H:A����A��A��������Ae@&Ae�����A���az����������E�H:�����Ae��Ae��AeAeB�E���A���o���1������@������A����������Ae����AeAe����AeAe����Ae��AeAe��Ae����Ae��Ae��Ae��AeAe����Ae��AeAe��Ae@Ae����Ae��AeAe��Ae����AeAe��Ae��Ae����AeAe����AeAe����AeAe��Ae��Ae��@AeA�����HG������AeHG������@&E���@&��������������EE��E
�����������������������EE
���E��E��Eٰ�������� � ����� � �
��� � ��� ��� �
wEٰE�O�EE�E
��Ae�EA�A��A��
A�	�
A�A�AC�A�A�AAC�A��E�AA��@&���E���F�Ez�@&E��@&��H��H ��*A� �!A�"@&�#E��$A�%�'�&A@&HG�(H�@&�)H�EA�+�,�>�-A�.�7�/�4�0Ae�1�3�2@&AeAE@&�5H:Ae�6AeE�8@&HG�9�:�~�;�=�<E�H:����?AA@&�A��B���CAeA�D�E���F�P�G�O�H�N�IE��J�M�K�L��@&A|�H:��A@&A@&�QEz�R���S���T�UE���V���W���X�m�Y�a�Z�\Ae�[B�Ae�]AeAe�^Ae�_B��`B�Ae�bAe�c�k�d�j�eAe�fAe�gAe�hAe�iAe~AeAeB��lB�AeB��n�z�o�u�pB��qAe�r�t�sB�B�Ae
�Ae�v!9!9�w!9�x�y!9B�!9�{���|Ae�}�~AeB��Ae��Ae��Ae��Ae��AeAe!9��Ae������B�Ae��B�Ae��AeB�Ae��������������������w�����w�B�����AeAe��B�Ae��Ae��Ae��AeB�����B�����Ae������N�����AeAe����Ae������Ae����
�������
�B�
���w�
���
���
�B�
���Ae��Ae��w���AeB�Ae������������������w�����~��B�~B�~w�����~~����~B�~��Ae��Ae�����Ae��B�Ae���Ae��Ae��Ae������������B����Ae��Ae������Ae��Ae��Ae��Ae��Ae�����5���5Ae��Ae�Ae��Ae��Ae��Ae��Ae��AeAe���Ae��EH�Ez@&��H:��H:����H:��H:���FH:�FEz��E���@&����E�AE�������������������������������������������������������� k��AA�A��	AA�
A��AA�
A�A��A�AA��A�A�A�AA�A��A�AAN��������6�A� �-�!�,�"@&�#�*�$E��%E��&�(�'AAeA@&�)@&@�+@&HGE�AF�A�.�/A�0AA�1A�2�3AA�4A�5A��7�JA�8A�9Ae�:�;A�<AA�=�>�F�?�D�@�C�'�AE�B���@A�EEH:EE�G�H�IEH:Aeaz�K���L�lA�M�NA�O�`�PE��Q�^�RE��SAE�TE�U�VE�WE�XEE�Y�ZE�[E�\E�]EE ��_@&�@&�a�i�b�d��cH @&�eH @&�f�gH��h@@��jE�Ae�kAeF��m�u�nE���o�p�r�qA��'�sA�tAAeF��v�HG�w�xE�Ae�y�z�|�{H:H:��A�}���~A�����AE�E�
_��AA������A����HG������A@&A����AE@&���������A����A��A��A����AN�AA��A��A������A��NA��ANA��A��A��AA��A����A�A������������E�A����A��������E���E���E�E���E���E�����E���E�E�����E�E�����E�E���E���E���E��<Ae��A��@&����@&����E�A��������������'azAe����az��gCH:��AeAeA������������AeH:Ae�\���KAeGt��az��azAe�������@&����HG����@&������A��E���������@&������F�F���F���F�����F�F���g@&����A@&����������az�Ae����AeH:�6���E�E�A���@&��@&��@&��@&��@&����@&@&����@&@&��@&��@&�EEz�E��E�����E�HG��az���	��
��gA�gAe�
�ak�g�gaz��g��g�$3��g��y���E��AeH:E����*�AeA��A�H:�A��$� E�Ae�!Ae�"E�#E�@&�%�&�)�'�(A@&Ae@AeF�A�+E�,A�-E��.�/A�0E�E�H �2���3��4���5���6@&�7�?�8A�9HG�:@&�;A�<A�=E��>EzBaE��@���A�y�B�s�C�o�D�c�E�_�F�[A�GA�H�I�RA�J�KC��LC��MC��NC��OC��PC��QC�AC��SC��TC��UC��VC��WC��XC��YC��ZC�AC��\A�]��^�C����`�a�bA
QA
Q�d��e�h�f�gA
QA
Q�i�kC��jAC��l��m�nC�AAC��pA�q�r�\��d@�A�tA�uA�v�wAC��xC�A�z���{�~H:�|�}H:s�H:���������������A��A����A����G�����������������A��A��A��GtGt����F���F���F�F���F�����F���F�F�Gt����������AAGtA��A�����GtG������A��A�������G�����A��������GtF���F�����F�F���F���F����������8�������.��8��AF�A��AEE���������HG����A������AE�Ae��������HG@&Ae��@&�@&��A��E������@&��@&��@�'�@&��@&��@&��@&��@&��@&����@&@&����@&��@&��@&��@&@&��@&�A�������Ae����A������E��������E��EE��������E�E��E�E��EE����E��E����
�EE
���E�H ��Ae�������@&Ae��AeE������E�������H ��E�Ae@&�@&�@&����A�AeE��
������	��@&A��
�Ae�Ae���Ae�@H���b�b��b��b����b��H A�H �H A��������:�A� @&�!@&�"�/�#E��$�&�%E�@&��'�)E��(H Ae�*�.�+H:�,As��-s�H:@&A�0�4H��1�'�2��3�Ez�5�6Ae@&�7�9��8E�Ae@&E��;�c�<�D�=H �>@&�?A�@HG�AH �B�C��EBa�EAeAe�F�G�I�HM��MM�J�K�b�LM�M�Y�N�U�O�R�P�Q��M��M�S�����T��M���V�W�����XM���Z�^���[�\�]M����M�_���`�a��MM��M���dA�eBa�fE��g�l�h�k@&�i@&�j�@&@&E��mA�n���o�|�p�r�q@&@&�*�s�x�t@&�u@&@&�v@&�w@&Nj�y@&�z@&�{@&@&��}@&�~���@&@&��������@&@&��@&����@&��@&@&���@&��@&��@&@&�@&��@&��@&��@&����@&�*@&��@&����@&����@&��@&��@&��@&@&����@&@&����@&@&���@&��@&��@&��@&��@&��@&��@&�@&������E����E��E��E��E����E��EE��E��E����EE��E����EE��E����EE��@EE��E����E��E��E��EE��E��E����EE��E��E��E����EE����EE@E��EA�����@&����A��@&��A����E�AeE���A�������������A�������EAe����@&A�Ae��������������@&@&H:�H Ae��@&��@&����@&@&��@&��@&����@&@&��@&��@&����@&@&����@&Nw@&��H ��Ae�������6@&H���A���H:����H:H:O�,H:�E��E����E�Ae@&Ae@&A�A�	�
���@&�@&�
��������A�H:�H:�H:�H:�H:�H:�H:�H:�H:H:�N7H:�A@&���F�� �=�!�5�"��#�%��$���&�/��'��(��)��*��+�,���-�.����0��1���2�3��4���*�6��7��8���9��:��;��<�@&�>�Y�?�J��@�A���B�C���D��E�F��G��H���I@&��K���L�M��N�R��O�P��Q�����S��T�U���V�W��X����Z�h�[�]�\����^�g��_�`��a���b��c�d���e�f���*���i�r�j���k��l��m�nN��o��p��q�N����s�t���u���v�w�|��x�y��z��{����}��~�������������������������������@&������E�����Ae����F���azazm�������������1u�Ae��H ��|���E�E������E�H ������������������������������������������������������Rb���������6���6���6���6���6���6���6���6���6Rb�6�6Rb�������6���6�6���6���������6���6���6���6���6���6���6���6Rb�6���6��@&�����Ez��H A��E@&����������=��H���A��A��������������@&��H E��AH @&H:����������d��d����d��d����dd��d�Qd��d��d��d���Qd��d��dd��d����d��dd����dd����dd��d����d��d�Qd���)������d��d��dd��d�Q���d�����Q��Q�Q���Qd�Q��Q�Q��	�Q�
�Qd�Q���
�Q�Q����Q���Q��Qd�Q��Q�Q��Q��Qd���d�d�d�Qd�Q���%��"� �Q�!�Qd�Q�#�Q�Q�$d�Q�&�Q�'�Q�Q�(d�Q�*�-�+d�,�Qd�Qd�.�/�7�0�Q�1�4�2�Q�Q�3d�Q�5�Q�6�Q�Qd�8�Q�Q�9�:�Q�;�Q�<�Qd�QE��>�?�m�@A�A�f@&�B�C�D�F�A�EA�F�G�WA�HA�I�J�KAC��LC��M�S�NA�O�QC��PC�AA�RC�A�TC��UC�A�VAC��XA�Y�d�Z�[C�AC��\�]C�C��^C��_C��`�aC��bC��cC�C�A�eC�C�A�g�l�h�j�i�@&H �k@&AeAAeH �n�}A�o�pAA�qA�r�sA�tH:�u�y�v�x��wOs��9�z�|s��{H:�F�9�*A�~AEA����A��������A������A��������E�Ae@&E�@&��AH E�������A��������AAe����AeE�@&����F�������Ae����EzF�EzM���F�����azAeMF�Ae��A��@&��Ae��@&H:@&��������E�����������E��E�E�����������������Ae��~AeF�H:����E@&���'A���HG���AeH:������E�A����@&������A@&E����E@&�|�H E�����������AA����E���A��A��E������AeH:��E���Ez��AF�HGA����A��A��A��A��@&��������E��@&���A������AHG
�����H:@&Ae�������������H ��A��@&��E�A������H:��E������E��@&Ae��Ae������Ae�6Ae�6H A��@&AeE��������@&��E���@&����AE���AH ��AeA�Ba���	�@&ABa�
EH:@&���
E�E�A��`��H E��=��+�����E����@&��H:���(��'��Ez�Ez�� Ez�!EzEz�"�#Ez�$Ez�%Ez�&Ez��EzAeH:�)�*HG@��Ba�,�3�-�0�.�/�@Ez��1�2F�Aeaz�'�4�:�5�6�H:M�7�8�9tOMM���;�<H:@@E�>�Q�?�J�@�E�A�B��HG�CH �D��E�F�G�Ae�HE�Iazv�az�K�N�L�ME@&H:E��O�P��@EAe�R�Z�S�V�T�UAe���E�W�Y���Xd�H:��[�^�\�]H:���E�_�A��a�f�bE�@&�cE��d�eAeAH:�g�h��H:@&�i�j�l�kAe@&��m�nHG@&@&E�p���q���r��s���t���u���v��E��w�x�yEE��zE�{���|AH �}�~���i@��������GtG�GGt�����H�6�VB��F��������G��HG��������H ����AH Ez��������A��@&��AeHG��AA����AA��NA@&����������E���E�AA��H �'EA��E�@&����������������������@&����@&@&��@&����@&�E@&@&��@&AA��A��Ba�����AE@&��@&�~A�@&��E�������A@&Ae@&����������A��AA����AA������F�����E��E��@&@&E���A��@&����E�����F���F�I�hEz��HG@&���@&��HG�������������������������AAe|����SE������s�H:�����s���s���s���s���s�s���s���s�H:����@&A|�@&��������H:���9����H:���9��H:H:��H:����9H:��H:���G���9�,�����9�9��9H:H @&�@&����'����Ba�F��	�
F��F��F��
F�F���F��F�F��F�G�Ba|��Ae��H A��@&@&E�A���Ba�BaEEA��q� �g�!�6�"�5A�#�$AA�%�&AA�'�(A�)AA�*�+AA�,�-AA�.A�/A�0�1A�2A�3A�4AA@E�@&�7�I�8�=@&�9�:�<�;@&E�@&@&AAe�>�?AAe�@�A@&�B�H�C@&H �D�EEz�F�GEAAe���@&�J�S�K�NA�L�ME��E@&�O@&�PH �QF��R��E�T�^�U�\�V�X���W��GtGt�Y�Z�[F�G�G���]BaH����_@&�`�e�a�6�bHGH��cAe�dAeE��fH:Ez�hAeA�iAe�jA�kA�lA�m�n�p�o��BA���r���s���tA�u�|A�vE��w��x�y�{�zE�Ez@&��E��}��A�~�����F�E���E�Ez����E�����E�E���H ��H |�@&����A����E���HG��H:��E�EzH ��H @&A����������������@&A��A���@&A��E���F�A����H:@&������@&AeF�@&��@&E������A��AA����H:��|���@&����ME��@&��E�AAe���/���)����������@&@&������@&HG@&��AeE�����E��E����E��E��E��E��E��E��E��E�O���O�����O�O�����O���O���O���OE�OBa��@&��@&��������@&���������������������������E�A������A��AA��A����A��A��AA����A��AA����A��A��A��AA��A��A����AA@@&��������
��E�@&������F���F���F�����F������GtGtF���F�������F��F���F����F�F�G��F�F��F���	�F��
G�F�F����F��H:�AH�@&����E�HGE�A��%�� A��E����MH:M��AeAe�E��'�E�!�"�$E�#EE�H @&�&Ae�'EAe�(@&AeA�*�+A�,A�-@&A�.AE�0�>E��1�2E���3�4@&�5�=�6AAe�7Ae�8�9AeAe�:Ae�;Ae�<Ae�@&A�?�m@&�@�AA�B�O�CA�D�G�E�FAE��E��H�IE��'Ae�JE��KE��LE��ME��N�E��P�e�Q�aHG�RH��SH��TH��U�VH��WH��XH�H��YH��Z�[H��\H��]H��^H��_H�H��`H��rA�b�c�d�Ae�gBa�f�k�g�iH��hAeA�jH:@&��lH:A@&�n�qH �o�p��H H�E��r�s�}E��t�uE��vE�E��w�xE�E��yE��zE��{E��|��E��~���������E���������������@&����@&��@&@&��N�@&��@&��@&��@&@&����@&@&�����������@&@&��@&��@&���@&��@&@&��@&�������@&@&��@&��@&��������@&�@&��@&�@&@&��@&���@&��@&��������@&��@&�*@&��@&��@&����@&@&���*@&������@&���*@&����@&@&��@&��@&�@&����@&��@&��@&@&��@&���@&@&��F���������F���F���F�GtF��F���H:Ae������az��az��az��t�AeAeH���Ae��A��AeAe��Ae������AeBa@&Ae��@@&��@&������@&����@&��@&��@&@&����@&��@&HG@&������@&@&��@&��@&az��@&��@&@&az���$���������ߵ���s���������������������������N���L��az���;���1����������aN�q~�l�`��N�N�N�N�N�	N�
NNQ�nWb��
���������ld���lc����e�L���llb���l���Llc�llaz� �&�!b��"aN�#�$N;b�N�%��Q��'�,d�(�)e��*�+d{iMb�e��-�/�.g4�C�Q�0`�d`��2�8�3�6b��4d�5dg_�7xvb�d{�9e��:e�de��<���=�|�>�I�?�Eaz�@�A�C�w�Bazt�az�Dwqaz�Faz�Gazaz�Hv�az�J�n�K�Z�L�O�M�Nazt�b��w�P�Qv����Razaz�S�Taz�Uaz�Vaz�Wazaz�Xaz�Yt�az�[�l�\az�]az�^�eaz�_�`az�aazaz�baz�caz�dazt�az�f�gaz�hazaz�i�jaz�kazt�az�mazaz���o�u�p�rv��qwq{��s�tv�ju�{��v�y�w�xv��1�1v��z�{wqt�w���}���~���������������v�waz�1az������az��t�����v�kXb�az����������v�azv�az��azt�az��u���u�t�����������������azwazt�az����t�����u���u��������wu�v�az����az�������azazv�u�������u�v�azwq���������������������azw�j��������az��azaz��az����az��azwaz��az��az������azaz��az��waz��az��azaz��waz����������az������azaz��az����azaz��azw��azaz����az��az��azwazaz����az��azaz����az��azaz��azwaz����azaz��az��az����az��az��azazw���������az����az��az��az����az��az��azazwaz��az����az��azaz����azwaz��az��az��az��az���az����az�azwazaz��azaz�waz�azaz�����	��
���w��t����
��az����wu�v�����w����w�az���azv�az�az��azv�waz��3��'� �$az�!�"�#azwqazt��%azaz�&w�j�(�-�)�*�1wq�+�,azv�v�az�.�0az�/azj�1�2az����az�4�A�5�;�6�9�7�8az���1u�az�:azt��<�?�=�>t�b�az�waz�@azj�B�H�C�E�Dazjaz�F�Gazjt�az�I�Kaz�Jazt�azv�az�Mazdaz�Oaz�P�Q���R�{�S�i�T�^�U�Z�Vaz�Waz�X�Yazwqwqazaz�[�\azaz�]azw�_�c�`azaz�aaz�bazwq�dazaz�eaz�faz�g�hazgQaz�j�s�k�o�laz�mazaz�nazwaz�paz�qaz�razw��t�v�uazwaz�w�xazjaz�y���zazw8�|��az�}az�~az�az��az��v�az����az��az��azj��az��az����az��az��az��az{�az����azaz����azaz����azaz��az����azaz��az����azaz����az��az@az����������azMazaz��@&az��������Mazaz@&����@&azaz����az��az��az��az��az��az��az��az��az��az��az��azaz��az����azazw���������az��az��aznW����M��az|��azaz`���azaz����azaz@&���.����������b���`�az��������d����`�M��������������g4b�dL��iM����iM����8��ty��dcW`�b�����L�aN����aN���/�������������������w��ia��M��b�wFb���������b���������������������?��������������-��w�����^�������v��Zu�v����������1t�t��t����w�	u��
���wwq���
����mu���m�t�azazv���&���azv�az�� ���wc�wc��wcwc���wc���[w��!�$w��"{��#{�ub�%w����'�*w�(�)gQ�"gQ�+�,gQjj�-j�.j��0�f�1�G�2�?�3�8az�4az�5w��6�7��w����9�=�:�<�;az����azw��>azw�az�@�AwgCkX�B�C�E�Djw�j�F������H�]�I�P�J�M�K�L��v�v�u��N�Ou�mmw�Q�[�R�Yw�S�Tv��Uv��Vv�v��Wv��Xwv��Zazv��0az�\azu��^�b�_���`�awUw*v�t�v��c�d�e���azv��g���h���i��j�q�kb��l�n�ma�w��i�o�p�MwFwFb��r�y�s�v�t�ub�������w�x��������z�|��{���}�~��?�?���������������-��v���v�w�����^�������Zv�v��������t��������1�1t�����t���t�������wwq�&az��������az��az����u�az������u���u���u�����m��m��m����������������mt�t�������w������
az��az��v�����������gCv�gCgC��gC������wc�����[����w�{�{�az����������������az��az��azjj����v�������v�����w�����gQw���"gQ��������kX��kX��w������j�����w�az������azazv�����v����0����v���v���az����������������v�w*w*���v�?Uv�����w��S���������wwu�������������u�u�u�m����mwUwUv�������v�v�v�����v�azazw8���
az�����	az����M��M�����g�Mg���Mg�g�MM��Mg�MMy�������
azaz�az�az�az�az�az�az�az��az�����}��h��;��1���azv�az��(w� �!az�"az�#az�$az�%az�&az�'azw�az�)w�*az�+az�,az�-az�.az�/az�0azw�az�2�4�3gCazv�gC�5�6�8w��7�Mwc�9�:wU�ww�<�[�=�X�>�O�?�G�@w�Aw�Bw�Cw�Dw�Ew�Fw�w�Hw�Iw�Jw�Kw�Lw�Mw�Nw��w�Pw�Qw�Rw�Sw�Tw�Uw�Vw�Wwww�Y�Zw�v�w�\�^�]azwazaz�_�`az�av��bv��cv��dv��ev��fv��gv��Qv��i�p�j�maz�k�lwazwaz�n�oazv�az�q�w�r�u�s�tazt�t�az�vazazwq�x�{�y�zaz�azv��|azu�az�~�������������v�az��wazv�����������������wqwq�1��������v���v�azaz��azb���az����azkXw�az��������v�����jwv����������;�
w�����azw�w�����az������w�b�����azmaz����������������b���b���b�gQgQ����kXgQkX����������w*kXw*w���w�{�����{��"�����"wwub����������������ubv�v�w������M�wc�i���������wwU�?�����^�[�������������az�-az������b���az��az��az��az��az��az��az��azb�w��az��azw���������az����azL���az��F����H���H�������������������i@��i@G�I���I�P����P��i@a�����\����������\���\G�����h��i@G���G��M���������Mi@���q�+����B���Pi@�Vi@�	��
�i@�i@�+�
�6�+�6�F����6�\�\G���H�� ������I�����i@��Hi@�H���H�V���Vi@i@�`�!�'�"�$�#i@i@�(�%�&i@�D�6G�(�+�)�*�9�V�V�H�,�-@��
�R�H�/�:�0�5�1�3az�2Maz�4az|az�6�8az�7F�az�9azAaz�;��az�<�=az�>az�?`��@�n�A�X�B�M�C�H�D�EazwU�F�GkXb�v�u��I�K�Jazb�u�az�Lwaz�N�S�O�Qaz�PazkX�RazkXgQ�T�Vaz�UkXazaz�WwwU�Y�d�Z�a�[�^�\�]azgCazgC�_�`gCazazb�b��b�cazb�az�e�j�f�haz�gt�maz�iazv��k�lazv��mazv�az�o�{�p�uaz�q�r�sgCazaz�tazt��v�x�wazazv��yaz�zazazgC�|���}���~az�azazt���az��azu�az����az��az��wgC��������v�azkXb���azwUazaz������d{azaz������������������`���dc�L�MN����`���cWdcW������c�d`���l������kuku����ku��ku��ku��kuku��ku��ku��ku��ku� ����Q���NQ���Q�Q�\;��t�����L��������M����������N��������TF��TF��TF��TF�G������TF�GTF�����WTF�gTFTF����TFTF��Q�TFNTFTFN����Lc���M�d��������g_g_����g_��g_g_��g_��g_����g_�wg_��g_���9������������������g4az|az��E�az����az��az`�������cWd����������L���L�t�b�ak��������b�LdN��Лl|�cWaz��az��az��az|az���az����az��az��az��azaz��azaz�az��az�azaz��azaz��	az�
az��az�az�
azv��azaz�v�az��4�az�cWd���%az��azaz��azaz��azaz��azaz�� az�!az�"az�#azaz�$v�az�&azaz�'�(azaz�)az�*�+azaz�,�-az�.azaz�/�0azaz�1az�2az�3�Kaz�5�7�6azAeE�8azaz|�:���;���<�U�=�Oaz�>az�?�@azaz�A�Baz�Cazaz�D�Eaz�Faz�Gazaz�H�Iazaz�Jaz�Kaz�L�Maz�Naz@azaz�Paz�Q�R���S���Tq�g�M��V�{�W�zaz�X�Y�j�Z�`�[��\�^�]��az�_���_�a�e��b�c�d�_�-���f�h��g��_�i��1Q�k�u�l�q�m�o�n���_�p����r��s�t���_���v�w��x�yQ���_az���|az�}azb��~���g4b�����N��L�c�L�t���azaz��az��p�az����az����az����M|t�az������������M����az��az��az��az��az��az��azaz��az��az��az��az��az��b�azazMaz����az����d����d��dd����d��dp2d��d��d��d��d��d��db�d����az��AeMaz����azaz������������������|az|azaz��|azaz��az����w�az��azkX������������i@|az����azw�azaz��|az��az������az����v�gCmaz|az���������������������az��az��az��������@��@��@��@����@��@@��@��@@��@��@����@@@����@@����@@����@@��@����az��azM��azMd�����������M�az�az�azL�az��az�dg4��AazazM���	�E�
�/��az�az�
�azaz�az�az����v�azv��azv�azaz����az�azaz�az�az�az�azwc� az�!�&az�"az�#az�$�%azwUaz�'azaz�(�)azaz�*az�+�,az�-azaz�.azkX�0azaz�1az�2�3az�4�<�5�6azv��7�9az�8v�azaz�:�;azv�az�=�Caz�>�?�Aaz�@azv��Bazazv��Dazv�az�F�m�G�eaz�H�Iaz�J�[az�K�L�Waz�Maz�Naz�O�Pb��QgQ�RgQgQ�SgQ�T�UgQgC�VgQgCaz�X�Yaz�Zu�azv��\az�]�aaz�^az�_az�`mazaz�b�cazaz�dazv��faz�gaz�haz�iaz�jazaz�kaz�lazgC�nazaz�o�p;��q�r���s�t��u��v��w���x��y��z�{���|�}���~@�az��������az�az��az@&az����������������az��azM����azddaz������azazdaz��Aeazaz����������L�az
����az��az��az������az����j��jv�v�azmazaz��Aeaz��������������azAe|����|azL���d����dd����dd����dd���Qd��az��azL�azaz������az����az����J��������������������azNF�Ae���_���B��������������az|cW����cWazaz����M��M��M��M��M��M��MM��Mg�������az@&az����jazaNd���az���������������az��j��jm��azj��������u���v���jm����azu�t���t�az��az��v�v�gC��az��������j��gCaz����jazv���azv�����v�azubaz��kXazv�v���
�az�	azazt�����az�
�azju�gCj��v�v�ubkX��)��"���az�azv�az���azaz�azv�az�az�az� �!azjv��#az�$�'�%mm�&u�v�m�(v�u��*�7�+az�,az�-az�.�0�/azazgC�1azaz�2�3�5az�4gCazaz�6azgCaz�8�9�>�:az�;�=b��<u�b�azj�?�@v�azb��Au�b��C�Jaz�D�E�G�FazazM�H�Iaz|azL��K�W�L�O�M�NaznWM�az�PL�Ae�QL��RL��S�TL�L��U��V�L��Xaz�Y�^L��ZL��[�\L�L��]�L�azd�`���aš�b�cŽ�dcW�eaz�f�z�g�l�hazaz�i�jaz�kazwaz�m�u�n�s�o�pazub�qazaz�rb�t��tazubaz�vaz�waz�xaz�yazazv�az�{�|az�}Š�~azaz�€�az‚azƒaz„az…az†azaz‡azˆ‰az�az‹azŒazazmazazazL�az‘’™A“”˜•–[sG—�sG@sGdaz›¡œŸžt�azazAaz dM¢¤£azazdaz¥¦az§��¨·az©azªaz«¬³­°®¯�����±²����´azµSC¶SCDSC¸��¹¿ºaz»¼w�az½8¾az�SCaz��az��az�����������D��������D��������v�azv���T����azv�azv�az��������v�����v�������S�v�����u�j��v���������j����az����v���v����azv���R7az���h���c���A�����azaz��az����az���az��������������az�az�J��azazS��az-S�v���az�azazv������������F�Gt��Gt�GtGtF���	�GtGtF�F��
�Gt�GtGt�
�Gt�Gt��#����G�������GG���GtGGt�GtF�F����!����� ���������"I�G���$�-Gt�%Gt�&�'�*�(G��)GtGt�Gt�+Gt�,��Gt���.�/�7�0�4�1�3�2Gt��GtGt��5G�G��6G�Gt�8���9�;�:GtGt���<Gt�=Gt�>GtGt�?�@GtGt�az�B�Cazaz�D�E�Kaz�Faz�G�Haz�Iaz�JgCu�u��L�^�Maz�N�OazgCaz�P�Q�]az�R�Saz�Taz�Uazaz�V�W�Z�Xazaz�Yazv��[azaz�\azv��"wFaz�_�`az�aazaz�bgCaz�daz�e�g�fd�sGMaz�i�n�j�lnW�knWazaz�mazd�o���p�qaz@&�raz�sû�taz�uaz�vï�wä�xÊaz�y�zÂ�{az�|azaz�}�~azaz�ÀazazÁwazazÃÄazÅazÆazazÇÈazazÉb�azËÛÌazÍÔazÎazÏÐazazÑÒazÓazwazÕazÖaz×azazØÙazÚazazgCÜazazÝazÞßazazàazáâazãazazb�åazæazçazèazéazazêëazazìíazîazazwðazñazòazóazôazõazazö÷azazøazùazúwazazüýazþazÿaz�azaz�az��az����azazm����az��az����azaz������az��az��az��azu���azaz����az��v���v���v�v�����v�v���v�����v�v��KE�az����������7�����������az��az��az����������d{����M��d�b��L�����g4dM��L�A`����������L�M�`�b��w�M��az���@azaz|az�����az`�Eaz�azM�az����.��M�@&��azaz�	az�
az�gCaz�
az�N��$az��az��az��azaz�azgC��!az�az�az��azaz�az��az�azaz� az�Baz�"az�#az�B�%az�&azaz�'�(�+az�)az�*azt��,azaz�-az��/���0��az�1�2�b�3Ģ�4�w�5�X�6�D�7�=�8m�9�;u��:�����<u���u��>t��?�B�@�A�wu�wqv��Ct��1t��E�N�F�J�G�Iwc�Hwc{�w�ubv��K�L�M�w�jw��Oaz�P�S�Q�R�����j�T�U�j�V�Wj�����Y�h�Z�a�[�^�\�]���0�����_�`w�-�?��b�e�c�dwFv��v��f�gb�wv��^�i�p�j�m�k�l������n�owv������q�t�r�sb��M�����u�v�i��v�w��xĚ�yĕ�zć�{Ā�|�}wUa��~����0���-āĄĂă�v��^�ąĆ��v�a��ĈċgQĉ�-Ċ���0ČďčĎ����?wĐĒwFđ����ēĔ�����?ĖazazėĘazęw�w��
azěĜĠazĝĞğ������u�u�ġmv�ģ�Ĥ��ĥĺĦħazv�ĨIJĩĬĪīw�jw��ĭİĮį������jıjjijĶĴĵazw�w��
w�ķĸĹazw�w��
Ļ��ļ��Ľ�ľĿ���0�������w�-�?���������wFv��v�����b�wv��^���������������������wv�������������b��M���������i��v�w�������������������wUa��������0������������w�-�?�����wFv��v�������������b�wv��^����������������wv�������b��M��������������w8��������~S����������b��b���	���i��v�w��
b�wUa����
t����w�1��wqu�v��v�wq��j�����{�{��[j�w�j��J��C�� ��jw�����!�%�"�#jw�wc�$ub{��&j�'�<�(�7�)�.gQ�*�+gQgQ�,�-gQv�gQgQ�/�0gQ�1�4�2�3gQv�v�gQ�5�6gQv�v�gQ�8gQ�9gQ�:gQ�;gQv�gQ�=gQ�>gQ�?gQgQ�@�AgQgQ�BgQv��Dazb��E�F�Gwv��H�Ib�v�wUb��K�S�L�Naz�Mu�m�O�Pv�v��Q�R����w���T�Y�U�Vw��WkX�Xaz��az�Z�\az�[����]�`���^�_��������a��az�c�,�d���e�m�f�kv��g�hkX�i�jw��?U�lazkXaz�nŤ�oŎ�p��q�x�r�u�s�tv�wwwU�v�wb�v�b���y�|�z�{�?b�w���}�~��wF�M��ŀŇŁńłŃv���w��Ņņv���-�iňŋʼnŊ���^�a�Ōō�������ŏŕazŐőœu�Œu���Ŕu�����ŖŝŗŚŘř�0��v�wśŜwwUb�v�ŞšşŠb���?b�Ţţw����wFť��ŦźŧŮŨūũŪ�M��v���Ŭŭw��v��ůŲŰű�-�i���^ųŴ�v�wŵŶazŷazŸazŹazwazŻ�żž�wŽu�t�ſ�v�wq�1�j������w�jj����az��kXm������mt�m������������������wu�����w��Mwb���az����wU���i�����v�v�b�v���������az��w�az�����1t���������v�����v�����v���v�������v�wwv���v���v���v�wv�����az��azw�az����w�w�az�����������wF�������a���i�������^������0v���������w�t��	��
�
�����v��M��v�v�w�wu������gC��m���mt�t�����w��{��[����ubub{���'� �"gQ�!�"gQ�#�$w�j�%�&j�����(v��)�*��azaz�+az�
�-�~�.�Q�/�2az�0az�1azm�3�K�4�<b��5�6�9�7�8v�wwUb��:�;v��b��?�=�D�>�A�?�@w��v��M�B�CwF��w����E�H�F�Gv��wUb��I�Jv�b��?wu��L�Mb��N�P�Oazw�az���
�R�l�S�]�T�W�UazgQ�V�"gQ�X�[az�Yaz�Z���
m�\t�m�^�baz�_j�`��a���c�g�d�ev��wwq�fu��1�h�j�[�i��wc�k{�ubw��m�s�n�oazt��p�ru��q����v�v��t�v�ugCv�v��wb��x�{�y�zwUwv�v��|�}v�b�b��M�ƽƀƏƁƈazƂazƃƄƆv�ƅ�1�wƇt�wqv�ƉƋƊju�mƌwazƍw�Ǝ��azƐƢƑƒazmazƓƔƛƕƘƖƗwUb�v��ƙƚ��wb��-ƜƟƝƞ�M��wFw�Ơơ�i�?��^ƣƵƤƳƥƬƦƩƧƨa���v��ƪƫ������0ƭưƮƯ��wUb�v�ƱƲ���wb�gQƴ�"gQƶƷazw�ƸƼƹv�ƺv�ƻv�mv�����ƾ��ƿ������������gC��v�gC��v�����gQ���"gQgQ���"gQkXaz����maz�����������������-�M��wF����w��i�?����������^a���v�����������������������wUb�v��������wb��-���������MwUb�v��������wb���azaz��u���azwUaz��t���Mq~�az�azaz�az��azaz��az�az�azaz|��)��'az�az�������
��az�az|�	az|az�az�az�
azaz@���azaz�|��az|az�az��@azaz���|@az|��#�� az��azaz|az�!az�"|azaz�$az�%�&az|azaz�(@&az�*�4�+�3Ae�,�-azaz�.az�/az�0�1azaz�2azgCazcW�5�6cWb�@&|�8�T�9�E�:�?�;�=az�<L�nW�>azaz@&�@�C�A�Bazdazdaz�DNL��F�L�G�Iaz�HcWd�J�KL�azaz@&�M�O�NazMN�P�ScW�QL��RL�q~azAe�U�k�V�g�W�d�X�c�Yaz�Zaz�[az�\az�]�_az�^v�az�`az�a�bb�azv�azL�az�e�fM�azAeaz�haz�i�jg_HGazM�l�
�m�p�n�oN|azN�q�Ae�r�s��t�~�u�6�v��w�xazb��yǍ�zkX�{ǂ�|ǁkX�}�~kX�ǀkXb�b�kXkXb�ǃDžDŽkXkXb�džljkXLJLjkXkXb�NJNjb�kXnjb�kXb�ǎǔǏb�ǐb�Ǒb�b�ǒb�Ǔazb�Ǖ��ǖDzǗǥǘǟǙǜǚgQgQǛwb�ǝǞb�gQv��"ǠǢb�ǡb�wǣǤwkXkXgQǦǬǧǨgCb�ǩǪ�MgCb�ǫv�b�ǭǰǮǯ�igQb�kXb�DZgQwUdz�ǴǻǵǸǶǷb�gCw�gQǹǺgQb��-�MǼǾǽgQgCkXǿ�gQw�b�wU��������b���wkX����azb��?b���������b�wubb�b���gQgC��������������������w�?b�kX����w��gCb�kXb���������azw��gQ����kX�ikX��azb�������������b�kXgQb�����gQb�wb�������b�gCkX����b��"b�gC�������������gQb�v�gQb��w�w����w�wgQb���gCb�w�b�wU������gQgCgCkX���?wgC�M��
b��	b�gC��gQgC�
b��ikX��+����az��az�azaz��az�azazkX�azaz�az��az�az�azgCazaz� �!az�"�'az�#az�$az�%�&azazkXaz�(az�)az�*b�az�,az�-az�.az�/�2az�0�1az�^az�3azaz�4az�5�^az�7�Xaz�8�9�I�:kX�;�G�<�D�=�@�>kX�?kXazkXkX�A�B�CazkXazkXaz�E�FkXkXgQ�HkXkXaz�J�S�KkX�L�R�M�P�NkXkX�OazkX�QkXkXazazkX�TkXkX�U�VkXkX�WazkX�Y�baz�Z�[�`�\gQ�]az�^azgQ�_gQaz�aazkXaz�c�n�dkX�ekX�f�k�gaz�hkX�i�jazkXazkX�lkX�mazkXazkX�o�pkX�q�|kX�r�s�tazkX�uaz�vaz�w�z�x�yazkXazkXaz�{azkXaz�}azkX���ȀȵazȁȂțȃȏȄgQgQȅȆȉȇgQȈgQgQazgQȊgQȋȌazȍazȎazgQazȐȘȑazȒȕȓgQgQȔgQazȖȗgQazazgQșazazȚazgQȜȮȝgQȞȥȟȢgQȠȡazgQazgQȣȤgQazgQȦgQȧgQȨȩgQazazȪȫȬazgQgQȭgQazgQȯȰȳȱȲgQwwubȴgC{�gQȶȹȷazazȸazgCȺ��Ȼ��ȼ��Ƚ��wȾȿw�azaz�����azw����wazwaz����������wazwwaz����azwaz��azw��w����w����azwazazww����az��������waz����wazazww��waz��w����w��w��w��wazw��az��w��az��wazaz�����������gC��gCgC����gC��gC��gCgCazgC��kXgC��kX�gC�gCgCkX���gCgC��gCgC�azgC��gCazb�gC��]���azaz��	gC�
gC�gC���
����azazgCaz�gCaz�azazgC�az�azaz��azgCaz��az�azS���%�az��$� b��!az�"b�b��#b�azb�az�&�>�'�6�(kX�)�3�*�0�+�-�,b�b�az�.�/b�azazb�b��1�2b�b�azb��4�5b��b�az�7�8�=�9b��:�<az�;azb�b�azazb��?�J�@b��A�Bb�az�C�G�D�Eb�azaz�Fb�az�Hb�b��Iazb��K�P�Lb�b��M�Nb�b��Oazb��Q�Z�R�Tb��Sb�az�U�W�Vazazb��X�Yazb�b�azb��[�\b�b�az�^�i�_az�`�h�aubub�bub�c�daz�eaz�fazub�gubazubaz�jɜ�kɁ�laz�m�{�nw�o�v�p�s�qww�razw�t�uazwazw�w�xwazw�y�zazwaz�|w�}w�~ɀ�azazwwazɂɌɃv�Ʉv�Ʌv�ɆɉɇɈazv�v�ubɊazv�ɋv�azɍɏv�Ɏv�azɐv�ɑɓazɒazv�ɔɛɕɖv�azɗazazɘəazazɚazv�v�azɝ��ɞ�ɟɱɠɪɡɦazɢɣazɤazɥazazwazɧazɨɩazgCazazɫazɬazɭɮɯgCazazɰazb�ɲɻɳɷɴazɵazɶazgCazazɸazɹazɺkXazɼazazɽɾazazɿwaz�����kX��������kX��az��azkXaz��azkXkX����kXkXazkXaz������������������az������azb�az��b�b�az������az��azazb�b�az��b�azb�b���wb�gQ��az����az����������az����az��az��waz��azazkX��azaz��az��az��kXaz��az�����az�azaz�v�az����b�azb�azazgQaz��B��B��B��B��B��B���B�B���B�B��B��B�	�B�
��B�B�gC�B����L�azaz���azazcW��`��B��)������azmAeg��azazd�N�� `�az�!NN�"N�#N�$�%N�&N�'NN�(NU��*�-N�+�,azMd�.�@�/�0az@&�1Ae�2�9�3azaz�4az�5�6az�7azaz�8azgC�:az�;azaz�<�=azaz�>az�?azgCaz�A@&M�C�`�D�S�E�P�F�GazN�Haz�I�K�Jb�azb��L�Mv�gC�Nb��Ob�m��Qaz�Razazt��Tazaz�Uaz�V�Waz�Xaz�Yaz�Zaz�[az�\az�]az�^azv��_v�az�a�"�b��c��daz�eʿ�fʖ�g��h�u�i�o�j�m�k�lb�v�upv�az�ngCv��p�r�qazazgC�s�tazw�v�az�v�y�waz�xazu�az�z�}�{�|u�wazw�az�~v�b�ʀʎʁʈʂʅʃʄv��?�jʆʇ��t�w���ʉʌʊʋjazazb�ʍazaza�ʏʓazʐʑʒazu�u�w�ʔazʕazw�azʗʧʘʞazʙʚʜazʛazt�ʝazu�azʟʡazʠazb�ʢʥʣʤb�v�v�azʦazazwʨʳʩʬʪazgCʫazgCʭʰʮʯu�kXazv�ʱʲmazazv�ʴʹʵʷʶazb��"azʸb�azʺʼʻazgQazʽʾazv�v�u����������������������azu�v�wc����v�azazv�az��az��w�M�������������wv�v�az�����wubt�az��������kXazazv���v�maz��������������azj��azb�����ju�azv�����az��waz��azkXaz����az��az��w�kX��������u�kXkXt�����u�v������v�azv�az��w�azw�az�azaz�������b��v�azazb����azm�mazazb����	��
��azv�azv��
v�azb��w��w�az��w�v�gCb�az|��!�azd�w�����L�c�M���{
Z7{
Z7� Z7{
azd�#�]�$�Yaz�%�&�<d�'�(�+�)�*MiMtyL�,�-`�d�.�9d�/o��0�1d�2b��3b��4b�b��5�6b��7b�b��8b�d�:i�i��;i�ߍ�=�J�>�DaN�?M�@�A�Be~�e�C�e�E�IM�F�Gj�L��H�L�xvL�ak�K�L�Rak�M�N�Pak�O�akak�Q�tkak�S�T�W�U�Vak�{ak�{ak�Xake��Zaz�[az�\`�`�az�^�_p�azL�az�a��b���c˶�d˴�e˛`��f�gb��hˎ�ib��jˍ�k�q�l�o�m�n�`�MפN�pkud�r�|xv�s�txv�uxv�vxv�wxvxv�x�yxvxv�z�{xvxvW[xv�}xv�~�ˆxvˀˁxv˂xvxv˃xv˄xv˅xvW[ˇxvxvˈxvˉxvˊˋxvxvˌW[xvxvL�ˏ˘ːMb�ˑ˒˕˓˔L�b���li˖˗{
iMMؒ˙˚dLdhAe˜˝˥˞m���˟m�ˠˡˢM��ˣMˤ����lm�˦˧ˬ˨˩��m�˪ll˫l��Ae˭ˮ˱l˯l˰��l˲��˳l��laz˵mazaz˷˸��˹azak˺˻akak˼˽ak˾ak˿ak�akak���ak��ak��ak��ak��ak��akak��akٛLaz�����������|�Maz����������az��azw*w*��w*azaz��az��az������azM��az������az����az��az����az��azaz��az��az��az��az��az��az����azaz���azaz����az��az�Baz���az�������azaz��az�az�azaz��az��b�azb�azaz�az�az��az�azaz��az��b�azb�az��az�	az�
az�az��az�
az��azazv�����az��AeazazcW��5�����aNazaN�p�aNM��M�p���M�� �2�!p��"�Q�Q�#�Q�$�%�Q�&�Q�'�Q�(�Q�Q�)�*�Q�+�Q�,�/�-�Q�Q�.p��Q�Q�0�Q�1p��Qp��3�4p��Qp��6�:M��7�8�9M�azMaz�;̐�<�g�=az�>az�?�O�@�Daz�Aaz�Baz�Cjaz�E�H�Faz�Gazmaz�I�L�J�Ki�B��F��M�Nb�B�L���P�^�Q�X�R�U�S�TgCb�i��e�V�W�e��o53��Y�\�Z�[i�����Bz�]�F���_�bi��`i��a�OE�c�eE�dE
��fE�Xٰ�h`��i�raz�jaz�k�lazaz�m�n�paz�oaz��qazaz��ṡ�t�~�u�z�vazaz�w�x�yaz��az|�{az�|�}azaz|�̃az̀́̂az|az|az̄az̅az̆azË̍̉az̊azaz̋̌azaze�̎az̏azaz�Oaz̑̒̓̚azaz̔̕v�|̖̗|̘̙��||�|̛̱̜̪̝b�̞̟`�b�̠̣M̡̢M�M̤M̥MM̧̦M̨M̩M�M̫̮̬̭ӹdb�b�̯̰`�d`�d̲iM̳�̴�b�̵b�̶̷b�̸b�̹b�̺b�b�̻b�̼b�̽̾b�b�̿b�b�`�c�����M�����������Vpؒ8N�����vb֖�t�d��������az��az��az��az��az����������������������p��������.9�������������������_Q������������_���O��������OQ������������p����2T�������_�`��`��`���`�`�����`��`�֥`���3�azaz��az�az�az��������	���_���
�!�_���
�����������������������-d��_.�����k���(��%� �#�!�"��_�O���$��_�&���'
��)�.�*�,��+��_�-�a��/�1�0Q߫��2��_��4͠�5�l�6�9�7�8azM�azd�:�k�;az�<�`�=�V�>�F�?�D�@��A��B�C�����R����E�@�G�T�H�I�.��J��K���L�M��N��O��P��Q��R��S��-d�U��O��W�\�X�Z�Y��_���[�_��]��^�_��_��_�a��b�e�c���d���f�h�g�.���i�j��_�!�cWaz�m�o�naz|az�p͟�qaz�r͎�s͈�ẗ́�u�w�v��_߫�x��y߫�z̓��{�|��}��~���̀�́�͂��������ͅ�͇͆���_�͉�͊͌͋��Q͍��_�͏͖͓͐͑��͒��_͔��͕�O�͚͙͗͘͜��!�͛�Q�͝��͞a�1azM͡ͽͤ͢@&ͣ`�M�ͥͱM�ͦcWͧͨͭͩͪ��dͫͬЌMM�Mͮb�ͯͰxvL�xvb�azͲͳazʹaz͵azͶazͷaz͸azaz͹ͺazͻazͼazv�azaz;Ϳazaz�az`���Β�������������|����az@&g4az|��|az������azaz��az@&������cW��������������az��gQaz����az�������azazt���azt�az��������az��azt�����az��az��az���������azwazv���azmj����������az���azt�wwU��azmv����azaz�az�az�az�gQt���
�azaz�az��azaz���	���azaz�t�azaz��azazt�az�
az��azazt�az����azaz�azgQ�az�azaz@`�Naz�azd��J��C��A��@p����,��$�� ��!�"�#�a���%�)��&�'�(a���_��*��+����-�5�.�2��/�0�1�A�_���3��4�_��6�;�7�9��8Q���:���<�=��_�>�?����!|MaN�Bd]az�D�G�E�FazdAeaz�H�IAedN`��K�n�L�l�M�k�Np��O�^�Pd�Qd�Rd�Sd�Td�Ud�Vd�Wd�Xd�Yd�Zd�[d�\d�]dm�d�_�ed�`�ad�bdd�cd�d�Ndd�fd�g�hd�idd�jdm��az�mazNAe�oΐ�p�qazAe�raz�saz�t�|�u�vazv�v��w�xv����y���z�{az��azaz�}�~·�΃v�΀v�΁΂azv�azb�΄b�΅Άazb�azΈΌb�Ήb�Ί΋azb�azv�΍v�ΎΏazv�azΑazdMΓ�Δ��Ε��ΖΘazΗaz|ΙazΚazΛ��Μ��ΝΠΞ�Ο��_�Ρ�΢�Σ�_ΤθΥέΦ�Χ�Ψ�Ω��ΪΫ��ά���ή�ί�ΰ�α�βεγ��δ�.�ζ��η.���ικ�λ�μ�ν�ξ�ο�������������������������_�����_��������������������������-d��-d�����Q�_��_������������!��O�������������az��|������azM�@&p���������az��azN��azaz@&������azazAe��azd�����������������_�1a����_�߫.�����Q��O����-d�������_�����
����	�
��
��k��������Q�������χ��Naz�M�az�HG���azaz|�|��l��b��Yaz� �!�F�"�)�#azaz�$�%azaz�&�'�(azw��"�*�8�+�4�,�/�-azaz�.w�az�0�2az�1azw�az�3jaz�5az�6azaz�7waz�9�B�:�=�;az�<azaz�&�>�@�?azaz�
�Aazaz���Caz�Daz�Eazaz��G�Maz�H�Iazaz�Jaz�Kaz�Laz��Naz�Oaz�P�V�Q�Saz�Razv��T�Uazv��az�Wazaz�X�az�Zaz�[azaz�\az�]�^az�_azaz�`az�aw�azaz�caz�d�eaz�faz�gaz�haz�iazaz�j�kazazj�m�o�nazv�jaz�p�q�{�razaz�s�taz�uazaz�v�w�y�xazw�az�zazjaz�|v��}v�v��~v��πσv�ρςv�v�azτv�υφazv�v�azψ��ωazϊϥϋϙόϑp�ύp�ώp�Ϗϐp�p��}ϒϔϓp��Q�nϕϖr�p�ϗp��Ϙ�r�Ϛϡϛϝr�Ϝp�r�Ϟp�ϟp�Ϡp�r�p�Ϣp�ϣϤ�$p��2��ϦϵNϧNϨϩNNϪϫNNϬNϭϮNϯϲϰNϱNNN;ϳNϴNOTN϶��Ϸ��ϸNNϹϺNNϻϼQ�Ͻ��Ͼ�NϿN+\����N�]�[�N����NN��Q�NN����N��N��NN����NN;N��N����N��N����_�[���������������[�Q�L������*VW�=W���[���[��V[���N��N�NazM��������|azd|��azAeN��������az��AeazAe��daz��������@&azazM���Kaz����az���azaz�az��az�������az�az�Kaz�azaz�Kaz�az�az��Kaz�	azaz�
az��az�
�azwwaz�az���azaz�az�az�azw�az�az�az�azaz��azazv���6��(az� �!az�"�%�#az�$azwaz�&azaz�'v�m�)�/az�*�+az�,az�-azaz�.v�m�0azaz�1�2azaz�3�4azaz�5mazaz�7�8�I�9�C�:�?�;�<gQazaz�=�>azgQaz�@az�Aaz�BazgQaz�DazgQ�E�FazgQ�GgQ�HgQv�az�JazgQL��L�M�`�N�\�O�W�P�S�Q�R��_��_�T��U��V�O��O�X�Z��YA���[��_��]�^���_
��a�j�b�g�c��d�f�e�@�����h�i���_�k�n�l��m�����o�p�r�q��_��_��t�?�u@&�vЈaz�w�xaz�yaz�zЅ�{`��|`�`��}`��~�`�`�Ѐ`�ЁЂ`�Ѓ[�[�Є[�`�`�І`�Ї`�azЉ�1ЊЭЋГЌazЍazЎazazЏАazazБazВaz��ДЧЕФЖОazЗИМgCЙКЛgCv�v�v�azНazb�MПРСazF�azТazУ�|ХЦazL�nWazШЫЩЪazMEp�Ьaz|�Ю��Я��azабвML�L�гL�деL�жL�зL�L�иL�йкL�L�лмL�L�ноL�пL��L��L���L��L�����L���azp�az����azaz������az����azaz��az��az����az��az��az��az��az��az��azaz��gCazaz��az��az����az��azaz����azaz����az��azaz����az��azv�az������������dazaz@&����d��@&az������d�M���������az�az�az�t�az�az�az�az�azv�az�azaz��az�azaz�az�az��v��az�azaz��	azaz�
��
az�azv��azv�az�����azaz��az�az�az�az�Bazaz��azaz��azw��az�az� �'�!azaz�"�#az�$az�%az�&azazb�az�(az�)az�*�+�.az�,az�-b�azaz�/az�0azb��2�A�3�<�4�:�5�7az�6azd�8�9Mazazd�;|az||�=|�>�?�@M|@&az�B�y�C�X�D�V�E�Faz|�GL��H�L�Iaz�Jazv��Kv�az�M�R�N�P�OazgCaz�Qu�jv��S�Ub��TgCwv�j�WdazN�Y�\�Z�[AazAeaz�]azaz�^az�_�`�s�a�faz�b�caz�dazaz�egCaz�g�kaz�h�iazaz�jazv��laz�m�o�nazazj�paz�qaz�razv�az�taz�uaz�vazaz�w�xazu�az�z��az�{�|���}х�~MM�рMсg�MтуMфMO�Mц�ч��шѝazщazъыїazьэѓюazazяѐazёђazv�v�azєazѕazazіv�azјazazљњazazћazќw�azў��џѲѠѧѡazazѢazѣѤazѥazѦazazv�ѨѭѩazѪazazѫazѬazv�azѮѯazazѰazѱw�azѳѽѴѹѵѶazv�ѷt�azѸazt�azѺѻwazѼazwѾ��ѿazaz��azaz��az��azgQaz����az��azgQ����azazgQ��������az��az����azazv�az��az����az��azazw���������az����������az��azwcwcazazt���az��az��az��azwaz����az��az��az������azw�w�az��azaz����azv�az��az��az���az����az��az�az���azaz�azjjaz����az��az�az�azazw��azaz�wcazaz���
�azaz�az�	azwcaz�az�az�
gQaz��}��D��"�az�azw���az����v�azv�v���azv�az�az�� v��v�az�!azv�az�#�-�$az�%az�&az�'�+�(�)w�v��*v�azv��,azv�az�.�/azt��0az�1�:�2�6�3�5�4azjazazj�7�9�8jazjjaz�;�@�<az�=�>azj�?azjaz�A�Caz�Bazjjaz�E�o�Faz�G�f�H�R�Iaz�J�M�Kt�t��Lt�azt��N�Ot��P�Qt�azazt��S�\az�T�U�Wt��Vazm�X�Z�Yazazmaz�[azm�]�_�^mazm�`�bm�amaz�c�dmaz�eazmaz�gaz�h�n�i�laz�j�kazmaz�mazazt�t�az�paz�qaz�raz�saz�t�x�u�vgQaz�wazv�az�y�{az�zazgQ�|azgQaz�~Ҽaz�ҀazҁҪ҂҈az҃az҄gQ҅gQ҆gQ҇gQaz҉ҟҊҔҋҏv�ҌҍҎv�azazv�ҐҒґazazv�azғazv�ҕҚҖҘҗazazv�ҙv�azv�қҝv�ҜgQv�Ҟv�v�azҠҤҡgQҢgQңv�v�gQҥҨgQҦҧv�gQv�v�ҩv�azҫazҬҵҭұv�Үүv�Ұv�v�azҲv�ҳv�Ҵv�azv�ҶazҷҺҸv�ҹv�v�azһazv�azҽ�Ҿazv�ҿgQub���������az������������azgQaz��az��azgQ��az����gQaz��w�gQaz����az����azv���v�azaz��azv�az������az��az��������azazjj��azj��az��azaz��az��jazaz��az����������az��az��t�az��azazv�az��az������azjaz��azj|������azaz������p��daz��������������_�_�����O���	��
��Q���
��_�����5��������������!������,����������%�� �!�#��"-d���$-d��&��'�)��(-d��*�+�-d-d��-��.��/��0��1��2���3��4-d��6�;�7�9��8�_��:����<��=�>�_��Q�@���A���B���CӞ�D�l�Eaz�F�Z�Gd�Hd�I�V�J�N�K�b�L�M`�LMd�O�T�P�S�Qaz�RMg�MMNb��Ub�dz��W�Xz�z��Yz�`�az�[�\Aeaz�]�^azaz�_�`azaz�a�bazaz�caz�daz�eaz�faz�gaz�h�iaz�jazaz�kv�az�mӗ�nӕ�oӀ�pЛ�qazaz�r�saz�taz�uaz�vaz�wazaz�x�yaz�zaz�{az�|azaz�}�~azaz�az@AeӁdӂӃӒӄӐӅӆb�j�b�Ӈӈb�b�Ӊӊb�Ӌb�ӌb�Ӎb�ӎb�ӏb�b�b�ӑNM`�ӓj*Ӕ��Mc�ӖazazcWӘӛәӚazM�azNӜӝdazdazӟ��ӠӮӡӤӢӣazMdЌӥazMӦp�ӧp�Өp�өp�Ӫp�ӫp�Ӭp�ӭp�e�ӯ�Ӱӱaz|ӲazazӳazӴazӵӶazӷӽӸӻӹӺH:F�Ae@&ӼazazgCӾH:ӿ���,s�H:az��aznW����az��az��g_az����az��g_L�daz���P���8���.������azaz��������������azjaz����gCjaz��i@��i@i@��i@F�����M����������azM�az����azaN����az��az��az��az��azaz��az��jaz|az��j��az��az��azb�azaz�������
��az���azb��gCb�az������gCazv�u���v�jwm����v���gQm��	v�v�u�az�����
���t�v�gCjv��jub����v�kXv�v���wkXw�az�az�azaz��azw�azaz�az� �!az�"azaz�#az�$�%azaz�&�'az�(az�)az�*azaz�+�,az�-az@az�/�6�0�5az�1az�2az�3az�4az�KazE��7azdaz�9�?�:�=�;�<azdazMaz�>az|�@daz�A�Bdj*�C�D�M�Eb��F�G��L��Hb��I�KnW�JnW�LnW���R�N`�M�Ob�cW�Q�Ud�Rd�Sd�Tdaz�Vԋ�W�Z�X�Yg�azazAe�[�\az|az�]�^�w�_d�`�k�a�g�bd�c�ed�dq�dd�fdq��hd�idd�jdq��l�sd�m�n�q�o�pdq�dq��rddq��tdd�ud�vq�d�x�zd�ydq��{�|Bfq��}ԃd�~�ԁԀq�dq�q�Ԃq�dԄԇԅddԆdq�ԈdԉԊdq�q�dԌazazԍԎazԏԡԐԒazԑv�gQԓԠԔb�ԕb�Ԗb�b�ԗԘb�ԙb�Ԛb�b�ԛԜb�ԝb�b�Ԟb�ԟgb�gCazԢ��ԣԹԤԪԥF�ԦԨԧF�F�GtF�ԩF�GtԫF�ԬF�F�ԭF�ԮF�ԯF�԰ԱF�ԲF�ԳԶԴF�ԵF�G�F�ԷF�F�ԸG�F�Ժ��ԻF�ԼF�ԽF�ԾF�ԿF�F��F����F���F�F�����F�F�G�F���F�����F�F�������F���F���F�����F���F�F���F�GtF���F���F�����F���F���F�GtF���F���F�F���F�����F�GtF�������׊����������az������az��M��MMazdaz����az��Mazaz��MN���(���%�����N��Ae�Ae�Ae�AeAe��AeAe��DAe�d���N�N�N��N�N�U�N�N��NQ�NQ�N�	�
����N�
NN�NU���N�NP�N�N�U\NN����N�N_�NN�N��N�NN�N� �!NN�"N�#N�$[�N�&�'AeMazM�)�,�*�+az|azd�-�.azL�L��/�0�F�1�T�2�H�3�:�4�7H:�5H:�6H:�,H:�8�9H:H:�F�;H:�<H:�=H:H:�>H:�?s��@�A�D�B�CH:s�s�H:�E�Fs�H:�GH:H:s��I�M�JH:�KH:�LH:H:�*�N�Qs��OH:�PH:�FH:�R�SH:H:s��UՐ�V�[�*�W�*�X�*�Y�*�Zs��,�\�|�*�]�^�kH:�_�*�`�a�*�b�*�c�g�*�d�e�*�f�*�*H:�*�h�*�i�*�jH:�*�l�t�m�*�n�*�*�o�p�*�*�q�*�r�*�sH:�*�u�*�*�v�*�w�*�x�*�y�*�z�*�{H:�*�}Ս�~Շ��*Հ�*Ձ�*Ղ�*Ճ�*Մ�*Յ�*Ն�*H:�*Ո�*�*ՉՊ�*�*ՋՌ�*�*�9ՎՏ�*�,�,�*Ց��ՒռՓկՔ՘ՕH:H:ՖH:՗H:�,ՙ�,՚է՛ա՜՞H:՝s�H:՟H:ՠH:s�H:H:բգH:H:դեH:H:զs�H:ըխթիժH:�9H:H:լH:s�H:ծ�,H:հճH:ձղH:�9H:H:մH:յնH:շH:ոH:չH:պH:ջH:H:�9ս��վ��տH:H:�H:���H:��H:3H:H:��������H:H:��H:N7H:N7����H:�������������9�9H:�9�,����H:�9H:�9��H:������H:H:��H:��H:s�H:���,H:����������H:��H:������H:H:��H:��3H:������H:�9���,H:�,H:������H:H:��H:����H:H:���9H:H:�,������	���������s��,H:��,�,s���H:�H:�,H:��,H:H:��s���9�9H:H:�H:��H:H:�,�
������,�
��,�,H:���,H:3�H:s���H:���,H:�,��9�,H:�H:�H:�H:�H:H:�H:�,� �0�!�*�"H:H:�#�$�&H:�%�,H:�'H:�(�)H:�,�,H:�+H:�,H:�-H:H:�.�/H:s�H:�1�@�2�7H:�3�4H:�5H:H:�6H:�,�8�<H:�9�:H:�;H:H:�,H:�=H:�>H:�?H:s��AH:H:�B�CH:�DH:�EH:�,H:�G�B�H���I֜�J�v�K�e�L�S�MH:�NH:�OH:H:�P�QH:�RH:H:�,�T�[�Us�s��V�Ws��Xs��Y�Zs��Fs��F�\s��]�as��^�_s��`s��,s�s��b�cs�s��d�,s��fs��g�o��h�i�j�,s��k�m�,�l3�,�,�ns��,�9�p�q�t�rs��,�ss��,�us��,s��wւ�x�ys�H:�zH:s��{�|s��}s�s��~�s�s�րցs�s�H:փ֕ք֐օֈH:ֆևs�s�H:։֍֊s�֋s�֌s�H:s�֎s�֏s�H:s�֑s�֒s�֓s��,֔s��,s�֖֗֘H:s�֙s�H:֛֚H:H:s�ֲ֝֞֩H:֢֟֠s�֡��,֣֥֤H:�,H:H:֦H:֧H:֨�,H:֪֬H:֫�H:s�֭�,ֱ֮֯s�ְs��,s��,ֳ��ִ��H:ֵֶַָֻH:s�ֹs�s�ֺH:s�ּ�ֽH:־ֿH:s�s�H:�s���s�H:s�����s�����s��,s����������,s�s���s�������s�3�,s�����s��,s���s������,�,3������������s�����s���s���s�s�����s��,s�����s����,s�s���s���s�3�,����s��,��s���s��,H:��������H:��H:��s�H:s�s�H:���������,��s�H:��,��,��,���,�s��,s��,������,��,��F��,��,�F�,�9�����,�	�,�
�,s��,��s��
�,s�s��,����,��,��,���,�3�,��,��,��,�,33H:��5�,��,���,� �+�!�%�,�"�,�#�,�$�,�F�,�&�'�,�(�,�,�)�,�*�F�,�,�,�-�,�.�,�/�2�0�,�,�1�,�F�3�,�,�4�F�,�6�,�,�7�8�;�9�,�:�,�F�,�<�,�=�A�>�?�F�,�@�,�F�,�F�,�C�_�D�H�EH:�FH:H:�G�9H:�I�YH:�JH:�K3�L�MH:�N�T�O�R�P�Q3H:3H:�SH:H:3�U�W�VH:3H:3�X3H:�Z�]�[�\s�33s�H:�^�,H:�`ׄ�a�o�b�d�c�,H:�,�e�fH:�,�g�h�,�i�,�j�k�,�l�,�m�,�n�,�,�p׃�q�z�rH:�s�,�t�,�u�,�v�,�w�,�x�,�y�,H:�,�{H:�|�,�}�,�~�,��,׀�,ׁ�,ׂ�,H:�,H:�,ׅ�,׆׈�,ׇ��,׉H:�,H:׋��׌ג׍az׎׏@&azאazבazjazד��הוazdזdח׬azטיתךv�כazלצgQםמףןazנgQסgQעazazgQazפgQץazgQgQקgQרazשgQaz׫azgQaz׭׵׮׳ׯazװazazױײazt�az״azazv�׶׾׷׸waz׹׻az׺gQaz׼az׽azwjaz׿az�az�v���v�azaz��azA������������dazAeaz����@&azazM������azg_az����Naz|��M��M������������M����M�~MM��M����M���;���;�;�����;���;O�������O���O�~����~O�~O����������MM�O�O��������MM�M���M�����^��8��2az�az�����az�����|az�azaz�az|�az|azaz����az�	azaz�
azw��
|az�az�azaz|��&����az��az�azaz�gC�gC�gC�gCw|az��!|��|� az|az�"�#|az�$@az�%@az�'�.�(�,�)azaz�*|�+||�az�-az|az�/�0�1�az|az�3�4Baazaz�5�6az�7azaz|�9�Haz�:�;N�<�E�=�C�@�>�?�@�@�@�A�N�B�@�]�@�l�D��@�@�F�l�G��@�I�]�Jazaz�Kaz�L�M�P�Naz�Oazt�az�Qazaz�Raz�S�Taz�Uaz�Vaz�Wazaz�Xaz�Y�Zazaz�[az�\t�azL�az�_؃�`؀�a�H �b�c�i�d�f�eazazgC�g�hazgQt�az�j�p�k�o�lu��m�nazgQgQazazgC�q�rgQaz�sb��tb�b��ub��v�wb��xb�b��yb��z�{b�b��|b��}b��~b�{�azAe؁؂L�ML�az؄ؠ؅؟az؆az؇؈az؉؎؊az؋az،az؍azazb�؏ؒؐazؑazb�azؓؔazu�ؕazؖazؗazؘazؙazazؚaz؛؜az؝azaz؞{�azazMءآMNأazؤ��azإئسazاazبazةتazثazجazحazazخدazذazرazazزgQazشazazصض�طazظazazعazغazػazؼazؽؾazazؿ�Baz�azaz��az��az��az����azaz����azv�az��azaz����azaz��az����az��az��az��az��az��azaz��v�az��ۯ������az������M���1az����az�����az��az��az��az��az������������������b���b�azaz��azb�b�������b�azazb�b���b�����b�b�az��b���azb��b�az�b��b�az�azb��az�az�az�az�azb�azaz��az��az��	�az�
���b�az�
az�az�azb��az�azb�az�b�az�az��b��b�azb��az��*��&�az��#��!� azb�az�"b�azb��$az�%azb�azaz�'�(b��)b�azb��+azb��,�-azb��.�/azb��0b�az�2پ�3ن�4�maz�5az�6�7�Yaz�8�9�Q�:�J�;�G�<�B�=�@�>u�az�?azu��Aazu�azaz�C�Du��E�Fazu�u�azu��Hu��Iu�az�K�N�Lu��Mu�azu��Oaz�Pazu�az�R�W�Saz�Tazaz�U�Vazu�azaz�Xazu��Zaz�[�g�\�c�]az�^az�_�a�`azu�az�bu�azu�az�d�eu��fu�azu��haz�iazu��j�kazu��lu�az�naz�o�zaz�paz�q�razaz�saz�t�u�xaz�v�wt�azt�t��yt�az�{az�|azaz�}�~فaz�azـazt�t�قكazt�لt�مt�azهazو٥ىazيًٚazٌazٍazَُٕv�ِّٓv�azْazv�ٔv�v�azٖazٗaz٘azv�ٙv�azazٜٛ٠azٝazٟٞv�azv�١azv�٢٣az٤azv�az٦az٧azaz٨٩az٪ٵ٫ٱ٬w٭ٯٮazwazٰwazwٲazٳazٴazwazazٶٷazٸٹazwٺټٻwwazٽazwazazٿaz����az����azaz��az����az����az��azmmaz��jaz����az������az����������az��azazt���t�azt���az������azt���t�az����azt�t���t�azaz����t���t�azt�i�L�az������Ba@&��t��������u���:����������������wwv���v���v�v���v�v���u����u��������������u���������u������u�u��u��u�t����w��w�	�w�
�w���w�
�w��w��wt��w���wqt���wq��w��wt��t��wwq��u�wqu���5��.�v���-� u��!�(�"�&�#u��$u�u��%u�t�u��'u�t��)u��*u��+u�t��,t�u�u�v��/�2�0�Z�1�Zv��Z�3�1�4�1�Z�1�6t��7t��1�8�1�9�1t��;�V�<�G�=�C�>�?t��t��@�Am�Bmt�mm�D�Em���F��m�H�Km�Iwc�Jwc���L�P�M�N��{�{��O{�w��Q�Sw��Rw�{�{��T{��U{�ub�W�f�X�a�Y�]�Z�[ub�[ub�\ub�[w*�^�_gC�`gCv�gCgC�b�ckXgC�d�ekXgCkX�g�o�h�l���i���j�k�0���0�0�m�n���0���p�t�q�����r���s������w�vڟ�wڒ�xڃ�yڂ�z�~w�{w�|�}�-w�-�-��-ڀځ�?�-�?�?�ڄڌڅډwFچwFڇwFڈwFv�v�ڊڋ�v��ڍڐڎv��ڏ�v�v�ڑv�b�b�ړڔڗb�ڕږwb�wژڜڙv�ښv�wڛwv�ڝ�^v�ڞv��^ڠ��ڡںڢګڣڧڤ��^ڥ�^ڦ�^�ڨ��کڪ���ڬڰ�ڭڮ���گ���ڱڹڲ��ڳ��ڴ����ڵ��ڶ��ڷ��ڸ������ڻھڼw�ڽ�wڿv�v���v�w��wv�����������������v���v���v�����������b���b������M���Mb��M���������M�������M�������������������������i�i�����;���&�����������������v�������v���v���w�v���v���v�w���wUw���w�wU������������a�wUa�a���a�wwgQ�����gQgQ��gQ�gQgQ�gQ��gQgQw*�w*gQw*�"gQ�����v�wv�v���	���
�w��w�w��
w�j������j�j�jw�w��w�������������������"�� �j�j��j�!�j�j�#�$j�%jjj�'�1�(�+�)az�*azjazaz�,�-w��.azaz�/�0w�azw��2az�3az�4�:�5�7�6�
w��
�8���
�9�
����az�<�k�=�Q�>�E�?az�@�D�Av�az�B�Cv�azv�v�azaz�Faz�G�H�Iw�w��
�J���K���L���M���N���O���P���
�R�Tt��Sb�az�U�\�V�Y�W�XwFv�b���Z�[������v��]�d�^�a�_�`���0���-�b�cv�wv��^�e�h�f�gw�M���i�i�j��w�wUa��lۊ�m�}�n�qt��ot��p��Z�r�um�sm�tmt��v�y�w�xjj�����z�{�w�j�|���~ۀ�azjazہۉۂmu�ۃۄu�ۅu�ۆu�ۇu�ۈmu�mu�mۋېیێu�ۍv�v�azۏmv�ۑۡےۖu�ۓ۔ەv��v�b�ۗۚۘۙwwww�ۛ۞ۜ۝�wU�^�M۟۠���?b�wFu�ۣ۪ۢۤۧۥۦb�w�wۨ۩w���a��M۫ۮۭ۬��v���wb�۰ۼaz۱۲ۻ۳daz۴az۵۶az۷azaz۸۹azazۺazb�L�d۽ۿ۾azazd{az�az�q~������b���`���`�L����������iMd��iM���Qc���d����d���znd��b�Ld��������������b�L`�M������iM��d��d��d��d؂diMd��diM��Lb����n���,��az�������������az|az��g�g�az���az����az��azaz��az����az�azaz�az�azgC���M�|�|�|�|�|�|�|�|�azaz�az��az�azaz��	azaz�
azu���!�
�az�g�|az�az�|��||�|��||�|��||��|�||��||�� ||@�"azaz�#az�$�%az�&az�'az�(az�)azaz�*�+azt�az�-܍az�.�/�gaz�0�1�U�2g��3�>�4�6�5azaz|az�7�8�:az�9|azaz�;az�<az�=az��?�J�@�E�A�Caz�B|az�DazazNaz�F|�G�H|�I|�|�K�Paz�L�Maz�Nv��OazazgC�QE�R�Aaz�Saz�Taz@az�V�Waz�Xaz�Y�c�Z�^�[w*�\wUaz�]gQb��_az�`�ab�gQ�bgQgQaz�daz�eaz�fazb�gQ�h܃�i�jg�az�kaz�lazaz�m�naz�o�{�paz�qazaz�r�saz�tazaz�u�vazaz�waz�x�yaz�zazmazaz�|az�}�~az�az܀azaz܁az܂maz܄az܅g�܆az܇azaz܈܉az܊܋jaz܌azjaz܎ܙ܏azazܐazܑazܒܓazܔazܕazv�ܖܗazܘazt�azܚܣܛܝazܜg�azܞܟg�azܠg�g�ܡܢg��%g�azܤܥazazܦܧ��ܨL�ܩܺL�ܪܫܶL�ܬܭL�L�ܮL�ܯL�ܱܰL�ܲL�ܳL�ܴL�L�ܵ�+L�ܷL�L�ܸܹL��L�L�ܻܼL�ܽ��ܾL�ܿ���L��L�L���L����L���L���L��L�L���L���L���L���L�����L�L���L�����L�L��:��ݦ���c���������L���L���L���L�L���L�����L���L�L�����L��L�����L���L���L�����L�L�����L���L���L���L�L����L���L�L�����L�L�����L���L�L�������L���I��+�����L��L��L��L�L��L��L��L���L�����	L��L���L��L��L�L��
�L��L��
�L���L��L�L��L��L��L���L��L�L����!��L��L����L������� L��L��"�'L��#�$L��%�&L��L���(L��)L��*�L���,�;��-L��.�/L��0�6�1L��2L�L��3�4�5L���L�L��7L��8�9L��:L��L��<L��=L��>L�L��?�@�DL��A�BL�L��CL��L��E�FL��G�HL��L���J�[�KL�L��L�M�TL��NL��OL��P�QL�L��RL��SL���UL��VL��WL�L��X�YL��ZL��L��\L��]L�L��^�_L�L��`�aL�L��bL���d�p�eL��fL�L��gL��h�iL��jL�L��kL��l�mL�L��n�oL��L��q�}L��r�s�t�L�L��uL��vL��w�xL�L��y�zL��{L�L��|�L�L��~�ݕL�݈݂݀݁L�݃L�L�݄݅L�݆L�݇L��L�݉ݏ݊L�L�݋L�݌ݍL�L�ݎ�L�L�ݐݑL�ݒL�L�ݓݔL��L�ݖݞݗL�L�ݘݙL�L�ݚݛL�L�ݜݝL��L�L�ݟݠL�ݡL�ݢL�L�ݣL�ݤݥL�L��ݧ��ݨ��ݩݲݪL�L�ݫݬL�ݭL�ݮL��ݯL�ݰL�ݱ�L��ݳݴ��ݵݽݶL�L�ݷݸL�ݹL�L�ݺL�ݻL�ݼL��ݾ�ݿ���������������A�L�����L�L���L���L�����L�L�����L��L���L�������L������L�L���L�����L�L����L�������L�L���L����L���L���L���L�������L���L�L���L����L�L���L���L���L�����@���������������L�����L���L���L��L��L�L��L���L�L��L��L��L���L���L��L��L��L�����L��L��L�L��L��	�
�
�L�L���L��L��L�L��L��L����-��L�����������������A���&�L�� L�L��!�"L�L��#L��$L��%�L��'L�L��(�)L��*L�L��+L��,�L��.�7�/L��0L��1L��2L��3L��4L��5L�L��6L���8L�L��9L��:L��;L��<L��=�>L�L��?�L��A�J�BL�L��C�DL�L��EL��FL��GL��HL��IL���KL��L�X�M�V�N�UL��O�PL��QL��RL�L��SL��TL��L��L��W�L��Y�aL��Z�[L��\L�L��]�^L��_L�L��`L��L��b�cL�L��d�e�iL��f�gL��hL�L��L��j�kL��l�mL���L��o���p���qޮ�raz�saz�tޭaz�u�vުaz�waz�xaz�y�zޔ�{މ�|ކ�}�~���D�ހ�ށ�ނ��ރބ��ޅ�Sއވ��SC�ފލދތ�����ގޑޏސ���D�ޒޓ��SC�ޕޞޖޚޗޙ��ޘ�������"ޛazޜޝ�����ޟިޠS�S�ޡS�ޢޣS�S�ޤS�ޥަS�ާS�S�J�S�ީ-azazޫazެLazMazޯazazްޱaz޲F�޳az޴azaz޵޶az޷az޸az޹az޺azaz޻޼az޽azaz޾az޿az�az�az@����az����azaz��azg�����az����������az����az��azaz����az��az��azaz����azaz����az��azaz��az��az��@azaz����azaz��azwc��az��azazg���������azaz����az��az�����gC���az������azgC�����az��azaz��az��az���az�az�azaz�gCazaz��az�azgCazgCazgC���azgC��az�az�az�az�az��azaz�	az�
�azaz��
azazgC�az�azaz��az�azaz�az�az�az�az�az�gCazaz�az���g�azg�az� �6�!�0�"�-�#�,�$g�g��%�&g��'g��(g��)g�g��*�+g�g���g�az�.�/azg�g�azg��1g��2�3azaz�4�5azwcaz�7�r�8�H�9azM�:M�;�<�@�=M�>M�?MM��M�A�B�DM�CM�����E�F�����GM���Iaz�J�Y�K�Q�L�O�M�Ng�Mg�MM�PM�M�RM�S�X�T�V�UMMg��WM����M�M�Z�iaz�[az�\�]�_az�^azv��`�e�a�caz�bazw�dazazw�faz�g�hazwwaz�jwc�k�n�laz�mazmazu��oaz�paz�qazm�s�v�t�uazu�u�az�wߠaz�x�yaz�zߏ�{ߋ�|߄�}߂�~߀az�u�az߁azu�az߃azu�az߅az߆߉߇߈azu�azu�azߊazu�ߌazazߍazߎu�azߐߜߑߗߒߕazߓߔazu�azߖazu�azߘazazߙߚߛazu�azu�ߝazazߞߟazazu�ߡߧazߢߣu�ߤu�azߥazߦazu�Mߨߩߪg�M߫ߴg�߬M߭߮߱߯߰g�Mg�M߲߳g�Mg�MM�%߶��߷�߸�z߹�ߺaz߻�߼�(߽�߾az߿az�az�������������az������w����wgCwaz��w����azgCwv�������azaz��az��azubaz����azaz��gCaz��az��az������az��azaz�^az��az��gQaz�������az��������az��az�az����az��az�az��az�������az��az��azaz��������az��az��azaz����azaz�az�az��az��az�az�azwaz�az�az��az�az�az���az�	��
az�az���
azaz��azaz�az��az�azaz��az�az�azaz��az�az�az�azaz��Baz�az� azaz�!�"�%az�#az�$�Baz�&az�'az�Baz�)�/�*�Daz�+�,az�-�<�.az�/�7az�0�1az�2�4az�3b�j�5�6v�azt�m�8az�9az�:azaz�;t�az�=az�>az�?az�@�Baz�Aazv�az�Ct�azaz�E�F���Gaz�H�IazE�J�m�K�\az�Laz�Maz�Naz�O�P�Vaz�Q�R�Sv�w��T�U�����azaz�W�X�Yv�w��Z�[�����az�]az�^azaz�_az�`�a�gaz�b�c�dv�w��e�f�����azaz�h�i�jv�w��k�l�����azaz�n�o�az�paz�q�r��s��t�{�u�x�v�ww�w*wb��y�z�"wwc��|�~�}gCkX����v��v�gQ�az�az��w��ubaz��������w�w*wb����"wwc����gCkX����v��v�gQ�az�az��w��ubaz�azaz�����������w�w*wb����"wwc�����kX��ubw���v��v�gQ�az�az��w��ubaz���������w�w*wb����"wwc�����kX��ubw���v��v�gQ��az��az����w��ubaz��az��az������������J���*�������gC��kXb���������w*���������������0T%~�������;V����������������Tz�	�����S��"gQ����v�b�v����������������1"��<����RT���,��������S�X���W��v�wU��-��gC�kX�w�w����
�b�������S4�&��e����5�^����
��	�B��T4������
�Q��v�������S��wF��TC?U������w���i�v�'v���b�wb��� �'�!�$�"�#v�v�a����%�&��[�?�M�(v��)v���v��+�3�,�.gC�-b�kX�/�1m�0b�gCgC�2b�w��4�6gC�5kXm�7�9b��8b�gCgC�:�;b��<�C�=�@�>�?S���W�y�A�B������R��D�G�E�F���S�8�H�I�0T%~���K��L�q�M�_gC�NkX�O�Pwc�Q�X�R�U�S�T�J��y�V�WS��wF�Y�\�Z�[TC?U���]�^w���i�`�n�a�bb�ubw��c�d�k�e�h�f�g'v��a��i�j����[�?�lgC�mgCTgC�o�pv�b�wb��r�ugC�skX�tw*b��v��w�xgQv��y�"�z��{�~�|�}�S�8���S��1"������<RT�����,S�X��v���gC�������Wv�wU����-���b�w����gC�kX����v�����������v������v��v���?���v����9�HV'v����b��b���v�b�wb���gC�b�kX����b�wcubb���w�b�gCv�������v���v��v�v���v��v��v����Q��v�����m��m����m��m������������t������������e�����o��m��m�`mm��m����m��m������������S���W�y����������R���m��m��mv���������������b�gCmgC����w��kXv���gCgQgC��v���v�v�����v���v���v����Q��v�������v�������mb�gCgC�gCw�gC��wkXv�ub���v���v�v��	�
v���v�v��v��
�v�v���v���v�v���b��5��1��/��%���������;V����������Tz�	� �#�!�"v����$w����&�*w�'w�(w�)�?���+w�,w�-�.�9�HV'w�0wgCv��2w�3�4wkXv�w�6�Z�7�X�8�Hw�9�:�A�;�>�<�=t��������?�@�e�����o�B�E�C�D�J��y�F�GS4�&��e�IgC�J�Q�K�N�L�M��5�^���O�P�B��T��R�U�S�T���
�Q��V�W�`v���M�Ywv�w�[w�\�akX�]�^w�_w�`w��T4v�w�c�{�dw��ew�w��f�g�v�h�o�i�l�j�kR�S	�����m�n�4RF����p�s�q�r����&�t�ubD����ww��xw��y�zL�SC�����|w��}w�w��~��������R�S	��������S����w���T���F���>�w��w��������������w����v�w���w��w���R�S	������v���v�w��w����v�w���w��w���R�S	�����v���v�w�����w��w����w��������R�S	�������4RF�����������&��bD�����w���w���w�����L�SC������w���w�����w���������������R�S	����������S��������w���T�����F���>��w���w��������������w��
F���az������ub������gCgCww��kXv���������gC��wgC����gCwwkX��gQ��gQv�gQ�az�az��!��
���az�az�az�az�az�az�az�
F��az�az�az�az�az�az�	az�az�����
����v�����t�����v�v���v��v��v��v��v���v��v���v����v��v�v��� v�t�v��"az�#�)�$az�%az�&az�'az�(azt�az�*az�+az�,az�-az�.azt�az�0�t�1�l�2�\�3�M�4azaz�5�6az�7�B�8az�9azaz�:az�;�<az�=az�>az�?azaz�@�Aazaz@az�C�Dazaz�E�Faz�Gaz�Haz�Iazaz�J�Kazaz�L@az�Nazaz�O�Paz�Qazaz�R�Sazaz�T�Uazaz�V�Waz�Xazaz�Y�Zazaz�[@az�]az�^az�_azaz�`�aaz�baz�cazaz�d�eazaz�f�gazaz�h�iazaz�jaz�k@az�mazaz�naz�o�pazaz�q�razaz�sazw�uazaz�vaz�waz�xaz�y�zaz�{az�|az�}az�~azaz�az��azaz��az�az�az@az���az�azaz�az�az��az�az�az�azaz��az�az�az�az�azaz��azaz�az�@az�azaz��az�az�az��az��azaz�az��az�az�az�azaz��azaz�az�az�az@�azaz��az�azaz�az��az�az�azaz�az��azaz�az@������Waz�az��az��az�����H�����������������������azgQaz��gQaz��������gQazgQaz��azgQaz��azaz������gQazgQaz��������������azazgQ��azgQaz��az��azgQaz��az������gQgQazgQaz�����������������azazgQ��azgQazaz��az��gQaz����az�azazgQ���azazgQ�azgQaz�����azgQ�gQaz�azaz�gQaz��
��az�azgQaz�	azgQ�az�az�
azaz�az��azaz�az�az�azgQ��-��!���azaz�az�azgQaz����azgQaz� azgQaz�"�)�#�&�$az�%azgQaz�'az�(azazgQ�*azaz�+�,azgQaz�.�>�/�7�0�4�1az�2�3gQazazgQ�5az�6azgQaz�8�;�9az�:azazgQaz�<az�=azgQ�?�Daz�@�Aaz�B�CazgQgQaz�Eazaz�F�GazazgQ�I�P�J�M�Kazaz�Laz|�Nazaz�ONaz�Q�V�R|�Saz�Tazaz�Uaz�H:Ae�X��Y��Z��[��\N�]��^�jaz�_�`�e�a�d�b�c[�_F[�Q�cWN�f�i�g�hVpOEOTNNOc�k�{�l�p�mcW�n�o[�Q�[�Q��q���rQ�N�s��t��u��v��w��x��y�z��N�|��}�~b�azv�azaz�azmM��������oMM�;�M�J�OM��MM�M�M��M�M�M�M�M�MM�az�az��azaz��az��az�az��az�az�az�az�azv�az�az�az�azaz��azaz�az�azv��azMaz����azAeAeM����d�MM�M�;HG|������az�azM��aznWaz����azaz�m�b�����d��d]Q'az����������az����azaz|������������az|az��az��@|��az|azaz����az��|��az|az���������������az||az��azaz|����az��az|����������azaz��az����az��azaz����az��az��azaz�K��azjaz��azaz��az|��
��az��az�az�gQ�az�az�az�azaz��az�azgCaz��az�az�az�az�az�	gCaz���az�
az�����@�@���az�az�az@azaz��az��azEAe@&��$�az��az�az�@&d� �"�!azazi�az�#i�az�%�`�&�7�'��(�Daz�)�*M�+M�,�J�-��.�O�/�O�0�O�1�9�O�2�3�6�O�4�O�5�OM�7�O�O�8M�O�:�?�;�O�O�<�O�=�O�>M�O�@�O�A�O�B�O�O�C�OM�E��F�f�G�Y�H�U�Iaz�Jaz�Kaz�Lazw��M�Nw��Ow��Pw��Qw�w��Rw��S�Tw�azw�az�Vaz�Waz�Xazj�Z�b�[�^az�\az�]v�azaz�_�`az�aazazv�az�c�dazw��ew�az�g��h�s�i�p�j�m�k�lazv�v�az�n�oazjjazaz�qaz�rgQb��t�{�u�x�v�wwb�b�gC�y�zgCb�b�w�|��}�~wb�b�gQ�gCgQv������azw�gQw���az�azw��v�azazt�������u�t�wu���u�t�t�v�������u�u�m�u�t�u�az��az�az�azaz�az���@������������������������-����?�-�?���wF����wF��b��b���b��b�wwv����������^v��^������������b��b����������M���M�����i���������i��w���w�a���������������aza�az�����w���w��wq������������wq��v���v��Z�����Z�1��t��1t�����������az����az����������wcwc������������{���{�w���w�{�����{��[��az�[az�����������u��u����������u��u�az�������jj����j�jj�jaz�	��
���
w��w������������j�jaz����az�azw�w�������
���
�����az��/��'� �$�!�#t��"t�mm���%az�&m��m�(�,�)�+���*��ww��-az�.w�w�0�8�1�5�2�4�0�3�0v�v����6az�7�������9�=�:�<w*�;w*?U?U��>az�?az�az�A�x�B�c�C�Q�D�L�E�I�F�HgQ�GgQ�"�"gQ�Jaz�KazgQaz�Maz�N�Paz�Oaz�&�&az�R�Z�S�W�T�Vw��Uw�azazw��Xaz�Yazw�az�[�_�\�^�]gCgCaz�`�bS��aS�wwaz�d�l�eaz�f�hkX�gkXaz�i�kaz�jazv�v�az�m�qaz�n�oazv��pv�az�r�u�saz���t��az�vazw�wwaz�y��z��{��|��}azv��~v�az�azv��v�az���azv��v�az�azu��u�az�����azu��u�az�azm�maz���azwU�wUaz�azw8�w8az�az�����azv��v�az�az���v�v�@v�az�az�az�����az��6�az����az�az����az�az�gQgC����b�azmkX��v�azt�v������azv�az��v�v�jv�������v�mgQb�����v�mjaz����|�������az����azaz|���������azaz����azaz��wc��wc��wc��wc����wc��wc���wc����
������������b�����b�b���b�������b��"w*b�ub��ub��ub��ub����ub��ub��w�ubw�v�w���w��j��j��j��j���j�����j��j�jj�az�az�az�az��az�az��azaz�i��
����az�i�iaz�	azaz�i�azaz�az�i����t�azv�v����gQwU�wU�wU�wU��wU����wU��[��[wUwv���/� �%�!�#gC�"w�v��$u�az��gC�&�'�.�(w�az�)az�*az�+az�,�-azw*azazm�0�4�1gC�2�3gQt�v�v��5azazv�dN�8�9Eaz�:�Caz�;�<az�=az�>azaz�?�@az�Aaz�Bazw*az�D�_�E�R�Faz�Gaz�H�N�I�K�Jazazwaz�Lw�Mwaz�Oaz�Paz�Qazw�azaz�S�Taz�U�Y�Vazaz�W�Xazw*azaz�Z�[�]az�\�wazaz�^azt�azHG�a�w�b�daz�cazd�eaz�faz�gazaz�h�i�jgCb��kkXgQ�lgQ�mgQ�ngQ�ogQ�p�qgQgQ�r�sgQ�tgQ�ugQgQ�vgQ��az�xaz�yazl�{��|��}��~�az�az�az�az|�����azazNaz��azaz��azazM�az�azaz��azaz��az�azaz��az�azaz��azaz�az��azaz��az�az@az�����az��azp�cW@����@&azazi���MazaznW����az�Mazaz�azN����NazM��������������Ev����H�E�H:H�����E��azL��LA��������E��AeE����EzEAE��������EH:H�Ez������H�Ba��Ba@�g���������E�������'����E��EE��E����E��EE����E��EE���E���������EAeE����E��Ae����������E�'AeH:�'�����'��@&@E��Ae�M��cW��[lx��lx�lx��lx�lx�lx����lxlx�lx��lx�lxlx�lx�lx�lx�	�
lx�lx�lxlx�
�lxlx��lxlx��������)���azjaz��E�azaz���"az�az�az��az� �!az�1�1azaz�#az�$�%az�&azaz�'az�(�az�*��+�,azM�-az�.���/��0�k�1�C��2�3L��4L�L��5L��6�7�=L��8L��9�:L�L��;�<L�L��L��>L��?L��@�AL��BL�L���D�L�EL�A��F�GA��HA�A��IA��J�KA��A��M�X�N�W�OA�A��P�QA��RA�A��S�TA��UA�A��VA�L�L�A��Y�bA��Z�[A��\A��]A�A��^�_A��`A��aA�A�L��cA��dA�L��e�fA�A��g�hA��iA�A��jA�L�L��l�m�vL��nL��oL��p�qL�L��rL��sL��tL��uL���w��xL�L��yL��zL��{L��|L��}�~L�L��L���L��L��L�L��L���L�L���L�L���������L�L��L�����L�L��L���L�L���L�L���L��L�L���L��L�L�����L���L��L���L�L���L��L��L�L��L��L���L�L��L���L��L�L��L���L�iL��L����L�L��L��L���L�L��L��L��iL��L��L��L�L���L�����L�L���L����L���������������L�L�����L������L���L���L�L��L���L�����L�L�����L�L�����L��L�L�������L�����L�L�������L����L���L���L�L���L��L���L���L���L���L�i����L���L�����L���L�L�����L��L���L����L��L��L��L��L�L��L�i�L�L��L���L��az@az����azaz�|���1���	��
����az�
azH:azaz��|��azaz�az�az�az|az����az|�|az�az�azaz|��,��#az� az�!�"az�?az�$�'az�%az�&az|�(azaz�)|�*az�+gCaz�-az�.azaz�/az�0�?az�2�g�3�O�4�B�5�;�6�9�7�8ww*v�v��:gCv�j�<�?�=�>v�mkXb��@�AwazwUu��C�I�D�Fu��Eazv��G�H{�v�t�m�J�L�Kazwb��M�Nv�azb�gC�P�Z�Q�W�R�U�S�Tv�jv�b��VazkXazaz�X�Yazw�az�[�a�\�_�]�^azwv�gC�`azubaz�b�d�cb�t�m�e�ft���b�az�h�y�i�n�jazaz�k�l�mv�v�gCb��o�v�p�s�q�rv�gCb�v��t�uv�v�v�v��waz�xazv�az�z��{��|��}��az�~����������������az�������v�v��v�����v���������w���iw��w��i���a��ia���M��Ma��M�����b�wF�wF�wFb�b��b����������������v��v����v��v�v�v��0��0��0��������������������������������������������wU��wU������wU������?���?���?���������-�������������-�������-����ww����www�����������^���^w�^v���v���v�������������b�b���b���b�az���D��������������������������b����������v�v���v�������v�����������w���iw��w��i���a��ia���M��Ma��M�����b�wF�wF�wFb�b��b�����
���	����
����v��v����v��v�v�v��0��0��0����/��"������������������������ ����!����#�)�$�&�%wU��wU�'��(�wU��*�-�?�+�?�,�?�����.���-�0�9�1�6�2�5�-�3�4���-����ww�7�8www�:�A�;�>�<�^�=�^w�^v��?v��@v����Bb����C��b��E�u�F�_�G�S�H�O�I�L�J���K��{�����M��N�v�v��Pv��Q�R��v����T�Y�U�V��w��W�iw��Xw��i�Z�\�[a��ia��]�M�^�Ma��M�`�g�a�e�bb�wF�cwF�dwFb�b��fb����h�n�i�l�j����k����mv��v��o�r�pv��qv�v�v��0�s�0�t�0���v��w��x�~�y�{���z�������|�}���������������������wU��wU����wU����?��?��?��������-�������-�����-����ww��www������^��^w�^v��v��v����������b�b��b��b�{�az��u������������wU�wU�wU��wUv��^���wUw�v�gC��wkXw��������ww�������?���������-��w��b���b��^��������az������gC������gC��gC��gC��gCv�gCgC��gC��gC������gCv�v�gCgC������������gC��gCkXgC����gC������gCkXkXgCkXgCgC��kXgCazt�az������azgCkXv�az������AenW|az��������������p�Exvaz�azazL���azazM��MAeazAe����az�azj�az��az���t��wazgQv�azgQ�	az�
�NL�|az�
���I��<��9���azazL���2F���nW��,�nW������nW����nW�nW��!nW� nW@��"nWnW�#�$nW�%nW�&nW�'nWnW�(�)nWnW�*nW�+nW���-nW�.nW�/nW�0nW�1nW�nW�3�8�4azaz�5�6az�7azazmazv��:azaz�;cWaz�=�B�>�@az�?azAe�Aazaz|�C�F�D�Eaz@&Aeaz�G�HcWAesGaz�J�r�K�P�L�Naz�MMp�az�OAeaz�Q�e�R�\az�S�Taz�Uazaz�V�Wazaz�X�Yaz�Z�[azb�kXaz�]@�^azaz�_az�`az�a�baz�caz�dazb�az�f�gAeaz�h�q�iNN�j�kN�lN�mN�nN�oN�pNOENaz|az�s�t��u��vaz�w��xazaz�y�zaz�{�az�|az�}�~azaz��azaz�az�az��az�az@azaz��az�az�azaz�az�az�az�az�az�w�az��az�v�azaz�az�az�t�az�az�||�|��|�||�|�|��||��|�|�|�||�@|��azH:azi���v���������azdL��M�M�M�L�M�azjaz����azaz�az�az��������������v���v�azt�����������u�v�t�v�����azt���t�����v�t�t���u�v�az��az��az��az��v�b�����`�Maz|����������azg4az��sGazM��������aznWMAe���u���j���U��M������@&��azaz|���2���'���az�����az����azaz��az����az�azaz�azv��az�az���azaz��az�azv�az�azaz��azaz�azv�����az��azaz�	az�
�azaz�az�
azv�az��azaz�az�az��az�azv�az���azaz��azaz�az��azaz�v�az� az�!azaz�"az�#�$azaz�%�&azv�az�(az�)azaz�*az�+az�,az�-�.azaz�/�0azaz�1azv��3az�4v��5�F�6�>az�7�8az�9azaz�:az�;az�<az�=azv�az�?�@azaz�A�Bazaz�Caz�D�Eazazv�az�Gaz�H�I�O�Jaz�Kazaz�L�Mazaz�Nazv�az�Paz�Q�Razaz�S�Tazazv��V�\�WG��XG��YG�G��ZG��[G�Gt�]G��^G�G��_�`G�G��aG��b�cG��dG�G��eG��fG��gG��h�iG�GtG��kM�l�o�mdM�nMnW�pazaz�qaz�raz�s�tazazwMd�w��x�|�yaz�z�{Nazdazaz�}�~az|azaz����ddaz��azMaz������_������������������������������_Q��������O��O��O��O��O��O��O��O��O��O���_��������O������_�����OQ���������_�����_��������a����������������b�gC��azazb�����b�gCb�az����azb���gCb�gC��������v���t���t�v�b���az��az��jgC����M�hM�������������M�M�hM�[����LazM�Ae����az|az��M�az��������az��azH:������L�az����azaz��az��az����az��azazgCg4az����Aeazaz��@az����d��<���az���az�azaz��az�azm�maz��	az��azaz��az�azw�azaz�
��az�v��
�azu�az���az�azazmaz�az��az�az��4��az�az��azaz��azv�az� �.�!�'az�"az�#�$�%v�azv��&v�az�(az�)�+v��*azv�az�,az�-v�az�/az�0az�1azaz�2az�3v�azaz�5az�6az�7az�8�9az�:azaz�;v�az�=�c�>M�?�R�@�H�A�E��B�C�D�_��1���F�G���_�I�O�J�M�K�L�O��p��N���P��Q��_��S�Z�T��U�W��V���X�Y��_���[�^��\��]��_�_�a��`��_��b�QMaz�e��f�gM`�az�h�i�~�j�r�k�q�ld�m�nA�+��od+��p+��H:azaz�s�t�z�uaz�v�x�wazv�az�yazw�az�{az�|azaz�}az�raz���H:azaz���az|�raz�azAeaz���az��g_azaz|���az�az������������_�� �
2T�����������������������/�.�������������������
������������_����_��!��a����������������D�!����_az��nWL����U���������������@&az`�az������az����az��b�������b�����b�b���������b�b���b�����b���b�b���b���b�v���b�b���b�����b�b�����b���b�v�b�����b�gCgQb�gC����az��azaz��azgQaz@��������az|azF�����azAeaz@��#����AecW|az�az�az���HGaz�����Q��2��T���c�T�c��2��r2��	���
������2��
�2���������2������2��T�c�������������2��2�����HGaz�az�|HG� �!azaz�"azv��$�*az�%az�&�'az�(azv��)t�v�az�+�,az�-�:�.�6�/�3�0��1�2�O���_��4��5����7��8��9a��;�A�<��=�?��>���@��@��B�Q�C�O�D���E��F��G�H��I��J��K��L��M��N��-d��P����R�S�T.�����@�V���W���X��Y�|L��Z�[�d�\�`��]��^��_�O��a���b�c��O��e�s�f�k�g�i��h����j�A�l�q�m�p�n��o�������r��_��t�w�u���v�_��x�z��y��_��{�1�az�}�~�����������_���������� �2T��������!�����������
��-���
���=����������_�߫�������߫�M߫�M������_�����2�2�Q�_���@�@-K@�-K@�������k������]f�_����Q���1��L@&L���M��M��M�M���M���M���M�M�����M���M���M�M�h����������MM��M��M����M��MM������M�M��MM�@&��az��azaz����az��az��azaz����az��azv�az���������azaz�����-����������|��������|�6||��|�C��������������|�����|�����|���|�|���|�|�||����|��||���|�||������
|��|�	||�k�����
||�|��C||��|a|�������|��|��|�|�������������m�|� �&�!�#�"�������$�%���������'�*�(�)���������+�,����a����.�U�/�B�0�9�1�4�2||�3��|�5�7|�6|�k�8|�k|�:�?�;�=|�<�||�>a����@�A�k|����C�G�D||�E|�F||L�H�N�I�K|�J�m|�L�M||�����O�R�P�Q��|�����S�T|�|�k���V�j�W�b�X�^�Y�\�Z�[|�������]|����|�_�`�a|����||�c�d�g�e�f��|||�h�i|�������k�x�l�s�m�p�n�o��||���q�r��|�|���t�v|�u������w|���y��z�}�{�|��|��|�~���||V	�������|||��az�����������_���_������O����_��������Q��_����O����a���O���_����������_��O�@���Q��_�������O��������_���������@�@���|�������������������_���_���������������������@������_az�߫���������������_�������������
��_���_����4���az���������������������O������O���O�O�����O�O�����O���O�O.	�������������_�_���_���������Q�_�_Q����_���_��������������O�����_�Q���Q��������O���
�	���_���_��
az�����������������������������'��"�����_�� �!����_�#�%�$��!���&��_�(�.�)��*�-�+���,�a�O��/�1�0���_�2�3�����5az�6az�7�>cW�8�9cWcW�:cW�;�<cW�=cW�cW�?�R�@�EM�A�B�C�1d�Db�dcWM�F�G�N�H�K�I�JcWdaNcW�L�Mg�(��g��Oy��P�Qg�M�M�S�TNcW�U�W�VcWM$�X�[��Y�Z�!��!�\�^�0�]�0�?�?gv�`��a��baz�caz�d��e��faz�g�{�h�naz�i�jaz�kazaz�l�mazazgCaz�o�paz�qaz�razaz�s�taz�uaz�vaz�w�yaz�xazv��zv�azv��|��}��~�azQ������M�M�MM�M��M�M�M�MMg��M�;MM��MMg�az��azaz��azu�az�������6��������������������1����az`�azaz��azaz�az��az�azazmAecW��`��az�az��az�az�az�az�azv�az`�azaz�az��cW���az����������������������Q2������������������
��A����_��������������_����������������_�������������_����N�����������������cW��������������������
Q߫������O����������!��������������߫���������Q�����	���������\.��k�z����_�_��
����_��
�
���O������������_1������_�������_��_��_����� �"az�!AeL��#�<az�$�%�4�&az�'azaz�(az�)az�*az�+az�,�-azaz�.�/az�0az�1azaz�2�3azaz@�5�7v��6v�b�az�8az�9�:�;azv�v�azM�=�>d�?�q�@�X�A�H�B�F�C�D��g����E�q�g��Gg��o�I�V�J�T�K�;�L~�o�M�N�o�O�o�o�P�o�Q�R�o�S�o�o���UtO�tO�WM���o�Y�c�Z�`�[�^�\�]g�����g��;�_�;tOg��a�J�b���o�d�k�e�h�f�g��g�g�M�i�jg����Jy��l�o�m�n������~���p��M�raz�s��t�x�u�vz�@@�wz�@�y�{�z@@z��|�@�}�~@�@�@�@�@�@�@�d@�d@����d�d�d��d�dd��dd�d�d�d��d�dd�d�d��dazp�����g_���������_�������������_����������������������������-d�߫��������_�����_�������a����������������_����������Q����O���O���O�����O���O���O���O�O���O�����O���_��_��az������cWcW������cW��ycW��cWcW����cW�cW��������cW����cWcW����cW��cWcW��ghcW��cW������cW��cWcW���cW��cWcW������cWcW��cWy��cWcW�ycW��cW�cW�ucW��cW����az�az����@&M|M���U��	p�Ae|�
��?��"�
����_��!����_��������_�����_�Q�Q�Q�QQ�Q�Q�� Q�!QQ2��#�2�$�0��%�&���'���(�)��*��+��,��-��.��/�����1��_���3��4�5��6� �7��8��9��:��;��<��=��>�����@�J�A�F�B�D��C�k��E���G��H�I�_����K�O��L�M�N��_�_��P�S�Q�R�Q�_���T�_��VcWaz�WcW�XcW�YcW�ZcW�[cW�\�]cWcW�^|�cW�`��a�~cW�b�c�}cW�d�e�n�f�h�gazaz|�i�m�jaz�kazaz�lw�azaz|az�oaz�paz�q�raz�sazaz�t�uazaz�v�waz�xaz�yaz�zazaz�{�|azaz@azL�����g4M�az��az�az����F���F��F�i@�F�i@��F��F�i@F����F����F�i@F��F���i@��HF��
F����F��F��F��F���F���F��F��F�i@�F��F��i@i@F�����az�az@&d�daz���M�p��M�@&M�McW��@Maz�������������@�������������_��_����������Q����2�Q2�2�����������������������������_�����������1�����<���������%���"������d�d��dd�������������E����EEaz��������@E�E��AEAe�����������E�~�~Ae����A|�A��E�az��C�C����Ae�'��Ae��������A�
_E��Ba�����
��	A��@&Ae��Ez��
H:H:��H:s�H:�E�
��
�������AE�AH:��9H:��@A�6E�� �EE�E�!EEA�#d�$ddAd�&�'�)d�(��d�*��+d�,�Q�-�B�.�;�/�5�0�4d�1�2�3�h4hBQ'l{
�6�7ML�8�I�9�:�*�9�H�V�<�?�=�>c�d{c����@�Ac�b�Ld�C�J�D�G�E�FNL�b�L�H�I`�`�Ld�K�N�L�McWMc�M�O�PNxv�nW�R�e�S�[�T�XH:�U�Vq~�WgQazgC�Y�ZM`�d`��\�_�]�^c�g_x�i�`�d�ab��b�cc��gg&p�L�f�v�g�o�h�ig_q~N�j�k�lhrM��m�nh��h�p�qM�y�r�u�s�tg&g	����rX�w�~�x�{�yLgQ�zwb��|M��}e�d�e���c�dL�m�daz���az�az�����aN���i�������������3���i����e����B����W��i�����i��������
i��i���e�������MM��MM��M�M�M�MM��M�M�M�M�M�MM�%��M��>Mb���b��b��b��b�b�p�az�L���Lm���m�m�����m���m�m���m�d������������|azdaz����azsGL�az��������az|M�������������F������V�H������������F��H�H�V�VF���F���F�F���F���������F���F���F���F���F���F���F�F�@F���F���F���F���F�����F���F�F�G�����az�����azaz��azaz|az�az��azaz|��	��az�az��azaz�mb���az�|az�
��azaz��
az�azu�v��azaz�azN�����K��H��6��5�azt����#��az��az|az�az� azaz�!az�"gQkX�$�+az�%�&�)�'|�(|�|�*az|az�,�4�-�0|�.az�/wazaz�1�2�3v�azazt�|azdazaz�7az�8az�9az�:�;az�<�A�=�>maz�?v��@azu�az�B�Eaz�C�Dazu�azaz�F�Gazu�az�Iazaz�Jp�d�L��M�}�N�|���O�P�j�Q�^�R�W�S�U�Tazv�azaz�Vu�az�X�\az�Y�Z�[��jv��1az�]azv��_�f�`�d�a�bazub�cw��t��ev�v�u��gm�h�i���Mwcm�k�p�l�n�mjgQaz�owkXaz�q�t�razj�s�w��u�waz�v�1wq�x�z�yv��wq���{�Zaz�ty�~��azaz�u���v�mu�Aeaz��az�g_t��az�az�����Q��Q�Q�N�����Q��Q�Q��Q�Q��Q�Q���OTU\Q����Q��Q�N;Q���Q���Q�Q�Q��Q�Q��YQ�����Q���Q�Q���Q�U�Q����Q�Q����Q�R�P�Q��Q�Q��Q��U�Q����Q�Q���Q��Q�OTQ��������Q��Q�N;�Q�N;Q�Q�������Q�O�O�P}��Q�Q�����Q�Q�OT���-����������azp�nW�����������������������������������������������������������������e����B����BB��B����B��B��B��B��B��BB����BB��B�y��B��B��B��BB����B�B�BB�B��BB�B���B��L�@&az|�nW�nW��%���az�az�azaz���
az�	azt��azt�waz�
�� az���az�az�jw���az�az��gQ�gQgQ�gQ�gQ�gQ��gQazgQaz�w�j�!azaz�"�#azaz�$azv��&nWnW�'�(nWnW�)�*nWnW�+�,nWnW)(nW�.�/�:�0�1nWaz�2p�N�3�4NN�5N�6N�7N�8N�9NQ��;azL�az�=���>���?���@�J�A�D�B�C`�AAeaz�E�FAeMAe�G�HHG�IHGaz�'�K��az�L�Maz�N�b�Oaz�Pazaz�Qaz�Raz�S�T�[�Uaz�Vaz�Waz�Xazaz�Y�Zazv�az�\az�]az�^az�_azaz�`�aazmazaz�ce��d�e���f�m�g�j�h�iu�azmgC�k�lt�v��Kaz�n�y�o�tv��p�qv��rv��sv�b�v�az�u�vaz�waz�xazgQaz�z��az�{�|az�}az�~az�M���azaz����azaz�M��w��az��az��az�Kaz������������kXazv�az������az��az��az��azmazazw������azaz�az��gCaz����az�H|M����������az��nW����������azu�az����b�az������v�m��m��mazt���������t���t�t�����t�t���t���t�����t�t���@t�t���azt���������azgC������az��azb���b�azb�azaz��az����azaz��az��azgC����AcW��az��E�E���E�����E���E�E�����E���������@&M@&A����Np�L�����A����A����AA��A�������A
QAA��A����A��A��AA����	�����������L�az��Ae����[�W�N;��Q���Q���Q�����Q���Q�Q���Q���Q�����Q�Q�����Q���Q���Q�Q�����nWg_ME����AeazAaz��az|dH �
����b��6A�
��az�az�w�az����az������az�1az�azazwaz�az�azv�az�b�t�� �"�!azv�az�#�1�$�+�%�(�&�'wt�v�gC�)�*azb�kXaz�,�.�-azjaz�/�0azv�v�u��2azaz�3�4�5wazwaz�7c��8�=cW�9�:g4�;azaz�<gQv��>az�?az�@�O�A�L�Bv�v��Cv��D�Ev��Fv��Gv��Hv�v��I�Jv��Kv�azv��Maz�Nv���v�az�Paz�Q�R�Waz�S�Taz�Uaz�Vazmaz�X�^�Yaz�Z�\b��[b�gQ�]azubgC�_az�`az�aazv�v��c���d��e�p�f���gaz�h�maz�i�jE�k�lE
��OEaz�naz�o|az�q�tt��rm�smt��u�vv�t�az�waz�x�y�|�z�{v�gCv�b��}�~t�v�u�m��az��az������azaz����az��azazwc��az��az��az��az{�azazA��������M����az��azazv�A����az��azaz����az��az��az��az�Kaz����MA��@��������������
���������
�
����
��
�
��
���������'����4������������'���������'��'�������'��'���K����������������'�������'����������A�AA����������AeAAeAA��MH ������az������AAaz������az������������������������������������������������Aeazaz��az��az��az���-�������������az��az��az��az��az�az��������az������az��azA����azL�g4Ae���s���D���|@&��;����az���b���az�azaz�	az�
az��azaz�
�azaz�az�azv���azkXgQazaz�az�az��azb�azaz��az�az��$��!�� N�9N*�,�"�#�,��H:�%�0�&�/��'�(���)��*�+���,�-���.��F�F��1�23s��,�3�,�4�5�,�6�,�,�7�,�8�9�,�,�:�,s��<Ae�=�AAe�>�?~~�@Aee1�BAeAe�C~Ae�E�I�FM�M��G�HM�M����Jaz�K�_�L�X�M�R[�NM��OM��P�QM�M��[�S[�T�U�W�VM��M��[�Y�Z[M��[M��\M��]M�[�^�M��`�e�aM�M��bM��cM��d[M��f�h=�g=h�iM��j�mM��kM��l[��n�p�oM�[M��q�r[�[M��t��az�uaz�v�w���x���y�az�z�{�}b��|b�gCgC�~v�u�������������v�jwm����v���gQm��������v�v�u�az����t�v�gCj��az������������v�jubv�����kXv�v�w������azkXw�����azw�v�azaz��������������az��azb�����gCv�u�v���������jwmv�����azv���gQ������������mv�u�v�����t�azv�gC��������jv�jub����v�kXv�v�����H L�L�az��H ���v���Y����H Maz�������������������������mv�v���v�azaz����v�gQv�v�����v�v���v��^������������v���v�v�v���v�az����v���v�b�����kXazkXaz������������azb�v�v�����azv�v�v���������v�azazb�����gQ�t�v����
������������v���v�v���v�t�gQv�������v�b�waz��������w*v�w*gCgQ�v�gC����gCw*w*gC�	gCgCw*�����w�
��w*b�gCv����w*jw*w*ub���az�b�gCub����gCub�w*��gCubgCkX� �8�!�+�"�'�#�&�$azgC�%t�azubv��(v�az�)v��*v�kX�,�1�-�0v��.�/v�azv�v�az�2�3azv��4�6az�5v�azkX�7azkX�9�E�:�>kX�;kX�<�=kXkXaz�?�D�@�B�Aazu�az�CkXkXubw�az�F�O�G�Jaz�Hub�Iubv��K�M�Lazazb��Nv�azv��P�U�Q�T�R�Sv�mv�v�azv��Vaz�W�Xmv�azv��Zazaz�[�\�`�]az�^azaz�_azgC�a�laz�b�caz�daz�eaz�f�gwUm�hazaz�iaz�jaz�kazj�maz�nazaz�oaz�paz�qaz�raz�saz�taz�uazw�w���x�yaz`��zaz�{�}�|az|azaz�~�����az��az����az��azv���azv�azaz|��H azH ������������H ������H ��H azaz��azA����az�������Ba��p�����M�����MMM�az��az��azM�az��az��azAe��������������azaz|����`�����az��azaz��azv�M�|������az��azAe��Ae��Ae��Ae��Ae��Ae��az����az������az������azaz��az��az��b�az��azaz�����az��az����az��az����az{�gC����az��azv�azaz��az���������az��azA��azazd������az|azaz��az�_���i���"������az��azaz|����az��azi���A��A�������������������v�u�v�j����wmv���azv�����������gQv�������gQmmv���������v�u�v�t�����t�azazu����������v�v�v�gC�jgCaz��	v��gQj�
ubjv����
�v�kXv�v���wkX�azw�az���az�az�azazw��az����az�wkX�azw�azaz� �!azw�az�#az�$�g�%�faz�&az�'az�(�)�W�*�<�+�/�,�.u��-u�b�b�az�0�4�1az�2az�3az�&az�5�8�6t��7t��wwq�9�:t�w�;w�w�=�J�>�C�?�A�@gCwgC�BkXgCkX�D�G�EjkX�Fj��Hazj�Iw�az�K�O�L�N�MgQazgQwv��P�Su��Q�Rm��mm�T�U�V��wc{��[�Xaz�Yaz�Z�a�[�\v�v��]�_�^jw���az�`azw��b�daz�c��w*�eazw8v�Aaz�hazaz��j���k�~�l�o�m�nAazaz@&�p�}�qaz�raz�s�|�tMaz�u�v�yaz�w�xazazv��zaz�{azv�wMaz|d�������az��az������az��������azaz����azaz�1��az��azv�{���azazb�az@����azA��az������gCv�v�����v�����ju�w����mw��u�u���u�j������������Aaz��A������az����az��az������az��az����az��az��az��az��az�Baz��azaz�"��azaz��az��az���Bazaz����azaz����azaz������gCaz�az����az����������u�t���t�v�v�azu�Aaz�������A��az��b�������&���������az��az��az��az��az��az��az���az�y������az��az��������������������azL��������F�w�����������������������������&�&������4SC�������
�������>�>��az��az��az�����az��az��azaz��az��az�az�RF��az�az�	az�	az�
��az�az�
az��u��u��u��u����az�az������az���az�az�az�azaz�az���S	� az�!az�"az�#azt��$�%azt�az�'�~�(�k�)�W�*�9�+az�,az�-az�.�4�/�2�0�1v��w�t�v��3v��w�5�7�6wq�wt��8azwqaz�:az�;�N�<�G�=�B�>�@�?w<ww�AwFv��C�Ev��Dv����F�����Hb��I�L�J�K��,�,�^�^�M�^�Oaz�P�Sb��Qb��R�?��T�Ua�gC���V��az�X�d�Yaz�Zaz�[az�\�^�]w�iw�_�a���`��a��b�ca��?pRT�eaz�faz�gaz�haz�i�jw���az�laz�maz�naz�oaz�paz�q�x�r�u�s�taz������v�wR������y�|�z�{�������}az�az�������������w*������������������w*�yw*��wT4��wkX����kX��kX��kXT%��������F�S45�v���w*����������v�v�"�v�~��������S���?U����T�s��w*������w*������������w����j����j��������������bb���j�jj����w*jw*w*��w*��w*��jw*az����w*��w*az��azw*��az������v���v���v���������v���v���������p��v�w8����v���v���v���v���v�v�����v�v�v����h�������3����������b���b���b���b����������jjb����������b���b���b�������v�������u���K��v�u�v�������v�v���v�3
������v��1v���b�v�b���b�����������������������y�������i��wup���w�b��M��b��Mb����kX��
b��	b�������kX�
���kX�"���F�����a��v��v�p��%�� �����?�0�[��������gQ�?RTwU�!�"�$wU�#wUS��?��&�){��'{��({��-�*�/�+�-�,w�9ww�.w���0�?�1�2���wF�?�4���5���6�]�7�L�8�F�9�@�:�=�;�<�y��J�>�?Jw�w����A�C���B<�i�D�E�i)��w�G�Iw�H��M�Jb��M�K�Mb��M�Qb��N�O�"�P�"b����R�X�S�V�T�U�"��wF�Wwc��V��Y�[wc�ZT%�"�\���"�4�^�x�_�m�`�f�a�d�b�c��a�a���ev��v��g�j�h�ip�^�^�0�k�l�0������n�s�o�q���p��~�r�[~���t�v��u���w����y���z���{�~�|�}�?RT�gQ���gQ����wU��wU��wU����wU������S�w8w8�?��{������?��{����^��������{�����������{���ubub��ub�����������������-�-�����S��^�9�W��w�������,�,w���^�����������^w�^�����^�������^���^��^�������^���^����u���u���u���u������^����������������^������^���^���^���^���^���^�1�^���(���"�������������gC����������������S����������SQ��gCX����gC��gC����������5�����B�����������������������v�v�"�����Tz���1���������}������TeJ�������������J�������W�������S�������8��J���gC��gC��������-TJ�S���v�R7J��	�kX��������	�w*�yw*�
wT4��wkX�
�kX�kX�kXT%����F�S45�v��kX�����v�v�"�v�~����S���?U� �!T�s��kX�#gCaz�$az�%az�&gC�'azgC�)�]�*az�+az�,�G�-�;�.�5�/�2�0�1azT��L��3�4�������6�9�7�8�F�w������:���&�<�B�=�@�>�?��������A�F��C�D��&�E�F��4SC��H�V�I�P�J�M�K�L�����N�O�����
�Q�T�R�S�
������Ub�F��Waz�X�[�Y�Z��>�>��\����^�&�_�&az�`az�aaz�b�c�eaz�dazRF�f�g�DS�&�i���jaz�kaz�laz�maz�naz�o�|�p�v�q�t�r�saz��S	w�uu�wu��w�y�Z�x���z�{������}az�~�������t�t��s��az��az��s���|���������������������������������v��yT�������J�"���������yw��w�����mL�����������������<���w*����T4�iup)��������S���Q���������j�������������������V'�������F�v���������������SQwX����S	jTC�K������������w���az�����RF����M��������b����"�������;�����������������������wF����w����V�wc���	��������R��kXT%����gC��"F��������������&�4����S45��B�����������Q�&�������w�`�����������������4a�SC�����u�v�v�"���������u�Tzpaz�����v��1��������������0v���������Z�o�}�����azv���������j~���F��'�	��
�����
���S������[�������������?���T3
RT�� ������
����De��!�$�"�#�J����%�&w�v�J��(�7�)�0�*�-�+�,��J�����.�/�gQw���1�4�2�3W��t���5�6�
�������8�?�9�<�:�;�1��wU�=�>R��S���@�C�A�B���w8���D�E�?�{�S��G�f�H�W�I�P�J�M�K�L�������N�Oubt��
���Q�T�R�S'�-8��U�V?US�F���X�_�Y�\�Z�[J�bSaz�]�^-��9�H�`�c�a�bT�w�W�e�d�e�s���,�g�v�h�o�i�l�j�kw�>�����m�nJ��^S����p�s�q�raz����t�u�����w�~�x�{�y�zwqS�����|�}���v�R7�az��azJ�az�����������������������������v��yT�������J�"���������yw��w�����mL�����������������<���w*����T4�iup)��������S���Q���������j�������������������V'�������F�v���������������SQwX����S	jTC�K������������w���az�����RF����M��������b����"�������;�����������������������wF����w����V�wc���	��������R��kXT%����gC��"F��������������&�4����S45��B�����������Q�&�������w�`�����������������4a�SC�����u�v�v�"���������u�Tzpaz�����v��1��������������0v���������Z�o�}���������azv����������j~���A��"������	�����S����
��[����
���������?���T3
RT��������
����De������J���� �!w�v�J��#�2�$�+�%�(�&�'��J�����)�*�gQw���,�/�-�.W��t���0�1�
�������3�:�4�7�5�6�1��wU�8�9R��S���;�>�<�=���w8���?�@�?�{�S��B�a�C�R�D�K�E�H�F�G�������I�Jubt��
���L�O�M�N'�-8��P�Q?US�F���S�Z�T�W�U�VJ�bSaz�X�Y-��9�H�[�^�\�]T�w�W�e�_�`�s���,�b�q�c�j�d�g�e�fw�>�����h�iJ��^S����k�n�l�maz����o�p�����r�y�s�v�t�uwqS�����w�x���v�R7�zaz�{azJ�az�}�x�~���������������������������v��yT�������J�"���������yw��w�����mL�����������������<���w*����T4�iup)��������S���Q���������j�������������������V'�������F�v���������������SQwX����S	jTC�K������������w���az�����RF����M��������b����"�������;�����������������������wF����w����V�wc���	��������R��kXT%����gC��"F��������������&�4����S45��B�����������Q�&�������w�`�����������������4a�SC�����u�v�v�"���������u�Tzpaz�����v��1��������������0v���������Z�o�}���������azv�����������j~����=��������������S������[����	��
�������?�
��T3
RT��������
����De������J�����w�v�J���.� �'�!�$�"�#��J�����%�&�gQw���(�+�)�*W��t���,�-�
�������/�6�0�3�1�2�1��wU�4�5R��S���7�:�8�9���w8���;�<�?�{�S��>�]�?�N�@�G�A�D�B�C�������E�Fubt��
���H�K�I�J'�-8��L�M?US�F���O�V�P�S�Q�RJ�bSaz�T�U-��9�H�W�Z�X�YT�w�W�e�[�\�s���,�^�m�_�f�`�c�a�bw�>�����d�eJ��^S����g�j�h�iaz����k�l�����n�u�o�r�p�qwqS�����s�t���v�R7�vaz�wazJ�az�y���z���{���|���}���~�������v��yT�������J�"���������yw��w�����mL�����������������<���w*����T4�iup)��������S���Q���������j�������������������V'�������F�v���������������SQwX����S	jTC�K������������w���az�����RF����M��������b����"�������;�����������������������wF����w����V�wc���	��������R��kXT%����gC��"F��������������&�4����S45��B�����������Q�&�������w�`�����������������4a�SC�����u�v�v�"���������u�Tzpaz�����v��1��������������0v���������Z�o�}���������azv�����������j~���8����
�����������S����[���������?	�T3
RT
��
��De��J���w�v�J�)"��J���� !�gQw��#&$%W��t��'(�
������*1+.,-�1��wU/0R��S��2534���w8��67�?�{�S�9X:I;B<?=>������@Aubt��
��CFDE'�-8�GH?US�F��JQKNLMJ�bSazOP-��9�HRUSTT�w�W�eVW�s���,YhZa[^\]w�>����_`J��^S���becdaz���fg����ipjmklwqS����no���v�R7qazrazJ�aztkupv�w�x�y�z�{~|}��v��yT����J�"�����yw��w���mL�����������<���w*��T4�iup)����S���Q�������j�����������V'�����F�v�����������SQwX��S	jTC�K������w���az���RF����M����b����"�����;�������������wF����w��V�wc���	����R��kXT%��gC��"F��������&�4��S45��B�������Q�&�����w�`���������4a�SC���u�v�v�"�����u�Tzpaz���v��1��������0v�������Z�o�}�����azv���������j~��5����������S������[���������?�T3
RT	
��
�
�De��J���w�v�J�&��J�����gQw�� #!"W��t��$%�
������'.(+)*�1��wU,-R��S��/201���w8��34�?�{�S�6U7F8?9<:;������=>ubt��
��@CAB'�-8�DE?US�F��GNHKIJJ�bSazLM-��9�HORPQT�w�W�eST�s���,VeW^X[YZw�>����\]J��^S���_b`aaz���cd����fmgjhiwqS����kl���v�R7nazoazJ�azq�r�s�t�u|vywx��v��yTz{���J�"}�~�yw��w���mL�����������<���w*��T4�iup)����S���Q�������j�����������V'�����F�v�����������SQwX��S	jTC�K������w���az���RF����M����b����"�����;�������������wF����w��V�wc���	����R��kXT%��gC��"F��������&�4��S45��B�������Q�&�����w�`���������4a�SC���u�v�v�"�����u�Tzpaz���v��1��������0v�������Z�o�}�����azv���������j~��0�����������S������[�������������?�T3
RT
��
�	�De�
�J���w�v�J�!��J�����gQw��W��t�� �
������")#&$%�1��wU'(R��S��*-+,���w8��./�?�{�S�1P2A3:4756������89ubt��
��;><='�-8�?@?US�F��BICFDEJ�bSazGH-��9�HJMKLT�w�W�eNO�s���,Q`RYSVTUw�>����WXJ��^S���Z][\az���^_����ahbecdwqS����fg���v�R7iazjazJ�azlgm�n�o�pqxrust��v��yTvw���J�"y|z{�yw��w�}~mL�����������<���w*��T4�iup)����S���Q�������j�����������V'�����F�v�����������SQwX��S	jTC�K������w���az���RF����M����b����"�����;�������������wF����w��V�wc���	����R��kXT%��gC��"F��������&�4��S45��B�������Q�&�����w�`���������4a�SC���u�v�v�"�����u�Tzpaz���v��1��������0v�������Z�o�}�����azv���������j~��,�
�����������S������[�������������?���T3
RT���
��De�
	�J���w�v�J���J�����gQw��W��t���
������%" !�1��wU#$R��S��&)'(���w8��*+�?�{�S�-L.=/60312������45ubt��
��7:89'�-8�;<?US�F��>E?B@AJ�bSazCD-��9�HFIGHT�w�W�eJK�s���,M\NUORPQw�>����STJ��^S���VYWXaz���Z[����]d^a_`wqS����bc���v�R7eazfazJ�azh�i�j�kzlsmpno��v��yTqr���J�"twuv�yw��w�xymL�����{�|}~<���w*��T4�iup)����S���Q�������j�����������V'�����F�v�����������SQwX��S	jTC�K������w���az���RF����M����b����"�����;�������������wF����w��V�wc���	����R��kXT%��gC��"F��������&�4��S45��B�������Q�&�����w�`���������4a�SC���u�v�v�"�����u�Tzpaz���v��1��������0v�������Z�o�}�����azv���������j~��'������������S������[�������������?���T3
RT�������
���De��J���w�v�J�	

��J�����gQw��W��t���
������ �1��wUR��S��!$"#���w8��%&�?�{�S�(G)8*1+.,-������/0ubt��
��2534'�-8�67?US�F��9@:=;<J�bSaz>?-��9�HADBCT�w�W�eEF�s���,HWIPJMKLw�>����NOJ��^S���QTRSaz���UV����X_Y\Z[wqS����]^���v�R7`azaazJ�azczdoelfighazw*�azjkaz�"azmmaznb�v�v�pvqtrsazjazgCuazkXazwazxyazjv�v�{az|az}az~azazw�Aaz��azAeazA�����d�������d�M���nW�M��rf�����������������Zh������������Zh����������������������ZhZh������������������Zh��������������������������@����������������������������������@����������������������@�����@���N���ddq�d�dq�����nWM��M��gQ��azgQgQazb�L��nW�M�L��N�NN��N�N�NN�NQ�d��dd�d��d�dd�d��do�d�d��d�X�����b��b����b��b�p�b���x��b��b�b�b�	p�y~����9���>��
b�
��x�ݨ�b��}~�b�b�b�b�b�b�b�b�b�p�b��bj*Mazfdd !�"I#:$,%)&'�L�(L��L�*�tL�+�&L�-4.1/0L��
�L�23L���L�57L�6�L�89L��tz.�;L�<C=@>?L����L�AB��L��DFL�E�&L�GHL���jL�JfK`LOL�ML�NL�xlP��Q�RS�TZU�V�W��XY����[\��]^��_��adbc�jc^��e���guhoiljkL����+mniL���psqrL��L��tL�L�v{wyx��L�zL��L�|~L�}�����t���������������L��L�L��t�������L�����[������L��L����i�����L��L���L��L����L����������L�L�����iL�����L��L�i��i��������L���jL�����������������o�L���L�����L�����L�o�L�d�d��dd�d���d��d�dd��d�dd��dd�d��d�d�;d������ddM���dlazdd���M��N�N����N�N�N;NN;����NN;NN;N�N�NN;N����L��L��L���L��L�L��L���L�L��L���L�L��L�L�L��L�L�L�L�	L�L�
i�L�
L�L�L�L�L��L�L�L�L�L�L�L�L�L�L��L�3�� q!C",L�#�$%L�&L�'L�(L�)L�*L�+L�xL�-6.L�L�/0L�1L�2L�L�3L�4L�5L��7L�8?9L�L�:L�;L�<L�=>L��L�@L�AL�BL�L��DNEL�L�FGL�HL�L�IL�JKL�L�LL�ML��ORPL�QL��L�SiL�TUeV]L�WXZL�YL��[L��\L��L�^L�_`bL�aL��cdL���L�fL�L�gL�hL��L�jkL�lL�mL�nL�oL�pL��L�r��stxuL�L�vwL��L�y�L�zL�{L�|}L�~L�L��L��L��L�L���L�L�����L��L�L��L���L�L��L���L�L��L���L�L��L���������L���L��L��L��L���L�L��L���L�L����L��L�����L��L��L�L��L����L����L���L������L��L��L�L��L�����L��L��L�L���L��L���L����L���L��L�L��L���L��L�L���L���L��L��L���L��L��L���L���L����L��L��L��L�L���L��L�L�����L�L���L�L���L��L��L���L��L���L��L��L�L��L��L���L��L��L��L��L���L��L��L��L���L�L���L��L�L����L��L�L�L�L�L��L�L�	
L�L���L�L�
�L�L�L�L�L�L�L�L�L�L��-L�L�$L�L�L�L� L�!L�"L�#L��L�%�L�&'L�(L�L�)*L�L�+L�,L��L�./L�0L�L�1L�2�L�L�4L�5L�6L�78L�L�9L�:�L�<�=h>�?@g_MAdB�CiDaE^FLGIHN`�tkJKtkaktkakMaNliNliOPWQliliRliSliTliUliV��liXliYliZli[li\lili]li��_`W�NMb�bfcdNLgnedb�ghc�LliMjvkqlmrfaznLopM���h+rs߫b�tcfi�u`�i�w{xd{Nyc�z���|�c�}w~w��w�w��ww��ww���w�ww��ww�w��w@wL�`�����������u��v�gCd�b��dd{b���gngns8��e���L���x��x�d$���[���o�A�K�Zm�d�������p��i#�i#d`�c�������NLMxv��wv�az�1�L��azazv�����g4N�M���p�йd2x����K��gQ�Mwcq~�����M��0M��gd����d{�d�L��L�x��������gQkXkXgC��az�azgQgQaz����azv�v�v������az�az�az�az�az�az�az�azwaz�az��azv��MkX���
��gC�kX����B��B���B�B��B��M�B��B��B���B�B�M�B�B�B�B�M�B�B�B�B�B	
�B�M�Bazjazw�azw�azwazK4yON��N��OcOcOcX#& #!"��N[�Q�$%\;Q�Q�b�'2(1b�)*^�+^�,^�-^�^�.^�/0^�^��
Q�?sQ�3P��5G6C7@89@�-N:;yOyO<yO=yO>?yOyO�)ABNQ�Q�NQ�DEF	Q�W�OcHOcIOcOcJOcNLVMOcNQOcOOcPNOcRTSOcOcb�UOcb�OcW_X\OcYZ[b�OcOcb�Oc]Oc^NOc`caOcOcbNOcOcdefOcNOcNaz@i�jazazklwmrnpNoc�b�b�qb�rfsuty7b�L�Lvi�NxMy{d{zN`�|M}z�~�`��`�`���`��`��`��`��`��`���`�`��9�az`�|������az�d������b��Cdb�d�d�d�CdazL��|az|����Aeazwaz��az���az��az��az��azaz��az�az�az�az�az�az�az�azgCaz�azaz�az�gCaz�az�azaz��az�azaz�azgC���azaz��azaz�az��az�az�az�azaz�az��az�az�azaz�@az�wc�wc�wc�wc�wc�wcwc��wc�wc�wc�wc�wc�wc�wcwc��Bwc�	��	��	A����az�daz�g_Aeaz�	1�	�M���,�	���_Fm�|��������s8lis8��s8lilis8���s8lis8li�gnq�j����4��H�	�H4�l�4�h						azaz	az		az		az	
azaz		azaz	
az	w*azaz		azaz		az	az	az	az	azaz	az	wUazb�N	az		!�,		d{g_	 `�L�	"	(	#	&	$	%MNNL�	'y7c�N	)MN	*	+N	,�X	-�X	.�X�X	/	0�Xm�X	2	6	3az	4az	5azazF�az	7az	8az	9	:az	;gC	<�?	=�?	>�?�?	?	@�?�?gQ	Baz	C	�	D		E	e	F	^	G	R	H	Maz	I	Jazaz	K	LazazgC	NgC	O	PazgC	QgCazgC	S	Yaz	T	U	VazgCaz	W	XazazgC	ZgC	[azgC	\gC	]azgC	_	d	`azaz	a	baz	cazazgCgQb�	f	}	g	w	h	j	iazazgQ	kazaz	lgC	maz	naz	o	paz	qazaz	raz	s	tazaz	u	vazgCazaz	x	ygCaz	z	{azaz	|gCazaz	~kXazaz	�	�	�b�gC	�	�	�v���v�ub	�ubaz	�	�	�azaz	�az	�u�gQ	�azaz	�	�az	�az	�az	�az	�az	�azaz�^	�	�	�	�	�	�	�	�	�az	�az	�	�	�	�az	�az	�	�az	�azazgC	�	�	�	�az	�az	�azv�	�	�	�	�azmaz	�az	�az	�az	�az	�	�az	�az	�azazw*az	�azt�az	�	�	�	�	�azt�wv�	�	�azv�azu�	�az	�az	�az	�az	�azu�az	�	�	�	�az	�az	�azm	�az	�azaz	�az	�az	�az	�azwM	�az	�	�az	�azaz	�	�azv�az	�az	�az	�t�	�	�az�az	��az	�	�	�	�Aed	�cWM	�xv	�	�d{��	�LL�	�	�p�azazL�	�	�	�az	�	�Naz@&t�az	�	�azaz	�az	�az	�	�az	�az	�	�	�azwazaz	�	�kXgQ�B	�
�	�
�	�
z	�
h

S


p�

p�
p�


p�
p���p�p�
	p�



p�����p�

3

&







|az
az|azaz
|az

az

azeaz
az
az�az
 
"az
!Ez�az
#
$azaz
%oY�F
'
.
(
,az
)
*azaz
+v�az
-azaz�T
/az
0az
1azaz
2wUb�
4
@
5az
6
;
7
8�az
9az
:azazt�
<H:az
=
>
?az|az�
A
G
Baz
C
Eaz
D|az
Faz|az
H
L
Iaz
Jazaz
K|az
M
P
Nazaz
Oaz@az
Qaz
R|az
T
\
UL�
VL�
WL�
XL�
YL�L�
ZL�
[L�_�
]M
^
a
_nW
`nWaznW
b
cNcWaz
d
eaz
faz|
g�|
iazc�
j
kaz
laz
maz
n
saz
o
p
qazgCaz
r�Baz
t
w
u
v����t�az
x
ygQaz�1u�
{
~
|
}dg4azg4az

�azaz
�
�azaz
�
�azaz
�
�azaz
�u�az
�
�
�az
�azp�azaz
�az
�azE�
�
�
�
�
�
�
�azaz
�azN
�
�
�
�`�
�
�
�`�
�
�`�`�
�
�`�&B`�
�
�
�
�
�
�
�
�f�,,`�
�
�`��%�%`�
�
�
�
�`��W�W��g
�b�`�
�
�
�
�
�Mg�MM
�
�`�
�`�
�`�`�
�
�`�
�`�
�`�
�`��4`�`�
�
�
���u,`�
�
�
�`�
�`�
�
�
�
�
�
�`�����`�
�`�d
�
�az
�az`�az
�azb�`�
�
�
�
�`�
�
��`�
�
���v�f�
�
�
�
�
�`��%`�
�
�fy`�`�b�`�
�
��u`��%
�L�
�L�
�
�
�
�
�L�
�
�L��
�L�L�
�
���
�����
�
���
����j��L�
�L��j
�L�
�L��L�
�az
�@M
�M
�
�
�
�
�M
�MtOMM
�MM�MMMM_/Mazazt�az	az
azazaz
azazazazazazazazazazazw�az azMazAeazg4M!$"#azcW`�az%&NLaz't�()n�L�*+,�^g4NM�./�021�2|3�4`5|6|7Y8?9:az|;az<||=>||�@azAazBC�|D|E|F|G|HNI|J||KL||M�m|OT|P|QR||S�m|U||VW||X�m|Z^[\az|]azazv�az_�'|a|b|azcd�azef�gazhazi�jxazklqmoazn��wUpazu��rustb�w���mvwazwc�"u�y�z�{~|}�w��t�j�w����azaz��t�az�1��az�wU�wUaz��az�w��1�jjaz�az�az�az����j����jjaz�az����azu�azu��azu�az�az�|�����|�||��|�|�||�|�|�|�|�|�|��|�||�|��|���||�|��||�|�|�|���|�||��||�|�|�|���||�|az�|����|�||��||�|�����|���|�������_F|azߜ�L�ߜ���az�az�azaz��az�az�az�azaz��az�azaz�v�az�azaz�az��az�azaz�az��az�azaz�az�az�w�az|�|��||��||��|�||�||||||B/|||	||
|||
||||||||�6||�6|+|||&az %az!"azaz#�$��#az|az'(az)az��*azS%,|-|.|/azaz01azazv�3�4{5h6S7?|8az9:gC;gC<azaz=>gCazgC|@|AB||CDKE|F||GH|I|J|��|L|M||NO|P|Q|R|�||TU|AVWaXAY]AZA[\AA��^A_A`A��AbAcAAdeAfg��A��Aiu|j|k|l|m|n|o|pqs|r|��t|�vw|az|xazyazzazE||}|~A|����az||������az�azazNaz�az�azN�az�azaz�azN�||�����az�gCazaz�b�az�����v��gQ�gQ�gQgQ��gQ�gQ�gQ�gQgQ��gQ�gQ@gQb�az��azu�gQaz�||����||az|�|��az��az���az�az���az�?�?az��az��az�?az�az�az�?az�az��az�az��azazb��azaz��azaz�?�
S�
:��������|az|�|���|�|����||��|���||�|�|��||��|�|���az|d�||���|��||�|�|�|v���|��|�|�||v�|��||��||v��|�|az|�
+

(|
|

az




|az
az
az
	az||





az
|az|
|azaz

azaz|

#




azaz|

az
|azaz
|az
az
 az
!
"|az|�
$az
%az�
&
'TR|az
)|
*||az
,|
-
6|
.
/|
0|
1|
2|
3|
4|
5||�
7|t�
8az
9az|
;
O|
<
=||
>|
?�
@
A�
B�
C��
D
E��
F
G��
H�
I�
J�
K
L�
M��
N�@|
P|
Q|
Raz|
T
�
U
�
V
Z
W
Y
X|az|az|
[
�|
\
]|
^
}
_
n
`
g
a
caz
baz|
dazaz
eaz
faz|
h
j
iaz|az
kaz
lazaz
mazgC
o
waz
p
q
raz|
s
uaz
t�|az
vaz�
x
z
yaz|az
{
|�?az|az
~
�

�
�
�
�
�
�az
�V�|az
�az
�|
�az
�az
�azaz
�
�az
�azaz
�az
�az�

�
�az|
�az
�
�|az|@
�
�
�
�|azaz|
�
�az|
�azaz|
�az
�
�
�azaz
�az
�|az
�azaz|
�||
�
�
�
�|
�
�|
�
�|
�||
�|�
�||
�|
�
�|�|
�||
�
�|
�|
�||��
�||
�|
�
�
�
�azaz|
�az
�az
�az
�az
�azazj
�
�|
�
�||
�
�|
�az
�azaz
�
�azNaz
�
�|
�|
�|t�
�
�@
�
�azaz
�az
�
�az
�azaz
�az
�
�az
�az
�az
�az
�az
�az
�azaz
�
�azmaz
�az
�|
�
�
�az
�az
�az
�az
�az
�azv�azaz
�
�
�az
�
�azaz
�
�azaz�1az
�az
�az
�
�
�az
�gQ{�
�v�azgCv�'�H+azazaz	az
�
������_���_�_���O�
�O�_p��O#� �!"���_.��$%(�&�'�a)*��_��az,-8az.az/0azaz1az2az3465azb�azaz7azb�9az:Aaz;az<az=>azaz?@azb�azBazCazazDazEazFazGazt�I�JlKTazLMazNazOazazPQazazRSazt�azU]VazazWXazYazZazaz[\azt�az^azaz_`gaazbazcazdazefazb�b�azhaziazjazkazazgQm�aznoazp�qurtsb�azv�mb�vwt�v�xazgCygCzgC{|gCgC}gC~gC�gCgC�gC��gCgC��az������b�b��b��b��b��b���b�b��b��b��b��b�g�b��b�b��azb�az�gC�gC��gCazgC���azazHGaz�����i��i����i��i�B�i��e����az�g4p�M���az��az�azaz��az�azb�az�azaz��az�M�d�az��azgC�azaz��azazw�����az�az�azA�az�az�Mazaz�����azH:@&az���d�t���AeGtF���F���F��i@F�F��F�Ba@&az�����az����nWazd��az����az�az��az�aznW����az�az�az��az�azaz��azaz�az��az�az�azw�azgCu���azv�azu��az�Mazazazazazw�azaz	az
azazaz
azazazazazazazazazu�u�azM�AeazazNaz@&L�az !az"azaz#$az%az&azazu�(�)n*j+C,az-.sGg_g4/0B1az2az3az4az5=az67:8azaz9azv�;azaz<azv�>az?az@azazAazv�azLDazEaz�FGWHMI��JKL��_��NQ�OP��1�RUST�O���V�p�XaY\�Z[���]�^_��`�a�bec�d�.��fhg��pi���_azkazlazmazgCo�pwqtrssGg4azduvdazazMx�y�azzg_{|g_g_}g_~g_�g_g_�g_�g_��g_�g_�g_�g_�g_�g_p�g_�@&��az��az�azaz�az�az��azaz�az�az�az�az��azaz�v�az�az���az�az�az�az�azaz��az�azaz�az��azaz�v�az�az�azaz�az��azaz��azaz��azaz��azaz�@azaz�Aeaz��N��azcWaz��az��az�azaz�az�az�az�az��azazgC��Ae@&az���az��K����Kazu�v���az�az�az�az�K����gQv�v��v�kXaz�az�az��"���v����C����az�az�azaz�az�EzF���L�az�az���az�v�az��azt�az�az��az�azaz��az�azaz�az�az��azaz�azw�azazazazazazaz	az
azazazaz
azazw�t�azgCazgQazAaz@&az,# ��Q�_�_�!�"��_�$)%'�&���(�_�*�+��_�-7.4/1�0�_Q23�_�߫�5�6���8>9<:;�_a�_�=��!��?�@��Bazazg4DdEazFcGMHXITJM�KL�a�NQOP��_��_RS�_Q�@�U�V�W��O�Y�Z][�\���^a_`��1��b���@MazehfgAeM�@azijaz@&azkl�mxnazotazpqrgCazsazgCazuazvazazwmazyazz~az{|azaz}azwazaz�az�azmaz�az�az�azgC�����az��g4`�Maz����azt�Maz��azM�Aei������azazM�az�g4���azaz������M�g���������tOq�q�����g�����g���g������o��g������azu�az�az����azgQazb�az��azaz�gQaz���azE�az��M@&az�����������Q�����a�_�������������
����Q����������_�!���_߫����Q�����������-d��������h��/��b�H���^�B�	������A@&�az���cW�N�az�az�az�azazu��
��az��Q�Q�NQ�NQ�NQ�NN[�N	azLNaz�
nazb�gQaz@az#b�b�b�b�v�gCw�b�v�gQw b�!"v�kXubv�$2%b�&b�'.(+)*b�v�gCw�,-b�v�gQw/b�01v�kXubv�3b�4b�5<6978b�v�gCw�:;b�v�gQw=b�>?v�kXubv�AazBQCgQDgQEgQFMGJHIgQv�gCw�KLb�v�gQwNgQOPv�kXubv�R`SgQTgQU\VYWXgQv�gCw�Z[b�v�gQw]gQ^_v�kXubv�agQbgQcjdgefgQv�gCw�hib�v�gQwkgQlmv�kXubv�orpqazu�t�v�s�aztu|vu�wu�xu�yu�u�z{u�v�u�}�~u�u��u�u���u�v�u��u��u��u�u���u�v�u��������t��t��t���t��wv�m�v�t��t��t���t��K�t��Kt����t��t��t���t��wv�m�v�t��t��t��t���t��wv�m�v�t����v��v��v��v�����u�t�wu��v�u�v����v��v��v�����u�t�wu��v�u�v��v��v��v�����u�t�wu��v�u�v�i��OEN��p���az�azaz�az�az���az�az�wgCaz�AAe��AeAe�Ae��Ae�Ae�AeAe��AeAe��Ae�Ae�AeAe�Ae�@Aeaz���Aazaz�����az���az��azv�azaz��azt�azaz���azgQ�az�gQgQ�azgQ�az��azazazazgQazazazazazazgQaz
!
azEazM�M����������M�M���M�M�M�M���M���� ������"az#A$9%'��&���	()�	4#*7+�,4242-.4242/042421422423442542642�&428�;�q�;:az;=az<azb�>?gCazaz@u�azazM�C�D�EIFGMazHazaz�JazKazL_MSazNazOPazQazRazwazTZUazVXazWazEYazEaz[azaz\]az^azEaz`wambhcfdeEazazEazgEaziazjkEazElkXazaznotpsqrEazEazazEuvEazEazx�y|azzaz{azE}�~azEazE�EEaz��E�E��J�EJ���az�EazE�azE����azdazN��@az�az��az�az�az�az�az��az�az�az�azt�azaz�az����azaz�az�az�az�az�gCazaz�azgC�D�A�az�������������'��H:s�H:��@&�@&���AeH�H�HG���E�H:
���E�bH:M�����EAH:������v�gCb�mAE�����
�E�i@����'H:�������'�|�i���Ez�AeA�����AeEAe��EAAH:������`�@HGAA�H:A����E|�AeK���H:Ae�A@E�az�az��az����az�azt���gCb���v�gCb�az��
u�w*v�wv�mjjw	azv�azaz
gCazazazgCb�azazazb�azazv�azv�azazv�&azazaz az!azaz"az#$az%t�azt�'3(azaz)*az+az,az-0./azu�azv�12azv�azmaz45=az67azaz8az9az:;<azw*w*azaz>az?@azb�azBCAAeNAeE\FazL�GHUIMM�JKLM�hhM�NM�OM�M�PQSRhM�hTM�hM�M�VM�WM�XM�YZM�M�[hM�az]azM�_�`iaebazcdtyg4��azazfghdazaz@j�kmazlMaznonWcWpMt�qr~svaztuaz|azw{azxazyazzaz@|az}azaz|��az�azaz|�az�azazb�����az�azF�az���azd�az@&�@&azaz�az�����N��N���N�NU�N�N�N�JN�N��Q�Q�[�NN�N�N��NN��N_FN�����az��azAeMazaz�az�Aeaz��az�az�azN�����Sazc�A��Maz�nWaz�az���gCazgC���t�b�azu����������Aeaz��AeAe��Ae�Ae�Ae�AeAe�Ae�B�AeAe��azAeaz�az�az�azazd�R��az��aznWL���az�az���azaz��������azazv��azv�azaz�az�v�gC��az|��az��azaz�az���v�azazv�����gQ��gQazv��v�azazazazt�azazazaz�Kaz	
azv�az
azv�azazazazv�azazv�azazM|az</azaz,az gQ!{�"az#az$'az%az&w�az(*az)azw�+azazw�-azaz.gCazaz01azaz2az34azaz5az6az78azaz9:;azgCgCazaz=>azaz?az@AazBazCazDIEazFazazGHazw�azJNazKLazMazazw�azOPazQazazw�S�T�UgnWVWnWnWXYbZnW[nW\`]nWnW^_nW�nWnWa��nWcnWdnW�TefnW��nWhnWikjak[lm�n|ovazpqazazrazsaztazuw�azwazxazyazzaz{v�azv�}�~�azaz��az�az�azaz�azv������az�az�azazgQ��az�az��v�azv��azv����azv�v�az��az��az�az�azkXazaz��az��azv�v��v�az���az�azaz���az�az�azj�az�azjaz�az���az�az�az��azmmaz��az�az�az�azv��azv�az��������gC�gC��gC�gCgC�v�gC����w��gCw�wgC������gCububgC�gCubgC�gCw�wub�gCv�gC�����v��v��v�gQv���b��b��b��b�v��v��v��v�b�v��kX�����kX�kXw*kX�kXgQ�gQkX��wkX�kX�kXw�kXaz��az�az�az�azaz�u�az��v�m��mwwmmwmmm�m	m
mmm
wmmmt�mt�mmt�v�mmm�wm)azaz% az!"b�gQ#$v�u�u�az&az'az(azmv�az*+U,Aaz-az./;06az1243azazv�5azw�azaz78az9:azv�w�v�<azaz=>az?@azjjw�BMCJDgCgCEFgCGgCHIgC�gCw�KLv�gCu�gCgCNgCOPgCQgCRSgCkXgCTb�gCVazWazXazYZt�v�m�K\`]az^az_azazu�v�t�NbcgNdeNMfMcWhNNijMMcWlnmMdMNop~qtrNsNNW�uzvNwNxNNyW�N{NN|}NW�NNN�M�cWMnWaz�azaz�az��az�azaz��az�azaz��az�az�az�az�az�azaz��azaz�az�B��������aznW�az|�|�|�|�|��|�||�b���az��az��������gC�azgC�azgCgCaz��t���azt�azt�az�������v�azv�v�azv�az�az�az�gC��az�gC�gCazazgC��az����azu��u�az�azgQ�gQaz�az���azb�az�azmazazEz���cWaz�az�az�az�az����az���az��azaz��az�azaz�az�v�az�azaz��azaz�az�az�az�azv�az����az�az�azaz�az��az�azazv��az�az�az�azazazazv�azazazazazaz	azaz
azaz
azv�az��eG/azazazazazazazv�azaz)$az !azaz"#azv�azaz%az&'az(azv�az*azaz+,azaz-az.v�az0?18az23azaz45azaz67azazv�9azaz:;az<az=azaz>azv�az@azABazazCazDazEazFv�azHYIQJazazKazLMazNazazOPazv�azazRazSazTUazazVazWazXv�azazZ[azaz\]az^az_b`azazaazv�cazazdv�azf�ghwipazjkazlazazmnazoazv�azazqazrazsaztazuazvv�azxazazyzaz{az|az}azaz~azv�az��azaz��az�azaz�az��azv�az��az��az�az�azaz�az�az�az�azv�����az����azaz��az�azv�az�azaz��az�azazv��azaz��az���az�azv�azaz��azazv�az�az��az��az�az�az�azv��az�az�azv�az��az�az�az�az��azaz��az�azaz���v�azazv������az��az�az�az��az�az�azv�az�azaz�az�az�az�az�v�az���az�azaz�az�az�az�az�azv�az��azaz�az�az��az�azv�az�az���az�az�az�azaz�az��azv�azaz��azaz��az�az�azaz�v�azaz��azaz���azaz�az�azazazazazv�azazazazaz	
azazaz
azv�azL�Aeb�az��fN+g4"az|azv�azaz|| !|��|#$|az%(|&j'v�az)azaz*azv�g4,-U.3g4/g4012�[m�[�l4P5Fg46g47g48g49:?g4;g4<g4=>g4g4�+g4@Ag4BDCg4g4�+Eg4g4�+g4Gg4HI�+J�+�+K�+L�+MN�+�+O�+�LQSRg4�z�MTg4���VbW[g4XYZg4m�\_]^���m��`a�#�g4cg4g4dem>mazghwaziazjkazlazmaznazov�azpqazrazsaztazuazvazazwazxyazzaz{az|~}gCazgCazwaz��az@&H:az����az�����|��||�|�|�|��||�|��||��|�||���|��|�|�|�|�||��||��|�|�|B/|��|�|���|��|�|�|�|�|�|�||�|���|��||�|�|��||��||�|������||��||��||��|�|�||�|�|��||�|��||�|��||�|�Aeazaz�az�az���az�az��azaz�����v��v���v�v��azv����v�v��v��v�az�v��v��v�v�az���v�v���v�v��azv��v�v��v���v�v�az�azaz��az��az�az�azazazazw�azazw�azazaz	
azazazaz
azaz�>azazazazv�azazv�6azazazazazazjaz az!az"azaz#$azaz%az&'az(azaz)*az+4,/�-.�az�01az��2�3az��5az�7C8azaz9az:;az<az=az>az?azaz@ABazt�azgCDFEazg_azazGgQAI-JK�L�M`NNONNPNQLRLSTLLUVLWLXLLYZLL[\L]L^LL_��LakbNcNdNNeNfgNNhiNjNQ�NNlmNn�otpsql�r��Nn�l�NuM�vwzMxMyM�;{}|�;�;MM~Mq�������M�o�oM���JMy�M�����M�OMM��7M���`����d����d���dfsub����m�db�o�m���dcWd�c�g4���N�NNazN�N��NN�N�N��N���_�N�N_�N�N�N_�������N��N�Ae�Ae��B�Ae�Ae��Ae�N�NN����N�NN�N�_�N�N�NN��NN�Q�N�����N�����g4NM�������az��t�gQaz�az�azazt���az�azv��b�az�azv�������gQaz�azubazv�m��gCt�jwMcWNMN��Nd��dd��dd��d��db��Cd��N�N�NazN���Ng_g_g_g_g_g_g_g_��N	N
NN
NNNU�NNN;N;N;N;N;N;N;N;N;N;N;N;N;Q�N )!N"N#N$Nd%&d'd(dm�d*N+NN,t�N.V/R0N1N2Q3DN4M56MM7M89MM:;M<MM=>MM?@MAMMBCM��MENFMMGMHMIJMMKMLMMMNMOMPMq�MNNSNTNUNMW\NXNYZNN[@N]'^�_�`�a�bazceazddcWfugkhjgCiv�gCb�kXlqmon�gQv�b�pwb�gCrst�-�^R7v�w�xzyw�b�gQ{}wU|��wU~uba��?v�����v��v��M��wv��[�����-�i���"���"��������az��az��az��ub������i�[a��-�w�?������gQw�azv���wU�w�az����^��^�Maz��w�az����az�w��v��azv�v�az�d�dd��d�dd�sudL�M��dMm�L�����cWMcWM����c��q~��q~��q~q~�q~�q~�iFq~�q~q~��q~�q~�q~<�q~L���_�)����i�i�����������ii����i�i�ii��i�i�i�i���ii�i��ii��ii�i��i�ii���i�i�i�i�i�i��ii�i����i�ii
iiiiii	i�iiii
iii��iiiiiii��i$iiii ii!i"i#L�i%ii&'ii(i�*7+��,-��.�/0��12��3�4�5�6L��8V9<�:�;�L�=�>G?�@�A��BC��D�EF��iHN�I�JK��LM���O�P��QR�S��T�U��W[X�Y��Z��\�]��^��`�a�bL�cqL�deL�L�fgL�L�hL�iL�jknlL�L�m�L�L�opL��L�rL�s�t|L�uvzwL�L�xL�y�L�L�{�L�L�}~L�L����L�L�����L��L��L�L�����L��L����L��L�L���L�L���L��L��L���L��L�����L�L��L��L���L��L�L��L��L��L��L��L���L���L��L��L���L��L�L���L��L�L����L���L�L���L��L��L�L��L������i��ii��i�ii�i�i��i�i��i�i��ii��ii�i��ii��i�i�ii��ii��ii�i�i��i�i�����i����i��i��i�i�i�i�i���i�i�ii����i�i�i�ii���i�i�i��ii�i��ii�i���
�i�iiiii�iiiii	�iiii
iiii�iiiiiiiii�iiiiii !ii"#i$i%i&i�i(7),*+L�)�L�d-.g4cW/p�0MM12M3MM4M5M6��M8R9Q:DL�;L�<=L�>L�?BL�@L�AL�iCL�L�iE~�b�Fb�GHMp�Id$JKLb�ڳx���N~�Ob�x�Px�b�cWM�STcWddUVZWz�b�Xb�YdaN[^\ku]j�Nb�ak_`adb�Mb�c(�d&�e�f�g�h�i�j�kazlmxnpdo�bL�qudrdsdtd�i�vwkuMd]ydz~{NL�|}L��L�d{L�d]���ku��d]`�d]������Bf�Bf��BfBf�Bf��BfBf�Bf��BfBfdBf��BfBf�Bf�Bf�dBf�BfBf�Bf�Bf��Bf�BfBf��BfBf�Bf�dBfBf�Bf�Bf�Bf�Bf��Bf�Bf�BfBf��BfBf�dBfnWd]�azcWaz�azaz�azAe�az��az�az��;������������Ae߫azub����d{q�N����d��dNg_��c�b�azdN������Nt�L�@&��gnlipzli����c�dNOTb���gn[�Q�dN������c�n���Q���gnaz����Q�^Cds8��azd{�VdN������OTMפ�p��g4lid{	Y���b�}�c���nW��������C���N����
������VQ���W�Lt�d?b�����	d?db�d{
ݨ��o�a"�azMd$֖gnH:Rc�lxb�d{gnl��,%" !d?Nb�aN#$b�d��N&)'(iMN��d?*+dNd?Q�y-4.1/0d�Mb�23b�LdN5867hQ�dOT9:b��d?~�<�=]>M?F@CABWp�*Ml�DEQ�lcWw�GJHId?�McWKLMc�`�l�NUORPQNAedlSTrIQ��7Q�VYWXO�Vli_FZ\�[�nf�V^C^p_i`faeNbcdm���suN@&ghc�NdgnjmklL�d��s8noQ�xvH:dqyrvstc�Nb�um��wxb�azQ��Fz}{|Q���^C�w~H:N+��d����������NOT��+�����q�azd{j*����p�c�e�j*��d{gn���!��������b�nWb���iM�>Ns8�����iMH:`����IQ�`�M��������NQ�d{N+��פQ�MN����Q�p�b�g4��azgn߫rf������`�d{b�g4��b�gnl�!����N|�N`���azb��xv��azM�az�����az���v��w��v�����m�v�mmaz�az�az�az�azjaz��az���az�azv��az�azm�maz��������az�t�az��t�mt�v���mt�v�t�gC�gCgQ���az��az���az�az��azaz��wu�az�������`�azN�7�azdaz����az�
@&��@&@&@&�@&��	�@&�A@
�,�k:L�L�L�L�L�L�L�L�L��L�,L�L�L� !("%L�#$L��L�&L�L�'�L�L�)L�*+L�L��-L�.4/L�L�0L�1L�23L��L�5L�L�67L�8L�L�9�L�L�;<M=E>L�L�?L�@L�ABL�CL�DL�L��FL�GL�L�HL�IL�JKL�L�LL��N]OVPL�L�QRL�SL�TL�L�U�L�WL�XL�YL�ZL�L�[\L�L��L�^_e`L�aL�L�bL�cL�d�L�L�fL�ghL�iL�jL�L��l�mL�n�o~pwqL�rL�sL�L�tuL�vL��L�xL�L�yzL�L�{|L�}L��L�L��L��L��L��L��L��L��L����L��L�L���L�L������L���L��L����L�L��L���L��L��L��L���L��L��L���L��L�L�����L��L�L��L��L��L��L���L��L��L����L��L��L��L�L��L�����������L�����L�L��L��L���L��L��L�L���L�L��L���L�L���L�L���L��L��L��L�L��L�����L�L���L���L��L���:L��L�L���L�L��L��L���L�L��L���:L��L��L����L��L�L��L��L���L��L��L��L�L���L��L��L��L�L���L���L���L��L��L�L��L���L��L��L��L��L�L�L�L�L�L�� L�L�	
L�L�L�
L�L�L�L��L�L�L�L�L�L��L�L�L�L�L�L�L�L�L��L�!L�")#L�$L�L�%&L�'L�(L�L���*+�i�-|.I/L�L�01:�2L�3L�4L�56L�7L�L�8L�9�L�;L�L�<=C>L�?L�@L�AL�BL��L�DL�L�EL�FL�GHL��L�JWKVLUML�NL�L�OL�PL�QRL�SL�L�T�L�L��L��X_L�YZL�L�[L�\]L�^L��L�`ma�L�bcL�L�deiL�fgL�L�hL��jL�L�klL�L��L�nL�opvL�qrL�L�sL�tL�u�L�L�wL�xL�yL�zL�{o�L�}�L�~��L��L��L��L�L�����L�L��L��L���L�L��L��L���L�L���L�L��L���L�L��L����L��L��L���L�L���L�L��L��L��L���L�L������L���ii��ii�i��i�i�ii�i��ii������L��L��L��L��L��L�L��L��L���L�L��L���L�L����L���L��L�L���L�L��L���L��L��L��L��L�L���L��L��L���L���L��L��L��L��L��L�L��L��L���L��L�L���L�L���L�L���L�L��L���L�L��L��L���L��:L���daz@az�%�$�� A���sGaz�cW���M�M��Mb�kup���b�iMLL�v���w�ub�b�	
l
c�g&�llg&LdM�M�M�M�M�M�M�M�M�M�@M�az 6� S!8"*l#$'%&u8g���()�g&#��"+2,/-.��y��01���=c�35g&4ն��67��c�ڈ9E:@;><=��g&g	?�0��ADBC�g&n�c�g&c�FLGIHg&��g&JK���s���MPNOlg&g&�@QRg&c��g&T{UdV]WZXYg&�Ol�[\�c�c�ն^a_`g&���=��bcڈl��getfqgpn�h�ij��k�l�mn��o�_��c�rsc��g	g&uxvw�n���g&yzn�g&��c�|�}�~��c�l#���նն�ն��նն��նն��ն��g&���y����c��g	���g	��l����������g��g&�����c������dc�����������������c����l�նg&�������������=����c�ն�����t��ڈ���g	��=�g&���������g&���������������_���g&�lc�����c��g&���g&l�g&�����������#����g&l�l��ll��l�ll�llg&+�����g&�g	��g	�yg&g&�g&g	�������g&�c���������g	����=c���g&���g&�g&���s����� #�       ��� g&� � � � � 	� 
 ���� 
 �dn����    ��ڈg&�d �c�ڈ    g	 ��g&  g&l#�g&     lg&g&�y ! "����ڈ $ / % ) &g& ' (g��ն�� * ,g& +l� - .���c� 0l 1 4 2 3g&��� 5l��s 7az 8 ; 9az :azaz| <azaz =az > ? @az||B� B$� C DnWazaz E F ` G R H O I L J K�ijazt� M N�1v�azaz P Qv�v�v� S Y T W U Vv�u�gCazgC X�az Z ] [ \azgCazgC ^ _v�b�b�az a#  b � c xaz d eaz faz gaz haz iaz jaz k r l o m naz����� p qR����� s v t u������ waz�az y � z �az { |az }az ~az az � � � � � �az����S	 � ���o�� �az �az���� � � �az �az �az �az �az � � � �az��Q�� � �SC�az �az �az �az �azaz � �azaz ��az �az � � �az �az �az �az � � �w� �w�azS	 �az �azw�az �az �az �az � � � � �v� ��
az� � � � ��������w�wwq �az �az �azwqaz �"$ �!� �!@ �! �u� � � � � � � � � � � ����y� � ������ � � � �����R�w �u�wu�u� �u� �u� �u��Z � � � � � � � ��Z�o�j� ������ �v� � ���
�
� � � � � ����� ��W�� � � ����1�� � ���S���w8 �! � � � � � � � �w8t�t��9�w ��w�W � � � ��e�s�> ����>�� �! �!!!������wqwq!S��!u�!!��	Su�u�!	u�!
t�u�!!;!
gC!!)!!!!!!v�!v�J!!Jw�w���!!!w*��w*up!TC�;!!#!! !!T%v�v��!!!"�}������!$!&�!%���!'!(�gQgQ�!*!2!+!/!,wU!-!.���wUwU!0wU!1����!3!8!4!6!5w��ww!7w�	!9wU!:wU�wUgC!<gC!=gC!>gC!?gQgC!A!I!Baz!Caz!Daz!Eaz!Faz!Gw�!Hw�azw�!JkX!K!p!L!W!M!R!Nb�!O!Qv�!Pv�T4upb�!SkXb�!T!U!V���;wFV�!X!b!Y!^!Z!\kX![kX�&!]v�S4p!_!`v��0��!a�j~!c!i!d!g!e!f~��S���!h����!j!m!k!l�e��!n!o�w8w8��!q!|!rkX!s!y!t!w!u!v?US���,!x�!zkX!{kX��kX!}kX!~kX!kX!�kXb�kX!�!�!�!�!�!�!�!�!�!�!�!�!�!�!�!�!�w*���"!�!�w*)S��!�!�!�!���XXTC!�w�w!�gC!�gCw!�wgCgC!�gC!�gC!�gC!�gC�&!�gC!�!�!�!�!�!�!�!�Tz���1!�!��}��TJ�!�!�!�!�J��J���!�!�!�!��!�S���!�!�8S�J�!�!�!�!�-TJ���!�!�v�R7J��	!�!�!�!�!�!�!�!�!�!�!�!��y�������i!�wup!���w!�b��M!�!�b��Mb�!�!�!�kX!�!�b�!�b����!���kX!�!�!�!�kX�"!���F���!�!�a��v�!�v�p!�!�!�!�!�!�!�!�gC�0�[�!�!�!����!�gQ�?RTwU!�!�!�wU!�wUS��?�!�!�{�!�{�!�{��-!�!�!�!�!�w�9ww!�w��!�gC!�gC����!�gCaz!�az!�az!�azgC!�"az!�!�gC"gCaz"azgC"az"""""gC"gC""
"	XS�SQ"gCV��gC"
""""gC"""5�B�"""�"�Tz""�1����S�"gC"gC"gC""!"" J���8"""#��	b�gC"%"�"&"@az"'"("0")j"*j"+jj",j"-"."/jj"1j"2j"3j"4":"5"7w�"6�j"8"9j�����";">"<"=�bb�"?j�j"A"z"B"a"Cwc"D"Z"E"M"F"K"G"HJw�"I"J<�i�i�M�M"L�"a�"N"S"O"P�wc"Q"R�����?"T"W"U"VRT�?�?�"X"Y������-"[wc"\wc"]"_"^�^�-�^"`wc�^wc"bwc"c"s"d"k"e"i"f�""g"hT�y���""jwc�"�"l"p"m"o"n�[����w�"q{�w�"rw�{�"tub{�"u"v"x"wub{�ub"yubub�W"{"�"|w"}"�"~"�""�"�"�"�"����"T4��"�"�TC��;ww"�"�"�w�&"�"�"�"�"�"�S4�B�����"�e"�"�"��J�J��"�?UJ�"�w"�w"�w"�w��w"�w"�w"�w"�w"�w�w"��ww"�"�"�"�"�v�az"�az"�az"�azv�"�"�"�v�"�v�"�"�"�"�"�"�"�w<ww"�wFv�"�"�v�"�v���"�����"�v�"�"�"�"���,�,�^�^"��^"�v�"�v�"�"�"�"�"�"�"�"���K��R�"�"��ww�Z"�"�"�v��Zv�"��
v��j"�"�"�"��"��1t�"��wt��w"�"���"���wqwqv�"�"�"�"�"�"�"�"�"�v�"�v�"�v�"�v�v�"�v�"�v�"�v�v�"�v�v�v�"�v�"�v�"�v�v�"�v�"�v�"�"�"�v�"�"�"�u���K"�v�u�v�"�"�"�v�v�"�v�3
"�v�"�v��1v�"�#"�m"�m"�#######������W#t���t�##	t�#����#
#�e��S�#
m#m#m�m#j#j#j####w�#�j##j�����####�bb�#j�j#!$#"#�###l#$#5#%#*az#&#'v�#(v�az#)azv�#+az#,v�#-#2#.v�#/v�#0v�#1v��4#3v�#4v�v�v�#6#T#7#G#8v�#9v�#:#A#;#>#<v�#=v��Kv�v�#?v�#@v�v�#Bv�#C#Ev�#Dv�3
��#F��v�#Hv�#Iv�#J#M#Ku�#Lu���u�#Nv�#O#Q#P�u�J�#R#SS���v�#Uv�#Vv�#Wv�#X#g#Y#`#Z#]#[#\�")���#^#_SQ��TJ�#a#d#b#cJ����#e#fS���-J�#hv�#iv�#j#kS�v�R7J�#m#�#n#�#o#}#p�"#q�"#r#z#s#v�"#t�"#u�"�#w#y#xw��4w�w�ub#{�"#|�"ub�"#~v�#v�#�#�v�#�v�#�v�v�#�v�#�v�v�#�3
v�#�#�#�v�#�v�#�v�#�v�wc#��#���v�#�v�az#�#�v�az#�azv�#�#�u�#�#�u�#�u�#�#�u�#�u�#�u�#�u���#�u���#�#�u��yu�#�#�#�v�#�v�#�v�j#�j#�#�v�jv�#�v�#�v�#�v�#�v�#�v�#�v��v�#�#�#�#�#�#�#�m#�m#�m#�m#�#�#�#�#�����w���#�m�#�#����#�#��������m#�#�m#�m#�m#�#�#�#�v�#�v�����#���p#�mw8#���m#�#�#�#�#�v�#�v�#�v�#�v�#�v�#�v��v�#�m#�m#�m#�m#�m#�#�����S�m#�#�#�v�#�v�#�#�u�#�u�#�u�#�u���#�v�#�#���#����y�#���v�#�v�#�v�#�v�#�v�#�#�w���v�#�$#�#�t�v�#�$#�az#�az#�az#�azw�#�#�azw�az$az$az$az$azt�$$azt�az$$m$	$
m$m$m$
m$$$$���������m$az$az$az$az$az$az$�az��$$d$$-$az$az$$&$ az$!az$"az$#az$$az$%azJ�v�$'az$(az$)azj$*j$+$,azjaz$.$K$/$C$0az$1az$2az$3$?$4$9$5$8$6$7azT�F�j�$:$<�&$;�4�$=$>���F�$@az$Aazb$B��az$Daz$Eaz$Fazaz$G$Hazaz$Iaz$JDS$L$[$Maz$Naz$Oaz$Paz$Q$X$R$U$S$Taz��Q��$V$W����$Yaz$Zaz�$\az$]az$^az$_azaz$`az$a$b$cazRF�az$e$�$f$t$gaz$haz$iaz$jaz$kaz$l$q$m$o$n��azL�$p�
���$raz$sazF�az$u$�$vaz$waz$xaz$yaz$zaz${$~$|$}az��Q��$$�SC�az$�az$�az$�az$�azaz$�$�azaz$��az$�$�$�$�$�az$�az$�az$�az$�az$�$�$��az��$��az$�az$�az$�az$�azaz$�$�azaz$�RFS$�az$�az$�az$�az$�az$�az$�$�$�$�azQ����$�az��$�azazM$�$�$�$�$�$�Mp�$�Qaz$�az$�$�$�az$�az$�$�az$�az$�az$�azaz$�az$�w�az$�az$�$�az$�$�az$�az$�azaz$�w�az$�$�az$�az$�$�azaz$�$�az$�azjaz$�az$�az$�$�az$�$�azaz$�$�az$�az$�az�az$�az$�az$�az$�az$�az$�az�azaz$�azM$�az$�%$�az$�$�$�$�$�$�az$�$�$�$�Ae$�$�$�B�Ae$�$�Ae$�AeAe$�$�Ae$�AeB�AeAeNE$�$�azAeaz$�BaBa$�$�Ba$�BaBa��$�azHG$�$�HGHGE�$�%%%
%%%az%AeAe%
�Ae%%
%%Ae��%	azaz@%�A�A%Ez�AEaz%%%az%|�%Ezaz%b�v�%azaz|�Maz%%{%%g%%%%azMaz@&%%K`�%% H:%!%H%"%;%#%/H:%$H:%%H:%&H:%'H:%(%)H:H:%*H:%+%,H:%-H:H:%.�*H:%0H:%1H:H:%2%3H:H:%4H:%5H:%6H:%7H:%8H:%9H:%:�*H:H:%<H:%=H:%>%?H:%@H:%AH:H:%B%CH:%DH:%EH:H:%FH:%G�*H:%IH:%JH:�*H:xv%L%Mg_%Ng_%O%[%P%Saz%Q%Razb�az%T%X%U%Vu�azaz%Wazwq%Yazaz%Zwv�%\az%]%c%^%`%_jazgQ%a%bv�t��[azb�%d%e%fazt�w�gQ%h%k%i%jNMNd%l%z%m%ug4%ng4%o%pg4%qg4g4%r%sg4g4%tz�g4%vcW%wcW%xcW%ycWcW�Wq~az%|&N%}&K%~az%az%�%�%�%�%�%�%�%�%�%�%�%�v�%�v�ww%�azkX%�%�%�%�kXazaz�"%�%�u�v�v�az%�%�%�%�v�%�t�wUaz%�azub%�%�%�%�azubazv�%�azkX�M%�%�%�%�%�%�jaz%�azv�m%�az%�%�v�azv�az%�%�%�%�%�%�gQazjt�%�%�v�b�waz%�%�%�azgCmaz%�%�az%�az%�az%�azaz%�az%�%�az%�azazgC%�%�%�%�%�az%�azv�azaz%�az%�j%�w�az%�%�%�%�%�%�%�%�b�gCgQv�%�%��"ubkX�M%�%�%�%�wU�?wv�v�%�v�v�%�%�%�%�%�%�v�t�wv�u�m%�%�%�%�kXazgCu�%�azv�az%�&%�%�%�%�%�%�%�%�%�%�kX�Mv�v�%�%�mju��"%�%�%�%�v�azazj%�azjaz%�%�%�%�%�%�v�v�mt�%�azjw%�%�%�%�azgCazb�az%�gQaz%�&%�&az&&&v�azb�az&&&ubazv�&kXu��"&	&
&
az&&wUkXv�az&&&&v�jmu�&&gCv�v��M&&.&&!&&&&&azgQaz&&b�wazgCaz&&& mv�v�v�&"&)&#&&&$&%v�v�mj&'&(u��"v�v�&*&,az&+wU�M&-azt�az&/&=&0&7&1&4&2&3v�azaz�M&5&6�?kXv�v�&8&;&9&:mju��"&<azv�t�&>&E&?&B&@&Aazv�v�v�&C&DgQazv�az&F&I&G&Hazmazw&JazgCb�&L&MAe@&Aep�&O&�&P&�&Qaz&R&w&S&f&T&^&U&Y��&VO4&W&X�kq��k&Z&[�>��&\xv&]xvq�xv&_&c�k&`&aq�&bq�q�xvxv&d&eq��mq�&g&l��&h��&i��&j��&k��q�&m&r&n��&o&q&p����q�q��>&s&v&t��&u��q�������&x&�&y&|�k&z�k&{����&}&�&~&�q�&q�&�q���&�&�q�&�q�����q�&�&���xv&�q�&�����q�&�&�&�&�&�&��k&���q���&���&��)��&�&���&�&�&��)xv������&�&�&�q���q���&�&�&�&�&�&�&�&���q���q����)&����>q�&�&�&�&�&�&��>q���q�&���q��)q���&�azaz&�az&�&�az&�azaz&�&�azaz&�azw*&�azt�az&�'�&�'&�&�&�&�&�&�az&�az|&�&�az`��az&�&�&�azcWaz&�azdsG&�&�&�&�&�azAeaz&�az&�az&�az&�&�&�az&�w*&�w*&�w*azw*&�&�&�azaz&�&�az&�az&�az�B&�&��B�B&��B&�&��B�B&��B&�az�Bazw*&�&�az&�azQaz&�&�cW&�L&�&�&�&�&�&���&���&���&����>�>&���&��>&�q�xv��&���&�&�����q�&���&�'&�&����>&�&�&�q�`q���&�`��xv'��'��'�>��''''''
''	@&p�Maz'az�az'
'''azMaz��''nWM�'g_az'�Haz''''M'AeMaz'sGL�''X'azaz'''6' '5'!'2'"'#cW�'$''az'%'&azazgCaz'(az')az'*az'+az','-azaz'.az'/az'0'1azazgC'3'4y7L�g_`�cWdgQ'7'8'Bb�'9':'=p�';b�'<��b�'>'A'?'@y(x�b�����b�'C'Fb�'Db�'E��b�'G'J'Hb�'Ib�b�b�'K'N'L'M�d]��x�'Op�b�'Pd$'Q'Rd$'Sd$'Td$'Ud$'Vd$d$'W��d$'Y'j'Zaz'[MM'\M']'^MM'_'`M'aM'bMM'c'dMM'eM'f'gM'hM'iM�;M'kM'l'u'm'r'naz'ogQ'p'qazt�u�az's'tazt�t�az'v'{az'waz'x'y'zb�azazv�'|'�'}az'~'t�azt�b�gQv�'�'�'�'�'�'�'�'�'�'�nWtyMAe'�'�'�az'�{'�'�Ae'�'�'�E'��E'�'��H:AE'�'�'�'�'�'�H�AA'�'�'�'�N�'�N�"�N��N�H:'�H:A'�'�'���mA'�EAgC'�'�gC'�gCgC'�'�gCgC'�gC'�'�gC'�gCgC'�'�gC'�gC'�gCgC'�'�gCgC'�gCaz'�az'�'�gCaz'�az'�az'�az'�'�az'�'�azaz'�azb�'�'�az'�az'�gCazaz'�azv�'�'�'�'�'�'�az'�az'�'�azaz'�'�azaz'�az'�azu�g4p�'�az'�nWn�'�n�'�'�n�n�'�'�n�n�'�'�n�'�n�'�n�n�'�n�'�'�n�'�n�n�'�n�'�@n�'�'�'�'�cWazazL'�az'�Aed]'�d]'�d]'�d]'�d]'�'�d]'�d]��d]'�('�'�'�'�'�'�nWaz�M'�sGcWaz'�az'�'�sGazd'�'�((az(jaz(t�jaz(az(az(jaz(((	((
(az`�(az(
az(az((az((azaz(az(t�azaz((azaz(jazaz(az((()((%(( ((b�cW`�n�(!� b�("i�(#i�($K�i�(&d('((`�NM�L�(*)((+(K(,)()((-(.(8)((/(0)()((1)((2(3)((4)((5)()((6(7)(nW)((9(C(:)((;)((<(@)((=(>)((?)()(nW)((A)((B)(nW(D)((E)((F)((G)((H)((I)((J)()(nW(L(U(M)()((N(O)((P)((Q)()((R(S)()((TnW)((V(l(W(d(X(])((Y)((Z)(([(\)(�)((^)((_)()((`)((a)((b(c)()(nW)((e(f)()((g(h)()((i)((j(k)()(nW(m(x(n)((o)((p)()((q)((r)((s)((t)((u(v(w)(nWnW)((y)()((z)(({)((|)((})((~�R)((�(�(�(�cWL�azt�(�(�(�d(�(�(�(�(�(�(�(�(�(�u�t�t�(�t�azaz(�az(�(�azazb�az(�az(�az(�azb�(�(�(�(�(�gCaz(�gCaz(�azaz(�azv�(�(�b�(�(�v�az(��0��j(�(�(�(�(�a��wF��(�(��&��"�(�(�(�az(�v�(�azv�(�ubaz(�(�az(�(�az(�azaz(�wm(�(�az(�az(�gCazaz(�azv�d(�(�(�(�(�(�(�M(�OE�m�(�Ng4|�(�(�(�LM(�(�di�b�d(�(���(�(�(�`�L�l�(�(�(�(�(�ubb�s�#�(�(�d$gn@`�b�j*(�+o(�*(�)X(�)(�)	(�)(�azaz(�(�(�(�(�(�(�(�(�az(�(�az(�mt�az(�(�(�azaz(�t�azaz(�(�azt�az(�az(�azaz(�az(�t�az(�azaz(�(�az(�az(�azt�azaz(�(�)az(�(�az(�azaz(�gCaz)az)az)))azazgC)azgCazaz)E�q~)
)
))H:azAeaz)))M�)M))NnWg_d�0azaz)))az)azt�))W))O)) ))))l�|�MdM�M)!):)"),)#)')$)%azkX)&azazwaz)()))+)*azazgCt�az)-)3).)0az)/wcm)1)2v�ubv�t�)4)6)5azwt�)7)8b�az)9azazm);)I)<)B)=)@az)>az)?v�v�az)AgCgQ)C)E)DazgQu�)F)Hv�)Gv�azv�w�)Jaz)Kaz)Laz)Mb�)Nb�azgC)PaNaN)QaN)RaN)S)TaN)UaNaN)Vl�aNkuaz)Y)�)Z)\)[azxvaz)])`)^)_azAeazE�)aE��)b)c)�)d)mb�)e)fb�b�)g)h)k)i)jp�����d$)lb�b�d$)n)�)o)�)p)v)q)sb�)rp�b�)t)u��d$p����Y)w)x)��Y)y�Y)z�Y){)|�Y�Y)})~�Y�Y))��Y�Y�z)�x�)�x�)�x�x�)�)�x�)�x�)�x�x�)���x�)�b�b�)�)��}�0p�)�)�)�)�b�)�)�b�b�d$b�)�b�)�b�d$)�)�b�)�)�b�)�b�b�)�)�b�)�b�b�)�)�b�)�b�)�b�b��gb�)�x�b�)�)�)�)�)�)�)�)�b�d$)�b�d$)�b�d$)�)�)�)�)�b�b�d$)�b�b�d$)�b�)�b�d$b�b�)�b�)�)�b�b�)�b�d$)�)�)�b�)�)�)�)�)�b�b��p�)�p��Yx�b�)�)�d$)�)�b�d$)�d$b�b�)�b�)�)�b�d$b�)�)�)�)�az)�Baaz)�)�t�)�)�`�az)�az)�|azdazaz)�)�*
)�az)�)�)�)�)�)�)�cW)�cW)�)�)�cWcW��cW)�)�cW)�cWcW)�)�cWcW)�)�cW)�cW)�cW�ucW)�cW)�cW)�cW)�)�cWy�ucWcW)�cW)�cW)�cW)�)�cWycW)�)�cW)�cW)�)�cW)�cWcWgh)�cWcW**cW*cW*cWcW**cW*cW**�ucWcW*	�ucW*az**az*
*az*az*az*az*azazgC*azaz*az**az*az*azazgC*+**�**.**,** az�*!Q'*"Ae*#Ae*$Ae*%Ae*&Ae*'***(*)Ae��Ae����*+��Ae*-azMAe*/*�az*0az*1*2*c*3*U*4*7az*5az*6azt�*8*Q*9*<*:azgQ*;gQaz*=*O*>w*?az*@*G*AgQ*BgQ*CgQ*DgQ*EgQ*FgQazgQ*HgQ*IgQgQ*J*KgQgQ*L*M*NazgQazgQaz*Pt�az*Raz*Saz*Tazmaz*V*^az*WgQ*Xaz*Y*Zv�*[v�v�*\v�*]v�az*_�O*`*aazgQaz*bazv�*d*v*e*ucW*f*g*n*h*k*i*jRnfm���*l*mfA�i#�*o*r*p*q�o�C�a�<*s*tJٌ�Qe�Q�az*w*�*x*�az*yaz*zgQ*{az*|gQ*}gQ*~gQ*gQt�*�`�*�`�*�`�[��*�az*�*�*�*�*�*�azv�gQu�u�*�u�az*�*�*�*�azjv�b�*�*�gCazv�v�*�*�AeM*�*�*�*�*�*�*�*�*�*�*�*�*�M*�*��m�4V	=�b�*�q�*�Mg�*�*�dפLaN*�*�*�*�g4L�L�*�y7*�y7)�*�*�c�c�j�M*�*�*�*�*�*�rX��aNak*�dp�L*�*�*�*�`�*�*�*�)�ak�lakg_d*�*�dd{*�d*�*�lipz�gn*�*�*�*�*�*�*�*�d*�*�&``���cWak*�*�L��,�/M�*�*�*�*��mL�j�L�*�*�db�`�b�*�*�*�*�*�*�cW�Rty*�*�*�<azaz�1*�*�cW`�n�*�*�*��Mmm��*�*�*�*�MM�c�N*�*�*�i#m�i#g4`�*�az*�az*�az*�*�*�b�*�*�*�azaz�^*�*�azkXv�az*�*�az*�azv�az*�*�azv�az*�+*�*�az*�t�L+cWLaz++++cWMaz{
+++g_+@&+	+az+
H:az+az|+
�azL�t�++4+++++L�Laz++L�azt�azaz+++3+Ae++/++$++!az++az+ azv�az+"+#mazazgC+%az+&+++'+)+(azazv�az+*��az+,az+-az+.azgCazaz+0+1az+2azazmsGnW+5+K+6+I+7+8nWaz+9azM+:M+;M+<M+=M+>+?M+@MM+A+B_/_/+C_/+D+E_/_/+F_/+G+H_/_/��az+JazM+L+aaz+M`�+N+O+\+P+V+QN+R+TP}+SP}NN+UNP}+W+XNP}+Y+ZP}NN+[P}NN+]N+^N+_+`NNP}+b+n+cg4+d+gaz+e+faz|azaz+h+iaz+jaz+kaz+lazaz+maz�1azL�+p-?+q,+r,+s+�+t+|+uazaz+vaz+w+xazaz+yaz+z+{az|az+}+~Aeazaz+az+�+�+�+�+�L�+�+�+�+�L�L�+�L�+�L�+�+�L��L�L�+�+�L�L�+�+�L�L�+�L�+�L�+��L�+�+�+�+�+�+�+�L�L�+�+�L�L��L�+�L�+�L�+�+�L�L�+�+�L�+�L��L�+�+�L�+�+�L�+�+�+�L�+�L�L�+��L�+�L�+�L�L�+��L�L�+�+�L��L�+�L�+�+�+�L�L�+�L�+�+�+�+�L�L�+�+�L�L�+�L�+��+L�L�+�+�L�+�L�L�+�+�L��L�L�+�L�+�L�+�L��+�+�+�+�L�+�+�L�+�L�+�L�+�L��L�+�L��L�+�+�+�+�+�L�+�L�L�+�L�+�L�+�L��+�L�L�+�L�+�L�+�+�L�L��+�L�L�+�L�+�+�L��L�+�,+�,+�az+�+�az+�+�az+�+�+�+�Q�N_�+�NVp+�+�_�+�+�VpVpNQ�_�+�+�+�+�+�F�+�F�F�+�+�F�i@F�F�+�F�+�i@F�az+�az+�az,az,Lazaz,u�u�az,dM,,,M,	,
azF�azM,,,
,Maz,azaz,b�,,gCb�,b�az,,L@&Ezaz,,�,,�,,�,`�,,2,,),E,,&, az,!az,",$,#azaz|,%azaz@,'azaz,(|az,*az,+az,,az,-,0az,.,/az|az,1azaz@,3,<,4L,5H:,6,:,7`�,8az`�,9���,;xvnWd,=,n,>,a,?,D,@,C,A,B�7)��f$$$$��,E,V,F,G��$,H|���,I,J����,K,L,Q��,M��,N,O����,P�f��,R��,S��,T����,U�f��,WcW,XrC,Y�,Z��,[�,\�,],^��,_,`��cW,b,h,c,f,d,ey�v�$$��$$,g�fcW,i,k,j�$$�,l,m�W�|��W,o,�,p,,q,|,rgh,sgh,tgh,ugh,vgh,wgh,xgh,ygh,zghgh,{ghv�,},~ghcW�ucW,�,�,���cW,�,�����cW,�,�,�,�,�$$��$$,�,��$$��$$,�,�,�,��fcW9�cW,�,��$$cW$$az,�azcW,�,�az,�azL�,�,�dL�azj�,�,�,�,�,�,�@&az,�az,�,�,�az,�az,�azaz,�,�az,�azu�azaz,�,�,�az,�,�,�b�gQkXgC,�azmv�,�,�M�N,�az,�,�az,�,�azt�az,�,�,�azazv�az,�,�az,�azaz,�az,�az,�,�azaz,�az,�,�az,�azaz,�,�azazw�,�-
,�-	M,�,�,�,�,�az,�,�az,�az,�azaz,�|azaz,�,�azaz,�,�azaz,���`�,�,�,�,�az,�,�azaz,�azm,�az,�,�,�azaz`�,�,�,�azazHG,�,�`�azaz|,�,�,�,�,�,�az,�dazaz,�azdaz,�,�,�,�azazgnaz|,�-,�,�,�,�az,��azaz,�|az,�,�|az,�azaz`�--az--|az|----az|li|az|M�az-azM--
---M--d-d-dd-d-d--d-d-dd--dd-db�Md--5--/- -,-!-&-"-$az-#azgQ-%azgQaz-'-*-(-)v�azv�az-+azazgC`�---.MazM-0K�-1d-2m;-3-4M�mcWv�-6M-7-<-8-9���-:�X-;�Xm�-=�)`�->|M-@-a-A-V-B-H-C-F-D-E@&M|az-Gazg_M-I-T-J-KAeMaz-L-Mazaz-Naz-Oaz-Paz-Q-Raz-Saz�az-Uazdaz-W-^-X-[-Y-ZazAeL�Ae-\-]Aej�ML�az-_-`azM�az-b-z-c-v-dxv-eazaz-f-gazaz-h-iaz-jazaz-kaz-l-mazaz-n-oazaz-p-qazaz-r-saz-tazaz-uv�az-w-y-x`�j�`�`�az-{/�-|azaz-}az-~-.�-�.!-�-�-�-�-�-�-�-�-�-�-�-�-�-�-�y�My�L�q�-�$3q�-�q�$3-�-�-�M-�MtOM-�-�M-���Mg�M-�-�-�-�-�-�M-�Mg��4��~-��;��-�-�-�-�-�M��MM-�����-�-�-�MM�4-�MMq�-�-�-�-�-�-�-�)�-�-�M��M)�-�-�M-�q�)�)�M-�-�-�-�-�M��M-�-�MM���tO-�-�-�g�tO��-�Mg�tO-�-�-�-�tO-�-�g����-�-���-��oMMtO-�-�-�tOg�-�L�M-�M-�MtOM-�M-�M-�MM-�M-�g�-�g�M-�-�-�-�-�-��O-�-�g�-�g��OtO-�g�-�-��tO)�tO-�-�-�-�����-�-�-�-�-�M��MM��-�*�*�M-�-��4-�-�-��4q�-�tOq�MMg�-�.	-�-�-�-�-�q�-�g�g�q�-�-�q�-�-���q����o-��;-����o..�;.��.�o)�...)�)�tO)�..tO)�tO.
M.....
.g�.g�����.��*�...��*���..��g�g�*�.....tO��tOtO.tO�+.. .g��+g�)���.".n.#.a.$.A.%.0.&.)M.'.(g�Mg�.*.-��.+.,MMq�..M./MMg�.1.5M.2M.3.4MM�4.6.<.7.9.8MM�M.:.;M��;M.=.?M.>g�MM.@M�;.B.S.C.K.D.H.E.G.FMMq�MM�g�.IM�.JM�M.L.P.M.N�g�.O�og��oM.QM.RM�;.T.[.U.Y.Vg�.W.XM�MM)�g�.ZdM.\._.].^M��Mg�.`M��M.bM.cM.dM.e.i.f.h.g��Mg�q�g�.j.l.kMtOM.mMy�M.o.z.pM.q.w.rM.s.uM.tM�.vM�;)xM.xM.y��tOM.{.|.�.}MM.~.��M�;.�.�g�����q�.�/6.�.�.�.�.�.�.�.�.�.�.�.�.�.����.�Mg�M.�.�Mg�M�J.�.�~A�.�.���.���g�.���g�M�.�.�.�.�.�.�MM���.���M.�.���.���Mg�*�.�.�.�g�g�.���A�.�.�M.�M����M.�.�.�.�.�.�.�.�M.�M�;��$3.�M�JM.�.�.�.���A�M.�Md.���tO��.�.�.�.�.�.����JM��y�.��J��.�.�.�.�g�.�Mg�g�.�g�M.�.�M�.���y���g�.�.�.�.�.�.�.�.�.�.�$3MM.�M��.�.�M�.���g�*�M.�.�.�.�M��.�.�Mg�����.�.���.�g�M�JM�.�.�.�.�.�.�g����M.�.�.�g�g�y�.�.�g�My�M.�M.�M.�Mg�M.�.�.�g�g�.�g�.�.�g�g�y�.�g�g�.�g�.�.�g�g���.�/.�/.�/.�g�g�/g�//g���g�////M/M/��g�/	M/
Mg�M/M/
M/M�M��g�///M/M///Mg�g���//��/��/*�M/M//Mg���M//,/ /)/!/%M/"/#MM/$g�M/&MM/'/(MMg�/*M/+Mg�M/-g�/./2M///0��M/1M��/3M��/4/5M��M/7/l/8/L/9/AM/:/;/>tO/<��/=��g�/?��)�/@q�g�/B/E/Cg���/D��g�/F/J/Gg�/Hg�/Ig�g�A�g�/K$3M�/M/]/N/V/O/Sg�/P/Q/Rg�q�q����4/T)x/UMg�/W/[/Xg�/Y/ZMq��%tO/\��tO��/^/g/_/a/`��M�g�/b/e/c/d��M���˫/f�	˫�;/h/k/i��/j�+}q�+g�M/m/�/n/�/o/z/p/sg�/qg�/r��)x/t/w/uq�/v*���q�q�/x/y��q�tO/{/|��g�/}tO/~/g�tOMtO/�/�/�/�M/�tO/��;g��;g�/�/�/�/���/�/�/�����g��o��g�M�/�/�/�M��o*�/�*�)x/�/�g�/�g�/�/�g�g�/�g���/�/�/�/�g���M/�/�g�Mg�/�/�g�/�/�g�g��o��g�/�/�/�/�az/�az/�az/�/�az/�azaz/�/�az/�azt�azL�xv/�azi�/�|/�|/�/�azaz/�az/�az/�/�azgCaz/�a�/�3N/�1G/�08/�/�/�az/�az/�/�/�/��1azM�L/�/�az/�/�azaz/�/�az/�/�az/�az/�/�azv�gC/�/�/�/�/�azb�az/�/�t�azmu�/�/�/�azv�az/�azazjq~F�az/�/�/�az/�/�/�azMdaz/�05/�/�Lazaz/�/�0/�/�az/�/�/�/�/�az/�/�/�|azaz|az/�az/�|azaz/�/�az/�azaz@&/�0/�/�az/�/�az/�az�azaz/�/�/�az/�az|00azxvAeazaz00az00az0azi�az|0	0 0
000000
000|�|azaz0|az0az0az|az0azaz00azaz|000azaz0@az0azaz0|az0!0*0"0'0#0%az0$az|az0&|azaz0(|0)|az0+020,0.az0-|az0/az0001b�azb�v�03az04azaz|0607L�azazty090�0:0�0;0u0<0r0=0c0>az0?az0@0b0A0^0B0Q0C0L0D0G0E0Fwu�mt�u�0H0Iu�0JgC��0KupgC0M0OgC0Nv�wu�0P�"v�0R0Y0S0V0T0Uaz��azkX0W0Xazv�v�v�0Z0\0[gCgCw*gC0]gCazaz0_az0`M0a��az|az0d@&0e0i0f�H:0g0hH:az|0j0kF�azaz0laz0m0n0q0oaz0pazaz|az|0s0t@&tyAty0v0�0waz0xaz0y0�0z0~az0{0|azaz0}azt�0azaz0�azt�az0�0�t�0�t�t�0�t�0�azt�az0�0�M0�az0�0�0�0�0�0�0�0�0�0�0�azaz0�0�azaz0�0�az0�azaz0�az0�0�azazj0�azaz0�0�azaz0�0�az0�azaz0�az0�0�azjazazgQv�0�v�t�0�0�t�gQaz0�v�azaz0�az0�0�0�0�0�az0�azub0�0�gC�wcb�0��0�0��v�v��0�0�0�az0�nW0�c�0�az0�az0�az0�az0�az0�az0�azazm0�az0�azMaz0�1>0�0�az0�0�0�az�10��1��/0�1-az0�0�0�0�0�az0�0�az0�0�0�0�az0�azw0�az0�azwaz0�az0�0�0�t�azt�0�azt�az0�az0�az0�0�0�0�0�0�0�azgCaz0�0�gCazgCazaz0�0�azgCazaz0�0�gC0�gCgC0�0�gC0�gCgC0�gC0�gC0�gC0�0�gCazgC0�az0�10�10�10�1az0�11azt�gCw111azgCazazt�111az1	1
azgCwaz1az1
gCazt�1az1az1azaz1azt�11"1111t�az1gC11azt�gCaz1az11 11azt�t�az1!azwaz1#az1$1)1%1'1&azazgC1(azwaz1*az1+1,wazazw1.1=az1/10@&11@&12@&13@&14@&15@&16@&171918@&@&�1:@&1;1<@&��@&d]t�1?1F1@1D1Aazaz1B1C|��|1EnWaz|nWaz1H2�1I1�1J1n1K1Vaz1Laz1Maz1Naz1Oaz1Paz1Qaz1Raz1Saz1T1Uazazv�1W1c1X1YM�azM�1Z1[az1\az1]az1^az1_1b1`gQ1agCazv�v�az1d1enWazaz1f1gL�L�1hL�1iL�1jL�1kL�1lL�1mL��>1o1u1p1r1qazazAe1s1tNazazz�1vaz1wazaz1x1y1�1z1�1{1�1|1�1}1~azb�1azaz1�azu�az1�gQ1�b�az1�1�1�1�1�azazb�1�azazgQ1�az1�azazb�1�1�1�1�az1�az1�b�az1�1�1�1�az1�1�az1�b�1�b�1�b�b�1�b�1�1�b�b�1�b�kXb�azaz1�b�az1�1�1�1�1��01��0�01��01��01�1��01��0t��0az1�azb�1�1�1�1��0b�b�az�01�azw1�1�1�1�1�1�az1�azu�1�1�t�az1�azt�u�1�1�1�1�az1�t�azazt�1�1�1�azaz1�wqu�1�azt�b�1�1�1�1�1�1�1�t�az1�j�0jwq1��0�01�1��0b��01�1�w1�1��01��0b��01�1�1��01�1�1�1�1��01��01��01��01��01��01��0b��01��01��01��01��01��01��01��0t��0az�0�01�1��0t��01�291�2)1�21�1�M�@&az1�az1�1�2az1�1�1��1�|1�|1��|1�1�az@�,az2azaz2az222az2azj2jjaz2	az2
az22az2az2
az22az2az2azazv�2az2az22az2az222azv�t�azaz2az22az2azaz2az2 az2!az2"2#2&az2$az2%ubaz2'azaz2(azub2*2/2+2,azL�2-azaz2.|az20azaz2122azaz2324azaz2526azaz27az28w�az2:2h2;2e2<azM2=2>2Faz2?2@2Aazjaz2Baz2C2Daz2Eaz�
az2G2Z2H2M2Iaz2Jaz2Kaz�B2Lw*az2N2OazgCaz2P2Qaz2Razaz2Saz2T2Uaz2Vaz2Waz2Xazaz2Y�az2[2`az2\az2]2^az2_azaz�az2a2baz2cazaz2du�az2f2gazMAeaz2i2l2j2kaz@azcW2maz2naz2o2~2paz2qazb�2r2saz2taz2uazaz2v2waz2xazaz2yaz2zaz2{2|az2}az�Bazaz2az2�v�2�2�2�2�azaz2�az2�az2�az2�az2�az2�az2�az2�2�az�az2�az2�az�az2�2�2�2�2�2�2�2�az2�azAe2�2�cWMg4az2��2��N��2��2��2�2��2�2�2�2�2�2�2��Ae�2���2�M��F��2�2�2��2��2��2�2��N2�2�2�2�Q�2�2�2�2��O2�2�2��O�^�O��O2�2�n��5cW��2��2�2�2��2��2�2�d2�d2�dd2�d2�d2�d2�d2�d2�d2�2�d2�dad2�3M2�2�2�M2�nW2�M2�MMi�2�322�L�2�3M2�2�32�2�2�2�2�h4d]2�2�2�2�2�d]2�d]h4d]h4d]2�h4d]2�2�2�d]d]2�d]2�d]h42�d]2�d]2�d]h4d]2�32�2�2�d]d]2�2�d]d]ݶd]2�2�32�2�d]2�2�2�d]�2�d]�d]2�x�2�d]d]2�2�x�d]x�h4d]3d]33��d]d]3d]3d]3d]h43	33
d]33d]3d]3
3d]ݶd]d]33d]3h4݋d]3d]3d]3d]3d]d]3d]h433'33!3333v�t��wv�az3 v�v�3"3$3#�1t��13%3&�1j�wj3(3.3)3+az3*az�13,3-�1�w�w�K3/az3031�K�1�1�wM33M34353C363=373:3839waz�w��3;3<w��
�Z�K3>3@3?�1kX�13A3BgC�1�Kt�3D3H3E3G3FgCb�gCkX��3I3L3J3Ku��K�K�w�wu�az�13O]�3PN�3QL�3RI�3S=h3T3d3U3Vc�azaz3Wj*3X3Yku3Z3\M3[`�y73]3c3^3_L�g43`t�3a3bN`�lxc�`�`�3e4Waz3f3g3�3h3�3i3�3j3�3k33l3x3m3w3ngC3o3r3pw*3qgQgQw*3s3tgQw*w*3u3vw*v�w*gQw*3y3}3zgQ3{gQ3|gQ��v�3~gQw*gQgQ3�w*3�w*gQw*3�3�w*w*3�3�w*3�w*w*gQ3�gC3�3�3�v�3�v�v�3�v�3�3�v�3�v�3�v�gCv�az3�v�3�3�v�v�az3�3�3�3�3�3�3�3�3�gC3�3�3�3�3�gC3�gCgC3�azgC3�gCazgC3�gCazgC3�gCgC3�3�gCgC3�gCaz3�3�gC3�3�gCgCaz3�gC3�gCgC3�3�3�3�gC3�3�azgCgCaz3�3�3�gCgCazgC3�gCaz3�3�3�3�3�gCgC3�gCaz3�gCgC3�3�gCgC3�gC3�3�gCgCaz3�gCgC3�az3�az3�gCaz3�3�3�3�3�3�3�gCgC3�3�gC3�gC3�gC3�gCazgCgC3�3�gCazgCgC3�gC3�gCaz3�3�3�3�3�gC3�gCaz3�az3�gC3�azgCaz3�gCazgC3�azgC3�4 3�43�3�3�gC3�gCgC3�3�azgC3�3�gC3�gC3�gCazgC3�azaz3�3�az3�az3�az3�az3�az3�az3�az3�az3�azwcaz44az44�?444az4az4�?44	az�?4
�?az�?4�?4
az4az�?az444az4az4wU4az4az4azaz4wUaz4a�4a�a�44az4az4az4a�a�az4!4B4"4,4#az4$az4%4+4&a�4'az4(azaz4)4*az��az��w4-4/�4.�az404@4148424643az44w45azwazw47azw49az4:4>4;az4<az4=azazw4?azazww4Awaz4C4O4DkX4E4M4F4K4GkX4HkX4Iaz4JazazkXkX4LkXazkX4NkXaz4Pwc4Qwc4Rwc4Swc4Tazaz4U4Vwcwcaz4X<�4Y94Z74[5�4\4�4]4�4^4�4_4�4`4s4a4j4b4f4cgQ4dgQ4egQgCgQgQ4g4hgQgQ4igQazgQ4k4l4ogQ4mgQ4ngCgQ4pgQ4q4rgCgQgCgQ4t44u4{4vgQ4w4ygQ4xgQgC4zgQgCgQgQ4|4}gQ4~gQgCgQ4�4�4�4�4�4�4�gQgQgCgQgC4�gQgC4�gCv�4�4�gQ4�gQ4�gQgC4�gQ4�gQazgC4�4�4�gC4�gC4�gC4�4�gCaz4�gC4�gCazgC4�4�4�gC4�gCgC4�gC4�gCazgC4�gC4�4�gCazgC4�gC4�4�4�4�4�4�4�4�v�4�4�v�v�4�v�gCv�4�v�4�v�gCv�4�4�v�v�4�gCv�4�4�v�4�4�v�4�v�gCv�4�4�4�4�azv�v�4�azgC4�4�v�4�gCv�4�4�v�gCv�gC4�4�4�4�4�v�4�v�gCv�v�4�4�v�v�4�v�gC4�v�v�4�4�v�v�gC4�4�gC4�4�4�4�4�4�gC4�4�gC4�azgC4�4�azgCazgCgC4�4�gCgC4�azgC4�4�4�gC4�4�4�gC4�gCazgCgC4�azgC4�4�gC4�gC4�azgCgC4�gC4�azgC4�gC4�gC4�gCgC4�4�gCgC4�gC4�azgC4�5&4�4�w4�4�w4�w4�ww4�wv�4�5
4�w5w5w55555b�wb�5b�wb�55	b�wazw55555
5v�5v�5v�w5v�5v�555v�azv�v�w55v�55v�v�wv�5v�5wv�55"v�5v�5 5!v�wv�v�5#v�5$v�5%v�w5'5Q5(5I5)5:5*535+5/�M5,�M5-5.�M�Mw50�M51�M�M52w�M�M54�M555658�M57�Mw59�M�Mw5;5E5<5?5=�M5>�M�Mw5@5C5A5Bw�Mw�M�M5Dw�M�M5F�M5G�M5Hw�M5Jw5K5P5L�-�-5M�-5N5O�-w�-�-w5R5k5Sw5T5g5U5_5V5\5W5Y5Xwwaz5Z5[azwUwwUwU5]wU5^azw5`5d5awU5b5cwUwwaz5ew5fwUazw5hw5iwU5jwUwwU5l5�5m5|5n5w5o5t5p5r5qa�a�wa�5sazw5ua�a�5va�w5x5za�5ywa�a�5{a�w5}5�5~5�a�55�a�a�w5�5�a�azwa�5�5�5�a�a�w5�5�a�wa�w5�wa�5�5�5�5�wa�ww5�a�w5�6S5�65�5�w5�5�w5�w5�5�5�5�5�5�5�wwwwwww5�w5�www5�5�5�5�5�w5�5�5�5�5�5�5�5�5�5�5�waz�0w�w5�w5�5��azkX�5�gC5�5�w5�kXb�5�5��Kv�kXaz5�5�w5�5�wazw5�5�5�w5�wazgQw5�waz5�5�5�5�5�5�5�5�5�wgCgQ5�kXkXb�w5�wgQ5�ww5�5�wgQb�5�w5�5�w5�5�wgQw5�wgCgQ5�w5�w5�5�5�5�5�5�5�5�azwgQw5�5�waz5�wv��Kw5�w5�gQw5�5�5�5�5�5�5�wb�wgCww5�gQww5�5�wgQw5�5�5�w5�5�5�ww5�5�wazw5�5�w5�5�wwaz5�wwb�5�w5�w6w6wazw66-666w6w6w666	b�b�6
b�w66
b�wgCw66666b�b�6666b�b�az6b�b�az666b�6b�b�w6b�6b�b�az66#b�6 6!b�6"b�azb�6$6'b�6%b�6&wb�6(6*6)b�wb�6+b�6,b�wb�6.6J6/6D606=616762kX63kX6466kX65kXwkXw6869kXaz6:6<kX6;kXwkXw6>kX6?kX6@6B6AkXwkXkX6CkXw6Ew6Fw6Gw6Hww6IgCw6Kw6Lw6Mw6N6Qv�6O6Pv�azv�6Rwv�w6T6�6U6�6V6a6Ww6Xw6Y6]w6Z6[w6\ubwub6^6_wub6`wwub6b6{6c6l6d6h�?6e6f�?az6gw�?�?6i6j6k�?ww�?6m6t6n6q6oww6p�?w6rww6s�?w6u6x6v6w�?w�?w6y6z�?ww�?6|6�6}6�w6~6�?w�?6�w�?ww6�6��?6��?w�?6�6�6�w6�6�6�6�6�6�6�6�6�6���w��wa�6�waz��6���6���az6���6�����w6�w6�6�6���6���azw��w6�6�6�6�6�6�6�6�6�6�w6�ww6�wazw6�6�6�wwwww6�6�6�6�6�wwww6�www6�ww6�6�6�6�w6�w6�ww6�wazww6�6�6�wwazw6�6�6�6�6�w6�www6�www6�6�6�w6�www6�ww6�ww6�6�6�6�6�w6�6�6�6�6�6�6�6�6�kXkXw6�6�kXwkXw6�6�6�kXkXwkX6�wkX6�kX6�kXkXw6�wkX6�kX6�kXw6�w6�6�6�6�wc6�6�wcwc6�6�wcwcwwc6�6�wcwcw6�6�6�wc6�wcb�wc6�6�wc6�6�6�wcwwcw6�wc6�wcwcw6�76�w6�7
6�7	6�77777gQwgQwgQw777gQwgQw7waz7
w7ww7gQww7w77wgQw7w77�i7�i777az�i�iaz777�i7�iaz�i�iw78)77�7 7�7!7[7"7-7#w7$w7%7*7&7)7'w7(wwb�wb�7+w7,wb�w7.7L7/7;707671�727473��az75��az77�7879�w�7:�w7<7@7=�7>�7?�az�7A7F7B7D7C��w�7E�w7G7J7H7Iw�w��7K�w7M7T7N7Q7O��7P�w7R�7S��w7U7X7V��7Ww��7Y�7Zaz�7\7u7]7d�i7^7_7a7`�i�iw7b�iw7cw�i7e7m7f�i7g7i�i7haz�i7j7l7k�i�iw�iw7n7r7o�i7p7q�iw�iw7s�i�i7tw�i7v7�7w77x7{7ywU7zwUwUaz7|wU7}wU7~wUwUazwU7�7�wU7�wUwUaz7�7�wU7�7�wU7�wUwwU7�wU7�7�wU7�azw7�wUazwU7�7�7�7�7�w7�7�7�7�kX7�7�kX7�kXwkX7�kX7�7�kX�7�kXkXwkX7�kX7�kXw7�w7�wwU7�wU7�7�wwU7�7�wwUw7�w7�w7�7�7�7�7�7�7��^w�^7�w�^w7�7�7��^w�^�^7�w�^7�w7�w�^7��^w7�7�7�7�7�7�7�7�w7�7�7�w7�w7�ww*7�ww7�w7�wgCw7�7�w7�7�w7�w7�gCww7�7�wkXw7�7�7�7�7�ww7�7�ww7�wb�7�w7�w7�w7�wb�ww7�w7�7�ww7�7�wwkX7�7�7�w7�7�7�7�w7�w7�gCw7�w7�wkXw7�w7�ww7�wb�7�w7�w7�w7�w�i7��iw7�87�8
7�w7�87�87�7�7�7�v�wv�7�v�wv�8v�wv�88v�v�az88
88v�8wv�8	v�wv�8wv�8v�w8w888kXkX8kX8wkXkX8kX88wkXw88!8w8w8w888gC8wgCw8 wgCw8"w8#w8$w8%w8&w8'w8(wgCw8*8�8+8j8,8O8-848.w8/w80w81w82w83wgCw85w868A878=888;w898:wgCw8<wwgC8>8?wgC8@wgCw8B8Fw8C8D8EwgCgCw8G8K8HgC8I8JwgCazw8L8MwgCw8NgCw8P8X8Qw8Rw8S8V8TgC8UgCwgC8WwgCw8Y8e8Zw*8[8b8\8`8]8^ww*w*8_w*ww*8aww*8cw*w*8dw*az8fw*w*8g8hw8iw*w*w8k8t8lw8mw8nw8ow8pw8q8s8rkXkXwkXww8u8v8�8w8�8x8|8ygQgQ8z8{gQgQwgQ8}8~8gQazazgQ8�8�8�8�gQ8�azgQ8�8�gQazgQwgQ8�8�8�wgQgQw8�w8�8�8�8�8�wgQwazgQgQw8�8�8�8�w8�8�kX8�kX8�8�8�kX8�kX8�8�azkX8�kXkXaz8�kXkX8�8�8�azkXkXaz8�8�8�8�8�8�8�8�8�8�8�w�w�8�ww�8�w�azw�8�8�w8�ww�w8�8�ww�az8�8�ww�8�8�8�w�w�ww8�ww�8�w8�8�8�8�w�8�8�8�w�ww�w8�w�8�w�w�w8�w8�ww�w8�8�8�8�8�8�kX8�8�kXkXw8�8�kX8�kX8�kXw8�kX8�kXwkX8�8�8�8�kX8�wkXkX8�8�kXkXw8�8�8�kXkX8�wkX8�kXkX8�kXw8�8�8�8�kX8�kXw8�kXwkX8�wkX8�8�8�kXwwkX8�98�8�gC8�8�wgC8�gC8�8�gCwgC8�8�8�gCgC8�gC8�8�gCwgCw8�8�8�8�gCwaz9gCazw999gC999gCwgCgC9gCw9	gCw9
99
gC9wgC99w9gCw9gCgCw9<�9;q9:'99}99999)99gQ99gQgQ99gQ9gQazgQ9 gQ9!9&9"9$gQ9#gQkX9%gQkXgQ9'gQ9(gQkXgQ9*92w9+9,9/w9-9.wv�w90ww91waz93w94w95ww9697w98wwkX9:9A9;kX9<kX9=kX9>kXw9?9@kXkXw9B9^9C9Kw*9D9E9Hw*9Fw*9Gw*kXw*9Iw*9Jw*kX9L9W9M9R9N9P9Ow*w*kX9Qw*azkXw*9S9Tw*9Uw*kX9Vw*kX9X9[w*9Yaz9Zw*kXw*9\w*9]w*kX9_9l9`9h9a9e9b9ckXw*9dw*w*kX9fw*w*9gkXw*9iw*w*9j9kw*kXw*9m9t9n9q9ow*w*9pw*kX9rw*9skXw*kX9u9xw*9vw*9wkXw*9y9{w*9zkXw*w*9|kXw*9~9�99�9�9�9�9�9�9�9�9�9�9�9��"azkX9��"kX�"9��"9��"�"kX9��"9��"�"9�kXgC9�9��"9�9��"9��"�"kX9��"9��"�"kX9�9�9��"�"9��"kX9�kX9�9�9��"kX�"9�9�az�"�"kX9�9�9�9�9�9�b�9�9�9�9�9�b�kXkXb�9�b�b�kXb�9�b�9�9�9�kXb�kXb�b�9�9�9�b�9�kXb�9�b�b�9�kXb�9�9�9�9�b�9�kXb�9�b�kXb�9�9�b�9�9�b�b�az9�b�9�b�b�kX9�:
9�9�9�9�9�9�9�9�9�9�9�kXb�kXb�az9�b�b�kX9�9�b�9�b�9�kXaz9�b�b�az9�9�9�9�9�b�azb�9�9�b�9�b�kX9�b�kXaz9�b�9�9�9�b�kXb�9�9�kXazkXb�9�9�9�9�9�9�9�b�kXb�9�b�b�9�b�kX9�9�9�b�9�b�b�az9�9�b�9�azkXb�9�kXaz9�:9�9�b�9�9�9�b�kXb�kX9�:9�:b�kXb�kXw�az:::b�::kXb�b�kX::	kXb�b�az:::::
::::b�:b�b�:b�kXb�:b�:kXb�b�::b�:b�b�kXb�:b�::b�b��:kX::$: :"b�:!b�kX:#b�b�kX:%kXb�:&b�kX:(;:):�:*:M:+:@:,:5:-:2:.:0:/kXazkX:1kX�kXkX:3kX:4TCkX:6:9kX:7kX:8azkX:::=kX:;kX:<kXaz:>kX:?kXkXaz:A:EkX:BkX:C:DkXkX�:F:I:GkX:HkXkX�kX:J:K:LkX�kX�:N:q:O:a:P:Z:Q:TgC:RgC:SgCw:U:X:V:WwgCwgC:YgCgCw:[:^:\gC:]gCgCwgC:_gC:`wgC:b:fgC:c:dgCgC:egCw:g:k:hgC:i:jwgCwgC:l:n:mgCgCw:o:pwgC�?b�:r:�:s:y:t:vgC:ukXgCgC:wgC:xkXgC:z:~:{gC:|:}gCkXgCkX:gCgC:�gCkX:�:�:�gCgC:�gCkX:�:�:�:�gC:�kXgCgCaz:�:�gC:�gCkX:�:�kXgCkXgC:�:�:�:�:�:�:�:�:�:�gC:�gCkX:�gCgC:�:�gCgCkX:�:�:�gC:�azgCkX:�gC:�gCgCkX:�:�:�:�:�gCgC:�gCkX:�:�kXgCgCkX:�:�gC:�gC:�gCkX:�kX:�gCgCkX:�:�:�:�:�:�:�:�:�gCgCkXkXgCkXgC:�:�gCkX:�:�kXgC:�gCgCkX:�gC:�:�:�:�:�gCkXgC:�gCkXgC:�:�:�gCkXgCgCkX:�:�:�:�:�:�:�:�:�w:�:�wkXwkX:�wazw:�w:�wkX:�kXw:�:�:�:�:�:�:�wwkX:�:�wkXkXaz:�:�:�azkXww:�kXww:�:�:�w:�wkX:�:�kXwkXw:�:�:�:�:�:�:�:�:�wwkX:�wkXw:�:�w:�wkXw:�wkXw:�w:�w:�wkX:�;:�;;ww;wkX;;kXwazw;w;;	w;waz;
wwkX;;P;
;1;; ;;;v�;v�;v�;v�v�az;;v�;v�;v�az;;v�;;v�kXv�v�;;;v�kXv�kX;!;*;"v�;#;';$;&;%v�kXv�azv�v�;(;)v�kXv�;+;/v�;,;-v�;.v�v�kX;0v�v�az;2;J;3;E;4;<;5;9kX;6;7kXkX;8kXaz;:kXkX;;azkX;=;@;>kX;?kXazkX;A;CkX;BkXaz;DkXkXaz;FkX;GkX;HkX;IkXkXaz;KkXkX;L;MkXkX;N;OkXazkX;Q;j;RkX;S;^;T;X;UkX;VkX;WkXb�kX;YkX;Z;\;[kXb�kX;]kXkXb�;_;h;`;c;ab�b�;bkXb�;d;fkX;ekXb�;gkXkXb�;ikXb�kX;kkX;l;pb�;mb�;nb�;ob�kXb�kX;r;�;s;�;t;�;u;{kX;v;wkX;xkXkX;ykX;zazkX;|;�kX;};~kXkX;kX;�azkXkX;�;�kX;�kX;�;�kX;�azkX;�;�kXb�azkX;�;�;�kX;�kXkX;�kX;�;�kXazkX;�;�;�kX;�kXkX;�kX;�kXub;�kX;�kX;�kX;�kXkXaz;�;�;�;�;�;�;�;�;�;�;�;�ub;�ubgC;�;�ub;�ub;�ubkXub;�ubaz;�;�;�;�;�ububkXub;�kXaz;�;�;�ubkXaz;�ububaz;�;�;�;�;�ubazub;�;�ub;�azkX;�;�azkXazkX;�kX;�kXaz;�kXub;�;�;�ubkX;�kXubub;�ub;�;�kXubkX;�kX;�kX;�;�;�;�;�;�b�;�kXb�;�kXkXb�kX;�kX;�kXb�kX;�;�kXb�kXkX;�;�;�;�;�;�w�;�;�w�;�w�;�w�;�w�kX;�w�kXw�w�;�;�;�w�;�;�w�kXw�;�;�kXw�;�w�w�kX;�;�;�w�;�;�w�;�w�v�;�w�kXw�;�;�w�;�w�;�gQw�w�;�;�w�kXw�;�<4;�<(;�kX<<<<<<
w<<<<w<wwaz<w<	wwkX<<<<w<
wkX<<wazkXw<w<wkXw<<<w<ww<b�w<w<<<wkXw<wwaz< w<!w<"<%w<#<$wwkXw<&<'wkXwkX<)<*kX<+<1<,�<-��<.</��<0�kX�<2�<3�kX<5<f<6<R<7<F<8<><9gC<:<<<;gCazgCgC<=azgC<?<BgC<@<AgCazgC<CgCgC<D<EgCgCaz<G<NgC<H<IgC<J<LgC<KgCazgC<MgCaz<OgC<PgC<QgCazgC<S<`<T<\<UgC<V<YgC<W<XgCazgC<Z<[azgCgCazgC<]gC<^<_gCgCaz<agCgC<bgC<cgC<daz<egCaz<g<z<hgC<i<s<j<p<k�<l<o�<m�<n�azgC��<q<r��gC<tgC<u<x�<v<wgC�gCgC<ygC�<{<�<|<�<}�^�^<~<�^wU�^<��^<��^�^<��^az<�<�<�<�<��^gC�^<��^<��^�^gC<�<��^<�gC�^<��^�^<��^azwaz<�=<�<�<�<�<�<�<�az<�<�<�<�<�kX<�kX<�kXazkXkXaz<�az<�az<�az<�azkXaz<�<�<�b�<�b�gCaz<�<�<�b�b�az<�b�b�az<�<�<�<�<�<�<�gC<�gC<�gCgC<�gCaz<�<�<�gQgC<�<�gC<�gCgCkXgCaz<�<�<�<�gC<�azgCb�gC<�gC<�gC<�<�<�gCgCazgCaz<�<�gC<�gC<�gCaz<�<�<�<�gC<�gC<�gC<�<�gCgC<�gCazazgC<�gCgCaz<�<�<�<�<�<�<�az<�azazwazw<�aza�az<�=<�<�<�<�<�<�<�<�kXazaz<�kXaz<�kX<�<�<�kXkX<�<�<�kXazkXaz<�<�kX<�<�kXkXazkX<�az<�azkX<�<�azkX<�kX<�kX<�kX<�<�<�kXkXazkXaz<�kX<�==kX==kXazkXazkXaz=az=az=az==
=	az=
az=b�=azb�azaz=b�az====az=az==az=az=az=az=az=az=azb�azw�az==M==+=w�= w�=!='="w�=#azw�=$az=%w�=&w�az=(w�=)az=*w�w�az=,=A=-v�=.v�=/v�=0=8=1az=2=6=3=5v�=4v�azazv�=7azazv�az=9=:=@=;azaz=<===>azv�v�=?v�azazv�=Bw=Cw=Dw=E=Haz=Faz=Gwaz=I=Jazw=K=Lazwwaz=N=Y=Oaz=Paz=Q=X=RgC=Saz=Taz=Uaz=V=Waz�-�-az�-az=Z=f=[�M=\=e=]�M=^az=_=baz=`=aazaz�M=caz=daz�Maz�Maz=g�M�Maz=iC�=j=u=kazaz=laz=maz=naz=oaz=p=q=s=razu�az=tazgCazaz=v=wA�=x?�=y>�=z=�={=�=|=�=}=�=~az=az=�=�=�=�az=�az=�azkX=�kXaz=�azkX=�=�=�=�kXazkXaz=�=�azkXazkX=�az=�az=�az=�az=�=�az=�gCaz=�azazgC=�=�=�az=�az=�=�az=�=�azazgCaz=�=�azaz=�azgC=�az=�=�=�=�=�azaz=�az=�azwU=�az=�az=�azazwU=�=�az=�=�azaz=�azwU=�=�=�=�=�azwUaz=�azwUaz=�azazwU=�=�=�=�=�az=�az=�az=�=�=�=�azwazw=�=�wazazw=�az=�az=�az=�az=�az=�=�az��az=�az=�az=�az=�=�=�=�az=�=�azazkX=�=�az=�kXaz=�=�azkXkXaz=�az=�kXazkX=�>}=�>az=�=�=�=�=�=�=�=�=�=�az=�az��az=�azwaz=�=�az=�az=�azw=�=�wazw=�waz=�=�=�=�=�=�waz=�wwazaz=�=�wwaz=�azwaz=�>	>>>>azw>>wazazw>az>>azwwaz>
>>az>az>
wwaz>azw>waz>>K>>,>> >>>>b�>azb�>b�>>az�b�az>b�>b�>b�azb�>!>(>">%b�>#b�>$b�az>&b�>'w�azb�>)b�b�>*b�>+b�az>->=>.>2>/b�b�>0az>1azb�>3>8>4>6>5b�azb�b�>7b�az>9><>:>;azb�azb��b�>>>Bb�>?b�>@>Ab�azb�>C>Fb�>Db�>Eb�az>G>I>Hb�b�az>Jb�azb�>L>k>M>_>N>X>O>T>P>S>Qaz>RgCazgCazgC>UgC>V>WazgCgCaz>Y>\gC>Z>[azazgC>]>^gCazazgC>`>f>a>c>bgCv�gC>dgC>ev�azgC>ggC>hgC>i>jazgCazgC>l>s>m>p>ngCgC>oazgCgC>qgC>rgCaz>t>y>u>w>vgCgCaz>xgCazgC>z>|>{gCgCazazgC>~>�>>�gC>�>�az>�>�>�gCgC>�azgCgC>�>�azazgC>�az>�>�>�kX>�>�kX>�>�kXazkXkX>�>�kXkXaz>�azkX>�>�azkXaz>�>�>�az>�az>�>�kX>�>�kXkX>�kXazkX>�>�azkXaz>�az>�az>�az>�>�>�>�>�azgCaz>�>�azgCgCaz>�azgCaz>�?m>�?>�>�az>�>�azaz>�>�>�>�>�az>�>�azazb�>�az>�azazb�>�>�>�>�b�azazb�>�az>�azb�az>�>�>�>�>�>�>�>�>�>�v�>�>�>�v�azv�azv�>�gC>�v�az>�>�>�v�v�>�azv�>�v�>�v�gCaz>�>�>�>�>�>�v�az>�v�azv�>�v�gC>�azv�>�>�v�>�azv�>�v�v�>�v�az>�>�v�>�>�>�>�v�>�v�azv�>�v�v�az>�>�v�>�>�>�v�azazv�>�v�>�v�v�az>�?>�?>�>�>�>�gQ>�azgQgQ>�azv�>�>�gQ>�gQazgQ?gQaz?gQgQ????azazgQgQ?azgQ?	??
?
gQ?gQ?azgQ?gQ??gQ?gQazazgQ???gQgQ?gQaz?gQ?gQgQaz??C??*?az?az??$??"? ?!kXazkXazkX?#azkX?%?(?&kX?'kXkXaz?)azazkX?+az?,?9?-?5?.?2gC?/?0gCgC?1gCazgC?3gC?4gCaz?6?7gCazaz?8azgC?:?>gC?;?<?=gCazgCaz???AgC?@gCazgC?BgCaz?D?X?E?O?FgC?G?JgC?H?IgCgCazgC?KgC?L?MgC?NazazgC?P?S?QgCgC?RazgCgC?T?UgC?V?WgCazgCaz?Yaz?Z?c?[?`?\?^gQ?]gQaz?_gQazgQ?agQ?bgQazgQ?d?h?egQ?f?gazgQgQaz?i?kgQ?jgQaz?lazgQaz?n?~?o?|?p?u?qv�?rv�?sv�?tv�wv�?vv�?wv�?xv�?yv�v�?zv�?{�v�?}v�kXv�??�?�?�?�v�?�?�?�?�?��^?��^?��^v�az�^?�?��^�^v�?�v�?�v��^?��^v�?�v�kX?�?�?�?�kX?�kXkX?�kXv�kX?�kXv�?�v�?�v�?�v�?�?�?�kX?�kX?�kX?�v�kXv�kX?�?�v�kXv�?�@�?�@E?�@?�?�?�?�?�?�?�?�?�?�?�?�?�?�azgQazgQ?�gQgQaz?�?�gQ?�gQ?�gQazgQ?�gQazgQ?�?�?�?�gQ?�gQgQaz?�gQgQ�K?�?�?�?�?�?�gQ?�b�?�gQaz?�gQazgQ?�?�?�?�gQazgQ?�azgQ?�gQ?�gQgQaz?�?�?�?�gQ?�az?�gQaz?�?�gQ?�azgQgQ?�azgQ?�gQ?�?�?�?�azgQgQazaz?�gQaz?�az?�az?�?�?�gCgC?�gC?�?�azgCazgCaz?�?�?�az?�az?�?�az?�az?�azw?�az?�azazw?�@?�@?�?�?�?�?�?�?�gCgCazgC?�gCazgC?�azgC?�@?�@azgCazgC@azgCaz@@	@@@gCgCazgC@azgC@
gCgC@azgC@
@@@gC@gC@gCazgC@@gCazgC@gCgC@gC@gCaz@@(@az@��@@$@��@��@@"@ ��@!��az����@#��az@%az��@&@'azaz��@)@?@*@7@+@1ub@,ub@-@.ubub@/ub@0ubaz@2ub@3ub@4@5w*ubub@6ubazub@8ub@9@:ub@;@=az@<ubaz@>ububaz@@az@Aaz@Bazaz@C@DazgCaz@F@�@G@f@H@W@Iaz@Jaz@K@S@L@P@M@O@NazazgQgQazaz@Q@RazgQazaz@T@Uaz@VazgQaz@Xaz@Y@b@Z@]ub@[ub@\ubaz@^@`@_ububwub@aazub@cazub@dub@eubaz@g@�@h@t@i@pb�@j@k@n@l@mb�azazb�b�@o�ib�@qb�@rb�b�@sb�az@u@|@v@yb�@w@xb�b�az@zb�@{b�azb�@}b�@~@�@b�azb�b�@�azb�@�az@�azb�@�@�az@�azb�az@�@�@�@�@�@�w@�@�w@�w@�@�wazazw@�@�@�ww@�@�@�ww�w�w@�w@�@�@�wwaz@�wwaz@�@�@�@�w@�w@�w@�azw@�@�@�w@�wwaz@�@�wazazw@�az@�az@�@�@�@�w��waz@�azazw@�@�@�az@�@�@�@�@�@�@�@�gC@�gC@�gCaz@�gCgCaz@�gC@�gCgCaz@�@�gCazgC@�gCaz@�azgCaz@�az@�az@�az@�az@�az@�azaz�^@�AX@�A@�@�@�@�@�az@�az@�az@�@�@�@�@�@�b�azb�azb�@�b�az@�azazb�@�az@�az@�az@�azaz@�@�azazRT@�@�@�az@�az@�az@�@�@�@�az@�kXazkXaz@�azkXaz@�az@�@�@�@�@�gC@�@�gC@�gCaz@�@�azgCazgC@�@�@�@�azgCazgC@�gCgCazAazAAAgCazgCAAazgCazgCAA*AAA	AA
AAAgQAA
AazAgQazgQAgQazAAgQAAazgQazgQAAgQgQazAgQAgQAgQgQazAazgQazAazA azA!azA"A%A#azazA$azb�A&A)A'A(azb�b�azazb�A+A:A,azA-azA.A6A/A2A0azazA1gCazA3A5gCA4gCazgCazA7azA8azgCA9gCazA;AGA<A@A=gQgQA>A?gQgQazAAADABb�gQACazb�b�AEgQAFb�gQAHATAIAOAJAMAKALgQazazgQANgQb�azAPARAQgQazgQASgQgQazAUazgQAVAWazgQazAYA}AZAsA[AaA\azA]azazA^azA_A`azazubAbAhkXAckXAdkXAeAfAgkXazkXazAikXAjApAkkXAlAnkXAmazkXAokXazkXkXAqArkXazkXazAtAuazAvazAwazAxazAyA|Az�MA{az�Mazaz�MA~A���AA���A���A�A�A�A�A�A���A�kX����kX��A���kXA�A�A���kX��A�����A�kX��A�A�A�azA�azazA�A�azwcA�wcazA�azA�A�A�A�gCA�A�gCazgCgCA�A�gCgCazgCA�gCA�gCA�gCazA�CA�BbA�BA�A�A�A�A�A�A�gCA�gCA�gCA�gCA�A�gCkXkXA�gCkXA�gCA�gCA�A�A�A�A�A�A�kXkXA�kXgCkXgCA�kXA�gCkXgCA�kXkXA�kXgCA�A�A�gCA�gCA�gCgCA�A�gCA�gCazgCA�A�A�A�A�A�A�gCA�A�gCA�azA�gQgCgQgCgCA�A�A�gCA�gCgQgQgCA�A�A�A�A�A�gQgCgQgCgQA�azgQA�gQgQA�gCgQA�gCA�A�A�gQA�gCgQgCgQA�gQA�gQgCA�A�A�A�A�gCA�gCA�gCA�gCgCA�gCA�azgCA�gCA�gCA�A�gCA�A�A�b�gCb�gCA�A�A�gCgCA�gCb�A�gCb�gCA�BgCBBgCgCBgCBgCBgCazBBgCBgCBB	gCB
gCBgCgCazB
BBgCBgCBBgCBazgCgCazgCBgCBgCBBgCazgCBBRBB:BB/BgCBgCBB&BB#B wB!gCwB"wgCB$B%gCwgCwB'B-B(B,B)gCB*gCgCB+wgCwgCB.gCgCwB0gCB1gCB2B6B3B5B4gCgC�?gC�?B7gCgCB8gCB9gC�?B;BEB<gCB=gCB>gCgCB?B@BCBABBwgCgCwBDgCgCwBFgCBGgCBHgCBIBNBJBLBKw*w*gCBMgCw*azBOBPgCw*BQw*gCazgCBSBTB[BUgCBVgCBWgCBXgCBYgCBZgC�-gCB\gCB]gCB^gCB_gCB`gCBagCgQgCBcB�BdB�BeB�BfBuBgBpBhBlBigCgCBjgCBkazgCBmgCgCBngCBoazgCgCBqgCBrgCBsgCBtazgCBvB�BwB{Bxb�Byb�b�BzgCb�B|BB}b�B~b�gCb�b�B�B�b�b�B�b�B�b�gCB�gCB�B�B�B�b�B�gCb�b�B�gCb�b�gCB�B�B�gCB�gCB�gCB�gCB�gCubgCB�B�B�gCB�B�B�gCgCazB�gCB�gCB�gCazgCB�gCgCB�B�gCgCB�azgCB�B�gCB�B�B�B�w*B�w*w*B�B�B�w*gCww*B�w*B�w*w*B�B�w*w*gCB�B�B�B�gCB�B�gCB�B�gCB�azgCgCB�azgCB�B�B�gCB�B�gCB�gCazgCB�gCazgCB�B�B�gCB�gCazgCB�gCazB�B�B�B�B�B�kXB�B�B�gCkXgCkXkXB�kXB�kXB�azgCB�kXB�kXB�kXazkXB�B�kXB�kXB�kXB�kXgCB�kXB�kXkXB�B�kXkXgCB�CgCB�B�B�B�B�b�B�B�b�B�b�b�B�gCb�B�B�B�B�B�b�B�b�azb�B�b�B�b�azb�b�B�B�b�B�b�b�gCB�B�B�B�B�b�b�B�b�B�azb�B�b�B�B�B�b�gCb�azb�B�b�b�CCb�Cb�b�azCgCCgCCgCCgCCC
C	CgCC
gCazwCgCazwCCgCwgCCC�CCpCC!CgCCgCCCwCCwCwwCwgCCC CwCwCwwazwgCC"C^C#CCC$C2C%C)C&gQgQC'C(gQazgQC*C/C+C-C,gQgQgCC.gQgQgCgQC0gQC1gQgCC3C?C4C<C5C7C6gQgCgQC8C:gQC9gQgCC;gQgQgCgQC=C>gQazgQC@gQCAgQCBgQazgQCDCWCECPCFCLCGCICHgQazgQCJCKgQ�azgQCMCOgQCNaz�gQazCQCTCRgQgQCSazgQazCUgQCVgQgCCXgQgQCYCZC\gQC[gQazC]gQgCgQC_CjC`kXCaCekXCbkXCckXCdkXazkXCfCgkXkXChCikXkXgCCkgCClgCkXCmCnkXCokXazkXCqC�CrCCsC{CtgCCugCCvgCCwgCb�CxCygCCzgCb�gCC|gCC}gCb�C~b�gCgCC�C�gCC�gCC�gCC�C�v�C�azv�v�C�v�gCC�C�C�gCC�gCC�gCC�gCC�gCgQC�gQgCC�gCC�gCC�gCC�gCkXC�C�gCv�gCC�C�C�gCC�C�C�gCC�gCC�gCC�gCb�C�C�gCb�gCC�gCC�gCC�gCC�gCC�gCC�gCC�gCC�gCb�gCC�gCC�C�C�C�C�C�C�kXC�kXC�kXC�kXazkXkXC�C�kXC�C�kXazazC�azkXC�gCC�C�C�kXkXC�kXC�kXazC�gCC�C�C�kXazkXC�C�azkXazC�kXgCgCC�C�gCC�gCC�gCC�gCC�gCC�gCC�C�azwwgCC�D�C�DHC�DC�C�C�C�gCC�C�azC�azC�wazwC�azC�azC�azC�azC��"C�C�C�azC�C�az�"C�azazC�C�C�az�"�"C��"azC�azC�az�"azC�D	C�C�C�C�C�wC�C�C�C�azC�wC�wazazwC�wazC�C�wC�azazwC�azazC�azgCD�D�D�D�DazDazDazDDgC��azv�D
azv�DD+D
DDazDazv�azDDDazDgCDazDazDazDazDazgCazDD*DD$DazDgCDD"DazD azD!azgCazazD#azgCD%D)D&azD'azD(gCgCazgCazgCazD,D?D-D>D.D<D/D7D0kXD1kXD2kXD3D6azD4D5kXkXazazkXazD8D9azD:azD;azkXazD=azwazkXwazD@DAazDBgQDCgQDDgQDEazDFgQDGgQgQazDID�DJDjDKD[DLDPDMazDN�iDO�i�iazDQDUDRwDSwwDTwazwDVDWDZwDXDYwwazwazD\azD]azD^D`D_�az�DaazDb�DcazDdDgDe�Df��azazDhDiaz�azDkD�DlDyDmDvDnDpDob�b�azDqb�DrazDsDuDtb�azb�b�azb�DwDxb�gQb�DzD|azD{azb�D}D�D~b�Db�azD�b�D�azD�gQazD�b�b�D�D�b�D�b�b�D�b�azD�D�D�azD�azD�D�D�gCD�wUD�D�D�D�D�wUwUazD�D�wUazwUazD�azwUazazwUD�kXD�D�D�kXD�kXD�kXkXazD�D�kXazgQkXD�D�D�D�azD�D�v�D�v�D�v�azv�D�D�D�azD�kXD�azD�kXkXD�D�azkXazD�azD�gCD�D�gCD�D�azD�azD�gCgCazD�azD�azazD�azD�azD�azD�D�azazD�azw*azD�azD�D�D�D�azD�azD�azD�azD�azD�azD�D�v�azv�azD�azD�azD�azD�azD�azD�azD�azazD�azD�D�azazv�D�azD�G�D�E�D�EDD�E<D�ED�D�D�gCD�gCD�gCD�gCD�D�gCD�D�gCgCkXgCD�D�gCkXgCD�ED�D�D�D�wD�D�wwD�D�wwgCD�D�wD�wD�wgCwD�wD�wgCD�ED�ED�ED�D�gCwgCwEwgCwwEEwwgCEEEE	wEwgCgCE
wgCEgCE
gCwgCEgCEgCEgCEgCgCEEgCa�gCEE4EE"EgCEEEgCgCEEgCgCazEgCgCEgCE gCE!azgCE#gCE$E-E%E(�[E&E'�[�[gC�[E)E*E,E+�[gCaz�[gCE.gCE/E1gCE0gC�[E2E3�[gCgC�[gCE5E6gCE7gCE8gCgCE9E:gCgCE;gCgQE=gCE>gCE?gCE@gCgCEAgCEBgCECgCazEEE�EFEEGEfEHEQEIgCEJgCEKgCELEOEMENb�gCb�gCEPgCb�gCERgCESEaETEXgCEUgCEVgCEWgCgQEYE^EZE\E[gCgCgQE]gQgQgCgCE_gCE`gCgQEbgCEcgCEdgCgCEegQgCEgExEhErgCEiEjEmgCEkElgCazgCEnEpazEoazgCgCEqazgCEsgCEtgCEugCEvEwazgCgCazEygCEzgCE{gCE|gCE}gCE~gCgCw�E�E�E�gCE�gCE�gCE�gCE�gCE�gCE�E�gCb�b�gCE�E�E�E�E�E�E�E�wE�wE�wgCwE�azwE�wwE�wE�wazE�E�E�E�wE�E�wwazE�E�E�wazwwE�wgCE�E�E�wwE�gCazE�E�wE�wazwE�wazE�gCE�gCE�gCE�gCE�E�E�kXgCkXE�kXgCazE�E�E�E�E�E�E�gCE�E�E�wE�E�wE�wE�gCwE�E�wE�gCwv�wE�gCwE�wE�wgCE�gCE�gCE�gCE�E�E�gCubgCE�gCgCubE�E�E�gCE�gCE�gCE�E�E�E�gCwwgCE�gCwgCE�gCE�gC�E��E��E��gCE�E�gCE�E�gCE�gCE�E�E��E��az��E�E�gCgCazE�E�E�gCE�gCE�gCE�gCE�gCb�gCE�gCE�gCE�gCE�gCE�E�kXgCE�kXkXgCE�F�E�FRE�F3E�F	E�FE�gCE�gCE�gCE�gCFgCFgCazgCFgCFgCFgCFFgCFb�gCb�gCF
F-FF'FFF
FFFb�FFb�gCb�b�FFazazgCFb�FFFFgCb�gCb�b�Fb�gCFFb�FFb�b�gCF F$F!F#F"b�azgCgCazb�F%F&b�b�gCb�F(b�F)b�F*b�F+F,b�b�gCF.gCF/gCF0gCF1gCF2gCgCazF4FEF5F:F6gCF7gCF8gCF9gCb�gCF;gCF<gCF=F?�F>gC�F@FCFA�FB��gC�FD�gCFFFLgCFGgCFHFIgCFJgCFKgCgCazFMgCFNgCFOgCFPgCFQgCv�gCFSF�FTF�FUFfFVF\FWgCFXgCFYgCgCFZgCF[gCazF]FbF^gCF_gCF`FaazgCgCazgCFcgCFdgCFeazgCFgFvFhFrFiFogQFjFkFmgQFlgCgQgQFngQgCgQFpgQFqazgQgQFsgQFtgQFugQgCFwF~FxF{gQFyFzgQazgQgQF|F}gQ�gQFF�gQF�F�F�gQazgQgCF�gQgQF�F�gQgQgCF�gCF�gCF�gCF�F�F�F�gCwF�F�wgCwgCF�gCgCwF�F�F�F�F�F�F�b�F�b�b�F�b�F�b�azF�b�F�b�F�F�b�F�azb�b�F�gCb�F�gCF�gCF�gCF�gCF�gCF�gCwgCF�F�F�F�F�F�F�F�F�F�F�F�gQgCgQF�gCgQF�gQF�gQazgQgQF�gQF�gQgCF�F�F�F�gQF�gCgQF�F�gCgQgQgCF�F�F�F�gQgCgQgCF�gQgCgQF�F�F�F�F�F�gQF�gCgQF�gCgCgQF�gQF�gQgCgQF�F�F�F�gQF�gQgCF�gQgCgQgQgCF�gCF�gCF�gCgCF�F�gCazgCF�G4F�G%F�F�F�F�F�F�wUF�F�F�wUgCF�F�F�gCwUgCgCF�gCwUF�gCgCF�F�gCF�gCgCwUF�gCF�gCF�F�F��F��F��gC�F�gCgCF��gCF�G	F�GF�wF�F�F�wwF�gCwF�wwGazwwGGGGwGwazwwGwGwazG
GGGGGb�G
Gb�b�gCb�Gb�Gb�w�Gb�GGGGazb�wb�b�Gb�gCGGb�Gb�GGb�azb�GgCb�G G!G$gCG"b�G#b�gCb�gCG&gCG'gCG(G/gCG)gCG*G+gCgCG,G-gCG.gCgCazG0gCG1gCG2gCgCG3�gCG5GEG6G>G7gCG8gCG9gCG:gCG;gCG<G=gC�"gC�"G?gCG@gCGAgCGBgCGCgCGDgC�?gCGFGjGGGZGHGPGIkXGJGMGKkXkXGLgCkXGNkXkXGOkXgCGQGUkXGRkXGSGTkXazkXGVkXkXGWGXkXGYkXkXgCG[G`kXG\kXG]kXG^kXG_kXazGaGfGbkXGckXGdGekXgCgCkXGgkXkXGhGikXkXazGkG�GlG�GmGpkXGnkXGokXgCGqGyGrGuGskXGtkXkXazGvGwkXgCGxkXkXgCGzG}G{G|gCkXkXgCG~GgCkXgCkXG�G�G�G�G�G�kXG�G�G�gCkXgCgQG�G�gCkXkXG�kXazG�G�G�G�gCG�azgCgCkXkXgCG�G�G�kXG�kXazkXG�G�G�G�G�kXkXgCgCkXkXG�kXgCG�G�G�G�G�G�G�G�kXgCkXgCG�G�gCG�gCkXG�G�gCkXazgCG�G�G�G�G�G�gCkXkXgCG�G�gCkXkXazG�kXazkXG�G�G�G�kXG�gCkXkXG�kXG�gCkXG�gCkXG�kXgCG�H�G�gCG�H9G�G�G�G�G�kXG�kXG�kXG�kXG�kXG�kXRTkXG�G�G�G�G�v�G�v�G�G�v�G�v�kXv�G�kXv�G�G�G�G�v�G�G�v�v�kXG�v�G�v�v�kXG�v�G�v�v�G�v�azG�G�G�G�G�G�G�v�v�G�v�kXG�v�v�G�azv�v�G�G�v�v�G�kXv�G�G�G�v�G�v�G�G�G�G�azkXazkXG�G�azkXazkXG�G�G�G�G�v�azv�G�G�v�azazv�G�v�G�v�kXv�G�HHkXHkXHkXHkXHkXv�kXHH"HHHHH	HH
gQgQHgQkXH
gQgQHgQ�HHHHgQHkXgQHgQazgQHgQHgQkXgQgQHHHgQHHgQgQkXHH gQHgQkXgQH!gQazH#H4H$H+H%H(H&gQgQH'gQazgQH)gQH*kXgQH,H/gQH-H.gQgQkXH0H2gQH1kXgQH3gQazgQH5gQH6gQgQH7H8gQgQkXH:H�H;HfH<HRH=HIH>HCgCH?gCH@HAHBazgCT4gCHDHGgCHEgCHFkXgCgCHHkXgCHJHNHKgCgCHLgCHMazgCgCHOgCHPgCHQazgCHSHZHTgCHUgCHVHXHWgCkXgCHYgCkXgCH[H_gCH\gCH]H^gCazgCgCH`HaHdHbHcgCazazgCHegCazgCHgH�HhHzHiHpHjHlv�Hkv�azHmHoHnv�azv�v�azHqHtHrv�Hsv�v�azHuHwv�HvkXv�HxHygCv�v�kXH{H�H|H�H}H~kXv�HH�azv�kXazv�H�H�v�v�H�v�kXH�H�H�H�v�H�azv�H�H�azH�v�kXv�gCH�v�v�H�kXv�H�kXH�kXH�kXv�H�v�kXH�H�H�kXH�kXkXH�kXH�H�kXH�kXkXH�azkXH�H�H�H�H�H�H�H�H�b�b�H�b�gCH�H�b�H�b�azH�b�azb�b�H�b�H�H�H�b�azazb�H�H�H�H�b�H�H�b�b�kXb�H�b�H�jazH�H�b�H�b�H�azH�b�kXH�b�H�b�kXb�b�H�H�H�H�H�H�b�b�H�b�kXb�H�b�H�H�b�b�kXH�b�b�H�b�H�kXb�H�IcH�IH�H�H�H�H�gCH�gCH�gCH�gCH�gC�gCH�H�H�H�H�gCgCH�gCH�gCH�azgCH�H�H�gCgCH�H�H�gCazv�gCH�gCgCH�gCH�gCazH�H�H�gCgCH�gCH�H�gCazgCgCH�gCH�gCH�H�gCazgCH�H�H�gCH�gCH�gCH�gCH�H��igCH�H��igC�igCH�gCH�gCIgCII	IIIIv�gCv�IIgCv�gCv�IgCv�I
gCv�Iv�gCI
IXIIEII'IIIIIb�IIb�IgCb�Ib�gCb�Ib�IIb�Ib�Ib�gCb�IgCb�II#b�I b�I!I"b�b�azb�I$b�I%I&b�b�gCI(I4I)I0I*b�I+I.b�I,b�I-b�gCb�I/b�gCI1b�b�I2b�I3v�b�I5I;b�I6I7I9I8b�b�gCgCI:b�gCI<I@b�I=I>I?b�wgCazIAICIBgCv�gCb�IDb�gCIFgCIGISIHIKIIwIJwwgCILIRIMIOINwazwIPIQazwazwgCwITgCIUwIVwwIWwazIYgCIZgCI[gCI\gCI]I`kXI^gCI_kXgCIagCIbgCkXgCIdI�IeI�IfI�IgI}IhIsIiIogCIjIkImIlgCgCazIngCazgCgCIpgCIqgCIrazgCItIxgCIuIvgCgCIwgCazIygCIzI|gCI{gCazgCazI~I�II�gCI�gCI�I�gCgC�[I�gCI�gCgCI�gCazI�gCgCI�I�gCI�gCazgCI�gCI�gCI�I�I�kXkXI�kXI�kXgCI�gCI�gCkXI�kXgCI�I�I�gCI�I�I�I�I�wUI�wUwUI�wUI�wUI�azwUwUI�wUI�wUI�wUazI�gCI�gCI�gCI�gCazwUI�gCI�gCI�I�I��I���I��I�I�gC�gCI�gCI�gC�gCI�I�I�I�I�I�wI�I�wwI�wI�I�wwazwI�I�wI�wI�wwI�azwI�wI�wI�I�I�I�I�I�I��?�?wI�I��?w�?wI�I�w�?I��?w�?I�I�I��?I��?w�?�?wI�I�I�gCI�I�I�I�I�I�gCI�gCI�azgCgCI�gCI�gCazI�gCI�gCgCI�gCazI�gCgCI�gCI�I�gCgCazI�gCI�gCI�gCI�gCI�gCI�gCb�I�I�gCb�gCI�J�I�J�I�JI�azazI�azI�azI�azI�azI�azI�JazJazJazwJwJwJwazJJUJazJ	J8J
JJJJazJ
JJJaz�?azgCJazkXazJJJazJJwazazJaz�
JazJazazXJJ%JJ"JJ jJv�gCazJ!��azazJ#J$az�gQJ&J*J'J(azjazJ)wazazJ+J,J1J-azJ.gQgQJ/J0gQgQb�J2J5J3t�J4t�t�azJ6azb�J7b�azJ9JLJ:JFJ;J@J<J>u�J=gQb�J?azw*v�JAJCJBazmv�JDJEaz��azv�JGazJHJJJIgCgCazJKgCwqazJMJSJNazJOJQazJPazkXJRjazv�JTazwazJVJsJWJpJXJYaz��JZJdJ[JaJ\J^azJ]azu�J_J`v�azazv�azJbJcazv�v�JeJkJfJhazJgwFazJiJjv�w�azb�JlJnJmazb�t�Joazazt�azJqJraz|azJtJ�JuJxdJvdJwdazJyJ�JzJ�J{�rJ|J�J}�rJ~2�JJ�������2��nJ�2���2�J��rJ��rJ��T�cJ�azMazJ�azJ�azazJ�azJ�az�J�J�J�azJ�J�azJ�azJ�MJ�MJ�MJ�M��azJ�J�azJ�azJ�J�J�azJ�azw�jazJ�azJ�az��J�J�J�J�gCJ�J�J�gCJ�J�J�J�J�J�J�azv�v�w�J�J�az���v�J�J�J�J�azww*v�azJ�azv�wJ�J�gCgCazgCJ�gCJ�J�gCgCJ�J�gCgCJ�J�gCJ�gCJ�gCgCJ�gCJ�gCJ�J�gCJ�gC@gCJ�J�J�J�J�J�J�J�J�J�azJ�J�J�gQazgCazJ�azJ�J�azgCazt�J�J�J�azJ�azazu�azJ�azJ�azv�J�J�J�azJ�azazJ�az�MazJ�azJ�azJ�azv�azJ�azJ�J�J�azJ�J�azazu�azJ�azJ��MazazJ�J�azJ�azazJ�azJ�azJ���azJ�K)J�K(J�azJ�KJ�KJ�KJ�J�azJ�azJ�azw�J�azazJ�u�azazKazKazKKazu�azKKazKKazazK	azK
KazKazK
azKazKazKazKazKazazgCazKazKKazKazv�azKKKazazKKazKazKazw�azazK K!azK"K%azK#K$v�azgQK&azK'azgCmazkuK*L�K+LK,K�K-KbK.KCK/v�azK0K1azazK2K3K;K4azazK5K6azK7azazK8azK9azK:v�azK<azK=azK>azazK?K@azazKAazKBv�azazKDazKEKFKXazKGKHKPKIazazKJKKazazKLKMazKNazazKOv�azazKQKRazKSazazKTKUazKVazazKWv�azazKYazKZK[azazK\azK]K^azazK_K`azazKav�azKcK|KdKpKeazazKfKgazazKhazKiazKjazKkazKlazKmKnazKoazazv�azKqKrazKsazazKtKuazKvazKwazazKxazKyazKzazK{v�azazK}K~azKK�K�K�azK�azK�K�azK�azK�azazK�K�azK�azazv�K�K�K�azK�azazK�K�azK�azK�azazK�azv�azK�K�azK�azazK�K�azK�azazK�azv�azK�K�azazK�azK�azK�K�azazK�azK�K�azazv�K�K�t�mazK�K�K�K�azazK�K�azK�azK�azK�azazK�K�azK�azazK�K�azv�azK�K�K�K�K�K�K�K�azK�azK�K�azazK�azK�K�azazK�v�azazK�azK�K�azazK�azK�K�azK�azazv�azK�azK�azK�azK�K�azazK�K�azK�azv�azK�azK�K�K�K�azK�K�azK�azK�azazK�azK�v�azazK�azK�azK�K�azK�azK�azv�azazK�K�azazK�azK�azK�azK�azK�azv�K�LK�K�K�azazK�azK�K�azK�azK�azK�azK�azv�azazK�K�K�azK�K�azK�azazK�K�azK�azazv�azK�LazLazazLLazazLv�azLLazLLazazL	L
azLazLazazL
azLazv�azLLazLLLazLazLazazLazLv�azLazLazazLazLazLazv�LazL azL!azL"L�L#LaL$LUL%LBL&L2L'L.L(L+gQL)L*gQb�gQL,gQL-gQazgQL/gQgQL0L1gQazgQL3L9gQL4L5L7gQL6azgQgQL8gQazL:L>gQL;L<L=gQazazgQL?gQgQL@gQLAgQazLCLMLDgQLELHgQLFLGgQgQazLILKgQLJazgQLLgQgQazLNLQgQLOgQLPgQazgQLRLSgQLTgQgQazLVL[LWazLXazw*LYw*LZw*azL\azL]azL^az�?L_L`az�?azLbL}LcLxLdLpLeLlLfb�Lgb�Lhb�b�LiLjazazLkb�azLmb�b�LnLob�gCazLqb�LrLub�Lsb�Ltb�azLvb�azLwazb�LyazLzazRTL{L|azRTazL~azLL�L�L�L�L��^L�L�L�az�^az�^�^L��^L�az�^L�L�L��^L��^�^azL�L�L�L�az�^�^azazL��^azL�azL�azL�azaz�^azL�azL�L�L�L�L�L�L�v�L�L�L�L�v�azv�L�L�azv�v�azv�L�v�L�L�L�v�azazv�L�L�L�v�L�L�L�v�gCv�L�v�azv�L�L�L�v�L�v�azv�v�L�L�v�gCv�L�L�L�L�v�L�L�L�L�L�v�azazv�L�v�v�azL�v�L�v�L�L�azv�v�azL�azL�azL�azv�azL�azazL�L�az�1azL�M�L�M�L�MLazL�L�M?L�M1L�azwL�wL�L�wL�wL�M0L�ML�L�L�L�L�L�azL�azL�L�v�azv�v�gCL�L�L�L�L�b�gCL�gCb�b�L�b�kXkXL�L�wL�wkXwL�L�L�L�L�L�wgQgQL�gQL�gQL�gQububL�L�t�ubL�ubt�L�L�L�{�t�L�t�L�L�{�t�{�L�ML�w{�wwMMb�wMwb�MMMMMMazMazM	M
v�azv�v�gCM
MMMMb�gCMgCb�b�Mb�kXkXMMwMwkXwMM#MMMMwgQgQMgQMgQMgQububM M!t�ubM"ubt�M$M)M%{�t�M&t�M'M({�t�{�M*M,M+w{�wwM-M.b�wM/wb�v�w�gCM2wM3b�M4M5M:M6M7azv�M8M9gQkXb�azM;M=M<azazv�M>t�b�t�M@v�MAv�MBv�MCv�MDv�MEv�MFv�MGv�MHv�MIv�MJv�MKv�v�azMMM~MNazMOMsMPMmMQMVMRgCMS�[MTgCgCMUazgCMWM`MXM[MYMZazb�b�azM\M^b�M]azb�b�M_b�gCMab�Mbb�McMdazb�b�Meb�MfMgb�Mhb�b�MiMjb�b�MkMlb�b�gQMnazMoazMpazMqwcMrazwcazMtMzazMuMvazMwazMxazMyazazkXM{wM|azwM}wazMazM�azM�azM�azM�azM�M�M�M�w*M�M�azM�M�w*M�w*M�w*M�azw*M�azw*azM�azM�azM�M�M�w�M�w�w�M�w�azw�azM�M�M�azM�azM�azv�azM�M�M�azM�azM�azv�M�M�azv�azM�azM�azgQazM�azM�azM�AM�M�M�M�M�M�M�jgCazwM�M�M�M�M�M�azgCazM�ww�azM�M�azM�azgQM�M�az�Mb�gCM�gCM�M�M�M�M�M�azM�wazazM�gCazazM�M�M�gCazwazM�M�M�M�wM�wazM�azazwM�M�M�M�wazwazwaz��b�M�N'M�N$M�M�az`�M�NM�M�M�M�gCb�M�wUM�M�M�M�M�M�mM�mazazv�M�M�M�M�v�wb�gQM�M�b�gCazv�M�M�M�M�M�M�v�b�wmM�M�wv�v�azM�M�M�M�b�gQgQgCM�M��mwazM�M�w�M�gCb�M�w��M�M�NM�NM�NwgCv�t�NNazt�wv�NNNNub�"v�b�N	N
kXb�v�azNNN
NNazNazgQazazNNazgQazNNNazazNNazazNazgCNNazNNazazNNazgQazN azN!azN"azN#azb�azazN%N&az�g@&N(N�N)N�N*N�N+NwN,NSN-NFN.N:N/|N0||N1|N2N3||N4N5||N6|N7|N8N9||�N;||N<|N=N>||N?N@|NA|NB|NC||NDNE||B/NG||NH|NINJ|NK|NL|NM||NNNO||NP|NQ|NR|B/NTNbNUNZNV||NWNX||NY|�N[|N\|N]|N^|N_|N`|Na||�|Nc|NdNeNmNf||NgNh||NiNj||NkNl||�|Nn|No|Np|Nq|NrNs||NtNu||Nv�|NxN�Ny|Nz||N{N||N}|N~|N|N�|N�|N�|N�|N�|N�||@N�|N�|N�|N�||N�N�||N�N�|N�|N�||N�a�|N�azN�N�N�N�N�N�N�azN�N�N�azwazazN�w�wN�N�N�N�N�N�azgCazjazN�wazN�N�N�b�azv�N�azv�azN�N�N�azN�N�jN�azgQN�N�azb�b�v�N�N�mN�azjjN�azN�wazazN�azN�azgCazNazN�N�MN�N�N�n�b�N�N�N�N�N�N�N�N�N�`�m�mN�b�dsuN�N�N�N�ߍ`��e�N�ri#db�dN�akN�N�`�N�xvL�N�N�b�LL`�N�PGN�O'N�ON�N�azN�N�azazN�azN�N�azN�azN�azazN�N�azwazazN�azN�N�N�N�N�gCN�N�N�N�wN���az��v�N�N�kXN�wgCwgCN�N�wwgCN�N�gCN�N�N�N�wv�azazN�ubN�ubN�ubazN�ON�v�N�OgCv�gCOgCOgCazOb�gCOOv�OazazkXO	OazO
LazazOO
azOOOjOw�jazOOOOOazOOw�azOazOazazw�azOjOjOjjOO"jOO jO!jw�jO#azO$azO%azjO&jazO(O�O)OoO*OhazO+O,OYazO-O.O7azO/O0azO1azO2azO3azO4azO5azazO6b�azazO8O9ODO:azazO;azO<azO=azO>azO?azO@azOAOBazOCazazb�OEOSOFOJazOGOHazOIazazb�azOKazOLazOMONazazOOOPazOQazazORb�azazOTOUazOVazOWazazOXazb�OZazO[azO\azO]azO^azO_azazO`azOaazObazOcOdazOeazazOfazOgb�azOiazOjazOkazazOlOmazazOngCazazOpOqOOrOvgCOsgCOtOub�gCazOwO{wOxOygCgQOzv�kXv�O|O}gCO~azwUv�w�O�O�O�O�O�O�O�azO�azO�azO�wazO�O�O�O�O�O��ww�wO�O�azu�v�v�O�O�O�O��wqu�v�O�O�az����azO�O�O�O�O�O�O�O�u��1azu�O�O��"wF�"wFO�O�O�O�azwqazmO�O�u�w�wazO�O�O�O�azO�azwO�O�mv�az��O�O�O�azazwO�O�b�kXkXwgCO�O�O�v�O�O�O�O�azv�azazO��gQO�O�O�O�gQO�gQb�b�mO�O�mO�wgCO�t�wt�O�azO�P'O�azO�O�O�O�O�O�O�O�gCwO�O�O�O�O�O�v�azazb�O�O��azw�t�O�O�O�O�v�azv�wO�O�kXazazt�O�O�O�O�O�O�O�gC�?azazO�azv�gCazv�azgCO�O�gCO�O�O�O�O�O�v�v�v�t�O�O�azmb�v�O�O�O�t�jazO�O�az�"�^w�O�P
b�O�O�PO�O�wO�O�kXb�v�O�PO�O�kXv�u�t�Pv�azv�PP
PPPPv���v�wPP	m���1v�v�PP��azv�PP"PPPPwP��jPP�j���ZPPPP�ZPv�azPPgCv�v�azPP PPgCv�u�azP!b�gCv�P#kXP$azP%kXkXP&kX�tyP(P)P@P*P5P+azP,azP-P2P.P0P/kXw�iP1wkXwwP3wP4gCazP6wazP7P8P<kXP9P:P;gQazazkXkXP=P>P?wgCgCazPAazPBazPCazwPDPEazazPFgCazPHQPIP�PJPjPKPiPLP\PMazazPNazPOazPPPQazazPRPSazPTazPUazazPVPWazPXazazPYPZazazP[wazP]PdazP^P_azP`azPaazPbazPcazazb�azPePfazazPgPhazazv�az|PkP�PlazPmPyPnazPoazPpPrwPqwazPswPtPvazPuazwPwPxwazazwPzP�P{P�kXP|P}PP~kXkXu�P�P�kXjgQ�[v�P�v�azP�azaz�P�azP�P�gCP�jP��wP�P�P�gCP�gCgCb�gCP�P�P�P�P�azP�P�P�azwb�t�P�P�P�P��-jj�MP�P�wv�w�?P�P�P�P�P�az�^�iP�P�wUkX��a�P�P�P�P�v�azt�jP�P�azwazP�P�t�P�t�t�P�t�u�P�P�P�P�P�azP�P�P�P�wP�P�P�P�azaz��v�azazP�P�P�P�P�azP�P�P�azwqazv�azP�azP�az�1P�P�P�azP�azP�azP�azP�azazP�azP�P�azP�azazP�v�azP�P�P�azwazP�azv�azP�azP�wazwP�P�azP�P�P�`�MP�`�P�azP�azP�azP�azmazP�P�P�gCP���P�gCwP�P�P�wP�wgCgCwP�azP�v�b�P�gCazP�P�u�t�u�P�P�P�P�azP�azazP�azP�P�P�azv�P�P�u�azu�azP�azazP�azP�P�azQazQazu�azQ]�Q]`QQQQu�QQHQQ,Q	QQ
QazQQazQ
Qaz@|azQQQQazQaz�rQQ�az|azQQazQ|azQQ|az��azQQ$QQ!QazQ azL�azQ"Q#az@@��Q%Q(azQ&Q'|azv�Q)Q*az|Q+@az@Q-Q>Q.Q7Q/Q2azQ0Q1azaz@Q3Q5azQ4|azazQ6|@Q8Q;Q9azQ:az|azQ<Q=az@@azQ?QDQ@@azQAQBQC��azaz@QE|QF@QG@cW@QI@QJQP@QKQLQO@QMQN@@cWaz@|@azQRQSQ`QTQWQUQVazv�v�azv�QXazQYQZQ[azv�Q\Q^��Q]w�azQ_azjazQa]^azQbQcY�QdU�QeS�QfR�QgQ�QhQ�QiQ�QjQzQkQsQlQpQmazQnQoazv�v�azQqazazQrw�azQtazQuQwQvazazv�QxQyw�azwazQ{Q�Q|azQ}QQ~azw�wazQ�azw�Q�Q�azQ�Q�Q�azw�w�azQ�azQ�Q�w�azazw�Q�Q�Q�Q�Q�Q�Q�azQ�azazw�Q�azQ�Q�azw�azw�Q�Q�Q�Q�Q�Q�w�azazw�Q�azazw�Q�azQ�azw�azQ�Q�Q�azQ�azazw�azQ�azQ�Q�azazw�Q�Q�Q�Q�azQ�Q�azQ�azQ�Q�azw�azw�Q�Q�Q�Q�Q�azazQ�v�azQ�Q�azQ�w�azQ�Q�w�azazw�Q�Q�Q�azQ�azw�azQ�azazQ�w�azQ�Q�Q�Q�Q�Q�Q�azQ�Q�w�azazw�azQ�azQ�azw�Q�azQ�azazw�Q�Q�Q�Q�azQ�azQ�azw�Q�azQ�Q�azw�w�azQ�Q�Q�azQ�Q�azw�azw�Q�Q�azQ�w�azQ�Q�azw�azv�Q�R6Q�RQ�Q�Q�Q�Q�Q�azQ�Q�azw�azazQ�azQ�azw�Q�Q�Q�Q�Q�azazw�Q�w�w�azQ�Q�Q�azw�azazQ�w�azQ�RQ�Q�Q�Q�azQ�w�azazQ�w�azQ�RazRw�azRRw�azw�azRR
RRRazw�azR	azazw�RR
azRw�azRRw�azazw�RR(RRRRRRazRv�wRazw�azRRRazw�azazRw�wRR#RR!R azazw�azR"w�azR$R&azR%azw�R'azazv�R)R2R*R/R+R-R,azazw�R.azw�azazR0azR1w�azazR3R4azR5azazw�R7R]R8RIR9RBR:R@R;R=azR<w�azR>R?azv�w�azazRAw�azRCRFazRDazREw�azRGazRHazazw�RJRTRKRPRLRNazRMazw�azROw�azazRQRRRSazw�w�azRURYazRVRWRXazw�azw�RZazR[R\wazazv�R^RmR_RdR`azRaRbazw�azRcazw�ReRhazRfRgazazw�RiRkRjw�azw�Rlazazw�RnRyRoRtRpRrazRqazv�Rsazw�azRuRwRvazazw�Rxazw�azRzR~azR{R|R}azw�v�w�RR�R�azazw�R�R�w�azazv�R�S
R�R�R�R�R�R�R�R�R�R�R�azazw�R�R�azR�w�azazR�azw�R�azazR�azR�azw�R�R�R�R�R�azR�R�azw�w�azazR�R�azazw�R�R�azR�azR�azv�R�R�R�azw�azw�R�azw�R�R�R�R�R�R�R�azazR�azw�R�R�R�R�w�azv�azR�R�w�azv�azR�R�R�azazR�w�azR�azw�R�azw�R�R�R�R�azR�R�azazw�R�azR�azazw�R�R�azR�R�azazw�R�R�R�R�w�azw�azazR�w�azR�R�R�R�R�R�azR�R�azazR�azw�azR�azR�R�azazw�R�R�R�R�R�R�R�azazw�R�azazw�azR�R�R�w�w�w�azR�azR�azR�azazw�R�R�R�R�R�azR�R�azR�w�azazR�azwR�R�azR�azR�azw�R�azR�R�azw�w�azR�SR�R�azR�azR�w�azR�R�azR�w�azazSw�azSSazSazSv�w�SSazSazw�azS	azv�SSHSS$S
SSSSSSSazSazw�Sazv�azSazSazazw�azSazSazSwazSS azSazSSazw�azS!azazS"azS#w�azS%S7S&S.S'S+S(azS)S*w�w�w�azazS,S-azw�azS/S2S0azazS1w�w�S3S5azS4w�azazS6azw�S8S?S9S<S:azS;azazw�azS=S>azw�azS@SESASCazSBazw�azSDazw�azSFSGazw�azSISkSJSZSKSRSLSOazSMSNazazw�azSPSQazw�azSSSWazSTSUSVw�azazw�SXazSYazw�azS[ScS\S_azS]azS^azw�S`SbSaazazv�w�azSdazSeShSfSgw�azazv�SiSjazv�azw�SlSzSmSvSnSqSoazazSpw�azSrStazSsw�azazSuazw�azSwazSxSyazw�azS{S�S|azS}SS~azw�azw�azS�S�S�azazS�azwazS�azS�azv�S�T�S�TS�S�S�S�S�S�S�S�S�S�S�azS�azazw�S�S�azS�azw�S�w�v�azS�S�S�S�S�azw�azS�azazwS�S�azw�w�S�azw�S�S�S�S�S�azS�azazw�S�azazS�w�azS�S�S�S�S�S�azw�azw�S�S�v�azazw�S�S�azS�w�azS�azazw�S�S�S�S�S�S�azS�S�azazw�S�azS�S�azw�azw�S�S�S�azS�S�w�azw�azS�S�azS�azw�azS�w�azS�S�S�S�azS�S�azw�azS�azS�S�w�azazw�S�S�S�S�S�azw�azS�azazwS�azazS�azw�S�S�S�S�S�S�S�azazS�S�w�azw�S�S�S�S�azS�w�azazS�w�azS�S�azS�v�azazw�S�S�S�S�S�azazS�azw�S�S�w�azS�S�v�azw�w�azS�azS�azw�S�TS�S�S�azS�azazS�azw�TTTazazTazw�azTTTw�azw�azTT
azT	T
azTTw�azazw�TTTTazTazw�TTw�azw�azazTazTazv�TTUTT6TT'TTTazTazTazazw�T T$T!azT"T#w�azw�w�azT%w�T&w�azT(T2T)T.T*T,T+azw�azazT-v�azT/T1T0azazw�w�azazT3T4azT5azwazT7TFT8T=azT9T:T<azT;w�azw�azT>TCT?TAT@azw�azTBw�w�w�TDazw�TEazw�TGTPTHTMTITKazTJw�azTLazazw�azTNazTOazw�TQazazTRTSTTaz�azv�TVT~TWTfTXT_azTYTZT]T[T\azv�az�T^azazwT`TbTaazaz�azTcTdTe�azaz�TgTrThTmTiTkTjaz�azTlazaz�TnTpazTo�azTqazazv�TsTxTtTvazTu�azTwaz�azTyT{Tzazaz�T|T}az�azv�TT�T�T�T�T�T�azT�az�azT�T�T�azv�azT�azaz�T�T�T�azazT�az�T�T�T���azT�azaz�T�T�T�azT�azT�azaz�T�T�T�azT�T�az��azazT�azT�azv�T�U2T�T�T�T�T�T�T�T�T�T�T�T�azT�az�azT�az�T�azT�T��azazw�T�T�T�T�azT��azT�azv�azT�azT�T��az�azT�T�T�azT�azT�azv�azT�T�azT�T�az�azT�azazT�az�T�T�T�T�T�azazT�az�azT�T�T�T�az�azT�T��az�azT�T�T�azT�T�T�azw��azT��azT�T�T�T�T�T��azaz�azT��azT�azT�T�az�az�T�U	T�T�T�T�T�T�T�T�azT�az�T�azaz�T�T�azT�az�T�azaz�T�T�azT�T�az�azT�T�azT�az�T�az�azT�T�T�azT�azT�T�azv�v�azUUUazUaz�azUUazU�w�UUaz��azU
UUUUUU
UUazaz�azU�azazUazUaz�UUazUazU�azUUUazazwUU�azazv�UU(U U#U!azU"az�azU$U&U%azaz��U'azaz��U)U,U*azazU+��azU-U/azU.azv�U0U1��az��v�U3U�U4U]U5UJU6U=U7U:U8azazU9��azU;azU<azaz��U>UEU?UBU@UAaz��az��UCUDazv�az��UFUHUGaz��azazUI��azUKUQazULUMUOazUN��azUPaz��azURUXUSUUUTaz��azUVUW��azwazUYU[azUZw�azazU\��azU^UqU_UhU`UeUaUcazUb��azUdaz��azUfazazUg��azUiUnUjUlUkaz��azazUmaz��azUoazUp��v�UrUwazUsazUtUuUv��azaz��UxU}UyU{azUzaz��azU|az��azU~Uaz��azU�U�U�U�U�U�U�azazU�U�azaz��azU�azU�azU�az��U�U�azU�azU���U���azazU�azU�U�azaz��U�U�U�U�U�U�azU�U�U���azw�azazU���azU�U�U�azazU���azU�U�U�azaz��azU�az��U�U�U�U�azU�U�azazw�azU�azU�az��U�U�U�U�U�az��azazU�az��azU�azU���v�U�W�U�V�U�V%U�U�U�U�U�U�U�U�U�azU�U�U�azaz��az��U�U�azU���U�az��U�U���U�v�azU�azaz��U�U�U�U�U�azU�az��azU�azazU���azazU�U�azazv�U�U�U�U�azU�U�azU�U�az��az��azU�U�azU�az��azU�U�U�azazU�U�azv���U�azazU�azU���azU�VU�U�U�azazU�U�azazU�jazU�U�U�U�U�U�azjazU�azjU�U�U�azazjjazU�VU�U�jazVazazwVazVazazjVVVVVVazVV	V
jazazjazVazV
w�azVVVazVVazjazjVazazVjazVVVVazVVazjazazVjVazjazVV V"azV!azjV#V$jazazv�V&VkV'VHV(V9V)V3V*V-azV+azV,v�azV.V0azV/azv�V1V2azjazjazV4V5V7V6azjazazV8wazV:V>azV;V<azazV=azjV?VEV@VCVAVBazjazjazVDjazazVFazVGazjVIV_VJVUVKVPVLVNazVMazjVOazazw�VQVSazVRaz��azVTaz��VVVYVWazazVXazw�VZV\azV[v�azV]V^az��azv�V`VdVaazazVbazVcazw�VeVhVfazVgazaz��ViazVjazaz��VlV�VmVVnVvVoVrazVpVqazaz��VsazVtVuv�����azVwV|VxVzazVyazv�V{��azv�V}azazV~az��V�V�V�V�V�V���azV�V�az����azazV�V�V���az��azV�azV�V�V�azaz��azV���azV�V�V�V�V�V�azV�azV���azazV�V�V�az����azV�V�V�azV�az��azazV�azV���azazV�V�V�V�azV�azaz��V�V�V�azazv�azV���v�V�W'V�V�V�V�V�V�V�V�V�V�V�azazV�azw�V�V�V�V���az��azV�azv�azV�azV�V�V�azaz��azV�az��V�V�azV�azV��&V��&azV�azV�V�V�az�&az�&azV�V�V�V�V�V�azV�V�az�&azV�azV�az�&azV�V�V�V�V�az�&azV�azaz�&V�V�V�V�az�&az�&V�az�&azV�V�V�V�V�V�V�azaz�&V�azv�azazV�V�V�azv�v�azV�V�V�azazV�azwazV�azV�az�&V�W
V�V�V�azV�V�azV�azV�az�&V�V�V�az�&azazV�wazV�WV�azWWWaz�&azWWaz�&az�&WW
azWWW	�&az�&azWazazW�&azWWWazWWWazWaz�&azWWW�&az�&azWaz�&WWWazWWWazaz�&Waz�&azW W#W!azW"az�4azazW$W%W&az�4azv�W(WWW)W;W*W2W+azW,W/W-azW.az�4azW0azW1az�4azW3W7azW4W5azazW6�4azW8azazW9azW:az�4W<WNW=WIW>WCW?WAW@azaz�4WBazw�azWDWGWEWF�4azw�azazWH�4azWJWMazWKazWLv�azaz�4WOWSazWPWQazWRaz�4azWTazWUazazWVaz�4WXWqWYWjWZWbW[W_azW\W]W^v�azaz�4azW`Waaz�4azWcazWdWgWeWfaz�4�4azWhWiv�azaz�4azWkazWlWmWoazWnaz�4Wpazaz�4WrW�WsWzWtWwazWuWvazw��4WxazWyaz�4azW{W�W|WW}W~az�4�4azW�azaz�4azW�azW�az�4W�W�W�W�azW��4azW�azW�azv�azazW�W�W�W�az�azazW�azv�W�X�W�XW�W�W�W�W�W�W�W�W�W�W�azazW��azW�W�W�az�azazW�az�W�azW�W�az�W�azv�azW�W�W�W�azW�W�W�v��az�W�azazW�v�azazW�W�azazW�az�W�W�W�W�W�W�W�azW�azaz�W�azazW�v�azW�W�W�W�azW�az�W�azaz�azW�W�azaz�W�W�W�W�W�W�azW�az�W�W��azaz�W�W�azW�az�azW�az�W�W�W�W�W�az�azW�az�azW�azW�azv�azW�W�W�W�azW�W�W�W�W�azW�az�W�az�azazW�W�az�azW�azW�azW�W�W�W�az��azW�azaz�W�W�W�W�W�W�W�azazW�az�W�W�azW��azaz�W�azW�W�W�az�az�azW�XazW�XazazX�azXX	XXXXaz�azv�Xazaz�azX
azXazv�X
XPXX*XXXXXXXazazX�azazXXaz�azazXXXXXv�az�azazX�azXX$X azazX!X"X#�azaz�X%X(azX&azX'�azX)az�azX+X=X,X6X-X2X.X0X/azaz�azX1az�azX3X4X5�az�azX7X:X8azazX9wazX;azX<azaz�X>XGX?XDX@XBXAazaz�azXCaz�azXEazXFazv�XHXMXIXKazXJ�azazXLaz�azXNazXO�azXQXvXRXdXSX\XTXWXUazazXV�azXXXZXYazaz�azX[�azX]XaX^azX_X`az��azazXbazXc�azXeXmXfXjXgazXhXiazv�az�azXkXlazaz�XnXtXoXrXpXq�azwazXsazaz�Xuazaz�XwX�XxX�XyX~XzX|azX{az�azX}az�azXazX��azazX�X�azazX�azw�X�X�X�X�X�azX�az�azX�X�azX�az�X�az�azX�X�azX�azX��azX�X�X�az�azazX�azv�X�YX�X�X�X�X�X�X�X�X�X�azX�X�X��azazv�X�X�azX�az�azX�w�azX�X�X�azX�azaz�X�azX�az�azX�X�X�X�X�azX��v�azazX�azX�az�X�X�X�azazX�w�azazX�azX�az�X�X�X�X�X�X�azX�X�X��azaz�X�X�X�azaz�X�azv�azazX�X�azX�X�azv�w�azazX�X�azX�X�X�azaz�X�azv�azX�X�X�X�X�X�X�X�X�X�azX�v�azX�azv�azX�azazX��azX�X�X�X�az�azX��azazX�azX��azX�X�azX�azX�X��az�X�X�X�X�X�azv�azX�azaz�X�X�az�X�az�azX�YX�YX�X�X�azX�X�az�az�YazazY�azYYYazYaz�azYY	azYaz�Y
azwazYYY
YYYazY�azYaz�azazYazYw��YYazYaz�YYYYaz��azazYazv�YYfY YBY!Y.Y"Y*Y#Y'Y$Y%az�azY&�azY(azY)azaz�Y+azazY,Y-az�azY/Y9Y0Y3azY1Y2az�azY4Y6Y5azaz�Y7Y8azw�az�Y:Y?Y;Y=azY<�azazY>b�azY@azYAazazv�YCYSYDYMYEYJYFYIYGYHazb�b�azazb�azYKazYLb�azazYNYOYQYPazazb�YRazazw�YTY_YUYZYVYXazYWazb�azYYazb�Y[Y]Y\azazb�Y^azb�azY`YcYaazYbazb�azazYdazYeazb�YgY�YhYvYiYoazYjYkYmazYlazb�azYnazb�azYpYqYtYrYsb�azazb�azYuazb�YwY�YxY{azYyYzazazb�Y|YY}Y~azb�azb�azY�azb�azY�Y�Y�Y�azazv�Y�azazwY�Y�Y�Y�Y�Y�Y�azY�Y�azwb�azY�Y�Y�azazb�azY�b�azY�Y�azY�Y�azazw�Y�Y�azY�azb�azY�b�azY�Y�Y�Y�Y�azazY�b�azY�azazb�Y�Y�azY�Y�azwazazY�azY�azv�Y�\�Y�[�Y�Z�Y�Z7Y�Y�Y�Y�Y�Y�Y�Y�Y�Y�Y�Y�Y�azwazY�azwwazY�azY�azwazY�azY�Y�Y�azwazwY�Y�azY�Y�Y�Y�azwazY�Y�wazwazY�Y�Y�azazY�azwY�azY�azazwY�Y�azY�Y�Y�Y�Y�Y�azwazY�azazwY�azY�azwazY�Y�Y�Y�Y�Y�Y�azazwY�azv�azY�Y�azY�azwY�Y�w�w�azv�Y�Y�Y�Y�Y�azwazY�azazwY�Y�Y�Y�v�azwazazY�azwY�ZY�Z	Y�ZY�Y�Y�Y�azY�azwY�azwazY�Y�azY�azwazZwazZZZazazwZZZazazwZazwazZ
ZZZZZZ
azazwZazwazazZZaz��azZZazZazZaz��ZazZazv���ZZ-ZZ&ZZ#ZZ azZv�azZ!Z"��az��azZ$azZ%az��azZ'Z*azZ(azZ)az��azZ+Z,azv�azZ.Z2azZ/azZ0Z1az��azazZ3azZ4Z5Z6az��azv�Z8Z�Z9Z]Z:ZKZ;ZDZ<ZAZ=Z?Z>az��azazZ@gCazZBazZCazazgCZEZIazZFZGZHgCazwazazZJazgCZLZUZMZRZNZPZOazazgCZQazazw�ZSazazZTgCazZVZZZWZYZXazgCazgCazZ[azazZ\gCazZ^ZqZ_ZgZ`ZcZaazZbazgCv�ZdZegCazZfazazgCZhZmZiZkgCZjgCazZlazazgCZnZogCazZpazazgCZrZ{ZsZxZtZvZuazazgCZwazv�azazZyZzazazw�Z|ZazZ}Z~azgCazZ�azazZ�azgCZ�Z�Z�Z�Z�Z�Z�Z�Z�Z�Z�azgCazazZ�azgCazZ�Z�azazv�azZ�Z�azazZ�w�w�Z�Z�Z�Z�azZ�Z�azgCazZ�Z�Z�Z�azgCgCazZ�azazgCZ�Z�azZ�Z�azazgCZ�Z�Z�azgCazZ�azgCazZ�Z�Z�Z�Z�Z�Z�azZ�Z�azgCgCazazZ�Z�azazgCZ�Z�Z�Z�azZ�azgCZ�azgCazZ�Z�Z�Z�azgCazgCZ�azazgCZ�Z�Z�Z�azZ�azZ�azgCazZ�Z�azgCazZ�Z�azZ�Z�Z�azgCgCazZ�Z�Z�azazgCazZ�azv�Z�[SZ�[
Z�Z�Z�Z�Z�Z�Z�Z�Z�azazZ�gCazazZ�Z�Z�v�azgCazZ�Z�azZ�azZ�gCazazZ�az�Z�Z�Z�Z�azZ�Z�Z��azaz�Z�Z�azZ�az�azZ�az�azZ�Z�azazZ��azZ�[Z�Z�Z�Z�Z�azZ�az�azZ�Z�Z�azaz�Z�azaz�Z�[Z�Z�azZ�az�az[�az[azaz[�az[[	[azaz[[azaz�az[
[azaz[az�[[0[[#[[[[az[[azaz�[[[[az��az[azaz�[[az[az[v�az[[!az[ azw["azaz�[$[(az[%az[&az['w�az[)[-az[*[+[,�azazv�az[.[/az�az[1[B[2[;[3[8[4[6[5azaz�az[7�az[9azaz[:�az[<[?az[=[>az�azaz[@[Aaz�w�[C[J[D[G[Eazaz[Fazv�[Haz[Iazaz�[K[N[Lazaz[Maz�[O[Qaz[Paz�az[Razv�[T[�[U[m[V[h[W[a[X[][Y[[az[Zwazaz[\az�az[^[_[`az��v�[b[eaz[c[dazaz�az[f[gaz�az[iazaz[j[kazaz[lazv�[n[x[o[saz[p[qazaz[razv�[taz[u[vv�azaz[wazv�[y[�[z[[{[}[|azv�azaz[~v�azaz[�[�azazv�[�[�az[�[�[�azv�v�azaz[�[�azv�az[�[�az[�[�[�[�[�az[�az[�w�az[�azaz[�azv�[�[�[�[�az[�azv�v�azaz[�[�v�v�az[�[�[�[�az[�az[�az[�v�az[�[�[�azv�az[�azaz[�azv�[�[�[�[�[�[�[�azv�azaz[�v�az[�az[�[�v�azv�az[�[�[�[�[�azv�azaz[�azv�[�[�[�[�azv�azv�az[�azv�[�\�[�\>[�\[�[�[�[�[�az[�[�az[�[�azazv�[�[�[�azazkXaz[�azkX[�[�[�[�az[�[�azv�kX[�az[�azazkX[�[�[�[�[�[�azv�kXazaz[�azkX[�azaz[�azkX[�[�[�[�[�[�[�[�az[�w�azaz[�azw[�[�az[�azkXkX[�azkXaz[�az[�kX[�azkX[�[�[�[�[�az[�azkXaz[�[�[�azazkX[�azkXaz[�\[�[�[�azazkXaz\azkX\\kX\azkX\azw�v�\\ \\\	\\
\
az\\azkXazaz\az\azkX\az\az\azazv�\\\azaz\\azazkX\\az\az\jazaz\az\azj\!\1\"\'az\#\$az\%\&jazazj\(\,\)\*azj\+azazj\-\/az\.azj\0azazj\2\9az\3\4\6az\5jaz\7\8azjjazaz\:\;\<azjaz\=azv�\?\�\@\`\A\S\B\H\C\F\Daz\Eazw�azaz\Gazj\I\N\J\L\Kazazjaz\Mazw�\O\Q\Pazjazaz\Razw�\T\\\U\Y\V\Wazj\Xazazjaz\Z\[azjaz\]az\^azaz\_azj\a\p\b\l\c\f\d\eazjazgQ\g\j\h\iazv�azv�az\kazgQ\maz\naz\oazazgQ\q\|\r\w\s\u\tazazw�az\vgQaz\x\z\yazwazaz\{azgQ\}\�az\~az\gQaz\�az\�azazgQ\�\�\�\�\�\�az\�\�\�gQ\�v�az\�azgQaz\�\�\�azaz\�gQaz\�\�\�azazgQgQaz\�\�\�az\�\�az\�azgQ\�azazgQ\�\�\�\�\�\�azwazgQ\�\�azgQazgQ\�azaz\�gQaz\�\�\�\�\�\�\�azaz\�gQaz\�\�\�azazw�\�azgQaz\�az\�\�\�\�azgQu�az\�azu�azaz\�\�\�\�\�\�azu�az\�azu�azaz\�az\�azv�\�\�\�\�\�\�\�\�\�\�\�\�az\�\�azu�azaz\�\�azu�az\�\�\�\�\�azv�az\�azw�azaz\�\�azazu�\�\�az\�\�azaz\�u�az\�\�\�\�az\�u�az\�azu�azaz\�az\�azu�az\�az\�\�azaz\�az\�azv�az\�\�\�\�azaz\�\�azaz\�v�azaz\�az\�az\�az\�azv�gC\�gC\�gC\�gC\�gC\�gC\�gC\�gCv�]]D]]%]]]]
]azgC]]azgC]gC]]	azgCaz]]az]az]
]azaz]az]azv�az]az]az]az]az]azv�az]]]az]az]]azaz]az]azv�az] az]!az]"az]#az]$azv�]&]<az]'](].az])az]*]+azaz],az]-azv�]/]4az]0]1v�az]2az]3azv�]5]8v�]6]7azv�azaz]9az]:az];azv�az]=az]>az]?az]@az]Aaz]Baz]Cazv�]E]Naz]Faz]Gaz]Haz]Iaz]Jaz]Kaz]Laz]Mazv�]O]Waz]Paz]Qaz]Raz]Saz]Taz]Uaz]Vazv�az]Xaz]Yaz]Zaz][az]\az]]azv�]_azazv�]a]�az]b]c]o]daz]eaz]f]kaz]g]haz]i]jazv�azv�az]laz]maz]nv�az]p]~]qaz]r]w]saz]tgQ]u]vazw*gCv�]x]{]yazaz]zazkXaz]|az]}azwU]azaz]�]�]�az]�az]�]�]�]�az]�az]�az]�az]�az]�az]�azt�az]�az]�az]�az]�az]�az]�az]�azt�az]�]�]�az]�az]���]���]���]���]���]���]���t���azu�]�az]�az]�azaz]�az]�az]�]�azaz]�v�az]�]�]�az]�azaz]�v�]�v�]�]�v�v�]�gCv�az]�]�]�]�]�]�]�]�]�]�]�cW]�L]�]�t�gCv�b�q~L]�cWg_]�]�]�]�d]�]�]�]�]�gQazgCgQ]�]�gCb�b�az|�]�ӹӛ]���b�M]�]�n�]�]�]�Lb�p�d]�]�]�]�]�]�]�]�]�]�b�x�b�x�]�]�x��>x�b�x�]�x�]�x�y]�b�]�]�]�]�x�b�x�b�]�x�b�x�]�]�]�x�]�x�x�]�x�b�]�]�]�]�b�x�x�b�b�x�az]�t�]�]�t�t�]�]�t�t�]�]�t�wt�]�_/]�_]�^�]�^(]�^]�^az]�^^^Gt^^G�^^Gi@F�^F�F�^F�^^	F�^
F�^F�F�^F�^
F�^^F�F�^F�^�F����^azaz^^^^w�^^w�^^azjazazjazj^^`�cW^ Aeg_^!^"g_g_^#^$g_g_^%g_^&^'g_g_��^)^�^*^�az^+^,^�^-^�^.az^/az^0^3^1az^2azazgQ^4^g^5az^6^P^7az^8^>az^9az^:az^;^<azaz^=azb�^?^H^@^D^Aaz^Bazaz^Cazb�az^Eaz^F^Gb�azb�^Iaz^J^Maz^Kaz^Lazb�^Naz^Oazb�az^Qaz^R^[az^Saz^T^U^Xaz^Vaz^Wazb�^Yaz^Zazb�az^\^caz^]az^^^_^a^`b�azb�^bazb�az^dazaz^eb�^fb�azaz^h^i^�^j^�^k^^l^{^m^r^n^q^o^pazb�b�azazb�^s^x^t^v^uazb�azaz^wazb�^yazb�^zb�azaz^|^}azaz^~b�az^�^�^�^�^�az^�az^�azb�az^�^�az^�^�^�azb�b�az^�azb�az^�^�^�az^�azaz^�azb�^�^�^�^�az^�azb�^�b�azb�^�b�^�b�b�az^�^�^�^�^�az^�^�^�b�^�b�b�az^�az^�azb�az^�^�^�^�^�az^�azazb�^�b�az^�azb�^�azb�^�b�^�b�azaz^�^�azaz^�^�az^�azb�az^�az^�az^�^�^�azaz^�^�^�azb�b�^�b�azaz^�^�^�az^�b�^�b�az^�az^�^�azb�b�az^�azaz^�az^�^�azb�azaz^�az^�v�azaz`�^�^�c�azaz^�N^�^�az^�^�az^�^�azaz^�azgC^�^�^�^�^�azaz^�a��gCaz^�az^�az^�^���"���^�^�^�^�^�^�AeazN�H^�azg4az^�_^�^�azi�^�M^�^�az^�^�^�^�^�b�dL�`�^�^�g4b�b�p�^�g_^�_b�^�d^�g4^�__g4�m�+___x��~_�~_�~__�~_	�~�~_
�~__�~_
�~�~_x��~d__ku�/��_azc�i�____az_az_azAe__az_MAe__dazazM_ _(_!_$_"MAe_#azM_%M_&_'azMazM_)_,M_*az_+Maz_-_.azMazM_0`�_1`�_2_BM_3_4_5Mp�M_6_7az_8_=az_9az_:_;az_<azazu�az_>_?az_@azaz_At�az_C`�_D_F_Edq~rf_Gd_H`_I_�_J_�_K_|_L_s_M_\_N_S_OL�L�_PL�_QL�_RiL�L�_T_UL�L�_VL�_WL�_XL�_Y_ZL�L�_[�L�_]_mL�_^__L�_`L�_a_h_b_dL�_ciL�_eL�_fL�L�_gL��+_iL�L�_j_kL�_lL�L��L�_n_oL�_pL�_qL�_rL��L�L�_t_uL�_vL�_wL�_x_{L�_yL�_zL���L�_}_�_~_�_L�L�_�L�_�L�_�L�_�L��L�_�L�_�_�L�_�L�L��_�L�_�_�L�_�_�L�_�L�_�L��L�L�_�_�L�_�L�_�L�L�_�L��L�_�_�L�L�_�_�L�L�_�_�L�_�L�_�L�L�_�_�L�L�_�L�_��L�_�_�_�L�_�_�_�L�L�_�_�L�_�L�L�_�_�L�L�_�L�_�L�_�_�L�L���L�_�L�_�L�_�_�_�L�_�L�_�_�L�_�L�L�_�_�L�L��:_�L�_�L�_�L�_�L�_�L�_�L�L��:_�_�_�_�_�L�_�_�L�_�L�_�_�L�L�_�_�L�_�L�_�L�_�L�L��_�_�_�L�L�_�_�_�L�_�L�_��L�_�L�L��L�_�_�L�L�_�L�_�_�L�L�i_�_�_�_�L�_�L�_�L�_�L��_�L�_�L�_�L�L��_�L�L�_�_�L�L�_�_�L�_�L�L�_�L��_�`L�_�_�_�_�L�L�_�L�_�L�_��+L�_�_�L�_��L�_�L�_�_�L��``L��`L�`L��L�L�`L�`L�`L�`L�`	`
L�L��``i`
L�``7```L�`L�`L�L��``2``'``!``L�`L�``L�`L�iL�L�`L�``L�` L�L��L�`"`#L�L�`$`%L�`&L��L�L�`(L�`)L�`*`+L�L�`,`-L�`.`0L�`/L���`1�L�L�`3`4L�L�`5L�`6L��`8`N`9`FL�`:L�`;`<`CL�`=`>L�`?L�L�`@`AL�`BL�L��L�`DL�`EL��L�`G`HL�`IL�L�`J`KL�L�`L`ML��L�`O`Y`PL�`QL�L�`RL�`S`TL�`UL�`VL�`WL�L�`XiL�`Z`cL�`[`\L�L�`]L�`^`_L�``L�`aL�L�`b�L�`dL�L�`eL�`fL�`g`hL��L�L�`j`k`�`l`sL�`m`nL�`oL�L�`pL�`qL�`r�L�`t`|`uL�`vL�`wL�`xL�L�`yL�`z`{L�L��`}L�`~L�`L�L�`�iL�`�`�`�`�`�L�L�`�L�`�`�L�`�L�`�L�L��`�L�L�`�L�`�L�`�L�`�L�`�`�L�`�L�`�L�L��`�L�`�`�L�`�`�L�L�`�`�L��L�`�L�iL�`�d`�dM`�`�MM`�M`�M`�M`�`�`�M�;�;M`�`�`�d`�`�dnW`�dt�N`�`�d`�`�ddcWd`�dM`�`�`�`�`�dd`�`�dd`�d`�`�`�`�d�Cdd`�d`�d`�d`�dBf`�`�`�`�`�d`�`�dt�`�d@�`�L�`�j�`�J`�`�Jj�L�`�M`�`�`�d`�d`�dazd`�`�F�`�F�`�F�`�`�`�F�`�E�`�`�@&Ae@&Eaz`�`�az`�`�`�azaz�`�az�azd`�`�d`�dd`�b��C`�`�`�`�`�ddMd`�d`�d`�`�dd`�d`�`�d`�d��d`�a�`�a�`�d`�a|`�a9`�a!`�aaazazaaazazaaazaazaazazaaaza	aza
azv�azaaza
aaazaazaazaazazaaazaazazaaazv�azaazaazaazaazaazaazazaazaaza v�aza"v�a#a.aza$a%azaza&a'azaza(aza)aza*aza+aza,a-azv�azaza/a0aza1aza2aza3azaza4aza5a6aza7azaza8v�aza:|a;|aza<a=aza>a]a?aNa@aGaAazaBazaCazaDazaEazaFazv�azazaHazaIazaJazaKazaLazaMazv�aOaVaPazaQazaRazaSazaTazaUazv�azazaWazaXazaYazaZaza[aza\azv�a^ama_afa`azaaazabazacazadazaeazv�azazagazahazaiazajazakazalazv�anauaoazapazaqazarazasazatazv�azazavazawazaxazayazazaza{azv�a}a�aza~a|az|az|dL�aza�Ma�a�a�a�a�b�a�a�a�a�Maza�a�a�azgQgQaza�Ma�cWa�cWa�cWcWa��a���cWxva�Ma�b�Ma�.a�a�a���a�L���b�a�a�b�M~Ma�dqa�bBa�a�a�a�a�@&a�a�a�a�a�@&A@&a�@&@&a�a�azaz@&a�@&a�@&@&a�@&a�@&a�a�@&@&a�@&aza�a�@&a�a�@&a�@&a�@&a�Gt@&a�@&�,a�@&a�@&a�@&a�@&@&a�az@&a�a�@&a�@&a�@&a�@&a�@&a�a�@&a�a�a�@&@&a�a�a�H���@&a�a���@&��@&a�a�H�@&H�a�b+a�a�@&a�a�az@&Aea�ba�a�az|nWa�a�a�a�a�a�a�a�a�a�a�H:|�EBaEa�EBaa�a�a�a���AeEH:�H a�a�a�a�a�a�H E�AeEzE�Ea�a�Ea�a����~Ea�Ea�a�a�|d]b�@a�ba�ba�a�a��F��bbE�F�EzbEbb��EF���bbbb
b	b
E��b�~b"�ٰ�EbEBabbbEbE��b��ٰbbE��Ebazazbbb!bbF�GtbGtGtbG�bb F���F�b"b)b#�b$Gtb%b&G�F�b'b(���G��b*G�G�G�b,b0b-b/azb.azAH azb1b4b2b3azAAazazb5azb6azb7azb8azb9b:azb;azb<azb=azazb>gCb?gCb@gCbAgC�BbCb�bDb�bEb�bFb�bGb�bHb}LbIbJbebKbZbLbTbMbPbNbOE�'NAebQEbR|��bS�EbUbXbVbWH:H H:EEbY�Eb[bbb\b_b]b^EEzH H:b`baH:AeEazbcEbdEH EbfbqbgblbhbjEbiA�6EbkH:EbmbobnE�EEbpEz�brbxbsbubtEAEbvbwH:EH:�byb{bzEE�H Eb|EAb~azbazazb�b�b�t�azgCb�b�azv�wb�azM�azb�b�azAb�b�t�azazgCb�b�b�b�b�b�az`�`�@&azb�E�Aeazb�azb�Aazb�b�b�b�b�b�b��az��azazb�b�b�azAeazL�b�b�b�b�azb�`�azazb�azE�b�b�b�
az

b�b�Aeazb�b�azaz�wb�c�b�b�b�b�b�b�azb�azb�azb�azb�b�azb�b�b�b�b�b�b�azb�v�b�azb�azb�az�azb�azw�azb�azb�azv�azb�b�v�b�v�b�t���b�v�b�v�v�v�b�azazE�b�b�azb�azAeb�b�McW��Aeb�b�azb�b�b�azcWLazb�b�b�azaz`�azb�b�Ab�cqb�c@b�b�b�b�b�b�b�b�jb�azt�b�b�jupb�b�b�b�u�jb�v�b�b�jv�t�b�azb�b�azb�azb�azb�azv�azazb�b�b�azb�v�b�b�azjgCb�c!b�c	b�cazb�azb�ccccb�azcgCazgCccv�cv�azazkXc
cccccc
azkXazv�cv�ubccubt�cct�mcv�mv�ccccccv�cv�jjmcgCupcupazgCc mazc"azc#c7c$c-c%c)c&c'azv�c(v�v�v�c*c,v�c+v�u�u�v�c.c3c/c1c0wv�wu�c2u�jc4c5jwc6mwmc8azc9c=c:c<v�c;v�v�v�v�c>azc?azv�azcAcYcBcPcCcJcDcGcEcF�KgCazgCcHcIazjjazcKcMcLazmazcNcOazv�t�azcQcWcRcTv�cSmu�cUcVu�v�b�azcXv��Kv�cZcec[c_c\azc]c^v�azv�azc`cccacbb�v�azv�cdazt�v�cfcmcgcjchcimu�azu�ckclv�ububmcnazcocpb�v�b�u�crc�csc�ctazcuc{cvcxcwazazb�cyczazv�gCazc|c�azc}azc~cazazc�azc�azc�c�b�azb�c�c�azv�mazc�azc�azazc�c�azc�azazc�azc�c�azazc�v�c�azc�v�c�v�azc�c�c�c�azc�c�c�c�c�c�azc�azc�azazc�azc�azc�azc�v�azv�ubc�c�v�azazgCc�c�c�c�c�c�v�azu�azc�c�azb�azgCc�c�c�c�azu�azt�c�azu�azc�c�c�c�azc�c�c�jv�b�azc�c�azc�azu�azc�gCv�c�azc�c�azc�c�azc�c�azc�c�azazc�c�azazc�kXazazc�c�azazc�c�azazc�azkXc�azazc�c�azazc�azc�azc�azc�c�azazb�c�c�c�c�c�c�azc�azM�c�c�azAec�azc�c�c�c�c�c�c�c�v�mc�v�azgQazc���v�jc�v�gCc�c�c�azu�b�v�c�c�c�ju���v�azc�c�azM�Mc�d6c�d3c�c�azc�c�LLazc�azc�dc�d
c�dddAdAEEdEAddddAeH:��AAd	AEddddEd
EAddAEdAdd��]|�ddddAH �
�AdAH:dd'dd"dd dd��E�AeEd!AE�Ed#d%Ad$AEd&A�Ezd(d.d)d+d*EAEd,d-H:AH:azd/d1d0AAH:Ad2AEd4d5Laz@&azd7dEd8d9A@&azd:d;g_d<g_d=g_d>g_d?g_d@dCdAdBM�M�����dDg_M�g_dFdpdGdOazdHazdIazdJ`�dKdLazazdMazdNv�jdPdRdQazazK�dSd]azdTazdUdVazdWazazdXdYazdZazazd[azd\az�d^did_det�d`mdadbdddcmmazmazdfazt�dgt�dhazv�djv�dkdlgCgQgQdmgCdngQdoazgQc�Adrf�dsd�dtd�du`�dv`�dw`�dxddy`�dz`�d{q~d|d}b�b�d~b�b�b�d�`�`�Md�`�`�d�`�d�d�`�`�d�d�`�`�d�`�d�`�d�d�`�d�`�`�d�`�d�`�d�d�`�d�`�d�`�`�d�d�`�`�d�@`�d�fg`�d�d�`�d�`�d�`�d�`�d�eBd�d�d�d�d�d�L�d�d�d�d�d�L�d�L�d�d�L�L�d�d�L�L��d�d�L�d�L�d�d�L�L�d�L��d�L�L�d�d�L�d�L�d�L�iL�d�d�d�d�d�L�L�d�L�d�L�d�d�L��L�L�d�L�d�d�L�d�d�L�d�L���d�L��L�d�d�L�d�d�d�L�d�L�L��d�L�d�L�d�L�L�id�L�d�L�d�L�L�d�L�d�L��d�d�d�d�d�L�d�L�L�d�L�d�L�d�d�L�L�d�L�d�L�d�L�d�L��d�L�d�L�L�d�L�d�d�L�d�L�d�L�L�d�L�d�L�d�L��d�L�L�d�d�d�L�d�d�L�L��d�L�d�L�L��d�e'd�ed�L�d�ed�eL�d�L�d�L�d�L�d��L�eL�eL�eL�L�eeL�L�e�L�eL�e	L�e
L�eL�eee
L��L�L�eL�eeL�eL��L�eeL�eeL�L�eL�eL��ee!eL�L�eL�eL�eL�eL�e L��L�e"e#L�L�e$e%L�e&L��L�e(e/L�e)e*L�L�e+e,L�e-L�L�e.L��L�e0e1e9L�e2L�e3L�e4L�e5L�e6L�e7e8L�L��e:L�e;L�e<L�L�e=e>L�e?e@�L�L�eAL��eCe�eDeQL�eEeFL�L�eGeHL�eIL�L�eJeKL�eLL�L�eML�eNL�eOL�ePL��:eRe�eSejeTebeUeZL�eVL�eWL�eXeYL�L��e[L�e\L�e]e_L�e^L��e`L�eaL��L�ecL�edL�L�eeL�efegL�L�ehL�ei�L�eke�elexL�emeneueoesL�epeqL�L�erL��+L�et�L�L�evL�ewL�ieye�ezeL�e{L�e|L�e}L�e~�L�e�e�e�L�e�L��e��L�e�L�e�e�L�e�L��e�L��L��+L�e�e�L��L�e�e�L�L�e�e�L�L�e��L�e�e�e�e�e�L�L�e�L�e�L�e�e�L�L��e�e�e�L�e�L�e�L�e�e�L��+�+L�e�L�L�e�e�L�L�e�e�L�L�e�L��e�e�e�e�e�e�L�e�e�L�L�e�e�L�L��L�e�e�e�e�L�e�L�ie��L�e�e�e�L�L�e�L��L�e�L�e��L�e�e�e�L�L�e�e�L�L�e�L�e��L�e�L�e�L�L�e�e�L�e�L�e�L�L�e��L�L�e�e�L�e�e�e�e�e�e�e�L�e�L��L�L�e�e�L��L�L�e�L�e�L�e��L�e�L�e�L�L�e�e�L��L�e�f=e�fe�e�L�e�e�e�e�L�e�L�e�L�L�e�L�e�L�e��L�e�L�L�e�e�e�e�L�L�e�e�L���e�L�e�L�e�e�L���L�e�L�e�L�e�L�L�e�L�e�L�e�fL�L�f�L�fffffL�L�fff
L�ff	L�L��fL�fL�f
L�fL��L�fL�ffL�fL�ffL��L�fL�L�fL�fL�ffL��L�ff5ff&fL�fL�L�f L�f!L�f"L�f#L�f$L�f%L��f'f2f(f-f)L�L�f*f+L�L�f,L��L�f.f/L�f0L�f1L��L�f3L�L�f4�L�f6L�f7L�L�f8L�f9f:L�L�f;L�f<L�if>fML�f?L�f@fAL�fBfGL�fCfDL�fEL�fFL�iL�L�fHfIL�fJL�fKL�fLL�L��fNfYfOL�L�fPL�fQL�fRfSL�fTL�L�fUL�fVL�fWL�fXL��L�fZL�f[f\faL�f]f^L�f_L�L�f`�L�fbL�L�fcL�fdfeL�ffL��L�fhf�fiftfjfl`�fkp�`�fmaz`�fnazfofpazazfqazfrazfsazgCfuazfvf�fwp�fxf�fyf�fzgCf{f�f|fgCf}f~gCgCazf�azgCf�gCazgCf�gCf�gCazf�f�azv�f�f�v�f�v�azf�azv�azf�azf�f��f�f�mf�mmazf�f�mazv�v�f�azf�f�q�f�df�b��Cf�f�f�azazkXf�azazf�azf�f�azb�kXf�f�f�azazf�azf�~�of�f�f�f�cWazazf�azf�f�azf�azf�azf�azazf�f�azazgCf�f�f�azf�azazf�azf�f�azazf�f�f�azf�azgCf�azazf�f�azf�azazf�azf�f�azf�azf�azazmazL�f�g�f�g\f�g,f�f�f�f�f�f�azMAef�f�azmazf�f�azMazc�f�azf�f�dazazf�f�gf�f�f�f�f�f�f�f�azf�azf�v�azf�azazf�jazf�f�f�azf�azazv�f�azf�f�t�azazv�f�f�f�f�f�f�azf�wUv�f�f�azmmazgCazazf�f�azf�wwjf�gf�f�azf�azf�wubf�ggQb�ggwUkXjv�gg	ggmazggwt�v�mg
ggg
gt�jmv�v�azggazazkXgg#azgazgggggggv�wv�azggt�mmubgg ggwv�wUazg!g"azv�jazg$azg%azg&g)b�g'g(wb�azg*azv�g+v�t�g-gVg.g@g/g5azg0g1azg2g3azv�g4azv�v�F�g6azg7g8azg9g=g:azazg;azg<mazazg>g?gCgCazgAazgBazgCazgDazgEgKazgFgGazgHazgIgJazb�j�KgLazgMgSgNgPazgOv�b�gQgRazv�t�mgTazgUazv�gCgWgYgXazazF�gZg[M�nW@azg]gdazg^g_gaazg`Mazgbgc@t�az@geglgfgiggghazM�AeazgjgkMazLcWgmg�gngoNazgpnWgqg�grg�gsazgtg~gugzgvgxv�gwv�u�u�gyv�azg{g|azu�g}gCu�gCgg�g�g�azg�azb�b�v�g�g�g�v�v�v���g���azg�g�g�azg�g�g�g�azg�azb�g�azb�v�g�g�v�v���azg�azg�azg�azg�g�v��?wUazg�g�azg�g�g�azg�azg�g�azg�azg�azg�azg�azg�azazg�g�azazg�v�azg�g�g�g�g�g�v�u�g�mg�t�g�t�g�t�t�g�g�g�t�g�t�g�v�t�g�t�g�t�t�v�g�g�b�gCazg�g�azg�azg�azazg�g�azazg�g�azv�azg�azg�g�v�u�v�wg�azg�azg�g�g�g�g�g�azv�u�t�g�g�mb�gCazg�g�azg�azv�g�g�azu�v�wg�azazdg�h,g�hg�g�g�azg�azF�g�g�azazg�azg�azg�azg�g�azg�az�Bazazg�azg�g�azg�h	g�g�Mg�g�Mg�Mg�Mg�Mg�Mg�hg�g�g�g�tOg���)�g�g�g�g���M����M�q�g�hg�g�q��O�O�ohh�o�;�;g�hhg�hg�hg���hM��Mh
MhMhMh
hhg�hg�y�g�hhhhM�o�;q�hh��tO��MhhhhazhhMaz��hazMazh@h @h!@h"Mh#h*h$h)h%�dh&��h'�dclh(�dclz�@h+@o�dh-h�h.hAh/Mh0Mh1Mh2MMh3Mh4Mh5Mh6Mh7Mh8Mh9Mh:h;Mh<Mh=Mh>Mh?Mh@MMg�iMhBhCiMhDhghEh_hFhYhGMhHhLg4hIg4hJg4hK��+hMhThNhQhOhPm�+���hRhS��m,m�LhUhWhV#��hXg4g4�UhZb�b�h[b�h\h]b�h^b�b�b�h`hbhab�NW�hchfhdhekuM�MgCj�|�hhhhihvhjhshkhoakhlhm����hnak��akhpakhqakhr?1akakhtakhuLakhwakhxh{hyakhzakLakakh|akh}akh~ak|h�h�h�h�h�kuh�akh�LakLh�h�Nb�h�h�eh�eh�ՙ9h�h�eh�e�*eh�e(�Lh�h�h�xvMb�diMh�h�h�h�h�h�h�h�cWh�h�h�h�h�h�h�`�M�h�M�h�M�h�h�M�M�h�M�h�M��h�dNLc�h�W�c�h�h�h�h�h�g&lh�ڈlg&h�g&h��=h��=l`�b�h��kMh�h�h�Mh�c�h�h�h��w�Kazh�azu�h�nWd{xvc�akh�t�h�`�h�h�h�h�h�h�h�h�MnWLh�h�h�h�M�M�h�M�h�M�h�M�h�M��h�h�M�h�M�h�M�h�M�h��M�h�M�h�M�h�M�h�M�M��h�dcWh�dh�h�dd�Zb�h�h�h�K�b�Lh�h�h�h�Mh�h�h�Mh�h�Mh�Mh�M�;Mh�M�;Mh�h�Mh�MMh�M�;h�M�;MM�h�h��,akh��,dh���h�l�h�k�h�j�h�i�h�ih�azh�azh�aziaz�1aziibiiViiNiaziaziiazHGi	ii
iiiH:ii
i(is�H:s�iis�s�Oii�F�F�*iiiH:�9iiii�i�O��s�iH:iH:s�H:i i4i!i+i"i&H:i#i$i%H:!��*!�i'i)i(s�!�s�i*s�s�s�i,i/i-H:i.H:s�H:i0i2i1�H:�i3�i5iAi6i<i7i:i8i9H:H:�i;�9��9i=i?i>s��9s�s�i@s�H:iBiHiCiFiDiEH:,>,>s�iGN*s�N*iIiLiJiKN*H:H:iMH:iOaziPiTaziQaziR�giS��t�iUazazMiWaziXiZaziYLazi[azazi\i]t�i^t�gQi_i`iav�gQazu�ici�azidieazEifigg4ihi�iiiuijing4ikil�+img4g4�ioipg4�+iqisirg4��g4g4it2g4ivi{iwix�+g4iyg4izg4��g4g4i|i}ig4i~g4mg4i�uVg4i�i�i�g4i�i�g4i�i�g4g4��i�i�g4i�g4mg4i���g4i�g4i�g4i�i�g4i�g4��i�g4�
g4Ei�azi�i�azi�azi�i�azi�i�azazi�azi�i�azi�kXi�azi�azazi�azi�azi��azazi�i�azazi�azi�i�azv�azi�jii�i�i�i�i�i�i�i�azi�nWi�azi�i�azi�azi�i�i�i�t�v�w�w�i�i�v�v�u�azq~i�i�i�i�i�u�jwmi�i�gCu�v�azi�i�azi�azi�i�i�azmi�i�v�t�v�azi�Mi�i�i�i�b�i�i�gQi�b�azv�i�i�u�i�v�v�v�azi�i�azb�i�i�azji�v�mv�i�i�i�i�i�aNazi�i�azi�azgCazQazi�i�AeL�Mazi�i�i�i�i�i�azL�azAei�az�azi�jfi�jecWi�i�ji�ji�i�i�i�i�i�pzNcfiMi�i�j��CMlii�i�i�i�Lc�K�iMjjMc�Ld{jjjjjjM`�xvjg�jg�j	j
g�g�jjg�j
g�jg�g�jjg�Mg�jjcWNm�djjjjL�Ldb�jjL�t��b�jj0jj$jj!jj c�b�LL�j"j#LL�NK�j%j-j&j*j'Lj(j)��lն�j+L���j,y�y�j.j/dLnWL�j1jKj2jFj3jBj4j7j5j6d{}�}�d{j8jAb�j9L�j:j;L�j<L�j=L�j>L�L�j?L�j@>�L�lxrXNjCjDjEg�Mg�MjGjJjHb�g�jIMq�b�g4jLjYjMjNg4azjOdjPn�n�jQn�jRjSn�n�jTjUn�n�jVjWn�jXn�n��jZj[Ldj\j^gnj]�gnj_j`b�o�jab�djbjcddjddm�nWAejgjh�nWnWaNjjj�jkj�jljojmjncWazAeE�jpj�azjqjrj�jsj�jtj�jujyjv��jwjx���9jzj}�j{j|�s��j~�j�9��9j�j�j�j�j��j���9�j���j��j���j��9�j�j�j�j�j�H:H:j�H:j��H:j�H:j�H:j�H:H:H:j�H:j�H:j�j�H:H:s�j�j�j�j�j�j�H:j��H:j�H:H:j�j�H:�9H:j�j�H:j�H:j�H:j��9H:H:j�j�H:j�j�H:�9�9H:j�H:j�H:H:j�j�H:j�H:H:s�F�H:j�j�j�sGj�MH:Aj�sG�Rj�sGj�j�sGj�sGj�sGsGj�j�sG�sGj�azj�j�j�j�sGazMaNj�j�azj�az@&�azj�kj�j�j�j�j�j�j�azazj�j�azj�azj�azj�azj�azj�azazj�azj�azj�azj�azj�j�azj�azj�azazj�j�az�azj�j�j�j�AazMQazj�azdj�j�j�j�azj�azAej�j�azE�Mazj�j�j�azg_��j�az2Tazj�azj�j�azj�j��1az@&j�Q�_j��_j��_j��_j�j��_j��_k�_�_k�_k�_kk�_k�_k�_k�_k�_�_k	�_k
@�_kk�k
azkk�kk[azkazkkk,kk#kazkkkazazkkazazkwUkwU��kkazkazkgQw�k azk!k"��w�azjazk$k%k(k&k'gCb�gQkXk)azv�k*v�k+t�azk-kBk.k:k/k3azk0k1k2v�gQgCb�k4k7k5k6v�w�w�azk8k9u�azv�azk;k>k<azazk=azw�azk?k@kAazwwazkCkNkDkIkEkFazt�kGkHt�kXu�jkJkKu�jkLazu�kMazw�kOkVkPkTkQkRazb�jkSw�mazkUmgCkWkXw�ubkYkZu�azazwUazk\azk]k^k�k_kmk`azazkakbazazkckdazazkeazkfkgazazkhkiazazkjazkkazklazb�knktazkoazkpkqkraz�1ksazgQazkuk}kvkxazkww�wkyk{��kzazv�k|kXv�azazk~kazgCazk�azk�k�azk�azk�azk�azk�azgQk�azk�k�azk�k�k�azw�t�ubk�k�k�azazwk�azazj�Ok��O�1k��k��k�k�azk�F�azk�k�k�azazk�k�L�L�k�L�k�L�k�k�L�L�k�L�k�k�L�L�k�L�k�k�L�k�L�L�k�L�k�xL�Qk�k��k�Qk�k�ak��_�O��_k�l�k�k�k�k�k�k�k�azk�k�k�k�Ap�azAk�azazn�k�azk�k�k�k�azdazc�k�azF�azk�azk�k�k�k�azAAazazk�k�k�nWk�k�azazk�k�azazk�k�azazk�azk�wazk�azk�k�k�k�azk�azk�k�azt�azazk�wazk�k�azk�azk�k�azt�azazk�azwk�lMazk�azk�k�k�k�azM�g_k�l@k�dk�lk�lk�k�k�k�k��k�k�k�k�e��e���kfc�k�k�dc�k�c�Lk�ݶdk�k�lk�k�c�$$L��ll����l$$MlMlMlMlMlMl	l
lM����Ml
lldldlllldo���Kllq��Zm��NL�lg4lLldl�m�ll<�lll-ll&l l#l!l"dm��-o�l$l%����i1�l'l*l(l)���nual+l,�n�do�l.l3`�l/l0dal1�l2��!pdl4l5l8l6l7m��Z���Nl9l:�Km�l;�#�l=L�dl>l?gQgCazlAlGlBdlCt�lDlEdd]dlFdm;dlHdlIdlJlKdlLdb�dlNlYlOlTlPlRdlQg_AlSazdAlUlWazlVazAecWlXnW��lZ@&l[l�l\azl]azM�l^l_lel`M�laM�lbM�lcM�ldM��MM�lfltM�lgM�lhlilrljM�lkM�M�llM�lmlnM�loM�M�lplqM�M�hM�lsM�hluM�lvM�lwM�lxM�lyM�lzM�l{M�M�l|l}M�M�l~lM�M���azAl�l�l�@&l�@&@&l�@&l�@&l�@&l�l�@&l�@&@&l�l�@&@&l�@&l�@&�E@&l�@&l�@&l�@&l�@&l�l�@&l�l�@&l�l�l�@&l�l�l��l�@&l��*@&l�@&l�@&l�@&l�@&l�@&l�@&l�@&@&l�l�@&@&l���@&l�l�@&l�@&l�l�@&@&l�l�@&@&l�l�@&l�l�l�@&@&l�@&l��*@&l�@&l�@&@&l��*@&l�@&l�l�l�@&l�@&@&l�@&l�@&l�@&l��@&@&l�@&��l�@&l�@&@&l�@&l�@&l�l�@&�E@&l���l��l���l���l�}?l�m�l�ml�l�l�azl�l�l�l�l��sGl�+l�@l�@@l�l�@l�@�@l��l�l�[l�+
sG�azl�l�l�l�l�l�l�l�azl�azl�azazl�az�1l�l�wazl�l�w�l�b�gQl�azl�azgQazl�azl�l�azl�gQazazl�l�azv�azl�ml�ml�v�mkXmmazgCmmazgCazkXmmv�azv�kXazm	m
mmazmgQm
azmazb�mb�mb�mmb�b�mmb�mb�gQb��?mmmmkXgCazb�wmmaz|mm�mmFm m9m!m2m"m+m#m&azm$azm%gQazm'm)m(az{�u�azm*az��m,azazm-azm.azm/m0azazm1az��m3m7m4azazm5m6azwazm8azazgCazm:m;mAm<m>azm=�?azazm?m@azazv�azmBazmCmDmE�?azub�?mGm�mHmbmImSmJmMmKazazmL�^v�mNmQmOmPgCazgCaz�"mRb�kXmTazmUm`mVazazmWmXm[mYazazmZazw�m\m^azm]azw�m_azazw�v�ma�?azmcm|mdmjmemgwqmf�azmhmiv��w�1�"azmkmlm{�"mmv�mnmomumpv�v�mqmrv�msv�v�mt�"v�v�mvv�mwv�mxv�myv�mz�"v�az��azm}m~mgQazazm�kXazm�m�m�m�m�m�azgCazgQazm�azkXm�m�azm�m�azm�azaz�"m�azgCazazm�m�m�azm�azm�azb�azm�m�m�m�m�azm�m�azv��?m�m�m�azwUazm�kXv�wcjm�b�m�m�azv�azm�m�m�m�m�m�m�Am�H:H:m�H:@&m�m�m�m�m�m�m�m�m�kXazv�m�azm�gCkXwm�m�m�v�v�azm�m�v�azv�azm��?m�m�m�azm�gQm�azazgCm�azm�m�v�azazm�azv�m�m�m�m�m�azm�azazm�gCazm�azgQm�azkXm�azm�m�azm�m�azazgCm�m�b�azgQazE�|m�nTm�nm�m�m�m�m�m�m�azm�m�m�m�azm�azb�wazazgCazm�azm�azwm�m�m�wm�m�m�azm�m�azgCb�m�m�azm�azm�azazkXazm�gCm�b�azm�azkXazm�n	m�nm�m�m�azm�azazm�m�kXgCm�m�gCazgCaznazgQnnv�gQnnwaznnaznwazwv�n
azaznaznn
w�azkXnn1nn#naznn!nn nnnazaznnaznaznaznaznaznaznazb�azv�nv�azgCazgQn"v�azn$n.n%n'n&kXazv�n(n+n)w�azn*azkXn,n-azkXkXazazn/n0azv�azn2nFn3nAn4n<n5n8n6v�azn7kXazn9wUn:n;gCazazwUn=azn>n?azgQazn@b�aznBaznCaznDaznEazazkXnGnQnHnLnIazaznJnKazazgQnMnNv�kXnOazaznPwUu�jnRnSazjaznUcWnVwpnWs<nXqnYpnZo4n[n�n\n�n]nyn^ngn_nb�fn`narC�@��ncnend��rC|�nf�)���nhnonink��njx���nlnn�Wnm�f$$9��0npnunqns9�nr��$$��nt9��Wnvnw|���$$nx���nzn�n{n�n|n~n}����|���n$$��n�n�n�n�n�����rC|�9�n���n��$$|���n�n�n�n���n�n�|�x��@�fn�n�cW��n��09�gvn�n�n�n�n�n�n�n�n�n�9����$$n�|�n�)��$n�n�n�n�n�n���$n�cW9����f|�n����n�x���n�n�n�n�$$n�rCn����)�n��W9�n�n�n�n����n�n����@��)�n�n���n�9�9��fn��Wn�n�n�n�n�n�W������Wn��$$n�$��n���n�$�@n�n�n�n�n�n�n�n�n�n���n�n����W�f��n��W�n�n�n�n�$$��$$n��@W�n�9�$$�On�n�n�n���n��Wn�rC�fn�n�n��^����n��m#s�n�n�n�n��fn��W)�9�rCn�n��n���fn�n���rC�$$n��Wn�n�n�n�rCn�n��f����n�n�n�|����W���n�n�n�n�n�$$�W���n��0������n�on�on�on�o��n����Woo�||��?o9��W9�o�W�foo
oo	cW$$o
o$orC�����oo���ooo�f�f�����foo#ooooo�f���oooo�W9��(��|���oo o���Wo!o"�$9��o$o-o%o*o&o($$o'$$rCo)�$$�f��o+o,�W�WrCo.o/��9�o0o2o1���rCo3����Wo5o�o6oZo7oD�fo8o9o?o:o<$$o;��9�o=o>�f$$W���o@oA$$��oB$$oC9�$$��oEoM��oFoGoLoHoJ��oI�f�WoKcWrC�f��$$oNoR9�oOoPcW�oQcW9�oSoWoT9�oUoVcW�W�cWoX��$$oYrC$o[o|o\omo]odo^o`o_cW)�$oaobrC��oc$��9�oeoiofohog��f����cWojol��ok9�cW|��(onouooor�fopoq���fosot9�W�cW�(ovozowoyox�����|��cWo{x�����o}o�o~o�oo�o�o�|�cW�Wo�W�rCo�o���9��f��o�o�9�o���o�rC�o�o��o��W��W�o�x�o�o�|�o�4P���Wo���W�o�o�o�o�o�o�o�o�o�o�o�o�|�o�$rCrCo�rC��o�o�$$�f��o�o�o�o��(�@�W9���9�o�o�o�o�o�o�$$�����W��o��@9�o�o�o�o����$$o���fo�o�cW)��W�o�o�o�o��o�o�rC�rCo�o�o�o�o��WrC�W|��o�o�cW���o���W�o�o�o�o��Wo�$$��o�o����fo����W4Po�o�o�o��fo��W�f�!$o�o�)�o�cW$$�Wo���cWo�o�o�o�o�o�x�o�o�$$o�����rC��o���o���)�o�����o�o�o���o�$$�o�|��OcWo�o�o�o�o�o�o�o����9�)�o�o�o�o��fcW$$��o�o�$$cW$$�Wo�o�o�o�9���|o���$$�fo��W�o�po�o�o�o�$�9���p����)���ppp��p�W�9�$$pp�pp�p	pLp
p,ppppp
pp���W�@p���@p9�$pppp��$pp$W�p��$$p�$$pp��p$x�$$��pp%p p"��p!9�9�p#p$�W�^���0p&p)p'p(�����W$$p*p+����9�p-p<p.p4p/p1|�p04P9�p2��$$p3$$�fp5p:p6p8p7���@x�$$p9�f��p;$$��)�p=pEp>pBp?p@|���rCpA�cWpCpD�$�W��pFpIpG$$$$pH�$$pJpK���@�@�pMpapNpXpO�pPpTpQpR�W��pS}��O��pUpWpV��$W����0�fpYpZp_p[p]$$p\���Wp^��($$p`�����pbpppcphpdpe�O��pfpg��WrC�Wpiplpjpk�W��������pmpnpo$$������pqpwprpt��ps|���pupv��9���$$pxp~py9�pzp}p{x�p|x�x��$$�@�fp����p�p�p�p�p�p�p�p�p�p�p�p���cW���p�p��W�!p�|��W$$p�p�9���p�p�p�)��9�9���p�p�p�p�p�$$p�$$���Wp���cW$$p�p�$$p���$$�fp���Op�p�p�p�p�p�p�p�rC���Wp�p��p��W9�p�p�9��f�f��p�p�p�p�$$p�$$��p�)�$$�W��p���@p�p�p�p�p�p�$$4P�!��p�p�p����)�cWp���x�����p�p�p�p�p�p���p��fp�$$�p�p�p�$$��p�p��0p���9����p�p�p�p�p�p��������p�p�$��#sp�p�p�����p�9�$$p�p���cW$$�p�p�p�p�p�p�p�p�����cWp����|�p�p�p�p�W���cW�Wp�p�rCp����$$��p�$$p�p���p��f��p�p�p��f�W�����p�q	p�p�p�����p�p���p���p�����p�rC��p���p�qp�����p�p���qq��rCrC����qq��q��q����q��q$$��$$q
q$$$$qq
$$$$qq$$$$q$$��qq�qq5qq'cWqqqqcWqcWqcWqcWqcWrCcWcWqqq"cWqcWq q!cWcWrCcWq#q$q%rCcWrCq&cWrCq(q/q)cWq*cWq+cWq,cWcWq-cWq.rCcWcWq0q1cWcWq2q3cWq4cW��cWcWq6q7qkq8qKq9q@q:��q;q>q<�@q=�f�0�q?x��fcWqAqFqBqC��$$qDqE�$$$$cWqGqH$$4PqIqJ9��fx���qLqWqMqRqNqQqOqP�f$$$$��$$��qS��qTqU�($$qV����WqXqaqYq^qZq\x�q[�$$�q]�@$$q_q`$$��$$�fqbqfqcqe��qd��cW����qgqi��qhx���9�qj$$|�qlq�qmqzqnqtqoqrqpqq��cW�(�f��qs�f$$quqwqv�$$����qx$$qy��v�q{q�q|q~q}�����fqq��$$rCq�q�q�q��W�q���#s��q�q��W�q�$$rC��q�q�q�q�q�$$9���q�q�q�q�q�$$��$$�$$q�q�$$x�x�cWq�q�q�q�$$q���q�rC��q�q��(q�#s$$�(q��0��q�q���q��W��q�$$�!q�W�9�q�rnq�q�q�q�q�q�q�q�q�q�q�q�q�cW��q��f�|�?q���q�q��W)�$$�fq�q�q�q�$$q��q���9�q�q���$$�0��q�q��W�@q�q���f�0��q�q�q�$$q���q�q�q�q��@��$$x��W�q�q�q�q�q�9��W|��Wq�9�rCq�q�q�q�$$���@��q�q���$$��q��fq�q�q�q�q�$$q�q���q�$$�O���q�q�q�q��q����cW��q�q�$$�����q�q�q�q�q�q�q�9�9����q��Wgvq�q���q�x����WrCq�q�q�q�����W�fq�q�$$q��@��q����x�q�r9q�rq�r
q�rrr9�r���r��r�����@rr
rr	9�r��cW�W�frr$$�W�W��rrrr��r���Wrr�Wr�W�f�f�r��fr�fr�W��rr)rr!rrrr�W�������r �v�r"r%�r#�fr$���0r&r'���Wr(�0�0x�r*r1r+r0r,r.$$r-�x�r/x��f����cWr2��r3r7r4��)�r5r6)��f)��r8cW��r:rTr;rGr<rBr=r?r>x�$$x�r@rAx����f��rCrErD�@���WrF������rHrMrI��rJrL�frK$$��$$��rNrQrO��0rP���$$rRrS$$���rUrbrVr\rWrX$$��rYrZ�f��r[�����fr]r_�r^���r`ra�(�W�&�Orcrjrdrhrerf�OW��rg���ri#s��$$rkrm��rl|�$$��$$ror�rpr�rqr�rrr{rsrv��rtcWru��$$rwrzrxry��9�$$rCcW�r|r�r}rr~��W�$$r�$$��$$r�r��r��$$r�r��f$$4Pr��W�fr�r�r�r�r�$$r�$$��$$r�r�r��r�r���)�$��r�����fr�r�r�r�r�r�r�����cWr�r�$$������r���)���r�r���r�$$W���$$��r�r�r�r�r�r�r�$$��r�r��W$$r�r�cW����$$r�r�r�r�r��W�0�f���r�r�r�)�9���r�r��f|���r���x�r�r�r�r�r�r�r�$$rC��$$rCr�r��Wr��@�r�9�$$��r�r�r�r���$$$$r�x��r������r�r�r�r�r�r�r�r�r�r�r�cW��$$r�r��!��r������r�$$r�r�����f�r�r�r�r�r�r���r�)�9�|��r�r��^�����0r�r�r�r�rCcWr�cW�f����r���v�r�r�r�r�r�r�r�x�r�9��f$$$$r���$$r�r���r�r������f��r��9���r�r�r�r�r�|���gv$$r�r���$$$$cWssssss	ss��sssW��W�W����s���fs
s
$$s$$s�f��s��s�cW��ssss��s$$��s�Os4P�frCsss��cW$$��s��s���fss-ss's s$s!s#�s"��$$��$$s%s&�@�f��$$s(s*s)x�|9�s+s,������s.s4s/s1s0����x�s2s3��cW|�$$s5s8s6�f��s7$$��s9s:cWrCcWs;$$�0s=tos>sKs?sB��s@��sA���WsC��sD����sEsF����sG��sHsI��sJ����rCsLt1sMs�sNs�sOshsPs`sQsZsRsTsSx�9��WsUsV��^sW��sXx��(sY�W�(s[s^s\s]�W�0��Ws_�W�WcWsasdsb�W�Wsc�@x�sesf�W9��Wsgx��Wsisusjspsksnsl�W�Wsmx�cW�Wso�W�@sqsssr�W�@|��Wst��Wsvs|swsy�Wsx�W���Wszs{�W���fs}s�s~scW�W�WrCs�s��f�W�fx�s�s�s�s�s�s�s�s��Ws����fs�s��W���)�s�s�9�s��s��f��s�s�s�9��f�Wx��s�s�s�9�s�s��fs����fcW�s�s�s��WcW$$s�s��WcWW��s�s�s�s�s�s�s�s��W9���s��f$$s�s�$$��s���|x�s�s�s�s�s��0x��W�09�s�s���)�x��fs�s�s�s�s�s�cW�(�W�s�s�)�x�x��Os�s�s�s��W�@���s�s��WcWs�s��09�$$x�s�s�s�s�s�s�s�s�s�s�s�x��Ws�$$��Wx�s�s�s�s��WcWs��f�@rC9��Ws�s�s�s��Ws���9�s�s��09�cW�@s�s�s�x�9�|�s�s��cWcWs�cW�fs�s�s�s�s��Ws��Wx��W�Ws�s�s��Wx��!�s�s��Ws�s�x��|�s�s�s�s�cWx�s��W��rCs�s����f�!�Ws�ts�ts�s�s�s�s�s�9��W��cW�fs�|��ftttt��W�fx�9�t|��ftttt	9�t�W9�t
t�W�(��cWt
t��tt��9�t��t������t���ftt#tttt�ftcW�@tt�O�0�f9�tt ��t��t����t!t"���W�f�Wt$t*t%t'��t&�W9�t(�Wt))�)�x�t+t-�Wt,�@W�t.t/�fx�t0W�x��Wt2t[t3t@��t4t5t9��t6��t7��t8�@��t:t=t;����t<��x�t>��t?����x�tAtK��tBtCtF��tDtE����x�tGtI��tH��x�tJ��x���tLtQtM����tN��tOtP����x�tRtXtStUtT��9�����tV��tW���f��tYtZ����|�t\tht]tct^��t_����t`tatbx��@$$��td��te��tf����tg9���ti��tj��tk����tltm����tn���Wtpu�tqutrt�tst�ttt�tut~tvt{twty$$txx�$$tz$$x�$$t|$$$$t}$$�tt�$$t�$$t�t�)��f$$t�t�t�$$t�$$x�$$t�cW���ft�$$t�$$$$t�t�$$�0$$t�t�t�t�t�t�$$t�$$t�$$t�9�$$t�$$x�$$t�t�$$t�t�$$t�$$$$4Pt�$$t�t�$$�f�f$$t�t�t�t�t�$$$$t�$$t�x�$$t�t�t�$$�^$$$$t�x�$$t�t�t�t�t��@�$$$$t�$$t�$$�ft�$$t�$$�f��t�t�t�t�t�t�t�t�t�$$$$t�$$t�$$x�t�t�t�t�$$�f�f$$t�t�t�$$$$�f$$�ft�t�$$t�t�t�$$x�t�$$x�$$$$t�$$t�$$x�t�t�t�t�t�t�t�$$#s$$$$t�x�$$t�$$t�t�$$�f$$t�$$�ft�t�t�t�$$t�$$t��f$$t�$$�$$t�t�$$t��f$$$$t��t�$$�ft�ut�t�t�t�t�t�$$t�$$�f$$t�t�]��f$$t�$$t�t�x�$$t�$$�f�t�t�t�t�t�$$�f$$$$t�$$t�$$�ft�ut�ut�$$$$�f$$�f$$uuu�f$$�f$$uuuuu$$u	$$u
$$�f$$uuu
uu�f$$�f�fu$$�fu���f$$u$$$$uuu$$urC$$x�$$uu.uu(�uuu"u��u�u �u!$$�u#u%u$�x��u&�u'��x��u)u*�u+��u,u-���cWu/u�u0u^u1uAu2u9u3x�u4u5�f$u6cWu79�rCu8$rCx�u:u;u=x�u<9�$$u>��9�u?rCu@W�rCuBuO$$uCuDuFcWuE��0uGuJuH9�rCuIcWrCuKuMrCuL$$rCrCuN$$rC$$uPuQuZuRuWuSuUrCuT$$rCrCuV$rCrCuXrCuY$$rC�fu[$u\rCu]$rCu_u�u`umuauhubugucudrC$ueW�$$uf$$$cW��$$ui$$ujuk$$$ulW�$$unuzuoutupusuq�W|�ur$$|�9�$$W�uuuvuxrCuw$$rC$$uy$$$u{u�fu|u}�f�fu~$�fcW�f�Wu�u�u�u�u�u�u�u�$$$u�$$$u�$rCu�$$rCu�u�u�u�$$u�$$$$$u�$$$W�$$u�u��W)�9�u�$u�$$u�$$$u�u�u�u�u�u�u�x�u�u��W�f�(��u��Wu�u��f�W9�u�9�|�u�u��Wu��WcW�Wu�u��@�Wu�$$�u�u�u�u�u�u��@u�$$��W$$9�u�u�u�9��W�W�fu�u�u�u�u���cW�Wu�cW�Wx�u�u�u��)��fu�u�|�)�$$�Wu�v�u�v(u�u�u�u�u�u�u�u�u�u�����u����Ou�$$��u�u�#s���u���u���$$u�u�u�u�u�u��u�W�W�fu�u�$$u�����x���u�u���u�x��u���u�$$$$x�u�u�u�x�u�u�u�u����x�$$u�u�$$����$$$$u�u�u�u�u�u���x�$$cW�u�u��$$$$rCu�vu�u�u��u�u�u�u�x�$$u��u�$$$$u�$$�u���|���u�vu�vvvv�����O$$v�$$vv$$���Wv$$�Wv	vv
vx�$$)�$$$$v
��v�f$$vvvvvv��v��$$v�f���v��vx�)�v$$9�vv$vv vvvrC$$$cW9�v!v#v"��9��f9��0v%cWv&v'�$$��@v)vlv*vLv+v9v,v0�Wv-v.v/4P9�$$�Wv1v4v2�$$v3$$�v5v6|cWv7v89��W�$$v:vCv;v>v<v=��$$$$)�v?vB)�v@x�vA$$�$$�fvDvGvE�fvF$$$$|�vHvJvI�����fx�vK�x�vMv_vNvYvOvVvPvUvQ��vR��vSvT�(9�$$��$$��vWvX��$$��|vZv\$$v[)��v]v^����cWv`ve�fvavbvc��$$��vd��$$vfvivgvh��W�$$�fvjvk�W9�$$��vmv�vnv|vovtvp�fvqvs$$vr�����fvuvw$$vv��$$vxvy$$�0vzv{$$��$$�@v}v�v~v�v�Wx�$$$$v�v�x�$$��v��Wv�v����v�$$���fv�v�v��9���v��v���fv�v�v�v�v�v�v���v�v�v�v�v�v�v�v���$$$$���Wv�)�$$v�v�$$��v���$$|�$$v�v�v�v�v�v�v�v�|�v��f$$$$��$$v�v��Wv��$$v�|���v�$$��v�v�$$v�v�v�$$�f|�$$$$v�v�v���v���$$|��fv�v�v�v�v�v�v�v�v�v���$$$$��)�v�v�����cWv�v�v���v���v�����v�$$��v�v�|�v���v�v�x��$|�v�v�v�v�v�v�x�v�|�$$v�x����v�v��W�v�9�|�$$v�v�v�v�v�$��$$�$v��$$v�$$�Wv�v�v�v�v�v�v�v�v�$$$$x�v�v��x�x�)�v�v�|���$$v���$$v�v�v��fv�x�$$��v�v���$$v�$$�W��v�v�v�v���v��$$v�$$v�$$�^$$|�v����Wv�w=ww wwww
www��$$��ww��w��$$$$w	#s$$wwww
\�$$�fw�f)�ww9���$$w���fwwww$$w|�$$w�Ww|�$$�fwwww����$$w$$�f9�w!w-w"w&|�w#w$w%$$�$$�w'w*w($$w)$$��$$w+w,�W$$��$$w.w7w/w4w0w2w1$$$$|�w3$$��$$w5$$$$w6�f)�w8w;w9w:$$9��W���w<��$$w>wVw?wE�w@wAwC�wB$$9�wD���wFwMwGwI�wH���(wJwL$$wK$$rC9��fwNwQwOwP$$�W��$$wRwT��wS��$$$$wU$$�wWwgwXw_wYw\wZw[$$�W$$��w]w^��|�|�$$w`wbwa$$|��Wwcwe$$wd��$$$$wf$$�whwowiwlwjwk$$rCW���wm�fwn�$$�f|�cWwqx�wrw�cWwswtw|cWwucWwvwwcWwxcWwycWcWwzcWw{�fcWw}w�w~cWcWwcWw�cWw�w�cWcWw�cWw�cW�Ww�cWcWw�w�cWw�cWw�cWcWw�w�cWcWw�cWw�|�cWw�w�w�w�w�w�w�cWw�cWcWw�w�cWcWw�cWw�cWw���cWw�w�cWw�cWw�cWw�w�cWcWw�w�cWw�cWcWw��cWcWw�cWw�w�cWcWw�cWw�w�cWcWw�cWw��WcWw�w�w�w�w�w�$$w�$$w�w�$$w�$$$$�fw�$$$$w�$$w�$$w��$$$$w�w�w�$$w�$$w�$$4Pw�w�w�$$w�$$$$rCw�w�$$w�4P$$w�$$�$$w�w���w���w�w�w���w���w�x���w�w���w���w���x�w���x���w�w���w�w�����w�w�����w�����w�w���w�w���w���v���w�w���w���w���x���w���w�����w�xOw�x2w�xw�w�w�w�w�w�w�w��fw�w��f�f��fw��fw��f��fw�w�w��f��w���fw��w���fw��fw��f�x�x�x�x����xxxx�x�x�x	x
��f�xxx
xx��x�x�xx�x�x���fx�x��x�f�xx&xxxx�����xx���x x#�x!��x"���W��x$x%cW�@�x'x0x(x+x)���x*$$cWx,x.�x-���x/�����cWx1cW�fx3x=�x4x5�x6x:x7�x8x9�����#s�x;�x<���x>xCx?�x@�xA��xB�$$xDxGxE�f�fxF��fxHxL�fxIxJ�xK��f��fxM�xN��fxPx�xQxixR�xSx^xTx[xUxWxV��f��xXxYxZ�fx�x���x\x]#s�#sx_xfx`xdxaxb#s�xc�f�f�xe�#s�xg��xhx��xjxzxkxp�xlxm��xnxo���fxqxu�xr�xsxt�$$�xv�xw�xxxy�x�x���x{�x|�x}x~x��9�x��Wx�x�x���x�x�x��x�x��x���x�x��x���x�x�x�x��x��x���x����x�x�x��x���x��f��x�x��fx��f�x���fx�y�x�yHx�x�x�x�x�x�x�x�x�x�x�x�$$x�$$x�$$x�$$x�$$x�x�x�$$��x�$$rC$$x�$$x�x�x�$$x�$$x�$$�x�x�x�$$x�$$$$x�x�x�$$#s�f$$x�$$$$x�x�$$x�$$$$x�x�x�x�$$x�x�x�x�x�$$$$x�$$�f$$x��W$$x�$$x�$$|$$x�$$x�x�$$x�x�x�$$�0x�$$x�$$x�$$x�x�x�$$cW)�4P$$x�x�$$x�x�$$x�x�x�$$$$x��$$x�x�$$x�$$�x�$$�$$x�x�x�x�$$x�$$x�x�x�$$��$$$$x�x�x�x�$$$$x�$$x���$$x�x�x�$$��x�$$x�x�x�$$�f$$�f$$x�x�$$$$x�$$�x�y"x�yx�y��x���x�yyyy���fy���f��y��yy���f�f��y	yy
����yyy
�f��yy���f�f��yy��y��yy�f���fy��yy�f��y���f��y��y��y��yy y����9���y!���y#y7y$y-y%y)��y&y'��y(����x���y*y+����y,��9�y.y2��y/y0���fy1�f����y3y4����y5y6��$$��y8y=��y9��y:y;��y<�����Wy>yCy?����y@��yAyB���f��yD����yE��yF��yG]��yIy�yJygyKy^yLyS��yM��yNyOyQ��yP�����yR��9���yTyUyXyV����yW���yYy\yZ��y[�������y]�f����y_y`��yayfyb��ycydx�����ye��x���x�yhytyi����yjykypylynym����x���yo��x�yqyr��x�ys��x���yuy�yvy}ywyy��yx���@yzy{�@��y|�����@y~��y����y���y����y�y���y���y�y���x�����y�y���y����f��y���y�y���y���y���y�y�����y���y�cW����y���y���y�y����fy��f��y�{�y�z�y�zy�y�y�y�y�y�y�y�y�y�y�y��W����y��@9�y�y���$�W�y�y�y�y�x����WrC�Wy�$��y�y�y�y���y�9�rCy�y�y�)��gv|���y�y�y�y�rC��y���cW�y�y��0cWcW�Wy�y�y�y�y�y�y�9��W��9��W�@y��Wy��rCy�y�y�y�y�y�9�y��W9�9��O9�y��fy����^y�y�y�y��cW���y�y����@)���y�zy�y�y�y�y�y�y��Wy�9����Wy�y��y�$$cW�f��y�y�y�y�$$�9���y�y�y�$$W�9�rC�Wy�y�y�y�y�y�y�9����Wy��0�(��y�y�y�9�rC�!�frCy�y�y�y�cWy����W����y�y���#s#sy�y��W��z���Wzzzz	zzzz���W�W�@z�W�$z
z
�zzrC���z����0��zzzz���zz�09�|�z9�cWzzRzz5zz(zz �z�zzz�W���f�Wz!z$z"z#x�9�9��fz%z&rCgvrCz'�#sz)z0z*z-z+z,��9��W)�z.z/�f��$cWz1z2cW�Wz3z4�W9��f�^z6zEz7z<z8z:9�z99�cWz;cW���0z=zAz>z@z?�W�f���W9�zBzD}�zC)��frC�fzFzMzGzJzHzI�f�W)�x�zKzLrC���W�WzNzOzQ�WzP��f�W�fzSzpzTzazUz[zVzXzW9����fzYzZ��9��f9�z\z^)�z]���Wz_z`�@)�|��zbzjzczfzdze9�����zgzhcW�cWzicW�zkznzlzm)��W����zo�rC�Wzqz�zrzyzszvztzu��$|��zwzx�@�f����zzz}z{z|W��^�W�z~z�@�z������z�z�z�z��fz���z����z�z��z��@�Wz��|cW�0z�z�z��W�z��W��z�z��0����9�z�{z�z�z�z�z�z�z�z�z�z�z���z�z��W�|�!9�z�z�$$9���)�z�z�$$z����z��@x����fz�9��fz�z�z�z�z�z�z�z��W�fcW�fz�z���fz��W�@�f�z�z�z��W��W)�z�z�z�z�z�z�)�z��f�(z��f�(�f�fz��f|�z�z��fz����f��z�9��z�z�z�z�z�z�z�z�z�9��9�z�W�9�z��WcWz�z�z�cW�fcWz�z�9�z�cW9�cW�Wz�z�z�z���z�z�z��W9�9�cWz�z���9��f9�cWz�z�z�z�9��W��fz��^cWz�z�z�z�z���cWz�z��(cW��z�z�z�z��Oz��f9�9��z���W�z�z�z�z�z�z�����Wz�z��Wz��9�z�z�9�cWcW)�z�z�z�z�z��f)�9�z�9�9��({{9�{|�W�|�x�{{>{{��{{{{{
{	{��{
�f#s9�{�W9�{{�0�W{�W)��W{{{{{{���)��f9�|�{{�f{��cW)�W�{{+{{${{ {�(W��W{!{#�({"�(�@9���{%{({&�W9�{'���0{)9��0{*�0�({,{5{-{1{.{/�WW��f{0�W�{2{4{3x���x��O�@{6{:{7{8�f�^�{9�(${;{={<�f�f$��f{?{^{@{P{A{F{B{D{C�f�f����{E|�f{G{J�f{H{I�W$gv{K{MW�{L�09�{N{OcW$$�W|�{Q{X{R{T{ScW9��f{U{V9���cW{W�W��{Y{\{Z{[�f�W��#s{]x�)�$${_{p{`{g{a{c{bW��W9�{d{e)��@{f�WcW4P{h{l{i{k{j�f�!9�cW9�{m{n��9�{orC�@rC{q{|{r{w{s{t�09�{u{v��f�f�{x{y�0cW{z{{�fx�x��W{}{�f{~#s)�{��W{�#s�fcW{�|t{�{�{�{�{�{�{�{�{�{�{�{�{��W9��@�W{�{�9���9�{�{�{�{�9�|�9���{�{�{����f9��(W�{�{��f{�{�{�{��f�!�O�f{�����{�{�{�{�x�rC�f��{�9�{����W9�{�{�{�{�9�{�9�{�9�|�{�9�{�{��f��{��f|���{�{���{�{�{���{�$�f#s�f{�{�{�{��)���)��{���{���x�{�{�{�{�{�{�{�{�{�{�#s9�{��f9��f{�{�{�{��fW�9��fW��({�{�{��{�{�|9�9��^{�{�9���{�cW�0�f{�{�{�{�{�{�9��f{��W�(x�{�{�{�{��frC9��@{�{���|�$�{�{�{�{�9�{�rC9�{�{�gv9��f��{�{�{�|���W|�9�{�{�{�{���9��f{�{�{��f{��fcW{�{�)��f)��|{�{�{�{�{�{��f���@{����@{���f��{�x�{��f��{�|A||$||||
||||�W|���W���!||	9�x�x���||
x�|x���|�f|�W#s�f||||||��9��O)�||cW|��f|�f�f9�||!||�f|�f��|| 9��f�f���f|"�f|#�f��|%|3|&|+|'cW|(|*|)�W9��f�O�W|,|0|-|/|.�f�fx�#s�f�W|1|2�f9��f|4|;|5|8�f|6�f|7�f�W|9|:#s�����f|<|?|=|>�f�!�W�f�W|@��x�|B|QW�|C|D|G|E�f|F9�|�9�|H|L|I|K|J9��W�����f|M|O��|N��9�|P�W�f�W|R|e|S|^|T|X|U|V�W|�|�|W�W||Y|\|Z|[�f9��f��#s|]gv�W|_|`�W9�|a|c9�|b9��f�f|d9��f|f|o|g|l|h|j|i�W9��W|k�f�W9�|m|n�f9��(�f|p|r��|q�@)�|s��9���|u|�|v|�|w|�|x|�|y|}|z�f|{||�(�W�f�W|~|�|�f�f|��f�|�|��f�|�|��f|�|�|���rC$���fW�|�|�|�|�|�|�|�|�9��W��f��f�f|��W9�9�|�|�|�|�9���9�9�|�9���|�|�|�|�|�|�9�|�9�|�9��f|��f�f9�cW|�9�|�9�|�9��@|�|�|�|�9��|�9��f�|�|�|�9�|��W�@9�|�9�9��W|�|�|�|�|�|�|�|�|�|�cW)�rC�f|�|��f9�|��f�f|�|�|�|�|��f|����f|�|�9��W�W$$gv|��W9�|�|�|�|�|��@�W9��W|�|�x��WcW|�|��f�|�|���cWx���|�|�|�|�cW|�|��f|��f���f|�|��f|��f9�|�|�|�9�cW9�9���|�|�|�|�|��@9�|�9��W�@|�rC����|�|����x�|�}��|�|�|�|�|�|�|�|�|���(�(|�x��f|�|���W�W|��f|��f|���9�|�|�|�|�|�|�|��f|�9����f|��f�@#s|�}|��f�f�cW}�9�}}(}}}}}}
}}�f��&}	�fcW}}
�^}9��(9�|�}}}}|��frCW�}}�}cW�(}}�f�?$$x�}}!}}}cW}9��W$$}} �W}�W���(�f}"}&}#}$�W�(}%�W���f�f}'�W��})}/�f}*}+}-},�W�f�W}.�f�W�f}0}8}1}4}2}3�W�f�f��}5}6��f��}79��f}9};}:9���|�}<}>}=�f�^9�W�9�}@��}A�}B~o}C~*}D}�}E}�}F}_}G}T}H}N}I}K}JsG�k	Y}L}M�	Y��}O}Q�}P+���}R}S
�	YsG	Y}U}[}V}Y}W}X
����	YsG}Z�sG}\}]sG	Y�}^sG	Y}`}o}a}h}b}e}c}d	YsGsG
�}f}g�	Y�sG}i}l}j}k�sG	YsG}m}n�sG��sG}p}v}q}t}r}ssG	Y��9sG}u	Y�9}w}z}x}y���U�	Y}{}|sG�sG}}}~}�}�}��}���}��}�}��sG�}���}��}��}�}��}��sG�}�}�}�}�}�}�}�}�}�}��9sG��	YsG�}�}�}�}�sG��sG�}��	Y}�}�}�}�}����sG}�sG�}�}�}�}��sGsG�"}�sG�sG}�}�}�}�}�sG}�	YsG�}�}�	YsG}�	Y	Y	g}�}�	Y}�}�	Y}�	Y}�	Y}�	Y	Y}�	Y}�	Y}�	Y}�}�	Y	Y�1}�}�	Y}��U�}�}�sG	Y	Y}�}�	Y	Y}�	Y}�}�	Y}�	Y}�	Y}�	Y	Y�}�}�}�}�}�}�}�}�}�}�	Y}��	Y}�	YsG	Y}�}�	Y}�	Y	�}�}��sG	Y
�}�}�	Y}�}�	Y	Y�}�}�}�}�
���EsG}�}���	Y�	Y}�}�}�}�}�}�}�	Y�sG�}�sG�	Y}�}�}��	Y	Y	g}�}�}�}�}�}�	Y�U	gsG	Y}�	Y+�}�}�}�}�sG	Y�	Y�}�	YsG}�~}�~}�~	Y}�~	Y	g	Y~~~�	Y	�	Y~	Y�~~~~
~		Y�E	Y~	Y	Y�~
~	Y~�	Y~~	Y	�+�	Y~~~~~~~	Y	Y�	Y~sG�~~sG	Y~~��	YsG�~~$~ ~"sG~!	YsG~#	Y	YsG~%~(~&~'�9	YsG	Y	Y~)sG	Y~+~E~,~0az~-az~.~/azv�az~1~7~2~4az~3w�gC~5~6azgCgCaz~8~?az~9~:~=~;~<kXazkXaz~>azazkX~@az~A~C~BazkXazaz~Dazw~F~b~G~UwU~H~I~O~J~M~K~LkXv�v�az~Naz�KkX~P~Raz~Qv�kX~S~TkXazwUv�~V~WazkX~X~\kX~Y~Z~[v��azj~]~`~^~_kXv�wazaz~akXaz~c~i~d~faz~ev�az~gazaz~hazb�az~jaz~kw~l~m~nazv�azkX~p�~q�~r�~sJ~t~�~u~�~v~�~w~�~x~�~yv�~z~~~{v�v�~|~}v�wv�v�~v�~�wv�~�~�~�v�v�~�~�v�v�w~�~�~�~�~�v�v�wv�~�azv�~�v�v�~�v�w~�~�~�~�t�~�t�~�t�~�azt�~�~�t�~�~�t�t��~�~�t�~�kXazt�~�t�u�~�~�t�~�t�~�~�t�t�~�~�wt�wt�~�t�~�t�~�wt�~�~�~�~�w~�~�~�w~�~�~�wazww~�~�w~�wazw~�~�azv�w~�~�w~�~�ww~�azw~�w~�ww~�azw~�~�~�ww~�w~�w~�azw~�~�~�w~�w~�www~�~�w~�w~�azw~�w~�w~�w~�ww~��Kw~�w~�ww~�~�~�~�w~�ww~�waz~�w~�~�~�wwaz~�w~�ww~�azw~�~�~�~�~�~�t�~�~�~�~�t�~�t�t�azt�~�t�~�azt�~�~�~�t�t�~�~�t�t�az~�t�t�~�~�t�wt�~�~�~�~�~�t�wt�wt�t�azt�t�t�az
t�	t�t�w
t�wt�t�wt�t�t�t�t�t�azwwwv�v�v�wwv�v�w) w!w��"#w$&%��w��'(az����w*A+4,0-v�.v�v�/wv�1v�2v�3v�v�az5=697v�v�8v�wv�:;<v�azwv�>v�?v�@v�azv�BwCwv�Dv�Ev�FGwHIv�azv�wKwL�MuNfOYPTt�Qt�Rt�St�wUt�Vt�t�WXt�wt�Z^t�[t�\t�]t�az_b`t�t�at�wt�cdet�wwt�t�ghlit�t�jkt�t�azt�mnsort�pt�qazt�t�azt�tt�wvwwwx|wyzw{wazww}~w�wazww�w�w�w�w�w�t�t��t�az�������v��v��v��az��v�az�az�v�v����azv�v��v�azv���azv�az�az���������m���mm�azm���mmaz�mmaz�mm����mazm�mmazm���m��m�mmaz�azm���m�m�mazmaz�az�az�azm��azm�maz�az�az�az�az����t��azt��t�t�az���t��t�t�az��t�azazt�����az������azaz�1�1az������1�azazw��������az�azaz�wazwazaz�v�azt��azt�������t�az�t�t��s�t����t�azt�t�az�azt���azt�az����
t����1���1��azazwaz�az�	azt�w�waz�
�az�az�az��azazv�waz��w|���H��1��!��az�w�az�b�gCaz�w�az� azkX�"�.�#�$gQv��%�'az�&azwaz�(�)az�*�,az�+v�b�az�-b�w*az�/�0v�v�az�2�7�3az�4az�5�6v�azkXaz�8�F�9�D�:azaz�;gQ�<�=az�>az�?az�@az�Aazaz�B�CazazgQaz�Eazwaz�Gazw�I�]�J�Vaz�K�L�S�Mazaz�N�Oaz�Paz�Q�RgQgCkXazaz�T�UazazgC�W�\�X�[az�Yaz�ZazgCazv�azv��^�q�_�aaz�`waz�b�o�c�e�dazazgCaz�f�gaz�haz�iaz�jaz�kaz�laz�maz�nazgCaz�pazazkX�r�vaz�saz�taz�uv�azazv��x���y���zaz�{��|az�}az�~azazgC��������������az����azv�azv���������azv�azv�����v�azv�az����az����������azv�azv���azv�az������azaz������azv�azv���azaz��azv�������az��az��az����az��azv���azazv���az����azv�v�az��az��az��������azb�az��azgC��az��azgC��gCazw������w��az��w��waz����az����w��w��wazwwaz����az�������������m���+�����������)�������az��������az��az��azaz��az��azw��������az��az��az��azw��az��az��azwaz��az��azaz����azazw����az����azaz��az��az��az��azw����az����azaz����az��azazw����az������az��az��waz��az��azwaz��azaz���azaz�waz��az�az��az��az��	az�
azwazaz��
az�azazw��az��az�az��az���azwwazaz��azazw��"az��az�az� azaz�!wazaz�#az�$az�%az�&�'�(wazazw�*�{�+�R�,�3�-azaz�.az�/�0azaz�1�2azwaz�4�C�5�:az�6�7azaz�8�9azazw�;�?az�<az�=az�>azw�@azaz�A�Bazwaz�D�I�Eaz�Faz�Gaz�Hazwaz�J�Naz�Kaz�L�Mazazw�Oazaz�P�Qazwaz�S�c�T�Z�Uaz�Vaz�Waz�Xazaz�Ywazaz�[az�\�]�`az�^az�_azw�aaz�bazwaz�d�j�eaz�fazaz�g�hazaz�iazw�k�v�l�oaz�maz�nwaz�p�saz�qaz�rwaz�taz�uazwaz�waz�xaz�yaz�zazwaz�|���}az�~���azaz����az��az��azazw��azaz��az��az��az��azw������������az����az��az��azwaz��azaz����az��azazwaz����az��az��azazwaz����az��az��azaz��az��waz��w������azaz��az��az��az����az��az����azwwazaz����waz��az����w��wazw������z���&����������������az����azaz��azw��azaz��az��azw����������az��w����azwwazaz������az��waz��azazw��az������az��azazwaz��waz����������az��azaz��az��azw��azaz����azazw��������az��az��az��azw��az��az��azwaz������azaz����azazw��az����az��azwwaz���
���az�����az����az��wazw�az�azaz�waz�azaz���
�azaz�	azwaz�az�azw��az���az��az�azazwaz�az�az�waz��!az���az�az�waz�az� azwaz�"azaz�#�$azaz�%waz�'�N�(�6�)�/az�*az�+�,az�-az�.azazw�0azaz�1�2azaz�3�4�5wazazw�7�=�8azaz�9az�:az�;az�<waz�>�I�?�Caz�@�Aaz�Bazwazaz�D�E�G�Fazazw�Hazazw�Jaz�Kazaz�L�Mazwaz�O�j�P�[�Q�Vaz�R�Saz�Taz�Uazwazaz�W�Xazaz�Y�Zazwaz�\�e�]az�^�baz�_�`�aazwwazaz�c�dazazwaz�faz�gaz�haz�iwaz�k�saz�l�maz�naz�o�qaz�pwazaz�razwaz�taz�uaz�vaz�w�x�ywazazw�{���|���}���~azaz�az����azaz����azwaz��������az����azaz����azazw����az��az��az��azw��azaz����azwaz������az������az��azwazaz����azazw����az��az����azazw��azaz����azwaz����������az��az��az��azaz��wazaz��az������az��az��azw��az��azwaz������az��azaz����azaz��azw��������az��az��waz����az��az��waz��az��azwaz����������az��azwaz��azaz��azwaz��az����azazw��������az����azaz��az��az��az��azwaz����az��azaz����az��azwaz���������������az��������azwazaz��azw��az��az��azwaz����az����az��azazwaz����azaz��azwaz����az�az�azaz�waz��
�az�az��
�az�	azazwaz�az�azw���az�azaz�az�wazaz��az�azaz�waz�w��$�azaz�az�az�az�� az�!az�"�#azwwazaz�%�&waz�'az�(�)w�*wazw�,�?�-w�.w�/waz�0�1�8az�2�3az�4azaz�5az�6�7azazw�9waz�:az�;�<w�=w�>wazw�@w�Aw�Bw�C�X�Daz�Eaz�F�S�G�O�H�Laz�I�J�Kwazwaz�Mazaz�Nazwaz�P�Qaz�Razazwaz�T�Uaz�Vaz�Wazazw�Y�f�Z�`�[azaz�\�]azaz�^az�_azwaz�aaz�b�caz�daz�eazazw�gwaz�haz�i�jw�kw�lwazw�n���o�y�pw�qw�rw�sw�tw�uwaz�v�wwaz�xazw�zw�{w�|w�}w�~w�waz����waz��azw����������w��w��w��w��w��waz��az����wazw��w��w��w��w��w��waz��az����wazw��w������w��w��w��w��w��waz����w��wazw��w��w��w��w��w��waz����w��wazw������azt���t�m��az��az��w��w��wazwaz��az��w�az���+��������������az��az��azaz��azkX����������������wU��wUazb���v�b�az������wkXw*kX����azgC��������kXgCv�wgC��kXj��kX��az��az����kXazkXaz������������������az��azb�az��azb��K������azaz��waz��azv�azaz��v���azb�����azjaz����azazkX��������az���������������gCazkX��azkXv�gCaz�az�azwU����	az�azv��
�gCazazkXw*�
v�wU��az�����az�v�kX�azkXaz���wUazwUwU�azwU�v��azb�gQ��$� az�!azaz�"az�#azw�%�'j�&jaz�(azu��)az�*u�az�,�x�-�H�.�;�/�5�0azaz�1�2az�3�4mv�waz�6�9�7v��8azkXazv��:gCaz�<�Dj�=�>�Aaz�?az�@azu��BgCaz�CazgC�Eaz�Fazw��Gu�az�I�Naz�Jaz�Kaz�L�Mazazw�O�e�P�Z�Q�Uaz�R�S�TgCazgCaz�V�X�Wazv�az�Yv�v�az�[�a�\�^az�]gCaz�_�`azv�v�az�b�cv�azaz�dgCaz�f�n�g�l�h�j�iazazgCaz�kv�azv��mazv��o�t�p�r�qazv�az�sazazv�az�u�v�wazv�v�gC�y�~az�zaz�{az�|�}azv�az���b�w��wb�w���������������H:@&@&az����������az����az��b�az����wU������az��w*���"kXb����Kaz��azaz��az������azkXb�gC����az��������������azw���������azgCazkX��azazkX������azaz��azwU������azv�kXt�kXaz��kX��������wUjwU��wUwUaz����az������az��azb�b�az������v���az��azwkXaz��az��������gQazgQ��gQ��gQ��gQ��gQ��gQ��gQ��gQ��gQ��gQazgQ������az��������azv���az��az����b�kXazv�������wwaz����az��wazw������wazazw������������az��az��azv�az��v�t���w��������w������wazwaz����az��t�ww��waz����az������wazazwwt��az���1azaz�az�az�az�az�az�az�	�
az�azaz��
azaz�waz�����_��+���azaz�az�az�az���v��� �az�az�kXkX��kXkXaz�!az�"az�#az�$az�%az�&az�'az�(az�)az�*azv�az�,�=az�-�.az�/az�0�;�1kX�2�:�3kX�4�5kXaz�6az�7�9kX�8kXazkXazazkX�<azkXaz�>�K�?az�@az�Aaz�Baz�Caz�Daz�Eaz�Faz�G�I�HazkXaz�JazazkX�L�T�M�Q�Nazb��O�Pazb�azgC�R�SgCwgC�U�Y�V�Wjazu��XkXgC�Z�[u�kX�\u��]�^�[gQazt��`���a���b�q�caz�daz�eaz�f�n�gw*�hw*�i�l�jw*w*�kw*az�mazw*az�ow*w*�pw*az�raz�saz�t���uaz�vaz�waz�xaz�y�~�z�}�{�|azkXazkXazkX�azkXazkXaz����������az��az��az��az��az��azazgC��azgCaz��az��az��az��az��azazkX������������������������������w����������waz��kX������������������������ub������������ubaz��������ub������ub����ubub����ub��������������gC�������������i���i�����i����������������������gC���J����������az��azaz��azw������������w��������ww��w����w����w��ww��wwwww��az��gC��az��az��az��az����gCaz��azgCaz����az����az��az��azazb�����kX��kXaz��wwaz��az��az��az��az��azRTaz���(���������az��az������azazkXkX��kXaz��������az�az�az�az�az�az�azgCaz�gQ�gQ�	gQ�
���az��
gQazgQazgQ�az�azgQaz�az�az�gQ�gQ���gQ�az�azgQazgQaz�az��&�az� az�!az�"az�#az�$az�%azubaz�'azv�azaz�)�*�@�+�<�,�4�-kX�.kX�/kX�0kX�1kX�2kX�3kX�MkX�5kX�6kX�7kX�8kX�9kX�:kX�;kXkXb��=kXkX�>�?kXazkX�A�I�BkX�CkX�DkX�EkX�FkX�GkXkX�HkXazkXaz�K���L�}�M�h�N�Y�Oaz�PgC�QgC�R�X�SgC�Taz�Uaz�Vaz�WgCgCazgCaz�Z�g�[�`�\az�]az�^azaz�_gQaz�aww�b�cw�dw�eazw�fwaza�az�iaz�j�q�kaz�laz�maz�naz�ob��pazazb��r�z�sgC�t�y�ugC�vaz�w�xgCazgCazazgCgC�{�|gCgCaz�~az�����az��az��azgQ��gQazv�������v�azv�az������������������az��azb�az����������w�w�v�����v�gQazv���������gCazazw*����aza�v�az��az��az��wc��az��azgQ������azgQ��azaz��azgQ��gC��������������gCaz��gCazgC����gCgCaz��gC����gCazazgCgC��gC��azgC��az������az����az����w��az��az����azw��az��azwazw����wazw��az��az��az��az�?����az��azw����az�?az�����������Y�������������az��az��az��az��az��az��az��az��azwaz��az��az��az��w��wazww����b����������������b�����azb���az��b�az��b�����b�az��b�b�����azb�azb���b�azb������b��azb�b��b���b�azb��b���b���	b�az�
�azaz��
az�az�az�azazm��gCazb�gC��.az���-��)�gC��'��"gC���!�gC�gCgC� azgCgCaz�#az�$az�%gCaz�&azgCgC�(gCaz�*azgC�+�,azgCazgCaz�/�7�0�2�1b�b�kX�3az�4az�5az�6azb�az�8�O�9�A�:kX�;kX�<�@�=kXkX�>�?azkXazkXaz�B�G�C�EkX�DazkXkX�FkXb��HkXaz�I�JkX�KkXkX�L�Mb�kX�NkXb��P�T�QkX�RkX�SkX�D�U�X�V�Wazu�kXjkXaz�Z���[�i�\�^�]v�kXv��_v��`v��av��bv��cv��dv��ev��fv��gv�v��hv�gC�j�v�kv��lv��m�u�nv�v��ov��p�qv��rv��sv��tb�v�b�b�v��wv��x���y���z���{v��|v��}v��~v�v��azv���v�v���gCv���������azv�azv���v�gCv�v�az��������������gQ������gQ��gQ��gQ��azaz��gQ��gQazgQ����gQ��gQ����gQ������������gQgQ����gQgCgQgQ��v���gQ��v�gQ��gQ��gQ��gQgQ��v�gQ��������gQ��gQ��gQv���gQ��gQgQ��gQ��gCgQgQ������v���������v�gQv�v�gQ��gQgQv���az����������kX��kX��azkX����kXkXaz��kXazkXkXaz��az��az��gC������gC��gCgC��azgC��gCgCgQ������������gC����gC��gC��gC��gC��gCgC��gQgC��������gC����azazgC����gC��gC��gC��gCv�gC����gCgC��gC����gCgQgCgC����gCgCgQgC��gC����gCgC��azgC������az��az��az��az�?az��azgQaz���j��L��A��.������
��kX�b�gCaz�	azkX��
�kXkXazkX�v�kX�����kXt�kXkX�mv�kX�kX�azkX��+��'��$�w*w*���#�az� az�!�"w*azazw*w*azw*�%w*�&w*azw*�(w*�)w*�*w*az�,az�-azw*azaz�/�0�<�1w�2w�3�;�4w�5az�6az�7az�8�:�9azazwwazazw�=w�>w�?�@wazwaz�Baz�Caz�Daz�Eaz�Faz�GazkX�H�Iaz�Jaz�KazazkX�M�T�Naz�Oaz�Paz�Qaz�Raz�Sazazw�U�a�V�^�Waz�Xaz�Y�[�Zazwaz�\�]wazwazw�_w�`waz�baz�c�h�d�g�eazaz�fazS�S�az�iazgCaz�k���l�!�m���n��o���p�zaz�q�r�sgCazaz�taz�uaz�vaz�w�xazaz�ygCaz�{���|��gC�}�~gC�gC��az������azv�az��azv�az����������az������az��azazgCaz����azazv���������az��az��azgCaz����azv�azaz��az����azazgC����az����������az��gCazaz��v�azaz��gCaz������������gCazgCaz��azazgC����az��az��gCaz����az��azgCazgC����������������������azaz��azgC��az��azgCaz����gCaz��������azgCazgCgC��azgC������gC��gCgC��gCaz��gCgC����gCgCaz������gCgC����gC��gCazgC��������gC����gCgCaz��gCgC��azgCgC����gC��gCazgC��gC��gC��gC����gC����gCgCaz��gC��gCazgC���	az����az���az������az����az��az��azaz��azgC��az��az������az��azazgC��az�azgCaz�az�azaz��azaz��az�azazgCaz�
az�az��
azaz���az�az�azgC�az�azgCaz��K��:�az��1��$��!��azgC�gCaz�az� gCazgC�"�#gCgCaz�%�)�&gC�'gC�(gCgCaz�*�.�+gCaz�,�-gCazgC�/gC�0gCgCaz�2gCgC�3�4�7gC�5gC�6azgC�8gCgC�9gCaz�;�Caz�<az�=az�>�?az�@azaz�Aaz�BazgC�Daz�Eazaz�Faz�G�Hazaz�I�JazgCaz�L�W�MgC�NgCgC�OgC�P�Q�T�RgCgC�SazgC�UgC�VgCgCaz�X�k�Y�b�Zaz�[azaz�\�]azaz�^az�_az�`az�agQaz�cazaz�daz�e�faz�gazaz�h�iazaz�jgQazaz�l�m�w�n�raz�o�p�qgCazazgC�s�u�tazgCaz�vazazgC�x�{az�y�zgCgCaz�|�~gC�}azgC���gCaz��az��azgCaz������������gC������gC��gC��gC��gC��gC��mmgCaz����az����az������az����azgCazaz����azaz��azgC����az��������az����azgCazgC��azaz��gCaz������az��azaz��gCaz��az��azaz��azgC��������������������az��gCaz����azgCazgC����azgCgCaz����������gCgCaz��gCazgC��������gCazgC��az��azgC������az��azgCazazgC������������az��azgCgCaz����gCaz��azazgC������az������gCgC����gCgC��kXgCgCaz������azazgC��gCgCaz����������������gC��azgC��azazgC����gC��azgC��azgCaz������������az��az��azgCaz��gCazaz��gC��gCaz��az��azgCaz�gC����azgC��gC�gCaz�gCazgC�	gC�
gCazgC��az�
�azaz�az��azaz��azaz�gCaz�az�azaz��az�az�az�azaz�azgC�gC� gCgCwc�"���#�r�$gC�%�R�&�K�'�7�(�1�)gC�*gC�+gC�,gC�-gC�.gC�/�0gCazazgC�2gC�3gC�4gC�5gC�6gCjgC�8gC�9gC�:�F�;az�<�@az�=az�>az�?azgC�Aaz�B�D�CgCgCaz�EazgCaz�GgC�HgCaz�Iaz�JazgC�LgCaz�M�NgCaz�O�PgC�QgCazgC�S�Z�TgCaz�U�VgCaz�W�XgC�YgCazgC�[gC�\gC�]gC�^�k�_�e�`�b�agCt�v��c�dt�gCv�az�f�i�g�hv�t�gCt�t��jgCaz�lgC�m�p�n�ogCt�t�gC�qgCazgC�sgC�tgC�u��az�v�waz�x�}az�yaz�zaz�{�|azazgC�~az�az��az��azgCazaz����gC��gC��gCaz����gCaz��azgC����������gC��gC��gC��gC��gC��gC��gC��gCazgC������gC��gC��gC��gC��gCazgC��wazw������gC������gC��gC��gC��gCaz����gC��gC������azazgCaz��azgC��gC��gC��gC��gC��gC��gC������az����azgCazgC��gCaz��azgC����gC����gC��gC��gC��gC��gC��gC��gC��gCazgCkX��RTgC��azaz����������azkXazv��������d�����������������az��az��az�����?��az������������kXgCazt�jaz����ju�kX��az�[����v�����kX������kXkX��kX����azkXazkX����kX��kXkX����kXgC��gCkX��az��������azb���b�b�azb�az������w����ww��wazw�az�az�az�az�az�az�	��
az�gCazgCaz�
gCazv�gC��,��&�����������������az�azaz���������az���az��� az�!kX�"az�#az�$kX�%b�kXw�'azw�(�)ww�*�+azwb��-�]�.�U�/�3az�0�1az�2azb�az�4�M�5�C�6�BgQ�7�8�=�9gQ�:gQ�;�<gQazazgQ�>�?azgQgQ�@�AgQgQazazgQ�D�F�Ev�azgQ�GgQ�Haz�Iaz�JgQ�K�LgQazgQaz�N�SgQ�O�Pazaz�Qaz�Rb�gQgQ�TgQazgQ�V�W�Z�X�YgQu�u�gQgQ�[�\gQu�gQ�^gC�_�`az�yaz�a���b�c��az���e���f�k�ggCw�h�iw�jazwaz�l�x�maz�naz�oaz�paz�qaz�rb��saz�t�waz�u�vazb�azb�azw�y�zaz�{az�|az�}kX�~kX�az��az��kXkXaz��������������w����w��waz��w����wazwaz��������az����azazkXkXaz����az����az����az����gQazgQ��az��azgQaz������gQ��gQ��gQt�gQgQ��gQ��gQ��gQaz������az������gC����gC����gC��������az��gCaz����azgC��azgCazgCaz��gCgC����az��az��az��az��az��az��azgCaz��gC������gC~gCgC��gCaz��az��az��az����b���mb���azb�az���]�������������i����az��az��az��azwaz������gCgC����gC��gC��gC��azgCaz������w����b�w��b���b���az����b�����azb�azb�az��az��az��azgCaz������az��az��az��az��az�az����v���v�����azv�azw��waz���6��az��gCgC�gC��gCazgC��%���	��
��gQazgQ�
�gQu��gQgQv����u�u�gQu�az��!���gQu����gQwv��gQb���azgQgQ�� gQw�b�gQ�"�#�$gQwkXgQ�&�)w�'w�(waz�*ww�+�,�-ww�.�/w�0�3w�1�2azwaz�4w�5wazw�7�P�8�A�9�=gC�:�;gCgC�<gCaz�>gC�?gC�@gCazgC�B�H�C�E�DgCazv��FgC�GgCazgC�IgC�J�NgC�KgC�L�MazazgC�OgCgC~�Q�U�Raz�S��Taz�az�Vaz�Waz�X�\az�Yaz�Z�[azazwazw�^���_�~�`�n�a�h�baz�caz�d�f�eazazgQ�gazgQaz�i�lw�j�kwwaz�mazwaz�o�pwaz�q�|�r�w�s�ukX�tkXazkX�vazkX�x�{�y�z�[gQazt��[u��}azkXaz���gC����gC������gCgCazgC����gCgCaz������az��az��az��v�v�azw��w����ww��w��waz��������w��gCaz��az��az��az��azw*az��az������azw��w����wwazaz����az��az��az�az����������������������az��������az����az��gC����azgCaz��������azb���azb�j����azwwj����v��������az��azaz��v�azazw������������������sG��RsGJ���������@������sG�����d@��@��@@��@��@��@��@����@�o@+;sG��	YsG���������������sG����sG@��������+@���jsG+���������sG;sG����sG������sG+[k������@
�R��sG���������		��	I��		��0q�R���sG��+;��zsG�	��
�
���@@����lxsG���@sG�sG;�sG�sG����@�z��+�R+���
��G� �D�!�B�"�8�#�5�$�%+sGsG�&���'���(���)�*���+�0���,�-���.���/�������1�����2�3�����4�����6�7[
K@�9�@��:�;�>�<�=sG�k�ksG�?sG��sG�AsGK
�CsG+��E[�FzsG�H���I�q�J�P�K�MsG�L�@�N�OsGK�_�Q�T�R�SsG_K�U�]�V�_�Wlx�Xlx�Y�[�Z��lxdN�\����lx�^���_�h�`���a�b��c��d��e��f���g����i��j��k���l�m��n��o��p�����r�y�s�v�t�u
@sG@�w�x����z�}�{�|sG+_�_�~��z�@���@sGK�������������_sG@sG��������z��z��z����z��z��zz����zz��z����z
���sG@sG������sGsG����sG��*@sG����sG����	v���i���	���������{r������{r������{re����lx��lx{r�lx��������e����O�lx�e������!��ՙ��lx�����lx������������ՙ&Q�����������e����������������e�w�{r��{r���������{r��{re{re��������{ree{r{re��������{r���e��������e{re�e�������{re��{re�����e��ee{r������Q����������������*lx��lx�Hlx����lx{rlx��������lx�*�wlxlx����lxlx�.��lxlx����lx����lxeelx��e���lx�lx��ՙlxՙ�lx��ՙbb�b�blx�
�`��2���
{r�e�����e�elxbe�elx�����lxlx�wlx�lx�wlxe��H��(lx�� �$e�!�"�#(�|�*���%�v�&�'O!b{r|:�)�.�*e�>�+�,�-e�Nb���/ee�0�1e{r!��3{r�4�K�5�=�6�<�7�:�8lxb�9�]���w�;elxlx{r�>�?�ee�@e�Ae�B�Cee�De�Ee�F�Ge�Hee�I�Jee{r�L�T��M�N�Q�O��H�P�|:�R��S��O�U�]�V�Z�W���X�Y!blx{ree�[e�\�mee�^�|�_ՙdN�ae�b{r�c{r�d{r�e{r�f{r�g{r�h{r��{r�j���k���l�w�me�n{r�oe�pe�q�t�ree�s��e�ue�v{re���x{r�y{r�z{r�{{r�|{r�}���~�{r���O����{r!�!b{r����������Q�e����������������Q�Q�!b������ O��O|:�������Q��*���*� �������lx������lx��lx��{r����ՙlx�R{r��lx���{r������|:����lx������lx��lxlx����lxlx��1�lxlx����lx����lx������1�lx1�lx��lx��lx1�lxlxe������������lx������{r��e{r�����H��!brX��lx��ՙ{rQ���{r����������������e�w��lxrI������1�����lx��lx��lx{r��1�!b��{rrX��lx��lxlx��lx��{rlx���'������{r������{r����{r����{r��O{r�w{r����������{r1�|:*���{r{rO{r��{r��ՙ���������b�b����9��{r������������e�������e�w����{re�����we��e��e������� ���rX�������{r�	�
 "Z|�)���
���N!�)�w{r��{r�!b����ՙ{rdN�v��"�e�����ee|:�e��ee�� �!e�v����#e�$ee�%e�&e{r�(�|�)�u�*�T�+�5�,�2�-�0�.���/e)e�1e�we�3ee�4eO�6�E�7�>�8�;�9�:,�Ne���<�=,*�ؒ��?�B�@�A|�,�� ��C�D*��ؒ,�F�M�G�J�H�I �Q���|��K�L,*��N|��N�Q�O�P,Q��N��R�S,�N|�,�U�f�V�Ze�W�Xe�Yee|:�[�a�\�^e�]eO�_�`Oe�e�b�d�cee�we�e)e�g�n�h�ke�ie�jedNe�l�mee ��o�re�pe�qe���se���t��ee�ve�w�xe�yee�z�{e��e�}{r�~e�����e��e��edN��1�e��e��e9���*dN����Zz�������������������������������������������������������������������sG@sG����K��������������������������������@��@@����@@�������@��@@�����@��@��@�������@�@@���@��������@��@���@��@��@�@��������@�����@��@@���sG�����@���@��@��@��@����@����@��@�������������@�sG_����������������
@����KsG@sG��������_sG�� sG�������sG+sG�sG�������������J�������������������������������	���sG
�
��
���
���/���/�		�/�����0(				�R��//�/�/����_k
�sG��,��+��� ���!��"�#��$��%��&��'��(���)�*��%�J��-���.��/���0�p�1�2� ��3�b�4�a�5�[�6�E�7�C�8�=�9�;�:lxlx �<ee�N�>�@dN�?d?~��A�BO�.�.Oe�De{r�F�Q�G�N�H�K�I�Je��{re�L�M)����ee�O�Pe�.e�R�X�S�Ue�Te�w�V�Wbd?�.be�Ye�Z�we�\���]���^��e�_�`��)e{rQ��c�o�d�n�e�i�f���ge���hO���jee�k�lee�m�mee����e�q���r�~�s��t�z�u���v���w{r�x*��ye�5���{e���|���}��e�{r������������������lx��lx��.e{r{r���D{r����������{r��{r��Q������{rlx{r��{r����{r��lx{rlx��dNlx��������lx��lx����lxlx�S������lxlx��"Z�blx����lxlx!b����lx����������lx!blx����lxlx�blx��������lx�*lxlx��!blx��b�������������e�������������1��	 lx������lx���lx��lxlx�plx����e������e��e��e��e��ee����ee����ee��e��e{r��ee����e��ee��e����ee����e��e��e{re���G��������!���)���e����������{r��ee�������e{re����e��e��e���*ee����ee���*e��ee��e��e�����we{r�����e���
��e��������ee�����!be�v{re���
e�	)����e�m)�*�����ee�e*�ee�e*�e�ee��eeՙ��,��%�� �{r�{re{re�!e�"e�#e�$e��&e�'�(�ee�)e�*e�+e��-�A�.�<�/�8�0�4lx�1�2�3lx�,Q��5lx�6�7lx*���v�9lxlx�:lx�;!�lxlx�=lx�>lx�?lx�@1�lx�Blx�Clx�Dlxlx�E�Flxlxd?�H���I�a�J�Z�K{r{r�L�M�U�N�Q{r�O�P{r{r��R{r�S�T�{r�{r�V{r�W{r�X�Y�{r{r��[{r{r�\{r�]�^{r{r�_{r�`{r��b�w�ce�d�v�e�t�f�s�g�i�h ��lx�jlxe�ke�le�me�ne�oe�p�qe�re�elx��ulx���{re�x���y���z���{lx�|lx�}lx�~lx�����lx��lx��lx��lxlx����lxlxrX��lx��lx��lxlx��lx����lxlxrX������lxlx��lx����lx��lxlx��lx��lx����lx��lxlx������lx����e��O*�e����lx��)��e*e�����ve���NQ�elx������������������{r����){r{r����{r{r������������������H{rՙ�H����ՙ{r{r�H��{r{r���Hՙ���{r ���������������������{r)�v{r{rdN����dN{r{r���{re��e,����,����ՙ,��,ՙՙ{r{r��{r����{r{r����{r{re��������elx����{r������{r)��lx{rlx������������lx{r{r*��lx{rlx������)lx�*)���*{r�����������wlx��)���*{r�������we ��v��){r�����*��lx��*{r�����lx�*�*{r)�*�{r�*�����e��;�� �	��
{r���e�
e�e�ee��{r���{r���)���{r){r*��{r!b{r�{r{r�{r�{r�{r��!{r�"{r�#{r�$�%{r*�&{r�'{r�*�(�)e�*�1e�+e�,e�-e�.e�/�0ee1��2e�3e�4e�5e�6�9�7�81�ee1��:ee1��<�T�=�M�>�G�?{r�@{r�A�D�B{r�C{r{r�w���Ee�F{re�H{rrX�IrX�J�K{rrX�LrX{r{r�N{r�O�P{r{r�Q{r�R{r�S�w{r�U��V{r�W�a�X�\�Y{r�Z{r{r�[b{r{r�]{r�^�_�`�w��!�,{r�b�c�w�d��{r���f�w�g{r�h�o�i{r�je�ke�lee�m�n)e)�p{r�q{r�r{r{r�s�t�v{r�u{r!b{r�]�x���y{r�z{r�{��|e�}e�~ee�b�������������e�����������e��{r��{r��{r��{r������{r��{r{r�w{r�� ���!b{r���-������e������{r��{r��{r��{r{r�{r��������������������dNe�����e�ՙdN������dNe���dNe���������dN���*dN����dNedNe��������dNrIrIdN������*edN����������������rI�*�*dN����dNeՙdN��������erIdN�*���dNe����������eedN�����dNedN���������rIeՙdN��rI�*���$������{r����������{r��{r��{r{r9{r��{r����{r{r,�����w������w���w�������������]�]9{r�����	�����������������ՙdNrI��dN������������erI����dN�dN����������*eedN�dN�*dN���dNedN���edNrI�
�����dN�
edN�rIdNe���edNe���dNerI�����dN��*��dNerIe��!�� edN����"�#dNrIe��%�,�&{r�'e�(e�)ee�*�+e���{re�.�]�/�<{r�0�1{r�2{r�3�89�4�5�7�6�v9�v�v|��9{r�:{r|��;|�{r�=�\�>{r�?�X�@�D�Ae�Be�CeedNe�Ee�F�Ge�H�Pe�Ie�Je�K�Le�Me�Nee�O{re�Qee�Re�S�Tee�Ue�V�Wee{r�H�Y�Ze�[e�He{re�^�g�_lx�`lx�a�d�blx�clxlx���e���flxlx{r�h���i���j�}�k�r�l���m�o�nlx{rlx�p{rlx�q��{r�s�y�t�v�uelxe�w�x,lxlx�p�zlx�{�|{r����lx�~���lx��lx��,,�w��{r����������e��{r��{rlx����lx��lx����������lx{r��{r�{r{rlx���[��������++����+��++����+��+��++���+�������������������������������������L������az������������*azaz|��az��az��)(��)(��)(��)(��)(��)(nW)(����az��|@������az
�����@Jaz|���������az������azaz��������az������az��az��az��azaz@��az������azaz@az��az@az��az����az������azaz��Aeaz��az��az@azaz������azd��az������az����az��az��gCaz��az��azt�az�����������az��azgC����gCaz����azgCgCaz������az��az��azwaz�����mv�b���1��v�azgCaz�az���	az�
��azazj�
azazj�azaz���mazv�az��az�az�LnW��<��;d�az��az��6��*�az� az�!azaz�"az�#az�$az�%az�&az�'�(azaz�)u�azaz�+�,azaz�-az�.��/��0�1��2���3�4��5�t���7az�8az�9az�:az�Bazaz���=�>AeazF��?az�@az�A�B�G�Cazaz�D�Eaz�Fazt�azaz�H�Iazaz�Jaz�Ku�az�M���N�X�O�U�P�Raz�QcWaz�S�TazF�azAe�Vaz�Wazazg4az�Y�Z�h�[�\azaz�]�^t�az�_�`az�aaz�b�e�cv��dv��Bv��fv��gv�v�gQ�i�kaz�j�sG�laz�m�t�nazaz�o�p�r�qazwUaz�sazt�azaz�u�vazaz�w�x�ygQazaz�z�{az�|az�}azaz�~�az��azazw�����az����az��azazcWaz��az��az����az������az��az��azaz����azt�az��azaz��az����az��az�Kaz���0���y���b��������az��azM��azL�������������c����������������drb����Ni#�������r�N������b���d��d��d��d��d��d����d��db�J����������b�i#o�o�d���g4d��c���������������o�b������o��b�#������d�di#��d��������b����Zd����b���d�����dd�Z����L���L������L��������d��d����L����Lb���b����nf������azaz��az��wUaz���������az��wazv���������gQj��az��azubaz���[���M����H:��HG��az����aNL��M�LN��K��azt���v���az�az�az�	azaz�
az��azaz�
�azaz��azaz�azw�az�az���@��6��-�� az�az��az�az�az�az�azazv�az�!az�"�#�(�$azaz�%�&azaz�'azv��)az�*az�+az�,azv�azaz�.�/azaz�0�1az�2az�3az�4azaz�5v�az�7az�8azaz�9�:azaz�;�<az�=azaz�>�?azv�azaz�A�Bazaz�C�Dazaz�E�Fazaz�G�Haz�Iaz�Jazazv��Laz�Mazaz�Naz�Oaz�P�Qazaz�Raz�Saz�T�Uazaz�Vaz�Waz�Xaz�Yaz�Z@az�\�a�]azL��^L��_L��`L��azAe�c�v�daz�eazAe�fcW�gcW�h�i�p�jcW�kcW�lcWcW�mcW�ncW�o��cW�qcWcW�rcW�s�t�ucW����cWaz�waz�xc�	Y�z�~�{az�|az�}az@&azaz���������az`�azAeaz����az���������������������������az����az��az��az��az��azaz��az��v�az������az��azaz��az��az��az����azazj��az��azaz��az��az��az��az��jaz����azu�u�az����az��az������az����gC��gCgC������������gCgC��gQgC������gCgCv�gC��gCw*��gC��gC��gCv�gCaz����w���w���w�w�����w�w���w���w�j��������az��az����azaz����azaz��az��az��w*az��az������az��azaz��az����az������azjaz��azjaz��azaz����az��az��az��azaz��jazaz�����������j��j������jj����j��jw�j��jj����jjj��j��jj����jj������j��jj��jjjv�v������k��9��v���gQ�gQ�	gQ�
��gQgQ�gQ�
gQgCgQ�gQgC���gQ��gQ�gQ�gQ�gQ�gQ��gQ�gQ�gQ�gQ�gQ�w*gQw*� gQ�!�'�"gQ�#gQ�$gQgQ�%�&b�b�gQ�(�3�)�-�*gQ�+gQ�,gQgQ�gQ�.�/�1�0gQgQv�gQ�2v�gQ�4gQ�5�6gQw*�7gQ�8gQgQv��:�O�;�D�<ub�=ub�>ubub�?�@ubub�A�B�C�-ubwcub�E�"�F�"�G�"�"�H�I�L�"�J�"�K�-�"�M�"�N�"wc�"�P�d�QkX�R�ZkX�SkX�TkX�U�V�X�WkXkX�w�YkXv��[kX�\kX�]kX�^�a�_�`kXv�kXw*�b�ckX�Mv�kX�ekX�fkXkX�g�hkX�ikX�jkXwkX�l�w�m�nwU�?v��o�pv��qv�v��r�sv��tv�v��uv��vv�v�v��x�y���zw�{ww�|w�}w�~w���wv�w��kX��kXkX����kX��kX��kX����kXv�v�kX��������v���w����t���������t���t�����v�t���v�t�v�����t�v�����t�v�t���t���t�t���t���v���v�t�����v�u�������t���t�������t�����t�����t�mt���t�t���t�m��t�m����t�mt���m��m��mm��m����m��mt�m��������gQkXb�w������az��gC��gCgC������gC��gC��gC��gCw*��gC��gC����gCv�gCv�b�az��������������������v�w�azgQ����kXb�gCaz��������azt�azv�����v�jmj������������mv�v�az����azu�azv���azaz��u�v���az��������u���gCv���azazw������az�"ub����b�v�v�az�����az��az��az����v���v�w�w��gCaz�������az��wv�v�w�az�	az�
azgQ���
��azazkX��b�azgCaz�����Mv�az�"��wmv�m��&�� ����v�azt�kXazv��!�$�"�#azwu�j�%v�jv��'�-�(�+�)�*ubv�u�az�,u�w�azaz�.az�/azgC�1�p�2�`�3�E�4�B�5�AM�6�7az�8az�9az�:az�;�>�<az�=azb�azaz�?az�@gCv�|az�C�DZazMaz�F�Haz�GMaz�I�_�JAe�K�U�L�R�M�O�NQ�NQ�Q��PQ��QQ�N_F�S_F�TQ�_F�V�\�W�Y�XQ�Q���Z�[]�[N+N�]NN+�^\�N+azt��a�m�baz�c�l�dnWaz�eaz�faz�gaz�haz�iaz�jaz�k�BazL�az�naz�oazc��q�{�r�x�s�uaz�taznW�v�wcWazE�MsG�y�zsGsG	��|���}��~azsGaz��azazM����������Maz��������v�����kXww�az����az��azv�v�u���{d����d��d��d��d��d��dd����d��d��dd��d����dBfd����az`���@��������������az��az��azaz|������Mg�q�M��M������L�Mg�M|��������������az��v�kXv����wUww����j��azgC��v�����kXazgCaz����������azaz|��������az��az{�azubaz��az��ubaz����������az��|az����w����az������|az�@���������t�S��&����azwa�az������az��|��az��y����|az��az����az�az�[���������������<���`���9���$��az��az��az��������������sG��sG����sG�9sG����J@sG���������sG+���sG�@���������@�	�
@@��@�
@@����JsG������sG�sG�@�+{r�w��sG�sG@��sG��sG�J� �!@sG��"sG�#@��%�/�&�'sGazp��(|�)|�*|�+|�,�-|�.|BD���0�8az�1�2�����3�4���5���6�����7���[`�az�:�H�;�>�<�=Aec�L�az�?�G�@az�Aaz�Baz�Cazaz�Daz�Eaz�FazwAeM�I�[�Jaz�KcWaz�L�Maz�Naz�Oazaz�P�Qazaz�R�Sazaz�Taz�U�Vazaz�W�Xaz�Yazaz�Zazt��\�]L�azaz�^��_����a���b���c�eaz�d|L�f�yaz�gaz�haz�i�j�o�kaz�lazaz�maz�nw*az�p�s�qb��razgCazaz�t�u�waz�vgQaz�xazaz�B�zaz�{sG�|���}�_�~�;@�J����az��azM������az|����|��|��||����|��|��|�|az����az��az��az��az��az��az��azazgC������������MM�AeM�����nW��az��az��az��az����azt�az`�az���9����az��|��|����||��|����|��|��|��||����||��|����||��@|g4������������������GtF�GtG�����GG��������G�G����GG�;��������������G������8G�G�����G���G�G�����G���G�G���G����8G��������G�Gt����G���G�����Gt������G���������G���G����G��G�������G�G����G�����������������F�F���F����F�Gt����F�F���F�����F��.F����	����������F��F�������F�F���F�F���F��F��F�F���F��
�F����
F�G�G�F�F�G���$�����GtF��8�F��F���"�����F��F����F��.�F�F��� F�F��!F��.�#F���F��%�2�&�'F�G��(�0�)F���*�+��,F�F��-�.F��/F��F��1GtGt��3�6F��4��5F���F��7�8F���F��:�;azM��az�=���>���?az�@�~az�Aaz�B�C�z�D�Y�E�Q�F�O�G�L�Hd�I�ob��Ji1�K(�RcW�Md�NNd�Pdd`��R�U�SdM�TdcW�V�Wd{dd�XLU\�Z�eaz�[�\�`d�]�^�_�Ndb���a�b�d�c�ddm�a��f�o�g�k��h�i�jdm�m�b��l�n��mb�d�Qd�p�s��q�r�Q��Q�t�w�u�v��Qb���x�y��N�m�d�{�|�}g4�dM���az��az��az����az��azaz����azaz����azazt�������azaz��azNaz����azaz��az��az����az��az��azaz��w�az����������az��az��Q��������az��az����az��az��azazv�������������gC��gCazaz��azgC��az��azgC��gCaz��az��������az��azwaz��azw��az����w��az����az��azaz����azaz����azazw��az��w����w����w��w��w��wazw������w��w��ww��wazw����w��w��wwaz��az����az��az����az��azwazaz��az��az��az��azgC���az��cW�����i��� ����az��az��az��azt����������az��azaz����azaz����az��az��az��azaz��mazaz����az��az��az��������az����az�mazaz�maz�azaz�maz�	az�
���
az�mazaz�maz�azaz�maz�az�az����az�mazaz�maz�azaz�maz�az�azmaz�!�H�"�%az�#az�$maz�&�2�'azaz�(�)az�*azu��+�,azu��-�.az�/az�0�1azu�u�az�3azaz�4�5az�6az�7�@�8�>az�9�:az�;�<azu��=azu�az�?u�azu��Aaz�B�Gaz�C�D�Eazu��Fazu�azu�az�I�faz�J�Kazaz�Laz�Maz�N�O�[�P�Y�Q�U�R���Sazaz�Twaz�V�K�Wazaz�Xaz�K�K�Zv�v��\�_�]�^wqt�v�az�`�e�aaz�b�cazu��dazu�azv�az�gaz�hazu�az�jaz�k���l���m�oaz�n�Kaz�paz�q���r���s���t���u�yt��v�w�x�Kw�K���z�}�{�|v�wqv�u��~�v��1�wt���t���t���t�v�t���t���������t����Kw�����K��v�wq��������v�u�v��1�����wt�v�t���t���������t��������Kw�K����������v�wqv�u�����v��1�wt���t���t���t�v�t���az��az��az��az��azaz����azaz��t�azaz��az����az����������t�����t��������Kwt�����������v�wqv�u�����v��1�wt���t���������t����Kw����t���v�wq��������v�u�v��1��t��wt���t���t�����t��������Kwt�����������v�wqv�u�����v��1�wt����������az��az��az��azaz����az��az�Kaz����az����az��azaz����az��az�Kaz��m��az��az���������az��������az��mazaz��maz��azaz��maz��az�����az�mazaz�maz�azaz�maz�az�	az�
�
m�az�maz�azaz�maz�az��az�K�Kaz�azaz���a�az��,��&az��azaz��az�az� az�!azaz�"�#az�$az�%azaz�B�'�*�(azaz�)�Baz�+azgCaz�-az�.az�/azaz�0�1�R�2�C�3�=�4�:�5�9�6w*�7�K�K�8gQ�K��w�;�<�b�w*�?�>�A�?�@b��"v�b��Bb�wU��D�K�E�H�F�Gubwb�wc�I�Jwv��^��L�O�M�Nw*gCkXw�P�Qv�{�b�w��Saz�T�[�U�X�V�WkXwU�Mv��Y�Zubb�v�w��\�_�]�^wU�a�w�`az��az�b�vaz�caz�d�eazaz�faz�g�h�paz�i�jazaz�kaz�l�mazaz�nw*�ogCw*az�qaz�r�sazaz�t�uazazw�w���xaz�yazaz�z�{az�|���}azaz�~az���az��azazb�az��az������az����az�"az������az��azazV�az������az����azazb���az��az����������������������gQ��������wb�w*�?���������b���b��"v�������������b�ubwb�����wcwv�����������^w�����w�gCkXw����������������v�b�b�w�����kXwUwU�M��������v�ubb�v�����w�ubwU���az��az��aza�w��������az����cW��N��N��NN����NQ�N����nWazL�az��az��az��az��azaz����azaz��az��az��az��az��az��az��az�^���W�����������az������azd]��cW��azaz����az��azaz����az��azazv���az��azaz��������az����E���az��azaz�����������g���tO���;����g����J��g���	��g����g����Og�g����
���g��4���
�o���o��o��o��o�o��o��o,���`���Naz�
az��sG��G��%az�az�� �#az�!�"azazv�az�$az�K�&�=�'�7�(�3�)az�*az�+az�,azaz�-�.azaz�/�0az�1azaz�2azwaz�4�5�6b�gQkXw�8az�9�;�:azgCaz�<azwUub�>�C�?az�@az�A�Bmazazmaz�D�Eazaz�Fjw��Haz�I�N�Jaz�Kazaz�Laz�Mazv�az�O�P�Taz�Q�R�Swv���u��Uaz�Vazu�az�X�m��Y�Z��[���\�]��^���_��`�a��b��c��d���e�f���g�h��i��j���k�l�@��n��o��p���q���r���s{r�t{r�u{r�v{r�w{r�x�z�y{re{r�{{r�|{r�}{r�~���{r��{r��{r��{r��{r{r����{r��{r��{r��{r��{r{r������������{r��{r��{r{r����{r��{r������{r������{re��eb������{reb���edN��{r�������������{r|�O����O����e��������e���	 e��e{r��{r��{r��{r��{r��{r��{re!b����������{r��lx�������w{r������{r�N{r�lx����lx{rlx������lx��lx��lx��lx��lx{rlxlx��lx��lx����lxlx��{rlx������{r��{r��������������{r��{r��{r|:!b{r��{r����{r{r��{r����{r{r��{r��{r��{r��{re��{re������b�.Q�����������ՙ��rI��������{r������e��{r���w�*����������e��e������e��e��eeՙ������O����e �����ՙ�ebe� ����{r�{r�	{r�
{r���{r�
{re��{r{r�{r����w�w���w�w���w�w�������Y���{r�e�ee���)� *��!lx�"�%�#lx�${re{re�&�')lx�({r��*�1e�+�,�0�-edN�.�/edNee ��2�E�3�:�4�7�5�6 �ee�	�	�8�9)e)�;�@�<�?�=�>)eQ������*�A�C�*�Be�*�*�D�*e�F�Q�G�L�H�J�I�we�w�K!��*!��M�O�N)e)�P��e���R�U�S����Te��V�We���X�)��Z�j{r�[{r�\�]{r�^{r�_{r�`{r�a{r{r�b{r�c{r�d{r�e{r�f{r�g{r�h�i{r �{r�k{r�l�x�m�qe�ne�oe�pe,e�r�se�t�ve�u��)�wee�*�y��e�ze�{�|�~e�}e�.�e*�e��ee{r����������e������e����������lxe�N������)��9��{rlx�w�������������vlx�H �O���lxlx������&!blxb��{r����lx������lx����lx��lx��lxlx��lx����lxlx��lx���wlx����e ����������������ee��eՙe����lx��{r��{r��e��e��e������ee�H�we��������������e��������e��������dNe�w������1��He��e����;$�,�dN{r��{r��{r!b����������e��e��������{r��rX������O!b|:ee������e��e��!�����!b��!b��!b!b����!b!b��!b��!b�!b�w��e��e��b��bb��eb�����e����e����e��������e!�!� ���erXee����ee��e��be��
�e��
e���e�e�m��	e��)�*e��e�we{re����F��2��(�{r��{r�{r�{r�{r����O{r��$�� {r�{r���{r�{r�!�w�"{r�#Oՙ�%{r�&{r�'{r�H{r�)�1�*{r�+{r�,{r�-{r�.{r�/�0b{rQ�{r{r��3�>�4e�5e�6{r�7e�8�;e�91��:�	 �<e�=e ,�?ՙ�@*��Ae�Be�Ce�De�Eee���G�ae�H�I{r�J{r�K{r�L�Z�M�T�N�Q�O�P�){r{r���R�SOՙ`�{r�U�X�V�WbOQ�{r{r�Y{rQ��[�^�\{r�]{r{rQ�{r�_{r�`Q�{r�b���ce�d���e�|e�f�g�y�h�ie��j�k��ee�l�me�ne�o�te�p�qee�re�s�Nee�u�vee�we�x�Ne�ze�{eؒe�}���~������������rIdN����e�*rIe���������edNe����edN�*dN������������dNrI�*dNdNe������e�dN����rIdNdN���������e���ee��e��e�*������e��ee���*ee����e��e{re������*���lx��{r��lx��e��lxlx�H�������������������������������e��������������{r����������������{r��������������������9���{r�����������������������9�������������������������e�9��������w{r����������������������������������������������������9��������������������9�w��������������������������9�������������	�
����H��
���������������W��������9�������������9�� �o�!�<�"�.�#e�$�%e{r�&e�'e)�(�)�,�*�+e��,,�-,e�/!b�0*��1�;�2�6�3��4e�5ee���7e�8e�9�:�>{rbe�e�=�F�>1��?1��@1��A1��B1��C1��D�EdN1�{rO�G�L�He�I�Ke�J{ree{r�Mee�N�O�[e�Pe�Q�Re�Se�Tee�Ue�V�Wee�Xe�Ye�Z{re�\e�]�_�^e{re�`�a{re�b{r�ce�de�e�je�f�gee�h�ie{re�ke�le�mee�n{re�p���q���rlx�slx�tlx�u�z�v�y�wlx�xlxlx�.O!b�{�~lx�|�}e elx�lx��lxe��ՙ��1���1���{r��{r����!b{r��O{rb{r������������lx������lx��e��lxlxbedN����������lxlx{r����!b!���{r{r��lx{r����������{r����{rlxlx{r{r��{r��lx{r��{r{rlxlx��lx��lx����lxlx����lx{rlx���a������o��������������@&A@&��@&@&����az����@&��@&az��az���z�������������az��������v�����w�v�w�w���w�����w�w���w���azw���az��azw�����az��azw�azaz����azaz��az����az��az����az��azv���azw�az����az��������az��az��az��az��azw���w�az��azaz��az��az��az����azw�az���������az��az��az��azv���v���v�azaz����az��az��az��az��azazv����az�azv��v�azaz��az�az�	azaz�
az�v�az�
�:��az����az�az�az�azw���azw�az�az�az�az�azaz�az�azw���-� az�!�'�"az�#az�$azv��%v��&v�azaz�(az�)az�*�+az�,azazv��.az�/az�0�5�1az�2az�3azw��4w�azaz�6�7azaz�8az�9azw��;�[�<�J�=�C�>az�?az�@az�Aaz�Bazv�az�Daz�Eazaz�F�Gaz�Hazaz�Iv�az�Kazw��L�M�R�Nw�w��O�Pw�w��Qazw��S�W�Taz�Uaz�Vazw�az�Xazaz�Y�Zazw�az�\�m�]azw��^�_�d�`w�w��a�bw�w��cazw��e�i�faz�gaz�hazw�az�jazaz�k�lazw�az�naz�oaz�p�u�qazv��r�saz�tazv�az�vaz�wazaz�x�yazv�az�{az�|az�}���~�������az��az��azv���������w�v�w���azw�az��az��az��azaz��az������azv�w�az��az��az��az������az��az��azw�azaz��az��az��w�az������az��az����v�����azv���v�azaz����azaz����azv�az��az��azaz����az��az����az��azgC��azgCaz��� @&����@&�������������������������'�E��������EE����'������������HGAA�6��H�EH�����H���H�EzE��E��E����������������������|���E��������H����E���������������EE��~�������������Y����A��A��������������Y����YA����Y���E�������������F���E������EH��������������H�H������	���H��H�H���HGE��
���
�M�Ae@&�Ae��EA��N3+���������'����g��������E��A��EF�@&�!@&�"�#�[�$�@�%�3�&�,�'�*��(�)�6�AeE�+EH��-�/�.�EH��0�2E�1E�H:Ez�4�8�5��6�7H E�H��9�=�:�<��;HG���@&�>�?@&�~���A�N�B�H�C�F��D�EH �|��G��A�I�L�JH��K��EE�MEA�O�T�P�R�QA�E�SH�AH:�U�W�V����X�Z�Y������\�u�]�j�^�e�_�aE�`E��b�d��cAe�HG���f�h�g��E��i�E�k�o�l���m��n�Ae�p�r�q�EAe��sBa�t��F��v���w�~�x�|�y�zE��{��@�}�C�E����������HG�����Aeaz����������������H:Ae������E��������Ae�����E�@&���a����@&��A@&�����az�����������������������HG��E�������@&������EE����������������A������������������E@&���H��H�������������������E��F�H ����������E�������EF�H����H���������������Ae������ٰH H F��������Ae���������������������������E�H ����AEAeHG���������'�������E������E����E����E��������E���EE���E������������������AE�EH ���H�E������������E�E������E�������H�EE���	��E�E��A�
�H Eaz�M�
M����MM��M�M�M�M�M�M�MM��oM�� �M�M��q�Mq�M�!�,�"��#�r�$�K�%g��&�E�'�2�(�,g��)�*M�+g�g�~�-�/�o�.�;�J�0�1d�4���3�;�4�7�5�6�%)xy����8�9$3g��:g�g��+�<�A�=�?�>g�g��;g��@g����Bg��C�D����-Ź�Fg��Gg��Hg�g��Ig��Jg��	�Lg��M�l�N�Y�O�Sg��P�QM�Rg�g�~�T�V�o�U�;�J�W�Xd�4���Z�b�[�^�\�]�%)xy����_�`�	���ag�g��+�c�h�d�f�eg�g��;g��gg����ig��j�k����-Ź�mg��ng��og�g��pg��qg��	�s���t���u���v���w�{M�x�yM�zM*�~�|�~�o�}�;�J���d�4���������������%)xy������������MM�+����������MM�;�����lMq�M������������-Ź��M�OM��M��M��MM��M��M�	��������M�������o���;�J����d�4���������������%)xy��������������*��Oq��l��M��M��M��M������M������������M)x�*������Oq����-��M�����Ź�lM������������M���OMM��*�M��������ŹM�M�����M)xM����������Mq�M��M�lM��M�����-M��M���������������������M������~�����o���;�J����d�4���������������%)xy���M�A���������)�L����������tO���+���������������;��������������������-Ź������������������	������������	���
���g����
�+����g���%���g�g���g��g�g�~��g��g���g�g��+��!���g�g��;g�� g����"g��#�$����-�&g��'g��(g�g��)g��*g��	��tO�-M�.�`�/g��0���1���2�D�3�8���4�5�7�6��*�~M���9�>�:�;�o���<�=�;���Jd�?�A���@�4���B�C�������E�T�F�M�G�J�H�I�%��)x���K�Ly�����A��N�Q�O�P��L�����R�S���tO)��U�\�V�Y�W�X�����O���Z�[�l��q����]���^�_����-��g��b�e�c�dp�c�cW`�`��f�gM�haz�iaz�jaz�k�m�lazgQaz�nt�azjE�p�q�W�r��E�sE�t�uEE�v�wEE�x�yE�zEE�{E�|�}EE�~E���EE����EE��@E������az��������|az��������������������v�gCazgC����azgCj�w������azkXjaz��v�az������������azwazt���azj��������azv�v�v�az��azub��������������azazm��azu�j��������azkXjaz��azgQaz������������t�az��u���az��az����az����w�azw�w�����azw�az����v�azwv�����az��azu�t�azaz����azaz��az��az����azt�azaz�����'���!�����az��������������v�v�����v�v�az��azv���azv�v���������v�����azv���v�v�azv���azv�����������������azgQ����gQv�gQv���v�v���v���v�az����az����azaz����v�v�azgQaz��v����������az��azazv�azv��v�v�az�azaz�����
�v��az�	azazgQaz��az�
�azv�az��azazv��������v��v�azv�az�azv��v��v�azv��� az�az�v�azgQv�az�"�#azaz�$�%azaz�&azv�az�(�)�/�*azaz�+az�,�-az�.azazv��0az�1�B�2�;�3�7v��4gQ�5az�6v�azv��8v��9�:azazv�az�<�=azv��>v��?az�@�Aazv�gQ�C�R�D�O�E�K�F�Jaz�G�Haz�Iv�azv�v�azaz�L�Mv�az�Nazv�v��P�Qazv�azv��S�Tazaz�U�Vv�azv��X�
�Yaz�Zaz�[�laz�\az�]az�^�_v��`�i�a�egQ�baz�c�dazazgQ�faz�gaz�hazazv��jaz�kazgQaz�m�s�nazaz�oaz�paz�qaz�rt�az�t���u�vv�az�waz�xaz�y���z���{���|���}���~�wcv�gQwc����v�kXw�gC��������gCwcw�gQ����gQwckXgQ����������kXgQwcaz��w�kX��������v�gQw�v�����gQw�gQw��az��azaz��azv�����������������v���v�az����wt�v�w������azt�azv�az������������azv�azv�u���azv�����azmu�v���az��az��������wt�v�m��azmaz���az��������������������azv���gQazaz������t�azw�az����az��az����azv�az��az����gQ��gQaz��azv�az����������������azt�mgCt�������azt�azt�����gC��t�w����t���azv�����t�v�v�v�����az��������u�v�v�v�j������v���v�azj����v�ww��t�v���������������������azv�azt���t�azb�����azv�t��azb�az�azaz�azw��azaz�az�azw�az�	gQv����Aaz�
�azaz�����az��azmaz�azaz�maz���az�az�azmaz�azmazaz@&� ���!���"�z�#�w@&�$�%@&�&�Q�'�=�(�3�)�-��*�+�,�H�H���.�0��/�@&H��1�2EE��4�:�5�7�6�E��8�9�AEH��;��<�H���>�H�?�E�@�C�A�BE���A�DE@&E�FA�G�H���I�L�JEH��KH�E�M�O��N�E�P�H���R�h�S�]�T�Z�U�W��V�H���X��Y�EE�[�\H�EH �^�a�_�H��`AH �b�d�c@&�E�e�fE���g�E�i�n�j�m�k��lH��H��H��o�r�p��q�H���s�u��tA���vH�@&@&�x�y@&az@&�{@&�|@&@&�}�~@&@&�@&��@&��@&��@&����@&�f@&������������@&M@&M����MAe�az��������Lazdaz�����_azp�M������@&����������������������������azMM��MazM��az��azM������������MazazM��MMazM������MazazM��������az��az��Maz����Maz��azMazM��M������MazMaz��������|���dN������L����Lg4��d��d��d��d����d�Km�d����������x���cWNaz��d��ddb�N����Q�����NQ�W��V��N����������L�M������m�b�b�d��nW��cW��cWNN+��L��������`���`�d��d��d��d��d��d��d��dd��d���dNLazL���@&�@&���:@&�����@&��@&��@&����@&��@&�@&�@&@&��u@&@&���!������
�	A@@&��AH:�
A�EE���E��2�E���@&���������@&@H:��E�EH:���E|�H:� EH:E�"�,�#�&�$A�%A@&A�'�)A�(EA�*�+E��iM�-�1�.�/AEE�0E��2�7E�3�4��5�6H:N*H:O�8�9AH�H�A�;�_�<�^�=az@&�>@&�?@&�@�A�M���B�C���D@&�E@&�F@&�G@&�H@&�I@&�J@&�K@&@&�L�*@&�N�����O�P�X�Q���R���S���T�����U���V���WtO���Y�����Z�[�����\���]tO��Aaz�`azp�M�b�}�c���d���e���f�y�g�hAep�az�i�jazaz�kaz�laz�maz�naz�o�pazaz�qaz�r�sazaz�taz�u�vaz�waz�xaz@az�zazaz�{�|���}��az�~az�v�az��az��az��azaz��az��b�azaz����az��azaz��az��b���b�az��������L�az`�az����Mazaz��cW��L���L���L���L��+������������p�azaz@&��azAaz����az��azAe����A|�c�L����q���e������dazcW����g_az��������az��az��az��az��az��v�az������az��azw���w���w���azj��azaz��azgC���;������������������M����MM�M������M���N���������)�4�v�����������������+�����������p����������!�	)��������W���˫�����������������L����������-��A������������
��&���������~y��������������o����;������*��O(���������������4���������-��������
����������l��J������
����
��	���Ź�s����˺����������M���>�@���^�m������������������ē�6Oa��,��%��"� �!�����,�#�$�M��|�
�&�)�'�(�����+���*�+�~�
Ʌ���-�4�.�1�/�0����x���2�3�]�h�w���5�8�6�7��������9�:���(��{�<�U�=�N�>�F�?�;�@�C�A�B�OtO��M��D�E���	g���g��G�H�K�I�J��M���M�L�M��M��M��O�T�PM�QM�R�S�Og�g�MMg�M�V�W���X���Y�^�Z��[���\g��]���^�}�_�n�`�g�a�d�b�cg��	�	�]�e�f�]�����x�h�k�i�j�x�N�N���l�m���+�+�;�o�v�p�s�q�r�;�������t�u������M�w�z�x�yM�4�4�v�{�|�vM�M����~����������������w�w$3����$3�����������������p�p�������������)�������������)����g�����g��!�!�	���������]���x�N�������+�;����g���������������������M�4�����vM����w��������$3�����p���������)����g���g���g�g��!��g�������������������������g��	�	�]�����]�����x���������x�N�N���������+�+�;�������������;����������������M��������M�4�4�v�����vM�M����������������������w�w$3����$3�����������������p�p�������������)�������������)����g�����g��!�!�	���������]���x�N�������+�;����g��������������������M�4�����vM����w�������$3�����p�������)���g��g��g�g��!g���	g��
�I��*���
�����g��	�	�]���]�����x�����x�N�N�������+�+�;��#�� ���;�������!�"������M�$�'�%�&M�4�4�v�(�)�vM�M����+�:�,�3�-�0�.�/���w�w$3�1�2$3�������4�7�5�6���p�p���8�9�������)�;�B�<�?�=�>�)����g��@�Ag��!�!�	�C�F�D�E�]���x�N�G�H���+�;���Jg��K�Z�L�S�M�P�N�O����M�4�Q�R�vM����w�T�W�U�V$3�����p�X�Y�����)���[g��\g��]g�g��!�_���`�'�a���b���c���d�s�e�l�f�i�g�h�O�������j�k���4�4���m�p�n�o���������q�r���������t�{�u�x�v�w�����e�y�z�e�������|��}�~���;�;��������������������������������d����d�%�%�o���������oMM�M�����M�]�]�l�������������l�-�-�������O�O����������M�M��@�����@�����J���������������������J�^�^�|�����|������������������Oa����Oa�����������������������������������������������~�~q�����q�)x)x������������������~~������������������������ē����ēy�y�Ź������������Ź����Ʌ����Ʌ�O�O������������ʰʰg�����g�*�*��*��� ��������������������*̣̣���������4������������������������e�����;����������������������d�%�oM���������M�]�l�-�����O�M�����
�����@���J�^��	�|���������
Oa��������������~������q�)x�~������������ēy�Ź����Ʌ�O��ʰ�!�O�"�O�#�O�$�O�%�&g�*��*̣�(���)�h�*�I�+�:�,�3�-�0�.�/M�������1�2���4�4���4�7�5�6���������8�9���������;�B�<�?�=�>�����e�@�A�e�������C�F�D�E���;�;��G�H�������J�Y�K�R�L�O�M�N�����d�P�Qd�%�%�o�S�V�T�U�oMM�M�W�X�M�]�]�l�Z�a�[�^�\�]�l�-�-��_�`��O�O��b�e�c�d�M�M��@�f�g�@�����J�i���j�y�k�r�l�o�m�n�J�^�^�|�p�q�|�������s�v�t�u����Oa�w�xOa�������z���{�~�|�}����������������������������~�~q�����q�)x)x������������������~~������������������������ē����ēy�y�Ź������������Ź����Ʌ����Ʌ�O�O������������ʰʰg�����g�*�*��*�������������������������*̣̣���������4������������������������e�����;����������������������d�%�oM���������M�]�l�-������O�M������������������@���J�^�����|�������������Oa����������������~������������q�)x�~������������������ēy�Ź������Ʌ�O��ʰ��M��M��M��M����g�*��*̣�������o���0�������������������;�������������4�4������������������������������
���������e��	�e����������
���;�;�����������!�����������d��d�%�%�o�����oMM�M�� �M�]�]�l�"�)�#�&�$�%�l�-�-��'�(��O�O��*�-�+�,�M�M��@�.�/�@�����J�1�P�2�A�3�:�4�7�5�6�J�^�^�|�8�9�|�������;�>�<�=����Oa�?�@Oa�������B�I�C�F�D�E���������G�H��������J�M�K�L��~�~q��N�Oq�)x)x��Q�`�R�Y�S�V�T�U�~~��W�X��������Z�]�[�\����ē�^�_ēy�y�Ź�a�h�b�e�c�dŹ����Ʌ�f�gɅ�O�O���i�l�j�k��ʰʰg��m�ng�*�*��*�p���q���r���s�z�t�w�u�v�*̣̣���x�y���4�����{�~�|�}�����������e�����;����������������������d�%�oM���������M�]�l�-������O�M������������������@���J�^�����|�������������Oa����������������~������������q�)x�~������������������ēy�Ź������Ʌ�O��ʰ���;���;���;���;����g�*��*̣���6������������������������g��������������	�	�4���������4���������������������������������������������]�]�������������x�x�N�����N���������������������������+�����+�e�e�������������;�;�����������������������������;�;������������������������������������d�����������������d�%�%��������o�oM����M�M�M�]���]�l�l�4�	��
�
���4�����v���v�-�-�����������O���O��M���'�� ����M��@�@�������J�J���!�$�"�#���^�^tO�%�&tO�|�|�W�(�/�)�,�*�+�W)�)����-�.���w�w�m�0�3�1�2�m�����6�4�5�6��Oa�7�v�8�W�9�H�:�A�;�>�<�=Oa�������?�@���������B�E�C�D���������F�G��$3$3L��I�P�J�M�K�LL����~�N�O�~����q��Q�T�R�Sq�)x)x}q�U�V}q�����p�X�g�Y�`�Z�]�[�\�p�
�
���^�_����g��a�d�b�cg������	�e�f�4�������h�o�i�l�j�k�������]�m�n���x�N���p�s�q�r����+�e�t�u���;�����w���x���y���z�}�{�|���;����~����������������d�%���o����M�M�]�l�������������4���v�-��������O���������M��@���J�������^tO�|�����������������W)����w�����m���6���������Oa����������������$3������������L���~������q�)x}q����g������p�
����������P�������������������������������������������������������������MM������������M�������������M�tOtO�W�����W)�)��m���������m�6�6��������L�L�}q����������������}q�
�
������������������������A�����A�g�g�˫������������˫������������M������������M�tO�W)������m�6��L��������������������}q�
����������A�g�������˫�������C��$�����	����
������
��������������MM����������M�������M�tOtO�W���W)�)��m��!�� �m�6�6���"�#��L�L�}q�%�4�&�-�'�*�(�)}q�
�
���+�,�������.�1�/�0����A��2�3A�g�g�˫�5�<�6�9�7�8˫�������:�;��M�����=�@�>�?M�tO�W)��A�B�m�6��L��D���E���F�M�G�J�H�I}q�
����K�L���A�g��N���O��˫���Q���R���S���T�s�U�d�V�]�W�Z�X�Y���	�	�]�[�\�]�����x�^�a�_�`�x�N�N���b�c���+�+�;�e�l�f�i�g�h�;�������j�k������M�m�p�n�oM�4�4�v�q�r�vM�M����t���u�|�v�y�w�x���w�w$3�z�{$3�������}���~����p�p�������������)�������������)����g�����g��!�!�	���������]���x�N�������+�;��������������������������M�4�����vM����w��������$3�����p���������)��������������g��!��tO������������������������tO����������������������������MM������������M�������������M�tOtO�W�����W)�)��m���������m�6�6��������L�L�}q����������������}q�
�
������������������������A�����A�g�g�˫������������˫������������M������������M�tO�W)������m�6��L���tO��tO������������}q�
����������A�g���tO��tO˫tO������E��M����8������
����������M�����������������������MM����	������M������
�M�tOtO�W���W)�)��m�����m�6�6������L�L�}q��)��"����}q�
�
��� �!�������#�&�$�%����A��'�(A�g�g�˫�*�1�+�.�,�-˫�������/�0��M�����2�5�3�4M�tO�W)��6�7�m�6��L��9M��:M��;�B�<�?�=�>}q�
����@�A���A�g��CM��DM�˫M��F���G���H�g�I�X�J�Q�K�N�L�My��������O�P���4�4���R�U�S�T���������V�W���������Y�`�Z�]�[�\�����e�^�_�e�������a�d�b�c���;�;��e�f�������h�w�i�p�j�m�k�l�����d�n�od�%�%�o�q�t�r�s�oMM�M�u�v�M�]�]�l�x��y�|�z�{�l�-�-��}�~��O�O����������M�M��@�����@�����J���������������������J�^�^�|�����|������������������Oa����Oa�����������������������������������������������~�~q�����q�)x)x������������������~~������������������������ē����ēy�y�Ź������������Ź����Ʌ����Ʌ�O�O������������ʰʰg�����g�*�*��*������������������������*̣̣���������4������������������������e�����;����������������������d�%�oM���������M�]�l�-������O�M������������������@���J�^�����|�������������Oa����������������~������������q�)x�~���������������ēy�Ź����Ʌ�O��ʰ�y��y��y��	y��
�g�*��*̣�
�������N��/�� ������d�����������4�4�������������������������!�(�"�%�#�$�����e�&�'�e�������)�,�*�+���;�;��-�.�������0�?�1�8�2�5�3�4�����d�6�7d�%�%�o�9�<�:�;�oMM�M�=�>�M�]�]�l�@�G�A�D�B�C�l�-�-��E�F��O�O��H�K�I�J�M�M��@�L�M�@�����J�O�n�P�_�Q�X�R�U�S�T�J�^�^�|�V�W�|�������Y�\�Z�[����Oa�]�^Oa�������`�g�a�d�b�c���������e�f��������h�k�i�j��~�~q��l�mq�)x)x��o�~�p�w�q�t�r�s�~~��u�v��������x�{�y�z����ē�|�}ēy�y�Ź�����������Ź����Ʌ����Ʌ�O�O������������ʰʰg�����g�*�*��*�������������������������*̣̣���������4������������������������e�����;����������������������d�%�oM���������M�]�l�-������O�M������������������@���J�^�����|�������������Oa����������������~������������q�)x�~������������������ēy�Ź������Ʌ�O��ʰ��d��d��d��d����g�*��*̣���T������������������������o�������������4�4�����������������������������������������������e�����e�����������������;�;�������������������������������d����d�%�%�o�����oMM�M���M�]�]�l�����	�
�l�-�-���
��O�O������M�M��@���@�����J��5��&�������J�^�^�|���|������� �#�!�"����Oa�$�%Oa�������'�.�(�+�)�*���������,�-��������/�2�0�1��~�~q��3�4q�)x)x��6�E�7�>�8�;�9�:�~~��<�=��������?�B�@�A����ē�C�Dēy�y�Ź�F�M�G�J�H�IŹ����Ʌ�K�LɅ�O�O���N�Q�O�P��ʰʰg��R�Sg�*�*��*�U���V�u�W�f�X�_�Y�\�Z�[�*̣̣���]�^���4�����`�c�a�b��������d�e�e�����;�g�n�h�k�i�j�������l�md�%�oM�o�r�p�q�M�]�l�-�s�t��O�M��v���w�~�x�{�y�z�@���J�^�|�}�|������������Oa����������������~������������q�)x�~������������������ēy�Ź������Ʌ�O��ʰ���o���o���o���o����g�*��*̣��M��M��M��M��������������������������������������4�4�����������������������������������������������e�����e�����������������;�;��������������������������������d����d�%�%�o���������oMM�M�����M�]�]�l�������������l�-�-�������O�O����������M�M��@�����@�����J���������������������J�^�^�|�����|������������������Oa����Oa�����������������������������������������������~�~q�����q�)x)x����������~~�����������	��
�����ē�
�ēy�y�Ź������Ź����Ʌ��Ʌ�O�O��������ʰʰg���g�*�*��*��^� �?�!�0�"�)�#�&�$�%�*̣̣���'�(���4�����*�-�+�,��������.�/�e�����;�1�8�2�5�3�4�������6�7d�%�oM�9�<�:�;�M�]�l�-�=�>��O�M��@�O�A�H�B�E�C�D�@���J�^�F�G�|������I�L�J�KOa�������M�N������~�P�W�Q�T�R�Sq�)x�~�U�V�������X�[�Y�Zēy�Ź���\�]Ʌ�O��ʰ�_���`���a���b���c�dg�*��*̣�f�i�g�haNL�azM��j�pM�kM�lg_�m�nMd�ob�dazup�r���s�v�t�uMg4azBa�waz�xq~d�y�z�~M��{M��|M��}M�d���������M���d����#����dM���M�d��M�d��d���M���������az��az����@&����������|��||���|=|������������|���|�����|��|��|��||����|�|���������||������|����������������|V�|�������|�����������������|��|����|����|b�azaz��i����������]���az��az����azaz����������������az��azaz����azaz��v�az��az��az����az��az��w�az����az��w�azaz��v�az��az��az��az����az��az��v�az��azaz��v�az����������az��azaz����azaz��v�az��az��az����az��az��w�az����az��w�azaz��v�az��az��az��az����az��az��v�az�azaz�v�az�azaz�az��az��2���	��
az�azaz��
azaz�v�az�az�az��az�az�w�az��az�w�azaz�v�az��&�az��$��!az�az� v�az�"azaz�#v�az�%azv�az�'az�(�-�)�,az�*az�+w�az���
�.az�/�0az���1az��az�3�E�4�:�5az�6azaz�7�8azaz�9v�az�;az�<az�=�@az�>az�?w�az�A�Caz�Bw�azaz�Dv�az�F�Q�Gaz�H�O�I�Laz�Jaz�Kv�az�Mazaz�Nv�az�Pazv�az�Raz�S�X�T�Waz�Uaz�Vw�az���
�Yaz�Z�[az���\az��az�^��az�_�`az�aaz�bazaz�c�d�v�e�k�faz�gazaz�h�iazaz�jv�az�laz�maz�n�qaz�oaz�pw�az�r�taz�sw�azaz�uv�az�w���xaz�y���z�}az�{az�|v�az�~azaz�v�az��az��azaz��v�az��az��������az��az��w�az���
��az����az����az��az��az��az��az��azaz������������az��azaz����azaz��v�az��az��az����az��az��w�az����az��w�azaz��v�az��az��az��az����az��az��v�az��azaz��v�az���'az����azaz��az��az��az�������������������������az��w�azaz����az����az��jazaz��jaz��������az��jazaz��jaz����az��jazaz��w�az������������az���
azaz����az����az����az��az��az��az����������������az��w�azaz����az����az��jazaz��jaz����j��az��jaz����az��jazaz��w�az�����������az���
azaz����az����az���az��az�az��az�az��������
az�	w�azaz���az�
�az�jazaz�jaz��j�az�jaz��az�jazaz�w�az��%��!��az��
azaz� ��az�"�#az���$az��az�&az��az�(�2�)az�*azaz�+az�,�-azaz�.�/az�0az�1azazw�az�3�4az�5�vaz�6az�7�8�a�9�M�:az�;�F�<�A�=�?az�>w�azaz�@��az�B�Daz�Cjazaz�Ejaz�G�J�Hazaz�Ijaz�K�
az�Ljaz�Naz�O�Z�P�U�Q�Saz�Rw�azaz�T��az�V�Xaz�Wjazaz�Yjaz�[�^j�\az�]jaz�_�
az�`jaz�baz�caz�d�o�e�j�f�haz�gw�azaz�i��az�k�maz�ljazaz�njaz�p�sj�qaz�rjaz�t�
az�ujazaz�waz�xaz�y�zaz�{azaz�|jaz�~���������������az@&g_��azazE���������p�azazM����az@&az����az����az����az��az�raz��az��az��azMaz��az��az������az����|azaz����az��az��az��azaz��azubazAe������������az��azAe����Maz��M������������azb�t�az������az����azv�azb�b���b�����b���b�b�����b���b���b���b�b���b�����b�azb�az��������az��azt�azazt�����az����azaz��az����azaz��az����az��az�az����MnW����az��az��az����az��az����az����az��az��az��azaz��az��az����azazv���azaz����az��az��������b�kXkXgQ��azgCazaz��������az��az��az��azNaz��F�F���F�����F���F�F�G����v��d��c�up�� �az�az����
��
�	azb�u���azwazt����azm�i��jt�azt������azu�waz�azu�����azw�azb���azw8�Mv��!�*az�"�#az�$�'�%��az�&v�az�(az�)az��az�+�I�,�:�-�4�.�1�/�0u�azazkX�2�3kX��u�w�5�8�6�7�"gQkXv��9azjwc�;�B�<�?�=�>u�v�b�w�@�A�azgCv��C�F�D�Ejt�t�az�G�HazgCjb��J�X�K�Q�L�O�M�N�^gCj�az�Pazv��R�U�S�Taz�&�it��V�Wv�u�wu��Y�_�Z�\az�[u�w�]�^w�azazgQ�`�baz�aazb�b�azazL��e�u|�f�g�p�h�m�i�laz�jb��kb�gCgCt��n�ogQazu�az�q�s�razazt��tazt�azazg4�w��x�yaznW�zaz�{�|az@&�}@&@&�~aN@&����M�O��A������������az��������wazgC���az��b�az������u���azwaz��az������azazv�wj��azazu�����������������azu�u�azaz��������azv�az����az�azv���az��az��azgCw��az������az����v�azt�v�az����az��azazgC���X���#���{����az������az��az��az@���az����Maz��az��������az������v�azv�azaz����az��az��az��azw�az������������gCazgQgC��az�gC����azt�����mazv�u����������nW����az��az����azaz��az��az��az����az������az��azaz��az��az��az����az��az��az�az��������Ae����az��M��Mn���azn�LM����E�Ae��`�b����������������x����p���y�p�y���9��	�3F�3Fx����
���
�x�3S�p���b�+���=A����3Fݨڥ3S�b��x�����x����p�=%x�p��=p���\��Y� �!azL�"�*�#L�L��$�%L��&L�L��'L��(�)L�L���+�M�,�:�-�4�.�2az�/�0azaz�1|azaz�3az|�5�7az�6az|�8az�9|az|�;�D�<�@az�=|�>az�?�azaz�A�Bazaz�Caz@�E�Iaz�Faz�Gaz�Hazv��J�L�Kaz|az|azaz�N�O�Saz�P�Q|�Razaz|�T�W�U�Vaz�az|�Xazaz|�Z�[azM@az�]�haz�^�_aziM�`�aak�b�e�c�db�`�dnW�f�gM`�L�iM�i�jAaz�kaz�laz�mHG�nHGHG�oHG�p�qHGHG�r�sHGHG�tHG�u�vHG�wHGHG�xHG�yHG�zHG@�|�7�}��~��������d]azc�@��azaz��������������|��������|��|������||����||�|����|��|��|��|�||����|��|��||����||��|��|�������||��|��|��|��|����|��||�|����|��||�������||����||����||����||��|����|�������|�����|����|��|����|��||����||��|��|���||��|������|��|����|��|��||��|���||����||����||����||��|�������������|��|����||���||��������||����|��||���|��|���������������������|�|��|����||����||����|��|��||�|���||�|��||���az�azc�az�az�	�
A�A�A�
A�A�A�AA����)���az�azaz�t�az�azaz��azaz�v��v��v��v��� v��!v��"v�v��#�$v�v��%v��&�'v��(v�v�az�*�4�+�3�,Ae�-az�.az�/az�0az�1az�2azv�azp�az�5�6dazMaz�8�S�9�F�:�=�;�<az�azL�>�Eaz�?�@�Baz�Av�az�C�Dv�b�gQ��`�az�G�P�H�IazM��Jaz�K�Laz|az�Maz�N|�O|az�Q�RBaL`�az�T���U�h�V�WnWazaz�Xaz�Yaz�Z�[�_�\azaz�]�^azazv��`�daz�a�baz�cb�v�az�e�g�fazazt�azgQ�i���j���k�v�l�raz�maz�n�oaz�pazaz�qu�azaz�saz�taz�ujaz�w���x��az�y�zaz�{���|w��}w��~�������azaz��az������az��azw���azw�azaz��az��az��az������azw�w�azaz����az��azaz����az��azjazazw�az����azw�az��������az����azaz��az�����������������������u��az��az��az����azaz��az����azaz��az��az����azu�az������az��az��az��az��az��az��az��az��az��az��azaz�Baz����azaz����az��azaz����v���v���v���v�v���wv���az����az����az��az��azgCazaz����az��azaz����azmazazM���������az����������azaz����az��������b�azgCaz��azmaz��������az����azgCaz��az
TkMazaz��az��Ae��az��az��li��d]az��az������w�����az��azaz����azazw��w�w��w��azw��az�az�azw�azM�	M��
p�����
�p��p���p��p��p�p��p���$p��p��p��p��{��{�{��{���`��p���p�� p�p��!�"p�p��`�$���%�~�&�\�'�-�(�+�)�*|liazp��,azH:cWaz�.�/�[�0az�1�4�2K��3azazK��5�6F��Ae�7���8���9���:�;�DA�<�=A�>A�?A�@AA�A�BAA�CA{�E�M�FA�GAA�HA�IA�JA�K�LAA{�NA�O�U�PAA�QA�R�SA�TAA{�VAA�W�XA�YA�ZA{AazM�]�o�^�l�_�`Eaz�aazaz�b�caz�dazi��e�f�i�gaz�hazazm�jaz�kazmaz�m�n`�nWnWaz�p�{�q�rMazaz�saz�taz�uaz�vaz�waz�x�yazaz�zt�az�|�}L�az�Raz���������������b��ty|azd]��������d]Q'Qaz������aNL��L��L������y���y�����y�y���y�����y�y���y�����y��%y�����az������az����azaz����az��az��azaz��az��az����������azgCazgC��az����azgCgCaz��azaz����azaz����az��azaz��az��azgC��az����az����azaz����az��azaz��az����azgCaz��az��azaz������az����azaz��az��azgCazgC���}���g���6b������������azaz��az��az��az��az��az��az��az����azaz����azaz��b�az�����������az��az����az��az��az��azaz��az��azb���az��azaz������az��az��azb���az��az��az��azb�az����az����azaz��azb�az����azaz��az��az�az�az�az�azaz�b�azaz�az�	�
azaz�az�az�
�azazb������azaz�b�azaz��az�az�azaz��az�azaz�b�az��-�az� �&�!azaz�"az�#az�$�%azazb��'az�(azaz�)az�*�+azaz�,azb�az�.az�/az�0az�1az�2�3azaz�4az�5b�az�7�Maz�8�9�D�:�=�;gQ�<mv�az�>�C�?ww�@w�A�Bazwazwaz�E�HkX�FkX�GubgQt��It��Jv��K�LMazb��N�W�OM�P�V�Qm�R�U�Sm�T�Mazv�v�wb��X�a�Y�`�Z�_�[v�v��\v��]�^v�v�azv�azv�v��baz�cw�dubv��e�fkXv���h�|�i�v�j�o�k�n�lb��mb�mgQv�M�p�qMazM�r�saz�tv��uv�Mv��w�I�x�{�I�y���zdMdcWH:az�~���az��azaz��az����azaz����azaz��az��azubazL�����������@&��������L�j�xvj���@&xvj�@&������������@&������cWcW����cWcWy��cW��cWcW��cW�uMaz������az��d����g4cW��d��o��������������z"�������!p���d��������rm�m��Zm����zm���M��az����������az��������e��eՙ����lxՙlxՙ����lx��lxe��lxlx���azaz����az��azaz����azaz|���������������azddL������az��azaz����az��azaz��azmMaz��az���cW��p���������p�p�����p���p�p�����p���p���p���p���p���p�p���p������p���p�������������������������p���{������$�����$������$������p���{���$����p���{��p��p�p����p��	p��
p��p���
���p����$p�����{����$�p��p��p��p��p���p���{�p�Maz��0az�az�az� �!�/�"�(az�#az�$az�%az�&�'az|az�)�,az�*�+azazv�w��-�.w�w�azaz��1�5�2�4�3iFnW�Rb�Qaz�6az�7�8�J�9�?�:�<�;j�b�M�=�>xvMb�m��@L��A�IL��B�C�F�D�Edb�iMb��G�H��`�iMaNb�c�b��K�L�U`��M�NM��O�R�P�Q��g4mg4�S�Tg4m�+m,�V�WML`�j��Y���Z�X�[���\���]�c�^�a�_�`t�az|azaz�b|M��d�w�eaz�faz�g�hgQkX�igQ�jgC�kgC�lgCgC�m�ngC�ogC�pgCgC�q�rgCgC�s�tgC�ugCgC�vgCm�x���y�}cW�zcW�{�|cW�ucW�~�������m����t���v���v�m��m������azaz��������v�v���v�����azv�azv�azi@AeazM�������������az|az����������az������M����aNL����Xc���iM��c�L����������|��|��|��||��|���|��|��|��|��|��|����������B|��|��B||��|����|��|cWaz��������azd��A��az|az������cW��@&az@&ML�������������|��Mazaz��M�azaz������az��az��az��az��az��az����az��azaz����azaz��az��azwNaz��������������az��az��az������`�����g4��dd����`�`���dm�L�d����Aeaz��|����az����az��az��azb���gCaz��azw�az����az��nWaz�����azaz����azaz��az��	�����azwaz��u�azu�az�
az�azjazaz�
�az�az��6az��azaz���(��az�az�az�az�az�b�az��#az��azaz�� azaz�!az�"gCazaz�$�%az�&az�'azazgQaz�)�*�1�+az�,azaz�-az�.az�/az�0w�az�2az�3azaz�4�5azazgCaz�7�8az�9�N�:�Gaz�;az�<�=�Aaz�>�?azaz�@azgC�Bazaz�Caz�Daz�Eaz�Fwazaz�Haz�Iaz�Jaz�Kaz�Laz�Mv�azaz�Oaz�P�Qazaz�Raz�S�Taz�Uaz�Vazaz�WgCaz�Y���Z�x�[�n�\�l�]azaz�^�_�f�`�c�a�bt�gCazgC�d�eazgCazb��g�i�hazt�u��jazgQ�kgCaz�mazazd�oaz�p�w�qAe�rM��sM��tM��uM��vM�LM�azA�y��z�|�{az@&nW�}�~L�azMaz��������az����������b�azaz����v�b���b���b���b���b���b���b���b�����b�b�����b�b������az��u�az����t�����azt�b�az��az��gCaz
az������b�azkXazL�������������az��az����azaz����azaz��az����azaz��azm��������������N����d��d���-dL�������cWN��c�NM����������M������M��MM��M��M����MM�oM���oM��M����������MM����MM��M��M��M����M��MMg���g�M����MM�;��g�Mg���������������������g�*�tOg�����g�M���q���������q�g��;q�����q�A���M��Mg�MMcWM��M����MM��g�MazcW��az����MazazM����:��������azaz����
��j�jaz�j��	��azv��w�az�v�t����az�
azaz�az�azb��azaz����azaz|�azMaz�azaz���'��$��"�@�@�@� @@�!@���#az@HGH �%�&@HG@�(�,�)az�*E�+Ez@Ez�-H:�.�6�/�3�0az�1�2t�azb�az�4az�5az@Ezaz�7az�8@�9@Ez�;�az�<�=az�>�?azb��@���A���B�d�C�a�D�W�E�Vaz�F�G�M�Hazaz�I�J�Kv�az�Lazv�azaz�N�Oaz�Pazaz�Q�R�Taz�Sb�az�Uazb�azazv��Xaz�Y�_�Zaz�[azaz�\�]azaz�^azv�az�`azv�az�b�cazv�az�e�waz�f�g�k�haz�iaz�jazv�az�laz�m�taz�n�oazaz�paz�qaz�r�sazv�az�u�vazv�v�azaz�x�y���zv��{az�|��az�}�~azaz�azv���az��azaz��v�az��v���azaz��azv�����������az��az��azaz��az��azv���az������azv�az��azaz����azaz����������az��v���v�az����v���v�azv���v�az��������v���v�azv���v�az��azv�az����az��az����azaz��az����azv�az������azaz��az����az��az��az��az��azaz��v�az��azaz��az����azaz��az������az������v�azv�az��az��azazv�����az��������az��azaz����az��azgCaz��az��azaz������az��az��azgC��azgCaz�������������az��az��az������azazgCazgC��az����az��az��azgC��az��az��azaz����azaz����azgCaz������az��azaz��az����azgCaz��az��az��az��azazgC�azaz�az�az�az�az��az�azaz�	�
azaz�azgC�
���az�az��gQaz��t�azaz���8���az�az�azaz�az�az�az��azazm� �(�!az�"azaz�#az�$az�%az�&�'azazm�)az�*az�+�2�,�/az�-�.mazm�0azaz�1mazaz�3�4�5azm�6�7mazazm�9�^�:�L�;az�<az�=�E�>�Aaz�?�@mazm�Bazaz�C�Dazmazaz�F�G�Hazm�I�Jmazaz�Kmaz�Maz�Naz�O�W�P�Saz�Q�Rmazm�Tazaz�U�Vazmazaz�X�Y�Zazm�[�\mazaz�]maz�_az�`az�aaz�b�k�c�gaz�dm�em�fmaz�hazaz�i�jazmazaz�l�m�o�nmazm�p�r�qazmazaz�smaz�uazaz�v�w���x���yaz�zaz�{���|��az�}az�~�azaz��azmaz��az��az����azazm��az��az��azaz����azazm������az��azaz��az��az��az����azazm��az��az��������az��az����mazm��azmazaz������az��az��azmm��maz����������az��az��������az����maz��azm��az��azmazaz������az����mazmmaz��az��az��������az��azm��az��azmazaz������az��azmmaz��az��az��az��������az��azm��az��azm��azmaz������az��azmm����azazm��az��az��azaz����azaz����az��azv�az�����������$������������MaznWazaz��i���az����azdaz��az���az�������azaz��az����az����az��mt���az��az��az��az��az�az�azaz��azazgCaz�az�az��azaz�	�
azgCaz�az�
�Gt����F�Gt�Gt�Gt��@�F���MF���!Gt��\������\��\F��\�q�� ���.��
�"��d�#I�F��%���&�*�'�(cWaz�)Lc�d{�+���,`��-�L�.�<�/�4m��0m��1�2m�m��3p<m�m��5�6�9m��7m��8+rm�m��:m��;+rm��=�B�>m��?m��@m�m��A+rm��C�Gm��Dm��E�Fm�m�+rm��Hm��I�J�Km��+rm��M�r�N�_�O�W�P�S�Qm��R+r+rm��Tm��U�V�*m�pZm��X�\m��Y�Z�[�9m��Hm�m��]m��^pZm��`�h�a�e�b�dm��cm��Wm�+r�fm��gm�m�+r�i�o�j�m�k�lm�+rm�pZ�nm�pZm��pm��qm��em��s��t�xm��um��v�wm�+rm�m��y�z�}�{�|+rm�+rm�m��~�Hm�����������m�d}���tm�����m���+rm�����+rm�m�+r����������m�m�pZ��p<m�+r������m�pZm�m���m�pZazL���������p�������������azazgQ����az��az����azaz��azv���az������������wcazgCw����v�gCgCazaz��az��wkX������������������azaz��azw�����v�azaz��azv�����������azv�az����wazubv�azgC����az����v�v���v�u�����gC����az�?b�t�az����az��������azaz��azm��az����mu�v�az��azaz����az��azazv�d��az����az��azaz��az��w�az����cWazaz����az��azaz����az��az��az����azv�v�az���������������d{aznWazaz��azM��������cWazMnW�����L���az��az��az�azaz��az�azgCazaz|�����
��	az|azcW����az�
����m��O��$������azgQ�azazgQaz�azgQ����gQazaz�gQaz��!�� azgQazgQ�"�#gQazgQaz�%�H�&�;�'�8�(�0az�)az�*�+azaz�,az�-�.az�/azgQaz�1azaz�2az�3az�4�5az�6az�7azgQaz�9�:gQazazgQ�<�E�=az�>az�?azaz�@�Aazaz�Baz�Caz�DazgQ�F�GgQazazgQ�Iaz�J�L�KazazgQ�M�NgQazazgQ�P�_�Q�[�R�W�S�U�TgQazgQaz�VgQazaz�X�Y�ZazgQgQazaz�\az�]az�^gQaz�`�faz�a�b�d�cazgQaz�eazazgQ�g�jaz�h�iazazgQaz�k�lazazgQ�nM�o�|�p�tM�q�r�sq�M�og��u�w�vg�g�Mg��x�y�;�zM�{Mg�M�}���~g����Mg�g�M��M����M��������������g���M����M��Mg�M��M��M��MM����M��M��M��M��MM��M����M�;Mg_L���az��az����az����azaz����az����azgCgCazaz��az��azgCaz��az��M�az���-����������������BaM�M�aN��azAe��M��m��maz��������dazaz����azv�az����azc�|Ae������������|az`�@&����az`�az������az��az��az��az��az��jaz������az��az������azt�waz��v�az����az����azaz��azjaz��������az��azazkX��azaz��azkX��������nWL�azM���������	��������az��������az��t���az��azaz��az����azaz��az����azt�azgCazaz����azaz����azgCaz�az�azaz�����azt�gCaz��t�wu�azaz�
az��azaz�
�azaz�t�azaz�az�az��mm��m�m�Km��!az��azaz�az�az��az� azazt��"�&�#�%�$t�gQb�t�azaz�'�(�)azgQgQ�*�+�,gQgCb�az�.�;�/�6�0�3�1�2d{azAaz�4�5@&azaz|�7�9�8azcWaz�:azazL�<�|�=�a�>�?azcW�@az�A�S�B�E�Caz�D@&azMM�FM�G�HM�IMM�J�KMM�LM�MM�NM�OM�P�QMM�R��Maz�Taz�U�Vaz�W�\�X�Zj��Yj��U�[j��Fj��]�_�d�^�~j�j��`j��d�bazaz�c�dM�e�x�f�sM�g�hM�iM�jM�kM�lq�q��mq��n�oq��pq�q��q�rq�O�q�M�t�uM�vM�wM_/M�yM�zM�{Mg�M�}���~az�azaz��az����������azv�azv���azu�az����az������������������NnWl���M�����M�c�M����M��c�aN����`�j�d����`������>`�nWM����N������Mb���`����d�e�����o���MM�������xvi�Mc�LM��������b�b�����tyB�e���������`�����`���������`�L��g4�����,MLcW��c�b�d��p�����LMMN��=���U���Y���c��������)������������������az��az�����R���R�����R���R���R���R�R���R���R���R���R�����sG����@������	�	�@��@��@	�@����F�Mi�az��@&������M��gC��kXgCkXaz@&�������+@&��@&�������������az����az��'����������sG�EE�����H:H E@�������EE�AH���
��EA��	�E�li�H �
sG�_�az�@�����sG�����@H�[��H�����az����M��sGk� �(�!�%�"�#@sGQ�$H���&�'NAAE�)���*sG@�,���-@&�.�R�/�>�0�8�1�6�2�3E@�4F���5����7sGA��9�<�:�;��HG@&�=H:AH:�?�E�@�B��AAe��C�D�_��Q�F�J�G�HM�g4�Ic��E�K�M[�L�HG�N�Q�O�PAe�F�E�HG�S�g�T�a�U�]�V�Y�W�X�AAe��Z�[E�@&�\E�@�^�_dNN�`y�}�b�e�c�d������f�Q�h�r��i�j�maz�k�l|�@+�n�p�o
@+�q�@+�s�z�t�y�u�w�v+@p�xaz@d|az�{���|�}@�@�~��_��߫������߫߫����߫���g���@az��@&��@��@��@��@��@��@E@������@&@&@@&��@az��������������������az��az��|��az��F�az������azv���az��az��az����azv�az��azaz����az��az��az����az����azaz����azazv���az��az��azaz��azv���az��az����az��azm��������az����azazm��az��azaz��azmaz��az��az������mgCgQu�az��Maz������azt�az��d��dd��d��d��d��d����d��d��dd����dd����d��dd����dBfd���������d��dd��d��d����dd����d����dA�A�d��dg4����cW��cW��cW��cW��cW��cW��cW��cWcW����cWcW��cW��cW��cW��cW��x�cW��d�dcW��dcW�cW��#�cW�	cW�
cW��cW��
cW�cW�cW�cW�cW�cWcW��cWcW�m:cWcW���"cW������������������ ���u�u�!�u��x�cW�$cW�%cW�&cWcW�'cW�(x�cW�*�h�+�F�,�3�-�0�.�/Aeaz`�nW�1�2nWazdp��4�6az�5@&c��7�8az�`��9�:�E�;�A�<azaz�=�>az�?az�@azazgCaz�Baz�Caz�Dj�azazt��G�b�H�_�I�J`�azaz�K�L�W�M�P�NgCaz�Oazb�az�Q�Razaz�S�T�Uwt�t��V�Kt��Xazaz�Y�Zaz�[az�\az�]�^mazmaz�`�aazcW@&az�c�f�d�eaz��az�gazL�az�i�u�j�q�k�n�l�mF�`�cW{
�o�pdazazL��raz�s�tM�|az�v���w�z�x�yazKq~sG�{���|sG�}���~�������������	Y���U�����U	Y�U���������U	Y�U�9����	Y�U�U	Y���������U��	Y�U���U��	Y���U	g�U��������	Y�U�U	Y���������U���U���U���U�����U�U�����U�U�����U�U�9	Y�����U�9�U�����������������U	Y���U������U�U�����	Y�U�U	Y�����U��	Y�U�����U	YsG�U������������	Y�U	��U�����U	�������������	g�����	g��	Y	YsGsG������sG��������������lx��elx��������lxeՙlxlx��lxesGlx����sG��@Jk��sG�������������sG�����[sGk������������sG���@lxJ������sG@����@��@�sGsG������������sG��sGsG��sG��sG��sG��sG����sG��sG��sG��sG�����+	Y�sG�az�az�sGsG��sGsG��	sG�
sG�sG+�sG�
����9az�az��z�+�����az�az�gQ�gQ�gQ�gQazgQ��0��*�gQ�gQ� gQ�!gQgQ�"�#gQ�$gQ�%gQgQ�&gQ�'gQ�(gQ�)gQgC�+�.�,�-gQazgQaz�/azgQaz�1�4gQ�2�3gQgQaz�5�7az�6gQaz�8gQazgQ��:�;���<�N�=��>��?���@��A��B��C�D���E�F���G�H��I���J��K��L�M��%��O{`��Pz��Q�R�g@�S�T�`�U�[�V�Y�W�X����@��
n�Z
n���\�_�]�^���	@�@��a���b�e�c�d�d���'�1�f���1�;�h���i�w�j�p�k�m���l�E�O�n�o�Y � ��c�q�t�r�s�m
��w���u�v���������x�|z��y�z�{z�clcl���}���~��!������|���|�{����������������� �������������������������������������������������������{��$�.�8�����B�T���������K�U����������@&�!@@&@@&��@&@�������@&����������d@&��@&������az��������@&E����M�az��`���������|�E�H:E����A��,>��������H:����,>��,>,>��,>,>����,>H:,>��,>��,>������N*�������������������@&az��jb���Ae��F�i@F������AA����`�`���`���`�����`���`�`��z��������E�
AE���@E�@��AE����A@A����@&az��MAe����Ae��Ae����Ae����B�B����_B�������B���AeN��m��AeB�Ae��������az��|�d����azcWL@&���xv�xvcW��`�azAe�az���az�az��	azaz�
|az�az�
azaz��azaz�|���t��%����az���sGsG�sG����sGsG�+J;@� �!L�azaz�"�#�$azL�Aeaz�&�)�'�(az@&Maz�*�+@@&�,@&�-�`�.�R�/�>�0�7�1�4�2@&�3@&�@&�5Ba@&�6@&+�8�;�}�9�:az@&d��<��=@&az�?�H�@�E�A�C�B@@&��Dq�b�#�Faz�Gaz@&az�I�L�JL�sG�K+@&�M�O�N@@&+�P�QMg�@&�_�S�X�T�V�UEaz�WE��H:�Y�]�Z�az�[�\az@&+�^�_`�l�y7c��a�j�b�e�c���dA��f�h��g�_���i�!��k�p�l�n��m��_�o��Q��q�r�s�
�Q�u‰�v@&@&�w�x@&�yˆ�z‚�{€��|�}�~��{���ƒ�„��…��†�‡���[�ŠŒ@&‹@@&Ž@&azaz�п‘é’�2“��”¶•´–³—az˜¬™¦š�›Ÿœ��ž���� ¢�¡���£��¤¥������§ª¨��©�_�_�k«.�2T­²®°�/¯�/��Q±�_Qa.�ML�µaznWg4·��¸��¹c�º��»�¼mm½¾m¿��m�m�m��m��m����m��mm��m��mazm��������mazm��mm��������az��az��azaz��maz��az������az��azmazaz����azmazaz��m������m��azmm��m��������mazm��azmaz�Oaz��azMaz�����������azM�Ov�����cWaz��M�p�-��_���
Lk������Qaz`���az���az�����MM�M�M�g�MM�	M�
�M�MM�
g�MM��M�MM��M��!M��M�M��M�M��M)�MM��M�M� M)xM�"�)�#M�$M�%MM�&M�'�(M)�M�*M�+M�,M�-�/M�.}qMM�0�1M)�M�3�z�4�v�5�Raz�6@&�7�8�>�9�<�:�;azb�gCaz�=azb�gQ�?�N�@�M�AgQ�Baz�Caz�Dazaz�E�Faz�Gazaz�Haz�I�Jaz�Kazaz�Lazw�gCazb��Oaz�P�QazazgQ�S�Tazd�Uaz�V�h�Wd�X�a�Y�]M�Zaz�[�\|az|�^|az�_�`azaz|�b�eaz�c�daz�azaz�faz�gaz|�i�naz�jaz�kaz�l�maz|az�o�saz�paz�q�razAeazaz�t�uaz�az�waz�x�yazp�dAe�{ã�|à�}ÇL��~HG�ÀÄHGÁHGÂHGÃHGazHGÅÆazHGazAeÈÉÙÊÒËÏÌÍazgCÎazt�azÐQ�azÑmazNÓÔazÕazÖ×Q�azØazazNdÚQ�ÛQ�ÜdÝazÞQ�ßazdáâM��,M�azäçåæpazazg_azècWazê�ë�ì�
íðîï������Lñ�òþóúôazõazazöaz÷azøazùazv�ûazüazýazkXazÿ����o����az���	az��az��az����kX�����������kX����������kX���"w�������-w*������������v�w�ubwc����b�a�w����������v�gC��wF����v�w8�?�����������������v��"��wF����w���-��������w*v�gCwU����kXgQw�v����������w�MwkX��w�ubwc�������?�v�v���b�v�w8wU�kX�kX�kX����kXgQw�v��kXw�M�
�
��azv�jgC��b�t�u�v�����az����ć��Z��8�ub��/�� ub���ub�v�w���w*w�Mb��!�(�"�%�#�$�"wFwwc�&�'kX���v��)�,�*�+v�v�gQw��-�.wU�w8�?�0ub�1ub�2�5�3�4���ub�-�6�7wgCv�ub�9ub�:�Q�;�Bub�<�=�?ub�>v�w��@�Aw*w�Mb��C�J�D�G�E�F�"wFwwc�H�IkX���v��K�N�L�Mv�v�gQw��O�PwU�w8�?�Rub�Sub�T�W�U�V���ub�-�X�YwgCv�ub�[�q�\v��]v��^�ev��_�`�bv��av�m�c�d��u�u�v��f�m�g�j�h�iv�v��t��k�l�1w8��t��nv��o�p�w��wqv��rv��sv��t�{v��u�v�xv��wv�m�y�z��u�u�v��|ă�}Ā�~�v�v��t�āĂ�1w8��t�Ąv�ąĆ�w��wqv�ĈĩĉęĊv�ċv�Čēv�čĎĐv�ďw��đĒjjw�w�Ĕv�ĕėĖaz���azĘ��Ěv�ěv�Ĝģv�ĝĞĠv�ğw��ġĢjjw�w�Ĥv�ĥħĦaz���azĨ��Ī��īv�Ĭ��ĭĴv�Įįıv�İv�w�IJijw*w�Mb�ĵļĶĹķĸ�"wFwwcĺĻkX���v�Ľ�ľĿv�v�gQw����wU�w8�?��v���v������������ub�-����wgCv�v���v���������v�������v���v�w�����w*w�Mb��������������"wFwwc����kX���v���������v�v�gQw�����wU�w8�?��v���v������������ub�-����wgCv�v���azazgC���f��Ŧ���~���9���b�����b����b��v�w���w*w�Mb��������"wFwwc��kX���v����	�
v�v�gQw���
wU�w8�?�b��b��������ub�-��wgCv�b��b���0��!b����b��v�w��� w*w�Mb��"�)�#�&�$�%�"wFwwc�'�(kX���v��*�-�+�,v�v�gQw��.�/wU�w8�?�1b��2b��3�6�4�5���ub�-�7�8wgCv�b��:�\�;kX�<�S�=�DkX�>�?�AkX�@v�w��B�Cw*w�Mb��E�L�F�I�G�H�"wFwwc�J�KkX���v��M�P�N�Ov�v�gQw��Q�RwU�w8�?�TkX�UkX�V�Y�W�X���ub�-�Z�[wgCv�kX�]kX�^�u�_�fkX�`�a�ckX�bv�w��d�ew*w�Mb��g�n�h�k�i�j�"wFwwc�l�mkX���v��o�r�p�qv�v�gQw��s�twU�w8�?�vkX�wkX�x�{�y�z���ub�-�|�}wgCv�kX�azŀœŁjłjŃŊjńŅŇjņw��ňʼnjjw�w�ŋŐŌŎōaz���azŏ��őjŒjv�jŔjŕjŖŝjŗŘŚjřw��śŜjjw�w�ŞţşšŠaz���azŢ��Ťjťjv�jŧ�Ũ��ũgCŪ��ū��ŬŴgCŭŮűůŰgC���"wŲų���-w*ŵżŶŹŷŸv�w�ubwcźŻb�a�w��Ž�žſv�gC��wF���v�w8�?�����������������v��"��wF����w���-��������w*v�gCwU����kXgQw�v�������������w�MwgC����w�ubwc�����������?�v�v�����b�v�w8wU��gC��gC��gC��������kXgQw�v���gCw�M��az��az�������az��az��az��az����������azaz���w�j�������azjw���az�w�����	��az�az���w�j����
�
��w���w��azjaz�az�az�az�����@�w��w���,��w����w��azw�az�w�����&� �#�!�"�w�w���$�%w�j����'�*�(�)w�jw���+w��w��-�<�.�5�/�2�0�1w�azaz��3�4w�j����6�9�7�8w���w��:�;jazazw��=w��>w��?w�����Av��Bv��C�W�D�Iv��Ev��F�G�Hv�v����1�J�Q�K�N�L�Mb�kXgCv��O�Pw8��t�u��R�U�S�Tu�t�t�m�Vv�mv��X�`�Y�]�Z�\�[u�v�v��1wq�^�_�wv���u��a�d�b�c���t�m�ev�v�t��g���hƯ�iƐ�jm�km�lƁ�m�rm�nm�o�p�qmv����1�s�z�t�w�u�vb�kXgCv��x�yw8��t�u��{�~�|�}u�t�t�m�ƀmv�v�mƂƊƃƇƄƆƅu�v�v��1wqƈƉ�wv���u�ƋƎƌƍ���t�mƏmv�t�ƑazƒazƓơazƔƕƛƖƘazƗaz�ƙƚw�j���ƜƟƝƞazjw��Ơaz�w�ƢazƣƩƤƦazƥaz�Ƨƨw�j���ƪƭƫƬw���w�ƮazjazmưƱjƲjƳ��ƴƸjƵƶƷjazazjƹƿƺƼjƻj�ƽƾw�j���������jjw����j�w���j������������jazaz�����w�j�����������w���w�����jazazj���G�����w���w���������w�������w�azaz��w����������������w�w������w�j�����������w�jw����w��w���������������w�azaz���w�j�������w���w���jazazw��w��w��w������%�������
�����
���	v�w���w*w�Mb��������"wFwwc��kX���v�����v�v�gQw���wU�w8�?��������"� �!���ub�-�#�$wgCv����&���'�>�(�/���)�*�,���+v�w��-�.w*w�Mb��0�7�1�4�2�3�"wFwwc�5�6kX���v��8�;�9�:v�v�gQw��<�=wU�w8�?�?���@���A�D�B�C���ub�-�E�FwgCv������H�I�\�Jj�Kj�L�Sj�M�N�Pj�Ow���Q�Rjjw�w��T�Y�U�W�Vaz���az�X���Zj�[jv�j�]j�^j�_�fj�`�a�cj�bw���d�ejjw�w��g�l�h�j�iaz���az�k���mj�njv�j�p�K�q��rȱ�s�l�t���uǢ�vnj�wv��xv��yǀv��z�{�}v��|v�m�~���u�u�v�ǁLjǂDžǃDŽv�v��t�džLJ�1w8��t�ljv�NJNj�w��wqv�Ǎv�ǎv�Ǐǖv�ǐǑǓv�ǒv�mǔǕ��u�u�v�ǗǞǘǛǙǚv�v��t�ǜǝ�1w8��t�ǟv�Ǡǡ�w��wqv�ǣw*Ǥ��ǥǽǦǮw*ǧǨǫǩǪw*���"wǬǭ���-w*ǯǶǰdzDZDzv�w�ubwcǴǵb�a�w��ǷǺǸǹv�gC��wFǻǼv�w8�?�Ǿ��ǿ��������v��"��wF����w���-��������w*v�gCwU����kXgQw�v�������������w�Mw�����w�ubwc�����������?�v�v�����b�v�w*wU��w*��w*��w*��������kXgQw�v���w*w�M���)��gC��� �������gC����������gC���"w�������-w*��������v�w�ubwc��b�a�w������v�gC��wF��v�w8�?�����
����v��"��wF��	w���-����
w*v�gCwU��kXgQw�v�������w�MwgC��w�ubwc�������?�v�v���b�v�gCwU�!gC�"gC�#gC�$�'�%�&kXgQw�v��(gCw�M�*v��+�c�,�D�-�5��.�/�2�0�1����"w�3�4���-w*�6�=�7�:�8�9v�w�ubwc�;�<b�a�w���>�A�?�@v�gC��wF�B�Cv�w8�?��E�T�F�M�G�J�H�Iv��"��wF�K�Lw���-�N�Q�O�Pw*v�gCwU�R�SkXgQw�v��U�\�V�Y�W�Xw�Mw��Z�[w�ubwc���]�`�^�_�?�v�v��a�bb�v�v�wU�dv��ev��fv��g�j�h�ikXgQw�v��kv�w�Maz�maz�n�ogC�pȨ�qȉ�r�zgC�s�t�w�u�vgC���"w�x�y���-w*�{Ȃ�|��}�~v�w�ubwcȀȁb�a�w��ȃȆȄȅv�gC��wFȇȈv�w8�?�ȊșȋȒȌȏȍȎv��"��wFȐȑw���-ȓȖȔȕw*v�gCwUȗȘkXgQw�v�ȚȡțȞȜȝw�MwgCȟȠw�ubwc��ȢȥȣȤ�?�v�v�Ȧȧb�v�gCwUȩgCȪgCȫgCȬȯȭȮkXgQw�v�ȰgCw�MȲ�azȳazȴȵ��ȶgCȷ��ȸȿgCȹȺȼgCȻv�w�ȽȾw*w�Mb������������"wFwwc����kX���v���������v�v�gQw�����wU�w8�?��gC��gC�����������ub�-����wgCv�gC��gC��������gC������gC��v�w�����w*w�Mb��������������"wFwwc����kX���v���������v�v�gQw�����wU�w8�?��gC��gC���������ub�-��wgCv�gC�Ʌ��@���up����up���up�v�w���w*w�Mb������	�
�"wFwwc��
kX���v�����v�v�gQw���wU�w8�?�up�up�������ub�-��wgCv�up�up� �7�!�(up�"�#�%up�$v�w��&�'w*w�Mb��)�0�*�-�+�,�"wFwwc�.�/kX���v��1�4�2�3v�v�gQw��5�6wU�w8�?�8up�9up�:�=�;�<���ub�-�>�?wgCv�up�A�c�Bub�C�Z�D�Kub�E�F�Hub�Gv�w��I�Jw*w�Mb��L�S�M�P�N�O�"wFwwc�Q�RkX���v��T�W�U�Vv�v�gQw��X�YwU�w8�?�[ub�\ub�]�`�^�_���ub�-�a�bwgCv�ub�dub�e�|�f�mub�g�h�jub�iv�w��k�lw*w�Mb��n�u�o�r�p�q�"wFwwc�s�tkX���v��v�y�w�xv�v�gQw��z�{wU�w8�?�}ub�~ub�ɂɀɁ���ub�-ɃɄwgCv�ubɆ��ɇɩɈv�ɉɠɊɑv�ɋɌɎv�ɍv�w�ɏɐw*w�Mb�ɒəɓɖɔɕ�"wFwwcɗɘkX���v�ɚɝɛɜv�v�gQw�ɞɟwU�w8�?ɡv�ɢv�ɣɦɤɥ���ub�-ɧɨwgCv�v�ɪv�ɫ��ɬɳv�ɭɮɰv�ɯv�w�ɱɲw*w�Mb�ɴɻɵɸɶɷ�"wFwwcɹɺkX���v�ɼɿɽɾv�v�gQw���wU�w8�?��v���v������������ub�-����wgCv�v�������v���������v�������v���v�w�����w*w�Mb��������������"wFwwc����kX���v���������v�v�gQw�����wU�w8�?��v���v������������ub�-����wgCv�v���v�������v������v���v�w���w*w�Mb��������"wFwwc��kX���v�����v�v�gQw���wU�w8�?�v��	v��
�
�����ub�-��wgCv�v���(�ʆ�t���A��+�u��u���u����u��v�m����u�u�v�� �'�!�$�"�#v�v��t��%�&�1w8��t��(u��)�*�w��wqu��,u��-u��.�5u��/�0�2u��1v�m�3�4��u�u�v��6�=�7�:�8�9v�v��t��;�<�1w8��t��>u��?�@�w��wqu��B�d�CkX�D�[�E�LkX�F�G�IkX�Hv�w��J�Kw*w�Mb��M�T�N�Q�O�P�"wFwwc�R�SkX���v��U�X�V�Wv�v�gQw��Y�ZwU�w8�?�\kX�]kX�^�a�_�`���ub�-�b�cwgCv�kX�ekX�f�}�g�nkX�h�i�kkX�jv�w��l�mw*w�Mb��o�v�p�s�q�r�"wFwwc�t�ukX���v��w�z�x�yv�v�gQw��{�|wU�w8�?�~kX�kXʀʃʁʂ���ub�-ʄʅwgCv�kXʇ��ʈv�ʉʫʊwʋʢʌʓwʍʎʐwʏv�w�ʑʒw*w�Mb�ʔʛʕʘʖʗ�"wFwwcʙʚkX���v�ʜʟʝʞv�v�gQw�ʠʡwU�w8�?ʣwʤwʥʨʦʧ���ub�-ʩʪwgCv�wʬwʭ��ʮʵwʯʰʲwʱv�w�ʳʴw*w�Mb�ʶʽʷʺʸʹ�"wFwwcʻʼkX���v�ʾ�ʿ�v�v�gQw�����wU�w8�?��w��w�����������ub�-����wgCv�w���������m��m����m������m��v�m������u�u�v�������������v�v��t������1w8��t���m�����w��wqm��m��m����m������m��v�m������u�u�v������������v�v��t����1w8��t��m���w��wqm���m�m��m���m�v�m����u�u�v������	�
v�v��t���
�1w8��t��m���w��wqm�m�m��m���m�v�m����u�u�v���$��!�� v�v��t��"�#�1w8��t��%m�&�'�w��wqm�)˷�*�x�+�R�,w�-w�.�C�/�4w�0w�1�2�3wv����1�5�<�6�9�7�8b�kXgCv��:�;w8��t�u��=�@�>�?u�t�t�m�A�Bmv�v�w�D�L�E�I�F�H�Gu�v�v��1wq�J�K�wv���u��M�P�N�O���t�m�Qwv�t��Sv��Tv��U�i�V�[v��Wv��X�Y�Zv�v����1�\�c�]�`�^�_b�kXgCv��a�bw8��t�u��d�g�e�fu�t�t�m�hv�mv��j�r�k�o�l�n�mu�v�v��1wq�p�q�wv���u��s�v�t�u���t�m�wv�v�t��y˘�zaz�{az�|ˊaz�}�~˄�ˁazˀaz�˂˃w�j���˅ˈˆˇazjw��ˉaz�w�ˋazˌ˒ˍˏazˎaz�ːˑw�j���˓˖˔˕w���w�˗azjaz˙az˚az˛˩az˜˝ˣ˞ˠaz˟az�ˡˢw�j���ˤ˧˥˦azjw��˨az�w�˪az˫˱ˬˮaz˭az�˯˰w�j���˲˵˳˴w���w�˶azjaz˸��˹az˺az˻az˼��az˽˾��˿�az�az�����w�j�����������azjw����az�w���az��������az��az�����w�j�����������w���w���azjaz��������kX��������kX������kX��v�w�����w*w�Mb��������������"wFwwc����kX���v���������v�v�gQw�����wU�w8�?��kX�kX�������ub�-��wgCv�kX�kX����kX���kX�v�w���w*w�Mb������	�
�"wFwwc��
kX���v�����v�v�gQw���wU�w8�?�kX�kX�������ub�-��wgCv�kX��5� v��!v��"�)v��#�$�&v��%v�m�'�(��u�u�v��*�1�+�.�,�-v�v��t��/�0�1w8��t��2v��3�4�w��wqv��6v��7v��8�?v��9�:�<v��;v�m�=�>��u�u�v��@�G�A�D�B�Cv�v��t��E�F�1w8��t��Hv��I�J�w��wqv��LΜ�M�az�N�O̤�P�}�Q�g�Rv��Sv��T�[v��U�V�Xv��Wv�m�Y�Z��u�u�v��\�c�]�`�^�_v�v��t��a�b�1w8��t��dv��e�f�w��wqv��hv��iv��j�qv��k�l�nv��mv�m�o�p��u�u�v��r�y�s�v�t�uv�v��t��w�x�1w8��t��zv��{�|�w��wqv��~̑�j̀j́̈ĵ̃̅j̄w��̆̇jjw�w�̉̎̊̌̋az���az̍��̏j̐jv�j̒j̓j̛̔j̖̘̕j̗w��̙̚jjw�w�̡̜̝̟̞az���az̠��̢j̣jv�j̥��̧̦̼t�̨t�̩̰t�̪̫̭t�̬v�m̮̯��u�u�v�̸̵̴̱̲̳v�v��t�̶̷�1w8��t�̹t�̺̻�w��wqt�̽t�̾t�̿��t�����t���v�m������u�u�v�������������v�v��t������1w8��t���t������w��wqt�������az��az����az������az��w������jjw�w�����������az���az������az��azv�az��az��az����az������az��w������jjw�w����������az���az����az�azv�az�����h��A���v�����v����v��v�w���w*w�Mb����	��
��"wFwwc�
�kX���v�����v�v�gQw���wU�w8�?�v��v��������ub�-��wgCv�v�� v��!�8�"�)v��#�$�&v��%v�w��'�(w*w�Mb��*�1�+�.�,�-�"wFwwc�/�0kX���v��2�5�3�4v�v�gQw��6�7wU�w8�?�9v��:v��;�>�<�=���ub�-�?�@wgCv�v��B�U�Caz�Daz�E�Laz�F�G�Iaz�Hw���J�Kjjw�w��M�R�N�P�Oaz���az�Q���Saz�Tazv�az�Vaz�Waz�X�_az�Y�Z�\az�[w���]�^jjw�w��`�e�a�c�baz���az�d���faz�gazv�az�iͮ�j͌�kb��l̓�m�tb��n�o�qb��pv�w��r�sw*w�Mb��u�|�v�y�w�x�"wFwwc�z�{kX���v��}̀�~�v�v�gQw�́͂wU�w8�?̈́b�ͅb�͉͇͈͆���ub�-͊͋wgCv�b�͍b�͎ͥ͏͖b�͓͐͑b�͒v�w�͔͕w*w�Mb�͙͚͗͛͘͞�"wFwwc͜͝kX���v�͟͢͠͡v�v�gQw�ͣͤwU�w8�?ͦb�ͧb�ͨͫͩͪ���ub�-ͬͭwgCv�b�ͯͿͰv�ͱv�Ͳ͹v�ͳʹͶv�͵w��ͷ͸jjw�w�ͺv�ͻͽͼaz���az;���v��v�����v�������v���w������jjw�w���v�������az���az�������A�����kX�����������kX����������kX���"w�������-w*������������v�w�ubwc����b�a�w����������v�gC��wF����v�w8�?���������������v��"��wF����w���-����w*v�gCwU��kXgQw�v�������w�MwkX��w�ubwc�������?�v�v��	�
b�v�kXwU�kX�
kX�kX����kXgQw�v��kXw�M��+�w�w��w���w�v�m����u�u�v�� �'�!�$�"�#v�v��t��%�&�1w8��t��(w�)�*�w��wqw�,w�-w�.�5w�/�0�2w�1v�m�3�4��u�u�v��6�=�7�:�8�9v�v��t��;�<�1w8��t��>w�?�@�w��wqw�B�o�C�Y�Dv��Ev��F�Mv��G�H�Jv��Iv�m�K�L��u�u�v��N�U�O�R�P�Qv�v��t��S�T�1w8��t��Vv��W�X�w��wqv��Zv��[v��\�cv��]�^�`v��_v�m�a�b��u�u�v��d�k�e�h�f�gv�v��t��i�j�1w8��t��lv��m�n�w��wqv��pΆ�qu��ru��s�zu��t�u�wu��vv�m�x�y��u�u�v��{΂�|��}�~v�v��t�΀΁�1w8��t�΃u�΄΅�w��wqu�·u�Έu�Ήΐu�Ί΋΍u�Όv�mΎΏ��u�u�v�ΑΘΒΕΓΔv�v��t�ΖΗ�1w8��t�Ιu�ΚΛ�w��wqu�Ν�)Ξ��ΟλazΠΡaz΢azΣίazΤΥΩazΦΧΨ�w�j��ΪέΫά�jw��ήaz�w�ΰazαηβδazγ�w�εζj���jθazικw���w�μazνazξazο��az��������az��az�����w�j�����������azjw����az�w���az��������az��az�����w�j�����������w���w���azjaz�����t���t���t���������t���t���azt���������t���t������w�j�����������t�jw����t��w���t���������t�azt����w�j�������w���w���jazazt�t���t��t�����t��t���	�
t�v����1���
���b�kXgCv���w8��t�u�����u�t�t�m��mv�v�t���#�� ���u�v�v��1wq�!�"�wv���u��$�'�%�&���t�m�(t�v�t��*�^�+�?az�,�-az�.az�/�7az�0�1az�2�4az�3az��5�6w�j����8az�9az�:�<az�;az��=�>w�j����@�K�Aaz�Baz�Cazaz�D�Eaz�F�Haz�Gazj�I�Jw���w��Laz�Maz�N�Vaz�O�Paz�Q�Saz�Raz��T�Uw�j����Waz�Xaz�Y�[az�Zaz��\�]w�j����_Ϯ�`χ�a�t�baz�caz�d�kaz�e�f�haz�gw���i�jjjw�w��l�q�m�o�naz���az�p���raz�sazv�az�uaz�vaz�w�~az�x�y�{az�zw���|�}jjw�w��τπςρaz���azσ��υazφazv�azψϛωazϊazϋϒazόύϏazώw��ϐϑjjw�w�ϓϘϔϖϕaz���azϗ��ϙazϚazv�azϜazϝazϞϥazϟϠϢazϡw��ϣϤjjw�w�ϦϫϧϩϨaz���azϪ��Ϭazϭazv�azv�ϯϰ��ϱmϲmϳϺmϴϵϷm϶v�mϸϹ��u�u�v�ϻ��ϼϿϽϾv�v��t����1w8��t���m�����w��wqm��m��m����m������m��v�m������u�u�v�������������v�v��t������1w8��t���m�����w��wqm��������������azaz��az��azb���azazgC��az��az��azaz��az����az��az��azazgC��az���az��az��az����az�az�az�azaz�az��azaz�az�az�azu�t��gC�����v����azv�azv�az�azv��	azazv�����
LMM@&��MazcW����N��azH:�NazBaN��@&N@&��F��7�az�az��/� @&@&�!@&�"@&�#@&�$@&�%�&@&�'@&@&�(@&�)�*@&�+@&@&�,�-@&@&�.�@&�0�1azd�2azd�3d�4d�5d�6daz�8�:L��9L�az�;�E�<azaz�=�>azaz�?az�@�Aaz�Baz�C�Dazv�v�azg4L�G�V�H�S�I�JMaz�Kaz�Lazaz�Maz�Naz�Oaz�Paz�Qaz�R�Baz�T�ULF�Eaz�Wе�X�\A�Yaz�Z�[azu�azE��]�^Ј�_�s�`�h�a�f�b�d�c	Y�9�UsG�esG�����g��	Y�i�o�j�n�ksG�l�m�G	Y
�sG�U���p�sG�q	Y�r	Y���t�|�u	Y�v	Y�w�z�x�y�G��	����{��
��}Ђ�~	Y�Ѐ	�	YЁ�9�9	YЃ�ЄІ�Ѕ��	YЇ��	YЉКЊ	YЋГЌАЍ�UЎЏ
�	Y	Y�Б�В�$��	�ДЗ�UЕsGЖ
		YИ�UЙ	Y�	YЛЫМУНТОРП	Y�9�3С	Y�C	YsG	YФШХЦ�9	YЧ�	Y�9	YЩ	YЪ��RЬбЭЮ�	Y�UЯа���a��вsGгsGд	v�9sGazжзazF�ийF�F�кF�лF�мнF�F�о��F���T��5�������������az��������������az��az��az��az��|az����������azaz��v�az����az��azw��azazv�az��az����az|az��|��az����gQazaz�������������|az|��az|az��������azaz|��azaz��|azaz��az����azaz����azaz|azQ���azdaz��az�pEz��
|EzAe������az���
az�az��az�az��	wazazt��azaz��
azaz��kXgQazAe`��az�az���azAeaz��4�M�azaz���+�b���%�azaz�az� �!azaz�"az�#�$azb�azaz�&�'az�(azaz�)�*azazb��,azaz�-�.azaz�/�0az�1azaz�2az�3b�azNaz�6�L�7�B�8azaz�9�:az�;azaz�<�=az�>az�?az�@az�Aazaz�Baz�Caz�D�Eaz�Faz�Gaz�Haz�Iaz�Jaz�Kazv�azaz�M�N�Q�O�P|azaz|�R�SazA�_az�U�?�V�5�Wѣ�X�i�Y�\az�Zaz�[v�azaz�]az�^�_az�`az�aaz�b�eaz�caz�dv�azaz�f�g�hazb�azw*�j�k
azaz�l�mт�n�|�o�waz�p�q�t�razaz�s|azaz�uaz�vazg_�xaz�yaz�zazaz�{az@az�}az�~�azazрazсaz�уёфыхчцazaz�razшazщъazaz@ьazэюaz|azяazѐaz�TђўѓњєѕL|іјazїaz|azљazfћazќazѝazfazџazѠazazѡazѢ|azѤ�3ѥѦBaazѧazѨ�'ѩv�Ѫ��ѫѷazѬazѭѮazѯazѰazѱazѲazѳazazѴѵazѶazt�azѸ��ѹѿazѺazѻѼazѽazѾazazt��az�az��az��az��az��azaz����������azt�azt�az��t�azaz����az��azaz��az��azt�������������������azaz��az��azwaz������az��azw��az��azaz����az��az��azwazaz��azwaz������wazwaz���	��az��az��azaz��az�������������az�azw�azazw�az�azazwaz��az�azwaz���azaz��azwaz�azaz��azazw�
�az����
az�az�az�azaz�azwaz�az��azaz����azaz�azwaz��azwazaz�az�az� az�!az�"az�#�$az�%az�&azwaz�(�2v��)�*v�v��+�,v��-v��.v��/v�v��0�1v�v�t�t�v�az�4azA�6�9az�7�8az
az�:�=�;�<|azdaz�>azMaz�@�J�A�Eaz�B�C�DazF�tyaz�F�Haz�G
azaz�IQaz�K�T�L�Raz�M�Nazaz�O�Pazaz�Qazwaz�SBaaz�U�`�V�_@�Waz�Xaz�Y�Zaz�[az�\azaz�]�^az�1azazt��a�b�Hazaz
�d�o�e�C�fԭ�g��h��i��j�}�kaz�laz|�m�n�t�oaz|�p|�q�razaz�saz��u�{az�vaz�w�xaz�y�zazgQgQazaz�|az|�~az@azҀ��azҁ҂��az҃҄Ҙ҅Ҏ҆҉҇azaz҈azv�ҊazҋazҌҍazv�t�gQҏazҐҔґazҒғazww*v�ҕazҖҗazb�b�wҙҰҚңқҟҜazҝҞazgCgCwazҠҡҢgCv�kXb�ҤҪҥҧkXҦ��ubҨҩv�w�wUwҫҭҬu��wmҮүv�u�v�wұҿҲҹҳҶҴҵu�v���v�ҷҸu�m�1v�ҺҼv�һmw�ҽҾt�m��w�����������jw�j������jjkX���az��azjmM��M��M��M��M��M����MM��������Maz��az��������������az�_cW�����N+P}�����'���az��azazL������az��azAeE��az��A��A�����������C����������������������������A�C���C��C��C��C��C�C���C�C��C�A��AC���
��
az����	��
azaz��az�
���jazaz�jazaz�az�azj�az�az�az���az�azazgC��gCazaz�az�B� �7L��!�"L�L��#L��$L��%�&L��'�/L��(�)L��*L��+L��,L��-L�L��.L��L��0L��1L��2�3L��4L��5L�L��6L���8���9Ӂ�:�^�;�J�<L��=�DL��>L��?�@L��AL��B�C�L�L���EL��FL��GL��HL��IL����KL��L�UL��ML��N�OL��PL��QL�L��RL��S�TL��L��V��W���X��Y��Z��[�\��]����_�v�`�p�a�gL��bL��c�dL�L��e�fL��L��hL��iL�L��j�kL�L��lL��m�nL��oL�L���qL�L��rL��s�tL��uL��L��wL�L��x�yL��zL��{L��|L��}L�L��~�L�ӀL�L��ӂӣӃәӄӋ�:Ӆӆ�:�:Ӈӈ�:Ӊ�:ӊ�:�:�ӌ�:ӍӔӎӑ�:ӏ�:Ӑ��:Ӓ�:�:ӓ�:i�:ӕ�:Ӗ�:ӗӘ�:�:�Ӛӛ�:�Ӝ�:ӝ�:�:Ӟӟ�:Ӡ�:�:ӡӢ�:�:�Ӥӯ�:ӥӦ�:ӧ�:Ө�:ө�:�:Ӫӫ�:�:Ӭ�:ӭ�:Ӯ��:�:Ӱӱ�:ӲӺӳ�:�:Ӵ�:ӵӶ�:�:ӷӸ�:�:ӹ��:ӻ�:Ӽӿ�:ӽ�Ӿ�+�:��:��:���:��:��������L�������L���L���L���L���L���L���L�����L���L�L����L�������L�L�����L�L���L�����L���L�L����L���L�L���L���L�����L�L���L����L�L���L�����L�L�����L���L�L���L�����L���L�L����������L�L������L���L�L��L��L���L�L���L�L���L�L���L�L���L��L��L��L�L��L���L�L��	�L���azcWazcW�az��azg4cW�az��azaz��az�az�azc��c�az��t��3��1�azaz�az�� �)�!�"di��#�$az|�%�(az�&|�'az|az|�*�-�+�,azL`�|�.az�/azaz�0Mazaz�2L�az�4�S�5�F�6azaz�7�8az�9az�:azaz�;az�<�=az�>az�?az�@az�Aaz�Bazaz�Caz�D�Eaz@azaz�G@&�Haz�I�Jaz�Kaz�Laz�Maz�N�Q�O�P�RT����R����Taz�Uazaz�V�W�e�Xazaz�Y�Zazaz�[az�\az�]�^az�_az�`az�aazaz�b�cazaz�dazu��f�j�gaz�hazaz�iazt��kaz�l�q�m�o�nazgCazaz�pv�azaz�r�sazmaz�u�yaz�v�w�xaz|azd�z�|�{azEazaz�}�~az�ԑԀԍԁԅ�dԂ�dԃ�dԄ�dF�Ԇ�VԇԊ�dԈԉF��dF�ԋ�dԌ�dF��dԎ�V�VԏԐ�dF��ԒԦԓԞԔԗԕ�VԖ�V�V�dԘԛԙ�VԚ�VF��VԜF�ԝF��VF�ԟԡF�ԠF��d�dԢԣԥ�dԤ�dF�F��dԧԨ�d�VԩF��VԪԫ�V�VԬ�VF�Ԯ�ԯԺ԰ԳazԱazԲ|azԴazazԵԶazazԷazԸԹazb�azԻ��azԼazԽԾazԿcWcW��cW��cW��cW��cWcW��x�cW��az���
��az��azaz�������������������az��azaz��az��waz��az��azaz��az��t�az������az��azaz��az��maz��az��azaz��az��v�az����������az��azaz��az��u�az��az��azaz��az��b�az�����az��azaz��az�gCaz�az�azaz�az�gQaz���az�az�az�azaz�az�wUazaz��az�az�azaz�az�	jaz�az�azaz�
az��az�az�azaz�azgC��S��O�az�azaz���!�az�az�azaz��az�azaz� w�az�"az�#azaz�$�%az�&�,az�'az�(�)az�*azaz�+wUaz�-�H�.�@�/�9az�0�1�4�2azaz�3azgCaz�5�6azaz�7az�8gCaz�:az�;az�<azaz�=az�>az�?gCazaz�A�Baz�Cazaz�Daz�E�Fazaz�G�azaz�I�Jazaz�K�Laz�Maz�Nazazb��Paz�Q�RazA|az�T�a�U�W�Vaz��az�Xaz�Yaz�Zazaz�[az�\az�]az�^az�_az�`�Baz�b�3�c�2�daz�e�p�f�l�gazaz�h�iazaz�j�kazaz�F�maz�naz�oazazg��qaz�r׏�s�@�t���uհ�vՓ�w��xaz�yaz�zaz�{az�|az�}az�~v�azv�ՀՇazՁazՂazՃՄv�azՅՆv�azv�ՈazՉՍՊw�Ջw�Ռw�v�w�ՎՒw�Տw�ՐՑw�w�azw�azՔ՜ՕazՖaz՗az՘azՙaz՚az՛v�azv�՝դaz՞az՟azՠաv�azբգv�azv�եazզժէw�ըw�թw�v�w�իկw�լw�խծw�w�azw�azձ��ղպճazմazյazնazշazazոv�չv�azջ��azռazսվv�azտaz��v�azv���������v�w�w���w�����w���w�w�az��az��az��azw���w�az������az��az��az��az��azaz��v���v�az����az��az����v�az��az����v�azv���������v�w�w���w�����w���w�w�az��az��az��azw���w�az�����������az��az��az��az�az��az�azv�v�az�az��az��v��v�az�azv��az���w�v�w�w���azw�az���	az�
az�az�az�
az��az�azv�v�az�az��az��v��v�az�azv��az���w�v�w�w���azw�az� �0az�!�"az�#az�$�+az�%�&w��'�)az�(azv�v��*v�w�w��,w��-�.azw��/w�azaz�1�2az�3az�4�;az�5�6w��7�9az�8azv�v��:v�w�w��<w��=�>azw��?w�az�A���B��C�X�D�Naz�Eaz�Faz�G�H�L�Iv�az�J�Kv�azv��Mw�v�w�az�Oaz�Paz�Q�R�V�Sv�az�T�Uv�azv��Ww�v�w��Y�lb��Z�[�ab��\b��]�^w��_w��`w�b�w��b�g�cw*�dw*�ew*�fw*w�w*w�h�i�"w�jw�kw�"b��m�n�tb��ob��p�qw��rw��sw�b�w��u�z�vw*�ww*�xw*�yw*w�w*w�{�|�"w�}w�~w�"ր֧ց֔ւ։փazքazօazֆazևazֈazv�az֊֏az֋az֌v�֍֎w�v�w�֐az֑az֒az֓azw�az֖֕֜az֗az֘az֙az֚az֛azv�az֢֝az֞az֟v�֠֡w�v�w�֣az֤az֥az֦azw�azְֺ֪֨֩az֫az֬az֭az֮azw�֯w�azֱazazֲֳִַw�azֵֶw�azw�ָazֹazw�azֻ��ּazֽaz־azֿaz�azw��w�az��azaz��������w�az����w�azw���az��azw�az���"�������b�����������b�����w�b�����w�b�w�������w*��w*��w*w�w*��ww*��w*��w*w������ww���"���"���"ww����kXwc��wckXb����������b�����w�b�����w�b�w������w*�w*�w*w�w*�ww*�w*�w*w���ww��"��"��"ww��kXwc�wckX��v�����	��
mv��v�m�
v�mv����v��������v��v���v�������mv��v�m�v�mv����v������ ��v��!v����#�^�$�A�%�)b��&b��'b��(w�w*�*�;�+�6�,�0w*�-�.w�/ww*w�1w�2�4�3�"w�"�"�5�"ww�7w�8w�9w�:wwc�<kX�=kX�>kX�?kXwc�@wckX�B�Fb��Cb��Db��Ew�w*�G�X�H�S�I�Mw*�J�Kw�Lww*w�Nw�O�Q�P�"w�"�"�R�"ww�Tw�Uw�Vw�Wwwc�YkX�ZkX�[kX�\kXwc�]wckX�_�w�`�gv��av��b�cmv��dv��e�fmv�m�h�r�i�nm�j�kv�m�l�mv�mv�v��ov��p�q��v������s�tv��uv��vv���v��x�v��yv��z�{mv��|v��}�~mv�m׀׊ׁ׆mׂ׃v�mׅׄv�mv�v�ׇv�׈׉��v�����׋׌v�׍v�׎v���v�אآב�%ג��ד׸הצוazזלחazטazיazךazכazv�azםazazמןףנעazסazv�v�w�פazץazw�azקazר׮שazתaz׫az׬az׭azv�azׯazazװױ׵ײ״az׳azv�v�w�׶az׷azw�az׹��׺�v�׻׼mv�׽v�׾׿mv��v�m����������v���v���v���v�mv�����v�������v���v�����v���������t�v�����v�����mv���v�����mv���v�m����������v���v���v���v�mv�����v�������v���v�����v���������t�v���������az���������az��az��az��azv�azaz���v�az��v�azv��az�az�az��v��v�w��azw�az�az��
���az�az�az�azv�azaz�	�
v�az��v�azv��az�az�az��v��v�w��azw�azaz��kX�kX���w�w�"w��!�wcw�w� wwc�"kX�#kX�$kXwckX�&�a�'�C�(�6�)�+�*gCkXgC�,�2�-v��.�/gCv��0v��1v��v�v��3�4gQ�5gQv�gQ�7b��8b��9�=gQ�:gQ�;gQ�<gQw��>�@�?ubw�ub�Ab��Bb�ubb��D�S�EkX�FkX�G�J�Hw�Iw�"w�K�O�Lwcw�Mw�Nwwc�PkX�QkX�RkXwckX�T�V�UgCkXgC�W�]�Xv��Y�ZgCv��[v��\v��v�v��^�_gQ�`gQv�gQ�b�x�c�p�db��eb��f�jgQ�ggQ�hgQ�igQw��k�m�lubw�ub�nb��ob�ubb�kX�qkX�rkX�s�tgC�ugC�vgC�wgCkXgC�yؚ�z؆gC�{�|v��}؁gC�~gC�gC؀gCv�؂v�v�؃؄؅v���v�؇؍؈gQv�؉v�؊؋gQ،gQv�gQ؎ؕgQ؏ؐؓؑw�gQؒgQw�ؔubw�ubؖb�ؗb�ubؘubؙubb�kX؛kX؜kX؝؞gC؟gCؠgCءgCkXgCأazؤ�إ��ئ��اسgCبةv�تخgCثgCجgCحgCv�دv�v�ذرزv���v�شغصgQv�ضv�طظgQعgQv�gQػ��gQؼؽ�ؾw�gQؿgQw��ubw�ub��az����ub��ub��ubb���azb���b�az��������kX����gC��gCkX��kX��kXgC��v�gC������gC��gC��gCv���v���v�v�v���az��������v�����gQ��gQv�gQgQ��gQ����w�gQw���az����w�ub��azub��ubaz���������kX����gC��gCkX��kX��kXgC�v�gC���gC�gC�gCv��v��v�v�v��az��	��v���gQ�gQv�gQgQ�gQ��w�gQw��
az��w�ub�
azub�ubaz�az�az�az����az����t�t�az��)��!�az�az�az����az�� ��t�t�az�"az�#az�$azw��%�&az�'azw��(w�az�*az�+az�,az�-azw��.�/az�0azw��1w�az
az�4azaz�5�6azaz�7�8az�9�>�:az�;az�<�=gCgQb�az�?az�@az�A�Bv�t�waz�D�v�Eaz�F�}�G�`az�H�Iazaz�J�Kazaz�L�Maz�Nv�az�O�P�Z�Qaz�Raz�Sazaz�T�Uaz�Vaz�Wazaz�X�Yazv�az�[azaz�\az�]az�^az�_azv��a�l�b�k�caz�daz�eaz�faz�gazaz�h�iaz�jazazgCaz|az�m�naz�ot�az�p�q�v�razaz�s�tazaz�uaz|az�w�x�{�y�zaz||azaz�|az|�~ف�azـAeazAeazق|كل�cم��نٱه٘وِىيmv�ًٌٍَw8��az�&ُv���kXّْ�?kXٕٓv�ٔv�v�ٖٗ�u�ju�ٙ٦ٟٚٛٝgCٜ��J�v�ٞv�t�٠٣١٢��azazu�٤٥u��;�;az٧٫٨u�٩٪u�azju�٬ٯ٭ٮv�azaz��ٰaz�iazٲٽٳٷazٴٵazٶgC�gCٸټٹb�ٺٻS����&pazb�پ��ٿ���wU���v���v�j��b�t���v�t�������������b�wwgQ��v�t�v�azv����;������������������v���v��"���"w�������v��1az����azu�u����������v���v������w�,���"������v�v�az��v�v�az���3���0����t���azt���azm��������az��az��az�az��azmaz�az���az���azmazaz�mazaz�az��azmaz����az�az��	��
azmaz��
mazmaz���azaz�az�mazaz�az�az�maz��&�� ���azaz�maz�az�azmaz�!az�"�$az�#maz�%azmaz�'az�(�+az�)az�*maz�,�.�-azmazaz�/mazt��1�2azwUaz�4�7�5ub�6wwjaz�8�9�:t�azazu��<�O�=�I�>�E�?�B�@�Av�j��w��C�Dv�azu���b��F�G�H�wp�����J�N�i�K�L�Maz�j�wqw��P�Z�Q�W�R�T�Su�jj�U�V�1�"v����Xwcw*�Yw*u��[�^���\az�]jaz�_�`�^w�a�b�"jv����d���e�f��g��h�s�i���j�k��l��m���n�o���p�q��r�az���t��u�az�wܫ�xڌ�yaz�zaz�{azaz�|�}azaz�~az�ڀazazځazڂazڃڄazazڅچazazڇڈazډazڊazڋazaz@ڍ�=ڎ��ڏڬڐazڑ|ڒڢړښڔږazڕg�|ڗazژazڙaz�pazڛڟڜazڝ|ڞazazv�ڠڡazdaz|ڣکazڤڥڦ|azڧaz|ڨ|�ڪazګazaz|ڭ��ڮھگڹڰڳڱazazڲ|azڴڷڵڶ|az�azazڸ|azںazڻazڼaz@ڽfazڿ�����az�az��az���������VE������|az��azaz|az����az��az|az����������az��azaz����azaz|az����������|������||�|�g4az|az����������azaz���razaz��az��|az��������|az|��az�����������6|azaz��@az��az���������az�azaz�|���������R����az|az���azaz|�az|az��
az����e�	azazK�����
az|�az�az��E�azaz|��%������az�|azaz�m�az�az�az��azgCgCaz� �#�!az�"azLaz�$azaz|�&�2�'�.�(�,�)�+�*az|az|azaz�-az|�/az�0�1g4az�caz�3�:az�4�5az�6az�7azaz�8�9azw*az�;azaz�<v�az�>��?ێ�@�t�A�L�B�Haz�C�Dazaz�Eaz�Faz�Gazv��Iazaz�J�Kazaz|�M�f�N�b�Oaz�P�_�Qaz�R|�S|�T|�U|�V|�W|�X�\|�Y�Z�[|��|�]|�^||��`E�aaz|az�c�d�'az�e|@azaz�gaz�haz�i�jaz�kaz�laz�m�p�naz�ow*w*wc�q�razgC�sazgCwc�uۃ�vaz�wۀ�x�z�yazaz|az�{�|�~��}�|��||azہazۂaz|ۄۈazۅazۆۇazaz@azۉۊۋaz|یۍ|azg�azۏ۽ې۲ۑۙےۖazۓaz۔ەaz�fۗۘ|azazNۚۯazۛۜ۠۝|۞۟azv���mۣۡۤۢwU�az�"ۥۦwc�iv�ۧazۨaz۩gC۪gC۫۬gCۭgCۮgCgCazaz۰az۱az|۳az۴ۺaz۵az۶az۷۸۹gCgngnazazۻۼazc�az۾�ۿ����|az������az����H:����H:H:����H:��H:��H:��H:��H:��H:s�H:��H:��H:��H:��H:H:��H:����H:H:��H:��s�H:|az���������azaz|��az����������H:H:����H:H:����H:��H:H:��H:���H:H:����H:H:��H:����H:��H:H:����H:s�H:H:��H:��H:��H:�H:�H:�H:H:��H:s�H:az�az���az����az|az�||az��	az�az�az@�
azaz����
�B��|���|az|��W��/����az��az�azaz|az��az�az��&��#�azaz� �!�����"��V�az�$az�%az|�'�*�(azaz�)az|az�+�,�.g��-Mq�|az�0�@�1�:�2�5�3azaz�4az|�6az�7az�8�9@az@az�;�>�<azaz�=azAeaz�?az|�A�J�B�Eaz�C�Daz|azaz�F�Gazaz�H�Iazaz��K�U�L�S�M�R�N�P�Oazazv��Qazb�az�|�Tazaz��az�Vaz|�X܊�Y�n�Z�b�[�`az�\�]az�^az�_azazv�az�aaz|�c�jaz�d�e�g|�f��Vc�hazc��ic�az�k�maz�laz�az|�o�|�p�v�q�s@�r|az�t�u|azaz|�waz�x�{|�y�zazaz��azE��}܃az�~�azaz܀܁܂azgQt�az܄܈܅az܆az܇azfaz܉az|az܋ܠ܌ܔ܍܏܎az|azܐܒazܑaz|ܓaz|azazܕܖܘܗazaz|ܙܚaz|ܛܞܜܝ|azaz|azܟaz|ܡܨܢܦazܣazܤazܥ|azܧazazAeazܩܪaz|azܬ��ܭazܮazܯazazܱܰazazܲazܴܳazazܵܶazazܷܸazܹܽu�ܺu�ܻܼu�u�azܾ��ܿ�u�az�u�u�az��u���u���u���u���u�u�az��ݾ������azaz����azaz��az��az��az����az��azaz��az����az��az��azaz����azaz��azw����B���������������az����|�v�����az��az|��azazQ�����az��az��|azaz��az��|az���az����azaz���azaz�����az|az|���az|az��5��az�az�az�|az���azaz�az�az�az�	az�
H:���&�
�����H:�H:�H:�H:�s�H:�H:H:��H:�H:s�H:H:��H:H:��H:�H:H:s�H:� H:�!H:�"H:�#H:�$H:�%s�H:�'�.�(N�)NN�*�+NN�,N�-s�NN�/N�0N�1N�2�3N�4Ns�N�6�;�7azaz�8�9�:|az��az�<�A�=�@�>�?@azazQ�|azaz|�C�_�D�Q�E�N�F�I�Gaz�H|�'az�J�Laz�K@az�Mazaz|az�O�Pazaz���Raz�S�X�T�V�Uaz|azaz�Waz|�Y�[az�Zaz�az�\�]az�^azgCaz�`ݩ�a�s�b�p�c�eH:�daz||�f�g�jTR�h�iTRTR@�k�n�l�mTR@@TRTR�oTR@�qaz�razaz|�tݨ�uݦaz�v�waz�x݃�yazaz�zaz�{�|az�}az�~az�݁݀azw�azaz݂azw�݄az݅ݖ݆ݐ݇az݈݌݉azaz݊az݋azw�azݍݎazazݏazw�ݑazݒazazݓݔazazݕw�azazݗݘazݙݠazݚݛݝw�ݜw�azݞݟw�azw�azݡݤazݢݣazazw�ݥazw�azazݧaz|az|ݪݮazݫݬazazݭ|azݯݴazݰazݱݲ�razݳazv�ݵݶ|azݷazazݸݹݽv�ݺݻazݼazv�azv�azݿ���������������������azaz��|az��az|��az�������azaz�6az��az|������������az��az|az|����|��|az|az��az������azazNaz��az����azazv���������������azaz��|az��azaz��|az��������Q�azaz|az����azaz��az��azt�������az�raz���az|v��azaz�az��azaz��az�azazwaz��azaz�az|��&���	��
�
�azaz�az|�azaz�az|az��az�az�az�azgCaz��!��az��az�azaz�v�az��az|az� az|�"az�#�$|azaz�%az|�'�F�(�:�)�8�*�6�+azaz�,�-azaz�.az�/�0az�1azaz�2az�3�4az�5azw�az�7az|az�9azNaz�;�A�<�=az|�>azaz�?az�@azf�B�Daz�Caz��az�E�az�G�K�Hazaz�Iaz�Jaz��Lޚ�M�Q|�Naz�Oaz�Paz|az�R�Saz�T�z�U�c�V�\�Waz�X�Zw��Yw��>�[azw�azaz�]az�^az�_az�`az�aaz�bazw��d�n�e�j�fw��gw��h�i�
w����
�k�l�
w��mw��
w�w��o�p�sw��qw��razw�w��t�
�u�v�x�wazazw�az�yazw�az�{�|ރaz�}�~j�azހazށazazނw�azބތazޅކވw�އazjazމފazazދjazލޘގޒ��ޏސazazޑjazޓޖޔazazޕaz��azޗjazޙazjazazޛޜazޝazޞ޾ޟazޠޭޡާazޢazޣazޤazޥazަazv�ިazީazުazޫazެazv�azޮ޴ޯazazްޱazaz޲az޳azv�az޵޶޺az޷az޸az޹azv�޻azaz޼޽azv�azaz޿az����az������az��az������azv�azv���az��azaz��v�azaz����az��az��azaz��azv����/�����������������azaz��az|����az��az|��azaz@����az��az��az|az��|az����������az��azaz|����az����az��azazv�az��|������VE�������az�az|az|az���|azaz|��������az�|az�azEz�|azaz��azaz|�	��
az�azaz�az�
azv��az�azaz�c�����az�||az�azaz��az��TR@TR@�� �azaz�|azaz�!�"�#az|��$�%�&|��'��(��)���*�+��,��-��.��|�0�Q�1�<�2�6az�3�4azaz�5|az�7azaz�8�9azaz�:�;az�?az�=�G�>�A�?az�@azaz|�B�Daz�Caz|�E�F|azaz���H�N�Iaz�Jazaz�K�L�MgCb�ubazaz�O�Paz@az�R�\�S�Xaz�Taz�U�Vaz�W|�*H:az�Yaz�Z�[az|az�]�d�^�aaz�_�`azf|az�b�caz|az�e�k�f�h�gazazku�i����j�|�l�n�mazaz|az|�p���q��r��sH �t��u�w�vazAM�x�az�y�zߺ�{ߎ�|߁L��}L��~L��߀L�L��߂߈߃L�߄߆߅L�L��߇L�L�iL�߉ߊߌߋL��tL�L�ߍL��ߏߣߐߛߑߕߒߓL�iL�ߔ�tL�ߖߘߗ�t�tL�ߙߚ��t�tL�ߜߟߝL�L�ߞ�tL�ߠߢߡL�L��t�tL�ߤ߮ߥߩߦL�ߧߨ�tL�i�tߪ߭߫߬�L��L�L��߯ߴ߲߰L�߱L�iL�߳�:�ߵ߸߶߷�L�iL�L�߹��t߻��߼��߽��߾��߿��L��L�L���L����������L��L��
�����tL�L�����L�L�����L���L�L���L�����L��:L�����������L�L����L��tL�����L���L���L�������������L����L���L��L����L�����������������L������������xl�[������������L����L������������t������L��L�i����L�L�i���L�iL���L��L��	�
L�L�>����
�L��L����L�L�������ti���L�L��az������AeL��_az�H azH � �~�!�%�"az�#�$H aznWaz�&�'az@&�(�3�)@&@&�*�+�,�@&�-@&�.@&�/�0H����1H��2@&H�@&@&�4�5�`�6�N�7�G�8�;�9�:@&A
�|��<�B�=�?Ae�>Ae@&�@�AAe�@@&�C�E�D@@&@�F@@@&�H�L��IAe�JH:�K@AeAe�MAeB��O�T�P�RAe�QAe|��SEzAe�U�^�V�ZAe�W�XAeB��YB�Ae���[�\�]Ae���Ae�_Ae��Ae�a�r�b�i�c�f�d�e��AeAeE�g�h��~E��j�m�k�l�g��Ae|��n���oaz�p�qF�����s�y�t�w�u�vEzAeEz�E�xAe���z�|�{��������}�Ae��@&��@&@�������A���H:Ae�~|��A�AAeA�A���EAAeEA������A�A���Ae�EzE�A���E��A�����E�|���EazH:@����EzAeAeE��A��AeE���@&@&F��L�@&@����L������L��azL�az��L�L���i��i����������C�����D:��������i�D:���������������������eDH��i��e������i�E�i�i�4������azL�az��������L�azL�i�L���L�az�������L���L���azL����L���L�����azaz����az��az��az��az��azaz����az��azaz��az������az����azazjaz��az�jaz�L�L���azaz��az�azaz��az�az�azaz�az�az��az�azaz�az�azj�	��
�>L���L�L��
��$�L��L���!����B������eB���B��B��B��B���B��eB��e���� ��
�"i��#i�i���%�4�&�-�'az�(�*kX�)b�gC�+�,wcazazv��.az�/�1az�0jv��2�3mu�w�v��5az�6�<�7�9az�8azt��:�;gQmv�gC�=azjaz�?��@LL��A�B���C��D��E��F�u�G�jaz�H�I�`az�J�K�Qaz�Laz�Maz�N�O�Paz�
�
�&�Raz�S�Y�T�W�U�V�4�b��az�Xazw��Z�]�[�\�&�4�b�^�_��azw�az�aaz�baz�cazaz�d�e�gaz�faz��h�i�����az�kaz�lv�v��m�nv�v��ov��p�q�sv��rv��tv�v��v��waz�xazaz�y�zazaz�{�|az�}��~azw�azaz�azw��az��az���az�az���az���
�w��&�az�az�az���4�b���az����az���az�azw���w��&�4�az�����b��azw���L�������������D�����L���������D��az�����az��az��az�az�Laz������az����az����az����az��az��az�
��������az�
�&w������4azw��&��az��az��������w��4azw���az�az��az��az����az��az������b���baz����az��az��azaz����azaz������az��az��az��az��azw���az��az��az��azw�az����azv���v���v�v�����v�v�����v��v��v�Q��v��v�v�Q���
�az�az�az�az�azaz�az���az�az�az�az�	azaz��
v��v�az�azaz�az��az�az�az�az�azazQ���]��G��j��b�v���GgC���9gC�� �*�!�$gC�"gC�#w*��%�(�&�'��w*���gC�)v��+�2�,�/�-�.�"�gQ��0�1J�J�S�R7�3�6�4�5J�v���7�8"�gQ�J��:gC�;gC�<�C�=�@�>�?J�S�R7J��A�BX�1X�DgC�E�FgC�1gC�H�ZkX�I�J�RkX�KkX�L�M�P�N�OkXw*�w*�QkX�kX�SkX�TkX�U�X�V�WkXv�"���YkXv�kX�[kX�\�f�]�akX�^kX�_kX�`kX"�kX�b�c�e�dkX�kXkX���gkX�hkXkX�ikX�k��l��m�v��n�o�}v��p�q�v�r�t�sv���v�v��uv����w�z�x�yv��J��{�|J�S�R7J��~��������J�J���S�v�v�R7����J��V���J���-��v��v��v�V�v��v����v�v����v��v���J���-v��v��v�����v�TTv���v�����v��gC��gC�gC���gC�gC�v�"����gCgCv��gCgC"��gC�gCgC��gC�gC�����w�������w��w����w��w��[���������w�wcw�w���w�{�����w���������wU�-�i�?���������������������M����ww�w��^���������w��[wc����{���wU��w���w���w��-w������������w�������w���w��i�����?����w������������Mw�^�"�����"a���������������,w�~�����a���������,w�~������<RT��
�����?�<RT��	�?pp��
�w�w�w��w�S��w��w��w��w��w�S�w���8v����!v��v������v���wF���� ��wF��w8�"�1�#�*�$�'�%�&J�J�S�R7�(�)J�v�v�w8�+�.�,�-J�J�S�R7�/�0J�up����2�5�3v��4v�S�v�v��6v��7v�up�9v��:v��;�D�<�@�=v��>�?���S�v��Av��B�CTv�v�Tv��E�Fv��v��H��I��J�q�K�dub�L�M�_�N�Rub�Oub�Pub�Qub��S�X�T�V�Uubw�ubub�Wub�[�Y�\�Z�[ubwc{���]�^�w��[wc�`ub�aub�bub�c�"{���eub�fub�g�lub�hub�i�j�k��������ub�m�n�p�o�������ub�r�w�s�t��u�zw�vw�w�x�yw����{��|�~�}w�ww�w������w��,~������,~�����w��TC?UTC?Uw�w�w�&�w�w�w�&w�w�ww�w�����weeJ��wJ�w�w�v�v����v�������v�w8v�v��v�w8����v�J���"���0J���"�v��v������0v�v�p�v�pv���+�����v�����v�����v��v��v����������v�wU�-�i�����?������v���v����������Mw�^wF��v���v������������v�������v���v������wU�-�i�?v����������������M����w�^wF������������������a���,����~���J���������J�S�R7J��������a����������,~�����J�J�S�����R7J�����v��v������v�v��v���v�v��+�	v��
v��v�v��+�
�#b��b����b��b��b��b�w*�������w��[wc��{��w*��� ��w��[wc{��!�"��"�"b��$b��%b��&b��'b��(b��)�*�b��b��,w�-�FkX�.kX�/�0�7kX�1�2�4kX�3kX��5�6�wF����8�?�9�<�:�;�wF�����=�>��,��@�C�A�B~J�J�S��D�ER7J�����GkX�H�X�IkX�J�Q�K�N�L�M�,�~�O�PJ�J�S�R7�R�U�S�TJ��;�;���V�W����kX�YkX�ZkX�[�\�+kXkX�0�^�r�_��`��a�w�bkXkX�ckX�d�e�m�f�jkX�g�h�ikXw*�w*�kkX�lkX�kX�n�t�o�qkX�pkX��r�s�kXkX�&�ukX�vkX�&kX�xgC�y�gC�zgC�{gC�|gC�}�~�w*���w*�������gC���gC��gC����v��"����J�J�S������gCR7gCgC�gCJ�����gCv����"��J�J��gC������S�R7J�gC��gC�1�gC�gC�1gC���b����b��b��������b�wU�-�i���?���������Mw�^wU���-�i�?���b���������������Mw�����^b�b�w���������a�v�v��������w�a�v�������������v����J�����"�0��J���������"�0������b���b���b�����b���b���b���b�������b��wU�-�������������b������ib��?b��������������M����w�^�wU��������b��-b�b��b��i����b��?�������Mw�^��
������a�����,��~���a����	�
����,~�b�����b�����<RT�?<���RT�?��]��<�v�v����'v���� ���v���v�v��v����!�$�"�#v��J��%�&J�S�R7J��(�7�)�0�*�-�+�,�J�J��.�/S�R7J���1�4�2�3SQJ����5�6-�SQ�8v��9v��:�;J���-v��=gQgQ�>�?�HgQ�@gQ�A�B�E�C�DgQw*�w��F�G�[wc{���I�X�J�Q�K�N�L�Mw*�w��[�O�Pwc{���"�R�U�S�T�"v�gQ"��V�Wub�v�gQ�YgQ�ZgQ�[�\"�ub�gQv��^�_�����`�a�f���b���c���d���e��w8�g���h�l�i���j�kw8V�V����m�o���n��T�p�qT�����s��t��u���vww�w�x�|w�yw�zw�{w��}��~�w����;?U�;?Uw�w�w���w�w�w��wgCb������ww��ww�w��w��wS�S�w�wU�wU��wU��wU�wU��wU�^wU�^�wUwU�wU���wU�����������������TCSQX������S�TCSQX���S����������e�J����T����������������������������w8������������w8up���������up������������������G���������P�����������m������m��m��m��t�������������������������������S	�o����mR�W��m��m��m��m��m��m��m��mm�����t������t���t��t����t�u�u�v��t�������v�t�w�w��wqt�t��1�t���w�wwq�1�t����	�t��
��
t��t����������t�����t��t��t��t���t��t��t����t��t���t���8�t�t�� �!�/t��"�#�(�$�&�%t���t�t��'t����)�,�*�+t��������-�.��S	S	t��0t��1t��2�5�3�4t�t��6�7t�����t��9u�u��:�;u��<�Cu��=�>�@u��?u����A�B��t�t�u��D�I�E�G�Fu��u�u��Hu���J�M�K�Lu���u��N�Ou�TzTzu��Q�l�R�`�Su��Tu�u��Uu��V�W�]�X�Zu��Yu����[�\u��u����^u��_u��u��av�v��b�cv�v��dv��e�f�i�g�hv�wv����j�kwv���v��m�x�nmm�o�pmm�qm�r�s�v�t�um�������wm��m�yu�u��z�{�u��|u��}�~�u��u�������u������u��u��u��Tz������������ww���w�w�����w���wwq���1t����w�w������wq�1t��Z���Zww�������
�
��w�w�v�v���v���v��v��v��w�������v�wv�v��v����v�v��
m��mm���m�m���m���om�m�m��mW�������������w�w���w�������������������wu�v�u�����v�wwqt���������wwqt��Z������Z��w���w���w�����w���w����u���u���������u���u���w8��u���u���u���u���u�������u�u�����u�u���u�����u���u���u�v�u�m���v�v��v��v����v��v��v�w����v���wv��v���v��������w�v�v���	v��
v����v�v��
�v��v����R�R�v�t�mu��u�m��az�azu�����t���/��������#������ ���!���"��u��$���%�,�&�)�'�(v�u�v�w�*�+wq�1wwq�-���.���1���0�1�1�1�2�8�1�3�1�4�1�5�6�7�1u�v�u��9�1�:�A�;�>�<�=v�w��wq�?�@t�w��wq�B�E�C�Dt��1�1���F�1���1�H��I��J��K�t�L�c�Mjj�N�O�Zj�P�Q�Tj�Rj�Sj��U�W�Vjj��X�Yjj�w��[j�\j�]�`�^�_j�w�j�a�b�jj��dw�w��e�f�nw��gw��h�i�kw��jw���l�m��j��ow��pw��qw��r�sj��w��u��v�w��w�x�w��y�z��{�}�|w���w�w��~w������w�����
���
��&�4���������b����w��w�������&�4�b�w������w��w��w���w��w��w��w�w����w��w���F�w��jj��j��j�j�j�j�������j�jj�j������j��w������w����������jj�j��j��j��jj���j��j�����������������������������������������
���������
w�j�����w��&�4�������������b����w�����j�w��&���������4�b��������jj��j����j��j��j����w�w���w��������������w��
w����&�4��������b��w����&�4�b�w��w��w���w�����azjw�azaz�azv���5��2��1w*���(b���	��
�b��b���
�b�����J�����b�Jb�b��b�w����w*b�w��ia���!�����M�"kX�"�� ���v�v��"�%�#�$�0�����&�'gQwU�?��)b��*b��+b��,�/�-�.�-��ww�0b��^b�kXw�3�4�M�wcaz�6��7�I�8�B�9az�:azaz�;az�<az�=�>�@�?azazw��Aazw�az�Cazaz�Daz�E�Fazaz�Gaz�Hv�az�J��K��L�[az�Maz�N�O�U�P�Raz�QazL��S�Taz�az��V�X�Waz���Y�ZD����\�s�]�i�^�b�_az�`�aL�az�az�c�f�d�e���D�g�h������j�o�k�m�laz��azaz�nazT�p�r�q�azTazRF�t�{�u�x�v�wazF��az�y�zSCaz���|��}�~az�>��az��az�az�az�azaz���az�az�
���
�L�Laz�azaz��azaz���az�az�azv��az�azazv�az�az��az���azaz�az��az�azv�az�az�azaz�az�az�v�azaz�Maz��������azaz��|���az��az�az�"��w*mv�u�az�az�gCt�Ae�az��������azaz�az��azazgQ����az��|azaz��|az����������az��az����az��b�wUaz��t�v�az����az��azaz|��az����az||@����azAazAe����������������@&��@&@����az��azaz����az��az��azu�az@&��@&��A@&����@&��@&az��������E�azaz|�����M�M��MM�����������������������M����M��M��	M��
M��M�[M�M��
M��M��M��M��M��rM��n�����V��7��(��$����azgQ�azazgQ��"� �!azgQgQazaz�#azgQaz�%�&azaz�'gQaz�)�0�*az�+�.�,�-azgQgQazaz�/azgQaz�1�2�4az�3gQaz�5�6azgQgQaz�8�J�9�E�:�>�;�=�<azgQazazgQ�?�B�@�AgQazazgQ�C�DgQazgQaz�Fazaz�G�H�IgQazgQaz�K�O�Laz�Mazaz�NgQaz�P�Saz�Q�RazazgQaz�Taz�UazgQ�W�w�X�d�Y�\�Zazaz�[gQaz�]�`az�^az�_azgQ�aaz�b�cgQazgQaz�e�r�f�l�g�iaz�hgQaz�j�kazgQgQaz�m�o�nazgQaz�p�qgQazgQaz�sazaz�t�u�vgQazazgQ�x��y��z��{�}az�|azgQ�~azazgQ��az�gQazaz�gQaz������azgQazgQ��azgQazgQ��az�azgQ�azgQaz�az�az�az�azgQaz����������az����azgQazgQaz�azgQ��az�az�gQaz�azaz�azgQ���az����azgQazgQ�azgQaz�az�azaz�azgQ����������azazgQaz�azgQaz�az�azgQ���az�az��azgQ������azazgQaz��gQaz��������az��gQaz������gQazgQ������gQ��azaz��az��az����azaz��gQazazgQ��������gQazaz��azgQ������azazgQ��azazgQ���������az����az��az��gQaz��az��azazgQ�������������azgQaz��az��az�az��azaz��azazgQ�azazgQ���azgQaz�azgQaz�azaz�az�gQaz����az��	�az�
azgQ��
azgQgQaz�azaz��azazgQ�azaz��az�azazgQ��O��!����McW`�g_�MM�az� azd�"���#�$cWMM�%�&�ZM�'�(�C�)�7�*�1�+�.�,�-�w�1t�u��/�0�wazv�az�2�4�3azv�az�5�6azv�v�az�8�<�9�:�1azv��;�1m�=�?�>�Kv�v��@�B�Av�v�azv�az�D�R�E�K�F�I�G�Ht��1�1az�Ju�az�1�L�O�M�Nu��w�waz�P�Q�wazw�az�S�W�T�1�U�V�waz�1az�w�Xaz�Ywaz�[��\�z�]�l�^�e�_�b�`�ab�gCgCkX�c�db�kXubw�f�i�g�hv��^v�wU�j�kgQ�?{�w*�m�t�n�q�o�pgCgQgCw��r�s�w{���t��u�x�v�wv�az�v�b��ykXaz�{��|��}��~�gQgCkXu���azu�azu����w��w�1��u�t�wj����v��v����1wF�����1��1�w�w��u�����������u��Kt�u�m��Ku�����u��u���u����u��u�u���u�u��azu��u�u��u��u��u��azu�u��u�����t�����wv�ww����wu�wqu���u��1�Ku�����������azgCt�az���1az��azaz���1az����az��az�����K���K���K���K���K���K���K���Kw�K����az��az�K����az�K�K�1���N��L��������o�������o���o�����o�o�����o�o���o�����o���o�o���o��,��o�o���o���o�����o�o���o���o���o�����o�o��o�q��o�o��o��o���o���o���o��o��o�o���o��o��oq��o��o�o���o�o�	�
�o��o�o��
�oq��o��4��o��(����o��o�o���o�o���o�o��o��o���o�o�+�o���o� �o�o�!�o�"�o�#�$�o�%�o�o�&�o�'�s�o�)�o�*�o�+�o�o�,�-�o�.�o�o�/�o�0�1�o�o�2�o�3�o�1�5�o�6�B�o�7�o�8�9�o�o�:�o�;�<�o�=�o�o�>�?�o�o�@�A�o�o�J�Cq�q��D�Eq�q��Fq��Gq��H�Iq�q��J�Kq�q��L�Mq��Fq�nWN�P��Q�T�R�SazA�A�U�E��V�W��X��Y�q�Z�i�[�f�\u��]u��^{�{��_{��`{��a�b{��c{�{��d{��eaz{�u��gu��hu�b��j�n�k�l�wu�v��mv�v�u��ou��pu�az�r�z�s�vw�tt��ut�v��w�xwt��yu�wv��{��|�w�}�~azwv�kX�az�v�b�gC���������azjazw�1�wwt��v��b��w�����u�wu��v���v�azb�gC�����wazb�w�w��wwb�wqaz�t��t��az�w���b�t�v��gCwgC�azaz��|az��az�azaz��az|azaz��azazAe���������az�azsG���sG�	Y�	Y��	Y	Y�	Y�	Y���	Y	Y+���sG����	Y��	Y����������	Y��sG�U	vsG�����9sG������sG�sG�����sG������sG��������sG�U�U������sG�sG��������������sGsG�sG���sG��sG��sG	gsG����������	�sG	�����	�
���	g����	YsGsG	Y��	g	g���	gsG���azAaz��@&��@&@&E����@&@@&@&�E�@��3��/��-@&�@&������@���	@�
@�@@@&�
@�@�@@@&@�@�@�@��@@@&@���@�@�@��@@@&��&��"� @�!@&@@&�#@�$�%@@&@&@�'�*�(@�)@&@@&@�+@�,@&@�.azAE��0�1Aeazaz�2azE��4�T�5�7az�6daz�8�S�9az�:�B�;azaz�<az�=az�>az�?�@�Av�azv�az�C�Maz�Daz�E�F�Jaz�G�H�Iu�azu�az�Kazaz�Lu�azaz�Naz�O�Pazaz�Qaz�R�KazazQ�U�Waz�VQazaz�XazE��Z��[�k�\���]�K�^��_��`�~�a�l�b�ckuL�L��dg4�eg4�f�gg4g4�hg4�ig4�j�kg4mg4�m�}�np��oM��pM��qM�M��r�sM��tM��uM�M��v�wM��xM�M��y�zM��{M��|M�rM�ML�����n�M�M�M��azp�cWg_�d�dd��d�����d�d�b��b��c�b�c��d�d�d�d�d�������d�oٌ�Q��Q��d�CA�������a�oٌ�Q��Q��d�CA��d���d�d�db�d�d�d��b�c�J�b�d�������d�dg_��MM�M��MM�MN��������ku������M������dj�M������l��`�`�ak����dM������dc�|��@&az��@&az���������azM�az��az��Ae���������������������������NNC����C���C����������������A������������������������A�N���������C��C��N��B��B��B���BC�N��������B��C���NAC����
�	��
C�AN��C�NN�C�N�����NA�C����ANN���N�az�Eaz��az�azd��(d� d�!d�"�#dd�$�%d�&dd�'Bfdaz�)az�*az�+�,�5�-�1az�.�/�0t�mmt��2az�3az�4azwaz�6�=az�7�8�:az�9az�>�;�<�>azazu��>�@az�?��azaz�Aaz�B�Caz�Daz�Eaz�Faz�Gaz�Hazaz�I�Jaz��az�L���M�[�N�Taz�O�P@&�Q@&�Razaz�Sazd�U�X�V�Waz2TazAe�Y�ZazQF�az�\�a�]�_�^azAeL��`azaz��b���c��daz�e�x�f�j�g	Y�h	Y�i	YsG	Y�k	Y�l	Y	Y�m�n	Y�o	Y+��p�q	Y	Y�r�s	Y	Y�t�u	Y�v	Y�w	Y+�	Y�y��z�	Y�{�|	Y	Y�}	Y�~+�	Y	Y�	Y�sG��	Y+�	Y���	Y�	Y	Y��+�	Y+����	YsG	Y	Y�	YsG�az���az��������V����Vi@B�6�F����V���VB����F��F��V��V�8i@���F��VF�i@�i@F���������Gt��GtF�F��F��6��V��V���V������BF�GtF�GtF�����F��6�8�������8�8��F���F���F�����azb�����gQb�b�����azb�az��az����az����������b�gQ��b���b���b���b�b�����b���b�b�����b�b�����b���b��b���b�b�gQazM����������������QAeQaz����Eaz|azaz����azAeaz������az����AeazazBaaz��E�c����V�����#������cW��L��L��L��L��L��L��L�L�_�`�L����d�������|�	�-�
�L�����
L�L��L���L�L���L��L�L��iL��L��L�L����#L���L��L��L��L�L��L�� L��!�"L�L���$L��%L�L��&�'L�L��(L��)L��*L��+L��,L�i�.�[�/�L�0�>�1�9L��2�3L�L��4L��5L��6L��7L��8L��L��:L��;L��<L��=L�i�?�I�@L��A�C�BL�L���DL�L��EL��FL��G�+�H�+L�L��JL��KL���M�V�NL��OL��PL�L��Q�RL��SL��TL�L��UL���W�L��X�YL�L��ZiL��\�oL��]�^�i�_�d�`L��aL��bL�L��c�L�L��eL��f�gL�L��h�L��jL�L��kL��l�mL��nL��L��p�sL��q�rL�L��L��tL��uL��v�wL�L��x�yL�L��z�{L�L��L��}L��~L����L��L��L���L�L��L���L�L��L�������������L��L��L���L�L��L���L�L���+L��L�L��L��L���L�L��L��L���L�L���L��L�L���L���L������L��L��L���L�L���L�L���L��L��L��L�L�����L�L���L�L��L��L���L��L�L��L���L�������L���L�L�����L�L����L�L���L�����L�L��L���������L�������L�L���L��L�i������L�L�����L�L����L���L�L�������L���L����L���L�L���L�����L�����L��L��������l��� ������L�����L�����L�����L���L�L����L�L��L��L����L��L���L��L��L�L���L��L�L���L�L���L�L������L��L��	L��
L���L�L��
L��L���L�L��L��L���L�L��L���+L�L���L�L���L�L��L���L��L��L��!�@�"�8�#L��$�2L��%�&�,L��'�(L�L��)�*L��+L�L��L��-�.L��/L�L��0L��1�L��3L��4L�L��5�6L�L��7iL�L��9�:L��;L��<L��=L��>��?L��L��A�X�B�FL��C�DL�L��EL���G��HL��IL��J�S�K�OL��L�ML�L��NL���PL��QL�L��R�L��TL�L��U�VL��WL�L���Y�^�ZL��[L�L��\L��]L��L��_�`�eL��a�bL��cL�L��diL��fL��gL�L��h�iL�L��j�kL�L�i�m�L��nL��o�pL��q�yL��rL��s�tL�L��u�vL��wL��xL�L��:�zL�L��{�|L��}L�L��~�L��L��L����L��L�L��L��L��L��L���L�L��L��L��L���L���L��L��L��L���L��L�L���+L��L�L��L��L��L���L�L���L������L��L���L�L���L��L���L��L���L�L��L���L�L��L��L���L�����L���L���L��L�L��L��L��L���L�L��L��L��L�����L�L�i��L�L�����L���L��L�����L���L���������L�����L�����L�L��������L�L�����L�L��L�����L���L�L������L���L��L�����L�L�����L���L���L�L���L�iL�����������L���L���L��L���L�����L���L���L���L���L�L���L��L��L�L���L�iL�MM��� ��	�M�MM��M�MM�M�M�M��M�����M�
d�����
�b��iMN��b�ku`�L���N�Mb��`��g_e�b�iM�����dLLak��Mb�L�N�!�"Np�`�M�$�7�%sG�&sG�'az�(azaz�)az�*az�+az�,�-azaz�.az�/�0az�1az�2az�3az�4az�5az�6azaz�B�8az�9���:�Y�;�E�<�=azjaz�>�?�A�@az�azaz�B�Cazaz�D|�6�F�Q�G�Laz�Haz�Iaz�J�Kazaz|�Maz�Naz�O�Pb�azazt��R�X�S�Tjazaz�U�Vaz�WazNazazj�Z�l�[az�\�_az�]az�^MAe�`az�aaz�baz�cazaz�daz�e�fazaz�g�hazaz�iaz�j�kazaz@�m��n��oaz�paz�q��r��s�~az�t�uaz�vaz�waz�x�{az�yaz�zazv�v��|�}azv�azaz�az�az��az�azaz�v��v�azazv�����||��|�|�|�|�|�|W|�����az�azaz��az�az�az�az��azv�v�azazv���v��v���v��v��v��v�v���v�v�azv���v����v��v���azv��v�v��v�u��az�az�az�az�azaz��azv�az����az�azaz�az�az��az��az��az��az��az����az��v�az��azv�az������az��������az��az��az��az��az����azazv�az����az����az��az����azv�az��azaz����azazv�az����az��az��az��az��az��az��az����u�azazv�azv�az	Y���M��az���J�����@&������������z[�@��KsGsG@����+sG+sG��sG@sG��	���sG����sGsGo�
�
��@+���sG@sG��������@J����@�_@��@�sG���@@���J@&���6� �+�!�%�"���#�$��M߫�&�(��'�_��)�*���_��,�2�-�/��.a��0�1Q�Q���3��4�_�5-���7�A�8�;�9��:��_��<�>�=�����?�@���_�B�E��C��D�_���F�G��H߫�I��_��K�LEaz|az�Naz�Oaz�Pazaz�QL��R�SЛM�Td�Ub�az�Wazaz�X�Yazaz�Zaz�[az�\�]iM�^�be��_�`�ap�t�b�iMb��c�dxv�eM�f�h�g����y��i�jz���ו���l���m���n�~�o�M�p�I�q�H�r�?sG�s�t�az�u�v�{az�waz�x�y�zazb�v�v��|�j�}j�~azj�jjaz���������az�az���������wv�w*��wv�v�v������"gQgQ����w���v���w�^v�������������kXgCv�kX�m�mt����u��u��u��������������[w�{��wc{�ub����u�v���1���wwqt��Z���b���j�jj�����������������������wU������?���-������w��w�^����v���b����������������v�v�����w����������ia��MwFb������������������v�v��0��������������������wU��?����w�-�����������az����v�wwUb������������b�v�w�w��������w���M�^���?b�t�����t�mmu���azjwcgQ��������u�t�mv���jazupv��	��
azv�kX��az�
�w��w��w�w���w��w��w���w���w����
�w�����$az���!����u��� ������u��"�#wq�Zu�v��%�2�&�)�'�(wc{�{��[�*�,���+w�wc�-�0�.�/��w��ia��1b��MwF�3�B�4�;�5�8�6�7b����v��9�:v��0�����<�?�=�>�������@�A�wU��?�C�J�D�G�E�F���-��v��H�Iv�www�K�a�L�M�^v����N�O�X�P�S���Q�Rw���w��T�V�U�iw��i�Wa��ia��Y�^�Z�\�[�Ma��M�]wF�MwF�_b��`b�wFb��b��c�q�d�j�e�gb��fb����h�i����v��k�n�l�mv�v�v��0�o�p�0�������r�y�s�v�t�u��������w�x������z�}�{�|����wU�~�wU���?���������?�����-���-����v���v��v�ww�ww�b�����w�^�^v���v�����b�������az��Y�����������������������az����������������az���w��w��w��w�azw�w��w��w��w��w�az������i��i��i��iaz�i�i��i��i��i��iaz�����a���a���a���a�aza�a���a���a���a���a�az���������������M���M���M���Maz�M�M���M���M���M���Maz������wF��wF��wF��wFazwFwF��wF��wF��wF��wFaz����������b���b���b���b�azb�b���b���b���b���b�az�����b���b���b���b�azb�b��b��b��b��b�az��*�������b��b��b��b�azb�b��b��b��b��b�az�	��
���������
��az����������������az������������az����������az� �%�!v��"v��#v��$v�azv�v��&v��'v��(v��)v�az�+�B�,�7�-�2�.v��/v��0v��1v�azv�v��3v��4v��5v��6v�az�8�=�9�0�:�0�;�0�<�0az�0�0�>�0�?�0�@�0�A�0az�C�N�D�I�E���F���G���H��az�����J���K���L���M��az�O�T�P���Q���R���S��az�����U���V���W���X��az�Z���[��\�s�]�h�^�c�_���`���a���b��az�����d���e���f���g��az�i�n�j��k��l��m�az���o��p��q��r�az�t��u�z�v��w��x��y�az���{��|��}��~�az�������������az�������������az��������az��������az���������wU�wU�wUazwUwU�wU�wU�wUaz��������az��������az������?��?��?az�?�?��?��?��?az�����������az�������������az����������-��-��-az�-�-���-���-���-az����������������az����������������az����������v���v���v�azv�v���v���v���v�az������v���v���v�azv�v���v���v���v�az���:����������������w��w��wazww��w��w��waz������w��w��wazww��w�w�waz�������w�wazww�w�waz���w�wazww�w�waz���	w�
w�wazww�
w�w�waz��$������^��^��^az�^�^��^��^��^az�� �v��v��v�azv�v��!v��"v��#v�az�%�.�&�*�'���(���)��az�����+���,���-��az�/�6�0�3�1���2��az�����4���5��az��7��8��9�az�;�z�<�[�=�L�>�E�?�B�@wU�AwUazwUwU�CwU�DwUaz�F�I�G��H�az���J��K�az�M�T�N�Q�O�?�P�?az�?�?�R�?�S�?az�U�X�V���W��az�����Y���Z��az�\�k�]�d�^�a�_�-�`�-az�-�-�b�-�c�-az�e�h�f���g��az�����i���j��az�l�s�m�p�nv��ov�azv�v��qv��rv�az�t�w�uv��vv�azv�v��xv��yv�az�{��|��}��~��w�wazww�w�waz���w�wazww�w�waz��������az������az���w�wazww�w�waz��������^��^az�^�^��^��^az���v��v�azv�v��v��v�az�az��������az����������az����az�az�w�����������az���w���azw�azw�w��w��w�azaz��������w���w�azw�w���w���w�az������w���w���w���w�azw�w�����������w���w�azaz��azw�w���w���w�az������w���w���w���w���w�azw�w�������w�����w�w���azw�w���w���w���w�az�����kXgC����v�v�����v���v���v���v�v��azv���<���j�����w��w��w��w�jw�w��w��w��w��w�j�������	��
�j�����
�����j��j����j�j�j�jjjj�j�j�j�jj��1��'� �$�!w��"w��#w�jw�w��%w��&w�jw��(�)�,w��*w��+w�j�-�/�.w�jw�w��0w�j�2�7�3���4���5���6��j�����8���9���:���;��j�=�t�>�U�?�J�@�E�A��B��C��D�j���F��G��H��I�j�K�P�L���M���N���O��j�����Q���R���S���T��j�V�a�W�\�X��Y��Z��[�j���]��^��_��`�j�b�k�c�g�dw��ew��fw�jw�w��hw��iw��jw�j�l�p�m��n��o�j���q��r��s�j�u��j�vj�w�x�|�yj�zj�{jjjj�}j�~j�jj��������������w���w���w�jw�w���w���w���w�j����������������j����������������j��������������������j����������������j�������������j�����������j���c�����������az��azw�������w�����������w�����w�w���w�w�w���w���w���w�w�w���w�w���w���w�����w�w�w������������
���
���
���
���
w��
�
���
���
���
���
���
w�������������������������w�������������������������w�������mt�����m������t���t���t���t�mt�t���t���t���t���t�mm������������������������������m������������������������m��m�������������������m����������������m����v�v�gQ�	�
���"��"�
�"��"��"��"gQ�"�"��"��"��"��"��"��"gQ��C��(u����"���������� ���!��u������#���$���%���&���'��u��)�6�*�0�+���,���-���.���/��u������1���2���3���4���5��u��7�=�8���9���:���;���<��u������>���?���@���A���B��u�u��D�Eu��F�Pu��G�H�L�I���J���K��u������M���N���O��u��Q�Z�R�V�S���T���U��u������W���X���Y��u��[�_�\���]���^��u������`���a���b��u��dv��e���f���g���h�u�i�o�jwc�kwc�lwc�mwc�nwcubwcwc�pwc�qwc�rwc�swc�twcub�v�|�w���x���y���z���{��ub�����}���~�������������ub����������{���{���{���{���{�ub{�{���{���{���{���{���{�ub������w���w���w���w���w�ubw�w���w���w���w���w���w�ub��ub����������{���{���{���{���{�ub{�{���{���{���{���{���{�wc�������[���[���[���[���[ub�[�[���[���[���[���[���[ub������������������j�������������j�����������j����������w���w���w�jw�w���w���w���w�j�������������j�����������j������������������������j����������������j����������������j����������������jj���������������j�����������j��������j�����j��j��jjjj�j�j�jj�j��
�����	�j�������
�j��.�������w��w�jw�w��w��w�j������j������j� �'�!�$�"���#��j�����%���&��j�(�+�)���*��j�����,���-��j�/�7j�0�1�4�2��3�j���5��6�j�8j�9�<�:j�;jjjj�=j�>jjaz�@�AsGsG�BsG�CsG�DsG�E�FsGsG�G	YsGsGazsG�J�K�LAeaz@&M�N�s�O�W�P�V�QM�_�RsG�S�TsG�U;
sG@az�X�gaz�YF��ZF��[�\F��]F��^F��_F��`F�F��aF��bF��c�dF��eF��fF��F��haz�i�o�j�m�k�lazb�azt�b��nt�gCaz�p�q�rgQu�v�t��t�|�uazaz�v	Y�w	Y�x	Y�y�z	Y	Y�{�9	Yaz�}azAe���az����azazE��*������zazsG�����!��;��������������������azazM��azazAe������az����xv��xv����xv��xvxv����xv��xv��xv����c���c�����c�c�����c�����c�xvxvc�c�����c���c���c���c���c�c�xvsG��������sG������sGsG ��@��@@���@�������sG��sG[��������sG����sGsG����sGsG����sG��sG��sGsG��sG������	Y��sG��	YsG	Y����sG	YsG������sGsG	Y	YsG����@&azlaz���qaz��������������H:������E��azgC��E����azv��������\���5���
��������v���������u���u���u�u���u���v�����t����������Zv���1��t��1t�����t�������t�������t���wwqm��mt����wU�������wcwc�[��w�{�{�ub����	w����� ���
��?U�gC�gCkXgC���������w��ia��b��MwFb����b��������������!�-�"�,�#�*�$�'�%�&��?���-�(�)��w�^���+gQ�"gQS��0�.�1�/v�v��0����j�2j�3j�4���6�G�7�B�8�=�9az�:��;�<w��j���>az�?az�@�Aw����
azaz�Caz�D�E�Fw�azv�az�H�Laz�Iaz�Jaz�Ku�u��M�W�N�R�O�Pmv�kX�QS��v��Swc�T�U�Vwcububw��X�Yjv�az�Z�[w����]�v�^�k�_�e�`�c�a�bv�v�upub�dv�v�gC�f�h�gv�ubaz�i�jkXv�v�v��l�r�m�p�n�ov�kXupubv��qazv��s�tv�v��uazv�az�w��az�x�y�az�z�{az�|�}gCwUu��~v�t���az��azaz����az����b�v�w*azaz������az��azv�����v���wUu�����v�u�az��azw������������������������wmu�maz��t��������w�1v�wq��������gQazgCaz��������v�u�����wUv��0b���������b����M������w�iwF�-��������a��^������������������az������kXazaz����az��v�m������azaz��azv�����t���t��v�u�����������������azgCazu�t���v�v�������w8�����wu�w��azaz��az��az�&��������������azu�������gQ��j����������v�az��az������wc��ubw�����t�mm�����
�������������������ib��M����b�w�wF�?��������w����������-a��^����������������������ib��M����b�w�wF�?��	w������
b��azw�����az��w��
�����1�wwqv���u��Z����J��&���azv����w��#� �!az�&az�"v�u��$�%w*azv�v��'�7�(�+�)�*gCv�v�u��,�-v�b��.�/mv�v��0v��1�2v�az�3�4v��5v��6v�azv��8�@�9v��:w��;�=�1�<�wv��>�?wq��Z��A�E�Baz�C�Dw��w��F�Iv��Gv��H����wu��K�v�L�a�M�W�N�V�O�R�P�Qw��j���S�Uw��Tw�����azazkX�X�[�Y�Zu�wUv�v��\�_m�]�^t�mt��`w����b�m�c�i�d�ew�azv��f�gazu��hwUaz�j�ku�kXgQ�l�"gQ�n�q�owv��p�����razj�s�t�u�jj���w���x�|�y�{az�zmv�azgQ�}���~�azw�wU��j��j����v�t�����������wwqaz����kX��azt������������Zv���1�����wwq���Ae�����C���,���
��������������������������������gCb�gQkX����v�ubazw��������b�azwgC����gCwcw*gQ������azaz��az�"���������-w�azw�����wwgQaz������������������azgCaz��azazb���������azgCb�azaz��azgQ������������kXazgQb�����kXb�gQb���az��azgCaz����az��az��v���v�az��az������azw�j�����jw�az������v�������������v����1w��v�wv���������m��t�v�����v�wv�m����������v�v�v�v���v�w����v���v�m��v�wv�az��azv�������az��azv�azaz����az��az�������v��v�azv�az��v�azv�az�az�	azv�az���azaz�
�az�az�az������azjw�az��az�jw�����jw�jaz�azjaz�� azw�az�!�"�'�#az�$w��%w��&w�w�jv��(�)az�*az�+azazw��-�@�.azaz�/�0azaz�1�2�7�3�5v��4azm�6t�waz�8�<�9�;az�:t�azm�1�=�>��u��?u�azu��Aazaz�Bazw�az�Daz�E�Faz�Gaz�H�i�I�Oaz�J�K�MgC�Lb�az�NgQkXaz�P�]�Q�W�R�Taz�S�M�-�U�Vazv�wcw*�X�Z�Yazv�w*�[�\wazwaz�^�c�_�a�`azv�az�bazw�az�d�faz�ewaz�g�hgCaz��gC�jaz�kaz�laz�maz�naz�o�pgCazgCaz�r���s�|az�taz�uaz�v�waz�xazaz�y�zaz�{azw�az�}az�~�������sGk+��������sG�sG���azaz@&����������������@&az�@����@&����@��@��@��@��@@&@@&azaz����az@&��az����az��az��az��az��az��az��azaz��az��az����azaz��az��az��azgC��������az��N|az��Aeaz������azgCaz��az����az��az��az����azaz��azw8az������az��az����������az��gQv���azt�m��������azgQgQazgC��gCaz��azaz����azaz��az��u�az����������%����������azaz����az��az��az��azaz����azaz��az����az��az��az��azaz��az��az��az�BE�azaz�����$��E������������az��az��|az��������|�az|����|����az@az��az��az|azaz��������az|�azaz�az|�azaz���b�azaz��	gQ�
�gQw�?gQ�
�����az�az�az��az�az�T|�az���azaz|��!�az�� az���w�w*�"��az|�"az�#az�|AesG�&�(sG�'sGaz�)��az�*�+az�,�a�-�C�.�8�/�3H:�0�1�2�Fi(���9�4�6�5H:�9s�H:�7�s��9�=�:H:�;�<,>Ns�s��>�A�?�@ON*s��BH:�9,>�D�Q�E�HH:�FH:�G!�s��I�N�J�Ls��Ks�H:s��Ms��OH:s��Ps�H:�R�Z�S�VH:�T,>�U�Fs��W�XH:�YH:��H:�[�_�\�^H:�]�FN*,>N*�`H:N*,>�b���c�p�d�k�e�h�f�g�*s��9s��i�j�*��lH:�m�ns�N�oON��q�y�r�u�s�t�9s�H:�v�x�wN*H:s��*�z�~�{�}i(�|s��N*s����N*s���s�s�������������������G�F�����G��VF���������F���i@F������F�i@�������������G�H�F������VI���d����F���s�s�����s�OH:������������GtG������G�G������������}i@����F�Gi@�V������������G��q�GGt��G�����������}F����i@�HG��az��az��az��az��azaz��az��az����azaz����azazu���������az����azazsG������azaz����������������������������������������������������������������O���azaz������F�az��azaz��������azAeazaz������@&azazAe���
az����Q��az������sG������	YsG	Y��sG	YsG��sG������sG��������sG	YsGsG���sG�sGsG�	YsG���sG�sG	g���		gsGsG	g����
az|E�Aeaz�azAe�����j��C��+��*��"�azaz�az��azaz�az��azaz�az�� az�!azv�azaz�#gC�$�%gCgC�&gC�'gC�(�)gCgCazE�az�,azaz�-�.�>az�/�0az�1az�2az�3az�4azt��5�6az�7az�8az�9az�:azaz�;�<�=azt�t�azaz�?�@azaz�Aaz�BgCb��D�Faz�EH:az�Gaz�H���I�`�J�S�K�Oaz�L�Maz�Nazazw�az�P�Qazaz�Razv��T�\�U�Z�V�X�WazgQv��Yazb�az�[azv�az�]az�^azaz�_v�az�aaz�baz�c�h�d�faz�ev���u��gt�azaz�iazu��k�w�l�n�m�az@�o�pazE�az�qaz�r�sazaz�t�uaz�vazazgC�x�zaz�ydaz�{���|azHG�}�~�W�������������������w��w��������gCgC����������wkXv�gC��������b���wgC����wgC����������������gC������v�gCkXb���������kXw����v�gCgCw������v�v�w����wgCkX��wkX��������������������v�kXgCkX����b�v�v���v��������������kXb�wv�����kXw�w����������b�v������wv�b�wc����������������kXgCwUkX����b�wUwb���������v�wkX����gC��w��w��w����kX�kX�w���������w��kX��ww�������v���v���w��w�����v���wv�gC����v�wv�b���� �����������v�kX��v�b�a���������v���v�kXv���wUv�����v�����v�wv���������w��kXv�����kXv�w������gC�gCb���b�v�wUgC��	�v�gCv��
�v�wv�gC�
��v��gC�w������kXwwwU��a�wUv�v�����v�v�a�����kXb��wgCv��!�?�"v��#�'�$�%v�kXgC�&v�kX�(�-�)�*gC���+�,��kXgCb��.�4�/�1wU�0v�w�2�3w�wb�gC�5�<�6�9�7�8v�v�v�wU�:�;wUv�kXw�=w�>w�w�@�Mv��Av��B�C�I�D�F�Ev�v�b�v��Gv��HkXv��Jw�Kw�Lw�ww�Nw�Ow�P�Qw�R�TkX�Sv�w�U�Vv�wkXgCkX�X�Y���Z�y�[�h�\�`kX�]�^w�_wkXwkX�akX�b�c�dgCv��e�fv�gCw�gv�w�i�s�j�k��w�lw�mw�n�pkX�ov���q�r��v�v�w�tw�uw�vw�wwkX�xkXa��z���{���|��v��}v��~���wv���w������������wgCb�kX������v�v��v���wUv��������������a�wUkX�����v�v�v���w��w��w������wb�v�����������������wU�������w�v���������wubv�b�����a�gCw�-��w��wv�����w������gC��w��w��w��w������w��w��w��wgCw��wazw��w��w��w�-�McWaz���������������xaz�����"������az����az��az����az��w*��w*w*��w*����w*w*����w*��w*w*gQ��������gCaz��az��kX��kXkX��kX����kX��kXkX��kX��kXwcb�gQ��������������������"az{�az��wubaz��kX��b���b���b���b���b���b���b���b���b�b�ub�������gC��gCazwU����v���azaz����az�azaz��azaz�v�az���{�w*azww�	��
���
v��mazaz���azu��azv�����t�m���w�ww��w�w�ww��w�1wmazu�� u��!u�azaz�#�$�c�%�4�&�1�'gC�(�"�)ubub�*�+ub�,ub�-ub�.ubub�/ub�0ubwc�2�3w�v�kXwU�5�7v��6v�j�8azaz�9�:w��;�M�<�G�=�B�>az�?w��@w��Aw�azw��Cw��Dw�w��Ew��Fazw�w��H�Iw�w��Jw��K�Lw�azw��N�]�O�X�P�Tw��Qw��R�Sw�w�azw��Uw��Vw��Ww�az�Yw��Zw�w��[w��\azw��^w��_w�w��`�aw��bazw�az�d�j�e�h�f�gazmv�t��iazmw�k�m�lazgQazaz�naz�o�paz�qazaz�r�saz�tazaz�u�vazaz�wjazaz�y�z�}�{azaz�|v�az�~��b��b�azaz��gC����azazb�����AeE�az����������������������������lxlx~�lx��lx��lx��elx�������������ee����e�������e�ՙ��e���������e������dNb�.������������~���~�������~�~�~�~�����������~�rX~�~�eerX��������������~�e~�~����~�����~�������~�~���~�1�~���1�~�������������������~�e~���~�e~���e����~�e~�e��ee������e{r{re���H����rI��rIe��rIerI��az��az��sG��������az��gCaz����b�gQgCb���azaz��t�u�������������Ae@&@&E�����E�azE�az����az��~�azaz����������az��azaz����azaz����azaz����az��az��az��azjazaz�az�az�az�az�az�azgQ�sG�	sGsG�
�sG�sG�
sGsG�sG��sGsG�sG��sG�sGsG�sG�@sG�g�H���<�az�4�az�az� ���!�@az�"�#�.�$�+�%�(az�&w�'azwj�)�*wv�w�,ww�-waz�/�4�0�1wazaz�2az�3azw�5�:�6�7az�?�8�9v�v�azv��;�=�M�<jaz�>�?ubv�v���A�a�B�U�C�O�D�I�E�G�Fazazu��Hazjt��J�Laz�Kjaz�M�Nazjazw�Paz�Q�Saz�Razv��Tazazj�V�]�W�Z�Xazaz�YgQkXaz�[�\azjazaz�^az�_�`azazj�b�{�c�m�d�h�e�gaz�fgCazaz���i�kaz�jt�j�lazazv��n�t�o�r�p�qwc�w�gQgQ�s�"w*�u�x�v�wv���u�w�y�zJw��w*�|���}az�~��w�b�azazw��az������azwaz����u���wqaz������������������az��������gCaz�[gQ����gQ�"w�������������jb�azgQ��gQb�wU������gQkXgQ����gQw�wUgQ�����������������^�[�^gQ����az�^w*gQ����gQaz����kX�^gQ�^������gQ��gQazgQ���������mu��-������a�����������������az��gCgQgC���������t�v�v�����v�u�b�w������������wwUgC�?����wU�^�^kX�������^�^gQ����wUwjv���������wUv���������t�w�w�����w��"�"t�������gCgC��gCaz����gCaz��azgCaz����������������gC��azgCaz����az��gCaz��gC{�gC����������gCazgC��gCgCaz����gC��azgC����gCazgCazgCazgCgCazgCgCgCazgC	b�
b�azb�
b�b�azb�b�b�b�gQb�azv�b�kXb�azb�azb�+ '!$"#b�az{�az%&wF{�b�{�(b�)*azwUwU�,1-/.azb�azaz0����2az3az��0az56cWcW7cW8cW9:;cW����cWaz=>r?az@azAJ|B|C|DEIF||GH|�|�|gCKL�M�N|OdPWQTRS��o�JMUV�odOaq�XbYZq��o[����\]��^��_����`a����q�cM���;eqfh�ogd�;ipjddkdlmdnddo�d�o�Jr{s�ot�J�ou�ov�owx�o�oy�oz�o��J�o}�~��d�)x�;�o�d�;������;d�o�Oq����o�O��g�������O�y�Oaq����;���;�;��;��;��;�~�;�;�����������������O�q���O����;�q��q�q��q���q�q��q��������������o������������������o��oy���y��y�y���y���y�)xy���o��o��y���������Og�d��oMd��;�;��;������o��o��o�y��y����y��y���y�y�)xy��y���y�y�)x���J�dM�o�����o��o��od�����oy���o��%��%��%��%��%��%�%)x����oy��'�����y�����;y��;�
������%�%�%�%�%)x�%��%	�%y��%�O�o�o
�o�o�og�O�O�Mq��J�OM�;My�M�;�4!�o�;�o �o�;"$#q���y�%&�;�4�4�;(i)T*G+9,8d-.��/3��0��1��2��q���45��6��7����q�d�o:;d�;d<=d>C?d@ddAdBd�DddEdF�dHKIJd�;�od~LM)xN�o�oO�oPQ�oR�oS�o�odUcV`W_dXdYdZ[dd\]dd^�d�J�;ab�o�;��)xdfe�oq�dgh�;�o�oq�jnk�ol�Jmd�%Mo�o�op�oq��;azsaztuazvwazxazy}t�zt�{t�|azt�~t�azt��||�|�|��||��||��|�|�||��||�@|�
�������azAe��az��azaz�az��az�azaz�az�az�az��az�az�az�az�az�azaz�w�az��az�azQaz�azE�������az��H:�H:����H:���H:�s��*���*H:H:�������FN�F��s��*�*H:����H:�N�F�FH:���H:�H:�H:H:�*�H:H:�az����azsGazt��az�az�az�������az���azaz�v�azaz�az�v�az���az�azaz�azv�az����azazv��azazw�az��az�az��azazwaz�az�az�azv�����az��az���b�azgCaz�az�azazv�azazazazazgCazazazazaz	gCaz-
azazazazazazazazazw�azazazazw�@&azazE�" !E�az@az#,$azaz%L�&F�'F�()*i@F�F�+F�i@QA.C/1az0pazaz23@&@&4@&5@&67@&8@&9@&@&:@&;<@&@&=>@&@&?@&@A@&B@&��@&DFEazAeF�GazazE�IYazJazKLazMazazNazOazPazQazRSazTazUWazVazt�azXazt�Zazaz[\az]azaz^_azw�`azaazbcazdazeazfazazw�h�i�j�k�l�mazn|�Ooazpqazazrsxaztazuvwaz�1�1azyazzazaz{az�1az}az~az�az�az�azaz��azwaz�az��az��az�az�az�az�azaz��azaz��az�az�az�azaz��azaz�az�Baz|���az�azaz|az���QazAeaz|�|2T���������az�az�azaz��azaz�az�az��az�az�az�az�az�azaz��azaz�wazaz�az������b�gQaz�azgQaz���az�az�gCgC�gC�gC��gC�gC�gCgC��gCgC��gC{�gCt��u�az��az�|azaz�az�az�az��az�azaz�az�azgC�N�/��azN�
az������az��az���u�azazm�azaz�azv��az����az�az����b�gC�azv�az����gQmmaz�azazw�az�azazgCkXwazv�b�
az	�1v�wcazv�azazazazazazaz�Bazazazaz�azazb�b�az* az!%az"az#az$azv�&az'az(azaz)maz+az,az-azaz.azt�az01d2t�3Iaz45B6<798`���b�:;b����u=@>?�%��%�A`�`�,CGDFE`�`��u`��uH`�b��JdKdLdMdazdOsPazQazR`SZTUaz||VWazX|Y||�az[\az]^azv�_jjazaazbg|cazdazeazft�kXhmiljazazkgCazazt�np|o|�kq|�kr�k|tu|azvazw�x�y�z~{azaz|az}azi@az�az�az`�az�az��az�az�b�az���azaz|az�azi@��az����az�|azi@�|az|����az�az�|az��|azaz�`�az�az�azBaaz����az����az�azaz��azaz��azaz��azaz�az�b�azaz�az�i@az�az����az ��� �;|az��az||�`�az���az�azaz�|az���az�az�az�azaz�az�Maz����az�M�������az���gQazazt�gQaz�azt�gC����b�azazv���gC��gQ�gQ�gQ�gQ�gQ�gQgQ��gQgQ��gQ�gQgQ��azb����az�t�az�|��az���az��b�azkXv�wgCaz��Ae����~�!9Ae!9!9~!9!9~!9	~!9
�Ae

AeAe!9Ae!9
�AeAeAeAeAe!9AeAe!9Ae!9AeazazG2Tazazt� �!�az"#az$�%S&3'||()||*|+,|-||./|0|1||2�|4F5@687|�||9:||;<||=|>?||�A||B|C|D|E|�||G|HI|J|KOL||MN||�|PQ||R|L|TqUaV|W|X|Y|Z||[\||]|^|_`||�b|cid||ef||gh|�|j||kl|m||no||p|�r�s|t~|u|v|w|xy||z{|||}||�|�|�|��|�|��|�|�|�||�|��||��|�||��||�|����||�|��|�|�|�|�||�|��||�|��|�����|���||�|�|�|��|�||��|���||��||�|��||�|�|�|��||��|�|�|�||��|�||�|������||��||��|�|�|�|�||�|��|�|�||�|��|�|�|��|��|��|��|��|���|�|���|��|�|��a�|��az2Taz��az�azAe��az|az��azaz��azaz�v��v��v��v�az����
������az|Aeazaz�
az�azazAazazazazazazaz	azv�azazaz
|azt�azazt�azt�azazazazp��?>azazaz 9!-"'#%c�$Ԧc�&LԦb�(*L)c�Ԧ+,Ԧc�2�L.4/201Ԧc�dԦ3L`�c�57L6cWc�c�8c�L:=az;<azb�gCazw�Mazaz@azAB_CODKEazFazGIHazazv�Jazazv�LazazMazNazv�PazQ[RVSUazTw�azjazWXw�azYZjaz��az\az]az^azw�az`�anbggCcgCdefgCazv�azhjb�iw�azkkXlmv�azw�azo{puqsrgQazgQubtubazvywxw�wcw*�"z�"wU|�}wU~azw��v�v�w�����aza�����?��Maz�����az����X���az�azv�az���K��Kazaz���az���v�����u�v��1t��az�waz�����azu�az��v�azt�azmaz���azcW@&���az�������az�azazt�gQgCt��b�az�azazb�az@���azaz�az����v������|��|�|�����O��|��|��az��|�����!TM�@�H:�|��|�����MM�Ae��Ba���H:|�������u������E���az�Maz��azAaz�az�az��������az��v�u�u�azaz��azazu��az�az�azv�azaz���az��azw�azaz��azaz�B�F�az��az��az�azNazMMg���Mazaz�	az
azAeaz#
azazazazazazazazazazazgCazazazazgCazaz az!azaz"azE$az%azaz&az'(4)az*+v�gC,v�-.v�gCv�/0v�1v�2v�v�3v�v�5?6;78F���9:F�G����<��=G�>G�F�G�@F��A{B{CD{E{A{G�HMIKazJaz|azLazMN{O\PdazQazRazSTXazUVazWazaz�YazZaz[kX�BkX]k^i_azaz`aebazazcazdM�azfazgazhazv�azazjazjldmdnddopdqddrdstddudvwdxddydzdq�|az}az~azgQaz�az�az�az��az�az�Baz��az�az����az��az�az�az�az�az�az��az�az�az�az�az�az�azazv��az�az�az�az��azv�v�az�����az��az�az�az�azv��az���azv�az�az�azaz�az�az��az�azaz�az�azt���az�gCaz�azaz�az��az�azaz�az�az��az�azaz�az�azv�az��azaz�az��azaz�az��az�az�az�azaz��azaz��az�/����az��azaz|�����������������Q����
��O�_����_���������������_�A����_��������az���������_���!�
Q	����

���a߫�_�O����QQp��_����+#"� Q!a���$%�_a�&'����()����*���@,��-�.�!�_0az�_12P3F4;576azaz|az8az9az:az|<B=?>az|azaz@azAazu�azCDazEazaz@GKHazazIazJ|azazLazMazN@Oaz|QazRazSazazTaz@V*W]X�Y
.Z[�\az]az^az_az`|ambicfd��e���g�h�_�j��kl����nr�o�p�q�_�sxtu��_vw�a���yz��{2&�Om}~maz�az�����az���az�azaz��azaz��mazm�az�azaz��az�az�mazm��az�azm�az�azaz��azmaz�az�az�az�azaz��azaz��m�m�mazmaz����azaz�az��azaz��az�az�azaz��azaz��azaz��azaz��azw�azaz���az��az��az�az�azgQ�v�az��v�v���v��v�v���v��v��v�v��v��v��azv�az�����gQv���v��v���v�az�t���azt�azgQ�gQ��gQ�gQ���gQgQ�gQ�gQ��gQgQ�gQ�gQgC�gQgQ��gQ�gQ�gQgQ�gQ�gQv���t����w�w�ww��w�w�ww��az�az�az��azwwazwazwt�	T)azaz	
azazaz
azazazazazazazazazazazaz�BazazH:az&azazaz $i@!"i@i@#i@F�j%jaz'(sG߫E�@*�+�,�-|.a/H0;18263e45brXeՙ7e���9:�e�H��<C=@>elx?��lxA�*B���HՙDElxeFrXGlx�H�IZJMKLlxe�HeNYOebPQbbRSbTbUbVbWbXblxbeՙ[^\]lxe�Hlx_`lxe�wlxbocidfelxlxeghlxelxejlklxlxemnlxelxepvqtrslxeblxulxlxewzxylxeOe{OOe}�~�������ee�H����beeb���eOlxlxe����lxe�H����w�{rlx��lxe�e��erXerX������be�Hՙ��lxelxՙ���lxlxe�lxlxe��������lxe�wlx�lxlxe����lxelxe��lxelx�w����e�b*����e��lx��lx��eb�����e�e�wee�e��H�lx�lx(�az�_az���d�az�Maz���az�az�az�az�azaz�az��az�azaz��az�az�az�azaz�B�az�az�azaz�az�az�azm�	C���sG�az�az�az�azaz�az�az�u�az�	"�	���������_�O���������_�����_�
	�		����				
			��_��		�Q		
	��_�	��!�					��			a��a�	�Q		�	��		!�			����	 r,����_	#az	$	(	%	&az|az	'az|	)	2	*	.az	+	,azwU	-azkXaz	/az	0	1azazb�	3	<	4	7gC	5gQ	6azv�	8	:az	9b�wU	;b�wv�	=	@gC	>	?azb�m	Aaz	Bazwmaz	D	E	K	Fazaz	G	Haz	Iaz	JazjazH 	LH 	MH 	NH 	O	PH H 	Q	R	SH rrH 	U	�	V	�	W	x	X	Y�_az	Zaz	[az	\azaz	]	^	j	_az	`azaz	aaz	baz	caz	daz	e	fazaz	g	haz	iazazt�	kazaz	laz	maz	n	oaz	paz	qaz	razaz	s	t	vaz	uazw*	wazv�az	y	�	z�_	{	�	|	�	}az	~azaz		�azgQ	�gQ	�	�	�gQ	�gQ	�gQ	�gQ	�	�gQgQ	���gQgQ	�	�gQgQ	�	�gQgQ	�	�gQ��gQ	�	�	�	�	�	�az	�	�	�b�v�u�t�	�	�	�	�mv�v�b�	�azv�j	�	�	�	�az	�azu�	�	�t�mv�v�	�	�	�	�mb�v�jaz	�u�t�	�	�	�	�	�	�az	�mv�	�	�v�b�v�j	�	�	�azjaz	�v�v�v�	�az	�azaz	�v�az	�	�F�	�	�az	�az	�az	�azazgC|	�	�	�	�	�	�azv�azaz	�gQb�	�	�az	�	�azv�azaz	�	�azazb�az	�az	�	�azaz	�	�az	�azaz	�az	�	�az	�azaz	�az	�	�azaz	�	�azaz	�az@	�azaz	�H:az	�
	�	�az	�	�E�	�az	�	�az	�az	�	�az	�azaz	�kXazaz	�az	�	�azgCazaz	�az	�d	�	�dd	�d	�	�d	�d	�dd	�d
d
d

dd
d
d
m�d

,
	
+Ba





�



�_
��

���_�

�

�Q1�

���_

"


�
�߫��
 �
!2T�
#
&�
$�_
%��
'
)�
(��
*���az
_az
-E�az
/�
0
1
f
2
U
3
R
4
Q
5az
6
F
7
=
8
:
9	Y	Y�
;
<�
��sG
>
C
?sG
@sG
AsGsG
B
�sG
D
E��sG	g
G
L
HsGsG
IsG
J
KsG	YsGsG
MsG
NsG
O
PsGsG	YAeE�
S
TAeazAeaz
V
baz
W
Xc�
Y
_
Z
[mv�v�
\m
]u�
^gQj
`
ajt�v�j
c
e
dazazAesGaz
g
�az
h
i
�az
jt�
k
l
�
m
�
n
�
oaz
p
s
q
razwcazv�
t

uaz
v
zaz
w
x
yazgCw*t�
{
~
|
}v�u�mjja�v�az
�
�
�
�az
�azw
�
��?wct�az
�
�az
�v�az
�
�gQazv�v�
�
�
�
�
�
�az
�v�kX
�u�azu�
�
�u�t�u�
�u�v�
�
�
�
�u�
�t�
�
�mv�
��wwq
�u�u�
��1mu�
�u�maz
�|azaz
�
�
�
�
�
�
�
�
�az
�
�|
�az|az
�
�
�
�
�azaz|
�
�@az@az
�az
�
�@||@
�
�az
�
�azB�az
�azaz
�az
�az@
�az
�az
�azaz
�az@
�
�
�
�
�
�az
�az
�v�
��a�
�
�
�j
�az@azaz
�
�az@azaz
�az
�az@
�
�az
�
�
�
�w
�wjazaz
�az@
�
�
�
�az
�az@
�azwaz
�
�
�azazgCaz
�az
�az@
�
�Ae
�
�Ae
�
�
�Ae
�Ae
�Ae
�Ae
�AeAe!9Ae
�
�
�Ae
�
�
�Ae
�AeB�B�
�B�AeAeAeAe��AeE�sGazazazaz	az
azaz
az�Kazazazazazu�azp74azA&azazaz azazazw!$"#wkXazw%azv�azaz'(/)+az*gCazaz,-az.azazgCaz0az12azaz3azgC56sG�az8a9az:az;R<BpBp=Bp>?Bp@BpABpBJCBpDBpEBpFBpBpGHBpBpIBpi�KBpLBpMBpNBpBpOBpPQBpi�Bp�S�T�U�V�W�XY�Z][��\w��^�_`��wbcsGazazdazefazazghlaziazjazkazgCmaznazazogCazq�rtsaz�Oazu�azvw�x�y~z|�{���}�_������_�����������_����_�����a��������������_��_���������_���_���������azty�azaz��azaz��azaz��az�Baz��az�Ae���H����H��H�H���H�H��HQ�H���H���H��H��HQ�H��H��HQ�azE�az�
��
b�
7�@���az�az�az�az�az�az�az�azaz��azaz�az�az�az��az�azt�az������������������_�����_�������@������������
����������_��������2������_��������Q�2�Q��_���_����_���!�0&�	���_
��_�
�_�_�_�_�_.��_.��_.��_.��_.��_�_�_.��_ ��!%�_"#$�_���_���_�z'*(��)�A+-�,��_./��_.��18253�4�Q��6�7�_�9=:;���<1�>�?��!�A�B�CVDOELFJG�H��_IQ��K�_�M�N��_��PQSR��_�TU�_���1W`X]Y[�Z��_�\��_�^�_Q�agbd�cQ�e�f��_�h�ij�_��klu�mn� o� p� q� r� s� t� ��� v~w� x� y� z� {� |� }� �� � �� �� �� �� �� �� �� ����_��_������������_���_���������O��Q�������/���������������������_�a������������_�_���A��_�����p��_�Ae��
������������N;OEQ�OT��N;OEQ�OT����N;OEQ�OT��N;OEQ�OT������N;OENQ�Q�N+����YOTNOE��YOTNOE��������YOTNOE��YOTNOE����YOTNOE��YOTNOE������Q�OTN;OE��Q�OTN;OE����Q�OTN;OE��Q�OTN;OEQ���
������YOTNOE��YOTNOE�
�
YOTNOE

YOTNOE



	

Q�OTN;OE

Q�OTN;OE




Q�OTN;OE

Q�OTN;OE

1

&



N;

VpQ�Vp

Vp
P}Vp
VpVpQ�
 
#
!Vp
"VpVpQ�Vp
$Vp
%VpQ�
'Q�
(
,N;
)
*
+VpQ�Q�Vp
-
/
.Q�VpOEQ�
0VpQ�
2Q�
3
5
4Q�N;Q�
6Q�Q�N;
8
:az
9`�az
;
aaz
<
=
P
>
C
?�
@�
A
B�_�߫�
D
J
E
H
F
G��ٰ��
I��_
K
M
L�p�
N
O��_�_�
Q
\
R
U
S�
T���
V
Z
W�
X�
Y�a��
[�_�
]�
^�
_
`��_�Q	Yaz
c
h
daz
e
fazsGsG
g@�!
i
l
j
kazAeazE�
maz
naz
o
�az
paz
q
r
az
saz
t
u
~
vaz
wazaz
x
y
{
zazazv�az
|
}azv�azazb�az
�
�az
�azazb�
�
�L�azazE
��
� 
�
�
�
�
�
�az
�
�
�az
�
�az
�az
�az
�az
�az
�az
�az
�azaz
�
�azaz�B
�azw*az
�az
�az
�az
�
�
�
�
�
�
�
�azb�v�v�
�
�gCv�kXaz
�
�az
�azv�
�
�v�w�jw
�
�
�
�
�
�kXazwv�
�
�ubazv���
�
�
�
�v�u�t�m
�azv�az�_
�
�
�
�
�
�
�
�
�
���O�_
�
��
��
�
��
�
��
��
��
��.�
��
��
��.���_�
��
�����
�
�
��
����
��
�
��_��O�
�
�
��
�
�
�
��@��
�
�
���"�"�
���_�
�
�
�
��
���_
��
���
���1�
�
�
���O��_
�
�az
�
�
��
�
�
��
��
�
�����
�
����_�����O���O
�	
�p��_��_���a��_��1��Q�QazazazazazazazgCaz!az"d#H$9%.&)�'�(��*,+��O�-���/402�1��@�3�_�5�68�_7�
�_�1:D;@<>�=��_?����A�BC�Qa��E�F�G�_�IazJ\KTLPMazNazazOazv�azQazRazSazmUYVazWazXazmazZazaz[gCazaz]^aaz_az`azb�bazcazazw�@ef�azghazi�juazkazlazmnazazoazpazqazrazstazv�azazvwazxazazyazz{az|az}azaz~azw�az�az�az�azaz�az��azaz�az�az��az�azaz�;���azaz|���az�|��|���|�||��|az����az�az���������.���azaz�az��������az|az���azaz�@azaz��azaz|az����az�azaz@azF����az�����az@azL|az�az�az|�|az�az�az|��E�az�����AeAe�Ae�Ae�Ae��AeAe�AeB�������sG����sG���������jsG��sGaz��$�az���az�az�az�azsG��sG�sG�sG�sG�sG�sG�sGsG�sG��sG�sGsG��sGsG�sG�	YsG�a�#cW���cWcW�cW�cW���cWx�cWcWx�cWazu�azazaz	az
u�azaz
azazazazu�azu�u�u�azazazazazazu�cWcWcWcW cW!cW"cWx�cW$&%cWazcW'@az()az*azaz+,4-azaz./az0az1azaz23azv�az5az6azaz7az8az9az:;az<az=azaz>?azv�azAQBazazCazDazEFazGazHazIazazJazKazLazMazNazOazPjazazRazSTazUazVazWazXazazYazZ[azaz\]azaz^_azaz`jazb�cHd�ecWfazgazhazi|jqkazazlmazaznazopazv�azazrsazaztuazazvazwazxazyzaz{azv�azaz}az~azaz�az��az�azaz��azaz��azv�az�>���������az�az�az�az�az�azb��az�az�az�azaz��azaz��azaz��azazb���az���az�az�az�b�az�az���azazb��azazb�az�az��az�azazb�az����az�azaz�az�az��azb�azaz�az��az�azazb��������azaz��gCaz�az��azaz��az�az�azgCazaz���az�az�az�gCaz�azaz�az��azazgC��az����az�az�azgCaz�azaz��azgCazaz�az��azaz��azazgC��az��azaz��azaz�az��az�azgCazaz�az���azaz��az�az�az�azaz���azgCgCazazazazazgCaz0azaz	
azazaz
azgQazazazazazazazazazazgQaz"azazazazaz az!azgQaz#*az$%azaz&az'az()azgQazaz+az,az-az.az/azgQ1az2az3az49az56azaz78azgCaz:azaz;az<az=azgC?�B@w�A�BB�BC�B�BDE�BF�BG�B�BkXIucWJazKLazazMNcOXazPQazRazSazazTazUazVv�Wazv�YazazZ[az\az]az^azaz_`azazabazv�azazdeoazfgazhaziazazjkazlazmazaznv�azpazazqrazsaztazv�azvxwazazv�y�zazaz{az|az}az~az�azaz��azaz�az�az�az�az�azw�az��az��az�az�az�azaz�az��azazv����az�az�azazv����az�azv�azaz�az�az��azaz�az�v�az��az����v����az�azaz�az��azaz��azaz�����az�v��v�az��v��v�azv��v�az����v��v�azv��v�az�azv��v�az�az��azv�az���az�az�az�az�az��azaz�v��v�az�azaz�az��az���v�azv�v��v��v��v�az�az�v�����az�az�az��azaz��azwaz�azaz��az�azaz�az��az��az���azwwaz���azazw�azwaz�az�azaz��azaz��azazazwazw�jjjjjj	
jjjj
jjjjjjazazazazazazazazazazazazaz azaz!"az#azv�az%X&az'�(5)az*az+/,@-@@.az@	Y01	Y	Y2	Y3	Y4�9+�6�7�8az9naz:;T<D=?>F�F��V@BF�A�8F�F�C�VF�ENFIGHF�i@Gt�dJMKi@LGtF�GtGtF�OQ�PF�GtRSGt�6GtF�UbVYWF�XGtGtF�Z\[F�F��d]a^��_F�i@`i@F��8F�cjdgef�V�8�8F�hiF��V�8i@kGtlmF�i@i@F�oazp�q}rxsvtu�8����i@wF�B�Vy|z{Gti@��i@F�B~��V���d�VB�V��8F���V�8�F�������F���F��F��F��F��F��F��F�GtF���V�d��d��d��d��d���i@��V�V�����V��V����V���i@�Vi@i@�i@F�F�az��E�azaz�az�az���az�az�az�az��azaz�az��azaz�az�az�az�b�azaz��azaz�B�'���azaz����azaz��azaz����az�az�azv�azjazaz��azt�az���Et���az�����ENE�azE�E�Eaz��azEE�azN�az���az�az�az�az�|�azaz��
���������q�������������;�g�����g��;������y��;�MM�M�M��MM��MM�;M��M�	�Og�q���	��g���q�
�g�tOg��;g�g��;g��g���*�M �g��-����q�*��;!$"#�g�g���%&�lg�g��;(I)2az*az+,az-az.azaz/0az1azv�azaz34:5azaz67azaz8az9b�az;@az<=azaz>?azb�azazABGb�CDFEwv�w�v�HkXw*gCazJKS�1L�1MN�1O�1�1PQ�1R�1�A�1TU��sGVWsGsGY�ZE�[�az\]az^r_m`hazaazbcfdev�azu�azgazmaziazjazkgCazlwazaznoazpazqazazgCs�aztazuv~wz{�xyb�b�az{}b�|b�azgQazaz�{��gCgCaz�az����������@az�az�az|az|�az�az|���azgC|az��@az�az��azAesGaz�������az�az.azaz�az��az�az�az�azaz��az�azaz��az�azaz�az��azaz�az�@azaz�az�az�����������
sGsG+���1��sG������sG���@@sG������+sGsG�@�_����{�k��o�_zsG���������1��b1���R��@�1������sG�@sG�sG��������[��dN�lxdN��lxelxe�sGsG��sG���sG[J@az�az�az�@��%�����sG��sG@@�+sG�sGsG�sG	
j
sGsG�[�
zKsG+@@�@
sG��K !"#$�K&4'.(+)*sGk�@,-sG�z+/10sG�R@23��
5:68sG7@9sG�@;><=@sGsG�sG?@UAHsGBsGCsGDsGEsGFsGGsG	gIOsGJsGKsGLsGMsGNsG	gsGPsGQsGRsGSsGTsG�VsGWsGsGXsGYsGZsG[sG\sG�^i_�`�a�b�c�daze�fazgthoi�jmkl�az�O�n����p��qrs��_��_uy�v�wx��A�z{~|}������.��azaz����az�az�az��b�azazv�az�az�az��azt�az����az�az�az��az�azgCaz�az��az����az�azaz����az�d����d�daz��|��az�az�az�gQaz�����v�m�K��azjv�az����azgCazt�az��az���az�mgC��gCgC��gCazgC�azazj�azaz�az�az�az�az��azaz�az�Maz���az��az�azcWQaz�az�azaz��;�az���azazF���az���az�az�az�az��az�azaz�az��az�az�az�azv�azaz��az�azaz���az�azL�L��L�azEz���	�����az�az�|azaz|�az�az�az|fazaz|azazaz|azazgC

az|Mazazaz@az|azaz@az��|azaz|az% azaz|az!#az"azgCaz$i@az&1'-()az|*+|az,azaz@az./az|�0|�|2635az4az|az|7az8azaz9az:azv�<�=t>D?az@AazgCBazCazwazazEFdG[.hH.hI.hJK.hL.h.hMN.hOUP.h.hQR.hS.h.hT2d.h.hVW.hX.h.hYZ.h2d.h\_]�_.h^.h�_`.ha�_b�_c�_.h2d�_efqgk.hh�_i�_j2d�_l.hmo�_n�_.h�_p�_.hr�_s�_2d�_uxvazwazaz|yazz�az{|�}azaz~az�azwaz�azaz�az�u�az��az��az�az�az�azwaz�az�az��az�azwaz�jazaz���cW�az�az�az���az�azgCaz�az���az��az�azaz��azaz��az��azv�v�az�az�az�azaz��azaz��az��azt�t�az�az����az��azaz��az�azaz|�azaz��az�az�azaz|��az��az���azaz�|az�'az�az�az�azaz�'�"������azm��az�����az��azaz�jazaz�az�az�gQaz�az�az�azaz�gCaz����az��azaz�az��1az�azaz��azaz��1az����az�az���jazjazaz��az��az�1�1azaz�azazazwaz�azaz�az��	az
�J<
b�b�b�b�b�b�azb�azazazb�az2.#b�b�! b�b�az"azb�az$,%b�&b�'b�(b�)b�b�*b�+b�w-b�b�az/b�b�0b�1b�az3gQ4gQ5gQ6gQ78azgQ9:gQaz;azgQaz=H>B?gCgC@AgCgCazgQCDgQgQEFazGazgQazmIv�t�KnL`M\NZOTPu�Qu�u�Ru�Sazu�Uu�Vu�WazXu�u�Yu�az[u�azu�]u�^u�u�_azu�av�blt�cdit�et�fgazt�ht�azjazkazt�azt�mazt�o}pxmqmrsaztazmumvwazmazyazzaz{az|azt�azgQ~gQgC��az�az�azgCazaz���az���gCgQgC�gQaz������az�b�azgCaz����v�azazm��v�t�b�az����u��jaz�azv�azaz�gC�azv�az�az��azaz�|az���azaz������az���az|azaz�az��az�@az��az�az��mt�v������az�azaz�az�az|az��az�az�azaz|�������������O�_���O��������_����_�������_��Q���_���������_����������_�O�������_��_�������_�����Q����������_�������Q��������O�����Q�߫���
���1��	���_��
Q����_
�b<+���O���@�_�#!� Q��"��_$)%&�O��'��(���[*���_,2-0.��/�_a1���_364��5�1�798���_:;���/�=M>I?D@B�A�1��C�OQEGF���H��d�J�K�L�azNVO�PT�QR��S��_U�
�W\XZY���[���_]_^���_`a����Oc�dvepfkgih����j�1�l�mn�ao��O��qrts���u���w�x~y{z�Q�|}�!�������Q������.��.������2������p��߫������������_�������_�����_�����_�O�������
������_���a��_������������j�ja�������/�����_�������!��������������.��������_������������_���������_�
������_�!������������_��Q�_�����d�_�����c������az�������az��kXb�b�azj���jazwUv������azazb���azgQb�waz��gCazgC�az�����azgCw�az�azgQ�azazgCazazazazazazazazaz	az�B 
azazazazazazazv�azazaz|azazazazazazazazgCgQaz!az@#M$=az%&(az'azt�)-*M�az+az,azM�.azaz/0az1az2azaz34az5az6az7azaz89azaz:;az<azaz@>az?@az@&Aazi@BCIi@Di@Ei@FGi@Hi@i@F�JF�KF�i@Li@F�NazO|azPQazRazSdazTazUVaW`azXYazZaz[az\az]az��^_az��azaz��azbazc��azeufqgjazhiazw�azknlmmv�b�v�opjmaz��razsaztazgCazvywu�azxazu�u�z{azu�az}az~�azaz��az�azv�azaz�az��azaz��az�azaz�az�T���P������az��az����az��az�azaz�wazaz�az����azv�azaz���������ubwcv���w�?{�w��gQgC�azgQ�azgQ�azaz��azaz�az��az�az�azb���azb�az�azaz���dt���az�����az�gCgQ��gQgCgCgQ��azt�m�v���v�t��v��az�v�azaz|�az�az���azaz�az�az�az��az�azv�azaz�az��az��az��az�azazv���az�az�azm�azaz�azm�Kaz��"��az����az�azw��ww�w��w�w�ww�w�azw�az�az�az��azaz�azwazazazmazaz	az
azazaz
azazgCazazazazazazazkXazazb�azazazwaz !gCkXkXgC#az$;%1&+')�(�_��*��@,/-.�_���_�0��_27354��_��6
��89:��_Q�<G=B>@�?�Q�A�_QCED���F��aH�I�J���_LNazMaz�_OazazAeQoRjS]azTUazVazWazazXYazZaz[az\azaz�B^_azF�az`azaazbcazdazeazfazazgazhaziazv�kmlazaz�aznaz|p�qazr�sazaztu{azvazwxazazyazzazwU|�az}~azaz�azaz�az�az��az�az�azb���azb�azaz��az��az�azv���v�mw�azazA��az�az�az���az�az�v�b����v��azv�t���t�u�mu��azaz�az��az�azaz�az�az���azv�v�az������az��az�az�az��az��az�az�azgQaz�azgCazaz�az�|���|az����������b�mmaz��azv�v�kX��b��jv�az�azgC���@az@�az@az��az�az�|az�azaz�|�@&az�����az�azaz��az�az�azaz�az�azgC��az�az��azaz��azgCazaz�az��az�v��v��v��v�F��F�v��azaz��az�cW��az�az�|azazazazv�azaz	
t�azazv�|
azu�azazazmv�azazaz�_az�Bazazaz-#�! ���_"��a$*%(&'��_��_)����+�,��_.8/20��1�_�3645�_���7��_�9<:��;��_=@>?���߫�A��CiDazazEFVGKH��I�J��_LRMPNO��_�y��Q��_�STU��_��_W_X\�YZ[��Q��]^��_�`facb�Q�de�_��!�g��h�_�jscWklcWcWmncWcWocWpcWq$$rcW\�t�u�v�w~x{yz���_�|}�!�_Q����Q��_����������O�_�����a����_�@��@-K-K@�����������O�������Q�_������������O��O�_���������������/����_�����_����_��@�������Q����Q�_���������p����������_�������Q�O����_��1����_�Q��������������������������_����az�az��az�az�azaz��azazj�A�����������1����_
�_��������1�
������������������������������
��_�	������a
�����_������a�*&��k�# ��
p!�ٰ"�ٰ$%Q�a�'��(�)��+8,3-0.��/�!��1�2��O4756��1�_���9<�:;��_�=?�>�_�@���BqC_DOEH�FG���_ILJK��_�_�MN�_���PZQWRSN��TUV�_
�_
XY���_
[]\���^��O�`jae�bcd����figh.���Q�_�kn�l�m�߫�op���_r�sztwu�v��O��x�y�_�{�|~�}��_��a�_Q�����_����_���������Q�_��߫�����pQ2T��������������Q���
QA������������az���az���azEazaz�Eaz�azaz���azEazE�����az��az��azazu��azazE��E�Eazaz�az�azE�azaz��azaz��azv�az�az��az|�@&��@&az|azaz���������az��azazE�azaz�Eaz��azEaz�az�Eaz��az�az���az&�az�az�az�azaz�az��az�az�azazu��azaz�az�azE������az�az�azE��az��EazE��azEEaz�azaz���azEazE

azazazgCazazaz	azaz�Bazazt�azazaz�v�az=:.azazazazazv�azazazwazaz !#az"azv�$%azwcaz&'az(azaz)*az+az,az-azazub/az051azaz23az4azmaz6az7az8az9az�1az;azL<az|>g_?Q@KAGBDC��O�EFA����HIJ߫���_L�MON��1��P��_R^SXTVU��_��W��_Y\Z[��_�
]���_e`b�a��_cd�@�!�f�gh��O��jpkUl@mpnAoBaF�@&q�r�stL�duq~vzwL�xL�L�yL��{L�|L�}L�~L�L��L���L����N�aN�aNaN�aN��aNaN��a]aNa]�nW����������L���LcW�������ak�{i�akiM��akak`�����i�cfi�`���dc��azt�������NM��{��gngn�R��c�Lc�`�����j����Q�N+OTN;Md�������e�d�d�e���e�d�e�d�e����d�e�e�d����������e��d��!e��Ld��e������b�L�L�dnWL�����c����L��L�M��N���3`c��wU�v�v��������d]��s�H:s�H:azd��`�b�azpz����ME`�b����l���L�p�b�fq��������E�>�=d�cW��M������nWb�d{b��xvb�dNq~c�b�b�b�`�1	*
(c�b�c�
"M�M�M�M�>�M�M�M�M�>�M�M�M�>�M�>�M� M�!M�>�M�M�#M�$%M�M�&'M�M�>�)d{db�+,L�b�-/.m�@p�xv0xvc�2938465c��Hd7c�aNg_b�d{:b�;b�<b�lid{g_cWM?Mq~AEBACADAM�EFGcWL�HMILJKNxvML�MdMNOPNLQb�Rb�ST��xMcWVnWAXkYazazZ[azaz\]az^az_az`azazabazazcazdeazazfgazazhaziazjaz@lEazmazMoABaAq�r{azsaztazuazvazwxazyazazzazgC|az}�~az�az��az�����azaz��az��az��az�t��az�azaz���az�azt��azt�az�az��t�azaz�az��az�azaz��azazt�az����az���az�az�az�az��az�az�az�azt��az�az�azt�azaz��az�az�azaz��az��az�t�az��azt�t�az���az�az�az�az�azaz��az�az�azt�az�azaz���t�azazt��azaz��az�azaz��az���az�t�t��t���t�t��wt�az�az��az�azaz��azazt��az�az�az�azaz�az�az�az�azgC�az�az�az�az�az�az�az�az�azaz��az�azkXaz��A���az�az�az�az�az�azgCazaz�azazF�H�H�H�H�H�H�H�	H�
H�H�
H�H�H�H�H�H�H�H�H�@H�H�H�H�H�H�H�H�H�H� H�!H�"H�#H�$H�%H�&H�'H�H�(H�)@H�+:�,56-%�.W/0az@1Naz23az4az5Faz6az78A9=az:;azaz<��azaz>?az@azaz��BazazCazDazE��azGazazHIazJazKazLazazM��azazOPazazQazRSazTazUazazV�azX")Y rZaz[�\�]�^h�_`�a�bdazc�azazefgu�az�azi�j��klwm��no�p�q�r��s�t�uv�m�x�y�z�{��|�}~������m����������������az��������m����az��az���az�azw�����az���az�az�az��az��������az�az�az�az�����az�az����������������azmaz���wj�az��{��{�j�azazX��jazaz�j�������az���azJ���u����v��"v���az�j����w�az�����pu�azw8�������az��m��������j����az��u������azjp��mv�m������az�,J����w�
azJ���������
��w���b�����wu����v���jjj����RFmmv�J��mu�WA
	
��az�F�w��wwUv��1azu�;9m��u�'u�u�u�u�u�mu�#u� u�!u�"mu�u�$%u�u�&mu�(u�)2*.u�+u�,-u�mu�u�/0u�1u�mu�u�34u�576u�mu�u�8mu�az:maz<>=u��u�?@jw�mwUBNCJDGEFazjj��HI��wqu�{�KazLMaz��v��OSPubQR��j�jv�TUVaz�w�ijXoYeZ^b�[\]v�wq�az_b`a��Zaz�cdazgCj��fimg�Mhu�gCjlw�k��jmna�����jpwqvrtsgQ�wazu�����w�^x{yaz�wzt��"|}~w���RT��;jb������������az��t�w�w�j���j{�j���w��1?U�az�����4S��v��azjaz������az�azw�����0v�����az�jgC�����
J���������azwU{�az���[p��j���azjazazv�����az����u��u�������gC�����u��Zj�u�~v����jazu��u�J�j������wj��p��j��������jpv���waz����������v�azjaz��wgCu�az��wqu����wFaz�Z�?�4�.����v�u�v�u�az�������v��v���v�v��v�m���v�v��v��v�m�v��v�v��v�m�v��v���v�v��v�mv�v�v�v�mv�	v�v�
v�mv�v�
v�mv�v�v�v�v�mv�v�v�v�v�v�m!v�v�v�v�v�v� mv�"(#v�$v�%v�&v�v�'mv�)v�v�*+v�,v�-v�mv�/10j�j23v�azjgC596b�78�v��j:<;wUu��1=>v��v���@NAHBECDazTm�FGw�t�t���IKJ��azv�LMgC�0azkXOSu�PQRaz�Zw�TWUV�1w�azkXXY�[�jaz[v\i]c^`_gC�gCabaz�jwdfeu��jghw�azgQv�jpknlmv�azpv�ov�v�jqtrsv������uaz���w�xy|z{��azv��j}~upaz���1��wv�����w�;u�������w�j��w�����pazgC���wazTC���
�S�az� ����az���az�az��gQazgQ������jv�v�w�azv�az����gCwgCw��azwu�u���az����gC�v�v�azgC�t��gCu�����v����azjpj�az���1ju�j��az��az�w����v�azv��az�1az������az����j{�jt��azt�����t��t�azj�jaz��{��j�����u���j���azgCaz��az���������u�����u�w�Ju�t��u�����������u�j{��w��wqjpv��az��v���w��az���u��azu��v�azv�� � �az  ���-�j  v� v�v�  ju�v�jb� 	b� 
 azv�az 
 7   gQ     j  j��jT4j   ���v�az az az azaz{�  )az    #t� !p "p�1 $ ' % &t�mw*az (gQazgQ * ,gQ +gQv� - 2 . 0 /v��0v� 1kXv�kX 3 5 4kXv�kX 6kXv�kX 8 U 9 H : D ; @ < > =kXazkX ?kXazkX Aaz B Cazp���az E Faz Gazt�az I N Jaz Kaz L Mb�u�u�j O RgC P QgQazgQ Saz TkX{�kX V e W \ X Yazu�u� Z [az��az ] b ^ ` _wazw awazw caz dwazw f m gj h k i jju��j l�upJ� n ogCb�b� p qazXaz s!k t!
 u � v waziM x � y � z � {  |az| }az ~azwaz �az| �az �azaz � �az|azaz � � � � �t�w � �v�t� �azv�azazw �A � � �az �az � �az �gC � � �az � � �az � �azaz � �azw�az �azaz �az �azw� �az � � � �az � �azaz �azw�az �az � �azw�az �azaz � �az �azw�az �az �az �azaz � �azaz �az �az �az �w�azaz �|az � � �az � �az � � � �| �azaz �az| �az|az � � � � � �az �az �az� �azaz �b�az �azaz �az �gQaz �azaz �az| �! � � � � �az � � �az �az|az �azgQaz � �az �v� � � �v�gQazv� � �az@|az � � � � �azaz| �az � � �azaz`�|az � �az �|azaz �az �az �az �| �| � �|��|!!az!|az!!az|az!az!!|az!	@az!!6!!$!
!|!!az!azaz!az!az!azu�!�!!az!!az!az!azaz�|!!!!!! u�!jb��Mub!"!#v�u�azub!%azaz!&!'!)az!(|az!*!4!+!.!,az!-azazv�!/!1�1!0azgC!2!3b�w*w*azaz!5�|!7!\!8!Oaz!9!:!J!;!C!<!@!=!>azb�b�!?b�az!A�az!BazgQ!D!G!E!Fv�azazv�!Haz!Iv�v�kXaz!Kaz!Laz!M!NazgCaz!P!X!Q!Vaz!Rb�!Saz!Taz!Uaz|az!Waz|!Y!Z|@&az![|az!]az!^!i!_azaz!`!aaz!bazaz!caz!d!eaz!fazaz!g!hazaz��!jazaz|az!l!m!�az!n!o!�!p!{!q!w!r|!saz!t!uaz��q!v|�!x!y|�az!z|az!|!}az|az!~az!az|!�!�az!�!�!�!�azaz!�!�!�azwazv�az!�!�!�!�!�azb�t�azwaz!�azaz!�az!�!�!�azt�v�az!�az!�""!�!�!�!�!�!�!�!�!�!�!�!�ubazazgC!�!�t�azazv�!�b�b�!�{�b�!�!�!�!�!�!�gCb�b�gQ!�!��gQazb�!�!�b�!�azv�!�!�azt�gCb�!�!�!�!�!�!�!�!�t�azv�az!�!�az�"b�az!�!�!�azv�v�!�!�azv�v�t�!�!�!�!�!�!�azwazv�!�!�azkXazw!�!�!�azkXwq!�!�u�azazb�!�!�!�!�!�!�!�!�!�!�b��"v�az!�!�azwU�az!�!�!�gCw�gQ!�!��Mw�gQv�!�!�!�!�!�!�t�gC�^az!�!��"maz�
!�!�!�azt�azaz!��az!�!�!�!�!�!�!�!��azt�mm!��"m!�!�!�!�u�mmaz!�!�az!�gC!�!�gC!�gCw�gC�"b�""""""�-v�{�v�""v�azaz"""�i"	"
""�i�i""
��i"�i��i"�i"�i""��i�"�i"�i"�i"�i�""�i��i""""�imazm" "!mb�gQv�"#F�"$F�"%F�"&F�"'F�"(F�GtF�"*%Y"+#h",#""-"g"."X"/"A"0"7"1"5"2"3az�"4az�|"6azaz|az"8"9"=":az";azaz"<v�azaz">az"?"@azazj"B�az"C"D"S"E"R"F"P"Gazaz"H"Iazaz"Jaz"Kaz"L"Mazaz"Naz"O@azv�"Qazv��azaz"T"U"W"V���]���"Y|"Z"`"["]"\azaz|az"^|"_az|"a"daz"b�K"c�Kazaz"eaz"f|az"h"�"i"�"j"�"k"�"l"az"maz"n"oaz"paz"q"x"razaz"s"tazaz"u"vazaz"wv�azaz"y"zaz"{azaz"|"}az"~azaz�az"�az"�"�azaz|az"�"�az"�|az"�"�"�"�azaz"�"�azgCkX"�azaz"�"�"�gCkX~az"�"�"�"�v�"�"�"�"�"�"�v�"�v�"�"�"�v�v�"�v�"�v�"�v�"�azv�"�"�"�v�v�"�v�"�"�v�v�az"�v�"�"�"�v�v�"�azv�v�"�"�v�v�azv�"�v�"�"�v�"�v�azv�"�"�az"�v�"�v�"�v�"�"�v�v�"�v�"�"�v�v�azazv�"�"�"�az"�"�v�azv�gQ"�"�v�"�gCaz"�azv�az"�azaz"�"�azaz"�v�az"�"�"�"�az|"�"�"�"�"�"�"�"�v�azv�v�"�"�b�wwaz"�"�"�azb�w�"�"�v�wUwUv�"�"�"�"�"�"�az��w�gQ"�azb�az"�"�az"�wazaz"�gCaz"�az"�azaz"�az"�t�v�"�"�"�az"�az"�"�az"�@az"�|az"�"�"��]|��|"�#"�#"�#"�#az"�az||az#|az�##	##az|az#az#azv�az#
�###
gQkXgCaz#####|#|##|az|az#az|az##az##az#az|�##az#az|# azaz#!az|###4#$az#%azaz#&az#'#(az#)az#*az#+azaz#,#-az#.azaz#/az#0az#1#2azaz#3@az#5#a#6#;#7az#8az#9|#:azfaz#<#G#=az#>az#?#Caz#@#A#BkXgCkXgCgC#D#E#FgCgQmw#H#^#I#S#J#Maz#K#LazkXaz#N#Q#O#Pjv�azkXaz#Rb�gC#T#Y#U#Waz#VgQgC#XazazwU#Z#]#[#\b�azmv�azw*#_az#`azTR|#b|#c#eaz#daz|#fazaz#gazM�#i$�#j#�#k#�#l#n#mv�azt�#o#�b�#p#q#}#rt�t�#s#tt�#ut�t�#v#wt�#xt�#yt�#zt�t�#{#|t�t�A*#~t�t�#t�#�#�t�#�t�t�#�#�t�t�#�#�t�t�#�#�t�A*t�#�#�#�#�az#�#�#�azb�azu�#�azaz#�az#�#�az#�az#�azaz#�#�azaz#�#�az#�azazw�b�#�#�b�#�b�b�#�b�#�b�#�#�b�#�b�b�#�b�#�#�b�b�#�b�g#�#�#�#�v�u�b�#�v�#�t�#�#�t�#�t�t�#�#�t�t�#�t�#�t�#�t�#�t�#�#�t�t�A*#�#�#�#�#�az#�#�#�#�azb�gCazaz#�v�t�#�m#�m#�m#�mm#�m#�#�mm#�#�m#�m#�mm#�U�mv�#�#�#�v�#�v�#�#�v�v�#�v�#�v�#�v�#�#�v�v�#�v�#�v�#���v�#�#�v�b�b�#�u�m#�$#�#�az#�#�az#�#�az#�az#�az#�#�{�#�az#�az#�az#�#�azt�t�az#�az#�azaz#�#�az#�azt�azaz#�#�az#�azaz#�#�az#�az#�azaz#�#�azaz$$azaz$$azaz$gQaz$$9$$$az$	az$
$$az$az$
azaz$$az$azaz$az$$az$azazj$az$az{�az$$'az$az$az$v�$$gQgQ$gQ$ gQ$!gQ$"gQ$#$$gQ$%$&gQgCgQgC$(az$)az$*azgC$+$,gQ$-gQ$.gQ$/$4gQ$0gQ$1gQ$2gQ$3gQgCgQ$5$6gQ$7gQgQ$8gQgC$:$S$;$Eaz$<$=$@az$>az$?t�az$A$Caz$Bv�azaz$Dazt�$F$O$G$Jaz$H$Iaz��az$K$Maz$LgCaz$Nazu�azaz$Paz$Qaz$Rwaz$T$x$U$^$V$Z$Waz$X$Yazjv�az$[$]$\azazv�azj$_$j$`$h$a$bjv�$cazaz$d$eazaz$faz$gazmt�$iazv�$k$v$l$mazjaz$naz$oaz$paz$qaz$raz$saz$taz$uv�az$wazmaz$y$�$z$~${az$|$}azgQgQj$$�$�$�v�wt�{�$�az{�gQ$�v�$�$�$�$�{�wwgC$�$�gQv���azaz$�$�$�$�$�az$�$�az|az$�$�$�$�$�$�$�$�$�az$�azaz|az$�az$�az|$�az$�az|az$�$�$�az$�azaz$�|az$�az|az$�az$�$�az$�|$�$�azaz$�az$�az$�$�azgQaz$�azaz$�gC$�azkX$�$�$�$�$�$�$�$�$�$�$�az$�az�azazjaz$�$�azaz$�@az$�$�$�az$��$�$�$�$�b�azmazazgC$�$�az$�$�az|�$�|$�azgCaz$�azaz$�$�az$�az$�azubaz$�%$�%$�$�$�$�$�$�$�$��az�?gQ$�$��azazv�$�$�$�$�azv�$�az$�t�t�$�$�t�t�$�$�$�$�t�t�$��wt�$�t�t�$��wt�gC$�v�gC$�$�$�$�$�$�b�kXv�az$�azb�az$�$�$�$�w�gCgC��$�$�kXgCgCub%%%%	%%%%v�mv�v�%%mazmgC%
%
%%wb�u�az%%wb�az�1%%%%%gCazv�%%gCazazL�%%%%t�{�gCaz%%b�v�kXaz%%=% %/%!%(%"%%%#%$wazazkX%&%'w�wqazj%)%,%*%+b�azv�b�%-%.t�gCgCm%0%6%1%3%2gC�yw%4%5gCazb�gC%7%:%8%9gQwt�kX%;%<gQwazb�%>%L%?%E%@%Baz%AupgC%C%D�Q�az�%F%I%G%Hv�w*waz%J%Kmazt�v�%M%S%N%Q%O%P�?�b��;w*%RazgQ%T%W%U%Vazmb�t�%XazgQb�%Z%�az%[%\%}%]%m%^az%_azaz%`az%aaz%b%caz%daz%eaz%fazaz%g%hazaz%iaz%j%kaz%lazaz@%naz%oazaz%p%qazaz%raz%s%taz%uazaz%vaz%waz%xaz%y%zazaz%{az%|az@az%~az%az%�%�az%�az%�azaz%�%�azaz%�az%�%�azaz%�az%�%�az%�az%�az@az%�az%�@&%�%�az%�%�azaz%�az%�%�azaz%�%�azazgC%�az%�%�%�az%�az%�azaz%�%�azazv�%�%�az%�%�azaz%�az%�wUazaz%�%�az%�%�%�%�wUazazwUaz%�azwU%�&,%�&%�%�%�%�%�M%�MM%�%�MM%�M%�%�M%�MM%�M%�%�Mg�MM%�%�MM%�M%�M%��OM%�%�%�MM%�%�MM%�M%�%�M%�M%�M%�MM%�M��M%�M%�%�M%�%�%�M%�M%�%�%�%�%�g�%�%�g�%�Mg�g�%�g�%�%�g�Mg�g�%�Mg�%�%�g�%�g�%�g�$3%�%�%�Mg�%�%�$3%�M%�Mq�Mg�%�g�%�g�M%�&%�M%�M%�&%�%�%�%�%�%�%�����My���%��;%���M%�&q�&&M&M�|��~M&M&M~�;&&&	M&
M&&&&tO&
&�&��tOM)�&}q�&&��&&M&M��M��tO&M&M&M&M&&�+$3$3�+& &'&!g�&"&%&#&$y�����&&M��Mg�&(&)&*g�M&+g���M&-*&.)�&/)�&0(e&1'M&2&3&�&4&l&5&U&6&B&7&;��&8&9��M&:M��&<��&=&@��&>&?��M����&A��M&C&K&D&G&E��&F��M��&H��&I����&JM��&L&OM&M��&NM��&P&R&Q��M��&S&TM��M��&V&`M&W&X&]&Y&[M&Z��MM&\M��&^��&_����M&a&g&b��&c&e&d��M����&f��M��&h&i��&j��&k����M&m&���&n&o&z&p&s&q����&r��M&t&w&u&vM����M&x&y��MM��&{&�&|&&}&~��M��M&�����M&�&�&�&�M��&���M&�&�M&�MM&�&�M&�M��M&�����&�M&�&�MM&�&�MM&�M&���M&�&�&�&�&�&�&�&���&�M��&�����&���M��&���&���M&�����&�&�&�M����M&�&�&�&�&�&�&�M��MM&�M��&�&�&�&���M��M&���M��&�&�&���&�&�&�����M��M&�����&�M��&�'&�&�&�&�&�&�&�&�M&�M&�M��&�&�&���M��&���M��M&�&�M��&�M��&�&�&���&�&���&�M����M&�&�&�����&�&���&�M��M&�&�&���M����&�M��&�&�&�&���&�&�&�&���M��&�����M��&�&�&�&���&�����M&�����M&�&���&���&�&�����M&�&�M&�&�&�&�MM&�&�M&�M&�M&�MM&���M��M&�MM'��M'''��''��'��'''
'����'	M����M��'��'
��'��M'MM''��M'''M��M��''jM'''U''<''1''%''"'' ��'��M��'!M����'#��'$��M'&',''')��'(M����'*'+��M��'-'/��'.M��'0����M'2'8��'3'4��'5��'6����'7��M��'9':��';����M'='M'>'F'?'B'@��'A����M'C'E'D����M��M'G'J'H����'IM��'K��M'LM��'N��'O'R'P��'Q����M'S��'T��M��'VM'W'c'X'_'Y'\��'Z��'[M����']��'^M��'`����'a'b��M��M'd'e'gM'f��M'h��'i����M'k'�'l'�'m'�'n'�'o'x'p'u'q's'r��M��'t����M'v��'w��M��'y'�'z'}'{'|��MM��'~'M����M'�'�'���M��'�M��M'�'�'�'���'�'�����M��'�'���M��'�'�'�'�'�'�M����M'�'�M��M����'�M��'�'���'�'�'�'�'�'�����'�M'�M����'�M����'�'�����M'�M'�'�'���'�����M'�'���'�'���M��'���M��'�'�'�'�'�'�'�'�'�'���'�M��M'�M��'�'���MM'�M����'���'���'���M'���'�����'���'���'���M'�'�'�'�'�'�'�'�'�'���M��'���M��'���M'�'���'�M��M��'�'���'���'�M����'�'�'�'���M��M��'�'�'�����'���'�M��'�'�'�'�'���M��M'���M��'�'�����M'�(N'�('�('�'�'�'�'���'�'�M��M����'���'���M'�'�'�'�'�'�M��M����'���M'�((����M(����M((
((��((��M��(	(��(
M��(����M((((((��M��M(((��M����M((((M����M(��M��((:((0((#( ����(!M("M��($('(%����(&��M��((()��M(*M(+M(,M(-(.MM(/��M(1(7(2(5��(3(4����M��(6��M(8��(9MM��(;(F(<(B(=(@(>M(?MM��(A��M��(C��(D(E��MM��(G(J��(H(I����M��(K��(L(M����M(OM(P(YM(Q(R(V��(S(T(U��MM����(W(X����M(ZM([(a(\(_(](^��M��M��(`M��(b��(c��M(dM��(f)g(g(r(hM(iMM(j(kM��(lM(m(n(p(o��M��(q��M��(s(�(t(�(u(�(v(�M(w(x(�(y(}(z(|({M��M��MM(~M(M��(�(�(�(�M����M��M(�(�(�(�(�����(���M��(���(�M��(�(���(���(�(���M��(�����(���M(�(���(�(���(�����(���M(�����(�(�����(���M(�(�(�(�(�(�(�(�(�(�(�(�M��(���M��(���M����(�(�(�M(���M��M(���(�(���M(�����M(�(�(�(�(���(�����(�M(�(�MM(�(�M(�M(�M��M(�(�(�(�M��(�����M(���M��(�(���(�(�����M(�(���(���M(�����(�(�MM��(�(���(�(�(�M(�M��(�(�M(���M(�M��M(�(�(�(���(�(���M��(�(�(���M��(�(���M(�����M(�(�(���(�����(�(�����M(���(�����M(�)-(�)(�)(�(���(�(�(�(���M��(���M��(�)(�����(���M��)��))��M��))))))	)MM����)
M��)��)
��)M��M)))��M)M��)����)��M))())$))))M)��M)MM��))") )!M����M)#��M����)%��)&)'��M����)))*����)+),��M��).)J)/)7M)0)1)4)2��)3��M��)5��)6����M)8)?)9)<��):);��M��)=����)>M��)@)D��)A)B��)C����M)E)H)F)G��M��M)I��M��)K)_)L)S)M)P)N��)O��M��)Q��)R��M��)T)Y)U)W)V��M����)X��M)Z)\)[M��M)])^M��M��)`M)a)d��)b��)c��M��)e��)f��M)h)�)i)�)j)r)kM)lM)mMM)nM)oM)p)q��M��)sM)t){M)u��)v��)w��)x��)y)zM��MM)|)})�)~����)M����)�)�����MM)�)�)�)�)�M)�M)�M)�M��)�)�)�)�)�MM)�M��M)�)�MM)�M)�)�MM)�)�MM)�)�MM��)�)�)�MM)�M��)�MM)�M��)�)�)�)�)�)�)�)���)���M��)���MM)�)�����M)�)�)�)�)�)���M)�����M)���M��)�)�)�����)�)�M)�)�M)�)�M)�M)�MM��)�MM)�M)�M)�M��)���M��)�M)�)�)�)�)�)���MM��M��)���M)�M��M)�M)�)�M)�M)�M)���)�)�M)�M��)���M��)�)�)�g�g�q�)�)�}q)��Oq�g�tO)�)�)�)�)�)�g�)�*�Mg�q�)�g�g�)�)��J)�M�JM)�az)�|az)�)�az)�azaz)�)�az)�*)�)�)�)�)�)�gC)�t�mmb�)�)�)�u�b�u�)�)�jgCjaz**az*j*wcaz**u�*azu�az*jaz*	**
***gQazgQ*
azw***��azv�*t���****v�*b�t�v�b�az*t�gC*3�*3E*az*1�*+Q**t* *M*!*1*"*'az*#az*$*%*&jazazw�*(*-*)*+**u�azw�*,v�azv�*.m*/*0v�azt���*2*@*3*:*4*7*5*6t�mmu�*8*9az�M�?wU*;*>*<*=wU�"�"ub*?b�kXaz*A*G*B*Db�*Cb�w�*E*Fazwww*H*J*Iv��v�*K*LgCv�azw**N*]*O*W*Paz*Q*T*R*Sb�gCjaz*U*Vjazazjaz*X*Y*[w�*Zazv�*\ubazw�*^*k*_*f*`*c*a*bubkXv�gC*d*egCv�v�az*g*j*h*iwcwwazazv�*l*q*m*o*nazazkXaz*pv�azaz*raz*sazv�*u*�*v*�*w*�*x*~*y*|*z*{w�gQgQw*}b�ww�**�b�gC*�*�wgCkXaz*�*�*�*�*�azubj*�v�azj*�*�*�t�v�w*�*�w�azazj*�*�*�*�az*�*�*�azm��v�*�*�*�*�v�kXwaz*�*�azjjgQ*�*�*�*�*�*�w�wazu�*�*�v�b�v�t�*�*�*�*�kX�v�j*�*�jv�ubw*�*�*�az*�az*�az*�azv�az*�+*�*�*�*�gC*�*�gC*�*�gC*�gC*�v�*�v�gC*�gC*�gC�	�*�*�*�*�*�gC*�v�*�*�gC*�gC*�*�gCv�gCv�gC*�gCu�*�*�*�*�Tzu�gC�gC*�*�*�*�*�*�*�*�T4)���*�*���V�*�T%*���*�gCV�gC*�*�*�*����}��T*�*�J��S�*�*�*�*�*�*����J�-*�*��9J�S���*�*�*�*�v�R7J���*�*��"SQ*�gC*�+*�*�*�az*�az*�azw�*�*�b*�bw�*�w�az*�az*�az*�+*�+L�����+++RF�az�SC+++az+az+	+
azDSaz+az+
azv�++azv�+v�+v�az++-++$+az++ ++++++v�v�+t���t�+wq�wv�+v�v�v�+!+#+"���w��w+%az+&az+'az+(az+)az+*azaz+++,az�az+.+B+/+8+0+4+1az+2az+3w�"w+5az+6azw+7waz+9az+:+@+;+>+<+=v���~��+?w�,gCgC+AgCD+C+K+Daz+Eaz+Faz+Gaz+Hv�+Iaz+Jazv�v�+Laz+Maz+N+P+Oaz{���{�az+R-�+S,v+T+�+U+|+V+j+W+_+X+^+Yaz+Zaz+[+]w+\waz��azwcaz+`+e+aazaz+b+cb�az+dazb�+faz+gb�b�+hb�+ib��	+k+qgC+l+mgC+ngC+ogC+pgCv��az+r+sazaz+t+uw�+v+{+w+xazw�w�+y+zazw�azw�az+}+�+~+�az++�az+�az+�az+�azw�+�w�+�w�azaz+�+�az+���+���+�+�SSC��+�+�az+�+�+�+�+�+�+�w�����+�+������S�+�ww+�wwaz+�+�azaz+�+�az+�+��&+�+�az+�azSC��b+�,+�+�+�+�+�+�+�+�+�+�+�+�������+�+���&��4+�+�+�+�SC���+�+���b+����+�+�+�+�+�+�+�+�<�i����M+��[�^{�+�{�+����^+�+�w+�+�+�+��M�i�^+�{�+��^{��^+��^w�^+�+�+�+�+�+�+�+�Jwc����+�+��[���^+��^+��^{��^+�az+�+�w+�+�+�w��Ma��+�+�+�w+�wU+�wU+�wUpwU+�wU�^wU+�,+�+�+�+�+�+�+�+��Jw�<+�+��Ma��p+�+�+�+����?RTwU+�+�����-�^+�+�v�+�v�+�v��+�+�+�v�{�v�v�,,v�,v�,v�v�,v��v�,,az,,
,	v��3
{�,,v�,
v�,v�,v��v�,,6,,,,,v�,v�v�,S��v�,,v�,�K,v���v�,,*,v�,,!{�, {���,",$v�,#v�v�,%,)v�,&v�,',(v�v�v�v�v�,+,0,,,/,-,.v�R�R��v�v�,1,3�
,2��,4,5�v��1��,7,S,8,D,9,<,:azwq,;wqaz,=azv�,>,?,Cv�,@,A��,Bazv�az��az,E,K,F,H,G�K��K,I,JR�w�Z�j,L,O,M,N�
���1,P,Q��{���,Rw��,T,e,Uaz,V,\,W,Ym,Xm��,Z,[��t�����,],b�w,^m,_m,`,ammt�,cm,d�wmt�,f,k,g,h����,i,j�e��S�,l,t,m,n���,o,sm,pm,qt�,rt�mmt�m,u��m,w-9,x,�,y,�,z,�,{az,|,�,},,~m�m,�,��S	���o,�,��o,��
��,�t�W��,�,�,�,�{�,�{�,�{�ub,�,�,�,��W��,�,��"v�w�,�,�ub{�ub,�ub,�ub{�ub,�,�,�,�,�,�wc�"��4wc,��4v�,�,�,�,�������[,�{��w�,�,�,�,�,�,�,�u�u�,�u�v�,�,�,�v�,�v�u�,�t�v��y��,�v�,�,�wq,�,�,�v���wu�v�,�,�v�v�,�,�,�v�,�v�u���u�,�,�v�,�,�,�,�,��v���1,�,���t��w�s,�,�,�,�,�,�v��y���,�u���w,�,�,�v�u��Z,�,��j��
J�,�-,�,�,�,�,�az,�az�K,�{�az,�,�,�,�,�,�w�jjjj,�J��,�j,�,�,�,�w�jjj,�j�j,�-,�az,�,�,�,�,�,��yw��j,�,�j�����,�,�,�,���,�w�j,�,������,�,�j��j,�,�w�,�j,�jw�-��j��-azaz--azaz-az��---az-	--
az-az��azaz-
-azaz-az��--4--------T��F�--��v���&-w�--�4��w�--+- -#-!-"w���
b-$-&�-%���-'-*-(�-)w�v�w��&�-,-1w�--w�-.-/�
-0az�az-2az-3azbaz-5v�-6v�-7v�-8v���-:-�-;-^-<-W-=-I->-F-?-B-@-A�S���-C-D�9-Ev�a�v�-Gv�-Hv�S�v�-J-P-K-M-L���")-N-O��SQTC��-Q-T-R-ST%�Ba�v�-U-V��?J��-Xw�-Yaz-Zj-[j-\-]j���J�-_-|-`-v-a-r-b-h-c-f-d-ew��i���"�M-g�p-i-m-j-k���--lw��i�^-n�M-o�-p-q�Mp�M-s�M-t�M-u�M�^�M-wj-xj-yj-z-{�yj�j-}az-~az--�w�az-�-�az-�w�-�-�az-�azw�az-�azw�az-�-�-�-�-�-�-�az-�az-�-�Q��-�az�az-�az-�m-�mm-�u��s-�-�-�azgC-�-�-�v�-�-�kX-�kX-�kXV�kX-�-�-�-�v�-�-�kXv�v�v�v�-�v�-�v�gC-�-�-�-�-�-�~S����-�-��RT��-�-�-�-�{�?Uaz�,w-�J���-�-�-�-�-�-�-�-�-�-�XwFV�kX-�-��"F�-�-�-�-�S45�v�v�-��1��-�v�v�-�v�v�-�-�-�v�{�-�-�-���-�wv�v�-�v�-�-�v�v�{�-�-�-�-��KR�-�-�w3
�
�v�-�-�{���{�-�/\-�.-�.(-�-�az-�-�-�-�az-�az-�azaz-�-�b�-�-�-�����{��-�b�-�-�J�b�b�-�b���-�.-�.-�-�-�-�-�-�-�-�v���)��-�-���Tz�}��u�-�-�-�����......���S�t���.-��....	���R7.
v���u�..
..u�u�.u���.t���u�..v�.v�.v��4.v�.v��4az..az..$..!..����. T��az.".#J��-J�.%az.&.'S�v�R7az.).;.*az.+az.,.3.-.0.../�T4XwF.1.2��v�����.4.8.5.6��.7��v�.9v�.:��v���.<.K.=.B.>w�.?w�.@.ATw�w��.C.F.Dw�.Ew�F���.Gw�w�.H.Iw�b.Jbw�.L.].Maz.N.Rm.O.P.Qm��t���.S.[.T.Xm.Um.V.Wt�mt�m.Y.Zmt�m.\mm��.^.x._.f.`.c.a.bJ�S���.d.e�v�R7J�.g.p.h.l.ikXv�.j.kkXV�kXkX.m.n��.o�kX�.q.v.r.s����~.t.ukX�w.wTC�,kX.yw.z.}.{.|��;wJ�.~w�w.�.�.�.�.�az.�.�.�.�.�.�.�.�.�.���v�up�.�.���X���.�kX.�.�wFV����0.�.�.�.�.�.�����~S�.�.���TJ�.�.�.�.��{�.�.�S���-�,.�.�.�.�.�.�.�w���.�.��&S45v�.�.�.�.���Te.�.��w8��.�w.�.�.�.�S��,w.�w.�.�.�wv�v��.�.�.�.�v���.��,�.��w?Uwaz.�.�az.�az.�.�.�.�.�.�wc�".�v��"v���.��[{�{�.�.�.�ub.�ubaz�W��.�/.�.�.�.�.��.�.�.�.��v�"�.�.���1TgC.�.�.�.�.�.�.�.�T4S����.�.��;w�&.�.�.�.�S4�e�.�.��8?UJ�.��.�.�.�.�-Tv�.�.�.��w�.����.�/.�/.�.�.�.�.�u��u�.�.��Z���j�.�.�.�v���/�wt��s//wq////v�u���/�wt�u�/	�Kwq/
u�/u�/u�/
u�v�/////wc��4//�4��w�///{�/{�w�//{�/az{�az/azub/ubaz/ /./!/'/"azb�/#/$/%�?b�b�/&b��?u�/(/)gC/*/,v�/+�gQ/-wwU�?///O/0/;/1/4/2/3�gQwUS�/5/6�?�-�/7w�/8/9w/:ww*w/</=wgC/>/F/?/B/@�M/Ab�wb�b�/Cb�/Db�/Eb�kX/G/N/H/J/IkXb�kXkX/K/L/MkXv�v�pkXa�/P/V/Q/T/R/Sw���<w*/Ub�w�M/W/YkX/Xa�v�/Z/[pb��0��/]0`/^/�/_/�/`/�/a/|/b/n/c/g/dj/e/fQ�jj�/h/k/i/j�5�S�/l/mJ��8F�/ob�/p/v/q/r�j/sj/t/u�j�/w/{/x�/y�/zb���>��>/}/�b�/~wc/��w�/�b�b�/�/�/�b���w�b�/�/�/�/�/�/�/�/�/�/�up��4�4/��4v�/��/�/�"�v��v�/�az/�/�/�/�8?UJ�-/�azTv�/�az/�az/�/��az/�az/�az/�az/�az�az/�/�/�/�/�/�/�/�/�u�/�/��y���K�/�/���/���W��/�����/�/�/�v�u�/�/�v�/�u�u�/�u�v�/�u�/�u��u�az/�az/�az/�az/�/��/��az/�azSC/�/�/�az/�az/�az��az/�/�/�jj/�/�jj�/�/�/�gQ�1�/�gQw8gQ/�0/�/�/�/�/�/�/��"/��"/�/��"ub/��"�"ub/�jj/�/�/��yj�j/�/�/�/�/�/�/�/�wc�"���4/��[�/�/�/�{�w�{�/�/�ub/��"w�/��"ub�"/�m/�/�m/�mu�/�m�sm/�0
/�az/�0/�/�/�/��/��/�/��w�T4S�00����;w00000��&S400	�e��az0az0az0
az00Taz��00100000azwcaz0az00j0j00azjaz0az8?U0u�00.0 0'0!0#J�0"v���0$u�0%u�0&u�V�u�0(0*u�0)u���0+�	��0,0-����u�0/u�00u���u�020N030?040;05080607v���up�090:V�u�u�Tzu�0<0=0>���}���0@0G0A0D0B0C��T�J�0E0F���0H0K0I0J��w8��{�0L0MS���v�R70O0\0P0W0Q0T0R0S�yw��j0U0Vj����0Xw�0Yw�0Z0[w�j���0]jj0^0_jj�0a10b0�0c0�0d0v0e�?0f0r0g0j0h0i�?�9�W��0k0mS�0l�i�0n0ou�v�0p��v�0qp�?0s�?0t�?0u�?~�?0w0�0x00y0|0z0{�J���i0}0~)������0�0�0�0�wF���"�0�0�u�v�p�00�0�0�0�0�0�����~�0�0���?RTS�0�0�0�{��?�0�0�{�S��0�0�0�0�0�0�0�ww*w0�0�w*�1�gQ0�0�0�0�w80�0�0�0�w0�ww*w0�www0�0�0�www*w*�0�w*0�w*gQw*0�0�0�0�0�0�0�m�m0�0�mS	R��o0�0��o0�3
��0�0�W��t���0�0�0�0�0�0���������0�0��e��S�0�0�0�m���m0���m0�0�0�0�0�0�0�j0�j0�j�j0�0�0�0�w*0�0�0�0�0�0�ww*wwwwww0�w0�ww*w0�w*0�w*�0�az0�azj0�0�0��
0��
��az0�0�0�az0�az�40�az0�0�0�0�0�0�0�0�T��L���0�0���jw�az0�0�0�0�������0�0�F����0�10�0�0�0����
�0�1F���>11	11����11��11az�>���1
111�
��1
1azSC�RF�11N1151111b�11b�J�b�1111������e1b��b�11*11&1 1#1!1"���"S���1$1%��SQTC�;1'w1(1)wFwT%�&1+121,1/1-1.�BeJ��1011�J��9w13ww148w161J171C181>191<1:1;�S	���o�o1=����1?1A1@t�W����1B����1Dt�1E1H1F1G�e��S�1It����az1Kaz1Laz1MazRF1O1i1P1]1Q1V1Raz1Saz1Taz�1U�azaz1Waz1Xaz1Yaz1Zaz1[az1\azSC1^az1_1b1`1aL����w�1c1dSC��>1e�1f1gaz1hazSC�>1j1~1k1r1l1o1m1nw*�""��1p1q��gQ��1s1{1t1u��ub1v1z1w�"1xgQ1ygQw*gQ��1|gQ1}gQgQub11�1�v�1�1�m1�����1�v�1�v�1�m1�v�mv�1�1�v�1�v��41�v��41�az1�2�1�2H1�1�1�1�1�1�1�1�1�1�gCaz1�az1�1�1�az1�1��1�1�w�1�az�azw�azaz1�1�azaz��1�az1�az1�az1�1�az1�az�
�
az1�1�1�1�1�1�1�az1�az1�az�&1��&azaz1�az1�az1�az1�az1�az1�azSC1�1�1�1�1�1�1�1��1���RFQ�1�1���F���1�1�1�1�F��SC�1�1���w�F�1�1�1�1�1�1��4�1���1�1�az��>1�1��
1��
��b1�az1�az1��>baz1�v�az1�1�1�az1�az1�az1�az1�1�1�azw��w�1�1�1�1�S��L���1�1��1����w���1�1�1�1�1�azv�az1�azaz1�az1�1�azaz1�Q�az1�1�1�1�v�az1�az1�w�w�wckXaz1�2"1�21�2az2�Mazazj22az222v�22�Z2v�2	v�v�2
v�2v�v�2
2v��j��
222222J��v��22�1��2t�2t���2��v�2222�w2�wwq�swq2 az2!az�Kaz2#2<2$272%2.2&ub2'ub2(ub2)2*��{�2+{�2,ub2-{�{�ub2/az20ub21ub2226{�2324ub25{�{�ub{�ub28az29az2:az2;azubwc2=2@2>2?v�azv�az2AwU2BwU2CwU2DwUv�2E2FwUv�2Gv�wU2I2�2J2w2K2b2L2T2M2NwUazaz2Oaz2Paz2Qaz2R2S�az�2U2]az2Vaz2Waz2Xaz2Y2Z�2[�az2\az��2^az2_az2`az2aaz�BTaz2c2d2jaz2e2f2haz2g�S	�o2i�o3
2k2r2l�2m2o2n�����2p2q��4��2s�2t�2u2v�SCD�2x2�2y2�az2z2{az2|w�2}2~w��&2w��&w�2�2�2�az2�2�2�2�2�2�������2�2�D��2���2������2�az2�az2�az2�2���Saz2�2�2�az2�az2�az2�az2�az��azazv�2�2�2�2�2�2�2�jgQaz2�j2�j2�j2�jw�2�w�j2�2�2�2�b�az2�az2�jj2�8?U2�2�b�azb�az2�2�2�2�2�2�b�azgCaz2�2�2�az2�ww2��ww�az2�2�j2�2�az2�w�w�2���w�2�2�jazjaz2�3$2�2�2�2�2�2�2�2�2�w�2�w�2�w�2�w�j2�j2�2�w�jw�2�2�wazgCaz2�2�az2�2�az2�az2�2�w2�waz�Kaz2�2�v�az2�2�az2�az2�az2�az�2�az2�az�az2�2�2�2�az2�maz2�2�2�kX2�2�kX2�2�kX2�kX?UkXaz2�az2�2�kXazkXaz2�2�2�2�az2�t�t�2��y��ubaz2�32�3333v���az33v�az33
az333az�3	az3
az3az3az�az3az33F��3az�azaz33az3az3az3az3azw�az3azaz33gC3gC33"33!w3 wgC�y�K3#gC�KgC3%3?3&32az3'az3(az3)3*az3+azv�3,3-31v�3.v�3/30azv�azv�az333;343635azkXazaz3738az39t�t�3:�Kt�3<az3=3>v�azv�az3@az3Aaz3Baz3C3Dwazwaz3F3�3G3�3H3n3I3S3J3KazkX3L3Nu�3Mu�azu�3Ou�3Pu�3Qu�3Ru�az3T3mub3U3Vaz3Waz3X3c3Yazaz3Zaz3[az3\3]az3^azaz3_az3`3a3bazw�w�az3daz3eaz3faz3gazaz3haz3i3jazaz3k3lazw�azv�u�3o3�3p3z3q3uj3rj3sj3tjazgQ3vgQ3wgQ3xgQ3ygQaz3{3�v�3|v�3}v�3~v�3v�azw3�w3�w3�w3�wazaz3�az3�azkX3�3�3�3�3�3�az3�3�3�3�az3�az3�azaz3�az3�3�azaz3�3�azaz3�az3�az3�w�azt�kX3�3�3�v�azt�ub3�ub3�ub3�ub3�ubaz3�azaz3�kX3�kX3�kX3�kX3�kXaz3�3�3�3�3�3�u�3�u�3�u�3�u�3�u�az3�az3�azaz3�3�az3�az3�az3�azaz3�az3�3�az3�azaz3�w�azaz3�3�3�3�3�3�3�azb�kXv�3�3�v�ww�w�3�az3�3�azjjaz3�3�azgQ3�3�v�3�v�3�3�azv�3�v�az3�3�v�3�v�azu�3�u�az3�az3�az3�az3�3�3�3�3�az3�azgC3�gCaz3�az3�azm3�mazu�az3�43�3�3�azaz3�3�3�3�3�3�3�3�azNaz3�3�azNNaz3�az3�3�Naz3�azazNaz3�3�azaz3�az3�3�H:3�H:s�H:az3�L�44az44az44az4azaz4b�azaz4az4	az4
az4az4az4
4az44az4az4az4az44azwazaz44azaz4az44azwaz44O44>44.az44 azaz4!4"azaz4#az4$az4%4&az4'azaz4(4)azaz4*az4+az4,az4-az@4/azaz40az41az42az43az4445az46azaz4748azaz494:az4;az4<azaz4=@az4?az4@az4Aaz4Bazaz4C4Dazaz4Eaz4Faz4Gaz4H4Iazaz4J4Kaz4Laz4Mazaz4N@az4P54Q4�4R4c4S4Yaz4Taz4Uaz4V4Wazaz4Xazv�4Z4_az4[az4\4]az4^azaz<az4`az4aaz4bazb�4d4n4eaz4f4j4gazaz4h4iazazkXaz4kaz4laz4mazkX4o4taz4paz4q4raz4sazazv�4u4�4v4yaz4waz4x�^azaz4z4{az4|az4}azaz4~az4az4�az4�4�azaz4�azkX4�azaz4�4�azazv�4�4�4�az4�az4�az4�4�4�4�4�4�4�4�azmaz4�wUb�4�v�az4�b�az4�4�4�4�wazwaz4�4�wv�az4�v�gQ4�4�4�4�4�azaz4�azv�4�4�azb�w4�azgQ4�4�w4�v�4�v�wU4�4�w4�azu�v�4�u�azaz4�4�4�4�4�4�4�4�4�4�4�az4�v�4�azb�4�4�b�4�azgCb�4�b�az4�4�az4�b�4�b�u�4�4�b�4�azv�b�4�v�az4�4�4�az4�mgC4�azu�4�4�4�gCm4�mu�wUaz4�4�4�4�az4�az4�t�4�v�u�4�4�4�azaz4�jaz4�4�az4�azb�w*4�u�t�4�4�4�4�4�azaz4�t�az4�4�az4�mazj4�azj4�4�4�4�u�4�jazaz4�azu�4�azaz4�azu�4�54�54�4�4�4�u�b�u�az4�4�az4�az4�mu�4�5j4�u�maz5azw*55	555jaz5azb�j5v�u�5
555
v�5v�t�ww55v�v�az5��az55555azazgQaz5b�m555azw*5az5u�azv�5azwUaz5 5!5+5"5)5#5$Nazaz5%|5&5'��|5(�|az5*Naz5,5/5-az5.azazN5051NazN52az5354N55N\;N576d585�595q5:5]5;az5<az5=5L5>az5?5D5@az5Aaz5Bazaz5Caz|5E5Kaz5F5Gaz5Hazaz5I5Jazv�az|azaz5M5Naz5Oazaz5Paz5Q5Raz5Sazaz5T5Uaz5Vaz5Waz5Xazaz5Yaz5Z5[az5\az@azaz5^5_azaz5`5aaz5baz5cazaz5d5eazaz5faz5gaz5haz5i5jazaz5kaz5laz5m5naz5oazaz5paz@5r5�5s5�|5taz5u5v5�az5wgQ5x5ygQgQ5z5{gQ5|gQ5}gQgQ5~5gQ5�gQ5�gQ5�gQgQ5�5�gQ5�gQazgQ5�5�u�5�u�t�v�5�5�5�5�v�v�5�5�v��Kv�5�5�az5�5�azaz5�v�az5�azaz5�az5�5�azazv�az5�5�5�5�5�5�5�5�az5�az5�5�5�j5�5�5�5�az�K�Kaz�K5��Kazaz5�5�5�kX�KgCaz5�5�5�az5�azaz5�5�azaz5�az5�5�5�5�azaz5�az5�5�azaz5�az5�b�az5�azaz5�5�az5�azaz5�az5��azaz5�5�az5�azb�az5�5�5�az5�azaz5�az5�5�5�5�azv�az5�5�5�azv�az5�azv�az5�5�5�azaz5�az5�az5�az5�gCaz|az5�az5�5�5�5�|az5�azaz5�az5�v�az5�az5�azaz5�5�5�azv�az5�v�az5�azaz5�5�az5�az5�azaz5�az5�az5�az5�5�az5�az5�azaz5�5�az5�az5�azaz5�az5�az5�@az5�6U5�6&66az66azaz6az66az6az6az6az6	azaz6
az66az6
az6az6az6azaz6az6@az6azaz6az6az6az6az6az6az6az66azaz6az6az6 6!az6"az6#az6$az6%az@az6'6B6(azaz6)az6*az6+az6,6-az6.646/62az60b�61v�azaz63azgC656<66696768v�azv�u�6:6;mjv�az6=6@6>6?kXv�v�t�6Aazubaz6Cazaz6D6Eazaz6Faz6G6Haz6Iazaz6J6Kaz6Lazaz6Maz6Naz6O6Pazaz6Qaz6Raz6S6Tazaz@az6V6Waz6Xaz6Y6baz6Z6[az6\azaz6]6^azaz6_az6`6aazubazaz6caz�6e6�6f6s6gaz6haz6iazaz6j6kaz6lazaz6maz6naz6o6paz6qaz6razazv�6t6�az6uaz6vaz6waz6xaz6y6zaz6{azaz6|6}6�6~azaz66�azaz6�6�az6�az6�azaz6�6�az6�az@az6�azaz6�6�az6�az6�az6�azaz6�az6�az6�az6�@az6�az6�||6�6�||6�|6�|6�|6�6�||6�6�|6�||6�6�||6�6�||6�|6�|6�@|6�8u6�7�6�6�6�6�6�6�6�azaz6�az6�az6�az6�az6�az6�6�6�gQazt�az6�6�6�6�az6�6�6�az6�az6�6�6�az6�azj6�azaz��6�az6�az6�az6�az6�azv�b�6�azaz6�6�azaz6�6�az6�6�azgQgQ6���6�u�az6�az6�6�az6�az|az6�6�az6�6�6�az6�6�az|az|6�||6�|azaz6�az6�6�az6�6�az6�az6�6�az6�azb�az6�6�6�6�6�gC6�6�6�azgQaz�"kX6�az6�az6�6�azv�v�az6�6�az6�6�gQ6�6�azb�azkX6�az6�azgQaz6�76�7Mazaz7az77az7az7az7az7az7az7	az7
azaz77az7
az7azaz7az7w�az77�az77azaz777az7777azazgQ7azaz7gQaz7az77Kaz7 7!767"707#7(7$az7%az7&azaz7'gCaz7)7,az7*az7+azv�7-7.v�azaz7/jaz71azaz7273az74az75azazv�777H787Aaz797:7=7;az7<azazv�7>7@7?azazv�v�azaz7B7C7E7Dazazv�7F7Gv�gCazv�az7Iaz7Jwaz7L7k7M7T7Nazaz7O7Paz7Qazaz7Raz7Sv�az7U7b7V7\7W7Yaz7XgCaz7Zazaz7[gCaz7]7`az7^az7_azv�az7av�az7c7g7dazaz7e7fazgCazaz7h7iazaz7jgCaz7l7x7m7saz7naz7oaz7paz7qaz7rv�az7tazaz7u7vazaz7wgCaz7y7�7z7az7{7|azaz7}7~azazw�7�7�7�azaz7�azgC7�az7�az7�azazw�7�az7�azaz7�7�azv�az|az7�7�7�7�7�7�7�7�7�az7�azaz7�az7�Maz7�7�7�7�az|az7�az|7�7�|azaz7�7�azaz7�7�az�az7�7�az|7�7�7�7�7�az7�7�7�7�7�az7�7�azwUazwaz7�az7�kXaz7�7�7�7�7�azv�az7�7�b�azazwaz7�7�azazv�7�7�7�7�7�az7�azv�b�az7�7�7�az7�mv�7�7�kXazgCaz7�az7�azazv��az7�7�7�7�7�7�az||d7�azaz7�7�az7�az7�azaz7�azw7�7�7�7�az7�az7�7�azaz7�7�azwUaz7�7�7�7�|azaz7�az7�7�azaz7�azv�7�az7�@7�azaz|az�7�7�7�az7�azaz7�7�azaz7�az7�az7�7�azaz7�7�az7�az7�azaz7�7�azaz7�7�az7�azaz@az7�8848888	888azazgC8azaz8u�8u�azaz8
88az8v�8
waz8azgQv�88$88888azaz88azt�az88t�88azt�azv�j88!8az8azaz8 azv�8"8#az��az�w8%8,8&8)8'8(maz�iw�8*az8+azw�gCaz8-8.81az8/80azazv�82az83jv�az858Y868F878@888<89azaz8:8;azmaz8=8?az8>v�azazkX8A8D8B8Cazjv�az8Eazu�az8G8Hazw8I8X8J8Laz8Kazv�8Mazaz8Naz8O8Paz8Qaz8Raz8S8V8T8Uazw*azw*8Wazazw*gQaz8Z8g8[8`8\az8]8_8^azkXaz�1v�8aaz8b8f8cj8d8ew�azu�azazm8h8m8iu�az8jaz8kaz8l��az8naz8o8r8pt�az8qazv�8sazaz8tazu�8v9Y8w8�8x8�8yaz8z8�8{8~8|azaz8}az@88�8�az|azaz|az8�az8�8�8�az�raz8��'8��'8��'8����'8�8�8�azaz8�8��az8�az8�8�az8�az8�azazb�8�8�az8�8�az8�|8�azaz8�az8�az8�8�azaz8�8�az8�az8�az8�az8�azaz8�azw�8�azaz8�az|8�8�8�8�8�azaz8�az8�8�az8�az8�az8�azaz8�8�8�8�wU8�az8�azwUaz8�8�8�azwUaz8�az8�az8�8�az8�8�az8�azazw�8�az8�az8�8�w�azw�az8�az8�8�8�8�8�azF�8�Maz8�8�8�az8�M8�N8�@&@&8�@&8�@&8�8�8�@&8�@&8�8�8�8�8��@&�@&8�8��@&�@&8�@&8�8�8�8�@&8��@&8�8��@&�@&8�@&8�@&�@&8�azazAe8�az8�az8�azNM8�9
8�8�8�az8�az8�azaz8�8�az8�az8�azgQaz8�8�az8�az|az8�8�99|az9az9az99az9azaz99az9az9	azaz9
9azw�azaz||9999azaz9az9az9az99az�az|999I99B99=99az9maz9az99.9 9'9!9$9"9#������Z9%9&���j��
9(9+9)9*�����9,9-wqu��1�w9/9690939192�;���J9495����<��979:9899"��1��RT9;9<���?��wF9>9@az9?azmaz9Aazw�9C9F9Daz9Eaza�u�9Gaz9Hazw��9J9S9K9Naz9L9Maz�az9O9Qaz9PgCaz9Razv�az9Taz9U9W9Vazaz��az9Xazwq9Z:Z9[9�9\9�9]9k9^9h9_az9`az9aaz9b9cv�az9d9ev�az9f9gv�v�v�az9iazaz9jaz|9l9v9m9taz9n9oaz9p9r9q|||9s|��|az9u|azaz9waz9xaz9y9z9�9{az9|az9}azaz9~az9az9�9�azaz9�9�az9�azazgC9�azv�az9�9�9�9�9�9�9�9�9�azaz9�az9�az9�u�azazd{az9�az9�9���9��9��9�9���9�9��9��9��9��9��@�9�9�az9�az|9�azaz9�9�9�t�9�9�azt�v�9�t�9�t�azt�9�9�9�9�9�9�9�az9�azaz9�9�azaz9�9�az9�az9�azaz�L|9�9�az�9�azN9�9�NNQ�9�9�9�az9�az9�9�9�9�9�9�v�azv�az9�v�azv�9�az9�azv�az9�9�|az9�az9�azaz9�9�azaz|9�:G9�:&9�9�9�9�az9�9�9�az9�9�azaz9�az9�Q��>9�9�9�9�9�azaz��9�9��w�az9�9�9�9�9�9�9�w�jw���9�9��&�
���9�az9�az��az9�az9�maz9�9�az|az|9�9�9�azazku9�az9�:9�:9�az9�:
9�az9�:v�az:::az:v�:azv�az::
:v�:azaz:	v�az:azaz:v�azb�azaz:az::b�:az:az:az::az:az:az:b�az:az:az:b�azb�::"az:: :!azb�b�az:#:%az:$b�azgCaz:':6:(:0az:)az:*:+:.:,az:-azaz�:/azaz�:1az:2azaz:3:4azaz:5gCaz:7::az:8:9azg_az:;az:<:@az:=az:>az:?az�?:A:E:Baz:C:Dazmazt�:Fazv�v�:H:S:I:L:J:K|az|az:Maz|:Naz:Oaz:Paz:Q:Razb�az:T:V:Uazaz|:W:X|az:Yazaz|:[:z:\:x:]:`az:^az:_azH::a:p:bazd:cd:dd:e:fd:gdd:hd:id:jd:kd:ld:md:n:odd�:qazaz:r:saz:t:waz:uaz:vjaz@az:yaz|az:{:�:|az:}:~|az:azaz:�az:�az:�:�azaz:�az:�az:�az:�v�azaz:�:�:�:�:�:�azaz|:�az|az:�:�:�:�:�:�:�:�az:�az:�:�:�az:�:�:�az:�az:�gQaz:�az:�azgQazaz:�:�az:�az:�:�az:�azgQ:�azgQaz:�:�:�az:�azaz:�:�azaz:�:�az:�azazgQaz:�azt�~�|:�azaz:�az:�:�:�az:�w�az��:�w�azaz:�az:�az:�az:�az:�az:�az:�az:�:�azaz:�:�azaz:�az:�azw�:�<�:�;e:�;:�:�:�az|az:�az:�az:�azaz:�:�:�az:�az:�az:�:�:�:�:�az:�:�azaz|:�az:�az|azaz:�|az:�|:�:�:�:�az:�:�az:�azaz:�v�az:�:�az:�:�:�:�azazubazb�:�:�:�azaz:�v�az:�:�az�Kaz:�b�az:�;:�;:�:�az:�:�:�azkXazb�az:�az:�azgQ;;;;az;v�az;;v�azazj;;;	;
w�azw�az;;
jjw�azaz;;az;;az;b�az;;az�KgCaz;;D;;C;;,;az;azaz;az;;azaz;; az;!azaz;"az;#az;$az;%az;&;'azaz;(;)azaz;*az;+@azaz;-az;.;/az;0az;1;?;2az;3azaz;4;5azaz;6;7azaz;8;9az;:az;;az;<azaz;=az;>@azaz;@;Aaz;Bazaz�iaz|az;E|;Faz;Gaz;Haz;I;Jazaz;K;Laz;M;V;N;Q;Oaz;Pazv�az;R;Taz;St�azaz;Ut�az;W;Y;Xazv�az;Z;\;[azt�azaz;];^azaz;_;`;b;aazazt�;cazaz;dazt�;f<+;g;�;haz;i;�;j;�;k;|az;laz;m;naz;oaz;pazaz;qaz;raz;s;taz;uaz;vazaz;waz;xaz;yaz;z;{azazw�;}azaz;~az;;�azaz;�;�azaz;�az;�az;�;�azaz;�az;�;�azaz;�az;�;�az@az;�azaz;�;�azaz;�az;�az;�;�azazt�;�;�;�;�;�;�;�;�az;�az;�;�|az;�;�az;�azaz;�az;�az;�;�az;�azwqazaz;�;�;�;�;�;�;�;�az;�az|az;�az;�azgQaz;�|;�az;�azazv�;�;�az;�waz;�;�|az;�azaz|;�;�;�azaz;�az�;�|az;�az;�az;�;�azaz;�;�az;�azaz;�;�azgQaz;�az;�;�;�;�;�azgQt�az;�;�;�;�;�gQb�gQaz;�;�v�azu�az;�;�;�az|H:|;�;�;�az;�gC;�;�;�v�t�wt�az;�;�az;�azazt�;�;�;�az;�;�t�az;�;�az;�az|;�az;�az;�;�az;�az;�gQaz;�;�;�;�azv�v�az;�;�v�azazwU|az;�az;�az;�azaz;�;�az;�<az<az<az<az<<azaz<az<<az<az<	azaz<
az<az<<
az@az<<<azaz<az<az<<az<az<azaz<<azaz<<azaz<<azaz@az<<az< azaz<!<"az<#azaz<$az<%<&azaz<'az<(az<)<*azaz@<,<Aaz<-<.azaz</az<0az<1<2az<3azaz<4<5azaz<6az<7<8az<9az<:az<;az<<az<=az<>azaz<?az<@az��<B<V<Cazaz<Daz<E<Faz<Gaz<Haz<Iazaz<J<Kaz<Lazaz<Maz<Naz<O<Pazaz<Qaz<R<Sazaz<T<Uaz@az<W<jaz<X<Yazaz<Z<[az<\azaz<]az<^<_az<`az<aazaz<b<cazaz<daz<e<fazaz<g<hazaz<iaz@<kaz<laz<maz<nazaz<o<pazaz<q<raz<s<�<t<�<u<}<vaz<wazaz<x<yazaz<z<{azaz<|az@<~azaz<<�azaz<�<�az<�azaz<�@az<�az<�az<�az<�az<�az<�az<�az<�<�az@@az<�<�<�<�<�az<�<�<�az<�az<�az<�az<�<�az@@az<�azaz<�<�az<�azaz<�@az<�<�az<�<�azaz<�az<�<�azaz<�az@<�az<�azaz<�az<�<�az<�azaz@az<�<�<�az<�<�azaz<�az<�az<�az<�@az<�az<�az<�<�az<�<�azaz<�az@az<�<�az<�azaz@<�=�<�=;<�<�A<�A<�A<�<�A<�<�<�@&<�F�<�<�<�@&<�<�|�@&F�EzE�@&<�<��<��<��<�
�<�<��<�<����`<���<�<�<���<�<���<��<�<���4�<���<�<���<��<�<����4<�<�<��<�<�
��<���
�<���<�����<�AAe<�<�=<�AE<�<�=<�@&<�=<�H:<�=<�===�������==������===�����=	=
�����=H @&=
Ae�=@&=F�=F�=F�F�==F�F��=AA===)H:==="Ae===Ae=Ae=Ae�Ae= =!AeAe�=#Ae=$Ae=%='=&Ae�AeAe=(�Ae=*E�=+=-=,AeAe@&=.=/E�@&=0��.=1=2AeAe=3Ae=4=5Ae=6AeAe=7Ae=8=9Ae=:AeAe�=A=<==E�=>=YH =?=@=T=AE|�=B=C=IE=D=EE=F@E=G=HH:H:s�=J@&=K@&=L=Q=M=OH:=N�9�=PH:�H:=RH:=SH:NH:A=U=V@&=WH�=X�@&Ae=Z=f@&=[=\=c=]A=^E�=_�g=`=b=a�H�Ae�Ae=d=e�'E�Ae�'@&=g=h=~=it�Ќ=j=k=r=l=n=m���'�=o=p��'=q�'�=sN=t=x=u��=v=w���'��K=y={=z��'�4=|=}�'���4==�=�=�=�H �'E�=�=�@&=�@&=��@&=�=�=�=�=���=���EF���@&=�H =�=�EAA=�=�=�AeEAE=�=�=�=�=�=�@&Ez=�=�=�AEzAA=�=�=�F��=�H:=�=�=�=�E��E=�=�@&=�AeA=�=�=�=�=�=�H:s�H:=�H:s�H:=�H:=�H:s�H:�HGA=�=�=�=�H =�=�=�@&HG=�=�=�=�=�E�=�B=�H:A=�=��=�=�F�F�=�F�=�F�=�=�F�F�=�F�=�=�F�=�F�F�=�F�Gt=�=�A@EA=�H:=�=�=�Ae=�@&=�H:H:N*Ae=���BaA@&=�A=�A=�A@&=�A=�Ae=��=�H =��E=�E�E�=�=�E�E�=�E�=�=�E�=�E�E�=�E�=�E�=�E�=�E�=�E�=�E�=�=�E�=�E�=�E�=�E�=�E�E�=�E�=��<E�=�b�=�X=�I=�G^=�Fk=�At=�?�=�>d=�=�>=�=�d{d>nW>M�>>>>ML>>|�j�d`�>>
L>	Mg_>cW>cWcW>
>cW>cWcW>>cW>cWcW>cW��>b�>`�>`�ak>>>iM>L`�>xvb�M>>#t�>> aN>!aNaN>"MaNM>$>%>9>&rf>'rf>(>5>)>/>*>.>+q�d>,d>-q�dq�d>0>1dq�q�>2d>3d>4q�d>6L>7>8b�b���Lc�>:>;?�><?
>=>�>>>l>?>Q>@>I>AL�L�>B>C>H>DL�L�>EL�>FL�>GL��L��>JL�L�>K>LL�>ML�>NL�L�>O>PL��L�>R>XL�>S>TL�L�>UL�>VL�>WiL�>Y>`L�>Z>[L�L�>\L�>]L�>^>_L��L�>aL�>b>gL�>cL�>d>eL�>fL�L��>hL�L�>i>jL�L�>kL��>m>~>n>v>oL�L�>p>qL�>rL�L�>sL�>t>uL��L�>wL�>xL�>yL�>zL�>{L�>|L�L�>}�L�>>�>�>�>�L�>�L�>�L�>�L�L�>�L��>�L�L�>�L�>�>�L�>�L�>�L�L�>�>������L�>�L�>�L�>�>��L�>�L�>�L�>�>�L�>�L��L�>�>�>�>�>�>�>�>�>�L�>�L�>�L�>�L�L�>�>�L�L��>�L�L�>�>�L�L�>�L�>�L�>�L��L�>�>�L�>�L�>�L�L�>�>�L�L�>�L��>�>�>�L�L�>�>�>�>�L�L�>�>�L��L�L�>�>�L�L�>�L�>�xL�L�>�>�L�>�>�>�L�>�L�>�L�L�>�L��>�L�L�>�>�L�>�L��L�>�>�>�>�L�>�>�L�L�>�L�>�L�>�>�L��L�>�>�>�>�>�L�L�>�L�>�>�>�>�L��L�L�>�L��L�>�L�>�L�>�L�>�L�>�L��>�L�L�>�>�L�L�>�>�L�>�L�L��L�>�>�>�>�>�>�>�L�>�>�L�L�>�>�L��L�>�L�>�L�>�L�L�>�L��L�>�L�>�iL�>�?L�?L�?L�?L�?�L�?L�L�??L�?L�?	L�L��??t??M?
?(?? ???L�?L�L�??L�L�?L�?�L�L�????L�L�?L�i?L�?L�?L�?L��L�L�?!L�?"L�?#L�?$?%L�?&L�?'L�L�i?)?E?*?>?+?-L�?,L�i?.?5?/ii?0i?1i?2i?3i?4�+i?6?:L�?7L�?8?9L�L��?;L�?<L�?=L�L��L�???@L�L�?AL�?B?CL�?DL��L�L�?F?GL�?HL�L�?IL�?J?KL�L�?LL��?N?iL�?O?P?]?Q?WL�?RL�?S?TL�?UL�L�?V�L�?XL�L�?YL�?ZL�?[?\L��L�?^?c?_L�L�?`L�?aL�?b�L�L�?dL�?eL�?fL�?g?hL�L��?jL�?kL�?lL�?mL�?nL�L�?o?pL�?qL�?rL�?sL�L��?uL�?vL�L�?wL�?xL�?y?zL�L�?{L�?|?}L�?~L�L�?L�?��YL�?�?�?�?�?�?�?�L�?�?�L�?�?�?�L�?�?�L�L�?�?�L�?�L�L��L�?�?�L�L�?�L��?�L�?�?�?�L�L�?�?�?�L�?�?�L�L��?�L�L�?��L�L�?��L�?�?�L�?�?�L�L�?�?�L�L�?�L��L�?�?�L�L�?�?�?�?�L�L�?�?�?�L�?�L��?�L�L�x?�L�?�L�L�?��L�L�?�?�L�?�L�?�L�L�?�?�L�L�?�L�?�?�L�?�L�?�L�L��?�L�?�?�?�?�L�?�?�L�L�?�?�L�?�L�L�?�L�?�?�L�?�?�L�?�L��L�?��L�L�?�L�?�L�?�?�L�?�L�L�?�?�L��L�?�?�?�L�?�L�?�L�L�?�L�?�?�L�?�L�?�L��L�?�L�?�?�?�L�L�?�?�L�L�?�L�?�?�L��L�?�L�?�L�L�?�?�L�L�?�L��?�@@?�@ ?�d{?�@?�c�?�@?�?�?�?�d{`�?�?�b�dL`��
?�@@�i��@�@@i�@�i��@@	b�@c�b�@
@@t�hq~@
@o�db�b�@M@i�@i��
@@�
@�
�
@@�
�
@@�
@�
@�
@�
�
@�
@�
@�
i�c�@!t�@"@#t�l�@$@%cW@&M@'@4@(@.@)@,@*@+�hiMiM�v@-iM�8iM@/@1@0�i�iiM@2@3�8�iiM�8@5@:@6@8@7�8iM�8iM@9�i�8@;@=iM@<iM�i@>@?iM�i�i�8@A@yb�@B@Cc�@D@[b�@E@F@V@G@L@H@J@I�M�MB�M@Ki@�M@M@P@NLL@OL�@Q@Rc�d@SL�@T@UL��i�@W@Yd@XMi�L�@ZdLc�@\@]@v@^@k@_@e@`@dL�@a@b@cb�edN��d�@f@j@gb�@h@ie�xvb�p�b�c�@l@o@m@ne�e�Ԧ�@p@t@qb�@r@s�?����hk@uxv��e�@wb�b�@xb�{�@zAY@{A@|@�@}@�@~Lb�@@�@�@�@�@�@�@�@�b�c�lxrX@�@�rX�>#eazdNb�M@�@�@�@��iM@�@�M@�@�@�M��@�MMq�@�@�q�@�Mq�q�@�@�q����od@�NM�@�@�@�@�rf@�@�@�L�m�@�@�@�@�@�@�����rf��rf@�rfP@�PP@�PO�@�@�@�@�@�b�b�NL�@�M�n�L`�@�@�@�@�@�d@�@�d@�d@�d@�@�@�@�@�d@�d@�@�d@�dd@�d�Q@�@�d@�@�d@�d@�dd�Q@�dd@�@�d@�d�Qd@�d@�d@�d@�@�@�dd@�d�Q@�d@�d�Qdd@�d@�d@�@�d@�@�@�d@�d@�d@�dd@�db�@�d@�dd@�@�dd@�db�@�@�@�dd@�@�dd@�@�dd@�d@�@�d@�dd@�d@�db�d@�@�d@�dd�@�A@�@�M�L@�@�b�@�@�b�d$b�b�@�Ab�b�y|�AL�MAAIAt�AAAA
AA	MLc�NAb�Ab�b�A
b�AAb�Ab�Ab�b�AAb�b�AAb�b�Ab�d$AA0K�AAA!A`�`�AA`�A`�`�AA `�`��yA"A-A#A,gCA$gQA%A&gQgQA'gQA(A)gQgQA*gQA+��gQkXazA.A/gCgQ�?kXA1A=A2gCgCA3A4gCA5gCA6gCgCA7gCA8A9gCA:gCA;gCgCA<��gCgCA>A?gCA@gCgCAAgCABACgCgCADgCAEAFgCAGgCAHgCgC��AJb�AKb�b�ALb�AMANb�b�AOAPb�b�AQARb�b�ASATb�AUb�AVb�b�AWAXb�b�@AZAdЛA[i�A\A]j�A^g4A_AcNA`eAaAbee*ty�,Aeq~AfAiAgb��,Ah�,`�AjAoAkAnAlAmMg_iM`�g_b�ApAsAqArNaNMb�xvb�AuA�AvA�AwA�AxM�AyA�kuAzA{A�A|A}K�b�A~b�A`�Md]A�iMdiMg4A�A�A�A�A��CA�m�A�b�K�A�K�iMA�A�L�A�A�gQA�kX�A�A��igCwU�-A�A�L�A�A�A�MA�A�A�A�MA��;A��o�oMA�M�oMsGaN{
A�A�A�xvakb�|A�A�A�A�p�j*A�nWA�A�A�j*A�A�A�A�A�b�A�A�A�A�M��Mg�MA�Mg�Mi�A�A�L�cW`�dA�A�xvMA�NA�A�M�b�nWA�xvA�xvA�A�xvA�xvA�xvxvA�xvA�xvA�xvA�A�xvxvW[A�tyn�A�b�q~LA�c�A�A�dA�p�t�A�t�A�A�e�A�}�t�}�A�C�A�CA�BxA�B]A�A�A�A�A�A�b�A�c�lA�g4A�A�b�d{b�A�g&A��A����A�A�A�A�A�A�A�A�Ԧd{dؒc�g4c�A�lb�LA�A�A�A�A�A���A�A���q�������A�A�A��>xv��q�A�A�A���A�A�q��>���>A�A�A���������A��>��BB BBBBBc�d{xvb�Bc�d{BBBc�B	BB
B������tOB
BBBMtO���BB��y���q�b�BBd{Bd{d{BBd{d{Bd{BBd{Bd{d{BBd{d{B}�d{B!B(B"b�B#B$b�c�lB%MB&e�B'g4L�B)B[B*B>B+B7B,B/B-B.��b�b�Q�B0B6B1p�B2B4��B3��`B5��3���Q�ؒB8B;B9B:Q�xvLؒB<B=ؒv�m�L�B?BUB@BRBABBؒb�BCQ�BDBKBEdBFddBGBHdBIdBJdm�ddBLBMddBNBOdBPddBQdm�BSBTgnd�`�dBVBYBWBXt���iMj*BZؒiMd{LB\xvc�B^BqB_BhB`Bfd{BaBbBeBcBdt��Hc�Mb�ld{Bgxvc�BiBlb�BjBkb�db�BmBnkuLkuBoBpxvkuxvBrb�BsBwBtBub�t��XBvc�b�b�b�ByB�BzB�B{B�B|b�d{B}B~B�dBB�B�B�B�H:g_b�c�B�B�eL�j*��kud{B�B�B�d{B�B�B�x��9x�B�B�B�x�x�B�x�yB�x�B�x�x�b�B�B�B�B�c�LLb�Lb�B�B�B�B�B�B�B�LB�d{B�B�B�d{d{B�d{B�d{B�B�d{B�d{B�d{B�d{B�d{d{�d{B�d{B�B�B�d{B�B�d{B��d{B�B�d{d{B��d{B��d{B�B��d{B�d{B�d{B��d{iMB�iMB�B�B�B�B���i�ߺh^B�B��!�9Q6i�B�b�B�B�b�Lc�b�B�B�B�B�c�xvB�B�c�B�B�c�B�B�dMnW`�j�b�d{b�B�B�B�B�B�B�b�d{B�B�B�c�B�xvxvb�j�B�j�g&B�B�xvB�B�c�b�dd{iMB�B�B�B�d{B�c�B�d{B�d{B�d{d�B�B�B�b�d{c�b�B�d{B�B�l�i�B�B�B�B�B�e�B�e�e�B�B�e�e�hc�m�B�B�B�B�m�d{B�B�b�d{B�B�{
B�azNdnWCCCCd{�d{�g&`�CC`CC8CCCC
d{C	LC
CCd{{
c�b�CCb�CCCb�d{c�d{b�Cg4d{d{CCCCd{c�CC`�M�t�d{CCC/CC+CC)gnCs8C C!C(C"����C#C$��C%����C&��C'��gnq�,iMC*�8��C,b�C-C.d{�b�cWC0C4n�C1C2C3liMg_L�kXC5C6C7v�azv�azC9CMC:CDC;C@C<C>C=b�d{b�C?m�c�K�b�CACBCCm�c�M{
CECJCFCHCGb�b�xvm�CIm�j�d{CKCLb�`�b�CNCXCOCRCPCQb�j�c�d{CSCUlCTb�d{CVCWb�c�c�xvCYC]CZC[aU`�C\d{b�c�C^b�C_b�d{b�CaC�CbCwCcChCdCgd{Ce{
Cfb���kud{CiCtCjClCkb�c�azb�Cmb�CnCoCrCpCqb�b�b�b�Csb�b�b�b�CuCvb�ld{CxC|Cyb�b�Czb�C{c�j�C}C�C~C�Cb�c�{
C�b�c�d{db�C�C�C�C�d{C�b�C�C�C�C�C�`�C�C�d{t�dC�C�C�C�NLc�lC�C�MdQ�`�C�C�C�C�lg	nWC�M�Hb�C�kuC�kub�C�C�C�b�b�c�C�b�b�C�b�g&C�C�C�C�C�C�C�c�lb�d{C�C�C�d{C�C�azakd{C�d{C�d{�d{C�C�b�d{C�c�b�tyC�C�c�C�C�d{C�C�g&lc�C�C�C�v�`�b�z[C�C�nWC�b�azc�C�C�b�L�C�C�C�d{dL�d{C�EC�D3C�DC�C�C�C�C�C�d{b�C�C�C�C�b�c�C�b�g&lb�C�c�d{C�b�C�C�b�l�b�j�C�D
C�C�b�C�C�b�b�C�C�C�v�{�C�C�M�Mt�`�C�C�C�C�C�C��dC�C�g&C����=c�C�c�b�C�C�C�LC�`�`�C�`�C�`�C�`�C�`�C�`�C�`�C�C�`�`�e�b�C�akC��{akC�C�C�C�C�ڈlC�g&��l��C�b�DD
kuDb�DDH:H:DH:DH:DDH:DH:D	H:�H:DDMb�hb�DDDD�Fd{d{DDg&l�Db�c�d{DD"DDDDDDd{b�b�Db�lb�D��b�b�Db�D D!xvb�c�D#D*D$D%c�b�D&D(b�D'c�b�D)b��^b�D+D/b�D,D-D.b�`�az`�b�D0D1c�b�D2l�D4D�D5D~D6DkD7DdD8DbD9DPD:DID;D>D<D=d$��
ؒD?DHD@�HDA�oDB�oDC�oDD�oDE�oDF�o�oDGb��oL�iMDJDMDKDLO�HQ�OTDNDO�U\�D�FDQDXDRDUDSDTc�ֈdb�DVDW�HMd�HDYD_DZD[O�H�D\D]D^#���D`Da�H֥b�q�Dcb�g&ld{Dej�DfDgDhj�MdDiwDjMAeDlDsDmb�DnDo�b�Dp|Dqc�Drb�akNDtDvDub�d{c�Dwb�DxD{lDyDzln�lg&D|D}��lDD�D�D�b�D�b�D�b�D�D�D�D�Ng_ND�NNliD�D�D�D�D�D��D�}�d{q�D���~D�}��L�D�b�c�dD�b�b�d{D�D�D�D�D�D�D�D�D�b�D�b�b�l�D�D�D�d{D�D�D�D�b�liQ�Q�D�D�c�p���rfd{kuD�D�b�D�g&lj�b�D�D�D�D�D�D�b�c�d{ЛD�D�D�D�MD�e�D�e�uxvL�D�D��xdlD�w�D�v�wUD�b�D���D��D�D�D�D�g_D�D�g4D�D�g4D�D�g4D�g4D�g4D�g4g4c�g4D�D�g4g4D�D�g4g4D�c�g4NlrXD�$�rXD�D�D�d{D�c�D�D�b�wb�d{D�D�D�b�D�D�D�D�NLq~b�D�D�D�i#D�D�dMdb��;e�D�ED�D�D�D�D�D�D�D�xvtyq~m�D�D�`�b�Lp�D�D�D�D�cW`�m�y(D�LM�`�D�D�D�D�D�D�y7t�t�ND�D�xvLdND�D�D�D�~`�b�d]EE��c�L�g�EEkud{b�K�EE�EELEE)E	E%E
EEd{b�E@E
hEEhhEhEhEEhhEEhhEEhh`
EE#Eb�EEEb�EE�d����E b�E!E"q�O�פd{E$d{c�E&b�L�E'E(b�g4LE*EJE+E8E,E4E-E3d{E.E/E1d{E0tyd{d{E2K�d{b�cWlE5E6E7����g4b�E9EGE:E;Ld{E<��E=c�E>c�c�E?E@c�EAc�c�EBc�ECEDc�EEc�c�EFc�<�EHc�lEIl�b�EKb�}�EMEsENEUEOEREPEQd{b�xvb�ESd{b�ETkud{EVEd�EWEX�EY��EZ�E[�E\�E]E^�E_��E`Ea�Eb�Ec��@EeEnEfEkEgb�EhEiMcW`�Ej`�c�Elc�Emc�{
iMc�EoEpb�c�Eqc�ErMb�EtE�EuiMEvEyEwЌ`�Ex`�xvMEzE{E�E|EE}E~db�MdMg4E�E�E�Mb��,c�E�ML�E�E�b�E�b�E�kuE�xvb�E��Ib�E�{
E�b�E�d{E�Mc�E�E�E�E�E�E�E�E�E�E�E�b�E�b�E�b�E�b�E�b�E�b�E�b�E�b�E�b�E�b�E�b�E�b�b�b�E�E�E�E�E�dE�rXl�"L��E�E�ٰMlnWE�E�E�kuE���iME�ME�MNE�E�hlE�b�E�b�ME�`�L�E�E�E�E�E�E�d{E�E�c�b�d{E�b�b�E�E�b�M�ME�E�b�E�b�llE�xvE�b�E�c�e�E�E�E�E�E�d$b�E�b�d$d$E�d$E�E�b��p�E�E�E�d{E�d{M�b�E�E�c�E�c�E�i�l�E�E�E�M�b�ME�NtyNE�E�E�b�m�d{b�E�b�E�E�E�E�E�L�E�E�E��,�<��E�aznWE�nW�KE�E�b�nWE�E�E�E�L�Zy�LE�E�tk�iak)7E�cWE�FBE�Fb�E�E�E�E�b�b�E�E�E�b�i�t�g4b�Fc�d{FF$FFFFFFFFdm�Fm�F	o�F
o�Fo�Fo�F
o�Fo�Fo�o�fdF�ddFdFo�dFdFFdFdm�FFdm��FFb�b�FFb�F b�b�F!b�F"F#b�b�dF%F4F&F-F'F*F(F)Od
�F+F,W����FWpF.F1F/F0azgnxg`�F2F3^C�HLazF5F;F6F9F7F8�H�i#�HMF:c�Q�F<F?F=F>iMd{ld{F@FAN�V^CdFCFNd{FDFElFFFJFG�IFHFIM�@YtkazFKFLFMlL`���FOF\FPFXFQFUFRFTMFSMlLazlFVFWNazllFYdFZlF[�h`�F]F_MF^NlMF`c�FaFbllFclFdFellFflFglFhlFilFjllFlF�L�FmFnL�L�FoL�FpL�FqL�FrFsL�FtL�FuL�L�FvFwL�FxL�FyL�FzL�F{L�L�F|L�F}F~L�L�FL�F�F�L��wL�F�G%F�F�F�F�b�F�b�dF�F�`���`�`�F�F�F�b�F�F�F�b�F�b�b�F�F�b�F�b�b�F�F�b�b�F�b�b�b�F�F�b�b�F�b�F�b�F�b�F�b�b�c�F�F�F�c�F�F�j*F�F�F�F�b�F�F�F�
�F�e1����F���e1F�F�tyF�dF�dF�dq�`��JF�c�F�F�iM{
M�nWF�F�F�F�F�F�F�F�akF�b�L�,F�F�F�azNF�b�rXF���rXLF�F�F�M�F�M�F�M�F�F�M�F�M�F�M�F�M�F�M�M��0M�F�F�F�M�F�M�F�F�M�F�M�F�M�F�M�F�M�F�M�M�F��M�M�F�F�M�M�F�F�M�M�F�M�F�F�M�M�F�M�F��M�kuF�F�F�b�F�L�b�F�b�xvaNF�F��@F�F�F�F�F�F�kuF�b�F�F�l`�`�xgiM`�F�F�F�F�lkuazF�F�F�M+rl<�F�lF�F�AlMF�M`�F�GF�G
F�NGliGGq�GGq�q�Gq�Gq�Gq�Gq�GG	q�q�G
q�liGq�liq�GGGGGGGG��Mc�lGl`�q�lG�MGGL�GGazc�azkuGGG��`�gClMG MG!MG"G#MG$MMg�G&G?G'c�G(`�t�G)G*G+q~b�c�G,G-G8G.G4G/LG0`�G1`�G2G3`��Yk|`�G5b�c�G6G7`�aF`�MG9e�G:G;xvG<d{G=G>+��o�b�G@MGA`�GB`�c�GCGDGKq~GEGFGHGGb�rfc�GIGJb�d{`�L�GLGOd{GMdGNakt�b�GPGQGRb�nWc�GSGTL�L�GUGVGZGWL�GXGYL�xi�+G[L�G\G]L�xi�+G_H�G`G�GaG�GbG��GcGdGGeGnGf�Gg��GhGi�Gj�Gk�O�GlGm�L�GoGu�GpGq��Gr�Gs�Gta�_�Gv�GwGxG{�Gy�Gz���G|�G}�G~��!G��G��G�G��G�G���G��G�Q��G�G���G��G��_�G���G�G�G��G��G�G��G���@G�G��G��G��G��G��G��G���_�G�G��G��G��G���_�G�G�G���G�G���G�G��G���G�G��G�G���_�_�G���G�G��G�G��G��G�G���G��G��G�G����1G�G��G��G��G��G��_�G�G�G���G��G���G���G�G����G�HOG�HG�G�G�G��G��G��G��G��G��G��G�G���G���G�G��G�G��G��G���G�G���G��G�G��G���G�G���G��G��G�G���@�G�G���G��G�G��G���_�G��G�H�G��G�G�HG�G��G��G��O�_G���G�G�HG�-KG�G�-K@@H@-KHHH-K@-KH-K-K@�H�H�H	�H
��H�H
H�H�HH�H���O�HH�H��H�_�OHH;�HHH+H��H�HH��H�H H!��H"H#��H$�H%�H&�H'�H(�H)�H*@�H,H4�H-H.�H/�H0��H1�H2�H3���H5�H6�H7�H8�H9H:���_H<HC�H=�H>�H?�H@�HA�HB��HD��HEHFHHHG���OHI�HJ�HK��HL�HMkHN���HPHdHQ�HR�HS��HTHU�HV�HW��HXHY�HZ�H[��H\H]�H^�H_��H`�Ha�Hb�Hc@��He�HfHgH{HhHuHiHn�HjHk��HlHm���Ho�Hp�Hq�Hr�Hs��Ht-d��HvHw�Hx�Hy��Hz��H|�H}�H~��HH�H�H���OH��H����H����_H�H�H�H�H�H�H�H�H��H��H��H�H��H��H��H�H��Q�H�H�H��H��H��az�H��H���H�H����H��H��H��H���H�H���H�H����_�H�H��H��H��H��H���H��H�H�����H��H�H��H��H��H���H�H���H��H��_�H�H�H�H��H�H��H��H���H��H��H�H���H�H�H���_�_�1�H��H�H�H��H��H�H��H��H�H��H��H�Q�H����H��H��H�H��pL�pH�I�H�H�H��H�H���H�H��H��H��H�H��_�H�H���H����H�����H�H�H��H��H���H�H���H�H��H��H���H�H���H��H��H��H��H��@�H�H��I��II�I��II�I�I��II	��I
I��I�I
@��II�O��!IU�IO�IOIJ�II*IdIddIdIIddIIddIdIdI I!ddI"dI#I$ddI%dI&dI'dI(dI)db�I+J�I,I�I-I�I.IEI/I5I0I3I1I2� m�lidI4c�nWb�I6I@I7I?I8I;I9I:q�"�+�b�b�I<b�I=I>b�b�kuL�p�IAIBi�M�ICL�MIDlMIFIMIGIJIHIIxv{
Mb�IKILMxvxv�,INI�IOIPb�nWIQb�IRIZIS`�`�ITIU`�`�IVIW`�`�IXIY`�`���I[It`�I\I]IlI^IeI_`�I``�`�IaIb`�`�Ic`�Id`�z�If`�`�Ig`�Ih`�IiIj`�Ik`�z�`�Im`�`�In`�IoIp`�Iq`�`�Ir`�Isz�`�`�IuIv`�IwI~Ix`�Iy`�Iz`�`�I{`�I|`�I}z�`�II�`�I�I�`�I�`�`�I�I�`�z�`�I�`�I�`�I�`�`�I�`�I�z�`�I�I�b�I�MI�c�L�dMI�I�I�I�I�I�I�I�b�I�I�I�I�NQ�I�Q�NNI�Q�N`�L�I�I�j�Nb�MI�I�I�I�Ndg4L�I�I�c�b�x�dI�I�I�I�I�I�L�liL|�dI�c�NI�I�I�I�L�`�`�c�I�I�?"ddb�I�J*I�I�I�I�I�I�I�I�dI�z�I�c�azI�I�`�b�I�NL�I�L�I�L�I�I�I�I�L�I�L�L�I�I�L�I�L�I�L��:L�I�L�L�I�L�I�I�L�L�I�L�I��:L�I�I�I�I�L�`�i�dI�I�dnW`�t�I�I�I�I�I�I�b�xvt�d{I�I�{
Nb�rfI�I�I�I�M{
I�aNd)I�I�c�b�L�NI�JI�I�I�I�I�I�db�Nb�I�I�MiMq~I�LI�LI�I�LI�LI�LI�LI�LI�LI�LLI���LI�JI�I�b�M�JaNM�JM�JM�JJM�JM�JM�JM�JM�M�J	M�J
M��0JJ
`�LNlJJ#JJ JJnWc�dJJc�c�JJc�c�Jc�JJc�JJc�Jc�JJJxO����c��c�J!J"iMt�L�xvJ$J'J%J&p�`�L�NJ(J)cWMl�aNJ+JiJ,J[J-JTJ.JQJ/J<L�J0J1`�`�J2J3`�`�J4`�J5`�J6`�J7`�J8`�J9J:J;`�e�e�`�p�J=J>JNJ?JMJ@Me�JAe�JBJCJHe�JDe�JEe�JFJGe�e�e�JIe�e�JJe�JKe�JLe�e�dj*JOJP`�Q�g�b�JRJSb�b�b�NJUJXJVJWcWiMNb�JYJZnWcWxviMJ\JbJ]J_J^L�L�MJ`JaMkuL�`�JcJfJdJeb�M�M{
JgJhq~NL�`�JjJyJkJrJlJoJmJnb�`���dJpJqL�g_dLJsJvJtJult�g4j�JwJxnWc�l�dJzJ�J{J~J|J}Md{b�L�JJ�McWaNJ�J�J�J�J��,i�e�`�J�J��li�^CJ�J�J�J�c�`�LxvJ�J�b�xvaN`�dJ�M�J�J�J�J�M�M�J�M�J�M�J�M�J�J�M�J�J�J�M�J�M�J�M�M�J�J�M�M�J�J�M�M�J�M�>�M�J�M�J�J�M�J�M�M�J�J�M�M�J�J�M�>�M�J�M�J�J�M�J�J�J�J�J�J�M�M�J�J�M�J�M�J�M�J�M�J�M�J�M�J�M�M�J�>�M�J�M�J�M�M�J�J�M�J�M�M�J�J�M�J�M�M�J�M�J�M�>�M�J�M�J�M�J�M�J�M�J�J�M�J�M�M�J�J�M�J�M�J�M�>�M�M�J�J�M�J�M�J�J�J�M�J�M�J�M�J�M�J�M�M�J�M�J�M�J�J�M�>�M�M�J�J�M�M�J�M�J�J�M�J�M�J�M�J�M�M�J�M�>�J�OcJ�OaJ�OOJ�OEJ�M:J�K�J�KwJ�K>J�KJ�KJ�J�L�J�J�J�J�L�L�J�L��J�L�J�L�J�L�iL�L�J�KL�L�KKL��L�KKL�KKL�KL�KL�L�K	L�K
KL�KL�K
L�L��KL�KKKL�KL�KL�KL��L�L�KL�KKL�L�KL��KK2KK#L�KKL�KL�L�K K!L�K"L�L��+K$L�K%L�K&K+K'L�K(L�K)L�K*L��L�K,L�K-L�L�K.L�K/K0L�K1L��L�K3K8L�K4L�K5K6L�L�K7L��K9L�K:L�K;L�K<L�L�K=�L�K?KkL�K@KAKaKBL�KCKRKDKKKEL�L�KFKGL�KHL�L�KIKJL��+L�L�KLL�KML�KNKOL�KPL�L�KQ�+L�KSKZKTL�L�KUKVL�L�KWL�KXKYL�L��+L�K[L�K\K]L�K^L�L�K_L�K`L��+KbL�L�KcL�KdL�KeL�KfKgL�L�KhL�KiL�Kj�+L�KliiKmKniKoiiKpKqiiKrKsiiKtKuiKviL�iKxL�KyK�KzK�L�K{K|K�K}K�K~L�L�KL�K�L�K���L�K�L�K�L�K�K�L�L��K�L�K�K�K�L�K�L�L�K�K�L��L�K�L�L�K�K�L�L�K��L�K�K�K�K�K�K�L�K�L�K�L�K�L�K�L��K�L�L�K�L�K��L�K�L�L�K�L�K�K�L�K�L�L�K�K�L�L�K�L��K�L�L�K�K�L�L�K�L�K�L�K�K�L�K�L�L�K�L��K�K�K�K�K�K�L�K�K�L�L�K�L�K�iL�L�K�K�L�K�L�K�L�K�L�L�K�L��L�K�L�K�L�K�K�L�K�L�K�L���K�K�K�L�K�L�L�K�L�K�L�K�K�L�L�K�K�L�K�L��L�K�K�K�L�K�L�K�L�L�K�K�L�L�K��L�L�K�L�K�K�L�K�K�K�L�L�K�L��L�K�K�L�K�L�L�K�L��+K�L�K�L[K�L.K�K�K�L�K�L�L�K�K�L�L�K�L�K�K�L�L�K��L�K�LK�K�L�K�L�K�L�K�L�K�K�L�K�L�K�L�K�L�L��LLLLL�LL�LL�LL�LLL�L�LL��L�L	L
L�LL�LL�L�L
LL�L��LL�L�LLL�L�LL�LL�LL�L�L�LL�LL!L�LL�LLL�LL�LL�LL�L L�L��L"L�L#L�L$L)L�L%L&L�L�L'L�L(L��L�L*L�L+L�L,L�L-�L�L/LRL0L9L1L�L2L�L3L�L�L4L�L5L�L6L7L8L��L��L:LKL;LEL<LAL�L=L>L�L�L?L�L@�L�L�LBL�LCL�LD�L�LFLILGL�L�LHL�iLJL�L��LLL�LMLOL�LN�L�L�LPLQL�L��L�LSL�LTLUL�LVLXL�LW�L�L�LYLZL�iL�L\L|L]LuL^LmL_LfL`L�LaL�LbL�LcL�L�LdLeL��L�LgL�LhL�LiL�L�LjLkL�LlL��L�L�LnLoL�L�LpL�LqL�LrL�LsLtL�L��LvL�LwL�LxL�L�LyL�LzL�L{iL�L}L�L~L�LL�L�L�L�L�L�L�L�L�L�L�L�L��L�L�L�L�L�L�L�L�L�L�L�L��L�L�L�L�L�L�L�L�L�L�L�L�L�L��L�L�L�L�L�L�L�L�L�L�L�L�L�L�L�L�L�L�j�L�L�L�L�L�L�L�c^L�L�L�L�L�L�L�L�L�L�L�L��L�L�L�L�L�L�L�L�L�L�L�L�L�L�L�L��L�L�L�L�L�L�L�L�L�L�L��L�L�L�L�L�L�L�L�L�L�L�L�L��L�L�L�L�L�L�L�L��L�L�L�L�L�L�L�L�L�L��+L�L�L�L�L�L�L�L�L�L�L�L�L�L�L�L�L�L�L�L�L�L�L��L�L�L�L�L�L�L�L�L�L�L�L�L�L�L�L�L�L�L�L�L��L�L�L�L�L�L�L�L�L�L�L�L�L�L�L�iL�L�L�L�L�L�L�L�L�L�L��L�L�L�L�L�L�L�L�L��L�ML�M
L�ML�L�L�L�L�L�L�L�L�L�L��L�L�L�L�L�L�L�L�L�MML�L�MiL�ML�ML�L��ML�L�ML�ML�M	�L�L�MMMM
L�ML�ML�L�MML�ML�L��MML�M�L�ML�L�ML�MML�ML�ML�L�M�L�MM2L�M M!M+L�M"M#M(M$L�L�M%L�M&M'L�L��L�M)M*L�L��M,L�M-L�M.L�M/L�M0L�L�M1�L�M3L�L�M4L�M5L�M6L�M7M8L�L�M9iL�M;N*M<M�M=M�M>M]M?MEL�M@MAL�L�MBL�MCL�MD�L�MFL�MGMRL�MHMIL�MJMNMKL�MLL�L�MM�L�MOL�MPL�L�MQ�L�MSMYMTL�MUL�L�MVL�MWMXL�L��L�MZL�M[L�M\�L�M^MvM_MgL�M`L�MaMbL�McL�L�MdL�MeMfL�L��MhMoL�MiMjL�L�MkL�MlL�MmMnL��L�MpL�L�MqMrL�MsL�MtL�L�MuiL�MwML�MxL�MyL�MzL�M{L�M|M}L�M~L��L�M�L�L�M�L�M�L�M�L�M�L�M�M�L�L�M�M�L�L��M�M�M�L�M�M�M�M�M�M�M�M�L�M�L�M�M�L�M�L�L�M�L�M�L��M�L�L�M�L�M�L�M�M�L�M�L�L��M�L�M�L�L�M�L�M�M�L�M�L�L�M�L���L�M�L�L�M�M�L�L�M�M�L�L�M�L�M�L�M�M�L��L�M�M�L�M�L�M�M�L�L�M�L�M�L�M�L�M�M�L�M�L�L�M��L�M�L�M�L�L�M�L�M�L�M�L��M�NM�M�M�M�M�L�M�M�M�L�M�M�L�M�L�M�L�M�M�L��L�L�M�L�M��L�L�M�L�M�M�L�M�L�L�M�L�M�M�L�M�L�L��M�L�M�M�L�M�M�L�L��L�M�M�L�L�M�M�M�L�M��L�M�L�M�L��L�M�NM�M�M�L�M�L�M�L�L�M�L�M�M�L�L�M�L��M�M�M�L�M�L�M�L�L�M�L�M�L�M�L��M�L�L�M�L�M�L�M�M�L�L�N�L�NL�NL�L�NL�NNL�NN
NNN	L�N
L�iL�NL�L��NL�L�N�L�NN)NL�L�NNL�L�NNN"L�NNNNL�L�NNL�L�NL�iNL�NL�N L�L�N!L�iN#L�L�N$N%L�N&L�N'L�L�N(�L��L�N+N�N,N�N-N`N.NON/NDN0N=N1N7N2L�L�N3N4L�N5L�N6L�L��N8L�L�N9L�N:iN;N<L��L�N>L�L�N?N@L�NAL�L�NBNCL�L��L�NEL�NFNGNJL�NHL�NI�L�NKL�L�NLNML�L�NNiL�NPL�NQL�NRNXNSL�NTL�NUL�NVL�NWL�L��L�NYNZL�N[L�N\L�N]L�L�N^N_L��L�NaNzNbNrL�NcL�NdNeNkL�NfNgL�NhL�NiNjL���L�NlL�L�NmNnL�NoL�NpL�Nq�����NsL�L�NtL�NuL�NvL�NwNxL�L�NyL�iN{N�L�N|N}L�L�N~NL�N�L�N�L�N�L�xL�N�N�N�L�N�L�N�L�N�L�L�N�L�N��L�L�N�N�L�N�L�L�iN�N�N�N�N��N��N���N��N��N��N�N��N���N��L�N�N�N�L�L�N�N�L�N��L�N�N�L�N�L�L�N�L�N�L�iN�N�N�N�L�N�N�L�L�N�N�L��L�N�N�L�N�L�N�L��L�N�L�N�L�N�L�N��L�L�N�N�L�N�L�L�N�N�L�N�L�iL�N�N�N�N�N�N�L�N�N�L�L�N�L�N�L�N�L��L�N�L�N�L�N�L�N�L��+N�N�L�N�N�L�N�L�L�N�L�N�L�N�L��N�L�L�N��+L�L�N�N�N�N�N�L�N�N�L�L�N�N�L�N�L��L�N�L�N�L�N�L�N�L�L�N��L�L�N�L�N�N�L�L�N�L�N�N�L��L�N�O8N�ON�L�L�N�N�N�N�L�L�N�L�N�L�N�N�L�N�L�L��L�N�N�L�L�N�L�N�L�N�L�N�L��OOOOOL�OO
L�OL�OOL�OL�L�O	L�iOOL�OL�O
L�OL��OL�OOL���L�OL�L�OOL�L�OOOL�OOL�L�iOL�OL�L��OO%O L�L�O!L�O"O#L�L�O$iL�O&O-O'L�L�O(L�O)O*L�L�O+L�O,�L�O.O4O/L�O0L�L�O1L�O2L�O3�L�L�O5O6L�O7L�L�iO9L�O:L�L�O;L�O<L�O=O>L�O?L�L�O@L�OAL�OBL�OCODL�iL�OFb�b�OGOHb�OIOKb�OJb�b�b�OLb�OMb�ONb�b�c�OPOQcWORcWcWOSOTcWcWOUOVcWOWcWcWOXcWOYOZcWO[cWcWO\O]cWcWO^cWO_O`cW@cWObb�j�c�OdOkOeOgOfg_q~b�OhOjOi�H>�w�d{p�OlO{OmOzc�OnOoOyb�OpOqb�Orb�Osb�OtOvOuj*b�j*OwOxj*b�b��Lb�n�t�O|O}L�HO~dgCgQO�O�O�O�b�O�O�O�O�O�O�O�O�O�O�b�O�nWM�O�aNM�hxvO�O�c�t�L�O�O�M�M�O�M�O�M�O�O�M�M���O�O�O�O�nWb�b�d{b�O�p�akO�O�O�O�O�O���`�db�O�O�O�O�O���O�����O���O���O�O���O�����O���O���O���O���O�O�����@O�O�q�dO�dq�drfxvO�O�O�O�b�MhM�O�O�{
n�gCO�O�O�O�O�O�O�O�O�v�O�gCO�azgCv�azO�O�azO�az�b�O�azgCO�O�O�O�gQazubwO�O�v�azw�O�v�ubO�O�O�O�O�gCO�w�azv�b�kXb�gCO�O�O�O�t�cWNt�kud{MO�O�Лg4g_O�Q�O�P�O�PdO�PIO�PO�O�O�b�O�O�O�O�O�O�azt�gCt�O�t�azt�O�O�O�O�O�azazgQgCazO�O�b�t�v�gQO�iMO�PO�ЌO�Pb�O�O�b�O�O�����O�O�����w(PPb�Pd$Pb��PPPPP�,P�x�P	P
x�=3F��PP��P
���PP�ekek�Pt�PK�PK�Px�Pb�b�Pb�d$PPHPd{PP+PP!PPPL�Ng_�xP c�LP"P%P#P$dM�ak`�P&`�b�P'P(P*P)q�a�N#�`�P,P-PFP.P/Lb�NP0P1PCP2�bP3P;P4�b�bP5P6�bP7�bP8�bP9�b�bP:<��b�bP<�bP=�bP>�bP?P@�b�bPAPB�b�b�mPDPE<��b�b�maNPGdM�j*y7PJPLd{PKlLb�PMdPNPOj�PPj�j�PQPRj�j�PSPTj�PUj�PVj�j�PWPXP^PYj�PZj�P[j�P\j�j�P]j�@j�P_P`j�Paj�Pbj�Pcj�j�@PePhPfPgg_t�{
d{PiPw��PjPkPvЛPlb�Pmb�Pnb�Pob�Ppb�Pqb�Prb�Psb�PtPub��b�b�aNPxP�PyPzLdP{P�P|P�P}P�P~P�Pc�P�g4iM`�P��+P��+L��+P�P�L�P�L��+P��k��kP�P�P�P�P�P�g&lնlP�P�P�cWdP�kfdP�P�dhP�P�l��ldP�P�P�P�g4P����lP�P�ll�lP�lP�P�P�c�lg&lb�aNP�P�b�d{P�P�P�P�P�P�Mb�P�b�P�P�P�P�b�P�3�c�P�NAd{P�Лb�NP�P�azP�b�P�b�P�P�P�b�����b�P�b�P�d{d{P�d{P�\9}�P�P�P�P�c�lc�d{P�P�c�d{d{P�Лb�P�Q�P�P�P�P�P�P�P�P��,P�F�h�Hb�P�P�b�P�NP�P�ddP�P�dP�dP�ddP�P�dP�ddP�dP�dP�P�dP�d�db�ЛP�P�P�P�nWq~d{g4P�P�tyb�b�i�P�Q�P�P�P�P�P�ЛP�`�`�P�P�`�P�`�P�`�P�`�`�P�`�P�`�P�`�P�P�`�P�`�`�P�P�`�@`�P�akP�b��)b�P�QQQQQL�L�QQQQL�L�QQL�L�QQL�Q	L�Q
L�QL�L�QQ
L�L�QL��:L�QQL�L�Q�L�QQ4QQ%QQQQM��QQQQ[�N?sQ�QQ�8_�NQ�Q Q$Q!NQ"Q#P}N;N;��NU\Q&Q,Q'Q)��Q(b�OcOcQ*Q+OcNOcQ-Q/OcQ.OcU\Q0Q1U\OcQ2Q3NOcOcb�Q5QDQ6Q<Q7Q:b�Q8b�Q9b�����Q;��OcQ=Q?Q>��Oc��Q@QBQAb���b�QCb�b�~�QEQMQFQJQGQHb�OcQIOcOcb�OcQKQLm;OcQNOcQOOcm;QPb�OcQRw�QSQhQTQYx�QUQV���,QW��QX�p��QZQbQ[Q_x�Q\Q]Q^�ek�0b�Q`Qa�>x�"���QcQex�Qdd2��Qfx�Qg�}��b�QiQzQjQqQkQpQlQm��z�QnQo�H~���b����PQrQvQsQt")"�x�Qu�V�PQwQxp�b�x�Qy��d2Q{Q�Q|Q���Q}Q~Qb��,+�
Q�Q�Q����~��38�Q�Q�d$Q�d$Q��d��Q�x�")Q�")��Q�Q�Q�Q�n�ЛQ�Q�b�Q�b�Q�b�Q�b�Q�b�b�iMQ�iMQ�Q�Q�Q�Q���~
�Q�Ae��Q�Q�Q�Q�Q�~B�~B�Q�B�AeQ�Q�Q�AeQ�AeQ�e1e1Q�Q�e1e1Q�Q�e1Q�e1e1Q���e1Q���N�Q�Q�Q�M�cWQ�cWQ�L�nW�mQ�Q�Q�Q�Q�Q�Q�Q�Q�Q�Q��Q��Q�`�Q�Q�`�Q�`�Q�`�`�Q�`�Q�Q�`�`�z�Q�`�`��Q�Q��Q�Q��Q���Q�Q���Q��Q�Q���Q��s�Q�Q�Q��Q���`�Q��Q��Q��Q���Q��Q�Q���Q����Q�`�`�Q�Q�`�Q�`�`�Q�`�Q�Q�`�`�Q�Q�`�Q�`�Q�`�`�z�Q�Q�Q�`�Q�`�`�פQ�`�`�Q�de�`�Q�`�Q�`�Q�`�Q���`�Q�Q�b�c�b�g4Q�S�Q�Q�cWQ�db�Q�R�Q�RaQ�R(RRRRRRL�g_RdRRRd$d$b�RRd$R	d$R
d$b�d$RR
Rb�d$b�Rd$Rd$b�RRb�RgCRRRRRRb��;b�gQb�azgCm;b�RR&RR#��RRcWR cWR!cWR"cW��cWR$b��!R%d{b�R'b�xvaNR)R;R*R,b�R+b�dR-R2d{R.c�R/R0��c�R1c�dd{R3R4R7R5q~q~R6q~qpq~R8R9q~qpR:*�qpR<R?R=R>b�c�`�d{R@R`RAb�RBRQRCRJRDRGRERFm;j�c���RHRIgnLc�d{RKRNRLRMVpc�Nc�RORPؒNc�NRRRYRSRVRTRU� iMakxvRWRXg_��Q�NRZR]R[R\cWb��d{R^R_c��Hg4gnMcWRbR�RcR�RdR�ReRqRfRiRgRhkub�g4c�RjRnRkc�Rlb�Rmb�m�i#c�RoRpv�gCv�RrR�RsR{b�RtRuRxRvRwLdL�dRyRzd���Nb�R|R}RR~d{
dR�dd`�d{R�dc�R�R�R�R�R�c�b�R�R�R�R�R���!�!�`
R�R�)���rXc�R�b�g&R�R�R�R�d{R�R�R�lR���g&R�l�g&b�c�R�R�R�d{R�R�R�R�NLlg_R�R�L�NiMd{R�b�R�m�R�cWdR�R�R�R�R�R�R�b�d{b�R�R�b�xvm�c�R�R�R�R�L�R�R�R�R�R�c�MdMdb�b�c�R�R�c�d{b�c�R�R�R�R�R�R�hc�b�xvR�R�c�d{R�d{lR���ohR�R�b�R�b�c�R�b�b�p�R�R�R�R�R�R�c�b�K�MR�R�c�b�d{b�R�R�iMb�R�R�R�d{Mb�R�R�c�K�R�d{R�R�R�dR�ak�lakb�R�R�tkYtkR�{
R�SLR�SR�R�R�R�R�R�d{R��Cc�R�R�=�c�R�n�eR�R�R�e��e*R�R�b�R�xvc�R�R�b�c�i�d{R�SR�R�R�R���c�xvb�R�R�b�R�d{R�b�R�b�iMb�azSSSSM�c��Ib�SSd{b�SiMNSS	S
Mc�L�MSSS
SSSSSb�{
g_b�Sb�c�b�SSb�SNSakSSL�M� SSSb�b�Sb�S`�b�c�b�S SAS!S$S"S#p�c�xvb�S%S&b��Ib�S'S(c�S)c�S*S9S+S2c�S,S-c�S.c�S/c�S0c�c�S1c��/S3c�S4c�c�S5c�S6c�S7c�S8c��/S:c�c�S;c�S<c�S=c�S>S?c�c�S@�/c�SBSESCSDc�b�d{c�SFSKb�SGSHc�SISJdNt�`�xvc�SMS~SNSQb�SOSPb�d{b�SRSsSSSrb�STSUSqSV`�SWazSXazSYv�SZSeS[S`v�S\S]v�S^v�v�S_��v�v�SaSbv�Scv�v�Sdv���SfSkSgv�Shv�Siv�Sjv���v�Slv�Smv�Snv�SoSp��v�v���M�b��,t�StSzSub�Sv��SwN;SxSy`�c�LNc�S{S|S}Mc�M�w�SS�S�S�S�S�S�c�{
S�{
S�{
S�Z7{
S�hS�b�lxb�S�c�`�d{S�S�S�b�c�S�b�S�S�S�b�Lb�n�b�S�iMS�b�S�b�S�S�b�b�S�S�b�b�S�S�b�b�S�S�b�S�b�b�S�b�b�S�T4NS�S�S�S�S�nWc�b�c�S�S�S�S�S�S�S�S�S�S�i�b�S�j*S�H:iMS�~N�S�S�M���iMLS�S�S�S�b�M`�S�S�S�S�S�S�b�gCazS�gQazgQS�azS�azgQazS�S�S�b�S�S�m�lil�liS�S�S�S�S�S�S�S����
Q�S�����S�S�AS��NS���S�S��S��S���S�S���S��S����S�S�S�S�b�S�b�yS�S�yb�yS�S�yyS�yS�yS�yS�S�yyS���yb�S�S�S�b�yyb�S�S�S�S�S�S�`�b�NS�S�S�c�MNb�S�S���cWL�MS�S�LS�Mb�S�S�b�{
Lb�S�TTTTT	TTTb�TTcWL�T_�TMg�Mxv`�T
TkuazNb�T
TMTcWrfTTiMq~dc�TTTTTTc�TTTNT`�gQt�T�`�M�TTdMMakT T+T!T"c�iMT#`�T$T(MT%T&T'M�Mq�MT)T*MMq�T,T3T-LT.T2MT/T0T1N�Q�Q�MNakLc�T5T6T�T7T�T8TnT9TTT:TFT;T>T<T=b�xv|�M�T?T@MiMTAxvTBTDTC`�`��y�iTE�i`�TGTQTHTPb�TITJTMTKTLg�����c�TNTO� ��c��b�`�TRTSnWM+�nWTUT\TVTYTWTXMl�`�NTZT[g_N`�L�T]T`T^T_L�q~L�dTaTmM�Tbb�Tcb�TdTeb�Tfb�b�TgThb�Tib�b�Tjb�Tkb�Tlb���dxvToT�TpTwTqTtTrTsdLj*dTuTvm�MaNb�TxTzb�Tydc�T{T�azT|T}T�T~T�azTgCb�v��T�T�gCv�kX��|�nWT�T�T�T�T�T�b�dM�NT�T�L�ak�H`�T�T�T�T�d]`�T�`�T�T�T�T�����g��JT�T��otO����T�T�`�db�NT�T�T�T�T�T�T�T�T�T�L�dNcWT�T�lic�MT�cW��T�T�T�T�`�Mdc�T�T�ML�i�dT�T�T�T�T�T�cW{
Nb�dT�MT�T�T�WpT�WpT�T�T�T��*Wpm�T�T�#VWp�9T�Wp�9T�T���!Wp#VT�T�T�T�N`�L�nWdT�b�`�T�T�T�T�T�T�T�T�aNdT�NLL�T�T�Mc�dp�T�T�T�T�g4`�L�dT�T�b�d{dT�c�T�T�cW$$cWT�T�T�T�T�p�M�b�T�T�d]MMxvT�T�T�T�NL�iMb�T�T�dMM�L�T�UMT�T�T�T�c�b�iMb�T�U=T�w�T�T�T�iMiMT�T�T����:T�iMT�iMT�iMT�iMT�iMT�iMT�iMT�iMT�iM�8iMUU9UUUiMUiM�*�7<�UUiMUUUU@U	U
�8@U@UU
�8@�8�8UUU�8UU�LU�L�8�L�LU�LU�LU�LU�L�UU'UU!�LU�LUU���LU�LU �L����U"U#�:��U$U%�:U&�:���:U(U.U)@�:U*�:U+U,@�:U-�:@U/U4U0�7@U1@U2U3�7@�7�7U5�7U6�7U7�7U8�7�U:iM�:U;OU<iM�8j�U>U?UD{
U@UA{
{
UB{
UC{
_lUEUI{
UF{
UGUH{
{
Z7UJ{
UK{
{
UL{
Z7UNUiUOU^UPd]UQddURUSdUTddUUUVdUWdUXdUYddUZdU[U\dU]dd�U_ak{
U`UaUe{
UbUc{
Ud{
�9{
{
UfUg{
{
Uh�H{
UjU�UkU�UlU}UmU|dUnUoUzUpUq�Wn��fUrUsl�Utl�Uul�Uvl�Uwl�l�Uxl�Uy�ul�l�U{����dNU~Ulc�U�MU�NU�NU�NU�NU�NU�NU�NU�NU�NU�NNN;U�U�U�MM`�U�U�L�LU�b�M�`�U�U�U�U�U�U�L�dnWU�U�g4U�U�g4#u�U�U�L�xvd{`�U�U�U�U�Ne�L�U�U�U�U�U�i�Nc�gnU�U�akgn"�NU�U�Lb�U�b�`�U�wu�U�W�U�W�U�U�U�U�U�U�U�U�U�QU�U�U�U�U�U�U�U�U�U�U�U�U��_�_QU�U�U�U�Q�O�O�_�_U��_�OU�U�Q�U�U�U�U���_�!�OU�U�.��OpaU���U����U�U��U�U���
�U�U�U�U�U�U�U��_U��_U��_��U�U�U��_�_U��O�_U�2TQU�2�Q�U�U�U���_�_�U��_U��U�U�U��U�߫�@�_U�U�߫U���_U����O�OU�U��OU�U��O��_.)U��Q�U��OQ�U�2TU�
��OU�VtU�VV�_�O�V
�_VVVVVVV�V�VV	��V
��_V�V
V�V�V�_�OVVp��V��OVA�VV�_�_V�_�OVV'VV"V�V�VV�O��V V!@�@V#V$�_�V%�_V&�O��_V(�1V)VTV*V@V+�^V,V6V-�^V.�^V/�^V0�^V1�^�^V2V3�^V4�^V5�^c��^�^V7V8�^V9�^V:�^V;�^�^V<V=�^V>�^�^V?c��^�^VA�^VB�^VC�^VDVEVL�^VFVG�^VH�^�^VI�^VJ�^VKc��^�^VMVN�^VO�^VPVRVQc��^c�VS�^c��^VUVaVV�^�^VW�^VX�^VY�^VZ�^V[V\�^V]�^�^V^�^V_V`�^�^c�Vb�^�^Vc�^VdVe�^VfVmVg�^�^Vh�^Vi�^VjVk�^�^Vlc��^�^Vn�^VoVp�^�^VqVr�^Vs�^c��^VuV�VvV�VwV�VxV�VyV~Vz��V{�V|V}���VV�V��V���V���_�V��V��V�V��_�V��V��V�V���V��V��V��V�V���/�V�V��V�V�V�V����_�_V�a�_V�V�V�V��V��V���V��V�V��O��_�V�V�V�V��V���V��Q�V���OV��_QV�V��OV�V��V���V�V��V��V���V��V��V�V���V�V��V��V���@V�V��V�V��O�1�_V�V�V�V�V�V���V���1�V��V�V���Q�V�V�V�V��V��_V�V�V��_���/�V��a�_�_V��_V��A�1�V�V�QpV�W�V�WV�V�V�V��_V��O�QV��_pV�V�V�V�V�V��V���V��_V�V�V�V�����r�-V�V������-q�V�V��V��rV�V�V��r����V�V���������_V�V�V�V�V�V�V��_azV�azw*�_�V��_�_.�WWW�_�@�_W�_�O�WW&WWW��W�1�_W	�_W
QW2�2�W
W%W�_�_WWWW�_W�_�_WW�_W�_�_WW�\�_�\�_W�_WWW �_WW�_W�_W�_�_���_W!W"�_W#�_�_W$�_�\Q�OW'W^W(WCW)W6W*W0W+W.W,W-�`�`�i�i�W/`�EW1W3e�W2i��W4W5`�i�i�`�W7W=W8W:i�W9e���W;W<`�e�i�e�W>WAW?W@i����`�`�WBi�e�WDWSWEWKWFWIWGWHi�i�i�e�i�WJ`�i�WLWOWMWN`�i�`�i�WPWQ��lKWRi�+�~�WTWYWUWWWVi�i�`�WXi��i�WZW\W[i���`�rW]i�u�W_W|W`WnWaWgWbWdWce�e�i�WeWfe���e�WhWkWiWj|Xi�e��WlWme�`���WoWuWpWsWqWr������Wt�`��WvWyWwWx�`�e�i�WzW{i�`��e�W}W�W~W�WW�W�W�e�t]i�t]W������W�W�e���W�e��e�W�W�W�W�W�W�-"�e��W�W���i�ߍW�W��W��i�W�W�e�i����_W�W�W�W�W�W�W�W�W�W�W����D�W����W�W�W���_
W����_W�W�W���W��_�W��W�W���_�
W�W�W�W��W�W����W�W��W��_��W���OW�W�W�W�߫�_�_AW�W�QW�Q�W�W��_Q�_a�W�W���W�W�W��W�W���W�W���W��W�W���W�W���W��W��W��W��W��W�W��W��@�W���W�W���W��W�W��W����!W���W��W��W��W�W�W��W�W�W��W�W��W���W��W��W��W��W�W���W��W�W���W��W�@��W�W���W�W�W��LW�W�Q�!QW��O��XXXX�X�X�X��_�X��XX	XX
X�XXX
��2��X�X�-dXXXX-dX�.�XX�*�:�I�X-dXXX�g�v-d��X`�X\�XZM@&X X!AX"X$E�X#EzAX%Z
E�X&AX'AX(X)YUX*X�X+X}X,X_X-X<X.X8X/��X0��X1��X2X5�OX3X4�O��OX6X7���O�O��X9X;��X:�������OX=XTX>X?�O��X@XOXAXIXB��XC����XDXEXF����XG��XH������XJ����XK��XL��XMXN������XP��XQ��XR��XS������XUXV�O��XW�OXX��XY��XZ��X[��X\��X]����X^�O��X`XkXaEXbEXcEXdEXeEXfEXgEXhEXiEXjE�OEXlXtXmXsXnEEXoXp����Xq�OXr��E�O��XuXvE
�Xw��XxEXyEXzEX{�OٰX|ٰEX~X�XEX�EX�EٰEX�EX�EX��OX�X�X��OX�X�X�EE�OE�OX��OX��O�OEX�X�X�X�X�X�X�X��OX�X��OX�
wX�X��OX�X�
w
w�OX�
w
w�OX�X�
wX�X�
wX�
wX�
wX�X�X�����
w
w���@
wX�X��OX�X�X�X��O�OX�X��O�O
wX�
wX�
wX�
wX�
w�O
wX�
w�@X�X�
wX�X�X�X��@X�X��@�@X�X�
w�@
w�@
wX�
wX�
wX��@�@
wX�X�X�X�X�X� �E �EX�X��OX��OX�X�E�OX��OE��X�X�EX�X�X�EX�E�OEX�EEX�X�EE�OX�X�X�X�X�ٰX�X�X�EX��OE�OEX�X�EEX�X�E��E�OEX�X�X�X�X��@X��@X��@�@X��@X��@X�X�X��@�O�O�@X�EX�EX�EEX���E �X�EX�X�X�X�X�X�EE�OX�EEٰEX�EX�EX�EٰX�Y.YY'YYYY
EYYY	Y�O�OYEYY����EY
��
wY�OY���O�OYYYYYEY�OY�OY�OEY�OY�O�XEYY�OYEYE�O�OYEY�OE�OYY ��Y!�OY"�OY#Y%EY$E�OEY&�OEY(EY)EY*EY+EY,EY-�O�OEY/Y:Y0Y8Y1Y3��Y2��E��Y4Y5E
�Y6Y7E
�E
�Y9ٰEY;YJY<YBY=��Y>EY?EY@EYAEE
�YC��YDEYE��YF��YGYIYH��E����EYKYSYL�O�OYMYNYQ�OYO�OYP�OEYRE�O���OYT�OEYVGtYWY�YXYpYYYmYZEY[Y\E��Y]EY^YhY_YeY`
�
�YaYbEEYcEYd��EEYfYgEE�OYi
w
wYj
wYk
wYl
�
wEYnYoE�OEYqY�YrY�YsYt��
wYuYyEYvYwE��Yx
wEYzYY{E
wY|Y}Y~�OEE�OY�EY�EY��OE�OY�Y��OY�EY�Y�EY�EY�E��EEY�Y�Y�Y�EY�EY�E�OEY�Y�
�Y�E
�Y�Y�EY�
�EY�EY�E
�EY�Y�Y�Y�Y�Y�Y��O�OY��OY��O����Y�Y�Y�E��Y�EY�����Y�����Y�ٰY�Y�Y�Y�Y��OY�ٰY�ٰY�ٰEY�ٰEY�Y�Y�Y�ٰEEٰY�EY�EٰEEY�Y�EEٰY�Y�
wY�
wY�Y�EY�
wY�Y�Y�
w
wE
wEY�EY�EY�EY�EY�EٰEY�Y�Y�Y�Y�Y�Y���EY�Y�EY�EY�Y���Y���E��Y�Y�E��EY�Y��O��Y�EY�Y�Y�EY���Y�Y�EY���E��EY�EY���Y�����EY�EE�OY�Y�EY�Y�Y�Y�Y�EY�Y�EEY�Y�EY�EEٰEY�EY�EY�EY�EY�Eٰ�O
�Y�Z	Y�ZY�Y�EY�Y�Y�EY��OEE�OZZZZ��E�OEEZZEEZ�OZ��O�OEE��ZZZAZ
ZAZZAZAZA��AAZZAAZAZA��ZZ(ZH�ZZZE�Z@&H @&ZZ"�'ZEZ Z!F�AeH:Z#Z'Z$Z%AeEZ&AeAe��E�Z)ZLZ*ZEZ+ZBZ,Z>Z-Z7Z.Z4Z/Z1Z0�Ae@&Z2Z3E�@@&��Z5�Z6EAeZ8Z:EZ9��Z;Z=�Z<���H Z?ZAZ@@&EHGAeA�gZCAZDAeA��ZFZGZJ@&ZH@&ZIt�AeZK@&H:AeAeAZN[�ZOZ�ZPZgZQAZRE�ZSZUBaZTF�AAZVZWZXE�@&ZYZaZZH:Z[Z]Z\@&��Z^@&Z_�Z`azwazZb@&@&Zc@&ZdZe@&Zf@&�E@&ZhA@&ZiZjZ�ZkZ~ZlZtZmZsZnEZoZqH�Zp@EAZr@@&Ae��ZuZ{ZvZxH�Zw@&A@&ZyZz@&AeE�Z|A@&Z}�AZZ�Z�Z�azZ�Z�EZ�Z�EZ�Z�Z�h4��y(��g4Z��oZ��x��6Z��6Z�Z��6�6Z�Z��6�6Z�Z��6Z��6Z��6Z��6Z��6Z��6�6Z�Rb�6Z�Z�A@&Z�Z�Z��'Z�Z�AeL�Z�@&Z�@&@&AeZ�Z�Z�Z�EZ�
�Z�ٰ2��Z�Z�H:H:s�EZ�AeH:Z�EAeZ�Z�Z�H:AE�Z�Z�Z�Z��Z�E�E�Z�Z�E�Z�E�E�Z�E�Z�Z�E�Z�E�Z�E�E�Z�E��<Z�Z�E�E�Z�Z�AZ�Z�AZ�AZ�AZ�AAZ�Z�Z�AZ�Z�AAZ�AZ�Z�AAZ�AZ�AZ�AZ�AZ�Z�AAZ�C�AZ�AAZ�Z�AZ�AAZ�Z�AZ�AAZ�Z�AAZ�Z�AAZ�@AZ�[Z�[H Z�Z�EZ�Z�Z�Z�EH:Z�Z�Z�Z�Z�Z�Ae@&F�Z�Z�F�F�i@@&Z�@&��Z�AZ�Ae|�Z�AZ�[Z�Z��'Z��'Z�Z��'���'Z��Z�[Z�[�'���'�|[[���'�'��[[[[[[
[[	�'���|�'[�'���'[
�'[[���'�'���'[�'[[[�|�'���'[[~Ba[[Ae[[K[[5az[[['az[[az[azaz[ [!azaz["az[#az[$[%az[&azmaz[([+[)azaz[*mazaz[,[-az[.azaz[/az[0az[1az[2az[3[4azazm[6[?[7[;az[8[9az[:azazm[<az[=az[>azazmaz[@az[A[Baz[Cazaz[Daz[E[Faz[Gaz[Haz[Iaz[Jazazm[L[Y[Maz[Nazaz[Oaz[P[Qaz[Razaz[S[Taz[Uaz[Vaz[Wazaz[Xazm[Zaz[[[i[\[faz[]az[^az[_[`azaz[a[baz[caz[daz[eazazmaz[gaz[hazm[j[t[kaz[laz[maz[naz[oazaz[paz[q[raz[sazmazaz[uaz[vaz[w[xaz[yazaz[z[{azaz[|az[}azmE�BaA[�[�HG[�[�A[�H:[�[�E[�@&H:[�H:Ae[�[�[�E�[�[�@&Ae@&[�[�@&@&E�[�[�[�[�[�[�@&Ae[�AeAeA
�E���@&[�\G[�[�[�[�[�@&HG[�HG[�[�HGHG[�HG[�HG[�[�HG[�HGHG[�[�HGHG[�HG[�[�HG[�HGHG[�HG[�[�HG@HG[�H [�A[�A@&[�Ae[�Ae[�[�[�@&[�EzAe[�[�EAe@&A[�\[�[�A[�[�[�E�[��[�[�[�[�[�E�F�[�[���ABa�[�A[�AC�A[��E�[�[�[�[�[�[�@&[�EE �[��E@&E[�[�E[�E[�E[�E[�EE[�[�E[�E[�E[�EE[�E�A[�[�[�[�[�@&[�Ae�[�[�E[�[�H @AeBa[�[��@&[��H�[�[�[�[�GtF�[�F�F�[�[�F�F�[�[�F�[�F�[�F�F�[�F�[�[�F�[�F�[�F�F�[���F�F�[�[�F�F�[�\\\F�\F�F�GtGt\F�\F�\F�\F�\F�\	F�\
\F�F�\F�\
F�Gt\\\\AeH H H:@&\\\6\\)\\Ae@&\\\@&��@&\\#\\\��\��v���\ \!az����\"��az\$\(\%\'\&t�t�wwv�Ba��\*\.\+\-\,BaF��gAe@&\/A\0\3Ae\1\2F�H:�\4\5�<E�E�\7\@\8\<\9\:N�\;���\=\?\>�����B�\A\B\F\C��\D\EA=�A=A�\H\rE�\I\JE�\K\YHG\L\M\RA\NA\O@&\PH:\QEAe\SE�\TH:\U\W\V@&Ae@&\X�AEt�\Z\[\c@&\\A\]\^\`@&\_��Ae\a\bA��E@&\d\q\ew\f\l\g\hAeH:\i@&\j\ks�s�s�s�\m\n@&�\oAeF�\pGtF�Ae@&\s\�\t�\u�\v��\w\x\~�\y�\z\{�\|��\}�i@\\�\�\�\��\�\�\��i@�\�����\��\��F��\��\���\�\�\��F�F���\��\��F�\�]�\�\�\�\�\�\�\��_\��_\��_�_\��_\�\��_\��_�_\��_\��!�_\��_\��_\�
�_
\��O\�\�\�\��O
�1\�߫�\��_\�Q�!\�\�\�\�����\���\�\�����\�\���\�\�\���\���\���\���\���\���\�������\���\���\���\���\���\���\�������\�\�\��\�\�L\�-V\�v�u���\�\���4�\���4�\��_\�\�\�\�\�\�\�\�`�e�i�`�\�\���`�T�\�\��\��T\�e�e���\�\�\�\�\�\�e���i�\�\��e���e�\�\�\�\�`�����\�`���\�]e\�]9\�\���OQ\��\�\�]!\�]\�]\��_\�\�.�\�\�.�\�.�.��_.�\�\�]\�\�.��_��.h]].���.9��]]]]	].�].�.�]�_.�.�]
]]
.�].�.9�z.h]]]]]]���������[]�[]�[����k�k]]�_��]]].��k]].h]����\] �\�[]"](.�]#]$�_]%�_.�]&]'�_.��_�_])]*]4]+]0],�_]-�_].]/�[����_�_]1]2�[�_]3.��_]5��]6����]7��]8�[��]:]B�_];]<�_�_]=�_]>�_]?]@�_�_]A�!�_]C]K�_]D�_]E]F�_�_]G]H�_�_]I]J�_�_�!�_]L]M�_�_]N�_]O]P]Y]Q]U]R�_�_]S]T�_�_�!]V�!]W�!�!]X�!.h]Z]^�!][�!]\�!]]�!�_]_]b]`�!]a�!�_�!]c�_�!]d�!�_�_]f]g�!]h]v�]i]j]u]k]p]lp�@]m�_]n�_]oa�_]q]r�_p�_]s]tl��_Qap]w]�]x]}�_]y]z�_�_]{�_]|�_.h]~]��_]]�]��_]��_]�.h�_]��_�_.h]�]�]��_�_.h]��_�_]�]��_�_.h]�]�]�]�]��_�_.�]��_]�]��_�OQ�_]��_]�]�]��_�_.�]�]�]�]�]��_]�]�]�.�.��_]��_.��_.�]�.�]��z.h]�]�]��[]�]����������_]��_]��k]��k�_]�^6�O]�]�]�]�]�Q�_�_]�Q]�]��]�]��O�@]�]��_]�]�]�]�]��!߫��_�_]�]��]��]��]��]��]��]��]��]��]��
�]�]��_]��]��_�]��]�]���O�]���_]�]�]�
]�߫�]�]�]��_]�r,]�]�]�]�]�]�r,r,]�>r,]�r,]�]�>r,r,>A]�A]�A]�>Ap]�]���_]��_]���Q
]�]�^]�]�.�]�p�]�]�]�]�]�]��]�]�]��OQ]���O]��O�@�]��]�
�]��]���]��
^^�@^�_��_^^^^^^aa^�aa^	^
�-a�-^a^
a^aa�<Q^^^!^^^^�^��_^�^���_^^^^^��_p^��_��^�^ ��_^"^,^#^(^$^&�^%��_�^'��_�^)�^*^+���_^-^0�^.�^/��_^1^4^2^3
���^5���^7`^8^b^9^a^:^L^;�^<�^=�O�_^>^?^@�_�^A^C^B���_^D��^E�^F�^G�^H�^I�^J�^K�.�^M^P�^N߫^O߫�_�^Q�^R^S^V^T^U��_�_a^W���^X^Y�L^Z^`^[�[^\�L^]�L^^�L^_�L�\�L�[�LQ�O^c�^d^h^e^g
^f�_�@a�^i^jQ�^k_H^l^�^m^�^n^�^o^|^p^v^q^s`�^re�i�^t^u`����^w^ye�^xt]�[^z^{�e�`�i�^}^�^~^�^^�E��i�^�^��`���^�^�^�^��t]�i�^�^�i����e�^�^�^�^�^�^�^�^�i�e��i�^�^����`�^�^�^�^��`�`��^�^�t]��e�^�^�^�^�^�^���r�^�^�^�i�`�^�`�^�`�^�`�^�^�`�`�^�`�^��`�`�i�^�^�^�^�e��*e�e�^�`�e�^�^�^�^�e�^�^�^��^��t]^�e��e�^�^�^�^�^�e��e�^�^�e�ri�e�^�^�e�^��e�^�e�i�e�^�^�^�^�^�^�e�^�e�i�^�e�e�`�^�e�^�^��u�i�e�^�e�^�^�^�^��e�e�`�^�^�e�`�r`�^�_
^�^�^�^�^�^�^�^��^�e�`�^�^�i�e�`�F^�^�^�e����^�e�`�i�^�^�^�e�^�^��e�e�E^�^�^�^�e��ߍ�e���^�^�^�^�^�e�^��e�`�^�^�^�^�re�`�r^�^�`�i��`�^�_^�_i�_e��__#�i�i�r____i�lKi�r_	r���__&___
___��_e��__e�`�e��e�___`�i�i�`�______i�i�e�i�__i�`�F�_ _#_!_"`�e�i��_$_%`��e�ߍ_'_;_(_6_)_3_*e�_+e�_,e�_-e�_.e�e�_/_0e�_1e�_2e�*re�_4_5e���i�_7_:_8_9re�`�e���e�_<_B_=_?_>`�`�e�_@_A�e�`��_C_Ee�_Dt]`�_F_Ge�ߺ`�e�_I_�_J_�_K_i_L_Z_M_T_N_Q_O_P�e��i�_R_S�e����_U_W_V��`�_X_Yi��ٽ�_[_b_\___]_^`�r��e�_`_a�r`�e�_c_f_d_e�i�r�_g_h�`��e�_j_y_k_r_l_o_m_ni�r�i�_p_q�`�Ee�_s_v_t_u�`�i��_w_x`�e��e�_ze�_{_}_|r�e�_~_e�i��e�_�_�_�_�_�_�_�_�`�_�e���i�_��e�_�_�_�+�i�`�+�r_�_�e�_�e�_�e�i�_�_�e�`�_�e�e�i�e�_�_�_�_�e�_�e�`�e�_�e�_�+�e�+�_�_�_�_�_�_�_�_�e�_�_��e���_�_�e�_�_�e�_�e�_�_�_�_��k�z_����~�_�_�{�+�����_�i�i�F_�e�_�_�_�e�+�e�_�e�e�+�_�_�_�_�_�_�e�_�i�`�~V_�`�e�_�_�_�_��`�`��`�_�i�e�_�_�_�_�_�_�i�e�`�e��_�e��_�_�e�`�_�_�e�`�e�i�_�_�_�_�_�_�_�_�_�_�e�ߍ`�e�`�_�`�e�_�_�_�+�`�+�_�+�F`�_�_�_�_�e�_�e��`�_�e��_�_�_�_�`�e�i�`�i�_�i��_�`_�_�_�_�_�_�e�`�i�`�_�_��i�_�`�_�_�_�_�i�`�i��_�`�_�_�`�_�`�_�`�_�`�_�`�`�_�`�`e�`��e�``	```e�e���``e�`�ٽe�`
`e�`i��`
`���`�`�O``J`�_``I``:``&````�``���`�``�O���`�_` `#`!`"Q����`$�`%�O�`'`-az`(`)�_`*`,�O`+�_L��`.�`/`6`0`3�`1�`2��_`4�1�`5���_`7�`8�`9�O�_`;`?`<`=�_
�O`>�OQ`@`H`A`E`B`D�`C�_QQ��`F�`G��O�_�1Qp`K`�`L�O`M`g�O`N`O`\`P`T�`Q`R`S�Q��!`U`X`V`W�_���`Y`Z�
�_`[�!�1`]```^�`_�@�_`a`c�`b��_�`d�`e�`f��_`h`�`i`x`j`o`k`m�`l���`n��`p`s`q`r��_�_�`t`u���`v`w�@�O�_`y`~`z`|�`{���`}
�``�`����!`�`���1���`��`�`��`�`�`�`���O`��O�_`�`���O�`��!�O`�`�`�`�
��O�`����_�O`�`�`�`�.h`��_`��_`��_`��_`��_`��_.h�_`��_`��_�_`�`��_`��_`��_`��_.h�_`�b`�a^`�a$`�`��`�`�`�`�`�`�`�`�BaH:`�`�`�`��`�`�HG`�HGF�A`����A`�`��@&`�F�@&`�`�A`�EHGEF�@&`�@&`�`�`�`���`��`��`�`���`�`��`���`�`���`��`�`���`��`�`�`�`�EF��`���A`�@&`�`�AeA`�@&@&Aeaz`�az`�azE�A`�`�a!`�`�`�`�`�A`�`�@&`��A`�E���`�A`�`�`�`�`�E�AE�`�`�`�Ba`�`��~E
�az@&A`�`�F�`�`�nW`�`���@&
�@&@&`�@&�Ba`�`�F�A`�aaaaaaaaF�azH �aa
aEaa	�F������~��@&Eza
aaaaAeF�aaaaAe����.aa��N�Aeaa
�a
�a
�a
�a
�a
�a
�
�~a @&@&AEa"a#EzEAa%a-Ea&Aa'Aa(a)EAa*a+Ba��a,�~@&Aa.a/a9a0Aa1Aa2AAa3Aa4Aa5a6Aa7Aa8ADNAa:aLa;Aa<Aa=Aa>Aa?Aa@AAaAaBAAaCAaDaEAaFAaGAaHAAaIAaJAaK@AaMAaNAAaOaPAaQAaRAAaSAaTAaUaVAAaWAaXAaYaZAAa[Aa\Aa]AN�a_a�a`agAaaAabacaeH:ad��H af@&EAah�'aia�aj@&aka�ala{amazanayaoasGtapaq�Mar�M�\�MatawauF�F�av��F�axGtF��A�Ae@&a|E�a}a��a~aa�H:a�@Aea�a�@H:��K�a�E�a�H�a�a�a�H:Aea�H:�F�@&E�a�a�E�@&a�@&�a�a�a�@&a�@&a�@&a�@&a�@&a�@&a�@&a�@&a�@&@&a�a�@&a�@&a�@&a�@&@&a�@&a�a�@&@&�Ka�AE�a�a�a�H a�a�E�a�E�a�a�EF�EzH:a�
_@&E�a�a�a�E�E�Aa�a�E�a�a�a�a�H BaH a�a�a�a�a�A@&a�@&a�@&a�a���H�Aea�a�a�E�a�E�a�a�a�EH:Aea�AEH�EE�Aa�a�Aea�H:Aa�a�H:HGa�EzH:Aa�@&a�a�a�a�a�a�E�E���a�a��a���a��a�a���a��a��a��a�a��a��a���a��a����Aa�a�E�a�ba�a�a�a��Baa�a��Eza�a�a�H:H:a�a�H:a�H:a�H:a�H:a�H:H:a�a�H:�H:a�a��F����a�ba�ba�a�H:a��H:a�@@�HGH:bb�'��EAbAe@&Aebb\Abb	E�b
bAb@&b@&b
b@&EzbbE�E�bbbAbEzAebbH:AE@&bbDbb;bEH�bH�bbb/bb �SbAe�b!b-Ezb"b#Ab$�6s�b%"�b&b'"�b("�b)"�"�b*b+"�"�b,"�H:b.|�@&AF�b0b1F�F�b2b3F�F�b4F�b5F�b6b7F�b8F�b9F�F�b:i@F�Ab<b=b?@&b>@&E�b@bBbAGtEGtbCEGtEbEABabFbGbMF�bHbI@&E�bJbKbLH�Ba@&H:bNbWbObVH�bPbQbRH:�H:bSbTH:bUH:�H:�@&bXE�bYH�bZAb[AA�~b]AAb^b_bcAb`baAAbbAEzbdAbeb�bfH:@&bgbh@&bibk@&bj@&Aeblb�bmb�bnbt�9bobpH:bqH:H:brbsH:H:�,bubv�9H:bwb�bxb}byb{bzH:H:s�H:b|H:�9b~H:H:b�9H:b�H:b�H:b�H:H:s�b�b�b�H:b�H:H:b�b�H:H:s�b��9�,H:�6b�HGb�AeE@&b�b�@&b�@&b�b�A@&b��HGb�b�b�b�Eb�b��b�b�b�b�H:b�H:b�H:H:b�b�H:b�H:�H:H:b�H:b�b�H:H:�b�H:b�b�b�H:b�H:b�H:H:b�s�H:b�H:H:b�s�H:E�b�ʟb��b�h5b�gQb�e?b�d�azb�b�b�azb�azb�Baazb�c�b�c b�b�b�b�b�b�b�b�wgQb�azazb�azw�b�b�b���azb�azb�b�azazb�az�wb�b�b�b���b�b�azb�azazv�b�jgQv�b�b�b�mb�b�azwv�azv�mb�b�b�b�b�b�azv�azb�b�azb�bazb�b�b�v�v�b�b�azb�azb�u�azazb�azb�azb�v�azb�b�b�b�v�b�azb�azb�azb�b�b�b�azu�azazb�v�azb�cb�cazb�u�b�b�azb�azgCb�cgCcc
ccccgCcgCcgCazgCazcc	gCazgCazcccc
gCazgCazccgCazgCccgCazgCazcb�t�cccccazazv�v�cccu�azazb�ccu�azt�azc!cXc"cCc#c2c$c'v�c%t�c&v�azc(c.c)c+c*azmazc,azazc-azv�c/azazc0azc1u�azc3c:azc4c5c6azu�c7azc8c9v�azazwc;c>c<c=azu�azu�c?c@v�azt�cAazcBaz��cDcUcEcHazcFazcGv�azcIcRcJcPcKcMazcLu�azcNcO�1azazwcQv�u���cScTazv�u�azcVcWv�v�azv�cYcqcZcdc[c`azc\c]c_v�c^v�azazv�caazcbccv�wmazcecf�wazcgcichv�b�u�cjcnckclv�azazcmu�azcocpazt�az�1crc~cscxctazcucvb�azazcwazu�v�cyczc{azv�c|azv�c}azu�cc�c�c�c�c�azc�u�azazc�c�azwazc�c�azc�azc�mazc�azc�azazjazc�c��wt�mc�dUc�dc�c�c�c�c�c�c�c�c�c�c�azjazc�wmazc�c�c�azazt�azc�c�azv�azc�c�c�c�c�azazwc�azazv�c�c�azc�t�c�c�wc�v�c�c�c�c�c�c�v�c�v�azc�c�v�azv�azc�c�c�c�v�azv�azc�c�v�azv�azc�c�c�c�c�c�v�c�c�azv�azv�azc�c�v�azv�azc�c�c�c�v�azv�azc�v�v�azc�azwjc�c�c�c�c�c�b�azc�azc�azt�azc�c�c�v�azc�azwb�azc�c�c�c�azc�c�az�wazc�azc�azwazc�c�c�azwazazc�azc�t�azc�c�c�c�c�c�azc�azv�azc�c�c�v�azazwc�c�azc�c�c�az��c�azazu�c�c�c�c�c�v�gCwb�azazc�c�azazv�c�ddddazdddazjw�azdgCazdd	dazazw�d
dazdwazazd
azwddddazddazazt�ddw�dw�t�w�azdd��azdazdazw�azddLdd8dd,d d(d!d$d"d#azmv�azd%d&azu�azd'azmd)d*v�azu�d+v�u�d-d4d.d2d/d0wazazd1azwd3v���azd5d7d6azaz��azv�d9dEd:d@d;d=azd<w8azd>d?�1u�u�v�dAdCdBw�azv�dDazt�azdFdKdGdIdHazv�azazdJv�azv�mdMdSdNazdOazazdPazdQdRazv�azdTv�gQazdVdqdWdbdXazdYd_dZd[�wwb�d\b�d]azd^v�azd`azmdaazgQdcdlddazdedfb�w�dgdkw�dhdidjazv�v�azv�gQdmdnw�b�azdov�dpgQazdrd�dsddtd~dud}dvdydwv�azdxw�azdzd{wazazd|azubv�v�mazd�azazb�d�d�v�d�kXw�azd�d�v�d�azaz��azd�d�e/d�azazd�d�d�d�d�d�d�d�azazd�d�azu�azd�d�u�d�d�d�azd�d�d�azt�azwd�d�azwwd�azt�azd�d�azgCazd�d�w�d�az��d�d�d�azd�d�ubu�ubazd�d�d�d�azd�azd�jazazd�d�azazmd�d�azkXjazd�d�d�d�d�d�d�d�d�d�azd�azd�t�azazd�d�d�v�azazd�d�azd�d�d�d�d�d�d�wazwd�wd�wd�wwazd�azd�azd�azwd�wazd�azd�azd�azd�azazd�azwazd�u�azazd�azd�azd�azjd�d�d�d�azd�d�azb�azazd�d�u�ubd�gQazd�d�d�d�t�d�azd�wazkXazd�d�azu�d�d�azw�d�d�azu�azv�d�d�d�azd�d�d�d�azd�wcb�wkXazd�d�azd�d���azv�azd�e*d�azee&u�eazeazeeeeeazeeeazeaze	aze
azv�ee
azv�azev�ev�azeeazeeeazv�azv�v�eeazazv�eazeeeeev�azv�v�azazee e#aze!e"v�azv�e$aze%azv�aze'e)aze(u�az�"azwce+e,e-w��aze.ubazaze0aze1e2aze3aze4aze5aze6azaze7e8azaze9e:azaze;aze<aze=aze>azv�e@fLeAeW|eBeCazazeDazeEazeFeGeIeHaz|azeJazazeK|eL|eMeN||eO|ePeQ||eReS|eT|eU||eV|B/eXfeYe[azeZBaaze\e�e]e�e^ece_eaaze`v�wazebu�azede�eeejazefegazw�ehazeimazeke�ele�memeneoazmepu�eqeazerazesetexazeuazevv�ewv�azeye|azezv�e{v�azaze}e~v�azv�e�aze�aze�aze�azaze�v�e�azv�azwe�e�e�aze�azu�azv��1e�e�e�e�e�e�az��u�we�e�azgQe�e�e�azb�aze��"mu�e�e�aze�e�e�u�ubaze�me�aze�e�aze�e�e�e�e�aze�azazwe�e�aze�azwazwwe�we�e�azwe�waze�e�e�azaze�azv�e�aze��wu�aze�e�e�e�aze�jgCe�e�aze�me�me�maze�we�e�aze�e�e�azt�v�azaz��e�e�e�e�jwcazkXe�e�aze�e�e�e�e�aze�maze�azwaze�e�e�e�u�azazw�e�e�u�az�waze�azaze�e�azazv�e�e�e�e�e�e�e�azubaze�e�aze�e�e�wazazwe�e�e�azwe�azb�e�aze��azwUaze�e�e�aze�aze�we�aze�azme�e�e�e�ubazazkXaze�e�aze�e�u�azt�b�e�fe�ffazaz�azfwazffff	fazff�1wmazf
gCazfazff
wv�azfffffffffazazt�fwazw�azf�1azfazfv��azf�1wfwfwazf f2f!azf"azazf#azf$azf%azf&f'azf(azf)azf*azazf+azf,f-azf.azazf/f0azf1azaz@azf3f4f8|f5f6azazf7az|f9fKf:azf;fAf<az�f=�f>f?azazf@�azfBazazfCfDazazfEazfFazfGfHazazfIazfJazt�az|fMazazfNfOazfPgCfQf�azfRfSfrazfTazfUfVfgfWazfXfc��fYfZazf[azf\azazf]azf^f_faazf`az�?fbaz�?azv�fdazfeffazgQazazfhazfiazfjfkazazflazfmfnazazfofpazazfqgCazfsf�ftf�azfufvf�azfwfxf}fyf{azfzwv�f|azv�azf~azazfgCazf�f�azf�f�azazf�f�azazf�azf�az��f�f�f�azgQazazf�azf�wf�f�azazwf�azf�f�f�f�f�azazf�f�azf�azf�azf�azf�azazf�t�azf�v�azf�azf�azf�f�azt�azf�azazf�azf�azf�f�azf�azf�azazf�azf�t�azf�azf�azf�f�azf�f�f�f�azf�f�f�wwf�f�wf�wwf��Bwf�v�azf�f�azf�azazf�wazazf�f�az��azazf�azf�f���azf�azf�f�f�azf���az��azf�gf�f�f�f�azf�azf�f�azazf�azf�f�azazf�azf�f�azazf�gQazazf�f�azf�azf�azf�azf�azf�azazf�f�azazf�f�azf�azw�azf�azf�f�f�azf�f�az�azf�azv�f�azf�azf�azf�gf�f�f�f�f�azazf�azf�f�azf�azazw�f�azazf�azf�azf�azf�b�azgazgazazgazggazgazazkXgazgazazg	azg
gazazgg
azazw�gg&ggazggggazazgv�azgazv�azggazgazggazazgazggazw�azg g#azg!g"azv�gQazg$g%azazgQg'g?azg(g)g4azg*g+azazg,azg-azg.azg/g0azazg1g2azazg3�Mazazg5azg6g7azazg8g9azg:azg;azg<azazg=azg>w�azg@azazgAgBazaz�azgDgE|gF||gG|gHgI|gJ|gK||gLgM||gN|gO|gP|�gRh/gSg�gTghazgUgVazazgWazgXgYazazgZg[azazg\g]azg^azazg_azg`azgagbazazgcazgdgeazazgfggazazv�gigy|gj|gkgl||gm|gngogt|gp|gq|grgs|v�|gu|gvv�|gw|gx|v�gzazazg{g|azazg}g~azazgg�azazg�g�azazg�g�azg�azg�azg�azazg���azg�hg�g�|g�g�azg�g�g�g�g�azg�|g�v�g�v�g�v�g�v�v�g�g�v�g�v�g�v�g�v�v�g�g�v�v�g�azv�azg�g�azg�g�azg�azg�azg�t�azazg�g�azg�azwUazg�azg�azg�azg�azg�g�g�azg�azazg�azg�v�azg�g�g�azg�v�g�azjazazg�g�azg�azv�azg�g�g�g�g�g�g�azazg�azt�g�azg�g�azg�az|g�azg�g�g�g�g�g�g�ubazubt�azazg�azg�gQb�g�g�g�g�g�g�kXgCv�mg�wv�wg�g�g�g�wu�u�gQg�g�b�kX�Bubg�g�g�g��'azg�g�g�az|azg�azaz�azg�azg�|azazg�g�hg�azg�g�azg�g�g�b�azg�azazg�azwg�g�g�azazg�gCazg�g�g�g�azg�azjazg�v�g�azv�g�hazhhazb�azhazazhazwUhaz|azhazh	azazh
hhhazazh
hazhazazhhazazhhazhhhazazhhazazhhazazhazw�azhazhazhazwh azazh!h"azh#azazh$h%azazh&azh'azh(azh)azh*azh+h,azazh-h.az@azh0azazh1h2azazh3h4az�azh6��h7}�h8r�h9m�h:kh;i�h<iDh=h_h>@h?@h@hVhAhIhBhFhCdhDhEc�NMdhGb�hHNd`�hJhPhKhNhLhMc�d`�azxvhOku��hQhThRhSg_tyl�@hUcWakaNhW@hX@hYh\hZh[MdMdh]h^��t�n�g4h`h�hah�hbh|hchmhdhghec�hfL�b�K�hhhjhic��c�hkhlnWb�@`�hnhuhohrhphqd{c�db�hshtL@Lb�hvhyhwhxq~xvL�{
hzh{L�t�akg4h}h�h~h�hh�h�h�NMxvdh�h�lc�L�d{h�h�h�h�akb�c�g4h�d��`�h�h�h�h�h�d{�ob�h�h�b�MdnWh�h�h�h�akaNt�cWdd{h�h�h�h�h�h�h�h�h�h�b�nWd{b�h�h�Li�{
Mh�h�h�h�b��bdc�h�h�b�iM`�M�h�h�h�h�h�h�`�b�M�xvd{h�p��,h�h�h�h�M�L�Lc�h�h�d{cWNc�h�h�h�h�h�h�h�h�d{`�b�d{h�h��bMdlh�h�h�h�McW`�M�h�h�y7i��Id{h�h�h�h�h�`�Nlih�h�tyb�b�dh�h�h�h�c�|�Nt�h�h�`�dt�g_h�i
h�h�h�h�h�h�h�h�h�h�l�Hc�dh�h�����d{cWh�h�h�h�Makg_`�h�h�NMM�Lh�h�h�h�h�h��c�d{cWL�h�l�Ih�h�b�h�$$dh�h�akM�c���h�ih�h�h�h�@h�b�L�h�dc�b�h�h�h�dML�h�h�t�xvnWdiiiiiidL�� lidazM�ii
Ni	`�diit�dNz�ii(iiiiiidid{Miid{dd{c�iiii|�d@NiidcW`�Mii"dii i!nWd{@M�i#i&i$i%cWc�`�`�i'Ndc�i)i7i*i0i+i-i,akj*d{i.i/nWLM�`�i1i4i2i3MM�j�l�i5i6m�Ld{t�i8i>i9i<i:i;NK�Lg_di=dc�i?iBi@iAd@��@diCc�NiEi�iFiliGi]iHiQiIiLiJiKd`�diMiMiNdcWNiOiPNQ�NiRiXiSiTOcc�iUNxviV��iWxv��iYi\iZg_i[����dL�i^iei_ibi`iai�Lb�MicidNtyb�g_ifiiigihe�db�d{ijikc�ddb�imi�iniuioiripiqo�dazdisit`�OEM�g4iviziwiyixM��MMNi{ii|di}i~�[���g4b�|�i�i�i�i�Mi�cWMi�i�akd{Mazi�i�i�i�kui��1M�t�Mi�i�N��dL�i�i�i�i�i�i�i�i�nWi�xvaNi�i�b�y7L�sGi�i�i�i�b�`�dd]i�i�M�~�c�c�i�i�i�i�i�ML�b�i�i�di�Mi�Mi�Mi�Mi�M�J`�gCi�i�i�i�d�(N`�i�i�c�LZiMi�i�i�i�i�i�i�i�L�eq~b�i�i�`��C`�xvi�i�i�i�g_ML�b�i�i�Nb�dhi�i�i�i�i�i��,L�iMNi�i�NiMg_t�i�i�i�i�c�lidMi�i�b�q~M`�i�j~i�j1i�ji�i�i�i�i�i�i�i�iMMM�Mi�i�iML�MiMi�i�i�i�LnWd{L�i�i�M=�b�L�i�i�i�i�i�i��c�i�L�l�i�l�i�l�i�l�i�l�i�i�l�l�i�i�l�l�i�l�[mi�i�akw�t�di�i�i�i�i�Mi�i��;M����oiMb�i�i�NMg4d]jjjjjjjjMt�aN`�jj
b�jj	NNm+`�Mjjj
j��MjnW���=jLMkujj(jj"jj!jMjj i�ji�j��jj��j��j����jj��B���G?�xvb�j#j$c�c�aNj%j&j'||L��|[j)j.j*j-j+p�Ԧj,�gc�dt�j/j0MLL�y7j2jTj3jEj4j9j5j7j6dM|�j8db�M�j:jBj;j>cWj<j=MM�oj?j@e��jAlxlx�|jCjD�XlicW`�jFjMjGjJjHjIMxve�t�jKjLdLM`�jNjQjOjPc�dd{L�jRjS`�akNLjUjmjVjcjWj]jXb�jYj\jZj[L�NlMF�߫j^jbj_b�j`jaazw�w�azt�iMjdjijejfb�aNdjgjhlc�g&jjjkc�`�jlMd�Zjnjwjojtjpjqb�`�`�jrb�jsNjujv`�L�c�K�jxj{jyjzxvq~nWLj|j}i�`�rXd{jj�j�j�j�j�j�j�j�j�j�j�c�LM�j��Rj�pz�Rj�j�K�|�Лc�j�j�j�j�Li���b�j�j�Nc�K�L�j�j�j�j�j�j�`�d`�t�j�j�b�N`�L�j�j�j�j�dq~��j�j�NNQ�j�j�c�b�db�j�j�j�j�j�j�Mj�q~L�j�j�dy7Mq~j�j�j�j�Nb�cWb�j�j�j�p�j�j�j�!�!�j�!�l��l�d{{
j�j�j�j�j�j�`�MLNL�j�b�z�j�j�j�j�azb�d]b�j�j�`�b�b�dj�j�j�j�j�j�j�j�j�j�c�L��xL�j�j�g4xvxvb�j�j�j�j�j�L�j�j�O�j�Q�j�j�Q�j�Q�Q�j�j�Q�j�Q�Q�j��Q�Oq\;b�xvj�j�b��,dnWj�j�j�j�j�j�L�dL�Nj�j�j�b�j�c����yMb�j�j�j�j�Nj�j�azkXazc�L�j�j�`�b�K�g4j�kj�j�j�j�j�nWy7nWj�j�b�Mb�e�j�kj�j�L�Mc�b�kkc�b�i�MkkkkkknWdb�akk	k
dk
kkiMcW�d{aknWkkkkkMg�kg�q�b�kkk�W�,cO�:kkL�Mm�l�klEkk�kkdkk>kk/k k'k!k$k"k#hb�dc�k%k&nWb�`�L�k(k-k)k*c�`�d{k+k,az��azL�k.xvm�k0k6k1k4k2k3L�`�q~L�k5MM�dk7k;k8k9L��k:Mlignk<k=i�d`�b�k?kWk@kGkAkDkBkCc�MdLkEkFL�`�lb�kHkJxvkIdiMkKkVkLe�NkMNkNkONkPNNkQkRNkSNNkTkUNN`�g4xvkXk^kYk\kZk[i�`�b�Mk]b�cW��k_kadk`kuxvkbkcL�LnWL�kek�kfkzkgkpkhkkkikjM�aNp�dklkokmL��kn��4aNdkqktkrksMc�d{�bkukyazkvkwkxlx`�N+c�M�k{k�k|k~k}b�db�b�knWMk�k�k�dL��Xk�k�j�xvk�c�k�kuku� k�k�k�k�k�k�k�k�dg4k�aNk�k�M`�c��bk�k�b�`�L�c�k�k�k�Mb�M�dk�`
Nk�k�k�k�k�b�L�Hk�k�`�m;dc�k�k�k�k�db�Mlk�k�ld]L�Nk�k�k�k�k�k�k�k�k�k�k�k�b�k�azk�`�azk�MaNk�aN4�k�k�k�`�k�L�k�L�k�L�k�L�L�k�k�L�L�k�k�L�k�L�L��:c�nWk�k�k�k�`�d�,b�k�k�NcWNb�k�k�k�k�k�k�`�k�k�k�|�azdiMiM`�k�k�LxvMdk�k�k�k�L�MH:g4k�k�t�i�c�q~k�k�k�k�k�k�k�k�b�M�� {
k�k�Mdb�Nk�k�k�k�Ny�Lb�k�k�L�b�b�`�k�k�k�k�k�k�dp�M{
k�k�=�aNrfaNk�k�k�k�cWNNxvk�k��_dLL�k�lk�lk�lk�k�k�k�nWb�Ќc�lld`�lid{llllb�Md]`�llb�`�cWl	l
lNb�c�(�l
llllli�iMb�Лlld{g4iMazllllM�c�Mc�llnWLt�azll6ll/ll,ll c�b�l!l+l"dl#ddl$dl%dl&l'ddl(l)dl*d�ddg�l-l.Nb�`�dl0l3l1l2L�tycWq~l4l5iMnWML�l7l>l8l;l9l:`�b�LMl<l=p�c�L�Ll?lBl@lA`�b�`�LlClDMb�c�dlFmlGl�lHlflIlWlJlQlKlNlLlML�cWd{NlOlP��c�b�b�lRlTL�lS��߫lUlVL�b�nWiMlXl_lYl\lZl[db�nW��l]l^i�b�db�l`lclalbL�iMLc�ldled{tyNb�lgl�lhl�lil�ljl�lkNlll�lml~cWlnlolxlpcWcWlqlrlucWlscWlt$$cWlvcWcWlwcW$$lycWlzcWcWl{l|cWcWl})�cWcWlcWl�cWl�l�cWl�cWcWl�cWl�9�cWl�l�cWl�cWl�cWl�l�cWcWl�cWl�l�cW)�cWcWl�cWl�l�l�l�cWl�cWcWl�cWl�9�cWcWl�l�l�cWl�cWl�$$cWl�cWcWl�cW$$Md{l�l�l�l�Nl�NQ�l�M�l�l�M�l�M�l�M��M�l�M�l�M��b�i�l�l�l�l�l�t�Ml�l�Ml�Ml�Ml�M�;M��t�l�l��g4ٰMl�l�l�l�l�l�MxvMd]l�l�b�d]Ny7l�l�b�l�Ml�l�l�x�rfM�b�l�l�l�l�l�l�l�l�l�l�b�d{{
Ml�l�l�kub�dl�l�l�l��L��Xb�l�l�Mn�c�Ll�l�l�l�l�l�L�dMLl�l�Ml�l�l�b�dL�xvd]nWl�l�l�l�M�L��oMb�l�b�nWl�l�l�l�l�l�l�l�Mb�b�Ml�l�c�dMdl�l�l�c�b�`�l�l�b�L�c�Ml�ml�l�l�l�`�hLMl�mdL��`�mmmmNiMc�|�mm��Md{`�m	mUm
m6mmmmm
mmmL�b�`�dmmb�c�L}�mmmmb�Lb�mmmh4y(b�݋mLdg4mm$mm!mm db�c�`�m"m#iMMMdm%m3m&m2m'kum(m1t�m)m*nWm+nWnWm,m-nWm.nWnWm/m0nWnWj���L�d]m4m5c�j�L���m7mDm8m>m9m;m:ML�rfm<m=Mc�McWm?mBm@mAiMMNc�L�mCgQxvmEmKmFmImGmHd{t�t�|�MmJl�MmLmRmMmNxvL�xvmOmPmQ`��i*F�imSmTM�L�b�xvmVm|mWmmmXm_mYm\mZm[c�d{dNm]m^L�tyL��,m`mkmamjmbb�mcmgL�mdmemf�L�L��mh�L�mi��c�c�L�mlazb�mnmumomrmpmq��L�aNLmsmtc�b�b�dmvmymwmxb�LMxvmzm{j*b�M�aNm}m�m~m�mm�m�m�L�c�m�L�m�m�dx�g_p�m�m�xvLnWЛm�m�m�m�`�N`�b�m�m�jddb�m�m�m�m�m�m�dc�cWMm�m�m�p�m�NOcNnWNm�m�m�m�McWc�g4m�m�MdNxvm�pZm�om�n8m�m�m�m�m�m�m�m�m�m�m�m�� �Hb���m�m�aNNm�b�m�b�`�b�m�m�c�m�ML�m�m�L�g4b�dm�m�m�m�m�m�b�m�m�~�~��Idm�g4m��Xg4m�m�m�m�m�m�dxvML�m�m�M�����{�m�M�m�m�`��&B�m�m�m�m�p�b�b�m�azm�L�dm�m�g4b�Ld{m�m�m�m�m�m�m�m�c�`�b�aNm�m�c�b�MaNm�m�m�m�Mt�p�cWm�m�b�xvdg4m�m�m�m�m�m�m;dM�Mm�m�Lb�azL�m�m�m�m�Mc�iMc�m�m�g_b�m�L�m�m�`�y7�blm�nm�n	m�nm�m�m�m�m�drXm��rXb�g4nnb�`�Mb�nnnndb�c�Mnn`�aNL�Nn
nnnnnn
cWn�����MNb�nnNb�b�nWnnnnMxv`�cWnnc�xvp�d{nn)nn"nnb�nc�b�n n!dMb�`�n#n&n$n%c�Mb�Mn'n(cWMN{
n*n1n+n.n,n-aNMb�dn/n0cWxvaN�gn2n5n3n4`�tyK���n6n7L�dL���n9n�n:n[n;nJn<nCn=n@n>n?aNb�g_{
nAnBLb�`�xvnDnGnEnFMd=Ob�nHnIM��ak�,nKnRnLnOnMnNj�c�hp�nPnQL�M�b�dnSnVnTnUL�dg_b�b�nWnXb�nYnZg��Og�Mn\n�n]nfn^nan_n`dc�Mc�nbneMncg_ndg_t���iMngnjnhnil�M�L�cWnknlc�g4nm��e�nnnon~npe�nqe�nrnxnse�ntnwe�nue�nvd�e�d�e�nye�nzn}n{d�e�n|d�e�d�e�ne�n�n�n�e�n�e�n�n�e�n�e�n�kfe�kfe�n�e�n�n��n��n��d�n�e�n�e�n��e��n�n�n�n�n�n�M�Lb�`�n�n�L�iMMn�n�n�kuB��
L�n�n�n�n�lak`�Nn�n�`���cWkun�n�n�n�n�n�n�n�n�n�xvd{dMn�n�Mb�LcWn�n�n�n�dn�n�n�d��vdMt�n�n�L�dNdn�n�n�n�n�n�n�LnWn�)(�Rj��Hn�n�c�cWMc�n�n�n�n�j*n�n�n�Nn�n�n�n�NNn�Nn�Q�NNn�Nn�Nn�n�NNn�n�NN;Nn�NNn�Nn�Nn�Nn�Nn�n�Nn�NNQ��Mn�n�rfc�cWw�n�n�n�n�n�n�n�n�`�aNL�`�n�n�Mn�Mn�Mq�c�Ln�n�n�n�L�`�cWdn�n��g_`�Ln�n�n�n�n�n�kudn�b�n�n�s8iMb�c�n�n�MLdK�n�n�n�n�L�ddNoM�L�d{oo�ooVoo-ooooooooo	odo
McWoo
H:L�c�dL�M�ooL�c�b��,ooooMe�L�b�oooMoo�do�l�Moo&oo#oo"`�oo o!gQwv�kXt�b�o$o%b�L�aki�o'o*o(o)Ml�nWLo+o,ЛL�Ikuo.o<o/o6o0o3o1o2Mb�p�aNo4o5cWc�t�ako7o:o8o9iMMnWc�b�o;}�do=oPo>oAo?o@Lb�cWaNoBoOoCoMoDcWcWoEcWoFoGcWoHcWcWoIoJcWcWoKcWoL�fcWoNء%��d{azoQoToRoSb�ddg4oUMaNnWoWo}oXoioYo`oZo]o[o\p�c�`�Mo^o_|�M`�doaodobocLc�aNLoeNofNogohNb��d{ojoqokonolomb�iM`�iMooopL�c��lorozosovg4otdouq�dowMoxoy�L���o{o|L��GK�do~o�oo�o�o�o�o�o�o�o�o��aNL�Q�o�o��GMg_Lb�o�e�o�e�Դo�o�M�c�L�b�o�o�o�o�xvdN`�o�Nd{o�o�o���������o�o�o�o�o�o�L�xvNc�o�o�Mo�o�����Mxvo�o�o�o�d��aNg4o�o�Nd`�o�o�o�����?v�o�o�o�o�o�o�o�o�o�o�o�o�`�Mc�No�o�d{g4b�iMo�o�o�o�y7`�t�do�o�L�cW`�b�o�o�o�o�o�o�kudaNMo�o�M`�{
Lo�o�o�o�xvc�cW|�o�o�c�L�nWxvo�o�o�o�o�o�o�o�L�p�c�do�o�{
db�i�o�o�o�o�o�Mo�o�o���o�c�o�c�o�c�o�c�o�c�o�c�o�c�c�������L�Wpo�o�j�b�c�No�o�o�o�o�o�NL�Lb�o�o�Mj�L�do�o�o�o�Mo�o�o�`�Mc��b�xvo�o�Mg4c�Mo�p)o�po�po�po�p
g4o�pp	Mpvqpvqpvqpvqpvqpvqpvqpvqtydc�b�c�pp
lic�N`�ppppb�LL�c�pMj*Mppppppb�Lc�pppw�dt�L�ppb�`�t�L�p p&p!p"L�Md{p#p$p%Nd�be�p'p(j�LLt�p*p<p+p2p,p/p-p.iML�L�Np0p1nWc�fdp3p6p4p5m�d{t�`�p7p;Mp8p9p:s�s���w�L�p=pEp>pBp?p@LJLpAL��mpCpDdNaNLpFpSpGpHdb�MpIpJddpKpLdpMdpNddpOdpPpQddpRdb�pTpUb�g_pVpXgQpWwgQpYMMep[q�p\p�p]p�p^p�p_ppp`pjpapgpbpc|�LpdMpepfg������4phpiL�xvc�L�pkpmplb�{
n�pnpoNb�b�b�pqpxprpupsptMdM`�pvpw��Mc�b�pyp�pzp}o�p{p|g4��`�p~p��
x�p�p�b�`�Mc�p�p�p�p�p�p�p�p�rfM�iML�p�L�L�iMp�p�p�p�Mc�aNNb�p�L�nWp�p�p�p�p�p�L�c�c�`�p�p���b�c�Np�p�p�p�NiMi�xvp�p�Nb�M�iMp�p�p�p�p�p�p�p�p�p�p�b�p�p�p�q�q�q�jV��b���p�p�b�t�LcWp�p�p�p�MdL�M�p�p�liLMb�p�p�p�p�p�p�Mb�`�p�p�p�Np�p�p�Mg�g�Mb�p�p�p�Mdp�xvp�p�p�p�dc�p�c�p�p�Q�Lq~lp�p�Ld{c�g4p�p�p�p�p�p�p�p�`�d`�aNp�p�Mc�b�azp�p�p�p�Nd�XiMp�p�b�p�ubp�w�v�xvMp�p�p�p�p�p�cWLp�`�p�p�MaNc�Mp�p�p�p�cWN`�Mp�p�M��j�|�p�q]p�q"p�qp�p�p�p�p�p�p�Lp�p�d]����d]azMp�p�Mg_p�b�p�p�`�*��9`�qqqqiMdb�Lqqp�b�NaNqqqqq	q
`�c�b�dqqdq
qdH:y7L�Mqqqqdb�L�Nqqb�{
qq!qb�qb�qb�b�qqb�qb�b�qb�qb�q b��g�IL�q#qKq$qBq%q(q&q'nWliL`�q)q*c�Mq+dq,q:q-q6q.q2d]q/d]q0d]q1d]ݶq3d]q4d]d]q5h4d]q7d]d]q8q9d]h4ݶq;d]q<d]d]q=q>q@d]q?�d]qAd]h4d]qCqFqDqEd]nWb�{
qGqJ��qHqIO�e�nW��g4qLqTqMqPqNqOb�`�db�qQqSqRNg_M�b�L�qUqZqVqWLMiMqXg4qY�+m,q[q\Mg_L�dq^q�q_qnq`qgqaqdqbqcaNcWdMqeqfNMnWNqhqkqiqjM|�Nb�qlqmb�c��Xq~qoqxqpqsqqqr~ku`�L�qtqub�dz�qv+rqwpZ+rqyq|qzq{M�b�`�cWq}q�aNq~qq�`�.�`�g4Lq�q�q�q�q�q�q�q�{
MLNq�dd{b�q�q�q�q�b�M�M�Nq�q�g�q�dq�o�dcWc�q�q�q�q�q�q�b�MLaNq�q�b�db�t�q�q�q�q�L�q�q�q�m�1�1�wM�Nq�q�M�Mazdq�rJq�q�q�q�q�q�q�q�q�q�q�q�c�dn�i�q�q�c�q�q�d�kfd�j�L�q�q�q�q�q�NMq�g�ML�Mq�q�L`�Nc�q�q�q�q�q�q�q�q�q�`�l���q�Q�NN;� dq�M`�Nq�q�q�q�dxv`�b�q�q�Mq�q�q�dLL~q�j�l�q�"l�q�q�q�q�q�q�q�q�nWc�M�Lq�q�j�N`�dq�q�q�q�c�MLdq�q�c�edgQq�q�q�q�q�q�xvi�Md]q�q�dMLNq�q�q�q�NdL�b�q�q�Mp�c�Mq�r"q�r
q�rq�rq�q�Mg_q�c�q�rq���q��q�q���q�r�r��r������rrn�M�t�drr
L�r	L�Mrr�?b�b�NrrrrrrL�L`�aNrrq~c�g4t�rrrr`�{
`�p�rrM�drb�c�rrc�c�rc�r r!c�c��yr#r:r$r-r%r(r&r'b�MMz�r)r*`�L�r+j�cWr,$$cWr.r7r/r6`�r0r1r2w�w*gQr3r4r5wwU�M�[dMr8r9ML��Idr;rBr<r?r=r>c�|�N`�r@rA@LdiMrCrGrDrFMrEAeML�d{rHrIdL�`�d{rKr�rLrjrMr\rNrUrOrRrPrQc�iMMb�rSrTb�azML�rVrYrWrXdy7b�`�rZr[L�g_N`�r]rcr^r``�r_aziMrarb`�L��L�rdrgrerfb�aNb�`�rhri`�b�j�c�rkrrlrrrmroL�rnn�Lrprq�bt�M�drsr|rtrxrurv{}L�Orw��Owryrzr{d]y(Q'cEr}r~b�`�|�`�r�r�r�r�r�r�b�Ld{Nr�r�L�ML�b�r�r�r�r�nWb�r�Nr�lxlxՙLr�rfg_r�r�r�r�r�r�r�r�r�r�L�d@Mr�r�r�Lr�r�gCwcb�gCc�g4r�r�r�r�{
xvL�m�r�r�c�g4r�dr�r�`��ii�*Fr�r�r�r�r�r�`�p�kuaNr�r�c�d{c�l�r�r�r�r�i�cWLb�b�r�akiMr�r�r�r�r�r�r�r�azb�p�M�r�r�NL�Mtyr�r�b�r�MNr�r�aNcWc�`�r�r�r�r�r�r�r�M�r�b�d$r�d$r�d$r�r�r�d$r�d$r�r�d$r�d$b�d$r�d$r�d$r�d$d$r�d$b�r�Mr�r�gQb�lixvr�r�dg4c�Ar�r�r�r�MNMLr�r�l�NcWMr�x�r�u�r�t7r�sxr�s.r�s
r�r�r�r�r�r�r�r�`�c�M�c�r�r�L�blLr�r�r�r�dtyM��r�r�c�Mb�d{r�sr�sr�sr�sr�{�{}{�LsL�c�MssMg�Mssdb�nWMs	s
L�MssLdb�cWssssssssiMb�LNssc�aki�c�ssssxvb�g_��ss`�ss{}��{}b�tys s's!s$s"s#azM�MM�s%s&L�cWL�cWs(s+s)s*Лt�Nd]s,s-azdb�i�s/sRs0sCs1s:s2s5s3s4=�Mg4L�s6s7d]cWs8rfs9L��OiMs;s@s<s=�bc�L�s>s?b�azb�sAsBn�q~`�c�sDsLsEsHsFsGLNp�MsIsJq~tkL�sKg�MsMsPsNsOaNaz`�`�NsQb��HsSsbsTs[sUsXsVsWc�Lxvb�sYsZ�MNxvs\s_s]s^b�NK�b�s`sa�xdMdscsqsdsgsesfMb�b�dshspsiL�MsjskMslMMsmsnMsoM~MdgQsrsussstcWb�c�b�svswM�b�cWg4sys�szs�s{s�s|s�s}s�s~s�snWb�v�MaNs�s�b�b�s�c�m��s�s�s�s�s�`�s�L�L�s�s�L�s�L�s�L�s�L�s�L�s�L�L�s��:L�s�Ms�s�`�s�i�`�i�i�s�s�c�lis�Ms�Ms�Ms�Ms�s�s�s�~�o��;s�s����Jq�Ms�s�s�s�s�s�s�m�ls�kud��c�s�s�M`�d{
s�s�s�i�Ms�s�s�dMcWc�s�s�dMi�Ms�s�s�s�s�s�s�s�c�aNs�L�s�`��y`�s�s�Ns�~s�~s�s�~s�~~s�s�~~s�s�~~s��|~b�Ns�s�s�s��8MNMs�s�Nb�di�s�s�s�s�s�s�Lg4f`�s�NMds�s�s�s�d{s�s��x�xs��xs�s��xs��xs��xs��xs��x�xs��"�xMc�b�s�`�s�MtOs�ts�s�s�s�s�s�b�s�d{ds�s�kuc�McWs�s�s�b�Nb�s�s�Mg_McWs�ts�ts�s�q�MMs�Mt�ttnWM�MLtt	ttNd{`�ttdb�dt
tNb�b�Mt
tttttttb�dNLttdMg4��ttttb�g_b�g_ttakg4nWLtt0tt,tt b�c�t!L�t"t#)(nWt$nWnWt%nWt&t'nWnWt(nWt)nWt*nWt+jnWt-t.dnWdt/likut1t4t2t3g_�dM�t5t6dazMcWt8ut9t�t:t�t;t_t<tXt=t@t>t?Lg_ML�tAtMg4tBtCtLtDb�tEaztFaztGaztHazaztItJazaztKb�azv�v�tNnWtOMtPMtQMMtRtSMtTMtUMMtVtWM@MtYt\tZt[MhNdt]t^nW`�d{b�t`tjtatdtbtcL���`�Ntetitf��tgthM��M�xg4tktqtltpp�tmtntob�tyLMb�Mdtrdtsttt�tutytvnWtwnWtxnWnWO�tzt~��t{t|��t}�����tt�nW��t���t�t�nW�����nW��t�t�t�t�t�t�t�t�`�Ndt�g	t��g	t�t�t�\�t�t�ku�7d{akc�b�t�t�t�t�xvg_c�b�t�t��Hd]aN}�t�t�t�t�t�t�t�d{
�����t�t�t��y�Ly�t�t�LnWL�cWt�t�t�t�cWt�t�t�iMNliMt��Xt�t�t�j*t�nW)(nWMt�t�t�ld�e{
t�t�t�t�t�t�t�t�t�t�t�NubgCt�K�t�t�l�c�d{L�t�t�dN{
L�t�t�t�t�c�t�a]aNL�`�t�b�b�iMt�t�t�t�Nt�cW�t�t�`�aNb�`�t�t�t�t���t�t�t��F�rv'g4��t�t�c�`��ONt�t�t�t�t�t�t�t�b�p�dt�t�M��0M�t�t�d`�dL�t�t�t�t�b�b�{
Mt�t�M`�c�b�t�ut�t�t�t�d{Mg4`�t�t�tyL�Jt�t�uL�t�t�t�t�t���j�t�t�t��t�L��L�t��L��uu�tuuL�uL�t�L��uuuuLu	u
LLy�y7azu
uj�Ndul�ul�}cuuuuu?uu$uuuuuup�g4dNuub�L�aNy7uu"uu!uMb�u rb�dMdu#m�i�u%u,u&u)u'u(cWnWd{du*u+Mb�NL�u-u<u.u1M�u/{
u0v�NMu2xvu3xvu4u5xvu6xvu7xvu8xvu9xvxvu:u;xvxvu=u>MdnWq~u@ucuAuQuBuOuCuDLM`�uEtyuFuGtytyuHtyuIuJtytyuKtyuLuMtytyuN�UtyuPN��MuRu_uSuTb�lig4uUaNuVaNuWaNuXuYaNuZaNu[aNu\aNaNu]u^aNaNa1u`ub�,ua�uaN��xvudunueujufug�bL�uhb�ui���ukumulb�d{azd{c�uourupuqc�MNnWusutazMc�`�uvu�uwu�uxu�uyuuzu{��b�u|du}u~
4g_l�g4u�u�u�db�u��b�`�u�Q�u�rv[#u�u�u�u�cWt�LNu�u�du�u�u�u�azazu�u�azu�azu�azazu�azu�u�azazw*azu�u�u�u�u�u�azu�azgCw�u�u�azu�gCw�u�gCazu�azgCu�azgCazdLu�u�u�u�u�u�dLd{u�u�u�L�dL�Iu�u�b�ddcWu�u�u�dL`�b�u�Ng_u�u�u�u�u�u�u�u�p�b�M�L�u�u�M�e�g_L�u�u�u�u�c�i�L�g4u�u�diMp�`�u�u�u�u�u�u�b�d{nWu�u�u��b�b�u�u�}U}Uu�u�}U}Uu�u�}Uu�}U}Uu�}U�du�u�tynWL�du�u�u�u�d{cWMsGu�u�`�MMdu�wWu�v�u�vDu�v
u�u�u�u�u�u�u�u�b�u�u�u�rXbrX�N`�u�u�u�q~u�u�iMp�b�rfazb�u�u�u�u���Lb�aNu�u�d{g4Nd]u�vu�u�u�u�i�g_c�b�u�vxvvc�vX/Mp�Nvv
vvNL�vNvv	d`�wp�vvc�d|�Mvv(vv!vvvvb�vdvvdvdvdvdvdvdvddvd�Zq~vvL�lL�Lv b���v"v%v#v$dakg4dv&v'��LM���v)v:v*v7v+v,K�c�p�v-Mv.Mv/Mv0v1Mv2Mv3Mv4Mv5Mv6MMg�v8v9y7`�cW`�v;vAv<v=L�c�v>l�v?v@gCazb��?vBvCiMddNvEv�vFv{vGvNvHvKvIvJiML�MdvLvMnW#�ML�vOvwvPvQ`�Nb�vRvSv_vTMMvUMvVMvWvXMvYMvZv]v[v\dq��oMMv^�OMv`MvaMvbvqMvcMvdvevjvfvhMvg�;��Mvi�J�;vkvnvlvm����~�ovovp�O�J~�OMvrvsMMvtvuMvvM�oMvxdd]vyvz|=�|v|v�v}v�v~vnWc�`�cWv�v�c�w�M�c�v�v�v�dLb�v�v�b�tyb�Nv�v�v�v�v�v�v�v�c�cWNN+v�v�NM�L�j*v�v�v�v�b�`�b�M�v�v�n�L�b�Mv�v�v�v�v�v��Cb���v�b�b�v�v�c�`��HiMv�v�Mv�Mg_v�v�v�L)(v�e�nWd{`�v�w	v�v�v�v�v�v�v�v�v�v�Mj�Nv�v�v�`�e�i�`�v�v�MLv�L�v�v�iM�8iM�8v�v�v�v�e�|�b�c�v�v�b�MNb�v�v�v�v�v�v�MNNb�v�b�b�Nv�v�v�v��FL�Lb�L�v�Lb�v�v�v�v�v�v�v�v�d{L�M�g4v�v�b�azMb�v�v�v�v�v�b�v�v�McWty��v�c�v�v�v�l�l�v�v�l�v�l�l�v�v�l�l�v�v�v�l��x�xl�v�l�l�v�l�v�v�l�v�v�l�v�v�l�l�v�l�|�v�l�v�l�l�v��xl�v�v�L�b�c�L�v�wv�v�v�v�b�MNazwwt�iMd]MwwwwiM��L�MwwLcWcWdw
w.wwwww
wwwg_b���g4ww`�NdwwwL�M|�MwwwwML�ML�wwMH:akL�ww%ww"w w!azL�LMw#w$Nb�p�b�w&w+w'w(Mb�l�w)w*Mg�Mw,w-j�dp�g_w/wHw0w:w1w4w2w3Mxvc�aNw5w9w6`�w7w8b���rfg4g_azw;w>w<w=N`�dq~w?wGdw@LwALwBwCLwDLwELwFL`�LM��wIwPwJwMwKwLi�b�cWq~wNwOMNM�RwQwTwRwSd{��i�d{wUwVL�cWd{LwXw�wYw�wZw~w[wfw\waw]w_w^b�b�dw`LLcWwbwdwcL�diMg4wed]Lwgwtwhwnwiwmwjb�wkwl�;g�g�MliMwowswpkuwqwrcW�cWx�L�NwuwwwvdnWiMwxw}iMwywzakw{��w|akak��b�akww�w�w�w�w�w�w�NdNd]w�w�t�dy7~w�w�w�w�Nb�Nc�w�w�w�`�azdM�xvw�w�w�w�w�w�c�cWw�w�w�ddw�dw�dw�dw�dw�w�ddw�dw�b�dw�L|�g4w�w�g4`�c�`�w�w�w�w�NhLb�w�M|�Nw�w�w�w�w�w�w�w�w�w�Mw�w�i�w�i�w�w�i�w�i�3�w�i�3��azlw�w�daNMLw�w�w�w�L�nW�GNw�w�aNg_�Mb�w�w�w�w�w�w�ak�GL|�w�w�b�M�dw�azw�b�azw�w�w�w�Mb�i�dw�w�w�Nm�w�m�dM�xvw�w�w�w�w�w�w�w�M�dxvl�w�w�b�aNak`�w�w�w�w�azLML�w�w�nWL�aNiMw�w�w�w�w�w�w�q~w�w�i�N`�e�xvdw�w�`�t�c�Mw�w�w�w�ML�g4cWw�w�dc�dL�w�xIw�xw�xw�xw�w�w�b�iMcWw�w�b�l�`�Nxxxx�,aNc�b�xxb�c�cW`�xxx	xx
xNxxx
Nc�Ndi�`�xxcWb�d{c�xxxxb�`�c�iMxxMxxٰ��FazLxx4xx)xx$xx dnWdx!x"x#n��bdd{x%x&�Hd{x'Nx(b�~�b�x*x1x+x-akx,L�g_c�x.x/x0dNc��x2x3j*Ndd{x5x=x6x9x7x8Nb�Mc�x:x<Mx;�fcWiMd{x>xCx?x@nWL�xAd{xBNNQ�xDxHxEc�xFxG�
����d{i�xJxoxKx^xLxSxMxPxNxOp���m�OExQxRLNcWg_xTx[xUxVLb�nWxWxXb�b�xYxZi1R(�x\x]iMb�|�q�x_xfx`xcxaxbc�g_i�p�xdxeL�az{
+rxgxlxhxk`�xixjazgQazM`�xmxnN��Ndxpx�xqx{xrxuxsxtLN`�dxvxyi�xwxxg_M�g_xzd]Лb�x|x�x}x�q~x~xx�lib�`�kuNx�x�x���`��%`�x�x�xvb�q~�mx�x�x�x�x�x�M�Ntyb�x�x�{
LMxvx�x�x�x�N`�dNx�x�L�LnWx�x�x���������x�{x�y�x�y3x�x�x�x�x�x�x�x�x�x�x�x�dj�c�g_x�x�b�xvc�c�x�x�x�x�`�b�q~L�x�x�L�lib�~�x�x�x�x�x�x�`�Nb�� x�x�M�LLdx�x�x�x�x�p�x�Mg�MdMx�x�b�di�kux�x�x�x�x�x�x�x�c���I`�x�x�cWkunWdx�x�Mx�c���x�x�c�c��X�Hx�x�x�x�x�x�Ld{L�Lx�ddc�x�x�x�x�dx�x�$$$$x�x�$$x�$$$$x�$$x�x�$$$$x�x�$$$$cWc�b�x�x�hdj�L�x�y
x�x�x�x�x�x�x�x�n�nW`�c�x�x�dL��bc�x�x�x�x�o�MMc�x�x�Ng4`�i�x�yx�x�x�x�b�Mdx�yx�iMQ�NakMyyyyiMyy`��v`�iMb�yy	Mn�NMyyyyy
yyyc�M�dNyyNc�cWLyyyy�xj*LMyyg4g_Lxvyy"yyyyLnWc�`�y y!L�`�m;cWy#y0y$y(Ly%y&y'`�dL�iMy)MMy*My+My,My-y.MMy/M�;y1y2b�d]`�aNy4yuy5yRy6yDy7y=y8y;y9y:L`�b��,My<b�q~y>yAy?y@L�iMM�LyByCc�L���NyEyKyFyHyGL�L���yIyJb�d]p�NyLyOyMyNl�i�N+dyPyQL�LdxvySydyTy]yUyXyVyWL�azb�dyYy\LyZ{�y[{�{�Mb�y^yay_y`Mc�LNybycL�b{
cWyeylyfyiygyhaNLb�LyjykNj�b�cWymypynyocWxvg4cWyqyrMp�ysL�ytd{}�d{yvy�ywy�yxy�yyy~yzy{M�azy|`�dy}d�Zyy�j*y�y�y�c�b�`�`���xvy�y�y�y�M�c�iMLy�y��y�NW�N3�y�y�y�y�y�y�q~cWi�aNy�y�Mdc�tyy�y�y�y�c�j*i�Ly�y�c�c�y�b�y�y�פNlt�y�y�y�y�y�y�y�y�g4t�`�b�y�y�M�N`�b�y�y�y�y�i�H:`�My�y�L�c�dq~y�y�y�y�y�y�y�g4y�Q�NQ�iMt�y�y�b�rfL�b�y�y�y�y�M�y�y�y�������nW�Xy�y�xvy�y�N��MxvMy�ziy�z
y�y�y�y�y�y�y�y�y�y�y�Ny�azgQaz`�Ny�y�Lg4o�b�y�y�y�y�L�MnWL�y�y�akNb�Ny�y�y�y�y�b�`�b�y�y�j*L�e�i�y�y�y�y�xvb�NMy�y�`�b�y�L�dy��-dy�y�y�y�y�y�y�y���b�y�b�y�y�aza�"��y�y�Mazb���y�y�y�y�dp�c�xvy�g4NM�y�zy�zy�y�c�Mzak�MNzxvMzzzzNc�w�Nzz	`�dazMzz2zz!z
zzzzz`�xvNn�zzMb�L�Mzzzzz`�zzi�`���i�dzzzc�MW�dzz N`�Mc�z"z+z#z&z$z%M�`�Лd{z'z(L�p�z)M��z*���z,z/z-z.c��bb�g4z0z1g4nW`�c�z3zLz4z;z5z8z6z7q�c�L�iMz9z:c�`�c�dz<zIz=z>NM�z?Mz@azzAazzBazazzCzDazazzEzFazzGazazzHb�azzJzKdg4L�nWzMzVzNzQzOzP`�lldzRdzSM�zTzU`���%,zWzczXzYM�Ib�zZz[Nz\Q�z]Nz^z`z_NYNzaNNzbNOTzdzez�t�zf`�zgzh`�g4Lb�zjz�zkz�zlz|zmzuznzrzozpLcWL�zqgns8zszt`�b�lnWzvzyzwzx`�L�b�Nzzz{b�c�c�y7z}z�z~z�zz�MNMdz�z�cWMBaNz�z�z�z�y7c�i�dz�z�NddMz�z�z�z�z�z�z�z�z�w�n�z�,wn�b�j�z�z�t�d`�b�z�z�z�z�z�b�z�z�N[�OqW�McWz�z�b�Nc�dz�z�z�z�z�z�LM�MNz�z�g4`�N��z�z�z�z�i�z�z�z���z�z���z�����z�z�z�z�����z�z�z�����������z���z���z������rz�z�j�z�j�z�j�j�z�j�z�j�z�z�j�j���db�z�z�db�g_�Iz�z�z�z�z�z�z�z�z�z�b�g&M�q~z�z�iNg4t�z�z�z�z�p���b��bz�z�l�Mb�Mz�z�z�z�z�z�c�ddMz�z�`�p�`�g_z�z�z�z�L�dnWNz�dNdz�z�z�z�z�z�z�z�NMNg&z�z�L��bd{
z�z�z�z�g4L�`�b�z�z�p�db�Mz�z�z�z�z�i�daNz�z�aN`�cWdz�{z�{iMakdg4{{dL�LM{|z{{�{{�{{O{	{{
{{{{{
`�M`�|�{{d{q�cWN{{{MNc�{{L�NM�N{{H{{{{azM`�L{{G{{1{{({ lxlx{!{"lx{#lxlx{$lx{%{&lxlx{'lxblx{){*lxlx{+{,lxlx{-{.lx{/lxlx{0lx�{2{;{3tk{4ak{5aktk{6{7ak{8ak{9ak{:aktkaktk{<{=ak{>ak{?ak{@ak{A{C{Bak�lak{D{F{E�lak�l�lak`�iM{I{L{J{KiMaNdL{M{Ndb�`�g4{P{�{Q{W{R{Td{S�!t1{U{VNdL�`�{X{�{Y{w{ZaN{[{cL�{\{]{_�{^�0�?�{`{a{b��t�o�{d{i{e�{f�{g{h�>��xl{j{q{k{n{l{m�N�^L��m{o{p�m�+Zvt�{r{u{s{t�����{vL���{xc�`�{y`�{z{{`�`�{|{}`�`�{~`�{`�{�`�{���`�{�{�L�LnWc�{�{�{�{�{�{�b�t�azL�{�{�c�M�`�{�=�{�n�{
{�{�{�{�NdNc�{�{�L�c�|��X{�{�{�{�{�{�{�{�{�{�d{�{��{��{���{�{��{��M��R�L�{�{�n�`�db�{�{�M{�M`�{�azg4L�{�{�{�{�{�{�c�hku{�{�MM��{�{�lM�dM{�{�{�{�Ni�M�`�i�{�rfL�{�{�{�{�{�{�{�{�g_iMM�N{�Mn�L�{�{�{�{���iMM�OE{�{�g4p�g4{�M{�g�M{�{�{�{�L{�iML{�{�`�~�dL�{�{�{�{�n�{�xvL`�b�{�{�dc�b�nW{�|${�|{�{�{�{�{�{�{�{�{�`�{�dd�ZL�b�{�{�i�akM{�d{�d{�{�d{�d�-d{�{�{�{�p�dxv`�{�{�c�g4NaN{�{�{�{�{�{�linW�,M�{�{�tyMM��{�|{�|g_j�`�d|||`��}b�`�b�|||||||	|
cW`�nWM�||
M�Nb�d||||c�MdL||Mn�L�b�||||||`�Ly7|rX|rX�|b�LaN||"| |!��L�i�N|#b�iMc�|%|X|&|?|'|8|(|+|)|*xvc�L�d|,|7|-`�g_|.|/g_g_|0|1g_|2g_g_|3|4g_|5g_g_|6g_p�n�c�|9|<|:|;l�NL�c�|=|>LcWb�M|@|G|A|D|B|CLhc�M|E|F`��,c�M|H|K|I|J`�daNc�|L|W|Mp�iM|N|OaNaN|P|QaNaN|RaN|SaN|T|UaN|VaNaN�|xvM|Y|f|Z|`|[|]|\b�d`�|^|_xvM`�d{|a|d|b|cc�`�g_b�M|ej�t�|g|s|h|k|i|jb�g_dM|l|mxvnW|n|pb�|ob�M|q|r�;Mq�g�|t|w|u|vc�aN��nW|x|ylb�dm�|{}$|||�|}|�|~|�||�|�|�|�|�dML�b�d|�L�az|�|�|�|�iMdLb�|�|�b�cWLN|�|�|�|�|�dakq~|�|�M|�az|��?wU� L�|�|�|�|�dq~xvL�|�|�azn�Mi�|�|�|�|�|�|�|�|�M�b�iM`�|�|�gnL�b�N|�|�|�|�nWL�`�nW|�|�L�cWc�`�|�|�|�|�|�|�`�d|�aN|�kXMaz|�|�db�|�M|�|�i�3�L��|�|�|�|�|�c�c�|�c�|�|�c�c�|�c�|�|�c�|�c�c�|�|�c�@c��|�|��b�|�|�`�c�dN|�|�|�|�|�|�|�|�|�|�i�c�d`�|�|�j�K�b�d|�|�|�|�db�dM|�|�y7N{
i�|�|�|�|�|�|�liNg_b�|�|�Lxv|�b�M|�M|�|�MM|�|�M|�MM|�M|��OM|�|�|�|�MdЛM�|�|�ML�dL|�}|�}|�|�|�|�b�M|�Ae|�d{}�d{|�|�L�m�M}}M�oM}}}}L�M`�b�}}L�`�}	L�L�}
L�}}L�L�}
L�}}L�}}L�}L�}�i}L�}}��+�x}}}}}}b�NK�LMb�}}!}} Nxvp�M�}"}#e�b�Nb�}%}q}&}N}'}5}(}/})},}*}+@g_lN}-}.NLd`�}0}3}1}2�G�!L�M`�}4N|�}6}=}7}:}8}9dN�,M};}<cWMdc�}>}A}?}@�Cb�cWxv}B}K{
}C}D}ENQ�N}FN}GN}H}IN}JNQ�N`�}Laz}Mazw}O}^}P}W}Q}V}R}Sq~{
az}TnW}UnWdM}X}[}Y}ZnWi�cW�b}\}]t�c�L�N}_}g}`}d}a}bb�m�b�}c[M�}e}fNMi�L�}h}n}i}mL�}j}k}lL�b��HliMcW}o}p`�d`�M�}r}�}s}�}t}}}u}x}v}wg4ld`�}y}|}zN}{��xvL}~}�}}�d{}�cW}�}�cW}�cW}�cWcW}�cWQ�`�q~}�}�L�`�Nb�}�}�}�}�}�}�cWN}��X}��Xma�X}�}�M}�}�}�Nb�d`�`�L�}�}�}�}�xv`�xvc�}�}�}�M}�}�MiMiMcWc�d}�}�}�}�}�}�}�}�d}�`�}���`�lM}�}�azcWNj�}�}�}�}�`�N`�L�}�}��bty� b�}�}�}�}�}�}�L�b�c�d}�}�nWdb�M}�}�}�}���`�t�iM}�}�MNg4q�}��}��+}��M}�
}�~u}�~!}�}�}�}�}�}�}�}�}�}���}�}�}��X`�db�}�M`�}��`�}�}�i�akz�c�}�}�}�}�NMxvb�}�}�g4b��Xg4}�}�}�}�}�}�g_`�M�}�}�}�b�MQ�o�}�}�c�|�Ml}�}�}�}�dazliN}�}�dcWNd}�~}�}�}�}�}�}�L�cWd}�}�}��e3�4�
}�}�� L�g4d}�~}�}�g�g_d{
~~iMg_cWM~~
~~~~NcW�H`�~	xvb�M~~~~
Mb�L`�~~ L~~~az~~az~azaz~az~gCaz~az~az~az~azaz~az~~azaz~gCazs�M~"~K~#~3~$~*~%~(~&~'d]dq~b�b�~)ML�~+~.~,~-L�m�M`�~/~0liNL�~1Ae~2Ae~~4~A~5~>~6~:L~7~8~9q~j��d{g_~;~<~=`�ddL�~?~@L�Mdxv~B~H~C~DL�M~EM~F~GcWd$`���~I~JL�aN��N~L~e~M~[~N~X~O~RM~PM�~Q�M�~S~U~Tb�b�Л~V~WdL�LaN~Y~Z`�b�nWL~\~b~]~^m�McW~_~`~a�Jd����~c~dM�g_LM�~f~n~g~kd~h~iMb�~jp��0~l~mdN`�j�~o~r~p~qL�n�g4M~s~tdd{L�b�~v~�~w~�~x~�~y~�~z~}~{~|aNM��b�~~~`�M`�b�~�~�~�L~�xvM~���M~�Lg4q~~�~�~�~�~�~�dЛLd~�~�Nb�d{N~�~�~�~�d]L�NcWM~�c�c�~�~�~�~�~�~�~�~��bdazA~�~�Tn�L�cW~�~�~�~�e�~�~�MM�;NL~�~�dMaNxv~�~�~�~�d~�~�Mj�`�~�~�M@b�d~�~�iM~�~�d~�L�~�L�~�L�L�~�~�L�L���~�~�NdN�I~�~�~�~�~�~�~�~�~�~�~�N~�d{}�d{c�iM~�~�nWi�dL~�~�~�~�c�dnWaz~�~�Mb�M�N~�~�~�~�~�~�Nc�L�L~�~�~�|�p�~�~�p�~�p�p�~�p�~�p�~�~�p�~�p�p�~�wsp�L�b�~�~�~�~�LiMLg4~�~�LnW~�~�~�c�dc�~�~�hBx�x�x�~�~�~�~�~�~�~�~�aNxv~�M~�~�[�Q�[�Q�L�~�L�iM~�~�b�~�b�g4~�~��m|�Mxv~�~�cWNc�LiMc�dNg4M`�	
lib�M�)q����U1"Mg4j*Nd{e�Դe�c�xvcWlidak !��cWp�{
#*$'%&cWxvq~d()x�sGNb�+.,-Nb�ML/0Mb�`�d2F3<49586�,7e��e�dM:;b�L�lxd=@>?NxvnWNAB`�NCDb��E`�dLGNHKIJ`�NMcWLMl�xvxvc�OQL�PMcWRTdSx�b�g4dV{WiXbY_Z^[b�\]z�c�dL�LM`ad{c�m���cfdeNp�cWM�ghj�liMNjrknlmMxvp�L�opb�MqcWgCv�svtuq~Nj�iMwzNxMydMMb�|�}�~��azb�cWp���Mn�d{��azgQaz����g4g_�j*�hM�hd���`�����c��dN��t�i�d]b�����d]L�Ng4��lg4L�L������������j�N��M�M�M�MM��MM�M���Md�d�M��d{dxvi�����Mc�cW�g_�g_p���cWj*MiM������NcWg_t���~c�ML����c�`�b�d{���`�dM���������b�MLc���d`�LM�����b�MazML��L�c�N`�������az{��d`�����`�`��`���`��`��`�`��`��[�`��`��`�`���`��`�`���N�xvd���Ny7N��McW`�d��%��������d{d`�cW��cWc�ML����dMxv`����	b��
azaz��azaz�
�az���azaz�az�b�az�az�azaz�b�azd]N����b��Mb���b�y({
M� �#�!�"b�Mq~M�$dcWc��&�;�'�2�(�.�)�*m�Ќ�+K��,�-g4LazcW�/�1�0L���b�iMM��3�6�4�5i�g4dn��7�8y��bM�9L��:c^L��<�D�=�@�>�?iMb�L`��A�CnW�B����e�Q��E�J�F�IL��G��H��
xv�,�K�Lc�`�dg4�N���O�/�P���Q�v�R�d�S�]�T�Z�U�VLL��WL�X�Y��3�xv���[�\q~cWiMl��^�a�_�`c�aN`�L�b�cd{Lakn��e�p�f�m�g�lcW�hm�im�j�k=���g4`��n�oiMm�L�M�q�t�r�snWb�n�M�uNLp��w���x���y�|�z�{M�Ng4aN�}��b��~�������ty������N��g_M����dNc�b�������������azc�dm�����aNLy7nW����b���dcW����#���az��az��az����az��azaz����azaz��az��az{�L�b��������������������iMn�MnW����b�dnWN��������N��az����az������������az��������az��azazgC��az��azazgC������az��az��azgCaz��az��az��azazgC������az��az��azaz��gCaz����az��az��az��azgC��azaz��az��gCaz������az������az��azaz��gCazaz��az����azgCaz��az����az��az��az��azgC������azaz��gCaz����az��gCazaz��gCazt�M����dL�akc�������������Ml�aNiM����dMc�N������xvLxv������cW����iM�:iM�:cWl�����	����c�l�`�M���,MM~�
��Lxv`��
�L��~�ML������b�aNc�L���c�b����b�b���*��)����M�L�iM`�c�� �!c�c��"c��#�$c�c��%c��&�'c�c��(��c�L�ak�+�.�,`�cW�-cWx�`�L��0�m�1�S�2�E�3�<�4�7�5�6g4��L�d�8�;�O�9�:q~�q~McW�=�B�>�A�?`��@cW�cWL�n��C�DaNL�� xv�F�O�G�J�H�IdcWm;N�K�LLc��Mj*{
�N��{
�PcW�Q�RL���b�cW�T�\cW�U�V�Y�W�XcWiMazp��Z�[MdM�`��]�g�^�a�_�`Lj�L�xv�b�c?"cWd�d�e�fp�iM��L�h�j�iMdb��k�lLd`�pz�n���o���p�y�q�u�r�sc�b�g4�td^L�v�xt��wMLdM�z�}�{�|cWc�M�b��~���l��ak�ak��|�������H�H��������������b�L�dN����m;b�b�M��������b�azM`�����NxvML�����������������p�������yb�b�yxvL�����i�dcWN��������c�d��MazgQ����azb�d��b���b�~�������������q~iMLiM�����Mg4��b���Md{��������b�dxvm�����������c�c��OENb�N���]�����������������������L�ty���0��q���y�����NL�L�d��������b�MdM������l��MM����M��M`�������l��l��������������M�d{N��L���m����b�nWNM��������d`�c�b�����L�dL�N���������������`�Nt�`�����b��������VNOTZc�������dg4g4c�����d��Nd����y7cWMd������L�c�c�`���MLL�b��	��
�i�Mb�N�
�y�XiMb���4��#�������az��\�c�c���b�g_��b�MNj*�� ��`�t�ku~�!�"`�~Mg_�$�+�%�(�&�'McWMc��)�*M`�c�cW�,�1�-�0�.d{�/Mhkfdg4�2�3L�nWNak�5�L�6�>�7�;�8�9AL�:azp�b��<�=j�b�ML�?�I�@�H`��A�B�E�C�Dq�sq�s�F�Gq��"q��"LM�J�KLL�LN�M�U�N�Q�O�Phg_�Jb��R�SNg_�Tx��x��V�X�Wb�azb��Y�Zb�p��[g4�\az�g��^���_���`�|�a�h�b�e�c�dLMMxv�f�g`�iMLb��i�y�j�kb�ak�ll��mdd�n�o�v�p�s�q�rm��Ko����t�u�Nm�q��-�wd�xd�Zb��z�{`�Mxvd�}���~�����`�nWc�����p�p�b�����L�c�Mb���������Nxv��b���H:�9H:b�cW����������������e�c���L�����hc�j�L�����������W�����N��N��N��N����NN��N����NNQ�NQ�d������M�h��M�����dg_dcW������������M������������N��N��N��N��N��N��NP}N��N��N��N��N��N��N��NP}N������N��N��N��N��N��N��NP}N��N��N��N��N��N��N��NP}Nd�����nWLMt����������bnW��b�4�����"����n�`�Nd�������������������hLNc�����ЛLdL��������c�L`�d������`�MiM������������db�d������N����nW�1nWcW�d������MiMb�����Nb�akd������	��L�yb��b��}�y���
�LL�NiM�
���i�azdL��McWMt������cWL�d��dkudL�����ty=�cWb��� c�li�!cW�"t��#t��$t��%t�t��&t��'t��(t��)�*t�t��@�,�(�-���.��/���0�Y�1�C�2�<�3�6�4�5akLNM�7�8L�c�rf�9�:�;b�Lxv`��=�@�>�?c�|y7Ќ�A�Bq~�lc�nW�D�N�E�H�F�GcW{
c�ty�I�JkuM�Kd�L�MNg4ib��O�R�P�Q��iMrf`��S�U�TMg�Md�V�W�Xd]ݶ�O�C�Z�i�[�b�\�_�]�^liMc�Ќ�`�adb�3�nW�c�f�d�ec�|�d���g�hL�nWdg4�j���k�s�l�o�,�m�niMN�Ae�pb��q�ra���a����t�uM�c�M��v�w���xq��y���z���{���|��M�}�~MM�Mq���������M��Mq���Mq�M��M��Mq�M��MM��M��M��q�M����M��������M��Mq�MM������q�Mq�M������M������MMq���Mq�M��M��MM��q�M����M����MM��M��M��Mq���M��M����M��Mq���M��MMq�q�M���������bb�Nm�����g4Nb�M�����������������`���NnW����Mq~b���+7�5��������e�aNiML�����m�L�c�{
������������b�������b�|�H:e��LgCv�������j*cW��cWW�����������aziM���:iMc�M�������aN�{���l�����l�l���l���l���l�����l���l"�lak��M��d�;����������������m�Lazy7����b�dc�L���������MliM�������+��~��M��x�M������Mt�L�g4���g4�g4g4m�	b��
����4^���
�g_�,Mc���g4Mb�M�����P��%������`�dMb�d�b�iM�� ��y7akdi��!�$m;�"`��#`��`�cW�&�.�'�+�(�)iM`��*MNQ��,�-LdNli�/�<�0�1y7cW{
�2<��3<��4�5<�<��6<��7<��8�9<�<��:�;<�<��m�=�>`�t�g4�?m��@m��A�B�I�Cm�m��D�Em�m��Fm��G�Hm�m���Jm��Km��Lm��Mm��Nm��Om���m��Q�c�R�[�S�V�T�UcW`�iMN�W�Xp�L��YMN�Zl�N�\�a�]�`�^iMd�_b�d`�l�bNb�iM�d�z�e�k�f�gNb��hcW�i�ji�Ni�N�l�oN�mxv�nxv��pc��i�q�i�r�s�i�i�t�i�u�v�i�i�w�i�x�y�i�i�^�{�~�|�}`�aNq~xv���i�b�c�c���������������������nWl�NM����nWtyL�iM��������Nj*Mc�����g_MxvcW������������M�rt�iM����iM@iMM���������L�MLcW����iMp�M������������������MLg_m�����c�m;Maz��������LnWM`�����MiMiML�������������nWiM�8p�����iM��ty��w�tyq�`���������q~������g_M�Q�i�L�����b�c�ty|����c�����������������������McWi�M������MM����M��M��M��MM����MM�og_��M���{T��M���M���M���M���M���M���M���>�M���������b�nWb�li����w�M�daN��������������b�l��lhNcW����d`�`�M��������`�n�y7b�����L�Ld��t�����t����
�������LaNc�N����d{xvb�����
�	t��x<�`�b��b�`�c�������cWNdL��cWM�diM�����`���N;liMq~xvw���M�b�M�i�� �A�!�2�"�,�#�)�$�%daN�&�'4P��4P�(4P$$�*�+R�`�`�g4�-�0�.�/g4��MaN�1Mdp��3�:�4�7�5�6g4iMc�L��8�9NMMxv�;�>�<�=p�M�c�cW�?�@NMlxcW�B�P�C�J�D�G�E�FnWdiMN�H�IcWn��bM��K�N�L�Mb�xvcWL�l�OMc��Q�X�R�U�S�T`�azlc��V�WN`�b�d�Y�\�Z�[L�cWL�c��]�`�^M�;�_Mg�cW�a�bL`���d���e���f�y�g�p�h�m�i�jd{c��kc�L�ly�L�n�og_Mg4cW�q�u�r�sLiM�tMM�JL��vd{�w�x�G�V�G�z���{�~�|�}laNLd{���c�`�L�����e��e���b�����xvM�M�M����������������`�b�L�ӹ����b���������m���m�m�����m�m���m�����m�m�����m�m���������pZpZ��pZ��pZ��pZ����pZm�pZ��pZ��pZpZ��pZ��pZ��pZ��m�pZc�d��������y7c�L�d����L�iM������������i������i�����i���i���i�i���i���ei���i��i�d��d�-������������hL�`�`�������LL��Ll�M|�������������cW���fcW�����fcWcWx�d|�����{
c�LL��������������������dg_~�j�����g4dc�`���������g_=���=���=�=���=���=���=���=���=�����=���=��#=�����rXnWM������q~xv}�L������������L�`�d`���L�aNL��������LL�Np���cWNc�g_��������Ldc�xv�	N`+�
���o���
�`�M���)��)�y7����c��y����di�NL����b��Nm�M�l�d��#�� ML�c��!�"g4L�g4�$�%`�p�N�&c��'c����)�y�*���+�r�,�Q�-�A�.�8�/�5�0�1Lc��2xv�3�4NL�nW`��6�7tyt�b�l�9�>�:�=�I�;b��<b��~nWM�?�@iMLMd�B�I�C�F�D�ENLxvcW�G�HK�`�K�d�J�N�K�M�Lb�����L�M�O�PM�cWg_b��R�a�S�Z�T�W�U�Vlc�M�N�X�YdNiMb��[�^�\�]b�M`�c��_�`iMgQMN�b�k�c�h�d�eML�L�f`��g`�Pf�i�jb�dMd�l�o�m�nd?"LcW�p�q`�dxviM�s���t���u�~�v�x�wb�nWN�y�}N�z�{�|g_F�iMc�dL��������Md��`�+�b�����g4p�dL������������c�L�i��������c�����Ny7b�nW������x���������t�t�b�b�d{��}�=����iMxvMak����������������L�N�XM����cWazN�b��������g4L�L�N����c�`�c�cW������������tydcWM�������,��`��������`���`���`�����`���`�`���`���`�������d��g_�X����l|���cW����U\NN+OT�����������������������Mc�cWM����t�g4M�L��������McWg4t�����MaNty������������v�b�v�������������aN`�kui�������q~L����L��������������Lt�g4��������L�b�b�cW����aN`�MK����������������d{
NM����b�LcWd�����dj�y7d��M�nWp�`���
��
��	MNdL��LnW� N����b�ddq~���azc��K�v�w�b���W��A��*��'��&�d�X��X���X� �X�X�!�"�X�#�X�$�X�%�X�X��azN�(�)b�MdN�+�?�,�>�-L�g4�.�/�+�0�7�+�1�+�2�+�3�+�4�+�5�6�+�+g4�8�;�9�:�+�u���<�=#_N��Md�@`�db��B�M�C�J�D�HnW�E�F�G`�M�`��IM}�d{�K�Lg4ML�N�N�Q�O�Py7MdL�R�SM{}gC�T�U�VMb�kud�X�f�Y�`�Z�]�[�\M`�Lq~�^�_g4`�nW���a�d�b�c`�xvxvg4b��eq~`��g�o�h�l�i�jLdj��kxv���m�n��c�ML��p�v�q�rL�L�sM�t�ug+�"�g+�w�x`�dNb��z�1�{���|���}���~���������c�iMiMc�����NL���w������Q�_FVp��������b�L�iM��M��Mg�����c�nWj*N������������cWN��dq�M����Lhw�OE��������tyg4`�L����p�q~��cW�;M����������������JLakb�b�����b�Ndc���������dg4dl����n�db�d������������l��g_��g_p�g4d������c�����dgn�ؒ��gQ��������������n�n�M�n���L���,`�����aNLc�M����������������������������`������azM��l���N��NN��N����NN����NOTNg4M����g_��NM����������L�����c�g�b�L����p�c���xv��ddr������������q~c�c�N����LaN��c������LiM��������l{
�5b�����LdL����� ������dL�c���`�i�L|�����M�EzM�	�
�`��,dN�
�`�����;��������oM�M�JM���ddMdM�M�d�dM�;d�Jd{d�!�(�"�%�#�$aN��d`��&�'b�g4cW�?�)�.�*�-L�+az�,v�azLd�/�0c�`�c�b��2���3���4���5�v�6�9�7�8MxvcWM��:�>�;`��<�=b�gCgQwb��?�@�A�+d���B�C�c�D�V�E�Q�Fb��G�L�H�J�Ib�b�x��Kb�b����M�O�Nb�b�x��Pb�d2b��Rb�b��S�Tb��Ub��~b��W�\b��X�Yb��Zb��[b��,b��]b��^b��_�a�`b�x�b��bb�x�b�b��d�e�q�f�m�g�j�hb��ib�d2b�b��k�lb���b��nb�b��o�pb���b�b��rb��sb��t�ub���b��w���x���yd�zlx�{lxlx�|lx�}�~lx�lx��lxlx��lx��elxg_i�����LxvL�M���������������c�����)�VpVpx�M�m;����`���Zf`�N��������iMcWdb�����l�MNM����������������M�`�g_��L����ߜcW��b�j���������`���b�����Nb�����azgQM������q��o���o���������������������q����������������M�������J���J�;�Ji�M����Nb�d{L���������b�NMN����nWNLd��������������������c��HL�R�������d{*���q~qpR�����NNQ���������d`�i�N����M`�LiM��������������N����d{cWp�Mg_M��M�dc���������d��b�M����dxvL�L���������������d`�`�`�����`�M�iM������p�akp�ak������M�c�c�M��NiMb�l����	��dc�xvb��
�g4dcWty�
��`�`����yb�y+���`�Maky7��h�����������d��?��-��$��!�� b�Nc�d�"�#M`�L�C�%�*�&�)t��'b��(��ڥe�N�+�,Mc�dM�.�8�/�2�0�1M�nWcW�3�7�4b��5�6�~
3S�~aNo��9�<�:�;`�g4L�w��=�>c�`�c����@�U�A�J�B�G�C�F`��D�E+�d$p�azN�H�IM�NM�L��K�R�L�P�Mak�N�O�6M�����Qtyvbc��S�T`�aNL�d{�V�]�W�Z�X�YMdM`��[�\{
d`�M�^�a�_�`���HLd�b�ciMMM�ak�e���f�u�g�n�h�k�i�jx�dc�`��l�mc�MxvM�o�r�p�qM�l�Nli�s�ty7n�kuaN�v���w�}�x�yK�n�ak�z�{�|p�yy���~���nW����F��������V�����������V���V�������H�V�H�V�V���V�����V�V�9�V���V���V�����V�V�(�V���V�����V�V���V���(�V��F���F�F�����������F���F��������HF��HF�����������F�F��HF���F�h����F���F�h��F�F��9��F���F�����F���F�h��F�F�hazy7��������d�y7`�����kuiM`�`�����������������M�K�cWL�����b���l���l�y�M`���������e�b�L����d��d��d��d��d��d��d��d��d�Nd������d��d�KdL�nW��������nW��b�L���`�q~�������[gCubw���������dN`�i�����dd]l�b����;��������������������ku`��,����LL�b�cW��������LaN��M����yx�x�������dNdc�������L�g4�kucW9�b��kud�	��
�aN�q�Mlx�
lx���iML�cWN��,������L�t�L�d��NMcW���b�b�laz��*`��az� ��!�"i��e�#�e�$�%�e�&i�i��'�(i��e�)i��eM�+dM�-�4�.�1�/�0M�MMy7�2�3j�Mc�rf�5�8�6�7rfp�Ld�9�:dM�tyc��<���=���>���?�A�@b���b��B�F�C�Dy7�M�Ec�^C�Gs8�H�l�I�e�J�L�K�;~�;�M�V�N�Q�O�P�o�Jy����R�S�O���T�U)x��4��W�^�X�[�Y�Z�%��l���\�]�Oa���-�_�b�`�aŹ�����c�d���������f�j�g�hdq�M�i�o�;�;�kM�;�m���n�q�o�pdq�M�;�r�{�s�v�t�u�o�Jy����w�x�O���y�z)x��4��|���}���~��%��l�������Oa���-��������Ź������������������������~�;�;���o�;�;��q��;��������y7M�LK�����g_ddL��������xv��g4M�����-Mlj*����������w�lxdNc�i�����L�xvaNku����������������N������t���t�����t���t�t���t�����t�t���t�����b���gCgC��gC��gC��gC��gC����gCgCgQi���b�Л��b�dL���������b�Mb�c�����xvd��M�OE����OEOE����OEOE��OE��OE\;������������c�c�L�N����diMM������y7����y7��������`�MtyM����LMLgC�����������U����������������azL�d`�����`�b�b�L���������`�N�iM����d��NM���A��������kuMLj*���@`�������
������
��
�
����
��
���
��
�	��
�
��
��
�
�
��
��
��
�
���
�
���
�1�
�����������������������������&� �
�
�!�"�
�
�#�$�
�%�
�
��'�3�(�.�)�
�
�*�+�
�,�-��
�
��/�
�
�0�
�1�
�2��
�4�9�5�
�6�
�7�
�8�
��
�
�:�
�;�<�>�
�=��
�?�
�
�Mxv�B�H�C�Gg4�D�E�Fb�b�b�b�b�`��I`��J`��K`�`��L`��M�N`�`��O`��P`��Q�R�T`��S`��y�y`��V�{�W�_�X�ZN�YLN�[�\g4Mt��]y�^d$y�`�i�a�bd`��c�f�d�et��q�q�A�g�hMg�Mg��j�k`�LL��lM�m�n�rM�oM�pM�q)x�l�sMM�t�u�x�v�wM���o�y�z�oy�y��o�|���}���~�Nxvy7nW���������P���P�_c��ny7t���������kuc�N`�����g4|�M`���������������������nWd~������������Mg�M����g���g���M����MM�M����y7��lxeb�L���������nW������dd{d{iMNM����~dM�N������������L�mc�M����Mi�aNd����������d��MMg���N��l��g&����dcWM|�����������������c�d��aN����h4b��nx�������MTi�aNcW����L����d��g&�g&����tyL�dc�������������MN��b�����d$����������L�`�d{xv��������LiMc�b�����i�N;dQ����6�������������������`�����NQ�Nb�g4����M�xvNnW��������M�c�`�N��db�nW�����������dNkuO%���L����b�d{ic�ld��
��xvM�d�nW�	nW����
�kub�yb�{
��#������kuM�`��rX�rX��j*Mdl�� ��L�d{�Q���N+Q�Q�N�!�"L�b�d{c��$�-�%�'M�&ML�(�)LM��*L�+�,3��}��3��.�3�/�2d�0g4�1g4��p�{
�4�5dMMd�7�e�8�P�9�B�:�=�;�<d]MLy7�>�?Ny7b��@M�A�;M�C�H�D�G�EOE�FazazgQ�Cd�I�L�J`�M��K��[N�M�N�O�}Uй�Q�X�R�U�S�TL�b�MN�V�W`�iMy7d�Y�`�Z�]M�[p��\��Yi��^rX�_�rX�a�d`��bM�cL�MaNL�f�v�g�p�h�k�i�jiMb�{
L��l�mj�Lc��n�oNNQ��q�sb��rkuN�t�ukuLkuM��w�}�x�{�y�zdc�NLM��|�,M�~�����dMdN����NiMiM����b������Q������������������������t�b�cW����h[�����cWc�`�N����l��dd{l������L��L�������������c�y7dL�����McWdb�����������N��� � �4b�d]������`�����yb�b�yM`�����������������NOE��d����������M���M�M���M�������M�����M�M�����M�M���M�����M���M�M�����M���M���M���M�vM�[h����t�������b��Y�,b�Lb���������dLd]����L�L�������lil�����������o�;���;���;���;��~���������������������������Og����������������l������akX/rg�d����xvb�i�m;��������g4iMiML����iMy7��y7rX���rX���+������
��	������x�x�d]l�laz�
L��xLazM��Lg4LL�����c�Ld���b���b�g_MM��� ����ML�MN��dlrX`��!�&�"�#MiM`��$�%b�d$b��'�*d�(rX�)�rXiMM�,�>�-�4�.�1�/�0`�cWL�c��2�3cWj*L�g_�5�8�6�7Ni�b�e��9�:`�aNiM�;�<�=�;g�g�M�?�J�@�B�ANN��`��CN�DOE�E�FOE�GOE�HOE�IOEOEN;�K�N�L�Mb��FLiM�O�P`�M�t�d�R���S���T�b�U�[�V�Xd�WdL��Y�Zt�c�d]b��\�_�]�^`�t�b�L�`�ag4Nb�N�c�u�d�g�e�fcWg_Md�h�iNdi��j�k�l���v�mrX(��n(��o�p(��q(��r(��s(�(��t(����v���w��d��xe��y�ze��{e�e��|e��}�~e��e�e���e�����e���g4b���rXb�����q~b���L������N`�����`���`�`�����`�`�����`�i�`�W�����i���i���i���i���i�i���i���i�W�����������������`�������dcWML�iMN����iMdNku��������L�dc�b�������M���M��Mdg4��������������b�����iM�������e������e��e�����c�NL�M��������NiMdg_������d����gQazgQazg4d��������������������LdMaN����L{
diM������NiMN����y7dN|�������������c���N����N��N��NN��N��N����N��Nx�Nb�������NL�R�N��������azNL`�����R�NNb����������������b�c�b�c�`���Lb���������Lb�aNku����aNM`�N������dMaN`���g_N|�d�	��
�NML���
�xvNq~d��b�iMiMb������[��;��(��!��b��dM���b��b��Yb�K��� xv��xv�"�%�#�$L�`�i�M�&�'dL�Mxv�)�/�*�,�+dNc��-�.`�azb�M�0�6�1�2iMaN�3aN�4�5��e��N�7xv�8�9�:c�L�xvaN�<�K�=�D�>�A�?�@i�M`�ak�B�C`�`�`���E�H�F�Gb�iMMd�I�JM`�dak�L�T�M�Qb��Ng4�O�PL��L�R�Sb�b�db��U�X�V�WNdML��Y�Zt�cWd]aN�\���]�x�^�o�_�b�`�acWi�MaN�c�n�drX�et�t��f�gt�t��h�it��jt�t��k�lt��mt��t�`�c��p�r�qMdcW�s�w�td{�u�vl�d`�d{`�iM�y���z�}�{�|aN`�iMaN�~�iMM�aNM��������N|�Md����b�MrfM��������������MiMM��dd`�����������cW����b�dLi�gCL���`�t�d������������rfdL�b���Nb�w���������NMN������������������iMcW��cW����cW��cWcW����cW��cW��cWcW��cW@iM�����L�������������������������Mc�|+d����L`�liM��������d�db�����c�Mb�����dak��������MM��M����M��Mq�MM��M������M���o�������oM�oM��M��M�����oM�oM��������L��cWL����aNL�cW����j*��j*��������L�cWw�`���dN`�����������������b��������d{d{s*g4j�����j�nWcWL��������Lj*b�NM��cW�;��������L�cWNxv��b�LiMcW��	��LiMt�iM�
�c�iMMiM�
�.�������iMLy7��L�M�a]��y��p�����d|���L���b�L�L�d� �'�!�$�"�#iMdM`��%�&iMb�q~�h�(�+�)�*xvb�kuxv�,�-i�d{Ng4�/�M�0�:�1�4�2�3Mc�iMi��5�6g4LM��7�8�9�dd�C�;�H�<�Gy7�=b��>b��?b��@b��A�Bb��Cb��Db�b��Eb��Fb�b�dM�I�JdliL�K�L�,��,�N�U�O�R�P�Qdg_azg_�S�Tq~akb�d�V�e�W�bM�X�YL��ZL��[L��\L��]L��^L��_L��`L��aL��L��cL�c��dc��y�f�gM�c�`�L�i�s�j�.�k�O�l���m���n���o�v�p�s�q�rL`�cWd{�t�uL�{
nWxv�w�yiM�xMN�z�}~�{cW�|cWaz�~`��P�
y������������Q�d��L����t�Nc�b���`���������rX �rX��`���`�`�����`���`���`�`���`��[��������MrXz�N����M�c�b�d����������������iMcWM�b�������iM������|���|���|���|���|�|�����|�|���|�g���|�|�����|�|�����|���|�|���|���|�g�dq~��������MxviMd{d��`�b���������������`�Ќ|�����aNMd��Mg���������b�L�b���b���b���b���b�����b�b�����b���b�b���b�b�����qpM��d����|��p�vq���#����������������Md��~�����q�iMiMM�����McWMe���������c�kuL�j�����L�NiMM������������ML����������b�����b���b�b�����b���b�b���b���b�b�b���b�b���b�b��b���b�b��b�b�b��	�
�b���b�b��
�b��b��b�b��b�b��b��b�b��b���b�b��b��b�b���MNNM��!�� M�g4b�b��"diMb��$�<�%�5�&�3�'�2�(ku�)M�*M�+M�,M�-MM�.M�/M�0M�1d�Mytyd�4dty�6�9�7�8L�dm�N�:�;M�azLM�=�F�>�A�?�@LNb�M�B�Cb�NM�Dc��Edc��G�L�H�K�IaN�JNW�Ni�L�M�NMb�@l��P���Q���R�z�S�e�T�W�U�V`�L�L�d�X�d�Y���Z�[i�3�3��\�]i�i��^�_i��`i��ai�i��bi��c3�i�Nd�f�w�g�v�h�k�i�jNQ�Vp[��l�u�mo��nd�odd�pd�q�rdd�sd�tdb�o�ddaN�x�yg_anWQ��{���|���}�~Lt�����*��lxrXaz��t�j����`�Ly7c���������ML�M�`������b`���d����`��%�,����������������L�����dd����d��dd������d�����������Ndq�m�����d�Nm���������������i1�K�Zd�����-o�d���d��ddo�d{d������d�n�azN��������i�azdL����l�akNiM������������c�Nd����azb�v�����L���d����d��dd����dc�d����������m;����M�m��`�N����w�b�M�y7��������������������xvj*xv�X����p�q~dl��������azd{c�c�����dL�,M������������kXMxviM����dM��פM��g�M��������b�y7xv�����c�MM��g4��������������	�����`�������g4m�����+���+�+��+��+��+g4j*��b�b�~��
�
�iMM�Mq�azb������HG�gn�-gniMd��dxvg4L���%��"���M��db�o�dM�� �!L�g4g4t��#�$c�`�g_l�&�)�'�(`�MLd�*nW�+nW�,�-��m�[�+�/���0���1�a�2�G�3�=�4�:�5�6`�nWaN�7�8�9OEYOTN�;�<diMiMg4�>�A�?�@p�dNiM�B�CxvMM�D�E�F`�zM`�L��H�O�I�L�J�Ki�Mg_xv�M�NN`�L�ak�P�X�Q�W�Raz�S�Vg4�Tm�Umg4m,�+L�M�Y�`�Z�]�[�\g_cWcWxv�^�_c�dc�b�M�N�b�o�c�i�d�fL��ec�ku�g�hNaNc�d�j�m�k�liMNi�M�naNL�L�p�w�q�t�r�skub�b�ak�u�vm�MNd�x���y�zt�b��{��az�|az�}�~az�az��az��azaz����azaz��waz������Mg���g���g��4��M����M�ddc�����������������������Ae��ddm�b�cW����L�������m�Nb���������t�L�g4L��L�iMd������������l�d��N��N`�i�����akc���L�X>�l����������b�����`�nWb�c�M�N����`�������bc�az����������������t�e�iMb�����b��IrXb���������d~cWb�����Ld`�ak������������nWMMiM����N��d��d����d��d��d��dd����d��dd�`�p������������������tyNcW��`�`�*�b�M��dd{b����,���
����������������L�db�iM����L�dy7M��������|�M�aNb�������LLH:�����������b�L�`�m�����xvj*e�L�����b�d]Ld��	ty���M�g4M�L�t��
��dt�b�M��������b�aziMc���d�biML����l�b�{
d��c�aN`�L��%��"� �!c�dlM�#�$dc�d]y7�&�)�'�(p�i�p�az�*�+akg4aN`��-�N�.�?�/�6�0�3�1�2b�iMdc��4�5dML�N�7�<�8�9dcW�:g4�;azaz�1�=�>LMb�M�@�G�A�D�B�Cb�Mdd{�E�Fc�cW��d�H�K�I�JxvM�cWM�L�MLg4c�|��O�`�P�Y�Q�V�R�Sp�Md�TM�U*�g��W�XMc�Mg_�Z�]�[�\g4iML�o��^�_cWq~c�N�a�j�b�g�cL�N�d�e�f�ddiM�h�ic�d{xvaz�k�m`��lML�n�oiM`�L�p�q�r��g4m,g4�t���u�1�v���w���x���y���z���{�M�|�}�~���[�[��kX������mx�����������g��;g�m���+g4nWy7�����������bg4��m,�`�L����p�Mb�d������������c�xvMku����`�Lb�cW��������m;nWt�`�����L�NiM`�����������������Md{iM������b�MLt�����ldMd��������iMg_iMM��b�L�������ak�bLd������iMiM��iMMiM��iM��iML��������������������FMNL����Me���M���MM��M��M������M��M������M��Mg������M���g���������������g���������g�)���dg�������g�tO*�M��������������oM�;����Mg�M����������g����;q�����}qg�g�M����`���g4M������,g4iMaN������������j�dx�M����kub�MN������d`�L�^C�N�N��N�N�NN��	NN�
^CN��
Nd{Nc���$������iMdML���M`�ak`������L�waz�aNt��gQkX��#� N�!�"az�ygCazw�N�%�+�&�(d�'�,M��)�*`�dp�M�,�/�-�.NMazhb��0Mt��2�w�3�T�4�F�5�<�6�9�7�8azd`�c��:�;MN`�b��=�C�>�Bku�?�@�A��g4g4�[xv`��D�EcWj���c��G�M�H�JM�IM�cW�K�LiMdc�y7�N�Q�O�Pc�L�c�p��R�SM�Nt�M�U�f�V�]�W�\�X�YMi�c��Z�[s8lis8c�N�^�c�_�bL��`g��ag�Mlxc��d�et�dLaN�g�p�h�n�i�jMnWc��k�l�mb�L���CM�oMl�q�t�r�s`��bMcW�u�vak~�g_b��x���y���z���{�~�|�}c�d`�b����kut���q~��L�L�x��������M�`�b�b�����c�������dl�c�NLN������������b�iML�b�����ML�dM���������M��|��p�c�c�g4����Mp�Lc�����������������cWp�Ll����azz�azQ���������c�b���b�������N��N��N��N��N��N��N��NYNNY����`�MЛak����������Lb�|�����iM`�d]c���������dM�`�M����MlMq�������
��������������������MLd{b���LdL��������lLM`���azdnW��������������cW��db�xvdnW��p�xvc���������nWLL�����T����iMc�dty����������������c�cW�<L����g4b�b�iM��������Mb�d{iM����b�`�c�b��������d��L�i�����b�y7L�d����db�dL���	�y7��E)�c�dl`���6���
�����dc�N`���b�iMcWL����c�dNb����L�rX�b��b�{
��/��!`�� b�L�"�.aN�#�$�-�%
�&
�'

�(�)
�*

�+
�,
{���kud�0�3�1�2Mb�Ml�4�5b�N��c��7�E�8�>�9�<�:�;xvc�l�M�=y7`�y7�?�B�@�AnWcWnWd�C�D{
d]azM�F�M�G�J�H�Iv�Q�d$M�K�Lg4cWrXaN�N��O���PrX�Q���R���Sd�T���U�o�V�d�W�]�X�Zd�Yd��[�\q�m��-m��^�a�_�`�Zo����N�b�c����K�e�k�f�i�g�h�����d�j�oa�l�mA�dd�n#��p�|�q�u�rd�s�tnu��d�v�y�w�xdo�d��z�{q�m��-d�}���~������Zi1���N��������K�������������d���oa��d��d����d��d��#���d����nu��d��b���b���������b���b���b���dq�����������b�o�b�������sua��������$o�z��K��b�qJ��b���������b���������sua$o�z��b�������KqJd����d��������������������d��d�����q�m��-m����������Zo����N��������K�����������������d���oa��������A�o��Xl������#�����������������nu���Xl�����N������������K�o������q�m��-d�������������Zi1�o�N��������a��������#�nuA�����d��a��d��d����d��d��#���d����nu��ddN�iM|�iM��b��4����
iM���	iMg4nWd�����
nW��b�L�Ni�iM�y7
���g_aNN|���#���az���dNlxd?�g�Mg���"�b�� �!\
L*��Ztyb��$�'�%�&LdLaN�(�3d{�)�*g���+�,�;�-�;�.�;�;�/�0�;�;�1�2�;�;�[MHG�5�K�6�C�7�<�8�:b��9iM�p�;`�Mg��=�A��>�?�@��M���aN�B2�h�D�FM�EdM�G�Jc��H�Ib�b�x�nWc��L�S�M�P�N�Ob�xviM`��Q�Rg4dc�cW�T�]�U�Y�VL��W�XMq�q�O�L�Z�[�\|�a�apa��^�_dL�M�`d{�ad{��c���d�r�e�l�f�i�g�hliL�`�N�j�k,c�b�d�m�o`��nnWM�p�qaNLMp��s�z�t�w�u�vhMp�M�x�yL�p�aNaz�{�}�|NaNnW�~�cWdc�y7������������������`�L��L����L��L��L��L��L��LL��`�LNM��MLb���������L��`�֥nWcW����My7Ny7������������M`�dcW����d`�{
`���������b�M�iM`�����L�b�MnW����������'���y���5���p��������������������������b�M���M�h��L����LըMN����p�c���`��������d����������Nb���d��x�iMx�����iMLML������������L�daN`�����iMb�N�C��������laN��d��rX)rX����c�dd��y7q�����������������LMiML�����nW`�iMc���������p�iMLcW����Mw�cWd������������Lb�ЛM����Me�dM����������aN����s�dwt�d{L�����lg4Mp���I��,��	������b�M�,��l�MM�L�
�
��c�lLL���kucWb����$aN����aN�aN�aN���a1�a1aNa1�aNa1�a1aN�aN�aN� aN�!aN�"aN�#aNaNa1�%aN�&aN�'aNaN�(aN�)aN�*aN�+aNa1�-�4�.�1�/�0M�NMc��2�3iMd`����5�D�6�Ab��7�8b��9b��:b�b��;b��<b��=�>b��?b��@b�d$ڥL�B��C��O�E�Fc�iM�Gc�{
�H{
Z7�J�X�K�R�L�O�M�Nb�i�xv��P�Qb�m�p�nW�S�V�T�Ug4L�iMg4�WiMMd�Y�`�Z�]�[�\kuiMiMb��^�_MiMiMM�a�m�biM�ciML�d�eL�fL�gL�hL�iL�jLL�k�lLLy��n�oiMdLd�q���r���s���t�z�u�x�v�wM�dd|��yL�,d�{���|�}dMQ��~���������������������������������������������������������������
�����������������������������������������������������������������������������������������������������#�����e�E�iM�,c�������|������,������������p�nWNiM����b�`���M����aNlic�N��������aNM��c����[m�����b�L�d{{
����������������d]|�y7cW����Lg_LM������NaNM�����q~c���aN�����l�l��������������M����c�q~Lc�Li�������b���xv��xvLj�����N��b�az����NM�b�g4������������������d]cWML����`�M�NiM������L�c�y7���c����E!T�`�xv����
��	�b���jVpz�RjVdt��iML�iM�
���t�iMeiMiM�diM�������iMiML�iM`�iM����c�iMiMb��L�g4� �/�!�*�"�#L�d�$�'�%�&nWdL�j*�(�)cW`�`�d�+�,c�`�p��-�.AazA�0�3�1�2c�MMd�4`�c�xv�6���7���8�^�9�J�:�@�;�=�<Md{az�>�?cWb�db��A�D�B�CdMML�E�Iaz�F�G�Ho��Cb��o`�d]�K�T�L�Q�M�NL�`�L��O�PazazgC�R�SiMML�b�U�X�V�Wg4L�p�N�Y�ZxvL�c��[�\�]iM��c�M��_�y�`�f�a�c�bLcWN�d�e{
y7M`��g�j�h�i��L`�l�k�vN�l�mMM�n�;�o�;�p�;�q�r�;�s�;�;�t�;�u�;g��wLL�x�����z���{�~�|�}Lb�=��H���diMM�d��������d`�L�N����b�MK�N������������������db�L�����azdcW����������N����azdaz�b�cW����dL�xvj�������������l��b3��h�M��ty����g4����m����L�t�N`���������LxvdN����dL�L������c�iMg4`�����������������L��,tynW����xvaziMM��������c�iM�Hd����Mt�n�xv��������������xv������mg4��g4����g4��g4g4����g4g4��g4��m,m��M�L��L��L��L��L��a"L������������$$9��fcW`�M��������b�t�`�d����xviMMaz���'�������������������xvd`�M�����M�Mg_aN����b���Ld����M`�N��xv��v�xv�����������N`�b�d]����q~dp�M�����iMp�Md��t�e�b�nW���	��
�
���;w��;`����Ob�`�L�����xvcW`�j*��y7azc�j��� ���b�Y����o���Nj�Nm��!�$�"�#Makb�ku�%�&dnWNaN�(�N�)�=�*�4�+�1�,�-c�xv�.g_i��/i��0i��2�3g4xvdiM�5�:�6�7dMc��8�9iMb�߫�;�<w�dMaN�>�G�?�D�@�Alb��Bs�H:�CH:s��E�Fb�iec�`��H�K�I�J��`�Mc��L�M`�Lc�L��O�k�P�_�Q�W�R�TM�SL�nW�UW��Vq�rd�X�Yxvb�az�Z`��[�\i��]i�e��^e�`��`�c�a�bL�MMb��d�gL��eb��fb�b����h�i�jL�cWNg_�l�r�m�p�n�oc�b�rfLM�qL�c��s�v�t�uc�iMb�L��w�xNMd]az�z���{�(�|���}���~���������N��lku����d������)(���RnWdL��������hp�L�az����nWtyc�M������������NMMb�����g4c�Lc�����������iM����tk��tk��Mxv����daNcW`�����������������nW������`�iMd{iM`�d����w�b�c�q�����q���q�iM������iM��azgQazb�i�������������iMxvxv������lxc�c�������g_g4LiM��������c�g4MN����b�MMi���������������������MnWM��i���`�i�������i������X���!�X���!���!���!���!�!�����!���!�!���!�iMd��������NMg_L����c�LLiM������������MLL�b�����N`�c�����i��i�����������L����L�dc�l�LiM����aNЛdxv�������������dl�L�azazb���xvc�L���dM`�c��	��
�b����
�Lg4L�dcW��b�����[2mdM���!��M�N`��� �c��N�Q��Q�Q��Q�Nd{M�"�%�#�$`�L�b�cW�&�'Mt�c�L��)�s�*�S�+�D�,�6�-�0�.�/Mdb����1�2Lg4d�3�4�5ww�ubkX�7�:�8�9nW`�t�xv�;�<p�d�=M�>N�?N�@N�ANN�BN�CR�N�E�L�F�I�G�HM�xvnWb��J�KNc�b�L�M�P�N�Og_�IL�xv�Q�Ri�L�b�g4�T�d�U�Z�V�X�Wdb�K��YMaNL��[�a�\�`b��]�^�_NNnW`�|��b�cakb��Ixv�e�l�f�i�g�hazMb�b��j�kNd�`�xv�m�p�n�oc�d{Mc��q�rNxvNb��t���u���v���w���x��y�|�z�{i���`��}�~�bc�n�Mt�y7����c�L���`���c�c�g���������azMc�g_����`�#�j*L����������diMrX����aNMnWd��������daN`�b�����dj*t�c�����������������azL���M����MNM�d����M���p�M�����L`�cWnW������������Lc�d{d����g4b�xvrf��������j�������;`��%`�aN��i���+�i�������L���b�`�b�L�l����}�����������������������aNiMMpz����MNc�j���������LM�j�L�����az������M���bB������������������iML������������LL�Nc�����Mg4cWi���������M�c�dq~����xvM�c�c�����������������L�b�L�g4����Mb�`�N��������b�e�`���������az��b�����azK�NL�������db�L����L��xg�Rq�gnLL����	�
NliiMxv��
iMxv�d���ak�L�L��L��L���L�L���L�L��[`�+���A��/��&�� ��cWL�b�`��!�"LcW�#M��$�%W�`��`��'�*�(�)c�iMb�L�+�,iMm�M�-�.e�ake��0�7�1�4�2�3daNM�b��5�6p�`�M�b��8�;�9�:p�diMc��<�@M��=�>�?azMM�db��B�k�C�S�D�G�E�FL�iMc�M�H�R�IdaN�JaN�KaN�L�MaN�NaN�OaN�PaN�QaNa1aNM�nW�T�h�U�gli�V�W�fi��Xi��Y�Z�`i��[�\i��]i��^i��_i�e�i�i��a�bi��ci��di�i��eEi�i�i�iM`��i�jMb�`�az�l�w�m�t�n�r�o{
�p�qMg���Md�smg4�u�vg_iMc�L�x�z�yb�b�`��{�|LiM�XM�~���������������������NazdL����M`���i���i�i�����e�i�e�����������y7��Q�Q�Ny7L����j�L�K�L������������b�`�M�N����M�M`�iM����������Lb���b�x��Hd����dM`�iM������������������fb���lityL�����������m����NM`�iM������`�c�`�d��dL�������������LnWLc�����xv#��L����LAAL��������g_M�iM������blxb����b��bb��b����b��b��bb)F��NnW`������������������M�LM�������ku��azv�azt�N��������c�Mb�����azaz��az����az��az��az��azaz��az��az�����q~t�d{p�������������z�diM�������{ak�{ak����akMdL�������LcWNb���xvc�{
�x����
���LkuM��	��
M��^C^CN`�N����c�ddb���j*g4Mg_�������,��q~iM��nWMnW��*��8�R��"� �!Mi�iML��#�&�$L��%azazkX�aN�(�?�)���*��+���,�~�-�c�.�\�/�Y�0�U�1N�2�F�3az�4�=az�5�6az�7az�8az�9�;az�:azwaz�<�"az�>az�?�Aaz�@gCaz�Baz�Caz�Daz�Eaz�"az�Gaz�H�Qaz�I�Jaz�Kaz�Laz�M�Oaz�Nazwaz�P�"az�Raz�Sazaz�Tw�azd�V�W�XL�lLb��Z�[dNL�b��]�`�^�_L�cWy7L��a�bdLNb��d�m�e�h�f�giMaz`�c��i�jlM�kd�l��`��n�x�o�u�p�s�q�r{�3�c�{��tm��mN�vM�wM���y�}�zli�{�|�bc�b�cW`�i����������������nWMb�M����M�ML������������j�g4��g4��g4����g4����g4������u�+�uV��g4��������g4`�c�����xvgCm�d������������L�Nb�d����L`�azM��������NMLd����Mc�c�L����������������������bl�iMazg4��N`���������L���i����i�Laz����M����b��5Nb�N����������L���LL������L������LoYoY��oYL����Ly�����LoYoY��oYL����פ`�MM���������az`�d{cW������g4����Ld]ALj*b�����������������Ng4lb�����q~cWM������gCb�gCaz��������xvt�dp�����Ld{iMnW������������`�dMq~����N`���d����s8gngni����L����w�^C��dgn��d���wm�`�aNL���`�`����j�	�<�
�#�����
�kuxvc�p���ku�az��azaz�az�az�az�az��azaz�azgQL�az�� ��|dL�M�!�"dc�Ld�$�5�%�2�&�1�'�*�(�)`�L{
Laz�+az�,az�-az�.az�/�0azb�azb�L��3�4cWl��ty�6�9�7�8c�nWNaz�:�;��b�d{az�=�L�>�E�?�B�@�A�G`�w�M��C�DakxvMb��F�I�G�H`�Mb�M��J�Kj*i�i�N�M�U�N�R�O�Q�Pdmg4nWd�S�THGb�NL��V�g�W�Xc�d�Yd�Z|��[|�|��\|��]|��^�_�c|��`�a|�|��b�|��d|��e|�|��f|�g��h�i�Hc�dn��k���l���m�t�n�q�o�pL�dcWN�r�sLp�L�H�u�}�v�|�w�z�x�ykXt�gQw�`��{`�b�iMxv�~��`������N��b�wm�d{������������L�c���d��aNaN��۱aN����b�iMML��������d{)7dM����N`�l���u��G����������������e�M|�r���azaNL���������iM`�dM����iMMMcW������������azd{��L�����M������kXubwb�dL�����������L����L�M�����L�Mxvc����P�������������������������Mp���p���p���p�����p�p���p�����p���p�p�ws`�B�����nWNe�N��������azb�Naz����azLd{ak������������c�dn�cW����b�c�Mg4��������d`�x�`�������`������U��L�cW����������������azdcWM�����akt�`�g4��������akL�dxv����nWazd`�������������w�M{
`���b�b�xv������L�cWNg4��c�L�dL���(������
�	L�c�M��nW��
d�N;Q�N;����`�Nd{M���b�dM�L�������b�m;LN��LkhcW��"� �!b�c�akM�#�$az`��%b��&�'b�t�b��)�?�*�8�+�/�,�.xv�-��xvd]h�0�7�1�4�2�3�d�r�����5�6Q�d{NN+lid�9�<�:�;b�dj*d]�=�>Mt�xv`��@�J�A�G�B�F�Cb��D�EiMt�b�g�c�xv�H�IMdL�M�K�N�L�MdaN�Mb��Oaz`��Q���R���S�v�T�o�U�[�V�Z�WcW�X�Y[�Q�c�M)�b��\�n�]M�^�e�_ll�`l�al�bl�cl�d�l�flg&�gg&�h�ig&g&�j�kg&g&�lg&�mlg&NcW�p�s�q�rdLlic��t�udcWNM�w�~�x�{�y�z`�NaNL�|�}L!TL�ak�������dLt�iM����M�liL�xv����������������c�c�azw�����M��M������������M�������������;�oM�J����d��q��������l�y��4��M�����������%)x�����O����M��M��M�������������;�oM�J����d��q��������l�y��4��M�����������%)x�����O����M��M��M�������������;�oM�J����d��q��������l�y��4��M�����������%)x�����O����Mb�N��������L�hi�L�����azd{N����azNaz��������������aNML����Nxv�Hi���������M`��,c�����L�dc�L�������������������j�`�M�az����M�g4`�M��������`�LkuM���az��L���L���L���L���L���L���L���L����L�iL��Ni��t]i�����	��dL�c�p��
�w�d{aN`��
���Ndd{L���c�g_��g_g_�g_�g_��g_g_�g_�g_�M�g_b�`���.��)� �#�!�"b��,j*d�$�(�%w��&�'_FQ���e�dak�*�+cWxv�,�-LL�azL��/�8�0�5�1�2aN`�d�3�4db�d�6�7LL�LN�9�<�:�;MkXN�8�=�>b�c�p�xv�@���A���B���C�d�D�T�E�L�F�I�G�HMi�ML�J�KcWc�L�j��M�Q�N`��O��R�PZhnW�R�SML�g_L�U�]�V�Z�W�Y�X����g�i�c��[�\b�Nc�b��^�a�_�`dxvdL�b�cj�|�c�c��e�y�f�r�g�o�h�n�i�l�j�kt�gQazm�mb�b��,Л`��p�qd`�xv`��s�v�t�uMLL�L�w�xM�q~b�L�z���{�~�|�}|j�aNd���dNMd������dcWM�����`�d�`���������������������`�M�L�`�����L`�n�L�����c���g_b�����|���j*��d�M�N������������dg_xv`�����xvy7db���������L�McW`�����L�Ld{`�������������������b�e���e�kfLd����l�������E������aNM���������K�LLL�������������suJb�c�d���d�e�iMQ�������������xv��������������������������������������������az��li�Rli����iMM�q~c���������Lc���M����p�d`�i�����b�L�c�aN���@�������������������LazLN����nWb�Ld��������L�cWg4`�����Mb�Lxv������������`�aNb�i�����g4cW`�cW�������c�cWd��M����M����M��M�M���M��M��M�M�>��	M��
M��M�M��M��
M��>�M��b�d|���$������c�ML�g_��MdL�l����Lg_��L��� aNd{iM�!�"�#j*L�iM�,�%�.�&�+�'�*�(Lb��)b�x�b�L�,�-Ld{ll��/�=�0�<N�1�2M��3M��4M�M��5M��6�7M�M��8�9M��:�;M���0{�g4`��>�?aNazw�L�A�j�B�S�C�I�D�F�EiML�L�G�Hb�LnWcW�J�M�K�LxvaNc�N�N�Rj��O�P�Qq���g�MdL�T�]�U�YL�V�WNiM�Xc�v��Z�[aNM��\L�c�#��^�d�_�cl��`�a�bwqՙc�NMd�e�ib��f�g�hdg_b�m�`�g4�k���l�x�m�u�n�oxvaN�p�r�qb�b����s�t��)(�R�v�wMc�aNb��y�|�z�{w�`�NL��}��cW�~���gCazb�kXcWd������������d`���LdN��c6rI�����,nW�,�R���������,l��iMh?����`�Makl����6������������������������b�c�cW�b����M|�L�d��������c�xv������d{=d{��������g�������Md{g_t�������������Md��L�����b�~d��b���~d������~d~d����~d~d��~d����~d~d����~d~d��~d����~d~d����LL�d��������aNLMe�����nWMxvd��������������Mj�`�����g4`�{
d��������NM������M�����g	��նb�M������������`�i�Ad����Ny7��cW��L��L��������dcW`��x����`�MLd�������������������cWLiMc�����aNd`�d��������d�Xc�{
����M`�nWN�������Ng_cWd{���aN���dM�L�	��
�
b��d�do�{
l�aN��b���Z
d{cW_N��%������LaN�Ig_��NdLd��"��!�c�M�� �M�M�c��#�$db�Lb��&�/�'�*�(�)L�xv��c��+�.�,L�-q��lq�`�M��0�3�1�2M`�gCc��4�5xvL�g4b��7���8�l�9�H�:�A�;�>�<�=�bL�Ld�?�@g4b�g4`��B�E�C�Dw�`�dL��F�GdLMaN�I�P�J�M�K�Lxvlp�M�N�O�,M`�w��Q�W�R�Sdi��TL��U�Vi�`�`����X�Yb�`��ZL�[�d�\�`~��]~��^���_���
~��a~��b���c��~��e�g~��f~���~��h~��i���j���k~����m���n�z�o�t�p�sM�q�ri���i�az`��u�yN�v�w�x`�i�Eߍb�d�{�~�|�}aNNLiM���l�dg_`�������������dNN������`�daNN�����^dЛt�������`�dg4����Maz��L����#m�o�d��������������������`���������az��az��azaz��wazaz����azaz����azaz��azv�ML������cWl�xv��������di�Lb�������`�������B�i���i���i���i����i�B���B�i�g4`�������������b���g���g�M`�M�����������[m�����lK`�d`���xv�����,xv`�M��������L�LL�������d`�m�b�����Lc�dN������������������xv��H:H:�Nd{����`�b�iM������|�cW\�cW��������d{b�xvb�����iMrfM�������c�iMq~M������������M�|g4cW����dLMg_��������LN`�p����N������do�L�g_L��������l�����Y��5���	��
���dN�
c���L��L����dxvtOc�����L�b�az��}}E��c�L�N���d]hBc�y(� �,�!�&�"�%�#t��$azEazNd�'�+�(d�)�*OENOEYd{l�-�/d�.iMj��0�4�1M�2�3g_g4c�ty`�L��6�E�7�>�8�;�9�:g_`�b�li�<�=dLLN�?�B�@�ALMLd�C�DiMMMb��F�R�G�O�H�K�Ic��Jt�t��,d�L�M�Ne�iMMg_�P�QxvLb�g_�S�V�T�Uy7L{
rf�W�XdcWdM�Z���[�j�\�c�]�`�^�_azM��L�a�bMcWMN�d�g�e�fb�iMLL��h�i�Ib�nWb��k�x�l�u�m�qb��n�o�pEe�d�e�q~�r�s�t�aN���v�wdl�lc��y���z�{LcW�|��}�~azb�gCaz`�c�����iML���R����cWiMc�Q�����������������dMnWN��dd������v�w*v�w��������c�ML�j�����db�L������Q�v�v�az������������`�b�dq~����}�M�`�`�����������dak�:����xvg4��xv����b�l�iMp������������������������q~xv��b��l��ak�l����e�d{xvg_��������b�`�iM�����������������!p���d��������i1R(��-�Z����`���Nq~������������laz��j�c�az����L�q���b���N��NP}����P}��P}��P}��P}��P}��P}_FP}��������c�MaNM������b���az��azaz����azaz����az�waz��`������������������`�����[maN`�����c�`��Xp�������LL�w�����L���ty��ty�Nb�������|�L�xvb���L�diMd�	��
�Mh�t�b��
kub���azg_dM��>��*�������N��h4wUx�wddp���azg4��L���"� �!c�dxv`��#�)�$�'�%�&`�Lg4cWb��(�Q��p�L��+�3�,�/�-�.L�Mazd�0�2�1M�NOqiMcW�4�<�5�6MLl�7l�8�9ll�:�;llz�d�=t�L��?�P�@�G�A�D�B�Cc�LL�ak�E�Fg4`�p�b��H�N�I�Jt�L�K`��L�M�Ia"�X���OaNb�xv�Q�[�R�X�S�T`�aNj*�U�V�Wq~rfNQ��Y�ZQ�L�w�L��\�i�]�^��L�L�_b��`b��a�bb�b��c�db��eb��fb��gb��hb�b�b��j�kb�akNL�m�N�n���o���p���q�w�r�u�s�t`�g4p�aN�vt�`�t��x���y�����z�{���|�}��i7�~��_Nu�����������l�g��vLM����`�d��M����lxdN�lx��������������xvazgQiMy7����`�dM`���������dLy7b�����g4L��L�����g��;��������������������liw�Mc�����`���b���b�{�cWg_����������L�����`�db��az������d$rXrX}�����`�M��t���`�\�`�������������`�ēw�g4����tyL�b�M��������LdL�t�����ak@&w�iM����������������L��dt�����dc�akiM��������O�j�iM������Q�Q�c�Ԧ����N����azazub`����������������M��n����������[��������uV�������������L�NaNM����M�������r��Q�`�ty��������akiMtyq~����b�iMb�`����>����������cWp�dj���L�c�����N��Q��Q��Q��	Q��
Q�_FQ�NQ�N�
NVp��0��b�L�M���'|�����|�|���|�|���|�|��g�|�|��|����#|�� |��!|��"|�g�|��$|��%�&|��
|�|��(�)|�|��*�+|�|��,�-|�|��.�/|�g�|��1�2�xMl�3�4�5(�lx�6lx�7ee�8e�9�:ee�;e�<e�=e���?�H�@�E�A�D�BnWL��CMNb�iM�F�GcWazb�ak�I�L�J�Kb�b��,N�MLNd�O���P�~�Q�`�R�Y�S�V�T�UcWddL��W�Xb�db�p��Z�]�[�\M�`�MnW�^�_N���FiM�a�w�b�e�c�de�Mb�p��f�vcW�g�h�ie���jhQ�k�l�phQ�m�n
4�o
4eN
4hQ�q�rhQhQ�s�teNhQ�uhQeNN�H�x�{�y�zcWL�iMxv�|�}iMe�aN{
���������������Mq~q~N������M���aztyaz��M����d�e�e�d����������L�c�L����d`�p�����dm�d������������cW��y��b�~�dnW��d{M�L��������Mq~����M���M��m��g4m����b�M�g_�������,m�M�����������������������L�cWcWH ����L�`�Lt���������c�MM|�����g_`�`�������kXb�azwc��������xv��iM������L�akd{cW����cWM�Lq~��������gQiM`�`�����`�����M��Mb�iM����������������L�`�t�c�����akd`�d��������d{aNMak����M�������i�Laz`�xvaz������������`�i�t�N����xvc���L�����Mhe�M��������b�M��cW��cWx�cW����g4`�L�������L�gng�N���|������R��&������	��dN�lid��;d�
�
{
��g�tOg�`������`�t��,L���NML�b�������li`�nW`����N�d�Kd`�M� �#�!�"`�g4Laz�$�%f�,cWc��'�?�(�6�)�/�*�+d{MM�,�-�.��m�N�f�0�4M�1�2�3dxvd{dc��5azkX�7�<�8�9N`��:`��;�G��|v�=�>`�aNb�L��@�K�A�F�B�E�CaN�DMM�;Np��G�J�Hp��I��y
M�d{�L�O�M�Nj*dMb��P�Q)(aNbaz�S�~�T�i�U�b�V�_�W�^�X�[�Y�Zb��Qo�d�\�]MLiMy7g4aN�`�aLiM`�M�c�f�d�et�iMM�`��g�ht���dcW�j�t�k�q�l�mc�l�M��n�o�pNc�dN�r�sNcWL�cW�u�{�v�wtyb��xaz�y�zL�g4cWi��|�}BfMMd���������������dazLli����M`�b�L���������w�LMnW����`�c�`�|�������������d��gQ����gQ��gQ��azaz��az��az����azaz��azgC`�d����L�db�t���������`�gnM`�����cWM{
������d��b�o����$��������������������b�N��L�����iMԦb�l����cWL�daN��������c�`���L�����e�t]e�i�����cWb���|����ri���i���������������N����L�c�NtyM�az����L�q~cWN��������LMc�s8��������d����d��d��d��dd��d����d��dd����H���HdaN����������������aNN��Nؿ`���`�����`���`�������`�����`�����`���`�`�i�`�����`���`�`�i�`���`���`���`���`���i�`����L���l�b�MLMc�����
�Md�	#ddc���
MM�`�M������c��c�b��~����H:"�H:"����Ehh%kf��!�� �xv�""l�e�iM�"�#xvdnWli�%�Q�&�9�'�1�(�.�)�-�*L��+�,���[�[�MLb��/�0`�L�c�b��2�5�3�4N`�Nd�6�7NiM�8�mazgC�:�F�;�>�<�=g_`�w�d�?�@b�L��A�D�B�Cc�NNc����E��c��G�J�H�Idb�Ly7�K�LL�`��M�O�NMq�g�b��Pb�ub�R�d�S�Z�T�W�U�VNK�dj��X�Y�b`�t�L��[�a�\�`�]L�^�_L�c�L�Ng_?"�b�cp��,lM�e�u�f�r�g�hb�aN�id�j�q�kM�lMM�m�nM�o�p�oMM�oL�b��s�taz`�dM�v�y�w�xdM`�N�z�{NH:dQ��}�,�~���������������������iM��p�g_dL�����L�azl�`���������`�Q�dq~����c�b���L��i�i�����������������iM����e�`�`�e�w�M�����`�c�N����������LcWj���Ae����AeAe��Ae����AeAe��Ae����Ae��Aee1Ae����tO������xv��Md������������������N����rXeb�`���������m���[m����$$�f�W)�L�li��������N������g4mm�L������xg���Rli����L`�d{az����������`�dcW��Nc�iM��������L�b�L�w�����c�Mc�xv�������������������b�M�MN����lN����i���i�e�����������b�i���i���HL����Mn���y7��rf��rf������������ML�b�d����b�`�cWb���������L�d{iMb�����b�MML��������g4�N��cWiMiM`��	��
xv�Q�Q�U\p��
�xvxv������Ni�iMw���b�d]az�c����c��� ����MM�L��m��p�`�NM��!�&�"�%�#dd�$m�fN`��'�+d�(�)�*פ`�פ`�xvL��-���.�o�/�_�0�7�1�4�2�3`�g_M�c��5�6q~c�p�c��8�Y�9�:~d�;xv�<�P�=Q��>�I�?�E�@N;�AN;�BN;N;�C�DN;N;Q�N;�F�GN;�HN;N;_FN;�JN;�KN;�L�MN;�NN;�ON;Q�N;�QQ��RQ��SQ�Q��T�UQ�Q��V�WQ�Q��XOqQ��Z�[dL�t��\�]�^i�ߍ`�i��`�h�a�d�b�cg_c�dM�e�fLnW�gxvazkX�i�l�j�kj*}�cWM�m�nc�aNc�N�p���q���r���s�wb��t�u�viMX>iMXM�xM��yrX�z��{rXrX�|rX�}rX�~�rX��rXrX�� rX����d{dc�������ը��
4��������l�b�xv��}�d{����|�LL�N������������b�g_iMg4�����mLcWd{��������Mw���w�M���;M����y7M�iMb���������������������n�L�xvM����b�g4Nd��������`�Me�b�����Mw���L��-������������nW������azmv�wb�iM����`�xv��d{����L�dMty��������nW��c�`�����Mb�L�`�����������������b�j�M��g�M����ML�Lb���������azQ�i�b�����lig_tyj�������������liNNaz������g4��c�o�dg_xv����������|�x��Pdd{����iMd{rf�b�������N�������8������������������i�LLi�����d`���M�b�~���������iMnWakrf���az�iMm�������L�Lj�M��ML�	�az�
gCaz��
gC��azb�����M�i�L�C���Cm�c�M��(��!����|��d��L�xvN��y7L�d� g4d�"�%�#�$MdL�M�&�'L�LM�L�)�0�*�-�+�,d�X`�M�.�/y7nWakm��1�4�2�3cWdL�cW�5�7M�6nWM�Md�9�n�:�U�;�O�<�?�=�>�Fj�j�|��@�Kg4�A�B�J�Cg4�+�D�E�G�+�F�+���H�+���Im������L�b�M�NiM�8��iM�P�R`��QLL��S�T�XF�akcW�V�d�W�^�X�YMM��Z�\�[Ly�L�]ww�a��_�c�`d�a�bm�+m��e�q��e�h�f�gb�Nhb��i�mb��j�k�ldq�m�q�aNN�o���p���q�t�r�sd|�Nd�u��N�vo��w�x���yd�zdd�{�|d�}dd�~d�d���(���(�(�����(���(���(�(�����(�LiM��������aNM�Lc�����NL�JLd{������������`�LM����dd����dd��d��d��d��d��d��do���b���`�����p�`�Ny7��������L�����azmb�iM����y
x�����d{`�daN����������������������`�g4nW����LaNdL���������dMdb�������kX����p<M�;��dcW��������i���dL�����Lc�L�`���������c�MiMd����aNdcWM�����������������b�L�LM������gw�azc���������LMLxv����t�M�L�M��������������az�Zd��b���azb�gC������d��b�b�d$MiM��������n���l���;�NNc�����c�b�L�`��������������b���kuM����cWMc��m����xvb�i�g_��n���c�g4���	��
�b��Xb�|��
�Лb������M~�iM������aN���c��
�X��L|���L�p�Mb���/��%��"� �!nWc�{
L�#�$b�L�dl�&�)�'�(b�diMb��*�.�+az�,�-d{g_d{NLb��0�D�1�7�2�5L��3e��4b�e��6azTFQ��8�9Md{�:iM�;��}��<i��=i��>i��?i��@i��Ai��Bi��Ci�n��E�H�F�Gb�LLp��I�M`��J�K�LLdnWLazM�O��P���Q�v�R�e�S�\�T�Y�U�VxvML�W�Xxv�4g��Z�[�cWdc��]�`�^�_Mt�b�g_�a�d�biM�cwwv�b�b��f�m�g�j�h�inWg_q~g_�k�lrf`�q~L��n�s�o�pN`�N�q�r��b�d$�t�uc�M`�b��w���x���y��z�~iM�{�|�}��s��dj�ty������N����b�`�MliiM��������b�d� M����b�`�Mb���������������������v�azv�w����[mb�c�����c�b�MN��������drXnWb�����i�L�b�M�����������������������L�li��,�r&��d�����,�%,����d{aNdt�����������d{�������L`�M�����`�b�������nW����nW����nW��nW��nW��nWnW��nW��nWj����������nWnW����nW��nWnW��jnWnW��nW����nW��nWnW��nWj��nW��nW��nWnW��nW��nW��jnW������������t�{
NL�����nWNM�`���������azldb�����dM��M��d��d��d��d��d��d��d��d��db�d�����������d��`�N��L�Mak��������cW����^COcNdi����xviMxvd��	����dMb�cW��wNM�aN�
�
��d`�NL��lb�j*M��p��M��6����M����d���K��b��%cWM��d�L�d� �#�!M���"�+mQ��$�%�&m���'�3�(���)���*���+�/���,���-���.���+�0���1���2���+���4�����5����7�C�8�>�9�=�:M�;�<`Xq�c�Li�`��?�B�@M�d�Am�dMm��D�J�E�Fc�d{�Gb��H�Ib�c���L��K�Ly7`�hL�N�a�O�Z�P�T�Q�S�Rg_��3Frf`��U�VMj*L�W�X�Yc�L��bc��[�^�\�]{
dL�`��_�`g4Lm�c��b�i�c�f�d�eN`�MaN�g�h`�q~kuiM�j�m�k�lc�ldc��n�oazc�iML��q���r���s�z�t�w�u�vL�`�xvb��x�yLMdaz�{�~�|�}Nc�aNli���b����K��M�L�������������L�`�xv��b�b�����t�������i@dd��q�������q���q�����q���q���q�q�b�q�����q���q�q�����q�q�b�b�d{����������M����NW�i�t���d{����ն���=�������g_L��Лd������������������`�����h4d]d]��t�L�����M�{
M�������d��d��d����dd����dd��d���dd����d��dd����dd����d��d�d��������b�c�c�b�����d������o�����o���o���o�o�����o�o�����o�do�o��t�cW������������cWb�Nd����L�ML�L��������c�L�j�c�������az|�L������������V������������������LL���cW��e�he�����`�`�c�j��������iM`���p�����j*g4l�d{��iM��b�e�`�d]ak����
��	p�g�N�
��b�e�e�b���c�y7LM�����Ndw�N��c�cWMc���5��(��!��b��Vp�OTOE`��� g4��g4�"�#liL�$�&�%�-"��'MMg��)�,�*�+dMd{L�-�1cW�.�/�0NN�Q�NL��2�3�4d���-�6�B�7�:�8�9Nb�dN�;�<c�d�=�@�>�?Q��bMQ�d�Adi#�C�Q�D�Pd�E�F�O�G� ��H��I��J�K���L�M��N���akNb�M�R�S`�`�M�Txv�U{}���W�{�X�i�Y�`�Z�]�[�\b�L�L�M�^�_iMb�daz�a�f�b�ccWL�d`�gQ�egQaz�g�hNLb�c��j�q�k�n�l�mLb�w�M�o�pb�Mn�L�r�u�s�taNlb�M�v�wc�L�b��x�y�zb��o�m��|���}���~���b�xv`�������b�Mt���������MNp�b�����y7b�kd������������dLcWN������N�����;g�g��oxvw���������Mg_c�cW����iMN��d{g4����m���
����������������������Mxvb���`�����azgCgC����azaz��az����az��azgQb�����c����L����d�b�d��������M���p�nW����iMMM�az��������������`�gQ��v�azL�������|�a�|�|y������t����m�m���m���m�����m���m�m�����m���m<��mL�`���������c�M�������������������������������*��i�i���i���i���i���i��*c��O����akddM����������������lnWakb���c���g_di@��������xvMLN����K�Lb�L�����������b�xvLz����Лg_c�d����dL�b�d�xviM���	hd�hd���0���
������b��n�N���N���pxv���nWL���`�`���iMc�M���e�M`�b�� �)�!�$�"�#dLq~b��%�&d{iM�'y7�(b�e�b��*�-�+�,Lg_c�N�.�/b�azcWN�1�G�2�;�3�6�4�5y7M�,xv�7�8aNe��9`�M�:��g��<�B�=�>`�L��?`��@�Ab�ddb��C�F�DL�H�E��Hc�b��H�T�I�N�J�Mw��Ke��Le�b�xvb��O�SL��P�Q�Raz����L�`��U���V�WLcW�X��d�Yd�Z�[�m�\�b�]�ab��^b��_�`m�b�m�m�o��c�i�d�g�edo��fo�dd�hdq�q��j�k�N�l�Nq��N�n�y�o�u�p�q�Nm�m��rm��sm��tm����v�wٌ��x�ٌ�z���{�ٌ�|ٌ�}�~��ٌ����������������b��������Z���Z�Z����d�Z���Zd��g�Mg����������C��o�b�����L���j�q~M����A������������������������d�������+�M��m�+mLb�������aN����dLcWg4`�������Mc�p�iM��������dc���cW����M�Mc�����d)�q~������Eײ���u������������dc�Naz��L�`�c���������b�xviMd����iMc�d�����������������c�dg4N������L�����o�^d]��cWL���������L�c�L�M����L�����rXrX�xvj�����������dj*cWL����M�b��<��b��������M�akMj�d����M�����ddm�������������������dxvNrX����b�L���M�����q�b�do����������g�������3�M��M��g�M��M�c��`���g�MO�M�����	�
Lg��`���
kXd{L�M��g4M�y7xv����db�N�az�t�az���d{�����d�iMc���0��&� �#�!�"c�b�c�d�$�%McWliL��'�-�(�,�9�)�*�+b�e�e�b�lL��.�/LNd{L��1�:�2�7�3�6�4ake��5e�b�Mc��8�9j*c�j*d�;�>�<�=LdML��?�@H:d{Me��B���C�~�D�j�E�\�F�Kb��G�HM�ILL�JLoY�L�P�MiM�N�OazwazgQ�Qy7�R�[߫�SiM�TiM�U�ViM�WiMiM�X�YiM�ZiMiM�:j*c��]�e�^�bcW�_�`�anWM�biMb��c�dM�JM�f�i�gd�hg4g4�+azM�k�w�l�o�m�nNdMg4�p�s�qN�rg4s�m�t�*�u�vL�xv�bL��x�{�y�zakLb�L�|�}xvb�b�cW���������������M�����b�m�b`�����ddb�����M�d{{
d������nW`�b���b�Lb�����������i�dM`���`�g4��������azdNd����LcW��L����kul�aktk��������������������NazLN����l������$}�n�nWku������Lb�L�����L��Fb�v�������������LcW�3iM����d{MLL���������`�N`�g4����d{Md��lx��lxb����������������|g4t�������e�`�e�`�������d{L�����L�i���������M�mMd{����d{`�xvq~������������p�b�L���������`�`���`���`���`���`���`���`����B`��W`�����M����e�Դe�dj*��������d�|�cW��LNc��������3���C�����������R���&��������������7m;iMp����b��NYOTp�d��	��g_MMg_�
�dy7�`��
�C�
Q�fN������dQ�Ld��Maki�M�� ���c�d�b�dN���b�e�e�b��!�"iML�#�$�}���%�,���,�'�7�(�/�)�,�*�+p�N`�d�-�.NL�i�M�0�4�1�2y7M�3dd�Z�5�6MLg_N�8�I�9�<�:�;cWp�dg_�=�>LԦd{�?�@L�AL�BL�CL�DL�ELL�F�GLL�Ha"L�J�M�K�Lg4MnW�H�N�Qc��Oe��Pi�e�d{q~�S���T�}�U�^�V�Y�W�X`�c�Lh�Z�]�[p�d�\�Qb�liM�_�p�`�lM�a�b�k�cmg4�dg4�e�fg4g4�g�hg4g4�ig4�jg4��m,g4az�m�n�odLb�iM�q�|M�r�sl�tll�u�vll�wl�x�yll�z�{lllakl��~�����������L����c�d��d��dd��d��d��d��d��d��d�azp�����dxv��nW��b�~db���������MxvL��c���aN����p��up�����������������xv����������b�e�e�b���e�e�b�����de�`���g�����q�q�����q���q���q���q�q���q����Fq���������c�������…c�Ԧc�ML����rfcWN`�������������g4b�Lb�����iM�ggQq~��������cWdMaN������cW����|�LNxvb�`����?��������������������N`�b�������xvdc������Ng4L��L������������b�dMxv����L�������Cd=�L������������dxvw�iM����L���g_����g_Md]���������O����wgCt���Le���e�b�����M��az��azv�L�w����'��	����L�t�azd��g4��di@dy7L��
�
��NL�Mc����cW����L`����}���+������L�i��������������:�P� �+�!�$�"�#xob��I�%�&�+�>�o��(�0�)�-�*�+L�F`��,���.�/`�c�dc��1�<�2�5c��3�4v�azt�L��6�7d�8dd�9d�:d�;d؂�=�>`�iMNM�@�t�A�R�B�I�C�F�D�EaN`�`�az�G�Hll�rXg_�J�M�K�Lt�LsGL�N�Oc�q~g��P�QM�4���S�m�T�j�U�iM�VcW�WcW�X�Y�b�ZcW�[cW�\cW�]�_�^?@cW?@?@�`�acW?@cWcW�ccW�dcW�e�fcWcW�g�hcW?@cWiML�k�lazxvL�M��n�q�o�pLdg�L�r�sdMdM�u���v��w�z�x�y`�Mg_nW�{�~b��|�}p�dp�b�n���������Mi���aN��b�Fb�����Ld`�b�������������t�cWc�L����nWaz��az����u�+x�“��������xvc�������M���M�����������������������������¢�gCb�������Ne���e�b�L�c��������>����������������������p���b��oc���l����wgCgCw����L��d��do�az��d��L�b���������LM�LN����`�q~L����L�d�������������Lj�@aN����McWnWQ���������M������M���%McWd����L������b�i�e�b�����cW$$sG`�����������������cWMcWw�����w�iMMg4����`���b�N����g4�bb�az���7��������Mq�LM���-����aN�������aN��������������aN¶ۄܒ�����Wܡt1�f�����8ܰܿ�u����۱a]���aN�	��
���������
�`X��aN��(�� ������aN¶ۄܒ���Wܡt1�f�����8ܰܿ�u����۱a]���!aN�"�%�#�$��������&�'`X��aNaN�)aN�*aN�+aN�,aN۱���.�/V�Q��0�1V��2V��3V��4V��5V��6V�V�N;�8�;�9�:b�c�p�b��<�=g4b�L�L�?�m�@�\�A�L�B�E�C�DL|�`�b��F�H�G`�azwU�I�J]�[�b��Kb�o��M�Z�N�Yb��O�Pg_g_�Q�Rg_�Sg_�Tg_�Ug_�Vg_�Wg_g_�Xg_�dg4�[MLM�]�f�^�c�_�`LiM�ad{b��bb�d$�d�eNL�LM��g�j�h�id]L�kXL��k�liMnWq�c��n���o�|�p�v�q�uak�r�s�tcW��9�$$aN`��w�{xv�x�y�zcWlL�^CakL��}���~��daNd����rf������d~i�c�L�N��������������c�b�dL`�����nW`�LnW��������M�`�b�dL����L���d�d������������������������c�M�M�������`�dLc�����c�L����Ob���b�d��������li����i�i��b�`�����Lc���v�����W�N`�����`���`���`�`���W�`�������������L����dg4b�c�L�����M�M��nW����azw�w*���������`�����L�����`�`�c�����������������L�Mlid����|�d��`�����b�*L�Vp��������iM�lq~w�L��LM������������M�c�dcW��d`�M��������L����OM��L���`�g4`�������MQ���Q���Q�����Q�Q�����Q�Q���Q���Q�Q�L�`�������	�����������db�b�e�M�`�q~����L�akL�L��`���TLMaz�
�����
iMd`�d��g4xvc�az����d{��b��Nc�daz��`�az{
az��.��'�� ��MdM�d�!�$b��"y��#�Tg4�%L�&LoY�(�+�)�*b�MM�l�,�-cWg_L�N�/�8�0�3�1�2dML�d�4�7�5y��6iMiMc�dM�9�>�:�=�;w��<�|NaN�?�B�@w��A�k��kd]c��D���E�	�F���G�p�H�[�I�R�J�O�K�L�,dd�M�N`�i�`��P�Qb�c�Lc��S�V�T�Udc�akc��W�Zc��X�Y`�`���dd{�\�f�]�c�^�b�_l��`�ai#di#daNL�d�ec�i�`�M�g�iN�hNxv�j�md{�k��lc�g	�n`��oNb�t��q���r�y�s�v�t�urfNdb��w�xL�`�b�ak�z��{�|b�L��}Mb��~e�b�����M`�M���rX���e������������L�e�L����J�o�������b�w��e~�b�cW��������dL`+az����b���az��kXaz�bnW��������������������$�L��xv�Cb�������t���Q���N��OT��OTOT����OT��OT��OTOT��NOTj*������H:��H:��������Mak���������azv�azb���e�b�����iMb�t�M������������`�NL`�����akdb�nW��������M`�aN����d��dd��d��d����������d��d���-o���������m��Z�Nq�����a��n��K��d��d��dm�d��nWc�`�����������������ߺc����v���v�az����d��v���v�azLg4��������dMb�M�����LM`��������E�E������������`�c�NM�����Mc�cWc�������v�di@xvj���`�McW���Q�^Ct�`��
�o��?���
������g4��p�b�b�b�aNb���i�dL�ײ��daz��eL�iML���.��!�� M�i�M���"�#cWlM�$�%���C�&�'�(�)�*�+�,�-�-�/�:�0�3d�1�2H:H:s��4�7�5�6[LrXe�8�9azb�j*e��;�>�<L�=ML�h`�c��@�T�A�N�B�G�C�F`��D�EcW)�g4q~t��H�M�Ig4�J�X�Ka"�La"�Xa"Nd�O�QL�Paz��R�SM�d`�L�U�f�V�Y�W�Xg4dNL�Z�[M�b�c��\b��]r�^b��_�`b�b��ab��bb��c�db��eb�db��g�l�h�ig_t�M�j�km�d��m�nc�`�d]N�p���q���r�y�s�v�t�uaNd�`�M�w�x�,L`�L��z�}�{�|c�AcWxv�~�db��6M��������������w�����MLK�c���`���b�p�b�����g4xv��d����`�c�M�M��������b�M`�t�����cWn���`�d��A�d����������������c�cWgCL�����b��OЛxv��������iMLc�`�L���q~N������������az���B���B��daz����Lg4��L��b���������L`�aN������N�CMc����t�������������������������M��rXrX�M�az����xvb�d{M���������bNL�M����y7ak|�L������������dd{c�M����w�`�w�����g�Mg���������d������`�e�LdL�������LNb�ty����aNЛL�b�����������������d`�i�L�����M�MMb���������L�akߍL�����LiM��L�����d|L�y���������c��������QiM`�L�LL���L�Mc�`�����c�c�c�M�	�
dLaNL���2�
� ������p�L`��m�d��c�nWt�M����L�M`�d{��M�NL���m�pZpZm��!�+�"�(�#�'b��$�%�&#b��L�q~d$�)�*dc�j*c��,�/�-�.t�azdcW�0�1Ln�cWd�3�E�4�;�5�8�6�7b��;xv���9�:d{Lc�d�<�?�=�>M`��bM�@�Al�e��B�C�DVpOEOTN�F�Y�G�Q�H�J�Iazb�d�K�N�L�MdNj*iM�O�PgCazgQ���R�V�Sd�T�Uakn�n�akd�W�X���|�Z�^�[�\M�i�g_�]b�b��_�sN�`�a�j�bq��cd�dd�ed�fd�gd�hd�idb�d�kb��ld�md�nd�od�pd�qd�rdb�dq~L�u���v���w���x���y�|�z�{cWnW`�~��}�~Maz�t�����Tk�p�`�o��������kud{Md����nW��`���ld����azb�L��������������M�������lazg4c�ML����b�`�diM���������Hb�dM�����c�L���b�����aNLg_M����������������Mt�L�N����e�MdaN����������b�m�b�azb�����p�p�n�cW������������i�dy7b�����dNMaz����������������n��ylc�����c�iMdiMNiM����b�cWL������LgnLxv���������������������db���b��������Ae�5����ak)7ak����d������LNb�Mb�t�������������M��Mg�����Mq�q�c�L��L����L�����MiMc�d������������b�MiMcW����L�p�b�az�������azd��Md��d��d�������d��d��d�dd��d�dd�d��d�d�d�	�
azcWMkX���
�����j*Md{M�dLc������F�e���e�xvL���M�m��m`�li��(� �#�!�"NAeMN�$dd�%�&�'g4brXcW�)�/�*�.�+d�,�-LNL�cWak�d�0�1b�b��2b�d�4���5�y�6���7�{�8�V�9�G�:�A�;�>�<�=azi�kXg4�?�@`�L`�cW�B�Dd�CL�`��E�FakM�NL��H�O�I�L�J�KLM�b�iM�M�NaNL�MnW�P�S�Q�R�Fc�`�c��T�U�CL~N�W�m�X�b�Y�\�Z�[Mg4`�L��]�^LiM�_az�`�agCJaz�"�c�j�d�edc��f�hm�g��g4�iiM�;M�k�l��iML`��n�t�o�r�p�qb�azb�d�sLNaN�u�x�v�wq~d{`�b��y�zM`�L����|���}���~���������m�ײL������cWc�d����b�L�N��������w���L��L��@b�������L�����L�`�"�Nd{L������������dc���L������LL�T������������akL�cWM{�b�kud��������l�LdK�����b�cWLd����������������azdliL�����m�NMd����������i����[m�d{g4����azL�L�iM������������L����M�[=w�g4����L�cWaN�������Ko�o�d��������nW��d��dm�akd������d����b�d{Mc�c�b����#��������������������cWnWdg4L��NL��������ghc�lb�����`�db�L��������cW��Laz����dd{Lc���������cWdML�����`�MNc���������������NaN��b�����*i�`�Դ�����Cg4L����tyMc�`���	���xv��d{M`�MM`��
�aN��Ld�
�����LMiMli��d`��M���l�l��� ���M��Lg4�L�aN��oY,[�~�X�!�"b�L`�c��$�W�%�B�&�3�'�0�(�,b��)�*�+b�ddsu�-`��.�/v�mv�w�1�2dML�c��4�<�5�8�6j�b��7�Qb��9M�:�;MLwUd�=�A�>�R�?�@�mg4���d�C�M�D�J�E�F{
LnW�G�H�IdMMc��K�L`�iMiMcW�N�Q�O�P+rd�Hxv�R�Vb��S�T�UOEYOTYkXM�X�j�Y�`�Z�]�[�\��H:M�L��^�_dcWNb��a�g�b�c`�b��dM�e�f}U��h�iMLNxv�k�s�l�p�m�nxvL�oaNakrv�q�rNLg4d�t�w�u�vb��Id]db��xNi��z���{�|�|�F�}���~���������b���az��azL�`�xv����`�����L�L���������L����+�M�b�����������d����o����g�c�d����iMd�k����N�e1
�������������c���q�b���d����L�>�L�>�����MLb�d���>����L�g4����d��������d��������������������d��d�����q�m��-m����������Zi1���N��������K�����������������d���oa��������A�o��Xl������#�����������������nu���Xl�����N������������K�o������q�m��-m��������������Zi1�o�N��������a��������#�nuA�����d��a��d��d����d��d��#���d����nu��d��d���4��������������d��d�����q�m��-m������Z����N������K�����	�
�������
dnf�oa����A�o��Xl����#���%������nu���Xl���N�����"� �!�K�o�d�#�$q�m��-d�&�-�'�*�(�)�Zi1�o(��+�,����a�.�1�/�0#�nuA��2�3d��a�5d�6d�7�:d�8d�9#��;d�<�=nu��d�?�E�@�C�A�BrXliLazb��Dc�{�HGL�G�a�H�S�I�L�J�Kfc�L`��M�R�N�P�Oazt�az�QrXrX�`�M�T�\�U�VkXc��W�Z�X�Yc�n�նg	Ԧ�[c�Ԧ�]�^`�t��_�b�`cWi�M�b�i�c�f�d�eiMdgQL�g�haNL�c�y7�j�w�kN�li�L��mL��nL��o�pL��q�sL��r���tL��u�v�c^ix�x�yc�ku�zj*�{#�c�#��}���~���������������`���lili����li��li��lili����lili��li�RiMN����az��|=��W|j��b������db�d��������dc�d{������l�d`�b�����LnWcWH:������������g_|L�d������L����c�su�"���M������xv��������dNNL����`�MMg4����������������di�b�g4����j���o���di#��b�����M�[M�[��������L�iMc���������L������L����L��L��L��L��L����LL����LL��L��������L����L�fd]c���������������L����MQ�N+iMm�cW����Nb�`�����az��������p���d{d������M���,|��,aN`����L���$���������������`�g_��L����OTYN[�����nWNNq~�������tyiM��`�l�l{
�b�ML�������
��
��	t�y7Nc������m���b�����Nlx�L�N�,�� ������!p�NdR���ZLLÛg&���`�LéL�!�"Nxvd�#�Cb��%�>�&�/�'�,�(�*N�)b�dL�+gCaz�-�.LNcWp��0�;�1�5b��2�3�4!+�*פ�L�6�7�8��M�9�:�Ma���w��<�=LMb��+�?�F�@�C�A�Bj�e`�L�D�EL�LL�M�G�I�HdL�d�J�Kazb�akb��M�t�N�b�O�[�P�X�Q�WL�R�S�V�T���Ub�b�p�L�cWM�L��Y�ZdxvL�g4�\�_�]�^��MNc��`�aazhdb��c�j�d�g�e�fL�d]c�d�h�idL��aN�k�n�l�mNdLi��o�s�paz�q�rcWlxL`�cWiM�u���v���w�}�x�|�yw�z�{M|M|L�`��~�`��iMd��������kudL�`�����b�������db�m�dl�d������������`�M�g4d���������N��q�ag4���+��dg�����������iM����Mg�g�M`�d����`������AeB�aNN���$���v���
����������������������e�����[�Q�[�Q���������g4ML�M����g_q�g4�b����b�j�L�L����������L������s���t�����l�l�[m������L��c�MLLb�������������`�������ak)7ak�l��M����b��b�d����b��{`���L���L��j��������L�b�b�M����c���H:��s�H:d��|���|����������������Lw���N��t�cWM������L���My�MM�aN��������Nj�Lc������+c�`���L��lt������������b�w���b�����db�o�d��lidLxv���dd�d�m�b���	L�b�H:L��J��2�
�!����y����t���iMb�t�L�� ku��i��i��i��i��i��i�i��i���i�i��eg�`��"�(�#�'N�$�%�&L�j*akiMMd�)�,�*dM�+)xM�-�/�.MM�;�0�1Q�b�dg_�3�=�4�:�5�9e�6�7�8lg&���q~b��;�<dy7b�N�>�B�?�@`�t�M�A�N��C�GL�D�E�FN;Q�Q�OT�Hdt��It�L��K�f�L�Y�M�V�N�R�OM�P�Qb�kuLlf�S�T�ULL�L�c��W�Xdb�L�M�Z�c�[�_N�\�]�^Ԧg�azx��`w��a�bb�A��Qm��d�edkuy7ku�g�p�h�m�i�ld�j�krXlx(�L�L�n�oNc�azL�q�t�r�sM�`�xvp��udakL��w���x���y���z���{���|���}B��~�e��Nb�ty����L�������X`�M�j���������L�NaN`���dcWb�������������akb�Ng4����aNtkp�xv��������L����Ly�L��b�����`�aNc�d����i�cWM��d��d�Q������������d������tk��tkø����d{c�d{M����L�����Mg�ML���az��wUaz��������LNdL�����F�b���L����`�az^C=������������p�������cWdd{g_������^C^CNb���c�NL���c�����g�����������aN����Q�g�Q�g&�L����cWc�L�L��������������������`�������b�L�NLLL�����xvazLN��������azc�b�`�����q~e�Lxv������������MakMd{����N����`�d`���M��azl�az������Mg_d����iM`�L������ak`�`�rg��������tywL����b�o���	�
M|�dm����
��xv��v�gQv�azxvL���c�`�y7M�������Ndc�L���dL�Ld��!�� `�L�`�M�"�#L�dcWg4�%��&���'�t�(�:�)�3�*�-�+�,dL�LM�.�2t��/�0�1db�sub��,���4�6b��5b�L`��7�8M�9c��yԦ�;�I�<�B�=�Ac��>�?�@�g&���L�p��C�G�DL�E�F`�cW`�cWM�Hm��C�J�o�KNd�L�M�f�N�Rd�Od�Pd�Qd��S�_��T�U�Z��V��W�Xd��Y�d�[d��\��]��^�d��`�ad�bd�cd�ddd�edm�d�g�hb��ib��jb��kb��l�mb����nb���b��p�sb��qm��rm��j�y7�u���v��w�z�x�y{
l�y7az�{�~�|dd{�}d{WMc�cW��������MLw�����N��N��N������������W�N;OTQ���NQ�NW�N���������R��gnlilq~������������dm�d���`�����nWNd�����xv�����������idg4���~����Lִ��g4L����\
��������������������nWML`�����L����LLoY��aNy�L��������akaNcWb�����dnWn�������NcWdM����������������ak��`�ak����m������C���C���������C�������Co���o��Co�����o���o����Co�o���o���o��Co���o������Co��C��`�g4����c�i�L�M����������aN����Mg�q�Mdc�����iMb�b�xv����������������L����i#n�b�dq~����Mdb�N����������b�rX��rXlxd`�����|�|�g_L�������iM�b��p���NM��db����	�
gCazazgQ��
}�m}�A��L��|����L��;akiM��`����۱�W��aNN�b��t��C��4��*��"� �!g4c�tycW�#�'M�$�%�&b�MNd{M�(L�)�T���+�1�,�-NM�.g4�/�0t���Md�2�3y7b�&QL��5�<�6�9�7�8d`�{
�X�:�;MnWL����=�@�>�?akNb�N�A�BMcWiMd�D�W�E�N�F�K�G�Hg4l�IN�Z�J|�d�L�ML�Lb�L�O�T�P�S�QLak�RakøMlx�U�VM�iM|L�X�j�Y�\�Z�[L�aztyd�]�d�^�a�_�`j�cWiM�F�b�cMlֈc��e�g�Q�fdm��h�im�b�db��k�n�l�mQ�NNb��o�s�pL�q�rq��-db�`�j*�u���v���w�~�x�{�y�z`�q~M��0�|�}q~g4aNd���N��lc�����N������Nc�dL���L��mazA������������dML�������L*�L������N����L�IL��M�����������[m�������dLnW�����^b�Lh����������������azcWLN����dL���L�������y�LoY����������������iM���P�����2g4`�az����L����L���L�L���L���L���L�����L���L���L��+L�Mku������������M`�`�������MNp�#���L`�������b�L�iMq~��������g_L���M�M��Mq�����Ld���db����9���������������3���������������������q~li��gnlib�M����aNi�g4������Ld`�b���������L�LcWq~����LN��`���M�M���M�����M�M�����M���M���M�M���[M�������azMp�L��NL�NL���	�
b��b`�N��
xvdg4w�������N�m�l���d���MmdM����aktyH:L���iMcWLM� �*�!�$�"�#L�Og4`��%�)M�&�'�(b�c���OcfL�+�.�,�-db�Mg_�/�0dcW�1M�2lijV���4���5�Q�6�K�7�B�8�>�9�<�:�;y��LoY`��=��`��?az�@�ALM$$L�C�G���D�E�F\
L*�L�H|��I�JM���;�L�O�M�Nb�U\w�MM��Pt�`��R�j�S�g�T�dL��U�Vq~q~�Wq~�Xq~�Y�Z�_�[q~q~�\�]q~q~�^q~w��`q~q~�a�bq~�cq~w�q~�el�f�l`�tk�h�iiMakg4cW�k�n�l�mg4c�mc��o�q�pK�lx~�p��r�s���tcW�uM�vM�w�|�x�!�y�!�z�!�{�!M�!�!�}�~���M�!M��M��MM�!L������������������`�d��d���-dq�����g4Lb�M����������c���Mg_c�y�`�����b�iML�������Vpc�b�c�������������`�����c�d{M������b�p�d$������g	��l�c�����b�d{`�N����������c�����Np���N��d{d{����d{��d{d{��d{����d{d{}���akd��r#����iMLc�M�����������������������|�azLL�����L�d]d{L��������L�Mg4c�����L�b��c�������������t�l��N�������M�m����ld{�b����az��az��azaz��az����azaz��az��az��waz����������nW����L�iMc�d��N��L�L����d{iMdz����
�����������b�iMNiM������nW�����Cd��C��M������Z��L����c��`��_�g_L���	p�akak�
h�akL�dL������LtynWQ���M�Ni�ML���db�c�L���S��/��%��"��!L��M� ak}�Ld�#�$L�cWM�`��&�,�'�+�(b��)�*VpNN�lp��-�.|dcWM�0�I�1�>�2�=iM�3�4az�5az�6wcwc�7�8wc�9wcwc�:wc�;wc�<�wcNM��?�H�@b�N�AN�B�CNN�D�EN�FN�GNNQbg4L�J�P�K�LЛLL�M�N�O�%,��%�Q�RdiM`�nW�T�v�U�o�V�g�W�cL�X�Y�Z�&l��[�C�\�C�C�]�C�^�_�C�C�`�a�C�C�b�5�C�dw��e�f�Ic�c�Ԧ�h�l�icW�j�kLoY��L�mdM�nM���p�s�q�rMcWj�L�t�uLc�Lc��w�~�x�{�y�zc�MazL�|�}i�LLi��������dML�b�������`�m�laz���;���������������������������L��La"dw�������L�d��db�akM���������g4`�g4��az��gCaz����b�L��d{����d{c�iMM������������LaN��d{����*�\
LoY����NL��0����������L�Cd{c���Lb�L����������������g4b�dc�����d����g4�+g4LL���������a"xvazL����dMH:N������������}�NN������q~`�c�Ԧ����Nj�l`�����������L�����VpNNQ��iM����dL��M����b�b��N���	����������������iMMb���w��azw����`�M|�iM��������N�IML����MN��ty�Z��m�b���������������cW��rX`�b|�M����Nku��aN��cW)�cW�����L`�Mj*�����C�d��Co��c�kub��
������
�p����t��XiM�akg4���aN�aNaNa]aNL����L�t�d`���L�wb����q�� �/�!�*�"�#b�L�$�'�%�&���h���,�(�)iMb�xvd�+�,NLL�-�.b�azb��0�5�1�4�2nWgQ�3v�gQb�`��6�7|d�8ak�9�:dq~azQ��<���=��>�R�?�J�@�E�A�BLakL��C�Ddm�d�F�I�GcWc��Hlx��M�c��K�N�L�MM�d�@}�L�O|��P��Q&B��S�\�T�Y�U�X�Vd�WL�~LnWL��Z�[`�dd{`��]�v�^�rL��_�`�i�aL�H�b�c�H�H�d�H�e�H�f�H�g�H�h�H�wL�j�kd�ld�md�nd�odd�pd�qdo��sc��t�ug_b�c�L�w�xe�cW�y�|�z�{<��az��}�~�=նg&�����������������nWg4��b�d��dq�����LMMc���������dL�c�xv����p�`�cWb�������������`�������d۱p���c�������t�Ng4��M��g�M��������c���M*�`�L����`
������akq�Q�akM��|���|���������������������cWd��c���L���L�L���iL���NNL��������lx`�t�w�����b�cW��d����b�Nc^�;��������������N����kuiM��g4dM����c�M�p�L��������dM�cWl�������L��iMiM��iM�7L�d��������������M{
d����p�c�b�|���������`�L�L�Ae����j�iMLc�������������`�dN�������9���3`����`�dMN��������Ԧ`���xv����b�tydNb���ld�����������X���3�����
��d�L�b���Cb�����	�b�b�b��
�g	�g&�L�b�����dL����dLazOc��dd{g����Lf�b�"��"���'��!�� l�+Ny��"�#q~Q��$H:�%�&`�g4d{Ĕ�(�.�)�-�*d�+�,`�g4Nq~b�d{�/�2N�0�1Mc���|�L��4�H�5�<�6�9�7�8akLb�aN�:�;i�aNiMak�=�E�>�BN�?�@�ANlxvs8�CL�D;��rX�F�GiMLNg4�I�O�J�M�K�LL�ML����Ndb�N�P�V�Q�RL�b��S`��T�Up�b�d]b��WNt�M�Y���Z�u�[�l�\�_�]�^~�ML�iM�`�k�axv�bH:�cH:�dH:�eH:�fH:�gH:�hH:�iH:�jH:s�H:c�N�m�r�nd{�od{�p�qL�`�N���s�tL�daNN�v���w�}�x�|�ycW�z�{d{`�q�g4c�L�~���iM�����rXNb���������M����L���L���L���L���L�L�����L�L���L���L��:dM������d{M��M�d{�b������������������������g4i�L�iM��kXwkXd{q~����g4ld{c���������c�������i#r#rz�N����i�����dd$b�������������b������W�u�W��lirXb����|�N��d����Nxvg_c���������lMLb�����dc�`�aN���(�������������������M���������rX��`�b�������N<�Q�����cW������*���oYLkuxv��������dML�d����L������}�L�yku��������������������lZ�OĢ��q��d��L�����b�wUgCgQ����L�M�c�nW��������N������L�`�Mb�L�������d�X`�rf������b�����`�ıkui@b�az����	����lxvdL���AeLNL�
�
��N`�az`���d{q~Lq~�����diMcW��c���az�w�N��b�NNe��� ��Lb�c�`��!�$c��"b��#Lq�j��%�&�'d{MakM�)�V�*�B�+�5�,�2�-�.ML��/��0�1L�b�t�b��3�4w�`�w�b��6�<�7�;�8d�9�:c�q~c�Lߍc��=�>xvaNd�?�@�Ad`�L�M�C�O�D�L�E�Hb��Flx�Glx�jb��I�J�Kc�c�ML��M�NML�db��P�S�Q�RMLL�g_�T�Uq~M�azc��W���X�~�Y�p�Z�[Nd{�\�_�]�^iMp�j8iM�`�a`�b��bl��c��d�j��e��f��g��h��i����k��l��m�n���o���q�}�rg4�s�tNcW�uL��vL��wL��xL�L��yL��zL��{�|L�L��:g4cW�����d{l�H:����NazsGcW������������LL�j�������`�|�c�L�����aN�,��L��^CN^C������������Q���MQ���b�Q�nWd��M��������M��M��Mg�M��MM��M��g�M������������lZ�[��O����~�iM`�Դc�e����w�����������������������L�N��Ld���d����N�������}b�����Lb���������l�iMM���������8d{g4����d��`���b�g_L�M��������b���g4}�������l��g4g4��iMj��������c��`�c�����dLc�M�������������������x����LL�|�b�az������t�L�i�ak����g4dakb���������xvg4Ld����N������akl�d^LMg4������������n�g_��y7����g&ն�n�����b�azb�~������L��ty���ty�ak��פ���c�LLd�	�:�
������
�d`�iM�,�%���bc�cW��c���c�����dnWL�g_��Mi�c�M��$��!�� dc�d{L�"�#c�iMMd�%�8�&�7�'�(�%,�)�*lxM�+���,���-�����.�/�3���0�1���2�����;���4�5���6��q����cWcW�9cWaN�;�Q�<�D�=�@�>�?��dLc��A�C�Bi��Cm�dc��E�K�F�Jc��G�H�Ig_NH:c�g4L�L�MdL�Nc��O�Pd�b�L�R�Z�S�V�T�UcWMLd{�W�XdL�Yyd{Y�[�q�\�p�]�^_�d{�_e�e��`�a�i�be�e��c�de�e��e�fe��g�he���e����je��ke�e��le��me��ne��oe���Lb��r�s{
nWb��td�ui#�v�o�o�x���y���z���{���|��}�~fL�W�cW����MiMd������g�c��az��������g4L�c�iM����LNlc�������������c�t�c�b�����dLp�iM��������g4Mb�N��������M��d{az��g4L�Mc�L����������������Nc���������d{c�b�g4����iMN�iM����L`���`�����������������dLq�����i�i�B�������`�����mww*wp�cW������������aNb�b�c�����b�g���M��d�Nd��������H:������Ly�*���Lc�������{
m��m����g4��g4��g4��g4g4��g4����g4g4�i@d�������������������iML�bc�����.d��`���#�#�d{������c�ML����b�b�LN���������������dd����d��dd��d���Zd�6���6���6�����6�6�����6���6���6��6�[�6Li���dH:b�������`�g_iM�	�
L�>�L���
Mb�b�ak��#����b���v���L����L��ku����h��Ka��p��� ��LMNM�!�"b�d{d{M�$�-�%�(�&�'p�L�LM�)�,�*dd�+sudxvM��.�1�/�0H:Lc�d�2�8�3�6�4�5VpOE�VN�7pzpz,NL�:���;��<��=���>�d�?�M�@�F�A�Cd�Bc�`��D�Eb�LQ�N�G�J�H�IazL�|�L�K�Ld$diMg4�N�Z�O�U�P�QЌ`�d�R�S�T��g�g��4�V�YL�W�Xazaz��Lՙ�[�_�\�^c��]lib��XM�`�aNd�bL����coY���e�x�f�q�g�n�h�k=O�i�jtkr�ak�l�md?lxe����o�pakiMakL��r�u�s�tNLNd�v�wL�aki�ak�y���z�}�{�|lMMnW�~��M��L���d^��xv�����g4�Mm��������dLLg4����dc�ty������az}�Aaz��������������������L�`���l����p�kuc�`�`���`�L��������dMH:M����MN��������c�b�dg_����akNrfc�������������`���b�wc�N����NcWL`���������L�c�c�������Nd{db�����L�v�L��`������������������Li�c�L�����`�����ddb�dM��������M�M`�M���Nb�L����	��������b�c�`�L������������Q���������Vp��Vp����VpVp��Vp��(�Vp������Vp��VpVp��Vp��Vp(�Vp����Vp��VpVp��Vp(�Vp��������������Vp����Vp(�Vp����Vp��(�Vp����(�Vp(�Vp��VpVp����Vp(�Vp���Vp��������Vp(�Vp�Vp(�Vp�Vp�VpVp�Vp(�W�Q�N���OqMxv�
�
��M�{c�m���xvLMc���d��;��(�� ����c����ڈg&�c�L�`���b���L{�LLg4�!�%�"�$c��#y7
�`�M�&�'LNj�cW�)�3�*�-�+�,N�Xxvd�.�2|�/�0�1yq��lZakkX�4�6L�5m�li�7�8db�b��9�:Mc�M�<�Q�=�D�>�@�?L�L�c��A�BnWp�c��C�xv�E�H�F�Gc�NakL�I�M�J`��K�Lc�g4`�x�Nj��O�Pl�az|�L��R�[�S�Ud�TcWM�V�WM��,�XN�Y�ZnWٰMaz�\�a�]�`�^M��_gQgQazH:i��b�cl#eLc��e���f���g�|�h�o�id�j�m�k�lc�xt���H:�nH:�p�{L��qd�rd�s�t���u�v���w�x��y��z���Lc��}���~�N`���d��MMtO����iMc���Mb���q�b�������������cWd`�`�����Mb�N;L����������azQ���Q�^CMm������cWNN;L�xv������������������d��db�dLפ����g4`�����������y���������L���L�����L���L�L�����L�L���L�o�L�����L�L���L���L���L�����L�L�o���L�������L�L�����L�L�����L���L�L����L�L�����L���L�L���L���o�L�������xvcWL����nWc�g4N�����������`�����lg&ld`�����y7������tkak}�����b�nW����nW��������nW������������nWnW��nWj������nWnWjnW��jnWnW��nW����nWnWj����nW��nW��������nWnWjnW��nWj��nWnW��nW��nW��jnWnW����nW��nWnW����nW�jnW�nWjnW����aNc�dak�	�
H:�
��NQ�NQ�akc�����œ��Y��=��6����M�b��`d�m�d��L�b���%��$N�N;�� N�!N�"N�#NQ�NOcN;�&�-�0�'�(N;�)N;�*N;�+N;�,N;Q�N;�.Q��/Vp�0Vp�1Vp�2VpVp�3�4VpVp�5_FVp�7�9�8b�`�N�:d�;iM�<b�d$b��>�G�?�B�@�AMq~L�b��C�Ddc�l�E�,�F���?�H�L�I�Jc�l��Klpzgn�M�NcWc�d�O�PL��QL��RL�L��S�TL��UL��VL��WL��XL�L���Z�q�[�g�\�b�]�^lku�_d{�`�aVpOEN�M�c�fc��dW��eNW�b�#��h�n�i�m�jd�k�lL�x�Nb�d{rX�o�pb�b�`�xv�r�s„�tƒ�uN�vd�wdd�x�ydd�z�{�d�|d�}d�~d�d€d‚d�ddw�…Œ†‰‡ˆ݋�\ݶy(Š‹���g&NŽQ��Q�™‘•’L“”aNb�azd]L–—˜`�L�c�c�š›|�p�McW��ž½Ÿ· ¨¡§¢¤H:£H:"�¥¦VpOEVpOEaN�,©­aNª«¬L�Q�db�az®¯¶d°±d²´³dd�Nµddad&}¸»¹ºLb�H:c�¼daNl¾��¿����g4akN`�����M����g&n���NcW��������d��d��q�ddaN����Q�M`�M��������������L�ML����Lb�dN��������cW`�d|�����L����dsudb�L������������c�L�aNM�����LMlL�������MaNd����M��lL�L������Kb�d���x��� ��������diM`�L��L�g4L�N����b�`�i�L���MLLj�����	��b�L��w��
�nW�L���
L�L��L���L��L��L�L���L�L��:b�`�����L�LcWl���b���LL�db��!�c�"�6�#�1�$�0�%M�&�/�'y�y��(�)y�y��*�+y��,y��-y��.y�y��ky���lg4�2�3cWxv�4aN�R�5jV�R�7�:�8�9kut�ak��;�<Lb�l��=�>|��?�V�@�Kg��A�Bg��Cg��D�G�Eg�g��Fg�ŀ�Hg��I�Jg�ŀŀg��Lg��Mg��N�Rg��Og��Pŀ�Qŀg��Sg�g��T�Ug�g�ŀ�Wg�g��X�Y�^�Zg�g��[g��\�]g�g�ŀ�_g��`g��ag�g��bg�ŀ�d�q�e�h�f�gb�LcWc��i�m�jd�k�l~g����o�n�p�o�9�~��j)ak�r�u�s�taNnW~pz�v�wlilL`��yä�zÍ�{Ä�|��}�~hLcWM�ÀÃÁd{Âd$yb��#xvÅÈÆÇL�b�dNÉÊNi�akËÌdL�lÎÚÏ×ÐÔcWÑÒÓg&��g&�ÕcWÖlc�lØÙb�L���j*ÛÞÜÝnWaNL�M�ßãL�àáâ,��%,nWLå��æïçìèéL�p�c�êëb�b��íîNdNŕðóñòt�LLMôõb�Löm�÷b�øb�ù��ú���ûü��ý��þ��ÿ����Ť���������������������Ť����������Mb�cW����d{`�g4t��������������
|���v�v�azLM�����dg_L�c����`��Ą���-�������������������ML�Lc�����b�L��cW����c�dM�H:����������d����iMMp�tyg_��������M�`�Lc�i���������MN`�L��M����i#o�o��CNc�����Lb�Mc���L�nW|�L������
��d{�	�
�cWLMQ�ld���d����L�nWc�M�L�����`�cWN{
��xvg4�d����
���#�� �LMl�!�"LazL�M�$�)�%�(�&Ny7�'`�`�lN`��*�+Mg��,g����.�R�/�C�0�9�1�6�2�5�3N�4lg&lnW`��7�8`�L�LL��:�=�;�<L�MNL��>�Bp��?�@�ALQ�^CQ�cWL�D�K�E�H�F�GdMg4L�I�JMLc�`��L�O�M�Ndaky7L�P�QxvdMg4�S�h�T�a�U�[�V�Zl�W�X�Yx�Ÿx�wdNL��\�]q~Le��^�_�`d`��Hb��b�e�c�dd{azdku�f�gMy�L�cW�i�x�j�o�k�ncW�l�mdb�dc�L�p�qLM�r�u�s�t���g4m�v�wc�azl�y��y�~�z�}�{c��|d�CdLl�ĀcWllāĂăNp�nWc�ą��ĆķćĞĈđĉčĊċb���MČj�4�Ďďd]d{Đku��LĒěēĖMĔdĕ�Co�ėęĘdb�i#Ěb�b�d$Ĝĝb�NcWb�ğĦĠģġĢ`�L�xvLĤĥt�ddLħĴĨijĩxvMĪīMĬMĭMĮMMįMİMıMIJMg�ldĵĶL�m�dt�ĸ��Ĺ��ĺĽĻļb�p�N`�ľ��`�Ŀ��`����פl�`���������N`�dxv��ML�L������������c�LLN������������g_dc�db���q�i1L�b���������cWb�xvM����c�j�d|���� ���������������Q�d����kXgC����g4Lxv`�������������g4lidd�����e�OT�s��l����`�N`�d����c����h����������������c��������c�d$�lc��v�az�	�
p�dcW`����
���c����L�dL`�aziM��Lc�b�L����g4dLak��p����gCazgQazj�`��!�P�"�)�#�&�$�%LL�`�d�'�(|b�Nl�*�@�+�?L��,�-�6�.~~�/~�0�1~�2~~�3�4~~�5�|~~�7~�8�9~�:~~�;�<~~�=~�>~�|lHG�A�Ed�B�C�DQ�d��ak�FL~�G�H~~�I�J~�K~~�L�M~~�N~�O�|~�Q�V�R�U�S�TnWc�g4LLb��W�\�X�YML�ZN�[���m�]�^b�M�_LwUaz�a�L�b���cŃ�d�r�e�k�f�h�gLML�i�j`�akd{iM�l�o�m�ndg4c�L�p�qL�`�Lb��s�|�t�w�u�vMdg4N�x�{M�yiM�ziMt�xvd{�}ŀ�~�c�y7lliŁłc�p�M�NńŤŅŎņʼnŇňL�NLdŊōŋdŌrX�rXxvL�ŏŔŐœőŒ�{akMdlLŕřŖc�ŗŘtkak`�akŚ|�LśLŜŝLLŞşLLŠšLŢLţL��LťŽŦůŧūŨxvũŪku`�NL�ŬliŭŮiML�dg4ŰŷűŴŲų��^CԦN+ŵŶN+Q�d�[ŸźŹd��dŻżl����dž��ſ�Lb��L���d��o�d��d����dd��d����dd���d����cWNb�N��������������������������xgQ�פ������azlVp��d����kuL�L�b�����g4b���N��s�p����������b�L�������b�b���b���b���b�����b�b�����b���b�b�@X/����N����p�`�L�b�����ML�Ng4�`�M�m�������c���b�`��d{`���`�aNML����	�
�
b���g	�yc��=b����M�ddl���rft��Mw�wub��0��!����ML�b��M�g�M�� LliLak�"�-�#�'�$c��%�&��g&,L���(d�)���*��+x�,���.�/Mb�b��,�1�C�2�5�3�4cWm�`�cW�6�7Nc��8g_�9�:NOc�;N�<NN�=N�>N�?N�@�ANN�BN^C�D�G�E�FLc�c�`��H�Kc��IM�J��g�g4l�MƤ�N�x�O�b�P�Y�Q�T�R�Sdc�L�b��U�X�Vd]pz�Wi,Lc��Z�_�[�^�\aky7�]l�y7Nli�`�aNc�N�d�c�m�d�j�e�ig&�f�g�hgQgCgCazdcW�k�lM�b�Mc��n�q�o�pdL��%w��r�td�s�bcW�ud�v�w`�n�l�xv�yƋ�zƁ�{�~�|�}aNM�Mg4�ƀL�McWLƂƈƃƇLƄƅƆi�iMiMc�`�NƉƊ�,w�lb�ƌƝƍƚƎƙd{ƏƐ}�Ƒ}�}�ƒƓ}�Ɣ}�ƕ}�}�Ɩ}�ƗƘ}�}��b�LƛƜL�b�t�c�ƞơƟƠcW`�g4c�Ƣƣ@&dj��,ƥ��ƦƽƧƴƨƮƩƭMƪƫƬdlԈ}�d{Mc�Ưưg_LdƱƲƳL�`�M4PƵƸƶƷp�Q�c�b�ƹƼd{ƺdƻBfm�ak`�ƾ��ƿ����dhLЛ����dL�iMc�������������li��`�פg���M�;LM������xv����q�dm�b���������M�;M�~����L\�`��T������������������rX�Z��b�d��aN����t�d`�L�����c�L��aN������m�[���������Mb�Q�c�������Mb���x�y`�d�������M���d{}�}�d{Lz���iMakL�y7����l��M��NN^C��xvp�dc��ɱ�	�f�
ǫ�ǐ�ǁ�
�q��S��:���O���_���_����_p�_��_��_�!����1��6��O��1��*�O� �O�!�"�^�#�O�$�O�%�O�&�O�'�O�(�O�)�O2&�O�+�.�,�-2&.	�^�O�/�0�^�O�^�O�2�O�3�O�4�5.	�^.)2&�7�8�/�_�_�9�_-��;�p�<�=�Oa�>�?k�@`��A�D�B�C`�i�`�i��E�F`�i�`��G`��H�I`��J`�`��K�L`�`��M`��Ne�`��!�P�!�Q�R��-��T�1�U�W�V���_��X�Y�n�Z�m�[߫�\�d�]߫�^߫�_߫�`߫�a߫�b߫�c߫�߫�e߫߫�f�g߫�h߫߫�i�j߫�k߫߫�l߫���_�_�o�p�_�_Q�r�t�sQ2TQ�uǀ�_�v�w�|�_�x�y�_�z�{�_.h.h�_�_�}�~�_.h��_.h
�ǂDžǃDŽ�!�_Q�_dž�O
LJLjǏlj

NJNjǎnj��Ǎ����p�OǑǪǒǥǓǤǔQǕǡǖǜǗ�ǘ�Ǚ��ǚǛ���ǝǞa��ǟaǠa�Ǣǣ�_�1��_Q�_ǦǩQǧ�Ǩ�O�.��2T�_Ǭ�1ǭ�0Ǯ�.ǯ�ǰ�-DZ�#Dz�dz�Ǵ�ǵ��Ƕ��Ƿ��Ǹ��ǹ��ǺǾ��ǻǼ��ǽ���\��ǿ�����������\�����������������������������\�����������������\�����������\�������\���������������������\�����������\���������������������������\������������������������������������������������\�����������������������������\������������������������\������������\�������������	�����
�������
������������\���������������������������\���������������_�� �!�_�@Q�"Q��$Q��%�&�*�'�(�_Q�_�)A��+��_�,��_�Q߫�/�Q�O
�2�F�3�E�4�A�5�O�6�O�7�:��8�9�O
���;�<�>�=.��_�����?���@�a�B�C�_��O�D�OQQ�_�O�G�H�_�I�L�1�J�O�K�_p�M�]�N�Z�O�W�_�P�Q�U�R�_�_�S�_�T2d�_�V�_�_2d�X�_�_�Y.h�_�_�[�_�\�_.h�^�_�_�c�`�_�a�b�_.h.h�_�d�e.h�_�_.h�g�	�hȯ�_�i�jȈ�O�k�l�~�m�1�n�sQ�o�p�r�_�q�_�1߫�_�t�u�_�O�v�{�w�y�x�_
��zkQ��|�_�}�_�_��1�Ȁ�@�@ȁȂȇ�@ȃ�@Ȅ�@ȅ�@Ȇ��@��@ȉȊ�_�OȋȌQ�_ȍȝȎȒ�_ȏ�_Ȑ�_ȑ�_.hȓȘȔȖ�_ȕ�_.hȗ�_.h�_ș�_Ț�_�_țȜ�_.h�_Ȟ��Oȟ�OȠȡȭȢ����ȣ��Ȥ��ȥȦ����ȧȨ����ȩȪ����ȫ��Ȭ�N��Ȯ�_�O߫ȰȳȱȲ�
�OQȴ��ȵ��ȶȹ�ȷ�ȸ��_�ȺȻ1ȼ��Ƚ��Ⱦ��ȿ�������������� �����Q�O߫�O���������������_���_�����_���_.h�_�����������_�_���_.h���_���_�_.h���_�_�����_.h�_�_���_�����_�_�����_���_�_.h�_�O
����������
߫����������Q��Q��Q�_����Q�_Q�����@�_����/��_����_���az�az�b�waz�az�b�az���O�kQk�k�k�!�_��_��_�2d�_�
�B��*���
����������������������O���"����������!�� ��1�?��-d��#��$��%�&�)��'��(�_p.���+�9�,��-���.�/�4��0�1���2��3����5�6���7�8�Q��:���;��<�=��>���?��@�A����C�U��D�E��F��G�O��H��I��J��K�L��M���N�@��P�Q���R��S��T-d���V�W���X�Y���Z�[��\���]��^�_��`ɓ�a�v�b�n�c�k�d�g�_�e�f�_.��_�h�j�_�i.��_.��_�l�_�_�m�_�z�_�o�p�_�q�r�_�z�_�s�t�_�_�u.9�_�wɋ�xɁ�y�|�z.9.9�{.9�_�}��~.9�_.9ɀ.9�_.9ɂɉɃɄ���_��Ʌ�_ɆɇɈ�_���_��Ɋ������Ɍ�_ɍɐ��Ɏɏ�����_ɑ�_ɒ�����_ɔɜɕ�_ɖəɗ�_�_ɘ�_�\ɚ�_ɛ�_���_ɝɤɞɠɟ�_�_�zɡ�_�_ɢ�_ɣ�_��ɥɨɦ���_ɧ�_��ɩɫɪ���z��ɬɭ���zɮɯ���_ɰ�����_ɲ�fɳ�ɴɿɵ�ɶ�ɷ�ɸ�ɹ�ɺ�ɻ��ɼɽ��ɾ�_�������������������������������������������������������������������������������������Q�_���������������a��������������������������������������������������������_���������_����������������1��A�����������������	���
�����
�������-d�����������������O�������-������� ���!�"��#��$���%��&�'��(��)��*��+��,�@��.�:��/�0�4��1�2��3����5��6��7��8���9�Q�;��<��=���>��?�@����B�\�C���D��E�F�V��G��H�I�Q�J�N�K�MQ�L�_�p��O�P���_��R�T��S���U��_��W��X��Y���Z�[��Q��]�^��_��`���a�b���c�d���e���g�q��h��i�j�k����l��m��n�o���p����r��s��t�uʝ��v��w�xʛ�y��z��{ʕ�|�}��N�~ʆ��^ʀ�^ʁ�^ʂ�^�^ʃ�^ʄ�^ʅ�n�^ʇ�~ʈʍʉ�ʊ��ʋʌ��~��ʎʏ�ʐ��ʑ�ʒʓ��ʔ�~�ʖ�ʗʘ.IƎʙʚƞƭƼ�ʜ����ʞ��ʠ�Fʡ�yʢάʣ�^ʤ�	ʥ��ʦ`�ʧ��ʨ��ʩdʪʼʫʻʬʹʭb�ʮb�ʯb�ʰb�ʱb�ʲb�ʳb�ʴb�ʵb�ʶb�ʷb�ʸb��Yb�ʺl�c�b�d{K�ʽʾkub�b�ʿ`���������iM�K���K�KiMiM���������K�K���K�����K���K�K�����K�K��iM�K�KiM{
c�����t�g_��L�q~��q~��q~��q~����q~��q~��q~q~<�������g4b�����b���b�b�����b���b���b���b���b�b�����b���b�b�����b�b�����b�b���b�x����l����ll�l��=l�MM�M�M��MM��M�M�M�MM��M�MM�M�M�M��OM�
�\�����
�b�c����dN"Eb���b�b��b���b�b�p���q~tyc�M��U��)�c�d�d�� dd�!d�"�#�'�$�&�%d�Zdd�Z�(d�Zd�*b��+�;�,�2�-d]h4�.h4�/�0d]�1d]d]x��3�6x��4�5d]�~d]d]�7h4�8x��9�:d]x�d]�<�M�=�?d]�>�~h4�@�Ad]݋�Bd]d]�C�Dd]d]�Ed]�Fd]�G�Hd]d]�I�Jd]d]�Kd]�Ld]�~d]�Nd]�Od]�P�Q�S�Rd]d]h4�Td]d]x��V�[�Wg4�Xq~�Y�Z|�b�g_b�dc�t��]c�cW�_�o�`̉�a��b���c���d˖�e�y�f�n�g�k�h�jp��i���	dn��l�mMdNd�o�u�p�qMg_�r`��sc�c��tc�g��v�xL�w��n�b�`��zˎ�{ˈ�|ˇb��}�~˄b��ˀMNˁ˂N˃NOEN˅ˆ�߫`�azb�aNˉˍˊb�ˋb�b�ˌ��b��Mˏ˓ːˑd`�˒b�`�g4˔˕i�g_L�d˗˧˘ˠ˙˝˚˛`�b�˜z���L˞˟Mc�b�Mˡˤˢˣ3�g4`�L˥˦Mb�o�L�˨˽˩ˬ˪˫b�p�dM�˭˴ˮL�˯˲˰˱d{d��i�˳MML�M˵�X˶�X˷˸�!˹˺�!�˻˼�X�m�˾�˿�Ndb�g_����Nb�b�M��p���z�������������l�g_N����{
����d{�}������b�d����M�y7L�M���M��M��M��MM����M��M��MM����M��M��MM��@M���H��li������������b���b��������ײ��
w���d����d��dd��d����dd�d�d�d�d�d��d���dd�d�d�d��dd��dd�d��d�dd�	d�
d��d�
dd�d�d��b�H:b���b���b��b�b�Mb�c��L��a��^��]b����1��%� �#N�!N�"N��Oc�$b�Oc�&�+�'�)N�(N�MN;�*N;Q��,�/�-�.�Q�[�N�0P}Q��2�R�3�K�4�7�5�6b�Q�NQ��8�JN�9^C�:�;�A^C�<^C�=�>�?^CZ��@^CZ�^C^C�B�C^C�D�G�E��F�^C���H�I^C�^CY���L�P�M�Np�p��Ob�b�p�b��Q�>x��S�Z�T�W�U�V~��9R�OE�X�Yb�b�[�P}�[�\N;P���N�_�`L�db�t��b̆�c�ddM�e�{�f�p�g�l�h�k�iն�j�l��g&��l�m�nl�ol�l�q�tl�r�sl�l�u�xl�v�w�����l�yl�zg&l�|́l�}�~l�l̀����g&l̂̃l�̄̅llg&̇̈b�iMxvb�̊̋tyLŇ̍�
̎��̏�̡̞̖̐̑̒̓xv̔@@̕@|�m�̛̗̘̙̚b�ML�l̜̝>�Mj�g4̟̠dxvcWṆ̢̼̽L�̤m�̥m�̧̦m�m�̨̩̰m�̪m�̫m�̬m�̭̮̯m�Wpm�Wp̱m�̲m�̴̶̳̹m�̵Wpm�̷̸Wpm�m�Wp̺m�̻m�m�WpnWM̾̿xvb�d�azL������������dMcWN����l�M�b�`���������b�dj*b�����cWMb�����az������gC������RT�gC�������gC��"�������������b�i���������q�q�dd��dq���b���L�L��LL�����������Lb�Ng_j*����g_b���{
���������mxvL�d{�d{NL������b�������liig���M�c�L��azg_��c�d]MnW����
�q~ty�	ty|�b�dty�b�g4��1��������L�LMd��b�Mb�L����p�M�b�`�az��dMd`�� �*�!�$�"�#Mq~`�kub��%cW�&N�'�(�)iMcW`�L��+�.�,�-`�L�b�nW�/�0b�xvMd�2�P�3�;�4�6d�5`�c��7�8M�M�9xvN�:NW��<�M�=�E�>`��?�B�@�AL�;p�li�C�DnWn�drXM�F�G�J�H�I�,iMazM�K�L{�L{}4��N�ONb�Lxv�Q�i�R�f�S�TMN�Uv��V�d�Wg_�X�^�Y�\�Z�[wUb�gQw�wU�]kXv��_�b�`�awUb�gQw�wU�ckXv����exv���g�ht�N{
b��j�lM�kl�L�m�nM�dnWLd�p�q�
�r͐�s�z�t�w�u�vc�j�m�b��x�yb�nWb����{͉�|̈́b��}c��~�̓̀́�v�͂wazwML�aN͆ͅM�͇b�͈b�b�b�͊͏d]͍͋͌��"͎���"d{h͑��͒ͻ͓ͺ͔xv͕͖͚͙ͦ͗͘͞����ڈ`�͛͜͝�dd�ͥ͟͢͠͡g4azwUͣͤ�mq���q�q�`�ͧʹͨͮͩͫ`�ͪc�aNͬͭi�c�c�aNͯͱͰdc�MͲͳ~�NMd͵͸Ͷͷg4daz~͹`�`�_�b��xͼͽp�t�c�;Ϳ�����Ug4����g4����g4g4=��Ug4�U�������Ug4�Ug4��������g_iMdg4����c�����������������c�e�`�Lb�����nWdr,d��������xv��g���Mq�Lc�������azi�e���b���yb�p���F����l�����l�������{�����{�{�����{���{���{�{�����{�{�d��d�d�dd��dd��dd#����dM�eMնl��	�l���l��lc�g&l�
ll����lg&��Y��8��(����j���b���NU\U\NaN{
��`�M��b�xv��xv�xv�xvxv� �!xvxv�"xv�#�$xv�%xv�&xvxv�'��xv�)�5�*�4c��+�,�/�-m�d�.dm��0�1m�q�m��2�3m�q�m�M�iM�6�7iMj�j*L��9�L�:�I�;�<c�M�=iM�>�D�?�AOc�@N;NN�BN�CQ�N�EN�F�GVpOcN�HN�g�J�KM�b�xvb��M�V�N�Op�b�L��Pj��Qj��Rj��S�T�Uj�4��$j��W�Xj*rfc�b��ZΈ�[�i�\�a�]�`c��^b��_b�xvakb��b�cnWc����d�e�g�fkub�b��hb�b�ku�j΄�k�l�,c��m`��O�n�O�o�p�|�q�x�r�uM�s�t�oM�oM�v�w�4M�4�yMM�z�{��M��M�}�~΁M�΀y�My�M΂΃dMd΅·c�Άc���tyc�ΉΝΊΚ΋ΓΌb�΍ΐΎakΏakakYakΑakΒakYΔNM�ΕM�ΖΗΘ�M�M�Ι�0M�ΛΜLdnWM�ΞΡΟΠc�kuM��΢Σq~Lp�Τb�ΥΦΩb�Χb�Ψ[ml�b�ΪΫb�Lb�έѥή�Nί�2ΰ�α�β��γ��δc�b�εζb�b�ηθb�ιb�b�κb�λμ��b�νξb�οb��b����b�b�b���b�b���b�b���b���b�b��,j*���L������������������������������������������������������������������������>�����������������������k��������������q����M�����������������������������������������������������v����v������xv���������������������������������q�`�A���	�
t�c�w�b���
b�xvz�az��+����d�iM�iMdc��x��*�`�q���q���&�q�d�q��q���q�� q�q��!q��"q��#q��$�%q�q��'q��(q��)q�dq�t�w��,�/�-�.tyz�i�L��0�1Nq~q~b��3�G�4�5dc��6M��7M�M��8�9M�M��:M��;�<M�M��=�>M��?M��@M��AM��BM�M��CM��DM��EM��F@M��H�I`�cWq~�JiM�KiM�LiM�MiMn��O�"�P���Q�T�R�Sw�K�b�d{�U��V�t�W�h�XM�YM�Z�a�[M�\M�]M�^MM�_M�`*��OM�bM�cM�d�eMM�fM�g�;M�i�m�jb��k�l`�b�c�h�n�q�o�pLt�b��b�r�sMdc�N�u�M�v��w���xϞ�yϗ�zτL��{�|L�L��}�~L��L�πL�ρL�L�ςσL�L��υL�L�φχL�L�ψωϒϊώϋL�L�όύL��L�L�ϏL�ϐL�ϑ�L�ϓL�ϔL�ϕL�L�ϖL��ϘL�L�ϙϚL�ϛL�L�ϜϝL�iL�ϟ��ϠϻϡϲϢϪL�ϣL�ϤL�ϥL�ϦϧL�ϨL�L�ϩL��L�ϫϬL�ϭL�L�ϮL�ϯL�ϰϱL�L��L�ϳL�ϴϵL�϶L�ϷL�ϸL�ϹL�L�ϺL��ϼL�ϽL�ϾL�L�Ͽ�L��L���L���L�L���L����L�����L�����L���L�L���L�����L�L�����L��L�������L�L�����L�L�����L�L�����L�L��L���L���L�����L���L���L�L���c^L�������L�L�����L�L���L�����L�L���L���L�����L�L����L�L���L���L�����L���L�����L�L����%���L�L���L��L�L���L�L��L��L��L�i����L��L����L���	L�L��
L��L�i�
L�L��L��L���L�L���L�L���L����i�iL�i��L�i�L�L�iL���� L���!L�L��"�#L�L��$L�iL��&�'�<�(�.�)L��*L�L��+�,L�L��-L���/�5L��0L��1L��2L��3L��4L���6L�L��7�8L�L��9L��:L��;�L��=�E�>L��?L��@L��AL��BL�L��C�DL�L��L��F�GL�L��H�IL�L��J�KL�L��L�L��NХ�OЊ�P�m��Q�RL��S�\L��T�UL��VL�L��W�XL�L��YL��Z�[L��L��]�eL��^L��_�`L��aL�L��b�cL��dL��L�L��f�gL�L��h�iL�L��jL��k�lL�L���nЀ�o�{�pL�L��q�r�vL��s�tL��uL��L��wL��xL��yL�L��z�L��|L�L��}�~i�L�L�iL�ЁЂL�L�ЃL�ЄЅL�L�ІЇL�L�ЈL�ЉL��ЋЗL�ЌL�ЍЎL�L�ЏАL�iБiВГiДiiЕiЖ�iИL�ЙПL�КL�ЛL�МНL�ОL��L�РL�СL�ТL�УL�ФL�L��+ЦгЧL�L�ШЩL�ЪL�ЫL�ЬL�L�ЭL�ЮЯL�аL�бL�вL�L��:L�дL�еL�жL�зL�ийL�кL�лL�L�мнL�оL�L�пiL��j�����gQ����gQgQ��gQ��gQ����gQ��gQgQ����gQgQ��gQ����gQ��gQgQ��gQ������������gCgQ��gCgQ��t�b�gC��t���t�����b�t�gQt���������b�j*b�L���!��l�����X���X���bd������Mi�M����������������g4x�g4�������L��g4�����������Mn������������m������3����g4��i7�����+��m,g4�	�
g4�g4�g4�
g4g4�g4�g4�g4c��g4����+�#��g4����m,g4��������+�+m�� �m_N�dxv�#�4aN�$�%aN�&aN�'aNaN�(aN�)�*aN�+aN�,aNaN�-�.aN�/aNaN�0�1aNaN�2�3aNaN�C�5�6cWb�g_�7�8�Z�9�R�:�J�;d{�<�B�=�A�>�@�y�?�y�j�jd{d{���C�F\9�D�E�.\9�.�G�H�.���I��Ld{�K�L�O�M�N��j�,cW�P�QNb�,L�S�Tb�d{�Ud{b��Vb��Wb��Xb��Yb�b��[ђ�\т�]�~b��^�_�j�`b�b��ab��b�cb�b��db��eb��fb��gb��h�ib�b�b�b��kb��l�mb�b��n�o�xb��pb��q�r�u�sb��tb�b�b�b��v�wb�b�b��yb��zb��{b�b��|b��}b�b�d{�рсNb�`�Mуфd{b�хb�цычщш}�d{}�}�ъ��}�ьяэюd{�}�d{ѐё�y}�}�d{ѓўєќѕјі��їMdxvљMњd{d{ћd{`�b�ѝiMb�џѢѠѡb�c�`�c�ѣѤ`�d{b�lѦӲѧ��Ѩѻѩn�ѪdѫddѬdѭdѮdѯdѰdѱdѲdѳdѴѵddѶѷddѸdѹѺdd@NѼNѽNѾѿN�NN�N��N��N��N����NN��N��N��Q�N��ӱ���i���"���������������L��������L`���c�`�L��Ll������L����d]��Mdg_Q���iMg�MiM����������`�������Ll����i�`�������azM`�L��`�`�����dnazdn�����iM��iM���l�`��ldl�E��ը�iM����`���CL�iM`�iM���c�L���M������	iM�iMN�
�iM`����
��LiM���d����iM���8��2�iM��8�8�:m��AeiM�EAe�ЌiM��`�K�� �!llN�#�H�$�9�%�3d�&�'d�(d�)d�*dd�+�,d�-dd�.�/dd�0d�1�2ddb��4iMiM�5iM�6l�7�8azg_aziM�:�;�>iM�<M�=Lc��?�Dl�@iM�A�B�CgCll`�`��E`��Fl�GgC,�I�R�JiM�KiMiM�Lc��M�N�Qaz�O�Pl)�iLl�S�\iM�T�UiM�V�YM�Wl�Xl���ZN�[g_A`�iM�]�^�e�_�`lL�a�cl�bazll�dlLM��f�gaz�hkX`�M�j���kҦ�lҌ�m��n�x�o�s�p`�`��q�rq�Yd�t`�L�u�v�wg_LiML�yiM�z`��{�|LM�}�~Llaz�hiMҀҁ҆҂҃iMlaz҄M�҅lil҇҈Ng_҉ҋҊMaz&�hlҍҚҎiMҏғҐazlґNҒlVpiMҔҕҘҖҗl`�M�VҙW�lNқҝҜiMliMiMҞiMҟҠңҡҢlMle�ҤҥlLMlҧ��Ҩ��ҩҿҪҮҫLҬLҭl��dүҴҰҲұl`�llҳlazL�ҵҶL�ҷL�L�ҸL�ҹL�ҺL�һL�ҼL�ҽҾL��IL�����`���`�l��u�d��L���`�l��dl��iMiM����NL��MN����������iM����cWlM�������L��L�`�iM��������iM������l��Q�N��Mcfl����iM����M��d��`�����`�l��L)�������N����`���xvg4l��g���`�����LOTlgQ���e���:�������M`�iMc�������L���������L��+������ߜ�����I��	�
��:xilN�
lM`���lNL��`���LlM�(��!Ez����iM�`�Maz���llgC�� lmg�~�"�3�#�$iML��%�0�&�/�'l�(l�)l�*ll�+�,ll�-�.lll#�`��1�2j�j*MlL�4�5�7iM�6z�l�8�9l�Xlt��;�O�<iM�=�Dli�>�?�A`��@`��[�B�Cwllg&�E�H`��FL�Gd�=�I�L�J�K�gllw�M�Nl�v��ty�P�\�Q�X�R`��S�V�T�Utyw+Tll�W`�l�YiM�Z�[NlLl�]�c�^�a�_`�L�`ld�bB��h�8�dlLl�fӜ�gӁ�h�v�i�p�j�o�k�m�lllA�n`�lliLaz�q�s�r`�MxviM�tM�u{
dž�wӀ�x��y�|�z�{e�K�r&K��}�~@�lMll`�lLӂӗӃӋӄӈӅlӆӇc�`�YNӉӊlMazlӌӓӍӐӎӏy���`���ӑӒL�_��oYiMӔӕӖcfl`�g&ӘӚәL_]K�lӛӛӹӝӟӞiMiMliMӠӡӪӢӧLӣӤӥ{
NӦL��g_Ө`�lөlǖӫӮiMӬlӭl`�ӯ`�Ӱl`�Y`�Mӳ�Ӵ��ӵ��Ӷ��ӷӸL�t�ӹK�Ӻb�ӻ��Ӽ�b�ӽb�Ӿb�ӿyb�b��b���b���b�~�b���b���b�����b�yb�����b�gQ��������b���b���b���Q�b�����b�����b�b�N��b�b�����b�b���Q�Oc����LM������������j*ǤcWN����q~K�Ml���������aN`�iMw�����d{n�L�d{b��������H`�p�������F�d{��d{L��cW��N�L�d�dm���+����b���N��/����
��	���L��llxv��lDz��lNlOT�
N�l�M�c�l����`�L��~�`�L`��c�l���Naz�ML�M��M�M�Ќ��'��#l� �!�"NiNM�$l�%�&VpNOTOE�(�,�)m��*�+lߍlaz�-M��.nW{
l�0�2�1MLM��3�E�4�:�5�8L�6�7liMM�9L{
l�;�B�<�@�=�>ln�l�?<�,�AkXiMl�C�D���lM��F�M�G�JQ��H`��I��
�KL��LAlliM�OԈ�P�k�Q�a�R�[�S�V�T�Uazl`�l�W�Xdl�Y�ZMlMaz�\�_�]M�^ll�(�`u�u�=��b�f�cMl�dl�elcfl�g�h�jgC�ilgCײE�l�}�m�u�n�t�o�q�pllL�r�s�lc�ll��vl�w�z�x�y��c�����{�|`�ln�N�~ԃL�ԀԁlMlԂ�llԄԅԇԆc��lg4lԉԥԊԙԋԏlԌԍԎ`�l`�lԐԓԑNMԒmMԔԗԕԖl`�`�lMԘlQ�M�ԚԛԡԜԟԝԞ��#���g&lԠ�VlԢԤlԣ`�!Tl`�ԦԾԧԫԨazԩԪazllM�ԬԱԭԯlԮlMl԰NlԲԳku�ԴԵEb�lԶԷgCԸgCԹgCԺgCԻgCԼgCgCԽazgClԿ������l�l��q�N��l����Q�azy(`�������d��b���������b�`�b�xv����aNL����������d��azv�az��L�d����d��dd����dd����d��d��dd�������������`���c�ku����c�=^Cj*��������Ns8dN��Q��IQ����������d����{
{
��{
{
��{
{
�{
�{
�{
��{
�{
{
�{
@��xv��c�b�M���b��b�ku�ku�	ku�
ku�kuku�ku�
ku��kuku��ku�kuku���$��w�b��d{rf�rf�rf��rf�rf�rf�rfrf�� rfrf�!�"rfrf�#Prf�%�*�&�(�'LlL�)kulLkul�,�-t�ty�.�B�/�0c��,�1���2�9�3iM�4~�5�8�6�7�Ae
��AeB�iM�:�;�=��<�Ae�>�@���?�~�AAe
�~�C�Db�akb��E�F�k�G�`�H�N�I{
�J�L{
�K{
�y�M{
�y{
�O{
�P{
�Q�_�R{
�S{
�T{
�U�Z�V{
{
�W�X{
{
�Y_l{
�[{
{
�\{
�]�^{
{
_l�H{
�a�g{
�b�c�e�d{
{
�H�f{
{
�H{
�h�i{
�j{
�H{
�l�t{
�m�n�q{
�o�p{
Z7{
{
�r�s{
{
�H�u{
�v{
�w{
�x{
�H{
�z��{ռ�|Ւ�}Ջ�~Ճ��Հ��Ձ�Ղ�GtՄ�Յ�Ն�Շ��Ո�Չ�Պ�_��Ռ�ՍՎ�Տ�Ր��Ց��F�ՓիՔ՝�ՕՖ�՗��՘�ՙ�՚�՛՜����՞՟��ՠ�աբզ�գ�դե��_��է�ըթ�ժ��*�լ�խ��ծկշ�հ�ձղ��ճմ�յ��Oն�O��ոչ��պջ���ս���վտ���������������������������������@�����������������.�.����������������������O��������������������������������������_��������������������������������������������������������@���������������X��������X��X��X��X�	�
�X��X�X��
�������������Q�������������Q��������
� �6�!���"�#��$���%��&��'��(��)�*��+���,�-���.�/��0���1��2�3���4�5����7��8���9�:��;���<��=��>�?�B�@��A����C�D����E���Gݳ�H���I��J�Q�K�K�L���M�r�N�[�O�X�P�R�O�Q�1�_�S�T2T�_�@�U�V�W��_�Op�Y�O�_�Z�^�_�\�l�]�a�_�^�_�_��`�_Q�b�h�ck�d�/�e�/�f�/�g�/k�>�i�k�!�j�O�߫�_�_�m�n�O�_�o�p�q�QQp�s֬�t֝�u֜�v֘�w֊�xք�y�@�z�@�{�@�|�@�@�}�~�@��@�@ր�@ց�@ւ�@փ�M�@�Mօֆֈ�@և�M�@�@։�@�M֋֗�M֌�M֍�M֎�M֏֐�M֑�M֒�M�M֓֔�M֕�M֖�M�@�M�@�M֛֙��֚Q�Q�_kQ֦֞֟֠�_Q֡a֢a֣a֤a֥aa�<֧֨��_֩߫�O֪֫�_��ֲַ֭֮
֯�1ְ�_ֱ�_Qֳִ�1�Oֵֶa�_.��_ָ���_ֹֺ�Oֻ�Oּֽֿ�O־�O�O.)����O��O.)���O���O���O�O�����O�O���O���^�O�����O������_����������������Q��������_��Q�_�1�_���O������������

����_�O���������_��������߫��߫��߫߫��߫����߫߫��߫��߫��߫����߫��߫�Q�����������_��������������O
�����������_p�_�_����_�a����	��
���\��%�
�������_����������������_�_.9�1����"�O���Q��O�_�O� �!k�_QQ�#�$�_�O�_�&�C�'�=�(p�)�:�*�6�+�@�,�@�-�@�@�.�/�@�0�@�@�1�2�@�@�3�4�@�@�5�@�l�7.9�8.9�k�9�k.9�;Q�<�_�_߫�>�B�?�_�@�@�_�A��_߫�O�D�H�E�F�O��G�a�_�I�_�J
��1�L�O�_�MQ�NQ�!�O�P�O�_�R�U�S�T߫
�Q�V�x�_�W�X�w�Y�k�Z�h�[�^�O�\�_�]p�_�_�`��_
�a�b���c�d�|��e�f���g���!�i�j�1��_�l�v�m�u��n�oaȋ�p�q�s�rȋȋ�ȋ�tȋ�a��aQ�_�yׁ�z.��@�{�|׀�}���~߫�����_ׂ�׃עׄסׅט׆�Oׇ׍׈׋׉�O׊�O�O26׌2626�O׎ג׏בא26Ț26�O26דו�Oה�O�^זח�O26�^�Oי�Oך�Oכ�Oל�Oם�O�Oמן�O�Oנ��O.�Oף��פ��ץ�צײקׯ�Oרש�Oתȩ׫�O׬�O�O׭׮�O�Oȸװ�Oױ�Oȩ�O׳׾״�O׵�O�O׶�O׷�O׸׹�O׺�O׻�O׼�O�O׽.	�O׿�O��O-��O�������O��������Ț������������-���.	������������-�.	ȩ�^����.�O��������.)�Oȩ�O���O26�O�����O��������������-���26��������2626��ȩ�O����ȩ��������-���26�����O���������O���O���O2&�O���O�O�����O.�O���O����O��O�.�O����O.�O���O��O.��O.�O���ؚ���
��O��O2T�O��'��&�	��
����1Q��
.������������a�@����������������_��_�O����� �"��!���#�%�!�$a�-�Q�O��(�\�)�Ek�*�+�8�,��-�2��.��/��0�1
�
�3��4�7�5�1�6��@�Q��9�@�:�=�;��<����>���?��_��A�B���C��D�_��FQ�G�O�H�O�I�O�O�J�O�K�O�L�O�M�N�O�O�O�O�P�Q�O�R�V�O�S�O�T�U�^�O�^�W�Z�O�X�Y�^�^�O�O�[�^�O�]ؕ�^�i�_�ba�`a�a�_�1�c�haz�d�eazaz�fg��gg�M�F�Gt�j؍�k�s.��l�m�_�n�r��o�p�q���������_
�t.��u؀�v�}�w�z�x�y���.��{�|�.���.��~���.�؁؆؂؄؃� �/�؅��.�؇؊؈؉.��=.��L؋،.��\.��k؎ؓ�O؏�ؐؑؒ�!��!�1�_ؔQ�{ؙؖ�1ؘؗ
��_Q�؛��؜�$؝��؞ح؟أؠ�OQءQآ��_ؤب�_إ�Oئ.�ا���_ةج�Oتثa߫Q�O
خ�1دذQر�gز�Iس��شؽصػ�kضط�_�_ظع�_غ�_���_�_ؼ�_��ؾ���_ؿ�_�����_���_�k��������.���[��������Ɂ���_���_�_�����_�_�����_���_���������_�z�z�������z��.��_�_��������
�����_���������_�_���_���_���_�����������_���_���_���_���_�������_���_�����������������_���_�����_�_������_���������_�������_�����������_���_�_�������_���_���_����_�	�_�_����_��_�
�_��_���_��<��)�� ��_�����_�����_���_�������_���_���_�����_���!�$�_�"�_�#�_�����%�&�_�'���(�����_�*�4�_�+�,�1�-�0�_�.�_�/�_.��_.��2�3�_.��_.��5�_�6�8�7.��_.��9�_�:�_.��;.��_�=�_�_�>�?�_�@�B�A.9�_.9�C�H�D�F.9�E.9�_�_�G�_.9.9�_�J�S�K�M�_�L���_�N�_�O�_�P�_�_�Q�_�R�\�_�T�Y�_�U�V�Xɐ�Wɐɞɐɞ�_�Z�[�_�\�_�]�_�^�c�_�`.9���a�b���_�_.��d�_�e�_�z�f���_�h٥�i�_�j�_�kّ�l�~�m�_�n�z�o�s�_�p�_�q�_�r�_�z�t�w�u�v�_�z�_�z�x�y�_�z�_�z�{�_�|�_�}�_�_�z��_�_ـفنق�_كل�_�z�zم�z�_هَوًىي�z�_�_�zٌٍ�z�_�_�zُ�_ِ�_�z�_�_ْ�_ٓ�_ٕٖٔٛ٘�_ٗ�_.9ٙٚ�_.9�_.9ٜ١ٝٞ�_.9�_ٟ٠.9�_.9٢�_�_٣٤�_.9�_٦�_٧�_٨ٶ�_٩�_٪٫ٲ�_٬�_٭ٮٱ�_ٯٰ.9�_.9�_.9ٳ�_ٴ�_ٵ�_�_.9�_ٷٸ�_ٹټ�_ٺٻ�_�_���_ٽپٿ�����z�_��O�������a��a����������_��������A��Ar,Qp2T������_�@Q��������������������ɬ�������߫�/����������r,|����az��v�az����gCwazv�A�O������O�OQ���������
�_���_���_
������_��ɻ��ɻɻ��ɻ��ɻ���ɻ�ɻ�ɻɻ��ɻɻ�pɻ���O��O���O��O�O���O��O���O.).)�O��O���O�	.	�
��O�O�^�
�O�^�O��_���_����_����� ��1�_������\�\��\���\��\��\�\����\az�!�"�#�!��_��%�o�&�E�'�.�(�-�)�*p�_�_�+�,�@�����!�_�_�/�0�7�1�4a�2�_�3߫���5�_�_�6߫�/�8�=�9�_�:�_�;��<k�/k�>��?�B�_�@�A�_�_.��_�C�_�D�_.9�F�Z�G�O�H�J��I�_��K�M��L�_��_�N�1�_�P�V�_�QQ��RN�S�TP}�UP}NP}�@�W�Xp�Y�߫��[�a�\�^�]p�1�O�_�_��`���b�ha�c�d�f��e��_�g�_Q��i�l��j�k�_��_�m�nQ��_���pښ�q��r�x�s�t2T�_�u��v���w��OQ�y�z�_�{�}�|���_�����~�_�ڀژځڒڂڍڃ��ڄ����څ��چ��ڇ��ڈډ��ڊ��ڋ����ڌ����_ڎڏ�_ڐ�_ڑ�_�_.��ړڔږ�ڕ��_�ڗ��_�Oڙaɻڛڹڜگڝڬڞڪڟ�ڠ�ڡڨڢ�ڣ��ڤ�ڥڦ��ڧ���ک����ګ��1��OڭQڮ�_QڰڲQڱQ�_�ڳڴ�_ڵ�_ڶڷ�_�!ڸ�_��_ں��ڻ�ڼ�_�@ڽ�@ھ�@ڿ�@�������_��
�_���_�������������_���p����������������������_p����5�����������������_�_���_�����_Q2T���������������_����_�������!���k���������
�_2T��!���_�������Q�������_���1�����_��_����_
���1����@�!�_����_����Q������_�Q�߫�߫��߫�	߫�
���߫�
߫�+߫�_��_����!�_
��Q��0��.��_�@�`����$`���`��`��`��`�� `�`��!`��"`��#e�`��%`��&`�`��'�(`��)`��*`�`��+`��,�-`�`�e���/��_�/�1�2�O�3���4��_�6ۿ�7�m�8�R�9�=�:�<��;��_��_�>�A�?�@�O�_Q�_�/�B�C�P�D���E�F�O�O�G�H�^�^�I�^�J�K�^�L�^�M�^�^�N�:�^.)�O�Q
��_Q�S�T�V�O�U�!�_�W�e�X�\�@�Y�@�Z�@�[�@���]�a�^�_�Pk�`�_k�/�b�c�n�}�P�d�/ʌ
�f�g�/�h�j�i�P�P�/�k�l�/�P�/k�n�z�o�q�_�p�_�1�r�w�_�s߫�t�u�v��_�@߫�x�_�_�y�_
�{۲�|۩�}۞�~ۅ�ہۀ�L�ۂۃ���ۄ��ۆaۇkۈ۝ۉےۊێ�Nۋ�Nی�Nۍʛʪۏ�Nې�Nʹۑ����ۓʹ۔ʹەʹۖʹۗʹۘۛۙۚʛ��ʪ��ۜʹʹ������۟�۠ۨۡۦ�ۢ�ۣ�ۤۥ�����ۧ���۪߫ۯ۫�_۬ۮۭ��
��1�_۰�_۱�_�۳۵۴
��_۶۾�۷۸ۼ۹�ۺۻ�a���۽a�߫�_��O��O�������������_��a��Q
�������Aaz���_Q��1�O�����_�����a�_�����_���_�������_�������_�����ܓ���I��������2T������p�O�!�������a�O�������������O���O���O���O���O���O���O���O.	�O�O��������O�O���O���O�O��O��O��O��O.	�O���O�O���O��O��O�O��O��O.	����_��_�_��_�	�
�_�_��_��
�_�_���_��_��_��_��_�_��_���_@�_߫�
��O��@��@��@���E�O�� �6�!�)�"�@�@�#�$�@�@�%�&�@�@�'�(�@�@��@�*�+�@�,�5�-�1�.�@�@�/�@�0��@�@�2�3�@�4�@��@���@��7Q�8�9�O�:�D�;�_�<�@�@�=�>�?���_��A�C�B�_|az�_�O�_��F�O�G���H
Q�J�\�K�NQ�L�M�1Q�O�O�_
�P
�Q�R�[��S�T��U�X�V�WQ���O�Y�Z���1�Qp�]�k�_�^�_�i�`�fp�a�bQ�c���d�e�_v���g�hp�_�a�j�_�O�_�l�_�mܒ�n�v��o�O�p�q�_�r�t�s�O�_��_�u��_�w�_�x�~k�yk�zk�{k�|k�}k�>�܍��܀��܁��܂��܃܄��܅܉��܆��܇��܈���܊��܋��܌�����!܎a܏ܐ��_�_ܑ� �p�ܔ�(ܕܣܖ
�_ܗܘ
ܙܢQܚQܛܜܝ�/Q�_ܞ�ܟ�_ܠܡ�_�_.�A�_ܤ��ܥ��ܦܮܧQQܨQܩܪQQܫܬQܭQ�/Q�_ܯܰܵQܱܲ��_ܳ�_ܴ�_�ܶ�ܷ�ܸܺ�_ܹa�Oܻ�_ܼܾܽANAܿ�AazQ�1�_��p�������!�_Q�������^�>��2E�������������������������������M�����.��Q�����߫���������_���_�����z�������z.���.9.�����.������b�������b���b���_���_���_�b�_���_�_�����_�b�����_�_���_�����b�b�_��Q������b.�.9.�����.��_��_.��_.��.�������k�Ɂ����k���k�������_�	�
��_���_�
�_��_�_.h����_�_��_�.h�_�_���_�_��_.h�_���_�_��_��_���_.h�_�_� �_�!�_�"�#�_�_�$�_�%�&�_�_�'.h�_�)�*�_��+�O�,�_�-�.�O��/�O�0�M�1�?�2�5�O�3�O�4-��O�6�9�7�O�8�O�O�r�:�=�;�<�Oȩȩ�O�>�Oȩ�O�O�@�A�K�B�G�C�E�D�O�Oȩ�O�Fȸ�O�H�O�I�J�O.	.	�O�O�L���O�N�O�Oݏ�P�s�Q�j�O�R�S�O�T�\�U�O�V�O�O�W�X�Z�O�Y�Oȸ�[�Oȸ�O�]�O�^�d�_�O�O�`�a�O�O�b�c�O�Oȸ�e�O�O�f�g�O�O�h�O�i�Oȸ�O�k�O�l�O�m�nȩȩ�o�pȩ�qȩ�rȩȩ-��t�w�u���O�vȩ26�x݅�y�z�O�����{�O�|�}��O�~�O��݀�O݁�O݂�O݃�O�O݄���O݆��݇�O�O݈�O݉݊�O݋�O݌�Oݍ�O�Oݎ���Oݐݛݑݔݒ�O��ݓ���O�Oݕ�Oݖ��ݗݘ�Oݙݚ��.	��Oݜݰݝݮݞݥݟ.	ݠ��ݡ��ˁݢݣ��ݤ��ˁ��ݦ�Oݧ�Oݨ�O�Oݩݪ�O�Oݫݬ�Oݭ�O-��O�Oݯ�Oȸȩݱ�Oݲː�Oݴ� ݵ��ݶ��ݷ��ݸ��ݹݺ��ݻݼ�ݽ��ݾ�ݿ��az���������������������_������������������������������������������������������������������Q������������������������������_��������O�����O�_���_�������O���+�������ހ��O��7��)������i�i��`���`�i������E�`���(`��������	*���
����e��
��e��e�����������!������������������������������ �������"���#�&�$�%�������'�����e�i��*�1�+�.�,�-`�����/�0�e�`�e��2�5�3�4`�e��e��6e��`��8�B�9�?�:�=�;�<e��`�e��>e��e��@e��A`�i���C�H�D�F�Ee�i�e�i��Ge�i��I�L�J�Ke�ri�`��M�Ni�e�e�i��P�f�Q�\�R�W�S�V�T�Ue�i�`�e�i���X�[�Y�Zi��e�˟e���]�c�^�a�_�`e��i�i��bߍi�ߍe��d~V�ei�e��g�v�h�o�i�l�j�ki�e�`���m�n`�e�`�e��p�s�q�ri�e�e�i��t�ue�`�i�t]�w�ze��x`��yi�~V�{�}e��|`�i��~�ߍ`�i�`�ށ��ނޟރޒބދޅވކއi�TFe�މފTe��i�ތޏލގe��i��ސޑi�i��e�ޓޙޔޗޕޖe��e�i�ޘe�e�i�ޚޜe�ޛ�e�ޝޞ�e�#�t]ޠ޻ޡ޵e�ޢޣ޴ޤެi�ޥi�ަާi�ިi�i�ީުi�ޫi���i�ޭe�ޮe�e�ޯްe�ޱe�޲e�e�޳˯e�e�i�޶޹޷޸i��e�i�޺i�Ei�޼�e�޽޾޿��`�e�i��������|Xe�e��i����e�����������������������i�+�����+�+�����+���+���+�+���i�+�e�`�e���e�i�����������i�`�T����+�e�e�`���������i���Ee�e�����������`��e����������������`�e���`�TFe�������e�����������e�`�e�������`�i���e�`�T��_�����O���_
��_�������_��_��1���	���
���������
�����A�����_����������������������1�_�_�!���O� ��!�"�&�#�%�$Q�@߫�1�_�'���(��)��*�-K�,���-�.ߑ�/�a�0�H�1�;�2�7�3�5e��4Ere��6e�+��8e��9�:`���e�`��<�A�=�?�>�e�i�i��@e�i��B�E�C�Di�e�`�`I�F�GTi�e����I�S�J�P�K�Me��Li�e��N�O�����i��Qe��Re���e��T�Z�U�X�V�We�`�e�i��Y`�i�`��[�^�\�]`���`�i��_�`Ee��`��b�x�c�l�d�i�e�g�fi�+�i��h�+�i�i��ji��k�e��m�r�n�pi��o`�i�i��q.i��s�ui��t`�i��v�w`�i�i�i��y߆�z߀�{�}�|i���i��~�i�`�i�`�߁߃߂i�e�i�߄߅i�`�`�+�߇ߍ߈ߋ߉ߊi�`�`�i�i�ߌe�i�ߎߏe�i�ߐi�`Ii�ߒ��ߓߵߔߩߕߣߖߡߗߘ��e�ߙ�e�ߚߛe�ߜe�ߝe�e�ߞߟe�e�ߠ�e�e�ߢi��ߤߦ�ߥi��ߧߨ������ߪ߯߫߭�߬T�߮��e��߲߰e�߱e���߳ߴe�i���e�߶�߷߻߸e�߹ߺe��Ti�߼߿߽߾e�����e�e��e��������������`�e�T`�������`�`�e���e�����~Vr��t]����������������`����re���e�i�������e�e�i���e���i�������~V�����i���������i���������������������������������np����e�rrt]��������e���r��ri���e�e�������e��F`���i�r��e������ri�e��e��r����
��O���O�_����_Q���	��O�����
����������������������O��O���_�1�_��O�_�a��_�Q��Q�!�#�"���O�$�E�%�1�&���'�(��)���*�+���,��-�.���/��0��*�2��3��4���5�6���7�8���9��:��;�<���=�>���?�@���A�B��C���D.���F����G�H��I�h�J�a�K��L��M��N��O��P�W��Q�R��S��T��U��V��-d�X��Y��Z���[�\���]�^���_�`�-d��b�e�c�O��d����f��g��-d�i��j��k�q�l-d�m�1�n��o��p�1�-d�r��s��t�{�u���v�w��x��y��z�-d��|��}��~����������������-d����-d����������O�������������-d�������������������-d����������-d�����������������������������-d��-d�-d-d��-d-d�-d��-d-d�-d��-d�-d�-d-d��-d-d�-d�-d��������������������������������������O����������1������������������-d���������������������-d��������������������-d�-d�-d����-d�����������������������������O�-d��������������������������p����������_������������������	�
������
�������������������������������������� ��!���"�#��-d�%@�&��'���(���)<��*�+�W�,���-��.��/���0�t�1�e�2�F�3|�4�@�5az�6az�7az�8�r�9�?�:@�;@�<@�=@�>@@@@az�Aaz�Baz�Cazaz�Daz�Eazt��G�V�Haz�Iaz�Jaz�Kaz�Laz�Mazaz�Naz�Oaz�P�Qazaz�Raz�Saz�T�Uazwaz�Wazaz�X�Yazaz�Z�[az�\az�]azaz�^az�_az�`az�aaz�baz�caz�d�;az�fazM�g�h�n�iMM�jM�k�lMM�mM�oM�o�pMM�q�rM�sM�M�u��az�v�w��x��y�~az�zaz�{az�|M�}Maz���azaz��azM�az���azaz�M�az��az�azL���azL�L�az��az�az��azaz�E�az�az�az�az��|`��az�azaz��az�azaz��azaz�v�az������az�az�az�L�az�az�az�az|d�az�az�azaz�g4az����az�az�|azaz��az��@&az�azaz��azazw���az�az�az��azM����������az@azaz����azaz����az��az��azaz��az��az���azaz��az��Maz��az����az��az����azaz��az��az��azkX��azaz��az����az��azaz���Baz���$������	������az����az�����E��E��EE��E����E��EE���E�E
wEEazaz�az��az�E�azgCaz�Eaz�E��E����EazazE��EazEaz�
�az�az�az�
�az�az�az�Baz��azm�az�az�az��azv�gCazaz�az��az�azaz��az� �"�!azazm�#azu�az�%��&az�'�V�(�<�)�.�*az�+az�,az�-az|M�/�5az�0�1�3�2azaz|az�4az`��6�9az�7az�8Nazaz�:az�;|az�=�G�>�Caz�?�@�AMaz�BazAe`��Daz�Eaz�Fazazd�H�Q�I�M�Jaz�K�LL�az|Maz�N�O�PazE+�Raz��S�T�U;�Qaz�W�b�X�]�Yaz�Zaz�[az�\azaz|�^�aaz�_az�`az||az�c�p�d�h�eaz�faz`��g`�az�i�laz�jaz�kaz|�maz�n�oazcWcWaz�q�y�r�uaz�saz�tazM�vaz�w�xtyazazM��z�}az�{az�|azcW�~azaz�@azaz����iM�iM�iM�iM�iM�iMiM�iM�iM�iM�8�iMiM��iM�iMiM��iM�iM�iM�iMiM�iM��iMiMr���W��,����az���������az���azazw�v�azaz���v�azgCaz��az����v�azjaz��az����azb����?gC��gC�az�azazv�az�az�az��M�az�azM������������M�����M���M�M�dM�����cWM���M�cW������azcW��cW��cWaz��N����az@&����AeazazN��|��|N������Naz��|az|���������az��az��������az����az�Baz��az��az�Baz��az��az��azaz�������azazv������az��az��azaz�azMaz��az�az�az�Bazaz�����az���az��azgCaz�azb�azaz��az�az�	az�
azaz�az��
azaz��azaz��azb�az�� ��az���az�mazaz�az�M�az���t�azv��azazb��!�%az�"�#azaz�$u�az�&�)az�'az�(az���*az�+azgCaz�-�9�.Maz�/az�0az�1az�2�3�6az�4az�5�az�7azaz�8az�az�:�;�B�<azaz�=�>az�?az�@azaz�Aaz��Cazaz�D�E�Iaz�F�Gaz�Haz�azaz�J�K�Maz�Lazv��Naz�Oaz�Paz�Qaz�Raz�Saz�Tazaz�U�Vaz{�az�X���Y��Z�]�[az�\azaz|�^az�_�~�`�k�a�g�b�daz�cb�azaz�eaz�fgQaz�haz�iazaz�jaz�B�l�zaz�m�n�xaz�o�pazaz�q�raz�saz�taz�uazaz�v�wazt�azaz�yt�az�{az�|az�}az�azaz�az��az�azaz�az��az������az���az��az|azazcW�azcW�cW��cWcWM��az�az���az�az@&��az@&@&az�p����az�az@&az���p�azp�p���p��������az���azp�az�p�azp�az��NazN�dN�N�Nd�����az�azdaz�Ae��az|��|azaz@��az����Ae��Ae��Aety��������AeazM|�����0�-g4�0������������az��������az��az��az����azgCgCazaz��az��AeM��az��az��az��azMaz������������v�v�v���u�wv���az����������jmu���wm����gQm��v����-������	�����az���az�azgQaz�b�az���azaz�azw�azaz�azv���az��az�azaz��az|az�
�az�az��
az|az���az�az�|az|az�az��az��az��"�az��az�az�`��|az�azaz� �!azaz|�#�(�$azaz�%�&azaz�'|az�)az�*|�+azaz�,|az�.�]�/�P�0�A�1�8�2�5az�3az�4|azaz�6az�7daz�9�<az�:az�;b�g_�=�?az�>ML�az�@azM�B�K�C�Faz�D�Eazazm�G�I�Hazg_azaz�Jaz@�L�Maz|az�Naz�OMazaz�Q�R�X�Sazaz�T�U�Waz�V@�daz�Y�Zaz@&@&�[�\az@&az�^�jaz�_�`�d�a�caz�bazNNaz�eaz�f�h�gazaz|�iaz|az�k�y�l�s�m�paz�n�o@&@@&@&�q@&�r@&az�taz�u�waz�vazL��xazazv��z��{az�|�~�}az@az��|azazNaz���az�az|�azL�az�������|���az���������az���az�sGazaz�azL������azMazaz@az���w�wgCw�az�azaz��azNaz��az��cWaz�az�azcWcW��cW����azL�L�azazcW�����������az�MNaz�az@&az�az�azL��L��L�L��azL�������������L���L�LL���L�|��az��L��L���azL���L���L�azcW������cW����N��NazNaz��az��az��daz��������������az��������az@��azM��azaz|az����az��|az��Maz����������az��az��|azaz����az��azaz����azaz�az�v�azaz�az|��az��azaz�azM��azaz��azNaz����az�az�|azaz��	az�
azaz�azp��
����azaz�az�az|az|��|�az���azgCgCaz�azaz��azaz@��E��4� �-d�!�"az�#az�$dd�%�&d�'d�(dBf�)�*Bf�+Bf�,Bf�ZBfaz�.az�/�0�2az�1az@az�3azd�5�@�6�:d�7�8az�9azdazaz�;�<�>az�=dazaz�?Maz�Aazaz�Baz�C�DazMaz�F�a�G�X�H�O�I�L�J�KazNNaz�Mazaz�NMaz�P�V�Q�T�R�S|az`�az�Udazd�Wazdaz�Y�]az�Zaz�[�\azMaz�^Naz�_az�`azN�b�o�caz�d�k�e�h�f�gNazazv��i�jazMMazaz�l�m�nazLcWi��p�t�qazaz�r�sazazd�u�yg4�v�w�xg4aztyN�zaz�{azAeaz�}���~cW���������M����M���M�����M���M����M��M�M�h�M�M��M��0��M���M��M�M�Z�M�����M�M�v�M�M��1�����M���M����M�M�P���M���M�M����M��M�M�������M�����M�{�M����M�M���M��vM�M����M����M���M��������M����M��M�{�M�M������M��0��M�����M�����M�����[M�LM���M���M�����M�vv������������������M���hM���M�M�����M�M���������M���M�M�����M�M���M�������M�����M�����M�[vM�������M������M�M��������M�M���M���M���aNaz������e���+�������az�azE�az��|��az|azaz��az�azazgQ������az���,azx��	p��
p�r�p����
���azM|�e�e�.��az|az���az�azaz�|�az�|az��!az�az��az� azaz|�"�&�#|az�$�%azp�az�'�(|azaz�)az�*|az�,�3az�-az�.�/M�0Maz�1az�2azM�4�N�5�C�6�=�7�8McW�9�;�:azcWaz�<cWNcW�>cW�?�AcW�@Aed�BcW|cW�D�K�E�H�Faz�GazcWaz�Iazaz�JBaaz�L@&�M@&az@&�O�`�P�X�Q�S@&�R@&az�T�V|�Uaz@az�W�az�Y�\�Zazaz�[Maz�]az�^�_L�az`�az�aaz�baz�cazaz�dazd�f���g���h�}�i�q�jaz�kaz�l�n�mazazd�o�paz||az�r�uaz�s�tcWazcW�v�zaz�w�x�yAeM|azaz�{Ae�|Aed�~�������daz�az|az�az|az��az�@�@M�azaz�|az��������azM�azsG��MazL�@&@&az�N���NazN�N�N���N�N��N�N��x�Nx������x�Nx��x�x�Nx���Nx�N��N���N�N��x�Nx�x��x��x��Nx��N��x��x���Nx�Nx��x��x�N����������������N����azNazaz��az��@d��azaz��az��azAeaz����cWazcW������azcW������cW|����|az|az����az��az����azaz@����az��az��@azaz����azazcWaz�����az������������M���M�az@M���az��@azaz������azaz@��az@&|az������cW���cWaz@az����az@@azaz�azAe����
Ae�	Naz�azNaz�
azaz�az|�az����azAeAeaz��az�Mazaz�azAe��5�az��0��#d��L�d� �!L��"L�dL��$az�%�)�&L�L��'az�(azL��*�-�+d�,dL�d�.azd�/dazaz�1az�2az�3M��4M�az�6�j�7�U�8�?�9azaz�:�;az�<az�=�>t�azb�az�@�E�Aaz�Bazaz�Caz�Dazwc�F�Raz�Gaz�Haz�Iaz�J�Kaz�Laz�Maz�Naz�Oaz�Paz�Qazazb�az�Sm�Tu�az�V�X�Waz|az�Y�]az�Zu��[az�\mv��^az�_b��`t�t��at��bt��c�dt�t��et��ft��g�ht��it�t�A*�k�w�l@&�m�r@&�n@&�o@&�p�q@&@@&�s@&�t@&@&�u�v@&+@&@&�x@&�y@&�z�{�}�|cW@&az�~�cWaz��az|az|���������p������az����az�azmmazaz�az�az�azdaz���az���az�azd��azAeAeaz�az�az�azaz����az��az�az��azaz|�az�az�azazd��az�az�az��az|az�������azd��azaz�t��t�azaz�@d�azaz�|azaz�����azAeaz��azazsG@&��������@&����nW@&@&����@&��@&��@&az@&����@&������@&��@&@@&��@&����@&A@&������@&��@&��@&az@&@&��������@&��@&+@&@&������@@&@@&���Z���:�������d��d����az��azd��daz�����az�����az��azaz��az�azaz��az�azaz��azaz@�azAeaz��az�az��az|az�@&az�az�az@&�	�#�
�@&���@&�
@&�@&az���azNazaz�azd�����az�azdM�Aeaz�azAe�� �az�azAeaz�!az�"azaz@�$�.�%�*�&az�'�)�(azaz@Aeazaz�+az�,�-NazN�/�5az�0�1�3�2az�azaz�4az|az�6az�7�8�9azML�az�;�O�<�D�=�?az�>azw�@azaz�Aaz�Baz�CgCazaz�E�F�M�G�Jaz�Haz�Iazd�Kaz�LazcWazt��Nv�az�Paz�Q�Vaz�Raz�Saz�T�Uazazwc�Wazaz�X�Yt�maz�[��\��]�k�^�caz�_az�`az�aaz�bazdd�d�e�hd�f�g{
daz�id�jM�q��l�v�m�rd�n�o�q�pdL�db�d�saz�taz�uazdaz�w�|az�x�yaz�z�{azAeAeaz�}��~aN��azdazaN����aN|cWaz�dazd�����L�������daz��az��cWazazAe����azAeazd�L�azL�L��L���L�L�b�����L��L���L�`�L�L��L���azc�d���az�az�azazM�����az�|azM�az@��az�az@az�daz��������az��azt�az�az��az��azaz�Baz��azA������������u��v�u�����az����azdaz��az��azazd������������az��Ae@��azaz`�������azazN����azc�@az��az��������AeazazNaz��@&az�������������az��������azN|az��azMazaz��az����azaz�Baz��az��az����daz@az����������azM|az��azdAeazaz�az�|az��
���azaz@�	azMaz��
az�azAe�az@az�����az�az|az���azAeazaz�@az�azaz��azd�@��az� ��!az�"�O�#�0�$az�%�)az�&�'az�(azaz��*�-az�+�,azazv�az�.az�/azw��1�9�2azaz�3�4�6�5azv�v��7�8azu�u�v��:�A�;�>�<az�=az��maz�?�@azmaz�B�I�C�F�D�Eazu�az�w�G�Hazu�u�v��J�Laz�Kv�u��M�Nv�u�mv��P�u�Q�i�R�e�S�b�T�W�U�Vv�azv��1�X�Yu�azu��Z�[az�\az�]az�^az�_az�`az�aazt�az�cazaz�du����fazaz�g�haz��"�j�paz�k�l�n�mazgCaz�ov�kXwUaz�q�raz�s�t�Mazv�az�v��waz�x�{�yaz�zazb��?�|��}�~ww*wgC��kXwv�wU��������v�w�iaz��b�gQ�az����azgCa�v���azv�azw�az���azv�az�azv�az�az��������az��@&�@&az@&���az@&�@&azaz��p�d]`��p���akaz�p��p�azp���p��p���azp�az���az���@az@@azaz��az��az|az@����az�az����az����@az@������az@az�E�����������azaz����azazM�����az����azaz|��azaz��`�az������az����azN��azNOE����az����azaz|��az��az�az������d���:�������i��������������������azv�|����azaz@az�����az�b�v��|g4az����az||azaz|az����azazg_az�����������azazM���	�|�
az�az��
�|azaz��az�az���|az|�az|az�az�az��|�@az�azaz�dw��7� �&az�!az�"�#N�$Naz�%azN�'�2�(�,�)azN�*N�+Naz�-�/�.AeazAeAe�0cW�1cWaz�3az�4az�5az�6azNaz�8�U�9�J�:�C�;�@�<�>az�=Ae`��?azMaz�Aazaz�B@d�D�G�EazM�FMaz�Haz�Iaz
M�K�O���L�Mazaz�N�az�PcW�Q�S�Raz�azaz�TAecW�V�_�W�Z�XazcW�YcWazaz�[�\M�]�^azAeazM�`�d�a|M�b�cazMazaz�e�faz�g�h@azAeazaN�j�k��l��m�~�n�z�o�u�p�s�q�raz@azi��tazMaz�v�x�wazaz|�yazAeaz�{azaz�|az�}az�_����@�az�azM��az�azM��az|azM����az�Maz��M|azd��az�M�azaz�azb�����az�az���tyazazL��az���Ae@azMaz�az�Maz�az��azM�az�azMaz�����az�azaz�az�azM����az�az�azd�az��@azdAeaz�az��azazd�������daz������azddM������az��azdaz��������az@dazN��azi�����az��azmaz����������@t�|azaz��az|���|���K�����������������dd����dg4d����d��az��azM����az��azmaz��azNN����|����N��Nc���|az|����nW|��nW|�|az��nW�nW�az@�azaz�@az��.����
��	��az�az|�azAeaz�
az��N|z@��az�az�azo��az�azdM��!����az�az|�dazd��d�M@�� @azMaz�"�(�#�&�$�%`�azaz@az�'Naz�)�,�*�+|�Otyaz�-az|az�/�:az�0�1�5�2d�3�4aztyazd�6�8�7aztyaz�9azazty�;�E�<�B�=�?�>aztyaz�@�Aaz|Naz�C@&az�Daz@&@&�F�G�H@&N�I�JNazdaz�L�m�M�V�N�S�Oaz�Paz�Qaz�Razaz|�Tazaz�U|az�W�b�X�_�Y�\�Z|�[azg_az�]azaz�^|az�`�az�aaz|�c�g�dazaz�e�fazaz|�haz�i�jaz|�k�lAeazwgC�n�r�oaz�paz�qazaz|az�s�t�xaz�u�v|az�wdazaz�y�zazaz�{azgC�}��~�L����L��L���L���L�g_g_L�L��L�az�����d��az���azc�c�Ae�d�az`�az��az�az���|az@az�az�@|�az@������db��az�azsG+��az�az�@az����@azazAe�az|az�����az�az|azaz��azazsG�az�azaz�Maz������������M�����M��M��M���M�[������M�����M�[[M���M�����M���b$������M���������{�M��0M���M�M�������M���M�vM���M�������������M���M���M�M���M�������M��M����M�M�����M���M�M������������M�������M���[M�M���M��0���M���M��M������M��M���M���M���
�����M�M��M��M���b�M����M�M�����	�M�M�*d�M��M��
M�M�������M���M�M��vM�����M��M��?�M��L��M���NM�M��hM�� �*�!�&�"�$M��#M�*�M��%hM��'M��(�)M�hM��+�/M��,�-�.�]�M��0M��1M��2P��3M��4M��5M�M��6�7M�M��8M��9M�r�;���<��=�L�>�E�?H �@H �AH �BH �CH az�DazH H �FH �GH �HH �IH �J�KazH az�M�w�N�j�O�b�P�Y�Q�V�R�T�Saz|az�Uazaz|az�W�Xaz@az�Z�`�[�]az�\azM�^�_M��Aeaz�aaz@az�caz�d�g�ecWaz�fdcWcW�h�iazcWaz�k�p�laz�maz�nazaz�oAeazaz�q�r�uaz�saz�tazv��vazv�azaz�xaz�y�zaz�{az�|�~az�}g_az�azazM��az����Ae�Aeaz��Aeaz�azAe�azAe��az�az�azAeaz�������������|az|�|�|�||�|az�|��|�|az|�|v�|�|���|�az||�az|�����|�||�az||��|az|�||��||��|�azaz�az�az��azazb�������������|��|��|az��|��|azH:��|az||��|������|��|���|az|����������|az��@az��|��|����|az|az����|��|������+||@|��|��|��|az���X���0�������������M��Maz��azM��az��azMazaz��az��az����daz�Aed��������d��ddaz�dd�m�d��d���dMNd�d�ddN�	��
�����
N;ddN;�daz���d�daz�azdaz�az�az�azdaz���az�az�azaz�maz� �$�!azaz�"�#azmaz�%�+�&�)�'�(azdtyg4�*dg4d�,�.�-azdaz@&�/@&az�1�M�2�D�3�@�4�<�5�8�6az�7az@az�9az�:�;@azazcW�=az�>az�?azaz@�A|az�Baz�Caz|�E�H�Faz|�G|azaz�I�J�L�Kazazdp�az�N�V�Oaz�Paz�Q�RazM�S�UM�TMazLazaz�WazkX�Yaz�Z�]�[azaz�\az|�^�`az�_daz�a�bdazaz�caz|�e�4�f�x�g���h��i��j��k�x�l�paz�m�nazaz�o|az�q�saz�rtyaz�t�v�uazQazaz�wazcW�y�cW�z�{�}cW�|cWazaz�~Maz�az��az�azdaz�|az�azaz��az�az�az|az��az�|az�azaz��az�az�azaz��������|az�az|az���az|��|�azg_��azMMaz��������az�|azaz|�az�az�azaz�|az��az�az��az@nWaz��az��azd�p��������az�azaz��az�azaz�az����azaz��az��az��az��w�az������|������|p�az|az����az��@p�������azp�az��azgCaz����������az��|����az`�M�azaz��azgQ��az����|��az��daz��azaz��Maz���-�������az��az����EzazHG�6���������az����az�6az�az�az|az��az��azaz|���azazM��Mazazty��������|��az@azaz�	�
�AeazsGAe�
�az�az�|az���azazM��azg4g4az�az�az�az�azazAe��$az���!az�az� tyazaz�"`��#Ezaz�%�)�&azaz�'az�(@az�*az�+az�,azazd�.�F�/�5p��0p��1�2p�p��3p��4p�{�p��6�7�?�8�<p��9�:�;p�|Maz�=az�>az@az�@�Caz�Aaz�BAe@�Daz�E@N|�G�T�H�Mv��Iaz�Jaz�K�Lazaz@�NH �OH �P�R�QazL�az�SH azc��U�h�V�a�W�[H �X�Y�ZH azAeaz�\�_�]�^MazMazaz�`az��b�csG@�d�f�e@&az@&az�gazcW�i�t�j�p�k�m�lazAeaz�n�oazdl�Aeaz�q�r�sazAeAeaz�uazaz�vaz�waz|�y���z���{��|��}��~���az��azazMaz����tyaztyaz���az�azg4az�Naz���az��nWazaz�v�az��@azaz�az�tyaz������az�az�az@&�M@&�azM��M���Mazaz`�����azAen��,�n��,n�����n���n�azn�����n��,�,n�n�azaz�az�az�az`������`��`��`���az`�az�p�����az��az��cWazaz����azazM��������p�����p�p���p�@����az����azMaz����az��az@��azdg4������������azq~q~��Aeazaz������|AeAeaz������������az@@az��dsGdaz����azaz@��azaz��az����azaz��az��az���Baz��N�����az��az���az�azb���@azc�az���azaz�Maz�az��az`�azM��az�	�
�
az��azaz|�az�azgQ`�az�az�az���azNNM��.��#�az�����azaz@@�Maz� az�!�"azMtyaz�$az�%�+�&�(m�'azd�)�*az@cWL��,az�-azazMaz�/az�0az�1az�2az�3M�az�5���6��7p��8�l�9�O�:az�;�F�<�B�=�?�>azazcW�@�Adaz@Ae�Caz�D�EazMMaz�G�L�H�J�Iazaztyaz�Kazg4�Maz�Nazg4az�P�Yaz�Q�Raz�S�V�T�U@azazM�W�XM��p�az�Z�e�[�b�\�_�]�^azdd@�`�aaz@@azaz�c�dazdaz�f�iaz�gaz�hM@�jazaz�kazty�m��n�v�oaz�paz�q�t�r�sMazMaz�uv�azM�w�{�xazaz�yaz�z�B��|�}az@�~�az�azAeaz���az���az��az��az`�azaz��azc�az����az�az��azaz�az�Mdaz���aztyty�tyazaz�����az�az�az�az���b�azb�az���az�az�az�azb�az�azaz�az�v�az������azaz�az�d]az��az�az��azazv����az��aztyaz@����azAexvaz���aznWazM������������az��az��azM��az��az+M��M�����az��|M��M�azAe����M�����cWM�azcW��az��az���az���0������������az��azaz��az��az��az@����az������az��az��L�azaz��az��i�az����az������`���`�az��azNM��az��azp�azaz���azg4`�N���az��������cWakg_N��NtyNty��
N�	g4cW�tyazg4ty�
��ty��Ot��azt�az�����az�az�azaz�az��az�aznWazaz��@&az|� �'�!L��"L�L��#�$L�L��%g_�&g_���(L�L��)�*L��+L��,�.L��-L���/L�iL��1��2�e�3�L�4�;az�5az�6�7�9�8aztyaz�:azg4az�<�@az�=�>az�?azazAe�A�F�B�D�Cazaz|az�E|az�G�J�H�Iazg4Maz�KAeazsG�M�X�Naz�O�U�P�S�Q�RAeazazt��Tazt�azaz�V�Wazdaz�Y�]az�Zaz�[az�\azM�^�`M�_Maz�a�caz�b�azaz�d@az�f�u�g�jaz�haz�iazaN�kL��l�o�mazaN�naNL�p�r�qazaz���s�tMazH:L��v��w�|L��x�y�{�zaz@az|az�}��~�Ae�sGaz�az`�azaz��az@b������azaz�g4Ae����azb�azM����az@g4����sG�v�@��@azsGaz�azaz�az|�|�����������������|�||��||�|�|��||�|�|��||�|������|�||��||��||��������|�||��|�|��|�|��|��||��|�������||��|��|���|��||����|��||���|������������||�|����||��|����||��|��|����||���|�������|�����|��|��|����||��|����||���|��|���|����||��|�||��|�|�|�||��|����|�|���|��||�|��|�	||�
|��||�
|�|�|��|�||�|��|�||�|��az���az�azaz|Q��Q�_�� ���!�w�"��#�~�$az�%�Q�&�C�'�3�(�,�)sG�*sG�+sG|sG�-sG�.�1�/�0sGazazsGsG�2sGaz�4�>�5�8sG�6�7sGazsG�9�<�:�;sGazazsG�=sGazsGsG�?�@�BsG�AsGazsGaz�D�L�EsG�F�GazsG�H�J�IsGsGazsG�K|sG�MsG�NsGsG�OsG�PsGaz�R�l�S�c�T�\�U�XsG�VsG�WsG@�Y�Z��sGsG�[sG@�]�`�^sG�_sGsG@sG�aaz�bsGaz�d�h�eazaz�f�gsGsG��isG�jsG�ksGazsG�m�r�naz�oaz�psG�qsGazsG�s�wsG�t�usG�vsGsGaz�x�{sG�y�zsGazsGsG�|sG�}sGaz����p��p��p��p�d]p��p��p�r�����|��|�|�||�|��|�|�||�|��||��|��|��|�|�||�|��|�|�||�|���������||�|��||�|��|�|�||��||��||�|��||�|�|�|��||�������|����|�|����||����|�������|���|�||��|��|����||��|����||���|��|��|��||����||��|����||����|B/||��|��|��|��|��|��|���|�����||����||�����|��|��|����||����|����|��||�����|�|��||�|�|��|�|�|||L|�|�|�|��||�|�	�
|�|�|�
||���|�|�|��|�|�||���|��|�|�|������P��9� �0�!�(�"az�#�&�$�%azsGE�az�'azaz@�)�.�*�,az�+L�azaz�-@g4�/azg4azaz�1�2�5az�3�4azM��az�6�7�8azMaznW�:�I�;�C�<�?�=azaz�>L�azaz�@�A�BazBaMaz�Daz�E�G�Faz@azaz�Haz|�JM�KM�L�Nd�MdM�OMaz|�Q�u�R�e�S�\�T�Y�U�WM�VO�Mg��XazMM�Z�[azMaz�]�`�^az�_azMaz�a�caz�bM��d���_�f�k��g�h��i�j���a�l�q�m�o�n�����p���r�s��_��t��O�v��w�~�x�{��y��z����|��}�������������@���������������������������_az��������������az@L�azb�az�az��LazazM���az�az��azaz��azdaz�az�az�azaz�Maz������az��azazv��azaz�azd�����NazN�NNQ��azN�N+@���az�az�az��azN��az����N��Nazaz��tyaz����������������az��az��Aeaz������azazMaz���az��azaz��az|����������L��LazL��az����L�g_az��az��������cW@azd����dazaz@������az��az������azp�az����azddazaz��az��az���g_azAeaz��9����
�p��������azazg4azd{�az��MsGaz|�p��p��	p�azg4�azp���
���p���Ba�az�az���azazd����azazcW��"��az��d�dazdd�� az�!azdaz�#�*�$�&az�%azA�'azaz�(az�)Maz�+�5�,�2�-�0�.�/L�c�azM�1azMb�az�3az�4azAeaz�6�7�8azAeaz|�:�b�;�V�<�O�=�G�>�D�?�Aaz�@d]az�B�C@azazL�az�Eaz�F`�az�H�Laz�I�J�Kt�azazd�MMaz�Nazd�PazM�Q�R�T�S@dazaz�U@az�W�\az�X�Yp�az�Z�[p�azp�p��]�^azp��_�`�ap��|��c�r�daz�e�n�f�k�g�iaz�h@az�jaz@az�laz�mMazM�oaz�pazaz�qaztyaz�saz�taz�uaz�vaz��x�A�y���z���{��|��}��~����azaz�az@az�az�azE���az�az�az`�az�Maz������az�aztyty�|az����@cWazAeAeaz�����aztyaz��azMazN�az��NnWnWaz�az��az����azcWaz�azazd�az�az��@azMaz�������az�az���NazNaz���azaz�azt��azaz�i�L��az���az�az��azg_������azg_az��az@&azaz������az������@azaz��Maz����az������azL�@@&��������aNazazcW��az@az��az������az��azaz����azaz����az��az��azaz����azaz��azd`��������������az��������az��MazM��@az�����azAe��MMazaz��`��`���az@az`�`����	��`���az`�Ae���az�azaz�i���
��az��
@��nWaz��az�tydg4M��3�����az��M�az|�azd|�az�az�az|az� �+�!�$�"azaz�#azm�%�(�&�'Mazaz���)�*��azMaz�,�0�-az�.�/azt�Maz�1azaz�2azM��4�6�5p�azp��7�=p��8�9�;g4�:azd�<azdaz�>azaz�?�@az@az�B�)�C��D�r�E�U�F�Paz�G�H�Kaz�Iaz�Jazd�L�Nd�Md@@�O@dd�Q�Rd�Sdd�Tb�d�V�[d�Wd�Xd�Y�Zazdaz�\�g�]�a�^�`az�_azAenWaz�b�e�c�dazv�azM��fazM�az�h�l�iL��j�kaz@t�L��m�o�nazMg4�p�qazj�xvaz�s�}�t�x�uj��vj��wj�xvj��yazj��zj��{j��|j�az�~����M��M�az�azM��azM��M��M�az�az��az�az���az��az�cWazaz�g4az���������d���dtkd�dgC�����ddgCd�daz���ddazd�cWd�d��d���dcWcWd��tkd��dazdcW����d��dd�daz��d�c�d��d�drXazd������������db�b�az����lxdd@������dazd����dv�v�d����d������dv�dgQ��������v�ddv�����dv�db������������������������Nddb�c�d������akb�dL���L��������������n��xl���dL�azd��d��db���d���d����ddazd��dn�d������d��dn�Ae����ak�bdn���g_azlid����
��	n�d�bddb����
�d�bb��b���bdd�d��dd��db�d������b�dNd�dW�d��#� �"c��!sGb�c�d�$�'�%�&b�db�d�(ddb��*�0az�+�,azaz�-�.azaz�/az|�1�g�2�G�3�8az�4az�5az�6az�7@az�9�C�:�?�;�=�<azAenWaz�>azi�az�@�A�Bxvazazd�Daz�Eaz�FazcWaz�H�Zaz�I�J�Uaz�K�Laz�Maz�Naz�Oazaz�P�Qazaz�Raz�S�Tazazv��V�X�W|Maz�Yazazv��[�c�\�`az�]�^�_Mty��cW�aaz�bazg4Aeaz�daz�enW�fazd�h�z�iaz�jaz�k�mv��lv�azv��n�o�q�pv�v�az�rv��saz�taz�uaz�vaz�waz�xaz�yazaz@az�{�|���}azaz�~���az��azaz��az������g4azaz@���������������������������az��az��az����tyaz|����������az��aztyazaz����azazty������az��azazMaz����azazg4������az��Laz����L@az��az��az����az��MaN��azMaz��������az����azaz��az��az�az����az��azaz���az��������az��az������p�azM�az��az������azdaz����azdcWAeaz����������az��azHGaz��azLaz��az��cWaz��NN����N��N������������NOTOTNN����OT��N��N��N��N��N��NN��Q�N��N��NOTN��`���`�`�����`���`���`�`���`���`�����`���`���`���`�`���`�����`�`�[������`���`���`���`��l���l`���	�`��`��`�`��`���`�`���`��
�
�azaz�azd�azaz��az�azaz�az�azgQ��������*��$�az�az�az���az�az|az� �"az�!azmaz�#mazaz�%az�&az�'�(azaz�)daz�+�d�,�I�-�<�.�3�/M��0M��1�2��M�LM��4�7�5�6�M�M�[�8�:�9M�M���M��;M�L�=�E�>�C�?�AM��@M��0���B{�M�M��DM���FM�M��GM��HM�h�J�T�K�P�LM��M�N��M�M��OM���QM�M��RM��SM�b`�U�[�V�YM��WM��X�M��ZM�M����\�^�]M���M��_�aM��`�L�b�cL��0M��e���f�qM��g�h�m�i�l�j�k�M�M�vvM��nM��o�pv{�M���r�z�s�v�tM�M��u��Z��wM��x�yhLP��{���|�~���}[M��M���0��������L��������M������������M�M�����M�M���M�����M��M�����������M���M�M�[M�����M��0M�����M�������M�*�hM���M�M���M�[��az������M��M��M��M��M��MazM������������������F�M��MF�F�����MF�M��M����M��Mazaz��azM����M����azM��M����az������azAeaz��az��az��������az��az��az��|az��������az��@azaz��Maz��M��Mi�M����M������M��Mazazty������azty��tyazaz������azj*cWaz���G���E���������������az������azAeAe��Aeazaz��������d@d����daz|az��az����������azaNazaz��azg_az��az��Mazaz��az����az����dazazd�azc�Ae����az�az�	�
�
��AeazAg4�az@az��az���az�xv����xvv�b�xv���xv��3nv�3�����xv��-��&� �#M�!M�"Mw�M�$�%MMgC�'�*�(b��)b�b�xv�+az�,b�xvb��.�4az�/�0�2az�1azd�3dazd�5�8d�6d�7b�d�9�C�:dd�;�<az�=azaz�>az�?�@azaz�Aaz�Bv�azd�Dd@�Fm�cWx��Haz�Iaz�J�P�Kp��Lp��Mp��Np��Op�azp��Q�V�Raz�Saz�Taz�Uazp�azaz@�X��Y���Z��[��\���]���^�m�_�f�`az�aaz�baz�caz�dazaz�eazgCaz�gaz�haz�iaz�jaz�kaz�l�Baz�naz�o���p�z�q�w�rd�s�u�tdazd�vd#dd�x�ydN;d�{���|���}�~azd�dazd����d��daz��azazd��������azdd��azd����azddaz����az����az������azg4azaz��azc���az��az��azaz��dazp�������������������az��az����azazAe����az����azdaz��������az�MM�AeAe��Aeaz��az�����'����S`��S`�'S`az����az|az��������az��az��az��azMaz��������@azM����@az|az��az������az��azp�|az����azM|������az��������az��������azL�az|��az��waz��azaz��az��maz����az����az��azaz��az�����az����az����az@|azaz����������az|azAe��az@az�������2���!����������������az��az|az��������azM`�nWaz��azE������azaz�az|az�az�az@����	�azaz�`���
az�azazAe�
�az���aztyaztyaz��az|az��az�az�az��azaz@�az�az��az�azMaz� @azaz�"az�#�$�(az�%az�&az�'azM�)�/�*�,�+azaz|�-�.`�NazE�E��0�1azcWAe�3�q�4�Y�5�F�6�>�7�9�8az@az�:�<az�;Baazaz�=@ty�?�Baz�@�Aazaz@az�C�D�E`�azaz���G�R�H�M�I�K�JaznWaz�Laz`�az�N�P�Oazaz@�Qazaz|�S�Vaz�T�UtyazN�Wazaz�XMaz�Z�e�[az�\�_�]az�^@nWazaz�`az�aaz�b�cazaz�dazv��f�m�g�jaz�h�iazaz@az�k�lp�tyg4az�n�oaz�pazazM��r�x�saz�taz�uaz�vazaz�wazMaz�yaz�z�{�~az�|�}azMaz���az��sGazaz��az|L�����������������`���`�az��az��azd��������`���`�az|��az��nWaz������������|azazdMazaz��az��azcW����������������az��Maz��azMazaz����azaz|������azaz��N|�������'az@����@az@&�O����������������@&@@H:����cW@&@@&@&�����@&azaz����azaz��az|����������������������azazty��azazg4az��az��aznW��cW��cW��cWazcW��������cW������cW`�t�g_������azg_azaz��azL�az����az����az�azty��������az��az��az��az@������az����Aeaz@az����az��aztyaz��@az��������������azazi�az��|M��azM��Mazaz��������az@az��aznWc�az��
��^��V��F��1���	��
�
az�az�az�X�az�azazp�����az�Mg_az�azN��az�az|��azML�ty��$��!az�az� az@�"��#�McW�%�,�&�)�'�(aztyazN�*�+ty|L�;�-�/;�.L�@�0azazb��2�>�3p��4�7az�5az�6azp��8p�p��9�:p��;p��<�=�$����p��?�C�@azp��Ap��Bp�az�Daz�Eazaz|�Gaz�H�R�I�Maz�Jaz�K�L@az@az�N�O�PazM�QazcWazaz�Saz�Taz�UazgCaz�W�Xazaz�Y�Zaz�[az�\az�]ubazub�_���`�}�a�j�baz�caz�d�g�eM�fMazM�haz�iazMaz�k�paz�l�mazaz�naz�otyaz�q�z�r�uaz�s�tazAeaz�v�x�wnWaznW�yM�nWM��{azM��|M�az�~�����������az��az@��@azaz������az��aznWM��Mazaz������az��az��azc���������azM|az����F�azaz|��������������az��azMazaz����aztyaz��az��azaz��azw���������az����cWg4M��az��azcWazaz����az����Mazaz��������������������|��������az||az��||az��|����|��az|��|az|������||����||�|������|��|��|����||��|��|��|��|��@||��az|������||��|��|��L�||����||��|��az|������������������az����az||az��|az��|az������||��|az����|az|��|az|��|��������|az|��||az������������|��|��||��||az��|�|�|az�|az||�	|�
|�|�|az��h��9��&���������az�B�az����_�����Q�_��!���� @�����"��#��$�O�%�_��'�.�(A�)�,A�*�+AeAIK�'�-EA�/�2A�0A�1@E�3�7�4�6�5�T�AeAe@@�8Ae��:�T�;�H�<�B�=�@�>�?�a���A���_�C�F�D�E�����G�Q��I�N�J�L�K�Q���M��_�O�R�P��Q�����S���U�`�V�[�W�Y�X��1��Z���_�\�_�]�^�aQ��_��a�c��b�_��d�f�e���_�g����isG�j���k��lsG�m�r�n	Y	Y�o�p�q��sGsG��s�{�t�y�u�x�v�w���G�{̊����sG�z	vsG	Y�|�}�~	Y
��	Y������sG	Y��sG����
���	Y����sG��������+���+���+���+���+���+���+���+�	Y+������������������������������������������������������sG����	Y����������	Y������	Y����	Y̙sW���	Y������	Y����������̷̨	YsG����
�sG��	Y�	Y����������sG��	Y�������������������	Y������
��������U
��������sG����������	Y����	Y����	Y	Y����	Y	Y��	Y���	Y��	Y	Y��	Y��	Y��	Y���	Y	Y������	Y����	Y��	Y	Y���	Y	Y��	Y��	Y��	Y���	Y������	Y����	Y��	Y��	Y��	Y��	Y��	Y���	Y��	Y	Y��	Y��	Y��	Y���	Y������	Y��	Y��	Y	Y��	Y���	Y	Y��	Y�	Y�	Y��	Y�	Y�����<�����?�	A�
�1�����
�Le�x����l��e�e�e��e��e��e��e��e��e���e�i�e�g&b���.��-� �#�!�"b�dd��$m�m��%�&m��'m��(m�m��)�*m��+m�m��,Wpm�b����/�0e���xv�,�2�<�3�8��4�5�7��6L�cWL��'�9�;��:��&Q���=�>��O��@�q�A�R�B�I�C�F�D�Eb�L�db��G�Hb�BaNak�J�O�K�NL��L�M�Ni#b�Ld�P�Q�GMNx��S�_�T�Z�U�Yaz�V�W�Xaz�ww�azAeL��[d�\j��]�^i#�Kb�d�`�e�a�d�blb��cXb�xvd{�f�gdb�K��h�i�p�=�j��k�l���m��n�o���=c����r�zsG�s�t�v�uKj@�w�x+��y����{�|az�}azl�~��+az��������������az��������az������az��v�az����u�azaz��t�azaz����az��azt�azaz��az������az������azaNazL�����az��azML��Laz����������������az����q~g4F�����MB�b�az����az��az����az������azp�az��az|�����������nWaz��aznW����nW��nW|��`�L`�����`���`���L�az��������@&dazL��azaz@��������������az��azaznW������az@az��azxvazaz����azaz��������������az��aznW��|M���������AeL�L�az��nWaz2T������azaz��`�az����az��azAeAeaz���	��������az����azaz��az��azM������������az��|�az��azMaz��azaz��c�az��azaz��az��azw����azaz�az�ty�tyL�az��az�azaz�@az�
�����az�
az��azazc���az���@azM@�az@�azty�azaz��az�azgQaz��*az�� �&�!�#az�"�az�$�%M|azp��'az�(�)p�M�M�+�3�,�0az�-�.�/Mazaz��1azaz�2azAe�4�7az�5az�6Ae`��8�:az�9azd�;azaz@�=���>���?�Z�@�Faz�A�BM��CM��DM��EM�azM��G�P�H�L�IM�M��J�KM�M��0M��MM��N�OazM�az�Q�X�R�Uaz�Saz�Taztyaz�Vaz�Waz|�YAe|Ae�[�kAe�\�]�d�^�aAe�_Ae�`b�Laz�baz�caz��e�h�fM�gMazM�iazM�jMaz�l�}�m�v�n�s�o�r�p�qN`�MazazM�tL�uLNLL�w�x�z�yazM|�{�|`���azAe�~az�azAe��Ae��Aeaz������������������������az��azc���azazp�az��az��azM��������az��azL����@azaz|����az��azg4��M�azM�������������M���azN��azAeaz���?����azL�az|����az������az|@az��������azMazL���azMaz��������az��az����nWazL���az��az����|azaz@������������az��Maz����nWaznWaz������az|azaz��`�M����az������azMNM����M��az|az��daz������azaz����azaz����azaz@��������az����azaz��
_az��az��az��azaz@����������azaz��azN������azg4azaz��M@��azaz��az����v���2���������az����az��az��az�B���B���B���B�����B�B��v��Bv��az���azEaz�azBpazaz�	az�
�M�azM��
�!��M������M�@azM��M�M�az����M��M�c��azM�az���|azM�� MazNaz�"�*�#�&�$az�%az@az�'az�(�)c�azMAe�+�.az�,�-az@azaz�/�0�1nWaz�@az�3�L�4�A�5�<�6�9�7Ae�8AeazAeAe�:�;azMaz�=az�>az�?�@@az`�azaz�B�C�F�DM�EMazM�G�I�HazM|�J�KnWddaz�M�c�N�Z�O�T�P�Qty`��R�S`�nWMaz�U�X�V�W@azAeg4�YazMb��[�^�\az�]azMnW�_�`az���a�b@azaznW�d�l�e�h�fMaz�gazM�i�jMAeAe�kq~az�m�paz�naz�oAeaz�q�s�rBaMBa�t�unWaznWaz�w�~az�xaz�y�zazaz�{az�|�}azaz|�az������az��az��|��azaz@az����az��������kXw�v�w���azw���������x�����������������������az��az��nWazaz��az��Maz������az��azazM��azazd����az������az��L�az����Mazazty����������NMNaz��g4azaz������azMMg4������������az����azp�@&az��az��az|��������az��dazaz@��azaz��az|����������az����az|cWazaz��az��aznW����������azMazaz��az@����az��Maz����g_azc�az������������az��az����azaz`�������������@az@azaz��azdaz������Maz|az��������az�������|`�L�az��az��tyazaz��Maz���������az����az��az|��azaz@��azaz��az@&@az���	���azazM�azMaz�
��az|az�
�azMg4az��A��+�������azazM���azaz@�az�ty�az�azazq~az�az� �!M�"azaz�#gQ�$�%gQgQ�&gQ�'gQ�(gQ�)gQ�*gQ���,�4az�-az�.�/�1�0az�cW�2�3azAeaz@&@&�5�6�<�7�9@&�8@&az�:�;q~azazQ�=�?�>az�@az�@azc��B�_�C�Kaz�Daz�E�F�I�G�HazMaz�az�J@az�L�V�M�Paz�Naz�OM��Q�T�R�Sg_azazb�Ug4azg4�W�Zg4�Xg4�Yg4az�[�]az�\|az�^azM�M�`�o�a�f�baz�c�eaz�dnWaz@az�g�jaz�h�iazazM�k�m�lazaz|�nHG|HG�p�t�qazHG�r�sazHGazaz�u�vazaz�wazF��y���z���{���|��az�}�~���F���F�@&F���|@&azaz��az����azaz��az@��azaz����az��az��az@az������az��|az|��az��az��azaz��w���jaz����������az��az��az������nW|nWnW��nWaz��az��az��azaz����azaz|��az��azaz��az��az��az����L��������az��az����az��azaz��az��wUaz����������������az����azg_azaz������@@&@@&������@&��@&H:@&����@��@&@��@&@az��az��������az��Maz����az@azM��az��azazM������������az��az��az��az��az��az@������������@aztyaz��azaz`�������azazb��azH:az����������az����az��azg_az��az��azMaz����az��azd]@���&���%�����������az�nWaznWM��M��M���M��M��M��M��	M�M��
�M�M����
��az�az�az��m��mm�m��mmt�m�m�m��m�mm�t�m��#� az�!azaz�"maz��$�|az|�'L�(�-�)az�*az�+az�,azaznW�.�;�/�4�0�2az�1@az�3g4|g4�5�8�6�7g4MMd�9�:M|Maz�<�E�=az�>�?Maz�@azaz�A�Bazaz�Caz�Db�az�F�I�G�Haz`�azM�J�KazcWsG@�M�t�N�e�Oaz�P�U�Q�Saz�Raz|az�Tazw*�V�b�W�Z�Xazaz�YgCaz�[�`az�\�]az�^az�_az�az�aazazmaz�caz�daz�az�f�g�kaz�h�iazaz�jaz|az�l�maz�n�q�o�pmt�v�az�r�sazv�jaz�u���v���w�|az�xN�yF��zF��{F�az�}az�~az@���ku@az������������az��az��p�|������azazM��azaz`�����az��Laz����az��g_azaz��azd����������Naz��azN������azazN����nWi�az|����az�����i�az��az����azL�p�az����az������az������az��azw���azaz����azaz����az��az��azw�az|azaz|��n��������Y��G��������������az������az��p�azaz��azn�������������Aeazaz@����azc�d]nW����az��az`���azaz@����������������azL@az��azaz`�az����azaz���az��azaz���az����������az��������azdazg4az��azAeaz��az��az��azcW��������������azcWazaz��|az����az��Naz����azMc��az����azazL�aznWaz'

az	az�azazazdMazNazaz@az`�az az`�@&azaz|AeazAe�q~az!$"az#M�Maz%&az�az(/)az*,+azazMaz-.azazAe0;182534b�nW��az67az@azg49az:azg4b�<A=?az>gQaz@tyaztyBDtyC�rtyEF`�azaz|HSINJazKazLazazMazb�O|PazQazRazg_azTazUazVazWazXaz��azZ�[�\�]�^k_j`nWab�b�bcb�db�eb�fb�b�ghb�ib�x�b�b�Llpmb�noltyMd{qcWr{cWstcWucWcWvwcWcWxycWcWz�WcW|cW}cWcW~cW�cWcW�cW��cWcW�W����d{b�b�c���c�{
b�c�������b�L�t�d{��d{db�c�����xvrXm�d{d{b���������c�d{Nd{c��d{ku����d{c�dc���c�b��b�g	�������b��#����#�d{cW��d{b�i�M����d{��d{�d{��d{�d{d{��d{�d{d{��d{�d{d�dakb���b��b�c�b����p��p���az�az�azt������azwt��azwaz��az�azp�az�Rg4��
�����M��M��M���M��0�M����������M�����M��M��M���M��M�����M�M��������h�����M��M�M��M���M�M���M�b3��M�����M�����M�M�{�M�M�M�M��M�	M�=M�L!M�
��M�M�M�����M�[M�M�M���M�M�M�M�M�M�M� M���M�":#*$'M�%&M�LM�(M�)M�M��+7M�,-6M�.M�/M�0M�12M�M�3M�45M�rM���M�8M�M�9M�h;D<?M�=M�>M�v@BAM��MhM�CM�b3EM�FH��G��M�M�IM�JKM�LM�MM�NM�OM�PM�QM�M�rS`�TnU]VYWddXdb�Zd[\c�b�dM^dd_`dadbcdegnliegfdNb�hkib�d{j��gnlb�c�mlb�ozpdqsd{rML�tvuLb�dwyxL�dbL�d{�|�d}~L�c�d���d��d�d�d�d�dd��d��d�d�d��dd��d�dd��dd�Mc����b�N����g4���rb��Ci#M���`�ddc�����@��az�����az�azaz��az|az�az����HGF��F�F�HG�az�azF�HGaz���w�u�v���t�����az�����azv������az�az�az�az�az�azazb��az�azaz�az�az�azt������|���az���dazm�dazaz�azj��|az��az�����azaz|M����azMaz���Kaz����gC�gCgQaz�mw�w��w�v�kX�L�az�az�az������@&az�az@&����`�az@@&@&@�@&az@&az@@azaz|az	
azd]|azG
azazMazMazMaz��|az��az/"azazv�az !v�azv�az#)$'%&gCazgCaz(azgQaz*,+azb�t�-.w�azazv�0?1523azu�w4v�az687azazv�gC9az:;gC<gC=gC>gCkXgC@azAazBazCazDazEazFazubazHazIazJKMaz|azMYN@&OSPazQazRazaz|TazUazVazg4WXazg4azZaz[k\e]az^c_b`aazi�liazaz|azdazkufazgjp�hicWp�L�Mp�l|azmaz|o%pq�r�s�t�u}M�vM�wx{yz{�M�{�[|M�[M�M�~M��M�M��M�b3M��M��M��M��M��M��0�����M�M���M��M�M�[�M���M��M��M��0���M�M�b3M���0����M�M��������M�L�M�M��M���M�b3M�������az��az���azazgQaz�gQaz����az�azgQaz���w�azazkX���azaz�azgCaz��azazkX���azaz���az�azu��azgCaz�az�azaz��az�az�az�����������^azaz�^��az�^az�^���^��^az�azaz�^�������^azaz�^az��^az�az�azaz�^���az���azaz�^���^azaz�^��az�az�az�^az�az��^az�az�az�az��az�azaz�����az���azazw*azt�azazazu�azazazaz	
azv�az
azazu�azu�azazazjazazazazazazazazazazazazaz !az"az#azaz$@az&z',(az)az*az+azaz|-l./az|0az1a2H3?�45:6��78��9|�;�<�=��>|��@AB�|C�D��E��F���G���I[JP�K�LM��N�O�|QV�R�ST�U�|�W�X��YZ��|\�]�^��_`�|�bh�cd��e�fg�����ij��k�|msnazoazazpLqr|Laztazuazvazazwxazazy@az{p|�}�~���az���azaz�|az�azaz�|����az���az�az@�������azazM���������azML���azMaz���@&�@&az@&�����H:@az�@az@�����@@az�az@&az�������azMaz�azazAe�az��aznWazAe����az�azAe�azb�M����@g4Maz��azMazi������������az@M�azMaz�az�azdaz�����azazMaz�azAeaz���azMMaz����az���|�m���BaazHG�az�����az��Aeb��azazb������az��az��azaz�az�az�az@��az����c�azc�c�az���q~�q~az@�az�az`�az�:	azazazMMazdaz

azaz|Mazaz@az|az��azazazazMazazazg4MazAeM 5!/"(#%az$L�|&'|M`�az),*+azNazsG-.daz@azaz013az2�azaz4@�az67azaz8az9azM;X<O=Daz>?B@A@azaz�Caz�azEIazFGH@azazdJLazK`�azMNazg�azAePazQURTSazMazazMVazMWMazYdZ_az[\]azM^az|az`aAeazazbazcazHGelfiazghAeazAejazkazAe@azmnazazoazdqazr�s�t�uyvazwazxaz|azz}{azaz|az|~�azaz|az���az�az��azMazaz���aznW�azazAe����������MazAeM�azazL��azaz�az|az�az�az�aznW�azaz�az��az��az�����az�az���L�azL��azL�az��az�m;���azq~tyaz��az��MAe@az�aznW�������aznWaz����azMMazF�az�az�Ae�AeAe@��az����L�wL��azL�az������MazL�azaz�azM�azMaz��D�#���9��H �H ��H �H �H �H �H H ������az�az�az�azmazaz�az�gCaz�3��az�azaz��az�az�az�az����az�az�azv�����v�azazv�v��v�azazazazv�az	azazazv�

v�azazv�v�v�azazazazv�azazaz1t�t�t�t�'"t� t�t�v�v�!v�t�#t�t�$%&t�v�v�t�(,t�)t�*+t�t�v�-t�./t�v�0v�t�v�2az�azaz4az56azaz78azaz�Bp�:;o<V=I>az?C@azAB@M@|DGEFb�az@az��H��azJSKPLNazM@azazOazE�QAeRME�azAeTUaz�azW\XazazYZaz[azc�az]i^c_aaz`dazazbAeazdgefazMc�azazh`�azjazkmlaz@azMnMazp�q|rusM�aztazM�vyM�wxazM�azzaz{az@az}�az~�az�Aeazaz�@az��az�az�azN�az��daz@az��������az�azty�azazAe�azaz�az|az��azaz�az����az����azaz@�azM�az�az�az�az|�������L��L��L��L��L��L�azL����azL��L��L�az�azd�az�az�az�az|����|�|�|��||az��|�|����||azaz||����|�||�B�||az����|���az||az���|�|�|az||�|��||HG������|�|�|az��az||�|az|�v�az���|�|�|az|��|���|az|az|�|�|az��	��az��az�_az�az�az@azaz���|��|�
azaz
azazwazv�v�azazaz@ aztyaz|azazazt�az|Ae|az!"az|az$�%4&az'az(2)az*.+az,az-az|az/1az0jazazj3az��azaz56P7B8=9az:az;az<az�az>az?azaz@A@azS%CHazDE@F@G@b�@IazJMKazazLaz��NOaz|p�azQhR_SVazTUE�azE�WZXazE�YE�az[]az\��az@^Qazaz`afbdcazAe�azeazH:gazH:azi{jskplnmazaz@oazaz|qazazraz|txuv@azwazazAeyazzaz��az|�}�~azazazt��az����azazAe�azaz�az�azBaaz������������az�|�azaz|az�az��az|azaz��azaz�az|������az��azaz�az��MazM����Mazaz�`�azaz���az||az����az�az�@azaz��az@az�azaz��azazAe����az�|������azaz��azaz��azaz|��az�az�����az||azaz`��az�az�az`��`�az�������az�az�az�`�azaz����azazLaz�azN�������azazAe�az@az�az���az���az�az�azaz����waz����������Ba��az�azaz��az|azaz��azaz�azH:�azazAeAeaz	azazAeazazAe
azazAe@
-azaz|azazMd]@azQazazaz@@AeAeaz &!az"$#azazAe%azazAe'*az(az)az�@+azaz,az@.8/az0512az�34tyAeAeaz�6�7�azaz9:?;=az<@az>az�az@BAazAeazazC@azE�F�GeHPIazJazKazLazM|N|O|az|QazRazazSazTazUazVazWazXY]Zaz[\gCazv�gCaz^az_az`azabdazcb�gQgCazf�gqh|iazjazknl|m|az|oaz|p|azr�azstazuxvazwazgQazazyazzaz{|gQgQ}gQ~gQ�gQ�gQ�gQgQazaz�az�az�az�az�az�gQ��gQgQ�gQ��gQgQ��gQgQ���az�����az�az�az�azM�az��az�az�az|�azaz�az�azv�az�az�az�az|���az�az�az�azaz��azaz��az�azaz��azaz�az�az�b�az�az��az�az����azaz|���R�V��������R���|��"E�"Ed"EL�|��az�@&����|�||�|�|��||��|���|�|az��az�az||���|�az||�|az��az�az��az��az����az��b�azb�az�az��gCazgCazaz��az�az�azt�v���|���az�az���|�|az|�az�az|azazazazazaz|
pazazaz	az|azaz
azazazaz�azazazazazazazazazazazaz�	�	Y L!@az"#az$7%*&az'az(az)az|az+az,azaz-.az/az0az1az2az3az4az5azaz6wUazaz89az:>;=<az|azv�azaz?v�azADB|Cazaz|EazFazGazHazIHGJHGKHGazHGM�N`OEzPTQazR|S|az|azUVZWazXYaz�az@[az\^]azazw_azazwahbazcazazde|fazgazaz�Bi�jxkrazlmonazjazpqgCv�v�azazstvazuwazazwazb�yz}az{|mkXazaz~azu������azazu�az�gCaz��az�azgQ��gQazv�t���az��azaz��az��w�������az�gQazv�azaz��azgQaz�az�azt�az���az����az���������b�kXgC�azwazaz���wazazb�az��az�azv�az������az�az�azv��az�az{�az��az�az�w�az�az��v�v�jaz�������azazv�az�azu�����w��wv�azaz�azw���az��azw��"v����az��az��azu�u�v��	�����az��az��azaz|az�az�az@���az��az�@az�az�Tazaz��azaz�azAe�	�����azaz�|g4az��azaz@���azaz�daz���azaz|							�az	azgQazaz	az	Qaz	
			az�	
��!�		�_azaz	azAe		8		%				az	az	azAe			azAe@	azQm		"	 az	!az@az	#azaz	$az|	&	/	'	)az	(azAe	*	-	+	,AeF�F�az|	.|�	0	5	1	3	2az�azaz	4az��az	6	7az|az	9	K	:	A	;	>	<az	=azaz@	?azaz	@azAe	B	G	C	Eaz	Daz@	FazAeaz	Haz	I	J@az@az	L	Paz	Maz	N	Oazaz
	Q	Taz	Raz	Saz|	U	W	Vaz@azaz	XsGaz	Z	�	[	n	\az	]	l	^	_az@	`az	a	h	b	eaz	c	dazaz�az	faz	gaz�B	iaz	jaz	kazazv�	mazAeaz	o	�	p	�	q	�	r	{	s	w	taz	uaz	vaz|az	xazaz	yaz	zaz|	|	�az	}	~az	az@azaz	�	�azaz	�@azaz	�	�az	�az	�	�az	�|azaz	��az	�	�az	�	�azaz	�	�azaz	�az|	�	�	�	�	�	�az|az	�	�az|azaz	�az	�az	�az|	�	�	�az|	�|	�az@	�azaz	�	�azazAe	�|	�azaz	�az��	�	�	�	�	�	�	�az	�az	�azaz	�az|	�az	�azaz	�	�az	�azaz	�	�az	�azaz	�	�azaz	�az	�	�azaz	�gQaz	�az	�az|az	�az	�	�	�az	�az	�	�	�	�	�cW	�cWazcW	�|cW	�cW|	�az	�	�az	�azgQ	�	�az�gQaz	�az	�azaz	�	�azaz	�	�azaz	�az	�	�azaz	�	�azaz	�az	�	�az�+az	�
�	�
^	�
>	�
	�	�	�	�	�azaz@az	�az	�az	�	�az	�az	�azaz	�az	�az	�	�	�azmv�az	�
az	�	�az	�az
azaz

az
az
azaz

azazgQ


	




v�t�azaz

v�gC
azw*�"
wU
azv�

wUjwU
azaz


-

#�

�

|�
�
��
 
!��
"|�
$
)
%�
&
(�
'�|�|�
*
+
,�6��|
.
5
/
2�
0
1�|��
3
4�|�
6
9
7�
8�|�
:
<
;�|�
=����
?
Kaz
@
Aaz
Bazaz
Caz
Daz
E
Faz
Gazaz
H
Iazaz
Jaz��
L
X
M
R
N
Qaz
O
Pazazmaz�&
S
V
Tazaz
Uaz|g�
W��kaz
Y
Zazaz
[
\azaz
]az|
_
�@&
`
a
�
b

c
q
d
kaz
e
f
haz
gaz@
i
jaz��azaz
l
m
o
naz|azaz
p�az
r
w
saz
t
uaz@
vaz@az
x
{
yazaz
zaz|
|
}azF�
~azQaz
�
�
�
�az
�
�@
�@az@
�
�
�az
�az@azaz
�az
�@az
�
�az
�
�Ae
�AeazAe
�
�
�az
�azAeaz
�az
�azazp
�
�
�
�az
�
�
�az
�
�az�az
�az
�
�d{azaz@
�
�
�
�
�az|
�Eaz
�
�
�azazc�
�az|az
�
�az
�az
�az|
�az
�azaz��
�
�
�
�
�az
�
�
�az@az
�azH:az
�
�
�Ae
�AeH:az
�
�Ae
�az@
�az��az
�
�
�az
�
�
�azazM
�az|azaz
�
�az
�E�azE�az
�
�az
�az
�az
�
�
�
�
�M
�M|M
�|M
�Mazaz
�az
�
�azaz
�
�azaz
�az
�
�az
�azaz
�
�azazgC
��
�?
�
�
��
��
��
�
���
��
�
��
���
�
���
�
��
���
��4�
�
�
�
�gQgCgCb�|azazazazgCazazaz	gQ
gQ
gQb�gQgQb�gQ|8azE�/)az azazazazazazazazazgCaz!"az#az$az%az&az'azaz(az�B*az+F�az,-az.azt�az0azaz1az2az3az4az56az7azw�az9>az:az;az<az=azv�|az@�A[BNCIazDEF|az|GHaz|azazJKazLazMazaz�azOPazQazRazazSTazUazVazazWXazazYZazaz�B\v]i^c_baz`azaazwwazdgeazazfazmazhgCazjpkmlazazu�aznoazu�azqsrazazu�tazuazazu�azwxazyz|{g�Mg�}~���;�;g������M����M����M���������az�az�az|azaz���az||�|az���azaz�az�azQ��az|az��t�azt��az���az�azt�azaz��azaz�az|����az���az��azAeazaz�az�@az�az�azaz���|az|az���az����az�az@�||az�@��az@Jaz�az�az��az�dBa��Ba@gQ|����az�����|az|�az��azaz�az�az�az��az�azaz��azaz�azw��az��azaz��azazv�|azaz�az����|az�az|az�������wmwwc��gCazazgC����gQw�gQm��w�?�gC�
�azaz��	az��azaz��azazwazwazwwaz�azazaz
azazazmazazazazazgQazw�azgQ&#_�{
b� |!i�".#c�$&N%NVpcW'cW()+aN*a]��,-aNd{��d/Q0?17253b�4b�c�azm�6m�d{8;9b�:Lc�b�b�<=>iM`�ML�@FAEBDCazaNLb�b�4PGKHIMd$�J���LNMdazb�OPg4lc�MR^SWTVc�Uc�drXd{X[c�YZb�azM�^\d{]nWd{_m`gadbccWlq~m�efd{m�#VxvhjiliMNklc�cWBfm�nuorpqd{Lc�aNstn�!��Hd{vywxdazdliz{nWM�{
azn�}~�aN�����aN�aN�aNLaN������azb�rXlx��d{L�)rX����L�aNMN��NcWl�iM��������c�NMc���aNz�c�aN����b�c�b�M��MdMaN������LaN`�c���c�azazl�����`��dd��d�dd��d�dd�Dc�n�aN�aNak���������aN�aNdL�aN�aNb�b�aN�aN�aN�g4aN��������Mc�c��V��d{Mc�c�����NQ�rXQ���MddQ�������s8Mazb�Q��iMp���b���VQ���b�NL�MaN�����aN�aN�b�iM���aNLaNaN�aN~�������dc�j�nW`�aNaN�aN�aNiM�
P|���
<�
/�
&�



cW
cWcW�R
cWcW�1

 
cW
�)
	


�R


�)

t��;t��;



�)t��\
�;�\
�;�\�;

t�


�)�R�R�;
�)

�)�;
�)t��)
!
#
"�|H:��
$
%�cWcW`�
'cW
(
+cW
)cW
*cW`�
,
.
-cWcW`�@H:
0
5
1cW
2cW
3cW
4cWObcW
6cW
7
8
:
9cW`�cW
;cWcWe
=
H
>cWN
?
@cW
A
D
B
CMg_dN
E
FNb�L
G�i1cW
IcW
JcW
K
L
NcW
MdNbcW
OcW9q~
Qd
R
S
Vd
T
Udb�d
Wd
X
_
Y
\
Z�M
[~M
]M
^i�e�i�
`
aq~L�b�K�
cS
dB
e
�
f
�
g
~
h
p
icW
j
m
kak
lc�b�b
nku
ocWecW
q
v
r
sM�aNcW
t
ud{cWc�
w
ycW
xcWc�
z
|
{cW&c�
}��cWc�

�
�
�
�
�cWd
�
���
�b�s�cWd{
�
�v�
�j�xvcW
�j�
�biMcW
�
�
�
�L���LL
�d
�M�b
�
�
�
�
�cWcW
�
�
�cW
�biMcW
�cWL�
�
�
�
�cW
�
�
��cWcW*
�
�d
�cW
�
�az
�
�
�
�az
�azaz
�az
�
�azaz
�gCazaz
�
�az
�azaz
�az
�az
�gCazcW��
�
�cW
�cWc�ak
�dcW
�
�
�
�
�
�
�cW
�azdcW
�
�
�
�cWd{daz
�L�L�d
�
�b�
�d
�d#eL
�L�cW
�
�
�
�L�
�M
�cW#e
�
�M
�ecWc�
�ecW
�
�M
�
�
�LcWliL
�
�
�
�cWLt�cWcW
�cWL
�
�

�
�
�
�M
�g_
�
�
�M�rM�M
�
�
�
�
�
�gnb�`�n�
�
�3Fn�b�N
�
�
�
�@Q�McW
�c�}�M
�
�
�
�
�h��k���z͉͙ͩ͹xvi@	n�=���{���u�b�p�p�
d�c���sm�c�cWc�Q�c�Դc�- d]d]M�lb�d{aNaN!��"��#$��%��&��'��(��)��*��+��,������aN./;0aNaN1aN23aN4aNaN5aN67aN8aNaN9:aNl�aNb�<=@>?Mm�c�b�g4A۱MM�CM�DEM�M�FGM�HM�IM�M�JKM�M�LM�MNM�M�OM�PQM�RM�@M�TeUZM�VWM�XM�YM��"M�[_\M�]M�M�^M��"M�`acbM��"M�dM�M��"fqM�ghlM�iM�jM�kM��"moM�nM��"M�p�"M�rvsM�M�tuM��"M�wM�xM�yz�"M��"M�|�}�~q��������d���d��MdMdmxv�d��l�d��b��ML��cWd{q~c�d��d������mdNc����d{߫�߫�߫�߫���߫�߫�2E߫��߫�2E߫߫�2E߫akty����xvd{Mc���Mn�M`�����d�������lMaN`���lMML����n�LNg4��L@d{L�d�d��L�dL���d�����b��b�cW�dd��i����LcW�dt��dcWL�����d��ddc�����b�d{Nd��L�g4`�L�������c�cWg4L��g4dakd{d�d�dc��0�������c��dtyn�d���ML�c�d���dd�dL��d��cWdcWd
~�`�cWd��
	@c�`�q�d{`�d{xvdb�rfc�cW��d.$cWd$LM�azd{q~c�! M�L�`�d{"#cWd`�~%(`�&'Mc�cW),*+�*�$$��b�-ML�b�/d�C1DM23:M457M6b�d89c�Лc�q~;@<>M=dq~��?��LAw�BCc�ddMEcFUGNHKIJL�q~cWlLML�dMcWORPQc�cWM�c�STdd{aNM�V]WZXYd{L�MM�[\c�b�c�+^`d{_M�dabq~dg4c�dledfighMb�Mn�jk@akdMdmxvnopg4MdMdrs�tudL�v�w}xzyb�nWb�{|K�d{L�aN~�d{M�b���Mt�g4cW�����b�K��d]li��c��N+NQ�b����b�d]d��g4c�c�b���������db�p�c����LiM�M�akd{M����dc�b�ak��xvdd{��b�Mb�������lM`����,L#�g&�=��L�c�L��,����azd{�d��d{t�c�d{d��@����d�������dd�M���M����)x�O����~��Od�M��M��dp�b�L�d��L�c�aN��d���iMNc�db����c�de��,��d�������Mc�g4c���d{g4�M����b�M`�c���L�lnWl�
��d{�d�Nak�g4��L�����M����o���;��o�;q��q�M�d�M��g��+��J��M��	dM�dddd
dL."NL�L�K�`�d{M�cWL�b��b�di@d !�mm�#d$'d%&ddL(+)*M�c�M�cW,-�Hldc�d/031dL�2ږe�4957c�6b�M8c�b�M:=;<akt�nWd>?c�dc�dAoB`CKDHEdFlcWGdb�IJkp�M�L�LQdMNPdOdp2dcWRYSVTUc�n�b�c�WXL�d{c�x�Z][\dM�d{li^_Nc�n�c�dadbcidfNe`�g_ghMM�NdjmklazL�d{L�ndMNp�q�r}swQ�tuv�QMdLxzyq~Mn�{|d{db�N~b�dd���c�d{@M�����d�L��Ldd���M�Lc�d{�dd���t�d{�,d{��d��dd�d�db����d����Md{d@�dM�nW����d�Ld�L�db����dbbd��dbdcW���@��������������li�dMli�Mdb����dMc�dd�����c�d{cWd��M`�d{M�d��d��N`�d`�L�@�d�d����p�����p���p���p�r�p��p�e�p�d������c�cWb���dg�dd{����db��Xd��akc��d���>ug4�	�����dc�b�dNd�������Ng4dcW����`�`�l����ldMd��L�b�b�b�b�b�b�b�b�b�b�c�M�
d
c�aktygnlidL�dd{`�d{db�c�M:2+ Lc�`�L�!"`�L�#g4$g_%g_g_&'g_g_(g_)g_*�g_,/-.L�dg_`�01�xt�Lli3645db�dazak789�,b�c�`�d;d<c�=>?b�azd`�A�BzCbDdETFMGJHI`�N`�d{KLcWdM�lNQOPg4NlL�RS`�d{L�dU[VXWb�b�M�YZd{L�L�M\_]^dc�n�d{`aL�NM�q~azcddetfMQ�g�hiQ�jQ�Q�klpQ�mnQ�Q�oQ���Q�qQ�rsQ�Q���uxvwdL�b�ddydp�{�|d}�~d���`�lcWc���aNb�j�b����LdnWL�+�dd������Mb�d{M�b�d����akb�aNd��n�M�Md�������������aNL�i���L�c�c�t�����diMbtyg&��l����N�db��dbdb{
`��d��Mb�����g4b�McW��aNnWdL�d������MdL�l���NNL�����d{c�lN��M�d$N`�nWd���������M�������L��L��L�L���L��L�L�i�L�L��d{c���M�`�c�������d{c�Mb���p�cWdb������b��Ne�`�y7b���b��g4L��LaNdM����s�/���d�����Xc�nW�nWdb�nWj�t�t�Mg4b�n�d	
dMd
Nn�b�Mb�g_ddn�dn�d�Xdazq�azd*d#d !"c�dq~d{$'%&dp�Mg4()d{azt�`�+dd,-d�;.azd0Q1Ad23:4756az�Zn�aN89azaNd@;><=NdM`�?@d{azc�� dBCJDGEFMd{�F�MHIdiM�@KNLMd{cWH:c�OPcWc�az�R]S[dTUXVWd{M�p�YZg4L�Ndd\dN^m_f`cab�8c�c��8dem�g4c�q~gjhiML�b�L�klnW�d|dnoqdpakdMrl�d{t�u�v�w�x}y{zddd{|Md{d~�cWd{dl�g&l������d{NNb�cWd����NdNd�M�MM�M�g�M����b���X�dli�L�X�v�d������c�q~t�c���L�kudak���b�m�b�d��d���dgn�gn��M�����n������d���dMd�L�L��L�NM����N�Mp�v���j*�dl�j*daz����d�����d{aNLd{��d{c�xvc�d�d���d{g_L�M���d��n��hld���n�d���N�db�dc��H�������������nWc�c�d�Ndc�L���d�dMM���ld`�L�d��az�d�db��d�ddM�d�d����Mazd�i�p�d
y7L��L`�d	b�p�g_M
i�dp�`�MaknWdddddddddd�LL�2) L�!%"#Ldd$nWdd&'(dL�M�N*d+d,/-.c�aznWg401q~nWnWg_d34A56L�ak7b�8M9M:M;M<M=M>M?M@MMO�BECd{Dd{d{�{
FGMMd{I�JxKkLVMSNPOdb�dQR�rXlic�dTeUg4)�WZXdq~Yd�d[\]b�v�gC^_gCaz`afazbazcd�?azeaz�?�?g�?hiazjaz�?azlrmnb�Lodpqi���`�e�stLdb�uvwlids8dy�zd{|ML}c�~w��azv�����L�פl���azc������i#����<v���az�az�azaz��az�azaz��azaz�-d�����b�ku�� �� �� � �� ��� � �� �� �� �� ���� d�d�`��cWq~���6�����D�����������ak�b��M�M���M�M���M��M�M��M�rakM�d{��dN|ld������bMMN��b�d{MbM�g4��az�az��az�az�az��azaz�gCaz�az�Baz����az�c�M���cWnWcW�McWM����M�c�g4��m�c�b�c��b���xvc�lg_�����L�d{�MdaN����iMM��~e�dlM���xvM`�c�����l�MnWMLMMnWM	��LL�L�
L�v=
&dnWNlMi#ؒLlO����N�QA��Q# c�!"p�x�d$��$e�%e�`�'0(+)*c�b�b�Ԧ,/-LM.My�b�d1<2;3�H45�Qd�C67d8d9:i#�Q+��Dq~L=AL>?@a]aN�aNBMCM[�E�FgGWHOILJKc�Lc�LMNc�b�L�xvPSQR`�`�dxvTUlb�VcWg4c�X_Y\Z[lNL�d{]^Lc�d{L�`dacbde�Mdd{efL�dNb�hyiqjnkmQ�llxrXb�q�opMb�ML�rub�sb�t~�b�vwb�l`�x��x�z�{|~}`�c�Nb�`����`�cWlMc�����`�g4McW���b�dL��xvb�M����������cW�Fb�N���F�XxvcW����b�MaNg4����d{b�ld�dM�N������b�xvc��b�@��L�M`�c�����c�MNg_��b�M�aNp�d{��������b�d$d{M��ld{�d{c��O�����g4b�d=�d��g4M��L�Nd�������Hb�� b���b�`�j*cW����b�`�MM���Ml`�M�M��������b�c�N�dL�d{����L�d�c��M��M��M��M��M��M��M��M��M��M����c��ddm�`�d{������{
d}����azb�azkX���li��xvNU�c�g_d{��d{d?"lc�ddb�$	
b�L�c�M
cWc�d{{
dMMNM�d{lc�b�c�b�Nd{Md{l! d]c���l"#b�Mm;b�%C&@'6(.),*+d�Xc�MnW-Mc�/201c�d{c�L�34@c�N5Md{7=8:9@db�M�;b�<d@>?c�c�g4dABb�c�d{c�DKEJFIGHt��IcWg4��MrXxvLMLiMN�O�P|QWRUS`�T��lc�MVMLXyYK�tkZ[ak\�l]c�l^�l_`�la�lb�l�l"dlei�lf�lgh�l�l"�lj�lk�l"munro�lpq"�l"�ls�lt�l�l"�lvw�lx�l"�lzM{Lc�d{}�~�b��b�c�i����b�akc�@�akc���b�nWM�c��iMc���cW���d�g_�l�g_Lxv������b��L�c��xvb�L�xv���lb�c�n�M�M��M��M���MM����N�MML�c���ML�M�����c�M�Mdd��M�ddM�M�M����gnd]�b���N�ViMOT���3�������M�M�M��c�dL�d��������cWMMb���cWl`�c�����n�b�di����L�d`���ML�b�c�����M���B��dN�MgnM��M�������������������Ae�gnN�� ��LE|�b�����LdcW`���Ba����"wgC��dv��MM��m�MNLnW	
NNg&d
LgnM`�NnW���^L�c�c���N��dg4tynW'$l !g&"#�yllg	g&%l&��(M)/*,Q�+M��-.ؒNMe`�012d�ob�c�4]5QM67M8G9D:C[�;<Q�=Q�Q�>?Q�@Q�Q�ABQ�[�Q�lxMEFb�iMiMc�HJtkItk�iKLtkak`�tkNO�g&PLMq�RZSXTWLUd$Vp�b�s8dYL�ML[ML�\L�N^|_M`nagbd`�c`�defdeb�c�hkijazb�l�mlmc�d{Mt�oupsqrg4L�McWdtL�dvywxdtyc�b�z{d{b�d{cW}�~��d{��gnli���N��M�e��e���e��e��e�e���e�e���e�n�e�Ngn�������xvb�M�xvMb�f�M�akgnM�����NQ�L�d{g&�g&�������M���M��M���������v�����M��d�bc�L�dc��M���`�c�M�i�M��qw�qw�qw�qw�qw�qw�qw)�qw��������L�`�����M�q�tONM��LM�d��t�NQ�N+M��M�MMg�M�����Lb�b�i���g&���NM�LiM���db�d��xv����xv����M�M��L��MN�q~��M�$liM��������M�ld��Ld{@c�����d{ldd{d{�c�l�M�lLMM�Nzg_db�ld{gC	
MM�
Mc�c�aNM�Mb)b�L�Mx�b�b��PM���+#d ak!"dj*d]ty$*%'&d)~�()Mc�d�VLb�,.-L�ML�/3M012dNbVpM4Mb�5Nj�7�8�l�9:z;Z<D=C>A?@Mc�d{`�dBaNM�g_M�ETFMGJHINm�q~n�KLn�d�w NQOPlig4g_LRSc�m�M�q~UVd{cWWd{XYM`�aNj*[p\b]aak^_`e{cq~L�L�b�cidgefd{liq~L�`�hdN*jmkld{n�cWc�noc�b�g4L�qrMNswtvc�u&�vdM�xyd$�dl{�|�}�~�d�ku��d{�b�cWg4����d�cWt���MxvaNg_����LazM�c���N�L�akd{ak����������c�cWL�m���dli`�c�����dg4`�b���@`��g4����`�c�xvM����d{c��3ML���������M�c�dL�c�g4t�����g4g_N`���`�dnWd{��Ll�d��azaNb�l�/�����������L�`�b�d��L��L�d��d`�`�H:��L���{
M�dMML����ak���X/�{tkX>�MH ��B�H �H �B��l�M,q�`�������c�d�d{�������ue�`�e�b��ڥ���e���e�i�`�e���`����xv���H:`�`�H:���`�m�b�`�b�LMb�cWc�L�d{H:	
Mc�c�d
ו`�cWM�`�`�`�c�NL�֖M�c�֥c�M�t�dq~�H "!`�q�c�#$c�azN%&N'N(N)N*N+N,NN-.NU�N0v1O2E3=4:5`�6`�7`�8c�L�9e�Mb�;c�<M�`�>?`�l@CAB`�MakcWDxvM�dF`�GKHIxv`�JcW`�M�L`�MNtyb�OTdPcQ[RVLSTU�q�q�b�WYXLx�`�Zb�`�c�`�\]`^_g_Nc�b�abNcWx�d{dneifg`�Lh�gc�`�jlk`��;ak`�mc�cWorcWp`�qd�N`�stu`�i�c�b�w�x�y�z|�P{`�b�}~g4c�`���w�`�g4�L������c�w���X��c�w�MM�cW�cW�g4w�`���`�`����b�c�b�cW��`�������d{`�cWg4L���aNNdd{����d{c�b�g_��c�`��d{�kub�p���M��M���M��M��M�M��M��M���M��M��M�M�������Z��Z�M�Z�����Z���M��M��M��M��*���������g4�g4��gCg4b�q���g4Md`�����Ldg4�g4�d{c�g4����g4�db�M����������`�b�d{az��c�aNln�����McWazn��g4Mb�������NMdM��liL�d{M�N��b�d{azl�g4�g4Ng4�g4���g4�g4`��L���`�c�di�g4c�dd{Lb�	
azd{d{L�
`�c�L�b�b�g4d{`�c�b�`�dLg4c�d g4dg4m�c�Ld!%"b�#$�Qd�d&('dg4M)lL�g4+_,B-5.aN/20aN1aNc�aN3aN4aN�_aN6=7:8��e�9e�"�;b�<`�e���>?|`��%@tkAtks�CWDOEH`�FlGL�aNILJKldakL�MNLdNg4PcWQTRSL�aNdMUVLd{L�b�XcWYcWZ\cW[cWd]^dlt�cW`�awbjcWcdgefn�d{g4L�hicWL�aNlikrlomnlLb�Mpqb�dNc�svtudcWb�g4g4c�x�ycWz}{|c�dlc�~d`�b�M�cW�����L�tyaNd��Nb�cWaN���cW�cW�cW�cWL�N��cW��lcWl���b��l���,c����cW`�lcW�NcW�L���L�L����������������@N|g_��g_|M|��g_N�g_|g_�M����p�p�g_g_�tyd�g_����M��g_M���Mg_L�g_M���g_M�g_��g_�������g4M�M�d{��M�aNt�c����NnWd{dM������N�c���N�N�N�N�N�N�NQ�N���g_�N�N�N�N�N�N�NQ�Ng_c��dN�{
d���g_�g_dg_g_�g_e���p���g_��LM�g_�g_lxՙg_�g_���g_��dg_c���dg_Nq�Nc�M��A.	
L�
c�ML�LN�H`�xvq�NL�`��K���^azgCMM~&!L�L� L�xl"$#L�t�N%L�ߜ�')L�(L�c�*,c�+L�iM-c�L�iM/30L�12b�c�b�g_48L�56L�c�7M�iM9>:<;L��U�Q�=iML�z�?L�@dL�BcCSDKEL�FHGL�L�dIJg_d`�b�LPMd{NOlg4L�^CazQRddL�TZUWVLL�dL�XYdL�d[\Md]`^_L�e�e�L�ab`�L�e�L�dqelfigp�hdc�L�jg4`�kb���mpnloL�c�L�dL�rysvtL�u`�c�L�L�wL�xNQ�z}{L�|L�c�L�`�~�����������������d�L��p�L���Q�L�L�nW��M��nWRL��hL��L�d�����L��L�N�L��q���d{d{dl#�c����`�L�d�d�dL�Ez�������L��L�L�`�`���L�`�L���ML�����d]�i`�L��NL�`������L��nWL�d���L�cWL��L�q~L�L��L��L��L�q~������L�������y3`��nWcWL����M�LML�L��L��L�M����L�L��M���azMaz�Ng4g��L�L���azL�az����L�����Ng�L�L�i����Fj���i�L�L��L�g����L����L�ML���gQgCb�azL�����L�iL�L�az�c��%��g_p�	g_g_e�e�e�e�@Mg_
g_p�g_
g_`�g_g_L�xvMMt��+dg_Lb�dNi���#�i�#g_ !"e�b�ty`�$dtkak&?'2(*)cWg_b�+/,.-LL\
g_�x0g_�x1icW3:45g_g468rX7rX 9L�g_L�;><c�e=rIb�`�d@IAEBDj�Cj�idNFdGg4Hg4NcWJRg_KLOMNc�L�t�PQc�L�M�$$SYTWUVNnWcWldXd{L�Z\L�[nWb�]^�,dNЛ`TaXbAcyp�dp�efNNgNhimjNNkNlNU�NnNoNpNqrNsNtNuNvNwNNxU�Nz{nW|ak}~akq~m�ak�nW�`�����L�������L���L���L�L���L�L��L���L�L���L�L���L�L�������L��L��L��L�L����L���L�L��L��L��L��L��L���L��L����L�L��L���L�L����L�����L�L���L��L��L�L���L�L���L��L�L���L��L����L�L��L���L�L���L�L���L��L��L��L�L��L���L��L����������L���L��L��L��L��L���L�L���+�L���L�L���L�L��L���L�L�iL���L�L���L��L�L���L��L�L��L��L��L�������L��L��L��L��L��L�L���L����L��L���L�L��L�L�L��L�L��L�L�L�	L�L�
L�L�
L�L��L�L�L�L�L�L�L�L��L�L�L�L��#L�L�L� L�L�!"L�L��L�$%,&�L�'(L�)L�*L�+L��L�-7L�./L�0L�1L�2L�35L�4L��6L��L�L�89<:L�;L��L�=@>L�?�L��L��BVCTDLEcWcWFGcWHcWcWIcWJcWKcWNcWMcWNcWOcWPcWQRcWcWSNcWg_UnWg_WN`�n�Y�Zvg4[\g4]s^r_g@&`a@&@&b@&c@&d@&ef@&@&�h��i����jk��l��m��n��o��p����q��tO@&H:tuH:@&H:Aew�xxvy�z�{�|�}�~�U�Mc�d�c�xv�xv��b�NnWc�������c�d{L�L�d{dt�����g_cW`�aN��g4c�Lb�xv��xv��L�d{g���g4xvdxv����������lg4dN��xvlLb�����d{L�LM���b�d{b�c���xv���g_b�ak`�����b�L�b�dL�g4d����xv���L�Mc�akxv���`�s8g_az�����y7g4b�xvy7cWc������xv����xvq~��NVp�Q�d�q~�MNxv�������NLd@��b�dc�li�N��m�lxvb�xv�M���d���b�xvc�N��H:�Nt���xvNNb�xvj��aN�nW��nW�����c����c��m�Lc���az�Lakc�m�d]Nq~g_Qt�%	dM�L�d{
d{cWakb�
MazMd{d{d{}�kub�m�licWc�j�d{Mc� `�d{c�`�!$"d{#g_��g_b�L�&:'1(,)*nWp�p�+dl-.c�M/c�M0�4M2534d{t�d{N6d{d789NL�iML�;K<H=Gb�>?B�;@AM�O)xCEDM�;MFO��MMc�IJcWkud{nWLNMb�Md{OPdb�M�nWp�RzSi�n�U"�V�W�XfYddZd[\a]d^d_dd`Bfdbddcdded@dgohddidjkddldmndBfddpqwrddsdtudvdd@x}dyzdd{|ddBfd~d�d�dd@����d�d�d��d�ddM����d�d�dd�d$$�dd����dd�d�d@�dd�@d����d��d�dd��dd�@dd��dd��d�d�d@dd���d��d�dd��d@d�d�d�d��d��Cdd�d�Q� ������<������������Lg4c�d��@&c�Nxv����g_dn�b���xvc�b�d������d{xvdL���j*liMn�����b�Mdb���b�iMlL���������dgng4M��L�g_p�L�����t�xvcWaN��Lc�c�cW������L�dc�L��tyd{L�g4����h�d{b���L�cW`�M�b�g4dxv{
b�b�c�	
b�L�l
`�`�Mak`�Mg4aNdd{`�b�c�MdMM`�`�d-& #!"lb�M�c�$%M�Mb�M'*()NnWlM+,Mc�M�N.5/201M�MaN`�34cW`�L�`�6978`�lM�l:;c�g4Mb�=|>]?N@GADBCb�NM�MEFcWd{n�aNHKIJi�`�c�b�LM�M�N�bOVPSQRMb�d`�TUcWb�lg4WZXYMNL�d[\c�@L�g_^m_f`cabM�c�L�c�deMakc�cWgjhidM{�aNklxvldMnuorpqN�Pd{��stlazc�^Cvywxc�cWNdz{p�d{Nb�}�~������Ng_db���p�[�L�������*�=[�0��Lv������M���h��*�{�*������\c�aNd{��t�L�lib�����d{�d{v��iMd{M���i�i���i��i��i��i�i���i�����dM�LM��dc���`�����b����aNc�b�L�����g4c�b�c���n�b�cWc�������n�b�d{b���c�gnaNl����b�d{`�d��xvkuxvN�Z�����������dL�iMN��b�cWiMd{����y7cWaNb���NM��z������c�dL�d��c�azn��,����c�t�L�b��aNxv�d��d�q��q��q�q���q�o�q��������c�NLc���g_b�db�b�d{t�L�aNc�dM	
MliNM
db�Md�Hm;xvb�akMd{c�<&lb�Ln�dMd{l #!"b�g_�;c�$%p�nWlL�'6(+)*t�xvЛc�,5-t�.c�/c�0c�1c�2c�3c�4c�Ԧc�g4d7:89c�t�L�lb�;b�g�=K>D?Ap�@M`�BCb�Np�dEHFGm�dg_b�IJMt�c�NLSMPNOnWM�b�n�QRaNp�b�t�TWUVMp�c���XYd{c�b�n�[�\�]w^p_b`aL�e�M�b�cd�g_ed{y�fgy�hy�y�ijmy�ky�l�ky�ny�y�oy��kqtrscWdM�duvlL�j�c�xy|z{azi�lid}~akaNML�����d{g4L�m��xvb�xv��������p�cWL�{
��d{kXm�c�����g4b�Md{��nWazku�0������az��?��?���?��?��?��?�?�w�?c�L��c�g4��N����azlL�dM�aNc�����������c��,Mg4��akL�b�`������Xd{c�`�g4�g4az������nWMd{c���Mb�g4N����d{nWld{��aNc�b�d��������e�L�M�c���`�c�dM����L�NiMb���b�j*L�l������c�Nc�c�H:d����c�d{nWc���L�i�d{b�� ;� � ����b��p�M��dd{d{�li�li��lili�li��li�li�lili�3�li����dL�b�l d{�I`�      d{b�b�c� b��Cc� 	 
 
  c�"�kuc�b�  b�L�aNl  $      c�b��^d c�d{   P���d$b�   b�d{aN   L`�b� ! " #t��<�iM % 0 & + ' *c� (�O )�o�d{`� , / -b�c� .M�d{c�d{ 1 6 2 3dc�b� 4d{ 5c�nW 7 8b�c� 9t� :��| < } = i > \ ? E @ Ab�{
c� B C D�bty�H`� F [ G X H���� I J Q· K L· M· N·· O· P·Η R· S·· T U·· V· W��· Y Z�;d{�H:d{nW ] c ^ _c�akd{ ` a b�L��e��� d h eb� f giM`�L�dL�b� j t k q l p mak n oL�MLxvd{d r sd{|�c�b� u z v w`�b�d{ x yd{d{� { |d{MdL� ~ �  � � �d{ � �b�d{ �=d{ � �db�b�g4 � � �d{xvc� � �d{b�db� � � � � � �b�c�d{M � �`�c�H:N � � �b�d{b� � �L� � � �d{L�t�Nc�xv �!� �!, � � � � � � � �M�d � � � � � �dg_Md � �xvL�g4J � � � �akxvxvN � �Jm��HL� � � � � � �akc�Md{ � �g4M�d{H: � �d{cW �`�d{ ��!d{ � � � �NMM � � � �NNO�N �N;N � � � � � �H:Naz ���� � � �xvn!d{xvL� � � �| � ���3���xvd{c� �! � � � � � � � �d{ ���j�rf � �cWdL��H � �m�g� �d �NNN; � � � � � �t�d{ �L��cW � �M ��d{dL � � � � � �dc�xvd � �L�db�b� �! � �dm�`�cWd]!d]M!!!!!!!!d!c�`�!	!
M�L�b�M!!!
!Ng_c�L�`�L!!!!!!b�d{Nb�!!g4c�[c�!!!!L�dMc�!!c�MdM�! !(!!!$!"!#aNd{c�L!%!&cWNj�!'NM�!)!+!*Md{�d{[!-!r!.!>!/!3!0|�!1!2L�dd{M`�!4!5!8!6!7cWMcWak!9!;!:c�iMcW!<!=b�akg_L�!?!V!@!G!A!D!B!CN�Nb�!E!Fg_g4b�rX!H!O!I!L!J!Kd{MפL�!M!N�rXM�L�!P!S!Q!Rg4b�`�c�!T!Uc�tyc�cW!W!d!X!cd!Y!ZM![M!\M!]M!^MM!_!`MM!aM!b~M`�M!e!k!f!i!g!h`�db�c�!jL�LL�!l!o!m!nl�L�Nc�!p!qn�L�g_c�!s!�!t!!u!}!v!y!w!xd{d]dc�!z!|!{dN;Ng4L�!~g4d{g4!�!�!�!��d{d{Lxv!�!�!�az!�!�az!�!�!�w!�ww!�w!�w!�w!��ww!�w!�w!�w�az!�azw*!�!�!�!�!�`�!�!�!�ymymvS!�ymymg�!�!�!�!�!�!�d]c�nWm�!�!�c��d�H!�!�!�!�d{b�t�@!�dazlx!�!�!�!�!�!�!�!�g4c�g4n�!�!�g_Lg4d!�!�!�!�g4`�g_lid!�dc�!�!�!�!�d{dc��!�!�d{L�!�M�gn!�"4!�!�!�!�!�!�!�!�!�!�b�!�Nd!�!�m�g4M�n�d{!�dg4!�!�p�dNq~!�!�!�!�!�!�p�db�d{!�!�!�!�!�!�c�azg4q~!�!�aN!�!�cW!�cWcW!�!�cWcW!�cW!�!�cWcWm:t�aN!�!�!�!�Md{db�!�!�g_b�g4Q�!�!�!�!�c�!�d{d!�p�d{!�!�d{dc�d{!�"'!�"!�"!�"!�!�!�!�Lg4g_b�"Q�akd""""b�c�azd""L�b�c�N"	""
"
""d{n��N""NMd`�""""L�@L�X""d{NNak"""""""d{Q�N+m�aN"d{d{c�" "#"!""d{dNg4"$"%d{j�"&d]t�N"("/")"."*"+daN",d"-wazwc�ak"0"3"1"2p�c�Nb�Mg_"5"�"6"]"7"K"8"?"9"<":";d{b��d{"=">d{�FW�L�"@"G"A"Fl"B�"C�"D"E�e�`�c�"H"IMc�"Ji#i�rf"L"X"M"Q"Nc�"O"PNMdM"R"U"S"Tazc�tyd"V"Wdb�`�ku"Y"Zd{Ld"["\}�d{}�"^"t"_"f"`"c"a"baNLM`�"dc�"eMdc�"g"n"h"k"i"jb�Ni�d{"l"mLd{b�g4"o"q"po�@ak"r"scWp�Ng_"u"x"v"wj�dM�d"y"}"z"{dd{"|p�lign"~"lL"�d{lih�"�"�"�"�"�"��M�d"�"�c�M�}�d{"�"�"�"�"�"�"�"�b�laNd"�"��,M�c�d"�"�dL"�"�@d{dxv"�"�b�M��d{"�"�"�"�"�"�"�"�n�akLd"�"�"�cWM`�d{d"�"�"�d"�"�3�L_�Ldn�"�"�"�"�"�"�"�"�q~g_dM"�MNd"�"�"�iMlcW"�"�iMg4dd{"�"�d{m�"�b�"�"�d"�"�d"�dd"�"�d"�"�"�dd"�dm�"�d"�ddm�"�b�p�"�p�"�p�"�p�"�"�p�"�p�"�p�p�d$"�%r"�"�"�"�AM"�"�"�"�@&"�@&Ae"�@&AeM"�"�@&Ae@&M"�"�"�"�"�"�@&Ae"�AeMN"�M"�@&@&"�H:"�H:"�"�H:�*H:"�%o"�#)"�#(@&"�"�#"�"�"�b�gC{�"�#"�"�gC"�gC"�gC"�"�gC"�gCgC"�"�"�"�gCgCb�"�gCb�gCb�gC#gCgC###
#gC#gCgC#gC##gC#	gCb�gC###gC#
gC##gC##gCgCb�gC#gC#gCb�gC####gCgC#gC#gCb�#gCgC##gCgCb�##%# ###!#"gCgQgCgQgQ#$gCgQ#&#'v�gCgCkX@&az#*#I#+#@#,#6#-#1#.#0d#/db�b�r#2#4#3b�rb�c�#5c�su#7#:su#8#9b�sub�#;#=b�#<b�d#>#?db�#r#AM#B#G#C#EtO#DtOM#FMtOM#HMM�M#J#Y#K#S#L#P#Md#N#Ob�c�sub���#Q��#R���Q#T#V�Q#U�Q�C�C#W#XA��CA�#Z$�#[$#\#�#]#�#^#�#_#z#`#m#a#g#b#e#c#d~�;~�;#f~�;�4#h#k#i#j�;~~�;#l�;~�;#n#s#o#q#p~�;~~#r~�4#t#w#u#v�;~�;~#x#y~�4~�;#{#�#|#�#}##~~�;~~#�~�;#�#�#�~~�4�4~#�~~#�~#�~�#�#�#�#�#�#�~#��;~#�#�~�;�4~~#�~#��;~#�#�#��;�;~~#�#�~~�;#�#�#�#�#�#�#�#�#�~�4~#�#�~�4�;~~#�#�~�4~#�#�#�~#�~~�;#�#�~#�~�4#�~�4~#�#�#�#�~#�~#�~�4#�#�#�~�4~~#��~#�#�~#�~#�~�;~#�~#�~�;#�#�#�#�#�#�#�#�#�#�#�#�#�#��4���4�;#����4��#�#�#����4����#����4#�#�#�#�#�#�~���4��#�#�~���4����#�#���~����#���#�#����4~#�#�#�#�#�#�#�#��4�����4�4#��;��#�����#��4��#�#�#�#���#��4~#�����#��4����#���#����4#�#�#�#�#���#�#�#�����~��#�~����#�#������l$$~$~$$$���;�4��$$$$$$
~$	~��~$~��$
~~$�4~$~$$$�;�4~$~��~$$h$$L$$8$$($$"$$�%$$�%��%�%$$ $!�%y�y��%$#$&y�$$�%$%�%y��%$'�y�$)$2$*$-$+�%$,�%�%y�$.$/y��%$0$1y��%y��%$3$5$4�%�%�$6�%$7�%�%y�$9$B$:$?$;$=�%$<y��%$>y�y��%$@�%�%$Ay��%$C$F�%$D�%$Ey��%$G$J$H$I�%��%y�$K�y��%$M$\$N$S~$O~$P$Q$R�4~��~$T$Y$U$W$V~~��$X~��~$Z~~$[~�4$]$d�%$^$_$by�$`y�$ay��%$c�%�%��%$e$f�%$g�%y��%$i~$j$|$k��$l$x$m$s$n$p$o�4�4��$q$r������~$t$v�4$u����$w��~�4$y��$z��${������$}$�$~$�$��$����4��$�$��4������$�$��4$�����$���$��4~��$�$�$�$�$�$�$�$�$�$�$�$�$��$�$�$����4$����4$�$�$�$��4����$�$��4�$�$�����4�$��$�$�$����4$�$����4~�4$�$��$�$���$����$��$�$�$���4�$���4��$�~$��$�$��$�$��4���$��$���4�$�$�$�$�$���$���$�����$�$�$����4����$�����$�$����4��$�~$�$�$�$�$�$�$�~��$���~$�$����4~��$�����$���~$�~$�$���$��4����~$�%4$�%$�%$�$�$�$�$�$�$�$���$��;��$�$��;�����4$�$��4$��4���;��$�$�$�$�$����4��$����4��$���$����4��$�$�$�$�$���$�����$�����$�$���$�~��$�$���������$�%%��%�4������%��%����%%%%%%%	%
�;�4�����;���;%
%%�4���;��%%%%%�4�;����%�4��%������%%)%%��%%%��%�������% %$%!��%"%#~������%%%'��%&������%(���4%*%.��%+%,����%-����%/%1��%0������%2��%3���4%5%G%6%;%7~~%8~%9%:~~��%<%@%=~%>~%?~~�4%A%D%B~%C~��~~%E%F~~�4%H%b%I%U%J%Q%K%N%L~~%M���4~%O%P~~�~%R~%S%T~�4~%V%Z%W~~%X%Y~���;%[%_~%\%]%^~�;��~~%`~%a��~%c%g~%d%e~%f~���4%h%k~%i~%j�;~%l%m~�;~%n~��%p@&%qAelxAe%s%�%t%ui�g_%v%{%waz%x%z%yb�b�gQ��v�%|%%}%~azgQv�j%�%�az%�v�gCazv�%�%�%�L%�%�%�%�%�%�%�%�%�%�%�%�%�%���LxvPWxv%�PWxv%�%�%�w�����w�%�dxv%�%�%�%�%�%�3�xvxv��b�%��m��%�%�%�w���Lw�%���L%�%�%�%�%�%�%���L��%�w�xvL%�%�%�%�������L%�%�xv3�3�xv%�%�%�%�%�%�b�xv��Lw�%�b�xv��%�%�w���L%�%�%�%�%�%���%�w�Lw�d%�%�%�%�%�w�3�L%�w�dL%�%�%�%���xv3�PW%�xv����w�%�%�%�%�%�%�����xv%���b���%�%�%�w�L��%�w�3���%�%�%�%�%�%�%�d��%�%�%�L��b�Ld%�w�%�w�xvw�rX%�%�%�w�w�%�%�%�xv%�xv3�%�xv��%�%�%�w�%�w���xv%�%�`�dK�%�w�%�xvLty%�L%�%�&%�&%�L%�%�L��%�L%�L%�L%�L&L&LL&L&&L&LL��L&&L&	L&
LL&&L&
L&L&L&L&LL&a"L&&L&y�L&L&L&L&L&L&L&L&L&LL& &!LL&"oYL&$0�&%)�&&(`&'&�&(&;&)&2&*M&+M&,M&-M&.M&/MM&0M&1McW&3M&4MM&5M&6&7M&8M&9M&:MMO�&<&I&=M&>M&?M&@M&A&EM&BM&CM&DM�JM&F&GM&HM�JM&J&s&K&QcW&LcW&M&NcW&OcWcW&PiMcW&R&\cW&S&TcW&U&Y&Vx�&W&Xx�cWx�y&Zx�x�&[cWx�&]cWcW&^&_cW&`L�&a&jaz&baz&caz&d&eazaz&faz&g&hazaz&iwaz&kwaz&l&maz&nazaz&oaz&p&qaz&razwaz&t&�&u&�&v&�&w&|cW&xd&y&z&{b�lxcW`�&}&�cW&~&cWp�c�&�&�&�cW`�cWdcWcW&�aNcWcW&�cW&�&�&�LazdL�&�&�&�&�&�&�&�&�cW&�cWe�&�cW&�cWcW��&�&�&�&�cW`�cW&�cWlicW&�&�cWcWli&�cWcW&�cW&�cW&�licW&�cWcW&�cW&�cWv�&�''ty&�&�L�&�'&�&�&�n�&�&�&�&�&�&�&�n�g4n�`���&�&�&�dl�n�&�dd&�d&�d&�&�d&�dd&�&�d&�dm�dd&�d&�&�&�c�cWlid&�&�&�&�&�&�&�&�&�&�L�c�dak&�&�dcWb�M�&�&�&�&�c�cWM�c�&�&�aNm�xvb�&�&�&�&�d&�b�d&�&�b�c�Md{&�&�&�&�db��d&�&�`�d{g4M&�&�&�&�&�&�&�ldj*&�&�Ng_M�l&�&�&�&�dg4xvM&�&�d[�c�l&�'&�&�d&�&�aNd&�&�d&�dd&�d&�&�d&�ddBf&�&�c�dc�d''`�'lg4''aNq~p�q~'''''	''
c�b�d{''
d{b�xvd''''`�dL�c�''b�dd{m�'''''''ll'lMp�N''c�cWM�N' '"N'!b�d{'#'$L�d{N'%'&cW9�cW'('�c�')'*'s'+'V','H'-'1'.N'/Naz'0azd'2'='3':'4N;'5N;'6N;N;'7'8N;'9N;N;N';'<dNNd'>'A'?'@dNNdN;'B'CN;'DN;N;'EN;'FN;'GN;N'I'LN'Jaz'KazN'M'QN'N'O'PN��Nd'R'U'S'TNddNdN'W'b'X'\'YN'ZNiM'[NdN']'^'`N'_Nd'aNd?N'c'n'd'gd'e'fNNd'h'k'i'jdNNd'l'mNc�dNN'o'p'r'qNNc�NiM't'�'u'|'vNN'w'x'zN'yNdaz'{NdN'}'~'�'d'�Ndc�N'�'�NdN'�'�d'�d'�'�dd'�d'�'�d'�dd'�'�d'�dd'�'�dBfd'�N'�N'�'�dNNb�'�( '�'�'�'�'�'�'�'�'�p�'�'�'�'�akp�p�c�'�'�lip�ip�'�'�'�'�p�'�lihb�'���p�'�'�p�'�p�c�L�'�x�b�'�'�'�'�'�az'�'�`�c�d]c�dg_'�'�'�'�L�p�'�'�c�cWc�p�'�'�b�'�#d'�'�c�M�cWp�p�'�'�'�'�'�'�'�'�p�p�dp�'�p�azd'�nW'�nWcW'�'�'�'�c�'�b�c�'�Mn�p�p�'�'�'�azi�p�d'�'�'�'�'�'�'�p�L�w�'�'�'�'�'�'�b�q~'�dd'�'�d'�d'�d'�dd'�d'�dm�'�'�b�n�p�`�'�'�'�Nb�q~'�'�b�dL�d{M�'�p�'�p�d'�(
'�'�'�'�M`�'�'�m�'�i#i1'�Np�l'�(((((lq~c�aN((Nd{lN((
((	M��b�d{((MnWt�l((p�((p�iM(lp�((((((M�lec�((MΫb�p�((((lelp�(iMp�e�(!(O("(1(#(,($(((%l�(&('b�dp�d()d(*Nd(+c�p�(-p�(.p�(/p�(0p�e�p�(2(B(3(<(4(6b�(5dp�(7(:(8(9c�p�p�c�c�(;Mp�p�(=(>(@p�(?Mp�(Ap�b�p�(C(G(Dp�(Ep�b�(FMp�(H(Kp�(Ip�(Jp�b�(Lp�(M(Nlc�dMp�(Pp�(Q(R(Y(Sp�(T(V(UMdp�(W(Xp�Mp���l�(Z([(](\b�� `�(^(_xvp�p�xv(a)�L(b(c)(d(�(e(�(f(�(g(x(h(s(i(n(j(l(kLlxv(mL�Lxv(o(qg_(pl�g_Q�(rdb�(tL(uN(v(wڈc�g&�=(y(�(z(|L({L`�c�(}(~(b�dj�o�(�(�(��}p�akak(�(�(�Դe�b�e�(�L(�(�(�(�iMd(�l�(�(�b�i#��m�(�(�L�Ld{(�gn(�az�1(�(�L(�d(�d(�(�d�-dcW(�L(�(�(�L(�Q�(�Ld(�(�(�(��f(�(�$$$$(�(�$$(�$$(�cW(�cWcW(�$$cWcW(�x�(�x�cW(�(�'akLb�(�(�(�(�(�d(�(�(�d(�LL(�(�ak(�ak(�ak(�akak(�(�akak(�ak(�ak'(�(�b�gQc�Պ(�(�g�(�q��O(�L�L�(�(�L�(�L�L�(�(�L�(�L�(�L�(�L�(�L�L�(�L�(�L�_�(�)(�(�(�(�(�(�(�(�(�(�aNgQazNNaz(�(�(�(�azaNaNazaN(��N(�(�(�(�(�aNNazaz(�aNE(�(�(�(�aNAeaNaz(�H azN(�(�(�(�(�(�(�(��Mg4g4m(�H azaN(�(�(�(�az|azaN(�azaN|(�)(�))M�azaN)az)N)gC)gCgC))gC)gCgC)	)
gC��gC)))
)aNgCaNgC))aNgCgCaN))N)N))N)NNg4)g_)N)N)NNaz))m))]) );)!)-)")')#)&)$)%b�c�dd{H:xv)()+L)))*nWb�c�),d{xvM).)6)/)3)0)2b�)1Mxvc�xv)4c�)5c�lic�)7):)8b�)9c�cWd{d{`�)<)J)=)F)>)E)?)B)@)Adb�iMak)C)D`�c�rb�j�c�)G)Hb�aN)Ib�d{L)K)S)L)O)Mb�d{)Nb�e�)Pb�)Q)RM�b�@b�)T)W)Ub�)Vb�`�d{)X)[)Y)ZgCnWd{c�b�)\�X`�)^M�)_)a�)`�N)b)k)c)fN)d)edNc�)g)j)h)igCL���*�t�g4)lMg4M)n)�)o)~)p)w)q)t)r)sb�dc�d{)u)vMakb�l)x){)y)zdc�Лd)|)}c�wd{g4))�)�)�c�)�i�c�)�)�akL�ym)�)�)�L�M�cWM)�)�c�)�d{)�b�)�b�p�)�Mc�q~)�)�iM)�)�)�)�)�)�d{az�Mx�)�azb�)�)�`�)�gn)�gnq�Nazb�)�)�)�)�b�)�b�)�)�kub��Ib�)�)�d{)�)�)�Mb�LH:dd{)�)�L)�g4dnWd)�,�)�+�)�+O)�*g)�*)�)�)�)�)�)�)�)�)�)�)�nW)�nWL�nW)�)�)�c�gQnWb�c�)�)�d)�)�MnWgQnW)�nWM)�nW)�nW)�)�)�nWazc�nW)�nWd)�)�)�)�)�)�)�)�b�m�waz)�v�)�azgQv�)�)�)�L)�)��Mw�v�wc�oN)�)�)�nW)�)�)�g4gQd{��L�)�)�)�)�)�nWnWL�nW)�nf�nW)�cWnW)�)�)�)�)�)�)�)�)�)�N)�L�@nW)�Q�OT)�c�)�)�L�nWnWd)�)�c�nWN)�nW)�b�dnW)�nW)�nWM)�*)�*nW*nW*b�M�****��e�**m���[g4*	de*
eؒ***
*d{b�M*d*dM�**`�**o��o�M***nWdfb�**>**7*nW**"**!*M* dlfMd{nW*#*$*&e�*%fnWe�*'aN*(*)*0**aNaN*+*,aN*-aN*.aNaN*/aN�f*1aNaN*2*3aN*4aN*5aNaN*6aN�f*8*;nW*9*:nWnWxvnW*<*=nWj�`�*?*M*@*L*A*E*B*C��ak*Dp�c�nW*F*J*G*InW*HnWfd��nW*Kc�nWnWM�*N*]*O*Z*P*S*Qd*RnWakb�*T*W*U*Vb�q~�lg_*X*Y�b�)�nW*[*\nWb�nWL*^*`nW*_nWM�*a*ecW*b*c*dcWi��b�nW*fnWL�*h*�*i*�*j*�*k*�*l*s*m*paN*naN*oaNt�aN*q*rLaNM*t*}*u*waN*vaNa]*xaNaN*y*zaN*{aN*|aN��aNaN*~**�kuxvb�`�*�aN*�*�*�aNaN*�aNM*�*�*�*�c�daNc�*�*�Mg4M�*�*�*�aNaN*�aN*�aN*��ycW*�aN*�*�aN*�*�*�dc�aNg_*�aN*�*�c�c�de�*�aN*�aN*�aN*�*�*�*�*�*�`�iMb�b���*�p���*�*�*�*�ldNb�*�*�daNaNrX*�+*�*�*�*�*�*�*�*�*�*�aN*�`�b�p�*�^CNaN*�*�*�t�dg4d*�aN*�*�O*�Ob�*�*�O�ؒQ�*�*�*�*�*�aNaN*�L�az*�*�*�4�4�aN*�*�4�Q�aNq~*�aN*�*�*�aNMi�*�*�c�`�g4b�*�*�*�*�*�*�aN*�aN*�aze�*�*�*�*�c�N`�`�*�aNy7j�*�*�aN*�*�*�`�cW�fN+*�*�*�*�c�azL��b*�*�azLb�Q�*�*�*�*�*�*�aN*�NL�*�aNaN`�*�*�*�aNaNM*�aNNg_*�*�*�*�*�aNMN*�aN�bL++aNM++^CML�"++2+++++++	aN+
aN`�aN+aN+
aNl�aN+aN+++aN`�M++nWc�Mt�++%aN+++#++`�d+aNb�++b�+b�b�++ b�b�+!+"b�b��gaN+$aNb�+&+,+'+)aN+(c�L+*++aNddL�+-+0+.+/M�p�cW�baN+1Md+3+B+4aN+5+;+6+8Q�+7MQ�+9+:d{b�dH:+<+?+=+>NMc�m�+@+Aazb�dazaN+CaN+D+EaN+FaN+GaN+Hl�+Il�+Jl�l�+Kl�+Ll�+Ml�+NaNl�+Pp�+Qxv+R+g+S+c+Txv+U+`+V+Y+Wc�+XL�tyli+Z+]+[+\dc��M+^+_l�MMg4+a+bb�McWM+dMxv+eM�+fM�d{+h+�+iM+j+u+k+p+l+o+m+nMc�d{ddc�+q+s+rn�ln�n�+tc�l+v+}+w+z+x+yNcWb�d+{+|L�b�b�L�+~+�++�b�L�d@+�+�L�c�g_d+�+�+�+�+�+�+�+�Nb�L�+�Ne+�+�b�L�b�M+�+�+�+�c�m�db�+�+�Nxvi�H:+�+�+�+�+�L�g4t�+�g4+�g4+�M+�+�L�+�L�@+�+�@e�L�@+�+�+�+�g4McWdak+�Mc�+�,�+�g4+�+�+�+�+�d]+�+�+�+�+�d]+�+�+�+�dd]d]b�H:d+�d]+�d]+�d]�~d]+�+�d]+�d]+�d]b�+�+�+�+�b�+�L�d{`�+�c�d{+�d]`�d]+�+�+�+�+�+�+�+�+�`�b�+�b�`�b�+�+�ll+�l+�+�+�l+�+�ll+�l+�+�llll+�l+�+�ll+�+�lll+�+�+�g_+�L�xL�c�N+�+�+�+�`�`�~+�+�`�;`�+�+�b�r,lb�+�+�+�+�+�+��CakdL�+�+��cW+�j+�+�`�b�c�L�+�+�+�drXd+�dc�xv+�,9+�,+�,+�,,,,,b�cWb�l,,azdm�M,,,,	q~c�,
b�`�l,,
b�Nb�,m;ak,,b�,,,NnWb�L�,,,,n�,c�Nb�d,b�`�,`�L�,,+,,$,,!L�, N`�,",#daNdc�,%,(,&,'d{cWp�d{,),*`�MNd,,,4,-,0,.,/b�dp�b�,1,3,2NL�NNb�,5,7c�,6c�b�,8d{Mb�,:,Z,;,K,<,D,=,A,>,?b��H,@d{d{M,B,ClNMl,E,H,F,Gld{c�`�,I,JcWaNld],L,T,M,P,N,O�c`�M�m�,Q,RaNb�,Sd`�,U,Wb�,Vdxv,X,YdcWd{t�,[,j,\,c,],`,^,_M�Cdak,a,beb�dA,d,h,e,fc�b�,gd{lib�,ib�Md{,k,r,l,o,m,nMb�b�L�,p,qc�NMx�,s,,t,ud{`�,v`�}�,w,x}�,y}�}�,z,{}�}�,|}�,},~}�κ}�,�c�b�,��+��,�d,�N,�N,�N,�NN,�,�N,�NN,�NU�,�.�,�-�,�-,�,�,�,�,�,�,�,�,�,�,�N,�,�,�,�ty�d{M�,�NMN,�,�Ms�d,�M,�Mq�,�,�N,�c�,�,�,�MNNp�,�,�N,�N,�ignM,�,�,�Mp�MN,�,�,�,�L�,�db�,�,�b�,�l�L�b�,�,�,�N,�,�,�,�AeiMazl,�q~L|,�,�dazdnW,�,�,�,�,�,�,�N,�N,�Ns8gn,�,�,�N,�,�Nb��M,�,�,�b�N,i,�,�b�b�,iNN,�,�,�,�,�N,�N,iЛ,�Л��N,�m�,�"�N,�,�N,�,�,�,�j*,�,�NL�_F[�N,�,�NؒN,�,�,�,�,�LN,�Ne�,�,�,�NMb�,�,�Nlx`��I,�,�iM,�N,�`�dd{,�,�,�`�N`�N,�-,�N,�N,�N,�N-N-NL�N----	--az-MN-NNd-
--N--N-
L�Nc�N--N-N-L�NNp�-NN-L-g4-Bf-Bfd-xv-->--4--'--#- i�-!i�-"i�L�i�i�-$i�-%i�-&i���-(-/-)---*d-+-,MLd{M�-.Li�c�-0-3d{-1-2MLi�dM�i�-5i�-6-7-=-8-:M-9NL-;-<Mc�b�q~b�`�-?-n-@-V-A-P-B-I-C-F-D-E`�M�M�b�-G-Hc�p�Lb�-J-M-K-LL�`�L�`�-N-OL�l`�c�-Q-S�^-Rg4m�-T-UakL�cWb�-W-f-X-_-Y-\-Z-[g4c�d{d-]-^c�lakc�-`-c-a-bq~i�b�g4-d-ei�M`�aNm�-g-h-k-i-jg4d��d{-l-mn�Nd{�-o-�-p-s-q-rm�NiM`�-t-{-u-x-v-wg4g_x�L�-y-zLc�c�b�-|--}-~`�MLd]nW-�akM-�-�-�-�-�-�`�-�gnlid{nW-�-�m�`�d{M-�-�c�`�d{`�-�.+-�-�-�-�-�-�-�M�-�-�M�-�M�-�[M�M�-�-�M�-�M�hM�M�-�M�-�-�-�-�-�M�-�M�[-�M�-�M�-�-���M���0-�-�M�-�-�-�M�-�M�-�M�-���M�-�M�-�-�-�-�M��MM�M�[-�-�-�M�M�-�-�M�-�M�M���-�-�M�-�M�-�[M�-�-�-�-�M�-�M�P�[-�-�M�-�-�-�M�-�M�-�-�M�-�-�M�-�M�M�P�-�-�M�-�-�P�M�P�P�-�P�M�M�-�M�-�-�M�-�-�M�-�M�-�P�M�-�M�M�-�M�P�-�-�[-�P�M�-�-�LM�M��-�.-�M�-�-�-�-�-�-�-�M�M�-�M���M�-�-�-�M��0M�[M�-�-�-�-�-�M�{�h{�M�-���M�-�M�-�-�-�M�-�M�M��-�-�-�M�M���M�-�-�M�-���.����.��..����.��.���..M�.M�.	.
M�.M�M��.
..M�.M�..M�.�NM�{TM�..M�..M�M�.{�M�..'....�MM�P�M�M�..M�M�. M�.!M�.".#M�M�.$M�.%M�.&M�{�M�.(.).*M�*�*�{�.,.�.-.@...7./M�.0.4.1.3M�.2�M�M�h.5M�M�.6M�[M�.8M�.9.:.<M�.;M�[.=M�.>.?*�M��M�.A.�.B.�M�.C.D.{.E.H.F.Gb$M���M�.I.f.J.Z.KM�.LM�.MM�.N.V.O.SM�.P.Q.RvM�vM�.TM�.UM�M�vM�.WM�.X.YM�M�v.[M�.\M�.]M�.^M�._.cM�.`.a.bM�vvM�.dM�.eM�vM�.g.q.hM�.iM�.jM�.kM�.lM�.m.oM�.nM�vM�.pvM�.rM�.sM�.tM�.uM�.vM�.w.yM�.xM�vM�.zM�v.|.}M�[.~.M�{��0�.�.�.�.�.�.�.�[�M�[.��0M�M�.�.�M�M�L.�M�.�.�M�.�M�vM�.���M�M�.�M�.�.�.�.�.�.�M�hM�M�.��M�.�.�[.�=M�M�.���M�.�.�.�.�.�.�.�.�.�M�M�.�.�M�M�h.�M�.�M�.�M�M���.�.�M�.�M�.�.�M�M���M�.�.�M�.�.�M�==M�.�.�.�.�.�.�M�.�M�.�M�.�.�M�.�M�.�M�M�.�M�.�.�M�.�.�M�{��0M�.�.�[M��M�.�M�.�.�M�.��M�M�[.�M�.�M�.�M�M��.�.�.�.�.�.�.�.�M�.�M�.�M��0.�M�[.��0h.�.�.�M�.�M���M�.�M�M�.�M�h.�.�.�.�M�.�M�L.�.�LM���M�.�.�M�.�M�.�M�v.�M�.�M�vM�.�M�M�.�M�.�.�M�.�M��L.�/�p�.�.�/�.�/�.�g4.�/~.�/z.�/s.�.�.�.�g4L`�d//j/g4//<//////B�3���K//
L�/	��Bz//
Kw/J�//K�B�L�///// ////�e/GOLI//�*LXKhB�////K�K�K�K�//�H�KK�/!/(/"/%/#/$K,��i�J/&/'L+H�KJB�/)/,/*/+o5G?IOK/-/.�F�L�J�/0B�/1/8/2/5/3/4L�L�K�B�/6/7��F�G_JL/9�I/:/;Lv��e�/=/V/>/F/?/@�I�/A/B�vC�/C/D�
DHC�/EB�C�/Gi�/H/O/I/L/J/KL:4D:C�/M/NDe�����/P/S/Q/RD�IB��
/T/U�ID:��i�/Wi�/X/^/Y/]/Z�/[/\��9���9�/_/c/`/a�fE��W/bF[�/d/g/e/fE�E
FD�/h/iFEFF;FK/kdg4/lg4/mg4/ng4/og4/p/qg4g4/r�g4/t/w/u/vL�d{lL/x/ydMe�d{g4/{g4/|g4/}g4�+/g4/�g4/�/�/�/�iMlb�aNN/�akc�/�/�g4/�/�g4/�g4/�g4/�/�e�g4Me�/�/�/�/�/�/�L�Mt�c�/�g4/�/�/�/�c�g4aze�g4/�g4e�g4/�g4/�g4/�/�/�#u�dc�/�/�/�/�/�/�/�d/�/�/�g4/�g4dazg4d/�/�d/�dg4/�j�g4/�c�/�y7M/�/�/�/�c�/�/�d{/�`�Mb�/�/�b�dM�`�/�/�/�/�/��b/�/�b��c�M/�Ԧ/���8/�Nv�r/�/�/�/�/�/�/�/�/���/�/�m�dm�b��/���Ԧ/�/��l/�b�/�m�m/�/�aN/���/�d$��/�/�c�azLN/�/�/�g4/�g4b�g4g4/�g4/�g4/�g4/�g4d/�g_/�0,/�/�/�/�/�/�/�/�/�/�/�/�/�|c�gQM�/�M�@cW/��x/���|/�/�g4/�b�/�b�d$az`��X�Hrf�x/�0/��H/�0/�0
y7/�M/�0y700N0L�0@0cWM�00
00@L�0	e�c�e�0@0@e�@000dy7q~q~�H�H000�HdM�d00#000000q~0q~gCdc�0M0M�b�M�0 g4g40!0"g4g4�cW0$cW0%0&0)0'0(M�L�db�0*0+b�c�b�L�0-0s�0.0/0Y000701040203@i�b�l0506c�Mc�d080;090:`�ddli0<0X0=aN`�0>0?0N0@0F0AQ�0BQ�0CQ�0DQ�0EQ�NQ�0GQ�Q�0HQ�0I0J0LQ�0KQ�NN0MNQ�Q�0OQ�0P0Q0T0RyOQ�0SQ�yOyO0UyO0VyO0WyONaNd0Z0l0[0j0\0]d{l0^0i0_My�0`y�0a0by�0cy�0d0f0e�ky��k�k0g�k0h�ky�Mc�0kdL�b�0m0p0n0o`�dc�aN0q0rb�iML�d{0t0�0un�0v0�0w0|0x0z0yM@MM0{Ng_0}0�0~0g4�b�NM0�c�L�0�d0�0�0�0�lib�g4L�0�drfN0�d0�0�0�0�0�0�az0�azkX0�az0�az0�azaz0�0�azaz0�0�azazb�az0�0�0�az0�az0�az0�0�az0�azkXazaz0�0�0�kXazaz0�0�azaz0�azkX0�gC0�az0�0�az0�az0�0�azaz0�az0�b�azaz0�az0�azb�0�50�3[0�100�1.0�0�0�0�0�0�0�0�0�0�0�M0�0�0�ty0�Mdety0�0�0�0�M@e�de0�0�0�0�M0�b�`�0�0�dl�l0�0�0�0�akMazM�0�0�akddc�Mc�0�0�b�c�McW0�0�0�0��Mc�M0�0�cW0�0�0�0�0�0�0�0�MؒN0�dlx�R0�0�0�0�c�Mj�ak`�d0�0�d0�0�0�dc�ak`�0�0�t�b�Mdd{ku0�M0�1
0�10��0�0�0�d0�0�0�@l@@d0�M`�0�0�M`�l�11111b�1b�g41d{1d{g4b�1	1
d{Tk1d{n�1t�c�1M�1J11"11111b�Jd1L�1L�1L�L�11L�1L�L�111_�L�L�_�11!1 cWd@akb�1#1'1$1&d1%g4akdL�1(1+1)1*Mb�b�ak1,1-akg4g_q~d1/�,p�11`�122�132141}151_161P171C181>191;L�1:g4`�1<1=L�cWg4L1?1B1@1Ag4j�b�M�b�ak1D1J1E1G"1Fb�l1H1Ic�b�b�g_1K1M1L`�g4M1N1Oakg_azM�1Q1W1R1T1Sd{d{b�1U1V�HL�aNc�1X1[1Y1Z`�c�p�b�1\1]p�L�1^lL���1`1o1a1h1b1e1c1d�c�d{Nb�1fd{1gpzcW1i1l1j1kMc�d{M�1m1nb�aNnWb�1p1w1q1t1r1sgnMMiM1u1vazi1c�L�1x1{1y1zg4ML�c�c�1|lil1~1�11�1�1�1�1�1�1�1�1�db�wm�1�1�Nc�wg_1�1�1�1�q~ddL�1�1�p�lg4j�1�1�1�1�1�1�cWMc�N1�1�iMaz��d{1�1�1�1�azN{
i�1�MdcW1�1�1�1�1�1�1�1�db�dM1�MNl1�1�1�1�b�Mc�L�1�1�dd{Nd{1�1�1�1�1�1�MgCNd{1�1�c���L�b�1�1�1�1�azg_cWc�1�1�c�b�c�M1�1�1�1�1�1�1�1�1�1�Md$$d1�1�cWc�N3F1�1�1�1�lm�M��,1�1�aNd{߫n�1�1�1�1�1�1�M�d{db�1�1�d{`�Q�c�1�1�1�1�tynWdd{1�1�cWnW1�cW1�1�1�1�1�1��i��W�1�i��9�1�1�1�1��
i�L��1�1�B�i��ei�1�1�1�1�1�1�1�c�m�aN1�1�g4nWdL�1�1�1�1�c�L�c�nW1�1��|aknWb�1�1�1�1�d1�lxv1�1�xvMxvt�2222d{db�xv22xvdld{22U22/2	22
222222
L�L��L��2222b���kuQ�2Q�e�2222M�c�lt�22dL�`�b�22,22%22"2 2!licWc�L�2#2$c�L�L�aN2&2)2'2(`�g4~�L�2*2+ln�`�M2-2.Ndazd{202=212822252324M@g_M2627iMnWL�xv292<2:azd{2;ld{b�M2>2L2?2E2@2BM�2Ad{`�2C2Dd{n�g4L�2F2I2G2HNd{g4L2J2KLn�xvb�2M2Q2N2P@2O�yd{b�2R2SMcWM2TrXb2V2�2W2�2X2[2Y2Zc�Mc��#2\2x2]2i2^2a2_2`c�p�p�@2b2cL�l2d2fM�2eN@2g2hd{e�@az2j2q2k2n2l2me�dM�N2o2pdc�de�2r2u2s2taze�e�cW2v2we�dMd2y22z2|2{Mb�d{2}2~Ml@`�2�2�2�2�d{M�e�@l@2�2�2�2�2�2�2�2�Mlp�M2�2�c�n�t�c�2�2�d2�d`�2�2�akg4Md{dq~2�2�2�2�2�2�iM2�Md{2�2�M2�NQ�M2�d{
2�2�g4n�d{nW2�2�2�2�d{b�ld2�2�akp��az2�2�2�2�2�2�2�2�2�2�2�`�2�M2�ML�M2�2�2�2�2�2�azg_c�aN2�2�dd{lNd2�d2�d`�2�2�N2�l�2�_�cWcW2�cW2�cWM2�2�2�2�g_2�2�2�g_N2�L�`�L�`�2�2�L�N2�i�L�2�2�N2�2�2�2�2�NMazd2�2�akNaNL�2�2�2�2�2�2�i�{�i�nW2�2�dc�d{d2�2�2�2�c�L�Lg42�2�dL�ld2�2�d2�d2�b��Caz2�M2�~2�~2�~2�~�22�322�3
2�32�2�2�2�2�2�g4d2�{
i�M`�2��2�o�d2�32�2�d{
M3c�{
3azrf{
33	33L�3A3A}�b�c�3
33L�}�}�c�b�33"M333333MM33M3MM3M3M�JM33M3MM3M3M3M�J3 MM3!�oM3#3*3$3&3%b�L�c�3'3)3(tyxve�L�rf3+3.3,3-b�lML3/30cWdb�31i�`�333<i�3435393637+�b�q�38"�su3:3;b�su+�q�3=3M3>3F3?3B3@3AMg4l�ak3C3EL3D���lc�3G3J3H3Ic�aNL�H:3K3Lg4d{Nc�3N3V3O3S3P`�3Q3Rc�NNd`�3Td{3UdL�M3WM3X3Y3Zg4cWz�M3\3]p�nW3^4G3_3}3`3n3a3g�13b3c�13d�13e3fM��1�1�"3h�13i3l�"3j3kM��"�1�"3m�"�13o3u3pM�3qM�3r�13s�13tM��1M��"3v3w3z�"3x3y�"M��"�"3{3|M��"�13~3�33�3�3�3�3�3�d3�3�3�3�3�t�@t�t�3�t�c�dL�3�t�3�3�3�3�3�3�NVpN[3�H:t�c�3�t�3�3�c�t�t�c�3�3�3�3�t�3�3�t�3�t�t�d3�3�3�t�t�L�t�3�t�3�n�d3�3�3�3�3�cWt�3�q~M3�t�3�t�cWc�3�3�3�3�3�3�t�c��?c�g43�3�o�3�3�o�3�3�o�o�3�o�3�3�o�3�3�o��<o��<3�o�3�3�3�o�3�o�o�3�3�o�o��<o�3�3�3�3�3�o�3��<o�3�3�o��<�<o�o�3�3�o��<o�3�3�3�3�L�c�azzt�c�3�3�3�3�3�3�3�b�nWc�3�3�dc�c�tyM3�3�3�c�b�3�3�d3�Mt�3�3�x�b�Ab�3�t�3�3�g_3�3�3�g�3�dc�3�3�d3�3�3�cWe�e�3�e�@M�3�3�`�3�3�3�cWnWcW3�e�@e�d3�d3�d3�dt�3�4@3�4"3�li3�43�43�43�lidlili4li44M44444M4M44	M�o4
M�oM4M4
M44M4M�o4M�oM4M4M4M44M4Mq�4Mq�Mli4li4lidaN4aN44 4!c�`�`�aNli4#4$424%4+4&4(4'MLg44)4*n�M`�L4,4/4-4.b�dn�c�4041M`�M� 434:44474546b�c�c�M4849Nb�Ml4;4=M4<Mg_4>4?d{b�c�b�li4AnW4B4CnWnW4DnW4E4FnW�QnW4H4�4I4f4J4_4K4Y4LnWnW4MnW4NnW4OnW4P4QnW4RnW4SnWnW4T4UnW4VnW4WnWnW4X�fnWnW4ZnW4[4\nW4]nWnW4^�RnW4`nWnW4a4bnW4cnW4dnW4enWnWe�4g4�4h4w4i4jg_M�4k4o4lM�M�4mM�4nM��M4p4sM�4qM�4rM��4tM�4u4v�M�[r4x4�4y44z4{+#�4|4~h4}M�hhM�4�4�4�4�M�lMg_4�4�g_4��vg_4�g�g_M�L�4�4�4�4�4�4�4�n�MNn�4�4�cWL�MM�4�4�4�4�M���M�4�4�aNg4c�d4�4�Mg_4�g_4�4�4�4�4�{
4�az4�az4�4�gC4�gC4�gCub4�4�b�4�b�gQ4�4�wU{�4�t�4�4�m4�mjww4�l�4�b���b�4�4�4���4�4�Ng4Q�`�4�dcW4�+M�4�4�4�4�4�4�cW4�cW4�4�4�4�d{b�4��iM4�4�4�4�dlb�cW4�4��Mb�lcW4�4��|4�4�4�4�aktk4�4�m��m�McW4�4�4�Mb����4�4�4�4�4�4�4�4�4�4�4�4�L�`�xvc�4�4�Np�L�c�4�4�4�4�`�NcWBz4�L�d{M�4�cW��cWcW4�cW4�cW4�L�4�Nb�cW4�cW4�cW4�4�4�cW4�cWb�M4�licW4�54�4�4�cW4�cW4�cW4�cW4�cWc�cW4�54�cW55l5b�MN+55Mc�q�5cW55
55
`�5	#�aN55`�lcWb�c�55`�b�cW55cW5cWL�cW5cW5cW5aN5K�cW58/55�55nq~555*55)l55 l5!l5"5%5#l5$ldnll5&5'5(c��g�lq~5+5K�5,`�5-5.5<5/555052d{51b��X5354c�cWliaz56595758`�c�ML�5:5;g4azlM5=5D5>5A5?5@c��cazd{5B5Cc�dMd{5E5H5F5Gd{azgCc�5I5Jdv�M�t�5L5V5My75Nd5OL�5P5S5Q5R�azL�c�5T5ULL�b�b�5W5_5X5]5Y5Zdq~5[5\MdnWd{5^c�d{`�5`5g5a5d5b5ccWlL�d{5e5fb�dK�ty5h5k5iMb�5jMg�5l5mL�d{b�d5o5�5pp�5q5�5r5�5s5|5tg45u5y5vg45w5xg4πd{c�5zlg45{Mg�g45}5~5azd{5�5�5�����5�g4c�g45�5�5�5�g45�w�aNg45�5�g4g4iM5�5�5�5�g45�5�5�g4c�g4cWg4b�g45�5�5�g45�g4c�5�5�Md{j*^C5�5�5�5�5�5�5�5�5�b�5�5�x� ]H:x�5�5�5�5�iMdL�5���M5�5�g4Mg4M�5�5�5�5�5�5�dg4b�L�5�5�g4ddn�5�5�5�5�aklg4M5�b�L�M�5�5�5�5�5�b�5�b�b�5�5�b�5�b�5�b�5�b�5�b�5�5�b�5�b�b�b�5�b�b�5�5�5�g4iM�8ak5�c�L�5�5�d5�5�akdL�5�d5�5�g4L�L�d5�5�5�g45�5�5�5�5�Lg4q�5�5�q�cWcWq�g45�L5�g�g45�d5�5�5�5�5�5�Q�Q�b�g45�5�^CL��,b�5�cWg45�xvb�5�ll5�l5�5�5�l5�l5�l5�l5��dll5�l5�5�l5�ldnl5�7P5�6�5�65�6b�5�5�b�666b�6b�6b�b�p�b�6b�66b��}b�6	66
b�b�66b�6
b�x�b�b�66b�6b�b�66b�x�b�66A66066b�66b�666b�b�b�b�6x��b�6b�6 b�6!b�6"b�6#6$��6%��6&6+��6'��6(6)����6*��b�6,����6-6.����6/b���616;6267b�6364b�6566x�b�b�p�68b�69b�6:b�p�b�6<6>b�6=b�x�6?b�6@x��b�6B6`6C6W6Db�6Eb�b�6F6G6Vb�6H6I��6J6P��6K6L����6M6N����6O�����6Q6R����6S��6T6U�����ڥb�6Xb�6Y6]6Z6[d$b�6\b�p�b�b�6^b�6_d$b�6a6s6b6q6c6f6db�6eb�~�d26gx�6h�>b�6i6jb�6kb�6lb�6mb�6nb�6ob�6pb�x�b�6rx�x�b�6t6�6u6vb�x�6wb�6xb���6y6z����6{��6|��6}��6~��66�������b�6�b�6�b�6�b��Y6�6�6�6�6�6�6�6�6�M�6�M�6�M�6�M��M�M�6�6�M�6�M�{T6�{T6�{T6�6�{T{T6�{T6�6�{T{T6�6�{T{T�6�M�6�M�6�M�M�6�6�M�6�M�6�M�6�M�6�M�6�M�6�6�M�6�M�6��[6�M�6�M��06�6�M�6�6�6�6�M�M�6�6�6�M���M��6�M�6�M�M�6�M�{�6�6�6�6�6�6�M�6�v6�M�v6�M�vM�M�6��6�M�6�M���6�6�6�6�6�M��M�6�6�6�6���M�M�v6�6�vM�v�6�6�M�6��6�M��6�M�6�6��M����6�7"6�7	6�6�6�6�6�M�6�6�6�M��M�M�6�M�6�6�M�M�6�M�6�M�6�M�6�M�6�6�M�rM�6�6�M�6�6�M�6�M�M�6�6�M�M�6�M�6�M�6�6�M�6�M�@M�6�6�6�M���M�M�6�{�M�6�76�M�6�M�6�6��M�hM�777M�M�7��M�77M�7�0M�M�7��M�7
77M�7M�7
M�M�7hM�777M�777M�[M���7LM�7777M�7M�[M�7M���77 77�M��M�M�7!�{�7#7.7$M�M�7%7&7*7'M�7(7)vM�iU�M�7+7,7-M�{�{�M�7/7H707D71777274M�73{�M�7576M���rM�787B79M�7:M�7;M�7<M�7=M�7>M�7?M�7@M�7AM��M�M�7CM��M�7EM�7FM�7GM��7IM�7J7N7K7MM�7LM��M�hM�7OM��7Q7RtyM7S7�7T7�7U7r7V7i7W7d7X7c7Yp�7ZL7[L7\L7]L7^L7_L7`L7aL7bLy�Ldc�7e7fc�d{7g�7hdc�c�7j7od{7kc�7l7m7nrXb�b�d$7p7qb�Lld7s7~7t7x7u7vc�M7w`�b�b�7y7}M7z7{7|`�pz`�d{dc�77�7�7�d{`�d7�7�7�b�b�b�b�7�7�t�b�Ld7�7�7�7�7�7�7�7�b�7�e�7�u\�`�cW7�7�azL�azg47�7�7�7�7�M7�dcWNc�7�7�7�`�dakL7�7�b�c�aN7�`�7�`�c�7�7�7�7�7�7���dc�aN7�m�`�m�7�7�7�7�d{dMg47�7�N�azd7�7�7�7�7�7�7�7�7�7�xvLML7�7�dcW7�d7�b�b�b�7�7�7�7�Mc�g4c�7�c�aN`�7�7�7�7�7�7�ld{d{L�7�Nc�7�7�7�c�lgg&7�7�7�7�aNc�d`�7�7�MNL�c�7�7�7�7�7�7�7�7�7�7�d{l7�lNb�7�7�c�l`�d{7�7�7�7�c�Q�q~H:7�7�d{H:dl7�7�7�7�7�7�;dN�7�7�aNd{azM7�7�7�7�7�Mlxvd{`�7�7�7�Nc�dg47�L�7�7�L�L�7�7�L�L�7�L�7�7�L�7�L�L��7�8888888L�lazL�8c�cW8M`�888	88
g_t���lt�8
8d{lִN88(8888c�g4@l88'8d{8b�88M�8M�88M�8M�M�8M�8>�M�M�8 M�8!8"M�8#M�M�8$8%8&>�M�>�M�u�d{8)8,8*8+L�b�daz8-8.g4d{ld{80;�81;I82:�83M�849B858}868R878;88M89M8:M�;MM8<8=8G8>MM8?8@MM8A8B8C�oM8D8F~8E�4�M�8HM8IM8JMM8K8L8Q8MM��8N8O����8Pg���Md8S8[M8T8UM8VM8WM8XMM8YM8ZM�8\8v8]8iM8^M8_8`8b8aMM�8cM8dM8eM8fM8gM8hMg�MM8j8kM8lM8mM8nMM8o8p8sM8q8rMM)xM8tM8u)xM8wMM8xM8y8zMM8{M8|�oM8~8�88�8�8�8�8�M8�M8�8�MM8�M8�M8�M8�8�MM8��JM8�8�8�8�M8�M8�M8��%M8�8�M8�8�8�M�o�M8�8�8�MM8�M��8�M8�MM��8�M8�M8�8�8�8�M8���MM8�M�8�8�M8�dMM8�dM8�8�8�8�8�M8�MM8�M8�M8��oMM8�M8�8�M8�M8�8��M�MM8�8�M8�M8�M8�Mq�M8�8�8�8�M8�8�M8�MM8�M8��oMM8�M8�8�MM8�M8�M8��;M8�8�8�MM8�M8�8�M8�MM8���M8�8�M8�8�MM8�M8�8�M8�MM�O8�MM8�8�MM8�8�M�JM8�9,8�98�8�M8�8�8�8�M8�M8�MM8�~M8�8�8�M8�8�8�8�M�;8�M�;MM�;8�M8�M8�M�;M8�98�98�M8�MM8�M�;9MM99M9M�OM9M9M99	�;M9
M9M�;M9
9999�oM99MM9M9M�;9M9MM9M9M9M~99"M99MM99M9 9!M�;�;M9#M9$M9%9(M9&9'M)xM9)M9*9+M�4�4M9-9:M9.9/MM90M91929893d94dd9596d97ddMM99�;�J9;MM9<M9=�9>9?MM9@M9A�;M9C:9D9�9E9n9F9Z9GM9H9S9I9N9JM9KM9LMM9MMy�M9O9PMM9QM9R�oM9TMM9U9VM9W9YM9X�oM�oM9[9_9\MM9]9^MMq�9`9jM9aM9b9c9fM9d9eMMq��O9g�O9h�O9i�O�;9kM9lM9mMM�;9o9�9p9�9q9zM9r9sMM9tM9uM9v9wMM9xM9y�;MM9{M9|M9}9~M9MdM9�M9�MM9�9�9�9�MM9�9�M9�MM9�M�;M9�M9��;M9�9�M9�9�9�M9�M9�M9�9�MM9�9�M9�M�;MM9�M9�9��O�OM9�9�9�9�9�M9�M9�MM9�9�MM�9�M9�MM9�9�MM9�9�MM9��;MM9�9�M9�MM�;9�9�9�9�9�M9�9�9�MM9�M9�M9�9�MM�;M�;9�9�9�9�9�MM9�M9�M9�M9�M�;M9�9�MM9�9�9�M9��oMM9��;M9�9�9�9�9�9�9�M9�MM~M9�M9�9�9�9�M9�MM9�M�;�JMM9�M9�9�M�;MM9�9�9�9�MM9��;M9�MM9�M9�dM9�:9�9�9�MM9�M9�9�MM9�9�MM9�9�MM9��M9�9��o9��o9��o9�M�o�o9�9�9��o9�9�9��o9�9��o�o)x�;�o:::�o�o�;:�o�o:�o�J::::M:M:	M:
Mq�::M:
M:q�M:M:M::M�;�;M:::M:M:MM::Md�JM��::T::H::<: :6:!:,:"M:#MM:$:%:)M:&:':(y���)x:*M:+My�MM:-:.:2M:/:0MM:1dM:3MM:4M:5�;M:7M:8M:9MM::M:;M�o:=M:>:D:?M:@M:AM:BM:CM�oMM:EM:FM:G�;MM:IM:J:K:MM:L�oM:NM:OM:P:RM:Q��~M:S~M:U:nM:V:W:bM:X:YMM:Z:[:_M:\M:]M:^M�;M:`:aMM~:c:hM:d:eMM:f:gMM�;M:iM:j:kMM:l:mM�;M:o:�:p:�:q:�:r::s:{:t:w�o:u�o:v�oM:x�o�o:y�o:z�oM:|�o:}�o:~�oM�o:�:�:�:��o:�:��o�O�o:�M�o:��o:��o:��o:�M�o�o:��o:�:��o�o:��o:�:�:�M�oM�o:�:�:��o�o:�:��o�o��o:�:�:�:��o:��o:��o:��o�o:�M�o:��o�o:�:��o�o:��o:�M�o:�:�q�:�:��o:��o�oM�o:��o:�:��o�o:��o:��o:��;�o:��o�o:��o:�:�:��o:��o:��o:��oq�:��o:��o:��oq��o:�;:�:�:�:�:�L�:�L�:�L�:�L�:�L�ML�:�:�L�az:�:�:�:�:�:�:�:�h4NLb�:�:�c�g_`�M�:�:�:�:�@b�b�aN:�:�Nb�Mi�:�:�:�:�:�:�dMd{M:�:�M�g4N:�:�:�:�ldM�d:�:�tyiMp�t�:�;:�:�:�:�:�:�b�:�b�:�g4b�c�:�:�c�M�,:�:�:�b�:�c�`���:�d{:�:�c�b�n�aN:�;:�:�d{:�L:�d{N:�;c�b�;L�c�b�;;b�;;;`�dM�N;;;	;
Edc�cWLb�;
;;;;b�;l;iML�b�;;;;;m�M�1c�;e�c�;;;cWd{L�;;cWaNMdMt�M; ;!;H;";2;#;+;$;(;%;';&MM�aN`�d;);*g_b�n�c�;,;0;-;/M�;.N�oc�L�;1d{d{c�;3;:;4;9;5;7;6g4db�d;8b�M{
b�;;;AM;<M;=b�;>;?;@j*M�MM�;B;E;C;D`�L�Q�M�;F;G|���gn~�c�M;J;Pg_;K;Lg_;Mg_g_;N;Og_MTg_;Q;�;R;g;S;^;T;Y;UcW;VcWcW;W;XcWg4mcW;Z;[cW;\McW;]cWb�cW;_;`;c;acWcW;bcWg4cW;dcW;ecW;fg4cW;h;�;i;ucW;j;k;p;l;n;md{b�cWd{;ob�cW;q;s;rLcWb�L;tcWb�;vcW;w;~;x;{;y;z��kb�cW;|;}�]|�cWb�cW;cWiM;�;�;�cWM;�;�;�iMcWcW;�b�cWcW;�;�cWcW;�;�cWcWڥ;�;�cW;�;�;�;�;�;�;�;�cWcW;�cW{
;�;�;�;�cWb�M�h;�cWcWb�;�;�;�cW;�;�4Pb�b�cWcW;�cW;�McW;�;�;�cWcW;�;�;�cWMcWMcW;�cW;�cWM�;�;�;�;�;�;�cWx�;�cW;�cW;�cW|cW;�;�;�cWcW;�;�cWcWM;�cWcW;�;�;�cWnWcWnW;�;�;�;�;�;�;�N;�LnWcW;�cW;�;�L�cWnWcW;�;�cW;�;�LcWb�;�cW;�cWb�cW;�cWcW;�cW;�b�cW;�<);�;�;�L�;�L�;�;�;�L�;�;�;�;�;�;�>C>c>rL�L�;�L�;�L�>r;�;�;�;�;�;�>r>S>�L�;�>rL�>r;�;�;�;�>rL�L�>r;�L�>rL�;�;�>S>c>c>rL�;�L�;�;�<;�<;�<L�;�L�;�L�;�;�L�;�L�;�L�L�;�;�L�L�;�;�L�L��<<<L�L�<L�Ϗ<L�<L�L�ϟ<L�L�<	<
L�<L�L�<L�<
L�<<L�L�<L�<L�d!<<L�<L�<<<L�ϟL�ϟ<L�<L�L�<L�<<<#<L�L�<< L�<!L�<"L�>�L�<$L�L�<%L�<&L�<'L�<(>SL�<*<CL�<+<,L�<-<;<.L�</L�L�<0<1L�<2L�<3L�<4L�L�<5L�<6<7L�<8L�L�<9<:L�L�>�L�<<<=<@>C<>>C<?>C>r>C<A>C<B>C>r<Dc�<E<s<F<`<G<Z<H<N<I<M<JM�<K<Lb��b�bb�L`�<O<T<P<Q�Pdd<Rd<Sdp�<U<W`�<V`��<X<Y�akdML<[<\<^M<]��M<_MM��d<a<bdd<cd<d<ed<fdd<g<hBf<i<nBf<jBf<kBf<lBf<mBfd<oBf<pBf<qBfBf<rdBfd<t<u<�<v<}<w<z<x<yM�Md{az<{<|t�dg4`�<~<�<<�b�MdN<�<�d{g4d{t�<�<�<�<�b�<�c�l<�<�d{ؒdc�<�<�<�<�`�lؒc�<�<�b�kuc�N<�a�<�V�<�M�<�C�<�@�<�>�<�=�<�=�<�=P<�<�<�<�<�<�<�<�<�<�<�<�<�<�dMMli<�g_t�N<�<�<�<�m�L�g4dxv<�xvt�<�<�<�<�<�li`�cW<�<�li*�aNd]<�Ng4<�g4�G<�<�<�<�<�<�<�LakL<��L�g_<�<��<�d]g_<�aNg_j�<�<�<�d{m�<�m�l�<�<�d{<�MM�<�<�kuM�c�g4<�<�<�<�<�<�M�b�g4M<�<�p��,d{d<�<�c�<�Mku<�<�b�Mb�ku<�=<�<�<�<�<�<�<�<�<�<�c�lc�d{<�<�aN�M�d<�<�<�<��cWd{`�`�<�c�d<�<�<�<�b�<�e�cW<�<�d{dd{d<�<�L�<�c�aN<�<�i�d{M`�<�=<�=<�<�<�<�liaNb�d<�=q~dL�c�====`�nWdc�=n�cWl==
=	==
dL�b�=ddc�====dt�dd{ku=ln�==2==$======nWc��RL�==i�NcWc�==!== d{dc�l�="=#lg_�jc�=%=+=&=)='=(db�Mc�cW=*MN=,=/=-=.dM�d{b�=0=1dc�g4c�=3=B=4=;=5=8=6=7�,M�i�M�=9=:M��g4M�=<=?===>dc�iMak=@=Al�d{cWM=C=I=D=G=E=Fc�i�m�`�ku=HM�d=J=M=K=L`�L�Nc�=N=OMldL�j�=Q=R==S=bj�=T=U=[=V=Y=W=Xc�b�c��{=ZMM�b=\=_=]=^hc�M�iM=`=ab�j�g4d{=c=r=d=o=e=m=f=g`�b�cW=hcW=i=jcW=kcW=lcWx��M=nMl=pj�=qb�b�l=s=z=t=w=u=vd`�l`�=x=yMdMg_={=}=|M�c�j�xv=~cWj�=�=�=�=�=�=�=�=�=�=�c�d{Md{=�=�c�M�b�c�=�=�=�=�c�c�b�L�=�=�OEg_g4d=�=�=�=�=�=�c�l�MM�=�=�M�b�b�j�=�=�=�=�j�c�c�aN�Cj�=�=�j�b�=�=�b�=�=�=�c�cWc�M�b�=�c�=�c��,=�=�=�=�L�=�=�L�=�L�L�=�L�=�=�L�=�L�L�=�=�L�L�=�=�L�L�=�=�L�L�=�L�>CL�=�=�L�=�L�L�=�=�L�=�L�=�L�L�=�L�=�=�=�=�L�L�=�L�=�=�L�L��L�=�=�L�L�=�L�=��L�L�>C=�>�=�=�=�=�=�=�=�=�=�cWL�=�=�=�M�L�L�N=�=�cW=�`�M�=�=�=�L=�=��9����3`kuc�=�=�=�L�=�L�M=�d{=�d{�=�=�=�L�L�LL�=�L�M=�L�=�=�=�=�M=�ML�=�=�`�b�=�M=�NL�c�=�L�=�=�d��l�M=�>C=�>!=�>=�>=�=�w*MrXc�>>>L�>L�iML�>>>>gCt�wU>az>	>
az>az>az>
az>azaz>v�azLe�>>>>>e�LL�iMM>>>>>>W�Q�iMd>>Q�OTiML�L>b�> akd>">6>#>->$>(>%�,>&>'`�oYL�T>)>+>*L�L�NL�>,`�e�>.>4>/>1L�>0[�[�>2>3�NgQ�,>5b�L�q~>7>@>8>?>9d>:>=^C>;N><_FQ�>>N[�OqML�L�>AL�>BL�q~>D>g>E>W>F>K>GcWcW>H>I>JNL�L�az>L>R>M>P>N>OcWNi)�>QL�lign>S>U>T�b��C>Vm�m��>X>_>Y>[w�>ZdL�>\>]dL�L�>^L�iM>`>diM>a>b>cc�NhBL�g4>e>fL�iML�>h>y>i>p>j>m>kL�ߍ>lL�iML�>n>oߍL�iM>q>tl>r>sg&�g&>ucWM>vM>wM>xMq�>z>�>{>|m�cW>}>c�>~g_K�c�L�>�>�dc�>�>�>�ll>�>�ll>�l>�>�ll>�>�ll>�ll>�NMd>�>�>�>�>�M>�M>�M>�M>�M�iM>�>�L�cW>�>�>�>�>�>�db�lc�>�b�dl>�>�>�>�>�>�>�>�@K�dg_>�>�dtyld{>�>�d{M>�>�M�n�nWd>�>�>�>�>�>�L�c�n�M�>�>�Mc�c�cW>�>�>�>�Mdg4M>�>�ML�M��g_>�>�g_g_>�>�g_>�g_>�g_>�g_g_>�g_>�>�g_>�g_g_>�>�g_>�g_g_>�g_M�>�?�>�?�>�?#>�?>�>�>�>�>�>�>�>�>�>�>�m�dm�>�m�akm�m�>�Nc�m�>�m�>�>�>�MM�tyM�>�>�m�>�m�>�>�>�m�c�c�b�>�>�>�>�>�>�i�_�L�d{>�>�g_akMb�>�>�>�>�d{ddi�>�>�akg4g_g4>�d>�?>�>�>�>�d{c�c�b�>�>�b�>�LL�`�cW?????llazb�d??`�dNn�?	??
b�????b�?
??g_dazNb�L??d{L�b�d{d??????b�b�p�b�?N?{}L?? ??d{aNaNb�?!?"d{L�xvM?$?b?%?G?&?7?'?/?(?,?)?*dϯd?+dN?-?.`�dcWd{?0?3?1?2c�`�e�l?4?5c�b�?6kuMn�?8???9?<?:?;McWd{b�?=?>MNcWc�?@?C?A?BNd{c�cW?D?EiMg4l?F[�L�?H?Y?I?Q?J?N?K?L�ak?Md{c�b�?O?PdM�Mc�?R?U?S?TiM�NaN?V?Xd?Wg_d{lM�cW?Z?[?_cW?\?]?^cWdm�gn?`d?acWcWm:?c?vd?d?e?n?f?id?gd?hdl?j?ld?km�b�L�?mi�m�?o?r}�?p?qdj*N+d?s?t?ulxddc�?w?}d?x?y?z{�m�d?{N?|i�c�b�?~??�L�?�?�L�i?�?�i_�iL�?�?�L�?�?�L�?�L�?�L�?�?�L�?�L�?�L�?�L�L�_�L�?�L�?�L�?�?�L�?�L�?�L�?�L�L�_�N?�?�?�?�?�?�aNcW?�?�?�?�?�?�?�LddLL�?�c�ty?�?�?�?�c�L@g4b�cW?�cW?�?�aN?�aN?�aN?�aN?�?�l�l�?�?�l�?�l�l�?�l�?�?�l�l��W?�cW?�LaN?�aNL?�?�?�?�?�?�?�cWd?�?�cWMcWcW?�?�cWcWkf?�?�cW?�?�cWcW?�dg4cW?�cWd?�?�?�?�?�?�c�ak?�cWd?�cW~?�?�cW?�cWd�?�?�?�cWMcW?�cWMcW?�?�?�?�?�?�?�?�~d{�McWN?�?�cWNcW?�cWh?�?�?�?�cWdM?�!Tt�d?�d?�dL�?�@!?�?�?�?�?�?�?�?�McWxvb�d{b�cW?�dak?�@?�@?�N?�N?�?�?�N?�Mg_L�N@N@NL�@@@@	@N@d@@L�dNL�@
NdL@@N@
N@M@Lt�N@Nd@@@N@N@@N@N@Ldd@M@g_b�N@@NN@d@ MN@"@a@#@A@$@.@%@)M�@&M�@'M�@(vM�M�@*@+M�M�@,@-M�LM�@/@8@0@3M�@1@2M�M�=@4M�M�@5@6@7M�{�M��@9M�@:@=@;M�@<M�M�=@>@?M�h@@M�LM�@B@Q@C@I@DM�@EM�@FM�@G@H{�M�M���M�@J@KM�@L@O@M@NM��M��@PM�[h@R@[M�@S@T@X@UM�@V@W�MM��0M�@YM�@ZM�M��M�@\M�@]@^@`@_M�hM�M�P�@b@�@c@�d@d@e@m@f@iM@g@hddo�M@j@k@l`�c�N`�@n@�@o@�@pM@q@�@r@~@s@x@t@vM@uM�o@w�;M�;@y@{�;@zM�J@|@}���OM@@�@�@�@�MM�;@�@�M�;M�;@�M@�M�;M@�@�@�@�M@�@�@�d���;@�MM�;@�M@�M@�@�M�;M�l@�d{d{�j@�d@�e�e�@�e�@�e�@�@�e�e�@�e�@�e�@�@�e�e�e�d@�@�@�@�@�@�c�@�@�OiMiM�hg&@�@�@�m�o�d�Z@�@�@�b�@�@�@�@�M@�@�M@�M@�M@�MM@�@�MMd�@�����@���@���@�@�����@���@�Ͻ��M@���@���@�@�����@�@�����@�@�������c�@�@�b�c�L@�@�@�@�@�@�d@�@�@�@�dLd@�dLM@�d@�@�@�@�dL�Ld{d@�s8,d@�@�@�d@�d@�Ldd@�c�d@�@�@�@�@�d@�@�c�@�dLc�d@�@�`�@�@�dM�L@�dc�@�dL@�@�@�@�{
cW@�@�@�MLd@�MLdd@�l�d@�A@�A@�AM�AM�AM�AAM�M�AAM�AM�AM�AM�M�A	M�A
AM�M�AM�A
M�AAM�M�rM�AnWA�0A�0m�AM�`�AAaz`�azAA�AANAdAA+AcWAcWAcWA cWA!cWcWA"A#cWA$m:A%m:A&m:A'm:A(m:m:A)A*m:m:cWA,A=g4A-A.A6A/A3A0A2A1Mdq�c�MA4A5c�t�b�c�A7A:A8A9Mlc�d{d{A;A<b�c�akdA>A?AGA@ADAAABc�t�L�ACd�,AEAFEazd{c�AHAKAIAJb�dc�d{ALAM{
�nWMAOA�APA}AQAeARNASAXATNAU�AVAWNL�8�LAYA_AZA]A[A\db�M�A^t�@�8A`AcAaAbg_b�cWb�Adddb�AfAoAgNAhAkNAiAjdNb�AlNAmAn�!�H:,>ApAwAqAuNArAsAtLc�z�NNAvwNAxNAyAzNwA{A|b�iMg_Q�A~A�AA�A�A�A�A�A�A�A�A�dlxb���A�A�NL�ؒrXA�A�A�A�ՙ�|rXakA�A�L�l�s8LA�A�NA�A�L�NliNA�NdA�A�A�A�Nd{NLA�A�ldNdA�A�A�A�A�A�A�A�A�A�A�rXA�m�m�A�A�m�A�m�A�A�A�m�A�m�oDm�m�A�A�m�m�oDaziMA�A�A�t�A�xvxvA�A�A�A�xvA�xvxvA�xvA�xvW[xvA�A�xvxvA�A�xvW[xvA�m��@MA�A�A�A�Q�c�azsGA�A��YֈMb�A�A�A�A�A�A�M�b�b��A�A�b�}�MliA�A�A�A�ؒM�`�dA�A��ՙMe�A�A�A�A�A�A�A�A�ؒ`���lb���A�A�A�A�N!�is8A�A�azdMxvNcWA�c�c�A�A�c�A�c�c�A�A�c�A���c���A�B�A�BeA�B8A�A�A�A�A�A�A�A�p�d{Mc�A�A�d{b�aNb�A�A�A�A�c�b�c�A�N`�A�b�c�d{BBBBd{Bb�`�BBc�d{Bb�b�Bb�BB	b�b�B
Bb�b�Bb�B
Bb�Bb�b�b�BB"BB!Bd{BB�g_g_Bg_BBBBg_Bg_Mcg_Bg_Bg_g_Bg_Bg_B g_�c�n�B#B7B$`�B%B.B&��B'B(�B)��B*�B+�B,B-����B/�B0�B1�B2�B3�B4B5�B6����M�MB9BSB:BCB;B>B<B={
d{Md{B?B@d{db�BABBwwwUBDBQBEBPb�BFBGMMBHBIMBJMBKMBLMBMMBNMBOMM��c�d{d{BRb�c�BTB]BUB[BVBYBWd{BXb�y��c�BZMb�b�B\b�c�B^BcB_BbB`c�p�Bap�b�lib�BdaNb�MBfB�BgBncWBh`�BiBjBmt�BkNBll�c�dd{BoB~BpBzBqBvBrBtg_BsU�li`�BuliMBwBxNL�NByNdB{NB|NB}NliNBB�B�NB�B�B�B�NL�L�g4B�N�M��B�B�B�B�NB�azNNM�B�NB�NdNB�B�c�B�c�B�c�B�B�dB�+dq~B�dB�B�p�B�nWB�B�B�`�d{L�aNc�MB�B�LB�B�t�e�B�B�B�B�B�B�B�B�B�NLdd{B�B�c�LMdB�B�B�B�@M�d{aNB�B�d{L�dNB�B�B�B�hB�t�c�B�B�dcWNLB�B�B�B�MddxvB�B�NMb�g4B�COB�B�B�B�B�dB�B�B�B�B�d�;LhdB�B�B�B�j*b�e�c�b�dB�B�B�B�c�B�c�B�c�nWB�d{c�B�`�c�B�B�B�B�c�B�ML�B�B���Cd�B�B�B�B�l��H`�c�B�B�c�|�Mc�B�CEB�C=B�CB�CB�p�B�dB�CB�B�B��O�OB��OB��OB��OB�c��O�OB�B�B�B�B�B�B��OB��Oc��OB��Oc�B�B��OB��Oc�B��O�Oc�B�CC�O�OCc��O�OC�OC�Oc�CCC�OC�O�OC	C
�O�OCc��OC
C�OCC�O�OCC�O�Oc�C�O�OCC�OCC�Oc�c��O�dCCC�e�i�dCdCCC6C C*C!�OC"C&C#�O�OC$�OC%�Oc��OC'C(�OC)�Oc��O�OC+C,C3C-C0�OC.�OC/c��OC1�OC2�Oc��O�OC4C5�Oc��OC7�O�OC8�OC9�OC:C;�OC<�O�Oc�C>CBC?C@dMd{CAdc�MCCCDddb�CFdCGCKCHdCICJQ���MLCLCMCNiM�>N��CPC�CQC�CRCZCSCVCTkucWCUdNL�CWCXCYgQazb�azC[C�azC\C]Cb�C^C_CtC`�CaClCb�CcCfCddCe��dCgCio�Cho�m�CjCkm�db��Cm�CnCq�CoCp��dCr�Cs��d�Cu�CvCw��CxCyC|CzC{�dd�C}C~�dd�m�b�C�C�b�b�C�3F��3SC�C�C�C�kXaNd{C�C�yb�yC�C��4s8MxvC�C�C�C�C�C�C�C�C�C�db��$gngnC�db�dC�tkC�L�cWC�C�dd{xvC�C�C�b�dtk�lC�C�C�C�C�dC�C�cWdcWdC�C�C�d@dd{C�dcWC�C�dC�d{C�dcWC�C�d{C�zML�C�C�c�`�cWMC�GC�E�C�EC�DcC�D
C�C�MC�C�C�C�C�MC�C�C�MC�M��C�C�h%�h%�C�C�C�C�H:C�dMc�b�wdC�C�C�C�ږ`�C�d{C�C�e�^CٰnWC�C�LٰC�C�C�C�Q�!�OEe�C�e�e�C�C�C�C�C�C�C�C�kuLd{kuC�C�C�C�M�C�{�M�H:C�{
M�g_b�C�MC�C�C�C�C�C�@t�lt�C�LMt�L�`�C�C�C�C�MC�C�C�MC�Mt�LC�NM@C�MC�C�e�NMC�DC�DC�DC�i���EDe�e�e�DD�CD�-�lxrXDD
DazrXD	lxؒDb�e�D`�DDPDD1DD!DDMDDDDDW��NMDDn�Mlb�DDDb�DdNBfMDDD iMbnWMD"D(D#D&D$�D%n�bMD'g�`���D)D-D*D+��@D,M��MMD.D/D0Mb{rMD2DAD3D;D4D8D5D6��D7t�t�q~c�D9c�D:L�b�D<D@D=b�D>D?M�b�hc�lb�DBDJDCDFDDg&DEcWlib�iMDGDHDIg4Mb�c�DKDNDLc�NDMt�dDOiMdiMDQMDRDXMDSDTDWNDUDVMNgCcWw�MDYDZD]MD[d{D\gCMD^DaD_D`dc�cWc�d{DbM�L�DdD�DeD�DfDtDgDnDhNMDiDjDlMDkMb�DmMakL�NDoNDpDqDsDrp��}p�p�LDuD�DvD}DwD|DxDzg�Dyg�tOD{MM��Mg�D~Dy���g�MD�MD�D�b�L�D�Naz~�D�D�D�D�D�D�D�D�w�p�D�cWLD�MgCMD�azdD�MD�D�iMMMD�ND�MgCD�D�D�MD�D�dD�`�D�c�NdMD�D�D�D�g4D�D�D�g4mg4mD�b�D�D�dm�q��D�D�dD�D�D�e�i�`�i�D�aND�rXlx�*D�D�D�D�D�D�D�MMD�D�D�MD�MNd�D�D�D�D�D�NMD�D�D�D�MD�MMD�D�MD�MMD�MD��JMD�MD�MMD�D�MD�MMD�MD��JMLb�D�D�b��[dd{D�D�D�D�j�D�D�D�D�D��UNlN`�D�M�MD�D�D�n�MM�LD�D�D�M�MMM�D�D�D�dMdD�D�D�yD�D�e�`�e�i�D�D�D�o�d�-D�e�Դe�D�D�MD�MD�D�D�`�D�MD�M�MD�D�dD�Mc�dD�MazMD�D�ED�ED�nWD�D����*$���Mc�EEEMMd�b�EE�EEoEE@E	E#E
EEEEME
MEMiMMEEEEb�Edc�EEg4ML�MELEEb�ddm�EE EEEd�EMdMd�,ME!E"dMi�E$E3E%E)E&E(E'Mi�M`�ME*E-E+c�{�E,L�c�E.E0E/`��%`�E1E2L�M{}LE4E;E5E7�E6m�LE8E9E:�lc�g&E<E=ML�E>q~E?Lc�MEAE]EBEIECEGMEDEElEFLML�EHM�+b�EJEVEKEQELEOEMENc�b�l�MEPL�t�c�ERETESs�c�L��8EUiM�8EWEZEXq~EY�rX��dE[E\i�i�NE^EjE_EbE`EaL�b�Lc�EcEfEdMEep�s�H:MEgEhEiML�m�dd]EkElMEmLMEnb�rEpE�EqEwErg4Esg4Etg4Eug4Evg4g4b�ExE�EyE{Ezg4g4NE|E�E}dE~E�%�,`�q~c�E�g4E�g4E�d{E�E�c�g&c�g&g4E�g4E�g4E�g4E�E�E�E�L�d{M�E�E�`�g4b�dE�E�E�E�E�E�E�E�E�E�E�E�b�azb�i�E�E�j^Cjr,E�E�E�E�L�akb�LE�E�dML`�cWq~E�E�tycWcW�uE�E�E�E�E�E�dE�dE�dL�E�dE�E�diMNq~E�E�E�E�E�E�E���kuE�ku� dE�dL�E�dE�E�dhE�dtyn�E�E�E�E�E�E�dE�db�E�hdb�dE�E�MkuMdE�E�tydME�E�E�E�E�E�E�E�dE�E�d�ZddE�E�E�dE�E�M�M�E�M�E�M�E�E�M�E�M�M�E�M�g_dME�d`�E�MdE�E�E�E�q~Mq~ddE�E�dE�d@dE�E�E�E�E�E�dc�NdE�E�L�dE�dE�dNQ�E�@E�E�d{b�L�dE�F�E�F2E�FcWE�cWE�E�FE�FcWE�cW�FcWFcW`�Fln�FFcWFcWNFF
F	FfF
f�)FNdcWFF�FakF�cWFcWFF*FFFFFFFL�dM�Fc�Fak&MFMFFMg���MFF$F F#aNF!H:F"{rd��q~F%F&iMb�F'F)F(H:edg�azcWF+g_F,F-F1F.LF/F06mli��jV,LF3nWF4F~F5FKe�F6F7F?e�F8F9F<F:F;c�`�`�tylF=dF>@dF@p�FAFCFBt�cWNt�FDt�FEFFFHFGe�de�FIFJe�M�daNFLFpFMFfFNFYFOazazFPazFQazFRazFSazFTFUazFVazazFWFXazgCazFZF^azF[azF\azF]azw*azF_azF`FaazazFbFcazazFdazFeazgQazFgFhazazFiFjazazFkazFlFmazazFnazFowazFqFxFrFuFsFtdOaazlFvFwdd{dc�FyF{Fzc�d{dF|F}c�NMNFF�e�F�F�dF�NF�NcWF�cWNF�Md{g_F�Gd{F�F�F�F�F�F�F�F�F�F�F�dF�azdNF�azNF�F�NF�F�F�dNdNF�NNdF�F�F�F�F�F�F�F�NdlNdNNF�F�F�NML�azF�F�F�F�F�NdNdF�dF�F�dF�dF�dF�ddF��DdF�NF�NdNF�F�F�F�F�F�NF�NF�NdNaNNF�NF�NF�dNF�F�F�F�F�F�F�azNdF�F�sb�NdF�NdF�MNNF�NF�NdF�F�F�F�F�F�F�F�NF�NF�NdNF�NddF�F�NdF�dNF�F�F�F�Q�F�F�F�Q�o�Q�o�F�Q�F�Q�Q�MF�F�NF�F�azNMF�NF�NdNF�F�F�F�F�F�NF�dNF�NF�NdNdF�F�NF�NNi�F�NF�GF�G	F�GF�N;F�N;F�GF�N;N;F�N;F�N;GN;GNN;N;GGN;GN;GN;N;GN;NN;dG
N;GN;N;GG
N;N;GN;GN;GGN;N;GNN;GGGN;d3�dN;GM�MGMi�GKUGJ|GG�GG{GG5G G'G!g4G"g4G#g4G$g4G%G&L�c�g4i�G(G.g4G)g4G*g4G+G,G-cW�@b�c�G/g4G0G4b�G1G2G3cW$$x��ucWg4G6GJG7G@G8G:g4G9g4LG;G<dLG=g4G>G?t�Ng�MGAGEGBGCg4�dGDg4q~GFGGL`�g4GHq~GIg4i�GKGfGLGZGMGQGNGOd]ddGPiM#VGRGUGSGTj*cWaki�GVGYGWM�GXb�e�b�akLG[GbG\G_G]G^xvd{Ml�G`Gad{M�NcWGcp�GdGec�db�c�GgGidGhMg4GjGmGkcWGldg4xvGnGyGoGpak`�GqakGrakGsakakGtakGuGvakakGwakGxakٛd]GzdlG|dG}G�G~G�GG�G�G�LG�azG�n�dLMG�dG�G�azG�n�dG�dn��ZG�G�NdG�G�G�G�G�b�dazq�G�d,wLdG�G�G�G�G�G�G�G�dq�azG�d`�dG�G�G�`�dgCazG�G�NG�G�G�`�d`�)7NG�G�akd`�G�G�G�G�t�c�c�G�G�G�mg4dNG�G�G�G�g4G�dNG�dNdb�G�G�G�c�dc�b�G�L�G�J G�G�G�G�G�G�G�G�G�G�e�G�xvNG�G�`��b�dG�b�G�G�db�b�lG�G�G�NgQG�wb�G�G�G�xvb�dG�Mg4L�G�G�G�G�G�G�G�G�MdcWt�G�L�dc�G�G�G�t�aNMG�dlcWG�G�G�G�G�G�@c�ld{G�G�`�c�`�MG�G�G�G�MaNd`�G�G�L�c�g_lG�HG�G�G�G�xvG�dG�d`�G�G�b�G�`�c�G�G�akL�L�d{G�HG�G�G�G�Md{`�c�G�G�c�d{Mb�HHHHMc�Mg_HH$$d$$ݶHJH	IH
IHHNg_d{H
HH�HHNHH/HH HHHHHH���8y�\�HH�G�V\��eHHHH\���v��tHH)��ЃВH!H(H"H%H#H$]
��СаH&H'��п�O]H)H,H*H+�������H-H.�
9���7H0H?H1H8H2H5H3H4�+�:�I�YH6H79��i�m�xH9H<H:H;чїѧcWH=H>��ѷ��]+H@HGHAHDHBHCm������HEHF���#�&HHHKHIHJ�$$�2rCHLHM�B�Q];�`HOHnHPH_HQHXHRHUHSHT��_�p]KHVHW�WcW][W�HYH\HZH[ҀҏҟҮH]H^�ҽ����H`HgHaHdHbHc���G����HeHf��
��)HhHkHiHj�9�H�^�XHlHm�h�w:ӆHoH~HpHwHqHtHrHsy%(Ӗ�|HuHvӥ�0Ӵ�@HxH{HyHz���9���H|H}]k�B\�9�HH�H�H�H�H�����]zghH�H�]�����
H�H�H�H�]���+v�H�H�]��:]��IH�H�H�H�H�H�H�H�H�H�H�H��X�g���vH�H�ԅԕgv#sH�H�H�H���]�ԥԵH�H�}�]�����H�H�H�H�H�H�������H�H�� �/�>�MH�H�H�H�]��\�k^H�H��zՉ9�9�H�H�H�H�H�H�H�H�^$ՙթոH�H��������fH�H�H�H�$���H�H���^m��#H�H�H�H�H�H��3�B�Q9�H�H���`�o�~H�H�H�H�֍�(֜֫H�H�]�ֻ��?H�H�H�H�H�H�H�H�H�H�4P^C^4��H�H���^c|��uH�H�H�H�������!H�H����	^S^�H�H�H�H�H�H��^��(�8H�H�9�^s�G�WH�H�H�H�^��f^��vH�H�:*ׄד^�H�H�H�H�H�H�H�H�^�ע\�ױH�H����^�|H�H�H�H�^���x���H�H�_��:
H�IH�III��)�8�GII�V�e_�tII	IIv�؄ؔcWI
I$$cW$$��I
Ixvq~Nb�IIIM�b�m�IIMg4c�III�IIVII7II(II!IIIIcW�8y�\�II �G�V\��eI"I%I#I$\���v��tI&I')��ЃВI)I0I*I-I+I,]
��СаI.I/��п�O]I1I4I2I3�������I5I6�
9���7I8IGI9I@I:I=I;I<�+�:�I�YI>I?9��i�m�xIAIDIBICчїѧcWIEIF��ѷ��]+IHIOIIILIJIKm������IMIN���#�&IPISIQIR�$$�2rCITIU�B�Q];�`IWIvIXIgIYI`IZI]I[I\��_�p]KI^I_�WcW][W�IaIdIbIcҀҏҟҮIeIf�ҽ����IhIoIiIlIjIk���G����ImIn��
��)IpIsIqIr�9�H�^�XItIu�h�w:ӆIwI�IxIIyI|IzI{y%(Ӗ�|I}I~ӥ�0Ӵ�@I�I�I�I����9���I�I�]k�B\�9�I�I�I�I�I�I�����]zghI�I�]�����
I�I�I�I�]���+v�I�I�]��:]��II�I�I�I�I�I�I�I�I�I�I�I��X�g���vI�I�ԅԕgv#sI�I�I�I���]�ԥԵI�I�}�]�����I�I�I�I�I�I�������I�I�� �/�>�MI�I�I�I�]��\�k^I�I��zՉ9�9�I�I�I�I�I�I�I�I�^$ՙթոI�I��������fI�I�I�I�$���I�I���^m��#I�I�I�I�I�I��3�B�Q9�I�I���`�o�~I�I�I�I�֍�(֜֫I�I�]�ֻ��?I�I�I�I�I�I�I�I�I�I�4P^C^4��I�I���^c|��uI�I�I�I�������!I�I����	^S^�I�I�I�I�I�I��^��(�8I�I�9�^s�G�WI�I�I�I�^��f^��vI�I�:*ׄד^�I�JI�I�I�I�I�I�^�ע\�ױI�I����^�|I�JJJ^���x���JJ_��:
JJ
JJ
JJ	��)�8�GJJ�V�e_�tJcWJJv�؄ؔcWJJJJJJNde�g4JJb�c�Md{JJJJb�Makc�JJL�d{lb�J!JNJ"J2J#J*J$J%b�c�J&J(n�J'n�b�J)b�M�b�J+J.}�J,b�J-b�g4J/c�J0J1b�d$@&c�J3JAJ4J;J5J8J6J7dd{dNJ9J:dMn�@J<J>J=e�p�iMJ?J@cWg4l`�JBJIJCJFJDJE�Zg_cWc�JGJHb�M�di�JJJL��JKc�dؤJMb�dJOJkJPJ_JQJ[azJRJSJZ߫JTJU߫JV߫JW߫JX߫JY߫س߫߫��J\J]פxvJ^פiMxvJ`JeJaJcJbMaNiMnWJdc�xvJfJiJgJhiMdiMxvnWJjxvٽJlJsJmJpJnxvJoxvٽdJqazJrMxv`�JtJxJudJvJwxvd{xv`�JyJzxvMc�J{d{b�J}J�J~J�ubJJ�J�ubJ�J�ububw�ubJ�ubw�J�J�J�J�J�J�J�NJ�NJ�L�J�J�Nc�c�NNJ�J�J�azJ�rXJ����NJ�J�N`�c�J�J�J�J�J�J�dJ�J�J��r��ENL�J�NNJ�J�c�NdJ�J�NJ�dc�J�J�J�J�J�c�dNNiMJ�{
J�iMdMJ�J�J�J�J�J�J�J�J�J�xvNNJ�NdJ�J�J�J�g&�=lc�J�J�J�i�J�`�J�`�J�`�J�`�J�J�`�J�J�`�i�`�`�J�`�J�`�i�t]i�J�J�NL`���J�J�NJ�NJ�J�J�g_NNBa`�J�J�v�b�J�J�b�b�J�b�J�J�b�J�b�J�b�J�b�J�b�p�b�J�NJ�J�J�J�c�d{J�NJ�|�k|J�NNJ�NxvJ�K	J�J�J�J�J�c�J�J�dJ�Mb�c�J�c�M�J�nWJ�J�J�db�nWJ�J�d{c�d{dJ��HJ�KJ�J�J�J�lb��HakJ�KJ�b�J�Kg�d{azLb�q~KKKKd{M�`�MKKb�{
d{c�K
K%KKKKK
dKKKc�KdMdl�dKddKK`�KKMo�o�MKKdKKKldd��KdKK"dK dK!*K#dK$dt]e�K&KGK'K4K(K/K)K-K*K,K+dNQ�OTdK.b�e�dK0K1d`�lK2K3ddMK5K>K6K:K7b�K8K9db�db�K;dK<K=b��=�>b�K?KCdK@KAKBdxvxvdKDKFakKEtkDd�ddKHKIKOKJKMKKc�tkKL)7i�KNb�db�KPKRdKQb�dM�KSdKTdxvKVL�KWLKXL�KYK�cWKZK[cWK\K�cWK]�,K^K_mK`mKaKnKb��Kc��Kd��KeKhKf�+Kg�����+KiKk��Kj���KlKm��+m��KoK���KpKqK}KrKwKsKuKt�����+��Kv�+��KxKz��Ky�+��K{K|���+�+��K~K�KK�K�K����������K��+��K�K�K�K���������K�K����+���K�K�K�K�K�K�K�K�K�K��������K�K��������K�K�K�K����+���K�K����+�+��K�K�K�K�K�K����+�+��K�K�����+��K�K�K�K����+�+��K�K�����m��K�K�K�K�K�K�K�K�����+��K�K�������K�K�K�K��������K�K���������K�K�K�K�K�K���������K�K�����m��K�K�K�K�����m��K�K��������K�K�d{N`�L�K�K�K�K�cWK�K�K�~K�K�K�iM^Cdp�K�cW`�cWK�K�cWK�dK�dcWK�K�cWK�K�K�lxlML�c�cWK�K�K�K�K�cWLMK�K�K�K�cWK�cWc�K�K�l�dd`�K�K�M6cWK�M6cW�ZK�K�K�K�K�K�K�K�azgCkXv�cWK�xvL�K�LK�K�gCq�cWazK�LK�LK�aNazL�LaNcWazcWLMLcWlxLL>LL,LLL	Lw�L
w�L`�LLL
LxvLLLLLLLLxv3��mL��xvLLLL3�xv��xvxvLxv3�w�LxvLLb�PWxvL b�L!L)L"L'L#L%azL$xvPWL&������K�L(K�b�L*b�L+LL��L-L2L.b�w�L/w�L0L1w�K�xvL3L7M�L4w�L5`�L6K�xvw�L8L9w�L:L<L;K�K���K�L=��K�L?L[L@dLALOLBLKLCLHLDLEMdLFLGdkudb�dLILJde�ddLLq~LMakLNakYLPLVdLQLRLTLSd`�ddLU�RdLWLXdM�LYdMLZdpzL\LL]LhL^LbdL_NL`c�La�RddLcLdLf�ZLe�ZpzLgc�dLLiLqLjLldLk�C�LmLoLniMLdLpdBfdLrLyLsLvLtLuLg4g4dLwLxL�Ln�p�LzL}L{L|b�n�y}L~dMdL�L�L�L�L�L�dLg&dL�L�`�L�diMNL�d�L�H:y�dL�L�L�xvL�d�L���L�b�L�L�l��g&L�M!L�L�L�L�ML�L�ML�L�L�L�L�L�L�L�dd{cWNL�L�L�L�lc�n�nWL�L��*d{dc�L�ML�L�L�L�M�i�lMML�m�dL�L�L�ML�ML�MMd$L�L�L�L�ML�L�L�L�L��dc�ML�L�dc�g_NL�L�iM`�L�ML�MMcWL�L�L�L�L�iMMc�kub�L�L�L�L�L�L�b�aN`�b�L�d{b�L�j*c�L�ML�L�L�L�L�L�L�L�@NL�i�L�L�lxdN���L�L�L�L�L�L�L�L�b�b�L�L�b�L�b�L�b�b�L�L�b�b�L�b�p�dg4L�L�d�Q��b�L�L�L�L�akg4L�azL��_�=L�L�xvd{L�b�c�L�|�NL�ML�L�L�L�L�c�NL�c�b�l�L�L�M*re�L�ML�ML�llL�MNNazhMMMMj�d]MMM!T��M	w�M
M�"MMM
MMMMMNd|�c�MMdMlMM�c�MMMMMMc�c�M|Me�e�e�MM NMNMNMMNM"M�M#M�M$M{M%M7M&M,M'MM(M*M)lb�NMM+NMM-M4M.M1M/M0Q�iMߺM2M3dMldMM5M6ؒMNM8MxMM9M:MM;Mwc�M<M=MZM>MIM?MDM@|�MA|�MB|�MC|���|�|�ME|�MF|�MG|�MH��|�MJMRMKMNe?MLMM|�e?|�MOvq|�MPMQvq|�vqMSMW��MTMUe?��MV��e?MX�e?MYe?�M[MjM\MfM]MbM^MaM_f?M`f?�f?f?t�Mc�Ut�Mdt�Met��UMg|�Mh|�Mi|��U|�MkMsMl|�MmMp|�Mn|�Mo|��Mq|�Mr|��|�Mt��Mu��Mv��|���wFiMMyMzcWc�L`�M|M�M}MM~NMMM�ؒЛMM�M�M�M�{�M�j�M�MdM���M�M�Q�Nd[�MM�M�M�p�lMlM�M�M�M�M�M�M�M�N�*d{`�M�M�Mt�M�M�M�Li�NM�M�M�M�M�azM�M�N+cWNMaNM�MM�L�MM�M�L�azMM�M�LL�MM�M�M�M�MM�`�j�M�M�M�M�j�M��Uj�j�s�aNdM�M�M�M�t�azM�M�M�M�ML�L�MM�Mdg4M�M�tyMM�LM�M�db�b�dMM�M�M�M�t�M�M�c�M�akrXM�M�M�cWM�M��ckf`�Lxvb�t�M�t�M�t�nWM�Q�M�O�M�OM�M�M�M�M�tydM�M�dM�ddM�M�de�dMM�M�M�b�M�M�b�b�M�M�b�kub�b�M�M�b�M�rXrXM�M�rXM�rX�rXM�N�M�NbM�N5M�N%M�NM�M�M�M�M�M�M�M�=M�M�M�vM�M�M�M�M�M�M�#���M�M�M�M�M�M�M�M�M�M�M�hhM�NNNNNM�NM�{�M�NN	NN�M��M�N
N�M���M�N
NNNNM�M���M�NNM�NM�NM�NM�NM�NM�M�NNM���M�NM�NM�NM�NM�NM�M�N N!M�N"M�N#M�M�N$M�rN&N+M�N'N(M�M�N)M�N*M�LN,N2N-M�N.N0N/M��0M�M�N1M��0N3M�N4M�[M�N6NPN7N<M�N8M�N9M�N:N;M�LM�N=NAM�N>M�N?N@M�M�hNBNKNCM�M�NDNENFM�hNGNINHM�hM�M�NJhM�NLNNNMM�M�hNOM�hM�NQNZNRNVNSM�NTM�NUM�M���NWM�M�NXNYM�{�hN[M�N\N_N]M�N^M�M�bM�N`M�NaM���NcN�NdNsNeNkNfNNgM�NhNjNicWd`�cWM�NlNqNmNoNNndNNpNNMNNrN`�MNtNuN�NvN~�ONwNxMNyN}Nz�ON{�OMN|M�OM�ONMN�MN�N��N��N�N�N�M��MN�MN�N�M��MN�N�MN�MN�MN�N�MM�OMN�MN�MN�N�N�MN�M�ON�MN�MMN��OMN�N�N�N�dN�N�NN�NNN�U�NN�N�N�NN�N�N�N�s8azc�ieN�N�s�M�NN�NN�N�N�NQ�dN�N�NcWNcWN�N�N�nWN�N�N�N�`�L�cWi�akN�N�N�NdL�c�LN�LN�LN�N�LLb�N�N�MN�MN�MN�N�MMN�N�MMN�azMN�N�N�N�N�M�M�N�N�M�M�N�N�{�LM�N�N�M�N�N�M�M�N�N�N�M�rM��N�N�M�N�N�M�M�N�M�bM�N�M�N�M�N�bM�N�N�N�N�N�N�N�M�N�M�M�N��M�N�M�N�h{TM�M�N�N�N�M�N�M�N�M��0N�M�M�N�M�LN�N�N�M�M�N�N�M�M�LN�N�N�M�N�M�N�N�M��M�P�N�M�M�OM��0MOOO�OOOO<OO0OOOOO	OO
ds�dOO
dL�L�OdږOOOdMOԴdOOdMOd`�dOO*OO$lOOd��OO��O��O��O ����O!O"����O#���O%O'O&ddc�O(O)c�dd$b�O+O.dO,O-ddc�O/ddMdO1O2O6dO3O4O5Md��dO7O:O8`�O9dd�O;ku��dO=O[O>ORO?OHO@OCNOAQ�OB��P}ODOFOEe�e�d�dOGdc�OIOPOJOMOKOLdN�E�>ONOOdNNdOQdde�OSOWdOTOUOVLdLddOXOYd{tyOZNdO\OlO]OcO^ObO_OaO`dpZddtyM�`�OdOgOeddOfg4dOhOkOiOjdpZpZdb�dOmOwOnOtOoOrOpOq�m�d��dOsdcWdOub�OvpZg4OxO|OyOzc�dlO{nW`��NO}O~c�p�dO�O�O�O�O�O�O�azO�azO�azO�azO�azO�azO�azO�azb�azO�O�azO�O�O�O�O�azddazazddO�azO�azO�azO�azO�O�azO�azazb�O�azO�O�O�azO�b�O�azazdO�azO�O�O�azb�azazdO�O�O�O�O�O�O�b�O�O�b�O�db�O�b�b�dO�O�O�O�O�b�b�dO�b�b�dO�O�b�O��Qb�dO��b�b�O�b�O�O�b�O�b�b�dO�O�azO�azO�O�azazO�dazO�dazO�azdg_O�O�O�O�O�O�O�O�O�O�O�db�d{akO�O�p�d{c�O�MO�O�MO�MMO�MO�O�M�;MO�O�O�O�b�d]{
b�O�O�Mxv`�d{ty�L�O�`�O�NO�O�O�MdO�O�db�d]NO�Q	O�O�MO�MO�MO�O�MO�MMO�MO�MO�O�MtOMO�Pb�O�b�O�b�O�b�O�b�O�b�O�O�b�O�O�3�����3�p�PPPtPP=PP"PPPPPP
PP	��xv�xvPxv3���P
P��3�PPxv��xv��PPPPPPPW3�xv��PPxvPPPxv��xv��3�xvPPPxvxv�*P P!��xvxv��P#P2P$P+P%P(P&P'�9xvxv��P)P*xv����3�P,P/P-P.�xv��xvP0P1xv������P3P7P4xvP5P6��xv��xvP8P:P9xv3���P;P<������xvP>P]P?PSP@PEPAPCPBxv��xv��PD��3�PFPQPGPH��xvPIxvPJxvPKxvPLxvxvPMxvPNPOxvPPxv��xvxvPRxv3�PTPZPUPXPVPW��xv��xvxvPY�HxvP[��P\xv�W�eP^PnP_PjP`��v�Pa��PbPcxvxvPdxvPePfxvxvPgxvPhxvPixv��PkPlxv��Pm���tv�PoPqPp����xv��PrPs����xvPuP�PvP�PwP�PxP~PyP{Pzxvxv3�P|P}��xvxv�PP�P�xv���xvP���xvP���P�P�P�xv��P�P�P�P�xvP�P�P�xvP�xvP�xvP�xv��xvxvP�P�xvP�xvxvP���xvxvP�xvP�xvP�xvP�P�xvxvP���xvP�P�3�xvكxvP�P�P�P�xvP�ّP�xv��P�P�P�xvxv3�P���xv��P�P�xvP�P�P�xv�xv١P�P�P�P���xv��xvP�P�3�q�xv��P�P�P�P�P�P���P���P�xv3�P�P�xvP�xv��xvP���P�P�P�P�xvP�xvxvP�xvP�P�xvP�xv��xvxvP�xvP�P�xvxvP�xvP�xvP���xvP�P�P�P�P�P�xv����١P�P�����P�xvP�xv��P�xvP�P�xvP�xvxvP�xvP���xvP�P�P�P���P�xvP�P�xvP�xvP�P�P�P�P�P�xvP�xv��xvP�xv��P�xvP�P�xv��xv��P�xvP�xvP�xvxv������xvP�xv��P�QP�P�P�xvxvP�xv3�P�P�P���������P�xv��QQxvQQQ��xv3���QQ��xv��Q��3�Q
QXQQWQp�Q
Q&QQQq~QQQQQQQQdd{Nc�QMi�aNQQQQg4cWd@Mb�dQdQdcWMQ Q!Q#azQ"N`�azQ$Q%u�azu�Q'Q9Q(dQ)Q1Q*Q-Q+Q,c�q~MazQ.Q/`�b�b�Q0��Q2Q6Q3Q4nWllQ5d���Q7Q8d{c�L�c�Q:QHQ;QBQ<Q?Q=Q>cWj�cWb�Q@QAb�lb�d{QCQEb�QDcWc�QFQGaNQd{L�QIQPQJQMQKQLc�dakNQNQOM�aNNlQQQTQRQSi�Mc�L�QUQVlakdM�`�@&QYdc�QZQ[Q�Q\QsQ]QhQ^QcQ_QbQ`aze�Qae�e�dxvQdQgMQeQfF�BF���e�QiQmQjQlQklwUgQ`�LQnQoԦb�QpԦQqQre�i�e�e�QtQ|QuQzQvQwl�dQxg4QyM�p�M�M�Q{M�MQ}Q�Q~dQQ�cWQ�cWc�Q�Q�lNNdcWQ�Q�c�cWQ�cWQ�@dQ�azMg4Q�S�Q�RPQ�RQ�Q�g4dQ�Q�Q�Q�Q�L�Q�Q�Q�L�L�Q�L�Q�Q�L�_�L�Q�L�L�Q�Q�L�Q�Q�_�L�Q�ٰQ�L�Q�L�Q�L�L�Q�Q�L�Q�L�L�Q�L�_�Q�L�Q�L�Q�L�L�Q�L�Q�L�Q�L�Q�L�Q�L�Q�Q�L�Q�L�Q�L�L�Q�L�Q�_�L�Q�Q�Q�Q�Q�Q�Q�Q�dQ�L�dQ�Q���Q��Q��h%az�dQ�Q�Q�Q�Q�Q�Q�Q�dp�d`�dL�nWR�Q�Q�Q�Q�Q�L�dQ�Q�dQ�dQ�dQ�dQ�dQ�dQ�ddBfQ�dl�dQ��Q�g4dl�Q�Q�Q�Q�Q�Q�Q�dQ�g4NMQ�Q�Q�Q�l�dl�ddQ��^݋Q�dQ�Q�Q�d�^h4dc�Q�Q�Q�Q�Q�L�c�dQ�dQ�Q��=��c�Q�dQ�Q�Q�aNNdQ�db�c�Q�dQ�ddQ�dQ�dQ�Q�RL�lj*d]RRp�MRR&RR
RlMRRlR	llR
RRڈ�c�g	RRRRlRRlRllRld]RRlRlRlRl�yRllRRl��lRRlR R#R!llR"l�dlR$lR%lNR'M�R(R9R)R4R*M�R+R.M�R,M�R-M���R/R2R0R1M���M���R3M�M�hR5M�R6M�R7��R8M�M���M�R:R;M�R<M�R=RMM�R>R?�0M�R@RAM�RBM�M�RCRDRGM�REM�RFM��RHRKRIRJ�{��0[RLM��1M�RNRO��h�M�RQSBRRR�RSR�RTRzRUR`RVNRWR^RXR]RYR[RZcWNN+wR\wwUb�d]R_NL�d{RaRiNRbRcRfNRdRecWNN+RgRhNL�L�NRjRpRkRoRlNRmRnNnWnWN��dRqRtRrNRsdnWNRuRxRvRw`�de�MNRynWNR{R�R|R�R}R�R~R�RR�R�R�lxNdliR�R�ak�VliQ�R�R�R�R��c�d{H:R�R�b�L!�eR�R�R�R�drdNdR�R�R�gnNliNNR�NR�NL�NR�R�NR�R�R�R�b�R�t��*R�R��`�lxLR�R�R�R�ֈ�s8lR�R�q�b`�OTR�R�R�R�R�R�R�R�R�llR�R�llh�R�llR�R�llgnR�R�R�d�X`�`�R�R�R�R�L�m�`�R�L�ؒ`�R�R�MR�R�R�R��JMR���tOR��JR�M˫tOR�R�dkuR�NR�MR�MMR�MR�MR�MR�MR�R�MO�MR�R�R�MR�R�R�R�R�R�Nb�c�MR�ld{NR�R�R�R�d{dR�Nb�MR�R�L�Mb�s�b�|�R�R�R�R�R�R�LM�Xl�R�R�i�{
R�g4R�R�R�R�R�R�c�b�e�R�c�MR�R�c�i��R�lMR�R�R�R�L�c�azc�d{MR�S&R�S	R�Sg4R�R�g4SSSSMb�c�b�SSg4b�c�b�g4SSg4g4dS
SSSSSg4S
g4b�xvNSSSg4Sg4b�dg4SSg4ؒg4g4SSSSSSSll�N@SSb�@MM�S S#S!S"c�L�lg_S$S%b�lxdtyS'S5S(S-S)g4S*S,S+g4dg4Lg4S.S3S/g4S0S2MS1�JMdg4S4g4d{NS6S;S7g4g4S8S9dS:g4)g4S<S@S=g4g4S>S?d{g4c�g4SAMdSCSDxvNSEp�SFS�SGSeSHS_SISSSJSOSKSMSLd{Mc�c�SNd{c�b�SPSQSR`�i�e�i�STSYSUSW`�SVb�c�`�SXNp�SZS]S[S\@dc�N`�S^Np�p�S`SaScw�Sbb�ku`�SdNp�SfSzSgSuShSnSiSkc�Sjb�NSlSmlL�M�`�SoSrSpSqNt�MazSsSttyc�g4d{SvSyb�SwSxb���n�wdM�S{S|S�S}S�S~Sg&���S�Nc�ML�S�MS�d{c�S�S�S�S�S�S�S�S�S�S�S�McWd{S�S�MdٿAS�S�S�S�aNM��xq~S�p�b�S�S�i�S�q~S�azg_S�db�S�L�`�S�\�S�S�dL�c�S�S�S�m�b�m�dS�S�S�S�S�S�S�S�S�S�L�b�JnWS�S�dg�t�n�S�S�S�b�b�LS�S�@akaNnWS�S�S�S�S�S�L�Mb�NS�S�lc�NMS�S�S�S�{
d]g4d{S�S�liNn�b�S�S�p�S�p�S�S�S�rfMc�MS�S�S�S�S�S�c�M`�MS�S�ML�b��>S�S�S�S�d{`�M��S�S�d{b�d{LS�T�S�TZS�TES�S�S�g4S�MS�M\�dS�TS�S�S�S�dS�dS�S�Lg4mS�S�S�S�S�akS�S�d{dp�b�dMdS�S�S�dS�d{�QS�Ldc�S�TS�S�S�S�S�S�S�S�b�ddb�LS�c�dr�dS�TS�d�bd`�TT�bc�dTTdTb�MTdTT
dT	c�dTdg_dT
T(TTTTdTTTdTdb�TTb�db�dTTdTdb�TLTTb��0g4b�TdTT"dT T!dg4lT#T&T$T%dg4g4NT'dg4dT)T5T*T-T+dT,b�dazT.T1T/MT0azdH:dT2T3T4azd7rh�T6T?T7T:T8cWdT9lignT;T=T<b�b�p�b�T>x�3`T@TCdTATBdd�TDdc�dTFdTGTNdTHTIddTJTKdTLddTM��dTOM�TPM�TQTVTRTSb�d{TTM�TU�Ci#dTWM�TXc�TY`�`�L�T[T�T\T�`�T]T^T�T_TnT`TfTaTcTbc�dc�TdTelc�@L�TgTkThTjL�Ti߫LazcWTlTmLc�M�g4ToTyTpTtTqTrMb�`�Tsc�MTuTwTvd{�%b�TxM�x�TzT}T{T|L�aNcWc�T~TLdl��T�T�T�T�T�T�T�T�c�b�cWMT�T�lL�n�dT�T�T�T�T�cW��`�M�T�,i"�T�T�T�L�"�,iT�aNLMT�T�T�T�T�T�g4T�`�Mc�T�aNp�T�T�j�dc�d{T�T�T�T�Lg4�lq�T�c�MT�T�T�T�tyT�tyT�T�b�T�T�tyT�T�`�@b�T�T�T�T�e�@@nWT�T�dM@lb�T�dT�dT�dT�dT�BfdT�T�MM�L�T�T�T�T�T�T�T�L�Mc�lT�T�aNllT��oMT�T�T�L�c�lT�T�Mb�d{dg4T�L�T�MT�`�g_T�U�T�UT�U<T�UT�T�T�T�T�T�T�NT�NT�NazNT�T�T�T�T�NBfdNdT�NT�N,iNT�T�NT�T�NT�T�dNNazT�NNT�NT�NdT�UNT�T�T�dT�T�dT�dT�BfT�BfdBfT�dT�dT�dT�BfT�BfT�BfT�BfT�BfT�BfUBfdBfUUdUUUb�NUdNdUUazU	U
U"�NNdazU
NUdNUU/UUUUUNQ�UUQ�Q�MUNUUUN8NNUdNUU'UU!NUU NH:NU"U$NU#dH:U%U&NdN;NU(U*NU)NdU+U-U,NdNU.NNddU0U1U8U2U5NU3NU4H:M�U6NNU7dNNU9U:NU;NNdU=UmU>U[U?ULU@UHUAUEUBNUCUDdNdNUFNNUGNdNUIUJNNUKdNUMUQNUNNUONUPdNURUVUSazUTUUdazdpzUWUZUXUYdNNs8NdU\UeU]UaU^NU_NNU`dNNUbUcNNUddNUfUiNUgUhNazNNUjUkNNUlNazUnUrNUoUpNNUqNdUsUzUtUxNUuUvNNUwNb�NUyNazNU{NU|NU}NU~dNU�U�U�U�NU�U�U�U�U�NU�NazazNNU�NazNU�NU�azU�NU�azNU�U�NU�NU�NU�NU�U�NNU�azNU�NNU�U�NU�NNU�U�NazNU�VU�U�U�U�U�U�cWU�U�U�U�U�U�U�U���M��b�U�dazU�azgCU�U��gQLU�dU�d�oU�cWU�cWU�U�U�U�U�m�mU�LL�`�U�g�cWU�U�U�U�cWU�U�U�U�cWU�cWs8cWcWU�cW�;U�U�cWNcWU�cWU�U�~��~U�U�U�U�U�U�L�NU�dU�cWpzcWU�U�U�U�cWLU�LcWm�U�c�U�Mm�cWU�U�U�U�U�U�MU�dm�U�cWm�tkU�U�cWU�M�U�U��McW�U�U�U�U�U�cW�cWd�U�cW�U�U�U�U��cWe���U�U�v�cWcWv�i�U�i�U�U�U�U�U�U�U��ei��ei�U�U��ei��ei�U�VU�U�b�L�c�[mVVVVm�`�d{MdVt�b�VV_VVV	V
y7�HMl�VV#V
VVVVy7Vd]VVL�dN�"VVVVcWl`�i�MVL�dVVVVb�c�b�gQVV"Vd{V V!^C$$L�ٰlMV$VBV%V3V&V-V'V*V(V)aNL�v�dV+V,dn�dm�V.V0cWV/H:b�V1V2d{ldc�V4V;V5V8V6V7dMc�nWV9V:p��,�,H:V<V?V=V>c�L�cWH:V@VAlc�c�aNVCVQVDVKVEVHVFVGd{L_�H:VIVJdc�c�t�VLVNc�VMaNOqVOVPL�dc�dVRVXVSVUVTdi�NVVVWlc�dMVYV\VZV[g4azaNc�V]V^liMc�t�V`V�VaV�VbdVcVtVdddVeVfdVgdVhdVidVjVodVkdVldVmdVndq�VpddVqVrdVsddo�VuVxdVvVwddb�VyddVzdV{V|ddV}V~dVdq�dV�V�V�dV�V�dV�V�V�V�V�dV�dV�dV�d�CdV�dV�dV�d�CV�V�V�V�dV�dV�V�dV�d�QddV�dV�d�QdV�dV�dV�d�QV�dV�dBfdV�V�V�V�V�V�V�L�dc�V�dj�dV�b�AeV�j�dV�db�c�V�V�V�V�V�V�V�V�V�V�V�M�dj�dV�dj�V�dV�V�c�b�d�XdV�V�V�M�MdLV�V�V�V�V�V�dLV�V����<�<��dV�q�dV�dV�V�V�q�dڈV�V�dڈdڈV�V�V�V�V�V�V�V���V�ڈdV�nWg4azV�V�M�V�g4ddV�g4dV�ddV�M�V�g4dV�V�V�V�V�V�dV�dMV�V�dAML�V�V�V�L�MdL�dV�V�V�L�V�dMdL�V�L�V�dMV�^�V�\V�XV�W�MV�V�WoV�WRV�W!V�W
V�WV�V�M�V�V�M�M�V�M�{�WWM�WM�WM�LM�WM�WM��M�WWW
W	M�M��M�WW[M�=WWWM�M�WM�WWM��0M�WWM�WWM�M�WM�[WWWM�WWM�vM���WM�WW M���M�*dW"WCW#W0M�W$W%W'W&M�{TM�W(M�W)M�W*W-W+M�M�W,M�hW.M�W/M�M�hM�W1W2W@W3M�W4W8M�W5M�W6M�W7��M�W9W=W:W<W;M�M���M���M�W>M�W?��M�WAM�M�WBM�LWDM�WEM�WFM�M�WGM�WHWIM�WJWOWKWMWLM���M�M�WNM���WPM�WQM�M���WSWnWTW^WUWZgCWVgCWWWXgCgCWYgCb�gCW[gCW\gCW]w*gCW_WfW`gCWagCWbWdWcgCwgCWegCgC{�b�WgWhWkb�WiWjb�v�b�Wlb�b�WmJ�b�b�azazWpWqW�WrW�WsW�WtWyWub�Wvb�WwWxLq���LWzW�W{W}��W|xvLW~W��b�v�PWW�W�W�b�xv��LW���LW�W�W�W�W�W�xvW�q���q�W�xvq�b�W�q�W�xvdW�W�Nb�Lb�W�W�W�W�b�W�b�LliW�liW�liW�liW�W�liW�liliW�W�liW�liliW�W�lijVliW�W�W�W�b�W�W�W�b�LLb�W�b�W�w���xvW�W�b�W�w�W�d��b�W�W�L��LW�W�W���W�W�W�b�dW�azW�Lb�b���W�W�W�b�W�db�Lb�W�b�w�W�W�p�W�W�W�dW�dW�dW�dW�W�dW�W�dW�d�CW�ddW�dW�dW�dW�dW�dW�W�ddW��DdW�dW�dW�ddW�dW�dW�dW�@dW�XW�akW�W�LW�LdLW�W�W�W�MW��W�dW�cWq~MW�W�W�W�W�W�W�W�ML�Mc�W�W�b�MNdW�W�W�W�tyc�i�gCW�W�aNMtyd{W�XW�W�W�W�M�c�dM�W�XM�lNb�XXXXq~dc�MMXg4c�p�XnWX	X
XXMXXX
XXX`�߫L�dXXd{b�iM`�XXd{b�XXm�MdMLq~XZ^XYiXX|�XXXCXX5X X+X!X*X"kXX#kXX$kXkXX%X&kXX'kXX(kXkXX)kXgCv�azp�X,X-X0p�X.X/L�p�L�X1X3L�X2L�ddX4dakdX6c�X7X8X>X9X;L�X:dMX<X=d}�liMX?XAX@dltydXB�g_XDX]XEXVXFXIi�XGc�XHLg4XJXOXKXNXLXML�M�d{�MdXPXSXQXRg_{
Mg_XTXUxvcWb�lXWXZXXXYakM�b�M�X[X\g4xvc�MX^XnX_XgX`XcXaXbdNg4d{XdXfNXee�d{c�j�XhXkXiXj��L�L�d{XlXmd{dd{MXoX|XpXvXqXtXrXsdc�dNc�Xud`�XwXydXxdL�XzX{dH:ldX}X~MN`�dX�X�X�X�X�X�X�X�X�X�X�X�dc�nWX�dX�b�q�X�X�cWX�cWX�cWg_X�L,X�c�L�X�X�X�X�y7X�X��c�dkuX�X�X�Q�NL�c�X�X�X�X�Q�X�c�L�c�X�L�L{
X�c�X�L�LX�X�X�X�X�L�X�X�l�L�@X�LMX�X�X�H:L�l�L�X�X�@L��X�X�X�X�X�`�L�X�L�LX�X�X�M�MM�X�X�M��,d{p�X�X�X�X�X�X�d{b�Md{X�X�MM�db�X�X�X�X�c�g_LMX�X�MlL�akX�X�X�X�X�X�X�d{c�}�X�X�diMy7��X�X�X�X�M`�M�L�X�X�Md{g4d{X�X�X�X�X�X�dd{b�L�X�X�dcWc�LX�X�X�X�L�d{ak`�X�c�b�nWX�Y(X�YX�X�X�X�X�X�L�X�X�gngnli`�xvX�X�X�X�X�aNy�LaNL`�b�X�X�X�X�X�MX�X�b�d$b�p�g_X�X�X�L�cWcWL�YYb�cWYMYYdm�dm�YYYYYYY	YY
Yv�w�cWL�~Y
cW�YYcW��cWe�YYp�e�YYYe�e�e�MYOaMYY#YYYYYg�cWL�g�cWYY!Y e�cW�Y"e�c��Y$Y'Y%LcWY&b�d$My7Y)YBY*Y:Y+Y4Y,Y/dY-Y.cWcWdazY0Y1Y3Y2cW��L�:cWY5Y9LY6Y7Y8p�d$iMcWL�K�Y;cWY<Y=cWiMY>Y@cWY?iMg4YAdL�cWYCYSYDYFYE~cW~YGYLYHYJcWYIcWdYKb�iMlYMYPYNYO��d{l�`�YQYR��NiMakYTY^YUY\YVYYYWYXb�g4LL�YZY[L�cWL�cWcWY]cWdY_YdY`YbYaM�cWMYcb�McWYeYgYfM�L�b�LYhcWMYjY�YkYrYlazYmYqYncWYocWYpcWL�cWazcWYsY�q~YtYuxvYvYxb�YwLazNYyYzY}Y{Y|c�Mb�xvY~Yd{xvL�b�Y�Y�|�Y�L�Y�L�Y�Y�L�L��LY�Y�Y�Y�Y�b�c�Y�Y�`�b�Y�p�liL�Y�dY�Y�Y�Y�c�db�g_Y�d`�lY�Z)Y�Y�Y�Y�Y�Y�Y�Y�azY�Y�Y�Y�Y�Y�azazY�kXY�kXazY�azazY�Y�azazY�Y�azY�azazkXazY�Y�azazY�azY�azY�azY�Y�azgQazY�azY�Y�azY�ubazY�Y�Y�azazY�Y�azY�azazY�azY�wazazY�Y�Y�azY�Y�azY�azazwY�azY�azazY�Y�azY�azwazY�Y�Y�Y�azY�Y�azY�azY�azY�azazY�azY�azgCY�azY�azY�azazY�Y�azazY�Y�azazkXY�azazY�Y�azazY�Y�azazY�azY�Y�azY�azazw*Y�Y�Y�Y�Y�Y�l�iMY�Y�Y�d{E�	Y�Y�Q����mQ�Y�Y�L�lb�L�Y�Y�c�Y�d{aNY�Y�aNakMlY�Z	b�Y�Y�ZY�Y�Y�Y�cW`�b�Y�cW��ZZdc�db�ZZZZMZ�Ib�LMZdaNlZ
ZZZZZZ
Zd{Mc�cWZZMb�`�c�ZZZZNZi���nWb�ZZl`�d{b�ZZ"ZZZZg_ddc�Z Z!d{b�L�c�Z#Z&Z$Z%d�cWc�Z'Z(cWc�Mb�Z*ZRZ+Z8Z,NZ-NZ.NZ/N;Z0N;N;Z1Z2Z6Z3OTZ4Z5N;OTN;OTN;Z7W�N;Z9NZ:ZFNZ;Z<NNZ=NZ>NZ?NZ@ZANZBNZCNZDNNZEU�NZGNNZHNZIZJNZKNNZLZMNZNNZONNZPZQNNU�NZSNZTZUNZVN;N;ZWZXN;ZYN;N;ZZZ[W�Z\Z]N;W�N;W�Z_[
Z`Z�ZaZ�ZbZuZcZtn�ZdZeZmZfZiZgZhm�b��IaNZjZkMlZlc�Nl�ZnZrZoZp`�c�ZqdcWc�c�Zsc�b�Mg4Zv�,Zwg4ZxZ�ZyZ~ZzZ|Z{q~�*�Z}q~*�q~q~ZZ�Z�q~h1�'q~q~Z�Z�q~q~Z�y�y�Z�Z�Z�Z�MM�Z�Z�Z�Z�M�Z�Z�Z�c�Z�NMb�Z�Nm�Z�Z�Z�Z�Z�Z�`4242$$Z�q�vq�Z�Z�L�Z�L�vZ�Z�L�m,�`Z�Z�Z�Z�Z�Z�Z�Z�cWL�i�NZ�b�d`�Z�Z�dZ�Mc�L�Z�L�g4Z�g4Z�Z�Z�Z�b�ddc�Z�Z�dMakc�Z�Z�Z�Z�Z�Z�Z�MZ�Z�d{Z�d`�Z�Z�tyNc�j*Z�Z�Z�Z�Z�dMakd{dZ�Z�Z�Z�Z�Z�dM@`�Z�NMnWZ�Z�Z�Z�Z�e�aNe�@Z�Z�e�cW@Z�Z�@b�Z�@c�p�Z�Z�dZ�Z�`�MZ�Nm�cWZ�Z�Z�Z�Z�MNd`�cWdZ�Z�`�Z�Z�Z�`�Z�`�L�Z�g4Z�Z�g�g4MdZ�lZ�llZ�lZ��lZ�MZ�Z�Z�Z�Mt�b�MZ�Z�e�Md]Z�j�Z�j�Z�j�Z�j�Z�Z�[j�Z�Z�j�Z�j�Z�j�Z�j�j�[j�[@j�j�[[j�[j�[j�[j�[j�j�[	@j�[[�[p�[
[S[["[[[[[[[d[[e�uNd`�N[[c�d[b�[[L�dud[[[![d[ dBfddr[#[=[$[-[%[)[&j�['[(q�MM�L[*[+[,d{lx^Cd[.[/q~d[0[;[1[2o�b�o�[3o�[4[5o�o�[6o�[7o�[8[9o�o�[:o�b�e�[<e�i�[>[M[?[L[@[Je�[A`�[B[C&`&`[D[E&`[F&`&`[G[H&`[I&`��&`b�[Kڥb��`�[N[Oaze�[P[Q`�e�b�[R�*�[T[y[U[h[V[\[W[Zd[X`�[YNd[[iMb�d[][b[^[`[_dNd[a`�dL�[c[ed[db�w[f[g�+��g4��[i[s[j[o[k[m[lt�L�d[nb�L�c�d[p[q[rdL�dw[t[uN`�[v[wb�d[x`�g�d[z[�[{[�[|[~nW[}d`�[[�b�L�b�[�daz[�d[�d[�ddL�[�[�[�[�[�[�o�[��m�[�tOg�M[�c�d[�d#d[�d{�b[�M[�\[�\[��X[�[�[�[�[�[�[�azaz[�[�[�[�az[�azazw*[�[�az[�[�[�az[�[�azaz[�w*az�azw*azaz[�gC[�[�azaz[�[�azaz[�[�azkXaz[�[�az[�az[�az[�[�az[�azaz[�[�azgQaz[�[�az[�[�[�azgQaz[�[�az[�azgQaz[�[�az[�[�az[�az[�az[�azgQazaz[�[�azaz[�[�azazgQ[�[�[�[�az[�w[�az[�az[�az[�[�az[�azaz[�[�azwaz[�azaz[�az[�[�[�az[�w*azw*az[�[�az[�az[�[�az[�azaz[�az[�[�azv�az[�[�[�[�[�az[�az[�az[�azazgCaz[�az[�[�az[�azaz[�az[�[�azazgCaz[�[�az[�az[�az[�az[�\az[�\azgCaz\azaz\azgC=�L�\\g4NЛcW\	]e\
\�\\8\\j�\
N\N\\NN\N\\N\\NU�NU�d\\\'\\\\�d\d�C\�Cb�\b�\ \"\!dx�d\#b�\$d\%\&�Qc�i#��\(\6\)dd\*d\+d\,\-dd\.\/d\0dd\1d\2\3d\4d\5dd�d\7Md\9\�\:\�\;\r\<\V\=\Q\>\E\?\B\@dak\AMxvd\C\DM�Mc�o�\F\Go�\Ho�\Io�\Jo�\Ko�o�\Lo�\M\No�\Oo�\Po�b�o�\Rd\SazM\TM\UMd\W\^\X\Yb�q�\Zo�M\[\\\]azMMN\_\f\`\cM\a\bMMi�\dM\eMMazM\g\ho�o�\i\jo�\ko�\lo�\mo�o�\n\oo�o�\p\qo�o��6\s\y\t\w\u\vazMMaz�N\xMaz\z\�\{\�\|dd\}d\~\dd\�d\�d\�\�d\�dd\�\�d�-daz\�M\�M\���M\�\�\�\�\�\�\�M��MM\�c�M\�\�\�MMaNM\�Mxv\�azM\�\�\�xvMl�M\�\�\�\�\�\�\�\�\�\�\�\�b�e�L�d{\�\�c�L�ML�\�\�\�b��Kb�\�\�e�\�l��Mb�\�\�\�\�\�\�\�\�M�L�NaN\�\�`�kXaN`�\�\�\�\�dc�LL�\�\�cW�;d{xv\�\�\�\�\�\�c�L�b�g_\�\�g4Mc�aN\�\�\�\�aNMaNؤ\�\�Lb�=�ku\�n�\�azaz\�az\�gQaz\�\�rfi�\�M�\�az\�az\�azaz\�b�azg4L�\�]K\�]JM\�\�\�\�\�M\�M\�\�\�\�\�l\�M�,\�\�d�,drb�N\�\�M\�\�\�M\�e�\�e�Դakc�M\�M\�\�\�\�K�c�K�\�c�Nty\�]\�\�M\�M\�M\�M\�M�,]]]]]�b]]e�i�_�e�]]	]]�Z����iak]
tkak]]L�]
m�]�,@L]K�]Ll]].]]]]]]]Mb�L]]Li�dcW]d{]]g4LlL�] ]']!]$]"]#Nld{d]%]&lLL�ty](]+])]*dymMcW],]-c�Mdak]/];]0]4]1]3]2c�xvM�c�ak]5]8]6]7t�lMl]9]:c�akd{d]<]C]=]@]>]?L�c�akM�]A]BdnWg4b�]D]G]E]FNL�b�d]H]Ixvq~Mb�`�N]L]\d]M]N]U]Od]Pdd]Q]Rdd]S]TdBfd]Vdd]W]Xdd]Y]Zd][dd@]]d]^dd]_]`d]ad]bd]cd]dddBf]f^x]g]�]h]�]i]�]j]�]k]ldliM]m]n]|]o]u]p]r]qK�P�d{]s]tb�c�c�p�]v]y]w]xcWMg_xv]z]{�HcWg_�I]}]�]~]�]]�n�t�b�l]�]�cWNb�L]�]�d]�dq~M]�`�N]�]�MlMq~]�]�]�`�]�L�]�]�]�]�d{c�L�]�]�]�g4azc�d{]�]�`�b�d{c�]�]�g4Mt���N]�L]�]�`�]�`�]�`�]�]�`�]�`�M�]�t�M��]�^]�c�]�]�]�]�]�]�]�]�]�]�d]�d`�g4]�]�dq~d]�]�]�]�]�]�q~ddq~]�d`�d]�d]�`�d`�]�]�]�]�tyakb�c�]�]�]�]�tk]�`��{]�]�`�dd`�di�]�]�d]�d]�]�d]�]��Cd+�d]�]�d]�N]�c�]�xvF�]�d]�L�F�]�dxv]�]�]�]�d]�]�]�d]�d]�xvd]�]�d]�3�d]�]�d����@]�]�d]�]�]�dc�d]�`�d]�]�]�d]b�]��Ni#M]�]�]�N;U�d`�]�^]�]�]�]�d]�]�ddN]�]�M�ddb�]�]�]�diMd^c�^^NddN^^^^^L�^^iM^�y^	�y^
�y^�y^�y^
�y^�y^u)�y^N@^^d{^@@^@l�^^azdaz^פdd^^dd^d`�^^;^ ^&aN^!aF^"^#L�aN^$֥^%aN`�^'^8aN^(^)^5cW^*^+)�^,$$^-$$^.$$^/$$^0$$^1$$$$^2$$^3$$^4)�$$^6^7�O$$)�cWd^9^:aNnWaN^<^u^=^>`�c��G^?^@^T^A^K^B^F^C^Dazw^Eazwaz^Gazaz^H^Iaz^Jaz�Maz^L^N^Maz{�azaz^O^Pazaz^Qaz^R^Saz�iaz^U^n^V^f^W^`^Xazaz^Y^Zazaz^[az^\^]azaz^^az^_�iaz^aazaz^baz^caz^daz^e�iazaz^g^haz^iaz^jaz^kazaz^l^mazkXaz^oaz^p^taz^qaz^r^sazgQazazgQ^v^wg4d{L�g_^y^�`�^zb�^{^|^�^}^�^~^�nW^^�^�dlnW^�^�d{d{@^�^�^�^�Mڈc�N^�^�d{c�MM�^�^�^�^�^�^�dm�c�N^�^�K�`�cWg4^�^�^�d{N^�b�^�b�b�^�^�^�^�g_^�g_^�^�g_^�g_^�g_^�g_^�g_^�g_^�g_g_M�^�^�c�`�Mm�^�`�^�b�b�x�^�^�^�^�^�^�^�^�Lakkud^�^�c�b�d{az^�^�d^�L�`�^�^�dc�dL^�^�^�^�^�^�L�b�c�b�^�^�d{p�d{d^�^�^�^�L�d{p�c�^�^�dku^�`�^�^�M�o^����;^�q�^�M^�M^�M^�q���^�^�p�M^�^�^�^�b�^�^�^�b�^�b�^�^�b�b�x�b�^�^�b�^�b�^�b�x�b�^�b�b�^�^�^�b�^�^�b�b�x�^�^�^�b�b�x�b�^�b�^�x�b�cW^�cW^�cW^�^�cWcW^�^�cW^�cWcW^�cW^�cW^�^�cW^�cWcW^�cW^�^�cWcWx�^�`�^�`2^�`__H_____aN_aN_aNaN__aNaN_aN_	_
aN_aN_aNaN_
_aN_aN_aN_aNaNl�__Ae@&Ae_Ae@&N___5__db�__%d___!�___ b�db�d_"_$i#_#�C�b�d_&_)_'dd_(dMu�_*_+m_,m_-mm_._/m_0m_1m_2mm_3_4mU�m_6_D_7d_8dd_9_:d_;d_<dd_=_>d_?dd_@_Ad_Bdd_Cd�_E_Fdazd_Gb�m_I_�_Jp�_K_�_L_�_M_t_N_jQ�_O_P_X_QQ�Q�_R_SQ�Q�_TQ�_U_VQ�Q�_WQ�N;_YQ�Q�_Z_[Q�_\_fQ�_]_^_bQ�__Q�_`Q�_aOTQ�Q�_cQ�_dQ�_eOTQ�Q�_g_hQ�Q�_iQ�OT_kQ�_lQ�Q�_m_nQ�_oQ�_pQ�_qQ�Q�_r_sQ�Q�W�Q�_u_vQ�_wQ�Q�_x_yQ�_z_�_{_�Q�_|_}Q�Q�_~Q�__�Q�Q�OEQ�_�Q�_�_�Q�_�Q�Q�_�OEQ�_�Q�Q�_�Q�OE_�_�Q�_�_�Q�_�Q�Q�_�U�Q�Q�_�Q�_�Q�_�Q�_�Q�_�_�_�_�_�_�Q�Q�_�Q�_�Q�X#_�Q�Q�_�_�_�X#Q�X#Q�_�Q�_�Q�X#Q�_�_�_�_�_�Q�Q�_�_�Q�Q�_�Q�_�_�Q�Q�_�Q�_�Q�_�Q�_�_�Q�Q�_�OEQ�_�_�Q�_�_�Q�_�Q�Q�_�Q�_�Q�_�Q�_�_�Q�_�Q�_�Q�Q�_�SQ�Q�_�_�Q�Q�_�Q�_�Q�_�_�Q�Q�_�_�Q�_�Q�Q�OT_�_�_�OT_�OTOT_�_�OTOT_�OT_�_�OT_�OT_�OT_�OTOqOT_�OT_�_�_�_�OT_�OEOTOT_�_�OT_�OT_�OTOT_�VpOT_�OT_�OTOT_�OT_�_�OT_�OT_�OTQ�OTub_�_�L�L�_�_�_�_�_�_�L�L�_�_�L�_�L�L�_�L�_�_�L�_�L�L�_�_�L�L�_�>CL�L�_�L�_�_�L�L�>c_�L�_�L�`L�L�`>�L�````M`M`M`M`M`	M`
M``MM`
`M`MM`M`M`M`M`�|M`MM`M`M``MM`M``MO�M``1` M`!`0l�`"`#�X`$cW`%cWcW`&cW`'`(cW`)cW`*cW`+cW`,cW`-cW`.cWcW`/cWm:c��L�M`3`r`4`7`5`6g4cWtyp�`8`qxv`9`:`p`;`[`<xv`=`L`>`E`?`B`@`Adc�dM`C`D`�dlcW`F`I`G`H`�m�`�g4`J`Kb�d`�d`M`T`N`Q`O`Pږdx�L`R`Sdb�c�d{`U`X`V`WN@c�d`Y`ZMi�L�d`\`a`]M`^MM`_``M�oM`b`i`c`f`d`eb�dm�b�d{`g`hb�Nj�`j`m`k`lNg_b�M�`n`od{b�L�NnWxvL�p�`s`uM`tM�t�`v`�L`w`x`�`y`|M`zM`{Mq�`}MM`~`MM`�`�MM`�M`�M`�M`�`�M`�M`�M`�MMO�`�MM`�`�M`�MM`��;MM`�`�`�Ae`�Ae@&`�@&`�Ae`�@&��`���`�`�@&@&`�@&`�@&`�`�@&`�@&@&�`�a	`�`�`�`�`�`�LiM`�Mb�`�`�b�`�`�`�b�b�`�b�`�b�`�p�b�`�`�`�b�`�b�`�b�p�b�b�`�`�b�`�b�b�x�`�`�xvNcWaz`�a`�`�g4`�`�`�`�`�`�`�`�`�`�`�d`�`���d#�d`�`�e�de�`�b�dd`�`�`�`�dd`�N�Hde�F�`�`�d`�`�`�b�`�b�dm�`��`�dd��`�`�`�`�d`�`�Mb�`�b�`�b��C`�`�b�`�b�`�b�`�`�b�`�b�`�b�b�`�b�`�b�`�`�b�`�b�gb�b�t�d`�Md`�`�`�azazw�`�`�az`�az`�`�`�w`�azgQaz`�az`�az`�az�Baz`�`�aazgQgQazM�aaaNaMaaaMt�a+�b�Mt�a
a�aaHp�aa
`�aaEaa<aaaaaaab�c�aQ��aab�nWdQ�aaaag4Nd`�aa`��0`�b�a a/a!a(a"a%a#a$c�NcWg4a&a'n�g4Nc�a)a,a*a+aNg4aNL�a-a.L�NlL�a0a6a1a3da2d]cWa4a5c�L�NMa7a9da8g_�a:a;d{`�c�`�Na=a>a@d{a?c�M�aAaBL�d{b�aCb�aDb��YaF`�MaGZvL�aIaJ`�daKa�aLdaMa`aNaS`�aOaP`�aQ`�aR`�ڗ`�aTdaUa_aVaYaWaXg4xv�8akaZa[e���la\@a]da^@N�daaaoabagdacadaedd{afMaNd{ahamaiakajd$b�d$aldldy7anb�b�apa|aqaxarauasatdcWMd{avawlL�q~aNayazd{aza{akMg�a}a�a~a�b�aW2ؤd{cWa�a�d{dc�`�a�a�a�a�a�a�a�a�a�a�c�a�dM�a�a�cWg4d{b�a�a�a�b�j*d{a�a�b�L�`�Na�a�a�a�a�a�a�a�aNb�L�d{a�a�L�d{N{
a�a�a�a�b�c�d{aNe�a�c�g4a�a�a�a�a�a�nWMhb�a�b�`�b�a�a�a�a�`�g4aNc�a�a�d{aNc�NMNa�a�b�a�a�a�a�a�a�a�g_n�`�`�a�d{b�Ma�a�d{a�L��a�a�b�N;aNb�{
Ma�a�a�a�nWn�L�p�a�a�p�NL�a�a��0a�a��0a��0a�a��0a��0a��0�0a��0a�a��0a��0a��0�0a�a��0a�a��0M�Z��0a��0�0a�a��0�0a�a��0�0a�a�rra�ra�r�0a�r�a�i�a�ffa�dna�b�a�bDa�a�a�nWg_nWa�b$a�a�a�a�MNa�m�b�a�a�a�b�a�b�a�`�b�b�a�i�b�a�a�Mda�b	a�ba�bb�a�azb�bb�g4i�bbbbc�b�c�b�bbb�`�g4c�b
bbbbbMb
Xb�x�kubbb�biMt�d{b�bbbbb�c�MlbbbMH:Nbc�azbazbbazbazazb b!azb"azb#az{�azb%b&L�g4b'b7b(b/b)b,b*b+d{b��4b�b-b.m�d{c�d{b0b3b1b2@azj�Mb4b6Nb5yb�MK�b8b>b9b;b:c�dd{b<b=Mdb�c�b?bBb@bAd{Lc�t�b�bCdb�bEb�dbFbGbcd{bHLbIbJbRbKbMdbLaNm�bNbPbOd{NiMd{bQj�M�bSbVbTbUnW�LM�bWbabXMdbYbZddb[db\db]db^db_b`ddm�d{bbd{Mbdb�b�bebfbsbgbmbhbkbibjaNMkuNn�blakMbnbpMboMcWbqbri�y7nWMbtb{bubxbvbwMq~b�j*bybzcWc�c�nWb|bb}b~d{M�xvdb�b�g4MMdL�b�L�b�L�b�b�L�L�b�b�L�L�b�b�L�b�L�L�b�L�b�b�L�L�b�L��mL�b�b�b�b�b�b�i�b�b�b�b�b�b�b�mg4mb�b�Lb�{�Lb�aN`�aNb�b�azb�b�azb�azazb�b�azazb�azb�azb�b�azubazb�L�b�L�L�b�b�L�L�b�L�b�b�L�b�L�L�b�L�b�L�b�L�b�_�L�b�b�Nb�b�b�azb�azb�azb�b�b�azb�b�b�b�b�b�azazb�azwazb�b�azazwb�b�az�b�azazb�wazazb�b�azb�azazb�b�azwazb�Mb�Mb�MMb�b�M�OMb�c�b�cb�b�b�c
b�b�tyb�b�b�b�b�b�b�nWb�d{b�b�b�lNb�b�b�b�Lhc�p�b�b�b�typ�b�L�p�Mb�b�b�b�b�b�b�b�b�Mc�M�c�b�b�Mc�iMcWb�b�b�b�dlc��bb�b�cWc�iML�b�cb�ccciMcWiMm�cLMazcccdldcc	L�dMg4ccc�Mc
dccccccMcaNNMcWcccMd{ԗl�lccccNcWg4L�ccc�lic�akcMc clc!ckc"cXc#c4c$c)c%c'c&M�iMc(M�JMMc*Mc+Mc,Mc-c.MMc/c0Mc1Mc2Mc3M�1Mc5c>c6c<Mc7c8MMc9Mc:Mc;��Mc=M�Mc?cKc@cAM��cBMMcCMcDcEMcFMcGMcHcJMcIMq�q�McL�cMMcNMMcOcPcScQ�ocR�oM�ocTM�ocUcVMcWM�oMcY�ocZcac[c]�oc\�oy��oc^c_�oc`�od�ocbcd�occq��o�ocecf�o�ocg�och�oci�ocj�odd]� p�cmcnMcoc~cpcwcqctcrcs�Xak`�dcucvnWt�b�Mcxc{cyczazLNdc|c}m�Z
g4aNcc�c�c�c�c�dMd{M�c�c�NMb�Mc�c�c�c�m��XLMc�M@Mc�d5c�dc�c�c�c�Mc�c�c�c�cWc�c�c�c�ML�dxvc�c�c�lMc�dMd{Nb�kuc�c�j�lig4c�c�M�c�c�c�c�c�c�c�c�c�c�c�c�[c�[c�c�[c�[c�v[vc�[c�c�=��v[c�[��[c�[c�[c�c�c�c��Z���[#���c�[c�[c�[c�[c�[c�[�[c�[c�[[c�c�[c�[c�[c�[c�c�[c�[M�[c�[M�c�c�c�[c�c�c�c��c�c�c�[c��[�c��#�c�c�c�vc�v#�c�vP�c�[vc�c�c�v����P�[c�[c�c�c�[c�[c�[M�M�[c�dc�c�c�c�c�c�P�c�c�c�������c����c����c�c�c�y��c���yc��c�c�y���c�d�c��c�c�d�bb=dd=�]ddd��]���ddd	dd
d
d[d[�[d�d�[�ddddd���ڡ��d��P�d��ddP���v����ddvdvdv��vd m�d!Mg_d"d#d,d$d(L�d%d&c�L�d'L�@dd)azd*d+L�c�aNd-d1d.d0azd/b�L�cWazd2d3g_L�dd4db�d6dld7djd8dWd9b�d:dId;dBd<d?d=d>L�N`�c�d@dAg4L�lL�dCdFdDdEd`�L�c�dGdHb�laNp�dJdQdKdNdLdMMd{dt�dOdP�$d{L�cWdRdTdSc�dM�dUdVL�Nc�g_MdXdYdbdZd^d[d]b�d\`�fb�`�d_dad`b�c�`�b��Hdcdfdddec�b�c�e�dgdig4dhd{=i�cWdkde�licWdmL�cWdoe�dpd�dqd�drd�dsd�dtdug_b�dvb�dwd�ddxdyd{dzd�cWd{d|nWnWd}d~nWnWdnWd�d�nWd�nWnWd�dd��Od��Od��Od��Od��Od��Od��O��Od�d�dNlid�b�d�db�d�d�Ld�d�Md�Md�d�Md�d�MMd�Md�d�d�Md�Md�d�MMd��;MMd�M�ld�Md�Md�Md�Md�d�M�o�oMp�g4d�ubd�ubd�ubd�ubd�ubd�ubd�ubv�ubd�d�d�nWd�Nd�b�d�d�d�d�nWM`�b�d�d�d{b�d�d{d�d�g_LrXe�d�d�d�b�d�b�d�b�d�b�d�d���b�b�d�b�x�b�d�d�b�b�d�d�b�d�d�d�b�b�x�d�b�b�x�d�eqd�e7d�d�d�d�d�Nd�d�d�d�c�d{NL�d�d�d�dd�b�b��akb�cWd�d�d�d�d�d�d�d{gnd�b�b�L�d�d�d�d�lignNlMc�d�d�d�d�dd�t�lip�b�d�d�dd�dc�d{m�d�ed�j�d�ed�ed�d�d�d�b�g4d{c�d�d�g4dc�b�eeeeiM��c�g4eeb���n�Neee	ee
cWNlee
d{p�c�l�eeeeq~�,d{MeelcWg4dee&eeeeee��b�b�L�eec�lNM�ee#e e"e!dYL�c�Me$e%Lc�dMe'e*de(e)do�dde+e,e-q�dde.e/o�e0o�e1o�o�e2o�e3e4o�o�e5o�e6"�o�e8aze9aze:eGe;eCe<azaze=aze>aze?e@azeAazeBazaz�eDazazeEeFazazubeHeheIe_eJeQeKePeLazeMazeNazazeOkXazazweReYazeSazeTazeUeVazeWeXazb�azgCazeZaze[aze\e]aze^azazb�e`azeaazazebecazedazazeeefazegazwazazeiejazazekelazemazazenazeoazepwazertyese�eteutyxvM�evewezexeyc�Nb�d{e{e|d{c�e}c�e~e�cWee�aze�aze�aze�azaze�e�azaze��BazNb�e�e�e�lie�e�e�e�e�e�Md{d{Me�e�dg_d{de�e�e�e�L�akb�Me�e�b�t�Q�M`�`�e�f<e�e�e�e�e�e�e�e�aNake�de�e�b�d]�ake�e�d{M��e�e�e�e�e�e�e�M�aNb�Me�le�d{c�iMe�e�e�L�ld{e�e�c�Md{b�e�L�e�L�e�L�L�e�e�L�e�L�L�e�L�e�e�L�e�e�i�e�e��e��+�Ie�e���x�e�e�e�e�e�e�e�Me�e�e�e�e�e�nWg_d]e�NQ�e�e���M�c�g4e�e�d{e�m�c�e�e�e�Mc�xvM�b�e�Me�e�e�c�d{nWe�e�e�d{e�b�e�b�e�b�e�b�e�b�e�b�e�b�e�b�e�b�b�b�Md{e�e�|�b�g4e�Me�e�b�b�e�b�e�b�e�e�b�e�b�e�b�e�b�e�b�e�b�e�b���b�e�f.e�f)e�fe�MfffMMfM�OMfMffMfMMff	Mf
MMfMfMf
�OMffMffMfMfMfMfMfMMfMfMfMf�;MMfff'MfMfMf f!Mf"Mf#MMf$Mf%f&M�;MMf(M�%Mf*f+Mf,MMf-�Mf/f7f0f4f1Mf2MMf3M)xMf5f6MM�;Mf8f9MMf:Mf;�;Mf=fef>�,f?fRf@j�fAb�fBfIfCfFfDfEc�ll��fGfH`�iMdb�fJfOfKfLc�lfMNL�fNc���fPfQlMM�d{fSfdj�fTfUf\fVfYfWfXd]lg_`�fZf[iMc�nWg_f]f`f^f_lL`�xfafbldfcMhc�L�cWd`�fgh\fhg�fig;fjf�fkf{fld`�fmfn`�fo`�fp`�`�fq`�fr`�fsft`�fu`�`�fv`�fw`�fx`�fyfz`�@`�f|f�f}f�f~f�ff�f�Nf�Nf�Nf�Nf�NNf�f�Nf�NNf�Nf�f�NU�NNf�Nf�f�Nf�Nf�f�Nf�Nf�f�f�NQ�f�N;f�OEf�OEQ�OEf�Nf�f�Nf�SU�f�P}[�N�f�Nf�Nf�NNf�f�Nf�NNf�f�Nf�f�Nf�Nf�Nf�NU�f�Nf�Nf�NU�NNf�f�f�Nf�f�NNf�U�Nf�NNf�Nf�f�f�f�NQ�f�Nf�f�NNf�f�Nf�NQ�Nf�NNf�f�Nf�Nf�Nf�Nf�NQ�Nf�c�f�f�f�Nf�f�f�Nf�NNU�Nf�f�NU�Nf�Nf�NNf�Nf�U�Nf�f�f�f�b�f�f�akf�f�f�f�f�f�dLt���f�f�cWd{lf�ڰMf�f�f�f�azdM�d]f�f�cWd{Md{f�f�f�df�g4f�g4f�O�g4f�O�g4f�b�f�f�f�f�b�d{Nd{f�f�c�l�c�g4f�Nf�gf�gf�ggb�q�+�ggsu+�q�gq�o�ggb�gsu+�g	gg
gq�o�m�"��g
b��Cgggggdgb�ggg_d{tyNgggggM�c�d]ggakK�i�dgt�dMgg0g g'g!g$g"g#L�NL�`�g%g&lM�L�dg(g.g)g-g*ݨg+`�g,`�@g4L�m�g/g_L�nWg1g5g2g4g3NMnWb�`�g6g9g7g8McWn�MMg:t�dg<gIg=dg>L�`�g?dg@gAgEdgBgCddgDo�dgFddgGgHdo�dgJg^gKg\gLg[gMb�gNgQgOgPb�Q�^Cc�gRgXgSgUd{gTd{�:gVgWdL�kub�dgYMgZ�Xc�Mq~g]Nd�Ixvg_g`gkgagi�Hgbgcgf�Hgdge�HQ�Hgg�H�HghQ�H�Hgjڿ�HglgzgmgtgngqgogpM`��^akgrgsg4`�Nb�gugxgvgwxvd{akNgydc��g{g�g|gg}g~c�db�dg�g�d{dt�g�fxvg�g�d{g�d]dg�g�b�`�`�cWg�hg�g�MaNg�g�g�g�L�g�b�g�g�g�g�g�g�g�b�c�dMg�g�M�g4dM�g�g�g�g�c�dlb�g�g�db�L�d{g�g�g�g�g�g�g�g�g�g�ld{g_Ng�g�d{lc�akg�g�g�g�L�b�L�aNg�g�c�b�b�db�g�g�b�g�b�b�g�b�g�b�g�b�g�g�b�g�b�b�g�g�b�b�g�p�b�M�g�g�g�g�g�Ng�Ng�g4L�g�dg�g�פlZ�g�g�Mdg�dg�L�fc�g�g�g�g��g�g�g�g�g�b�M�d{g�g���M�g�g�MdcWnWg�d]g�g�g�g�g�g�L�c�b�d{g�g�c�hxvaNg�g�g�g�dm�c�l�g�b�db�g�M�g�`�g�g�g�g�g�g�g�g�f`�gCn�g�g�t�n�`�b�g�g�g�g�lit�aNg4g�g�`�d�c�g�hg�g�g�g�b�nWd{fg�hd{g4L�M�hhhhg4cWAei�hhdMNnWh	h
M`�hhhhh
ht�hhhhhd{hc�hNazc�dhhM{
d{Mj�b�hhc�b�L�d]xvhaNhhh=hh.h h'h!h$h"h#b�akz[dh%h&b�n�M`�h(h+h)h*tyc�d{c�h,h-b�M�LMh/h6h0h3h1h2t�LnWn�h4h5nWn�lg_h7h:h8h9nWg4m�d{h;h<ku`�aNMh>hMh?hFh@hChAhBn�Mn�c�hDhEn�dm�cWhGhJhHhI`�t�t�xvhKhLLMM�m�hNhUhOhRhPhQML�m�n�hShTMcWc�4�hVhYhWhXd{drX`�hZh[xvd{M�kuh]h�h^h�h_hwcWh`cWhahbhphchihdhghehfc�L�dN�hhdMd{hjhmhkhlM�d{b�M�hnhoLMb�j�hqhsb�hrkuc�hthvdhuaNc�M�lhxNhyh�hzh{ЛaNh|MMh}h~h�Mhh�h�h�Mh�MMh��4Mh�MMh�Mh�Mh��OMh�Mh�Mh�M�Mdl�h�h�dLh�Lh�h�h�h�b�h�h�h�h�h�h�h�p�dMNh�h�b�b�akc�h�h�h�h�L�c�d{lh�h�Nh�g4li`�L�h�M�aNh�h�aNaNh�h�aNh�aNh�aNh�aNh�aNh�aNaNh�aNh�aNh�l�aNh�h�M�h�h�h�h�h�h�h�h�h��y�}�d{dl�h�h�tyh�)x��g4q�h�h�h�h�b�j*�IM�c�h�c��,b�Mh�h�h�h�q~Lh�h�h�h�h�h�b�h�h�h�h���h�xvh�h���xvxv3�h�xvh�h���h���h�h�xvh�xvxvh�h�xvh�xvxvh�h�xv��xvh�h���3�xvPWMM�h�h�Mg4Md{Mh�h�h�h�Mh�M�Oh��Oh�h��Oh��Oh��Oh��O�Oh��Oh�M�OMh�Mh�M��h�ikh�iTh�i/h�h�Mdh�dh�ih�lh�ic�g4M�d{iiiiiiiiiit�i@c�i	i
hc�cWtyii
M�L`�e�iiiie�i�NMiidie�l�ii@e�MNiiiie�@M@MiNe�ii%i i"@i!xv`�i#i$p�aNg_@i&i-i'i*i(i)M�g4c�di+i,e�dcWe�@i.e�Mi0iC`�i1i2i;i3i7i4i5aNg4Mi6gQazi8i:d{i9��.Md{i<i@i=i?i>lNN;dM�iAiBd{dL�`�iDiKiEiHiFiGcWMd{p�iIiJdNc�b�iLiQd{iM`�iNiOiPe�ԴlLiRiSc�b�m�p�iUidaziVaziWiXaziYazaziZazi[i\azi]azi^azi_azazi`iaazazibicazaz�Bieazifazigazazihaziiijazw*azildimi�ini�ioi|ipisb�iqMirc�d{itiwiuivj�`�dNixiziyg4�d{o�i{`��i}i�i~i�ii�i�i�i�di�di�ddi�di�i�di�di�ddm�b�c�d{b�i�i�c�L�di�db�i�i�i�b�b�i�c�li�b�lb�i�di�i�i�i�i�i�c�M�g_b�L�i�M�b�i�i�i�i�dNg4cWi�i�i�g_b�azb�li�i�m�`�M`�i�qqi�m�i�li�jKi�i�i�cWi�i�i�i�g4azNi�i�i�i�i�i�i�i�i�g4liazc�i�i�L�b�p���i�i�i�i�`�rXؒVpi�i�Vpؒؒՙi�i�i�i�i�i�lVp9w�i�i��ybnWw�w�i�w�i����i�i�i�i�i�i�i�i�i�i�cWc�dcWi�b�d{cWi�i�i�i�M�g4�^c�i�i�ld{b�c�i�i�i�i�i�i�akd{L�d{i�i�c�{
t�c�i�i�i�i�dldd{i�i�d{L`�d{b�d{i�M�i�j3i�i�i�M�i�i�d`�c�i�ML�i�ji�ji�i�i�i�i�i�m�d{d{b�i�i�c�n�db�jjjjb�c�di�jjdb�b�d{jjjjj	j
L�ML�djj
b�cWc��jjjjc�b�Ng4jM�g4c�jj$jjjjjj`�cWc�djjt�li�;c�jj!jj lxd{l���j"j#b�aNd{dj%j,j&j)j'j(L�lrXg_j*j+c�b�`�L�j-j0j.j/&ddcWj1j2lakb�tyj4jHj5��j6jAj7j>j8j9t�M�j:Nj;azj<azazj=azgCj?j@d{b�d{��jBjEjCjDc�d{MLjFjGNdd{t�jIMd{jJd{v�jLk�jMk�jNk�jOj�jPj�jQjU�ojRjS�o�ojTd�;jVj��ojWjXjwjY�ojZjij[jaj\j]�J�oj^j`�oj_�J�o�J�ojbjfjcjd�J�oje�J�o�Jjgjh�J�o�o�Jjjjqjkjnjljm�o�J�J�ojojp�J�o�o�Jjrjujs�o�Jjt�o�J�Jjv�o�Jjx�ojyj�jzj�j{j~j|Mj}M�oMMjj��oM�oj�j�j�j��oMMj��oMj�j�j��oM�oj�j�M�o�oMj�j�j�j�Mj�j��o�oMj�j��oj�M�oj�j��oMM�oj�j�j�j�j�M�oMj�M�oMj�j�Mj��oMM�o�oj��oj��oj��oj��oj�j��o�oj�j��o���oj�j��oj��oj�j��o�J�o�oj�j��o�oj��oMj�kvj�kj�j��oj�j��oj�j�j��oj�j�j�j�j�j�j��;�;�o�;j��;�oj�j�j��;�o�;�;j��;�oj�j�j�j��;j��;�oj��;�;�oj�j�j��;�o�;�;j��o�;j��oj��oj��oj��o�oj��;�oj�j��oj�j��oj��oj�j��oj�j��o�oj��o�;j��oj��o�oj��o�;j��o�;j�j�kj�j�j�j�j�j�j��;�;�oj�j��;�o�o�;j�j�j��;�;�o�oj��o�;j�j�j�j��;j��o�;j�j�j��;�;�o�o�;j�j��;j��;�ok�;�o�;kkkk	kkk�;�o�;�;k�ok�o�;k
kk�o�;�ok
�o�o�;kkkkkk�;�o�;�okk�ok�o�;�;�okkkk�o�;�;�o�;k�;�okk!k�ok �o�oMk"kD�ok#�ok$k%k2k&k+k'�;k(k*�;k)�o�;�o�;k,k/k-�;�ok.�;�o�;k0�;k1�;�ok3k:k4k6�;k5�;�ok7k8�;�o�;k9�;�ok;k@k<k=�;�ok>k?�o�;�o�;kAkC�;kB�;�o�;�okE�o�okFkGk_kHkRkIkNkJkL�;kK�;�okM�o�o�;�;kOkPkQ�o�;�o�;kSkYkTkWkUkV�;�o�;�okX�;�;�okZk\�;k[�;�ok]k^�o�;�;�ok`kkkakekbkc�;�okd�;�o�;kfkikgkh�;�o�;�o�;kj�o�;klkrkmko�okn�;�okpkq�;�o�o�;ks�;ktku�;�o�o�;kw�okxk�ky�okz�o�ok{k|k�k}k�k~k�kk��;�o�;�ok��;k��o�;�ok�k��;k��;�o�ok��;�ok�k�k�k��ok��;�o�;k��;�ok�k��ok��;�ok��;�;�o�ok�k�k�k��ok��ok��ok��o�ok��o�;d�ob�k�k�k�k�k�k�k�k�k�c�L�d{dk�k�akd{dMk�k�k�k�K�d{g4akk�k�d{NMd{k�k�k�k�L�k�Mj�k�k�c�j�dMk�k�k�k�b�dk�dNb�L�k�b�L�k�k�nWk�k�k�k�k�k�k�b�`�Nk�k�k�d{s8s8b�k�k�c�d{m�Mk�k�k�k�n�Mg4akk�k�dM�akc�k�k�k�k�k�k�k�k�aNd{b�j*k�k�Nk�k�k�rX^CrXb�Mb�k�k�k�k�k�akk�k�b�x�x�Nb�g4k�k�d{g4d{��k�k�k�k�k�k�g4d{b�b�k�k�c�Mb�d{k�k�k�k�k�b�k�k�aNNn�cWcWb�k�k�dd{d{Lk�dk�k�k�k�cWq~Mg4k�k�xvnWb�g4lmWll+lNll!llj�Mllll
l	gCl
gClgCgClgCwlazlazllazllazlazw*azlazlazlazlazlazlazazgQdllNll lMakMMn�l"l*l#Ml$l'l%l&Mg4tyb�l(l)d{c�L�d{`�b�l,lXl-lUl.l6p�l/l0l2l1daNM�l3l4c�Mc�l5Mb�l7Ml8lGl9l@l:l=l;l<c��-M�d{l>l?Mc�dllAlDlBlCd{db�`�lElFxvnWlc�lHlOlIlLlJlKL�`�b�MlMlNb�ak�NlPlRdlQ&c�lSlTc�ldb�lVlWMdg_t�lYl�lZltl[Q�l\ljQ�l]l^Q�Q�l_l`Q�laQ�lblfQ�lcQ�ldQ�leP}Q�lgQ�lhQ�Q�liQ�P}lkQ�Q�llQ�lmlnQ�Q�lolpQ�lqQ�Q�lrQ�lsQ�Oqlul�lvQ�Q�lwlxQ�lyQ�lzU�l{U�l|U�l}U�U�l~U�ll�l�l�U�NU�U�l�O�Oql�l�Q�l�l�l�Q�l�l�l�l�l�Q�l�Q�l�Q�l�N;l�N;Q�Q�l�Q�l�l�Q�N;Q�l�Q�l�l�Q�N;l�Q�l�Q�Q�l�Q�N;l�l�l�Q�l�l�Q�l�Q�l�Q�l�Q�l�N;Q�l�l�l�Q�l�Q�Q�l�Q�N;l�Q�l�Q�l�l�N;Q�N;Q�Q�l�Q�l�Q�l�Q�l�l�Q�Q�l�N;Q�l�Q�l�l�l�Q�l�Q�l�l�l�l�Q�l�Q�l�N;Q�Q�l�Q�N;l�l�l�l�l�l�Q�N;Q�l�Q�N;Q�l�l�N;Q�N;l�Q�l�Q�Q�N;l�Q�l�Q�l�Q�l�Q�l�Q�l�Q�l�Q�l�Q�Q�l�N;Q�l�ml�l�Q�l�l�Q�Q�l�Q�l�Q�l�l�Q�l�Q�l�Q�l�Q�Q�l�Q�l�Q�l�\;Q�Q�l�l�l�l�l�Q�l�Q�l�l�l�Q�l�l�Q�l�l�Q�l�NQ�Q�l�NQ�Q�l�Q�l�NQ�l�Q�U�Q�Q�l�l�Q�l�Q�Q�l�Q�l�Q�l�Q�l�l�Q�l�Q�l�Q�Q�Q�mmQ�mQ�mQ�mmQ�Q�mmQ�Q�mQ�m	Q�m
mmmQ�m
Q�Q�YmQ�mQ�Q�Ymm0mm%mQ�Q�mQ�mmmQ�mQ�mQ�mNmNQ�mQ�mm"mm!Nm NQ�Q�Nm#Q�Q�m$Q�Nm&Q�Q�m'Q�m(Q�m)m*Q�Q�m+m,Q�m-Q�m.Q�m/Q�U�Q�m1mFQ�m2m3m=m4Q�m5m<m6Q�Q�m7m8Q�m9Q�m:Q�m;Q�Q�NQ�Nm>Q�Q�m?m@Q�Q�mAmBQ�mCQ�mDQ�mEQ�Q�U�mGQ�Q�mHQ�mImJQ�mKmQQ�mLQ�mMQ�mNmOQ�mPQ�Q�P�mRQ�Q�mSmTQ�mUQ�mVQ�Q�P�mXmimYLmZLm[LLm\m]Lm^LLm_Lm`maLmbLmcLmdLLmemfLLmgmhLy�LmjNmkm�mlm|��mmmnmtmomq�,mpM�d{mrmsdd{j�g4mumymvmw@&g_g4mxgQazmzm{azd{b�dm}m�m~m�mm�m�m�lc�d{p�m�m�b��HdLm�m�m�m�Mm�L�n�Nt�m�m�lazd{Mm�m�m�m�m�m�b�g4d{g4m�m�b�lLMm�m�m�m�d{@b�Lm�m�`�xvlb�m�m�M�d`�m�m�m�m�m�M�Lt�c�m�m�dd{dd{m�o�m�om�n�m�m�m�m�m�m�Mm�m�m�m�m�A?"NL�m�m�m�dm�b�~�x�b�LMl�m�m�m�j�m�m�c�m�m�m�m�b�b�M�d{lm�L�b�m�m�m����Z��m�m�m�m��im��i�im��im��im��im��^�i�im��im��im�m��im��i�im��^�idm�m�aNm�m�m�m�m�m�b�n�N�Hm�N+b�c�m�m�m�m�d{cWg4cEc�m��dm�n�m�n7m�m�m�v�m�m�m�m�v�m�v��Bm�v�v��Bv�m�m�v�m�v�m�v�v�m�v�m�m�v�w*v�m�n-m�n	m�nm�m�m�kXm�kXm�kXkXwm�kXm�kXkXm�nnkXnkXwkXwnkXnkXkXnkXnnkXkXgQn
nnkXkXnkXn
kXnkXnkXnkXn�"kXnkXkXnnkXnnnnnkXw�kXkXnkXnnkXkXnw�kXnn(n n!kXw�n"n%n#kXkXn$w�kXn&kXkXn'w�kXkXn)n*kXn+kXkXn,w�kXkXn.n/kXkXn0n1kXn2kXn3kXkXn4n5kXkXn6kX�"n8nin9nYn:nQn;n?n<n>n=v�gCv�v�gCn@nInAgCgCnBnCgCnDgCnEgCnFgCgCnGgCnHv�gCnJnPgCnKnLgCgCnMgCnNgCnOv�gCv�gCnRgCgCnSnTgCgCnUgCnVnWnXgCwUwUgCnZnen[gCn\ncgCn]n^gCgCn_n`gCgCnagCnbgCb�b�ndgCb�gCnfnggCnhgCv�gCnjn�nkn{nlgCnmntnngCnogCgCnpnqgCaznrnsgCazgCnugCnvgCgCnwnxgCgCnynzgCv�gCn|n�n}gCn~gCgCnv�gCgCn�v�gCn�gCn�gCn�gCv�gCn�n�n�n�wn�n�wn�n�n�wwubn�wn�wn�ububwn�n�n�n�n�wwn�wn�n�wwn�n�wn�wwn�wn�wn�gQwn�n�n�n�n�wwn�n�n�n�n�n�wn�wn�wwn�gQwn�wn�wn�wwn�gCwn�wwgQgCwn�wwn�n�wn�wn�wn�wwn�gQwn�v�n�v�n�v�gCv�n�kXn�n�kXn�n�kXkXn�kXn�kXn�kXn�kXn�n�kXkXn�wkXn�n�n�kXn�n�kXn�n�kXn�kXn�kXkXn�n�kXkXn�kXn�b�kXn�kXn�n�kXn�n�kXkXb�kXn�b�n�b�kXkXn�kXn�kXn�n�kXkXn�kXn�kXb�n�L�n�n�n�n�kuddn�n�n�n�n�n�LMLn�n�Ln�LMn�n��,`��Ln�Ln�n�LLMn�on�c�n�on�n�n�n�`�lNb�n�b�b�@oooob�l�ld{oodb�b�daNg4o	o�M�o
oopoo7o
oooooooaNdaNL�ooaN�+oaNMaNooooaNoaN���ioaNxvoaNaNoaNg4o o,o!o'o"o$o#��mo%o&azaNdaNo(o*�o)��Mo+aNd]aNo-o3o.o1o/o0g4�aNazaNo2M�aNo4o6aNo5aNe�aNazo8oQo9oIo:o<o;�[azaNo=o?do>aNazaNo@oAazoBazazoCazoDoEazoFazazoGoHaz�"azoJoMaNoKoLaNaNazoNoPoOaNazaNaNdoRoYoSoUaNoTaNdoVoWaNazoXaNazaNoZazo[ono\o]aNazo^ofo_gCgCo`oagCobgCocgCodgCgCoe��gCgCoggCohgCoiojgCokgCgColgComgC��ooazazaNNoqoro�oso�otozouowMov&@oxoyc�&d{c�o{o~o|o}Lc�d@oo�aNc�b�c�o�o�o�o�o�o�d{c�dlo�o�c�b�d{ako�o�o�o�c�db�d{o�o�dtydb�o�o�o�o�o�o�o�o�t�Nb�c�o�o�t�azc�b�o�o�o�b�M@o�o�b�db�lo�o�o�o�o�o�dc�c�c�o�o�b�Mg_L�o�o�o�o�L�|�aNo�o�c�aNo�c�o�c�o�azo�azazo�azo�azo�o�azazo�azgQo�p�o�pxo�pFo�po�o�o�o�o�o�o�o�o�`�b�kuo�o�Mg4{
b�o�o�o�o�b�NMb�o�c�azd{o�o�o�o�o�o�nWg4aNlo�o�b�d{d�,o�o�o�o�g4c�b�nWo�o�azb�db�o�o�o�o�o�o�o�o�K�hb�@o�d{d{o�o�akako�ako�o�ako�akako�ako�ako�ٛako�o�o�o�ln�L�o��odo�o�o�c�M�`�b�L�o�o�o�o�lo�Mb�o�o�tynWdM�o�o�o�o�b�c�dMo�pb�|�d{b�pp!pppp
pppb�c�M�pp	Nd{akxvpppp
c�`�Lc�ppLb�McWppppppNt�xvg4ppc�b�ymlppppe�b�plc�L�pp b�c�iMNp"p5p#p*p$p(p%p&b�L�p'b�b�kup)t�b�Np+p0p,p.p-NiMdp/��@lp1p3{
p2azgQp4�H��dp6p>p7p;p8p:b�p9Q�OTM`�p<p=c�`�Mg4p?pBp@pAb�d{t�g_pCpEb�pDlq~b�hpGMpHp_MpIMpJpKpTMpLpMMMpNpOMpPpRMpQM�opSM�4�opUMpVMMpWMpXMpYMpZMp[Mp\p]Mp^MM�JMp`paMpbpmpcMpdMMpepfMMpgMphMpiMpjMpkplMM�OpnMMpoppMpqMMprMpsptMMpuMpvMpwg�Mpyp�pzp�p{p|dazp}p�p~p~��p���)xp���p���p���p���p�p���p����O��p�p�p�p�p�p�Mq~aNc�p�p�M�c�Mlp�p�p�L�cWq~p�p�Mb�lc�b�dp�b�j�p�j�p�p�j�j�p�p�j�j�p�p�j�j�p�p�j�p�j�p�j�p�j�j�p�j�p�@j�p�p�Mp�azp�p�p�p�p�p�p�p�p�p�p�b�di�c�p�p�ld{azc�p�p�p�b�b�g4p�p�ku@Mdp�p�p�p�p�p�b�c�b�dp�p�`�Lp�g4d{=p�p�p�p�aNc�b�aNp�p�Lb�b�d{p�p�p�p�p�p�p�p�p�g4p�aN�fp��fp�p��fp��fp��fp��f�fp��faNMdp�p�dc�d{b�p�p�Lp�d{akp�p�xv`�g4c�p�p�p�p�p�p�Np�c�`�b�c�p�p�nW`�akNp�p�p�p�b�dLb�p�p�p�c�b�d?p�`�b�d$p�qp�qp�qЌp�gCp�p�qgCp�p�qgCp�p�qp�gCgCqb�qqgCqgCgCqgCb�gCqb�gCqgCgCq	q
gCqgCgCqq
gCgCb�gCqgCqb�gCdqqMp�qp�cW`�qc�b�g_qqqUqq9qq*qq#qq qqL�c�L�Mq!q"cWb�ML�q$q'q%q&g_de�d{q(q)M�cW`�Mq+q2q,q/q-q.lildd{q0q1cWc�Nd{q3q6q4q5lLc�X/q7q8Ld{n�d{q:qFq;q@q<q>q=g4c�n�q?lc�d{qAqDqBqCL�c�c�d{qENaNn�qGqNqHqKqIqJc�Nlc�qLqMh]aNc�`�qOqRqPqQM�c�c�MqSqTc�t�dazqVqcqWq\NqXqYqZ)�d{q[d{n�+Tq]q_q^b�p�d{q`qb~�qab�`�dd{qdqlqeqhqfqgL�t�l`�qiqjd{c�qkaNnWlqmqnaNNqoqpNnWb�lqrq�qsq�qtq�quq�qvq�qwqzqxqyg4db�Nq{q�q|b�q}q�q~q�qq�q���iMgnq�q�y�c�az~q�q�q�q�rXazMdq�q�l�dd{q�q�q�q�q�q��w���~���q�rXM�q�q�q�q�L�iM�w)q�q�drXN�	`�akt�q�aNMq�Mq�q�q�q�j�b�b�L�q�q�j�b�dL�q�q�q�L�q�q�q�MMq�q�Mq�Mq�Mq�MMq�q�MMq�Mq�q�MMy�Mq�q�Mq�Mq�MMq�Mq�q�MMq�Mq�Mq�Mq��MM`�Mq�q�q�q�Nq�Nq�Nq�Nq�Nq�Nq�Nq�NNU�q�q~q�q�q�q�q�q�q�q�q�q�Mq�lb�q�q�lML�dq�q�q�q�aNddnWq�q�akdnWL�q�q�q�q�q�q�b�L�MiMq�q�`�dM�b�q�q�c�q�b�p�q�q�d{kfdb�q�`�Mq�Mq�Mq�q�q�M�JdMq�q�`�q�Mq��*Mg4L�q�rGq�r:q�rq�xvq�q�Mq�cWb�q�rc�dy7b�rr2rr(rrrm�rrrr
rr	c�b�iM|+rriMdr
AeQ�Mrrrrq~L�b�dL�r`�rN�HL�rrr rrrrd{dNMrrb�t�MrrMMg�r!r$r"b�r#L�b�g4r%r&d{b�r'AeLcWr)r*d{c�r+r1r,Lr-Lr.Lr/r0L\
��LN�Ir3L�L�r4L�r5L�r6r7L�L�r8r9L�>CL�c�r;r<rDNr=r>NNr?r@NrANNrBNrCQ�NazrErFaz��azrHr}rIrJ`�NrKrdrLr\rMr[rNMm�rOm�rPrQm�rRm�m�rSrTm�m�rUm�rVm�rWrXm�m�rYrZm�m�+rt�g_r]rcr^�;�;r_r`�;�;rarb�;g��;xvb�rerqrfrlrgg4rhg4rid{d{rjd{rkd{L�LrmdrnK�rod{rpd{sGrrruLrsrtd{K�d{rvrxd{rw�gQryr{�irzazt�r|d{az�Mdr~drr�dr�ddr�dr�dr�r�ddr�dBfr�z�r�ver�uHr�s�r�sr�r�r�Nr�r�r�r�r�r�r�r�r�r�d�NLr�r�d{dd{c�r�b�c�db�r�r�r�r�g4b�dc�b�r�r�r�r�r�r�r�r�r�r�r�r�n�Nl@r�r�akb�akc�r�r�r�r�azb�Md{r�r�c�n�c�dr�r�r�r�r�L�N`�r�g4c�L�r�r�b�r�c�xvr�b�Mb�r�r�r�r�r�r�dr�NQ�cWhr�r�ymg4c�aNr�r�r�r�`�r�NQ�c�d{Nr�azMxvr�r�r�r�r�r�r�akMc�r�g_d{r�r�q~`�NMr�r�r�b�M�c�r�r�d{Md{M�r�b�r�r�r�t�M��r�r�g_cWr�`�r�r�r�r�r�r�r�r�g4|�n�`�r�r�l�c�g4Nr�r�r�r�M�lH:q~r�r�g4m�g4L�r�r�r�r�r�r�|b�M|�r�r�c�`�b�|r�r�r�r�b�McWd{ss`�dL�Nss`L�sssOss;sssss	ss
ss��xv����s
�3�ssxv��sxvPW��ssss��sxvّxvsxv��ss3�xvsxv3��ss3ss%ss"s s!��١��xvs#s$��xvxv��s&s(�s'v�xvs)s*3���s+3�xvs,s-xvxvs.s/xvs0xvxvs1s2xv��xvs4s8s5s6��xv��s7xv`s9xvxvs:�xvs<Ls=sDs>s?3���s@sBxvsAxv��sCxvxv�sEsJsFsHsGxv��xvsI��xv��sKsMsL���xvxvsNxv١sPsTsQLF�sRsS`���L�sUb�sVs]sWsZsX��sYxv3n��s[Ls\azxv��s^s_azLb�b�sas�sbsdsct�MnWsesicWsfsgshL�N`�t�sjs�sks|azslsmsrazsnsoazspazazsqkXazazssstazazsuazsvazswsxazsyazazszazs{gQazs}azazs~azsazs�s�s�azs�azs�s�azs�azazs�azs�w*azazs�azs�azs�azw*s�s�p�s�s�p�s�p�s�p�s�p�s�p�r�s�s�p�s�p�r�p�s�p�r�p�s�s�s�L�s�s�s�L�L�s�L�s��L�L��ds�s�s�s�s�s�s�s�d{azs�v�P}`�b�s�s�Mb�aNds�s�s�b�dc�s�s�b�d{Lm�s�t7s�s�c�s�Ms�s�s�`�s�s�s�s�s�s�s�s�s�Лc�c�ds�s�|Nl@s�s�s�s�|Ndb�s�s�cWe��HcWs�s�s�s�s�s�MkuaNNs�s�ЛL�xvaNs�s�s�s�L�d{L�b�s�s�L�c��Hds�s�s�s�s�s�s�s�L�aNs�dd{=s�s�b�d{i�b�s�s�s�s�c�dq�Ns�s�dd{s�c�g�h4s�s�s�s�ds�d]s�c�Bfs�s�d{daNg4s�s�s�s�d{s�Ng_d{c�s�s�L�d{akd{s�nWs�ts�s�tydd{s�s�t`�tttt`�`�פtt`�פפ`�tt
ttt	t
`�פ`�פפt`�פtפtפ`�פttazd{tt1tt#ttttttld{NMttn�azd{nWtt tt@n�L�cWt!t"L�Mb�c�t$t+t%t(t&t'c�Lb�c�t)t*Np�lcWt,t.t-d{cW@t/t0L�M�ldt2t3�Xb�dt4t5dt6ddi1t8tXt9cWdt:t;tJt<tCt=t@t>t?c�aNg4i�tAtBb�L�c�LtDtGtEtFd{��d{M�tHtIQ�b�dc�tKtRtLtOtMtNp�c�M�b�tPtQdMMc�tStUd{tTdc�tVtWNd{kxvtYt|tZtic�t[c�t\t]c�c�t^t_c�t`c�tac�tbc�c�tctdc�tec�c�tftgc�c�thc��Otjtxtkc�c�tlc�tmtnEtoc�c�tptqc�trc�c�tsc�tttuc�c�tvc�tw@c�tyc�c�tzt{c�c���t}ut~t�tt�gCt�gCt�t�gCt�gCt�gCt�t�t�gCt�gCgCt�b�gCt�t�t�t�gCt�v�gCgCt�wgCt�gCgCt�kXgCt�t�kXt�kXt�kXt�t�kXkXt�kXt�kXt�kXt�t�kXkXb�t�gQt�t�t�gQgQt�t�gQgQt�t�gQt�t�gQt�gQb�t�gQb�gQt�t�t�gQt�gQgQt�gQt�gQ�"t�gQt�gQt�gQgQt�gQt�gQt�gQt�t�gQ�"gQt�t�t�t�t�azazt�azt�azt�azt�azt�azt�azt�azt�t�azazt�azt�azt�azt�t�azt�t�t�azt�azt�azt�azazt�azb�azt�azt�t�azazb�t�t�t�t�t�t�t�azt�azt�azazt�azt�t�azt�azt�azazt�wazt�t�azt�azt�azt�t�azt�t�wazgCazazt�azt�azt�azt�t�azwazt�azt�t�azt�t�azt�azazt�azt�azt�azb�b�azazt�azt�t�ut�azazt�t�azazuuazazuwazuuwuwuwuwuwu	u
wwu�wu
azuazuazazuazwub�uu.uugCuugCugCgCugCugCugCugCugCubuu&gCugCu u!gCgCu"gCu#u$gCgCu%wgCgCu'gCu(gCu)gCu*u+gCgCu,gCu-gCb�u/u<gCu0u1gCu2gCgCu3u4u8gCu5gCu6gCu7gQgCu9gCu:gCu;gCgQgCu=u@gCu>gCu?gCb�uAgCgCuBuCgCuDgCuEgCgCuFuGgCgCt�uIu�uJu�uKu~uLduMunuNumuOcWuPu_uQuXuRuUuSuTMb�NduVuWM�@b�cWuYu\uZu[Mc�NL�u]u^c�M�d{du`ufuaucubNt�Nudueq~(�ML�ugujuhui��d{n�Mukuld{b�cWdg_xvuoupMcWuqb�b�urb�usutb�uub�uvb�uwb�uxb�uyb�b�uzu{b��'u|�'u}�'b�uMu�u�u�u�u�iMu�j�u�j�u�u��$u�u��$u��$�$u��$u��$u��$u�u��$u��$�$j��$u��$4�b�xvu�L�j�azu�u�p�u�u�u�Mu�u�u�u�u�u�u�u�u�u�u�c�t�L�Mu�u�c�Md{aku�u�u�u�lMdg4u�u�dc�aNdu�u�u�u�du�dp�u�u�u�c�F�u�u�F�F�u�u�F�u�F�u�F�F�u��HF�Nפu�u�u�u�d{b�Mt�du�n�c�u�u�u�u�u�u�u�u�m;dc�du�u�c�M�dMu�u�b�u�d{��u�b�d{liu�u�u�u�u�u�d{Ld{cWu�u�c�d{c�u�u�Lu�Lu�LLu�u�LLu�Lu�L��u�u�u�u�BfMdM�u�u�c�d{�Xפazu�u�u�u�u�u�b�{
u�b�c�Lg4c�u�g4akc�b�u�v.u�vu�H:H:u�H:u�H:u�u�H:H:u�u�H:u�H:H:u�H:u�u�H:u�H:u�H:u�H:u�H:H:u��*H:vv,vvvL�L�vvvL�vvL�vL�L�v	v
L�vL�L�vv
L�L�vvL�L�v�L�L�vL�vvL�vL�L�vL�vvL�L�vvL�L�vvL��L�vL�L�vL�v v!L�L�v"v#L�L�v$L�v%v&L�L�v'v(L�L�v)L�v*v+L��L�v-c�azc�v/v0p�Mv1nWv2v4v3�X��ddv5v6vTv7vGv8v;v9d{v:~�lx~�b�v<v=vAv>dv?v@����e��ovBvFXlvCdvD�&vE�&X\�&$�vHvIazdMvJvKb�vLb�vMb�vNb�b�vOvPb�b�vQb�vRvSb�b�b�vUv]vVvZvWvXb�c�b�vYiMMv[v\b�lL�dv^vav_v`L�aNNc�vbvdvcb�ը��db�vfw[vgwvhv�viv�vjb�vkvmL�vlcWL�vnv~L�vovpvwvqvtvrvsdlb�g_vuvvdm�dc�vxv{vyvzM�c�c�j�v|v}c�NL�cWvv�v�v�v�v�v�d}�d{dd{v�v�`�MNv�v�}�v�d{v�d{d{v�d{v�v�d{d{v�v�d{v�d{}�d{v�v�v�v�Ld�Xazv�v�`�b�dNv�v�v�v�v�v�v�b�v�v�v�v�v�v�d{Mdb�b�v�Mkuv�v�v�v�c�LMb�v�v�c�kuMdv�Mv�v�v�v�v�v�d{`�v�d{�U\v�v�akm�c�b�v�v�d{i�d{v�`�v�`��cWv�g_azv�v�v�Mv�Mv�MMv�v�MMv�v�MMv�v�Mv�Mv�v�v�v�v�v�Mv�M�ov�MM�ov�Mv�MM�ov�Mv�Mv�v�M�oM�ov�MMv�Mv�v�v�v�Mv�Mv�Mv�Mv�MMv�v�MM�%Mv�v�Mv�MMv�v�MMv�v�Mv�MMv�v�M�%Mv�v�c�p�v�wv�wMv�Mv�Mv�Mv�v�wv�Mv�wv�v�v�MMv�v�MM�Jv�wv�wMv�ŹMMwŹM�4MwMwwwwMwM�-w	w
dM�-Mwww
MdMwMMdwMM�;wwMb�m;+t�wwwwwMc�azMwwL�dL�MwwZww-w Nj�w!j�w"w#j�j�w$j�w%w&j�w'j�j�w(j�w)w*j�w+j�j�w,j��5w.wRw/w2w0w1t�b�g4dw3b�p�w4w5wDw6w=w7w:w8w9cWlL�liw;w<L�LakLw>wAw?w@tyi�q~lwBwCLMb�cWwEwLwFwIwGwHe�n�akd{wJwKt�lic�{
wMwPwNwOq~dc�M�wQc�c�M�wSMwTMMwUwVMwWMMwXwYMO�MMc�w\x�w]xw^w�w_wuw`cWwacWwbcWwccWwdcWwecWcWwfcWwgwhcWwicWwjcWcWwkwlwrwmwocWwncW?@wpwq?@cWcW?@wscWwtcW?@cWwvw�dwwwxw�wyw|wzw{c�Mc�azw}w~g_c�Lwd{w�}��w�w�w�w�nWc�b�L�w�w�`��^b�d{dw�w�w�w�w�w�w�w�w�Mb�c�g4w�w�dnWb�c�w�w�w�w�d{c�w�Nw�L�L�w�L�w�L�w�w�L�w�L�w�L�w�L�L�_�w�w�c�akLd{w�w�w�w�w�w�lb�M�c�w�d{dcWw�w�w�w�d{NMg_w�w�akg4Mw�`�iMw�w�w�w�w�w�w�{
w�w�w�w�w�w�db���Mw�w�akd{`�aNw�w�w�b�b�d{w�w�b�c�`�d{xvw�w�w�w�w�w�w�m�akdlw�w�c�w�`�lb�w�w�tkw�w�w�w�w�w�XMp��{tkw�w�tkXMՊ_�w�w�w�w��rX>��Dw�w�j)�Rø�lw�w�w�w�L�c�akn�w�dw�c�`�'w�w�w�M�w�w�w�w�}��}�w�d{}�d{w�d{w�w�w��d{d{n!b�M�w�w�dw�dw�e�ddw�w�xw�dw�xw��m�w�w�w�w�n��Km�w�x�#�Ci#b��xdm�xm�b�xx7xx#xx
x	dx
xdMxMMdxx!xxxxdxxddxdm�xxdxxxdsurb�xdxdo�ddxdxdxdx sudx"db�diMx$x%x0nWx&x'`�x(x,x)x*��g�Mx+y�dx-x/g�x.q�g�q��;x1x2p�xv@&x3lix4j�x5Lx6dLx8x�x9x�x:xwx;xYx<xJx=xDx>xAx?x@d{Ndb�xBxCMM�g4d{xExHxFxGMc�c�dxIc�cWLxKxRxLxOxMxNd{L�dc�xPxQb�d{d{c�xSxVxTxUN�R�NxWxXb�NLt�xZxhx[xax\x^x]c�b�c�x_x`aNNiMaNxbxexcxdc�akc�Nxfxgakd�,m�xixpxjxmxkxldc�dc�xnxoc�cW`�g4xqxtxrxsdb�dMxuxvdn�Md{lixxxyx}xzMMx{Mx|�;Mx~�;Mxx�MMx�x�MMx�x�MMx�Mx�Mx�Mx�M�;x�x�b�Mx�`�x�x�x�x�x�x�d{x�d{=dNx�x�W�d{Lc�x�x�x�x�l`�l{
x�x�aNc�lcWx�x�x�Nx�Nx�NNx�x�Nx�Nx�Nx�x�x�Nx�Nx�NNx�NP}x�Nx�NNx�Nx�x�NNx�P}Nx�Nx�Nx�x�Nx�x�Nx�Nx�NNx�Nx�x�NNx�x�NNOENx�Nx�x�Nx�Nx�Nx�Nx�NQ�Nx�yx�x�x�dx�x�x�x�q~aNx��0x�x�x�x�x�x�NcWM�d{x�x�L`�x�b��Nx�x�x�x�d{c�c�Nx�x�c�NMdx�x�Mq~x�x�b�x�x�x�b�x�b�x�b�b�x�b�x�b�x�b�x�x�b�x�b�x�b�b�b�x�b�x�b�b�x�x�x�x�`�Mx�x��x�dMx�MM|x�x�tyx�x�x�NMgCazx�Mx�MazMcWc�yyzMyyy6yyyyyy	yyxvg4d{My
yb�NM�kuy
yyyc�azc�yb�yyb�yb�b�yb�yb�yb�yb�yb�yb�[�yykuc�t�d{yy/yy,y y!L�ku|y"y#c�c�y$c�y%c�y&c�y'y(c�y)c�c�y*y+c��ac�y-y.akc�c�dy0y3y1y2�Rb�d{b�y4y5M�N�My7yZy8yJy9y@y:y=y;y<i�aNazb�y>y?b�l`�yAyEyByDyCcWxvlcWlyFyHd]yGM�lyIMlLyKyRyLyOyMyNM�t�d]g4yPyQ�-g4�4�-ySyWyTyVyUL�azMb�M�yXyYLazLLy[yjy\ycy]y`y^y_`�ld{g4yaybd{g_cW|�ydygyeyfLK�t�d{yhyiNb�Mb�ykyrylyoymynakd{d{c�ypyqaNd{db�ysywytyud{߫yvd{lcWyxyyd{azcWnWy{y�y|y�y}y�y~t�yy�y�y�y�y�y�y�N�dL�y�y�cWL�L�dy�y�dy��,db�y�b�g4y�y�y�y�y�y�g4c�aN`�y�y�c�`�M`�y�y�y�y�c�aNg4L�y�aNNcWy�b�y�y�y�azy�azy�azy�azy�azazy�azb�y�azazy�y�y�y�y�y�y�y�y�y�y�y�kXazv�y�azkXazy�y�y�y�b�azazw�azy�b�gCy�y�y�y�y�ubgCazy�azazb�y�y�y�y�azwazgCazy�wUb�y�y�y�y�azy�y�y�wkXazuby�y�y�y�v�w*b�uby�azgCazy�y�azy�y�y�azgQgCazy�azazkXy�kXy�azy�azy�y�azkXkXazy�y�y�cWy�y�y�y�y�y�y�y�aNn�iMg4y�y�b�BaaNdy�y�y�y��,L�diMy�y�xvl�dg4y�y�y�y�y�y�iMdNM�y�y�dM�rNy�y�y�y�d{aNM�L�y�y�L�M�n�lLNy�z>y�zy�z
y�zzzzzNdb�t�zzc�b�d{dzz
zz	Nb�diMzzd{di�nWzzzzzzb�akb�d{zzMdiMlzzzzzb�LM`�MzzMd{akc�zz-zz&z z$z!z#z"Mb�azdMz%b�d{iMz'z*z(z)Bfb�`�Mz+z,b�L�dakz.z7z/z4z0z3z1z2n�q~d�*hMz5z6d{MaNg4z8z;z9z:NdnWc�z<z=Np�ld{z?zhz@zPzAzHzBzEzCzDL�b�cWL�zFzGb�d{liaNzIzMzJzLzKb�Oq[�akNzNzONhMb�zQzazRz^zSzTlc�zUb�MzVzWMzXMzYMzZMz[MMz\z]MMq�z_z`d{c�L�b�zbzezczdlid{c�b�zfzgc�hcWb�zizxzjzqzkznzlzmb�d{dNzozpd{xvxvNzrzuzsztb�MM�d{zvzwdMb�q~zyz�zzz~z{z|db�q~z}NMzb�c�z��c�z�z�z�z�cWb�L�b�z�g4c�b�z��z�{\z�z�z�z�z�Mz�z�g4z�dz�z�z�dz�g4dz�z�`�z�aNL�z�z�c�{
z�z�aNp�dz�dLz�z�z�Nz�Nz�Nz�Nz�NNz�NU�Nz�z�Nz�NNz�z�NNz�NQ�z�z�M�p�M�q~z�{%z�{z�dz�z�z�z�z�dz�z�suz�o�q�z�z�Mz�Mz�Mxvz�MMz�i�Mz�L�z�z�z�z�z�z�d{q~z�djdz�z�M�ku@L�z�z�z�z�dNNlz�z�c�d{`�`�z�z�ML�z�z�z�z�z�z�z�z�z�z�dt�dL�z�z�d{g4Mc�z�z�z�z�n�z�z�g_z�g_g_z�z�g_g_z�z�g_z�g_g_M�`�b�z�z�t�`�c�dz�z�z�z�z�z�L�b�b�Mz�z�c�b�c�b�z�z�z�z�b�L�cWM�z�z�M�q�c�Nz�{z�z�z�z�Mb�L�Mz�{q~z��oL�b�e�{{{{d]dd{|�{{b�d{tyL�{	d{
{${{L�d�{
{azaz{{az{azaz{{az{{"{az{az{{{{{{azgQv�w{{ww*{�ub{az{ {!v�gCkXb�az{#gQazg4cW{&{'nWc�{(g_{){A{*{+`�b�{,{4{-M{.{1{/M{0MM*�{2MM{3O�M{5{=g4{6{7{:{8{9g&ն��={;{<kXgCv�kXc�{>{?c�{@b�l4�{B{Id{C{DM{EMM{F{G{HlMM��M{J{K{T{L{O{M{NMb�n�gn{P{Rd{{Qv&h�{Sd{c�b�{U{Y{V{Xb�{Wm�b�b�`�{Z{[M�e��b�{]}{^|5{_{�{`{�{a{~{b{w{c{g{db�{eb�{fb�b�x�b�{h{i{ub�{j{k{l�,b�b�{mb�{nb�{ob�{p{qb�{rb�b�{s{tb��,b�b�{vp�b�b�{xb�{y{z{|b�{{b�p�p�{}p���{b�b�{�{�{�b�{�{�b���b�{�{�{�{�b�{�~�b�{�b�~���b�{�{�b�b���{�{�b�{�b�{�{�b�{�b�b�{�b�{����{�b�{�{�{�{�{�b�b�{�{�b��y{�b�b�{�b�{�b�b�b�{�{�b�{�b�b�y{�{�{�{�{�{�{�{�{�{�{�{�{�{�q~b�ld{�{�{�d�~b�c�xv{�{�{�{�cWaNb�M{�{�{�dc�{�{�c�c�{�c�{�{�c�{�c�{�c�c�{�@c�j�b�{�{�{�{�{�{�{�c�c�`�M�M{�{�`�L�azku{�{�{�{�dg4M�M{�{�Nb�c�M�`�{�{�{�gC{�gC{�{�gCgCwU{�gCazgCb�n�{�|
{�{�{�{�{�{�{�{�c�b�c�cW{�{�p�b�{�b�`�{�`��{�{�{�{�~b�{�iM�b�{�{�{�xv{�{�`�dak�Zdd{{�{�{�{�{�{�b�`�Nb�{�{�b�d{b�M{�{�{�{�azb�b�d{{�|	b�{�|=�|=�|=�=�||=�|=�|=�|=�=�|=�|+b�|
||gQ`�`�l||'|||||d{b�M�d{|d{m�||%||$||!b�||b�b�|b�|b�||b�b�|b�|b�| b�b�|"|#��`�b�MLd{|&d{aN��|(|-|)|+b�|*t�b�d{|,b�li|.|0|/b�i�d{|1|2d{b�|3d{b�|4Mb�|6|�|7M|8|�|9|�|:|ZQ�|;|<Q�|=|EQ�|>Q�|?|@Q�|AQ�Q�|BQ�|C|DQ�Q�N;|F|Q|GQ�Q�|H|I|N|J|L|KQ�Q�N;Q�|MQ�N;Q�|O|PQ�Q�N;Q�|R|SQ�Q�|TQ�|UQ�|VQ�|W|XQ�|YQ�Q�P�|[|~Q�|\|]Q�|^|jQ�|_|`|e|aQ�Q�|bN|c|dQ�NQ�|fQ�Q�|gQ�|hQ�|iNQ�Q�|k|l|vQ�|m|n|qQ�|o|pNQ�N|r|t|sNNQ�Q�|uQ�NQ�|w|x|{|yQ�Q�|zNQ�||Q�Q�|}NQ�||�|�Q�Q�|�Q�U�Q�|�Q�|�Q�|�|�Q�Q�|�|�Q�Q�|�Q�|�|�Q�Q�|�]RQ�|�|�|�|�|�|�|�Q�Q�|�|�Q�Q�|�Q�|�|�Q�Q�|�|�|�|�Q�Q�|�N;Q�|�Q�Q�|�N;Q�|�Q�Q�|�|�Q�Q�|�|�Q�Q�|�|�Q�|�Q�|�Q�|�Q�Q�N;|�|�Q�|�|�Q�N;Q�Q�|�|�Q�Q�U�|�|�|�Q�Q�|�Q�|�Q�|�|�Q�|�Q�Q�|�Q�P}|�Q�Q�|�|�Q�Q�|�|�Q�Q�|�Q�|�Q�|�Q�|�|�Q�|�Q�Q�Oq|�|�|�Q�|�|�Q�|�|�Q�|�Q�|�Q�|�Q�|�Q�|�|�|�Q�|�Q�yOQ�Q�|�|�Q�|�Q�|�Q�Q�yO|�Q�|�Q�|�Q�|�Q�Q�|�|�Q�Q�|�Q�|�|�|�|�Q�|�Q�Q�N|�Q�|�Q�Q�N|�Q�|�Q�|�Q�Q�|�|�|�Q�|�Q�|�|�|�|�|�N�Q�Q�|�|�N�N�Q�|�Q�|�Q�N�Q�Q�|�Q�|�Q�|�Q�|�|�|�|�N�N�Q�Q�|�N�Q�}}
az}c�}}}}}d{nWQ�}dd{}}L�}	}
d{cW}cWiML�ak}aN}aN}aNaN}aN}aN}aN}aN}}aNaN}aN}}aNaN}}aN}aN�CaN}$}}`} M}!}$}"}#MM�cWc�}%}1}&}0}'}*}(})=OrXdL�}+},daz}-}/H:}.�"����`���}2}A}3}9}4}7}5}6L�b�Md}8d{b�`�}:}=};}<db�b�L�}>}@b�}?l�Zdl}B}Q}C}J}D}G}E}FNazd{cW}H}Iakg4��M�}K}N}L}Mc�liLd}O}Pm��ILl}R}Y}S}V}T}Uxvb�L��}W}Xb�LNL}Z}]}[}\`�L�c�q~}^}_`�n�c�d}a}e}bb�}c}dd]Mp��O}f~�}g~	}h}�}i}r}j}q}k}o|}l|}m}n|||L}p|��|��|}s}�}t}�}u|}v}~}w��}x}{|}y|}zBD����}|}}��������}}�|}�|}�}���|BD��}�}���|��|}�|}�}�||�|ۍ}�}�}�}�}�|}�}�}���}�}�}�}�}���}�����|��}���|}�||}�|}�|}�|����|}�|}�}�}�}�}�}�}�|}�||}�}�|}�||}�|��}�|}�||}�|}�}�||��}�}�|}�}�|}�|�|�}�}�|�|�|}�}�}�|�}�||�}�}�|�|�|}�|}�|}�||�||}�}�}�}�}�}�||}�}�||}�|}�||}�|||}�||}�||}�}�}�||}�|��|}�}�}�}�}�}�}�}�}�|}�|}�|���}�||}�}�}�|=|�|�a}�}�}�|}�|}�a�|�[�}�}�}�}�}�a�|}�|y|a|=|}�|}�|}�|y|}�|}�||}�}�}�|}�||�}�||�|}�|}�~}�}�}�||}�|}�}�||}�||}�||~~|~|~||�|=~||~~~|�|||~
~E~~*~~~
||~~||~|~||~~~||~~||~|~|~��|~~"|~|~|~|~|~ ~!|||~#|~$|~%|~&~)|~'|~(|ۜ||~+|~,~.|~-|��|~/~0|~1~B~2~:~3~8~4|~5|~6|~7||�|j~9|||.~;~=|~<||~>||~?~@|~A|a|~C~D|||�6~F~i~G~L~H~J|~I|L||~K|��~M|~N~b~O|~P~^~Q~V~R|�~S~T||�~U|�|�||�~W~X~Y|�|~Z~[|�|~\||~]|L||~_~`|~a��|��~c|~d|~e|~f|~g|~h||�|~j~y~k~s|~l|~m|~n|~o��~p~q~r��|��||~t~u|~v��~w||~x��|~z~�~{~�~|||~}~~|~|~�|~�||~�~�|��|~�|~�~�~�||=~�|~�||=~�||=|~�||L|~�~�~�~�~�~�~�||~�|~�|�~�~�|~�|~�|~�|~�|�~�~�|�|~�||�|~�~�~�||~�|~�~�|~�~�~�~��6~��6~�~�|�6|~�~��6|�6|~�|�6|~�~�~�|۫|~�~�~�||~�~�||~�~�|~�|||�||=~�~�|~�|~�~�~�~�~���~�~�~�~���~���~���~�|��|~�|��|��~�|~�~�|~�||���m|~�~�~�~�~�|~�|~���~���~���~���|=a|~�|~�|~�~�||~�~�|~�||||~�|~���|~�"~�~�|~�|~�~�||~�~�|~�|~�|~�|��~���|~�|~�~�|~�~�~�~�~�|~�|~���~�|����~�~�||��~�|~�|~���~�|||��|||
��||	||��|BD
||||||||||||.|!|||||�| |||||#||��%.&L�L�'(L�)L�L�*+L�L�,L�-L�>C/`�0�1�2��3;4P�5P�6P�P�7P�8P�9P�:P�Oc<�=�>g?T@JAEBCNP�P�DP�NFHGP�P�NIP�NP�KOLNP�MNP�NP�PSQRNP�NP�P�NU_VZWNNXNYNP�[]\P�NP�N^P�N`eacNbNP�dNNP�fNNP�hoikNjP�NNlmNNnNP�p|qurNNsNtNP�vyNwxP�P�NNzN{P�NN}~P�NP�N������N��N��P�N�NP��P�N��P�NN�NP��N��P���N�P��NP�N���P��P�N�N�P�NP����N���P�NP�NP�N�P���NP���N�N��P�P�NNP������N�����N�P�P�NN�N�N�NP����N�NP��P�N�N��P�NP��P�N���N�N�N��U�NU���NU�NP������P�NP�N�NP�N�NNP������{
c�li���c�Ng4��}��!�b�d��������a��-M�����nW�������cWNc�b���`�lcW`�����d{�n�akd{N��b�lcW`�������Mc�xvc����l��L�EnWN+aNc������p���rXQ�N+9q�b��	�
e�cW`�ak���
������d�jd{c�l��d{ddd{����b�g_`�d{��p�tyM�M��$��!�� Nd~L��"�#dc�Mg_�%�*�&�'`�d{�(g4�)hiMb��+�,dc�c�ak�.d�/�1�0dcWM�2�A�3d�4ۺ�5�@�6���7��8�9��:��;���<��=�>��?��ۺۺ��B�H�C�R�D�K�E�H�F�Gd{`�b�g4�I�Jc�dc�aN�L�O�M�NdMp�b��P�Qb�N+lc��S�Z�T�W�U�Vkub�`�f�X�Yld{lL��[�^�\�]dxval�_�`M�c�b�iM�b���c`��dq~�eq~�f���gq~�h���iq~�jq~q~�k�l�s�m<��n<��o<�<��p<��q<��r<�q~�t���u�z�v<�<��w<��x�y<�q~<��{<��|<�<��}�~�<�q~<�q~<�����<�<�����<�<���<�q~��q~q~��q~<���q~q~����q~q~��q~<���������������g4ak����akak��ak��ak��b�������������������d{iMlib�����cWb�t���az��az��az��az����azaz����azazb���������g_iMq~iM����db�Nb�������������b�c�dd{����dcWazd{������Mc�n�����iMd{dak����d{g4��`���`�`�������`�����`���`���`�`���`���`�uG��`�`���`���`�����`�֥`�`�aN������������Nm���m�������m�m���m�����m�m�����m���m�m�dm���m�����m���m���m�m���m�����m�m�����m���m�m���m���m���������=���'�������������d{g4b�����c�o�dM���������c�g4c��,����g_q~�lM^C����
����g_ddL���	L�cWcWM����
c�L�L�cW��g4g_L�ty������Mxvd�X�lb�g_����b�M�g4L��cWLy(��+� �!�+�"�+�#�+�$�+�%�+�&�+��+�(�4�)�+�*d{cWd{�,�0�-ak�.�/iMc�h4���1�2W�p�`��3`�M�5�:�6�9�7g4b��8|m�dq��;�<�^M�_M�>�{�?�]�@�N�A�G�B�Dd�Cb�m��E�Fd{dtyp��H�K�I�JcWn�akd�L�Myc�{�y�O�V�P�S�Q�Rm�g_M�N�T�Ud{dM�g4�W�Z�X�Yd�8b�aN�[�\N��N�^�l�_�e�`�c�a�baNNg_cW�dLc�c��f�i�g�h�n�b�`��j�klNd{M�m�t�n�q�o�pcWldn��r�scWn�ld�u�x�v�wg_�g_N�y�zln�b�iM�|���}���~�dp�b�xv����b�d{dd{��������cWd`�akM��L��L��L����LL��L����L��L��L��L��L��LL����L��LL��La"p�����b���������g_������d������d���d��d�d��������d���dd��Bf���d�����d�d����������������l�c�Nc�����b�NM�N��������`�lakNl��d{��dsu��������L�b�w�d{d{����li����`���%,��������b�d��������dc�c�o�d{��c�d{p���������������d��L�c�����c�@b�iM��������MdnW`�����c�Mdb�����������suiMM����Nc�b�iM��������tyMb�L���M�tycW������TN����d�������U�M����������������c�dc�ML��{
ym������d{b�cWM��ldc�d{��
��Nd��	dakc�f����
lxd{c�f��aNMc�ak��B��$������c�aNM�c���Lc�cWb��� ��b��L���Md{�!�#�"Mb��Ml�%�3�&�,�'�*�(�)Nd{dcWcW�+g4d�-�0�.�/g4��`�N�1�2g_dcWg4�4�;�5�8�6�7c�tytyd{�9�:L�`�j�c��<�?�=�>g4j�c�j��@�At�nWdi��C�N�D�G�E�FaNt�d{d�H�Il��J�Kb�d{�L�MdL�L�M�O�Qd�Pc�M�R�SMl~c��U���V�q�W�n�X�m�Y�h�Z�a�[�^�\�]dMb�M��_�`d{dlig4�b�e�c�dMg4L�`��f�gb�c�M�c��ic��j�kc�c��lc�Ԧp�d�o�pm�g_m;d�r��d�s�t���u�}�v�z�w�yd�xd`�c�iM�{�|Lazb�j��~�����lxl��dL�z�����Li�g4c���������ku��M��e�����c�n�`���ui����������ld`�d{��Nd{dty����������������������daNm�j�����NtyLn���������c�MnWc�����c�b�b�j�������������n�xvaNb�����Lc�b�d{��������n�c�~�C����lkuc�M����������������c�g4c�c���McWi#��������b�j�tyc���b�NcW������������M�i#i#d����b�dNgC��������Lb�n�l����Md{d�,��az��������n��cW��������������xv߫d]�F����t�b�M��i�`���������@NNb�����M�b�b�c�����azd����������M`�������`�NaNq~`�����`�����c�d{b�N������������c�m�M|�����L�dNty������aklcWb���b�lm�b���g��<�aN��*�	�
L�g4�M���
�����m�lazd��n�b�Mb�����c�g4dM��lNnWl��#�� ��i�b�b�d�!�"Ng4p�N�$�'�%�&c�d`�cW�(�)cWd{b�q~�+�,dd{M�-�.�6�/�3�0�2�1c��d{lL�4�5b�d{b�N�7�9v��8b�c��:�;b�L�dc��=t��>�d�?�c�@�Ed�A�BMM�C�DMM�M�F�T�G�N�H�K�I�Jg4`�`�d�L�Md{c�c�q~�O�R�P�QL�cWb�d{cW�ScWd{�U�\�V�Y�W�Xdb�db��Z�[cWlc�N�]�`�^�_b�dn�l�a�bakM�d{Nh{
�e�fxvl�n�`��h���id�j�kM�{
d�laz�maz�n�o�z�pazaz�qaz�raz�saz�t�uaz�vazaz�waz�x�yazgCaz�{az�|az�}azaz�~az���azaz��az��az��az��azgC��p�az����������������������~L���lx"l����ymc�azc���������cWL�Ld{����lc�c�d������������L�d��ld{iM����aN�HnWc���������c�MML����c�cWb�g4nW`����,�����������2���6�����������e���[�������������������������������RE�t������b�t��RsG��sG��sGsG�����sG@sG����sGsG@������������t�������@�H�H@��sGazsGsG��sG��������������sG�sG����������Ed��d����dd��d��d������d�Zdb�E����E@E��lx���������1EEsG���J+��Z������sG��������sG��sG�������@�1�������'�'����az�az�������������R�R���������
�	sG�
sG�_�w��'sG�sG�sG��@��W��?���k�'�������(��!az�az��azaz�az�az� azw��"azaz�#az�$az�%az�&az�'azj�)�<�*�1�+�,azt��-azaz�.az�/az�0azw�2�;�3azaz�4az�5az�6az�7�8az�9azaz�:az�Bw�kX�=��>�m@�@�O�A�I�B�F�C`��D�EJ@t�`��G�1�H�1�'���1�J�K�M�1�L�iMsG�N�R�PsGk�Q�R�U�S�T�'sG�1sG�VsGsG�R�X�d�Y�a�Z�\�[.�sG.��]�^.�sG�_sG�`sG�1�'sG�b�c�'sG+��sG�f���gsG�h���i�wsG�j�kazsG�lsG�msG�n�oaz�paz�qaz�raz�sazaz�t�uaz�vazazb��xsG�y�}�zsGaz�{az�|azsG�~sG�sG��sG�sGsG��sG��sG��sG��sG��sG��sG���sG����������sG��sG��sG��sG��sG+sGsG��������sGsG��sG��sG�sG����sG��sG@sG����sG��sG��@�������@sG�������������@��@��sG@��@���+sG����sG��sG��sG������+��sG�sG������������sG��@
������@sGsG����sG�sGsG��sG��sG��sG���d������sGsG��sG��sG����sG��sG��sG��sG���������������������sG��sG��sG��sG+sGsG��������sGsG��sG@@����sG@sG����sG����������sG�9sG�9��sGsG����sGsG��sG��sG����sG��sGsG����sG+�sG������sG������sGsG���sG@sG����sG��sG��sG[��sG��+�sG�����sG��sG����[sG+�sG@sG�sG��
sG�	sG@�sGksG�
�sG���sG�sG�sGJ���sGsG���[sGsG�sG��@sG�sG+��?��)��$sG� sG�!sG�"sG�#sG@sG�%sG�&sG�'sG�(KsG�*�3�+�/sG�,�-sGsG�.sG@j�0�1sG��2JsG�4�;�5�8sG�6sG�7sG��9sG�:sG�sGsG�<sG�=�>sG sG�@�R�A�I�B�F�CsGsG�DsG�EsGk�GsGsG�HsG@�J�NsG�KsG�LsG�MsG�sG�O��P�Q�sG�S�W�TsGsG�UsG�VsGJ�X�_�Y�\sG�ZsG�[sG��]sGsG�^sGsG�`�a�bsG@sG�csG
�e���f�p�g�n�h���iE�jsG��k�l*��m���o�	)��q���r�x�ssG�tsG�usG�vsG�wsG�sGsG�y�z���{�sG�|�}�~sGk@���������*
@sG������������sG��sG�sG��������sG�[J��sGsG�R����������sG����sG����sGsG
��sG�sG����������sG��sGsG�������sG sG��JsG�sG������sG��
sGsG��sG+��������J����������sG@�@����sG�;������sG��sGlx�sG��sG��sG_sG����������sG�����sG��sG������J�sG�sG����sG������t���EsG����sG�������RsG����
�sG
������������O�������������ebe�������������e��e�p�����ՙeՙe����������9dNrI��e*9����b���eՙrX��������e��e��ebe��e����e����rIe�������������ebrI��e��lxՙlxe����������e����e��	��lxee~��
�erXerX�
�e�����elxe�e��Oe;e��/���e�e��9�~��brI��'��!� ee��"�#eՙe�$�%�&erI{r���(�,e�)�*e���+ՙlx�-�.ՙ�we��0�<�1�4e�2e�3eb�5�8�6�7beՙe�9�:ՙe�;eՙrI�=�G�>�Be�?�@e�Alxՙlxe�C��D�E�FrIՙe���He�Ie�J�Le�K �O�M�N�� �;O�P���Q�`�R�W�Se�Te�U�V��e�w��e�X�Y�\e�Z�[e�*��]�_�^eՙ��e�a�q�b�fe�ce�de�e�*ՙ�g�l�h�ieՙe�jO�k��(��m�ne*�e�o��p�{r�r���s�}�t�we�u�v*��we�x�z�ylxՙlxe�{e�|O���~��e�lx��lxՙ��e����d?�wd?���e��e��������e�e����ee{r����������e��ee����ee�����������.���e(�{re����b����e��������erIe��eed?������������e����e�wb��e��lxՙlx����e���p�]��lx$���ՙlx�����������)����d?#ed?�we����~����������������O�w�w����rI�e��e��dNO�������sG���R��������@@����@��@@
���sG������sG������sG����sG������sG���+@sGk��sG��sG���R��sG��sGsG�����������sG��sG��sG��sG����sG��sGsG����sG��sG������sGsG����sGsG����sGsG��sG���sG������������azaz��az������azv�azv���az�az�az�azv�az�R���1��$��!�sG�	��
sG��sG�sG�
sG �@��sG@��sG������������������������@�� ��@�sG�"sG�#k;�%�,�&�+sG�'�(�*��)��
sG.�@�-�.sGZ�/�0+JsGsG�2sG�3sG�4sG�5�sG�7�6�8�h�9�N�:sG�;sG�<�B�=�@�>.��?@�'sG�_�AsG��C�D�+�E�H�F�G�$j��I�M�JsG�K�L��+sG
sG�OsG�P�X�QsGsG�RsG�S�TsG�UsG�VsGsG�WsG�sG�Y�ZsGsG�[�\sG�]sGsG�^sG�_�`sGsG�asG�bsG�csG�d�esG�fsGsG�g�sG�i���j���k�s�l�o��m��nsGk�p��q�r+J�sG�t���u�vsG
�wsG�x���y��z�}�{�|@sG@�~@�@��������sG��/+����
@�������������sG@������sG
������������@@���zsG��sG�������@�sG����sG��
�[�����������������������@JsG����J@���������@��@��J@���������sG��������sG���������@+@������
@����������������@J[+�����[
sG���������+k�������@�������������KkJsG�����+�;����������@���@@sG���������������sG��sG+sG��J������J����JJ�:�J������J�YJ�h�������
�sG��sG;������������+sG
�+��sG@����
��������sGsG��
jsG����+sG��sG���(������Rk�����	�@�+�
���sG�
���+sG@��sG�@���JsG
����+�@_@
*��$��!��
sG� @�lxsG�"sG�#sG�*�%�&�'sG{�
��)�5sG�*�+��,�R�-�0�.
I�/
I�R
I�1�2�R
I�3�4�R�����R+sG�7���8���9�y�:��;���<�y�=�Z�>�L�?�E�@�C�A�Blx����ee�D��~��F�I�G�HrX�~����J�Kd?����*�M�T�N�Q�O�PdN�vՙb�R�Sՙ~����U�W�Ve�e�X�Y1�$������[�j�\�c�]�`�^�_��w܆���a�bܖܦ�����d�g�e�f�(��Rܵ�h�i��|�����k�r�l�o�m�n*�������p�q��9�*��s�v�t�u�!;���0�w�x�b�@��P�z���{���|���}���~��`�p�)#e�����p݀�S����������ݐ�ݟ�����ݯݿ�D���������������>"Z������������
�H����������-�=�7�����M�5�\�l�����������������|ތޛ��������HO�����������&rIު����޺�w����������������	���� ������m{c����������������&�����|�5��Q��������������������������E�T,��d�����s߃)ߓ��������`�O�ߢ�����R~߱�N���������������������������,����.�������������
�������+�]�����������������������;�����K�[�j�y�����������|:�����c6lx��������������������1�������*��#���������39�C,����)���!b�R��lx���	������������b�q�v������ؒ ����e�l�W��e!�.!���
lx�lx��
���)lx�@��V��0��!������+{�_�� 
;������R	�lx�� 
J[�"�)�#�&�$�%���;�'�(
@�@�*�-�+�,@�@�.�/�@�@�1�?�2�8�3�6�4�5�@k@@�7�@�9�<�:�;�@�@�=�>�@�@�@�G�A�D�B�C�@
@�E�F
@
@�H�S�I�R�J@�KKK�LK�M�NKK�OK�PK�Q��KK@�T�UK@�@�W�p�X�c�Y�^�Z�]�[�\�@Z@@�_�b�`�aj@;@@�d�j�e�g@�f[@�h�i�@�@�k�n�l�m*@�@�o@z@�q@�r@�s�v�t�u+@��@�w�xsG@�@�z	Y�{���|sG�}���~�������sG���RsG��J������
@��@��@��@�@ksG���J������������������@������@@���@��@����@�������@����@��@�@��@���������@����@@���@��@@���@��������������@��@@���@@���@�����������@���@��@��@��@������@@�����@�@���������@����@��@����@��@��@��@��@@����@@����@@��@��@��@����@�@@��@��@����@�����@�@���)������������@����@��@�@����@����@@���������@��@@��@�������������@��@�@z�@������@z�z�@����@��z�@����@��@���@�d@���@����@��@���@@�@�	�
@@�@�@�
�@�@@��@�@����@���@�@������@@�����Y�@� @@�!�"@�#@@�$@�%�&@@�'@�(�@�*�D�+�?�,�:�-@�.�8@�/�0@�1@�2@�3@�4@@�5@�6@�7@��9@@��@�;�<@�=�>@��@�@@�A@�B@@�C@���E@�F@�G@�H@�I@�@�K���L���M�z�N�]�O�S�P@�Q@@�R@��T�W@�U�V@�@�X�Z@�Y�@�[�\�@@��^�f�_�c�`@�a�b���@��d@@�e@��g�u�h�s�i�r�j��k@@�l�m@@�n�o@@�p�q@
n@�@�t@@���v�x@�w�@@�y�@�{@�|@�}@@�~@�@���@@����@@��@����@��Y������������������@������@@�@���@������@��@�@��@@��@���@��@��@@���@������@��@@��@��@��������@@��@�@����@��@�@����������@@��@���@��@@����@����@�@�@����@��@@����@@��������u�������>������������������������lx����ee����~���������rX�~�������d?����*������������dN�vՙb����ՙ~���������e�e����1�$�����������������������w܆������ܖܦ�������������(��Rܵ������|����������������*������������9�*����������!;���0�����b�@��P������	�����`�p�)#e���p݀�S���
�
��ݐ�ݟ���ݯݿ�D���������>"Z����������
�H������-�=�7���M�5�\�l� �/�!�(�"�%�#�$�|ތޛ���&�'��HO��)�,�*�+��&rIު�-�.޺�w����0�7�1�4�2�3�	���� ��5�6�m{c�����8�;�9�:����&�<�=�|�5��Q��?�~�@�_�A�P�B�I�C�F�D�E�E�T,��d�G�H�s߃)ߓ�J�M�K�L`�O�ߢ��N�OR~߱�N��Q�X�R�U�S�T���������V�W��,����.�Y�\�Z�[�����
�]�^���+�]�`�o�a�h�b�e�c�d�������;�f�g�K�[�j�y�i�l�j�k���|:�m�n�c6lx���p�w�q�t�r�s������1��u�v��*��#�x�{�y�z�39�C,�|�})���!b�R�lx�����������������b�q�v��������ؒ ��������e�l�W����e!�.!����lx��lx�������)lx���������������������������lx����ee����~���������rX�~�������d?����*������������dN�vՙb����ՙ~���������e�e����1�$�����������������������w܆������ܖܦ�������������(��Rܵ������|����������������*������������9�*����������!;���0�����b�@��P����������������������p�)#e�����p݀�S����������ݐ�ݟ�����ݯݿ�D���������������>"Z������������
�H����������-�=�7�����M�5�\�l����������������|ތޛ��������HO����������&rIު��޺�w����������	��{r ��	�
�m{c�������
�����&���|�5��Q���R��3��$�������E�T,�����s߃)ߓ��!�� `�O�ߢ��"�#R~߱�N��%�,�&�)�'�(���������*�+��,����.�-�0�.�/�����
�1�2���+�]�4�C�5�<�6�9�7�8�������;�:�;�K�[�j�y�=�@�>�?���|:�A�B�c6lx���D�K�E�H�F�G������1��I�J��*��#�L�O�M�N�39�C,�P�Q)���!b�R�S�m�T�c�U�\�V�Y�W�X�b�q�v���Z�[��ؒ �]�`�^�_e�l�W�a�be!�.!���d�i�e�h�f�g���)e��dN�j�kdN�����l��e�n�q�o�e�pe��re�se�te�e�v�W�w���x���y���z���{���|��}�~1�����ee����~���������rX�~�������d?����*������������dN�vՙb����ՙ~���������e�e����1�$�����������������������w܆������ܖܦ�������������(��Rܵ������|����������������*������������9�*����������!;���0�����b�@��P����������������������p�)#e�����p݀�S����������ݐ�ݟ�����ݯݿ�D���������������>"Z������������
�H����������-�=�7�����M�5�\�l�����������������|ތޛ��������HO�����������&rIު����޺�w����������������	��{r ������m{c����������������&�����|�5��Q����4�������������������E�T,�������s߃)ߓ����`�O�ߢ���R~߱�N������	�
����������
��,����.���������
�����+�]��%�������������;���K�[�j�y��"� �!���|:�#�$�c6lx���&�-�'�*�(�)������1��+�,��*��#�.�1�/�0�39�C,�2�3)���!b�R�5�O�6�E�7�>�8�;�9�:�b�q�v���<�=��ؒ �?�B�@�Ae�l�W�C�De!�.!���F�K�G�J�H�I���)e��dN�L�MdN�����N��e�P�S�Q�e�Re��Te�Ue�Ve�e�X���Y�n�Z�h�[�d�\�_1��]�^1���1��`�b�a1�e1�1��ce1��e1��f1��g1�1�e1��i1��j�k�m�l1�e1�1�e�o���p�we�q�r�u�s�t1�e1�e�ve1�e�x�|e�y�z�{e1�e1��}�e�~e1���ee1�1�������1���1���e1�1���1���1�e����������������1�������e1�1�e����1���e1���1�1�e1���1���1���e1�������1�����e1�1���e1�������e��ee1���1�����1�ee1�����1�����1�1�����1�1�e��������1���1���1�e1���1�e1�����1�����e1�e1����.�����@����������@������������
@�@���@sG�������@�@��������@�������@�@���������@�@�����@�@������������
@
@����
@K@��������K@�@��@@��������������������@�@��sG�@����@���@����;@@�������������@[@�����@�@�������_@��@*@��
���@sG@���	�
�@z@@��_@������+@�@�@��@�@�@sG@��$�����sG@
J��sGsG�� sG�!@�"�#1�sGlx�%�&�,�'�+@�(@�)@�*@���-sGsG��!�/�!�0�1@@��3���4��5��6��7��8���9��:�;��<��=���>�a�?�P�@�H�A��B��C��D��E��F��G����I��J��K��L��M��N��O����Q�Y�R��S��T��U��V��W��X����Z��[��\��]��^��_��`����b�s�c�k�d��e��f��g��h��i��j����l��m��n��o��p��q��r����t�|�u��v��w��x��y��z��{����}��~�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������@����@���J����z+z�������������������������������������������������������������������������������������������������� ��������������������	�
���������
��������������@�������������D��-����(�����R�sG��"�� �R
�!sG�RsG�R�#�$�%�R�+�&�'+�+�)@�*sG�+@+�,+�R�.�1�/�0�!@�!@�2�7�3�5�4@@�!�!�6�!@�8�?�9@@�:@�;@�<�=@�>@��@@�@�A@@�B�C@	�@�E���F���G���H�p�I�]�J�V�K�R�L�O�M�N��ee1��P�Qe~�~�1�e�S�T�Ud?����*�W�Ze�Xe�Y~�eՙ�[ՙ�\~�ՙ�^�i�_�b�`dN�adNdN~��c�f�d�e�(��Rܵ�g�h��|�����j�n�k���l�mՙ1�1����o�w���w�q�w�r�s��ՙe�t�ue�vee1��x���y�~�z�|��{�H�~��}e~����~�����9��9��9�������������	���� ������m{c����������������&�����|�5��Q��������������������������E�T,��d�����s߃)ߓ��������`�O�ߢ�����R~߱�N�����������������lx�����*��,�~�����*~�*����rI����**��*����*��*��*��*��*��*��*~�*�.e��������~����~���ee~�����������~�����~���ee��~�e~�ՙ���G�����������������1�����lx����e��������rX�~�������d?����*������������dN�vՙb����ՙ~���������e�e����1�$�����������������������w܆������ܖܦ�������������(��Rܵ������|���������������*�����������9�*������!;���0���b�@��P�	�(�
������
��`�p�)#e���p݀�S������ݐ�ݟ���ݯݿ�D����!�����>"Z������ ����
�H�"�%�#�$��-�=�7�&�'�M�5�\�l�)�8�*�1�+�.�,�-�|ތޛ���/�0��HO��2�5�3�4��&rIު�6�7޺�w����9�@�:�=�;�<�	���� ��>�?�m{c�����A�D�B�C����&�E�F�|�5��Q��H���I�h�J�Y�K�R�L�O�M�N�E�T,��d�P�Q�s߃)ߓ�S�V�T�U`�O�ߢ��W�XR~߱�N��Z�a�[�^�\�]���������_�`��,����.�b�e�c�d�����
�f�g���+�]�i�x�j�q�k�n�l�m������{r�o�p�K�[�j�y�r�u�s�t���|:�v�w�c6lx���y���z�}�{�|������1��~���*��#���������39�C,����)���!b�R��lx�����������������b�q�v��������ؒ ��������e�l�W����e!�.!����lx��lx�������)lx������������������������������lx����ee����~���������rX�~�������d?����*������������dN�vՙb����ՙ~���������e�e����1�$�����������������������w܆������ܖܦ�������������(��Rܵ������|����������������*������������9�*����������!;���0�����b�@��P����������������������p�)#e�����p݀�S����������ݐ�ݟ�����ݯݿ�D���������������>"Z������������
�H����������-�=�7�����M�5�\�l���
��������|ތޛ������HO���
��	��&rIު��޺�w����������	��{r ����m{c������������&���|�5��Q���\��=��.� �'�!�$�"�#�E�T,���%�&�s߃)ߓ�(�+�)�*`�O�ߢ��,�-R~߱�N��/�6�0�3�1�2���������4�5��,����.�7�:�8�9�����
�;�<���+�]�>�M�?�F�@�C�A�B�������;�D�E�K�[�j�y�G�J�H�I���|:�K�L�c6lx���N�U�O�R�P�Q������1��S�T��*��#�V�Y�W�X�39�C,�Z�[)���!b�R�]�w�^�m�_�f�`�c�a�b�b�q�v���d�e��ؒ �g�j�h�ie�l�W�k�le!�.!���n�s�o�r�p�q���)e��dN�t�udN�����v��e�x�{�y�e�ze��|e�}e�~e�e���������������������������e����ee����~���������rX�~�������d?����*������������dN�vՙb����ՙ~���������e�e����1�$�����������������������w܆������ܖܦ������������ՙ(��Rܵ������|����������������*������������9�*����������!;���0�����b�@��P���������������������`�p�)#e�����p݀�S����������ݐ�ݟ�����ݯݿ�D���������������>"Z������������
�H����������-�=�7�����M�5�\�l�����������������|ތޛ��������HO�����������&rIު����޺�w����������������	���� ������m{c��������������������������������������&���|�5��Q���E��&���	��
�
���E�T,��d���s߃)ߓ����`�O�ߢ���R~߱�N�������������������,����.� �#�!�"�����
�$�%���+�]�'�6�(�/�)�,�*�+�������;�-�.�K�[�j�y�0�3�1�2���|:�4�5�c6lx���7�>�8�;�9�:������1��<�=��*��#�?�B�@�A�39�C,�C�D)���!b�R�F�s�G�^�H�W�I�T�J�K�b�q�v�L�M���N���O���P���Q���R���S��e���U�V��ؒ �X�[�Y�Ze�l�W�\�]e!�.!���_�n�`�k�a�j��b�c���d���e���f���g���h���i��e��)lx�l�melxelx�o�qlx�plxee�relx�t��u�{�v�y�w�xlxeelx�zeelx�|e�}�~ՙb9�*������������lxelx���e(�e��e��elx��������������������������sG��������������
��������6��������	�
�����������J����������������+�J�JsG�+�+sG������+���������������F���F����������F�����	��������sG��R�+��z�������Z����@�����sG�����������������������������R����������@������sG�R��sG�����8���'���������������������j�����sG@az@�����������sG���������	)���R�����R�R���R�����R��R���������������@sGsG����sGz��������������{
��sGsG�sG+��[J+J������sG@��	�
�+sG���
�������R+sG��
[��������+JsG�sG@
��!������ +��
�"�$�#sG��%�&��+���(��)��*��+��,�-��.���/��0��1��2��3��4��5�6���7�b��9�E�:��;�A�<�@��=�>�?sG	Y	YsG���B�C�sG�D��@��F�G�v�H�t�I�d�J�X�K�R�L�O�M�N�R*_�P�Q+

��S�UsG�T[+�V�W;@sG�Y�^�Z�\��[��]sGZ��_�b�`�a�[+j�csG*�esG�f�m�g�j�h�iKk{��k�l_ 	���n�q�o�p�zlx�r�s��+;sG�usG��w�{�x�zsG�y{Z��sG�|sG�};�~sG��������������z��z��z��z��z��z��z��z����zz���xzz��z��z����zz��z����z��z��z��zz����#���X�������)��������������e����e��e1�e��e�����e����������ՙb9�*����ed?�.���������������|��#e�����e*��e�����������dNe�����He�*�������e����e�����we�w������e�wee��e�����e����������ՙb9�*����)d?�.ՙ�������������|��#e�����e*e��������1�e������lxrX�1������������������e1�ee��e�������e��e�ee����������e��������ՙb9�*������d?�.���������������|��{r���1�1�*�����e��dNe�H��e��������
�	)e)�e)ee�
e��e�e�e�e��e����eՙe��)1��.e��"�����|��{r�� �!e*�����#�&�$�%���1�e�'�(�HrX�1��*�}�+�Y�,�H�-�;�.�4�/�1�v�0�(��2�3�q�rXlx�5�8�6�7rI(��v���9�:rIdN(��q�<�C�=�@�>�?��rX�*1��A�B���;�v�D�G�E�F�*1�dN(�(�d?�I�R�J�M�K�Ld?�����q�N�P�Oؒ�qؒ�Q;ؒ;�S�V�T���U�;��v�WrX�XrXՙ�Z�l�[�c�\�`�]�_ՙ�^ՙ�����*�a�b�*ؒؒrI�d�i�e�g�f�rI��hdN�dN�jd?�k(�dN(��m�v�n�q���o�prX�vrX�r�t�sՙrXՙ�u��ՙ���w�x�*ؒ�y�{1��z1����|�dN�~����������������dN������(���d?(�d?������������d?�����q���q����;��;1��1��������������������v�v���vrX����rXՙՙ��������R~���*������ؒ�*ؒ��1�ؒ1��������������dN�����(�(�d?��������d?�����q���q�����;�q;�������������v���vrX����rX��rXՙՙ��ՙ�*���������*ؒؒrI����rI���dN�dN���>�����������������������e��1�dN������1���1���������*1�lx{r1�����1���e����1����*1���e1�ՙ����e��e������1�e1������������e1�ee������ee��e1������������������1��1�1���(�1�������1���1�����1�(��{r����1���1���1�9��e��ebՙe��e�e��e1��1���%���	��
���
e�1����rX1�(�1����1���1���1�(��1�������1��|1��.1���*1��e1�ee� �!e�"e�#�$e1��lx�&�4�'�1�(�+�)1�e�*1���,�.1��-�����/�0*1��{r1��2�3e1�ee�5�6�;�7�9�8�e1��:e~�O�<�ve�=e�v�?�K�@�G�A�D�B�C�,{r�w�E1��F1�1�e1��H�I1��J1�1�e1��L�M�U1��N�O�R�P�Q1�ee1�1��S�T1�e1�1��V�W1�e1��Y���Z���[���\�y�]�m�^�h�_�d�`�be�a(�1�1��c��1��e1��f�g*1��1��ie�j�l1��k1�91�e�n�re�oe�p�q�1�e�s�v�te�ue�ee�we�xe*��z���{���|1��}��~1��rX1���1�dN������1���1���1���e1�ee����e��e����e1��1���������������������e��1��1���(�1���e��1�1������e��1���1�9��e��ebՙe��������e����e1��1�e��e��1�����������������������1���1�dNe��e��1�{r��������������1���1�1���1�9��e��e1�ՙe����e��e����e1��1���������e��e������e�*�������*���e��e��e�e������������e��eR~����e���������������bՙ����ՙ�����1��*1�������d?�.���������������|��{r�����(�*�������lx���������lx��dN(������H����������!�������e���e��e��e��e��e1���e�~�e��e�e���e��	��
�ՙb��*�
9��9����d?�.���������|��{r���(�*������ ��������ee��dN �!�"�HrX�*��$sG�%�/sG�&�'�(sG
sG�)�*�+�,�-�.���0�B�1�7sG�2�3��4��5��6����8�:sG�9@��;�?�<�>sG�=�sG�sGsG�@sG�A@�R�C�rsG�D�E�\�F�R�G�L�H�J1��I1��=lx�K�=lx�M�O�Nlxlx�=�P�Q�=lxlx,��S�X�T�Vlx�U,�lx�Wlxlx,��Y1��Z�[1�lxlx1��]�g�^�c�_�a�`lxlx1��	�blx�	�d�flx�e�	lx�	lx�h�m�i�k�jlxlx1��llx1�lx�n�p�olx1�lx�qlx1�lx�s�x�tsGsG�u�v�w��R��sG�y�z�{�sG�|�}olx�~�R���sG	YsG+�������������z����z��zz��z��z����z��z��zz��z��z��z��z����zz��z��z����z��zz�������������������������������������������������������������@�sG��������sG��sGsG����sGsG��sG����sGsG��sG����sGsG����sG��sGsG��sG����sG���������������������������������������������������������@����_���V����������������������������������������������������������������{��sGsG����sG��sG��sG�����sG�sG���+@�������������������z+K+���sG+@����sG+�+���������	�

sG@���
�
�@���sG��sG�����+�+sG��H��3��$sG���������!������ ����"�����#�����%��&��'�(��)��*���+��,��-��.�/���0�1��2�����4�6[�5sGlx;�7�8�?�9�<�:�;_@��=�>;�sG�@�E�A�D�B��C@��@[+�F�GsGK+K�I�L�J�Kk@lx�M�S�N�O�sG�P�R��Q@sG�@�T+�U��J�W�X�sG��Y�Z�[sG
�\J��]�^�sG�`���a�b���c���d�qZ�e��f�g�j�h�i��sGj�k;�l;�m;�n�o;�p;;sW*�r�s�y�tKk�u�v�wo����xsG+[�z�{�|�_sG�}���~sG��+
����k���������������*+K������������@����@��@@��@�@������@��@
d
d@@��@����@@����@�/@����sG��JsG����[sG
����������R��sG��������������������������{@sG�sG����R������������sGK{�����+k���������+�_sG�����+*����@@�z������������k�����������lxsG���������������������������������������sG������sG�������@��@��@��������
+sG���+1�;����sG�z������[;sG+����������z��	�����������������sG����sG��sG�ksGsG����sG�sG�sG�sG�sG�sG�sG�ksGsG����	�
{sGk�{�R�
��+
sG+�;���zsG�������k
�ZJ��Z����J�� ���Z�!�"�J�#�&�$�%+sG�K�'�({����)�*�+sG�@��-���.���/���0�
�1���2�N�3�@�4�;az�5�6�:�7azaz�8az�9az|az|�<az�=az�>|�?azazQaz�Aaz�B�Caz�D�M�Eazaz�F�G�Jaz�Haz�Ijaz�Kazaz�Lv�azazM�O�s�P�l�Qaz�R�[az�S�T@az�U�V�X�Wv�azv�v��Y�Zv�v�az�\az�]�f�^az�_�c�`�bt��at�u�t�u�wU�d�ewUv�b��gaz�h�j�iazgCaz�kazgCazaz�m�naz�oaz�paz�qaz�razt�az�t�~�u�x�vaz�wazaz�_�y�{�zazazv�v��|�}azv�azaz���az��az��@az@����������@������|������az����az��az����azaz�az����az��azaz|������gQgQ����gQgQ��gQ����gQ����gQ������gQazu�ub��gQ��gQwb�������������gQ��gCwgQgC����gCgQ��gQgQb�������azkXazaz����gQazgQ��������������az��az������azaz@����@azaz@����az����azaz��az|az����azaz��|az������az����az��az���azaz����azazM����������az��az|az��azaz��@az����������@az@����az`�@az��az�az����������azaz��az����az|azaz����azaz��N��Nazaz����������az������@azaz���az��az�@��az��az@az���(�����������az|azgQ�azaz���
�������6������	��
����������������6�az�az�azaz��az���az�azaz�az�az�azv��az��'� azaz�!az�"az�#�$azaz�%az�&wazwaz�)�_�*�H�+�<az�,�-�5�.�2�/�0az@�1az|@az�3az�4az@�6�9�7az@�8@daz�:�;azazAe�=�Baz�>az�?az�@�Adazd�Caz�Daz�E�Fdazaz�G|az�I�Oaz�Jaz�Kaz�Laz�M�Naz|az�P�T�Qazaz�Raz�S|az�U�\�V�Y�Waz�Xazaz|az�Z�[azaz|az�]�^azazQ�`�r�a�g�bazaz�caz�d�eazaz�f@az�haz�iazaz�jaz�kaz�laz�m�n�paz�oazgC�qazgCaz�saz�taz�uaz�vazaz�w�xazaz�yaz�z�{az�|az�}az�~azaz���azw�az����������az��az��az��az��az��azaz����azazjaz����az������az��az����az@��|��az@az��������|��|��|��|����|����|��|��|��|�|��|��|���|��||��|����������|����|��||����|��|�|��|��||��|��|��|���|����|��|��|����|����|��|�|���|��|��|��|��|��|��|�|������|��|��|��||����|��|��||��|���������������||����||����|��|��||���||������|��|����||���|��|��||���|��|��|��|�||��|��|��|��|��|����|��|��|��|�|��az���az����az�az�az�az�|�@azv�az�az�az�az�	az�
az�az�az@����^��,���|�az�az�az�az@az|��az��&�� az�az��az�azgQaz�!az�"�$az�#gCaz�%�az|�'az�(az�)az�*az�+azazw�-�I�.�F�/az�0�9�1�4az�2az�3az��5azt��6t��7t��8t�az�:�C�;�?az�<�=az�>az�az�@azaz�Aaz�Bb��Baz�D�Eazaz|az�G�Hazaz|�J�]�Kaz�L�U�Maz�Naz�O�R|�Paz�Qaz|az�S�Tazaz|�V�Wazg�az�X�Y�[�ZazazgQ�\azkXazgCaz�_���`���a�l�bazaz�c�dazaz�e�f�i�gaz�hazb�az�jazaz�kb�az�m���n�w�o�raz�p@�q@|�sazQ�tQ�uQ�vQazaz�x�y�}�zaz�{azaz�|azgC�~az�az��azazgCaz���������������w���t���t�����w�t�t�t���������b���b�azu�azaz����azaz�az����azaz��az����az��azaz����az�Baz������������az��az����az��az��az��azaz����az��azaz����azaz����az��azazgQ����������az����az����azv�azaz����azv�az����������az����azb�v�azazwaz��az��v���b�v���az��az��az��azazv�������������az������az��az��az����az��az��azaz��az����az�az��azaz��gCazaz����az��azj��jazaz��az����azazkuaz��az��az����az��az�&����������������4�&w���az��azw�az���az����azaz����az��azaz��az����azaz����az��azaz��az��az��azazw��az�azaz��azaz�az|�	�6�
����L���
|�az�az�az�az��az��9�����az�az�az��|azAe���azAeaz��.��(az� az�!az�"az�#az�$�%azaz�&�'azazu��)�,az�*az�+azAe�-az|az�/�3�0azaz�1az�2azM��4�6�5azBaazaz�7�8az@az�:az�;�B�<az�=�?�O�>�azaz�@�Aazaz|�Caz�D�I�E�Gaz�F`�az�Haz��azaz�Jaz�Kaz|�M�o�N�S�O�R�Pazaz�Q�_azaz|�T|�U�b�V|�W|�X|�Y|�Z||�[|�\|�]�^||�_|�`�a||B/|�c|�d|�e|�f|�g�h||�i�j||�k|�l|�m|�n|B/�p���q�z�raz�saz�t�w�u@az�v|azaz�x�yazt�az�{���|az�}��az�~az�az�O��azaz��az|����������������t�azaz@��az@�|az��az|��|az������������az��|��az��azw���������w���w�azaz��az|az������|az@azaz��az����azaz��@az����������az��azaz��az����az��azazAe������azaz��az��az|az��az��az��az|������|������az����az��az��az���|����az��jazazM|��az��az���������azv�������az����)��������������sG������sG��sGazsG����sG��sGazaz��azsGsG��sG��sG��sGaz����sG��������sG����sGazazsG��azaz��azsG��az��az��azazsG���������������az����azv�azaz����sGazsGsG����sGazsG�������sG����azazsG��az�sGaz�sGazsG�sGsG�sG�azsG�	��
�
sG��sGazsG���|sG�sGaz��az�azsG��sGazazsG��"�����sGazsGsG�azsG�az� �!sGazsGaz�#�&az�$az�%azsGsG�'sG�(sGaz�*�1�+az�,�0az�-��.�/c��azaz|az�2az�3�4az�5azaz|�7���8�R�9�C�:ty�;az�<�@az�=@�>�?az@azaz�Aaz�BR����Daz�E�P�Faz�G�Maz�H�I�Kaz�Jb�azaz�Lazmaz�N�Oazaz|�Qaz|az�S�y�T|�U�_�Vaz�Waz�X�\�Y�Z�'azaz�[az|��]�^az�azaz�`�a�maz�b�cazaz�daz�e�faz�gazaz�haz�i�jazaz�k�lazazw�az�naz�oaz�paz�q�raz�saz�taz�uaz�vazaz�w�xazw�azaz�z�{azaz�|�}az�~az�azazH:����������azaz������az����az����������������������az���az�az��azaz�������az�az��az��az��az��az��@��az��@az@��az����������azaz|����az��az��az��az��|az����az����az��azMaz��az��az��az|az��az����az��az��az��az|��az����az����az|azaz��az��az|�������}��������az��az��az����azaz��az����az��az��azaz��az����az��azaz����azaz����azaz����az����az��az������azaz��az���az��az�����az��azaz��az����az��azv�az��azaz��az��az��az����azaz����az��az��az��az��az��az����az����az�azaz����az�az��az���h���������az�az|azv�az|�az�az�	az�
azaz��azaz�
�az�az�azaz�az��azaz�az@��;��+��az�az�az�az�az|��$�|� �"�!|az||�#az|�%�(|�&|�'|az�)||�*az|�,�4|�-�.�1�/||�0v�||�2|�3|az�5|az�6�7�9�8az|az�:|az|�<�R�=�A|�>|�?|�@|az�B�G�C�F�D|�E|az||az�H�M�I�K�J|@||�L|az�N�P�O|az||�Qaz|�S�]az�T�U�X�V|�W||az�Y�[|�Z@|�\az@&|az�^�_�b�`az�aaz|az�c�eaz�daz|�f�g|az|az�iaz�jaz�kaz�l�paz�maz�n�oaz@&F��qaz�raz�s�x�tazaz�uaz�vaz�wazv��yaz�zazaz�{az�|azgC�~�������az��az������azaz��az����azaz������azv�azv���az������az��az��az��azaz��az��v�az��az��az��az��azaz���az��az��|��az��az��azaz��az��az|��az����az������������az��azaz��|��|��|az��azaz��azku������������az��az������mazazv���az��az��azazmaz��az��az��|az������az��azaz��az��azt���azazg4������az������az��az��azaz����|az���az��|������az��azaz�az|az|���i���D�������R���$������������������||��az|����|��|��az||����||az|��|��|��|��|az��||��|az������������|��|��|��|����|��|��|���|�|�|���|�|��|�|��||��	||�
|��|�
|�|�|�|�||�|B/�||�|��|az|�� |���|�|az|�az�az||�!�"|az�#az|�%�<�&�1�'�,�(azaz�)az�*az�+azgC�-az�.azaz�/az�0�az�2�7�3azaz�4az�5�6azaz@�8az�9azaz�:az�;@azaz�=�>�Caz�?�@az�A|az�Baz|�D�Haz�Eaz�F�Gazaz|�I�M�Jaz�K�Laz@@az�N�P�Oaz@azaz�Qaz@�S���T���U���V�Zaz�W�Xazaz�Yaz@az�[�\���]���^�~�_�v�`�o�aaz�b�jaz�c�d�gaz�e�fazw�azaz�haz�iazw��kaz�laz�maz�nazazw�az�p�qaz�raz�saz�taz�uazw�azaz�waz�x�yaz�zazaz�{�|azaz�}azw����az��az����az������azaz��az��azw���azaz��az��azw�������azaz��az����azaz����azw�az����az��az��az��az����azazw�az��az��az����az��azazw�����������az��az��azaz��az����az��azw�azaz����az��az��azaz����az��azw�az��az��az��azaz��az����az��az��azazw�az����az��az��azaz����azaz��az����azaz��w�azaz|��azaz��az��az|����������azaz��az��az|��az��az��azaz����azgCaz������������az��az����azazN��azaz����azcWaz��azaz������az��|az��azazH:����az��az������az||��cWaz��az��azaz��az��_�N������az����az��az����|az�����|��||�|��|�|�||��|�|�|�	��
||�|�|�
|��|�|�|�|�|�|�az�az�azaz�az���caz�az|�|��%�az� az�!azaz�"�#az�$azmaz�&�9�'�4az�(�)az�*az�+az�,az�-az�.az�/az�0azaz�1�2azaz�3azm�5azaz�6az�7az�8|az�:�Aaz�;az�<�=�?az�>azgC�@azaz|�Baz�C||az�Eaz�Fazaz�G�H�b�I�T�Jazaz�K�Laz�Mazaz�N�Om�Paz�Qazaz�R�SazazgC�U�Y�Vazaz�Waz�X�azM�Z�[�^q��\�]q�Mq�q��_�`�aM�;g�Maz�c�dazaz�eaz�faz�g�hazazt�az�jaz�k�laz�mazaz�naz�oaz�p�qazaz�raz�saz�taz�u�vaz�waz�xaz�yaz�z�}�{azaz�|gQaz�~azaz�gCaz��������������� az������az������������azaz����az��azaz��azv���������|����az����|azaz|��azM��Mazaz��az����az��azaz|����������az������az@azaz����azcWaz��az��������az|��az|azaz��az��|az������azaz��az��az��l�az��az��az����az��Mazaz��az|����������������az��az��az|az������az��az��u�az��az��azu�azaz��az��az����az��azv�az����az����azaz����azaz��az|��azaz��az����azaz��az|����az��������azaz����az��az|az����az����azaz��az|����az��|azaz��v���|az�����������az����az����azcWcWazaz����az��az|@�����az�az�|M�az@az����	az�az@�
az@|�az�
azaz@�����az�az|azaz��az�az|az��az�az��az|az�az�az�azaz@�!�M�"az�#�:�$�-�%azaz�&�'�)az�(az|�*azaz�+az�,azu��.�4�/azaz�0az�1az�2az�3@azaz�5az�6az�7az�8az�9az|az�;�<�G�=az�>�C�?�Baz�@az�Aaz|?"az�Daz�Eazaz�F|azaz�H�Iaz�Jazaz�K�Lazaz@�N�o�Oxv�P�\�Qaz�R�W�Saz�Tazaz�U�Vazu�w�az�Xaz�Yaz�Zaz�[gCaz�]az�^�j�_�f�`�caz�aaz�b|azaz�d�eazaz�gazaz�haz�iaz|az�k�lazaz�maz�n|azAe�p�qaz�razaz�s�t���u���v�xaz�wazm�y���zaz�{az�|az�}az�~az�az��az��azv�azazt�����������az��az��az��az��az��az��az��azv�az��kX��az��az��az��az��az��az��azv�az��azv�w������������t�v�azv�����mwubwU��������jazwaz��azv�az���[��������������������azaz@az����azaz����az��azaz����azaz����azaz��az����az��az�az��az����@&|@&����az��azaz����azaz����azaz����az��az��azaz��azw�����az��������az������azaz��w�������az��azw���������azaz������az��azc�az��az|������azaz��������������t����K<�;��J�����������j�j������
����"az����az��������������azazu�����az��������gC��jaz��azw�?azaz���
�az�az��	az�azkX�
az�azaz�azgC��az��az���az�az9�az�az|azaz�az��azaz�az�az|��>�azaz�� �1az�!�"�)�#�&az�$�%azaz@az�'az�(|az�*�.�+az�,�-azcWcWazaz�/�0azazAe�2�6�3az�4azE��5Aeaz�7az�8�;az�9az�:az|az�<az�=az|az�?az�@�A�K�Baz�C�G�Dazaz�E�Faz�azaz�Haz�I�JazazM�Laz�M�Qaz�Naz�O�Pazazw�az�R�Saz�Taz�Uaz�Vazaz�Waz�Xaz�Y�Zazv�az�\az�]��^�t�_az�`�f�aaz�bazaz�caz�daz�e�az�gaz�haz�iazaz�jaz�k�laz�maz�naz�oaz�paz�qaz�razaz�s�Baz�u�zaz�v�waz�xazaz�yaz|�{azaz�|az�}az�~@az����������������������azaz��az��az|az��az|az��az��az��az��jaz��azaz��������������6����|�������������6��azaz��az��az|��������az��az������az��az��v�azaz����azazv�������az��azaz��az��v�azaz����azaz��az��b�az������������az��az��azt���az��az��azaz�az��������azaz��v�azaz����azaz�B��������az����azazv�az��az��az��azb�az����azaz��b���b�az���a�����������&����������az��az��az��az�?����az�?az��az����az��az����az��azliaz��������azb���azb�azaz��az��az��az|���������|��|��|��|��|az|��||�����������az||�|�|az|��|�|����
�	��
az|az�|az|�|��|��az|azaz|���||��|az�az|�� ��az||���|az|az�!�#|�"|az|�$|�%|@�'�T�(�D�)�2�*|�+|�,�/�-|�.|az||�0�1|az|�3|�4�@|�5az�6az�7�8az�9az�:az�;az�<az�=azaz�>az�?azv��A�Baz|@�Caz||�E�F�Gaz|�H�P�I�M�J�Kaz||�Laz||�N|�O|az|�Q|�R|�S|az�U�h�V�^�W�\�X|�Y|�Z|�[|az|�]|az|�_|�`�c|�a�b||az|�d|�e�f�gaz||az�i�v�j�p|�k|�l�m�n|az�o||az|�q�raz�s�uaz�taz||az�w�az�x�y�||�z|�{az|�}|�~|az||��|��|��|��|az����|��|��|����|��|��|��||��|��|��������|������|��|��|��|az|��|��|��|��|az|����������az������az��az|azaz����azazu���az��az��||��|az���������������������������������������������������������������������������az��az������az||��|az���<��az���������������������|��|��|az��������|��|��|��|��|��||���|��||��|��|��|���||��|��|az��|az����||��|az����|��|��|��|az����|����az��az|az����az��az|����|azaz��az||����|�|�|�|�|az|�������|�	��
��|az||�
|az�|�|az||�|�|��az|az|��|�|az|��*��#�|�|��!� |az||�"|az�$�'|�%|�&az||�(|�)az|�+�2�,�/�-|�.||az�0|�1|az|�3�8�4�6|�5|azaz�7az||�9|�:|�;|azaz�=az�>�?�L�@�D�Aazaz�B�Cazaz|�E�I�Faz�Gazaz�Hu�az�Jaz�KazazA�Maz�Nazaz�O�P�Saz�Qaz�Razv��Taz�Uaz�Vazaz�Waz�X�Yaz�Z�^�[az�\azaz�]b�az�_az�`azaz�B�b���c���d���eaz�f���g���h�uaz�i�jaz�kazaz�laz�m�naz�oazaz�p�qazaz�r�saz�taz�Bazaz�v�w�}�x�zaz�yaz��az�{w�|wt��~w���azt���w����az����az����azgC��azt�v�az������az��b�az������azgCgQ����t�v�v�u�����az��az��az��az��az��azgQ����az��az��az��az��azd��az����daz��az��az|az������������az����azaz��az��wv�������az��azaz����azazwaz����azaz|������azaz��az����azaz��az|����������az��az��az��az��az��az��az��az��az��az��azaz�Baz����azaz��t�az��azaz����azaz��azgC������az��az������azaz��az��az|��az��azaz��|azaz������az��az����azaz��az|��az��az��azaz|���[���az��������az����az��az��az��@&az����az��az��l��!��azl�az�����az��az��azaz�azgCaz�az�az�az�az|��N��Kaz�	��
��u���
�v�mazb����az��C��&��v��v���az��v�az�azv�az��!az��v��v�az� azv��"az�#azv��$az�%v�az�'�8�(�3�)�-�*v�az�+�,v�azv��.�0v��/v�az�1az�2azv�azaz�4�5v�az�6az�7azv��9�>�:azv��;�<azaz�=v�az�?v�az�@�Av��Bv�azv��Dv��Ev�v��F�Gv��Hv��Iv�v��Jazv�az�Laz�Maz|�O�Uaz�P�Qaz�Raz�Sazaz�Taz��Vaz�Waz�Xazaz�Yaz�Zaz|�\�}�]�i�^azaz�_�`�d�aazaz�b�cazazb��eaz�f�haz�gv�azu�az�j�saz�k�l�paz�m�nazaz�o��az�qazaz�r|az�t�yaz�u�v�xaz�waz|@azaz�zaz�{az�|az|az�~az�������azaz����az��azb�t���az��az��az��azaz|������������������az��az��azu�az����az����az��az��az��azaz�az����az����az��az��azgQ��az����gQgCaz�B������az��azaz��az��az|az����azaz��az����az��azaz|����������azaz@������az��az��az��azaz��b�azaz����azaz����azaz��az��az����azaz����azaz����azaz��az��az����az������az��az��azaz��az����azaz@��az��az��azaz����az�az�����������az��az��az������������az��az��azaz��az��az|az��az��az��azgQ������azaz��������az��azaz|��azaz��azg�����az��az������az��az@��az@az��az��azaz��az@az��B��'�az���|���	��
�
�X#��0X#�0�azX#azaz�az|�az�az�az�azaz�az�az�az�az�K��!az�az�az��az� azaz|az�"az�#�$az�%azaz�&@az�(�:az�)�*�4�+az�,�0�-az�.azaz�/|az�1az�2azaz�3�az�5azaz�6�7az�8az�9az@azaz�;az�<az�=�>azaz�?�@azaz�Aaz|�C�f�D�X�Eaz�F�L�Gazaz�Haz�Iaz�J�Kazaz@�Maz�Naz�O�Raz�Paz�Qaz��S�V�T�U�azazkXaz�W@&az�Yaz�Z�`�[az�\azaz�]az�^M�_Mazaz�a�baz�cazaz�daz�eMaz�g�|az�h�i�n�jazaz�kaz�laz�maz|�o�w�paz�q�taz�r�sazazcW�uazcW�vcWazaz�x�yazaz�z�{azaz|�}���~az�az����az��|az��azaz����az��az��azaz����az�az��������������az����������azaz��������az��azaz�K��azj��az����azaz����az��az��azaz���Bazaz����azazv���������az��az����azaz����az��v���v���v���v���v���v���v�azv���azaz����azaz��az����azaz��az��az��az���waz����az����az��az��azazu�az����az��v������Bazaz�Baz����azaz��az��az����gQaz��azgQ��az��az������az��az��az��azaz��az��az|az����azaz��az��az��az��waz��az��azaz������az��az��az����azaz|az��az��az��M����az��azEaz�������7az�����������azaz����azaz��az����azaz��w�az�azaz�������
����v�azv�azv��	v�az��
v��azv��v�azv����v��azv�az��v��v�az��v�azv�az�az�az��azv��azv�az� �/�!azaz�"az�#az�$�%�)�&az�'�(v�azv�az�*�-�+�,azv�v�az�.azv�az�0az�1az�2az�3azaz�4az�5�6azgCaz�8az�9�f�:�X�;�R�<azaz�=�>�H�?�B�@az�Aazv�az�C�Eaz�DazgC�F�Gmw*waz�I�O�J�Laz�Kazt��M�Nb�t�wm�Paz�Qazv�azaz�S�Tazaz�U�Vazaz�Waz|az�Y�Zaz�[azaz�\az�]az�^�_az�`az�aazaz�baz�caz�d�eazv�azaz�g�h�}�i|�j�y�k�r�l�o�m|�n|az||�p|�q�||�s�t�w�u�vaz||az|�xaz|az�z�{||�||az�~�������|������az��azaz||az������|��|����|��|��|����||��|�����������||��|��|���|��||���|��|��||����|�|��|��||az������||��|��az||��|��|��|��|az���P������az��������az������az��az����azazgCaz����az��azaz���cW��cW����������cW����cW��x�cWcW����cW��cW��cW������cW�ucWcW��cWx�az��az����azaz����az��azaz��azt����9���	��������������azaz����azazAeaz����azaz��az��v�az��az�az����������i��ii��i��i����i��ii����ii��i���i����i��i��i����ii����ii�i����ii��i����i�i�ii��i�ii�i�i�i��ii��
�#��
az�az|��"�az����������������������6������������� �!�����|�$�3�%�*�&azaz�'�(azaz�)az��+�/�,az�-az�.az��az�0az�1az|�2cWazaz�4az�5az�6az�7az�8az��:az�;�C�<az�=�@az�>az�?az|�Aazaz�Baz|az�D�E�Jaz�Faz�Gaz�Haz�IazF��Kaz�Lazaz�M�N�Oaz����az�Q��az�Raz�S�Taz�U�Waz�Vaz|�Xazaz�Y�Z�paz�[�\az�]���^�_�j�`�e�a���b��c�d�az��f��g��h���i��S��k�l���m��n�o���S�qt��r���s�{�t��u��v���w�x��ywFwF�z�?wF�|���}��~������������S��az������az����az������az|��az����������������]���������]�������������az��az|az��az��azaz����azaz|��az����az����az��azgCazaz��az��az��@az����az|��az������az��az��az��azaz����az��az��az����az��azv�����jw�v�m����az������az��azv���azv�azaz��������azaz��azw���azaz��v�az�������������������W��������az��az����az��azaz��az�az��az��az������az��������azaz����az�Kaz��az��azazv���az��azaz����azaz����az��az��az��az��azaz����az�az������az���������az��������az��az|azaz��az��l�azaz��az��az�az�|azaz�az�az�az�az�az|�	��
az�azaz�az�
�azaz�az@�az���azaz���az@�az@azaz��az��az�azv��qazaz�� �=�!�1az�"�#�'az�$az�%az�&az@�(�-�)�+�*azazkXaz�,azgQ�.az�/�0ubv�gCkX�2�;�3�7�4azaz�5az�6@b�az�8�9azaz�:�Tazaz�<��az�>�N�?�E�@�Baz�A|az�C�D|@az|�F�Haz�G�azaz�I�J�L�KazgCazaz�Mt�az�O�Taz�P�Q�S�Raz��c|az�U�Vaz|az@�X���Y�eaz�Z�[az�\az�]�`az�^�_H:az|az�aaz�b�caz�d@az|�faz�g�v�h�p�iaz�j�maz�kaz�laz@az�n�o|az@�qazaz�r�sazaz�t�uaz|azaz�w�x�|�yazaz�z�{azaz@az�}az�~az�az@az��az������������azaz��az����azaz@��az����az����waz@|����az��@|azaz������az����az@az��az��Maz���������������az��������az��az��az����az����VTVEaz��az����az|az��������������az|azaz��|azaz����azaz|az��az������az|��azaz��������������az��az��az��az��az����|az@��������az��az��az|az��az|��az���az��az��w�az����az����az|��az|����az����|az|az��az����������azwazv�az����az�������������"��������J�J�R7��az��azJ�az��|az������az��az����az��az{
az��������az����azaz|��������az��azAe��azaz|�azaz�az�|az���|���1����
az�	az�
�azaz�az@�����az�|az@�az|az�azH:az��$��az��azaz�az�@azaz���"� az�!az@azaz�#az|�%�)az�&az�'az�(@az�*�.az�+�,azaz�-߫az�/az�0azaz@�2�S�3�>�4az�5�8�6azaz�7az@�9�<az�:�;azazv�az�=az@�?�F�@az�A�Caz�Baz��az�D�Eazv�az�Gaz�Haz�I��J��K���L��M�N��O��P���Q�R�����T���U���Vaz�Waz�X���Y��Z�i�[�bv��\v��]�^v�v��_�`v��av�v��v��cv��d�ev�v��f�gv��hv�v�az�j�pv��kv��l�mv�v��nv��ov�gC�qw�r�w�sw�tw�uw�vwv�w�x�{w�y�zu�wu��|�}u�azaz�~azw������v���v�v���v�����v���v�v�az��v�������v�v���v�azv�������v���v���v���v�gC��v���az��v�gCv�az��az��az��azwqaz������az|az��az��|az����az����|azgQ��az��az��azaz��azwaz����az��������������az��@az@��azaz��az��az@��azaz��az���@����az��az��|az����az��az������@��@��@�����@��@�����@�@�az����azaz����azazv��������e���$����az������������azaz��az����azaz@������������az��������w�jazaz��az��@azaz��������azaz|az|az����az|��az��azw��azaz��az����az��azaz��azgQ��az��� ���
��az���az���������|azAeaz|az�azaz�az��az�az�azaz��	az�
azaz�az�u�az�����|�|az�az|�az�az|�|az�����|az|�az|az�az�~�az@az�!az�"az�#az|�%�>�&az�'�5�(�1�)az�*�-az�+�,azaz@az�.�/az�0@az@az�2az�3az�4az|az�6�7�;az�8az�9az�:azv�az�<�=az{
az�?az�@�I�A�F�Bazaz�Caz�D�Eazaz@az�G�Haz|az�J�O�Kazaz�Laz�Maz�Naz@�P�]�Qaz�Raz��S�T�r�U��V��W���X��Y��Z��[��\���^�aaz�_�`|azv�az�b�c@@�daz@�f���g�y�h�qxv�ixv�j�kxv�lxvxv�mxv�n�o�p�xv�xvxv�rxv�s�txvxv�uxv�v�wxv�xxvxv���z���{az�|az�}az�~az���az����azv�azazb�����������������������az��|az|az��gCaz��az��azaz��@&N7����az��az����azazH:az��az��az��azH:az������az��az|��|��||@����������|��||az|��|az������az��������az��az|@az������azv�az��azazv�az����������az��az||cW|��|��|az����az��az����az����az��|az��az��az������azb�az|��az|������azaz��az��az����az|az��������az��������azaz��az��@az��||��������azaz����azaz��azgCaz��az��az|������������az��az����azazw���az@��|��|�|��az@az������az��az������azazgC��v�azv�az����az|az���B���@��?��2����
���azaz�az�az@az�	az�
az��az@az���az�az|az�az��az|�az�azgCaz��"az���az��az�az|az�az� azaz�!azw��#�'�$�&az�%az��az|�(�-�)az�*�,�+azz�w�|az�.az�/az�0�1azv�azv��3az�4az�5�:�6azaz�7az�8az�9azt�az�;�<azaz�=az�>mazMaz�AazazcW�C��az�D�E�i�F�V�G�O�Haz�Iaz�J�M�Kaz�Lazwazaz�Naz@�P�Saz�Q�R||azaz�T�Uazaz|�W�^�X�\az�Y�Z�[az@��az�]azaz|�_�e�`az�aaz�baz�c�d|��|�f�gaz|az�h|az�j�x�k�t�l�p�maz�nazaz�oaz@�qazaz�r�sazaz@�uaz�vazaz�waz|�y���z��{�}|�|az@�~az|azaz����|az@az��������azaz������azb�gCw��azaz|������az����������||������|az|����|az||��������||������@az|az����|����|az|��||��|az|������|����||������az||�����������|��||az��|��|az||��|��|��|azaz��������az��az��az��az��az��azaz���az��az��azaz��az��az��u�az���������������>���������azaz����az��azaz����az������azaz��az��az��az��az�B�B����azaz����az�Baz������az����az������az������azv�b�t�������azv�u�az��gQt���azaz����az��azazv�������az��az��az��az��w*w*az���	�����;az��az��t��t��t�t���t�t��t���t�t��t��u�t�az�
��az��
�gCv�b�gQ��t��v�t��azu�j��1��(���azaz�az�az�az@��#az��|az� �!@@�"@��$�&az�%az@�'azv�az�)�-�*az�+az�,az~�azaz�.az�/az�0az|�2azaz�3�4az�5�:�6�9az�7az�8Ae@&NE�;�<NazN�=azE�?�e�@az�A�[�B�P�C�L�D�I�E�Gaz�Faz@az�Haz@az�J�Kazaz@az�M�Nazaz�Oaz@�Q�Yaz�R�S�Vaz�Taz�Uu�t��Wazu��Xu��1az�Zaz|�\�_az�]az�^|az�`az�a�c�baz��azaz�d|azaz�f�g�|�h�n�i|�j|�k|�l|�m|az|�o�x�p�t�q||�r�s|az||�u|�v�w||��y||�z�{||az�}���~�����|��|��|az|��|��|��|az|������az��az|��||��az|���������az��az��az|azaz��|��|��|��|az��������az����az��azaz������az����azaz|az��azS`��azaz������az��az��az����b�az��az����az��az��az��az��az��azaz��t�azaz����azaz����azaz��az@����������az��az��������az��az��az����azaz������az����azaz��v�az��azv�az��az��azaz��az��az��������az��az��azaz����az��azaz��������azaz��az��az��v�azaz��������azaz��az��az��az��faz����az��az��az����az��azt�azaz��az����az��az��azaz@���~���az��az�����az������az����azaz|�az�azaz���azym����
��	az�|azaz|�az|az�
��az��|az��az|az��e��*�����|�|�|�|�|az||az��$�||� �!|�"||�#|az|�%|�&|�'|�(|�)|az�+�N�,�=�-�8�.�3�/@�0�1az||�2|az�4�6|�5|az�7||az|�9|�:|�;|�<|az�>�A�?az|�@|az�B�H�C|�D�Faz�Eaz|�G|@��I�K|�Jaz||�L�Maz|az|�O�P�W�Q�U|�R�S��T|az|az�Vaz|�X�[|�Y�Z��|az�\�`az�]�^�_az|az|�a�c|�baz||�d|azaz�f�g�s�h�laz�iaz�j�kaz|azaz�maz�naz�o�paz�q�rb�azmaz�t�{�u�waz�vaz|�xazaz�y�zazaz��az�|az�}|az�az��������az��az����azaz��Nazaz����az��az��azaz����azaz��az|az������������az��cWaz����az��azazu���������az���������azu�w�b�|az�����az|az��������az����azaz����azaz@������az��az�?��?d�?az��az|��������S���az||azaz��|��az|���/��az������az��az������������az��az��az|��azaz��azv���az������az��azaz|az����az������azaz|��az|az����������az��az�������@������������������j��������jazj��jazj��jj��j����jjaz����j��j����jazjj����jj��azj��������j��������jj��jaz��jjazj����jj��azjj���j����jazjaz�jazj�az�az�	�j�
j���
jazazj��j���azj�azj�jazj��azjaz��)�az�az��%��"w���w�� w��!azw�azw��#�$w�azw�w��&w��'�(azw�az�*�4j�+�,�0j�-�.jj�/jaz�1j�2j�3jazj�5az�6az�7�<�8�:j�9azj�;azazj�=az�>�?azjazj�A�r�B�T�Caz�D�Mj�E�F�Jj�G�H�Iazjazj�Kjj�Ljaz�Nazj�O�Pazj�Qj�R�Sazazj�U�d�Vaz�W�_�X�Z�Yjazj�[�]j�\jazj�^azjj�`�aaz�b�cazjjaz�eaz�f�k�gw�w��h�iw�w��jw�az�l�ow��mw��nw�az�paz�qazw�az�s�~�taz�uaz�vaz�waz�x�|�y�zw�az�{w�w�az�}w�azw������az��az��az������az������az��az��az������j��jazj��az��az��azjaz��az��az��az��az��az��az��az������az����������az��������az������az����azaz@az|������az@����az|��|�az����az`�������az��az������������azaz��az����az��az��az������������az����azaz��w�az��az��azaz��azj������az��azaz��w�azaz��azw���az��azjaz��������az|�azaz��az���azaz����azaz|��������az��az����az|az��������������az|azaz��az|az��az��az�T������azaz|az����az��az��|��||����||����|��||��|��|@��az����������az��N����azNazaz��S%az@az�az�������g������	��
�
M��azF�az����azLd]ddaz�����MazL��az|ML����azL�az�azL�d��(� �%�!�#�"dazd@�$Q@&�&azg4�'cWd�)�,az�*az�+az`��-g_az�.azg_�0�$�1�qaz�2�3�I�4�:�5az�6az�7azaz�8az�9az@az�;�<�D�=�@az�>�?azaz@az�Aaz�Baz�Caz��E�Gaz�F|az|�Haz|�J�e�K�^�L�Zaz�Maz�N�O�Paz@�Qaz�'�R�'�S�'�T�U�'�V�'�W�'�X�'�'�Y��'az�[�\azaz�]az@�_�b�`�a|azaz|az�caz�daz|az�f�g�l�haz�iaz�jaz�kazaz�?�m�o�nazaz�az�pgCaz�r���saz�t���u�|�v�z�waz�xazaz�yaz@az�{az�az�}az�~�azaz����azb�az��������az����az��az������m������mm����mm��mt���mm����mmt���m��m��m��m��mm��m����mt�m��azaz��az��������azkX����������[�w�����az���������������?Uaz��������az@az|����az��|az��az|azg������������azaz��az����azaz@��az��az�����az��az��az������������������azaz������azwwazaz����az����b�{�b�{���az��azwaz��������az��az������azb�azb�������������azb�azb�����azb�azb���az����azb�azb�az��az��az��az��azv�����������������������azv�azv���azazv���������azv�azv�����azv�azv���waz�azwwaz����az�az�waz���	�
wazaz��az����
waz�������wwazwazaz�azt�az�az�azm|azaz���az�az�|az� �"az�!|azaz�#�|�%�p�&�W�'�P�(�?�)azaz�*�+�/�,az�-az�.azmaz�0�=�1�3az�2gQaz�4az�5t��6v��7v�v��8�9v��:v�v��;v��<v�az�>azaz@�@�F�Aazaz�Baz�Caz�Daz�E@azaz�G�H�Laz�Iaz�Jaz�Kaz|�Maz�Nazaz�Ow�azaz�Qaz�Raz�Saz�Taz�Uaz�Vaz@�X�f�Yaz�Z�b�[az�\az�]az�^�`az�_az|az�aaz|az�caz�d�eazaz|�gaz�haz�iaz�j�maz�kaz�laz@az�naz�oaz@�q���raz�saz�taz�u�~�v�{�waz�x�zaz�yaz|az@az�|�}azaz@az�az����azaz@|����������az����azaz����|az@az����az����az��az��az��az��az��az��v�azaz|����������az��az|az��azaz��az|������az��azaz�������c��c����azaz��az�����az���������,az����������az������������az��az��az��azaz|��azaz��az��az��@az������az��az��az��az|azaz������az��az��az@az��az��az|az��az������������az��az��azaz@��azaz����az|azaz��az��az��az��az@���������|����������|��|����az||az��az��||@��|��|����azEE||���������|��|��|��|az|����|��������az��az��az��az��az����az��azgCgC�gCaz�az�az�az�az�az��	az�azt�t��
t�azaz|�
�|�|��|az|��|�@|az�|�|az��$���azaz���|�|�|azaz� �!�"az|�#azaz|�%az�&�*�'�)�(||azaz|�+az|az�-�P�.az�/�I�0�=�1az�2�9�3�6az�4�5azaz@az�7�8azaz@�:azaz�;�<azaz@�>�A�?az�@azaz��B�F�C�E�Daz@azaz|az�Gaz�H|az�Jaz�Kaz�Laz�Mazaz�N�Oazazv��Q�T�Razaz�SazQ�az�U�V�s�W�f�X�^�Y|�Z||�[�\�]|@|az�_�d|�`�aaz�b�c|azaz|g��eaz||�g�h�q�i�m�j�k|az�l||az�n�o|az|�pazv�az�razv��t���u�z�v||�w�x|�y||��{�~�||�}|@||�az����|az|����|��|��|d|��������|az||��|��|az����az����������������������az��az����|az@az����azaz|az��������az|az�az��az������az��az��azazu���azaz|����az����az����az��az����azazM��az��az��azaz|��az������az��az��azaz����az��w��w��ww����ww��w��wmaz����azaz��az��@|��az��������az��az����azaz|az��������az|az��azaz|����������az��az��az|az����az����azaz���az|az��������������azS%��S%��az����az|azaz|��azaz����������azm����az��az��az����azaz����azaz��waz����t��w��v����I���@�����az�az��azaz��az�azaz�az�	azaz�
�azaz��
�gCt�t�w��'���|�|���|�|az||��||az|���$�� �az�||az�!�#�"azv�azaz|�%||�&@|�(�:�)�0�*|�+�-�,||az�.||�/|M�1�4|�2|�3|az�5�8|�6az�7az|�9|az|�;||�<�=|�>|�?|az|az�Aaz�Baz�C�D�G�Eaz�Faz|az�Haz|az�J���K�i�L�Z�M�Saz�N�O�Q|�P|azaz�Raz|�T�W�Uaz�Vazaz|az�X�Yaz|az�[�aaz�\�]�_az�^az|az�`az|�baz�c�e�dazaz@az�faz�g�h|||��j�|�k�s�laz�m�p�naz|�o|azaz�q�razaz|�t�x�u�waz�vaz|az|az�y�zaz�{az��Vr�}���~�������azaz��|���|az��az����azaz����az��az��az��az��az����az����az��az��az����azv�az|������azaz��|az����az��az|az��jaz������az��az������azaz������gQazw�az��azaz��az������w����az��azaz��az����az��azazf���_����������q������������az��az����azaz��|az����az��az��az|����az����azaz|��az��|��az�E���������az��az��|����azaz��|az����az��az|az��az��az�����az����az��|�azaz����az��azaz��az������������az��az��azaz��az��v�v�az��az����az��azaz|��������������az��azaz�q��azaz|��az|az����������������azt��t��t��t��t�t��t��t���t�azt��	azaz�
�t��t�t��
t���t�t��t��azt�az|az�az�'���azaz|az���U��,��$az��azaz�az� az�!�"az�#azw�azaz�%az�&�'azaz�(�)azaz�*az�+w�az�-�A�.�:�/az�0�5az�1�2az�3azaz�4w�az�6azaz�7az�8az�9w�az�;azaz�<�=az�>azaz�?�@azazw��B�Naz�C�D�I�Eazaz�Faz�Gaz�Hw�azaz�J�Kazaz�Laz�Mazw��Oaz�Pazaz�Q�Razaz�S�Tazw�az�Vazaz�W�X�_az�Yaz�Zaz�[az�\az�]�^azw�az�`�k�a�faz�baz�caz�d�eazw�azaz�g�hazaz�i�jazw�azaz�laz�m�nazaz�oaz�pazw��r���s�z�taz�uaz�vaz�waz�xazaz�yazv�az�{�|���}��az�~���az��azt�����az������b�az��az��az����azb�b�az��az��az��������azv�az��azb���az��azt�az��az|��|������|����������|az��az|az|��az��azv�����az������az��v�azaz��v�azaz����azaz��az����v�v���v�����v�v�����v�v���v�az��������az����������az������az��az����azaz�az��az��az��azt�����������az��az����az��az��azjaz��t�v���azaz�raz��az��������|az|az��|azaz������az��az��az��az��|az��az������az��azaz@az��@az��`���������|����azaz��az����azazv�|��|����az��az|az������|��|az||����az��azaz|��az��az����������azaz�@az��az�az||az��|azaz�	az�
|az���
��az�az|azaz�az�|az��az��az��|�az||�|K��az�faz@��Gaz� �!|�"|�#�A�$�4�%�-�&|�'�*�(|�)|az||�+|�,az||�.|�/�0�2�1|az�|�3|az�5�<|�6�7�9|�8|az|�:|�;|az|�=|�>|�?�@|az||�B�C||�D|�E�Faz|az�H�P�Iaz|�J�Kazaz�Laz�Maz�Naz�O|azaz�Qaz�R�S�Xaz�Taz�Uaz�V�Wazazb�az�Yaz�Zaz�[az�\�]az��^����`��a��az�b�c��az�d�e�k�fazaz�gaz�haz�i�jazgCazaz�l�m�saz�n�o�r�paz�qazu�azaz|�t�|�uazaz�v�waz�xaz�yazaz�z�{azazjaz�}�~az�azgCv���������������az��az����������azazu�azu�az����azazv�az����az��azF�@&��azaz����az��az��az��azgCaz����az��az��az��az��az������azv�v�azaz����������az|az��az|��azaz����azaz��az����az�����������������������az��azt�����w�u�v�az����az���"t�����w�gCgCaz����az����azkXaz��������azu�u�az��azjaz��az������������az��b�gC��azazgQ��������az�wkXgC����w�wazb�����������az����az��az��az��az|az����azaz|��azaz��������azaz��az@az��az��az|����az������az����azaz��az|����az��az��az|��az��az|az��az����az����azaz��azb����azaz�|azaz@az|�����1��"az�	�
���az��
��@�@@az@�@�@azaz�az�az�jaz�az�� ��|��az��az�Bt�azazm�!az|az�#|�$az�%azaz�&�'az�(az�)az�*azaz�+�,az�-az�.az�/az�0v�azv��2�n�3�D�4�>az�5�6�9�7azaz�8az|�:�<�;azazl�az�=|azaz�?�@az�Aaz�Bazaz�Caz|�E�g�F�\az�G�H�V�Iaz�J�Taz�K�Laz�Maz�Naz�Oaz�Pazaz�Q�Razaz�Saz�B�Uaz�azaz�W�X�Z�Ywqazwqaz�[wqaz�]�b�^azaz�_�`az�aazaz@�caz�daz�eaz�fazaz@�hazaz�iaz�jaz�kaz�l�mazaz|�o���p���q�y�r|�s|�t�w�u|�v|az|�x|az|�z���{�|�||�}�~az|azaz����|��|@|��||����||��az|������|��||����||��|az|��|��|��|��|��|az����������������b�����kXkX����kX��kX��kXkX��kX��kX��kX��kX��kX��b�gQ������������az��b�ub��b�wcub��az��az��b���b���b���b�b�����b�b�����b�gCb���d��||��az|��azaz����az���|az��|����|��az��az|��az����������@&N������*�K�������w���h����az����������az����az��az��az�_azaz��az��az����azaz@����az��������az��az|az������az@az��az@az��������az��az��v�azaz��az��az@��az��az��azaz@����az��az����azaz��az��az|���	�����az�azaz�az�az@az��az�az�azaz�v�az�
�az�az��
az|az��d�azaz�az��az��=az���+��"��w��w��w�az����azw�w�az� �!w�azazw��#�(�$�&w��%azw��'azw�az�)az�*azazw��,�6�-�0az�.az�/azw��1�3�2azazw��4�5azw�w�az�7�:az�8�9azw�az�;az�<azazw��>az�?�P�@�Eaz�Aaz�B�C�Dw�azw�az�F�Iaz�G�Hazw�az�J�M�K�Lazw�w�az�N�Ow�azw�az�Q�]�R�X�S�Uaz�Tazw��V�Wazw�azw��Y�[�Zazw�az�\w�azw��^�baz�_�`�aw�azazw�az�cw�azaz�eaz�faz�gazcW�iaz�j�u�kaz�l�r�mazaz�n�o�q�p|���|azaz�saz�taz@�vazK�az�x��az�y�z���{���|az�}azaz�~�azaz|az����az��az��azaz��az��az��az��az��az��az��az��az���Bazaz��az��az����������az����az��az��az��az��az��az��azaz�az��az����az��az��az��az��az�az��azaz|��������az��az����azaz��������azaz��az����az��az|az������az��azaz��az��azv���azaz����azaz��az|������������az��az��az|��azaz��az��az��gCv�az��az����azg4�������az��azaz��az������azMazM��azaz��az|������������������
���a��������������s���E���!������������.	��������������1�_�/�_k���1��������������a�����������������������
Q�2T�������������_��	�����_�Q������
���2T���
az������_�������������Q����������QQ�Q�� �Q��"�>�#�/�$Q�%�)�&�(�'��ƭ���*�-�+�,�azaz
Q�.���0�5�1�2Q���3��4Q�_�6�;�7�9�@�8߫��:�_��_�<�_�_�=�_�O�?�_�@�D�_�A�B2T�C��_�O�_az�F�Z�G�M�H�_�IQ�J

�K
�L��_�O�N�O�P�O.��Q�W�R�U�S�T��_�Q�_�V�_
Q�X�Y�O�O��[�o�\�e�]�a�^Q�_Q�`QQ@
�b�c1�d�1��@�f�n�g�j�h
�i
���
�k�l�m��OQ�O�
�p�_�q�r�O�!1��t���u���v�y�w2T�xQQ
�z�|�{Q�OQ�}��~QQ�Q�_��Q�/1�����������_���
�����
�_�_���_�����_���_�_��@�_���������O�����O���O�O���@�O�����O�_.��_����������߫����O��a�Q�_a�����!���O����a���_����������������������O��������������_�������������_������/�������_��������������@����1�������_�����

�_�����������������������������Q��������
����������������Q����������_��k�������߫QQ���Q���Q��Q��Q��Q߫���@���O�����߫�������������Q�����Q�������!�_���������.��2T�����������-����������������������O���O-��-�-�-�-��	��
�
�_���_�_1p��_������.9�_�_��_���_����_��_��_�\�_��_�_��z�_��.���
� �!�H�"�(�#��$��%��&�!��'�Q�)�:�*�4�+�.�,��-�Q��/�2�0�1�OQ�@�_��3�Q�5�7�6�Qaz��8��9�O��;�A�<�@�=�?�>Q�QQ��Q�B�E�C���DQ�'�F�a�GQ��I�o�J�]�K�S�L�O�M��N�Q���P�Q�R�QQ��T�Y�U�X�V�W�QQ�_�Q�Z�[Q��\�O��_�^�f�_�b��`�ap�p�c�e�d�p�_���g�l�h�j�iQ�Q�k�Q�_�m���n���p���q�|�r�x�s�v�t�u�Q�_QQ�wQ��y�{�z��QQ��}���~�����_��_���Q���.���.��_���������������_�Q��QQ�_����Q��Q�_�_Q��������Q�_�_���_Q������Q��������_�_�@�����������������������Q�Q��Q��Q߫Q��Q�O�������������������������������������������������<������a�J�������2T��_��������������������_������O����_�����_�!�1������������߫������������'a�Oazp��Q�����������������az�_�1@�����O����QQ�����OQ�@�����������_��Q���������Q��_�������Q�_������������������AQ�����_���_����������_�_߫����@���_��������Q��Q�Q����_����
��!Q�	Q�����
Q�Q
Q�Q���������@Q����������QQ�
Q�
��*��%�� ��!��"�#�$��_���&��'�O�(��)���OQ�+�,�-Q��_��/���0�l�1�4�2��3�@�Q�5�V�6�K�7�A�8�>�9�<�:�;�QQ��=�_Q�_�?Q�_�@�_��B�E�CQQ�D�!Q�F�I�G�HQ��_2T�J�2T��L�O�M�P��N��O���Q�T�R�Saz��OQ��U��O�W�]�X�\�Y�_�Z��[Q�_
߫�_�^�k�_�e�`�b�4�abaz�c�dazbb�4�f�i�g�hbazbaz�jazazb.�p�m��n�y�o�q�p�Q��r��s�v�t��u����w�_�x�_��_�z���{�|��}���~��_���O���������-��a�1p�������������������Q
�������O������������_�1�_�1���������2���2�2���������Q������Q�_Q��Q�1��Q��QQ��Q�����Q����QQ��2�Q��������OQ�����_QQ߫Q��������QQ��Q����2�Q2�������2�Q��Q��Q2�Q��Q����QQ2���az��azjaz����������������_����������_�sG���������������O�_��_���_���_�O�_���������1az�_�����k�
�_�����_Q�����O�_�O������OQ�����������������������������������������������1��������O�������_����������������O�����������
����������Q���������������	��_����
��������������������Q�_����������������A��+� �%�!�O�"�O�O�#�$Q�O���&�'�)��(
���*�Q�,�?�-���.�/���0��1�2�;��3�4�8�5���6�7���\��9��:��\�<��=��>��\���@Q�_�B���C���D�Z�E�I�O�F�O�G�HȚ�O���J�L�K.)2&�X�M�X�N�O.	�O�O�P�Q�O�O�R�O�S�O�T�U�O�V�O�W�O�g�O�^�Y�O.�[�a�\�^Ț�]2&.	�_�^�`2&Ț�O�b���c�i�d�h�e-��f�O�O�g�O-�.�O2&�j�k���l2&2&�m�n�w�o�s2&�p2&�q�O�r�O2&�t�v2&�u�O2&2&�O�x�|�y�z2&�O2&�{�O2&�}��2&�~2&�2&�O2&���O���O2&��2&��2&������������2&�O2&�O����2&�O2&�O��������2&�O2&�O��2&2&���O2&2&��.��.�O�����������������O2&��2&�O�����O�O�����O���O�O���O�����O�Oȩ���O2&���^�O����������Ț��Ț���O�O�����O���O�O�����O���O�}�O�O2&���O����.)�O�O2&���O���O���O���O�O.�����O��Q�_�������O������
�1�!���������������_���������_�_��k����������_��O�_����Q������Q��Q�OQ��Q������Q�O��_���1�������O������azj��az��az��v�az������azj��az�&az��azj��Q��������������������@�����@��M�����@����M�M�����M�M���M�����M��M�M��M����M�@�@�M��	�M��M��@�M�
����M�@�@�
�@�M���������@�M�M�@��M�@������@�M����M�M�@��#��!�� �M��@��@�"��M�$�'�%�&�M�@�M�@�(�M�@�)�*�@�+�@�,�@�-�@�.�@�/�@�@�0��@�2�^�3�]�4Q�5�\�6�Y�7�W�8�_�9�_�:�P�;�A���<�=���>���?���@���b���B�K�C�G�D���E���F���b�����H�I���J���b���L�����M���N�O���b���Q���R���S�����T�U���V���b���b�X�����Z.����[���_.����O��_�`
��O�_�b�a�c��d���e���f�w�g�u�_�h�i�_�j�s�k�n�l���m�\�b�\�o�q���p���\�b�r�\���t�_.��_�vA�_Q�x���y���z���{��|���}�~��_�����������O����������������������������������_��������������_�������������������������������������������p��������������߫�������������������������������������������������_���
������������������������������������������O����������������������_������������������O������������������_��������

�O��
����
�������
2TQ�@�������@���@���@��@���@���@������������������������
�������_���������Q��������������������1����������Q���
��	������O�
�K2T���_��;��2��_������_��_.��������.��b���_��'��"�_���_�_� �_�!�_��_�#�_�$�_�%�&�_�[���(�-�_�)�*�_�_�+�,�_�_���.�_�/�_�0�_�1�_��_�_�3�4�9�5�8�6�7�_��.��b��.9�:�_�b�_�<�F�=�?�_�>�_.��@�A���z�B�D�C�������E.9�����z�G�H�_�I�b.��J�����L�_�_�M�N�1�_Q�P�Q
�_߫�R�_�S�T�]�U�X�V�_�_�W�_�\�Y�[�_�Z�_�O�\�_�_�\�^�_�_�_�_�`�O�_�b���c���d�s��e�f�j�g�_�h��_�iQ��k�l�_�@�_�m�_�n�o�p���_�q�_�r�_���t�_�u���v�w�Q�xQ�y���z�}���{���|��R��~�����R���R�����������R��������������������������_����az|����_�!������������_���_���_���_�_���_���_���_�����_���_���_���_����������������������������a����������������������Q���������_�_�������_���_�����_�_�\���_���_���_�_�\�1��Q������_����������������������az��az��az��az��az��azaz����az��az��azaz����azaz��jazp�_����2Tp�O���O���1�����������_���_�_���a�����_���_���_
���_�_������Q�_��_��������_���������_�O�����O�������O��O�O��.�O�_���!���_���_�����_
k���������az��w���w����w�w��w�az�����_����_��_Q�_�	�
�_Q���_�_��� �����X����������������;����Q�_��_��9��+��_� �'�!i�az�"az�#az�$w��%�&azazw��(az�)azaz�*w�az�,�O�-�O�.�O�/�O�O�0�O�1�2�O�3�O�4�O�5�O�O�6�O�7�8�O.�O�:�_�_��_�<�=�T�>�?2T�O�@�D��A�B�_�C�߫��E�G��F���H�I
���J��K�L� �M� �N� �O� �P� �Q� �R� �S� -�� 
�UQ�V�_�W
���Y�t�Z�eQ�[�\�`.)�].)�^�_Qp��_�a�bQ�c�d
�Q��f�lQ�g�h�i�OQ
�j
�k߫��m�p�n�oQ�O�O
�q߫
�rp�s�a�u�|��v��w�x���y��z��{Q���}��~�����������������������������_.������_����������_���_����O�_���_�����_���������_�����_���_�_�����_���_�_�����_�����_�����_�_�����_�����_�����_�_���_���������_�����������_���_���_�_�����_��_�_�������_�b�_���b�_�������_���_�_���_�����_�������_�b�_���_���_�������_���_�������_�_�z�_�����_���_�_�����_�_���_�����_���_���_���_���_��_���_���_�_�����_��_��Q�_
����
�������������!������������������_�_����_������������p���_pp���_���_���_�z��_Q�OQp���	�����1�����������Q���OQ����1�_�O���
���Q�Q߫�p�����Q���_�_Q��O�
���
��O�
����2T��������������@���������������Q����!����"�#�]�$�-Q�%�&�+�_�'�_�(�)�*��_��_p�,p��.�E��/�0�9�1�3��2�Q�4�7�5�6������8�_��:�@�;�=�<���O��>��?�_���A�B�_�_�Cp�Da��F�Q��G�H�O�I�K@�J@��L�_�M���N�a�_�_�P�a��R�S�Z�T�Y
�U�_�V�W�X�b�_����a��[�\�_ap��^���_
�`���a�b.�߫�c�i�_�d�e�_�f�h�_�g�_�z�z�_��j�_�k�l���m�t�n�_�o�_�_�p�_�q�_�r�s�_�_.9�u���v�{�w�_�_�x�y�_�_�z���_�|���}��_�~���_���_�_���������_�_�����_�_���\�_�_���\���_�����_���_�������_���_�_�����_�b�_�_���_�����_�_�b�����_�����_�_�������_���_���_����_���_���_���_��_�_���_���_���_���_���_���_�����_��2T�����!�_������������
�_��Q������������p�������������������.������.��.��.2626��.��2&.���_�_�O�������_�_������_az���_�_�����_���_���!�����������Q���_����Q�O���O�Q��Q�/�������_�O������Q���_Q�_���@�_�������������_�����_����!���߫��_�������_�2T�������a�����@����_߫��߫��������������a߫�Ok�O�/��a��_Q�_���O���_�_��_��_���_�_�	�
�_��_�_��_�
��_��_��_��_��_�_@�O��O��� ���@��������������@��@�pQ�"�_�#�$Q��%�5�_�&�'�O��(��)�*���+�,���-�.��/��0��1��2��3���4�/��6�8�7�_��_�_�9�:�\�;�[�<�R�=�?�_�>�[�_�@�M�A�C�B�_��.9�D�_�E�L�F�K�_�G�H�_�I�_�J�_���_.9�_�_.9�N�_�O�_�P.9�Q�_�k�_�S�U�T�_�k�_�_�V�_�W�_�X�Y�_�_�Z���_A�_�]�_�^����`���a�y�b�p�c�d߫Q�e�i�f��g�h��1���_�j�_�k�l�n�m�_�!
�O�o�_�@�q�wk�r�s�u�t����_�v�_��x���2T�z�{2T�_�|��}���~���������������.����1��
���_���_��Q���Q����������Q�Q����������������������������������������_�����������������������������Q��O�����������������������������������������.��.�������*��*����������������������������������������������g��������������������������������������������������������@������������������������������������������������������n�����r2��r2�������������������@����������������������������������������*���i��F��$��"���	��
������
����������O����������������������������� ��!az��#��j�%��&��'��(�7�)��*���+��,�-��.��/��0��1��2���3��4�5��6�-d���8�9��:���;�<��=��>���?��@�A��B���C�D��E����G�S��H��I��J��K��L��M�N�Q�O�P���1���R���T�a��U��V�W��X��Y�\�Z��[���_�]�_��^�_��`���_�b��c���d�e���f�g�-d�h�-d�j���k���l�w�m�j�n�o��p�r��qaz���s��t�u�v��_�Q�x���y�z���{��|���}�~az�azaz���1az�����������������_�����
�����������
���������_���������������������������_���������������������@������������-d�����-d��������-d�-d���-d�-d���L���������������������������������-d����-d�������-d�������������j��j��j��������&��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	��
������
����������������1L���O��O��������������"� ��!��O�_��#��$�%L��1�'���(�z�)�_��*��+��,�-�Z�.��/��0��1��2��3
�4Q�5�LQ�6�7�<�8Q�9QQ�:Q�;Q�n�=�H�>�BQ�?�@�A2�QQ2��C�E2��DQ2��F�G2�Q2�Q�IQ�J2�2��K2�Q�M�T�N�S�OQQ�P�QQQ�RQ2�2�Q�UQQ�V�WQ�XQQ�YQ���[�\��]���^����`�a���b�c��d�u�e�i�f��g��h���_F��j�k�n�l�m�.LL�>�o�r�p�ql��Ll��s�tl�L�>���v�w��x�y������{��|��}�~����������������Q��������������������������������������N�����ˆ������������������������������������O�����������������
�����������������������������@��������������������������Q�����������p�k�����p��_�����������߫�1�!��������������������
���������_��@������/�O�_����O������������������O����_����������1��������������O���_��������������������������߫��������O������������������������������������������������N������������������_��	���
��
�����������������������������_���O����6��0��$�� ��!�"���#Q��%�)��&�'���(L��*�-��+�,��Q�.���/���1���2��3�4��5����7��8�L�9�B�:�?�;�=��<����>�Q��@��A���C�F��D�E����G�J�H�I�O��/��K����M��Np����P�Q�T��R��S���U�h�V��W�`�X�\�Y�Z���[����]�^���_�a���a�b�g�c�f�d��_�e�\�_����_�i�{�j�q�k�n�l�m��_����o�p�_���r�v�s�t���u�����w�x�z�y���M���|‚�}�~���€�Q���ƒ†�„�…�_��‡��‰��Š‹��Œ�Ž�����‘’¶“¯”�•�–�—Ÿ˜��™š�›��œ�ž�-V� ��¡¢�£��¤¥¬¦©§¨�-V�-Vª«�-V�-V­�®��-V°�±��²³��´�µ�-V·�¸º�¹���»¼��½¾��¿�����������������������@����_���_�������������������������_������_����������������������������������_����������_����_����������_���������������_����������������������O����OQQ�����_a�O�Â����
��_Q��S�������O���������	�
�@�-K@�
@-K@��@��@�_���!�2T��O��_��QQ�_��8���߫��2��,��"2��2�� �!2�2�Q�#�)�$�'�%�&2�Q2�Q�(2�2�Q�*2��+QQ2��-�/��.���0�1�
���3߫߫�4�5߫߫�6߫�7�M߫�9�L�:�J�;��<���=�>���?��@�A���B��C��D�E��F�H��G.���I��.��_�K�_�O�M�NQ�_�O�O�P�Q2TQ�O�R�2T�T�s�U�e�V�a�W�`�X�O���Y�_�Z�[�^�\�]�_�!@Q�_�O�_��OQ�b�d�c�_a�_�1Q�f�q2T�g.��h�_�i�j�k
��l�o�m�n�_Q�OQ�O�p�1��O�rQ߫�tQ�uQ�vp�w�z
�x�y��_��{À��|�}Q�~��O�_��_�!Á�_�@Ã��ÄÉ߫ÅÆÈ�OÇ���1��_Êÿ�OËÌ�_ÍèÎÞÏ×Ð�_ÑÔÒ�_�_Ó�\�_�_ÕÖ�_�\�_Ø�z�_ÙÚÜ�_Û�_�\Ý�_�_�\ßçàæá.�â�_ã.�ä�_å�_�_.����_�_�zéùêøëòìð�_íîï�_�\�_.��_ñ�_.�óõ�_ô.��_ö�_÷�_�_.��_.���ú�bû.�üý�_þ�_�\�_�����Q��Q�O��Q����
.��Q����������
�Q�O��Q����_
�_��؀��� ������Ǽ������ō�������R���'�����������AeHG�������������������@@&@&AeAe��Ae@����@&Ae����@&��az��az����az��az��azaz����azazwAeH��������@@Ez����AeAe@����AeHG���Ae��
������@EAe@A�@E��
��	F�@Ae���AeE�'@������E@@E�BaHGBa���ABa@��F��az��$@��� HG���EF�Ae��Ae�!�"�#�]��]�H:�%�&AeAH:�(�F�)�1�*��+@�,���-�/@�.H:Ae�0H:@&F��2�8F��3�4�6F��5��F��7F�F��;�9�C�:�=�;F��<F�GtF��>�B�?F�F��@F��AF��;F��;�DE�E�,F�@�G�HF���I�J��@&�K��@�L�M�O�NAeH:Ae�P�Q�AeAeF��S���T�c�U�]�V�Y�W@�X��Ae��@�Z�[�\@H AeM��^�lH:�_H:�`@&�aB��bB�Ae�dĆ�e�o�f�n�g��h���i�j��k��l��m����@&�p�q�@&�r��s�}�t��u��v��w�z��x��y�Nw�{��|�Nw��~���Ā�ā�ĂĄ�ă��ą���ć@&Ĉ@&ĉĚĊ@&ċ@&@&Č@&čĎđď@&Đ@&@&�@&Ē@&ēĔėĕ@&@&Ė�@&Ę@&@&ę�@&ě@&Ĝ@&ĝį@&ĞğĪĠĩġĨĢĥģ@&Ĥ@&@&�Ħ@&ħ@&@&��@&@&�īĭĬ�@&�@&Į@&�İ�ıĻIJ@&ijķ@&Ĵĵ@&Ķ@&@&�ĸ@&Ĺ@&ĺ@&@&�@&ļĽ@&ľ@&Ŀ@&@&��@&��@&��@&��@&@&���������������E�����Ae��AeH:Ae������AeF��E���������������������Ba����EAeEAe����E��AeEz�����gEF�AeAe�������E
���������
��Oٰ������H ��@&��������A�'Ae��H:F���@&��F��Ae���Ae����@��*������HG�@����H:@EAe�@Ae�
�
��
��
��
��{Ae���#A����	��
��H:��
az@Ae�'����H�E��E�HGAe������H�EE���EAeEAe�� ��F���L�!�"Ae�AeHGH:�$Ae�%�&�'Ae@&�(A@&�)@&�<�+�:�,�1�-��.az�/H @�0H Ae�2�3@&Ba��4�5��6�8��7���9����;�<�'Ae�=H �6�>A�?A@&�A�|�B�s�C�K�DAe�EBa�F@&�G�IH:�HH�Ae�JAAe@�L�`�M�T�N�P�O@&@A�Q�RAAe�S@@Ae�U�[�V�X�WAeE@�Y�Z��HGAeA�\�^A�]BaAeA�_H:E��a�l�b�g�c�eH��d@EBa�fF�A�h�jH �iAeBa�kAAAe�m�r�n�pAe�oAAe���q��@&��Ae�t�vAe�uF�A�w�x@���y�z�{F�@&Ez@&�}Ŋ�~ʼn�Ńŀ@&ŁAeł����Ae��ńŅņ��|�Ň��Aeň@��Ae@&ŋAeŌAe@AeŎ�ŏ�Ő��őſŒũœŦŔşŕřŖŘŗAAF�A@&ŚŝśŜgQv�v�t�ŞH A��@&ŠšŤŢţAAe@&��ťHGH:ŧ@&AeŨF���ŪŷūŲŬůŭBaŮBaAeBa|�ŰűBaAeAųŴ@&BaH:ŵŶF�AeH:ŸŽŹź�HGŻt�H:żs�H:EžAE��AE���HGA@&�������Ae���������6��Ez��AAAe��������A��B�AA��AE������AAeAH:��H:����H:s�H:������������������G�EAe����B���F��������AeE���AeH�������������H�BaH:Ae����H��F�Ae����������F�BaEEAeEz���EAe��E���E@&�@&�Ae��Ae���AAe@&A��F�@&��A���@���@&�H:�	�
��AA�����
���EAA@@�Ae@��Ae��@&Ae�@&Ae��)��"��@&���@Ae��Ae�H � �!ABaBa��#�%E�${Ae�&�(Ae�'Ae��AeF��*�7�+�1�,�.�-AABa�/�0@EAeE�2�4���3AAe�5�6��
n@A�8�<@�9�:�;ABaBaAe�=�>Ae@�?�@B�@@B�Ae�BAe�CAe�D�E��Ae@&�G@&�H�z�I�M�J���KAe�LF�AeH:�N�e�O�Z�P�U�Q�SA�RAeH:�T�'H:A�V�X�WAEA�YAA@�[�`�\�^�]��H:Ae�_HG��HG�a�c�bE�A@��dAe@�f�r�g�n�h�k�i�j��AAe@�l�m��Ae��E��o�pA��A�q@A�s�w�t�uAeA�vAAeBaE�xA�y@A�{ƥ�|ƕ�}ƈ�~ƃ�ƁƀAeAeAAeƂAeAƄƆƅAeA@��Ƈ��@ƉƏƊƌƋAe@AeƍƎAeA@AƐƓƑƒAe@@AeƔAAeAƖƞƗƛEƘƙƚBaE�Ae��ƜAƝA��AƟƣƠƢơAeAAeAe@ƤAeAAeƦƴƧƩAeƨ@F�ƪƯƫƬA@ƭƮ@A@AeưƲ��Ʊ@AƳAA@ƵƿƶƼƷƹƸA@&Aƺƻ@Ae@AƽAAeƾ@A���@�Ae��AAe����Ae��AeA������@���K@&�����:�����E�����������Ae��Ae��������������������Ez��AAe��Ae�Ae����Ae��Ae@������A����������E���@E���E�A����A��A����A���������������@��H:E�H:�����������Ba���AeH:����@�A@&��@&A@E�����A@@@&�A@&A��	�����@E�AeEA@�6�
�%��$���
�������F���A�EA������@��BaAA@������@@&@&A�AABa� �"A�!A@�#F�A��@&���&�3�'�.�(�+�)G�F��*�F�G��,�-F�F�G��/�2F��0�1Gt�;GtGtF�F��4F��5�6�8F��7���9F���F��;@&�<�D�=@&�>E��?�@AeBa���A���B���C����E�G��FM
_�H�I�@&��JH:A�Lǻ@&�M@&�N�Oǁ�P�a�Q�Y�RF����S�T�V�UAe��E�W�XAAeAAe�Z�_�[@�\�^@�]��@@�����`��@�b�r�c�i�d���e�g���f@���h@@���j�o�k�m@�l@���n��@���p��@�q@���s�z�t�w�u���v@F������x���yBa@�{ǀ�|��}�~@��s�����@@��ǂǛǃǎDŽNJDžLjdžLJ��F�@��lj��A@NjǍnj@@��@��ǏǖǐǓǑ@ǒ@��@ǔ@Ǖ��@����Ǘ��ǘǙǚ��@@��ǜǨǝǡ��Ǟ��ǟǠAe@AeǢǥǣ��Ǥ��@����Ǧ@ǧ��@ǩdzǪǭ@ǫǬAe@AeǮǰ@ǯ@u�DZDz��@Ae��ǴǶ��ǵ@��Ƿǹ@Ǹaz��Ǻ����@BaE�ǽ�^Ǿ�ǿ���@&@&���@&@&��@&��@&��@&��@&����@&�@&�������U������������������������Ae�Ae������������HG��������������������@��������@������@����F�������F�F�G���F�F���F���F���F���F�����F�F�����F�G�F��������������������@������@az����F���@���@����Ae��@���@�����@��
���@���	@az��@��
@���@����@��@����2��#�������@���@���@@���@@����!@�� ��@�����"@���$�*�%�'�&@H:���(�����)��@�+�/�,�-@���.��Ae���0@�1@@���3�G�4�=�5�9���6�7�8@��@���:�<@�;��@��@�>�D�?�B�@�A@��@���C����@�E�F@����@�H�Q�I�N�J�L���KA���M����@�O@�P@@���R��@�S���T��@�VȚ�W�p�X�b���Y�Z�_�[�]�\@@�����^@���`@@�a��@�c�h���d�e�f����g�@���i�l���j��k��@�m���n�o��@Ae@�qȄ�r�{�s�u�t����@�v�y�w�x��@E��@�z��@�|����}�~H�Ae@ȀȂȁ@��@ȃ@@��ȅȍȆȋȇȉ��Ȉ@����Ȋ@{
Ȍ�����ȎȕȏȒȐȑ@����@ȓȔ@����@ȖȘȗ�����@ș@��țȾȜȪȝȦȞȣȟȡȠ@@��Ȣ@@HGȤ����ȥ��@��ȧȨ@ȩ@F�@ȫȸȬȲȭȰȮȯ��@@��@ȱ���ȳȶȴȵ��@��@ȷ@@@&ȹ@Ⱥȼ@Ȼ@��@Ƚ@��ȿ������������@����@����@����Ae���������@��@��@������������������@@�6��������@����������@E��@@��@����H ������A������H:��AAH:@A��A��������A����AA��@Ae��������AeA��AAeAA����AAAe�������A@Ae��A�A@E�E
��A�EAH:��y�����+��
�E�E�@��	Ae�A�EAE�
��E��EA��*��$����@�@�H:A���H:AH:��AH:H:A����A@H:�AH:� �"H:�!@A�#AAH:�%��&�)�'AeH:�(AAeH:HGH:F��,�5�-E�.E�/E�0�1EAe�2�4A�3EAAAe�6�A�7Ba�8�=�9���:�<�;AA@@@&�>A�?EAe�@H HG�B�H�C@&�D�G�EA�FAeAAeAE�IA�Jɭ�Kɘ�L�nH:�M�N�`�O�X�P�U�Q�S�RH:�FH:�T�F�FH:�VH:�WH:�FH:�Y�\H:�Z�[H:�FH:H:�]�^�_�FH:�FH:�a�e�bH:�cH:�F�dH:�F�f�k�g�i�hH:�FH:H:�j�FH:�lH:H:�mH:�F�oɈ�p��q�x�r�u�sH:H:�t�FH:H:�vH:�wH:�F�y�|�zH:�{H:�FH:�}H:H:�~H:�FɀɄɁH:ɂH:ɃH:�FH:H:ɅɆH:ɇH:�FH:ɉɏɊɎɋH:ɌH:�FɍH:�F�FH:ɐɒ�FɑH:�Fɓɖɔɕ�FH:�FH:ɗH:�FH:əɨɚɥɛɟɜH:ɝH:ɞH:H:�FɠɢH:ɡ�FH:ɣH:ɤ�FH:�FH:ɦɧH:�FH:H:ɩɪH:ɫH:ɬH:�FH:ɮ��ɯɿɰɸɱH:ɲɵH:ɳɴ�FH:�FH:ɶH:ɷ�FH:ɹɾɺɼɻ�FH:�F�Fɽ�FH:�FH:����H:��H:��H:�����FH:H:�F��H:��H:����H:��H:�FH:��H:�F��H:������H:��H:H:�F��H:��H:��H:�FH:���>�������@&����������F���F����F���������F���F�����F���F���������F���@&F�@&��F�@&��@&����F�@&@&F������@&��@&�����@&�@&F�@&�F�@&�@&F�@&�� ����F��@&��F�@&F���F���@&@&F���	�F�F�@&�
F�@&F����
����@&@&F���@&F�F�@&��@&F���@&F�@&F������@&F�@&@&�F�@&��@&F��!�0�"�(F��#�$�&F��%@&F��'@&@&F��)�,F��*@&�+@&F��-�/@&�.@&F�F�@&�1F��2�8�3�5@&�4F�@&�6�7F�@&@&F��9�<�:�;@&F��@&F��=@&F��?�^�@�I�A�H�B@&�CB�D�FAe�EAe@b��GgCb�BaE��J�V�K�P�L�O�M@&��NAeE�A�Q�S�RAeAeH:�T���UEaz�W�Z�X�Y@&Ez@&H��[�]��\��'EH:�_�i�`��aA�b�d�cAeAe!9�e�gAe�f
�~�hAe����j�s�k�n�9�l�mH:�9H:�o�p��9�qH:H:�r�9H:�t�x�uH:�v���wH:HG,>@&��z���{ʣ�|ʓ�}ʃ�~�BaABaʀʁʂABaE��ʄʌʅ�'ʆʉʇBaBaʈ@AʊAeBaʋAAeʍʑʎ�ʏ@ʐAeBaAʒH:�AeʔBaʕAeʖʠʗʜʘʚʙBaBaAAʛAeBaʝʟʞBaBaH�Ba@ʡAeʢ@BaAʤʲʥʱʦH:ʧAʨʬʩʫAʪAAe@Eʭʮ@Eʯʰ@&AeH:AH:AeʳH:ʴ��ʵ�ʶEzʷEzʸAeH:ʹ@&ʺʻ@&@&ʼ@&ʽʾ@&@&ʿ�@&����~����AeAe�Ae���'��@�@&H:����������������@���������A��AEAE��A������A��AC�A��A��AC�A����Ez�������������Ae��Ae���A�Ae��E����@��A��AA��AC����
���������@&Ae@&�'�����'���'�'���'����'�'���'�'��'���'��'@�'���������A���Ae�AeH������'AeA�E�	Ae�
��AeHGAE��'���
_�����AA@@H:@&�@�H�E��������E��H �E�� �#�!�"�Ae����$�&��%�@&�HG�(Ba�)�W�*�I�+�;�,�-H:�FH:�.�/�4H:�0H:�1�2H:H:�3OH:H:�5�6H:H:�7O�8�9H:H:�:OH:�<H:H:�=�>�E�?H:H:�@�AH:�BH:�CH:�DH:OH:�FH:H:�G�HH:H:O�J�L�KH:�FH:�M�NO�9�9�O�PH:�QH:H:�R�SH:�TH:H:�U�VH:�FH:�X�[H:�YH:�ZH:�FH:�\H:�]�FH:�_̰�`�>�a��@&�b�c˗�d�~�e�j�f�����g���h���i��@�k�t�l�q�m�o�n��AeHG�p����@�r@�s@@���u�z�v�x���w��@�y@@E�{�|@��@�}��@�ˉˀ˂��ˁ��@˃ˆ˄@��˅��Aeˇ��dˈ@��ˊˎ��ˋˌ@@ˍ��@ˏ˒ː����ˑ�
��˓˕��˔@��˖��@��˘˸˙˦˚˟��˛˜˝��@��˞@��ˠ��ˡˣˢ@��@ˤ˥��@��@˧ˬ˨˪��˩��@˫����@˭˲ˮ˰˯@�a����˱@��˳˵@˴M��˶˷@����@˹�˺��˻˾��˼˽����@��˿�����@@������������@H:�����-��������������@������@���~��@E���������@������@���~������������@��@����������@@��@����������@��������@��@��������@����@����������@�������������������@����@����������@�@@E�����@���@�����@�@���@����������1�@�	��
�@����@���
Ae@����[�@��@��@��!�������Ae�@�������@���������� ��@��@���"�#�)�$�'�%�&��@Ez@�(��@��@�*�+�,��`��@�.�7�/�6�0�3�1��2@&�~@&@&�4@&�5���~��8�:H:�9Ae���;��<F��=���?̣�@�~�A�_�BF��C�G�D@&�E��FBa�~E�H�U�I�O�J�M�K�L�'AAH:Ae�N@&H��P�R�QH:�Ae�S�TEAeAeA�V�[�W�Y��X�F��ZAe�E�\�]E��^EAeEz�`�}�a�|�b�o�c�j�d�g�e�fEAeE��h�i��EAe�k�m�l�H:���nAeA�p�v�q�s�r�H:Ae�t�uEEzE@&�w�z�x�y��E@&���{Ae���HG@&H:�~�̆̀̄́Aê@&̃E�~EE̅E@&̡̠̇̈̉̓̊̏̋̍H:̌H:�̎E�H:H:̐̑̒A�EA̟̔̕H:|�̖̗|�̘|�̙|�̚|�̛|�|�̜̝|�̞|�@|�H:�����̢�Ae@&Ę̤̥H:̦F�̧��@&̩̯̪̮̫Ae̬̭�'H�@&Ba��6@&H ̱�8̲��̳��̴�̵̶̷̹̿@&̸H:|����̺��̻̼̾̽EEH�AeN�E@&Ez��EF����@������HG�HGBa������A������|�AAH:@&A�������������Ae������H:��@&����A@&HGAe����|�������H:�9H:�9��H:�9H:�����Ez��������|�����E��H:AL����A@&@�������EBaE��������@&�����E��H:H:��H:�H:�H:�,���H:��������Ae�Ae���AeEAe����EAe@&AeHG�����	Ae��
AeBaH�����
����Ae�Ae���AgAE��'���mEzEz�m�'�Ae@&������@&H:�@&��"�� �!E��A�#�.�$�*�%�'�&Ae��Ae�(�)EAe�E�+�,H:@&�-H�A@�/�3�0�2�1AeAAeEAe�4�6�5H EH:H��7�'��9͠�:�P�;�I�<�B�=�?�>@&�RHG@&�@A�AEzE�C�GAe�D�EAeAe�FAe��HAAH��J�N�K@&�LA�MA@A�OH:BaE�Q�x�R�Y�S�'�T@&�U�X�VAe�W��@@&EAe�Z�b�[�^�\�]HGAAeA�_�a�`H:
�AAe�c�n�d�i�e�g�f��H:��hEH:�j�k��<�l�mEAeHGH:�o�s�p�q�'���rAeAeE�t�vE�uAeA��w�AF��y�z͇�{g4�+�|�+�}�+�~��+̀�+�+́͂�+̓�+̈́�+ͅ�+͆�+�+@͈͔͉�+͊�+�+͋͌�+͍�+�+͎�+͏͐�+͑�+͒�+�+͓���+�+͕�+͖͗�+͘�+͙�+�+͚�+͛�+͜�+͝͞�+͟�+�+��͡ͺͭͣͨͤ͢|�ͥ�ͦ�@ͧ@�SEͩ�ͪͫ�SAͬE�SͮͯAe@&H:ͰEͱͲͶAeͳʹ͵E��EH:Aͷ͸͹A@&AeAͻ��ͼ��ͽ��H:;ͿH:�H:H:�H:���������������F��VF������dF��Vi@������F�i@F����V���V�d�V��F���F�F����dF���EAeA����F�A�'��������F���F�F��.�~��A�����EA������� ������Ή���[���@����������H:��H:����H:��H:H:@&H:��H:��������H:@&H:H:�H:@&�����H:�H:@&H:�H:H:�H:�H:@&����H:��@&@&H:H:��@&H:@&H:��	H:�
�H:�*H:�*�
�-��$�� ���H:��@&H:H:�@&��@&�@&@&��@&�@&@&��*@&�H:��H:�*H:�*H:�!H:�"�#H:@&H:�%�)H:�&H:�'H:�(@&H:�*H:�+H:H:�,H:�*�.�7�/�3�0H:�1H:�2H:@&H:�4H:�5H:H:�6�*H:�8�<H:�9�:H:H:�;@&H:�=H:�>H:�?H:@&H:�A�I�B�G�C�C�DazA�E�FAeA�Ae�HA��J�ME�K�LHG����N�Y�OH:�PH:H:�Q�RH:�SH:�T�W�UH:H:�V�H:�XH:H:���ZF�@�\΂�]�cH:�^H:�_H:�`H:�aH:�bs��d�y�e�r�fH:H:�gH:�hH:�iH:�jH:�kH:�lH:�m�nH:�oH:�pH:�qH:H:��s�v�t�uAeEAE�w�xE@@E�zH:�{H:H:�|�}�H:�~H:�΀΁H:�H:�9΃H:΄Ae΅ΈΆ@&·�AE�@&Ία΋ΔΌΏH:΍ΎAeAe��ΐΒEΑAeF�ΓE�H:F�ΕΩΖΚΗ�'ΘAΙ�'@AΛΨΜH:H:ΝH:ΞΟH:ΠH:ΡH:΢H:H:ΣΤH:ΥH:H:ΦΧH:��H:�@&ΪήΫHGάazέBa@Aeίΰ�Ae@&@β��γθδζAε�6��~ηA�zι��κ��λ�'μ�νοAeξ��E���������E��'��Ae@&Ae��@&H:��H:����H:H:����H:H:����H:H:����H:H:���H:��@&A@&��������E��A@&@&��EzBa��H:����d��dEAe����������HG���`HG�&HG���� ���HG�`��HG��Ϣ������������������H:��H:H:��H:��s�H:��@&AeA��@&A�A�az��az�azT�az@&azAe�������EH:�6�E@�����F��	��
EzH:���
����|������Ae@&����HG���@&AE�����@&�A�ϔ�ϋ��D��!�@&� A�@&�"�7�#�1�$�'�%�&Ae��AeH:�(��A�)F��*�+F��,F��-F��.F��/F��0F�F���2�4H:�3A��5�6Ae�@@&�8�?�9�<�:�;�Ae�,�F�=�>AEEaz�@�B�AH�H�Ae�CF���Ae�E�G�FAAe��H�g�I�a�J�W�K�LH:s�H:�M�NH:�O�U�P�FH:�Q�RH:�SH:�TH:�FH:�F�V�FH:�XH:H:�Y�Z�]�[H:H:�\,>H:H:�^H:�_H:�`,>H:H:�bH:�c�dH:H:�eH:�f�,H:H:�h�i�x�j�o�k�F�lH:�mH:H:�nH:�F�pH:�qH:�rH:�sH:�tH:H:�uH:�v�wH:�FH:�yϊ�zH:�{π�|H:H:�}�~H:H:�s�H:ρχςH:H:στH:υH:H:φs�H:H:ψH:ωs�H:H:�9Aeό��ύώϐ��Ϗ@��ϑHGϒϓAAe@&ϕϜϖϚϗEzϘ�ϙ@&H:EzH:ϛ�@&EzϝϞϟEA@&Ϡazϡ��Aϣ��Ϥ��ϥ��H:ϦϧϽϨ϶ϩH:ϪϴH:ϫϬH:ϭH:ϮH:ϯH:ϰH:ϱH:ϲH:ϳH:�H:ϵH:H:ϷH:ϸϺH:ϹH:s�ϻϼH:��9H:ϾH:H:Ͽ�H:H:�H:s�F���@&��Ez��������������F����Gt����F�G�F��;AeA����H:��������A��AeA��H:������H:H:����H:���'AeEH:��H:��H:��H:��N7H:���������HG��������@A�����������AeF����������@&�����������x�d]d]x������x�y(y����ݶ�5h4y(��h4y(ݙx����@&��H�E����H:@&�@&E��
�@&��~@&�	�|���@&��
�F���F�F���F��F�F��F���F��F�F����F�GtGtF�F���F����AH�@&�A@�!Ъ�"�a�#�C�$�6�%�/�&�,�'�+�(H:H:�)H:�*H:�9�<EAe�-�.�@&H �0�4�1�3H:�2Ae@&F�Ae�5BaA��7�>�8�<�9��:az�;@&AAe�=F�Ae@&�?�AE�@HGA�BH:EAeH:�D�E�Q�F�M�GE�HE�I�J@H:�KH:H:�L�9H:Ae�NF��Oaz�P���R�U@&�S�'�TAe@&�V�^�WH:H:�XH:�Y�ZH:H:�[�\H:�]H:N7H:@&�_H:�`F�A�bЃ�c�}�d�p�e�m�f�lA�g�hA�i�jA@&Ae�kA@�@&�nHG�o@&�|��q�wH:�r�sH:�tH:H:�u�vH:H:N7H:�x�yH:�zH:�{H:�|H:�H:H:�~H:�ЀЁH:AH:ЂAeH:ЄКЅАІЍЇЋЈЊЉE�@mAe�AeЌAe@&H:Ў��ЏAe@&��БВДHGГAe�@&Е@&ЖЗAИЙF�AAeEЛТМРНEОAeПAeH:AeСEz@&AУХ�ФAe�ЦЩ�ЧШEz
�H�@&�Ы�TЬ�Э��Ю��Я��а��бквзгеH:дs�H:жs�H:H:иH:йH:s�л�монH:H:��9пH:��H:H:��H:�9��@&����A������������H:s�H:��H:s�H:��H:��H:��H:s�H:Ez��������������H:��H:��H:s�s���s���H:����H:��H:��H:��H:��H:��H:��H:�H:H:����H:H:��H:����H:��H:��H:��H:��H:��H:��H:�H:E����E��E@&H:���	���������A@����YH:�H:�N7H:��E@&����AAeEA��@&���EA�E���9H:�9�
���Ae��
HG����A���G�F�G�F���F��F�G��G�F�@&�E�H:��?��,��+�� �A�@&@Ba�!�*�"�'�#�%�$AeAeE�&Ae�A�(���)EEAeAe���A�-�/HG�.Ae@&�0�:�1@&�2�7�3�5�4�EA�6�AAe��8�9AeEAA�;Ae�<�=E�H:�>�H:�@�L�A�J�B�F�C�E�D�AAeBa��G@&�H�Ii@|�AeE�KA@&�M�R�N�Q�O@&�PE@EHGA�SAAe@&�Uу�V�l�W�c�XAe�Y�b�Z�\�[A@H��]�'�^�`�'�_�'���a�'���AeA�d�eHGH:�f�i�g�haz�Ae��E�jAe�kAeA�m�v�n�t�o�s�p��q|�@�rAeE��Ba@&�uAe��w�~�xAe��y@&�z�{H��|�}Ae|�EAe�рH:��с�тAeAф��хѮцш@чAe@&щџъіыёьюAeэ�~EяѐH:AeF�@ђѕѓєAeBaAH:BaAeїѝјћљњ�AH��F�ќ@&H:ўAH���ѠF�ѡF�ѢF�ѣF�ѤF�ѥѬѦѩѧ�Ѩ��F�Ѫ�ѫ�F���ѭ�F�ѯѸ@&Ѱѱ@&ѲѵEѳ�ѴBaEzBaѶEѷEٰ@&ѹH:ѺѻBaBaѼBaѽѾBaBaѿBa��BaBa����Ba��BaBa����Ba����������@&������F��;F�GtF�������F�F���F�����F���F�����������������������F�F���F�����F�F�����F������@&�����@&HG��A����@@&����E��������A���A����A��AA��A����AA���A�A�A�AA�A��A�A�AA��A�A�A�AA�C�AA�A�A��A�	AA�
�A�A�
A�AA�A�A�A��AA��AA�C�AA���DA���/��%��#��!�� A�E@&�"@&ABaA�$H:A�&@&�'�.�(Ez�)@&�*�,�+Ba@l��-EAHG�@&�0�8�1�3�R�2EHGH:�4A�5�6�7s�AAH �9�B�:�@�;�>�<
_��=
_��?
_
_�H:�A�@&H:�C��'�E�y�F�_�G�N�H�M�I�L@&�JA�KAH:|�@&Ae���O�PHG��Q�\�R@&�S�W�T��U�VAeHGEAe�X�ZBa�YAe��[AeH���$�]Ae�^EzHG�`�v�a�cAe�bAe@&�d�l��e�f�h��gBaAe�i�j��H:�k�EAe�mA�n�pAe�o�HG�q�sAe�rEN�t�u�A��@�wH:�'�xAeA�z���{҇�|��}�~F�@&HGH:Ҁ҂H ҁ���6҃҆Ae҄Ae҅Ae��E��҈���҉Ҋ��ҋҮҌҙҍH:ҎҖҏҒҐ��ґ�H:ғ�Ҕ��ҕH:�җH:�Ҙ�H:ҚҦқңҜҠH:ҝH:ҞH:ҟ�H:ҡH:ҢH:H:�ҤH:ҥH:�H:H:ҧҨҪ�ҩH:�ҫ�Ҭ��ҭ�H:ү��Ұҵ�ұҲ�H:ҳҴH:�H:Ҷ��ҷҸҹH:�Һһ�H:�ҼH:ҽH:ҾH:ҿH:�����������H:��������H:���������H:���H:����H:����H:H:���FH:������H:��H:H:��H:��H:���H:��H:H:����H:�H:H:��H:��H:��H:��H:��������H:H:����H:H:�H:����H:H:��H:���@&��H:�������������AA����A��A�A���@&��H:��H:H:����H:�H:�H:s��s�H:�H:H:�s�H:����H:�H:�H:��	H:H:�
�H:H:�H:�
�H:�H:�H:�H:���H:�H:H:�H:N*�A��A��@&@H:�AA��A�A@Ae�!�~�"ը�#Բ�$�@�%ӟ�&�p�'�N�(�:�)�/�*HG�+�.�,
_�-
_�
_
_�
_�0�1Ae�2�6�3�5!9�4F�H:E�Ae�7�9H:�8AeElxE�;�M�<F��=H:�>H:�?H:H:�@�AH:�B�FH:�C�DH:s��EH:s��G�J�HH:s��Is�H:�KH:�LH:s�H:F�H:�O�PBaAe�Q�TAe�REz�S@&��U�b�V�Y�W�X�EEBa�Z�_�[�]�\EAEE�^AeE�`HG��aAeE�c�i�d�e��S��f�g�h|�AeHGE�j�l�kAeEaz�~�m�n�oAe��@&Ae�qӑ�r�}�sH:A�t�u�z�v�yAe�wH��x@AEAe�{�|Ae�F�@&�~ӄ�H:ӀH:ӁH:H:ӂӃH:H:N7ӅAӆӊAeӇӈAeAeӉAeazӋӎAeӌAeӍ�,AeӏAeӐAeAeBӒӛӓӘӔӗӕӖ�6@&AE�H:AәEH:Ӛ|�AeӜӝE
_Ӟ�6@&AӠӳH ӡӢӱӣӧӤӦӥE��H:AEӨӰөӫ@ӪE@ӬӭEz��Ӯ@ӯAeN�AeEz@&BaӲF�H Ӵ��ӵ��ӶH:ӷӺӸӹ��H�B��ӻӼ��ӽӿӾAe��Ae��E��H�Ae��H:���AE��������AEE��E��E����EE��E����EE��E��E����EE��E
���AeEA�������������������������@&@&���@&�@&@&��@&��@&���@&@&����@&@&�@&����@&����@&���@&�@&@&�����������@&��@&@&��@&�@&@&�@&�@&��@&@&��N�@&��@&�@&N�@&��,������!���������	��
������
�������������������������������������� ����"��#���$�%���&��'��(�)��*��+��Nj��-�.��/�2��0��1N����3��4�5��6�9��7��8���:���;��<��=�>��?����AԈ�B�o�C�\�D�U�E�L�F�K�GF�F��HF��IF��J�F�AeA�M�T�N�Q�O�P@E@az�R�S@E�@AeE��V�WE�F��X�Y@&AA�Z��[AAe�]�a�^�_�@&Ae�`AeHG�b�e��cAe�d�S@&�f�gAeE�h�n�iE�j�l�kE���E�m�A��E�p�v�q�tAe�r�sEAe@&HG�uAe��wԆ�xAe�yAe�zAe�{Ae�|Ae�}AeAe�~Ae�AeԀԁAeԂAeԃAeԄAeAeԅAeB�AeԇBaAeԉԘԊԓԋԍԌH:@&EԎԒԏH ԐAEԑEA@&H:EԔԕԖEAԗ�'@&AeԙԣԚԟԛEԜAeԝAԞ@&@EԠԢԡ�'Ae�'Ba@&ԤԱԥԬԦԪԧAԨ@&ԩA@@&AԫAeA@&ԭԮ�'ԯ԰EAAH�Ba@&Գ�JԴ�Ե��Զ��EԷԸԻ�YԹAeԺAe�Լ@&ԽH Ծ��s�Կ����P�f������H ��H ��H �@&���������������������Ae����Ae@&AeEzi��������A�������AA��AAe���������AEAAeH:������
��������@&����@&@&��@&��@&��@&����@&��@&@&���@&@&��@&����@&��@&@&�*��������@&��@&@&��@&�@&@&��@&�@&Nj@&@&�@&�@&�@&�@&�@&��@&�@&@&�@&��@&@&��@&�	@&@&NjEAe���
�'AeA���@&��'�����A��A��EE�E��Ae�F�Ba��EH Ae@&��$� �#�!A@&�"@&Ba�Ba�%�&�AEA�(�;�)�6�*�5�+�2�,A�-�.|�E|��/�0�1@&�*�@&A�3@&�4AAe����7�9��8�E��:AAF��<�G�=�F�>�A�?�S�@�ABa�BH �CBa�DAe�EHGAeA
_@&�HEzA�IH�Ba�K�~�L�o�M�_�N�Z�O�Y�P���Q�R���S��T�U���V�W���X��@&�[�]��\�A�^��@&�`�k�a�h�b�g�c��dH:A�eH �fF�AEA�iH:Ae�j��H:�l�m�H �n�H Ae�p�v�q�r�Ae�s�u���tE�H �'��w�xH:��yAe�z�{�|EAe�}H:Ae���ՖF�ՀՁՃ@&ՂE@&ՄՕF�ՅF�ՆՇՓՈՒՉAeՊEzՋEzՌEzEzՍEzՎՏEzՐEzՑEzEzV�AeEzEzՔEzF�A@&՗զ�՘ՙ՛՚A�E�Ae՜@&՝՞բ՟H�ՠաF�AeAAeգդH�EեAe�Ae�էAeEթ�zժ��ի�,լ��խ�ծնկձ�հ���H ղAeճ��մF�յH�AeշF�ոտչռպջF�E�AսվE��H:AEA�����AeAeF���@&H:��@�������������Ez���N������@&������F�Ae��AeA��Ba����AeA��@&������������F�G�i@����GtG�G�F���F���F�G�Gt����@&��HG������H:E�E���*���'��F���M�������
��[������M���M�������M�#�M�#�����������#����#��������M�����������M��hM�P�������#��������	����
M�#��#��M�[�P��#����������#��ez�����ez#�����#����M��M��M��M���$� �!��#����"#��#����%M��&�(���'ez���)M���M��+HGE�@&�-�m�.�<�/�7�0�6�1EA�2Ae�3�4��E�5AeH:@&A�8�9EHG�:@&b��;���=�Z�>�CEz�?��@@&�AE��BHGE�D�I�E���FazAe�G�H��N����J�N�K�Lazt�t��Maz��@&�OH:�PB��Q�RB��SB��TB��UB��VB�B��WB��XB��YB�e1�[�]H �\@&A�^�_�A�`�d�'�a�'�b�'�c�'A�e�j�f�hA�g�'A�i�'�'A�kA�'�l�'A�n�xF��o�p�wF��q�'�r��s�tHG�u�vE@&B�Ae�~A�y֮�z֕�{։�|ցF��}�~րF��F�GtF��ւֆF�փքօF���F�GtF�ևF�ֈF�G��֊֋֐֌֍�F�֎֏F�GtGtF�֑֔֒֓G�F�GF�GtG�֖֥֛֗F�֘֙F�F�֚�G֜֡֝֟֞F�F�Gt֠F�F�G�F�֢֣֤F�GtGtF�֦F�֧֪֬֨F�֩F�G֫F�GtF�F�֭F�Gt֯��ְ���ֱֲֳֵַF�ִGtF�ֶF�F�GtF�ָֹֺGtF�F�ֻּF�F�ֽF�־F�ֿ�F�F���F���F���F���F���F�GGt������E��������������*����.����������Ae������Ez������AEE��F���EH:��������F���F�B������F�BF�F�B������F���F���.F�������F��8F��8�����AA������E@��EH:����H:��H:��H:H:�H:��H:H:�H:�H:s���H �H:@&������H:�AeEz@&Ae��@&�H �Ae@&����	��
���
H:��SEz���6�g4Gt@&Ba��A���@&�A���E|li@&A�����Ez���@&Ae@&� �!@&Ae�"�$Ez�#H:A�%�,@&�&�'�*�(�)A�azA��+AeE��-E�@�/�R�0�=�1�;�2�:�3F��4�8�5AeA�6H��7AeA�9@&Ba|�@&Ae�<F�AeF��>�O�?�J�@H �A�F�BAA�C�D�E@@&AHG��G�Haz�Iazazu���K@&�L�M�NAaz�EAe�P�QAAeBa�S�v�T�h�U�\�V�[�WH �XH:���Y�Z��H EAe@&�]�cA�^�_�b�`���a��Ae��E�EAe�d���e�fA�gEEH:�i�u�j�r�k�nH:�l�mH:NNH:H:�oH:�pH:�qH:�'���s�t�����@&Ae���w�xHG�y����@&�{�A�|׾�}ר�~׈�׆׀Baׁ@&ׂ@&׃ׄEEz@&ׅEzAeBaׇF�A׉׎׊@&H:׋׌@&@&׍
�EE׏אEבAeגןדוה��*��ז�ח�ט�י�ךכ�ל��ם�מ�*�נצס�ע�ף��פ�ץ��*�ק��ש׮תH Ez׫׬׭Ez@&@&|�ׯײװױ�6@&EEz׳׼״׺׵׷Ae׶���׸׹AeE�H:EA׻E��@&׽@&A׿��������������@&���@&����A��H:@&��Ae@&��A�6����������Ae��������H:�A������kXH:A����F������F�������F�i@i@F�@&A������������az����H:�����H:H:az����H:����H:�aH:��H:��H:H:NH:��������H:��H:H:AH:����H:ymH:���H:H:�H:��H:t�H:H:�H:��H:H:az������Ba�A���az���v��v��v�v��	v��
v���v��
v��v��v��v��v�v�����Ae�AH:�Ba����HG@&�Ae�@&��+���||B� |�!|�"|�#�%�$||���&|�'||�(�)���*|��|�,�:�-|�.|�/|�0|�1�9�2�6|��3|��4|��5B|��7|�8|B|B|�;|�<|�=|�>|�?|�@|��|Ez�B�C�REz�D�E�HA�F�GH:AeA�I�Q�J�O�K@&�LGt�MF��NF�E�F����P@&A@&E�S�aEz�T�UEz�VEzEz�W�XEzEz�YEz�ZEz�[�\EzEz�]Ez�^�_EzEz�`Ez�:�bE�c�l�d�i�e@&�fAe�gAe�h�AE���jAe�kH�Ae�m�p�nA�oAEA�q�}���r�s�����t���u���v�w���x�����y�z���{�����|��@@&��@&A@&؁�@؂�]؃�j؄��؅�\؆�؇�؈��؉ؼ؊آ؋؛،ؓ؍ؐ؎A؏Ae@AeؑؒW�AAe@ؔؗؕ@@ؖAAeؘAeؙؚAAe@Ae؜Ae؝؞Ae@؟ؠAeAءA@Aأدؤةإئ@AeاAeبAeB�AeتحثAeجAAeAخAeAeAذصرAزسA@Aeش@AeضعطAeظA@@غAeAeػAAeؽ��ؾ��ؿ������A��AAAe��������@AAeN�����@AeA@������������A@A@��AAAe��Ae����AAe@Ae����@Ae��Ae��@����@AAe@Ae����Ae��Ae��Ae��@A@��������Ae����������A@��@Ae��Ae����N�B�B�Ae������������Ae@AcWAeF����AAe�Ae�Ae@���������AAeAAeA@�A@Ae��@@�A@�@���	A�
A@AAe��
AeA@Ae�Ae�Ae�Ae�Ae���AeAA@��P��$Ae��� �AeA��Ae��@A@AeAe�!A�"Ae�#AeA�%�;�&�6�'�-�(�*�)AeAe�Ae�+�,@A@�.�4�/�1�0AeAe@�2�3@AeA@A�5AAe�7�8AAe�9Ae@�:AAe�<�G�=�A�>@Ae�?A�@azAe�BAe�C�F�D�EAeAAe@AeA�HAe�I�N�J�L�KAAe@�MAeAeAAe�OA@�Q�kAe�R�S�`�T�]�U�XAe�V�WAeAAe�Y�[A�Z@A�\AeAe@A�^�_@Ez��a�f�b�cAAe�dAe�e@@AA�g�hAe�i�jA@AeA�lAe�m�{�nAe�o�u�p�rAe�qAe@�s�t�'Ae@A�v�y�w�x@AeAeA@�zAeA�|Ae�}AeAe�~@Aeـ�ف٭AeقكٟلُمينAeهوazmAىA@ًَAeٌAeٍ@AA@ِّْٕٗAeٓٔBaAeAe@AeٖAeA٘ٛAeٙٚAeAAeٜAeٝٞ@AeA�٠٧١٥Ae٢Ae٣٤@AeA٦AeAAe٨Ae٩Ae٪٬Ae٫AeAAeAٮ��ٯ��ٰ��ٱٻٲٶٳٴAe@AٵAeAٷٹAٸAeAٺaz@Aeټ��ٽٿAeپAe@��@AAAe������@@Ae��@��@����Ae��Ae����AAAe������AAe@����AAeA��@Ae������AeAe��@����@AeHGAe������������AAe@@��AAe������@AAeAe��@Ae���Ae������Ae��@����@A@����Ae��A��A@��������L�AA@A�A@�����Ae�@Ae�AeA����@Ae@A�AeAeAAe���Ae��AeH:@@Ae�	�1Ae�
��!�Ae�
�����@�azA��@AeAe@���AAAe��@AeAAe��Ae��AAe��� @A@A�"�%Ae�#�$Ae�'AeA�&�'�-�(�+�)�*@Ae@AeAe�,��@�.�/AAeAe�0@AeAe�2�3�M�4�F�5�;�6�9�7Ae�8AeAeA�:Ae@A�<�@�=�?@�>@AAeA�A�D�B�C@Ae@Ae@�EAAe�GAeH:�H�I�L�J�K@AeAe�Ae|�N�Y�O@�P�T�Q�RA@@�SAe@�U�W�V@A@@�X@Ae�Z@Ae�[@Ae�]ې�^��_ڻ�`ڏ�a�o�bAe�c�k�d�h�eAe�f�gA@Ae@�iAe�jAeAAe�lH:Ae�m@�nAeA�pڀ�q�v�rAe@�s�t�uAe@AAe�w�{�x�z@�yA@@A�|�~@�}AeAAe�@AeځچMڂڃڄ@AeڅA@Eڇڌڈڋډڊ@Ae@AEAe@ڍAeڎ@H�ڐڢAeڑڒڝړژڔږAeڕ@AeڗA@Aeڙڛښ@AeAڜ@H�AAeڞڟڡڠAA@AeAڣ@ڤڱڥګڦکڧڨA@@AeڪAAeAڬگڭڮAeE@Aڰ�H:@ڲڵڳAڴAAeAڶڸڷ@@AڹںAAeAe@ڼ��ڽ��Aeھڿ���B�����AeAAeAAeAe��������Ae@A@��AeA������@����������AeAeA@A��������AAeAeAAF���Ae����A��A��Ae@����@Ae����AAe@Ae��������Ae������Ae��Ae��wAeAe������Ae@A@Ae����������@&���@&�����Ae��@Ae�Ae���Ae�@Ae�Ae@���@��~@Ae�Ae���Ae@��3�Ae������
�Ae�AeAe�	@AeEzAe���
Ae�AeAe�A@Ae��Ae��AAeEzAe��#��Ae���AeAAe�Ae@��@A��!� AeAAeAe�"AeA�$�,�%�(�&�'B�~F�Ae�)�+�*AeAe@@AeAe�-�.�1�/�0@AeAe@�2@H:A�4�^Ae�5�6�I�7�A�8�=�9�;�:AeAe�'Ae�<A@�>A�?�@EAeBaAe�B�E�CAAe�DAAe�F�H@�GAe@Ae@�J�Q�K�N�LA�M@az@Ae�O�PAeAeA�R�W�S�U@�TN�@�VAe@A�X�[�Y�Z@AeA@�\�]@AeA@�_ۇ�`��a�{�b�x�c�uH:�d�e�m�fs��gs��hs��is�s��j�ks�s��l�s��ns�s��o�ps�s��q�rs��ss�s��t�s��v�w�GH:�H:A�y�zAAeA�|@�}@�~@Ae@AeۀہۄۂAۃAe@AeۅAeۆAe�UAeۈAe@ۉۊۋAAeیێ@ۍAe@ۏ@Ae@ۑ�;ے�ۓ��۔۲ەۢAeۖۗ۝ۘۛۙۚA@@A�ۜ@Ae۞۠۟@A@Aeۡ@Aeۣ۬ۤۧAeۥۦAeAe@۪ۨAe۩Ae@۫@@AeۭۯAeۮAe@۰Ae۱@@A۳��۴ۻ۵Ae۶۹۷۸AeAAAeۺAAe@ۼۿAe۽Ae۾@AH:��H:H:s�������Ae������@@AeA��@A��������@��AAe����H:@AAe��@@Ae����������Ae������AeAe��AAe��Ae����AeA@Ae��@Ae������@Ae�Ae����������H:AeA������Ae@��@A����Ae��MA��EEzAe���������Ae@��A@�Ae@Ae��AAe�@�AeAe�\������Ae����Ae��Ae@A@�@�@A@�@�	��
�
��e�Ae@AeAe�Ae@����EAe@AeA@�Ae��Ae���@AeAe@H:��AAAe��*Ae�� @�!�&�"�$�#�@AeAe�%Ae@E�'�(�)AeAAe@�+�.Ae�,Ae�-Ae@�/Ae�0�6�1�3A�2AeA�4�5@AeAe@�7�9�8@@A�:@Ae@�<ܢ�=�n�>�[�?�IAe�@�A�F�B�D@�C�@�E@��@A�G�H@Ae@�J�O�KAe�LAe�M�NEA@Ae�P�T�Q�RAe@Ae�SAe@�U�X�V�WA@@Ae�Y�ZAeAA@Ae�\�]�h�^�aAe�_@�`@Ae�b�e�c�dAAeH:@�f�gAe@@Ae�i�m�j�k@AAe�lA@@Ae�o܄�p�s�qAe�rAeAew��t�{�uAe�v�xAe�wA@�y�z@AeH:@�|܂�}��~@�@܀܁Ae@@�H:܃H:�܅ܘ܆ܑ܇܍܈܊܉AAH:܋܌@Ae@Ae܎Ae܏ܐ@Ae@AeܒAeܓܕܔAeAe@ܖܗN�AeA@ܙܝܚAeAeܛAeܜAeAܞ@Aeܟܠܡ@AeA@ܣ��ܤܪܥAeAܦܧ@@ܨAܩA@ܫܹܬܰܭAeܮAeAeܯ@AeܱܴAeܲAeܳAeAܵܶA@ܷܸAe@@Aeܺ�AeܻܼܾܽAeAeAܿ�@Ae@azA����AeB���Ae@����������������������A@Ae@Ae����@��@Ae����@AeAe@����Ae������@AH A��A@��Aeaz��AeAe��Ae��Ae��A@Ae��������A��Ae@��AeA��������AAe����Ae@AAe������@@|@��Ae@�������������P���Ae����Ae�����@AeA@A@A��AeAe�@A���Ae��Ae��'@�	�
Ae@AAe���
��A@AAe@��Ae�A@Ae�@A��3���@�AeAe���AeA@Ae��-��&� �#�!�"@AAAe�$�%AeE@Ae�'�*�(�)Ae@Ae@�+�,@Ae@Ae�.�0�/AeAe@�1@�2A@Ae�4�;�5�:�6�7@AeAe�8�9AeAe@Ae@�<�I�=�C�>�A�?�@@Ae@Ae�BAeAAe�D�FAe�EAe@�G�HAe@AH:�J@�K�N�L�MAAe@Ae�OAe@A�Qݧ�R݃�S�m�T�a�U�\�V�Y�W�X@AeA@�Z�[Ae@@Ae�]�_�^AeAe@�`@HG@�b�h�c�eAe�dA@�f�gAe�@�6�i�j@Ae�k�lAAe@E�n�|�oAe�p�zAe�q�rAe�sAe�tAe�uAeAe�vAe�w�xAeAe�y
�AeAe�{@A�}݀@�~�Ae@&@݁Ae݂AeA@݄ݛ݅ݎ݆݌݈݇݊݉@�Ae@@݋Ae@ݍAeAeAݏݖݐݓݑݒm��w8t�ݔݕ������ݗݘA@ݙݚ@Ae@AeݜݝAe@ݞݡݟݠAe@Ae@ݢݥݣݤAe
nAeaz@ݦe�@ݨ��ݩݳݪݮ@ݫݬAeݭAeA@AeݯݰAeݱݲ@AeAe@ݴݹݵAeݶݷ@AeݸAeAAeݺݽݻF�@ݼ@Aeݾ�Aeݿ@A�A@&@����������Ae��@����@AeE@��Ae@Ae����������������@AeE�@@��AeA������Ae@A����Aeli@Ae�����\��e1��Ae@����A��@AeAe��AeA���_���)������������������AeA����A@@A��Ae@��@Ae�������Ae��@AeAe�@Ae��@�E@��Ae@AeA���@���AeAe@��@AAe�����A�H:E�	�
A@B�@���
�Ae@Ae��Ae�@Ae����Ae�AAe����A@@�@AAe�@�Ae@�Ae��#� �"Ae�!�@A@�$�'�%�&@AAeAAe�(A@�*�G�+�>�,�5�-�2�.�1�/�0@A@AA@�3@�4@@E�6�;�7�9�8AeA@@�:@H:�<@�=Ae@A�?�C�@Ae�AAe�BAeAe@�DAe�EAe�FAew����H�U�I�N�JAeAe�K�L�MAe@@A�OAe�P�S�Q�RAAe@AAe�T@A�V�Z�WAeAe�X@�Y@Ae�[Ae�\�^�]AeAe@Ae@�`ޤ�aދ�b�y�c�n�d�j�e�h�f�gAeAAeE�i@��@�k�l�mAe@@Ae�o�s�p�rAe�qA@@Ae�t�w�u�vAAeAe@@�xA@�zށA�{�|��}�~@A@AeAހA@ނއރޅބ@@Aeކ@H:@ވފ@މAAeA@ތޚލAeގޕޏޒސޑA@Ae@ޓޔA@Ae@ޖޙޗޘAAe@Ae@AeޛAeޜޠAeޝޞޟ@AAe@ޡޢ@Ae@ޣAeAޥ��ަ޻ާްިޮީެުޫAe@AeAޭAeAeA@ޯAe@ޱ޸޲޵޳޴AAeAeA޶޷@AAe@@޹޺AeAAe޼޾޽@Ae@޿Ae�@�AA@����Ae������������@AAe@AeAe��H:��Ae@��������AeA��@����AeAAe@������Ae@��AAe����A��@AeAe��AeA��ߡ���D���%�������@��������Ae��AeAeA@Ae����Ae������A��@Ae��@AAe������Ae��AeAAe�����@Ae@��AeAAeEz���������@AeAAe�Ae@����Ae@��^@Ae��
��	�@@AeAAe��
�@@A@�Ae@�����Ae��Ae@Ae@���AAeF��H:�� ����@wAeA�AHGA�!�#@�"A@�$A@Ae�&�1�'Ae�(�,�)AAe�*@�+@A�-H:@�.�/�0Ae@A@Ae�2�3�=�4�8�5�6@AeAe�7A@�9�;�:@A@�<AeA@�>Ae�?�B�@�AAe��wazAe�C@Ae�Eߊ�F�l�G�]�H�V�I�O�J�LA�KA@�M�N{
Ae@E�P�S�Q�RAAeA@�T�UAe@@Ae�W��X�[�Y�Z@AeA@Ae�\H:@�^Ae�_�f�`�c�a�bAeAA@�d�e@Ae@Ae�g�i�hBaAeA�j�kA@@|�m�~�n�w�o�t�p�r�qAe@Ae�sAeAAe�uAe�v�Ae@�x�{�y@@�zAAeAe�|@�}@Ae�߄߀߁A@߂Ae߃@|@Ae߅߆߈߇@�6Ae߉@AAeߋߛߌAeߍߖߎߑAeߏ@ߐAe@ߒߓA@ߔߕF����lߗAeߘߚߙ@@A@AeߜAeߝ@AeߞAeߟ@ߠAAeߢ�ߣ��ߤ߰ߥAeAeߦߧ߫ߨߩAe@ߪAeAe@߬߮߭@AAeA߯AeA߱��߲߾߳߸ߴ߶Aeߵ@Ae߷AeA@߹߻AeߺAe@߼߽AAeA@߿��Ae����A@AeA@A����������Ae����Ae@@A����Ae��AAeAe@����Ae��@Ae��Ae@A��������������Ae����Ae��AeA��AeAe@Ae@������������@��@AAe��A@��@����@H:AAeA������@��Ae@��@Ae@����������������@AeAAe�@Ae@��Ae�Ae|��@AeAe@��Ae�@Ae���@Ae@Ae�Aee�����
Ae��	@@Ae�@@Ae�
����A@F���@AA@��@�@AeA�@Ae��s��F��/��'��#�� �@A@�!�"Ae@@Ae�$@�%�&Ae@@Ae�(�-�)�+Ae�*Ae@Ae�,Ae@@�.@Ae�0�:�1�4@�2Ae�3AeB��5�8�6�7@Ae@AeAe�9@A�;�B�<�?�=�>@�6H:@�@�A@Ae@Ae�C�DAe@�EAAeA�G�Z�H�R�I�L@�JAe�K@H:�M�P�N�OAeA@Ae�QAeAe@�S�W@�T�U�V@AAe@�XA@�YAe@�[�i�\�b�]�_Ae�^A@�`�aAe@@A�c�f�d�ee�Aee�A�g�h@Ae@Ae�j�o�k�m�l@A@�nAeAe@Ae�p�q�r@Ae@Ae�t��u��v��w�{�x@�y�z�]AeAAe�|�~�}AeAe@A�Ae@@Ae������B�Ae�B�B�Ae@���AAe@Ae����H:�@�A@���A@AeBaAe���������AeA@��AeAA�6@&AAe�Ae
������A�AAAe�AeAe@��@��AeazAe����@AAeAAe�@Ae�������L����������Ae�����@Ae@Ae�@@A������Ae��AAe����Ae@Ae@��F�@��AeA����������@Ae��@Ae��@Ae��@A������AeAe���������A@AAe��Ae@Ae��������������Ae@��@A����Ae��AAe���AeA��������A@A��AE����Ae��A@��@t�Ae�������Ae��Aef���������l����e�AAeA�����@AAe�@AAe���Aaz@�AeM@��0�����	��
�
��@AeAe@@Ae���@@Ae@�@Ae�����@AeAAe@��A@�Ae@A��(��$��!� AeAeA�"�#Ae@AeA�%�&@Ae�'H:Ae@�)�,@�*�+Ae@Ae�-�.@A@�/Ae@�1�D�2�=�3�8�4�6@�5Ae@@�7@A�9�<�:�;@AeA@@Ae�>�@Ae�?A@�A@�B�C@A@A@�E�F@�G�I�HAeAe@�J�KA@@az�M��N�`�O�YAe�P�Q�V�R�U�S�T@Ae@AAAeAe�W@�X@Ae�Z�_�[�\Ae@Ae�]@�^AAeA@�a�t�b�l�c�f�dH:A�e@Ae�g�i@�h@Ae�j�k@AeAe@�m�q�n�p@�oAe@Ae@�rAe@�s@A�u��v�{�w�yAe�x@A�zAeA@�|�~@�}A@�AeEAe��@�@�@w��Ae�@H:�AeW�@������������Ae@@A��Ae@AeA��@�AliAe�Ael������Ae@@A�Ae@Ae���A@A@�H:Ae������@�azAe��AAeAAe��@Ae�A@Ae�����@Ae@��A@AAe����@AeAe��@�AeA����A���������Ae@Ae@��AeA��Ae��AA@������������@Ae��Ae@A����@��AeA����A@Ae@��Ae��������B�@A@����@Ae@Ae������3���������Ae��������@��Ae@@��Ae@Ae������AAeAe@���������Ae����Ae@A@��@��AeH:Ae������@AAAe��@az@A��A@�@A@������
���Ae@A��	AAeAe@����
@Ae@Ae��A�'@Ae�����@AN���A@@Ae���AeAe@@Ae��)��$��"� �!AeAAe@�#AAe@�%�'@�&@Ae@�(Ae@�*�0�+�-Ae�,@A�.�/A@Ae@Ae�1Ae�2Ae@�4�]�5�K�6�A�7�<�8�;�9�:AeAAe@Ae@�=�?�>AeAe@@�@AeA�B�F�C�E�DAeAAeA��G�I@�HA@�JAAeH:�L�T���M�N�Q�O�PBa@AH:�R�S@A@Ae�U�X�V@�WAeAAe�Y�[�ZAeAeA�6�\Ae@�^�s�_�eAe�`�a�bAeA�c�dHG@Ae@�f�m�g�j�h�iAe@AAe�k�l@AeA@�n�q�o�p@Ae@Ae@�rA@�t��u�z�v�x�wH:AAe�y@A@�{�~�|�}A@EAeAe@�Ae����Ae@�@@Ae��������������@A@��@Ae��@�AAe@�@A������A@��Ae�AAAe��Ae@@�Ae@������@�@Ae@Ae���AeAAe��AeA@Ae��@��@AeA����Ae@cW@�AeAe@������������azAA��Ae�Ae@���AeAe@����@AeAe@����������@AeA����@Ae@Ae������AeA@Ae@������������F���Ae@Ae��AAe����Ae
�����AeA@Ae��������@Ae����AeAAe@������A@A��AeAeAAe����������������Ae��Ae@��Ae@Ae��������AAeA@��@Ae@Ae��Ae@�@Ae�������Ae@Ae��Ae@@Ae����@A@E�Ae@Ae���	Ae�
@@A���
�Ae@A@�@@Ae��<����b��>��(��@���e��A@�AeAAe��%��"� �!@AeAeK��#�$@AeAe@@�&�'@Ae@�)�4�*�.�+�-�,A@AAe@�/�2�0�1@Ae@A�3AeAAe�5�9Ae�6�7�8Ae@A@�:�<�;AeA@@�=@Ae�?�T�@�J�A�CHG�BF�Ae�D�G�E�F@AAAe�H�IA@@Ae�K�OAe�L�M�N@AeA@�P�S�Q�RA@Ae@@Ae�U�X@�V�W@�Ae�Y�]�ZAe�[�\AAe@Ae�^�`Ae�_Ae@Ae�aAe@�c��d�|�e�p�f�j�g�iBa�h@A@��k�m�l@A@�n�oAAeAeEz�q�v�r�t�s@@A@�uAe@&�w�y@�x@Ae�z�{Ae@@Ae�}��~����@Ae@�Ae@A����|AAAeAe@����AeA��@Ae@Ae�Ae��AeAAeA����������@Ae@Ae�@A@���AeAe@@�Ae@Ae�Ae�@Ae�����@�AAe@��@�Ae@@�AeA��Ae���AeE@�����AeazAe�Ae��	������������@��Ae@A@��AAe����@AA@����H�����@AeH:����@���@A@����@��@��Ae��A@��������Ae��@Ae��Afe�������Ae@A����AeAAeA�������������������@Ae@Ae��AeAeA��������@A@B�Ae��Ae@����������AeAeA��AeAe@���Ae��AAe��Ae@AeA���Ae����Ae@Ae@��AAe@A�����AeA@Ae@A�Ae�@H:�
�Ae�Ae��
����Ae@AeAeA����@Ae@A��@AAAe��)��Ae�@��AeAeA��#� �"Ae�!A@@Ae�$�'�%�&@A@Ae@�(H:@�*�6�+�0�,�.Ae�-@A@�/@A�1�4�2�3AeAA@�5@@AeAe�7�8�:�9@A@�;A@Ae�=���>�~�?�X�@�JAe�A�B�D�C@AAe�E�H�F�GAeA@A�I@@A�K�P�LAe�M�O�NAe@Ae@F��Q�S�R@F�@�T�VAe�U@Ae�W@Ae@�Y�o�Z�e�[�`�\�^Ae�]A@�_@Ae@�a�c@�b@Ae@�dH:Ae�f�l�g�i�hAe@A�j�k@Ae@A�mAe�nAeAe@�p�w�q�t�rAe�sAe@AeK��u@�v@AAe�x�y�|�z�{@A@A@�}@Ae����������@�@Ae@�@Ae��Ae�Ae@Ae�@|���@�@@Ae����A@@Ae�@AAe��������@AeA@Ae@��F�@��@A��A���@Ae�@Ae�AAe�@A��������Ae�AAeAe�@Ae���Ae@Ae�Ae@Ae����@�Ae|Ae@���@AeA��A@A@��������@��Ae��@Ae����A��AeA���@Ae��������A@Ae��A@����@A���Ae@���%�������������������Ae��Ae@Ae��@Ae����EAe��@Ae@����@��@��@Ae��@Ae@����������
H:AeAe������AeAAAe����������AeA@AAeAAe��Ae@Ae��������Ae�Ae@�Ae@A����A@@Ae@�@Ae���	��
�AAeAe@�
@AeA�@@Ae�������@AeA��@Ae@g_����@AA@AAe�� �Ae@Ae�!�#�"Ae@Ae�$@A@�&�A@�'�(�4�)�.�*�-�+�,Ae��A@�@�/�2�0�1Ae�Ae@@�3A@�5�;�6�8�7@@A�9�:@A@Ae�<�>Ae�=@A�?�@@AAe@�B�T�C�J�D�F@�E@Ae�G�H@Ae�IAeAAe�K�N@�L@�MH:@�O�R�P�QAe�,Ae@�SAAaz�U�`�V�\�W�Z�X�Y@A@Ae�[Ae@A�]�_Ae�^F�@@Ae�a�dAe�b|�cAe@�e�gA�f@Ae�h�iAeA@Ae�k�P�lAe�mAe�n��o���p��q��r��s�w�tAeaz�uE�v@Ae�x�{Ae�y�zAeAAe�|�~Ae�}w�Ae�AeAe@������Ae@@��zAe��Ae@H:�@H:����A@@�@Ae���@AAe��AAeA@����������@AeAe@A�@Ae��Ae@�AeAAe������@AAe@AEz@���@AeAeA������@Ae@�AAe���Ae@A�@Ae@��@�@�@Ae�AefAe����������������@��A@��@AeA����Ae@����A@Ae@Ae��������@AAe@��@AeAe����������Ae��Ae@Ae@����AeA@H:��Ae��������������@A@��@AAe����@��@AA@����Ae����@A@����@Ae����AeE@Ae���=��������������@Ae��A@@A�AN�NA��@���AeAAe@����Ae@A@��H:@Ae@�	��
�����
A@@Ae@�Ae@��@�Ae@�@@az��@�@�@Ae���H:@EAe�@A��.� Ae�!�(�"�%�#�$AAe@A�&�'AAe`�Ae�)�+�*@@A�,�-@Ae@A�/�8�0�3@�1�2AeA@�4�6@�5@AeH:�7@AeAe�9�:@�;�<@AeAAe�>�j�?�V�@�J�A�G�B�E�C�DAeA@A�F@@AeAe�HAe�IH:@�K�P�L�N�M@AeA�OAe@Ae�Q�T�R�SwjAe@�UAA@�W�_Ae�X�Y�\�Z�[Ae@@Ae�]�^Ae@A@�`�e�a�d�b�cAe@Ae@Ae@�f�h�gAe@A�iAe��H:�k�}�l�u�m�pAe�n�oEHGAe�q�s�rAAAe�tAAAe�v�x@�w@A�y�{�zAe@Ae@�|@Ae�~�����A�A@Ae�AeB����AeAeA�AeAe@������BaAeAeA��@AeAe@�Ae@�AAe��@������������Ae���AAeAe@��@�@AeAe�@|��@��Ae@A��Ae�AeA�AefAe�������Ae@Ae����6@A��Ae�@Ae�AeAe@����A�@AeAe�A@���A�Ae@Ae��@Ae��������������������Ae@@A��@AeA��������Ae@@Ae��AeA@������@��@f@&������@Ae@��@A@��������������@@AeAe@��������Ae@AAe����@AeH:Ae��@������Ae@A����E���������������@�@Ae�@Ae@���@@AeAe@������H�@@A��Ae@A@�AeA�EzAe���	Ae�
�
����AA@Ae�@H:�����@@Ae�@@Ae��@�AeA@�Ae@��,�� A��A�@Ae@�!�&�"�$@�#az@�%��Ae@�'�*�(�)Ae@AeMAe�+@Ae�-�4Ae�.�/�2�0�1AAe@Ae�3@@F��5�<�6�9�7�8A@AAe�:�;AeAHG@�=�?Ae�>@AH:AeAe�A�BAeAe�C�DAeAe�E�FAe�GAe�HAeAe�IAe�J�KAe�LAe�MAe�NAe�OAeB�Ae�Q�Ae�RAe�SAe�T�U��V��W�o�X�c�Y�]�Z�[AeA�\@A@�^�a�_�`@AeAAe�bAe@A�d�i�e�f@Ae�g�h@AeA@�j�m�k�l@Ae@AeAe�nA@�p�|�q�w�r�u�s�t@Ae@Ae�vAeAe@�x�{�y�zAe@Ae@Ae@�}��~�F�Ae�Ae@AeAe���Ae@@Ae����������@Ae@HG@�@az@���@Ae@Ae���@��AeL�Ae@���Ae@Ae��AeA@Ae������@�Ae@�E@A��@�Aef��AeAAAe������Ae@@AeA�H A�AeAe�Ae@�����������AeA�Aeaz�Ae��@AeAe@��������AAe@@��Ae@����@��@AeAe��Ae@����������Ae��@E@@����Ae@E������Ae��Aet�@Ae������Ae@@Ae������������������H:A@����AAeAe@��@@Ae����Ae����F�Ae@����AeA����AeAaz@���������Ae����AAeAe@@��@@Ae@���@�Ae@��Ae@Ae@���Ae����R��2��������	�AeAeA�
AeAAe@��
EzAAe����Ae�@Ae@Ae���AeAEz�Ae@Ae��$������AeAe�A@��"� �!A@Ae@Ae�#A@�%�0�&A�'A�(A�)A�*A�+A�,A�-A�.A�/A{AAe�1@Ae�3�@�4�7�5@@�6AAe�8�<�9�:AeAA�;@H:�=�>@H:Ae�?AeA�A�K�B�G�C�E�DAe@Ae@�FAe@@�H�I�JAe@A@�L�NAe�M@Ae�O�Q�PAe@A@Ae�S�kAe�T�U�a�V�[�W�Y�XAe@A�Z@@Ae�\�_�]�^AeAAe@A�`@A�b�g�c�eAe�dcW@Ae�fAeA�hAe�i�j@A@A�l��m�x�n�u�o�r�p�qAAe@Ae�s�t@AeA@�vAe�w@@A�y��z�|A�{A@�}�~@AeAAe�Ae�@AAe������Ae�AeA��A@@A�Ae�@AAe���Ae�@AHG��@�AeH:��AH:AAe��������������Ae�@Ae��AeAA@����Ae@AeazA�@Ae��@�@�@Ae����@Ae�@AAe������@HGAe�AeA��Ae@Ae�A@��Ae@��Ae�A@���@AAe@��������������������@AeA@��A@A������Ae@A��AeAe@������@����@AeN�Ae��@����az@AAe��������@����@@A@������@A|@������@��Ae@Ae��Ae����Ae@@A�����AeAe��������@����Ae��@AeAe���AeAeA����@�����A@AAe��Ae@AAeAe���@Ae@�AAeA���
��	Ae@@A��
�Ae@A�AAeA��H:Ae�Ae���Ae�Ae�Ae�Ae�Ae��AeEzAAe��@��.��'��"� AeAe�!@A�#�%@�$@A@�&@Ae�(�+�)Ae@�*@H:Ba�,�-Ae@Ae�/�9�0�6�1�4�2�3AeAAe@�5AeAe@�7E@�8@Ae�:�=�;az�<@Ae|Ae�>�?@@Ae�A�S�B�N�C�I�D�F@�E@F��G�HAeAAe@�J�L@�KAe@�M@@Ae�OAe�P�QN�AeB��RAe��T�Y�U�V@A�WAeAe�XAAe�ZAe@�[��\A@�^�E�_��H �`H �a�b��c�z�d�fAe�e@&��g�n�h�jE�i�
��kE�l�mA@&AF��o�rHG�pA�qA��s�u�tH:Ae@�v�yA�w��xN�E�H �{�|�H:�}Ae�~���A��E�EH�Ae����@&@&�*��E����������Ae�F�@��H:��H:�A�H:�H:�H:�H:H:��H:H:�Ba��������H:�H:��E���F��cA�H �az����LliEzli�lili�~�@&@&E�H �����A�Ae���E��AeH���@&�A�����A�AA��ANAAC�A�A����A��C�NA������L�������������H:�����������H:��A@&Ez@&A�����������AeBaA��H:������A������A�����'A�'Ae��A��������A��A��A��A��A��A��A�A����|�����Ae��|�AeH H:�������H:NNH:���������AA�E�@&�F�F�@&����@&��E�������H:����������������	��
�H:��'��'�
��EA�H:��1�� �������H:�EA��A��H:��B�AeB�AeHG�'Ez�AeA�!�'�"Ae@&�#@&�$@&�%@&�&@&�*�(�.��)Ae�*�+�-Ae�,�E�E�H:A�/E��0EH:�2�:�3H:�4�8�5�7�6AAAe����9�A�;�<E���=�G�>�C�?AeAe�@�A
��B��AeAe�D�EF��9�F��AeA�H@&�I�J@�F�KF��S�M��N�j�O�PH:Ae�Q�Y�RHG�S�X�T��U�V@F��W��AeH:H ��Z�i�9�[�\�b�9�]�^�9H:�_�`H:H:�aH:��cH:�dH:�e�,�fH:H:�gH:�hH:�,��E��k�y�l�sH:�m�nH:�oH:H:�p�q�rH:��H:H:�tH:�uH:�v�wH:�xH:s�H:H:�z�{H:�|H:�}H:�~s�H:�H:s�����A�A�A���A�AC�C��C�AH:�����Ae��@&H:@&���@&�A@@AAeHG�����������EAH:��Ae����@AeH:��E��@&�H:�H:�H:�H:AAe�����@&���A@��H:EAeAe�����EAazK���EzBa�Ae�������@&��EEAAH����������AAe���F�EEAe����������E��E�������A@��EH:@&AeA��A������H:����H:��H:��H:H:����H:��H:��H:H:N��H:��H:H:����H:H:��H:����H:H:��H:��H:��H:��,>H:��������H A��������AeH:H:��H:����H:H:s�A���6A���H:@&EAe��(�A���F��E���HGA��'�AAe@&��Ae��Ae��EzA�AeE����	�@&�
@&�*@&�@&�
�@&�@&@&�@&��@&�@&@&��@&��@&������������������� @&��!�"��#��$��%��&��'�����)�-�*�,�+�A��AeE�.�3�/�2�0@&�1@&A
_F�AA�4�5A�6�B�7AH:�8|��9|��:�;|�|��<|��=�>|�|��?|��@|��A�|��C�DAH:E��F�d�G��H���I�[�J�����K�L�T���M�N�Q�O�P�H:�'Ae�R�SmHGaz����U�V�Y�W�X��Ae@&�ZAe��HG�\��]�i���^�_E�`Ae�a�d�bAe�cAeazAe�e�g�fAe@Ae�6�hazAeH:�j�k
B�l��m��n��o�z�p�uAe�q�rAe�sAe�tAeAeB��v�x�wB�AeB�Ae�yB�Ae�{��|B��}Ae�~B�Ae�AeB��AeAe�Ae��AeB�Ae�Ae�Ae�Ae�Ae�AeAe�B�Ae��Ae��AeAe��B�Ae�Ae�B�Ae��Ae�Ae��AeB��AeB�Ae��Ae�AeAeB��Ae����Ae��AeAe�Ae�B�Ae�Ae���Ae���Ae�Ae�Ae�AeN�AeB�AeAe��Ae�AeAeB��AeAe���AeB���B��Ae�AeB��B��AeAeB�������������A@&A���'@E�����A��@&�������'���������������Ez��Ba��@H:���������H EzAeAe
�E������@&HG@&��H���Ba���9
���Ae������������Ae��A��A����������Ae�AAe����AAe@A��AEA����@&E���AeA��E�������'����H:�H:�H:�H:H:�H:����H:�H:H:��H:H:��H:H:N*H:�H:��H:H:�	�
H:H:�N*H:�
��H:H:��H:H:�N*H:�H:H:�H:��H:���H:H:N*H:�O�N*H:F�Ae��=��;� �5�!�'�"�&�#�%Ae�$az��A�HG@&�(@&@&�)�*�/�+�-�,i@i@�V�.F�GtG��0�3�1�2F�G�GtG��4F��VG��6�8H:�7@&A�9�:AEAeH Ez�<ABa�>�IAe�?�@���AEE��B�C�F�D�EE���'E�G�H��azH:az�J�]�K�N���L�M@&�E�O�PAeA�Q�RAeA�S�\@&�T�U�WA�VAAe�X�YH:�H:�Z�[H:H:�FEAeAe�^Ae�_�`�a@&H HG�b@&�cE��e�:�f���g��h��i�@&�j�kAe�l�m@&��nH:�o�yH:�p�qH:�rH:�sH:�tH:�uH:H:�v�wH:�xH:H:s�H:�zH:�{H:�|�}H:�~H:�H:H:��H:H:�H:s���EF����H:����H:��H:��H:�H:��N�H:NH:�H:�H:H:N���H:H:��H:���H:H:�H:�NH:�H:�H:�H:H:NH:��H:�������H:NH:�H:H:N�H:�H:H:N����H:N�H:�H:NH:�H:�H:NH:Ba�H�Ae������@&��Ba�A��HGBa�Ae���F���F�����@&�����������@&E�����EA@&H:�����EHGEz�����F�������F�F�����F�F�����F���F�F����������F����������������������F���������F��F�F���F�����F�F������F�����F�F���F���F�����F���F�F���F����F�F���F�����F�Ba���A�H ����HG���A|�AeA@&�A��$�����	�
�
HG��Ae@&H:H H����Ae�Aet��A@&��@&�'Ae����AH��H���@&�Ae@��!���� �EE�S�"H��#H�@Ez�%�3�&�*H��'H��(Ae�)F�|��+�/A�,�-�.AeAAeH:�0�1az�~@�2H Ae�4�6�5Ae@Ae�7A�8A�9A�A�;��<��=���>��?�b�@�N�A�G�BF��C�E�D@&F�@&@&�F@&F��H�K�I@&�JF�F�@&�L@&F��MF�@&�O�X�P�R�Q@&@&F��S�V�T�UF�@&@&F��W@&F�@&�Y�]@&�Z�[�\@&F�F�@&�^�`@&�_F�@&@&�aF�@&�c�w�d�l�e�i@&�f�g�h@&F�@&F�@&�j�k@&@&F��m�r�n�p�o@&@&F�@&�qF�@&�s�v�t�u@&F�F�@&F�@&�x��y�}@&�z�{�|@&F�@&F�@&�~@&�F�@&F�����@&@&F���F�@&F�@&���������F�F�@&���@&@&F�F�@&����F�@&�@&@&F���F�@&��@&F�@&F�����@&��@&@&F���F�@&��F�@&@&F������F�F�@&��@&F�@&F���@&�@&F��@&@&F�����������@&F�@&��F�@&F�@&���F�@&F�@&�F�@&����������F�@&F�@&��F�F�@&������F�F�@&@&F���������@&F�����F���F�@&����F�@&@&F���������@&F�����F�@&@&F�����F���@&F�F���F�@&Ez��������������������@&�����@&@&��@&����������������@&�������@&�����@&�����@&����@&�@&����@&��@&�@&�@&AeH ���AeEAe��
��F��E�F���	���
AAe�AeAe�\���F�H:�FE�����F�������'���H:F��F�@&���'@&F��EE�EAe� �8�!F��"�(�#F�F��$F��%F��&F��'�F��)F��*F��+F��,F��-F��.F��/���0�1��2��3��4�6��5����7��F��9F��:F��;�<F��=F��>F��?F�F���A��B��C���D���E��F�_�G�U�H�K�I�J�'A�A�L�MAeE�E��N�O�S�P�RA�QANAeE�H��T��'�V�]�W�\�XAe�YAe�ZA@�[HGE�H:@&�^EAe@&�`�v�a�s�bE��'�cA�dA�e�f�q�g�pA�h�i�����j���k���l���m�n�����o���A�A�r�PA�t�Ba�uAeE��w�xAeHGHG�y�z�{@&BaH:�|�*�}@&�~@&�@&�@&�@&��@&�@&�@&��@&�@&�*@&��*@&���������A���AeAe��������|��|��|�|���|���6|||�Ae@&��EE��AeH:E���H �H H �H ��H �H H H-��@&E�@&�@&�@&�@&�'��Ae�Ae�E���E�A��@E�~���'�H A�@&H:�A���Ae���EzEF�����@&����@&��@&��@&��@&����@&���������@&��@&�������@&@&����������������Ez��F�����Ez����EzEzF���azAe��@&az��H:����H:����AeE���A@&��@&������E����'A��AeE�\�������Ae@&��AeF���AeE���6���#�����Ba��Ae���az|�A����A������������E�H�H:E��	�EEEz�
�E�H:�@&�
Ba@&E�H @&Ba���Ba�������EAe�@&Ae�@�AeH:���AeAeazAe�� Ae�!AeAe�"Ae��$Ba�%�/�&BaA�'�(@&A�)�*�,A�+�A��-�.AeHGAe�0F�Ba�1�2�5Ae�3Ae�4AeA@&E��7��8Ba�9�e�:�b�;�a�<�K�=�F�>�A��?�@��@&�B�D��C@&���E�@&�G���H�I�J�@&�@&�L�V�M�P��N��O@&��Q�S�R��@&�T�U�@&@&��W�]�X�Z��Y�@&�[�\@&�@&��^�`��_�@&@&�A���c�dAE�@&Ae�f�~�g�x�h�r�i�p�j�lA�kH:HG�m�o�nHGq���HG�q�Ae�E�s�t�w�uE�vBaE�@&��y�@&�z�{Ez�|EzEz�}�Ez���BaBaE��AeAe���E������BaBa�BaA���Ba���Ae��BaHGAEzEBa�BaBa��BaBa�������N+_�NN;��[�Q�[�Q��W���[�Q�NQ������@��#��������������@&�Ae�BaH�AeH:����A���H:�H:�H:H:�s�H:����A�H��H��H��H�H���H��H��H���H�������HG��H ������H���E��A��E���@E��AH ������Ae���������AeAH:��azaz��az����azazgQ����Ae��Ae����������HG��H��'����AF�AeA�������Ae�����HGEAH:H������!@&�������@&��@&��@&@&��@&��@&��@&�����@&�@&��@&�@&���@&�@&�@&@&�@&���@&��@&�@&�@&@&��@&�@&@&���@&�	�
@&@&��@&@&�
�@&@&�@&�@&��@&�*@&�@&�@&@&��@&@&�@&�@&����@&@&�Nj@&�@&@&� Nj@&H��"H E�$�%Ae@&�&�3Ae�'�(�-�)AF��*v��+v��,v�F��.Ae��/E��0�1H:�2AeAe��4���5HG�6@&�7�;HG�8H��9H��:H����<�?|��=Gt�>�kGtAeA�A��B�X�C�M�D�F�E@&AAeH:�GH:�HH:�IH:�JH:�KH:�L�H:�NH:�OF��P�U�Q�T�R@&@�SE�F�Ae�H:�V�WH:�6��Y�u�ZBa�[�m�\�eAe�]�^�_BaHG�`H:�aH�Ae�b�c@�d@��@@&�f�g�j�h@&�iBaEH:�kE�lA��Ae�nE��'�o�p�s�qAeAe�rAe���tAeAe@&�v�~�w�}�x���yH��z@&A�{�|HG��Aety�g��@&E���Ae����@&�EAE����Ae�E��A�EAe�����Ba�BaHGBa���Ae��E�@&�@&��������H:����@��AA�@���Ae��6�gF����A@&�F�@&Ae@&�����E��@&��HGE�H:���'@&������H�E��H H�����AeAe�Ae��AA�F�����EEAe��E�EAe������@&��@&��������A��A��Ae����������E��H:���H:Ae����H:����|���Ez����������AeEEAe����H�A���Ae�����'��Ae��HG��HG��HG��HGHG��HG����HG��HG��HG��HG��HGHG��HG��HG����HGHGq������������H:�����@&azA��H:Ba�AeBa��������Ae���Ae�Ae�AeAe�Ae��AeAe���AeAe��	Ae�
Ae�AeB�Ae�
�BaAAeEH:�H ��E�A���azt�az�az�az��azwmaz��H��&��BaH:� �!Ae��"�$H �#@&Ae�%�EEz�'�>�(�3�)@&�*�/�+HG�,�-AN��.AAe��Ez�0�1H��2H:��Ae�4�:��5Ae�6�7�8�E�9AeEAe@&�;�<�=AHG�Ae�?�B|��@H:�AE�A�C�D�F�'�E@&K��GEAE�I��J��K�W�L�R�M�O�N��E�H �P�Q@&AeE��S�V�T���U�H:�az�X��Y��Z�fH:�[H:�\�]�cH:�^�_H:�`H:�aH:�bH:,>H:H:�d�eH:,>H:�g��h�v�iH:�j�oH:�k,>�l�m�n,>H:,>H:�p�sH:�q�r,>,>H:�t,>�u,>,>H:H:�wH:�x�y�|�zH:�{,>H:,>�}�,>�~,>H:,>H:�H:H:����H:��,>H:,>H:�H:�H:,>H:�H:�H:H:��H:H:��H:�,>,>H:A��H:��E�H��F����Ae�������HG
B��HGAe��@&��@&�����BaEAAe����A���A�H���A�AH:��H:AAeA�����az�EH�E���Ae�A�@&�<��E�AeA�@&Ae@&���������z���U���)�����������ABaAe@&��E���������������������@&��������������������@&��N������������������������������Nw���������������������������Nw�����������������������������������������N��������Nw�����������	�
�������
�Nw�����������������Nw��Nw���'H:��H:H:��H:�H:� H:H:�!�"H:�#H:H:�$H:�%H:�&H:�E�(AeA�*�L�+H:Ae�,�-�I�.�:@&�/�0@&@&�1�2@&@&�3@&�4�5@&@&�6�7@&�8@&�9@&@&Nj�;�B@&�<@&�=�>@&@&�?@&�@�A@&@&�*�C@&@&�D@&�E@&�F@&�G�H@&�@&E�J�KA���MAH��NA�OBa�PA�QF��R�S�T��F�@Ae�V�y�WE�XE�Y�i�ZAe�[�gA�\�]C�A�^�_A�`A�aAA�b�cAA�d�eAA�fC�A@&�hH�A�j�o@&�k@&�l�mAe@&�n�@&�p�u�q@&�r@&�s@&@&�t�@&�v@&�w@&@&�x@&�H:E�{��|�E�}�~��AeAe�H ����@&��H�E�EAe�����F����HGAAAeEz@�H Ae�Ae�@&���H:��AE���S�[@���H ���H��A�@&�@&�@&��@&@&��@&�@&�@&@&�@&��@&�@&�@&�����������C�AAC��C�C��C�A��C�A����A�
QN��ٿ�BANA���A=A���A��A�����A����������A�������A��AA������AC�C���AA=������C���A��A
QA��C���������3+A3+A3+AAe����A��A����H E�H ������@&��������EBa���f���;������������Ae��A@����HG@������H:��F�@&���F��F�F��F���F�F�GtF��F��F���F�F��F��Ba�����H:@&Ae���@&H�@&�	��
�Ba�AAe�
Ae��AeAe�Ae���-�H����E�H:E��Ae��(Ae�����AeN�AeN���'Ae�� Ae�!Ae�"Ae�#Ae�$Ae�%Ae�&Ae��AeAe���)�,�*�E�+Ae�@&@�.�9�/���0�6�1H �2H �3H �4H H �5H-H @&�7@&�8HGF��:@&F�@&�<�K�=�G�>�E�?�C�@@&A�AAe�BE�'�DE�EA�FEAeE�Ae�H�I�JAe@&HGAeAe�L�M�V�NHGAe�O�g�P�Q�U�R
_�S�T�E�E@&���W�c�X�'�Y�]~�Z�[Ae�\AeN����^Ae�_�a�`AeAe���bAeAe~E��d�eH:@&A�g��h��i�l@&�j�k@&@&E��m�oAe�nAeH �pE��q�|�r�x�s�tEz��u�vE�6�w���Ae�y�{E�zazAe@@&�}��~�AeA|���� �@��Ez@&F��H:AeAe���|���AeH ��������Ae�Ae����Ae�AeAe�N�Ae�AeAe�Ae�N�Ae����Ae�Ae�Ae����Ae�AeAe�B�Ae�Ae�AeAe�B�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae~AeAe�Ae��AeAe��Ae��Ae������Ae���Ae��Ae
��AeB�����Ae�Ae�Ae��AeAe��
�AeN�Ae������
���AeAe��B�Ae��������B�AeAe��AeB�w�����Ae��Ae��B���Ae��Ae���D������AeAe��Ae��Ae����AeB�Ae�����Ae��Ae��B�B�Ae�������Ae����B���Ae��Ae��AeB�Ae���������Ae��Ae��AeAe����AeAe����Ae�!9�AeAe
��AeAe�AeB�Ae�B��Ae���Ae��AeAe��Ae�Ae�AeAe��Ae�Ae�Ae~B��	�sAe�
��N��8�
����Ae��Ae��AeAe�B�Ae�Ae�AeAe���Ae�AeAe��Ae�AeAe�B�N���+� �(�!�%Ae�"�#AeAe�$B�Ae�&Ae�'AeB�Ae�)Ae�*w�B�Ae�,�0�-AeAe�.Ae�/AeB��1�6�2�4�3AeAeB�Ae�5AeB��7B�AeB��9�;Ae�:�UAe�<�B�=AeAe�>Ae�?�@Ae�AAeAeB��C�F�DAe�EAeAeB��GAe�HAe�IAe�JAe�KAeAe�L�MAe�Ae�O�e�P�_�Q�[�RAe�SAe�T�WB��U�VB�B�Ae�X�Z�YAeAeB�AeB�Ae�\�]Ae�^AeN�AeAe�`�aAeAe�b�cAe�dAe~AeAe�f�g�m�hAeAe�i�jAe�kAe�lAeAe��Ae�nB��o�p�qB���B��rB�Ae�t@&�u@&�v�yH:�wH:�xOH:�zH:H:�{OH:�}��~���@�A@&|�@&�E�@&�@&������H:Ez��'����@&��EE�H:AeAeEE���E�E��E��E��E���E��E�E���E�E���E�E��E���E��E�E����E����E��E�����������������������az��az��az��azgQ�az��az�az�azaz�az��az�az�azaz��azaz��azaz�az��v�az������azaz����az��az��az��az��azazgC��azaz����az��az������az��az������azazv���azgQw��az��az����az��gCb���azkXb��������@���&���	������az��az��az|az�������������az|az��azNaz��az��az��az��az��az��az���w��w���azw�az���w�azw�w��w�az�az���w�az�azw�w��w��w��w�az�
��azaz�az�
az��az�azaz��az�az�azaz�az�az�w�az����az�az���sGazwU� azaz�!�"�$�#azaz|�%azaz��'�<�(�8�)�+�*azaz|�,az�-azaz�.j�/v��0az�1�2az�3azaz�4az�5az�6az�7@az�9azaz�:�;az|az�=azaz�>�?az|az�A���B�Xaz�C�D�U�Eazaz�Faz�Gaz�H�Iazaz�J�Kazaz�L�M�Qaz�N�Oazaz�Pmazaz�R�Sazaz�Tazmaz�V�Wazaz|�Y�g�Z�e�[az�\�baz�]�^�`�_@�@@�a�@�caz�daz�az�faz�az�h�~�iaz�j|�kaz�l�t�m�����n�o�r���p�q|��|�s||���6�u�v|�w�{��x�y�z����k��||�}|�6|az���az|az��������������az��|��az�������-��d��d��d��d��d��d��d�-d�Zdaz��|����azfazaz��az��az��|az������azaz��az�����az��az����azaz��|azaz��az��@az��������az����az��azsG|������������az��az��az����az|azaz����azaz��S%azaz��az��az�������Eazaz|����������������az����az|az��az��az@az��az��azaz��az����azazb�az��������azaz��az@az������az`���������������������az����az��az��az|az��az��az��azaz������azgCazgC��������az���az����az��az|az|��az��az|az������az���B���)���"���������azaz����az���az��az�az�az|az��az|azaz���	�azaz|�
��az����
��Vc���az���az�az�az�azaz��azaz�az�azv�az��az�az�az�az�azaz� �!azv�az�#�&�$azaz�%|az�'az�(azaz|az�*�+�1�,azaz�-az�.�/azaz�0|az�2�7�3az�4az�5azaz�6azl��8az�9azaz�:az�;az�<�=azaz�>az�?az�@�Aazv�aziM�C�D�T�E�N�F|�G|�H�K�I|�J|az||�L|�M|az|�O|�P�Q||�R|�S|az�U�d�V�[�W|�X|�Y|�Z||az�\�`�]|�^||�_az||�a�b||�caz|�e�p�f�i|�g���haz|�j�m�k|�l|az||�n|�o|az�q�v�r�t�s|@||�u|az�w�}�x�{�y�z|@az|�||az||�~|�|az����az��az��������azaz��az����azaz������az��az����az��azaz��azMaz����az��az��az��az�az��az������azaz��az����az��az��azaz��az|������azaz��az��az��az��@az��������az����az��azaz���az��az��az��az��azaz|��azaz����azaz����azaz|����az������|az��az��������az��az����azaz��az��az��az����azaz��az����az��azaz��az��az�K��az������azaz��az|az��az��az���az��azaz��az��az��az����azazw����!����������az��az����������az|az������az��azcWazaz��az��az����Ae|��az��@az��az��||����|��|��||��|���b|�����az���az�az�M�;����	�az�azaz�az�az�az�
az�az�az�
azA�azaz��az�az�az`�azaz�az��az��j��az�azazu��az�az�az� az�Kaz�"�Yaz�#�$�8�%�0�&az�'�,�(azaz�)az�*az�+az|az�-az�.az�/az|�1az�2�5�3azaz�4�azaz�6�7az@az�9�K�:�@�;gC�<gC�=gCgC�>gC�?gCaz�A�Et��Bm�C�Dazwaz�Fazaz�G�H�Iazb��JazazgCaz�L�M�U�Naz�O�R�Pazaz�QgCaz�Sazaz�Twazaz�Vaz�W�Xv�azv�az�Z�[�t�\�aaz�]az�^az�_az�`azj�b�h�cazaz�daz�eaz�faz�gaz@�i�naz�jaz�k�lazaz�mMazaz�o�p�raz�qaz|�saz|azaz�u�v�az�w�x�|az�yaz�z�{|az|az�}az�~az|az��az��az|�����������az����az����az��az��az��������azaz��az��az|az��az����az��az������������������azaz��wb�����gQ��jgC��ubkXaz������b�����az�azv�������gQ�?j����kXgCwaz������������az��azb���gCazw������w*ww��v�jw����az������b�jv�gQ��azazw*������������������w�waz��gCw��������b�kXwcgC����azgC�iaz��������w��gCaz��gCv�az���������^azgQkX����jt��?wc����������������gCv�kXv�����gQwww*��������azgQgCv���kXv�az������������wgQv�gC�?��wgQv�������gCv�kXubaz���������az����azaz��az���Kaz��az���az��az|�az�az|az��
az���	�az�az|az�
��azazw�|az�az��az�az��Baz�azaz�az�az��az�azaz�az�kXv���Jaz���.�az� az�!azaz�"az�#�$azaz�%�&az�'az�(az�)az�*azaz�+�,azaz�-�Baz�/�8az�0�1azaz�2�3az�4�6�5azgCaz�7azmaz�9�C�:az�;�?az�<az�=az�>Aeazaz�@az�Aaz�B@azaz�D�Eaz�Fazaz�G�Hazaz�I�����K�f�L�Taz�Maz�N�Oaz�Pazaz�Q�Razaz�Saz���U�[�Vaz�Waz�Xazaz�Y�Zazaz��\�`�]az�^az�_az@az�aaz�bazaz�caz�daz�e|azaz�g�h�oaz�i�jazaz�kaz�l�mazaz�n�Baz�p���q���r�~�s�y�t�v�u`�d|�w�x`�AeMaz�z�|�{azL�az�}azazM�������az��M�ddazaz������az@&@&nW��������������cWazcW��cWaz|��������dH:g_d��azazL�������az����azddaz����az��azdaz��azM�����������������nW��Mazaz��Md������azdaz����g_azazM��������L���L�M��L�azL���azaz��@&nW������������|az��ML�cW����nW��nWd��azdaz������������`�ddaz|NN����NazN��� ������|��|������az��az��az|az��az��az����az��az��az��az���azaz��az��p�az����az��az����azaz��az��az��az��az��az����az��az��az��az����az��az��azw���azw�az����az��������az����azEEaz��az��az��az��azaz��@azaz�������az�az�az�azaz|��az��	az�
azazQ���
azaz�azsG�az�azazub���azaz�az��azaz�az����azaz�az|az�az�az|�!�:�"azaz�#�$�+�%azaz�&az�'az�(�)az�*azaz|�,�1�-azaz�.az�/az�0az|�2az�3az�4�7az�5�6az|azaz�8az�9�az�;���<�U�=�N�>�Baz�?�@azaz�Aazv��Caz�Daz�Eaz�Fazaz�G�Haz�Iaz�J�Laz�Kazv�az�Mv�az�Oazaz�P�Qazaz�R�Sazaz�Tazv��V�]�Wazaz�Xaz�Y�Zazaz�[az�\v�az�^�|�_�naz�`�aaz�b�laz�c�daz�eazaz�f�gaz�haz�iazaz�j�kazubaz�mazv�az�o�v�p�saz�qaz�rwaz�tazaz�uazwaz�w�x�{�y�zv�azazw*gQv��}���~���az��azaz��azw������az��azazv���az��azazv�����az����azaz��azv�����az������azv�wazaz��gQm������az��azaz����az��azaz����az��az��azaz����azaz��az��az����azw�az��azaz����azaz��az����azaz��az��az����azaz��az��az��az����az�az���/������������az����azaz����azaz����azaz��������az��az��azaz��az�az��az����az��az��azaz����az��azw8az��azaz��������az��azaz����az��az��az��azaz����azw*az��azaz����az����gC��b���b�����b���b���b�b���b�w*kX��azgC����az|az��������azaz��az����azaz��az��v�v���azaz����az��az��az��azv�az���&az�����az�az�az�azaz|���az�az�	�az�
az�az|az�
az��|�|�� �����azaz�az�|azaz��az�azaz|az��az�azaz��az�!az�"azaz�#az�$�%az|azaz�'�(az�)az�*az�+�-�,azazH:az�.azS%�0���1�B�2�3|az�4azaz�5az�6�7�>�8az�9azaz�:�;�<�maz�=mazaz�?az�@�Aazazt��C�Vaz�D�Eaz�F�L�Gaz�Haz�Iaz�Jaz�Kazaz�
�Maz�Naz�Oazaz�P�Qaz�Razaz�Saz�Taz�Uwaz�W�jaz�Xaz�Y�Zazaz�[az�\�]�g�^az�_az�`az�aazaz�b�caz�dazaz�e�fazv�az�haz�iazazv��k�x�laz�m�saz�naz�o�paz�q�rjazazw�az�taz�uaz�v�wazw�az�yaz�zaz�{az�|az�}���~azaz���azaz����azazv���azaz��az��az��v�azaz��������az����az��az����az������azaz��az��az����az������az����azaz��az|��azaz�k��az��az��azaz��az��azgC����������az��az��az����az��az������wcubjw�az���az������az����������az�1azaz���azaz��az��|azaz��az��az��az��az@az��az��az��az��������������gQb�gCkX����azv�waz��az����wt�v�m������������������az����az������az��az��az��az������azazwaz��v�az����az����az��azaz��az��az|az��az����az��azaz��az����az��az������������az��t�gQt�b���������w*wb�az����wazgQgC��az�����kXv�b�gQ�azgQb�az��az�azaz�az�	�
az�az�az�
az�ubub�ub�ub�ub�ub�ub��ububaz�az�����c��)�az�az��!az��v�az� waz�"�&az�#�$�%v�azazgCaz�'az�(azwUaz�*�+�L�,�>az�-az�.az�/�0�7�1�6�2az�3az�4azaz�5azb��Baz�8�=�9az�:az�;azaz�<azt��azaz�?�@azaz�A�Baz�C��D��E���F�G��H�J��I�t��K�t��az�M�Naz�Oazaz�P�Qaz�Raz�S�_�T�\�U�Yaz�V�Wazaz�X�Bazaz�Z�[azazgQaz�]az�^azgQgQ�`�aaz�bazgQaz�d�x�eaz�faz�gazaz�haz�iaz�j�kaz�lgQgQ�m�n�sgQ�ogQ�pgQ�q�rgQ��gQ�tgQgQ�u�vgQ���w��gQ�y�j�z�{��|�~w�}w�jaz��az��az������������������|��|��|�||����||��azM����|��az��az��v�az����azv�v�|����������||����|az||��|��|��az|��������|��az��az|��|��|az|��|��|��|az|����|��������||��|��|az��������|��|azaz||��|��az||��|������az����|az||��|��|az����������������������az��az��az��az|��az��azaz��az��az���az��azaz��az��������azaz��c�az��HG��azaz|����������az��az��az��HG��HGHG�1az����az��az��az��azazB�������azaz����az��azaz��az�������azaz����az��azaz���az��azaz����azaz|az����azaz��az�azaz�az|�az�azaz��az�	az�
az�az�azaz�
�az�az�azaz��azaz��azaz�jaz�����k��G��4�� �az�azaz�az�az��!�/�"�+�#�(az�$�%az�&kX�'v��wt�az�)az�*maz�,az�-az�.az����0az�1az�2azaz�3Naz�5�D�6az�7azaz�8az�9�:az�;azaz�<�=�@az�>az�?azw�Aazw�Bw�Cwazaz�E�FazH:az�H�X�I�R�Jaz�K�Oaz�L�Maz�NazazkXaz�P�Qaz�azaz�S�Tazaz�U�Vazaz�WazgC�Y�_�Zaz�[az�\azaz�]az�^az|�`az�a�daz�baz�caz|�e�haz�faz�gaz|�iazaz�jaz@�l���m�{�n�x�o�t�pazaz�qaz�r�sazaz�az�uaz�v�wazazw�yaz�zazdaz�|��az�}�~azaz�az��az|������azazb���az��azE����az�az��az��������az��az��az��az����azaz��az��az��az��azv�az����az����az��az��gCaz��azaz��t�az��az��������az��az��az��az��az|��azaz����azaz��az��az����az��azaz��az��az��v�az����az������az��������j��j�������azjaz�����������������������������������wc���������������jj��j��v�j������jjw�w������w���������j��u�jp����az��azw�����������bw���������w���jgC��jjaz������������az��azaz��az�����az��w�����������.az��������az��azazNaz����az����������az�����|az|az||�v��v�|�	��
�
|��||az��|�az||�|@�|�||�|az|��|�az|��|cW||���#|�|� |�!|�"|v��$�*�%�(�&|�'|az|�)|az||�+|�,|�-|az�/�baz�0�1�D�2az�3az�4�6�5az�azaz�7az�8az�9az�:az�;�<az�=az�>azaz�?az�@az�A�Baz�Cazwaz�Eaz�Faz�Gaz�H�U�Iaz�Jaz�Kazaz�Laz�M�Naz�Oazaz�Paz�Qaz�R�Saz�Tazjaz�Vazaz�W�Xaz�Yaz�Zazaz�[az�\az�]az�^az�_az�`�aaz�1az�c��az�daz�e�f���g�p�h|�i|�j�m�k|�l|az|�n||�o|��q�y|�r�s�v|�t|�uaz||�w|�xaz|�z|�{�~|�||�}az|�|��||M������|��|������|��||@��||��az||��|��|��|��|��|azaz��az|���-���^��az���
����az����az��azaz��������az��az��azaz��az��az��az��az��az����az��azazt�az��az��az������b���b���b���b���b���b���b����Bb���az��az��az��azaz����azaz��az�B������az��az��azaz��az��az����azaz����az��az��az��az��azaz����azw�azaz��az��������az������w�v���v�����w���w���w���w���w�v���v�w���az��az������w���w���w�w���������azw���w�azaz��az��azw���azw���w�����azw���w�az���az��az��az��az��������w�az��azw�w�����v���v�w�����v�w�v��az�az�azv��v��v���az���	gCv��
v�gC�azgCaz��az�az��azaz��|az�az�az|az���8��.���az�w�w�az�jj�� az�!az�"az�#�'�$az�%az�&azazj�(az�)�*jaz�+�-az�,jazazj�/w��0�4�1w�w��2�3w�w�az�5w��6w�w��7azw��9�F�:�?�;��j�<�=az�>azazj�@����A�B�D�Cazaz�����E��az�G�\�H�Pw��I�J�O�Kw�az�L�Maz�Nazw�azw�az�Q�
���R�S�����T�U���V�����W���X���Y�Z�����[�&��az�]����_���`���aazaz�b�c���d�s�e�p�f�m�g�j�h|�i|az||�k�laz|az|�n�o||az|�q�r|az@�t�|�u|�v�y�waz�xaz|az�z|az�{az||�}�~|�||��az|������|������|����|��az|��||az|��|��|��|az|��|��|��|��|��|az������azaz��������azaz��az����az��azaz��az��az��az��az����az��az��az��azaz��az�������������������az������az��azaz����azaz��az��az��az��azv���azaz����azaz����azaz����azaz��az��az��az����az��az�;az������azaz��az����azaz����azaz����az��az��azwaz��azaz����az��az��azaz��az��az����azaz����az��azaz��az���"az��az��az��������az��az������v�v�������u�v�gCazv�j����azazv�az����������������az������v�mgCaz��������b�mwv�azkX���gC�w���v�ww��azb���
�j�az�K�	w��K�az�az�
�azkXwj�� ���az�az�azazkX�����v�gCgQ�b�kXaz��v�az��azwUazv��!�)�"�%kX�#gC�$w��&�(�'kXw*azkXaz�*�,gC�+gCazazgC�.e�/���0���1��az�2�3�Z�4�C�5�:�6az�7|�8|�9|az|�;�@�<�>|�=|az�?||��A||�Baz|�D�L�E�J�F�I�G|�H|az||az�K|az|�M�T�N�Q�O|�P|az|�R||�S|@|�U�V�X�Wazaz|�Yazaz|�[�w�\�l�]�f�^�a|�_�`||az�b�d�c|az||�eaz|�g|�h�j�iaz|az|�kaz|�m�p|�n|�oaz|�q�t�r||�saz||�u|�vaz|�x��|�y�z�|�{|az|�}��|�~�|q�)�|��|az��|����|��az||��|��|az|azaz��az��az��az��������az��azaz����azazw����������������MNNaz����daz@&g_������azMaz����az`�Maz������az��azi�az����az��az@&����@&Mazi�����������az����az����az|az��az��azaz����azaz��az��az����az��azaz����azazv�az����������az����azsG��sGazaz����azaz����az��azi�|az����azaz|��������azaz�T|������������az��azaz��az��az��azjaz��az��az����azaz����azaz����azazv�����������az����az����az����azazwaz����azazmaz��az��az����azaz��az����azv�az����azaz��az����azazazazv�azazazazazaz	azaz
azv�az
azazazazazv�azazazazazjazazazazazazv�az 3!azaz"#az$az%(az&az'�azaz)*az+az,az-azaz./az0az1az2azaz@4L5F6|7?8;9|:azaz|<>|=|az|az@CA|B||azD|E|az||G|H|I|JK|az|M\NWOS|P|Q|R|azT|U||Vaz||XY||Z|[az|]`|^|_|�|a|b|c|d|azf�gqazhiazjnazklazmazgQb�azopazgCazr�|stazuazvazwazx�azyazz{�az|az}~�azaz�az�az�b�azaz�az�wUazaz����azaz��azaz�az�gCazaz��azaz��az��azgCgCazaz��azaz��azaz��az�azaz�az��azaz���az��az�azaz�az�t�az�az�azaz��azaz��az�az�az�azaz�w�az�az�azaz�az��azaz����azaz�az��azazw��az�az�az�az�az�az�azaz��azaz�az��&azaz��]�H�0��az����az���azaz���az�az��azaz|nWaz�az�azaz�Naz�az�az�az�azaz��azaz��azazkX���az����azaz�az�az�az�az�az��az��az|az|���az�az�azaz��az�azTazazazazazazazazazaz	az
az
azazt�azazt�azazazazt�azazazazazazazt�az(az $!az"az#az@azaz%&az'azaz|)azaz*+az,az-az.az/azmaz1�2J3<az45az6az7azaz8az9:az;azv�azaz=>azaz?@EazAazBazCazDazjFazEGHEIazazwKVazLMazNazOazPQ|azRTSazazb�UazwmW�X�azYZg[az\az]az^azaz_`azaazazbcazazdeazazfazv�h|iqjazkazlazmaznazoazpazv�azrazazsaztuazvazazwxazazyzazaz{v�azaz}~azazaz��az�azaz�v�az���azaz�az��azaz�az��azaz��az�azv�az��az�az�az��azaz��azaz��azaz��azv�az�az�az�az�az�azaz�az�az�az��azv�az�����|�|�|�|�|az||�|��|�|�az|az��|�|�|�|��||az��|��|�||az|�|�|�|�|az���azaz�az�az�az��az�azaz�@�@az�.�$��az������az���az�azaz�az�azmaz�az�mazaz����az�azaz�az�azmaz�az�mazaz��azaz��azaz��az�az�az�az�az�az�azaz�B�azaz��az�az�az��azazazazazazazazu�az	az
azazaz
azazazu�azazazazazazazazazazazu�!azazazaz azv�"az#azv�azaz%az&az'(az)az*azaz+v�,-azv�azaz/0;az12az37az4az5az6azsGaz8az9:az|az<Baz=>azaz?@azAazaz|azCazDazEFazazGaz@I8J�K�LjMTNazazOazPQazazRazSaz�U[VazWazXazazYazZaz�\azaz]az^az_az`aazbazcazazdazefazgazhazaziaz�&kazlwmazaznazopazazqrazsaztazazuvazazv�azxyazazz{az|az}az~azaz�az�azaz��az�az�azv�az���az������az�az�az�az�v�az������az�azw�azwaz�azaz�azwaz�az�az�wazj���az�jaz��m����az��j��azj�azw������az�azw��w�az��j�ju�az�jaz��azj�j�w�jaz�����azaz��az�az�azaz�az���az����az�azaz�@az�az�az�azazAe��az��azaz�az�|azaz�az��azaz�az����az���az�azaz�azkXaz��azaz�az|az�az��azaz�az�az|��az�az�az�az�azaz��azaz�az�az���az�����w�b��Mazaz�az�K��azazb�azazb�v��M!azaz	
azazazaz
az|azazaz|azazazazazazaz|azaz|azazazaz az|"-#*$azaz%&azaz'az()azazm+azaz,|azaz.az/0az14az23azazwU5az6|7azv�az9�:az;maz<=K>D?azaz@azABazCazaz�EazazFGazazHIJazv�v�azLgM]NazOazazPQazazRSZazTUazazVWazXazazYwaz[azaz\azwaz^_b`azaazazR7cazazdeazfazb�azazhiazjazkazazlwaznazazopazqxazrsaztvazuazQwaz|azy�z}{azaz|az|~azaz�az���az�az�azaz�azj�gC�gCgC��gC�gC�wwgC������v�az|azaz�az�v�t����az|azaz�az|��azaz���az�az�az�������az�az��azaz�az��azaz��azw�azaz�az�az��azaz�az��az�azw�az�����az�azaz��az�az�azaz�w�azaz��az�azaz��azaz��azazw�az��az�azaz��az�az�azaz�azw�����az�az��azaz��azaz��azaz�w�azaz��azaz��azaz�az�az��azazw����azaz���az�az��az�az�azw�az�az�az�az�az�azazw�az�az�az�az��az�azaz�az�azw�az�azazazv�jv�v�	
azazv�az
v�v�v�azv�v�azazazazjazaz��azTaz:*"|| |!|az|#|$(%'|&|azaz||)az|+0|,-||./||az162|35|4|az|az7|az89|az|;F<A=|>||?|@az|B|C|D|E|w|GLH||IJ|azK|azMP|N|O|az|Q|R|S|azazUazVWazazXYazazZ[azaz\azm^G_ `�|abrcazdazegazf|azhmiazazjazklazaz@aznoazazpazqv�t�sazt�uwwvaz�x{yazzazwaz|��}~azazwazaz�az�az�b�wqaz��az�az�����azazv�az�v�az��v��v�az��v�azv�az����|��az�az��H:�az�az�az|az��azaz�az�azc�az���az�az����az�azaz�azwaz��az�azgCaz��az�az��az�az�az�Baz�azaz�az�az|�����azaz�|�az�az�az��azazwaz�az�az�az�az�az�az�az��az�azaz��az�azaz�az�v�az|������|���|�|�|az||�|��|az|�������||�az|�||�az||�|�|�|az����|azaz�az|�|�|�||az�����|��||@|�||az|az|az||az|	
||az
azazazazv�|||az|||||az|||az|||az!�"�#1az$%az&az'az(az).*,+|az||-|az/az0||v�2}3]4N5I6:7|8|9|@|;><az|=|az|?|@|AazBCazDazazEazFGazazHjazJ|K|azLM|az|OTP|Q|azRazS@|UY|VW||X|�|Z|[\||az^n_f|`a|bdc||aze||azgkh||ijazazt�|lmaz|az|opwqtr|s|az|u|azv@||xy{z|az||||az~���|�����|�|az|�|��||��|az|�||����||�|N�||�|az���|��|��|�||az��|��|az|�||����4�az��azaz�4�������b�4az�azbaz�az��az�4�4b��4��4az�azbaz���az�az��az�������������������������R�R���R���������R��az�az�az��az����az�az����az�����az�az�az��az�azaz��azazgC�az�azazgCgCazaz�az��az�azaz��azaz��azaz�az�gCaz�azaz��azaz��azgCaz���az�azaz�az�az��az�azaz��t�azt�az��VcVEV6VrVc��V6VcVcVc	Vc
VcVcVc
VcVc��VcVc��azazazazazazazazazazazazt�4azaz !,"'az#$azaz%&azv�azaz(az)*az+azb�gQ-.|az/az0azaz12azgQ3azgQaz56<az78azaz9:azaz;azmaz=az>?az@DazABCgCazgCazazEazFazgCH�I�azJKazLyMazNfOXPTazQRazazSazt�azUVazazWt�azYcZ`[]\azt�az^_azu�u�azaazbazazt�dazeazazt�gCghpiazjmklv�azazwnoazwwazqvrtsazmazazuv�azwazazxmv�azzaz{|az}az~azazw*az���az������������|�|az|az�az�az|�az����|azaz||az�|�az��|�|az|�|az���|��|�|�|az��1��|az|az|�|�|�|az������|��az|�|az���|��|@|az��|�|��||az|��||��||az���||����||�|�|az|����az|�|��|�|�|az�����az|az�az����azaz�az|jkX����az��az��az�azv��azv�az��������v�azazw���wazwaz���azazw�azwaz��az��azwazw���azazv�������azwaz�v�azb�azazazv�azazazgQw�	

w�azazv�azazazv�azazv�azazazwazazwazazazazaz��az} _!I"2#($|%|&|'|az||)*/+-|,|az|.az|0|1|az|3@4<58|6|7|az9;|:|az|az=|>|?||azAEB||CD||az|F|G|H|azJUKPL|M||NO||azQ||RS|T|@||VW[|XY||Z@||\|]|^|az`rakb|cgd|e|f|az||hi|j||azlazmq|n|o|p|az|azazstxazuv|w|az||y|z|{|||az~�azazt��az�azaz��azaz��azgC�gCaz��az���az��azaz��az�azaz���az��az�az�az�azazwaz�az��azaz�az��wazw�azaz��az���azaz��az�az�azaz�az�az�azw�az�azaz�az��az�azaz��az�azwaz��az�|�az�az��azaz�az��azaz�ubaz���E�����az��az��az�az�azwaz�az�az�azaz�az�az�az����az�az�azw��az�az��azR7az�azaz�az�t�az���azaz�waz��az�az��az�azazw��az����az�azaz�az�az�wazaz�w�K�az�az�azw�az�azaz��azazu���	��nJazC9	j
jj�
jw��azjw�jw�azgQww�jjaz�8�#w�az j!"j�jw�$&%jjw�'j()j*1j+,j-jj./jj0wjj2j3j4j56j7jjw���:�u�;<jw�=>@w�?�w��Aw�B�jazDEGFaz@&azazHazI�iazazKL]MazN||O|P|Q|R|S|T|UV|W||X|Y|Z|[|\�|az^az_`hafbazcazdazeaz�Oazazgazv�iazazjkazlazmazazgCazop�qazr~azstazuazvazwazazxazyazz{az|azaz}azv�az�v�v���v�v��v���v��gCv��v��gCv��az��az��azaz�az��az|azaz��az�azv�az�����az�az�az�azaz�az�az��azazv�����az��������az�az�azaz�az��az��az�az��azazmaz��azmazaz�az�az�az�azgC���|az��M�MMg��azaz��az��|azN�'�azaz���az����azwkXkX�azkX����v��v�azaz�azv����v�wazaz�azw�j�jj�������az|az����||��||��||�v�|�||��||�|��||��	��	Q�	6�	�	�az���az�az�azaz���az���az��	TazazTaz	az		az	azaz		az�az				
	az		azaz	
j�			az	azaz	az	az�	az	azaz		azv�az		2az			1	azaz			(az	 	!az	"az	#az	$az	%az	&az	'az�az	)az	*az	+az	,az	-az	.az	/az	0az�azw�w�	3az	4	5�az��jaz	7	8	K	9az	:	E	;	A	<|	=	?	>|�az|	@|az|	B|	C|	Daz|	Faz	Gaz	Haz	I	J|az|azaz	Laz	Maz	Naz	O|	P|az	R	}az	S	T	d	Uazaz	Vaz	W	X	^	Y	[	Z|�!|	\	]|�|V		_	b	`	a|�|��	c�|	eaz	f	|	g	maz	h	i	kaz	jMaz	laz|�c	n	y|	o	p|	q|�0	r�0	s	t�0�0	u	v�0	w�0	x�0���0	z|	{|�0|az��	~	�		�	�az	�	�wv�t�az	�azaz	�	�azaz	�	�	�	�	�	�az	�az	�azgQazazgQaz	�azgQ	�	�az	�	�azaz|	�azaz	�	�az	�azaz	�@	�@�	�	�	�azaz	�	�az	�	�	�azaz	�	�	�az	�az	�	�azaz	�v�az	�azaz	�azkXaz	�az	�az	�	�azaz	�	�az	�az	�azaz	�w�az	�	�az	�	�az	�az	�azaz	�az	�az	�az	�	�az	�azaz	�az	�	�az	�azaz	�	�azw���	�az	�	�	�j�	�	�	�	�	�	�azgCt��1az	�j~��	�	�	�	�	�azazw�	��	��	��	���w�Jj	�
�	�
=	�
$	�	�	�	�az	�az	�	�azaz	�	�azaz	�az	�az	�az	�	�az	�az	�az	�azaz	�az	�az	��Baz	�az	�azaz	�	�azaz	�	�azaz	�	�azaz�az	�az	�	�
	�az
az
azaz


az
az|az
azf
az
	az


az

az

azaz|

az

azgC
gC

gC
gC
gC
gCgC

gC��gCaz
az
az


 az
az{�
!az
"azaz
#azgQ
%
0
&
/
'azaz
(az
)
*azaz
+
,@
-az
.az|azaz|az
1az
2
3az
4az
5az
6azaz
7
8azaz
9az
:az
;az
<azgC
>az
?
�
@
i
A
Q
B
G
Caz
Dazaz
Eaz
Faz�az
Haz
I
J|az
K
L
N
Mazaz@
O
Paz|az|
R
^
S
U
Tazazb�az
V
Wazaz
X
Y
[
Zaz|az
\
]�azfaz
_azaz
`az
a
b
faz
c
d
eazb�t�az
gazm
hazt�
j
�
k
qaz
laz
m
nazaz
oaz
paz|
r
}
saz
taz
u
x
vazaz
wT4az
y
{az
zv�az
|azv�azaz
~az
az
��az
�
�
�
�
�
�
�azaz
�az
�
�
�az��az|
�azaz
�
�
�
�az�6|j
�
�az�|�Eaz
�
�
�
�
�
�t�
�
�t�mmt�
�az
�
�
�
���
�������m
�m
��m
�
�m
�
�mt�mm
�v�
�R�S	
�az
�az
�
�az
�
�azaz
�az@
�azaz
�|az
�
�
�
�
�
�
�
�
�jjv�
�u�S�
�
�az
�azw����
�
�
�
�j
�
��
�
�
�azw��w
�j��ju��
�
�
�az
�w�
�
�
�
�
�j
�azaz�w�
�j�
�
�w�
�
�jazj
�azaz
�jj
�azaz
�
�
�
�az��az
��
��jaz|
�-
�
�az
�
�az
�az
�az
�az
�az
�az
�az
�
�
�az
�
�az
�az
�
�
�
�azazt�
�azazt�
�azaz
�azt�
�azazt�
�
�az
�azazazazazazaz�:azazaz	az
azaz
azazazazRFazaz"|az||az|az||||az !|azazN|#|$%)|&az'(|az||*|+|,|az.Raz/01|azaz23947w56wwaz8wazw:H�;<azaz=az>?az@azAazBazazCDazEazazFGazv�azazIJNazKLazMv�azv�OazPazazQazv�S�azTUeVazazWazXYazZazaz[az\]az^azaz_`azazabazazcdaz�Bazf{gazhxioj|kml|M||n|azpsq|r||aztvu|az||wM||yzaz|az|az}|~����az���wc��azv�b�gQ����v�ubt�{��azb�az����az�azgQ��ubkX�u�gQ��gQ�gQ���gQgQ��gQgQ���gQ�gQ��gQ��gQ������b���?�����?���?��?��?��
�?����?�
�?��?��?�?�
�?���?��?��?�?�
�w��azm��[���������������?U�����?U?U��?U������?U��?U�����az��az��azaz�az@az��|azg�az���az��az��az|�azaz�az��az�az�azaz�wqaz�az�azaz|���az���az|��az�az��azaz|���az�az|azaz�az����az�az�azaz|���azQ�azaz��azazazaz|azaz|	
t�jv�t�
mgQkXv�kXt�azv�b���m[azWF9*( %!#"M@|az$az|&||'az|)|az|+2,/|-.|az|0||1|az36|45|az||78az|M:az;?<|=|>||az@C|AB||azDEaz||azGMH|azIJ|azKL|az||NOSP||QR|L�|T|U||V|azazXazYZ|Gtaz\az]az^a_azaz`az|azbazcdazef�
azazghaziazazjazklazazw�ntazopazqazrazsazaz�azuvazazwazxgCyzaz{az|az}azaz~azaz�az��azaz�gCaz��az����az�az�������m�m�maz��az�az���m�az�azmazmaz�mm�az��mm�m��m�����mm�azm��t��1��gQazu��1�m�m�v�t�m�azmaz�az�az�azt�az�az�azaz��azv�az�����az�az�azv��az��az�az�azv���az�azaz��az��azv�azv�az��azaz�v��v���v��v��v�azv�az�az�az��az�az���azaz��azaz��azaz��azv�az�azaz��az�azaz��az�az�azaz��az�azazup�
��
��
�
az�����az�az�az�az�az�waz�azwazaz�az��az

az
az
az

az
az
azwaz
az
	
w

az
az

az
az

w
az�
az�azwaz

az
|azaz
az
az|

Xaz


M

6

1az
 az
!
"az
#az
$
,az
%az
&
'az
(azaz
)az
*az
+kXazaz
-az
.
/azaz
0azv�
2az
3azaz
4
5azazv�
7az
8az
9
Daz
:
;azaz
<
=azaz
>
?b�
@b�
Ab�b�
Bb�
C�Bb�
Eaz
Fazaz
Gaz
H
Iazaz
Jaz
Kaz
LgCaz
Nazaz
O
Paz
Qazaz
Raz
Saz
T
Uazaz
Vaz
Wjaz
Y
gaz
Zaz
[
\
b
]azaz
^
_�
`
aaz@b�azaz
caz
d
eazu�
fazgQ
h|
i
|
j
s
k
o
l|
m|
n||v�
p||
q|
rv�|
t
x
u|
v|
w||z�
y|
z|
{|az|
}|
~|
||
�|az
�
�
�az
�az
�
�
�
�
�az
�az
�azaz�O
�
�
�
�azdaz
�wazaz
�
�az
�az
�azaz|
�
�
�
�
�
�
�az|azaz
�az�
�
�az
�az
�az|az
�
�azaz
�@azaz
�az
�az
�
�azaz�
�
�|az
�azaz
�
�
�az
�az||az
�
�
�
�
�|
�|az
�
�az|az
�
�
�azaz
�az
�az
�az|az
�az
�
�az
�az
�
�
�azaz|az
�
�
�az
�az|
�az|az
�
�
�
�az
�
�az
�az
�v�
�az
�v�v�
�
�azv�
�
�az
�az
�az
�azv�az|az
�
�
�
�
�
�az|
�
���az
�az
�az
�
�az
�gQaz
�azaz
�|az
�
�
�
�
�
�gQgCt�b�
�
�azt�gQgC
�
�
�azu�t�az
�az
�
�
�gQgCb�az
�az
�
�	
�azaz
�az
�azt�t�t�t�t�t�t�gQt�w

azaz�azazaz�k|azaz���az�az'az!azazazaz azazt�"az#azaz$az%&azt�az(I)@*9+1,/-v�.v�v�azv�0v�az26354v�azv�v�gQgQ7gQ8azgQ:az;><az=azgQaz?azazgQazABFazCazDazEazgQgQGHazgQazJjKZLQMOazNazv�v�Pv�azRUSgQTgQv�gQVXgQWazgQYgQazgQ[f\`]az^_gQazazgQacazbv�azdev�azv�azgazhaziazazv�kzlumqnazopv�gQgQv�razstv�gQgQv�azvazwxyv�gQgQv�{az|az}azaz~azv����������az�az��azaz��azaz���az�w*az�azw*azaz����azaz�d��d�d�db�d�az�az�azQ���N�NP}N�����azaz�az��az�azaz�az�az�������az�az�az�az�az�|�|�|��|�|�||�|�az�az��azaz�az�az��az�azaz�az�az@����az��azaz�az�az|az�az��az�az@az�azaz��az�az�azMaz�azaz���az�az�azv��az�az�az|az���az��az�az�az��az�azaz�b�az���az�azHGazaz��az�az�azaz��azmv���az��az�az��azaz�az�az�|azLazaz|az�azazazaz	
azazt�
azazazaz�azazwazm+ azazazazazazazt�u�u���!$"azaz#az|az%az&'azaz(az)*az|az,4-azaz.az/az0az1az23azazgQ5az6C7>8az9<��:Vr;��V6=VTVE��?az@azazABazv�azazDazEF|GcHYIMJazKazazLazv�NVazOPazazQRazSazTazUazt�azazWXazazt�azZ[az\azaz]az^_azaz`aazbazazv�azdeazfjazghiazt�azt�azklazazt�n�o}azpazqazrsazaztuxazvazwgCazy{zazgQaz|gCazgCaz~�E�azaz����az�azaz��azazv�az�az��azaz�v�az������az��azaz��azaz@�����az�azazH:az�az�az|�az�az|az����az��az�azaz��azazw�azaz�_az�az�az|���azaz�|az��az���az�az��azaz|���az�az�azaz|���az��az||az���az�az�Oaz���������az��az|�az�az�azsGazaz||�|��||�|������������|��|�az�����azgCw�w*��v��az�gCazaz���gQgCv�gC���3��az���az�azaz߫�����azaz��az�g4�azazM��azaz�az�|azazazazH:kXv�kXazazaz	
azazazm
azazazazazazazazazazazazazazazaz�-azaz $az!az"az#az�%az&azaz'(az)azaz*+az,azaz-.azaz/az0az12az�waz4v5p6az7az8U9K:D;=az<azgC>A?@v�gCb�azBCkXgCwmazEFIGHv�v�kXazazJgCazLPMNgCkXv�OazgCQw�RSgCjt�TazmV_WZXYkX�K�K�"[w*j\]^wkXb�az`fadbazazcazw�eb�v�azgihazv�kXjmklwUv�azgCnow�azw�gCazqazrazsaztazuazv�w�azxy�z�{az|ww}~v�wwaz�������v���t�m�wv���gC�gCv����"wF�"wF�����v�v�v�v���������w��v��v�v�u������az�azwaz�azw�az�azv�azaz�az�azv��az�t��t�t���t�t���t�t�w��az���az�az�azM�az�azaz���az��az�azaz�v�az�����az�azw*az�azaz�maz�az��az��az�azaz��v�w��w��w���w�{�w�az�wcaz������az�|az�az�az�az�az�az�az���������v���azv�v��v��v�azv����v�azazv����v��v�v�azv��v�az�v���v���v�azv��v��v�v�kX�az�v�����v�azazv�v�v�azazazv�v�azazaz	azaz
az@az
azazazc�azaz|az|azazaz|az>(��20az !az"+az#az$%&��azaz'(az)*azgCt�azaz,-az.azaz/azv�az1|azaz34^az56Oaz7az8az9:az;E<azaz=>azaz?az@azAazBCazazDwazFazazGazHIazJazKazazLazMNazS�azazPQazRazSazazTUazVazazWazXYazZazaz[az\]azv�az_|az`aazbocazdazazeazfgazazhiazjazkazazlazmnaz�azpazqazazrsaztazuazvazazwazxyazzaz{azazu�az}az~az�az�azaz�az��az�azaz���az�az�az�az|���������azaz�az��azaz��az�az�azazv��|�|�|���|�����|az|�az|azaz|az|az��az�az�azaz�az|�����az���az�azaz�az��azaz��az�az�azaz��azv�azaz�az�az�az��azaz�az�az��azaz�az�az�az��azwaz��az��az���azaz�az�az�az��az�az�az�az�azaz��azaz��4az��az��azaz��azaz�az��az�az�az�az�az�azaz��az��azaz�az�az�az�az��azaz�az�az�az�az��az�azaz�jaz�az�az�az�	azazazazazazazv�v�azaz
azaz
azazazazkXaz���az?7 azazazazazazazv�az!,"azaz#$(%azaz&az't�w)azaz*+azu�az-az.2/azaz0az1azv�3az4az5az6az�az8azaz9:<;kXw�kXv�=>mv�m@uA_BMCLDEt�azFJt�GHt�Iazt�azt�Kt�azt�azt�NOVPUQt�Rt�STt�azazt�t�azWYt�Xazt�t�Z[\azt�]^azt�azt�`jt�abecdt�azazt�t�fghazt�it�azt�kt�lsmqnt�t�opazt�azrt�t�azt�tt�azv{azwt�xyt�zt�azt�|}t�azt�~t�azt����������az�az��az�v����azv�v�az��v�az�az��azwazv�azw�����az�azwazaz�az�az�azv��azaz�az�az�w�waz��az�az�azw����az��az�az�azazwaz�azv���az��azaz�v�azaz��az�azazwaz�az�az�az�waz��w��az�az�az�az���azaz�az��az�azazgQ�azaz�az��azgCaz��az����azaz�az�azt��az��v�t�az���az�az�az��azaz���az�az��azubaz�az��azt�az�v�azt�azaz|�!az���az�az�az�az��azaz�az|�az�azaz��|�az����azazazazazazgQazazazazaz	
azazb�azaz
azazazazazazazazazb�azazazazazazazazaz azazv�az"#az$|%azaz&v�'azv�)�*]+Q,?-4az./@&0azaz1az2az3azAe5az6azL7az8az9:>;<��=@&@&�|az@azAazazBCazazDEazazFazGazHIazJNKazLazMazaz�KazOPazazwazRazSTazUazazVazWXazYazazZ[\V�v��^{�^�_az`aaz|b�cazdpeazazfgazhniazjazkazlazmazazt�azomazq�r�s~txuazazvazwazgCazyazzaz{|az}azazgCazaz�az��azaz�gCaz�az�az�az�gCaz��azaz��az�az�az�azgCazaz����az�azazgC�az�az��az�az�az���gCazaz��az�azkXaz�az�azazgC�az�az�azazv��az��az��az�d��az��azaz��kXgC�Kaz��az�azaz��az�azaz�az������az|az�az��az�azgQ��az�|az���az�azaz�az�az�?�������az�azaz|az�|M�azaz�az|���az���az|azaz��azaz�az�|az�#�az��az�az�����az����gCgQkXb���b�gCw�b��az����b�v��"b���gCgQgCgQaz������w��"b�gCb��b�gQb�v�gCgQb�b�gQaz	
azaz
azv�v�azazazazazv�azazazazazv�azazazazv�azaz azaz!az"azv�az$%0&azaz'az()azaz*+az,azaz-.azaz/az�B1azaz23746�5v�v��ub8;��9m:t�az<=v�b�b�az?z@2A�BTazCazD|EFazGazHazILazJKazb�azMOu�NgCazPSQRu�azazv�az��U�VYWazXazAe|Zaz[�\saz]^az_azaz`ajbazcazazdazeazfazgazhazi�azazkazlmazaznoazpazqazazr�azt�azuazvazwazxyazazzaz{az|}azaz~azaz�b�azaz�az��azaz��az�azaz�az��azaz�az���azgCgCaz�az�azaz��az�az�az�az�az�azaz��az�azv�az�az�az�az�az�az��az��az�azaz�az��azaz��azaz�az��azaz@�az�azv�az�az��	�az����az�az����az��azaz�az�az��az�az�azv�az����az����azaz��az�azv�az�az�az�azaz�azv�az��azaz�az�az��azv�azaz�az��az�azaz�az�az�azv��az���az��az�az��azaz�az�azv��azaz�az��azaz�azv����azaz�az�az��az�azv�azaz�az�az��az�azazv�azH:|t�mv�v�t�v�t�|az
azaz
azt�azaz�+azazazazb�b�b�b�"b�b�b�b�b�b� b�!b�v�b�b�#$b�%b�&b�'b�(b�)b�b�*b�gaz,-/.azazAeaz01az�az3�4T5967az|8az|az:;|az<@=azaz>az?az�AOBC|azDJEGazF|azHIaz�N|��azKazLMazazN|azP|QazRazSazaz�UgV_azWazXYazazZaz[az\]azaz^maz`azazabazazcazdazeazfazgChyaziazjkazlazmazaznoazazpqazrazsaztazuazvazwazazxaz@zaz{�|�}�~�az�|�|az|��|azaz���azwgQaz��az��az��v����v�azazgC�azaz�t�az�az�az�azaz|����az��azaz�az�az�|az��az��az|�|Baz�az|���������@az�az@�az�az�azaz�|�az|azH:�az��az��az��@azaz@az�kuaz�5����az����az�az��az�az����������t�v�maz�v�u�b����wv��1az���azt�v���u�b�v��waz����azazv�az�az�mazaz�w��az�az�azaz��azt�azaz�az��az�az��az�v�az�azazv����azaz�t�az��az�az�az�az�az��azaz�az�azazazazazazb�azazaz	az
azazazaz
azazv�az|azazazdazaz|2!az|azazazaz azv�az"azaz#az$%azaz&az'(-az)az*az+az,azgC.az/azaz0az1azgC3az4azaz|az67o8X9I:Haz;az<=azaz>?azaz@AazBazazCDazEazazFazGazu�|azJazKLLLLMLNOLLPQLLRLSTLULLVLW�\LYcZaz[azaz\]b^`_kXkXgCaazb�azazw�dmazefkazghazij�,NH:�,azlEazn|M�|azpazqrwazstazuv��_��azxazy�E�{q|�}�~���az�azaz��az�az�azaz�az��azaz�az�az�az�az��azaz�w�az|�|�az�az�az���az��azazgQaz�az�azgQaz����azaz�v��az��az������az��azgQaz���azazgCaz�azu������azkXaz�azazkXaz��azaz��v��v��v��v��v��v��v�azv����az�az�azww��az����v�az�az�az�az�az�az�az�az�azv�azaz�v�az���az�azaz���|az�az�azaz�az�az�az�az��azaz��azv�az���az��az�'��|azaz�az��azaz�����az�az�azv��azaz�v�az��az�az�azv��az�azw�az��azaz
|azazazazazaz	azgCazaz
azmazazmazazaz���o�-�;g������O90az|| -!||"#|$|%|&|'|(|)|*|+|,||L||./|||L1|az23azaz4az56az7azaz8azubaz:az;<azaz=az>?az@azazABTjCDHEjFjjGw�jINJLKjjjjMw�jOQjPjw�RSjj����UjV_W\X[YZ�w���w�jw�]j^jjj`fadbcjw�jjej�jjgjhijw�jkjlazmonj�jpazjazrs�t�azuvazw~xazazyzazaz{az|}azaz{���az����az��azaz��az�azv�az��az�azw�az�az�azaz��azwazaz��az��wazaz��azaz�az�waz����az��az�az�az�az�az�az�az�az�azaz�v�azaz��az�azaz����az�azwaz�az�azwaz�azaz�az�az���az������az|�az�������������q���az|���az��azaz�az|�az���azaz|az�az��|�������az������az�azw�wwazw�azaz�w�azaz�az�������v�azazw*�b�azv����az�az�azaz�az|az���az��azaz��azaz��az�v��v��v��v�azv����az�az|az|azazaz`�|az
azaz	v�azazaz
azazazazazazazazazv�azLaz|az}3azazaz$az az!az"azaz#azOp%az&az'+(az)*|az|az,az-|.|/|0|1|2|�|4I5Faz67;8az9azaz:az|<az=?>azazd@CdAB`�g4azgnDEazg4azGH|azaz|JazKrazLMeazNOZPazQazazRSazazTUazVazWazazXYazv�azaz[az\]az^az_az`azazaazbcazdazazv�fazazghaziazjazazkazlmazaznoazpazazqv�azazstazuazazvazwxazazyzaz{az|azgCaz~��������������Q���_���������a����_�_���������O����_����_����������@Q�����_��������Q�az��az�azaz�|az��az|�az�����azaz�azv��az���azazv�az���az�b�azaz�b�az�az�az�az�'�����'����'�}��9G�4=�'5�%��#��A��	��������az�az��az�az�azaz�az����azaz�az��azazv�az�az��az�az����az��azaz�az��azaz�az��azaz��az�az�az�azaz��azaz�az�az��azgCazaz�az�az��az�az�az�az�azazazazazazazazwqazwqaz
azazazaz
azazazazazazazazazazazazazRTaz&azazaz azaz!az"az#$az%az��az'8(az)azaz*az+az,-azaz.az/az0az12az3azaz45az6az7az�azaz9az:az;az<=az>azaz?az@�azBtCazDfEVFazGazHazazIJazazKLQMazNazOazPazazv�azRazSazTazUazv�azWXazazYazZ[azaz\]az^az_az`azaazbazazcdazeazv�azgazhazazijazazkazlazmaznazopazqazazrsazazv�u�v�w�x�yazzazaz{|azaz}~azazaz��az�azaz�az��az�az�0azaz����az�az�azaz��azaz��az�azwaz�az�azaz��az�azaz��az�azaz�v�azaz�az��azaz��az�azaz��az�azaz��az�az�azaz��az�az����az��azaz��az�az�az�az�azaz��az�azazv���az��az�az�azaz��az�az�az�azaz�az�az��az�azv�az�azaz�az���az����az�v�az��az����az�az�az�az��az�azaz��az�az�az�azaz��azaz��az��az�az���azaz��az�azaz��az�azaz��azaz�az�az��az�az�az�azaz�az��azaz��azwFaz��azazw�azaz��azazazaz	azaz
azaz
azazazwazazazazazazazazv�azazazazazazazv� �!�"�#G$0az%&azaz'az(az)*az+azaz,-az.az/azv�az1az2@3azaz4az5az67az8azaz9:azaz;az<=azaz>?azw�azAazBazCazDazazEFazv�azHsI_JXazKazLazMNazazOazPQazRv�SazTazazUazVWaz��azYazZaz[az\azaz]^azazv�`azabgCazgCcdkgCegCfgCghgCigCgCjgCazlgCmrgCnogCpgCgCqazgCgCaztazuazv�azwazxyazazzaz{|az}az~azaz�az�az�az�az��az�az�az�az�az��az�az�azazwaz��azaz��az�az|az�azaz�az�az�az�az��az�az�az�azaz��az�azaz�az��azaz��az�az���`�:�����az�azaz��azaz�az�az�az�az��azaz�az�v�azaz�az��azgC�gC��gC�gCgC�gC�gC�gC�gC�gCj�����az��azaz�az��azaz��az�az�az�az�azaz�azv��az�az�az�azaz��azaz�az��azaz��azaz�waz��gC��gCgC��gCgC��gC�gC��gC��gC�gCgCazazgC���gCgC��gC�gC�gCgC��gC�gC�gCgC�gC�azgCgC�gC�gCgCgCgCgCgCgCw�gC	
azazaz
�Bazazazazazazazazazazazazb�azazazazaz��az -!%"az#azaz$��az&az'azaz()azaz*+az,az�Baz.azaz/az0az1az23az4az5az6az7az8az9azazw;R<az=K>az?az@azazABazazCDazEazFazGazazHazIazJazb�LPMazazNazOaz��azQaz��azSTazUazVazazWazXYZazw�[az\azaz]^azaz_�?azaybwazcdazelazfgazhjiaz|azkazaz�mpnazoazaz�qtraz|s|azuazvaz@azazxm�azzaz{�|az}azaz~azaz��azaz��az���az�azaz���az�az��az�azaz�az��az�az��az��az�azaz�az��az��az��az��az�����az�azv��azmw����az�az���azv�gQub�������"wwv���v�b�b�w�����wUwc�^�i��w���M���������a�v�<������?��������jw�w���mt�w8u��������K��v�v���u�v����K����upv��1w����wF�������az���az�azjj����m��u�v��azu�m��azw*�������wcw*wgQ��gCwv�az����azj����az�azv��gCazj��az�v�u���azmv�v�azb�gCazv�ju��Kv�t�	
mv�ubv�
v�v�upkXazazaz��azazazazazazazazazazazazaz az!azaz"@az$�%�&�'�(X)9*az+5,1-az.az/0��azaz��24az3azfaz|az67azaz8|az:I;Aaz<=?>azaz|az@az|BFCDaz|Eazazv�GazHazaz|JSKazazLMazNPazOazkXQRgCazt�wazTUWazV|az|azYrZm[c\a]_^az|az`az|azazb��azdiegfazaz|azhazt�jlazkaz@|azaznazopq|Ezaz|s{aztuxazvazwaz|yazazzgQaz|az}az~|az�az��@az|az����������az��az|az�az�az|az�az��az�|azaz|��az�az��azaz@�az�azaz|�������azaz|���az����azb�gCgQ�azazv�az���az���azaz@���az|az�azgQaz��az�az��az���azjaz�az�azaz�az�|�az|���������az|��az�|�|�|az�az|��az�az�az���azaz|az���az��azaz|az��azaz|�����az�azaz�|az��az�az�|azaz�|��az�azwaz��az�az���|az|az��az��azazz�azHGaz�T�%�����az�az��az|@az�azazazazgCazazaz|az	
az|az|azaz
azazaz�?��? azazaz�����]az|azazazazaz|az!"azaz#$azfaz&>':(-)az*+|azaz,|azaz.az/031azaz2azS�az4az5az67az8az9az�iazaz;<azaz=|az?Gaz@ADBazazC|azazEFazaz|HNILJazazK|azazMaz|OazPRazQ��azazSazNU�VsWkX\YazazZ[azM|]b^`az_|azaza|azcdaz|azefhgazv�azijazb�gQv�azlmpaznazo@wqazrazaz|t~uzvazwazazxyazaz|{azaz||}az|�����az�az|az�az|�az�azaz@�az�az�azaz|��������az��az�az��az�v�az������||��|�����azaz�az�@��@@��@�@�@�@�@@��@az�az|���az���az��azv�gC�azgCaz�az�az�|az�azaz��az����m��az�az�az�az�azaz��azazt�v���az�az�az�az�azaz��azazv��az�v��az�az�az���azaz��azazgC�gC�az�azazgQ������az��az@azaz�az|az��az���?azaz��azaz��azaz�az��azaz�az�az�@az���az�az�az�az�azaz|�azaz�az�v�az�O	azazazaz|az
az|
az@@@@@@@@@�@azazazaz�azaz|7 +!&"$|#|az%az|az'(az|az)*azaz�,2-az.az/az01kXv�v�b�az346az5V�z|az8F9@:>az;az<=azaz|?az|azACB���azazDEazaz|GazHMazIJ|KLgQazazjNazaz|PtQhR`azSTazazUazVWazXazazYazZaz[\az]az^azaz_@azaebdazcdazaz|azfazg|azinazjkazlmaz��v�azorazpazq�razazsaz|u�v�w{xazyazzazv�az|�}azaz~�|@�az�azaz@�azaz���azaz��azaz�|az��������az��az�azaz|��az�@��azaz��az�az�azaz�az��az�azaz�azv���@�|azaz�az|az��az�az��E�����az��az�@azwaz��az�|azaz��az|az������az��azaz�1az�azsG�az�azaz@�azaz��|az|����az��azaz�az��azazv����az�azaz�az|���az��az��azazjaz|�azaz��az��azgCazb�������az��azaz|���Taz�azaz|��az�az�az��az{�az�az����azgC�gCwazaz@����az���azazb���t�azazmaz��azaz|azH:kXj	azaz
az~az
azH:az|uI/azazazaz��azazazaz|&$" !Nazaz|#azaz@az%az|'*(az)azaz|az+,azaz-.az�az0;15az2az34az|az6az79az8@az:azaz|<@=az>az?az|azAFBazCazazDEazaz�GazHazaz��J[KUazLMQNPOazaz||azRS|azTaz�TazazVazWXZazY|az|az\laz]az^_j`cazabaz@azdgefv�azb�v�hiazv�gQazkazv�azazmnroazpaz��qfazazsazt|azv�w�x�yz|az{|azaz}~azaz|az�az�|��v�v��v�az���az�az�|azv����az�az|az�azaz�|az���az�az�azaz��azaz|�����azaz�����@�@�@��az�azaz|az��azaz|��������az�az�az|az�az�@az���az�az��v��v�az�azaz�i�azaz|��az���|��?az�az���az�azaz|�az�azaz�azj����az��az�azaz�az��az�azaz��azazu���az��azaz�az|az��azaz����az�az�azaz��az�azaz��azaz�@az�azaz�az��az�azaz�az��az�azaz@�"��"U�""�"� ��az|�|�az�az��� ��az�  �&�4az�4  az|az   �  � 	 W 
 3   az 
     azv�azv�az   azv�v�azaz az  v�azv�  -  %  !  az azv�az  azv�az "az #az $�&v� & *az ' (azaz )v�az +az ,jazj .az /azaz 0 1azaz 2azv� 4 @az 5 6 <az 7 8 : 9v�azv� ;azv�az =az > ?azj�az A Q B K C F Dv�az Eazv� G Iv� Hv�j Jazjaz Laz M O Nazv�azaz Pv�azaz R Saz Tazaz U Vv�azv� Xaz Y m Z daz [ \ aaz ] ^ _v�az `azv�az bazaz cazv� e iaz faz g hv�azv� jazaz k lazv�az n t oazaz p qaz r sazjw�az u zaz vaz w xazaz yazv� { }az |azv� ~ �  � �azazv�jazaz �v�az � �az �az �az � �azaz �az � �az �azaz � � �azw�w�azaz � � �az � � � � � �az �azazv�az � � �azv� �azazv� � � � � � �v�w�w�azaz �v�azaz � �azaz �v�azaz � � �az � � � � �v�azazjaz �azj � � � � � �v�azazv� �azv�az �az �azazv� �!K �!! � � � � � � � � � � �az �azv�j � �azv� � �jazazv� � � �az �azazw� � �az �w*azazv�az � � �az �az �azv� �az � �az �v�azv�az �az � �az � �az �az ��v�azaz �az �az �azv� � � �az �az � �az � � � �azazv�azv� � �az � �azv�az �azjaz �!
 � �az � �azaz �azj �! �!!azaz!azv�!!�j!azv�az!!
!azv�!	azj!az!azjaz!!az!!!!!az!azjaz!v���!!!az��j!azjazaz!!!!az!azv�az! azjaz!"!I!#!2!$!,!%!(!&azaz!'v�azaz!)az!*!+azv�azaz!-az!.!/az!0azaz!1azv�!3!>!4!:!5az!6!8az!7jazaz!9azb�az!;az!<!=azv�az!?!Daz!@az!Aaz!Baz!Cazv�!Eaz!Faz!Gazv�!Hv�azaz!Jv�az!L!�!M!{!N!f!O!U!Paz!Qaz!Razaz!Saz!Tazv�!V!\az!Waz!X!Y![!Zazazw�azv�!]!b!^azaz!_!`!av�azazv�!c!dazw�az!eazj!g!r!h!j!iaz�az!kaz!l!p!m!nazb�az!ov�azaz!qv�az!saz!t!waz!uaz!vazv�az!xaz!y!zazv�az!|!�!}az!~!�!!�!�!�az!�azv�az!�v�az!�azazv�az!�az!�v�!�v�az!�!�!�!�!�!�!�!�!�az!�azv�az!�!�!�azv�az�waz!�az!�!�azv�v�az!�azaz!�!�azaz!�azv�!�!�!�az!�az!�!�!�az!�az!�azazw�azv�!�!�!�azaz!�azv�az!�az!�azj!�!�!�!�!�!�!�!�!�az!�azaz!�az�!�!�az!�!�!�!�v�v�az!�azv�az!�az!�azjaz!�!�!�!�az!�!�azazv�az!�az!�azv�az!�az!�v�az!�!�!�!�az!�az!�az!�v�az!�azaz!�az!�azv�!�!�!�!�!�!�az!�az!�azbaz!�jaz!�azaz!�!�azazv�az!�!�!�az!�!�azazv�!�azaz!�azv�!�"!�!�!�!�!�az!�!�azv�!�!�az!�azv�v�az!�az!�az!�az!�azjaz!�"!�!�!�!�azv�azv�!�az!�azv�az"az"az"azazj""az"az""az"	az"
azazv�"azaz"
az"az"azw�""az"az|"" "az"""azaz"�azaz"az"""az"az|az"az|"!az|az"#"1az"$"%"&az|az"'"("-")azaz"*az"+",azaz|".azaz"/"0az|azaz"2az"3"4"T"5";az"6"7"9az"8�?azaz":az|"<"Paz"=">az"?"Oaz"@az"Aaz"B"C"I"D"EazgC"FgCgC"GgC"HkXgC"J"NgC"KgC"LgC"MwgCgCazaz|az"Q"Raz"Saz|azaz|az"V"W"yaz"X"Y"j"Zaz"["]"\azazt�"^az"_azaz"`"aaz"bazaz"caz"daz"e"faz"gaz"haz"iazw�azaz"k"lazaz"m"nazaz"oaz"paz"qaz"r"sazaz"taz"uaz"vaz"w"xazw�az"z"�"{az"|"�"}"�az"~"azaz"�"�azaz��|azaz|"�"�"�"�az"�"�"�az"�"�azaz"�waz@&az|az"�az"�"�"�"�"�az"�az"�"�azjv�azaz"�az"�"�azazw�"�"�"�"�"�az"�azjaz"�"�az"�azj"�azazw�"�"�azv�"�az"�az�az"�$>"�"�"�"�az"�"�az"�az"�|"�|"�||"�"�|"�|"�||"�"�||"��|"�"�az"�|az"�"�az"�az"�az"�az"�az"�"�azaz"�"�az"�azaz"�az"�v�az"�"�"�az"�az"�az"�az"�azw�az"�"�"�"�az"�"�"�az"�azb�az"�b�az"�azaz"�az"�kXaz"�"�"�az"�"�"�azb�azaz"�azb�az"�"�az"�azb�az"�$6"�$%"�"�"�az"�"�"�"�"�az"�"�az"�azg�"�azg�az"�az"�az"�"�azg�azg�az"�az"�"�az"�azazg�"�###-az#######
az#az#az##azaz#	v�az#az#az#
azaz#az#v�az#azaz#az##az#azaz#v�az#az##&#az## #az#az#az#azazv�az#!#"#$az##azv�az#%azv�az#'#(azaz#)az#*#+az#,azazv�#.#_#/#J#0#C#1#7#2az#3az#4azaz#5az#6azv�#8#=az#9#:azaz#;#<azazv�#>azaz#?az#@az#Aaz#Bazv�#Dazaz#Eaz#Faz#G#Haz#Iazazv�#K#R#Lazaz#M#Nazaz#Oaz#Paz#Qazj#Saz#Taz#U#Zaz#V#Wazaz#Xaz#YkXaz#[az#\az#]az#^azv�az#`az#a#l#baz#c#f#daz#eazazv�#gazaz#h#iazaz#jaz#kazj#m#t#nazaz#o#pazaz#qaz#r#sazv�az#u#yaz#vaz#w#xazazw�az#zaz#{#|az#}az#~azv�az#�#�#�az#�#�#�#�#�#�az#�#�az#�#�az#�#�azv�az#�azaz#�azv�#�#�#�#�az#�az#�az#�azv�az#�#�azaz#�az#�azv�az#�#�#�#�az#�azjaz#�az#�azaz#�v�az#�az#�#�v�#�#�#�#�v�#�v�v�azv�#�v�#�v�#�azv�#�azaz#�#�azaz#�azj#�#�#�az#�az#�az#�azaz#�az#�#�azaz�"az#�#�#�az#�#�az#�az#�azv�az#�azaz#�#�az#�azazv�#�#�#�#�#�#�#�az#�az#�az#�az#�azaz#�az�"#�az#�#�az#�#�azaz#�#�azazw�az#�#�az#�az#�az#�azv�az#�az#�azaz#�#�az#�az#�azaz#�azv�#�#�az#�#�azaz#�az#�az#�#�az#�azv�az#�az#�#�az#�#�az#�az#�az#�azkX#�azkX#�$#�$	#�$#�#�#�v�v�az#�v�v�#�azv�$$$$$v�azv�v�$v�azv�$v�$azv�$
$$$v�$v�$
��v�v�$v�az$$$$v�$azv�$$v�azazv�$$wcv�azv�$$"v�$$$ v�$v�$v�azv�$!v�az$#v�v�$$v�az$&azaz$'$(azaz$)az$*az$+$,$-�azaz$.az$/az$0az$1$2azaz$3az$4$5azazv�$7az$8$9az|$:$<$;az|az$=azaz|$?$Waz$@$A$L$B$I$Caz$Dazaz$Eaz$Faz$Gaz$HazgQaz$Jaz$Kaz|az$Maz$N$Oazaz$P$Q$T$R|$S||az|$Uaz$Vv�az$X$Z$Yazaz|az$[$\%8$]%$^$�$_$�$`$�$a$�$b$j$cb�$d$g$eb�$fb�b�wF$h$ib�v�v�b�$k$y$lb�$mb�b�$n$o$s$pb�b�$qw$rwb�$tb�$u$wb�$vb�ww$xwb�$zb�${b�$|b�b�$}$~b�b�$m$�b�m$�az$��$�$�$��$�v�$�v�$���v�$����^$�$�az$�v�$�$�$�$�az$�az$���$�az$�azaz��$�azaz��$�$�$�$�$�$�w�$��ia�$�b��MwF$�$�b�$����$�$�������$�az$�az$�az$���az��$�$�$�w�$�$�$�wU$�$�$�wU$�wUwU��$�$�wU����wU$�$�$�$�$�wU$�wUwUv�$�$�wUw�w�wUwUa�$�$�j$�j$�$�j$�j$�j$�jj��$�$�$�j$�$�$�$�$�jj$�$�jj$�j$�wjj$�$�$�$�jj$�$�$�jwwjj$�wj$�j$�jj�-$�j$�$�$�jju�$�j$�jj$�$�jj$�$�ju�j$�%	$�$�gC$�v�$�$�$�$�$�$�v�$�v�$��v��$�v�$��$�v�$��v��$�v�v�$�v�$�v�$�v�$�$�v�$�$�v��-�-v�$�gC%gCgC%%gCgC%%gCgC%%gC%gCgC%�^gC%
%
%gCgC%gCv�%w*%b�kX%b��Maz%%%!b�%az%az%az%%v�%%%v�%v�%v�%v�azv�az%v�% v�az%"%0%#%,m%$m%%m%&%'m%(m%)m%*mm%+t�m%-v�%.w�az%/azw�%1%3v�%2wgC%4w%5gQ%6gQ%7gQgQ�"%9%�%:%d%;%_%<%I%=%G%>v�%?v�%@v�v�%Av�%Bv�%Cv�%Dv�%E%Fv�v�b�%H��v�%J%T%K�?%L���?%M%N�?%O�?%P�?�?%Q%R�?%S�?�?a�%U%Vw*�"%Ww*%XgQgQ%Y%ZgQgQ%[%\gQgQ%]%^gQgCgQ%`%b%av�v�w�az%caz��%e%�%f%}%g%hwv�%i%mv�%jt�%k%lt�u�t�%nt�%o%vt�%p%qt�t�%r%st�%tt�%ut�t�u�%wt�%xt�t�%yt�%zt�%{t�%|t�u�%~%�%mm%�m%�mt�%�%�%�w*%�w*w*%��[w*w*gC%�%�%�%�v�%�v�gQ%�%�gQwwazaz%�%�azv�az%�%�%�%�gC%�v�%�v�%�kXv�%�%�%�u�u�%��1wq%�u�%�u�v�t�%�%�az%�%�az%�azaz%�%�az%�w�azw�az%�%�%�az%�w%�az%�az%�%�az%�az%��%�azaz�%�%�wazazb�%�'%�%�%�%�%�%�%�azaz%�az%�az%�%�az%��'az%�az%�%�az%�azazm%�az%�%�%�az%�azaz%�az%�%�az%�azaz%�az%��az%�%�%�az%�az%�%�az�'%�az�'%�%�%�%��'�'��%��'���'az%�%�azaz%�%�az%�azaz%�%�az��az%�%�%�azaz%�az%�%�az%�az%�azaz%�%�az%�azaz%��azaz%�%�azaz%�az%�%�az%�azaz%��raz%�&e%�&1%�%�az%�az%�%�az%�azaz�'az&&&&az&azaz&az&d&b�&b��az&	az&
&&$&az&
az&az&az&az&& &&&&&&wU�?���&&����[&&&&����i�&&a��-����&!az&"az&#azw8wqaz&%&&azaz&'&(azaz&)az&*az&+az&,&-azaz&.&/az&0azv�az&2az&3&>&4&7az&5az&6az�r&8azaz&9&:az&;�&<��&=��&?az&@az&Aaz&B&Zaz&C&Daz&E&Maz&Faz&G&Hazaz&Iaz&J&Kazaz&LazgC&Naz&Oaz&P&U&Qaz&Razaz&Saz&TazgC&Vaz&Waz&Xaz&YazazgC&[azaz&\&]azaz&^az&_az&`&aazaz&b&caz&dazazgC&f&�&g&�az&h&iaz&j&}&kaz&laz&mazaz&n&oaz&paz&q&w&razaz&saz&t&uaz&vazgCazaz&x&yazaz&z&{azaz&|v�az&~&�az&&�az&�azaz&�az&�gQaz&�az&�az&�&�&�azaz&�&�azaz&�&�az&�azaz&�&�azazgQ&�azaz&�b�az&�azaz|&�az&�&�&�&�&�az&�&�az&�&�az&�azaz&�&�azaz&�azv�&�azaz&�az&�&�az&�az&�azaz&�v�az&�&�&�&�&�azaz&�&�az&�azaz&�&�az&�&�v�&�&�v�v�&�&�v�&�v�v�&�azv�&�az&�azaz&�azkXaz&�&�&�az&�&�azaz&�az&�&�azaz&�az&�&�azv�azaz&�&�azaz&�az&�az&�&�az&�azaz&�az&�azv�&�&�&�&�az&�az&�az&�&�azaz&�&�azaz&�v�azaz&�&�az&�az&�azaz&�az&�az&�az&�az&�azv�&�&�az&�&�azaz&�&�az&�az&�azazv�&�az&�azaz&�az&�&�azaz&�v�azaz&�az&�az&�az&�&�azaz&�az&�az&�az&�&�azaz''az'az'azaz'az'v�azaz'''az'	'
azaz''''
az'azaz''az'azaz''azaz�az'az'az''az'azaz'az'az�1az'''+'azaz' '!azaz'"'#az'$''az'%az'&az�'(az')az'*az�az',az'-azaz'.az'/'0azaz'1az'2'3azaz'4u�az'6.G'7)~'8(Q'9'�':'=az';'<azaz|'>'�'?az'@'gaz'A'B']'C'Oaz'D'Eaz'Fazaz'Gaz'Haz'I'J'L'Kazwaz'Mazaz'Nazwaz'P'Qaz'Raz'Sazaz'T'Uaz'Vaz'Wazaz'Xaz'Y'Zaz'['\azv�v�az'^az'_az'`azaz'a'baz'caz'daz'eaz��'f��az'h'�'i't'j'o'kaz'laz'maz'nazaz��'paz'qazaz'r'sazb�az'u'~'vazaz'w'xaz'yaz'z'|az'{wazaz'}waz''�az'�az'�'�azaz'�'�az'�azaz'�'�azwaz'�az'�'�az'�azw'�az'�'�az'�azw'�'�az'�'�azwaz'�'�az'�t�azazt�'�'�'�az'�az'�az'�'�az'�'�az'�azaz'�'�azwaz'�az'�az'�'�az'�'�azazwaz'�azw'�azw'�'�'�'�'�'�azaz�Kaz'�az'�'�azaz'�az'�az'�'�az'�'�az'�azw'�azwaz'�azazw'�'�az�_'�'�'�'�'�'�'�j'�'�j'�'�jazj'�'�'�j'�jjazj'�jazj'�'�w�'�az'�az'�w�az'�'�az'�az'�'�w�azw�az'�'�'�j'�'�'�jjazj'�'�jazjaz'�'�'�'�'�j'�j'�jazazjj'�jaz'�|'�'�'�'�|'��'�'�||'�|��'�'�'�'��'�|'��|'�|�'�|�'�||�|Ba'�(0(((az((az((az(az((az(azn�(	((
azdazn�(M(
|N((((az(az(((v�azazgC@&(az((azaz(az(t�az|az(az(az((&( az(!|("|(#|($||(%�|('az((kX()(.(*az(+(,az|(-az�w�(/az@az(1(O(2(Gaz(3az(4(5(?(6(;(7(9|(8|az(:||az(<(>|(=|az|az(@(F(A(C|(B|az(D(Eaz|az||azaz(H(Iaz(Jazaz(Kaz(L(M(Naz�raz�r(Pazaz|(R(�(S(�(T(�az(U(V(Z(Wazaz(Xaz(Y|az([(l(\(a(]|(^|(_|�?(`gn|M(b(c(g(daz(eazH (f|gn(haz(i(k(jH |gnaz|(m(w(n(sM(oaz(paz(qH (r��|HG(taz(u�(vH |(x(}(y|(zazaz({(|az|`�(~`�((�(�(�(�(�(�(�,(�(�,,(�(�,,(�(�,(�,,&B(��%(��%(��%(��%(�(��%(�(��%�%*(�(��%(��%��%(�d��%`�,`�(�`��%(�`�(�`�`�,az(�(�az(�(�(�az(�(�(�m(�v�v�azgQaz(�b�az(�(�b�gC(�gCaz(�(�(�(�az(�az(�(�az|az(�(�(�(�(�(�Mazaz|azMaz(�az(�(�az(�az(�az(�az(�azaz(�(�az(�az(�azgCaz(�(�(�(�(�azaz(�az|�az(�(�(�az(�(�(�az(�az(�az(�azaz�az(�(�az(�azaz(�az�;az(�(�azaz(�(�azaz(�az(�(�azv�az(�)7(�(�az(�(�(�(�az(�(�az(�|az|az(�(�(�azaz(�az@(�azaz(�(�(�az(�az(�az(�az(�(�az(�azaz(�az�(�(�(�az(�azaz�(�azaz(�(�az(�azv�az|)))))	az)))|azaz)|)|)|�)
azaz)))az)
v�azazv�az)))6)),))!))))))w�u�u���))azmt�az))u�)v�w)) wazazb�)")&)#)%)$azwazju�)')*)())wUgQv�az)+azgQv�)-az).)2)/)1)0azazgCazv�)3az)4)5b�u�v�gCazd)8)xaz)9):)T);)E)<azaz)=)>)Aaz)?)@azw8azaz)Baz)C)Dazazv�)Fazaz)GF�)HF�)IH:)J)KH:)LH:)MH:)NH:H:)O)PH:H:)Q)RH:)SH:�9H:)U)o)V)\az)W)Xaz)Yaz)Zazaz)[gQaz)])f)^)`V6)_VcV6)a)bVcVT)cV6��)d)eV6��V6)g)k)hVc)iVc)jVcVc��Vc)l��)m��)n��VEaz)paz)qaz)raz)s)t)v)u||azaz)waz|az)y)zazaz){)|azaz)}az|)*Z)�)�)�)�)�)�az)�)�az)�azaz)�az)�)�az)�az)�az)�azaz)�)�azaz)�azgC)�)�)�azaz)�)�azaz|az)�az)�az|)�az)�azaz)�az)�)�az)�az)�az)�az)�az)�azazv�)�)�)�)�az)�)�az|az)�)�az)�az)�)�)�)�az)�azaz)�)�az)�azwcaz)�az)�az)�azaz)�az)�az)�)�az)�az)�u�azu�az)�)�)�|az)�)�)�)�)�azaz)�az)�az)�gCazaz)�az)�az��az|)�*)�*)�|)�)�)�)�az)�az)�az)�az)�az)�azw�)�)�az)�az)�az)�)�azaz)�)�az)�)�)�az)�az)�azaz)�az)�azJ�)�azaz)�)�azaz)�az)�azJ�)�)�)�)�az)�)�)�az�j�)�)�w�jj)��azaz)�az)�)�azeaz)�*)�*az)�)�)�)�az)�azjazaz)�az)�azj*az***azjaz*azw�*jaz***	az*
jaz*az**
az*az*azaz*az*azv�*az*azaz*�az**az*|*az*az|**az||�** azgC*!*/*"*-az*#*$azaz*%*&***'*(az|*)az|azaz*+az*,|azaz*..�az*0*;*1azaz*2az*3az*4*5*8*6*7azv�maz*9*:wazazt�*<az*=az*>*N*?*Gaz*@az*Aaz*Baz*Caz*D*Eaz*Fazv�az*Hazaz*Iaz*Jaz*Kaz*L*Mazb�v�*Oazaz*P*Qazv�*R*S*XgC*T*U*W*Vazw�KazgCaz*Y�Kaz*[*�*\*�*]*~*^*eaz*_az*`*a*d*b*cgCazt�gC|azaz*faz*g*h*|*i*u*jaz*k*r*l*o*m*nazwwkX*p*qazv�waz*saz*tazwaz*vaz*w*{az*x*y*zv�kXwu�v�azaz*}�_az**�Mazaz*�*�az|az*�az*�*�*�*�*�*�az|*�azaz|az*�az*�|azaz*�*�*�az*�az|az*�*�az*�az*�azaz*�*�az�^az*�*�*�az*�*�*�az*�az|*�@azaz*�az|*�-O*�az*�|az*�*�+�*�*�az*�az*�az*�az*�*�*�az*�az*�az*�az*�v�az*�az*�azaz*�v�az*�+*�*�*�az*�*�*�*�v�*�*�*�v�*�v�*�azv�*�v�*�*�v�*�v�az*�v�azv�*�*�*�az*�azaz*�*�azazv�az*�az*�v�az*�*�*�v�*�v�v�*�*�v�azv�*�*�*�*�v�*�v�*�v�az*�*�v�*�v�*�azv�*�v�azv�*�v�*�v�v�*�v�az*�*�*�*�az*�*�*�*�az*�azaz*�*�azv�azaz*�*�azaz*�az*�azv�az*�az*�*�*�*�*�*�azaz*�v�azaz*�*�azv�az*�azaz*�v�azaz*�az+++++az++azv�azaz++azazv�+	+az+
az+v�azaz+
+azv�az++7++!az++az++++v�+v�+v�+azv�+v�+v�+v�azv�+v�+v�v�+ azv�+"+,az+#az+$az+%+&+)+'azaz+(azv�+*azaz++jaz+-+1az+.+/az+0azazgC+2azaz+3az+4+5azaz+6azv�+8+\+9+Q+:+D+;+@+<+>az+=azw�az+?�
azaz+Aaz+B+Cazv�azaz+E+F+J+Gaz+Haz+IF�azgC+K+M+Lazw�az+N+Paz+OazgCv�az+Razaz+S+T+Waz+U+Vazazv�+Xaz+Y+ZgCazaz+[v�az+]+l+^+g+_az+`az+a+daz+b+cv�v�az+e+fv�azv�azaz+haz+iaz+j+kazazv�+m+�+n+|+o+v+p+saz+q�+r�gC+t+uazv�v�az+w+y+xazazv�+zaz+{azazv�+}+�+~az+azazv�+�+�az+�v�+�v�azaz+�v�az+�+�az+�+�az+�+�azw�az+�azv�az+�+�az+�azazw�+�,z+�,+�+�+�az+�+�+�+�+�+�+�+�+�az+�+�+�v�azgQaz+�gQaz+�+�az+�az+�gQaz+�azaz+�azgQ+�+�+�+�+�+�az+�azgQgQaz+�azazgQ+�azaz+�+�azazgQaz+�+�+�az+�az+�az+�gQaz+�+�az+�+�+�azgQgQaz+�+�v�+�gQaz+�+�azgQgQaz+�+�+�+�+�+�az+�+�+�+�azazgQaz+�gQazaz+�v�+�azgQ+�+�+�+�+�+�az+�gQazv�az+�+�+�gQazgQ+�azv�az+�+�az+�az+�gQaz+�az+�+�azgQazgQ+�az+�+�+�+�v�+�gQ+�gQaz+�azgQaz+�az+�az+�azgQazaz+�+�+�+�azaz+�az+�+�az+�azaz+�gQaz+�,+�,+�+�az+�az+�+�azgQazaz+�azv�az,az,az,�az,,	,az,az,azv�azaz,
,,,azaz,
azw�,,v�azaz,azgQ,,i,,V,,:,,*,,&,,!,,az,az,azgQ,,az,azgQaz, gQaz,",$,#azjazaz,%v�az,'az,(azaz,)azv�,+,6,,,/az,-az,.azv�,0,2,1azazv�,3az,4,5gQazazv�,7az,8azaz,9�az,;,I,<,Aaz,=az,>az,?az,@v�az,B,Eaz,C,Dazv�azaz,F,Gazaz,Hazw�,J,Q,K,Naz,Laz,Mazv�,Oaz,Pazazv�,Raz,Sazaz,Taz,Uv�az,W��,X,]az,Yaz,Zaz,[,\azazv�,^,eaz,_,`,b,aazazv�az,cv�,dv�azaz,faz,g,hazu�az,jazaz,kaz,l,m,u,n,r,oaz,p,qw�azgCazaz,saz,tv�az,vaz,waz,xaz,yazazw�,{,�,|,�,},�,~,�,,�,�azaz,�,�az,�azv�azaz,�,�azaz,�,�azazj,�,�az,�,�az,�az,�az,�azgCaz,�az,�azaz,�az,�,�az�4az,�,�,�azaz,�az,�,�azaz,�kXaz,�az,�azaz,�az,�az,�azv�,�,�,�,�,�az,�azaz,�az,�,�azazv�az,�az,�,�azaz,�az,�w�az,�,�,�,�,�,�az,�az,�,�v�,�v�v�az,�az,�azaz,�v�az,�,�,�,�,�,�,�azazv�,�az��azaz,�az,�w�azaz,�az,�az,�w�az,�,�az,�az,�,�,�az,�v�az,�azw�,�w�azaz,�,�azaz,�az,�az,�azv�,�,�,�az,�,�,�,�az,�az,�az,�,�azaz,�azv�,�azv�,�az,�,�azaz,�azv�,�az,�,�,�,�az,�,�,�Q�az,�v�azw�,�az,�,�v�azv�azaz,�,�az,�azv�az,�-,�v���,�az,�,�--azaz-az-azv�az-az--v�v�az--&-	--
--az-az-
-azv�-azazv�az-az-az-gQ-v�az-----az-azv�azaz-az--w�azgQ--"- azaz-!v�az-#az-$azaz-%w�az-'-7-(-0az-)-*-.-+---,azv�gQazv�az-/azb�az-1-2-4az-3azv�-5az-6azazw�-8-C-9->-:-;azv�-<azaz-=v�az-?-Baz-@-Aazv�gQazv�-D-J-E-Gaz-Fv�az-Hv�az-Iazv�-Kaz-L-Nb�-MgQazgCaz-P-k-Qaz-Razaz-S-T-a-Uaz-Vaz-Wazaz-X-Yaz-Zaz-[az-\azaz-]-^azaz-_-`azgQaz-bb-c-g-d-e�4b�-fbaz-h-j-i�az�baz-l-�-mazaz-n-oaz-p-x-q-taz-raz-sazc�az-u-v-w|az�Taz-y-�az-zaz-{-|az-}az-~az-az-�az-�azaz-�-�azazw�-�az-�azazt�-�-�-�-�-�-�-�||-�|-�-�-�|-�-�||-�|-�-�|-�||�-�|-�|-�||-�-�||-��|-�-�-�-�|-�-�|�-�-���-�-���-����|-�|-�-�-�-�-�|-�|-�|-�|-�-�||-�|�|-�-�|-�||-�-�|-�|�|-�|-�||-�|-�|-�|-�-�|�|-�-�-�-�-���az-�-��|-��6��|�-�-�-��-�-�-�|�|-�-�|-�|�|�az-�-�-�-�az-�-�-��||-�|�-�-�-�az-�azazt�-�-�-�-�jgCazv�-�v�mw-�-�-���az-���-�-��-��-��-���-�-���-����-�.!-�.-�-�az-�-�-�-�-���6�az�-�|�-�v�-�-��-�����-��..�.�.��.�.�..����.	..
az.az�B.�B.
.�B.�B.�B.�B.�B�B.�B.az�B..�..��..�.��..�����.�. az�.".=.#.0.$.+.%.(.&.'��az|az.).*�az�az.,..az.-laz./az|az.1.7az.2.3.4�Oaz.5azaz.6t�az.8.;.9.:az@|azaz.<az�.>.A.?azaz.@��az.B.E.C.Daz|��azaz.F�az.H1�.I/�.J/`.K.�.L.~.M.R.Naz.Oaz|.Paz.Qv�az.S.naz.T.Uaz.Vaz.Wazaz.Xaz.Y.Zazaz.[.\.gaz.].^.b._.a.`gCkXb�gC�".caz.daz.e�".f�"gC�".haz.iaz.jaz.kaz.lazaz.m�Bazaz.o.paz.qaz.r.{.s.vgC.t.uazgCaz.w.y.xazubazb�.zb�az.|az.}azazgQ..�.�.�az.�.�azaz.�az.�az.�.�azaz.�.�az.�.�.�azaz.�.�azaz.�az.�az.�gQazaz.�az.�az.�.�azaz.�az.�gQazaz.�az.�.�|az.�.�az.�azaz.�.�az.�az.�az.�az.�az.�az.�azaz.�w�azaz.�.�.�az|.�azaz.�.�azaz.�az@.�.�az.�az.�az.�az|.�/Naz.�.�/K.�/-.�.�HGaz.�.�.�.�.�.�.�az.�azaz.�az.�.�az.�az.�azaz.�az.�w�az.�.�az.�.�azaz.�.�azaz.�az.�az.�az.�w�az.�az.�azaz.�az.�.�azaz.�az.�az.�w�azaz.�az.�.�azaz.�az.�.�az.�azaz.�.�azaz.�azw�.�/.�/az.�.�.�az.�.�azaz.�az.�.�az.�azaz.�w�az.�.�.�az.�azaz.�az.�az.�az.�w�az.�/az.�az.�.�azaz.�.�azw�az/azaz/az//az/azazw�az///az/	az/
/az/azaz/
/azaz/azw�/az/az/azaz/az//azaz/w�az//#az/az//azaz/az/az// azaz/!/"azw�azaz/$/%az/&azaz/'/(az/)az/*azaz/+az/,azw�/./3az///0azaz/1az/2v�az/4azaz/5/6/@/7azaz/8az/9az/:az/;az/<az/=az/>az/?azv�az/Aaz/B/Caz/Daz/Eazaz/F/Gazaz/H/I/Jv�azazkX|/L/Md|az/O/Y/Paz|/Q/R/Uaz/S/Tazaz|/Vaz/W/X|azaz|az/Z/[az/\az/]az/^azaz/_azgC/a/�/b/�/c/oaz/d/e/n/f/maz/g/haz/i/jaz|/kaz/lazAazaz|az|/paz/q|/r/�/s/x/t�1/uazaz/vaz/ww�K/y/�/z/�/{t�/|az/}t�/~/�t�/t�/��t�/�t�/�azt�az/�t�/�t�t�azaz/�/��Z/�t�/�t�t�/�t�azaz/�/�/�az/�/�azwazaz/�azw/�/�/�azaz|/�/�az/�/�az/�azaz�'/�/�/�/�|azaz/�/�/�/�az|azaz/�/�az/�az|az/�az/�az|az/�/�/�azaz/�az/�az|az/�az/�az/�/�azaz/�/�|/�az/�azaz/�/�az�/��/�az�/�1�/�/�/�/�/�/�/�/�/�az/�az/�az/�azaz/�/�az/�azazgC/�/�az/�az/�az/�/�/�az/�/�az�4azaz/�/�azaz�az|/�/�az/�/�/�az/�|azaz|/�azaz/�|/�az/�/�az/�azaz/�az|/�/�/�azaz/�/�azaz/�az/�az�az/�/�az/�az/�azaz/�az/�az/�az/�/�az/�az/�azaz/�/�azaz/�/�azaz/�v�az/�1x/�0az/�az/�|az0|0azaz000�00�00;00)000	w�0
00azaz0az0
v�w�00az0az0azv�az00az0az0azaz0@az00$00az00az0azw�azaz00 0"0!azv�azaz0#azw�0%az0&az0'az0(azazw�0*010+0,w�azaz0-az0.az0/az00w�az02v�0307az04az05az06v�azaz0809azaz0:v�az0<0a0=0Zaz0>w�0?0@0O0A0Fw�0B0Cw�w�0D0Ew�azw�0G0K0Hw�0Iw�0Jw�azw�w�0Lw�0Mw�0Nazw�0P0Uw�0Qw�0R0Sw�0Tw�w�az0Vw�w�0Ww�0X0Yw�w�az0[az0\0]azw�0^az0_w�az0`az�
0b0n0c0h0dazaz0e0fazaz0gazw�az0i0j0kw�azw�0laz0mv�az0o0�0p0t0qw�az0r0sazazv�0uw�0v0|0w0y0xazw�azaz0z0{w�azw�w�0}0~w�0w�0�w�azw�0�0�w�0�0�az0�azw�az0�0�0�w�w�az0�azaz0�w�az0�0�0�w�0�w�0�0�az0�az0�0�0�w�0�w�v�0�0�v�w�w�az0�w�0�0�0�w�az0�az0�azw�0�w�az0�w�azaz0�az0�az0�az0�0�azaz0�0�azaz0�w�az0�10�0�0�0�0�0�0�0�0�w�0�w�0�0�w�0�w�az0�w�azw�0�w�0�w�0�0�w�0�w�0�w�az0�w�0�w�w�azw�0�0�0�0�w�0�w�w�az0�0�azw�w�0�w�b�0�w�0�0�0�az0�0�0�0�0�0�azw��4�&b0�����0�az0�0�w��
�
azaz0�azv�0�0�0�w�w�0�0�w�0�w�w�0�az0�w�az0�0�0�w�0�w�0�0�azw�w�0�0�azazj0�0�0�w�0�0�w�0�azw�0�w�w�azw�0�0�0�0�0�w�0�w�0�w�az0�0�0�0�w�azw�az0�0�w�azw�0�0�azw�az0�w�1111w�azw�1az1w�az1w�w�1azw�1	1P1
1%1w�w�11
1w�1w�1w�1111azw�1w�az1azaz1azw�111w�1w�1w�1w�1w�azw�w�11 1"w�1!w�az1#w�1$w�azw�1&12w�1'w�1(1)w�1*1/1+azw�1,w�1-w�1.w�azaz1011w�azw�131Fw�14151<w�161719w�18w�az1:1;w�azw�az1=w�1>1A1?1@w�azw�az1B1Cw�azw�1D1Ew�azw�1Gw�1H1N1I1Kw�1Jazw�1L1Mv�azazv�1Ow�azw�1Q1f1Rw�1S1]1T1W1Uw�1Vw�azw�1X1Yazw�1Zaz1[1\w�azw�az1^w�1_1bw�1`1aw�azw�1c1eaz1dazw�azw�1gw�w�1h1i1t1j1lw�1kw�az1m1paz1n1ow�azw�1q1sw�1rw�azw�azw�1u1vw�1ww�w�az1yaz1zaz1{az1|az1}|1~1�1azaz1�az�1�azaz|1�az1�1�1�1�az1�1�azaz1�1�1�az1�1�1�1�1�az1�u�w1�1�w{�azu�1�1�t�1�u�az1�azazb�|az1�azaz1�az1�az1�az1�1�azaz1�az1�|azaz1�1�1�1�1�az1�az1�1�az1�1�az1�1�gQgQaz1�1�1�1�azgQazt�1�azazgC1�1�1�azaz1�az1�1�1�az1�gCv�1�azwUaz1�1�az1�az1�az1�1�azaz|1�az1�1�az|1�1�u�1�v�az1�b�azt�1�1�1�az|az1�az|az1�3�1�31�2h1�1�az1�az1�1�1�az|az1�az1�az1�az|1�2
1�1�1�1�1�az1�1�b�1�1�az1�azb�azw1�1�az1�azwaz1�1�1�azaz1�1�|1�|1�azaz|az1�|az1�1�1�az1�azaz1�az1�1�az1�az1�az1�az1�az1�azaz1�az1�az1�az1�jaz|22az2azaz2az2az2az22az2az2	azaz�22Jaz22
az2az22!22�^2222��S�2S�2v�22222v�wc�wU��gQ222 �^2�^v�v��-2"212#2*2$2'2%2&��ub�?wU2(2)w���[�2+2.2,2-a��i���2/20���RT�222;23262425�v��"wc2728��292:�-��ub�?2<2C2=2@2>2?wUw���[2A2B�a��i��2D2G2E2F����RT2H2I��v��"2KM2LM2MM2N2R2OM2P2Q�����M2SM2T2d2U2\d2V2W2[d2X2Y2Zdg���}qdg�2]2`2^2_g�����}q2a}q}q2b}q2ctO��2eM2f2g}qtO��g�2i2�2j2y2kazaz2laz2maz2n2o2saz2paz2qaz2razv�2t2vaz2uazv�2wazu�2xu�az2z2�|2{az2||2}2~azaz22�2�az2�2�b�2�az2�az2�azgCgQ2�az2�azb�2�b�2�2�b�2�b�2�b�wUb�2�azsGaz2�2�2�2�az2�az2�|2�|2�2�2�2�2�2�azazgC2�azazgC2�az2�azazgC2�2�az2�|2�|azaz2�2�2�2�azaz2�az2�2�azv�az@|2�32�az2�2�2�2�2�2�2�2�2�2�2�2�f�fy����2�2��W��2��b�2�2�b�2�b�2�b�2�b�b�2�b�2�b��2�2�2�2�b��	��'2�2�2�2�&Bqh2�b�b�2�b�2�b�2�b�2�b�2�b�2�b����6�E2�2�2�2�2�2��T2��c�%w�f�2�2��%f��r�%2�2�2�2�`�;`�*2�2��2�2�2�2�2�2�2�����2�2��������2�2�2�2��qh��&2�2��5�D�S�b2�}2�p�2�p�2�p�2�p�2�p�2�p�2�p�p�b�2�az2�azaz2�azdaz2�az2�|2�az2�az3az|3azaz|33\33?3azaz33313	33
33az333
az|az3az|3|3|3|33|3||33|3|�q|333az|az3azwaz33+3 3&3!3#az3"az|3$azaz3%|az3'3(azv�3)|3*az|azaz3,3-3.az||3/30az|azaz32az33343:3538az3637azgCaz39b�v�azaz3;az3<3=3>azgCgCw�3@az3A3Q3B3Daz3CazsGaz3E��3F3Gaz3H3Kaz3I3Jazv�w3L3O3M3Nt�mv��w3Pazv�az3R3Z3S3Yaz3Taz3Ud3Vd3Wd3Xdc�az�az3[az|3]3l3^az3_3j3`3baz3aaz|3c3d|az3eaz3faz3gazaz3haz3i�az3kazaz|3m3raz3n3o3paz|az3q�az3saz3t3�3u3�3v3�3w3�az3x3yazaz3z3{az3|az3}az3~azaz3az3�3�az3�azv�azaz3�az3�az3�gCv�az|3�3�3�az3�3�az3�az3�az|az3�3�az|L�az3�3�az3�azaz|3�3�az3�|azaz3�|az3�3�3�3�3�az3�3�az3�az3�|az|3�az3�|`�3�3�az3�3�3�az3�az3�az3�az3�az3�3�3�3�azt�az3�azazv�az3�3�az|az3�3�3�3�3�az3�az�'3�3�3��'3��'�3�3���3�����'R(az3�3�az3�az3�3�az3�az3�3�az3�3�3�az3�az3�3��iazazgCgQw3�azaz3��,azaz3�3�az3�az|az3�3�3�az3�3�3�az3�az3�3�3�3�3�azgCaz��azaz3�az|3�azaz3�az3�3�az3�3�az3�3�3�3���az����3���3�3�az3�az3�az3�az3�az3�az3�az��az3�3�azj3�3�3�3�v�azubm3�3�mubmv�3�az3�4az444az4az44az4azaz44az4az4	azaz4
az44az4
az4azv�az4az4az4az4az4azaz4az4az4az4az44v�v�az44!az4|4az44 gQgCb�4"4*4#az4$4'@4%az4&|azaz4(4)azv�azaz4+4,454-az4.424/41az40azg�g�azaz43az44wazaz464749az48az|4:4<4;azazv�~�az4>8�4?754@6�4A5�4B4�4C4�4D4W4E4R4F4I4GH:4HAeAeE�4J4KBaHG4L4N4M@&HG@&Ae4O4P�Ez4Q@@&4SH:4T4V4UH�AE��'@&4X4�4Y4�4Z4^HG4[4\HG�4]AeE�4_4`Ba@&4a4�4b4�4c4u4d4n4eF�4fF�4gF�4h4k4i4jF���F���4lF�4mF��HF�G�4oF�4pF�4q4rF�G�4sF�4tG�F�4v44w4xF�G�4yG�4z4~4{F�4|F�4}F�G�F�F�G�4�4�F�4�4�4�F�4�F�4�4�4�G�F�G���4�F�4�F�4�F�G�F�F�G���E�Ae@&4�4�4�HGA4�4�4�AeEz��A4�4�AH:4�4�H:4�4�H:4�H:H:4�H:s�4�4�4�4�H:4�4�H:H:�H:4�4�H:H:�4�4�H:4�4�4�4�H:4�H:s�4�H:s�4�H:4�H:4�H:4�4�H:4�4�H:4�s�H:s�H:4�H:4�4�4�H:s�s�H:H:4�H:�,H:4�4�@&4�4��S4���4�AeAE@&4�4�Ae4�4�Ae4�Ae4�4�4�AeF�Ae4�Ae4�Ae4�4�F�
�
�F�A4�4�4�4�A4�4�HG4�HG@&A4���AA4�AAe4�54�54�54�4�4�4�HG4�4�4�4�E4�4�4�Ae4�t�4�t�4�t�4�t�4�t�4�t�4�t�4�t�v�t�H:E4�4�4�4�H:E4�EA4�A�4�4�EE�4�Ez�H:AE�H 4�4�4�H:4�4�H:4�H:4�H:4�H:H:@&4�H:H:5H:5H:5H:5@&H:5EzE5EAe55	@&AA5
5555
F�A5HG���5HGAeHG5A5A5A55155&5555F�@&@&F�F�55F�55#55@&F�5 @&5!@&5"@&@&�5$5%F�@&F�@&5'F�5(5,5)@&5*@&5+@&F�@&5-@&5.5/@&F�@&50F�@&525h535K545@555:5657F�@&5859@&F�@&F�5;5=F�5<F�@&5>5?F�@&F�@&5A5H5B5E5C5D@&F�F�@&5F5G@&F�F�@&@&5I5J@&F��5L5`5M5[5N5P5OF�F�@&5Q5R@&F�5SF�@&5T5U@&@&5V5W@&5X@&5Y@&@&5Z�@&5\5]@&F�5^5_F�@&F�@&@&5a5b5e5c5d@&F�@&F�5f5g@&F�F�@&5i55j5u5k5q5l5n5m@&F�@&5o5p@&F�F�@&5r5s@&F�5t@&@&F�5v5|5w5y5xGtGt�5z5{F�@&F�@&5}@&5~F�F�@&5�5�5�5�5�5�5�5�F�@&F�@&F�5�F�@&5�5�5�5�F�@&F�@&F�5�F�@&5�@&5�5�5�5�F�@&F�@&F�5�F�@&A5�5�5�5�5�5�5�5�Ae��5�5�5�5���5�Ez@&H:5�@&Ez5�AeEzAeA5���5�A5�AA5�A5�5�AA5�A5�5�AAN�5�6�5�H 5�5�5�5�5�5��'5���H:AeE5�5�5�@&5�5�F�5�F�5���F�@AeAAe5�6�5�6�5�65�5�5�5�H:5�5�H:H:�,H:5�5�5�5�H:5�5�H:5�H:5�5�H:H:5�,>H:5�5�5�H:5�H:H:5�H:,>5�H:H:,>,>H:5�5�5�5�5�5�H:5�H:5��,H:5�5�5�H:5�H:H:5�H:5�H:5��,H:H:5�s�H:H:5�H:5�5�H:5�H:5�H:5�H:5�H:5�H:5�H:s�H:5�65�65�5�5�H:5�H:5�H:5�H:5�H:5�H:5�H:s�H:5��95�65�H:5�H:5�H:5�H:6H:�9H:H:6H:6�9H:6H:6H:�*H:66H:6	6
H:6H:6H:6
H:6H:6H:6H:�H:�66I662666H:6H:6H:6H:6H:6H:6H:6H:6H:H:H:6 �6!6"6/6#6)6$H:6%H:6&H:6'H:6(H:�H:H:6*�6+H:6,6-H:6.H:�H:60H:61H:�H:636G6465H:�,66H:676@68H:H:69H:6:6;H:6<6>H:6=H:,>6?H:,>H:H:6AH:6B6CH:H:6DH:6E6FH:,>H:6HH:,>H:6J6e6K6ZH:6L6M6R6NH:6OH:H:6P6QH:H:�F6S6XH:6TH:6U6V6WH:�F�FH:H:6YH:�F6[6\�,H:�,6]6^H:6_H:6`H:6aH:6bH:6cH:6dH:�,H:6f6}6g6h�,H:6i6m6jH:H:6k6lH:H:s�s�6n6o6w6ps�6qs�6r6t6ss�H:s�6us�s�6vH:s�s�6xH:6y6zH:6{H:H:6|s�H:H:6~6H:H:6�H:6�6�H:6�H:H:�6�H:6�6�H:6�6�6�6�H:�,H:6�s�H:�H:s�H:6�6�E�6��6�6�6�H:6�H:H:�F�F6��FH:6�H H 6�H 6�6�H H 6�H 6�6�H H 6�6�H H H-6�E�6�6�6�6�H 6�H 6�H 6�H 6�H 6�6�H 6�H 6�H H 6�6�H H-H A6�A6�A6�6�6�6�A6�6�@&Ae@&6���6�F�H:6�6�6�6�6�6�6�6�6�6�EBaE6�E�6��E�6�6�6�6�6���HGEH 6��6�H EAe6�6�6�6��6���'HG6�6�EzF�Ae6�6�6��H�HG6����M6�A@&�6�76�6�6�A6�6�6�6�F�6�H E�Ae6�6�@&6�@&6��6�6�6��6��6��6���6�6��6��6���6�@&�6���6��6��6��6��@&@&6�@&6�6�@&6�@&@&6�@&6�@&6�@&�6�6�AeH 6�7��7Ba7Ba7H�Ae77Ae7777�777	��J7
AeE7�A7
�@77777��7@&HGF�7H F�777��A�7���A7E�7@&H:7E�7E�7 7+7!7%7"@&@&7#@&7$@&@@&7&@&7'7(@&@&7)7*@&@&@7,737-7.@&EH:7/70@&71@&@&72@&@74@&AeE�768u777D@&7879@&@&7:7;@&7<@&7=@&7>@&@&7?@&7@@&7A7B@&7C@&@&�@&7E7F867GE�7HE�7I87J7�7KH:H:7L7M7�7N7�7O7r7P7a7Q7WH:7R7S�,7T�,H:7UH:7VH:�,7X7]7YH:7ZH:7[H:7\H:s�H:H:7^H:7_H:7`H:s�H:7b7cH:7d7kH:7eH:7f7gH:7hH:7i7jH:,>,>H:H:7l7mH:7nH:H:7o7p7qH:,>,>H:7s7�7t7}7u7x7v,>7wH:,>H:7yH:7zH:7{7|,>H:,>H:7~7�7H:s�7�s�H:H:7�s�H:7�H:7�H:7�H:H:7�7�H:H:7��,H:7�7�s�37�7�7�7�H:7�H:7�H:7�H:7�7�H:H:�97�H:H:7�7�H:7�H:�9H:7�H:7�H:�,H:7�H:H:7�H:7�H:N77�H:7�H:7�7�7�7�7�7��,7�7�7�7�7�7��,7��,7��,7��,7��,7��,�F�,7��,7��,�,7��,�F7�7��,7�7�7�7��,�,7��,7��,7��F�,7�7�7��,�,7��,7��,�F�F�,7��,�,7��,7�7��,�F�,7��,�9�,7�7�7��7��97�7��,7�7�7�7��,�,�9�,7��,7��9�,7��,7��,7��,7��,�,�97�7��,7�7��,7��,�,7�7��,�,7��,H:�,7��,7�7�7�7��,�,7�7��,7��,�,7�,>�,�,7��,,>7�87�7�7�7�7�N7��,7��,7��,�,7�7��,7��,7��,H:�,NN*�,7�7�87�87��,�,7��,7�7��,�,8�,8s��,�,8�,8�,8s��,8�,s�8�,8	�,8
s��,88�,8
8�,�98�,8�,8�,8�,8�,88�,�9�,8�,�,88�,8888�,33�,3�,H:88 8.H:8!H:8"H:8#H:8$8%H:8&H:8'H:H:8(8)H:H:8*8+H:H:8,8-H:�H:8/H:80H:H:81H:8283H:H:8485N7N7H:87@&88Ez898q8:H:8;8X8<8Q8=8I8>H:8?H:H:8@8AH:8BH:8CH:8DH:8EH:8FH:8GH:8HH:�H:8J8MH:8K8LH:s�H:8NH:8O8PH:s�H:�8RH:8SH:8T8V8UH:H:s�8WH:s�H:8YH:8Z8a8[8^H:8\H:8]s�H:8_H:8`H:H:�8b8f8cH:8d8eH:H:H:8gH:8hH:8i8jH:8kH:8lH:8mH:8nH:8oH:8pH:�H:8r8s��Ae8tA@&HG8v8�8w8�8x8�8y@&8z8�8{8~8|H H 8}E�A88�F�@&8�AeAe8�Ae8�8�AeAe8�8�AeB�Ae@&Ez8�E�H 8�H 8�H 8�Ba@&8�8�8�8�8�8�H 8�8�H H H:8�8�E8��E�8�E8�8�8�8�E�8��H @&8�@&�E�H�8�8�E8�8�HGBaHGE8�8�AeAe8�8�Ae8�AeAe8�Ae8�Ae8��UAe8�8�8�E�8�E�8�E�8�E�E�8�E�8�E�8�8�E�8�8�E���E�E�8�E�8�8�E�8�E�E�8�8�E�E�8�8�E�8�E�E�8�E�8�E�8�E�8�E�8�E�8�8�E�E�8�E��<@&8�8�8�H 8�8�8�H 8�H�H:8�8�8�Ba��Ba@&8�Ae8�Ae8�8��Ae8�8�8���8���Ae8�AeAe��8�@&8�@&8�@&@&8�8�@&@&8�8�@&8�@&@&8�8�@&�@&8�98�8�8�8�@&8�8�8�@&H 8�AeEzAe8�E�E�8�8�E�E�8�E�8�E�8�8�E�8�E�E�8�Av8�Av8�Av8��Av8�9
8�AA8�H 99H 9H 9H H 9H 99H H 9H 99	H 9
H 9H 9H H-H 99AE�E�9@&99@&@&99@&@&99@&@&9@&9@&9�@&9E�99E99@&AA99 A9!949"AA9#9$A9%A9&9,9'9*9(9)N�3+�BA9+AIK�9-909.9/���A9192�{93A�PA959=96A97AA98A999:AA9;9<AC�A9>AA9?A9@A9A9BA9CAA9DAC�9FE�AE�9Haz9I^f9JJ�9KBV9L<�9M:S9N9�9O9�9P9e9Q9W9R9Td9Sb�d9U9VZty`�az9X9_9Yd{9Zd9[azaz9\9]azaz9^�Baz9`9aMN9bb�9c9diMMd�M9f9s9g9j9h9iMddc�9k9lt�i�c�9m9nM�I9o9p9q�IoY9rhhb$9t9w9u9vM�Ldd{9x9yb�`�m�9z9{9�9|9�9}9�9~����9��9���9�9�9��o�����-9�9�9�����9�9���9����-����9���9���9�9�����9�9�����9���9��;��9�9�9�����9�9�9���9�9���9���9���9�����9��O��9���9�����9�����9���9�����9���9���9�9������l��9���9���9���9���9���9���9����-9�9�9�9�9�9�9�9�`�nWcWL9�9�xvdi�d9�9�9�b�d9�ak9�ak9�ak9�ak9�ak)79�9�akb�j�b�9�9�9�d9�db�9�9�9�9�9�9�9�9�aNj��O9�9�p��HxvL�9�9�d9�y7d9�9�m�cWx�L�9�9�9�9�cW9�`�Q�9�9�L�Np�L�9�9�9�9�b�NN`�9�9�`�t�aN^C9�9�9�9�l�L`�b�d9�9�b�N9�9�c�Nc�9�:19�:9�:9�9�9�Ldd{9�:d9�9�9�9�M9�MM9�MO�9�M9�M9�M9�M:M:M:MM:M:M::M��Md::	::
b�b�:b�Ez:
::::NNazN:Nb�::N:Ni�NEz::::~�dLM::g4dMd{aN:::.L�: :!xv:":):#:&:$M:%McWMM:'M:(Mc�az:*N:+:,:-K�azNgC:/:0b�t�w�d:2:@:3:::4:7:5:6b�db�L:8:9c�t�li@:;:>:<:=b�ty|�b�ku:?Mn�:A:G:B:Dc�:CazL:E:F`�b�b�K�:H:P:I:Jc�b�:Kb�`�:L:McW:Nb�:Ob�x�b�:Q:Rd{�,dL:T;�:U:�:V:�:W:�:X:d:Y:Zb�g4:[:ciM:\:]:`:^iM:_iM<�iMiM:aiM:b�:iMp�N:e:�q~:f:g:sM�:h:i:nM�:j:kM�:lM�M�:mM��M�:oM�:pM�:q:rM��M�:tM�:uM�:v:|M�:wM�:xM�:y:z:{M�{��M�M�:}:~M�M�:M�:�M�:�M��b�d:�:�:�g4b�i�:�:�nW:�\�:�\�p�`�d:�:�:�:�:�:�dn�d:�:�:�:�:�:�:�:�:��*^Cb�L:�:�rXxvQ�dN:�:�:�Q�g�N:�Mc�c�:�:�:�:�:�:�Nazh�li:�:�gnb�b�Q�:�:�:�:�N*c�rX�V:�:�OT:�m�J!baz:�:�nWtyd:�:�:�:�:�M:�M:�:�MM:�M:�:�MM:�M:�:�MM:�q�M:�MM:�Mq�L�:�M:�:�:�,���:�:�:�:�b�dM`�:�:�kuL�:�:�:�:�N:�N:�N:�NOE:�N:�NN:�OTY:�N:�NQ�N:�;B:�:�:�:�b�xv:�:�:�d:�:�:�wgC:�:��iaz:�az:�az:�:�az:�:�b�azgQb�:�gCw:��i:�b�aznWM:�;:�;b�:�:�:�d:�d:�d:�:�d:�d:�d:�dd:�d:�b�d:�dd:�;d�d;M;d;d;dd;;d;d;	d;
d;d;dd;
d;�d;;akd;L;M;M;;6;;#;;M;;M;M;MM�JM;;; M;M�J�J;!�J;"�JM;$;2;%;*�J;&;';(�JM�J;)M�J;+;.�J;,�J;-�JM;/M;0M;1�J�JM;3M;4M;5M�JM;7M;8;=;9MM;:M;;M;<M�J;>�J;?MM;@;AM�JM;C;b;D;_;E;FML;G;X;H;Q;I;Lb�;J;Kb�b��;M;Ob�;Nb���;Pb�b�b�;Rb�;S;V;T;Ub�b�b�b�b�;Wb�b�L;YL;ZL;[;\LL;];^LL��;`;a`��d{m;;c;�;d;�M;e;f;jgC;ggC;h;igCgC�B;k;y;l;s;mgCgC;n;ogCgC;pgC;qgC;rgCv�;tgCgC;ugC;v;wgC;xgCgCw;z;�gC;{gC;|;}gC;~gCgC;ubgCgC;�;�gCgC;�gC;�;�gCgCgQb�d;�;�d;�;�L�L�;�L�;�;�L�;�L�L�;�;�L�;�L�;�L�;�L�L�;�;�L�L�>C;�;�;�;�;�;�;�;�M;��VQ�;�;�b�dNd{;�;�;�;�pziM[m}�M;�d{M;�;�;�;�;�;�Mc�e�;�b�;�b�;�b�;�b�;�b�;�;�b�;�b�b�p�;�;�MdiMM;�;�;�;�iMb�xvli;�;�M�Nc�L;�;�;�;�;��;���;��;��;�;��;����;;�;�;��;��;��;���;��;�;����;�;��;��;��;�;���;�;���;�;�;��;�;��;��;���;�;���;��;��J�;���;�;��;���;��;�;����o;�<�;�<;�<;�;�;�;�`�b�M;�li;�;�;�;�g4;�;�d{N+Mb�;�;�;�;���`�L�Q�;�;�akdNpz;�;�xvq~d]t�<<<`�cWak<<M�`�NM�<<t�<<	<
d{j�<b�<NN<
<N<<OENOTY<<<g4�0L�<<2d<<<'az<<azaz<gC<<< <gCgC<gC<gCgQ<!gCgC<"<#gC<$gC<%gC<&gCgCkX<(<0<)az<*azaz<+<,az<-azaz<.az</kXaz<1azazgCxv<3<4<�<5<�<6<[<7<8P�N<9<R<:<E<;<?N<<<=<>VpNVpN<@<C<A<BNVpNVpN<DVpN<F<LVp<G<H<K<INN<JVpNNVp<M<P<NN<ONVpN<QNVpNVp<S<T<ZN<U<V<Y<WVp<XNVpNVpNNVp<\<x<]N<^N<_<dN<`N<aN<bN<c^C��<e<t<f<m<g<j<h<i^CVp^CVp<k<lOc^CN;P�<n<q<o<pQ�U�Q�<r<sQ�VpVp��<uN<vN��<w^CN<y<}<zN<{N<|NN<~N<N<�NN<�OcN<�N<�N<�P�NOc<�<�N<�<�P�<�N<�N<�N<�N<�NNP�<�N<�N<�N<�<�<�<�NP�NP�<�NNP�<�<�<�<�<�<�<�<�Md`�d<�<�cW`�M�y7<�<�dc�<�`�`�<�N<�N<�<�N<�<�NU�NU�<�<�<�<�<�<��(<�<�<�<�<�<�<�<�<�5��y7��<�5)�)�D5<�<�5y7<�<�<�5D5<�<�����5�n�L�b�|�<�<�<�<�c�Lg4e�<�<��oM�<�<�<�M<�MM<�<�M<�MM<�M<�M<�<�MMd<��J<��J�J<��J<��J<�<��J<��J<��J�J<�<��J�;�J<�@~<�?<�=�<�<�<�<�<�<�<�<�<�<�i�<�M<�M<�M�~<�<�az<�<�<��~<�M�bM�~<�MM<��~MMazM�<�b�N<�<�<�<�b�g4c�K�<�<�nWt�iMb�<�=<�===rfb�db�==Ld�h==�cW=rf==	=T=
=7== ==��=
��=��==��=����Oa��========�����o=����Oa=����q�=����=��=q���=!='��="=#��=$����=%=&��q���=(��=)=2=*=.��=+��=,��=-q�����=/��=0=1��q���=3��=4��=5��=6��q���=8=M=9=B��=:=;��=<=?��==��=>Oa��=@����=AOa��=C=H��=D��=E=F����=GOa����=I��=J��=K=L��Oa��=N��=O��=P��=Q��=R��=S��q���=U=�=V=|=W=x=X=]��=Y��=Z��=[=\����q�=^��=_=m=`=f=a=d=b=cOa��Oa����=eOa��=g=i=hOa��Oa=j=k��OaOa=lOa��=n=s=o=q��=pOa��=r��Oa��=t=w��=u=v����OaOa����=y��=z={����q�=}��=~=���=��=�=�����q�=���=���=�=���q�=���Oa��=�=�=�=�=�=�=�=�=�=�=�=���=���=�q���=�=���=�q�����=���q���=�=���=���q���=�=���=�=���=�=�q���q���=�=���=���=���q�=���=�����q���=�=���=�=���=�q���=�����Oa��=�=�����=���=�=�����q�=�=�=�=�=�=�=�=���=�=���q���=���=�����q�=�����=���q�=�=�=�=�=�=�=�=�=�=�q�OaOa��=�=�Oa����Oa=�=�=���Oa��=�=�Oa����Oa=�=���=�Oa=���Oa=�=�=���Oa��Oa��=�=�=���=�=�Oa��=���=�OaOa��=�=�=�=�Oa=���=�Oa����=�Oa��=�=���Oa=�=�Oa��Oa��=�=�=�����=���=�=���q�����=�=���=�����=���q�=�=�lb�`�M=�>�=�>�=�>=�=�akMLM>>�>>I>>M>M>M>>M>M>	M>
M>M>M>
MM>MtO>>M>>M>M�;>�;>>�;>M�;M>M>>BM>>>2>>)>>$>>"> >!M��M��M>#q���>%>'>&M��M>(M��M>*>->+����>,��M��>.>/>1M>0��MM��>3>;>4>6��>5��M>7>9M>8M����>:M��><>?��>=��>>M����>@��>A��M>CM>DMM>EM>FM>G>HM�OM>J>{>K>iM>LM>M>N>]>O>V>P>S>QM>R�;M�;>T�;�;>U�;M>W>Z>X�;>YMM�;>[�;�;>\M�;>^>b>_�;�;>`>a�;�;M>c>f>d�;�;>eM�;>g�;�;>h�;M>jMM>k>lM>m>u>n>r>o>pM�;>q�;�;M>s�;>t�;M�;>v�;>w>y>x�;M�;�;>zM�;M>|>}M>~MM>>�MM>�>�MM�oy7b�>�>�>�>�>�d>�>�M�>�>�M�M�>�M�>�>�M�M�>�M�>�M��>�>�M�>�>�>�>�>�>�M�>�M�M�>�>�M��M�M�>�>�M�>�M�M�>��M�>�>��M�>�>�>�M�M�>��M�>�M�>�M�>��>�>��M��>��>�M��>�>�M�>�M�>�>�M�M�>�>�M�>�M�M��>�M�>�M�>�M�M�>�>�M�M�>��M�j�M�>�>�aNdL�nW>�?>�>�>�>�d`�>�>�>�>�>�>�M>�>�M˫M>�MM>���M>�>�>�MM>�M�JM>�M>�M�g�>�>�>�>�>�>�>�g4>�g4g4>�2g4g4>�2g4>�>�2g4>�g42g4g4>�>�g4g4>�>�g4>�g4>�g4g4>�g4>�>�g4g4>�>�>�2g42g4>�?t�>�M>�>�>�>�>�g�M>�MM>�>�MM>�>�MM>�>�M>�M>�MM�4>�M>�?g�MMg�c�p�????
`�??M�??
?M�?	M�M�h?M�M�?hM�ak��??L�??MM??M?MM�g4L�??_??P??(???q~cWd{??'y7???#? d?!dd?"dq�?$dd?%?&dd�Kb�L?)?*b�cW?+?O?,M?-?J?.?B?/?8M?0?1M?2M?3M?4MM?5?6MM?7Mq�M?9?:?>M?;?<MM?=Mq�??M?@MM?AMq�?CM?DM?EMM?F?GMM?HM?Iq�M?KM?LM?MMM?N�oMcWg4?Q?Y?R?U?S?TMb�d{�I?V?WcWM?Xdh��?Z?]?[?\�Hakd`�?^L�cWM?`?q?a?g?b?dM?cb�n�?e?fb�ddL�?h?n?i?jb�N?k?lakku?maN`�d?o?p`�nWcWb�?r?�?s?�?t?�b�?u?v?�?w?~?x?{?y?zb�gnH:gn?|?}H:gn�gn??�?�?�`�d{gnN?�?���iMgnb�?�?�?�?�?�?�d{L�`�M�?�?�L�xvyt�?�?�?�?�kuMMg4?�?�|�d��t�`�d?�b�M`�?�?�?�?�xv`�?�liM?�?�ak?�?�MK�?�MM�6?�?���cW?�L�?�P�?�?�?�?�?�?�?�?�Vp?�?�NN?�Vp?�Vp?�?�NNVp?�NN?�NP�P�?�?�P�P�?�N?�?�NNP�?�?�P�NN?�?�?�N?�N?�N?�N?�NP�N?�N?�N?�NP�?�@m?�@X?�?�?�?�?�N?�N?�NN?�?�N?�NP�NN?�P�N?�@?�?�?�?�?�?�N?�?�OcNOc?�?�OcQ�?�P�OcN;?�?�?�Oc?�?�?�N;Q�Q�?�?�N?�NOc?�?�?�OcP�N?�?�P�N��Oc?�@?�?�?�?�?�?�OcN?�Vp?�?�?�?�P�^CP�N?�@?�?�?�?�N;NQ�?�P�U�OcOc@@P���N;@@@@N@@Vp^COc@	NN@
P�Q�@@@
@N��@@P�P�@@@P�Q�P�NVp@@;@@*@@!@@@@N@Vp^C@P�N;P�@@ OcNP�N;@"@'@#@$OcN@%@&Q�N;VpOc@(@)OcVpP�@+@3@,@0@-@/@.P�P�OcP�Oc@1@2P�NNP�@4@7@5N@6NP�NN@8@9@:VpP�Q�P�@<@M@=@G@>@C@?@@P�N@A@BN;VpP�U�@D@F@EN;U�Q�P�Q�@H@LVp@I@J@KN;Q�NQ�VpN@N@TP�@O@P@R@QN;NP�@SVp^CP�@U@VNN@WQ�N@Y@d@Z@_@[@]@\NP�NN@^NP�@`@c@aN@bNP�NNP�N@e@f@iN@g@hNP�@jN@k@lP�NNP�@n@}@o@v@p@t@q@rNP�@sNP�NN@uP�NP�@w@xN@yNP�@zP�@{@|NP�NP�N@Ak@�A*@�A@�@�@�@�@�@�`�b�@�d@�@�o�@�@�o�@�@�q�o�q�o�@�@�@�o�o�q�@�@�@�@�@�o�o�@�@�o�@�o�@�o�@�o�o�@�o�@�do�q�o�@�o�o�q�@�@�b�`�b�@�b�q~@�A@�A
@�c�@�@�@�@�@�N@�N@�NN@�N@�@�@�P�NP�N@�N@�NN@�@�@�N@�@�N@�N@�NNP�@�@�@�N@�N@�NP�N@�NN@�N@�P�N@�@�N@�@�@�@�N@�@�@�@�@�NN@�@�NP�N@�@�@�NNP�@�@�@�NP�NP�N@�N@�N@�NNP�@�N@�@�@�@�@�@�@�@�P�@�P�N@�NP�N@�@�@�@�P�NNP�P�NN@�@�NN@�NP�@�@�@�@�@�N@�@�NP�NP�@�N@�NP�N@�@�@�NNP�N@�NP�@�@�N@�@�N@�N@�NN@�N@�N@�NN;N@�AAANANANP�NNAANNAANA	NP�N�b�LMA
AAAAAakc�ake�AAp�Mp�AA�kA�k�k�AAAq~dLAA)AL�AcWAcWAcWA cWA!cWA"cWA#cWA$cWA%cWcWA&A'cWcWA(?@cWc�g4A+ATA,AOA-ALA.`�A/liA0A>A1A8A2A5A3A4���!s8g4A6A7rX"Z���A9A;A:Q�^CQ�A<A=Nb���b�A?AFA@ACAAABLL�38c�ADAEli`�nWtyAGAJAHAIL�ؒؒrIAKO��Q�AMAN;q~g4NAPdAQASARb�g_NMZ�AUAbAVAYAWAXp�NaNlAZAaA[MMA\A]A`A^g�A_g�Mg�g�Mt�`�AcAfAdAeL?"�Cb�AgAjtyAhtyAity`�cWj�AlBAmA�AnA�AoA�ApMAqA�ArA�azAsazAtAuAazAvAwazazAxAyA|AzA{gQazw*�?A}A~wazw*wazA�A�A�A�azazA�A�A��?w*azubA�azA�A�A�A�w�gQw*wA�b�azw*A�azA�azA�gCA�gCA�gCA�A�A�A�gQgCgCA�gCgQA�gCA�gCgQgCMA�MA�A�MMdA�A��Xg4`�A�A�A�d]A�A�d]A�d]d]A�A�A�A�A�cEh4cEh4d]A�h4d]A�A�A�A�A�y(d]y(A�A�y(d]y(d]A�d]A�d]A�d]A�d]A�A�d]A�d]A�d]A�A�d]x�A�x�d]d]A�A�d]A�A�d]A�A�A�d]x�x�d]A�d]x�A�x�d]A�A�A�A�c�A�A�Nj�{
Lb�b�A�t�MA�A�A�A�A�A�c�Mdj*A�A�azd{b�MA�BA�A�lidA�b�A�BA�MA�BA�A�`�A�A�,,A�A�,A�,A�,,A�,A�,��A�A�A�;A�A�;A�A�;;A�;A�A�;;�cA�;A�;A�;;A�;A��c;A�BA��%�%A�A��%A��%A��%A��%�%f�BBB�%B�%�%B�%BB�%���%�%B�%B	�%B
BB
B�%�%�	B�%f��%BB�,`��BBBBv�Bt�wBazwazazBazBazu�cWBLc�BBIBNB BGB!BFB"cWB#B0B$B%gn�B&B.B'i�i�B(B)i�B*B,�eB+K,�e�eB-�ei�B/azazu�B1�+B2B4azB3wazB5BEb�B6B7B>b�B8B9b�b�B:b�B;b�B<b�B=b�p�b�B?b�B@b�BABBb�BCb�b�BDp�b�b�x�{aNBHddg4BJBPBKBNBLBMM{
dt�L�BOdnWBQBTBRBSp�ddLdBUM�d]BWE_BXC�BYB�BZB�B[BkB\BeAB]B^B_MLc�B`BadBbdBcdBddBfdBfBiBgBhdg_b��XBjxvc�cWBlB{BmBxBnBwdBoBpBvBqBsBrb�b�b�Btb�b�Bub�b�d{b�d]`�ByBzdLp�`�B|B�B}B�B~B�b�Bb�B�B�b�B�b�~��}L�nWxvMB�B�c�No�g4B�B�B�B�B�B�B�dp�B�c�B�B�c�c�B�c�B�c��OB�g_`�B�B�}�B�}�d{}�B�B�B�B�B�MB�B�B�B�B�{
B�{
�'Z7B�{
{
B�_l{
B�B�{
B�{
�y�y{
B�b�c�B�c�B�v�azB�MB�B�B�azB�`�xvB�wB�wv�B��PB��P�PB��PB��PB�B��P�PB�B��P�PB�B��PB��PB��P�6�PB�B�B�B�B�B�B�t�B�mB�v�B�mmB�aNv�M��B�B�akm�t�`�B�B�B�B�g_t�nWcWxvB�dB�B�B�B�gCB�NB�NNB�NB�Q�NB�gCQ�gCB�CyB�ChB�B�B�B�B�B�z�B�B�MB�B�MB�MB�MB�MB�MB�MB�B�MB�MB�MMB�dMMB�B�MB�MB�MMB�B�MMB�B�MMB�MB�q�Mdn�B�B�j*dakNB�CB�B�M�Lhb�CCCM�CCCakakCakCC`�akCakC	C
akCakakCakC
CakٛakCCakCakCe�akCak`�CcWakCC$C�o�oC�oCC�oC�o�oC�oC�oCC �o�oC!C"�o�oC#M�oC%C0C&C-�oC'�oC(�oC)�oC*C+�oC,�o�odC.�o�oC/M�o�oC1C2CIC3CBC4C:C5�oC6�o�oC7C8�oC9�o���oC;�oC<�o�oC=C>�oC?�o�oC@�oCAOa�oCC�oCD�oCE�o�oCFCG�o�oCHy��oCJCW�oCK�oCLCMCS�oCN�oCO�oCP�oCQ�oCR~�o�oCT�oCUCV�o�o~CXC`�oCYCZ�oC[�oC\�oC]�oC^�oC_�oM�o�oCaCb�oCc�oCd�oCe�oCf�o�oCg�oMCiCsCjCrMCkClMCmMMCnMCoMCp�;CqM�;cWb�CtCwCuCvakdM�c�Cxb�b�LCzC�C{C�C|CC}C~kuc�t�`�b�C�dg_C�C�C�C��g~`�c�C�C�b�d��dC�C�C�C�C�C�`�L�C�dC�MMC�C�MMC��;MC�C�LC�C�C�q�C�q�C�C�C�q�C�C�q�q�C�C�q�C�q��;�oC�q�q�C�C�q�C�q�q���C�C�q�C�q�C�q�C�C�C�C�C�C��;C�C�C�C��;q��;q�C��;q��;C�C�C�C�C�C�q��;q��;q�C��;q�C�C�C�C�q��;�;q��;C��;q�C�C�C�C��;C�C�C�q��;q��;q��;C�C�C�C�C�C��;q�q��;q�C�q��;C�C�C��;�;q��;C��;q�C�q�C�q�q�C�C�q�C�q�q�C�C�q���q�Ni�C�C�dC�g_C�xvd{C�dLdC�D�C�D�C�DHC�C�C�C�C�C�C�d{C�C�C�iMC�C�C�iM@iMiMC�iM��iMC�iMC�C�iMiM��xvcWLC�C�dC�C�C�C��d{ub`�C�C�LW��Rv�C�LC�Dj�C�C�DDDrXe�D�Qv�DkXwDDnWy7l`�DD%D	DD
azDazDazazD
DazDwazwazDazDDDazDazDazDazDazDDazDazDazazb�DazazDDazazD azD!D"azD#azazD$b�azD&D:D'azD(D0D)azD*azD+w�azD,D-azD.azD/azw�azazD1D2azazD3azD4D5azazD6azD7D8azD9azazkXD;DAD<azD=azD>azazD?azD@kXazazDBazDCDDazazDEDFazDGazazkXDID`DJD]DKDLMdMDMDNDT�ODO�ODP�ODQ�ODRDSMM�ODUMMDVDWMDXD[MDYDZ��M��MD\M��D^D_L�dd{dDaDdDbDcb�dNp�DeNL�DfDgD�L�DhDiL�L�DjDkD�DlDsL�DmL�DnDoL�L�DpL�DqDrL�L��L�DtDuD}DvL�DwDzDxL�L�DyL��L�D{L�D|�L�L�D~L�DD�L�D�L�L��L�D�L�D�D�L�D�D�L�D�D�L�L�D�L��L�D�L�D�D�L�L��L�D�L�D�L�D�D�L�D�L�L�D�D�L�D�L�D�L�L�D�D�L�L��D�D�D�D�D�D�D�MND�D�D�`�i�`�L�D�dNMD�D�D�D�MD�LD�LNM�c�D�D�L�n�JD�D�D�D�LMD�D�L�ML�LMD�D�D�D�D�D�p�diMD�D�D�D�D�D�D�D�D�LQ�Lb�D�D�L�NNQ�D�D�,D�Lm;NQ�D�Q�D�Q�D�NQ�m;dD�dd{D�D�D�D�c�dMg_D�D�dd{D�c�D�D�D�D�~c�lakD�D�dD�dD�dD�D�b�b�D�D�b�b�D�b�D�b�D�D�b�b�dD�akD�azazb�D�ED�D�D�D�D�D�D�D�g4MaN[D�D�dg4dg_D�D�D�D�LnWMdD�D�dg4dj�D�ED�ED�D�`�d{p�D�D�ED�Eb�D���D�B��d`�EEM�Ed{b�A�EEdd{cWxvE	EE
Ec�`�`��,E
EM�akb�dEE'EE EEEEq~LNEEEENb�Eb�E��EzNENENEL�Nb�E�,d{E!E$E"E#daNMm�E%E&lt�t�n�E(E4E)E1E*E0b�E+cWE,E-cWcWE.cWE/cW��p�b�E2E3`�L�L�dE5EOE6ENg4E7dE8E9dE:EDdE;E<dE=ddE>E?dE@ddEAdEBECdd�EEdEFdEGddEHEIdEJddEKdELEMd�dL�dEPE^EQakER�@�@ESET�@EU�@�@EVEW�@EX�@EY�@EZ�@E[�@�@E\�@E]�@b�LME`F�EaE�EbE�EcE|EdElEeEiEfEhEgq~JsGkub�EjEkdxvb�c�EmEzEnEo�I`�EpdEqEyErMEsEvEtEu�K�Xl�ZEwEx�i���b�}MLE{�0aNLE}E�E~E�EaNc�cWE�c�y7ЛL�E�dE�daNE�E�E�E�E�E�E�E�Md�M�E�E�b�g_t�ME�E�E�E�cWdLc�n�E�dy7E�E�E�E�E�E�t�E�E�E�E�E�E�E�g�q����E�g�g�E����;E�E�E�E�dtOME�E��J�JE�E��JE�E��JE��JE��JE�E��J��J�JE�E��J�JE��JE��J�E�E��;g�g�E�y�M`�E�E�E�E�E�E�E�E�E�t�d`�q~L�E�dc�E�E�E�E�`��blakE�E�L`�`�LE�E�E�E�E�E�g4ak�g_E�E�s8ddL�E�E�E�E�dL�`���E�E�MNcWdE�E�E�d{
E�E�E�y��y��E��E���MdE�E�E�E�L�E�E�E�E�E�dc�E��Xdm�E�E�E�dE�E�g&E�E�g&g&E�g&E�g&E�E�g&E�g&E�g&@g&�g&=OE��-E�i@dcWb�E�E�n��`�ME�F6E�FE�FE�F`�E�b�akFF	FLFMFMFFMFM�FMM`�F
FFFFFߜF
ߜFߜL�FߜFF�:��ߜFcWF`�tyFNaz�L�M�FFFg_Mdq~FF"FF!FF c�b�K�L�c�LF#F4F$F3F%Z�F&F+F'F(b�c�dF)F*azgQb�F,F.F-`�m�b�F/F2F0F1����~L�t�F5b�M�dF7FaF8FXF9FIF:FHF;g4q�F<q�F=F>q�q�F?F@q�FAq�FBq�FCq�FDq�FEq�FFq�FGq�q�M�Mb�FJq~FKdFL��FM��FN��FO����FPFQ��FR��FS��FT��FU��FV��FW��c���FYF\FZF[b�d{cWc�F]F`c�F^F_xvc�b�b�c�FbFlFcFe`�Fd|�dFfdFgMd{Fhd{Fid{Fjb�Fkb�b�FmF~FnFrxvFoFpNNFqgCNFsLFtFxb�Fub�FvFwb�b�b�FyF|Fzkud$F{d$b�F}b�d$b�FF�fazF�dd{F�F�F�F�F�d{F�d{WMd{F�d{�F�}�d{WMF�JF�I�F�F�F�F�F�F�M�F�`��IF�dF�F�aNF�F�aNF�aNaNF�F�aNF�aNF�aNaNF�aNF�aNF�aNF�F�aN�WaNM�F�F�F�F�M�F�M�F�M�F�M�M�F��M�M�F�M�F�M�F�F�M�M�F�M�F�M�F��M�F�F�F�F�F�d{F�MF�MMF�F�MMF�F�MF�M~Mg_F�F�F�b�F�F�b�b�F���b�F�b�b�F�F�F�p�b�b���F�F�MtyMb�F�F�F�dF�F�L�ddNF�F�F�F�c�F�F�F�F�F�b�NF�Lak'F�F�b�H:b�g&`�F�F�F�F�F�`�c�NF�gCF�b�v�F�F���c�{
F���OF�I�F�HF�G�F�F�wF�F�F�F�gQF�gQgQF�F�gQF�gQgQgCgQF�gQF�F�gQF�F�F�gQb�gQF�gQgQF�gQw*F�GsF�GAF�G#F�G
F�GF�GwgQGGgCb�GgCb�w*GGGGgCGgQwG	G
wb�b�kXGkXkXgCGGGGGGGgQkX�wGkXwGGubGb�kXGGgQv�gQb�GG GGGb�w�b�GkXb�wkXG!G"wb�gCG$G5G%G-G&G)G'G(v���v�v�gCG*G+G,gCazgC��G.G2G/G0gQgCgQG1kXubG3G4gQb�kXv�G6G<G7G:G8kXgQG9��kXgCG;v�wG=G@G>G?b�gCgCubv�gCGBG_GCGSGDGKGEgCGFGHGGkXgCb�GIGJb�gCb�gCGLGPGMGNkXb�b�GOkXgCgCGQGR�gCgQGTGYGUGVazv�GWGXgCb�b�gCGZG\G[gCkXgCkXG]kXG^kXgCG`GmGaGfGbGdGcb�gQazGegCgCv�GgGjGhgCgCGigCb�gCGkgQGlwkXGnkXGoGrGpGqgCwgCkXwkXGtG�GugQGvG�GwG~GxGzGygC�wUG{G}b�G|ubgQ�w*GG�G�G�w*gQw�G�gQw�G�G�wG�ubwUG�G�w�wcwcubG�G�G�G�G�G�w*ubw�wG�G��gQ�"ubG�G�wubG�G�w*wG�w*G��"G�G��gQv�gQG�G�G�G�G�G�G�G�G��"w�G�G�w{��v�G�G�v�G�v��MG�G�G�wU�wUwUG�gQ�G�G�G�G�wG�wU�[G�G�G�w��wU�MG�wwG�G�G�wwcG�wgQG�G��"ububkXG�G�G�G�G�G�G�G�v����-G�G�G��"wUwkXgQG�G�G�G�G�G�wcwUgQubwG�ubv�G�G�G�wwwU�Mv�G�G�G�G�G�G�ubG�v�w*w�gQG�v�v�G��MwG�G�G�v��gQG�G��Mv�G�w*wUwG�G�gCG�G�gCgCG�gCG�gCG�gCG�G�gCG�gCG�gCgCG�kXgCG�G�G�kXkXG�G�kXkXG�kXG�G�kXG�kXF�kXG�G�G�gCG�gCG�G�gCG�gCG�gCgCG�G�gCgCazgCHHH	HHHgCgCHgCv�HgCHgCgCHgCazgCH
gCHHHH
gCgC����gCHH�HH�HHb�HgQb�HHSHH3HH$HHHHv�HwHv�b�Hv�ww*HH!v�H w�wUH"H#wUv�wazH%H-H&H+H'H)H(wUv�wUH*�ub�?H,{��wH.H/wUwH0H1w��MubH2azw*H4HAH5H9H6wH7H8wwcwcwH:H=H;H<wwww*H>H@H?v�gCw{�wHBHHHCHDw��MHEHF�M�HG�Mv��MHIHNHJHK�-w*HLHMw�wb�v�HOHPv�wHQHRw�wwUHTHvHUHdHVH^HWH[HXHYw�iwUHZwUwH\H]�iwcw�"H_HbwH`Haww*v�Hcw�-a�HeHmHfHiHgHhwb�wa�azHjHkHlwU�wUwHnHpwHov�wHqHrwUv�v�HsHtw�wHuv�wHwH�HxH�HyH|HzH{b���v��H}HH~wwUv�azwcH�H�H�H�w�w{�H�b��H�H�wc�"�H�w�H�H�H�H��wH�H�{�wH�v�w*azH�H�H�H�H�v�v�wv��wH��wH�H�H�H�b�H�H�b�b�H�b�H�b�H�H�b�b�w*H�b�H�b�H�b�H�b�b�H�H�b�w*b�H�b�H�H�H�H�b�H�b�H�b�H�b�v�H�H�H�b�H�H�b�H��b�{�b�b�H�b�H�{�b�H�H�b�H�H�b�H�b�b�H�b��"b�H�H�b�b�H�wUb�H�IH�H�b�H�H�H�b�H�H�b�b�H�H�b�H�b�wUb�b�H�b�H�H�b�b�H�b�wUH�b�H�H�H�H�H�H�H�H�H�H�wUv�wUH��MwUH�H�wwUb�v�H�v�v�H�H�v��?wH�H�H�H�H�wwH��"b�H�H�H�wUv�www*H�H�H�H�w*v�w�H��?w�H�H�H�v�wv���H�wUH�b�H��b�H�IH�H�H�H�H�H�ww�H�w�v��H�H�w�wv�wIIIIw*��wwIIw*wUw�IIIII	v�I
�Mb�wII
�?b����IIIwUw��?wIIw�w*wII�II[II7II*II!IIIIv�{�{�Iv�wII v�wUwUw*I"I&I#I%w*I$w�w*�"w*I'I)w*I(wv�kXv�I+I2I,I/I-I.b�w*b�v�I0I1v�gCwUw�I3I4I6I5wv�w�"w*I8IJI9ICI:I>I;I=wI<gCwww*I?IAI@�ib��MIBgQ�w*IDIHIEIFb�wcb�IGw*kXgCIIw�IKIUILIQIMIOv�INwgCIPw*wkXIRIT<ISwv�ww*IVIXv�IWv�gCwIYb�IZwUwI\II]IpI^IgI_IcI`Iawub�Ibv��iIdIfIeb�w�wkXIhIlIiIkIjwUwwUwwUwImInIowgCazkXIqItIrwwUIskXwIuI}IvIzv�IwIxb�w*Iyb�w*I{I|b�w�b�w*I~a�wUwI�I�I�v�I�I�I�I�I�v�wUkXw�wb�I�b�wUI�I�I�I�gCI�w*I�w�"w�I����MI�I�I�I�I�v��igQb�wUI�I�gQI�wU�?w�wUI�I�I�I�I�gCI�I�gCI�gCI�upv�I�gCI�gCgCI�gCXI�I�I�gCgCI�gCI�u�gCgCI�I�I�gCI�gCI�XgCI�gCXgCgCI�I�I�I�gCI�gCI�gCgCv�gCI�gCI�I�gCgCv�Nd{I�I�I�I�I�I�I�I�dp�M�b�I�I�ak`�t�I�I�I�I�kuI�kukuy"I�y"I�I�kuI�kuy"I�kukuy"I�I�I�I�liI�az�dcWI�I�`�d]cWazI�I�I�I�I�I�rfI�I�I�I�I�b�d$d$b�I�I�b�d$I�I�I�Lb�LI�b�b�Ln�t�I�I�t�ddI�I�MI�MI�MI�MI�MMI�I�MI�MMI�I�MMI�I�MO�MI�JI�JI�JI�JMI�MI�MI�MI�I�MI�JJMJMMJMdMJMJJM�MMJJ	MJ
Jq�MMJMJ
MJJMJMJM�JMJJJ`�JxvJN�8_�LJMM�t�b�Jb�Z�b�JJ�JJ6JJ*J J"J!N��cWJ#J)J$b�J%i�i�J&J'i�J(i�Bpi�iMm;J+J3J,J2MJ-J.iJ/iiJ0J1ii�`�NJ4J5�;L�MLJ7JDJ8JAJ9J:b�dJ;LliJ<J=liliJ>liJ?liJ@�RliJBJCdakc�@JEJHJFJGg_d`�dNJIJJJ~JKJ_JLJ\q�JMJNJVq�JOq�JPq�JQq�JRq�JSJTJUq��J�Jq�JWq�JXq�JYq�q�JZJ[q�q���q�J]q�J^�Jq�J`J{JaJoJbJiJcq�Jdq�q�Jeq�Jfq�JgJhq���q�Jj�;Jk�;Jl�;�;JmJn�;q��;Jpq�Jqq�Jrq�JsJwJtq�Juq�q�Jv��q�q�Jxq�Jyq�Jzq��oJ|q�q�J}q�dJJ�J�J�J�J�J�q�q�J�J�q�J�q�J�q�q���q�J�q�J�J�q�q�J�q�J�q���q�J�J�J�q��;�JJ�J��J�JJ��JJ��JJ�d�JJ�J�J�q�J�q�J�q�q�J�J�q�q�J�q�J���q�J�J�q�J�J�q�J�q�q�J�J�q�q�J���q�J��;q�J�J�q�J�q�q�J�J�q�q���J�J�J�J�J�J�J�J�b�dJ�J�J�J�J�J�NJ�J�J�OEYOTNQ�J�J�J�N;OEQ�OTJ�J��J�Q�J�N;NQ�J�J�W�VpNJ�J�b�x�b�x�J�J�g4`�MJ�MJ�J�MMJ�J�MJ�MMJ�J�MJ�MJ�MJ�MJ�MMJ�MO�J�J�J�J�c�dMdJ�nWNnWJ�J�J�J�J�J�c�J�i�J�i�J�i�J��ei�g4b�J�J�McWd|�J�NJ�J�Mdc�c�J�O�J�LkJ�L"J�LJ�KTJ�KCLJ�J�AJ�KBL�J�J�K!L�J�J�KJ�KL�J�J�L�L�J�L�KL�KKL�KL�L�K�L�L�KKL�L�KL�K	L�K
L�KL�KL�K
L��KKL�KL�KKL�KL�KL�L�KKL�L�KL��L�KL�KKL�L�KL�KKL�L�KL�K L��K"K7K#K-L�K$L�K%L�K&L�K'L�K(K)L�K*L�L�K+L�K,�L�L�K.K/L�K0L�K1L�K2L�L�K3K4L�K5L�K6L��L�L�K8L�K9K:L�K;L�K<L�L�K=L�K>K?L�L�K@KAL��L�i�b�KD`�aNKEKFaNKGaNaNKHaNKIKJaNKKaNKLaNKMaNaNKNKOaNKPaNKQaNKRaNaNKS�WaNKUMKVKZKWKXMdKYMM�MK[c�K\K�K]K�K^K�K_Kpy�K`KaKgy�Kby�Kcy�Kdy�KeKfy��oy��%Khy�Kiy�Kjy�Kky�KlKmy�Kny�y�Ko�y�KqK�KrK�Ksy�KtK�Kuy�KvK{Kwy�Kxy�y�Kyy�Kz)xy�K|y�K}y�y�K~y�K�y�y�K�y�K�y�K�y��K�K�K�K�K�y�K�y�y�K�y�K�K�y�y�K���y�K�y�y�K�y�K��y�K�y�y�K�y�K�K�y��oy�K��o�oK��oK��oK��oK��o��K�K�K�K�y�K�K�y�K�y�y�K�y��OK�y�y�K�K�y�K�y�y�K�y�K���y�K�y�K�y�K�y�y�K�y�K�y�K�K�K�y�K�K�y�y�K���y�y�K�K�y�y�K���y�y�K�K�K�K�y�K�y�K�y�K�y�y�K�K�y�My�y�K�K�y�K�K�y�K�K�y�y�K�y�K�K�y�y�K�y�K��y�y�K�y�K�K�y�y�K��ly�K�K�K�MK�MK�K�MK�K�MK�MK�MK�MK�MMdK�MK�K�K�MMK�K�MMy�K�K�K�MM~K�MK�K�M��MK�K�MK�K�MMK��MK�K�K�MMK�K�MMK�K�MK�MMK�K�MM�;K�MK�MK�MK�MMK�MK�LMM�oLLLLLLLNLNLNLNNL	L
NLNNLL
NLNLNLNLNNLLNU�NLMMLLMMLLMMLLM�Mt�MLLM`�L `�L!LNm�L#LRL$L=L%L&dLL'L-L(L)p�lL*L�L+z�L,dc�dcWL.L/i�L0i�L1i�i�L2L3i�L4i�L5i�i�L6L7i�L8i�i�L9L:i�L;i�i�L<i�BpL>LAML?L@p�dp�LBLJLC`�LD`�LE`�`�LF`�LG`�LHLI`���`�M�LKM�LLM�LMLNM�LOM�LPM�LQM�P�M�LSLbLTLXLUNLVg4LWt�M�b�LYLZc�kuL�L[L\L�L�L]L�L^L�L_L�L`L�LaL�_�LcLdc�L�LeLiMLfLgMxvLhb�|�MLjMNLlO%LmOLnN�LoNJLpL�Lqc�Lrc�c�LsLtc�Luc�Lvc�Lwc�Lxc�Lyc�Lzc�L{c�L|c�L}c�L~c�Lc�_]c�L�cWL�L�L�L�L�L�L�ML�L�L�ML�ML�ML�ML�L�M��MML�ML�L�L�L�L�L�L�L�L�ML��;ML�L��;L��;M�;L�M�;L�L�L��;�;ML��;M�;L�L�L��;L��;�;ML�L�L�L�M�;M�;�;ML�L�L�L�L�L��;L��;L�M�;�;M�;L��;L��;M�;L�L�L�L��;M�;L��;�;ML�MML�M�;ML�ML�ML�L�L�L�MML�L�MML�ML��oM�;dL�MvL�ML�L�L�L�L�MML�L�L�L�L�L�L�dMML�dML�L�L�ddML�MMdL�L�L�L�L�ddML�L�dMMdML�ML�dML�M�;L��;L�L��;L��;�;L����;L�ML�ML�L��OL�L�ML�L�L��O�OM�OL�M�OL�L�L�L�L�L��OMML�M�OL�L�L�M�OM�OL�M�OL�ML�MMM�OMM�O�OMMM�OM�OMMM�OMM	MM
�J�JMMMM
�J�JM�JM�JM�J�oM��MMCMMMMMMMMMMMMMM�;MMMMM2MM*MM$M M"�4M!�4M�4M#M�4M%M'�4M&M�4�4M(�4M)�4MM+M/�4M,M-M.M�4�4M�4M0M1�4�4MM3M;�4M4M5M8M6M7M�4�;�4M9M:M�4�4MM<M@M=�4M>�4�4M?�4MMA�4�4MB�4MMDMGMEMF�4MMdMMHMIMMJMdMKMXMLMQMMMOMNM��q���MPM��MRMTMSM��MMUMWMV����M��MMYM_MZM]M[M\��M��MMM^��OaM`MbMMaM��McMM��MeMnMfMjMgMi��MhOa��M��Mk��Ml��Mm����OaMoMr��MpMq����MMs��MtMu��MOa��MwNMxM�MyM{MMz��MM|MMM}M~M�MM�M�M��;M�M��;�;MM�M�M�M��;M�;MM��;�;M��;MM�M��;M�M�M��;MM�;M�M��;M��;MM��;�;MM�M�M�M�M�M��;M�M�;M�M�M�;�;MM��;M�M��;MM�;M�M�M�M�M�M�;MM��;M�;M�M�M�M��;MM�;M��;M�;M�MM�M�M�MM�M�M�M�M�M�M�M��M��M�M�M�M�M��M�M�M���MM�M��M�M��M�M�M�MM�M�M�M��M�MM�M�M��M�M�M�M�M�M�M�M�M��MM�M�M�MM��M�M�M�M�M�M�M�M�M�M�M��O�OM�OM�M�MM�O�OM��OM�M�OM�M�M�M��OM�M�OM��O�OMM�M��OM��OMM�OM�NM�M�M�M�M�M�M��J�JM�JM�M�JM�M�M�M��JMM�JM��J�JMM�M�M�M�M��JM�JM��J�JMM�N�JMNNM�J�JMNNNN
NN�JMNN	�JM�JMNN
MN�JM�JNM�JNNNNNM�JM�JN�JMMNN�JM�JNMNMMNdNNN0NN)NN$N N"N!M�;�4N#M�4MN%N'�4N&�;�4�4N(M�4N*N-�4N+N,�4M�;N.�4N/M�4MN1N>N2N9N3N6�4N4N5�4�4MN7N8�4M�4MN:N<N;�4�4MN=�4M�4N?NEN@NB�4NA�4MNCND�;�4�4MNFNH�4NGM�4NIM�4MNKLNLN�NM`�NNN�NONiNPMNQN[NRMMNSNTMNUMNVNYMNWNXMM�;MNZ�;MMN\N]NdN^MN_NbMN`NaMM�;NcM��MMNeMNfMNgNhMM�;NjN|NkNrMNlMNmNnMNoMMNpMNq�JMNsMNtMNuMMNvMNwMNxMNyNzMMN{~MN}N�MN~NMN�MN�MN�MN�MMN�N�MMN��4MN�MN�N�N�MN�MN�MN�MMN�N�MMN�ŹMMN�MN�MN�N�MN�MN�MMN��;MN�N�MN�N�N�MN�N�MN�N�MN�MN�MN�N�MN�MMN�dMN�N�MN�MN�M�;N�M�;MN�MMN�MN�MN�MN�N�MMN�M��N�N�N�MN�MMN�MN�MN�MN��MMN�N�MMN�N�MN�MMN�N�MM�N�N�N�M�N�N�N�N�M�b�q~N�N�nW�NMN�Mg�MN�Ob�N�N�N�N�N�N�`�N�MN�MMN�N�N�M�4N�MN�M�4N�N�MN�MN�MN�MMN��4MN�NN�N_FN�_FN�N�_F_FN�N�_F_FN�N�N�_FN�N�_FN�_F_FN�_FN_FN�N�_FN�_FN�_FN_FN�ON�d]N�N�N�N�N�d]d]N�d]h4d]N�d]N�b�d]OOOd]Od]x�d]Od]Od]y(d]d]OOd]O	d]O
d]Od]h4d]O
OOLg_OLg4OazOazOazOOazOgCazOazOOOazazgCOazgCazOO"OO!azOO LMnWL`�O#c�dO$MazO&OUO'OEO(O)b�`�O*O5O+O-O,Nd{NO.O/NaNO0azO1NNO2O3NO4NNU�O6`�O7`�`�O8`�O9O:`�O;`�`�O<O=`�O>`�`�O?O@`�OA`�`�OB`�OCOD`�`�p�OFOOOGM�OHc�L�OIOJL�OKL�L�OLOML�L�ONL�_�OPORc�OQNp�g4OSOTLM`�OVO�dOWOXOhOYg4g4OZg4O[O\g4O]g4O^g4O_g4O`g4Oag4g4ObOcg4g4Odg4OeOfg4Ogg4@g4NOiOjO�OkO}OlMMOmMOnOoOwMOpOqMOrOuOsMOtMM�OMOvM�OOxMOyMMOzMO{O|M��MO~MMOMO�MO�O�O�MO�O�MO�MO�MMO�M�OO�MMO�O�MMO���MO�MO�O�O�O�O�O�MO��OMO�MM�OO�MMO�O�O�O�MO�MMO�O�M��MO�MMO�O�MO�MMO�M�OO�O�MO�MO�MO�O�MMO��oMO�MO�O�MO�MO�MO�O�MO�MM�OMO�O�MO�MO�MO�M�OMO�O�O�O�b�MO�`�O�azO�O�O�azO�azO�O�O�azazgQO�azazO�O�azO�azO�azO�azO�azazO�O�az�BazO�azO�O�azO�O�az�BazazO�azO��Bazg_c�O�]-O�PQO�P5O�P)O�L�O�PO�O�O�b�O�O�O�O�O�O�O�O�xv��xvO���xvO�O�O�O�xv��PW��O�O��xv�����O�xvO���O�xv3�O�b�O�b�b�p�b�O�O�PO�O�b�O�O�b�Xb�O�O�O�O���O�ّ��xv�t��O�P�xvv�b�PPP	PPPP��xvxv��Pxvxv��P
PPxvxv��P
P3�xv�xvPP"Pb�Pb�PPPPPPxvP`����P���PPPxv��xvxvP��xv��P��P P!xvxv��P#b�P$P&P%b�b�x�b�P'P(b�b�p�P*P-MP+j�P,g4L�P.`�L�P/L�P0L�P1L�P2L�P3L�P4L�>cP6PMP7P8{
ddP9P:c�P;P<NcWP=PEP>�P?�P@��PA�PBPC�PD���;PF��PGPH��PIPJ��PKPL�M�PNPPPOt�dNNMPRPkPSPWPTPUL�M�`�PVNdPXPYMp�PZPjP[M�M�P\P]M�M�P^M�P_P`M�M�PaM�PbPcM�M�PdM�PeM�PfM�PgPhM�M�PiM�cWt�PlPpPmPo`�Pn�M�dMPqT�b�PrPsMPtR�PuQ�PvQPPwP�PxP�PygCgCPzgCP{gCP|P}gCgCP~gCPP�gCgCP�v�gCP�P�P�P�P�P�P�P�P�P�P�P�w*wv��wP�P�v�gCv�P�P�P�P�v�ubP�wwv�P�P��"wwv�P�P�P�P�wP�wgQgQP�wv�P�P�ubP�P�wv�wP�P�P�P�wv�wv�v�wP�P�P�P�w�P�P���P���ubwP�P���P�w�"P�wcv�P�v��?P�P�P�P�w*�v�w*P�P�v�wwgCP�P�P�P�P�P�P�P�P�wv�w*P�wUv�v�P�P�wUP�v�w*P�P�v��-P��iv�w*P�P�P�P�P�P�w�M�MP��?w�P�P�P�P�ubgCgCb�wv�P�P�P�P�w*ubP�v�ubv�P��Mw*P��ib�P�P�P�P�P�P�wP�a�P�ub�"gCP�w�P�v��?P�wP�P�ww�ww*P�P�P�P�P�P�v�ubP�P�wv�ww�P�P��wcwv�P�P�P�P�P�wwv��w�v�P�v�P�v�ubP�QgCP�P�gCP�gCP�QgCP�gCP�gCQQQgCQb�gCQgCb�gCQgCQgCQQgCQ	gCQ
b�gCQgCQ
gCb�gCgCQQQ-QQ QQQQQQwUQgQw�w��Qw�wwQQQQQkXw*w*wQww*wQ!Q)Q"Q$wQ#ww*Q%Q'Q&wUwkXv�Q(�?wgCQ*Q+v�Q,�Mww*Q.Q>Q/Q9Q0Q6Q1Q4Q2Q3ubwgQv�w�Q5kXwQ7v�Q8�MgCv�Q:v�Q;Q<�"gCQ=w�v��Q?QHQ@QCQAQBw�?�?�"QDQEww�QFQGgCw*w*wUQIQKQJw�wQLQNQMv�w*wQOw*�"wUQQQ`gCQRgCQSQTQZgCQUgCQVQWgCgCQXQYgCgCazgCQ[Q\gCQ]gCgCQ^gCQ_v�gCQaQkQbgCQcgCQdgCQegCQfgCQggCQhgCgCQigCQjv�gCQlQ�QmQ�QnQvQoQrQpQqw�ubv�v�QsQtubw*Quwubv�QwQzQxQyw�v�v�w�Q{Q~�MQ|Q}ww�"QQ�v�w*Q�w�MubQ�Q�Q�Q�Q�Q�Q�Q�w*ww�"Q�Q�ubQ�w*ubwQ��wUQ�Q�Q�Q�Q�wubv�Q�wUv��"Q�Q�v�Q��"v�wQ�w*wcQ�Q�Q�v�Q�Q�v�wUQ�v�v��[Q�wv�Q�ww�Q�Q�Q�Q�Q�Q�Q�Q�Q�Q�ww*Q�wub�Mv�Q�Q��M�wQ�Q�v�Q�Q�Q�w�ww�wQ�Q�Q�v�w*ub�"w*Q�Q�Q�Q�Q�w*v�w*Q�Q�w*w�"��Q�Q�Q�Q�v�Q�ubv�Q��w*�wgCgCQ�Q�Q�Q�Q�Q�Q�wUwv��Q�Q�Q��?�iw�?Q�wUubQ�Q�Q�Q�wwUv�Q�wUwQ�Q�wU��Q�ww�wQ�ROQ�Q�Q�Q�Q�Q�Q�Q�Q�Q�Q�b�b�Q�b�Q�Q���"b�Q�b�b�Q�b�Q�b�azQ�b�Q�b�b�Q�Q�b�b�Q��b�b�Q�Q�b�Q�b�Q�b�b�Q��b�gQQ�gQQ�Q�gQgQQ�Q�gQgQQ�w*gQQ�kXQ�R!Q�RQ�RQ�RwQ�Rwv�ubRRRv�kXubRw*w�ubRRRw*R	R
w*wUkX�"RRR
RwwwUR��?kXR�"Rv�wRRv�RRRRRv�ubwc�?RRww*{��ekXRRR Rw�MwwubR"R0R#R+R$R'wR%w*R&ubw�R(R*wR)�iw�wwU�iR,R-v�R.R/wU�Mv�wR1R@R2R6kXR3R4v�v�R5ubwUR7R;R8R:�?R9v�wwUv�R<R>�R=�?w*kXR?�"�^RARHRBRERCRDw��Mww*RFRGv��v�wRIRLRJRK�i�M�Mw*RMRNv�w*RTubRPRdRQkXgCRRRSR[gCRTRURXgCRVgCRWgCv�gCRYgCRZgC"�R\R`gCR]gCR^R_gCgCv�RagCgCRbRcgCgCv�ReR�RfRvRgRmb�Rhb�RiRjb�b�Rkb�Rl�^b�RnRqb�RoRpb�b�gCRrb�Rsb�b�RtRub��^b�RwR�RxR|Ryb�b�RzR{b�w��R}b�b�R~b�Rw�b�b�R�b�R�R�b�R�R�b�wUb���R�R�R�wR�kXR�R�kXR�wR�<wUR�R�R�R�w�wc�Mw*wR��"wUR�R�R�R�R�R�R�R�wR�v��iR�R�R�v�wmw*v�R�R�R�wR�kX�kXR�R��v�v�wR�R�R�R�R�R�wUkXw�wUR�R�w�R�kXw*�-w*R�R�wR�wUwR�R�w�w�iwUR�R�R�R�R�R�R�R��[wUv�R�R�ww*R�v�w*R�R��MR�kXv�w*R�w�v�R�R�kXwUR�R��?w�w��?R�R�R�R�R�R�v�v�R�w�w�w*R�R�kXw�w��MR�R�R�R�kXw*v�ubR�R�gQv�v�v�R�S�R�S�R�S=R�R�gCR�gCR�R�R�gCR�gCR�R�gCgCR�v�gCgCR�R�R�gCv�v�gCR�SR�v�R�R�R�R�R�R�R�R��ubwU�iR�R�v�w*{�wUgCR�R�R�R��Mw��M�iR�R�R�R�wR�R�ubw*azR�R��"ww*v�R�SSSS�-w*w�-ubSv�v�w�SS'SSSSS	SS
S�"S�w�MS
w��wv�SSSSv�wv�gCwSgCw*SSSSwSwSww*SS��wwwUSS#SS wUw*S!S"gCwwubS$S%�"w�S&w�wv�S(S6S)S.S*S,S+ww�iS-wwv�S/S3S0S1gQw*S2�MwUubS4v�S5ub���wS7S8S;�MS9v�S:gC�?wS<ww*S>S�S?SzS@S]SASQSBSJSCSGSDSF�iSEv�v�w*�-SHSIw*gCwwUSKSNSLSMw*wgC��wSOwSPwubSRSWv�SSSTSVwSUub���wSXSZv�SYv�wUS[S\�wUv�wS^SlS_SeS`SdSaScw�Sbub�"�?�"w�?SfSiSgSh�"ww�"SjwwSkubwSmStSnSqSowUwSpv�v�SrSs�wv�v�SuSwwSvv�wSxSyw�"wv�S{S�S|S�S}S�S~S�SS�wU�Mw*wUv��MwS�S�v�wgQS�S�S�S�S�S�w�iw*S�S��?S�gCgC�?S�S�w*���-v�S�S�S�S�ww�w�wS�S��-wwwS�S�S�S�S�S�S�S��?S��?ww*��S�w���wS�S�S�w�v�w�S�S�wv���wS�S�S�S�S�S��v��Mw�S�w*ubS�S�S�S�v��-gCwS�S�w*v�wS��"�gCS�S�gCS�gCS�gCS�gCgCS�S�gCS�gCgCS�wUgCS�S�S�gCS�S�S�gCgCS�S�gCgCS�S�gCS�gCgCb�gCS�gCS�gCS�S�gCS�gCgCS�gCS�gCS�b�gCS�gCgCS�gCS�S�gCS�gCS�gCgCS�gCS�S�gCgCS�wgCS�T)S�S�S�gCgCS�gCS�S�gCS�gCgCS�S�gCS�gCgCS�S�gCgQgCS�S�gCS�S�gCgCS�S�gCgCS�gCS�S�gCgCS�gCS��?gCS�T
S�TS�S�b�S�S�b�S�S�wUb�wUb�b�S�S�TTTwUb�b�wUb�Tb�wUTT	Tb�wUTTb�wUb�b�T
Tb�Tb�wUb�TTb�Tb�TTb�b�Tb��"TT TTTTTb�w�b�Tb�gQb�TTb�TTwUb��Tb�wUb�T!T$T"b�T#b�b�wUT%T'b�T&b�wUT(b�wUb�T*T�T+T=T,T7T-T2gQT.T/gQT0gQgQT1w*gQgQT3gQT4gQT5gQT6w*gQgQT8gQT9gQT:T;gQgQT<azgQT>T�T?T]T@TLTATEwTBTCTD�M�-v��?TFTITGTH�-w*�v�TJTKw*wa��-TMTTTNTQTOTP�M�-wU�MTRTSw*v�w��-TUTXTVTWmw�M�"TYT[TZv�wU�MT\w��Mv�T^TqT_TfT`TcTaTb�Mv��-v�Tdv�Tev�ubwTgTmThTkTiTjwUww�wTlwUwubTnTpTov��"v��-w*TrT{TsTvTtTu�M�"�"w�TwTyTxw��wTz�-wUv�T|TwUT}T~w�wUwT�v�wT�a�wT�T�T�T�T�T�T�T�T��MwUwT�T�w�w�-T�v�wT�T�T�T�w*v�wv�T�T��MwUwU�MT�T�T�T�T�T�v�T�wv�w�-T�w*w�wT�T�T�wv�wT�T�wwv�T�w*v�T�v�T�T�T�T�v�T��?��?�MT�T�T�T�ub��w*w�T�T�w*T�v�wUT�v�wUv�T�T�T�T�T�T�gCT�T�gCgCT�gCT�v�gCT�gCgCT�gCT�T�gCgCu�T�T�T�gCgCT�T�gCT�gC�gCgCT�T�gCT�gCgCT�gCT�v�gCT�T�T�T�T�b�T�b�T�b�gCb�T�T�b�T�b�T�T�b�b�wUT�T�T�T�b�T�b��MT�b�b�wUT�b�T�b��Mb�T�T�T�T�b�T�b�T�T�b��"b�T�T�T�b�b�T�wUb�T�b�b�T�b�T��b�b�T�T�b�b�T�T�b�b��^T�dT�W�T�V�T�U�T�U�T�UT�kXT�UT�kXT�kXkXT�kXT�kXT�T�kXUkXUUkXgCkXgCkXUkXUkXUkXUUkXU	kXU
kXkXU�MkXU
U�UUIUU,UUUUUUUkXkX�"UU�MU�wv��MUUUUv�w�wUU��"��v�U U'U!U$U"U#ww���w�U%U&wc�"v��U(U*U)wUwwkXU+w�"U-U=U.U4U/U2U0U1v�kXww*U3ubwUubU5U9U6U7�M�U8�-v�v�U:U;ubw�U<kXw�U>UAw*U?w*U@wcv�UBUEUCUD�www�UFv�UGUHv�w�"ubUJUmUKU]ULUWUMUTUNUQUOUPw�ww�v�URUSub���Mw*UUUVv��v�UXUZwUYw*wU[U\ww*ubw*U^UdU_Ua�MU`w*v�UbUcv��i�-�?UeUhUfUgw�M�?wUUiUkUjw�Mv�v�Ul�wUnUyUoUuUpv�UqUsUrwUwubwUtwv�Uvw�UwUxv�w*v�v�UzU�U{U~U|wU}wv�kXUU�����^�U�U�U�U�wwcww*U�v�w*ubb�U�U�b�U�b�U�b�b�U�b�U��^b�U�kXkXU�U�kXkXU�U�kXU�kXkXU�U�kXU�kXgCkXU�VU�VU�U�U�U�U�U�U�U�U�U�U�U�U�U�w�w*wwUU��wU�U�U�U�U��wUv�wU�U�U�w��w*�U�U�U�U�wU�ww*U�U�w*ww�"U�U�U�U��"v�v�w*U�U�U�w�wv�wU�U�U�U�U�U�U�U�v�wwU�MU�w��w�U�U�U�U�w��w*wU�wU�wv�U�U�U�U�U�U�w*ub�?�U�U��?wU�wU�U�U�U�U�w�www�U�wubU�U�w*v�v��wU�U�U�U�U�U�U�U�U��Mwv�v�U�U�U��MwUkXw*wU�U�U�U�U�U�wcwUwUw*w�U�U�w��MwUwU�U�U�U�U�ww�MU�U�wwwUw*U�U�U�U�v�wUv�v�U�U�wv�wv�U�V	gCVgCVVVVgCVVv�gCgCv�VgCVgCgCw*gCV
VgCgCVV
gCVgCu�gCVkXVVPVV0VV VVVVVV�?v�wVv�ubVv�v�w�VVwV�v�wVw*��V!V)V"V%V#V$v�wwv�V&V(V'wv�w�wUv�V*V.V+V-V,�?wUwwkXwV/wv�V1V@V2V8V3V5V4ubv�wV6V7�w*wv�V9V<V:wUa�V;a�ubV=V>�wwV?v�wcVAVHVBVFVCVEVDw*w*wv��VGv�wubVIVLVJVKv��v�w*VMVOVN�ww�"�MVQVjVRV[VSwVTVXVUVWVV�v�ubwwUVYVZ��w�w*wV\VbV]V`V^V_wwUw*wUVawwUw*VcVfVdVe�?�Mv�ubVgVhwU�MVi�wUwVkVoVlv�v�VmVnww*v�VpVyVqVuVrVs�"v�wVtw*v�VvVxVwwv�wub�VzV}V{V|w*�?w*v�wV~wU�iV�V�V�V�V�b�b�V�V�b�b�V�b�V�V�b�b�wUV�V�V�gCgCV�gCV�V�gCgCV�gCR7V�gCgCV�gCV�gCV�V�gCu�gCV�gCgCV�gCV�V�gCgCV�gCV�V�gCV�gCV�gCgCV�ubgCV�WqV�V�V�kXV�V�V�V�V�b�b�V�V�b�V�b�V�b��?b�b�V�b�V�b�V�b�V�b�V���b�kXV�V�kXV�kXV�V�V�kXkXV�kXV�V�kXkXV��MkXkXV�V�V�kXV�kXV�kXV�v�kXkXV�V�kXkXV�v�kXV�V�kXV�V�V�V�V�V�V�b�V�b�V�V�b�V���b��V�b�b�V�V�b�b�gQV�b�V�V�b�V�b�V�b��?V�V�V�V�wUb��b�V�b��b�V�V�V�V�V�V�b�V�wV�b��?V�b�V�V�w�b�b�w�V�V�V�V�V�b��b�V�b�b���V�b�V�b�wUb�V�V�V�b�V�b�V�b�b�V��?b�V�V�b�V�V�b��Mb�V�b�b�V�V�b�b��kXWWW9WW"WWWW	Wv�WWwwW�ww�W
WWW
Wv�wckXW�v�wWW�?v�wUw*WWWWWWwWw*wwUWwUw*WwUwUw�WWwUW�MwWW!wW �Mwv��MW#W1W$W*W%W(W&w��MW'�ww�W)wwUW+W.W,W-wwwubW/W0�Mubww*W2v�W3W5W4w*w*ubW6W8W7w*w�MwubW:WSW;WAv�W<W=W?W>wv�wW@v�wv�WBWKWCWGWDWE�Mw�MWF�MubWHWI�Mv�WJw*kXw*WLWOWMWNv�wUw*�"WPWRWQw*w*�"�kXWTWbWUW\WVWXWWw�w*�"WYWZw*v�wUW[kX�iW]W`W^W_v��[w�wcWa�ub�WcWiWdWfWew�w*wWgWhw�v�v�v�WjWnWkWm�MWlv�w*wUw*WoWpww�w*�"WrW�WsW�WtW�WuWWvb�WwW{Wxb�Wyb�Wzb�wUb�W|b�W}b�b�W~b�w�W�W�W�b�W�b�b�W�b�W�v�b�b�W�W�W�W�b��"W�b��"b�W�W�b��"b�gCW�W�W�W�gCgCW�W�gCW�gCgC�"b�W�b�W�b�W�b�W��?�W�gCgCW�W�gCgCW�gQgCW�gCgCW�W�W�kXW�kXW�W�kXkXW�W�kXkXW�kXF�W�W�W�kXW�kXW�kXW�kXF�kXkXW�kXW�kXW�W�W�kX����kXW�Y�W�X�W�X2W�W�azgQW�X*W�W�W�W�W�W�W�W�W�W�v�W�w�"w*W�v�W�v�gCW�W�W�W�v�wv�gCW�v�w*�?W�W�W�W�W�W�wW�w�v�wwv�W�wv�W�W�W�W�v��-�wW�W�v���w*wcW�W�W�W�W�W�W�W�w�v�v�wW�ww�W�W�w*W�W�W�v�ub�ubv�W�ubW�gCwW�W�W�W�W�wwv�W�W�v�w�-�W�W�W�W�gQwwv�W�v�W�wwwcW�XW�XW�XW�W�v�W�gQwcW�W��-w�Xww�v�XXv�Xwub��?XXXX	�?X�v�X
Xv�w�v�ubX
XXX�v�v�Xv�wXv�ubw*XX$XXXXXXub�"XXwv�v�w�XXwUXw�wv�wX X#wX!w�X"�"wv�wv�X%X&X'wUwX(X)wwUw�wX+gCgCX,X-gCX.gCgCX/X0X1gCgQgQgCX3XuX4XkX5XMX6X@X7X;X8b�X9b�b�X:b�wUb�X<b�X=X>b�b�X?RTb�XAXHXBXEb�XCb�XD�"b�XFb�b�XG�"b�XIb�XJb�XKb�XLb��?b�XNX]XOXSXPb�XQb�b�XRb�v�XTXZXUXWb�XVwUb�XXXYb��"�"b�X[b�b�X\�"b�X^XfX_XbX`b�b�Xa�"b�b�XcXdXe�"b��"b�b�XgXhb�b�Xib�Xjb��azXlXmazazXnXoazazXpXqazXrazazXsXtazb�azXvX�XwX�XxX�XyX�XzX}b�X{b�X|b��MX~X�Xb�w�b�w�b�b�X�b�X�b�X�b��"X�b�X�X�X�X�b�X�X�b�b�wX�b�w�b�b�X�b�X��"b�b�X�X�b�b�X�X�X�X�X�b��wUb�b�X�b��"X�wX�wX�X�X�X�X�X�X�X�w�wUwU�?X�X�wUw�iwX�X�X�X�wv�wv�X�X�w��"gC�MX�X�X�X�X�X�w�w�az��wUX���?X�X�X�v��?�[X�X�wU�X�v�w*v�X�YKX�Y>X�Y'X�X�X�X�X�X�X�X�X�X�w*ubX�X�v�w�X��Mv�X�X�v�w*X�wv�wUX�X�X�X�X�X�wX�kXwww*wX�kX�?X�wX�wX�wv�wcX�X�X�X�X�X�X�X�wkXwX�v�v�wX�v��iX�X�X�wUw*X�v��X�X�v�v�v�X�kXwX�X�X�X�wX��wX�ww�"X�X�X�X�wX�ww*ubX�w*wX�w�w*wX�YX�YX�X�X�X�wX�wub�X�ubw�X�YX��Mw�YkXv�wYwUw*YY	YYww�YYw�<v��MY
YwY�M�"v�Y
v�kXYYYYYYYv�kXv�YYkX����YYYYkXv�v�w*YYwUv�v��YY!YwY w�wY"Y$Y#v�w�v�Y%Y&w�����v�Y(Y5Y)Y/Y*gCgCY+Y,gCY-gCY.gCu�gCY0gCgCY1gCY2Y3Y4gCgCY6gCY7gCgCY8gCY9gCY:gCY;gCY<gCY=b�gCkXY?Y@YFYAkXYBkXkXYCkXYDkXYEkXu�YGkXYHkXYIkXkXYJkXgQYLY�YMY�YNY�YOYlYPY_YQYYYRYVYSYUwUYTw�v�w��YWYXwUw*w*v�YZY]Y[Y\��wUgCwU�Y^�MubY`YgYaYdYbYcwcw��wcYe�Yfwcw*wcYhYkYiubYj�"w*�MubwUYmYvYnYqYowUYp�v�wUYrYtYswUw*wUYuwwUgCYwY|YxYzYy��"�MY{w��wY}Y�Y~Y�"�iwv��Y�w*wY�Y�Y�Y�Y�Y�Y�Y�Y�v��igQY�Y�wwUw�?Y�Y�Y�Y�v�wwUwY�Y�Y�v�wv�w��Y�Y�Y�Y�Y�Y�wUv�w�wY�w*wY�Y�Y�Y�Y�wgCwY�wv�wUwUY�ww�Y�Y�Y�Y�Y�wY�Y��?��MwY�Y�wUY�wUw�Y�Y�wv�v��Y�Y�Y�Y�Y�Y�wU��wubY�Y�ubv�v�wY�Y�Y�Y�v��v�wY�Y�w*w�v�wUgCY�Y�gCY�kXY�kXY�kXkXY�Y�kXkXY�kXY�v�kXY�Y�Y�Y�Y�Y�gCY�Y�Y�gCY�gCY�XgCY�Y�Y�gCgCTY�gCTgCgCY�gCY�Y�gCgCY�v�gCgCY�Y�gCgCY�gCY�Y�gCgCv�Y�gCY�gCgCY�Y�gCY�gCgCY�gCv�Y�[�Y�Z�Y�ZtY�ZY�Y�gCY�Y�Y�gCY�Y�gCgCY�gCv�Y�Y�Y�gCgCY�gCv�Y�gCY�gCY�gCgCv�Y�Y�Y�gCY�gCY�gCY�gCgCv�gCZgCZZgCZgCZgCv�gCZZ?ZZ#ZZZ	ZZ
ZZwU�wUZ
Z�wUv�wZZZZwUubv��M�Z���ZZZZZZa�v����?ZZv�w*v��ZZ wZww*Z!Z"ww*wUw*Z$Z2Z%Z+Z&Z(w�Z'v��?Z)Z*�?�w��[Z,Z/Z-Z.���v�wZ0Z1w�-v�wZ3Z:Z4Z7Z5Z6w*��?wZ8Z9gCv�wc�-Z;Z=Z<�v�wcv�Z>v��?Z@ZXZAZNZBZHZCZFZDZEv�wwc�"wZGwU<ZIZLZJZK�?�a�RTRTZM<�ZOZUZPZSZQZR�-v�w*wZTw*ubwZVZW�w*ubwZYZfZZZaZ[Z^Z\Z]w*ww*ubZ_Z`w��i�wZbZdwcZcv��Mv�ZewcwZgZnZhZkZiZjwv�w�MZlZmwv��Mw*ZoZrZpZqw*v�v��M�"ZsgC�"ZuZ�ZvZ�ZwgQZxZ}gQZyZzgQgQZ{Z|gQb�gQZ~gQZgQgQZ�gQ�Z�gQZ�gQgQZ�gQZ�Z�gQJ�gQgCZ�Z�gCgCZ�Z�gCZ�gCgCZ�gCv�Z�[Z�[Z�Z�Z�Z�Z�Z�Z�Z�Z�Z�Z�Z�wZ�wRTZ�wv�wUubZ�Z�wcv�gCZ�Z�Z�Z�wcv��ubZ�Z��Z�ubwc�"v�Z�Z�Z�Z�Z�Z�wgCubw*Z�Z��wwUZ�RT�Z��"Z��"b��"Z�Z�Z�Z�Z�Z��"Z��"�Z�Z�v��ww�Z�Z�Z�Z��"wU�"wUZ�Z�wUw�ubv�Z�Z�Z�Z�Z�ubZ�ubv�wubZ�ub�"Z�Z�Z�Z�w*wUv��"Z�Z��"v��"v�Z�Z�Z�Z�Z�Z�Z�Z��"Z�w*wZ�Z�ubwUv�ubZ�Z�v�ub�"Z�ub�"Z�Z�Z�Z�Z�Z�wU�"wU�"ubZ�wcubZ�Z�Z�Z�ubwcub�"Z�Z�wU��Mw*Z�Z�Z�Z�Z�Z�Z�wU�MwZ�Z�Z�v�v�v��?wcZ�wUZ�Z��"wwubZ�Z�Z�Z�Z�v�ubwcZ�v�v��Z�Z�Z�wUv�wUwU[wUw*[[[[	[kXkX[[kX[kXkX[v�kXkX[
kX[kX[gQ[
gQkX[kX[[[kXkX[kX[gQkX[kXkX[kX[gQkX[[�[[_[[<[[.[[&[["[[ ub�"w[!v��"[#[$wUw[%v��?ub['[*[([)wcw*�"wc[+[,w�v�wU[-wUgQ[/[5[0[3[1[2ubv��v�w*[4�"wU[6[9[7[8ww�gCw[:[;wv�wcw[=[M[>[D[?[B[@[Aw�w*w*�M[Cww�M[E[I[F[H�[Gv��MwUw[J[Kw�gCwc[Lw*�[N[X[O[T[P[R[Qw*�iw*[Sww*wU[U[W[VwwUw*v��[Y[[w*[Zw�"[\[^[]w*w*gCv�w[`[{[a[n[b[i[c[f[d[ew*�?ww*[g[hv�����w[j[lw[k�"ubv�[m�Mw[o[t[p[r[q�"ww�[swwub[u[x[v[w�v�v�wc[y[z�ubwv�gC[|[}[�[~[�[[��i�"���M[�v���w�v�[�[��"w�"[�[�[�[�[�[�[�[�[�[�[�[�v�wU�w[�[�[�wcv�wUwU��[�[�[�[�w�[�v�wUw�[�w*��[�w�wv�[�[�[�[�w�[��v�[�[�wUv�ub�[�[�[�[��"[�wU�v��"v�[�v��[�[�[�[�[�[�[�v�ubv�w[�v�ub[�[�[�[�w*wUw*wc[�[�wc�ubw[�[�[�[�[�[���"wU�[�w��[�[�[�[�wubwcv�[�[�ubv�v�w[�[�[�[�[�[�[�[�[�[��[gCv�ub[�[��M[��wUwv�[�[�[�[�wUubw*w�[�[��gCub�[�[�[�[�w[�wU[�ww�[�[�wcwwub[�[�[�[�ubv�v�[��"ubw[�v�v�[�[�[�[�[�v�[�[�ww*[�[�v�wc�?ww[�[�[��Mwwv�[�[�[�[�[�[�wv��Mw[�[�wubv�w�[�[�[�ub�w�[��iw�"[�\4\\\\gC\gCgQ\\
\gCgC\\gCgC\\	gCgCaz\gC\gC\
gC\gC\gCv�gC\\gC\\\gC\gC\gC\gC\v�gCgC\gC\gC\gC\gCv�\\$\b�\ b�b�\!b�\"b�\#b��M\%\*\&b�\'b�\(b�\)b�b�gCb�\+\,\1\-\/b�\.b�wb�\0�"b�\2b�\3b�b��\5\�\6\�\7\p\8\W\9\H\:\A\;\>\<\=w�wv�w\?\@�i�?�?wU\B\E\C\Dw�"wv�\F\GgC��w*\I\P\J\M\K\LubgCgCw\N\O�"���?v�\Q\T\R\S�Mw*w*wU\U\V<v��?�\X\b\Y\_\Z\]wU\[v�\\wUv�\^v�wv�\`wcv�\a�Mwc\c\k\d\h\e\g\fwUv��wcv�\i\jv�w�-w\l\o\m\nwv�v�wwv�\q\�\r\�\s\z\t\w\u\v�"���\x\y�wUwUw�\{\�\|\}w�wUwU\~v�\\�gCwcv�\�w�wv�\�\�\�\�\�\�w�w�w*\�\�ub��Mv�\�\�\�\�w���wU\�\�ubv��ub\�\�\�\��M\�wc\�v�w\�\�\��wU�"\�\�\�w*wcw*ubw\�\�\�gC\�\�wcv�wUgC\�\�\�w�gCubw\��Mw�gC\�gC\�\�\�gC\�gC\�gC\�gCv�gC\�\�gC\�gCgC\�gCv�\�]&\�\�\�\�\�\�\�\�\�\�\�\�v��Mwcv�\�\�wU�v��\�\�\�\��Mw�wcwU\�\��?�iww*\�\�\�\�\�wwUw\�\�\�w*w*w�w*ub\��\�\�ub\�w�?ww�\�\�\�\�\�\�\�\�w*wcv�ubw\�\�w*v�w*\�\�\�\�ubgCwv�\�\�ub�ub��\�\�\�\�\�\�v�wcw*�\�\��Mv�v�w\�\�\�\�v��?w��?\�\�wv�w*wU\�]\�]\�\�\�\��i\�\�v�wUw*\�w*�Mw*\�]\�\��w*ubgCub]]wcgC��]]
]]v�]�Mw�]]	w�v�v�wc]]w]]
��Mw*]]w*wc]gCw*gC]]]]]]]wUv�wUv�]]v�wcv�]]v�ww]]w*�v�] v�]!]#w]"w*��]$]%v��v�wcgC]'](gCgC])]*gC]+gCgC],v�gC].^]/]�]0]�]1]4]2]3dg_MLp�]5]6]y]7][]8]@]9]=]:d];dd]<�Ndd]>]?ddq�]A]U]B]O]C]M�N]Dd]Ed]F]Gd]Hd]Idd]J]Kd]Ldd#]Ndd�N]P]R�N]Qd�N]S]Tdo�d�N]V]Y]Wdd]X�Ndd]Zdo�]\]h]]]a]^dd]_]`ddq�]b]ed]c]ddo�dd]f]go�o�d]i]pd]j]k]m]l�d�]n]o�d�Nd]qd]rdd]s]td]ud]vdd]w]xdo�d]z]�]{]�d]|]}]�N]~�Nd]�d]�]�d�N�Nd]�]�]�]�]�]�d�N�N]��N]�]�d]�dm�d]�]��Nddq�]�]�]�dd]�q�dd]�d]�d�N]�]�]�]�]�]�]�]�d]�q�dd]�do�]�]�do�]�]��N]�]�]�o��N]�m�q��d]�]�d]�q�]��Nm�d]�do�d]�]�]�]�]��Nd�N]�b�]�]�q�do��N]�]�b�]�d]��Nd]�]�]�ddo�d]�do�]�LM]�]�MM]�]�MM]�]�M]�M]�M]�M]�M]�M]�MM]�M]�]�MM]�M@]�]�]�]�]�]�]�cW]�]�]�b�b�]�]�g4j�]�j�]���O]�L3�d]�ak]�]�g_]�]�g_]�g_]�g_]�g_]�g_]�g_]�g_]�g_]�g_]�g_]�g_g_]�@g_]�]�]�]�b�kub�ku]�]�]�b�kub�b�]�� b�L�]�`�n�]�^g4]�]�]�`�]�M]�aNb�]�^^^aN^M�@&d^aN{
^^	M�^^^cWMU�M^
^^^M^^
^^xvd^�NdL�liL^^{
daN^^^`�NdLN^`�g_^^5^^"^^!M^^M^ g4�INaNcW^#^$c�`�p�^%M�^&M�^'M�^(^)M�^*M�^+M�^,M�M�^-^.M�M�^/M�^0M�^1M�^2M�^3^4M��M�^6^C^7^A^8^9b�M^:cW^;cWcW^<cW^=^>cW^?cWcW^@m:cWM^Bt�nW^D^U^Ec�c�^F^Gc�c�^H^Ic�^Jc�c�^Kc�^Lc�^M^Nc�c�^O^Pc�c�^Q^Rc�c�^S^Tc�@c�cW^V^Waz^Xaz^Yazaz^Z^[azaz^\^]az^^azaz^_^`az^aaz^baz^caz^daz^eazb�az^gl!^he�^i`^j^�^k^�^l^o^m^nLMMcW^p^�L^q^r^�^s^z^t^wc�^u^vb�b�`�^x^yaNc�b��,^{^�^|^�N^}^~^�^b�l�b�b�^�b�^�^�b�^�b�^�b�^�b�^�b�^�b�^�b�x�b�b�Mb�^�n�b�^�^�^�^�^�^�^�c�^�^�^�^�lid�L�e�^�^�M�`�b�c�cW^�^�b�t�Mku^�^�^�^�d{c�c�b�^�^�^�N^�b�b�^�d{b�b�c�K�e�^�^�^�^�`�^�d^�L^�^�LL^�^�L^�LL^�4�LNL�^�^�Mtyc�^�^�^�^�^�^�M^�M^�M^�M^�M^�MM^�^�MM�;^�^�^�M^�^�^�M^�M^�M~MM^�M^�^�MM^�^�MM^�^�MM�O^�M^�M^�M^�MM^��J^��o^��o^��o^��o�J^�M^�M^�M^�M^�M^�M^�MM�J^�_�^�_p^�^�^�^�^�t�^�q~?dak^�c�"EM^�^�@&^�^�M^�MM^�^�M^�M^�M^�MM^�^�M^�MM^�M^�^�MM^�M@xv^�^�_$^�___M_M__MMq�___�o_M_MM_	_
MM____
MM_M_Mq�_M_M_Mq�M_M_MMq�_M_M_MM__M_M_M_MM_ _!MM_"_#MMq�_%M_&_X_'_2_(M_)MM_*_+M_,M_-MM_.M_/M_0M_1q�M_3_K_4_=_5M_6M_7MM_8_9M_:MM_;_<MM��_>M_?_FM_@_A_C_BMM�o_D_EM�o�oM_GM_HM_IM_JM�oM_LM_MM_N_QM_OM_P�oM_RMM_S_TMM_U_VM_WMM�_Y_d_ZM_[M_\MM_]M_^M___`MM_aM_bM_cq�M_eMM_f_g_k_hM_iMM_j�JM_lM_mMM_n_oMq�M_q_�d_r_s_v_tM�3�_ud3�`�_wm�_x_y_�_z_~m�_{_|_}p<m��Hm�_m�m�_��m�_�m�_�m�m�_�p<m�ty_�d_�_�d_�d_�dd_�_�dd_���_���_���_�_�����_���d_�_�_�_�b�c�`�_�b�_�_�_�d_�_�_�_�d_�dd_�_�_�_�dd_�Mdd_�d_�_�dd_�d_�Mdd_�d_�d_�_�dd_�d_�_�dd_�_�dd�;_�d_�_�d_�_�d_�_�_�d_�d_�dd_�_�dd_�_�dd�;_�d_�dd_�_�d_�d�;d_�d_�d_�dd_�_�dd_�_�dd_�_�dd�;_�_�_�xvp�_�p�_�p�_�_�p�_�p�_�p�p�_�_�p�_�p�p�_�_�p�_�p�p�_�_�p�p�_�p��$_�_�ty_�L�_�_�dd_�d_�d_�d_�d_�_�dd_�d_�_�d_�d_�d_�dm�dM_�M_�M_�_�MM_�_�M_�M_�MM_�_�MM_�_�M_�MM`M`O�M`e`c``�``v``u``f`	`>`
``L�``L�`
`L�L�``L�`L�`L�`L�`L�L�`L�`L�ߜL�`L�`L�`L�``L�`L�iL�``4` `'`!`$L�`"`#L�L��`%L�L�`&L��L�`(`)L�`*`/L�`+L�`,`-L�`.L��L�`0L�L�`1`2L�`3L��L�`5`9`6L�L�`7`8L�L��`:L�L�`;`<L�`=L��L�L�`?`@`LL�`A`B`E`CL�`DL�L��`FL�`GL�L�`H`IL�`JL�`KL��L�`M`X`NL�`OL�L�`PL�`QL�`RL�`SL�`T`UL�L�`VL�`WL�i`Y``L�`Z`[L�`\L�`]L�`^L�L�`_L��`aL�L�`b`cL�L�`dL�`eiL�L�`g`h`id`�`j`s`kM�`l`n`mMy�M`o`r`pM`qMM�y��;aN`tMb�g4b�`w`zN`xN`y�HN`{l�`|`�`}az`~azaz`az`�`�`�az`�`�az`�azaz`�`�azaz`�`�azaz`�azgC`�az`�az`�az`�az`�azaz`�az`�az`�gCaz`�#�`�`�`�[�[�`�[�`�`�M�[�M�[�M�`�`�L�LM`�`�d`�aS`�a#`�`�`�`�`�`�`�`�`�`�`�`�b�`�b�`�b�`��^az`�`�`�`�az`�gCb�`�b�b��b�`�b�`�azb�`�b�`�`�`�b�b�`�b��[`�b�b�`�b��M`�az`�azaz`�`�az`�az`�azaz�`�`�kXaz`�`�az`�`�azaz`�az`�azgCaz`�az`�`�azazw`�`�`�`�azgQgC`�`�`�`�`�gC`�gQgC`�gC`�`�w�gC`�gCgCv�gC`�gC`�azgC`�`�`�az`�b�`�`�b�`�`�b�`�b�gQb�`�`�`�b�kXb�`�b�w�b�az`�`�b�b�`�`�b�b�`��b�`�a`�`�az`�`�kXgC`�gC`�`�gC`�gCgCv�`�a	az`�`�a`�agCagCagCv�aazazagCazagCagCagCazgCa
kXaakXakXa
kXakXgQakXakXakXgQkXaaazaazaagQgQaagQagQgQ�"azaazaaazazaa azaza!aza"azgQa$a9a%a2a&aza'aza(a-a)kXa*kXa+kXa,kXgQkXa.kXa/kXa0kXkXa1azkXaza3a4aza5aza6azaza7a8azazkXa:aFa;aDa<a=azb�aza>b�a?b�a@aAaBb��aCb��b�aEazazb�aGaIazaHgCazazaJazaKgCaLaMaPaNgCaOgCazgCgCaQaRgCazgCaTb�aUb!aVa�aWataXamaYaiaZaaa[b�a\a_a]a^wUb��Mb�b�a`b���abaeb�acb�adb�gQb�afagb�w�ahw�b�ajb�b�akb�al�b�azanazaoazapazaqazarazasazt�aua�azavazawaxaaya{azwv�aza|a~wa}wub�"wa�a�a�aza�v��az�iw*a�aza�a�a�a�a�a�a�a�a�v�v�az�i�a�a�v�a�azv�a�a�v�azazwa�a�a�a�a�a�wazazwwUwa�a��aza�azazwa�a�a�a�a�a�aza�azw*�aza�a�aza�azwwaza�a�a�aza�wv�aza�azazv�a�a�a�a�a�aza�gQa�gQa�a�gCgQgQa�gQv�aza�aza�a�aza�azaza�a�azaza�aza�waza�a�a�a�a�a�a�a�a�a�a�a��"��w�a�a�v�wUwUv�a�a�a�a�v��Mww�a�a�wv�v��a�a�a�a�a�a�wUwa�v�ww�a�a�v�a�w�azv�a�a�a��i�-uba�w*w�w*a�a�a�a�a��a�a��iwv�a��aza�a��a�v�w�a�a�a�wUv�v�az�Ma�a�a�a�a�w�wUv�a�a�az�?�?aza�a�a�a�w*�-�-uba�a�v�wUaza�wv�a�aza�ba�bbb
bbw�azv�bbbbbw��Mv�wbb	�-wwUwcbbubbb
wbbww*v�azv�ww*bbbwv�b�gQbbbbbbubgQgQwb�wv�bbwUv�bb �iw�v�b"b^azb#b$b?azb%b&b/b'b*b(azb)azwUazb+b-gQb,wazazb.wUv�b0b9b1b6b2b3v�w*b4b5ubwUv�v�b7b8ub�Mazv�b:b=b;w*b<wUv�azb>��i��?b@bAbObBbHbCbFbDbEw�"wv�v�bGw*v�bIbLbJbKw�"w�"bMbN�v��wUbPbWbQbTbRbSww*w�wbUbVw�"v�wbXb[bYbZw�azw�-b\b]�Mv��w*b_bgazb`baazbbazbcazbdazbeazazbfw*azbhboazbibjazbkazazblazbmazbnazwazbpbqb{brbxbsbvbtbu�Mv�wU�Mbwv�ww�byazbzwazgQb|b�b}b�b~b�bb�ubwUv�ubb�gQwUv�b�b�v�ubazv�b�b�b�b�v�v��"w*v�b�v�wb�b�b�b�azb�b�azgQazb�b�b�b�azb�gCb�gCb�b�gCgCb�gCv�b�azazb�b�azazb�b�azb�azgQazb�b�azgCazb�azgCb�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b��azgQb�b�b�b�gQb�b�azazb�b�azazb�b�azb�azb�azb�azazgCgCb�b�azb�azazb�b�azazkXb�cb�b�b�b�b�b�b�b�b��b�b��Mw*�wb�b�b�b�w*v�b�v�wwcb�wUwUwb�b�b�b�b�b��w*v��b�b�www*v�b�b�b�b�v�ww*wb�b�wv�wv�b�b�b�b�b�b�b�b���wwU�Mb�b�wU�M��ubb�b�b�v�gQb��"v�b�b�azgQwUw�b�b�b�w*b�b�v�azw�wb�b�w*b�ubazazb�azv�b�cb�c	b�cb�cb�b�w*wUw*w�wubccccw�w�"w*ccww*cwUw�wc
ccccc
�Mv�w�ubcw*�iwcccc�ubwazwUcw�Mcazazccazwcc�M�v�azkXcd�cd�,�c c!L�c"dbc#c�c$c�c%cGc&c?�oc'�oc(c)c4c*c/c+c,�o�;c-c.�o�;�o�;c0c2�;c1�;�o�;c3�;�oc5c9c6c7�o�;�oc8�;�Jc:c=�;c;c<�o�;�o�;c>�o�;�oc@�ocAcB�o�ocCcD�o�ocE�ocF�o�;cHcc�ocI�ocJ�ocKcLcWcMcScNcP�ocO�4�ocQ�ocR�4�4�ocTcVcU�4�o�4�o�4cXc^cYc\cZc[�o�4�4�oc]�4�o�4c_ca�4c`�o�4cb�o�o�4cd�o�ocecfcycgcpchckcicj�oM�oMclcncmM�oMMco�oMcqctcrM�ocs�oMcucwcvMM�oMcxM�oczc�Mc{c|c~Mc}M�ocM�oMc�c�c�c�c�M�oMc�M�oMc�c�c�MM�Oc�c�M�o�oMc�c��oc�c��odc�c��;c��;c��;�;c��;dc�c��oc��oc��oc�c��o�oc��oc�c��od�oc��oMc�c�c�c�c�c�c�c�c�c�c��o�;�o�;�;c��o�;c��;�;c��o�;�;c�c�c�c��;�;�o�;c��;�oc�c�c�c�c�c��;c��o�;c��;�;�oc�c��;c��o�;c�c��o�;�;�oc��;c�c�c�c��;�o�o�;c��;�o�;c�dc�c�c��oc�c��odc�dc�c�c�c�c�c�c�c��Jc��J�o�Jc��o�Jc��J�Jc��J�oc�c�c�c�c�c��J�o�J�oc��J�J�oc��J�J�oc�c��Jc�c�c�c��J�J�oc��o�J�oc�c�c�c�c�c��J�o�J�o�oc��o�Jc�c��Jc��J�o�J�oc��o�oc��oc�c�dc�dc�c�c��;�;c��;�oc�c�c��;�;�oc��;�J�;d�;dddd�;�o�o�;�;d�;�oddd	dd
�;d�o�;�od
�;d�;�o�;dddd�o�;d�;�;�odddd�;�o�;�od�;d�;�;�odd,dd%�odd�o�od �od!d"�od#d$�o�;�;�o�od&d'�od(d*d)dd�odd+�Jdd-�od.�od/d]d0dJd1d=d2d7d3d4�o�;d5d6�;�o�o�;d8d:d9�;�;�od;d<�o�;�o�;d>dDd?dAd@�;�;�odBdC�;�o�o�;dEdHdFdG�o�;�;�odI�;�o�;dKdTdLdQdMdOdN�;�;�odP�;�;�odR�;�;dS�;�odUd\dVdYdWdX�;�o�;�odZd[�;�o�;�o�o�;d^�4�4d_�4d`da�4�4�dcd�dddl�odedf�o�odgdh�odi�o�odjdk�oM�odmd�dnd��ododp�o�odqdrdx�Odsdtdu�O�o�odv�odw�O�odyd~dzd|d{�O�o�Od}�o�o�Odd��od��O�o�od��oMd��oM�o�od�d��o�od�d��;�;d�d��;�;d��O�;d�d�d��od��od�d�d��o�od�d��o�od�d��o�;�o�od�d�d�d�d�d�d�d��;�;�od�d�d��o�;�o�o�;d�d��;d�d��o�o�;d��;�o�;d�d�d�d�d�d��od��o�;d��;�;�od�d��o�;�;d��;�od�d�d�d�d��;�o�;�od��o�;d�d��o�;d�d��o�;�o�;d��o�od��od�d��od�d�d�d�d��;d�d�d��;�o�;d��;�o�;d�d��;d�d��;�o�;�;d�d�d��;�o�;�od�d�d�d��;d��o�;d�d�d�d��;�o�;�od��;�o�;d�d��od�d�d��;�o�o�;d��;d�d��;�o�o�;`�c�d�d�L�`�d�eNd�Nd�Nd�d�NNd�d�d�Nd�d�NNd�d�NQ�Nd�Nd�d�d�Nd�Nd�NNd�d�NNd�d�NNQ�Nd�Nd�eNNQ�g4eg4eeg4g4eg4eg4Neee	ee
eMg_M�Ne
eeNnWeeNeNeNeQ�eQ�gCegCazMeecW����ee>ee,e`�eL�L�eeL�L�e e!L�e"L�L�e#e$L�e%L�L�e&L�e'e(L�e)L�e*L�e+L�L�>Ctye-e.e;b�e/b�e0b�e1e2e6e�e3e4e5e�d�d�e�e7e9e8d�d�e�e�e:e�d�e<b�b�e=b�b�e?e�Le@eAeJ�;eBeC�;eD�;eE�;�;eFeG�;�;eH�;eI�;q�eKe|eLeheMe_eNeVeO�;eP�;eQ�;eR�;eS�;�;eT�;eU�;�JeW�;eX�;eY�;eZ�;e[�;�;e\e]�;�;e^~�;�;e`ea�;eb�;�;eced�;ee�;ef�;�;eg�;deies�;ejek�;el�;�;emen�;eo�;ep�;�;eq�;er�;��;et�;eu�;evew�;�;exey�;ez�;�;e{�;�oe}e�e~�;�;ee�e��;�J�J�;e�e��;e�e��;�;e�e��;e��;�;e��;e��;e���;e��;e��;e��;�;e�e��;e��;e��;e��;��;e�tye�e�Q�e�Q�e�Q�e�e�e�e�Q�Q�e�Q�e�e�e�Q�e�OTQ�Q�e�e�Q�Q�e�Q�OTe�Q�e�Q�e�Q�e�Q�Q�e�e�Q�Q�e�e�Q�OTQ�e�Q�e�e�Q�e�e�e�Q�e�Q�e�U�Q�e�Q�Q�e�Q�e�Q�e�e�Q�e�Q�NQ�e�Q�e�Q�e�Q�Q�e�Q�e�Q�e�e�Q�e�Q�Q�e�e�e�e�Q�Q�e�P}Q�e�Q�Q�e�P}Q�e�j�e�fge�fM�e�e�e�e�dde�e�e�e�dde�e�de�de�dBfdde�e�dde�de�de�e�de�BfBfe�Bfe�Bfe�Bfe�Bfe�e�e�BfddBfe�e�e�dde�de�e�de�de�dde�e�de�Bfe�Bfe�BfBfe�e�BfBfe�e�BfBfdde�e�fe�de�de�ddfdfdBfdfdffdfdfdfff	ddf
fdfdf
ddfdfdfddffdfdfddfdfdffffazffNfdc�Lc�Nf fcf!f6c�f"c�f#f$f1f%c�f&c�f'c�f(c�f)c�f*c�f+c�f,c�f-c�f.c�f/c�f0c�_]c�c�f2c�f3c�f4c�f5c�_]f7fFc�f8f9c�f:c�f;c�f<c�c�f=f>c�f?c�f@c�fAc�fBc�fCc�fDc�fEc�c��fGfUfHc�fIc�fJc�fKc�fLc�fMc�fNc�fOc�fPc�fQc�fRc�fSc�fTc�_]c�fVc�c�fWc�fXfYc�fZc�f[c�f\c�c�f]f^c�c�f_f`c�fac�fbc�c�_]MfdfeM�ffb�b�i�fhj�fif�fjf�fkf�flb�fmf�M�fnfof}fpM�M�fqM�frfsM�ftfyfuM�fvM�M�fwfxM�M��M�fzM�f{M�f|M��0f~M�fM�M�f�M�f�f�M�M�f�f�f�M�f�f�M�M�{�f�M�f�M�M�{�f�f�f�M�M�f�f�M�f�M�M��M�f�M�f�f�f�f�M��0M�f�M�M��0Mj�`�f�f�aNdMf�f�Nb�f�b�f�h*f�g|f�g-f�f�f�f�Mf�Mf�Mf�f�f�f�f�f��Jf��J�Jf��JMf�f�f�f�M�JM�Jf�f�M�Jf�MM�Jf�f�f�f�f��J�JMf�f��Jf��JM�JM�Jf��Jf�Mf�M�Jf�f�f�f�M�JM�;f�Mf�Mf�f�f�f�f�f�f��;�;M�;f�M�;�;f�Mf�M�;f�f�f�f�f�M�;M�;f�M�;f�Mf�f��;MM�;f�gf�f�f�f�M�;f�M�Of�f��Of�f�f��OM�O�Of�M�Of�f�f�Mf�f�f�f�f�f�f�f�M�;M�;�;f�M�;Mf�M�;f�f�f�f��;f�M�;f�M�;Mf�f��;MMf�M�;f�Mf�MMf�MgMggM�Mgg+gMMgggggg	g
g
�4ggM�4M�4gggg�4MM�4ggM�4�4gM�4g�4g�4ggM�4�4Mgg$gg!�4ggg�4Mg M�4Mg"g#M�4M�4�4g%g&g(�4g'M�4g)g*�4M�4Mg,MM�4g.gZg/gQg0Mg1Mg2Mg3gBg4g;g5g9g6g7��M��g8M����g:��Mg<��g=g?��g>q���g@��MgA��MgCgGgD��gE��MgFM��gHgL��gIgJgKq�����MgMgO��gNM��gP����MgRMgSgTMq�MgUgVMMgWgXMMgY��Mg[gig\MMg]g^Mg_gcg`�;�;ga�;gbM�;Mgdgegggf�;M�;�;ghM�;MgjgkMMglgmgugngpMgo�OMgqgsMgrM�O�OgtM�OgvgzgwgyMgxM�O�OMg{�OM�Og}g�g~g�gg�g�g�g�MM��Mg�g�MMg�Mg�g�MMg��;Mg�MMg�M�JMg�g�g�Mg�g�Mg�g�g�g�dg�g�ddMg�g�g�ddMg�dg�dMdg�g�g�g�g�g�g�dMdMdg�g�dg�Mdg�g�dMMdg�g�g�g�dg�Mddg�Mdg�g�g�g�MdMdg�dMdMg��;Mg�g�g�g�g�MM�;g�M�;g��;g�g��;g��;�;g��;g��;�4g�g�g�MMg�g�MMg�g�Mg�MMg�M�og�g�Mg�Mg�g�g�g�g��Jg�g�g�g�MM�JM�Jg�g�g�g�M�Jg�M�JMg��J�JMg�g�g�g�M�Jg�g�M�J�JM�Jg�g��J�JMg�hMg�g�g�g�g�g�g��;g��;g��;Mg�g�g��;M�;�;g�M�;g�g�g�g�g��;�;M�;g��;Mg��;�;g�M�;g�hg��;�;g�g�g��;Mh�;M�;h�;�;h�;MMhhhhhhh�;h	�;h
M�;hh
M�;M�;hhMhhhM�;q�MhMh�;M�;hh hhhh�;hM�;Mh�;Mhh�;M�;Mh!h$Mh"h#�;M�;h%h'�;h&M�;h(h)M�;M�;h+i�h,ih-hTh.hJh/Mh0M�;h1h2h=h3h8h4h6h5�;�;Mh7M�;Mh9h;h:�;M�;h<�;M�;h>hDh?hBh@hA�;MM�;hCMM�;hEhHhFhGM�;M�;hIMM�;hKhRMhL�OhM�OhNhO�OhP�O�OhQ�OMMhSM�;hUh�hVh�hWh�hX��hYhmhZhbh[h`h\h^�;h]�;M�;h_M�;�;haM�;hchfhd�;�;he�;Mhghjhhhi�;MM�;hk�;hlMM�;hnhyhohthphshqhr�;MM�;�;Mhuhxhvhw�;M�;MM�;hzhh{h}h|�;M�;h~�;M�;h�h��;h��;M�;h��;MM�Jh�h�h�h�h�h�h�h�h�h�h�h��;Mh�h�M�;�;Mh�h��;h�M�;�;h�Mh�M�;h�h�h�h�h��;�;Mh��;M�;h�h�h�h��;M�;Mh�h�M�;�;Mh�h�h�h�h�h�h��;�;MMh�M�;h�h�h�h��;MM�;h�h�M�;M�;h�h�h�h�Mh�M�;M�;h�h�h��;M�;�;h��;Mh�h�h�h�h�h�dh�h�h�MdMdh�h�h�MMdh�ddMh�h�h�h�h�MdMdh�Mdh�h�dMdh�Mdh�h�h�h�h�h�dh�MddMh�dh�h�MddMh�h�h�h�Mh�dMh�ddMh�Mdh�MdM�;Mh�Mh�h�Mh�h�h�h�h�h�h��;�;h�M�;h�h��;h��;Mh�MM�;h�h��;h��;h��;Mh�h�h��;�;Mh�M�;Mh�ih�ih�ih�i�;M�;Mi�;�;Mi�;ii�o�;iM�;Mi	ii
i
ii�;��;�4�;iM�;iiiiM�;�;MiiM�;M�;iihiiFMiii>iMii+ii#ii �Oi�OMi!�O�Oi"�OMi$i)i%i'�Oi&M�Oi(�O�OM�Oi*�OMi,i7i-i2i.i0Mi/�OM�Oi1�OMi3i5Mi4M�OMi6�OMi8i;�Oi9Mi:�OMi<�Oi=�O�OMMi?Mi@MiAiBMMiCiDiEM�;�;MiGMMiHiIMiJiZiKiTiLiOiM�;�;iN�;MiPiR�;iQM�;�;iS�;MiUiWiV�;M�;iX�;�;iY�oMi[iei\i_�;i]i^�;M�;i`icia�;�;ibM�;idMM�;if�;ig�;�;MMiiiji�ikMMilimi{inixioiuipisiqirdMdMMitdMdivdiwMdiyddizMdi|i�i}ddi~diMddi�i�ddi�dMi�Mi�Mi�i�i�i�i�i�i��;M�;�;i�M�;i��;i�i��;Mi��;�;Mi�i�i�i�i��;�;Mi�M�;i�M�;i�i�i�i�i��;�;MM�;i�i�i��;�;M�;Mi�i�i�i�i�Mi�Mi�Mi�Mi�i�di�di�i�ddMi�di�i�MddMi�i�i�i�Mi�M�Ji�MMdi�i�i�Mi�i�i�i�i�i�i�i�Mi�Mi�Mi���MMi�Mi�y�Mi�MMi�Mi�i�M��Mi�MMi�Mi�Mi�i�MM��i�i�Mi�Mi�i�Mi�i�Mi�g�Mi�Mg�MMi�i�Mi�Mi�i�i�i�tOMtOMMi�M��i�i�Mi�Mi�i�Mi�MMi�M�;M�4i�ji�i�Mi�i�i��;M�4Mi�i��;Mi�i�i�Mi�Mi�MMi�Mi�Mi�M�;i�Mi�ji�i�i�ddi�MdjjdjdMjjMdMdjjjj
djj	MdMMdjMj
MdMjjQjjAjMj�4jj,jjjjjj�Jj�JM�Jj�JMjj�Jj�JMjMM�Jj j$j!�Jj"j#M�J�JMj%j)j&j(�Jj'�JM�JMj*j+M�JM�Jj-j9j.j4j/j2j0j1M�JM�Jj3�JM�Jj5j7j6�J�JM�Jj8�JMj:j=�Jj;j<�J�JMj>j@j?�JM�JM�JjBMMjCjDjIjEjH�OjFMjGM�O�OMjJjNjKjL�OMjM�OM�O�OjOjP�OM�OMjRjSj�jTj}jUjijVjajWj]jXj[jYjZ�JM�JMj\�JM�Jj^j`�Jj_M�J�JMjbjhjcje�JjdM�JjfjgM�J�JM�JMjjjtjkjn�Jjljm�J�JMjojqMjpM�JMjr�Jjs�JMjujzjvjwM�JjxjyM�J�JMj{�JMj|�JMMj~jMj�Mj�MdMj�j�j�j�j�j�j�j�j�j��;MM�;j�M�;Mj�j�j�j�M�;M�;j�j��;M�;Mj�j�j�j�M�;j��;M�;j�j�Mj�M�;j�M�;MMj�j�MMj�M*�j�j�j�j�j�M�b�j�j�M�M�j�M�j�M�j�j�M�M�j�M�j�j�M�j�M�j�M�j�M�M�{�j�j�g4L�j�akL���j�j�j�Nj�c�j�j�j�`�`�j�j�`�`�j�j�`�`�j�j�`�`�j�`�j�`�j�`�j�`�j�`�j�ڗ`�j�`�`�j�j�`�j�`�j�`�ڗ`�j�j�j�i�Lg4dj�j�dj�ddj�j�ddj�j�ddj�j�dj�dj�ddj�j�ddj�dj��dj�lj�ktj�kLj�Lj�j�Lj�Lj�LLj�j�Lj�Lj�Lj�Lj�j�j�Lj�j�Lj�j�Lj�Lj�L��LLj�j�Lj�LLj�L��j�kj�LLj�Lj�Lj�Lj�Ly�kLLkkLLkLkLy�kkVkk4k	kk
kZ�kkZ�k
Z�kZ�kZ�kkZ�kZ�kZ�kZ�M�kZ�kZ�kZ�M�Z�M�kM�kZ�M�kk3kk&kk$Z�kk k"Z�k!Z�Z��"k#M��"k%M��"M�Z�k'Z�k(Z�k)Z�k*Z�k+k,Z�Z�k-k.Z�Z�k/k0Z�k1Z�Z�k2�1Z�M�Z�M�k5k6kUk7kSk8k<k9k;Z�k:Z��1�1Z�k=�"k>kAZ�k?k@Z�Z�M��1kBkCkKkDZ�kEZ�kFZ�kGZ�kHZ�kIZ�kJZ��1Z�kLZ�kMZ�kNZ�kOZ�kPZ�kQZ�kRZ��1Z��"kT�"Z�Z�M�kWklkXkckYM�kZM�k[k_k\M�k]M�k^M�M�Z�k`Z�M�kaM�kbZ�M�kdM�keM�kfkjkgM�M�khkiZ�M�Z�M�kkZ�M��1kmknksM�kokpM�kqM�M�krZ�M��1M�Mkukvk�kwk�kxk�kyk�kzk�k{k}k|c�b�e�b�k~kk�M�nWk�k�c�N�`�k�k�b�d{k�c�c��Ck�k�k�k�L�d{c�k�adk�k�M�Nc�j�k�k�k�k�k�k�k�b�k�k�b�k�b�=�k�k�b�b�=�b�b�c�k�k�xvb�d{b�k�k�k�b�k�b�dk�rXbk�k�c�L�k�b�iMk�k�gQk�g�k�MMk�q�Mk�k�k�k�b�k�c�b�k�k�k�d{�Ik�k�k�k�b�b�c^k�b�k�azazk�k�azk�azazk�k�azk�azazk�azb�k�Nk�k�k�`�k�Դe�Դazk�k�k�h^_����k�k�k�k�d{k�k�k�k�k�k�k�db�kul�k�k���Q�N}Ek�k�k�k�Vp�(d{gnk�k�Q�az^CQ�k�k�k�k�dxvk�xvk�k�`�t]�i�Mk�`�azk�k�k�kuk�k�k�k�k�k��e��^Ck�k��hd�iMk�k�k�k�db�rXb�k�k�rXe�rX��d{iMk�lk�k�b�k�m�d{d{k�b�k�k�b�k�k�b�k�b��6b�lb��6ld{L�d{ll M�llg_NllNNl	Nl
NllNl
NlllNlNlNlNlNlNlNlNOTNlNlNlNlNlNlNlNlNOTNMNl"r�l#o]l$m�l%l�l&lxl'lCl(l<l)l9l*l+b�L�c�l,dl-dl.l/ddl0l1dl2dl3dl4dl5dl6dl7ddl8Bfdl:l;dnWb�Ml=l@l>l?aNb�Mb�lAlBxvLNg4lDlllElXlFlGd{MlH��lIlPlJlMaklKlLak�DՊlNakaklOKaklQaklRlUlSlT�Si�_�X>lVlW�l?1�b�qlYlflZNl[laMl\l]l`l^l_M�o��M��Mlblc�oMldM�ole�oMlgp�lhM�li�1ljZ�lk�1�1Z�lmlplnlob�j*�MlqlrM�MdlsltddludlvdlwBfdlyl�lzl�l{l�l|l}aN`�b�l~ll�l�l�l�M�l�M�l�M�M�l�M�l�M�l�l�M�M�l��0M�l�l�M�l�l�M�M�l�l�M�M�l�M�l�{�M�l�M�M�l�l�M�l�M�M�l�M�l�M��l�M�l�M�M�l�M�l�M�l�M��l�l�g_Nl��HNl�l�Nl�Nl�NNl�l�Nl�NNl�Nl�NU�l�l�l�l���Nl�dl�e�i���l�l�Md{~�cWl�l�l�l�l�l�l�Ll�l�l�l�l�l�l�l�d`�xdl�l�Nt�b�t�l�l�l�l�b�Mxv��l�l�c�n�L�j*l�l�l�l�l�l�L��b��Xl�l�e�xvxv~�l�l�l�l�az`�tyb�l�l�azNku�`�M�c�l�b�Nl�l�l�b�dc�l�l�b�|�dd]l�m|l�m7l�ml�l�l�l�Nl�M�l�M�l�M�l�M�l�M�l�M�l�M�l�l�M�M�l��0M�l�+dl�l�ddl�l�dl�dl�ddl�dl�l�ddl�l�dl�d�d`�l�t�c�mmmm� `�m{
`�mm`�m`�,`�m	m6m
mmg_mg_g_m
g_mmM�mM6g_mmM6g_M6mm)mm�Mmm"MmmMmmmMmMmMM�4Mmm MMm!�4�Mm#m$Mm%Mm&MMm'm(M�;Mm*m2m+Mm,Mm-MMm.m/MMm0m1M�oMm3�Mm4Mm5�Mdb�m8mBm9m<m:m;L�db�Mm=m>p�nWm?tyb�m@b�mA`�b�mCmdmDmJmErfmFazmGazmHazazmIwazmKL�mLmUmMmRmNmPdmOq�dmQd�b�b�mSmTb�b�dmVmamW�NmX�NmYdmZdm[dm\dm]dm^dm_dm`d�Nd�Nmbmc�Nd�Nmemfdp�mgmsmhmpmimmmjmle�mk*�e�azgQmnb�e�moi�e�mqmrb�^C�*H:mtmymumxԦmvmwe�i�e�@&j*mzm{dcWb�g4m}m�m~m�mm�m�m�`�m�Lm�Lm��LaNb�m�m�t�p�e�b�m�m�m�m�tyLM�p�m�m�b�kuLb�m�m�m�m�m�m�M�b�nWg4m�m�m�cWm�m�m�m�c�m�c�m�c��Om�m�c�b�aNc�m�m�m�c�c�Mm�m�Ԧdc�m���c�b�n�m�m�m�m�MLn�g4m�m�Mp�dc�m�nYm�nm�m�m�m�m�m�m�m�dLm�c�`�m�`�m�`�m�`�m�m�`�m�`�m�`�`�m�m�`�m�`�`���m�m�cWm�`�m�`�m�m�`�`�m�,�`�L�Nm�m�b�m�m�akdm�dm�m�db�dm�m��InWp�g4m�nm�m�m�m�cWc�m�dm�dm�dm�dm�dm�dm�dm�ddm�dm�dm�dm�dm���dm�nMm�m�nm�m�m�m�m�gCgCazm�gCm�azm�m�m�azazgCm�m�gCm�m�gCgCazv�m�gCazm�m�m�m�m�gCm�m�m�gCgCazgCazazgCgCm�ngCnazgCaznngCngCnnn
aznaznazn	gCaznngCazn
azazgCgCngCnngCngCngCgCaztydnnnndb�@�,nnLg4b�Mnn<nn0nn-n n,n!Mn"n'n#e�n$�Fn%n&e��F�Fe�n(n+n)��n*e��F�F�c�dn.n/db�LNn1n9n2n3b��,dn4n5��n6����n7n8�����n:n;ake�`�Ln=nSn>nNn?n@g4�0b�nAnB@nC@@nDnE@nF@nG@@nHnI@@nJnK@nL@@nM��@nOnPM�znQg4nRsG+sGnTnWnUnVb�`�xvLnXj�nWL�nZo
n[nqn\nmn]nen^ndL�n_n`MMnanbMMnc��M�dnfngb�N`�nhniMnjMMnknlMq�Mnnc�nonpnWg4dM�nrnynsnvntnu����lnwnxlb�d{Nnzn}n{n|d{xvdc�n~onc�n�n�n�n�M�n�n�M�n�M�M�n�M�n�n�M�n�M�n�M�M�n�n�M�M���M�n�n�n�n�n�n��M�n�n�M�M�n����n�n�M�n�M�n�n�M�M�n�n�M�M�n���M�M�n�M�n�M�n�M�n�n�M���M�M�n�n�n�n�[n�n�M�[n�M�v�n�n�M�n�n�{�[{�n�M�n�M�{�M�n�n�n�n�n�n�n�M�n�M�n�n�n�n�n�n��v[�n�n����P�n�n�n�n�P���hLM�n�M��0M�n�n�n�n�n�M�n�n�n�n�M�[��P�M�n�M�n�n�n�����[vM�n�n�n�M�M�n�n��Nv��M�n�n�n�M�vvM�M�n�n�n�n�M�n�M�n�M�n�M�n�M�vM�M�n�M�n�M�n�M�n�M�[n�on�n�n�n�n�M�n�n�n�=M�n��n�[M�n�n�n�n�M�P���n�M�[M�n�M�M���M�n�n�n�M�n�M�n�M�n�[�M�n�M�n�oM�M�o��M�M�ooo	M�oM�oM�o��oM��M�o
oM���M�b�xvoo4oo-ooooN`�d{c�oo,og�oooob�L�ooooh4�+ݶh4ooh4݋�C�^o o&o!o#o"ywU�^o$o%h4�^�^r�o'o)o(yݙh4o*o+��wU�+d]b�cWo.o1o/o0dkup�q~o2o3g4lj*n�o5o<o6o9o7o8b�M�`�do:o;cW�c�nWo=oWo>oMo?oGo@oDc�oAoBoCL�azazkXNoEoFc�N`�lioHlioIlioJlioKoLlilih�oNMoOcWoP`�oQoToRoS`������oUoV�LyW$ؤoXo\oYM�oZcWo[L�i�azb�d{o^q.o_p�o`o�oao�obokocofodoedcWdMogohd{j�NoinWojnWNolo�omonn�p�ooc�opo�oqo�oroosMMotouMovMowMoxMoyMozo}o{o|Mq�Mq�o~Mq�MMo�Mo�Mo�o�Mo�Mo�MMo�M�oMo�Mo�o�Mo�Mo�Mo�MMo�Mo��OMo�o�o�o�Mo�Mo�Mo�o�MMo�Mo��;Mo�MMO�Mo�o�MMo�Mo�Mo�Mo�o�M�;Mo�o�c�nWL�nWo�o�o�o�o�o�cWL�g4Mo�o�dNLnWo�o�q~o�o��mo�No�NNo�X#No�o�M�L��o�o�o�g4o�o�o�g4dg4o�g4`�o�o�o�o�nWg4g4�o�o�g4ddg4o�pio�pNo�pKo�pJo�Lo�o�o�o�o�o��4o�o�o�o�o�o��4�4o��4o�o��4�4�;o��4�4o��4o�o��4�4�;o��4o��4�4o��4�;o��4o��4o��4�4o�o��4�4o��4�;�4o�o�o��4o��4o�o��4o��4�4o�o��4�;�4�4o�o��4o��4o��4�4o�o��4�4�;o�po�po�o�o��4o��4�4o��4o��4o��4�;�4o�p�4p�4p�4pp�4p�4�;�4p�4�;pp�4p	p
p�4p�4pp
�4�4�;p�4p�4�;�4�4p�4pppppp�4p�4�;�4�4p�4p��4p�4p�4p�4�;�4p p1p!p+p"p'p#�4p$�4p%�4�4p&�;�4�4p(�4p)p*�4�4~�4p,p-�4p.�4�4p/�4p0�4�;p2pDp3�4p4p;�4p5p6�4p7p9p8�4�;�4�4p:�4�;p<�4p=p@�4p>p?�4�;�4�4pApB�4�4pC�;�4pE�4�4pF�4pGpH�4�4pI�4�;dlipLpMdLM�lpOpfpPp^MpQpRy7y7pSpTy7pUy7pVy7pWy7y7pXpYy7y7pZy7p[p\y7y7p]ZYy7p_dp`ddpapbpdpcddm�peddo�pgphM�Xb�azpjp�pkpzplpmMd]pnazpoprpppqrXN�b�pspwptMpupve�Դe��[rXpx�pys��p{p�t�p|p}nW)(p~p)()(p�nW)(L�dp�p�p�p�akb�p�nWMp�p�Mp�MMp�Mp�Mp�p�MMp�p�MMp�Mp�Mp�M(�p�p�|�db�p�p�L�p�`�cWL�p�p�p�p�p�p�p�p�p�dl�b�p�p�p�xvb�p�b�p�b�p�b�p�p�b�p�b�b�p�b�p�b�p�p�b�b�p�p�b�p�b�dp�p�p�p�Np�NNp�Np�Np�p�NNp�YNNp�gCNp�p�p�p�p�akd{d]p�azp�L�p�p�e�p�e���p�e�e�p�e�p�e�%
p�p�p�p�p�b�MLp�p�p�dp�p�p�p�Mp�p�MM�Mp�Mp�dwFp�p�p�p�p�p�MhazMMp�M|M��p�Lp�p�p�p�ep�dp�o�dM{
p�p�lcWdp�p�p��P�b�x�p�p�b�p�N`�p�p�N`�MLp�qp�p�p�p�p�p�b�L��dp�p�sGc�nWn�p�qp�qdp�p�qp�cWp�q��~qq�.Q�Q�NqqL��@Nohg4lqqp�q	�q
�qq��q
�q�qq��qq��J�M��0qq)qqqqd{daNL�qqQ�`�qg4MqqMMqMq q!Mq"Mq#Mq$Mq%Mq&MMq'Mq(Mq�q*q,q+m�`�xvq-Mdy7q/q�q0q{q1qIq2q=q3q:q4q5iM�8q6q9iMq7iMq8iMOOiMq;q<|�LL�b�q>qFq?q@lMqAb�g_qBg_qCg_qDg_qE�
g_qGqHg_`�LMqJqZqKqNqLqMdb�dq~qOqYqPdqQqTqRqSdM��azqUqVML�qWd{b�qXx�b�`�w�q[qkq\qgM�q]nWq^nWq_q`nWnWqanWqbnWqcnWqdqenWnWqfe�nWqhLqiaNdqjc�L�qlqmd�qnd{qoqrqpqq_FQ�[�Q�qsqzqtQ�qu_�NqvQ�qwqxQ�qyQ�NQ�OE_Fq|q�q}q�q~q�qq�l�xvM�m�q�q�c�cWb�L�q�q�q�q�b�g_Lq�q�|�q�|�q�|�q�|�q�|�|�q�q�|�q�|�q�|�|�g�q�q�j�t�q��q~q�q~q�q�q~q~q�qpq~q�q�q�q�q�q�dL�`�dq�q�db�q�g4q�q�q�q�q�q�Lq���(q�q��8�H��4�q�q�q�q��W�fé�Hq�q�L�v��q��q�q�q�q�������q�l����q�q�q�q�dq�q�q�q�q�q�q�jVliq�pz�Rpzq�q�q�q�pzjVpz�Rq�q�pzjV�Rpzq�q�q�q�q�q�jVxgjV�Rq�q��jV2�
q�q�2q�jV�Rq��li�Rdb�q�q�`�ddb�q�rXq�rq�q�q�q�q�q�c�l�q�Nq�q�q�q�kuL�L�`�q�q�lq�Nq�R�NcWcq�q�b�t�nWЛq�q�q�q�M�p�q�Mdq�q�q�dq�dQ�q�q�Q�NQ�Nq�rdq�q�r�4q�q��4�4q��4q�q��4r�4�4r�4r�;�4r�4rrrr�4rr�4r	�4r
�4�4r�4�;�4r
�4rr�4�4�;�4r�4rr�4r�4r�4r�4r�4�;�4MM�rrArr>rr2rr"�,rr�,r �,�,r!�,|�r#r)L�r$r%L�L�r&L�r'L�r(iL�L�r*L�r+L�r,L�r-r.L�L�r/L�r0L�r1L��c�r3d{r4r5r8r6d{r7d{�d{r9r<r:r;d{��d{d{r=d{�r?r@c�rfd{p�rBrErCrD`�Mdb�rFrGNnWM�rHrIrTrJrNrKrM!�rL�W����[mrOrQl�rP��!�rRrSl��Wl�zNrUrVl�rWl�"Kl�rYrjrZrdr[r^r\r]nWcWazdr_rcM�r`ra�?rb�?��?azcWrerhrfrgNc��HM�rib�cWg_rkr�rlr�rmr|rnlirortrprscWrqrrb��Cb�LL�rur{rvrxrwazgCazryrz��g4�g4�,dr}|�L�r~L�rL�r�r�L�L�r�r�L�r�L�L�r�r�L�r�L�r�r�r�r�in��:�+r�r�����L�r�r�i�Mtyb�r�r�r�r�b�r�r�dr�dr�ddr�r�ddr�r�dr�dr�ddr�r�ddr�m�ddxvr�r��,akaki�r�wTr�t�r�s�r�s-r�r�r�r�r�r�xvc�p�Lr�r�r�cWb�r�r�r�sG�,r�r�r�sGr�sGsG�<sGr�r�sGsG�,r�r�r�g_g_r�r�g_g_r�r�g_g_r�g_r�r�g_�g_r�r�r�NNg_r�r�g_NNr�r�Np�Nr�s'r�s&r�c�Mr�r�Mr�r�r�Mr�MMr�r�Mr�MMr�r�MMq�r�sr�r�r�r�r�r�r��Jr�r�Mr�M�Jr�r��JMM�J�Jr�r�r�r��J�JM�Jr�M�Jr�r��Jr��Jr�r�M�JMr�r�r�r��Jr�M�J�Jr�M�J�JMr�MMr�r�r�r��Jr��JM�Jr��J�Jr�M�Jssss
sMsMsMMsMsMsMs	q�Msssss
�J�JsM�J�Jss�J�JMs�Js�Js�JM�JssMs�JMsss�JM�Jss!�Jsss �JMM�Js"s%s#s$�JMM�J�JMLxvs(s,s)Ls*iMiMs+iM@�c�xvs.s@s/s=s0s<s1s5Ns2Ns3s4NNOcs6s;s7s9��s8���H�Hs:���H{
��cWds>s?Nq~liNsAs�sBs�sCsXsDsIMsEMsFsGMMsHM�oMsJMsKsLMsMMsNMsOg�sP�JsQg�sRtOsSg�sTsVsUg��Jg�g�sWg��<sYs�sZsgs[s^s\MMs]MdMs_s`MMsaMsbscMMsdMsesfM��Mshs{siMsjssskMslMsmMsnMsoMspMsqMsrM�;Mstsz�;susvMswMsxMMsyM��MMs|Ms}s~s�sMMs�M�;s�MM�;s�MMs��oM`�{
s�s�s�M�`�ds�c�s�s�s�s�s�q�s�q�s�q�O�q�Ms�s�MMs�s�Ms�s�s�s�s��4q�s�s�q�q�s�q�s�q�M�Oq�s�s��4�O�%�4s�s�s�s�s�s�s�s�s�Ms�s�s�M�OMM�Os��OMs�Ms��OMMs�s�MMs�s��OMs�M�Os�s�s�s�M��Ms��OM�Os�s�M�OMs�s�s�s�s�s�Ms�s�Mq�s�q�Mq�s�s�Ms�q�Ms�Mq�s�s�s�Ms�s�s�s�Mq�Mq�s�q�q��%Mq�s�s�s�s�s��OMs�s�M�OMM�Os�MMs�s�s�s��Os�s�s��O�OMs��O�Os��OMs��Os�Ms�M�OMs�tgs�tJs�t?s�t>s�s�j*d{s�ts�s�s�azs�azazs�azs�s�azazs�azs�s�azazs�azv�azs�s�azs�s�s�azb�azs�tazs�tazaztaztazttazaztazb�azttazt	azt
azb�tgCt�t
aztt!ttaztazttttazaztazv�tazaztaztaztazv�azttazaztazttazt azgCazt"t.azt#t$t*azt%t&azt't(gCazazt)azgCt+azt,azt-azaz�Mt/t8azt0t1azazt2azt3azt4t5azt6azazt7v�azt9azt:azt;azazt<azt=b�azM�cWLt@tAaztBaztCaztDazaztEtFazaztGtHaztIazazgQtKt_tLtPtM�,tNcWtOz�`�z�i�tQtRddtSdtTdtUdtVdtWdtXdtYtZddt[dt\dt]t^dm�dt`tanWL�`�tbdtctdddtetfdm��KthtotitltjM�tky7`�\�tmM`�tntyL�tpt�tqtstrNM��ttNtudtvMMtwtxMtyMtzMMt{Mt|t}t�Mt~tt�t�t�t�t���~)x�t�t������ēt�t�t�t�Ź��Ʌ�Ot�t����ʰ*�t�MMt�Mt�t�t������
��t�t�t�NN�be�iMt�v�t�v(t�vt�u�t�t�t�Mg4t�t�t�t�dt�dt�t�do�do�dt�t�dt�t�do�o�dt�t�g4t�t�b�b�t�t�b�b�t�b���t�uzt�uft�t�q�t�t�t�q�t�t�t�t�t��;t�t��;t��;t��;�;q�t�t�t��;t��;q��;t�t��;t�q��;t��;�;q�t�t�t�t�t��;�;t��;t�q��;t�t�t�q�q��;�;t��;q�t�t�t�t�t��;�;q�q�t�q��;t�t�q��;q�t�q��;t�q�t�t�t�t�t�t�t��Jq��Jt��Jq��Jt�t�t�t��Jq�q�t�q��Jq�t�q��Jt�t�t�t�t�t��Jt�q��Jq��Jt�t�q��Jq��Jt�t�q�t��Jq��Jt��Jt��Jq�t�u9t�ut�q�t�ut��Jt�uq��J�Ju�Juq��Juu
uu�Ju�Ju�Jq�u	�J�Jq�uuuu
�Jq��Jq�uq�u�J�Jq�uq�uu"uuuuuuq���uq��uuq��uuq���q��uu �u!��q�u#u/u$u)u%u'u&q��q�u(�d�u*u-u+u,�q�q���u.�o�u0u5u1u3u2�dq��u4d�u6u7�~�u8dq�u:q�q�u;u<uQu=uGu>uBu?uAu@����q�q���uCuEq�uD��q�uF����OauHuKuI��uJ����q�uLuM��q�uNuP��uOq���q���uRu]uSuV��uTuUq�Oa��uWuZuXuY��q���q�u[u\q���q���u^uau_����u`��q�ubuduc��q���q�ue��q�uguoq�uhq�uiujq�ukq�ulq�q�umq�unq�Mupuxq�uqq�urq�usq�utuuq�q�uvuwq�q�Muyq��;q�u{u�u|u�q�u}u~q�uu�q�u�q�u�u�q�q�u�u�q�Mq�u�q�u�q�q�u�u�q�q���u�u�u�q�u�q�q�u�u�u�q�u�q�u�q��Ju�q�q�u��Jq�u�q�u�u�q�u�u�q�u�q�u�q�q�u�q��q�u�u�q�u�q�q�u���q�u�u�u�u�u�q�u�q�u�q�u�q�q�u�q�u���q�u�u�q�u�q�u�q�u�u�q�q�u���q��4u�q�u�q�u�u�q�u�q�u�q�q���u�q�q�u�u�q�q�u�u�q�q�u�u�q�q��;u�u�`�du�`�u�u�u�u�u�u�u�u�du�d�Zu�u�dm�m�du�u�u�u�db�di#u�ddo�u�u�u�u�u�u�o�db�o�u�u���dd�Cu�u�u�u��ddb�du�b�du�u�u�u��Ju�u�u��Jk�ڗ�J�J�[u�u�u�u�u�u�u��i�iu��iu��i֖ڗ�iu�u�u�u��i�yu�u��y�i�i֖�iu��iu�u�u�u�u��i�����i֥���iu�u��i�:�ivvvvvb�vvvvvvMvA�MMv	v
MMg�vMMv
vM�oM�vvvvMvM�MvM�pMvvvM��MvvvMMq�MvMtOxvt�vv!v kuc�xvv"dv#g_v$g_v%g_v&g_v'g_g_p�v)v�v*v�v+v�v,Mv-vbv.v:M�v/M�v0M�v1M�v2M�v3M�v4M�v5v6M�M�v7v8M�M�v9{�M�v;M�v<vFv=M�M�v>v?M�v@M�M�vAvBM�vCM�vDM�M�vE�0M�vGvYvHvL�vIM�vJM�vK�M�vM�M�vNvOvTM�vPM�vQvRM�M�vS�M�M�vUvVM�vWM�M�vX{�M�M�vZM�v[M�v\M�v]v^M�M�v_v`M�M�vaM��vcvvvdM�vevivfM�M�vgvhM��0M�vjvpvkM�vlM�M�vmvnM�M�voM��0vqM�M�vrM�vsM�vtM�vu{�M�vwv�vxM�vyM�M�vzM�v{v|M�M�v}v~M�M�v{�M�M�v�M�v�M�v�M�v�v�M�M�v�M�v�M�v�{�M�`��`�v�v�g_|�cWv�v�v�v�v�v�dg_akNp�M�v�v�v�j�L�v�v�L�v�L�L�v�L�v���L�v�v��Jv�v�v��Jv�v��J�Jv�v�v��Jv�v��Jv��J�Jv�v��Jd�Jv��Jv��J�Jv�d�Jv��Jv�v�v��Jv��J�Jv�v��JM�Jv��Jv��J�Jv�v��J�Jv�v��Jd�Jv�v��Jv�v��J�Jv��Jv��Jv��Jv��Jv�v��J�Jv�v��Jq��Jv��J�Jv�v�v�v��J�Jv��Jv�v��J�Jv�v��J�Jv����J�Jv�v��J�Jv��Jv��Jv��Jv�M�Jv�w.v�v�v�v�v�v�v�c�dxvMp�v�v�v�dv�w�v�v�v�v�v�`�b�e�v�L�v�v�Mdohؒv�v�j*t�Lv�v�v�L`�dc�`��Xv�wv�v�v�c�d`�v�v�L�dv�wMv�v�Mv�v�v�v�)�MMtOv�w)�MM)�wwwwwwMwM�MwM��Mw	ww
w)�tO��)�w
M�oMwwwMwwg�MMq�wwMw���OMwtO��ww)wl�Q�wwQ�wwQ�gCwNNw Nw!w"NNw#w$Nw%Nw&NNw'w(NQ�Ng_w*b�w+b�w,b�w-b�azw/w7w0w3w1w2L|�dxvw4w5b�dw6cWcWMw8wLw9wJw:w;Nakw<wIw=>Cw>>rw?>r>rw@wA>r>rwB>rwC>rwDwE>rwF>rwG>rwH>r>r>C>C>rq~wKc�b�wML�wNL�L�wOwPL�L�wQL�wRL�wS>CL�wUx�wVw�wWw�wXwjg_wYwZw[g4nWw\wbw]L�w^MMw_w`MMwaMO�`�wcwd`�wewfMi�`�wgwhwi[M��vwkw�wlw�akwmwnwuwowrwpwqMpzL��wswtb�LMd{wvw{wwwzLwxwye�*e�`�Lw|w}e�c�w~e�we�e�e�w�xvw�liw�liiew�liiew�w�Lc�w�d{Nw�w�w�w�w�w�w�w�m,g4�+g4w�g4�w�w��+w��M�+w�w��+m#�w�w�w�w�w�w��+m�3g4w��+���w�w�w�w������L�+w�g4ng4w�w�w�w�w�w�L�b�tyMw�w�g4Mw�n�dw�w�w�dw�w�w�dw�dw�w�dw�dw�d�Jdw�ddw�w�dw�dw�ddw��;dw�w�w�dw�ddw�dw�dw�w�ddw�q�ddw�dw�d�w�w�w�w�w���t�cWw�M`�w�nWw�nWw�w�nWZhnWw�w�d{Lakc�w�xZw�x/w�x+w�w�c�w�w�w�w�w�w�w�dؒaNLw�w�L�w�w�w�dq�dm�akQ�w�w�w�w�M�dw�L�w�mmw�w�g4w�g4g4w�w�g4g4w�g4w�g4w�mg4w�w�db�iMcWw�w�x
w�xw�w�w�w�w�b�b�dkuw�L�b�xxxx�IkuaNc�xx�cWֈb�b�xxkux	kuNLxxxxx
xxxku�0L�b�b�kuxxxxLb�d{xx�>�>xx�>�>xx�>x�>�>x�>�WxdMakx x%x!x#x"kub�t�x$kuku�0x&x(x'b�Lb�x)x*�Nb�gQx,x-`�lx.Ni�iMx0xWx1xHx2x3b�Mx4�kx5�k�kx6�kx7x8�k�kx9x:xA�kx;�kx<x=�kx>�kx?�k�kx@�knW�kxBxC�kxD�k�kxE�kxFxG�knW�k`�xIb�xJb�xKb�xLxMb�xNb�b�xOxPb�b�xQb�xRb�xSxTb�xUb�b�xVb��zxXxYMxvxvg4x[xox\xmx]nWx^x_Lt�x`xhq�xaxbxexcMxdMMO�MxfxgMO�MMxixjMMxkxlMMq�aNxnaNMxpx}xqxsxrc�cWdxtM�c�xuxvc�xwxzc�xxxyc��Oc�x{c�c�x|�c�x~xi�nWNdx�{#x�y%x�x�x�x�x�x�x�g4{
x�x�{
x�{
x�{
x�{
|�{
dakc�x�db�x�y"x�y!b�x�x�x�x�x�x�x�Mx�x�x�Mx�Mx�Mx�Mx�x�MMx�y�MMx�x�MMx�Mx�Mx�x�MM�Mx�x�Mx�x�x�MMx�x�x��JMMx�M�lx�Mx�Mx�MMx��Mx�x�x�x�x�x�Mx�x�MMx�M�Mx�x�MMx�Mx�x�M�MMx�x�Mx�y�x�My�Mx�x�x�x�Mx�Mx�Mx�x�MMx�y�MMx�Mx�Mx�Mx�x�M�%Mx�MMx�x�MMdx�x�x�x�x�Mx�x�x�Mx�Mx�Mx�x�M�MdMx�x�Mx�MMx�Mx�M�x�Mx�x�Mx�x�MMx�Mx�x�x�Mx�x�MMx�dMx�Mx�MMx�dMx�MMx�x�Mx�MMx�Mx�Mx�Mx��OMyyyyy�o�oyy�oyyy�o�oy�oyy	�o�oy
d�o�oy�oy
y�od�o�oy�oy�oyy�o�oyyy�oyy�o�oyd�od�o�oyy�oy�oy�o�oyy �o��oM�b�y#y$c�b�p�`�y&y�y'L�y(y*y)K�L�dy+y�y,y�y-y�My.y/y=y0y2y1MMq�y3y5y4Mq�My6My7My8My9My:My;My<M)xMy>y�y?My@ybyAyWyByRyCyLyDyIyEyGMyFM�;yHM�;MyJ�;MyK�;MyMyO�;yN�;MMyPMyQM�;ySMyTMyUM�;yV�;MMyXyYy^yZy\My[�;My]M�;MMy_�;y`yaMM�;ycy�ydysyeynyfyiMygMyh�;Myjylyk�;M�;ymM�;MyoyqMypM�;yr�;M�;yty|yuyyMyvywyx�;MM�;MyzMy{M�;y}y�y~y�yM�;My�MM�;My�y�M�;My�y�My�My�My��;y�M�;y�My�My�My�M�;MMg�y�y�y�My�MMq�My�My�My�y�MMy�My�My��Mq�My�y�y�{
y�My�y�y�cWdNy�MMy�y�My�My�y�M�;�;M{
y�M�ly�{y�y�y�MЌL�My�y�z6y�y�y�y�y�y�y�y�y�y�y���y�y���y�y���q�����y���y���q�y�����y�y�y�y���q�����y�q���y���y���y���y�����y���q�y�y���y�y�����y�y�y���y���Oay�����q�y�����y���y���y�y�����q���y���y�y���y�y�y�y�y�y�y�y�Oa��Oa��y���Oa��y�y�y�Oay�Oa��q�Oay�Oa��y�y�y�y�y�y�Oaq���y�q���y�����OaOa��y�z��y�y�y�y�����y���y�y���y���Oa��zz��z��z��zz��Oa��zz
��z��z��z	Oa��z��z��z
����Oazzzzz��z��zz��zz���o����z��q�z��z��z��Oazz��Oa��zz(z ��z!��z"z%��z#��z$��Oa��z&��z'��Oaz)z.��z*��z+z,��z-��Oa��z/��z0z3��z1��z2��q�z4��z5����Oaz7z�z8zmz9z`z:z;���;z<��z=zRz>zLz?zEz@zCzAzB��M��M��zDM��zFzIMzGzH����MzJMMzK��MzMMzNzPMzO��MMzQM��zSzXMzTzUzWMzV��M��MzYz\MzZMz[M��z]z^��Mz_��M��zazhzb��zc��zd����ze��zf��zgq�����zi��zjzk����zlq���znz�zoz�zpz}zqzvzr��zs��zt��zu����q���zwzx��zyz{��zz���;z|��q���z~����zz�����z�Oa��z���z�����z�z�����z���Oa��z�z�z�z���z�z�z���z���z���q���z���z�����z���q���z���z���z���z���Oaz�z�z�z���z���z�z���z�����z�z�����Oaz�z�z�z�z�z�z�z�z�Oa��Oaz�z�z�OaOa��z�z�Oa����Oaz�z�z�z�Oaz�Oa��z���Oa��z�����z���Oaz�z�z�z���z�z�����z�q�����z���z���q�z���z���z�����z�q���z���z�����z�z���z�����z���Oaz�z�z�z�z���z���z���z���z�z���z��o��z�����z�Oa��z���z�z���z�z���z�z�z���z�����Oa��z���z�Oa��z�z�z���z�����z�q�Oa��z���z�z�z���Oa��Oaz�{z�{z���z�z�z�z�z�����z�Oa��z�z���z���Oaz�����q�z�z���z�q���z�z�Oa��Oa��{{
{{��{{��{��q���{����{��{	��q���{{����{
��{Oa��{{{��{����{{��{��q�����{��{��{{����q�{b�{N{{�!@{ NN{!N{"NQ�{$|�{%|B{&{�{'{�b�{({){}{*{U{+{={,{6v{-{.v{/v{0vv{1v{2v{3v{4v{5��v{7vv{8{9vv{:{;vv{<vM�{>{H{?vv{@{Av{Bv{Cv{Dvv{Ev{Fv{G[v{Iv{Jvv{K{L{Qv{M{Nvv{O{Pvv��{Rvv{S{Tv[v{V{`v{Wv{X{Yv{Zvv{[v{\v{]v{^v{_hv{a{t{bv{cv{d{iv{ev{fv{g{hvLv{j{o{kv{lvv{mv{n�0vv{p{qv{rvv{svh{uv{vv{wvv{x{yv{zvv{{v{|hv{~{�{{�{�{�v{�{�vv{�{�v{�vv{�vM�{�{�{�{�{�v{�vv{�v{�{�vvM�{�[{�[{�[[{�{�[{�[h[v{�{�v{�vv{�v{�v{��v{�{�{�v{�vv{�{�v{�vv{�v{�v{�{�{�vv{�{�{�v{�{�{�v{�{�[�1Z�b3{�{�{�{�j{���v{�{�{�vbvv{�{�=={�=�{�v�v{�v{�{�{�v{�[v{�{�v{�vv{�Lv{�{�v{�{��0={�=�{�P�{��y{���{���{���{�{�{���{���M���{���{���{���{���{���v��c�M{�Mt�{�{�{�{�{�N{�{�{�{�{�NQ�OTN;{�{�OEQ�OTN;{�{�{�{�{�{�NOEQ�OT{�{�N;OEQ�OT{�N{�{�N;OEQ�OT{�|{�|{�{�{�MM{�M{�{�MM{�Mq�{�|M{�|�;|MMq�M|��M||||M|M|M|	|
M�JMM||
||MM||MM|y�MM||M|M�M|M|M|M|MM|Md||'|| |MM�o|!MM|"|#MM|$M|%|&MM�o|(|5|)|/|*M|+MM|,|-MM|.dMM|0M|1M|2M|3M|4dM|6|A|7|<M|8M|9M|:|;M�M|=M|>M|?MM|@M�4M�J|C|G|D|En�p�|Fxv^F�|H|�|Ig_|J|�|K|�|L|z|M|s|Naz|O|Waz|P|Qazaz|Raz|Saz|Taz|Uaz|V�-az|X|e|Y|`|Z|]|[|\azgQ�az|^|_azv�az�|av�|b|cw��M�?|d�?az|f|m|g|j|h|iww*w�v�|k|lwUww*v�|n|p|o�"wv�|q|rv�w*wv�az|taz|uaz|vaz|w|xazaz|ywaz|{|�||az|}|�|~az|az|�|�wazazb�az|�|�az|�|�az|�azb�az|�azb�|�|�azgC|�az|�azaz|�|�azb�az|�|�|�|�az|�gCaz|�|�az|�|�az|�azaz|�azv�az|�|�gCgC|�gC|�|�gCazgCaz|�|�azaz|�|�azaz|�|�azaz|�azgQ|�|�|�|�|�|�|�gCgC|�|�|�gC|�|�gCb�gC|�gC|�gCv�gC|�gCgC|�|�gC|�gCgC|�gC|�|�gC|�gC|�gCgCgQ|�gC|�gCgC|�|�gC|�gC|�gC|�gCgC|�gC|�|�gCgCb�|�gC|�gC|�gCgC|�|�|�|�gC|�gCgCb�|�gCgC|�gCb�L�b�|�}|�|�|�|�|�b�|�|�|�dd|�|�d|�d|�dd|�d|�d|�d|�d|�d�Nd|�|�dd|�d|�d|�|�dd|�d|�d|�d|�d�-|�li|�d|�dd|�d|�|�d|�d|�dd|�d|�d|�|�dd|�d|��d}}M}=�}}=�}=�}=�=�}n�=�Mq~}	}g}
}}L`�d}
}c�}}MM}}MM}liM}}F}}2gC}}}&}}gC}}gCgC}gC}v�gCgC}}}"gC} gC}!b�w}#gC}$gCgC}%gCb�}'})gC}(ubgC}*gC}+gC},}/gC}-}.gCb�gCgC}0gC}1b�gC}3gC}4}>gC}5}6gCgC}7}8gC}9gC}:gCgC};}<gC}=gCgCv�}?gCgC}@}AgCgC}B}CgCgC}D}EgCv�gC}G}Y}H}Q}IgC}JgCgC}K}LgC}MgC}NgC}OgCgC}PgCwUgC}RgC}SgC}T}UgC}VgCgC}W}XgCv�gC}Z}a}[}^gC}\gC}]b�w}_gCgC}`gCv�}bgC}cgC}dgC}egCgC}fgCw*`�}h}i}j�p�}k}~}l}x}m}t}n}q}o}p`�[�[�L�}r}s[�`�g4[�H:}u}v}w[�g4Ae[�}y}|}z�}{`�g4v�}}�`�g4}}�}�`�}�H:`�}�Maz}�}��%}�`�}�Maz�%`�}���}���}���}���}��}�~�}�~-}�}�az}�az}�}�}�}�}�}�}�}�az}�}�}�az}�azaz}�}�az}�azaz}�}�az}�}�v�azaz}�}�az}�azv�azaz}�az}�}�azazj}�}�az}�az}�}�}�az}�az}�}�az}�az}�az}�azaz}�}�az}�azazt�}�azaz}�}�azaz}�}�az}�az}�az}�azaz}�jazaz}�}�}�}�}�}�azjazaz}�azv�}�az}�azaz}�}�azaz}�az}�az}�}�azaz}�az}�v�azaz}�}�az|az}�}�az}�}�az}�}�az}�az}�}�az}�azaz}�}�az}�azaz}�az}�az}�}�az@azaz}�}�azaz}�}�az}�azaz}�}�az}�az}�azaz}�}�azazv�az}�|az}�~!}�~}�}�}�}�}�az@&az|az}�~}�az}�~
az}�}�azaz~~az~az~az~az~az~azaz~~az~	az@azaz|az~az~
~|~azwaz~az~~az~~az~az~az@~~azaz|az~~~az�'~E~~az|~ az|az~"~&~#|az~$az~%t�az~'azaz~(~)~+~*az|az~,az@az~.~m~/~P~0~4~1azaz~2az~3az|~5~@|~6az~7az~8~9az~:~=~;az~<azv�az~>az~?azazv�~A~Caz~B|az~D~Faz~Eaz|~Gaz~H~Maz~Iaz~J~K~Lazw�azaz~N~Oaz�az~Q~i~R~Vaz~Saz~T~Uazaz|~W~a~Xaz~Yaz~Zaz~[~^~\@az~]azx�~_az�~`|�]~b~c|azaz~d~eazaz~f~gaz~hazaz|az~jaz~k~laz|az~n~�~o~�~p~�~q~�~razaz~s~t~x~uaz~vazaz~w|az~y~|~zazaz~{az�~}~�~~azaz~az~�az~�az~�az~�az~�az~�~�azazubaz~�az|~�~�az~�az�~�azaz~�~�~�az~�~�~�azb�azw~�az~�azb�az~�~�~�~�|~�|az~�~�|~�~�||azaz|az~�az~�az|~�azaz~�az~�|azaz~�az~�~�azazd~�;~�~�~�az~�az~�az~�az~�~�~�az~�~�azaz~�az~�~�az~�az~�az~�azaz~�~�azaz~�az~�az@~�azaz~�az~�az~�az~�~�az~�azaz~�az~�azgC~�~�~�~�az~�|az~�azaz~�az~�az|~�~�~�~�az~�az~�az~�az~�~�az~�~�az~�~�az~�az~�az~�az~�az~�azaz~�azgC~�az~�az~�az~�az~�az~�az~�azaz~�azgC~�~�az~�~�az~�azaz~�az~�az|az~�~�azaz|az~�~�~�~�~�~�~�azgCazgC~�azv�azaz~�~�|az�azaz|azv�az)az	!
azaz|
azazazazazazazazazaz�BazazazgCaz|@@ @|@az"#azaz$az%az&az'az(|az*.az+,azaz-az|/az0913|2|azaz4az5az678azAeMaz:az|az<t=R>I?az@FazABCaz|DazEaz��azGazazH|EJazazKazLazMazNazOazPQazazv�SaTazUazVazWazazXYazazZ[az\az]az^az_azaz`v�azazbcfazdaze|azgphki|jazaz|lnazmaz|azoaz|qs|rv�||azuazv�azwazxy{azzaz||azaz}~azaz�az�az�azaz�az��azaz���az�v�az�azazv���|az���azaz�az�az���az�gQaz�az�Bt�az�az|��J�����b��E��az�|��azaz|��=��:���������azaz��az�azaz�az��az�azazQ��az�azv�azaz��az�az�az�azaz��az�az�az�azaz�v�az���az��az�az�az�
�az�azaz��v�azv��az�az�azaz��az�azaz�az���0���az�az�azaz��azazv����������az�az�azaz�az�az�az�b�azaz��azaz�az�az��azaz�v�az���azaz��az�azaz��azaz�w�az�az���azb�azaz���az�azgC�azgCaz�az��
az�az�az�az��	azazgC�az�azaz�
�az�azv�az����az��azaz�az�az�v�az�az��az�az��wUv�wU�azaz� az�!�"az�#�)az�$�%azaz�&v��'v��(v�azaz�*�+�/�,azaz�-az�.�[az��az�1azaz�2az�3az�4�5az�6azaz�7az�8�9azazv�|�;�<az|azaz�>az�?az�@�Aaz�Bazaz�Caz�Dg�azaz�Faz�G�H�Taz�I�J�Kaz|�L�P�Mazaz�Naz�Oaz|�Qazaz�R�Saz|az�U�a�Vaz�Waz�Xaz�Yaz�Zaz�[az�\az�]az�^azaz�_�`azv�az|az�caz�d���e���f�z�g�s�h�n�i�m�jjaz�kw��lazw�jaz�oazaz�paz�qaz�r�az�taz�u�yaz�vaz�waz�xazw�az��{���|j�}���~w�������w�w�azaz����az������w�az����az��az��az��az��az��az��az��az�azw���az��w������az����az|az��az����������azaz|az��gC��az��������az��azaz����az��azaz����azv�az��jj��������jj����jj��j���j��jj����jj�������az��|az��v�az��az|���waz������azaz����������az��az��azm��az����azv�wqaz����������azaz��wqkXaz������azu�v�az��azaz����azwazaz������az|����az��az����azv�azaz��az����az��azaz����azaz����az��azaz��az�����1�������az����az��az|��az|�����az��azaz��az����azaz����azaz��az��az��az��az����azaz�az�az����az|�az���	az�azw�
az�azwazaz�
�azazdaz����azaz�az|��!�az�����az�az�azazc��azaz��� azl�L�az�"�/�#az�$az�%�*�&�(�'azubazaz�)b�gQ�+�.�,�-azgCv�azkXaz�0azaz�az�2az�3�4�B�5az�6az�7�<�8azaz�9�:az�;azazv��=azaz�>�?az�@�Av�azazv�az�Caz�Daz�E�Fazaz�Gaz�Haz�Iv�az�K���L�~�Maz�N�Yaz�Oaz�Paz�Qaz�R�Saz�T�Vaz�Uazv��Wu�v��Xv�az�Z�g�[�^�\azaz�]az|�_�eaz�`az�a�bazaz�caz�dwaz�fazaz��h�l�i�jaz|az�k|azaz�m�naz�o�x�p�saz�q|�rAeaz�t�v�uaz|Ae�wazAeazaz�y�z�|az�{azv�az�}Maz���������������az��az|az����az[az��������az��az��az����azaz����az��az��az��az��azaz����az��azaz@��azaz|��azaz����az��azaz����azazv�������azaz��az��|az������az����az������az����azazw��azaz��b�az��az������az��azazub��az��azazv�������az��azaz����azaz��t�azaz��azH ������az|��|��az����H:��azaz����azgQaz��az����az��az��������������R�������������R���R�����R���R�R�����R���R�����R���R�az��az|���D��������az��|��az��|az������azaz����az��az��az��az��azaz|az����azaz��az����azaz��az��az|�����azaz����az��az��az�@�az��az||������Aeaz��	|az�
H:az�|��
��|�||����|�|�||�|�|�|��|az���A�azaz���!az�az� gCaz�"az�#�$azgCaz�%�&az�'�3�(�.�)az�*�-az�+�,gCazgCgCaz�/az�0az�1az�2azazgC�4�<�5�8az�6az�7azgCgC�9az�:�;gCazgC�=azgC�>gC�?�@azgCaz�Baz�Caz|az�E���F�l�G�kaz�H�I�^�J�O�Kaz�Laz�Mazaz�Naz|�P�V�Q�S�Razaz|�T�Uaz|azg4�W�[�X�Y|azd�Zaz@az�\�]|azgC�_�f�`az�a�d�b�caz|az|az�e|azaz�g�hazaz�iaz�jazgQaz|�m|�n�z�o�v�p�u|�q|�raz�s�tazv�azaz|az�w�xazaz�y|az�{az�|�~|�}|az�����������az��azv�az��azu���az��azazw���azv�����azaz�az������������|az����azaz������az|az��az|az��������azaz��|��az��az��az��gCazaz|��azaz����az��az��az��az��az��azaz����azaz��m��azt������������������az��������������az��gQ��������������gC��������wc�������up��up��w8������������w8��gQ��wv���v����������������w�azaz����kXS���S�gQ������az��az�azgCgQ��az�������t�������������az��az��azaz����az��az��az��azazv���az��������az����azaz����az��azazv�az��az��az��az��az��v�azaz��az��az��az����az��azazv�az�������az�azaz�az��az�azazv�az�	�
azaz�az�az�
�azazv��az�azaz��az�az�az�azazv���E��4��"az�az��az�azaz�� az�!azv�az�#az�$�*az�%�&azaz�'az�(�)azazv��+az�,�0az�-az�.az�/azv�az�1�2azaz�3azv��5�=az�6�7azaz�8az�9az�:az�;�<azazv��>azaz�?az�@�Aazaz�Baz�Caz�Dv�az�F�b�G�S�Haz�Iazaz�J�K�Oaz�Laz�M�Nazv�azaz�P�Qaz�Razv�az�T�[az�Uaz�V�Wazaz�Xaz�Y�Zazv�az�\azaz�]�^azaz�_az�`az�aazv�az�caz�d�e�kaz�f�gaz�hazaz�iaz�jv�azaz�l�m�paz�n�oazazv��qazaz�raz�sazv��uaz�v���w���xaz�yazaz�zaz�{�|��az�}�~azaz�azv���azaz����azv�az����az����azaz��az��az��az����azazv�az����azaz����azaz��az����azazv�az����az��az��az��azaz��az����az��azv�azazv�����|��|az����az����azaz������az�|az|az��������az��|az����az��������azaz����azv�az��az��azaz��v�az��azaz|��azaz������������azaz����az�azaz����azgQaz����az��������azazw*����w�Mw�b�������������gQazb�azgCaz��az��azazgC��az����az������������az��az�T�����T���T���T���T�T�����T�T���T���T���T����Taz|��azaz��|az����az��az|az����azaz������az����azaz��az��az��az����az�>az������e��&����az���az�raz|���	az�
azaz��az�
az�az�azaz�az��azaz�az��az@azaz�az��azaz��azazv��az��$az�� azaz�!�"azaz�#az�oaz�%|az�'�6�(�3�)az�*az�+�-az�,az|az�.�/�1az�0t�azH �2H ��4az�5az|az�7�T�8�R�9az�:�F�;�A�<�>�=azv�b��?�@t�mv�b��B�Daz�Ct�m�Eazv�b��G�L�H�J�Iazt�m�Kazv�b��M�P�N�Ot�mv�b�az�Qt�maz�SLaz�U�[�Vazaz�Waz�X�Yazaz�Zaz���\azaz�]�^�`az�_azgQ�a�bazb��c�dt�mv�azaz�f�g�z�h�p�iaz�jaz�k�l|az�m�o�n||azaz|�qazaz�raz�saz�t�u�w�vazazu��x�yazu�az�1�{���|azaz�}�~az�����azaz��az|az����azazm����az����������������azaz�az���az����az����az�az����az��azgCaz��azH:az����������������az��������az��azaz��az��az|��az��az��azaz��azgC���������azkaz��az|az��azaz@&����|��|az����������������������azaz��v�t�������azjaz��azazu���az������azazv���az��az��b���b���b���b���b���b���b�azb�����������azaz��u�az��az��azw�az����az������azu�v�v���azaz��mazQazaz��az��M�az����az�������������az��az��azaz��az��|����Aeaz~��az����az��az��M�azaz����az�������������azazv�az��v�azaz����azazm����az�kXazaz�gQgC��	az�azgC�
�azv�azkX�
����+��"az��az����az��azaz��azazkX�az|azaz���!�azaz��az� azaz�c|az�#�'az�$az�%az�&|azaz�(az�)az�*az|�,���-�X�.�E�/�Baz�0�1|�2az�3az�4az�5az�6az�7az�8�?�9�=az�:�;az�<v�gCazaz�>azv��@az�Aazazj�Caz�Dazaz|az�F�G�P�Hazaz�I�J�M�Kaz�Lazaz|�Naz�Oaz|azaz�Qaz�R�Saz�T�V�Uazv�azaz�Wazm�Y�q�Zazaz�[az�\�]�_az�^az|�`�g�a�d�b�cazQ�azQ��e�faz�v�|�h�naz�i�jv��kazaz�laz�mv�az�o�p�az|az�r��az�s�t���u���vw��w�y�xazazv�az�z�{az�|���}w��~w��w���w���w�w���azw�w���w���w���azw�az����azaz��w�az|@&az��az��|az����������az����az��|az��az��az����������P}��OEP}��P}��P}��P}��P}Q�P}��P}OE��������OENNN;����NOqY_F��azaz����������������Mg���ML��o��M~������g�~��Mg���M~M��������M��g�M��M$3Mg���Mg���az����az|��az|az���G������az����������azaz������������azgCaz|����az|az��azaz����azaz��az����az��az��az��azaz����azazv�az����azaz@az����az��az��az��azaz����azazt����1��������az������|az����|az��az��|��azaz|������az��azaz����azv�azaz��faz�����|���|�|��|azaz|�	|�
�|�|az�
|az||������az|az���Taz�|az||��|�azaz|��)��%��"�|� ||�!v�||�#|�$|cW�&|�'|az�(az||�*�+�.�,||�-|az|�/�0|az|az�2�3�C�4�5|az�6�7az|�8�=�9�;az�:|az�<azaz|az�>�?�A�@azM�az�BazazM�D�E|az�Fazaz���H���I�w�J�`�Kazaz�Laz�M�N�T�O�Pazb�Q�Razbb�Sazb�Ub�Vaz�Wazaz�X�Yazaz�Zaz�[az�\�]azaz�^�_azwaz�a�t�b�naz�c�d�h�eazaz�faz�gazjaz�i�j�l�kazazu�az�mazw|�ot��p�qt��rt��st�azt�az�uaz�vaz|az�x�yazaz�z�{��||�}|�~|�||��|���������|���||��az��az��|����|��|��|��||��|����|���_�����������az����az��azaz������|az��az����������az��az��������������w���
����F���4b��az�����&��SC����������azaz��az����azaz����az��az��azw�azaz��az��azw�����az����|az����azaz��az�����|az��azaz����az|az���������az������az��azaz����azaz����azazv���az����az��az����azaz��v�azaz��az��az�����������F�F���F�����F�GtF�G�F����az������az����azaz��az��������az��azaz����az��azaz��az����azv�azv�az������az��az��az��azazv������azaz��az��v�azaz����azazv�az�azv��az�az�	az�
azaz�az�az�
azM��azaz����azaz�az�azc��az��|az�M��������8��1|���#� azaz�!az�"|az|�$az�%�&�0�'�,�(�+az�)�*|az��|azaz�-�.|az�/|az@az�2az�3�6az�4az�5|azaz�7Maz�9�Gaz�:�;�=�<az|az�>azaz�?�@az�Aazaz�Baz�C�Daz�Eaz�FazazgC�H�Z�I�L�Jaz�Kazazv��M�P�N�Oaz||az�Qaz�Razaz�Saz�T�Uaz�Vaz�Waz�Xazaz�Yv�azaz�[�\�]az|�^az|az�`�8�a���b���c�}�d�kaz�eaz�f�gaz�haz�iazaz�jaz|az�l�mazaz�n�oaz�p�w�q�t�r�swt���v��u�vv�azazb��x�{�y�zkXazwb��|azv�az�~���az��azaz|az��az����azaz��az������az��azv�����u�v�u�az��������az��az������az|��azaz����az��azazv���az��azaz��az����az��az��azazw�����������az��az����az����azaz|��az��az����az�?az�?��az�@��az��az��|azaz��az����az��azaz����azaz��azw��������|az����������azaz|��az������az����@����az@az��az��az@az|��az|������az��az|azaz����azaz@������azaz������az��azsG��azaz����azaz����az��azazj������������az@w�jaz������@az|az���1���az��������az��az��azaz����az����������v�w�j��azw�azaz����azazm��az���az����az��gC�gC��gCgC��gCgC�azgC�gCgC�	gC�
gC�gC��
gCgCazaz�az����az�az��w�jv�w���az���mv�w�az�azaz�azj��,|� |�!�"||�#�$|�%|�&|�'||�(�)|�*||�+|B/�-az�.az�/azaz�0waz�2az�3az�4az�5az�6az�7az�az�9�#�:�{�;az�<�G�=�D�>�@�?az|azaz�Aaz�Baz�Cazv�az�Eaz�F|az�H�]�I�J.)az�K�P�Lazaz�M�Nazaz�OazgCaz�Q|�R�S||�T|�U|�V|�W|�X|�Y|�Z|�[|�\��|�^�_e�azaz�`|�a�b�eaz�c�dazazv��f�q�g�hazw�iaz�jaz�kaz�lazaz�maz�naz�oaz�pv�az�raz�sgC�tgC�ugC�vgCgC�wgC�xgC�ygC�zkXgC�|���}���~��az���azaz��az��az��az��u�az��_������������az��az����az��azazw���azaz��gQaz��azaz����az��az��azM����azaz����az��az��az��az����azu�azu���az������az����az����azaz�az����azMazaz����az��az�az��������������������������azw���w�az��������wazazv���azazw������������v�wazv�az��v�w��az����w�azazv�����������az����v�azazw��������azww�w��azazw����������azv�az��v�wv���az��azv�v�����az������v���v���v�w����az��wazaz��azv�����������azaz��azb�az��az��azv�����az������gQazazgQaz����azjv�az����|az����azazli���HG�����HG��az|az��az|az�����	azaz�
az�1��az�
azwaz�v�az���az|az�az��b�wazb�`��az���|�az���az||azaz� az�!|�"az|�$�e�%�-az�&�'az�(az�)�,|�*�+azMaz��|�.�G�/�9�0�3�1az�2azaz��az�4�5az�6H:�7HGw�8��azaz�:�;�D�<�@�=azaz�>�?azaz�Aazaz�B�Cazw�azaz�E�Faz|az�H�Y�I�Kaz�J|az�Lazaz�Mw��N�Ow��Pw��Qw�w��Rw��Sw��T�Uw��Vw�w��Ww��Xw�az�Zaz�[az�\||�]|�^�_||�`|�a|�b|�c|�d|��f���gaz�h�jaz�i|az�k�y�l�s�m�r�naz�oazaz�p�qazazjcWazaz�t�u`��v`��w�x`���,`��z��az�{|�|cW�}�~az�������az������v�w����������azaz������v�w����������az����az������v�w����������azaz������v�w����������az��azcWaz����az��|��|azaz��az��az��@&az�������D�����������d��d��d��d����d��d��dd��d��d����d��d��d��d��d��d��d��d�Dd�������������������M���Fd����t�b�������NN������OENOTY����c����������azMc�b�����nWc�����az��az����azaz��az����azaz����azaz����azwazb�o�����������dd{����LgC����d`�b�������c�|�b�����MM�ak��li������li��li����li��q����������������daNb�d��M�dLM��l����ak��i�����azi�Gtaz��azF��F���
���	�
`�iMcWd�Lku`�����c�d��Fj*�j*��!���M��xvdcW��u��L��(��%��$�L�� ��OM�O�O�!�"�O�O�#�OMb�j��&�'b���b�`��)�+�*`�`�aN�,�K�-�1d{�.�/�0}�d�d{=�2�>�3�4}�d{d{�5d{�6d{�7�8d{d{�9�:d{�;d{d{�<d{�=d{}��?�Ad{�@}�d{�Bd{d{�Cd{�D�Ed{�Fd{�Gd{�Hd{�Id{d{�Jd{}�t�b��M�Z�N�PnW�Oq~L��Q�RdL�SL�T�W�Uq~q~�Vt�g4q~�X�Yq~q~v��[�]M�\dg4�^�_db�M��`M��aM��b�c�nM��d�eM��f�lM��g�hM�M��i�jM�M��k{�M��mM�{�M�M��oM��pM��qM��rM��sM��tM�{��v���w�~�x�{�y�znWb�Lb��|�}cW���d�������MddM����b��,g4b�������������g4b�Lb�����ML��X��������̣����Ṃ̣Ṃ��̣��̣M����b�����kudb�����b�`�g_M����n���!��������������������L�b�NM|���aNg4��������{
Ldxv����M�Me�L������������nWdc�M����M���li��li��li����li��li��lili����li��lili��li����li{
b�������b�Nc����xdnW����������������`���������MM����M��M������M��M������M��MM����M��M��M��M��M��M��M��MM�;L������dEazb���`�N��������������NdL�N��L�Mc�����������g_�:L�����`�m�`�N����b���Ld����nW������c�Md{L�Lak��������N��
����ldNl��	`�ldl��
l�Nl�lld�L���-�-���-��-�-��-���-�-���-�K�-t�b����d�(`��� L�`�g_M�"�K�#�6�$�*�%�(�&�'`�MNazb��)M�d�+�-�,d{q~b��.�/cWw���0�1�2azM`��3�4�5iM�bNc��7�@�8�:�9ЛK�q~�;�?�<+��=�>b�o��Cb�b���A�H�B�G�C�b`��D`��E`��Fk-`�m�g_�I�JNb�M�N�L�\�M�V�N�S�O�RM�PN�QNaznWg_�T�UM�ML`��W�Z�X�YcWMb��X�[`�d`��]�c�^�a�_�`Nb�rfdb��baNЛ�d�k�e�jb��f�gb�b��h�ib�b�N� b��l�m��LMj��o���p���q�~�r�x�s�u�tdd{
�v�wm�L�p�b��y�|�z�{��iMd{b�d�}d�b�����������M��M�iM����d��b�������b���b�yb���b�yp�g4��������db�dL�����d{b�b�M�������������b�cW��N{
`�����������`�t�L�`���`���c���L���.4���dL���{
����������c�b�L�ak����e�xvj*`�����������e�dM`���cW`���������b�d{������M�M����0M�M���M�����M�M���M���M�����M���M�M���M�����M�M�>�����dq~NM��������������������� ��M|������d]��d]d]����d]d]����d]��d]��d]��d]d]����d]cEd]������xv`�b�d`�����������c���������gn��liy����b�i�c�N��������`�lN������d{b�c�ty��|���aN��aNaN��aNa]����M�b�b������J���)���	N����NN����N�N��NP�NN��N�N�NP�N�
��N�N�
NP�N��#�������N�N��N�NN��NN��!�� �NN�"NNN�$N�%N�&N�'N�(N�*OcOc�+�,�B�-�8�.�4�/�3�0NP��1�2NNOcN;NN�5N�6�7NN;�9�=�:N�;�<N;VpNN;�>�@N�?NVpP��AN;P��CN�DN�E�GN�FP��H�IVpOcP��K�}�L�M�N�g�O�`�P�U�Q�RNN;N�S�TN;NN;�V�[�W�Z�XNN�YNN;N;N�\N�]�_�^NN;NN;NN�a�b�cNN;�dN;N;�eN�fNN;�h�sN�i�j�p�k�m�lNNN�nN�oNN�qN�rN�t�z�uN�v�wN�x�yNNN�{�|NN�~�����������������NVp������VpVpN������NVpN��NNVp����N��������NVpNN��NVp������Vp����VpNVpN��NNVp����Vp��Vp����VpVpN��N����NVpVpN������������NQ���N������NQ�N��Q�NQ�������������N��NQ���NQ�NQ�NQ�����Q�N��Q�N��Q�N��Q�����NNQ�N����N��N��N��N��N��NN;N������������xv�Idb�����`�b�L����������
g4`�b�������sG��M`�M�rf�����������������������`�c�q�g_������g_��g_��g_��g_g_����g_��g_��g_��g_��g_�g_��g_g_���!g_aNd����xv��az����az��az��az��az��az��az��az��azaz��az��azw�XM���c�����p���d{akdb�������Mdj�xv�	�
d]dnW`���
MM��c�xvdM���d�`����3iM������`���֥`���`�L����[֥��`�� �#�!�"Ld`�M�$�&d�%LaN�'�*�(�)LMdaN�+�.�,M��-LLg4�/�0daN�1�2n�N`�dN�4�5NN�6N�7�8aN�9aN�:aN�;aN�<aN�=aN�>aN�?aN�@aN�AaN�BaN�CaNܒaN�E���F���G�>�H���I���J�_�K�U�L�O�M�Nxv��p�L�d�P��Q�J�R�J�S�J�T�J�4�V�\�W�[b��X�Y�Zb�M���L�dp��]�^`�c�dg_�`�n�a�l�b�cb�d�dm;�e�i`��f�g�h�`��`��j`�`��k�`��mq~@b��o���p���qM�r�u�sM�d�tdq��v���w���x��y�|�z�{kX�"kX�M�}�~wkX�w���������kX�"kX�M��wUwkX���������������"kX�M����wkXkX�"�����������"kX�M����wkXkX�"�����kX�kXMc�����{
b�nWd{��������������dg_b�b���d{L���������db�xv��xv��xv��xv��xv��iMK�������������b�j�dM������M������}������j�L�.Jdb���������cWL�Lb�c�N��������������������dNM�N��nWM�,������dMd����Mc�cWM������������kXL�Mp�d��xv��m���������m�m�pZ��pZm�pZ��������b�M�d�Hb�d����������������Lb�M�c���b�tyL���������d`�d����L���L���L�L���L���L��I����dN��L��MM����M��MM��M��M��M��M��M����M��M��*����aNLl�����`�cW���d�	d�
dd�d��
dd�d�d�do���"�����kX�azazkXkX�az��azazkX��az��azkXaz� az�!azkXaz�#kX�$�'az�%�&kXw*azaz�(�)azazkX�+�.�,�-b�p�b��X�/�=�0�<�1L�2c�c��3c��4�5c��6c��7c�c��8�9c�c��:�;c�_]c�L�db�cW�?���@�d�A�T�B�J�C�H�D�G�EM�b��Fb�e�`�M�n��I`�M�K�M�LMdb��N�S�Odd�Pd�Qd�Rd�Ng_M�U�]�V�Z�W�XM�j�d�Ydb��[�\Md{M�b��^�a�_�`�bdlc��b�cb�`�`�c��e�}�f�s�g�p�h�o�i�jdg4�kc��lN�m�nQ�NNQ�b�i��q�rc�M�L�b��t�v�0�ub�d�w�xdaN�yb�M�zM�{M�|Ṃ�~���������i�cWNc�j�M�����ak��L�g4��L��xv��������������������hNb�d����kuM�dc�����L��g4b�����d{`�g_L������������M��gns8nWb������`���iM��b�b�������b�Eb�E����N��xvM����p�d{L�d����������������i�M�M�K�����@��*�������*���g�*�*���*���c�cW��������dMdb�p�����kb���������e�b�e�����b�$��u��������b���akb�akM��������q~����c�c�{
Md����cW��d����d��dBfdb�����az������azaz��������t�t�az��t���azaz��azt�az��maz��dd����dd����dd����d��d��d��dd����d��dd����dd��d��d����ddb����n����c�N���Nb����L��L�L��L���L���
>S��	>S>SL��>S>S��
>S>S�>S�>S��>SL�>S�����*���;����;��;���;M�;�;��;��;�M�;�;� �!�;�"�;�;�#�;�$�;�%�;�&�'�;�;�(�;�)��;�+���,���-�I�.�;�/�<�;�0�1�;�2�6�3�;�4�;�;�5�;M�;�7�;�8�9�;�:�;�;�;M�;�=�;�;�>�?�C�@�;�;�A�;�B�;M�D�;�E�G�F�;M�;�;�HM�;�J�X�K�;�L�R�;�M�N�;�O�;�P�;�;�QM�;�S�;�;�T�U�;�;�V�W�;�O�;�;�Y�;�ZM�[�\�q�]�i�^�d�_�a�`M�oM�b�c�;M�;M�e�g�fMM�;�hM�;M�j�n�kM�l�mM�;M�;M�oM�p�;M�r�x�s�uM�t�;MM�v�wMM�;�y�}�z�{�;MM�|�;M�~��M��;M����M�;�;M�����������;���;���;���;���;���;���;���;�;M�;�������;�����;�;�����;�;��M�;���;�;�����;���;*��;���;�;�����;���;�;���;���;���;���;�o�����;�����;�;������d�;����������M���;��M�;M��M����M�;����M�;�;M�����������������;MM�;�;��M�;������M�;M�����;M�;M����M���;M���������;MM�;M���;M�����;���;���;���;�����;���;�;�����;�;�o���;�;�����;�;���;�����;���;�;���;�����A��������;�����;�;���;�����;����������������;������y���������y����;�������;��;����;���;�����;�;�����;�;���;����;�;��;�o�;��;���;��;�;��;��	�;�;�
�;���� �;�
���;��;��;���;�;���;�;���;�;�o��;�;���;�;��;���;�;���;�;��;�!�"�8�#�+�$�;�%�;�;�&�;�'�(�;�;�)�;�*d�;�,�;�-�;�.�3�;�/�;�0�;�1�;�2�;�4�;�4�5�;�;�6�7�;�;d�;�9�;�:�;�;�<�;�=�;�;�>�?�;�@�;�o�;�B�A�C���D���E�z�F�b�G�;�H�X�I�Q�J�L�;�K���;�M�O�N�;�;���P�;���;�R�U�S���T�;��q��;�V�W�����;�Y�;�Z�_�[�;�\�^�;�]���;�;�����`�a�;���;�c�;d�d�e�u�f�m�g��h�k�i�jy��y���l�y���n�r�o�p)x���q�y��s���ty���v)x�w)x�x��y�y���{M�|Md�}�~�����������d��d�;d���;d��d�;�����;��d���;d��������d�;d�;���;d�;��������d��d��d�;��dd�;��������d��d�;d��d�;�����;���;dd�;�������o��������������������������������Oa���;�����������;�������������;���;�;���������;�����;�������;�����;���������������;���������;���;���������;���������;�����������;�����;����������������Oa����������������Oa��������Oa�����o�J����������������Oa����M�����1����������������J�����J�;�J�J�����J�;�J�����������J�J�;�J�;�������;�J�;���J�J�;���������J�����J�;�J�J���J���J�;�������J�J�;���J�;�J�;�J���J�;�J�J�	�
������J�
��J�J��J�;����;�;�J���J�;�;�J����J�J�;�����J�;�;�J�;�J��(� �&�!�#�;�"�;�J�$�%�;�J�;�J�'�J�J�;�)�J�*�.�+�,�J�;�-�J�;�J�/�0�;�J�;�J�2d�3�c�4�L�5�>�6�<�7�:�8d�9�;d�;d�;d�;�=d�;d�?�F�@�Bd�A�;d�C�Ed�D�;d�;d�G�I�Hd�;dd�J�Kdd�;�M�Z�N�T�O�Qd�Pd�;�R�Sd�;�;d�U�W�Vdd�;�X�Yd�;�;d�[�^d�\�]dd�;�_�b�`�ad�;�;d�;�J�d�x�e�o�f�k�g�i�hd�;d�jdd�;�l�n�;�m�d�;d�p�v�q�t�r�sd�;�;d�ud�;d�wd�;d�y�}�;�z�{dd�|d�;�~�������dd�;����d�;d�;���������;d�;d�����;dd�;���������d������������������d����d�;�;d���������;d�;d��dd�;����d���;��d�;d��d���;d��������������dd�;��dd�;����d��d�;��dd�;����d����dd�;������dd�;d���;d����������������d�;������d�;dd�;d��d��d�;������dd�;��d����d�;d�;��������d���;��d�;������d�;d��d�;d��������d��d�;��dd�;��d�;��d�;������������������������������q���������Oa�������;�����;q������������������;���;�;���������;�;�����;������������;���;���������;���;��������;���������;��	�����;���;�
��������;�
�M�M�M�M��M�M�M�oM��J�q���(�� ��q���q��;q��q�q���;q��!�%�"q��#q��$q��;q�q��&q��'�;q��)�5�*�.�+q��,q�q��-q��;�/�2�0�1�;q�q��;�3�4q��;q��;�6�<�7�9q��8�;q��:�;q��;�;q��=�?�;�>�;q�q��@�;q��B���C��D�j�EM�F�o�G�o�H�Z�I�P�o�J�K�N�L�M�;�o�o�;�O�o�;�o�Q�U�R�S�;�o�T�o�o�;�V�X�W�;�o�;�o�Y�o�;�[�a�\�_�o�]�^�;�;�o�o�`�o�;�b�g�c�d�;�o�e�f�o�;�o�;�o�h�o�i�;�o�k���l���m���n���o�~�p�w�q�t�r�sq��;���;�u�vq��;���;�x�|�y�{�z�����;���;�}���;����������������;�;���������;���������;��������q��;���������������������;�������;�����������;���;���������������;�;���������;�����������;����q�������������������Oa�������������������������;���;�;�������������;���;�����;��q��;���������;�����;�������;���;���������;���������;�������������������;���;�����;������q����;���������������;����������q�������q���������J���������������J�J���;�J���������J�;�J�;�J���;�J���������;���;�J���J�;�J�;���J���J�;�����������J���;�J���J�;�����;�J�����;�J�J���J�;�����������;�;�J�;���;�J��J�;�J��J��J��J�J��J�d�J��q��	�;�
�������
���������Oa��������q���J��D�d��-�� ��d��;d��d��;dd��;d�!�(�"�%�#�;d�$d�;�&�'�;d�;d�)�+�*d�;d�,�;�;d�.�7�/�3�0�1d�;�;�2�;d�4�6�;�5d�;�;d�8�?�9�<�:�;�;d�;d�=�>�;dd�;�@�Bd�A�;dd�Cd�;�Ed�Fd�Gdd�H�Id�od�K�z�Ld�M�b�N�X�O�S�Pd�Q�Rd�;d�;�T�V�Ud�;dd�W�;d�Y�\�Zd�[d�;d�]�`�^�_d�;d�;�add�;�c�o�d�j�e�h�f�g�;dd�;�id�;d�k�md�l�;d�nd�;d�p�u�q�t�;�r�s�;�;d�;d�v�x�;�w�;dd�yd�;�{d�|��d�}d�~d�d���;d��d��d��d�����;d�;d���V�����������J�J�;�������������������������������;�����;���������;�����;�����;���������������;�;����������Oa���;���������;�;�������������������;���;���������;���;�;�����;��������������������Oa���������������������;���;���;���;�����������;��Oa�;���������;�;�������������;���;�������;�����������;���;���������������;�;���������;���;�������;�;���;�����;���������������;���;�����������;����Oa������q��;���;���(������d�;������d�;�o�;���#���
����������������;dd�;�����;���;d�;dd����;d�;d��	���;��;d�d�;d�
�d�;�dd�;������d��;dd�d�;��d�;��;�;d�� ��d���;d�;��d�;d�;d�!�"d�;dd�$�%dd�&d�'�Jd�)d�*d�+�E�,�:�-�4�.�2�/�1�0dd�;d�;d�3�;d�5�7d�6�;d�8�9�;d�;d�;�?d�<�=�>d�;�;d�@�B�Add�;�C�D�;dd�;�F�M�G�I�Hd�;d�J�;�Kdd�L�;d�N�T�O�Q�P�;�;d�Rd�Sd�;dd�Ud�;�W���X���Y�u�Z�e�[�`�\�;�]�^��;�_�;��;�a�;�b�c�;��;�d��;�f�j�g�;��h�i�;��;�k�p�l�n��m�;���o�;��q�s��r�;���t��;�v���w���x��y�|�z�;�;�{��;�}�;�~�;��;���������;����;��;�;��������;�;��������������������;��;�;��;���;����;�;�������;���;�������;����;��;�����;��;��������;��������;��;�����������;�;������;�����;����;�����;�����������������������;�������;�����;�����;�����;��q����������������;���;���;�������;�������;���������������������;���;���;���;�������;�������;�������������;���;�����;�����;�����;�������;�������������;�����;�J�;�������;M�;�����;�J�;�J�;���;�����;�;�J�������;�������;�J�;�;���J�;���;���;���J�J�;���d���(����������������������;�;������������Oa���;�����	�
�;�;�����
�����;������;���������;���;�����;�����;������;��������;��%� �"���!�;���#�$�;��q������&���'�;���)�N�*�C�+�6�,�0�-)x�.�/�)x)xy��1�4�2�3)x�y�)x)x�5�)x�7�=�8�:)x�9y�)x�;�<�)xy���>�@��?y���A�B�)x)xy��D�I�E�G�F�)x�;��Hy�)x�J�K�)x�L���M�)x�O�W�P�R)x�Qy�)x�S�U�T�y���Vy�)x��X�]�Y�[�Z)x�)x�\��)x�^�a�_�`y��)xy��b�c�y�)x����e�f���g�k���h�i���j��Oa���l�����mq����o���p�,�q���r���s�y�t�vb��ub�L��w�xL�M`�N�z���{��q~�|�}���~������������������������o��������m���������������������d�������o�����������������������m��������������������������������m��o���m�������m�������m���������o���m��o��������������d������������m�����������d���������m�o�xvg_����p�d{L�p�������������h��h����hh����h��h��h��h��h��h��hh��h�-d����q~������q~m�q~q~d��������g_������g_��g_�<��g_��g_�L�����L�<�Lg_����g_��g_g_�\g4b�����c���Md����L�`�c�L���������b�����M������������e�Vc�d�����VLg�_F�����iMlxlxWp��Lc�iMg���dM�Naz�	��
�Lb��b��
N�N�N�N�N�NNY�b��db�L���!���M�d`��� �b��d�dd�dBf�Ci��"�)�#�(�$dd�%d�&�'ddq�L�b��*�+NlNxv�-�H�.�:�/�5�0�2L�1q~b��3�4g4nWc�d�6�8b��7p�g4�9aNc�aN�;�A�<�>�=g_�li�?�@d{b�db��B�E�C�Dc�OTazb��F�Gd]xvNb��I���J�\�K�M�LnW`�q�b��Nj��O�Paz�Qazaz�R�Saz�TgC�U�Y�VgC�WgC�XgCv�gCgC�ZgC�[gCgQ�]�`�^�_M`�Nb��a�bcWM��c`��d�u�e�lL��f�gL�L��h�i�jL��L��k�L�L��m�nL��o�r�pL�L��qL���sL�L��t�L��vL��wL��xL��y�|�zL�L��{�L�L��}L��~L���L�������������Nb�p�d����c�b�H:j�����������cW������������M�!��N����N�Vc�Q���������g_MN�����s8LOTNM�L�d��N{
��LN��N����NN��N��N������������NN����NN����NN��N��N����NNQ�N����NN��N����NN��N��N������Q�NQ�NN����NN��N��N����N��NN��N����NQ�N���|���a���<������������L�tyLc���M`�����`���`�`�����`���`�`�����`���`�`�����`�`���`�����`�`���`���`�@�������g_M���M��M�������������������������;M����M�Jg�������������������������������*��W��˫��������������O����g��o������g�~M����tO���;q����	�
�;g�d�J��
�����OMM�M�M���tOMMg���1�`��p����M�M�M�M�MMO�d�� M��!�$g��"�#g�g�M�%�/�&g��'g�g��(g��)�*g��+g�g��,�-g��.g�tOg��0g���M�2az�3�6�4M�5M�M�az�7�;�l�8#��9�:#�#�M�M����=�*�>�*�?�t�@�W�A�R�B�J�C�Drfj�d�E�Fq~q~�G�H�Ig�q~q~qp�K�LnWM�ML��N�Qb��Ob��Pd$b�iMaz�S�V�T�UdMb�hc�nW�X�_�Y�\�Z�[�Xb�g_aN�]�^MakdM�`�c�a�bMb�akL�d�ej�m��ft��g�hb�b�nW�i�j�k+��lhM��m�nM�M��o�pM�M��q�rM��sM�M����u���v���w���x���y���z���{���|�}�l�L�~�+������������������������������z���[>���������u��n��������n�����n�n�������#����������������g4�����+�+��������g4�+g4���������+��b�cW��Ml�����MM��M��Mq�����d��cW�O����`�iML�d{��������������b�����K�M�b�lilid����dM��m;��������d������d��������db�db�dd����db�i#������������d����db�d������db�dd��db���d��dd��db�d��d����d��ddb���������Bf����dd��di#d����d��dd����db�d��dd��d����dd��d����dm�d��������`������`�`��������������`��i������`��i`�`��i����`�����`�`��i�`��i`�`���`�`���i�`��i`�����	`��
`���
�`�`��i`���`��i`�`���`��`��`��`�`��id{��az��b�rd#��L�cWj*��MM� �!M�"MM�#�$M�%M�&MM�'�(M�)MM�;�+���,�;�-�3�.�1�/�0cWNMb��2`�LN�4�9�5N�6nW�7�8dNLg&b��:dM�<�|�=�x�>�?Lb��@p��A�_�B�QN�C�D�I�ENN�FQ��G�HQ�NQ��JN�KN�LNN�M�NN�ONN�PNU��RN�S�Y�T�VN�UNQ��WN�XNQ�N�Z�]N�[N�\NQ��^NQ�N�`�i�aNN�b�c�g�dQ�N�e�fNNQ��hNQ�N�j�rU��k�l�nN�mQ�N�oN�pNN�qQ�NN�s�tN�uN�vNN�wQ�N�y�zN`��{nWMaz�}���~�NLg4b�N��g4c���������b�����M����M�b�y7N��������q~dM���M���M���M�����M���M���M���M�M�����M���M�M����M���cWb�L������������L�b���M�����H:����H:H:���*H:��H:H:����H:����������H:H:����H:H:��H:��H:����H:��H:��H:{�H:����H:H:{���������������������H:��H:H:���*H:H:��H:��H:��������H:���*H:H:����H:H:��H:��,iH:������H:����H:����H:H:����H:��H:H:��H:��8H:H:����H:�*H:����b���d����dd��d����d�-d��cW��M��M��M��M)x��)x��)x��)x��y�)x������|�b�d����M�d������b�b�������b�y~�y���������d��dd��d����ddb���d����dd��b�db�����
d�	db�b�dnud�
d�d�d�db�i#d���$���d�d�d�d�d�d�����d�d�d�d� d�!b��"d��#�d�%dd�&�'d�(d�)ddo��+�-�,Mp�c��.�_�/aN�0�C�1�=�2�7l�3�4l�5l�6ll�l�8�9l�:l�;�<lڈ��l�>l�?l�@l�All�Bldn�D���E���F�ZM�G�H�R�IM�JM�KM�L�O�MM�NMM�J�%�PM�Q)xMM�S�TM�UMM�VM�W�X�Y�������l�[�x�\�q�]M�^M�_�i�`�fM�a�bMM�c�dMM�e�oMM�g�h��lMM�j�k�n�l�m��)x��M�o�p�M�M�rM�sM�tMM�uM�v�w��dM�y���zMM�{�|M�}��M�~M��oMM��M����M����M��M����M��M��M��MM����MM��M��M����M������������M��M��M���lM����M�lM����MM����MM��M��M���M��M��M��M��MM����MM�o��������M����M��MM��M�oM��M����MM����MM�o��MM����������M����MM�;����M��M����M��MM��y���M��M�������������M����M��MM������M������M����o���������;(�q��J����Oady����M����M��M��M��������M�M��MM�M����MM����M��M�4M���
����������MM��������MM�������MM���;M����M�J�J��M��M����MM��M��M��M����M�M���MM�Mq��M��M�MdM�	Md��M��
MM�M��M�MM��M��MM�M�M��MM�l��?M���0��#M��MM� �!M�"MM��$M�%�,�&�)M�'��(M�;�*M�+M�;MM�-�.MM�/M�OM�1�2M�3�:�4M�5�7M�6M��8�9�~~MM�;�<�>M�=�M�MM�@M�A�B�X�CM�D�KM�E�F�I�G�HMēē���JMq�M�L�S�M�P�N�Oq�MM��Q�R�M�lM�T�V�UM�%MM�WM�%M�Y�ZMM�[M�\�]�^��^M)xM�`azl��b�i�c���d���e�+�f���g���h��i�s�j�n�kd�ldd�mq�dd�o�p�r�q�Ndq�q�d�td�u�{�v�x�wd�Nd�y�zdo�o��N�|o��}�~q�ddq�����������dd������d�������Nq�do�d�N����d����d�Nd������d��d�N�����N���N�N�����N���N�N����N��ddo���������������q�d�N����d�N�No������N���Nddq���������d�Nd��d�N����dq��Nd���������������������N��d�N��d�Ndd��d��d�N��������do�db�����d��d�No����Ndd��d���������Nd�N�����Ndd�����N���N���N���N�N���N���N��d�N����������������d�N�No�d������d�Nd�N������d��dd�Nd��d��dm�����������������o��No��N�N����������N�d��q��N�������Nq�o��No������������Nd�N���N�N��N��d�N��MM�������
M�M�M�M�M��MM��MM�	M���M�M�
MM��M�M�MM�M��;M�M�M��!�MM�M�M�M��MM�M�� MM~M�"M�#�$MM�%�&MM�'�(M�)MM�*M~cW�,�-���.�K�/�E�0�<M�1�2MM�3�4MM�5M�6�7M�8M�9MM�:M�;��M�=�@M�>M�?M�;�A�CM�B�JM�;�D�;MM�F�G�J�HM�IMMO��oM�L�r�M�YM�N�OM�PMM�Q�RMM�SM�T�UM�VMM�WM�X�OMM�ZM�[�\�h�]MM�^�_�b�`MM�aMd�cM�dMM�e�fMM�gM��i�n�jMM�k�lM�mM�;M�oMM�p�qMMd�sMM�tM�u�vMM�w�x�}�yM�zM�{�|M�J�JMM�~M���MM��M���M��M������������M���OMM��M����M��MM���OMM����M��M��M��M������M��MM��M����M��M��M��MM����M��M��M��M��M������MM����MM����M��MM�JM����M��MdM`���NL�����������������������cWLM����b�nWL���tyg_��������c�M�X������c�xv������`�����ִ`�`���`�ִb�M����M����`�p�b�����cW��Mxv����c�{
NL�������������Nt�b���xvb���������nW�c�d����nWb�`�iM������������b�L�`�c�����`���Md��������M����b���iM��b�kuiM`�d]����nW|���dN`����G�������������d`�b���iML?"���
����Mj���	����q�d�dq�d��b�q��dq�dq��
q��q��q�d`�c���B����c�b�q~M��b�t��L��.��&��O�� �O���O��O��O�O��OM�!�O�O�"�#�O�$�O�O�%�OM�O�'�O�(�O�)�O�*�O�+�O�,�-�OM�O�/�@�0�:�1�O�O�2�3�7�4�O�5�O�O�6M�O�8�O�O�9M�O�O�;�4�<�4�=�>�4�4�?q��4�O�A�O�;�C�Ddc��E�Fc�d{~nW�H�T�I�O�J�M�K�Lb�iMc�akM��Nb�`��P�R�Qb�`�akL��S��M�U�_�V�Xb��Wb�`��Y�^�Z`�M�[�\MM�]Mg�dM��`�ab���b�cg4e�d�d�ed�fd�g�hd�ad�a�jd�k�o�l�nM�mMaz@&M�p���q��M�rL��saz�t�uazaz�v�wazaz�xaz�y�zaz�{azaz�|az�}�~azaz���azaz�+M��L���L���L���������L�L���L������L���+L���i����#����������������������L���L�����������L���L�L���L����L��L�L�����L���L���L���L���L��L�����L���L�����L���L�L�����L�L���L���L����L������L��L���L�L�����L���L��L�����L���L�����L�L�����L��L�������L�L�����L���L�L�����L��L���L���L�L���L����������L���L���L�����L��L���L���L�L���L��������L���L���L�L���L���L�����L���L�L�iL���L���L���������L���L�L�����L���L�L����L�L���L���L��+���
��L�L�������L������L���L�����L���L���L�L���L���L��L������L�����L����L��L�L��L��L��L��L���L��	L��
L��L��L�L�����L�����L�i�L�L�iL��L��L���L����L��L��L�L���L��L�� L�L��!L��"L���$�9�%�.L��&�'L�L��(�)�,�*L��+L�L���-L�L��L��/�0L�L��1�2�7�3L�L��4L��5L��6L���8L�L���:�Y�;�@�<�=L���>L��?L�L���A�FL��BL��CL��DL��EL���G�NL��H�IL��JL��KL�L��L�ML�L���O�UL��PL��QL��RL��SL��T�L�L��V�W�XL�iiL��Z�u�[�j�\�f�]�c�^L��_�`�L��aL��bL��L�L��dL��eL�iL��g�hL��iL�L�i�kL�L��l�m�s�nL��oL�L��pL��q�rL��L��tL��L�L��v�wL��xL�L��y�zL��{L�L�i�}���~�Q��P����cW������������������`�NdcW��NdL�������������������H:`�[�����[���d[�H:��H:������H:����H:H:��H:��H:��H:���H:��H:��H:H:��H:����H:H:���H:����������g4[�g4������g4g4[�������g4[�N��`�g4`�xv`�����`�Mdb�������������dL�dm�b���b�N��������t���������d������E�gQdxvaN��az��b�������c�����c�y(y(c�����wdc���c�c�h4�������������������Mkug_��b�sug4����xv������������b�d$�����b�b���b�����b���b���b�b���b�x���b�d$p���b���Y��������`�g4d{cW��M|�xv���
��������b�LxvM�����c�d��b�����������lM������`�cWc�`�����e��F`���b��b�b��b��b���	b��
b��b�L��L�L�����xvcW���q~���nW���q�g���az�u�azb�b��b�b�cW��8��$��!� Mb�N�"�#M�b�Mxv�%�5�&�'`�M�b��(�)�.�*�,�+ؒؒlؒ�-ؒM�/�2�0�1L�d�Xg4�3�4~�diMF��6�7LaNm�d�9�J�:�H`��;�<nWnW�=�>nWnW�?�@nW�AnW�BnWnW�C�DnWnW�EnW�F�GnW��nW�Im�dg4�K�M�Lo�n���N�Odb�b�b�`�M�R��M��S�TM��UM�M��VM��WM��X�Y���Z�s�[�i�\M��]M�M��^�_M�M��`�a�e�b�dM��cM��M���f�gM��M��h�M�M��j�kM��lM��mM��nM�M��o�pM�M��q�rM�M�{�M��tM��uM��v�wM��x�M��y�z�|M��{M�vv�}v�~vM�����M���M���M�����vM�v��M�v������v��vM�vM�����������M���M���M�M����M���M�������M�M���LM���M�M���=M�������M���M���M�M�����M�M�v��M���M���������M�����M�M�������M�������M���M���������M���M���M�M����M�M�����������M���M������M��M����M�����M��M�����M��M���`�LiM��d��dd����dd��d����d��dd��d����d��d��dd����dd����dd����dd��d@�������U��������A��A��A��A����A��A��AA��A��A��A��A��A��A����AAN������@&��E���H H ����@& y����� k�E�AA����@&���R���A����A��AA��A��AA�A�A�AN�H:��Q�A�	�6�
�����Ae�
�@&�@&��@&�H��Ae�H�@&����H:�EzAe��@��Ez������������*� �$��!�"�#��AeBaAe�%�(�&�'Ae�@&Ae�)@Ez@&�+�0�,�.E�-Ae@Ae�/Ae��1�4�2�3���Ez@�5�H���7A�8�F�9�@�:�=�;�<���Ba@&�>�?@Ez@|��A�C��B�Ez�D�EAe�Ae@�G�KAe�H�I�J�6�'@Ae�LA�MA�NAA�O�PAA{��E�A�SA�T@&Ez�V���W�l@&�X�YE��ZE��[E�E��\�]E�E��^E��_�`E��aE��bE��cE��dE��eE�E��f�gE��hE�E��i�jE��kE�AvE�H �m@&�n�o�x�p�wH �qAe�r@&�sA�t�u�v��AeAEF�H �yH:�z���{H:H:�|H:�}H:�~�H:��H:H:s���H:��H:��H:H:����H:��H:H:��H:N����A����@&������H EzE���AeF�����H:H:����H:��H:H:��H:����H:N7H:����@&E�A����H:����EAH:@&����@&����@&����������H E@&��H:����A��H:@&F���F�@&������H H ��A��F�A��������������AeH ��������HG��AEAEH:H EEz����EzEz@&������@&A��A��A��A����A��A��AA����AA����A��A��A��A��AA����A��AA����AAC�����@&��@&AA����E���AE�A�����������@&��E���������@&@&����������@&����@&����@&Ae��AeA@&E���E�AE����3��AH ������@&����@&@&E������A��@&��A@&��@&��@&���@&�@����@&��@&@&���@E�	@&@&�
Ae��H �
@&@&��������EEH:�EE@E�E�EAe��$����H:�Q��[�NEz�� �#Ez�!���"���
����%�,�&�+�'H H:�(�)H:�*H:s�H:|��Y�-�.AH:@&�/H:�0H:�1�2H:s�H:�4�5A@&�6���7�<E�8H �9E��:�;AAH��=Ae�>���?�|�@�S�AAF��BF��CF��D�EF�F��F�G�KF��HF��IF��JF��F��L�MF��NF��OF��PF�F��Q�RF�i@F��T�k�U�Z�V�X�WH:H:@&H:�YH:@&�[�_�\H:�]�^H:@&@&H:�`H:H:�a@&�b@&�c�d@&�e@&�f@&@&�g�h@&�i@&�j@&�*@&�l�u�m�qH:�nH:�o@&�p@&H:�rH:�sH:H:�tH:@&H:�v�w�y�xH:H:@&H:�zH:�{@&H:�}Ae�~Ae�AeAe��Ae����Ae��Ae��Ae��Ae��Ae��Ae��Ae��Ae��Ae��AeAe�AAe�����������AeH:����������A��A��A������AA��C�A����A��NAA��A���A��������������������A�A�A���A��������A�AIK��������A��AA������NAA�A����A��A��A��A��A��AA��A��A��A����A�AA��A������������������A���A��AA�����A����AA��A�����������A�AA��A��C�A��������������A�AA��A�A�������AA��������A�����A�A��������A����A��A��A��A��A��A��A�AA������AC���AAe��H:��@&��������������A���������@&A���AAe@&F���,���	@&�
@&A�A��
A�AA�A@&@&�@&�@&��H:�A�� ��H �H ��F��E��'Ae��H:�@&|�Ae�!�#H��"AeHG�$@&�%�*�&Ae�'AeAe�(Ae�)Ae�@&�+@&HG�-�r�.�l�/E��0�j�1�\�2A�3A�4A@&�5�6�J�7�C�8�=�9�;��:F����<�@&�>�@�?��@&�A�B�@&�@&�D�I�E�G�F��@&��H�@&@&��K�R�L�O�M��N@&�@&@&�P@&�Q@&��S�X�T�V��U�@&�W@&@&��Y��Z�[�@&�@&�]E�^�d�_�cH��`E��a@&�b�'@&@&��e�h�f@&H��gEzE�E��iAeA�kE�AE��m�qE��n�oA�p@&E�H A@&�s�|�tA�uAA�vA�wA�xA�yA�z�{AAAe�}@&�~AA�A��A����AA����AA����AA����A��AA��A��A����A��A��AA��@A��������������A@&AA��E���E�������E���E�Ba�����A����HGA��HG��HG��HG��HG��HGHG����HGHG��HG����HGHG��HG��HG����HGHG��HGq���������A��@&������H @&��A��AA����������F�����F�F�����F�F�����F�F�����F�F�����F���F�F���F���F�����F�@F�F�������H:��H:��H:��H:��H:��H:��H:��H:��H:H:��H:��H:�A��������E�@&������@&����@&@&����@&@&���Ae@&����@&E�@&A����H�A��H ��H E��������\��E�A������H:��AH ���F���Ba������HG��F������Aeb�@&��Ba������AeF�Ez�Ez���
�E��H ��	H ���E�g��EEH:��0��$�
H Ae��Ae��Ae�Ae�Ae��Ae�AeAe��Ae�Ae�Ae�Ae�AeAe�Ae�Ae�Ae�Ae� �!Ae�"AeAe�#AeB��%�(�&��'@&Ae@&�)�*AeH��+�/�,@&�-�.N+W���OE@&�1Ba�2�8�3�Ez�4�5Ez�6�7EzV�V�Ez�9�C�:F�H:�;�<�=F�Gt�>F��?F�F��@�AF��BF�G�F��D�EAe@&AEz�GE�H�IEzE�@&�J�K�O���L�M@&��N��
�P�TE�Q�R�SA�tOE�U�Y�'�V�W�'�'�X�'��Z�[Ae@&H:A�]�rA�^A�_�`A�aA�bA�cAA�dA�e�fAA�g�hA�iAA�j�kAA�lA�mA�nA�o�pA�qAA�fA�s�t��A�uA�vH:�w�x���y�H:�zH:�{�|H:H:�}�~H:N*H:��H:��H:H:��������H:�s�H:s�H:��������H:H:����H:��H:s�H:H:��H:������H:��H:�H:��H:N��A��������H:AH:AH:���'A����������A��H ��@&A����E���E���E���H:��������F�E��Ae�����������������������������
�����������������������
��������H���H���H���H���H���H���H��*H���H���H���H���H���H���H���H��*H�����HG�AeE��E��E�A����A�����E�������@&������H @����������mAe��E��@&��az��@&����������������AE���AEH:��Ba��AH AA��@&��A��E���@&������E����A@&|���@&A��@&��H:F������E��E��E��E��E��E�EA�A���"�E���Ae�@&�Ae@&�	AA�
�A���
A�AA��AAC�A��AA�A���A��AA�A�A�C�AA�A��AA� �!AAC�A�#A�$H:�%E��&�'�)��(AeA�*�+H:EH:�,A�-F�Ae@�/@�0@�1@�2@�3@�4@�5@�6@�7@�8@�9@�:@�;@�<@`�>@�?@�@@�A@�B@�C@�D@�E@�F@�G@�H@�I@�J@�K@�L@�M@�N@�O@�P@�Q@�R@�S@�T@�U@�V@�W@�X@�Y@�Z@�[@�\@�]@�^@�_@�`@�a@�b@�c@�d@�e@�f@�g@�h@�i@�j@�k@�l@�m@�n@�o@�p@�q@�r@�s@�t@@@�v@@�w�x@@�y�z@�{@@�|@�}@�~�@��@��@@��@��@����@��@��@@����@��@��@@����@��@��@��@@��@��@����@��@@��@��@��@��@����@��@@��@����@��@��@��@��@��@��@��@��@��@��@@��@����@@��@�@����@��@��@��@��@��@��@��@@����@��@��@��@��@��@��@@��@����@��@@����@@��@����@��@@����@��@@����@@����@��@��@��@��@��@��@��@��@��@@����@@����@@����@@��@��@����@��@��@��@��@�@��@��@��@��@��@��@��@��@@����@��@��@��@��@��@@����@@��@����@��@@��@��@�@��@�@�@-K@�@�@�@�	@�
@�@�@�
@�@�@�@�@�@�@�@�@@�@��@@�@��@@�@�@��@� @�d@�"@�#t(�$���%���&�t�'�]�(��)@�*@�+���,@�-��@�.�/�(�0�O�1��2�]�3��4�F�5�>�6@�7@�8@�9@�:@�;@�<@�=@`@�?���@���A�w�B�n�C�J�D�G�E@�F@@&@�H@�I@F�@@�K�L@�M@�N@@&�O@&�P�Q@&�R@&�S@&�T@&�U@&�V@&�W@&�X@&�Y@&�Z@&�[@&�\@&�]@&�^@&�_@&@&�`�a@&@&�b�c@&�d@&�e@&�f@&�g@&�h@&�i@&�j@&�k@&�l@&�m@&�@&�o�s�p@�q@�r@E�@�t@�u@�v@E�@�x���y�}�z@�{@�|@@&@�~��A�A��A@��@��@@&@����������@��@@&@��@��@@&@������@��@E�@��@��@@&@������������������@��@E�@��@��@H @������@��@E�@��@��@@&@����������@��@@&@��@��@@&@������@��@E�@��@E�@��������������@��@@&@��@��@@&@@����@��@E�@����������@��@H:@��@��@@&@������@��@@&@��@��@@&@���������������������@��@@&@��@��@@&@������@��@@&@��@��@@&@������@��@��@E�@������@��@E�@��@��@@&@��������������@��@@&@��@��@@&@������@��@@&@��@��@@&@��������@�@Ae@�@�@@&@���@�@@&@�	@�
@E�@��+�
������@�@@&@�@�@Ae@���@�@E�@�@�@@&@��$��!�@� @@&@�"@�#@E�@�%�(�&@�'@@&@�)@�*@@&@�,�>�-�7�.�4�/@�0@�1@�2@�3@@&@�5@�6@Ba@�8�;�9@�:@@&@�<@�=@@&@�?@�@�C�A@�B@@&@�D@�E@@&@�G�5�H��I���J���K�z�L�S�M�P�N@�O@az@�Q@�R@az@�T�W�U@�V@|@�X@�Y@�Z@�[az�\az�]azaz�^�_azaz�`�aaz�baz�caz�dazaz�eaz�faz�g�haz�iazaz�j�kaz�laz�maz�naz�oaz�paz�qaz�raz�saz�taz�uaz�vaz�waz�xaz�yazv�az�{���|���}@�~@�@����az����v�������gQ������gQgCgQ��gQ��gQgQ����gQ��gQ��gQv�gQ������v�mv�v���t�v�az����az��az��az��az��az��azaz��az������������azgQaz��v�mt���u���u�u�az��@��@az@������@��@az@��@��@az@����������@��@��@az@������@��@��@��az��az��az��az��az��az��az��az��az��az��azaz��az��az������v�gCkXv���@��@az@����������@��@az@��@��@az@��@��@��@��@���;���u���'������az��az��az�������������������o���J���8��azaz����az��az��az��az������azaz����az��az��azaz��az����azaz����azazv�������
az�������az��az�azaz��az�azw�az�azaz��az�az�	�az�
waz�azazv�az��az�azaz�az�az��azaz�azv��� az��azaz��azaz�az�az��azaz���!�0�"�)�#azaz�$az�%az�&az�'az�(��az�*azaz�+az�,�-azaz�.�/az�?azaz�1�2azaz�3�4az�5az�6az�7azazgQ�9azaz�:�;az�<az�=az�>az�?azaz�@�Aaz�Baz�Cazaz�D�Eazaz�F�Gaz�Hazaz�Ijaz�K�]az�Laz�M�Naz�Oaz�Paz�Qazaz�R�Saz�Tazaz�U�Vaz�Wazaz�X�Yazaz�Z�[az�\azazv��^azaz�_�`az�aaz�baz�caz�daz�eaz�fazaz�g�haz�iaz�jazaz�kaz�laz�m�nazt�azaz�p�q���raz�s���taz�uaz�vaz�w��az�xaz�y�zaz�{���|azaz�}az�~az���azaz��az��wazaz��az��az����azaz��az��az��wazaz����az��az��azaz����az��azaz����azaz����azwaz��az��az��az��������az��az����az��az��az��az��azaz����az��azazu�az��������az��azaz��az��az����azaz����azazw��azaz����az��az��az��az��az��azwaz��az��az��azaz��az����az��az��az��az��az��azazwv�az�������u����az��az����az��az��az��az��az����az��az��az��az����azv���az����az��azazv���az��az��az��azaz����azaz����azaz��{�az������az��az��az��az��az��az��az��az��az��az��az��az��az��azaz����azv�az���Z��az��az��az��az���F��$���az��
�az�azaz��azaz�az�	azv�az���az�
�azaz��azazv��azaz�az��azwaz�az�az�az��az��azaz��azv�az� az�!azaz�"az�#azv��%�5�&az�'�.�(az�)az�*azaz�+az�,�-azazw�/az�0az�1azaz�2�3azaz�4��az�6�>�7azaz�8�9azaz�:az�;az�<�=azwazaz�?�@azaz�A�Bazaz�C�Dazaz�Ewaz�Gaz�H�Q�Iaz�Jaz�Kazaz�L�Maz�Nazaz�Oaz�Pwazaz�R�Sazaz�Taz�U�Vazaz�Waz�X�Yazazw��[az�\az�]az�^az�_�j�`az�aazaz�baz�c�dazaz�e�faz�gazaz�haz�i{�az�kaz�lazaz�m�naz�oazaz�paz�q�razaz�saz�tazub�v���waz�xaz�yaz�zaz�{az�|az�}�5�~���������������azaz��az������az��az��ubazaz����azazub����az������az����az��azubaz��az��az��azubazaz��az��������az��azazubaz��az��azubaz������az����az��az����az��az{�az��{�az����az����azaz��az��azub��azaz��az��az��wcaz����������az��az��azaz����azaz��ubazaz������������azaz����azubazaz��az��az��azw���az��az��az��azubaz����az��az����azaz��az��az���"az����az��az��������azaz��azub��az��azubaz��azaz����azaz����azazub�������az����az��azaz��az����az��azazub���������az������azaz����azazubaz����az��az{�azaz��az����az��az�azubaz�az�azaz�az��azaz�ubaz�	��
�az�az��
�az��azaz�az�"�azaz�az�azubaz��azaz���az�az�ubazaz�az�ubaz� �(az�!�"az�#az�$azaz�%�&�'azubazub�)�/�*azaz�+az�,�-azaz�.ubaz�0azaz�1az�2az�3�4azazw��6�x�7�b�8�E�9az�:az�;�@az�<�=azaz�>az�?az�"az�Aaz�B�Cazaz�D�"az�F�[�G�R�H�M�Iaz�Jazaz�Kaz�Laz{�az�N�Oazaz�Paz�Qazub�Saz�Taz�U�X�Vazaz�Wazub�Yaz�Zazazwcaz�\�]az�^az�_az�`azaz�aubaz�cub�d�q�e�kaz�f�gazaz�haz�i�jazubazaz�laz�maz�n�oazaz�p{�az�raz�saz�taz�uaz�vazaz�waz{��y���z���{�"�|�"�}�"�~�"�"��"�����"�"ub���"�"�����"�"�����"�"�����"ub�"��azaz��az��az��az��az��az����azazub����azQ�azv���azaz������az����az��az��az��azaz����azaz��az����az��azaz��az����az��azaz��u�az��az��az��az��az��az��������������az��azaz������az��az��az����azt�az��azaz��az����azazu���az����az��az��az��az����az��azu�az������az��azaz��az��az��azu�az��az����azaz��az��t�az��azaz����azaz��az��az��az����azaz���az����az��az��az��az����azaz������az��azu���azu�az��az��az��az��azaz����azaz��az��u�azaz������az��az�����L�����az��az��az��az�az�azaz�az�az��az�azaz�az�az�	az�
�"az�az�
az�az�az��7��$���az�azaz�az��az�az�azaz�b�azaz�az��az�azaz� az�!az�"az�#�"az�%�.az�&�'az�(az�)azaz�*az�+az�,az�-azb��/azaz�0�1azaz�2az�3�4az�5azaz�6waz�8�B�9az�:azaz�;�<azaz�=az�>az�?�@azaz�Aazb�az�C�Dazaz�E�Faz�Gaz�Hazaz�Iaz�Jaz�Kb�azaz�M�Naz�Oaz�Paz�Qaz�R���S�s�Taz�U�aaz�V�Waz�Xaz�Y�]az�Zaz�[�\az�Mazaz�^az�_�`azaz�M�b�iaz�c�dazaz�eaz�f�gazaz�hw�azaz�jaz�kaz�l�m�paz�naz�o�Maz�qazaz�r�Maz�t�}�uazaz�v�waz�xazaz�yaz�zaz�{az�|az�-�~azaz�az����azaz��az����az��az�Maz������azaz����az��azaz��az��az����azaz���Maz��az��az����az����azaz����azaz����az�Maz��azaz��az����az��azaz���Maz���|��az��az������az��az��az��az����������az��azaz��az����azaz��az����az��azwUazaz����azaz��az��az����azaz��az����azazwU������azaz����azaz����az��az��az��azaz��azwU��az��azaz����azaz��az��az����az��azazwU��az��az��az��az���8���������������az��az��az����az��azaz��wUaz����az��az��az����azaz��azwU��azaz��az����az��azwUazaz��az����azaz��az��az����azazwUaz�����	���az����az�azaz�az�azwU�azaz��azaz�az�wUazaz�
az��azaz�
az�az�azwU���az�azaz��az�az�azaz�az�azwU�az��1��+��&�az� �#�!az�"azwUazaz�$�%azwUazaz�'�(azaz�)az�*azwUaz�,az�-az�.�/az�0azwUaz�2az�3az�4azaz�5az�6�7azazwU�9�L�:�Caz�;�<azaz�=�>az�?az�@az�Aazaz�BazwU�Daz�Eaz�Faz�Gazaz�H�Iazaz�Jaz�KazwU�M�k�N�V�Oaz�Pazaz�Q�Raz�Saz�Taz�UazazwU�W�d�X�^az�Y�Zazaz�[az�\�]azwUazaz�_az�`�aaz�bazaz�c�^az�eaz�fazaz�g�hazaz�i�jazwUaz�l�taz�maz�n�oaz�pazaz�qaz�raz�swUaz�uazaz�v�waz�xaz�yazaz�z�{az�^az�}azaz�~az���az��az��az��az��az��azaz��az����azaz��az��az����azaz����azt�azaz����az��azaz����az����azv�v�az��az��������az��az����azaz��azv�az��az��az��az���az��az������az��az��az��azaz��az����az��azaz����������������������az������az��azaz��azgC��az��az��azgCaz��azaz����azaz��az��az�0����az����azaz����azaz��azgCaz��������azaz����azgCazaz��az����azgCaz������������az��az����az��azazgC��az��az����az��az�0��az�0az��azaz����az��azaz��gCaz����az����az������az��azazgCaz��az��azgC������az��az����az��azgCaz��gCaz���az����az�azazgCaz�az��azazgC����az��	az�
azaz��az�
azgCazaz��azaz�az�az��azazgC�az�azaz��azaz�az�az�gCazaz�az�� az�!az�"���#��$�7az�%az�&az�'�(az�)az�*az�+az�,azaz�-az�.az�/az�0�1az�2azaz�3az�4az�5az�6azj�8az�9�)�:�^�;az�<az�=az�>�J�?az�@az�Aazaz�B�Caz�Dazaz�Eaz�F�Gazaz�Haz�IazgC�Kaz�Lazaz�M�N�V�Oaz�Paz�Qazaz�Raz�S�Tazaz�UgCaz�Wazaz�Xaz�Y�Zazaz�[�\az�]azgCaz�_az�`az�aaz�b��c���d���e���f�u�g�n�hazaz�i�jaz�kaz�lazaz�mgCaz�oaz�pazaz�qaz�raz�s�tazv�az�v���w�}�xazaz�y�zazaz�{�|azazgC�~az�azaz����azaz��azgC����az��az����az��az��azgCazaz����az��azaz����azazgC����az������az��az����azaz��az��gCaz��azaz��az��az��az��azgC������az��azaz��az����az��azazgC��az��azaz����azaz��az��gCaz������������������azaz����azaz����azazgC��azaz��az��az��az��azgC������az��az��azaz��az��gCaz��azaz��az����azaz��azgC��������az����az��azaz��az��azgC��az��azaz��az��az��azgC��az������azaz��az����azazgCaz����azaz����azgCaz����az��az��az��az��az��az��az��azgCaz��az��az����az��azaz����azgCaz��azaz����az��az��azaz����azaz��az���azgCaz���az��
�az�az�azaz��	az�
az�az�azazgC���az�az�azaz�az��azaz�gCaz�azaz�az��azaz��az�azgCaz�az� azaz�!az�"az�#�$azaz�%az�&�'azaz�(azgC�*�X�+az�,az�-az�.az�/�:�0azaz�1�2azaz�3az�4�5az�6az�7azaz�8�9azb�az�;�E�<azaz�=az�>az�?�@az�Aaz�Bazaz�C�Dazw�az�F�O�Gaz�Haz�Iazaz�J�Kaz�Laz�Maz�Nazb�azaz�P�Qaz�Razaz�Saz�Taz�U�Vaz�Wazb�az�Yaz�Zaz�[az�\���]���^���_�h�`az�aaz�baz�cazaz�daz�eaz�f�gazazv��i�x�j�qaz�k�laz�maz�nazaz�oaz�pb�azaz�r�saz�taz�uazaz�v�wazb�az�yaz�zaz�{az�|azaz�}az�~az�azb���������������az��az��azaz����az��az�-az��azaz��az����az��az��azaz�^az����azaz����az��az��az��azw�azaz������az��az��������azaz����azb�azaz����azaz��b�az��az��az��az��azaz����azazwU��������az��az��az����az��azaz����az��azw�azaz��az��az��az����az��azaz������azw�az{�����������az��azaz����az��az��az��azb�az��azaz����az��az��azaz����azb�azaz����az��azaz��az��az����az��azazb������az����az������az����azaz����azaz��az��azb�������az��azaz����azaz��azb���azaz����az��azaz��b�az������az��az��azaz����az��azaz��b�azaz��az�az�az�azaz��az�az�azaz�	�
az�az��az�
az�az�az��azazb�az��azaz��az�azw�az�����iaz���5�az�az�az� az�!az�"az�#�,az�$�%azaz�&az�'�(az�)azaz�*az�+kXaz�-azaz�.az�/az�0�1azaz�2az�3�4azazkX�6az�7az�8az�9az�:�^�;�T�<�E�=az�>az�?az�@az�Aaz�Bazaz�C�DazkXaz�Faz�Gaz�H�Naz�I�Jaz�Kazaz�L�MazkXaz�Oazaz�Paz�Q�Raz�SazkXaz�Uaz�Vaz�Wazaz�X�Yaz�Zaz�[azaz�\�]azazkX�_az�`az�aaz�baz�caz�daz�eaz�faz�gazaz�hazkX�jaz�k���laz�maz�naz�oaz�p�{az�q�raz�sazaz�t�uaz�vazaz�w�xazaz�yaz�zazgQaz�|�}az�~azaz�az����az��az��az��azaz��azgQ��az��az��az���b���������������������az������az��az��azaz��azgQ��azaz��az����azgQaz��azaz��az����azaz����azgQaz��az������az��az��az��azaz��gQazaz����azaz��az����azgQaz����������az����az����az��az��azgQazaz����az��azaz��gQaz��az��az��az��az��az��az�"azaz����az��azaz��az����az��azazgQ����������az����az��az����az��azaz��azgQ��azaz����az��az��azgQaz����������az��az��az��az��azazgQaz��az��az����az��azazgQ��az������az��az��azaz��azgQ��azaz��az����azgQazaz����az���	���az��az����az��azazgQ��az��azaz�azgQaz�az��azgQaz�
��az�az�
az�azazjaz�az��az�azgQaz��I��&az����azaz�az��azaz��azazgQaz� �!az�"az�#azaz�$az�%w�az�'�:�(azaz�)�*�/az�+az�,az�-az�.azgQ�0�6�1az�2�4�3azgQazaz�5azgQ�7az�8azaz�9gQaz�;�B�<azaz�=�>az�?azaz�@az�AgQaz�Caz�Daz�Eaz�Faz�Gaz�HazazgQ�J�Saz�K�Lazaz�M�Nazaz�O�Pazaz�Q�RazazgQ�Taz�Uaz�V�\az�W�Xaz�Yaz�Zazaz�[azgQ�]az�^azaz�_az�`�aazazgQ�caz�d���e���f�{�g�naz�haz�i�jaz�kaz�lazaz�mazgQ�o�uaz�p�qaz�raz�saz�tazgQaz�vazaz�waz�xaz�y�zazgQaz�|az�}az�~az�azaz��az����azw*az��az��az��azaz����azaz��az��az��azgQaz��az��az����azaz��az��az��az��az��azgQ����az��������az��az��az��az��az��azaz����azaz��az��az��az����az��az��azaz�i��az��az��az��az��az����az������az��az��az��az����az��az��azaz�i��az��azaz��az��az��az����azaz���az��az��az��az��azaz��az����azaz��w�azgCaz��az������azaz��az����az��az��az��az��az��az��az��azaz��az����azaz��az��az����azazv�az������az����az��az��az��az��az��az������azaz����azaz��az��az����azaz��maz��az��azaz����az��az��az��az��azmaz�����az�az�az�az�az�azaz�az��azaz��	az�
az�azaz��
azv�az�az�az�az�az�az�az��az�az��azaz��azaz�az��azv�azaz�� azaz�!�"az�#az�$azaz�%�&azv�az�(�E�)az�*��+��,�8��-�.��/��0�4�1��2��3���i��5��6��7w����9��:�;�@��<�=���>�?��^���A��B��C�D��^��F�Q�Gaz�Haz�Iaz�Jazaz�K�Lazaz�Maz�Naz�O�Pazazv��Raz�Saz�T�_�Uazaz�V�Waz�Xaz�Y�\az�Z�[azazj�]az�^azazj�`�g�aaz�bazaz�c�daz�eaz�fazazv��haz�i�p�jazaz�k�l�mazu��n�ov��1u�az�qaz�raz�saz�tazazv��v�X�w��az�x�yaz�z���{���|���}���~��az�az��az������azt�azw������az������azazwaz��t�az��azaz����azazt�����az��az��az��waz��az����az��az��azt���az��azt�waz��az��az����azaz��az��azv���az��az��az����az������az��azt�az��azt���az��azaz���az��az��azaz��az����az��azaz����azt�az������������������az��azb�����azaz����az��azazb�����az��az��az��az��az��az��azb�az����az��az��azaz����azazb�������azaz��az��az����azaz����azb�az������az��az��azaz��az��az��b�az��az��az��az��az����az��azb���azb�az��azaz��az����azaz����azaz����azaz��azb����N���'���������az���az�az���az�Maz�azaz�M���az�	azaz�
�azaz�Maz�
az�az�az�azw�az��azaz�az�az��az�Maz�� az�az��azaz��az�az�Maz�!az�"az�#azaz�$az�%az�&�Maz�(az�)�G�*�A�+�3az�,�-�0az�.�/az�Maz�1az�2azaz�M�4�:az�5�6�8az�7az�^az�9az�M�;�>az�<�=azaz�M�?azaz�@�Mazaz�B�Cazaz�Daz�Eaz�Faz�M�Haz�Iaz�Jaz�Kaz�Laz�Mazaz�M�Oaz�Pazaz�Q�Raz�Sazaz�Taz�Uaz�V�Wazaz�M�Y���Z���[���\���]�r�^�k�_az�`�f�aazaz�b�caz�d�e�^azazwU�gaz�hazaz�i�jazazwUaz�laz�maz�naz�o�pazaz�qwUazaz�s�t�z�uazaz�v�wazaz�xaz�yazwUaz�{az�|�}azaz�~az��^az������������az����az����az��az��wUaz������azazwU��azazwUaz����azaz��������azazwU����azwUubaz������az��az��az��az��az��az��az��azaz����az��az��az��az��az��az��az��az��azaz����azaz��wUaz��az��azaz����az��azazwU��az��az��az��az��azaz������az�^wUaz��az��������az������az��az����az��azazwUaz��az��az����az�^az����az����azaz����azaz��azwUaz��az��az��az��az��azwU������azaz������az����azaz��azwUaz����azaz��azwU��az��azaz����az��azaz��azwU�������D���#�������az����az��az��az��az�0azaz��������az��azaz��az�0��az����azgCazaz�gCaz��
�azaz���
az�az�	azgC�az�azgCazaz�az��azaz�az�az�az�az��azaz�az�az�az��azaz��azaz��azaz� az�!�"azazgC�$�=�%�/az�&�'�+az�(az�)az�*azgCaz�,�-az�.azazgC�0�8az�1�2�5�3az�4az�0az�6azaz�7azgC�9az�:azaz�;�<azaz�0az�>az�?az�@�Aaz�Bazaz�CazgC�E�q�F�_�G�Maz�H�Iazaz�Jaz�K�LazazgC�N�Z�O�V�P�Saz�Q�RazgCazaz�Taz�UgCazaz�W�Xaz�YazgCaz�[azaz�\az�]az�^azgC�`�k�a�f�bazaz�caz�d�eazgCaz�gazaz�haz�i�jazgCaz�laz�mazaz�n�oaz�pazazgC�r��s�y�tazaz�uaz�vaz�waz�xazgC�zazaz�{�|az�}azaz�~azgC��az����az����az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��azazgCaz����azaz����azazgC����az����az��azaz����azaz����az��azazgC��������������az��az��az��azaz��azgCaz��az��az��az����azazgCaz��az��az��az��az����azazgC��azaz����azaz��az��az����azgCaz���i������b�������b�����b���b���b���b�����b�wUb���b�b���b���b�����b�v�b���b���b�������b�����b�����b�b��0��b���b��0b�b�����b���b�b����0b����;���
��������������azaz��az��az���[az��az��az����az��b�az��azazb�az��az��az����azaz��azw����az������az�az�azazb��az�azaz�jazaz�az�	az�
az�az�w�az��-���azaz��azaz��azazb��az�azaz����azazb��azaz��az�az� az�!az�"az�#az�$az�%az�&az�'az�(az�)az�*az�+az�,azb�az�.�5�/azaz�0az�1�2az�3�4b�azb�azaz�6�7az�8azaz�9az�:{�az�<�Daz�=�>azaz�?az�@az�Aaz�B�Cazb�azaz�Eaz�Faz�Gaz�Haz�Iaz�Jaz�K�Laz�Maz�Naz�Oaz�Paz�Qaz�Raz�S�`�Taz�Uaz�Vazaz�W�X�\�Yaz�Zaz�[azb�az�]azaz�^�_azazb��aaz�bazaz�c�dazaz�e�faz�gaz�hazb�az�j���k���l���maz�n���o�x�p�t�qazaz�raz�sgQaz�uaz�vazaz�wgQaz�y�}�zazaz�{az�|w�azaz�~�����azgQaz��azazgQ��az������az��az��azgQazaz����azaz��w�az������az��azaz����az��az��azgQaz����az������az������az��gQazaz��azgQaz��az��az��gQaz������azaz����azaz��gQaz��azaz��az����azgQaz��������az��������az��az������azgQaz��azgQaz��azaz����az��azazgQ������azaz��az����azaz��gQaz��azaz����az����az��gQazaz��gQaz����az��az��az��az��az����azazgQaz����az��az��az��az��azgQaz�������������azaz����azaz����az��azjaz��azaz����azaz��az��az��azgQ�����������������az��azaz��gQazaz��az��az��gQaz��az��azaz��az��azgQ�����az�azaz�az�azgQ�azaz��azaz�azgQaz�	�
azaz��azaz�
�az�az�az�az�az�az�az�az�az�az�az�az�azaz��azaz�az�azgQ� �3az�!�"�(az�#�$az�%azaz�&az�'gQaz�)�.az�*az�+az�,�-azgQaz�/azaz�0�1azaz�2gQazaz�4�5az�6az�7az�8azaz�9�:azazgQ�<�A�=���>�U�?�J�@az�Aaz�Bazaz�C�Daz�Eaz�Fazaz�G�Hazaz�Iazu�az�K�Lazaz�M�Nazaz�Oaz�P�Qazaz�R�Sazaz�Tazj�V�qaz�W�X�haz�Y�Z�aaz�[az�\az�]az�^�_az�`azazgC�baz�cazaz�daz�e�fazaz�ggCazaz�iaz�j�kaz�lazaz�m�nazaz�o�pazazgC�raz�saz�t��az�u�vaz�waz�x�|�yazaz�zaz�{az�0�}az�~az�azaz�0����az����az��az��az��az��az�0az��az��azaz��az��������azazb���azazb�az����az����������������������az����az����azaz��azv�az����az����azv�azv�����az����azaz��az��azv�az����az��az��azv�azaz��az��������az��azaz��v�az��az��az��azv�az������azaz��az��az��az��v�az����az��az����az��az��azv�az������azaz����az��azv�az��azaz����azaz����az��az��az��azaz����az��az��azaz����az��az��azaz����az��az��azazv�������az��azaz��az����az��az��azazv���az��azaz��az��az��az��az��azv����0����������az����azaz����azaz��azw��az��az�az�az�azazv���
�az�az�azaz�az�	v�az��az��
az�azaz�v�az�azaz��azaz�w�az���az�azaz��azaz�az�azw��$az�az� az�!az�"az�#wazaz�%�&az�'�*az�(az�)azwU�+�.�,�-azwwUazaz�/azw�1az�2az�3azaz�4�5az�6azaz�7az�8�9az�:az�;az�<az�=az�>az�?az�@azb�az�B���C���D�a�Eaz�Faz�G�Raz�H�Iaz�Jaz�Kaz�L�O�Maz�Nazazt�az�Paz�Qazt��S�Zaz�T�Uazaz�V�Waz�Xaz�Yazt�az�[az�\azaz�]�^az�_azaz�`t�az�b���c�{�d�s�e�laz�f�gaz�hazaz�i�jaz�kazkXaz�mazaz�naz�o�paz�qazaz�rkXaz�tazaz�uaz�v�wazaz�xaz�yaz�zazw*�|���}���~��az�az����az��azaz��azkX��azaz����az��azaz��kXazaz��az��az��az��az��az��kXazaz��az��az����az��azaz��az��kXaz��azaz��az��az����az��azaz����azaz��kXaz����������az��az��az��az��azaz����az��azaz��gQazaz����azaz��az��az����azaz��az��az��azkX�����������������azaz������az������az���az��az�az��az��az��az�az��azaz����az����az��az��jaz��az��azazj������azaz��az����azaz����azjazaz��az������az����j����azjjaz��az����j��jaz��azjaz������az������az��az��az��az��azazjaz����az��azaz����azazj��az��az��azaz��az����azaz�jaz��V��;��/������az��	azaz�
azubaz�az�
�az{�az�azaz��az�azazub��*az��az�azaz��az�az�az�az�az�az� az�!az�"az�#az�$az�%az�&az�'az�(az�)azubazaz�+�,az�-azaz�.azub�0az�1�6�2az�3azaz�4�5azazubaz�7�8az�9azaz�:�"az�<az�=�Gaz�>�?�C�@az�Aaz�Bazubazaz�D�Eazaz�Fazwc�H�Q�I�Maz�J�Kaz�Lazw�az�Nazaz�O�Pazazub�Razaz�S�Taz�Uaz�"az�W�t�X�_az�Y�Zazaz�[�\az�]az�^azw�az�`�f�aaz�bazaz�c�daz�eazazub�g�o�haz�i�laz�j�kazubaz�mazaz�nubaz�paz�qaz�razaz�sazw��u���v���w�|az�xaz�y�zaz�{azazub�}az�~��az�az��azub��azaz���"az������az��az��az��azazub��az��az��az��azazubaz����az��azaz����azaz��{�az���;������az������az��azaz������az��az������b�az��azb�az��azaz��az����azb�az��az��az��azaz��az������az����azb�az��������b���gQw���azgQaz������az����az��az��az��az��az��az��az��azj������az��az������azaz����azv�az��azaz��az��azjaz����az��az����az��az��azw���az����v���maz���(�����az��������az��az��az��az��t�az��az��azaz����azt�az���az���������az��v�t�az����azaz��az��az��az��az��az��az��az��az��az��az��az��az��az��az��
az�az�azv�az��	az�az��azazt��
az����
wazwaz�azv�azaz��azaz�az�az��azaz�az��az�az�az�az�az�az�az� az�!azaz�"az�#�$az�%az�&azaz�'azu��)az�*�1az�+�,azaz�-�.az�/azaz�0az�K�2az�3azaz�4�5az�6�9�7�8azu�wu�az�:v�az�<�W�=az�>az�?az�@azaz�Aaz�B�Caz�Daz�Eazaz�F�Gaz�Haz�Iaz�Jazaz�K�Laz�Maz�Naz�Oazaz�Paz�Qaz�R�Saz�Taz�Uaz�Vaz@az�X���Y���Z�l�[�b�\az�]azaz�^az�_az�`az�awaz�cazaz�daz�e�f�iaz�gaz�hwaz�jaz�kazwaz�m���n��az�oaz�paz�q�raz�sazaz�taz�uaz�v�waz�xaz�yaz�zazaz�{az�|�}azaz�~�az��azaz��az����azv�az����az��az��az��az��azw��azaz����azaz��azwaz��az����az������azaz��azwaz����azwaz����az��az��az����az��az��az��azazwaz��az����azaz��az��az����azwaz��az������az������azaz��az��az��az��v�azaz������az��az����azazv���az��azv�azaz������az����az��azaz����azaz��az��az����az��az��az��az��azaz����az��azaz��az����az��az��azazv�az��az����az��azaz��azv���������������@��@��@az@��@��@��@az@������@��@��@az@������@��@az@��@��@az@��������������@��@|@��@��@|@��@��@��@az@�����@�@az@�@�@|@���	@�
@az@�@�
@az@��t��������������C��6��
����������@�@�@���������� �|�!�x�"�(�#az�$�&�%az@az�'azaz@�)az�*�,�+az�az�-azaz�.�/az�0�R�1�@�2�9�3�6az�4�5azw�az�7az�8azazub�:az�;�=�<azazt��>�?t�azazt��A�K�B�H�C�F�D�Eazjazt��Gazazv��Iaz�Jazaz���Laz�M�P�N�OgCm�Kv��QazazgQ�S�h�T�^�U�[�V�Xaz�WkXaz�Y�Z�1azw�az�\az�]azb�m�_�e�`�b�aazv�az�c�dazwFazb��faz�gazwup�i�t�j�q�k�n�l�mv�azv�v��o�pwUazazv��raz�sazazt��uaz�vaz�wazwc�az�y�z@�{@az@�}��az�~�@az��az��az@az��az��az��az@����������az����|az��azaz@��@����az��az��az|��@az@az��az����@��@az@��@��@��az����|����@|@��@��@��@az@������@��@��@az@@��@��@����@��@@����@@az@����@������@��@@��@��@��@��@��@��@��@az@����@@����@��@��@��@��@@��az@������@��@@����@��@��@��@@��@����@��@��@@az@��@����@��@@����@@��@����@��@@��@��@az������@��@��@@����@@����@@��@����@@��@��@��az@���@��@����@��@@����@��@@��@����@@��@��@az�@@�@��@@��@�@@�@�	�
@�@�@t�@@��@��)��@��@@��@�@�@@��@@��@�@@az�@@�@� @�!�"@�#@@�$@�%@�&@�'�(@az@@�*�+@�,@�-@@�.@�/@�0@�1@�2@�3�4@�5@@az�7���8���9�k�:�^�;�G@�<�=@�>@�?@@�@@�A�B@�C@@�D@�E�F@az@�H�S�I@�J@�K@�L@�M@�N@�O@@�P@�Q@�Raz@@�T�U@�V@@�W�X@@�Y�Z@�[@�\@�]@@az�_@@�`@�a@�b�c@@�d@�e�f@@�g@�h�i@@�jaz@�l�y�m@�n@@�o@�p�q@�r@�s@�t@@�u�v@�w@@�xaz@�z���{@�|@@�}@�~@���@@��@��@��@����@@az������@��@��@@����@��@@����@@����@az@��@@����@��@@��@��@����@��@��@@az����������@@��@����@��@��@��@@����@��@@����@@gC����@��@����@@����@��@��@��@@����@��@@az@��@��@����@@����@��@@��@����@��@az@��������@������@��@��@��@��@����@��@@����@az@@��@��@����@@��@����@@����@@az��@��@@��@��@����@��@@��@����@��@@az@����@��@@��@��@��@��@��@��@��@��@��@az���r���2�����@@��@����@�����@�@@��@�@@�@�@az�@�@@�	�
@@�@��
@@az���@�@@�@��@�@�@@�@�@��@@az��'�@@��@� @�!@@�"�#@�$@@�%@�&@az�(@�)@@�*@�+@�,�-@�.@�/@�0@�1@@az�3�W�4�@@�5�6@�7@�8@�9@@�:@�;@�<�=@�>@@�?w@�A�L@�B�C@�D@�E@�F@�G@@�H@�I�J@�K@@w�M@@�N�O@@�P@�Q@�R�S@�T@�U@@�Vaz@�X�d@�Y�Z@�[@�\@�]@�^@�_@@�`�a@�b@�c@az@@�e�f@@�g@�h@�i�j@@�k@�l@�m�n�p@�o@az@�q@b��s���t���u���v@�w@�x���y@�z@�{@@�|�}@@�~�@��@az@@��@��@��@����@@����@@��@az��@��@��@@��@��@��@����@@��@��@��@kX����������@��@@����@��@@����@��@@����@az@��@��@��@��@��@@��@��@��@��@��az@@������@����@��@��@@��@��@��@��@��az@@��@��@����@@��@����@��@��@az@������������@��@��@����@@��@��@��@����@��@@az@����@��@��@��@@����@@��@����@az@��@������@@��@����@@����@@��@��@��az@��@��@��@��@��@@����@@����@az@��������@@����@��@��@@��@��@����@��@@az���@�@@�@�@��@@�@�	@�
@az@��
@@��@@��@�@�@@�@az��2�@��!@�@��@�@�@@��@� @@az�"�*�#@@�$@�%�&@�'@�(@�)@@az@�+@�,�-@@�.@�/�0@@�1gQ@@�3@�4@�5�6@�7�=@�8@�9@�:�;@�<@@az�>@�?@�@@az�A�B@|@�D���E@�F@�G@�H@�I@�J@�K@�L@�M���N���O���P�q�Q�g�R�e�S@�T@�Uaz�Vaz�Waz�Xaz�Yaz�Zaz�[az�\az�]az�^az�_az�`azaz�a�baz�caz�dazw�az�faz@az�h�kaz�i�jazaz|�l�o�m�n�||az�p@az��r�{�s�wM�t�u�vaz||az�x�yaz@|�zaz|�|���}�az�~@az����N��az|������azN|����azN�'az����������@����az��@azaz��|az����@��@��@az��@az@������������az��@�caz��@az��@��@az|������azaz��az|��@az@��@����az����������az��azfaz��|azaz������|azaz@��@��@��@��@az@��@��@��������������azaz��az@��@az@������������az�|azaz��az|��@��@L�az����az����@az@��������������az|az��azaz|az����@��@��@��@��az������az��@��@������
��@��@������@������@az��az@��@��@az����az��az��az��az��az��az��az��az��az��az��az��az��az��az��azgCaz������@�@|az�@�@az@���@�	�
az@@H �@az@�@�@�@�@�@�@�@az@�az��&�az�azaz��az�azaz�az��az� az�!azaz�"�#az�$az�%azv�az�'�?az�(az�)�*�4�+az�,azaz�-�.az�/az�0az�1azaz�2az�3azu��5az�6azaz�7�8az�9az�:az�;azaz�<az�=�>azv�az�@�~�Aaz�B�f�C�M�Dazaz�Eaz�Faz�G�Hazaz�I�Jaz�Kazaz�Lazv�az�N�O�^�P�W�Qaz�Razaz�S�Taz�Uazaz�Vazm�Xaz�Yaz�Zazaz�[az�\�]azkXv��_azaz�`�aaz�baz�caz�daz�eazv�az�gaz�h�s�iaz�jaz�kaz�lazaz�m�naz�o�qaz�pazm�razmaz�taz�uaz�vaz�waz�xazaz�y�z�|az�{azkX�}azv�azaz���az��azaz����az��az��az����az����az��az��azazm��az��az����az��azkX��mv�azaz@��@��@��@������@��@|@��@��@az@����������@��@az@��@��@az@������@��@az@��@��@az@���%����@����@��@az@��az��@��@��@��������������o���.�����az��az��az��az��az��az��az��azaz����az��az��az��az��az��az��az��az��az����������az��������az����v�azv�az��az��w�az��az������azazv�az��v�az����az��az��������azazw���azazv�����az��az����azazv���az��az��azazw��������az����������az��azw�w�az����az��v�azaz��azgC��az��azaz��azazv��az���azaz�az�w*azaz�	�
azaz�azv�az�
��&�az�az�az�az�az�az�az�v��az�az�az�az�az�az�az�az�az� az�!az�"az�#az�$az�%azv�az�'az�(az�)az�*az�+az�,azv��-v�az�/�e�0az�1�J�2az�3az�4az�5az�6az�7az�8�I�9v��:az�;az�<az�=az�>az�?az�@az�Av��Baz�Caz�Daz�Eaz�Faz�Gaz�Hv�v�azv�az�Kaz�Laz�Maz�Naz�O�b�Pv��Qv��Rv��Saz�Taz�Uaz�Vaz�Waz�Xaz�Yaz�Zaz�[az�\az�]az�^az�_az�`az�aazv�azv��cv��dv�azaz�faz�g�haz�iaz�jaz�kaz�laz�mazw��nw�az�paz�qazaz�raz�s�taz�uaz�vaz�waz�xaz�y���zv��{v��|az�}az�~az�az��az��az��az��az��az��az��az��az��az��az��azv�az��azv�az����az��az����az��az��az��az��az��az��az��azw���w�azaz����az��azaz����az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��azw�az������azaz����azaz����az��az��az��az��az��az��az����w�����az��az��az��az��az��az��az��az��az��az��az��az��az��az��azw�azw�az����az��az��������az��az��az��az��az��azaz��az���azaz����az��az��az��az��az��az����v�����az��az��az��az��az��az��az��az��az��az��az��az��az��az��azv�azv�az��az��azaz���az�az�az�az�az�az���az�v��	az�
az�az�az�
az�az�az�az�az�az�az�az�az�azv�azv�az�azaz�az�az��azaz�az�� az�!az�"az�#az�$azw�az�&�M�'�*�(@�)@az@�+||�,|�-|�.�/|�0||�1|�2|�3|�4|�5|�6|�7|�8�9|�:|�;|�<||�=�>|�?|�@||�A�B|�C|�D||�E�F||�G|�H|�I|�J�K||�L|@�N�Q�O@�P@az@�R@�Sazaz�Taz�Uaz�Vaz�W�Xaz�Yaz�Zazaz�[�\az�]az�^azaz�_�`az�aazaz�b�caz�daz�eaz�faz�gaz�haz�iaz�jaz�kaz�laz�maz�naz�oazaz�paz�qaz�r�sazaz@�u��v���w�{�x@�y@�z@az@�|��}@�~@az@��@��@|@����������@��@��@��az��azaz��az����azaz��az��������az��az��az��az��az������azazv�az��v�az��az��az��az��az��az��az��az��v���az��az��az��az��az��az��azv�az��@��@��@��azaz����az��az��az����az����azaz����az����az����azaz��az����az��azaz��az��az����azaz����az��az��az��az��az��az��az��az��az@az��azaz��az����azaz����az��az��az��az��azaz����azaz����az��az��az��az��az��az��az@az��az��az��azaz����az��az��az��az��az��azaz����az��az��azaz��az����az��az��az��az��az��az��az��az��az@az�����@��@��@�azaz����azaz��az�az�azaz�az�	�
az��az��
az��az���az��az�az�az�azaz��@�@az@��&��@��@�@az@� �#�!@�"@az@�$@�%@az@�'�.�(�+�)@�*@az@�,@�-@az@�/�2�0@�1@az@�3@�4@az@�6�W�7�!�8�n�9�E�:�A�;�>�<@�=@N@�?@�@@d@N�B�C@�D@cW@�F�j�Gg4�HcW�IcW�JcW�KcW�LcWcW�M�NcW�OcW�PcW�QcW�RcWcW�ScW�T�UcWcW�V�WcW�XcW�YcW�ZcW�[cW�\cW�]cW�^cW�_cW�`cW�acW�bcW�ccW�dcW�ecW�fcW�gcW�hcW�icW?@cW�kd�l@�m@M@�o�t�pd�qt��r@�s@b�@�u�L��v�waz�xaz�yaz�zaz�{az�|az�}az�~az�az��az������az��az��az������az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��azaz��az��az��azb�az��az��az��az��������az��az��az��az��az��az������az����az��az��az��az��az��gCaz��az��az��azaz����azazgC��az��az����az��az����azaz��azb���azaz����az����azgQb�azaz��az��az��az��az�����Zaz�����,������������az��az��azkX������������v�b�gCaz����b�azazgC������kXazb���b�b�az����������������b�kXazwU����b��az���az��azazub������������gCb�azb�����b�azaz�i��������w�wUazv�����azv�v�az�����������������kXazazb���b�v�ub���azb�azaz�azv�����
��	v�azmaz�azgCaz�
�az�ubaz�azazgC��������azwv�az��azw�w�v���az�azw�az�azb�� �&�!�#b��"azkX�$�%kXgQgQb��'�*�(�)b�azazb��+azb�az�-�R�.�@�/�8�0�7�1�4�2�3gCazv�az�5�6b�v�b�wUb�az�9�>�:�;azw�<�=b�kXw*az�?azb�az�A�J�B�G�C�Eaz�DkXaz�M�Fazb�az�H��IgCaz�K�Naz�L�MgCazgC�Oaz�P�QgCv�azv��Saz�Taz�Uaz�V�Xaz�WgCazaz�Yw�gC�[��\���]���^�w�_�j�`�d�a�bb�az�cazazgQ�e�gaz�fwgC�h�iwazazgC�k�p�l�n�mazgCaz�oazt�az�q�t�r�sazgCmw��u�vazgCazb��x���y���z�}�{�|azgCazb��~�azgQb�v���������kXt�gCazaz��azgC����������azazv���azv�az��������azb�kXgC��gCazgC��������az��az������azgCazkX����az��az��v�gC����az��gCaz��azgQaz����������az����RTaz<az����az��azw�az��az�i������������wwUazkXaz��azv�az������b�v�azw��������������������az��azkX��azazv�����az��kXazaz��v��?������������kXazw�gC����azw�azv���az����gCb�b�w�����������������b�gCb�azaz��b�w*����w*��gQaz����wUgCkXv�������az����kXazazgC����az��azgC����gQb�azv��������������������gQazv�az��azazv�����v���v�b�����v�azazw������������v�w�jgQ��gQwgCb���kXaz�kXgQkX���az�	��
azkXaz��
gCazv�az��az�az�azb��az�azgCj��^��6��#��az���az�azv��azazv�� az�!azaz�"�Maz�$�.�%�(az�&�'azazwU�)�+az�*azgC�,�-gCazazgQ�/�3�0az�1�2v�gQazv�az�4az�5waz�7�D�8�<�9azaz�:�;azgCaz�=�@az�>az�?azv��Aaz�B�CgCv�w*az�E�Q�F�L�G�Iaz�Hazv��J�KazkXwaz�M�O�NazazgQaz�Pwaz�R�X�S�V�T�Uv�gCgCv��WgCazb��Y�[az�ZazgC�\�]wcazazgC�_���`�s�a�g�baz�c�e�dazb�az�fazazw*�h�o�i�l�j�kazgQgCkX�m�nt�gCazw*�p�raz�qw�azazgC�t��u�y�vaz�w�xv�azazv��z�}�{�|b�wkXw*�~azb�az������������gQgCazv������"azazwaz��azt���������������az��azv�v�������azwaz��azgCaz����az����v�azwaz����azazgQ��������az����azwaz������gCv�gCgCaz������az����gCazazt�����az��v�az��azazb�������az������azaz��az��az��az����az��������az��������az��azwazaz������gCb�gQaz����������az����gCv�v�kX����az��b�jb�az��������azgC����v�azw�t���������azgCazgC����gCazkXw��az��az��������az��azv���azazkX��az����azv�azb���az��azaz��az��azgCaz��az��az��az��az����az��az��m��az��az��az��az��m��az��az��az��az��az��az��az��az�azmazp����\�@�@�@�@�@�	@�
������ƒ�
����p��A��*�� ������@xvdcW���;Mlit�����Ng_g_m���L�g4dxv�!�$�"b�xv�#`�b��%�(�&�'b�liaNd]�)@g4@�+�6�,�1�-�/�.@g4@�0@g4@�2�4�3@�G@�5@N@�7�<�8�:�9@N@�;@N@�=�?�>@N@�@@ak@�B�Y�C�N�D�I�E�G�F@L@�H@L@�J�L�K@L@�M@L�@�O�T�P�R�Q@�@�S@�@�U�W�V@�@�X@�@�Z�e�[�`�\�^�]@d]@�_@g_@�a�c�b@g_@�d@g_@�f�k�g�i�h@j�@�j@aN@�l�n�m@aN@�o@m�@�q���r���s�~�t�y�u�w�v@m�@�x@m�@�z�|�{@li@�}@li@���������@j�@��@l�@������@*�@��@j�@��������������@p�@��@g4@������@d@��@M�@��@iM@������������������@d@��@d@������@d{@��@t�@����������@N@��@`�@������@m�@��@N@��������������@cW@��@M�@������@xv@��@b�@����������@nW@��@b�@������@d@��@li@���$����������������������@ak@��@xv@������@d{@��@N@����������@��@��@d@������@m�@��@cW@��������������@c�@��@b�@������@b�@��@j�@����������@M�@��@nW@������@nW@��@M@���
�������������@d@��@M@�@�@p�@�����@M@�@d@�	��
@L�@�@�0@�������@xv@�@l@���@d@�@ak@�����@c�@�@`�@� �"�!@b�@�#@xv@�%�T�&�=�'�2�(�-�)�+�*@d@�,@d@�.�0�/@��@�1@g4@�3�8�4�6�5@b�@�7@d@�9�;�:@N@�<@M�@�>�I�?�D�@�B�A@M�@�C@c�@�E�G�F@d@�H@M@�J�O�K�M�L@b�@�N@d@�P�R�Q@g4@�S@b�@�U�l�V�a�W�\�X�Z�Y@c�@�[@cW@�]�_�^@N@�`@c�@�b�g�c�e�d@d@�f@M�@�h�j�i@g4@�k@c�@�m�x�n�s�o�q�p@d@�r@d@�t�v�u@d@�w@n�@�y�~�z�|�{@M@�}@d{@�€@d{@‚@M�@„�@…��†µ‡žˆ“‰ŽŠŒ‹@i�@@L�@‘@d{@’@g4@”™•—–@d@˜@�@šœ›@i�@@d{@Ÿª ¥¡£¢@b�@¤@c�@¦¨§@M�@©@d@«°¬®­@N@¯@d@±³²@c�@´@c�@¶��·��¸½¹»º@M�@¼@xv@¾�¿@d@�@d@����������@N@��@g4@������@c�@��@�@��������������@l@��@N@������@M@��@d{@����������@g4@��@d@������@b�@��@c�@��������������������@b�@��@az@������@c�@��@cW@�������@xv@�@cW@���@cW@�@n�@��	�����@d@�@d{@���@d@�@l@�
���
�@c�@�@d{@�@d@��)�������@d@�@d@���@N@�@M@��$� �"�!@d{@�#@xv@�%�'�&@g4@�(@M@�*�5�+�0�,�.�-@d@�/@N@�1�3�2@b�@�4@b�@�6�;�7�9�8@N@�:@L@�<�>�=@L@�?@L@�A×�B�h�C�Q�D�F�E@d@�G�L�H�J�I@L@�K@l@�M�O�N@d{@�P@d{@�R�]�S�X�T�V�U@xv@�W@m�@�Y�[�Z@cW@�\@M@�^�c�_�a�`@M�@�b@d{@�d�f�e@d@�g@aN@�iÀ�j�u�k�p�l�n�m@d@�o@b�@�q�s�r@N@�t@az@�v�{�w�y�x@b�@�z@d@�|�~�}@i�@�@d@ÁÌÂÇÃÅÄ@d@Æ@c�@ÈÊÉ@xv@Ë@d@ÍÒÎÐÏ@d@Ñ@d{@ÓÕÔ@xv@Ö@d{@Ø��ÙðÚåÛàÜÞÝ@c�@ß@b�@áãâ@d@ä@c�@æëçéè@N@ê@M�@ìîí@xv@ï@t�@ñüò÷óõô@d@ö@N@øúù@d@û@c�@ý�þ@ÿ@c�@�����@d@��@L�@������������������@c�@��@d@������@t�@��@L�@����������@b�@��@N@������@M@��@g4@��������������@N@��@d@������@c�@��@M�@����������@c�@��@d{@������@d{@��@L�@��i�Ĭ��M�����������@d@�@{
@���@��@�@b�@����	�@d@�
@b�@���
@M@�@d{@�������@L@�@M@���@iM@�@n�@�@L�@��6� �+�!�&�"�$�#@N@�%@c�@�'�)�(@j�@�*@d@�,�1�-�/�.@M�@�0@M�@�2�4�3@d@�5@d@�7�B�8�=�9�;�:@M@�<@nW@�>�@�?@d{@�A@d{@�C�H�D�F�E@c�@�G@M@�I�K�J@d@�L@M@�N�}�O�f�P�[�Q�V�R�T�S@�-@�U@M@�W�Y�X@M@�Z@b�@�\�a�]�_�^@d@�`@b�@�b�d�c@M@�e@M@�g�r�h�m�i�k�j@M@�l@M@�n�p�o@d@�q@b�@�s�x�t�v�u@M�@�w@c�@�y�{�z@d{@�|@M@�~ĕ�ĊĀąāăĂ@d@Ą@cW@ĆĈć@d@ĉ@d@ċĐČĎč@M�@ď@d@đēĒ@g4@Ĕ@d@ĖġėĜĘĚę@d@ě@d@ĝğĞ@d@Ġ@d@ĢħģĥĤ@d@Ħ@d@ĨĪĩ@l@ī@l@ĭ�Į��į��İĻıĶIJĴij@`�@ĵ@c�@ķĹĸ@L@ĺ@d@ļ�ĽĿľ@g4@�@ty@������@cW@��@aN@��������������@b�@��@M�@������@g4@��@p�@����������@c�@��@b�@������@M�@��@N@�����������������@d@��@i�@������@b�@��@M�@����������@M@��@g4@������@d@��@M�@�������@d@�@d{@���@b�@�@N@�����@c�@�@c�@��
�	@d@�@b�@�
�<��%�������@d@�@d@���@cW@�@|�@�� ���@c�@�@d@�!�#�"@d@�$@d@�&�1�'�,�(�*�)@d@�+@xv@�-�/�.@g4@�0@d@�2�7�3�5�4@d@�6@N@�8�:�9@n�@�;@c�@�=�R�>�I�?�D�@�B�A@g_@�C@c�@�E�G�F@b�@�H@d{@�J�O�K�M�L@d@�N@d@�P@�Q@M�@�S�^�T�Y�U�W�V@l�@�X@az@�Z�\�[@d@�]@M@�_�d�`�b�a@d{@�c@K�@�e�g�f@ak@�h@�I@�j�
�k���lř�mł�n�w�o�t�p�r�q@b�@�s@d{@�u@�v@c�@�x�}�y�{�z@M�@�|@b�@�~ŀ�@c�@Ł@c�@ŃŎńʼnŅŇņ@c�@ň@L�@ŊŌŋ@c�@ō@b�@ŏŔŐŒő@b�@œ@M@ŕŗŖ@�@Ř@c�@ŚŬśšŜ@ŝşŞ@M�@Š@M�@ŢŧţťŤ@�F@Ŧ@d@ŨŪũ@d@ū@b�@ŭŸŮųůűŰ@d@Ų@c�@ŴŶŵ@N@ŷ@d@ŹžźżŻ@b�@Ž@b�@ſ��@cW@��@aN@����������������������@M�@��@d@������@N@��@b�@����������@g_@��@M�@������@N@��@nW@��������������@N@��@d{@������@b�@��@l@����������@d@��@n�@������@M@��@d@����������@d{@�@d{@���@d@�@d@�����@b�@�@`�@��	�@l�@�
@b�@�@d@��m��>��'�������@b�@�@M�@���@d{@�@M�@��"�� �@c�@�!@M@�#�%�$@M@�&@g_@�(�3�)�.�*�,�+@c�@�-@d{@�/�1�0@M@�2@aN@�4�9�5�7�6@g_@�8@M�@�:�<�;@d{@�=@d{@�?�V�@�K�A�F�B�D�C@n�@�E@cW@�G�I�H@cW@�J@b�@�L�Q�M�O�N@N@�P@�j@�R�T�S@d{@�U@cW@�W�b�X�]�Y�[�Z@d@�\@nW@�^�`�_@d{@�a@N@�c�h�d�f�e@d{@�g@t�@�i�k�j@d@�l@M�@�nƝ�oƆ�p�{�q�v�r�t�s@d{@�u@M�@�w�y�x@d{@�z@d@�|Ɓ�}��~@d{@ƀ@L�@ƂƄƃ@d@ƅ@`�@ƇƒƈƍƉƋƊ@nW@ƌ@b�@ƎƐƏ@M@Ƒ@b�@ƓƘƔƖƕ@L�@Ɨ@c�@ƙƛƚ@c�@Ɯ@c�@ƞƵƟƪƠƥơƣƢ@d{@Ƥ@߫@ƦƨƧ@L�@Ʃ@nW@ƫưƬƮƭ@M@Ư@d@ƱƳƲ@b�@ƴ@b�@ƶ�ƷƼƸƺƹ@ak@ƻ@ak@ƽƿƾ@M�@�@N@����������@cW@��@d{@������@g4@��@N@�������T��Ǖ���6���������������������@c�@��@d@������@d{@��@g4@����������@cW@��@N@������@c�@��@M�@������������@d@��@��@@��@��@��@��@�@�@�@�@�@�@�@�@�@�@�@����@d@�@N@�@d@���	��
���
�@c�@�@c�@���@M�@�@xv@�����@c�@�@d@���@xv@�@b�@� �+�!�&�"�$�#@`�@�%@M�@�'�)�(@d@�*@j�@�,�1�-�/�.@c�@�0@d@�2�4�3@d@�5@d@�7�f�8�O�9�D�:�?�;�=�<@N@�>@M�@�@�B�A@|�@�C@xv@�E�J�F�H�G@cW@�I@d@�K�M�L@l@�N@M�@�P�[�Q�V�R�T�S@d@�U@c�@�W�Y�X@M@�Z@d@�\�a�]�_�^@d{@�`@N@�b�d�c@N@�e@N@�g�~�h�s�i�n�j�l�k@N@�m@N@�o�q�p@N@�r@d@�t�y�u�w�v@c�@�x@g4@�z�|�{@d@�}@d@�NJǀDžǁǃǂ@d@DŽ@d@džLjLJ@m�@lj@cW@NjǐnjǎǍ@d@Ǐ@d{@ǑǓǒ@M�@ǔ@b�@ǖ�Ǘ��ǘǯǙǤǚǟǛǝǜ@M@Ǟ@ak@ǠǢǡ@ak@ǣ@�;@ǥǪǦǨǧ@d@ǩ@c�@ǫǭǬ@cW@Ǯ@M@ǰǻDZǶDzǴdz@d{@ǵ@ak@ǷǹǸ@l@Ǻ@t�@Ǽ�ǽǿǾ@t�@�@M@������@L�@��@d@������������������@d@��@d@������@d{@��@d@����������@M@��@d@������@ak@��@xv@��������������@aN@��@d@������@d@��@c�@����������@d@��@ak@������@d@��@ak@��%���������@d@�@L�@���@H @�@d@��	���@d@�@M@�
��@d{@�
@b�@�������@�,@�@xv@���@N@�@g_@�� ���@d@�@M@�!�#�"@c�@�$@q~@�&�=�'�2�(�-�)�+�*@d@�,@b�@�.�0�/@N@�1@d{@�3�8�4�6�5@b�@�7@d@�9�;�:@n�@�<@nW@�>�I�?�D�@�B�A@ak@�C@cW@�E�G�F@b�@�H@aN@�J�O�K�M�L@d@�N@b�@�P�R�Q@L�@�S@d@�U��Vȳ�WȄ�X�o�Y�d�Z�_�[�]�\@d@�^@d@�`�b�a@c�@�c@c�@�e�j�f�h�g@N@�i@d@�k�m�l@lx@�n@N@�p�{�q�v�r�t�s@xv@�u@d{@�w�y�x@d{@�z@c�@�|�@�}�~@d@ȀȂȁ@M@ȃ@`�@ȅȜȆȑȇȌȈȊȉ@d@ȋ@c�@ȍȏȎ@L�@Ȑ@L�@ȒȗȓȕȔ@�c@Ȗ@l�@ȘȚș@d@ț@M�@ȝȨȞȣȟȡȠ@b�@Ȣ@L�@ȤȦȥ@i�@ȧ@t�@ȩȮȪȬȫ@b�@ȭ@c�@ȯȱȰ@c�@Ȳ@d@ȴ��ȵ��ȶ�ȷȼȸȺȹ@L�@Ȼ@d@ȽȿȾ@n�@�@d@����������@d@��@c�@������@d@��@d@��������������@d@��@M@������@M@��@d@����@����@N@������@M�@��@d{@�����������������@b�@��@L�@������@M@��@d@����������@d@��@d@���@d@�@d@�������@d{@�@M�@���@N;@�@aN@����	�@d{@�
@d{@���
@cW@�@|�@�ɀ��Q��*�������@d@�@M@���@`�@�@�;@� �%�!�#�"@d@�$@`�@�&�(�'@c�@�)@d@�+�6�,�1�-�/�.@M@�0@d@�2�4�3@d@�5@M@�7�L�8�J�9@�:@�;M��<M��=M��>M��?M��@M��AM��BM��CM��DM��EM��FM��GM��HM�M��IM�>��K@M@�M�O�N@d@�P@b�@�R�i�S�^�T�Y�U�W�V@b�@�X@d{@�Z�\�[@b�@�]@d{@�_�d�`�b�a@`�@�c@b�@�e�g�f@g4@�h@l@�j�u�k�p�l�n�m@M@�o@L�@�q�s�r@d@�t@d@�v�{�w�y�x@xv@�z@|�@�|�~�}@d@�@d@ɁɰɂəɃɎɄɉɅɇɆ@m�@Ɉ@cW@ɊɌɋ@m�@ɍ@d{@ɏɔɐɒɑ@m�@ɓ@l@ɕɗɖ@b�@ɘ@b�@ɚɥɛɠɜɞɝ@d{@ɟ@nW@ɡɣɢ@�5@ɤ@d@ɦɫɧɩɨ@M@ɪ@c�@ɬɮɭ@b�@ɯ@~@ɱ��ɲɽɳɸɴɶɵ@L�@ɷ@aN@ɹɻɺ@b�@ɼ@M�@ɾ��ɿ��@`�@��@b�@������@d@��@d@��������������@xv@��@N@������@az@��@b�@����������@t�@��@b�@������@L�@��@cW@���r��ʦ���?��������������������@b�@��@N@������@d@��@`�@���������@d{@�@xv@���@az@�@g4@����@��@d@���@L@�@d@����	�@g_@�
@j�@���
@d@�@��@��(�������@M@�@3�@���@d@�@d@��#��!� @N@�"@d@�$�&�%@g4@�'@b�@�)�4�*�/�+�-�,@l@�.@M�@�0�2�1@n�@�3@�8@�5�:�6�8�7@d@�9@d@�;�=�<@`�@�>@d{@�@�w�A�X�B�M�C�H�D�F�E@b�@�G@`�@�I�K�J@d@�L@b�@�N�S�O�Q�P@j�@�R@b�@�T�V�U@c�@�W@d@�Y�d�Z�_�[�]�\@cW@�^@h@�`�b�a@d@�c@d@�e�r�f�p�g@�h@�iM�jM�kM�lM�mM�nM�oMq�M�q@M@�s�u�t@d@�v@M�@�xʏ�yʄ�z��{�}�|@d{@�~@ak@ʀʂʁ@n�@ʃ@N@ʅʊʆʈʇ@d@ʉ@d@ʋʍʌ@d@ʎ@az@ʐʛʑʖʒʔʓ@d@ʕ@N@ʗʙʘ@N@ʚ@N@ʜʡʝʟʞ@N@ʠ@`�@ʢʤʣ@b�@ʥ@=@ʧ�ʨ��ʩʾʪʳʫʮ@ʬʭ@L�@ʯʱʰ@cW@ʲ@N@ʴʹʵʷʶ@aN@ʸ@|�@ʺʼʻ@L�@ʽ@d@ʿ����������@d@��@N@������@c�@��@l�@����������@d@��@d@������@d{@��@az@������������������@c�@��@N@������@d]@��@d@����������@d@��@d{@������@g4@��@M�@�������������@c�@��@N@���@N@�@N@�����@N@�@d{@���@�@�cW�cW�cW�cW�cW�cW�	cW�
cW�cW�cW�
cW�cW�cWcW���cWx��cW�@d@��C��.��#�����@m�@�@M@��!� @iM@�"@Oc@�$�)�%�'�&@M@�(@d{@�*�,�+@cW@�-@cW@�/�:�0�5�1�3�2@d@�4@d@�6�8�7@d@�9@d@�;�>�<@�=@p�@�?�A�@@d{@�B@b�@�D�[�E�P�F�K�G�I�H@g4@�J@aN@�L�N�M@�W@�O@`�@�Q�V�R�T�S@nW@�U@L@�W�Y�X@d@�Z@d@�\�g�]�b�^�`�_@d@�a@d@�c�e�d@L�@�f@c�@�h�m�i�k�j@d@�l@b�@�n�p�o@d@�q@K�@�s�^�t���u˴�vˍ�w˂�x�}�y�{�z@M@�|@g_@�~ˀ�@e�@ˁ@L�@˃ˈ˄ˆ˅@cW@ˇ@cW@ˉˋˊ@cW@ˌ@cW@ˎ˙ˏ˔ː˒ˑ@N@˓@m�@˕˗˖@d@˘@b�@˚˟˛˝˜@b�@˞@M�@ˠˢˡ@d{@ˣ@ˤ@˥d˦d˧d˨d˩d˪d˫dˬd˭dˮd˯d˰d˱d˲d˳d�d˵��˶�˷˼˸˺˹@c�@˻@cW@˽˿˾@cW@�@d{@����������@d@��@xv@������@d@��@c�@��������������@d@��@d@������@d@��@L�@����������@az@��@c�@������@c�@��@g_@��������������������@d@��@b�@������@n�@��@g_@��������@g4@�@d{@���@d@�@d@�����@�@c�@���@L�@�@L�@����
�	@L�@�@d{@�
��@`�@�@d{@��G��<�����@cW@�@cW@��:�@�@�d�d�d� d�!d�"�/�#�)�$�&d�%dq��'�(b�dd���*�-�+�,b�o��-m��.d�Z���0�7�1�4�2�3b��d�Q�5�6do��d�8d�9dm�c��;@l@�=�B�>�@�?@d@�A@N@�C�E�D@��@�F@M�@�H�S�I�N�J�L�K@d@�M@b�@�O�Q�P@b�@�R@b�@�T�Y�U�W�V@d@�X@d@�Z�\�[@d@�]@d{@�_���`̪�a�v�b�m�c�h�d�f�e@c�@�g@d@�i�k�j@ak@�l@i�@�n�s�o�q�p@q~@�r@d@�t@�u@d@�ŵ�x�}�y�{�z@M�@�|@L�@�~̀�@q~@́@N@̥̣̃̄̅@̆@g_̖̇̈g_̉̊g_̋g_̌g_̍g_̎g_̏g_̐g_̑g_̒g_̓g_̔g_̕g_�g_g_̗g_̘g_̙g_̚g_̛g_̜g_̝̞̠̟g_g_�̡̢g_�g_�̤@d@̨̧̦@b�@̩@az@̫��̷̬̭̲̮̰̯@M�@̱@d@̵̴̳@d@̶@b�@̸̹̻̺̽@l@̼@c�@̾�̿@d{@�@M@��������������@c�@��@l�@������@��@��az��az��az��az������������v�azb�az��azazv���az��azv�b���@b�@����������@d@��@d@������@M�@��@M�@���-����������������@d@��@M�@������@d@��@d@�����@d@�@d@���@�@�d�d�d�d�d�d�d�d�d���	d�
d�d�dd�
�Gd�dd��d�d�d�Nd�@cW@��"�����@l@�@c�@�� �@M�@�!@M�@�#�(�$�&�%@N@�'@d@�)�+�*@H @�,@cW@�.�E�/�:�0�5�1�3�2@j�@�4@c�@�6�8�7@M@�9@d@�;�@�<�>�=@c�@�?@l@�A�C�B@d@�D@m�@�F�Q�G�L�H�J�I@N@�K@N@�M�O�N@N@�P@c�@�R�W�S�U�T@d@�V@L@�X�Z�Y@ak@�[@c�@�]@�^@�_@�`@�a�I�b�
�c�h�d�[�e���f�%�g���h͗�ì�j�u�k�p�l�n�m@i�@�o@d@�q�s�r@cW@�t@c�@�v�{�w�y�x@l@�z@d@�|�~�}@N@�@M�@͇́͌͂̓̈́ͅ@b�@͆@d@͈͉͊@d{@͋@N@͍͎͒͐͏@M@͑@d@͓͕͔@N@͖@M�@͙͚ͯͤ͛͘͟͜͝@g_@͞@l@͢͠͡@xv@ͣ@g4@ͥͪͦͨͧ@N@ͩ@N@ͫͭͬ@n�@ͮ@g_@ͰͻͱͶͲʹͳ@c�@͵@Vp@ͷ͹͸@xv@ͺ@|�@ͼ�ͽͿ;@p�@�@d@������@N@��@N@���������������������@M@��@b�@������@�,@��@N@����������@M@��@cW@������@g4@��@g_@��������������@M�@��@nW@������@d@��@g4@����������@N@��@M@������@aN@�@aN@���������@cW@�@nW@���@cW@�@d@��	���@g4@�@b�@�
��@M�@�
@M�@�������@N@�@ak@���@b�@�@L�@�� ���@N@�@d@�!�#�"@d{@�$@d@�&΄�'�V�(�?�)�4�*�/�+�-�,@b�@�.@c�@�0�2�1@d{@�3@N@�5�:�6�8�7@p�@�9@N@�;�=�<@M@�>@c�@�@�K�A�F�B�D�C@g_@�E@n�@�G�I�H@M@�J@p�@�L�Q�M�O�N@t�@�P@d@�R�T�S@d@�U@d@�W�m�X�b�Y�^�Z�\�[@d@�]@N@�_�a�`@g4@d@�c�h�d�f�e@b�@�g@l@�i�k�j@aN@�l@p�@�n�y�o�t�p�r�q@cW@�s@p�@�u�w�v@cW@�x@b�@�z��{�}�|@cW@�~@|v@΀΂΁@g4@΃@g4@΅δΆΝ·ΒΈ΍Ή΋Ί@g4@Ό@aN@ΎΐΏ@M@Α@b�@ΓΘΔΖΕ@M�@Η@d@ΙΛΚ@M�@Μ@M�@ΞΩΟΤΠ΢Ρ@n�@Σ@N@ΥΧΦ@N@Ψ@d@ΪίΫέά@d@ή@c�@ΰβα@M@γ@g4@ε��ζ�ημθκι@b�@λ@M@νοξ@c�@�@g_@����������@g4@��@N@������@d@��@M@��������������@l@��@d@������@N@��@nW@����������@N@��@aN@������@d@��@n�@��ϡ���B��������������������@L�@��@cW@������@d@��@b�@������@g4@�@L�@���@li@�@h@��
�����@d@�@p�@���@nW@�	@M@�����
@nW@�@cW@���@aN@�@M�@��-��"�����@g4@�@d{@�� �@g4@�!@c�@�#�(�$�&�%@d@�'@d@�)�+�*@d{@�,@p�@�.�7�/�2@�0�1@g4@�3�5�4@cW@�6@xv@�8�=�9�;�:@d@�<@M�@�>�@�?@xv@�A@g4@�C�r�D�[�E�P�F�K�G�I�H@d@�J@xv@�L�N�M@L�@�O@i�@�Q�V�R�T�S@d{@�U@N@�W�Y�X@M�@�Z@b�@�\�g�]�b�^�`�_@M�@�a@L�@�c�e�d@M�@�f@d@�h�m�i�k�j@p�@�l@b�@�n�p�o@g4@�q@d@�sϊ�t��u�z�v�x�w@g4@�y@cW@�{�}�|@N@�~@d@πυρσς@N@τ@M@φψχ@g4@ω@nW@ϋϖόϑύϏώ@c�@ϐ@N@ϒϔϓ@N@ϕ@N@ϗϜϘϚϙ@4P@ϛ@d]@ϝϟϞ@cW@Ϡ@d@Ϣ�ϣ��ϤϻϥϰϦϫϧϩϨ@n�@Ϫ@g_@ϬϮϭ@d@ϯ@d@ϱ϶ϲϴϳ@e�@ϵ@g_@ϷϹϸ@aN@Ϻ@d@ϼ��Ͻ��Ͼ�Ͽ@b�@�@nW@@����@l�@����������@M�@��@N@������@i�@��@M@������������������@cW@��@M@������@M@��@d@����������@g4@��@L�@������@cW@��@M�@��������������@d{@��@N@������@m�@��@d@�����@�@�@d@���@M�@�@cW@��/����
�����@b�@�@d@�	��
@d@�@F�@�����@N@�@M�@���@nW@�@d@��$�����@az@�@N@� �"�!@d@�#@{
@�%�*�&�(�'@L�@�)@xv@�+�-�,@i�@�.@aN@�0�G�1�<�2�7�3�5�4@aN@�6@N@�8�:�9@l�@�;@M�@�=�B�>�@�?@N@�A@cW@�C�E�D@M@�F@xv@�H�P�I�N�J�L�K@M@�M@M@�O@t�@�Q�V�R�T�S@M@�U@�,@�W�Y�X@N@�Z@cW@�\���]��^н�_Ў�`�w�a�l�b�g�c�e�d@L@�f@g4@�h�j�i@L�@�k@M�@�m�r�n�p�o@M�@�q@L�@�s�u�t@b�@�v@M�@�xЃ�y�~�z�|�{@cW@�}@d@�ЁЀ@d@Ђ@M@ЄЉЅЇІ@b�@Ј@d@ЊЌЋ@l@Ѝ@M�@ЏЦАЛБЖВДГ@d{@Е@cW@ЗЙИ@M�@К@c�@МСНПО@N@Р@xv@ТФУ@cW@Х@N@ЧвШЭЩЫЪ@N@Ь@c�@ЮаЯ@d@б@cW@гидже@cW@з@cW@йлк@g4@м@cW@о��п��������������@nW@��@d@������@M�@��@n�@����������@l@��@L�@������@M�@��@M�@��������������@d@��@M�@@����@N@����@����@b�@������@cW@��@M�@����������������@L�@��@M�@������@d@�@d{@�����@d@�@c�@���@M�@�@M@��
�����@�@�@M�@�	��
@Z@�@b�@�����@cW@�@c�@���@N@�@g_@��x��I��2��'��"�� �@cW@�!@M@�#�%�$@d{@�&@d@�(�-�)�+�*@d@�,@nW@�.�0�/@d@�1@ak@�3�>�4�9�5�7�6@nW@�8@M�@�:�<�;@b�@�=@d@�?�D�@�B�A@ak@�C@cW@�E�G�F@d{@�H@l@�J�a�K�V�L�Q�M�O�N@M�@�P@d{@�R�T�S@n�@�U@L�@�W�\�X�Z�Y@nW@�[@m�@�]�_�^@nW@�`@nW@�b�m�c�h�d�f�e@M�@�g@aN@�i�k�j@d@�l@d@�n�s�o�q�p@d{@�r@N@�t�v�u@M�@�w@Л@�yѥ�zё�{ц�|с�}��~@M@р@c�@тфу@l@х@�@чьшъщ@p�@ы@d@эяю@nW@ѐ@q~@ђњѓѕє@N@іјї@N@љ@b�@ћѠќўѝ@l@џ@M�@ѡѣѢ@M�@Ѥ@d@ѦѽѧѲѨѭѩѫѪ@b�@Ѭ@b�@ѮѰѯ@c�@ѱ@d@ѳѸѴѶѵ@m�@ѷ@d@ѹѻѺ@cW@Ѽ@cW@Ѿ��ѿ������@c�@��@d@������@d{@��@d@����������@n�@��@M�@������@d@��@g4@��Ҷ���3�����������������������c������������������Vp����������������������8������y����������c��������������������������������������������y�������������������������������������	��
��������
����������Vp��������������������������������������8����*� �%�!�#�"������$��y���&�(�'������)������+�.���,�-������/�1�0������2������4�}�5�f�6�[�7�<�8�:�9@d@�;@d@�=�Y�>@�?@�@�V�A�S�B�R�C�K�Dg_�E�H�F�Gg_p�����I�J�M6M����Lg_�M�Og_�Ng_���P�Qp���M���g_���T�U��p�M6M��Wg_�Xg_��g_�Z@c�@�\�a�]�_�^@cW@�`@M@�b�d�c@b�@�e@{
@�g�r�h�m�i�k�j@b�@�l@L�@�n�p�o@M@�q@c�@�s�x�t�v�u@N@�w@d@�y�{�z@N@�|@N@�~ғ�҈Ҁ҅ҁ҃҂@c�@҄@d@҆@҇@c�@҉ҎҊҌҋ@b�@ҍ@d@ҏґҐ@d@Ғ@b�@ҔҭҕҘҖ@җ@b�@ҙқҚ@M�@Ҝ@ҝ@ҞNҟNҠNҡNҢNңNNҤҥNҦNҧNҨNҩNҪNҫNNҬNx�ҮҳүұҰ@M@Ҳ@d{@@Ҵҵ@d@ҷ�Ҹ��ҹ��Һ��һ�ҼҾҽ@c�@ҿ@g4@�����@d@��@d@����������@c�@��@nW@������@c�@��@cW@��������������@b�@��@M�@������@M�@��@M@����������@d{@��@g4@������@d{@��@b�@�����������������@c�@��@l@������@M�@��@M@�����@M�@�@d@���@d@�@d@�������@g�@�@d@��	�@L�@�
@b�@���
��@d@�@nW@�@�@c�@��D��-��"�����@b�@�@b�@�� �@M@�!@M�@�#�(�$�&�%@`�@�'@N@�)�+�*@d@�,@b�@�.�9�/�4�0�2�1@N@�3@d@�5�7�6@aN@�8@cW@�:�?�;�=�<@xv@�>@b�@�@�B�A@M�@�C@M�@�E�Q�F�H�G@c�@�I�L�J@�K@m�@�M�O�N@l@�P@cW@�R�]�S�X�T�V�U@d@�W@d@�Y�[�Z@nW@�\@nW@�^�c�_�a�`@nW@�b@�H@�d�f�e@N@�g@N@�i��j��k�@�l���mӜ�nӅ�o�z�p�u�q�s�r@aN@�t@l�@�v�x�w@c�@�y@g4@�{Ӏ�|�~�}@d@�@d@ӁӃӂ@b�@ӄ@az@ӆӑӇӌӈӊӉ@L@Ӌ@|�@Ӎӏӎ@d@Ӑ@d@ӒӗӓӕӔ@l@Ӗ@i�@ӘӚә@d@ӛ@d@ӝӴӞөӟӤӠӢӡ@d@ӣ@l@ӥӧӦ@g4@Ө@g4@ӪӯӫӭӬ@g4@Ӯ@g4@ӰӲӱ@g4@ӳ@g4@ӵ�ӶӻӷӹӸ@d@Ӻ@d@ӼӾӽ@d@ӿ@b�@���������@l@��@N@@����@�I@��������������������@d@��@g_@������@d@��@d{@����������@L�@��@g_@������@d@��@��@��aN��aN��aN��aN��aNaN��aN��������aNaN��aN����aN��aNaN��aN��a1aN��aN��aN�aN�aN�aN�aNaN�a1aN�������@L�@�@M�@���@xv@�@cW@����
�	@l@�@d@�
��@d{@�@c�@��)�������@L�@�@M�@���@d@�@az@��$� �"�!@L�@�#@M@�%�'�&@b�@�(@cW@�*�5�+�0�,�.�-@d{@�/@p�@�1�3�2@M�@�4@d{@�6�;�7�9�8@d{@�:@�,@�<�>�=@d{@�?@i�@�AԞ�B�o�C�X�D�M�E�J�F�H�G@b�@�I@M�@@�K�L@cW@�N�S�O�Q�P@d@�R@d@�T�V�U@`�@�W@g4@�Y�d�Z�_�[�]�\@cW@�^@cW@�`�b�a@xv@�c@c�@�e�j�f�h�g@az@�i@#@�k�m�l@cW@�n@M@�pԇ�q�|�r�w�s�u�t@xv@�v@b�@�x�z�y@b�@�{@d@�}Ԃ�~Ԁ�@d@ԁ@aN@ԃԅԄ@m�@Ԇ@b�@ԈԓԉԎԊԌԋ@g4@ԍ@M�@ԏԑԐ@c�@Ԓ@aN@ԔԙԕԗԖ@c�@Ԙ@l@ԚԜԛ@d@ԝ@d@ԟ��ԠԷԡԬԢԧԣԥԤ@li@Ԧ@li@ԨԪԩ@d@ԫ@L@ԭԲԮ԰ԯ@cW@Ա@N@ԳԵԴ@M@Զ@cW@Ը��ԹԾԺԼԻ@cW@Խ@cW@Կ��@cW@��@cW@����������@cW@��@`�@������@`�@��@c�@������������������@aN@��@M�@������@d@��@L�@����������@d@��@d@������@p�@��@c�@��������������@i�@��@g4@������@ku@��@L�@�������@d@�@d@���@d@�@d@��R����������
�����@d@�@d@�	��
@M@�@az@�����@d@�@d{@���@M@�@A@��$�����@d@�@M@� �"�!@d{@�#@M�@�%�*�&�(�'@M�@�)@d@�+���,@�-@L��.L��/L��0L��1�2և�3��4զ�5Ս�6�x�7�W�8�E�9�?�:L��;�=�<L�L��L��>L�c^�@L��A�C�BL�L�ߜL��DL�o��F�L�GL��H�J�IL�n�L�L��KL�n��M�T�N�Q�O�P���+L��R�S�L�L��UL��VL�L��Y�X�o�Y�d�Z�a�[�^�\�]�xL��P�_�`i���:>��bL��cL����e�l�f�i�g�hL��Nj��V�j�kj���>�e�mL��nL��uL��pL��qL��r�u�s�t�
t����w�v�w���j��L��yL��zL��{Ճ�|L��}Հ�~�L��t��L�ՁՂ�&L�t�L�ՄՊՅՈՆՇxl�^ٰՉL���ՋL�ՌL��L�ՎL�ՏՕL�ՐL�ՑL�ՒՓL�ՔL�L��Ֆ՝՗L�՘L�ՙ՛L�՚�0L�L�՜�L�՞բL�՟ՠL�աL��L�գL�դL�L�եL���է�ը��թ��ժյL�իլղխհծկL����d!L�ձn�L�ճL�մL���L�ն�շվոջչպ����/ռս�?n��O�_տL��L��o����������������o����oϏ�����L���L�������������������������ϟ�����L��/�?��L���L��O�_�������������o�������o"oBoR���L���L�o2L���L�������������n��L���������������L���L���/��L���L�L�����L���L��L�L��?��L����L��������L���I������Oj��^�L��L��z.L�������	�
�����~���
�m�|����L��L��L��L��L��L�������o�o�o����L�obo�oq�L��L�L�o�� �e�!�H�"�A�#�/�$�)�%L�L��&�'L��(L�L���*L��+L��,L��-�.���L����0�5L��1L��2�3L��4L���L��6�=�7�:L��8L��9L����;L��<L�����>L�L��?L��@�L��BL��CL��DL��EL�L��F�GL��!L��I�W�JL��KL��LL��M�T�N�Q�O�PL��0�?�N�R�S�]�l�{�m�UL��VL�L���XL��YL�L��Z�[�b�\�_�]�^L�����`�aL���L����cL��dL���L��fL��g�uL��hL��iL��j�k�r�l�o�m�n�L�L���p�q��&�5�D�sL��tL��S�b�vL��wL��xւ�y��z�|�{L��qL��}�~L���L�րL�ցL��L�փL�քL�օֆL���L�ֈL�։L�֊֞֋֕L�֌֍L�L�֎֏L�֐֑֒L���L�֓֔L�����L�֖L�֗L�֘L�֙L�֛֚֜L��L�L�֝�L�ֵ֟L�֠L�֢֣֪֤֧֥֦֭֡�o�B �֨֩�o�A��$֫L�֬L��3L�֮L�ְֱֲ֯L��[Zvo�ֳִp�B�Q�`ֶL�ַL�L�ָֹֺּֿL�ֻ�o�~ֽ־������L��L��L�g�L���@N@������������������@l�@��@d@������@c�@��@c�@����������@M�@��@d@������@g4@��@b�@��������������@|�@��@L�@������@d{@��@d@����������@l@��@d@������@d@��@cW@���#���������@g�@�@g�@���@��@�@g�@�����@g�@�@��@��
�	@g�@�@A�@�
������@A�@�@xv@���@xv@�@xv@�����@xv@�@xv@��!� @xv@�"@L@�$�;�%�0�&�+�'�)�(@cW@�*@b�@�,�.�-@c�@�/@c�@�1�6�2�4�3@c�@�5@g4@�7�9�8@nW@�:@d@�<�G�=�B�>�@�?@d@�A@d@�C�E�D@d@�F@A@�H�M�I�K�J@|@�L@d{@�N�P�O@d{@�Q@��@�Sײ�T׃�U�l�V�a�W�\�X�Z�Y@b�@�[@g_@�]�_�^@d@�`@l@�b�g�c�e�d@az@�f@d@�h�j�i@b�@�k@g4@�m�x�n�s�o�q�p@d{@�r@d@�t�v�u@L�@�w@b�@�y�~�z�|�{@N@�}@ak@�ׁ׀@az@ׂ@az@ׄכׅא׆׋ׇ׉׈@d@׊@t�@׌׎׍@aN@׏@{
@בזגהד@d@ו@d@חיט@c�@ך@b�@לקםעמנן@c�@ס@M@ףץפ@L@צ@d@ר׭ש׫ת@c�@׬@nW@׮װׯ@d@ױ@N@׳��״��׵�׶׻׷׹׸@d@׺@d@׼׾׽@az@׿@az@���������@gQ@��@c�@������@d@��@d@��������������@d@��@d@������@d@��@d@����������@d@��@d@������@d@��@d@�����������������@d@��@d@������@d@��@d@���������@d@��@d@���@c�@�@|�@�������@n�@�@c�@���@N@�@aN@����
�	@M@�@cW@�
��@b�@�@d@�ٗ�����q��B��-��"�����@H @�@L�@�� �@d@�!@d@�#�(�$�&�%@cW@�'@nW@�)�+�*@d@�,@c�@�.�9�/�4�0�2�1@M�@�3@c�@�5�7�6@A@�8@nW@�:�?�;�=�<@d{@�>@c�@�@@�A@L�@�C�Z�D�O�E�J�F�H�G@L@�I@ak@�K�M�L@d@�N@cW@�P�U�Q�S�R@b�@�T@M�@�V�X�W@g4@�Y@M�@�[�f�\�a�]�_�^@nW@�`@az@�b�d�c@N@�e@d{@�g�l�h�j�i@nW@�k@N@�m�o�n@b�@�p@b�@�rء�s؊�t��u�z�v�x�w@N@�y@d@�{�}�|@|�@�~@d@؀؅؁؃؂@c�@؄@M@؆؈؇@g4@؉@d@؋ؖ،ؑ؍؏؎@xv@ؐ@d@ؒؔؓ@N@ؕ@N@ؗ؜ؘؙؚ@N@؛@d{@؝؟؞@L�@ؠ@c�@آعأخؤةإائ@az@ب@az@تجث@d@ح@b�@دشذزر@n�@س@b�@صطض@d@ظ@N@غ��ػ�ؼؾؽ@g4@ؿ@d@�����@d{@��@d@����������@j�@��@j�@������@j�@��@M@���0���������������������@d{@��@d@������@M�@��@|@����������@d@��@d@������@l@��@aN@�������������@c�@��@b�@������@d@�@M�@�����@d@�@M�@���@��@�@d@������	���@c�@�@t�@�
��@{
@�
@g4@�����@d@�@L�@���@az@�@d@��%�� ���@c�@�@c�@�!�#�"@`�@�$@d@�&�+�'�)�(@d@�*@xv@�,�.�-@d@�/@L�@�1�h�2�I�3�>�4�9�5�7�6@az@�8@M@�:�<�;@M@�=@M@�?�D�@�B�A@M@�C@c�@�E�G�F@iM@�H@M�@�J�]�K�P�L�N�M@p�@�O@c�@�Q�S�R@L@�T@�U@�Vd�Wd�Xd�Yd�Zd�[d�\d�-�Z�^�c�_�a�`@d@�b@b�@�d�f�e@iM@�g@�X@�iـ�j�u�k�p�l�n�m@xv@�o@M�@�q�s�r@l@�t@g_@�v�{�w�y�x@g_@�z@xv@�|�~�}@b�@�@nW@فٌقهكمل@d@ن@c�@ويى@d@ً@N@ٍَُِْ@L�@ّ@`�@ٕٓٔ@t�@ٖ@g4@٘@ٙ�ٚ��ٛٲٜ٧ٝ٢ٞ٠ٟ@d{@١@L�@٣٥٤@b�@٦@L�@٨٭٩٫٪@d@٬@l@ٮٰٯ@M�@ٱ@d@ٳټٴٹٵٷٶ@L�@ٸ@M@@ٺٻ@xv@ٽ��پ�ٿ@`�@�@N@������@b�@��@N@������������������@d@��@d@������@b�@��@cW@����������@d{@��@L�@������@L�@��@N@��������������@N@��@g4@������@b�@��@N@����������@g_@��@g_@������@g_@�@g_@�@�@�������@d@�@c�@���@nW@�@L�@�@���@M@�	@xv@��
����
�f�ڲ��Y��-��������=���ڥ�����=����Z���"�� �����!�cW��#�(�$�&�%�x��'�aN��)�+�*�ն��,�v���.�E�/�:�0�5�1�3�2�cv��4�cW��6�8�7����9�Oq��;�@�<�>�=�����?��Z��A�C�B�����D����F�Q�G�L�H�J�I�M6��K�Oq��M�O�N�����P����R�T�S�����U�W�V�#��X�=��Zڃ�[�o�\�d�]�b�^�`�_�Oq��a�=��c����e�j�f�h�g�cW��i�`���k�m�l��Z��n��Z��p�x�q�v�r�t�s�=��u��3��w��Z��y�~�z�|�{��Z��}�cv��ځڀ�#�ڂ�cW�ڄڛڅڐچڋڇډڈ�=�ڊ���ڌڎڍ�=�ڏ�=�ڑږڒڔړ�=�ڕ�cW�ڗڙژ���ښ�=�ڜڧڝڢڞڠڟ�#�ڡ�=�ڣڥڤ�v��ڦ�cW�ڨڭکګڪ�x�ڬ�#�ڮڰگ�x�ڱ�=�ڳ�ڴ��ڵ��ڶھڷڼڸںڹ�ڥ�ڻ��$�ڽ�x�ڿ���#��������=����cW����������������cv��������������cW������������������=����Oq��������v��������������������������Z��������������L����w��������������������������u)����ն����������Z����Z�����cv���=��������Z���=���
�	�cv���=��
�9��"���������Z����!�����ڥ���x��� ����=���u)��!����#�.�$�)�%�'�&����(��Z��*�,�+�v���-�=��/�4�0�2�1�x��3�\���5�7�6����8����:�Q�;�F�<�A�=�?�>�����@�cv��B�D�C�x��E�=��G�L�H�J�I�ն��K����M�O�N�=��P��Z��R�[�S�V��T�U�x��W�Y�X�cv��Z����\�a�]�_�^�cW��`�#��b�d�c��Z��e�ڥ��g��h۬�i�}�j�x�k�v�l�q�m�o�n@N@�p@c�@�r�t�s@c�@�u@t�@�w@b�@�y�{�z@xv@�|@�@�~ە�ۊۀۅہۃۂ@i�@ۄ@aN@ۆۈۇ@l@ۉ@M�@ۋېیێۍ@N@ۏ@L�@ۑۓے@b�@۔@i�@ۖۡۗۜۘۚۙ@xv@ۛ@b�@۝۟۞@M�@۠@cW@ۣۢۧۥۤ@M@ۦ@d@۪ۨ۩@L�@۫@aN@ۭ��ۮ��ۯۺ۰۵۱۳۲@g4@۴@g4@۶۸۷@g4@۹@L�@ۻ۾@ۼ۽@M�@ۿ��@L�@��@d@��������������@d@��@c�@������@b�@��@d]@����������@M�@��@M@������@d@��@n�@��������������@nW@������@m�@��@N@����������@n�@��@b�@������@N@��@M@������������@�I@�@t�@�@d@�����@d@�@d@���@aN@�@c�@��c��4������
�	��
@cW@�@b�@���@L�@�@M@�����@aN@�@xv@���@c�@�@b�@��)��$� �"�!@d@�#@d{@�%�'�&@n�@�(@M�@�*�/�+�-�,@N@�.@d{@�0�2�1@c�@�3@g4@�5�L�6�A�7�<�8�:�9@�,@�;@b�@�=�?�>@L�@�@@xv@�B�G�C�E�D@e�@�F@L�@�H�J�I@b�@�K@M�@�M�X�N�S�O�Q�P@M@�R@d@�T�V�U@cW@�W@cW@�Y�^�Z�\�[@d{@�]@b�@�_�a�`@d{@�b@L@�dܑ�e�z�f�q�g�l�h�j�i@c�@�k@M�@�m�o�n@az@�p@c�@�r�w�s�u�t@M�@�v@d{@�x@�y@M�@�{܆�|܁�}��~@d{@܀@c�@܂܄܃@M@܅@p�@܇܌܈܊܉@d@܋@N@܍܏܎@d{@ܐ@M�@ܒܱܓܞܔܙܕܗܖ@cW@ܘ@xv@ܚܜܛ@m�@ܝ@M@ܟܤܠܢܡ@b�@ܣ@d@ܥܧܦ@M�@ܨ@ܩ@ܪdܫdܬdܭdܮddܯdܰb�dܸܴܲܽܳܶܵ@d@ܷ@b�@ܹܻܺ@g4@ܼ@ty@ܾ��ܿ��@b�@��@M�@������@g4@��@b�@�������0��������������@d@��������@����@L�@������@b�@��@d@����������@cW@��@g4@������@l@��@c�@������@b�@��@d@�������������������@b�@��@b�@�����@M�@�@M�@�����@M�@�@b�@���@d@�@n�@����	���@xv@�@ak@�
��@ku@�
@b�@�����@N@�@b�@���@d@�@g4@��.��#��!���@p�@� @d@�"@M@�$�)�%�'�&@nW@�(@g4@�*�,�+@M�@�-@M�@�/@d@�1ݘ�2�a�3�J�4�?�5�:�6�8�7@nW@�9@ak@�;�=�<@g4@�>@cW@�@�E�A�C�B@M@�D@d@�F�H�G@d{@�I@g4@�K�V�L�Q�M�O�N@M@�P@d{@�R�T�S@d{@�U@M@�W�\�X�Z�Y@M@�[@p�@�]�_�^@M@�`@M�@�b݊�c�n�d�i�e�g�f@d@�h@M�@�j�l�k@nW@�m@�@�o�t�p�r�q@d@�s@c�@�u݈�v�wc�@�x@�y@�z@�{@�|@�}@�~@�@݀@݁@݂@݃@݄@݅@݆@݇@�@݉@c�@݋ݍ݌@M@ݎݓݏݑݐ@cW@ݒ@b�@ݔݖݕ@xv@ݗ@L�@ݙݼݚݮݛݦݜݡݝݟݞ@cW@ݠ@b�@ݢݤݣ@d{@ݥ@d@ݧݩݨ@xv@ݪݬݫ@N@ݭ@c�@ݯݱݰ@xv@ݲݷݳݵݴ@d@ݶ@d@ݸݺݹ@|v@ݻ@M�@ݽ��ݾ��ݿ������@d@��@M�@������@M�@��@ak@����������@b�@��@b�@������@d{@��@cW@��������������@ak@��@d{@������@M�@��@M�@����������@d{@��@M@������@b�@��@M�@���N����������@d@��@nW@���"����������@L�@�@n�@���@b�@�@g4@�����@L�@�@c�@��	�@c�@�
@M�@���
����@aN@�@aN@���@g4@�@L@�����@M�@�@N@�� �@ak@�!@M�@�#�7�$�/�%�*�&�(�'@xv@�)@n�@�+�-�,@d@�.@aN@�0�2�1@M@�3�5�4@l@�6@cW@�8�C�9�>�:�<�;@cW@�=@�,@�?�A�@@c�@�B@l@�D�I�E�G�F@b�@�H@n�@�J�L�K@c�@�M@M�@�Oޫ�P�|�Q�e�R�]�S�X�T�V�U���-���W��x"���Y�[�Z�������\���5���^�c�_�a�`���4���b�������d���P���f�q�g�l�h�j�i������k��O����m�o�n�������p���4���r�w�s�u�t��)����v��O����x�z�y��x"���{���-���}ޔ�~މ�ބހނށ��L���ރ�����ޅއކ���-��ވ������ފޏދލތ��g4��ގ����ސޒޑ���-��ޓ���-��ޕޠޖޛޗޙޘ�����ޚ��x"��ޜޞޝ��d��ޟ��d{��ޡަޢޤޣ����ޥ������ާީި����ު��e���ެ��ޭ��ޮ޹ޯ޴ް޲ޱ��)���޳����޵޷޶��L���޸��x"��޺޿޻޽޼��g4��޾������������������#�������������������������)��������������������������������cW���������������������������������������������������������������-����������������������������-����������n�������������������2������<��������<�����O���������������������������	��L�����G���
����j��;��$�������@M@�@d@�@g_@�����@g_@�@L�@� �"�!@cW@�#@d@�%�0�&�+�'�)�(@c�@�*@|�@�,�.�-@xv@�/@l@�1�6�2�4�3@M�@�5@g_@�7�9�8@g_@�:@g_@�<�S�=�H�>�C�?�A�@@b�@�B@c�@�D�F�E@d@�G@L�@�I�N�J�L�K@p�@�M@d@�O�Q�P@L�@�R@M@�T�_�U�Z�V�X�W@b�@�Y@g4@�[�]�\@b�@�^@M�@�`�e�a�c�b@N@�d@xv@�f�h�g@M�@�i@l@�kߚ�l߃�m�x�n�s�o�q�p@M�@�r@M@�t�v�u@M�@�w@c�@�y�~�z�|�{@M�@�}@M�@�߁߀@M�@߂@M�@߄ߏ߅ߊ߆߈߇@N@߉@b�@ߋߍߌ@Л@ߎ@b�@ߐߕߑߓߒ@d@ߔ@aN@ߖߘߗ@d@ߙ@d@ߛ߯ߜߤߝߢߞߠߟ@l@ߡ@cW@ߣ@t�@ߥߪߦߨߧ@b�@ߩ@d@߫߭߬@M�@߮@~@߰߻߱߶߲ߴ߳@n�@ߵ@M@߷߹߸@d@ߺ@d@߼�߽߿߾@d@�@M�@������@M�@��@M�@�������������������g_����@M�@������@d{@��@d@����������@M�@��@��@������@N@��@M�@��������������@M�@��@d@������@d@��@d@��@g4@����������������@M@��@d@���@cW@�@d@�����@d@�@M@���@aN@�@L@������	�@t�@�
@nW@���
@d@�@d@�����@b�@�@g4@���@d@�@nW@��R��D��9��$� �"�!@d@�#@cW@�%�'�&@d@�(@�)@�*M��+M��,M��-M�M��.�/M��0M�M��1�2M��3M��4M��5M��6M�M��7M��8rM��:�?�;�=�<@d@�>@d@�@�B�A@T\@�C@d@�E�P�F�K�G�I�H@M�@�J@y�@�L�N�M@L�@�O@d{@�Q@p�@�S�j�T�_�U�Z�V�X�W@d@�Y@xv@�[�]�\@c�@�^@d@�`�e�a�c�b@M�@�d@b�@�f�h�g@n�@�i@M�@�k�v�l�q�m�o�n@d@�p@nW@�r�t�s@c�@�u@d@�w�|�x�z�y@b�@�{@b�@�}��~@b�@�@cW@���@N@��������������@b�@�@b�@���@`�@�@t�@�����@b�@�@M�@���@c�@�@d]@�������@g4@�@M@���@b�@�@M�@�����@d@�@d@���@c�@�@n�@������@M@�������@�@�M�M�M�M��M��M��MM����M��M��M��M��MM����MM����@nW@��@M@��������������@d@��@xv@������@M�@��@d@����������@g4@��@M�@������@b�@��@b�@�������������������@b�@��@d@������@c�@�@c�@�����@c�@�@q~@���@M�@�@N@��
�����@g4@�@M�@�	��
@d@�@M@�����@p�@�@g4@���@M�@�@p�@��0��%�� ���@b�@�@xv@�!�#�"@d@�$@d{@�&�+�'�)�(@cW@�*@j�@�,�.�-@d@�/@b�@�1�<�2�7�3�5�4@M�@�6@L�@�8�:�9@p�@�;@b�@�=�B�>�@�?@M�@�A@d@�C�E�D@d{@�F@ak@�H@nW@�J@�K�G�L�B�M���N��O��P��Q�h�R�]�S�X�T�V�U@b�@�W@n�@�Y�[�Z@L�@�\@b�@�^�c�_�a�`@c�@�b@n�@�d�f�e@d@�g@c�@�i�t�j�o�k�m�l@nW@�n@L�@�p�r�q@M�@�s@M�@�u�z�v�x�w@d{@�y@b�@�{�}�|@xv@�~@d{@���������@`�@�@�@�c��c��c�c��c���c��c�c���c��c��c��c��c�c���c�c�<����@d@�@M@�����@d@�@d@���@M@�@b�@�������@M�@�@d@���@cW@�@nW@�����@d{@�@g4@���@g4@�@d@�������������������@nW@��@b�@������@d@��@N@����������@g4@��@b�@������@b�@��@g_@����������@d@������@N@��@cW@����������@b�@��@M@��@n�@�����������������@p�@��@d@��@��@N@����@ak@���@n�@�@b�@�������@d@�@d{@�@�@M@����	�@L�@�
@l@���
@cW@�@M�@��l��=��(����@��@d@���@b�@�@d{@��#��!� @b�@�"@|�@�$�&�%@c�@�'@g4@�)�2�*�-@�+�,@rf@�.�0�/@=�@�1@g4@�3�8�4�6�5@c�@�7@M�@�9�;�:@d@�<@c�@�>�U�?�J�@�E�A�C�B@|@�D@|�@�F�H�G@d@�I@d@�K�P�L�N�M@N@�O@ak@�Q�S�R@c�@�T@b�@�V�a�W�\�X�Z�Y@L�@�[@t�@�]�_�^@p�@�`@xv@�b�g�c�e�d@l@�f@aN@�h�j�i@d@�k@L�@�m��n��o�z�p�u�q�s�r@g4@�t@d@�v�x�w@L�@�y@d{@�{��|�~�}@xv@�@xv@���@m�@�@b�@�������@`�@�@p�@���@d@�@N@�����@d@�@N@���@d@�@ak@���������@cW@�@b�@���@ak@�@L@�����@xv@�@M�@���@p�@�@c�@�������@nW@�@M�@���@c�@�@c�@���������@d{@��@n�@������@g4@��@M�@������)���������������������@L�@��@g4@������@g4@��@ak@����������@{
@��@M�@��@L�@��������������@cW@��@d{@������@M�@��@j�@���������@cW@��@b�@���@cW@�@d@���������@g4@�@b�@���@g4@�@j�@��
�	��
@c�@�@n�@���@d@�@M�@�������@g4@�@�I@���@Л@�@@&@��$� �"�!@M@�#@d@�%�'�&@M@�(@d@�*�Y�+�B�,�7�-�2�.�0�/@d{@�1@M@�3�5�4@n�@�6@nW@�8�=�9�;�:@d@�<@L@�>�@�?@M@�A@L�@�C�N�D�I�E�G�F@g4@�H@L�@�J�L�K@n�@�M@M�@�O�T�P�R�Q@c�@�S@xv@�U�W�V@M�@�X@d@�Z�q�[�f�\�a�]�_�^@M�@�`@d{@�b�d�c@M�@�e@M�@�g�l�h�j�i@d@�k@d@�m�o�n@b�@�p@N@�r�}�s�x�t�v�u@M�@�w@N@�y�{�z@cW@�|@d@�~����@{
@�@d@���@xv@�@M�@��������������@n�@�@M�@���@d@�@M�@�����@d@�@N@���@g4@�@M�@�������@nW@�@n�@���@g4@�@d@�����@g4@�@d@���@d@�@b�@�����������@N@�@b�@������@`�@��@c�@����������@cW@��@p�@������@p�@��@p�@��������������@d@��@d{@������@n�@��@N@����������@d{@��@c�@������@d@��@aN@�������������������@d{@��@M�@������@d@�@g4@�����@N@�@d@���@g4@�@L�@��
�����@d{@�@aN@�	��
@c�@�@M�@�����@b�@�@nW@�@�@N@��+��#�����@g4@�@N@��!� @M@�"@aN@�$�)�%�'�&@nW@�(@l�@�*@g4@�,�7�-�2�.�0�/@L�@�1@g_@�3�5�4@`�@�6@ak@�8�=�9�;�:@`�@�<@c�@�>�@�?@b�@�A@ak@�C��D��E��F�l�G�^�H�S�I�N�J�L�K@N@�M@b�@�O�Q�P@`�@�R@M�@�T�Y�U�W�V@c�@�X@d@�Z�\�[@g4@�]@M@�_�j�`�e�a�c�b@g4@�d@n�@�f�h�g@M�@�i@d@�k@n�@�m��n�y�o�t�p�r�q@d@�s@M�@�u�w�v@M�@�x@b�@�z��{�}�|@M@�~@M�@���@nW@�@p�@�������@M�@�@N@���@n�@�@d{@�����@d{@�@N@���@g4@�@n�@������������@L�@�@M�@���@cW@�@M@�����@n�@�@xv@���@c�@�@c�@�������@xv@�@d{@���@d{@�@d@���������@d@��@N@������@M�@��@d@������������������@N@��@d@������@b�@��@c�@����������@b�@��@d@������@nW@��@n�@��������������@aN@��@nW@��@xv@����������@N@��@xv@�����@d@�@nW@��B�����@N@�������@d@�@M�@���@m�@�@g4@�	��
��@M�@�
@d{@���@M�@�@d@��+�� �����@cW@�@M@���@M�@�@M�@�!�&�"�$�#@M�@�%@M�@�'�)�(@M�@�*@A@�,�7�-�2�.�0�/@g4@�1@N@�3�5�4@M�@�6@xv@�8�=�9�;�:@~@�<@nW@�>�@�?@b�@�A@aN@�C�r�D�[�E�P�F�K�G�I�H@l@�J@l@�L�N�M@g4@�O@cW@�Q�V�R�T�S@d@�U@xv@�W�Y�X@nW@�Z@`�@�\�g�]�b�^�`�_@l@�a@M�@�c�e�d@L�@�f@c�@�h�m�i�k�j@d@�l@aN@�n�p�o@N@�q@M�@�s��t��u�z�v�x�w@xv@�y@c�@�{�}�|@b�@�~@c�@�����@b�@�@d@���@n�@�@d{@�������@g4@�@L�@���@L�@�@Ae@�����@L@�@d{@���@az@�@g4@����2�������������@g4@�@g4@���@�@�L��L��L��L��L��L��L��L��L��L��L��L��L��L��L��:L��@g4@����������@g4@��@cW@������@l�@��@N@��������������@xv@��@b�@������@��@��M���M���M���M���M�M���M�����M���M�M�����M���M���M�M���M���M�h��@N@����������@M@��@c�@������@j�@��@b�@����������@az@�@M@���@cW@�@g4@�����@M�@�@`�@��	�@M�@�
@d@��'�
�"�� �@�@�M��M��M��M��M�M���M��M��M��M�M���M��M�M���M�M�r�!@aN@�#�%�$@b�@�&@M�@�(�-�)�+�*@j�@�,@d@�.�0�/@b�@�1@c�@�3�b�4�K�5�@�6�;�7�9�8@M�@�:@aN@�<�>�=@d@�?@M�@�A�F�B�D�C@g_@�E@g4@�G�I�H@L�@�J@M�@�L�W�M�R�N�P�O@b�@�Q@c�@�S�U�T@g_@�V@N@�X�]�Y�[�Z@M�@�\@M@�^�`�_@M@�a@b�@�c�q�d�f�e@N@�g�l�h�j�i@M�@�k@j�@�m�o�n@L�@�p@M�@�r�}�s�x�t�v�u@c�@�w@g4@�y�{�z@M�@�|@M@�~����@d@�@d@���@d{@�@n�@��������������@p�@�@b�@���@d@�@c�@�����@xv@�@b�@���@d@�@M�@�������@n�@�@p�@���@iM@�@az@�����@n�@�@aN@���@M@�@cW@�����������@j�@�@n�@������@t�@��@d@����������@c�@��@d@������@c�@��@d@��������������@b�@��@nW@������@aN@��@nW@����������@M�@��@`�@������@az@��@d@�������������������@M�@��@p�@������@c�@�@d@�����@M@�@M�@���@M�@�@N@��
�����@d@�@M�@�	��
@aN@�@d@�����@p�@�@l@���@t�@�@N@��0��%�� ���@d{@�@۱@�!�#�"@b�@�$@M�@�&�+�'�)�(@d@�*@c�@�,�.�-@xv@�/@M@�1�<�2�7�3�5�4@M�@�6@n�@�8�:�9@n�@�;@nW@�=�B�>�@�?@g4@�A@b�@�C�E�D@M�@�F@d@�H�Q�I���J��K��L�{�M�d�N�Y�O�T�P�R�Q@H @�S@c�@�U�W�V@c�@�X@L�@�Z�_�[�]�\@c�@�^@nW@�`�b�a@d@�c@N@�e�p�f�k�g�i�h@g4@�j@b�@�l�n�m@N@�o@g_@�q�v�r�t�s@c�@�u@M�@�w�y�x@d@�z@L@�|��}��~����@`�@�@L�@���@N@�@N@�����@d@�@N@���@L�@�@L�@�������@N@�@N@���@L�@�@M@�����@c�@�@d@���@d@�@M�@�������������@d@�@d@���@L�@�@L�@�����@c�@�@aN@���@L@��@��@��M���M���M���M���M���M���M���M���M���M���M���M���M���������>�M�>�M���M�>�M���������������@d@��@aN@������@N@��@nW@����������@nW@��@nW@������@xv@��@b�@���������������@g4@��@M�@���@g4@�@4�@�����@d@�@b�@���@|v@�@d@������
�	@d@�@b�@�
��@M�@�@d@�����@N@�@n�@���@li@�@N@��|��M��6� �+�!�&�"�$�#@p�@�%@cW@�'�)�(@M6@�*@b�@�,�1�-�/�.@M�@�0@L�@�2�4�3@|@�5@L�@�7�B�8�=�9�;�:@g4@�<@d@�>�@�?@d@�A@ak@�C�H�D�F�E@n�@�G@c�@�I�K�J@M�@�L@c�@�N�e�O�Z�P�U�Q�S�R@b�@�T@L�@�V�X�W@ak@�Y@ak@�[�`�\�^�]@�Z@�_@b�@�a�c�b@M@�d@d@�f�q�g�l�h�j�i@d@�k@d@�m�o�n@M�@�p@`�@�r�w�s�u�t@p�@�v@d{@�x�z�y@d@�{@d@�}��~��������@m�@�@cW@�@c�@�����@c�@�@t�@���@L�@�@d@�������@c�@�@d@���@cW@�@b�@���@b�@���@b�@�@az@�������@L�@���@b�@�@g4@�����@xv@�@l@���@`�@�@d@���������@nW@�@d{@������@c�@��@nW@����������@ak@��@nW@������@M�@��@c�@������3���������������������@nW@��@M�@������@nW@��@d@����������@d@��@ak@������@M�@��@d@�������������@p�@��@l@���@aN@�@L�@�����@d@�@d@���@g4@�@L@��������
�	@M@�@l@�
��@b�@�@M@�����@L�@�@d@���@g_@�@cW@��(��#��!� @b�@�"@aN@�$�&�%@aN@�'@c�@�)�.�*�,�+@N@�-@L�@�/�1�0@aN@�2@d@�4�c�5�L�6�A�7�<�8�:�9@L�@�;@M�@�=�?�>@m�@�@@n�@�B�G�C�E�D@nW@�F@c�@�H�J�I@M�@�K@aN@�M�X�N�S�O�Q�P@aN@�R@g4@�T�V�U@g4@�W@|�@�Y�^�Z�\�[@b�@�]@M�@�_�a�`@M�@�b@l@�d�{�e�p�f�k�g�i�h@d{@�j@b�@�l�n�m@c�@�o@d@�q�v�r�t�s@M�@�u@d@�w�y�x@c�@�z@d@�|��}��~��@aN@�@d@���@m�@�@g4@�����@p�@�@g4@���@M�@�@n�@���������������@aN@�@g4@���@M�@�@N@�����@xv@�@d{@���@L�@�@d@�������@b�@�@M�@���@c�@�@cW@�����@d@�@M@���@L�@��@L�@������������������@c�@��@M@������@M�@��@xv@����������@g4@��@cW@������@M�@��@j�@��������������@N@��@M�@������@c�@��@M�@����������@aN@��@d@������@b�@��@xv@���"����������@d@�@d@���@b�@�@b�@�����@n�@�@M�@��	�@c�@�
@d@���
����@c�@�@d@���@c�@�@d@�����@d@�@g_@�� �@d{@�!@d@�#�:�$�/�%�*�&�(�'@M�@�)@M�@�+�-�,@d@�.@m�@�0�5�1�3�2@M�@�4@M�@�6�8�7@M�@�9@d@�;�F�<�A�=�?�>@cW@�@@b�@�B�D�C@H @�E@c�@�G�L�H�J�I@b�@�K@�I@�M�O�N@M�@�P@M�@�R��S���T��U�~�V�k�W�b�X�]�Y�[�Z@b�@�\@xv@�^�`�_@cW@�a@cW@�c�h�d�f�e@cW@�g@cW@�i@�j@M�@�l�u�m�r�n�p�o@cW@�q@N@@�s�t@q~@�v�y@�w�x@c�@�z�|�{@cW@�}@aN@���������@ak@�@d{@���@d@�@M�@�����@d@�@M�@���@d@�@b�@�������@g_@�@c�@���@d@�@d@�����@M�@�@M�@���@M�@�@M�@�����������@M�@�@g_@�@ak@�@ak@�@g_@�������������@xv@��@j�@������@d{@��@cW@����������@M@��@t�@������@j�@��@h@��������������@c�@��@ak@������@p�@��@N@����������@nW@��@M�@������@M�@��@M�@���H������������������@d@��@M�@���@d@�@d@�����@N@�@p�@�@d@����	���@M@�@c�@�
��@d@�
@xv@�����@xv@�@xv@���@xv@�@M@��1��&��!���@d{@� @ty@�"�$�#@L�@�%@M�@�'�,�(�*�)@d@�+@f@�-�/�.@g4@�0@d@�2�=�3�8�4�6�5@aN@�7@g_@�9�;�:@nW@�<@p�@�>�C�?�A�@@cW@�B@p�@�D�F�E@N@�G@N@�I�v�J�a�K�V�L�Q�M�O�N@cW@�P@M@�R�T�S@d@�U@cW@�W�\�X�Z�Y@xv@�[@b�@�]�_�^@c�@�`@d{@�b�m�c�h�d�f�e@b�@�g@M�@�i�k�j@d@�l@d@�n�s�o�q�p@`�@�r@c�@�t@�u@`�@�w��x��y�~�z�|�{@~@�}@d@@��@d@�����@M�@�@b�@���@n�@�@c�@�������@d@�@c�@���@cW@�@b�@�����@ak@�@b�@���@M�@�@�@��^��������������@b�@�@d@���@d{@�@N@�����@g4@�@g4@���@d@�@g_@�����������@N@��@M@������@d@��@g4@����������@p�@��@d{@������@cW@��@c�@������������������@cW@��@n�@������@M�@��@b�@����������@c�@��@M�@������@d@��@d{@�������������@d@��@N@�@M@�����@cW@�@M�@���@d@�@M@��1������
���@M@�	@M@��
�@M@�@d@�����@ak@�@M@���@b�@�@b�@��&��!���@d@� @d@�"�$�#@p�@�%@g4@�'�,�(�*�)@d@�+@L�@�-�/�.@d@�0@L�@�2�G�3�<�4�7�5@�6@~@�8�:�9@b�@�;@d@�=�B�>�@�?@d@�A@l@�C�E�D@d@�F@M�@�H�S�I�N�J�L�K@b�@�M@d{@�O�Q�P@c�@�R@l@�T�Y�U�W�V@N@�X@d@�Z�\�[@p�@�]@g4@�_��`��a�x�b�m�c�h�d�f�e@cW@�g@N@�i�k�j@N@�l@d@�n�s�o�q�p@d@�r@`�@�t�v�u@xv@�w@M@�y��z��{�}�|@d@�~@�,@���@c�@�@d{@�����@d@�@g4@���@j�@�@d@���������@d@�@d@���@d{@�@ak@�����@M�@�@c�@���@c�@�@ak@�������@d@�@c�@���@M@�@ak@�����@cW@�@nW@���@d@�@M�@�������������������@M�@��@d@������@cW@��@az@����������@b�@��@cW@������@cW@��@xv@����������@��@M�@@����@p�@����������@d@��@l@������@M�@��@`�@����������������@g_@��@c�@�����@nW@�@c�@�����@c�@�@b�@���@d@�@d@����	���@cW@�@L�@�
��@c�@�
@c�@�����@g4@�@M�@���@nW@�@�@�M��M�M���M�M��M��M�� �1M��"�;�#�/�$�+�%�(�&@�'@az@�)@�*@L�@ty�,�-@�.@N@�0�4�1g_�2@�3@c�@�5�8�6@�7@M�@�9@�:@`�@�<�E�=�A�>aN�?@�@@L�@�Bc��C@�D@b�@�F�GNp�M��H�I@�J@�K@�Laz�Maz�Naz�O�S�Paz�Qazaz�Razw*�Tazaz�U�Vazw*az�X���Y��Z�f�[�b�\�_�]@�^@nW@�`@�a@p�@�cxv�d@�e@M@�g�L�h�i@�j@�k@�lM�mM�nMM�o�pMM�q�rM�sM�tM�uM�vM�wM�xMM�y�zMM�{�|M�}M�~M�M�M�M�M�M�M�M�M�M�Mq�tON��@�@�@�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~@�������@�@M@�@�@d@`���@�@L�@������@�@`�@�@�@M@i�li���������������d��d��d��d��d��d��d��d��d��dd����d��d��d��d��dd��d��d����d��d��d��d��d��d��d��d��d��d��d��dd����dd��d���Q������cW���v���h���[���O���#��Q��������Q�����Q����Q�����cWQ��Q����Q����Q�����w��M���Q���Q��	Q��
Q���Q��
Q�cWQ�Q���Q��Q�Q��Q��cWQ���C��0��'���Q���Q��cWQ��Q�cWQ���$� �"�!Q�cWQ�Q��#Q�cW�%Q��&Q�cWQ��(Q��)�,Q��*�+Q�Q�cW�-Q��.�/Q�cWcWQ��1�6Q��2�3Q�Q��4�5cWcWQ��7�;Q��8�9Q��:Q�cWQ��<Q��=�@�>�?Q�cWcWQ��A�BcWQ�cWQ��DQ��EQ��F�I�GQ��HQ�cWQ��JQ��KQ�Q��LQ�cW�N�o�OQ��P�i�Q�a�R�Y�S�VQ��TQ��UQ�cW�WQ�Q��XcWQ��Z�]Q��[Q��\Q�cW�^Q��_�`Q�cWcWQ��bQ��c�f�dQ��eQ�cWQ��gQ��hQ�cWQ��jQ��kQ��lQ��mQ��nQ�Q�cW�pQ�Q��q�rQ�Q��s�tQ�cW�u�vQ�cWQ��xQ�Q��y�zQ��{Q��|Q��}Q�Q��~�Q��Q�Q�cW�Q��Q��Q�Q���Q��Q��Q��Q�Q���Q�Q�cW�Q�Q���Q��Q��Q��Q��Q��Q��Q��Q��Q�Q��Q�cWQ��Q��Q���Q��Q��Q�cWQ��Q�Q���Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q�cWQ��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q�Q��Q����Q���Q���Q�Q���cWQ���Q���Q���Q���Q�Q�cW�������Q���Q�����Q�Q�����Q���Q���Q���Q���Q���Q���Q���Q���Q���Q���Q���Q�����Q���Q�����Q���Q�cWQ���Q���Q�Q���Q���Q�cW���������Q�Q�����Q�cWQ���Q���Q�Q���Q�����Q���Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q�Q���Q�Q��cWQ��Q��Q�Q��Q��cWQ��Q��	Q��
��Q�Q���
Q�cWQ���Q��Q��cWQ��Q��Q�Q�cW�Q��Q��Q���Q���Q��Q�Q��Q�cWQ��� Q�Q��!Q��"Q�cW�$�.Q��%Q��&Q��'�(Q�Q��)�*Q�Q��+Q��,�-Q�Q�cWQ��/Q��0�1�H�2�8Q��3Q��4�5Q��6Q��7Q�cWQ��9�>�:Q��;Q�Q��<�=Q�cWQ��?�CQ��@�AQ��BQ�Q�cW�D�FQ��EQ�cW�GQ�cWQ��IQ��JQ��KQ��LQ��MQ��NQ�cWQ��PQ��QQ�Q��RQ��S�TQ��UQ�Q��VQ��W�XQ�Q��YQ��ZQ�cW�\Q��]Q�Q��^Q��_�`Q��aQ��bQ��cQ�Q��d�eQ��fQ�Q��gQ�cWQ��i�jQ�Q��k�lQ��mQ��nQ�Q��o�pQ��qQ�Q��r�sQ��tQ�Q��uQ�cWQ��w�x��y�Q��z�{Q�Q��|�}Q�Q��~Q��Q��Q��Q��Q��Q��cWQ�Q��Q��Q���Q�Q���Q�Q���Q�Q��Q���Q�Q�cWQ���Q��Q��Q�Q��Q���Q��Q�Q����Q��Q��Q�cW�Q��Q�cWQ��Q��Q��Q��Q��Q��Q��Q��Q��Q��N�@�@iM@�����@�@M�@�@�@L�@�N�@�@d@�����di����@�@l�@��@��@d@������d]��@��@M@d�����~���O���8��@��@��@��@��@��@��@�������c����������������������dNazM����Mb�akp���������dL�ty`�����cWM�NL������������`�g4nWN����xvl�m�M��������i�dN`���cWp�{
aN��������b�M���`���cWdg_c������,dLd��dL�`�j����	��
dg4ku��
Mq~dM�����M�Nd`����IdM�d��5��&������b�nWc�L���dM�n�L�� �#�!�"|�lg4c��$�%d]i�L�g_�'�.�(�+�)�*l�d{dM��,�-L�b�d`��/�2�0�1akL�Лc��3�4b�d{xv`��6�E�7�>�8�;�9�:c�Nb�d{�<�=ld{~M�?�B�@�AL�c�`�c��C�Dd{L�t�b��F�\�G�Z�H�Ib�g4K��J�Kd�Ld�Md�Nd�Od�Pd�Qd�Rd�Sd�Td�Ud�Vd�Wd�Xd�Yd�dc��[nWb��]�`�^�_b�d`�d{�a�bc�b�Lxv�d��e��f�t�g�n�h�k�i�jd{L�b�N�l�mb�q~Nxv�o�qL��pt�Л�r�sMg4akN�u�|�v�y�w�xMxvdcW�z�{hdakl�}��~�akL�b�c�d�dak��������d{
Mb����bdc�b�����iMNM�`���b�M�xvp�������M�L�Lc��Nd{cW����d{`�d{�b��MdMcW����������`�M�y7i���li`�Lty��b��cW|���cWNt�`�������Bft�g_l��c�dc�������xvcWMak��MM�Ld��������������c�d{NL�����l�Ib�cW��������akM�c�b�����e���b�L�������������c�b�dM����L�t�xvnW��������dtyL�� ����lazM�N��@����������������������N`�t�d����Nz�dd{��������t�m�dc�����|�ddN�����������cW`�M��nWc�t�M�����LcWc�`���cWc�j*d{����	����nWLM�M��j�l�m�L�
�
��d{t�NK���Lg_c�N������@��@l��NMc�Md���db�d`��@��-��&� �#�!�"L�Nc�d�$�%`�Ml�M�'�*�(�)akaNcWM�+�,j*d{d���.�5�/�2�0�1t�n�g4M�3�4`�ddM�6@�7@d{d�9@�:@�;@�<@�=@�>@�?@�@@�A@�B@�C@�D@�E�J�F�H�G@c�@�I@�b@�K�M�L@h@�N@c�@�PN�Q@�R@�S@�T@�U@�V@�W@�X@�Y@�Z@�[@�\�z�]�u�^�r�_�q�`H �a@�b@�c@�d@�e@�f@�g@�h@�i@�j@�k@�l@�m@�n@�o�p@H:E�@&����s�t��AH�@&�v�x�wAeE�AeAe�yAe��{@�|@�}@AAe���N�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@z�@M�@�����d����������@c��ty�@�@L�@�����@�@nW@�@�@N@�@�@�@d@����nW��@�@`�@g4��@�@g4@��L�dg4aN�������N�@�@d@g4N��tycWMp����w����nW����@��@{
@`�����@��@��@���p��d��d��������d��dd��d��d��d��d��d��d��d��������d��d��d��d��dd��d��#dd��d��d��d��������Bf��Bf��Bf��Bf��Bf��BfdBf��Bf��Bf��Bf��Bf��Bf�Bf#d�Bf�Bf�Bfd�d��BfdBf��U�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�	Bf�
�1�����
��Bf�Bf�BfdBf�Bf�Bf�BfdBf���Bf�Bf�BfdBf�Bf�Bf�BfdBf��(� �$�!Bf�"Bf�#BfdBf�%Bf�&Bf�'BfdBf�)�-�*Bf�+Bf�,BfdBf�.Bf�/Bf�0BfdBf�2�E�3�<�4�8�5Bf�6Bf�7Bf�NBf�9Bf�:Bf�;BfdBf�=�A�>Bf�?Bf�@BfdBf�BBf�CBf�DBfd��FBf�G�N�HBf�I�L�J�Kd�Nq�o��MBf�m��OBf�P�S�Q�Rdm��Nq��TBfo�Bf�VBf�WBf�XBf�YBf�ZBf�[Bf�\Bf�]Bf�^Bf�_BfBf�`Bf�a�bBf�cBf�dBf�eBfBf�f�gBf�hBfBf�i�jBf�kBf�lBfBf�mBf�n�oBfBfdd�qd�rd�s�tBf�ud�vdq�d�x�ycW@�z�{t�@�|`��}`��~`��`��`��`�`���`���`��`���`�`��`���`��`��`��`�`���`��`��`��`�`��`���`��`��`��`��`�`��`���`�`��`�@�`�`���`��`�`���`�`��`��`��`���`��`�`���`�`��`���`�`���`�`��`���`�`��`��`��@`�����+������c��@�@L�@�cW��L�������L���L���L���L�L�����L�L�����L���L���L���L���L���L���L���L���L���L���L���L���L���L���L���L���L�L�����L���L���L���L���L�L���L���L��:L�����L���L���L�L��+���$���!�����M�����M����������M��My�����;�M�;M���4�OMq�������Oa�d���J��o�~M�M�M�M��
��	�����%���M����
����M�M�M�Mg�M�M�M�M�M�M��M�M�M�M�M�M�� tO����M�"@�#@d@�%�(�&@�'@c�@�)@�*@g4@�,�K�-�D�.�1�/@�0@d@�2aN�3aN�4aNaN�5aN�6aN�7aN�8aN�9aN�:aN�;�<aNaN�=aN�>aN�?�@aNaN�AaN�B�CaNaN۱�E�H�F@�G@q~@�I@�J@M@�L�P�MN�N@�O@N@@�Q�R@�S@�T@�U�r�V�*�W�+�X��Y�x�Z�o�[�K�\�D�]az�^az�_az�`az�aaz�baz�c�u�daz�eazaz�faz�g�hazaz�iaz�jaz�kaz�laz�maz�naz�oaz�paz�qaz�r�s�tazRTv��?�v�4�waz�xaz�yaz�zaz�{az�|az�}az�~az��������������ww�w*�b��Mb�b����b��"�w������wv�wb��kXkXwckX�kXgC����gC���gCa��gQ�v�v�az������w�az��?��wUubub�-�����^��azw���ikXwub�����������gQgCb�ub��b�gCazb������ikXwwU���gCkXwU��������azv�kXgC��kXgCw*��������wUkXwkX��azazv�����������������v�kXkXgC����azv��^kX��������kXazgCw������kXgQub������������gCv�gQgCaz��b�gC��������gCazkXaz����gQubazgQ���#������������������kX�M��gCkX��gCwc������b�wgQw��aza�azb�������gC�[azgQ�azgQgC����ww��?az�azww�����	��
�gCazkXw�
�ubkXazw���azRTaz��az�b��-������kXgQaz�^�azb�gC�� ��b�azb���!�"azwv�gC�$az�%az�&�-�'�*�(�)�wUb��"�+�,�?RTv�w�.�1�/�0��iv�kX�2�3b��b�az�5az�6az�7az�8az�9az�:az�;az�<az�=az�>az�?az�@az�Aaz�Baz�Cazubaz�Eaz�Faz�Gaz�Haz�Iaz�Jazw�az�L�g�Maz�Naz�Oaz�Paz�Qaz�R�e�Sw*w*�T�Uaz�Vaz�Waz�Xaz�Yaz�Zaz�[az�\az�]az�^az�_az�`az�aaz�b�d�cw*w*azw*az�fazw*az�haz�iaz�jaz�kaz�laz�maz�nazw*az�pazaz�q�raz�saz�taz�uaz�vaz�waz��az�yaz�z��{��|az�}az�~az�az�az�az��b���az�az�az�az�az�az�az�az�az�az�az�az�az�az�azb�azazb��az�az�az�az��b���b�b�gCb��b���b��az�az�az�az�az�az�az�az�az�az�az�az�az�az�azb�az�az�az�az�az�az�az�azb�az�������az�az�az�az�az�az�az�az��az�az������az��az��az��az��az��az����w��azwwaz��az��az��az��az��az��az��azkXaz���az��az����az��az��az��az������kX����kXaz��kX��az��az��az��az��az��az��az��az��az��az��az��az��az��az��azazkX��azkX��kXaz�����az�az�az�az�az�azaz�azkX�az�az�az�az�az�az���az�az�	az�
az�az�az�
az�az�az�az�az�az�az�az�az�azazkXkXaz��#�az�az�az�az�az��!� kXazkX�"azkXaz�$az�%az�&az�'az�(az�)az�*azkXaz�,���-���.�t�/�A�0�8�1az�2az�3az�4az�5az�6az�7azazgC�9az�:az�;az�<az�=az�>az�?�@azgCgCaz�B�Z�Caz�Daz�Eaz�Faz�Gaz�Haz�I�JgCaz�KgC�Laz�Maz�Naz�Oaz�Paz�Qaz�Raz�Saz�Taz�Uaz�Vaz�Waz�Xaz�YazgCaz�[az�\az�]az�^az�_�s�`�r�agC�bgC�caz�daz�eaz�faz�gaz�hazaz�i�jgC�kaz�laz�maz�naz�oaz�paz�qgCazgCazgCgCaz�u��vaz�waz�xaz�yaz�zaz�{az�|az�}�~gCazgCaz������az��az��az��az��az��az��az��az��az��az��az��az��az��az��azaz����az��az��az��az��az��azaz��gCaz��az��az��az��az��az��az��az�az����������az��az��az��az��az��az��az��aza�az��az��az��az��az��az��az��az����v�gCv�az��az��az��az��az��az��az��az��azaz��v�az����������az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��azgQaz��az������az��az��az��az��az��az����az�?�?az��az��az��az��az��az��azwUaz���	����az����az��az��az��az��az��az��azaz�-�����az��az��az��az��az��az�az�^az�az�az�az�az�az�az�azazgQ�
az�az�az�
az�az�az��'����azgQgQb�gQ��gQ�az�az�az�az�az�az�az�az�az� az�!az�"az�#az�$az�%�&gQkXgCb��(azgQ�)gQaz�+���,�^�-�I�.az�/�8�0az�1az�2az�3az�4az�5az�6az�7azwaz�9az�:az�;az�<az�=az�>az�?az�@��A��Baz�Caz�Daz�Eaz�Faz�Gaz�Haz�az�J�Taz�K�Laz�Maz�Naz�Oaz�Paz�Qaz�Raz�SazwUazaz�Uaz�V�Waz�Xaz�Yaz�Zaz�[az�\b��]b�azb��_���`��az�a�b�m�caz�daz�eaz�faz�gaz�h�k�i�jazv�v�az�lazv�az�naz�oaz�paz�qaz�raz�saz�t���ugQ�vaz�waz�xaz�yaz�zaz�{az�|az�}az�~az�az��az��az��az��az��azgQazgQaz��az��az��az��az��az��az��az��az��azkXaz����az����az��az��az��az��az��az��az��azazkX��azaz����az��az��az��az��az��az����azububaz�������������az��az��az��az��az��az��az��az��az��gC��az��az��az��az��az��az��az��az��az��az��az��az��az��az��azgCaz������az��az��az��az��az��az����������gC��az��az��az��az��az��az��az��az��az��az��az��az��az��az��azgCazgCazgC��gCazaz����az��az��az������b�������gQ��gQ��az��az��az��az��azb�azgQb���az������gQb�gQ��azgQazaz����azaz����az��az��az��az��az��az�az�az�az�az�az�az�az�az�az�	az�
az�az�az�
az�az�azgCaz��W��5��,���az�az�az�az�az�az�azkXaz�az�az�az� az�!az�"az�#az�$kX�%az�&az�'az�(az�)az�*az�+azkXazaz�-�.az�/az�0az�1az�2az�3az���4��az�6�F�7�>�8az�9az�:az�;az�<az�=azwcaz�?az�@az�Aaz�Baz�Caz�Daz�Eazwaz�G�O�Haz�Iaz�Jaz�Kaz�Laz�Maz�NazazgQ�Paz�Qaz�Raz�Saz�Taz�Uaz�Vazwaz�Xazaz�Yaz�Z�[az�\az�]az�^az�_az�`az�aazb��b�caz�daz�eaz�faz�gaz�haz�iaz�jaz�kaz�laz�maz�naz�oaz�paz�qazazb��saz�t���u��az�v�w���xaz�yaz�zaz�{az�|az�}az�~az�azgCaz����az����az��az��az��az��az��azwaz��az��az��az��az��az��az��az��azkXaz������������az����az��az��az��az��az��az��azubaz��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��azkXaz��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��azkXazaz��az����az��az��az��az��az��az��az��az��kX��az��az��az��az��az��az��az��az��az��az��az��az��az��az��azkXaz������az������az����az��az��az��az��az��azw*azaz����az��az��az��az��az��az�azb�azaz�az��az�az�az�az�az�	az�
azwaz�azaz�
az�az��az�az�az�az�az�az�azwaz��4��"��N��@�@L�@�p�� @�!@N@�#�*�$�'�%@�&@N@�(@�)@N@�+�1�,M�M��-�.M��/�0��0{�M��2@�3@g_@�5�>�6�7NM��8�;�9@�:@g4@�<@�=@M@�?�cN�@�A@�B@�C@�Ddd�E�Fd�Gd�Hd�Idd�J�Kd�Ldd�Md�Nd�Od�Pd�Qd�Rd�Sd�Td�U�Vdd�W�Xdd�Yd�Z�[d�\d�]d�^d�_d�`d�ad�bd@dp�@�e�9�f���g�w�h�q�i�p�j�m�k@�l@g4@�n@�o@M@c�d]�r�v�s@�t@�u@d@`�d�x���y�}ty�z�{@�|@c�@�~���@��@L@��@��@b�@����d����@��@p�@��d��@��@L�@������������������@��@`�@��@��@M@������@��@nW@��@��@c�@������d��@��@az@dL����,���=L����@��@��@��M��M��M��M��M��M��M��M���%��������������������M��M�L������W��s����������Oa���M��M������������M)xM��M���M��M��M��d�����������������;Mq�d�����J�o�����������������������������������������������������������������Oa��������4��������������MM�������d�;���M��M)x�J���
���������������tOdd�;�����;��������M�J��)x�o������
�����4�q�M��	�M�JM�M�MMy���������Mq�q�d��d�;�;���M�M����� ��������;��J�;�J�!�#�"�o�JM�$�M��&M�'M�(�3�)�.�*�,�+��Oa�����-���O�/�0�OM�1�2M�l�O���4�:�5�7g��6��˫�8�9���W*�A��;g��<g����O�>d�?@�@@�A@�BN�C���D���E��F�A�GN�H��I���J���KN�LN�MN�N���O�r�P�aN�Q�RN�SN�TN�UN�VN�WN�XN�YN�ZN�[N�\N�]N�^N�_N�`NNP��bN�cN�dN�eN�fN�gN�hN�iN�jN�kN�lN�mN�nN�oN�pN�qNNP��s��N�t�uN�vN�wN�xN�yN�zN�{N�|N�}N�~N�N��N��N��N��NNP���N��N��N��N��N��N��N��N��N��N��N��N��N��N��N��NNP���N��N������N��N��N��N��N��N��N��N��N��N��N��N��N��N��NP�N��N��N��N��N��N��N��N��N��N��N��N��N��N��N��NNP�N��N��N��N��N��N��N����N��N��N��N��N��N��N��N��N����N��N����������N��OcNN��NP���N��NP�Oc��N��N��N��N����Q�NQ�N��N��N��N��N��N������NN����N��N��N��N��N��N��N��N��N��N��N��N��N��NN��P�N��N�����N��N��N��N��NN����N��NN����N�NN�N��N�NP�N�N�N�N�	N�
N�N�NN�
N��N�N�NN��N�NNP�N��N�N�N�N�N�N��0N��N� N�!NN�"�#N�$N�%N�&N�'N�(N�)N�*N�+N�,�.P��-P�N�/NNP�N�1�2N�3N�4N�5N�6N�7N�8N�9N�:N�;N�<N�=N�>N�?N�@NNP�N�B�CN�DN�E���FN�G��N�H�IN�J���K�k�LN�MN�NN�ON�PN�QN�RN�SN�TN�UN�VN�WN�X�c�Y�`�Z�]�[�\NP�NP��^�_P�NNP��aN�bNP�N�d�h�e�fNP��gP�NP��iN�jNP�N�lN�mN�nN�oN�pN�qN�rN�sN�tN�uN�vN�wN�x�}�yN�zN�{�|NP�P�N�~N�������NP�NP�����P�NP�N��NN����N��N��N��N��N��N��N��N��N��N��N��N��N��N��NP�N������N��N������N��N��N��N��N��N��N��N��N��N��N��N��N��N��N��NNOc��N��N��N��N��N��N��N��N��N��N��N������N��N��N��OcNOc��N��N��NN��OcN��N������N��N��N��N��N��N��N��N��N��N��N��N��N��N��N��N����NN;N;N��N��N��N��N��NN����N��N��N��N��N��N��N��N��N��N��NQ�NN��N��N��N��N��N�������N��N��N��N��N��N��N��N��N��N��N��N��N��N��NOcN�N�N�N�N�N�N�N�N�	N�
N�N�N�
N�N�NP�N�����P��9�N�N�N�N�N�N�N�N�N�N�N�N� �,�!N�"N�#N�$N�%N�&N�'N�(N�)N�*NP��+P�N�-N�.N�/N�0N�1N�2N�3N�4N�5N�6�8P��7NP�P�N�:N�;N�<N�=N�>N�?N�@N�AN�BP��CN�DN�EN�FN�GN�HN�IN�JN�KN�LN�MN�NN�ONP�N�Q�}�RN�SN�TN�UN�VN�WN�XN�YN�ZN�[N�\N�]N�^�j�_N�`N�aN�bN�cN�dN�eN�fN�gN�hN�iNNP��kN�lN�mN�nN�oN�pN�qN�rN�s�z�t�w�u�vP�NP�N�x�yNP�NP��{N�|NP�NN�~�N��N��N��N��N��N��N��N��N��N��NN����N��N��N��N��N��N��N��N��N��N��NP�N��N��N��N��N��N��N��N��N��N��NN��N��N����N����N��N��N��N��N��N��N��NN����N��N��N��N��N��N��N��N��N��N��N��N��N��NOcN��N��N��N��N��N��N��N��N��N��N��N��������N����N��N��N��N��N��N��N��N��N��N��NOcN������N��N��N��N��N��N��N��N��N��N��NOcN��N��N��N��N��N��N��N��N��N��N��NOcN��N��N��N��N��N��N��N��N��N��N��N��N��NOcN��N�N�NN�N��N�N�N�N�N�	N�
N�N���
N�N�N�N�N�N�N�N�N�N�N�N�N�N�NNVp�N�N�N� N�!N�"N�#N�$N�%N�&N�'N�(N�)N�*N�+NVpN�-�2�.�/d@�0@�1@xv@�3�6�4@�5@xv@�7@�8@g4@�:���;���<�a�=�A`��>�?@�@@b�@�B�E�C@�D@c�@�F@�G@�H@�Ity�Jty�Ktyty�L�Mty�Nty�Oty�Pty�Qty�Rty�S�\�T�X�Uty�Vty�Wtyt�vqty�Y�Zty�[ty��tyty�]�^ty�_ty�`tyty�U�b��d]�c�d@�e@�f@�g���h���i���j���k���l���m���n���o���p���q���r���s���t���u���v���w���x���y�����z�{�����|���}�~�����������������������������3�������������������������������������������������������x�����x�l@����������M���@��@`�@��M���@��@aN@����`�����@��@�,@��@��@��@M@������������xvN��M��@��@L@������M��@��@L@i�����@��@l�@���m��@@����@��@��@��L����M��L�������L�L���L���������L���L�L���L�����L�L�����L���L���L���L�L�����L���L���L���L�L�����L�L���L���L�����L�L���L���L��:��L���L���L���L���L���L���L���L�L�����L���L�L�����L���L�L�����L���L���L���L�L�����L���L�L����:L����L���L�����L���L���L���L��L��L��L��L�L���L��L��L��L��	L�L��
L���L��
L��L��L��L�L���L��L��:L�L���L��L���.�L��L��L��L��L��L��L�L�� �!L��"L��#L�L��$L��%L��&�'L��(L�L��)�*L�L��+�,L�L��-�:L��/L��0L��1L��2L��3L��4L��5L��6L��7L��8L��9L��:L���;�<�D�=L��>L��?L�L��@�AL��BL��CL��L�L��E�FL�L��G�HL�L��IL��J�KL��:L����NL��O�k�PL�L��QL��RL��S�TL��UL�L��VL��W�XL��YL��ZL��[L��\L��]L�L��^L��_�`L��aL��bL�L��c�dL��eL��fL�L��g�hL��iL�L��jL���lL��L��n�oMM��p���qd�rd�sd�td�ud�vd�wd�xdd�yd�z�{d�|dd�}d�~�d��dd��d����d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d�d��@��@`�@���;�������������������������@��@Ba@��@��@H @������@��@F�@��@��@Ez@����������@��@F�@��@��@@&@������@��@@&@��@Ba@��������������@��@@&@��@��@E�@������@��@H @��@��@H @����������@��@�@��@��@A@������@��@@&@��@Ae@��������������@��@��@@&@������@��@@&@��@��@E�@����������@��@H @��@��@E@������@��@@&@��@��@@&@�������������@��@A@��@@&@������@��@@&@�@�@H @��	���@H:@�@�@@&@�
�
�@�@E�@�@�@@&@�����i��]��V���@�@@&@�@�@�@�Ez�Ez�EzEz�� �;�!EzEz�"Ez�#Ez�$�%Ez�&Ez�'EzEz�(Ez�)�*EzEz�+Ez�,Ez�-Ez�.Ez�/Ez�0�1EzEz�2�3EzEz�4�5Ez�6Ez�7EzEz�8�9Ez�:EzEz@�<Ez�=Ez�>Ez�?Ez�@EzEz�AEz�BEz�C�DEz�EEz�FEzEz�G�HEz�IEzEz�J�KEz�LEz�MEz�NEzEz�OEz�PEz�Q�REz�SEzEz�TEz�U@Ez�W�Z�X@�Y@�@�[@�\@HG@�^�b@�_�`@�a@@&@�c�f�d@�e@@&@�g@�h@E�@�j�y�k�r�l�o�m@�n@H @�p@�q@H @�s�v�t@�u@@&@�w@�x@H @�z�~@�{�|@�}@�@�@@&@������������������@��@@&@��@��@@&@������@��@@&@��@��@F�@����������@��@@&@��@A��A@������@��@Ae@��@��@@@���@��������������@&AeH ����@&E��A��������H�@&H:@����E�Ae��@@�����
����������@��@��@��@��@��@��@��@��@��@����������Ae���������SAEz@����F�AAeaz���������~��Ae������AeH:F�E���������H EAE�����'�|����@��@����E��@&@�~@��@��@��@��@��@��@��@��@��@��@��@��@��@��@��@A@������@��@��@��@��@��@��@��@��@��@��@��@��@��@��@@&@��@��@�@�@�@�@�@�@�@�@�@�	@�
@�@�@@&@��/���@�@�@�@�@�@�@�@�@�@�@�@�@�@�@Ez@� @�!@�"@�#@�$@�%@�&@�'@�(@�)@�*@�+@�,@�-@�.@Ae@�0@�1@�2@�3@�4@�5@�6@�7@�8@�9@�:@�;@�<@�=@�>@�?@��@�AV�B�s�C�`�D�O@�E�F@�G@�H@�I@�J@�K@�L@�M@�N@@&@�P@�Q@�R@�S@�T@�U@�V@�W@�X@�Y@�Z@�[@�\@�]@�^@�_@E@�a�r�b@�c@�d@�e@�f@�g@�h@�i@�j@�k@�l@�m@�n@�o@�p@�q@H @H:@�tj�u���v���w���x@�y@�z@�{@�|@�}@�~@�@��@��@����������@&����@E�H���������@&@H������@&F�BaEz������������Ez�F�Ez����Ae��Ae��������@���@����@|�@&@������@��@��@��@��@��@��@��@��@��@��@��@��@
�@��@��@��@��@��@��@��@��@��@��@��@��@��@E@����������@��@��@��@��@��@��@��@��@��@��@��@��@�@��@��@��@��@��@��@��@��@��@��@��@��@��@
_@������@��@��@��@��@��@��@��@��@��@��@��@��@�@��@��@��@��@��@��@��@��@��@��@��@��@��@HG@��0������@��@��@��@��@��@��@@@@@@@Ae@@@	@
@@@
@@@@@@�Y@"@@@@@@@@@@@ @!@�@#@$@%@&@'@(@)@*@+@,@-@.@/@Ez@1N2@3@4@5@6@7@8@9@:@;@<@=@>@?@Ba@A@B@C@D@E@F@G@H@I@J@K@L@M@|�@O]P@Q@R@S@T@U@V@W@X@Y@Z@[@\@�Y@^@_@`@a@b@c@d@e@f@g@h@i@Ez@k�l�m�n|o@p@q@r@s@t@u@v@w@x@y@z@{@�<@}@~@@�@�@�@�@�@�@�@�@�@�@E@���@�@�@�@�@�@�@�@�@�@�@�@�@�'@�@�@�@�@�@�@�@�@�@�@�@�@�@��@�����@�@�@�@�@�@�@�@�@�@�@�@�@F�@�@�@�@�@�@�@�@�@�@�@�@�@�@HG@���@�@�@�@�@�@�@�@�@�@�@�@�@E@�@�@�@�@�@�@�@�@�@�@�@�@�@H @�����@�@�@�@�@�@�@�@�@�@�@�@�@H:@�@�@�@�@�@�@�@�@�@�@�@�@@F�@@@@@@@	@
@@@
@@��@@@@@@@@@@@@@@�@;- @!@"@#@$@%@&@'@(@)@*@+@,@H:@.@/@0@1@2@3@4@5@6@7@8@9@:@Ez@<I=@>@?@@@A@B@C@D@E@F@G@H@�~@J@K@L@M@N@O@P@Q@R@S@T@U@
_@W�7Xh�Y6�Z9[i\	]^\_�`abAec�dze@fpglhi����jk�������
mH�no@&AeAe@quH�rstF�@&@�vxwH�EzH�H�yBa��{�|Ae}�~��H�@Ae@&��H:@&@&@�����Ae��AeAe@��������Ae@Ba@��@�H�@����@&H:��E@�@Ae������HGAe@Ae��AeF�@������H:@@Ae�Ae@������������Ae�
�Ae��
�,Ae
n����
n
�
n�K�Ae�Y
n������Ae�g
�Ae���� kAe�� k� k
n�� k�u5�,��������
nAe� k��Ae�,�,
n��� k k
n��
n�,Ae
n��� k� k� k���� k�
n k k�Ae�����������
�AeAe
n��Ae k�Ae��� kAe k
n�Ae�������
n��,
nAe�
n����
n����������������Gt����Ae
n k	
nAe k�,Ae
�Ae

nAe�

n k�u�
n�Ae k
n�
nAeAe
��AeAe
n��Y <!/")#&$%@Ae@�'(Ae@AeE*-+,@AeH:Ae.@�\��061423��AeH:Ae5EF�Ae79Ae8F�@:;HG@@&�=J>D?B@A@H��@CAeAe@EHFGAe�@H:��IH:@KRLOMN�@@&AePQAe�@BaSVTUAe@�HGWX@AeE�Zx[j\c]`^_@Ae�Eab@AeAe��dgefBaAeAe��hiEz@AeF�krlomnE@AeEpq@&�Ae@svtu@&F�AeH:Ew@&@y�z�{~|}���@��EBa@&Ae����@Ae@�����~��E@Ez�������'Ae���F�AeA@&����H:�������E�@�@&��AeH:H:@����HGEAe���H�Ae@���������EzAe@E���@@&�����HGAeAe���F�Ae@H:����Ae��@�@@&�����Ez��F������Ae@Ez���@������@��@&���E�@Ae����AeE@&�'�Ae@&@��������Ae��@�@@�@��@�@�@@��@�@�@@��@@��@@�'AeE��@&E����H�H:��@���@&@&HG��E����@&E@����@EAeBa���EAe@�@�@�@F��F�F�F�@YAeR(	
@AeF�@&
@�Ae@�L�Ae�<EH:E@@Ae�Ae��Ae��Ez ��!@"%#$F�AeEA&'@F��Ez)C*6+0,.-H:@&AeE/�Ae1423�@&�EzE5�F�7>8;9:E@H:E<=F�@@&Ez?A@@E@EB@��D@ELFIGHAeF�@&@JKEzH:Ae@&MPNOAe@�EzQ@�@@ST@U@V@W@X@�@Zo[b@\]@^@_@`@a@�@cid@e@f@g@h@Ae@j@k@l@m@n@E@p}qwr@s@t@u@v@�@x@y@z@{@|@�@~�@�@�@�@�@Ae@�@�@�@�@�@�@�����������@�@�@�@�@�@�@�@�@�@�@
�@@��@�@�@�@�@E@�����@�@�@�@�@�~@�@�@�@�@�@F�@���@�@�@�@�@�@�@�@�@�@�@A@�������@�@�@�@�@�@�@�@�@�@�@�@���@�@�@�@�@�@�@�@�@�@�@E@�����@�@�@�@�@�@�@�@�@�@�@�@@��@�@�@�@�@E@�%���������������Ez��������������������������	�
�N�
����
w��������������� �!�"�#�$���&A'4(.)�*�+�,�-����/�0�1�2�3�N�5;6�7�8�9�:����<�=�>�?�@�Ez�BOCID�E�F�G�H���J�K�L�M�N�
w�PVQ�R�S�T�U����W�X�Y�Z�[�
w�]*^�_�`uah@bc@d@e@f@g@E@ioj@k@l@m@n@�@p@q@r@s@t@�@v�w}x@y@z@{@|@Ae@~@@�@�@�@E@���@�@�@�@�@�6@�@�@�@�@�@E@�������@�@�@�@�@E@�@�@�@�@�@E@�@�@�@�@�@�@Ae@�����@�@�@�@�@Ae@�@�@�@�@�@�@���@�@�@�@�@H�@�@�@�@�@�@HG@�������@�@�@�@�@�@F�@���@�@�@�@�@E@�@�@�@�@�@E@�����@�@�@�@�@Ba@�@�@�@�@�@E@���@�@�@�@�@Ba@�@�@�@�@�@E@�����@�@�@�@�@Ae@�@�@�@@@�@	@@@@@�@
@@@
@@�'@@@@@@�@@@@@@�@$@ @!@"@#@�@%@&@'@(@)@H�@+�,]-H.;/50@1@2@3@4@@&@6@7@8@9@:@E@<B=@>@?@@@A@�@C@D@E@F@G@E@IP@JK@L@M@N@O@E@QWR@S@T@U@V@�@X@Y@Z@[@\@�@^y_l`fa@b@c@d@e@E@g@h@i@j@k@H�@msn@o@p@q@r@Ae@t@u@v@w@x@�@z�{�|@}@~@@�@�@�@�@�@�@�@H�@���@�@�@�@�@�6@�@�@�@�@�@A@���������@�@�@�@�@Ae@�@�@�@�@�@F�@���@�@�@�@�@�@�@�@�@�@�@�@�����@�@�@�@�@��@�@�@�@�@�@���@�@�@�@�@E@�@�@�@�@�@E@�������@�@�@�@Ae@�@�@�@�@�@E@���@�@�@�@�@�@�@�@�@�@�@�@�����@�@�@�@�@��@�@�@�@�@�@�@���@�@�@�@�@Ae@�@�@�@�@@Ae@��`6!	@
@@@
@Ae@@@@@@H�@@@@@@�@@@@@ @�@"/#)$@%@&@'@(@Ae@*@+@,@-@.@�@@01@2@3@4@5@�@7Q8E9?:@;@<@=@>@E@@@A@B@C@D@�@FKG@H@I@J@��@L@M@N@O@P@tO@RYS@T@U@V@W@X@Ae@@Z[@\@]@^@_@�@a�b}cpdje@f@g@h@i@�@k@l@m@n@o@@&@qwr@s@t@u@v@�@x@y@z@{@|@H�@~���@�@�@�@�@Ae@�@�@�@�@�@�@���@�@�@�@�@�@�@�@�@�@�@A@�������@�@�@�@�@�@�@�@�@�@�@�@@��@�@�@�@�@A@�����@�@�@�@�@�@�@�@�@�@�@H�@���@�@�@�@�@��@�@�@�@�@�@H�@�&���������@�@�@�@�@Ae@�@�@�@�@�@E@���@�@�@�@�@��@�@�@�@�@�@�@�����@�@�@�@�@�@�@�@�@�@�@E@�@�@�@�@�@�@�@���@@@@@H�@@@@	@
@E@
@@@@@�@@@@@@�@@ @@@@@�@!@"@#@$@%@�@'R(=)0@*+@,@-@.@/@H:@172@3@4@5@6@�'@8@9@:@;@<@E@>K?E@@A@B@C@D@E@F@G@H@I@J@�'@@LM@N@O@P@Q@�@SnTaU[V@W@X@Y@Z@A@\@]@^@_@`@az@bhc@d@e@f@g@A@i@j@k@l@m@�@o|pvq@r@s@t@u@E@w@x@y@z@{@F�@}@~@@�@�@�@@&@�I�����������@�@�@�@�@HG@�@�@�@�@�@�@���@�@�@�@�@Ez@�@�@�@�@�@�@�����@�@�@�@�@�@�@�@�@�@�@�@���@�@�@�@�@�@�@�@�@�@�@�@����@��@�@�@�@�@�@���@�@�@�@�@F�@�@�@�@�@�@E�@�����@�@�@�@�@�@�@�@�@�@�@E@���@�@�@�@�@E@�@�@�@�@�@F�@�����@��@�@�@�@�@E@�@�@�@�@�@�@|�@
@@@@@�@@	@
@@@�@@@@@@@Ae@0#@@@@@F�@@@ @!@"@�@$*%@&@'@(@)@�@+@,@-@.@/@�@1>283@4@5@6@7@�@9@:@;@<@=@�'@?C@@A@B@H�@D@E@F@G@H@E@J�KvLaMT@NO@P@Q@R@S@�@U[V@W@X@Y@Z@H�@\@]@^@_@`@�'@bic@d@e@f@g@h@�@jpk@l@m@n@o@H�@q@r@s@t@u@�'@w�x�yz@{@|@}@~@E@�@�@�@�@�@�@���@�@�@�@�@Ae@�@�@�@�@�@E@�����@�@�@�@�@E@�@�@�@�@�@E@���@�@�@�@�@�@�@�@�@�@�@E@���������@�@�@�@�@Ae@�@�@�@�@�@�@@��@�@�@�@�@�@�����@�@�@�@�@�@�@�@�@�@�@E@���@�@�@�@�@@&@�@�@�@�@�@H�@�������@�@�@�@�@Ae@�@�@�@�@�@�@���@�@�@�@�@�@�@�@�@�@�@Ba@�		�	�@�@	@	@	@�@	@	@	@	@	@�@	
		@	@	
@	@	@�@	@	@	@	@	@H�@	9	
�		�		q		F		1		$@		@	 @	!@	"@	#@�@	%	+	&@	'@	(@	)@	*@�@	,@	-@	.@	/@	0@H�@	2	9@	3	4@	5@	6@	7@	8@H�@	:	@	;@	<@	=@	>@	?@�@	A@	B@	C@	D@	E@�@	G	\	H	U	I	O	J@	K@	L@	M@	N@Ae@	P@	Q@	R@	S@	T@�@@	V	W@	X@	Y@	Z@	[@�@	]	j	^	d	_@	`@	a@	b@	c@E@	e@	f@	g@	h@	i@E@	k@	l@	m@	n@	o@	p@�~@	r	�	s	�	t	�	u	{	v@	w@	x@	y@	z@�@	|@	}@	~@	@	�@�'@	�	�	�@	�@	�@	�@	�@�@	�@	�@	�@	�@	�@E@	�	�@	�	�@	�@	�@	�@	�@�@@	�	�@	�@	�	�	�	�	�	�Ae	�	�	�Ae	�	�	�	�Ae	�Ae	�Ae	�AeAeB�	�Ae	�Ae	�AeB�	�B�Ae	�	�	�AeAe	�	�Ae	�Ae	�Ae
�Ae	�Ae	�Ae	�Ae	�Ae	�	�N��N��RAeB�	�	�B�AeN�	�	�	�N���RAe	�	�B�	�B�
�	�	�Ae~�RB�	�	�	�	�@	�	�@	�@	�@	�@	�@E@	�@	�@	�@	�@	�@	�@�@	�	�	�	�	�@	�@	�@	�@	�@E@	�@	�@	�@	�@	�@E@	�	�	�@	�@	�@	�@	�@Ae@	�@	�@	�@	�@	�@E@	�
S	�
)	�
	�
	�	�	�@	�@	�@	�@	�@H:@	�@	�@	�@	�@
@E@


@
@
@
@
@�@
	@

@
@
@

@�@




@
@
@
@
@E@
@
@
@
@
@E@

#
@
@
 @
!@
"@F�@
$@
%@
&@
'@
(@�@
*
8@
+
,
2
-@
.@
/@
0@
1@�@
3@
4@
5@
6@
7@F�@
9
F
:
@
;@
<@
=@
>@
?@Ae@
A@
B@
C@
D@
E@E@
G
M
H@
I@
J@
K@
L@�@
N@
O@
P@
Q@
R@�@
T
�
U
j
V
]@
W
X@
Y@
Z@
[@
\@�@
^
d
_@
`@
a@
b@
c@F�@
e@
f@
g@
h@
i@�@
k
x
l
r
m@
n@
o@
p@
q@�@
s@
t@
u@
v@
w@�@
y

z@
{@
|@
}@
~@HG@
�@
�@
�@
�@
�@�@
�
�
�
�
�
�
�@
�@
�@
�@
�@H @
�@
�@
�@
�@
�@�@
�
�
�@
�@
�@
�@
�@E@
�@
�@
�@
�@
�@E@
�
�@
�
�@
�@
�@
�@
�@�@
�
�
�@
�@
�@
�@
�@�@
�@
�@
�@
�@
�@�@
��
�!
�
�
�
�
�
�
�
�
�@
�@
�@
�@
�@E@
�@
�@
�@
�@
�@E@
�
�
�@
�@
�@
�@
�@|�@
�@
�@
�@
�@
�@H�@
�
�
�
�
�@
�@
�@
�@
�@�'@
�@
�@
�@
�@
�@H�@
�
�
�@
�@
�@
�@
�@HG@
�@
�@
�@
�@
�@E@
�
�
�
�
�
�@
�@
�@
�@
�@E@
�@
�@
�@
�@
�@�@@@@@@�@@@	@
@@�@
@@@@@@H:@@@@@@�@@@@@ @�@"S#8$+@%&@'@(@)@*@�'@,2-@.@/@0@1@�@3@4@5@6@7@�@9F:@;@<@=@>@?@d@A@B@C@D@E@E@GMH@I@J@K@L@Ae@N@O@P@Q@R@H:@TiU\@VW@X@Y@Z@[@Ez@]c^@_@`@a@b@�@d@e@f@g@h@E@jwkql@m@n@o@p@��@r@s@t@u@v@�@x~y@z@{@|@}@E@@�@�@�@�@E@�����������@�@�@�@�@�@�@�@�@�@�@E@���@�@�@�@�@|�@�@�@�@�@�@E@��@��@�@�@�@�@H�@@��@�@�@�@�@A@����@��@�@�@�@�@F�@���@�@�@�@�@�@�@�@�@�@�@E@�����@�@�@�@�@Ae@�@�@�@�@�@H�@���@�@�@�@�@E@�@�@�@�@�@H�@��������@�@�@�@�@�@�@�@�@�@�@H�@���@�@�@�@�@Ae@�@�@�@�@�@H�@@@@@@@�@@	@
@@@
@�@$@@@@@@Ae@@@@@@�@@ @!@"@#@E@%,@&'@(@)@*@+@�@-3.@/@0@1@2@��@4@5@6@7@8@��@:
�;
<�=t>Y?L@FA@B@C@D@E@E@G@H@I@J@K@�@MSN@O@P@Q@R@E@T@U@V@W@X@�@Zg[a\@]@^@_@`@E@b@c@d@e@f@�@hni@j@k@l@m@�@o@p@q@r@s@E@u�v�w}x@y@z@{@|@Ez@~@@�@�@�@�~@���@�@�@�@�@H�@�@�@�@�@�@�'@�����@�@�@�@�@H:@�@�@�@�@�@�@���@�@�@�@�@H�@�@�@�@�@�@E@���������@�@�@�@�@F�@�@�@�@�@�@Ae@���@�@�@�@�@H�@�@�@�@�@�@H:@�����@�@�@�@�@�@�@�@�@�@�@�@@��@�@�@�@�@E@�������@�@�@�@�@F�@�@�@�@�@�@��@���@�@�@�@�@�@�@�@�@�@�@�@�
�
�@�@�@�@
@�@
@
@
@
@
@E@


	@
@
@
@

@�@
@
@
@
@
@�@

x

G

2

%


@
@
@
@
@@&@
 @
!@
"@
#@
$@Ez@
&
,
'@
(@
)@
*@
+@E@
-@
.@
/@
0@
1@E@
3
:@
4
5@
6@
7@
8@
9@�@
;
A
<@
=@
>@
?@
@@H�@
B@
C@
D@
E@
F@�@
H
c
I
V
J
P
K@
L@
M@
N@
O@H:@
Q@
R@
S@
T@
U@Ae@
W
]
X@
Y@
Z@
[@
\@E@
^@
_@
`@
a@
b@�@
d
k@
e
f@
g@
h@
i@
j@�@
l
r
m@
n@
o@
p@
q@F�@
s@
t@
u@
v@
w@�@
y
�
z
�@
{
|
�
}@
~@
@
�@
�@�'@
�@
�@
�@
�@
�@��@
�
�@
�
�@
�@
�@
�@
�@E@@
�
�@
�@
�@
�@
�@�@
�
�
�
�@
�
�@
�@
�@
�@
�@Ae@
�
�
�@
�@
�@
�@
�@E@
�@
�@
�@
�@
�@�'@
�
�
�
�
�@
�@
�@
�@
�@Ez@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@�@
�@
�@
�@
�@
�@E@
��
�3
�
�
�
�
�
�
�
�@
�@
�@
�@
�@Ae@
�@
�@
�@
�@
�@��@
�
�
�@
�@
�@
�@
�@�@
�@
�@
�@
�@
�@E@
�
�
�
�
�@
�@
�@
�@
�@Ae@
�@
�@
�@
�@
�@�@
�
�
�@
�@
�@
�@
�@@&@
�@
�@
�@@@E@@@@	@
@H:@@
@@@@E@@@@@@�@@@@@@Ae@&@ !@"@#@$@%@E@'-(@)@*@+@,@Ae@.@/@0@1@2@Ae@4e5P6C7=8@9@:@;@<@E@>@?@@@A@B@�@DJE@F@G@H@I@@&@K@L@M@N@O@H�@Q^RXS@T@U@V@W@�@Y@Z@[@\@]@E@_@`@a@b@c@d@�@f�gthni@j@k@l@m@E@o@p@q@r@s@E@u{v@w@x@y@z@F�@|@}@~@@�@E@�����@�@�@�@�@�@�@�@�@�@�@E@���@�@�@�@�@Ba@�@�@�@�@�@�@�������@��@�@�@�@�@az@���@�@�@�@�@�'@�@�@�@�@�@E@�����@�@�@�@�@Ae@�@�@�@�@�@E@���@�@�@�@�@�@�@�@�@�@�@E@�������@�@�@�@�@
�@�@�@�@�@�@E@���@�@�@�@�@�@�@�@�@�@�@�@�����@�@�@�@�@�@�@�@�@�@�@�@��@�@�@�@�@Ae@@@@@@�@>#	
@@
@@@H:@@@@@@�@@@@@@F�@@@ @!@"@�@$1%+&@'@(@)@*@�@,@-@.@/@0@Ae@283@4@5@6@7@�'@9@:@;@<@=@�~@?Z@MAGB@C@D@E@F@F�@H@I@J@K@L@Ae@NTO@P@Q@R@S@Ae@U@V@W@X@Y@Ae@[b@\]@^@_@`@a@�@@cd@e@f@g@h@�@j�k�lmFn�o�p�q~rxs@t@u@v@w@E@y@z@{@|@}@�@��@�@�@�@�@�@�@�@�@�@�@�@�����@�@�@�@�@Ae@�@�@�@�@�@�~@�@�@�@�@�@�@�~@�������@�@�@�@�@Ae@�@�@�@�@�@�@���@�@�@�@�@H�@�@�@�@�@�@E@�����@�@�@�@�@HG@�@�@�@�@�@E@���@�@�@�@�@H�@�@�@�@�@�@�@��������@�@�@�@�@E@�@�@�@�@�@|�@���@�@�@�@�@H�@�@�@�@�@�@E@����@�@�@�@�@@&@�@�@�@@@E@	@@@@@�@
@@@
@@A@+@@@@@E@@@@@@E@% @!@"@#@$@�@&@'@(@)@*@H�@,9-3.@/@0@1@2@H:@4@5@6@7@8@E@:@;@<@=@>@?@E@A@B@C@D@E@�@G�HsI^JWKQL@M@N@O@P@E@R@S@T@U@V@��@@XY@Z@[@\@]@E@_l`fa@b@c@d@e@�'@g@h@i@j@k@��@@mn@o@p@q@r@E@t�u�v|w@x@y@z@{@�~@}@~@@�@�@E@���@�@�@�@�@Ez@�@�@�@�@�@H�@�����@�@�@�@�@Ae@�@�@�@�@�@�@���@�@�@�@�@�@�@�@�@�@�@@&@���������@�@�@�@�@Ez@�@�@�@�@�@�@@��@�@�@�@�@�@�����@�@�@�@�@��@�@�@�@�@�@A@���@�@�@�@�@�@�@�@�@�@�@E@�������@�@�@�@�@H:@�@�@�@�@�@E@���@�@�@�@�@�@�@�@�@�@�@E@���@�@�@�@�@�@@@@@@�@
@	@
@@@H:@@@@@@F�@�p@%@@@@@@H�@ @!@"@#@$@H�@&3'-(@)@*@+@,@�@.@/@0@1@2@�@4:5@6@7@8@9@��@;@<@=@>@?@E@A\BOCID@E@F@G@H@��@J@K@L@M@N@�@PVQ@R@S@T@U@��@W@X@Y@Z@[@E@]d@^_@`@a@b@c@E@ekf@g@h@i@j@Ae@l@m@n@o@E@q�r�sz@tu@v@w@x@y@E@{�|@}@~@@�@E@�@�@�@�@�@Ae@�����@�@�@�@�@Ae@�@�@�@�@�@�@���@�@�@�@�@E@�@�@�@�@�@�@����@��@�@�@�@�@�@���@�@�@�@�@Ae@�@�@�@�@�@E@�����@�@�@�@�@HG@�@�@�@�@�@E@���@�@�@�@�@Ae@�@�@�@�@�@E@�7��������@�@�@�@�@E@�@�@�@�@�@Ba@���@�@�@�@�@H:@�@�@�@�@�@E@��@��@�@�@�@�@�@��@�@�@�@�@E@@@@@@E@@	
@@@
@@E@@@@@@�@@@@@@HG@*$@ @!@"@#@H�@%@&@'@(@)@��@+1,@-@.@/@0@�@2@3@4@5@6@Ez@8o9T:G;A<@=@>@?@@@Ae@B@C@D@E@F@�@HNI@J@K@L@M@E@O@P@Q@R@S@�@UbV\W@X@Y@Z@[@Ae@]@^@_@`@a@A@cid@e@f@g@h@Ae@j@k@l@m@n@|�@p�q~rxs@t@u@v@w@�@y@z@{@|@}@H�@��@�@�@�@�@Ae@�@�@�@�@�@E@�����@�@�@�@�@|�@�@�@�@�@�@E@���@�@�@�@�@�~@�@�@�@�@�@E@�J�{����������@�@�@�@�@Ae@�@�@�@�@�@E@���@�@�@�@�@�@�@�@�@�@�@�@�����@�@�@�@�@Ae@�@�@�@�@�@�@���@�@�@�@�@H�@�@�@�@�@�@�@�������@�@�@�@�@�@�@�@�@�@�@�@���@�@�@�@�@|@�@�@�@�@�@�@��@@@@@@H:@@@	@
@@�@
@@@@@�'@D)�!�!�!�!�!�!�'�!#�!�! �!!�!"�!�'�!$�!%�!&�!'�!(�!�D�!*7+1,�!-�!.�!/�!0�!���!2�!3�!4�!5�!6�!���!8>9�!:�!;�!<�!=�!���!?�!@�!A�!B�!C�!���!E`FSGMH�!I�!J�!K�!L�!�D�!N�!O�!P�!Q�!R�!���!TZU�!V�!W�!X�!Y�!���![�!\�!]�!^�!_�!�'�!anbhc�!d�!e�!f�!g�!���!i�!j�!k�!l�!m�!�J�!oup�!q�!r�!s�!t�!���!v�!w�!x�!y�!z�!�n�!|�}�~�����@�@�@�@�@Ae@�@�@�@�@�@�'@���@�@�@�@�@@&@�@�@�@�@�@Ez@�����@�@�@�@�@�@�@�@�@�@�@HG@���@�@�@�@�@��@�@�@�@�@�@E@�������@�@�@�@�@F�@�@�@�@�@�@H�@���@�@�@�@�@@&@�@�@�@�@�@H�@�����@�@�@�@�@Ae@�@�@�@�@�@Ae@���@�@�@�@�@E@�@�@�@�@�@Ez@�������@��@�@�@�@�@�@A@���@�@�@�@�@�~@�@@@@@E@@@	@
@@Ae@
@@@@@H�@@@@@@�@@@@@@H�@ 5!(@"#@$@%@&@'@E@)/*@+@,@-@.@Ae@0@1@2@3@4@Ba@6=7@8@9@:@;@<@�@>D?@@@A@B@C@�@E@F@G@H@I@F�@KL�M�NiO\PVQ@R@S@T@U@��@W@X@Y@Z@[@H:@]c^@_@`@a@b@�@d@e@f@g@h@�@jwkql@m@n@o@p@E@r@s@t@u@v@�'@x~y@z@{@|@}@A@@�@�@�@�@E@�������@�@�@�@�@F�@�@�@�@�@�@E@���@�@�@�@�@�@�@�@�@�@�@E@�����@�@�@�@�@�@�@�@�@�@�@E@���@�@�@�@�@�@�@�@�@�@�@�~@���������@�@�@�@�@@&@�@�@�@�@�@�@�@�@�@�@�@�@�@��@��@�@�@�@�@E@���@�@�@�@�@�@�@�@�@�@�@E@����@��@�@�@�@�@�@���@�@�@�@�@Ae@�@�@�@�@�@Ez@��@@@@@H:@@@@	@
@HG@
@@@@@�@@@@@@�@zD)@#@@ @!@"@HG@$@%@&@'@(@E@*7+1,@-@.@/@0@�@2@3@4@5@6@�@8>9@:@;@<@=@�@?@@@A@B@C@E@E`FSGMH@I@J@K@L@E@N@O@P@Q@R@�@TZU@V@W@X@Y@�@[@\@]@^@_@�@anbhc@d@e@f@g@�@i@j@k@l@m@��@otp@q@r@s@@&@u@v@w@x@y@Ae@{�|�}�~�@�@�@�@�@Ae@�@�@�@�@�@Ae@@��@�@�@�@�@�@�����@�@�@�@�@�@�@�@�@�@�@E@���@�@�@�@�@|@�@�@�@�@�@�@�������@�@�@�@�@Ez@�@�@�@�@�@E@@��@�@�@�@�@E@�����@�@�@�@�@HG@�@�@�@�@�@H @���@�@�@�@�@A@�@�@�@�@�@E@��}���I��������@�@�@�@�@H:@�@�@�@�@E@���@�@�@�@�@E@�@�@�@�@�@E@�@�@@@@@�@@@	@
@@�'@
@@@@@E@.!@@@@@Ae@@@@@ @�@"(#@$@%@&@'@@&@)@*@+@,@-@E@/<061@2@3@4@5@�@7@8@9@:@;@Ae@=C>@?@@@A@B@Ez@D@E@F@G@H@�@J{KfLYMSN@O@P@Q@R@E@T@U@V@W@X@H�@Z`[@\@]@^@_@��@a@b@c@d@e@H�@gnh@i@j@k@l@m@�@oup@q@r@s@t@Ae@v@w@x@y@z@E@|�}�~�@�@�@�@�@E@�@�@�@�@�@E@���@�@�@�@�@H:@�@�@�@�@�@Ae@��@��@�@�@�@�@E@���@�@�@�@�@E@�@�@�@�@�@E@����������@�@�@�@�@Ae@�@�@�@�@�@`�@���@�@�@�@�@�@�@�@�@�@�@�@�����@�@�@�@�@�'@�@�@�@�@�@M@���@�@�@�@�@��@�@�@�@�@�@E@�������@�@�@Ae@�@�@�@�@�@�@���@�@�@�@�@�@�@�@�@�@�@�@
@@@@@��@@	@
@@@E@@@@@@@E@F1$@@@@@�@@ @!@"@#@�@%+&@'@(@)@*@H:@,@-@.@/@0@�@29@34@5@6@7@8@H�@:@;@<@=@>@?@Ae@A@B@C@D@E@Ae@GbHUIOJ@K@L@M@N@�@P@Q@R@S@T@E@V\W@X@Y@Z@[@�@]@^@_@`@a@E@cpdje@f@g@h@i@Ae@k@l@m@n@o@�@qwr@s@t@u@v@E@x@y@z@{@|@H:@~O����������@�@�@�@�@E@�@�@�@�@�@E@���@�@�@�@�@E@�@�@�@�@�@E@�����@�@�@�@�@Ae@�@�@�@�@�@�@@��@�@�@�@�@�@�������@�@�@�@�@Ez@�@�@�@�@�@�@���@�@�@�@�@��@�@�@�@�@�@E@��@��@�@�@�@�@E@���@�@�@�@�@�@�@�@�@�@�@�@��������@�@�@�@�@H:@�@�@�@�@�@�@���@�@�@�@�@�@�@�@�@�@�@�@
@@@@@�g@@	@
@@@�@@@@@@E�@@@@@@�@4)#@@ @!@"@Ez@$@%@&@'@(@Ae@*.+@,@-@Ae@/@0@1@2@3@E@5B6<7@8@9@:@;@�@=@>@?@@@A@@&@CID@E@F@G@H@Ae@J@K@L@M@N@Ae@P�Q|RgSZ@TU@V@W@X@Y@`�@[a\@]@^@_@`@A@b@c@d@e@f@�@ho@ij@k@l@m@n@�'@pvq@r@s@t@u@H:@w@x@y@z@{@H�@}�~�@�@�@�@�@�@Ae@���@�@�@�@�@�@�@�@�@�@�@H�@�@���@�@�@Ae@�@�@�@�@�@�@������@��@�@�@�@�@E@���@�@�@�@�@E@�@�@�@�@�@�@�����@�@�@�@�@|�@�@�@�@�@�@�@���@�@�@�@�@E@�@�@�@�@�@�@�������@�@�@�@�@E@�@�@�@�@�@cW@���@�@�@�@�@E@�@�@�@�@�@�@�����@�@�@�@�@��@�@�@�@�@�@E@��@�@�@�@@�@@@@@@�@�	�
s<!
@@@@@@F�@@@@@@E@@@@@ @E@"/#)$@%@&@'@(@H:@*@+@,@-@.@E@061@2@3@4@5@�@7@8@9@:@;@E@=X>K?E@@A@B@C@D@Ae@F@G@H@I@J@�'@LRM@N@O@P@Q@�@S@T@U@V@W@E@YfZ`[@\@]@^@_@H:@a@b@c@d@e@�@gmh@i@j@k@l@�@n@o@p@q@r@H�@t�u�v�w}x@y@z@{@|@E@~@@�@�@�@�~@���@�@�@�@Ae@�@�@�@�@�@�@��@��@�@�@�@�@E�@���@�@�@�@�@Ae@�@�@�@�@�@�@�������@�@�@�@�@F�@�@�@�@�@�@�@���@�@�@�@�@E@�@�@�@�@�@�@�����@�@�@�@�@Ae@�@�@�@�@�@�@���@�@�@�@�@M@�@�@�@�@�@�@�>��������@�@�@�@�@Ae@�@�@�@�@�@��@���@�@�@�@�@Ae@�@�@�@�@�@Ae@�@��@�@�@�@@�@@@@@@d@#	
@@
@@@�@@@@@@H:@@@@@@E@@@ @!@"@H�@$1%+&@'@(@)@*@�@,@-@.@/@0@H�@283@4@5@6@7@�Y@9@:@;@<@=@@&@?v@[ANBHC@D@E@F@G@E@I@J@K@L@M@F�@OUP@Q@R@S@T@�@V@W@X@Y@Z@�@\i]c^@_@`@a@b@�@d@e@f@g@h@Ae@jpk@l@m@n@o@E@q@r@s@t@u@�@w�x�yz@{@|@}@~@�@�@�@�@�@�@HG@@��@�@�@�@�@E@�����@�@�@�@�@�@�@�@�@�@�@E@���@�@�@�@�@Ae@�@�@�@�@�@�@�m�����@����@�@�@�@�@�@�@�@�@�@�@H�@��@��@�@�@�@�@H�@���@�@�@�@�@�@�@�@�@�@�@�@�������@�@�@�@�@�@�@�@�@�@�@H:@���@�@�@�@�@�@�@�@�@�@�@E@�����@�@�@�@�@�@�@�@�@�@�@�@���@�@�@�@�@�@@@@@@Ae@6	
@@@
@E@@@@@@E@@@@@@@E@)#@@ @!@"@�@$@%@&@'@(@�@*0+@,@-@.@/@�@1@2@3@4@5@E@7R8E9?:@;@<@=@>@E@@@A@B@C@D@E@FLG@H@I@J@K@E@M@N@O@P@Q@F�@S`TZU@V@W@X@Y@�@[@\@]@^@_@E@agb@c@d@e@f@Ez@h@i@j@k@l@�@n�o�p�q~rxs@t@u@v@w@�@y@z@{@|@}@Ez@��@�@�@�@�@�@�@�@�@�@�@A@�����@�@�@�@�@�@�@�@�@�@�@�@���@�@�@�@�@
�@�@�@�@�@�@�@����@��@�@�@�@�@E@���@�@�@�@�@H:@�@�@�@�@�@�@�����@�@�@�@�@�@�@�@�@�@�@E@���@�@�@�@�@HG@�@�@�@�@�@Ae@��������@�@�@�@E@�@�@�@�@�@�@���@�@�@�@�@�@�@�@�@�@�@Ae@����@�@�@�@�@Ae@�@�@�@�@@HG@@@@@@@&@	@
@@@
@HG@$@@@@@@�@@@@@@�@@ @!@"@#@HG@%,@&'@(@)@*@+@E@-3.@/@0@1@2@|�@4@5@6@7@8@E@:);"�<�=�>?�@kAVBI@CD@E@F@G@H@H�@JPK@L@M@N@O@Ae@Q@R@S@T@U@�'@WdX^Y@Z@[@\@]@E@_@`@a@b@c@�'@@ef@g@h@i@j@�@l�mznto@p@q@r@s@��@u@v@w@x@y@�@{�|@}@~@@�@Ez@�@�@�@�@�@�~@�����@�@�@�@�@E@�@�@�@�@�@E@���@�@�@�@�@�@�@�@�@�@�@E@���������@�@�@�@�@�@�@�@�@�@�@H�@���@�@�@�@�@Ae@�@�@�@�@�@H�@�����@�@�@�@�@�@�@�@�@�@�@�@���@�@�@�@�@��@�@�@�@�@�@�~@�������@�@�@�@�@H:@�@�@�@�@�@E@@��@�@�@�@�@E@�����@�@�@�@�@�@�@�@�@�@�@E@�@@@@@E@@@@	@
@�@o
8)@@@@@F�H:@@@@@�@#@@ @!@"@E@$@%@&@'@(@E@*1@+,@-@.@/@0@H @@23@4@5@6@7@�@9T:G;A<@=@>@?@@@��@B@C@D@E@F@�@HNI@J@K@L@M@Ae@O@P@Q@R@S@�~@UbV\W@X@Y@Z@[@�@]@^@_@`@a@Ez@cid@e@f@g@h@Ae@j@k@l@m@n@@&@p�q�ry@st@u@v@w@x@�@z�{@|@}@~@@A@�@�@�@�@�@Ez@�����@�@�@�@�@E@�@�@�@�@�@Ae@���@�@�@�@�@HG@�@�@�@�@�@�'@�������@�@�@�@�@E@�@�@�@�@�@E@���@�@�@�@�@�@�@�@�@�@�@az@�����@�@�@�@�@Ae@�@�@�@�@�@@&@���@�@�@�@�@�@�@�@�@�@�@�@���7�����@��@�@�@�@�@�@���@�@�@�@�@Ae@�@�@�@�@�@E@��@��@�@�@�@�@�@��@�@�@�@�@Ae@@@@@@�@	@
@@@
@@�@@@@@@HG@@@@@@E@*$@ @!@"@#@Ae@%@&@'@(@)@�@+1,@-@.@/@0@H:@2@3@4@5@6@H�@8o9T:G;A<@=@>@?@@@E@B@C@D@E@F@E@HNI@J@K@L@M@�@O@P@Q@R@S@�@UbV\W@X@Y@Z@[@Ae@]@^@_@`@a@�@cid@e@f@g@h@E@j@k@l@m@n@|�@p�q~rxs@t@u@v@w@�@y@z@{@|@}@E@��@�@�@�@�@HG@�@�@�@�@�@E@�����@�@�@�@�@�@�@�@�@�@�@E@���@�@�@�@�@�@�@�@�@�@�@�@�
������@��@�@�@�@�@E@���@�@�@�@�@�@�@�@�@�@�@F�@��@��@�@�@�@�@�@���@�@�@�@�@E@�@�@�@�@�@�@�������@�@�@�@�@�@�@�@�@�@�@�'@���@�@�@�@�@�6@�@�@�@�@�@�@�����@�@�@�@�@E@�@�@�@�@�@E@��@@@@@�@@@@@	@�@U:
-@@@@@E@@@@@@@����� �!�"�#�$�%�&�'�(+)*�����,��.4/@0@1@2@3@�@5@6@7@8@9@�@;H<B=@>@?@@@A@H:@C@D@E@F@G@H�@IOJ@K@L@M@N@�@P@Q@R@S@T@�@VqWdX^Y@Z@[@\@]@Ae@_@`@a@b@c@E@ekf@g@h@i@j@�6@l@m@n@o@p@�@r}syt@u@v@w@x@f@z@{@|@H�@~�@�@�@�@�@�@�@�@�@�@�@E@�!� P�����������@�@�@�@�@Ae@�@�@�@�@�@E@@��@�@�@�@�@E@�����@�@�@�@�@�@�@�@�@�@�@�@���@�@�@�@�@Ae@�@�@�@�@E@�������@�@�@�@�@�@�@�@�@�@�@E@���@�@�@�@�@|�@�@�@�@�@�@E@@����@�@�@�@�@H:@�@�@�@�@�@�@� � �����@�@�@�@HG@�@�@�@�@�@�@���@�@�@�@�@E@�@ @ @ @ @�@     @ @ 	@ 
@ @�@ 
@ @ @ @ @E@   @ @ @ @ @H:@ @ @ @ @ @E@   5 ! (@ " #@ $@ %@ &@ '@H�@ ) / *@ +@ ,@ -@ .@�@ 0@ 1@ 2@ 3@ 4@E@ 6 C 7 = 8@ 9@ :@ ;@ <@Ae@ >@ ?@ @@ A@ B@E@ D J E@ F@ G@ H@ I@E@ K@ L@ M@ N@ O@E@ Q � R � S h T [@ U V@ W@ X@ Y@ Z@E@ \ b ]@ ^@ _@ `@ a@E@ c@ d@ e@ f@ g@E@ i v j p k@ l@ m@ n@ o@E@ q@ r@ s@ t@ u@�'@ w } x@ y@ z@ {@ |@�@ ~@ @ �@ �@ �@H:@ � � � � � � �@ �@ �@ �@ �@Ez@ �@ �@ �@ �@ �@HG@@ � �@ �@ �@ �@ �@H�@ � � � � �@ �@ �@ �@ �@�@ �@ �@ �@ �@ �@A@@ � �@ �@ �@ �@ �@�@ � � � � � � � � �@ �@ �@ �@ �@Ae@ �@ �@ �@ �@ �@�@ � � �@ �@ �@ �@ �@�@ �@ �@ �@ �@ �@��@ � � � � �@ �@ �@ �@ �@�@ �@ �@ �@ �@ �@H�@ � � �@ �@ �@ �@ �@�@ �@ �@ �@ �@ �@Ez@ �! � � � � �@ �@ �@ �@ �@E@ �@ �@ �@ �@ �@�@ � � �@ �@ �@ �@ �@�@ �@ �@ �@!@!@�'@!!
@!!@!@!@!@!	@�@!!!@!
@!@!@!@H:@!@!@!@!@!@�@!!�!!�!!Q!!6!!)!!#!@!@! @!!@!"@Ae@!$@!%@!&@!'@!(@H:@!*!0!+@!,@!-@!.@!/@�@!1@!2@!3@!4@!5@�'@!7!D!8!>!9@!:@!;@!<@!=@F�@!?@!@@!A@!B@!C@�@!E!K!F@!G@!H@!I@!J@�@!L@!M@!N@!O@!P@�@!R!g!S!`!T!Z!U@!V@!W@!X@!Y@H�@![@!\@!]@!^@!_@H:@@!a!b@!c@!d@!e@!f@�@!h!u!i!o!j@!k@!l@!m@!n@Ae@!p@!q@!r@!s@!t@�@!v!|!w@!x@!y@!z@!{@�@!}@!~@!@!�@!�@Ae@!�!�!�!�!�!�!�!�!�@!�@!�@!�@!�@�@!�@!�@!�@!�@!�@HG@!�!�!�@!�@!�@!�@!�@�@!�@!�@!�@!�@!�@�@!�!�@!�!�@!�@!�@!�@!�@E@!�!�!�@!�@!�@!�@!�@H�@!�@!�@!�@!�@!�@��@!�!�!�!�!�!�!�@!�@!�@!�@!�@Ae@!�@!�@!�@!�@!�@E@!�!�!�@!�@!�@!�@!�@�@!�@!�@!�@!�@!�@E@!�!�!�!�!�@!�@!�@!�@!�@E@!�@!�@!�@!�@!�@E@!�!�!�@!�@!�@!�@!�@H:@!�@!�@!�@!�@!�@E@!�"[!�"$!�"	!�!�!�!�!�@!�@!�@!�@!�@��@!�@!�@!�@!�@!�@E@!�"!�@!�@"@"@"@H:@"@"@"@"@"@E@"
""""@"
@"@"@"@E@"@"@"@"@"@�@"""@"@"@"@"@�@"@" @"!@""@"#@�'@"%"@"&"3"'"-"(@")@"*@"+@",@Ae@".@"/@"0@"1@"2@�@"4":"5@"6@"7@"8@"9@�@";@"<@"=@">@"?@Ae@"A"N"B"H"C@"D@"E@"F@"G@�@"I@"J@"K@"L@"M@�@"O"U"P@"Q@"R@"S@"T@�@"V@"W@"X@"Y@"Z@E@"\"�"]"x"^"k"_"e"`@"a@"b@"c@"d@E@"f@"g@"h@"i@"j@E@"l"r"m@"n@"o@"p@"q@H:@"s@"t@"u@"v@"w@E@"y"�@"z"{@"|@"}@"~@"@�@"�"�"�@"�@"�@"�@"�@�@"�@"�@"�@"�@"�@�@"�"�"�"�"�"�"�@"�@"�@"�@"�@E@"�@"�@"�@"�@"�@E@@"�"�@"�@"�@"�@"�@Ba@"�"�"�"�"�@"�@"�@"�@"�@F�@"�@"�@"�@"�@"�@Ba@"�"�"�@"�@"�@"�@"�@HG@"�@"�@"�@"�@"�@�@"�&"�$s"�#�"�#%"�"�"�"�"�"�"�"�"�@"�@"�@"�@"�@Ae@"�@"�@"�@"�@"�@�'@"�@"�@"�@"�@"�@"�@E@"�"�"�"�"�@"�@"�@"�@"�@Ae@"�@"�@"�@"�@"�@�@@"�"�@"�@"�@"�@"�@Ae@"�#
"�"�"�"�"�@"�@"�@"�@"�@Ez@"�@"�@"�@"�@"�@�'@"�#"�@#@#@#@#@H:@#@#@#@#@#	@�@#####
@#@#@#@#@Ae@#@#@#@#@#@E@###@#@#@#@#@@&@# @#!@#"@##@#$@H:@#&#]#'#B#(#5#)#/#*@#+@#,@#-@#.@E@#0@#1@#2@#3@#4@�@#6#<#7@#8@#9@#:@#;@H�@#=@#>@#?@#@@#A@E@#C#P#D#J#E@#F@#G@#H@#I@�@#K@#L@#M@#N@#O@�'@#Q#W#R@#S@#T@#U@#V@A@#X@#Y@#Z@#[@#\@��@#^#y#_#l#`#f#a@#b@#c@#d@#e@Ae@#g@#h@#i@#j@#k@H:@#m#s#n@#o@#p@#q@#r@�@#t@#u@#v@#w@#x@F�@#z#�#{#�#|@#}@#~@#@#�@�@#�@#�@#�@#�@#�@�@#�#�#�@#�@#�@#�@#�@��@#�@#�@#�@#�@#�@�@#�$#�#�#�#�#�#�#�#�#�@#�@#�@#�@#�@E@#�@#�@#�@#�@#�@�@#�#�#�@#�@#�@#�@#�@H:@#�@#�@#�@#�@#�@@&@#�#�#�#�#�@#�@#�@#�@#�@F�@#�@#�@#�@#�@#�@E@#�#�#�@#�@#�@#�@#�@F�@#�@#�@#�@#�@#�@�@#�#�#�#�#�#�#�@#�@#�@#�@#�@�@#�@#�@#�@#�@#�@�@#�#�#�@#�@#�@#�@#�@�@#�@#�@#�@#�@#�@E@#�#�#�#�#�@#�@#�@#�@#�@�'@#�@#�@#�@#�@#�@E@#�#�#�@#�@#�@#�@#�@E@#�@$@$@$@$@�@$$<$$!$$$$$	@$
@$@$@$
@H:@$@$@$@$@$@
�@$$$@$@$@$@$@�@$@$@$@$@$ @�'@$"$/$#$)$$@$%@$&@$'@$(@�@$*@$+@$,@$-@$.@E@$0$6$1@$2@$3@$4@$5@�@$7@$8@$9@$:@$;@�@$=$X$>$K$?$E$@@$A@$B@$C@$D@HG@$F@$G@$H@$I@$J@�@$L$R$M@$N@$O@$P@$Q@�@$S@$T@$U@$V@$W@E@$Y$f$Z$`$[@$\@$]@$^@$_@�@$a@$b@$c@$d@$e@�@$g$m$h@$i@$j@$k@$l@Ae@$n@$o@$p@$q@$r@E@$t%@$u$�$v$�$w$�$x$�$y$$z@${@$|@$}@$~@H:@$�@$�@$�@$�@$�@�@$�$�$�@$�@$�@$�@$�@�'@$�@$�@$�@$�@$�@E@$�$�$�$�$�@$�@$�@$�@$�@�@$�@$�@$�@$�@$�@�'@$�$�$�@$�@$�@$�@$�@H:@$�@$�@$�@$�@$�@�'@$�$�$�$�$�$�$�@$�@$�@$�@$�@E@$�@$�@$�@$�@$�@E@$�$�$�@$�@$�@$�@$�@A@$�@$�@$�@$�@$�@Ae@$�$�$�$�$�@$�@$�@$�@$�@Ae@$�@$�@$�@$�@$�@E@$�$�$�@$�@$�@$�@$�@�@$�@$�@$�@$�@$�@�@$�%	$�$�@$�$�$�$�@$�@$�@$�@$�@�@$�@$�@$�@$�@$�@Ae@$�%$�$�$�@$�@$�@$�@$�@��@$�@$�@$�@%@%@��@@%%@%@%@%@%@�@%
%%%%%%%
@%@%@%@%@E@%@%@%@%@%@E@%%%@%@%@%@%@�@% @%!@%"@%#@%$@�@%&%3%'%-%(@%)@%*@%+@%,@��@%.@%/@%0@%1@%2@H:@%4%:%5@%6@%7@%8@%9@|�@%;@%<@%=@%>@%?@H�@%A%�%B%y%C%^%D%Q%E%K%F@%G@%H@%I@%J@�@%L@%M@%N@%O@%P@E@%R%X%S@%T@%U@%V@%W@�@%Y@%Z@%[@%\@%]@E@%_%l%`%f%a@%b@%c@%d@%e@Ez@%g@%h@%i@%j@%k@E@%m%s%n@%o@%p@%q@%r@�@%t@%u@%v@%w@%x@�@%z%�%{%�%|%�%}@%~@%@%�@%�@Ae@%�@%�@%�@%�@%�@�@%�%�%�@%�@%�@%�@%�@HG@%�@%�@%�@%�@%�@Ae@%�%�%�%�%�@%�@%�@%�@%�@HG@%�@%�@%�@%�@%�@E@%�%�%�@%�@%�@%�@%�@A@%�@%�@%�@%�@%�@HG@%�%�%�%�%�%�%�%�%�@%�@%�@%�@%�@�@%�@%�@%�@%�@%�@Ae@%�%�%�@%�@%�@%�@%�@�@%�@%�@%�@%�@%�@�@%�%�%�%�%�@%�@%�@%�@%�@F�@%�@%�@%�@%�@%�@�@%�%�%�@%�@%�@%�@%�@lx@%�@%�@%�@%�@%�@E@%�&%�%�%�%�%�@%�@%�@%�@%�@Ae@%�@%�@%�@%�@%�@E@%�%�%�@%�@%�@%�@%�@�@%�@&@&@&@&@E@&&&@&@&@&	@&
@&@Ae@&
&&@&@&@&@&@H:@&@&@&@&@&@A@&'�&&�&&�&&U&&:&&-& &'&!@&"@&#@&$@&%&&F�EF�G�&(@&)@&*@&+@&,@|�@&.&4&/@&0@&1@&2@&3@H:@&5@&6@&7@&8@&9@E@&;&H&<&B&=@&>@&?@&@@&A@HG@&C@&D@&E@&F@&G@H�@&I&O&J@&K@&L@&M@&N@A@&P@&Q@&R@&S@&T@A@&V&q&W&d&X&^&Y@&Z@&[@&\@&]@E@&_@&`@&a@&b@&c@E@&e&k&f@&g@&h@&i@&j@�@&l@&m@&n@&o@&p@�@&r&y@&s&t@&u@&v@&w@&x@�@&z&�&{@&|@&}@&~@&@�@&�@&�@&�@&�@&�@E@&�&�&�&�&�&�&�&�&�@&�@&�@&�@&�@Ba@&�@&�@&�@&�@&�@E@&�&�&�@&�@&�@&�@&�@�@&�@&�@&�@&�@&�@E@&�&�&�&�&�@&�@&�@&�@&�@Ae@&�@&�@&�@&�@&�@Ez@&�&�&�@&�@&�@&�@&�@�@&�@&�@&�@&�@&�@�@&�&�&�&�&�&�&�@&�@&�@&�@&�@Ez@&�@&�@&�@&�@&�@E@&�&�&�@&�@&�@&�@&�@H:@&�@&�@&�@&�@&�@E@&�&�&�&�&�@&�@&�@&�@&�@Ae@&�@&�@&�@&�@&�@�@&�&�&�@&�@&�@&�@&�@�@&�@&�@&�@&�@&�@E@&�'e&�'.&�'&�'&�'&�@&�@&�@&�@&�@Ae@'@'@'@'@'@E@''
'@'	@'
@'@'@�@'@'@'@'@'@E@''!'''@'@'@'@'@�@'@'@'@'@' @E@'"'('#@'$@'%@'&@''@H:@')@'*@'+@',@'-@Ae@'/'J'0'='1'7'2@'3@'4@'5@'6@�@'8@'9@':@';@'<@E@'>'D'?@'@@'A@'B@'C@�@'E@'F@'G@'H@'I@Ae@'K'X'L'R'M@'N@'O@'P@'Q@�@'S@'T@'U@'V@'W@�@'Y'_'Z@'[@'\@']@'^@A@'`@'a@'b@'c@'d@�@'f'�'g'�'h't'i'n'j@'k@'l@'m@Ba@'o@'p@'q@'r@'s@E@'u'{'v@'w@'x@'y@'z@E�@'|@'}@'~@'@'�@E@'�'�'�'�'�@'�@'�@'�@'�@��@'�@'�@'�@'�@'�@�@'�'�'�@'�@'�@'�@'�@�6@'�@'�@'�@'�@'�@E@'�'�'�'�'�'�'�@'�@'�@'�@'�@�@'�@'�@'�@'�@'�@�@'�'�'�@'�@'�@'�@'�@m@'�@'�@'�@'�@'�@E@'�'�'�'�'�@'�@'�@'�@'�@Ae@'�@'�@'�@'�@'�@�@'�'�'�@'�@'�@'�@'�@F�@'�@'�@'�@'�@'�@E@'�(�'�(D'�(
'�'�'�'�'�'�'�@'�@'�@'�@'�@�@'�@'�@'�@'�@'�@�'@'�'�'�@'�@'�@'�@'�@�@'�@'�@'�@'�@'�@�@'�('�'�'�@'�@'�@'�@'�@Ae@'�@'�@'�@'�@'�@�@(((@(@(@(@(@�@(@(	@(
@(@(@E@(()(((((@(@(@(@(@�@(@(@(@(@(@�'@((#(@(@( @(!@("@�@($@(%@(&@('@((@E@(*(7(+(1(,@(-@(.@(/@(0@Ae@(2@(3@(4@(5@(6@�@(8(>(9@(:@(;@(<@(=@�@(?@(@@(A@(B@(C@E@(E(p(F([(G(N@(H(I@(J@(K@(L@(M@E@(O(U(P@(Q@(R@(S@(T@�@(V@(W@(X@(Y@(Z@�@(\(c(]@(^@(_@(`@(a@(b@�@(d(j(e@(f@(g@(h@(i@H:@(k@(l@(m@(n@(o@E@(q(�(r(y(s@(t@(u@(v@(w@(x@E@(z(�({@(|@(}@(~@(@�@(�@(�@(�@(�@(�@E@(�(�(�(�(�@(�@(�@(�@(�@Ba@(�@(�@(�@(�@(�@Ae@(�(�(�@(�@(�@(�@(�@az@(�@(�@(�@(�@(�@�@(�)(�(�(�(�(�(�(�(�(�@(�@(�@(�@(�@�@(�@(�@(�@(�@(�@�'@(�(�(�@(�@(�@(�@(�@H:@(�@(�@(�@(�@(�@�@(�(�(�(�(�@(�@(�@(�@(�@H:@(�@(�@(�@(�@(�@E@(�(�(�@(�@(�@(�@(�@Ae@(�@(�@(�@(�@(�@�@(�(�(�(�(�(�(�@(�@(�@(�@(�@�~@(�@(�@(�@(�@(�@E@(�(�(�@(�@(�@(�@(�@�@(�@(�@(�@(�@(�@E@(�)(�(�(�@(�@(�@(�@(�@E@(�@)@)@)@)@�@)))@)@)@)	@)
@�@)@)
@)@)@)@E@))I)).))!)))@)@)@)@)@��@)@)@)@)@) @E@)")()#@)$@)%@)&@)'@�@))@)*@)+@),@)-@E@)/)<)0)6)1@)2@)3@)4@)5@Ae@)7@)8@)9@):@);@�@)=)C)>@)?@)@@)A@)B@�@)D@)E@)F@)G@)H@�@)J)e)K)X)L)R)M@)N@)O@)P@)Q@��@)S@)T@)U@)V@)W@E@)Y)_)Z@)[@)\@)]@)^@�@)`@)a@)b@)c@)d@�@)f)r)g)l)h@)i@)j@)k@H:@)m@)n@)o@)p@)q@az@)s)y)t@)u@)v@)w@)x@�@)z@){@)|@)}@)~@HG@)�/�)�,�)�+#)�*\)�)�)�)�)�)�)�)�)�)�)�@)�@)�@)�@)�@E@)�@)�@)�@)�@)�@E@)�)�)�@)�@)�@)�@)�@�@)�@)�@)�@)�@)�@�@)�)�)�)�)�@)�@)�@)�@)�@Ae@)�@)�@)�@)�@)�@e�@)�)�)�@)�@)�@)�@)�@�@)�@)�@)�@)�@)�@az@)�)�)�)�)�)�)�@)�@)�@)�@)�@E@)�@)�@)�@)�@)�@�@)�)�)�@)�@)�@)�@)�@�@)�@)�@)�@)�@)�@Pu@)�)�@)�)�@)�@)�@)�@)�@�@)�)�)�@)�@)�@)�@)�@�@)�@)�@)�@)�@)�@E@)�*%)�*
)�)�)�)�)�@)�@)�@)�@)�@�@)�@)�@)�@)�@)�@Ae@)�*)�@*@*@*@*@�@*@*@*@*@*	@�@*****
@*@*@*@*@�@*@*@*@*@*@E@***@*@*@*@*@�@* @*!@*"@*#@*$@�~@*&*A*'*4*(*.*)@**@*+@*,@*-@E@*/@*0@*1@*2@*3@E@*5*;*6@*7@*8@*9@*:@�@*<@*=@*>@*?@*@@Ae@*B*O*C*I*D@*E@*F@*G@*H@Ae@*J@*K@*L@*M@*N@E@*P*V*Q@*R@*S@*T@*U@
�@*W@*X@*Y@*Z@*[@�@*]*�*^*�*_*z*`*m*a*g*b@*c@*d@*e@*f@Ae@*h@*i@*j@*k@*l@�@*n*t*o@*p@*q@*r@*s@�@*u@*v@*w@*x@*y@F�@*{*�*|*�*}@*~@*@*�@*�@F�@*�@*�@*�@*�@*�@E@*�*�*�@*�@*�@*�@*�@�@*�@*�@*�@*�@*�@��@*�*�*�*�*�*�*�@*�@*�@*�@*�@�@*�@*�@*�@*�@*�@H�@@*�*�@*�@*�@*�@*�@Ae@*�*�@*�*�@*�@*�@*�@*�@�@*�*�*�@*�@*�@*�@*�@H:@*�@*�@*�@*�@*�@H�@*�*�*�*�*�*�*�@*�@*�@*�@*�@*�@Ae@*�*�*�@*�@*�@*�@*�@��@*�@*�@*�@*�@*�@HG@*�*�*�*�*�@*�@*�@*�@*�@��@*�@*�@*�@*�@*�@�@*�*�*�@*�@*�@*�@*�@�@*�@*�@*�@*�@*�@E@*�+*�*�@*�*�@*�@*�@*�@*�@E@*�+*�@*�@*�@+@+@�@+@+@+@+@+@�@+	++
++@+@+
@+@+@�@+@+@+@+@+@�@+++@+@+@+@+@F�@+@+@+ @+!@+"@�@+$+�+%+�+&+]+'+B+(+5+)+/+*@++@+,@+-@+.@�@+0@+1@+2@+3@+4@E@+6+<+7@+8@+9@+:@+;@E@+=@+>@+?@+@@+A@H�@+C+P+D+J+E@+F@+G@+H@+I@�'@+K@+L@+M@+N@+O@�@+Q+W+R@+S@+T@+U@+V@�@+X@+Y@+Z@+[@+\@Ae@+^+s+_+l+`+f+a@+b@+c@+d@+e@�@+g@+h@+i@+j@+k@E@@+m+n@+o@+p@+q@+r@�@+t+�+u+{+v@+w@+x@+y@+z@�@+|@+}@+~@+@+�@E@+�+�+�@+�@+�@+�@+�@�@+�@+�@+�@+�@+�@E@+�+�+�+�+�+�+�+�+�@+�@+�@+�@+�@H:@+�@+�@+�@+�@+�@E@+�+�+�@+�@+�@+�@+�@�@+�@+�@+�@+�@+�@E@+�+�@+�+�@+�@+�@+�@+�@�@+�+�+�@+�@+�@+�@+�@F�@+�@+�@+�@+�@+�@E@+�+�+�+�+�+�+�@+�@+�@+�@+�@Ae@+�@+�@+�@+�@+�@E@+�+�+�@+�@+�@+�@+�@H�@+�@+�@+�@+�@+�@E@+�+�+�+�+�@+�@+�@+�@+�@Ez@+�@+�@+�@+�@+�@�@+�+�+�@+�@+�@+�@+�@H�@+�@+�@+�@+�@+�@�@+�,g+�,0+�,+�,+�,+�@+�@+�@,@,@Ez@,@,@,@,@,@�@,	,,
@,@,@,
@,@�~@,@,@,@,@,@�@,,#,,,@,@,@,@,@�@,@,@, @,!@,"@�@,$,*,%@,&@,'@,(@,)@E@,+@,,@,-@,.@,/@F�@,1,L,2,?,3,9,4@,5@,6@,7@,8@Ae@,:@,;@,<@,=@,>@�@,@,F,A@,B@,C@,D@,E@�@,G@,H@,I@,J@,K@��@,M,Z,N,T,O@,P@,Q@,R@,S@��@,U@,V@,W@,X@,Y@E@,[,a,\@,]@,^@,_@,`@�@,b@,c@,d@,e@,f@E@,h,�,i,~,j,w,k,q,l@,m@,n@,o@,p@F�@,r@,s@,t@,u@,v@E@@,x,y@,z@,{@,|@,}@�'@,,�,�,�,�@,�@,�@,�@,�@Ae@,�@,�@,�@,�@,�@�@,�,�,�@,�@,�@,�@,�@H:@,�@,�@,�@,�@,�@�@,�,�,�,�,�,�,�@,�@,�@,�@,�@�@,�@,�@,�@,�@,�@�@,�,�,�@,�@,�@,�@,�@�@,�@,�@,�@,�@,�@�@,�,�,�,�,�@,�@,�@,�@,�@�@,�@,�@,�@,�@,�@�@,�,�,�@,�@,�@,�@,�@H:@,�@,�@,�@,�@,�@�@,�.],�-�,�-.,�-,�,�,�,�@,�,�@,�@,�@,�@,�@�'@,�,�,�@,�@,�@,�@,�@F�@,�@,�@,�@,�@Ae@,�,�,�,�,�@,�@,�@,�@,�@A@,�@,�@,�@,�@,�@E@,�,�,�@,�@,�@,�@,�@E@,�@-@-@-@-@�@-- ----
-@-	@-
@-@-@�@-@-@-@-@-@E@---@-@-@-@-@��@-@-@-@-@-@Ez@-!@-"-(-#@-$@-%@-&@-'@F�@-)@-*@-+@-,@--@�@-/-f-0-K-1->-2-8-3@-4@-5@-6@-7@�@-9@-:@-;@-<@-=@�@-?-E-@@-A@-B@-C@-D@HG@-F@-G@-H@-I@-J@�@-L-Y-M-S-N@-O@-P@-Q@-R@HG@-T@-U@-V@-W@-X@E@-Z-`-[@-\@-]@-^@-_@H:@-a@-b@-c@-d@-e@E@-g-|-h-o@-i-j@-k@-l@-m@-n@E@-p-v-q@-r@-s@-t@-u@�@-w@-x@-y@-z@-{@�@-}-�@-~-@-�@-�@-�@-�@�@-�-�-�@-�@-�@-�@-�@E@-�@-�@-�@-�@-�@�@-�.-�-�-�-�-�-�-�-�-�@-�@-�@-�@-�@F�@-�@-�@-�@-�@-�@E@-�-�-�@-�@-�@-�@-�@�'@-�@-�@-�@-�@-�@�@-�-�-�-�-�@-�@-�@-�@-�@�@-�@-�@-�@-�@-�@E@-�-�-�@-�@-�@-�@-�@�@-�@-�@-�@-�@-�@�@-�-�-�-�-�-�-�@-�@-�@-�@-�@�@-�@-�@-�@-�@-�@�@-�-�-�@-�@-�@-�@-�@�@-�@-�@-�@-�@-�@H�@-�-�-�-�-�@-�@-�@-�@-�@H:@-�@-�@-�@-�@-�@H�@-�-�-�@-�@-�@-�@-�@�@-�@-�@-�@-�@.@E@..,....@..@.@.@.	@.
@�'@...
@.@.@.@.@�@.@.@.@.@.@E@.. @..@.@.@.@.@�@.!.&."@.#@.$@.%@E@.'@.(@.)@.*@.+@�@.-.B...5@./.0@.1@.2@.3@.4@Ae@.6.<.7@.8@.9@.:@.;@H:@.=@.>@.?@.@@.A@Ba@.C.P.D.J.E@.F@.G@.H@.I@Ae@.K@.L@.M@.N@.O@E@.Q.W.R@.S@.T@.U@.V@Ae@.X@.Y@.Z@.[@.\@E@.^/6._.�.`.�.a.|.b.o.c.i.d@.e@.f@.g@.h@Ba@.j@.k@.l@.m@.n@E@.p.v.q@.r@.s@.t@.u@H�@.w@.x@.y@.z@.{@H:@.}.�.~.�.@.�@.�@.�@.�@�@.�@.�@.�@.�@.�@E@.�.�.�@.�@.�@.�@.�@Ez@.�@.�@.�@.�@.�@�@.�.�.�.�.�.�.�@.�@.�@.�@.�@i�@.�@.�@.�@.�@.�@E@.�.�.�@.�@.�@.�@.�@E@.�@.�@.�@.�@.�@az@.�.�.�.�.�@.�@.�@.�@.�@�@.�@.�@.�@.�@.�@�'@.�.�.�@.�@.�@.�@.�@�@.�@.�@.�@.�@.�@@&@.�.�.�.�.�.�.�.�.�@.�@.�@.�@Ae@.�@.�@.�@.�@.�@E@.�.�.�@.�@.�@.�@.�@�@.�@.�@.�@.�@.�@�@.�.�@.�.�@.�@.�@.�@.�@�@.�.�.�@.�@.�@.�@.�@�@.�@.�@.�@.�@.�@�@///////@/@/@/@/@��@/	@/
@/@/@/
@�'@///@/@/@/@/@�@/@/@/@/@/@E@//)//#/@/@/ @/!@/"@E@/$@/%@/&@/'@/(@�@/*/0/+@/,@/-@/.@//@�@/1@/2@/3@/4@/5@�~@/7/�/8/i/9/T/:/G/;/A/<@/=@/>@/?@/@@Ae@/B@/C@/D@/E@/F@E@/H/N/I@/J@/K@/L@/M@�@/O@/P@/Q@/R@/S@E@/U/b/V/\/W@/X@/Y@/Z@/[@E@/]@/^@/_@/`@/a@E@@/c/d@/e@/f@/g@/h@�@/j/�/k/x/l/r/m@/n@/o@/p@/q@�@/s@/t@/u@/v@/w@�@/y//z@/{@/|@/}@/~@�@/�@/�@/�@/�@/�@�'@/�/�/�/�/�@/�@/�@/�@/�@E@/�@/�@/�@/�@/�@Ez@@/�/�@/�@/�@/�@/�@�@/�/�/�/�/�/�@/�/�@/�@/�@/�@/�@�@/�/�/�@/�@/�@/�@/�@�@/�@/�@/�@/�@/�@E@/�/�@/�/�@/�@/�@/�@/�@E@/�/�/�@/�@/�@/�@/�@A@/�@/�@/�@/�@/�@�@/�/�/�/�/�/�/�@/�@/�@/�@/�@Ae@/�@/�@/�@/�@/�@�@/�/�/�@/�@/�@/�@/�@�@/�@/�@/�@/�@/�@H�@/�/�/�/�/�@/�@/�@/�@/�@HG@/�@/�@/�@/�@/�@H�@/�/�/�@/�@/�@/�@/�@Ez@/�@/�@/�@/�@/�@E@/�3C/�1�00�00h0010000@00@0@0@0	@0
@E@000
@0@0@F�@0@0@0@0@0@�@00$000@0@0@0@0@Ae@0@0 @0!@0"@0#@E@0%0+0&@0'@0(@0)@0*@Ae@0,@0-@0.@0/@00@�@020M030@040:05@06@07@08@09@L�@0;@0<@0=@0>@0?@�@0A0G0B@0C@0D@0E@0F@��@0H@0I@0J@0K@0L@�@0N0[0O0U0P@0Q@0R@0S@0T@Ae@0V@0W@0X@0Y@0Z@�@0\0b0]@0^@0_@0`@0a@�@0c@0d@0e@0f@0g@E@0i0�0j00k0r0l@0m@0n@0o@0p@0q@Ae@0s0y0t@0u@0v@0w@0x@�@0z@0{@0|@0}@0~@E@0�0�0�0�0�@0�@0�@0�@0�@E@0�@0�@0�@0�@0�@E@0�0�0�@0�@0�@0�@0�@@&@0�@0�@0�@0�@0�@E@0�0�0�0�0�0�0�@0�@0�@0�@0�@�@0�@0�@0�@0�@0�@E@0�0�0�@0�@0�@0�@0�@�@0�@0�@0�@0�@0�@E@0�0�0�0�0�@0�@0�@0�@0�@��|�0�@0�@0�@0�@0�@E@0�0�0�@0�@0�@0�@0�@�@0�@0�@0�@0�@0�@Ae@0�1A0�1
0�0�0�0�0�0�0�@0�@0�@0�@0�@H:@0�@0�@0�@0�@0�@HG@0�0�0�@0�@0�@0�@0�@H�@0�@0�@0�@0�@0�@�@0�0�0�0�0�@0�@0�@0�@0�@A@0�@0�@0�@0�@0�@E@0�10�@1@1@1@1@H�@1@1@1@1@1	@�@11&111
11@1@1@1@1@�@1@1@1@1@1@Ae@11 1@1@1@1@1@HG@1!@1"@1#@1$@1%@Ae@1'141(1.1)@1*@1+@1,@1-@F�@1/@10@11@12@13@E@151;16@17@18@19@1:@�@1<@1=@1>@1?@1@@E@1B1y1C1^1D1Q1E1K1F@1G@1H@1I@1J@Ae@1L@1M@1N@1O@1P@�@1R1X1S@1T@1U@1V@1W@�@1Y@1Z@1[@1\@1]@�@1_1l1`1f1a@1b@1c@1d@1e@Ae@1g@1h@1i@1j@1k@�@1m1s1n@1o@1p@1q@1r@�@1t@1u@1v@1w@1x@�@1z1�1{1�1|1�1}@1~@1@1�@1�@�@1�@1�@1�@1�@1�@�@1�1�1�@1�@1�@1�@1�@�@1�@1�@1�@1�@1�@E@1�1�@1�1�@1�@1�@1�@1�@Ae@1�1�1�@1�@1�@1�@1�@�@1�@1�@1�@1�@1�@�@1�2q1�2	1�1�1�1�1�1�@1�1�@1�@1�@1�@1�@�@1�1�1�@1�@1�@1�@1�@�@1�@1�@1�@1�@1�@�@1�1�@1�1�@1�@1�@1�@1�@E@1�1�1�@1�@1�@1�@1�@A@1�@1�@1�@1�@1�@�@1�1�1�1�@1�1�@1�@1�@1�@1�@E@1�1�1�@1�@1�@1�@1�@�@1�@1�@1�@1�@1�@Ae@1�1�1�1�1�@1�@1�@1�@1�@Ae@1�@1�@1�@1�@1�@E@1�21�@1�@2@2@2@�@2@2@2@2@2@E@2
2:22%222
22@2@2@2@H:@2@2@2@2@2@�@222@2@2@2@2@�@2 @2!@2"@2#@2$@�@2&2-@2'2(@2)@2*@2+@2,@E@2.242/@20@21@22@23@�@25@26@27@28@29@E@2;2V2<2I2=2C2>@2?@2@@2A@2B@Ae@2D@2E@2F@2G@2H@E@2J2P2K@2L@2M@2N@2O@Ez@2Q@2R@2S@2T@2U@Ba@2W2d2X2^2Y@2Z@2[@2\@2]@N@2_@2`@2a@2b@2c@E@2e2k2f@2g@2h@2i@2j@�@2l@2m@2n@2o@2p@E@2r2�2s2�2t2�2u2�2v2|2w@2x@2y@2z@2{@Ae@2}@2~@2@2�@2�@E@2�2�2�@2�@2�@2�@2�@�@2�@2�@2�@2�@2�@�@2�2�2�2�2�@2�@2�@2�@2�@��@2�@2�@2�@2�@2�@�@2�2�2�@2�@2�@2�@2�@�@2�@2�@2�@2�@2�@E@2�2�2�2�2�2�2�@2�@2�@2�@2�@A@2�@2�@2�@2�@2�@�@2�2�2�@2�@2�@2�@2�@@&@2�@2�@2�@2�@2�@�@2�2�2�2�2�@2�@2�@2�@2�@�@2�@2�@2�@2�@2�@E@2�2�2�@2�@2�@2�@2�@F�@2�@2�@2�@2�@2�@E@2�32�2�2�2�@2�2�@2�@2�@2�@2�@E@2�2�2�@2�@2�@2�@2�@�@2�@2�@2�@2�@2�@E@2�32�2�2�@2�@2�@2�@E@3@3@3@3@3@�@333@3@3	@3
@3@�@3
@3@3@3@3@E@33.33!333@3@3@3@3@Ae@3@3@3@3@3 @�@3"3(3#@3$@3%@3&@3'@�@3)@3*@3+@3,@3-@�@3/3<303631@32@33@34@35@Ae@37@38@39@3:@3;@E@@3=3>@3?@3@@3A@3B@�@3D4�3E43F3�3G3~3H3c3I3V3J3P3K@3L@3M@3N@3O@�@3Q@3R@3S@3T@3U@�@3W3]3X@3Y@3Z@3[@3\@H:@3^@3_@3`@3a@3b@�@3d3q3e3k3f@3g@3h@3i@3j@E@3l@3m@3n@3o@3p@E@3r3x3s@3t@3u@3v@3w@�@3y@3z@3{@3|@3}@�@33�3�3�3�3�3�@3�@3�@3�@3�@E@3�@3�@3�@3�@3�@Ae@3�3�3�@3�@3�@3�@3�@�@3�@3�@3�@3�@3�@��@3�3�3�3�3�@3�@az@3�@3�@3�@3�@3�@�@3�3�3�@3�@3�@3�@3�@�@3�@3�@3�@3�@3�@E@3�3�3�3�3�3�3�3�3�@3�@3�@3�@3�@�@3�@3�@3�@3�@3�@E@3�3�3�@3�@3�@3�@3�@�@3�@3�@3�@3�@3�@E@3�3�3�3�3�@3�@3�@3�@3�@@&@3�@3�@3�@3�@3�@E@3�3�3�@3�@3�@3�@3�@�@3�@3�@3�@3�@H�@3�3�3�3�@3�3�@3�@3�@3�@3�@E@3�3�3�@3�@3�@3�@3�@H:@3�@3�@3�@3�@3�@Ba@44
444@4@4@4@4@Ae@4@4	@4
@4@4@E@444@4@4@4@4@@H:4@4@4@4@4@���44~44M44844+44%4 @4!@4"@4#@4$@Ae@4&@4'@4(@4)@4*@E@4,424-@4.@4/@40@41@�@43@44@45@46@47@�@494@@4:4;@4<@4=@4>@4?@�@4A4G4B@4C@4D@4E@4F@�@4H@4I@4J@4K@4L@E@4N4c4O4V@4P4Q@4R@4S@4T@4U@��@4W4]4X@4Y@4Z@4[@4\@�@4^@4_@4`@4a@4b@E@4d4q4e4k4f@4g@4h@4i@4j@�@4l@4m@4n@4o@4p@�@4r4x4s@4t@4u@4v@4w@H�@4y@4z@4{@4|@4}@�@44�4�4�4�@4�4�4�@4�@4�@4�@4�@Ae@4�@4�@4�@4�@4�@�@4�4�4�4�4�@4�@4�@4�@4�@Ae@4�@4�@4�@4�@4�@E@4�4�4�@4�@4�@4�@4�@H:@4�@4�@4�@4�@4�@E@4�4�4�4�4�4�4�@4�@4�@4�@4�@E@4�@4�@4�@4�@4�@�@4�4�4�@4�@4�@4�@4�@|@4�@4�@4�@4�@4�@E@4�4�4�4�4�@4�@4�@4�@4�@E@4�@4�@4�@4�@4�@HG@@4�4�@4�@4�@4�@4�@�6@4�5�4�5K4�54�4�4�4�4�4�4�@4�@4�@4�@4�@�@4�@4�@4�@4�@4�@�@4�4�4�@4�@4�@4�@4�@Ez@4�@4�@4�@4�@4�@��@4�54�54�@4�@4�@4�@5@Ae@5@5@5@5@5@H�@555	@5
@5@5@5
@�@5@5@5@5@5@E@55055#555@5@5@5@5@�@5@5@5 @5!@5"@E@5$5*5%@5&@5'@5(@5)@�@5+@5,@5-@5.@5/@E@515>525853@54@55@56@57@��@59@5:@5;@5<@5=@HG@5?5E5@@5A@5B@5C@5D@�@5F@5G@5H@5I@5J@E@5L5�5M5h5N5[5O5U5P@5Q@5R@5S@5T@H:@5V@5W@5X@5Y@5Z@E@5\5b5]@5^@5_@5`@5a@A@5c@5d@5e@5f@5g@H:@5i5v5j5p5k@5l@5m@5n@5o@�@5q@5r@5s@5t@5u@�@5w5}5x@5y@5z@5{@5|@A@5~@5@5�@5�@5�@�@5�5�5�5�5�5�5�@5�@5�@5�@5�@E@5�@5�@5�@5�@5�@E@5�5�5�@5�@5�@5�@5�@�@5�@5�@5�@5�@5�@E@5�5�5�5�5�@5�@5�@5�@5�@�@5�@5�@5�@5�@5�@E@5�5�5�@5�@5�@5�@5�@�@5�@5�@5�@5�@5�@�@5�65�5�5�5�5�5�5�5�5�@5�@5�@5�@5�@�@5�@5�@5�@5�@5�@E@5�@5�@5�@5�@5�@5�@�@5�5�@5�5�@5�@5�@5�@5�@E@5�5�5�@5�@5�@5�@5�@�@5�@5�@5�@5�@5�@E@5�65�5�5�5�5�@5�@5�@5�@5�@Ae@5�@5�@5�@5�@5�@�'@5�5�5�@5�@5�@5�@5�@�@5�@5�@6@6@6@E@66666@6@6@6	@6
@E@6@6
@6@6@6@E@666@6@6@6@6@�@6@6@6@6@6@E@66V6 6;6!6.6"6(6#@6$@6%@6&@6'@Ez@6)@6*@6+@6,@6-@Ae@6/6560@61@62@63@64@�@66@67@68@69@6:@�@6<6I6=6C6>@6?@6@@6A@6B@Ae@6D@6E@6F@6G@6H@E@6J6P6K@6L@6M@6N@6O@A@6Q@6R@6S@6T@6U@E@6W6r6X6e6Y6_6Z@6[@6\@6]@6^@�@6`@6a@6b@6c@6d@E@6f6l6g@6h@6i@6j@6k@�@6m@6n@6o@6p@6q@E@6s6�6t6z6u@6v@6w@6x@6y@�@6{@6|@6}@6~@6@�@6�6�6�@6�@6�@6�@6�@�@6�@6�@6�@6�@6�@�~@6�Pw6�Cq6�=6�9�6�86�7_6�6�6�6�6�6�6�6�6�6�6�@6�@6�@6�@6�@Ae@6�@6�@6�@6�@6�@H:@6�6�6�@6�@6�@6�@6�@A@6�@6�@6�@6�@6�@E@6�6�6�6�6�@6�@6�@6�@6�@E@6�@6�@6�@6�@6�@E@6�6�6�@6�@6�@6�@6�@A@6�@6�@6�@6�@6�@E@6�6�6�6�@6�6�@6�@6�@6�@E@6�6�6�@6�@6�@6�@6�@�@6�@6�@6�@6�@6�@E@6�6�6�6�6�@6�@6�@6�@6�@E@6�@6�@6�@6�@6�@E@6�6�6�@6�@6�@6�@6�@E@6�@6�@6�@6�@6�@E@6�746�76�7777@7@7@7@7@Ba@7@7@7	@7
@7@�@7
77@7@7@7@7@E@7@7@7@7@7@E@77'77!7@7@7@7@7 @E@7"@7#@7$@7%@7&@�~@7(7.7)@7*@7+@7,@7-@�@7/@70@71@72@73@�@757J767=@7778@79@7:@7;@7<@�@7>7D7?@7@@7A@7B@7C@�@7E@7F@7G@7H@7I@�@7K7X7L7R7M@7N@7O@7P@7Q@E@7S@7T@7U@7V@7W@�@@7Y7Z@7[@7\@7]@7^@�@7`7�7a7�7b7w7c7j7d@7e@7f@7g@7h@7i@Ae@7k7q7l@7m@7n@7o@7p@�@7r@7s@7t@7u@7v@E@7x7@7y7z@7{@7|@7}@7~@E@7�7�7�@7�@7�@7�@7�@�@7�@7�@7�@7�@7�@E@7�7�7�7�@7�7�@7�@7�@7�@7�@�@7�7�7�@7�@7�@7�@7�@�@7�@7�@7�@7�@7�@�@7�7�@7�7�@7�@7�@7�@7�@H:@7�7�7�@7�@7�@7�@7�@��@7�@7�@7�@7�@7�@E@7�7�7�7�7�7�@7�7�@7�@7�@7�@7�@�@@7�7�@7�@7�@7�@7�@�@7�7�7�7�7�@7�@7�@7�@7�@E@7�@7�@7�@7�@7�@�'@7�7�7�@7�@7�@7�@7�@E@7�@7�@7�@7�@7�@E@7�7�7�7�7�7�7�@7�@7�@7�@7�@Ae@7�@7�@7�@7�@7�@E@7�7�7�@7�@7�@7�@7�@�@7�@7�@7�@7�@7�@E@88
888@8@8@8@8@�@8@8	@8
@8@8@�@888@8@8@8@8@�@8@8@8@8@8@�@88�88�88S88888+8 8%8!@8"@8#@8$@E@8&@8'@8(@8)@8*@E@8,828-@8.@8/@80@81@�@83@84@85@86@87@H:@898F8:8@8;@8<@8=@8>@8?@�@8A@8B@8C@8D@8E@E@8G8M8H@8I@8J@8K@8L@�@8N@8O@8P@8Q@8R@E@8T8o8U8b8V8\8W@8X@8Y@8Z@8[@�@8]@8^@8_@8`@8a@�@8c8i8d@8e@8f@8g@8h@�@8j@8k@8l@8m@8n@E@8p8}8q8w8r@8s@8t@8u@8v@��@8x@8y@8z@8{@8|@�@8~8�8@8�@8�@8�@8�@�@8�@8�@8�@8�@8�@E@8�8�8�8�8�8�8�8�8�@8�@8�@8�@8�@�~@8�@8�@8�@8�@8�@E@8�8�8�@8�@8�@8�@8�@�@8�@8�@8�@8�@8�@E@8�8�8�8�8�@8�@8�@8�@8�@�@8�@8�@8�@8�@8�@|�@8�8�8�@8�@8�@8�@8�@�@8�@8�@8�@8�@8�@Ae@8�8�8�8�8�8�8�@8�@8�@8�@8�@Ae@8�@8�@8�@8�@8�@�'@8�8�8�@8�@8�@8�@8�@�@8�@8�@8�@8�@8�@E@8�8�8�8�8�@8�@8�@8�@8�@E@8�@8�@8�@8�@8�@H:@8�@8�@8�@8�@8�@8�@�@8�9Z8�9#8�98�98�8�8�@8�@8�@E@8�@8�@8�@9@9@HG@99	9@9@9@9@9@E@9
@9@9@9
@9@E@99999@9@9@9@E@9@9@9@9@9@H�@@99@9@9 @9!@9"@H�@9$9?9%929&9,9'@9(@9)@9*@9+@�@9-@9.@9/@90@91@��@939994@95@96@97@98@Ez@9:@9;@9<@9=@9>@�@9@9M9A9G9B@9C@9D@9E@9F@E@9H@9I@9J@9K@9L@�@9N9T9O@9P@9Q@9R@9S@Ez@9U@9V@9W@9X@9Y@E@9[9�9\9q9]9d@9^9_@9`@9a@9b@9c@E@9e9k9f@9g@9h@9i@9j@�@9l@9m@9n@9o@9p@E@9r9y@9s9t@9u@9v@9w@9x@�@9z9�9{@9|@9}@9~@9@�@9�@9�@9�@9�@9�@E@9�9�9�9�@9�9�@9�@9�@9�@9�@E@9�9�9�@9�@9�@9�@9�@�@9�@9�@9�@9�@9�@�@9�9�@9�9�@9�@9�@9�@9�@�@9�9�9�@9�@9�@9�@9�@�@9�@9�@9�@9�@9�@E@9�;j9�:�9�:9�9�9�9�9�9�9�9�9�@9�@9�@9�@9�@E@9�@9�@9�@9�@9�@HG@9�@9�@9�@9�@9�@9�@�@9�9�9�9�9�@9�@9�@9�@9�@�@9�@9�@9�@9�@9�@�@9�9�9�@9�@9�@9�@9�@�@9�@9�@9�@9�@9�@H�@9�:9�9�9�9�9�@9�@9�@9�@9�@�@9�@9�@9�@9�@9�@E@9�9�9�@9�@9�@9�@9�@E@9�@9�@9�@:@:@�@::::
:@:@:@:@:	@�@:@:@:
@:@:@E@:::@:@:@:@:@�@:@:@:@:@:@E@::U:::: :-:!:':"@:#@:$@:%@:&@�@:(@:)@:*@:+@:,@E@:.:4:/@:0@:1@:2@:3@�@:5@:6@:7@:8@:9@�@:;:H:<:B:=@:>@:?@:@@:A@�@:C@:D@:E@:F@:G@Ae@:I:O:J@:K@:L@:M@:N@�@:P@:Q@:R@:S@:T@�@:V:q:W:d:X:^:Y@:Z@:[@:\@:]@F�@:_@:`@:a@:b@:c@�@:e:k:f@:g@:h@:i@:j@�@:l@:m@:n@:o@:p@E@:r::s:y:t@:u@:v@:w@:x@Ae@:z@:{@:|@:}@:~@E@:�:�:�@:�@:�@:�@:�@�@:�@:�@:�@:�@:�@H�@:�:�:�:�:�:�:�:�:�:�:�@:�@:�@:�@:�@E@:�@:�@:�@:�@:�@��@:�:�:�@:�@:�@:�@:�@�@:�@:�@:�@:�@:�@E@:�:�:�:�:�@:�@:�@:�@Ae@:�@:�@:�@:�@:�@E@:�:�:�@:�@:�@:�@:�@�@:�@:�@:�@:�@:�@�'@:�:�:�:�:�:�:�@:�@:�@:�@:�@�@:�@:�@:�@:�@:�@H:@:�:�:�@:�@:�@:�@:�@Ez@:�@:�@:�@:�@:�@�@:�:�:�:�:�@:�@:�@:�@:�@�@:�@:�@:�@:�@:�@E@:�:�:�@:�@:�@:�@:�@�@:�@:�@:�@:�@:�@�@:�;3:�;:�;:�;;@;@;@;@;@H:@;@;@;@;	@;
@�@;;;
@;@;@;@;@�@;@;@;@;@;@E@;;&;; ;@;@;@;@;@F�@;!@;"@;#@;$@;%@Ae@;';-;(@;)@;*@;+@;,@�@;.@;/@;0@;1@;2@Ae@;4;O;5;B;6;<;7@;8@;9@;:@;;@Ae@;=@;>@;?@;@@;A@�@;C;I;D@;E@;F@;G@;H@�@;J@;K@;L@;M@;N@�'@;P;];Q;W;R@;S@;T@;U@;V@Ba@;X@;Y@;Z@;[@;\@F�@;^;d;_@;`@;a@;b@;c@�@;e@;f@;g@;h@;i@�@;k<D;l;�;m;�;n;�;o;|;p;v;q@;r@;s@;t@;u@F�@;w@;x@;y@;z@;{@E@@;};~@;@;�@;�@;�@F�@;�;�;�;�;�@;�@;�@;�@;�@�@;�@;�@;�@;�@;�@E@;�;�;�@;�@;�@;�@;�@�6@;�@;�@;�@;�@;�@Ez@;�;�;�;�;�;�;�@;�@;�@;�@;�@�@;�@;�@;�@;�@;�@E@;�;�;�@;�@;�@;�@;�@Ae@;�@;�@;�@;�@;�@�~@;�;�;�;�;�@;�@;�@;�@;�@E@;�@;�@;�@;�@;�@Ae@;�;�;�@;�@;�@;�@;�@�@;�@;�@;�@;�@;�@Ae@;�<
;�;�;�;�;�;�;�@;�@;�@;�@;�@��@;�@;�@;�@;�@;�@E@;�;�;�@;�@;�@;�@;�@�@;�@;�@;�@;�@;�@E@;�<;�;�;�@;�@;�@;�@;�@E@;�@;�@;�@;�@;�@�@<<<@<@<@<@<@�@<@<	@<
@<@<@E@<<)<<<<<@<@<@<@<@�@<@<@<@<@<@E@<<#<@<@< @<!@<"@H�@<$@<%@<&@<'@<(@E@<*<7<+<1<,@<-@<.@</@<0@�@<2@<3@<4@<5@<6@Ez@<8<><9@<:@<;@<<@<=@�@<?@<@@<A@<B@<C@H:@<E<�<F<}<G<b<H<U<I<O<J@<K@<L@<M@<N@Ba@<P@<Q@<R@<S@<T@Ae@<V<\<W@<X@<Y@<Z@<[@H:@<]@<^@<_@<`@<a@�@<c<p<d<j<e@<f@<g@<h@<i@Ae@<k@<l@<m@<n@<o@�@<q<w<r@<s@<t@<u@<v@�@<x@<y@<z@<{@<|@E@<~<�<<�<�@<�@<�@<�@<�@<�@�@<�<�<�@<�@<�@<�@<�@E@<�@<�@<�@<�@<�@E@<�<�<�<�<�@<�@<�@<�@<�@Ae@<�@<�@<�@<�@<�@HG@@<�<�@<�@<�@<�@<�@Ez@<�<�<�<�<�<�<�<�<�@<�@Ae@<�@<�@<�@<�@<�@�@@<�<�@<�@<�@<�@<�@�~@<�<�<�<�<�@<�@<�@<�@<�@�@<�@<�@<�@<�@<�@E@<�<�<�@<�@<�@<�@<�@H�@<�@<�@<�@<�@<�@�@<�<�<�<�@<�<�@<�@<�@<�@<�@H�@<�<�<�@<�@<�@<�@<�@�@<�@<�@<�@<�@<�@�@<�<�@<�<�@<�@<�@<�@<�@E@<�<�<�@<�@<�@<�@<�@�@<�@<�@<�@=@=@E@=@4=>�==�==n==7===	=@=
=@=@=
@=@=@�'@===@=@=@=@H�@=@=@=@=@=@Ae@==*==$=@= @=!@="@=#@H:@=%@=&@='@=(@=)@�@=+=1=,@=-@=.@=/@=0@Ae@=2@=3@=4@=5@=6@E@=8=S=9=F=:=@=;@=<@==@=>@=?@E@=A@=B@=C@=D@=E@E@=G=M=H@=I@=J@=K@=L@�@=N@=O@=P@=Q@=R@�@=T=a=U=[=V@=W@=X@=Y@=Z@�@=\@=]@=^@=_@=`@�@=b=h=c@=d@=e@=f@=g@�@=i@=j@=k@=l@=m@�@=o=�=p=�=q=~=r=x=s@=t@=u@=v@=w@Ae@=y@=z@={@=|@=}@�'@==�=�@=�@=�@=�@=�@E@=�@=�@=�@=�@=�@E@=�=�@=�=�@=�@=�@=�@=�@E@=�=�=�@=�@=�@=�@=�@H:@=�@=�@=�@=�@H @=�=�=�=�=�=�=�@=�@=�@=�@=�@H:@=�@=�@=�@=�@=�@�@=�=�=�@=�@=�@=�@=�@H:@=�@=�@=�@=�@=�@�@=�=�=�=�=�@=�@=�@=�@=�@E@=�@=�@=�@=�@=�@E@=�=�=�@=�@=�@=�@=�@�@=�@=�@=�@=�@=�@E@=�>:=�>=�=�=�=�@=�=�@=�@=�@=�@=�@E@@=�=�@=�@=�@=�@=�@E@=�=�=�=�=�@=�@=�@=�@=�@Ae@=�@=�@=�@=�@=�@E@=�=�=�@=�@=�@=�@=�@�@=�@=�@>@>@>@E@>>>>>>>@>@>	@>
@>@�@>
@>@>@>@>@Ae@>>>@>@>@>@>@�@>@>@>@>@>@E@> >->!>'>"@>#@>$@>%@>&@�S@>(@>)@>*@>+@>,@E@>.>4>/@>0@>1@>2@>3@�@>5@>6@>7@>8@>9@��@>;>k><>V>=>J>>>D>?@>@@>A@>B@>C@�@>E@>F@>G@>H@>I@H�@>K>P>L@>M@>N@>O@�S@>Q@>R@>S@>T@>U@E@>W>^@>X>Y@>Z@>[@>\@>]@H�@>_>e>`@>a@>b@>c@>d@HG@>f@>g@>h@>i@>j@H�@>l>�>m>z>n>t>o@>p@>q@>r@>s@�@>u@>v@>w@>x@>y@E@>{>�>|@>}@>~@>@>�@��@>�@>�@>�@>�@>�@�@>�>�>�>�>�@>�@>�@>�@>�@Ae@>�@>�@>�@>�@>�@E@>�>�>�@>�@>�@>�@>�@�@>�@>�@>�@>�@>�@E@>�?h>�?>�>�>�>�>�>�@>�>�@>�@>�@>�@>�@E@>�>�>�@>�@>�@>�@>�@E@>�@>�@>�@>�@>�@��@>�>�>�>�>�@>�@>�@>�@>�@H:@>�@>�@>�@>�@>�@E@>�>�>�@>�@>�@>�@>�@�@>�@>�@>�@>�@>�@E@>�>�>�>�@>�>�@>�@>�@>�@E@>�>�>�@>�@>�@>�@>�@�@>�@>�@>�@>�@>�@E@>�>�>�>�>�@>�@>�@>�@>�@Ae@>�@>�@>�@>�@>�@E@>�?>�@>�@>�@>�@>�@H:@?@?@?@?@?@�'@??2???	?@?
?@?@?
@?@?@�@???@?@?@?@?@H @?@?@?@?@?@�@??+??%? @?!@?"@?#@?$@��@?&@?'@?(@?)@?*@�@?,@?-@?.@?/@?0@?1@�@?3?N?4?A?5?;?6@?7@?8@?9@?:@Ez@?<@?=@?>@??@?@@�@?B?H?C@?D@?E@?F@?G@Ae@?I@?J@?K@?L@?M@�@?O?[?P?V?Q@?R@?S@?T@?U@�@?W@?X@?Y@?Z@H @?\?b?]@?^@?_@?`@?a@A@?c@?d@?e@?f@?g@�@?i?�?j?�?k?�?l?s@?m?n@?o@?p@?q@?r@�@?t?z?u@?v@?w@?x@?y@�@?{@?|@?}@?~@?@�@?�?�?�?�?�@?�@?�@?�@?�@�@?�@?�@?�@?�@?�@�@?�?�?�@?�@?�@?�@?�@F�@?�@?�@?�@?�@?�@E@?�?�?�?�?�?�?�@?�@?�@?�@?�@�@?�@?�@?�@?�@E@@?�?�@?�@?�@?�@?�@E@?�?�?�?�?�@?�@?�@?�@?�@�@?�@?�@?�@?�@?�@�@?�?�?�@?�@?�@?�@?�@�@?�@?�@?�@?�@?�@E@?�?�?�?�?�?�?�?�?�@?�@?�@?�@?�@Ba@?�@?�@?�@?�@?�@�~@?�?�?�@?�@?�@?�@?�@Ae@?�@?�@?�@?�@?�@�@?�?�?�?�?�@?�@?�@?�@?�@�6@?�@?�@?�@?�@?�@�@@?�?�@?�@?�@?�@?�@�@?�@?�@@@@@@@@@@@@@�@@@@@@	@@
@@@�@@
@@@@@@@@@@@��@@@@@@@@@@@F�@@@'@@!@@@@@@@@@ @E@@"@@#@@$@@%@@&@�@@(@.@)@@*@@+@@,@@-@�@@/@@0@@1@@2@@3@��@@5A�@6A@7@�@8@o@9@T@:@G@;@A@<@@=@@>@@?@@@@�@@B@@C@@D@@E@@F@E@@H@N@I@@J@@K@@L@@M@�@@O@@P@@Q@@R@@S@�@@U@b@V@\@W@@X@@Y@@Z@@[@E@@]@@^@@_@@`@@a@�@@c@i@d@@e@@f@@g@@h@H:@@j@@k@@l@@m@@n@HG@@p@�@q@~@r@x@s@@t@@u@@v@@w@E@@y@@z@@{@@|@@}@Ae@@@@�@@�@@�@@�@@�@�@@�@�@�@�@�@@�@@�@@�@@�@�@@�@@�@@�@@�@@�@HG@@�@�@�@@�@@�@@�@@�@�g@@�@@�@@�@@�@@�@E@@�@�@�@�@�@�@�@�@�@@�@@�@@�@@�@E@@�@@�@@�@@�@@�@E@@@�@�@@�@@�@@�@@�@E@@�@�@�@�@�@@�@@�@@�@@�@�@@�@@�@@�@@�@@�@E@@�@�@�@@�@@�@@�@@�@�@@�@@�@@�@@�@@�@E@@�@�@�@�@�@�@�@@�@@�@@�@@�@H�@@�@@�@@�@@�@@�@�@@@�@�@@�@@�@@�@@�@�@@�@�@�@�@�@@�@@�@@�@@�@Ae@@�@@�@@�@@�@@�@E@@�@�@�@@�@@�@@�@@�@E@@�@@�@A@A@A@�@AAgAA6AAAAAAA	@A
@A@A@A
@HG@A@A@A@A@A@Ae@A@A@A@A@A@A@Ba@AA)AA#A@A@A @A!@A"@H�@A$@A%@A&@A'@A(@�@A*A0A+@A,@A-@A.@A/@Ae@A1@A2@A3@A4@A5@E@A7ARA8AEA9A?A:@A;@A<@A=@A>@�@A@@AA@AB@AC@AD@E@AFALAG@AH@AI@AJ@AK@�@AM@AN@AO@AP@AQ@E@ASA`ATAZAU@AV@AW@AX@AY@Ae@A[@A\@A]@A^@A_@E@Aa@Ab@Ac@Ad@Ae@Af@�@AhA�AiA~AjAq@AkAl@Am@An@Ao@Ap@HG@ArAxAs@At@Au@Av@Aw@E@Ay@Az@A{@A|@A}@E@AA�A�A�A�@A�@A�@A�@A�@��@A�@A�@A�@A�@A�@Ae@A�A�A�@A�@A�@A�@A�@�@A�@A�@A�@A�@A�@�@A�A�A�A�A�A�A�@A�@A�@A�@A�@�@A�@A�@A�@A�@A�@E@@A�A�@A�@A�@A�@A�@E@A�A�@A�A�@A�@A�@A�@A�@��@A�A�A�@A�@A�@A�@A�@�@A�@A�@A�@A�@A�@F�@A�B�A�B5A�A�A�A�A�A�A�A�A�@A�@A�@A�@A�@E@A�@A�@A�@A�@A�@E@A�A�A�@A�@A�@A�@A�@Ae@A�@A�@A�@A�@A�@�'@A�A�A�A�A�@A�@A�@A�@A�@�@A�@A�@A�@A�@A�@E@A�A�A�@A�@A�@A�@A�@�@A�@A�@A�@A�@A�@E@A�BBB
BBB@B@B@B@B@�@B@B	@B
@B@B@E@BBB@B@B@B@B@Ez@B@B@B@B@B@E@BB(BB"B@B@B@B @B!@��@B#@B$@B%@B&@B'@E@B)B/B*@B+@B,@B-@B.@E@B0@B1@B2@B3@B4@E@B6BmB7BRB8BEB9B?B:
nB;
nB<
nB=
nB>
n�,
nB@
nBA
nBB
nBC
nBD
n��
nBFBLBG
nBH
nBI
nBJ
nBK
nAe
nBM
nBN
nBO
nBP
nBQ
n�
nBSB`BTBZBU
nBV
nBW
nBX
nBY
n k
nB[
nB\
nB]
nB^
nB_
n
�
nBaBgBb
nBc
nBd
nBe
nBf
n�n
nBh
nBi
nBj
nBk
nBl
n�}
nBnB�BoBv
nBpBq
nBr
nBs
nBt
nBu
n
�
nBwB}Bx
nBy
nBz
nB{
nB|
n
�
nB~
nB
nB�
nB�
nB�
n�K
nB�B�B�B�B�
nB�
nB�
nB�
nB�
nAe
nB�
nB�
nB�
nB�
nB�
n�u
nB�B�B�
nB�
nB�
nB�
nB�
n k
nB�
nB�
nB�
nB�
nB�
n
�
nB�CB�B�B�B�B�B�@B�B�@B�@B�@B�@B�@�'@B�B�B�@B�@B�@B�@B�@�@B�@B�@B�@B�@B�@�@B�B�B�B�B�@B�@B�@B�@B�@H:@B�@B�@B�@B�@B�@�@B�B�B�@B�@B�@B�@B�@�@B�@B�@B�@B�@B�@�@B�B�B�B�@B�B�@B�@B�@B�@B�@�@B�B�B�@B�@B�@B�@B�@E@B�@B�@B�@B�@B�@�@B�B�B�B�B�@B�@B�@B�@B�@H�@B�@B�@B�@B�@B�@�@B�B�B�@B�@B�@B�@B�@H:@B�@B�@B�@C@C@�@CC:CCCCCCC@C@C	@C
@C@��@C
@C@C@C@C@H�@CCC@C@C@C@C@H:@C@C@C@C@C@H:@C C-C!C'C"@C#@C$@C%@C&@Ae@C(@C)@C*@C+@C,@�@C.C4C/@C0@C1@C2@C3@H:@C5@C6@C7@C8@C9@�@C;CVC<CIC=CCC>@C?@C@@CA@CB@AeF�CD@CE@CF@CG@CH@H:@CJCPCK@CL@CM@CN@CO@�@CQ@CR@CS@CT@CU@HG@CWCdCXC^CY@CZ@C[@C\@C]@�@C_@C`@Ca@Cb@Cc@�6@CeCkCf@Cg@Ch@Ci@Cj@�@Cl@Cm@Cn@Co@Cp@�@CrI�CsF�CtE
CuD@CvC�CwC�CxC�CyC�CzC�C{@C|@C}@C~@C@�@C�@C�@C�@C�@C�@�@C�C�C�@C�@C�@C�@C�@�@C�@C�@C�@C�@C�@E@C�C�C�C�C�@C�@C�@C�@C�@Ez@C�@C�@C�@C�@C�@E@C�C�C�@C�@C�@C�@C�@H�@C�@C�@C�@C�@C�@�@C�C�C�C�C�C�C�@C�@C�@C�@Ez@C�@C�@C�@C�@C�@�@C�C�C�@C�@C�@C�@C�@�'@C�@C�@C�@C�@C�@E@C�C�C�C�C�@C�@C�@C�@C�@H:@C�@C�@C�@C�@C�@E@C�C�C�@C�@C�@C�@C�@Ae@C�@C�@C�@C�@C�@E@C�DC�C�C�C�C�C�C�@C�@C�@C�@��@C�@C�@C�@C�@C�@�@@C�C�@C�@C�@C�@C�@�@C�DC�DC�@C�@C�@D@D@E@D@D@D@D@D@�@D	DD
@D@D@D
@D@Ez@D@D@D@D@D@E@DD+DD$DDD@D@D@D@D@E@D@D @D!@D"@D#@E@@D%D&@D'@D(@D)@D*@E@D,D9D-D3D.@D/@D0@D1@D2@�'@D4@D5@D6@D7@D8@E@@D:D;@D<@D=@D>@D?@�6@DAD�DBDsDCDXDDDQDEDKDF@DG@DH@DI@DJ@E@DL@DM@DN@DO@DP@E@@DRDS@DT@DU@DV@DW@E@DYDfDZD`D[@D\@D]@D^@D_@�@Da@Db@Dc@Dd@De@E@DgDmDh@Di@Dj@Dk@Dl@H:@Dn@Do@Dp@Dq@Dr@�'@DtD�DuD�DvD|Dw@Dx@Dy@Dz@D{@�@D}@D~@D@D�@D�@�@@D�D�@D�@D�@D�@D�@�@D�D�D�D�D�@D�@D�@D�@D�@�~@D�@D�@D�@D�@D�@�@D�D�D�@D�@D�@D�@D�@Ae@D�@D�@D�@D�@D�@A@D�D�D�D�D�D�D�D�D�@D�@D�@D�@D�@H:@D�@D�@D�@D�@D�@�~@D�D�D�@D�@D�@D�@D�@E@D�@D�@D�@D�@D�@E@D�D�@D�D�@D�@D�@D�@D�@E@D�D�D�@D�@D�@D�@D�@E@D�@D�@D�@D�@D�@E@D�D�D�D�D�D�D�@D�@D�@D�@D�@Ez@D�@D�@D�@D�@D�@E@D�D�D�@D�@D�@D�@D�@H�@D�@D�@D�@D�@D�@E@D�ED�D�D�@D�@D�@D�@D�@��@D�@D�@D�@D�@D�@E@EEE@E@E@E@E@E@E@E	@E
@E@E@E@EE�EErEEAEE&EE@EE@E@E@E@E@E@EE E@E@E@E@E@E@E!@E"@E#@E$@E%@E@E'E4E(E.E)@E*@E+@E,@E-@�@E/@E0@E1@E2@E3@�@E5E;E6@E7@E8@E9@E:@�@E<@E=@E>@E?@E@@�@EBE]ECEPEDEJEE@EF@EG@EH@EI@�@EK@EL@EM@EN@EO@�@EQEWER@ES@ET@EU@EV@E@EX@EY@EZ@E[@E\@�@E^Ee@E_E`@Ea@Eb@Ec@Ed@�@EfElEg@Eh@Ei@Ej@Ek@�@Em@En@Eo@Ep@Eq@HG@EsE�EtE�EuE�EvE|Ew@Ex@Ey@Ez@E{@Ae@E}@E~@E@E�@E�@F�@E�E�E�@E�@E�@E�@E�@�@E�@E�@E�@E�@E�@E@E�E�E�E�E�@E�@E�@E�@E�@�@E�@E�@E�@E�@E�@Ez@E�E�E�@E�@E�@E�@E�@E@E�@E�@E�@E�@E�@H:@E�E�E�E�E�E�E�@E�@E�@E�@E@E�@E�@E�@E�@E�@E@E�E�E�@E�@E�@E�@E�@E@E�@E�@E�@E�@E�@�@E�E�@E�E�@E�@E�@E�@E�@�@E�E�E�@E�@E�@E�@E�@�@E�@E�@E�@E�@E�@�'@E�FDE�F
E�E�E�E�@E�E�@E�@E�@E�@E�@E@E�E�E�@E�@E�@E�@E�@�@E�@E�@E�@E�@E�@Ae@E�FE�E�E�@E�@E�@E�@E�@E@E�@E�@E�@E�@E�@Ae@FFF@F@F@F@F@Ba@F@F	@F
@F@F@E@FF)FFFFF@F@F@F@F@Ae@F@F@F@F@F@E@FF#F@F@F @F!@F"@E@F$@F%@F&@F'@F(@E@F*F7F+F1F,@F-@F.@F/@F0@H�@F2@F3@F4@F5@F6@@&@F8F>F9@F:@F;@F<@F=@�@F?@F@@FA@FB@FC@E@FEFsFFF[FGFN@FHFI@FJ@FK@FL@FM@E@FOFUFP@FQ@FR@FS@FT@Ae@FV@FW@FX@FY@FZ@�@F\FfF]F`F^@F_@��@Fa@Fb@Fc@Fd@Fe@E@FgFmFh@Fi@Fj@Fk@Fl@E@Fn@Fo@Fp@Fq@Fr@E@FtF�FuF|@FvFw@Fx@Fy@Fz@F{@E@F}F�F~@F@F�@F�@F�@Ae@F�@F�@F�@F�@F�@HG@F�F�F�F�F�@F�@F�@F�@F�@Ae@F�@F�@F�@F�@F�@E@F�F�F�@F�@F�@F�@F�@�@F�@F�@F�@F�@F�@Ez@F�HJF�GxF�GF�F�F�F�F�F�F�F�F�@F�@F�@F�@F�@�@F�@F�@F�@F�@F�@�@F�F�F�@F�@F�@F�@F�@�@F�@F�@F�@F�@F�@��@F�F�F�F�F�@F�@F�@F�@F�@�@F�@F�@F�@F�@F�@H:@@F�F�@F�@F�@F�@F�@Ez@F�F�F�F�F�F�F�@F�@F�@F�@F�@�@F�@F�@F�@F�@F�@E@F�F�F�@F�@F�@F�@�S@F�@F�@F�@F�@F�@E@F�GF�F�F�@F�@F�@F�@F�@az@F�@F�@F�@G@G@�@GG	G@G@G@G@G@�@G
@G@G@G
@G@�@GGAGG,GGGGG@G@G@G@G@Ez@G@G@G@G@G@�@G G&G!@G"@G#@G$@G%@�@G'@G(@G)@G*@G+@E@G-G4@G.G/@G0@G1@G2@G3@E@G5G;G6@G7@G8@G9@G:@A@G<@G=@G>@G?@G@@�@GBG]GCGPGDGJGE@GF@GG@GH@GI@�@GK@GL@GM@GN@GO@E@GQGWGR@GS@GT@GU@GV@�@GX@GY@GZ@G[@G\@E@G^GkG_GeG`@Ga@Gb@Gc@Gd@�<@Gf@Gg@Gh@Gi@Gj@E@GlGrGm@Gn@Go@Gp@Gq@�@Gs@Gt@Gu@Gv@Gw@�@GyG�GzG�G{G�G|G�G}G�G~@G@G�@G�@G�@E@G�@G�@G�@G�@G�@E@G�G�G�@G�@G�@G�@G�@��@G�@G�@G�@G�@G�@�Y@G�G�@G�G�@G�@G�@G�@G�@�@G�G�G�@G�@G�@G�@G�@|�@G�@G�@G�@G�@G�@F�@G�G�G�G�G�G�G�@G�@G�@G�@G�@�@G�@G�@G�@G�@G�@�@G�G�G�@G�@G�@G�@G�@�g@G�@G�@G�@G�@G�@�@G�G�G�G�G�@G�@G�@G�@G�@�@G�@G�@G�@G�@G�@E@G�G�G�@G�@G�@G�@G�@�@G�@G�@G�@G�@G�@E@G�HG�G�G�G�G�G�G�@G�@G�@G�@Ba@G�@G�@G�@G�@G�@H:@G�G�G�@G�@G�@G�@G�@�@G�@G�@G�@G�@G�@�@G�H@HH@H@H@H@H@�@HH
H@H	@H
@H@H@�@H@H@H@H@H@E@HH/HH"HHH@H@H@H@H@E@H@H@H@H @H!@�@H#H)H$@H%@H&@H'@H(@�@H*@H+@H,@H-@H.@E@H0H=H1H7H2@H3@H4@H5@H6@@&@H8@H9@H:@H;@H<@E@H>HDH?@H@@HA@HB@HC@�@HE@HF@HG@HH@HI@�@HKIHLH�HMH�HNHiHOH\HPHVHQ@HR@HS@HT@HU@E@HW@HX@HY@HZ@H[@�@H]HcH^@H_@H`@Ha@Hb@H:@Hd@He@Hf@Hg@Hh@�@HjHwHkHqHl@Hm@Hn@Ho@Hp@�@Hr@Hs@Ht@Hu@Hv@�@HxH~Hy@Hz@H{@H|@H}@�@H@H�@H�@H�@H�@E@H�H�H�H�H�H�H�@H�@H�@H�@H�@�@H�@H�@H�@H�@H�@�@H�H�H�@H�@H�@H�@H�@��@H�@H�@H�@H�@H�@�@H�H�H�H�H�@H�@H�@H�@H�@�@H�@H�@H�@H�@H�@@&@H�H�H�@H�@H�@H�@H�@E@H�@H�@H�@H�@H�@�@H�H�H�H�H�H�@H�H�@H�@H�@H�@H�@�@H�H�H�@H�@H�@H�@H�@E@H�@H�@H�@H�@H�@�@H�H�H�H�H�@H�@H�@H�@H�@E@H�@H�@H�@H�@H�@E@@H�H�@H�@H�@H�@H�@E@H�IH�H�H�H�H�@H�@H�@H�@H�@�@H�@H�@H�@H�@H�@�@H�H�H�@H�@H�@H�@H�@Ae@H�@H�@I@I@I@�@IIIII@I@I@I	@I
@�~@I@I
@I@I@I@Ae@III@I@I@I@�@I@I@I@I@I@�@II�IIPI I5I!I(@I"I#@I$@I%@I&@I'@E@I)I/I*@I+@I,@I-@I.@Ae@I0@I1@I2@I3@I4@E@I6ICI7I=I8@I9@I:@I;@I<@�@I>@I?@I@@IA@IB@�'@IDIJIE@IF@IG@IH@II@�@IK@IL@IM@IN@IO@�@IQIlIRI_ISIYIT@IU@IV@IW@IX@�@IZ@I[@I\@I]@I^@E@I`IfIa@Ib@Ic@Id@Ie@�@Ig@Ih@Ii@Ij@Ik@E@ImIzInItIo@Ip@Iq@Ir@Is@H:@Iu@Iv@Iw@Ix@Iy@Ae@I{I�I|@I}@I~@I@I�@Ae@I�@I�@I�@I�@I�@H:@I�I�I�I�I�I�I�I�I�@I�@I�@I�@I�@�@I�@I�@I�@I�@I�@E@I�I�I�@I�@I�@I�@I�@E@I�@I�@I�@I�@I�@�@I�I�I�I�I�@I�@I�@I�@I�@�@I�@I�@I�@I�@E@I�I�I�@I�@I�@I�@I�@�@I�@I�@I�@I�@I�@HG@I�I�I�I�I�I�I�@I�@I�@I�@I�@�@I�@I�@I�@I�@I�@E@I�I�I�@I�@I�@I�@I�@�@I�@I�@I�@I�@I�@E@I�I�I�I�I�@I�@I�@I�@I�@��@I�@I�@I�@I�@I�@E@I�I�I�@I�@I�@I�@I�@�@I�@I�@I�@I�@I�@�@I�M=I�K�I�J�I�JhI�J1I�JI�J	I�JI�@I�@J@J@J@�@J@J@J@J@J@�@J
JJ@J@J
@J@J@�@J@J@J@J@J@�@JJ$JJJ@J@J@J@J@H�@J@J @J!@J"@J#@E@J%J+J&@J'@J(@J)@J*@�@J,@J-@J.@J/@J0@��@J2JMJ3J@J4J:J5@J6@J7@J8@J9@�@J;@J<@J=@J>@J?@A@JAJGJB@JC@JD@JE@JF@�@JH@JI@JJ@JK@JL@Ae@JNJ[JOJUJP@JQ@JR@JS@JT@@&@JV@JW@JX@JY@JZ@HG@J\JbJ]@J^@J_@J`@Ja@�@Jc@Jd@Je@Jf@Jg@E@JiJ�JjJJkJxJlJrJm@Jn@Jo@Jp@Jq@Ae@Js@Jt@Ju@Jv@Jw@E@Jy@Jz@J{@J|@J}@J~@�@J�J�J�J�J�@J�@J�@J�@J�@Ae@J�@J�@J�@J�@J�@�~@J�J�J�@J�@J�@J�@J�@�@J�@J�@J�@J�@J�@E@J�J�J�J�@J�J�@J�@J�@J�@J�@E@J�J�J�@J�@J�@J�@J�@�@J�@J�@J�@J�@J�@E@J�J�J�J�J�@J�@J�@J�@J�@H:@J�@J�@J�@J�@J�@az@J�J�J�@J�@J�@J�@J�@�@J�@J�@J�@J�@J�@Ae@J�K;J�KJ�J�J�J�J�J�J�@J�@J�@J�@J�@Ae@J�@J�@J�@J�@J�@HG@J�J�J�@J�@J�@J�@J�@�@J�@J�@J�@J�@J�@E@J�J�J�J�J�@J�@J�@J�@J�@@&@J�@J�@J�@J�@J�@E@J�J�J�@J�@J�@J�@J�@�@J�@K@K@K@K@�@KK KKKK
K@K	@K
@K@K@H�@K@K@K@K@K@HG@KKK@K@K@K@K@��@K@K@K@K@K@HG@K!K.K"K(K#@K$@K%@K&@K'@Ae@K)@K*@K+@K,@K-@E@K/K5K0@K1@K2@K3@K4@�'@K6@K7@K8@K9@K:@E@K<KmK=KRK>KKK?KEK@@KA@KB@KC@KD@�@KF@KG@KH@KI@KJ@E@KL@KM@KN@KO@KP@KQ@�@KSK`KTKZKU@KV@KW@KX@KY@E@K[@K\@K]@K^@K_@��@KaKgKb@Kc@Kd@Ke@Kf@�@Kh@Ki@Kj@Kk@Kl@E@KnK�KoK|KpKvKq@Kr@Ks@Kt@Ku@H�@Kw@Kx@Ky@Kz@K{@E@K}K�K~@K@K�@K�@K�@��@K�@K�@K�@K�@K�@�'@K�K�@K�K�@K�@K�@K�@K�@E@K�K�K�@K�@K�@K�@K�@Ez@K�@K�@K�@K�@K�@��@K�LkK�LK�K�K�K�K�K�K�K�K�@K�@K�@K�@K�@H:@K�@K�@K�@K�@K�@Ez@K�K�K�@K�@K�@K�@K�@�@K�@K�@K�@K�@K�@�@K�K�K�K�K�@K�@K�@K�@E@K�@K�@K�@K�@K�@E@K�K�K�@K�@K�@K�@K�@�@K�@K�@K�@K�@K�@E@K�K�K�K�K�@K�@K�@K�@K�@K�@H:@K�K�K�@K�@K�@K�@K�@H:@K�@K�@K�@K�@K�@E@K�K�K�K�K�@K�@K�@K�@K�@E@K�@K�@K�@K�@K�@E@@K�K�@K�@K�@L@L@Ba@LL4LLLLLLL@L@L	@L
@L@�@L
@L@L@L@L@Ae@LLL@L@L@L@L@Ae@L@L@L@L@L@A@L L-L!L'L"@L#@L$@L%@L&@�@L(@L)@L*@L+@L,@Ba@@L.L/@L0@L1@L2@L3@E@L5LPL6LCL7L=L8@L9@L:@L;@L<@�@L>@L?@L@@LA@LB@E@LDLJLE@LF@LG@LH@LI@H:@LK@LL@LM@LN@LO@�@LQL^LRLXLS@LT@LU@LV@LW@�@LY@LZ@L[@L\@L]@E@L_LeL`@La@Lb@Lc@Ld@H:@Lf@Lg@Lh@Li@Lj@E@LlL�LmL�LnL�LoL|LpLvLq@Lr@Ls@Lt@Lu@@&@Lw@Lx@Ly@Lz@L{@E@L}L�L~@L@L�@L�@L�@Ae@L�@L�@L�@L�@L�@E@L�L�L�L�L�@L�@L�@L�@L�@H�@L�@L�@L�@L�@L�@E@L�L�L�@L�@L�@L�@L�@H:@L�@L�@L�@L�@L�@Ae@L�L�L�L�L�L�L�@L�@L�@L�@L�@@&@L�@L�@L�@L�@L�@H:@L�L�L�@L�@L�@L�@L�@E@L�@L�@L�@L�@L�@E@L�L�L�L�L�@L�@L�@L�@L�@Ae@L�@L�@L�@L�@L�@�@L�L�L�@L�@L�@L�@L�@�'@L�@L�@L�@L�@L�@��@L�ML�L�L�L�L�L�L�@L�@L�@L�@L�@Ba@L�@L�@L�@L�@L�@�@L�L�L�@L�@L�@L�@L�@H:@L�@L�@L�@L�@L�@�@L�ML�ML�@L�@L�@L�@L�@�@M@M@M@M@M@�@MMM@M	@M
@M@E@M
@M@M@M@M@�@MM.MM!MMM@M@M@M@M@Ae@M@M@M@M@M @E@M"M(M#@M$@M%@M&@M'@�'@M)@M*@M+@M,@M-@�@M/M6@M0M1@M2@M3@M4@M5@E@M7@M8@M9@M:@M;@M<@�@M>N�M?NM@M�MAMrMBMWMCMJ@MDME@MF@MG@MH@MI@E@MKMQML@MM@MN@MO@MP@�@MR@MS@MT@MU@MV@E@MXMeMYM_MZ@M[@M\@M]@M^@�@M`@Ma@Mb@Mc@Md@E@MfMlMg@Mh@Mi@Mj@Mk@�@Mm@Mn@Mo@Mp@Mq@�'@MsM�MtM�MuM{Mv@Mw@Mx@My@Mz@E@M|@M}@M~@M@M�@E@@M�M�@M�@M�@M�@M�@�@M�M�M�M�M�@M�@M�@M�@M�@�@M�@M�@M�@M�@M�@�@M�M�M�@M�@M�@M�@M�@H:@M�@M�@M�@M�@M�@�@M�M�M�M�M�M�@M�M�@M�@M�@M�@M�@�@M�M�M�@M�@M�@M�@M�@�@M�@M�@M�@M�@M�@�@M�M�M�M�M�@M�@M�@M�@M�@az@M�@M�@M�@M�@M�@�@M�M�M�@M�@M�@M�@M�@�@M�@M�@M�@M�@M�@Ae@M�M�M�M�M�M�M�@M�@M�@M�@M�@E@M�@M�@M�@M�@M�@�@M�M�M�@M�@M�@M�@M�@�@M�@M�@M�@M�@M�@�@M�M�M�M�M�@M�@M�@M�@M�@Ae@M�@M�@M�@M�@M�@HG@NNN@N@N@N@N@�@N@N@N	@N
@N@E@N
N{NNDNN)NNNNN@N@N@N@E@N@N@N@N@N@�@NN#N@N@N @N!@N"@�@N$@N%@N&@N'@N(@�'@N*N7N+N1N,@N-@N.@N/@N0@E@N2@N3@N4@N5@N6@HG@N8N>N9@N:@N;@N<@N=@�@N?@N@@NA@NB@NC@�@NEN`NFNSNGNMNH@NI@NJ@NK@NL@Ae@NN@NO@NP@NQ@NR@�~@NTNZNU@NV@NW@NX@NY@E@N[@N\@N]@N^@N_@�@NaNnNbNhNc@Nd@Ne@Nf@Ng@Ez@Ni@Nj@Nk@Nl@Nm@E@NoNuNp@Nq@Nr@Ns@Nt@�@Nv@Nw@Nx@Ny@Nz@E@N|N�N}N�N~N�NN�N�@N�@N�@N�@N�@�@N�@N�@N�@N�@N�@�@N�N�N�@N�@N�@N�@N�@�@N�@N�@N�@N�@N�@�@N�N�N�N�N�@N�@N�@N�@N�@Ae@N�@N�@N�@N�@N�@�@N�N�N�@N�@N�@N�@N�@�@N�@N�@N�@N�@N�@E@N�N�N�N�N�N�N�@N�@N�@N�@Ae@N�@N�@N�@N�@N�@�@N�N�N�@N�@N�@N�@N�@�@N�@N�@N�@N�@N�@E@N�N�N�N�N�@N�@N�@N�@N�@�@N�@N�@N�@N�@N�@|�@N�N�N�@N�@N�@N�@N�@�@N�@N�@N�@N�@N�@�@N�O�N�ONN�O#N�ON�N�N�N�N�@N�@N�@N�@N�@H�@N�@N�@N�@N�@N�@E@N�ON�@N�@N�@O@O@H:@O@O@O@O@O@�@O	OO
OO@O@O
@O@O@�@O@O@O@O@O@�@OOO@O@O@O@O@Ae@O@O@O @O!@O"@E@O$O9O%O,@O&O'@O(@O)@O*@O+@�@O-O3O.@O/@O0@O1@O2@HG@O4@O5@O6@O7@O8@�@O:OGO;OAO<@O=@O>@O?@O@@E@OB@OC@OD@OE@OF@�@@OHOI@OJ@OK@OL@OM@HG@OOO�OPOeOQOX@OROS@OT@OU@OV@OW@Ez@OYO_OZ@O[@O\@O]@O^@Ae@O`@Oa@Ob@Oc@Od@�@OfOsOgOmOh@Oi@Oj@Ok@Ol@Ae@On@Oo@Op@Oq@Or@Ae@OtOzOu@Ov@Ow@Ox@Oy@�@O{@O|@O}@O~@O@Ae@O�O�O�O�O�O�O�@O�@O�@O�@O�@�@O�@O�@O�@O�@O�@E@O�O�O�@O�@O�@O�@O�@Ae@O�@O�@O�@O�@O�@�@O�O�O�O�O�@O�@O�@O�@O�@�@O�@O�@O�@O�@O�@�@O�O�O�@O�@O�@O�@O�@�@O�@O�@O�@O�@O�@Ae@O�PO�O�O�O�O�O�O�O�O�@O�@O�@O�@O�@E@O�@O�@O�@O�@O�@�'@@O�O�@O�@O�@O�@O�@E@O�O�O�O�O�@O�@O�@O�@O�@�@O�@O�@O�@O�@O�@E@O�O�O�@O�@O�@O�@O�@E@O�@O�@O�@O�@O�@E@O�O�O�@@O�O�@O�@O�@O�@O�@E@O�PO�O�O�@O�@O�@O�@O�@�@O�@O�@O�@O�@P@F�@PPP@P@P@P@P@�@P	@P
@P@P@P
@�@PPFPP+PPPPP@P@P@P@P@@&@P@P@P@P@P@�@PP%P @P!@P"@P#@P$@az@P&@P'@P(@P)@P*@�@P,P9P-P3P.@P/@P0@P1@P2@��@P4@P5@P6@P7@P8@E@P:P@P;@P<@P=@P>@P?@�@PA@PB@PC@PD@PE@Ae@PGP\PHPO@PIPJ@PK@PL@PM@PN@�@PPPVPQ@PR@PS@PT@PU@Ae@PW@PX@PY@PZ@P[@�@P]PjP^PdP_@P`@Pa@Pb@Pc@E@Pe@Pf@Pg@Ph@Pi@�'@PkPqPl@Pm@Pn@Po@Pp@�l@Pr@Ps@Pt@Pu@Pv@�@Px]�PyW
PzS�P{R
P|QBP}P�P~P�PP�P�P�P�P�P�@P�@P�@P�@P�@Ez@P�@P�@P�@P�@P�@E@P�P�P�@P�@P�@P�@P�@HG@P�@P�@P�@P�@P�@E@P�@P�P�P�@P�@P�@P�@P�@@BaP�@P�@P�@P�@P�@E@P�P�P�P�P�P�P�@P�@P�@P�@P�@E@P�@P�@P�@P�@P�@�@P�P�P�@P�@P�@P�@P�@Ae@P�@P�@P�@P�@P�@�@P�P�P�P�P�@P�@P�@P�@P�@��@P�@P�@P�@P�@P�@Ae@P�P�P�@P�@P�@P�@P�@H:@P�@P�@P�@P�@P�@�'@P�QP�P�P�P�P�P�P�@P�@P�@P�@P�@�@P�@P�@P�@P�@P�@E@@P�P�@P�@P�@P�@P�@@&@P�QP�P�P�@P�@P�@P�@P�@�@P�@Q@Q@Q@Q@@&@QQQ@Q@Q@Q	@Q
@F�@Q@Q
@Q@Q@Q@�g@QQ'QQ QQQ@Q@Q@Q@Q@Ae@Q@Q@Q@Q@Q@�@@Q!Q"@Q#@Q$@Q%@Q&@�@Q(Q5Q)Q/Q*@Q+@Q,@Q-@Q.@�'@Q0@Q1@Q2@Q3@Q4@Ez@Q6Q<Q7@Q8@Q9@Q:@Q;@�@Q=@Q>@Q?@Q@@QA@��@QCQ�QDQpQEQUQFQNQGQHaz@QI@QJ@QK@QL@QM@F�@@QOQP@QQ@QR@QS@QT@�@QVQcQWQ]QX@QY@QZ@Q[@Q\@H�@Q^@Q_@Q`@Qa@Qb@Ae@QdQjQe@Qf@Qg@Qh@Qi@H:@Qk@Ql@Qm@Qn@Qo@E@QqQ�QrQQsQyQt@Qu@Qv@Qw@Qx@Ae@Qz@Q{@Q|@Q}@Q~@�@Q�Q�Q�@Q�@Q�@Q�@Q�@F�@Q�@Q�@Q�@Q�@Q�@�@Q�Q�Q�Q�Q�@Q�@Q�@Q�@Q�@�@Q�@Q�@Q�@Q�@Q�@E@@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�@�'@Q�Q�@Q�Q�@Q�@Q�@Q�@Q�@�@Q�Q�Q�@Q�@Q�@Q�@Q�@H�@Q�@Q�@Q�@Q�@Q�@Ae@Q�Q�Q�Q�Q�Q�Q�@Q�@Q�@Q�@Q�@F�@Q�@Q�@Q�@Q�@Q�@H�@Q�Q�Q�@Q�@Q�@Q�@Q�@�@Q�@Q�@Q�@Q�@Q�@��@Q�Q�Q�Q�Q�@Q�@Q�@Q�@Q�@Ez@Q�@Q�@Q�@Q�@Q�@E@Q�RQ�@R@R@R@R@H:@R@R@R@R@R	@|�@RR�RRuR
R>RR)RRRRR@R@R@R@R@�@R@R@R@R@R@�@RR#R@R@R @R!@R"@Ae@R$@R%@R&@R'@R(@E@R*R1@R+R,@R-@R.@R/@R0@Ae@R2R8R3@R4@R5@R6@R7@F�@R9@R:@R;@R<@R=@�@R?RZR@RMRARGRB@RC@RD@RE@RF@�@RH@RI@RJ@RK@RL@E@RNRTRO@RP@RQ@RR@RS@�@RU@RV@RW@RX@RY@F�@R[RhR\RbR]@R^@R_@R`@Ra@��@Rc@Rd@Re@Rf@Rg@E@RiRoRj@Rk@Rl@Rm@Rn@��@Rp@Rq@Rr@Rs@Rt@E@RvR�RwR�RxR�RyRRz@R{@R|@R}@R~@Ae@R�@R�@R�@R�@R�@E@R�R�R�@R�@R�@R�@R�@A@R�@R�@R�@R�@R�@@&@R�R�R�R�R�@R�@R�@R�@R�@Ae@R�@R�@R�@R�@R�@F�@R�R�R�@R�@R�@R�@R�@�@R�@R�@R�@R�@R�@A@R�R�R�R�R�R�R�@R�@R�@R�@R�@Ae@R�@R�@R�@R�@R�@�@R�R�R�@R�@R�@R�@R�@E@R�@R�@R�@R�@R�@�@R�R�R�R�R�@R�@R�@R�@R�@Ae@R�@R�@R�@R�@R�@�@R�R�R�@R�@R�@R�@R�@�@R�@R�@R�@R�@R�@�@R�SNR�SR�SR�R�R�R�R�@R�@R�@R�@R�@�@R�@R�@R�@R�@R�@�@R�R�R�@R�@R�@R�@R�@�@R�@R�@R�@S@S@�@SSSS
S@S@S@S@S	@��@S@S@S
@S@S@�@SSS@S@S@S@S@�@S@S@S@S@S@�@SS3SS&@S S!@S"@S#@S$@S%@E@S'S-S(@S)@S*@S+@S,@�@S.@S/@S0@S1@S2@E@S4SAS5S;S6@S7@S8@S9@S:@E@S<@S=@S>@S?@S@@Ae@SBSHSC@SD@SE@SF@SG@HG@SI@SJ@SK@SL@SM@E@SOS�SPSeSQSX@SRSS@ST@SU@SV@SW@�@SYS_SZ@S[@S\@S]@S^@H:@S`@Sa@Sb@Sc@Sd@�@SfSsSgSmSh@Si@Sj@Sk@Sl@Ae@Sn@So@Sp@Sq@Sr@E@StSzSu@Sv@Sw@Sx@Sy@H:@S{@S|@S}@S~@S@�@S�S�S�S�S�S�S�@S�@S�@S�@S�@E@S�@S�@S�@S�@S�@�@S�S�S�@S�@S�@S�@S�@H:@S�@S�@S�@S�@S�@�@S�S�S�S�S�@S�@S�@S�@S�@H:@S�@S�@S�@S�@S�@E@S�S�S�@S�@S�@S�@S�@�@S�@S�@S�@S�@S�@E@S�U_S�T�S�T#S�S�S�S�S�S�S�S�S�@S�@S�@S�@S�@�@S�@S�@S�@S�@S�@H�@S�S�S�@S�@S�@S�@S�@E@S�@S�@S�@S�@S�@E@S�S�@S�S�@S�@S�@S�@S�@H�@S�S�S�@S�@S�@S�@S�@E@S�@S�@S�@S�@S�@�@S�TS�S�S�S�S�@S�@S�@S�@S�@E@S�@S�@S�@S�@S�@��@S�TS�@S�@S�@T@T@�@T@T@T@T@T@�@T	TT
TT@T@T
@T@T@�@T@T@T@T@T@E@TTT@T@T@T@T@�@T@T@T @T!@T"@�@T$T[T%T@T&T3T'T-T(@T)@T*@T+@T,@Ba@T.@T/@T0@T1@T2@�@T4T:T5@T6@T7@T8@T9@�@T;@T<@T=@T>@T?@E@TATNTBTHTC@TD@TE@TF@TG@Ae@TI@TJ@TK@TL@TM@�@TOTUTP@TQ@TR@TS@TT@E@TV@TW@TX@TY@TZ@@&@T\TqT]Td@T^T_@T`@Ta@Tb@Tc@�@TeTkTf@Tg@Th@Ti@Tj@@&@Tl@Tm@Tn@To@Tp@�@TrTTsTyTt@Tu@Tv@Tw@Tx@�@Tz@T{@T|@T}@T~@�@@T�T�@T�@T�@T�@T�@�@T�T�T�T�T�T�T�T�T�T�T�@T�@T�@T�@T�@E@T�@T�@T�@T�@T�@E@T�T�T�@T�@T�@T�@T�@�@T�@T�@T�@T�@T�@E@T�T�T�T�T�@T�@T�@T�@T�@Ba@T�@T�@T�@T�@T�@E@T�T�T�@T�@T�@T�@T�@�@T�@T�@T�@T�@T�@E@T�T�T�T�T�T�T�@T�@T�@T�@T�@Ae@T�@T�@T�@T�@T�@E@T�T�T�@T�@T�@T�@T�@A@T�@T�@T�@T�@T�@�@T�T�T�T�T�@T�@T�@T�@T�@Ez@T�@T�@T�@T�@T�@�@T�T�T�@T�@T�@T�@T�@�@T�@T�@T�@T�@T�@�@T�U.T�UT�UT�UT�@T�@T�@T�@T�@Ez@U@U@U@U@U@�@UU
U@U	@U
@U@U@�@U@U@U@U@U@E@UU!UUU@U@U@U@U@H�@U@U@U@U@U @Ae@U"U(U#@U$@U%@U&@U'@H:@U)@U*@U+@U,@U-@�@U/UDU0U7@U1U2@U3@U4@U5@U6@�@U8U>U9@U:@U;@U<U=@�[
��U?@U@@UA@UB@UC@�@UEURUFULUG@UH@UI@UJ@UK@Ae@UM@UN@UO@UP@UQ@�6@USUYUT@UU@UV@UW@UX@Ae@UZ@U[@U\@U]@U^@�@U`V1UaU�UbU�UcUxUdUqUeUkUf@Ug@Uh@Ui@Uj@E@Ul@Um@Un@Uo@Up@H:@@UrUs@Ut@Uu@Uv@Uw@�@UyU�UzU�U{@U|@U}@U~@U@Ae@U�@U�@U�@U�@U�@�@U�U�U�@U�@U�@U�@U�@�@U�@U�@U�@U�@U�@�g@U�U�U�U�U�U�U�@U�@U�@U�@U�@E@U�@U�@U�@U�@U�@HG@U�U�U�@U�@U�@U�@U�@�@U�@U�@U�@U�@��@U�U�U�U�U�@U�@U�@U�@U�@F�@U�@U�@U�@U�@U�@�@U�U�U�@U�@U�@U�@U�@�'@U�@U�@U�@U�@U�@E@U�VU�U�U�U�U�U�U�@U�@U�@U�@U�@�@U�@U�@U�@U�@U�@E@U�U�U�@U�@U�@U�@U�@�@U�@U�@U�@U�@U�@�@U�U�U�U�U�@U�@U�@U�@U�@M�@U�@U�@U�@U�@U�@�@U�U�U�@U�@U�@U�@U�@�@U�@U�@U�@U�@V@�@VVVVVV	V@V@V@V@E@V
@V@V@V
@V@�@VVV@V@V@V@V@H:@V@V@V@V@V@HG@VV$@VV@V @V!@V"@V#@E@V%V+V&@V'@V(@V)@V*@�@V,@V-@V.@V/@V0@E@V2V�V3VjV4VOV5VBV6V<V7@V8@V9@V:@V;@�@V=@V>@V?@V@@VA@E@VCVIVD@VE@VF@VG@VH@E�@VJ@VK@VL@VM@VN@HG@VPV]VQVWVR@VS@VT@VU@VV@�@VX@VY@VZ@V[@V\@H�@V^VdV_@V`@Va@Vb@Vc@F�@Ve@Vf@Vg@Vh@Vi@HG@VkV�VlVyVmVsVn@Vo@Vp@Vq@Vr@HG@Vt@Vu@Vv@Vw@Vx@E@VzV�V{@V|@V}@V~@V@A@V�@V�@V�@V�@V�@�@V�V�V�V�V�@V�@V�@V�@V�@�@V�@V�@V�@V�@V�@Ae@V�V�V�@V�@V�@V�@V�@Ae@V�@V�@V�@V�@V�@�@V�V�V�V�V�V�V�V�V�@V�@V�@V�@V�@E@V�@V�@V�@V�@V�@M@V�V�V�@V�@V�@V�@V�@�@V�@V�@V�@V�@V�@E@V�V�V�V�V�@V�@V�@V�@V�@H:@V�@V�@V�@V�@V�@�@V�V�V�@V�@V�@V�@V�@�@V�@V�@V�@V�@V�@�@V�V�V�V�@V�V�@V�@V�@V�@V�@�@V�V�V�@V�@V�@V�@V�@�@V�@V�@V�@V�@V�@�@V�V�V�V�V�@V�@V�@V�@V�@�@V�@V�@V�@V�@V�@�'@V�WV�@W@W@W@W@�@W@W@W@W@W	@F�@WZSWX�W
W�WWpWWEWW*WWWWW@W@W@W@W@��@W@W@W@W@W@��@WW%W @W!@W"@W#@W$@H:@W&@W'@W(@W)@E@W+W8W,W2W-@W.@W/@W0@W1@�@W3@W4@W5@W6@W7@H�@W9W?W:@W;@W<@W=@W>@��@W@@WA@WB@WC@WD@H�@WFWUWGWN@WHWI@WJ@WK@WL@WM@�@@WOWP@WQ@WR@WS@WT@�'@WVWcWWW]WX@WY@WZ@W[@W\@Ae@W^@W_@W`@Wa@Wb@�'@WdWjWe@Wf@Wg@Wh@Wi@�@Wk@Wl@Wm@Wn@Wo@�@WqW�WrW�WsW�WtWzWu@Wv@Ww@Wx@Wy@E@W{@W|@W}@W~@W@�'@W�W�W�@W�@W�@W�@W�@�@W�@W�@W�@W�@W�@E@W�W�W�W�W�@W�@W�@W�@W�@HG@W�@W�@W�@W�@W�@E@W�W�W�@W�@W�@W�@W�@�@W�@W�@W�@W�@W�@az@W�W�W�W�W�W�W�@W�@W�@W�@W�@�@W�@W�@W�@W�@W�@�@W�W�W�@W�@W�@W�@W�@�@W�@W�@W�@W�@W�@az@W�W�@W�W�@W�@W�@W�@W�@Ae@W�W�W�@W�@W�@W�@W�@�@W�@W�@W�@W�@W�@�@W�X=W�XW�W�W�W�@W�W�@W�@W�@W�@W�@E@W�W�W�@W�@W�@W�@W�@�@W�@W�@W�@W�@W�@HG@W�W�@W�W�@W�@W�@W�@W�@E@W�XW�@W�@W�@W�@W�@�'@X@X@X@X@X@H:@XX"XXX	XX
@X@X@X
@X@HG@X@X@X@X@X@E@XXX@X@X@X@X@H�@X@X@X@X @X!@Ae@X#X0X$X*X%@X&@X'@X(@X)@az@X+@X,@X-@X.@X/@�@X1X7X2@X3@X4@X5@X6@@&@X8@X9@X:@X;@X<@Ae@X>XuX?XZX@XMXAXGXB@XC@XD@XE@XF@�@XH@XI@XJ@XK@XL@E@XNXTXO@XP@XQ@XR@XS@�@XU@XV@XW@XX@XY@H�@X[XhX\XbX]@X^@X_@X`@Xa@�@Xc@Xd@Xe@Xf@Xg@�@XiXoXj@Xk@Xl@Xm@Xn@�@Xp@Xq@Xr@Xs@Xt@H:@XvX�XwX�XxX~Xy@Xz@X{@X|@X}@�@X@X�@X�@X�@X�@Ae@X�X�X�@X�@X�@X�@X�@�@X�@X�@X�@X�@X�@H�@X�X�X�X�X�@X�@X�@X�@X�@F�@X�@X�@X�@X�@X�@E@X�X�X�@X�@X�@X�@X�@�@X�@X�@X�@X�@X�@E@X�Y�X�YX�X�X�X�X�X�X�X�X�@X�@X�@X�@X�@E@X�@X�@X�@X�@X�@H:@X�X�X�@X�@X�@X�@X�@�@X�@X�@X�@X�@X�@�@X�X�X�X�X�@X�@X�@X�@X�@��@X�@X�@X�@X�@X�@E@X�X�X�@X�@X�@X�@X�@H:@X�@X�@X�@X�@X�@�@X�X�X�X�@X�X�@X�@X�@X�@X�@�@X�X�X�@X�@X�@X�@X�@�@X�@X�@X�@X�@X�@E@X�Y
X�YX�@Y@Y@Y@Y@�~@Y@Y@Y@Y@Y	@E@YYY@Y
@Y@Y@Y@�'@Y@Y@Y@Y@Y@H�@YYOYY4YY'YY!Y@Y@Y@Y@Y @Ae@Y"@Y#@Y$@Y%@Y&@E@Y(Y.Y)@Y*@Y+@Y,@Y-@�@Y/@Y0@Y1@Y2@Y3@|�@Y5YBY6Y<Y7@Y8@Y9@Y:@Y;@H:@Y=@Y>@Y?@Y@@YA@�@YCYIYD@YE@YF@YG@YH@F�@YJ@YK@YL@YM@YN@�@YPYkYQY^YRYXYS@YT@YU@YV@YW@F�@YY@YZ@Y[@Y\@Y]@H�@Y_YeY`@Ya@Yb@Yc@Yd@�@Yf@Yg@Yh@Yi@Yj@E@YlYyYmYsYn@Yo@Yp@Yq@Yr@Ba@Yt@Yu@Yv@Yw@Yx@E@YzY�Y{@Y|@Y}@Y~@Y@E@Y�@Y�@Y�@Y�@Y�@E@Y�Y�Y�Y�Y�Y�Y�Y�@Y�Y�@Y�@Y�@Y�@Y�@�~@Y�Y�Y�@Y�@Y�@Y�@Y�@E@Y�@Y�@Y�@Y�@Y�@�@Y�Y�Y�Y�Y�@Y�@Y�@Y�@Y�@|�@Y�@Y�@Y�@Y�@Y�@�@Y�@Y�@Y�@Y�@Y�@Y�@H:@Y�Y�Y�Y�Y�Y�Y�@Y�@Y�@Y�@Y�@Ez@Y�@Y�@Y�@Y�@Y�@�@Y�Y�Y�@Y�@Y�@Y�@Y�@�@Y�@Y�@Y�@Y�@Y�@�@Y�Y�Y�Y�Y�@Y�@Y�@Y�@Y�@F�@Y�@Y�@Y�@Y�@Y�@E@Y�Y�Y�@Y�@Y�@Y�@Y�@�@Y�@Y�@Y�@Y�@Y�@�@Y�Z"Y�ZY�Y�Y�Y�Y�@Y�@Y�@Y�@Y�@H�@Y�@Y�@Y�@Y�@Y�@�@Y�ZY�@Y�@Y�@Y�@Z@�@Z@Z@Z@Z@Z@E@ZZZ	ZZ
@Z@Z@Z
@Z@Ae@Z@Z@Z@Z@Z@�@ZZZ@Z@Z@Z@Z@�@Z@Z@Z@Z @Z!@�@Z#Z>Z$Z1Z%Z+Z&@Z'@Z(@Z)@Z*@�@Z,@Z-@Z.@Z/@Z0@E@Z2Z8Z3@Z4@Z5@Z6@Z7@�@Z9@Z:@Z;@Z<@Z=@�@Z?ZF@Z@ZA@ZB@ZC@ZD@ZE@�@ZGZMZH@ZI@ZJ@ZK@ZL@�@ZN@ZO@ZP@ZQ@ZR@H�@ZT[�ZU[ZVZ�ZWZ�ZXZmZYZ`@ZZZ[@Z\@Z]@Z^@Z_@E@ZaZgZb@Zc@Zd@Ze@Zf@Ae@Zh@Zi@Zj@Zk@Zl@�@ZnZu@ZoZp@Zq@Zr@Zs@Zt@E@ZvZ|Zw@Zx@Zy@Zz@Z{@��@Z}@Z~@Z@Z�@Z�@E@Z�Z�Z�Z�@Z�Z�@Z�@Z�@Z�@Z�@F�@Z�Z�Z�@Z�@Z�@Z�@Z�@�@Z�@Z�@Z�@Z�@Z�@�6@Z�Z�@Z�Z�@Z�@Z�@Z�@Z�@�@Z�Z�Z�@Z�@Z�@Z�@Z�@�@Z�@Z�@Z�@Z�@Z�@H�@Z�Z�Z�Z�Z�Z�@Z�Z�@Z�@Z�@Z�@Z�@H�@Z�Z�Z�@Z�@Z�@Z�@Z�@�'@Z�@Z�@Z�@Z�@Z�@E@Z�Z�Z�Z�Z�@Z�@Z�@Z�@Z�@@&@Z�@Z�@Z�@Z�@Z�@�@Z�Z�Z�@Z�@Z�@Z�@Z�@�@Z�@Z�@Z�@Z�@Z�@H:@Z�Z�Z�Z�Z�Z�Z�@Z�@Z�@Z�@Z�@��@Z�@Z�@Z�@Z�@Z�@E@Z�Z�Z�@Z�@Z�@Z�@Z�@�@Z�@Z�@Z�@Z�@Z�@�@Z�[@Z�Z�@Z�@[@[@[@�@[[
[@[@[@[@[	@�@[@[@[
@[@[@li@[[z[[C[[([[@[[@[@[@[@[@E@[["[@[@[@[ @[!@�@[#@[$@[%@[&@['@H�@[)[6[*[0[+@[,@[-@[.@[/@Ae@[1@[2@[3@[4@[5@�~@[7[=[8@[9@[:@[;@[<@�@[>@[?@[@@[A@[B@E@[D[_[E[R[F[L[G@[H@[I@[J@[K@�@[M@[N@[O@[P@[Q@E@[S[Y[T@[U@[V@[W@[X@�@[Z@[[@[\@[]@[^@|�@[`[m[a[g[b@[c@[d@[e@[f@��@[h@[i@[j@[k@[l@H�@[n[t[o@[p@[q@[r@[s@�@[u@[v@[w@[x@[y@H�@[{[�[|[�[}[�[~[�[@[�@[�@[�@[�@E@[�@[�@[�@[�@[�@�@[�[�[�@[�@[�@[�@[�@�@[�@[�@[�@[�@[�@�@[�[�[�[�[�@[�@[�@[�@[�@�@[�@[�@[�@[�@[�@�@[�[�[�@[�@[�@[�@[�@E@[�@[�@[�@[�@[�@E@[�[�[�[�[�[�[�@[�@[�@[�@[�@H @[�@[�@[�@[�@[�@E@[�[�[�@[�@[�@[�@[�@�'@[�@[�@[�@[�@[�@E@[�[�[�[�[�@[�@[�@[�@[�@Ae@[�@[�@[�@[�@[�@Ae@[�[�[�@[�@[�@[�@[�@�@[�@[�@[�@[�@[�@�@[�\�[�\Z[�\#[�\[�[�[�[�[�@[�@[�@[�@[�@�@[�@[�@[�@[�@[�@�@[�\[�@[�@[�@\@\@�@\@\@\@\@\@Ae@\	\\
\\@\@\
@\@\@�@\@\@\@\@\@HG@\\\@\@\@\@\@�@\@\@\ @\!@\"@E@\$\?\%\2\&\,\'@\(@\)@\*@\+@HG@\-@\.@\/@\0@\1@H:@\3\9\4@\5@\6@\7@\8@�@\:@\;@\<@\=@\>@�@\@\M\A\G\B@\C@\D@\E@\F@Ae@\H@\I@\J@\K@\L@E@\N\T\O@\P@\Q@\R@\S@�@\U@\V@\W@\X@\Y@�@\[\�\\\q\]\d@\^\_@\`@\a@\b@\c@A@\e\k\f@\g@\h@\i@\j@�@\l@\m@\n@\o@\p@�@\r\y@\s\t@\u@\v@\w@\x@H:@\z\�\{@\|@\}@\~@\@H:@\�@\�@\�@\�@\�@E@\�\�\�\�@\�\�@\�@\�@\�@\�@E@\�\�\�@\�@\�@\�@\�@H�@\�@\�@\�@\�@\�@E@\�\�\�\�\�@\�@\�@\�@\�@�@\�@\�@\�@\�@\�@�@\�\�\�@\�@\�@\�@\�@Ae@\�@\�@\�@\�@\�@A@\�]!\�\�\�\�\�\�\�\�\�@\�@\�@\�@\�@F�@\�@\�@\�@\�@\�@�@\�\�\�@\�@\�@\�@\�@Ae@\�@\�@\�@\�@\�@��@\�\�\�\�\�@\�@\�@\�@\�@Ae@\�@\�@\�@\�@\�@�@\�\�\�@\�@\�@\�@\�@�@\�@\�@\�@\�@\�@�@\�]\�\�\�\�\�@\�@\�@\�@\�@��@\�@\�@\�@\�@\�@E@@]]@]@]@]@]@H�@]]]]]	@]
@]@]@]
@E@]@]@]@]@]@�'@]]]@]@]@]@]@Ez@]@]@]@]@] @�@]"]Y]#]>]$]1]%]+]&@]'@](@])@]*@Ez@],@]-@].@]/@]0@�@]2]8]3@]4@]5@]6@]7@F�@]9@]:@];@]<@]=@E@]?]L]@]F]A@]B@]C@]D@]E@E@]G@]H@]I@]J@]K@F�@]M]S]N@]O@]P@]Q@]R@�@]T@]U@]V@]W@]X@E@]Z]u][]h]\]b]]@]^@]_@]`@]a@Ae@]c@]d@]e@]f@]g@E@]i]o]j@]k@]l@]m@]n@�@]p@]q@]r@]s@]t@�@]v]�]w]}]x@]y@]z@]{@]|@�@]~@]@]�@]�@E]�E@]�]�]�@]�@]�@]�@]�@F�@]�@]�@]�@]�@]�@E@]�d8]�`�]�_L]�^s]�^]�]�]�]�]�]�]�]�]�@]�@]�@]�@]�@�@]�@]�@]�@]�@]�@E@]�]�]�@]�@]�@]�@]�@�@]�@]�@]�@]�@]�@Ae@]�]�]�]�]�@]�@]�@]�@]�@�@]�@]�@]�@]�@]�@�'@]�]�]�@]�@]�@]�@]�@�@]�@]�@]�@]�@]�@�@]�]�]�]�]�]�]�@]�@]�@]�@]�@H:@]�@]�@]�@]�@]�@E@]�]�]�@]�@]�@]�@]�@Ae@]�@]�@]�@]�@]�@E@]�]�]�]�]�@]�@]�@]�@]�@�@]�@]�@]�@]�@]�@�@]�]�]�@]�@]�@]�@]�@�'@]�@^@^@^@^@�@^^<^^!^^^^^	@^
@^@^@^
@H:@^@^@^@^@^@�@^^^@^@^@^@^@�@^@^@^@^@^ @�@^"^/^#^)^$@^%@^&@^'@^(@�@^*@^+@^,@^-@^.@��@^0^6^1@^2@^3@^4@^5@�@^7@^8@^9@^:@^;@E@^=^X^>^K^?^E^@@^A@^B@^C@^D@H�@^F@^G@^H@^I@^J@E@^L^R^M@^N@^O@^P@^Q@�@^S@^T@^U@^V@^W@E@^Y^f^Z^`^[@^\@^]@^^@^_@�@^a@^b@^c@^d@^e@Ae@^g^m^h@^i@^j@^k@^l@�@^n@^o@^p@^q@^r@E@^t^�^u^�^v^�^w^�^x^~^y@^z@^{@^|@^}@E@^@^�@^�@^�@^�@E@^�^�^�@^�@^�@^�@^�@u�@^�@^�@^�@^�@^�@��@^�^�^�^�^�@^�@^�@^�@^�@�@^�@^�@^�@^�@^�@Ez@^�^�^�@^�@^�@^�@^�@HG@^�@^�@^�@^�@^�@�@^�^�^�^�^�^�^�@^�@^�@^�@^�@H�@^�@^�@^�@^�@^�@E@^�^�^�@^�@^�@^�@^�@�'@^�@^�@^�@^�@^�@E@^�^�^�^�^�@^�@^�@^�@^�@Ae@^�@^�@^�@^�@^�@�@^�^�^�@^�@^�@^�@^�@H:@^�@^�@^�@^�@^�@��@^�_^�^�^�^�@^�^�@^�@^�@^�@^�@Ae@^�^�^�@^�@^�@^�@^�@Ae@^�@^�@^�@^�@^�@�@^�_^�_^�@^�@^�@_@_@�@_@_@_@_@_@�@_	__
@_@_@_
@_@E@_@_@_@_@_@E@__1__$___@_@_@_@_@H�@_@_ @_!@_"@_#@�@_%_+_&@_'@_(@_)@_*@HG@_,@_-@_.@_/@_0@Ae@_2_?_3_9_4@_5@_6@_7@_8@�@_:@_;@_<@_=@_>@�@_@_F_A@_B@_C@_D@_E@Ae@_G@_H@_I@_J@_K@E@_M`_N_�_O_z_P_e_Q_X@_R_S@_T@_U@_V@_W@�@_Y___Z@_[@_\@_]@_^@Ae@_`@_a@_b@_c@_d@Ae@_f_s_g_m_h@_i@_j@_k@_l@H:@_n@_o@_p@_q@_r@��@@_t_u@_v@_w@_x@_y@�~@_{_�_|_�_}_�_~@_@_�@_�@_�@H�@_�@_�@_�@_�@_�@E@_�_�_�@_�@_�@_�@_�@E@_�@_�@_�@_�@_�@�@_�_�@_�_�@_�@_�@_�@_�@�@_�_�_�@_�@_�@_�@_�@@&@_�@_�@_�@_�@_�@E@_�_�_�_�_�_�_�_�_�@_�@_�@_�@_�@Ae@_�@_�@_�@_�@_�@�@_�_�_�@_�@_�@_�@_�@�@_�@_�@_�@_�@_�@�@_�_�_�_�_�@_�@_�@_�@_�@H:@_�@_�@_�@_�@_�@�@_�_�_�@_�@_�@_�@_�@F�@_�@_�@_�@_�@_�@E@_�_�_�_�_�_�_�@_�@_�@_�@_�@�@_�@_�@_�@_�@_�@E@_�_�_�@_�@_�@_�@_�@�@_�@_�@_�@_�@_�@Ae@``@``@`@`@`@`@E@```	@`
@`@`@`
@H�@`@`@`@`@`@Ae@``v``G``,``@``@`@`@`@`@�6@` `&`!@`"@`#@`$@`%@�'@`'@`(@`)@`*@`+@�@`-`:`.`4`/@`0@`1@`2@`3@Ae@`5@`6@`7@`8@`9@Ez@`;`A`<@`=@`>@`?@`@@�@`B@`C@`D@`E@`F@Ba@`H`[`I`T`J`N`K@`L@`M@E@`O@`P@`Q@`R@`S@A@@`U`V@`W@`X@`Y@`Z@�@`\`i`]`c`^@`_@``@`a@`b@�@`d@`e@`f@`g@`h@�@`j`p`k@`l@`m@`n@`o@Ez@`q@`r@`s@`t@`u@�@`w`�`x`�`y`�`z`�`{@`|@`}@`~@`@H:@`�@`�@`�@`�@`�@�@`�`�`�@`�@`�@`�@`�@Ez@`�@`�@`�@`�@`�@�@`�`�`�`�`�@`�@`�@`�@`�@�@`�@`�@`�@`�@`�@�@`�`�`�@`�@`�@`�@`�@�@`�@`�@`�@`�@`�@H�@`�`�`�`�`�`�`�@`�@`�@`�@`�@��@`�@`�@`�@`�@`�@Ae@`�`�`�@`�@`�@`�@`�@�@`�@`�@`�@`�@`�@E@`�`�`�`�`�@`�@`�@`�@`�@�@`�@`�@`�@`�@`�@E@`�`�`�@`�@`�@`�@`�@�@`�@`�@`�@`�@`�@�@`�b�`�a�`�aO`�a`�a`�`�`�`�`�@`�@`�@HG@`�@`�@`�@`�@`�@E@`�`�`�@`�@`�@`�@`�@�@`�@`�@a@a@a@E@aaaaa@a@a@a	@a
@�@a@a
@a@a@a@Ae@aaa@a@a@a@a@�@a@a@a@a@a@�@aa4a a-a!a'a"@a#@a$@a%@a&@E@a(@a)@a*@a+@a,@�@@a.a/@a0@a1@a2@a3@@&@a5aBa6a<a7@a8@a9@a:@a;@��@a=@a>@a?@a@@aA@�6@aCaIaD@aE@aF@aG@aH@�'@aJ@aK@aL@aM@aN@�@aPa�aQalaRa_aSaYaT@aU@aV@aW@aX@H:@aZ@a[@a\@a]@a^@E@a`afaa@ab@ac@ad@ae@Ae@ag@ah@ai@aj@ak@HG@amazanatao@ap@aq@ar@as@�@au@av@aw@ax@ay@HG@a{a�a|@a}@a~@a@a�@�@a�@a�@a�@a�@a�@�~@a�a�a�a�a�a�a�@a�@a�@a�@a�@E@a�@a�@a�@a�@a�@�@a�a�a�@a�@a�@a�@a�@A@a�@a�@a�@a�@a�@E@a�a�a�a�a�@a�@a�@a�@a�@@&@a�@a�@a�@a�@a�@E@a�a�a�@a�@a�@a�@a�@��@a�@a�@a�@a�@a�@HG@a�b.a�a�a�a�a�a�a�a�a�@a�@a�@a�@a�@Ez@a�@a�@a�@a�@a�@Ae@a�a�a�@a�@a�@a�@a�@Ae@a�@a�@a�@a�@a�@E@a�a�a�a�a�@a�@a�@a�@a�@�@a�@a�@a�@a�@a�@�@a�a�a�@a�@a�@a�@a�@H�@a�@a�@a�@a�@a�@�'@a�ba�ba�ba�@a�@a�@a�@a�@�@b@b@b@b@b@�@bb
b@b	@b
@b@b@H�@b@b@b@b@b@@&@bb!bbb@b@b@b@b@�@b@b@b@b@b @Ae@b"b(b#@b$@b%@b&@b'@�@b)@b*@b+@b,@b-@H�@b/b_b0bJb1b=b2b7b3@b4@b5@b6@Ba@b8@b9@b:@b;@b<@�~@b>bDb?@b@@bA@bB@bC@Ez@bE@bF@bG@bH@bI@�6@bKbR@bLbM@bN@bO@bP@bQ@�@bSbYbT@bU@bV@bW@bX@�@bZ@b[@b\@b]@b^@E@b`b{babnbbbhbc@bd@be@bf@bg@��@bi@bj@bk@bl@bm@F�@bobubp@bq@br@bs@bt@F�@bv@bw@bx@by@bz@Ae@b|b�b}b�b~@b@b�@b�@b�@�@b�@b�@b�@b�@b�@�@b�b�b�@b�@b�@b�@b�@�@b�@b�@b�@b�@b�@H�@b�cdb�b�b�b�b�b�b�b�b�b�b�@b�@b�@b�@b�@Ba@b�@b�@b�@b�@b�@�@b�b�b�@b�@b�@b�@b�@�@b�@b�@b�@b�@b�@Ae@b�b�@b�b�@b�@b�@b�@b�@�@b�b�b�@b�@b�@b�@b�@�@b�@b�@b�@b�@b�@E@b�b�b�b�b�b�b�@b�@b�@b�@b�@�'@b�@b�@b�@b�@b�@E@@b�b�@b�@b�@b�@b�@Ez@b�b�@b�b�@b�@b�@b�@b�@HG@b�b�b�@b�@b�@b�@b�@A@b�@b�@b�@b�@b�@H�@b�c-b�cb�cb�b�b�@b�@b�@b�@b�@Ae@c@c@c@c@c@H�@ccc@c@c	@c
@c@E@c
@c@c@c@c@�@cc ccc@c@c@c@c@H�@c@c@c@c@c@Ae@c!c'c"@c#@c$@c%@c&@az@c(@c)@c*@c+@c,@E@c.cIc/c<c0c6c1@c2@c3@c4@c5@��@c7@c8@c9@c:@c;@H�@c=cCc>@c?@c@@cA@cB@Ae@cD@cE@cF@cG@cH@E@cJcWcKcQcL@cM@cN@cO@cP@H�@cR@cS@cT@cU@cV@�@cXc^cY@cZ@c[@c\@c]@@&@c_@c`@ca@cb@cc@�@cec�cfc�cgc�chcucicocj@ck@cl@cm@cn@E@cp@cq@cr@cs@ct@E@cvc|cw@cx@cy@cz@c{@�@c}@c~@c@c�@c�@�@c�c�c�c�c�@c�@c�@c�@c�@Ez@c�@c�@c�@c�@c�@E@c�c�c�@c�@c�@c�@c�@�@c�@c�@c�@c�@c�@�@c�c�c�c�c�c�c�@c�@c�@c�@c�@Ae@c�@c�@c�@c�@c�@�@c�c�c�@c�@c�@c�@c�@�@c�@c�@c�@c�@c�@�@c�c�@c�c�@c�@c�@c�@c�@E@c�c�c�@c�@c�@c�@c�@�@c�@c�@c�@c�@c�@HG@c�dc�c�c�c�c�c�c�@c�@c�@c�@c�@@&@c�@c�@c�@c�@c�@E@c�c�c�@c�@c�@c�@H:@c�@c�@c�@c�@c�@�@c�c�c�c�c�@c�@c�@c�@c�@�@c�@c�@c�@c�@c�@E@c�c�c�@c�@c�@c�@c�@�'@d@d@d@d@d@�@dd!ddddd	@d
@d@d@d
@�@d@d@d@d@d@E@ddd@d@d@d@d@�@d@d@d@d@d @�@d"d/d#d)d$@d%@d&@d'@d(@E@d*@d+@d,@d-@d.@�@d0d2d1@F�@d3@d4@d5@d6@d7@E@d9g,d:e�d;ed<d�d=dtd>dYd?dLd@dFdA@dB@dC@dD@dE@�@dG@dH@dI@dJ@dK@H�@dMdSdN@dO@dP@dQ@dR@�@dT@dU@dV@dW@dX@�@dZdgd[dad\@d]@d^@d_@d`@Ae@db@dc@dd@de@df@�@dhdndi@dj@dk@dl@dm@H:@do@dp@dq@dr@ds@�@dud�dvd�dwd}dx@dy@dz@d{@d|@Ba@d~@d@d�@d�@d�@�@@d�d�@d�@d�@d�@d�@�@d�d�d�d�d�@d�@d�@d�@d�@F�@d�@d�@d�@d�@d�@�@d�d�d�@d�@d�@d�@d�@A@d�@d�@d�@d�@d�@�@d�d�d�d�d�d�d�d�d�@d�@d�@d�@d�@Ae@d�@d�@d�@d�@d�@�@d�d�d�@d�@d�@d�@d�@�@d�@d�@d�@d�@d�@E@d�d�d�d�d�@d�@d�@d�@d�@�@d�@d�@d�@d�@d�@E@d�d�d�@d�@d�@d�@d�@Ae@d�@d�@d�@d�@d�@E@d�d�d�d�d�d�d�@d�@d�@d�@d�@Ae@d�@d�@d�@d�@d�@�@d�d�d�@d�@d�@d�@d�@A@d�@d�@d�@d�@d�@�@d�ed�ed�@d�@d�@d�@e@Ba@e@e@e@e@e@�@eee	@e
@e@e@e
@�@e@e@e@e@e@E@ee�eeMee2ee%eee@e@e@e@e@E@e @e!@e"@e#@e$@E@e&e,e'@e(@e)@e*@e+@�@e-@e.@e/@e0@e1@Ba@e3e@e4e:e5@e6@e7@e8@e9@�@e;@e<@e=@e>@e?@�@eAeGeB@eC@eD@eE@eF@�@eH@eI@eJ@eK@eL@E@eNeieOe\ePeVeQ@eR@eS@eT@eU@�@eW@eX@eY@eZ@e[@E@e]ece^@e_@e`@ea@eb@�@ed@ee@ef@eg@eh@E@ejewekeqel@em@en@eo@ep@�@er@es@et@eu@ev@E@exe~ey@ez@e{@e|@e}@�@e@e�@e�@e�@e�@H�@e�e�e�e�e�e�e�e�e�@e�@e�@e�@e�@E@e�@e�@e�@e�@e�@�@e�e�e�@e�@e�@e�@e�@�@e�@e�@e�@e�@e�@�@e�e�e�e�e�@e�@e�@e�@e�@H:@e�@e�@e�@e�@e�@E@e�e�e�@e�@e�@e�@e�@H:@e�@e�@e�@e�@e�@H:@e�e�e�e�e�e�e�@e�@e�@e�@e�@��@e�@e�@e�@e�@e�@Ae@e�e�e�@e�@e�@e�@e�@Ae@e�@e�@e�@e�@e�@�@e�e�e�e�e�@e�@e�@e�@e�@�@e�@e�@e�@e�@e�@�@e�e�e�@e�@e�@e�@e�@Ae@e�@e�@e�@e�@e�@�@e�f�e�fXe�f-e�fe�fe�e�e�@e�@e�@e�@e�@Ae@f@f@f@f@f@�@fff@f@f	@f
@f@F�@f
@f@f@f@f@A@ff fff@f@f@f@f@Ez@f@f@f@f@f@�@f!f'f"@f#@f$@f%@f&@�@f(@f)@f*@f+@f,@�@f.fIf/f<f0f6f1@f2@f3@f4@f5@H:@f7@f8@f9@f:@f;@�@f=fCf>@f?@f@@fA@fB@�@fD@fE@fF@fG@fH@�@fJfQ@fKfL@fM@fN@fO@fP@�@@fRfS@fT@fU@fV@fW@�@fYf�fZfof[fhf\fbf]@f^@f_@f`@fa@Ae@fc@fd@fe@ff@fg@�@fi@fj@fk@fl@fm@fn@�@fpf}fqfwfr@fs@ft@fu@fv@Ae@fx@fy@fz@f{@f|@HG@f~f�f@f�@f�@f�@f�@�@f�@f�@f�@f�@f�@Ae@f�f�f�f�@f�f�@f�@f�@f�@f�@E@f�f�f�@f�@f�@f�@f�@�@f�@f�@f�@f�@f�@�@f�f�f�f�f�@f�@f�@f�@f�@�@f�@f�@f�@f�@f�@Ba@f�f�f�@f�@f�@f�@f�@Ez@f�@f�@f�@f�@f�@E@f�f�f�f�f�f�@f�f�@f�@f�@f�@f�@f�@A@f�f�f�@f�@f�@f�@f�@f�@�@f�@f�@f�@f�@f�@f�@E@f�f�f�f�f�@f�@f�@f�@f�@f�@az@f�@f�@f�@f�@f�@f�@�~@@f�f�@f�@f�@f�@f�@f�@�@f�g
f�f�f�f�f�@f�@f�@f�@f�@f�@�@f�@f�@f�@f�@f�@f�@�@f�gg@g@g@g@g@g@Ae@g@g@g	@g
@g@g@�@ggggg@g@g@g@g@g@Ae@g@g@g@g@g@g@�@gg%g@g @g!@g"@g#@g$@�@g&@g'@g(@g)@g*@g+@�@g-h	g.g�g/ggg0gOg1g@g2g9g3@g4@g5@g6@g7@g8@�@g:@g;@g<@g=@g>@g?@�@gAgHgB@gC@gD@gE@gF@gG@H�@gI@gJ@gK@gL@gM@gN@�Y@gPg_gQgXgR@gS@gT@gU@gV@gW@�@gY@gZ@g[@g\@g]@g^@�@g`@ga@gb@gc@gd@ge@gf@�@ghg�gigq@gjgk@gl@gm@gn@go@gp@Ba@grgygs@gt@gu@gv@gw@gx@H�@gz@g{@g|@g}@g~@g@Ae@g�g�g�g�g�@g�@g�@g�@g�@g�@�@g�@g�@g�@g�@g�@g�@�@g�g�g�@g�@g�@g�@g�@g�@�@g�@g�@g�@g�@g�@g�@Ae@g�g�g�g�g�g�g�g�g�@g�@g�@g�@g�@g�@E@g�@g�@g�@g�@g�@g�@�@g�g�g�@g�@g�@g�@g�@g�@�@g�@g�@g�@g�@g�@g�@�@g�g�g�g�g�@g�@g�@g�@g�@g�@��@g�@g�@g�@g�@g�@g�@�@@g�g�@g�@g�@g�@g�@g�@�@g�g�g�g�@g�g�@g�@g�@g�@g�@g�@Ez@@g�g�@g�@g�@g�@g�@g�@A@g�g�g�g�g�@g�@g�@g�@g�@g�@Ba@g�@g�@g�@g�@g�@g�@Ae@g�hg�@g�@g�@g�@h@h@Ae@h@h@h@h@h@h@A@h
h{hhChh+h
hhhh@h@h@h@h@h@�@h@h@h@h@h@h@E@hh$h@h@h @h!@h"@h#@�@h%@h&@h'@h(@h)@h*@�@h,h4@h-h.@h/@h0@h1@h2@h3@�@h5h<h6@h7@h8@h9@h:@h;@�@h=@h>@h?@h@@hA@hB@�@hDhchEhThFhMhG@hH@hI@hJ@hK@hL@E@hN@hO@hP@hQ@hR@hS@�@hUh\hV@hW@hX@hY@hZ@h[@E@h]@h^@h_@h`@ha@hb@H�@hdhshehlhf@hg@hh@hi@hj@hk@H�@hm@hn@ho@hp@hq@hr@�@@hthu@hv@hw@hx@hy@hz@�@h|h�h}h�h~h�hh�h�@h�@h�@h�@h�@h�@E@h�@h�@h�@h�@h�@h�@Ba@h�h�h�@h�@h�@h�@h�@h�@Ba@h�@h�@h�@h�@h�@h�@��@h�h�@h�h�@h�@h�@h�@h�@h�@E@@h�h�@h�@h�@h�@h�@h�@�@h�h�h�h�h�h�h�@h�@h�@h�@h�@h�@H:@h�@h�@h�@h�@h�@h�@�@h�h�h�@h�@h�@h�@h�@h�@Ae@h�@h�@h�@h�@h�@h�@�@h�h�@h�h�@h�@h�@h�@h�@h�@Ae@h�h�h�@h�@h�@h�@h�@h�@�@h�@h�@h�@h�@h�@h�@E@h���h�wph�p h�l�h�j�h�i�h�i\h�i$h�ih�h�h�@h�@h�@h�@h�@h�@h�@Ez@h�h�h�@h�@h�@h�@h�@h�@H�@i@i@i@i@i@i@H:@iiiii	@i
@i@i@i
@E@i@i@i@i@i@i@�@iii@i@i@i@i@i@Ae@i@i@i @i!@i"@i#@�@i%i=i&i5i'i.i(@i)@i*@i+@i,@i-@�@i/@i0@i1@i2@i3@i4@�@i6@i7@i8@i9@i:@i;@i<@�@i>iMi?iFi@@iA@iB@iC@iD@iE@�@iG@iH@iI@iJ@iK@iL@�@iNiUiO@iP@iQ@iR@iS@iT@H�@iV@iW@iX@iY@iZ@i[@�@i]i�i^i}i_ini`igia@ib@ic@id@ie@if@Ae@ih@ii@ij@ik@il@im@A@ioivip@iq@ir@is@it@iu@�@iw@ix@iy@iz@i{@i|@�@i~i�ii�i�@i�@i�@i�@i�@i�@�~@i�@i�@i�@i�@i�@i�@�@i�i�i�@i�@i�@i�@i�@i�@�@i�@i�@i�@i�@i�@i�@�@i�i�i�i�i�i�i�@i�@i�@i�@i�@i�@E@i�@i�@i�@i�@i�@i�@�@i�i�i�@i�@i�@i�@i�@i�@H:@i�@i�@i�@i�@i�@i�@A@i�i�i�i�i�@i�@i�@i�@i�@i�@�@i�@i�@i�@i�@i�@i�@�'@i�i�i�@i�@i�@i�@i�@i�@�@i�@i�@i�@i�@i�@i�@�@i�jSi�ji�i�i�i�i�i�i�@i�@i�@i�@i�@i�@H:@i�@i�@i�@i�@i�@i�@F�@i�i�i�@i�@i�@i�@i�@i�@�@i�@i�@i�@i�@i�@i�@��@i�j@i�j@j@j@j@j@j@A@jjj@j	@j
@j@j@j
@��@j@j@j@j@j@j@�@jj5jj&jjj@j@j@j@j@j@Ae@j @j!@j"@j#@j$@j%@�@j'j.j(@j)@j*@j+@j,@j-@A@j/@j0@j1@j2@j3@j4@E@j6jEj7j>j8@j9@j:@j;@j<@j=@E@j?@j@@jA@jB@jC@jD@E@jFjMjG@jH@jI@jJ@jK@jL@E@jN@jO@jP@jQ@jR@@&@jTj�jUjtjVjejWj^jX@jY@jZ@j[@j\@j]@E@j_@j`@ja@jb@jc@jd@A@jfjmjg@jh@ji@jj@jk@jl@�@jn@jo@jp@jq@jr@js@`�@juj�jvj}jw@jx@jy@jz@j{@j|@Ae@j~@j@j�@j�@j�@j�@H:@j�j�j�@j�@j�@j�@j�@j�@�@j�@j�@j�@j�@j�@j�@��@j�j�j�j�j�j�j�@j�@j�@j�@j�@j�@Ae@j�@j�@j�@j�@j�@j�@Ae@j�j�j�@j�@j�@j�@j�@j�@H:@j�@j�@j�@j�@j�@j�@HG@j�j�@j�j�@j�@j�@j�@j�@j�@E@j�j�j�@j�@j�@j�@j�@j�@�@j�@j�@j�@j�@j�@j�@@&@j�k�j�k>j�kj�j�j�j�j�j�j�@j�@j�@j�@j�@j�@Ba@j�@j�@j�@j�@j�@j�@�@@j�j�@j�@j�@j�@j�@j�@�@j�j�j�j�j�@j�@j�@j�@j�@j�@�@j�@j�@j�@j�@j�@j�@E@j�j�j�@j�@j�@j�@j�@j�@�@k@k@k@k@k@k@�@kkkkk	@k
@k@k@k
@k@k@Ae@kkk@k@k@k@k@k@�@k@k@k@k@k@k@Ae@k k/k!k(k"@k#@k$@k%@k&@k'@F�@k)@k*@k+@k,@k-@k.@�@k0k7k1@k2@k3@k4@k5@k6@�@k8@k9@k:@k;@k<@k=@A@k?kwk@kXkAkI@kBkC@kD@kE@kF@kG@kH@Ae@kJkQkK@kL@kM@kN@kO@kP@H�@kR@kS@kT@kU@kV@kW@Ae@kYkhkZkak[@k\@k]@k^@k_@k`@E@kb@kc@kd@ke@kf@kg@�@kikpkj@kk@kl@km@kn@ko@H�@kq@kr@ks@kt@ku@kv@�@kxk�kyk�@kzk{@k|@k}@k~@k@k�@Ae@k�k�k�@k�@k�@k�@k�@k�@H�@k�@k�@k�@k�@k�@k�@�@k�k�k�k�k�@k�@k�@k�@k�@k�@�@k�@k�@k�@k�@k�@k�@A@@k�k�@k�@k�@k�@k�@k�@�@k�lk�k�k�k�k�k�k�k�k�@k�@k�@k�@k�@k�@Ba@k�@k�@k�@k�@k�@k�@�@k�k�k�@k�@k�@k�@k�@k�@�@k�@k�@k�@k�@k�@k�@Ez@k�k�k�k�k�@k�@k�@k�@k�@k�@Ae@k�@k�@k�@k�@k�@k�@M@@k�k�@k�@k�@k�@k�@k�@�@k�k�k�k�@k�k�@k�@k�@k�@k�@k�@��@k�k�k�@k�@k�@k�@k�@k�@E@k�@k�@k�@k�@k�@k�@F�@k�lk�lk�@k�@l@l@l@l@Ae@l@l@l@l@l	@l
@�@lll
@l@l@l@l@l@H:@l@l@l@l@l@l@Ae@llZll;ll,ll%l@l @l!@l"@l#@l$@�@l&@l'@l(@l)@l*@l+@Ae@l-l4l.@l/@l0@l1@l2@l3@E@l5@l6@l7@l8@l9@l:@�@l<lKl=lDl>@l?@l@@lA@lB@lC@Ae@lE@lF@lG@lH@lI@lJ@Ez@lLlSlM@lN@lO@lP@lQ@lR@�@lT@lU@lV@lW@lX@lY@E@l[lsl\ldl]@l^@l_@l`@la@lb@lc@�@lelllf@lg@lh@li@lj@lk@�@lm@ln@lo@lp@lq@lr@A@ltl�lul|lv@lw@lx@ly@lz@l{@Ae@l}@l~@l@l�@l�@l�@�@l�l�l�@l�@l�@l�@l�@l�@�@l�@l�@l�@l�@l�@l�@�@l�nHl�m^l�ml�l�l�l�l�l�l�@l�@l�@F�@l�l�l�@l�@l�@l�@l�@l�@�'@l�@l�@l�@l�@l�@l�@�@l�l�@l�l�@l�@l�@l�@l�@l�@F�@l�l�l�@l�@l�@l�@l�@l�@��@l�@l�@l�@l�@l�@l�@�'@l�l�l�l�l�l�l�@l�@l�@l�@l�@l�@�@l�@l�@l�@l�@l�@l�@Ba@l�l�l�@l�@l�@l�@l�@l�@E@l�@l�@l�@l�@l�@l�@Ae@l�l�l�l�l�@l�@l�@l�@l�@l�@E@l�@l�@l�@l�@l�@l�@HG@l�l�l�@l�@l�@l�@l�@l�@E@l�@l�@l�@l�@m@m@H:@mm4mmmm
@mm@m@m	@m
@m@m@�@mmm@m@m@m@m@m@�@m@m@m@m@m@m@�@mm%@mm@m @m!@m"@m#@m$@�@m&m-m'@m(@m)@m*@m+@m,@�@m.@m/@m0@m1@m2@m3@A@m5mFm6m>@m7m8@m9@m:@m;@m<@m=@�6@@m?m@@mA@mB@mC@mD@mE@A@mGmOmH@mI@mJ@mK@mL@mM@mN@Ae@mPmWmQ@mR@mS@mT@mU@mV@��@mX@mY@mZ@m[@m\@m]@�'@m_m�m`m�mam�mbmqmcmjmd@me@mf@mg@mh@mi@�@mk@ml@mm@mn@mo@mp@Ae@mrmyms@mt@mu@mv@mw@mx@E@mz@m{@m|@m}@m~@m@F�@m�m�m�m�m�@m�@m�@m�@m�@m�@Ae@m�@m�@m�@m�@m�@m�@�@m�m�m�@m�@m�@m�@m�@m�@��@m�@m�@m�@m�@m�@m�@�@m�m�m�m�m�m�m�@m�@m�@m�@m�@m�@�@m�@m�@m�@m�@m�@m�@E@m�m�m�@m�@m�@m�@m�@m�@�@m�@m�@m�@m�@m�@m�@�@m�m�m�m�m�@m�@m�@m�@m�@m�@Ae@m�@m�@m�@m�@m�@m�@�@m�m�m�@m�@m�@m�@m�@m�@�@m�@m�@m�@m�@m�@m�@Ae@m�nm�m�m�m�m�m�m�@m�@m�@m�@m�@m�@Ae@m�@m�@m�@m�@m�@m�@�@@m�m�@m�@m�@m�@m�@m�@�@m�nm�nm�@m�@m�@m�@m�@n@��@n@n@n@n@n@n@E@n	nn
@n@n@n
@n@n@��@n@n@n@n@n@n@�@nn7nn(nn!n@n@n@n@n@n @E@n"@n#@n$@n%@n&@n'@E@n)n0n*@n+@n,@n-@n.@n/@�@n1@n2@n3@n4@n5@n6@�@n8n@@n9n:@n;@n<@n=@n>@n?@�@@nAnB@nC@nD@nE@nF@nG@�@nIo8nJn�nKn�nLndnMnUnN@nO@nP@nQ@nR@nS@nT@Ez@nVn]nW@nX@nY@nZ@n[@n\@�@n^@n_@n`@na@nb@nc@E@nentnfnmng@nh@ni@nj@nk@nl@�'@nn@no@np@nq@nr@ns@H�@nun{nv@nw@nx@ny@nz@HG@n|@n}@n~@n@n�@n�@Ez@n�n�n�n�n�n�n�@n�@n�@n�@n�@n�@�@n�@n�@n�@n�@n�@n�@Ez@n�n�n�@n�@n�@n�@n�@n�@Ae@n�@n�@n�@n�@n�@n�@�'@n�n�n�n�n�@n�@n�@n�@n�@n�@F�@n�@n�@n�@n�@n�@n�@@&@n�n�n�@n�@n�@n�@n�@n�@E@n�@n�@n�@n�@n�@n�@�~@n�n�n�n�n�n�n�n�n�@n�@n�@n�@n�@n�@F�@n�@n�@n�@n�@n�@n�@�@n�n�n�@n�@n�@n�@n�@n�@�@n�@n�@n�@n�@n�@Ae@n�n�n�n�n�@n�@n�@n�@n�@n�@Ae@n�@n�@n�@n�@n�@n�@Ba@n�@n�@n�@n�@n�@n�@n�@H:@n�on�o
n�on�@n�@n�@o@o@o@�@o@o@o@o@o@o	@�@ooo@o
@o@o@o@o@�@o@o@o@o@o@o@�@oo)oo"o@o@o@o@o @o!@Ae@o#@o$@o%@o&@o'@o(@�@o*o1o+@o,@o-@o.@o/@o0@Ae@o2@o3@o4@o5@o6@o7@�@o9o�o:oro;oZo<oKo=oDo>@o?@o@@oA@oB@oC@H:@oE@oF@oG@oH@oI@oJ@�@oLoSoM@oN@oO@oP@oQ@oR@�@oT@oU@oV@oW@oX@oY@�@o[ojo\oco]@o^@o_@o`@oa@ob@@&@od@oe@of@og@oh@oi@�@@okol@om@on@oo@op@oq@�@oso�oto�ouo|ov@ow@ox@oy@oz@o{@E@o}@o~@o@o�@o�@o�@B@@o�o�@o�@o�@o�@o�@o�@H�@o�o�o�o�o�@o�@o�@o�@o�@o�@F�@o�@o�@o�@o�@o�@o�@�@o�o�o�@o�@o�@o�@E@o�@o�@o�@o�@o�@o�@�@o�o�o�o�o�o�@o�o�@o�@o�@o�@o�@o�@�@o�o�o�@o�@o�@o�@o�@o�@�'@o�@o�@o�@o�@o�@o�@�@o�o�o�o�o�@o�@o�@o�@o�@o�@H:@o�@o�@o�@o�@o�@o�@�@o�o�o�@o�@o�@o�@o�@o�@E@o�@o�@o�@o�@o�@o�@�@o�po�o�o�o�o�@o�@o�@o�@o�@o�@Ae@o�@o�@o�@o�@o�@o�@�@o�o�o�@o�@o�@o�@o�@o�@H:@o�@o�@o�@o�@o�@p@�@pppp
p@p@p@p@p@p	@F�@p@p@p
@p@p@p@�@ppp@p@p@p@p@p@�@p@p@p@p@p@p@�@p!s�p"q�p#qp$p�p%p]p&pEp'p6p(p/p)@p*@p+@p,@p-@p.@Ez@p0@p1@p2@p3@p4@p5@�@p7p>p8@p9@p:@p;@p<@p=@�@p?@p@@pA@pB@pC@pD@�@pFpNpG@pH@pI@pJ@pK@pL@pM@F�@pOpVpP@pQ@pR@pS@pT@pU@�@pW@pX@pY@pZ@p[@p\@�@p^p}p_pnp`pgpa@pb@pc@pd@pe@pf@E@ph@pi@pj@pk@pl@pm@�@popvpp@pq@pr@ps@pt@pu@Ae@pw@px@py@pz@p{@p|@�@p~p�pp�p�@p�@p�@p�@p�@p�@Ae@p�@p�@p�@p�@p�@p�@�@p�p�p�@p�@p�@p�@p�@p�@�@p�@p�@p�@p�@p�@p�@�@p�p�p�p�p�p�@p�p�@p�@p�@p�@p�@p�@�@@p�p�@p�@p�@p�@p�@p�@�@p�p�p�p�p�@p�@p�@p�@p�@p�@H @p�@p�@p�@p�@p�@p�@�@p�p�p�@p�@p�@p�@p�@p�@�@p�@p�@p�@p�@p�@p�@�@p�p�p�p�p�p�p�@p�@p�@p�@p�@p�@H:@p�@p�@p�@p�@p�@p�@�@p�p�p�@p�@p�@p�@p�@p�@�@p�@p�@p�@p�@p�@p�@�@p�p�p�@p�@p�@p�@p�@p�@p�@��@p�p�p�@p�@p�@p�@p�@p�@�@q@q@q@q@q@q@�@qqxqq@q	q(q
qqqq@q
@q@q@q@q@F�@q@q@q@q@q@q@�@qq!q@q@q@q@q@q @�@q"@q#@q$@q%@q&@q'@H�@q)q1@q*q+@q,@q-@q.@q/@q0@�@q2q9q3@q4@q5@q6@q7@q8@E@q:@q;@q<@q=@q>@q?@H�@qAqYqBqJ@qCqD@qE@qF@qG@qH@qI@H�@qKqRqL@qM@qN@qO@qP@qQ@H�@qS@qT@qU@qV@qW@qX@H�@qZqiq[qbq\@q]@q^@q_@q`@qa@Ae@qc@qd@qe@qf@qg@qh@�@qjqqqk@ql@qm@qn@qo@qp@H�@qr@qs@qt@qu@qv@qw@E@qyq�qzq�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�@Ae@q�@q�@q�@q�@q�@q�@�@q�q�q�@q�@q�@q�@q�@q�@E@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�@H @q�@q�@q�@q�@q�@q�@�@q�q�q�q�q�@q�@q�@q�@q�@q�@Ae@q�@q�@q�@q�@q�@q�@�@q�q�q�@q�@q�@q�@q�@q�@E@q�@q�@q�@q�@q�@q�@�@q�r�q�r\q�r$q�rq�q�q�q�q�@q�@q�@q�@q�@q�@��@q�@q�@q�@q�@q�@q�@�@q�q�q�@q�@q�@q�@q�@q�@�@q�@r@r@r@r@r@�@rrrrr@r	@r
@r@r@r
@Ae@r@r@r@r@r@r@�@rrr@r@r@r@r@r@E@r@r@r @r!@r"@r#@�@r%r=r&r.@r'r(@r)@r*@r+@r,@r-@Ez@r/r6r0@r1@r2@r3@r4@r5@Ae@r7@r8@r9@r:@r;@r<@�@r>rMr?rFr@@rA@rB@rC@rD@rE@Ae@rG@rH@rI@rJ@rK@rL@A@rNrUrO@rP@rQ@rR@rS@rT@E@rV@rW@rX@rY@rZ@r[@E@r]r�r^r}r_rnr`rgra@rb@rc@rd@re@rf@�@rh@ri@rj@rk@rl@rm@��@rorvrp@rq@rr@rs@rt@ru@�@rw@rx@ry@rz@r{@r|@A@r~r�rr�r�@r�@r�@r�@r�@r�@�'@r�@r�@r�@r�@r�@r�@�@r�r�r�@r�@r�@r�@r�@r�@E@r�@r�@r�@r�@r�@r�@�@r�r�r�r�r�r�r�@r�@r�@r�@r�@r�@Ae@r�@r�@r�@r�@r�@r�@�@r�r�r�@r�@r�@r�@r�@r�@�@r�@r�@r�@r�@r�@r�@�@r�r�r�r�r�@r�@r�@r�@r�@r�@Ae@r�@r�@r�@r�@r�@r�@Ae@r�r�r�@r�@r�@r�@r�@r�@E@r�@r�@r�@r�@r�@r�@E@r�sTr�sr�r�r�r�r�r�r�@r�@r�@r�@r�@r�@E@r�@r�@r�@r�@r�@r�@�@r�r�r�@r�@r�@r�@r�@r�@�@r�@r�@r�@r�@r�@r�@F�@r�s
r�ss@s@s@s@s@s@�@s@s@s	@s
@s@s@�@sss@s@s@s@s@s@�@s@s@s@s@s@s@��@ss<ss-ss&s @s!@s"@s#@s$@s%@@&@s'@s(@s)@s*@s+@s,@@&@s.s5s/@s0@s1@s2@s3@s4@�@s6@s7@s8@s9@s:@s;@�@s=sLs>sEs?@s@@sA@sB@sC@sD@Ae@sF@sG@sH@sI@sJ@sK@Ae@@sMsN@sO@sP@sQ@sR@sS@�@sUs�sVsnsWs_@sXsY@sZ@s[@s\@s]@s^@Ba@s`sgsa@sb@sc@sd@se@sf@�@sh@si@sj@sk@sl@sm@�@sos}spsvsq@sr@ss@st@su@HG@sw@sx@sy@sz@s{@s|@E@s~s�s@s�@s�@s�@s�@s�@Ba@s�@s�@s�@s�@s�@s�@E@s�s�s�s�s�s�s�@s�@s�@s�@s�@s�@E@s�@s�@s�@s�@s�@s�@H�@s�s�s�@s�@s�@s�@s�@s�@�@s�@s�@s�@s�@s�@s�@E@@s�s�s�s�@s�@s�@s�@s�@s�@�@s�@s�@s�@s�@s�@s�@Ae@s�u�s�t�s�t>s�s�s�s�s�s�s�s�s�@s�@s�@s�@s�@s�@�@s�@s�@s�@s�@s�@s�@�@s�s�s�@s�@s�@s�@s�@s�@�@s�@s�@s�@s�@s�@s�@A@s�s�s�s�s�@s�@s�@s�@s�@s�@E@s�@s�@s�@s�@s�@s�@�@s�s�s�@s�@s�@s�@s�@s�@�@s�@s�@s�@s�@s�@s�@�@tttttt	t@t@t@t@t@t@H�@t
@t@t@t
@t@t@�@ttt@t@t@t@t@t@Ae@t@t@t@t@t@t@A@t t/t!t(t"@t#@t$@t%@t&@t'@E@t)@t*@t+@t,@t-@t.@E@t0t7t1@t2@t3@t4@t5@t6@�@t8@t9@t:@t;@t<@t=@A@t?tot@tPtA@tBtItC@tD@tE@tF@tG@tH@F�@tJ@tK@tL@tM@tN@tO@�@tQt`tRtYtS@tT@tU@tV@tW@tX@�~@tZ@t[@t\@t]@t^@t_@�@tathtb@tc@td@te@tf@tg@E@ti@tj@tk@tl@tm@tn@H:@tpt�tqt�trtyts@tt@tu@tv@tw@tx@E@tz@t{@t|@t}@t~@t@Ae@t�t�t�@t�@t�@t�@t�@t�@�@t�@t�@t�@t�@t�@t�@�@t�t�t�t�t�@t�@t�@t�@t�@t�@Ae@t�@t�@t�@t�@t�@t�@�@@t�t�@t�@t�@t�@t�@t�@�@t�ut�t�t�t�t�t�@t�t�@t�@t�@t�@t�@��@@t�t�@t�@t�@t�@t�@t�@�~@t�t�t�t�t�@t�@t�@t�@t�@t�@H�@t�@t�@t�@t�@t�@t�@H:@t�t�t�@t�@t�@t�@t�@t�@H�@t�@t�@t�@t�@t�@t�@E@t�t�t�t�@t�t�@t�@t�@t�@t�@t�@�@t�t�t�@t�@t�@t�@t�@t�@H�@t�@t�@t�@t�@t�@t�@�@t�ut�t�t�@t�@t�@t�@t�@t�@H�@t�@t�@t�@t�@u@u@E@uu
u@u@u@u@u@u	@�@u@u@u
@u@u@u@E@uuHuu+uu#uuu@u@u@u@u@u@H�@u@u@u@u @u!@u"@H�@u$@u%@u&@u'@u(@u)@u*@E@u,u;u-u4u.@u/@u0@u1@u2@u3@H�@u5@u6@u7@u8@u9@u:@�@u<uAu=@u>@u?@u@@E@uB@uC@uD@uE@uF@uG@�@uIuauJuR@uKuL@uM@uN@uO@uP@uQ@H�@uSuZuT@uU@uV@uW@uX@uY@F�@u[@u\@u]@u^@u_@u`@d@ubuqucujud@ue@uf@ug@uh@ui@Ae@uk@ul@um@un@uo@up@A@uruyus@ut@uu@uv@uw@ux@�@uz@u{@u|@u}@u~@u@�@u�vyu�vu�u�u�u�u�u�u�u�u���u���u���u���u���u���E��u���u���u���u���u���u������u�u�u���u���u���u���u���u���!9��u���u���u���u���u���u����O��u�u�u�u�u���u���u���u���u���u�������u���u���u���u���u���u����O��u�u�u���u���u���u���u���u����2��u���u���u���u���u���u����O��u�u�u�u�u�u�u�@u�@u�@u�@u�@u�@Ae@u�@u�@u�@u�@u�@u�@�~@u�u�u�@u�@u�@u�@u�@u�@�@u�@u�@u�@u�@u�@u�@Ae@u�u�u�u�u�@u�@u�@u�@u�@u�@Ae@u�@u�@u�@u�@u�@u�@Ae@u�u�u�@u�@u�@u�@u�@u�@HG@u�@u�@u�@u�@u�@v@Ez@vv:vvvv@vv@v@v@v	@v
@v@�@v
vv@v@v@v@v@v@HG@v@v@v@v@v@v@�@vv+vv$v@v@v @v!@v"@v#@Ae@v%@v&@v'@v(@v)@v*@�@v,v3v-@v.@v/@v0@v1@v2@�@v4@v5@v6@v7@v8@v9@Ba@v;vZv<vKv=vDv>@v?@v@@vA@vB@vC@Ae@vE@vF@vG@vH@vI@vJ@�@vLvSvM@vN@vO@vP@vQ@vR@�@vT@vU@vV@vW@vX@vY@�@v[vjv\vcv]@v^@v_@v`@va@vb@H:@vd@ve@vf@vg@vh@vi@Ae@vkvrvl@vm@vn@vo@vp@vq@�@vs@vt@vu@vv@vw@vx@E@vzv�v{v�v|v�v}v�@v~v@v�@v�@v�@v�@v�@Ba@v�v�v�@v�@v�@v�@v�@v�@�@v�@v�@v�@v�@v�@v�@�@v�v�v�v�v�@v�@v�@v�@v�@v�@Ae@v�@v�@v�@v�@v�@v�@�@v�v�v�@v�@v�@v�@v�@v�@�@v�@v�@v�@v�@v�@v�@��@v�v�v�v�v�v�v�@v�@v�@v�@v�@v�@�@v�@v�@v�@v�@v�@�@v�v�v�@v�@v�@v�@v�@v�@Ae@v�@v�@v�@v�@v�@v�@Ae@v�v�v�v�v�@v�@v�@v�@v�@v�@Ae@v�@v�@v�@v�@v�@v�@E@v�v�v�@v�@v�@v�@v�@v�@�@v�@v�@v�@v�@v�@v�@E�@v�w1v�wv�wv�v�v�@v�@v�@v�@v�@v�@Ae@v�@v�@v�@w@w@w@�@www@w@w@w@w	@w
@�@w@w
@w@w@w@w@�@ww"www@w@w@w@w@w@Ae@w@w@w@w@w @w!@�@w#w*w$@w%@w&@w'@w(@w)@�@w+@w,@w-@w.@w/@w0@E@w2wQw3wBw4w;w5@w6@w7@w8@w9@w:@��@w<@w=@w>@w?@w@@wA@�@wCwJwD@wE@wF@wG@wH@wI@�@wK@wL@wM@wN@wO@wP@�@wRwawSwZwT@wU@wV@wW@wX@wY@Ae@w[@w\@w]@w^@w_@w`@�@wbwiwc@wd@we@wf@wg@wh@Ae@wj@wk@wl@wm@wn@wo@�@wq~�wr{#wsyAwtxewuw�wvw�www�wxw�wyw�wz@w{@w|@w}@w~@w@Ae@w�@w�@w�@w�@w�@w�@�@w�w�w�@w�@w�@w�@w�@w�@E@w�@w�@w�@w�@w�@w�@�@w�w�w�w�w�@w�@w�@w�@w�@w�@�@w�@w�@w�@w�@w�@w�@�'@w�w�w�@w�@w�@w�@w�@w�@�6@w�@w�@w�@w�@w�@w�@�@w�w�w�w�w�w�w�@w�@w�@w�@w�@w�@H:@w�@w�@w�@w�@w�@w�@��@w�w�w�@w�@w�@w�@w�@w�@�@w�@w�@w�@w�@w�@w�@E@w�w�w�w�w�@w�@w�@w�@w�@w�@�@w�@w�@w�@w�@w�@w�@E@w�w�w�@w�@w�@w�@w�@w�@��@w�@w�@w�@w�@w�@w�@�@w�x&w�xw�w�@w�w�@w�@w�@w�@w�@w�@E@xxx@x@x@x@x@x@��@x@x	@x
@x@x@x
@H�@xx@xx@x@x@x@x@x@�@xxx@x@x@x@x@x@E@x @x!@x"@x#@x$@x%@�@x'xFx(x7x)x0x*@x+@x,@x-@x.@x/@��@x1@x2@x3@x4@x5@x6@�@x8x?x9@x:@x;@x<@x=@x>@E@x@@xA@xB@xC@xD@xE@�@xGxVxHxOxI@xJ@xK@xL@xM@xN@Ae@xP@xQ@xR@xS@xT@xU@�~@xWx^xX@xY@xZ@x[@x\@x]@�@x_@x`@xa@xb@xc@xd@�@xfx�xgx�xhx�xixxxjxqxk@xl@xm@xn@xo@xp@��@xr@xs@xt@xu@xv@xw@�~@xyx�xz@x{@x|@x}@x~@x@�@x�@x�@x�@x�@x�@x�@E@x�x�x�x�x�@x�@x�@x�@x�@x�@Ae@x�@x�@x�@x�@x�@x�@�@x�x�x�@x�@x�@x�@x�@x�@Ae@x�@x�@x�@x�@x�@x�@�@x�x�x�x�x�x�x�@x�@x�@x�@x�@x�@E@x�@x�@x�@x�@x�@x�@�@@x�x�@x�@x�@x�@x�@x�@�@x�x�x�x�x�@x�@x�@x�@x�@x�@F�@x�@x�@x�@x�@x�@x�@Ae@x�x�x�@x�@x�@x�@x�@x�@E@x�@x�@x�@x�@x�@x�@�@x�yx�x�x�x�@x�x�@x�@x�@x�@x�@x�@�@x�x�x�@x�@x�@x�@x�@x�@�@x�@x�@x�@x�@x�@x�@�@x�yx�yx�@x�@x�@x�@x�@y@�@y@y@y@y@y@y@�@y	yy
@y@y@y
@y@y@��@y@y@y@y@y@y@�@yy0yy!y@y@y@y@y@y@y @�@y"y)y#@y$@y%@y&@y'@y(@�@y*@y+@y,@y-@y.@y/@Ae@y1y9@y2y3@y4@y5@y6@y7@y8@E@@y:y;@y<@y=@y>@y?@y@@E@yBz2yCy�yDy�yEydyFyUyGyNyH@yI@yJ@yK@yL@yM@��@yO@yP@yQ@yR@yS@yT@A@yVy]yW@yX@yY@yZ@y[@y\@E@y^@y_@y`@ya@yb@yc@E@yeytyfymyg@yh@yi@yj@yk@yl@Ae@yn@yo@yp@yq@yr@ys@�'@yuy|yv@yw@yx@yy@yz@y{@F�@y}@y~@y@y�@y�@y�@E@y�y�y�y�y�y�y�@y�@y�@y�@y�@y�@��@y�@y�@y�@y�@y�@y�@E@y�@y�@y�@y�@y�@y�@y�@�@y�y�y�y�y�@y�@y�@y�@y�@y�@�@y�@y�@y�@y�@y�@y�@E@y�y�y�@y�@y�@y�@y�@y�@�@y�@y�@y�@y�@y�@y�@E@y�y�y�y�y�y�y�y�y�@y�@y�@y�@y�@y�@E@y�@y�@y�@y�@y�@y�@|�@y�y�y�@y�@y�@y�@y�@y�@�@y�@y�@y�@y�@y�@y�@E@y�y�@y�y�@y�@y�@y�@y�@Ez@y�y�y�@y�@y�@y�@y�@y�@Ae@y�@y�@y�@y�@y�@y�@�'@y�zy�zy�y�y�@y�@y�@y�@y�@y�@@&@y�@y�@z@z@z@z@�@zzz@z@z@z	@z
@z@Ae@z
@z@z@z@z@z@H:@zz#zzz@z@z@z@z@z@��@z@z@z@z @z!@z"@�'@z$z+z%@z&@z'@z(@z)@z*@�@z,@z-@z.@z/@z0@z1@E@z3z�z4zsz5zTz6zEz7z>z8@z9@z:@z;@z<@z=@Ae@z?@z@@zA@zB@zC@zD@H�@zFzMzG@zH@zI@zJ@zK@zL@�~@zN@zO@zP@zQ@zR@zS@H�@zUzdzVz]zW@zX@zY@zZ@z[@z\@�@z^@z_@z`@za@zb@zc@H:@zezlzf@zg@zh@zi@zj@zk@�@zm@zn@zo@zp@zq@zr@H:@ztz�zuz�zvz}zw@zx@zy@zz@z{@z|@�@z~@z@z�@z�@z�@z�@E@z�z�z�@z�@z�@z�@z�@z�@Ae@z�@z�@z�@z�@z�@z�@E@z�z�z�z�z�@z�@z�@z�@z�@z�@�@z�@z�@z�@z�@z�@z�@Ae@z�z�z�@z�@z�@z�@z�@z�@�@z�@z�@z�@z�@z�@z�@Ae@z�z�z�z�z�z�z�z�z�@z�@z�@z�@z�@z�@E@z�@z�@z�@z�@z�@z�@E@z�z�z�@z�@z�@z�@z�@z�@�@z�@z�@z�@z�@z�@z�@��@z�z�z�z�z�@z�@z�@z�@z�@z�@�@z�@z�@z�@z�@z�@z�@�@z�@z�@z�@z�@z�@z�@z�@E@z�{z�z�@z�z�@z�@z�@z�@z�@z�@Ae@z�z�z�@z�@z�@z�@z�@z�@E@z�@z�@{@{@{@{@�@{{{{
{@{@{	@{
@{@{@�@{@{@{@{@{@{@�@{{{@{@{@{@{@{@Ae@{@{@{@{ @{!@{"@�@{$|�{%|{&{�{'{f{({G{){8{*{1{+@{,@{-@{.@{/@{0@�@{2@{3@{4@{5@{6@{7@E@{9{@{:@{;@{<@{=@{>@{?@az@{A@{B@{C@{D@{E@{F@Ae@{H{W{I{P{J@{K@{L@{M@{N@{O@�@{Q@{R@{S@{T@{U@{V@E@{X{_{Y@{Z@{[@{\@{]@{^@�~@{`@{a@{b@{c@{d@{e@E@{g{�{h{w{i{p{j@{k@{l@{m@{n@{o@HG@{q@{r@{s@{t@{u@{v@E@{x{{y@{z@{{@{|@{}@{~@Ba@{�@{�@{�@{�@{�@{�@E@{�{�{�{�{�@{�@{�@{�@{�@{�@F�@{�@{�@{�@{�@{�@{�@�@{�{�{�@{�@{�@{�@{�@{�@E@{�@{�@{�@{�@{�@{�@Ae@{�{�{�{�{�{�{�{�{�@{�@{�@{�@{�@{�@�@{�@{�@{�@{�@{�@{�@Ae@{�{�{�@{�@{�@{�@{�@{�@H�@{�@{�@{�@{�@{�@{�@E@{�{�{�{�{�@{�@{�@{�@{�@{�@H�@{�@{�@{�@{�@{�@{�@Ae@{�{�{�@{�@{�@{�@{�@{�@H�@{�@{�@{�@{�@{�@{�@�@{�{�{�{�{�@{�@{�@{�@{�@{�@E@{�{�{�@{�@{�@{�@{�@{�@�@{�@{�@{�@{�@{�@{�@�~@{�|@{�|@|@|@|@|@|@E@|||@|	@|
@|@|@|
@�@|@|@|@|@|@|@�@||�||H||)||!@||@|@|@|@|@| @�@@|"|#@|$@|%@|&@|'@|(@�@|*|9|+|2|,@|-@|.@|/@|0@|1@H:@|3@|4@|5@|6@|7@|8@�@|:|A|;@|<@|=@|>@|?@|@@Ae@|B@|C@|D@|E@|F@|G@�@|I|a|J|R@|K|L@|M@|N@|O@|P@|Q@�@|S|Z|T@|U@|V@|W@|X@|Y@�@|[@|\@|]@|^@|_@|`@E@|b|q|c|j|d@|e@|f@|g@|h@|i@E@|k@|l@|m@|n@|o@|p@E@|r|y|s@|t@|u@|v@|w@|x@�S@|z@|{@||@|}@|~@|@H:@|�|�|�|�|�|�|�|�|�@|�@|�@|�@|�@|�@Ae@|�@|�@|�@|�@|�@|�@�@|�|�|�@|�@|�@|�@|�@|�@E@|�@|�@|�@|�@|�@|�@�@|�|�|�|�|�@|�@|�@|�@|�@|�@�@|�@|�@|�@|�@|�@|�@�@|�|�|�@|�@|�@|�@|�@|�@�@|�@|�@|�@|�@|�@|�@�@|�|�|�|�@|�|�@|�@|�@|�@|�@|�@�@|�|�|�@|�@|�@|�@|�@|�@��@|�@|�@|�@|�@|�@|�@Ez@|�|�|�|�|�@|�@|�@|�@|�@|�@E@|�@|�@|�@|�@|�@|�@��@|�|�|�@|�@|�@|�@|�@|�@�@|�@|�@|�@|�@|�@|�@A@|�}�|�}r|�}3|�}|�}|�}|�@}@}@}@}@}@��@}@}@}@}	@}
@}@E@}
}}@}@}@}@}@}@�@}@}@}@}@}@}@�@}}+}}$}@}@} @}!@}"@}#@�@}%@}&@}'@}(@})@}*@�@@},}-@}.@}/@}0@}1@}2@�~@}4}S}5}D}6}=}7@}8@}9@}:@};@}<@@&@}>@}?@}@@}A@}B@}C@E@}E}L}F@}G@}H@}I@}J@}K@Ae@}M@}N@}O@}P@}Q@}R@�@}T}c}U}\}V@}W@}X@}Y@}Z@}[@�@}]@}^@}_@}`@}a@}b@�@}d}k}e@}f@}g@}h@}i@}j@E@}l@}m@}n@}o@}p@}q@�@}s}�}t}�}u}�}v}}}w@}x@}y@}z@}{@}|@E�@}~@}@}�@}�@}�@}�@N@}�}�}�@}�@}�@}�@}�@}�@H:@}�@}�@}�@}�@}�@}�@Ae@}�}�}�}�}�@}�@}�@}�@}�@}�@��@}�@}�@}�@}�@}�@}�@�@}�}�}�@}�@}�@}�@}�@}�@Ae@}�@}�@}�@}�@}�@}�@E@}�}�}�}�}�}�}�@}�@}�@}�@}�@}�@��@}�@}�@}�@}�@}�@}�@E@}�}�}�@}�@}�@}�@}�@}�@Ae@}�@}�@}�@}�@}�@}�@�@}�}�@}�}�@}�@}�@}�@}�@}�@�@}�}�}�@}�@}�@}�@}�@}�@Ae@}�@}�@}�@}�@}�@}�@Ez@}�~j}�~+}�~}�}�}�}�}�@}�@}�@}�@}�@}�@�@}�@}�@}�@}�@}�@}�@�@}�~}�@~@~@~@~@~@��@~@~@~@~	@~
@~@H�@~
~~~~@~@~@~@~@~@�@~@~@~@~@~@~@�'@~~$~@~@~ @~!@~"@~#@H:@~%@~&@~'@~(@~)@~*@�@~,~K~-~<~.~5~/@~0@~1@~2@~3@~4@�@~6@~7@~8@~9@~:@~;@E@~=~D~>@~?@~@@~A@~B@~C@Ae@~E@~F@~G@~H@~I@~J@H�@~L~[~M~T~N@~O@~P@~Q@~R@~S@�@~U@~V@~W@~X@~Y@~Z@H�@~\~c~]@~^@~_@~`@~a@~b@Ae@~d@~e@~f@~g@~h@~i@E@~k~�~l~�~m~|~n~u~o@~p@~q@~r@~s@~t@A@~v@~w@~x@~y@~z@~{@F�@~}@~~@~@~�@~�@~�@~�@Ae@~�~�@~�~�@~�@~�@~�@~�@~�@E@~�~�~�@~�@~�@~�@~�@~�@�@~�@~�@~�@~�@~�@~�@E@~�~�~�~�~�~�~�@~�@~�@~�@~�@~�@E@~�@~�@~�@~�@~�@~�@E@@~�~�@~�@~�@~�@~�@~�@E@~�~�~�~�~�@~�@~�@~�@~�@~�@�@~�@~�@~�@~�@~�@~�@H:@~�~�~�@~�@~�@~�@~�@~�@Ae@~�@~�@~�@~�@~�@~�@�@~��F~���~��~�I~�~�~�~�~�~�~�~�@~�@~�@~�@~�@~�@F�@~�@~�@~�@~�@~�@~�@�@@~�~�@~�@~�@~�@~�@~�@�@~�~�~�~�@~�@~�@~�@~�@~�@Ae@~�@~�@~�@~�@@@�@
@@@@@	@H:@@@
@@@@H:@1"@@@@@@F�@@@@@ @!@H:@#*$@%@&@'@(@)@�@+@,@-@.@/@0@H:@2:@34@5@6@7@8@9@E@;B<@=@>@?@@@A@�@C@D@E@F@G@H@E@J�KcLT@MN@O@P@Q@R@S@E@U\V@W@X@Y@Z@[@�@]@^@_@`@a@b@E@dself@g@h@i@j@k@H�@m@n@o@p@q@r@�@t{u@v@w@x@y@z@H:@|@}@~@@�@�@�@����@��@�@�@�@�@�@E@@��@�@�@�@�@�@E@�����@�@�@�@�@�@E@�@�@�@�@�@�@�@@��@�@�@�@�@�@HG@��%���������@�@�@�@�@�@E@�@�@�@�@�@�@E@���@�@�@�@�@�@�@�@�@�@�@�@�@H:@�����@�@�@�@�@�@E@�@�@�@�@�@�@E@���@�@�@�@�@�@F�@�@�@�@�@�@�@H:@����@��@�@�@�@�@�@E@���@�@�@�@�@�@@&@�@�@�@�@�@�@H:@�����	@�
@�@�@�
@�@�@�@�@�@�@�@�@Ae@���@�@�@�@�@�@Ae@�@� @�!@�"@�#@�$@Ae@�&�W�'�F�(�7�)�0�*@�+@�,@�-@�.@�/@F�@�1@�2@�3@�4@�5@�6@E@�8�?�9@�:@�;@�<@�=@�>@E@�@@�A@�B@�C@�D@�E@H�@�G�O�H@�I@�J@�K@�L@�M@�N@�@@�P�Q@�R@�S@�T@�U@�V@E@�X�w�Y�h�Z�a�[@�\@�]@�^@�_@�`@�@�b@�c@�d@�e@�f@�g@�@�i�p�j@�k@�l@�m@�n@�o@Ae@�q@�r@�s@�t@�u@�v@E@�x��@�y�z@�{@�|@�}@�~@�@E@@����@��@��@��@��@��@�@���d���������������������@��@��@��@��@��@�@��@��@��@��@��@��@Ba@������@��@��@��@��@��@E@��@��@��@��@��@��@E@����������@��@��@��@��@��@E@��@��@��@��@��@��@E@������@��@��@��@��@��@�Y@��@��@��@��@��@��@E@��������������@��@��@��@��@��@E@��@��@��@��@��@��@��@������@��@��@��@��@��@Ez@��@��@��@��@��@��@Ae@����������@��@��@��@��@��@Ae@��@��@��@��@��@��@�@@����@��@��@��@�@�@Ez@��4����
�@�@�@�	@�
@�@�@N@���@�@�@�@�@�@H:@�@�@�@�@�@�@az@��%@��@� @�!@�"@�#@�$@E@�&�-�'@�(@�)@�*@�+@�,@Ae@�.@�/@�0@�1@�2@�3@E@�5�M�6�>@�7�8@�9@�:@�;@�<@�=@H�@�?�F�@@�A@�B@�C@�D@�E@�@�G@�H@�I@�J@�K@�L@E@�N�V@�O�P@�Q@�R@�S@�T@�U@�@�W�^�X@�Y@�Z@�[@�\@�]@Ez@�_@�`@�a@�b@�c@E@�e���f���g��h�p�i@�j@�k@�l@�m@�n@�o@��@�q�x�r@�s@�t@�u@�v@�w@�@�y@�z@�{@�|@�}@�~@E@����������@��@��@��@��@��@Ae@��@��@��@��@��@��@E@������@��@��@��@��@��@�@��@��@��@��@��@��@E@��������������@��@��@��@��@��@�@��@��@��@��@��@��@Ae@@����@��@��@��@��@��@H:@����������@��@��@��@��@��@��@��@��@��@��@��@��@E@������@��@��@��@��@��@H�@��@��@��@��@��@��@�@�����������������@��@��@��@��@��@H:@��@��@��@��@��@Ba@������@��@��@��@��@��@H�@��@��@��@��@��@��@Ae@����@����@��@��@��@��@��@E@���@�@�@�@�@�@H�@�@�	@�
@�@�@�
@�@��'��@��@�@�@�@�@�@�@�� �@�@�@�@�@�@�@�!@�"@�#@�$@�%@�&@�@�(�7�)�0�*@�+@�,@�-@�.@�/@H�@�1@�2@�3@�4@�5@�6@E@�8�?�9@�:@�;@�<@�=@�>@�@�@@�A@�B@�C@�D@�E@E@�G���H��I���J�l�K�[@�L�M�T�N@�O@�P@�Q@�R@�S@E@�U@�V@�W@�X@�Y@�Z@�@�\�d�]@�^@�_@�`@�a@�b@�c@H�@@�e�f@�g@�h@�i@�j@�k@E@�m���n�}�o�v�p@�q@�r@�s@�t@�u@Ba@�w@�x@�y@�z@�{@�|@Ez@�~���@��@��@��@��@��@E@��@��@��@��@��@��@��@����@����@��@��@��@��@��@E@������@��@��@��@��@��@��@��@��@��@��@��@��@�@������������������@��@��@��@��@��@Ae@��@��@��@��@��@��@�@��@��@��@��@��@��@��@�@����������@��@��@��@��@��@Ba@��@��@��@��@��@��@H:@������@��@��@��@��@��@Ae@��@��@��@��@��@��@Ez@����������@��@��@��@��@��@��@Ae@������@��@��@��@��@��@�@��@��@��@��@��@��@H�@���������@��@��@��@��@��@Ae@�@�@�@�@�@�@�@���@�	@�
@�@�@�
@�@�@�@�@�@�@�@F�@�����V��7��(��!�@�@�@�@�@� @�@�"@�#@�$@�%@�&@�'@�@�)�0�*@�+@�,@�-@�.@�/@Ez@�1@�2@�3@�4@�5@�6@E@�8�G�9�@�:@�;@�<@�=@�>@�?@�@�A@�B@�C@�D@�E@�F@E@�H�O�I@�J@�K@�L@�M@�N@E@�P@�Q@�R@�S@�T@�U@E@�W�n�X�`@�Y�Z@�[@�\@�]@�^@�_@Ae@�a�g�b@�c@�d@�e@�f@Ae@�h@�i@�j@�k@�l@�m@Ae@�o�~�p�w�q@�r@�s@�t@�u@�v@Ae@�x@�y@�z@�{@�|@�}@HG@�����@��@��@��@��@��@E@��@��@��@��@��@��@F�@������������������@��@��@��@��@��@F�@��@��@��@��@��@�Y@������@��@��@��@��@��@Ae@��@��@��@��@��@��@HG@������@��@��@��@��@��@��@HG@������@��@��@��@��@��@Ae@��@��@��@��@��@��@Ae@��������@����@��@��@��@��@��@�~@��@��@��@��@��@��@��@Ae@����������@��@��@��@��@��@E@��@��@��@��@��@��@E@������@��@��@��@��@��@��@��@��@��@��@��@��@�~@�������b���1������
�����@��@��@�@�@�@Ez@�@�@�@�@�@�	@H�@�@�@�
@�@�@�@�@�6@��"���@�@�@�@�@�@Ae@�@�@�@�@� @�!@�@�#�*�$@�%@�&@�'@�(@�)@F�@�+@�,@�-@�.@�/@�0@Ae@�2�J�3�;@�4�5@�6@�7@�8@�9@�:@E@�<�C�=@�>@�?@�@@�A@�B@�@�D@�E@�F@�G@�H@�I@�@�K�Z�L�S�M@�N@�O@�P@�Q@�R@Ae@�T@�U@�V@�W@�X@�Y@E@�[@�\@�]@�^@�_@�`@�a@�Y@�c���d���e�t�f�m�g@�h@�i@�j@�k@�l@HG@�n@�o@�p@�q@�r@�s@E@�u�|�v@�w@�x@�y@�z@�{@H:@�}@�~@�@��@��@��@Ez@������@��@��@��@��@��@��@Ae@������@��@��@��@��@��@�@��@��@��@��@��@��@�@��������������@��@��@��@��@��@�@��@��@��@��@��@��@�@������@��@��@��@��@��@�@��@��@��@��@��@��@�@����@����@��@��@��@��@��@��@������@��@��@��@��@��@�@��@��@��@��@��@��@Ae@���K���
��������������@��@��@��@��@��@�@��@��@��@��@��@��@�@������@��@��@��@��@��@�@��@��@��@��@��@��@��@���������@��@��@��@��@��@�@��@�@�@�@�@�@Ae@@��@�@�	@�
@�@�@�'@��,�����@�@�@�@�@Ae@�@�@�@�@�@�@Ae@��%�@� @�!@�"@�#@�$@E@�&@�'@�(@�)@�*@�+@H:@�-�<�.�5�/@�0@�1@�2@�3@�4@HG@�6@�7@�8@�9@�:@�;@E@�=�D�>@�?@�@@�A@�B@�C@Ez@�E@�F@�G@�H@�I@�J@H:@�L�|�M�e�N�V@�O�P@�Q@�R@�S@�T@�U@Ez@�W�^�X@�Y@�Z@�[@�\@�]@Ae@�_@�`@�a@�b@�c@�d@E@�f�t�g�n�h@�i@�j@�k@�l@�m@�S@�o@�p@�q@�r@�s@E@@�u�v@�w@�x@�y@�z@�{@Ae@�}���~�������@��@��@��@��@��@E@��@��@��@��@��@��@�@������@��@��@��@��@��@Ae@��@��@��@��@��@��@E@����������@��@��@��@��@��@�@��@��@��@��@��@��@E@������@��@��@��@��@��@E@��@��@��@��@��@��@E@���j������X�����������6������������������@��@��@��@E@��@��@��@��@��@��@�@������@��@��@��@��@��@A@��@��@��@��@��@��@�@����������@��@��@��@��@��@H:@��@��@��@��@��@��@�@@����@��@��@��@��@��@�~@�����������@��@��@��@�@�@H:@�@�@�@�@�@F�@�	��
@�@�@�
@�@�@Ae@�@�@�@�@�@�@@&@��'�� �@�@�@�@�@�@Ae@�!@�"@�#@�$@�%@�&@E@�(�/�)@�*@�+@�,@�-@�.@�@�0@�1@�2@�3@�4@�5@F�@�7�k�8�S�9�D�:�=�;@�<@H:@�>@�?@�@@�A@�B@�C@�@�E�L�F@�G@�H@�I@�J@�K@�@�M@�N@�O@�P@�Q@�R@E@�T�\�U@�V@�W@�X@�Y@�Z@�[@�@�]�d�^@�_@�`@�a@�b@�c@�@�e@�f@�g@�h@�i@�j@E@�l���m�|�n�u�o@�p@�q@�r@�s@�t@Ba@�v@�w@�x@�y@�z@�{@E@�}���~@�@��@��@��@��@HG@��@��@��@��@��@��@E@����@����@��@��@��@��@��@�~@@����@��@��@��@��@��@E@���������������@����@��@��@��@��@��@Ae@������@��@��@��@��@��@Ae@��@��@��@��@��@��@�@����������@��@��@��@��@��@Ae@��@��@��@��@��@��@E@������@��@��@��@��@��@�@��@��@��@��@��@��@E@��������������@��@��@��@��@��@Ae@��@��@��@��@��@��@E@������@��@��@��@��@��@E@��@��@��@��@��@��@�@���������@��@��@��@��@��@H�@�@�@�@�@�@�@H�@���@�	@�
@�@�@�
@��@�@�@�@�@�@�@E@��N��6��'�� �@�@�@�@�@�@�@�!@�"@�#@�$@�%@�&@E@�(�/�)@�*@�+@�,@�-@�.@Ez@�0@�1@�2@�3@�4@�5@H:@�7�F�8�?�9@�:@�;@�<@�=@�>@H�@�@@�A@�B@�C@�D@�E@�@�G@�H@�I@�J@�K@�L@�M@Ae@�O�g�P�X@�Q�R@�S@�T@�U@�V@�W@H:@�Y�`�Z@�[@�\@�]@�^@�_@�@�a@�b@�c@�d@�e@�f@H�@�h�w�i�p�j@�k@�l@�m@�n@�o@H�@�q@�r@�s@�t@�u@�v@�@�x��y@�z@�{@�|@�}@�~@�@��@��@��@��@��@��@�@���w�����������������������T���T���T���T���T)[�T���T���T���T���T���T���T���T�������T���T���T���T���T���T��T���T���T���T���T���T���T���T�����������T���T���T���T���T���T���T���T���T���T���T���T���T���T�������T���T���T���T���T���T�{�T���T���T���T���T���T���T�~�T��������������@��@��@��@��@��@Ae@��@��@��@��@��@��@N@������@��@��@��@��@��@Ez@��@��@��@��@��@��@E@����@����@��@��@��@��@��@H:@������@��@��@��@��@��@�@��@��@��@��@��@��@�@��?�� ����
�@�@�@�@�@�	@E@�@�@�
@�@�@�@H�@���@�@�@�@�@�@�@�@�@�@�@�@�@N@�!�0�"�)�#@�$@�%@�&@�'@�(@�@�*@�+@�,@�-@�.@�/@E@�1�8�2@�3@�4@�5@�6@�7@�@�9@�:@�;@�<@�=@�>@E@�@�_�A�P�B�I�C@�D@�E@�F@�G@�H@H�@�J@�K@�L@�M@�N@�O@@&@�Q�X�R@�S@�T@�U@�V@�W@Ba@�Y@�Z@�[@�\@�]@�^@�'@�`�o�a�h�b@�c@�d@�e@�f@�g@�@�i@�j@�k@�l@�m@�n@E@@�p�q@�r@�s@�t@�u@�v@E@�x���y���z���{���|���}@�~@�@��@��@��@��@��@��@��@��@��@��@E@������@��@��@��@��@��@Ba@��@��@��@��@��@��@�@��@������@��@��@��@��@��@�@��@��@��@��@��@��@E@��������������@��@��@��@��@��@H�@��@��@��@��@��@Ba@������@��@��@��@��@��@�@��@��@��@��@��@��@�'@����������@��@��@��@��@��@E@��@��@��@��@��@��@E@@����@��@��@��@��@��@�@��� �������������@��@��@��@��@��@��@��@��@��@��@��@��@E@������@��@��@��@��@��@�@��@��@��@��@��@�@Ae@����
�@�@�@�@�@�	@Ae@�@�@�
@�@�@�@E@���@�@�@�@�@�@Ae@�@�@�@�@�@�@�'@�!�9�"�*@�#�$@�%@�&@�'@�(@�)@�'@�+�2�,@�-@�.@�/@�0@�1@A@�3@�4@�5@�6@�7@�8@�@�:�I�;�B�<@�=@�>@�?@�@@�A@�@�C@�D@�E@�F@�G@�H@|�@�J�Q�K@�L@�M@�N@�O@�P@�@�R@�S@�T@�U@�V@�W@H @�Y�9�Z�P�[���\���]�{�^�l�_�e�`@�a@�b@�c@�d@Ae@�f@�g@�h@�i@�j@�k@Ez@�m�t�n@�o@�p@�q@�r@�s@Ae@�u@�v@�w@�x@�y@�z@E@�|���}���~@�@��@��@��@��@�@��@��@��@��@��@��@�@������@��@��@��@��@��@�@��@��@��@��@��@��@�@��������������@��@��@��@��@��@E@��@��@��@��@��@��@�@������@��@��@��@��@��@�@��@��@��@��@��@��@�@����������@��@��@��@��@��@Ae@��@��@��@��@��@��@H�@������@��@��@��@��@��@�@��@��@��@��@��@��@H @�����������������@��@��@��@��@��@��@��@��@��@��@��@E@������@��@��@��@��@��@E@��@��@��@��@��@��@H�@���@����@��@��@��@�@�@H�@��
�@�@�@�@�@�	@E@�@�@�
@�@�@�@��@��1��"���@�@�@�@�@�@E@�@�@�@�@� @�!@�~@�#�*�$@�%@�&@�'@�(@�)@E@�+@�,@�-@�.@�/@�0@H�@�2�A�3�:�4@�5@�6@�7@�8@�9@Ae@�;@�<@�=@�>@�?@�@@�@�B�I�C@�D@�E@�F@�G@�H@��@�J@�K@�L@�M@�N@�O@E@�Q���R���S�r�T�c�U�\�V@�W@�X@�Y@�Z@�[@Ae@�]@�^@�_@�`@�a@�b@E@�d�k�e@�f@�g@�h@�i@�j@E@�l@�m@�n@�o@�p@�q@@&@�s���t�{�u@�v@�w@�x@�y@�z@Ae@�|@�}@�~@�@��@��@E@��@��@��@��@��@��@��@�@��������@����@��@��@��@��@��@�@������@��@��@��@��@��@�@��@��@��@��@��@��@E@����������@��@��@��@��@��@�@��@��@��@��@��@��@H:@������@��@��@��@��@��@�@��@��@��@��@��@��@H:@������������������@��@��@��@��@��@E@��@��@��@��@��@��@Ae@��@��@��@��@��@��@��@�@����������@��@��@��@��@��@�@��@��@��@��@��@��@�6@������@��@��@��@��@��@Ae@��@��@��@��@��@��@�@�����������@�@�@�@�@�@Ba@�@�@�@�	@�
@�@�@�
��@�@�@�@�@�@A@�@�@�@�@�@�@Ae@��*��#�@�@� @�!@�"@E@�$@�%@�&@�'@�(@�)@Ba@�+�2�,@�-@�.@�/@�0@�1@�@�3@�4@�5@�6@�7@�8@E@�:�*�;���<�s�=�\�>�M�?�F�@@�A@�B@�C@�D@�E@@&@�G@�H@�I@�J@�K@�L@E@�N�U�O@�P@�Q@�R@�S@�T@E@�V@�W@�X@�Y@�Z@�[@E@�]�e@�^�_@�`@�a@�b@�c@�d@H:@�f�l�g@�h@�i@�j@�k@E@�m@�n@�o@�p@�q@�r@E@�t���u���v�}�w@�x@�y@�z@�{@�|@F�@�~@�@��@��@��@��@�@������@��@��@��@��@��@��@��@��@��@��@��@��@E@����������@��@��@��@��@��@Ae@��@��@��@��@��@��@Ae@������@��@��@��@��@��@�@��@��@��@��@��@��@�@������������������@��@��@��@��@��@A@��@��@��@��@��@��@E@������@��@��@��@��@��@E@��@��@��@��@��@��@�@����������@��@��@��@��@��@Ae@��@��@��@��@��@��@Ez@������@��@��@��@��@��@E@��@��@��@��@��@��@E@�������@����@��@��@��@��@��@E@�����@��@�@�@�@�@H�@�@�@�@�@�	@�
@�@���
��@�@�@�@�@�@Ez@�@�@�@�@�@�@Ae@��#�@�@�@� @�!@�"@�@�$@�%@�&@�'@�(@�)@E@�+���,�j�-�L�.�=�/�6�0@�1@�2@�3@�4@�5@H�@�7@�8@�9@�:@�;@�<@�~@�>�E�?@�@@�A@�B@�C@�D@E@�F@�G@�H@�I@�J@�K@�g@�M�[�N�U�O@�P@�Q@�R@�S@�T@E@�V@�W@�X@�Y@�Z@@&@�\�c�]@�^@�_@�`@�a@�b@E@�d@�e@�f@�g@�h@�i@�@�k���l�{�m�t�n@�o@�p@�q@�r@�s@Ba@�u@�v@�w@�x@�y@�z@E@�|���}@�~@�@��@��@��@�@��@��@��@��@��@��@E@����@����@��@��@��@��@��@E@��@��@��@��@��@��@��@�@������������@����@��@��@��@��@��@�@������@��@��@��@��@��@E@��@��@��@��@��@��@E@����������@��@��@��@��@��@Ae@��@��@��@��@��@��@�@������@��@��@��@��@��@�@��@��@��@��@��@��@Ae@��������������@��@��@��@��@��@Ae@��@��@��@��@��@��@�@@����@��@��@��@��@��@E@����@����@��@��@��@��@��@�@������@��@��@��@��@��@�@��@�@�@�@�@�@E@����������	�x�
�H��)���
��@�@�@�@�@�@@&@�@�@�@�@�@�@�@��"�@�@�@� @�!@E@�#@�$@�%@�&@�'@�(@E@�*�9�+�2�,@�-@�.@�/@�0@�1@Ae@�3@�4@�5@�6@�7@�8@�@�:�A�;@�<@�=@�>@�?@�@@�@�B@�C@�D@�E@�F@�G@H:@�I�Y@�J�K�R�L@�M@�N@�O@�P@�Q@�@�S@�T@�U@�V@�W@�X@�@�Z�i�[�b�\@�]@�^@�_@�`@�a@��@�c@�d@�e@�f@�g@�h@|�@�j�q�k@�l@�m@�n@�o@�p@E@�r@�s@�t@�u@�v@�w@H:@�y���z���{���|���}@�~@�@��@��@��@Ae@��@��@��@��@��@��@E@������@��@��@��@��@��@�@��@��@��@��@��@��@E@����������@��@��@��@��@��@�@��@��@��@��@��@��@E@������@��@��@��@��@��@Ba@��@��@��@��@��@��@Ez@����@��������@��@��@��@��@��@L�@��@��@��@��@��@��@E@����������@��@��@��@��@��@�@��@��@��@��@��@��@H:@@����@��@��@��@��@��@�@���a���"�������������@��@��@��@��@��@Ae@��@��@��@��@��@��@Ae@������@��@��@��@��@��@E@��@��@��@�@�@�@F�@�����@�@�@�	@�
@�@�@�
@�@�@�@�@�@E@���@�@�@�@�@�@Ae@�@�@�@�@� @�!@Ae@�#�B�$�3�%�,�&@�'@�(@�)@�*@�+@E@�-@�.@�/@�0@�1@�2@�@�4�;�5@�6@�7@�8@�9@�:@E@�<@�=@�>@�?@�@@�A@E@�C�R�D�K�E@�F@�G@�H@�I@�J@�@�L@�M@�N@�O@�P@�Q@Ba@�S�Z�T@�U@�V@�W@�X@�Y@�@�[@�\@�]@�^@�_@�`@H�@�b���c���d�s�e�l�f@�g@�h@�i@�j@�k@Ae@�m@�n@�o@�p@�q@�r@�@�t�{�u@�v@�w@�x@�y@�z@�@�|@�}@�~@�@��@��@F�@����������@��@��@��@��@��@Ba@��@��@��@��@��@��@Ae@������@��@��@��@��@��@H:@��@��@��@��@��@��@N@��������������@��@��@��@��@��@Ba@��@��@��@��@��@��@F�@������@��@��@��@��@��@�@��@��@��@��@��@��@�@����������@��@��@��@��@E@��@��@��@��@��@��@A@��@��@��@��@��@��@��@�@�������D�����������������@��@��@��@��@��@@&@��@��@��@��@��@��@�@��@��@��@��@��@��@��@Ae@����@����@��@��@��@��@��@�@�����@�@�@�@�@�@�@�@�@�@�	@�
@�@�@�
�%��@��@�@�@�@�@�@E@���@�@�@�@�@�@E@�@� @�!@�"@�#@�$@�@�&�5�'�.�(@�)@�*@�+@�,@�-@E@�/@�0@�1@�2@�3@�4@@&@�6�=�7@�8@�9@�:@�;@�<@HG@�>@�?@�@@�A@�B@�C@H:@�E���F�e�G�V�H�O�I@�J@�K@�L@�M@�N@E@�P@�Q@�R@�S@�T@�U@�@�W�^�X@�Y@�Z@�[@�\@�]@E@�_@�`@�a@�b@�c@�d@H:@�f�u�g�n�h@�i@�j@�k@�l@�m@H�@�o@�p@�q@�r@�s@�t@H:@�v�}�w@�x@�y@�z@�{@�|@Ba@�~@�@��@��@��@��@E@��������������@��@��@��@��@��@�@��@��@��@��@��@��@H�@������@��@��@��@��@��@Ae@��@��@��@��@��@��@Ae@����������@��@��@��@��@��@E@��@��@��@��@��@��@Ae@������@��@��@��@��@��@�@��@��@��@��@��@��@E@���C�����������������@��@��@��@��@��@Ba@��@��@��@��@��@��@HG@������@��@��@��@��@��@E@��@��@��@��@��@��@�@����������@��@��@��@��@��@Ae@��@��@��@��@��@��@�@������@��@��@��@��@��@HG@��@��@�@�@�@�@Ez@��$�����@�	@�
@�@�@�
@Ez@�@�@�@�@�@�@�@���@�@�@�@�@�@E@�@�@� @�!@�"@�#@E@�%�4�&�-�'@�(@�)@�*@�+@�,@Ae@�.@�/@�0@�1@�2@�3@E@�5�<�6@�7@�8@�9@�:@�;@�@�=@�>@�?@�@@�A@�B@H:@�D�|�E�d�F�U�G�N�H@�I@�J@�K@�L@�M@@&@�O@�P@�Q@�R@�S@�T@�'@�V�]�W@�X@�Y@�Z@�[@�\@�@�^@�_@�`@�a@�b@�c@�'@�e�m@�f�g@�h@�i@�j@�k@�l@E@�n�u�o@�p@�q@�r@�s@�t@F�@�v@�w@�x@�y@�z@�{@�~@�}���~�������@��@��@��@��@��@H:@��@��@��@��@��@��@|�@������@��@��@��@��@��@�@��@��@��@��@��@��@�@����������@��@��@��@��@��@��@��@��@��@��@��@��@E@������@��@��@��@��@��@�@��@��@��@��@��@��@H�@�����������(������������@����@��@��@��@��@��@E@������@��@��@��@��@��@�@��@��@��@��@��@��@Ez@����������@��@��@��@��@��@Ae@��@��@��@��@��@��@�~@������@��@��@��@��@��@�@��@��@��@��@��@��@�~@���	���@����@��@��@��@��@�@H @�@�@�@�@�@�@�@Ae@�
����@�
@�@�@�@�@�@�@�@�@�@�@�@�'@��!�@�@�@�@�@� @E@�"@�#@�$@�%@�&@�'@HG@�)�Y�*�A�+�9�,�2�-@�.@�/@�0@�1@E@�3@�4@�5@�6@�7@�8@Ba@@�:�;@�<@�=@�>@�?@�@@�6@�B�J@�C�D@�E@�F@�G@�H@�I@HG@�K�R�L@�M@�N@�O@�P@�Q@�@�S@�T@�U@�V@�W@�X@H:@�Z�y�[�j�\�c�]@�^@�_@�`@�a@�b@�@�d@�e@�f@�g@�h@�i@�'@�k�r�l@�m@�n@�o@�p@�q@�'@�s@�t@�u@�v@�w@�x@Ae@�z���{���|@�}@�~@�@��@��@E@��@��@��@��@��@��@��@������@��@��@��@��@��@E@��@��@��@��@��@��@H�@���������������������@��@��@��@��@��@H:@��@��@��@��@��@��@E@������@��@��@��@��@��@�@��@��@��@��@��@��@�@����������@��@��@��@��@��@E@��@��@��@��@��@��@E@������@��@��@��@��@��@��@��@��@��@��@��@��@E@��������@����@��@��@��@��@��@Ae@������@��@��@��@��@��@Ae@��@��@��@��@��@��@�@���������@��@��@��@��@��@�@��@��@��@��@�@�@H�@��
�@�@�@�@�@�	@�@�@�@�
@�@�@�@E@��Q��2��#���@�@�@�@�@�@�@�@�@�@� @�!@�"@E@�$�+�%@�&@�'@�(@�)@�*@Ae@�,@�-@�.@�/@�0@�1@E@�3�B�4�;�5@�6@�7@�8@�9@�:@�@�<@�=@�>@�?@�@@�A@HG@�C�J�D@�E@�F@�G@�H@�I@H�@�K@�L@�M@�N@�O@�P@E@�R�q�S�b�T�[�U@�V@�W@�X@�Y@�Z@�@�\@�]@�^@�_@�`@�a@��@�c�j�d@�e@�f@�g@�h@�i@H�@�k@�l@�m@�n@�o@�p@E@�r���s�z�t@�u@�v@�w@�x@�y@�@�{@�|@�}@�~@�@��@�@������@��@��@��@��@��@A@��@��@��@��@��@��@E@���y���������������@����@��@��@��@��@��@�@������@��@��@��@��@��@Ez@��@��@��@��@��@��@H:@����������@��@��@��@��@��@��@��@��@��@��@��@��@E@������@��@��@��@��@��@E@��@��@��@��@��@��@E@��������������@��@��@��@��@��@E@��@��@��@��@��@��@E@������@��@��@��@��@Ae@��@��@��@��@��@Ae@����������@��@��@��@��@��@L@��@��@��@��@��@��@Ae@�����@��@��@��@��@�@�@�@�@�@�@�@�@�@�	�:�
�"�����
@�@�@�@�@�@E@�@�@�@�@�@�@�@@��@�@�@�@� @�!@E@�#�+@�$�%@�&@�'@�(@�)@�*@E@�,�3�-@�.@�/@�0@�1@�2@H:@�4@�5@�6@�7@�8@�9@E@�;�Z�<�K�=�D�>@�?@�@@�A@�B@�C@�@�E@�F@�G@�H@�I@�J@�'@�L�S�M@�N@�O@�P@�Q@�R@F�@�T@�U@�V@�W@�X@�Y@HG@�[�j�\�c�]@�^@�_@�`@�a@�b@Ae@�d@�e@�f@�g@�h@�i@��@�k�r�l@�m@�n@�o@�p@�q@�@�s@�t@�u@�v@�w@�x@E@�z���{���|���}���~���@��@��@��@��@��@H:@��@��@��@��@��@��@E@������@��@��@��@��@��@�@��@��@��@��@��@��@E@����������@��@��@��@��@��@Ae@��@��@��@��@��@��@E@������@��@��@��@��@��@Ae@��@��@��@��@��@��@�@��������������@��@��@��@��@��@A@��@��@��@��@��@��@H:@������@��@��@��@��@��@Ae@��@��@��@��@��@��@�'@����������@��@��@��@��@��@�@��@��@��@��@��@��@�@��@��@��@��@��@��@��@�~@���+������������@��@��@��@��@��@Ae@��@��@�@�@�@�@E@@��@�@�@�	@�
@�@E@�
����@�@�@�@�@�@E@�@�@�@�@�@�@�@��$�@�@� @�!@�"@�#@Ae@�%@�&@�'@�(@�)@�*@E@�,�K�-�<�.�5�/@�0@�1@�2@�3@�4@Ae@�6@�7@�8@�9@�:@�;@H�@�=�D�>@�?@�@@�A@�B@�C@�@�E@�F@�G@�H@�I@�J@�@�L�[�M�T�N@�O@�P@�Q@�R@�S@Ae@�U@�V@�W@�X@�Y@�Z@�@�\�c�]@�^@�_@�`@�a@�b@Ae@�d@�e@�f@�g@�h@�i@E@�k���l�!�m�G�n�]�o���p���q���r���s�z�t@�u@�v@�w@�x@�y@E@�{@�|@�}@�~@�@��@E@������@��@��@��@��@��@M@��@��@��@��@��@��@E@����������@��@��@��@E@��@��@��@��@��@��@Ae@������@��@��@��@��@��@�@��@��@��@��@��@��@E@��������������@��@��@��@��@��@H:@��@��@��@��@��@��@E@������@��@��@��@��@��@
�@��@��@��@��@��@��@E@����������@��@��@��@��@��@E@��@��@��@��@��@��@H:@������@��@��@��@��@��@�@��@��@��@��@��@��@�@���%�������@����@��@��@��@��@��@�@������@��@��@��@��@��@��@�@�@�@�@�@�@��@�����	@�
@�@�@�
@�@�@�@�@�@�@�@�@E@���@�@�@�@�@�@�@�@� @�!@�"@�#@�$@Ae@�&�>�'�/@�(�)@�*@�+@�,@�-@�.@E@�0�7�1@�2@�3@�4@�5@�6@Ae@�8@�9@�:@�;@�<@�=@E@�?�N�@�G�A@�B@�C@�D@�E@�F@��@�H@�I@�J@�K@�L@�M@E@�O�V�P@�Q@�R@�S@�T@�U@Ae@�W@�X@�Y@�Z@�[@�\@E@�^���_���`��a�p�b�i�c@�d@�e@�f@�g@�h@E@�j@�k@�l@�m@�n@�o@E@�q�x�r@�s@�t@�u@�v@�w@�@�y@�z@�{@�|@�}@�~@E@����������@��@��@��@��@��@Ae@��@��@��@��@��@��@�@������@��@��@��@��@��@HG@��@��@��@��@��@��@E@��������������@��@��@��@��@��@Ae@��@��@��@��@��@��@A@������@��@��@��@��@��@H�@��@��@��@��@��@��@Ae@����@����@��@��@��@��@��@B�@������@��@��@��@��@��@H�@��@��@��@��@��@��@H:@�����������@����@��@��@��@��@��@E@������@��@��@��@��@��@E@��@��@��@��@��@��@E@���������@��@��@��@��@��@�@��@��@��@��@��@��@HG@���@�@�@�@�@�@E@�	@�
@�@�@�
@�@�@��/�� ���@�@�@�@�@�@�@�@�@�@�@�@�@�@�!�(�"@�#@�$@�%@�&@�'@��@�)@�*@�+@�,@�-@�.@��M�0�8@�1�2@�3@�4@�5@�6@�7@E@�9�@�:@�;@�<@�=@�>@�?@�@�A@�B@�C@�D@�E@�F@�'@�H�8�I���J���K�c�L�T@�M�N@�O@�P@�Q@�R@�S@�@�U�\�V@�W@�X@�Y@�Z@�[@�@�]@�^@�_@�`@�a@�b@�@�d�s�e�l�f@�g@�h@�i@�j@�k@Ba@�m@�n@�o@�p@�q@�r@Ae@�t�z�u@�v@�w@�x@�y@�@�{@�|@�}@�~@�@��@�'@��������������@��@��@��@��@��@Ae@��@��@��@��@��@��@Ez@������@��@��@��@��@��@�'@��@��@��@��@��@��@�@����������@��@��@��@��@��@H:@��@��@��@��@��@��@E@������@��@��@��@��@��@Ba@��@��@��@��@��@��@�@�����������������@��@��@��@��@��@Ae@��@��@��@��@��@��@Ae@������@��@��@��@��@��@�@��@��@��@��@��@��@Ez@����������@��@��@��@��@��@Ae@��@��@��@��@��@��@�@������@��@��@��@��@��@E@��@��@��@��@��@��@A@����
@��@�@�@�@�@�	@E@���@�
@�@�@�@�@�@�@�@�@�@�@�@�@��)��"�@�@�@�@� @�!@E@�#@�$@�%@�&@�'@�(@E@�*�1�+@�,@�-@�.@�/@�0@�@�2@�3@�4@�5@�6@�7@E@�9���:�x�;�Y�<�J�=�C�>@�?@�@@�A@�B@��@�D@�E@�F@�G@�H@�I@��@�K�R�L@�M@�N@�O@�P@�Q@�@�S@�T@�U@�V@�W@�X@E@�Z�i�[�b�\@�]@�^@�_@�`@�a@Ae@�c@�d@�e@�f@�g@�h@E@�j�q�k@�l@�m@�n@�o@�p@Ae@�r@�s@�t@�u@�v@�w@�@�y���z���{���|@�}@�~@�@��@��@�@��@��@��@��@��@��@H:@������@��@��@��@��@��@�@��@��@��@��@��@��@�@����������@��@��@��@��@��@�@��@��@��@��@��@��@Ez@������@��@��@��@��@��@H:@��@��@��@��@��@��@E@������������@����@��@��@��@��@��@�@������@��@��@��@��@��@Ae@��@��@��@��@��@��@E@����@����@��@��@��@��@��@E@������@��@��@��@��@��@�@��@��@��@��@��@��@�@���������@��@��@��@��@��@��@�@������@��@��@��@��@��@H:@��@��@��@��@�@�@E@�����@�@�@�@�	@�
@Ae@�@�
@�@�@�@�@E@���@�@�@�@�@�@�@�@�@�@�@�@� @H�@�"���#��$���%�d�&�E�'�6�(�/�)@�*@�+@�,@�-@�.@F�@�0@�1@�2@�3@�4@�5@H�@�7�>�8@�9@�:@�;@�<@�=@E@�?@�@@�A@�B@�C@�D@�'@�F�U�G�N�H@�I@�J@�K@�L@�M@Ae@�O@�P@�Q@�R@�S@�T@HG@�V�]�W@�X@�Y@�Z@�[@�\@�@�^@�_@�`@�a@�b@�c@E@�e���f�u�g�n�h@�i@�j@�k@�l@�m@E@�o@�p@�q@�r@�s@�t@E@�v�}�w@�x@�y@�z@�{@�|@�@�~@�@��@��@��@��@E@����������@��@��@��@��@��@E@��@��@��@��@��@��@�'@������@��@��@��@��@��@H�@��@��@��@��@��@��@�@������������������@@&@��@��@��@��@��@��@�@������@��@��@��@��@��@H�@��@��@��@��@��@��@�@����������@��@��@��@��@��@E@��@��@��@��@��@��@�@������@��@��@��@��@��@Ae@��@��@��@��@��@��@E@������������������������������������E��������������������������E������������������������������!9��������������������������E�������������������������!9������	���
���������
��E����������������������!9��������������������E�������]� �?�!�0�"�)�#@�$@�%@�&@�'@�(@E@�*@�+@�,@�-@�.@�/@E@�1�8�2@�3@�4@�5@�6@�7@Ae@�9@�:@�;@�<@�=@�>@E@�@�O�A�H�B���C���D���E���F���G������I���J���K���L���M���N��E���P�W�Q@�R@�S@�T@�U@�V@�@�X@�Y@�Z@�[@�\@@&@�^�v�_�n�`�g�a@�b@�c@�d@�e@�f@�@�h@�i@�j@�k@�l@�m@�@�o@�p@�q@�r@�s@�t@�u@H:@�w���x��y@�z@�{@�|@�}@�~@@&@��@��@��@��@��@��@�~@������@��@��@��@��@��@�@��@��@��@��@��@��@�'@������������@����@��@��@��@��@��@HG@@����@��@��@��@��@��@Ez@����������@��@��@��@��@��@�@��@��@��@��@��@��@E@������@��@��@��@��@��@Ae@��@��@��@��@��@��@�@��������@����@��@��@��@��@��@�@������@��@��@��@��@��@E@��@��@��@��@��@��@�'@����@����@��@��@��@��@��@�@������@��@��@��@��@��@Ae@��@��@��@��@��@��@�@�������y���:�����������@�@�@�@�@�@E@�@�@�@�	@�
@�@E@�
��@�@�@�@�@�@Ez@�@�@�@�@�@�@E@��+��$�@�@� @�!@�"@�#@Ae@�%@�&@�'@�(@�)@�*@H:@�,�3�-@�.@�/@�0@�1@�2@E@�4@�5@�6@�7@�8@�9@E@�;�Z�<�K�=�D�>@�?@�@@�A@�B@�C@Ez@�E@�F@�G@�H@�I@�J@E@�L�S�M@�N@�O@�P@�Q@�R@Ba@�T@�U@�V@�W@�X@�Y@Ez@�[�j�\�c�]@�^@�_@�`@�a@�b@A@�d@�e@�f@�g@�h@�i@H:@�k�r�l@�m@�n@�o@�p@�q@H:@�s@�t@�u@�v@�w@�x@E@�z���{���|���}���~@�@��@��@��@��@E@��@��@��@��@��@E@������@��@��@��@��@��@�@��@��@��@��@��@��@E@����������@��@��@��@��@��@Ae@��@��@��@��@��@��@E@@����@��@��@��@��@��@E@��������������@��@��@��@��@��@�@��@��@��@��@��@��@Ae@������@��@��@��@��@��@E@��@��@��@��@��@��@E@����������@��@��@��@��@��@E@��@��@��@��@��@F�@������@��@��@��@��@��@�@��@��@��@��@��@��@�@���a���0������������@��@��@��@��@��@H:@��@��@��@��@�@�@Ba@��
�@�@�@�@�@�	@�@�@�@�
@�@�@�@��@��!���@�@�@�@�@�@�@�@�@�@�@�@� @�@�"�)�#@�$@�%@�&@�'@�(@H�@�*@�+@�,@�-@�.@�/@H:@�1�P�2�A�3�:�4@�5@�6@�7@�8@�9@�@�;@�<@�=@�>@�?@�@@�'@�B�I�C@�D@�E@�F@�G@�H@�@�J@�K@�L@�M@�N@�O@Ae@�Q�Y�R@�S@�T@�U@�V@�W@�X@Ae@�Z@�[@�\@�]@�^@�_@�`@�@�b���c���d�s�e�l�f@�g@�h@�i@�j@�k@@&@�m@�n@�o@�p@�q@�r@�~@�t�{�u@�v@�w@�x@�y@�z@�@�|@�}@�~@�@��@��@�@����������@��@��@��@��@��@�@��@��@��@��@��@��@E@������@��@��@��@��@��@�@��@��@��@��@��@��@E@��������������@��@��@��@��@��@Ba@��@��@��@��@��@��@E@������@��@��@��@��@��@HG@��@��@��@��@��@��@�@����������@��@��@��@��@��@E@��@��@��@��@��@��@��@��H���H���H���H���H���H���H�H�����H���H���H���H���H���H���H��rH�������@��@��@��@��@��@H:@��@��@��@��@��@��@|�@���������������k���-�������@����@��@��@��@��@��@E@���@�@�@�@�@�@HG@�@�	@�
@�@�@�
@E@�����@�@�@�@�@�@�@�@�@�@�@�@�@�@��&� @�!@�"@�#@�$@�%@�@�'@�(@�)@�*@�+@�,@@&@�.�L�/�=�0�6�1@�2@�3@�4@�5@E@�7@�8@�9@�:@�;@�<@E@�>�E�?@�@@�A@�B@�C@�D@�@�F@�G@�H@�I@�J@�K@Ez@�M�\�N�U�O@�P@�Q@�R@�S@�T@�@�V@�W@�X@�Y@�Z@�[@H:@�]�d�^@�_@�`@�a@�b@�c@�@�e@�f@�g@�h@�i@�j@E@�l���m�~�n�v@�o�p@�q@�r@�s@�t@�u@E@@�w�x@�y@�z@�{@�|@�}@E@�����@��@��@��@��@��@��@E@������@��@��@��@��@��@�@��@��@��@��@��@��@�@��������@����@��@��@��@��@��@�@������@��@��@��@��@��@E@��@��@��@��@��@��@�@����������@��@��@��@��@��@�@��@��@��@��@��@��@�@������@��@��@��@��@��@�@��@��@��@��@��@��@Ae@���3������������@����@��@��@��@��@��@Ae@������@��@��@��@��@��@E@��@��@��@��@��@��@�@������@��@E@������@��@��@��@��@E@��@��@��@��@��@��@�@������@����@�@�@�@�@�@E@��
�@�@�	@�
@�@�@Ae@�@�@�@�@�@�@E@��$���@�@�@�@�@�@H:@�@�@� @�!@�"@�#@�@�%�,�&@�'@�(@�)@�*@�+@E@�-@�.@�/@�0@�1@�2@�@�4�l�5�T�6�E�7�>�8@�9@�:@�;@�<@�=@��@�?@�@@�A@�B@�C@�D@E@�F�M�G@�H@�I@�J@�K@�L@E@�N@�O@�P@�Q@�R@�S@��@�U�]@�V�W@�X@�Y@�Z@�[@�\@E@�^�e�_@�`@�a@�b@�c@�d@�@�f@�g@�h@�i@�j@�k@E@�m���n�}�o�v�p@�q@�r@�s@�t@�u@Ae@�w@�x@�y@�z@�{@�|@�@�~���@��@��@��@��@��@�@��@��@��@��@��@��@E@����@����@��@��@��@��@��@E@������@��@��@��@��@��@HG@��@��@��@��@��@��@�@�������$������������������@��@��@��@��@��@Ae@��@��@��@��@��@��@Ae@������@��@��@��@��@��@�'@��@��@��@��@��@��@�@����������@��@��@��@��@��@�@��@��@��@��@��@��@�@������@��@��@��@��@��@�@��@��@��@��@��@��@Ae@�������������@��@��@��@��@F�@��@��@��@��@��@��@E@������@��@��@��@��@��@�@��@�@�@�@�@�@E@�����@�	@�
@�@�@�
@�@�@�@�@�@�@�@|�@���@�@�@�@�@�@�@�@�@� @�!@�"@�#@HG@�%�d�&�E�'�6�(�/�)@�*@�+@�,@�-@�.@@&@�0@�1@�2@�3@�4@�5@E@�7�>�8@�9@�:@�;@�<@�=@H�@�?@�@@�A@�B@�C@�D@Ez@�F�U�G�N�H@�I@�J@�K@�L@�M@�@�O@�P@�Q@�R@�S@�T@H:@�V�]�W@�X@�Y@�Z@�[@�\@A@�^@�_@�`@�a@�b@�c@�@�e�}�f�u�g�n�h@�i@�j@�k@�l@�m@Ae@�o@�p@�q@�r@�s@�t@E@�v@�w@�x@�y@�z@�{@�|@Ae@�~��@���@��@��@��@��@��@Ae@������@��@��@��@��@��@�@��@��@��@��@��@��@Ae@���������������������@��@��@��@��@��@E@��@��@��@��@��@��@�@������@��@��@��@��@��@�@��@��@��@��@��@��@��@����������@��@��@��@��@��@�@��@��@��@��@��@��@HG@������@��@��@��@��@��@�@��@��@��@��@��@��@�@��������������@��@��@��@��@��@�@��@��@��@��@��@��@E@������@��@��@��@��@��@�@��@��@��@��@��@��@�@����@����@��@��@��@��@��@Ae@���@�@�@�@�@�@�@�@�	@�
@�@�@�
@�@��N��/�� ���@�@�@�@�@�@F�@�@�@�@�@�@�@�@�!�(�"@�#@�$@�%@�&@�'@�@�)@�*@�+@�,@�-@�.@E@�0�?�1�8�2@�3@�4@�5@�6@�7@E@�9@�:@�;@�<@�=@�>@Ae@�@�G�A@�B@�C@�D@�E@�F@�@�H@�I@�J@�K@�L@�M@Ae@�O�n�P�_�Q�X�R@�S@�T@�U@�V@�W@�@�Y@�Z@�[@�\@�]@�^@Ae@�`�g�a@�b@�c@�d@�e@�f@�@�h@�i@�j@�k@�l@�m@E@�o�~�p�w�q@�r@�s@�t@�u@�v@Ae@�x@�y@�z@�{@�|@�}@�~@�����@��@��@��@��@��@�@��@��@��@��@��@��@�@���]���v���������������������@��@��@��@F�@��@��@��@��@��@��@Ae@������@��@��@��@��@��@�@��@��@��@��@��@��@�@����������@��@��@��@��@��@��@��@��@��@��@��@��@�@������@��@��@��@��@��@�@��@��@��@��@��@��@�'@��������������@��@��@��@��@��@��@��@��@��@��@��@��@�@������@��@��@��@��@��@�@��@��@��@��@��@��@E@����������@��@��@��@��@��@H�@��@��@��@��@��@��@E@��@�@�@�@�@�@�@�@��F��'�	��
��@�@�
@�@�@�@E@�@�@�@�@�@�@E@�� �@�@�@�@�@�@Ba@�!@�"@�#@�$@�%@�&@E@�(�7�)�0�*@�+@�,@�-@�.@�/@H�@�1@�2@�3@�4@�5@�6@�@�8�?�9@�:@�;@�<@�=@�>@�@�@@�A@�B@�C@�D@�E@E@�G�e�H�W�I�P�J@�K@�L@�M@�N@�O@H�@�Q@�R@�S@�T@�U@�V@�~@�X�_�Y@�Z@�[@�\@�]@�^@�@�`@�a@�b@�c@�d@Ae@�f�n�g@�h@�i@�j@�k@�l@�m@H�@�o@�p@�q@�r@�s@�t@�u@�@�w���x���y���z���{@�|@�}@�~@�@��@�@������@��@��@��@��@��@�@��@��@��@��@��@��@�@����������@��@��@��@��@��@E@��@��@��@��@��@��@Ba@������@��@��@��@��@��@Ae@��@��@��@��@��@��@�'@��������������@��@��@��@��@��@Ae@��@��@��@��@��@��@�'@������@��@��@��@��@��@Ae@��@��@��@��@��@��@H�@������@��@��@��@��@��@��@Ae@������@��@��@��@��@��@�@��@��@��@��@��@��@�@���'�������������@��@��@��@��@��@Ae@��@��@��@��@��@��@E@�����@��@��@��@��@�@�@�@�@�@�@�@�@Ae@�	��
��@�@�
@�@�@�@�@�@�@�@�@�@�@Ae@�� �@�@�@�@�@�@�@�!@�"@�#@�$@�%@�&@�@�(�@�)�1@�*�+@�,@�-@�.@�/@�0@H:@�2�9�3@�4@�5@�6@�7@�8@E@�:@�;@�<@�=@�>@�?@E@�A�N�B�G�C@�D@�E@�F@E@�H@�I@�J@�K@�L@�M@�@�O�V�P@�Q@�R@�S@�T@�U@�@�W@�X@�Y@�Z@�[@�\@
_@�^�O�_���`���a�y�b�j@�c�d@�e@�f@�g@�h@�i@E@�k�r�l@�m@�n@�o@�p@�q@�@�s@�t@�u@�v@�w@�x@E@�z��@�{�|@�}@�~@�@��@��@E@������@��@��@��@��@��@�@��@��@��@��@��@��@|�@��������������@��@��@��@��@��@E@��@��@��@��@��@��@�@������@��@��@��@��@��@��@��@��@��@��@��@��@A@����������@��@��@��@��@��@�@��@��@��@��@��@��@�@������@��@��@��@��@��@�@��@��@��@��@��@��@�@�����������������@��@��@��@��@��@Ae@��@��@��@��@��@��@�@������@��@��@��@��@��@Ae@��@��@��@��@��@��@E@���������@��@��@��@��@��@Ae@��@��@��@��@��@�@@&@��	�@�@�@�@�@�@�@�
@�@�@�
@�@�@�@��0��!���@�@�@�@�@�@Ae@�@�@�@�@�@� @E@�"�)�#@�$@�%@�&@�'@�(@�@�*@�+@�,@�-@�.@�/@�@�1�@�2�9�3@�4@�5@�6@�7@�8@E@�:@�;@�<@�=@�>@�?@Ae@�A�H�B@�C@�D@�E@�F@�G@Ae@�I@�J@�K@�L@�M@�N@�~@�P���Q���R�j�S�[�T@�U@�V@�W@�X@�Y@�Z@@&@�\�c�]@�^@�_@�`@�a@�b@�@�d@�e@�f@�g@�h@�i@�'@�k�z�l�s�m@�n@�o@�p@�q@�r@�@�t@�u@�v@�w@�x@�y@E@�{���|@�}@�~@�@��@��@Ae@��@��@��@��@��@��@�'@��������������@��@��@��@E@��@��@��@��@��@��@�@������@��@��@��@��@��@�@��@��@��@��@��@��@Ba@����������@��@��@��@��@��@E@��@��@��@��@��@��@H:@������@��@��@��@��@��@�@��@��@��@��@��@��@�@������������������@��@��@��@��@��@E@��@��@��@��@��@��@E@@����@��@��@��@��@��@
�@����������@��@��@��@��@��@�@��@��@��@��@��@��@E@������@��@��@��@��@��@E@��@��@��@��@��@��@�~@����	@��@�@�@�@�@�@H:@�
��@�@�
@�@�@�@Ez@�@�@�@�@�@�@H�@��(��!�@�@�@�@�@� @�@�"@�#@�$@�%@�&@�'@�@�)�0�*@�+@�,@�-@�.@�/@�@�1@�2@�3@�4@�5@�6@M@�8@�9�:Ae�@&@�<���=�u�>�\�?�M�@�F�A�C�B@�@�D@�E@A@�G�J�H@�I@H @�K@�L@A@�N�U�O�R�P@�Q@��@�S@�T@@&@�V�Y�W@�X@E@�Z@�[@@&@�]�f�^�b@&�_�`@�a@E@@�c�d@�e@@&@�g�n�h�k�i@�j@E�@�l@�m@Ez@�o�r�p@�q@E�@�s@�t@E�@�v���w���x��y�|�z@�{@A@�}@�~@A@������@��@@&@��@��@E�@����������@��@E�@��@��@E�@������@��@H:@��@��@E�@����������@��@��@Ba@������@��@E�@��@��@H @����������@��H���H���H�H�����H�H�����H�H�����H�H�����H���H�H���H���H���H�����H���H�H���H�����H���H�H�����H���H�H�����H�H���H�����H���H���H���H�@H���@��@E�@������@��@E�@��@��@E�@���������������������@��@Ba@��@��@@&@������@��@H @��@��@H @����������@��@�@��@��@E�@������@��@E@��@��@A@��@&����������@��@Ez@��@��@E�@������@��@��@�@�@@&@��?������	�@�@@&@�
@�@A@�
��@�@��@�@�@@&@�����@�@@&@�@�@@&@�@�@�@Ba�� Ba�!Ba�"Ba�#Ba�$Ba�%Ba�&BaBa�'�(BaBa�)Ba�*�+BaBa�,Ba�-�.Ba�/BaBa�0Ba�1Ba�2Ba�3�4BaBa�5Ba�6�7BaBa�8�9Ba�:Ba�;Ba�<BaBa�=�>BaBa@�@�O�A�H�B�E�C@�D@F�@�F@�G@@&@�I�L�J@�K@E@�M@�N@HG@�P�V�Q�S�R@HG@�T@�U@�'@�W�Z�X@�Y@@&@�[@�\@��@�^�
�_�9@�`�a�;�b���c���d���e�z�f�w�g�t�h���i�j@�k@�l@�m@�n@�o@�p@�q@�r@�s@�@�u�v�@�@�x@�y@�@�{�~�|@�}@�@�@��@�@����������@��@�����@��@��@��@��@��@��@��@��@��@��@��@��@��@��@�@������@�@��@�@������@��@�@��@��@�@��������������@��@�@��@��@�@������@��@�@��@��@�@������@��@��@�@������@��@�@��@��@�@���������������������@�@��@�@������@�@��@�@����������@�������������������������������������������������������������������������������������������������.���@�@������@�@��@�@�������������@�@��@�@@���@�@�@���@�@�@�@���	��
���
�@�@�@�@�@�@�@���@�@�@�@�@�@��!���@�@�@�@� @�@�"�%�#@�$@�@�&�:�'@�(@�)@�*@�+@�,@�-@�.@�/@�0@�1@�2@�3@�4@�5�8�6��7��@��9�@@��<�u�=�Y�>�M�?�F�@�C�A@�B@�@�D@�E@�1@�G�J�H@�I@Q@�K@�L@�_@�N�U�O�R�P@�Q@�!@�S@�T@2T@��V�W@�X@
@�Z�i�[�b�\�_�]@�^@�1@�`@�a@2T@�c�f�d@�e@�_@�g@�h@�1@�j�q�k�n�l@�m@�@@�o@�p@߫@@�r�s@�t@p@�v���w���x�~�y�|�z@�{@�@�}@�@@���@��@Q@����@����@��@�@��@�������_�����_��.������_�_�����_���_���_���_���_���_���_���_���_���_�������_���_���_�_���_�����_���_�_�����_���_���_���_���_���_�_�����_�_�����_���_���_���_���_���_���_���_���_���_���_���_���_���_���_���_���_���_���_�_���z�_���_���_���_�_�����_�������_���_���_���_���_���_���_���_���_���_���_���_���_���_���_���_���_���_�_�����_���_���_���_���_���_���_���_���_���_���_���_���_���_���_���_���_���_���_�_�����_���*���&���#@��@��@����@@��@�����
���
��@��@��@��@��@��@��_�������O�_���/k���_�_��_�	�_@@�@�@��@�@�@�@�@�@��"���������2T���2T�2T�@2T@�@�� �!@�@2T@�$@�%@�1@�_�'�(@�)@�@�+�2�,�/�-@�.@�1@�0@�1@�_@�3�6�4@�5@�1@�7@�8@�O@�:��;���<�r�=�S�>�G�?�CM��@�A@�B@g4@�D`��E@�F@d@�H�LM�I�J@�K@b�@�M�P�N@�O@p�@�Q@�R@d@�T�b�U�\�V�Y�W@�X@d@�Z@�[@aN@�]�`�^@�_@`�@�a@cW@�c�n�d�g�e@�f@N@�h�k�ixv�jxvxv3��l�m��xvxv��n��o�p@�q@az@�s���t�z�u�v@xvt��w�x@�y@L@�{���|��}@�~@N@��@��@cW@��p���@��@d@��������������@��@d@��@��@L�@aN����@��@d@����������@��@d@��@��@iM@d����@��@d@����������������������@��@iM@��@��@xv@��@��@��@az@����������@��@��@��q���q���q���q���q���q�������d��q���q���q���q���q���q�q���q�do�q���@��@xv@������@��@l�@��@��@L�@��������Nt�@����@��@cW@����d����@��@xv@@d��������������ty��@��@aN@������@��@n�@��@��@g_@����@����@��@`�@������@��@N@��@��@N@��������n�����@��@N@@ty�����xv��@�@M@@��@�@aN@�����K��2�	��
�cWdd]d�
�1�@�@�cW�cW�cWcW��cWcW��cW�cW�cWcW�cW��cWcW��cW�cW�cW� cWcW�!�"cW�#cW�$cW�%cW�&cW�'cW�(cW�)cW�*cW�+cW�,cW�-cW�.cW�/cW�0cW?@cWM�d�3�<�4�8�5@�6@�7@d@�9p��:@�;@L�@�=�D�>�A�?@�@@M�@�B@�C@N@�E�H�F@�G@z�@�I@�J@`�@�L���M�V�N�OcWn��P�S�Q@�R@N@�T@�U@d]@�W���X���Y��t��Z�[t�t��\t��]�^t��_t��`t��at��bt��c�{�dt��et��ft�t��gt��ht��i�jt��kt��lt�t��mt��n�ot�t��pt��qt��rt��s�tt�t��ut��v�wt�t��xt��y�zt�@t�t��|t��}t��~�t���t�t�����t�t�����t���t���t���t�t�����t�t�����t���t�t���t�����t�t�����t���t�@t���t���t���t���t���t���t���t���t�t�����t���t���t�t�����t���t���t�t�����t�t�����t�t���t�����t���t���t���t�t�����t�t�����t�t���t�����t�@t���@��@`�@������@��@c�@��@��@d@����������@��Ae��Ae��Ae��Ae��Ae��Ae��Ae��Ae��Ae��Ae��Ae��Ae��Ae��Ae��AeAe����AeAe��~Ae������@��@`�@��@��@M�@����d����@��@N@d����@��@N@��@��@��@cW��cW����cWcW��cW����cW��cWcW����cW��cW��cWcW����cW��cWcW��cW����cWcW��cW����cW��cW��cW��cWcW��cW�cWcW�cW�cW�cW��cWcW��	cW�
cW�cW�cW@cW�����������J��1��"�����@�@az@�@�@��@���@�@|@� @�!@az@�#�*�$�'�%@�&@az@�(@�)@az@�+�.�,@�-@az@�/@�0@az@�2�>�3�:�4�7�5@�6@az@�8@�9@az@�;@�<@�=@az@�?�F�@�C�A@�B@az@�D@�E@az@@�G�H@�I@az@�K�|�L�p�M�Q@�N�O@�P@az@�R�m�Saz�Taz�Uaz�Vaz�Waz�Xazaz�Y�Zaz�[azaz�\�]�eaz�^�_azaz�`�aaz�baz�cazaz�d�az�faz�gaz�hazaz�i�jaz�kaz�laz�az�n@�o@az@�q�u�r@�s@�t@az@�v�y�w@�x@az@�z@�{@az@�}���~�������@��@|@��@��@az@@����@��@az@����������@��@az@��@��@az@������@��@|@��@��@|@���������������������@��@��@��az��az������az��az��az��az��az��az��az��az��az��azaz����azaz����az��az��az��az��az��az��az��az��az��az��az��az��az��azaz��gQaz��az��az��azaz��az����azaz��az����az��azaz��az��maz��@��@az@��@��@��@az@����������@��@|@��@��@|@������@��@az@��@��@az@��������������@��@az@��@��@az@������@��@az@��@��@az@����������@��@az@��@��@az@������@��@|@�@�@�@�|�|��|���
��
�	|�|���|��������6����|�|�|�����|�|��8��)��"���@�@az@� @�!@az@�#�&�$@�%@az@�'@�(@az@�*�1�+�.�,@�-@az@�/@�0@|@�2�5�3@�4@az@�6@�7@az@�9�E�:�A�;�>�<@�=@|@�?@�@@az@�B@�C@�D@az@�F�M�G�J�H@�I@az@�K@�L@az@�N���O@�P@�Q@�R��az�S�T�t�U�W�Vazazt��X�sgQ�Y�Zaz�[az�\az�]az�^az�_az�`az�aaz�bazaz�c�daz�eazaz�f�gaz�hazaz�iaz�j�kaz�lazaz�maz�n�oazaz�paz�qaz�razw�maz�u�waz�vkXb��x�yv�gC�zaz�{az�|az�}az�~az�az��az��az��az��az��az��azaz����az��az��az��az��az��az��az��az��az��az��az��az��azv�az��������az����azazb�az������v�w�jaz��az��azaz��jaz��@��@az@���������������������M��@��@M@��e�����������@��@M@��@��@d@������@��@d@��@��@`�@���������x����@��@xv@������@��@d@��@��@L@����������@��@`�@��@��@c�@�Xd������������dcW��|���@��@M@����q~����@��@N@������@��@xv@li@��������������@��@`�@��@��@ak@������@��@g4@��@��@nW@������xv��@��@ak@�,����@��@��@��NN��N�N�NN�N�N��N�N�	N�
N�N�N�
N�NN��NN��N�N�N�NN��N�N�NN��NN��Nx�N���� �6�!�0�"�)�#�&�$@�%@b�@�'@�(@L�@�*�-�+@�,@d@�.@�/@d@�1�5@�2�3@�4@l�@dL��7�=�8�<�9L��:@�;@M@cWL��>�u�?c��@d�Ad�Bd�Cd�Dd�Ed�Fd�Gd�Hd�Id�Jd�Kd�Ld�Md�Nd�Od�Pdd�Q�R�b�Sd�Td�Ud�Vd�Wd�Xd�Yd�Zd�[d�\d�]d�^d�_d�`d�add��cd�dd�ed�fd�gd�hdd�i�jd�kd�ldd�m�n�q�od�pd�dd�r�sd�tdd��v���wM��xM��yM��zM��{M��|M��}M��~M��M���M���M�M�����M���M���M���M���M���M�M����@��@L�@������������c�����@��@M@������@��@M@��@��@g4@������M���@��@j�@������@��@b�@��@��@i�@��������dp�`�����@��@i�@����������@��@N@��@��@N@l�m���@��N��N��N��N��N��N������N��N��N��N��NN����NN����NN����N��NN��N����N��N��N��N��NN��N��N��N����NN��N����N��N��N��N��N��N��N@N��NN����N��N��N��N��N��NN��N����N��N��N��N��NN��N��N����NN����N��N��N��NN����N��N��N��N��N��N�N�N@N�@�M��M��M��M���H�	�B�
�G��C�M��
M���B��:�M���4��M���M��M��M��0M�M���M��M��M��M�M���M��M�� M��!M��"M��#M��$M��%M��&M��'M��(M�M��)M��*�+M��,M�M��-�.M��/M��0M��1M��2M��3M���M�M��5�6M��7M��8M��9M��M��;M�M��<M��=�>M��?M��@M��AM��M�M���DM��EM��0�F�0M��H�K�IM��JM�{�M��LM��M���NM��OM��PM��QM��RM��SM��TM��UM��VM��WM��XM��Y���Z���[���\M��]���^���_M��`M��aM��bM��cM��dM��eM��fM��gM��h���i���j�x�k�p�lM�M��m�n�oM��[M��q�u�r�t�sM�M��1vM�M��vh�wbM��y���z��{�}�|M�vM�M��~[M�M�������M�[��[M���M���M�����h������������������M��M������M�M�����M�M�����������M���h[��hM�h��������hM�M�h����hM�y[M���M���M���M���[�0��M���M���������������v�0v���v���v��v��M���M�����[h�M�M�[[M���M�M���M���M�����������M�����M�M����M�M���M�[M�������M�����M���M�*�M���������M�����M�M���M�h����M���M�h����h��hv�����M�M�h��M���M���M���M�hM���M�M������"��M���M���M���M���M���M���M���M���M���M���M���M���M���M���M���M���M�������	������M���M���M���M���M���M�M�����M���M���M�hM�M����M��M�M���M��M��M��M��M��M���M�M��
M��M���
M��M��M��M��M�M��M��M��M���M��M��M��M��M�M���M��M��M��M�� M�M��!hM�M��#M��$M��%M��&M��'M��(M��)M��*M��+M��,M��-M��.M��/M��0M��1M��2�3M�M��4�5M��6M��7M��8M�M��9�:M��;M��<M��=M��>M��?M��@�AM�h[hM��C�DM��EM��FM���G�M��IM��JM�M��K�LM��MM�M��N�0M��P@�Q���R�"�S�n�T���U���V���W�m�X�a�Y�]�Z@�[@�\@L�@�^N�_@�`@M@�b�f�cc��d@�e@c�@�g�j�h@�i@L@�k@�l@N@�n�z�o�sM��p�q@�r@li@�t�w�u@�v@c�@�x@�y@b�@�{���|��}@�~@cW@��@��@d@��p���@��@c�@������������L�����@��@M@d@����������@��@M@��@��@`�@������@��@L@��@��@d@����������@��@��@cW@������@��@`�@��@��@M@����������@��@N@��@��@��@��p���p���p���p���p���p���p���p���p���p���p���p���p���p���p���p�p���p���p���p�����p���p���p���p�p�����p���p�p�����p���p���p�wsp�������@��@c�@��@��@c�@���������������������@��@g4@��@��@L@@����@��@j�@������N��@��@N@��M��@��@d{@����������@��@��@M@��g_��@��@d@��������@��@M@�@�@cW@�d�@�@{
@��D�	��
��iM�@�
@d@���@�@c�@�@�@N@��=���@�@`�@�@�@�@�`��`�� `��!`��"`��#`�`��$�%`��&`�`��'�(`��)`��*`�`��+�,`��-`��.`��/`��0`��1`��2`��3`��4`��5`��6`��7`��8`��9`��:`��;`��<`�`��[�>�A�?@�@@c�@�B@�C@d@�E��M�F�G���H@�I@�J@�KL��LL��ML��N��O�T�P���Q���RL��SL��TL��UL��VL��W�j�XL�L��Y�ZL�L��[�\L��]L�L��^�_L��`L��aL�L��b�cL�L��dL��e�fL��gL��hL��iL�L��:�kL�L��l�mL��n���oL��p�}�qL��rL�L��s�tL�L��uL��vL��w�xL��yL��zL��{L��|L��:L��~L�L��L�����L���L���L�L�����L�L���L�����L�L���iL�L���L���L���L���L���L�����L���L���L�L�����L���L���L�L����:L�L�����L���L���L���L���L�L�����L���L���L���L���L���L���L���L�L�����L���L���L���L���L���L���L���L��:L�������������������������������������������������������������������������������L��������������������������A�����������������������������������������������������A��������������������������
�������������������������������������������������������������������	��
�������������������������������������������� ��!��"��#��$��%��&�D�'��(�6�)���*�+��,��-��.���/�0���1�2��3��4���5A���7��8��9��:���;�<���=�>��?��@��A��B���C�@�E��F��G���H�I��J��K���L�M��N��O��P��Q��R��S�A���UL��Vi�Wi�Xi�Yi�Zi�[i�\i�]i�^i�_�o�`i�ai�bii�ci�di�ei�fi�g�hii�ii�ji�k�li�mi�niA�i�pi�qii�r�si�ti�ui�vi�wi�xi�yi�zi�{i�|i�}i�~iA�i��L���L���L���L���L���L���L���L�L�����L���L���L���L���L�L�����L���L���L���L���L�L���L�����L�L�����L���L���L�L��:��@��@xv@����������@��@cW@��@��@M@N����@��@d@���8������������������@��@��@sG@������@��@sG@��@��@sG@����������@��@�@��@��@Z@@����@��@�R@��������@����@��@�R@������@��@@��@��@
@����������@��@sG@��@��@�@������@��@�@��@��@�@������������@����@��@�@������@��@�R@��@��@	�@����������@��@sG@��@��@�R@������@��@�@��@��@�@��/�� ���@�@�@�@�@�@�	sG�
sG�sG�sG�
sG�sG�sGsG��sG�sG�sG�sG�sG�sG�sG�sG�sG�sG�sG�sG�sG�sG�sG�ksG�!�,�"@�#@�$@�%@�&@�'@�(@�)@�*@�+@sG@�-@�.@+@�0�4�1@�2@�3@lx@�5@�6@�7@sG@�9�o�:�V�;�G�<�C�=�@�>@�?@�@�A@�B@sG@�D@�E@�F@�@�H�O�I�L�J@�K@�@�M@�N@�R@�P�S�Q@�R@sG@�T@�U@ @�W�c�X�\�Y@�Z@�[@�@�]�`�^@�_@z@�a@�b@�@�d�h@�e�f@�g@�@�i�l�j@�k@�@�m@�n@k@�p���q�z�r�v@�s�t@�u@�@@�w�x@�y@@�{���|��}@�~@
@��@��@sG@������@��@�@��@��@�R@��������������@��@J@��@��@�@������@��@�@��@��@sG@����������@��@J@��@��@sG@������@��@�@������@��@��@��@��@���O����������9����������������������@
��
��
@��@��@��@�@������@��@��@j@��@��@��@sG@����������@��@�@��@��@��@�_@������@��@��@�@sG@��������������@��@��@�@��@��@�����R@�R@������@��@��@sG@��@��@��@[@������@��@��@�@��@��@��@��@
@����������������@��@��@sG@��@��@��@sG@���@�@�@sG@�@�@�@[@�	��
��@�@�
@*@�@�@�@;@�@�@�@�@�@��+��"���@�@�@�@�@� @�!@�@�#�'�$@�%@�&@J@�(@�)@�*@sG@�,�1@�-�.@�/@�0@J@�2�6�3@�4@�5@�@�7@sG�8sG@�:��;�\�<�K�=�F�>�B�?@�@@�A@�@�C@�D@�E@�@�G@�H@�I@�J@��@�L�T�M�P�N@�O@J@�Q@�R@�S@�@�U�Y�V@�W@�X@�@�Z@�[@�R@�]�l�^�g�_�c�`@�a@�b@�R@�d@�e@�f@@�h@�i@�j@�k@@�m�v�n�r�o@�p@�q@sG@�s@�t@�u@J@�w�{�x@�y@�z@�@�|@�}@�~@�@������������������@��@��@J@��@��@��@�@������@��@��@z@��@��@��@
@@��������@��@��@sG@��@��@��@�@��������������@��@��@j@��@��@@@����@��@��@�@����������@��@@��@��@��@;@sG@����@���������������������@��@
@��@��@��@��@sG@����������@��@��@k@��@��@��@�@��@��@��@��@�@��������������@��@��@
@��@��@sG@������@K@��@sG@����������@��@��@�@��@sG@��@��@��@��@�@����������@sG@����@sG������@��@��@@��@sG@���
��@��@�@�@sG@@��@�@�	@�@���@�
@�@�@@���@�@�@sG@�@�@Z@�����_���@J@��<��)� �%�!@�"@�#@�$@sG@@�&�'@�(@k@�*�3�+�/�,@�-@�.@+@�0@�1@�2@sG@�4�8�5@�6@�7@sG@�9@�:@�;@{@�=�M�>�E�?�B�@@�A@�@�C@�D@_@�F�J�G@�H@�I@�@�K@�L@ @�N�V�O�R�P@�Q@	�@�S@�T@�U@@�W�[�X@�Y@�Z@�@�\@�]@�^@�@�`���a�}�b�o�c�g@�d�e@�f@@�h�k�i@�j@lx@�l@�m@�n@[@�p�y�q�u�r@�s@�t@k@�v@�w@�x@;@�z@�{@�|@�@�~�����������@��@��@@��@��@��@[@������@��@��@*@��@��@��@�@����@����@��@��@[@������@��@J@��@��@�@������������@����@��@��@�@������@��@��@+@��@��@��@�@������@��@��@��@J@������@��@;@��@��@��@+@��������������@��@��@
@��@��@��@J@@����@��@�@����������@��@��@sG@��@��@��@J@@����@��@��@sG@���N���
����������@��@��@��@��@J@����������@��@��@�@��@��@��@�@������@��@�@��@��@��@sG@�������@����@��@��@sG@@���@�@�@�@���R@��
�@�@�	@
@�@�@�@��+�������@�@�@�R@�@�@�@sG@��#���@�@�@[@� @�!@�"@sG@�$�(�%@�&@�'@�@�)@�*@�@�,�?�-�6�.�2�/@�0@�1@;@�3@�4@�5@�@�7�;�8@�9@�:@*@�<@�=@�>@sG@�@�I�A�E�B@�C@�D@@�F@�G@�H@J@�J@�K@�L@�M@J@�R@�P���Q�4�R���S���T�s�U�d�V�[�W@�X@�Y@�Z@�@�\�`�]@�^@�_@�@�a@�b@�c@sG@�e�j�f@�g@�h@�i@sG@�k�o�l@�m@�n@�@�p@�q@�r@sG@�t���u�~�v�z�w@�x@�y@
@�{@�|@�}@sG@�����@��@��@�@��@��@��@�@����������@��@��@�@��@��@��@�@������@��@��@�@��@��@��@�@������������������@��@��@@��@��@��@�@@����@��@��@j@����������@��@sG@��@��@�R@������@��@�@��@��@��@�@��������������@��@��@sG@��@��@��@;@������@��@K@��@��@��@sG@����������@��@��@�@��@��@��@Z@������@��@��@;@��@��@�@������@��@��@�@���
��������������@��@��@sG@��@��@��@�@������@��@��@[@��@��@��@sG@��������@��@��@�@�@�@�@K@��	�@�@�@J@�
@�@�@[@��!�����@�@�@K@�@�@�@
@���@�@�@j@�@�@� @sG��"�+�#�'�$@�%@�&@�@�(@�)@�*@J@�,�0�-@�.@�/@j@�1@�2@�3@�@�5�|�6�x�7�^�8�K�9�B�:�>�;@�<@�=@�@�?@�@@�A@�@�C�G�D@�E@�F@�@�H@�I@�J@sG@�L�U�M�Q�N@�O@�P@�@�R@�S@�T@sG@�V�Z�W@�X@�Y@@�[@�\@�]@�@�_�i@�`�a�e�b@�c@�d@+@�f@�g@�h@sG@�j�s�k�o�l@�m@�n@sG@�p@�q@�r@
@�t@�u@�v@�w@sG@�y@�z@�{@sG@�}���~�����������@��@��@��@J@������@��@��@sG@��@��@��@+@����������@��@��@j@��@��@��@J@������@��@�@��@��@��@�@��������������@��@*@��@��@�@������@��@z@��@��@��@�_@��@������@��@+@��@��@��@�@����������@������@sG@��@��@��@��@��@��@��@��@J@��@@����@��@��@��@�@��@����sG@��@@��@����@sG@����������B�������������@��@��@��@��@��@��@��@��@��@��@�@��@��@��@��@��@��@��@��@��@��@��@+@�����@��@��@��@��@��@��@��@�@�@�@
@�@�@�@�@�@�	@�
@�@�@�
@�@J@��)���@�@�@�@�@�@�@�@�@�@�@�@�@�@� @�!@�"@�#@�$@�%@�&@�'@�(@�@�*�6�+@�,@�-@�.@�/@�0@�1@�2@�3@�4@�5@�@�7@�8@�9@�:@�;@�<@�=@�>@�?@�@@�A@;@�C�j�D�U�E�I�F@�G@�H@sG@�J@�K@�L@�M@�N@�O@�P@�Q@�R@�S@�T@;@�V�b�W@�X@�Y@�Z@�[@�\@�]@�^@�_@�`@�a@�@�c@�d@�e@�f@�g@�h@�i@sG@�k���l�x�m@�n@�o@�p@�q@�r@�s@�t@�u@�v@�w@�@�y@�z@�{@�|@�}@�~@�@��@��@��@��@j@������@��@��@��@��@��@��@��@��@��@��@@��@��@��@��@��@��@��@��@��@��@��@K@������������@����@��@��@��@��@��@��@��@��@��@��@j@��@��@��@��@��@��@��@��@��@��@��@��@z@����������@��@��@��@��@��@��@��@��@��@��@;@��@��@��@��@��@��@��@��@��@��@��@+@��@��@��@��@�@������@������@��@��@��@��@��@��@��@��@��@��@;@��@��@��@��@��@��@��@��@��@��@��@�@��������@��@��@��@��@��@��@��@��@�@�@�@�@�@�@�@�@�@�	@�
@�@�@�
@j@�@�@�@�@�@�@�@�@�@�@�@�@
@��������M��4� �,�!@�"@�#@�$@�%@�&@�'@�(@�)@�*@�+@sG@�-@�.@�/@�0@�1@�2@�3@�@�5�A�6@�7@�8@�9@�:@�;@�<@�=@�>@�?@�@@sG@�B@�C@�D@�E@�F@�G@�H@�I@�J@�K@�L@[@�N�g�O�[�P@�Q@�R@�S@�T@�U@�V@�W@�X@�Y@�Z@J@�\@�]@�^@�_@�`@�a@�b@�c@�d@�e@�f@J@�h�t�i@�j@�k@�l@�m@�n@�o@�p@�q@�r@�s@�R@�u@�v@�w@�x@�y@�z@�{@�|@�}@�~@�@�@��������������@��@��@��@��@��@��@��@��@��@��@J@��@��@��@��@��@��@��@��@��@��@��@sG@������@��@��@sG@��@��@��@��@��@��@��@��@��@��@��@
@����������@��@��@��@��@��@��@��@��@��@��@�@��@��@��@��@��@��@��@��@��@��@��@�@��@��@��@��@��@��@��@��@��@��@��@��@sG@���#��������������@��@��@��@��@��@��@��@��@��@��@[@��@��@��@��@��@��@��@��@��@��@��@�@��@��@��@��@��@��@��@��@��@��@��@��@
@������
��@�@�@�@�@�@�@�@�@�@�	@sG@�@�@�
@�@�@�@�@�@�@�@�@;@�@�@�@�@�@�@�@�@�@� @�!@�"@@�$�G�%�:�&�.�'@�(@�)@�*@�+@�,@�-@�@�/@�0@�1@�2@�3@�4@�5@�6@�7@�8@�9@sG@�;@�<@�=@�>@�?@�@@�A@�B@�C@�D@�E@�F@+@�H�a�I�U�J@�K@�L@�M@�N@�O@�P@�Q@�R@�S@�T@;@�V@�W@�X@�Y@�Z@�[@�\@�]@�^@�_@�`@sG@�b@�c@�d@�e@�f@�g@�h@�i@�j@�k@�l@�m@sG@�o�!�p�	�q���r���s�}�t�y�u�v��@�w@�x@E@�z@�{@�|@��@�~�������@��@H @��@��@��@������@��@E�@��@��@A@����@��������HG��HGHG����HG��HG��HGHG����HG��HG��HGHG����HG��HG��HG��HG��HG��HG��HGHG��HG��HG��HG��HG����HG��HG��HGHG����HG��HG��HG��HG��HG��HG��HG@HG��@��@Ez@������@��@��@@&@������@��@Ez@Ae@������������������@��@H:@�@����E@��@��@Ez@����������@��@@&@��@��@@&@������@��@@&@��@��@Ae@�����E�������@��@E@��@��@��@��BaBa����Ba��Ba��BaBa����BaBa����Ba��Ba��Ba��Ba��BaBa����Ba��BaBa����Ba��Ba��Ba��BaBa��Ba��Ba����BaBa����BaBa��Ba�Ba�Ba@Ba@��@�@�@H @�
� �����
����@�@H @�@�@H @A@��@�E@���@�@��@�@�@�'@H @H @nW@�#��$�'�%���&���'�^�(�8�)�-az�*�+@�,@az@�.�1�/@�0@az@�2@�3@�4@�5azv��6v��7v�az�9�=@�:�;@�<@az@�>�[�?@�@@�A@�Baz�C�Q�Dazaz�E�Faz�Gazaz�H�Iaz�Jaz�Kaz�Lazaz�Maz�Naz�Oaz�Pmazaz�R�Saz�Taz�Uaz�Vaz�Waz�Xaz�Yaz�ZazazgC�\@�]@az@�_�n�`�g�a�d�b@�c@az@�e@�f@az@�h�k�i@�j@az@�l@�m@az@�o�f�p�c�q@�r@�s@�taz�uaz�vaz�waz�xaz�yaz�zaz�{az�|az�}az�~az�az��azaz��az��az����az��az��az��az��az����������az��az��az��az��az��az��������jgQazwc����azt���w*������az��az��������������������gQ�;Jw���������w*<���������ia��M�"����wFV�wckX������������b���������V�pv�v���������v������[��������gQ�����������������w���S�����wU��?{�������������-������v�wubw��az���������,wv�gC��az�^����az��az��az��az������������azw��j����v�jw�������������&w���������az����������az��az��az����������������t�m���"����wu�u�v���������v���t������1t�v����az��az�������wwqaz��az�az�az����
������m���"��	wu�u�v�����
v���t����1t�v���az�az�����wwqaz��P�az�az��9��*��#�� ��w*�;Jw��!�"����w*<�$�'�%�&�ia��M�"�(�)wFV�wckX�+�2�,�/�-�.b������0�1V�pv�v��3�6�4�5v������[�7�8����gQ�:�I�;�B�<�?�=�>�w���S��@�AwU��?{��C�F�D�E����-���G�Hv�wubw�Jaz�K�N�L�M�,wv�gC�Oaz�^���Qaz�Raz�Saz�Taz�U�\�V�Y�W�Xazw��j�Z�[v�jw���]�`�^�_���&w����a�b��az��d@�e@az@�g�i�h@az@�j@�k@�l@�m�[�n��o���paz�qaz�raz�s���t���uaz�v�|az�w�xaz�yazaz�zaz�{azv�az�}�~az�az��azazu���azaz������az����az��az��azaz����az��azaz��azj������az��������������azaz����azb�az��azaz��az��kXaz������az��az��azubaz��azaz����azgCaz������az��az����az��gQazaz���"az��az��az��az��azaz�M��az��az������az��azaz����azazu���az��az��������azt�v�m��azv�az��az��az��az����������az����az����az��azaz��az��azv�az����az��az��azazu���azaz������az����az��az��azaz����az��azaz��azj�����az��������������azaz����azb�az��azaz����azazgC��������������azubaz��azazwU��az��azv�az��azaz����azgCaz��az��az��az����az��gQwUaz��"az�az�az��	�az�azaz��azazu��
az�az���
�azt�v�m�azv�az�az�az�az�az��,��$�az��az��az�azaz�az�azv�az� �!az�"az�#azazu��%azaz�&�'azaz�(�)az�*az�+azaz���-�K�.az�/�C�0�5�1az�2azaz�3�4azb�az�6�?�7�<�8�:�9azubaz�;azazwU�=az�>azv�az�@azaz�A�BazgCaz�Daz�Eaz�Faz�G�Iaz�HgQazaz�J�"az�Laz�Maz�N�S�Oaz�Pazaz�Q�Razazu��Taz�Uaz�V�Y�W�Xazt�v�m�Zazv�az�\�0�]���^az�_az�`az�a�{�b�o�caz�d�jaz�e�faz�gazaz�haz�iazv�az�k�laz�maz�nazazu��pazaz�q�r�waz�s�taz�uaz�vazaz���xaz�yazaz�zazj�|���}az�~�������az��azaz����azb�az��az����������azubaz��azazwU��az��azv�az��az��az��az����az��gQazaz���"az��az����������az��azaz����azazu���az��az��������azt�v�m��azv�az��az��az��azaz��az��azw������az��az����������az��azaz����az��azaz��az��azv���azaz������az����az��az��azaz����az��azaz��azj������az����������az��azaz����azb�az��������������azubaz��azazwU��az��azv�az��az������azv�az��azgCaz��az������az����az��gQazaz���"az����az��az��az�M��az��azazgC��az��az������az��azaz����azazu���az��az��������azt�v�m��azv�az��az��az����	�az�azaz��az�azaz�az�azv��
azaz���az�
�az�az�azaz���az�azaz�azj�� �az�azaz��az�az���azubaz�azazwU�!az�"az�#�(�$az�%azaz�&�'azazu��)az�*az�+�.�,�-azt�v�m�/azv�az�1az�2az�3az�4az�5�E�6�=�7azaz�8az�9�:az�;az�<azazu��>azaz�?�@azaz�A�Baz�Caz�Dazaz���F�r�Gaz�H�b�I�R�J�N�Kazaz�L�Mazb�azaz�O�Paz�Qazwv��S�\�T�Y�U�W�Vazubaz�XazazwU�Zaz�[azv�az�]az�^�`�_azv�az�aazgCaz�c�n�d�j�eaz�f�haz�ggQazaz�i�"az�kazaz�l�mazwUazaz�o�paz�qwUwUaz�saz�taz�u�z�vaz�wazaz�x�yazazu��{az�|az�}���~�azt�v�m��azv�az������������@����@��@az@������@��@az@��@������azaz��az��az����azaz����az��az��az��az��az��azaz����az��az��azjazaz@����������@��@az@��@��@az@������@��@az@��@��@az@��������������@��@az@��@��@��@��az��az��az��az��az��az��az��az��az��az��az������azaz��az��azgQ��az��az��azt�az������@��@az@��@��@az@������az��@��@az@@����@��@az@���������������������@��@|@��@��@az@������@��@��@��@��@az@����������@��@az@��@��@az@������@��@az@��@��@|@��������@�@az@�@�@az@���	@�
@az@�@�
@|@�����@�@az@�@�@az@���@�@az@�@�@az@��P��A� �'�!�$�"@�#@az@�%@�&@az@�(�+�)@�*@az@�,@�-@�.@az�/az�0az�1�2azaz�3az�4az�5az�6�7azaz�8az�9�:az�;�>�<azaz�=v�azaz�?�@azazv��B�I�C�F�D@�E@az@�G@�H@az@�J�M�K@�L@az@�N@�O@az@�Q�`�R�Y�S�V�T@�U@az@�W@�X@az@�Z�]�[@�\@az@�^@�_@az@�a�h�b�e�c@�d@az@�f@�g@az@�i�$�j@�k@�l@az�maz�n�oazaz�p�qaz�raz�saz�t��u���v���w���x���y���z���{azaz�|�}az�~az�az��az��az��az��az��az��az��az��azaz����az��������v�jw�v���azmazaz��kXgC����gQ��gQaz��azazgQ������gQ��gQazw���������gQb�azgQaz��wb�������gQ��������b�azazgQ��azgQaz��azgQ��gQaz��������az��az������azv�v�kX����az������azv�gCgQ��az��azgCazaz��az����az��azazgC����������������������azgQaz����azb�gQaz����az��azgQgQ��gCaz������������azkXgCgQw��gQaz������azgCaz��gQazgQ������������gQgC��azgCaz��������azv�v�gQgQ��gQaz������azgQaz������az�^azaz��azv�����������az��az����v�kXkXwaz����������azv�wt���azb�az����������azwaz��kXazjaz����w�ubv�wU�	�
w�wc�i���
�az�azj��azgQgQaz�azaz�t�az�az�az�az�� �az����jw�gQ{��az{�azaz�!az�"�#azazv��%@�&@az@�(�+�)@�*@M@�,���-�`�.�7�/�3cW�0�1@�2@M@M�4�5@�6@`�@�8�_�9�\�:cW�;cW�<cW�=cW�>cW�?cW�@cW�AcW�BcW�CcW�DcW�EcW�FcW�GcWcW�H�IcW�JcWcW�K�LcWcW�McW�NcW�OcW�P�QcW�RcW�ScW�TcW�UcW�VcW�WcW�XcW�YcW�ZcW�[cWcW?@�]@�^@cW@L�d�a�j�b�f�c@�d@�e@g4@g_�g�h@�i@ak@�k�o�lg4�m@�n@g4@`��p�q`��r`��s`��t`��u`�`��v�w`��x`��y`��z`��{`��|`��}`��~`��`���`�`���`�����`�`���`���`���`���`���`���`���`���`���`�����`���`���`���`�`���`���������������nW����@��@d@������@��@L�@��L���L���L���L���L���L���L�L���L�����L�L���L���L�����L���L���L���L���L���L���L���L���L���L���L���L���L���L���L�L�����L���L���L�����L���L��:L���L��:����dxv������@��@`�@��g4��g4��g4��g4��g4��g4��g4��g4��g4��g4g4����g4��g4g4����g4g4����g4��g4��g4��g4��g4g4����g4��g4g4����g4g4��g4��g4����g4g4��g4����g4��g4g4@��������@g4��d��@��@M@����������@��@b�@��@��@M@������@��@M@�@�@cW@�@��N��,������M�	�
@�@M@�
@�@�@N@��MnW�N�@�@c�@�����q~�@�@g_@dc���%��"� @�!@L@�#@�$@d@�&�)�'@�(@c�@�*@�+@cW@�-�@�.�:�/�6�0�3�1@�2@d@�4@�5@iM@`��7�8@�9@d@�;�<d@�=N�>@�?@M@�A�I�B�H�C�F�D@�E@ty@�G@xv@`�dd�Jd�K�L@�M@d@�O���P�l�Q�`�R�Y�S�V�T@�U@h@�W@�X@d@�Z�]�[@�\@L@�^@�_@l@�a�e�b@�c@�d@d@�f�i�g@�h@M@�j@�k@`�@�m���n���oM�pd�qd�rdd�s�td�ud�vd�wdd�x�yd�zd�{d�|d�}d�~d�d��dd��o�d��@��@��@d@����������@��@N@��@��@i�@������@��@ak@��@��@N@��������������d��@��@l@@����@��@cW@����@����@��@nW@������@��@aN@��@��@M�@��������������@��@M@��@��@d@dnW����������@��@��@��������������N��N����N��Q�N����N;Q�OEOT������NQ�N��N��NQ�N����������N��NQ���NQ���N��N��NN+N������N��N����Q�[��W���N��N��N��N��N��N��N��N��N��N����NN;Q�N��NN����NN��N����N��N��N��N��NN����N��NN��NQ���@��@xv@`�@��@��M��M�M�M�M�M�M�M�MM��M�	M�
M�M�M�
MM��M�M�M�M�M�M�M�MM��M�M�M�M�M�M�M�M� M�!M�"M�#M�$M�%M�&M�'Mq�M�)@�*���+�l�,Ae�-Ae�.Ae�/Ae�0Ae�1Ae�2Ae�3Ae�4AeAe�5�6Ae�7Ae�8Ae�9Ae�:AeAe�;�<Ae�=Ae�>AeAe�?�@Ae�AAe�B�W�CAe�DAe�EAeAe�FAe�G�HAe�IAeAe�JAe�K�LAeAe�MAe�NAe�OAe�PAe�QAe�RAe�SAe�T�UAeAe�VAe@Ae�X�YAe�ZAe�[Ae�\Ae�]Ae�^AeAe�_Ae�`�aAe�bAeAe�c�dAeAe�e�fAeAe�gAe�hAe�iAe�jAe�k@Ae�m@@�n�o@�p@�q@�r@�s@�t@�u@�v@�w@�x@�y@�z@�{@�|@�}@�~@�@F�@����@&@��@��H ��H ��H ��H ��H ����H ����H ��H ��H H ��H ����H ��H ��H ��H ��H ��H ��H ��H ��H ��H H ����H ��H H ����H ��H ��H H ��H ����H H ��H ����H ��H ��H ��H H ��H ��H ����H @H H ����H ��H ��H ��H ��H ��H H ����H ��H H ����H ��H ��H ��H H ����H ��H ��H H ����H ��H ��H ��H ��H ��H ��H ��H ��H ��H ��H ��H ��H ��H ��H ��H ��H `����@��@��@��d��d��d��d��dd��d�����'��d�����d��d��dd����dd����dd��d��d��d����d��d��dd����dd����d��dd��d��d����d��d��d��dd����d��d��d�d�d�d�d@d�d�dd�d�d�	d�
d��dd�
d�d��dd��d�d�d�d�dd�d�d��d�dd�d�d�d�� d�!dd�"�#dd�$d�%�&d@d�(���)�ld�*�+d�,�Ld�-�.dd�/�0d�1dd�2d�3d�4�5d�6dd�7d�8d�9�:dd�;�<d�=d�>dd�?d�@�Ad�Bd�Cd�Dd�Ed�Fd�Gd�Hdd�Id�J�Kdd@�Md�Ndd�Od�Pd�Qd�Rd�Sd�T�Ud�Vdd�Wd�X�Ydd�Zd�[d�\�]dd�^�_dd�`d�ad�b�cdd�d�ed�fd�gd�hd�id�jd�kd@d�m���nd�od�pd�qd�rd�sdd�td�ud�vd�w�xd�yd�zd�{dd�|d�}�~dd���dd����d��dd��d����dd����d��d��d��d��d��d��d@d��d��dd����d��d��dd��d��d��d����d��dd��d����d��d��d��dd����dd��d����d��d��dd����d��d��d��d��d��d��d@dd����dd��d��d��d��d����dd��d��d��d����d��d��d��d��dd����dd����dd��d����d��d��d��dd����d��d��d��d��d��d��d@d��@��@��@��@��@������@@����@��@@��@����@��@��@��@@����@��@��@@����@��@��@��@��@��@��@��@��@@����@@������@-K-K@@����@��@@����@@��@�@��@�@�@�@��@@��@�	@�
�,@��@@�
@�@�@�@��@@�@�@�@��@�@�@@�@�@��@�@�@� @�!@�"@�#@�$@�%@�&@�'@�(@�)@�*@�+@�@@�-@�.�/�N�0@�1@�2@�3@@�4@�5@�6�7@@�8�9@�:@�;@�<@�=@�>@�?@�@@�A@�B@�C@�D@�E@�F@�G@@�H�I@@�J�K@@�L@�M@�O�O@�P@�Q@@�R@�S@�T�U@�V@�W@�X@�Y@�Z@�[@�\@�@�^@�_@�`@�a@@�b�c@�d@�e@@�f@�g�h@@�i@�j@�k@�l@�m�n@@�o�p@@�q@�r�s@-K@�u@@�v@�w�x@�y@�z@�{@�|@�}@�~@�@��@��@��@��@@����@@����@@����@��@��@��@�@@����@��@��@��@��@��@@��@����@@����@@��@����@@��@��@����@��@@����@��@��@�@��	�.��	���@��	����@��@��	�(��	M���	�������ҹ���}��ÍE������1���a���������������������@��@��@��@@&@��@��@��@��@�@������@��@��@��@A@��@��@��@��@H�@����@����@��@��@��@E@������@��@��@��@�@��@��@��@��@Ae@��������������@��@��@��@H:@��@��@��@��@F�@������@��@��@��@�@��@��@��@��@A@���@����@��@��@�@�@���@�@�@�@E@�@�	@�
@�@E@�
�7��%�����@�@�@�@��@�@�@�@�@E@�� �@�@�@�@Ae@�!@�"@�#@�$@Ez@�&�,@�'�(@�)@�*@�+@�@�-�2�.@�/@�0@�1@A@�3@�4@�5@�6@@&@�8�O�9�D�:�?�;@�<@�=@�>@H @�@@�A@�B@�C@Ez@�E�J�F@�G@�H@�I@A@�K@�L@�M@�N@��@�P�[�Q�V�R@�S@�T@�U@A@�W@�X@�Y@�Z@H:@�\@�]@�^@�_@�`@Ae@�b���c���d�v�e�k�f@�g@�h@�i@�j@�@�l�q�m@�n@�o@�p@�Y@�r@�s@�t@�u@�'@�w���x�}�y@�z@�{@�|@F�@�~@�@��@��@E@������@��@��@��@�'@��@��@��@��@�@��������������@��@��@��@H @��@��@��@��@@&@@����@��@��@��@Ez@����������@��@��@��@��@��@��@��@��@H�@������@��@��@��@A@��@��@��@��@E@������������������@��@��@��@E@��@��@��@��@�@������@��@��@��@A@��@��@��@��@H�@����������@��@��@��@�'@��@��@��@��@H�@������@��@��@��@A@��@��@��@��@Ae@�����������@��@��@��@F�����F���F���F���F���F���F���F���F���F���F���F���F���F���F���F�����F��F��F��F��F��F��F�F���F��	F�F��
�F�F���
F��F�F���@�@�@�@E@���@�@�@�@A@�@�@�@�@�'@� �&@�!�"@�#@�$@�%@�'@�'�,�(@�)@�*@�+@A@�-@�.@�/@�0@�@�2���3�4�^�5�G�6�A�7�<�8@�9@�:@�;@E�@�=@�>@�?@�@@�@�B@�C@�D@�E@�F@A@�H�S�I�N�J@�K@�L@�M@�@�O@�P@�Q@�R@Ez@�T�Y�U@�V@�W@�X@A@�Z@�[@�\@�]@E@�_�v�`�k�a�f�b@�c@�d@�e@Ae@�g@�h@�i@�j@@&@�l�q�m@�n@�o@�p@A@�r@�s@�t@�u@E@�w‚�x�}�y@�z@�{@�|@�g@�~@�@€@@A@ƒˆ„@…@†@‡@A@‰@Š@‹@Œ@�@޽¦›‘–’@“@”@•@�~@—@˜@™@š@�@œ¡@ž@Ÿ@ @A@¢@£@¤@¥@E@§²¨­©@ª@«@¬@�'@®@¯@°@±@H�@³¸´@µ@¶@·@A@¹@º@»@¼@Ez@¾��¿��@��@��@��@��@E@��@��@��@��@��@A@������@��@��@��@��@@&@������@��@��@��@Ae@��@��@��@��@H @���8����������������@��@��@��@F�@��@��@��@��@E@������@��@��@��@H:@��@��@�@�@E@�����@�@�@�@H:@�@�@�@�@E@��	�@�@�@�@A@�
@�@�@�
@H @��&�����@�@�@�@F�@�@�@�@�@�@��!�@�@�@� @A@�"@�#@�$@�%@�@�'�-@�(�)@�*@�+@�,@H�@�.�3�/@�0@�1@�2@A@�4@�5@�6@�7@@&@�9�c�:�L�;�F�<�A�=@�>@�?@�@@H:@�B@�C@�D@�E@H @�G@�H@�I@�J@�K@A@�M�X�N�S�O@�P@�Q@�R@H:@�T@�U@�V@�W@HG@�Y�^�Z@�[@�\@�]@A@�_@�`@�a@�b@Ae@�d�{�e�p�f�k�g@�h@�i@�j@E@�l@�m@�n@�o@Ae@�q�v�r@�s@�t@�u@A@�w@�x@�y@�z@Ae@�|Â@�}�~@�@À@Á@Ae@ÃÈÄ@Å@Æ@Ç@A@É@Ê@Ë@Ì@�@@&ÎÏ�Ð�JÑ��ÒüÓêÔßÕÚÖ@×@Ø@Ù@@&@Û@Ü@Ý@Þ@H�@àåá@â@ã@ä@A@æ@ç@è@é@H�@ëöìñí@î@ï@ð@�g@ò@ó@ô@õ@H @@÷ø@ù@ú@û@E@ý��þ��ÿ���@�@��@��@�<@��@��@��@��@Ae@������@��@��@��@A@��@��@��@��@A@����������@��@��@��@E@��@��@��@��@�@������@��@��@��@A@��@��@��@��@H�@���������������@��@��@��@A@�@�@�@�@H�@���@�@�@�@�@�@�@�@�@@&@�����@�@�	@�
@A@�@�
@�@�@@&@���@�@�@�@A@�@�@�@�@H�@��3��(��#�@� @�!@�"@E�@�$@�%@�&@�'@H�@�)�.�*@�+@�,@�-@A@�/@�0@�1@�2@H�@�4�?�5�:�6@�7@�8@�9@E@�;@�<@�=@�>@HG@�@�E�A@�B@�C@�D@A@�F@�G@�H@�I@M@�Kĥ�L�v�M�d�N�Y�O�T�P@�Q@�R@�S@�<@�U@�V@�W@�X@E@�Z�_�[@�\@�]@�^@A@�`@�a@�b@�c@E�@�e�p�f�k�g@�h@�i@�j@Ba@�l@�m@�n@�o@E@�q@�r@�s@�t@�u@A@�wĎ�xă�y�~�z@�{@�|@�}@�l@�@Ā@ā@Ă@H:@Ąĉą@Ć@ć@Ĉ@A@Ċ@ċ@Č@č@E@ďĚĐĕđ@Ē@ē@Ĕ@�@Ė@ė@Ę@ę@E@ěĠĜ@ĝ@Ğ@ğ@A@ġ@Ģ@ģ@Ĥ@Ae@Ħ��ħľĨijĩĮĪ@ī@Ĭ@ĭ@A@į@İ@ı@IJ@Ae@ĴĹĵ@Ķ@ķ@ĸ@A@ĺ@Ļ@ļ@Ľ@A@Ŀ������@��@��@��@E@��@��@��@��@�~@������@��@��@��@A@��@��@��@��@E@��������@����@��@��@��@E@��@��@��@��@��@Ae@����@����@��@��@��@H @������@��@��@��@Ae@��@��@��@��@H @�ū��\��7�������@�@�@�@@&@�@�@�@�@�~@���@�@�	@�
@E@�@�
@�@�@�~@�����@�@�@�@Ae@�@�@�@�@F�@��"�@�@� @�!@A@�#@�$@�%@�&@�'@�(H:�)H:�*H:�+H:�,H:�-H:�.H:�/H:�0H:�1H:�2H:�3H:�4H:�5H:�6H:s�s��8�J�9�D�:�?�;@�<@�=@�>@Ae@�@@�A@�B@�C@��@@�E�F@�G@�H@�I@H�@�K�V�L�Q�M@�N@�O@�P@@&@�R@�S@�T@�U@H�@�W@�X@�Y@�Z@�[@A@�]ł�^�u�_�j�`�e�a@�b@�c@�d@A@�f@�g@�h@�i@E@�k�p�l@�m@�n@�o@A@�q@�r@�s@�t@Ez@�v�|@�w�x@�y@�z@�{@@&@@�}�~@�@ŀ@Ł@�@ŃřńŎŅʼnņ@Ň@ň@E@Ŋ@ŋ@Ō@ō@F�@ŏŔŐ@ő@Œ@œ@A@ŕ@Ŗ@ŗ@Ř@�@ŚťśŠŜ@ŝ@Ş@ş@E@š@Ţ@ţ@Ť@E@@Ŧŧ@Ũ@ũ@Ū@E@Ŭ�&ŭ�Ů��ů��Ű��ű@Ų@ų@Ŵ�ŵ�ŶF�ŷF�ŸF�ŹF�źF�ŻF�żF�ŽF�žF�ſF��F��F���F���F���F���F���F���F���F���F���F���F���F�F�����F�F���F���F�����F�F�����F��F���@��@��@��@E@������@��@��@��@A@��@��@��@��@E@����������@��@��@��@Ae@��@��@��@��@E@�����@��@�@�@A@�@�@�@�@E@����	���@�@�@�@Ae@�@�@�@�@M@@�
�@�@�
@�@HG@�����@�@�@�@��@�@�@�@�@|�@��!�@�@�@� @�@�"@�#@�$@�%@E@�'�S�(�A�)�;�*�/�+@�,@�-@�.@A@�0@�1@�2@�3@�4@�5�8�6M�M��7M�#�M��9M��:M�#�@�<�=@�>@�?@�@@�@�B�H�C@�D@�E@�F@�G@@&@�I�N�J@�K@�L@�M@H:@�O@�P@�Q@�R@|�@�T�f�U�[@�V�W@�X@�Y@�Z@az@�\�a�]@�^@�_@�`@A@�b@�c@�d@�e@A@�g�r�h�m�i@�j@�k@�l@@&@�n@�o@�p@�q@�'@�s�x�t@�u@�v@�w@A@�y@�z@�{@�|@E@�~��ȼƀ�`ƁƫƂ@&ƃ@&Ƅ@&@&ƅƆ@&@&Ƈƈ@&Ɖ@&Ɗ@&@&Ƌƌ@&@&ƍ@&ƎƏ@&@&ƐƑ@&ƒ@&Ɠ@&Ɣ@&ƕ@&Ɩ@&Ɨ@&Ƙ@&ƙ@&ƚ@&ƛ@&Ɯ@&Ɲ@&ƞ@&@&ƟƠ@&ơ@&Ƣ@&@&ƣƤ@&ƥ@&Ʀ@&Ƨ@&ƨ@&Ʃ@&ƪ@&@@&Ƭ�ƭ��Ʈ�ƯƵư@Ʊ@Ʋ@Ƴ@ƴ@Ez@ƶƻƷ@Ƹ@ƹ@ƺ@A@Ƽ@ƽ@ƾ@ƿ@H @���������@��@��@��@E@��@��@��@��@E@��@��@��@��@��@A@��������������@��@��@��@H @��@��@��@��@�@������@��@��@��@A@��@��@��@��@HG@���������@��@��@��@H:@��@��@��@�@H @���@�@�@�@az@�@�@�@�@HG@��1������
�@�@�@�	@A@�@�@�
@�@E@���@�@�@�@A@�@�@�@�@��@��&��!�@�@�@� @F�@�"@�#@�$@�%@�@�'�,�(@�)@�*@�+@A@�-@�.@�/@�0@�@�2�I�3�>�4�9�5@�6@�7@�8@Ae@�:@�;@�<@�=@E@�?�D�@@�A@�B@�C@A@�E@�F@�G@�H@E@�J�U�K�P�L@�M@�N@�O@E�@�Q@�R@�S@�T@�@�V�[�W@�X@�Y@�Z@�@�\@�]@�^@�_@�@�a��bǼ�cǒ�d�{�e�p�f�k�g@�h@�i@�j@��@�l@�m@�n@�o@E@�q�v�r@�s@�t@�u@@&@�w@�x@�y@�z@E@�|LJ�}ǂ�~@�@ǀ@ǁ@|�@ǃ@DŽ@Dž@dž@�@LjǍlj@NJ@Nj@nj@@&@ǎ@Ǐ@ǐ@Ǒ@E@ǓǪǔǟǕǚǖ@Ǘ@ǘ@Ǚ@F�@Ǜ@ǜ@ǝ@Ǟ@A@Ǡǥǡ@Ǣ@ǣ@Ǥ@H:@Ǧ@ǧ@Ǩ@ǩ@E@ǫǶǬDZǭ@Ǯ@ǯ@ǰ@E�@Dz@dz@Ǵ@ǵ@H:@@ǷǸ@ǹ@Ǻ@ǻ@E@ǽ��Ǿ��ǿ���@�@��@��@��@�@@����@��@��@��@E@����������@��@��@��@��@��@��@��@��@|�@������@��@��@��@�@��@��@��@��@H @�������������@��@��@��@Ae@��@��@��@��@�@@����@��@��@��@E@�����@�@�@�@Ae@�@�@�@�@�@���@�@�@�@A@�@�	@�
@�@�@�
�b��=��&�����@�@�@�@H:@�@�@�@�@E@��!�@�@�@� @�@�"@�#@�$@�%@Ez@�'�2�(�-�)@�*@�+@�,@�@�.@�/@�0@�1@�@�3�8�4@�5@�6@�7@�@�9@�:@�;@�<@HG@�>�U�?�J�@�E�A@�B@�C@�D@Ae@�F@�G@�H@�I@��@�K�P�L@�M@�N@�O@�@�Q@�R@�S@�T@@&@�V�\@�W�X@�Y@�Z@�[@H�@@�]�^@�_@�`@�a@H�@�cȒ�d�{�e�p�f�k�g@�h@�i@�j@A@�l@�m@�n@�o@�@�q�v�r@�s@�t@�u@A@�w@�x@�y@�z@�Y@�|ȇ�}Ȃ�~@�@Ȁ@ȁ@H @ȃ@Ȅ@ȅ@Ȇ@Ae@Ȉȍȉ@Ȋ@ȋ@Ȍ@�@Ȏ@ȏ@Ȑ@ȑ@M@ȓȪȔȟȕȚȖ@ȗ@Ș@ș@�'@ț@Ȝ@ȝ@Ȟ@E@Ƞȥȡ@Ȣ@ȣ@Ȥ@�@Ȧ@ȧ@Ȩ@ȩ@E@ȫȱ@Ȭȭ@Ȯ@ȯ@Ȱ@E@Ȳȷȳ@ȴ@ȵ@ȶ@�@ȸ@ȹ@Ⱥ@Ȼ@E@ȽʟȾ��ȿ�����������������@��@��@��@Ae@��@��@��@��@�@������@��@��@��@�@��@��@��@��@H @����������@��@��@��@A@��@��@��@��@H @������@��@��@��@�Y@��@��@��@��@H @�����������@��@�@�@@&@�@�@�@�@H @�@�@�@�@�@�@����	�@�@�@�@�g@�
@�@�@�
@az@�@�@�@�@�@H:@�ɕ��-��"���@�@�@�@E@�@�@� @�!@E@�#�(�$@�%@�&@�'@Ae@�)@�*@�+@�,@��@�.�9�/�4�0@�1@�2@�3@A@�5@�6@�7@�8@�@@�:�;@�<@�=@�>@�?@�@n��An��BɈ�C�P�Dn��En��Fn��Gn��Hn��In��Jn��Kn��Ln��Mn��N�On�}7��n��Q�fn��R�S�]n��T�Un��Vn��Wn��Xn��Yn��Zn��[�\+7�')�n��^n�n��_�`n��an�n��b�cn��dn��en�b�n��g�sn��h�in��jn��kn��ln��mn��n�q�5�o�5�p�5�5�rn��5n�n��t�un��vn��wn��xn��yɄ�zɁ�{�~�|�}+T�Ci�}��ɀ{��D�S��ɂn�Ƀn��#��Ʌn�Ɇn�ɇn��bn�ɉn�n�Ɋɋn�n�Ɍɍn�Ɏn�ɏn�ɐn�ɑn�ɒn�ɓn�ɔn��qn�ɖɭɗɢɘɝə@ɚ@ɛ@ɜ@E@ɞ@ɟ@ɠ@ɡ@@&@ɣɨɤ@ɥ@ɦ@ɧ@H:@ɩ@ɪ@ɫ@ɬ@H�@ɮɹɯɴɰ@ɱ@ɲ@ɳ@Ez@ɵ@ɶ@ɷ@ɸ@@&@ɺɿɻ@ɼ@ɽ@ɾ@H:@�@�@��@��@@&@���>�������������@��@��@��@��@A@������@��@��@��@H:@��@��@��@��@E@���	@����@��@��@��@��@��cW��cW���cW����cW��cW��cW��cW��cW��cW����cW����cW��cW��cW�cW��cW��cW��cW��cW�ucW�cW���cW�cWcW��cW�cW�cWcW��cW�cW�cW�cW�cWcW��cW�cW�cW�cWghcW�
��@�@�
@�@E@�@�@�@�@E@��'��@��@�@�@�@HG@��"�@�@� @�!@��@�#@�$@�%@�&@Ae@�(�3�)�.�*@�+@�,@�-@A@�/@�0@�1@�2@E@�4�9�5@�6@�7@�8@A@�:@�;@�<@�=@A@�?�p�@�M�A�G�B@�C@�D@�E@�F@A@�H@�I@�J@�K@�L@A@�N�e�O�T�P@�Q@�R@�S@Ez@�U@�V@�W@�X@�Y@�ZAe�[Ae�\Ae�]Ae�^�b�_Ae�`�aAe��~
��cAe�dAe��Ae�f�k�g@�h@�i@�j@A@�l@�m@�n@�o@�@�qʈ�r�}�s�x�t@�u@�v@�w@E@�y@�z@�{@�|@�@�~ʃ�@ʀ@ʁ@ʂ@�@ʄ@ʅ@ʆ@ʇ@�@ʉʔʊʏʋ@ʌ@ʍ@ʎ@Ba@ʐ@ʑ@ʒ@ʓ@��@ʕʚʖ@ʗ@ʘ@ʙ@A@ʛ@ʜ@ʝ@ʞ@�@ʠ�Mʡ�ʢ��ʣʺʤʯʥʪʦ@ʧ@ʨ@ʩ@�@ʫ@ʬ@ʭ@ʮ@�@ʰʵʱ@ʲ@ʳ@ʴ@A@ʶ@ʷ@ʸ@ʹ@�@ʻ��ʼ�ʽ@ʾ@ʿ@�@Ez@��@��@��@��@��@Ae��Ae����AeAe����AeAe����Ae��Ae������@��@��@��@E@��@��@��@��@�@������@������@��@��@��@��@��@��@��@��@E�@����@����@��@��@��@E@������@��@��@��@Ba@��@�@�@�@E@��#�������@�@�@�@A@�@�@�@�@Ae@���@�	@�
@�@A@�
@�@�@�@A@��@��@�@�@�@E@���@�@�@�@A@�@� @�!@�"@��@�$�6�%�+@�&�'@�(@�)@�*@H:@�,�1�-@�.@�/@�0@A@�2@�3@�4@�5@@&@�7�B�8�=�9@�:@�;@�<@Ae@�>@�?@�@@�A@H�@�C�H�D@�E@�F@�G@A@�I@�J@�K@�L@Ae@�Nˬ�Oˇ�P�b�Q�W@�R�S@�T@�U@�V@E@�X�]�Y@�Z@�[@�\@A@�^@�_@�`@�a@E@�c�n�d�i�e@�f@�g@�h@A@�j@�k@�l@�m@E@�o�t�p@�q@�r@�s@A@�u@�v@�w@�x@�y@�zE��{E��|E��}E��~E��E�ˀE�ˁE�˂E�˃E�˄E��X˅ˆE���E�ˈ˚ˉ˔ˊˏˋ@ˌ@ˍ@ˎ@Ae@ː@ˑ@˒@˓@E@@˕˖@˗@˘@˙@E@˛˦˜ˡ˝@˞@˟@ˠ@Ae@ˢ@ˣ@ˤ@˥@�@@˧˨@˩@˪@˫@E@˭��ˮ�˯˺˰˵˱@˲@˳@˴@Ae@˶@˷@˸@˹@A@@˻˼@˽@˾@˿@Ae@���������@��@��@��@A@��@��@��@��@H @������@��@��@��@�@��@��@��@��@A@��������������@��@��@��@�@��@��@��@��@�@������@��@��@��@��@��@��@��@��@A@��������@��@��@�@H:@�@�@�@�@�@���@�@�@�@A@�@�@�@�@E@��n���	��
̡��:��#�
����@�@�@�@A@�@�@�@�@E@���@�@�@�@A@�@� @�!@�"@|�@�$�/�%�*�&@�'@�(@�)@��@�+@�,@�-@�.@�@�0�5�1@�2@�3@�4@A@�6@�7@�8@�9@E@�;�R�<�G�=�B�>@�?@�@@�A@Ae@�C@�D@�E@�F@�@�H�M�I@�J@�K@�L@Ae@�N@�O@�P@�Q@E@�S̖�T̑�U@�V@�W@�X@�Y@�ZF��[F��\F��]F��^F��_F��`F��a�y�bF��cF��dF�F��e�fF��gF��hF��iF��jF��kF��lF��mF��nF��oF�F��p�qF��rF��sF��tF��uF��vF��wF��xF��F��zF��{F��|F��}F��~F��F�̀F�́F�̂F�̃F�̄F�̅F�̆F�̇F�̈F�̉F�F�̊F�̋̌F�F�̍̎F�̏F�̐F���F�̒@̓@̔@̕@H @̗̜̘@̙@̚@̛@A@̝@̞@̟@̠@E@̢��̣̺̤̯̥̪̦@̧@̨@̩@A@̫@̬@̭@̮@E@̵̰̱@̲@̳@̴@�@̶@̷@̸@̹@�@̻��̼�̽@̾@̿@�@Ba@��@��@��@��@�@������@��@��@��@��@��@��@��@��@H @��������������@��@��@��@E@��@��@��@��@��@������@��@��@��@��@��@��@��@��@HG@����@����@��@��@��@�@�����@��@��@�@E@�@�@�@�@H @�͖��,����
���@�@�@�@B@�@�@�@�	@E@���@�
@�@�@��@�@�@�@�@H:@��!���@�@�@�@E@�@�@�@� @E@�"�'�#@�$@�%@�&@�@�(@�)@�*@�+@E@�-̈́�.�y�/�t�0@�1@�2@�3@�4@�5F��6F��7F��8F��9F��:F��;F��<�d�=F��>F��?F��@F��AF��BF��CF��DF��EF��F�T�GF��HF��IF��JF��KF��LF��MF��NF��OF��PF�F��Q�RF��SF�F��F��UF��V�W�^�X�[�Y�ZF�G��F��\�]G���G��\�_�b�`�a����q��cF���F��eF��fF��gF��hF��iF��jF��kF��lF��mF�F��nF��oF��p�qF��rF�F��s�;F��u@�v@�w@�x@HG@�z��{@�|@�}@�~@H�@̀@́@͂@̓@Ae@͇͐͆͋ͅ@͈@͉@͊@E@͌@͍@͎@͏@E@͑@͒@͓@͔@͕@E@͗��͙͚ͯͤ͛͘͟@͜@͝@͞@A@͠@͡@͢@ͣ@��@ͥͪͦ@ͧ@ͨ@ͩ@A@ͫ@ͬ@ͭ@ͮ@Ae@ͰͻͱͶͲ@ͳ@ʹ@͵@F�@ͷ@͸@͹@ͺ@A@ͼ�ͽ@;@Ϳ@�@A@��@��@��@��@A@��������������@��@��@��@@&@��@��@��@��@H�@������@��@��@��@A@��@��@��@��@H�@����������@��@��@��@F�@��@��@��@��@A@������@��@��@��@A@��@��@��@��@E@�ί��V��'�������@�@�@�@Ae@�@�@�@�@Ae@���@�@�	@�
@A@�@�
@�@�@HG@�����@�@�@�@Ae@�@�@�@�@�'@��"�@�@� @�!@A@�#@�$@�%@�&@E@�(�?�)�4�*�/�+@�,@�-@�.@��@�0@�1@�2@�3@��@�5�:�6@�7@�8@�9@A@�;@�<@�=@�>@H @�@�K�A�F�B@�C@�D@�E@Ae@�G@�H@�I@�J@E@�L�Q�M@�N@�O@�P@A@�R@�S@�T@�U@H�@�W΅�X�o�Y�d�Z�_�[@�\@�]@�^@A@�`@�a@�b@�c@E@�e�j�f@�g@�h@�i@A@�k@�l@�m@�n@E@�p�z�q�u�r@�s@�t@HG@�v@�w@�x@�y@Ae@�{΀�|@�}@�~@�@A@΁@΂@΃@΄@�@ΆΝ·ΒΈ΍Ή@Ί@΋@Ό@@&@Ύ@Ώ@ΐ@Α@E@ΓΘΔ@Ε@Ζ@Η@A@Ι@Κ@Λ@Μ@�@ΞΤΟ@Π@Ρ@΢@Σ@az@ΥΪΦ@Χ@Ψ@Ω@A@Ϋ@ά@έ@ή@�~@ΰ�α��β��γξδιε@ζ@η@θ@Ae@κ@λ@μ@ν@E@ο���@�@��@��@A@��@��@��@��@�@����������@��@��@��@H:@��@��@��@��@H�@������@��@��@��@A@��@��@��@��@Ae@�������������@��@��@��@�S@��@��@��@��@E@������@��@��@��@A@��@�@�@�@H:@�����@�@�@�@Ae@�@�@�@�@A@��
�@�@�@�	@A@�@�@�
@�@E@��?��(�����@�@�@�@A@�@�@�@�@�@��#�@� @�!@�"@A@�$@�%@�&@�'@A@�)�4�*�/�+@�,@�-@�.@Ez@�0@�1@�2@�3@H�@�5�:�6@�7@�8@�9@A@�;@�<@�=@�>@E@�@�W�A�L�B�G�C@�D@�E@�F@@&@�H@�I@�J@�K@�@�M�R�N@�O@�P@�Q@A@�S@�T@�U@�V@H�@�X�c�Y�^�Z@�[@�\@�]@A@�_@�`@�a@�b@��@�d�i�e@�f@�g@�h@A@�j@�k@�l@�m@HG@�o��p�V�q��r���sϪ�t��u�z�v@�w@�x@�y@H @�{@�|@�}@�~@�@πυρ@ς@σ@τ@A@φ@χ@ψ@ω@ϊ@ϋEόEύEώEϏEϐEϑEϒEϓEϔEϕEEϖϗ�Ϙ�ϙ�Ϛ�ϛ�Ϝ�ϝ�Ϟ�ϟ�Ϡ�ϡ�Ϣ�ϣ�Ϥ�ϥ�Ϧ�ϧ�Ϩ�ϩ�E�ϫ϶Ϭϱϭ@Ϯ@ϯ@ϰ@�~@ϲ@ϳ@ϴ@ϵ@A@Ϸϼϸ@Ϲ@Ϻ@ϻ@Ae@Ͻ@Ͼ@Ͽ@�@�@��H ��H ��H ��H H ����H H ��H ��H ����H H ��H AK��������������@��@��@��@A@��@��@��@��@E@������@��@��@��@A@��@��@��@��@E@����������@��@��@��@��@��@��@��@��@H @�����@��@�@�@A@�@�@�@�@HG@��'����
���@�@�@�@A@�@�@�@�	@E@���@�
@�@�@A@�@�@�@�@H�@��@��@�@�@�@H�@��"�@�@� @�!@A@�#@�$@�%@�&@A@�(�?�)�4�*�/�+@�,@�-@�.@H:@�0@�1@�2@�3@|�@�5�:�6@�7@�8@�9@A@�;@�<@�=@�>@�'@�@�K�A�F�B@�C@�D@�E@��@�G@�H@�I@�J@�@�L�Q�M@�N@�O@�P@A@�R@�S@�T@�U@A@�WЭ�XЇ�Y�p�Z�e�[�`�\@�]@�^@�_@Ez@�a@�b@�c@�d@H @�f�k�g@�h@�i@�j@A@�l@�m@�n@�o@H:@�q�|�r�w�s@�t@�u@�v@�6@�x@�y@�z@�{@H:@�}Ђ�~@�@Ѐ@Ё@A@Ѓ@Є@Ѕ@І@�~@ЈПЉДЊЏЋ@Ќ@Ѝ@Ў@�@А@Б@В@Г@�@ЕКЖ@З@И@Й@A@Л@М@Н@О@�@РТ@СA@УШФ@Х@Ц@Ч@A@Щ@Ъ@Ы@Ь@�@Ю��Я��албжв@г@д@е@Ae@з@и@й@к@��@м�н@о@п@�@A@��@��@��@��@Ae@������@��@��@��@��@A@������@��@��@��@A@��@��@��@��@E@��������������@��@��@��@��@��@��@��@��@Ae@������@��@��@��@A@��@��@��@��@�@���@����@��@�@�@H�@���@�@�@�@A@�@�@�@�@H�@����Y��*������
�	@�
@�@�@@&@�@�@�@�@��@@��@�@�@�@F�@��$���@�@�@�@��@� @�!@�"@�#@HG@�%@�&@�'@�(@�)@�@�+�B�,�7�-�2�.@�/@�0@�1@E@�3@�4@�5@�6@�@�8�=�9@�:@�;@�<@@&@�>@�?@�@@�A@�@�C�N�D�I�E@�F@�G@�H@F�@�J@�K@�L@�M@E@�O�T�P@�Q@�R@�S@A@�U@�V@�W@�X@F�@�Z���[�m�\�g�]�b�^@�_@�`@�a@H:@�c@�d@�e@�f@Ae@@�h�i@�j@�k@�l@E@�n��@�o�p@�q@�r@�s@�t@�uAe�vAe�w��Ae�x�yѕ�zчAe�{�|!9�}Ae�~Ae�AeAeрсфтAeуAeAe�AeхAeцAe�шщAe!9ъ!9ыAeьAeэAeAeюяђѐAeё��Ae��AeѓAeєAe��іѽїѤAeјљAeњAeћAeAeќѝѡўѠџ~Ae~~AeAeѢAeѣAe~ѥѰѦAeѧAeѨAeAeѩѪѭѫAeѬAeAe�AeѮAeѯAe�ѱAeѲAeѳAeAeѴѵѸѶ
�ѷ
�Ae
�ѹѻѺAe
�AeAeѼAe
�Ѿ��Aeѿ�Ae�Ae��AeAe����Ae��Ae����Ae��Ae��!9��Ae��Ae��AeAe��������~��~Ae~Ae��Ae��Ae~��Ae��Ae��AeAe����Ae��Ae��Ae��AeAe����Ae~����Ae~Ae������@��@��@��@A@��@��@��@��@A@������������@��@��@��@@&@�@�@�@�@E@���@�@�@�@�@�@�@�@�@E@����	�@�@Ba@�
@�@�@�
@H:@���@�@�@�@A@�@�@�@�@E@��o��E��.��#@��@� @�!@�"@HG@�$�)�%@�&@�'@�(@�@�*@�+@�,@�-@Ae@�/�:�0�5�1@�2@�3@�4@E@�6@�7@�8@�9@H:@�;�@�<@�=@�>@�?@�@�A@�B@�C@�D@@&@�F�X�G�R�H�M�I@�J@�K@�L@Ae@�N@�O@�P@�Q@@&@@�S�T@�U@�V@�W@Ae@�Y�d�Z�_�[@�\@�]@�^@Ae@�`@�a@�b@�c@HG@�e�j�f@�g@�h@�i@�@�k@�l@�m@�n@HG@�pҚ�q҈�r�}�s�x�t@�u@�v@�w@@&@�y@�z@�{@�|@H:@�~҃�@Ҁ@ҁ@҂@H:@҄@҅@҆@҇@E@҉ҔҊҏҋ@Ҍ@ҍ@Ҏ@F�@Ґ@ґ@Ғ@ғ@H�@@ҕҖ@җ@Ҙ@ҙ@Ae@қҢ@Ҝ@ҝҞ@ҟ@Ҡ@ҡ@E@ңҮҤҩҥ@Ҧ@ҧ@Ҩ@A@Ҫ@ҫ@Ҭ@ҭ@Ae@үҴҰ@ұ@Ҳ@ҳ@A@ҵ@Ҷ@ҷ@Ҹ@E@Һ��һ�HҼ�vҽ�Ҿ�sҿ�����������������@��@��@��@�@��@��@��@��@H�@������@��@��@��@@&@��@��@��@��@Ae@����������@��@��@��@A@��@��@��@��@E@������@��@��@��@E@��@��@��@��@B@�����������@��@�@�@Ae@�@�@�@�@@&@@��@�@�@�@H�@����	�@�@�@�@E@�
@�@�@�
@Ba@���@�@�@�@�@�@�@�@�@@&@��I��2��'��"�@�@� @�!@A@�#@�$@�%@�&@�'@�(�-�)@�*@�+@�,@F�@�.@�/@�0@�1@H @�3�>�4�9�5@�6@�7@�8@Ae@�:@�;@�<@�=@H�@�?�D�@@�A@�B@�C@A@�E@�F@�G@�H@�@�J�a�K�V�L�Q�M@�N@�O@�P@@&@�R@�S@�T@�U@@&@�W�\�X@�Y@�Z@�[@Ae@�]@�^@�_@�`@H�@�b�h@�c�d@�e@�f@�g@H�@�i�n�j@�k@�l@�m@M@�o@�p@�q@�r@�@�t���uӟ�vӈ�wӂ�x�}�y@�z@�{@�|@@&@�~@�@Ӏ@Ӂ@Ae@@Ӄӄ@Ӆ@ӆ@Ӈ@E@ӉӔӊӏӋ@ӌ@Ӎ@ӎ@��@Ӑ@ӑ@Ӓ@ӓ@Ae@ӕӚӖ@ӗ@Ә@ә@H:@ӛ@Ӝ@ӝ@Ӟ@E@ӠӲӡӬӢӧӣ@Ӥ@ӥ@Ӧ@@&@Ө@ө@Ӫ@ӫ@E@@ӭӮ@ӯ@Ӱ@ӱ@H @ӳӾӴӹӵ@Ӷ@ӷ@Ӹ@A@Ӻ@ӻ@Ӽ@ӽ@H @ӿ���@�@��@��@E@��@��@��@��@�@������������������@��@��@��@A@��@��@��@��@�@������@��@��@��@H:@��@��@��@��@E@����@����@��@��@��@A@������@��@��@��@�@��@��@��@��@A@�����@�@�@�@�@@&@���@�@�@�@E@�@�@�@�@�~@���	��
@�@�@�
@A@�@�@�@�@E@���@�@�@�@A@�@�@�@�@|�@�Օ� �A�!���"Է�#Ԭ�$ԧ�%@�&@�'@�(@�)@�*Ԇ�+H:�,�i�-�9�.H:H:�/�0H:H:�1�2H:�3H:�4H:�5H:�6H:�7H:�8H:�H:H:�:H:�;H:�<H:�=�>H:�?H:�@H:�A�U�BH:H:�CH:�DH:�E�FH:�GH:�HH:�IH:�JH:�KH:�LH:�MH:H:�N�OH:�PH:�QH:H:�R�SH:H:�TH:�9�VH:�WH:H:�XH:�Y�ZH:�[H:�\H:�]H:�^H:�_H:�`H:�aH:�bH:�cH:�dH:H:�e�fH:�gH:H:�h�9H:H:�jH:�kH:�lH:�mH:�n�oH:�pH:�qH:H:�r�sH:H:�t�uH:�vH:�wH:�xH:�yH:�zH:�{H:�|H:�}H:�~H:�H:ԀH:H:ԁԂH:H:ԃH:ԄH:ԅ,iH:H:ԇH:ԈԉH:ԊH:ԋH:ԌH:ԍH:ԎH:ԏH:ԐH:ԑԟԒԙԓԖԔԕ�*N*�OԗԘ,>N�s�ԚԜԛs��,ԝԞ�#G�l��ԠH:ԡԤԢԣ����ԥԦ���9s�H:Ԩ@ԩ@Ԫ@ԫ@@&@ԭԲԮ@ԯ@԰@Ա@A@Գ@Դ@Ե@Զ@�@Ը��ԹԾԺ@Ի@Լ@Խ@E@Կ@�@�@��@E@������@��@��@��@�@��@��@��@��@Ae@���*��������@��@������G�����F���F���F���F���F���F���F���F���F���F���F���F���F���F���F���F���F���F���F���F���F���F���F���F���F���F���F���F���F���F��F� �F��i@�G��G��G��G��G��G��G��G��G��G��G��G��G��G��G��G��G��	G��
G��G��G��
G��G��G��G��G��G��G��G��G��G���G�����G�i@��@�@�@�@A@� �%�!@�"@�#@�$@Ez@�&@�'@�(@�)@E@�+�6�,�1�-@�.@�/@�0@A@�2@�3@�4@�5@Ae@�7�<�8@�9@�:@�;@A@�=@�>@�?@�@@�~@�B�k�C�e�D�_�E�J�F@�G@�H@�I@Ae@�K@�L@�M@�N@�O@�PH:�QH:�RH:�SH:�TH:�UH:�VH:H:�W�XH:�YH:�ZH:H:�[�\s��]s�s��^H:s�@�`�a@�b@�c@�d@E@�f@�g@�h@�i@�j@HG@�l�~�m�x�n�s�o@�p@�q@�r@�@�t@�u@�v@�w@�g@@�y�z@�{@�|@�}@E@�ՊՀՅՁ@Ղ@Ճ@Մ@�@Ն@Շ@Ո@Չ@Ae@ՋՐՌ@Ս@Վ@Տ@E@Ց@Ւ@Փ@Ք@A@Ֆ�՗�՘կՙդ՚՟՛@՜@՝@՞@��@ՠ@ա@բ@գ@E@եժզ@է@ը@թ@�'@ի@լ@խ@ծ@H�@հջձնղ@ճ@մ@յ@Ae@շ@ո@չ@պ@�@@ռս@վ@տ@�@A@��������������@��@��@��@H:@��@��@��@��@E@������@��@��@��@@&@��@��@��@��@��@��Ez��Ez��Ez��Ez��Ez��Ez��Ez��Ez��Ez��Ez��Ez����������������Ez|�mEz������Ez��m��Ez��Ez������Ez��Ez��Ez��Ez��@��@�@�@�@�@H:�H:�H:��H:H:���H:�H:��H:�H:�H:�H:�H:�	�
�
H:�H:�H:s�H:�H:�H:�H:N*H:���@�@�@�@E@�@�@�@�@E@��G��5��*� �%�!@�"@�#@�$@A@�&@�'@�(@�)@li@�+�0�,@�-@�.@�/@��@�1@�2@�3@�4@A@�6�<@�7�8@�9@�:@�;@Ae@�=�B�>@�?@�@@�A@�@�C@�D@�E@�F@E@�H�_�I�T�J�O�K@�L@�M@�N@A@�P@�Q@�R@�S@E@�U�Z�V@�W@�X@�Y@Ae@�[@�\@�]@�^@A@�`�k�a�f�b@�c@�d@�e@Ae@�g@�h@�i@�j@�@�l�q�m@�n@�o@�p@A@�r@�s@�t@�u@N@�w��x�X�y���z֩�{֒�|և�}ւ�~@�@ր@ց@Ae@փ@ք@օ@ֆ@A@ֈ֍։@֊@֋@֌@A@֎@֏@֐@֑@Ae@֓֞֔֙֕@֖@֗@֘@E@֚@֛@֜@֝@�@֤֟֠@֡@֢@֣@�'@֥@֦@֧@֨@�@֪�ֱֶ֭֫֬@֮@֯@ְ@H�@ֲ@ֳ@ִ@ֵ@�'@ַָּ@ֹ@ֺ@ֻ@�@ֽ@־@ֿ@�@E@����������@��@��@��@@&@��@��@��@��@E@������@��@��@��@�@��@��@��@��@H @�����������@����@��@��@��@�@@����@��@��@��@Ae@����������@��@��@��@�@��@��@��@��@�@@���@�@�@�@E@�������@�@�@�@�@�@�@�@�@H:@���@�	@�
@�@A@�
@�@�@�@H @��R��M�@�@�@�@�H:H:��H:�H:�H:�H:�H:��<� �4�!H:�"�.�#�)�$H:�%H:�&H:�'�(H:�H:��*H:�+H:�,H:�-H:H:��/H:�0H:�1H:�2H:�3H:�H:�5H:H:�6�7H:�8H:�9H:�:H:�;H:�H:�=�E�>H:�?H:�@H:�AH:�BH:�CH:�DH:H:��FH:�GH:�HH:�IH:�JH:�KH:�LH:H:��N@�O@�P@�Q@H @@�S�T@�U@�V@�W@A@�Y׳�Z׉�[�r�\�g�]�b�^@�_@�`@�a@�@�c@�d@�e@�f@Ae@�h�m�i@�j@�k@�l@Ez@�n@�o@�p@�q@E@�s�~�t�y�u@�v@�w@�x@Ae@�z@�{@�|@�}@E@�ׄ׀@ׁ@ׂ@׃@Ae@ׅ@׆@ׇ@׈@�@׊ס׋ז׌ב׍@׎@׏@א@�~@ג@ד@ה@ו@A@חלט@י@ך@כ@HG@ם@מ@ן@נ@�'@ערף@פ@ץ@צ@ק@A@ש׮ת@׫@׬@׭@A@ׯ@װ@ױ@ײ@A@״��׵��׶�׷׼׸@׹@׺@׻@A@׽@׾@׿@�@A@��@��@��@��@��@az@����@����@��@��@��@|�@������@��@��@��@��@��@��@��@��@�@��������������@��@��@��@�~@��@��@��@��@�~@������@��@��@��@�@��@��@��@��@��@���@����@�@�@�@E@@��@�@�@�@�@�إ��U��+������	�@�@�@�@�@�
@�@�@�
@E@���@�@�@�@�@�@�@�@�@�@�� �@�@�@�@�@Ae@�!�&�"@�#@�$@�%@A@�'@�(@�)@�*@E@�,�>�-�3@�.�/@�0@�1@�2@@&@�4�9�5@�6@�7@�8@�@�:@�;@�<@�=@A@�?�J�@�E�A@�B@�C@�D@E@�F@�G@�H@�I@@&@�K�P�L@�M@�N@�O@Ae@�Q@�R@�S@�T@A@�V�{�W�i�X�c�Y�^�Z@�[@�\@�]@A@�_@�`@�a@�b@�@@�d�e@�f@�g@�h@�@�j�u�k�p�l@�m@�n@�o@Ae@�q@�r@�s@�t@HG@�v@�w@�x@�y@�z@�'@�|؎�}؃@�~�@؀@؁@؂@H�@؄؉؅@؆@؇@؈@H�@؊@؋@،@؍@�@؏ؚؐؕؑ@ؒ@ؓ@ؔ@Ae@ؖ@ؗ@ؘ@ؙ@E@؛ؠ؜@؝@؞@؟@H�@ء@آ@أ@ؤ@��@ئ�ا��بغةشتدث@ج@ح@خ@Ae@ذ@ر@ز@س@Ae@@صض@ط@ظ@ع@�'@ػ��ؼ�ؽ@ؾ@ؿ@�@�@��@��@��@��@A@������@��@��@��@�g@��@��@��@��@��@��F���F���F���Gt��F���F���F�GtF���������������@��@��@��@HG@��@��@��@��@E@@����@��@��@��@E@��@������@��@��@��@E@��@�@�@�@��@��#�������@�@�@�@A@�@�@�@�@F�@���@�	@�
@�@M@�
@�@�@�@��@�����@�@�@�@E�@�@�@�@�@H�@@��@� @�!@�"@Ae@�$�1�%�+@�&�'@�(@�)@�*@Ez@@�,�-@�.@�/@�0@E@�2�=�3�8�4@�5@�6@�7@E�@�9@�:@�;@�<@E@�>�C�?@�@@�A@�B@�'@�D@�E@�F@�G@E@�I���Jڡ�K���Lٜ�M�w�N�`�O�U@�P�Q@�R@�S@�T@�@�V�[�W@�X@�Y@�Z@A@�\@�]@�^@�_@�@�a�l�b�g�c@�d@�e@�f@@&@�h@�i@�j@�k@E�@�m�r�n@�o@�p@�q@�'@�s@�t@�u@�v@H�@�xي�y�@�z�{@�|@�}@�~@E@ـمف@ق@ك@ل@@&@ن@ه@و@ى@E@ًّ@ٌٍ@َ@ُ@ِ@HG@ْٗٓ@ٔ@ٕ@ٖ@az@٘@ٙ@ٚ@ٛ@E@ٝ��ٰٟٞ٥@٠١@٢@٣@٤@Ez@٦٫٧@٨@٩@٪@�@٬@٭@ٮ@ٯ@F�@ٱٷ@ٲٳ@ٴ@ٵ@ٶ@�@ٸٽٹ@ٺ@ٻ@ټ@�@پ@ٿ@�@�@Ae@��������������@��@��@��@@&@��@��@��@��@A@������@��@��@��@�@��@��@��@��@�@����������@��@��@��@A@��@��@��@��@�@@����@��@��@��@E@���G��������������@��@��@�@�~@�@�@�@�@A@���@�@�@�@F�@�@�@�@�@�@����
�	@�
@�@�@A@�@�@�@�@Ae@�@�@�@�@�@Ae@��0��%�� �@�@�@�@Ae@�!@�"@�#@�$@�'@�&�+�'@�(@�)@�*@�@�,@�-@�.@�/@�'@�1�<�2�7�3@�4@�5@�6@E�@�8@�9@�:@�;@A@�=�B�>@�?@�@@�A@��@�C@�D@�E@�F@HG@�H�r�I�`�J�U�K�P�L@�M@�N@�O@Ae@�Q@�R@�S@�T@E@�V�[�W@�X@�Y@�Z@�@�\@�]@�^@�_@E@�a�l�b�g�c@�d@�e@�f@�@�h@�i@�j@�k@A@@�m�n@�o@�p@�q@A@�sڊ�t��u�z�v@�w@�x@�y@Ae@�{@�|@�}@�~@�@ڀڅځ@ڂ@ڃ@ڄ@�@چ@ڇ@ڈ@ډ@�@ڋږڌڑڍ@ڎ@ڏ@ڐ@A@ڒ@ړ@ڔ@ڕ@�@ڗڜژ@ڙ@ښ@ڛ@�@ڝ@ڞ@ڟ@ڠ@�@ڢ�Pڣ��ڤ��ڥڸڦڱڧڬڨ@ک@ڪ@ګ@@&@ڭ@ڮ@گ@ڰ@E@ڲڳAe@ڴ@ڵ@ڶ@ڷ@A@ڹ��ںڿڻ@ڼ@ڽ@ھ@Ae@�@�@��@��@A@������@��@��@��@A@��@��@��@��@H�@��������������@��@��@��@A@��@��@��@��@H�@@����@��@��@��@�'@����������@A@��@��@��@��@A@@����@��@��@��@��@���!���
������@�@�@�@�@�@�@�@�@F�@���@�@�@�@Ez@�@�@�@�	@HG@�����
@�@�@�@H @�@�@�@�@�@���@�@�@�@�@�@�@�@� @��@�"�9�#�.�$�)�%@�&@�'@�(@E�@�*@�+@�,@�-@E@�/�4�0@�1@�2@�3@�'@�5@�6@�7@�8@H�@�:�E�;�@�<@�=@�>@�?@��@�A@�B@�C@�D@�@�F�K�G@�H@�I@�J@A@�L@�M@�N@�O@E@�Qۛ�R�q�S�j�T�_�U�Z�V@�W@�X@�Y@@&@�[@�\@�]@�^@�@�`�e�a@�b@�c@�d@��@�f@�g@�h@�i@H�@�k@@�l�m@�n@�o@�p@�@�rۉ�s�~�t�y�u@�v@�w@�x@Ae@�z@�{@�|@�}@H @�ۄۀ@ہ@ۂ@ۃ@�@ۅ@ۆ@ۇ@ۈ@�@ۊەۋېی@ۍ@ێ@ۏ@��@ۑ@ے@ۓ@۔@E@�'ۖۗ@ۘ@ۙ@ۚ@��@ۜۼ۝ۯ۞۩۟ۤ۠@ۡ@ۢ@ۣ@A@ۥ@ۦ@ۧ@ۨ@�@@۪۫@۬@ۭ@ۮ@E@۰۶@۱۲@۳@۴@۵@HG@@۷۸@۹@ۺ@ۻ@E@۽��۾��@ۿ�@�@��@��@�~@������@��@��@��@�@��@��@��@��@E@����������@��@��@��@@&@��@��@��@��@�@������@��@��@��@�@��@��@��@��@H�@���L��ܗ���C���������������@��@��@��@HG@��@��@�@�@HG@���@�@�@�@�@�@�@�@�@E@����	�@�@�@�@�@�
@�@�@�
@H @@��@�@�@�@H�@��,��!���@�@�@�@Ae@�@�@�@� @E@�"�'�#@�$@�%@�&@�@�(@�)@�*@�+@Ae@�-�8�.�3�/@�0@�1@�2@�@�4@�5@�6@�7@@&@�9�>�:@�;@�<@�=@H:@�?@�@@�A@�B@E@�D�h�E�\�F�Q�G�L�H@�I@�J@�K@A@�M@�N@�O@�P@E@�R�W�S@�T@�U@�V@�@�X@�Y@�Z@�[@H�@@�]�^�c�_@�`@�a@�b@A@�d@�e@�f@�g@E@�i܀�j�u�k�p�l@�m@�n@�o@Ae@�q@�r@�s@�t@E@�v�{�w@�x@�y@�z@�@�|@�}@�~@�@�@܁܌܂܇܃@܄@܅@܆@H @܈@܉@܊@܋@H:@܍ܒ܎@܏@ܐ@ܑ@@&@ܓ@ܔ@ܕ@ܖ@@&@ܘ�ܙ��ܚܱܛܦܜܡܝ@ܞ@ܟ@ܠ@��@ܢ@ܣ@ܤ@ܥ@@&@ܧܬܨ@ܩ@ܪ@ܫ@Ae@ܭ@ܮ@ܯ@ܰ@E@ܸܴܲܽܳ@ܵ@ܶ@ܷ@H @ܹ@ܺ@ܻ@ܼ@F�@ܾ��ܿ@�@�@��@Ae@��@��@��@��@�@��������������@��@��@��@A@��@��@��@��@H�@������@��@��@��@�'@��@��@��@��@E@����������@��@��@��@E@��@��@��@��@HG@������@��@��@��@Ba@��@��@�@�@�@��'�������@�@�@�@A@�@�@�@�@A@���@�@�	@�
@E@�@�
@�@�@Ez@�����@�@�@�@@&@�@�@�@�@E@��"�@�@� @�!@A@�#@�$@�%@�&@Ae@�(�:�)�4�*�/�+@�,@�-@�.@A@�0@�1@�2@�3@E@�5@�6@�7@�8@�9@�'@�;�F�<�A�=@�>@�?@�@@Ae@�B@�C@�D@�E@�@@�G�H@�I@�J@�K@E@�M��Nݣ�O�y�P�b�Q�\�R�W�S@�T@�U@�V@Ae@�X@�Y@�Z@�[@|@@�]�^@�_@�`@�a@HG@�c�n�d�i�e@�f@�g@�h@Ae@�j@�k@�l@�m@�@�o�t�p@�q@�r@�s@E�@�u@�v@�w@�x@H�@�z݌�{݁@�|�}@�~@�@݀@az@݂݇݃@݄@݅@݆@�'@݈@݉@݊@݋@Ae@ݍݘݎݓݏ@ݐ@ݑ@ݒ@�@ݔ@ݕ@ݖ@ݗ@A@ݙݞݚ@ݛ@ݜ@ݝ@A@ݟ@ݠ@ݡ@ݢ@|�@ݤ��ݥ��ݦݱݧݬݨ@ݩ@ݪ@ݫ@A@ݭ@ݮ@ݯ@ݰ@H @ݲ��ݳ@ݴ@ݵ@ݶ@�ݷݸAݹAݺAݻAݼAݽAݾAݿA�A�A��A��A��A��A����A�NA��@��@��@��@H @����@����@��@��@��@�@������@��@��@��@A@��@��@��@��@Ae@�������������@��@��@��@F�@��@��@��@��@H @�����@��@��@��@��@��߫��߫߫��߫�߫�߫�߫�߫�߫�߫�߫�����R���R߫���߫�R߫�߫�߫�R߫�@�	@�
@�@�'@�
�@��@�@�@�@�'@���@�@�@�@H:@�@�@�@�@E@��n� �J�!�3�"�-�#�(�$@�%@�&@�'@Ae@�)@�*@�+@�,@E@@�.�/@�0@�1@�2@H�@�4�?�5�:�6@�7@�8@�9@H�@�;@�<@�=@�>@Ba@�@�E�A@�B@�C@�D@�@�F@�G@�H@�I@�@�K�b�L�W�M�R�N@�O@�P@�Q@��@�S@�T@�U@�V@�@�X�]�Y@�Z@�[@�\@HG@�^@�_@�`@�a@HG@@�c�d�i�e@�f@�g@�h@�g@�j@�k@�l@�m@�6@�oޞ�pއ�q�|�r�w�s@�t@�u@�v@A@�x@�y@�z@�{@H�@�}ނ�~@�@ހ@ށ@H:@ރ@ބ@ޅ@ކ@E@ވޓމގފ@ދ@ތ@ލ@H:@ޏ@ސ@ޑ@ޒ@H @ޔޙޕ@ޖ@ޗ@ޘ@Ae@ޚ@ޛ@ޜ@ޝ@�@ޟ޶ޠޫޡަޢ@ޣ@ޤ@ޥ@A@ާ@ި@ީ@ު@Ae@ެޱޭ@ޮ@ޯ@ް@�'@޲@޳@޴@޵@@&@޷��޸޽޹@޺@޻@޼@�@޾@޿@�@�@H @������@��@��@��@H:@��@��@��@��@Ae@����������L��ߌ���<����������������@��@��@��@��@��@��@��@��@E@������@��@��@��@Ae@��@��@��@��@��@�������������������������������������������������@�@�@�@�@�@�@�@�@@&@��
�	@�
@�@�@�<@�@�@�@�@H�@��%��@��@�@�@�@H�@�� �@�@�@�@H�@�!@�"@�#@�$@H�@�&�1�'�,�(@�)@�*@�+@�@�-@�.@�/@�0@H�@�2�7�3@�4@�5@�6@�@�8@�9@�:@�;@H�@�=�b�>�P�?�J�@�E�A@�B@�C@�D@A@�F@�G@�H@�I@H @@�K�L@�M@�N@�O@�@�Q�W@�R�S@�T@�U@�V@E@�X�]�Y@�Z@�[@�\@H:@�^@�_@�`@�a@E@�c�u�d�o�e�j�f@�g@�h@�i@H:@�k@�l@�m@�n@@&@@�p�q@�r@�s@�t@�@�v߁�w�|�x@�y@�z@�{@A@�}@�~@�@߀@HG@߂߇߃@߄@߅@߆@Ae@߈@߉@ߊ@ߋ@HG@ߍ��ߎ߳ߏߦߐߛߑߖߒ@ߓ@ߔ@ߕ@Aemߗ@ߘ@ߙ@ߚ@Ez@ߜߡߝ@ߞ@ߟ@ߠ@HG@ߢ@ߣ@ߤ@ߥ@�@ߧ߭@ߨߩ@ߪ@߫@߬@H�@߮@߯@߰@߱@߲@Ez@ߴ��ߵ�߶߻߷@߸@߹@ߺ@Ae@߼@߽@߾@߿@E@�����@��@��@��@Ba@��@��@��@��@E@������@��@��@��@��@��@������@��@��@��@Ba@��@��@��@��@E@���
�������������@��@��@��@�@��@��@��@��@H:@������@��@��@��@�@��@��@��@�@Ez@�����@�@�@�@H:@�@�@�@�@�@���@�@�@�@E@�	@�
@�@�@�@��5�����@�@�@�@E@�@�@�@�@�@�� �@�@�@�@�@�!@�"@�#@�$@�%@�&���'���(���)���*���+���,���-���.���/���0���1���2���3�����4
���6�A�7�<�8@�9@�:@�;@H @�=@�>@�?@�@@E@�B�G�C@�D@�E@�F@�@�H@�I@�J@�K@@&@�M�N�N��O�v�P�_�Q�Y�R�T�S@H:@�U@�V@�W@�X@E@�Z@�[@�\@�]@�^@A@�`�k�a�f�b@�c@�d@�e@E@�g@�h@�i@�j@@&@�l�q�m@�n@�o@�p@A@�r@�s@�t@�u@E@�w��x��y�~�z@�{@�|@�}@�@�@�@�@�@E@���@�@�@�@A@�@�@�@�@��@�����@�@�@�@F�@�@�@�@�@H @���@�@�@�@A@�@�@�@�@H @����������@�@�@�@�@Ba@���@�@�@�@A@�@�@�@�@H�@@����@�@�@�@A@��@��@��@��@�@���7���,��@��@��@��@��@��@�����az�����az������]������5���!��������az��az����az��azazkX����������������gQgCv�waz��maz��az��azazv�����������azaz�M��azv�t���az��azjv����
���������ww�az����w�v�t�m�az�azb�kX�������?v�v�����w8�v�u��az�	azazu������
���v���azgC��w�"azb��az�az�1v�������v�b�azwU���ib�gC�1�az� azw*wc�"az�#az�$�.�%�+�&�)�'�(��azazw�m�*�w{��,az�-az��w�/az�0�2�1az�
az�3�4az���"j�6��7�b�8�K�9�@�:az�;�=�<azb�az�>�?�wRFaz��A�H�B�E�C�Dj�u�v��F�Gw�azazJ�Iaz�Jazwaz�L�W�M�T�N�Q�O�P�az����R�Sa�azv��w�Uaz�Vazub�w�X�_�Y�\�Z�[��az�^az�]�^wazv�az�`az�aazazJ��c�w�d�o�e�l�f�i�g�h��1�az�j�k�Z�p?U�maz�naz�[v��p�t�qaz�r�s~��v��uaz�vaz{�w��x��y��z�|�{azazw��}�~azm�v��az�azv��������upazaz�
�wq��w�az�az�����az�az��������S�az��az��v�az���0�az�az��w������w�jwj��jj���az�az�az�������������������ubu����S�az�
���az�az���������w�J��&v����u�ju��az�azu�j�����������������u�u�������w��1T����az��azv������������az����������F����az��az�j�4��������������������S��v�v�����az��w��,��az��az��������������azjaz�������"�,����az��az����������������az���az��J���azu�az�����azv�az�az�Z���az�azaz��az�az���az���u�az���az{�m�	�
�
az��azj�az�azjaz��M��+���az���������Zaz����azp��az�az�az{�az��#� azaz�!az�"�az�$�)�%�'�&azazjaz�(wv��*az��az�,�<�-�5�.az�/�2�0�1jgCw�;�3�4�waz����6�9az�7az�8u�j�:az�;azjp�=�D�>az�?�B�@�A��az��az�Cwazw�E�J�F�H�Gazv�az�IgCu�az�Kaz�LazgC��Naz�Oaz�P�V�Qaz�R�Tj�Sv�az�Uaz��j�W�Zj�X�Yaz�az�[az�\azaz���^�.�_���`��a��b�w�c�m�d�j�e�gaz�fazj�h�i{����1j�kaz�lazv�j�n�t�o�qt��pt�az�r�su�azjaz�uaz�vazaz���x��y��z�}�{�|gQazu�j�~�ju�azJ�az�azw�u�������u�ju�{���az�waz�az�az�v��������az��w��jv��az�azv�az���������-azu��azu�v��az�azjaz�����az��jazv�wq�az�azazm����b��b�az�jp���az�azv�v��az�az����������wt��u���u�v�T4j�az�azj������m������az�v�t���az��azaz�1�����������������az��az����w�az�{�����������pazp����azj�1az��az��azaz��������������gQ��gQv���jw�v���az��azj������������kX��az����kXXazkX��az��azkXaz������������azpaz��pu�j��az�azpv��az���az�[p��azgQgQaz������
��	��jjazaz�w8gC�
az�azwaz�����azgC�w����azazkX�azu�az�az�az��$��!���wpw� jaz�i�"az�#az�
v��%�,�&�)�'�(v�u��1��*�+v�u�azj�-azjaz�/��0�{�1�U�2�C�3�<�4�:�5�8�6�7upazazTCw�9J�J�;azb�az�=az�>�@��?azj�A�B��az�"j�D�L�Eaz�F�I�G�Hu�azju��J�Kaz�azb��M�R�N�P�Ot�azt��Qb��&p�Saz�Tazv����V�i�W�a�X�^�Y�\�Z�[jazj�i�]az�v��_az�`azjaz�baz�c�f�d�eaz����az�g�hw�w�azj�j�r�kaz�l�o�m�nazv��0kX�p�qazv��;az�s�y�t�w�u�vu�j���"�xu�j�;�zazu�az�|az�}az�~�������u�u�azj��v��������az�az�1�;�az���azw��;��az�b�az��������������az��az��v�RTj��az�az�����������azazkX���wFazwq�az�azjaz��������jw�jaz��azw�azkX�azjaz������jazaz����u�azgCaz�az�az�az��������az����t����azaz����az��az������������jaz��az��j��������az������J�u�u�v���az��azv�j��az��������wv�j�0����gQ��������az��az��������az������azv�v����az��azv�J�������������j��gC������ppaz��az��az���1�az�azaz��az�az��������az�w�{���{�wqwUwq�az�azjw��az�az�	�
azwqXgC�az�
az�az��az��azwU�az�az�az�az�az�azaz��az�azaz��az�azaz�az�az� �!az�"az�#az�$az�%az�&az�'az�(azaz�)az�*az�+�az�-�2�.@�/@�0@�1@A@�3@�4@�5@�6@�@�8�C�9�>�:@�;@�<@�=@A@�?@�@@�A@�B@Ae@�D�I�E@�F@�G@�H@A@�J@�K@�L@�M@�@�O��P��Q�h�R�]�S�X�T@�U@�V@�W@Ae@�Y@�Z@�[@�\@E@�^�c�_@�`@�a@�b@A@�d@�e@�f@�g@E@�i�t�j�o�k@�l@�m@�n@A@�p@�q@�r@�s@H:@�u�z�v@�w@�x@�y@A@�{@�|@�}@�~@�@�������@�@�@�@Ba@�@�@�@�@�@���@�@�@�@A@�@�@�@�@�@�����@�@�@�@�@�@�@�@�@A@���@�@�@�@A@�@�@�@�@E@�����������@�@�@�@A@�@�@�@�@@&@����@�@�@�@A@��@��@��@��@E@����������@��@��@��@�@��@��@��@��@��@������@��@��@��@H:@��@��@��@��@H�@�������������@��@��@��@E�@��@��@��@��@H:@������@��@��@��@A@��@��@��@�@�@��@��@�@�@�@�@���@�@�@�@A@�@�@�@�@H�@�	�z�
���[��,�
���@��@�@�@�@E@�@�@�@�@�@�@��!@��@�@�@� @A@�"�'�#@�$@�%@�&@A@�(@�)@�*@�+@��@�-�D�.�9�/�4�0@�1@�2@�3@A@�5@�6@�7@�8@HG@�:�?�;@�<@�=@�>@�@�@@�A@�B@�C@A@�E�P�F�K�G@�H@�I@�J@E@�L@�M@�N@�O@�@�Q�V�R@�S@�T@�U@A@�W@�X@�Y@�Z@HG@�\��]�o�^�i�_�d�`@�a@�b@�c@A@�e@�f@�g@�h@�@@�j�k@�l@�m@�n@Ez@�p�{�q�v�r@�s@�t@�u@E@�w@�x@�y@�z@�@�|��}@�~@�@�@Ae@�@�@�@�@E@�������@�@�@�@A@�@�@�@F�@���@�@�@�@�@�@�@�@�@�@&��@��@�@�@�@�@���@�@�@�@E@�@�@�@�@HG@���������������@�@�@�@�@�Ae�Ae�Ae�Ae�Ae�Ae���������������������������AeAe���@��@��@��@E@������@��@��@��@A@��@��@��@��@|�@����������@��@��@��@Ae@��@��@��@��@H @������@��@��@��@�@��@��@��@��@�6@����������@�@�@�@Ae@�@�@�@�@H�@@��@�@�@�@H�@�����@�@�	@�
@H @�@�
@�@�@H�@���@�@�@�@�g@�@�@�@�@H�@��K��4��)��$� @�!@�"@�#@A@�%@�&@�'@�(@H�@�*�/�+@�,@�-@�.@@&@�0@�1@�2@�3@E@�5�@�6�;�7@�8@�9@�:@�@�<@�=@�>@�?@A@�A�F�B@�C@�D@�E@A@�G@�H@�I@�J@E@�L�c�M�X�N�S�O@�P@�Q@�R@H:@�T@�U@�V@�W@A@�Y�^�Z@�[@�\@�]@�@�_@�`@�a@�b@H�@�d�o�e�j�f@�g@�h@�i@A@�k@�l@�m@�n@A@�p�u�q@�r@�s@�t@�'@�v@�w@�x@�y@H�@�{��|���}��~������@�@F�@�@�@�@�@@&@@��@�@�@�@�'@��@��@�@�@�@E@���@�@�@�@�@�@�@�@�@H�@����@��@�@�@�@E@���@�@�@�@�@�@�@�@�@E@�����@�@�@�@�@�@�@�@�@Ae@����@��@��@��@Ae@��@��@��@��@E@�����������������@��@��@��@A@��@��@��@��@H�@@����@��@��@��@A@����������@��@��@��@F�@��@��@��@��@E@������@��@��@��@�@��@��@��@��@E@�����@�@�@�@�@H:@���@�@�@�@�@�@�@�@�@az@�	��
��@�@�
@�@�6@�@�@�@�@E@���@�@�@�@E@�@�@�@�@�@� �v�!�P�"�9�#�.�$�)�%@�&@�'@�(@�@�*@�+@�,@�-@�@�/�4�0@�1@�2@�3@E@�5@�6@�7@�8@�@�:�E�;�@�<@�=@�>@�?@�@�A@�B@�C@�D@�'@�F�K�G@�H@�I@�J@@&@�L@�M@�N@�O@�'@�Q�d�R�Y�S�TA@�U@�V@�W@�X@�@�Z�_�[@�\@�]@�^@A@�`@�a@�b@�c@H:@�e�k@�f�g@�h@�i@�j@A@�l�q�m@�n@�o@�p@@&@�r@�s@�t@�u@E@�w��x��y��z@�{@�|@�}@�~@A@���@�@�@�@��@�@�@�@�@Ae@�����@�@�@�@A@�@�@�@�@F�@���@�@�@�@H:@�@�@�@�@A@�������@�@�@�@@&@�@�@�@�@E@���@�@�@�@H @�@�@�@�@E@������@�@�@�@Ez@�@��@��@��@E@@����@��@��@��@E@������+���n��������������������@��@��@��@@&@��@��@��@��@E@������@��@��@��@H:@��@��@��@��@E@����@����@��@��@��@E@�����@��@��@��@A@�@�@�@�@�~@�����@�@�@�@�@@&@@��@�@�@�@��@�	��
��@�@�
@�@E�@�@�@�@�@E@���@�@�@�@E@�@�@�@�@�@� �D�!�8�"�-�#�(�$@�%@�&@�'@Ae@�)@�*@�+@�,@�@�.�3�/@�0@�1@�2@H�@�4@�5@�6@�7@�@@�9�:�?�;@�<@�=@�>@H�@�@@�A@�B@�C@�@�E�\�F�Q�G�L�H@�I@�J@�K@Ae@�M@�N@�O@�P@�@�R�W�S@�T@�U@�V@�@�X@�Y@�Z@�[@�@�]�c@�^�_@�`@�a@�b@E@�d�i�e@�f@�g@�h@Ae@�j@�k@�l@�m@H:@�o���p��q��r�}�s�x�t@�u@�v@�w@@&@�y@�z@�{@�|@�@�~��@�@�@�@Ae@�@�@�@�@�@�����@�@�@�@H @�@�@�@�@�@���@�@�@�@�@�@�@�@�@E@�������@�@�@�g@�@�@�@�@�@@��@�@�@�@�@��@��@�@�@�@Ae@���@�@�@�@A@�@�@�@��@E@������������@����@��@��@��@E@������@��@��@��@�g@��@��@��@��@�@����������@��@��@��@A@��@��@��@��@�@������@��@��@��@HG@��@��@��@��@H�@������@����@��@��@�@E@@��@�@�@�@�@�H:�H:�H:�H:�H:�H:H:����H:�H:�H:�H:�	H:�
H:�H:�H:�
H:�H:�H:�H:�H:�H:�H:�*H:�� ���@�@�@�@��@�@�@�@�@�@�!�&�"@�#@�$@�%@H:@�'@�(@�)@�*@A@�,���-��.�X�/�A�0�6@�1�2@�3@�4@�5@Ae@�7�<�8@�9@�:@�;@H:@�=@�>@�?@�@@@&@�B�M�C�H�D@�E@�F@�G@A@�I@�J@�K@�L@��@�N�S�O@�P@�Q@�R@�@�T@�U@�V@�W@H�@�Y�k�Z�`@�[�\@�]@�^@�_@H�@�a�f�b@�c@�d@�e@��@�g@�h@�i@�j@E@�l�w�m�r�n@�o@�p@�q@E@�s@�t@�u@�v@E@�x�}�y@�z@�{@�|@��@�~@�@�@�@�@���������@�@�@�@Ba@�@�@�@�@Ae@���@�@�@�@�@�@�@�@�@E@�����@�@�@�@E@�@�@�@�@E@���@�@�@�@F�@�@�@�@�@E@��������@�@�@�@Ae@�@�@�@�@�@�@�@��@��@��@az@����������@��@��@��@�@��@��@��@��@Ae@������@��@��@��@A@��@��@��@��@H @���7�����������@����@��@��@��@E@������@��@��@��@Ae@��@��@��@��@E@��������@�@�@�@F�@�@�@�@�@H�@���@�@�@�@��@�@�@�@�@H�@�	� �
����@�
@�@�@F�@�@�@�@�@H�@���@�@�@�@H�@�@�@�@�@A@�!�,�"�'�#@�$@�%@�&@Ae@�(@�)@�*@�+@A@�-�2�.@�/@�0@�1@A@�3@�4@�5@�6@H:@�8�g�9�P�:�E�;�@�<@�=@�>@�?@A@�A@�B@�C@�D@H�@�F�K�G@�H@�I@�J@H:@�L@�M@�N@�O@�6@�Q�\�R�W�S@�T@�U@�V@��@�X@�Y@�Z@�[@H�@�]�b�^@�_@�`@�a@A@�c@�d@�e@�f@H @�h��i�t�j�o�k@�l@�m@�n@H:@�p@�q@�r@�s@|�@�u�z�v@�w@�x@�y@A@�{@�|@�}@�~@�6@��@��@�@�@�@HG@�@�@�@�@�@M@��.��H������������@�@�@�@H:@�@�@�@�@E@���@�@�@�@F�@�@�@�@�@�@�����@�@�@�@E@�@�@�@�@H�@���@�@�@�@�~@�@�@�@�@Ae@������������@��@��@��@H:@��@��@��@��@H�@������@��@��@��@�@��@��@��@��@�'@����������@��@��@��@az@��@��@��@��@E@������@��@��@��@��@��@��@��@��@E@��������������@��@�@�@HG@�@�@�@�@�@���@�@�@�@��@�@�@�@�@�@���	��
@�@�@�
@Ae@�@�@�@�@E@���@�@�@�@HG@�@�@�@�@�@��1� �&@�!�"@�#@�$@�%@H�@�'�,�(@�)@�*@�+@�@�-@�.@�/@�0@E@�2�=�3�8�4@�5@�6@�7@Ae@�9@�:@�;@�<@H�@�>�C�?@�@@�A@�B@H:@�D@�E@�F@�G@�@�I��J�y�K�b�L�W�M�R�N@�O@�P@�Q@@&@�S@�T@�U@�V@H @�X�]�Y@�Z@�[@�\@Ae@�^@�_@�`@�a@@&@�c�n�d�i�e@�f@�g@�h@A@�j@�k@�l@�m@��@�o�t�p@�q@�r@�s@Ba@�u@�v@�w@�x@�@�z��{�@�|�}@�~@�@�@H @@��@�@�@�@E@�����@�@�@�@�@�@�@�@�@�@���@�@�@�@A@�@�@�@�@E@����������@�@�@�@HG@�@�@�@�@E@���@�@�@�@Ae@�@�@�@�@E@������@�@�@�@E@�@�@�@��@�@������@��@��@��@�~@��@��@��@��@A@��������������@��@��@��@H:@��@��@��@��@A@@����@��@��@��@H�@���#�����@��@��@��@��@��E��E��E��E��E��E��E�����E��E��EE��E�E�E�E��E�E�E�E�E�E�E�E�E�E��	E�E�E���E�OE�O�
E�E�E�
EE�O�E�E�E�EE�E�E�E��E�E�E�E�EE��EE���@� @�!@�"@@&@�$�)�%@�&@�'@�(@A@�*@�+@�,@�-@��@�/��0��1�`�2�I�3�>�4�9�5@�6@�7@�8@H:@�:@�;@�<@�=@E@�?�D�@@�A@�B@�C@A@�E@�F@�G@�H@A@�J�U�K�P�L@�M@�N@�O@H:@�Q@�R@�S@�T@E@�V�[�W@�X@�Y@�Z@�@�\@�]@�^@�_@Ae@�a�s�b�h@�c�d@�e@�f@�g@E@�i�n�j@�k@�l@�m@�@�o@�p@�q@�r@F�@�t��u�z�v@�w@�x@�y@A@�{@�|@�}@�~@@&@@��@�@�@�@E@����������@�@�@�@Ae@�@�@�@�@E@���@�@�@�@�@�@�@�@�@|�@�������@�@�@�@�@�Ae�Ae�Ae�Ae�Ae�Ae�����������������������������������������������������AeAe�������������������������������������������������������Ae����Ae������Ae���@��@��@��@��@������@��@��@��@A@��@��@��@��@E@������������@��@��@��@�@�@�@�@�@�@���@�@�@�@A@�@�@�@�@A@�����@�@�	@�
@F�@�@�
@�@�@@&@���@�@�@�@A@�@�@�@�@�@��q��G��0��*� �%�!@�"@�#@�$@�'@�&@�'@�(@�)@�@�+@�,@�-@�.@�/@A@�1�<�2�7�3@�4@�5@�6@H @�8@�9@�:@�;@�@�=�B�>@�?@�@@�A@A@�C@�D@�E@�F@�@�H�Z�I�O@�J�K@�L@�M@�N@E@�P�U�Q@�R@�S@�T@lx@�V@�W@�X@�Y@E�@�[�f�\�a�]@�^@�_@�`@E�@�b@�c@@�d@�eE�@�g�l�h@�i@�j@�k@E@�m@�n@�o@�p@E@�r��s��t��u�z�v@�w@�x@�y@A@�{@�|@�}@�~@�~@���@�@�@�@��@�@�@�@�@H @�����@�@�@�@Ae@�@�@�@�@Ae@���@�@�@�@�@�@�@�@�@H @�������@�@�@�@�@�@�@�@�@E@���@�@�@�@Ae@�@�@�@�@��@��@��@�@�@�@|�@�����@��@��@��@E@��@��@��@��@E@��	-���~�����������9���{���!�����������������@��@��@�'@��@��@��@��@A@@����@��@��@��@A@����������@��@��@��@A@��@��@��@��@��@��@��@��@�@�@H:@��
���@�@�@�@�@Ae@���@�@�@�@A@�@�@�@�	@�@�����
@�@�@�@�@�@�@�@�@E@���@�@�@�@A@�@�@�@� @E@�"�L�#�:�$�/�%�*�&@�'@�(@�)@Ez@�+@�,@�-@�.@HG@�0�5�1@�2@�3@�4@Ae@�6@�7@�8@�9@�@�;�F�<�A�=@�>@�?@�@@H:@�B@�C@�D@�E@@&@@�G�H@�I@�J@�K@Ae@�M�d�N�Y�O�T�P@�Q@�R@�S@H:@�U@�V@�W@�X@E@�Z�_�[@�\@�]@�^@Ez@�`@�a@�b@�c@H:@�e�p�f�k�g@�h@�i@�j@Ae@�l@�m@�n@�o@�@�q�v�r@�s@�t@�u@E@�w@�x@�y@�z@@&@�|���}��~������@�@Ae@�@�@�@�@E@���@�@�@�@@&@�@�@�@�@�@��@��@�@�@�@F�@@��@�@�@�@H�@�������@�@�@�@Ba@�@�@�@�@H�@���@�@�@�@A@�@�@�@�@�g@������@�@�@�@�@�@�@��@��@��@��az��az��azaz����az��az��az��az��az��az��az��az��az��az��azwaz������@��@��@��@az@��@��@��@��@�@����������������@��@��@��@@&@��@��@��@��@A@������@��@��@��@Ae@��@�@�@�@�@�����@�@�@�@az@�@�@�@�@Ae@��
�@�@�@�	@�@�@�@�
@�@�$@��'�����@�@�@�@Ae@�@�@�@�@�~@��"�@�@� @�!@HG@�#@�$@�%@�&@E@�(�.@�)�*@�+@�,@�-@E@�/�4�0@�1@�2@�3@A@�5@�6@�7@�8@E@�:���;��<�f�=�O�>�I�?�D�@@�A@�B@�C@A@�E@�F@�G@�H@Ae@@�J�K@�L@�M@�N@�@�P�[�Q�V�R@�S@�T@�U@Ez@�W@�X@�Y@�Z@�@�\�a�]@�^@�_@�`@Ae@�b@�c@�d@�e@Ba@�g�~�h�s�i�n�j@�k@�l@�m@@&@�o@�p@�q@�r@F�@�t�y�u@�v@�w@�x@�@�z@�{@�|@�}@E@�����@�@�@�@@&@�@�@�@�@�@���@�@�@�@A@�@�@�@�@HG@���������@�@�@�@A@�@�@�@�@�@���@�@�@�@A@�@�@�@�@H @��@��@�@�@�@�@���@�@�@�@A@�@�@�@�@�6@�������������@��@��@��@Ez@��@��@��@��@�~@������@��@��@��@A@��@��@��@��@H:@����������@��@��@��@HG@��@��@��@��@A@������@��@��@��@A@��@��@��@��@|�@���J��� ���	�������@�@�@�@�@�@�@�@�@@&@���@�@�@�@A@�@�@�@�@H:@�
����@�
@�@�@��@�@�@�@�@HG@���@�@�@�@A@�@�@�@�@��@�!�8�"�-�#�(�$@�%@�&@�'@F�@�)@�*@�+@�,@@&@�.�3�/@�0@�1@�2@A@�4@�5@�6@�7@�@�9�D�:�?�;@�<@�=@�>@Ae@�@@�A@�B@�C@�@@�E�F@�G@�H@�I@��@�K�u�L�c�M�X�N�S�O@�P@�Q@�R@A@�T@�U@�V@�W@�~@�Y�^�Z@�[@�\@�]@Ae@�_@�`@�a@�b@H:@�d�o�e�j�f@�g@�h@�i@Ba@�k@�l@�m@�n@H�@@�p�q@�r@�s@�t@H�@�v��w��x�}�y@�z@�{@�|@�@�~@�@�@�@�@���@�@�@�@�@���������������������������������������������������������������@�@�@�@�@�@�����@�@�@�@Ae@�@�@�@�@H�@���@�@�@�@Ba@�@�@��@��@H�@���T������@������������������@��@��@��@A@��@��@��@��@H:@������@��@��@��@�@��@��@��@��@�@����@����@��@��@��@H�@������@��@��@��@�@��@��@��@��@H�@���
������@�@�@�@H:@�@�@�@�@F�@���@�@�@�@��@�@�@�@�	@A@��5@��
@�@�@�@�@��%�A�A��!�A�A�A���A�A�AAN�AA�� AA{�"AA�#�$AAC�A�&�'AA�(�)A�*A�+AA�,�-AA�.�/AA�0�1A�2A�3�4��A
QA�6�;�7@�8@�9@�:@A@�<@�=@�>@�?@�'@�A�p�B�Y�C�N�D�I�E@�F@�G@�H@A@�J@�K@�L@�M@��@�O�T�P@�Q@�R@�S@Ba@�U@�V@�W@�X@Ae@�Z�e�[�`�\@�]@�^@�_@H:@�a@�b@�c@�d@E@�f�k�g@�h@�i@�j@A@�l@�m@�n@�o@Ae@�q��r�}�s�x�t@�u@�v@�w@��@�y@�z@�{@�|@A@�~��@�@�@�@�@�@�@�@�@E@���@�@�@�@�@H:@���@�@�@�@�@�@�@�@�@�@������������@�@�@�@Ae@�@�@�@�@H�@���@�@�@�@�@�@�@�@�@�~@��@��@�@�@�@H�@���@�@�@�@�@��@��@��@��@H�@��������������@��@��@��@Ae@��@��@��@��@�g@������@��@��@��@�@��@��@��@��@
�@����������@��@��@��@d@��@��@��@��@�@������@��@��@��@A@��@��@��@��@E@��%�������@�@�@�@HG@�@�@�@�@H�@��	�@�@�@�@H:@�
@�@�@�
@�@�����@�@�@�@Ez@�@�@�@�@H @�� �@�@�@�@��@�!@�"@�#@�$@H @�&�=�'�2�(�-�)@�*@�+@�,@�@�.@�/@�0@�1@Ae@�3�8�4@�5@�6@�7@az@�9@�:@�;@�<@H�@�>�I�?�D�@@�A@�B@�C@H @�E@�F@�G@�H@F�@�J�O�K@�L@�M@�N@Ez@�P@�Q@�R@�S@F�@�U�&�V���W��X��Y��Z��[@�\@�]@�^@H:�_�`H:H:�aH:�bH:�cH:�d�eH:�fH:�gH:�hH:�iH:�jH:�kH:�lH:�mH:�nH:H:�o�pH:�qH:�rH:�sH:�tH:�uH:�vH:H:�w�xH:�yH:�zH:�{H:�|H:�}H:�~H:H:�,�@�@�@�@HG@���@�@�@�@Ae@�@�@�@�@E@�����@�@�@�@��@�@�@�@�@��@���@�@�@�@A@A@�������@�@�@�@�@�@�@�@�@�@���@�@�@�@A@�@�@�@�@H�@������@�@�@�@�@��@��@��@��@E@��@��@��@��@��@A@�����������������@��@��@��@E@��@��@��@��@H�@������@��@��@��@A@��@��@��@��@H�@����������@��@��@��@Ba@��@��@��@��@��@�����@��@�@�@A@�@�@�@�@H @����	���@�@�@�@�@�@�@�@�@@&@@�
�@�@�
@�@HG@�����@�@�@�@Ae@�@�@�@�@�@��!�@�@�@� @�'@�"@�#@�$@�%@Ae@�'��(�R�)�@�*�5�+�0�,@�-@�.@�/@Ae@�1@�2@�3@�4@�@�6�;�7@�8@�9@�:@H�@�<@�=@�>@�?@A@�A�G@�B�C@�D@�E@�F@H�@�H�M�I@�J@�K@�L@H�@�N@�O@�P@�Q@A@�S�j�T�_�U�Z�V@�W@�X@�Y@�@�[@�\@�]@�^@�@�`�e�a@�b@�c@�d@A@�f@�g@�h@�i@H�@�k�v�l�q�m@�n@�o@�p@Ae@�r@�s@�t@�u@A@�w�|�x@�y@�z@�{@A@�}@�~@�@�@A@���������@�@�@�@A@�@�@�@�@E@���@�@�@�@�@�@�@�@�@H�@�����@�@�@�@Ae@�@�@�@�@H�@���@�@�@�@A@�@�@�@�@E@��������@�@�@�@Ae@�@�@�@�@@&@����@�@��@��@A@��@��@��@��@@&@����������@��@��@��@F�@��@��@��@��@�@������@��@��@��@�@��@��@��@��@H:@�������L������=����������������@��@��@Ae@��@��@��@��@F�@�����@��@�@�@A@�@�@�@�@Ae@�����@�@�@�@A@�@�@�@�@�'@�	��
@�@�@�
@�@�@�@�@�@��@��+�� ���@�@�@�@@&@�@�@�@�@F�@�!�&�"@�#@�$@�%@�@�'@�(@�)@�*@H�@�,�2@�-�.@�/@�0@�1@E@�3�8�4@�5@�6@�7@�@�9@�:@�;@�<@H�@�>�m�?�V�@�K�A�F�B@�C@�D@�E@Ez@�G@�H@�I@�J@H�@�L�Q�M@�N@�O@�P@�@�R@�S@�T@�U@HG@�W�b�X�]�Y@�Z@�[@�\@Ae@�^@�_@�`@�a@H�@�c�h�d@�e@�f@�g@F�@�i@�j@�k@�l@H�@�n��o�z�p�u�q@�r@�s@�t@HG@�v@�w@�x@�y@H�@�{��|@�}@�~@�@�'@�@�@�@�@H�@��@��@�@�@�@H�@���@�@�@�@A@�@�@�@�@H�@�������������@�@�@�@�@�@�@�@�@H�@@��@�@�@�@E@�����@�@�@�@Ae@�@�@�@�@E@���@�@�@�@@&@�@�@�@��@E@��������������@��@��@��@@&@��@��@��@��@Ae@������@��@��@��@@&@��@��@��@��@E@����@����@��@��@��@E@������@��@��@��@@&@��@��@��@��@�@��������������@��@��@�@A@�@�@�@�@�@���@�@�@�@H:@�@�@�@�@H:@����
�	@�
@�@�@@&@�@�@�@�@H @���@�@�@�@Ae@�@�@�@�@F�@��5��*� �%�!@�"@�#@�$@E�@�&@�'@�(@�)@H @�+�0�,@�-@�.@�/@Ae@�1@�2@�3@�4@H @�6�A�7�<�8@�9@�:@�;@A@�=@�>@�?@�@@E@�B�G�C@�D@�E@�F@E@�H@�I@�J@�K@E@�M��N���O�y�P�g�Q�\�R�W�S@�T@�U@�V@Ae@�X@�Y@�Z@�[@E@�]�b�^@�_@�`@�a@Ae@�c@�d@�e@�f@E@�h�s�i�n�j@�k@�l@�m@HG@�o@�p@�q@�r@�@@�t�u@�v@�w@�x@H @�z���{���|���}@�~@�@��@�@��@��@��@��@H @������@��@��@��@@&@��@��@��@��@E@����������@��@��@��@A@��@��@��@��@H @@����@��@��@��@H @������������������@��@��@��@A@��@��@��@��@E@������@��@��@��@��@��@��@��@��@H @����������@��@��@��@@&@��@��@��@��@H @������@��@��@��@Ae@��@��@��@��@H�@��������������@��@��@��@�@��@��@��@��@H�@������@��@��@��@A@��@��@��@��@H @����������@��@��@��@�~@��@��@��@��@E@������@��@��@��@Ae@��@��@�@�@H�@��b��3�������@�	@�
@�@��@�
@�@�@�@H�@���@�@�@�@�@�@�@�@�@E@��(��#�@� @�!@�"@H:@�$@�%@�&@�'@H�@�)�.�*@�+@�,@�-@�@�/@�0@�1@�2@��@�4�K�5�@�6�;�7@�8@�9@�:@E@�<@�=@�>@�?@H�@�A�F�B@�C@�D@�E@H:@�G@�H@�I@�J@@&@�L�W�M�R�N@�O@�P@�Q@E@�S@�T@�U@�V@E@�X�]�Y@�Z@�[@�\@�@�^@�_@�`@�a@�@�c���d�v�e�p�f�k�g@�h@�i@�j@A@�l@�m@�n@�o@A@@�q�r@�s@�t@�u@�@�w���x�}�y@�z@�{@�|@��@�~@�@��@��@E@������@��@��@��@�@��@��@��@��@�@��������������@��@��@��@F�@��@��@��@��@@&@������@��@��@��@��@��@��@��@��@�@����������@��@��@��@az@��@��@��@��@H @������@��@��@��@Ae@��@��@��@��@E@���,���x���������������������@��@��@��@H:@��@��@��@��@Ae@������@��@��@��@H:@��@��@��@��@H @����������@��@��@��@Ae@��@��@��@��@H @������@��@��@��@�'@��@��@��@��@H @�������������@��@��@��@A@��@��@��@��@H�@�����@��@�@�@Ez@�@�@�@�@H�@��@�	�
@�@�@�
@H�@���@�@�@�@Ae@�@�@�@�@H�@��I��2��'��"�@�@� @�!@@&@�#@�$@�%@�&@H�@�(�-�)@�*@�+@�,@�@�.@�/@�0@�1@H:@�3�>�4�9�5@�6@�7@�8@��@�:@�;@�<@�=@H�@�?�D�@@�A@�B@�C@�@�E@�F@�G@�H@H�@�J�a�K�V�L�Q�M@�N@�O@�P@�@�R@�S@�T@�U@H�@�W�\�X@�Y@�Z@�[@�@�]@�^@�_@�`@H�@�b�m�c�h�d@�e@�f@�g@A@�i@�j@�k@�l@H�@�n�s�o@�p@�q@�r@A@�t@�u@�v@�w@HG@�y���z���{���|���}���~@�@��@��@Ez@��@��@��@��@�@������@��@��@��@A@��@��@��@��@F�@����������@��@��@��@A@��@��@��@A@������@��@��@��@A@��@��@��@��@H�@��������@����@��@��@��@H�@������@��@��@��@Ae@��@��@��@��@H�@����������@��@��@��@�@��@��@��@��@H�@������@��@��@��@��@��@��@��@��@H�@�����������������@��@��@��@@&@��@��@��@��@H:@������@��@��@��@A@��@��@��@��@H�@����������@��@��@��@H:@��@��@��@��@H�@������@��@��@��@H:@��@��@�@�@H�@����
@��@�@�@�	@H�@���@�
@�@�@F�@�@�@�@�@H�@��!���@�@�@�@A@�@�@�@� @H�@�"�'�#@�$@�%@�&@H:@�(@�)@�*@�+@H�@�-�_�.���/�^�0�G�1�<�2�7�3@�4@�5@�6@A@�8@�9@�:@�;@H�@�=�B�>@�?@�@@�A@��@�C@�D@�E@�F@E@�H�S�I�N�J@�K@�L@�M@A@�O@�P@�Q@�R@H�@�T�Y�U@�V@�W@�X@Ae@�Z@�[@�\@�]@Ez@�_�v�`�k�a�f�b@�c@�d@�e@Ae@�g@�h@�i@�j@H @�l�q�m@�n@�o@�p@Ae@�r@�s@�t@�u@H @�w���x�}�y@�z@�{@�|@A@�~@�@��@��@H @������@��@��@��@H:@��@��@��@��@H @������������������@��@��@��@A@��@��@��@��@H @������@��@��@��@Ae@��@��@��@��@F�@����������@��@��@��@A@��@��@��@��@@&@������@��@��@��@Ae@��@��@��@��@E@��������������@��@��@��@@&@��@��@��@��@��@������@��@��@��@�@��@��@��@��@H @����������@��@��@��@A@��@��@��@��@H @���Z��@��@��@��@��@���������������B���/���������������������������������������������������������������������������������������������������	���
���������
�������������������������������������������������&������� ���!���"���#���$���%������'���(���)���*���+���,���-���.���[���0���1���2�:�3���4���5���6���7���8���9������;���<���=���>���?���@���A��
���C���D���E���F���G���H���I���J�T�K�N�L���M��
���O�Q���P��
�R�S��{Tk���U���V�X�`�W��
�Y��
���[@�\@�]@�^@HG@�`��a���b�y�c�n�d�i�e@�f@�g@�h@Ez@�j@�k@�l@�m@A@�o�t�p@�q@�r@�s@Ae@�u@�v@�w@�x@H:@�z���{���|@�}@�~@�@A@��@��@��@��@H:@������@��@��@��@��@��H:��H:��H:��������������H:������H:��H:��H:��H:��H:��H:H:��H:�,��H:��H:��H:��H:��H:��H:��H:�,H:����������H:��H:��H:��H:��H:��H:��H:�,H:��H:��H:��H:��H:��H:��H:��H:�,H:������H:��H:��H:��H:��H:��H:��H:�H:��H:��H:��H:��H:��H:��H:��H:3H:��H:��H:������H:��H:��H:��H:��H:��H:��H:s�H:��H:��H:��H:��H:��H:��H:��H:s�H:��H:��H:��H:��H:��H:��H:��H:����H:������H:��H:s�����H:�*"���H:��������,iH:!�s���H:s�H:��@��@��@��@E@�����������F�@��@��@��@��@Ez@�����@�@�@�@Ae@�@�@�@�@H�@�	��
��@�@�
@�@A@�@�@�@�@H�@���@�@�@�@Ae@�@�@�@�@H�@� �O�!�8�"�-�#�(�$@�%@�&@�'@|�@�)@�*@�+@�,@H�@�.�3�/@�0@�1@�2@H:@�4@�5@�6@�7@H�@�9�D�:�?�;@�<@�=@�>@A@�@@�A@�B@�C@H�@�E�J�F@�G@�H@�I@F�@�K@�L@�M@�N@H�@�P�g�Q�\�R�W�S@�T@�U@�V@F�@�X@�Y@�Z@�[@H�@�]�b�^@�_@�`@�a@H @�c@�d@�e@�f@�6@�h�s�i�n�j@�k@�l@�m@A@�o@�p@�q@�r@@&@�t�y�u@�v@�w@�x@�@�z@�{@�|@�}@E@�	b�����������-����������������������@��@��@��@E�@��@��@��@��@H:@������@��@��@��@E@��@��@��@��@H:@����������@��@��@��@A@��@��@��@��@��@������@��@��@��@HG@��@��@��@��@Ez@��������������@��@��@��@�'@��@��@��@��@H�@@����@��@��@��@�@����������@��@��@��@A@��@��@��@��@Ez@������@��@��@��@H:@��@��@��@��@H�@�����������������@��@��@��@�@��@��@��@��@H�@@����@��@��@��@E@����������@��@��@��@A@��@��@��@��@L�@@����@�@�@�@H�@�������@�@�	@�
@E@�@�
@�@�@Ae@���@�@�@�@��@�@�@�@�@@&@��'��"�@�@� @�!@A@�#@�$@�%@�&@@&@@�(�)@�*@�+@�,@�'@�.���/�^�0�G�1�<�2�7�3@�4@�5@�6@Ae@�8@�9@�:@�;@��@�=�B�>@�?@�@@�A@�@�C@�D@�E@�F@�@�H�S�I�N�J@�K@�L@�M@A@�O@�P@�Q@�R@E@�T�Y�U@�V@�W@�X@H:@�Z@�[@�\@�]@H�@�_�q�`�f@�a�b@�c@�d@�e@E@�g�l�h@�i@�j@�k@��@�m@�n@�o@�p@�@�r�}�s�x�t@�u@�v@�w@A@�y@�z@�{@�|@H�@�~���@��@��@��@��@��@��@��@��@H�@��������������@��@��@��@Ae@������@��@��@��@@&@��@��@��@��@H�@����������@��@��@��@A@��@��@��@��@�@������@��@��@��@Ez@��@��@��@��@E@��������������@��@��@��@E@��@��@��@��@H�@������@��@��@��@Ae@��@��@��@��@��@����������@��@��@��@A@��@��@��@��@Ae@������@��@��@��@H:@��@��@��@��@E@�������������������������@��@��@��@E@��@��@��@��@�@������@��@��@��@H:@��@��@��@��@H @��������@�@�@�@A@�@�@�@�@H�@�	��
@�@�@�
@�@�@�@�@�@�@�@�@�@�@�@�@�@�@��p��R�EE�E� E�!�"E�#E�$�;E�%�&EE�'E�(�)EE�*�+EE�,�-EE�.�/EE�0E�1E�2�3E�4EE�5�6EE�7�8EE�9E�:@E�<E�=E�>E�?EE�@�AEE�BE�C�DEE�EE�FE�G�HE�IEE�JE�K�LE�ME�NE�OE�PEE�QE@�SEE�T�UEE�VE�WE�X�YE�ZE�[E�\E�]E�^E�_E�`E�aE�bEE�c�dEE�e�fEE�g�hE�iEE�j�kEE�l�mE�nE�oE@E�qE�rE�sE�tE�uE�vE�wEE�x�yE�zEE�{�|E�}E�~EE���EE��E��E����EE����E��EE����E��EE��E��E����EE@������������������@��@��@��@H:@��@��@��@��@E@������@��@��@��@Ba@��@��@��@��@�@����������@��@��@��@A@��@��@��@��@E@������@��@��@��@Ae@��@��@��@��@H�@��������������@��@��@��@A@��@��@��@��@H�@������@��@��@��@Ae@��@��@��@��@H�@����������@��@��@��@
�@��@��@��@��@H�@������@��@��@��@H:@��@��@��@��@H�@���A����������������@��@��@��@H:@��@��@��@��@F�@�����@�@�@�@H:@�@�@�@�@�@�	��
��@�@�
@�@Ae@�@�@�@�@H @@��@�@�@�@E@��/��'��"�@�@� @�!@Ae@�#@�$@�%@�&@�C@�(�*�)@@&@�+@�,@�-@�.@Ae@�0�;�1�6�2@�3@�4@�5@|�@�7@�8@�9@�:@�@@�<�=@�>@�?@�@@H�@�B�q�C�Z�D�O�E�J�F@�G@�H@�I@�@�K@�L@�M@�N@H�@�P�U�Q@�R@�S@�T@��@�V@�W@�X@�Y@H @�[�f�\�a�]@�^@�_@�`@H:@�b@�c@�d@�e@E@�g�l�h@�i@�j@�k@Ae@�m@�n@�o@�p@HG@�r���s�~�t�y�u@�v@�w@�x@Ba@�z@�{@�|@�}@H @�����@��@��@��@E@��@��@��@��@Ae@����������@��@��@��@A@��@��@��@��@�@@����@��@��@��@HG@�������R����������������������@��@��@��@Ez@��@��@��@��@�@������@��@��@��@Ae@��@��@��@��@H:@����@����@��@��@��@E@������@��@��@��@�@��@��@��@��@H�@��������������@��@��@��@�S@��@��@��@��@H�@������@��@��@��@E@��@��@��@��@E@����������@��@��@��@A@��@��@��@��@Ae@������@��@��@��@Ae@��@��@��@��@�@���(�����������@��@��@�@Ez@�@�@�@�@H @���@�	@�
@�@�~@�
@�@�@�@az@�����@�@�@�@H:@�@�@�@�@�@��#�@� @�!@�"@�@�$@�%@�&@�'@�@�)�@�*�5�+�0�,@�-@�.@�/@@&@�1@�2@�3@�4@H�@�6�;�7@�8@�9@�:@�@�<@�=@�>@�?@H�@�A�G@�B�C@�D@�E@�F@H�@�H�M�I@�J@�K@�L@�@�N@�O@�P@�Q@H�@�S���T�y�U�g�V�a�W�\�X@�Y@�Z@�[@�@�]@�^@�_@�`@E@@�b�c@�d@�e@�f@Ba@�h�s�i�n�j@�k@�l@�m@H:@�o@�p@�q@�r@E@@�t�u@�v@�w@�x@E@�z���{���|���}@�~@�@��@Ae@��@��@��@��@�@������@��@��@��@�'@��@��@��@��@�@����@����@��@��@��@H @������@��@��@��@@&@��@��@��@��@H @������������@����@��@��@��@HG@������@��@��@��@Ez@��@��@��@��@��@����������@��@��@��@A@��@��@��@��@�@@����@��@��@��@�@��������������@��@��@��@Ba@��@��@��@��@F�@������@��@��@��@�@��@��@��@��@F�@����@����@��@��@��@H @������@��@��@��@�@��@��@��@��@H�@�������O��� ������������@��@��@��@�@��@�@�@�@H�@��	�@�@�@�@Ae@�
@�@�@�
@H @��@��@�@�@�@A@���@�@�@�@
_@�@�@�@�@F�@�!�8�"�-�#�(�$@�%@�&@�'@H:@�)@�*@�+@�,@�@�.�3�/@�0@�1@�2@E@�4@�5@�6@�7@A@�9�D�:�?�;@�<@�=@�>@Ez@�@@�A@�B@�C@F�@�E�J�F@�G@�H@�I@A@�K@�L@�M@�N@�@�P�~�Q�h�R�]�S�X�T@�U@�V@�W@H:@�Y@�Z@�[@�\@F�@�^�c�_@�`@�a@�b@�@�d@�e@�f@�g@Ae@�i�s�j�o�k@�l@�m@�n@E@�p@�q@�r@Ez@�t�y�u@�v@�w@�x@@&@�z@�{@�|@�}@H�@�������������@��@��@��@Ae@��@��@��@��@H�@������@��@��@��@A@��@��@��@��@H�@����@����@��@��@��@�@������@��@��@��@|�@��@��@��@��@�@��	������������������@��@��@��@��@��@��@��@��@A@������@��@��@��@HG@��@��@��@��@A@����������@��@��@��@A@��@��@��@��@E@������@��@��@��@Ez@��@��@��@��@H�@��������������@��@��@��@�@��@��@��@��@�@������@��@��@��@Ae@��@��@��@��@��@����@����@��@��@��@H @������@��@��@��@H:@��@	@	@	@Ez@		3							@		@	
@	@H @	
@	@	@	@H�@			@	@	@	@@&@	@	@	@	@H�@		(		#	@	 @	!@	"@Ae@	$@	%@	&@	'@H�@	)	.	*@	+@	,@	-@H�@	/@	0@	1@	2@�@	4	K	5	@	6	;	7@	8@	9@	:@Ae@	<@	=@	>@	?@H @	A	F	B@	C@	D@	E@�Y@	G@	H@	I@	J@�@	L	W	M	R	N@	O@	P@	Q@H�@	S@	T@	U@	V@A@	X	]	Y@	Z@	[@	\@Ba@	^@	_@	`@	a@E@Ae	c	d	�	e		f	�	g	�	h		i	t	j	o	k@	l@	m@	n@��@	p@	q@	r@	s@E@	u	z	v@	w@	x@	y@@&@	{@	|@	}@	~@E@	�	�	�	�	�@	�@	�@	�@H @	�@	�@	�@	�@HG@@	�	�@	�@	�@	�@A@	�	�	�	�	�	�	�@	�@	�@	�@Ae@	�@	�@	�@	�@�6@	�	�	�@	�@	�@	�@Ba@	�@	�@	�@	�@H�@	�	�	�	�	�@	�@	�@	�@A@	�@	�@	�@	�@H�@	�	�	�@	�@	�@	�@A@	�@	�@	�@	�@H�@	�	�	�	�	�	�	�	�	�@	�@	�@	�@Ae@	�@	�@	�@	�@H�@	�	�	�@	�@	�@	�@A@	�@	�@	�@	�@H�@	�	�@	�	�@	�@	�@	�@�@	�	�	�@	�@	�@	�@Ae@	�@	�@	�@	�@�@	�		�	�	�	�	�@	�@	�@	�@Ae@	�@	�@	�@	�@A@	�	�	�@	�@	�@	�@A@	�@	@	@	@A@				
	@	@	@		@Ae@	@	@	
@	@A@			@	@	@	@Ae@	@	@	@	@E@		t		E		3		(		#	 @	!@	"@F�@	$@	%@	&@	'@H�@	)	.	*@	+@	,@	-@Ae@	/@	0@	1@	2@�@	4	:@	5	6@	7@	8@	9@Ez@	;	@	<@	=@	>@	?@�~@	A@	B@	C@	D@H�@	F	]	G	R	H	M	I@	J@	K@	L@E@	N@	O@	P@	Q@H�@	S	X	T@	U@	V@	W@|�@	Y@	Z@	[@	\@H�@	^	i	_	d	`@	a@	b@	c@A@	e@	f@	g@	h@H�@	j	o	k@	l@	m@	n@��@	p@	q@	r@	s@H�@	u	�	v	�	w	}@	x	y@	z@	{@	|@H�@	~	�	@	�@	�@@&@	�@	�@	�@	�@A@	�	�	�	�	�@	�@	�@	�@A@	�@	�@	�@M�@	�	�	�@	�@	�@	�@E@	�@	�@	�@	�@Ae@	�	�	�	�	�	�	�@	�@	�@	�@A@	�@	�@	�@	�@E@	�	�	�@	�@	�@	�@�@	�@	�@	�@	�@E@	�	�	�	�	�@	�@	�@	�@A@	�@	�@	�@	�@H�@@	�	�@	�@	�@	�@A@	�	}	�		�	�	�	�	�	�	�	�	�@	�@	�@	�@F�@	�@	�@	�@	�@A@	�	�	�@	�@	�@	�@��@	�@	�@	�@	�@�'@	�	�	�	�	�@	�@	�@	�@A@	�@	�@	�@	�@�@	�	�	�@	�@	�@	�@H�@	�@	�@	�@	�@A@	�		�	@	�	�@	�@	�@	@E@			@	@	@	@�@	@		@	
@	@�@	
				@	@	@	@A@	@	@	@	@E@@		@	@	@	@�@		N	 	7	!	,	"	'	#@	$@	%@	&@A@	(@	)@	*@	+@Ez@	-	2	.@	/@	0@	1@�<@	3@	4@	5@	6@H @	8	C	9	>	:@	;@	<@	=@A@	?@	@@	A@	B@�@	D	I	E@	F@	G@	H@H:@	J@	K@	L@	M@��@	O	f	P	[	Q	V	R@	S@	T@	U@Ae@	W@	X@	Y@	Z@H:@	\	a	]@	^@	_@	`@�@	b@	c@	d@	e@@&@	g	r	h	m	i@	j@	k@	l@A@	n@	o@	p@	q@H @	s	x	t@	u@	v@	w@A@	y@	z@	{@	|@H�@	~	�		�	�	�	�	�	�	�	�@	�@	�@	�@��@	�@	�@	�@	�@H�@	�	�	�@	�@	�@	�@�@	�@	�@	�@	�@Ae@	�	�	�	�	�@	�@	�@	�@A@	�@	�@	�@	�@E@	�	�	�@	�@	�@	�@A@	�@	�@	�@	�@A@	�	�	�	�	�	�	�@	�@	�@	�@�@	�@	�@	�@	�@H:@	�	�	�@	�@	�@	�@A@	�@	�@	�@	�@��@	�	�	�	�	�@	�@	�@	�@A@	�@	�@	�@	�@E@	�	�	�@	�@	�@	�@E@	�@	�@	�@	�@F�@	�		�	�	�	�	�	�	�@	�@	�@	�@A@	�@	�@	�@	�@�@@	�	�@	�@	�@	�@Ae@	�	�@	�	�@	�@	�@	�@Ba@	�	�	�@	�@	�@	�@@&@	�@	@	@	@E@							@	@		@	
@@&@	@	
@	@	@Ae@			@	@	@	@�~@	@	@	@	@az@		'		"	@	@	 @	!@A@	#@	$@	%@	&@�@@	(	)@	*@	+@	,@E@	.	7	/	�	0	�	1	�	2	�	3	�	4	X	5	AH 	6	7	<	8@	9@	:@	;@�@	=@	>@	?@	@@HG@	B	M	C	H	D@	E@	F@	G@�g@	I@	J@	K@	L@�@	N	S	O@	P@	Q@	R@E@	T@	U@	V@	W@H�@	Y	k	Z	`@	[	\@	]@	^@	_@E@	a	f	b@	c@	d@	e@Ae@	g@	h@	i@	j@�@	l	w	m	r	n@	o@	p@	q@Ae@	s@	t@	u@	v@H @	x	}	y@	z@	{@	|@Ae@	~@	@	�@	�@��@	�	�	�	�	�	�	�	�	�@	�@	�@	�@A@	�@	�@	�@	�@Ae@	�	�	�@	�@	�@	�@�@	�@	�@	�@	�@H�@	�	�	�	�	�@	�@	�@	�@@&@	�@	�@	�@	�@E@	�	�	�@	�@	�@	�@A@	�@	�@	�@	�@H�@	�	�	�	�	�	�	�@	�@	�@	�@��@	�@	�@	�@	�@E@	�	�	�@	�@	�@	�@��@	�@	�@	�@	�@E@	�	�	�	�	�@	�@	�@	�@A@	�@	�@	�@	�@H @@	�	�@	�@	�@	�@H @	�	1	�		�	�	�	�	�	�	�@	�@	�@	�@F�@	�@	�@	�@	�@H @	�	�	�@	�@	�@	�@�@	�@	�@	�@	�@E@	�	�@	�	�@	�@	�@	�@Ae@	�		�@	@	@	@l@	@	@	@	@�@				
				@	
@	@	@H:@	@	@	@	@@&@			@	@	@	@A@	@	@	@Ae@	 	&@	!	"@	#@	$@	%@�@	'	,	(@	)@	*@	+@H @	-@	.@	/@	0@�@	2	a	3	J	4	?	5	:	6@	7@	8@	9@A@	;@	<@	=@	>@�'@	@	E	A@	B@	C@	D@Ba@	F@	G@	H@	I@�@	K	V	L	Q	M@	N@	O@	P@A@	R@	S@	T@	U@H:@	W	\	X@	Y@	Z@	[@�@	]@	^@	_@	`@E@	b	y	c	n	d	i	e@	f@	g@	h@@&@	j@	k@	l@	m@A@	o	t	p@	q@	r@	s@HG@	u@	v@	w@	x@Ae@	z	�@	{	|@	}@	~@	@E@	�	�	�@	�@	�@	�@H:@	�@	�@	�@	�@A@	�	E	�	�	�	�	�	�	�	�	�	�	�@	�@	�@	�@E@	�@	�@	�@A@	�	�	�@	�@	�@	�@A@	�@	�@	�@	�@�@	�	�	�	�	�@	�@	�@	�@H:@	�@	�@	�@	�@H @	�	�	�@	�@	�@	�@E@	�@	�@	�@	�@E@	�	�	�	�	�	�	�@	�@	�@	�@E@	�@	�@	�@	�@H�@	�	�	�@	�@	�@	�@��@	�@	�@	�@	�@E@	�	�@	�	�@	�@	�@	�@H:@	�	�	�@	�@	�@	�@H:@	�@	�@	�@	�@@&@	�		�	�	�	�	�	�	�@	�@	�@	�@H:@	�@	�@	�@	�@�~@	�	�	�@	�@	�@	�@�@	�@	�@	�@	�@E@					@	@	@	@Ae@	@	@		@	
@H�@			
@	@	@	@E�@	@	@	@	@�'@		.		#			@	@	@	@@&@	@	 @	!@	"@HG@	$	)	%@	&@	'@	(@Ez@	*@	+@	,@	-@�6@	/	:	0	5	1@	2@	3@	4@H:@	6@	7@	8@	9@HG@	;	@	<@	=@	>@	?@E@	A@	B@	C@	D@A@	F	�	G	`	H	Y	I	S	J	N	K@	L@	M@Ae@	O@	P@	Q@	R@H @@	T	U@	V@	W@	X@�@@	Z@	[	\@	]@	^@	_@H�@	a	x	b	m	c	h	d@	e@	f@	g@A@	i@	j@	k@	l@��@	n	s	o@	p@	q@	r@H:@	t@	u@	v@	w@�@	y	@	z	{@	|@	}@	~@A@	�	�	�@	�@	�@	�@Ae@	�@	�@	�@	�@�@	�	�	�	�	�	�	�	�	�@	�@	�@	�@�'@	�@	�@	�@	�@H�@@	�	�@	�@	�@	�@H�@	�	�	�	�	�@	�@	�@	�@HG@	�@	�@	�@	�@E@	�	�	�@	�@	�@	�@Ae@	�@	�@	�@	�@E@	�	�	�	�	�	�	�@	�@	�@	�@�@	�@	�@	�@	�@H�@	�	�	�@	�@	�@	�@A@	�@	�@	�@	�@H�@	�	�@	�	�@	�@	�@	�@Ez@	�	�	�@	�@	�@	�@A@	�@	�@	�@	�@Ae@	�	A	�	�	�	7	�	
	�	�	�	�@	�	�@	�@	�@	�@E@	�	�	�@	�@	�@	�@Ae@	�@	�@	�@	�@�~@	�		�	�	�@	�@	�@	�@Ae@	�@	�@	@	@A@			@	@	@	@�6@		@	
@	@	@�@		%					@	@	@	@��@	@	@	@	@E@		 	@	@	@	@H:@	!@	"@	#@	$@HG@	&	,@	'	(@	)@	*@	+@H�@	-	2	.@	/@	0@	1@�@	3@	4@	5@	6@�@	8	]	9	F	:	@@	;	<@	=@	>@	?@@&@@	A	B@	C@	D@	E@A@	G	R	H	M	I@	J@	K@	L@�@	N@	O@	P@	Q@A@	S	X	T@	U@	V@	W@�@	Y@	Z@	[@	\@A@	^	u	_	j	`	e	a@	b@	c@	d@Ae@	f@	g@	h@	i@H�@	k	p	l@	m@	n@	o@A@	q@	r@	s@	t@H�@	v	|@	w	x@	y@	z@	{@E@	}	�	~@	@	�@	�@E@	�@	�@	�@	�@Ba@	�	�	�	�	�	�	�	�	�	�	�@	�@	�@	�@HG@	�@	�@	�@	�@E@	�	�	�@	�@	�@	�@�@	�@	�@	�@	�@�@	�	�	�	�	�@	�@	�@	�@��@	�@	�@	�@	�@�@	�	�	�@	�@	�@	�@�@	�@	�@	�@	�@E@	�	�	�	�	�	�	�@	�@	�@	�@HG@	�@	�@	�@	�@��@	�	�	�@	�@	�@	�@�@	�@	�@	�@	�@H�@	�	�	�	�	�@	�@	�@	�@Ez@	�@	�@	�@	�@H:@	�	�	�@	�@	�@	�@H @	�@	�@	�@	�@A@	�		�		�	�	�	�	�@	�@	�@	�@A@	�@	�@	�@	�@E@	�	�	�@	�@	�@	�@E@	�@	�@	�@	�@E@		@		@	@	@	@H @		
		@	
@	@	@A@	@	@	@	@A@		*					@	@	@	@|�@	@	@	@	@A@	 	%	!@	"@	#@	$@A@	&@	'@	(@	)@H�@	+	6	,	1	-@	.@	/@	0@E@	2@	3@	4@	5@A@	7	<	8@	9@	:@	;@�@	=@	>@	?@	@@H @	B	�	C	�	D	n	E	W	F	Q	G	L	H@	I@	J@	K@HG@	M@	N@	O@	P@H:@@	R	S@	T@	U@	V@F�@	X	c	Y	^	Z@	[@	\@	]@H:@	_@	`@	a@	b@@&@	d	i	e@	f@	g@	h@A@	j@	k@	l@	m@H�@	o	|	p	v@	q	r@	s@	t@	u@H�@@	w	x@	y@	z@	{@�@	}	�@	~	@	�@	�@	�@H�@	�	�	�@	�@	�@	�@H:@	�@	�@	�@	�@H�@	�	�	�	�	�	�	�	�	�@	�@	�@	�@A@	�@	�@	�@	�@E@	�	�	�@	�@	�@	�@�~@	�@	�@	�@	�@H�@	�	�@	�	�@	�@	�@	�@H�@	�	�	�@	�@	�@	�@A@	�@	�@	�@	�@H�@	�	�	�	�	�	�	�@	�@	�@	�@�@	�@	�@	�@A@	�	�	�@	�@	�@	�@A@	�@	�@	�@	�@A@	�	�@	�	�@	�@	�@	�@Ae@	�	�	�@	�@	�@	�@A@	�@	�@	�@	�@H�@	�	R	�	#	�	�	�	�	�	�	�@	�@	�@	�@�@	�@	�@	�@	�@@&@	�	�	�@	�@	�@	�@H�@	�@	�@	�@	�@Ae@	�		�		�@	@	@	@H:@	@	@	@	@	@		A	
A	A	A	
A	A	A	A	A	A	A	A	A	A	AC�A			@	@	@	@Ae@	@	 @	!@	"@F�@	$	;	%	0	&	+	'@	(@	)@	*@Ba@	,@	-@	.@	/@A@	1	6	2@	3@	4@	5@E@	7@	8@	9@	:@��@	<	G	=	B	>@	?@	@@	A@H:@	C@	D@	E@	F@E@	H	M	I@	J@	K@	L@A@	N@	O@	P@	Q@E@	S	�	T	k	U	`	V	[	W@	X@	Y@	Z@�'@	\@	]@	^@	_@A@	a	f	b@	c@	d@	e@A@	g@	h@	i@	j@H @	l	w	m	r	n@	o@	p@	q@�@	s@	t@	u@	v@H�@	x	}	y@	z@	{@	|@E�@	~@	@	�@	�@H�@	�	�	�	�	�	�	�@	�@	�@	�@H:@	�@	�@	�@	�@�@	�	�	�@	�@	�@	�@�@	�@	�@	�@	�@H�@	�	�	�	�	�@	�@	�@	�@A@	�@	�@	�@	�@A@@	�	�@	�@	�@	�@@&@	�	
�	�		�	�		P	�		
	�	�	�	�	�	�	�	�	�@	�@	�@	�@E�@	�@	�@	�@	�@Ae@	�	�	�@	�@	�@	�@H @	�@	�@	�@	�@H:@	�	�	�	�	�@	�@	�@	�@H:@	�@	�@	�@	�@�@@	�	�@	�@	�@	�@�@	�	�	�	�	�	�	�@	�@	�@	�@E@	�@	�@	�@	�@Ez@	�	�	�@	�@	�@	�@A@	�@	�@	�@	�@HG@	�	�	�	�	�@	�@	�@	�@A@	�@	�@	�@	�@E@						@		@		@		@@&@		@		@		@			@Ae@				5						
		@				@		@		@		@�@						@		@		@		@@&@		@		@		@		@E@				*		 		%		!@		"@		#@		$@H:@		&@		'@		(@		)@H:@		+		0		,@		-@		.@		/@�@		1@		2@		3@		4@A@		6		C		7		=		8@		9@		:@		;@		<@�@		>@		?@		@@		A@		B@A@		D		J		E@		F@		G@		H@		I@@&@		K@		L@		M@		N@		O@A@		Q		�		R		}		S		`		T		Z		U@		V@		W@		X@		Y@Ae@		[@		\@		]@		^@		_@�@		a		w		b@		c@		d@		e@		f@		g@		hE		iE		jE		kE		lE		mE		nE		oE		pE		qE		rE		sE		tE		uE		vE
�E		x@		y@		z@		{@		|@A@		~		�				�		�@		�@		�@		�@		�@@&@		�@		�@		�@		�@		�@A@		�		�		�@		�@		�@		�@		�@Ba@		�@		�@		�@		�@		�@A@		�		�		�		�		�		�		�@		�@		�@		�@		�@E@		�@		�@		�@		�@		�@A@		�		�		�@		�@		�@		�@		�@H:@		�@		�@		�@		�@		�@H:@		�		�		�		�		�@		�@		�@		�@		�@|�@		�@		�@		�@		�@		�@��@		�		�		�@		�@		�@		�@		�@M@		�@		�@		�@		�@		�@E@		�	
9		�	
		�		�		�		�		�		�		�@		�@		�@		�@		�@E�@		�@		�@		�@		�@		�@�@		�		�		�@		�@		�@		�@		�@E@		�@		�@		�@		�@		�@Ae@		�		�@		�		�@		�@		�@		�@		�@A@		�		�		�@		�@		�@		�@		�@A@		�@		�@		�@	
@	
@�@	
	
	
	
	
	
	
@	
@	
@	
	@	

@A@	
@	

@	
@	
@	
@A@	
	
	
@	
@	
@	
@	
@��@	
@	
@	
@	
@	
@�@	
	
,	
 	
&	
!@	
"@	
#@	
$@	
%@H @	
'@	
(@	
)@	
*@	
+@HG@	
-	
3	
.@	
/@	
0@	
1@	
2@H:@	
4@	
5@	
6@	
7@	
8@E@	
:	
k	
;	
V	
<	
I	
=	
C	
>@	
?@	
@@	
A@	
B@Ae@	
D@	
E@	
F@	
G@	
H@F�@	
J	
P	
K@	
L@	
M@	
N@	
O@��@	
Q@	
R@	
S@	
T@	
U@A@	
W	
d	
X	
^	
Y@	
Z@	
[@	
\@	
]@@&@	
_@	
`@	
a@	
b@	
c@A@@	
e	
f@	
g@	
h@	
i@	
j@A@	
l	
�	
m	
z	
n	
t	
o@	
p@	
q@	
r@	
s@�@	
u@	
v@	
w@	
x@	
y@E�@	
{	
�	
|@	
}@	
~@	
@	
�@Ae@	
�@	
�@	
�@	
�@	
�@�@	
�	
�	
�	
�	
�@	
�@	
�@	
�@	
�@�@	
�@	
�@	
�@	
�@	
�@F�@	
�	
�	
�@	
�@	
�@	
�@	
�@@&@	
�@	
�@	
�@	
�@	
�@E@	
�	�	
�		
�	
�	
�	
�	
�	
�	
�	
�	
�@	
�@	
�@	
�@	
�@Ez@	
�@	
�@	
�@	
�@	
�@A@	
�	
�	
�@	
�@	
�@	
�@	
�@F�@	
�@	
�@	
�@	
�@	
�@�@	
�	
�	
�	
�	
�@	
�@	
�@	
�@	
�@E@	
�@	
�@	
�@	
�@	
�@	
�@	
�@&	
�@&	
�@&	
�@&	
�@&	
�@&	
�@&	
�@&	
�@&	
�@&	
�@&	
�@&	
�@&	
�	
�	
�	
�@&��@&	
�@&�@&	
�@	
�@	
�@	
�@	
�@	
�@A@	
�	
�	
�	
�	
�	
�	
�@	
�@	
�@	
�@	
�@E@	
�@	
�@	
�@	
�@	
�@E@@	
�	
�@	
�@	
�@	
�@	
�@Ae@		
			@	@	@	@	@Ae@	@		@	
@	@	@A@			@	@	@	@	@Ae@	@	@	@	@	@F�@		R		7		*		$	@	 @	!@	"@	#@A@	%@	&@	'@	(@	)@H:@	+	1	,@	-@	.@	/@	0@A@	2@	3@	4@	5@	6@A@	8	E	9	?	:@	;@	<@	=@	>@Ae@	@@	A@	B@	C@	D@A@	F	L	G@	H@	I@	J@	K@A@	M@	N@	O@	P@	Q@H�@	S	n	T	a	U	[	V@	W@	X@	Y@	Z@A@	\@	]@	^@	_@	`@�@	b	h	c@	d@	e@	f@	g@A@	i@	j@	k@	l@	m@A@	o	v@	p	q@	r@	s@	t@	u@Ae@	w	}	x@	y@	z@	{@	|@Ez@	~@	@	�@	�@	�@A@	�	�	�	�	�	�	�	�	�	�	�@	�@	�@	�@	�@H�@	�@	�@	�@	�@	�@E@	�	�	�@	�@	�@	�@	�@Ae@	�@	�@	�@	�@	�@�@	�	�	�	�	�@	�@	�@	�@	�@HG@	�@	�@	�@	�@	�@A@@	�	�@	�@	�@	�@	�@@&@	�	�	�	�	�	�	�@	�@	�@	�@	�@A@	�@	�@	�@	�@	�@A@	�	�	�@	�@	�@	�@	�@�'@	�@	�@	�@	�@	�@�@	�	�	�	�	�@	�@	�@	�@	�@E@	�@	�@	�@	�@	�@�@	�	�	�@	�@	�@	�@	�@A@	�@	�@	�@	�@	�@H:@	�		�		�	�	�	�	�@	�@	�@	�@	�@HG@	�@	�@	�@	�@	�@az@	�@	�@	@	@	@	@��@	@	@	@	@		@	
@	@@&@	
	(					@	@	@	@	@A@	@	@	@	@	@�@		"	@	@	@	 @	!@�@	#@	$@	%@	&@	'@H:@	)	0	*@	+@	,@	-@	.@	/@@&@@	1	2@	3@	4@	5@	6@�@	8		9	>	:	
&	;	�	<	�	=	}	>	K	?	E	@@	A@	B@	C@	D@�@	F@	G@	H@	I@	J@��@	L	w	M@	N@	O@	P@	Q@	R@	S@&	T@&	U	Y@&	V	W	X@&���	Z	v	[@&	\�	]�	^�	_�	`�	a�	b�	c�	d�	e�	f�	g�	h�	i��	j	k�	l�	m��	n	o�	p�	q��	r�	s�	t�	u��
�@&	x@	y@	z@	{@	|@H:@	~	�		�	�@	�@	�@	�@	�@F�@	�@	�@	�@	�@	�@�@@	�	�@	�@	�@	�@	�@Ae@	�	�	�	�	�	�	�@	�@	�@	�@	�@A@	�@	�@	�@	�@	�@Ae@	�	�	�@	�@	�@	�@	�@E@	�@	�@	�@	�@	�@Ae@	�	�	�@	�@	�@	�@	�@	�@E@@	�	�@	�@	�@	�@	�@Ae@	�	�	�	�	�	�	�	�	�@	�@	�@	�@	�@Ez@	�@	�@	�@	�@	�@H�@	�	�	�@	�@	�@	�@	�@H:@	�@	�@	�@	�@	�@E@	�	�	�	�	�@	�@	�@	�@	�@E�@	�@	�@	�@	�@	�@A@@	�	�@	�@	�@	�@	�@�@	�	
	�	�	�	�	�@	�@	�@	�@	�@A@	�@	�@	�@	�@	�@A@	�	
	
@	
@	
@	
@	
@�@	
@	
@	
@	
	@	
@A@	
	
	

	
	
@	
@	
@	
@	
@H:@	
@	
@	
@	
@	
@w@	
	
 	
@	
@	
@	
@	
@Ae@	
!@	
"@	
#@	
$@	
%@F�@	
'	
�	
(	
�	
)	
>	
*	
7	
+	
1	
,@	
-@	
.@	
/@	
0@@&@	
2@	
3@	
4@	
5@	
6@A@@	
8	
9@	
:@	
;@	
<@	
=@A@	
?	
�	
@	
�	
A@	
B@	
C@	
D@	
E@	
FF�	
GF�	
HF�	
I	
�F�	
J	
KF�	
L	
mF�	
M	
NF�	
Oi@	
Pi@	
Qi@	
Ri@	
Si@	
Ti@	
Ui@i@	
V	
Wi@	
Xi@	
Yi@	
Zi@	
[i@	
\i@	
]i@i@	
^	
_	
fi@	
`i@	
ai@	
b	
ci@i@	
di@	
eGti@i@	
g	
hi@	
ii@i@	
ji@	
k	
li@Gti@F�	
n	
oF�	
pF�	
qF�	
rF�	
sF�	
tF�	
uF�	
vF�F�	
w	
xF�	
yF�	
zF�	
{F�	
|F�	
}F�	
~F�F�	
	
�F�	
�F�	
�F�F�	
�F�	
�F�	
�	
�F�F�G�	
�F�	
�F�	
�F�	
�F�	
�F�	
�F�	
�F�	
�F�	
�F�	
�F�	
�F�	
�F�F�	
�	
�F�	
�F�	
�F�	
�F�	
�F�	
�F�	
�F�	
�F�	
�F�F�	
�F�	
�	
�F�F�	
�F�	
�F�	
�G�F�	
�@	
�@	
�@	
�@	
�@�@	
�@	
�@	
�@	
�@	
�@	
�@��@	
�	
�	
�	
�	
�	
�	
�@	
�@	
�@	
�@	
�@A@	
�@	
�@	
�@	
�@	
�@Ez@@	
�	
�@	
�@	
�@	
�@	
�@HG@	
�	
�	
�@	
�@	
�@	
�@	
�@	
�@|�@	
�	
�	
�@	
�@	
�@	
�@	
�@A@	
�@	
�@	
�@	
�@	
�@@&@	
�	
	
�	
�	
�	
�	
�	
�	
�@	
�@	
�@	
�@	
�@A@	
�@	
�@	
�@	
�@	
�@�@	
�	
�	
�@	
�@	
�@	
�@	
�@H:@	
�@	
�@	
�@	
�@	
�@|�@	
�	@	
�	
�@	
�@	
�@	
�@	@�@			@	@	@	@Ae@	@		@	
@	@	@H:@		#			@	@	@	@	@	@A@			@	@	@	@	@@&@	@	@	 @	!@	"@H:@	$	1	%	+	&@	'@	(@	)@	*@Ae@	,@	-@	.@	/@	0@A@	2	8	3@	4@	5@	6@	7@HG@	9@	:@	;@	<@	=@A@	?	4	@	�	A	�	B		C	L	D	F	E@Ae@	G@	H@	I@	J@	K@Ae@	M	y	N@	O@	P@	Q@	R@	S@	T	r	U	_@	V	W	[	X@	Y@	Z@
n@	\@	]@	^@
n@	`	i	a	e	b@	c@	d@
n@	f@	g@	h@
n@	j	n	k@	l@	m@
n@	o@	p@	q@
n@	s@	t@	u@	v@	w@	x@
n@	z@	{@	|@	}@	~@A@	�	�	�	�	�@	�@	�@	�@	�@F�@	�@	�@	�@	�@	�@A@	�	�	�@	�@	�@	�@	�@A@	�@	�@	�@	�@	�@Ae@	�	�	�	�	�@	�@	�@	�@	�@	�@��@	�	�	�@	�@	�@	�@	�@H:@	�@	�@	�@	�@	�@A@	�	�	�	�	�@	�@	�@	�@	�@Ez@	�@	�@	�@	�@	�@A@	�	�	�@	�@	�@	�@	�@�@	�@	�@	�@	�@	�@H:@	�	�	�	�	�	�	�	�	�@	�@	�@	�@	�@��@	�@	�@	�@	�@	�@@&@	�	�	�@	�@	�@	�@	�@Ae@	�@	�@	�@	�@	�@|�@	�	�	�	�	�@	�@	�@	�@	�@@&@	�@	�@	�@	�@	�@�@@	�	�@	�@	�@	�@	�@F�@	�		�				@	@	@	@	@�6@	@	@		@	
@	@H:@	
		@	@	@	@	@Ez@	@	@	@	@	@Ae@		'		!	@	@	@	@	 @@&@	"@	#@	$@	%@	&@Ez@	(	.	)@	*@	+@	,@	-@A@	/@	0@	1@	2@	3@�S@	5	�	6	m	7	R	8	E	9	?	:@	;@	<@	=@	>@H�@	@@	A@	B@	C@	D@H:@	F	L	G@	H@	I@	J@	K@Ba@	M@	N@	O@	P@	Q@H:@	S	`	T	Z	U@	V@	W@	X@	Y@@&@	[@	\@	]@	^@	_@�@	a	g	b@	c@	d@	e@	f@H:@	h@	i@	j@	k@	l@H:@	n	�	o	|	p	v	q@	r@	s@	t@	u@A@	w@	x@	y@	z@	{@H:@	}	�	~@	@	�@	�@	�@,>@	�@	�@	�@	�@	�@Ae@	�	�	�	�	�@	�@	�@	�@	�@F�@	�@	�@	�@	�@	�@�@	�	�	�@	�@	�@	�@	�@F�@	�@	�@	�@	�@	�@@&@	�	�	�	�	�	�	�	�	�@	�@	�@	�@	�@E@	�@	�@	�@	�@	�@@&@	�	�	�@	�@	�@	�@	�@�@	�@	�@	�@	�@	�@�@	�	�	�	�	�@	�@	�@	�@	�@�@	�@	�@	�@	�@	�@@&@	�	�	�@	�@	�@	�@	�@Ae@	�@	�@	�@	�@	�@H:@	�	�	�	�	�	�	�@	�@	�@	�@	�@A@	�@	�@	�@	�@	�@H:@	�	�	�@	�@	�@	�@	�@�@	�@	�@	�@	�@	�@�@	�		�	�	�@	�@	�@	�@Ae@	@	@	@	@	@az@			@	@		@	
@	@E@	
@	@	@	@	@��@		�		�		x		A		2		%			@	@	@	@	@Ba@	 @	!@	"@	#@	$@�@	&	,	'@	(@	)@	*@	+@A@	-@	.@	/@	0@	1@A@	3	:@	4	5@	6@	7@	8@	9@A@	;@	<@	=@	>@	?@	@@H @	B	]	C	P	D	J	E@	F@	G@	H@	I@E�@	K@	L@	M@	N@	O@A@	Q	W	R@	S@	T@	U@	V@Ez@	X@	Y@	Z@	[@	\@A@	^	k	_	e	`@	a@	b@	c@	d@@&@	f@	g@	h@	i@	j@A@	l	r	m@	n@	o@	p@	q@H:@	s@	t@	u@	v@	w@�@	y	�	z	�	{	�@	|	}@	~@	@	�@	�@�@	�	�	�@	�@	�@	�@	�@�@	�@	�@	�@	�@	�@�@	�	�	�	�	�@	�@	�@	�@	�@E@	�@	�@	�@	�@	�@az@@	�	�@	�@	�@	�@	�@�'@	�	�	�	�	�	�	�@	�@	�@	�@	�@�S@	�@	�@	�@	�@	�@�'@	�@	�@	�@	�@	�@	�@E@	�	�	�	�	�@	�@	�@	�@	�@@&@	�@	�@	�@	�@	�@HG@	�	�	�@	�@	�@	�@	�@F�@	�@	�@	�@	�@	�@�@	�	2	�		�	�	�	�	�	�	�@	�@	�@	�@	�@H�@	�@	�@	�@	�@	�@A@	�	�	�@	�@	�@	�@	�@Ae@	�@	�@	�@	�@	�@A@	�		�	�	�@	�@	�@	�@	�@�@	�@	�@	�@	�@	@A@			@	@	@	@	@Ae@		@	
@	@	@	
@A@		*					@	@	@	@	@�'@	@	@	@	@	@�@		$	@	 @	!@	"@	#@Ae@	%@	&@	'@	(@	)@Ae@@	+@	,	-@	.@	/@	0@	1@�@	3	j	4	O	5	B	6	<	7@	8@	9@	:@	;@A@	=@	>@	?@	@@	A@A@	C	I	D@	E@	F@	G@	H@��@	J@	K@	L@	M@	N@H:@	P	]	Q	W	R@	S@	T@	U@	V@Ae@	X@	Y@	Z@	[@	\@Ez@	^	d	_@	`@	a@	b@	c@�@	e@	f@	g@	h@	i@H:@	k	�	l	y	m	s	n@	o@	p@	q@	r@�@	t@	u@	v@	w@	x@�@	z@	{@	|@	}@	~@	@Ae@	�	�	�	�	�@	�@	�@	�@	�@F�@	�@	�@	�@	�@	�@��@	�	�	�@	�@	�@	�@	�@H:@	�@	�@	�@	�@	�@@&@	�	U	�	�	�	�	�	�	�	�	�@	�@	�@	�@	�@	�@��@	�@	�@	�@	�@	�@	�@Ae@	�	�	�	�	�@	�@	�@	�@	�@@&@	�@	�@	�@	�@	�@�@	�	�	�@	�@	�@	�@	�@Ae@	�@	�@	�@	�@	�@�@	�	�	�	�	�@	�@	�@	�@	�@	�@��@	�	�	�@	�@	�@	�@	�@@&@	�@	�@	�@	�@	�@H�@	�@	�	�	�@	�@	�@	�@	�@A@	�@	�@	�@	�@	�@Ae@	�	0	�	
	�	�	�	�	�@	�@	�@	�@	�@H:@	�@	�@	�@	�@	�@Ae@	�		�@	@	@	@	@E@	@	@	@	@		@E@		#@		
@	@	@	@	@	@	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	 	!H r!	"�H 	$	*	%@	&@	'@	(@	)@E@	+@	,@	-@	.@	/@�@	1	F	2	9@	3	4@	5@	6@	7@	8@Ae@	:	@	;@	<@	=@	>@	?@�@	A@	B@	C@	D@	E@@&@	G	N	H@	I@	J@	K@	L@	M@Ae@@	O	P@	Q@	R@	S@	T@A@	V	[	W	�	X	s	Y	f	Z	`	[@	\@	]@	^@	_@@&@	a@	b@	c@	d@	e@�'@	g	m	h@	i@	j@	k@	l@Ez@	n@	o@	p@	q@	r@�'@	t	�	u	{	v@	w@	x@	y@	z@F�@	|@	}@	~@	@	�@H:@	�	�	�@	�@	�@	�@	�@�@	�@	�@	�@	�@	�@	�@	�	�	�az	�azaz	�	�az	�az	�azaz	�	�az	�az	�azaz	�	�az	�az	�azaz	�	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azaz	�	�az	�az	�azu�azaz	�	�az	�azaz	�az	�	�azaz	�az	�az	�	�az	�azaz	�az	�	�azaz�K	�	@	�	9	�	3	�@	�@	�@	�@	�@	�@	�		�F�	�F�	�F�	�		�	x	�F�	�F�	�	:	�		�	�	�	�	�	�	�	�	�	��GGF�	�	�G������	�	�	������	�	���G�F�G	�	�	�	�	�	�G����GtF�	��
G�	�	�	�����	�	�G����G�	�	�	�	�	�	�	�	�GtGF�G	�	���F��F�	�	�	�	�G���G�F�F�	�F��	�		�		�	F��F��	F�F���	F�F�	�G		.						
	�;F�		
�;F�	�;	F�	F�	F�	F�	F�F��;	F�	F��;F�F�			#	F�	F�	F�	F�	F�	F�	 F��;	!�;	"�;F�F�	$F�	%F�	&F�	'	(F�	)F�	*F��;	+	,	-F��;F��;	/F�	0	6	1	4	2	3F���F��F�	5���	7F�	8	9��F���F�	;	`	<	Z	=	K	>	E	?	B	@	AF�GGG�	C	DF�G���F�	F	I	G	HF���F��	JG����	L	S	M	P	N	OGt�F���	Q	R��GF��	T	W	U	VG����F�	X	YGtG����	[F�	\F�	]	^�����	_��GF�	a	b	l	c	i	d	g	e	fG�F�G���	h���G�	jF�F�	k��G�	m	s	n	pG	o��F�	q	rF�����	t	v	uF����G	wF��	yF�	zF�	{	�	|F�	}	�	~F�	F�	�	�	�F�	�	�	�	�	�	�i@F�	�	�	�	�	�	�	�	��F�F�P	�F�F�G�	�	�	�F�I�F�	�	�B^��F�	�	�F�	�	�F���D	�	�	�F��VF�F�	��6F�	�	�	�	�	�	�F�	�F�	�PF�	�	�	�F�i@F�	�F�F��\	�	�	�	�F�	��`F�F�	�F�G	�	�	�	�G�F�G�F�F�	�F�i@	�	�	�	�	�	�i@	�ha�i@	��HF�	�	�	�	�F���F���	�	�F�i@GF�	�	�	�	�	�F�F�G	�F�hF�	�F�	�F��DG	�F�	�F�	�F�	�	�	�	�	�	�a�F�F�i@	�F��+F�	�	�	�F��`h	�i@F��V	�F�	�F�	�F�	�F�	�F�	�F�	�F�F�	��F�	�F�	�F�	�F�	�F�	�F�	�F�	�F�	�F�	�	�	�F�F�	�F��H	�F�F�	�i@F�	�F�	�	�	�	�	�F�	�F�	�F�	�	c	�	0	�		�		�	i@	�	�	�i@��BG				G�P	i@F��9		BZ���G�				
	i@	�i@	
	�9i@�i@			i@Gti@		I�i@F��		%						i@F��Ha�		i@�H�(�		"	 	!�6i@�Vh	#	$�9�i@�H	&	*	'	(Pi@i@	)F���	+	.	,	-i@F�h�;i@	/i@��	1	L	2	=	3	7i@	4	5	6�a�i@F�	8	:G	9GG�	;	<i@G���	>	E	?	B	@	Ahi@�RF�	C	Di@h�a�	F	I	G	HGi@I�F�	J	Kh�`�Vi@	M	[	N	T	O	R	P	QG�i@�Gi@	S�Vi@	U	X	V	W�i@i@��	Y	Z�6i@KP	\i@	]	`	^	_�VB����	a	bPhi@G�	d	�	e	�	f	s	g	m	h	ji@	i�+�`	k	li@�D�+��	n	q	o	pa��9F��H	ri@F�i@	t	{	u	x	v	wi@F��Vi@	y	z�Ui@�VF�	|		}	~�9i@F�i@	�i@i@�V	�	�	�	�	�	�	�	�F���GF�	�i@�+i@	�	�	�i@i@�c	�	��
�Ui@�H	�	�	�	�P	�F���i@	�i@�H	�	�	�	�i@Pi@��i@	�i@F�	�	�	�	�	�	�	�	�i@	��6i@	�	��V��F��9	�	�	�	��H�9a�i@	�	�F��6F�P	�	�	�	�	�i@i@��	�	���I�i@G	�	�	�	�F��H�\F�	�	�F�i@F�a�	�	�	�	�	�	�	�F�F�i@	�F�F�i@F�	�F�	�i@F�	�F�	�F�F�	��9i@	�	�	�	�	�F�	�F�	�F�	�F�	�F�	�i@	�F�	�F�	�F�F�i@	�F�	�F�	�F�	�F�	�F�	�F�i@	�	�F�i@F�F�	�	�	�	�F�	�F�	�F�	�F�	�	�	�	�	�	�i@	�F���	�	�G�GP��	�i@Gi@	�F�	�	�i@	�i@G	�	�Gi@Gi@F�	�F�	�F�	�F�	�F�	�F�	�F�	�F�	�F�i@	�F�	�F�	�F�	F�i@F�	F�	F�	F�	F�	F�	F�		F�		F�	
	F�F�i@	
F�	F�	F�F��HF�	F�	F�	F�	F�	F�	F�	F�	F�	F�		F�	F�	F�	F�F�		 F�	!F�	"F�	#	/	$	*	%	'i@	&�VF�	(	)GF�i@F�	+	-	,F�i@��	.F�i@F�	0F�	1F�F�	2BF�	4@	5@	6@	7@	8@E@	:@	;@	<@	=@	>@	?@A@	A	N	B	H	C@	D@	E@	F@	G@E@	I@	J@	K@	L@	M@E@	O	U	P@	Q@	R@	S@	T@A@	V@	W@	X@	Y@	Z@E@	\	�	]	r	^	e	_@	`@	a@	b@	c@	d@Ae@	f	l	g@	h@	i@	j@	k@A@	m@	n@	o@	p@	q@�@	s	�	t	z	u@	v@	w@	x@	y@Ez@	{@	|@	}@	~@	@�6@	�	�	�@	�@	�@	�@	�@Ae@	�@	�@	�@	�@	�@HG@	�	�	�	�	�	�	�@	�@	�@	�@	�@Ae@	�@	�@	�@	�@	�@E@	�	�	�@	�@	�@	�@	�@A@	�@	�@	�@	�@	�@E@	�	�	�	�	�@	�@	�@	�@	�@��@	�@	�@	�@	�@	�@�~@	�	�	�@	�@	�@	�@	�@�@	�@	�@	�@	�@	�@A@	�	0�	�	#�	�	W	�	�	�	+	�	4E�	�	�		�	�	�	�	�	�	�@	�@	�@	�@	�@F�@	�@	�@	�@	�@	�@A@	�	�	�@	�@	�@	�@	�@�@	�@	�@	�@	�@	�@�q@	�	�	�	�	�@	�@	�@	�@	�@F�@	�@	�@	�@	�@	�@E@	�	�	�@	�@	�@	�@	�@�@	�@	�@	@	@	@A@							@	@		@	
@	@�@	
@	@	@	@	@E@	@	@	@	@	@	@�@		'		!	@	@	@	@	 @@&@	"@	#@	$@	%@	&@E@	(	.	)@	*@	+@	,@	-@�@	/@	0@	1@	2@	3@��@	5	�	6	�	7	l	8	e	9	_	:@	;@	<@	=@	>@	?@	@H�H�	AH�	B	CH�	DH�	EH�H�	FH�	G	HH�H�	I	JH�	KH�	LH�	MH�	NH�H�	O	PH�	QH�	RH�	SH�H�	T	UH�H�	V	WH�H�	XH�	YH�	Z	[H�	\H�H�	]	^H�@H�	`@	a@	b@	c@	d@A@@	f	g@	h@	i@	j@	k@E@	m	z	n	t	o@	p@	q@	r@	s@E@	u@	v@	w@	x@	y@HG@	{	�	|@	}@	~@	@	�@F�@	�@	�@	�@	�@	�@F�@	�	�	�	�	�@	�@	�@	�@	�@	�@E@	�	�	�@	�@	�@	�@	�@Ae@	�@	�@	�@	�@	�@A@	�	�	�	�	�@	�@	�@	�@	�@E@	�@	�@	�@	�@	�@H�@	�	�	�@	�@	�@	�@	�@E@	�@	�@	�@	�@	�@�@	�	�	�	�	�	�	�	�	�@	�@	�@	�@	�@Ae@	�@	�@	�@	�@	�@E@	�@	�@	�@	�@	�@	�@H:@	�	�	�	�	�@	�@	�@	�@	�@nW@	�@	�@	�@	�@	�@Ae@	�	�	�@	�@	�@	�@	�@F�@	�@	�@	�@	�@	�@Ae@	�		�	�	�	�	�@	�@	�@	�@	�@A@	�@	�@	�@	�@	�@Ae@	�		�@	�@	�@	�@	�@	@	E	E	E	E	E	E	E	E		E	
EE		E	
EE		E�eE	@	@	@	@	@Ae@			@	@	@	@	@	@Ae@		%	 @	!@	"@	#@	$@E@	&@	'@	(@	)@	*@A@	,	�	-	�	.	e	/	J	0	=	1	7	2@	3@	4@	5@	6@A@	8@	9@	:@	;@	<@�'@	>	D	?@	@@	A@	B@	C@E@	E@	F@	G@	H@	I@Ae@	K	X	L	R	M@	N@	O@	P@	Q@Ez@	S@	T@	U@	V@	W@Ae@	Y	_	Z@	[@	\@	]@	^@Ae@	`@	a@	b@	c@	d@H:@	f	{	g	t	h	n	i@	j@	k@	l@	m@�@	o@	p@	q@	r@	s@H:@	u@	v@	w@	x@	y@	z@Ae@	|	�	}	�	~@	@	�@	�@	�@Ae@	�@	�@	�@	�@	�@�@@	�	�@	�@	�@	�@	�@Ae@	�	�	�	�	�	�	�	�	�@	�@	�@	�@	�@@&@	�@	�@	�@	�@	�@A@@	�	�@	�@	�@	�@	�@A@	�	�	�	�	�@	�@	�@	�@	�@Ae@	�@	�@	�@	�@	�@H:@	�	�	�@	�@	�@	�@	�@@&@	�@	�@	�@	�@	�@H:@	�	�	�	�	�	�	�@	�@	�@	�@	�@A@	�@	�@	�@	�@	�@E@	�	�	�@	�@	�@	�@	�@�'@	�@	�@	�@	�@	�@H:@	�	�	�	�	�@	�@	�@	�@	�@Ae@	�@	�@	�@	�@	�@A@@	�	�@	�@	�@	�@	�@Ae@	�	W	�	&	�		�		�	�	�@	�@	�@	�@	�@Ae@	�@	@	@	@	@�S@			@	@	@		@	
H:dH:	@	
@	@	@	@Ez@		@		@	@	@	@	@B@		 	@	@	@	@	@Ez@	!@	"@	#@	$@	%@A@	'	B	(	5	)	/	*@	+@	,@	-@	.@E�@	0@	1@	2@	3@	4@�@	6	<	7@	8@	9@	:@	;@Ez@	=@	>@	?@	@@	A@H:@	C	J@	D	E@	F@	G@	H@	I@Ae@	K	Q	L@	M@	N@	O@	P@Ae@	R@	S@	T@	U@	V@�@	X	�	Y	n	Z	g	[	a	\@	]@	^@	_@	`@��@	b@	c@	d@	e@	f@�'@	h@	i@	j@	k@	l@	m@�@	o	|	p	v	q@	r@	s@	t@	u@@&@	w@	x@	y@	z@	{@�@	}	�	~@	@	�@	�@	�@�@	�@	�@	�@	�@	�@�~@	�	�	�	�@	�	�@	�@	�@	�@	�@Ae@	�	�	�@	�@	�@	�@	�@@&@	�@	�@	�@	�@	�@A@	�	�	�	�	�@	�@	�@	�@	�@	�@H:	�	�H:	�H:	�H:	�H:	�H:	�H:	�	�	��	��	��	��	��	��	��	��	��	��	��	��	��	���	�	��	��	���	��	��	�	��	����~	��,	��,	��,	��,	��,	��,	��,	��,	��,	��,	��,	��,	��,�,	�	��,	��,	��,	��,	��,	��,	��,	��,	��,���,	�@	�@	�@	�@	�@A@	�	�	�@	�@	�@	�@	�@A@	�@	�@	�@	�@	�@H:@	�	�	�	�	�	R	�	'	�		�		�	�	�@	�@	�@	�@	�@A@	@	@	@	@	@H:@			@	@		@	
@	@H @	
@	@	@	@	@N@		 			@	@	@	@	@H:@	@	@	@	@	@Ae@@	!	"@	#@	$@	%@	&@�@	(	C	)	6	*	0	+@	,@	-@	.@	/@Ez@	1@	2@	3@	4@	5@H:@	7	=	8@	9@	:@	;@	<@A@	>@	?@	@@	A@	B@A@	D	K	E@	F@	G@	H@	I@	J@�@	L@	M@	N@	O@	P@	Q@��@	S	�	T	o	U	b	V	\	W@	X@	Y@	Z@	[@F�@	]@	^@	_@	`@	a@A@	c	i	d@	e@	f@	g@	h@E@	j@	k@	l@	m@	n@A@	p	}	q	w	r@	s@	t@	u@	v@F�@	x@	y@	z@	{@	|@A@	~@	@	�@	�@	�@	�@H @	�	�	�	�	�	�	�@	�@	�@	�@	�@E@	�@	�@	�@	�@	�@A@	�	�	�@	�@	�@	�@	�@�@	�@	�@	�@	�@	�@H:@	�@	�	�	�@	�@	�@	�@	�@Ba@	�@	�@	�@	�@	�@E@	�	7	�		�	�	�	�	�	�	�@	�@	�@	�@	�@E@	�@	�@	�@	�@	�@@&@	�	�	�@	�@	�@	�@	�@�g@	�@	�@	�@	�@	�@	�@	�	�	�M	�M	�M	�M	�M	�M	�M	�M	�M	�M	�M	�M	�MM	�g�MM	�M	�M	�M	�M	�M	�M	�M	�M	�M	�M	�	�M	�MM	�g�M	�	�	�	�	�@	�@	�@	�@	�@�@	�@	�@	�@	�@	�@�S@	�@	�@	�@	�@	�@	�@��@								@	@	@	@	@A@	
@	@	@	
@	@�@			@	@	@	@	@H:@	@	@	@	@	@E@		*		$	@	 @	!@	"@	#@Ae@	%@	&@	'@	(@	)@H:@	+	1	,@	-@	.@	/@	0@A@	2@	3@	4@	5@	6@A@	8	i	9	T	:	G	;	A	<@	=@	>@	?@	@@F�@	B@	C@	D@	E@	F@�@	H	N	I@	J@	K@	L@	M@Ae@	O@	P@	Q@	R@	S@�@	U	\	V@	W@	X@	Y@	Z@	[@A@	]	c	^@	_@	`@	a@	b@A@	d@	e@	f@	g@	h@HG@	j	x@	k	l	r	m@	n@	o@	p@	q@A@	s@	t@	u@	v@	w@�'@	y	�	z	�	{@	|@	}@	~@	@Ae@	�@	�@	�@	�@	�@A@	�	�	�@	�@	�@	�@	�@	�@	�Ae	�Ae	�Ae	�Ae	�Ae	�Ae	�Ae	�Ae	�Ae	�Ae	�Ae	�AeAe	�	�Ae	�Ae��Ae	�@	�@	�@	�@	�@�@	�	�	�	.	�	�	�	�	�	�	�	�	�@	�@	�@	�@	�@@&@	�@	�@	�@	�@	�@A@@	�	�@	�@	�@	�@	�@E@	�	�	�	�	�@	�@	�@	�@	�@E�@	�@	�@	�@	�@	�@A@	�	�	�@	�@	�@	�@	�@	�@	�A	�A	�A	�A	�A	�A	�A	�A	�A	�A	�A	�A	�A	�A	�A�A	�@	�@	�@	�@	�@A@	�		�	�	�	�	�@	�@	�@	�@	�@Ae@	�@	�@	�@	�@	�@A@	�	�	�@	�@	�@	�@	�@�@	�@	�@	@	@	@�@					@	@	@		@	
@F�@	@	
@	@	@	@�'@			@	@	@	@	@Ae@	@	@	@	@	@	@A		 AA	!	"A	#A	$A	%A	&A	'A	(A	)A	*A	+AA	,	-AC�A	/	`	0	E	1	8@	2	3@	4@	5@	6@	7@�g@	9	?	:@	;@	<@	=@	>@�@	@@	A@	B@	C@	D@Ae@	F	S	G	M	H@	I@	J@	K@	L@��@	N@	O@	P@	Q@	R@Ae@	T	Z	U@	V@	W@	X@	Y@��@	[@	\@	]@	^@	_@�@	a	v	b	i	c@	d@	e@	f@	g@	h@Ae@	j	p	k@	l@	m@	n@	o@Ae@	q@	r@	s@	t@	u@Ez@	w	�	x	~	y@	z@	{@	|@	}@�@	@	�@	�@	�@	�@Ez@	�	�	�@	�@	�@	�@	�@Ae@	�@	�@	�@	�@	�@E@	�	�	�	�	�	�	�	�	�	�	�@	�@	�@	�@	�@@&@	�@	�@	�@	�@	�@Ae@	�@	�@	�@	�@	�@	�@@&@	�	�	�	�	�@	�@	�@	�@	�@Ae@	�@	�@	�@	�@	�@�@	�	�	�@	�@	�@	�@	�@Ae@	�@	�@	�@	�@	�@A@	�	�	�	�	�	�	�@	�@	�@	�@	�@Ae@	�@	�@	�@	�@	�@A@	�	�	�@	�@	�@	�@	�@E@	�@	�@	�@	�@	�@A@	�	�	�	�	�@	�@	�@	�@	�@@&@	�@	�@	�@	�@	�@H:@	�	�	�@	�@	�@	�@	�@�@	�@	�@	�@	�@	�@E@	�	-	�		�		�		@	@	@	@	@A@	@	@	@		@	
@�@			
@	@	@	@	@Ae@	@	@	@	@	@��@		 	@	@	@	@	@	@@&@	!	'	"@	#@	$@	%@	&@�@	(@	)@	*@	+@	,@E@	.	C	/	6	0@	1@	2@	3@	4@	5@A@	7	=	8@	9@	:@	;@	<@Ez@	>@	?@	@@	A@	B@A@@	D	E	K	F@	G@	H@	I@	J@A@	L@	M@	N@	O@	P@	Q@@	R@	S@	T@	U	V@
n@	X	 O	Y	�	Z	�	[	�	\	�	]	k	^@	_	e	`@	a@	b@	c@	d@�@	f@	g@	h@	i@	j@��@	l	y	m	s	n@	o@	p@	q@	r@�@	t@	u@	v@	w@	x@A@	z@	{@	|@	}@	~@	@F�@	�	�	�	�	�	�	�@	�@	�@	�@	�@@&@	�@	�@	�@	�@	�@�@	�	�	�@	�@	�@	�@	�@Ae@	�@	�@	�@	�@	�@A@	�	�	�	�	�@	�@	�@	�@	�@E@	�@	�@	�@	�@	�@A@	�	�	�@	�@	�@	�@	�@Ae@	�@	�@	�@	�@	�@A@	�	�	�	�	�	�	�	�	�@	�@	�@	�@	�@F�@	�@	�@	�@	�@	�@A@	�@	�@	�@	�@	�@	�@	�@	�	6	�H:	�H:	�H:	�H:	�	#	�		�H:	�H:	�H:	�H:	�H:	�H:	�H:	�	�H:	�	�H:	�H:	�H:	�H:	�H:	�H:	�H:	�H:	�H:	�H:	�H:	�H:	�H:s�H:	�		�H:	�H:	�H:	�H:	�H:	�H:	�H:	�H:	�H:	�H:	�H:	�H:	�H:	�	�	�	�s��*�s�	�	s�s��9�	H:	H:	H:	H:	H:	H:	H:		H:	
H:	H:	H:	
H:	H:	H:	H:�H:			H:	H:	H:	H:	H:	H:s�H:	H:	H:	H:	H:	H:		!�	 s�H:	"H:�H:	$	-H:	%	&H:	'H:	(H:	)H:	*H:	+H:	,H:�H:	.H:	/H:	0H:	1H:	2H:	3H:	4H:	5H:�9H:	7H:	8H:	9	�	:H:	;H:	<H:	=H:	>H:	?H:	@H:	AH:	BH:	CH:	D	U	EH:	FH:	GH:	HH:	IH:	JH:	KH:	LH:	MH:	NH:	OH:	PH:	QH:	RH:	SH:	TH:�,H:	V	q	WH:	XH:	YH:	Z	e	[H:	\H:	]H:	^H:	_H:	`H:	aH:	bH:	cH:	dH:�,H:	fH:	gH:	hH:	iH:	jH:	kH:	lH:	mH:	nH:	oH:	pH:3H:	rH:	sH:	tH:	uH:	vH:	wH:	xH:	yH:	zH:	{H:	|H:	}H:	~H:	H:s�H:	�H:	�H:	�H:	�H:	�H:	�H:	�H:	�H:	�H:	�H:�,H:	�	�	�	�	�@	�@	�@	�@	�@A@	�@	�@	�@	�@	�@A@@	�	�@	�@	�@	�@	�@Ae@	�	�	�	�	�	�	�@	�@	�@	�@	�@Ae@	�@	�@	�@	�@	�@Ez@	�	�	�@	�@	�@	�@	�@H:@	�@	�@	�@	�@	�@�@	�	�	�	�	�@	�@	�@	�@	�@@&@	�@	�@	�@	�@	�@|�@@	�	�@	�@	�@	�@	�@H:@	�	;	�		�	�	�	�	�	�	�@	�@	�@	�@	�@F�@	�@	�@	�@	�@	�@�@	�	�	�@	�@	�@	�@	�@Ae@	�@	�@	�@	�@	�@�@	�	�	�	�	�@	�@	�@	�@	�@H @	�@	�@	�@	�@	�@�@@	�	�@	@	@	@	@�@		 				
	@		@	
@	@	@A@	@	@	@	@	@A@			@	@	@	@	@A@	@	@	@	@	@A@	!	.	"	(	#@	$@	%@	&@	'@Ez@	)@	*@	+@	,@	-@H:@	/	5	0@	1@	2@	3@	4@A@	6@	7@	8@	9@	:@A@	<	l	=	W	>	J	?	D	@@	A@	B@	C@E@	E@	F@	G@	H@	I@A@	K	Q	L@	M@	N@	O@	P@Ae@	R@	S@	T@	U@	V@E@	X	e	Y	_	Z@	[@	\@	]@	^@H:@	`@	a@	b@	c@	d@Ae@	f@	g@	h@	i@	j@	k@A@	m	�	n	{	o	u	p@	q@	r@	s@	t@A@	v@	w@	x@	y@	z@�g@@	|	}@	~@	@	�@	�@A@	�	�	�	�	�@	�@	�@	�@	�@H:@	�@	�@	�@	�@	�@HG@	�@	�@	�@	�@	�@	�@A@	�	X	�	�	�	�	�	�	�	�@	�	�@	�@	�@	�@	�@�@	�@	�@	�@	�@	�@	�@F�@	�	�	�@	�@	�@	�@	�@	�@|�@	�@	�@	�@	�@	�@	�@A@	�	�	�	�	�@	�@	�@	�@	�@	�@Ae@	�	�	�@	�@	�@	�@	�@Ae@	�@	�@	�@	�@	�@A@	�	�	�	�	�@	�@	�@	�@	�@H�@	�@	�@	�@	�@	�@A@	�	�	�@	�@	�@	�@�@	�@	�@	�@	�@	�@E@	�	!	�		�	�	�	�	�@	�@	�@	�@	�@F�@	�@	�@	�@	�@	�@�@	�		�@	�@	�@	�@	�@Ae@	@	@	@	@	@�@						@	
@	@	@	
@HG@	@	@	@	@	@Ae@			@	@	@	@	@�@	@	@	@	@	 @�@	"	=	#	0	$	*	%@	&@	'@	(@	)@Ae@	+@	,@	-@	.@	/@�@	1	7	2@	3@	4@	5@	6@�@	8@	9@	:@	;@	<@@&@	>	K	?	E	@@	A@	B@	C@	D@Ez@	F@	G@	H@	I@	J@E@	L	R	M@	N@	O@	P@	Q@�@	S@	T@	U@	V@	W@E@	Y	�	Z	�	[	v	\	i	]	c	^@	_@	`@	a@	b@E�@	d@	e@	f@	g@	h@�@	j	p	k@	l@	m@	n@	o@A@	q@	r@	s@	t@	u@�@	w	�	x	~	y@	z@	{@	|@	}@F�@	@	�@	�@	�@	�@A@	�	�	�@	�@	�@	�@	�@	�@	�@	�@	�@	�@	�@	�@	�@@
�	�@	�@	�@	�@	�@A@	�	�	�	�	�	�	�@	�@	�@	�@	�@@&@	�@	�@	�@	�@	�@A@@	�	�@	�@	�@	�@	�@	�@	�	�	�Ae	�Ae	�	�	�	�Ae	�Ae	�
��	�	�	�Ae~B�	�	�B�AeN�e1	�Ae	�	�	�	��N�Ae�xB�	�Ae��Ae	�Ae	�Ae	�Ae	�Ae	�Ae	�Ae	�	�Ae	�Ae	�Ae	�Ae	�	�Ae	�	�	�Ae�_����	�Ae	�Ae�.B�	�	�	�	�	�@	�@	�@	�@	�@E@	�@	�@	�@	�@	�@A@@	�	�@	�@	�@	�@	�@A@	�	 	�	 	�	�@	�	�@	�@	�@	�@	�@az@	�	�	�@	�@	�@	�@	�@E@	�@	�@	 @	 @	 @|@	 	 	 	 	 @	 @	 @	 	@	 
@A@	 @	 
@	 @	 @	 @Ae@@	 	 @	 @	 @	 @	 @H:@	 	 4	 	 '	 	 !	 @	 @	 @	 @	  @A@	 "@	 #@	 $@	 %@	 &@A@	 (	 .	 )@	 *@	 +@	 ,@	 -@�@	 /@	 0@	 1@	 2@	 3@A@	 5	 B	 6	 <	 7@	 8@	 9@	 :@	 ;@�@	 =@	 >@	 ?@	 @@	 A@A@	 C	 I	 D@	 E@	 F@	 G@	 H@F�@	 J@	 K@	 L@	 M@	 N@�@	 P	"	 Q	!	 R	 �	 S	 z	 T	 e	 U@	 V	 \	 W@	 X@	 Y@	 Z@	 [@��@	 ]@	 ^@	 _@	 `@	 a@	 b@	 c@
n	 d
n@	 f	 s	 g	 m	 h@	 i@	 j@	 k@	 l@E�@	 n@	 o@	 p@	 q@	 r@H:@@	 t	 u@	 v@	 w@	 x@	 y@HG@	 {	 �	 |	 �	 }	 �	 ~@	 @	 �@	 �@	 �@
_@	 �@	 �@	 �@	 �@	 �@Ae@	 �	 �	 �@	 �@	 �@	 �@	 �@A@	 �@	 �@	 �@	 �@	 �@A@	 �	 �@	 �	 �@	 �@	 �@	 �@	 �@E@@	 �	 �@	 �@	 �@	 �@	 �@��@	 �	 �	 �	 �	 �	 �	 �	 �	 �@	 �@	 �@	 �@	 �@Ae@	 �@	 �@	 �@	 �@	 �@H�@	 �	 �	 �@	 �@	 �@	 �@	 �@�@	 �@	 �@	 �@	 �@	 �@A@	 �	 �	 �	 �	 �@	 �@	 �@	 �@	 �@Ae@	 �@	 �@	 �@	 �@	 �@��@	 �@	 �@	 �@	 �@	 �@	 �@Ae@	 �	 �	 �	 �	 �	 �	 �@	 �@	 �@	 �@	 �@Ae@	 �@	 �@	 �@	 �@	 �@�~@@	 �	 �@	 �@	 �@	 �@	 �@A@	 �	 �	 �	 �	 �@	 �@	 �@	 �@	 �@@&@	 �@	 �@	 �@	 �@	 �@A@	 �	!	 �@	 �@	 �@	!@	!@Ae@	!@	!@	!@	!@	!@A@	!		!�	!
	!w	!	!\	!	!O	!
	!I	!@	!@	!@	!@	!@	!@	!@&	!@&	!@&	!@&	!@&	!	!.	!@&	!	!&	!@&	!@&	!@&	!@&	! @&	!!	!$	!"	!#@&��@&��	!%�@&	!'@&	!(@&	!)@&	!*@&	!+@&	!,@&	!-@&��@&@&	!/@&	!0	!1@&	!2	!<@&	!3	!4	!8	!5@&	!6@&	!7@&�*@&	!9@&	!:@&	!;@&�@&	!=	!B	!>@&	!?@&	!@@&	!A@&�@&	!C@&	!D@&	!E	!G	!F��@&	!H@&�@&	!J@	!K@	!L@	!M@	!N@�@	!P	!V	!Q@	!R@	!S@	!T@	!U@Ba@	!W@	!X@	!Y@	!Z@	![@�@	!]	!j	!^	!d	!_@	!`@	!a@	!b@	!c@Ae@	!e@	!f@	!g@	!h@	!i@Ae@	!k	!q	!l@	!m@	!n@	!o@	!p@�@	!r@	!s@	!t@	!u@	!v@�@	!x	!�	!y	!�	!z	!�	!{@	!|@	!}@	!~@	!@A@	!�@	!�@	!�@	!�@	!�@E@	!�	!�	!�@	!�@	!�@	!�@	!�@H:@	!�@	!�@	!�@	!�@	!�@�@	!�	!�	!�	!�	!�@	!�@	!�@	!�@	!�@@&@	!�@	!�@	!�@	!�@	!�@A@	!�	!�	!�@	!�@	!�@	!�@	!�@Ae@	!�@	!�@	!�@	!�@	!�@A@	!�	!�	!�	!�	!�	!�	!�	!�	!�@	!�@	!�@	!�@	!�@Ez@	!�@	!�@	!�@	!�@	!�@Ae@	!�@	!�@	!�@	!�@	!�@	!�@@&@	!�	!�	!�@	!�@	!�@	!�@	!�@	!�@�@	!�@	!�@	!�@	!�@	!�@	!�@HG@	!�	!�	!�	!�	!�	!�	!�@	!�@	!�@	!�@	!�@A@	!�@	!�@	!�@	!�@	!�@H:@	!�@	!�@	!�@	!�@	!�@	!�@A@	!�	!�	!�	!�	!�@	!�@	!�@	!�@	!�@H:@	!�@	!�@	!�@	!�@	!�@A@	!�	!�	!�@	!�@	!�@	!�@	!�@��@	"@	"@	"@	"@	"@A@	"	"�	"	"o	"	"9	"		"$	"
	"	"	"	"@	"
@	"@	"@	"@E�@	"@	"@	"@	"@	"@A@	"	"	"@	"@	"@	"@	"@A@	"@	" @	"!@	""@	"#@A@	"%	"2	"&	",	"'@	"(@	")@	"*@	"+@�@	"-@	".@	"/@	"0@	"1@A@@	"3	"4@	"5@	"6@	"7@	"8@A@	":	"U	";	"H	"<	"B	"=@	">@	"?@	"@@	"A@�@	"C@	"D@	"E@	"F@	"G@A@	"I	"O	"J@	"K@	"L@	"M@	"N@Ae@	"P@	"Q@	"R@	"S@	"T@A@	"V	"]@	"W	"X@	"Y@	"Z@	"[@	"\@Ae@	"^	"i	"_@	"`@	"a@	"b@	"c@	"d@	"e@	"f@	"g@	"h@
���	"j@	"k@	"l@	"m@	"n@@&@	"p	"�	"q	"�	"r	"	"s	"y	"t@	"u@	"v@	"w@	"x@Ae@	"z@	"{@	"|@	"}@	"~@@&@	"�@	"�@	"�@	"�@	"�@	"�@F���	"�	"�	"�	"�	"�@	"�@	"�@	"�@	"�@H @	"�@	"�@	"�@	"�@	"�@A@@	"�	"�@	"�@	"�@	"�@	"�@A@	"�	"�	"�	"�	"�	"�	"�@	"�@	"�@	"�@	"�@Ae@	"�@	"�@	"�@	"�@	"�@�@	"�	"�	"�@	"�@	"�@	"�@	"�@Ae@	"�@	"�@	"�@	"�@	"�@�@	"�	"�	"�	"�	"�@	"�@	"�@	"�@	"�@@&@	"�@	"�@	"�@	"�@	"�@A@	"�	"�	"�@	"�@	"�@	"�@	"�@E@	"�@	"�@	"�@	"�@	"�@�@	"�	#Q	"�	#&	"�	#	"�	#	"�	"�	"�@	"�@	"�@	"�@	"�@	"�@	"�Ae	"�Ae	"�Ae	"�	"�	"�Ae	"�Ae	"�AeAe	"�	"�Ae	"�Ae	"�	"�	"�	"�	"�Ae	"�Ae	"�AeB�Ae	"�Ae	"�Ae	"�Ae�Ae	"�	"�	"�Ae	"�Ae	"�Ae
�Ae	"�Ae	"�Ae	"�Ae��Ae	"�Ae	"�Ae	"�Ae�Ae	"�@	#@	#@	#@	#@H:@	#	#	#@	#@	#@	#	@	#
@F�@	#@	#
@	#@	#@	#@Ae@	#	#	#@	#@	#@	#@	#@	#@Ae@	#	# 	#@	#@	#@	#@	#@�@	#!@	#"@	##@	#$@	#%@az@	#'	#<	#(	#/	#)@	#*@	#+@	#,@	#-@	#.@@&@	#0	#6	#1@	#2@	#3@	#4@	#5@��@	#7@	#8@	#9@	#:@	#;@�@	#=	#D	#>@	#?@	#@@	#A@	#B@	#C@F�@	#E	#K	#F@	#G@	#H@	#I@	#J@Ae@	#L@	#M@	#N@	#O@	#P@Ae@	#R	#v	#S	#a	#T@	#U	#[	#V@	#W@	#X@	#Y@	#Z@�'@	#\@	#]@	#^@	#_@	#`@Ae@	#b	#o	#c	#i	#d@	#e@	#f@	#g@	#h@A@	#j@	#k@	#l@	#m@	#n@F�@	#p@	#q@	#r@	#s@	#t@	#u@A@	#w	#�	#x	#�	#y	#	#z@	#{@	#|@	#}@	#~@��@	#�@	#�@	#�@	#�@	#�@�@	#�	#�	#�@	#�@	#�@	#�@	#�@Ae@	#�@	#�@	#�@	#�@	#�@��@	#�	#�	#�@	#�@	#�@	#�@	#�@	#�@E@	#�	#�	#�@	#�@	#�@	#�@	#�@@&@	#�@	#�@	#�@	#�@	#�@Ae@	#�	*O	#�	'	#�	%>	#�	$s	#�	$#	#�	#�	#�	#�	#�	#�	#�	#�	#�@	#�@	#�@	#�@	#�@Ae@	#�@	#�@	#�@	#�@	#�@�@@	#�	#�@	#�@	#�@	#�@	#�@E@	#�	#�	#�@	#�@	#�@	#�@	#�@	#�@	#�@	#�E	#�EE	#�E	#�	#�E	#�E	#�E	#�E	#�E	#�EE	#�E	#�E	#�E	#�	#�EE	#�E	#�E	#�E	#�E	#�	#�E	#�E	#�E	#�EE	#�	#�E	#�EE	#�E	#�E	#�	#�EE@	#�	#�	#�@	#�@	#�@	#�@	#�@A@	#�@	#�@	#�@	#�@	#�@E@	#�	$	#�	$	#�	$	#�@	#�@	#�@	#�@	$@��@	$@	$@	$@	$@	$@@&@@	$	$	@	$
@	$@	$@	$
@�@	$	$	$	$	$@	$@	$@	$@	$@A@	$@	$@	$@	$@	$@�@	$@	$@	$@	$ @	$!@	$"@A@	$$	$H	$%	$@	$&	$3	$'	$-	$(@	$)@	$*@	$+@	$,@E@	$.@	$/@	$0@	$1@	$2@�@	$4	$:	$5@	$6@	$7@	$8@	$9@Ae@	$;@	$<@	$=@	$>@	$?@Ez@@	$A@	$B	$C@	$D@	$E@	$F@	$G@A@	$I	$d	$J	$W	$K	$Q	$L@	$M@	$N@	$O@	$P@�@	$R@	$S@	$T@	$U@	$V@�@	$X	$^	$Y@	$Z@	$[@	$\@	$]@E@	$_@	$`@	$a@	$b@	$c@E@	$e	$l	$f@	$g@	$h@	$i@	$j@	$k@Ae@	$m@	$n@	$o@	$p@	$q@	$r@�@	$t	$�	$u	$�	$v	$�	$w	$�	$x	$~	$y@	$z@	${@	$|@	$}@A@	$@	$�@	$�@	$�@	$�@A@	$�	$�	$�@	$�@	$�@	$�@	$�@�6@	$�@	$�@	$�@	$�@	$�@�@	$�	$�	$�	$�	$�@	$�@	$�@	$�@	$�@A@	$�@	$�@	$�@	$�@	$�@A@@	$�	$�@	$�@	$�@	$�@	$�@A@	$�	$�	$�	$�	$�	$�	$�@	$�@	$�@	$�@	$�@E@	$�@	$�@	$�@	$�@	$�@H:@	$�	$�	$�@	$�@	$�@	$�@	$�@E@	$�@	$�@	$�@	$�@	$�@�@	$�	$�	$�	$�	$�@	$�@	$�@	$�@	$�@�@	$�@	$�@	$�@	$�@	$�@A@	$�	$�	$�@	$�@	$�@	$�@	$�@��@	$�@	$�@	$�@	$�@	$�@A@	$�	%	$�	$�	$�	$�	$�	$�	$�@	$�@	$�@	$�@	$�@E@	$�@	$�@	$�@	$�@	$�@E@	$�	$�	$�@	$�@	$�@	$�@	$�@�@	$�@	$�@	$�@	$�@	$�@A@	$�	%	$�	%	$�@	$�@	$�@F�@	%@	%@	%@	%@	%@A@	%	%
	%@	%	@	%
@	%@	%@�@	%@	%@	%@	%@	%@�@	%	%)	%	%"	%	%	%@	%@	%@	%@	%@E@	%@	%@	%@	% @	%!@Ae@@	%#	%$@	%%@	%&@	%'@	%(@��@	%*	%7	%+	%1	%,@	%-@	%.@	%/@	%0@F�@	%2@	%3@	%4@	%5@	%6@A@	%8@	%9@	%:@	%;@	%<@	%=@A@	%?	&	%@	%�	%A	%r	%B	%W	%C	%J@	%D	%E@	%F@	%G@	%H@	%I@�@	%K	%Q	%L@	%M@	%N@	%O@	%P@�@	%R@	%S@	%T@	%U@	%V@H:@	%X	%e	%Y	%_	%Z@	%[@	%\@	%]@	%^@Ae@	%`@	%a@	%b@	%c@	%d@�@	%f	%l	%g@	%h@	%i@	%j@	%k@Ae@	%m@	%n@	%o@	%p@	%q@�@	%s	%�	%t	%�	%u	%{	%v@	%w@	%x@	%y@	%z@Ae@	%|@	%}@	%~@	%@	%�@A@	%�	%�	%�@	%�@	%�@	%�@	%�@��@	%�@	%�@	%�@	%�@	%�@A@	%�	%�	%�	%�	%�@	%�@	%�@	%�@	%�@@&@	%�@	%�@	%�@	%�@	%�@Ae@@	%�	%�@	%�@	%�@	%�@	%�@A@	%�	%�	%�	%�	%�	%�	%�	%�	%�@	%�@	%�@	%�@	%�@Ae@	%�@	%�@	%�@	%�@	%�@A@	%�	%�	%�@	%�@	%�@	%�@	%�@A@	%�@	%�@	%�@	%�@	%�@A@	%�	%�	%�	%�	%�@	%�@	%�@	%�@	%�@Ez@	%�@	%�@	%�@	%�@	%�@Ae@	%�	%�	%�@	%�@	%�@	%�@	%�@A@	%�@	%�@	%�@	%�@	%�@A@	%�	%�	%�	%�@	%�	%�@	%�@	%�@	%�@	%�@�'@	%�	%�	%�@	%�@	%�@	%�@	%�@A@	%�@	%�@	%�@	%�@	%�@A@	%�	%�@	%�	%�@	%�@	%�@	%�@	%�@��@	%�	&	%�@	%�@	%�@	%�@	%�@�@	&@	&@	&@	&@	&@Ez@	&	&d	&	&9	&		&$	&
	&	&	&	&@	&
@	&@	&@	&@�@	&@	&@	&@	&@	&@A@	&	&	&@	&@	&@	&@	&@H:@	&@	& @	&!@	&"@	&#@A@	&%	&2	&&	&,	&'@	&(@	&)@	&*@	&+@az@	&-@	&.@	&/@	&0@	&1@A@@	&3	&4@	&5@	&6@	&7@	&8@�@	&:	&O	&;	&B	&<@	&=@	&>@	&?@	&@@	&A@Ez@	&C	&I	&D@	&E@	&F@	&G@	&H@A@	&J@	&K@	&L@	&M@	&N@E@	&P	&]	&Q	&W	&R@	&S@	&T@	&U@	&V@Ba@	&X@	&Y@	&Z@	&[@	&\@H:@	&^@	&_@	&`@	&a@	&b@	&c@A@	&e	&�	&f	&�	&g	&t	&h	&n	&i@	&j@	&k@	&l@	&m@H @	&o@	&p@	&q@	&r@	&s@�@	&u	&{	&v@	&w@	&x@	&y@	&z@Ae@	&|@	&}@	&~@	&@	&�@Ae@	&�	&�@	&�	&�@	&�@	&�@	&�@	&�@�@	&�	&�	&�@	&�@	&�@	&�@	&�@	&�@	&�H�	&�H�	&�H�	&�H�	&�H�	&�H�H�	&�H�	&�	&�H�H�	&�	&�H�	&�H�	&�H�H�	&�H�	&�H�	&�H�	&�	&�H�	&�H�	&�H�H�	&�	&�H�H�	&�	&�H�	&�H�	&�H�H�	&�	&�H�	&�H�	&�H�H�	&�H�@	&�@	&�@	&�@	&�@	&�@�@	&�	'	&�	&�	&�@	&�@	&�@	&�@	&�@	&�@��@	&�	&�	&�@	&�@	&�@	&�@	&�@	&�@	&�H:	&�H:	&�H:	&�H:	&�H:	&�H:	&�	&�	&�H:	&�H:	&�H:	&�	&�	&�	&�	&�	&�	&�	&�	&�H:H:�,H:	&�3H:	&�H:	&�H:�H:	&�	&�	&�	&�	&�H:�,H:	&�	&��,s�H:�,	&�H:	&�H:H:s�	&�H:	&�	&�H:	&�	&�	&��,H:s�H:	&�H:	&�H:s�H:	&�H:	&�H:	&�H:	&�H:	&�H:	&�	&�	&�	&��	&�{�*	&�	&���,i!�s�	&�H:	&�	&�H:���H:	&�@	'@	'@	'@	'@�'@	'	'	'	'	'@	'@	'	@	'
@	'@Ae@	'
@	'@	'@	'@	'@�@	'	'	'@	'@	'@	'@	'@A@	'@	'@	'@	'@	'@A@	' 	(�	'!	(	'"	'�	'#	'n	'$	'S	'%	'2	'&	',	''@	'(@	')@	'*@	'+@�@	'-@	'.@	'/@	'0@	'1@Ae@	'3	'9	'4@	'5@	'6@	'7@	'8@A@	':@	';@	'<@	'=@	'>@	'?@	'@az	'Aaz	'Baz	'Caz	'Daz	'Eaz	'Faz	'Gaz	'Haz	'Iaz	'Jaz	'Kaz	'Laz	'M	'P	'N	'Ov�wt�v�	'Q	'Rv�u�u�az	'T	'a	'U	'[	'V@	'W@	'X@	'Y@	'Z@�@	'\@	']@	'^@	'_@	'`@H:@	'b	'h	'c@	'd@	'e@	'f@	'g@A@	'i@	'j@	'k@	'l@	'm@�@	'o	'�	'p	'}	'q	'w	'r@	's@	't@	'u@	'v@A@	'x@	'y@	'z@	'{@	'|@A@	'~	'�	'@	'�@	'�@	'�@	'�@A@	'�@	'�@	'�@	'�@	'�@�'@	'�	'�	'�	'�	'�@	'�@	'�@	'�@	'�@�~@	'�@	'�@	'�@	'�@	'�@��@	'�	'�	'�@	'�@	'�@	'�@	'�@A@	'�@	'�@	'�@	'�@	'�@A@	'�	'�	'�	'�	'�	'�	'�	'�	'�@	'�@	'�@	'�@	'�@Ae@	'�@	'�@	'�@	'�@	'�@HG@	'�	'�	'�@	'�@	'�@	'�@	'�@��@	'�@	'�@	'�@	'�@	'�@�@	'�@	'�	'�	'�@	'�@	'�@	'�@	'�@�@	'�@	'�@	'�@	'�@	'�@�@	'�	'�	'�	'�	'�	'�	'�@	'�@	'�@	'�@	'�@�@	'�@	'�@	'�@	'�@	'�@A@	'�	'�	'�@	'�@	'�@	'�@	'�@A@	'�@	'�@	'�@	'�@	'�@A@	'�	'�	'�	'�	'�@	'�@	'�@	'�@	'�@Ae@	'�@	'�@	'�@	'�@	'�@E@	'�	(	'�@	'�@	'�@	'�@	(@��@	(@	(@	(@	(@	(@F�H:	(	(k	(		(:	(
	(%	(	(	(	(	(
@	(@	(@	(@	(@@&@	(@	(@	(@	(@	(@A@	(	(	(@	(@	(@	(@	(@A@	( @	(!@	("@	(#@	($@Ae@	(&	(3	('	(-	((@	()@	(*@	(+@	(,@F�@	(.@	(/@	(0@	(1@	(2@�@	(4@	(5@	(6@	(7@	(8@	(9@Ae@	(;	(P	(<	(C@	(=	(>@	(?@	(@@	(A@	(B@�@	(D	(J	(E@	(F@	(G@	(H@	(I@A@	(K@	(L@	(M@	(N@	(O@Ae@	(Q	(^	(R	(X	(S@	(T@	(U@	(V@	(W@�@	(Y@	(Z@	([@	(\@	(]@�@	(_	(e	(`@	(a@	(b@	(c@	(d@A@	(f@	(g@	(h@	(i@	(j@�@	(l	(�	(m	(�	(n	({	(o	(u	(p@	(q@	(r@	(s@	(t@�@	(v@	(w@	(x@	(y@	(z@�@	(|@	(}@	(~@	(@	(�@	(�@Ae@	(�	(�	(�	(�	(�@	(�@	(�@	(�@	(�@Ae@	(�@	(�@	(�@	(�@	(�@E@	(�	(�	(�@	(�@	(�@	(�@	(�@�'@	(�@	(�@	(�@	(�@	(�@E@	(�	(�	(�	(�	(�	(�	(�@	(�@	(�@	(�@	(�@A@	(�@	(�@	(�@	(�@	(�@A@	(�	(�	(�@	(�@	(�@	(�@	(�@
�@	(�@	(�@	(�@	(�@	(�@A@	(�	(�	(�	(�	(�@	(�@	(�@	(�@	(�@Ae@	(�@	(�@	(�@	(�@	(�@@&@	(�	(�	(�@	(�@	(�@	(�@	(�@A@	(�@	(�@	(�@	(�@	(�@A@	(�	)�	(�	)*	(�	)	(�	(�	(�	(�@	(�	(�@	(�@	(�@	(�@	(�@E@	(�@	(�@	(�@	(�@	(�@	(�@A@	(�	(�	(�@	(�@	(�@	(�@	(�@	(�@Ae@	(�	(�	(�@	(�@	(�@	(�@	(�@	(�@F�	(�	(�F�	(�F�F�Gt	(�@	(�@	(�@	(�@	(�@�@	)	)	)	)	)	)		)@	)@	)@	)@	)@A@	)
@	)@	)@	)
@	)@�@	)	)	)@	)@	)@	)@	)@Ae@	)@	)@	)@	)@	)@�@	)@	)	)$	)@	) @	)!@	)"@	)#@@&@	)%@	)&@	)'@	)(@	))@|�@	)+	)b	),	)G	)-	):	).	)4	)/@	)0@	)1@	)2@	)3@Ez@	)5@	)6@	)7@	)8@	)9@A@	);	)A	)<@	)=@	)>@	)?@	)@@Ae@	)B@	)C@	)D@	)E@	)F@Ez@	)H	)U	)I	)O	)J@	)K@	)L@	)M@	)N@�@	)P@	)Q@	)R@	)S@	)T@�@	)V	)\	)W@	)X@	)Y@	)Z@	)[@E@	)]@	)^@	)_@	)`@	)a@�@	)c	)r	)d	)k	)e@	)f@	)g@	)h@	)i@	)j@H @@	)l	)m@	)n@	)o@	)p@	)q@A@	)s	)�	)t	)z	)u@	)v@	)w@	)x@	)y@@&@	){@	)|@	)}@	)~@	)@Ba@	)�	)�	)�@	)�@	)�@	)�@	)�@H:@	)�@	)�@	)�@	)�@	)�@@&@	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�@	)�@	)�@	)�@Ae@	)�@	)�@	)�@	)�@	)�@H:@	)�	)�	)�@	)�@	)�@	)�@	)�@A@	)�@	)�@	)�@	)�@	)�@A@	)�	)�@	)�	)�@	)�@	)�@	)�@	)�@A@	)�	)�	)�@	)�@	)�@	)�@	)�@A@	)�@	)�@	)�@	)�@	)�@@&@	)�	)�	)�	)�	)�	)�	)�@	)�@	)�@	)�@	)�@HG@	)�@	)�@	)�@	)�@	)�@�'@	)�	)�	)�@	)�@	)�@	)�@	)�@A@	)�@	)�@	)�@	)�@	)�@A@	)�	)�	)�	)�	)�@	)�@	)�@	)�@	)�@@&@	)�@	)�@	)�@	)�@	)�@�@	)�	)�	)�@	)�@	)�@	)�@	)�@Ae@	)�@	)�@	)�@	)�@	)�@A@	)�	*$	)�	*
	)�	*	)�	)�	)�@	)�@@&@	)�@	)�@	*@	*@	*@�@@	*	*@	*@	*@	*@	*	@E�@	*	*	*	*	*
@	*@	*@	*@	*@Ae@	*@	*@	*@	*@	*@�@	*	*	*@	*@	*@	*@E�	*@	* @	*!@	*"@	*#@H:@	*%	*:	*&	*3	*'	*-	*(@	*)@	**@	*+@	*,@E�@	*.@	*/@	*0@	*1@	*2@E@	*4@	*5@	*6@	*7@	*8@	*9@�@	*;	*B@	*<	*=@	*>@	*?@	*@@	*A@�@	*C	*I	*D@	*E@	*F@	*G@	*H@A@	*J@	*K@	*L@	*M@	*N@E@	*P	-�	*Q	,/	*R	+^	*S	*�	*T	*�	*U	*o	*V	*c	*W	*]	*X@	*Y@	*Z@	*[@	*\@�@	*^@	*_@	*`@	*a@	*b@F�@	*d	*i	*e@	*f@	*g@	*h@@&@	*j@	*k@	*l@	*m@	*n@�@	*p	*}	*q	*w	*r@	*s@	*t@	*u@	*v@|�@	*x@	*y@	*z@	*{@	*|@�@	*~	*�	*@	*�@	*�@	*�@	*�@Ae@	*�@	*�@	*�@	*�@	*�@�@	*�	*�	*�	*�	*�	*�	*�@	*�@	*�@	*�@	*�@@&@	*�@	*�@	*�@	*�@	*�@��@	*�	*�	*�@	*�@	*�@	*�@	*�@A@	*�@	*�@	*�@	*�@	*�@�@	*�	*�	*�	*�	*�@	*�@	*�@	*�@	*�@�@	*�@	*�@	*�@	*�@	*�@H @	*�	*�	*�@	*�@	*�@	*�@	*�@Ba@	*�@	*�@	*�@	*�@	*�@A@	*�	+'	*�	+	*�	*�	*�	*�	*�@	*�@	*�@	*�@	*�@@&@	*�@	*�@	*�@	*�@	*�@�@	*�	+	*�@	*�@	*�@	*�@	*�@	*�@	*�H:	*�	*�H:	*�H:	*�	*�H:	*�H:	*�H:	*�H:	*�H:	*�H:	*�H:	*�H:	*�H:	*�H:	*�H:	*�H:	*�H:	*�H:	*�H:H:	*�	*�H:H:	*�	*�H:H:	*�	*�H:	*�H:	*�H:H:	*�	*�H:	*�H:H:	*�H:s�H:	*�	*�H:	*�H:	*�H:	*�H:	*�H:	*�H:	+H:	+H:	+H:	+H:	+H:	+H:H:s�	+@	+@	+	@	+
@	+@E@	+
	+	+	+	+@	+@	+@	+@	+@Ae@	+@	+@	+@	+@	+@H @	+	+!	+@	+@	+@	+@	+ @az@	+"@	+#@	+$@	+%@	+&@A@	+(	+C	+)	+6	+*	+0	++@	+,@	+-@	+.@	+/@@&@	+1@	+2@	+3@	+4@	+5@Ae@	+7	+=	+8@	+9@	+:@	+;@	+<@H:@	+>@	+?@	+@@	+A@	+B@�@	+D	+Q	+E	+K	+F@	+G@	+H@	+I@	+J@H�@	+L@	+M@	+N@	+O@	+P@�@	+R	+X	+S@	+T@	+U@	+V@	+W@Ez@	+Y@	+Z@	+[@	+\@	+]@Ae@	+_	+�	+`	+�	+a	+|	+b	+o	+c	+i	+d@	+e@	+f@	+g@	+h@@&@	+j@	+k@	+l@	+m@	+n@@&@	+p	+v	+q@	+r@	+s@	+t@	+u@H:@	+w@	+x@	+y@	+z@	+{@�@	+}	+�	+~	+�	+@	+�@	+�@	+�@	+�@�6@	+�@	+�@	+�@	+�@	+�@H:@	+�	+�	+�@	+�@	+�@	+�@	+�@Ba@	+�@	+�@	+�@	+�@	+�@A@	+�	+�	+�	+�	+�	+�	+�@	+�@	+�@	+�@	+�@Ae@	+�@	+�@	+�@	+�@	+�@�@@	+�	+�@	+�@	+�@	+�@	+�@H:@	+�@	+�	+�	+�@	+�@	+�@	+�@�@	+�@	+�@	+�@	+�@	+�@��@	+�	+�	+�	+�	+�	+�	+�	+�	+�@	+�@	+�@	+�@	+�@��@	+�@	+�@	+�@	+�@	+�@A@@	+�	+�@	+�@	+�@	+�@	+�@E@	+�	+�	+�	+�	+�@	+�@	+�@	+�@	+�@E@	+�@	+�@	+�@	+�@	+�@|�@	+�	+�	+�@	+�@	+�@	+�@	+�@�@	+�@	+�@	+�@	+�@	+�@�@	+�	,	+�	+�	+�	+�	+�@	+�@	+�@	+�@F�@	+�@	+�@	+�@	+�@	+�@az@	+�	,	+�@	+�@	+�@	+�@	,@E@	,@	,@	,@	,@	,@Ba@	,	,	,		,	,
@	,@	,@	,
@	,@A@	,@	,@	,@	,@	,@A@	,@	,@	,@	,@	,@	,@	,@	,F�	,F�	,F�F�	, 	,!F�	,"F�	,#F�	,$F�	,%F�	,&F�	,'F�	,(F�	,)F�	,*	,,F�	,+F�Gt	,-	,.�G���F�	,0	-	,1	,�	,2	,�	,3	,f	,4	,A	,5	,;	,6@	,7@	,8@	,9@	,:@�@	,<@	,=@	,>@	,?@	,@@A@	,B	,H	,C@	,D@	,E@	,F@	,G@
�@	,I@	,J@	,K@	,L@	,M@	,N@	,OF�	,PF�	,QF�	,RF�	,SF�	,TF�	,UF�	,VF�	,WF�	,XF�	,Y	,`	,Z	,]	,[F�i@	,\i@F�i@	,^	,_F�i@F�	,aF�	,bF�	,cF�	,d	,ei@�V�6i@	,g	,|	,h	,n	,i@	,j@	,k@	,l@	,m@Ae@	,o@	,p@	,q@	,r@	,s@	,t@	,uA	,vA	,wA	,xA	,yA	,zA	,{AA�	,}	,�	,~@	,@	,�@	,�@	,�@Ae@	,�@	,�@	,�@	,�@	,�@H:@	,�	,�	,�	,�	,�	,�	,�@	,�@	,�@	,�@	,�@@&@	,�@	,�@	,�@	,�@	,�@Ae@@	,�	,�@	,�@	,�@	,�@	,�@A@	,�	,�	,�	,�	,�@	,�@	,�@	,�@	,�@A@	,�@	,�@	,�@	,�@	,�@A@	,�	,�	,�@	,�@	,�@	,�@	,�@A@	,�@	,�@	,�@	,�@	,�@�@	,�	,�	,�	,�	,�@	,�@	,�@	,�@	,�@	,�@	,�@E@	,�	,�	,�	,�	,�@	,�@	,�@	,�@	,�@E@	,�@	,�@	,�@	,�@	,�@E@	,�	,�	,�@	,�@	,�@	,�@	,�@�@	,�@	,�@	,�@	,�@	,�@A@	,�	,�	,�	,�	,�	,�	,�@	,�@	,�@	,�@	,�@@&@	,�@	,�@	,�@	,�@	,�@E@	,�	,�	,�@	,�@	,�@	,�@	,�@�@	,�@	,�@	,�@	,�@	,�@A@	,�	-		,�	-	,�@	,�@	-@	-@	-@@&@	-@	-@	-@	-@	-@A@	-
	-	-@	-@	-
@	-@	-@A@	-@	-@	-@	-@	-@E@	-	-t	-	-C	-	-4	-	-'	-	-!	-@	-@	-@	-@	- @Ae@	-"@	-#@	-$@	-%@	-&@Ae@	-(	-.	-)@	-*@	-+@	-,@	--@A@	-/@	-0@	-1@	-2@	-3@E@	-5	-<	-6@	-7@	-8@	-9@	-:@	-;@Ae@	-=@	->@	-?@	-@@	-A@	-B@A@	-D	-_	-E	-R	-F	-L	-G@	-H@	-I@	-J@	-K@�@	-M@	-N@	-O@	-P@	-Q@A@	-S	-Y	-T@	-U@	-V@	-W@	-X@H:@	-Z@	-[@	-\@	-]@	-^@E@	-`	-m	-a	-g	-b@	-c@	-d@	-e@	-f@F�@	-h@	-i@	-j@	-k@	-l@A@@	-n	-o@	-p@	-q@	-r@	-s@�@	-u	-�	-v	-�	-w	-�	-x	-~	-y@	-z@	-{@	-|@	-}@@&@	-@	-�@	-�@	-�@	-�@E@	-�	-�	-�@	-�@	-�@	-�@	-�@H:@	-�@	-�@	-�@	-�@	-�@A@	-�	-�@	-�	-�@	-�@	-�@	-�@	-�@H�@@	-�	-�@	-�@	-�@	-�@	-�@�@	-�	-�	-�	-�	-�	-�	-�@	-�@	-�@	-�@	-�@E�@	-�@	-�@	-�@	-�@	-�@A@@	-�	-�@	-�@	-�@	-�@	-�@A@	-�	-�	-�	-�	-�@	-�@	-�@	-�@	-�@E@	-�@	-�@	-�@	-�@	-�@A@	-�	-�	-�@	-�@	-�@	-�@	-�@Ae@	-�@	-�@	-�@	-�@	-�@A@	-�	/k	-�	.�	-�	.S	-�	.	-�	-�	-�	-�	-�	-�	-�@	-�@	-�@	-�@	-�@�'@	-�@	-�@	-�@	-�@	-�@A@	-�	-�	-�@	-�@	-�@	-�@	-�@�g@	-�@	-�@	-�@	-�@	-�@A@	-�	-�	-�	-�	-�@	-�@	-�@	-�@	-�@�@	-�@	-�@	-�@	-�@	-�@A@	.	.	.@	.@	.@	.@	.@�@	.@	.@	.	@	.
@	.@�@	.
	.(	.	.	.	.	.@	.@	.@	.@	.@@&@	.@	.@	.@	.@	.@�@	.	."	.@	.@	.@	. @	.!@E@	.#@	.$@	.%@	.&@	.'@A@	.)	.6	.*	.0	.+@	.,@	.-@	..@	./@�@	.1@	.2@	.3@	.4@	.5@F�@	.7	.M	.8@	.9@	.:@	.;@	.<@	.=@	.>az	.?az	.@az	.Aaz	.Baz	.Caz	.Daz	.Eaz	.Faz	.Gaz	.Haz	.Iaz	.Jaz	.Kaz	.Lazwaz	.N@	.O@	.P@	.Q@	.R@A@	.T	.�	.U	.j	.V	.]	.W@	.X@	.Y@	.Z@	.[@	.\@Ae@	.^	.d	._@	.`@	.a@	.b@	.c@A@	.e@	.f@	.g@	.h@	.i@�@	.k	.x	.l	.r	.m@	.n@	.o@	.p@	.q@Ae@	.s@	.t@	.u@	.v@	.w@A@	.y	.	.z@	.{@	.|@	.}@	.~@s�@	.�@	.�@	.�@	.�@	.�@E@	.�	.�	.�	.�	.�	.�	.�@	.�@	.�@	.�@	.�@F�@	.�@	.�@	.�@	.�@	.�@Ae@	.�	.�	.�@	.�@	.�@	.�@	.�@A@	.�@	.�@	.�@	.�@	.�@�@	.�	.�@	.�	.�@	.�@	.�@	.�@	.�@A@	.�	.�	.�@	.�@	.�@	.�@	.�@A@	.�@	.�@	.�@	.�@	.�@A@	.�	/	.�	.�	.�	.�	.�	.�	.�	.�	.�@	.�@	.�@	.�@	.�@@&@	.�@	.�@	.�@	.�@	.�@�@	.�	.�	.�@	.�@	.�@	.�@	.�@A@	.�@	.�@	.�@	.�@	.�@Ae@	.�	.�	.�	.�	.�@	.�@	.�@	.�@	.�@Ae@	.�@	.�@	.�@	.�@	.�@��@	.�@	.�@	.�@	.�@	.�@	.�@A@	.�	.�	.�	.�@	.�	.�@	.�@	.�@	.�@	.�@�@	.�	.�	.�@	.�@	.�@	.�@	.�@E@	.�@	.�@	.�@	.�@	.�@Ae@	/	/
	/	/	/@	/@	/@	/@	/@Ae@	/@	/	@	/
@	/@	/@|�@	/	/	/@	/@	/@	/@	/@A@	/@	/@	/@	/@	/@�@	/	/F	/	/1	/	/$	/@	/@	/ @	/!@	/"@	/#@Ae@	/%	/+	/&@	/'@	/(@	/)@	/*@A@	/,@	/-@	/.@	//@	/0@Ae@	/2	/9@	/3	/4@	/5@	/6@	/7@	/8@�'@	/:	/@	/;@	/<@	/=@	/>@	/?@A@	/A@	/B@	/C@	/D@	/E@�'@	/G	/\	/H	/O	/I@	/J@	/K@	/L@	/M@	/N@Ae@	/P	/V	/Q@	/R@	/S@	/T@	/U@�@	/W@	/X@	/Y@	/Z@	/[@Ez@	/]	/dE	/^	/_@	/`@	/a@	/b@	/c@A@	/e@	/f@	/g@	/h@	/i@	/j@A@	/l	0*	/m	/�	/n	/�	/o	/�	/p	/}	/q	/w	/r@	/s@	/t@	/u@	/v@A@	/x@	/y@	/z@	/{@	/|@�@	/~	/�	/@	/�@	/�@	/�@	/�@�@	/�@	/�@	/�@	/�@	/�@F�@	/�	/�	/�	/�	/�@	/�@	/�@	/�@	/�@E@	/�@	/�@	/�@	/�@	/�@A@	/�	/�	/�@	/�@	/�@	/�@	/�@H:@	/�@	/�@	/�@	/�@	/�@�@	/�	/�	/�	/�	/�	/�	/�@	/�@	/�@	/�@	/�@E@	/�@	/�@	/�@	/�@	/�@Ae@	/�	/�	/�@	/�@	/�@	/�@	/�@Ae@	/�@	/�@	/�@	/�@	/�@@&@	/�@	/�@	/�@	/�@	/�@	/�@	/�@��@	/�	/�	/�	/�	/�	/�	/�@	/�@	/�@	/�@	/�@	/�@E�@	/�	/�	/�@	/�@	/�@	/�@	/�@A@	/�@	/�@	/�@	/�@	/�@��@	/�	/�	/�	/�	/�@	/�@	/�@	/�@	/�@�@	/�@	/�@	/�@	/�@	/�@A@	/�	/�	/�@	/�@	/�@	/�@	/�@A@	/�@	/�@	/�@	/�@	/�@Ez@	/�	0	/�	0	/�@	/�@	0@	0@	0@	0@��@@	0	0@	0@	0@	0	@	0
@��@	0	0	0
	0	0@	0@	0@	0@	0@Ae@	0@	0@	0@	0@	0@	0@	0A	0A	0AAC�	0	0$	0@	0 @	0!@	0"@	0#@A@	0%@	0&@	0'@	0(@	0)@�'@	0+	0�	0,	0]	0-	0B	0.	0;	0/	05	00@	01@	02@	03@	04@H�@	06@	07@	08@	09@	0:@�@@	0<	0=@	0>@	0?@	0@@	0A@A@	0C	0P	0D	0J	0E@	0F@	0G@	0H@	0I@��@	0K@	0L@	0M@	0N@	0O@�@	0Q	0W	0R@	0S@	0T@	0U@	0V@A@	0X@	0Y@	0Z@	0[@	0\@A@	0^	0y	0_	0l	0`	0f	0a@	0b@	0c@	0d@	0e@Ae@	0g@	0h@	0i@	0j@	0k@F�@	0m	0s	0n@	0o@	0p@	0q@	0r@Ae@	0t@	0u@	0v@	0w@	0x@A@	0z	0�	0{@	0|@	0}@	0~@	0@	0�@az@	0�	0�	0�@	0�@	0�@	0�@	0�@E@	0�@	0�@	0�@	0�@	0�@E@	0�	0�	0�	0�	0�	0�	0�	0�	0�@	0�@	0�@	0�@	0�@�@	0�@	0�@	0�@	0�@	0�@az@	0�	0�	0�@	0�@	0�@	0�@	0�@Ba@	0�@	0�@	0�@	0�@	0�@A@	0�	0�	0�	0�	0�@	0�@	0�@	0�@	0�@�'@	0�@	0�@	0�@	0�@	0�@�@@	0�	0�@	0�@	0�@	0�@	0�@�@	0�	0�	0�	0�	0�@	0�@	0�@	0�@	0�@	0�@HG@	0�	0�	0�@	0�@	0�@	0�@	0�@Ez@	0�@	0�@	0�@	0�@	0�@�@	0�	0�	0�	0�	0�@	0�@	0�@	0�@	0�@��@	0�@	0�@	0�@	0�@	0�@A@	0�	0�	0�@	0�@	0�@	0�@	0�@Ae@	0�@	0�@	0�@	0�@	0�@A@	0�	A	0�	:	0�	63	0�	4�	0�	3�	0�	3E	0�	1	0�	1	0�	1	0�@	0�@	0�@	0�@	0�@E@	1@	1@	1@	1@	1@	1@�@	1	1	1		1	1
@	1@	1@	1
@	1@F�@	1@	1@	1@	1@	1@�@	1@	1@	1@	1@	1@	1@Ae@	1	12	1	1+	1	1%	1 @	1!@	1"@	1#@	1$@�@	1&@	1'@	1(@	1)@	1*@HG@@	1,	1-@	1.@	1/@	10@	11@Ae@	13	3>	14	38	15@	16@	17@	18@	19@	1:@	1;F�	1<	3"	1=F�	1>	2~	1?	1�	1@	1}	1A	1Z	1BF�	1CF�	1DF�	1EF�	1FF�	1GF�	1HF�	1IF�	1JF�F�	1K	1LF�	1MF�	1NF�	1OF�	1PF�F�	1Q	1RF�	1SF�	1TF�	1UF�F�	1V	1WF�	1XF�	1YF�G�F�	1[F�	1\F�	1]F�F�	1^	1_F�	1`F�	1aF�	1bF�	1cF�	1dF�	1eF�	1fF�	1gF�	1h	1{F�	1iF�	1j	1k	1s	1lF�	1mF�	1nF�	1oF�	1pF�	1qF�	1rF�GtF�	1tF�	1uF�	1vF�	1wF�	1xF�	1yF�	1zF�GtF�	1|F�G�F�	1~	1�	1F�	1�F�	1�F�	1�	1�	1�	1�F�	1�	1�F�	1�F�GtF�	1�F�	1�F�	1�F�	1�F�	1�F�	1�F�	1�F�	1�F�	1�F�	1�F�	1�G�F�G�	1�F�	1�F�	1�F�	1�	1�	1�	1�	1�F�	1�F�	1�F�	1�F�	1�F�	1�F�G	1�GF�	1�F�	1�F�	1�F�	1�F�	1�F�	1�F�	1�	1�F�GtGtF�	1�F�	1�F�	1�F�	1�F�	1�F�	1�F�	1�F�	1�	1�F�G�G�F�F�	1�	1�F�	1�F�	1�F�F�	1�	1�	1�F�	1�	1�	1�F�	1�	1�F�	1�F�	1�F�	1�F�	1�F�	1�F�	1�F�F��	1�	1�	1�F�	1�F�	1�F�	1�F�	1�F�	1�F�	1�F�F��	1�F�	1�F�	1�F�	1�F�	1�F�	1�F�	1�F�F��	1�F�	1�F�	1�	1�	1�F�	1�F�	1�F�	1�F�	1�F�	1�F�	1�	1�F���F�	1�F�	1�F�	1�F�	1�F�	1�F�	1�F�	1�F�F���	1�F�	1�	2F�	1�	1�	2F�	1�F�	1�	1�F�	1�F�	1�F�	1�F�	1�F�	1�F�	1�F�	1�F�	1�F�	1�F�	1�F�	1�F�	1�F�	1�F�	1�F�	1�F�	2F�	2F�	2F�G�F�F�	2	2F�	2F�	2F�	2F�	2	F�	2
F�	2F�	2F�	2
F�F�	2	2F�	2	2	2G�F�Gt	2F�F��	2F�	2F�	2	26	2	2,	2	2$	2	2F�	2	2F�Gt�	2	2!	2	2 �F�GtF�	2"	2#G�F�G�F�	2%	2)F�	2&	2'	2(G�F�G�F�	2*F�	2+F�GtF�	2-	21	2.F�	2/F�	20F�GF�	22F�	23F�	24	25GF�F��	27	2c	28	2M	29F�	2:F�	2;F�F�	2<	2=F�	2>F�	2?F�	2@F�	2A	2G	2B	2E	2C	2DG�F�G�GtF�	2F��Gt	2H	2K	2I	2JF�GtF�G	2LF�F�Gt	2NF�	2O	2Y	2PF�	2QF�	2RF�	2SF�	2TF�	2UF�	2VF�	2WF�	2XF�F��	2ZF�	2[�	2\F�	2]F�	2^F�	2_F�	2`F�	2aF�	2bF��F�F�	2d	2eF�	2fF�	2g	2u	2hF�	2i	2o	2jF�	2kF�	2lF�F�	2m	2nF��F�	2pF�	2qF�F�	2r	2sF�F�	2t�F�F�	2v	2wF�	2xF�	2yF�	2zF�	2{F�F�	2|F�	2}F���	2	2�	2�	2�F�	2�	2�	2�	2�F�	2�F�	2�F�	2�F�	2�F�	2�F�	2�	2�	2�F�	2�F�	2�F�	2�F�	2�F�	2�F�	2�F�	2�F�	2�F�	2�F�	2�F�	2�F�F�	2�F�	2�	2�F�	2�F�GtF�	2�F�	2�F�	2�F�	2�F�	2�F�	2�F�	2�	2�	2�	2�F�	2�	2�F�	2�F�	2�F�	2�F�	2�F�F�	2�	2�F�G�F�	2�F�	2�F�	2�F�	2�F�	2�F�	2�F�	2�F�	2�	2�F�GtF�G�F�	2�F��	2�	2�	2�	2�F�	2�	2�F�	2�F�	2�F�	2�F�G�F�F�	2�	2�F�	2�F�	2�	2�	2�	2�G�GtGG�	2�	2���F�Gt�F�	2�	2�F�	2�	2�	2�F�	2�	2��;	2�G�F�	2�F��F�	2�F�	2�F�F�	2�G�F�	2�F�F�	2�	2�F�	2�F�	2�F�	2�F�	2�F�	2�F�	2�	2��G�G�F�F�	2�	2�	3
	2�	2�	2�	2�	2�F�Gt	2�	2�	2�	2�	2�	2�F��F�	2�F�GF�	2�	2�	2�F��F�	2�F�F�	2�F���F�	2�F�	2�F�	2�	2�Gt	2�Gt	2�	2�GtGF�Gt	2�	3	2�F�G�	2�G�	2�	3F�G�	3G�	3G�F�F�	3F�	3F�	3	3G�	3G�	3	G�G�G�	3	3	3	3	3
F��	3	3F�	3F��	3�F�F�	3F�	3F��	3	3F�	3	3F�	3F�	3F�	3F���F�F�	3F�	3F�	3	3 F�	3!F���F�F�	3#	3$F�	3%F�	3&F�	3'�	3(�	3)�	3*�	3+�	3,�	3-	31�	3.	3/	30��
G��	32	35	33	34G��GGt	36	37Gt�G��	39@	3:@	3;@	3<@	3=@az@	3?@	3@@	3A@	3B@	3C@	3D@H:@	3F	3v	3G	3a	3H	3T	3I	3N	3J@	3K@	3L@	3M@@&@	3O@	3P@	3Q@	3R@	3S@�'@	3U	3[	3V@	3W@	3X@	3Y@	3Z@Ae@	3\@	3]@	3^@	3_@	3`@HG@	3b	3i@	3c	3d@	3e@	3f@	3g@	3h@Ae@	3j	3p	3k@	3l@	3m@	3n@	3o@�Y@	3q@	3r@	3s@	3t@	3u@HG@	3w	3�	3x	3�	3y	3	3z@	3{@	3|@	3}@	3~@A@	3�@	3�@	3�@	3�@	3�@Ae@	3�	3�	3�@	3�@	3�@	3�@	3�@�@	3�@	3�@	3�@	3�@	3�@�@	3�	3�	3�	3�	3�@	3�@	3�@	3�@	3�@A@	3�@	3�@	3�@	3�@	3�@F�@	3�	3�	3�@	3�@	3�@	3�@	3�@Ae@	3�@	3�@	3�@	3�@	3�@A@	3�	4	3�	3�	3�	3�	3�	3�	3�@	3�@	3�@	3�@	3�@A@	3�	3�	3�@	3�@	3�@	3�@	3�@Ae@	3�@	3�@	3�@	3�@	3�@HG@	3�	3�	3�	3�	3�@	3�@	3�@	3�@	3�@Ae@	3�@	3�@	3�@	3�@	3�@F�@	3�	3�	3�@	3�@	3�@	3�@	3�@A@	3�@	3�@	3�@	3�@	3�@Ae@	3�	3�	3�	3�	3�	3�	3�@	3�@	3�@	3�@	3�@��@	3�@	3�@	3�@	3�@	3�@��@	3�	3�	3�@	3�@	3�@	3�@	3�@A@	3�@	3�@	3�@	3�@	3�@H:@	3�	4		3�	4	3�@	3�@	4@	4@	4@F�@	4@	4@	4@	4@	4@Ez@	4
	4	4@	4@	4
@	4@	4@A@	4@	4@	4@	4@	4@H @	4	4N	4	43	4	4&	4	4 	4@	4@	4@	4@	4@E@	4!@	4"@	4#@	4$@	4%@H:@	4'	4-	4(@	4)@	4*@	4+@	4,@A@	4.@	4/@	40@	41@	42@H:@	44	4A	45	4;	46@	47@	48@	49@	4:@Ae@	4<@	4=@	4>@	4?@	4@@A@	4B	4H	4C@	4D@	4E@	4F@	4G@A@	4I@	4J@	4K@	4L@	4M@�'@	4O	4j	4P	4]	4Q	4W	4R@	4S@	4T@	4U@	4V@��@	4X@	4Y@	4Z@	4[@	4\@Ae@	4^	4d	4_@	4`@	4a@	4b@	4c@A@	4e@	4f@	4g@	4h@	4i@E@	4k	4x	4l	4r	4m@	4n@	4o@	4p@	4q@A@	4s@	4t@	4u@	4v@	4w@A@	4y	4	4z@	4{@	4|@	4}@	4~@A@	4�@	4�@	4�@	4�@	4�@A@	4�	5K	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�@	4�@	4�@	4�@	4�@H:@	4�@	4�@	4�@	4�@	4�@H:@	4�	4�	4�@	4�@	4�@	4�@	4�@E@	4�@	4�@	4�@	4�@	4�@�@	4�	4�	4�	4�	4�@	4�@	4�@	4�@	4�@Ae@	4�@	4�@	4�@	4�@	4�@E@	4�	4�	4�@	4�@	4�@	4�@	4�@A@	4�@	4�@	4�@	4�@	4�@H @	4�	4�	4�	4�@	4�	4�@	4�@	4�@	4�@	4�@@&@	4�@	4�@	4�@	4�@	4�@	4�@Ae@	4�	4�	4�	4�	4�@	4�@	4�@	4�@	4�@Ez@	4�@	4�@	4�@	4�@	4�@A@	4�@	4�@	4�@	4�@	4�@	4�@Ez@	4�	5	4�	5	4�	4�	4�	4�	4�@	4�@	4�@	4�@	4�@Ae@	4�@	4�@	4�@	4�@	4�@A@	4�	4�	4�@	4�@	4�@	4�@	4�@	4�@@	4�	4�@	4�@@
�	5@	5@	5@	5@	5@Ae@	5	5
	5@	5@	5	@	5
@	5@	5@��@	5	5	5@	5@	5@	5@	5@A@	5@	5@	5@	5@	5@HG@	5	50	5	5#	5@	5@	5@	5 @	5!@	5"@|�@	5$	5*	5%@	5&@	5'@	5(@	5)@Ae@	5+@	5,@	5-@	5.@	5/@A@	51	5>	52	58	53@	54@	55@	56@	57@Ae@	59@	5:@	5;@	5<@	5=@�~@	5?	5E	5@@	5A@	5B@	5C@	5D@�@	5F@	5G@	5H@	5I@	5J@A@	5L	5�	5M	5�	5N	5�	5O	5\	5P	5V	5Q@	5R@	5S@	5T@	5U@@&@	5W@	5X@	5Y@	5Z@	5[@Ez@	5]	5c	5^@	5_@	5`@	5a@	5b@�@	5d@	5e@	5f@	5g@	5h@	5i@	5jaz	5kaz	5laz	5m	5z	5naz	5oaz	5paz	5qaz	5raz	5saz	5taz	5uaz	5vaz	5w	5y	5xwazwwaz	5{az	5|az	5}az	5~az	5az	5�az	5�az	5�az	5�azv�az	5�	5�	5�	5�	5�@	5�@	5�@	5�@	5�@Ae@	5�@	5�@	5�@	5�@	5�@�@	5�	5�	5�@	5�@	5�@	5�@	5�@A@	5�@	5�@	5�@	5�@	5�@F�@	5�	5�	5�	5�	5�	5�	5�@	5�@	5�@	5�@	5�@�@	5�@	5�@	5�@	5�@	5�@A@	5�	5�	5�@	5�@	5�@	5�@	5�@F�@	5�@	5�@	5�@	5�@	5�@H:@	5�	5�@	5�	5�@	5�@	5�@	5�@	5�@�@	5�	5�	5�@	5�@	5�@	5�@	5�@A@	5�@	5�@	5�@	5�@	5�@�'@	5�	6	5�	5�	5�	5�	5�@	5�@	5�@	5�@	5�@	5�@H:@	5�	5�	5�@	5�@	5�@	5�@	5�@A@	5�@	5�@	5�@	5�@	5�@Ez@	5�	5�	5�	5�	5�@	5�@	5�@	5�@	5�@E@	5�@	5�@	5�@	5�@	5�@H:@	5�	5�	5�@	5�@	5�@	5�@	5�@A@	5�@	5�@	5�@	6@	6@A@	6	6	6	6	6	6	6@	6@	6@	6	@	6
@�z@	6@	6
@	6@	6@	6@�@	6	6	6@	6@	6@	6@	6@A@	6@	6@	6@	6@	6@A@	6	6&	6 @	6!@	6"@	6#@	6$@	6%@@&@	6'	6-	6(@	6)@	6*@	6+@	6,@A@	6.@	6/@	60@	61@	62@H:@	64	8s	65	7Z	66	6�	67	6n	68	6S	69	6F	6:	6@	6;@	6<@	6=@	6>@	6?@@&@	6A@	6B@	6C@	6D@	6E@A@	6G	6M	6H@	6I@	6J@	6K@	6L@A@	6N@	6O@	6P@	6Q@	6R@|@	6T	6a	6U	6[	6V@	6W@	6X@	6Y@	6Z@��@	6\@	6]@	6^@	6_@	6`@�z@	6b	6h	6c@	6d@	6e@	6f@	6g@A@	6i@	6j@	6k@	6l@	6m@�@	6o	6�	6p	6}	6q	6w	6r@	6s@	6t@	6u@	6v@E@	6x@	6y@	6z@	6{@	6|@A@	6~	6�	6@	6�@	6�@	6�@	6�@A@	6�@	6�@	6�@	6�@	6�@H:@	6�	6�	6�	6�	6�@	6�@	6�@	6�@	6�@Ba@	6�@	6�@	6�@	6�@	6�@F�@	6�	6�	6�@	6�@	6�@	6�@	6�@A@	6�@	6�@	6�@	6�@	6�@E@	6�	7#	6�	6�	6�	6�	6�	6�	6�@	6�@	6�@	6�@	6�@H:@	6�@	6�@	6�@	6�@	6�@A@@	6�	6�@	6�@	6�@	6�@	6�@A@	6�	7	6�	7	6�@	6�@	6�@	6�@	6�@	6�@	6�	6�	6�	6�	6�az	6�az	6�az	6�	6�az	6�az	6�	6�az	6�az	6�az	6�az	6�az	6�az	6�azt�az	6�az	6�az	6�az	6�az	6�az	6�az	6�az	6�az	6�azv�az	6�az	6�az	6�az	6�az	6�az	6�az	6�az	6�az	6�az	6�az	6�az	6�az	6�az	6�az	6�az	6�az	6�az	6�az	6�az	6�az	6�az	6�az	6�az	6�az	6�az	6�az	6�az	6�az	6�azu�az	6�az	6�az	6�	7	7az	7az	7az	7az	7az	7az	7az	7az	7az	7	az	7
azwaz	7az	7
az	7az	7azmaz	7@	7@	7@	7@	7@Ez@	7	7	7@	7@	7@	7@	7@A@	7@	7@	7 @	7!@	7"@A@	7$	7?	7%	72	7&	7,	7'@	7(@	7)@	7*@	7+@�@	7-@	7.@	7/@	70@	71@H @	73	79	74@	75@	76@	77@	78@A@	7:@	7;@	7<@	7=@	7>@A@	7@	7M	7A	7G	7B@	7C@	7D@	7E@	7F@�@	7H@	7I@	7J@	7K@	7L@A@	7N	7T	7O@	7P@	7Q@	7R@	7S@A@	7U@	7V@	7W@	7X@	7Y@H:@	7[	7�	7\	7�	7]	7w	7^	7j	7_	7d	7`@	7a@	7b@	7c@Ba@	7e@	7f@	7g@	7h@	7i@|�@	7k	7q	7l@	7m@	7n@	7o@	7p@@&@	7r@	7s@	7t@	7u@	7v@A@	7x	7�	7y	7	7z@	7{@	7|@	7}@	7~@E@	7�@	7�@	7�@	7�@	7�@A@	7�	7�	7�@	7�@	7�@	7�@	7�@E@	7�@	7�@	7�@	7�@	7�@F�@	7�	7�	7�	7�	7�	7�	7�@	7�@	7�@	7�@	7�@A@	7�@	7�@	7�@	7�@	7�@A@	7�	7�	7�@	7�@	7�@	7�@	7�@Ae@	7�@	7�@	7�@	7�@	7�@A@	7�	7�@	7�	7�@	7�@	7�@	7�@	7�@A@	7�	7�	7�@	7�@	7�@	7�@	7�@Ez@	7�@	7�@	7�@	7�@	7�@A@	7�	8<	7�	8'	7�	8		7�	8	7�@	7�@	7�@	7�@	7�@	7�@	7�	7�	7�H:	7�H:	7�H:	7�H:	7�H:	7�H:	7�H:	7�H:	7�H:	7�H:	7�H:	7�	7�	7�	7�H:	7�H:�	7�	7��H:H:s�	7�H:	7�	7�s�s�H:	7�	7�	7�	7�H:	7�	7�H:	7�H:	7�H:	7�H:	7�H:	7�H:	7�H:	7�H:	7�H:	7�H:H:	7�s�H:�	7�	7�s�H:�	7�H:	7�H:	7�H:	7�H:	7�H:	7�H:	7�H:	7�H:	7�H:	8	8H:H:	8H:s�	8@	8@	8@	8@	8@�@	8
	8!	8@	8@	8
@	8@	8@	8H:	8H:	8H:	8H:	8H:	8H:	8H:	8H:	8H:	8H:	8H:	8H:	8H:	8H:	8H:	8	8 H:s��H:	8"@	8#@	8$@	8%@	8&@A@	8(	85	8)	8/	8*@	8+@	8,@	8-@	8.@@&@	80@	81@	82@	83@	84@�@@	86	87@	88@	89@	8:@	8;@@&@	8=	8X	8>	8K	8?	8E	8@@	8A@	8B@	8C@	8D@�@	8F@	8G@	8H@	8I@	8J@�@	8L	8R	8M@	8N@	8O@	8P@	8Q@Ae@	8S@	8T@	8U@	8V@	8W@�@	8Y	8f	8Z	8`	8[@	8\@	8]@	8^@	8_@��@	8a@	8b@	8c@	8d@	8e@A@	8g	8m	8h@	8i@	8j@	8k@	8l@Ae@	8n@	8o@	8p@	8q@	8r@A@	8t	9G	8u	8�	8v	8�	8w	8�	8x	8@	8y	8z@	8{@	8|@	8}@	8~@A@@	8�	8�@	8�@	8�@	8�@	8�@A@	8�	8�	8�	8�	8�@	8�@	8�@	8�@	8�@F�@	8�@	8�@	8�@	8�@	8�@A@	8�	8�	8�@	8�@	8�@	8�@	8�@Ae@	8�@	8�@	8�@	8�@	8�@�@	8�	8�	8�	8�	8�	8�	8�@	8�@	8�@	8�@	8�@@&@	8�@	8�@	8�@	8�@	8�@��@	8�	8�	8�@	8�@	8�@	8�@	8�@A@	8�@	8�@	8�@	8�@	8�@A@	8�	8�	8�	8�	8�@	8�@	8�@	8�@	8�@N@	8�@	8�@	8�@	8�@	8�@�@	8�	8�	8�@	8�@	8�@	8�@	8�@A@	8�@	8�@	8�@	8�@	8�@�@	8�	9	8�	8�	8�	8�	8�	8�	8�@	8�@	8�@	8�@	8�@Ae@	8�@	8�@	8�@	8�@	8�@�@	8�	8�	8�@	8�@	8�@	8�@	8�@A@	8�@	8�@	8�@	8�@	8�@�@	8�	9	8�	8�	8�@	8�@	8�@	8�@	8�@Ae@	8�@	8�@	9@	9@	9@�@	9	9
	9@	9@	9@	9@	9	@A@	9@	9@	9
@	9@	9@�@	9	9,	9	9	9	9	9@	9@	9@	9@	9@Ae@	9@	9@	9@	9@	9@A@	9 	9&	9!@	9"@	9#@	9$@	9%@A@	9'@	9(@	9)@	9*@	9+@A@	9-	9:	9.	94	9/@	90@	91@	92@	93@E�@	95@	96@	97@	98@	99@A@	9;	9A	9<@	9=@	9>@	9?@	9@@A@	9B@	9C@	9D@	9E@	9F@A@	9H	9�	9I	9�	9J	9e	9K	9X	9L	9R	9M@	9N@	9O@	9P@	9Q@�~@	9S@	9T@	9U@	9V@	9W@A@	9Y	9_	9Z@	9[@	9\@	9]@	9^@A@	9`@	9a@	9b@	9c@	9d@A@	9f	9s	9g	9m	9h@	9i@	9j@	9k@	9l@��@	9n@	9o@	9p@	9q@	9r@A@	9t	9z	9u@	9v@	9w@	9x@	9y@A@	9{@	9|@	9}@	9~@	9@A@	9�	9�	9�@	9�	9�	9�@	9�@	9�@	9�@	9�@@&@	9�@	9�@	9�@	9�@	9�@A@	9�	9�	9�	9�	9�@	9�@	9�@	9�@	9�@Ae@	9�@	9�@	9�@	9�@	9�@A@	9�	9�	9�@	9�@	9�@	9�@	9�@A@	9�@	9�@	9�@	9�@	9�@A@	9�	9�	9�	9�	9�	9�	9�	9�	9�@	9�@	9�@	9�@	9�@Ae@	9�@	9�@	9�@	9�@	9�@A@	9�	9�	9�@	9�@	9�@	9�@	9�@A@	9�@	9�@	9�@	9�@	9�@A@	9�	9�	9�	9�	9�@	9�@	9�@	9�@	9�@E@	9�@	9�@	9�@	9�@	9�@A@	9�	9�	9�@	9�@	9�@	9�@	9�@A@	9�@	9�@	9�@	9�@	9�@A@	9�	9�	9�	9�	9�	9�	9�@	9�@	9�@	9�@	9�@E�@	9�@	9�@	9�@	9�@	9�@�g@	9�	9�	9�@	9�@	9�@	9�@	9�@A@	9�@	9�@	9�@	9�@	9�@A@@	9�	:	:	:@	:@	:@	:@	:@A@	:@	:@	:	@	:
@	:@�@	:
	=E	:	;�	:	:�	:	:l	:	:A	:	:,	:	:	:	:	:@	:@	:@	:@�@	:@	:@	:@	:@	:@@&@	: 	:&	:!@	:"@	:#@	:$@	:%@A@	:'@	:(@	:)@	:*@	:+@��@	:-	:4	:.@	:/@	:0@	:1@	:2@	:3@�@	:5	:;	:6@	:7@	:8@	:9@	::@A@	:<@	:=@	:>@	:?@	:@@�@	:B	:Q	:C	:J@	:D	:E@	:F@	:G@	:H@	:I@A@	:K@	:L@	:M@	:N@	:O@	:P@A@	:R	:_	:S	:Y	:T@	:U@	:V@	:W@	:X@A@	:Z@	:[@	:\@	:]@	:^@�@	:`	:f	:a@	:b@	:c@	:d@	:e@A@	:g@	:h@	:i@	:j@	:k@H:@	:m	:�	:n	:�	:o	:|	:p	:v	:q@	:r@	:s@	:t@	:u@@&@	:w@	:x@	:y@	:z@	:{@@&@@	:}	:~@	:@	:�@	:�@	:�@E@	:�	:�	:�	:�	:�@	:�@	:�@	:�@	:�@�@	:�@	:�@	:�@	:�@	:�@F�@	:�	:�	:�@	:�@	:�@	:�@	:�@A@	:�@	:�@	:�@	:�@	:�@|�@	:�	:�	:�	:�	:�	:�	:�@	:�@	:�@	:�@	:�@�S@	:�@	:�@	:�@	:�@	:�@HG@	:�	:�	:�@	:�@	:�@	:�@	:�@A@	:�@	:�@	:�@	:�@	:�@�@	:�	:�	:�@	:�@	:�@	:�@	:�@	:�@F�@	:�@	:�@	:�@	:�@	:�@	:�@A@	:�	;3	:�	:�	:�	:�	:�	:�	:�	:�	:�@	:�@	:�@	:�@	:�@Ae@	:�@	:�@	:�@	:�@	:�@A@	:�@	:�@	:�@	:�@	:�@	:�@A@	:�	:�	:�	:�	:�@	:�@	:�@	:�@	:�@H:@	:�@	:�@	:�@	:�@	:�@E@	:�	:�	:�@	:�@	:�@	:�@	:�@A@	:�@	:�@	:�@	:�@	:�@E@	:�	;	:�	;	:�	;	;@	;@	;@	;@	;@H:@	;@	;@	;@	;	@	;
@A@	;	;	;
@	;@	;@	;@	;@A@	;@	;@	;@	;@	;@Ez@	;	;&	;	; 	;@	;@	;@	;@	;@z�@	;!@	;"@	;#@	;$@	;%@A@	;'	;-	;(@	;)@	;*@	;+@	;,@A@	;.@	;/@	;0@	;1@	;2@Ae@	;4	;_	;5	;J	;6	;=	;7@	;8@	;9@	;:@	;;@	;<@Ba@	;>	;D	;?@	;@@	;A@	;B@	;C@A@	;E@	;F@	;G@	;H@	;I@A@	;K	;R	;L@	;M@	;N@	;O@	;P@	;Q@��@	;S	;Y	;T@	;U@	;V@	;W@	;X@A@	;Z@	;[@	;\@	;]@	;^@Ae@	;`	;u	;a	;h@	;b	;c@	;d@	;e@	;f@	;g@H:@	;i	;o	;j@	;k@	;l@	;m@	;n@Ae@	;p@	;q@	;r@	;s@	;t@A@	;v	;�	;w	;�	;x@	;y@	;z@	;{@	;|@	;}@	;~����	;��	;����	;�@	;�@	;�@	;�@	;�@H:@	;�	;�	;�@	;�@	;�@	;�@	;�@Ae@	;�@	;�@	;�@	;�@	;�@H:@	;�	<�	;�	<	;�	;�	;�	;�	;�	;�	;�	;�	;�@	;�@	;�@	;�@	;�@	;�@	;�H:	;�H:	;�H:	;�H:	;�H:	;�H:	;�H:H:	;�H:	;�	;�H:	;�H:	;�H:	;�	;�H:	;�H:	;��N*	;�H:	;�H:NO	;�@	;�@	;�@	;�@	;�@A@	;�	;�	;�@	;�@	;�@	;�@	;�@A@	;�@	;�@	;�@	;�@	;�@A@	;�	;�	;�	;�	;�@	;�@	;�@	;�@	;�@Ae@	;�@	;�@	;�@	;�@	;�@H:@@	;�	;�@	;�@	;�@	;�@	;�@�@	;�	;�	;�	;�	;�	;�	;�@	;�@	;�@	;�@	;�@H @	;�@	;�@	;�@	;�@	;�@�@	;�	;�	;�@	;�@	;�@	;�@	;�@A@	;�@	;�@	;�@	;�@	;�@�@	;�	;�@	;�	;�@	;�@	;�@	;�@	;�@E@	<	<	<@	<@	<@	<@	<@A@	<@	<@	<	@	<
@	<@��@	<
	<8	<	<#	<	<	<	<	<@	<@	<@	<@	<@Ba@	<@	<@	<@	<@	<@@&@@	<	<@	<@	< @	<!@	<"@A@	<$	<1	<%	<+	<&@	<'@	<(@	<)@	<*@H:@	<,@	<-@	<.@	</@	<0@A@	<2@	<3@	<4@	<5@	<6@	<7@A@	<9	<h	<:	<G	<;	<A	<<@	<=@	<>@	<?@	<@@H:@	<B@	<C@	<D@	<E@	<F@A@	<H	<b	<I@	<J@	<K@	<L@	<M@	<N@	<OAe	<PAe	<QAe	<RAe	<SAe	<TAe	<UAe	<VAe	<WAe	<XAe	<YAe	<Z	<^	<[Ae	<\Ae	<]Ae
�Ae	<_AeAe	<`	<aAeAeB�	<c@	<d@	<e@	<f@	<g@Ba@	<i	<v	<j	<p	<k@	<l@	<m@	<n@	<o@@&@	<q@	<r@	<s@	<t@	<u@E@	<w	<}	<x@	<y@	<z@	<{@	<|@A@	<~@	<@	<�@	<�@	<�@�@	<�	<�	<�	<�	<�	<�	<�	<�	<�	<�Ae@	<�@	<�@	<�@	<�@	<�@E@@	<�	<�@	<�@	<�@	<�@	<�@A@	<�	<�	<�	<�	<�@	<�@	<�@	<�@	<�@E@	<�@	<�@	<�@	<�@	<�@�@	<�	<�	<�@	<�@	<�@	<�@	<�@A@	<�@	<�@	<�@	<�@	<�@�@	<�	<�	<�	<�	<�	<�	<�@	<�@	<�@	<�@	<�@@&@	<�@	<�@	<�@	<�@	<�@�@	<�	<�	<�@	<�@	<�@	<�@	<�@A@	<�@	<�@	<�@	<�@	<�@E@	<�	<�	<�	<�	<�@	<�@	<�@	<�@	<�@E@	<�@	<�@	<�@	<�@	<�@A@	<�	<�	<�@	<�@	<�@	<�@	<�@A@	<�@	<�@	<�@	<�@	<�@�@	<�	=	<�	<�	<�	<�@	<�	<�@	<�@	<�@	<�@	<�@�@	<�	<�	<�@	<�@	<�@	<�@	<�@A@	<�@	<�@	<�@	<�@	<�@E@	=	=@	=	=@	=@	=@	=@	=@H:@	=@	=	@	=
@	=@	=@	=
@A@	=	=*	=	=	=	=	=@	=@	=@	=@	=@HG@	=@	=@	=@	=@	=@A@	=	=$	=@	= @	=!@	="@	=#@A@	=%@	=&@	='@	=(@	=)@A@	=+	=8	=,	=2	=-@	=.@	=/@	=0@	=1@@&@	=3@	=4@	=5@	=6@	=7@Ae@	=9	=?	=:@	=;@	=<@	==@	=>@A@	=@@	=A@	=B@	=C@	=D@A@	=F	?	=G	>:	=H	=�	=I	=z	=J	=e	=K	=X	=L	=R	=M@	=N@	=O@	=P@	=Q@H�@	=S@	=T@	=U@	=V@	=W@E@	=Y	=_	=Z@	=[@	=\@	=]@	=^@A@	=`@	=a@	=b@	=c@	=d@�@	=f	=m	=g@	=h@	=i@	=j@	=k@	=l@Ba@	=n	=t	=o@	=p@	=q@	=r@	=s@A@	=u@	=v@	=w@	=x@	=y@�@	={	=�	=|	=�	=}	=�	=~@	=@	=�@	=�@	=�@	=�@Ba	=�	=�Ba	=�Ba	=�BaBa	=�	=�Ba	=�Ba	=�Ba	=�BaBa	=�Ba	=�	=�Ba	=�Ba	=�BaBa	=�	=�BaBa	=�	=�Ba	=�Ba	=�BaBa	=�	=�BaBa	=�	=�BaBa	=�Ba	=�	=�Ba	=�BaBa	=�	=�Ba	=�BaBa@	=�@	=�@	=�@	=�@	=�@�@	=�	=�	=�@	=�@	=�@	=�@	=�@A@	=�@	=�@	=�@	=�@	=�@A@	=�	=�	=�	=�	=�@	=�@	=�@	=�@	=�@E�@	=�@	=�@	=�@	=�@	=�@�'@	=�	=�	=�@	=�@	=�@	=�@	=�@A@	=�@	=�@	=�@	=�@	=�@�'@	=�	>	=�	=�	=�	=�	=�	=�	=�@	=�@	=�@	=�@	=�@H:@	=�@	=�@	=�@	=�@	=�@H:@@	=�	=�@	=�@	=�@	=�@	=�@H:@	=�	=�	=�	=�	=�@	=�@	=�@	=�@	=�@E�@	=�@	=�@	=�@	=�@	=�@H:@	=�	=�	=�@	=�@	=�@	=�@	=�@A@	=�@	=�@	>@	>@	>@��@	>	>	>	>	>	>	>@	>@	>	@	>
@	>@|�@	>
@	>@	>@	>@	>@�@	>	>	>@	>@	>@	>@	>@A@	>@	>@	>@	>@	>@Ae@	> 	>-	>!	>'	>"@	>#@	>$@	>%@	>&@Ae@	>(@	>)@	>*@	>+@	>,@A@	>.	>4	>/@	>0@	>1@	>2@	>3@A@	>5@	>6@	>7@	>8@	>9@E@	>;	>�	><	>m	>=	>R	>>	>K	>?	>E	>@@	>A@	>B@	>C@	>D@��@	>F@	>G@	>H@	>I@	>J@�@	>L@	>M@	>N@	>O@	>P@	>Q@A@	>S	>`	>T	>Z	>U@	>V@	>W@	>X@	>Y@Ae@	>[@	>\@	>]@	>^@	>_@�@	>a	>g	>b@	>c@	>d@	>e@	>f@A@	>h@	>i@	>j@	>k@	>l@�@	>n	>�	>o	>|	>p	>v	>q@	>r@	>s@	>t@	>u@A@	>w@	>x@	>y@	>z@	>{@H�@	>}	>�	>~@	>@	>�@	>�@	>�@��@	>�@	>�@	>�@	>�@	>�@�@	>�	>�	>�	>�	>�@	>�@	>�@	>�@	>�@F�@	>�@	>�@	>�@	>�@	>�@�@	>�@	>�@	>�@	>�@	>�@	>�@	>�@	>�Ae	>�Ae	>�Ae	>�Ae	>�Ae	>�Ae	>�Ae	>�Ae	>�Ae	>�Ae	>�Ae	>�Ae	>�	>�Ae	>�AeB�	>�Ae	>�	>�B�Aee1Ae	>�	>�	>�	>�	>�	>�	>�	>�	>�@	>�@	>�@	>�@	>�@@&@	>�@	>�@	>�@	>�@	>�@Ae@	>�	>�	>�@	>�@	>�@	>�@	>�@A@	>�@	>�@	>�@	>�@	>�@E@	>�	>�	>�	>�	>�@	>�@	>�@	>�@	>�@F�@	>�@	>�@	>�@	>�@	>�@A@	>�	>�	>�@	>�@	>�@	>�@	>�@A@	>�@	>�@	>�@	>�@	>�@H:@	>�	>�	>�	>�@	>�	>�@	>�@	>�@	>�@	>�@E@	>�	>�	>�@	>�@	>�@	>�@	>�@A@	>�@	>�@	>�@	>�@	>�@�@	?	?@	?	?@	?@	?@	?@	?@A@	?	?	?	@	?
@	?@	?@	?
@H:@	?@	?@	?@	?@	?@A@	?	@%	?	?�	?	?�	?	?-	?	?&	?	? 	?@	?@	?@	?@	?@��@	?!@	?"@	?#@	?$@	?%@A@	?'@	?(@	?)@	?*@	?+@	?,@A@	?.	?;	?/	?5	?0@	?1@	?2@	?3@	?4@E@	?6@	?7@	?8@	?9@	?:@|�@	?<	?B	?=@	?>@	??@	?@@	?A@A@	?C@	?D@	?E@	?F@	?G@	?H@	?I	?}	?Jaz	?K	?d	?L	?X	?Maz	?Naz	?Oaz	?Paz	?Qaz	?Raz	?Saz	?Taz	?Uaz	?Vaz	?Wazv�az	?Yaz	?Zaz	?[az	?\az	?]az	?^az	?_az	?`az	?aaz	?baz	?cazv�az	?e	?q	?faz	?gaz	?haz	?iaz	?jaz	?kaz	?laz	?maz	?naz	?oaz	?pazv�az	?raz	?saz	?taz	?uaz	?vaz	?waz	?xaz	?yaz	?zaz	?{az	?|azv�az	?~az	?az	?�az	?�az	?�az	?�az	?�az	?�az	?�az	?�az	?�az	?�az	?�az	?�azv�az	?�	?�	?�	?�	?�	?�	?�@	?�@	?�@	?�@	?�@�@	?�@	?�@	?�@	?�@	?�@�@	?�	?�	?�@	?�@	?�@	?�@	?�@A@	?�@	?�@	?�@	?�@	?�@��@	?�	?�	?�	?�	?�@	?�@	?�@	?�@	?�@@&@	?�@	?�@	?�@	?�@	?�@E@	?�	?�	?�@	?�@	?�@	?�@	?�@A@	?�@	?�@	?�@	?�@	?�@E@	?�	?�	?�	?�	?�	?�	?�	?�	?�@	?�@	?�@	?�@	?�@@&@	?�@	?�@	?�@	?�@	?�@E@	?�	?�	?�@	?�@	?�@	?�@	?�@A@	?�@	?�@	?�@	?�@	?�@E@	?�	?�	?�	?�	?�@	?�@	?�@	?�@	?�@|�@	?�@	?�@	?�@	?�@	?�@A@	?�	?�	?�@	?�@	?�@	?�@	?�@A@	?�@	?�@	?�@	?�@	?�@E@	?�	@
@	?�	?�	@	?�@	@@	@@	@@	@@H:@	@@	@@	@@	@@	@	@A@	@	@	@	@	@
@	@@	@@	@@	@@A@	@@	@@	@@	@@	@@�@	@	@	@@	@@	@@	@@	@@H:@	@ @	@!@	@"@	@#@	@$@�@	@&	@�	@'	@h	@(	@=	@)	@6	@*	@0	@+@	@,@	@-@	@.@	@/@@&@	@1@	@2@	@3@	@4@	@5@A@@	@7	@8@	@9@	@:@	@;@	@<@A@	@>	@[	@?	@E	@@@	@A@	@B@	@C@	@D@Ae@	@F@	@G@	@H@	@I@	@J@	@K@@&	@L@&	@M@&	@N@&	@O@&	@P@&	@Q	@R@&	@S@&@&	@T@&	@U	@V@&	@W@&	@X@&	@Y@&	@Z@&�@&	@\	@b	@]@	@^@	@_@	@`@	@a@�'@	@c@	@d@	@e@	@f@	@g@��@	@i	@~	@j	@w	@k	@q	@l@	@m@	@n@	@o@	@p@@&@	@r@	@s@	@t@	@u@	@v@E@	@x@	@y@	@z@	@{@	@|@	@}@A@	@	@�	@�	@�	@�@	@�@	@�@	@�@	@�@A@	@�@	@�@	@�@	@�@	@�@E@	@�	@�	@�@	@�@	@�@	@�@	@�@�@	@�@	@�@	@�@	@�@	@�@E@	@�	@�	@�	@�	@�	@�	@�	@�	@�@	@�@	@�@	@�@	@�@@&@	@�@	@�@	@�@	@�@	@�@az@	@�	@�	@�@	@�@	@�@	@�@	@�@F�@	@�@	@�@	@�@	@�@	@�@�@@	@�	@�	@�	@�@	@�@	@�@	@�@	@�@A@	@�@	@�@	@�@	@�@	@�@��@	@�	@�	@�	@�	@�	@�	@�@	@�@	@�@	@�@	@�@Ae@	@�@	@�@	@�@	@�@	@�@�~@	@�	@�	@�@	@�@	@�@	@�@	@�@A@	@�@	@�@	@�@	@�@	@�@�'@	@�	@�	@�	@�	@�@	@�@	@�@	@�@	@�@F�@	@�@	@�@	@�@	@�@	@�@	@�@H 	@�H 	@�H 	@�	@�H 	@�H 	@�H 	@�H 	@�H 	@�H 	@�H 	@�H 	@�H 	@�H 	@�H 	@�H H AK	@�@	A@	A@	A@	A@	A@A@	A	G	A	D	A	B�	A		A�	A
	Ap	A	A6	A	A!	A
	A	A@	A@	A@	A@	A@	A@�@	A	A	A@	A@	A@	A@	A@A@	A@	A@	A@	A@	A @H @	A"	A/	A#	A)	A$@	A%@	A&@	A'@	A(@H:@	A*@	A+@	A,@	A-@	A.@H @	A0@	A1@	A2@	A3@	A4@	A5@A@	A7	AE@	A8	A9	A?	A:@	A;@	A<@	A=@	A>@A@	A@@	AA@	AB@	AC@	AD@H @	AF	Ac	AG	A]	AH@	AI@	AJ@	AK@	AL@	AM@d	AN	AOd	APd	AQd	ARd	ASd	ATdd	AU	AVd	AWdd	AXd	AYd	AZd	A[d	A\di#	A^@	A_@	A`@	Aa@	Ab@H @	Ad	Aj	Ae@	Af@	Ag@	Ah@	Ai@A@	Ak@	Al@	Am@	An@	Ao@A@	Aq	A�	Ar	A�	As	A�	At	Az	Au@	Av@	Aw@	Ax@	Ay@E@	A{@	A|@	A}@	A~@	A@H:@	A�	A�	A�@	A�@	A�@	A�@	A�@A@	A�@	A�@	A�@	A�@	A�@H @	A�	A�	A�	A�	A�@	A�@	A�@	A�@	A�@E@	A�@	A�@	A�@	A�@	A�@�@	A�	A�	A�@	A�@	A�@	A�@	A�@A@	A�@	A�@	A�@	A�@	A�@�@	A�	A�	A�	A�	A�	A�	A�@	A�@	A�@	A�@	A�@E@	A�@	A�@	A�@	A�@	A�@H @	A�	A�	A�@	A�@	A�@	A�@	A�@�@	A�@	A�@	A�@	A�@	A�@H @	A�	A�	A�	A�	A�@	A�@	A�@	A�@	A�@�Y@	A�@	A�@	A�@	A�@	A�@E@	A�	A�	A�@	A�@	A�@	A�@	A�@E@	A�@	A�@	A�@	A�@	A�@�@	A�	BI	A�	B	A�	A�	A�	A�@	A�	A�@	A�@	A�@	A�@	A�@�@	A�	A�	A�@	A�@	A�@	A�@	A�@A@	A�@	A�@	A�@	A�@	A�@�@	A�	B	A�	A�	A�@	A�@	A�@	A�@	A�@A@	B@	B@	B@	B@	B@E@	B	B	B@	B@	B	@	B
@	B@A@	B
@	B@	B@	B@	B@E@	B	B.	B	B!	B	B	B@	B@	B@	B@	B@@&@	B@	B@	B@	B@	B @A@	B"	B(	B#@	B$@	B%@	B&@	B'@A@	B)@	B*@	B+@	B,@	B-@Ae@	B/	B<	B0	B6	B1@	B2@	B3@	B4@	B5@A@	B7@	B8@	B9@	B:@	B;@�@	B=	BC	B>@	B?@	B@@	BA@	BB@A@	BD@	BE@	BF@	BG@	BH@H @	BJ	B{	BK	Bf	BL	BY	BM	BS	BN@	BO@	BP@	BQ@	BR@A@	BT@	BU@	BV@	BW@	BX@�@	BZ	B`	B[@	B\@	B]@	B^@	B_@A@	Ba@	Bb@	Bc@	Bd@	Be@�@	Bg	Bn	Bh@	Bi@	Bj@	Bk@	Bl@	Bm@A@	Bo	Bu	Bp@	Bq@	Br@	Bs@	Bt@A@	Bv@	Bw@	Bx@	By@	Bz@E@	B|	B�	B}	B�	B~	B�	B@	B�@	B�@	B�@	B�@@&@	B�@	B�@	B�@	B�@	B�@H:@	B�	B�	B�@	B�@	B�@	B�@	B�@��@	B�@	B�@	B�@	B�@	B�@��@	B�	B�	B�	B�	B�@	B�@	B�@	B�@	B�@@&@	B�@	B�@	B�@	B�@	B�@H @@	B�	B�@	B�@	B�@	B�@	B�@E@	B�	C\	B�	C	B�	B�	B�	B�	B�	B�	B�	B�	B�@	B�@	B�@	B�@	B�@Ae@	B�@	B�@	B�@	B�@	B�@�@	B�	B�	B�@	B�@	B�@	B�@	B�@A@	B�@	B�@	B�@	B�@	B�@�@	B�	B�	B�	B�	B�@	B�@	B�@	B�@	B�@�@	B�@	B�@	B�@	B�@	B�@E@	B�@	B�@	B�@	B�@	B�@	B�@A@	B�	B�	B�	B�	B�@	B�@	B�@	B�@	B�@	B�@@&@	B�@	B�@	B�@	B�@	B�@	B�@A@	B�	B�	B�@	B�@	B�@	B�@	B�@	B�@�@	B�	B�	B�@	B�@	B�@	B�@	B�@A@	C@	C@	C@	C@	C@H @	C	C+	C	C	C	C	C	@	C
@	C@	C@	C
@	C@@&@	C@	C@	C@	C@	C@	C@A@	C	C	C@	C@	C@	C@	C@	C@�@	C	C%	C @	C!@	C"@	C#@	C$@A@	C&@	C'@	C(@	C)@	C*@H @	C,	CA	C-	C4	C.@	C/@	C0@	C1@	C2@	C3@@&@	C5	C;	C6@	C7@	C8@	C9@	C:@A@	C<@	C=@	C>@	C?@	C@@H @	CB	CO	CC	CI	CD@	CE@	CF@	CG@	CH@Ez@	CJ@	CK@	CL@	CM@	CN@H @	CP	CV	CQ@	CR@	CS@	CT@	CU@A@	CW@	CX@	CY@	CZ@	C[@Ae@	C]	C�	C^	Cz	C_@&	C`	Cm	Ca	Cg	Cb@	Cc@	Cd@	Ce@	Cf@��@	Ch@	Ci@	Cj@	Ck@	Cl@�@	Cn	Ct	Co@	Cp@	Cq@	Cr@	Cs@A@	Cu@	Cv@	Cw@	Cx@	Cy@�@	C{	C�	C|	C�	C}	C�	C~@	C@	C�@	C�@	C�@@&@	C�@	C�@	C�@	C�@	C�@H @	C�	C�	C�@	C�@	C�@	C�@	C�@A@	C�@	C�@	C�@	C�@	C�@A@	C�	C�	C�	C�	C�@	C�@	C�@	C�@	C�@A@	C�@	C�@	C�@	C�@	C�@A@	C�	C�	C�@	C�@	C�@	C�@	C�@A@	C�@	C�@	C�@	C�@	C�@H:@	C�	C�	C�	C�	C�	C�	C�	C�	C�@	C�@	C�@	C�@	C�@@&@	C�@	C�@	C�@	C�@	C�@�@	C�@	C�@	C�@	C�@	C�@	C�@A@	C�	C�	C�	C�	C�@	C�@	C�@	C�@	C�@A@	C�@	C�@	C�@	C�@	C�@H:@	C�	C�	C�@	C�@	C�@	C�@	C�@A@	C�@	C�@	C�@	C�@	C�@E@	C�	C�	C�	C�	C�	C�	C�@	C�@	C�@	C�@	C�@Ae@	C�@	C�@	C�@	C�@	C�@A@	C�	C�	C�@	C�@	C�@	C�@	C�@A@	C�@	C�@	C�@	C�@	C�@A@	D	D
	D	D	D@	D@	D@	D@	D@H @	D@	D	@	D
@	D@	D@�@	D	D	D@	D@	D@	D@	D@A@	D@	D@	D@	D@	D@�@	D	E�	D	D�	D	D�	D	DO	D	D:	D 	D-	D!	D'	D"@	D#@	D$@	D%@	D&@HG@	D(@	D)@	D*@	D+@	D,@H:@	D.	D4	D/@	D0@	D1@	D2@	D3@E@	D5@	D6@	D7@	D8@	D9@�'@	D;	DH	D<	DB	D=@	D>@	D?@	D@@	DA@A@	DC@	DD@	DE@	DF@	DG@A@@	DI	DJ@	DK@	DL@	DM@	DN@�@	DP	Dk	DQ	D^	DR	DX	DS@	DT@	DU@	DV@	DW@A@	DY@	DZ@	D[@	D\@	D]@H @	D_	De	D`@	Da@	Db@	Dc@	Dd@H:@	Df@	Dg@	Dh@	Di@	Dj@H @	Dl	Dy	Dm	Ds	Dn@	Do@	Dp@	Dq@	Dr@A@	Dt@	Du@	Dv@	Dw@	Dx@H @@	Dz	D{@	D|@	D}@	D~@	D@H @	D�	D�	D�	D�	D�	D�	D�@	D�@	D�@	D�@	D�@	D�@Ae@	D�	D�	D�@	D�@	D�@	D�@	D�@A@	D�@	D�@	D�@	D�@	D�@��@	D�	D�	D�	D�	D�@	D�@	D�@	D�@	D�@�'@	D�@	D�@	D�@	D�@	D�@�@	D�@	D�@	D�@	D�@	D�@	D�@A@	D�	D�	D�	D�	D�	D�	D�@	D�@	D�@	D�@	D�@�@	D�@	D�@	D�@	D�@	D�@@&@	D�	D�	D�@	D�@	D�@	D�@	D�@A@	D�@	D�@	D�@	D�@	D�@A@	D�	D�	D�	D�	D�@	D�@	D�@	D�@	D�@@&@	D�@	D�@	D�@	D�@	D�@H @	D�	D�	D�@	D�@	D�@	D�@	D�@A@	D�@	D�@	D�@	D�@	D�@H @	D�	EA	D�	E	D�	D�	D�	D�	D�@	D�@	D�@	D�@	D�@	D�@Ae@	D�@	D�@	D�@	D�@	D�@	D�@A@	D�	E	D�	D�	D�@	D�@	D�@	D�@	D�@F�@	D�@	D�@	E@	E@	E@A@	E	E
	E@	E@	E@	E@	E	@A@	E@	E@	E
@	E@	E@A@	E	E,	E	E	E	E	E@	E@	E@	E@	E@�@	E@	E@	E@	E@	E@A@	E 	E&	E!@	E"@	E#@	E$@	E%@A@	E'@	E(@	E)@	E*@	E+@H @	E-	E4@	E.	E/@	E0@	E1@	E2@	E3@E@	E5	E;	E6@	E7@	E8@	E9@	E:@A@	E<@	E=@	E>@	E?@	E@@H:@	EB	E�	EC	ER	ED	EK	EE@	EF@	EG@	EH@	EI@	EJ@A@	EL@	EM@	EN@	EO@	EP@	EQ@@&@	ES	E`	ET	EZ	EU@	EV@	EW@	EX@	EY@E@	E[@	E\@	E]@	E^@	E_@H @	Ea	E~	Eb@	Ec@	Ed@	Ee@	Ef@	Eg@	EhH:	Ei	Ez	EjH:	EkH:	ElH:	EmH:	EnH:	EoH:	Ep	EtH:	EqH:	Er	EsH:s�H:	EuH:	Ev	Ex	EwH:s�H:	EyH:�H:	E{H:	E|H:H:	E}H:s�	E@	E�@	E�@	E�@	E�@�@	E�	E�	E�	E�	E�	E�	E�@	E�@	E�@	E�@	E�@�@	E�@	E�@	E�@	E�@	E�@Ez@	E�@	E�@	E�@	E�@	E�@	E�@
B@	E�	E�	E�@	E�@	E�@	E�@	E�@	E�@�@	E�	E�	E�@	E�@	E�@	E�@	E�@A@	E�@	E�@	E�@	E�@	E�@�@	E�	FK	E�	E�	E�	E�	E�	E�	E�	E�	E�@	E�@	E�@	E�@	E�@	E�@Ae@	E�@	E�@	E�@	E�@	E�@	E�@A@	E�	E�	E�@	E�@	E�@	E�@	E�@F�@	E�@	E�@	E�@	E�@	E�@	E�@A@	E�	E�	E�	E�	E�@	E�@	E�@	E�@	E�@	E�@�@	E�@	E�@	E�@	E�@	E�@	E�@A@	E�	E�	E�	E�	E�@	E�@	E�@	E�@	E�@Ae@	E�@	E�@	E�@	E�@	E�@H @	E�	E�	E�@	E�@	E�@	E�@	E�@A@	E�@	E�@	E�@	E�@	E�@H�@	E�	F 	E�	F	E�	F	E�	F	F@	F@	F@	F@	F@A@	F@	F@	F@	F	@	F
@�@	F	F	F
@	F@	F@	F@	F@A@	F@	F@	F@	F@	F@��@@	F	F@	F@	F@	F@	F@	F@A@	F!	F6	F"	F/	F#	F)	F$@	F%@	F&@	F'@	F(@�@	F*@	F+@	F,@	F-@	F.@H @	F0@	F1@	F2@	F3@	F4@	F5@A@	F7	F>	F8@	F9@	F:@	F;@	F<@	F=@��@	F?	FE	F@@	FA@	FB@	FC@	FD@A@	FF@	FG@	FH@	FI@	FJ@H @	FL	F�	FM	F~	FN	Fc	FO	F\	FP	FV	FQ@	FR@	FS@	FT@	FU@Ae@	FW@	FX@	FY@	FZ@	F[@�@	F]@	F^@	F_@	F`@	Fa@	Fb@A@	Fd	Fq	Fe	Fk	Ff@	Fg@	Fh@	Fi@	Fj@�@	Fl@	Fm@	Fn@	Fo@	Fp@H @	Fr	Fx	Fs@	Ft@	Fu@	Fv@	Fw@A@	Fy@	Fz@	F{@	F|@	F}@H @	F	F�	F�	F�	F�	F�	F�@	F�@	F�@	F�@	F�@�@	F�@	F�@	F�@	F�@	F�@A@	F�	F�	F�@	F�@	F�@	F�@	F�@Ae@	F�@	F�@	F�@	F�@	F�@�@	F�	F�	F�	F�	F�@	F�@	F�@	F�@	F�@�@	F�@	F�@	F�@	F�@	F�@�@@	F�	F�@	F�@	F�@	F�@	F�@|�@	F�	F�	F�	F�	F�	F�	F�	F�	F�@	F�@	F�@	F�@	F�@Ez@	F�@	F�@	F�@	F�@	F�@Ez@	F�@	F�@	F�@	F�@	F�@	F�@F�@	F�	F�	F�	F�	F�@	F�@	F�@	F�@	F�@E@	F�@	F�@	F�@	F�@	F�@�'@	F�	F�	F�@	F�@	F�@	F�@	F�@@&@	F�@	F�@	F�@	F�@	F�@�@	F�	F�	F�	F�	F�	F�	F�@	F�@	F�@	F�@	F�@�@	F�@	F�@	F�@	F�@	F�@�@	F�	F�	F�@	F�@	F�@	F�@	F�@E@	F�@	F�@	F�@	F�@	F�@�'@	F�	G	F�	G	G@	G@	G@	G@	G@Ba@	G@	G@	G@	G	@	G
@H�@	G	G	G
@	G@	G@	G@	G@�@	G@	G@	G@	G@	G@H�@	G	J;	G	H�	G	G�	G	G�	G	GN	G	G3	G	G,	G 	G&	G!@	G"@	G#@	G$@	G%@Ba@	G'@	G(@	G)@	G*@	G+@A@	G-@	G.@	G/@	G0@	G1@	G2@A@	G4	GA	G5	G;	G6@	G7@	G8@	G9@	G:@A@	G<@	G=@	G>@	G?@	G@@A@	GB	GH	GC@	GD@	GE@	GF@	GG@A@	GI@	GJ@	GK@	GL@	GM@H @	GO	Gj	GP	G]	GQ	GW	GR@	GS@	GT@	GU@	GV@��@	GX@	GY@	GZ@	G[@	G\@H @	G^	Gd	G_@	G`@	Ga@	Gb@	Gc@��@	Ge@	Gf@	Gg@	Gh@	Gi@�'@	Gk	Gx	Gl	Gr	Gm@	Gn@	Go@	Gp@	Gq@H @	Gs@	Gt@	Gu@	Gv@	Gw@�@	Gy	G	Gz@	G{@	G|@	G}@	G~@E@	G�@	G�@	G�@	G�@	G�@A@	G�	G�	G�	G�	G�	G�	G�	G�	G�@	G�@	G�@	G�@	G�@Ae@	G�@	G�@	G�@	G�@	G�@A@	G�	G�	G�@	G�@	G�@	G�@	G�@A@	G�@	G�@	G�@	G�@	G�@A@	G�	G�	G�	G�	G�@	G�@	G�@	G�@	G�@F�@	G�@	G�@	G�@	G�@	G�@H:@	G�@	G�@	G�@	G�@	G�@	G�@Ez@	G�	G�	G�	G�	G�	G�	G�@	G�@	G�@	G�@	G�@�@	G�@	G�@	G�@	G�@	G�@��@	G�@	G�@	G�@	G�@	G�@	G�@E@	G�	G�@	G�	G�@	G�@	G�@	G�@	G�@Ba@	G�@	G�@	G�@	G�@	G�@	G�@@&@	G�	H'	G�	H		G�	G�	G�	G�	G�@	G�@	G�@	G�@	G�@	G�@Ae@@	G�	G�@	G�@	G�@	G�@	G�@�@	G�	G�	G�	G�	G�@	G�@	G�@	G�@	G�@��@	G�@	G�@	G�@	G�@	G�@H @	G�	H	G�@	G�@	H@	H@	H@A@	H@	H@	H@	H@	H@H @	H
	H	H@	H@	H
@	H@	H@	H@	H@Ae@	H	H	H@	H@	H@	H@	H@	H@F�@	H	H!	H@	H@	H@	H@	H @�@	H"@	H#@	H$@	H%@	H&@Ez@	H(	HY	H)	H>	H*	H7	H+	H1	H,@	H-@	H.@	H/@	H0@F�@	H2@	H3@	H4@	H5@	H6@�@	H8@	H9@	H:@	H;@	H<@	H=@�@	H?	HL	H@	HF	HA@	HB@	HC@	HD@	HE@HG@	HG@	HH@	HI@	HJ@	HK@�@	HM	HS	HN@	HO@	HP@	HQ@	HR@HG@	HT@	HU@	HV@	HW@	HX@A@	HZ	Ho	H[	Hh	H\	Hb	H]@	H^@	H_@	H`@	Ha@Ae@	Hc@	Hd@	He@	Hf@	Hg@H @@	Hi	Hj@	Hk@	Hl@	Hm@	Hn@A@	Hp	H}	Hq	Hw	Hr@	Hs@	Ht@	Hu@	Hv@Ae@	Hx@	Hy@	Hz@	H{@	H|@E@	H~	H�	H@	H�@	H�@	H�@	H�@A@	H�@	H�@	H�@	H�@	H�@	H�@	H�F�	H�F�	H�F�F�	H�	H�F�	H�F�	H�F�	H�	H�	H�F�	H�F�	H�F�	H�	H�	H�	H�F�	H�	H�	H�i@F�F�i@	H�F�	H�F�
F�	H�	H�F�	H�	H�F�F�i@F�	H�	H�F�i@F�	H�F�	H�F�	H�	H�F�	H�	H�F�	H�F�F�	H�G�F�G�F�	H�	I{	H�	I	H�	H�	H�	H�	H�	H�	H�@	H�@	H�@	H�@	H�@@&@	H�	H�	H�@	H�@	H�@	H�@	H�@A@	H�@	H�@	H�@	H�@	H�@Ba@	H�	H�	H�	H�	H�@	H�@	H�@	H�@	H�@Ae@	H�@	H�@	H�@	H�@	H�@��@	H�	H�	H�@	H�@	H�@	H�@	H�@A@	H�@	H�@	H�@	H�@	H�@Ae@	H�	H�	H�	H�	H�	H�	H�@	H�@	H�@	H�@	H�@��@	H�@	H�@	H�@	H�@	H�@�'@	H�	H�	H�@	H�@	H�@	H�@	H�@A@	H�@	H�@	H�@	H�@	H�@A@	H�	I	H�	I	I@	I@	I@	I@	I@H:@	I@	I@	I@	I	@	I
@H @	I	I	I
@	I@	I@	I@	I@A@	I@	I@	I@	I@	I@Ae@	I	IJ	I	I5	I	I(	I	I"	I@	I@	I@	I @	I!@A@	I#@	I$@	I%@	I&@	I'@A@	I)	I/	I*@	I+@	I,@	I-@	I.@A@	I0@	I1@	I2@	I3@	I4@E@	I6	I=	I7@	I8@	I9@	I:@	I;@	I<@Ae@	I>	ID	I?@	I@@	IA@	IB@	IC@A@	IE@	IF@	IG@	IH@	II@H @	IK	If	IL	IY	IM	IS	IN@	IO@	IP@	IQ@	IR@Ae@	IT@	IU@	IV@	IW@	IX@�@	IZ	I`	I[@	I\@	I]@	I^@	I_@A@	Ia@	Ib@	Ic@	Id@	Ie@��@	Ig	In	Ih@	Ii@	Ij@	Ik@	Il@	Im@�6@	Io	Iu	Ip@	Iq@	Ir@	Is@	It@A@	Iv@	Iw@	Ix@	Iy@	Iz@A@	I|	I�	I}	I�	I~	I�@	I	I�	I�	I�@	I�@	I�@	I�@	I�@A@	I�@	I�@	I�@	I�@	I�@�@	I�	I�	I�	I�	I�@	I�@	I�@	I�@	I�@Ae@	I�@	I�@	I�@	I�@	I�@H @	I�	I�	I�@	I�@	I�@	I�@	I�@A@	I�@	I�@	I�@	I�@	I�@A@	I�	I�	I�	I�	I�	I�	I�@	I�@	I�@	I�@	I�@�@	I�@	I�@	I�@	I�@	I�@�@	I�	I�	I�@	I�@	I�@	I�@	I�@A@	I�@	I�@	I�@	I�@	I�@A@	I�	I�	I�@	I�@	I�@	I�@	I�@	I�@A@	I�@	I�@	I�@	I�@	I�@	I�@A@	I�	J
	I�	I�	I�	I�	I�	I�	I�@	I�@	I�@	I�@	I�@Ae@	I�@	I�@	I�@	I�@	I�@F�@	I�	I�	I�@	I�@	I�@	I�@	I�@A@	I�@	I�@	I�@	I�@	I�@H:@	I�	I�	I�	I�	I�@	I�@	I�@	I�@	I�@�@	I�@	I�@	I�@	I�@	I�@@&@	I�	J	I�@	J@	J@	J@	J@A@	J@	J@	J@	J@	J	@�~@	J	J 	J	J	J
	J	J@	J@	J@	J@	J@��@	J@	J@	J@	J@	J@E@	J@	J@	J@	J@	J@	J@A@	J!	J.	J"	J(	J#@	J$@	J%@	J&@	J'@F�@	J)@	J*@	J+@	J,@	J-@az@	J/	J5	J0@	J1@	J2@	J3@	J4@A@	J6@	J7@	J8@	J9@	J:@�@	J<	K�	J=	K	J>	J�	J?	Jv	J@	J[	JA	JN	JB	JH	JC@	JD@	JE@	JF@	JG@Ae@	JI@	JJ@	JK@	JL@	JM@��@	JO	JU	JP@	JQ@	JR@	JS@	JT@A@	JV@	JW@	JX@	JY@	JZ@�@	J\	Ji	J]	Jc	J^@	J_@	J`@	Ja@	Jb@�@	Jd@	Je@	Jf@	Jg@	Jh@H @	Jj	Jp	Jk@	Jl@	Jm@	Jn@	Jo@A@	Jq@	Jr@	Js@	Jt@	Ju@�@	Jw	J�	Jx	J�	Jy	J	Jz@	J{@	J|@	J}@	J~@H�@	J�@	J�@	J�@	J�@	J�@Ba@	J�	J�	J�@	J�@	J�@	J�@	J�@A@	J�@	J�@	J�@	J�@	J�@H @	J�	J�	J�	J�	J�@	J�@	J�@	J�@	J�@A@	J�@	J�@	J�@	J�@	J�@H:@	J�	J�	J�@	J�@	J�@	J�@	J�@�@	J�@	J�@	J�@	J�@	J�@�@	J�	J�	J�	J�	J�	J�@	J�	J�@	J�@	J�@	J�@	J�@�@	J�	J�	J�@	J�@	J�@	J�@	J�@A@	J�@	J�@	J�@	J�@	J�@@&@	J�	J�	J�	J�	J�@	J�@	J�@	J�@	J�@A@	J�@	J�@	J�@	J�@	J�@E@	J�@	J�@	J�@	J�@	J�@	J�@A@	J�	J�	J�	J�	J�	J�	J�@	J�@	J�@	J�@	J�@�@	J�@	J�@	J�@	J�@	J�@A@	J�	J�	J�@	J�@	J�@	J�@	J�@A@	J�@	J�@	J�@	J�@	J�@�@	J�	K	J�	J�	J�@	J�@	J�@	J�@	J�@A@	J�@	J�@	K@	K@	K@�@	K	K
	K@	K@	K@	K@	K	@A@	K@	K@	K
@	K@	K@A@	K	K�	K	KI	K	K.	K	K!	K	K	K@	K@	K@	K@	K@H:@	K@	K@	K@	K@	K @H:@	K"	K(	K#@	K$@	K%@	K&@	K'@A@	K)@	K*@	K+@	K,@	K-@�@	K/	K<	K0	K6	K1@	K2@	K3@	K4@	K5@F�@	K7@	K8@	K9@	K:@	K;@H @	K=	KC	K>@	K?@	K@@	KA@	KB@A@	KD@	KE@	KF@	KG@	KH@H @	KJ	Ke	KK	KX	KL	KR	KM@	KN@	KO@	KP@	KQ@H:@	KS@	KT@	KU@	KV@	KW@�@	KY	K_	KZ@	K[@	K\@	K]@	K^@A@	K`@	Ka@	Kb@	Kc@	Kd@A@	Kf	Ks	Kg	Km	Kh@	Ki@	Kj@	Kk@	Kl@�@	Kn@	Ko@	Kp@	Kq@	Kr@�@	Kt	Kz	Ku@	Kv@	Kw@	Kx@	Ky@A@	K{@	K|@	K}@	K~@	K@H:@	K�	K�	K�	K�	K�	K�	K�	K�	K�@	K�@	K�@	K�@	K�@�@	K�@	K�@	K�@	K�@	K�@F�@	K�	K�	K�@	K�@	K�@	K�@	K�@A@	K�@	K�@	K�@	K�@	K�@Ae@	K�	K�	K�	K�	K�@	K�@	K�@	K�@	K�@A@	K�@	K�@	K�@	K�@	K�@A@	K�	K�	K�@	K�@	K�@	K�@	K�@A@	K�@	K�@	K�@	K�@	K�@H @	K�	K�	K�	K�	K�	K�	K�@	K�@	K�@	K�@	K�@H @	K�@	K�@	K�@	K�@	K�@�'@	K�	K�	K�@	K�@	K�@	K�@	K�@A@	K�@	K�@	K�@	K�@	K�@�@	K�	K�@	K�	K�@	K�@	K�@	K�@	K�@Ez@	K�@	K�@	K�@	K�@	K�@	K�@A@	K�	L�	K�	LN	K�	L	K�	L	K�	K�	K�	K�	K�@	K�@	K�@	K�@	K�@Ae@	K�@	K�@	K�@	K�@	K�@Ba@	K�	K�	K�@	K�@	K�@	K�@	K�@A@	K�@	K�@	K�@	L@	L@�@	L	L
	L@	L@	L@	L@	L@	L	@A@	L	L	L@	L
@	L@	L@	L@A@	L@	L@	L@	L@	L@�@	L	L3	L	L&	L	L 	L@	L@	L@	L@	L@@&@	L!@	L"@	L#@	L$@	L%@A@	L'	L-	L(@	L)@	L*@	L+@	L,@A@	L.@	L/@	L0@	L1@	L2@�@	L4	LA	L5	L;	L6@	L7@	L8@	L9@	L:@A@	L<@	L=@	L>@	L?@	L@@�@	LB	LH	LC@	LD@	LE@	LF@	LG@A@	LI@	LJ@	LK@	LL@	LM@H @	LO	Lz	LP	L_	LQ	LX@	LR	LS@	LT@	LU@	LV@	LW@E@@	LY	LZ@	L[@	L\@	L]@	L^@A@	L`	Lm	La	Lg	Lb@	Lc@	Ld@	Le@	Lf@H:@	Lh@	Li@	Lj@	Lk@	Ll@�@	Ln	Lt	Lo@	Lp@	Lq@	Lr@	Ls@A@	Lu@	Lv@	Lw@	Lx@	Ly@�'@	L{	L�	L|	L�	L}	L�	L~@	L@	L�@	L�@	L�@
B@	L�@	L�@	L�@	L�@	L�@HG@	L�@	L�@	L�@	L�@	L�@	L�@E@	L�	L�	L�	L�	L�@	L�@	L�@	L�@	L�@��@	L�@	L�@	L�@	L�@	L�@A@@	L�	L�@	L�@	L�@	L�@	L�@�'@	L�	MX	L�	L�	L�	L�@	L�	L�	L�	L�@	L�@	L�@	L�@	L�@	L�@	L�@&@&	L�@&	L�	L�@&	L�@&	L�@&	L�@&�@&	L�@	L�@	L�@	L�@	L�@A@	L�	L�@	L�	L�@	L�@	L�@	L�@	L�@�@	L�	L�	L�@	L�@	L�@	L�@	L�@A@	L�@	L�@	L�@	L�@	L�@�@	L�	L�	L�	L�	L�	L�	L�@	L�@	L�@	L�@	L�@H:@	L�@	L�@	L�@	L�@	L�@	L�@	L�az	L�az	L�az	L�az	L�az	L�az	L�az	L�az	L�az	L�az	L�az	L�az	L�az	L�az	L�	L�azv�maz@	L�	L�@	L�@	L�@	L�@	L�@H @	L�	M	L�	M	L�@	L�@	L�@	M@	M@A@	M@	M@	M@	M@	M@H @	M		M	M
@	M@	M@	M
@	M@A@	M@	M@	M@	M@	M@	M@	M�<	M	MJ	M	M1	M	M%	M�<	M�<	M�<	M�<	M�<	M�<	M �<	M!�<	M"�<	M#�<	M$�<�d�<	M&�<	M'�<	M(�<	M)�<	M*�<	M+�<	M,�<	M-�<	M.�<	M/�<	M0�<�d�<	M2	M>	M3�<	M4�<	M5�<	M6�<	M7�<	M8�<	M9�<	M:�<	M;�<	M<�<	M=�<�d�<	M?�<	M@�<	MA�<	MB�<	MC�<	MD�<	ME�<	MF�<	MG�<	MH�<	MI�<�d�<	MK�<	ML�<	MM�<	MN�<	MO�<	MP�<	MQ�<	MR�<	MS�<	MT�<	MU�<	MV�<	MW�<�d�<	MY	M�	MZ	Mu	M[	Mh	M\	Mb	M]@	M^@	M_@	M`@	Ma@Ae@	Mc@	Md@	Me@	Mf@	Mg@A@	Mi	Mo	Mj@	Mk@	Ml@	Mm@	Mn@�@	Mp@	Mq@	Mr@	Ms@	Mt@�'@	Mv	M�	Mw	M}	Mx@	My@	Mz@	M{@	M|@Ae@	M~@	M@	M�@	M�@	M�@Ez@	M�	M�	M�@	M�@	M�@	M�@	M�@�@	M�@	M�@	M�@	M�@	M�@Ae@	M�	M�	M�	M�	M�	M�	M�@	M�@	M�@	M�@	M�@E@	M�@	M�@	M�@	M�@	M�@A@	M�	M�	M�@	M�@	M�@	M�@	M�@A@	M�@	M�@	M�@	M�@	M�@A@	M�	M�	M�	M�	M�@	M�@	M�@	M�@	M�@�@	M�@	M�@	M�@	M�@	M�@�@	M�	M�	M�@	M�@	M�@	M�@	M�@A@	M�@	M�@	M�@	M�@A@	M�	�	M�	h�	M�	[_	M�	T�	M�	Q@	M�	O�	M�	N�	M�	N�	M�	NX	M�	M�	M�	M�H 	M�	M�@	M�@	M�@	M�@	M�@�@	M�	M�	M�	M�H @	M�	M�@	M�	M�@	M�@Ez@	M�	M�	M�@Ba@	M�@	M�@Ez@	M�	M�	M�	M�	M�	M�	M�@	M�@�@	M�@	M�@�@	M�	M�	M�@	M�@HG@	M�@	M�@HG@Ae@	M�	NB	M�	N	M�	M�	M�@	M�@	M�@	M�@A@@	N	N	N	N@	N@��@	N@��@	N	N	N	N	N	@	N
@	N@Ba@	N
	N	N@	N@�@	N@	N@A@	N	N;	N	N8	N@	N@	N@Ez	N	NEz	NEz	NEz	NEz	NEz	NEzEz	N 	N!Ez	N"Ez	N#Ez	N$Ez	N%EzEz	N&	N'Ez	N(Ez	N)Ez	N*EzEz	N+	N,EzEz	N-	N.EzEz	N/Ez	N0Ez	N1Ez	N2Ez	N3Ez	N4Ez	N5Ez	N6	N7Ez@Ez	N9@	N:@@&@	N<	N?	N=@	N>@�@	N@@	NA@H @	NC	NR	ND	NEE�@	NF	NK	NG	NHH:@	NI@	NJ@@&@	NL	NO	NM@	NN@�@	NP@	NQ@�@	NS@	NT@	NU@	NV@	NW@�@	NY	Nt	NZ	Ng	N[	Na	N\@	N]@	N^@	N_@	N`@@&@	Nb@	Nc@	Nd@	Ne@	Nf@A@	Nh	Nn	Ni@	Nj@	Nk@	Nl@	Nm@A@	No@	Np@	Nq@	Nr@	Ns@�@	Nu	N�	Nv	N|	Nw@	Nx@	Ny@	Nz@	N{@|�@	N}@	N~@	N@	N�@	N�@�@	N�	N�	N�@	N�@	N�@	N�@	N�@
_@	N�@	N�@	N�@	N�@	N�@�@	N�	N�	N�	N�	N�	N�	N�	N�	N�@	N�@	N�@	N�@	N�@�@	N�@	N�@	N�@	N�@	N�@A@	N�	N�	N�@	N�@	N�@	N�@	N�@A@	N�@	N�@	N�@	N�@	N�@�@	N�	N�	N�	N�	N�@	N�@	N�@	N�@	N�@�@	N�@	N�@	N�@	N�@	N�@�@	N�	N�	N�@	N�@	N�@	N�@	N�@E@	N�@	N�@	N�@	N�@	N�@Ae@	N�	N�	N�	N�	N�	N�	N�@	N�@	N�@	N�@	N�@�@	N�@	N�@	N�@	N�@	N�@E@	N�	N�	N�@	N�@	N�@	N�@	N�@A@	N�@	N�@	N�@	N�@	N�@�@	N�	N�@	N�	N�@	N�@	N�@	N�@	N�@E@	N�	N�	N�@	N�@	N�@	N�@	N�@Ae@	N�@	N�@	N�@	N�@	N�@�@	N�	O\	N�	O+	N�	O	N�	O		N�	O	N�@	N�@	O@	O@	O@E�@	O@	O@	O@	O@	O@H @	O
	O	O@	O@	O
@	O@	O@�@	O@	O@	O@	O@	O@H:@	O	O@	O	O@	O@	O@	O@	O@F�@	O	O%	O @	O!@	O"@	O#@	O$@�@	O&@	O'@	O(@	O)@	O*@�@	O,	OG	O-	O:	O.	O4	O/@	O0@	O1@	O2@	O3@@&@	O5@	O6@	O7@	O8@	O9@�@	O;	OA	O<@	O=@	O>@	O?@	O@@A@	OB@	OC@	OD@	OE@	OF@�@	OH	OO	OI@	OJ@	OK@	OL@	OM@	ON@�@	OP	OV	OQ@	OR@	OS@	OT@	OU@A@	OW@	OX@	OY@	OZ@	O[@A@	O]	O�	O^	Ol	O_@	O`	Of	Oa@	Ob@	Oc@	Od@	Oe@E@	Og@	Oh@	Oi@	Oj@	Ok@A@	Om	Oz	On	Ot	Oo@	Op@	Oq@	Or@	Os@�@	Ou@	Ov@	Ow@	Ox@	Oy@Ae@	O{	O�	O|@	O}@	O~@	O@	O�@A@	O�@	O�@	O�@	O�@	O�@�@	O�	O�	O�	O�	O�	O�	O�@	O�@	O�@	O�@	O�@F�@	O�@	O�@	O�@	O�@	O�@H @	O�	O�	O�@	O�@	O�@	O�@	O�@Ae@	O�@	O�@	O�@	O�@	O�@�@	O�	O�	O�	O�	O�@	O�@	O�@	O�@	O�@A@	O�@	O�@	O�@	O�@	O�@H @	O�@	O�@	O�@	O�@	O�@	O�@A@	O�	P	O�	P#	O�	O�	O�	O�	O�	O�	O�	O�	O�@	O�@	O�@	O�@	O�@@&@	O�@	O�@	O�@	O�@	O�@�@	O�	O�	O�@	O�@	O�@	O�@	O�@A@	O�@	O�@	O�@	O�@	O�@A@	O�	O�	O�	O�	O�@	O�@	O�@	O�@	O�@F�@	O�@	O�@	O�@	O�@	O�@�@	O�@	O�@	O�@	O�@	O�@	O�@A@	O�	P	O�	O�	O�	O�	O�@	O�@	O�@	O�@	O�@F�@	O�@	O�@	O�@	O�@	O�@��@	O�	P	O�@	O�@	O�@	P@	P@H:@	P@	P@	P@	P@	P@E@	P		P	P
	P	P@	P@	P
@	P@	P@@&@	P@	P@	P@	P@	P@E@	P	P	P@	P@	P@	P@	P@�@	P@	P@	P @	P!@	P"@E@	P$	PO	P%	P4	P&	P-	P'@	P(@	P)@	P*@	P+@	P,@�@@	P.	P/@	P0@	P1@	P2@	P3@A@	P5	PB	P6	P<	P7@	P8@	P9@	P:@	P;@E@	P=@	P>@	P?@	P@@	PA@�~@	PC	PI	PD@	PE@	PF@	PG@	PH@E@	PJ@	PK@	PL@	PM@	PN@H @	PP	Pj	PQ	P]	PR	PW	PS@	PT@	PU@	PV@Ae@	PX@	PY@	PZ@	P[@	P\@Ba@	P^	Pd	P_@	P`@	Pa@	Pb@	Pc@Ba@	Pe@	Pf@	Pg@	Ph@	Pi@�@	Pk	Pr@	Pl	Pm@	Pn@	Po@	Pp@	Pq@�@	Ps	Py	Pt@	Pu@	Pv@	Pw@	Px@��@	Pz@	P{@	P|@	P}@	P~@E@	P�	P�	P�	P�	P�	P�	P�	P�	P�	P�	P�@	P�@	P�@	P�@	P�@��@	P�@	P�@	P�@	P�@	P�@Ae@	P�	P�	P�@	P�@	P�@	P�@	P�@A@	P�@	P�@	P�@	P�@	P�@�@	P�	P�	P�	P�	P�@	P�@	P�@	P�@	P�@@&@	P�@	P�@	P�@	P�@	P�@�'@	P�	P�	P�@	P�@	P�@	P�@	P�@@&@	P�@	P�@	P�@	P�@	P�@�@	P�	P�	P�	P�	P�	P�	P�@	P�@	P�@	P�@	P�@Ba@	P�@	P�@	P�@	P�@	P�@H:@@	P�	P�@	P�@	P�@	P�@	P�@az@	P�	P�	P�	P�	P�@	P�@	P�@	P�@	P�@@&@	P�@	P�@	P�@	P�@	P�@�@	P�@	P�@	P�@	P�@	P�@	P�@E@	P�	Q	P�	Q	P�	P�	P�	P�	P�@	P�@	P�@	P�@	P�@��@	P�@	P�@	P�@	P�@	P�@�@	P�	P�	P�@	P�@	P�@	P�@	P�@A@	P�@	P�@	P�@	P�@	P�@A@	Q	Q	Q	Q	Q@	Q@	Q@	Q@	Q@Ae@	Q	@	Q
@	Q@	Q@	Q
@�@	Q	Q	Q@	Q@	Q@	Q@	Q@A@	Q@	Q@	Q@	Q@	Q@�@	Q	Q+	Q	Q$	Q@	Q@	Q @	Q!@	Q"@	Q#@��@	Q%@	Q&@	Q'@	Q(@	Q)@	Q*@A@	Q,	Q9	Q-	Q3	Q.@	Q/@	Q0@	Q1@	Q2@E@	Q4@	Q5@	Q6@	Q7@	Q8@A@@	Q:	Q;@	Q<@	Q=@	Q>@	Q?@Ae@	QA	R�	QB	R	QC	Q�	QD	Qi	QE	QZ	QF	QS	QG	QM	QH@	QI@	QJ@	QK@	QL@��@	QN@	QO@	QP@	QQ@	QR@E�@	QT@	QU@	QV@	QW@	QX@	QY@Ae@	Q[	Qb	Q\@	Q]@	Q^@	Q_@	Q`@	Qa@H:@@	Qc	Qd@	Qe@	Qf@	Qg@	Qh@A@	Qj	Q	Qk	Qr	Ql@	Qm@	Qn@	Qo@	Qp@	Qq@�@	Qs	Qy	Qt@	Qu@	Qv@	Qw@	Qx@F�@	Qz@	Q{@	Q|@	Q}@	Q~@H @	Q�	Q�	Q�	Q�	Q�@	Q�@	Q�@	Q�@	Q�@E�@	Q�@	Q�@	Q�@	Q�@	Q�@E@	Q�	Q�	Q�@	Q�@	Q�@	Q�@	Q�@HG@	Q�@	Q�@	Q�@	Q�@	Q�@��@	Q�	Q�	Q�	Q�	Q�	Q�	Q�	Q�	Q�@	Q�@	Q�@	Q�@	Q�@	Q�@	Q�Ae	Q�Ae	Q�Ae	Q�Ae	Q�Ae	Q�AeAe	Q�	Q�Ae	Q�Ae	Q�Ae	Q�Ae	Q�Ae	Q�Ae	Q�Ae	Q�Ae�Ae	Q�@	Q�@	Q�@	Q�@	Q�@Ae@	Q�	Q�	Q�@	Q�@	Q�@	Q�@	Q�@H:@	Q�@	Q�@	Q�@	Q�@	Q�@E@	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�@Ba@	Q�@	Q�@	Q�@	Q�@	Q�@�@	Q�	Q�	Q�@	Q�@	Q�@	Q�@	Q�@@&@	Q�@	Q�@	Q�@	Q�@	Q�@H�@	Q�	Q�	Q�@	Q�@	Q�@	Q�@	Q�@	Q�@�6@	Q�@	Q�@	Q�@	Q�@	Q�@	R@Ae@	R	Rh	R	R.	R	R	R	R	R	R	R@	R@	R	@	R
@	R@Ae@	R
@	R@	R@	R@	R@H @@	R	R@	R@	R@	R@	R@H @	R	R!@	R	R@	R@	R@	R@	R @Ae@	R"	R(	R#@	R$@	R%@	R&@	R'@�@	R)@	R*@	R+@	R,@	R-@H @	R/	RZ	R0	R=	R1	R7	R2@	R3@	R4@	R5@	R6@�@	R8@	R9@	R:@	R;@	R<@H @	R>	RT	R?@	R@@	RA@	RB@	RC@	RD@	REH:	RFH:	RGH:	RHH:	RIH:	RJH:	RKH:	RLH:	RMH:	RNH:	ROH:H:	RP	RQH:H:	RR	RSH:H:s�	RU@	RV@	RW@	RX@	RY@Ae@	R[@	R\	Rb	R]@	R^@	R_@	R`@	Ra@Ae@	Rc@	Rd@	Re@	Rf@	Rg@H:@	Ri	R�	Rj	R�	Rk	Rx	Rl	Rr	Rm@	Rn@	Ro@	Rp@	Rq@�~@	Rs@	Rt@	Ru@	Rv@	Rw@|�@	Ry	R	Rz@	R{@	R|@	R}@	R~@�@	R�@	R�@	R�@	R�@	R�@�@	R�	R�	R�@	R�@	R�@	R�@	R�@	R�@@&@	R�	R�	R�@	R�@	R�@	R�@	R�@�@	R�@	R�@	R�@	R�@	R�@E@	R�	R�	R�	R�	R�@	R�@	R�@	R�@	R�@	R�@�@	R�@	R�@	R�@	R�@	R�@	R�@�~@	R�	R�@	R�	R�@	R�@	R�@	R�@	R�@�@	R�	R�	R�@	R�@	R�@	R�@	R�@�@	R�@	R�@	R�@	R�@	R�@H:@	R�	S�	R�	SD	R�	S
	R�	R�	R�	R�@	R�	R�@	R�@	R�@	R�@	R�@�@	R�	R�	R�@	R�@	R�@	R�@	R�@�@	R�@	R�@	R�@	R�@	R�@A@	R�	S	R�	S	R�@	R�@	R�@	R�@	R�@	R�@	R��'	R��'	R��'�'	R��'	R��'	R�	R��'	R��'	R��'	R��'	R��'	R��'�'	R��'	R��'	R�	R��'	R��'	R��'	R��'	R��'�'	R�	R��'�'	R�	R��'	R��'	R��'	R��'�'	R��'	R��'	R�	R��'@�'	S@	S@	S@	S@	S@A@@	S	S@	S	@	S
@	S@	S@A@	S	S)	S	S	S	S	S@	S@	S@	S@	S@@&@	S@	S@	S@	S@	S@A@	S	S#	S@	S@	S @	S!@	S"@Ba@	S$@	S%@	S&@	S'@	S(@A@	S*	S7	S+	S1	S,@	S-@	S.@	S/@	S0@A@	S2@	S3@	S4@	S5@	S6@A@	S8	S>	S9@	S:@	S;@	S<@	S=@HG@	S?@	S@@	SA@	SB@	SC@F�@	SE	Sp	SF	S[	SG	SN@	SH	SI@	SJ@	SK@	SL@	SM@�@	SO	SU	SP@	SQ@	SR@	SS@	ST@A@	SV@	SW@	SX@	SY@	SZ@�@	S\	Sc	S]@	S^@	S_@	S`@	Sa@	Sb@H:@	Sd	Sj	Se@	Sf@	Sg@	Sh@	Si@�@	Sk@	Sl@	Sm@	Sn@	So@A@	Sq	S�	Sr	S	Ss	Sy	St@	Su@	Sv@	Sw@	Sx@��@	Sz@	S{@	S|@	S}@	S~@A@	S�	S�	S�@	S�@	S�@	S�@	S�@�@	S�@	S�@	S�@	S�@	S�@A@	S�	S�	S�	S�	S�@	S�@	S�@	S�@	S�@A@	S�@	S�@	S�@	S�@	S�@A@@	S�	S�@	S�@	S�@	S�@	S�@A@	S�	T	S�	S�	S�	S�	S�	S�	S�	S�	S�@	S�@	S�@	S�@	S�@��@	S�@	S�@	S�@	S�@	S�@A@	S�@	S�@	S�@	S�@	S�@	S�@H:@	S�	S�	S�	S�	S�@	S�@	S�@	S�@	S�@�@	S�@	S�@	S�@	S�@	S�@A@	S�	S�	S�@	S�@	S�@	S�@	S�@��@	S�@	S�@	S�@	S�@	S�@F�@	S�	S�	S�	S�	S�	S�	S�@	S�@	S�@	S�@	S�@H�@	S�@	S�@	S�@	S�@	S�@�@	S�@	S�@	S�@	S�@	S�@	S�@Ba@	S�	S�	S�	S�	S�@	S�@	S�@	S�@	S�@	S�@	S�@A@	S�@	S�@	S�@	S�@	S�@E@@	S�	S�@	S�@	S�@	S�@	T@A@	T	T�	T	T	T	T	T	T	T@	T@	T@	T	@	T
@HG@	T@	T
@	T@	T@	T@A@	T	T	T@	T@	T@	T@	T@�'@	T@	T@	T@	T@	T@�@	T	T�	T 	T�	T!@	T"@	T#@	T$@	T%@	T&@	T'AeAe	T(	T)Ae	T*Ae	T+Ae	T,Ae	T-Ae	T.	Tz	T/	Ta	T0	TM	T1	T<	T2	T9	T3	T7	T4
�	T5	T6Ae��N�Ae	T8��
���
�	T:	T;��
���	T=	TA
�	T>	T?��	T@��Ae!9	TB	TI	TC	TF	TD	TEAe!9!9Ae	TG	TH!9AeAe~	TJ	TL	TK!9N�Ae
�N�	TN	TU��	TO	TP	TS	TQ	TR!9AeAe����	TT�!9	TV	T[	TW	TY	TX��~Ae��	TZ!9~	T\	T_	T]	T^N�AeAe
�	T`N�AeN�	Tb!9	Tc	Tm	Td	TgN�	Te	TfN�N�Ae	Th	Tj	TiAeN�Ae	Tk	Tl�N�N�!9	Tn	Tu	To	Tr	Tp	Tq��5���	Ts	Tt�~~!9	Tv	Tw!9
�	Tx	TyN�
�
��	T{	T�	T|	T�	T}	T�	T~	T�!9	T	T�	T�!9
���Ae	T�	T�	T�	T�N�
�
��	T�	T�
�Ae�N�	T�	T�	T�	T�	T�!9N�Ae	T���N���	T�~��~	T�	T�	T�!9	T�	T�~	T�~�	T�	T����!9�5!9	T�	T�!9	T�!9!9Ae	T�Ae	T�Ae!9	T�!9	T�N�Ae	T�@	T�@	T�@	T�@	T�@�@	T�	T�	T�@	T�@	T�@	T�@	T�@��@	T�@	T�@	T�@	T�@	T�@F�@	T�	T�	T�	T�	T�	T�	T�@	T�@	T�@	T�@	T�@�@	T�@	T�@	T�@	T�@	T�@H:@	T�	T�	T�@	T�@	T�@	T�@	T�@�@	T�@	T�@	T�@	T�@	T�@�@	T�	T�	T�	T�	T�@	T�@	T�@	T�@	T�@E@	T�@	T�@	T�@	T�@	T�@A@	T�	T�	T�@	T�@	T�@	T�@	T�@�@	T�@	T�@	T�@	T�@	T�@	T�@	T�az	T�az	T�az	T�az	T�az	T�az	T�az	T�az	T�az	T�az	T�az	T�az	T�az	T�azaz	T�azv�	T�	X(	T�	V{	T�	U�	U	Uc	U	U2	U	U	U	U
@	U	U@	U@	U@	U@	U	@�@	U	U	U@	U
@	U@	U@	U@A@	U@	U@	U@	U@	U@�@	U	U%	U	U	U@	U@	U@	U@	U@E@	U @	U!@	U"@	U#@	U$@�@	U&	U,	U'@	U(@	U)@	U*@	U+@Ae@	U-@	U.@	U/@	U0@	U1@A@	U3	UH	U4	UA	U5	U;	U6@	U7@	U8@	U9@	U:@�@	U<@	U=@	U>@	U?@	U@@�@	UB@	UC@	UD@	UE@	UF@	UG@H:@	UI	UV	UJ	UP	UK@	UL@	UM@	UN@	UO@Ez@	UQ@	UR@	US@	UT@	UU@E@	UW	U]	UX@	UY@	UZ@	U[@	U\@Ae@	U^@	U_@	U`@	Ua@	Ub@�@	Ud	U�	Ue	U|	Uf	Uo	Ug	Ui	Uh@��@	Uj@	Uk@	Ul@	Um@	Un@Ae@	Up	Uv	Uq@	Ur@	Us@	Ut@	Uu@E@	Uw@	Ux@	Uy@	Uz@	U{@�@	U}	U�@	U~	U@	U�@	U�@	U�@	U�@A@	U�	U�	U�@	U�@	U�@	U�@	U�@�@	U�@	U�@	U�@	U�@	U�@�@	U�	U�	U�	U�	U�	U�	U�@	U�@	U�@	U�@	U�@E�@	U�@	U�@	U�@	U�@	U�@�@	U�	U�	U�@	U�@	U�@	U�@	U�@�@	U�@	U�@	U�@	U�@	U�@�@	U�	U�@	U�	U�@	U�@	U�@	U�@	U�@A@	U�@	U�@	U�@	U�@	U�@	U�@�@	U�	V	U�	U�	U�	U�	U�	U�	U�	U�	U�@	U�@	U�@	U�@	U�@F�@	U�@	U�@	U�@	U�@	U�@Ae@	U�	U�	U�@	U�@	U�@	U�@	U�@��@	U�@	U�@	U�@	U�@	U�@�@	U�	U�	U�@	U�@	U�@	U�@	U�@	U�@��@	U�@	U�@	U�@	U�@	U�@	U�@E@	U�	V	U�	U�	U�	U�	U�@	U�@	U�@	U�@	U�@Ba@	U�@	U�@	U�@	U�@	U�@H:@	U�	U�	U�@	U�@	U�@	U�@	U�@az@	V@	V@	V@	V@	V@Ae@	V	V
@	V	V@	V	@	V
@	V@	V@Ae@	V	V	V@	V@	V@	V@	V@�@	V@	V@	V@	V@	V@A@	V	VR	V	V7	V	V*	V	V$	V@	V @	V!@	V"@	V#@Ae@	V%@	V&@	V'@	V(@	V)@E@	V+	V1	V,@	V-@	V.@	V/@	V0@E@	V2@	V3@	V4@	V5@	V6@H:@	V8	VE	V9	V?	V:@	V;@	V<@	V=@	V>@A@	V@@	VA@	VB@	VC@	VD@�@	VF	VL	VG@	VH@	VI@	VJ@	VK@Ae@	VM@	VN@	VO@	VP@	VQ@A@	VS	Vh	VT	Va	VU	V[	VV@	VW@	VX@	VY@	VZ@F�@	V\@	V]@	V^@	V_@	V`@�@@	Vb	Vc@	Vd@	Ve@	Vf@	Vg@�@	Vi	Vt	Vj	Vn	Vk@	Vl@	Vm@Ae@	Vo@	Vp@	Vq@	Vr@	Vs@�@	Vu@	Vv@	Vw@	Vx@	Vy@	Vz@�@	V|	WM	V}	V�	V~	V�	V	V�	V�	V�	V�@	V�@	V�@	V�@	V�@	V�@Ae@	V�	V�	V�@	V�@	V�@	V�@	V�@Ae@	V�@	V�@	V�@	V�@	V�@�@	V�	V�	V�	V�	V�@	V�@	V�@	V�@	V�@@&@	V�@	V�@	V�@	V�@	V�@�@@	V�	V�@	V�@	V�@	V�@	V�@A@	V�	V�	V�	V�	V�@	V�@	V�@	V�@	V�@	V�@@&@	V�	V�	V�@	V�@	V�@	V�@	V�@�@	V�@	V�@	V�@	V�@	V�@�@	V�	V�	V�	V�	V�@	V�@	V�@	V�@	V�@Ae@	V�@	V�@	V�@	V�@	V�@�@@	V�	V�@	V�@	V�@	V�@	V�@�@	V�	W	V�	V�	V�	V�	V�	V�	V�@	V�@	V�@	V�@	V�@Ae@	V�@	V�@	V�@	V�@	V�@E@	V�	V�	V�@	V�@	V�@	V�@	V�@@&@	V�@	V�@	V�@	V�@	V�@F�@	V�	V�	V�	V�	V�@	V�@	V�@	V�@	V�@Ae@	V�@	V�@	V�@	V�@	V�@�Y@	W	W	W@	W@	W@	W@	W@F�@	W@	W@	W	@	W
@	W@F�@	W
	W"	W	W	W	W	W@	W@	W@	W@	W@�@	W@	W@	W@	W@	W@A@	W@	W@	W@	W@	W @	W!@F�@	W#	W0	W$	W*	W%@	W&@	W'@	W(@	W)@��@	W+@	W,@	W-@	W.@	W/@F�@	W1	WG	W2@	W3@	W4@	W5@	W6@	W7@	W8E	W9E	W:E	W;E	W<E	W=E	W>E	W?E	W@E	WAE	WBE	WCE	WDE	WEEE	WFE�	WH@	WI@	WJ@	WK@	WL@�@	WN	W�	WO	W�	WP	Wk	WQ	W^	WR	WX	WS@	WT@	WU@	WV@	WW@F�@	WY@	WZ@	W[@	W\@	W]@�'@	W_	We	W`@	Wa@	Wb@	Wc@	Wd@Ae@	Wf@	Wg@	Wh@	Wi@	Wj@E@	Wl	Ws	Wm@	Wn@	Wo@	Wp@	Wq@	Wr@Ba@	Wt	Wz	Wu@	Wv@	Ww@	Wx@	Wy@�@	W{@	W|@	W}@	W~@	W@Ae@	W�	W�	W�	W�	W�	W�	W�@	W�@	W�@	W�@	W�@�@	W�@	W�@	W�@	W�@	W�@�@	W�	W�	W�@	W�@	W�@	W�@	W�@A@	W�@	W�@	W�@	W�@	W�@Ae@	W�	W�	W�	W�	W�@	W�@	W�@	W�@	W�@A@	W�@	W�@	W�@	W�@	W�@�@	W�	W�	W�@	W�@	W�@	W�@	W�@��@	W�@	W�@	W�@	W�@	W�@�@	W�	X	W�	W�	W�	W�@	W�	W�@	W�@	W�@	W�@	W�@�@	W�	W�	W�@	W�@	W�@	W�@	W�@E@	W�@	W�@	W�@	W�@	W�@�@	W�	W�	W�	W�	W�@	W�@	W�@	W�@	W�@A@	W�@	W�@	W�@	W�@	W�@�@	W�	W�	W�@	W�@	W�@	W�@	W�@	W�@	W�	W�@&	W�@&	W�	W�	W�	W�	W�	W�	W�	W�@&��@&	W��*@&	W�@&	W�@&�@&	W�@&	W�	W�@&	W���@&	W�@&�@&	W�@&	W�@&	W�@&	W�@&	W�@&@&	W���@&	W�@	W�@	X@	X@	X@E@	X	X	X	X	X	X	X@	X@	X	@	X
@	X@Ae@	X
@	X@	X@	X@	X@�@@	X	X@	X@	X@	X@	X@�@	X	X!@	X	X@	X@	X@	X@	X @Ae@@	X"	X#@	X$@	X%@	X&@	X'@�@	X)	Y�	X*	X�	X+	X�	X,	Xc	X-	XH	X.	X;	X/	X5	X0@	X1@	X2@	X3@	X4@A@	X6@	X7@	X8@	X9@	X:@�@	X<	XB	X=@	X>@	X?@	X@@	XA@Ae@	XC@	XD@	XE@	XF@	XG@@&@	XI	XV	XJ	XP	XK@	XL@	XM@	XN@	XO@A@	XQ@	XR@	XS@	XT@	XU@�@	XW	X]	XX@	XY@	XZ@	X[@	X\@�@	X^@	X_@	X`@	Xa@	Xb@�@	Xd	X	Xe	Xr	Xf	Xl	Xg@	Xh@	Xi@	Xj@	Xk@H @	Xm@	Xn@	Xo@	Xp@	Xq@�g@	Xs	Xy	Xt@	Xu@	Xv@	Xw@	Xx@�@	Xz@	X{@	X|@	X}@	X~@H @	X�	X�	X�	X�	X�@	X�@	X�@	X�@	X�@Ez@	X�@	X�@	X�@	X�@	X�@F�@	X�	X�	X�@	X�@	X�@	X�@	X�@A@	X�@	X�@	X�@	X�@	X�@H @	X�	X�	X�	X�	X�	X�	X�	X�	X�@	X�@	X�@	X�@	X�@�@	X�@	X�@	X�@	X�@	X�@�@	X�	X�	X�@	X�@	X�@	X�@	X�@�@	X�@	X�@	X�@	X�@	X�@az@	X�	X�	X�	X�	X�@	X�@	X�@	X�@	X�@A@	X�@	X�@	X�@	X�@	X�@H:@@	X�	X�@	X�@	X�@	X�@	X�@A@	X�	X�	X�@	X�@	X�@	X�@	X�@	X�@	X�@��@	X�	X�@	X�	X�@	X�@	X�@	X�@	X�@F�@	X�	X�	X�@	X�@	X�@	X�@	X�@E@	X�@	X�@	X�@	X�@	X�@�@	X�	Ys	X�	Y<	X�	Y!	X�	Y	X�	Y	X�@	X�@	X�@	X�@	X�@	X�@	X�AeAe	X�	X�Ae	X�Ae	X�Ae	X�Ae	X�Ae	X�Ae	X�Ae	X�Ae	YAe	Y	Y	Y	Y	Y	Y	Y	Y!9AeAe
�	YAeAe��	Y	Ae	Y
~�Ae	YAe	Y
AeAe	YAe	Y	YAe	YAe	YAe	YAeAe!9	Y@	Y@	Y@	Y@	Y@�@@	Y	Y@	Y@	Y@	Y@	Y @|�@	Y"	Y/	Y#	Y)	Y$@	Y%@	Y&@	Y'@	Y(@H:@	Y*@	Y+@	Y,@	Y-@	Y.@�@	Y0	Y6	Y1@	Y2@	Y3@	Y4@	Y5@Ae@	Y7@	Y8@	Y9@	Y:@	Y;@�@	Y=	YX	Y>	YK	Y?	YE	Y@@	YA@	YB@	YC@	YD@��@	YF@	YG@	YH@	YI@	YJ@A@	YL	YR	YM@	YN@	YO@	YP@	YQ@Ae@	YS@	YT@	YU@	YV@	YW@�@	YY	Yf	YZ	Y`	Y[@	Y\@	Y]@	Y^@	Y_@E@	Ya@	Yb@	Yc@	Yd@	Ye@��@	Yg	Ym	Yh@	Yi@	Yj@	Yk@	Yl@�@	Yn@	Yo@	Yp@	Yq@	Yr@�@	Yt	Y�	Yu	Y�	Yv	Y�	Yw	Y}	Yx@	Yy@	Yz@	Y{@	Y|@��@	Y~@	Y@	Y�@	Y�@	Y�@Ae@	Y�@	Y�@	Y�@	Y�@	Y�@	Y�@�@	Y�	Y�	Y�	Y�	Y�@	Y�@	Y�@	Y�@	Y�@�@	Y�@	Y�@	Y�@	Y�@	Y�@�@@	Y�	Y�@	Y�@	Y�@	Y�@	Y�@E@	Y�	Y�	Y�	Y�	Y�	Y�	Y�@	Y�@	Y�@	Y�@	Y�@HG@	Y�@	Y�@	Y�@	Y�@	Y�@�@	Y�@	Y�@	Y�@	Y�@	Y�@	Y�@E@	Y�	Y�	Y�	Y�	Y�@	Y�@	Y�@	Y�@	Y�@Ez@	Y�@	Y�@	Y�@	Y�@	Y�@�'@	Y�	Y�	Y�@	Y�@	Y�@	Y�@	Y�@A@	Y�@	Y�@	Y�@	Y�@	Y�@�@	Y�	Z�	Y�	Z(	Y�	Y�	Y�	Y�	Y�@	Y�@	Y�@	Y�@	Y�@	Y�@	Y�@�'@	Y�	Y�	Y�	Y�	Y�@	Y�@	Y�@	Y�@	Y�@A@	Y�@	Y�@	Y�@	Y�@	Y�@�@	Y�	Y�	Y�@	Y�@	Y�@	Y�@	Y�@A@	Y�@	Y�@	Y�@	Y�@	Y�@A@	Y�	Z	Y�	Z	Y�	Z	Y�@	Y�@	Y�@	Y�@	Y�@@&@	Z@	Z@	Z@	Z@	Z@A@	Z	Z
	Z@	Z	@	Z
@	Z@	Z@E@	Z@	Z@	Z@	Z@	Z@�~@	Z	Z	Z@	Z@	Z@	Z@	Z@	Z@E@	Z	Z"	Z@	Z@	Z@	Z @	Z!@H:@	Z#@	Z$@	Z%@	Z&@	Z'@H @	Z)	ZZ	Z*	ZE	Z+	Z8	Z,	Z2	Z-@	Z.@	Z/@	Z0@	Z1@HG@	Z3@	Z4@	Z5@	Z6@	Z7@az@	Z9	Z?	Z:@	Z;@	Z<@	Z=@	Z>@H:@	Z@@	ZA@	ZB@	ZC@	ZD@A@	ZF	ZS	ZG	ZM	ZH@	ZI@	ZJ@	ZK@	ZL@�@	ZN@	ZO@	ZP@	ZQ@	ZR@F�@@	ZT	ZU@	ZV@	ZW@	ZX@	ZY@F�@	Z[	Zp	Z\	Zc	Z]@	Z^@	Z_@	Z`@	Za@	Zb@A@	Zd	Zj	Ze@	Zf@	Zg@	Zh@	Zi@�'@	Zk@	Zl@	Zm@	Zn@	Zo@�@	Zq	Z~	Zr	Zx	Zs@	Zt@	Zu@	Zv@	Zw@E@	Zy@	Zz@	Z{@	Z|@	Z}@A@	Z	Z�	Z�@	Z�@	Z�@	Z�@	Z�@F�@	Z�@	Z�@	Z�@	Z�@	Z�@Ae@	Z�	Z�	Z�	Z�	Z�	Z�	Z�	Z�	Z�	Z�	Z�@	Z�@	Z�@	Z�@	Z�@�$@	Z�@	Z�@	Z�@	Z�@	Z�@�@	Z�	Z�	Z�@	Z�@	Z�@	Z�@	Z�@�@	Z�@	Z�@	Z�@	Z�@	Z�@Ae@	Z�	Z�	Z�	Z�	Z�@	Z�@	Z�@	Z�@	Z�@@&@	Z�@	Z�@	Z�@	Z�@	Z�@A@	Z�	Z�	Z�@	Z�@	Z�@	Z�@	Z�@H:@	Z�@	Z�@	Z�@	Z�@	Z�@Ae@	Z�	Z�	Z�	Z�	Z�	Z�	Z�@	Z�@	Z�@	Z�@	Z�@@&@	Z�@	Z�@	Z�@	Z�@	Z�@E@	Z�	Z�	Z�@	Z�@@&@	Z�@	Z�@	Z�@	Z�@	Z�@	Z�@	Z�H:	Z��H:	Z�	Z�H:	Z�H:	Z�H:	Z�H:	Z�H:H:	Z�H:s�	Z�	Z�	Z�	Z�	Z�@	Z�@	Z�@	Z�@	Z�@E@	Z�@	Z�@	Z�@	Z�@	Z�@H:@@	Z�	Z�@	Z�@	Z�@	Z�@	Z�@Ba@	Z�	[.	Z�	[	Z�	[	[	[	[@	[@	[@	[@	[@�~@	[@	[@	[	@	[
@	[@|�@	[
	[	[@	[@	[@	[@	[@E@	[@	[@	[@	[@	[@H:@	[	['	[	[!	[@	[@	[@	[@	[ @A@	["@	[#@	[$@	[%@	[&@H @	[(@	[)@	[*@	[+@	[,@	[-@Ae@	[/	[J	[0	[=	[1	[7	[2@	[3@	[4@	[5@	[6@�@	[8@	[9@	[:@	[;@	[<@�@	[>	[D	[?@	[@@	[A@	[B@	[C@E@	[E@	[F@	[G@	[H@	[I@�@	[K	[R@	[L	[M@	[N@	[O@	[P@	[Q@H:@	[S	[Y	[T@	[U@	[V@	[W@	[X@E@	[Z@	[[@	[\@	[]@	[^@H:@	[`	a�	[a	^�	[b	]	[c	\.	[d	[�	[e	[�	[f	[{	[g	[t	[h	[n	[i@	[j@	[k@	[l@	[m@�@	[o@	[p@	[q@	[r@	[s@A@@	[u	[v@	[w@	[x@	[y@	[z@A@	[|	[�	[}	[�	[~@	[@	[�@	[�@	[�@Ez@	[�@	[�@	[�@	[�@	[�@A@@	[�	[�@	[�@	[�@	[�@	[�@A@	[�	[�	[�	[�	[�	[�	[�@	[�@	[�@	[�@	[�@@&@	[�@	[�@	[�@	[�@	[�@Ba@	[�	[�	[�@	[�@	[�@	[�@	[�@Ae@	[�@	[�@	[�@	[�@	[�@H:@	[�	[�	[�	[�	[�@	[�@	[�@	[�@	[�@�'@	[�@	[�@	[�@	[�@	[�@�@	[�	[�	[�@	[�@	[�@	[�@	[�@H:@	[�@	[�@	[�@	[�@	[�@|�@	[�	[�	[�	[�	[�	[�@	[�	[�@	[�@	[�@	[�@	[�@�@	[�	[�	[�@	[�@	[�@	[�@	[�@A@	[�@	[�@	[�@	[�@	[�@��@	[�	[�	[�	[�	[�@	[�@	[�@	[�@	[�@E@	[�@	[�@	[�@	[�@	[�@F�@	[�	[�	[�@	[�@	[�@	[�@	[�@A@	[�@	[�@	[�@	[�@	[�@@&@	[�	\	[�	\	[�	\	[�@	[�@	[�@	\@	\@Ae@	\@	\@	\@	\@	\@@&@	\		\	\
@	\@	\@	\
@	\@	\@	\@&	\@&	\@&@&��	\@	\@	\@	\@	\@�@	\	\'	\	\!	\@	\@	\@	\@	\ @A@	\"@	\#@	\$@	\%@	\&@@&@@	\(	\)@	\*@	\+@	\,@	\-@@&@	\/	\�	\0	\a	\1	\F	\2	\9@	\3	\4@	\5@	\6@	\7@	\8@H:@	\:	\@	\;@	\<@	\=@	\>@	\?@A@	\A@	\B@	\C@	\D@	\E@�@	\G	\T	\H	\N	\I@	\J@	\K@	\L@	\M@Ae@	\O@	\P@	\Q@	\R@	\S@�@	\U	\[	\V@	\W@	\X@	\Y@	\Z@�@	\\@	\]@	\^@	\_@	\`@�@	\b	\}	\c	\p	\d	\j	\e@	\f@	\g@	\h@	\i@�@	\k@	\l@	\m@	\n@	\o@|�@	\q	\w	\r@	\s@	\t@	\u@	\v@A@	\x@	\y@	\z@	\{@	\|@F�@	\~	\�	\	\�	\�@	\�@	\�@	\�@	\�@A@	\�@	\�@	\�@	\�@	\�@E@	\�	\�	\�@	\�@	\�@	\�@	\�@E@	\�@	\�@	\�@	\�@	\�@Ba@	\�	\�	\�	\�	\�	\�	\�	\�	\�@	\�@	\�@	\�@	\�@
_@	\�@	\�@	\�@	\�@	\�@E@	\�	\�	\�@	\�@	\�@	\�@	\�@H:@	\�@	\�@	\�@	\�@	\�@H @	\�	\�	\�	\�	\�@	\�@Ba@	\�@	\�@	\�@	\�@	\�@�@	\�	\�	\�@	\�@	\�@	\�@	\�@Ae@	\�@	\�@	\�@	\�@	\�@A@	\�	\�	\�	\�	\�	\�	\�@	\�@	\�@	\�@@&@	\�@	\�@	\�@	\�@	\�@E@	\�	\�	\�@	\�@	\�@	\�@	\�@Ae@	\�@	\�@	\�@	\�@	\�@E@	\�	\�	\�	\�	\�@	\�@	\�@	\�@	\�@Ae@	\�@	\�@	\�@	\�@	\�@�@	\�	\�	\�@	\�@	\�@	\�@	\�@��@	\�@	\�@	]@	]@	]@E@	]	]�	]	]V	]	]1	]	]	]	]	]		]	]
@	]@	]@	]
@	]@@&@	]@	]@	]@	]@	]@�@@	]	]@	]@	]@	]@	]@�@	]	]*	]	]$	]@	] @	]!@	]"@	]#@E@	]%@	]&@	]'@	](@	])@HG@@	]+	],@	]-@	].@	]/@	]0@H�@	]2	]G	]3	]@	]4	]:	]5@	]6@	]7@	]8@	]9@@&@	];@	]<@	]=@	]>@	]?@|�@@	]A	]B@	]C@	]D@	]E@	]F@F�@	]H	]O@	]I	]J@	]K@	]L@	]M@	]N@A@@	]P	]Q@	]R@	]S@	]T@	]U@��@	]W	]�	]X	]�	]Y	]~	]Z	]x	][@	]\@	]]@	]^@	]_@	]`@	]aAe	]bAe	]cAe	]dAe	]eAe	]fAe	]gAe	]hAe	]iAe	]jAe	]kAe	]lAe	]mAeAe	]n	]oAeAe	]p	]qAe	]rAe	]sAe	]tAe	]uAe	]vAe	]wAe
�Ae	]y@	]z@	]{@	]|@	]}@F�@	]	]�	]�@	]�@	]�@	]�@	]�@az@	]�@	]�@	]�@	]�@	]�@Ae@	]�	]�@	]�	]�@	]�@	]�@	]�@	]�@Ae@	]�	]�	]�@	]�@	]�@	]�@	]�@�@	]�@	]�@	]�@	]�@	]�@H:@	]�	]�	]�@	]�@	]�@	]�@	]�@	]�@Ae@	]�	]�	]�	]�	]�@	]�@	]�@	]�@	]�@Ae@	]�@	]�@	]�@	]�@	]�@E@@	]�	]�@	]�@	]�@	]�@	]�@�@	]�	^'	]�	]�	]�	]�	]�	]�	]�	]�	]�@	]�@	]�@	]�@	]�@HG@	]�@	]�@	]�@	]�@	]�@@&@@	]�	]�@	]�@	]�@	]�@	]�@E@	]�	]�	]�	]�	]�@	]�@	]�@	]�@	]�@�@	]�@	]�@	]�@	]�@	]�@|�@	]�	]�	]�@	]�@	]�@	]�@	]�@�~@	]�@	]�@	]�@	]�@	]�@Ez@	]�	^	]�	]�	]�	]�	]�@	]�@	]�@	]�@	]�@
_@	]�@	]�@	]�@	]�@	]�@H:@	^	^	^@	^@	^@	^@	^@�~@	^@	^@	^	@	^
@	^@@&@	^
	^	^	^	^@	^@	^@	^@	^@�g@	^@	^@	^@	^@	^@�@	^	^!	^@	^@	^@	^@	^ @A@	^"@	^#@	^$@	^%@	^&@�@	^(	^Y	^)	^D	^*	^7	^+	^1	^,@	^-@	^.@	^/@	^0@Ae@	^2@	^3@	^4@	^5@	^6@�@	^8	^>	^9@	^:@	^;@	^<@	^=@A@	^?@	^@@	^A@	^B@	^C@H @	^E	^L	^F@	^G@	^H@	^I@	^J@	^K@E@	^M	^S	^N@	^O@	^P@	^Q@	^R@�@	^T@	^U@	^V@	^W@	^X@F�@	^Z	^u	^[	^h	^\	^b	^]@	^^@	^_@	^`@	^a@�@	^c@	^d@	^e@	^f@	^g@H @	^i	^o	^j@	^k@	^l@	^m@	^n@��@	^p@	^q@	^r@	^s@	^t@H:@	^v	^�	^w	^}	^x@	^y@	^z@	^{@	^|@��@	^~@	^@	^�@	^�@	^�@�g@@	^�	^�@	^�@	^�@	^�@	^�@E@	^�	_�	^�	_p	^�	_ 	^�	^�	^�	^�	^�	^�	^�	^�	^�@	^�@	^�@	^�@	^�@A@	^�@	^�@	^�@	^�@	^�@H�@	^�	^�	^�@	^�@	^�@	^�@	^�@A@	^�@	^�@	^�@	^�@	^�@A@	^�	^�	^�	^�	^�@	^�@	^�@	^�@	^�@F�@	^�@	^�@	^�@	^�@	^�@	^�@	^�H:	^�H:	^�H:	^�H:	^�H:	^�H:	^�H:	^�H:	^�H:	^�H:	^�	^�	^�	^�	^�	^�	^�	^�H:	^���H:	^�H:H:�H:	^�	^�H:H:�	^�	^�	^�	^�	^�H:H:N@	^�	^��H:����	^�	^�	^�	^���H:�#G	^�H:N@��H:	^�H:	^�	^�	^�H:	^�s��	^�	^��,iOH:	^�	^�	^�@	^�@	^�@	^�@	^�@A@	^�@	^�@	^�@	^�@	^�@�@	^�	_	^�	^�	^�	^�	^�@	^�@	^�@	^�@	^�@E@	^�@	^�@	^�@	^�@	^�@A@	^�	_	_@	_@	_@	_@	_@E@	_@	_@	_@	_	@	_
@�@	_	_	_
	_	_@	_@	_@	_@	_@Ba@	_@	_@	_@	_@	_@H:@@	_	_@	_@	_@	_@	_@H @	_!	_?	_"	_*@	_#@	_$	_%@	_&@	_'@	_(@	_)@�@	_+	_2	_,@	_-@	_.@	_/@	_0@	_1@E@	_3	_9	_4@	_5@	_6@	_7@	_8@F�@	_:@	_;@	_<@	_=@	_>@�@	_@	_[	_A	_N	_B	_H	_C@	_D@	_E@	_F@	_G@@&@	_I@	_J@	_K@	_L@	_M@�@	_O	_U	_P@	_Q@	_R@	_S@	_T@Ae@	_V@	_W@	_X@	_Y@	_Z@�@	_\	_i	_]	_c	_^@	__@	_`@	_a@	_b@E@	_d@	_e@	_f@	_g@	_h@A@@	_j	_k@	_l@	_m@	_n@	_o@Ba@	_q	_�	_r	_{	_s@	_t@	_u@	_v@	_w@	_x@	_y@	_z@E@	_|	_�	_}	_�	_~	_�	_@	_�@	_�@	_�@	_�@F�@	_�@	_�@	_�@	_�@	_�@E@	_�	_�	_�@	_�@	_�@	_�@	_�@�@	_�@	_�@	_�@	_�@	_�@H @	_�	_�	_�@	_�@	_�@	_�@	_�@	_�@��@	_�	_�	_�@	_�@	_�@	_�@	_�@��@	_�@	_�@	_�@	_�@	_�@�'@	_�	_�	_�	_�	_�	_�	_�	_�	_�@	_�@	_�@	_�@	_�@E@	_�@	_�@	_�@	_�@	_�@�@@	_�	_�@	_�@	_�@	_�@	_�@�@	_�	_�@	_�	_�@	_�@	_�@	_�@	_�@E@@	_�	_�@	_�@	_�@	_�@	_�@�@	_�	_�	_�	_�	_�	_�	_�@	_�@	_�@	_�@	_�@H:@	_�@	_�@	_�@	_�@	_�@Ez@	_�@	_�@	_�@	_�@	_�@	_�@Ba@	_�	_�@	_�	_�@	_�@	_�@	_�@	_�@�@	_�	_�	_�@	_�@	_�@	_�@	_�@�@	_�@	_�@	_�@	_�@	_�@�@	_�	`�	_�	`\	`	`1	`	`	`	`	`	`		`@	`@	`@	`@	`@Ae@	`
@	`@	`@	`
@	`@Ez@@	`	`@	`@	`@	`@	`@�@	`	`$	`	`	`@	`@	`@	`@	`@A@	`@	` @	`!@	`"@	`#@��@	`%	`+	`&@	`'@	`(@	`)@	`*@�@	`,@	`-@	`.@	`/@	`0@E@	`2	`G	`3	`:@	`4	`5@	`6@	`7@	`8@	`9@�@	`;	`A	`<@	`=@	`>@	`?@	`@@�@	`B@	`C@	`D@	`E@	`F@�@	`H	`U	`I	`O	`J@	`K@	`L@	`M@	`N@|�@	`P@	`Q@	`R@	`S@	`T@A@@	`V	`W@	`X@	`Y@	`Z@	`[@A@	`]	`{	`^	`m	`_	`f@	``	`a@	`b@	`c@	`d@	`e@A@@	`g	`h@	`i@	`j@	`k@	`l@A@@	`n	`o	`u	`p@	`q@	`r@	`s@	`t@�@	`v@	`w@	`x@	`y@	`z@E@	`|	`�	`}	`�	`~	`�	`@	`�@	`�@	`�@	`�@@&@	`�@	`�@	`�@	`�@	`�@E@	`�	`�	`�@	`�@	`�@	`�@	`�@Ba@	`�@	`�@	`�@	`�@	`�@H�@	`�	`�	`�	`�	`�@	`�@	`�@	`�@	`�@��@	`�@	`�@	`�@	`�@	`�@H�@	`�	`�	`�@	`�@	`�@	`�@�@	`�@	`�@	`�@	`�@	`�@H�@	`�	a0	`�	a	`�	`�	`�	`�	`�@	`�@	`�@	`�@	`�@	`�@Ae@	`�	`�	`�@	`�@	`�@	`�@	`�@Ae@	`�@	`�@	`�@	`�@	`�@@&@	`�	`�	`�	`�	`�@	`�@	`�@	`�@	`�@A@	`�@	`�@	`�@	`�@	`�@HG@	`�	`�	`�@	`�@	`�@	`�@	`�@	`�@	`�@	`�@��@	`�@	`�@	`�@	`�@	`�@	`�@	`�Ae	`�Ae	`�Ae	`�Ae	`�Ae	`�Ae	`�Ae	`�	`�	`�	`�Ae	`�Ae	`�
��	`�	`�	`�Ae~B�	`�	`�B�AeN�e1	`�Ae	`�	`�	`�	`��N�Ae�xB�	`�Ae��	a	a	a	a	a	a		a@	a@	a@	a@	a@E@	a
@	a@	a@	a
@	a@�@	a	a	a@	a@	a@	a@	a@�@	a@	a@	a@	a@	a@H @	a	a#@	a	a@	a @	a!@	a"@H:@	a$	a*	a%@	a&@	a'@	a(@	a)@|�@	a+@	a,@	a-@	a.@	a/@A@	a1	a\	a2	aG	a3	a@	a4	a:	a5@	a6@	a7@	a8@	a9@Ae@	a;@	a<@	a=@	a>@	a?@A@	aA@	aB@	aC@	aD@	aE@	aF@�@	aH	aU	aI	aO	aJ@	aK@	aL@	aM@	aN@E@	aP@	aQ@	aR@	aS@	aT@Ae@@	aV	aW@	aX@	aY@	aZ@	a[@�@	a]	ax	a^	ak	a_	ae	a`@	aa@	ab@	ac@	ad@Ez@	af@	ag@	ah@	ai@	aj@Ba@	al	ar	am@	an@	ao@	ap@	aq@�@	as@	at@	au@	av@	aw@�@	ay	a�	az	a�	a{@	a|@	a}@	a~@	a@��@	a�@	a�@	a�@	a�@	a�@Ae@@	a�	a�@	a�@	a�@	a�@	a�@E@	a�	d�	a�	c_	a�	b�	a�	b 	a�	a�	a�	a�	a�@	a�	a�	a�@	a�@	a�@	a�@	a�@�@	a�@	a�@	a�@	a�@	a�@�'@	a�	a�	a�	a�	a�@	a�@	a�@	a�@	a�@Ae@	a�@	a�@	a�@	a�@	a�@	a�@	a�H:	a�H:	a�	a�	a�H:	a�H:	a�H:	a�	a�H:	a�	a�H:H:	a�	a�H:H:	a�	a�H:	a�	a�H:	a�	a�H:	a�H:	a�H:	a�H:	a�H:	a�H:	a�H:	a�H:	a�H:	a�H:	a�H:	a�H:H:	a�	a�H:	a�H:	a�	a�H:s�s�H:	a�H:H:s�	a�H:	a�H:	a�H:H:	a�	a�H:	a�H:	a�	a�	a�H:H:s�	a�H:�s�	a�H:	a�H:	a�H:	a�H:s��@	a�	a�@	a�@	a�@	a�@	a�@A@	a�	b	a�	a�	a�	a�	a�@	a�@	a�@	a�@	a�@�@	a�@	a�@	a�@	a�@	a�@A@	a�	a�	a�@	a�@	a�@	a�@	a�@�@	b@	b@	b@	b@	b@A@	b	b	b	b
	b@	b	@	b
@	b@	b@A@	b@	b@	b@	b@	b@Ez@	b	b	b@	b@	b@	b@	b@�@	b@	b@	b@	b@	b@A@	b!	bR	b"	b=	b#	b0	b$	b*	b%@	b&@	b'@	b(@	b)@Ae@	b+@	b,@	b-@	b.@	b/@A@	b1	b7	b2@	b3@	b4@	b5@	b6@��@	b8@	b9@	b:@	b;@	b<@A@	b>	bE@	b?	b@@	bA@	bB@	bC@	bD@A@	bF	bL	bG@	bH@	bI@	bJ@	bK@E@	bM@	bN@	bO@	bP@	bQ@A@	bS	bn	bT	ba	bU	b[	bV@	bW@	bX@	bY@	bZ@Ae@	b\@	b]@	b^@	b_@	b`@A@	bb	bh	bc@	bd@	be@	bf@	bg@H:@	bi@	bj@	bk@	bl@	bm@H�@	bo	b|	bp	bv	bq@	br@	bs@	bt@	bu@@&@	bw@	bx@	by@	bz@	b{@H @	b}	b�	b~@	b@	b�@	b�@	b�@�@	b�@	b�@	b�@	b�@	b�@H @	b�	b�	b�	b�	b�	b�	b�	b�	b�	b�	b�@	b�@H:@	b�@	b�@	b�@	b�@	b�@H�@	b�	b�	b�@	b�@	b�@	b�@	b�@E@	b�@	b�@	b�@	b�@	b�@H�@	b�	b�	b�	b�	b�@	b�@	b�@	b�@	b�@�@	b�@	b�@	b�@	b�@	b�@A@	b�	b�	b�@	b�@	b�@	b�@	b�@E@	b�@	b�@	b�@	b�@	b�@A@	b�	b�	b�	b�	b�	b�	b�@	b�@	b�@	b�@	b�@@&@	b�@	b�@	b�@	b�@	b�@E@	b�	b�	b�@	b�@	b�@	b�@	b�@Ae@	b�@	b�@	b�@	b�@	b�@�@	b�	b�	b�	b�	b�@	b�@	b�@	b�@	b�@@&@	b�@	b�@	b�@	b�@	b�@E@@	b�	b�@	b�@	b�@	b�@	b�@�@	b�	c(	b�	c
	b�	c	b�	b�	b�@	b�@	b�@	b�@	b�@|�@	b�@	b�@	b�@	b�@	b�@F�@	c	c	c@	c@	c@	c@	c@Ae@	c@	c	@	c
@	c@	c@H:@	c	c	c	c	c@	c@	c@	c@	c@A@	c@	c@	c@	c@	c@�@	c	c"	c@	c@	c@	c @	c!@�@	c#@	c$@	c%@	c&@	c'@�@	c)	cD	c*	c7	c+	c1	c,@	c-@	c.@	c/@	c0@@&@	c2@	c3@	c4@	c5@	c6@�@	c8	c>	c9@	c:@	c;@	c<@	c=@H:@	c?@	c@@	cA@	cB@	cC@�@	cE	cR	cF	cL	cG@	cH@	cI@	cJ@	cK@�@	cM@	cN@	cO@	cP@	cQ@E@	cS	cY	cT@	cU@	cV@	cW@	cX@�@	cZ@	c[@	c\@	c]@	c^@Ba@	c`	d-	ca	c�	cb	c�	cc	c~	cd	cq	ce	ck	cf@	cg@	ch@	ci@	cj@��@	cl@	cm@	cn@	co@	cp@A@	cr	cx	cs@	ct@	cu@	cv@	cw@A@	cy@	cz@	c{@	c|@	c}@��@	c	c�	c�	c�	c�@	c�@	c�@	c�@	c�@Ae@	c�@	c�@	c�@	c�@	c�@A@	c�	c�	c�@	c�@	c�@	c�@	c�@H:@	c�@	c�@	c�@	c�@	c�@�@	c�	c�	c�	c�	c�	c�	c�@	c�@	c�@	c�@	c�@Ae@	c�@	c�@	c�@	c�@	c�@�@	c�	c�	c�@	c�@	c�@	c�@	c�@A@	c�@	c�@	c�@	c�@	c�@H @	c�	c�	c�	c�	c�@	c�@	c�@	c�@	c�@Ae@	c�@	c�@	c�@	c�@	c�@�@	c�	c�	c�@	c�@	c�@	c�@	c�@�@	c�@	c�@	c�@	c�@	c�@A@	c�	d	c�	c�	c�	c�	c�	c�	c�@	c�@	c�@	c�@	c�@�'@	c�@	c�@	c�@	c�@	c�@�@@	c�	c�@	c�@	c�@	c�@	c�@Ae@	c�	c�	c�	c�	c�@	c�@	c�@	c�@	c�@Ae@	c�@	c�@	c�@	c�@	c�@@&@	c�	c�	c�@	c�@	c�@	c�@	c�@�@	c�@	c�@	c�@	d@	d@�@	d	d	d	d	d	d	d@	d@	d@	d	@	d
@Ae@	d@	d
@	d@	d@	d@A@	d	d	d@	d@	d@	d@	d@Ez@	d@	d@	d@	d@	d@A@	d	d&	d @	d!@	d"@	d#@	d$@	d%@Ae@@	d'	d(@	d)@	d*@	d+@	d,@A@	d.	d�	d/	d`	d0	dE	d1	d>	d2	d8	d3@	d4@	d5@	d6@	d7@HG@	d9@	d:@	d;@	d<@	d=@A@@	d?	d@@	dA@	dB@	dC@	dD@�@	dF	dS	dG	dM	dH@	dI@	dJ@	dK@	dL@�@	dN@	dO@	dP@	dQ@	dR@E@	dT	dZ	dU@	dV@	dW@	dX@	dY@Ae@	d[@	d\@	d]@	d^@	d_@E@	da	d|	db	do	dc	di	dd@	de@	df@	dg@	dh@Ae@	dj@	dk@	dl@	dm@	dn@�@	dp	dv	dq@	dr@	ds@	dt@	du@H:@	dw@	dx@	dy@	dz@	d{@H�@	d}	d�	d~	d�	d@	d�@	d�@	d�@	d�@H @	d�@	d�@	d�@	d�@	d�@Ae@	d�@	d�@	d�@	d�@	d�@	d�@Ba@	d�	d�	d�	d�	d�	d�	d�	d�	d�@	d�@	d�@	d�@	d�@HG@	d�@	d�@	d�@	d�@	d�@�@	d�@	d�@	d�@	d�@	d�@	d�@�@	d�	d�	d�	d�	d�@	d�@	d�@	d�@	d�@Ae@	d�@	d�@	d�@	d�@	d�@�@	d�	d�	d�@	d�@	d�@	d�@	d�@A@	d�@	d�@	d�@	d�@	d�@��@	d�	d�	d�	d�	d�	d�	d�@	d�@	d�@	d�@	d�@Ae@	d�@	d�@	d�@	d�@	d�@E@	d�@	d�@	d�@	d�@	d�@	d�@H:@	d�@	d�	d�	d�@	d�@	d�@	d�@	d�@A@	d�@	d�@	d�@	d�@	d�@@&@	d�	fx	d�	e�	d�	e9	d�	e	d�	d�	d�@	d�	d�	d�@	d�@	d�@	d�@	d�@@&@	d�@	d�@	d�@	d�@	d�@@&@	d�	e	d�	e	d�@	d�@	d�@	e@�@	e@	e@	e@	e@	e@�@@	e	e	@	e
@	e@	e@	e
@H�@	e	e$	e	e	e@	e@	e@	e@	e@	e@��@	e	e	e@	e@	e@	e@	e@A@	e@	e @	e!@	e"@	e#@�'@	e%	e,	e&@	e'@	e(@	e)@	e*@	e+@�@	e-	e3	e.@	e/@	e0@	e1@	e2@�@	e4@	e5@	e6@	e7@	e8@�@	e:	e�	e;	ef	e<	eI	e=	eC	e>@	e?@	e@@	eA@	eB@�@	eD@	eE@	eF@	eG@	eH@Ae@	eJ	eP	eK@	eL@	eM@	eN@	eO@@&@	eQ@	eR@	eS@	eT@	eU@	eV@	eWF�F�	eX	eYF�F�	eZ	e[F�	e\F�	e]F�F�	e^	e_F�	e`F�	eaF�	ebF�	ecF�F�	ed	eeF�F��	eg	et	eh	en	ei@	ej@	ek@	el@	em@�@	eo@	ep@	eq@	er@	es@A@	eu	e{	ev@	ew@	ex@	ey@	ez@E@	e|@	e}@	e~@	e@	e�@A@	e�	e�	e�	e�	e�	e�	e�@	e�@	e�@	e�@	e�@F�@	e�@	e�@	e�@	e�@	e�@E@	e�	e�	e�@	e�@	e�@	e�@	e�@Ba@	e�@	e�@	e�@	e�@	e�@�@	e�	e�	e�	e�	e�@	e�@	e�@	e�@	e�@�@	e�@	e�@	e�@	e�@	e�@E@	e�	e�	e�@	e�@	e�@	e�@	e�@A@	e�@	e�@	e�@	e�@	e�@�@	e�	f	e�	e�	e�	e�	e�	e�	e�	e�	e�@	e�@	e�@	e�@F�@	e�@	e�@	e�@	e�@	e�@@&@	e�	e�	e�@	e�@	e�@	e�@	e�@A@	e�@	e�@	e�@	e�@	e�@A@	e�	e�	e�	e�	e�@	e�@	e�@	e�@	e�@�@	e�@	e�@	e�@	e�@	e�@��@	e�	e�	e�@	e�@	e�@	e�@	e�@|�@	e�@	e�@	e�@	e�@	e�@�@	e�	f	e�	e�	e�	e�	e�@	e�@	e�@	e�@	e�@Ae@	e�@	e�@	e�@	e�@	e�@F�@	f@	f@	f@	f@	f@	f@H:@	f	f	f@	f	@	f
@	f@	f@	f
@�@	f	f	f@	f@	f@	f@	f@A@	f@	f@	f@	f@	f@H�@	f	fG	f	f8	f	f+	f	f%	f @	f!@	f"@	f#@	f$@@&@	f&@	f'@	f(@	f)@	f*@A@	f,	f2	f-@	f.@	f/@	f0@	f1@�6@	f3@	f4@	f5@	f6@	f7@A@	f9	f@@	f:	f;@	f<@	f=@	f>@	f?@Ae@@	fA	fB@	fC@	fD@	fE@	fF@A@	fH	f]	fI	fP	fJ@	fK@	fL@	fM@	fN@	fO@H:@	fQ	fW	fR@	fS@	fT@	fU@	fV@H�@	fX@	fY@	fZ@	f[@	f\@E@	f^	fk	f_	fe	f`@	fa@	fb@	fc@	fd@�@	ff@	fg@	fh@	fi@	fj@�@	fl	fr	fm@	fn@	fo@	fp@	fq@H�@	fs@	ft@	fu@	fv@	fw@F�@	fy	g�	fz	f�	f{	f�	f|	f�	f}	f�	f~	f�	f@	f�@	f�@	f�@	f�@�@	f�@	f�@	f�@	f�@	f�@A@	f�	f�	f�@	f�@	f�@	f�@	f�@H�@	f�@	f�@	f�@	f�@	f�@�'@	f�	f�	f�	f�	f�@	f�@	f�@	f�@	f�@E@	f�@	f�@	f�@	f�@	f�@�@@	f�	f�@	f�@	f�@	f�@	f�@@&@	f�	f�	f�	f�	f�	f�	f�@	f�@	f�@	f�@	f�@Ae@	f�@	f�@	f�@	f�@	f�@E@@	f�	f�@	f�@	f�@	f�@	f�@H @	f�	f�	f�	f�	f�@	f�@	f�@	f�@	f�@�@	f�@	f�@	f�@	f�@	f�@	f�@	f�F�	f�	f�	f�F�	f�F�	f�F�	f�F�	f�F�	f�F�	f�F�	f�F�	f�F�F�	f�	f�F�	f�F�	f�F�G�F�	f�F�	f�F�	f�F�	f�F�	f�F�	f�F�	f�F�	f�F�	f�F�F�	f�	f�F�	f�F�	f�F��F�	f�	f�	f�@	f�@	f�@	f�@	f�@�@	f�@	f�@	f�@	f�@	f�@Ae@	f�	gr	f�	g]	f�	g	f�	g	g@	g@	g@	g@	g@�'@	g@	g@	g@	g	@	g
@�@	g	g	g
@	g@	g@	g@	g@E@	g@	g@	g@	g@	g@	g@	g	g*A	gA	g	gA	gAA	gA	g	g A	g!AA	g"A	g#	g$A	g%A	g&	g(	g'AC�AA	g)C�AA	g+A	g,A	g-	g.	g>A	g/A	g0A	g1	g2A	g3A	g4	g9	g5AA	g6	g7A	g8AC�A	g:AA	g;A	g<A	g=A�B	g?	gM	g@A	gA	gE	gBA	gCA	gDAAC�A	gFA	gG	gHA	gIA	gJA	gKAA	gLAA=	gNAA	gO	gPA	gQA	gRA	gSA	gT	gZ	gU	gX	gV	gW��C��
Q	gY�A	g[A	g\AC�A	g^	ge	g_@	g`@	ga@	gb@	gc@	gd@�@	gf	gl	gg@	gh@	gi@	gj@	gk@Ae@	gm@	gn@	go@	gp@	gq@�@	gs	g�	gt	g�	gu	g{	gv@	gw@	gx@	gy@	gz@�@	g|@	g}@	g~@	g@	g�@�@	g�	g�	g�@	g�@	g�@	g�@	g�@E@	g�@	g�@	g�@	g�@	g�@az@	g�	g�	g�	g�	g�@	g�@	g�@	g�@	g�@�@	g�@	g�@	g�@	g�@	g�@H�@	g�	g�	g�@	g�@	g�@	g�@	g�@	g�@	g�Ae	g�Ae	g�Ae	g�Ae	g�Ae	g�Ae	g�Ae	g�Ae	g�Ae	g�Ae	g�Ae	g�Ae	g�AeAe	g�	g�AeAe�	g�@	g�@	g�@	g�@	g�@A@	g�	h�	g�	h]	g�	h0	g�	h#	g�	h	g�@	g�@	g�@	g�@	g�F�F�	g�	g�	g�	g�F�	g�F�	g�F�	g�F�	g�F�	g�F�	g�F�	g�F�	g�F�	g�F�	g�F�	g�F�	g�F�	g�F���F�	g�	h	g�F�	g�F�	g�F�	g�F�	g�F�	g�F�	g�F�	g�	g�F�	g�	g�F�	g�	g�	g�F�	g�F���F�	g�F�	g�F���F�	g�F�F�	g�	g�	h	g�F�	g�F�	g�F�	g�F�	g�F�	g�F�	g�F�	g�F�	g�F�	g�F�	g�F�	g�F�	g�F�	g�F�	g�F�	g�	g�	g�G�	g�G�F�G�	g�	g�	g�F�G�F�	h	hF�G�G�F�	hF�	hF���F�F�	h	hF�F�	h	h	F�	h
F�	hF�	hF�	h
F�	hF�F�	hF�	h	hF�	hF�	hF�	hF�	hF�	hF�	hF�	hF�	hF�	hF�	hF�	hF��F�	h@	h@	h @	h!@	h"@E@	h$	h*	h%@	h&@	h'@	h(@	h)@H:@	h+@	h,@	h-@	h.@	h/@�@	h1	h>	h2	h8	h3@	h4@	h5@	h6@	h7@�@	h9@	h:@	h;@	h<@	h=@Ez@	h?	hW	h@@	hA@	hB@	hC@	hD@	hE@	hFAe	hGAe	hHAe	hIAe	hJAe	hKAe	hLAe	hMAe	hNAe	hOAe	hPAe	hQAe	hRAe	hS	hUAe	hTAe�$	hVAe��!9	hX@	hY@	hZ@	h[@	h\@�@	h^	hy	h_	hl	h`	hf	ha@	hb@	hc@	hd@	he@Ae@	hg@	hh@	hi@	hj@	hk@�@	hm	hs	hn@	ho@	hp@	hq@	hr@Ez@	ht@	hu@	hv@	hw@	hx@Ae@	hz	h�	h{	h�	h|@	h}@	h~@	h@	h�@�@	h�@	h�@	h�@	h�@	h�@H�@	h�	h�	h�@	h�@	h�@	h�@	h�@E@	h�@	h�@	h�@	h�@	h�@H�@	h�	h�	h�	h�	h�	h�	h�	h�	h�@	h�@	h�@	h�@	h�@H:@	h�@	h�@	h�@	h�@	h�@E@	h�	h�	h�@	h�@	h�@	h�@	h�@Ae@	h�@	h�@	h�@	h�@	h�@�@	h�	h�	h�	h�	h�@	h�@	h�@	h�@	h�@�@	h�@	h�@	h�@	h�@	h�@Ae@	h�@	h�@	h�@	h�@	h�@	h�@F�@	h�	h�	h�	h�	h�	h�	h�@	h�@	h�@	h�@	h�@Ae@	h�@	h�@	h�@	h�@	h�@@&@@	h�	h�@	h�@	h�@	h�@	h�@�@	h�	h�	h�	h�	h�@	h�@	h�@	h�@	h�@�@	h�@	h�@	h�@	h�@	h�@F�@	h�	h�	h�@	h�@	h�@	h�@	h�@H:@	h�@	h�@	h�@	h�@	h�@az@	h�	w�	h�	q	h�	lP	h�	j�	h�	i�	h�	i^	h�	i5	h�	i	i	i
	i	i	i@	i@	i@	i@	i@@&@	i@	i	@	i
@	i@	i@H:@	i	i	i@	i@	i@	i@	i@A@	i@	i@	i@	i@	i@�@	i	i(	i	i"	i@	i@	i@	i @	i!@�@	i#@	i$@	i%@	i&@	i'@Ae@	i)	i/	i*@	i+@	i,@	i-@	i.@Ae@	i0@	i1@	i2@	i3@	i4@Ez@	i6@	i7@	i8@	i9@	i:@	i;@	i<E	i=EE	i>E	i?E	i@E	iA	iBE	iCE	iDE	iEE	iFE	iGE	iHE	iIEE	iJ	iKEE	iLE	iME	iN	iOE	iPE	iQE	iRE	iSE	iTE	iUE	iVE	iWE	iXE	iYEE	iZE	i[E	i\	i]E@E	i_	i�	i`	iu	ia	ih	ib@	ic@	id@	ie@	if@	ig@�c@	ii	io	ij@	ik@	il@	im@	in@A@	ip@	iq@	ir@	is@	it@E�@	iv	i�	iw	i}	ix@	iy@	iz@	i{@	i|@�@	i~@	i@	i�@	i�@	i�@Ae@	i�	i�	i�@	i�@	i�@	i�@	i�@A@	i�@	i�@	i�@	i�@	i�@E@	i�	i�	i�	i�	i�	i�	i�@	i�@	i�@	i�@	i�@�6@	i�@	i�@	i�@	i�@	i�@@&@	i�	i�	i�@	i�@	i�@	i�@	i�@A@	i�@	i�@	i�@	i�@	i�@	i�@	i�A	i�A	i�A	i�A	i�A	i�A	i�A	i�A	i�A	i�A	i�A	i�A	i�A	i�A	i�AC�A	i�	i�	i�	i�	i�@	i�@	i�@	i�@	i�@�@	i�@	i�@	i�@	i�@	i�@H @	i�	i�	i�@	i�@	i�@	i�@	i�@A@	i�@	i�@	i�@	i�@	i�@@&@	i�	jC	i�	j	i�	i�	i�	i�	i�	i�	i�@	i�@	i�@	i�@	i�@	i�@Ae	i�
�Ae	i�@	i�@	i�@	i�@	i�@E@	i�	i�	i�@	i�@	i�@	i�@	i�@A@	i�@	i�@	i�@	i�@	i�@M@	i�	i�@	i�	i�@	i�@	i�@	i�@	i�@A@	j	j	j@	j@	j@	j@	j@A@	j@	j@	j	@	j
@	j@A@	j
	j(	j	j	j	j	j@	j@	j@	j@	j@H @	j@	j@	j@	j@	j@�@	j	j"	j@	j@	j@	j @	j!@A@	j#@	j$@	j%@	j&@	j'@E@	j)	j6	j*	j0	j+@	j,@	j-@	j.@	j/@|�@	j1@	j2@	j3@	j4@	j5@�@	j7	j=	j8@	j9@	j:@	j;@	j<@A@	j>@	j?@	j@@	jA@	jB@�@	jD	ju	jE	j`	jF	jS	jG	jM	jH@	jI@	jJ@	jK@	jL@�'@	jN@	jO@	jP@	jQ@	jR@�@	jT	jZ	jU@	jV@	jW@	jX@	jY@A@	j[@	j\@	j]@	j^@	j_@E@	ja	jh@	jb	jc@	jd@	je@	jf@	jg@�@	ji	jo	jj@	jk@	jl@	jm@	jn@A@	jp@	jq@	jr@	js@	jt@H:@	jv	j�	jw	j�	jx	j~	jy@	jz@	j{@	j|@	j}@@&@	j@	j�@	j�@	j�@	j�@��@	j�	j�	j�@	j�@	j�@	j�@	j�@A@	j�@	j�@	j�@	j�@	j�@E@	j�	j�@	j�	j�@	j�@	j�@	j�@	j�@	j�@	j�@@	j�@	j�@	j�@	j�@	j�@	j�@	j�@	j�	j�	j�@	j�
�@	j�@@	j�@	j�@	j�	j�@@�	j�	j�	j�@	j�@	j�@	j�@	j�@A@	j�@	j�@	j�@	j�@	j�@�@	j�	k�	j�	k 	j�	j�	j�	j�	j�	j�	j�	j�	j�@	j�@	j�@	j�@	j�@Ae@	j�@	j�@	j�@	j�@	j�@H�@	j�	j�	j�@	j�@	j�@	j�@	j�@A@	j�@	j�@	j�@	j�@	j�@H�@	j�	j�@	j�	j�@	j�@	j�@	j�@	j�@@&@	j�	j�	j�@	j�@	j�@	j�@	j�@A@	j�@	j�@	j�@	j�@	j�@E@	j�	k	j�	j�	j�	j�	j�@	j�@@&@	j�@	j�@	j�@	j�@	j�@E@	j�	j�	j�@	j�@	j�@	j�@	j�@A@	k@	k@	k@	k@	k@E@	k	k	k	k
	k@	k	@	k
@	k@	k@Ae@	k@	k@	k@	k@	k@��@	k	k	k@	k@	k@	k@	k@A@	k@	k@	k@	k@	k@E@	k!	kX	k"	k=	k#	k0	k$	k*	k%@	k&@	k'@	k(@	k)@H:@	k+@	k,@	k-@	k.@	k/@@&@	k1	k7	k2@	k3@	k4@	k5@	k6@A@	k8@	k9@	k:@	k;@	k<@H @	k>	kK	k?	kE	k@@	kA@	kB@	kC@	kD@�@	kF@	kG@	kH@	kI@	kJ@H @	kL	kR	kM@	kN@	kO@	kP@	kQ@A@	kS@	kT@	kU@	kV@	kW@��@	kY	kn	kZ	ka@	k[	k\@	k]@	k^@	k_@	k`@�@	kb	kh	kc@	kd@	ke@	kf@	kg@A@	ki@	kj@	kk@	kl@	km@�@	ko	k|	kp	kv	kq@	kr@	ks@	kt@	ku@�@	kw@	kx@	ky@	kz@	k{@H @	k}	k�	k~@	k@	k�@	k�@	k�@�@	k�@	k�@	k�@	k�@	k�@E@	k�	k�	k�	k�	k�	k�	k�	k�	k�	k�	k�@	k�@	k�@	k�@	k�@@&@	k�@	k�@	k�@	k�@	k�@Ez@	k�	k�	k�@	k�@	k�@	k�@	k�@��@	k�@	k�@	k�@	k�@	k�@A@	k�	k�@	k�	k�@	k�@	k�@	k�@	k�@H:@@	k�	k�@	k�@	k�@	k�@	k�@H�@	k�	k�	k�	k�	k�	k�	k�@	k�@	k�@	k�@	k�@|�@	k�@	k�@	k�@	k�@	k�@H�@	k�	k�	k�@	k�@	k�@	k�@	k�@@&@	k�@	k�@	k�@	k�@	k�@H�@	k�	k�	k�	k�	k�@	k�@	k�@	k�@	k�@�~@	k�@	k�@	k�@	k�@	k�@�@@	k�	k�@	k�@	k�@	k�@	k�@�@	k�	l	k�	l	k�	k�	k�	k�	k�@	k�@	k�@	k�@	k�@H:@	k�@	k�@	k�@	k�@	k�@�@	k�	k�	k�@	k�@	k�@	k�@	k�@A@	k�@	l@	l@	l@	l@�@	l	l@	l	l@	l@	l	@	l
@	l@�@	l
	l	l@	l@	l@	l@	l@A@	l@	l@	l@	l@	l@�@	l	l5	l	l(	l	l"	l@	l@	l@	l @	l!@E@	l#@	l$@	l%@	l&@	l'@�@	l)	l/	l*@	l+@	l,@	l-@	l.@A@	l0@	l1@	l2@	l3@	l4@E@	l6	lC	l7	l=	l8@	l9@	l:@	l;@	l<@
�@	l>@	l?@	l@@	lA@	lB@�@	lD	lJ	lE@	lF@	lG@	lH@	lI@A@	lK@	lL@	lM@	lN@	lO@A@	lQ	oy	lR	n�	lS	nO	lT	m�	lU	m�	lV	m�	lW	m�	lX@	lY@	lZ@	l[@	l\@	l]	m�	l^	mt	l_E	l`	m	la	l�	lb	l�	lc	lmE	ld	leE	lfE	lgE	lhE	liE	ljE	lkE	llEE�O	lnE	lo	l�	lpE	lqE	lrE	lsE	lt	l�	lu	l	lvE	lw��	lxE	lyE	lzE	l{E	l|E	l}EE	l~E��E	l�E��	l�	l�E����	l���E	l�E	l�E	l�E	l�E	l�E	l�E	l�EE��	l�	l�	l�	l�	l�	l�	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E�OE	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�EٰE	l�	l�	l�E	l�E	l�E	l�E	l�E	l�E	l�E��E	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E��E	l�	l�	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�EE�@	l�	l�	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E
�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�E	l�EٰE	l�E	l�E	l�E	l�E	mE	mE	mE	mE	mE	mE	m	m	mE	mE	m	EE	m
E	mE	m�O	m
�OE��E	mE	mE	m	mU	m	m4	m	m$	mE	mE	mE	mE	mE	mE	mE	mE	mE	mE	mE	m E	m!E	m"E	m#E
�E	m%E	m&E	m'E	m(E	m)E	m*E	m+E	m,E	m-E	m.E	m/E	m0E	m1E	m2E	m3EE�O	m5	mE	m6E	m7E	m8E	m9E	m:E	m;E	m<E	m=E	m>E	m?E	m@E	mAE	mBE	mCE	mDE
wE	mFE	mGE	mHE	mIE	mJE	mKE	mLE	mME	mNE	mOE	mPE	mQE	mRE	mSE	mTE
wE	mV	m_E	mW	mXE	mYE	mZE	m[E	m\E	m]E	m^EٰEE	m`	maE	mbE	mcE	mdE	meE	mfE	mgE	mhE	miE	mjE	mkE	mlE	mmE	mnE	moE	mpE	mqE	mrEE	ms
�EE	muE	mvE	mwE	mxE	myE	mzE	m{E	m|E	m}	m~E	mEE	m�	m�E	m�E�OE	m�E	m�E	m�E	m�E	m�E	m�	m�	m�	m�	m�E	m�E	m�E	m�E	m�E	m�E	m�E	m�	m�E	m�	m�E	m�E	m�E	m�E	m�E	m�E	m�E�OE�OEE	m�	m�E	m�E	m�E	m�E	m�E	m�E	m�E	m�E	m�E	m�E	m�E	m�E	m�E	m�E	m�E
wE	m�E	m�E	m�E	m�E	m�E	m�E	m�E	m�E	m�E	m�E	m�E	m�E	m�E	m�E	m�E	m�E	m�E��E	m�@	m�@	m�@	m�@	m�@@&@	m�	m�	m�@	m�@	m�@	m�@	m�@A@	m�@	m�@	m�@	m�@	m�@�@	m�	m�@	m�	m�@	m�@	m�@	m�@	m�@�@	m�	m�	m�@	m�@	m�@	m�@	m�@A@	m�@	m�@	m�@	m�@	m�@�@	m�	n	m�	m�	m�	m�	m�@	m�@	m�@	m�@	m�@��@	m�@	m�@	m�@	m�@	m�@�g@	m�	m�	m�@	m�@	m�@	m�@	m�@A@	m�@	m�@	n@	n@	n@az@	n	nB	n	n<	n@	n@	n@	n	@	n
@	n@F�	nF�	n
F�	nF�	nF�	nF�	nF�	nF�	n	n	n5	n	n&	nF�	n	n"	n	n	n	nF�	n��F�	n�F���	n	n 	nF�F�Gt	n!F���F�	n#F�	n$F�	n%F�G�F�	n'	n.	n(F�	n)F�	n*	n,F�	n+��F�F�	n-G�F�F�	n/	n0F�	n1	n3F�	n2��F�F�	n4G�F�F�	n6	n7F�	n8F�F�	n9F�	n:	n;F�F��;	n=@	n>@	n?@	n@@	nA@A@	nC	nI	nD@	nE@	nF@	nG@	nH@A@	nJ@	nK@	nL@	nM@	nN@E@	nP	n�	nQ	nl	nR	n_	nS	nY	nT@	nU@	nV@	nW@	nX@E@	nZ@	n[@	n\@	n]@	n^@Ae@	n`	nf	na@	nb@	nc@	nd@	ne@A@	ng@	nh@	ni@	nj@	nk@A@	nm	nz	nn	nt	no@	np@	nq@	nr@	ns@Ba@	nu@	nv@	nw@	nx@	ny@E@	n{	n�	n|@	n}@	n~@	n@	n�@A@	n�@	n�@	n�@	n�@	n�@@&@	n�	n�	n�	n�	n�@	n�@	n�@	n�@	n�@	n�@��@	n�	n�	n�@	n�@	n�@	n�@	n�@A@	n�@	n�@	n�@	n�@	n�@E@	n�	n�	n�	n�	n�@	n�@	n�@	n�@	n�@@&@	n�@	n�@	n�@	n�@	n�@E@	n�	n�	n�@	n�@	n�@	n�@	n�@A@	n�@	n�@	n�@	n�@	n�@E@	n�	o	n�	n�	n�	n�	n�	n�@	n�	n�@	n�@	n�@	n�@	n�@H�@	n�	n�	n�@	n�@	n�@	n�@	n�@A@	n�@	n�@	n�@	n�@	n�@H�@	n�	n�	n�@	n�@	n�@	n�@	n�@	n�@Ez@	n�	n�	n�@	n�@	n�@	n�@	n�@A@	n�@	n�@	n�@	n�@	n�@H @	n�	n�	n�	n�	n�@	n�@	n�@	n�@	n�@	n�@@&@	n�	n�	n�@	n�@	n�@	n�@	n�@A@	n�@	n�@	n�@	n�@	n�@�@	n�	o	n�@	n�@	n�@	o@	o@	o@Ae@	o	o
	o@	o@	o@	o@	o	@A@	o@	o@	o
@	o@	o@A@	o	oB	o	o'	o	o@	o	o@	o@	o@	o@	o@�@	o	o!	o@	o@	o@	o@	o @A@	o"@	o#@	o$@	o%@	o&@�@	o(	o5	o)	o/	o*@	o+@	o,@	o-@	o.@Ae@	o0@	o1@	o2@	o3@	o4@�@	o6	o<	o7@	o8@	o9@	o:@	o;@A@	o=@	o>@	o?@	o@@	oA@�@	oC	o^	oD	oQ	oE	oK	oF@	oG@	oH@	oI@	oJ@Ae@	oL@	oM@	oN@	oO@	oP@�@	oR	oX	oS@	oT@	oU@	oV@	oW@A@	oY@	oZ@	o[@	o\@	o]@A@	o_	ol	o`	of	oa@	ob@	oc@	od@	oe@�@	og@	oh@	oi@	oj@	ok@A@	om	os	on@	oo@	op@	oq@	or@A@	ot@	ou@	ov@	ow@	ox@�@	oz	pH	o{	o�	o|	o�	o}	o�	o~	o�	o	o�	o�@	o�@	o�@	o�@H:@	o�@	o�@	o�@	o�@	o�@�@	o�	o�	o�@	o�@	o�@	o�@	o�@	o�@	o�@	o�@	o�@	o�@	o�@	o�@	o�@��@	o�@	o�@	o�@	o�@	o�@@&@	o�	o�	o�	o�	o�@	o�@	o�@	o�@	o�@F�@	o�@	o�@	o�@	o�@	o�@A@@	o�	o�@	o�@	o�@	o�@	o�@A@	o�	o�	o�	o�	o�	o�	o�@	o�@	o�@	o�@	o�@HG@	o�@	o�@	o�@	o�@	o�@Ez@@	o�	o�@	o�@	o�@	o�@	o�@E@	o�	o�	o�	o�	o�@	o�@	o�@	o�@	o�@H @	o�@	o�@	o�@	o�@	o�@Ba@	o�	o�	o�@	o�@	o�@	o�@	o�@E@	o�@	o�@	o�@	o�@	o�@E@	o�	p	o�	p	o�	o�	o�	o�	o�@	o�@	o�@	o�@	o�@HG@	o�@	o�@	o�@	o�@	o�@E@	o�	o�	o�@	o�@	o�@	o�@	o�@��@	o�@	o�@	o�@	p@	p@E@	p	p	p	p
	p@	p@	p@	p@	p	@E�@	p@	p@	p
@	p@	p@�@	p	p	p@	p@	p@	p@	p@��@	p@	p@	p@	p@	p@�@	p	p3	p	p,	p 	p&	p!@	p"@	p#@	p$@	p%@@&@	p'@	p(@	p)@	p*@	p+@�@@	p-	p.@	p/@	p0@	p1@	p2@�@	p4	pA	p5	p;	p6@	p7@	p8@	p9@	p:@@&@	p<@	p=@	p>@	p?@	p@@�@@	pB	pC@	pD@	pE@	pF@	pG@A@	pI	p�	pJ	p�	pK	pf	pL	pY	pM	pS	pN@	pO@	pP@	pQ@	pR@Ez@	pT@	pU@	pV@	pW@	pX@@&@	pZ	p`	p[@	p\@	p]@	p^@	p_@A@	pa@	pb@	pc@	pd@	pe@H�@	pg	pt	ph	pn	pi@	pj@	pk@	pl@	pm@|�@	po@	pp@	pq@	pr@	ps@HG@	pu	p{	pv@	pw@	px@	py@	pz@A@	p|@	p}@	p~@	p@	p�@A@	p�	p�	p�	p�	p�@	p�@	p�@	p�@	p�@	p�@��@	p�	p�	p�@	p�@	p�@	p�@	p�@A@	p�@	p�@	p�@	p�@	p�@A@	p�	p�	p�@	p�@	p�@	p�@	p�@	p�@A@	p�	p�	p�@	p�@	p�@	p�@	p�@A@	p�@	p�@	p�@	p�@	p�@A@	p�	p�	p�	p�	p�	p�	p�	p�	p�@	p�@	p�@	p�@	p�@Ae@	p�@	p�@	p�@	p�@	p�@A@	p�	p�	p�@	p�@	p�@	p�@	p�@A@	p�@	p�@	p�@	p�@	p�@Ae@	p�	p�	p�	p�	p�@	p�@	p�@	p�@	p�@E�@	p�@	p�@	p�@	p�@	p�@E@	p�	p�	p�@	p�@	p�@	p�@	p�@A@	p�@	p�@	p�@	p�@	p�@�@	p�	q	p�	p�	p�	p�	p�@	p�@	p�@	p�@	p�@H:@	p�@	p�@	p�@	p�@	p�@E@	p�	p�	p�@	p�@	p�@	p�@	p�@A@	p�@	p�@	p�@	p�@	p�@H @	q	q
	q	q	q@	q@	q@	q@Ae@	q@	q	@	q
@	q@	q@A@	q	q	q@	q@	q@	q@	q@A@	q@	q@	q@	q@	q@�@	q	t~	q	r�	q	q�	q	q�	q	qP	q 	q5	q!	q.	q"	q(	q#@	q$@	q%@	q&@	q'@Ba@	q)@	q*@	q+@	q,@	q-@E@	q/@	q0@	q1@	q2@	q3@	q4@A@	q6	qC	q7	q=	q8@	q9@	q:@	q;@	q<@�@	q>@	q?@	q@@	qA@	qB@A@	qD	qJ	qE@	qF@	qG@	qH@	qI@A@	qK@	qL@	qM@	qN@	qO@A@	qQ	qt	qR	qg	qS	qa	qT@	qU@	qV@	qW@	qX@	qY@	qZF�	q[F�	q\F�	q]F�	q^F�F�	q_	q`i@�HGt	qb@	qc@	qd@	qe@	qf@�@	qh	qn	qi@	qj@	qk@	ql@	qm@A@	qo@	qp@	qq@	qr@	qs@�@	qu	q�	qv	q|	qw@	qx@	qy@	qz@	q{@E�@	q}@	q~@	q@	q�@	q�@H�@	q�	q�	q�@	q�@	q�@	q�@	q�@A@	q�@	q�@	q�@	q�@	q�@Ae@	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�@A@	q�@	q�@	q�@	q�@	q�@A@	q�	q�	q�	q�	q�@	q�@	q�@	q�@	q�@H @	q�@	q�@	q�@	q�@	q�@A@	q�	q�	q�@	q�@	q�@	q�@	q�@A@	q�@	q�@	q�@	q�@	q�@�@	q�	q�	q�	q�@	q�	q�@	q�@	q�@	q�@	q�@�@	q�	q�	q�@	q�@	q�@	q�@	q�@A@	q�@	q�@	q�@	q�@	q�@�@	q�	q�	q�	q�	q�@	q�@	q�@	q�@	q�@Ez@	q�@	q�@	q�@	q�@	q�@Ae@	q�	q�	q�@	q�@	q�@	q�@	q�@A@	q�@	q�@	q�@	q�@	q�@E@	q�	r`	q�	r)	q�	r	q�	r	q�	r	q�@	q�@	r@H�@	r@	r@	r@	r@	r@H @	r	r	r	@	r
@	r@	r@	r
@A@	r@	r@	r@	r@	r@�@	r	r	r@	r@	r@	r@	r@	r@F�@	r	r#	r@	r@	r @	r!@	r"@A@	r$@	r%@	r&@	r'@	r(@�@	r*	rE	r+	r8	r,	r2	r-@	r.@	r/@	r0@	r1@Ae@	r3@	r4@	r5@	r6@	r7@�@	r9	r?	r:@	r;@	r<@	r=@	r>@A@	r@@	rA@	rB@	rC@	rD@H:@	rF	rS	rG	rM	rH@	rI@	rJ@	rK@	rL@Ae@	rN@	rO@	rP@	rQ@	rR@Ae@	rT	rZ	rU@	rV@	rW@	rX@	rY@A@	r[@	r\@	r]@	r^@	r_@E@	ra	r�	rb	r�	rc	rp	rd	rj	re@	rf@	rg@	rh@	ri@HG@	rk@	rl@	rm@	rn@	ro@�6@	rq	rw	rr@	rs@	rt@	ru@	rv@�@	rx@	ry@	rz@	r{@	r|@Ae	r}	r~Ae	rAe	r�Ae	r�AeAe	r�Ae	r�Ae	r��5Ae	r�	r�	r�	r�	r�@	r�@	r�@	r�@	r�@H @	r�@	r�@	r�@	r�@	r�@A@	r�	r�	r�@	r�@	r�@	r�@	r�@HG@	r�@	r�@	r�@	r�@	r�@�@	r�	r�	r�	r�	r�	r�	r�@	r�@	r�@	r�@	r�@@&@	r�@	r�@	r�@	r�@	r�@�@	r�	r�	r�@	r�@	r�@	r�@	r�@A@	r�@	r�@	r�@	r�@	r�@�@	r�	r�	r�	r�	r�@	r�@	r�@	r�@	r�@Ez@	r�@	r�@	r�@	r�@	r�@�@	r�	r�	r�@	r�@	r�@	r�@	r�@A@	r�@	r�@	r�@	r�@	r�@�@	r�	s�	r�	sH	r�	s	r�	r�	r�	r�	r�	r�	r�@	r�@	r�@	r�@	r�@Ae@	r�@	r�@	r�@	r�@	r�@�@	r�	r�	r�@	r�@	r�@	r�@	r�@A@	r�@	r�@	r�@	r�@	r�@�@	r�	s	r�	r�	r�@	r�@	r�@	r�@	r�@�@	r�@	s@	s@	s@	s@�@	s	s	s@	s@	s@	s	@	s
@A@	s@	s
@	s@	s@	s@�@	s	s-	s	s 	s	s	s@	s@	s@	s@	s@Ae@	s@	s@	s@	s@	s@A@	s!	s'	s"@	s#@	s$@	s%@	s&@A@	s(@	s)@	s*@	s+@	s,@A@	s.	s;	s/	s5	s0@	s1@	s2@	s3@	s4@@&@	s6@	s7@	s8@	s9@	s:@@&@	s<	sB	s=@	s>@	s?@	s@@	sA@A@	sC@	sD@	sE@	sF@	sG@H�@	sI	s�	sJ	se	sK	sX	sL	sR	sM@	sN@	sO@	sP@	sQ@�@	sS@	sT@	sU@	sV@	sW@H�@	sY	s_	sZ@	s[@	s\@	s]@	s^@A@	s`@	sa@	sb@	sc@	sd@H�@	sf	ss	sg	sm	sh@	si@	sj@	sk@	sl@F�@	sn@	so@	sp@	sq@	sr@E@	st	sz	su@	sv@	sw@	sx@	sy@A@	s{@	s|@	s}@	s~@	s@�~@	s�	s�	s�	s�	s�	s�	s�@	s�@	s�@	s�@	s�@H @	s�@	s�@	s�@	s�@	s�@�@	s�	s�	s�@	s�@	s�@	s�@	s�@A@	s�@	s�@	s�@	s�@	s�@E@	s�	s�	s�	s�	s�@	s�@	s�@	s�@	s�@�6@	s�@	s�@	s�@	s�@	s�@E@	s�	s�	s�@	s�@	s�@	s�@	s�@A@	s�@	s�@	s�@	s�@	s�@A@	s�	t	s�	s�	s�	s�	s�	s�	s�	s�	s�@	s�@	s�@	s�@	s�@E�@	s�@	s�@	s�@	s�@	s�@�@	s�	s�	s�@	s�@	s�@	s�@	s�@A@	s�@	s�@	s�@	s�@	s�@��@	s�	s�	s�	s�	s�@	s�@	s�@	s�@	s�@Ae@	s�@	s�@	s�@	s�@	s�@Ae@	s�	s�	s�@	s�@	s�@	s�@	s�@A@	s�@	s�@	s�@	s�@	s�@�@	s�	t	s�	s�@	s�	s�@	s�@	s�@	s�@	s�@�@	s�	t	s�@	s�@	s�@	s�@	s�@A@	t@	t@	t@	t@	t@�@	t	t@	t	t	@	t
@	t@	t@	t
@H�@	t	t	t@	t@	t@	t@	t@A@	t@	t@	t@	t@	t@E@	t	tS	t	t8	t	t+	t	t%	t @	t!@	t"@	t#@	t$@H:@	t&@	t'@	t(@	t)@	t*@�@	t,	t2	t-@	t.@	t/@	t0@	t1@A@	t3@	t4@	t5@	t6@	t7@A@	t9	tF	t:	t@	t;@	t<@	t=@	t>@	t?@H:@	tA@	tB@	tC@	tD@	tE@A@	tG	tM	tH@	tI@	tJ@	tK@	tL@A@	tN@	tO@	tP@	tQ@	tR@A@	tT	ti	tU	tb	tV	t\	tW@	tX@	tY@	tZ@	t[@H:@	t]@	t^@	t_@	t`@	ta@�@	tc@	td@	te@	tf@	tg@	th@A@	tj	tq	tk@	tl@	tm@	tn@	to@	tp@E�@	tr	tx	ts@	tt@	tu@	tv@	tw@A@	ty@	tz@	t{@	t|@	t}@�@	t	v	t�	uJ	t�	t�	t�	t�	t�	t�	t�	t�	t�	t�	t�@	t�@	t�@	t�@	t�@��@	t�@	t�@	t�@	t�@	t�@E@	t�	t�	t�@	t�@	t�@	t�@	t�@A@	t�@	t�@	t�@	t�@	t�@�@	t�	t�	t�@	t�@	t�@	t�@	t�@	t�@H @	t�	t�	t�@	t�@	t�@	t�@	t�@A@	t�@	t�@	t�@	t�@	t�@�@	t�	t�	t�	t�	t�	t�	t�@	t�@	t�@	t�@	t�@A@	t�@	t�@	t�@	t�@	t�@E@	t�	t�	t�@	t�@	t�@	t�@	t�@Ez@	t�@	t�@	t�@	t�@	t�@�@	t�	t�@	t�	t�@	t�@	t�@	t�@	t�@�@	t�	t�	t�@	t�@	t�@	t�@	t�@�@	t�@	t�@	t�@	t�@	t�@H @	t�	u	t�	u	t�	t�	t�	t�	t�@	t�@	t�@	t�@	t�@Ez@	t�@	t�@	t�@	t�@	t�@H @	t�	t�	t�@	t�@	t�@	t�@	t�@Ae@	t�@	t�@	t�@	t�@	u@�@	u	u	u	u		u@	u@	u@	u@	u@Ae@	u
@	u@	u@	u
@	u@�@	u	u	u@	u@@&@	u@	u@	u@	u@	u@�@	u	u5	u	u(	u	u"	u@	u@	u@	u @	u!@�~@	u#@	u$@	u%@	u&@	u'@�@	u)	u/	u*@	u+@	u,@	u-@	u.@Ae@	u0@	u1@	u2@	u3@	u4@A@	u6	u=@	u7	u8@	u9@	u:@	u;@	u<@�@	u>	uD	u?@	u@@	uA@	uB@	uC@E@	uE@	uF@	uG@	uH@	uI@H @	uK	u�	uL	u}	uM	ub	uN	uU	uO@	uP@	uQ@	uR@	uS@	uT@E@	uV	u\	uW@	uX@	uY@	uZ@	u[@A@	u]@	u^@	u_@	u`@	ua@A@	uc	up	ud	uj	ue@	uf@	ug@	uh@	ui@�@	uk@	ul@	um@	un@	uo@A@	uq	uw	ur@	us@	ut@	uu@	uv@E@	ux@	uy@	uz@	u{@	u|@A@	u~	u�	u	u�@	u�	u�@	u�@	u�@	u�@	u�@�@	u�	u�	u�@	u�@	u�@	u�@	u�@A@	u�@	u�@	u�@	u�@	u�@Ae@	u�	u�	u�	u�	u�@	u�@	u�@	u�@	u�@�@	u�@	u�@	u�@	u�@	u�@�@	u�	u�	u�@	u�@	u�@	u�@	u�@A@	u�@	u�@	u�@	u�@	u�@�~@	u�	u�	u�	u�	u�	u�	u�	u�	u�@	u�@	u�@	u�@	u�@E@	u�@	u�@	u�@	u�@	u�@�@	u�	u�	u�@	u�@	u�@	u�@	u�@A@	u�@	u�@	u�@	u�@	u�@@&@	u�	u�	u�	u�	u�@	u�@	u�@	u�@	u�@Ba@	u�@	u�@	u�@	u�@	u�@�@	u�	u�	u�@	u�@	u�@	u�@	u�@A@	u�@	u�@	u�@	u�@	u�@�@	u�	v	u�	u�	u�	u�	u�@	u�@	u�@	u�@	u�@Ae@	u�@	u�@	u�@	u�@	u�@f@	u�	u�	u�@	u�@	u�@	u�@	u�@A@	u�@	u�@	u�@	v@	v@�@	v	v	v	v
	v@	v@	v@	v@	v	@A@	v@	v@	v
@	v@	v@H�@	v	v	v@	v@	v@	v@	v@A@	v@	v@	v@	v@	v@H�@	v	v�	v	v{	v 	vW	v!	v<	v"	v/	v#	v)	v$@	v%@	v&@	v'@	v(@@&@	v*@	v+@	v,@	v-@	v.@A@	v0	v6	v1@	v2@	v3@	v4@	v5@A@	v7@	v8@	v9@	v:@	v;@Ae@	v=	vJ	v>	vD	v?@	v@@	vA@	vB@	vC@Ae@	vE@	vF@	vG@	vH@	vI@E@	vK	vQ	vL@	vM@	vN@	vO@	vP@A@	vR@	vS@	vT@	vU@	vV@�@	vX	vm	vY	vf	vZ	v`	v[@	v\@	v]@	v^@	v_@�@	va@	vb@	vc@	vd@	ve@A@	vg@	vh@	vi@	vj@	vk@	vl@A@@	vn	vo	vu	vp@	vq@	vr@	vs@	vt@A@	vv@	vw@	vx@	vy@	vz@H�@	v|	v�	v}	v�	v~	v�	v	v�	v�@	v�@	v�@	v�@	v�@
_@	v�@	v�@	v�@	v�@	v�@H�@	v�	v�	v�@	v�@	v�@	v�@	v�@A@	v�@	v�@	v�@	v�@	v�@H�@	v�	v�	v�	v�	v�@	v�@	v�@	v�@	v�@Ae@	v�@	v�@	v�@	v�@	v�@HG@	v�	v�	v�@	v�@	v�@	v�@	v�@A@	v�@	v�@	v�@	v�@	v�@�@	v�	v�	v�	v�	v�	v�	v�@	v�@	v�@	v�@	v�@�@	v�@	v�@	v�@	v�@	v�@H @	v�	v�	v�@	v�@	v�@	v�@	v�@A@	v�@	v�@	v�@	v�@	v�@HG@	v�	v�	v�	v�	v�@	v�@	v�@	v�@	v�@Ez@	v�@	v�@	v�@	v�@	v�@@&@	v�	v�	v�@	v�@	v�@	v�@	v�@A@	v�@	v�@	v�@	v�@	v�@�@	v�	wT	v�	w#	v�	w	v�	v�	v�	v�	v�@	v�@	v�@	v�@	v�@@&@	v�@	v�@	v�@	v�@	v�@�@	v�	w	v�@	v�@	v�@	w@	w@A@	w@	w@	w@	w@	w@A@	w		w	w
	w	w@	w@	w
@	w@	w@��@	w@	w@	w@	w@	w@Ae@	w	w	w@	w@	w@	w@	w@A@	w@	w@	w @	w!@	w"@A@	w$	w9	w%	w,@	w&	w'@	w(@	w)@	w*@	w+@Ae@	w-	w3	w.@	w/@	w0@	w1@	w2@A@	w4@	w5@	w6@	w7@	w8@F�@	w:	wG	w;	wA	w<@	w=@	w>@	w?@	w@@E�@	wB@	wC@	wD@	wE@	wF@H�@	wH	wN	wI@	wJ@	wK@	wL@	wM@A@	wO@	wP@	wQ@	wR@	wS@H�@	wU	w�	wV	wk	wW	wd	wX	w^	wY@	wZ@	w[@	w\@	w]@Ez@	w_@	w`@	wa@	wb@	wc@�@	we@	wf@	wg@	wh@	wi@	wj@A@	wl	wy	wm	ws	wn@	wo@	wp@	wq@	wr@@&@	wt@	wu@	wv@	ww@	wx@A@	wz@	w{@	w|@	w}@	w~@	w@Ae@	w�	w�	w�	w�	w�	w�	w�@	w�@	w�@	w�@	w�@H @	w�@	w�@	w�@	w�@	w�@�@@	w�	w�@	w�@	w�@	w�@	w�@H:@	w�	w�	w�	w�	w�@	w�@	w�@	w�@	w�@Ae@	w�@	w�@	w�@	w�@	w�@A@	w�	w�	w�@	w�@	w�@	w�@	w�@Ez@	w�@	w�@	w�@	w�@	w�@A@	w�	~*	w�	{	w�	y�	w�	x�	w�	x;	w�	x
	w�	w�	w�	w�	w�	w�	w�@	w�@	w�@	w�@	w�@@&@	w�@	w�@	w�@	w�@	w�@E@	w�	w�	w�@	w�@	w�@	w�@	w�@E@	w�@	w�@	w�@	w�@	w�@E@	w�	w�	w�	w�	w�@	w�@	w�@	w�@	w�@	w�@	w�	w�	w�az	w�az	w�az	w�az	w�az	w�az	w�az	w�azaz	w�	w�azaz	w��az	w�az	w�az	w�az	w�az	w�az	w�az	w�az	w�az	w�az	w�az	w�az	w�az	w�az	w�azaz�	w�@	w�@	w�@	w�@	w�@�@	w�	x	w�@	x@	x@	x@	x@�@	x@	x@	x@	x@	x	@�@	x	x&	x	x	x
	x	x@	x@	x@	x@	x@�@	x@	x@	x@	x@	x@E@	x	x 	x@	x@	x@	x@	x@A@	x!@	x"@	x#@	x$@	x%@�@	x'	x4	x(	x.	x)@	x*@	x+@	x,@	x-@�@	x/@	x0@	x1@	x2@	x3@E@	x5@	x6@	x7@	x8@	x9@	x:@|�@	x<	x�	x=	xp	x>	xK	x?	xE	x@@	xA@	xB@	xC@	xD@��@	xF@	xG@	xH@	xI@	xJ@�@	xL	xR	xM@	xN@	xO@	xP@	xQ@A@	xS@	xT@	xU@	xV@	xW@	xX@A	xYA	xZA	x[A	x\A	x]A	x^	x_	xgA	x`A	xaA	xbA	xcA	xdA	xe	xfAAC�A	xh	xiA	xjAA	xk	xlA	xmAA	xn	xoAA
Q	xq	x~	xr	xx	xs@	xt@	xu@	xv@	xw@@&@	xy@	xz@	x{@	x|@	x}@E@	x	x�	x�@	x�@	x�@	x�@	x�@A@	x�@	x�@	x�@	x�@	x�@�@	x�	x�	x�	x�	x�@	x�@	x�@	x�@	x�@	x�@E�@	x�	x�	x�@	x�@	x�@	x�@	x�@A@	x�@	x�@	x�@	x�@	x�@�@	x�	x�	x�	x�	x�@	x�@	x�@	x�@	x�@H @	x�@	x�@	x�@	x�@	x�@�@	x�	x�	x�@	x�@	x�@	x�@	x�@A@	x�@	x�@	x�@	x�@	x�@�@	x�	y 	x�	x�	x�	x�	x�	x�	x�	x�	x�@	x�@	x�@	x�@	x�@Ae@	x�@	x�@	x�@	x�@	x�@�@	x�	x�	x�@	x�@	x�@	x�@	x�@A@	x�@	x�@	x�@	x�@	x�@H:@	x�	x�	x�	x�	x�@	x�@	x�@	x�@	x�@Ae@	x�@	x�@	x�@	x�@	x�@�@	x�@	x�@	x�@	x�@	x�@	x�@A@	x�	y	x�	x�	x�	x�	x�@	x�@	x�@	x�@	x�@E@	x�@	x�@	x�@	x�@	x�@A@	x�	y	y@	y@	y@	y@	y@A@	y@	y@	y@	y	@	y
@A@	y	y	y
@	y@	y@	y@	y@	y@Ae@	y	y	y@	y@	y@	y@	y@A@	y@	y@	y@	y@	y@Ae@	y!	yX	y"	y=	y#	y0	y$	y*	y%@	y&@	y'@	y(@	y)@
�@	y+@	y,@	y-@	y.@	y/@Ae@	y1	y7	y2@	y3@	y4@	y5@	y6@A@	y8@	y9@	y:@	y;@	y<@�@	y>	yK	y?	yE	y@@	yA@	yB@	yC@	yD@
_@	yF@	yG@	yH@	yI@	yJ@HG@	yL	yR	yM@	yN@	yO@	yP@	yQ@A@	yS@	yT@	yU@	yV@	yW@E�@	yY	yn	yZ	yg	y[	ya	y\@	y]@	y^@	y_@	y`@�@	yb@	yc@	yd@	ye@	yf@Ae@	yh@	yi@	yj@	yk@	yl@	ym@A@	yo	yv	yp@	yq@	yr@	ys@	yt@	yu@�@	yw	y}	yx@	yy@	yz@	y{@	y|@A@	y~@	y@	y�@	y�@	y�@H�@	y�	zK	y�	y�	y�	y�	y�	y�	y�	y�	y�	y�	y�@	y�@	y�@	y�@	y�@Ae@	y�@	y�@	y�@	y�@	y�@�@	y�	y�	y�@	y�@	y�@	y�@	y�@A@	y�@	y�@	y�@	y�@	y�@�@	y�	y�@	y�	y�@	y�@	y�@	y�@	y�@�@	y�	y�	y�@	y�@	y�@	y�@	y�@A@	y�@	y�@	y�@	y�@	y�@��@	y�	y�	y�	y�	y�	y�	y�@	y�@	y�@	y�@	y�@H @	y�@	y�@	y�@	y�@	y�@M@	y�	y�	y�@	y�@	y�@	y�@	y�@A@	y�@	y�@	y�@	y�@	y�@Ae@	y�	y�	y�	y�	y�@	y�@	y�@	y�@	y�@A@	y�@	y�@	y�@	y�@	y�@A@	y�	y�	y�@	y�@	y�@	y�@	y�@A@	y�@	y�@	y�@	y�@	y�@A@	y�	z&	y�	z	y�	y�	y�	y�	y�@	y�@	y�@	y�@	y�@��@	y�@	y�@	y�@	y�@	y�@�@	y�	z	z@	z@	z@	z@	z@A@	z@	z@	z@	z	@	z
@A@	z	z	z
	z	z@	z@	z@	z@	z@E�@	z@	z@	z@	z@	z@E@	z	z 	z@	z@	z@	z@	z@A@	z!@	z"@	z#@	z$@	z%@E@	z'	z6	z(	z/	z)@	z*@	z+@	z,@	z-@	z.@F�@	z0@	z1@	z2@	z3@	z4@	z5@A@	z7	z>	z8@	z9@	z:@	z;@	z<@	z=@A@	z?	zE	z@@	zA@	zB@	zC@	zD@A@	zF@	zG@	zH@	zI@	zJ@A@	zL	z�	zM	z~	zN	zc	zO	z\	zP	zV	zQ@	zR@	zS@	zT@	zU@Ba@	zW@	zX@	zY@	zZ@	z[@�@	z]@	z^@	z_@	z`@	za@	zb@A@	zd	zq	ze	zk	zf@	zg@	zh@	zi@	zj@A@	zl@	zm@	zn@	zo@	zp@�@	zr	zx	zs@	zt@	zu@	zv@	zw@A@	zy@	zz@	z{@	z|@	z}@A@	z	z�	z�	z�@	z�	z�@	z�@	z�@	z�@	z�@�@	z�	z�	z�@	z�@	z�@	z�@	z�@A@	z�@	z�@	z�@	z�@	z�@@&@	z�	z�	z�	z�	z�@	z�@	z�@	z�@	z�@A@	z�@	z�@	z�@	z�@	z�@H @	z�	z�	z�@	z�@	z�@	z�@	z�@A@	z�@	z�@	z�@	z�@	z�@A@	z�	z�	z�	z�	z�	z�	z�	z�	z�@	z�@	z�@	z�@	z�@��@	z�@	z�@	z�@	z�@	z�@�@@	z�	z�@	z�@	z�@	z�@	z�@�@	z�	z�	z�	z�	z�@	z�@	z�@	z�@	z�@E@	z�@	z�@	z�@	z�@	z�@�@	z�	z�	z�@	z�@	z�@	z�@	z�@H�@	z�@	z�@	z�@	z�@	z�@�@	z�	z�	z�	z�	z�	z�	z�@	z�@	z�@	z�@	z�@A@	z�@	z�@	z�@	z�@	z�@@&@	z�	z�	z�@	z�@	z�@	z�@	z�@�@	z�@	z�@	z�@	z�@	z�@�@	z�	{@	z�	{@	{@	{@	{@	{@�@	{	{	{@	{@	{	@	{
@	{@Ae@	{
@	{@	{@	{@	{@@&@	{	|�	{	{�	{	{~	{	{M	{	{2	{	{%	{	{	{@	{@	{@	{@	{@Ba@	{ @	{!@	{"@	{#@	{$@H @	{&	{,	{'@	{(@	{)@	{*@	{+@E@	{-@	{.@	{/@	{0@	{1@H @	{3	{@	{4	{:	{5@	{6@	{7@	{8@	{9@E@	{;@	{<@	{=@	{>@	{?@E@	{A	{G	{B@	{C@	{D@	{E@	{F@Ae@	{H@	{I@	{J@	{K@	{L@�~@	{N	{i	{O	{\	{P	{V	{Q@	{R@	{S@	{T@	{U@@&@	{W@	{X@	{Y@	{Z@	{[@A@	{]	{c	{^@	{_@	{`@	{a@	{b@F�@	{d@	{e@	{f@	{g@	{h@�@	{j	{w	{k	{q	{l@	{m@	{n@	{o@	{p@E@	{r@	{s@	{t@	{u@	{v@�@@	{x	{y@	{z@	{{@	{|@	{}@A@	{	{�	{�	{�	{�	{�	{�	{�	{�@	{�@	{�@	{�@	{�@��@	{�@	{�@	{�@	{�@	{�@�@	{�	{�	{�@	{�@	{�@	{�@	{�@H:@	{�@	{�@	{�@	{�@	{�@�@	{�	{�	{�	{�	{�@	{�@	{�@	{�@	{�@A@	{�@	{�@	{�@	{�@	{�@�@	{�@	{�@	{�@	{�@	{�@	{�@Ae@	{�	{�	{�	{�@	{�	{�@	{�@	{�@	{�@	{�@H @	{�	{�	{�@	{�@	{�@	{�@	{�@A@	{�@	{�@	{�@	{�@	{�@�@	{�	{�	{�	{�	{�@	{�@	{�@	{�@	{�@E@	{�@	{�@	{�@	{�@	{�@�@	{�	{�	{�@	{�@	{�@	{�@	{�@H:@	{�@	{�@	{�@	{�@	{�@�@	{�	|?	{�	|	{�	{�	{�	{�@	{�	{�@	{�@	{�@	{�@	{�@�@@	{�	{�@	{�@	{�@	{�@	{�@�@	{�	|	{�	{�	{�@	{�@	{�@	{�@	{�@A@	{�@	{�@	{�@	{�@	|@E@	|	|	|@	|@	|@	|@	|@A@	|	@	|
@	|@	|@	|
@Ae@	|	|*	|	|	|	|	|@	|@	|@	|@	|@|�@	|@	|@	|@	|@	|@�@	|	|$	|@	| @	|!@	|"@	|#@A@	|%@	|&@	|'@	|(@	|)@�@	|+	|8	|,	|2	|-@	|.@	|/@	|0@	|1@A@	|3@	|4@	|5@	|6@	|7@�@	|9@	|:@	|;@	|<@	|=@	|>@�@	|@	|q	|A	|V	|B	|I	|C@	|D@	|E@	|F@	|G@	|H@��@	|J	|P	|K@	|L@	|M@	|N@	|O@�@	|Q@	|R@	|S@	|T@	|U@�~@	|W	|d	|X	|^	|Y@	|Z@	|[@	|\@	|]@A@	|_@	|`@	|a@	|b@	|c@E@	|e	|k	|f@	|g@	|h@	|i@	|j@�@	|l@	|m@	|n@	|o@	|p@H:@	|r	|�	|s	|�	|t	|z	|u@	|v@	|w@	|x@	|y@�6@	|{@	||@	|}@	|~@	|@�@@	|�	|�@	|�@	|�@	|�@	|�@�@	|�	|�	|�	|�	|�@	|�@	|�@	|�@	|�@A@	|�@	|�@	|�@	|�@	|�@�@@	|�	|�@	|�@	|�@	|�@	|�@E@	|�	}X	|�	|�	|�	|�	|�	|�	|�	|�	|�	|�	|�@	|�@	|�@	|�@	|�@Ae@	|�@	|�@	|�@	|�@	|�@�@@	|�	|�@	|�@	|�@	|�@	|�@�@	|�	|�	|�	|�	|�@	|�@	|�@	|�@	|�@A@	|�@	|�@	|�@	|�@	|�@�@@	|�	|�@	|�@	|�@	|�@	|�@az@	|�	|�	|�	|�	|�	|�	|�@	|�@	|�@	|�@	|�@H:@	|�@	|�@	|�@	|�@	|�@�@@	|�	|�@	|�@	|�@	|�@	|�@�@	|�	|�	|�	|�	|�@	|�@	|�@	|�@	|�@A@	|�@	|�@	|�@	|�@	|�@�@	|�	|�	|�@	|�@	|�@	|�@	|�@Ae@	|�@	|�@	|�@	|�@	|�@E@	|�	}-	|�	}	|�	}	|�	}	}@	}@	}@	}@	}@��@	}@	}@	}@	}	@	}
@�@@	}	}
@	}@	}@	}@	}@�@	}	} 	}	}	}@	}@	}@	}@	}@az@	}@	}@	}@	}@	}@�@	}!	}'	}"@	}#@	}$@	}%@	}&@E@	}(@	})@	}*@	}+@	},@H:@	}.	}I	}/	}<	}0	}6	}1@	}2@	}3@	}4@	}5@Ae@	}7@	}8@	}9@	}:@	};@Ae@	}=	}C	}>@	}?@	}@@	}A@	}B@Ae@	}D@	}E@	}F@	}G@	}H@�@	}J	}Q@	}K	}L@	}M@	}N@	}O@	}P@E@@	}R	}S@	}T@	}U@	}V@	}W@A@	}Y	}�	}Z	}�	}[	}o	}\	}b	}]@	}^@	}_@	}`@	}a@HG@	}c	}i	}d@	}e@	}f@	}g@	}h@A@	}j@	}k@	}l@	}m@	}n@H @	}p	}}	}q	}w	}r@	}s@	}t@	}u@	}v@�@	}x@	}y@	}z@	}{@	}|@�@	}~	}�	}@	}�@	}�@	}�@	}�@A@	}�@	}�@	}�@	}�@	}�@�@	}�	}�	}�	}�	}�	}�	}�@	}�@	}�@	}�@	}�@E@	}�@	}�@	}�@	}�@	}�@�@	}�	}�	}�@	}�@	}�@	}�@	}�@H:@	}�@	}�@	}�@	}�@	}�@�@	}�	}�	}�	}�	}�@	}�@	}�@	}�@	}�@A@	}�@	}�@	}�@	}�@	}�@�@@	}�	}�@	}�@	}�@	}�@	}�@�@	}�	}�	}�	}�	}�	}�	}�	}�	}�@	}�@	}�@	}�@	}�@Ae@	}�@	}�@	}�@	}�@	}�@E@	}�	}�	}�@	}�@	}�@	}�@	}�@��@	}�@	}�@	}�@	}�@	}�@�@	}�	}�	}�	}�	}�@	}�@	}�@	}�@	}�@A@	}�@	}�@	}�@	}�@	}�@�@	}�	}�	}�@	}�@	}�@	}�@	}�@A@	}�@	}�@	}�@	}�@	}�@A@	}�	~	}�	~	}�	}�	}�@	}�@	}�@	}�@	}�@@&@	}�@	}�@	}�@	~@	~@H�@	~	~		~@	~@	~@	~@	~@A@	~
@	~@	~@	~
@	~@�@	~	~	~	~	~@	~@	~@	~@	~@A@	~@	~@	~@	~@	~@�@	~	~$	~@	~ @	~!@	~"@	~#@H:@	~%@	~&@	~'@	~(@	~)@H:@	~+	�:	~,	�	~-		~.	~�	~/	~f	~0	~K	~1	~>	~2	~8	~3@	~4@	~5@	~6@	~7@E�@	~9@	~:@	~;@	~<@	~=@A@	~?	~E	~@@	~A@	~B@	~C@	~D@Ae@	~F@	~G@	~H@	~I@	~J@�@	~L	~Y	~M	~S	~N@	~O@	~P@	~Q@	~R@@&@	~T@	~U@	~V@	~W@	~X@E@	~Z	~`	~[@	~\@	~]@	~^@	~_@H:@	~a@	~b@	~c@	~d@	~e@�@	~g	~�	~h	~u	~i	~o	~j@	~k@	~l@	~m@	~n@��@	~p@	~q@	~r@	~s@	~t@�@	~v	~|	~w@	~x@	~y@	~z@	~{@A@	~}@	~~@	~@	~�@	~�@H:@	~�	~�	~�	~�	~�@	~�@	~�@	~�@	~�@H:@	~�@	~�@	~�@	~�@	~�@E@	~�	~�	~�@	~�@	~�@	~�@	~�@A@	~�@	~�@	~�@	~�@	~�@E@	~�	~�	~�	~�	~�	~�	~�	~�	~�@	~�@	~�@	~�@	~�@Ae@	~�@	~�@	~�@	~�@	~�@�@	~�	~�	~�@	~�@	~�@	~�@	~�@A@	~�@	~�@	~�@	~�@	~�@E@	~�	~�	~�	~�	~�@	~�@	~�@	~�@	~�@A@	~�@	~�@	~�@	~�@	~�@�~@	~�	~�	~�@	~�@	~�@	~�@	~�@A@	~�@	~�@	~�@	~�@	~�@�@	~�	~�	~�	~�	~�	~�	~�@	~�@	~�@	~�@	~�@H @	~�@	~�@	~�@	~�@	~�@�@	~�	~�	~�@	~�@	~�@	~�@	~�@A@	~�@	~�@	~�@	~�@	~�@E@	~�	~�	~�	~�	~�@	~�@	~�@	~�@	~�@@&@	~�@	~�@	~�@	~�@	~�@H:@			@	@	@	@	@A@	@	@		@	
@	@�@	
	v		E		*					@	@	@	@	@Ae@	@	@	@	@	@�~@		$	@	 @	!@	"@	#@A@	%@	&@	'@	(@	)@�@	+	8	,	2	-@	.@	/@	0@	1@Ae@	3@	4@	5@	6@	7@�@	9	?	:@	;@	<@	=@	>@A@	@@	A@	B@	C@	D@�@	F	[	G	N@	H	I@	J@	K@	L@	M@E@	O	U	P@	Q@	R@	S@	T@A@	V@	W@	X@	Y@	Z@�@	\	i	]	c	^@	_@	`@	a@	b@H�@	d@	e@	f@	g@	h@�@	j	p	k@	l@	m@	n@	o@A@	q@	r@	s@	t@	u@�@	w	�	x	�	y	�	z	�	{@	|@	}@	~@	@�@	�@	�@	�@	�@	�@E@	�	�	�@	�@	�@	�@	�@A@	�@	�@	�@	�@	�@H @	�	�	�	�	�@	�@	�@	�@	�@H�@	�@	�@	�@	�@	�@�g@	�	�	�@	�@	�@	�@	�@A@	�@	�@	�@	�@	�@H @	�	�	�	�	�	�	�@	�@	�@	�@	�@Ae@	�@	�@	�@	�@	�@�@	�	�	�@	�@	�@	�@	�@A@	�@	�@	�@	�@	�@�@	�	�	�	�	�@	�@	�@	�@	�@Ae@	�@	�@	�@	�@	�@�@	�@	�@	�@	�@	�@	�@Ba@	�	��	�	�>	�	�	�	�	�	�	�	�	�@	�@	�@	�@	�@�Y@	�@	�@	�@	�@	�@��@@	�	�@	�@	�@	�@	�@H @	�	�	�	�	�@	�@	�@	�@	�@Ae@	�@	�@	�@	�@	�@H @	�	�
	�@	�	@	�
@	�@	�@F�@	�@	�@	�@	�@	�@H:@	�	�)	�	�"	�	�	�@	�@	�@	�@	�@@&@	�@	�@	�@	� @	�!@�@	�#@	�$@	�%@	�&@	�'@	�(@A@	�*	�7	�+	�1	�,@	�-@	�.@	�/@	�0@Ae@	�2@	�3@	�4@	�5@	�6@�@@	�8	�9@	�:@	�;@	�<@	�=@Ez@	�?	�j	�@	�U	�A	�N	�B	�H	�C@	�D@	�E@	�F@	�G@HG@	�I@	�J@	�K@	�L@	�M@�@@	�O	�P@	�Q@	�R@	�S@	�T@A@	�V	�]@	�W	�X@	�Y@	�Z@	�[@	�\@
�@	�^	�d	�_@	�`@	�a@	�b@	�c@@&@	�e@	�f@	�g@	�h@	�i@�@	�k	��	�l	�s@	�m	�n@	�o@	�p@	�q@	�r@�@	�t	�z	�u@	�v@	�w@	�x@	�y@Ez@	�{@	�|@	�}@	�~@	�@H:@	��	��	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@A@	��	��	��@	��@	��@	��@	��@@&@	��@	��@	��@	��@	��@��@	��	�	��	��	��	��	��	��	��	��	��@	��@	��@	��@	��@H:@	��@	��@	��@	��@	��@Ae@	��	��	��@	��@	��@	��@	��@E�@	��@	��@	��@	��@	��@E@	��	��	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@F�@	��@	��@	��@	��@	��@H�@	��	��	��	��	��	��	��@	��@	��@	��@	��@|�@	��@	��@	��@	��@	��@��@	��	��	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@H:@	��	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@�@	��@	�@	�@	�@	�@	�@�@	�	�	�@	�@	�	@	�
@	�@	�@	�
@	�@Ae@	�	�%	�	�@	�	�@	�@	�@	�@	�@�@	�	�	�@	�@	�@	�@	�@�@	� @	�!@	�"@	�#@	�$@�@	�&	�-@	�'	�(@	�)@	�*@	�+@	�,@A@	�.	�4	�/@	�0@	�1@	�2@	�3@HG@	�5@	�6@	�7@	�8@	�9@H:@	�;	��	�<	�	�=	��	�>	�o	�?	�T	�@	�M	�A	�G	�B@	�C@	�D@	�E@	�F@A@	�H@	�I@	�J@	�K@	�L@A@@	�N	�O@	�P@	�Q@	�R@	�S@H�@	�U	�b	�V	�\	�W@	�X@	�Y@	�Z@	�[@E@	�]@	�^@	�_@	�`@	�a@HG@	�c	�i	�d@	�e@	�f@	�g@	�h@Ae@	�j@	�k@	�l@	�m@	�n@A@	�p	��	�q	�~	�r	�x	�s@	�t@	�u@	�v@	�w@E@	�y@	�z@	�{@	�|@	�}@�@	�	��	��@	��@	��@	��@	��@|�@	��@	��@	��@	��@	��@�@	��	��@	��	��@	��@	��@	��@	��@�@@	��	��@	��@	��@	��@	��@E@	��	��	��	��	��	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@H:@	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@H @	��	��	��	��	��@	��@	��@	��@	��@H:@	��@	��@	��@	��@	��@H @	��	��	��@	��@	��@	��@	��@H:@	��@	��@	��@	��@	��@E@	��	��	��	��	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@E@	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@	��@E@	��	��	��@	��@	��@	��@	��@H:@	��@	��@	�@	�@	�@Ae@	�	�N	�	�0	�	�	�	�	�	�	�	@	�
@	�@	�@	�
@@&@	�@	�@	�@	�@	�@��@@	�	�@	�@	�@	�@	�@E@	�	�#@	�	�@	�@	� @	�!@	�"@�@	�$	�*	�%@	�&@	�'@	�(@	�)@Ez@	�+@	�,@	�-@	�.@	�/@H:@	�1	�9	�2@	�3@	�4@	�5@	�6@	�7@	�8@Ae@	�:	�A@	�;	�<@	�=@	�>@	�?@	�@@E@	�B	�H	�C@	�D@	�E@	�F@	�G@F�@	�I@	�J@	�K@	�L@	�M@E@	�O	�	�P	�d	�Q	�]	�R	�W	�S@	�T@	�U@	�V@�Y@	�X@	�Y@	�Z@	�[@	�\@az@@	�^	�_@	�`@	�a@	�b@	�c@E@	�e	�r	�f	�l	�g@	�h@	�i@	�j@	�k@@&@	�m@	�n@	�o@	�p@	�q@A@	�s	�y	�t@	�u@	�v@	�w@	�x@Ae@	�z@	�{@	�|@	�}@	�~@H�@	��	��	��	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@�@	��	��	��	��	��@	��@	��@	��@	��@H:@	��@	��@	��@A@	��	��	��@	��@	��@	��@	��@H:@	��@	��@	��@	��@	��@H:@	��	�S	��	��	��	�^	��	�V	��	��	��	��	��@	��@	��@	��@	��@@&@	��@	��@	��@	��@	��@�@	��	�P	��@	��@	��@	��@	��@	��@	��F�	��	�L	��	�(	��	��	��	��F�	��Gt	��	��F�	��F�	��F�	��F�	��F�	��F�	��F�	��F�GtF�	��	��	����	��F�	��F�	��F�	��F�	��F�	��F�	��F�	��F��F�	��	��F�	��F�	��F�	��F�	��	��	��	��	��	���G��	����F�	��	���.F�F�G�	��F�	��F��F�	��	�	��	���dh	��	�	���\	��F�	�F�	�F�	�F�	�F�	�F��\F�	�F�	�F�	�F�	�	F�	�
F�	�F�	�F�	�
	��nF��}F�	�	�^F�F�	�	�F�	�F�	�F�	�	�$	�	�	�	�	�F��(�H	�	�F��RF��G	�	�!	�	� Z�^���	�"	�#��c�+�U	�%F�	�&F�	�'F�BF�	�)	�J	�*	�-	�+	�,�M@�I��2	�.	�A	�/	�8	�0F�	�1F�	�2F�	�3F�	�4F�	�5F�	�6F�	�7F�KF�	�9F�	�:F�	�;F�	�<F�	�=F�	�>F�	�?F�	�@F�I�F�F�	�B	�CF�	�DF�	�EF�	�FF�	�GF�	�HF�	�IF��
F�	�KF���k	�MF�	�NF�	�OF��F�	�Q@	�R@	�S@	�T@	�U@Ba@	�W@@	�X	�Y@	�Z@	�[@	�\@	�]@E@	�_	�z	�`	�m	�a	�g	�b@	�c@	�d@	�e@	�f@�@	�h@	�i@	�j@	�k@	�l@�@	�n	�t	�o@	�p@	�q@	�r@	�s@�@	�u@	�v@	�w@	�x@	�y@�@	�{	��	�|	��	�}@	�~@	�@	��@	��@E@	��@	��@	��@	��@	��@A@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@	��@	��A	��A	��A	��A	��A	��A	��A	��A	��A	��A	��A	��A	��A	��A	��AA	��	��	��	��	��A	��A	��	��AA	��A	��	��A	��A	��A	��AA	��	��AA	��A	��AC�	��	��	��	��A	��A	��	��A	��A	��AA	��	��AA	��	��AA	��A	��C�A	��AA	��	��AA	��A	��	��AA	��A	��	��A	��A	��AC�AA	��	��	��C�	��	��A	��AA	��A	��	��A	��A	��A	��AA	��C�A	��AA	��	��AA	��	��A	��AA	��A	��A	��	��AAC�	��A	��A	��AA	��	��A	��AA	��	��AA	��	��A	��AA	��A	��A	��AC�	��	�(	��	�
	��	�	��	�	��@	��@	��@	��@	��@HG@	�@	�@	�@	�@	�@H�@@	�	�@	�	@	�
@	�@	�@H�@	�	�	�	�	�@	�@	�@	�@	�@|�@	�@	�@	�@	�@	�@H�@	�	�"	�@	�@	�@	� @	�!@A@	�#@	�$@	�%@	�&@	�'@H�@	�)	�>	�*	�7	�+	�1	�,@	�-@	�.@	�/@	�0@E@	�2@	�3@	�4@	�5@	�6@�@@	�8	�9@	�:@	�;@	�<@	�=@A@	�?	�F	�@@	�A@	�B@	�C@	�D@	�E@E@	�G	�M	�H@	�I@	�J@	�K@	�L@Ez@	�N@	�O@	�P@	�Q@	�R@�@	�T	��	�U	��	�V	�q	�W	�d	�X	�^	�Y@	�Z@	�[@	�\@	�]@@&@	�_@	�`@	�a@	�b@	�c@�@	�e	�k	�f@	�g@	�h@	�i@	�j@�~@	�l@	�m@	�n@	�o@	�p@�@	�r	�	�s	�y	�t@	�u@	�v@	�w@	�x@��@	�z@	�{@	�|@	�}@	�~@A@	��	��	��@	��@	��@	��@	��@H�@	��@	��@	��@	��@	��@az@	��	��	��	��	��	��	��@	��@	��@	��@	��@|�@	��@	��@	��@	��@	��@�@@	��	��@	��@	��@	��@	��@�@	��	��@	��	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@M@	��@	��@	��@	��@	��@H @	��	��	��	��	��	��	��	��	��@	��@	��@	��@	��@F�@	��@	��@	��@	��@	��@H:@	��	��	��@	��@	��@	��@	��@@&@	��@	��@	��@	��@	��@H:@@	��	��	��	��@	��@	��@	��@	��@	��@	��H:	��H:	��H:	��	��H:	��	��	��H:	���"�	��	��"�s�s�s�	��H:	��H:	��	��NH:H:s�	��@	��@	��@	��@	��@A@	��	�	��	�	��	��	��@	��@	��@	��@	��@HG@	��@	��@	��@	��@	�@@&@	�@	�@	�@	�@	�@	�@A@	�		�	�
	�	�@	�@	�
@	�@	�@E@	�@	�@	�@	�@	�@F�@	�@	�@	�@	�@	�@	�@A@	�	�b	�	��	� 	�	�!	�8	�"	�)	�#	��	�$	��	�%	�V	�&	�A	�'	�4	�(	�.	�)@	�*@	�+@	�,@	�-@H:@	�/@	�0@	�1@	�2@	�3@A@	�5	�;	�6@	�7@	�8@	�9@	�:@A@	�<@	�=@	�>@	�?@	�@@A@	�B	�I@	�C	�D@	�E@	�F@	�G@	�H@A@	�J	�P	�K@	�L@	�M@	�N@	�O@Ae@	�Q@	�R@	�S@	�T@	�U@@&@	�W	�r	�X	�e	�Y	�_	�Z@	�[@	�\@	�]@	�^@Ae@	�`@	�a@	�b@	�c@	�d@Ba@	�f	�l	�g@	�h@	�i@	�j@	�k@A@	�m@	�n@	�o@	�p@	�q@�@	�s	��	�t	�z	�u@	�v@	�w@	�x@	�y@H @	�{@	�|@	�}@	�~@	�@Ae@	��	��	��@	��@	��@	��@H:@	��@	��@	��@	��@	��@Ae@	��	��	��	��	��	��	��	��	��@	��@	��@	��@	��@Ba@	��@	��@	��@	��@	��@A@	��	��	��@	��@	��@	��@	��@Ba@	��@	��@	��@	��@	��@A@	��	��	��	��	��@	��@	��@	��@	��@@&@	��@	��@	��@	��@	��@�@@	��	��@	��@	��@	��@	��@�@	��	��	��	��	��	��	��@	��@	��@	��@	��@@&@	��@	��@	��@	��@	��@E@@	��	��@	��@	��@	��@	��@�@	��	��@	��	��@	��@	��@	��@	��@F�@	��	��	��@	��@	��@	��@	��@Ez@	��@	��@	��@	��@	��@A@	��	��	��	��	��	��	��	��	��	��	��@	��@	��@	��@	��@@&@	��@	��@	��@	��@	��@	��@	��	��	��	��	��	��	��	�|	��	�B	�A	�A	�A	�	�8	�	�.	�	�*3&	�3&	�3&	�3&	�	3&	�
	�3&	�3&	�
3&	�	�	�3&	�3&	�3&	�3&	�3&	�3&	�3&	�	�	�3&	�3&	�3&3&A	�3&	�3&	�3&A3&	�3&	� 3&	�!3&	�"3&	�#3&	�$3&	�%3&	�&3&	�'3&	�(3&	�)3&C�3&	�+3&	�,3&	�-3&A3&	�/	�3	�03&	�13&3&	�2A3&3&	�43&	�5	�63&	�73&A�B	�93&	�:3&	�;	�>	�<3&	�=3&A3&	�?3&	�@3&	�A3&A3&	�C	�z	�D	�Y	�E	�Q	�F	�L	�G	�I	�H�AC��A	�J	�K��A�B�A	�M	�O	�N�A��A	�P�AN�A	�R�A	�S�A	�T�A�A	�U	�V�A	�W�A	�X�ADN�A	�Z3&	�[	�m	�\	�g	�]	�b
Q	�^	�_�J	�`�J	�a�JIK�J	�c�J	�d�J	�e�J	�f�J���J	�h�J	�i�J	�j�J	�k�J	�l�J�S�J	�n	�t	�o�J�J	�p	�q�J	�r�J	�s�J�a�J	�u�J	�v�J	�w�J	�x�J	�y�JDN�J	�{3&�3&	�}	��	�~A	�A3&A	��3&	��3&	��3&	��3&	��	��	��3&C�3&3&	��	��3&	��3&	��3&	��3&�B3&	��	��	��	��	��A	��A3&A	��3&	��3&	��3&	��	��	��3&	��3&C�3&	��3&	��3&	��3&	��3&	��3&	��3&�3&	��	��	��A	��A3&A	��3&	��3&	��3&	��3&	��3&	��3&C�3&	��3&	��	��	��	��	��A	��A3&A	��3&	��3&	��3&	��	��	��3&	��3&C�3&	��3&	��3&	��3&	��3&	��3&�3&	��	��	��A	��A3&A	��3&	��3&	��3&	��	��	��	��	��3&C�3&3&	��	��3&	��3&	��3&�B3&	��3&	��3&	��3&	��3&	��3&�3&	��	�)	��AA	��	��	�A	��	��	��A	��A	��	��AA3+	��AA	��	��A	��A	��A	��A	��A	��A	��A	��	�A	��A	��	��A	��	��A	��A	��	��A	��AA	��A	��	��A	��AA	��A	���fA	��A	��A	��AA	��	��A	��A	��AA	��	�A	�A�A	�A	�A	�AA	�	�A	�A	�	AA	�
	�A	�A	�
AA	�	�A	�ANA	�	�#	�A	�	�	�AA	�	�A�AA	�	�A	�A	�	� 	�A	�A	�AC�AA	�!	�"AC�AA	�$	�%AA	�&A	�'A	�(AC�	�*	�+AC�	�,	�b	�-	�P	�.	�I	�/	�8A	�0A	�1	�2A	�3A	�4A	�5C�	�6C�	�7C�AC�A	�9	�:A	�;A	�<A	�=A	�>A	�?A	�@AA	�A	�BA	�CAA	�D	�EA	�FA	�GA	�HA�A	�JAA	�K	�LA	�MA	�NA	�OAC��	�QAA	�RA	�S	�TA	�UA	�VA	�WA	�X	�_	�Y	�\	�Z	�[�AC��	�]	�^����	�`A	�aA
Q�A	�c	�d	�qA	�e	�fA	�g	�n	�hA	�iA	�jA	�kA	�lA	�mAA�	�oA	�pAC�AA	�r	�s	��	�tAA	�u	�vA	�wA	�x	�	�y	�|	�z	�{C����j	�}	�~�{�3+	��A	��	��N�B
QA=	��A	��N	��A�A	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@A@	��@	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@	��@	��@@&@	��	��	��@	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@E@	��@	��@	��@	��@	��@�@	��	��	��	��	��	��	��	��	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@��@	��@	��@	��@	��@	��@	��@�@	��	��	��	��	��@	��@	��@	��@	��@�'@	��@	��@	��@	��@	��@E@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@H:@	��	�	��	�	��	��	��@	��@	��@	��@	��@E@	��@	��@	��@	��@	�@H�@	�	�	�@	�@	�@	�@	�@A@	�	@	�
@	�@	�@	�
@E@	�	�	�	�	�@	�@	�@	�@	�@E@	�@	�@	�@	�@	�@E@	�	�#	�@	�@	� @	�!@	�"@A@	�$@	�%@	�&@	�'@	�(@Ae@	�*	�q	�+	��	�,	�c	�-	�H	�.	�;	�/	�5	�0@	�1@	�2@	�3@	�4@@&@	�6@	�7@	�8@	�9@	�:@H:@	�<	�B	�=@	�>@	�?@	�@@	�A@A@	�C@	�D@	�E@	�F@	�G@E@	�I	�V	�J	�P	�K@	�L@	�M@	�N@	�O@A@	�Q@	�R@	�S@	�T@	�U@�@	�W	�]	�X@	�Y@	�Z@	�[@	�\@A@	�^@	�_@	�`@	�a@	�b@Ae@	�d	�y	�e	�r	�f	�l	�g@	�h@	�i@	�j@	�k@��@	�m@	�n@	�o@	�p@	�q@�@	�s@	�t@	�u@	�v@	�w@	�x@A@	�z	��	�{	��	�|@	�}@	�~@	�@	��@�'@	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@�@	��	�:	��	��	��	��	��	��	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@Ba@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@�@	��	�-	��	��	��@	��@	��@	��@	��@B@	��@	��@	��@	��@	��@	��@	��Ae	��Ae	��Ae	��	��	��Ae	��Ae	��Ae	��Ae	��AeAe	��Ae	��	��AeAe	��	��Ae	��AeAe	��	��Ae	��Ae	��Ae	��Ae	��Ae	��Ae	��Ae	��Ae	��Ae	��Ae	��Ae	��Ae	��Ae	��	��	��	���8Ae�8AeAe	��AeB�	��AeAe	��	��	�Ae	��	��AeAe	��Ae	��	��Ae	��Ae	��	��Ae	��	��
�Ae	��Ae	��	��AeAe	��Ae	��Ae	��	��AeAe	��	��Ae	��Ae	��Ae	��Ae	��Ae	��Ae	��AeAe�8	��Ae	�Ae	�Ae	�Ae	�Ae	�Ae	�Ae	�Ae	�Ae	�Ae	�	Ae	�
Ae	�Ae	�Ae	�
Ae	�Ae	�Ae
�AeAe	�	�AeAe	�	�Ae	�Ae	�AeAe	�	�Ae	�Ae	�Ae	�Ae	�Ae	�Ae	�Ae	�Ae	� Ae	�!Ae	�"Ae	�#Ae	�$Ae	�%Ae	�&Ae	�'	�*	�(	�)AeB��8Ae	�+	�,Ae
�~��	�.	�4	�/@	�0@	�1@	�2@	�3@A@	�5@	�6@	�7@	�8@	�9@A@	�;	�V	�<	�I	�=	�C	�>@	�?@	�@@	�A@	�B@Ae@	�D@	�E@	�F@	�G@	�H@�@	�J	�P	�K@	�L@	�M@	�N@	�O@A@	�Q@	�R@	�S@	�T@	�U@E@	�W	�d	�X	�^	�Y@	�Z@	�[@	�\@	�]@��@	�_@	�`@	�a@	�b@	�c@H @	�e	�k	�f@	�g@	�h@	�i@	�j@A@	�l@	�m@	�n@	�o@	�p@F�@	�r	��	�s	��	�t	��	�u	�|@	�v	�w@	�x@	�y@	�z@	�{@E@	�}	��	�~@	�@	��@	��@	��@A@	��@	��@	��@	��@	��@E@	��	��@	��	��@	��@	��@	��@	��@@&@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@|�@	��	��	��	��	��	��	��@	��@	��@	��@	��@��@	��@	��@	��@	��@	��@H�@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@E�@	��	��	��	��	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@��@	��	�	��	��	��	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@��@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@E@	��	�	��	��	��@	��@	��@	��@	��@��@	��@	��@	��@	��@	��@E@	�@	�@	�@	�@	�@	�@A@	�	�#	�		�	�
	�	�@	�@	�
@	�@	�@��@	�@	�@	�@	�@	�@A@	�	�	�@	�@	�@	�@	�@A@	�@	�@	� @	�!@	�"@H:@	�$	�1	�%	�+	�&@	�'@	�(@	�)@	�*@Ae@	�,@	�-@	�.@	�/@	�0@�@	�2@	�3@	�4@	�5@	�6@	�7@A@	�9	�]	�:	�(	�;	��	�<	��	�=	��	�>	�x	�?@	�@@	�A@	�B@	�C@	�D@	�E@	�F	�[	�GH 	�HH 	�IH 	�JH 	�KH 	�LH 	�M	�UH 	�NH 	�OH 	�P	�QH 	�RH H 	�S	�TW@H W@H 	�V	�WH H 	�X	�YH H 	�ZH W@H 	�\H 	�]	�^H H 	�_H 	�`H 	�aH 	�b	�c	�mH 	�dH 	�e	�fH 	�g	�jH 	�h	�iH AK��	�kH 	�lH H W@	�nH H 	�o	�p	�t	�qH H 	�rH 	�sW@H 	�uH 	�vH H 	�wH W@	�y	�	�z@	�{@	�|@	�}@	�~@A@	��@	��@	��@	��@	��@�@	��	��	��	��	��@	��@	��@	��@	��@E@	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@E@	��@	��@	��@	��@	��@�@	��	��	��	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@H�@@	��	��@	��@	��@	��@	��@H�@	��	��	��	��	��@	��@	��@	��@	��@��@	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@H�@	��	��	��	��	��	��	��@	��@	��@	��@	��@	��@�@@	��	��@	��@	��@	��@	��@E@	��	��	��	��	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@�b@@	��	��@	��@	��@	��@	��@�@	��	�
	��	�	��	�	��@	��@	��@	��@	��@@&@	�@	�@	�@	�@	�@A@@	�	�@	�	@	�
@	�@	�@E@	�	�	�	�	�@	�@	�@	�@	�@A@	�@	�@	�@	�@	�@|�@	�	�"	�@	�@	�@	� @	�!@A@	�#@	�$@	�%@	�&@	�'@E@	�)	��	�*	�a	�+	�F	�,	�9	�-	�3	�.@	�/@	�0@	�1@	�2@@&@	�4@	�5@	�6@	�7@	�8@H�@	�:	�@	�;@	�<@	�=@	�>@	�?@A@	�A@	�B@	�C@	�D@	�E@H�@	�G	�T	�H	�N	�I@	�J@	�K@	�L@	�M@@&@	�O@	�P@	�Q@	�R@	�S@�6@	�U	�[	�V@	�W@	�X@	�Y@	�Z@A@	�\@	�]@	�^@	�_@	�`@E@	�b	�}	�c	�p	�d	�j	�e@	�f@	�g@	�h@	�i@HG@	�k@	�l@	�m@	�n@	�o@HG@	�q	�w	�r@	�s@	�t@	�u@	�v@A@	�x@	�y@	�z@	�{@	�|@Ae@	�~	��	�	��	��@	��@	��@	��@	��@��@	��@	��@	��@	��@	��@@&@	��@	��@	��@	��@	��@	��@A@	��	�&	��	��	��	��	��	��	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@A@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@Ae@	��	�@	��	��@	��@	��@	��@	��@	��@	��	��	��	��az	��	��	��	��az	��az	��azm	��m	����az	��az	��	��	��	��v�	���1�	���
�	���R�	��az�1az	��	��	��	��	��	��	��	��m	��t�	��	��	��az����	��mm	��	��m�y�	��	��	��az	��u�	��az��az	��az	��az	��az��az	��az	��	��	��azu�az	��azmaz	��	��	��az	��az	��az�az	��az	��	��m	��t�	��	��	��S	R�t�	��az	��	��	��	�����m	��az��az	��	�	��	�
	��	�	��az	��	�	�	�v�	�	�azt�azu�az	�az�1az	�az	�az	�	�1�1v�	�	�	�az	�
az	�azu�az	�az	�az	�az��az	�az	�az	�az	�az	�az�az	�	� 	�@	�@	�@	�@	�@A@	�!@	�"@	�#@	�$@	�%@HG@	�'	�B	�(	�5	�)	�/	�*@	�+@	�,@	�-@	�.@E@	�0@	�1@	�2@	�3@	�4@�@	�6	�<	�7@	�8@	�9@	�:@	�;@A@	�=@	�>@	�?@	�@@	�A@�@	�C	�P	�D	�J	�E@	�F@	�G@	�H@	�I@E@	�K@	�L@	�M@	�N@	�O@H @	�Q	�W	�R@	�S@	�T@	�U@	�V@A@	�X@	�Y@	�Z@	�[@	�\@AK@	�^	�/	�_	��	�`	��	�a	�z	�b	�m	�c	�g	�d@	�e@	�f@F�@	�h@	�i@	�j@	�k@	�l@H @	�n	�t	�o@	�p@	�q@	�r@	�s@A@	�u@	�v@	�w@	�x@	�y@H�@	�{	��	�|	��	�}@	�~@	�@	��@	��@Ba@	��@	��@	��@	��@	��@Ez@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@A@	��	��	��	��	��@	��@	��@	��@	��@	��@HG@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@��@	��	��	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@A@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@��@	��	��	��	��	��	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@A@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@A@	��	��@	��	��@	��@	��@	��@	��@AK@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@Ae@	��	�	��	�	��	�	��@	��@	��@	��@	�@Ae@	�@	�@	�@	�@	�@A@	�	�	�	@	�
@	�@	�@	�
@A@	�@	�@	�@	�@	�@�@	�	�"	�	�	�@	�@	�@	�@	�@A@	�@	�@	�@	� @	�!@�@	�#	�)	�$@	�%@	�&@	�'@	�(@A@	�*@	�+@	�,@	�-@	�.@E@	�0	��	�1	�b	�2	�M	�3	�@	�4	�:	�5@	�6@	�7@	�8@	�9@H:@	�;@	�<@	�=@	�>@	�?@�@	�A	�G	�B@	�C@	�D@	�E@	�F@A@	�H@	�I@	�J@	�K@	�L@�@	�N	�U@	�O	�P@	�Q@	�R@	�S@	�T@�g@	�V	�\	�W@	�X@	�Y@	�Z@	�[@A@	�]@	�^@	�_@	�`@	�a@A@	�c	�~	�d	�q	�e	�k	�f@	�g@	�h@	�i@	�j@Ae@	�l@	�m@	�n@	�o@	�p@H @	�r	�x	�s@	�t@	�u@	�v@	�w@Ae@	�y@	�z@	�{@	�|@	�}@A@	�	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@��@	��	��	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@	��@	��L�	��L�	��L�	��L�	��L�	��L�	��L�L���	��	��	��	��	��	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@Ae@	��	��	��@	��@	��@	��@	��@E@	��@	��@	��@	��@	��@E@	��	��	��	��	��@	��@	��@	��@	��@��@	��@	��@	��@	��@	��@Ae@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@az@	��	��	��	��	��	��	��@	��@	��@	��@	��@��@	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@E@	��	�	��	��	��@	��@	��@	��@	��@E@	��@	��@	�@	�@	�@�@	�	�
	�@	�@	�@	�@	�	@A@	�@	�@	�
@	�@	�@�@	�	��	�	��	�	�	�	��	�	�L	�	�1	�	�$	�	�	�@	�@	�@	�@	�@E�@	�@	� @	�!@	�"@	�#@H�@	�%	�+	�&@	�'@	�(@	�)@	�*@A@	�,@	�-@	�.@	�/@	�0@A@	�2	�?	�3	�9	�4@	�5@	�6@	�7@	�8@Ae@	�:@	�;@	�<@	�=@	�>@�@	�@	�F	�A@	�B@	�C@	�D@	�E@A@	�G@	�H@	�I@	�J@	�K@�@	�M	�h	�N	�[	�O	�U	�P@	�Q@	�R@	�S@	�T@Ae@	�V@	�W@	�X@	�Y@	�Z@�@	�\	�b	�]@	�^@	�_@	�`@	�a@A@	�c@	�d@	�e@	�f@	�g@A@	�i	�v	�j	�p	�k@	�l@	�m@	�n@	�o@H:@	�q@	�r@	�s@	�t@	�u@A@	�w	�}	�x@	�y@	�z@	�{@	�|@A@	�~@	�@	��@	��@	��@A@	��	��	��	��	��	��	��	��	��@	��@	��@	��@	��@HG@	��@	��@	��@	��@	��@	��@	��	��	��H:	��H:	��H:	��H:	��H:	��H:	��H:	��	��	��	��	��	��H:	��	��	��	��H:	��H:H:�9H:	��H:	��H:��s�	��	�����s�H:	��H:	��H:�s�H:	��	��	��H:	��	��	��	��	��	��	��H:s�s��*	��	�� ]���	��H:	��	����s����H:	��	��H:	��H:	��H:	��H:	��H:	��H:	��H:H:s�	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@�@	��	��	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@@&@	��@	��@	��@	��@	��@�@	��	�		��	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@�@	��	�	��@	��@	�@	�@	�@A@	�@	�@	�@	�@	�@Ae@	�
	�@	�	�@	�
@	�@	�@	�@�@@	�	�@	�@	�@	�@	�@E@	�	�v	�	�?	�	�0	�	�)	�	�#	�@	�@	� @	�!@	�"@F�@	�$@	�%@	�&@	�'@	�(@�@@	�*	�+@	�,@	�-@	�.@	�/@H @	�1	�8@	�2	�3@	�4@	�5@	�6@	�7@�@@	�9	�:@	�;@	�<@	�=@	�>@�@	�@	�[	�A	�N	�B	�H	�C@	�D@	�E@	�F@	�G@Ae@	�I@	�J@	�K@	�L@	�M@�~@	�O	�U	�P@	�Q@	�R@	�S@	�T@nW@	�V@	�W@	�X@	�Y@	�Z@H @	�\	�i	�]	�c	�^@	�_@	�`@	�a@	�b@�@	�d@	�e@	�f@	�g@	�h@Ae@	�j	�p	�k@	�l@	�m@	�n@	�o@A@	�q@	�r@	�s@	�t@	�u@�@	�w	��	�x	��	�y	��	�z	��	�{@	�|@	�}@	�~@	�@Ae@	��@	��@	��@	��@	��@H�@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@H�@	��	��	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@Ae@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@��@	��	��	��	��	��	��	��@	��@	��@	��@	��@��@	��@	��@	��@	��@	��@�~@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@�@	��	��	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@	��@	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��	��az	��	��azv�azt�u�	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@Ae@	��	��	��	�[	��	�*	��	�	��	�@	��	��@	��@	��@	�@	�@�@	�	�		�@	�@	�@	�@	�@A@	�
@	�@	�@	�
@	�@A@	�	�	�	�	�@	�@	�@	�@	�@Ae@	�@	�@	�@	�@	�@E@	�	�$	�@	� @	�!@	�"@	�#@A@	�%@	�&@	�'@	�(@	�)@H�@	�+	�F	�,	�9	�-	�3	�.@	�/@	�0@	�1@	�2@@&@	�4@	�5@	�6@	�7@	�8@�@	�:	�@	�;@	�<@	�=@	�>@	�?@A@	�A@	�B@	�C@	�D@	�E@A@	�G	�N@	�H	�I@	�J@	�K@	�L@	�M@A@	�O	�U	�P@	�Q@	�R@	�S@	�T@A@	�V@	�W@	�X@	�Y@	�Z@�@	�\	��	�]	�r	�^	�e	�_@	�`@	�a@	�b@	�c@	�d@�@	�f	�l	�g@	�h@	�i@	�j@	�k@A@	�m@	�n@	�o@	�p@	�q@�@	�s	��	�t	�z	�u@	�v@	�w@	�x@	�y@E@	�{@	�|@	�}@	�~@	�@�@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@�@	��	��	��	��	��	��	��@	��@	��@	��@	��@E@	��@	��@	��@	��@	��@Ba@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@E@	��	��	��	��	��@	��@	��@	��@	��@�g@	��@	��@	��@	��@	��@�~@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@HG@	��	�.	��	��	��	��	��	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@A@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@E@	��	��	��	��	��@	��@	��@	��@	��@E�@	��@	��@	��@	��@	��@A@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@�@	��	�	��	�	�	�	�@	�@	�@	�@	�@��@	�@	�@	�	@	�
@	�@A@	�
	�	�@	�@	�@	�@	�@Ae@	�@	�@	�@	�@	�@A@	�	�'	�	�!	�@	�@	�@	�@	� @Ez@	�"@	�#@	�$@	�%@	�&@A@@	�(	�)@	�*@	�+@	�,@	�-@�@	�/	�Z	�0	�E	�1	�>	�2	�8	�3@	�4@	�5@	�6@	�7@�@	�9@	�:@	�;@	�<@	�=@�@@	�?@	�@	�A@	�B@	�C@	�D@��@	�F	�M	�G@	�H@	�I@	�J@	�K@	�L@Ae@	�N	�T	�O@	�P@	�Q@	�R@	�S@A@	�U@	�V@	�W@	�X@	�Y@�@	�[	�v	�\	�i	�]	�c	�^@	�_@	�`@	�a@	�b@Ae@	�d@	�e@	�f@	�g@	�h@F�@	�j	�p	�k@	�l@	�m@	�n@	�o@A@	�q@	�r@	�s@	�t@	�u@E@	�w	��	�x	�~	�y@	�z@	�{@	�|@	�}@Ae@	�@	��@	��@	��@	��@H�@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@E@	��	�6	��	�]	��	�	��	��	��	��	��	��	��	��	��@	��@	��@	��@	��@Ez@	��@	��@	��@	��@	��@E@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@Ez@	��	��	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@E@	��	��	��@	��@	��@	��@	��@A@	��@	��@A@	��	��	��	��	��	��	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@�~@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@�@	��	��	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@A@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@@&@	�	�8	�	�	�	�	�	�
	�@	�@	�@	�@	�	@Ae@	�@	�@	�
@	�@	�@E@	�	�	�@	�@	�@	�@	�@A@	�@	�@	�@	�@	�@�@	�	�+	�	�%	� @	�!@	�"@	�#@	�$@A@	�&@	�'@	�(@	�)@	�*@�@	�,	�2	�-@	�.@	�/@	�0@	�1@A@	�3@	�4@	�5@	�6@	�7@A@	�9	�N	�:	�G	�;	�A	�<@	�=@	�>@	�?@	�@@E�@	�B@	�C@	�D@	�E@	�F@A@	�H@	�I@	�J@	�K@	�L@	�M@A@	�O	�V	�P@	�Q@	�R@	�S@	�T@	�U@Ae@	�W@	�X@	�Y@	�Z@	�[@	�\@A@	�^	��	�_	��	�`	�{	�a	�n	�b	�h	�c@	�d@	�e@	�f@	�g@E�@	�i@	�j@	�k@	�l@	�m@�~@	�o	�u	�p@	�q@	�r@	�s@	�t@A@	�v@	�w@	�x@	�y@	�z@E@	�|	��	�}	��	�~@	�@	��@	��@	��@Ae@	��@	��@	��@	��@	��@�~@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@E@	��	��	��	��	��	��	��@	��@	��@	��@	��@E�@	��@	��@	��@	��@	��@HG@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@E@	��	��	��	��	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@H:@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@A@	��	�	��	��	��	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@E@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@�@	��	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@A@	�@	�@	�@	�@	�@�@	�	�!	�	�	�	�	�	@	�
@	�@	�@	�
@Ae@	�@	�@	�@	�@	�@@&@	�	�	�@	�@	�@	�@	�@A@	�@	�@	�@	�@	� @Ez@	�"	�)@	�#	�$@	�%@	�&@	�'@	�(@H:@	�*	�0	�+@	�,@	�-@	�.@	�/@A@	�1@	�2@	�3@	�4@	�5@�@	�7	�*	�8	��	�9	�p	�:	�U	�;	�H	�<	�B	�=@	�>@	�?@	�@@	�A@�'@	�C@	�D@	�E@	�F@	�G@�@	�I	�O	�J@	�K@	�L@	�M@	�N@A@	�P@	�Q@	�R@	�S@	�T@�@	�V	�c	�W	�]	�X@	�Y@	�Z@	�[@	�\@��@	�^@	�_@	�`@	�a@	�b@�@	�d	�j	�e@	�f@	�g@	�h@	�i@H:@	�k@	�l@	�m@	�n@	�o@H�@	�q	��	�r	�y@	�s	�t@	�u@	�v@	�w@	�x@�@	�z	��	�{@	�|@	�}@	�~@	�@A@	��@	��@	��@	��@	��@�@	��	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@E@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@�@	��	��	��	��	��	��	��	��	��@	��@	��@	��@	��@	��@	��E	��E	��E	��E	��E	��E	��E	��E	��EE	��	��EE	��	��EE	��	��E	��EE	��	��E	��EE	��	��EE	��	��E	��E	��E	��E	��EE	��	��E	��EE	��@E	��@	��@	��@	��@	��@@&@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@Ae@	��	��@	��	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@�@	��	�	��	�	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	�@	�@�@	�	�		�@	�@	�@	�@	�@A@	�
@	�@	�@	�
@	�@�@	�	�	�	�	�@	�@	�@	�@	�@Ez@	�@	�@	�@	�@	�@�@	�	�$	�@	� @	�!@	�"@	�#@A@	�%@	�&@	�'@	�(@	�)@H @	�+	��	�,	�b	�-	�G	�.	�:	�/	�4	�0@	�1@	�2@	�3@�@	�5@	�6@	�7@	�8@	�9@H:@	�;	�A	�<@	�=@	�>@	�?@	�@@A@	�B@	�C@	�D@	�E@	�F@�@	�H	�U	�I	�O	�J@	�K@	�L@	�M@	�N@Ba@	�P@	�Q@	�R@	�S@	�T@E@	�V	�\	�W@	�X@	�Y@	�Z@	�[@A@	�]@	�^@	�_@	�`@	�a@��@	�c	�~	�d	�q	�e	�k	�f@	�g@	�h@	�i@	�j@�@	�l@	�m@	�n@	�o@	�p@H:@	�r	�x	�s@	�t@	�u@	�v@	�w@A@	�y@	�z@	�{@	�|@	�}@�@	�	��@	��	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@�@	��	��	��	��	��	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@E@	��@	��@	��@	��@	��@	��@A@	��	��	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@HG@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@�@	��	��	��	��	��	��	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@F�@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@@&@	��	��	��	��	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@A@	��	�Q	��	�L	��	��	�	��	�	�j	�	�9	�	�	�	�	�	�	�@	�@	�@	�	@	�
@@&@	�@	�
@	�@	�@	�@�@	�	�	�@	�@	�@	�@	�@A@	�@	�@	�@	�@	�@�@	�	�,	� 	�&	�!@	�"@	�#@	�$@	�%@H:@	�'@	�(@	�)@	�*@	�+@�@	�-	�3	�.@	�/@	�0@	�1@	�2@A@	�4@	�5@	�6@	�7@	�8@H:@	�:	�U	�;	�H	�<	�B	�=@	�>@	�?@	�@@	�A@��@	�C@	�D@	�E@	�F@	�G@�@	�I	�O	�J@	�K@	�L@	�M@	�N@A@	�P@	�Q@	�R@	�S@	�T@Ez@	�V	�]@	�W	�X@	�Y@	�Z@	�[@	�\@�@	�^	�d	�_@	�`@	�a@	�b@	�c@A@	�e@	�f@	�g@	�h@	�i@E@	�k	��	�l	��	�m	�z	�n	�t	�o@	�p@	�q@	�r@	�s@�'@	�u@	�v@	�w@	�x@	�y@�@	�{	��	�|@	�}@	�~@	�@	��@A@	��@	��@	��@	��@	��@E@	��	��	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@E@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@�@	��	��	��	��	��	��	��@	��@	��@	��@	��@E@	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@H:@	��@	��@	��@	��@	��@H @	��	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@�@	��	�1	��	�	��	��	��	��	��	��	��@	��@	��@	��@	��@E@	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@	��@A@	��	��@	��	��@	��@	��@	��@	��@�@	��	�	��@	��@	��@	��@	��@A@	�@	�@	�@	�@	�@�@	�	�	�	�	�	@	�
@	�@	�@	�
@	�@Ae@	�	�	�@	�@	�@	�@	�@A@	�@	�@	�@	�@	�@�@	�	�*	�	�$	�@	� @	�!@	�"@	�#@Ez@	�%@	�&@	�'@	�(@	�)@Ae@	�+@	�,@	�-@	�.@	�/@	�0@A@	�2	�]	�3	�H	�4	�A	�5	�;	�6@	�7@	�8@	�9@	�:@@&@	�<@	�=@	�>@	�?@	�@@E@	�B@	�C@	�D@	�E@	�F@	�G@A@	�I	�P@	�J	�K@	�L@	�M@	�N@	�O@E@	�Q	�W	�R@	�S@	�T@	�U@	�V@A@	�X@	�Y@	�Z@	�[@	�\@H @	�^	�y	�_	�l	�`	�f	�a@	�b@	�c@	�d@	�e@@&@	�g@	�h@	�i@	�j@	�k@�@	�m	�s	�n@	�o@	�p@	�q@	�r@A@	�t@	�u@	�v@	�w@	�x@�@	�z	��	�{	��	�|@	�}@	�~@	�@	��@�@	��@	��@	��@	��@	��@A@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@�@	��	�b	��	�	��	��	��	��	��	��	��	��	��@	��@	��@	��@	��@H�@	��@	��@	��@	��@	��@H @	��	��	��@	��@	��@	��@	��@H:@	��@	��@	��@	��@	��@�@	��	��	��	��	��@	��@	��@	��@	��@H:@	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@F�@	��	��	��	��	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@�@	��	��	��	��	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@E@	��	��	��@	��@	��@	��@	��@A@	�@	�@	�@	�@	�@Ae@	�	�7	�	�"	�	�	�		�	�
@	�@	�@	�
@	�@H:@	�@	�@	�@	�@	�@E@	�	�	�@	�@	�@	�@	�@A@	�@	�@	�@	� @	�!@A@	�#	�*@	�$	�%@	�&@	�'@	�(@	�)@E@	�+	�1	�,@	�-@	�.@	�/@	�0@H @	�2@	�3@	�4@	�5@	�6@H:@	�8	�M	�9	�F	�:	�@	�;@	�<@	�=@	�>@	�?@�@	�A@	�B@	�C@	�D@	�E@H:@	�G@	�H@	�I@	�J@	�K@	�L@Ae@	�N	�[	�O	�U	�P@	�Q@	�R@	�S@	�T@Ae@	�V@	�W@	�X@	�Y@	�Z@H @	�\@	�]@	�^@	�_@	�`@	�a@A@	�c	��	�d	��	�e	�t	�f	�m@	�g	�h@	�i@	�j@	�k@	�l@E@	�n@	�o@	�p@	�q@	�r@	�s@�@	�u	��	�v	�|	�w@	�x@	�y@	�z@	�{@@&@	�}@	�~@	�@	��@	��@E@	��	��	��@	��@	��@	��@	��@E@	��@	��@	��@	��@	��@E@	��	��	��	��	��	��	��@	��@	��@	��@��@	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@az@	��@	��@	��@	��@	��@�@	��	��	��	��	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@@&@	��	��	��@	��@	��@	��@	��@H:@	��@	��@	��@	��@	��@H @	��	�	��	��	��	��	��	��	��@	��@	��@	��@	��@H:@	��@	��@	��@	��@	��@Ae@	��	��	��@	��@	��@	��@	��@H�@	��@	��@	��@	��@	��@�~@	��	��@	��	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@	��@	��Ae	��	�	��Ae	��Ae	��Ae	��Ae	��Ae	��	�	�AeAe	�Ae	��Ae	�Ae	�Ae	�Ae��AeAe	�	�	Ae	�
AeAe	�Ae	�	�
Ae	�AeAe	�Ae	�	�Ae	�AeAe	�Ae	�B�Ae	�	�1	�	�$	�	�	�@	�@	�@	�@	�@E@	�@	� @	�!@	�"@	�#@A@	�%	�+	�&@	�'@	�(@	�)@	�*@A@	�,@	�-@	�.@	�/@	�0@F�@	�2	�?	�3	�9	�4@	�5@	�6@	�7@	�8@Aeaz	�:@	�;@	�<@	�=@	�>@Ae@	�@	�F	�A@	�B@	�C@	�D@	�E@A@	�G@	�H@	�I@	�J@	�K@Ae@	�M	��	�N	�	�O	��	�P	��	�Q	�l	�R	�_	�S	�Y	�T@	�U@	�V@	�W@	�X@Ae@	�Z@	�[@	�\@	�]@	�^@�@	�`	�f	�a@	�b@	�c@	�d@	�e@A@	�g@	�h@	�i@	�j@	�k@�@	�m	�t@	�n	�o@	�p@	�q@	�r@	�s@�@	�u	�{	�v@	�w@	�x@	�y@	�z@A@	�|@	�}@	�~@	�@	��@@&@	��	��	��	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@HG@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@E@	��	��	��	��	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@E@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@@&@	��	��	��	��	��	��	��	��	��@	��@	��@	��@	��@F�@	��@	��@	��@	��@	��@E@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@�@	��	��	��	��	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@�@	��	�	��	��@	��	��@	��@	��@	��@	��@H�@	��	�	��@	��@	��@	��@	��@A@	�@	�@	�@	�@	�@H�@	�	�	�@	�	@	�
@	�@	�@	�
@Ae@	�	�	�@	�@	�@	�@	�@A@	�@	�@	�@	�@	�@A@	�	�u	�	�N	�	�9	�	�,	� 	�&	�!@	�"@	�#@	�$@	�%@Ae@	�'@	�(@	�)@	�*@	�+@E@	�-	�3	�.@	�/@	�0@	�1@	�2@A@	�4@	�5@	�6@	�7@	�8@A@	�:	�A	�;@	�<@	�=@	�>@	�?@	�@@��@	�B	�H	�C@	�D@	�E@	�F@	�G@A@	�I@	�J@	�K@	�L@	�M@�'@	�O	�d	�P	�W	�Q@	�R@	�S@	�T@	�U@	�V@Ae@	�X	�^	�Y@	�Z@	�[@	�\@	�]@A@	�_@	�`@	�a@	�b@	�c@A@	�e	�n	�f	�l	�g@	�h@	�i@	�j@	�k@E@	�m@@&@	�o@	�p@	�q@	�r@	�s@	�t@A@	�v	��	�w	��	�x	��	�y	�	�z@	�{@	�|@	�}@	�~@�'@	��@	��@	��@	��@	��@F�@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@A@	��	��	��	��	��@	��@	��@	��@	��@E�@	��@	��@	��@	��@	��@A@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@Ae@	��	��	��	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@�@	��	��	��	��	��@	��@	��@	��@	��@��@	��@	��@	��@	��@	��@H:@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@�@	��	��	��	�C	��	�	��	�	��	��	��	��	��@	��@	��@	��@	��@E�@	��@	��@	��@	��@	��@E@	��	��	��@	��@	��@	��@	��@A@	��@	��@	�@	�@	�@�@	�	�	�	�	�@	�@	�@	�	@	�
@|�@	�@	�
@	�@	�@	�@�@@	�	�@	�@	�@	�@	�@E@	�	�4	�	�'	�	�!	�@	�@	�@	�@	� @�@	�"@	�#@	�$@	�%@	�&@�@	�(	�.	�)@	�*@	�+@	�,@	�-@�'@	�/@	�0@	�1@	�2@	�3@az@	�5	�<	�6@	�7@	�8@	�9@	�:@	�;@Ae@	�=@	�>@	�?@	�@@	�A@	�B@��@	�D	�o	�E	�`	�F	�S	�G	�M	�H@	�I@	�J@	�K@	�L@E@	�N@	�O@	�P@	�Q@	�R@H @	�T	�Z	�U@	�V@	�W@	�X@	�Y@�@	�[@	�\@	�]@	�^@	�_@H @	�a	�h	�b@	�c@	�d@	�e@	�f@	�g@E@	�i@	�j@	�k@	�l@	�m@	�n@E@	�p	�~	�q@	�r	�x	�s@	�t@	�u@	�v@	�w@E@	�y@	�z@	�{@	�|@	�}@A@	�	��	��	��	��@	��@	��@	��@	��@�~@	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@	��@az@	��	��	��	��	��	��	��	��	��@	��@	��@	��@	��@	��@@&@	��@	��@	��@	��@	��@	��@A@	��	��	��@	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@Ae@	��	��	��	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@Ae@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@Ae@	��	��	��@	��@	��@@&@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@��@	��	� 	��	�	��	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@E@	��	��	��@	��@	��@	��@	��@A@	�@	�@	�@	�@	�@H:@	�	�	�	�
	�@	�	@	�
@	�@	�@Ae@	�@	�@	�@	�@	�@A@	�	�	�@	�@	�@	�@	�@A@	�@	�@	�@	�@	�@A@	�!	�<	�"	�/	�#	�)	�$@	�%@	�&@	�'@	�(@Ae@	�*@	�+@	�,@	�-@	�.@�@	�0	�6	�1@	�2@	�3@	�4@	�5@A@	�7@	�8@	�9@	�:@	�;@E@	�=	�D	�>@	�?@	�@@	�A@	�B@	�C@Ae@	�E	�K	�F@	�G@	�H@	�I@	�J@A@	�L@	�M@	�N@	�O@	�P@H @	�R	�	�S	�6	�T	�'	�U	��	�V	��	�W	�l	�X	�e	�Y	�_	�Z@	�[@	�\@	�]@	�^@Ae@	�`@	�a@	�b@	�c@	�d@E@	�f@	�g@	�h@	�i@	�j@	�k@A@	�m	�z	�n	�t	�o@	�p@	�q@	�r@	�s@��@	�u@	�v@	�w@	�x@	�y@F�@	�{	��	�|@	�}@	�~@	�@	��@A@	��@	��@	��@	��@	��@�@	��	��	��	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@E@	��	��	��	��	��@	��@	��@	��@	��@F�@	��@	��@	��@	��@	��@A@	��	��	��@	��@	��@	��@	��@�'@	��@	��@	��@	��@	��@H @	��	��	��	��	��	��	��@	��@	��@	��@	��@	��@Ae@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@�@	��	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@E@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@�@	��	�	��	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@�@	�	�	�@	�@	�@	�@	�@A@	�@	�@	�	@	�
@	�@E@	�
	�	�	�	�@	�@	�@	�@	�@@&@	�@	�@	�@	�@	�@�@	�	�!	�@	�@	�@	�@	� @A@	�"@	�#@	�$@	�%@	�&@E@	�(	��	�)	�`	�*	�E	�+	�8	�,	�2	�-@	�.@	�/@	�0@	�1@Ae@	�3@	�4@	�5@	�6@	�7@E@	�9	�?	�:@	�;@	�<@	�=@	�>@A@	�@@	�A@	�B@	�C@	�D@HG@	�F	�S	�G	�M	�H@	�I@	�J@	�K@	�L@A@	�N@	�O@	�P@	�Q@	�R@E@	�T	�Z	�U@	�V@	�W@	�X@	�Y@A@	�[@	�\@	�]@	�^@	�_@E@	�a	�|	�b	�o	�c	�i	�d@	�e@	�f@	�g@	�h@Ae@	�j@	�k@	�l@	�m@	�n@H�@	�p	�v	�q@	�r@	�s@	�t@	�u@A@	�w@	�x@	�y@	�z@	�{@A@	�}	��	�~	��	�@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��	��	��	��	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azt�az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azmaz	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azaz	��az	��az	��az	��	��az	��az	��az	��az	��azaz	��az	��	��azaz	��	��azaz	��v�az	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@H�@	��	�	��	��	��	��	��	��	��@	��@	��@	��@	��@F�@	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@	��@A@	��	��	��	��	��@	��@	��@	��@	��@��@	��@	��@	��@	��@	��@Ba@	��@	��@	�@	�@	�@	�@A@	�	�	�	�	�	�
	�@	�	@@&@	�@	�@	�
@	�@	�@H @	�	�	�@	�@	�@	�@	�@A@	�@	�@	�@	�@	�@E@	�	�)	�	�#	� @	�!@	�"@A@	�$@	�%@	�&@	�'@	�(@E@	�*	�0	�+@	�,@	�-@	�.@	�/@A@	�1@	�2@	�3@	�4@	�5@�@	�7	� 	�8	��	�9	�p	�:	�U	�;	�H	�<	�B	�=@	�>@	�?@	�@@	�A@E�@	�C@	�D@	�E@	�F@	�G@H @	�I	�O	�J@	�K@	�L@	�M@	�N@A@	�P@	�Q@	�R@	�S@	�T@H @	�V	�c	�W	�]	�X@	�Y@	�Z@	�[@	�\@�g@	�^@	�_@	�`@	�a@	�b@A@	�d	�j	�e@	�f@	�g@	�h@	�i@A@	�k@	�l@	�m@	�n@	�o@�@	�q	��	�r	�	�s	�y	�t@	�u@	�v@	�w@	�x@@&@	�z@	�{@	�|@	�}@	�~@�@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@A@	��	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@H:@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@Ae@	��	��	��	��	��	��	��	��	��@	��@	��@	��@	��@H @	��@	��@	��@	��@	��@A@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@H:@	��	��	��	��	��@	��@	��@	��@	��@	��Ae	��Ae	��Ae	��Ae	��Ae	��Ae	��Ae	��Ae	��Ae	��Ae	��Ae	��AeAe	��	��Ae	��AeAe	��
�Ae	��@	��@	��@	��@	��@E@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@�@	��	�	��	��	��@	��@	��@	��@	��@	��@E@	��	��	��@	��@	��@	��@	��@A@	�@	�@	�@	�@	�@@&@	�	�	�	�
	�@	�	@	�
@	�@	�@E�@	�@	�@	�@	�@	�@E@	�	�	�@	�@	�@	�@	�@A@	�@	�@	�@	�@	�@H @	�!	��	�"	�S	�#	�>	�$	�1	�%	�+	�&@	�'@	�(@	�)@	�*@E@	�,@	�-@	�.@	�/@	�0@E@	�2	�8	�3@	�4@	�5@	�6@	�7@A@	�9@	�:@	�;@	�<@	�=@E@	�?	�F@	�@	�A@	�B@	�C@	�D@	�E@E@	�G	�M	�H@	�I@	�J@	�K@	�L@A@	�N@	�O@	�P@	�Q@	�R@�@	�T	��	�U	��	�V	�7	�W	��	�X	��	�Yaz	�Zaz	�[az	�\az	�]	�|	�^	�m	�_	�h	�`	�daz	�a	�baz	�cazv�az	�eaz	�faz	�gazv�az	�iaz	�jaz	�kaz	�lazv�az	�n	�s	�oaz	�paz	�qaz	�razv�az	�t	�x	�uaz	�vaz	�wazv�az	�yaz	�zaz	�{azv�az	�}	��	�~	��	�	��	��az	��az	��azt�az	��az	��az	��azu�az	��	��	��az	��az	��azu�az	��az	��az	��azu�az	��	��	��az	��az	��az	��azmazaz	��	��az	��az	��azmaz	��	��	��	��	��	��	��	��az	��	��az	��azv�az	��az	��az	��azv�az	��	��	��az	��az	��azv�az	��az	��az	��azv�az	��	��	��	��	��az	��azv�az	��az	��az	��azv�az	��	��	��az	��az	��azv�az	��az	��az	��azv�az	��	��	��	��	��	��	��	��	��az	��azt�az	��az	��azt�az	��az	��az	��azu�az	��	��	��az	��az	��azu�az	��az	��az	��azu�az	��	��	��	��	��az	��az	��azmaz	��az	��az	��azv�azaz	��	��az	��az	��azmaz	��az	��	�	��	��	��	��	��	��az	��	��az	��azv�az	��az	��az	��azv�az	��	��	��az	��az	��azv�az	��az	��az	��azv�az	��	�	�	�	�az	�az	�azv�az	�az	�az	�azv�az	�		�
	�
az	�az	�azv�az	�az	�az	�azv�az	�	�(	�	�	�	�	�	�	�az	�azt�az	�az	�azt�az	�az	�az	�azu�az	� 	�$	�!az	�"az	�#azu�az	�%az	�&az	�'azu�az	�)	�2	�*	�.	�+az	�,az	�-azmaz	�/az	�0az	�1azv�azaz	�3	�4az	�5az	�6azmazaz	�8	�9	�H	�:	��	�;az	�<az	�=	�	�>	�]	�?	�N	�@	�I	�A	�Eaz	�B	�Caz	�Dazv�az	�Faz	�Gaz	�Hazv�az	�Jaz	�Kaz	�Laz	�Mazv�az	�O	�T	�Paz	�Qaz	�Raz	�Sazv�az	�U	�Y	�Vaz	�Waz	�Xazv�az	�Zaz	�[az	�\azv�az	�^	�t	�_	�k	�`	�g	�a	�d	�baz	�cazt�az	�eaz	�fazt�az	�haz	�iaz	�jazu�az	�l	�p	�maz	�naz	�oazu�az	�qaz	�raz	�sazu�az	�u	�z	�vaz	�waz	�xaz	�yazmazaz	�{	�|az	�}az	�~azmaz	��	��	��	��	��	��	��	��az	��	��az	��azv�az	��az	��az	��azv�az	��az	��az	��az	��azv�az	��	��	��az	��az	��az	��azv�az	��	��	��az	��az	��azv�az	��az	��az	��azv�az	��	��	��	��	��	��	��	��	��az	��azt�az	��az	��azt�az	��az	��az	��azu�az	��	��	��az	��az	��azu�az	��az	��az	��azu�az	��	��	��az	��az	��az	��azmazaz	��	��az	��az	��azmaz	��az	��az	��	�	��	��	��	��	��	��	��	��az	��	��az	��azv�az	��az	��az	��azv�az	��az	��az	��az	��azv�az	��	��	��az	��az	��az	��azv�az	��	��	��az	��az	��azv�az	��az	��az	��azv�az	��	��	��	��	��	��	��	��	��az	��azt�az	��az	��azt�az	��az	��az	��azu�az	��	��	��az	��az	��azu�az	��az	��az	��azu�az	��	�	��az	��az	��az	�azmazaz	�	�az	�az	�azmaz	�	�&	�	�	�		�	�
	�az	�	�az	�
azv�az	�az	�az	�azv�az	�az	�az	�az	�azv�az	�	�	�az	�az	�az	�azv�az	�	�"	�az	� az	�!azv�az	�#az	�$az	�%azv�az	�'	�=	�(	�4	�)	�0	�*	�-	�+az	�,azt�az	�.az	�/azt�az	�1az	�2az	�3azu�az	�5	�9	�6az	�7az	�8azu�az	�:az	�;az	�<azu�az	�>	�C	�?az	�@az	�Aaz	�Bazmazaz	�D	�Eaz	�Faz	�Gazmaz	�Iaz	�Jaz	�Kaz	�Laz	�M	�}	�N	�n	�O	�i	�P	�eaz	�Q	�Raz	�Saz	�Taz	�Uaz	�Vaz	�Waz	�Xaz	�Yaz	�Zaz	�[az	�\az	�]az	�^az	�_az	�`az	�aaz	�b	�d	�cv�azv�v�az	�faz	�gaz	�hazv�az	�jaz	�kaz	�laz	�mazv�az	�o	�t	�paz	�qaz	�raz	�sazv�az	�u	�y	�vaz	�waz	�xazv�az	�zaz	�{az	�|azv�az	�~	��	�	��	��	��	��az	��az	��azt�az	��az	��az	��azu�az	��	��	��az	��az	��azu�az	��az	��az	��azu�az	��	��	��az	��az	��az	��azmazaz	��	��az	��az	��azmaz	��	��az	��	��	��	��az	��az	��az	��az	��	��	��	��	��	��	��	��az	��	��az	��azv�az	��az	��az	��azv�az	��az	��az	��az	��azv�az	��	��	��az	��az	��az	��azv�az	��	��	��az	��az	��azv�az	��az	��az	��azv�az	��	��	��	��	��	��	��az	��az	��azt�az	��az	��az	��azu�az	��	��	��az	��az	��azu�az	��az	��az	��azu�az	��	��	��az	��az	��az	��azmazaz	��	��az	��az	��azmazaz	��	��az	��az	��azaz	��	��	��	��	��	��az	��az	��az	��azt�az	��az	��az	��az	��azu�az	��az	��az	��az	��az	��azmazaz	��az	��	��	�	��	��	��	�	��	�A	�	�	�	�	�	�	�	�az	�	�az	�azv�az	�az	�	az	�
azv�az	�az	�
az	�az	�azv�az	�	�	�az	�az	�az	�azv�az	�	�	�az	�az	�azv�az	�az	�az	�azv�az	� 	�6	�!	�-	�"	�)	�#	�&	�$az	�%azt�az	�'az	�(azt�az	�*az	�+az	�,azu�az	�.	�2	�/az	�0az	�1azu�az	�3az	�4az	�5azu�az	�7	�<	�8az	�9az	�:az	�;azmazaz	�=	�>az	�?az	�@azmaz	�B	�]	�C	�N	�D	�Iaz	�E	�Faz	�Gaz	�Hazv�az	�Jaz	�Kaz	�Laz	�Mazv�az	�O	�T	�Paz	�Qaz	�Raz	�Sazv�az	�U	�Y	�Vaz	�Waz	�Xazv�az	�Zaz	�[az	�\azv�az	�^	�t	�_	�k	�`	�g	�a	�d	�baz	�cazt�az	�eaz	�fazt�az	�haz	�iaz	�jazu�az	�l	�p	�maz	�naz	�oazu�az	�qaz	�raz	�sazu�az	�u	�z	�vaz	�waz	�xaz	�yazmazaz	�{	�|az	�}az	�~azmaz	��az	��	��	��	��	��	��	��	��az	��	��az	��azv�az	��az	��az	��azv�az	��az	��az	��az	��azv�az	��	��	��az	��az	��az	��azv�az	��	��	��az	��az	��azv�az	��az	��az	��azv�az	��	��	��	��	��	��	��	��	��az	��azt�az	��az	��azt�az	��az	��az	��azu�az	��	��	��az	��az	��azu�az	��az	��az	��azu�az	��	��	��az	��az	��az	��azmazaz	��	��az	��az	��azmaz	��	��az	��az	��	��	��	��	��	��az	��	��	��az	��azt�az	��az	��azt�az	��az	��az	��az	��azu�az	��az	��az	��az	��az	��azmaz	��	��az	��	��az	��az	��azaz	��	��az	��azt�az	��	��az	��	��az	��az	��az	��az	��az	��az	��	��az	��	��az	��az	��az	��azv�azaz	��	��az	��az	��az	��azv�az	��az	��az	��az	��	�	��az	��az	��az	�	�az	�	�az	�az	�az	�az	�azazt�	�	�	�	az	�
az	�az	�az	�
azazt�	�az	�az	�az	�az	�azazt�	�az	�azt�az	�	��	�	��	�	�U	�	�6	�	�'	�	�"az	�	�az	� az	�!azv�az	�#az	�$az	�%az	�&azv�az	�(	�-	�)az	�*az	�+az	�,azv�az	�.	�2	�/az	�0az	�1azv�az	�3az	�4az	�5azv�az	�7	�J	�8	�A	�9	�=	�:az	�;az	�<azt�az	�>az	�?az	�@azu�az	�B	�F	�Caz	�Daz	�Eazu�az	�Gaz	�Haz	�Iazu�az	�K	�P	�Laz	�Maz	�Naz	�Oazmazaz	�Q	�Raz	�Saz	�Tazmaz	�V	�u	�W	�f	�X	�a	�Y	�]az	�Z	�[az	�\azv�az	�^az	�_az	�`azv�az	�baz	�caz	�daz	�eazv�az	�g	�l	�haz	�iaz	�jaz	�kazv�az	�m	�q	�naz	�oaz	�pazv�az	�raz	�saz	�tazv�az	�v	��	�w	��	�x	�|	�yaz	�zaz	�{azt�az	�}az	�~az	�azu�az	��	��	��az	��az	��azu�az	��az	��az	��azu�az	��	��	��az	��az	��az	��azmazaz	��	��az	��az	��azmaz	��	��	��	��	��	��az	��	��az	��az	��az	��azv�az	��	��	��az	��az	��az	��azv�az	��az	��az	��az	��azv�az	��	��	��	��	��az	��az	��az	��azt�az	��az	��az	��az	��azu�az	��az	��az	��az	��az	��azmazaz	��	��az	��az	��azaz	��	��az	��azt�az	��	�	��az	��	��	��	��	��	��	��	��az	��	��az	��azv�az	��az	��az	��azv�az	��az	��az	��az	��azv�az	��	��	��az	��az	��az	��azv�az	��	��	��az	��az	��azv�az	��az	��az	��azv�az	��	��	��	��	��	��	��az	��az	��azt�az	��az	��az	��azu�az	��	��	��az	��az	��azu�az	��az	��az	��azu�az	��	��	��az	��az	��az	��azmazaz	��	�	�	�az	�azmazaz	�az	�az	�	�	�az	�az	�		�
az	�azb�az	�
az	�	�	�az	�azb�az	�az	�azb�az	�	�T	�	�5	�	�&	�	�!	�	�az	�	�az	�azv�az	�az	�az	� azv�az	�"az	�#az	�$az	�%azv�az	�'	�,	�(az	�)az	�*az	�+azv�az	�-	�1	�.az	�/az	�0azv�az	�2az	�3az	�4azv�az	�6	�I	�7	�@	�8	�<	�9az	�:az	�;azt�az	�=az	�>az	�?azu�az	�A	�E	�Baz	�Caz	�Dazu�az	�Faz	�Gaz	�Hazu�az	�J	�O	�Kaz	�Laz	�Maz	�Nazmazaz	�P	�Qaz	�Raz	�Sazmaz	�U	�p	�V	�a	�W	�\az	�X	�Yaz	�Zaz	�[azv�az	�]az	�^az	�_az	�`azv�az	�b	�g	�caz	�daz	�eaz	�fazv�az	�h	�l	�iaz	�jaz	�kazv�az	�maz	�naz	�oazv�az	�q	��	�r	�~	�s	�z	�t	�w	�uaz	�vazt�az	�xaz	�yazt�az	�{az	�|az	�}azu�az	�	��	��az	��az	��azu�az	��az	��az	��azu�az	��	��	��az	��az	��az	��azmazaz	��	��az	��az	��azmaz	��	��	��	��	��@	��@	��@	��@	��@E@	��@	��@	��@	��@	��@H @	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@E@	��	��	��	��@	��	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@E@	��	��	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@E@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@Ae@	��	��	��	��	��	��	��@	��@	��@	��@	��@E@	��@	��@	��@	��@	��@E@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@E@@	��	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	�@	�@H�@	�	��	�	��	�	�|	�	�Q	�	�<	�	�5	�		�/	�
@	�@	�@	�
����	���	�	���	���	�����	�	���	���	���	�����	���	���	�	���	�����	���	�	���	� ����	�!��	�"��	�#	�$��	�%��	�&����	�'	�(��	�)��	�*��	�+��	�,��	�-��	�.����@	�0@	�1@	�2@	�3@	�4@H�@	�6@	�7@	�8@	�9@	�:@	�;@A@	�=	�D	�>@	�?@	�@@	�A@	�B@	�C@HG@	�E	�K	�F@	�G@	�H@	�I@	�J@A@	�L@	�M@	�N@	�O@	�P@�~@	�R	�a	�S	�Z@	�T	�U@	�V@	�W@	�X@	�Y@@&@@	�[	�\@	�]@	�^@	�_@	�`@A@	�b	�o	�c	�i	�d@	�e@	�f@	�g@	�h@H:@	�j@	�k@	�l@	�m@	�n@�@	�p	�v	�q@	�r@	�s@	�t@	�u@A@	�w@	�x@	�y@	�z@	�{@A@	�}	��	�~	��	�	��	��	��	��@	��@	��@	��@��@	��@	��@	��@	��@	��@E@	��	��	��@	��@	��@	��@	��@��@	��@	��@	��@	��@	��@H�@	��	��	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@H�@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@H @	��	��	��	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@H�@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@H�@	��	��	��	��	��@	��@	��@	��@	��@@&@	��@	��@	��@	��@	��@H�@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@�@	��	�J	��	�	��	�	��	��	��	��	��@	��@	��@	��@	��@@&@	��@	��@	��@	��@	��@az@	��	�	��@	��@	��@	�@	�@E@	�@	�@	�@	�@	�@A@	�		�	�
	�	�@	�@	�
@	�@	�@�@	�@	�@	�@	�@	�@Ae@@	�	�@	�@	�@	�@	�@�@	�	�5	�	�(	� 	�&	�!@	�"@	�#@	�$@	�%@��@	�'@A@	�)	�/	�*@	�+@	�,@	�-@	�.@�@	�0@	�1@	�2@	�3@	�4@�@	�6	�=	�7@	�8@	�9@	�:@	�;@	�<@�@	�>	�D	�?@	�@@	�A@	�B@	�C@Ae@	�E@	�F@	�G@	�H@	�I@�@	�K	�p	�L	�a	�M	�T@	�N	�O@	�P@	�Q@	�R@	�S@F�@	�U	�[	�V@	�W@	�X@	�Y@	�Z@�@	�\@	�]@	�^@	�_@	�`@E@	�b	�i	�c@	�d@	�e@	�f@	�g@	�h@��@@	�j	�k@	�l@	�m@	�n@	�o@E@	�q	��	�r	�	�s	�y	�t@	�u@	�v@	�w@	�x@E@	�z@	�{@	�|@	�}@	�~@H @	��@	��@	��@	��@	��@	��@�@	��	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@	��@	��az	��az	��az	��az	��az	��az	��az	��m	��az	��az	��az	��az	��az	��az	��	��az	��	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azaz	��	��az	��azwazt�az	��@	��@	��@	��@	��@�@	��	��	��	�3	��	��	��	��	��	��	��	��	��@	��@	��@	��@	��@F�@	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@Ae@	��	��	��	��	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@E@	��	��	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@H @	��	�	��	�	��	�	�@	�@	�@	�@	�@@&@	�@	�@	�@	�	@	�
@@&@	�	�	�
@	�@	�@	�@	�@A@	�@	�@	�@	�@	�@H @	�	�&	�	� 	�@	�@	�@	�@	�@A@	�!@	�"@	�#@	�$@	�%@H @	�'	�-	�(@	�)@	�*@	�+@	�,@�@	�.@	�/@	�0@	�1@	�2@H�@	�4	�x	�5	�]	�6	�P	�7	�J	�8@	�9@	�:@	�;@	�<@	�=@	�>F�	�?F�	�@F�	�AF�	�BF�	�CF�	�DF�F�	�E	�FF�	�GF�	�H	�IGtF��G�	�K@	�L@	�M@	�N@	�O@E@	�Q	�W	�R@	�S@	�T@	�U@	�V@�'@	�X@	�Y@	�Z@	�[@	�\@A@	�^	�k	�_	�e	�`@	�a@	�b@	�c@	�d@�'@	�f@	�g@	�h@	�i@	�j@H @	�l	�r	�m@	�n@	�o@	�p@	�q@�'@	�s@	�t@	�u@	�v@	�w@H @	�y	��	�z	��	�{@	�|@	�}@	�~@	�@	��@��@	��@	��@	��@	��@	��@	��@�@@	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@A@	��	��	��	��	��	��	��@	��	��	��@	��@	��@	��@	��@�S@	��@	��@	��@	��@	��@H�@	��	��	��	��	��@	��@	��@	��@	��@F�@	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@	��@A@	��	��	��	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@H�@	��	��	��@	��@	��@	��@	��@��@	��@	��@	��@	��@	��@E@	��	��	��	��	��@	��@	��@	��@	��@H:@	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@H:@	��@	��@	��@	��@	��@E@	��	�+	��	�	��	�	��	��	��@	��@	��@	��@	��@F�@	��@	��@	�@	�@	�@E@	�	�
	�@	�@	�@	�@	�	@A@	�@	�@	�
@	�@	�@H @	�	�	�	�	�@	�@	�@	�@	�@��@	�@	�@	�@	�@	�@@&@	�	�%	� @	�!@	�"@	�#@	�$@A@	�&@	�'@	�(@	�)@	�*@H @	�,	�G	�-	�:	�.	�4	�/@	�0@	�1@	�2@	�3@@&@	�5@	�6@	�7@	�8@	�9@H�@	�;	�A	�<@	�=@	�>@	�?@	�@@A@	�B@	�C@	�D@	�E@	�F@�@	�H	�U	�I	�O	�J@	�K@	�L@	�M@	�N@A@	�P@	�Q@	�R@	�S@	�T@H�@	�V	�\	�W@	�X@	�Y@	�Z@	�[@�@	�]@	�^@	�_@	�`@	�a@E@	�c	��	�d	�X	�e	�	�f	�	�g	�<	�h	��	�i	��	�j	��	�k	�v	�l	�p	�m@	�n@	�o@�@	�q@	�r@	�s@	�t@	�u@az@	�w	�}	�x@	�y@	�z@	�{@	�|@F�@	�~@	�@	��@	��@	��@H�@	��	��	��	��	��@	��@	��@	��@	��@H�@	��@	��@	��@	��@	��@H�@	��	��	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@H�@	��	��	��	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@H�@@	��	��@	��@	��@	��@	��@H�@	��	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@�@	��	�	��	��	��	��	��@	��@	��@	��@	��@	��@Ae@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@	��@H:	��H:	��H:	��H:	��H:	��H:	��H:	��H:	��H:	��H:	��H:	��H:	��H:	��H:	��H:	��H:�F	��	�	��	��	��@	��@	��@	��@	��@Ae@	��@	�@	�@	�@	�@H�@	�	�	�@	�@	�@	�	@	�
@A@	�@	�
@	�@	�@	�@H�@	�	�'	�	� 	�	�	�@	�@	�@	�@	�@Ae@	�@	�@	�@	�@	�@H�@	�!@	�"@	�#@	�$@	�%@	�&@H @	�(	�/@	�)	�*@	�+@	�,@	�-@	�.@E@	�0	�6	�1@	�2@	�3@	�4@	�5@��@	�7@	�8@	�9@	�:@	�;@�@	�=	��	�>	�u	�?	�Z	�@	�M	�A	�G	�B@	�C@	�D@	�E@	�F@�S@	�H@	�I@	�J@	�K@	�L@�@	�N	�T	�O@	�P@	�Q@	�R@	�S@�@	�U@	�V@	�W@	�X@	�Y@E@	�[	�h	�\	�b	�]@	�^@	�_@	�`@	�a@H:@	�c@	�d@	�e@	�f@	�g@Ae@	�i	�o	�j@	�k@	�l@	�m@	�n@�@	�p@	�q@	�r@	�s@	�t@�@	�v	��	�w	�~	�x@	�y@	�z@	�{@	�|@	�}@Ae@	�	��	��@	��@	��@	��@	��@H:@	��@	��@	��@	��@	��@E@	��	��	��	��	��@	��@	��@	��@	��@E�@	��@	��@	��@	��@	��@�~@@	��	��@	��@	��@	��@	��@E@	��	��	��	��	��	��	��	��	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@	��@	��@&	��@&	��@&	��@&	��@&	��@&	��@&	��@&	��@&	��@&	��@&	��@&	��@&	��@&@&	���*@&	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@A@	��	��	��	��	��@	��@	��@	��@	��@��@	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@��@	��@	��@	��@	��@	��@H�@	��	�	��	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@H�@	��	��	��@	��@	��@	��@	��@�@	��@	�@	�@	�@	�@H�@	�	�	�	�	�@	�@	�	@	�
@	�@�@	�
@	�@	�@	�@	�@A@	�	�	�@	�@	�@	�@	�@Ae@	�@	�@	�@	�@	�@��@	� 	�G	�!	��	�"	�s	�#	�>	�$	�1	�%	�+	�&@	�'@	�(@	�)@	�*@��@	�,@	�-@	�.@	�/@	�0@�@	�2	�8	�3@	�4@	�5@	�6@	�7@H:@	�9@	�:@	�;@	�<@	�=@E@	�?	�l	�@	�f	�A@	�B@	�C@	�D@	�E@	�F@	�GEz	�HEz	�IEzEz	�J	�KEz	�LEz	�MEz	�NEz	�OEz	�PEz	�QEz	�REz	�SEz	�TEz	�UEz	�VEz	�WEz	�XEz	�YEz	�ZEz	�[Ez	�\Ez	�]Ez	�^Ez	�_Ez	�`Ez	�aEz	�bEz	�cEz	�dEz	�eEz��Ez	�g@	�h@	�i@	�j@	�k@E@@	�m	�n@	�o@	�p@	�q@	�r@�'@	�t	��	�u	��	�v	�|	�w@	�x@	�y@	�z@	�{@@&@	�}@	�~@	�@	��@	��@�@	��	��	��@	��@	��@	��@	��@�'@	��@	��@	��@	��@	��@E@	��	��	��	��	��@	��@	��@	��@	��@Ez@	��@	��@	��@	��@	��@E@	��	��	��@	��@	��@	��@	��@H:@	��@	��@	��@	��@	��@E@	��	��	��	��	��	��	��	��	��@	��@	��@	��@	��@�~@	��@	��@	��@	��@	��@H @	��	��	��@	��@	��@	��@	��@Ez@	��@	��@	��@	��@	��@�@	��	��	��	��	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@H:@	��	��	��@	��@	��@	��@	��@	��@	��az	��az	��azaz	��	��	��	��	��	��	��azv�wv�	��mv�t�	��az	��azmv�	��@	��@	��@	��@	��@�'@	��	�,	��	�%	��	�	��@	��@	��@	��@	��@	��@	��M�	��M�	��M�	��M�	��M�	��M�	�M�	�M�	�M�	�M�	�M�	�M�	�M�	�M�	�M�	�	M�	�
M�	�M�	�M�	�
M�	�M�	�M�	�M�	�M�	�M�	�M�	�M�	�M�	�	�	�	�	�	�#�M�#���	�M���M�	�M�	�M�#�M�	� @	�!@	�"@	�#@	�$@H�@@	�&	�'@	�(@	�)@	�*@	�+@H�@	�-	�:	�.	�4	�/@	�0@	�1@	�2@	�3@Ae@	�5@	�6@	�7@	�8@	�9@Ae@	�;	�A	�<@	�=@	�>@	�?@	�@@��@	�B@	�C@	�D@	�E@	�F@A@	�H	��	�I	��	�J	�e	�K	�X	�L	�R	�M@	�N@	�O@	�P@	�Q@�@	�S@	�T@	�U@	�V@	�W@�'@	�Y	�_	�Z@	�[@	�\@	�]@	�^@M@	�`@	�a@	�b@	�c@	�d@E@	�f	�s	�g	�m	�h@	�i@	�j@	�k@	�l@A@	�n@	�o@	�p@	�q@	�r@�'@	�t	�z	�u@	�v@	�w@	�x@	�y@Ae@	�{@	�|@	�}@	�~@	�@E@	��	��	��	��@	��	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@F�@	��@	��@	��@	��@	��@E@	��	��	��	��	��@	��@	��@	��@	��@�'@	��@	��@	��@	��@	��@�'@	��	��	��@	��@	��@	��@	��@H:@	��@	��@	��@	��@	��@E@	��	��	��	��	��	��	��	��	��@	��@	��@	��@	��@F�@	��@	��@	��@	��@	��@H:@	��	��	��@	��@	��@	��@	��@�6@	��@	��@	��@	��@	��@E@	��	��	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@F�@	��@	��@	��@	��@	��@@&@	��	��	��	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@�~@@	��	��@	��@	��@	��@	��@�'@	�	�@	�	�@	�@	�@	�@	�@E@	�	�	�	@	�
@	�@	�@	�
@�@	�@	�@	�@	�@	�@�@	�	��	�	��	�	�t	�	�C	�	�4	�	�'	�	�!	�@	�@	�@	�@	� @E�@	�"@	�#@	�$@	�%@	�&@E@	�(	�.	�)@	�*@	�+@	�,@	�-@Ae@	�/@	�0@	�1@	�2@	�3@Ae@	�5	�<@	�6	�7@	�8@	�9@	�:@	�;@E@@	�=	�>@	�?@	�@@	�A@	�B@H:@	�D	�_	�E	�R	�F	�L	�G@	�H@	�I@	�J@	�K@Ae@	�M@	�N@	�O@	�P@	�Q@H�@	�S	�Y	�T@	�U@	�V@	�W@	�X@A@	�Z@	�[@	�\@	�]@	�^@H�@	�`	�g@	�a	�b@	�c@	�d@	�e@	�f@H:@	�h	�n	�i@	�j@	�k@	�l@	�m@A@	�o@	�p@	�q@	�r@	�s@A@	�u	��	�v	��	�w	��	�x	�~	�y@	�z@	�{@	�|@	�}@��@	�@	��@	��@	��@	��@	��@	��F�	��F�	��F�	��F�	��F�	��F�	��F�	��F�	��F�	��F�	��F�	��F�	��	��	��	��	��F�F���	��	���\Gt��d	��	��F�	���8I�	��	��F���F�	��	��	��@	��@	��@	��@	��@��@	��@	��@	��@	��@	��@�@@	��@	��	��@	��@	��@	��@	��@E@	��	��	��	��@	��	��@	��@	��@	��@	��@E@	��	��	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@E@	��	��@	��	��@	��@	��@	��@	��@Ae@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@H�@	��	�G	��	�	��	��	��	��	��	��	��@	��@	��@	��@	��@
�@	��@	��@	��@	��@	��@A@	��	��	��@	��@	��@	��@	��@Ez@	��@	��@	��@	��@	��@HG@	��	�		��	�	��@	��@	�@	�@	�@E@	�@	�@	�@	�@	�@H:@	�
@	�@	�@	�
@	�@	�@Ae@	�	�,	�	�	�	�	�@	�@	�@	�@	�@E@	�@	�@	�@	�@	�@F�@	� 	�&	�!@	�"@	�#@	�$@	�%@��@	�'@	�(@	�)@	�*@	�+@A@	�-	�:	�.	�4	�/@	�0@	�1@	�2@	�3@��@	�5@	�6@	�7@	�8@	�9@Ae@	�;	�A	�<@	�=@	�>@	�?@	�@@�@	�B@	�C@	�D@	�E@	�F@�~@	�H	�y	�I	�^	�J	�Q@	�K	�L@	�M@	�N@	�O@	�P@E@	�R	�X	�S@	�T@	�U@	�V@	�W@Ae@	�Y@	�Z@	�[@	�\@	�]@E@	�_	�l	�`	�f	�a@	�b@	�c@	�d@	�e@F�@	�g@	�h@	�i@	�j@	�k@E@	�m	�s	�n@	�o@	�p@	�q@	�r@Ba@	�t@	�u@	�v@	�w@	�x@E@	�z	��	�{	��	�|	��	�}@	�~@	�@	��@Ae@	��@	��@	��@	��@	��@�@@	��	��@	��@	��@	��@	��@H�@	��	��	��	��	��@	��@	��@	��@	��@F�@	��@	��@	��@	��@	��@H�@@	��	��@	��@	��@	��@	��@Ez@	��	��	��	�#	��	��	��	��	��	��	��	��	��@	��@	��@	��@	��@@&@	��@	��@	��@	��@	��@�@@	��	��@	��@	��@	��@	��@	��@	��Ae	��Ae	��Ae	��Ae	��Ae	��AeAe	��	��Ae	��Ae	��Ae	��Ae	��	��	��	��	��	��Ae	���xw�	��!9w��	��	��~	��e1B�B��o	��Ae	��Ae	��	��Ae�}N��o	��	��	��	��	��@	��@	��@	��@	��@H:@	��@	��@	��@	��@	��@E@	��	��	��@	��@	��@	��@	��@E@	��@	��@	��@	��@	��@A@	��	�	��	��@	��	��@	��@	��@	��@	��@H:@	��	�	��@	��@	��@	�@	�@Ae@	�@	�@	�@	�@	�@@Ae	�		�	�
	�	�@	�@	�
@	�@	�@@&@	�@	�@	�@	�@	�@A@	�	�	�@	�@	�@	�@	�@�@	�@	�@	� @	�!@	�"@H�@	�$	�[	�%	�@	�&	�3	�'	�-	�(@	�)@	�*@	�+@	�,@E@	�.@	�/@	�0@	�1@	�2@H�@	�4	�:	�5@	�6@	�7@	�8@	�9@�@	�;@	�<@	�=@	�>@	�?@H�@	�A	�N	�B	�H	�C@	�D@	�E@	�F@	�G@E�@	�I@	�J@	�K@	�L@	�M@A@	�O	�U	�P@	�Q@	�R@	�S@	�T@Ae@	�V@	�W@	�X@	�Y@	�Z@E@	�\	�v	�]	�i	�^	�d	�_@	�`@	�a@	�b@	�c@Ae@	�e@	�f@	�g@	�h@F�@	�j	�p	�k@	�l@	�m@	�n@	�o@�6@	�q@	�r@	�s@	�t@	�u@E@	�w	��	�x	�~	�y@	�z@	�{@	�|@	�}@A@	�@	��@	��@	��@	��@A@	��	��	��@	��@	��@	��@	��@E@	��@	��@	��@	��@	��@A@	��	��	��	��	��	��	��	��	��	��	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@E@	��	��	��@	��@	��@	��@	��@H:@	��@	��@	��@	��@	��@Ae@	��	��	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@E@	��	��	��@	��@	��@	��@	��@H:@	��@	��@	��@	��@	��@E@	��	��	��	��@	��	��@	��@	��@	��@	��@H:@	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@H�@	��	��	��	��	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@�@@	��	��@	��@	��@	��@	��@H:@	��	�'	��	�	��	��@	��	��@	��@	��@	��@	��@H:@	�	�	�@	�@	�@	�@	�@E@	�@	�@	�	@	�
@	�@HG@	�
	�	�	�	�@	�@	�@	�@	�@H @	�@	�@	�@	�@	�@�@	�	�!	�@	�@	�@	�@	� @H:@	�"@	�#@	�$@	�%@	�&@Ae@	�(	�C	�)	�6	�*	�0	�+@	�,@	�-@	�.@	�/@F�@	�1@	�2@	�3@	�4@	�5@E@	�7	�=	�8@	�9@	�:@	�;@	�<@�@	�>@	�?@	�@@	�A@	�B@E@	�D	�Q	�E	�K	�F@	�G@	�H@	�I@	�J@�@	�L@	�M@	�N@	�O@	�P@A@@	�R	�S@	�T@	�U@	�V@	�W@H:@	�Y	��	�Z	��	�[	�	�\	��	�]	��	�^	�s	�_	�l	�`	�f	�a@	�b@	�c@	�d@	�e@Ez@	�g@	�h@	�i@	�j@	�k@�@@	�m	�n@	�o@	�p@	�q@	�r@Ae@	�t	��	�u	�{	�v@	�w@	�x@	�y@	�z@t�@	�|@	�}@	�~@	�@	��@�@@	��	��@	��@	��@	��@	��@�@	��	��	��	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@E@	��	��	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@E@	��	��@	��	��@	��@	��@	��@	��@H:@@	��	��@	��@	��@	��@	��@A@	��	��	��	��	��	��	��	��	��@	��@	��@	��@	��@��@	��@	��@	��@	��@	��@A@@	��	��@	��@	��@	��@	��@�~@	��	��@	��	��@	��@	��@	��@	��@E@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@E@	��	��	��	��	��	��	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@��@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@|�@	��	�		��	�	��@	��@	�@	�@	�@H @	�@	�@	�@	�@	�@A@@	�
	�@	�@	�
@	�@	�@H:@	�	��	�	�I	�	�.	�	�!	�	�	�@	�@	�@	�@	�@�@	�@	�@	�@	�@	� @E@	�"	�(	�#@	�$@	�%@	�&@	�'@A@	�)@	�*@	�+@	�,@	�-@E@	�/	�<	�0	�6	�1@	�2@	�3@	�4@	�5@H @	�7@	�8@	�9@	�:@	�;@H�@	�=	�C	�>@	�?@	�@@	�A@	�B@A@	�D@	�E@	�F@	�G@	�H@�@	�J	�e	�K	�X	�L	�R	�M@	�N@	�O@	�P@	�Q@�@	�S@	�T@	�U@	�V@	�W@H�@	�Y	�_	�Z@	�[@	�\@	�]@	�^@A@	�`@	�a@	�b@	�c@	�d@�@	�f	�s	�g	�m	�h@	�i@	�j@	�k@	�l@H @	�n@	�o@	�p@	�q@	�r@E@	�t	�z	�u@	�v@	�w@	�x@	�y@|@	�{@	�|@	�}@	�~@	�@E@	��	��	��	��	��	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@��@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@E@	��	��	��	��	��@	��@	��@	��@	��@H @	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@�@	��	��	��	��	��	��	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@H:@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@E@	��	��	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@E@	��@	��@	��@	��@	��@�@	��	��	��	�T	��	�#	��	�	��	�	��	��	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	�@�Y@	�	�	�@	�@	�@	�@	�@E�@	�	@	�
@	�@	�@	�
@E@	�	�@	�	�@	�@	�@	�@	�@E@	�	�	�@	�@	�@	�@	�@E�@	�@	�@	� @	�!@	�"@H @	�$	�9	�%	�2	�&	�,	�'@	�(@	�)@	�*@	�+@�~@	�-@	�.@	�/@	�0@	�1@H�@@	�3	�4@	�5@	�6@	�7@	�8@E@	�:	�G	�;	�A	�<@	�=@	�>@	�?@	�@@@&@	�B@	�C@	�D@	�E@	�F@F�@	�H	�N	�I@	�J@	�K@	�L@	�M@A@	�O@	�P@	�Q@	�R@	�S@A@	�U	��	�V	�q	�W	�d	�X	�^	�Y@	�Z@	�[@	�\@	�]@Ae@	�_@	�`@	�a@	�b@	�c@�@	�e	�k	�f@	�g@	�h@	�i@	�j@�@	�l@	�m@	�n@	�o@	�p@�~@	�r	�	�s	�y	�t@	�u@	�v@	�w@	�x@A@	�z@	�{@	�|@	�}@	�~@E@	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@�@	��	��	��	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@Ae@	��	��	��@	��@	��@	��@	��@@&@	��@	��@	��@	��@	��@Ae@	��	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@H�@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@H�@	��	�*	��	��	��	��	��	��	��	��	��@	��@	��@	��@	��@�C@	��@	��@	��@	��@	��@A@	��	��	��@	��@az@	��@	��@	��@	��@	��@@&@	��	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@�@@	��	��@	��@	��@	��@	��@�~@	��	�	��	�	��	��	��@	��@	��@	��@	��@HG@	��@	��@	��@	�@	�@�@	�	�		�@	�@	�@	�@	�@��@	�
@	�@	�@	�
@	�@H�@	�	�	�	�	�@	�@	�@	�@	�@��@	�@	�@	�@	�@	�@H�@	�	�$	�@	� @	�!@	�"@	�#@�'@	�%@	�&@	�'@	�(@	�)@Ez@	�+	�b	�,	�G	�-	�:	�.	�4	�/@	�0@	�1@	�2@	�3@E@	�5@	�6@	�7@	�8@	�9@�@	�;	�A	�<@	�=@	�>@	�?@	�@@�@	�B@	�C@	�D@	�E@	�F@az@	�H	�U	�I	�O	�J@	�K@	�L@	�M@	�N@Ez@	�P@	�Q@	�R@	�S@	�T@Ae@	�V	�\	�W@	�X@	�Y@	�Z@	�[@�@	�]@	�^@	�_@	�`@	�a@HG@	�c	�x	�d	�k	�e@	�f@	�g@	�h@	�i@	�j@|�@	�l	�r	�m@	�n@	�o@	�p@	�q@E@	�s@	�t@	�u@	�v@	�w@E@	�y	��	�z@	�{@	�|@	�}@	�~@	�@Ez@	��	��	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@F�@	��	�*	��	�d	��	��	��	��	��	��	��	��	��	��	��@	��@	��@	��@	��@Ez@	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@	��@H:@	��	��	��	��	��@	��@	��@	��@	��@��@	��@	��@	��@	��@	��@@&@	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@@&@	��	��	��	��	��	��	��@	��@	��@	��@	��@�~@	��@	��@	��@	��@	��@E@	��	��	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@H @	��	��	��	��	��@	��@	��@	��@	��@F�@	��@	��@	��@	��@	��@��@	��@	��@	��@	��@	��@	��@�@	��	�+	��	�	��	�	��	��	��@	��@	��@	��@	��@�6@	��@	��@	�@	�@	�@H�@	�	�
	�@	�@	�@	�@	�	@H:@	�@	�@	�
@	�@	�@E�@	�	�	�	�	�@	�@	�@	�@	�@E�@	�@	�@	�@	�@	�@Ez@	�	�%	� @	�!@	�"@	�#@	�$@A@	�&@	�'@	�(@	�)@	�*@�~@	�,	�I	�-	�B	�.	�4	�/@	�0@	�1@	�2@	�3@Ba@	�5@	�6@	�7@	�8@	�9@	�:@	�;`�	�<`�	�=`�	�>`�	�?`�	�@`�	�A`�i�`�@	�C	�D@	�E@	�F@	�G@	�H@H�@	�J	�W	�K	�Q	�L@	�M@	�N@	�O@	�P@E�@	�R@	�S@	�T@	�U@	�V@H�@	�X	�^	�Y@	�Z@	�[@	�\@	�]@lx@	�_@	�`@	�a@	�b@	�c@H�@	�e	��	�f	��	�g	��	�h	�u	�i	�o	�j@	�k@	�l@	�m@	�n@Ae@	�p@	�q@	�r@	�s@	�t@E@	�v	�|	�w@	�x@	�y@	�z@	�{@H:@	�}@	�~@	�@	��@	��@E@@	��	��@	��@	��@	��@	��@	��@E@	��	��	��	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@E@@	��	��@	��@	��@	��@	��@�@	��	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@�g@	��	��	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@F�@	��	��	��	��	��	��	��	��	��@	��@	��@	��@	��@Ez@	��@	��@	��@	��@	��@A@	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@HG@	��	��	��	��	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@��@	��@	��@	��@	��@	��@H:@	��	�	��	�	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	�@	�@E@	�	�		�@	�@	�@	�@	�@��@	�
@	�@	�@	�
@	�@��@	�	�	�	�	�@	�@	�@	�@	�@�@	�@	�@	�@	�@	�@�@	�	�$	�@	� @	�!@	�"@	�#@�@	�%@	�&@	�'@	�(@	�)@E@	�+	�
	�,	��	�-	�d	�.	�I	�/	�<	�0	�6	�1@	�2@	�3@	�4@	�5@��@	�7@	�8@	�9@	�:@	�;@Ba@	�=	�C	�>@	�?@	�@@	�A@	�B@Ae@	�D@	�E@	�F@	�G@	�H@H�@	�J	�W	�K	�Q	�L@	�M@	�N@	�O@	�P@H @	�R@	�S@	�T@	�U@	�V@E@	�X	�^	�Y@	�Z@	�[@	�\@	�]@��@	�_@	�`@	�a@	�b@	�c@�@	�e	��	�f	�s	�g	�m	�h@	�i@	�j@	�k@	�l@H:@	�n@	�o@	�p@	�q@	�r@�@	�t	�z	�u@	�v@	�w@	�x@	�y@H:@	�{@	�|@	�}@	�~@	�@�@	��	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@�@	��	��	��	��	��	��	��	��	��@	��@	��@	��@	��@E@	��@	��@	��@	��@	��@E@	��	��	��@	��@	��@	��@	��@Ez@	��@	��@	��@	��@	��@�@	��	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@F�@	��@	��@	��@	��@	��@�@	��	��	��	��	��	��	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@�@	��	��	��	��	��@	��@	��@	��@	��@Ez@	��@	��@	��@	��@	��@�@	��	�	��@	�@	�@	�@	�@A@	�@	�@	�@	�@	�	@E�@	�	�t	�	�C	�
	�(	�	�	�	�	�@	�@	�@	�@	�@Ae@	�@	�@	�@	�@	�@�@	�	�"	�@	�@	�@	� @	�!@A@	�#@	�$@	�%@	�&@	�'@�@	�)	�6	�*	�0	�+@	�,@	�-@	�.@	�/@Ba@	�1@	�2@	�3@	�4@	�5@�@	�7	�=	�8@	�9@	�:@	�;@	�<@A@	�>@	�?@	�@@	�A@	�B@�b@	�D	�_	�E	�R	�F	�L	�G@	�H@	�I@	�J@	�K@Ba@	�M@	�N@	�O@	�P@	�Q@Ez@	�S	�Y	�T@	�U@	�V@	�W@	�X@E@	�Z@	�[@	�\@	�]@	�^@�@	�`	�g@	�a	�b@	�c@	�d@	�e@	�f@�@	�h	�n	�i@	�j@	�k@	�l@	�m@�@	�o@	�p@	�q@	�r@	�s@�@	�u	��	�v	��	�w	��	�x	�~	�y@	�z@	�{@	�|@	�}@F�@	�@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@�@	��	��	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@�@	��	��	��	��@	��	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@H�@	��	��	��	��	��@	��@	��@	��@	��@��@	��@	��@	��@	��@	��@�@@	��	��@	��@	��@	��@	��@�@	��	�E	��	��	��	�X	��	��	��	�J	��	�	��	��	��	��	��	��	��@	��@	��@	��@H:@	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@E@	��@	��@	��@	��@	��@�@	��	�	��	�	��@	��@	��@	��@	��@F�@	�@	�@	�@	�@	�@�@	�	�
	�@	�	@	�
@	�@	�@|�@	�@	�@	�@	�@	�@�@	�	�/	�	�"	�	�	�@	�@	�@	�@	�@�@	�@	�@	�@	� @	�!@�@	�#	�)	�$@	�%@	�&@	�'@	�(@Ae@	�*@	�+@	�,@	�-@	�.@�@	�0	�=	�1	�7	�2@	�3@	�4@	�5@	�6@��@	�8@	�9@	�:@	�;@	�<@E@	�>	�D	�?@	�@@	�A@	�B@	�C@Ae@	�E@	�F@	�G@	�H@	�I@H�@	�K	��	�L	�g	�M	�Z	�N	�T	�O@	�P@	�Q@	�R@	�S@Ae@	�U@	�V@	�W@	�X@	�Y@H�@	�[	�a	�\@	�]@	�^@	�_@	�`@H:@	�b@	�c@	�d@	�e@	�f@�@	�h	�u	�i	�o	�j@	�k@	�l@	�m@	�n@F�@	�p@	�q@	�r@	�s@	�t@�@	�v	�|	�w@	�x@	�y@	�z@	�{@�'@	�}@	�~@	�@	��@	��@�@	��	��	��	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@�@@	��	��@	��@	��@	��@	��@�@	��	��	��	��	��@	��@	��@	��@	��@E@	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@�@	��	�	��	��	��	��	��	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@�@	��	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@�@@	��	��@	��@	��@	��@	��@�@	��	�	��	��	��	��	��@	��@	��@	��@	��@@&@	��@	��@	��@	��@	��@E@	��	��	��@	��@	��@	��@	��@�@	��@	��@	��@	�@	�@E@	�	�	�	�
	�@	�@	�@	�@	�	@��@	�@	�@	�
@	�@	�@E@	�	�	�@	�@	�@	�@	�@A@	�@	�@	�@	�@	�@HG@	�	�'	�@	� @	�!@	�"@	�#@	�$@	�%@	�&@E@	�(	�=	�)	�0	�*@	�+@	�,@	�-@	�.@	�/@Ae@	�1	�7	�2@	�3@	�4@	�5@	�6@E@	�8@	�9@	�:@	�;@	�<@F�@	�>	�K	�?	�E	�@@	�A@	�B@	�C@	�D@@&@	�F@	�G@	�H@	�I@	�J@A@	�L	�R	�M@	�N@	�O@	�P@	�Q@�@	�S@	�T@	�U@	�V@	�W@HG@	�Y	�"	�Z	��	�[	��	�\	�p	�]	�i	�^	�c	�_@	�`@	�a@	�b@Ae@	�d@	�e@	�f@	�g@	�h@�@	�j@	�k@	�l@	�m@	�n@	�o@A@	�q	�~	�r	�x	�s@	�t@	�u@	�v@	�w@E�@	�y@	�z@	�{@	�|@	�}@Ae@	�	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@�@	��	��	��	��@	��	��@	��@	��@	��@	��@	��@	����	��	��	��	����	��	����	����	����	����	����	����	����	����	����	����	������H 	��	��	������	����	��AK��	����	����	������	��	����	����	����H ��	����	����	����	����H ��	��	��	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@H @	��	��	��	��	��@	��@	��@	��@	��@E@	��@	��@	��@	��@	��@E@	��@	��@	��@	��@	��@	��@F�@	��	�	��	��	��	��	��	��	��@	��@	��@	��@	��@Ez@	��@	��@	��@	��@	��@�@@	��	��@	��@	��@	��@	��@A@	��	��@	��	��@	��@	��@	��@	��@Ba@	��	��	��@	��@	��@	��@	��@@&@	��@	�@	�@	�@	�@�6@	�	�	�	�
@	�	�@	�	@	�
@	�@	�@E@	�	�	�@	�@	�@	�@	�@A@	�@	�@	�@	�@	�@E@@	�@	�	�@	�@	�@	� @	�!@E@	�#	��	�$	�X	�%	�=	�&	�0	�'	�*	�(@	�)@HG@	�+@	�,@	�-@	�.@	�/@E@	�1	�7	�2@	�3@	�4@	�5@	�6@F�@	�8@	�9@	�:@	�;@	�<@�@	�>	�K	�?	�E	�@@	�A@	�B@	�C@	�D@@&@	�F@	�G@	�H@	�I@	�J@H�@	�L	�R	�M@	�N@	�O@	�P@	�Q@A@	�S@	�T@	�U@	�V@	�W@��@	�Y	�t	�Z	�g	�[	�a	�\@	�]@	�^@	�_@	�`@E@	�b@	�c@	�d@	�e@	�f@H @	�h	�n	�i@	�j@	�k@	�l@	�m@F�@	�o@	�p@	�q@	�r@	�s@�@	�u	�|@	�v	�w@	�x@	�y@	�z@	�{@A@	�}	��	�~@	�@	��@	��@	��@E�@	��@	��@	��@	��@	��@A@	��	��	��	��	��	��	��	��	��@	��@	��@	��@	��@�'@	��@	��@	��@	��@	��@F�@	��	��	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@�@	��	��	��	��	��@	��@	��@	��@	��@��@	��@	��@	��@	��@	��@E@	��@	��@	��@	��@	��@	��@�@	��	��	��	��	��	��	��@	��@	��@	��@	��@�'@	��@	��@	��@	��@	��@Ae@	��	��	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@�@	��	��	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@H @	��	��	��	��	��	�d	��	�-	��	�	��	�	��	��	��@	��@	��@	��@	��@�S@	�@	�@	�@	�@	�@A@	�	�	�@	�@	�	@	�
@	�@Ae@	�
@	�@	�@	�@	�@H @	�	� 	�	�	�@	�@	�@	�@	�@Ae@	�@	�@	�@	�@	�@�@	�!	�'	�"@	�#@	�$@	�%@	�&@�@	�(@	�)@	�*@	�+@	�,@�@	�.	�I	�/	�<	�0	�6	�1@	�2@	�3@	�4@	�5@B�@	�7@	�8@	�9@	�:@	�;@Ae@	�=	�C	�>@	�?@	�@@	�A@	�B@Ae@	�D@	�E@	�F@	�G@	�H@@&@	�J	�W	�K	�Q	�L@	�M@	�N@	�O@	�P@E@	�R@	�S@	�T@	�U@	�V@H�@	�X	�^	�Y@	�Z@	�[@	�\@	�]@F�@	�_@	�`@	�a@	�b@	�c@H:@	�e	��	�f	�u	�g	�n@	�h	�i@	�j@	�k@	�l@	�m@H�@@	�o	�p@	�q@	�r@	�s@	�t@H�@	�v	��	�w	�}	�x@	�y@	�z@	�{@	�|@Ba@	�~@	�@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@�@	��	��	��	��	��	��	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@A@	��	��	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@@&@	��	��	��	��	��@	��@	��@	��@	��@H:@	��@	��@	��@	��@	��@H @	��	��	��@	��@	��@	��@	��@E@	��@	��@	��@	��@	��@A@	��	�+	��	��	��	��	��	��	��	��	��@	��@	��@	��@	��@@&@	��@	��@	��@	��@	��@@&@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@E@	��	��@	��	��@	��@	��@	��@	��@A@	��	��	��@	��@	��@	��@	��@H:@	��@	��@	��@	��@	��@�@	��	�	��	�@	��	��@	��@	�@	�@	�@E@	�	�
	�@	�@	�@	�@	�	@�'@	�@	�@	�
@	�@	�@E@	�	�	�	�	�@	�@	�@	�@	�@Ae@	�@	�@	�@	�@	�@H @	�	�%	� @	�!@	�"@	�#@	�$@�@	�&@	�'@	�(@	�)@	�*@HG@	�,	�c	�-	�H	�.	�;	�/	�5	�0@	�1@	�2@	�3@	�4@F�@	�6@	�7@	�8@	�9@	�:@H:@	�<	�B	�=@	�>@	�?@	�@@	�A@Ae@	�C@	�D@	�E@	�F@	�G@w@	�I	�V	�J	�P	�K@	�L@	�M@	�N@	�O@�@	�Q@	�R@	�S@	�T@	�U@Ae@	�W	�]	�X@	�Y@	�Z@	�[@	�\@A@	�^@	�_@	�`@	�a@	�b@E@	�d	�	�e	�r	�f	�l	�g@	�h@	�i@	�j@	�k@Ae@	�m@	�n@	�o@	�p@	�q@HG@	�s	�y	�t@	�u@	�v@	�w@	�x@A@	�z@	�{@	�|@	�}@	�~@E@	��	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@E@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@�@	��	�m	��	�	��	��	��	��	��	��	��	��	��@	��@	��@	��@@&@	��@	��@	��@	��@	��@Ae@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@@&@	��	��	��	��	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@HG@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@Ba@	��	��	��	��	��	��	��@	��@	��@	��@	��@E�@	��@	��@	��@	��@	��@E@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@�@	��	��@	��	��@	��@	��@	��@	��@E@	��	��	��@	��@	��@	��@	��@A@	��@	�@	�@	�@	�@E@	�	�6	�	�!	�	�	�	�	�	@	�
@	�@	�@	�
@H:@	�@	�@	�@	�@	�@E@	�	�	�@	�@	�@	�@	�@az@	�@	�@	�@	�@	� @�@	�"	�)	�#@	�$@	�%@	�&@	�'@	�(@Ae@	�*	�0	�+@	�,@	�-@	�.@	�/@A@	�1@	�2@	�3@	�4@	�5@E@	�7	�R	�8	�E	�9	�?	�:@	�;@	�<@	�=@	�>@Ae@	�@@	�A@	�B@	�C@	�D@HG@	�F	�L	�G@	�H@	�I@	�J@	�K@A@	�M@	�N@	�O@	�P@	�Q@E@	�S	�`	�T	�Z	�U@	�V@	�W@	�X@	�Y@H:@	�[@	�\@	�]@	�^@	�_@E@	�a	�g	�b@	�c@	�d@	�e@	�f@A@	�h@	�i@	�j@	�k@	�l@E@	�n	��	�o	��	�p	��	�q	�x	�r@	�s@	�t@	�u@	�v@	�w@E�@	�y	�	�z@	�{@	�|@	�}@	�~@A@	��@	��@	��@	��@	��@E@	��	��	��	��	��@	��@	��@	��@	��@E@	��@	��@	��@	��@	��@E@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@	��@	��	��	��	��	��azv�azaz	��maz	��	��az	��az��az	��t�w	��	��	��	��	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@az@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@Ae@	��	��	��	��	��@	��@	��@	��@	��@E@	��@	��@	��@	��@	��@H�@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@H�@	��	�	��	��	��	��	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@@&@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@HG@	�	�	�@	�@	�@	�@	�@	�@H:@	�	�	�	@	�
@	�@	�@	�
@A@	�@	�@	�@	�@	�@A@	�	�*	�	�#	�	�	�@	�@	�@	�@	�@Ae@	�@	�@	� @	�!@	�"@E@	�$@	�%@	�&@	�'@	�(@	�)@A@	�+	�8	�,	�2	�-@	�.@	�/@	�0@	�1@�@	�3@	�4@	�5@	�6@	�7@E@	�9	�?	�:@	�;@	�<@	�=@	�>@A@	�@@	�A@	�B@	�C@	�D@E@	�F	��	�G	��	�H	�	�I	��	�J	��	�K	�f	�L	�Y	�M	�S	�N@	�O@	�P@	�Q@	�R@E�@	�T@	�U@	�V@	�W@	�X@E@	�Z	�`	�[@	�\@	�]@	�^@	�_@A@	�a@	�b@	�c@	�d@	�e@E@	�g	�t	�h	�n	�i@	�j@	�k@	�l@	�m@��@	�o@	�p@	�q@	�r@	�s@E@	�u	�{	�v@	�w@	�x@	�y@	�z@|�@	�|@	�}@	�~@	�@	��@H�@	��	��	��	��	��	��	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@H�@@	��	��@	��@	��@	��@	��@Ez@	��	��	��	��	��@	��@	��@	��@	��@��@	��@	��@	��@	��@	��@H�@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@E@	��	��	��	��	��	��	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@E@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@E@	��	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@HG@	��	��	��@	��@	��@	��@	��@A@	��@	��@F�@	��	�	��	��	��	��	��@	��@	��@	��@	��@Ez@	��@	��@	��@	��@	��@H:@	��	��	��@	��@	��@	��@	��@A@	��@	��@	�@	�@	�@�@	�	�	�	�	�@	�@	�@	�	@	�
@E�@	�@	�
@	�@	�@	�@E@	�	�	�@	�@	�@	�@	�@A@	�@	�@	�@	�@	�@��@	�	��	� 	�W	�!	�<	�"	�/	�#	�)	�$@	�%@	�&@	�'@	�(@@&@	�*@	�+@	�,@	�-@	�.@H�@	�0	�6	�1@	�2@	�3@	�4@	�5@A@	�7@	�8@	�9@	�:@	�;@E@	�=	�J	�>	�D	�?@	�@@	�A@	�B@	�C@A@	�E@	�F@	�G@	�H@	�I@��@	�K	�Q	�L@	�M@	�N@	�O@	�P@A@	�R@	�S@	�T@	�U@	�V@��@	�X	�s	�Y	�f	�Z	�`	�[@	�\@	�]@	�^@	�_@��@	�a@	�b@	�c@	�d@	�e@E@	�g	�m	�h@	�i@	�j@	�k@	�l@Ae@	�n@	�o@	�p@	�q@	�r@�@	�t	��	�u	�{	�v@	�w@	�x@	�y@	�z@E@	�|@	�}@	�~@	�@	��@E@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@H�@	��	��	��	��	��	��	��	��	��@	��@	��@	��@	��@@&@	��@	��@	��@	��@	��@H�@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@H�@	��	��@	��	��@	��@	��@	��@	��@H�@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@	��@H:	��	��	��s�H:	��	��H:�H:s�	��	��	��	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@H�@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@Ae@	��	��	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@E@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@Ae@	��	��	��	�y	�	�1	�	�	�	�	�	�		�@	�@	�@	�@	�@�'@	�
@	�@	�@	�
@	�@F�@	�	�	�@	�@	�@	�@	�@Ae@	�@	�@	�@	�@	�@Ae@	�	�*	�	�$	�@	� @	�!@	�"@	�#@E�@	�%@	�&@	�'@	�(@	�)@q�@	�+@	�,@	�-@	�.@	�/@	�0@�@	�2	�G	�3	�@	�4	�:	�5@	�6@	�7@	�8@	�9@F�@	�;@	�<@	�=@	�>@	�?@H @@	�A	�B@	�C@	�D@	�E@	�F@H @	�H	�l	�I	�O	�J@	�K@	�L@	�M@	�N@Ae@	�P@	�Q@	�R@	�S@	�T@	�U@	�V	�eH:	�WH:	�XH:	�Y	�ZH:	�[H:H:	�\H:	�]	�^H:	�_H:	�`H:H:	�a	�bH:	�cH:	�dH:�H:H:	�fH:	�gH:	�h	�iH:	�jH:	�kH:s�H:	�m	�s	�n@	�o@	�p@	�q@	�r@�@	�t@	�u@	�v@	�w@	�x@��@	�z	��	�{	��	�|	��@	�}	�~@	�@	��@	��@	��@@&@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@Ae@	��	��	��	��	��@	��@	��@	��@	��@��@	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@H:@	��	��	��	��	��	��	��@	��@	��@	��@	��@@&@	��@	��@	��@	��@	��@E@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@F�@	��	��	��@	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@A@	��	�Q	��	� 	��	�	��	�	��	��	��@	��@	��@	��@	��@@&@	��@	��@	��@	��@	��@	��@	��F�	��F�	��F�	��F�	��F�	��F�	��F�	��F�	��F�	��	��	��F�	��F�	��F�	��F�	��	��F�GtGtF�	��	�	�F�	�F�	�F�Gt	�GtF�G�F�	�	�	�@	�@	�	@	�
@	�@A@	�
@	�@	�@	�@	�@A@@	�	�	�	�@	�@	�@	�@	�@A@	�@	�@	�@	�@	�@A@	�!	�<	�"	�/	�#	�)	�$@	�%@	�&@	�'@	�(@E@	�*@	�+@	�,@	�-@	�.@E@	�0	�6	�1@	�2@	�3@	�4@	�5@A@	�7@	�8@	�9@	�:@	�;@��@	�=	�D@	�>	�?@	�@@	�A@	�B@	�C@H�@	�E	�K	�F@	�G@	�H@	�I@	�J@A@	�L@	�M@	�N@	�O@	�P@Ae@	�R	��	�S	�n	�T	�a	�U	�[	�V@	�W@	�X@	�Y@	�Z@Ae@	�\@	�]@	�^@	�_@	�`@HG@	�b	�h	�c@	�d@	�e@	�f@	�g@A@	�i@	�j@	�k@	�l@	�m@�'@	�o	�v@	�p	�q@	�r@	�s@	�t@	�u@�@	�w	�}	�x@	�y@	�z@	�{@	�|@A@	�~@	�@	��@	��@	��@E@	��	��	��	��	��	��	��@	��@	��@	��@	��@Ez@	��@	��@	��@	��@	��@E@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@E@	��	��	��	��	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@H:@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@A@	��	��	��	��	��	�%	��	��	��	��	��	��	��	��	��@	��@	��@	��@	��@F�@	��@	��@	��@	��@	��@E@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@@&@	��	��	��	��	��@	��@	��@	��@	��@H:@	��@	��@	��@	��@	��@E@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@E@	��	�	��	��@	��	��@	��@	��@	��@	��@E@	��	�	�@	�@	�@	�@	�@A@	�@	�@	�@	�	@	�
@�@	�	�	�
	�	�@	�@	�@	�@H:@	�@	�@	�@	�@	�@��@	�	�	�@	�@	�@	�@	�@A@	� @	�!@	�"@	�#@	�$@H�@	�&	�\	�'	�B	�(	�5	�)	�/	�*@	�+@	�,@	�-@	�.@Ae@	�0@	�1@	�2@	�3@	�4@E@	�6	�<	�7@	�8@	�9@	�:@	�;@A@	�=@	�>@	�?@	�@@	�A@H @	�C	�O	�D	�I	�E@	�F@	�G@	�H@E@	�J@	�K@	�L@	�M@	�N@@&@	�P	�V	�Q@	�R@	�S@	�T@	�U@A@	�W@	�X@	�Y@	�Z@	�[@�@	�]	�x	�^	�k	�_	�e	�`@	�a@	�b@	�c@	�d@@&@	�f@	�g@	�h@	�i@	�j@HG@	�l	�r	�m@	�n@	�o@	�p@	�q@A@	�s@	�t@	�u@	�v@	�w@Ez@	�y	��	�z	��	�{@	�|@	�}@	�~@	�@Ae@	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@�@	��	�$	��	��	��	��	��	��	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@E@	��	��	��@	��@	��@	��@	��@E@	��@	��@	��@	��@	��@	��@	��߫	��	��	��߫	��߫	��߫	��߫	��߫	��߫	��߫	��߫	��߫	��	��	��	��	��	��	��	�����>�Rس	��	����سس��	��	��	���R�R��	��	�������R��	��߫	��߫	��߫�R߫	��߫	��	���R	��	��	���R	��س�R	��	���R������	��߫	��	��	��س�����R	���R߫	��	��@	��	��@	��@	��@	��@	��@H�@@	��	��@	��@	��@	��@	��@E@	��	�		��	��	��	��	��@	��@	��@	��@	��@H:@	��@	��@	��@	��@	��@�@	��	�	��@	��@	�@	�@	�@A@	�@	�@	�@	�@	�@@&@	�
	�	�	�	�@	�
@	�@	�@	�@F�@	�@	�@	�@	�@	�@@&@	�	�	�@	�@	�@	�@	�@A@	�@	� @	�!@	�"@	�#@�@	�%	�\	�&	�A	�'	�4	�(	�.	�)@	�*@	�+@	�,@	�-@Ae@	�/@	�0@	�1@	�2@	�3@A@	�5	�;	�6@	�7@	�8@	�9@	�:@A@	�<@	�=@	�>@	�?@	�@@A@	�B	�O	�C	�I	�D@	�E@	�F@	�G@	�H@Ba@	�J@	�K@	�L@	�M@	�N@�@	�P	�V	�Q@	�R@	�S@	�T@	�U@A@	�W@	�X@	�Y@	�Z@	�[@E@	�]	�x	�^	�k	�_	�e	�`@	�a@	�b@	�c@	�d@Ae@	�f@	�g@	�h@	�i@	�j@@&@	�l	�r	�m@	�n@	�o@	�p@	�q@A@	�s@	�t@	�u@	�v@	�w@E@	�y	��	�z	��	�{@	�|@	�}@	�~@	�@F�@	��@	��@	��@	��@	��@�'@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@�~@	��	�a	��	��	��	��	��	��	��	��@	��	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@E@	��	��	��	��	��@	��@	��@	��@	��@��@	��@	��@	��@	��@	��@H�@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@H�@	��	��	��	��	��	��	��@	��@	��@	��@	��@�@	��@	��@	��@	��@	��@@&@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@
�@	��	��	��	��	��@	��@	��@	��@	��@��@	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@�@	��	�*	�	�	�	�@	�	�@	�@	�@	�@	�@E@	�		�	�
@	�@	�@	�
@	�@A@	�@	�@	�@	�@	�@�@	�	�@	�	�@	�@	�@	�@	�@H�@	�	�$	�@	� @	�!@	�"@	�#@A@	�%@	�&@	�'@	�(@	�)@�@	�+	�F	�,	�9	�-	�3	�.@	�/@	�0@	�1@	�2@@&@	�4@	�5@	�6@	�7@	�8@�@	�:	�@	�;@	�<@	�=@	�>@	�?@A@	�A@	�B@	�C@	�D@	�E@Ae@	�G	�T	�H	�N	�I@	�J@	�K@	�L@	�M@E@	�O@	�P@	�Q@	�R@	�S@�@	�U	�[	�V@	�W@	�X@	�Y@	�Z@A@	�\@	�]@	�^@	�_@	�`@�@	�b	��	�c	��	�d	�y	�e	�l	�f@	�g@	�h@	�i@	�j@	�k@Ez@	�m	�s	�n@	�o@	�p@	�q@	�r@A@	�t@	�u@	�v@	�w@	�x@E@	�z	��	�{	��	�|@	�}@	�~@	�@	��@�@	��@	��@	��@	��@	��@E@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@E@	��	��	��	��	��	��	��@	��@	��@	��@	��@H:@	��@	��@	��@	��@	��@�@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@Ae@	��	��@	��	��@	��@	��@	��@	��@E@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@Ae@	��	��	��	��	��	��@	��	��@	��@	��@	��@	��@@&@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@Ae@	��	��	��	��	��@	��@	��@	��@	��@Ae@	��@	��@	��@	��@	��@E@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@HG@	��	�
	��	�@	��	��@	��@	��@	��@	��@�~@	�	�	�@	�@	�@	�@	�@�@	�@	�	@	�
@	�@	�@�@	�	�	�	�	�@	�@	�@	�@	�@E@	�@	�@	�@	�@	�@�@	�	�"	�@	�@	�@	� @	�!@�@	�#@	�$@	�%@	�&@	�'@Ae@	�)	Ô	�*	�I	�+	�n	�,	�?	�-	�6	�.	�1	�/@	�0@@&@	�2@	�3@	�4@	�5@Ae@	�7	�:	�8@	�9@A@	�;@	�<@	�=@	�>@A@	�@@	�A@	�B@	�CA	�DAA	�E	�FA	�GA	�HA	�IA	�JA	�KAA	�LA	�MA	�N	�OA	�PAA	�Q	�RA	�SAA	�T	�UA	�VA	�WAA	�X	�YAA	�Z	�[AA	�\A	�]A	�^A	�_	�`AA	�a	�bAA	�c	�dA	�eA	�fAA	�gA	�h	�iA	�jA	�kA	�lA	�mAN�A	�o	�F	�p	ª	�q	�	�r@	�s@	�t@	�u	�z	�v@	�w@	�x@	�y@E@&	�{@	�|@@	�}	�~@@@&	€@	@	‚		ƒA	„A	…A	†A	‡A	ˆA	‰A	ŠA	‹A	ŒA	A	ŽA	ANAA	‘A	’A	“A	”A	•A	–A	—A	˜A	™A	šA	›A	œA	A	žA	ŸA	 A	¡A	¢A	£A	¤A	¥A	¦A	§A	¨A	©AC�	«	�E	¬@	­@	®@	¯E	°E	±	�E	²	³E	´E	µE	¶E	·	��E	¸	¹EE	ºE	»	¼EE	½E	¾E	¿	�EE	�E	��	��E	��E	��EE	��	��E	��E	��EE	��	��EE	��	��E	��E	��E	��E	��EE	��	��EE	��E	��	��E	��EE@E	��	��EE	��	��E	��EE	��	��EE	��E	��	��E	��E	��EE	��E	��	��EE	��E	��	��EE	��	��EE	��E	��	��EE	��	��E	��EE	��E	��E	�E	�E	�E	�E@E	�	�	� E	�	�E	�E	�E	�E	�E	�E	�E	�E	�E	�E	�E	�E	�	E	�
EE	�	�EE	�
	�EE	�E	�E	�	�E	�E	�E	�EE	�E	�E	�E	�	�EE	�	�EE	�	�EE	�@EE	�!	�"E	�#EE	�$	�%E	�&E	�'E	�(E	�)E	�*E	�+E	�,E	�-E	�.EE	�/	�0E	�1EE	�2	�3E	�4EE	�5	�6EE	�7	�8EE	�9E	�:E	�;	�<E	�=E	�>EE	�?E	�@E	�A	�BE	�CEE	�D@EA@	�G@	�H@A@	�J	�h	�K	�`	�L	�X	�M	�S	�N@	�O@	�P@	�Q@	�R@@&@	�T@	�U@	�V@	�W@A@	�Y	�[	�Z@A@	�\@	�]@	�^@	�_@A@	�a	�e	�b	�d	�c@A@A@	�f	�gA@E@	�i	�}	�j	�x	�k	�u	�l@	�m@	�n@	�o	�r	�p@	�q@@&@	�s@	�t@@@&	�v@	�w@A@	�y	�|	�z@	�{@F�@A@	�~	Ç	�	Á	À@A@	Â@	Ã@	Ä@	Å@	Æ@A@	È	Í	É@	Ê@	Ë@	Ì@@&@	Î@	Ï@	Ð@	Ñ@	Ò@	Ó@A@	Õ	��	Ö	ì	×	æ	Ø	â	Ù@	Ú@	Û@	Ü@	Ý@	Þ@	ß@	à@	á@A@	ã@	ä@	å@A@	ç	ê	è@	é@A@	ë@A@	í	ú	î	÷	ï@	ð@	ñ@	ò@	ó@	ô@	õ@	ö@@&@	ø@	ù@A@	û	�	ü@	ý@	þ@	ÿ@	�@A@	��@	��@	��@	��@	��@F�@	��	��	��@A@	��	��	��	��	��@	��@	��@	��@@&@	��@	��@	��@	��@	��@A@	��	��	��@	��@	��@	��@	��@A@	��@	��@	��@	��@	��@A@@	��@	��@	��	��@	��@@	��@	��@	��@	��@	��	��@	��@@	��@	��@	��@	��@	�@	�@	�@	�@	�@	�	�@	�@	�@	�@	�@	�@	�@	�@	�@	�@	�@	�@	�@	�@	�	@	�
@	�@	�@	�
@	�@	�@	�@	�@	�@	�@	�@	�@	�@	�@	�@	�@��@	�@	�@	�@	�@	�@@	� @	�!	�"@	�#@@	�$	�%@@	�&@	�'@	�(@	�)@	�*@	�+@	�,	�-@�@	�/@	�0@	�1@	�2
��	�3
�4	�4
��	�5
mL	�6	�k	�7	�	�8	�F	�9	ߌ	�:	�	�;	�	�<	��	�=	Ĩ	�>	ģ	�?	ğ	�@@	�A@	�B	Ā	�C@	�Daz	�E	�X	�F	�Oaz	�Gaz	�Haz	�I	�Jazaz	�K	�Laz	�Maz	�Naz�az	�Pazaz	�Q	�Raz	�Saz	�Taz	�Uaz	�Vazaz	�Waz�az	�Y	�Zazaz	�[az	�\az	�]az	�^az	�_az	�`az	�aaz	�baz	�c	�daz	�eaz	�faz	�gaz	�haz	�iaz	�jaz	�k	�p	�l	�n	�maz�az	�oaz�az	�q	�s	�raz�az	�t	�uaz�az	�vaz	�waz	�xaz	�yaz	�zaz	�{az	�|az	�}az	�~az	�az�@	ā	Ă@@	ă@	Ą@	ą	Ć@	ć@	Ĉ@	ĉ@	Ċ@	ċ@	Č@	č@	Ď@	ď@	Đ@@	đ	Ē@@	ē@	Ĕ	ĕ@	Ė@	ė@	Ę@	ę@	Ě@	ě@@	Ĝ@	ĝ	Ğ@@�	Ġ@	ġ@	Ģ@az@	Ĥaz	ĥ@	Ħ@	ħ@az@	ĩ	IJ	Ī@	ī@	Ĭ@	ĭ@	Į@	į@	İ@	ı@az@	ij@	Ĵ@@	ĵ	Ķ@	ķ	�	ĸ@	Ĺ@	ĺ@	Ļ@	ļ@	Ľ@	ľ@	Ŀ@	�@@�	��	��	��@	��@	��	��	��@	��@	��@	��@�@	��@	��@	��@	��@	��@@�	��@	��@	��@	��@	��@	��@	��@	��@@�	��	��	��	��	��	��	��@	��@az@	��@	��@	��@az@	��	��	��@	��@	��@az@	��@	��@	��@az@	��@	��	�	��@	��@	��@az	��	��@az	��	�@az@	�@	�@	�@|@	�	ھ	�	̗	�	̒	�	̎	�@	�@	�@	�	ː	�	�
	�	�_	�	�>	�azaz	�	�azaz	�	az	�
	�az	�az	�
az	�	�&	�az	�azaz	�az	�az	�az	�az	�az	�	�az	�az	�az	�azaz	�	�azaz	�az	�	�azaz	� 	�!azaz	�"az	�#az	�$	�%az@az	�'az	�(azaz	�)	�*az	�+az	�,azaz	�-az	�.az	�/	�0az	�1azaz	�2az	�3az	�4az	�5az	�6az	�7	�8az	�9az	�:azaz	�;	�<az	�=azaz@az	�?az	�@	�Aazaz	�Baz	�C	�Dazaz	�E	�Faz	�Gaz	�Hazaz	�I	�Jaz	�Kazaz	�L	�Mazaz	�Naz	�Oaz	�P	�Qazaz	�Raz	�Saz	�T	�Uaz	�Vazaz	�W	�Xazaz	�Yaz	�Z	�[azaz	�\az	�]az	�^@az	�`	Ł	�aazaz	�b	�cazaz	�daz	�e	�faz	�gaz	�hazaz	�i	�jaz	�kazaz	�l	�maz	�nazaz	�o	�pazaz	�q	�raz	�sazaz	�t	�uazaz	�vaz	�waz	�x	�yazaz	�zaz	�{az	�|az	�}	�~az	�az	ŀazaz@az	łaz	Ń	ńazaz	Ņaz	ņ	Ňaz	ňaz	ʼnazaz	Ŋ	ŋaz	Ō	��	ō	��	Ŏ	��	ŏ	��	Ő	��	ő	Ţaz	Œ	œaz	Ŕaz	ŕazaz	Ŗaz	ŗ	Řazaz	řaz	Ś	śazaz	Ŝaz	ŝaz	Şaz	şaz	Š	šazaz@	ţ	ų	Ťazaz	ťaz	Ŧaz	ŧ	Ũazaz	ũ	Ūaz	ūazaz	Ŭ	ŭaz	Ůazaz	ů	Űazaz	űaz	Ųaz@	Ŵaz	ŵazaz	Ŷaz	ŷaz	Ÿaz	Źaz	źaz	Ż	żaz	Žaz	žazaz	ſ	�azaz	�	��az@azaz	��az	��az	��az	��	��az	��az	��azaz	��	��azaz	��az	��az	��az	��	��az	��az	��az	��azaz@	��	ƣ	��	ƒ	��	�(	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�	az	�
az	�az	�az	�
az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	� az	�!az	�"az	�#az	�$az	�%az	�&az	�'az@az	�)az	�*	�x	�+az	�,az	�-az	�.az	�/az	�0az	�1az	�2az	�3az	�4az	�5az	�6az	�7az	�8az	�9az	�:az	�;az	�<az	�=az	�>az	�?az	�@az	�Aaz	�Baz	�Caz	�Daz	�Eaz	�Faz	�Gaz	�Haz	�Iaz	�Jaz	�Kaz	�Laz	�Maz	�Naz	�Oaz	�Paz	�Qaz	�Raz	�Saz	�Taz	�Uaz	�Vaz	�Waz	�Xaz	�Yaz	�Zaz	�[az	�\az	�]az	�^az	�_az	�`az	�aaz	�baz	�caz	�daz	�eaz	�faz	�gaz	�haz	�iaz	�jaz	�kaz	�laz	�maz	�naz	�oaz	�paz	�qaz	�raz	�saz	�taz	�uaz	�vaz	�waz@az	�yaz	�z	Ɔaz	�{az	�|	�}az	�~azaz	�az	ƀaz	Ɓaz	Ƃaz	ƃ	Ƅaz	ƅaz@az	Ƈazaz	ƈ	Ɖaz	Ɗazaz	Ƌ	ƌazaz	ƍ	Ǝaz	Əaz	Ɛazaz	Ƒaz@	Ɠaz	Ɣazaz	ƕ	Ɩaz	Ɨaz	Ƙaz	ƙaz	ƚazaz	ƛ	Ɯaz	Ɲaz	ƞaz	Ɵazaz	Ơaz	ơ	Ƣaz@az	Ƥ	Ƶaz	ƥ	Ʀaz	Ƨaz	ƨaz	Ʃazaz	ƪaz	ƫ	Ƭaz	ƭazaz	Ʈ	Ưazaz	ưaz	Ʊ	Ʋazaz	Ƴ	ƴaz@az	ƶaz	Ʒazaz	Ƹaz	ƹaz	ƺaz	ƻ	Ƽaz	ƽaz	ƾazaz	ƿ	�az	�az	��azaz	��	��az	��az@az	��	�	��	��	��az	��azaz	��	��	��	��az	��az	��az	��az	��azaz	��az	��az	��	��azaz	��	��azaz	��az	��az@	��azaz	��az	��az	��az	��	��az	��azaz	��	��az	��azaz	��	��az	��azaz@az	��az	��az	��az	��az	��	��azaz	��	��az	��az	��az	��az	��az	�az	�az	�azaz	�	�azaz@	�	�
	�az	�az	�azaz	�	�azaz	�	�azaz	�az	�az	�az	�az	�	�az	�	azaz	�
	�azaz	�@az	�	�az	�az	�	�azaz	�	�az	�azaz	�az	�az	�	�azaz	�az	�	�az	�az	�az	�az@az	� 	�0az	�!	�"az	�#azaz	�$az	�%	�&azaz	�'	�(azaz	�)az	�*az	�+	�,azaz	�-az	�.az	�/@az	�1az	�2az	�3	ǀ	�4az	�5az	�6az	�7az	�8az	�9az	�:az	�;az	�<az	�=az	�>az	�?az	�@az	�Aaz	�Baz	�Caz	�Daz	�Eaz	�Faz	�Gaz	�Haz	�Iaz	�Jaz	�Kaz	�Laz	�Maz	�Naz	�Oaz	�Paz	�Qaz	�Raz	�Saz	�Taz	�Uaz	�Vaz	�Waz	�Xaz	�Yaz	�Zaz	�[az	�\az	�]az	�^az	�_az	�`az	�aaz	�baz	�caz	�daz	�eaz	�faz	�gaz	�haz	�iaz	�jaz	�kaz	�laz	�maz	�naz	�oaz	�paz	�qaz	�raz	�saz	�taz	�uaz	�vaz	�waz	�xaz	�yaz	�zaz	�{az	�|az	�}az	�~az	�az@azaz	ǁ	ǂazaz	ǃ	DŽazaz	Dž	džaz	LJazaz	Ljaz	lj	NJazaz	Nj	njazaz	Ǎaz	ǎaz	Ǐ	ǐazaz	Ǒaz	ǒaz	Ǔ	ǔazaz	Ǖ	ǖaz	Ǘaz	ǘazaz	Ǚaz	ǚ	Ǜaz	ǜazaz	ǝaz	Ǟ	ǟaz	Ǡazaz	ǡ	Ǣaz	ǣazaz	Ǥaz	ǥ	Ǧaz	ǧaz	Ǩaz	ǩazaz	Ǫaz	ǫaz	Ǭ	ǭazaz	Ǯaz	ǯ	ǰazaz	DZaz	Dz	dzaz	Ǵaz	ǵaz	Ƕaz	Ƿazaz	Ǹaz	ǹaz	Ǻ	ǻaz	Ǽazaz	ǽ	Ǿaz	ǿaz	�azaz	�az	��	��az	��az	��az	��azaz	��	��azaz	��	��az	��azaz	��@az	��az	��	�N	��	�_	��	��az	��	��az	��az	��az	��azaz	��	��az	��azaz	��az	��az	��az	��az	��az	��	��az	��azaz@	��	��az	��	��az	��azaz	��	��azaz	��	��az	��azaz	��az	��az	��	��azaz	��	��az	��az@az	��	�	�az	�az	�azaz	�az	�az	�	�azaz	�	�azaz	�az	�	�az	�azaz	�az@	�az	�	�	�az	�az	�az	�	az	�
azaz	�	�az	�
az	�azaz	�	�azaz	�az@az	�	�azaz	�	�az	�azaz	�	�azaz	�	�az	�az	�azaz	�	�az	� azaz	�!az	�"az	�#	�$azaz	�%	�&az	�'az	�(azaz	�)az	�*az	�+az	�,az	�-az	�.	�/az	�0azaz	�1	�2azaz	�3az	�4	�5azaz	�6	�7azaz	�8az	�9	�:az	�;az	�<az	�=az	�>az	�?az	�@azaz	�A	�Baz	�Cazaz	�Daz	�Eaz	�Faz	�G	�Haz	�Iazaz	�J	�Kaz	�Laz	�Mazaz	�Naz	�O	�Paz	�Qaz	�Raz	�Sazaz	�T	�Uazaz	�V	�Wazaz	�Xaz	�Y	�Zaz	�[azaz	�\	�]az	�^azaz@	�`	��	�a	Ȁ	�b	�q	�caz	�daz	�eaz	�faz	�gazaz	�haz	�i	�jazaz	�kaz	�l	�mazaz	�naz	�oaz	�p@az	�razaz	�s	�taz	�uazaz	�v	�waz	�xaz	�yazaz	�zaz	�{az	�|	�}az	�~az	�azaz@	ȁaz	Ȃaz	ȃaz	Ȅaz	ȅaz	Ȇaz	ȇaz	Ȉaz	ȉaz	Ȋaz	ȋaz	Ȍaz	ȍaz	Ȏaz	ȏaz	Ȑaz	ȑaz	Ȓaz	ȓaz	Ȕaz	ȕaz	Ȗaz	ȗaz	Șaz	șaz	Țaz	țaz	Ȝaz	ȝaz	Ȟaz	ȟaz	Ƞaz	ȡaz	Ȣaz	ȣaz	Ȥaz	ȥaz	Ȧaz	ȧaz	Ȩaz	ȩaz	Ȫaz	ȫaz	Ȭaz	ȭaz	Ȯaz	ȯaz	Ȱaz	ȱaz	Ȳaz	ȳaz	ȴaz	ȵaz	ȶaz	ȷaz	ȸaz	ȹaz	Ⱥaz	Ȼaz	ȼaz	Ƚaz	Ⱦaz	ȿaz	�az	�az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az@az	��	�>	��	�!	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�	az	�
az	�az	�az	�
az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	� az@az	�"	�0az	�#	�$az	�%az	�&az	�'azaz	�(	�)azaz	�*az	�+	�,azaz	�-	�.azaz	�/az@	�1az	�2az	�3az	�4az	�5az	�6az	�7azaz	�8	�9azaz	�:	�;azaz	�<	�=azaz@	�?az	�@az	�Aaz	�Baz	�Caz	�Daz	�Eaz	�Faz	�Gaz	�Haz	�Iaz	�Jaz	�Kaz	�Laz	�Maz@az	�O	�a	�Paz	�Qazaz	�R	�Saz	�Taz	�Uaz	�Vaz	�Waz	�Xazaz	�Y	�Zazaz	�[az	�\az	�]az	�^	�_azaz	�`az@	�b	ɳ	�caz	�daz	�eaz	�faz	�gaz	�haz	�iaz	�jaz	�kaz	�laz	�maz	�naz	�oaz	�paz	�qaz	�raz	�saz	�taz	�uaz	�vaz	�waz	�xaz	�yaz	�zaz	�{az	�|az	�}az	�~az	�az	ɀaz	Ɂaz	ɂaz	Ƀaz	Ʉaz	Ʌaz	Ɇaz	ɇaz	Ɉaz	ɉaz	Ɋaz	ɋaz	Ɍaz	ɍaz	Ɏaz	ɏaz	ɐaz	ɑaz	ɒaz	ɓaz	ɔaz	ɕaz	ɖaz	ɗaz	ɘaz	əaz	ɚaz	ɛaz	ɜaz	ɝaz	ɞaz	ɟaz	ɠaz	ɡaz	ɢaz	ɣaz	ɤaz	ɥaz	ɦaz	ɧaz	ɨaz	ɩaz	ɪaz	ɫaz	ɬaz	ɭaz	ɮaz	ɯaz	ɰaz	ɱaz	ɲaz@az	ɴ	��	ɵ	��	ɶaz	ɷaz	ɸazaz	ɹaz	ɺ	ɻaz	ɼazaz	ɽ	ɾazaz	ɿ	�az	�az	��azaz	��az@az	��	��az	��az	��azaz	��	��azaz	��az	��az	��az	��az	��az	��	��azaz	��@az	��azaz	��az	��	��az	��az	��azaz	��	��az	��az	��az	��az	��azaz	��az	��	��azaz@	��azaz	��	��az	��az	��	�az	��az	��	��azaz	��	��az	��az	��azaz	��az	��	��azaz	��	��azaz	�az	�az	�	�az@az	�az	�azaz	�	�azaz	�	�az	�az	�azaz	�az	�az	�az	�az	�az	�	�az	�	az@az	�	��	�	�{	�
	�Eaz	�	�azaz	�az	�	�az	�az	�az	�	�-	�az	�azaz	�az	�az	�	�az	�azaz	�	�az	�az	� azaz	�!	�"az	�#azaz	�$az	�%az	�&	�'azaz	�(az	�)az	�*az	�+az	�,@az	�.az	�/azaz	�0	�1az	�2azaz	�3	�4az	�5az	�6az	�7azaz	�8az	�9az	�:az	�;	�<azaz	�=az	�>	�?azaz	�@	�Aaz	�Baz	�Cazaz	�D@azaz	�F	�Gazaz	�Haz	�I	�Jaz	�Kaz	�Lazaz	�M	�Naz	�O	�e	�Paz	�Qaz	�Raz	�Saz	�Tazaz	�Uaz	�V	�Wazaz	�Xaz	�Y	�Zazaz	�[	�\az	�]az	�^az	�_az	�`azaz	�aaz	�b	�cazaz	�d@azaz	�faz	�gaz	�haz	�i	�jazaz	�k	�laz	�mazaz	�naz	�o	�pazaz	�q	�razaz	�saz	�taz	�uaz	�v	�waz	�xaz	�yaz	�zazaz@	�|	ʜaz	�}	�~azaz	�az	ʀ	ʁaz	ʂaz	ʃaz	ʄaz	ʅaz	ʆazaz	ʇaz	ʈaz	ʉaz	ʊaz	ʋ	ʌazaz	ʍ	ʎaz	ʏazaz	ʐ	ʑazaz	ʒ	ʓazaz	ʔaz	ʕaz	ʖaz	ʗaz	ʘaz	ʙaz	ʚ	ʛaz@azaz	ʝ	ʞazaz	ʟaz	ʠ	ʡaz	ʢaz	ʣaz	ʤ	ʼ	ʥaz	ʦazaz	ʧ	ʨazaz	ʩaz	ʪ	ʫazaz	ʬ	ʭaz	ʮazaz	ʯaz	ʰ	ʱaz	ʲaz	ʳazaz	ʴaz	ʵaz	ʶ	ʷaz	ʸazaz	ʹaz	ʺaz	ʻ@azaz	ʽaz	ʾ	ʿaz	�az	�azaz	��az	��az	��	��az	��az	��azaz	��az	��az	��	��az	��az	��az	��azaz	��az	��az	��az	��az	��az@	��	�C	��	�#az	��	��azaz	��az	��	��az	��azaz	��	��az	��	�	��az	��azaz	��az	��az	��az	��az	��	��azaz	��az	��	��azaz	��	��azaz	��	��azaz	��	��azaz	��az	��az	��az	��	�az@az	�	�
az	�	�az	�az	�az	�az	�azaz	�az	�az	�az	�az	�az	�az	�	�azaz	�	�azaz	�az	�		�
azaz	�	�azaz@az	�az	�	�azaz	�	�azaz	�az	�	�azaz	�	�az	�az	�az	�az	�az	�azaz	�az	�az	�	� azaz	�!az	�"@azaz	�$	�%azaz	�&az	�'	�(az	�)az	�*azaz	�+	�,az	�-az	�.azaz	�/az	�0	�1az	�2az	�3az	�4azaz	�5	�6az	�7azaz	�8az	�9	�:azaz	�;az	�<az	�=az	�>az	�?az	�@	�Aaz	�Bazaz@az	�Daz	�E	�Fazaz	�Gaz	�H	�Iaz	�Jaz	�Kazaz	�L	�M	�y	�Naz	�O	�daz	�P	�Qazaz	�R	�Sazaz	�T	�Uazaz	�Vaz	�W	�Xazaz	�Yaz	�Zaz	�[az	�\az	�]	�^azaz	�_	�`azaz	�a	�bazaz	�c@az	�eazaz	�faz	�g	�hazaz	�iaz	�j	�kaz	�laz	�mazaz	�n	�oaz	�pazaz	�qaz	�r	�sazaz	�t	�uaz	�vazaz	�w	�xaz@azaz	�z	�{az	�|az	�}az	�~az	�az	ˀazaz	ˁ	˂azaz	˃az	˄	˅az	ˆazaz	ˇ	ˈazaz	ˉaz	ˊ	ˋaz	ˌazaz	ˍaz	ˎ	ˏaz@az	ˑ@	˒	�l	˓	�4	˔	�az	˕	˖azaz	˗	˘	˴	˙az	˚az	˛azaz	˜	˝az	˞az	˟az	ˠazaz	ˡ	ˢaz	ˣaz	ˤaz	˥az	˦az	˧az	˨az	˩az	˪az	˫az	ˬazaz	˭az	ˮ	˯azaz	˰az	˱az	˲az	˳az@	˵az	˶az	˷az	˸	��	˹	��az	˺	˻az	˼az	˽azaz	˾az	˿	�az	�azaz	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��	��az	��azaz@	��azaz	��az	��	��azaz	��az	��az	��	��az	��az	��az	��azaz	��	��az	��azaz	��	��az	��az	��azaz	��	��azaz	��az	��@az	��azaz	��	��	�az	��az	��	��az	��az	��az	��azaz	��	��az	��az	��azaz	�	�az	�azaz	�az	�az	�az	�	�azaz	�	�azaz@az	�	�azaz	�az	�az	�	�azaz	�	�azaz	�	�	azaz	�
	�az	�azaz	�
	�azaz	�az	�az	�	�az	�azaz@az	�	�azaz	�az	�	�az	�az	�azaz	�az	�	�azaz	�	� az	�!azaz	�"az	�#	�$az	�%azaz	�&az	�'	�(azaz	�)	�*azaz	�+	�,azaz	�-	�.azaz	�/	�0az	�1azaz	�2	�3azaz@	�5azaz	�6	�7azaz	�8az	�9	�:az	�;az	�<az	�=az	�>	�Uaz	�?	�@azaz	�A	�Bazaz	�Caz	�D	�Eazaz	�F	�Gazaz	�H	�Iaz	�Jaz	�Kazaz	�Laz	�Maz	�Naz	�Oaz	�P	�Qazaz	�Raz	�S	�Taz@az	�Vazaz	�Waz	�X	�Yazaz	�Z	�[az	�\azaz	�]	�^azaz	�_az	�`az	�aaz	�b	�cazaz	�daz	�eaz	�f	�gazaz	�haz	�iaz	�jaz	�kaz@	�maz	�nazaz	�o	�pazaz	�qaz	�r	�saz	�taz	�uazaz	�v	�waz	�xazaz	�yaz	�zaz	�{	�|az	�}azaz	�~	�az	̀azaz	́az	̂az	̃az	̄az	̅az	̆az	̇az	̈az	̉	̊azaz	̋	̌azaz	̍@az	̏@	̐@	̑@az@az	̓	̔@	̕@	̖@az@	̘	؂	̙	�~	̚	�b	̛az	̜az	̝	ш	̞	̱az	̟	̠azaz	̡	̢azaz	̣az	̤	̥azaz	̦az	̧	̨az	̩az	̪az	̫az	̬az	̭az	̮az	̯az	̰az�az	̲	Ξaz	̳	̴	�	̵	��	̶	��	̷az	̸	��	̹az	̺az	̻az	̼az	̽az	̾az	̿az	�az	�az	��az	��azv�az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azv�az	��azaz	��	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azv�az	��	��az	��	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azv�az	��	�	��az	��az	��az	��az	��az	��az	�az	�az	�az	�az	�az	�azv�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azv�az	�		��	�
	ͦ	�	͂	�	�E	�
	�1	�	�'	�	�	�az	�az	�az	�az	�	�	�az	�azaz	�v�az	�az	�	�	�azv�az	�azazv�	�az	� az	�!az	�"az	�#az	�$az	�%az	�&azv�az	�(az	�)az	�*az	�+az	�,az	�-az	�.az	�/az	�0azv�az	�2az	�3	�<	�4az	�5az	�6az	�7az	�8az	�9az	�:az	�;azv�az	�=az	�>az	�?az	�@az	�Aaz	�Baz	�Caz	�Dazv�az	�F	�d	�G	�Z	�H	�Q	�Iaz	�Jaz	�Kaz	�Laz	�Maz	�Naz	�Oaz	�Pazv�az	�Raz	�Saz	�Taz	�Uaz	�Vaz	�Waz	�Xaz	�Yazv�azaz	�[	�\az	�]az	�^az	�_az	�`az	�aaz	�baz	�cazv�az	�e	�oaz	�f	�gaz	�haz	�iaz	�jaz	�kaz	�laz	�maz	�nazv�az	�p	�y	�qaz	�raz	�saz	�taz	�uaz	�vaz	�waz	�xazv�az	�zaz	�{az	�|az	�}az	�~az	�az	̀az	́azv�az	̓	͚	̈́	͏az	ͅaz	͆	͇az	͈az	͉az	͊az	͋az	͌az	͍az	͎azv�azaz	͐	͑az	͒az	͓az	͔az	͕az	͖az	͗az	͘az	͙azv�az	͛az	͜az	͝az	͞az	͟az	͠az	͡az	͢az	ͣaz	ͤaz	ͥazv�az	ͧ	�	ͨ	ʹaz	ͩ	ͪaz	ͫaz	ͬaz	ͭaz	ͮaz	ͯaz	Ͱaz	ͱaz	Ͳaz	ͳazv�az	͵az	Ͷaz	ͷaz	͸az	͹az	ͺaz	ͻaz	ͼaz	ͽaz	;az	Ϳazv�azaz	�	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azv�az	��	�!	��	��	��	��	��	��az	��	��az	��az	��az	��az	��az	��az	��az	��az	��azv�az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azv�az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azv�az	��	�
az	�	�	�	�az	�az	�az	�az	�az	�az	�az	�az	�azv�az	�az	�az	�az	�az	�az	�az	�az	�az	�	azv�az	�	�	�az	�
az	�az	�az	�az	�az	�az	�az	�az	�azv�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	� azv�az	�"	�[	�#	�:	�$	�/	�%az	�&az	�'az	�(az	�)az	�*az	�+az	�,az	�-az	�.azv�az	�0az	�1az	�2az	�3az	�4az	�5az	�6az	�7az	�8az	�9azv�az	�;	�P	�<	�F	�=az	�>az	�?az	�@az	�Aaz	�Baz	�Caz	�Daz	�Eazv�az	�Gaz	�Haz	�Iaz	�Jaz	�Kaz	�Laz	�Maz	�Naz	�Oazv�az	�Qaz	�Raz	�Saz	�Taz	�Uaz	�Vaz	�Waz	�Xaz	�Yaz	�Zazv�az	�\	�s	�]	�haz	�^	�_az	�`az	�aaz	�baz	�caz	�daz	�eaz	�faz	�gazv�azaz	�i	�jaz	�kaz	�laz	�maz	�naz	�oaz	�paz	�qaz	�razv�az	�t	Ή	�u	�	�vaz	�waz	�xaz	�yaz	�zaz	�{az	�|az	�}az	�~azv�az	΀az	΁az	΂az	΃az	΄az	΅az	Άaz	·az	Έazv�az	Ί	Δ	΋az	Όaz	΍az	Ύaz	Ώaz	ΐaz	Αaz	Βaz	Γazv�az	Εaz	Ζaz	Ηaz	Θaz	Ιaz	Κaz	Λaz	Μaz	Νazv�azaz	Ο	Π	ί	Ρaz	΢az	Σaz	Τaz	Υaz	Φaz	Χaz	Ψaz	Ωaz	Ϊaz	Ϋaz	άaz	έazaz	ήazw	ΰ	К	α	��	β	�N	γ	�	δ	��	ε	��	ζ	��	ηaz	θaz	ιaz	κaz	λaz	μ	ο	νu�az	ξazu�	�	��	�	��azu�azu�az	��u�az	��az	��az	��az	��az	��az	��az	��az	��azu�az	��	��	��az	��az	��az	��az	��az	��az	��az	��azu�az	��az	��az	��az	��az	��az	��az	��az	��azu�az	��	�	��	��	��az	��az	��az	��az	��az	��az	��az	��azu�az	��az	��az	��az	��az	��az	��az	��az	��azu�az	�	�	�az	�az	�az	�az	�az	�az	�az	�azu�az	�az	�az	�az	�az	�az	�az	�az	�azu�az	�		�'	�
	�	�	�	�az	�
az	�az	�az	�az	�az	�az	�azu�az	�az	�az	�az	�az	�az	�az	�az	�azu�azaz	�	�az	� az	�!az	�"az	�#az	�$az	�%az	�&azu�az	�(	�;	�)	�2	�*az	�+az	�,az	�-az	�.az	�/az	�0az	�1azu�az	�3az	�4az	�5az	�6az	�7az	�8az	�9az	�:azu�az	�<	�E	�=az	�>az	�?az	�@az	�Aaz	�Baz	�Caz	�Dazu�az	�Faz	�Gaz	�Haz	�Iaz	�Jaz	�Kaz	�Laz	�Mazu�az	�O	ϕ	�P	�n	�Q	�[az	�R	�Saz	�Taz	�Uaz	�Vaz	�Waz	�Xaz	�Yaz	�Zazu�az	�\	�e	�]az	�^az	�_az	�`az	�aaz	�baz	�caz	�dazu�az	�faz	�gaz	�haz	�iaz	�jaz	�kaz	�laz	�mazu�az	�o	ς	�p	�y	�qaz	�raz	�saz	�taz	�uaz	�vaz	�waz	�xazu�az	�zaz	�{az	�|az	�}az	�~az	�az	πaz	ρazu�az	σ	ό	τaz	υaz	φaz	χaz	ψaz	ωaz	ϊaz	ϋazu�az	ύaz	ώaz	Ϗaz	ϐaz	ϑaz	ϒaz	ϓaz	ϔazu�az	ϖ	ϴ	ϗ	ϡaz	Ϙ	ϙaz	Ϛaz	ϛaz	Ϝaz	ϝaz	Ϟaz	ϟaz	Ϡazu�az	Ϣ	ϫ	ϣaz	Ϥaz	ϥaz	Ϧaz	ϧaz	Ϩaz	ϩaz	Ϫazu�az	Ϭaz	ϭaz	Ϯaz	ϯaz	ϰaz	ϱaz	ϲaz	ϳazu�az	ϵ	Ͽaz	϶	Ϸaz	ϸaz	Ϲaz	Ϻaz	ϻaz	ϼaz	Ͻaz	Ͼazu�az	�	��	�az	��az	��az	��az	��az	��az	��az	��azu�az	��az	��az	��az	��az	��az	��az	��az	��azu�az	��	�E	��	�	��	��	��	��az	��	��az	��az	��az	��az	��az	��az	��az	��azu�azaz	��	��az	��az	��az	��az	��az	��az	��az	��azu�az	��	�az	��	��az	��az	��az	��az	��az	��az	��az	��azu�azaz	�	�az	�az	�az	�az	�az	�az	�az	�azu�az	�	�	�	�	�	�	�az	�az	�az	�az	�az	�az	�	az	�
azu�az	�az	�
az	�az	�az	�az	�az	�az	�azu�az	�az	�az	�az	�az	�az	�az	�az	�az	�azu�az	�	�2	� 	�)	�!az	�"az	�#az	�$az	�%az	�&az	�'az	�(azu�az	�*az	�+az	�,az	�-az	�.az	�/az	�0az	�1azu�az	�3	�<	�4az	�5az	�6az	�7az	�8az	�9az	�:az	�;azu�az	�=az	�>az	�?az	�@az	�Aaz	�Baz	�Caz	�Dazu�az	�F	�p	�G	�e	�H	�R	�Iaz	�Jaz	�Kaz	�Laz	�Maz	�Naz	�Oaz	�Paz	�Qazu�az	�S	�\	�Taz	�Uaz	�Vaz	�Waz	�Xaz	�Yaz	�Zaz	�[azu�az	�]az	�^az	�_az	�`az	�aaz	�baz	�caz	�dazu�az	�faz	�gaz	�haz	�iaz	�jaz	�kaz	�laz	�maz	�naz	�oazu�az	�q	І	�r	�|	�saz	�taz	�uaz	�vaz	�waz	�xaz	�yaz	�zaz	�{azu�az	�}az	�~az	�az	Ѐaz	Ёaz	Ђaz	Ѓaz	Єaz	Ѕazu�az	Їaz	Ј	Б	Љaz	Њaz	Ћaz	Ќaz	Ѝaz	Ўaz	Џaz	Аazu�az	Вaz	Гaz	Дaz	Еaz	Жaz	Зaz	Иaz	Йazu�az	Л	�	М	оaz	Н	О	Щ	Пaz	Рaz	Сaz	Тaz	Уaz	Фaz	Хaz	Цaz	Чaz	Шazu�az	Ъ	д	Ыaz	Ьaz	Эaz	Юaz	Яaz	аaz	бaz	вaz	гazu�az	еaz	жaz	зaz	иaz	йaz	кaz	лaz	мaz	нazu�az	п	��	�	��az	�	��az	��az	��az	��az	��az	��az	��az	��az	��azu�az	��	��	��az	��az	��az	��az	��az	��az	��az	��az	��azu�az	��az	��az	��az	��az	��az	��az	��az	��az	��azu�az	��	��	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azu�az	��	�	��az	��az	��az	��az	��az	��az	��az	�az	�azu�az	�az	�az	�az	�az	�az	�az	�az	�az	�azu�az	�	�O	�	�$	�	�	�	�	�az	�az	�az	�	az	�
az	�az	�az	�
az	�azu�az	�az	�az	�az	�az	�az	�az	�az	�az	�azu�azaz	�	�az	�az	�az	�az	�az	� az	�!az	�"az	�#azu�az	�%	�:	�&	�0	�'az	�(az	�)az	�*az	�+az	�,az	�-az	�.az	�/azu�az	�1az	�2az	�3az	�4az	�5az	�6az	�7az	�8az	�9azu�az	�;	�E	�<az	�=az	�>az	�?az	�@az	�Aaz	�Baz	�Caz	�Dazu�az	�Faz	�Gaz	�Haz	�Iaz	�Jaz	�Kaz	�Laz	�Maz	�Nazu�az	�P	�g	�Q	�\az	�R	�Saz	�Taz	�Uaz	�Vaz	�Waz	�Xaz	�Yaz	�Zaz	�[azu�azaz	�]	�^az	�_az	�`az	�aaz	�baz	�caz	�daz	�eaz	�fazu�az	�h	�}	�i	�s	�jaz	�kaz	�laz	�maz	�naz	�oaz	�paz	�qaz	�razu�az	�taz	�uaz	�vaz	�waz	�xaz	�yaz	�zaz	�{az	�|azu�azaz	�~	�az	рaz	сaz	тaz	уaz	фaz	хaz	цaz	чazu�az	щ	��	ъ	Ҟ	ы	�J	ь	�	э	��	ю	ѩ	я	ќaz	ѐ	ёaz	ђaz	ѓaz	єaz	ѕaz	іaz	їaz	јaz	љaz	њaz	ћazv�azaz	ѝ	ўaz	џaz	Ѡaz	ѡaz	Ѣaz	ѣaz	Ѥaz	ѥaz	Ѧaz	ѧaz	Ѩazv�az	Ѫ	��	ѫ	��	Ѭ	ѷ	ѭaz	Ѯaz	ѯaz	Ѱaz	ѱaz	Ѳaz	ѳaz	Ѵaz	ѵaz	Ѷazv�az	Ѹaz	ѹaz	Ѻaz	ѻaz	Ѽaz	ѽaz	Ѿaz	ѿaz	�az	�azv�az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azv�az	��	��	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azv�az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azv�az	��	�	��	�az	��	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	�azv�azaz	�	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azv�az	�	�az	�	�az	�az	�az	�	az	�
az	�az	�az	�
az	�az	�az	�azv�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azv�az	�	�.	� azaz	�!	�"az	�#az	�$az	�%az	�&az	�'az	�(az	�)az	�*az	�+az	�,az	�-azv�az	�/az	�0	�=	�1az	�2az	�3az	�4az	�5az	�6az	�7az	�8az	�9az	�:az	�;az	�<azv�az	�>az	�?az	�@az	�Aaz	�Baz	�Caz	�Daz	�Eaz	�Faz	�Gaz	�Haz	�Iazv�azaz	�K	�L	�v	�M	�[	�Naz	�Oaz	�Paz	�Qaz	�Raz	�Saz	�Taz	�Uaz	�Vaz	�Waz	�Xaz	�Yaz	�Zazazt�	�\	�iaz	�]	�^az	�_az	�`az	�aaz	�baz	�caz	�daz	�eaz	�faz	�gaz	�hazt�azaz	�j	�kaz	�laz	�maz	�naz	�oaz	�paz	�qaz	�raz	�saz	�taz	�uazt�az	�waz	�x	҅az	�y	�zaz	�{az	�|az	�}az	�~az	�az	Ҁaz	ҁaz	҂az	҃az	҄azt�az	҆	Ғ	҇az	҈az	҉az	Ҋaz	ҋaz	Ҍaz	ҍaz	Ҏaz	ҏaz	Ґaz	ґazt�az	ғaz	Ҕaz	ҕaz	Җaz	җaz	Ҙaz	ҙaz	Қaz	қaz	Ҝaz	ҝazt�az	ҟ	Ӹ	Ҡ	Ұ	ҡaz	Ңaz	ңaz	Ҥaz	ҥaz	Ҧaz	ҧaz	Ҩaz	ҩaz	Ҫaz	ҫaz	Ҭaz	ҭaz	Үaz	үaz��az	ұ	�S	Ҳ	�$	ҳ	��	Ҵ	��	ҵaz	Ҷaz	ҷaz	Ҹaz	ҹaz	Һaz	һaz	Ҽ	��	ҽ	�az	Ҿ	ҿazazt�	�az	��azmaz	��	��	��azm	��maz	��az	��azt�az	��	��	��	��	��az	��az	��az	��az	��az	��az	��az	��az	��azmaz	��az	��az	��az	��az	��az	��az	��az	��az	��azmazaz	��	��az	��az	��az	��az	��az	��az	��az	��az	��azmaz	��	�	��	�	��az	��az	��az	��az	��az	��az	��az	�az	�az	�azmazaz	�	�az	�az	�az	�az	�az	�az	�az	�az	�azmaz	�	�az	�	�az	�az	�az	�	az	�
az	�az	�az	�
az	�azmaz	�	�	�az	�az	�az	�az	�az	�az	�az	�az	�azmaz	�az	�az	�az	�az	�az	� az	�!az	�"az	�#azmaz	�%az	�&	�G	�'	�2az	�(	�)az	�*az	�+az	�,az	�-az	�.az	�/az	�0az	�1azmaz	�3	�=	�4az	�5az	�6az	�7az	�8az	�9az	�:az	�;az	�<azmaz	�>az	�?az	�@az	�Aaz	�Baz	�Caz	�Daz	�Eaz	�Fazmaz	�Hazaz	�I	�Jaz	�Kaz	�Laz	�Maz	�Naz	�Oaz	�Paz	�Qaz	�Razt�az	�T	ӆ	�U	�b	�Vazaz	�W	�Xaz	�Yaz	�Zaz	�[az	�\az	�]az	�^az	�_az	�`az	�aazmaz	�c	�o	�daz	�eaz	�faz	�gaz	�haz	�iaz	�jaz	�kaz	�laz	�maz	�nazmaz	�p	�{	�qaz	�raz	�saz	�taz	�uaz	�vaz	�waz	�xaz	�yaz	�zazmaz	�|az	�}az	�~az	�az	Ӏaz	Ӂaz	ӂaz	Ӄaz	ӄaz	Ӆazmaz	Ӈ	Ӕaz	ӈaz	Ӊ	ӊaz	Ӌaz	ӌaz	Ӎaz	ӎaz	ӏaz	Ӑaz	ӑaz	Ӓaz	ӓazmaz	ӕaz	Ӗaz	ӗaz	Әaz	әaz	Ӛaz	ӛaz	Ӝaz	ӝaz	Ӟaz	ӟaz	Ӡaz	ӡaz	Ӣaz	ӣaz	Ӥaz	ӥaz	Ӧ	ӵ	ӧaz	Өaz	өaz	Ӫaz	ӫaz	Ӭaz	ӭaz	Ӯaz	ӯ	Ӳ	Ӱ	ӱazmazm	ӳ	Ӵmazmazaz	Ӷ	ӷazazm	ӹ	�	Ӻ	�	ӻ	��	Ӽ	��az	ӽ	Ӿaz	ӿaz	�az	�az	��az	��az	��az	��az	��az	��az	��azv�az	��	��	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az��az	��	��az	��	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azv�azaz	��	��az	��az	��az	�az	�az	�az	�az	�az	�az	�az	�azv�az	�	�az	�	�az	�az	�az	�az	�az	�az	�az	�az	�az	�	az	�
az	�azv�azaz	�
	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az��az	�	�I	�	��	�	Ԕ	�	�}	�	�r	� az	�!az	�"az	�#az	�$	�H	�%	�:	�&	�0	�'	�-	�(	�*az	�)azv�	�+	�,azv�azt�az	�.az	�/v�t�	�1	�4	�2azaz	�3t�az	�5	�8	�6	�7��azaz��az	�9u�az	�;	�D	�<	�?	�=az	�>azu�az	�@	�B	�Aazwaz	�Cv�u�azaz	�Eaz	�Faz	�Gazt�	�I	�`	�J	�U	�K	�P	�L	�Naz	�Mazv�	�Ov�azv�	�Q	�Saz	�Razt�az	�Taz�w	�V	�\	�W	�Yu�	�Xazu�	�Z	�[azu�u�azaz	�]	�^	�_azv�t��w	�a	�gaz	�b	�c	�eaz	�du�azu�	�fu�az	�h	�n	�i	�ku�	�jazu�	�l	�mazu���u�	�oaz	�p	�qu�azv�azaz	�s	�taz	�uaz	�vaz	�waz	�xaz	�yaz	�zaz	�{az	�|azu�az	�~	ԉ	�az	Ԁaz	ԁaz	Ԃaz	ԃaz	Ԅaz	ԅaz	Ԇaz	ԇaz	Ԉazwaz	Ԋaz	ԋaz	Ԍaz	ԍaz	Ԏaz	ԏaz	Ԑaz	ԑaz	Ԓaz	ԓaz��az	ԕ	Զ	Ԗ	ԫ	ԗ	ԡ	Ԙaz	ԙaz	Ԛaz	ԛaz	Ԝaz	ԝaz	Ԟaz	ԟaz	Ԡaz�waz	Ԣaz	ԣaz	Ԥaz	ԥaz	Ԧaz	ԧaz	Ԩaz	ԩaz	Ԫaz��azaz	Ԭ	ԭaz	Ԯaz	ԯaz	԰az	Աaz	Բaz	Գaz	Դaz	Եaz�waz	Է	��	Ըaz	Թaz	Ժaz	Իaz	Լaz	Խaz	Ծaz	Կaz	�az	�azu�azaz	��	��az	��az	��az	��az	��az	��az	��az	��az	��az�0az	��	�	��	��	��	��	��	��	��az	��az	��az	��az	��az	��az	��az	��az	��az�waz	��az	��az	��az	��az	��az	��az	��az	��az	��azwaz	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azw8az	��	�	��az	��az	��az	�az	�az	�az	�az	�az	�az	�azu�azaz	�	�az	�az	�az	�az	�az	�az	�az	�az	�azu�az	�	�	�	az	�
	�	�az	�az	�
az	�az	�az	�az	�az	�az	�azu�az	�az	�az	�az	�az	�az	�az	�az	�az	�azv�az	�	�4	� 	�*	�!az	�"az	�#az	�$az	�%az	�&az	�'az	�(az	�)azu�az	�+az	�,az	�-az	�.az	�/az	�0az	�1az	�2az	�3azv�az	�5	�?	�6az	�7az	�8az	�9az	�:az	�;az	�<az	�=az	�>azwaz	�@az	�Aaz	�Baz	�Caz	�Daz	�Eaz	�Faz	�Gaz	�Haz�az	�J	Ն	�K	�n	�L	�b	�Maz	�N	�X	�Oaz	�Paz	�Qaz	�Raz	�Saz	�Taz	�Uaz	�Vaz	�Wazwaz	�Yaz	�Zaz	�[az	�\az	�]az	�^az	�_az	�`az	�aazwaz	�caz	�daz	�eaz	�faz	�gaz	�haz	�iaz	�jaz	�kaz	�laz	�mazwaz	�oaz	�p	�{	�qaz	�raz	�saz	�taz	�uaz	�vaz	�waz	�xaz	�yaz	�zazwaz	�|az	�}az	�~az	�az	Հaz	Ձaz	Ղaz	Ճaz	Մaz	Յaz�az	Շ	ի	Ո	Քaz	Չ	Պaz	Ջaz	Ռaz	Սaz	Վaz	Տaz	Րaz	Ցaz	Ւaz	Փazv�az	Օ	ՠ	Ֆaz	՗az	՘az	ՙaz	՚az	՛az	՜az	՝az	՞az	՟az��az	աaz	բaz	գaz	դaz	եaz	զaz	էaz	ըaz	թaz	ժaz��az	լ	��	խ	ո	ծaz	կaz	հaz	ձaz	ղaz	ճaz	մaz	յaz	նaz	շazv�az	չaz	պaz	ջaz	ռaz	սaz	վaz	տaz	�az	�az	��az��azaz	��	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az��az	��	ׅ	��azaz	��	��	��	��	�f	��	�.	��	�	��	�	��	��	��	��	��az	��az	��az	��az	��	��az	��	��az	��azaz��az	��	��az	��azazj	��az	��az	��az	��az	��az	��az	��az	��azjazaz	��	��az	��az	��az	��az	�az	�az	�az	�azjaz	�azaz	�	�az	�az	�az	�az	�az	�az	�az	�azjaz	�	�	�	�az	�	�az	�	az	�
az	�az	�az	�
az	�az	�azw�azaz	�	�az	�az	�az	�az	�az	�az	�az	�azjazaz	�	�	�%	�az	�az	�az	� az	�!az	�"az	�#az	�$azw�az	�&az	�'az	�(az	�)az	�*az	�+az	�,az	�-azjaz	�/	�Eaz	�0	�1	�;az	�2	�3az	�4az	�5az	�6az	�7az	�8az	�9az	�:azjaz	�<az	�=az	�>az	�?az	�@az	�Aaz	�Baz	�Caz	�Dazjaz	�F	�[	�G	�Qaz	�H	�Iaz	�Jaz	�Kaz	�Laz	�Maz	�Naz	�Oaz	�Paz��azaz	�R	�Saz	�Taz	�Uaz	�Vaz	�Waz	�Xaz	�Yaz	�Zazjazaz	�\az	�]	�^az	�_az	�`az	�aaz	�baz	�caz	�daz	�eazjaz	�g	ֲ	�h	֑	�i	�}az	�j	�k	�t	�laz	�maz	�naz	�oaz	�paz	�qaz	�raz	�saz��az	�uaz	�vaz	�waz	�xaz	�yaz	�zaz	�{az	�|azjazaz	�~	�	ֈ	րaz	ցaz	ւaz	փaz	քaz	օaz	ֆaz	ևazjaz	։az	֊az	֋az	֌az	֍az	֎az	֏az	֐azjaz	֒	֧	֓	֝	֔az	֕az	֖az	֗az	֘az	֙az	֚az	֛az	֜azjazaz	֞	֟az	֠az	֡az	֢az	֣az	֤az	֥az	֦azw�azaz	֨	֩az	֪az	֫az	֬az	֭az	֮az	֯az	ְaz	ֱazjaz	ֳ	��	ִ	��	ֵaz	ֶ	ֿ	ַaz	ָaz	ֹaz	ֺaz	ֻaz	ּaz	ֽaz	־azw�az	�az	�az	��az	��az	��az	��az	��az	��azjaz	��azaz	��	��az	��az	��az	��az	��az	��az	��az	��azjaz	��	��	��azaz	��	��az	��az	��az	��az	��az	��az	��az	��azjaz	��azaz	��	��az	��az	��az	��az	��az	��az	��az	��azjaz	��	�G	��	�#	��	�	��	�	��	�	��az	��az	��az	��az	��az	�az	�az	�az	�azjaz	�	�	�az	�az	�az	�az	�az	�az	�az	�azw�az	�az	�az	�az	�az	�az	�	az	�
az	�azjaz	�
azaz	�	�az	�az	�az	�az	�az	�az	�az	�azjazaz	�az	�	�az	�az	�az	�az	�az	�az	� az	�!az	�"azjaz	�$	�;	�%	�0az	�&	�'az	�(az	�)az	�*az	�+az	�,az	�-az	�.az	�/azw�azaz	�1	�2az	�3az	�4az	�5az	�6az	�7az	�8az	�9az	�:azjazaz	�<az	�=	�>az	�?az	�@az	�Aaz	�Baz	�Caz	�Daz	�Eaz	�Fazjaz	�H	�l	�I	�`	�J	�Uaz	�K	�Laz	�Maz	�Naz	�Oaz	�Paz	�Qaz	�Raz	�Saz	�Tazjazaz	�V	�Waz	�Xaz	�Yaz	�Zaz	�[az	�\az	�]az	�^az	�_azjaz	�aazaz	�b	�caz	�daz	�eaz	�faz	�gaz	�haz	�iaz	�jaz	�kazjaz	�m	�yaz	�naz	�o	�paz	�qaz	�raz	�saz	�taz	�uaz	�vaz	�waz	�xazjaz	�zazaz	�{	�|az	�}az	�~az	�az	׀az	ׁaz	ׂaz	׃az	ׄazjaz	׆az	ׇ	�R	׈	�	׉	��	׊	׹	׋	ע	׌	ח	׍az	׎az	׏az	אaz	בaz	גaz	דaz	הazaz	ו	זw�azw�	טaz	יaz	ךaz	כaz	לaz	םaz	מaz	ןaz	נaz	סazw�az	ף	׮	פaz	ץaz	צaz	קaz	רaz	שaz	תaz	׫az	׬az	׭azw�az	ׯaz	װaz	ױaz	ײaz	׳az	״az	׵az	׶az	׷az	׸azw�az	׺az	׻	��	׼az	׽az	׾az	׿az	�az	�az	��az	��az	��az	��azw�az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azw�az	��	�	��	��	��	��	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azw�az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azw�az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	�azw�az	�azaz	�	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azw�az	�	�+	�	�	�	�az	�	�az	�	az	�
az	�az	�az	�
az	�az	�az	�az	�azw�azaz	�	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azw�azaz	�	� az	�!az	�"az	�#az	�$az	�%az	�&az	�'az	�(az	�)az	�*azw�az	�,	�9	�-az	�.az	�/az	�0az	�1az	�2az	�3az	�4az	�5az	�6az	�7az	�8azw�az	�:	�F	�;az	�<az	�=az	�>az	�?az	�@az	�Aaz	�Baz	�Caz	�Daz	�Eazw�az	�Gaz	�Haz	�Iaz	�Jaz	�Kaz	�Laz	�Maz	�Naz	�Oaz	�Paz	�Qazw�azaz	�S	�Taz	�Uaz	�Vaz	�Waz	�Xaz	�Yaz	�Zaz	�[az	�\az	�]az	�^az	�_az	�`az	�aaz�az	�cazaz	�d	�eaz	�faz	�gaz	�haz	�iaz	�jaz	�kaz	�laz	�maz	�naz	�oaz	�paz	�qazaz	�r	�saz	�t	�yaz	�u	�vaz	�waz	�xazv�azaz	�z	�{az	�|az	�}azv�az	�@	؀@	؁@az@|	؃	؄@	؅@	؆@	؇@	؈az	؉az	؊	�c	؋az	،	ن	؍	�az	؎	؏	��	ؐ	ثaz	ؑ	ؒaz	ؓaz	ؔaz	ؕazaz	ؖaz	ؗaz	ؘaz	ؙ	ؚazaz	؛	؜az	؝azaz	؞	؟az	ؠaz	ءaz	آaz	أaz	ؤaz	إaz	ئazaz	ا	بaz	ةaz	تaz@az	جaz	ح	��	خaz	دaz	ذaz	رaz	زaz	سaz	شaz	صaz	ضaz	طaz	ظazaz	عaz	غaz	ػaz	ؼaz	ؽaz	ؾaz	ؿaz	�az	�az	��	��az	��az	��az@az	��az	��az	��azaz	��	��az	��az	��az	��az	��az	��az	��az	��azaz	��	��az	��azaz	��az	��az	��	��az	��az	��az	��az	��az	��az@azaz	��az	��	��az	��azaz	��	��azaz	��az	��	��az	��az	��azaz	��az	��az	��az	��	��azaz	��	��az	��az	��az	��az	�azaz	�az	�	�az	�az	�az@az	�	�4az	�	�	�	�azaz	�	�azaz	�az	�	�az	�az	�az	�az	�az	�	az	�
az	�azaz	�	�
az	�azaz	�	�azaz	�	�azaz	�	�az	�az	�az	�az	�az@az	�az	�az	�az	�az	�azaz	�az	� 	�!az	�"az	�#az	�$az	�%az	�&az	�'azaz	�(	�)azaz	�*az	�+	�,az	�-azaz	�.	�/azaz	�0	�1az	�2az	�3az@az	�5az	�6	�Qaz	�7	�8az	�9az	�:azaz	�;az	�<az	�=	�>az	�?az	�@az	�Aaz	�Bazaz	�C	�Dazaz	�E	�Fazaz	�Gaz	�Haz	�I	�Jaz	�Kazaz	�L	�Mazaz	�Naz	�Oaz	�Paz@	�R	�l	�Sazaz	�T	�Uazaz	�Vaz	�Waz	�X	�Yaz	�Zaz	�[azaz	�\az	�]	�^azaz	�_az	�`	�aaz	�baz	�cazaz	�daz	�e	�faz	�gazaz	�h	�iaz	�jaz	�kaz@az	�mazaz	�naz	�oaz	�paz	�q	�raz	�saz	�taz	�uaz	�vaz	�waz	�xazaz	�y	�zazaz	�{	�|azaz	�}az	�~az	�az	ـ	فaz	قaz	كaz	لaz	مaz@az	ه	�)	و	�	ى	٥az	يaz	ً	ٌaz	ٍazaz	َ	ُazaz	ِ	ّaz	ْaz	ٓaz	ٔaz	ٕaz	ٖazaz	ٗ	٘az	ٙazaz	ٚ	ٛazaz	ٜ	ٝazaz	ٞ	ٟaz	٠az	١az	٢az	٣az	٤az@az	٦azaz	٧az	٨az	٩	٪azaz	٫	٬azaz	٭	ٮaz	ٯazaz	ٰaz	ٱaz	ٲ	ٳaz	ٴaz	ٵaz	ٶaz	ٷaz	ٸaz	ٹaz	ٺaz	ٻaz	ټazaz	ٽ	پaz	ٿaz	�az@az	��	�	��az	��	��	��azaz	��	��az	��az	��az	��az	��az	��az	��az	��az	��azaz	��	��az	��az	��azaz	��	��azaz	��	��az	��azaz	��az	��az	��az	��az	��@az	��az	��az	��az	��az	��azaz	��	��az	��azaz	��	��az	��az	��azaz	��az	��az	��az	��az	��	��azaz	��	��azaz	��az	��	�az	�az	�az@azaz	�az	�az	�	�azaz	�az	�	�	�	�az	�az	�az	�az	�az	�azaz	�	�azaz	�az	�	az	�
az	�az	�	�
az	�azaz	�	�azaz	�az	�az	�az@az	�	�az	�az	�az	�az	�az	�az	�azaz	�az	�az	�	� az	�!az	�"az	�#az	�$az	�%az	�&az	�'az	�(az@az	�*az	�+	�Gaz	�,	�-az	�.az	�/az	�0az	�1azaz	�2	�3az	�4az	�5az	�6az	�7azaz	�8	�9az	�:azaz	�;	�<azaz	�=	�>az	�?az	�@azaz	�A	�Baz	�Caz	�Daz	�Eaz	�Faz@azaz	�Haz	�I	�Jaz	�Kaz	�Lazaz	�M	�Naz	�Oaz	�Paz	�Qaz	�Raz	�Saz	�Tazaz	�U	�Vaz	�Wazaz	�X	�Yazaz	�Z	�[azaz	�\	�]az	�^azaz	�_az	�`az	�aaz	�baz@	�daz	�eaz	�f	ڠaz	�g	�h	ڄ	�iazaz	�jaz	�kaz	�l	�mazaz	�naz	�oaz	�p	�qaz	�raz	�saz	�tazaz	�u	�vaz	�waz	�xaz	�yaz	�zazaz	�{	�|azaz	�}	�~azaz	�az	ڀ	ځaz	ڂaz	ڃaz@azaz	څaz	چ	ڇaz	ڈaz	ډazaz	ڊ	ڋaz	ڌaz	ڍaz	ڎaz	ڏaz	ڐaz	ڑazaz	ڒaz	ړ	ڔaz	ڕazaz	ږ	ڗazaz	ژaz	ڙ	ښaz	ڛaz	ڜaz	ڝaz	ڞaz	ڟaz@az	ڡaz	ڢazaz	ڣ	ڤazaz	ڥ	ڦaz	ڧazaz	ڨaz	کaz	ڪaz	ګ	ڬaz	ڭaz	ڮazaz	گ	ڰaz	ڱaz	ڲazaz	ڳ	ڴaz	ڵaz	ڶazaz	ڷ	ڸaz	ڹaz	ںaz	ڻaz	ڼaz	ڽaz@az	ڿ	�u	�	�p	�	��	��@	��@	��@	��@	��azaz	��az	��	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��	��az	��	��	��	��	��az	��azb�az	��maz	��az	��azv�t�	��	��	��	��	��	��	��	��gQazazgC	��	��azwjj	��az	��azw�v�	��az	��az	��	��u�kXubv�	��@	��@	��@	��@	��az	�az	�az	�	�1	�	�&az	�	�az	�	�	�az	�az	�	�	�	�	�	�	�	�	�	�azw*az��	�	�azv�gQaz	�	�	�		�
t�azu�m	�	�
gCb�v�j	�	�az	�	�	�wUwcwaz	�	�az	�wu�	�	�mv�v�az	�azaz	�	�az	�az�az	�azaz	� 	�!az	�"az	�#az	�$az	�%az��az	�'az	�(az	�)az	�*az	�+az	�,az	�-az	�.az	�/az	�0azv�az	�2	�[	�3	�Q	�4az	�5az	�6az	�7az	�8az	�9az	�:az	�;az	�<az	�=az	�>az	�?az	�@az	�Aaz	�Baz	�Caz	�Daz	�Eaz	�Fazaz	�Gaz	�H	�Iaz	�Jaz	�Kaz	�Lazaz	�M	�Naz	�Oazaz	�P��az	�Raz	�Saz	�Taz	�Uaz	�Vaz	�Waz	�Xaz	�Yaz	�Zazazj	�\az	�]az	�^az	�_az	�`az	�aazaz	�b	�c	�i	�d	�g	�e	�fwv�kXazaz	�hv�u�	�j	�m	�k	�lv�azazv�	�n	�ow8azazb�	�q�'	�r@	�s@	�t@��@	�v	�{@	�w	�x@	�y@	�z@az@	�|	ۀ	�}@	�~@	�@�E@	ہ	ܚ	ۂ	�	ۃ	�	ۄ	��	ۅaz	ۆaz	ۇaz	ۈ	۝	ۉ	ې	ۊaz	ۋazaz	ی	ۍaz	ێaz	ۏazv�az	ۑ	ۗaz	ے	ۓaz	۔azaz	ە	ۖazv�azaz	ۘ	ۙaz	ۚaz	ۛaz	ۜazjaz	۞azaz	۟	۠az	ۡazaz	ۢ	ۣaz	ۤaz	ۥaz	ۦ	��	ۧ	�	ۨ	۱	۩	۬	۪az	۫azu�v�	ۭ	ۯ	ۮazkXaz	۰azazu�	۲	۾	۳az	۴azv�	۵	۶az	۷az	۸az	۹az	ۺaz	ۻaz	ۼaz	۽azv�az	ۿaz	�azb�az	��	��	��az	��az	��azjaz	��	��	��az	��azv�az	��az	��azgCaz	��	��	��	��	��az	��az	��azv�azaz	��	��az	��azt�az	��	��	��	��	��az	��azv�az	��az	��azubm	��	��	��az	��azupv�	��az	��azazb�	��	��	��az	��azaz	��	��az	��az	��azv�az	��	�az	��	��az	��azaz	��	��azv�azaz	�	�az	�az	�	�	�azjaz	�azv�az	�az	�	�	�az	�azaz	�	�az	�az	�azv�az	�	�
az	�	�	az	�
azaz	�	�azv�azaz	�	�az	�az	�	�	�azjaz	�azv�azaz	�	�	�r	�	�E	�az	�az	�	�0	�	�#	�az	�azaz	�	� az	�!az	�"azv�az	�$	�*az	�%	�&az	�'azaz	�(	�)azv�azaz	�+	�,az	�-az	�.az	�/azjaz	�1	�8	�2az	�3azaz	�4	�5az	�6az	�7azv�az	�9	�?az	�:	�;az	�<azaz	�=	�>azv�azaz	�@	�Aaz	�Baz	�Caz	�Dazjaz	�Faz	�Gaz	�H	�]	�I	�P	�Jaz	�Kazaz	�L	�Maz	�Naz	�Oazv�az	�Q	�Waz	�R	�Saz	�Tazaz	�U	�Vazv�azaz	�X	�Yaz	�Zaz	�[az	�\azjaz	�^	�e	�_az	�`azaz	�a	�baz	�caz	�dazv�az	�f	�laz	�g	�haz	�iazaz	�j	�kazv�azaz	�m	�naz	�oaz	�paz	�qazjaz	�saz	�taz	�uaz	�vaz	�w	�~	�xaz	�yazaz	�z	�{az	�|az	�}azv�az	�	ܔaz	܀	܁az	܂azaz	܃	܄az	܅az	܆az	܇az	܈az	܉az	܊az	܋az	܌az	܍az	܎az	܏az	ܐaz	ܑaz	ܒazv�	ܓv�azaz	ܕ	ܖaz	ܗaz	ܘaz	ܙazjaz	ܛ	ܶaz	ܜ	ܝaz	ܞaz	ܟaz	ܠaz	ܡaz	ܢ	ܩ	ܣaz	ܤazaz	ܥ	ܦaz	ܧaz	ܨazv�az	ܪ	ܰaz	ܫ	ܬaz	ܭazaz	ܮ	ܯazv�azaz	ܱ	ܲaz	ܳaz	ܴaz	ܵazjazaz	ܷaz	ܸ	ܹ	�	ܺaz	ܻ	��	ܼ	��	ܽ	��	ܾaz	ܿazaz	�	�az	��az	��azv�az	��	��az	��	��az	��azaz	��	��azv�azaz	��	��az	��az	��az	��azjaz	��	��	��az	��azaz	��	��az	��az	��azv�azaz	��az	��	��az	��az	��az	��azjaz	��az	��	��	��az	��azaz	��	��az	��az	��azv�az	��	��az	��	��az	��azaz	��	��azv�azaz	��	��az	��az	��az	�azjaz	�	�-	�	�	�	�	�	�	�az	�azaz	�	�az	�az	�azv�azaz	�az	�	�az	�az	�az	�azjaz	�		�	�
az	�azaz	�	�
az	�az	�azv�az	�	�az	�	�az	�azaz	�	�azv�azaz	�	�az	�az	�az	�azjaz	�az	�	�&	� az	�!azaz	�"	�#az	�$az	�%azv�azaz	�'az	�(	�)az	�*az	�+az	�,azjaz	�.	��	�/	�D	�0	�7	�1az	�2azaz	�3	�4az	�5az	�6azv�az	�8	�>az	�9	�:az	�;azaz	�<	�=azv�azaz	�?	�@az	�Aaz	�Baz	�Cazjazaz	�E	�Faz	�Gaz	�Haz	�Iaz	�J	ݽ	�K	ݜ	�L	�haz	�M	�N	�Taz	�O	�Paz	�Qazaz	�Raz	�Sazb�	�U	�_	�V	�[az	�W	�Xaz	�Y	�Zb�azazb�	�\az	�]az	�^azb�az	�`	�d	�aaz	�baz	�cazazb�	�eaz	�faz	�gazb�az	�i	݁	�j	�paz	�k	�lazaz	�maz	�naz	�oazv�	�q	�y	�raz	�s	�v	�tazaz	�uazv�	�waz	�xazazv�	�zaz	�{	�~az	�|	�}azazv�az	�	݀azv�az	݂	ݖ	݃	ݑ	݄	݊az	݅	݆	݈	݇azv�azaz	݉azv�	݋	ݎ	݌az	ݍazv�azaz	ݏaz	ݐazv�	ݒaz	ݓazaz	ݔaz	ݕazv�	ݗaz	ݘaz	ݙaz	ݚazaz	ݛv�az	ݝ	ݪaz	ݞ	ݟaz	ݠ	ݥ	ݡaz	ݢazaz	ݣ	ݤazazu�az	ݦaz	ݧaz	ݨaz	ݩu�azaz	ݫ	ݬ	ݷ	ݭ	ݲ	ݮazaz	ݯaz	ݰaz	ݱv�az	ݳazaz	ݴaz	ݵ	ݶazazv�	ݸazaz	ݹ	ݺaz	ݻazaz	ݼjaz	ݾaz	ݿ	��	�	��	�azaz	��	��az	��az	��azaz	��t�az	��az	��	��az	��	��az	��azaz	��gCaz	��	��az	��az	��az	��azgCaz	��az	��	��azazgCaz	��	��	��az	��az	��	��az	��azaz	��t�az	��	��	��az	��az	��az	��azmaz	��azaz	��	��az	��azmaz	��	�	��	��	��az	��azaz	��	��az	��az	��azv�az	��	�az	�	�az	�azaz	�	�azv�azaz	�	�az	�az	�az	�azjaz	�	�	�az	�azaz	�	�az	�az	�azv�az	�		�az	�
	�az	�azaz	�
	�azv�azaz	�	�az	�az	�az	�azjaz	�	މ	�	�?	�	�+	�	�"	�	�	�@	�@	�@az@	�@	� @	�!@az@	�#	�'	�$@	�%@	�&@az@	�(@	�)@	�*@az@	�,	�6	�-	�2	�.@	�/@	�0@	�1@az@	�3@	�4@	�5@az@	�7	�;	�8@	�9@	�:@az@	�<@	�=@	�>@az@	�@	�}	�A	�L	�B	�H	�C@	�D@	�E@	�F@	�G@az@	�I@	�J@	�K@az@	�M	�U	�N@	�O@	�P@	�Q@	�R@@	�S@	�T@-K	�V@	�W@	�X@	�Y@	�Zaz	�[az	�\az	�]azaz	�^	�_az	�`az	�aaz	�baz	�caz	�daz	�eaz	�faz	�gaz	�hazaz	�iaz	�j	�kaz	�laz	�mazaz	�naz	�oaz	�paz	�q	�raz	�sazaz	�t	�uaz	�vaz	�waz	�xaz	�yaz	�zaz	�{az	�|az@az	�~@	�	ޅ	ހ@	ށ@	ނ@	ރ@	ބ@az@	ކ@	އ@	ވ@az@	ފ	��	ދ	ޛ	ތ	ޖ	ލ	ޒ	ގ@	ޏ@	ސ@	ޑ@az@	ޓ@	ޔ@	ޕ@az@	ޗaz	ޘ@	ޙ@	ޚ@az@	ޜ@	ޝ	ޡ	ޞ@	ޟ@	ޠ@az@	ޢ@	ޣ@	ޤ@	ޥ@	ަaz	ާaz	ިaz	ީazaz	ުaz	ޫaz	ެaz	ޭaz	ޮaz	ޯaz	ްaz	ޱaz	޲az	޳az	޴az	޵az	޶az	޷az	޸	޹az	޺az	޻az	޼az	޽az	޾az	޿az	�az	�az	��az	��az	��az	��az	��az	��	��	��	��azgCb�az	��azazt�	��	��	��@	��@	��@	��@	��@az@	��@	��@	��az	��az	��az	��	߆	��	�_	��	�\	��	�	��az	��	�	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	�az	�az	�az	�az	�az	�az	�az	�azw�azaz	�az	�	�az	�az	�az	�az	�az	�az	�az	�az	�az	�	az	�
az	�az	�az	�
az	�az	�az	�az	�azaz	�	�az	�azaz	�az	�az	�	�azaz	�az	�az	�w�azaz	�	�	�=	�az	� az	�!az	�"az	�#az	�$az	�%az	�&az	�'az	�(az	�)az	�*az	�+az	�,az	�-az	�.az	�/az	�0az	�1az	�2az	�3az	�4az	�5az	�6az	�7az	�8az	�9az	�:az	�;az	�<azw�azaz	�>az	�?	�@az	�Aaz	�Baz	�Caz	�Daz	�Eaz	�Faz	�Gaz	�Haz	�Iaz	�Jaz	�Kaz	�Laz	�Maz	�Naz	�Oaz	�Paz	�Qaz	�Raz	�Saz	�Tazaz	�Uaz	�Vaz	�Waz	�Xaz	�Y	�Zazaz	�[w�az	�]	�^v�azazkX	�`	߃	�a	�bu�ub	�cv�	�daz	�eaz	�faz	�gaz	�haz	�iaz	�jaz	�kaz	�laz	�maz	�naz	�oaz	�paz	�qaz	�raz	�saz	�taz	�uaz	�vaz	�waz	�xaz	�yaz	�zaz	�{az	�|az	�}az	�~az	�az	߀az	߁az	߂azw�az	߄	߅u�jgQaz	߇az	߈	ߊaz	߉azgC	ߋazmaz	ߍ	�h	ߎ	�H	ߏ	�8	ߐ	�1	ߑ@	ߒ@	ߓ	��az	ߔ	ߕaz	ߖaz	ߗaz	ߘaz	ߙaz	ߚaz	ߛaz	ߜaz	ߝ	ߺaz	ߞ	ߟazaz	ߠ	ߡaz	ߢazaz	ߣ	ߤazaz	ߥ	ߦaz	ߧazaz	ߨ	ߩazaz	ߪ	߫azaz	߬	߭az	߮az	߯azaz	߰	߱az	߲az	߳az	ߴaz	ߵaz	߶az	߷az	߸az	߹az@az	߻azaz	߼az	߽	߾azaz	߿	�azaz	�az	��	��az	��azaz	��	��az	��azaz	��	��az	��az	��az	��azaz	��	��az	��az	��az	��az	��az	��az	��az	��az	��az@azaz	��az	��az	��az	��az	��	��az	��az	��az	��az	��azaz	��	��az	��az	��az	��az	��az	��az	��az	��	�-	��az	��az	��azaz	��	��az	��	�"	��	�az	��	��az	��az	�az	�az	�	�	�	�	�az	�azaz	�gQaz	�az	�az	�azv�az	�az	�az	�az	�azkXaz	�	�	�az	�az	�	az	�
	�az	�	�az	�
az	�az	�az��azaz	�az	�	�az	�az	�azazv�	�az	�az	�az	�az	�az	�az	�az	�	� az	�azw�	�!azaz��	�#az	�$az	�%az	�&az	�'az	�(az	�)az	�*az	�+az	�,az��az	�.azaz	�/	�0azazgQ	�2@	�3@	�4@	�5@	�6@	�7@az@	�9	�?	�:@	�;@	�<@	�=@	�>@az@	�@@	�A@	�B@	�C@	�D@	�E@	�F@	�G@az@	�I	�U	�J	�P	�K@	�L@	�M@	�N@	�O@az@	�Q@	�R@	�S@	�T@az@	�V	�_	�W@	�X@	�Y@	�Z@	�[@	�\@	�]@	�^@az@	�`@	�a@	�b@	�c@	�d@	�e@	�f@	�g@az@	�i	��	�j	�z	�k	�t	�l@	�m@	�n@	�o@	�p@	�q@	�r@	�s@az@	�u@	�v@	�w@	�x@	�y@az@	�{	�}	�|@az@	�~@	�@	�azaz	�	�	�	�	��	�az	�	�	�az	�az	�azaz	�az	�az	�	�az	�az	�azaz	�	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azaz	�	�az	�azaz	�	�azaz	�az	�az	�	�azaz	�az	�@az	�	��	�az	�azaz	�az	�az	�	�azaz	�az	�	�az	�azaz	�az	�az	�az	�az	�az	�az	�	�azaz	�az	�	�az	�az	�az	�azaz	�	��az	��azaz	��	��az	��az	��az	��az@az	��az	��azaz	��az	��az	��az	��	��azaz	��az	��	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azaz	��	��az	��az	��az	��az	��az	��azaz	��az	��	��az	��az	��az@az	��az	��	�l	��	�.	��	�	��az	��az	��az	��az	��azaz	��az	�az	�	�azaz	�az	�az	�az	�az	�az	�az	�az	�	�azaz	�	�azaz	�az	�az	�	�azaz	�az	�az	�	az	�
	�azaz	�	�
az@az	�azaz	�az	�az	�az	�az	�	�az	�az	�azaz	�az	�az	�az	�az	�az	�az	�az	�az	� 	�!az	�"azaz	�#az	�$az	�%az	�&	�'az	�(az	�)azaz	�*	�+az	�,az	�-azaz@	�/az	�0azaz	�1	�2	�O	�3az	�4azaz	�5	�6az	�7az	�8az	�9azaz	�:az	�;az	�<az	�=az	�>az	�?	�@az	�Aaz	�Bazaz	�Caz	�Daz	�Eaz	�F	�Gazaz	�Haz	�I	�Jazaz	�Kaz	�L	�Mazaz	�Naz@	�Pazaz	�Q	�Razaz	�Saz	�T	�Uaz	�Vaz	�Waz	�Xaz	�Yaz	�Zaz	�[az	�\az	�]az	�^az	�_az	�`azaz	�a	�baz	�cazaz	�daz	�eaz	�f	�gaz	�hazaz	�iaz	�jaz	�kaz@	�mazaz	�n	�oazaz	�p	�q	�	�raz	�saz	�tazaz	�u	�vaz	�waz	�xaz	�yaz	�zaz	�{az	�|az	�}az	�~az	�az	�az	�az	�az	�azaz	�	�azaz	�az	�az	�	�azaz	�	�azaz	�az	�@azaz	�az	�	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azaz	�	�azaz	�az	�az	�	�az	�azaz	�az	�	�azaz@	�az	�azaz	�az	�az	�	�azaz	�	�azaz	�	�az	�az	�azaz	�az	�az	�az	�az	�	�az	�az	�az	�azaz	�	��az	��azaz	��	��az	��az	��az	��azaz	��az	��az	��	��az	��az	��az	��az@az	��	�,	��	�&	��@	��@az	��az	��az	��az	��az	��az	��az	��az	��az	��	��	�az	��	��	�	��azaz	��	��az	��azaz	��	��az	��az	��azaz	��	��az	��azaz	��	��az	��az	��az	��az	��az	��	�	��az	��az	�az	�azaz	�az	�	�azaz	�az	�u�az	�azaz	�az	�az	�az	�	�az	�azaz	�	�azu�az	�	�l	�az	�		�Y	�
	�4	�	�	�az	�
	�	�az	�azaz	�az	�azubaz	�	�azaz	�az	�az{�	�	�az	�az	�	�az	�azaz	�azub	�azaz	� 	�!azaz	�"	�#azaz	�$	�%az	�&az	�'az	�(az	�)az	�*az	�+az	�,az	�-az	�.az	�/az	�0az	�1az	�2az	�3az�"az	�5	�L	�6	�A	�7	�<az	�8az	�9	�:azaz	�;az�"	�=az	�>azaz	�?az	�@azub	�B	�G	�Caz	�Dazaz	�Eaz	�Fubaz	�Hazaz	�I	�Jazaz	�Kazub	�M	�S	�Naz	�Oazaz	�Paz	�Qaz	�Razwcaz	�Taz	�U	�Vazaz	�Waz	�Xubaz	�Zaz	�[az	�\	�faz	�]	�^	�b	�_az	�`azaz	�aazubaz	�caz	�d	�eazazubaz	�g	�hazaz	�iaz	�j	�kazazwc	�maz	�naz	�o	�waz	�p	�qaz	�raz	�saz	�taz	�uazaz	�vv�azaz	�x	�yazaz	�z	�{azaz	�|	�}azaz	�~v�az	�	��	�	��	�	�	�az	�az	�az	�	�	�azaz	�	�azaz	�	�	�	�azazm	�azmaz	�	�	�az	�az	�	�az	�	�azazmaz	�az	�maz	�az	�	�	�	�	�azaz	�mazaz	�az	�azmaz	�az	�az	�maz	�az	�az	�az	�	�az	�	�azaz	�	�	�az	�	�azaz�	�azaz	��az	���az	�	�	�az	�	�	�	�azazw�w�azaz	�	�	�az	�azjj	�jaz	��	��	��az	��az	��az	��az	��azaz	��az	��az	��az	��az	��azv�	��az	��az	��az	��az	��az	��azaz	��	��	��	��azaz	��azv�az	��az	��azv�	��	�az	��	��az	��az	��az	��	��az	��	��	��az	��	��azaz	��	��azv�az	��az	��azaz	��	��azv�azaz	��az	��az	��	��az	��az	��azazv�	�	�	�az	�az	�	�
	�azaz	�	�	�	�	�az	�az	�az	��azaz	�az	�	�az�azaz	�az	�az	�az	�	waz	�azaz	�	�
azaz	�	�azaz	�	�az�az	�az	�az	�az	�az	�azaz	�	�	�!	�	�	�	�azv�	�	�b�az�1v�az	� azv�az	�"	�#az	�$	�%azv�v�b�	�'@	�(@	�)@	�*@	�+@az@	�-	�3	�.@	�/@	�0@	�1@	�2@az@	�4	�=	�5	�9	�6@	�7@	�8@�@	�:@	�;@	�<@az@	�>	�B	�?@	�@@	�A@�@	�C@	�D@	�E@az@	�G	�	�H	�k	�I	�|	�J	�S	�K	�M	�L@az@	�N@	�O@	�P@	�Q@	�R@��@	�T	�v	�U@	�V@	�W@	�X@	�Y@	�Z@	�[az	�\	�	�]	��az	�^	�_	�	�`az	�a	�~az	�b	�cazaz	�daz	�e	�faz	�gaz	�haz	�iaz	�jazaz	�kaz	�l	�maz	�naz	�oaz	�paz	�qaz	�razaz	�saz	�t	�uazaz	�v	�waz	�xaz	�yaz	�zaz	�{az	�|az	�}az@azaz	�	�azaz	�az	�	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azaz	�	�az	�az	�az	�azaz	�az	�az	�	�az	�az	�az	�az	�az	�az@azaz	�	�	�	�azaz	�	�az	�az	�az	�az	�az	�azaz	�	�azaz	�	�az	�azaz	�	�azaz	�az	�	�azaz	�az	�	�az	�az	�az	�az	�az	�az	�az	�az@azaz	�	�az	�az	�azaz	�	�az	�az	��az	��az	��az	��az	��az	��az	��az	��az	��azaz	��	��azaz	��az	��	��az	��az	��azaz	��az	��	��az	��az	��az@az	��az	��az	��	�az	��az	��az	��	��az	��azaz	��	��az	��az	��az	��azaz	��az	��	��az	��azaz	��az	��	��az	��azaz	��az	��az	��az	��	��az	��az	��az	��az	�az	�az	�az@az	�az	�az	�azaz	�az	�az	�	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azaz	�		�
azaz	�az	�	�
az	�azaz	�	�azaz	�	�az	�az	�az	�az@azaz	�	�	�8	�az	�az	�az	�azaz	�	�az	�az	� az	�!az	�"az	�#az	�$az	�%az	�&az	�'az	�(az	�)az	�*az	�+az	�,az	�-az	�.az	�/az	�0azaz	�1az	�2az	�3	�4az	�5azaz	�6az	�7az@	�9az	�:	�Xaz	�;	�<azaz	�=az	�>	�?azaz	�@	�Aazaz	�B	�Caz	�Dazaz	�Eaz	�F	�Gaz	�Haz	�Iazaz	�J	�Kaz	�Laz	�Maz	�Nazaz	�Oaz	�P	�Qaz	�Raz	�Saz	�Taz	�Uaz	�Vaz	�Waz@az	�Yazaz	�Z	�[azaz	�\az	�]az	�^	�_az	�`az	�aaz	�baz	�caz	�dazaz	�e	�faz	�gaz	�hazaz	�iaz	�jaz	�kaz	�l	�maz	�naz	�oaz	�paz	�qaz	�raz	�saz	�taz	�uaz@az	�w@	�x@	�y@	�z@	�{@az@	�}	�b	�~	�\	�@	�@	�@	�@	�@	�@	�az	�az	�az	�az	�az	�	�D	�azaz	�	�	��	�az	�	�	�	�	�	��	�az	�	�	�az	�az	�az	�	�	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azv�azaz	�	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azubazaz	�	�	��	�az	�az	�az	�az	�az	�az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azt�az	��azaz	��az	��	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azwUaz	��	�I	��	��	��	�.	��	�
	��	�	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	�az	�az	�azjaz	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�	azv�azaz	�	�	�	�
az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azmazaz	�	�az	� az	�!az	�"az	�#az	�$az	�%az	�&az	�'az	�(az	�)az	�*az	�+az	�,az	�-azv�az	�/	�u	�0	�Raz	�1	�2	�B	�3az	�4az	�5az	�6az	�7az	�8az	�9az	�:az	�;az	�<az	�=az	�>az	�?az	�@az	�Aazwcaz	�Caz	�Daz	�Eaz	�Faz	�Gaz	�Haz	�Iaz	�Jaz	�Kaz	�Laz	�Maz	�Naz	�Oaz	�Paz	�QazgCaz	�S	�d	�Taz	�Uaz	�Vaz	�Waz	�Xaz	�Yaz	�Zaz	�[az	�\az	�]az	�^az	�_az	�`az	�aaz	�baz	�cazwaz	�eaz	�faz	�gaz	�haz	�iaz	�jaz	�kaz	�laz	�maz	�naz	�oaz	�paz	�qaz	�raz	�saz	�tazu�az	�v	�	�w	�	�x	�	�yaz	�zaz	�{az	�|az	�}az	�~az	�az	�az	�az	�az	�az	�az	�az	�az	�azv�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az��az	�	�	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az��az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azv�az	�	��	�az	�az	�az	�az	�az	�az	�az	��az	��az	��az	��az	��az	��az	��az	��az	��azv�az	��	��	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azu�az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azv�az	��	�	��	�U	��	�"	��	�	��	�	��az	��az	��az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azt�az	�az	�az	�az	�az	�az	�az	�az	�	az	�
az	�az	�az	�
az	�az	�az	�azb�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	� az	�!azb�az	�#	�D	�$	�4	�%az	�&az	�'az	�(az	�)az	�*az	�+az	�,az	�-az	�.az	�/az	�0az	�1az	�2az	�3azu�az	�5az	�6az	�7az	�8az	�9az	�:az	�;az	�<az	�=az	�>az	�?az	�@az	�Aaz	�Baz	�Cazv�azaz	�E	�Faz	�Gaz	�Haz	�Iaz	�Jaz	�Kaz	�Laz	�Maz	�Naz	�Oaz	�Paz	�Qaz	�Raz	�Saz	�Taz�"az	�V	�	�W	�h	�Xaz	�Yaz	�Zaz	�[az	�\az	�]az	�^az	�_az	�`az	�aaz	�baz	�caz	�daz	�eaz	�faz	�gazw�az	�i	�y	�jaz	�kaz	�laz	�maz	�naz	�oaz	�paz	�qaz	�raz	�saz	�taz	�uaz	�vaz	�waz	�xazkXaz	�zaz	�{az	�|az	�}az	�~az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azkXaz	�	�	�	�	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azgCaz	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azv�azaz	�	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azv�az	�	��	�	��	�az	�az	�az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azgCaz	��	��	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azv�az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azkXaz	��	�7	�	�	�	�	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azu�az	�az	�az	�	az	�
az	�az	�az	�
az	�az	�az	�az	�az	�az	�az	�az	�azu�az	�	�'	�az	�az	�az	�az	�az	�az	�az	�az	� az	�!az	�"az	�#az	�$az	�%az	�&az��az	�(az	�)az	�*az	�+az	�,az	�-az	�.az	�/az	�0az	�1az	�2az	�3az	�4az	�5az	�6azmazaz	�8az	�9	�:az	�;az	�<az	�=az	�>az	�?az	�@az	�Aaz	�Baz	�Caz	�Daz	�Eaz	�Faz	�Gaz	�Hazb�az	�J	�	�K	�	�L	�az	�M	�N	�o	�O	�_	�Paz	�Qaz	�Raz	�Saz	�Taz	�Uaz	�Vaz	�Waz	�Xaz	�Yaz	�Zaz	�[az	�\az	�]az	�^azv�az	�`az	�aaz	�baz	�caz	�daz	�eaz	�faz	�gaz	�haz	�iaz	�jaz	�kaz	�laz	�maz	�nazb�az	�paz	�qaz	�raz	�saz	�taz	�uaz	�vaz	�waz	�xaz	�yaz	�zaz	�{az	�|az	�}az	�~az	�azjaz	�az	�	�	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azv�azaz	�	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azgCaz	�	��	�	��az	�	�	�	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azb�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	��az	��az	��az	��az	��az	��azv�az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azb�az	��	��az	��	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azgCaz	��	�az	��	��az	��az	��az	��az	��az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azv�azaz	�	�az	�az	�az	�az	�az	�az	�az	�az	�	az	�
az	�az	�az	�
az	�az	�azv�az	�	�	�	�h	�	�V	�	�5	�	�%	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	� az	�!az	�"az	�#az	�$azv�az	�&az	�'az	�(az	�)az	�*az	�+az	�,az	�-az	�.az	�/az	�0az	�1az	�2az	�3az	�4azv�az	�6	�F	�7az	�8az	�9az	�:az	�;az	�<az	�=az	�>az	�?az	�@az	�Aaz	�Baz	�Caz	�Daz	�EazkXaz	�Gaz	�Haz	�Iaz	�Jaz	�Kaz	�Laz	�Maz	�Naz	�Oaz	�Paz	�Qaz	�Raz	�Saz	�Taz	�Uazu�az	�Waz	�Xaz	�Yaz	�Zaz	�[az	�\az	�]az	�^az	�_az	�`az	�aaz	�baz	�caz	�daz	�eaz	�faz	�gazu�az	�i	�{az	�jaz	�k	�laz	�maz	�naz	�oaz	�paz	�qaz	�raz	�saz	�taz	�uaz	�vaz	�waz	�xaz	�yaz	�zazwaz	�|	�	�}az	�~az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azu�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azv�az	�	�	�az	�azaz	�	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az�1az	�	��	�	��	�	��	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	��az	��az	��azu�az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azu�azaz	��	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azv�az	��	�	��	�	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	�az	�az	�azgCaz	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azv�azaz	�		�
az	�az	�az	�
az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azv�az	�	�R	�	�?	�	�&	�	�	�	�d	�	�A	� az	�!	�1	�"az	�#az	�$az	�%az	�&az	�'az	�(az	�)az	�*az	�+az	�,az	�-az	�.az	�/az	�0az�az	�2az	�3az	�4az	�5az	�6az	�7az	�8az	�9az	�:az	�;az	�<az	�=az	�>az	�?az	�@azw*az	�B	�S	�Caz	�Daz	�Eaz	�Faz	�Gaz	�Haz	�Iaz	�Jaz	�Kaz	�Laz	�Maz	�Naz	�Oaz	�Paz	�Qaz	�RazgQaz	�Taz	�Uaz	�Vaz	�Waz	�Xaz	�Yaz	�Zaz	�[az	�\az	�]az	�^az	�_az	�`az	�aaz	�baz	�cazgQaz	�e	�w	�faz	�gaz	�haz	�iaz	�jaz	�kaz	�laz	�maz	�naz	�oaz	�paz	�qaz	�raz	�saz	�taz	�uaz	�vazw�az	�x	�az	�y	�zaz	�{az	�|az	�}az	�~az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azw�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azjaz	�	��	�	�	�azaz	�	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azgCazaz	�	�	�	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azb�az	�az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azwaz	��	�	��	��	��	��	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azv�az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azt�az	��az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azmazaz	�	�	�	�az	�az	�	az	�
az	�az	�az	�
az	�az	�az	�az	�az	�az	�az	�az	�azv�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	� az	�!az	�"az	�#az	�$az	�%azupaz	�'	��	�(	�~	�)	�\	�*	�;	�+az	�,az	�-az	�.az	�/az	�0az	�1az	�2az	�3az	�4az	�5az	�6az	�7az	�8az	�9az	�:azv�az	�<	�L	�=az	�>az	�?az	�@az	�Aaz	�Baz	�Caz	�Daz	�Eaz	�Faz	�Gaz	�Haz	�Iaz	�Jaz	�Kazwaz	�Maz	�Naz	�Oaz	�Paz	�Qaz	�Raz	�Saz	�Taz	�Uaz	�Vaz	�Waz	�Xaz	�Yaz	�Zaz	�[azw�az	�]az	�^	�n	�_az	�`az	�aaz	�baz	�caz	�daz	�eaz	�faz	�gaz	�haz	�iaz	�jaz	�kaz	�laz	�mazwaz	�oaz	�paz	�qaz	�raz	�saz	�taz	�uaz	�vaz	�waz	�xaz	�yaz	�zaz	�{az	�|az	�}azu�az	�az	�	�	�	�	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azv�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azgCaz	�	�	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azgCaz	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azu�az	��	�		��	��	��	��az	��	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azv�azaz	��	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azb�azaz	��	��	�	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	�az	�az	�az	�azubaz	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azjaz	�
	�	�az	�az	�
az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azw�az	�	�.	�az	�az	� az	�!az	�"az	�#az	�$az	�%az	�&az	�'az	�(az	�)az	�*az	�+az	�,az	�-azb�azaz	�/	�0az	�1az	�2az	�3az	�4az	�5az	�6az	�7az	�8az	�9az	�:az	�;az	�<az	�=az	�>azv�az	�@	�'	�A	��	�B	�	�C	�	�D	�e	�E	�U	�Faz	�Gaz	�Haz	�Iaz	�Jaz	�Kaz	�Laz	�Maz	�Naz	�Oaz	�Paz	�Qaz	�Raz	�Saz	�Tazu�az	�Vaz	�Waz	�Xaz	�Yaz	�Zaz	�[az	�\az	�]az	�^az	�_az	�`az	�aaz	�baz	�caz	�daz�?az	�f	�v	�gaz	�haz	�iaz	�jaz	�kaz	�laz	�maz	�naz	�oaz	�paz	�qaz	�raz	�saz	�taz	�uaz�az	�waz	�xaz	�yaz	�zaz	�{az	�|az	�}az	�~az	�az	�az	�az	�az	�az	�az	�az�iaz	�	�	�	�	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az��az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azw�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azw�az	�az	�	��	�az	�az	�az	�az	�az	�az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az��azaz	��	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azt�az	��	��	��azaz	��	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��aza�az	��	�	��	�az	��	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azv�az	�az	�az	�az	�az	�	az	�
az	�az	�az	�
az	�az	�az	�az	�az	�az	�az	�azwazaz	�	�az	�az	�az	�az	�az	�az	�az	�az	�az	� az	�!az	�"az	�#az	�$az	�%az	�&azjaz	�(	��	�)	�	�*	�m	�+	�L	�,	�<	�-az	�.az	�/az	�0az	�1az	�2az	�3az	�4az	�5az	�6az	�7az	�8az	�9az	�:az	�;azgCaz	�=az	�>az	�?az	�@az	�Aaz	�Baz	�Caz	�Daz	�Eaz	�Faz	�Gaz	�Haz	�Iaz	�Jaz	�Kazt�az	�M	�]	�Naz	�Oaz	�Paz	�Qaz	�Raz	�Saz	�Taz	�Uaz	�Vaz	�Waz	�Xaz	�Yaz	�Zaz	�[az	�\azu�az	�^az	�_az	�`az	�aaz	�baz	�caz	�daz	�eaz	�faz	�gaz	�haz	�iaz	�jaz	�kaz	�lazv�az	�n	�	�oaz	�paz	�qaz	�raz	�saz	�taz	�uaz	�vaz	�waz	�xaz	�yaz	�zaz	�{az	�|az	�}az	�~azwazaz	�	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azgCaz	�az	�	�az	�	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azv�az	�	�	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azgCaz	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	��az	��azgCaz	��	�	��	�	��	��	��	��	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azb�az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azb�az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	�az	�az	�az	�azb�az	�	�az	�	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�	az	�
azkXaz	�az	�
az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azmaz	�	�@	�	�/v�	�	� az	�!az	�"az	�#az	�$az	�%az	�&az	�'az	�(az	�)az	�*az	�+az	�,az	�-az	�.azv�az	�0az	�1az	�2az	�3az	�4az	�5az	�6az	�7az	�8az	�9az	�:az	�;az	�<az	�=az	�>az	�?azb�az	�Aaz	�Baz	�Caz	�Daz	�Eaz	�Faz	�Gaz	�Haz	�Iaz	�Jaz	�Kaz	�Laz	�Maz	�Naz	�Oaz	�Paz	�Qaz�"az	�S	�h	�T	�m	�U	��	�V	�	�Waz	�X	�i	�Yaz	�Zaz	�[az	�\az	�]az	�^az	�_az	�`az	�aaz	�baz	�caz	�daz	�eaz	�faz	�gaz	�hazb�az	�j	�z	�kaz	�laz	�maz	�naz	�oaz	�paz	�qaz	�raz	�saz	�taz	�uaz	�vaz	�waz	�xaz	�yazu�az	�{az	�|az	�}az	�~az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azgQaz	�	��	�	�	�	�	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azv�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azv�az	�	�	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azu�az	�az	�az	�az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azv�azaz	��	��	��	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azwcaz	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azv�az	��	�	��	�az	��	��az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azv�azaz	�az	�	�az	�az	�	az	�
az	�az	�az	�
az	�az	�az	�az	�az	�az	�az	�az	�azwaz	�	�:	�	�)az	�	�az	�az	�az	�az	�az	�az	� az	�!az	�"az	�#az	�$az	�%az	�&az	�'az	�(az�Maz	�*az	�+az	�,az	�-az	�.az	�/az	�0az	�1az	�2az	�3az	�4az	�5az	�6az	�7az	�8az	�9az�waz	�;	�\	�<	�L	�=az	�>az	�?az	�@az	�Aaz	�Baz	�Caz	�Daz	�Eaz	�Faz	�Gaz	�Haz	�Iaz	�Jaz	�Kazv�az	�Maz	�Naz	�Oaz	�Paz	�Qaz	�Raz	�Saz	�Taz	�Uaz	�Vaz	�Waz	�Xaz	�Yaz	�Zaz	�[az�waz	�]az	�^az	�_az	�`az	�aaz	�baz	�caz	�daz	�eaz	�faz	�gaz	�haz	�iaz	�jaz	�kaz	�lazu�az	�n	�	�o	�	�p	�	�q	�	�raz	�saz	�taz	�uaz	�vaz	�waz	�xaz	�yaz	�zaz	�{az	�|az	�}az	�~az	�az	�az	�azt�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azkXaz	�	�az	�	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azv�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azmaz	�	��	�	��	�	��	�az	�az	�az	�az	�az	�az	�az	�az	��az	��az	��az	��az	��az	��az	��azv�az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azv�az	��b�	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azjazaz	��	��	�	��az	��az	��az	��az	��az	��az	��az	��az	�az	�az	�az	�az	�az	�az	�azjaz	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�	az	�
az	�azjaz	�
	�C	�	�1	�	� 	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azu�azaz	�!	�"az	�#az	�$az	�%az	�&az	�'az	�(az	�)az	�*az	�+az	�,az	�-az	�.az	�/az	�0azv�azaz	�2az	�3	�4az	�5az	�6az	�7az	�8az	�9az	�:az	�;az	�<az	�=az	�>az	�?az	�@az	�Aaz	�Bazwaz	�D	�faz	�E	�F	�V	�Gaz	�Haz	�Iaz	�Jaz	�Kaz	�Laz	�Maz	�Naz	�Oaz	�Paz	�Qaz	�Raz	�Saz	�Taz	�Uazu�az	�Waz	�Xaz	�Yaz	�Zaz	�[az	�\az	�]az	�^az	�_az	�`az	�aaz	�baz	�caz	�daz	�eazkXazaz	�gazkX	�i	�	�j	�v	�k	�q	�l	�o	�m	�nazkXkXt�	�pv�w�u�	�r	�t	�sazw�u�b�	�uv�az	�w	�~	�x	�{	�y	�zv�v�b�w�	�|	�}v�gCazwc	�azaz	�azj	�	�	�	�	�	�	�	�v�ubu�v�	�	�azb�u�u�	�	�	�azwazaz	�w�	�	�	�	�	�	�v�w�upv�	�azazv�	�	�	�	�kXgQ�wv�	�	�u�v�v�az	�az	�az	�az	�az	�	�	�	�	�	�	�	�mw�gCw	�	�v�w*w8	�	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azv�az	�	�	�	�v�azjwF	�	�azmubkX	�az	��	��	��	��mazwqw	��azwazaz	��	��	��az	��az	��az	��az	��az	��az	��az	��az	��upaz	��az	��	�3	��	�		��	��	��	��	��	��az	��	��azazmaz	��az	��b�az	��	��az	��az	��azw�az	��	��azazv�	��	�	��	�	��	��	��azazu�	��azaz	��	��az	��az	��az	��az	��az	��az	��az	��az	�az	�az	�az	�az	�az	�az	�azupaz	�	�azwqaz	�gCaz	�	�az	�jaz	�	�	�	�azu�v�az	�az�az	�
	�	�	�	�	�	�
	�	�azazwaz	�azt�	�	�	�	�azjazwU	�	�azu�azgQaz	�	�	�az	�azm	�azazw	�	�(	� 	�%	�!	�#	�"azaz�1az	�$azu�az	�&az	�'az�i	�)	�0	�*	�-	�+	�,az�"azu�	�.	�/az��azu�az	�1az	�2azm	�4az	�5az	�6az	�7	�=	�8	�;	�9	�:azgCazw�	�<azazj	�>	�A	�?	�@az�?azv�	�B	�C�azaz�	�Eazaz	�F	�Gaz	�Hazaz	�I	�Jaz	�Kaz	�Laz	�Maz	�Naz	�O	�U	�P	�R	�Qazv�az	�S	�Tazu�v�v�	�V	�Y	�W	�Xt�mv�b�	�Z	�[gCv�jaz	�]@	�^@	�_@	�`@	�a@�@	�c	�e	�d@az@	�f@	�g@	�h@	�i@	�j@az@	�l	�	�m	�z	�n	�t	�o@	�p@	�q@	�r@	�s@az@	�u@	�v@	�w@	�x@	�y@az@	�{	�	�|@	�}@	�~@	�@	�@az@	�@	�@	�@	�@	�@|	�@	�@	�@	�@	�	�@	�@	�@	�@	�@	�@	�@�@	�	�	�	�	�@	�@	�@	�@	�@az@	�@	�@	�@	�@	�@	�@	�@	�@	�@az@	�	�	�@	�@	�@	�@	�@|@	�@az@	�	��	�	��	�	�	�	�	�@az@	�@	�@	�@	�@	�@az@	�	�	�@	�@	�@	�@	�@az@	��@	��@	��@	��@	��@az@	��	��	��	��	��@	��@	��@	��@	��@az@	��@	��@	��@	��@	��@|@	��	��	��@	��@	��@	��@	��@|@	��@	��@	��@	��@	��@|@	��	�'	��	��	��	��	��@	��@	��@	��@	��@|@	��@	��@	��@	��@	��@az@	��	�	��@	��@	�@	�@	�@az@	�	�	�@	�@	�@	�@az@@	�	�@	�@	�@	�@	�@	�@	�@	�@	�@	�	@	�
@	�@	�@	�
@	�@	�@	�@	�@	�@	�@	�@	�@	�@	�@	�@	�@	�@	�@	�@	�@	�@	�@	� @	�!@	�"@	�#@	�$@	�%@	�&@�@	�(@	�)@	�*@	�+@	�,	�V	�-az	�.az	�/az	�0	�B	�1azaz	�2	�3	�:	�4az	�5az	�6az	�7az	�8az	�9azv�azaz	�;	�<azaz	�=	�>az	�?az	�@azaz	�Awazaz	�Caz	�D	�E	�N	�Faz	�Gaz	�Haz	�Iaz	�Jaz	�K	�Lv�az	�Mazwaz	�Oaz	�Paz	�Qaz	�Raz	�Saz	�Taz	�Uazv�azaz	�Waz	�Xaz	�Y	�Zaz	�[az	�\az	�]	�	�^az	�_az	�`az	�aaz	�baz	�c	�	�d	�	�eaz	�f	�	�g	�	�h	�	�i	�	�jaz	�k	�	�lazaz	�m	�naz	�oaz	�paz	�q	�uaz	�raz	�saz	�tazv�	�v	�}	�w	�z	�x	�yv�v�azt�	�{	�|mazv�b�	�~	�	�	�ubazv�gC	�	�kXazjaz	�azb�az	�az	�az	�azv�az	�az	�az	�az	�azv�az	�az	�az	�az	�az	�azu�az	�az	�az	�az	�az	�	�az	�v�m	�	�t�azv�u�az	�	�az	�az	�az	�azaz	�az	�az	�azb�az	�az	�	�az	�azaz	�az	�	�az	�azt�azaz	�	�az	�az	�azaz	�	�az	�az	�az	�az	�az	�az	�az	�az	�azaz	�u�az	��	�P	��@	��@	��	�~	��az	��	�	��	��	��	�v	��	�Oaz	��	��az	��az	��	�,	��	��	��azaz	��az	��az	��	��az	��az	��az	��azaz	��	��azaz	��	��az	��az	��az	��az	��az	��az	��az	��azaz	��az	��az	��az	��	��azaz	��az	��	��az	��azaz	��az	��	��az	��az	��az@azaz	��	��az	��az	�az	�az	�az	�azaz	�	�	�az	�az	�	�az	�az	�az	�az	�azaz	�	�az	�az	�az	�azaz	�az	�	�	az	�
azaz	�az	�	�
azaz	�az	�	�az	�az	�az@az	�az	�az	�az	�az	�az	�azaz	�	�azaz	�	�azaz	�	�az	� azaz	�!	�"az	�#azaz	�$az	�%az	�&	�'azaz	�(az	�)az	�*az	�+@az	�-az	�.azaz	�/	�0azaz	�1	�2az	�3az	�4az	�5az	�6azaz	�7	�8az	�9az	�:az	�;az	�<az	�=azaz	�>	�?az	�@azaz	�Aaz	�Baz	�C	�Dazaz	�E	�Fazaz	�Gaz	�H	�Iazaz	�Jaz	�K	�Laz	�Maz	�Naz@az	�Paz	�Qaz	�Raz	�Saz	�Taz	�Uazaz	�Vaz	�W	�Xaz	�Yaz	�Zaz	�[azaz	�\	�]azaz	�^	�_az	�`az	�aaz	�baz	�caz	�daz	�eazaz	�f	�gazaz	�h	�iazaz	�jaz	�k	�laz	�mazaz	�n	�oazaz	�paz	�qaz	�r	�saz	�taz	�uaz@az	�w	�az	�x	�yaz	�zazaz	�{	�|azaz	�}az	�~	�azaz	�	�az	�az	�azaz	�	�azaz	�az	�	�az	�az	�az	�az	�az	�azaz	�az	�	�azaz	�az	�	�azaz	�az	�	�az	�azaz	�	�az	�az	�az	�az	�az@azaz	�	�az	�az	�az	�az	�az	�az	�	��az	�	�azaz	�	�az	�azaz	�	�az	�az	�az	�az	�az	�az	�az	�az	�az	�azaz	�	�azaz	�	�azaz	�az	�	�az	�az	�az	�az	�az	��az	��az	��az@azaz	��	��az	��azaz	��az	��	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azaz	��az	��az	��az	��	��azaz	��az	��az	��az	��	��az	��az	��az@az	��az	��	�	��	�k	��az	��az	��az	��	�
	��az	��azaz	��	��az	��az	��az	��az	��az	��az	�az	�az	�az	�az	�az	�az	�az	�az	�azaz	�	�az	�azaz	�az	�	�az	�az	�azaz	�	�az	�az	�	az	�
az	�az	�az@az	�	�J	�azaz	�az	�	�azaz	�	�	�/az	�az	�az	�az	�	�az	�az	�az	�az	�az	�az	�azaz	� az	�!az	�"	�#azaz	�$	�%az	�&azaz	�'	�(azaz	�)	�*azaz	�+	�,az	�-az	�.az@az	�0azaz	�1az	�2	�3az	�4az	�5az	�6az	�7az	�8az	�9az	�:az	�;az	�<az	�=az	�>azaz	�?	�@az	�Aazaz	�Baz	�C	�Daz	�Eaz	�Faz	�Gaz	�Haz	�Iaz@azaz	�K	�Laz	�Maz	�Naz	�Oaz	�Paz	�Qaz	�Raz	�Saz	�Taz	�Uaz	�Vaz	�Waz	�Xaz	�Yaz	�Zazaz	�[	�\azaz	�]	�^azaz	�_az	�`	�aazaz	�baz	�c	�dazaz	�e	�faz	�gaz	�haz	�iaz	�jaz@az	�laz	�mazaz	�n	�oaz	�paz	�qazaz	�raz	�s	�taz	�uaz	�vaz	�waz	�xazaz	�y	�zaz	�{az	�|az	�}az	�~az	�az	�az	�azaz	�az	�	�azaz	�az	�az	�az	�az	�az	�az	�	�az	�az	�az	�az	�az@azaz	�	�az	�az	�az	�azaz	�az	�az	�az	�	�az	�az	�azaz	�	�azaz	�	�azaz	�az	�az	�az	�az	�az	�	�az	�azaz	�	�azaz	�az	�	�azaz	�	�az	�az	�az	�az	�az	�az	�az	�az@az	�	�az	�az	�	�	��	�az	�azaz	�	�az	�azaz	��	��azaz	��	��az	��az	��az	��az	��azaz	��	��az	��az	��az	��az	��az	��azaz	��	��az	��az	��az	��azaz	��	��az	��azaz	��	��azaz	��	��azaz	��	��az	��az	��azaz	��az@	��az	��azaz	��az	��	��az	��az	��azaz	��	��az	��az	��azaz	��az	��az	��	��az	��az	��az	��az	�az	�az	�az	�azaz	�az	�	�azaz	�	�azaz	�	�azaz	�	�azaz	�az	�az	�	�az	�az	�az@az	�	az	�
azaz	�	�az	�
az	�	�[	�	�m	�	�L	�azaz	�	�az	�az	�az	�	�1az	�az	�az	�az	�	�az	�az	�az	�az	�az	� az	�!az	�"az	�#azaz	�$az	�%az	�&az	�'az	�(az	�)az	�*	�+az	�,az	�-az	�.az	�/az	�0az@az	�2azaz	�3	�4azaz	�5	�6az	�7az	�8az	�9az	�:az	�;az	�<azaz	�=az	�>	�?az	�@az	�Aazaz	�B	�Cazaz	�D	�Eaz	�Fazaz	�Gaz	�H	�Iaz	�Jazaz	�Kaz@	�Maz	�Nazaz	�O	�Paz	�Qazaz	�Raz	�S	�Taz	�Uaz	�Vaz	�Waz	�Xaz	�Yaz	�Zaz	�[az	�\az	�]azaz	�^	�_az	�`az	�aazaz	�baz	�caz	�d	�eaz	�faz	�gaz	�haz	�iazaz	�j	�kaz	�lazaz@	�n	� 	�o	�	�paz	�qaz	�raz	�saz	�taz	�uazaz	�vaz	�w	�xaz	�yaz	�zaz	�{az	�|az	�}az	�~azaz	�	�az	�az	�az	�az	�az	�az	�azaz	�az	�	�az	�az	�az	�az	�az	�az@az	�	�	�	��	�az	�az	�	��	�az	�	�	�az	�az	�az	�az	�az	�az	�az	�azaz	�az	�	�azaz	�	�az	�azaz	�az	�	�azaz	�	�azaz	�az	�	�az	�az	�az@azaz	�	�az	�az	�az	�az	�az	�az	�azaz	�	�az	�az	�azaz	�az	�	�az	�azaz	�az	�az	��	��az	��az	��az	��az	��az@az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azaz	��az	��az	��	��az	��az	��azaz	��az	��az	��az	��	��az	��az	��az@az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azaz	�	�az	�az	�az	�az	�azaz	�	�azaz	�	�azaz	�az	�@az	�az	�az	�azaz	�	�az	�azaz	�	�	az	�
az	�az	�az	�
az	�az	�az	�az	�azaz	�az	�az	�az	�	�az	�az	�az	�az	�azaz	�	�az	�az	�az	�az@az	�!	��az	�"	�#az	�$az	�%	�\	�&	�Aaz	�'az	�(	�)az	�*az	�+az	�,az	�-az	�.az	�/az	�0az	�1az	�2azaz	�3az	�4az	�5az	�6az	�7az	�8az	�9	�:az	�;az	�<az	�=az	�>az	�?az	�@az@azaz	�Baz	�C	�Daz	�Eaz	�Faz	�Gaz	�Haz	�Iaz	�Jaz	�Kaz	�Laz	�Maz	�Nazaz	�O	�Pazaz	�Q	�Razaz	�S	�Taz	�Uazaz	�Vaz	�Waz	�X	�Yaz	�Zaz	�[az@az	�]	�x	�^az	�_azaz	�`az	�a	�baz	�caz	�daz	�eaz	�faz	�gaz	�haz	�iazaz	�jaz	�kaz	�laz	�m	�naz	�oaz	�paz	�qaz	�razaz	�s	�taz	�uaz	�vaz	�waz@az	�y	��az	�z	�{az	�|az	�}az	�~az	�az	��az	��az	��azaz	��	��az	��az	��az	��azaz	��az	��az	��az	��	��azaz	��az	��az	��az	��az	��	��az@azaz	��	��az	��az	��az	��az	��az	��az	��az	��az	��azaz	��az	��	��azaz	��	��az	��az	��azaz	��	��az	��azaz	��az	��	��az	��az	��az@az	��	��	��	��	��az	��az	��az	��az	��azaz	��	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azaz	��	��azaz	��az	��	��azaz	��az	��	��az	��az	��az	��az	��az	��az@az	��az	��az	��azaz	��az	��	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��azaz	��	��azaz	��	��az	��az	��azaz	��	��azaz	��	��az	��az	��az@az	��	�
	��az	��az	��azaz	��	��az	��az	��az	��az	��az	��az	��az	��az	��azaz	��	��azaz	��	��az	��azaz	��az	�az	�	�azaz	�az	�az	�	�az	�az	�az	�	az@az	�az	�azaz	�
	�	�A	�	�(az	�az	�	�az	�az	�az	�az	�az	�az	�azaz	�az	�az	�	�azaz	�az	�az	�	� az	�!azaz	�"	�#azaz	�$	�%az	�&az	�'az@az	�)az	�*az	�+az	�,az	�-az	�.az	�/azaz	�0	�1azaz	�2az	�3	�4azaz	�5	�6azaz	�7az	�8az	�9az	�:	�;azaz	�<	�=az	�>az	�?az	�@az@azaz	�B	�Caz	�Daz	�Eaz	�Faz	�Gaz	�Haz	�Iaz	�Jaz	�Kaz	�Laz	�Maz	�Nazaz	�Oaz	�Paz	�Q	�Raz	�Saz	�Tazaz	�U	�Vazaz	�W	�Xazaz	�Yaz	�Zaz@	�\az	�]az	�^azaz	�_	�`az	�aaz	�baz	�cazaz	�d	�eazaz	�f	�gaz	�haz	�iaz	�jaz	�kaz	�laz	�mazaz	�n	�oaz	�pazaz	�qaz	�raz	�saz	�t	�uazaz	�vaz	�waz	�x	�yazaz	�z	�{az	�|az	�}az@az	�	��	��	��	��	��@	��	��@	��@	��@az@	��	��	��@	��@	��@az@	��@	��@	��@az@	��	��	��	��	��@	��@	��@|@	��@	��@	��@az@	��	��	��@	��@	��@az@	��@	��@	��@az@	��	��	��az	��	��	��@	��@	��@az@	��@	��@	��@az@	��@@	��	��@	��@	��@	��@	��|	��	�!	��|	��|	��	��	��	��	��|	��|	��|	��	��	��|	��|	��|	��|	��|�|	��|	��|	��|	��|	��|�|	��|	��|	��	��	��	��	��|	��|	��|	��|	��|�k|	��|	��|	��|	��|	��|�k|	��	��	��|	��|	��|	��|	��|��|	��|	��|	��|	��|	��|��|	��	�	��|	��|	��	��	��	��	��|	��|	��|	��|	��|��|	��|	��|	��|	��|	��|��|	��	��	��|	��|	��|	��|	��|||	��|	�|	�|	�|	�|||	�|	�|	�	�	�	�	�	|	�
|	�|	�|	�
|B|	�|	�|	�|	�|	�|B|	�	�	�|	�|	�|	�|	�|��|	�|	�|	�|	�|	� |��|	�"|	�#|	�$	�A	�%	�3	�&|	�'|	�(||	�)	�*|	�+|	�,|	�-|	�.|	�/|	�0|	�1|	�2|�|	�4|	�5|	�6|	�7|	�8|	�9|	�:|	�;|	�<|	�=|	�>|	�?|	�@|�k|	�B|	�C|	�D|	�E|	�F|	�G|	�H|	�I|	�J|	�K|	�L|	�M|	�N|	�O|��|	�Q	�\	�R	�W	�Saz	�T@	�U@	�V@az@az	�X	�Y@	�Z@	�[@az@	�]	�b	�^az	�_@	�`@	�a@az@	�c	�g	�d@	�e@	�f@az@	�h@	�i@	�j@az@	�l
S�	�m
�	�n@	�o@	�p@	�q	��	�r@	�s	�xaz	�t	�u@	�v@	�w@az@	�yaz	�z	��	�{	��	�|	��	�}	��	�~@	�@	��@|@	��@	��@	��@|@	��	��	��@	��@	��@|@	��@	��	��az	��@az	��@	��@	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��az	��	��az	����v�	��	��v�azgCazaz	��	��	��	��@	��@	��@az@	��	��	��	��	��	��	��	��	��@	��@	��@az@	��@	��@	��@az@	��	��	��@	��@	��@az@	��@	��@	��@az@	��	��	��	��	��@	��@	��@az@	��@	��@	��@az@az	��	��@	��@	��@az@	��	��	��	��az	��	��@	��@	��@az@@	��	��@	��@	��@az@	��	��	��	��	��@	��@	��@	��@	��az	��az	��az	��az	��az	��azaz	��	��az	��az	��azaz	��azw	��@	��@	��@az@	��	��	��@	��@	��@	��@	��@	��@	��@az@	��@	��@	��@az@	��	�	��	�jaz	��	�	�3	�	� 	�	�	�	�	�@	�@	�@az@	�@	�	@	�
@	�@	�@	�
@	�@az@	�	�	�@	�@	�@	�@	�@	�@	�@az@	�@	�@	�@	�@	�@	�@	�@az@	�!	�&	�"@	�#@	�$@	�%@az@	�'	�+	�(@	�)@	�*@|@	�,@	�-@	�.@	�/@	�0@	�1@	�2@az@	�4	�O	�5	�>	�6	�:	�7@	�8@	�9@az@	�;@	�<@	�=@az@	�?	�G	�@@	�A@	�B@	�C@	�D@	�E@	�F@az@	�H@	�I@	�J@	�K@	�L@	�M@	�N@az@	�P	�]	�Q	�Y	�R@	�S@	�T@	�U@	�V@	�W@	�X@az@	�Z@	�[@	�\@az@	�^	�f	�_@	�`@	�a@	�b@	�c@	�d@	�e@az@	�g@	�h@	�i@az@	�k	�m	�l	��	�m	��	�n	�{	�o	�w	�p@	�q@	�r@	�s@	�t@	�u@	�v@|@	�x@	�y@	�z@az@	�|	��	�}@	�~@	�@az@	��@	��@	��@	��@	��az	��az	��	��	��az	��az	��az	��az	��az	��az	��az	��	��	��az	���y	���y	���y	���y	���y	���y	���y	���y	���y	���y	���y	���y	���y	���y	���yaz�yb�ubaz	��	��ww	��w	��	��w	��ww	��w	���yw	��	��	��	��	��@	��@	��@	��@	��@	��@	��@az@	��@	��@	��@	��@	��@	��@	��@az@	��	��	��@	��@	��@	��@	��@	��@	��@|@	��@	��@	��@az@	��	�V	��	�M	��	��	��@	��@	��@az@	��@	��@	��@	��@	��	��	��az	��	��az	��	��az	��azaz	��v�az	��az	��az	��	��azv�	��azw�az	��	�	��	��az	��	��	��	��	��az	����	��	��S����S�	��	��	��	�������w8	��	��������	��	�	��	��	��	��	��	���J����
	��	����J��T	��	�	��	��S������	�	����0v��	�	�	�	�	�	�v�pu��	�		�
��4SC�&	�	�	�
	���4����	�	�V��b��	�	�1	�	�"	�	�	�	�	�	���a���	�	�SQ�TC�Z	�	� 	�	����L��"	�!az�;�	�#	�*	�$	�'	�%	�&�y�KubwU	�(	�)�iwv��1	�+	�.	�,	�-w�w��v�	�/	�0w�kXwFt�	�2	�A	�3	�:	�4	�7	�5	�6w*w�v��"	�8	�9�?v��-�[	�;	�>	�<	�=w��Mwct�	�?	�@mazwaz	�B	�H	�C	�F	�D	�Ew{��^gQ	�Gazw�j	�I	�L	�J	�Ku��v�jgCb�	�N	�R	�O@	�P@	�Q@az@	�S@	�T@	�U@az@	�W	�d	�X	�\	�Y@	�Z@	�[@az@	�]@	�^@	�_@	�`@	�a@	�b@	�c@az@	�e	�i	�f@	�g@	�h@az@	�j@	�k@	�l@az@	�n	��	�o	��	�p	�y	�q@	�r@	�s@	�t@	�u@	�v@	�w@	�x@az@	�z	�~	�{@	�|@	�}@az@	�@	��@	��@	��@	��@	��@	��@az@	��	��	��	��	��@	��@	��@az@	��@	��@	��@	��@	��@	��@	��@az@	��	��	��@	��@	��@az@	��@	��@	��@	��@	��	��	���	���	���	��	���	��	��	��	���	���	���	���az�	����	��	���	����az�	���	��	���	���	���	����az�	��	���	��az	���	��	���	���	��	���	���	����{�	��	��	��	��	��	��	��	���	���kX�	���m	���	���gC�	���	���	����u��	���	��	���	����j	��	��	��	��	��	��	��@	��@	��@	��@	��@	��@	��@az@	��@	��@	��@	��@	��@	��@	��@az@	��	��	��@	��@	��@	��@	��@	��@	��@az@	��@	��@	��@	��@	��@	��@	��@|@	��	�	��	��	��@	��@	��@az@	��@	�@	�@|@	�	�	�@	�@	�@az@	�@	�	@	�
@az@	�	��	�
	�m	�	�A	�	�"	�	�	�	�	�@	�@	�@|@	�@	�@	�@az@	�	�	�@	�@	�@az@	�@	� @	�!@az@	�#	�4	�$	�,	�%@	�&@	�'@	�(@	�)@	�*@	�+@|@	�-@	�.@	�/@	�0@	�1@	�2@	�3@az@	�5	�9	�6@	�7@	�8@az@	�:@	�;@	�<@	�=@	�>@	�?@	�@@az@	�B	�Z	�C	�M	�D	�H	�E@	�F@	�G@az@	�I@	�J@	�K@	�L@wUaz	�N	�V	�O@	�P@	�Q@	�R@	�S@	�T@	�U@|@	�W@	�X@	�Y@az@	�[	�d	�\	�`	�]@	�^@	�_@az@	�a@	�b@	�c@az@	�e	�i	�f@	�g@	�h@az@	�j@	�k@	�l@az@	�n	��	�o	��	�p	�u@	�q	�r@	�s@	�t@az@	�v	�z	�w@	�x@	�y@|@	�{@	�|@	�}@	�~@	�@	��@	��@az@	��	��	��	��	��@	��@	��@az@	��@	��@	��@	��@	��@	��@	��@	��@az	��az	��az	��az	��	��az	��az�azaz	��	��@	��@	��@az@	��	��	��	��	��	��	��@	��@	��@	��@	��@	��@	��@az@	��@	��@	��@az@	��	��	��@	��@	��@	��@	��@	��@	��@az@	��@	��@	��@az@	��	��	��	��	��@	��@	��@az@	��@	��@	��@	��@	��az	��azaz	��az	��	��az	��az	��	��gQb�ubaz	��	��	��@	��@	��@az@	��@	��@	��@az@	��	��	��	�M	��	��	��	��	��	��	��@	��@	��@	��@	��@	��@	��@az@	��@	��@	��@	��@	��@	��@	��@az@	��	��	��@	��@	��@az@	��@	��@	��@	��@	��@	��@	��@az@	��	�'	��	�	��@	��@	��@	��@	��|	��|	��|	�|	�|	�|	�||	�|	�	��|�	�@	�	@	�
@	�@	�az	�
az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	� az	�!az	�"az	�#az	�$az	�%az	�&azw�az	�(	�I	�)@	�*@	�+@	�,@	�-az	�.az	�/az	�0az	�1az	�2az	�3az	�4az	�5az	�6az	�7az	�8az	�9az	�:az	�;az	�<az	�=az	�>az	�?az	�@az	�Aaz	�Baz	�Caz	�Daz	�Eazaz	�F	�G	�Hw�azw�az	�J@	�K@	�L@|@	�N	�i	�O	�\	�P	�X	�Q@	�R@	�S@	�T@	�U@	�V@	�W@az@	�Y@	�Z@	�[@az@	�]	�a	�^@	�_@	�`@az@	�b@	�c@	�d@	�e@	�f@	�g@	�h@az@	�j	�{	�k	�s	�l@	�m@	�n@	�o@	�p@	�q@	�r@az@	�t@	�u@	�v@	�w@	�x@	�y@	�z@az@	�|	��	�}@	�~@	�@az@	��@	��@	��@az@	��@	��@	��	��	��	��	��@	��@	��@az@	��@	��@	��@|@	��	��	��@	��@	��@	��@	��@	��@	��@az@	��@	��@	��@	��@	��@	��@	��@az@	��@	��@	��@	��@	��@	��@	��
,	��	��	��	�D	��	�r	��	�	��	��	��	��	��	��	��	��	��@	��@	��@	��@	��@	��@	��@az@	��@	��@	��@	��@	��@	��@	��@az@	��@	��@	��@	��@az@	��	��	��	��	��@	��@	��@az@	��@	��@	��@az@	��	��	��@	��@	��@	��@	��@	��@	��@az@	��@	��@	��@az@	��	��	��	��	��	��	��@	��@	��@	��@	��@	��@	��@az@	��@	��@	��@	��@	��@	��@	��@az@	��az	��@	��@	��@az@	��	��az	��	��@	��@	��@	��@	��@	��@	��@|@	��	�	�@	�@	�@	�@	�@	�@	�@az@	�@	�	@	�
@az@	�	�C	�
	�$	�	�	�	�	�@	�@	�@	�@	�@	�@	�@az@	�@	�@	�@	�@	�@	�@	�@az@az	� 	�!@	�"@	�#@az@	�%	�2	�&	�.	�'@	�(@	�)@	�*@	�+@	�,@	�-@az@	�/@	�0@	�1@az@	�3	�;	�4@	�5@	�6@	�7@	�8@	�9@	�:@az@	�<@	�=@	�>@	�?@	�@@	�A@	�B@az@	�D	�[	�E	�V	�F	�N	�G@	�H@	�I@	�J@	�K@	�L@	�M@az@	�O@	�P@	�Q@	�R@	�S@	�T@	�U@az@@	�W	�X@	�Y@	�Z@az@	�\	�m	�]	�e	�^@	�_@	�`@	�a@	�b@	�c@	�d@az@	�f@	�g@	�h@	�i@	�j@	�k@	�l@az@@	�n	�o@	�p@	�q@az@	�s	��	�t	��	�u	��	�v	�	�w	�{	�x@	�y@	�z@az@	�|@	�}@	�~@az@	��	��	��@	��@	���az�	��@	��@	��@az@	��	��	��	��	��@	��@	��@az@	��@	��@	��@az@	��	��	��@	��@	��@az@	��@	��@	��@|@	��	��	��	��	��	��	��@	��@	��@az@	��@	��@	��@	��@	��@	��@	��@az@	��	��	��@	��@	��@az@	��@	��@	��@az@	��	��@	��	��@	��@	��@	��@	��@	��@	��@az@	��	��	��@	��@	��@az@	��@	��@	��@	��@	��@	��@	��@az@	��	�	��	��	��	��	��	��	��@	��@	��@	��@	��@	��@	��@|@	��@	��@	��@	��@	��@	��@	��@az@	��	��	��@	��@	��@az@	��@	��@	��@	��@	��@	��@	��@az@	��	��	��	��	��@	��@	��@az@	��@	��@	��@az@	��	��	��@	��@	��@	��@	��@	��@	��@az@	��@	�@	�@	�@	�@	�@	�@|@	�	�&	�	�	�		�	�
@	�@	�@	�
@	�@	�@	�@az@	�@	�@	�@	�@	�@	�@	�@az@	�	�	�@	�@	�@az@	�@	� @	�!@	�"@	�#@	�$@	�%@|@	�'	�;	�(	�7	�)@	�*@	�+@	�,@	�-@	�.@	�/@	�0@	�1az	�2	�4az	�3azgQ	�5	�6b�azt�az	�8@	�9@	�:@az@@	�<	�=@	�>@	�?@	�@@	�A@	�B@	�C@az@	�E	�	�F	��	�G	�~	�H	�c	�I	�V	�J	�N	�K@	�L@	�M@az@	�O@	�P@	�Q@	�R@	�S@	�T@	�U@az@	�W	�_	�X@	�Y@	�Z@	�[@	�\@	�]@	�^@az@	�`@	�a@	�b@az@	�d	�q	�e	�i	�f@	�g@	�h@az@	�j@	�k@	�l@	�m@	�n@	�o@	�p@az@	�r	�z	�s@	�t@	�u@	�v@	�w@	�x@	�y@az@	�{@	�|@	�}@az@	�	��	��	��	��	��	��@	��@	��@az@	��@	��@	��@	��@	��@	��@	��@az@	��	��	��@	��@	��@az@	��@	��@	��@	��@	��@	��@	��@az@	��	��	��	��	��@	��@	��@	��@	��@	��@	��@az@	��@	��@	��@	��@	��@	��@	��@az@	��	��	��@	��@	��@az@	��@	��@	��@az@	��	��	��	��	��	��	��	��	��@	��@	��@	��@	��@	��@	��@az@	��@	��@	��@az@	��az	��@	��@	��@	��@	��@	��@	��@az@	��	��@	��	��@	��@	��@az@	��	��	��@	��@	��@	��@	��@	��@	��@az@	��@	��@	��@	��@	��@	��@	��@az@	��	��	��	��	��	��	��@	��@	��@az@	��@	��@	��@az@	��	��	��@	��@	��@az@	��@	��@	��@	��@	��@	��@	��@az@	��	�	��	�	�@	�@	�@	�@	�@	�@	�@az@	�@	�	@	�
@	�@	�@	�
@	�@az@	�	�	�@	�@	�@az@	�@	�@	�@az@	�	��	�	�M	�	�6	�	�)	�	�!	�@	�@	� @az@	�"@	�#@	�$@	�%@	�&@	�'@	�(@az@	�*	�.	�+@	�,@	�-@az@	�/@	�0@	�1@	�2@	�3@	�4@	�5@az@	�7	�H	�8	�@	�9@	�:@	�;@	�<@	�=@	�>@	�?@az@	�A@	�B@	�C@	�D@	�E@	�F@	�G@az@	�I@	�J@	�K@	�L@az@	�N	�i	�O	�`	�P	�X	�Q@	�R@	�S@	�T@	�U@	�V@	�W@az@	�Y@	�Z@	�[@	�\@	�]@	�^@	�_@az@	�a	�e	�b@	�c@	�d@az@	�f@	�g@	�h@az@	�j	�w	�k	�s	�l@	�m@	�n@	�o@	�p@	�q@	�r@az@	�t@	�u@	�v@az@	�x	��	�y@	�z@	�{@	�|@	�}@	�~@	�@az@	��@	��@	��@	��@	��@	��@	��@az@	��	��	��	��	��	��	��	��	��@	��@	��@az@	��@	��@	��@	��@	��@	��@	��@az@	��@	��@	��@	��@	��@	��@	��@	��@az@	��	��	��	��	��@	��@	��@	��@	��@	��@	��@|@	��@	��@	���az�	��	��	��@	��@	��@az@	��@	��@	��@az@	��	��	��	��	��	��	��@	��@	��@	��@	��@	��@	��@az@	��@	��@	��@	��@	��@	��@	��@|@	��	��	��@	��@	��@	��@	��@	��@	��@az@	��@	��@	��@	��@	��@	��@	��@az@	��	��	��	��	��@	��@	��@	��@	��@	��@	��@az@	��@	��@	��@	��@	��@	��@	��@az@	��	��	��@	��@	��@cW@	��@	��@	��@az@	��
�	��	��	��	�q	��	�:	��	�	��	�
	��	�	��@	�@	�@	�@	�@	�@	�@|@	�@	�@	�	@|@	�	�	�@	�
@	�@	�@	�@	�@	�@az@	�@	�@	�@	�@	�@	�@	�@az@	�	�-	�	�%	�@	�@	� @	�!@	�"@	�#@	�$@az@	�&@	�'@	�(@	�)@	�*@	�+@	�,@az@	�.	�2	�/@	�0@	�1@az@	�3@	�4@	�5@	�6@	�7@	�8@	�9@az@	�;	�Z	�<	�I	�=	�A	�>@	�?@	�@@az@	�B@	�C@	�D@	�E@	�F@	�G@	�H@|@	�J	�R	�K@	�L@	�M@	�N@	�O@	�P@	�Q@az@	�S@	�T@	�U@	�V@	�W@	�X@	�Y@az@	�[	�`	�\@	�]@	�^@	�_@az@	�a	�i	�b@	�c@	�d@	�e@	�f@	�g@	�h@az@	�j@	�k@	�l@	�m@	�n@	�o@	�p@az@	�r	��	�s	��	�t	��	�u	�y	�v@	�w@	�x@az@	�z@	�{@	�|@	�}@	�~@	�@	��@az@	��	��	��@	��@	��@	��@	��@	��@	��@az@	��@	��@	��@az@	��	��	��	��	��@	��@	��@	��@	��@	��@	��@az@	��@	��@	��@az@	��	��	��@	��@	��@	��@	��@	��@	��@|@	��@	��@	��@az@	��	��	��	��	��	��	��@	��@	��@	��@	��@	��@	��@az@	��@	��@	��@	��@	��@	��@	��@az@	��	��	��@	��@	��@	��@	��@	��@	��@az@	��@	��@	��@	��@	��@	��@	��@az@	��	��	��	��	��@	��@	��@	��@	��@	��@	��@az@	��@	��@	��@	��@	��@	��@	��@az@	��	��	��@	��@	��@az@	��@	��@	��@	��@	��@	��@	��@az@	��
i	��
6	��
	��	��	��	��	��@	��@	��@az@	��@	��@	��@az@	��
	��@	��@	��@	��@	��az
az
az




azaz
v�az

	az
v�az

azazv�
azaz

az
azv�
@
@
@
@
@
@
@|@

%

!
@
@
@
@
@
@
 @az@
"@
#@
$@�T@
&
.
'@
(@
)@
*@
+@
,@
-@az@
/@
0@
1@
2@
3@
4@
5@az@
7
R
8
I
9
A
:@
;@
<@
=@
>@
?@
@@az@
B@
C@
D@
E@
F@
G@
H@az@
J
N
K@
L@
M@az@
O@
P@
Q@az@
S
\
T@
U@
V@
W@
X@
Y@
Z@
[@az@
]
e
^@
_@
`@
a@
b@
c@
d@az@
f@
g@
h@az@
j
�
k
~
l
u
m
q
n@
o@
p@az@
r@
s@
t@az@
v
z
w@
x@
y@az@
{@
|@
}@az@

�
�
�
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@|@
�
�
�
�
�
�
�@
�@
�@az@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
x
�
9
�

�
�
�
�
�
�
�@
�@
�@az@
�@
�@
�@az@az
�
�@
�@
�@az@
�
�
�
�
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@az
�
�@
�@
�@
�@
�@
@
@az@






@
@
@
	@

@
@
@az@
@
@
@
@
@
@
@az@


@
@
@az@
@
@
@az@

,
 
(
!@
"@
#@
$@
%@
&@
'@az@
)@
*@
+@az@
-
1
.@
/@
0@|@
2@
3@
4@
5@
6@
7@
8@az@
:
u
;
^
<
M
=
E
>@
?@
@@
A@
B@
C@
D@az@
F@
G@
H@
I@
J@
K@
L@az@
N
V
O@
P@
Q@
R@
S@
T@
U@az@
W@
X@
Y@
Z@
[@
\@
]@az@
_
h
`
d
a@
b@
c@az@
e@
f@
g@az@
i
m
j@
k@
l@az@
n@
o@
p@
q@
r@
s@
t@az@
v@
w@az@
y
�@
z
{
�
|
�
}
�
~@
@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@|@
�
�
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�
�
�
�
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@az@
�
�
�
�
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@@
�
�@
�@
�@
�@
�@
�@
�@az@
�
	
�

�
�
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@


@
@
@az@
@
@
@az@





@

@
@
@
@
@
@az@
@
@
@
@
@
@
@az@

$
@
@
@
 @
!@
"@
#@az@
%@
&@
'@
(@
)@
*@
+@|@
-
�
.
�
/

0
�
1
p
2
Q
3
<
4
8
5@
6@
7@az@
9@
:@
;@az@
=
I
>@
?@
@@
A@az
Baz
Caz
D
Eaz
Faz
Gaz
Hazmaz
J@
K@
L@
M@
N@
O@
P@az@
R
c
S
[
T@
U@
V@
W@
X@
Y@
Z@az@
\@
]@
^@
_@
`@
a@
b@az@
d
l
e@
f@
g@
h@
i@
j@
k@az@
m@
n@
o@az@
q
�
r
�
s
{
t@
u@
v@
w@
x@
y@
z@|@
|@
}@
~@
@
�@
�@
�@az@@
�
�@
�@
�@
�@
�@
�@
�@az@
�
�
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@az@@
�
�@
�@
�@
�@
�@
�@
�@az@
�
�
�
�
�
�
�
�
�@
�@
�@az@
�@
�@
�@az@
�
�
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�
�
�@
�@
�@
�@
�@
�@
�@
�@
��
��
���az
�@
�@
�@az@
�
�
�@
�@
�@az@
�@
�@
�@az@
�
�
�
�
�
�
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@
�@az
�az
�az
�maz
�
�
�@
�@
�@az@
�@
�@
�@az@
�

�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
@az@



@
@
@
@
@
@
	@az@
@
@

@az@

u

K

0




@
@
@az@
@
@
@
@
@
@
@az@
 
(
!@
"@
#@
$@
%@
&@
'@|@
)@
*@
+@
,@
-@
.@
/@az@
1
B
2
:
3@
4@
5@
6@
7@
8@
9@az@
;@
<@
=@
>@
?@
@@
A@az@
C@
D@
E@
F@
G@
H@
I@
J@|@
L
g
M
Z
N
R
O@
P@
Q@az@
S@
T@
U@
V@
W@
X@
Y@az@
[
_
\@
]@
^@az@
`@
a@
b@
c@
d@
e@
f@az@
h@
i
q
j@
k@
l@
m@
n@
o@
p@az@
r@
s@
t@|@@
v@
w
x
}@
y
z@
{@
|@az@
~
�
@
�@
�@az@
�@
�@
�@az@
�
�
�
=
�
�
�
�
�
�
�
�
�@
�@
�@az@
�@
�@
�@az@
�
�
�@
�@
�@az@
�@
�@
�@|@
�
�
�az
�@
�@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@az@
�@
�@
�@|@
�
�
�
�
�
�
�@
�@
�@
�@
�@
�@
�@|@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@
�@az@
�

�az
�az
�az
�

�az
�az
�

�
�az
�
�
�v�w��Kw
�b�
�
���t�v�w
azgQ

azmt�az
az
az
az
az
	az

az

�


�

�

�

�

�

�

�

�

�

�

�

�

�

�
w�
az
az
az
az
az
 
!
&az
"
#az
$az
%azwaz
'
2
(
+az
)az
*azv�
,
/
-
.�
��S�
0
1S���L�y
3
6az
4az
5azv�
7
:
8
9�
��S�
;
<S���L�y
>
}
?
Z
@
M
A
E
B@
C@
D@az@
F@
G@
H@
I@
J@
K@
L@|@
N
R
O@
P@
Q@az@
S@
T@
U@
V@
W@
X@
Y@az@
[
l
\
d
]@
^@
_@
`@
a@
b@
c@az@
e@
f@
g@
h@
i@
j@
k@az@
m
u
n@
o@
p@
q@
r@
s@
t@az@
v@
w@
x@
y@
z@
{@
|@|@
~
�

�
�
�
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@|@
�
�
�@
�@
�@
�@
�@
�@
�@|@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�
�
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
,
�
�
�
�
�
�
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�
�
�@
�@
�@
�@
�@
�@
�@|@
�@
�@
�@az@
�
�
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�

�

�

�@
�@
�@az@
@
@
@az@

	
@
@
@az@

@
@
@az@




@
@
@
@
@
@
@az@
@
@
@
@
@
@
@az@
 
(
!@
"@
#@
$@
%@
&@
'@az@
)@
*@
+@|@
-
q
.
V
/
E
0
8
1@
2@
3@
4@
5@
6@
7@az@
9@
:@
;@
<@
=@
>@
?@
@@
Aaz
Baz
C
Dv�azazv�
F
N
G@
H@
I@
J@
K@
L@
M@az@
O@
P@
Q@
R@
S@
T@
U@az@
W
d
X
\
Y@
Z@
[@az@
]@
^@
_@
`@
a@
b@
c@az@
e
m
f@
g@
h@
i@
j@
k@
l@az@
n@
o@
p@az@
r
�
s
|@
t
u@
v@
w@
x@
y@
z@
{@az@
}
�
~@
@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�@
�az
�@
�@
�@
�@
�@
�@
�@|@
�@
�@
�
�@
�@
�
�
�@
�
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�
�
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@
�@az@@
�@
�@
�@
�
�
j
�
�
�
�@
�@
�
�
�@
�@
�@
�@
�@
�
�@
�@
�@
�@
�@
�@
�@az@
�
c
�
 
�
�
�
�
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@|@
�

�

@
@
@
@
@
@
@az@
@
	@

@
@
@

@
@az@


@
@
@
@
@
@
@az@
@
@
@
@
@
@
@az@
!
@
"
3
#
+
$@
%@
&@
'@
(@
)@
*@az@
,@
-@
.@
/@
0@
1@
2@az@
4
<
5@
6@
7@
8@
9@
:@
;@az@
=@
>@
?@az@
A
R
B
J
C@
D@
E@
F@
G@
H@
I@az@
K@
L@
M@
N@
O@
P@
Q@az@
S
[
T@
U@
V@
W@
X@
Y@
Z@az@
\@
]@
^@
_@
`@
a@
b@|@
d
�
e
�
f
s
g
k
h@
i@
j@az@
l@
m@
n@
o@
p@
q@
r@az@
t
|
u@
v@
w@
x@
y@
z@
{@az@
}@
~@
@
�@
�@
�@
�@az@
�
�
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@az@
�
�
�
�
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�
�
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�

�
�
�
�
�
�
e
�
&
�

�
�
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�

�@
�@
�@
�@
@
@
@az@
@
@
@
@
@
	@

@az@




@
@
@
@
@
@
@az@
@
@
@
@
@
@
@az@

"
@
 @
!@az@
#@
$@
%@az@
'
F
(
9
)
1
*@
+@
,@
-@
.@
/@
0@az@
2@
3@
4@
5@
6@
7@
8@az@
:
B
;@
<@
=@
>@
?@
@@
A@az@
C@
D@
E@|@
G
T
H
P
I@
J@
K@
L@
M@
N@
O@az@
Q@
R@
S@az@
U
]
V@
W@
X@
Y@
Z@
[@
\@az@
^@
_@
`@
a@
b@
c@
d@az@
f
�
g
�
h
y
i
q
j@
k@
l@
m@
n@
o@
p@az@
r@
s@
t@
u@
v@
w@
x@az@
z
~
{@
|@
}@az@
@
�@
�@
�@
�@
�@
�@az@
�
�
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@|@
�
�
�
�
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�az
�az
�azaz
�
�az
�az
�az
�az
�az
�az
�azazt�
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�
�
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@��@
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@az@
�
`
�
%
�


�
�
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@az@
�

�@
@
@
@
@
@
@az@
@
@
	@az@





@
@
@|@
@
@
@
@
@
@
@|@

!
@
@
@
@
@
@
 @az@
"@
#@
$@az@
&
=
'
0
(
,
)@
*@
+@az@
-@
.@
/@az@
1
5
2@
3@
4@az@
6@
7@
8@
9@
:@
;@
<@az@
>
O
?
G
@@
A@
B@
C@
D@
E@
F@az@
H@
I@
J@
K@
L@
M@
N@az@
P
X
Q@
R@
S@
T@
U@
V@
W@az@
Y@
Z@
[@
\@
]@
^@
_@az@
a
�
b
�
c
t
d
l
e@
f@
g@
h@
i@
j@
k@az@
m@
n@
o@
p@
q@
r@
s@az@
u
}
v@
w@
x@
y@
z@
{@
|@az@
~@
@
�@az@
�
�
�
�
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@az@
�
�
�
�
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@az@
�
�
�@
�@
�@az@
�@
�@
�@az@
�
�
�
�
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@L�@
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@az@
�
	�
�
	T
�
	
�
�
�
�
�
�
�@
�@
�@
�@
�@
�@
�@|@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@az@
�
	
�
�
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
	
		
	@
	@
	@
	@
	@
	@
	@az@
	
@
	@
	@
	
@
	@
	@
	@az@
	
	5
	
	$
	
	
	@
	@
	@
	@
	@
	@
	@az@
	@
	@
	@
	 @
	!@
	"@
	#@az@
	%
	-
	&@
	'@
	(@
	)@
	*@
	+@
	,@az@
	.@
	/@
	0@
	1@
	2@
	3@
	4@az@
	6
	G
	7
	?
	8@
	9@
	:@
	;@
	<@
	=@
	>@az@
	@@
	A@
	B@
	C@
	D@
	E@
	F@az@
	H
	P
	I@
	J@
	K@
	L@
	M@
	N@
	O@az@
	Q@
	R@
	S@|@
	U
	�
	V
	u
	W
	d
	X
	\
	Y@
	Z@
	[@az@
	]@
	^@
	_@
	`@
	a@
	b@
	c@az@
	e
	m
	f@
	g@
	h@
	i@
	j@
	k@
	l@|@
	n@
	o@
	p@
	q@
	r@
	s@
	t@az@
	v
	
	w
	{
	x@
	y@
	z@az@
	|@
	}@
	~@az@
	�
	�
	�@
	�@
	�@
	�@
	�@
	�@
	�@
	�@
	�az
	�azaz
	�
	�az
	�azb�
	�
	�azb�az
	�@
	�@
	�@az@
	�
	�
	�
	�
	�
	�
	�@
	�@
	�@|@
	�@
	�@
	�@
	�@
	�@
	�@
	�@az@
	�
	�
	�@
	�@
	�@|@
	�@
	�@
	�@
	�@
	�@
	�@
	�@az@
	�
	�
	�
	�
	�@
	�@
	�@|@
	�@
	�@
	�@
	�@
	�@
	�@
	�@az@
	�
	�
	�@
	�@
	�@
	�@
	�@
	�@
	�@az@
	�@
	�@
	�@az@
	�

Z
	�


	�
	�
	�
	�
	�
	�
	�@
	�@
	�@
	�@
	�@
	�@
	�@
	�@az
	�az
	�
	�azaz
	�
	�az
	�az
	�azt�az
	�@
	�@
	�@
	�@
	�@
	�@
	�@az@
	�
	�
	�@
	�@
	�@
	�@
	�@
	�@
	�@az@
	�@
	�@
	�@az@
	�


	�
	�
	�@
	�@
	�@
	�@
	�@
	�@
	�@az@

@

@

@

@

@

@

@��@





	@


@

@az@


@

@

@

@

@

@

@az@



0









@

@

@az@

@

@

@az@

 

(

!@

"@

#@

$@

%@

&@

'@|@

)@

*@

+@

,@

-@

.@

/@az@

1

I

2

E

3@

4@

5@

6@

7@

8@

9@

:@az

;

<azaz

=

>az

?az

@

C

A

Baz��azw

Dazwaz

F@

G@

H@az@

J

R

K@

L@

M@

N@

O@

P@

Q@az@

S@

T@

U@

V@

W@

X@

Y@|@

[

�

\

s

]

f

^

b

_@

`@

a@|@

c@

d@

e@az@

g

o

h@

i@

j@

k@

l@

m@

n@az@

p@

q@

r@az@

t

�

u

y

v@

w@

x@az@

z@

{@

|@

}@

~@

@

�@az@

�

�

�@

�@

�@|@

�@

�@

�@az@

�

�

�

�

�

�

�@

�@

�@az@

�@

�@

�@|@

�

�

�@

�@

�@

�@

�@

�@

�@az@

�@

�@

�@

�@

�@

�@

�@az@

�

�

�

�

�@

�@

�@

�@

�@

�@

�@az@

�@

�@

�@az@

�

�

�@

�@

�@

�@

�@

�@

�@|@

�@

�@

�@

�@

�@

�@

�@az@

�
�

�
�

�
h

�
%

�

�

�

�

�

�

�@

�@

�@az@

�@

�@

�@

�@

�@

�@

�@az@

�

�

�@

�@

�@

�@

�az

�az

�azaz

�

�az

�az

�

�

�az

�az

�azaz

�v�az

�az

�az

�az

�azgCaz

�@

�@

�@az@

�


�


�@

�@

�@

�@

�az

�az

�az

�az

�az

�az

�az
az
az
az
azaz

az
az
azaz

	az

az
az
az

az
az
az
az
az
az
az�
az
@
@
@
@
@
@
@|@

!
@
@
 @az@
"@
#@
$@az@
&
I
'
8
(
0
)@
*@
+@
,@
-@
.@
/@az@
1@
2@
3@
4@
5@
6@
7@az@
9
A
:@
;@
<@
=@
>@
?@
@@az@
B@
C@
D@
E@
F@
G@
H@az@
J
W
K
O
L@
M@
N@az@
P@
Q@
R@
S@
T@
U@
V@az@
X
`
Y@
Z@
[@
\@
]@
^@
_@az@
a@
b@
c@
d@
e@
f@
g@az@
i
�
j
�
k
t
l
p
m@
n@
o@az@
q@
r@
s@az@
u
}
v@
w@
x@
y@
z@
{@
|@az@
~@
@
�@
�@
�@
�@
�@az@
�
�
�
�
�@
�@
�@
�@
�@
�@
�@|@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@az@
�
�
�
�
�
�
�@
�@
�@az@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�
�
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
f
�
/
�

�
�
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@
�@
�@
�az
�az
�azaz
�
�az
�az
�azv�az
�@
�@
�@
�@
�@
�@
@az@




@
@
@
@
@
	@

@az@
@

@
@
@
@
@
@az@

'
@
@
@
@
az
az
az
az
az
az
az
 az
!az
"
%
#
$azkXkXaz
&azgCw
(@
)@
*@
+@
,@
-@
.@az@
0
G
1
:
2
6
3@
4@
5@az@
7@
8@
9@az@
;
C
<@
=@
>@
?@
@@
A@
B@az@
D@
E@
F@az@
H
U
I
M
J@
K@
L@az@
N@
O@
P@
Q@
R@
S@
T@az@
V
^
W@
X@
Y@
Z@
[@
\@
]@az@
_@
`@
a@
b@
c@
d@
e@az@
g
�
h
�
i
v
j
n
k@
l@
m@az@
o@
p@
q@
r@
s@
t@
u@az@
w

x@
y@
z@
{@
|@
}@
~@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�
�
�@
�@
�@az@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�
�
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@az@
�
�
�@
�@
�@az@
�@
�@
�@az@
�
�
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@az@
�

�
�

N
�


�
�
�
�
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@az@
�@
�@
�@|@
�


�
�
�@
�@
�@
�@
�@
�@
�@az@
�@

@

@az@





@

@

@

@

@

	@

@az@

@


@

@az@



/



"





@

@

@

@

@

@

@az@

@

@

@

@

@

 @

!@az@

#

'

$@

%@

&@az@

(@

)@

*@

+@

,@

-@

.@az@

0

A

1

9

2@

3@

4@

5@

6@

7@

8@az@

:@

;@

<@

=@

>@

?@

@@az@

B

F

C@

D@

E@az@

G@

H@

I@

J@

K@

L@

M@az@

O

�

P

k

Q

Z

R

V

S@

T@

U@az@

W@

X@

Y@az@

[

c

\@

]@

^@

_@

`@

a@

b@|@

d@

e@

f@

g@

h@

i@

j@az@

l

}

m

u

n@

o@

p@

q@

r@

s@

t@az@

v@

w@

x@

y@

z@

{@

|@az@

~

�

@

�@

�@

�@

�@

�@

�@az@

�@

�@

�@

�@

�@

�@

�@az@

�

�

�

�

�

�

�@

�@

�@az@

�@

�@

�@

�@

�@

�@

�@az@

�

�

�@

�@

�@f@

�@

�@

�@

�@

�@

�@

�@az@

�

�

�

�

�@

�@

�@

�@

�@

�@

�@az@

�@

�@

�@

�@

�@

�@

�@az@

�

�

�@

�@

�@

�@

�@

�@

�@az@

�@

�@

�@az@

�
5

�


�

�

�

�

�

�

�@

�@

�@

�@

�@

�@

�@az@

�@

�@

�@az@

�

�

�@

�@

�@

�@

�@

�@

�@az@

�@

�@

�@

�@

�@

�@

�@az@

�

�

�

�

�@

�@

�@az@

�@

�@

�@az@

�

�

�@

�@

�@

�@

�@

�@

�@az@

�@
@
@az@






@
@
@
	@

@
@
@az@
@
@
@az@


@
@
@
@
@
@
@az@
@
@
@az@

,
 
$
!@
"@
#@|@
%@
&@
'@
(@
)az
*az
+az�az
-@
.@
/@
0@
1@
2@
3@
4@az@
6
�
7
n
8
E
9
=
:@
;@
<@az@
>@
?@
@@
A@
B@
C@
D@az@
F
N
G@
H@
I@
J@
K@
L@
M@az@
O@
P@
Q@
R@
Saz
Taz
Uaz
Vaz
Waz
Xaz
Yaz
Zaz
[az
\az
]az
^az
_az
`az
aaz
baz
caz
daz
eaz
faz
gaz
haz
iaz
jaz
kaz
lazaz
mw�az
o
�
p
x
q@
r@
s@
t@
u@
v@
w@az@
y@
z@
{@
|@
}@
~@
@az@
�
�
�@
�@
�@
�@az
�az
�az
�azb�
�@
�@
�@
�@
�@
�@
�@az@
�
�
�
�
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�az
�@
�@
�@
�@
�@
�@
�@|@
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�

�
�
�
�
�
�
�
<
�

�
�
�
�
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@az@
�
�
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@|@
�

�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@

	
@
@
@
@
@
@
@az@

@
@
@az@

%




@
@
@az@
@
@
@az@

!
@
@
@
@
@
@
 @az@
"@
#@
$@az@
&
3
'
/
(@
)@
*@
+@
,@
-@
.@az@
0@
1@
2@az@
4
8
5@
6@
7@az@
9@
:@
;@az@
=
�
>
a
?
P
@
D
A@
B@
C@az@
E@
F@
G@
H@
I|
J|
K|
L||
M
N|
O|||
Q
Y
R@
S@
T@
U@
V@
W@
X@az@
Z@
[@
\@
]@
^@
_@
`@az@
b
o
c
g
d@
e@
f@az@
h@
i@
j@
k@
l@
m@
n@az@
p
x
q@
r@
s@
t@
u@
v@
w@az@
y@
z@
{@
|@
}@
~@
@az@
�
�
�
�
�
�
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�az
�@
�@
�@az@
�
�
�
�
�@
�@
�@
�@
�az
�az
�azaz
�
�az
�azaz
�
�az
�azaz
�az
�v�az
�@
�@
�@az@
�
�
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
/
�
�
�
�
�
�
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@|@
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@az@
�

�

�

@
@
@
@
@
@
@az@
@
	@

@az@



@
@
@az@
@
@
@
@
@
@
@az@

&

"
@
@
@
@
@
 @
!@|@
#@
$@
%@az@
'
+
(@
)@
*@az@
,@
-@
.@az@
0
_
1
H
2
;
3
7
4@
5@
6@az@
8@
9@
:@az@
<
@
=@
>@
?@az@
A@
B@
C@
D@
E@
F@
G@az@
I
R
J
N
K@
L@
M@|@
O@
P@
Q@|@
S
W
T@
U@
V@|@
X@
Y@
Z@
[@
\@
]@
^@az@
`
�
a
r
b
n
c@
d@
e@
f@
g@
h@
i@
j@
k@
l@
m@az@
o@
p@
q@az@
s
{
t@
u@
v@
w@
x@
y@
z@|@
|@
}@
~@
@
�@
�@
�@az@
�
�
�
�
�@
�@
�@
�@
�@
�@
�@
�@
�az
�az
�az
�az
�azaz
�gCaz
�@
�@
�@
�@
��
��
��
���
��
��
��
�
���
�
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
�
��azaz�
�
�
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�
L
�

�
�
�
�
�
�
�@
�@
�@az@
�@
�@
�@az@
�
�
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@
�@
�
�
�
�
�
���|
�
��
��|
�
��|�|
�|�|
�|
�|�6
�
�
�|[��|y|
�

�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
@az@


@
@
@az@
@
@
	@

@
@
@

@az@

.




@
@
@
@
@
@
@az@
@
@
@az@

&
@
 @
!@
"@
#@
$@
%@|@
'@
(@
)@
*@
+@
,@
-@az@
/
<
0
4
1@
2@
3@az@
5@
6@
7@
8@
9@
:@
;@az@
=
A
>@
?@
@@|@
B@
C@
D@
E@
Faz
G
J
H
Iaz��waz
KazgCaz
M
�
N
q
O
`
P
X
Q@
R@
S@
T@
U@
V@
W@az@
Y@
Z@
[@
\@
]@
^@
_@az@
a
i
b@
c@
d@
e@
f@
g@
h@az@
j@
k@
l@
m@
n@
o@
p@az@
r
�
s
{
t@
u@
v@
w@
x@
y@
z@az@
|@
}@
~@
@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@
�@
�@
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�azaz
�az
�az
�az
�v�az
�@
�@
�@
�@
�@
�@
�@az@
�
�
�
�
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�
�
�@
�@
�@
�@
�@
�@
�@f@
�@
�@
�@
�@
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�azazw
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
w
�
8
�

�



@
@
@az@
@
@
@
@
	@

@
@az@


@
@
@az@
@
@
@az@

#


@
@
@
@
@
@
@az@
 @
!@
"@az@
$
(
%@
&@
'@az@
)@
*@
+@
,@
-az
.az
/azaz
0
1az
2az
3az
4az
5az
6az
7azazw
9
\
:
K
;
C
<@
=@
>@
?@
@@
A@
B@az@
D@
E@
F@
G@
H@
I@
J@az@
L
T
M@
N@
O@
P@
Q@
R@
S@az@
U@
V@
W@
X@
Y@
Z@
[@az@
]
j
^
f
_@
`@
a@
b@
c@
d@
e@az@
g@
h@
i@az@
k
o
l@
m@
n@|@
p@
q@
r@
s@
t@
u@
v@az@
x
�
y
�
z
�
{

|@
}@
~@|@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@az@
�
�
�
�
�@
�@
�@az@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�
�
�
�
�@
�@
�@
�@
�@
�@
�@|@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@az@
�
�
�
�
�@
�@
�@az@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�az
�az
�az
�az
�az
�az
�azaz
�
�az
�az
�azv�gC
�@
�@
�@az@
�
p
�
�
�
h
�
5
�

�

�
�
�@
�@
�@
�@
�az
�az
�az
�az
�az
�az
�azaz
�az
�
�azaz
�az��
�@
�@
@
@
@
@
@az@



@
@
	@az@
@
@

@az@




@
@
@az@
@
@
@
@
@
@
@az@

%
@
@
 @
!@
"@
#@
$@az@
&@
'@
(@
)@
*@
+@
,@
-@
.az
/az
0az
1az
2az
3azaz
4gCaz
6
M
7
@
8
<
9@
:@
;@az@
=@
>@
?@az@
A
I
B@
C@
D@
E@
F@
G@
H@az@
J@
K@
L@az@
N
[
O
W
P@
Q@
R@
S@
T@
U@
V@az@
X@
Y@
Z@az@
\
`
]@
^@
_@|@
a@
b@
c@
d@
e@
f@
g@az@
i
�
j
�
k
�
l
p
m@
n@
o@v�@
q@
r@
s@
t@
u@
v@
w@
x@
yaz
zaz
{
�
|az
}az
~az
azjaz
�az
�az
�az
�azjaz
�
�
�@
�@
�@az@
�@
�@
�@az@
�
�
�
�
�@
�@
�@az@
�@
�@
�@|@
�
�
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�
�
�
�
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@|@
�
�
�@
�@
�@az@
�@
�@
�@
�@
�az
�az
�az
�azaz
�az
�
�az
�az
�az
�az
�az�yaz
�
�
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@az@
�@
�@
�@az@
�
�
�
,
�

�
�
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@az@
�@
@
@
@
@
@
@az@




	@

@
@az@

@
@
@
@


az
azaz�az
az
az

az
az
az
az
az
az
azazv�
 
$
!@
"@
#@az@
%@
&@
'@
(@
)@
*@
+@az@
-
�
.
�
/az
0@
1@
2@
3@
4az
5
J
6
?
7azaz
8
9az
:az
;azaz
<
=az
>azaz��
@az
Aaz
Baz
Caz
Daz
Eaz
F
Haz
Gaz��
Iaz��az
Kaz
Laz
Maz
N
T
Oaz
Paz
Qazaz
R
Saz��az
Uaz
V
Z
Wazaz
X
Yaz��az
[az
\az
]
���
^
_az
`az
aaz
baz
caz
daz
e
�az
f
g
�
h
{
i
r
j
n
kaz
laz��
m��az
oaz
paz
qazazw
s
w
taz
uaz
vazaz�
xaz
yaz
zazaz�K
|
�
}
�
~az
az
�
�azv�v�az
�az
�az
�
�azv�v�az
�az
�az
�az
�azazt�
�az
�az
�
�
�az
�az
�azazv�
�az
�az
�azaz�^
�az
�az
�
�
�
�
�
�
�az
�az
�azazw
�az
�az
�azaz{�
�
�
�az
�az
�azaz�
�az
�az
�azaz��
�az
�
�
�az
�az
�azaz�K
�az
�az
�azazw��az
�
�
�@
�@
�@az@
�@
�@
�@az@
�
�
�
�
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@
�@
�M
�M
�M
�M
�MM
�M
�MA�
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@b�@
�
5
�

�

�

�@
�@
�@
�@
�@
�@
�@
�@
�az
�azaz
�
�

�az
�
�
�
�az�b�az
�
���azt�kX
az
az

gQkX�"az
@
@
@
	@

@
@
@az@


@
@
@az@
@
@
@az@

$


@
@
@az@
@
@
@
 @
!@
"@
#@az@
%
-
&@
'@
(@
)@
*@
+@
,@az@
.@
/@
0@
1@
2@
3@
4@az@
6
Q
7
D
8
<
9@
:@
;@az@
=@
>@
?@
@@
A@
B@
C@az@
E
I
F@
G@
H@az@
J@
K@
L@
M@
N@
O@
P@az@
R
_
S
[
T@
U@
V@
W@
X@
Y@
Z@az@
\@
]@
^@|@
`
h
a@
b@
c@
d@
e@
f@
g@az@
i@
j@
k@
l@
m@
n@
o@az@
q
�
r
�
s
�
t
�
u
�
v
~
w@
x@
y@
z@
{@
|@
}@az@
@
�@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@
�@
�@
�az
�az
�
�
�
�
�
�
�azaz
�azu�
�azt�az
�az
�az
�azazt�u�az
�@
�@
�@
�@
�@
�@
�@|@
�
�
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@|@
�
�
�@
�@
�@az@
�@
�@
�@az@
�
�
�
�
�
�
�@
�@
�@|@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�
�
�@
�@
�@|@
�@
�@
�@az@
�
�
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
A
�

�

�

�@
�@
�@
�@
�@
�@
�@az@
@
@
@|@


@
@
@
	@

@
@
@az@
@
@
@
@
@
@
@az@

0

(
@
@
@
@
az
az
az
az
 az
!az
"az
#az
$az
%az
&
'azb�b�az
)@
*@
+@
,@
-@
.@
/@az@
1
9
2@
3@
4@
5@
6@
7@
8@az@
:@
;@
<@
=@
>@
?@
@@az@
B
a
C
T
D
L
E@
F@
G@
H@
I@
J@
K@az@
M@
N@
O@
P@
Q@
R@
S@az@
U
Y
V@
W@
X@az@
Z@
[@
\@
]@
^@
_@
`@|@
b
s
c
k
d@
e@
f@
g@
h@
i@
j@az@
l@
m@
n@
o@
p@
q@
r@az@
t
|
u@
v@
w@
x@
y@
z@
{@az@
}@
~@
@
�@
�@
�@
�@|@@
�
�
�
�
�
�
�
�
�
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�
�
�@
�@
�@
�@
�@
�@
�@|@
�@
�@
�@
�@
�@
�@
�@|@
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�
�
�
�
�@
�@
�@
�@
�@
�@
�@�?@
�@
�@
�@|@
�
�
�@
�@
�@az@
�@
�@
�@az@
�

�
�
�@
�@
�@az@
�@
�@
�@
�@az
�az
�az
�az
�
�
�
�az
�az
�az
�az
�az
�azazm
�azaz
�
�
�az
�az
�az
�azm
�azaz
az
v�az


@
@
@az@
@
	@

@
@
@

@
@az@

�



%

�

[

8

'


@
@
@
@
@
@
@az@
 @
!@
"@
#@
$@
%@
&@|@
(
0
)@
*@
+@
,@
-@
.@
/@az@
1@
2@
3@
4@
5@
6@
7@��@
9
J
:
B
;@
<@
=@
>@
?@
@@
A@|@
C@
D@
E@
F@
G@
H@
I@az@
K
S
L@
M@
N@
O@
P@
Q@
R@|@
T@
U@
V@
W@
X@
Y@
Z@az@
\
�
]
v
^
f
_@
`@
a@
b@
c@
d@
e@|@
g@
h@
i@
j@az
kaz
laz
maz
naz
oaz
paz
qaz
raz
saz
taz
uazv�
w
{
x@
y@
z@|@
|@
}@
~@
@
�@
�@
�@az@
�
�
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�
�
�
�
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@@
�@
�
�@@
�@
�
�@@
�
�@@
�
�@@
�@�
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�
�
�@
�@
�@
�@
�@
�@
�@|@
�@
�@
�@az@
�
�
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�


�
�
�
�
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�

�@
@
@az@
@
@
@
@
@
@
	@az@





@
@
@az@
@
@
@
@
@
@
@az@


@
@
@az@
@
@
 @
!@
"@
#@
$@az@
&
�
'
n
(
C
)
6
*
.
+@
,@
-@az@
/@
0@
1@
2@
3@
4@
5@|@
7
;
8@
9@
:@az@
<@
=@
>@
?@
@@
A@
B@az@
D
U
E
M
F@
G@
H@
I@
J@
K@
L@|@
N@
O@
P@
Q@
R@
S@
T@|@
V
f
W@
X@
Y@
Z@|
[
\||
]
^|
_|
`|
a|
b|
c|
d|
e||��
g@
h@
i@
j@
k@
l@
m@|@
o
�
p
�
q
y
r@
s@
t@
u@
v@
w@
x@|@
z@
{@
|@
}@
~@
@
�@az@
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@az@
�
�
�
�
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@az@
�
�
�
�
�
�
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�
�
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�az
�@
�@
�@|@
�
�
�
�
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�

�

�@
�@
�@
�@
�az
�az
�az
�az
az
az


gQ
az
az
az�azv�az
	@

@
@az@


@
@
@az@
@
@
@
@
@
@
@az@

�

�

O

<

+

'
 @
!@
"@
#@
$@
%@
&@az@
(@
)@
*@|@
,
4
-@
.@
/@
0@
1@
2@
3@az@
5@
6@
7@
8@
9@
:@
;@az@
=
B
>@
?@
@@
A@az@
C
K
D@
E@
F@
G@
H@
I@
J@az@
L@
M@
N@az@
P
o
Q
^
R
Z
S@
T@
U@
V@
W@
X@
Y@az@
[@
\@
]@az@
_
g
`@
a@
b@
c@
d@
e@
f@��@
h@
i@
j@
k@
l@
m@
n@��@
p
y
q
u
r@
s@
t@az@
v@
w@
x@�r@
z
�
{@
|@
}@
~@
@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@|@
�
�
�
�
�
�
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@|@
�
�
�
�
�@
�@
�@az@
�@
�@
�@az@
�
�
�@
�@
�@az@
�@
�@
�@az@
�
�
�
�
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@az@
�@
�@
�@az@
�
g
�
2
�

�


�

�@
�@
�@
�@
�@
@
@az@
@
@
@
@
@
@
	@az@


@

@
@L�@
@
@
@
@
@
@
@az@

%


@
@
@az@
@
@
 @
!@
"@
#@
$@az@
&
.
'@
(@
)@
*@
+@
,@
-@az@
/@
0@
1@az@
3
P
4
G
5
?
6@
7@
8@
9@
:az
;az
<az
=azaz
>gCaz
@@
A@
B@
C@
D@
E@
F@az@
H
L
I@
J@
K@az@
M@
N@
O@az@
Q
Z
R@
S@
T@
U@
V@
W@
X@
Y@az@
[
_
\@
]@
^@az@
`@
a@
b@
c@
d@
e@
f@az@
h
�
i
�
j
{
k
s
l@
m@
n@
o@
p@
q@
r@az@
t@
u@
v@
w@
x@
y@
z@az@
|@
}@
~@
@az@
�
�
�@
�@
�@
�@az@
�
�
�@
�@
�@|@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@�@
�
�
�
�
�@
�@
�@
�@
�@
�@
�@
�@��@
�
�
�@
�@
�@
�@
�@
�@
�@|@
�@
�@
�@az@
�
�@
�
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�
~
�

�
�
�
�
�
�
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@az@
�
�
�@
�@
�@az@
�@
�@
�@az@@
�
�
�
�@
�@
�@|@
�@
�@
�@
�@
�@
�@
�@az@
�

�
�
�
�
�@
�@
�@az@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@
�@az@





@
@
@
@
@
@
	@az@
@
@

@az@


@
@
@az@
@
@
@
@
@
@
@az@

K

4

+

#
 @
!@
"@az@
$@
%@
&@
'@
(@
)@
*@az@
,
0
-@
.@
/@az@
1@
2@
3@az@
5
B
6
>
7@
8@
9@
:@
;@
<@
=@az@
?@
@@
A@az@
C
G
D@
E@
F@az@
H@
I@
J@az@
L
_
M
Z
N
V
O@
P@
Q@
R@
S@
T@
U@az@
W@
X@
Y@az@az
[
\@
]@
^@az@
`
q
a
i
b@
c@
d@
e@
f@
g@
h@az@
j@
k@
l@
m@
n@
o@
p@az@
r
z
s@
t@
u@
v@
w@
x@
y@az@
{@
|@
}@az@

Y
�
&
�

�
�
�
�
�@
�@
�@az@
�@
�@
�@az@
�
�
�
�
�m
�
�
�
�
�m
�m
�m
�b�
�
�
�
�
�
�
�
�
�m
�m
�
�mv�v�m
�m
�
�
�
�v�mt�v�
�mv�gCmv�
�
�azmazm
�mm
�azm
�m
�m
�mm
�
�m
�m
�m
�m
�m
�m
�m
�m
�m
�m
�mm
�
�m
�m
�mm
�
�m
�m
�m
�m
�m
�m
�mv�m
�m
�m
�m
�mm
�
�m
�m
�mm
�
�m
�mm
�v�mm
�
�
�m
�
�m
�m
�m
�m
�m
�m
�m
�m
�m
�m
�mv�m
�m
�
�
�mm
�
�mm
�
�mm
�
�mm
�m
�
�mmv�
�mm
�
�mm
�
�mm
�
�m
�m
�m
�mmv�
�@
�@
�@
�@
azb�

az
az
az
az
az
az
az
	az

azazw�




@
@
@az@
@
@
@
@
@
@
@az@


@
@
@az@
@
 @
!@
"@
#@
$@
%@az@
'
B
(
5
)
-
*@
+@
,@az@
.@
/@
0@
1@
2@
3@
4@az@
6
:
7@
8@
9@az@
;@
<@
=@
>@
?@
@@
A@az@
C
L@
D
E@
F@
G@
H@
I@
J@
K�az�
M
U
N@
O@
P@
Q@
R@
S@
T@az@
V@
W@
X@az@
Z
�
[
v
\
i
]
a
^@
_@
`@|@
b@
c@
d@
e@
f@
g@
h@az@
j
n
k@
l@
m@az@
o@
p@
q@
r@
s@
t@
u@az@
w
�
x
�
y@
z@
{@
|@
}@
~@
@az@
�@
�@
�@az@
�
�
�@
�@
�@az@
�@
�@
�@|@
�
�
�
�
�
�
�@
�@
�@|@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@az@
�
�
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@az@@
�
�@
�@
�@az@
�
x
�

�
�
�
�
�
�
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@az@
�
�
�
�
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@|@
�

�
�@
�
�@
�@
�@az@
�
�
�@
�@
�@az@
�@
@
@
@
@
@
@az@

@

	@

@
@az@@

@
@
@
@
az
az
az
azaz

azaz
az

az
azaz
w�az

A

2
 
)
!
%
"@
#@
$@az@
&@
'@
(@az@@
*
+@
,@
-@
.@
/@
0@
1@az@
3
8
4@
5@
6@
7@az@
9
=
:@
;@
<@az@
>@
?@
@@az@
B
Y
C
H@
D
E@
F@
G@az@
I
U
J@
K@
L@
M@
Nazaz
Oaz
Paz
Q
Raz
Sazaz
Taz�
V@
W@
X@az@
Z
g
[
c
\@
]@
^@
_@
`@
a@
b@az@
d@
e@
f@|@
h
l
i@
j@
k@az@
m@
n@
o@
p@
qaz
raz
saz
taz
uaz
vaz
wazazgQ
y
�
z
�
{
�
|
�
}
�
~@
@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@�@
�@
�@
�@�@
�
�
�
�
�@
�@
�@|@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
��
��
��
��
��
��az�
�@
�@
�@
�@
�@
�@
�@|@
�
�
�
�
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@az@
�
�
�@
�@
�@az@
�@
�@
�@az@
�
�
�az
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
K
�
�az
�
�
�
�@
�@
�@|@
�@
�@
�@
�@
�@
�@
�@az@
�
�@
�
�@
�@
�@
�@
�@
�@
�@az@
�
G
���
��
��
��


��
��
��
��
��
	����


��
��

����

��
��
��
��
��
��
��
��
��
����

��
����
��
����
��
 ��
!��
"��
#��
$
;
%
0
&
-
'
*
(
)��r����
+
,�BI�����
.��
/����
1
8
2
5
3
4�v��,�:
6
7�?�H�V�n
9��
:���d�s
<��
=
D
>
A
?
@�������
B
C����W@
E��
F������
H@
I@
J@az@
L
[
M
V@
N
O@
P@
Q@
R@
S@
T@
U@az@@
W
X@
Y@
Z@az@
\
e
]
a
^@
_@
`@F�@
b@
c@
d@az@
f@
g@
h@
i@az@
k
J
l
%y
m
"k
n
 �
o
'
p
�
q
�
r
�
s
|
t
x
u@
v@
w@az@
y@
z@
{@az@
}@
~@
@
�@az@
�
�
�
�
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@az@
�
�
�
�
�
�
�@
�@
�@|@
�@
�@
�@az@
�
�
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�
�
�@
�@
�@az@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@
�@�@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�
�
�
�
�
�
�@
�@
�@az@
�@
�@
�@az@
�
�
�@
�@
�@az@
�@
�@
�@az@
�
�
�
�
�@
�@
�@��@
�@
�@
�@
�@
�|
�|
�|
�|
�|
�|
�
�|��|
�
�
�@
�@
�@az@
�@
�@
�@az@
�

�

�
�
�@
�@
�@az@
@
@
@az@


@
@
@az@
	@

@
@
@

@
@
@az@




@
@
@|@
@
@
@az@

#
@
@
@
@
 @
!@
"@|@
$@
%@
&@az@
(
 �
)
 ]
*
A
+
8
,
0
-@
.@
/@az@
1@
2@
3@
4@
5@
6@
7@az@
9
=
:@
;@
<@az@
>@
?@
@@�@
B
 H
C
 D
D@
E@
F@
G@
Haz
Iaz
Jaz
KgQ
Laz
Maz
Nazaz
O
P
�
Q
�
R
�az
S
T
~
U
cgQ
V
WgQ
XgQgQ
YgQ
Z
[gQgQ
\gQ
]
^gQ
_gQ
`gQ
agQgQ
bgQ��
d
q
egQ
fgQgQ
g
hgQ
igQ
jgQgQ
k
lgQ
mgQ
ngQ
ogQ
pgQgQ��
rgQ
sgQgQ
tgQ
u
vgQgQ
wgQ
x
ygQ
zgQ
{gQgQ
|
}gQ��gQ
gQ
�
�gQ
�
�gQgQ
�gQ
�
�gQgQ
�gQ
�gQ
�gQ
�gQ
�
�gQ
�gQgQ��
�gQgQ
�
�gQgQ
�
�gQgQ
�
�gQgQ
�gQ
�gQ
�gQ
�gQ
���gQ
�
�
�
�
�
�
�gQ
�gQ
�gQgQ
�gQ
�gQ
�
�gQgQ
�
�gQgQ
�gQ
�
�gQ
�gQgQ��
�
�
�gQgQ
�
�gQ
�gQ
�gQ
�gQgQ
�gQ
�gQ
�
�gQ
�gQ
�gQ��gQgQ
�
�gQgQ
�gQ
�gQ
�gQ
�gQ
�
�gQ
�gQ
�gQ
�gQ
�gQ��gQ
�gQ
�
�
�gQ
�gQ
�gQ
�gQgQ
�gQ
�
�gQgQ
�
�gQ
�gQgQ
�gQ
���gQ
�gQ
�gQgQ
�gQ
�
�gQ
�gQgQ
�gQ
�gQ
�gQ
�
�gQ
�gQgQ��
�gQ
�gQ
�gQ
�gQ
�gQ
�gQ
�gQ
�gQ
�gQ
�gQ
�gQ
�gQgQ
�gQ
�gQ
���gQaz
�az�
�az
�az
�
 
�az
�az
�azaz
�
�
 az
�
�az
�azaz
 
 az
 az
 azaz
 az
 az
 azw�
 
 az
 	az
 
az
 az
 az
 
 azaz
 
 az
 azazw�
 az
 az
 azaz
 
 azaz
 
 azaz
 
 azw�az
 
 5
 az
 az
  az
 !az
 "az
 #
 ,
 $az
 %az
 &azaz
 'az
 (
 )az
 *az
 +azw�az
 -azaz
 .
 /azaz
 0az
 1
 2azaz
 3
 4azw�az
 6az
 7azaz
 8
 9azaz
 :
 ;azaz
 <az
 =
 >azaz
 ?az
 @
 Aazaz
 Baz
 Cazw�
 E@
 F@
 G@az@
 I
 Y
 J@
 K@
 L@
 M@
 Naz
 Oaz
 Paz
 Qazaz
 Raz
 S
 Taz
 Uazaz
 Vaz
 W
 Xazazv�
 Z@
 [@
 \@�T@
 ^
 q
 _
 h
 `
 d
 a@
 b@
 c@az@
 e@
 f@
 g@az@
 i
 m
 j@
 k@
 l@az@
 n@
 o@
 p@az@
 r
 {
 s
 w
 t@
 u@
 v@az@
 x@
 y@
 z@az@
 |
 �
 }@
 ~@
 @az@
 �@
 �@
 �@az@
 �
 �
 �
 �
 �
 �
 �
 �
 �@
 �@
 �@L�@
 �@
 �@
 �@az@
 �
 �
 �@
 �@
 �@az@
 �@
 �@
 �@az@
 �
 �
 �
 �
 �@
 �@
 �@az@
 �@
 �@
 �@az@
 �
 �
 �@
 �@
 �@az@
 �@
 �@
 �@az@
 �
 �
 �
 �
 �
 �
 �@
 �@
 �@az@
 �@
 �@
 �@az@
 �
 �
 �@
 �@
 �@�c@
 �@
 �@
 �@az@
 �
 �
 �
 �
 �@
 �@
 �@az@
 �@
 �@
 �@az@
 �
 �
 �@
 �@
 �@az@
 �@
 �@
 �@az@
 �
!�
 �
!
 �
 �
 �
 �
 �
 �
 �
 �
 �@
 �@
 �@az@
 �@
 �@
 �@az@
 �
 �
 �@
 �@
 �@az@
 �@
 �@
 �@az@@
 �
 �
 �
 �@
 �@
 �@az@
 �@
 �@
 �@az@
 �
!
 �
 �
 �@
 �@
 �@
 �@az@@
 �
 �@
 �@
 �@az@
!
!@
!
!@
!@
!@|@
!@
!@
!	@
!
@az@
!
!?
!
!,
!
!#
!
!
!@
!@
!@
!@
!az
!az
!az
!az
!azaz
!
!az
!az
!azaz
!
!azgCaz
! @
!!@
!"@i@@
!$
!(
!%@
!&@
!'@az@
!)@
!*@
!+@az@
!-
!6
!.
!2
!/@
!0@
!1@az@
!3@
!4@
!5@az@
!7
!;
!8@
!9@
!:@az@
!<@
!=@
!>@az@
!@
!O
!A
!Jaz
!B
!C@
!D@
!E@
!F@
!G@
!H@
!I@az@
!K@
!L@
!M@
!N@az@
!P
!�
!Q
!U
!R@
!S@
!T@az@
!Vaz
!Waz
!Xaz
!Yaz
!Z
!�
![
!uaz
!\
!]az
!^azaz
!_
!`azaz
!a
!baz
!cazaz
!d
!eaz
!faz
!gaz
!haz
!iaz
!jaz
!kaz
!laz
!maz
!naz
!oaz
!paz
!qaz
!raz
!saz
!tazv�az
!vazaz
!w
!xazaz
!yaz
!zaz
!{
!|az
!}azaz
!~az
!
!�az
!�az
!�az
!�az
!�az
!�az
!�az
!�az
!�az
!�az
!�az
!�az
!�az
!�az
!�azv�azaz
!�
!�
!�
!�az
!�az
!�az
!�az
!�azaz
!�
!�azaz
!�v�azaz
!�
!�az
!�az
!�az
!�az
!�az
!�az
!�az
!�az
!�az
!�az
!�az
!�azaz
!�az
!�az
!�az
!�
!�az
!�az
!�az
!�az
!�az
!�az
!�azv�az
!�
!�
!�@
!�@
!�@az@
!�@
!�@
!�@|@
!�
"
!�
!�
!�
!�
!�
!�
!�
!�
!�@
!�@
!�@
!�@
!�@
!�@
!�@az@
!�@
!�@
!�@az@
!�
!�
!�@
!�@
!�@
!�@
!�@
!�@
!�@|@
!�@
!�@
!�@az@
!�
!�az
!�
!�@
!�@
!�@az@
!�
!�
!�@
!�@
!�@az@
!�@
!�@
!�@az@
!�
!�
!�
!�
!�
!�
!�@
!�@
!�@az@
!�@
!�@
!�@�@
!�
!�
!�@
!�@
!�@az@
!�@
!�@
!�@|@
!�
"
!�
"
"@
"@
"@az@
"@
"@
"@
"@
"@
"	@
"
@az@
"
"
"
@
"@
"@az@
"@
"@
"@az@
"
"<
"
")
"
" 
"
"
"@
"@
"@az@
"@
"@
"@az@
"!
"%
""@
"#@
"$@az@
"&@
"'@
"(@az@
"*
"3
"+
"/
",@
"-@
".@|@
"0@
"1@
"2@az@
"4
"8
"5@
"6@
"7@az@
"9@
":@
";@az@
"=
"P
">
"G
"?@
"@@
"A@
"B@
"C@
"D@
"E@
"F@az@
"H
"L
"I@
"J@
"K@az@
"M@
"N@
"O@�@
"Q
"^
"R
"V
"S@
"T@
"U@az@
"W@
"X@
"Y@
"Z@
"[@
"\@
"]@az@
"_
"g
"`@
"a@
"b@
"c@
"d@
"e@
"f@az@
"h@
"i@
"j@az@
"l
#�
"m
#
"n
"�
"o
"�
"p
"�
"q
"~
"r
"z
"s@
"t@
"u@
"v@
"w@
"x@
"y@|@
"{@
"|@
"}@az@
"
"�
"�@
"�@
"�@az@
"�@
"�@
"�@az@
"�
"�
"�
"�
"�@
"�@
"�@az@
"�@
"�@
"�@az@
"�
"�
"�@
"�@
"�@�'@
"�@
"�@
"�@az@
"�
"�
"�
"�
"�
"�
"�@
"�@
"�@az@
"�@
"�@
"�@az@
"�
"�
"�@
"�@
"�@
"�@
"�@
"�@
"�@|@
"�@
"�@
"�@az@
"�
"�
"�@
"�@
"�@
"�@az@
"�
"�
"�@
"�@
"�@
"�@
"�@
"�@
"�@az@
"�@
"�@
"�@az@
"�
"�
"�
"�
"�
"�
"�
"�
"�@
"�@
"�@|@
"�@
"�@
"�@az@
"�
"�
"�@
"�@
"�@az@
"�@
"�@
"�@az@
"�
"�
"�@
"�@
"�@
"�@az@
"�
"�
"�@
"�@
"�@
"�@
"�@
"�@
"�@az@
"�@
"�@
"�@az@
"�
#
"�
"�
"�
"�
"�@
"�@
"�@az@
"�@
"�@
"�@az@
"�
"�
"�@
"�@
"�@|@
"�@
"�@
#@az@
#
#
#
#
#@
#@
#@az@
#@
#	@
#
@az@
#
#
#
@
#@
#@
#@
#@
#@
#@az@
#@
#@
#@
#@
#@
#@
#@az@
#
#p
#
#A
#
#2
# 
#)
#!
#%
#"@
##@
#$@az@
#&@
#'@
#(@az@
#*
#.
#+@
#,@
#-@|@
#/@
#0@
#1@az@
#3
#8@
#4
#5@
#6@
#7@az@
#9
#=
#:@
#;@
#<@az@
#>@
#?@
#@@|@
#B
#Y
#C
#L
#D
#H
#E@
#F@
#G@az@
#I@
#J@
#K@az@
#M
#Q
#N@
#O@
#P@az@
#R@
#S@
#T@
#U@
#V@
#W@
#X@az@
#Z
#g
#[
#c
#\@
#]@
#^@
#_@
#`@
#a@
#b@az@
#d@
#e@
#f@az@
#h
#l
#i@
#j@
#k@az@
#m@
#n@
#o@az@
#q
#�
#r
#�
#s
#|
#t
#x
#u@
#v@
#w@az@
#y@
#z@
#{@az@
#}
#�
#~@
#@
#�@az@
#�@
#�@
#�@az@
#�
#�
#�
#�
#�@
#�@
#�@az@
#�@
#�@
#�@�@
#�
#�
#�@
#�@
#�@az@
#�@
#�@
#�@az@
#�
#�
#�
#�az
#�
#�@
#�@
#�@az@
#�
#�
#�@
#�@
#�@az@
#�@
#�@
#�@
#�@
#�@
#�@
#�@az@
#�
#�
#�
#�
#�@
#�@
#�@az@
#�@
#�@
#�@|@
#�
#�
#�@
#�@
#�@|@
#�@
#�@
#�@az@
#�
$�
#�
$R
#�
$
#�
#�
#�
#�
#�
#�
#�az
#�
#�az
#�az
#�
#�az
#�azaz
#�az
#�
#�az
#�azaz
#�az
#�
#�az
#�azaz
#�azv�
#�az
#�az
#�azaz
#�
#�az
#�az
#�azaz
#�
#�az
#�az
#�azaz
#�
#�azgCaz
#�@
#�@
#�@az@
#�
#�
#�@
#�@
#�@|@
#�@
#�@
#�@az@
#�
$
#�
#�
#�@
#�@
#�@|@
#�@
#�@
#�@
#�@
#�az
#�az
#�az
#�az
#�az
$az
$az
$az
$az
$az
$azv�az
$
$
$@
$	@
$
@az@
$@
$
@
$@|@
$
$#
$
$
$
$
$@
$@
$@az@
$@
$@
$@az@
$
$
$@
$@
$@|@
$ @
$!@
$"@|@
$$
$-
$%
$)
$&@
$'@
$(@az@
$*@
$+@
$,@az@
$.
$2
$/@
$0@
$1@az@
$3@
$4@
$5@
$6@
$7az
$8azaz
$9az
$:
$;az
$<az
$=azaz
$>
$?az
$@az
$Aaz
$Baz
$Caz
$Daz
$Eaz
$Faz
$Gaz
$Haz
$Iaz
$Jaz
$Kaz
$Laz
$Maz
$Naz
$Oaz
$Paz
$Qazazw�
$S
$�
$T
$�
$U
$^
$V
$Z
$W@
$X@
$Y@|@
$[@
$\@
$]@az@
$_
$c
$`@
$a@
$b@az@
$d@
$e@
$f@
$g@
$h|
$i|
$j|
$k
$v
$l|
$m|
$n|
$o|
$p
$s|
$q
$r||�
$t|
$u|��|
$w|
$x|
$y
$~
$z|
${|
$|||
$}|||
$
$�|
$�|
$�|
$�|
$�
$�|
$�|
$�
$�|
$�|
$�|
$�|
$�|
$�||
$�
$�||
$�|
$�
$�||
$���|
$�||
$�|
$�|
$�|
$�|
$�
$�||
$�|
$�|
$�
$�||
$�|
$�|
$�|��
$�
$�
$�az
$�@
$�@
$�@az@
$�
$�
$�@
$�@
$�@az@
$�@
$�@
$�@az@
$�
$�
$�
$�
$�
$�
$�@
$�@
$�@az@
$�@
$�@
$�@az@
$�
$�
$�@
$�@
$�@az@
$�@
$�@
$�@az@
$�
$�
$�
$�
$�@
$�@
$�@�@
$�@
$�@
$�@|@
$�
$�
$�@
$�@
$�@az@
$�@
$�@
$�@az@
$�
%
$�
$�
$�
$�
$�
$�
$�
$�
$�@
$�@
$�@az@
$�@
$�@
$�@az@
$�
$�
$�@
$�@
$�@az@
$�@
$�@
$�@az@
$�
$�
$�
$�
$�@
$�@
$�@�E@
$�@
$�@
$�@az@
$�az
$�@
$�@
$�@|@
$�
%
$�
%
%
%
%@
%@
%@az@
%@
%@
%@az@
%	@
%
@
%@
%@az@
%
%@
%
%@
%@
%@az@
%
%
%@
%@
%@az@
%@
%@
%@az@
%
%V
%
%-
%
%(
% 
%$
%!@
%"@
%#@az@
%%@
%&@
%'@az@@
%)
%*@
%+@
%,@az@
%.
%7
%/
%3
%0@
%1@
%2@az@
%4@
%5@
%6@az@
%8
%R
%9@
%:@
%;@
%<@
%=�
%>�
%?�
%@
%J
%A�
%B�
%C�
%D��@
%E
%F
%H�@
%G�]���@
%I�@�
%K�
%L�
%M�
%N�
%O�
%P��
%Q�@�
%S@
%T@
%U@az@
%W
%j
%X
%a
%Y
%]
%Z@
%[@
%\@az@
%^@
%_@
%`@|@
%b
%f
%c@
%d@
%e@az@
%g@
%h@
%i@az@
%k
%p
%l@
%m@
%n@
%o@az@
%q
%u
%r@
%s@
%t@az@
%v@
%w@
%x@az@
%z
F.
%{
&�
%|
&,
%}
%�
%~
%�
%
%�
%�
%�
%�
%�
%�@
%�@
%�@az@
%�@
%�@
%�@az@
%�
%�
%�@
%�@
%�@az@
%�@
%�@
%�@|@
%�
%�
%�
%�
%�@
%�@
%�@az@
%�@
%�@
%�@az@
%�@
%�@
%�@
%�@az@
%�
%�
%�
%�
%�
%�
%�@
%�@
%�@|@
%�@
%�@
%�@az@
%�
%�
%�@
%�@
%�@az@
%�@
%�@
%�@az@
%�
%�
%�
%�
%�@
%�@
%�@|@
%�@
%�@
%�@|@
%�
%�
%�@
%�@
%�@az@
%�@
%�@
%�@az@
%�
&	
%�
%�
%�
%�
%�
%�
%�@
%�@
%�@
%�@
%�
%�
%�
%�
%��
%��
%�
%�
%��
%�az�az�
%��
%��
%�
%��
%��
%�
%��azgQ�
%��gQ�
%��
%��
%��az
%�az
%�az
%�az
%�az
%�az
%�az
%�azv�
%�@
%�@
%�@|@
%�
%�
%�@
%�@
%�@az@
%�@
%�@
%�@az@
%�
&
%�
&
%�@
%�@
%�@az@
&@
&@
&@az@az
&
&@
&@
&@|@
&

&
&
&
&
&
&
@
&@
&@az@
&@
&@
&@az@
&
&
&@
&@
&@az@
&@
&@
&@az@
&
&'
&
&#
& @
&!@
&"@az@
&$@
&%@
&&@az@
&(@
&)@
&*@
&+@az@
&-
&x
&.
&Q
&/
&B
&0
&9
&1
&5
&2@
&3@
&4@az@
&6@
&7@
&8@|@
&:
&>
&;@
&<@
&=@az@
&?@
&@@
&A@|@
&C
&L
&D
&H
&E@
&F@
&G@az@
&I@
&J@
&K@|@
&M@
&N@
&O@
&P@az@
&R
&e
&S
&\
&T
&X
&U@
&V@
&W@az@
&Y@
&Z@
&[@az@
&]
&a
&^@
&_@
&`@az@
&b@
&c@
&d@az@
&f
&o
&g
&k
&h@
&i@
&j@az@
&l@
&m@
&n@az@
&p
&t
&q@
&r@
&s@az@
&u@
&v@
&w@f@
&y
&�
&z
&�
&{
&�
&|
&�
&}@
&~@
&@az@
&�@
&�@
&�@|@
&�
&�
&�@
&�@
&�@az@
&�@
&�@
&�@|@
&�
&�@
&�
&�@
&�@
&�@az@
&�az
&�@
&�@
&�@az@
&�
&�
&�
&�
&�
&�
&�@
&�@
&�@az@
&�@
&�@
&�@az@
&�
&�
&�@
&�@
&�@az@
&�@
&�@
&�@|@
&�
&�
&�
&�
&�@
&�@
&�@az@
&�@
&�@
&�@az@
&�
&�
&�@
&�@
&�@az@
&�@
&�@
&�@
&�@
&�az
&�az
&�az
&�az
&�az
&�az
&�az
&�az
&�az
&�az
&�
&�azv�v�az
&�
E�
&�
'
&�
&�
&�
&�
&�
&�
&�
&�
&�@
&�@
&�@az@
&�@
&�@
&�@az@@
&�
&�@
&�@
&�@az@
&�
&�
&�
&�
&�@
&�@
&�@�@
&�@
&�@
&�@az@
&�
&�
&�@
&�@
&�@az@
&�@
&�@
&�@az@
&�
'
&�
&�
&�@
&�@
&�@
&�@az@
&�
&�
&�@
&�@
&�@az@
&�@
'@
'@|@
'
'@
'
'@
'@
'@az@@
'	
'
@
'@
'@az@
'
EF
'
E3
'
E*
'
E&
'
':
'|
'|
'|
'
''
'|
'
'&
'|
'|
'|
'
'!
'|
'|
'||
' �|
'"|
'#|
'$|
'%|�||�|
'(|
')|
'*
'+
'3
',|
'-
'2
'.|
'/|
'0|
'1|�||�
'4||
'5
'6||
'7|
'8
'9|�|
';
62
'<
.�
'=
*�
'>
)=
'?
(>
'@
'�
'A
'�
'B
'a
'C
'R
'D
'K
'E
'H��
'F
'G|��|��
'I
'J|��|
'L
'O��
'M
'N|��|��
'P
'Q|��|
'S
'Z
'T
'W��
'U
'V|��|��
'X
'Y|��|
'[
'^��
'\
']|��|��
'_
'`|��|
'b
'q
'c
'j
'd
'g��
'e
'f|��|��
'h
'i|��|
'k
'n��
'l
'm|��|��
'o
'p|��|
'r
'y
's
'v��
't
'u|��|��
'w
'x|��|
'z
'}��
'{
'||��|��
'~
'|��|
'�
'�
'�
'�
'�
'�
'�
'���
'�
'�|��|��
'�
'�|��|
'�
'���
'�
'�|��|��
'�
'�|��|
'�
'�
'�
'���
'�
'�|��|��
'�
'�|��|
'�
'���
'�
'�|��|��
'�
'�|��|
'�
'�
'�
'�
'�
'���
'�
'�|��|��
'�
'�|��|
'�
'���
'�
'�|��|��
'�
'�|��|
'�
'�
'�
'���
'�
'�|��|��
'�
'�|��|
'�
'���
'�
'�|��|��
'�
'�|��|
'�
'�
'�
'�
'�
'�
'�
'�
'�
'���
'�
'�|��|��
'�
'�|��|
'�
'���
'�
'�|��|��
'�
'�|��|
'�
'�
'�
'���
'�
'�|��|��
'�
'�|��|
'�
'���
'�
'�|��|��
'�
'�|��|
'�
'�
'�
'�
'�
'���
'�
'�|��|��
'�
'�|��|
'�
'���
'�
'�|��|��
'�
'�|��|
'�
'�
'�
'���
'�
'�|��|��
'�
'�|��|
'�
'���
'�
'�|��|��
'�
'�|��|
(
(
(
(
(
(	
(
(��
(
(|��|��
(
(|��|
(

(
��
(
(|��|��
(
(|��|
(
(
(
(��
(
(|��|��
(
(|��|
(
(��
(
(|��|��
(
(|��|
( 
(/
(!
((
("
(%��
(#
($|��|��
(&
('|��|
()
(,��
(*
(+|��|��
(-
(.|��|
(0
(7
(1
(4��
(2
(3|��|��
(5
(6|��|
(8
(;��
(9
(:|��|��
(<
(=|��|
(?
(�
(@
(
(A
(`
(B
(Q
(C
(J
(D
(G��
(E
(F|��|��
(H
(I|��|
(K
(N��
(L
(M|��|��
(O
(P|��|
(R
(Y
(S
(V��
(T
(U|��|��
(W
(X|��|
(Z
(]��
([
(\|��|��
(^
(_|��|
(a
(p
(b
(i
(c
(f��
(d
(e|��|��
(g
(h|��|
(j
(m��
(k
(l|��|��
(n
(o|��|
(q
(x
(r
(u��
(s
(t|��|��
(v
(w|��|
(y
(|��
(z
({|��|��
(}
(~|��|
(�
(�
(�
(�
(�
(�
(�
(�|j
(�
(�||j||j
(�
(�||j|
(�
(�|j
(�
(�||j||j
(�
(�||j|
(�
(�
(�
(�|j
(�
(�||j||j
(�
(�||j|
(�
(�|j
(�
(�||j||j
(�
(�||j|
(�
(�
(�
(�
(�
(�|j
(�
(�||j||j
(�
(�||j|
(�
(�|j
(�
(�||j||j
(�
(�||j|
(�
(�
(�
(�|j
(�
(�||j||j
(�
(�||j|
(�
(�|j
(�
(�||j||j
(�
(�||j|
(�
(�
(�
(�
(�
(�
(�
(�
(�
(�|j
(�
(�||j||j
(�
(�||j|
(�
(�|j
(�
(�||j||j
(�
(�||j|
(�
(�
(�
(�|j
(�
(�||j||j
(�
(�||j|
(�
(�|j
(�
(�||j||j
(�
(�||j|
(�
(�
(�
(�
(�
(�|j
(�
(�||j||j
(�
(�||j|
(�
(�|j
(�
(�||j||j
(�
(�||j|
(�
(�
(�
(�|j
(�
(�||j||j
(�
(�||j|
(�
(�|j
(�
(�||j||j
(�
(�||j|
(�
)
)
)
)
)
)
)|j
)
)||j||j
)
)||j|
)	
)|j
)

)||j||j
)
)||j|
)
)
)
)|j
)
)||j||j
)
)||j|
)
)|j
)
)||j||j
)
)||j|
)
).
) 
)'
)!
)$|j
)"
)#||j||j
)%
)&||j|
)(
)+|j
))
)*||j||j
),
)-||j|
)/
)6
)0
)3|j
)1
)2||j||j
)4
)5||j|
)7
):|j
)8
)9||j||j
);
)<||j|
)>
*:
)?
)�
)@
)
)A
)`
)B
)Q
)C
)J
)D
)G|j
)E
)F||j||j
)H
)I||j|
)K
)N|j
)L
)M||j||j
)O
)P||j|
)R
)Y
)S
)V|j
)T
)U||j||j
)W
)X||j|
)Z
)]|j
)[
)\||j||j
)^
)_||j|
)a
)p
)b
)i
)c
)f|j
)d
)e||j||j
)g
)h||j|
)j
)m|j
)k
)l||j||j
)n
)o||j|
)q
)x
)r
)u|j
)s
)t||j||j
)v
)w||j|
)y
)||j
)z
){||j||j
)}
)~||j|
)�
)�
)�
)�
)�
)�
)�
)�|j
)�
)�||j||j
)�
)�||j|
)�
)�|j
)�
)�||j||j
)�
)�||j|
)�
)�
)�
)�|j
)�
)�||j||j
)�
)�||j|
)�
)�|j
)�
)�||j||j
)�
)�||j|
)�
)�
)�
)�
)�
)�|j
)�
)�||j||j
)�
)�||j|
)�
)�|j
)�
)�||j||j
)�
)�||j|
)�
)�
)�
)�|j
)�
)�||j||j
)�
)�||j|
)�
)�|j
)�
)�||j||j
)�
)�||j|
)�
)�
)�
)�
)�
)�
)�
)�
)�
)���
)�
)�|��|��
)�
)�|��|
)�
)���
)�
)�|��|��
)�
)�|��|
)�
)�
)�
)���
)�
)�|��|��
)�
)�|��|
)�
)���
)�
)�|��|��
)�
)�|��|
)�
)�
)�
)�
)�
)���
)�
)�|��|��
)�
)�|��|
)�
)���
)�
)�|��|��
)�
)�|��|
)�
)�
)�
)���
)�
)�|��|��
)�
)�|��|
)�
)���
)�
)�|��|��
)�
)�|��|
)�
*
*
*
*
*
*
*��
*
*|��|��
*
*|��|
*	
*��
*

*|��|��
*
*|��|
*
*
*
*��
*
*|��|��
*
*|��|
*
*��
*
*|��|��
*
*|��|
*
*+
* 
*'
*!
*$��
*"
*#|��|��
*%
*&|��||
*(��
*)
**|��|
*,
*3
*-
*0��
*.
*/|��|��
*1
*2|��|
*4
*7��
*5
*6|��|��
*8
*9|��|
*;
*�
*<
*x
*=
*\
*>
*M
*?
*F
*@
*C��
*A
*B|��|��
*D
*E|��|
*G
*J��
*H
*I|��|��
*K
*L|��|
*N
*U
*O
*R��
*P
*Q|��|��
*S
*T|��|
*V
*Y��
*W
*X|��|��
*Z
*[|��|
*]
*i
*^
*e
*_
*b��
*`
*a|��|��
*c
*d|��||
*f��
*g
*h|��|
*j
*q
*k
*n��
*l
*m|��|��
*o
*p|��|
*r
*u��
*s
*t|��|��
*v
*w|��|
*y
*�
*z
*�
*{
*�
*|
*��
*}
*~|��|��
*�
*�|��|
*�
*���
*�
*�|��|��
*�
*�|��|
*�
*�
*�
*���
*�
*�|��|��
*�
*�|��|
*�
*���
*�
*�|��|��
*�
*�|��|
*�
*�
*�
*�
*�
*���
*�
*�|��|��
*�
*�|��||
*���
*�
*�|��|
*�
*�
*�
*���
*�
*�|��|��
*�
*�|��|
*�
*���
*�
*�|��|��
*�
*�|��|
*�|
*�
*�
*�
*�
*�
*�
*�
*���
*�
*�|��|��
*�
*�|��|
*�
*���
*�
*�|��|��
*�
*�|��|
*�
*�
*�
*���
*�
*�|��|��
*�
*�|��|
*�
*���
*�
*�|��|��
*�
*�|��|
*�
*�
*�
*�
*�
*���
*�
*�|��|��
*�
*�|��||
*���
*�
*�|��|
*�
*�
*�
*���
*�
*�|��|��
*�
*�|��|
*�
*���
*�
*�|��|��
*�
*�|��|
*�
,�
*�
+�
*�
+s
*�
+4
*�
+
*�
+
*�
*�
*�
*�|�
*�
*�||�||�
*�
*�||�|
+
+|�
+
+||�||�
+
+||�|
+
+
+
+|�
+	
+
||�||�
+
+
||�|
+
+|�
+
+||�||�
+
+||�|
+
+%
+
+
+
+|�
+
+||�||�
+
+||�|
+
+"|�
+ 
+!||�||�
+#
+$||�|
+&
+-
+'
+*|�
+(
+)||�||�
++
+,||�|
+.
+1|�
+/
+0||�||�
+2
+3||�|
+5
+T
+6
+E
+7
+>
+8
+;|�
+9
+:||�||�
+<
+=||�|
+?
+B|�
+@
+A||�||�
+C
+D||�|
+F
+M
+G
+J|�
+H
+I||�||�
+K
+L||�|
+N
+Q|�
+O
+P||�||�
+R
+S||�|
+U
+d
+V
+]
+W
+Z|�
+X
+Y||�||�
+[
+\||�|
+^
+a|�
+_
+`||�||�
+b
+c||�|
+e
+l
+f
+i|�
+g
+h||�||�
+j
+k||�|
+m
+p|�
+n
+o||�||�
+q
+r||�|
+t
+�
+u
+�
+v
+�
+w
+~
+x
+{|�
+y
+z||�||�
+|
+}||�|
+
+�|�
+�
+�||�||�
+�
+�||�|
+�
+�
+�
+�|�
+�
+�||�||�
+�
+�||�|
+�
+�|�
+�
+�||�||�
+�
+�||�|
+�
+�
+�
+�
+�
+�|�
+�
+�||�||�
+�
+�||�|
+�
+�|�
+�
+�||�||�
+�
+�||�|
+�
+�
+�
+�|�
+�
+�||�||�
+�
+�||�|
+�
+�|�
+�
+�||�||�
+�
+�||�|
+�
+�
+�
+�
+�
+�
+�
+�|�
+�
+�||�||�
+�
+�||�|
+�
+�|�
+�
+�||�||�
+�
+�||�|
+�
+�
+�
+�|�
+�
+�||�||�
+�
+�||�|
+�
+�|�
+�
+�||�||�
+�
+�||�|
+�
+�
+�
+�
+�
+�|�
+�
+�||�||�
+�
+�||�|
+�
+�|�
+�
+�||�||�
+�
+�||�|
+�
+�
+�
+�|�
+�
+�||�||�
+�
+�||�|
+�
+�|�
+�
+�||�||�
+�
+�||�|
+�
,r
+�
,3
+�
,
+�
,
+�
+�
+�
+�|�
+�
+�||�||�
+�
+�||�|
+�
,|�
,
,||�||�
,
,||�|
,
,
,
,
|�
,
,	||�||�
,
,||�|
,
,|�
,
,||�||�
,
,||�|
,
,$
,
,
,
,|�
,
,||�||�
,
,||�|
,
,!|�
,
, ||�||�
,"
,#||�|
,%
,,
,&
,)|�
,'
,(||�||�
,*
,+||�|
,-
,0|�
,.
,/||�||�
,1
,2||�|
,4
,S
,5
,D
,6
,=
,7
,:��
,8
,9|��|��
,;
,<|��|
,>
,A��
,?
,@|��|��
,B
,C|��|
,E
,L
,F
,I��
,G
,H|��|��
,J
,K|��|
,M
,P��
,N
,O|��|��
,Q
,R|��|
,T
,c
,U
,\
,V
,Y��
,W
,X|��|��
,Z
,[|��|
,]
,`��
,^
,_|��|��
,a
,b|��|
,d
,k
,e
,h��
,f
,g|��|��
,i
,j|��|
,l
,o��
,m
,n|��|��
,p
,q|��|
,s
,�
,t
,�
,u
,�
,v
,}
,w
,z��
,x
,y|��|��
,{
,||��|
,~
,���
,
,�|��|��
,�
,�|��|
,�
,�
,�
,���
,�
,�|��|��
,�
,�|��|
,�
,���
,�
,�|��|��
,�
,�|��|
,�
,�
,�
,�
,�
,���
,�
,�|��|��
,�
,�|��|
,�
,���
,�
,�|��|��
,�
,�|��|
,�
,�
,�
,���
,�
,�|��|��
,�
,�|��|
,�
,���
,�
,�|��|��
,�
,�|��|
,�
,�
,�
,�
,�
,�
,�
,���
,�
,�|��|��
,�
,�|��|
,�
,���
,�
,�|��|��
,�
,�|��|
,�
,�
,�
,���
,�
,�|��|��
,�
,�|��|
,�
,���
,�
,�|��|��
,�
,�|��|
,�
,�
,�
,�
,�
,���
,�
,�|��|��
,�
,�|��|
,�
,���
,�
,�|��|��
,�
,�|��|
,�
,�
,�
,���
,�
,�|��|��
,�
,�|��|
,�
,���
,�
,�|��|��
,�
,�|��|
,�
-�
,�
-r
,�
-3
,�
-
,�
-
,�
,�
,�
,���
,�
,�|��|��
,�
,�|��|
,�
-��
-
-|��|��
-
-|��|
-
-
-
-
��
-
-	|��|��
-
-|��|
-
-��
-
-|��|��
-
-|��|
-
-$
-
-
-
-��
-
-|��|��
-
-|��|
-
-!��
-
- |��|��
-"
-#|��|
-%
-,
-&
-)��
-'
-(|��|��
-*
-+|��|
--
-0��
-.
-/|��|��
-1
-2|��|
-4
-S
-5
-D
-6
-=
-7
-:��
-8
-9|��|��
-;
-<|��|
->
-A��
-?
-@|��|��
-B
-C|��|
-E
-L
-F
-I��
-G
-H|��|��
-J
-K|��|
-M
-P��
-N
-O|��|��
-Q
-R|��|
-T
-c
-U
-\
-V
-Y��
-W
-X|��|��
-Z
-[|��|
-]
-`��
-^
-_|��|��
-a
-b|��|
-d
-k
-e
-h��
-f
-g|��|��
-i
-j|��|
-l
-o��
-m
-n|��|��
-p
-q|��|
-s
-�
-t
-�
-u
-�
-v
-}
-w
-z�
-x
-y|�|�
-{
-||�|
-~
-��
-
-�|�|�
-�
-�|�|
-�
-�
-�
-��
-�
-�|�|�
-�
-�|�|
-�
-��
-�
-�|�|�
-�
-�|�|
-�
-�
-�
-�
-�
-��
-�
-�|�|�
-�
-�|�|
-�
-��
-�
-�|�|�
-�
-�|�|
-�
-�
-�
-��
-�
-�|�|�
-�
-�|�|
-�
-��
-�
-�|�|�
-�
-�|�|
-�
-�
-�
-�
-�
-�
-�
-��
-�
-�|�|�
-�
-�|�|
-�
-��
-�
-�|�|�
-�
-�|�|
-�
-�
-�
-��
-�
-�|�|�
-�
-�|�|
-�
-��
-�
-�|�|�
-�
-�|�|
-�
-�
-�
-�
-�
-��
-�
-�|�|�
-�
-�|�|
-�
-��
-�
-�|�|�
-�
-�|�|
-�
-�
-�
-��
-�
-�|�|�
-�
-�|�|
-�
-��
-�
-�|�|�
-�
-�|�|
-�
.q
-�
.2
-�
.
-�
.
-�
-�
-�
-��
-�
-�|�|�
-�
-�|�|
-�
.�
-�
.|�|�
.
.|�|
.
.
.
.	�
.
.|�|�
.

.|�|
.
.�
.
.|�|�
.
.|�|
.
.#
.
.
.
.�
.
.|�|�
.
.|�|
.
. �
.
.|�|�
.!
."|�|
.$
.+
.%
.(�
.&
.'|�|�
.)
.*|�|
.,
./�
.-
..|�|�
.0
.1|�|
.3
.R
.4
.C
.5
.<
.6
.9�
.7
.8|�|�
.:
.;|�|
.=
.@�
.>
.?|�|�
.A
.B|�|
.D
.K
.E
.H�
.F
.G|�|�
.I
.J|�|
.L
.O�
.M
.N|�|�
.P
.Q|�|
.S
.b
.T
.[
.U
.X�
.V
.W|�|�
.Y
.Z|�|
.\
._�
.]
.^|�|�
.`
.a|�|
.c
.j
.d
.g�
.e
.f|�|�
.h
.i|�|
.k
.n�
.l
.m|�|�
.o
.p|�|
.r|
.s
.�
.t
.�
.u
.|
.v
.y�
.w
.x|�|�
.z
.{|�|
.}
.��
.~
.|�|�
.�
.�|�|
.�
.�
.�
.��
.�
.�|�|�
.�
.�|�|
.�
.��
.�
.�|�|�
.�
.�|�|
.�
.�
.�
.�
.�
.��
.�
.�|�|�
.�
.�|�|
.�
.��
.�
.�|�|�
.�
.�|�|
.�
.�
.�
.��
.�
.�|�|�
.�
.�|�|
.�
.��
.�
.�|�|�
.�
.�|�|
.�
2r
.�
0�
.�
/�
.�
/4
.�
.�
.�
.�
.�
.�
.�
.�
.�
.�|�
.�
.�||�||�
.�
.�||�|
.�
.�|�
.�
.�||�||�
.�
.�||�|
.�
.�
.�
.�|�
.�
.�||�||�
.�
.�||�|
.�
.�|�
.�
.�||�||�
.�
.�||�|
.�
.�
.�
.�
.�
.�|�
.�
.�||�||�
.�
.�||�|
.�
.�|�
.�
.�||�||�
.�
.�||�|
.�
.�
.�
.�|�
.�
.�||�||�
.�
.�||�|
.�
.�|�
.�
.�||�||�
.�
.�||�|
.�
/
.�
/
.�
.�
.�
.�|�
.�
.�||�||�
.�
.�||�|
/
/|�
/
/||�||�
/
/||�|
/
/
/
/|�
/	
/
||�||�
/
/
||�|
/
/|�
/
/||�||�
/
/||�|
/
/%
/
/
/
/|�
/
/||�||�
/
/||�|
/
/"|�
/ 
/!||�||�
/#
/$||�|
/&
/-
/'
/*|�
/(
/)||�||�
/+
/,||�|
/.
/1|�
//
/0||�||�
/2
/3||�|
/5
/t
/6
/U
/7
/F
/8
/?
/9
/<|�
/:
/;||�||�
/=
/>||�|
/@
/C|�
/A
/B||�||�
/D
/E||�|
/G
/N
/H
/K|�
/I
/J||�||�
/L
/M||�|
/O
/R|�
/P
/Q||�||�
/S
/T||�|
/V
/e
/W
/^
/X
/[|�
/Y
/Z||�||�
/\
/]||�|
/_
/b|�
/`
/a||�||�
/c
/d||�|
/f
/m
/g
/j|�
/h
/i||�||�
/k
/l||�|
/n
/q|�
/o
/p||�||�
/r
/s||�|
/u
/�
/v
/�
/w
/~
/x
/{|�
/y
/z||�||�
/|
/}||�|
/
/�|�
/�
/�||�||�
/�
/�||�|
/�
/�
/�
/�|�
/�
/�||�||�
/�
/�||�|
/�
/�|�
/�
/�||�||�
/�
/�||�|
/�
/�
/�
/�
/�
/�|�
/�
/�||�||�
/�
/�||�|
/�
/�|�
/�
/�||�||�
/�
/�||�|
/�
/�
/�
/�|�
/�
/�||�||�
/�
/�||�|
/�
/�|�
/�
/�||�||�
/�
/�||�|
/�
03
/�
/�
/�
/�
/�
/�
/�
/�
/�
/�|�
/�
/�||�||�
/�
/�||�|
/�
/�|�
/�
/�||�||�
/�
/�||�|
/�
/�
/�
/�|�
/�
/�||�||�
/�
/�||�|
/�
/�|�
/�
/�||�||�
/�
/�||�|
/�
/�
/�
/�
/�
/�|�
/�
/�||�||�
/�
/�||�|
/�
/�|�
/�
/�||�||�
/�
/�||�|
/�
/�
/�
/�|�
/�
/�||�||�
/�
/�||�|
/�
/�|�
/�
/�||�||�
/�
/�||�|
/�
0
/�
0
/�
/�
/�
/�|�
/�
/�||�||�
/�
/�||�|
/�
0|�
0
0||�||�
0
0||�|
0
0
0
0
|�
0
0	||�||�
0
0||�|
0
0|�
0
0||�||�
0
0||�|
0
0$
0
0
0
0|�
0
0||�||�
0
0||�|
0
0!|�
0
0 ||�||�
0"
0#||�|
0%
0,
0&
0)|�
0'
0(||�||�
0*
0+||�|
0-
00|�
0.
0/||�||�
01
02||�|
04
0s
05
0T
06
0E
07
0>
08
0;|�
09
0:||�||�
0<
0=||�|
0?
0B|�
0@
0A||�||�
0C
0D||�|
0F
0M
0G
0J|�
0H
0I||�||�
0K
0L||�|
0N
0Q|�
0O
0P||�||�
0R
0S||�|
0U
0d
0V
0]
0W
0Z|�
0X
0Y||�||�
0[
0\||�|
0^
0a|�
0_
0`||�||�
0b
0c||�|
0e
0l
0f
0i|�
0g
0h||�||�
0j
0k||�|
0m
0p|�
0n
0o||�||�
0q
0r||�|
0t
0�
0u
0�
0v
0}
0w
0z|�
0x
0y||�||�
0{
0|||�|
0~
0�|�
0
0�||�||�
0�
0�||�|
0�
0�
0�
0�|�
0�
0�||�||�
0�
0�||�|
0�
0�|�
0�
0�||�||�
0�
0�||�|
0�
0�
0�
0�
0�
0�|�
0�
0�||�||�
0�
0�||�|
0�
0�|�
0�
0�||�||�
0�
0�||�|
0�
0�
0�
0�|�
0�
0�||�||�
0�
0�||�|
0�
0�|�
0�
0�||�||�
0�
0�||�|
0�
1�
0�
13
0�
0�
0�
0�
0�
0�
0�
0�
0�
0�|�
0�
0�||�||�
0�
0�||�|
0�
0�|�
0�
0�||�||�
0�
0�||�|
0�
0�
0�
0�|�
0�
0�||�||�
0�
0�||�|
0�
0�|�
0�
0�||�||�
0�
0�||�|
0�
0�
0�
0�
0�
0�|�
0�
0�||�||�
0�
0�||�|
0�
0�|�
0�
0�||�||�
0�
0�||�|
0�
0�
0�
0�|�
0�
0�||�||�
0�
0�||�|
0�
0�|�
0�
0�||�||�
0�
0�||�|
0�
1
0�
1
0�
0�
0�
0�|�
0�
0�||�||�
0�
0�||�|
0�
1|�
1
1||�||�
1
1||�|
1
1
1
1
|�
1
1	||�||�
1
1||�|
1
1|�
1
1||�||�
1
1||�|
1
1$
1
1
1
1|�
1
1||�||�
1
1||�|
1
1!|�
1
1 ||�||�
1"
1#||�|
1%
1,
1&
1)|�
1'
1(||�||�
1*
1+||�|
1-
10|�
1.
1/||�||�
11
12||�|
14
1s
15
1T
16
1E
17
1>
18
1;BD
19
1:|BD|BD
1<
1=|BD|
1?
1BBD
1@
1A|BD|BD
1C
1D|BD|
1F
1M
1G
1JBD
1H
1I|BD|BD
1K
1L|BD|
1N
1QBD
1O
1P|BD|BD
1R
1S|BD|
1U
1d
1V
1]
1W
1ZBD
1X
1Y|BD|BD
1[
1\|BD|
1^
1aBD
1_
1`|BD|BD
1b
1c|BD|
1e
1l
1f
1iBD
1g
1h|BD|BD
1j
1k|BD|
1m
1pBD
1n
1o|BD|BD
1q
1r|BD|
1t
1�
1u
1�
1v
1}
1w
1zBD
1x
1y|BD|BD
1{
1||BD|
1~
1�BD
1
1�|BD|BD
1�
1�|BD|
1�
1�
1�
1�BD
1�
1�|BD|BD
1�
1�|BD|
1�
1�BD
1�
1�|BD|BD
1�
1�|BD|
1�
1�
1�
1�
1�
1�BD
1�
1�|BD|BD
1�
1�|BD|
1�
1�BD
1�
1�|BD|BD
1�
1�|BD|
1�
1�
1�
1�BD
1�
1�|BD|BD
1�
1�|BD|
1�
1�BD
1�
1�|BD|BD
1�
1�|BD|
1�
22
1�
1�
1�
1�
1�
1�
1�
1�
1�
1�BD
1�
1�|BD|BD
1�
1�|BD|
1�
1�BD
1�
1�|BD|BD
1�
1�|BD|
1�
1�
1�
1�BD
1�
1�|BD|BD
1�
1�|BD|
1�
1�BD
1�
1�|BD|BD
1�
1�|BD|
1�
1�
1�
1�
1�
1�BD
1�
1�|BD|BD
1�
1�|BD|
1�
1�BD
1�
1�|BD|BD
1�
1�|BD|
1�
1�
1�
1�BD
1�
1�|BD|BD
1�
1�|BD|
1�
1�BD
1�
1�|BD|BD
1�
1�|BD|
1�
2
1�
2
1�
1�
1�
1�BD
1�
1�|BD|BD
1�
1�|BD|
1�
2BD
1�
2|BD|BD
2
2|BD|
2
2
2
2	BD
2
2|BD|BD
2

2|BD|
2
2BD
2
2|BD|BD
2
2|BD|
2
2#
2
2
2
2BD
2
2|BD|BD
2
2|BD|
2
2 BD
2
2|BD|BD
2!
2"|BD|
2$
2+
2%
2(BD
2&
2'|BD|BD
2)
2*|BD|
2,
2/BD
2-
2.|BD|BD
20
21|BD|
23|
24
2S
25
2D
26
2=
27
2:BD
28
29|BD|BD
2;
2<|BD|
2>
2ABD
2?
2@|BD|BD
2B
2C|BD|
2E
2L
2F
2IBD
2G
2H|BD|BD
2J
2K|BD|
2M
2PBD
2N
2O|BD|BD
2Q
2R|BD|
2T
2c
2U
2\
2V
2YBD
2W
2X|BD|BD
2Z
2[|BD|
2]
2`BD
2^
2_|BD|BD
2a
2b|BD|
2d
2k
2e
2hBD
2f
2g|BD|BD
2i
2j|BD|
2l
2oBD
2m
2n|BD|BD
2p
2q|BD|
2s
4r
2t
3s
2u
2�
2v
2�
2w
2�
2x
2�
2y
2�
2z
2}��
2{
2||��|��
2~
2|��|
2�
2���
2�
2�|��|��
2�
2�|��|
2�
2�
2�
2���
2�
2�|��|��
2�
2�|��|
2�
2���
2�
2�|��|��
2�
2�|��|
2�
2�
2�
2�
2�
2���
2�
2�|��|��
2�
2�|��|
2�
2���
2�
2�|��|��
2�
2�|��|
2�
2�
2�
2���
2�
2�|��|��
2�
2�|��|
2�
2���
2�
2�|��|��
2�
2�|��|
2�
2�
2�
2�
2�
2�
2�
2���
2�
2�|��|��
2�
2�|��|
2�
2���
2�
2�|��|��
2�
2�|��|
2�
2�
2�
2���
2�
2�|��|��
2�
2�|��|
2�
2���
2�
2�|��|��
2�
2�|��|
2�
2�
2�
2�
2�
2���
2�
2�|��|��
2�
2�|��|
2�
2���
2�
2�|��|��
2�
2�|��|
2�
2�
2�
2���
2�
2�|��|��
2�
2�|��|
2�
2���
2�
2�|��|��
2�
2�|��|
2�
34
2�
3
2�
3
2�
2�
2�
2���
2�
2�|��|��
2�
2�|��|
3
3��
3
3|��|��
3
3|��|
3
3
3
3��
3	
3
|��|��
3
3
|��|
3
3��
3
3|��|��
3
3|��|
3
3%
3
3
3
3��
3
3|��|��
3
3|��|
3
3"��
3 
3!|��|��
3#
3$|��|
3&
3-
3'
3*��
3(
3)|��|��
3+
3,|��|
3.
31��
3/
30|��|��
32
33|��|
35
3T
36
3E
37
3>
38
3;��
39
3:|��|��
3<
3=|��|
3?
3B��
3@
3A|��|��
3C
3D|��|
3F
3M
3G
3J��
3H
3I|��|��
3K
3L|��|
3N
3Q��
3O
3P|��|��
3R
3S|��|
3U
3d
3V
3]
3W
3Z��
3X
3Y|��|��
3[
3\|��|
3^
3a��
3_
3`|��|��
3b
3c|��|
3e
3l
3f
3i��
3g
3h|��|��
3j
3k|��|
3m
3p��
3n
3o|��|��
3q
3r|��|
3t
3�
3u
3�
3v
3�
3w
3�
3x
3
3y
3|��
3z
3{|��|��
3}
3~|��|
3�
3���
3�
3�|��|��
3�
3�|��|
3�
3�
3�
3���
3�
3�|��|��
3�
3�|��|
3�
3���
3�
3�|��|��
3�
3�|��|
3�
3�
3�
3�
3�
3���
3�
3�|��|��
3�
3�|��|
3�
3���
3�
3�|��|��
3�
3�|��|
3�
3�
3�
3���
3�
3�|��|��
3�
3�|��|
3�
3���
3�
3�|��|��
3�
3�|��|
3�
3�
3�
3�
3�
3�
3�
3�|y
3�
3�||y||y
3�
3�||y|
3�
3�|y
3�
3�||y||y
3�
3�||y|
3�
3�
3�
3�|y
3�
3�||y||y
3�
3�||y|
3�
3�|y
3�
3�||y||y
3�
3�||y|
3�
3�
3�
3�
3�
3�|y
3�
3�||y||y
3�
3�||y|
3�
3�|y
3�
3�||y||y
3�
3�||y|
3�
3�
3�
3�|y
3�
3�||y||y
3�
3�||y|
3�
3�|y
3�
3�||y||y
3�
3�||y|
3�
43
3�
4
3�
4
3�
3�
3�
3�|y
3�
3�||y||y
3�
3�||y|
3�
4|y
4
4||y||y
4
4||y|
4
4
4
4
|y
4
4	||y||y
4
4||y|
4
4|y
4
4||y||y
4
4||y|
4
4$
4
4
4
4|y
4
4||y||y
4
4||y|
4
4!|y
4
4 ||y||y
4"
4#||y|
4%
4,
4&
4)|y
4'
4(||y||y
4*
4+||y|
4-
40|y
4.
4/||y||y
41
42||y|
44
4S
45
4D
46
4=
47
4:|y
48
49||y||y
4;
4<||y|
4>
4A|y
4?
4@||y||y
4B
4C||y|
4E
4L
4F
4I|y
4G
4H||y||y
4J
4K||y|
4M
4P|y
4N
4O||y||y
4Q
4R||y|
4T
4c
4U
4\
4V
4Y|y
4W
4X||y||y
4Z
4[||y|
4]
4`|y
4^
4_||y||y
4a
4b||y|
4d
4k
4e
4h|y
4f
4g||y||y
4i
4j||y|
4l
4o|y
4m
4n||y||y
4p
4q||y|
4s
5r
4t
4�
4u
4�
4v
4�
4w
4�
4x
4
4y
4||y
4z
4{||y||y
4}
4~||y|
4�
4�|y
4�
4�||y||y
4�
4�||y|
4�
4�
4�
4�|y
4�
4�||y||y
4�
4�||y|
4�
4�|y
4�
4�||y||y
4�
4�||y|
4�
4�
4�
4�
4�
4�|y
4�
4�||y||y
4�
4�||y|
4�
4�|y
4�
4�||y||y
4�
4�||y|
4�
4�
4�
4�|y
4�
4�||y||y
4�
4�||y|
4�
4�|y
4�
4�||y||y
4�
4�||y|
4�
4�
4�
4�
4�
4�
4�
4�|y
4�
4�||y||y
4�
4�||y|
4�
4�|y
4�
4�||y||y
4�
4�||y|
4�
4�
4�
4�|y
4�
4�||y||y
4�
4�||y|
4�
4�|y
4�
4�||y||y
4�
4�||y|
4�
4�
4�
4�
4�
4�|y
4�
4�||y||y
4�
4�||y|
4�
4�|y
4�
4�||y||y
4�
4�||y|
4�
4�
4�
4�|y
4�
4�||y||y
4�
4�||y|
4�
4�|y
4�
4�||y||y
4�
4�||y|
4�
53
4�
5
4�
5
4�
4�
4�
4�|=
4�
4�||=||=
4�
4�||=|
4�
5|=
5
5||=||=
5
5||=|
5
5
5
5
|=
5
5	||=||=
5
5||=|
5
5|=
5
5||=||=
5
5||=|
5
5$
5
5
5
5|=
5
5||=||=
5
5||=|
5
5!|=
5
5 ||=||=
5"
5#||=|
5%
5,
5&
5)|=
5'
5(||=||=
5*
5+||=|
5-
50|=
5.
5/||=||=
51
52||=|
54
5S
55
5D
56
5=
57
5:|=
58
59||=||=
5;
5<||=|
5>
5A|=
5?
5@||=||=
5B
5C||=|
5E
5L
5F
5I|=
5G
5H||=||=
5J
5K||=|
5M
5P|=
5N
5O||=||=
5Q
5R||=|
5T
5c
5U
5\
5V
5Y|=
5W
5X||=||=
5Z
5[||=|
5]
5`|=
5^
5_||=||=
5a
5b||=|
5d
5k
5e
5h|=
5f
5g||=||=
5i
5j||=|
5l
5o|=
5m
5n||=||=
5p
5q||=|
5s
5�
5t
5�
5u
5�
5v
5�
5w
5~
5x
5{|=
5y
5z||=||=
5|
5}||=|
5
5�|=
5�
5�||=||=
5�
5�||=|
5�
5�
5�
5�|=
5�
5�||=||=
5�
5�||=|
5�
5�|=
5�
5�||=||=
5�
5�||=|
5�
5�
5�
5�
5�
5�|=
5�
5�||=||=
5�
5�||=|
5�
5�|=
5�
5�||=||=
5�
5�||=|
5�
5�
5�
5�|=
5�
5�||=||=
5�
5�||=|
5�
5�|=
5�
5�||=||=
5�
5�||=|
5�
5�
5�
5�
5�
5�
5�
5�|=
5�
5�||=||=
5�
5�||=|
5�
5�|=
5�
5�||=||=
5�
5�||=|
5�
5�
5�
5�|=
5�
5�||=||=
5�
5�||=|
5�
5�|=
5�
5�||=||=
5�
5�||=|
5�
5�
5�
5�
5�
5�|=
5�
5�||=||=
5�
5�||=|
5�
5�|=
5�
5�||=||=
5�
5�||=|
5�
5�
5�
5�|=
5�
5�||=||=
5�
5�||=|
5�
5�|=
5�
5�||=||=
5�
5�||=|
5�|
5�
6
5�
6
5�
5�
5�
5�|=
5�
5�||=||=
5�
5�||=|
5�
6|=
5�
6||=||=
6
6||=|
6
6
6
6	|=
6
6||=||=
6

6||=|
6
6|=
6
6||=||=
6
6||=|
6
6#
6
6
6
6|=
6
6||=||=
6
6||=|
6
6 |=
6
6||=||=
6!
6"||=|
6$
6+
6%
6(|=
6&
6'||=||=
6)
6*||=|
6,
6/|=
6-
6.||=||=
60
61||=|
63
=�
64
9�
65
84
66
75
67
6�
68
6w
69
6X
6:
6I
6;
6B
6<
6?|
6=
6>||||
6@
6A|||
6C
6F|
6D
6E||||
6G
6H|||
6J
6Q
6K
6N|
6L
6M||||
6O
6P|||
6R
6U|
6S
6T||||
6V
6W|||
6Y
6h
6Z
6a
6[
6^|
6\
6]||||
6_
6`|||
6b
6e|
6c
6d||||
6f
6g|||
6i
6p
6j
6m|
6k
6l||||
6n
6o|||
6q
6t|
6r
6s||||
6u
6v|||
6x
6�
6y
6�
6z
6�
6{
6~|
6|
6}||||
6
6�|||
6�
6�|
6�
6�||||
6�
6�|||
6�
6�
6�
6�|
6�
6�||||
6�
6�|||
6�
6�|
6�
6�||||
6�
6�|||
6�
6�
6�
6�
6�
6�|
6�
6�||||
6�
6�|||
6�
6�|
6�
6�||||
6�
6�|||
6�
6�
6�
6�|
6�
6�||||
6�
6�|||
6�
6�|
6�
6�||||
6�
6�|||
6�
6�
6�
6�
6�
6�
6�
6�
6�
6�|
6�
6�||||
6�
6�|||
6�
6�|
6�
6�||||
6�
6�|||
6�
6�
6�
6�|
6�
6�||||
6�
6�|||
6�
6�|
6�
6�||||
6�
6�|||
6�
6�
6�
6�
6�
6�|
6�
6�||||
6�
6�|||
6�
6�|
6�
6�||||
6�
6�|||
6�
6�
6�
6�|
6�
6�||||
6�
6�|||
6�
6�|
6�
6�||||
6�
6�|||
6�
7
6�
7
6�
7
6�
6�|
6�
6�||||
6�
6�|||
7
7|
7
7||||
7
7|||
7
7
7	
7|
7

7||||
7
7|||
7
7|
7
7||||
7
7|||
7
7&
7
7
7
7|
7
7||||
7
7|||
7 
7#|
7!
7"||||
7$
7%|||
7'
7.
7(
7+|
7)
7*||||
7,
7-|||
7/
72|
70
71||||
73
74|||
76
7�
77
7v
78
7W
79
7H
7:
7A
7;
7>|
7<
7=||||
7?
7@|||
7B
7E|
7C
7D||||
7F
7G|||
7I
7P
7J
7M|
7K
7L||||
7N
7O|||
7Q
7T|
7R
7S||||
7U
7V|||
7X
7g
7Y
7`
7Z
7]|
7[
7\||||
7^
7_|||
7a
7d|
7b
7c||||
7e
7f|||
7h
7o
7i
7l|
7j
7k||||
7m
7n|||
7p
7s|
7q
7r||||
7t
7u|||
7w
7�
7x
7�
7y
7�
7z
7}|L
7{
7|||L||L
7~
7||L|
7�
7�|L
7�
7�||L||L
7�
7�||L|
7�
7�
7�
7�|L
7�
7�||L||L
7�
7�||L|
7�
7�|L
7�
7�||L||L
7�
7�||L|
7�
7�
7�
7�
7�
7�|L
7�
7�||L||L
7�
7�||L|
7�
7�|L
7�
7�||L||L
7�
7�||L|
7�
7�
7�
7�|L
7�
7�||L||L
7�
7�||L|
7�
7�|L
7�
7�||L||L
7�
7�||L|
7�
7�
7�
7�
7�
7�
7�
7�
7�
7�|L
7�
7�||L||L
7�
7�||L|
7�
7�|L
7�
7�||L||L
7�
7�||L|
7�
7�
7�
7�|L
7�
7�||L||L
7�
7�||L|
7�
7�|L
7�
7�||L||L
7�
7�||L|
7�
7�
7�
7�
7�
7�|L
7�
7�||L||L
7�
7�||L|
7�
7�|L
7�
7�||L||L
7�
7�||L|
7�
7�
7�
7�|L
7�
7�||L||L
7�
7�||L|
7�
7�|L
7�
7�||L||L
7�
7�||L|
7�
8
7�
8
7�
7�
7�
7�|L
7�
7�||L||L
7�
7�||L|
8
8|L
8
8||L||L
8
8||L|
8
8
8
8|L
8	
8
||L||L
8
8
||L|
8
8|L
8
8||L||L
8
8||L|
8
8%
8
8
8
8|L
8
8||L||L
8
8||L|
8
8"|L
8 
8!||L||L
8#
8$||L|
8&
8-
8'
8*|L
8(
8)||L||L
8+
8,||L|
8.
81|L
8/
80||L||L
82
83||L|
85
94
86
8�
87
8v
88
8W
89
8H
8:
8A
8;
8>|L
8<
8=||L||L
8?
8@||L|
8B
8E|L
8C
8D||L||L
8F
8G||L|
8I
8P
8J
8M|L
8K
8L||L||L
8N
8O||L|
8Q
8T|L
8R
8S||L||L
8U
8V||L|
8X
8g
8Y
8`
8Z
8]|L
8[
8\||L||L
8^
8_||L|
8a
8d|L
8b
8c||L||L
8e
8f||L|
8h
8o
8i
8l|L
8j
8k||L||L
8m
8n||L|
8p
8s|L
8q
8r||L||L
8t
8u||L|
8w
8�
8x
8�
8y
8�
8z
8}|L
8{
8|||L||L
8~
8||L|
8�
8�|L
8�
8�||L||L
8�
8�||L|
8�
8�
8�
8�|L
8�
8�||L||L
8�
8�||L|
8�
8�|L
8�
8�||L||L
8�
8�||L|
8�
8�
8�
8�
8�
8�|L
8�
8�||L||L
8�
8�||L|
8�
8�|L
8�
8�||L||L
8�
8�||L|
8�
8�
8�
8�|L
8�
8�||L||L
8�
8�||L|
8�
8�|L
8�
8�||L||L
8�
8�||L|
8�
8�
8�
8�
8�
8�
8�
8�
8�
8��6
8�
8�|�6|�6
8�
8�|�6|
8�
8��6
8�
8�|�6|�6
8�
8�|�6|
8�
8�
8�
8��6
8�
8�|�6|�6
8�
8�|�6|
8�
8��6
8�
8�|�6|�6
8�
8�|�6|
8�
8�
8�
8�
8�
8��6
8�
8�|�6|�6
8�
8�|�6|
8�
8��6
8�
8�|�6|�6
8�
8�|�6|
8�
8�
8�
8��6
8�
8�|�6|�6
8�
8�|�6|
8�
8��6
8�
8�|�6|�6
8�
8�|�6|
8�
9
8�
9
8�
8�
8�
8��6
8�
8�|�6|�6
8�
8�|�6|
9
9�6
9
9|�6|�6
9
9|�6|
9
9
9
9�6
9	
9
|�6|�6
9
9
|�6|
9
9�6
9
9|�6|�6
9
9|�6|
9
9%
9
9
9
9�6
9
9|�6|�6
9
9|�6|
9
9"�6
9 
9!|�6|�6
9#
9$|�6|
9&
9-
9'
9*�6
9(
9)|�6|�6
9+
9,|�6|
9.
91�6
9/
90|�6|�6
92
93|�6|
95
9�
96
9u
97
9V
98
9G
99
9@
9:
9=�6
9;
9<|�6|�6
9>
9?|�6|
9A
9D�6
9B
9C|�6|�6
9E
9F|�6|
9H
9O
9I
9L�6
9J
9K|�6|�6
9M
9N|�6|
9P
9S�6
9Q
9R|�6|�6
9T
9U|�6|
9W
9f
9X
9_
9Y
9\�6
9Z
9[|�6|�6
9]
9^|�6|
9`
9c�6
9a
9b|�6|�6
9d
9e|�6|
9g
9n
9h
9k�6
9i
9j|�6|�6
9l
9m|�6|
9o
9r�6
9p
9q|�6|�6
9s
9t|�6|
9v
9�
9w
9�
9x
9
9y
9|�6
9z
9{|�6|�6
9}
9~|�6|
9�
9��6
9�
9�|�6|�6
9�
9�|�6|
9�
9�
9�
9��6
9�
9�|�6|�6
9�
9�|�6|
9�
9��6
9�
9�|�6|�6
9�
9�|�6|
9�
9�
9�
9�
9�
9��6
9�
9�|�6|�6
9�
9�|�6|
9�
9��6
9�
9�|�6|�6
9�
9�|�6|
9�
9�
9�
9��6
9�
9�|�6|�6
9�
9�|�6|
9�
9��6
9�
9�|�6|�6
9�
9�|�6|
9�|
9�
9�
9�
9�
9�
9�
9�
9��6
9�
9�|�6|�6
9�
9�|�6|
9�
9��6
9�
9�|�6|�6
9�
9�|�6|
9�
9�
9�
9��6
9�
9�|�6|�6
9�
9�|�6|
9�
9��6
9�
9�|�6|�6
9�
9�|�6|
9�
9�
9�
9�
9�
9��6
9�
9�|�6|�6
9�
9�|�6|
9�
9��6
9�
9�|�6|�6
9�
9�|�6|
9�
9�
9�
9��6
9�
9�|�6|�6
9�
9�|�6|
9�
9��6
9�
9�|�6|�6
9�
9�|�6|
9�
;�
9�
:�
9�
:v
9�
:7
9�
:
9�
:	
9�
:
9�
9�a�
9�
9�|a�|a�
:
:|a�|
:
:a�
:
:|a�|a�
:
:|a�|
:

:
:
:a�
:
:
|a�|a�
:
:|a�|
:
:a�
:
:|a�|a�
:
:|a�|
:
:(
:
:!
:
:a�
:
:|a�|a�
:
: |a�|
:"
:%a�
:#
:$|a�|a�
:&
:'|a�|
:)
:0
:*
:-a�
:+
:,|a�|a�
:.
:/|a�|
:1
:4a�
:2
:3|a�|a�
:5
:6|a�|
:8
:W
:9
:H
::
:A
:;
:>a�
:<
:=|a�|a�
:?
:@|a�|
:B
:Ea�
:C
:D|a�|a�
:F
:G|a�|
:I
:P
:J
:Ma�
:K
:L|a�|a�
:N
:O|a�|
:Q
:Ta�
:R
:S|a�|a�
:U
:V|a�|
:X
:g
:Y
:`
:Z
:]a�
:[
:\|a�|a�
:^
:_|a�|
:a
:da�
:b
:c|a�|a�
:e
:f|a�|
:h
:o
:i
:la�
:j
:k|a�|a�
:m
:n|a�|
:p
:sa�
:q
:r|a�|a�
:t
:u|a�|
:w
:�
:x
:�
:y
:�
:z
:�
:{
:~a�
:|
:}|a�|a�
:
:�|a�|
:�
:�a�
:�
:�|a�|a�
:�
:�|a�|
:�
:�
:�
:�a�
:�
:�|a�|a�
:�
:�|a�|
:�
:�a�
:�
:�|a�|a�
:�
:�|a�|
:�
:�
:�
:�
:�
:�a�
:�
:�|a�|a�
:�
:�|a�|
:�
:�a�
:�
:�|a�|a�
:�
:�|a�|
:�
:�
:�
:�a�
:�
:�|a�|a�
:�
:�|a�|
:�
:�a�
:�
:�|a�|a�
:�
:�|a�|
:�
:�
:�
:�
:�
:�
:�
:�a�
:�
:�|a�|a�
:�
:�|a�|
:�
:�a�
:�
:�|a�|a�
:�
:�|a�|
:�
:�
:�
:�a�
:�
:�|a�|a�
:�
:�|a�|
:�
:�a�
:�
:�|a�|a�
:�
:�|a�|
:�
:�
:�
:�
:�
:�a�
:�
:�|a�|a�
:�
:�|a�|
:�
:�a�
:�
:�|a�|a�
:�
:�|a�|
:�
:�
:�
:�a�
:�
:�|a�|a�
:�
:�|a�|
:�
:�a�
:�
:�|a�|a�
:�
:�|a�|
:�
;u
:�
;6
:�
;
:�
;
:�
;
:�
:�a�
:�
:�|a�|a�
:�
;|a�|
;
;a�
;
;|a�|a�
;
;|a�|
;	
;
;

;
a�
;
;|a�|a�
;
;|a�|
;
;a�
;
;|a�|a�
;
;|a�|
;
;'
;
; 
;
;a�
;
;|a�|a�
;
;|a�|
;!
;$a�
;"
;#|a�|a�
;%
;&|a�|
;(
;/
;)
;,a�
;*
;+|a�|a�
;-
;.|a�|
;0
;3a�
;1
;2|a�|a�
;4
;5|a�|
;7
;V
;8
;G
;9
;@
;:
;=�
;;
;<|�|�
;>
;?|�|
;A
;D�
;B
;C|�|�
;E
;F|�|
;H
;O
;I
;L�
;J
;K|�|�
;M
;N|�|
;P
;S�
;Q
;R|�|�
;T
;U|�|
;W
;f
;X
;_
;Y
;\�
;Z
;[|�|�
;]
;^|�|
;`
;c�
;a
;b|�|�
;d
;e|�|
;g
;n
;h
;k�
;i
;j|�|�
;l
;m|�|
;o
;r�
;p
;q|�|�
;s
;t|�|
;v
;�
;w
;�
;x
;�
;y
;�
;z
;}�
;{
;||�|�
;~
;|�|
;�
;��
;�
;�|�|�
;�
;�|�|
;�
;�
;�
;��
;�
;�|�|�
;�
;�|�|
;�
;��
;�
;�|�|�
;�
;�|�|
;�
;�
;�
;�
;�
;��
;�
;�|�|�
;�
;�|�|
;�
;��
;�
;�|�|�
;�
;�|�|
;�
;�
;�
;��
;�
;�|�|�
;�
;�|�|
;�
;��
;�
;�|�|�
;�
;�|�|
;�
;�
;�
;�
;�
;�
;�
;��
;�
;�|�|�
;�
;�|�|
;�
;��
;�
;�|�|�
;�
;�|�|
;�
;�
;�
;��
;�
;�|�|�
;�
;�|�|
;�
;��
;�
;�|�|�
;�
;�|�|
;�
;�
;�
;�
;�
;��
;�
;�|�|�
;�
;�|�|
;�
;��
;�
;�|�|�
;�
;�|�|
;�
;�
;�
;��
;�
;�|�|�
;�
;�|�|
;�
;��
;�
;�|�|�
;�
;�|�|
;�
<�
;�
<u
;�
<6
;�
<
;�
<
;�
<
;�
;��
;�
;�|�|�
;�
<|�|
<
<�
<
<|�|�
<
<|�|
<	
<
<

<
�
<
<|�|�
<
<|�|
<
<�
<
<|�|�
<
<|�|
<
<'
<
< 
<
<�
<
<|�|�
<
<|�|
<!
<$�
<"
<#|�|�
<%
<&|�|
<(
</
<)
<,�
<*
<+|�|�
<-
<.|�|
<0
<3�
<1
<2|�|�
<4
<5|�|
<7
<V
<8
<G
<9
<@
<:
<=�
<;
<<|�|�
<>
<?|�|
<A
<D�
<B
<C|�|�
<E
<F|�|
<H
<O
<I
<L�
<J
<K|�|�
<M
<N|�|
<P
<S�
<Q
<R|�|�
<T
<U|�|
<W
<f
<X
<_
<Y
<\�
<Z
<[|�|�
<]
<^|�|
<`
<c�
<a
<b|�|�
<d
<e|�|
<g
<n
<h
<k�
<i
<j|�|�
<l
<m|�|
<o
<r�
<p
<q|�|�
<s
<t|�|
<v
<�
<w
<�
<x
<�
<y
<�
<z
<}�C
<{
<||�C|�C
<~
<|�C|
<�
<��C
<�
<�|�C|�C
<�
<�|�C|
<�
<�
<�
<��C
<�
<�|�C|�C
<�
<�|�C|
<�
<��C
<�
<�|�C|�C
<�
<�|�C|
<�
<�
<�
<�
<�
<��C
<�
<�|�C|�C
<�
<�|�C|
<�
<��C
<�
<�|�C|�C
<�
<�|�C|
<�
<�
<�
<��C
<�
<�|�C|�C
<�
<�|�C|
<�
<��C
<�
<�|�C|�C
<�
<�|�C|
<�
<�
<�
<�
<�
<�
<�
<��C
<�
<�|�C|�C
<�
<�|�C|
<�
<��C
<�
<�|�C|�C
<�
<�|�C|
<�
<�
<�
<��C
<�
<�|�C|�C
<�
<�|�C|
<�
<��C
<�
<�|�C|�C
<�
<�|�C|
<�
<�
<�
<�
<�
<��C
<�
<�|�C|�C
<�
<�|�C|
<�
<��C
<�
<�|�C|�C
<�
<�|�C|
<�
<�
<�
<��C
<�
<�|�C|�C
<�
<�|�C|
<�
<��C
<�
<�|�C|�C
<�
<�|�C|
<�
=t
<�
=5
<�
=
<�
=
<�
=
<�
<��C
<�
<�|�C|�C
<�
<�|�C|
=
=�C
=
=|�C|�C
=
=|�C|
=
=
=	
=�C
=

=|�C|�C
=
=|�C|
=
=�C
=
=|�C|�C
=
=|�C|
=
=&
=
=
=
=�C
=
=|�C|�C
=
=|�C|
= 
=#�C
=!
="|�C|�C
=$
=%|�C|
='
=.
=(
=+�C
=)
=*|�C|�C
=,
=-|�C|
=/
=2�C
=0
=1|�C|�C
=3
=4|�C|
=6
=U
=7
=F
=8
=?
=9
=<�C
=:
=;|�C|�C
==
=>|�C|
=@
=C�C
=A
=B|�C|�C
=D
=E|�C|
=G
=N
=H
=K�C
=I
=J|�C|�C
=L
=M|�C|
=O
=R�C
=P
=Q|�C|�C
=S
=T|�C|
=V
=e
=W
=^
=X
=[�C
=Y
=Z|�C|�C
=\
=]|�C|
=_
=b�C
=`
=a|�C|�C
=c
=d|�C|
=f
=m
=g
=j�C
=h
=i|�C|�C
=k
=l|�C|
=n
=q�C
=o
=p|�C|�C
=r
=s|�C|
=u|
=v
=�
=w
=�
=x
=
=y
=|�C
=z
={|�C|�C
=}
=~|�C|
=�
=��C
=�
=�|�C|�C
=�
=�|�C|
=�
=�
=�
=��C
=�
=�|�C|�C
=�
=�|�C|
=�
=��C
=�
=�|�C|�C
=�
=�|�C|
=�
=�
=�
=�
=�
=��C
=�
=�|�C|�C
=�
=�|�C|
=�
=��C
=�
=�|�C|�C
=�
=�|�C|
=�
=�
=�
=��C
=�
=�|�C|�C
=�
=�|�C|
=�
=��C
=�
=�|�C|�C
=�
=�|�C|
=�
Au
=�
?�
=�
>�
=�
>7
=�
=�
=�
=�
=�
=�
=�
=�
=�
=��k
=�
=�|�k|�k
=�
=�|�k|
=�
=��k
=�
=�|�k|�k
=�
=�|�k|
=�
=�
=�
=��k
=�
=�|�k|�k
=�
=�|�k|
=�
=��k
=�
=�|�k|�k
=�
=�|�k|
=�
=�
=�
=�
=�
=��k
=�
=�|�k|�k
=�
=�|�k|
=�
=��k
=�
=�|�k|�k
=�
=�|�k|
=�
=�
=�
=��k
=�
=�|�k|�k
=�
=�|�k|
=�
=��k
=�
=�|�k|�k
=�
=�|�k|
=�
>
=�
>	
=�
>
=�
=��k
=�
=�|�k|�k
>
>|�k|
>
>�k
>
>|�k|�k
>
>|�k|
>

>
>
>�k
>
>
|�k|�k
>
>|�k|
>
>�k
>
>|�k|�k
>
>|�k|
>
>(
>
>!
>
>�k
>
>|�k|�k
>
> |�k|
>"
>%�k
>#
>$|�k|�k
>&
>'|�k|
>)
>0
>*
>-�k
>+
>,|�k|�k
>.
>/|�k|
>1
>4�k
>2
>3|�k|�k
>5
>6|�k|
>8
>w
>9
>X
>:
>I
>;
>B
><
>?�k
>=
>>|�k|�k
>@
>A|�k|
>C
>F�k
>D
>E|�k|�k
>G
>H|�k|
>J
>Q
>K
>N�k
>L
>M|�k|�k
>O
>P|�k|
>R
>U�k
>S
>T|�k|�k
>V
>W|�k|
>Y
>h
>Z
>a
>[
>^�k
>\
>]|�k|�k
>_
>`|�k|
>b
>e�k
>c
>d|�k|�k
>f
>g|�k|
>i
>p
>j
>m�k
>k
>l|�k|�k
>n
>o|�k|
>q
>t�k
>r
>s|�k|�k
>u
>v|�k|
>x
>�
>y
>�
>z
>�
>{
>~�k
>|
>}|�k|�k
>
>�|�k|
>�
>��k
>�
>�|�k|�k
>�
>�|�k|
>�
>�
>�
>��k
>�
>�|�k|�k
>�
>�|�k|
>�
>��k
>�
>�|�k|�k
>�
>�|�k|
>�
>�
>�
>�
>�
>��k
>�
>�|�k|�k
>�
>�|�k|
>�
>��k
>�
>�|�k|�k
>�
>�|�k|
>�
>�
>�
>��k
>�
>�|�k|�k
>�
>�|�k|
>�
>��k
>�
>�|�k|�k
>�
>�|�k|
>�
?6
>�
>�
>�
>�
>�
>�
>�
>�
>�
>��k
>�
>�|�k|�k
>�
>�|�k|
>�
>��k
>�
>�|�k|�k
>�
>�|�k|
>�
>�
>�
>��k
>�
>�|�k|�k
>�
>�|�k|
>�
>��k
>�
>�|�k|�k
>�
>�|�k|
>�
>�
>�
>�
>�
>��k
>�
>�|�k|�k
>�
>�|�k|
>�
>��k
>�
>�|�k|�k
>�
>�|�k|
>�
>�
>�
>��k
>�
>�|�k|�k
>�
>�|�k|
>�
>��k
>�
>�|�k|�k
>�
>�|�k|
>�
?
>�
?
>�
?
>�
>�W
>�
>�|W|W
>�
?|W|
?
?W
?
?|W|W
?
?|W|
?	
?
?

?
W
?
?|W|W
?
?|W|
?
?W
?
?|W|W
?
?|W|
?
?'
?
? 
?
?W
?
?|W|W
?
?|W|
?!
?$W
?"
?#|W|W
?%
?&|W|
?(
?/
?)
?,W
?*
?+|W|W
?-
?.|W|
?0
?3W
?1
?2|W|W
?4
?5|W|
?7
?v
?8
?W
?9
?H
?:
?A
?;
?>W
?<
?=|W|W
??
?@|W|
?B
?EW
?C
?D|W|W
?F
?G|W|
?I
?P
?J
?MW
?K
?L|W|W
?N
?O|W|
?Q
?TW
?R
?S|W|W
?U
?V|W|
?X
?g
?Y
?`
?Z
?]W
?[
?\|W|W
?^
?_|W|
?a
?dW
?b
?c|W|W
?e
?f|W|
?h
?o
?i
?lW
?j
?k|W|W
?m
?n|W|
?p
?sW
?q
?r|W|W
?t
?u|W|
?w
?�
?x
?�
?y
?�
?z
?}W
?{
?||W|W
?~
?|W|
?�
?�W
?�
?�|W|W
?�
?�|W|
?�
?�
?�
?�W
?�
?�|W|W
?�
?�|W|
?�
?�W
?�
?�|W|W
?�
?�|W|
?�
?�
?�
?�
?�
?�W
?�
?�|W|W
?�
?�|W|
?�
?�W
?�
?�|W|W
?�
?�|W|
?�
?�
?�
?�W
?�
?�|W|W
?�
?�|W|
?�
?�W
?�
?�|W|W
?�
?�|W|
?�
@�
?�
@6
?�
?�
?�
?�
?�
?�
?�
?�
?�
?�W
?�
?�|W|W
?�
?�|W|
?�
?�W
?�
?�|W|W
?�
?�|W|
?�
?�
?�
?�W
?�
?�|W|W
?�
?�|W|
?�
?�W
?�
?�|W|W
?�
?�|W|
?�
?�
?�
?�
?�
?�W
?�
?�|W|W
?�
?�|W|
?�
?�W
?�
?�|W|W
?�
?�|W|
?�
?�
?�
?�W
?�
?�|W|W
?�
?�|W|
?�
?�W
?�
?�|W|W
?�
?�|W|
?�
@
?�
@
?�
@
?�
?�W
?�
?�|W|W
?�
@|W|
@
@W
@
@|W|W
@
@|W|
@	
@
@

@
W
@
@|W|W
@
@|W|
@
@W
@
@|W|W
@
@|W|
@
@'
@
@ 
@
@W
@
@|W|W
@
@|W|
@!
@$W
@"
@#|W|W
@%
@&|W|
@(
@/
@)
@,W
@*
@+|W|W
@-
@.|W|
@0
@3W
@1
@2|W|W
@4
@5|W|
@7
@v
@8
@W
@9
@H
@:
@A
@;
@>�
@<
@=|�|�
@?
@@|�|
@B
@E�
@C
@D|�|�
@F
@G|�|
@I
@P
@J
@M�
@K
@L|�|�
@N
@O|�|
@Q
@T�
@R
@S|�|�
@U
@V|�|
@X
@g
@Y
@`
@Z
@]�
@[
@\|�|�
@^
@_|�|
@a
@d�
@b
@c|�|�
@e
@f|�|
@h
@o
@i
@l�
@j
@k|�|�
@m
@n|�|
@p
@s�
@q
@r|�|�
@t
@u|�|
@w
@�
@x
@�
@y
@�
@z
@}�
@{
@||�|�
@~
@|�|
@�
@��
@�
@�|�|�
@�
@�|�|
@�
@�
@�
@��
@�
@�|�|�
@�
@�|�|
@�
@��
@�
@�|�|�
@�
@�|�|
@�
@�
@�
@�
@�
@��
@�
@�|�|�
@�
@�|�|
@�
@��
@�
@�|�|�
@�
@�|�|
@�
@�
@�
@��
@�
@�|�|�
@�
@�|�|
@�
@��
@�
@�|�|�
@�
@�|�|
@�
A5
@�
@�
@�
@�
@�
@�
@�
@�
@�
@��
@�
@�|�|�
@�
@�|�|
@�
@��
@�
@�|�|�
@�
@�|�|
@�
@�
@�
@��
@�
@�|�|�
@�
@�|�|
@�
@��
@�
@�|�|�
@�
@�|�|
@�
@�
@�
@�
@�
@��
@�
@�|�|�
@�
@�|�|
@�
@��
@�
@�|�|�
@�
@�|�|
@�
@�
@�
@��
@�
@�|�|�
@�
@�|�|
@�
@��
@�
@�|�|�
@�
@�|�|
@�
A
@�
A
@�
A
@�
@��
@�
@�|�|�
@�
@�|�|
A
A�
A
A|�|�
A
A|�|
A
A
A	
A�
A

A|�|�
A
A|�|
A
A�
A
A|�|�
A
A|�|
A
A&
A
A
A
A�
A
A|�|�
A
A|�|
A 
A#�
A!
A"|�|�
A$
A%|�|
A'
A.
A(
A+�
A)
A*|�|�
A,
A-|�|
A/
A2�
A0
A1|�|�
A3
A4|�|
A6|
A7
AV
A8
AG
A9
A@
A:
A=�
A;
A<|�|�
A>
A?|�|
AA
AD�
AB
AC|�|�
AE
AF|�|
AH
AO
AI
AL�
AJ
AK|�|�
AM
AN|�|
AP
AS�
AQ
AR|�|�
AT
AU|�|
AW
Af
AX
A_
AY
A\�
AZ
A[|�|�
A]
A^|�|
A`
Ac�
Aa
Ab|�|�
Ad
Ae|�|
Ag
An
Ah
Ak�
Ai
Aj|�|�
Al
Am|�|
Ao
Ar�
Ap
Aq|�|�
As
At|�|
Av
Cu
Aw
Bv
Ax
A�
Ay
A�
Az
A�
A{
A�
A|
A�
A}
A��4
A~
A|�4|�4
A�
A�|�4|
A�
A��4
A�
A�|�4|�4
A�
A�|�4|
A�
A�
A�
A��4
A�
A�|�4|�4
A�
A�|�4|
A�
A��4
A�
A�|�4|�4
A�
A�|�4|
A�
A�
A�
A�
A�
A��4
A�
A�|�4|�4
A�
A�|�4|
A�
A��4
A�
A�|�4|�4
A�
A�|�4|
A�
A�
A�
A��4
A�
A�|�4|�4
A�
A�|�4|
A�
A��4
A�
A�|�4|�4
A�
A�|�4|
A�
A�
A�
A�
A�
A�
A�
A��4
A�
A�|�4|�4
A�
A�|�4|
A�
A��4
A�
A�|�4|�4
A�
A�|�4|
A�
A�
A�
A��4
A�
A�|�4|�4
A�
A�|�4|
A�
A��4
A�
A�|�4|�4
A�
A�|�4|
A�
A�
A�
A�
A�
A��4
A�
A�|�4|�4
A�
A�|�4|
A�
A��4
A�
A�|�4|�4
A�
A�|�4|
A�
A�
A�
A��4
A�
A�|�4|�4
A�
A�|�4|
A�
A��4
A�
A�|�4|�4
A�
A�|�4|
A�
B7
A�
B
A�
B	
A�
B
A�
A��4
A�
A�|�4|�4
B
B|�4|
B
B�4
B
B|�4|�4
B
B|�4|
B

B
B
B�4
B
B
|�4|�4
B
B|�4|
B
B�4
B
B|�4|�4
B
B|�4|
B
B(
B
B!
B
B�4
B
B|�4|�4
B
B |�4|
B"
B%�4
B#
B$|�4|�4
B&
B'|�4|
B)
B0
B*
B-�4
B+
B,|�4|�4
B.
B/|�4|
B1
B4�4
B2
B3|�4|�4
B5
B6|�4|
B8
BW
B9
BH
B:
BA
B;
B>�4
B<
B=|�4|�4
B?
B@|�4|
BB
BE�4
BC
BD|�4|�4
BF
BG|�4|
BI
BP
BJ
BM�4
BK
BL|�4|�4
BN
BO|�4|
BQ
BT�4
BR
BS|�4|�4
BU
BV|�4|
BX
Bg
BY
B`
BZ
B]�4
B[
B\|�4|�4
B^
B_|�4|
Ba
Bd�4
Bb
Bc|�4|�4
Be
Bf|�4|
Bh
Bo
Bi
Bl�4
Bj
Bk|�4|�4
Bm
Bn|�4|
Bp
Bs�4
Bq
Br|�4|�4
Bt
Bu|�4|
Bw
B�
Bx
B�
By
B�
Bz
B�
B{
B�
B|
B�4
B}
B~|�4|�4
B�
B�|�4|
B�
B��4
B�
B�|�4|�4
B�
B�|�4|
B�
B�
B�
B��4
B�
B�|�4|�4
B�
B�|�4|
B�
B��4
B�
B�|�4|�4
B�
B�|�4|
B�
B�
B�
B�
B�
B��4
B�
B�|�4|�4
B�
B�|�4|
B�
B��4
B�
B�|�4|�4
B�
B�|�4|
B�
B�
B�
B��4
B�
B�|�4|�4
B�
B�|�4|
B�
B��4
B�
B�|�4|�4
B�
B�|�4|
B�
B�
B�
B�
B�
B�
B�
B���
B�
B�|��|��
B�
B�|��|
B�
B���
B�
B�|��|��
B�
B�|��|
B�
B�
B�
B���
B�
B�|��|��
B�
B�|��|
B�
B���
B�
B�|��|��
B�
B�|��|
B�
B�
B�
B�
B�
B���
B�
B�|��|��
B�
B�|��|
B�
B���
B�
B�|��|��
B�
B�|��|
B�
B�
B�
B���
B�
B�|��|��
B�
B�|��|
B�
B���
B�
B�|��|��
B�
B�|��|
B�
C6
B�
C
B�
C
B�
C
B�
B���
B�
B�|��|��
B�
C|��|
C
C��
C
C|��|��
C
C|��|
C	
C
C

C
��
C
C|��|��
C
C|��|
C
C��
C
C|��|��
C
C|��|
C
C'
C
C 
C
C��
C
C|��|��
C
C|��|
C!
C$��
C"
C#|��|��
C%
C&|��|
C(
C/
C)
C,��
C*
C+|��|��
C-
C.|��|
C0
C3��
C1
C2|��|��
C4
C5|��|
C7
CV
C8
CG
C9
C@
C:
C=��
C;
C<|��|��
C>
C?|��|
CA
CD��
CB
CC|��|��
CE
CF|��|
CH
CO
CI
CL��
CJ
CK|��|��
CM
CN|��|
CP
CS��
CQ
CR|��|��
CT
CU|��|
CW
Cf
CX
C_
CY
C\��
CZ
C[|��|��
C]
C^|��|
C`
Cc��
Ca
Cb|��|��
Cd
Ce|��|
Cg
Cn
Ch
Ck��
Ci
Cj|��|��
Cl
Cm|��|
Co
Cr��
Cp
Cq|��|��
Cs
Ct|��|
Cv
Do
Cw
C�
Cx
C�
Cy
C�
Cz
C�
C{
C�
C|
C��
C}
C~|��|��
C�
C�|��|
C�
C���
C�
C�|��|��
C�
C�|��|
C�
C�
C�
C���
C�
C�|��|��
C�
C�|��|
C�
C���
C�
C�|��|��
C�
C�|��|
C�
C�
C�
C�
C�
C���
C�
C�|��|��
C�
C�|��|
C�
C���
C�
C�|��|��
C�
C�|��|
C�
C�
C�
C���
C�
C�|��|��
C�
C�|��|
C�
C���
C�
C�|��|��
C�
C�|��|
C�
C�
C�
C�
C�
C�
C�
C���
C�
C�|��|��
C�
C�|��|
C�
C���
C�
C�|��|��
C�
C�|��|
C�
C�
C�
C���
C�
C�|��|��
C�
C�|��|
C�
C���
C�
C�|��|��
C�
C�|��|
C�
C�
C�
C�
C�
C���
C�
C�|��|��
C�
C�|��|
C�
C���
C�
C�|��|��
C�
C�|��|
C�
C�
C�
C���
C�
C�|��|��
C�
C�|��|
C�
C���
C�
C�|��|��
C�
C�|��|
C�
D3
C�
D
C�
D
C�
D
C�
C�V�
C�
C�|V�|V�
C�
D|V�|
D
DV�
D
D|V�|V�
D
D|V�|
D	
D
D

D
V�
D
D|V�|V�
D
D|V�|
D
DV�
D
D|V�|V�
D
D|V�|
D
D'
D
D 
D
DV�
D
D|V�|V�
D
D|V�|
D!
D$V�
D"
D#|V�|V�
D%
D&|V�|
D(
D/
D)
D,V�
D*
D+|V�|V�
D-
D.|V�|
D0|V�
D1
D2|V�|
D4
DS
D5
DD
D6
D=
D7
D:V�
D8
D9|V�|V�
D;
D<|V�|
D>
DAV�
D?
D@|V�|V�
DB
DC|V�|
DE
DL
DF
DIV�
DG
DH|V�|V�
DJ
DK|V�|
DM
DPV�
DN
DO|V�|V�
DQ
DR|V�|
DT
Dc
DU
D\
DV
DYV�
DW
DX|V�|V�
DZ
D[|V�|
D]
D`V�
D^
D_|V�|V�
Da
Db|V�|
Dd
Dk
De
DhV�
Df
Dg|V�|V�
Di
Dj|V�|
Dl|V�
Dm
Dn|V�|
Dp
D�
Dq
D�
Dr
D�
Ds
D�
Dt
D{
Du
DxV�
Dv
Dw|V�|V�
Dy
Dz|V�|
D|
DV�
D}
D~|V�|V�
D�
D�|V�|
D�
D�
D�
D�V�
D�
D�|V�|V�
D�
D�|V�|
D�
D�V�
D�
D�|V�|V�
D�
D�|V�|
D�
D�
D�
D�
D�
D�V�
D�
D�|V�|V�
D�
D�|V�|
D�
D�V�
D�
D�|V�|V�
D�
D�|V�|
D�
D�
D�
D�V�
D�
D�|V�|V�
D�
D�|V�|
D�|V�
D�
D�|V�|
D�
D�
D�
D�
D�
D�
D�
D�V�
D�
D�|V�|V�
D�
D�|V�|
D�
D�V�
D�
D�|V�|V�
D�
D�|V�|
D�
D�
D�
D�V�
D�
D�|V�|V�
D�
D�|V�|
D�
D�V�
D�
D�|V�|V�
D�
D�|V�|
D�
D�
D�
D�
D�
D�V�
D�
D�|V�|V�
D�
D�|V�|
D�
D�V�
D�
D�|V�|V�
D�
D�|V�|
D�
D�
D�
D�V�
D�
D�|V�|V�
D�
D�|V�|
D�|V�
D�
D�|V�|
D�|
D�
E

D�
D�
D�
D�
D�
D�V�
D�
D�|V�|V�
D�
D�|V�|
D�
D�V�
D�
D�|V�|V�
D�
D�|V�|
D�
E
D�
EV�
D�
D�|V�|V�
E
E|V�|
E
EV�
E
E|V�|V�
E
E	|V�|
E
E
E
E
E
EV�
E
E|V�|V�
E
E|V�|
E
EV�
E
E|V�|V�
E
E|V�|
E
E"
E
EV�
E
E|V�|V�
E 
E!|V�|
E#|V�
E$
E%|V�|
E'@
E(@
E)@|@
E+
E/
E,@
E-@
E.@|@
E0@
E1@
E2@|@
E4
E=
E5
E9
E6@
E7@
E8@az@
E:@
E;@
E<@az@
E>
EB
E?@
E@@
EA@az@
EC@
ED@
EE@az@
EG
Ek
EH
Eb
EI
EM
EJ@
EK@
EL@az@
EN@
EO@
EP@
EQ@
ERaz
ESaz
ETaz
EUaz
EVaz
EWaz
EXazaz
EY
EZ
E^
E[
E\v�j��
E]b�az
E_az
E`
Eaazt�t�az
Ec
Eg
Ed@
Ee@
Ef@|@
Eh@
Ei@
Ej@az@
El
Eu
Em
Eq
En@
Eo@
Ep@az@
Er@
Es@
Et@az@
Ev
E�
Ew@
Ex@
Ey@
Ez@
E{az
E|az
E}az
E~az
Eaz
E�az
E�az
E�az
E�az
E�azaz
E�
E�az
E�az
E�az
E�az
E�az
E�az
E�az
E�az
E�azt�az
E�@
E�@
E�@az@
E�
E�
E�
E�
E�
E�
E�
E�
E�az
E�@
E�@
E�@|@
E�
E�
E�@
E�@
E�@az@
E�@
E�@
E�@az@
E�
E�@
E�
E�@
E�@
E�@az@
E�
E�
E�@
E�@
E�@az@
E�@
E�@
E�@az@
E�
E�
E�
E�@
E�
E�@
E�@
E�@|@
E�
E�
E�@
E�@
E�@az@
E�@
E�@
E�@az@
E�
E�
E�@
E�@
E�@
E�@az@
E�
E�
E�@
E�@
E�@az@
E�@
E�@
E�@
E�@
E�az
E�az
E�az
E�az
E�az
E�az
E�az
E�az
E�az
E�az
E�azazv�
E�
F
E�
E�
E�
E�
E�
E�
E�@
E�@
E�@az@
E�@
E�@
E�@az@
E�
E�
E�@
E�@
E�@��@
E�@
E�@
E�@|@
E�
E�
E�
E�
E�@
E�@
E�@az@
E�@
E�@
E�@�@
E�
F
F@
F@
F@az@
F@
F@
F@�@
F
F
F	
F
F

F
F@
F@
F
@|@
F@
F@
F@az@
F
F
F@
F@
F@az@
F@
F@
F@|@
F
F%
F
F!
F@
F@
F @az@
F"@
F#@
F$@az@
F&
F*
F'@
F(@
F)@|@
F+@
F,@
F-@|@
F/
H�
F0
H-
F1
F�
F2
Fa
F3
FF
F4
F=
F5
F9
F6@
F7@
F8@az@
F:@
F;@
F<@|@
F>
FB
F?@
F@@
FA@az@
FC@
FD@
FE@az@
FG
FL
FH@
FI@
FJ@
FK@az@
FM
F]
FN@
FO@
FP@
FQ@
FR|
FS|
FT|
FU|
FV|
FW|
FX|
FY|
FZ|
F[|
F\|�|
F^@
F_@
F`@az@
Fb
Fu
Fc
Fl
Fd
Fh
Fe@
Ff@
Fg@|@
Fi@
Fj@
Fk@az@
Fm
Fq
Fn@
Fo@
Fp@az@
Fr@
Fs@
Ft@az@
Fv
F
Fw
F{
Fx@
Fy@
Fz@az@
F|@
F}@
F~@az@
F�
F�
F�@
F�@
F�@az@
F�@
F�@
F�@az@
F�
H
F�
G�
F�
F�
F�
F�
F�@
F�@
F�@az@
F�@
F�@
F�@az@
F�
G�
F�
G�
F�@
F�@
F�@
F�
F�
F�
F�
F�azaz
F�
F�az
F�
F�az
F�v�az
F�az
F�az
F�az
F�az
F�azaz
F�
F�az
F�az
F�az
F�az
F�j
F�j
F�j
F�j
F�j
F�jj
F�
F�j
F�
F�
F��
F��j�
F�j
F�j�j
F�
F�u�az
F�az
F�az
F�az
F�az
F�az
F�az
F�az
F�az
F�az
F�az
F�az
F�az
F�az
F�az
F�az
F�az
F�az
F�az
F�az
F�az
F�
F�
F�
F�
F�
F�
F��az�w�
F�w�w
F�az
F�az��j
F�az
F�
F�
F�gCw�gC
F�azw�az
F�
G�az
F�az
F�
F�az
F�az
F�az
F�az
F�az
F�az
F�az
F�az
F�az
F�az
F�az
F�az
F�az
F�az
F�
G�
F�
GN
F�
G6
F�
G
F�
G
F�
F�
F�
F�az
F�azgC
F�azgCaz
F�
G
F�
G
F�jgCjj{�
Gaz{�az
G
G
G
G

G
G
Gb�{�b�b�
G	azw�
Gaz
Gazu�w�
G
G
G
G
Gww�w
GkXwkX
Gaz
GazkX�i
G
G%
G
G
G
Gv�
G
Gmv�m
Gazmaz
G
G"wF
G 
G!��wF��
G#az
G$azaz��
G&
G/
G'
G-
G(
G+
G)
G*wwq�Ku�
G,w�v�w�
G.azw�az
G0
G3u�
G1
G2�Ku��K
G4az
G5azw*�K
G7az
G8az
G9
GD
G:
GA
G;
G>
G<
G=w���jv�
G?
G@v�v�v�az
GBaz
GCaz��az
GE
GK
GF
GI
GG
GH��v��,v�
GJ�v��
GLaz
GMaz�az
GO
G�
GP
Gz
GQ
Ge
GR
G]
GS
GZ
GT
GW
GU
GV��az�wF
GX
GYazazj
G[az
G\azazj
G^
Gb��
G_
G`
Ga��az�Lw8
Gcaz
Gdaz���w
Gf
Go
Gg
Gm
Gh
Gj
GigCb��
Gk
GlgCw�^�
Gnaz{�az
Gp
Gw
Gq
Gt
Gr
Gsaz��u��K
Gu
GvazS��1��
Gxaz
Gyazazwq
G{
G�
G|
G�
G}
G�
G~
G�
G
G��XwUaz
G�
G�azw�
T
G�az
G�azaz?U
G�
G�
G�
G�
G�
G��^�&�i�K
G�
G�V����w*
G�az
G�az���
G�
G�
G�
G�
G�
G�
G�
G���"���
G�
G���"J��
G�az
G�az���
G�
G�
G�
G�
G�
G���5�
G�
G���T4��
G�az
G�az���-
G�az
G�az
G�
G�
G�
G�
G�
G�
G�
G���<���?
G�
G������
G�az
G�az���
G�
G�
G�
G�
G�
G�az��
G�
G�az��L�RF
G�az
G�az'az
G�az
G�az
G�az
G�az
G�az
G�
G�
G���
G��az�
G�az
G�az��az
G�az
G�az
G�
G�
G�
G�
G�azaz
G�
G�az
G�
G�u�
G�u�t�t�v�
G�
G�u�wqb�az
G�azaz
G�t�az@
G�
G�@
G�@
G�@
G�@
G�@@
G�
G�@
G�@
G�@
G�@
G�@
G�@
G�
G��'�[�@
G�@
G�@
G�@az@
G�
G�
G�
G�
G�@
G�@
G�@az@
G�@
G�@
G�@az@
G�
H
G�@
H@
H@az@
H@
H@
H@az@
H
H
H
H
H	
H
H
@
H@
H@az@
H@
H@
H@az@az
H
H@
H@
H@az@
H
H 
H
H
H@
H@
H@az@
H@
H@
H@az@
H!
H)
H"@
H#@
H$@
H%@az
H&az
H'az
H(azgQ
H*@
H+@
H,@az@
H.
H�
H/
HR
H0
HC
H1
H:
H2
H6
H3@
H4@
H5@az@
H7@
H8@
H9@az@
H;
H?
H<@
H=@
H>@az@
H@@
HA@
HB@az@
HD
HI
HEaz
HF@
HG@
HH@az@
HJ
HN
HK@
HL@
HM@az@
HO@
HP@
HQ@|@
HS
H�
HT
H]
HU
HY
HV@
HW@
HX@az@
HZ@
H[@
H\@az@
H^@
H_@
H`@
Ha@
Hb@
Hcaz
Hdaz
Heaz
Hfaz
Hg
Hy
Hh
Hpaz
Hi
Hj
Hm
Hkaz
HlazgQaz
Hnaz
Hoazwaz
Hqaz
Hr
Hu
Hsaz
Htazv�az
Hvaz
Hwaz
Hxazv�az
Hzaz
H{
H�
H|
H�
H}az
H~az
HazgCaz
H�az
H�az
H�azmaz
H�
H�
H�az
H�az
H�az��az
H�az
H�az
H�azv�az
H�
H�
H�@
H�@
H�@
H�@az@
H�
H�
H�@
H�@
H�@az@
H�@
H�@
H�@az@
H�
H�
H�
H�
H�
H�
H�
H�
H�@
H�@
H�@|@
H�@
H�@
H�@az@
H�
H�
H�@
H�@
H�@az@
H�@
H�@
H�@az@
H�
H�
H�
H�
H�@
H�@
H�@az@
H�@
H�@
H�@|@
H�
H�
H�@
H�@
H�@|@
H�@
H�@
H�@az@
H�
H�
H�
H�
H�
H�
H�@
H�@
H�@|@
H�@
H�@
H�@az@
H�
H�
H�@
H�@
H�@az@
H�@
H�@
H�@az@
H�
H�
H�
H�
H�@
H�@
H�@az@
H�@
H�@
H�@az@
H�
H�
H�@
H�@
H�@az@
H�@
H�@
H�@az@
H�
I�
H�
I<
H�
I
H�
I
H�
H�
H�
H�
H�@
H�@
H�@|@
H�@
H�@
H�@|@
H�
H�
H�@
H�@
H�@az@
H�@
I@
I@az@
I
I
I
I
I@
I@
I@az@
I	@
I
@
I@�@
I
I
I@
I@
I@|@
I@
I@
I@f@
I
I)
I
I 
I
I
I@
I@
I@az@
I@
I@
I@az@
I!
I%
I"@
I#@
I$@az@
I&@
I'@
I(@az@
I*
I3
I+
I/
I,@
I-@
I.@az@
I0@
I1@
I2@|@
I4
I8
I5@
I6@
I7@|@
I9@
I:@
I;@az@
I=
Id
I>
IQ
I?
IH
I@
ID
IA@
IB@
IC@az@
IE@
IF@
IG@|@
II
IM
IJ@
IK@
IL@|@
IN@
IO@
IP@|@
IR
I[
IS
IW
IT@
IU@
IV@az@
IX@
IY@
IZ@az@
I\
I`
I]@
I^@
I_@|@
Ia@
Ib@
Ic@az@
Ie
Ix
If
Io
Ig
Ik
Ih@
Ii@
Ij@az@
Il@
Im@
In@az@
Ip
It
Iq@
Ir@
Is@az@
Iu@
Iv@
Iw@az@
Iy
I�
Iz
I~
I{@
I|@
I}@�@
I@
I�@
I�@az@@
I�
I�@
I�@
I�@az@
I�
I�
I�
I�
I�
I�
I�
I�
I�
I�
I�@
I�@
I�@az@
I�@
I�@
I�@az@@
I�
I�@
I�@
I�@|@
I�
I�
I�
I�
I�@
I�@
I�@az@
I�@
I�@
I�@|@
I�
I�
I�@
I�@
I�@az@
I�@
I�@
I�@az@
I�
I�
I�
I�az
I�
I�@
I�@
I�@az@
I�
I�
I�@
I�@
I�@az@
I�@
I�@
I�@az@
I�
I�
I�
I�
I�@
I�@
I�@az@
I�@
I�@
I�@az@
I�@
I�@
I�@
I�@|@
I�
I�
I�
I�
I�
I�
I�
I�
I�@
I�@
I�@az@
I�@
I�@
I�@az@
I�
I�
I�@
I�@
I�@az@
I�@
I�@
I�@az@
I�
I�
I�
I�
I�@
I�@
I�@az@
I�@
I�@
I�@�@
I�
I�
I�@
I�@
I�@az@
I�@
I�@
I�@�@
I�
J
I�
I�
I�
I�
I�@
I�@
I�@|@
I�@
I�@
I�@|@
I�
J
J@
J@
J@az@
J@
J@
J@�@
J
J
J	
J
J
@
J@
J@az@
J@
J@
J@az@
Jaz
J@
J@
J@az@
J
Og
J
L{
J
K<
J
J�
J
Jf
J
J?
J
J0
J
J'
J
J#
J @
J!@
J"@az@
J$@
J%@
J&@az@
J(
J,
J)@
J*@
J+@az@
J-@
J.@
J/@az@
J1
J6
J2az
J3@
J4@
J5@az@
J7
J;
J8@
J9@
J:@az@
J<@
J=@
J>@az@
J@
JS
JA
JJ
JB
JF
JC@
JD@
JE@|@
JG@
JH@
JI@�@
JK
JO
JL@
JM@
JN@az@
JP@
JQ@
JR@az@
JT
J]
JU
JY
JV@
JW@
JX@az@
JZ@
J[@
J\@az@
J^
Jb
J_@
J`@
Ja@az@
Jc@
Jd@
Je@az@
Jg
J�
Jh
Jw
Ji
Jr
Jj
Jn
Jk@
Jl@
Jm@az@
Jo@
Jp@
Jq@|@az
Js
Jt@
Ju@
Jv@az@
Jx
J�
Jy
J}
Jz@
J{@
J|@az@
J~@
J@
J�@az@
J�
J�
J�@
J�@
J�@az@
J�@
J�@
J�@az@
J�
J�
J�
J�@az
J�
J�
J�@
J�@
J�@|@
J�@
J�@
J�@az@
J�
J�
J�
J�
J�@
J�@
J�@|@
J�@
J�@
J�@az@
J�
J�
J�@
J�@
J�@az@
J�@
J�@
J�@az@
J�
J�
J�
J�
J�
J�
J�
J�
J�
J�
J�@
J�@
J�@az@
J�@
J�@
J�@az@
J�
J�
J�@
J�@
J�@az@
J�@
J�@
J�@az@
J�
J�
J�
J�
J�@
J�@
J�@az@
J�@
J�@
J�@az@
J�
J�
J�@
J�@
J�@az@
J�@
J�@
J�@az@
J�
J�
J�
J�
J�
J�
J�@
J�@
J�@|@
J�@
J�@
J�@az@
J�
J�
J�@
J�@
J�@az@
J�@
J�@
J�@az@
J�
J�
J�
J�
J�@
J�@
J�@az@
J�@
J�@
J�@az@
J�
J�
J�@
J�@
J�@az@
J�@
J�@
J�@az@
J�
K
J�
K

J�
K
J�
K
J�@
J�@
K@az@
K@
K@
K@az@
K@
K@
K@
K	@az@
K
K
K
K
K
@
K@
K@az@
K@
K@
K@|@
K
K
K@
K@
K@|@
K@
K@
K@|@
K
K1
K
K(
K 
K$
K!@
K"@
K#@az@
K%@
K&@
K'@az@
K)
K-
K*@
K+@
K,@|@
K.@
K/@
K0@az@
K2
K7@
K3
K4@
K5@
K6@az@
K8az
K9@
K:@
K;@az@
K=
K�
K>
K�
K?
Kb
K@
KO
KA
KF@
KB
KC@
KD@
KE@az@
KG
KK
KH@
KI@
KJ@az@
KL@
KM@
KN@az@
KP
KY
KQ
KU
KR@
KS@
KT@az@
KV@
KW@
KX@��@
KZ
K^
K[@
K\@
K]@|@
K_@
K`@
Ka@az@
Kc
Kv
Kd
Km
Ke
Ki
Kf@
Kg@
Kh@az@
Kj@
Kk@
Kl@az@
Kn
Kr
Ko@
Kp@
Kq@az@
Ks@
Kt@
Ku@az@
Kw
K|az
Kx
Ky@
Kz@
K{@az@@
K}
K~@
K@
K�@|@
K�
K�
K�
K�
K�
K�
K�
K�
K�@
K�@
K�@az@
K�@
K�@
K�@az@
K�
K�
K�@
K�@
K�@az@
K�@
K�@
K�@�@
K�
K�az
K�
K�@
K�@
K�@az@@
K�
K�@
K�@
K�@|@
K�
K�
K�
K�
K�
K�
K�@
K�@
K�@az@
K�@
K�@
K�@az@
K�
K�
K�@
K�@
K�@az@
K�@
K�@
K�@az@
K�
K�
K�@
K�@
K�@
K�@az@
K�
K�
K�@
K�@
K�@az@
K�@
K�@
K�@az@
K�
L0
K�
K�
K�
K�
K�
K�
K�
K�
K�@
K�@
K�@az@
K�@
K�@
K�@az@
K�
K�
K�@
K�@
K�@az@
K�@
K�@
K�@az@
K�
K�
K�
K�
K�@
K�@
K�@az@
K�@
K�@
K�@az@
K�
K�
K�@
K�@
K�@az@
K�@
K�@
K�@az@
K�
L
K�
L
K�
K�
K�@
K�@
K�@az@
K�@
K�@
K�@
K�@
K�
K�
K��
K��|�
K�
K��|
K�|�|
Laz
L@
L@
L@
L@
L
L
L|
L
L
L	�
L
|
L|
L|
L
||
L|
L|
L|�6�|
L||
L|
L|
L|
L
L|
L|
L|
L|
L||�
L
L'
L
L#
L @
L!@
L"@az@
L$@
L%@
L&@az@
L(
L,
L)@
L*@
L+@az@
L-@
L.@
L/@az@
L1
LT
L2
LA
L3
L<
L4
L8
L5@
L6@
L7@az@
L9@
L:@
L;@az@
L=@
L>@
L?@
L@@az@
LB
LK
LC
LG
LD@
LE@
LF@|@
LH@
LI@
LJ@az@
LL
LP
LM@
LN@
LO@az@
LQ@
LR@
LS@|@
LU
Lh
LV
L_
LW
L[
LX@
LY@
LZ@az@
L\@
L]@
L^@az@
L`
Ld
La@
Lb@
Lc@az@
Le@
Lf@
Lg@az@
Li
Lr
Lj
Ln
Lk@
Ll@
Lm@az@
Lo@
Lp@
Lq@az@
Ls
Lw
Lt@
Lu@
Lv@az@
Lx@
Ly@
Lz@|@
L|
M�
L}
M
L~
L�
L
L�
L�
L�
L�
L�
L�
L�
L�@
L�@
L�@az@
L�@
L�@
L�@|@
L�@
L�@
L�@
L�@az@
L�
L�@
L�
L�@
L�@
L�@az@@az
L�
L�
L�
L�
L�@
L�@
L�@
L�@az@
L�|
L�@
L�@
L�@az@
L�
L�
L�
L�
L�@
L�@
L�@az@
L�@
L�@
L�@az@@
L�
L�@
L�@
L�@az@
L�
L�
L�
L�
L�
L�
L�
L�
L�@
L�@
L�@az@
L�@
L�@
L�@az@@
L�
L�@
L�@
L�@az@
L�
L�@
L�
L�@
L�@
L�@az@
L�@
L�@
L�@
L�@
L�@
L�az�az
L�
L�
L�
L�
L�
L�
L�@
L�@
L�@|@
L�@
L�@
L�@az@
L�
L�
L�@
L�@
L�@az@
L�@
L�@
L�@|@
L�
L�
L�
L�
L�@
L�@
L�@az@
L�@
L�@
L�@az@
L�
L�
L�@
L�@
L�@az@
L�@
L�@
L�@
L�@@
L�
L�@@
L�
L�@
L�@
L�@
L�@
L�@
L�@
M@
M@�@
M
MI
M
M+
M
M
M
M
M
M
M@
M	@
M
@az@
M@
M
@
M@az@
M
M
M@
M@
M@az@
M@
M@
M@az@
M
M"
M
M
M@
M@
M@az@
M@
M @
M!@az@
M#
M'
M$@
M%@
M&@az@
M(@
M)@
M*@az@
M,
M6@
M-
M.
M2
M/@
M0@
M1@az@
M3@
M4@
M5@|@
M7
M@
M8
M<
M9@
M:@
M;@az@
M=@
M>@
M?@az@
MA
ME
MB@
MC@
MD@az@
MF@
MG@
MH@az@
MJ
Mm
MK
M^
ML
MU
MM
MQ
MN@
MO@
MP@|@
MR@
MS@
MT@az@
MV
MZ
MW@
MX@
MY@az@
M[@
M\@
M]@az@
M_
Md
M`@
Ma@
Mb@
Mc@az@
Me
Mi
Mf@
Mg@
Mh@az@
Mj@
Mk@
Ml@az@
Mn
M�
Mo
Mx
Mp
Mt
Mq@
Mr@
Ms@az@
Mu@
Mv@
Mw@az@
My
M}
Mz@
M{@
M|@az@
M~@
M@
M�@|@
M�
M�
M�
M�
M�@
M�@
M�@az@
M�@
M�@
M�@az@
M�
M�
M�@
M�@
M�@az@
M�@
M�@
M�@az@
M�
O
M�
M�
M�
M�
M�
M�
M�
M�
M�@
M�@
M�@
M�@az@az
M�
M�@
M�@
M�@|@
M�
M�
M�
M�
M�@
M�@
M�@az@
M�@
M�@
M�@az@
M�@
M�@
M�@
M�@az@
M�
M�
M�
M�
M�
M�
M�@
M�@
M�@az@
M�@
M�@
M�@az@
M�
M�
M�@
M�@
M�@az@
M�@
M�@
M�@az@
M�
M�@
M�
M�@
M�@
M�@|@
M�
M�
M�@
M�@
M�@�@
M�@
M�@
M�@az@
M�
N�
M�
No
M�
M�
M�
M�
M�@
M�@
M�@az@
M�@
M�@
M�@az@
M�
Nk
M�||
M�|
M�|
M�
M�
Nb
M�
N4
M�
N(
M�
M�
M�|
M�
M�|
M�
M�
M�
M�|
M�
M�
M�
M��|�||�
M�||�
M�|
M�|
M�
M�|��||
M��|
M�|
M�|
M�
N
N
N
N
N|
N|
N
N|
N|
N||
N
N|
N	|
N
||
N
N||
N
N|
N|
N||
N
N||
N�|
N||
N|�|
N
N
N|
N|��
N
N�|�|
N|
N 
N$
N!|
N"
N#|�6|�6
N%|
N&
N'|��||
N)
N*|
N+|
N,||
N-
N.
N1|
N/|
N0|�
N2|
N3|�||
N5|
N6
N7|
N8|
N9|
N:|
N;
N>
N<|
N=|��|
N?|
N@
NQ|
NA
NB||
NC
ND||
NE|
NF|
NG|
NH|
NI
NJ|
NK|
NL|
NM||
NN
NO||
NP|�
NR|
NS�
NT�
NU�
NV�
NW�
NX�
NY�
NZ�
N[�
N\�
N]�
N^�
N_�
N`�
Na�|�
Nc|
Nd|
Ne||
Nf
Ng
Ni|
Nh��|
Nj|��|
Nl@
Nm@
Nn@az@
Np
Ny
Nq
Nu
Nr@
Ns@
Nt@az@
Nv@
Nw@
Nx@az@
Nz
N~
N{@
N|@
N}@az@
N@
N�@
N�@az@
N�
O	
N�
N�
N�
N�
N�@
N�@
N�@|@
N�@
N�@
N�@az@
N�
O
N�
N�
N�az
N�az
N�az
N�
N�
N�az
N�
N�az
N�az
N�
N�
N�
N�az
N�az
N�az
N�azaz
N�w��
N�azaz
N�
N�az
N�az
N�azwv�az
N�az
N�
N�azaz
N�
N�azaz
N�
N�azaz
N�azv�
N�
N�az
N�
N�
N�az
N�
N�
N�az
N�az
N�
N�az
N�
N�az
N�azw
N�azv�azaz
N�
N�az
N�azaz
N�az
N�waz
N�
N�az
N�az
N�
N�az
N�az
N�
N�
N�azwv�
N�azwaz
N�az
N�
N�
N�azaz
N�az
N�az
N�v�azazw
N�
N�
N�
N�
N�azaz
N�
N�azaz��
N�
N�az
N�az
N�azwaz
N�az
N�
N�az
N�az
N�azaz
N�b���
N�az
N�az
N�az
N�
N�azt�az
N�
N�
N�
N�
N�
N�
N�azjv�azb�
N�b�j
N�
N�
N�
N�ubazw�w
N�
N�kXazt�v�az
N�az
N�t�
N�
N�az
N�az
N�az
N�az
N�
Oaz
Oaz
Oazww
O
Oazwaz
O@
O@
O@az@
O

O
O
O
O@
O
@
O@az@
O@
O@
O@|@
O@
O@
O@
O@az@@
O
O
O0
O
O&
O
O!
O@
O@
O@
O @az@
O"@
O#@
O$@
O%@|@
O'@
O(
O,
O)@
O*@
O+@az@
O-@
O.@
O/@az@
O1
O\
O2
OW
O3
O7
O4@
O5@
O6@az@
O8@
O9@
O:@
O;@
O<az
O=az
O>azaz
O?
O@az
OAaz
OBaz
OCaz
ODaz
OEaz
OFaz
OGaz
OHaz
OIaz
OJazaz
OK
OLaz
OMaz
ONazaz
OO
OPaz
OQaz
ORaz
OSaz
OTaz
OUaz
OVazw�azaz
OX
OY@
OZ@
O[@az@
O]
Ob
O^@
O_@
O`@
Oa@|@
Oc@
Od@
Oe@
Of@az@
Oh
Qv
Oi
Pw
Oj
O�
Ok
O�
Ol
O�
Om
Ox
On
Os@
Oo
Op@
Oq@
Or@az@
Ot@
Ou@
Ov@
Ow@az@
Oy
O~@
Oz
O{@
O|@
O}@az@
O
O�
O�@
O�@
O�@az@
O�@
O�@
O�@��@
O�
O�
O�
O�
O�@
O�@
O�@
O�@az@
O�
O�
O�@
O�@
O�@az@
O�@
O�@
O�@az@
O�
O�
O�
O�
O�@
O�@
O�@az@
O�@
O�@
O�@|@
O�
O�
O�@
O�@
O�@az@
O�@
O�@
O�@az@
O�
O�
O�
O�
O�
O�
O�
O�
O�@
O�@
O�@az@
O�@
O�@
O�@az@
O�@
O�@
O�@
O�@az@
O�
O�
O�
O�
O�@
O�@
O�@az@
O�@
O�@
O�@az@
O�
O�
O�@
O�@
O�@az@
O�@
O�@
O�@az@
O�
O�
O�
O�
O�
O�
O�@
O�@
O�@az@
O�@
O�@
O�@az@
O�
O�
O�@
O�@
O�@az@
O�@
O�@
O�@az@
O�
O�
O�
O�
O�@
O�@
O�@az@
O�@
O�@
O�@az@
O�
O�
O�@
O�@
O�@az@
O�@
O�@
O�@az@
O�
P0
O�
P
O�
P
O�
O�@
O�
O�@
O�@
O�@|@
O�
P
P@
P@
P@|@
P@
P@
P@az@
P
P
P	
P
P
@
P@
P@az@
P@
P@
P@az@
P
P
P@
P@
P@az@
P@
P@
P@az@
P
P&
P
P!
P@
P@
P@
P @az@az
P"
P#@
P$@
P%@az@@
P'
P(
P,
P)@
P*@
P+@az@
P-@
P.@
P/@az@
P1
PT
P2
PE
P3
P<
P4
P8
P5@
P6@
P7@�@
P9@
P:@
P;@az@
P=
PA
P>@
P?@
P@@az@
PB@
PC@
PD@az@
PF
PK@
PG
PH@
PI@
PJ@az@
PL
PP
PM@
PN@
PO@az@
PQ@
PR@
PS@az@
PU
Ph
PV
P_
PW
P[
PX@
PY@
PZ@az@
P\@
P]@
P^@|@
P`
Pd
Pa@
Pb@
Pc@|@
Pe@
Pf@
Pg@az@
Pi
Pr
Pj
Pn
Pk@
Pl@
Pm@az@
Po@
Pp@
Pq@|@@
Ps
Pt@
Pu@
Pv@az@
Px
Q
Py
P�
Pz
P�
P{
P�
P|
P�
P}az
P~@
P@
P�@az@@
P�
P�@
P�@
P�@az@
P�
P�
P�
P�
P�@
P�@
P�@az@
P�@
P�@
P�@|@
P�@
P�@
P�@
P�@az@
P�
P�
P�
P�
P�
P�
P�@
P�@
P�@S%@
P�@
P�@
P�@az@
P�
P�
P�@
P�@
P�@az@
P�@
P�@
P�@az@
P�
P�
P�
P�
P�@
P�@
P�@az@
P�@
P�@
P�@az@@
P�
P�@
P�@
P�@az@
P�
P�
P�
P�
P�
P�
P�
P�
P�@
P�@
P�@az@
P�@
P�@
P�@az@
P�
P�
P�@
P�@
P�@az@
P�@
P�@
P�@az@
P�
P�
P�
P�
P�@
P�@
P�@az@
P�@
P�@
P�@az@
P�@
P�@
P�@
P�@�@
P�
P�
P�
P�
P�
P�
P�@
P�@
P�@az@
P�@
P�@
P�@az@
P�
P�
P�@
P�@
P�@az@
P�@
P�@
P�@az@
P�
P�
P�
P�
P�@
P�@
P�@az@
P�@
P�@
P�@az@
P�
P�
P�@
P�@
P�@az@
Q@
Q@
Q@az@
Q
QG
Q
Q(
Q
Q
Q
Q@
Q
Q	@
Q
@
Q@az@
Q
Q
Q@
Q@
Q@az@
Q@
Q@
Q@az@
Q
Q
Q
Q
Q@
Q@
Q@az@
Q@
Q@
Q@az@
Q 
Q$
Q!@
Q"@
Q#@|@
Q%@
Q&@
Q'@az@
Q)
Q8
Q*
Q3
Q+
Q/
Q,@
Q-@
Q.@az@
Q0@
Q1@
Q2@az@@
Q4
Q5@
Q6@
Q7@az@
Q9
Q>@
Q:
Q;@
Q<@
Q=@|@
Q?
QC
Q@@
QA@
QB@|@
QD@
QE@
QF@az@
QH
Qc
QI
QT
QJ
QO
QK@
QL@
QM@
QN@|@
QP@
QQ@
QR@
QS@az@
QU
QZ
QVaz
QW@
QX@
QY@|@
Q[
Q_
Q\@
Q]@
Q^@|@
Q`@
Qa@
Qb@az@
Qd
Qk
Qe
Qf@azaz
Qg
Qh@
Qi@
Qj@az@
Ql
Qu
Qm
Qq
Qn@
Qo@
Qp@az@
Qr@
Qs@
Qt@az@@az
Qw
R{
Qx
Q�
Qy
Q�
Qz
Q�
Q{
Q�
Q|
Q�
Q}
Q�
Q~@
Q@
Q�@az@
Q�@
Q�@
Q�@az@
Q�
Q�
Q�@
Q�@
Q�@az@
Q�@
Q�@
Q�@az@
Q�
Q�
Q�
Q�
Q�@
Q�@
Q�@
Q�@
Q�az
Q�az
Q�az
Q�az
Q�az
Q�az
Q�az
Q�az
Q�az
Q�azaz
Q�azb�
Q�@
Q�@
Q�@az@@
Q�
Q�@
Q�@
Q�@az@
Q�
Q�
Q�
Q�
Q�
Q�
Q�@
Q�@
Q�@az@
Q�@
Q�@
Q�@az@
Q�@
Q�@
Q�@
Q�@az@
Q�
Q�
Q�
Q�
Q�@
Q�@
Q�@az@
Q�@
Q�@
Q�@az@az
Q�
Q�@
Q�@
Q�@az@
Q�
Q�
Q�
Q�
Q�
Q�
Q�
Q�
Q�@
Q�@
Q�@az@
Q�@
Q�@
Q�@az@
Q�|
Q�@
Q�@
Q�@az@
Q�
Q�@
Q�
Q�@
Q�@
Q�@az@az@
Q�
Q�
Q�
Q�
Q�
Q�
Q�@
Q�@
Q�@|@
Q�@
Q�@
Q�@az@@
Q�
Q�@
Q�@
Q�@az@
Q�
Q�
Q�
Q�
Q�@
Q�@
Q�@|@
Q�@
Q�@
Q�@|@@
Q�
Q�@
Q�@
Q�@|@
R
R2
R
R
R
R@
R
R
R
R@
R@
R@az@
R	@
R
@
R@az@
R
R
R
R
R@
R@
R@az@
R@
R@
R@az@az
R
R@
R@
R@az@
R
R'
R
R"
Raz
R@
R @
R!@az@
R#@
R$@
R%@
R&@az@
R(
R-@
R)
R*@
R+@
R,@�@
R.@
R/@
R0@
R1@az@
R3
RX
R4
RC
R5
R:az
R6
R7@
R8@
R9@|@
R;
R?
R<@
R=@
R>@az@
R@@
RA@
RB@�@az
RD
RE
RI
RF@
RG@
RH@|@
RJ@
RK@
RL@
RM@
RN
RUaz
RO
RPazaz
RQaz
RR
RSazaz
RTaz{�az
RVaz
RWazb�
RY
Rl
RZ
Rc
R[
R_
R\@
R]@
R^@az@
R`@
Ra@
Rb@az@
Rd
Rh
Re@
Rf@
Rg@az@
Ri@
Rj@
Rk@az@
Rm
Rv
Rn
Rr
Ro@
Rp@
Rq@az@
Rs@
Rt@
Ru@az@
Rw@
Rx@
Ry@
Rz@|@
R|
S
R}
R�
R~
R�
R
R�
R�
R�
R�|
R�@
R�@
R�@az@
R�
R�
R�@
R�@
R�@az@
R�@
R�@
R�@az@
R�
R�
R�
R�
R�@
R�@
R�@az@
R�az
R�az
R�az
R�az
R�az
R�az
R�azaz
R�
R�az
R�az
R�az
R�az
R�azaz
R�
R�azaz
R�
R�az
R�az
R�az
R�az
R�az
R�azaz
R�az
R�
R�az
R�az
R�az
R�az
R�az
R�azaz
R�w�az
R�@
R�@
R�@
R�@az@
R�
R�
R�
R�az
R�
R�@
R�@
R�@az@
R�az
R�@
R�@
R�@az@
R�
R�@
R�
R�@
R�@
R�@|@
R�
R�
R�@
R�@
R�@|@
R�@
R�@
R�@az@
R�
R�
R�
R�
R�
R�
R�
R�
R�@
R�@
R�@az@
R�@
R�@
R�@az@@
R�
R�@
R�@
R�@az@
R�
R�@
R�
R�@
R�@
R�@|@
R�
R�
R�@
R�@
R�@az@
R�@
R�@
R�@az@
R�
S
R�
R�
R�
R�
R�@
R�@
R�@az@
R�@
R�@
R�@az@@
S
S@
S@
S@az@
S
S

S@
S@
S@
S	@az@
S
S
S@
S
@
S@az@
S@
S@
S@az@
S
S�
S
Sz
S
S%
S
S 
S
S
S@
S@
S@az@
S@
S@
S@az@
S!@
S"@
S#@
S$@az@
S&
Su
S'@
S(@
S)@
S*@
S+@
S,
S7
S-t�
S.az
S/az
S0az
S1az
S2az
S3azaz
S4
S5az
S6azwaz
S8
SB
S9az
S:az
S;az
S<az
S=az
S>az
S?azaz
S@
SAazazv�
SCaz
SDaz
SEaz
SF
Sh
SG
SY
SH
SQ
SI
SN
SJ
SLaz
SK��az
SMaz��az
SOazaz
SPazv�az
SR
SS
SV
ST
SUaz�wv�az
SW
SXwqaz�1az
SZ
Sa
S[az
S\
S^
S]azv�w8
S_
S`��v�u�az
Sb
Se
Scaz
Sdazaz�
Sfazaz
Sgazu�
Si
Sn
Sjazaz
Skaz
Sl
Smazaz��
Soaz
Spaz
Sq
Ssaz
Srw8u�
Stazv�az@
Sv
Sw@
Sx@
Sy@�@
S{
S�
S|
S�
S}@
S~@
S@
S�@
S�@
S�@@
S�
S�@
n@az
S�
S�@
S�@
S�@az@@
S�
S�
S�
S�@
S�@
S�@az@
S�@
S�@
S�@az@
S�
S�
S�
S�
S�
S�
S�@
S�@
S�@
S�@az@
S�
S�
S�@
S�@
S�@az@
S�@
S�@
S�@az@
S�
S�az
S�
S�@
S�@
S�@az@
S�
S�
S�@
S�@
S�@az@
S�@
S�@
S�@az@
S�
S�
S�
S�
S�
S�
S�@
S�@
S�@az@
S�@
S�@
S�@az@
S�
S�
S�@
S�@
S�@az@
S�@
S�@
S�@az@
S�
S�az
S�
S�@
S�@
S�@|@@
S�
S�@
S�@
S�@az@
S�
hJ
S�
gh
S�
gc
S�
T8
S�az
S�az
S�az
S�az
S�az
S�az
S�az
S�az
S�az
S�azaz
S�az
S�
S�azaz
S�az
S�
S�az
S�az
S�az
S�azaz
S�
S�az
S�az
S�az
S�az
S�
Taz
S�az
S�
S�
T
S�az
S�azaz
S�
S�az
S�azaz
S�
S�az
S�az
S�azaz
S�az
S�
S�az
Taz
Taz
Tazw�az
Tazaz
T
Taz
Taz
Tazaz
T	az
T
az
Taz
T
T
azaz
T
Taz
Taz
Taz
Tazw�az
T
T&az
T
Taz
Tazaz
T
Tazaz
T
Taz
Taz
Taz
Taz
Tazaz
T 
T!azaz
T"
T#az
T$az
T%azw�az
T'az
T(az
T)azaz
T*az
T+az
T,
T-azaz
T.az
T/
T0az
T1azaz
T2
T3az
T4az
T5az
T6az
T7azw�az
T9@
T:@
T;@
T<@
T=az
T>
Y
T?
U�
T@
T�
TA
T�
TB
TK
TCaz
TDaz
TEaz
TFaz
TGaz
THaz
TIaz
TJazv�azaz
TL
TM
T�
TNaz
TOaz
TP
T�
TQ
T~
TRaz
TSaz
TTaz
TUaz
TVaz
TWaz
TXaz
TYaz
TZaz
T[az
T\
T}
T]v�
T^
Tn
T_az
T`az
Taaz
Tbaz
Tcaz
Tdaz
Teaz
Tfaz
Tgaz
Thaz
Tiazv�
Tjv�
Tk
Tl
Tmu�t�t���az
To
Tpaz
Tqaz
Traz
Tsaz
Ttaz
Tuaz
Tvaz
Twaz
Txaz
Tyaz
Tzazv�
T{
T|azv�azv�az
Tazaz
T�
T�azaz
T�
T�az
T�az
T�az
T�az
T�az
T�az
T�az
T�az
T�az
T�az
T�az
T�az
T�az
T�az
T�az
T�az
T�az
T�az
T�az
T�az
T�az
T�
T�
T�azv�az
T�azv�az
T�az
T�az
T�az
T�az
T�az
T�az
T�az
T�az
T�az
T�az
T�az
T�az
T�az
T�az
T�az
T�az
T�az
T�az
T�az
T�az
T�az
T�azv�az
T�az
T�az
T�az
T�az
T�az
T�azv�
T�
T�az
T�az
T�az
T�az
T�az
T�az
T�az
T�az
T�az
T�az
T�az
T�az
T�az
T�az
T�az
T�az
T�az
T�azv�az
T�az
T�az
T�az
T�az
T�az
T�az
T�az
T�az
T�azv�az
T�
U�
T�
T�
T�az
T�az
T�az
T�az
T�az
T�az
T�azm
T�
T�azmt�az
T�
T�
Uw
T�az
T�az
T�
UM
T�
U6
T�az
T�
U
T�
T�
T�az
T�az
T�az
T�
T�maz
T�azm
T�
T�azmaz
T�az
T�az
T�az
T�
U
T�az
T�az
T�az
T�azm
T�
T�az
Uaz
Uaz
Uaz
Uaz
Uaz
Uaz
Uaz
Uazmaz
U	azaz
U

Uaz
Uazmaz
Uaz
Uaz
Uaz
Uaz
Uaz
Uaz
Uaz
Uaz
U
U5
Umaz
U
U
U'
Uaz
Uaz
Uaz
Uaz
Uaz
Uaz
U az
U!az
U"az
U#az
U$azm
U%
U&az��az
U(az
U)az
U*az
U+az
U,az
U-az
U.az
U/az
U0az
U1az
U2az
U3az
U4azmazmt�
U7azm
U8
U9az
U:az
U;az
U<az
U=az
U>az
U?az
U@az
UAaz
UBaz
UCaz
UDaz
UEaz
UFaz
UGaz
UHaz
UIaz
UJazm
UK
ULazt�az
UNaz
UOazaz
UP
UQaz
UR
UX
USaz
UTaz
UUaz
UVaz
UWazmaz
UYaz
UZaz
U[az
U\az
U]az
U^az
U_az
U`az
Uaaz
Ubaz
Ucaz
Udaz
Ueaz
Ufaz
Ugaz
Uhaz
Uiaz
Ujaz
Ukaz
Ulaz
Um
Ur
Un
Up
Uoazmaz
Uqazmaz
Us
Uu
Utazmaz
Uvazmaz
Uxaz
Uyaz
Uzaz
U{az
U|az
U}az
U~az
Uaz
U�az
U�az
U�az
U�az
U�az
U�az
U�az
U�az
U�az
U�az
U�az
U�az
U�az
U�az
U�az
U�azm
U�
U�azt�az
U�az
U�azaz
U�
U�az
U�az
U�az
U�az
U�az
U�
U�
U�mm
U�
U�az
U�az
U�az
U�az
U�az
U�az
U�azmaz
U�azmt�
U�
W�
U�
W�
U�
U�
U�az
U�az
U�az
U�az
U�az
U�
U�
U�
U�
U�
U�
U�
U�v�w�gQgC
U�gCgCwc
U�
U�kXwb�w�
U�az
U�
U�ub
U�v�wU
U�azww*
U�
U�
U�az
U�az
U�az
U�az
U�az
U�az
U�az
U�
U�v�az
U�az
U�az
U�az
U�az
U�az
U�az
U�az
U�az
U�az
U�az
U�az
U�az
U�az
U�az
U�az
U�az
U�az
U�az
U�az
U�
U�
U�az
U�azaz
U�gQaz
U�az
U�az
U�azazgQ
U�
W/
U�az
U�az
U�
V�
U�
V�
U�
V

U�
V
U�
V
U�kX
U�az
U�az
U�
U�
U�az
U�
U�
U�
U�v�
U�v�wcv�
U�v�wc
U�az
U�azv�az
U�az
U�
V
U�
Vv�
Vv�wcv�az
V
Vv�
Vv�wcv�
VazwcgQw�gC
V	gCkX
V
VH
VazgC
V
Vaz
Vaz
Vaz
Vaz
Vaz
Vaz
Vaz
Vaz
Vaz
Vaz
Vaz
Vaz
Vaz
Vaz
Vaz
Vaz
Vaz
V
V@
V 
V3
V!
V)
V"
V%ub
V#v�
V$v�gQ
V&
V'gQw
V(b�wb�
V*
V.
V+
V-kX
V,kXgCgCw�
V/
V1
V0gQw�gC
V2v�gQv�
V4
V9
V5
V8
V6az
V7azw�kXazb�
V:
V<w�
V;w�ub
V=
V>ubwU
V?v�wUv�
VAaz
VBaz
VCaz
VD
VFw*
VEw*azaz
VGgCkX
VIaz
VJaz
VKaz
VLaz
VMaz
VN
V�
VO
V�
VP
V�
VQ
V�
VRw�
VS
Vt
VTaz
VUaz
VVaz
VWaz
VXaz
VYaz
VZaz
V[az
V\az
V]
Vd
V^
Vc
V_
Va
V`wgCgQw
Vbb�ubb�w�
Ve
Vo
Vf
Vi
Vg
VhubwUv�w
Vj
VlgQ
VkgCv�
Vm
Vnv�kXgQgC
Vpaz
Vqaz
Vr
VskXgCazw�az
Vu
Vvaz
Vwaz
Vxaz
Vyaz
Vzaz
V{az
V|az
V}az
V~az
V
V�
V�
V�
V�
V�v�w�gQ
V�gQgC
V�
V�gCwwv�b�w�v�gQ
V�gCwcgC
V�
V�
V�
V�gCkXkXw
V�
V�wb�b�w�
V�az
V�
V�
V�
V�w�ububwU
V�
V�v�ww*az
V�
V�
V�
V�
V�
V�v�kXkXgQ
V�
V�wcgCgC
V�
V�az
V�az
V�az
V�az
V�az
V�az
V�azw�az
V�
V�gCwb�w�
V�
W
V�azaz
V�
V�az
V�
V�
V�az
V�az
V�az
V�
V�
V�
V�
V�
V�kX
V�ubgC
V�gCv�gQ
V�
V�
V�
V�ubw�b�w
V�
V�wwcw�gC
V�az
V�az
V�
V�w�b�v�wU
V�az
V�az
V�az
V�az
V�az
V�az
V�az
V�az
V�az
V�az
V�az
V�az
V�az
V�az
V�az
V�az
V�az
V�az
V�
V�
V�
V�
V�
V�
V�
V�
V�azubaz
V�azubaz
V�
V�
V�azgCaz
V�azwaz
V�
V�
V�
V�
V�azw�az
V�azb�az
V�
V�
V�azgCaz
V�azkXaz
V�
V�
V�
V�
V�
V�
V�azwaz
V�azgQaz
V�
V�
V�azw�az
V�azkXaz
V�
W
W
W
WazgCaz
Wazb�azaz
W
Wazv�az
Waz
W	az
W
az
Waz
Waz
W
az
Waz
Waz
Waz
Waz
Waz
Waz
Waz
Waz
Waz
Waz
Waz
Waz
W
W(
W
W!
W
Wub
WgCw
W
W w�b�v�gC
W"
W%
W#
W$kXwgQwc
W&
W'w�kXgCw�
W)az
W*
W-
W+
W,gCb�v�wU
W.azazw
W0az
W1az
W2az
W3az
W4az
W5az
W6az
W7az
W8az
W9az
W:az
W;az
W<az
W=az
W>az
W?
W�
W@az
WAaz
WBaz
WCaz
WDaz
WE
Wz
WFaz
WG
Wy
WH
W]
WI
WU
WJaz
WKaz
WL
WP
WM
WNgCgQv�
WOgQv�
WQ
WS
WRgQv�gQ
WTazv�az
WVaz
WWaz
WXaz
WY
W[gC
WZazgQv�
W\gQv�
W^
Wq
W_az
W`
Wj
Wa
We
Wb
WcgCgQv�
WdgQv�
Wf
Wh
WggQv�gQv�
WigQaz
Wkaz
Wl
Wo
Wm
Wnazv�v�gQ
WpazgQv�
Wraz
Wsaz
Wtaz
Wu
WwgC
WvazgQv�
WxgQv�gCaz
W{
W�
W|
W}w�v�wc
W~kX
WkX
W�b�w�gQ
W�
W�
W�
W�
W�b�
W�w�v�
W�wv�w
W�azv�gC
W�az
W�az
W�az
W�az
W�az
W�az
W�
W�
W�
W�
W�
W�ub
W�gCw
W�
W�w�b�v�gC
W�
W�
W�
W�kXwgQwc
W�
W�w�kXgCw�
W�az
W�az
W�
W�gCb�ww*
W�az
W�azaz
W�
W�az
W�az
W�az
W�
W�
W�
W�
W�
W�
W�
W�gQazgCw�
W�
W�v�b�
W�ub
W�az
W�az
W�az
W�az
W�azgQ
W�gQ
W�ubaz
W�
W�
W�
W�
W�wU
W�az
W�az
W�az
W�az
W�az
W�azgC
W�gCazw
W�
W�az
W�az
W�az
W�az
W�az
W�az
W�azgCaz
W�
W�
W�w
W�az
W�az
W�az
W�az
W�az
W�az
W�azgCazb�w�
W�
W�
W�
W�
W�
W�w�kXubw
W�
W�v�kXgCwc
W�az
W�azw*az
W�
X�
W�
X
W�az
W�az
W�az
W�az
W�az
W�
W�
W�
W�
W�
W�az
W�
W�az
W�az
W�az
W�az
W�azaz
W�v�azaz
W�azw�az
W�az
W�azv�
W�az
W�az
W�azv�azaz
X
X
X�
Xaz
Xaz
X
Xy
X
Xv
X
XI
Xazaz
X	az
X

Xaz
Xaz
X
az
X
XE
X
X?
Xaz
Xaz
Xaz
X
X0
Xaz
Xaz
Xaz
Xaz
Xaz
Xaz
Xaz
Xaz
Xaz
X
X(
X
X!az
Xaz
X azv�
X"
X%
X#v�az
X$azw�
X&az
X'azw�az
X)az
X*
X-az
X+
X,azazv�
X.az
X/azv�azaz
X1
X2az
X3az
X4az
X5az
X6az
X7az
X8az
X9az
X:az
X;azaz
X<az
X=
X>azazv�
X@
XC
XA
XBazv�v�az
XDazazu�
XFaz
XGaz
XHazazw�
XJ
Xt
XK
Xsaz
XL
XMaz
XNaz
XOaz
XPaz
XQaz
XRazaz
XSaz
XT
XUaz
XVaz
XWaz
XXaz
XYaz
XZaz
X[az
X\az
X]az
X^az
X_
Xj
X`
Xdaz
Xa
Xbazaz
Xct�azaz
Xe
Xf
Xh
Xgv�azv�
Xiazv�az
Xk
Xoaz
Xlaz
Xm
Xnazazv�az
Xpaz
Xq
Xrv�azv�azv�
Xuazv�azaz
Xw
Xxazv�az
Xz
X�
X{azaz
X|
X}az
X~
X�
Xaz
X�az
X�az
X�az
X�az
X�az
X�
X�azv�v�az
X�az
X�az
X�az
X�az
X�az
X�az
X�az
X�az
X�az
X�az
X�az
X�az
X�az
X�az
X�az
X�az
X�az
X�azaz
X�az
X�
X�
X�
X�
X�
X�azv�az
X�azv�azaz
X�
X�azw�az
X�az
X�az
X�az
X�az
X�az
X�az
X�az
X�az
X�az
X�az
X�az
X�az
X�az
X�az
X�az
X�az
X�az
X�az
X�az
X�
X�
X�
X�az
X�v�az
X�azv�azaz
X�az
X�azw�
X�az
X�az
X�az
X�az
X�az
X�az
X�az
X�az
X�az
X�az
X�az
X�az
X�az
X�az
X�az
X�
X�
X�az
X�az
X�az
X�az
X�
X�
X�az
X�az
X�az
X�
X�
X�az
X�az
X�azaz
X�az
X�azv�
X�az
X�az
X�azaz
X�az
X�azv�az
X�
X�az
X�azaz
X�v�az
X�az
X�az
X�az
X�az
X�az
X�az
X�
X�
X�az
X�
X�az
X�v�az
X�azv�az
X�az
X�az
X�azw�az
X�az
X�azaz
X�
X�az
Yaz
Yaz
Y
Y	
Y
Yaz
Y
Yazazw�az
Yaz
Yv�az
Y
az
Yaz
Yazv�
Y
Yaz
Yaz
Yaz
Yaz
Yaz
Yaz
Yaz�az
Y
\.
Y
[@
Y
[
Y
Y6
Yaz
Yaz
Yaz
Yaz
Yaz
Y
Y,
Y 
Y'
Y!
Y$
Y"
Y#t�azwaz
Y%
Y&v�azv�az
Y(
Y+
Y)
Y*u�v�u�v�u�v�
Y-
Y3
Y.
Y0
Y/��w8u�
Y1
Y2v�v�v�v�
Y4az
Y5azu�azaz
Y7
Y8
Z�
Y9az
Y:az
Y;
Zi
Y<
Z
Y=
YD
Y>
YA
Y?
Y@t�v�wv�
YB
YCv�u�v�u�
YE
Y�
YF
Y[
YGu�
YHaz
YIaz
YJ
YR
YKaz
YLaz
YM
YP
YN
YOv�v�azv�
YQazv�v�
YSaz
YT
YW
YUaz
YVazv�v�
YXaz
YY
YZv�v�azv�
Y\az
Y]az
Y^az
Y_az
Y`az
Yaaz
Ybaz
Ycaz
Ydaz
Yeaz
Yfaz
Ygaz
Yhaz
Yiaz
Yjaz
Ykaz
Ylaz
Ymaz
Yn
Y�
Yo
Y�
Yp
Yy
Yq
Yv
Yr
Ytw�
Ysw�v�v�
Yuv�v�m
Ywu�
Yxu�v�
Yz
Y}
Y{
Y|v�v�v�t�
Y~
Y�
Yu�t�u�
Y�wv�u�
Y�
Y�
Y�
Y�
Y�
Y�
Y�t�wt�mv�
Y�
Y�v�j
Y�
Y�jv�mv�
Y�
Y�m
Y�az
Y�u�v�
Y�
Y�az
Y�azv�v�
Y�v�v�
Y�
Y�
Y�
Y�
Y�
Y�v�
Y�
Y�u�v�j
Y�
Y�u�w8
Y�v�w8v�
Y�
Y�
Y�
Y�w�
Y�w�����v�
Y�
Y�
Y�t�v�t�
Y�u���v�
Y�az
Y�az
Y�az
Y�u�u�u�
Y�az
Y�az
Y�az
Y�az
Y�az
Y�
Z
Y�
Z
Y�
Y�
Y�
Y�
Y�t�
Y�
Y�
Y�az
Y�az
Y�az
Y�az
Y�az
Y�az
Y�az
Y�az
Y�az
Y�
Y�
Y�
Y�
Y�v�
Y�v�wv�
Y�
Y�
Y�t�v�t�
Y�t�
Y�
Y�t�v�v�v�
Y�
Y�
Y�
Y�
Y�
Y�v�u�v�u�
Y�
Y�w8v�v�
Y���v�
Y�az
Y�az
Y�
Y�v�ww��az
Y�
Y�az
Y�az
Y�az
Y�az
Y�az
Y�az
Y�az
Y�az
Y�az
Y�
Y�
Y�t�
Y�
Y�
Y�
Y�v�v�wt�
Y�
Y�u�v�v�t�
Y�
Y�t�
Y�
Y�v�v�t�
Y�
Y�
Y�t�v�t�
Y�azt�azw
Y�
Y�az
Y�az
Y�az
Y�azv�azu�
Zu�v�
Z
Z

Z
Z	
Zv�
Zaz
Zaz
Zazv�
Zv�azv�v�
Z
Zv�u�u�w8
Zaz
Z
Z��
Zv�v�
Z
Zv�v�u�az
Zazaz
Z
Zaz
Z
Z'
Zaz
Zaz
Zaz
Zaz
Z
Z"
Z
Z 
Zv�u�wv�
Z!t�u�
Z#
Z%
Z$v�u�az
Z&azw8v�
Z(az
Z)az
Z*az
Z+az
Z,az
Z-az
Z.az
Z/az
Z0az
Z1az
Z2az
Z3az
Z4az
Z5az
Z6az
Z7az
Z8az
Z9
Zc
Z:
ZQ
Z;
ZF
Z<
ZA
Z=
Z?
Z>azu�az
Z@azu�az
ZB
ZD
ZCazu�az
ZEazu�az
ZG
ZL
ZH
ZJ
ZIazu�az
ZKazv�az
ZM
ZO
ZNazv�az
ZPazv�az
ZR
Z]
ZS
ZX
ZT
ZV
ZUazv�az
ZWazwaz
ZY
Z[
ZZazt�az
Z\azv�az
Z^az
Z_
Za
Z`azv�az
Zbazw8az
Zdaz
Zeaz
Zfazaz
Zg
Zhazv�az
Zjaz
Zkaz
Zlaz
Zmaz
Znaz
Zoaz
Zpaz
Zqaz
Zraz
Zsaz
Ztaz
Zuaz
Zvaz
Zwaz
Zxaz
Zyaz
Zzaz
Z{az
Z|az
Z}
Z�
Z~
Z�
Z
Z�
Z�
Z�v�u�wu�
Z�
Z�u�v���v�
Z�
Z�v�
Z�v�v�
Z�
Z�t�u�u�w8
Z�az
Z�az
Z�
Z�v�v�u�v�
Z�az
Z�az
Z�az
Z�az
Z�
[
Z�
[
Z�
[
Z�t�
Z�az
Z�az
Z�az
Z�az
Z�az
Z�az
Z�az
Z�
Z�
Z�az
Z�az
Z�az
Z�az
Z�az
Z�
Z�
Z�az
Z�az
Z�
Z�
Z�
Z�
Z�az
Z�
Z�
Z�
Z�
Z�
Z�
Z�t�v�w
Z�
Z�v�wt�v�
Z�
Z�v�mu�
Z�wt�
Z�az
Z�az
Z�azv�az
Z�az
Z�az
Z�
Z�
Z�
Z�
Z�
Z�v�t�v�w
Z�
Z�mu�mu�
Z�azv�az
Z�
Z�
Z�az
Z�
Z�
Z�
Z�
Z�
Z�
Z�t�v�w
Z�
Z�v�wt�v�
Z�
Z�v�mu�
Z�wt�
Z�az
Z�az
Z�
Z�wt�v�az
Z�az
Z�az
Z�
Z�
Z�
Z�
Z�
Z�v�t�v�w
Z�
Z�mu�mu�
Z�azv�az
Z�
Z�
Z�
Z�
Z�t�
Z�azwu�m
Z�u�v�
Z�azv�
Z�
Z�v�v�
Z�v�az
Z�az
Z�az
Z�az
Z�az
Z�az
Z�az
Z�
[
Z�
[
Z�
Z�
Z�
Z�v�u�wu�
Z�
[u�v���v�
[
[v�
[v�v�
[
[t�u�u�w8
[az
[	az
[
az��u�wv�
[
u�v�v�
[
[
[
[
[v�
[az
[az
[az
[az
[az
[azv�azv�v�u�
[u�az
[az
[azaz
[
[az
[ az
[!az
["
[9
[#
[2
[$
[/
[%
[&t�az
['v�
[(az
[)az
[*az
[+az
[,az
[-azw
[.waz
[0
[1v�w8v�w
[3
[6
[4
[5u�v�v�v�
[7
[8u���u�v�
[:az
[;
[=u�
[<v�v�
[>
[?��v�u�az
[A
\
[B
[R
[Caz
[Daz
[Eaz
[Faz
[Gaz
[Haz
[Iaz
[J
[Pj
[K
[Lj
[Maz
[Naz
[Oazazj
[Qazjazaz
[S
[T
[�
[Uaz
[Vaz
[W
[�
[X
[�
[Y
[z
[Z
[w
[[
[vj
[\
[]az
[^az
[_az
[`az
[aaz
[baz
[caz
[daz
[eaz
[faz
[gaz
[haz
[iaz
[jaz
[kaz
[laz
[maz
[naz
[oaz
[paz
[q
[sj
[rjw
[taz
[uazwazjaz
[x
[yjazjazaz
[{
[|az
[}az
[~az
[az
[�az
[�az
[�az
[�
[�
[�j
[�jaz
[�
[�
[�
[�az
[�az
[�az
[�az
[�az
[�az
[�az
[�az
[�az
[�az
[�
[�jjj
[�j
[�w�u�
[�az
[�az
[�az
[�az
[�az
[�az
[�az
[�az
[�az
[�az
[�az
[�azjaz
[�azjaz
[�azaz
[�
[�az
[�
[�
[�az
[�az
[�az
[�az
[�az
[�az
[�jjj
[�az
[�az
[�az
[�az
[�az
[�az
[�az
[�az
[�az
[�az
[�az
[�az
[�az
[�az
[�az
[�az
[�az
[�az
[�az
[�az
[�az
[�
[�
[�azjaz
[�azjaz
[�az
[�az
[�az
[�az
[�az
[�az
[�az
[�az
[�az
[�az
[�az
[�az
[�az
[�az
[�az
[�az
[�az
[�az
[�az
[�az
[�az
[�az
[�
[�azjazj
[�az
[�az
[�az
[�az
[�az
[�az
[�
\
[�j
[�az
[�az
[�az
[�az
[�az
[�az
[�
\
[��
[�az
[�az
[�az
[�az
[�az
[�az
[�az
[�az
[�
[�
[�jjjjaz
\az
\az
\az
\az
\az
\az
\az
\az
\	az
\
az
\
\azjazjjj
\az
\az
\
\
\az
\az
\az
\az
\az
\az
\az
\az
\az
\azjaz
\az
\az
\az
\ az
\!az
\"
\,
\#j
\$j
\%az
\&az
\'az
\(j
\)az
\*az
\+azjj
\-azjaz
\/az
\0az
\1az
\2
`az
\3
\4az
\5az
\6
^^az
\7
\8az
\9
]�
\:
\�
\;az
\<az
\=az
\>az
\?
\�
\@
\
\A
\Cu�
\Bjw�
\D
\`
\E
\U
\Faz
\Gaz
\Haz
\Iaz
\Jaz
\Kaz
\Laz
\Maz
\Nazw8
\Ow8
\Pw8
\Q
\Raz
\Saz
\Tazw8az
\Vaz
\Waz
\Xaz
\Yaz
\Zaz
\[az
\\az
\]az
\^az
\_az��az
\a
\q
\baz
\caz
\daz
\eaz
\faz
\gaz
\haz
\iaz
\jazwU
\kwU
\l
\mazwU
\n
\oazwU
\pwUaz
\raz
\saz
\taz
\uaz
\vaz
\waz
\xaz
\yaz
\zazv�
\{v�
\|v�
\}
\~azv�az
\�
\�
\�
\�
\�
\�
\�az
\�az
\�az
\�az
\�az
\�az
\�az
\�az
\�azw
\�
\�azw
\�
\�az
\�azw
\�waz
\�az
\�az
\�az
\�az
\�az
\�az
\�az
\�az
\�az
\�az��az
\�
\�
\�az
\�az
\�az
\�az
\�az
\�az
\�az
\�az
\�az
\�azv�
\�
\�az
\�az
\�azv�az
\�az
\�az
\�az
\�az
\�az
\�az
\�az
\�az
\�azv�
\�v�
\�
\�azv�
\�v�
\�
\�azv�az
\�
\�
\�az
\�az
\�az
\�az
\�az
\�az
\�az
\�az
\�az
\�azw�
\�
\�az
\�azw�
\�w�az
\�az
\�az
\�az
\�az
\�az
\�az
\�az
\�az
\�az
\�az
\�azt�
\�t�
\�t�
\�t�az
\�az
\�az
\�az
\�az
\�az
\�az
\�az
\�az
\�az
\�az
\�az
\�az
\�az
\�az
\�azu�
\�
\�az
\�azu�
\�u�azaz
\�
\�
]�
\�az
\�az
\�
]>
\�az
\�
]0
\�
]#
\�
]
\�az
\�
]

\�
]
\�
]
\�
\�u�wv�v�
]
]v�u�u�v�
]
]
]
]v�v�w8u�
]
]	t�����v�
]az
]az
]
]v�u�azv�
]az
]
]
]
]
]
]
]
]w�w*w�kX
]
]kXb�b�v�
]
]
]w�v�wc
]ubwUw
]az
] 
]!wgCgC
]"gQaz
]$
]+
]%az
]&az
]'az
](
])v�az
]*azazw�
],az
]-az
].az
]/azv�az
]1az
]2
]8
]3az
]4az
]5azm
]6
]7azt�az
]9az
]:az
];az
]<azj
]=jj
]?az
]@
]y
]A
]l
]B
]X
]Caz
]D
]S
]E
]L
]F
]I
]G
]Hu�wv�v�
]J
]Kv�u�u�v�
]M
]P
]N
]Ov�v�w8u�
]Q
]Rt�����v�
]Taz
]Uaz
]V
]Wv�u�azv�
]Yaz
]Z
]g
][
]b
]\
]_
]]
]^w�w*w�kX
]`
]akXb�b�v�
]c
]e
]dw�v�wc
]fubwUw
]haz
]i
]jwgCgC
]kgQaz
]m
]t
]naz
]oaz
]paz
]q
]rv�az
]sazazw�
]uaz
]vaz
]waz
]xazv�az
]zaz
]{
]�
]|az
]}az
]~azm
]
]�azt�az
]�az
]�az
]�az
]�azj
]�jjaz
]�az
]�az
]�
]�az
]�
]�
]�
]�
]�
]�
]�az
]�
]�
]�
]�
]�
]�
]�
]�u�wv�v�
]�
]�v�u�u�v�
]�
]�
]�
]�v�v�w8u�
]�
]�t�����v�
]�az
]�az
]�
]�v�u�azv�
]�az
]�
]�
]�
]�
]�
]�
]�
]�w�w*w�kX
]�
]�kXb�b�v�
]�
]�
]�w�v�wc
]�ubwUw
]�az
]�
]�wgCgC
]�gQw�
]�
]�
]�az
]�az
]�az
]�
]�v�az
]�azazv�
]�az
]�az
]�az
]�azv�az
]�az
]�
]�
]�az
]�az
]�azm
]�
]�azt�az
]�az
]�az
]�az
]�azj
]�jjaz
]�
]�
^
]�az
]�az
]�az
]�az
]�az
]�az
]�az
]�az
]�az
]�az
]�
]�
]�
]�
]�
]�
]�
]�
]�azgQaz
]�
]�gCazazw�
]�
]�
]�
]�v�azwcaz
]�
]�azv�t�j
]�
]�
]�
]�
]�
]�kXjv�m
]�
]�mv�azj
]�
]�
]�
]�ju�v�gC
]�
]�v�u�kXv�
]�
^
^
^
^
^
^
^u�wb�v�
^
^v�wv�w�
^
^
v�
^	w�azub
^b�w8
^
^
^
^
^
^wUw�v�v�
^
^w����t�
^
^
^
^v�u�v�az
^azu�az
^az
^
^U
^
^7
^
^)
^
^"az
^ m
^!jv�
^#
^&
^$
^%v�u�azj
^'
^(wazazkX
^*
^1
^+
^.
^,
^-kXv�v�v�
^/
^0v�azv�az
^2
^4
^3gCt�u�
^5
^6azgQu�az
^8
^F
^9
^@
^:
^=
^;
^<azv�v�m
^>
^?v�mv�w
^A
^C
^Bw�wb�
^D
^Eb�ububj
^G
^N
^H
^K
^I
^Jazu�u�w8
^L
^M��wUw�v�
^O
^R
^P
^Qwt�v�v�
^S
^Tazw���w*
^Vaz
^Waz
^Xaz
^Y
^\
^Z
^[v�u�azu�
^]azv�az
^_az
^`az
^aaz
^baz
^caz
^daz
^eaz
^faz
^g
_�
^haz
^i
_L
^j
^�
^kaz
^laz
^maz
^naz
^oaz
^paz
^q
^w
^razaz
^s
^taz
^uazaz
^vmaz
^x
^�
^y
^�
^z
^�
^{
^�
^|az
^}az
^~
^jazjaz
^�az
^�az
^�azt�az
^�
^�
^�az
^�az
^�
^�w�azw�az
^�az
^�az
^�
^�v�azv�az
^�
^�
^�az
^�az
^�az
^�
^�v�azv�az
^�
^�
^�az
^�az
^�
^�gCazgCaz
^�az
^�az
^�
^�v�azv�az
^�
^�
^�
^�
^�
^�
^�az
^�az
^�
^�u�azu�az
^�az
^�az
^�
^�kXazkXaz
^�
^�
^�az
^�az
^�
^�gQazv�az
^�az
^�az
^�
^�b�azb�az
^�
^�
^�
^�
^�az
^�az
^�
^�wazwaz
^�az
^�az
^�
^�v�azv�az
^�
^�
^�
^�
^�az
^�
^�mazmaz
^�az
^�azubaz
^�
^�
^�az
^�
^�wazt�az
^�az
^�
^�v�azv�az
^�az
^�
_0
^�
_
^�
^�
^�
^�az
^�
^�az
^�azgQv�
^�
^�
^�az
^�az
^�
^�jazjaz
^�az
^�az
^�
^�w�azw�az
^�
^�
^�
^�
^�az
^�az
^�
^�v�azv�az
^�az
^�az
^�
^�v�azv�az
^�
^�
^�az
^�az
^�
^�gCazgCaz
^�az
^�az
_
_v�azv�az
_
_
_
_
_
_

_az
_az
_
_	u�azu�az
_az
_az
_
_kXazkXaz
_
_
_az
_az
_
_b�azb�az
_az
_az
_
_wazwaz
_
_&
_
_!
_az
_az
_
_ v�azv�az
_"az
_#az
_$
_%mazmaz
_'
_,
_(az
_)az
_*
_+v�azv�az
_-az
_.az
_/azubaz
_1az
_2
_F
_3
_=
_4
_9
_5az
_6az
_7
_8t�azwaz
_:az
_;az
_<azt�az
_>
_B
_?az
_@az
_Aazv�az
_Caz
_Daz
_EazwUaz
_Gaz
_Haz
_Iaz
_Jaz
_Kazw8az
_Maz
_Naz
_O
_�
_P
_~
_Q
_g
_R
_\
_S
_X
_Taz
_Uaz
_V
_Wjazjaz
_Yaz
_Zaz
_[azt�az
_]
_b
_^az
__az
_`
_aw�azw�az
_caz
_daz
_e
_fv�azv�az
_h
_s
_i
_n
_jaz
_kaz
_l
_mv�azv�az
_oaz
_paz
_q
_rgCazgCaz
_t
_y
_uaz
_vaz
_w
_xv�azv�az
_zaz
_{az
_|
_}u�azu�az
_
_�
_�
_�
_�
_�
_�az
_�az
_�
_�kXazkXaz
_�az
_�az
_�
_�b�azb�az
_�
_�
_�az
_�
_�
_�
_�wazwaz
_�azv�az
_�az
_�az
_�
_�mazmaz
_�
_�
_�
_�
_�az
_�az
_�
_�wazt�az
_�az
_�az
_�
_�v�azv�azaz
_�
_�az
_�azgQv�
_�az
_�
_�
_�
_�
_�
_�
_�az
_�az
_�azubaz
_�az
_�az
_�
_�v�azv�az
_�
_�
_�az
_�az
_�azw8az
_�az
_�az
_�azwUaz
_�az
_�az
_�az
_�az
_�azv�az
_�az
_�az
_�az
_�az
_�az
_�az
_�az
_�az
_�az
_�az
_�az
_�az
_�az
_�
`
_�
_�
_�
_�
_�
_�
_�
_�m
_�jv�
_�
_�v�u�azj
_�
_�
_�
_�wazazkX
_�
_�kXv�v�v�
_�
_�
_�
_�
_�
_�v�azv�az
_�gCt�u�
_�
_�
_�
_�azgQu�azaz
_�azv�
_�
_�
_�
_�
_�
_�
_�
_�v�mv�m
_�
_�v�azwaz
_�
_�
_�w�wb�
_�
_�b�ububj
_�
`
`
`
`
`azu�u�w8
`
`��wUw�v�
`
`

`
`	wt�v�v�
`
`azw���w*
`az
`az
`az
`
`
`
`v�u�azu�
`azv�az
`
a�
`az
`az
`az
`az
`az
`az
`az
`az
` az
`!az
`"az
`#az
`$
a�
`%
`�
`&az
`'az
`(az
`)az
`*az
`+az
`,az
`-az
`.
`�
`/az
`0
`x
`1
`@
`2azaz
`3
`4
`9
`5
`7az
`6azjaz
`8v�w�
`:
`=
`;
`<w�gCwv�
`>
`?t�mmb�
`A
`]
`B
`Q
`C
`J
`D
`G
`E
`Fazu�v�u�
`H
`Iu�azazv�
`K
`N
`L
`MgQazb�v�
`O
`Pb�azu�j
`R
`W
`S
`U
`Tazazv�az
`VazgQ
`X
`Zaz
`Yazw
`[
`\v�gCjaz
`^
`j
`_
`e
``
`b
`aazazu�
`c
`dazkXjub
`f
`gubw�
`h
`iv�w�azu�
`k
`r
`l
`o
`m
`nkXw�w�v�
`p
`qu�azv�gQ
`s
`u
`tu�ubu�
`v
`wazwwub
`yaz
`z
`�
`{
`�
`|
`�
`}
`~v�az
`azazv�
`�
`�
`�
`�v�v�azgQ
`�
`�wt�waz
`�
`�
`�
`�
`�
`�azgCgCaz
`�
`�u�wmaz
`�
`�
`�
`�v�mmaz
`�
`�b�u�v�v�
`�
`�
`�
`���
`�v�
`�u�v�
`�
`�
`�
`�v�azwaz
`�azazb�
`�
`�
`�
`�
`�v�kXu�wU
`�b�az
`�
`�
`�
`�w�gCazgC
`�
`�azv�azu�az
`�
`�az
`�
`�
`�
`�
`�
`�
`�
`�
`�
`�
`�
`�azv�v�v�
`�
`�v�azv�az
`�az
`�azazv�
`�
`�
`�
`�az
`�azw
`�v�v�gQv�
`�
`�
`�t�azazv�
`�
`�
`�
`�
`�
`�
`�w�v�w�
`�
`�w�v�v�w
`�
`�w
`�wt�t�
`�t�w�
`�
`�
`�
`�w�
`�w�ub
`�
`�ubwjv�
`�
`�
`�
`�v�w8w8v�
`�v�v�v�
`�az
`�az
`�az
`�az
`�azv�azaz
`�
`�az
`�az
`�az
`�az
`�az
`�
a�
`�
a;
`�
a
`�
a
`�
`�
`�az
`�az
`�az
`�az
`�azv�az
`�
`�
`�az
`�az
`�azj
`�jaz
aaz
aaz
aazv�
av�az
a
aaz
a
aaz
aaz
a	az
a
azwaz
a
a
a
az
aaz
aazv�
av�az
aaz
aaz
aazm
amaz
a
a.
a
a#
a
a
aaz
aaz
aazv�
av�az
aaz
a az
a!az
a"azv�az
a$
a)
a%az
a&az
a'azm
a(maz
a*az
a+az
a,az
a-azv�az
a/
a5
a0az
a1az
a2az
a3azv�
a4v�az
a6az
a7az
a8az
a9azj
a:jaz
a<
ad
a=
aR
a>
aI
a?
aD
a@az
aAaz
aBaz
aCazv�az
aEaz
aFaz
aGazw�
aHw�az
aJ
aO
aKaz
aLaz
aMaz
aNazv�az
aPaz
aQazgQaz
aS
a^
aT
aY
aUaz
aVaz
aWaz
aXazu�az
aZaz
a[az
a\az
a]azv�azaz
a_
a`az
aaaz
abaz
acazb�az
ae
av
af
ajaz
ag
ahaz
aiazkXaz
ak
ap
alaz
amaz
anaz
aoazv�az
aqaz
araz
asazt�
att�
aut�az
aw
a�
ax
a}
ayaz
azaz
a{az
a|azjaz
a~az
aaz
a�azu�azaz
a�
a�az
a�azgC
a�
a�az
a�azgCaz
a�az
a�
a�
a�
a�
a�
a�
a�az
a�az
a�azb�
a�
a�azb�az
a�
a�
a�az
a�az
a�az
a�azwUaz
a�az
a�az
a�az
a�azubaz
a�
a�az
a�
a�az
a�az
a�az
a�azv�az
a�
a�
a�az
a�az
a�az
a�azkXaz
a�az
a�az
a�az
a�az��az
a�
a�
a�
a�
a�az
a�az
a�az
a�az
a�azv�az
a�
a�
a�az
a�az
a�az
a�azw�az
a�az
a�az
a�az
a�azt�az
a�az
a�az
a�az
a�az
a�az
a�azwazaz
a�
a�
a�
a�gC
a�az
a�az
a�az
a�az
a�az
a�az
a�az
a�az
a�az
a�az
a�
a�
a�
a�
a�
a�v�
a�t�v�
a�
a�v�v�v�u�
a�
a�u�
a�gQv�
a�
a�kXb�wUw
a�
a�az
a�az
a�azj
a�azmgCv��"
a�az
a�az
a�
f�
a�az
a�az
a�
d
a�
c�
a�
bz
a�
bc
a�
b)
a�
b
a�
b
a�
a�
a�
a�v�
a�azw�
a�
a�w�u�t�ub
a�
baz
bmj
b
bmv�jv�
b
b

b
b
bkXu�azv�
b	azub
b
bwv�gC
b
azu�
b
b
b
b
baz
bv�v�gQ
b
b
b
bb�wUw�wc
b
bazjjv�
b
b"
b
b
b
bazb�w8w�
b 
b!v�azazv�
b#
b&
b$
b%v�azw��
b'
b(��t�v�u�
b*az
b+az
b,az
b-
bH
b.
b7az
b/
b0az
b1az
b2az
b3az
b4az
b5az
b6azb�az
b8
b@
b9az
b:az
b;az
b<az
b=az
b>az
b?azv�az
bAaz
bBaz
bCaz
bDaz
bEaz
bFaz
bGazv�az
bI
bZ
bJ
bR
bKaz
bLaz
bMaz
bNaz
bOaz
bPaz
bQazw�az
bSaz
bTaz
bUaz
bVaz
bWaz
bXaz
bYazwUaz
b[az
b\az
b]az
b^az
b_az
b`az
baaz
bbazwazaz
bdaz
beaz
bfaz
bgaz
bhaz
biaz
bj
bkaz
blaz
bmaz
bnaz
boaz
bpaz
bqaz
braz
bsaz
btaz
buaz
bvaz
bwaz
bxaz
byazgQaz
b{az
b|az
b}
cs
b~
b�
b
b�
b�
b�
b�
b�
b�az
b�az
b�az
b�az
b�az
b�az
b�azv�
b�v�az
b�
b�
b�az
b�az
b�az
b�az
b�az
b�azv�
b�v�az
b�az
b�az
b�az
b�az
b�az
b�azw�
b�w�az
b�
b�
b�
b�
b�az
b�az
b�az
b�az
b�az
b�azw�
b�w�az
b�az
b�az
b�az
b�az
b�az
b�azv�
b�v�az
b�
b�
b�az
b�az
b�az
b�az
b�az
b�azv�
b�v�az
b�az
b�az
b�az
b�az
b�az
b�azu�
b�u�az
b�
b�az
b�
b�
b�
b�az
b�az
b�az
b�az
b�az
b�azj
b�jaz
b�az
b�az
b�az
b�az
b�az
b�azj
b�jaz
b�
b�
b�
b�
b�az
b�az
b�az
b�az
b�az
b�azm
b�maz
b�az
b�az
b�az
b�az
b�az
b�azv�
b�v�az
b�
b�
b�az
b�az
b�az
b�az
b�az
b�azv�
b�v�az
b�az
b�az
b�az
b�az
b�az
b�azu�
b�u�az
b�
c,
b�
c
b�
caz
b�
b�az
b�az
b�az
b�az
b�az
b�azkX
b�kXaz
c
c	
caz
caz
caz
caz
caz
cazkX
ckXaz
c
az
caz
caz
c
az
caz
cazv�
cv�az
c
c#
c
c
caz
caz
caz
caz
caz
cazv�
cv�az
caz
caz
caz
caz
c az
c!azv�
c"v�azaz
c$
c%az
c&az
c'az
c(az
c)az
c*azt�
c+t�az
c-
cP
c.
c?
c/
c7
c0az
c1az
c2az
c3az
c4az
c5azub
c6ubaz
c8az
c9az
c:az
c;az
c<az
c=azub
c>ubaz
c@
cH
cAaz
cBaz
cCaz
cDaz
cEaz
cFazw
cGwaz
cIaz
cJaz
cKaz
cLaz
cMaz
cNazw
cOwaz
cQ
cb
cR
cZ
cSaz
cTaz
cUaz
cVaz
cWaz
cXazv�
cYv�az
c[az
c\az
c]az
c^az
c_az
c`azv�
cav�az
cc
ck
cdaz
ceaz
cfaz
cgaz
chaz
ciazgC
cjgCaz
claz
cmaz
cnaz
coaz
cpaz
cqazgC
crgCaz
ct
c�
cu
c�
cv
c�
cw
c�az
cx
cyaz
czaz
c{az
c|az
c}az
c~azgQ
cgQaz
c�az
c�az
c�az
c�az
c�az
c�az
c�azu�
c�u�az
c�azaz
c�
c�az
c�az
c�az
c�az
c�az
c�azm
c�maz
c�
c�
c�
c�az
c�
c�az
c�az
c�az
c�az
c�az
c�azv�
c�v�az
c�
c�
c�az
c�az
c�az
c�az
c�az
c�azkX
c�kXaz
c�az
c�az
c�az
c�az
c�az
c�azb�
c�b�az
c�
c�
c�
c�
c�az
c�az
c�az
c�az
c�az
c�azv�
c�v�az
c�az
c�az
c�az
c�az
c�az
c�azv�
c�v�az
c�
c�
c�az
c�az
c�az
c�az
c�az
c�azw�
c�w�az
c�az
c�az
c�az
c�az
c�az
c�azwU
c�wUaz
c�az
c�az
c�az
c�
c�
c�az
c�az
c�az
c�az
c�az
c�azw8
c�w8az
c�az
c�az
c�az
c�az
c�az
c�azw
c�waz
c�az
c�az
c�az
c�
d
c�
c�
c�
c�
c�
c�
c�
c�v�azv�w�
c�
c�w�v�v�u�
c�
c�azj
c�
c�mv�v�u�
c�
d
c�
c�
c�
c�azkXkXv�
c�
c�v�v�azt�
d
dubwv�gC
d
d
d
d
d
d	
d
dazgQu�az
d

dazmazv�
d
daz
dazb�
d
db�v�v�w�
daz
daz
d
dwUw8waz
d
eC
daz
daz
daz
d
e"
d
d�
d
dT
d
dB
d 
d1
d!
d)
d"az
d#az
d$az
d%az
d&az
d'az
d(azmaz
d*az
d+az
d,az
d-az
d.az
d/az
d0azjaz
d2
d:
d3az
d4az
d5az
d6az
d7az
d8az
d9azjaz
d;az
d<az
d=az
d>az
d?az
d@az
dAazv�az
dCaz
dD
dL
dEaz
dFaz
dGaz
dHaz
dIaz
dJaz
dKazv�az
dMaz
dNaz
dOaz
dPaz
dQaz
dRaz
dSazu�az
dU
dx
dV
dg
dW
d_
dXaz
dYaz
dZaz
d[az
d\az
d]az
d^azkXaz
d`az
daaz
dbaz
dcaz
ddaz
deaz
dfazkXaz
dh
dp
diaz
djaz
dkaz
dlaz
dmaz
dnaz
doazv�az
dqaz
draz
dsaz
dtaz
duaz
dvaz
dwazv�az
dy
d�
dz
d�
d{az
d|az
d}az
d~az
daz
d�az
d�azv�az
d�az
d�az
d�az
d�az
d�az
d�az
d�azv�azaz
d�
d�az
d�az
d�az
d�az
d�az
d�az
d�azv�az
d�
d�
d�
d�
d�
d�
d�
d�
d�az
d�az
d�az
d�az
d�az
d�az
d�azw�az
d�az
d�az
d�az
d�az
d�az
d�az
d�azw�az
d�
d�
d�az
d�az
d�az
d�az
d�az
d�az
d�azv�az
d�az
d�az
d�az
d�az
d�az
d�az
d�azv�az
d�
d�
d�
d�
d�az
d�az
d�az
d�az
d�az
d�az
d�azu�az
d�az
d�az
d�az
d�az
d�az
d�az
d�az
d�az
d�az
d�az
d�az
d�az
d�az
d�az
d�azv�az
d�
d�
d�az
d�az
d�az
d�az
d�az
d�az
d�azt�az
d�az
d�az
d�az
d�az
d�az
d�az
d�azubaz
d�
e
d�
d�
d�
d�
d�az
d�az
d�az
d�az
d�az
d�az
d�azubaz
d�az
d�az
d�az
d�az
d�az
d�az
d�azwaz
d�
d�
d�az
d�az
d�az
d�az
d�az
d�az
d�azwaz
eaz
eaz
eaz
eaz
eaz
eaz
eazv�az
e
e
e	
e
e
az
eaz
eaz
e
az
eaz
eaz
eazv�az
eaz
eaz
eaz
eaz
eaz
eaz
eazgCaz
eaz
eaz
eaz
eaz
eaz
eaz
e az
e!azgCaz
e#
e?
e$
e9
e%
e7
e&az
e'
e/
e(az
e)az
e*az
e+az
e,az
e-az
e.azgQaz
e0az
e1az
e2az
e3az
e4az
e5az
e6azu�azaz
e8azm
e:
e<b�
e;v�v�
e=
e>w�wUw8az
e@az
eAaz
eBazwaz
eDaz
eEaz
eFaz
eG
f=
eH
e�
eI
e�
eJ
em
eK
e\
eL
eT
eMaz
eNaz
eOaz
ePaz
eQaz
eRaz
eSazmaz
eUaz
eVaz
eWaz
eXaz
eYaz
eZaz
e[azmaz
e]
ee
e^az
e_az
e`az
eaaz
ebaz
ecaz
edazjaz
efaz
egaz
ehaz
eiaz
ejaz
ekaz
elazjaz
en
e
eo
ew
epaz
eqaz
eraz
esaz
etaz
euaz
evazv�az
exaz
eyaz
ezaz
e{az
e|az
e}az
e~azv�az
e�az
e�az
e�az
e�az
e�az
e�az
e�az
e�azu�az
e�
e�az
e�
e�
e�
e�az
e�az
e�az
e�az
e�az
e�az
e�azkXaz
e�az
e�az
e�az
e�az
e�az
e�az
e�azkXaz
e�
e�
e�
e�
e�az
e�az
e�az
e�az
e�az
e�az
e�azb�az
e�az
e�az
e�az
e�az
e�az
e�az
e�azb�az
e�
e�
e�az
e�az
e�az
e�az
e�az
e�az
e�azv�az
e�az
e�az
e�az
e�az
e�az
e�az
e�azv�az
e�
f
e�
e�
e�
e�
e�
e�
e�az
e�az
e�az
e�az
e�az
e�az
e�azv�az
e�az
e�az
e�az
e�az
e�az
e�az
e�azv�az
e�
e�
e�az
e�az
e�az
e�az
e�az
e�az
e�azv�az
e�az
e�az
e�az
e�az
e�az
e�az
e�azv�az
e�
e�
e�
e�
e�az
e�az
e�az
e�az
e�az
e�az
e�azv�az
e�az
e�az
e�az
e�az
e�az
e�az
e�azw�az
e�
e�
e�az
e�az
e�az
e�az
e�az
e�az
e�azwUaz
e�az
faz
faz
faz
faz
faz
fazw8az
f
f"
f
faz
f	
f
az
faz
faz
f
az
faz
faz
fazv�az
f
f
faz
faz
faz
faz
faz
faz
fazw�az
faz
faz
faz
faz
faz
f az
f!azw�az
f#
f4
f$
f,
f%az
f&az
f'az
f(az
f)az
f*az
f+azv�az
f-az
f.az
f/az
f0az
f1az
f2az
f3azv�azaz
f5
f6az
f7az
f8az
f9az
f:az
f;az
f<azu�az
f>az
f?
f�
f@
fc
fA
fR
fB
fJ
fCaz
fDaz
fEaz
fFaz
fGaz
fHaz
fIazt�az
fKaz
fLaz
fMaz
fNaz
fOaz
fPaz
fQazwaz
fS
f[
fTaz
fUaz
fVaz
fWaz
fXaz
fYaz
fZazubaz
f\az
f]az
f^az
f_az
f`az
faaz
fbazubaz
fd
fu
fe
fm
ffaz
fgaz
fhaz
fiaz
fjaz
fkaz
flazwaz
fnaz
foaz
fpaz
fqaz
fraz
fsaz
ftazwaz
fv
f~
fwaz
fxaz
fyaz
fzaz
f{az
f|az
f}azv�az
faz
f�az
f�az
f�az
f�az
f�az
f�azv�az
f�
f�
f�
f�
f�
f�
f�az
f�az
f�az
f�az
f�az
f�az
f�azgCaz
f�az
f�az
f�az
f�az
f�az
f�az
f�azgCazaz
f�
f�az
f�az
f�az
f�az
f�az
f�az
f�azgQaz
f�az
f�az
f�az
f�az
f�az
f�az
f�az
f�az
f�azu�az
f�az
f�az
f�az
f�
f�
f�az
f�az
f�az
f�az
f�az
f�az
f�az
f�azaz
f�
f�az
f�az
f�
f�
f�
f�
f�
f�
f�
f�
f�azgQaz
f�
f�gCazazw�
f�
f�
f�
f�v�azwcaz
f�
f�azv�t�j
f�
f�
f�
f�
f�
f�kXjv�m
f�
f�mv�azj
f�
f�
f�
f�ju�v�gC
f�
f�v�u�kXv�
f�
f�
f�
f�
f�
f�
f�
f�u�wb�v�
f�
f�v�wv�w�
f�
f�v�
f�w�azub
f�b�w8
f�
f�
f�
f�
f�
f�wUw�v�v�
f�
f�w����t�
f�
f�
f�
f�v�u�v�az
f�azu�az
f�az
f�az
f�az
f�az
f�az
f�az
f�
g5
f�
g
f�az
gaz
gaz
gaz
gaz
gaz
gaz
gaz
gaz
gaz
g	az
g

g
g
g
az
gv�az
gazv�azaz
gaz
gw�az
gaz
gaz
gaz
gaz
gaz
gaz
gaz
gaz
gaz
gaz
g
g*
g
g$
g
g"
g 
g!mu�wmu�
g#v�v�
g%
g'v�
g&mv�
g(
g)mv�t�u�
g+
g2
g,
g/
g-
g.u�w8t���
g0
g1v�v���v�
g3az
g4azu�az
g6
gE
g7az
g8az
g9az
g:az
g;az
g<az
g=az
g>az
g?az
g@az
gAaz
gBaz
gCazj
gDw�az
gFaz
gGaz
gHaz
gIaz
gJaz
gKaz
gLaz
gMaz
gNaz
gOaz
gP
g^
gQ
gW
gR
gTub
gSww�
gU
gVb�v�gCkX
gX
g[
gY
gZwgQw�kX
g\
g]v�gCb�v�
g_az
g`az
ga
gbv�wwUazaz
gd
ge@
gf@
gg@az@
gi
gr
gj
gn
gk@
gl@
gm@az@
go@
gp@
gq@az@
gs
g�
gt@
gu@
gv@
gw@
gxaz
gyaz
gzazaz
g{
g|az
g}az
g~az
gaz
g�
g�az
g�
g�az
g�az
g�azaz
g�
g�azaz
g�
g�az
g�az
g�az
g�az
g�azaz
g�az
g�
g�azaz
g�az
g�
g�az
g�azaz
g�
g�az
g�az
g�az
g�az
g�az
g�az
g�az
g�az
g�az
g�az@azaz
g�az
g�az
g�az
g�
g�azaz
g�
g�az
g�az
g�azaz
g�
g�az
g�azaz
g�
g�azaz
g�
g�az
g�azaz
g�az
g�
g�az
g�az
g�azaz
g�
g�az
g�az
g�az
g�az
g�az
g�az
g�az
g�az
g�az
g�azaz
g�az
g�az
g�az
g�
g�azaz
g�
g�azaz
g�
g�azaz
g�
g�azaz
g�az
g�
g�az
g�azaz
g�az
g�az
g�
g�az
g�az
g�az
g�az
g�azaz
g�az
g�
g�azaz
g�az
g�
g�azaz
g�az
g�
g�azaz
g�az
g�
g�az
g�azaz
g�
g�az
g�azaz
g�az
g�az
g�az
g�
g�az
g�az
g�azaz
g�az
g�az
g�az
g�az
g�
g�az
g�azaz
g�
g�azaz
g�
g�az
g�azaz
g�az
g�
g�az@az
g�@
h@
h@
h@az
h
haz
haz
haz
haz
haz
h	az
h

h*az
h
haz
h
azaz
haz
h
haz
haz
haz
haz
haz
haz
haz
haz
haz
hazaz
h
hazaz
haz
h
haz
haz
h azaz
h!
h"az
h#azaz
h$az
h%
h&az
h'az
h(azaz
h)@az
h+azaz
h,az
h-az
h.az
h/
h0az
h1az
h2az
h3az
h4az
h5az
h6az
h7azaz
h8az
h9
h:azaz
h;az
h<
h=azaz
h>
h?azaz
h@
hAazaz
hBaz
hC
hDazaz
hEaz
hF
hGaz
hHazaz
hI@az
hK
j@
hL
j7
hM
j
hN@
hO@
hP@
hQ@
hR
i�
hSaz
hTaz
hUaz
hVaz
hWaz
hX
i�
hY
i
hZ
h�
h[
hy
h\azaz
h]az
h^
h_azaz
h`
haaz
hbaz
hcaz
hdaz
heaz
hfaz
hgaz
hhaz
hiaz
hjaz
hkaz
hlaz
hmaz
hnaz
hoaz
hpaz
hqazaz
hr
hsaz
htaz
huaz
hvazaz
hw
hxaz@az
hz
h�
h{
h�
h|az
h}azaz
h~
haz
h�az
h�az
h�az
h�az
h�az
h�az
h�az
h�azaz
h�
h�azaz
h�az
h�
h�azaz
h�
h�azaz
h�az
h�
h�azaz
h�az
h�
h�az
h�az
h�az@azaz
h�
h�azaz
h�az
h�az
h�az
h�az
h�az
h�
h�az
h�az
h�az
h�azaz
h�
h�az
h�az
h�az
h�azaz
h�az
h�
h�azaz
h�
h�azaz
h�az
h�
h�az
h�az
h�az@az
h�azaz
h�
h�az
h�azaz
h�
h�az
h�az
h�az
h�az
h�az
h�az
h�az
h�az
h�az
h�azaz
h�
h�az
h�az
h�az
h�az
h�az
h�az
h�az
h�azaz
h�az
h�az
h�az
h�@az
h�
h�
h�az
h�azaz
h�
h�az
h�az
h�az
h�az
h�az
h�az
h�az
h�az
h�az
h�azaz
h�az
h�az
h�az
h�
h�az
h�az
h�az
h�azaz
h�
h�az
h�az
h�az
h�azaz
h�
h�azaz
h�az@az
h�az
h�az
h�az
h�az
h�
h�az
h�az
h�az
h�az
h�az
h�az
h�azaz
h�
h�az
h�az
h�azaz
iaz
iaz
iaz
i
iazaz
iaz
iaz
iaz
iaz
i	
i
azaz
i
iazaz@
i
ig
i
iI
iaz
i
i-az
iaz
i
iaz
iaz
iaz
iaz
iaz
iaz
iaz
iaz
iazaz
i
iaz
iaz
i az
i!az
i"az
i#az
i$az
i%azaz
i&az
i'az
i(az
i)az
i*
i+azaz
i,az@
i.azaz
i/
i0azaz
i1
i2azaz
i3
i4az
i5az
i6azaz
i7
i8az
i9az
i:azaz
i;az
i<
i=az
i>azaz
i?az
i@
iAazaz
iB
iCazaz
iD
iEaz
iFaz
iGazaz
iH@az
iJazaz
iK
iLazaz
iM
iNazaz
iO
iPaz
iQaz
iRaz
iSaz
iTaz
iUaz
iVaz
iWazaz
iX
iYaz
iZazaz
i[az
i\
i]az
i^azaz
i_
i`azaz
iaaz
ibaz
icaz
id
ieaz
ifaz@az
ihaz
iiazaz
ij
ikaz
ilazaz
im
inaz
ioaz
ipaz
iqaz
iraz
isaz
itazaz
iu
ivaz
iwazaz
ix
iyaz
izazaz
i{az
i|
i}azaz
i~
iaz
i�az
i�az
i�az
i�az
i�az
i�azaz@
i�az
i�az
i�az
i�az
i�azaz
i�
i�azaz
i�az
i�
i�az
i�az
i�az
i�az
i�az
i�az
i�az
i�az
i�az
i�az
i�az
i�az
i�az
i�az
i�az
i�az
i�azaz
i�az
i�az
i�
i�az
i�az
i�az@az
i�az
i�az
i�az
i�az
i�az
i�az
i�az
i�
i�
i�az
i�az
i�azaz
i�
i�az
i�az
i�azaz
i�az
i�az
i�az
i�
i�az
i�az
i�az
i�azaz
i�
i�az
i�az
i�azaz
i�
i�az
i�azaz
i�
i�az
i�az
i�azaz
i�
i�az
i�az
i�az@az
i�
i�
i�az
i�az
i�az
i�azaz
i�az
i�
i�az
i�az
i�az
i�az
i�az
i�az
i�az
i�az
i�az
i�az
i�az
i�azaz
i�
i�azaz
i�
i�az
i�az
i�azaz
i�
i�az
i�az
i�azaz
i�az@az
i�
i�azaz
i�
i�azaz
i�az
i�
i�az
i�az
i�az
i�az
i�az
i�az
i�azaz
i�az
i�
i�azaz
i�
i�az
jaz
jaz
jaz
jaz
jazaz
jaz
jaz
jaz
jaz
j	az
j
az@
j@
j
@
j@
j@
jaz
jaz
jaz
jaz
jaz
jaz
jazaz
j
jaz
jaz
jazaz
jaz
jaz
jaz
jaz
j
j az
j!az
j"az
j#az
j$az
j%az
j&azaz
j'
j(az
j)az
j*azaz
j+az
j,
j-az
j.az
j/az
j0az
j1azaz
j2
j3az
j4azaz
j5az
j6az@
j8
j<
j9@
j:@
j;@az@
j=@
j>@
j?@az@
jAaz
jB
mH
jC@
jD@
jE@
jF@
jG
l]
jH
k�
jI
k[
jJ
k
jKaz
jLaz
jM
j�
jN
j{
jOaz
jPaz
jQ
jo
jR
j`
jS
jY
jT
jVaz
jUb�gC
jW
jXv�u�v�j
jZ
j]
j[
j\wmv�gQ
j^
j_v�v���m
ja
jh
jb
je
jc
jdv�t�u�az
jf
jggCjv�j
ji
jl
jj
jkubv�v�kX
jm
jnv�v�wkX
jpaz
jq
jx
jr
ju
js
jtw�azw�j
jv
jww�azazt�
jyaz
jzaz��az
j|az
j}
j�
j~
j�
j
j�
j�
j�az
j�b�gC
j�
j�v�u�v�j
j�
j�
j�
j�wmv�gQ
j�
j�v�v���m
j�
j�
j�
j�
j�
j�v�t�u�az
j�
j�gCjv�j
j�
j�
j�
j�ubv�v�kX
j�
j�v�v�wkX
j�az
j�
j�
j�
j�
j�
j�w�azjw�
j�
j�w�azazt�
j�az
j�az��az
j�az
j�
j�
j�az
j�
j�
j�
j�
j�
j�
j�
j�az
j�b�gC
j�
j�v�u�v�j
j�
j�
j�
j�wmv�gQ
j�
j�v�v���m
j�
j�
j�
j�
j�
j�v�t�u�az
j�
j�gCjv�j
j�
j�
j�
j�ubv�v�kX
j�
j�v�v�wkX
j�az
j�
j�
j�
j�
j�
j�w�azjw�
j�
j�w�azazt�
j�az
j�az��az
j�az
j�
j�
j�
j�
j�
j�
j�
j�az
j�b�gC
j�
j�v�u�v�j
j�
j�
j�
j�wmv�gQ
j�
j�v�v���m
j�
j�
j�
j�
j�
j�v�t�u�az
j�
j�gCjv�j
j�
j�
j�
j�ubv�v�kX
j�
j�v�v�wkX
j�az
j�
j�
j�
j�
j�
j�w�azw�w�
j�
j�jazazt�
j�az
kaz��az
k
kQ
k
k>
k
k 
k
k
k
k
az
k
k
k	b�azgCaz
k
k
k
k
v�azu�az
k
kv�azjaz
k
k
k
k
k
kwazmaz
k
kv�azgQaz
k
k
k
kv�azv�az
k
k��azmaz
k!
k/
k"
k(
k#
k&
k$
k%v�azt�az
k'azu�az
k)
k,
k*
k+gCazjaz
k-
k.v�azjaz
k0
k7
k1
k4
k2
k3ubazv�az
k5
k6v�azkXaz
k8
k;
k9
k:v�azv�az
k<
k=wazkXaz
k?
kH
k@
kD
kAaz
kBaz
kCazw�az
kEaz
kFazaz
kGw�az
kI
kM
kJaz
kKazaz
kLw�az
kNaz
kOazaz
kPjaz
kRaz
kSaz
kTaz
kU
kXaz
kVaz
kWt�az
kYaz
kZaz��az
k\az
k]
k�
k^
kz
k_
kk
k`
kdaz
ka
kb
kcb�azgCaz
ke
kh
kf
kgv�azu�az
ki
kjv�azjaz
kl
ks
km
kp
kn
kowazmaz
kq
krv�azgQaz
kt
kw
ku
kvv�azv�az
kx
ky��azmaz
k{
k�
k|
k�
k}
k�
k~
kv�azt�az
k�azu�az
k�
k�
k�
k�gCazjaz
k�
k�v�azjaz
k�
k�
k�
k�
k�
k�ubazv�az
k�
k�v�az
k�az
k�kX
k�kX
k�kX
k�kXkX
k�
k�kX
k�kX
k�kX
k�kX
k�kX
k�kXkX
k�
k�kX
k�kX
k�kX
k�kX
k�kX
k�kXkX
k�
k�kXkX
k�kX
k�kX
k�kX
k�kX
k�kX
k�kX
k�kX
k�kX��
k�
k�
k�
k�v�azv�az
k�
k�wazkXaz
k�az
k�
k�
k�
k�
k�
k�
k�azw�az
k�azw�az
k�
k�az
k�jaz
k�azw�azaz
k�
k�az
k�
k�t�az��az
k�az
k�
k�az
k�az
k�
k�
k�
k�
k�
k�az
k�az
k�
k�
k�
k�
k�az
k�az
k�azwb�
k�az
k�azwb�
k�az
k�
k�
k�az
k�azwb�
k�az
k�azwb�
k�az
k�az
k�
k�wazb�az
k�az
k�az
k�
k�wazb�az
k�
l$
k�
l	
k�
l
k�
l
k�az
k�az
k�
k�
k�
k�
k�az
k�az
k�az�az
k�az
k�az�az
k�az
k�
k�
k�az
k�az�az
k�az
laz�az
laz
laz
laz�az
laz
laz
laz�az
l

l
l
l
laz
l
az
l
l
l
l
laz
lazwaz
lazwaz
laz
l
l
lazwaz
lazwaz
laz
laz
l
lwazwaz
l az
l!az
l"
l#wazwaz
l%
lB
l&
l>
l'
l:
l(az
l)az
l*
l2
l+
l/
l,az
l-az
l.azw8az
l0az
l1azw8az
l3az
l4
l7
l5az
l6azw8az
l8az
l9azw8az
l;az
l<az
l=azw8az
l?az
l@az
lAazw8az
lC
lX
lD
lS
lEaz
lFaz
lG
lM
lH
lK
lIaz
lJazv�az
lLazv�az
lNaz
lO
lQ
lPazv�az
lRazv�az
lTaz
lUaz
lV
lWv�azv�az
lYaz
lZaz
l[
l\v�azv�azaz
l^
l_
l�
l`
laz
la
lbaz
lc
l{
ld
lw
leaz
lfaz
lg
lo
lh
ll
liaz
ljaz
lkaz��az
lmaz
lnaz��az
lpaz
lq
lt
lraz
lsaz��az
luaz
lvaz��az
lxaz
lyaz
lzaz��az
l|az
l}az
l~az��az
l�az
l�az
l�
l�
l�
l�
l�az
l�az
l�
l�
l�
l�
l�az
l�azv�az
l�azv�az
l�az
l�
l�
l�azv�az
l�azv�az
l�az
l�az
l�
l�v�azv�az
l�az
l�az
l�
l�v�azv�az
l�
l�
l�
l�
l�az
l�
l�
l�
l�
l�az
l�az
l�
l�
l�
l�
l�az
l�azv�az
l�azv�az
l�az
l�
l�
l�azv�az
l�azv�az
l�az
l�az
l�
l�v�azv�az
l�az
l�az
l�
l�v�azv�az
l�
l�
l�
l�
l�
l�
l�az
l�az
l�
l�
l�
l�
l�az
l�azgCaz
l�azgCaz
l�az
l�
l�
l�azgCaz
l�azgCaz
l�az
l�az
l�
l�gCazgCaz
l�az
l�az
l�
l�gCazgCaz
l�
l�
l�
l�
l�az
l�az
l�
l�
l�
l�
l�az
l�az
l�azmaz
l�az
l�azmaz
l�az
l�
l�
l�az
l�azmaz
l�az
l�azmaz
l�az
l�az
l�azmaz
l�az
l�az
l�azmaz
l�
m*az
l�
l�
m
l�
m
l�az
l�az
l�
m
l�
m
l�az
l�
l�v�
l�v�b�
mazv�b�
m
mv�
mv�b�
mazv�b�
maz
m
m
m	
mv�
m
v�b�
mazv�b�
m
mv�
mv�b�
mazv�b�
m
m
m
m
m
mv�azv�az
m
mv�azb�az
maz
m
mv�azb�az
m
m&
m 
m#
m!
m"v�azv�az
m$
m%v�azb�az
m'az
m(
m)v�azb�azaz
m+
m,
mD
m-
m@
m.az
m/az
m0
m8
m1
m5
m2az
m3az
m4az�az
m6az
m7az�az
m9az
m:
m=
m;az
m<az�az
m>az
m?az�az
mAaz
mBaz
mCaz�az
mEaz
mFaz
mGaz�az
mI@
mJ@
mK@az@
mM
�)
mN
�-
mO
{�
mP
t�
mQ
p�
mR
n�
mS
n'
mT
m�
mU
m�
mV
mh
mW@
mX
mb
mY@
mZ
m^
m[@
m\@
m]@az@
m_@
m`@
ma@az@
mc@@
md
me@
mf@
mg@az@
mi
mv
mj
mp
mk@
ml@
mm@
mn@
mo@az@
mq@
mr@
ms@
mt@
mu@��@
mw
m}
mx@
my@
mz@
m{@
m|@az@
m~@
m@
m�@
m�@
m�@az@
m�
m�
m�
m�
m�
m�
m�@
m�@
m�@
m�@
m�@az@
m�@
m�@
m�@
m�@
m�@az@
m�
m�
m�@
m�@
m�@
m�@
m�@az@
m�@
m�@
m�@
m�@
m�@az@
m�
m�
m�
m�
m�@
m�@
m�@
m�@
m�@az@
m�@
m�@
m�@
m�@
m�@az@
m�
m�
m�@
m�@
m�@
m�@
m�@az@
m�@
m�@
m�@
m�@
m�@az@
m�
m�
m�
m�
m�
m�
m�
m�
m�@
m�@
m�@
m�@
m�@az@
m�@
m�@
m�@
m�@
m�@az@
m�
m�
m�@
m�@
m�@
m�@
m�@az@
m�@
m�@
m�@
m�@
m�@az@
m�
m�
m�@
m�@
m�@
m�@
m�@
m�@az@
m�
m�
m�@
m�@
m�@
m�@
m�@az@
m�@
m�@
m�@
m�@
m�@az@
m�
n
m�
m�
m�
m�
m�@
m�@
m�@
m�@
m�@az@
m�@
m�@
m�@
m�@
m�@az@
m�
n
m�@
m�@
m�@
n@
n@az@
n@
n@
n@
n@
n@az@
n	
n
n

n
n@
n@
n
@
n@
n@az@
n@
n@
n@
n@
n@az@
n
n
n@
n@
n@
n@
n@|@
n@
n@
n @
n!@
n"@
n#@
n$@
n%@
n&@az@
n(
n�
n)
nd
n*
nE
n+
n8
n,
n2
n-@
n.@
n/@
n0@
n1@az@
n3@
n4@
n5@
n6@
n7@|@
n9
n?
n:@
n;@
n<@
n=@
n>@az@
n@@
nA@
nB@
nC@
nD@az@
nF
nS
nG
nM
nH@
nI@
nJ@
nK@
nL@az@
nN@
nO@
nP@
nQ@
nR@az@
nT
n^
nU@
nV@
nW@
nX@
nY@
nZ@az
n[az
n\
n]azazj
n_@
n`@
na@
nb@
nc@az@
ne
n�
nf
ns
ng
nm
nh@
ni@
nj@
nk@
nl@az@
nn@
no@
np@
nq@
nr@az@
nt
nz
nu@
nv@
nw@
nx@
ny@az@
n{@
n|@
n}@
n~@
n@az@
n�
n�@
n�
n�@
n�@
n�@
n�@
n�@az@@
n�
n�@
n�@
n�@
n�@
n�@az@
n�
n�
n�
n�
n�
n�
n�@
n�@
n�@
n�@
n�@
n�@az@
n�@
n�@
n�@
n�@
n�@
n�@az@
n�
n�
n�
n�
n�@
n�@
n�@
n�@
n�@az@
n�@
n�@
n�@
n�@
n�@|@
n�
n�
n�@
n�@
n�@
n�@
n�@az@
n�@
n�@
n�@
n�@
n�@|@
n�
n�
n�
n�
n�
n�
n�@
n�@
n�@
n�@
n�@az@
n�@
n�@
n�@
n�@
n�@az@
n�@
n�@
n�@
n�@
n�@
n�@|@
n�
n�@
n�
n�@
n�@
n�@
n�@
n�@az@
n�
n�
n�@
n�@
n�@
n�@
n�@az@
n�@
n�@
n�@
n�@
n�@|@
n�
p
n�
o�
n�
o
n�
n�@
n�
n�
n�
n�@
n�@
n�@
n�@
n�@az@
n�@
n�@
n�@
n�@
n�@f@
n�
o
n�
o
n�@
n�@
n�@
n�@
n�@az@
o@
o@
o@
o@
o@az@
o@
o@
o	@
o
@
o@
o@az@
o
o)
o
o
o
o
o@
o@
o@
o@
o@az@
o@
o@
o@
o@
o@az@
o
o#
o@
o@
o @
o!@
o"@az@
o$@
o%@
o&@
o'@
o(@az@
o*
o7
o+
o1
o,@
o-@
o.@
o/@
o0@az@
o2@
o3@
o4@
o5@
o6@|@
o8
o�
o9@
o:@
o;@
o<@
o=@
o>@
o?
o�
o@
oY
oA
oX
oBaz
oCaz
oDaz
oEaz
oF
oT
oG
oN
oH
oK
oI
oJazv�gCt�
oL
oMjwazkX
oO
oQ
oPazwaz
oR
oSwcmv�gQ
oUaz
oVaz
oWazu�azgQv�
oZaz
o[az
o\az
o]
ow
o^
or
o_
on
o`
ocaz
oaaz
obw�m
od
og
oe
oft�b�wb�
oh
om
oiw
ojkX
okkX
olkXmkXt�m
ooaz
opaz
oqazmaz
osaz
otaz
ouaz
ovazmaz
ox
o�az
oy
oz
o�
o{
o}az
o|gCub
o~
ov�azaz
o�
o�az
o�az
o�azazb�
o�
o�t�az
o�azv�az
o�az
o�az
o�
o�
o�azgQaz
o�
o�azv�v�azaz
o�az
o�az
o�az
o�az
o�az
o�az
o�az
o�az
o�
o�azb�az
o�@
o�@
o�@
o�@
o�@|@
o�
o�
o�
o�
o�
o�
o�
o�
o�@
o�@
o�@
o�@
o�@�@
o�@
o�@
o�@
o�@
o�@az@
o�
o�
o�@
o�@
o�@
o�@
o�@az@
o�@
o�@
o�@
o�@
o�@az@
o�
o�
o�
o�
o�@
o�@
o�@
o�@
o�@|@
o�@
o�@
o�@
o�@
o�@az@
o�
o�
o�@
o�@
o�@
o�@
o�@az@
o�@
o�@
o�@
o�@
o�@az@
o�
o�
o�
o�
o�
o�
o�@
o�@
o�@
o�@
o�@az@
o�@
o�@
o�@
o�@
o�@|@
o�
o�
o�@
o�@
o�@
o�@
o�@|@
o�@
o�@
o�@
o�@
o�@az@
o�
p
o�
o�
o�@
o�@
o�@
o�@
o�@|@
o�@
o�@
p@
p@
p@|@
p
p

p@
p@
p@
p@
p	@�@
p@
p@
p
@
p@
p@
p@
p|
p|
p|
p|
p|
p|
p|
p|
p|�|
p
p~
p
pG
p
p8
p
p+
p
p%
p @
p!@
p"@
p#@
p$@�?@
p&@
p'@
p(@
p)@
p*@az@
p,
p2
p-@
p.@
p/@
p0@
p1@az@
p3@
p4@
p5@
p6@
p7@�@
p9
p@@
p:
p;@
p<@
p=@
p>@
p?@az@@
pA
pB@
pC@
pD@
pE@
pF@az@
pH
pc
pI
pV
pJ
pP
pK@
pL@
pM@
pN@
pO@az@
pQ@
pR@
pS@
pT@
pU@az@
pW
p]
pX@
pY@
pZ@
p[@
p\@az@
p^@
p_@
p`@
pa@
pb@az@
pd
pq
pe
pk
pf@
pg@
ph@
pi@
pj@|@
pl@
pm@
pn@
po@
pp@az@
pr
px
ps@
pt@
pu@
pv@
pw@az@
py@
pz@
p{@
p|@
p}@az@
p
p�
p�
p�
p�
p�
p�
p�
p�@
p�@
p�@
p�@
p�@az@
p�@
p�@
p�@
p�@
p�@az@
p�
p�
p�@
p�@
p�@
p�@
p�@az@
p�@
p�@
p�@
p�@
p�@�@
p�
p�
p�
p�
p�@
p�@
p�@
p�@
p�@|@
p�@
p�@
p�@
p�@
p�@az@
p�
p�
p�@
p�@
p�@
p�@
p�@az@
p�@
p�@
p�@
p�@
p�@az@
p�
p�
p�
p�
p�
p�
p�@
p�@
p�@
p�@
p�@az@
p�@
p�@
p�@
p�@
p�@az@
p�
p�
p�@
p�@
p�@
p�@
p�@|@
p�@
p�@
p�@
p�@
p�@
p�@
p�@
p�@
p�@|@
p�
p�
p�
p�
p�@
p�@
p�@
p�@
p�@az@
p�@
p�@
p�@
p�@
p�@az@
p�
p�
p�@
p�@
p�@
p�@
p�@|@
p�@
p�@
p�@
p�@
p�@az@
p�
r�
p�
q�
p�
qQ
p�
q&
p�
q
p�
q
p�
p�
p�@
p�@
p�@
p�@
p�@az@
p�@
q@
q@
q@
q@az@@
q
q@
q@
q@
q	@
q
@az@
q
q
q
q
q@
q@
q@
q@
q@az@
q@
q@
q@
q@
q@az@
q
q 
q@
q@
q@
q@
q@az@
q!@
q"@
q#@
q$@
q%@az@
q'
q<
q(
q/@
q)
q*@
q+@
q,@
q-@
q.@az@
q0
q6
q1@
q2@
q3@
q4@
q5@az@
q7@
q8@
q9@
q:@
q;@az@
q=
qD@
q>
q?@
q@@
qA@
qB@
qC@az@
qE
qK
qF@
qG@
qH@
qI@
qJ@az@
qL@
qM@
qN@
qO@
qP@|@
qR
q�
qS
qh
qT
qa
qU
q[
qV@
qW@
qX@
qY@
qZ@az@
q\@
q]@
q^@
q_@
q`@az@
qb@
qc@
qd@
qe@
qf@
qg@az@
qi
qv
qj
qp
qk@
ql@
qm@
qn@
qo@az@
qq@
qr@
qs@
qt@
qu@az@
qw
q}
qx@
qy@
qz@
q{@
q|@|@
q~@
q@
q�@
q�@
q�@��@
q�
q�
q�
q�
q�@
q�@
q�@
q�@
q�@
q�@az@
q�
q�
q�@
q�@
q�@
q�@
q�@az@
q�@
q�@
q�@
q�@
q�@az@
q�
q�
q�
q�
q�@
q�@
q�@
q�@
q�@az@
q�@
q�@
q�@
q�@
q�@az@
q�
q�
q�@
q�@
q�@
q�@
q�@az@
q�@
q�@
q�@
q�@
q�@az@
q�
r
q�
q�
q�
q�
q�
q�
q�
q�
q�@
q�@
q�@
q�@
q�@az@
q�@
q�@
q�@
q�@
q�@|@
q�
q�
q�@
q�@
q�@
q�@
q�@az@
q�@
q�@
q�@
q�@
q�@az@
q�
q�
q�
q�
q�@
q�@
q�@
q�@
q�@az@
q�@
q�@
q�@
q�@
q�@az@
q�@
q�@
q�@
q�@
q�@
q�@az@
q�
q�
q�
q�
q�
q�
q�@
q�@
q�@
q�@
q�@az@
q�@
q�@
q�@
q�@
q�@az@
q�@
q�@
q�@
q�@
q�@
q�@az@
q�
r
q�
r
r@
r@
r@
r@
r@az@
r@
r@
r@
r	@
r
@az@
r
r
r
@
r@
r@
r@
r@
r@
r@
r@
r@|@
r@
r@
r@
r@
r@az@
r
r�
r
r9
r
r,
r 
r&
r!@
r"@
r#@
r$@
r%@az@
r'@
r(@
r)@
r*@
r+@az@
r-
r3
r.@
r/@
r0@
r1@
r2@az@
r4@
r5@
r6@
r7@
r8@az@
r:
rK
r;
rE
r<@
r=@
r>@
r?@
r@@
rA@
rB@
rC@
rD@az@
rF@
rG@
rH@
rI@
rJ@�@
rL
r�
rM@
rN@
rOaz
rPaz
rQaz
rRaz
rS
rraz
rT
rUazaz
rV
rWaz
rXazaz
rY
rZazaz
r[
r\az
r]az
r^az
r_azaz
r`az
raaz
rb
rcazaz
rd
reaz
rfaz
rgaz
rhaz
riaz
rjaz
rkaz
rlaz
rmaz
rnaz
roaz
rpaz
rqaz@azaz
rsaz
rtaz
ru
rvaz
rwaz
rxaz
ryazaz
rz
r{az
r|az
r}azaz
r~
raz
r�azaz
r�
r�azaz
r�az
r�az
r�az
r�
r�azaz
r�az
r�
r�az
r�az
r�az
r�az
r�az
r�az
r�az@az
r�@
r�@
r�@
r�@
r�@
r�@
r�az
r�az
r�az
r�az
r�az
r�azaz
r�
r�az
r�az
r�az
r�az
r�az
r�az
r�azaz
r�
r�az
r�az
r�az
r�az
r�az
r�az
r�azaz
r�az
r�
r�az
r�az
r�az
r�az
r�az
r�az
r�azw�az
r�
r�
r�
r�
r�
r�
r�@
r�@
r�@
r�@
r�@az@
r�@
r�@
r�@
r�@
r�@az@
r�
r�
r�@az@
r�@
r�@
r�@
r�@
r�@az@
r�
r�
r�
r�
r�@
r�@
r�@
r�@
r�@az@
r�@
r�@
r�@
r�@
r�@az@
r�
r�
r�@
r�@
r�@
r�@
r�@|@
r�@
r�@
r�@
r�@
r�@az@
r�
s�
r�
sQ
r�
s$
r�
s	
r�
r�
r�
r�
r�@
r�@
r�@
r�@
r�@az@
r�@
r�@
r�@
r�@
r�@az@
r�
s
r�@
r�@
s@
s@
s@az@
s@
s@
s@
s@
s@az@
s

s
s
s
s@
s
@
s@
s@
s@az@
s@
s@
s@
s@
s@az@
s
s
s@
s@
s@
s@
s@az@
s@
s @
s!@
s"@
s#@az@
s%
s:
s&
s3
s'
s-
s(@
s)@
s*@
s+@
s,@az@
s.@
s/@
s0@
s1@
s2@az@@
s4
s5@
s6@
s7@
s8@
s9@az@
s;
sH
s<
sB
s=@
s>@
s?@
s@@
sA@az@
sC@
sD@
sE@
sF@
sG@az@
sI
sK
sJ@az@
sL@
sM@
sN@
sO@
sP@az@
sR
s�
sS
sn
sT
sa
sU
s[
sV@
sW@
sX@
sY@
sZ@az@
s\@
s]@
s^@
s_@
s`@az@
sb
sh
sc@
sd@
se@
sf@
sg@az@
si@
sj@
sk@
sl@
sm@az@
so
s�
sp
sv
sq@
sr@
ss@
st@
su@az@
sw@
sx@
syaz
szaz
s{az
s|az
s}az
s~az
saz
s�az
s�az
s�az
s�az
s�az
s�az
s�az
s�az
s�az
s�az
s�az
s�az
s�az
s�az
s�az
s�az
s�az
s�az
s�az
s�azaz
s�
s�az
s�az
s�
s�az
s�az
s�azv�
s�az
s�azv�
s�v�az
s�@
s�@
s�@
s�@
s�@
s�@az@
s�
s�
s�
s�
s�
s�
s�@
s�@
s�@
s�@
s�@az@
s�@
s�@
s�@
s�@
s�@az@
s�
s�
s�@
s�@
s�@
s�@
s�@az@
s�@
s�@
s�@
s�@
s�@az@
s�
s�
s�@
s�@
s�@
s�@
s�@
s�@az@
s�
s�
s�@
s�@
s�@
s�@
s�@az@
s�@
s�@
s�@
s�@
s�@az@
s�
t:
s�
t
s�
s�
s�
s�
s�
s�
s�@
s�@
s�@
s�@
s�@az@
s�@
s�@
s�@
s�@
s�@az@
s�
s�
s�@
s�@
s�@
s�@
s�@az@
s�@
s�@
s�@
s�@
s�@az@
s�
s�@
s�
s�@
s�@
s�@
s�@
s�@az@@
s�
s�@
s�@
t@
t@
t@az@
t
t
t
t
t
t
t@
t@
t	@
t
@
t@az@
t
@
t@
t@
t@
t@az@
t
t
t@
t@
t@
t@
t@|@
t@
t@
t@
t@
t@az@
t 
t-
t!
t'
t"@
t#@
t$@
t%@
t&@|@
t(@
t)@
t*@
t+@
t,@|@
t.
t4
t/@
t0@
t1@
t2@
t3@az@
t5@
t6@
t7@
t8@
t9@az@
t;
t�
t<
tW
t=
tJ
t>
tD
t?@
t@@
tA@
tB@
tC@az@
tE@
tF@
tG@
tH@
tI@az@
tK
tQ
tL@
tM@
tN@
tO@
tP@az@
tR@
tS@
tT@
tU@
tV@az@
tX
t�
tY
t
tZ@
t[@|
t\
t]|
t^||
t_|
t`
ta||
tb
tc|
td||
te|
tf|
tg|
th
ti|
tj|
tk||
tl
tm||
tn|
to|
tp|
tq|
tr|
ts|
tt
tu|
tv|
tw|
tx|
ty|
tz|
t{|
t||
t}|
t~|@|
t�@
t�@
t�@
t�@
t�@az@
t�
t�
t�@
t�@
t�@
t�@
t�@az@
t�@
t�@
t�@
t�@
t�@az@
t�
t�
t�
t�
t�
t�
t�@
t�@
t�@
t�@
t�@az@
t�@
t�@
t�@
t�@
t�@|@
t�@
t�@
t�@
t�@
t�@
t�@az@
t�
t�
t�
t�
t�@
t�@
t�@
t�@
t�@az@
t�@
t�@
t�@
t�@
t�@
t�@
t�@
t�@
t�@|@
t�
t�
t�@
t�@
t�@
t�@
t�@az@
t�@
t�@
t�@
t�@
t�@az@
t�
x$
t�
v�
t�
u�
t�
u5
t�
u
t�
t�
t�
t�
t�
t�
t�@
t�@
t�@
t�@
t�@
t�@
t�||
t�|
t�|
t��|
t�@
t�@
t�@
t�@
t�@az@
t�@
t�@
t�@
t�@
t�@
t�@az@
t�
t�
t�
t�
t�@
t�@
t�@
t�@
t�@
t�@
t�@
t�@
t�@az@
t�@
t�@
t�@
t�@
t�@|@
t�
u
t�@
t�@
t�@
t�@
t�@az@
u@
u@
u@
u@
u@az@
u
u 
u
u
u	
u
u
@
u@
u@
u
@
u@az@
u@
u@
u@
u@
u@
u@
u@
u@
u@|@
u@
u@
u@
u@
u@
u@|@
u!
u.
u"
u(
u#@
u$@
u%@
u&@
u'@az@
u)@
u*@
u+@
u,@
u-@az@@
u/
u0@
u1@
u2@
u3@
u4@az@
u6
u�
u7
uR
u8
uE
u9
u?
u:@
u;@
u<@
u=@
u>@az@
u@@
uA@
uB@
uC@
uD@az@
uF
uL
uG@
uH@
uI@
uJ@
uK@az@
uM@
uN@
uO@
uP@
uQ@az@
uS
u�
uT
u�
uU@
uV@
uW@
uX@
uY@
uZ@
u[az
u\az
u]az
u^
u|
u_
uy
u`az
uaaz
ubaz
ucaz
udaz
ue
ut
uf
ujaz
ugaz
uh
uiazb�az
uk
unaz
ul
umazazu�
uo
uqaz
upazb�
ur
usv��gCv�
uuaz
uvaz
uwaz
uxazazjaz
uz
u{azb�az
u}
u�
u~
u�az
uazb�
u�
u�v��gCv�
u�az
u�azazj
u�@
u�@
u�@
u�@
u�@az@
u�
u�
u�@
u�@
u�@
u�@
u�@az@
u�@
u�@
u�@
u�@
u�@|@
u�
u�
u�
u�
u�
u�
u�@az@
u�@
u�@
u�@
u�@
u�@az@
u�@
u�@
u�@
u�@
u�@
u�@|@
u�
u�
u�
u�
u�@
u�@
u�@
u�@
u�@az@
u�@
u�@
u�@
u�@
u�@az@
u�
u�
u�@
u�@
u�@
u�@
u�@az@
u�@
u�@
u�@
u�@
u�@az@
u�
v,
u�
u�
u�
u�
u�
u�
u�
u�
u�@
u�@
u�@
u�@
u�@az@
u�@
u�@
u�@
u�@
u�@az@@
u�
u�@
u�@
u�@
u�@
u�@|@
u�
u�
u�
u�
u�@
u�@
u�@
u�@
u�@az@
u�@
u�@
u�@
u�@
u�@az@
u�
u�
u�@
u�@
u�@
u�@
u�@az@
u�@
u�@
u�@
u�@
u�@
_@
u�
v
u�
v
u�
v
u�@
u�@
u�@
v@
v@az@
v@
v@
v@
v@
v@|@
v	
v
v
@
v@
v@
v
@
v@az@
v@
v@
v@
v@
v@az@
v
v
v
v
v@
v@
v@
v@
v@az@
v@|@
v 
v&
v!@
v"@
v#@
v$@
v%@az@
v'@
v(@
v)@
v*@
v+@az@
v-
vd
v.
vI
v/
v<
v0
v6
v1@
v2@
v3@
v4@
v5@|@
v7@
v8@
v9@
v:@
v;@az@
v=
vC
v>@
v?@
v@@
vA@
vB@az@
vD@
vE@
vF@
vG@
vH@az@
vJ
vW
vK
vQ
vL@
vM@
vN@
vO@
vP@az@
vR@
vS@
vT@
vU@
vV@az@
vX
v^
vY@
vZ@
v[@
v\@
v]@|@
v_@
v`@
va@
vb@
vc@az@
ve
v�
vf
vs
vg
vm
vh@
vi@
vj@
vk@
vl@az@
vn@
vo@
vp@
vq@
vr@az@
vt
vz
vu@
vv@
vw@
vx@
vy@|@
v{@
v|@
v}@
v~@
v@az@
v�
v�
v�
v�
v�@
v�@
v�@
v�@
v�@az@
v�@
v�@
v�@
v�@
v�@|@@
v�
v�@
v�@
v�@
v�@
v�@az@
v�
wi
v�
w
v�
v�
v�
v�
v�
v�
v�
v�
v�@
v�@
v�@
v�@
v�@az@
v�@
v�@
v�@
v�@
v�@az@
v�
v�
v�@
v�@
v�@
v�@
v�@az@
v�@
v�@
v�@
v�@
v�@az@
v�
v�
v�
v�
v�@
v�@
v�@
v�@
v�@az@
v�@
v�@
v�@
v�@
v�@|@@
v�
v�@
v�@
v�@
v�@
v�@az@
v�
v�
v�
v�
v�
v�
v�@
v�@
v�@
v�@
v�@az@
v�@
v�@
v�@
v�@
v�@|@
v�
v�
v�@
v�@
v�@
v�@
v�@|@
v�@
v�@
v�@
v�@
v�@az@
v�
v�
v�
v�
v�@
v�@
v�@
v�@
v�@az@
v�@
v�@
v�@
v�@
v�@|@
v�
v�
v�@
v�@
v�@
v�@
v�@|@
v�@
v�@
v�@
v�@
v�@az@
w
w8
w
w
w
w
w
w

w@
w@
w@
w@
w	@az@
w@
w@
w
@
w@
w@az@
w
w
w@
w@
w@
w@
w@az@
w@
w@
w@
w@
w@az@
w
w+
w
w%
w @
w!@
w"@
w#@
w$@az@
w&@
w'@
w(@
w)@
w*@az@
w,
w2
w-@
w.@
w/@
w0@
w1@|@
w3@
w4@
w5@
w6@
w7@az@
w9
wT
w:
wG
w;
wA
w<@
w=@
w>@
w?@
w@@az@
wB@
wC@
wD@
wE@
wF@|@
wH
wN
wI@
wJ@
wK@
wL@
wM@az@
wO@
wP@
wQ@
wR@
wS@az@
wU
wb
wV
w\
wW@
wX@
wY@
wZ@
w[@az@
w]@
w^@
w_@
w`@
wa@az@@
wc
wd@
we@
wf@
wg@
wh@az@
wj
w�
wk
w�
wl
w�
wm
wt
wn@
wo@
wp@
wq@
wr@
ws@az@
wu
w{
wv@
ww@
wx@
wy@
wz@|@
w|@
w}@
w~@
w@
w�@az@
w�
w�@
w�
w�@
w�@
w�@
w�@
w�@az@@
w�
w�@
w�@
w�@
w�@
w�@az@
w�
w�
w�
w�@
w�
w�@
w�@
w�@
w�@
w�@|@
w�
w�
w�@
w�@
w�@
w�@
w�@az@
w�@
w�@
w�@
w�@
w�@az@
w�
w�
w�
w�
w�@
w�@
w�@
w�@
w�@az@
w�@
w�@
w�@
w�@
w�@az@
w�
w�
w�@
w�@
w�@
w�@
w�@az@
w�@
w�@
w�@
w�@
w�@az@
w�
w�
w�
w�
w�
w�@
w�
w�@
w�@
w�@
w�@
w�@|@
w�
w�
w�@
w�@
w�@
w�@
w�@az@
w�@
w�@
w�@
w�@
w�@az@
w�
w�
w�
w�
w�@
w�@
w�@
w�@
w�@az@
w�@
w�@
w�@
w�@
w�@az@@
w�
w�@
w�@
w�@
w�@
w�@az@
w�
x	
w�
w�
w�
w�
w�@
w�@
w�@
w�@
w�@az@
w�@
w�@
w�@
w�@
w�@az@
w�
x
w�@
w�@
x@
x@
x@az@
x@
x@
x@
x@
x@az@
x

x
x
x
x@
x
@
x@
x@
x@az@
x@
x@
x@
x@
x@az@
x
x
x@
x@
x@
x@
x@az@
x@
x @
x!@
x"@
x#@az@
x%
z\
x&
yz
x'
x�
x(
x]
x)
xB
x*
x;
x+
x1
x,@
x-@
x.@
x/@
x0@az@
x2@
x3@
x4@
x5@
x6@
x7@
x8@
x9@
x:@az@
x<@
x=@
x>@
x?@
x@@
xA@az@
xC
xP
xD
xJ
xE@
xF@
xG@
xH@
xI@az@
xK@
xL@
xM@
xN@
xO@az@
xQ
xW
xR@
xS@
xT@
xU@
xV@az@
xX@
xY@
xZ@
x[@
x\@az@
x^
xy
x_
xl
x`
xf
xa@
xb@
xc@
xd@
xe@az@
xg@
xh@
xi@
xj@
xk@az@
xm
xs
xn@
xo@
xp@
xq@
xr@az@
xt@
xu@
xv@
xw@
xx@az@
xz
x�
x{@
x|@
x}@
x~@
x@
x�@az@
x�
x�
x�@
x�@
x�@
x�@
x�@az@
x�@
x�@
x�@
x�@
x�@|@
x�
x�
x�
x�
x�
x�
x�
x�
x�@
x�@
x�@
x�@
x�@|@
x�@
x�@
x�@
x�@
x�@|@
x�@
x�@
x�@
x�@
x�@
x�@az@
x�
x�
x�
x�
x�@
x�@
x�@
x�@
x�@|@
x�@
x�@
x�@
x�@
x�@az@
x�
x�
x�@
x�@
x�@
x�@
x�@|@
x�@
x�@
x�@
x�@
x�@az@
x�
ye
x�
yX
x�
yR
x�@
x�@
x�@
x�@
x�@
x�@
x�
y,
x�az
x�
y
x�az
x�az
x�az
x�az
x�
y
x�
x�
x�
x�
x�
x�
x�az
x�az
x�az
x�az
x�az
x�az
x�az
x�az
x�az
x�az
x�az
x�az
x�az
x�azaz
x�
x�az
x�az
x�az
x�azaz
x�w�az
x�az
x�azaz
x�
x�azazv�
x�
x�
x�
x�az
x�
x�azaz
x�az��az
x�az
x�az
x�azgQaz
x�
x�azaz
x�az
x�az{�
x�az
x�azaz
yaz
y
yaz
y
yazv�v�azaz
yaz
y
yaz
y	az
y
azaz
yaz
yt�az
yaz
yaz
y
y"
yaz
yaz
yaz
yaz
yaz
y
y
y
yaz
y
y
yazgQgCgQ
yaz
yazgCv�
yaz
y az
y!azv�azaz
y#
y$az
y%az
y&az
y'az
y(az
y)azaz
y*az
y+azwaz
y-az
y.az
y/az
y0az
y1
y2
yBaz
y3
y4
y;
y5az
y6az
y7az
y8az
y9az
y:azjazaz
y<
y=az
y>az
y?az
y@az
yAazwaz
yCaz
yD
yKaz
yEaz
yFaz
yGaz
yHaz
yI
yJazmazaz
yLaz
yMaz
yN
yOazaz
yP
yQazmaz
yS@
yT@
yU@
yV@
yW@az@
yY
y_
yZ@
y[@
y\@
y]@
y^@az@
y`@
ya@
yb@
yc@
yd@az@
yf
ys
yg
ym
yh@
yi@
yj@
yk@
yl@az@
yn@
yo@
yp@
yq@
yr@az@
yt@
yu@
yv@
yw@
yx@
yy@az@
y{
y�
y|
y�
y}
y�
y~
y�
y
y�
y�@
y�@
y�@
y�@
y�@az@
y�@
y�@
y�@
y�@
y�@
y�@
y�
y�
y�az
y�azaz
y�az
y�
y�
y�az
y�azv�
y�azjazaz
y�az
y�
y�
y�az
y�
y�az
y�azv�az
y�
y�
y�az
y�azv�az
y�
y�
y�
y�j��w�j
y�azw�az
y�
y�
y�@
y�@
y�@
y�@
y�@|@
y�@
y�@
y�@
y�@
y�@az@
y�
y�
y�
y�
y�@
y�@
y�@
y�@
y�@az@
y�@
y�@
y�@
y�@
y�@az@
y�
y�
y�@
y�@
y�@
y�@
y�@az@
y�@
y�@
y�@
y�@
y�@az@
y�
y�
y�
y�
y�
y�
y�@
y�@
y�@
y�@
y�@az@
y�@
y�@
y�@
y�@
y�@az@@
y�
y�@
y�@
y�@
y�@
y�@az@
y�
y�
y�
y�
y�@
y�@
y�@
y�@
y�@az@
y�@
y�@
y�@
y�@
y�@v�@
y�
y�
y�@
y�@
y�@
y�@
y�@az@
y�@
y�@
y�@
y�@
y�@az@
z
z+
z
z
z
z
z
z	
z@
z@
z@
z@
z@az@
z
@
z@
z@
z
@
z@az@
z
z
z@
z@
z@
z@
z@|@
z@
z@
z@
z@
z@|@
z
z$
z@
z@
z @
z!@
z"@
z#@az@@
z%
z&@
z'@
z(@
z)@
z*@az@
z,
zG
z-
z:
z.
z4
z/@
z0@
z1@
z2@
z3@az@
z5@
z6@
z7@
z8@
z9@|@
z;
zA
z<@
z=@
z>@
z?@
z@@az@
zB@
zC@
zD@
zE@
zF@az@
zH
zU
zI
zO
zJ@
zK@
zL@
zM@
zN@az@
zP@
zQ@
zR@
zS@
zT@az@
zV@
zW@
zX@
zY@
zZ@
z[@az@
z]
{*
z^
z�
z_
z�
z`
zu
za
zh@
zb
zc@
zd@
ze@
zf@
zg@az@
zi
zo
zj@
zk@
zl@
zm@
zn@az@
zp@
zq@
zr@
zs@
zt@az@
zv
z�
zw
z}
zx@
zy@
zz@
z{@
z|@az@
z~@
z@
z�@
z�@
z�@�@
z�
z�
z�@
z�@
z�@
z�@
z�@
z�@
z�@
z�@
z�@az@
z�@
z�@
z�@
z�@
z�@az@
z�
z�
z�
z�
z�
z�
z�@
z�@
z�@
z�@
z�@az@
z�@
z�@
z�@
z�@
z�@az@
z�
z�
z�@
z�@
z�@
z�@
z�@az@
z�@
z�@
z�@
z�@
z�@az@
z�
z�
z�
z�
z�@
z�@
z�@
z�@
z�@az@
z�@
z�@
z�@
z�@
z�@az@@
z�
z�@
z�@
z�@
z�@
z�@|@
z�
z�
z�
z�
z�
z�@
z�
z�@
z�@
z�@
z�@
z�@az@
z�
z�
z�@
z�@
z�@
z�@
z�@|@
z�@
z�@
z�@
z�@
z�@az@
z�
z�
z�
z�
z�@
z�@
z�@
z�@
z�@az@
z�@
z�@
z�@
z�@
z�@az@
z�
z�
z�@
z�@
z�@
z�@
z�@az@
z�@
z�@
z�@
z�@
z�@|@
z�
{
z�
{
z�
z�
z�@az@
z�@
z�@
z�@
{@
{@az@
{
{	
{@
{@
{@
{@
{@az@
{
@
{@
{@
{
@
{@az@
{
{
{
{
{@
{@
{@
{@
{@az@
{@
{@
{@
{@
{@az@
{
{$
{@
{ @
{!@
{"@
{#@az@
{%@
{&@
{'@
{(@
{)@az@
{+
{�
{,
{c
{-
{H
{.
{;
{/
{5
{0@
{1@
{2@
{3@
{4@az@
{6@
{7@
{8@
{9@
{:@az@
{<
{B
{=@
{>@
{?@
{@@
{A@az@
{C@
{D@
{E@
{F@
{G@|@
{I
{V
{J
{P
{K@
{L@
{M@
{N@
{O@az@
{Q@
{R@
{S@
{T@
{U@az@
{W
{]
{X@
{Y@
{Z@
{[@
{\@|@
{^@
{_@
{`@
{a@
{b@az@
{d
{{
{e
{n
{f
{h
{g@az@
{i@
{j@
{k@
{l@
{m@|@
{o
{u
{p@
{q@
{r@
{s@
{t@az@
{v@
{w@
{x@
{y@
{z@az@
{|
{�
{}@
{~@
{@
{�@
{�@
{�@az@
{�
{�
{�@
{�@
{�@
{�@
{�@az@
{�@
{�@
{�@
{�@
{�@az@
{�
{�
{�
{�
{�
{�
{�
{�
{�@
{�@
{�@
{�@
{�@az@
{�@
{�@
{�@
{�@
{�@
{�@
{�@
{�@
{�@az@
{�
{�
{�@
{�@
{�@
{�@
{�@az@
{�@
{�@
{�@
{�@
{�@az@
{�
{�@
{�
{�@
{�@
{�@
{�@
{�@|@
{�@
{�@
{�@
{�@
{�@
{�@az@
{�
{�
{�
{�
{�
{�
{�@
{�@
{�@
{�@
{�@az@
{�@
{�@
{�@
{�@
{�@az@
{�@
{�@
{�@
{�@
{�@
{�@az@
{�
{�
{�
{�
{�@
{�@
{�@
{�@
{�@|@
{�@
{�@
{�@
{�@
{�@|@
{�
{�
{�@
{�@
{�@
{�@
{�@az@
{�@
{�@
{�@
{�@
{�@az@
{�
��
{�
]
{�
}�
{�
|�
{�
|e
{�
|!
{�
|
{�
|
{�
|
{�@
{�@
{�@
{�@
{�@az@
|@
|@
|@
|@
|@az@@
|
|@
|	@
|
@
|@
|@az@
|
|
|@
|@
|@
|@
|@
|@az@
|
|
|@
|@
|@
|@az@
|@
|@
|@
|@
| @az@
|"
|=
|#
|0
|$
|*
|%@
|&@
|'@
|(@
|)@az@
|+@
|,@
|-@
|.@
|/@az@
|1
|7
|2@
|3@
|4@
|5@
|6@|@
|8@
|9@
|:@
|;@
|<@az@
|>
|E@
|?
|@@
|A@
|B@
|C@
|D@|@
|F
|_
|G@
|H@
|I@
|J@
|K@
|L@
|Maz
|Nazaz
|O
|P
|Y
|Q
|Taz
|R
|SazazkX
|U
|W
|Vazv�waz
|Xazv�
|Zaz
|[
|]az
|\azv�
|^azazm
|`@
|a@
|b@
|c@
|d@az@
|f
|�
|g
|�
|h
|u
|i
|o
|j@
|k@
|l@
|m@
|n@|@
|p@
|q@
|r@
|s@
|t@az@
|v
||
|w@
|x@
|y@
|z@
|{@az@
|}@
|~@
|@
|�@
|�@az@
|�
|�
|�
|�
|�@
|�@
|�@
|�@
|�@az@
|�@
|�@
|�@
|�@
|�@az@
|�
|�
|�@
|�@
|�@
|�@
|�@az@
|�@
|�@
|�@
|�@
|�@az@
|�
|�
|�
|�
|�
|�
|�@
|�@
|�@
|�@
|�@|@
|�@
|�@
|�@
|�@
|�@az@@
|�
|�@
|�@
|�@
|�@
|�@
|�@az
|�az
|�az
|�az
|�
|�az
|�
|�
|�
|�b�gQkXgC
|�azwaz
|�
|�
|�
|�
|�@
|�@
|�@
|�@
|�@
|�@
|�@
|�@
|�@az@
|�@
|�@
|�@
|�@
|�@az@
|�
|�
|�@
|�@
|�@
|�@
|�@az@
|�@
|�@
|�@
|�@
|�@az@
|�
}A
|�
}
|�
|�
|�
|�
|�
|�
|�@
|�@
|�@
|�@
|�@az@
|�@
|�@
|�@
|�@
|�@az@
|�
|�
|�@
|�@
|�@
|�@
|�@|@
|�@
|�@
|�@
|�@
|�@az@
|�
}	
|�
}
|�@
|�@
}@
}@
}@az@
}@
}@
}@
}@
}@az@
}

}
}@
}@
}
@
}@
}@|@
}@
}@
}@
}@
}@�@
}
},
}
}%
}
}
}@
}@
}@
}@
}@az@
} @
}!@
}"@
}#@
}$@az@@
}&
}'@
}(@
})@
}*@
}+@az@
}-
}4
}.@
}/@
}0@
}1@
}2@
}3@|@
}5
};
}6@
}7@
}8@
}9@
}:@az@
}<@
}=@
}>@
}?@
}@@az@
}B
}s
}C
}X
}D
}K
}E@
}F@
}G@
}H@
}I@
}J@az@
}L
}R
}M@
}N@
}O@
}P@
}Q@�c@
}S@
}T@
}U@
}V@
}W@az@
}Y
}f
}Z
}`
}[@
}\@
}]@
}^@
}_@az@
}a@
}b@
}c@
}d@
}e@az@
}g
}m
}h@
}i@
}j@
}k@
}l@az@
}n@
}o@
}p@
}q@
}r@|@
}t
}�
}u
}|@
}v
}w@
}x@
}y@
}z@
}{@az@
}}
}�
}~@
}@
}�@
}�@
}�@az@
}�@
}�@
}�@
}�@
}�@|@
}�
}�
}�
}�
}�@
}�@
}�@
}�@
}�@az@
}�@
}�@
}�@
}�@
}�@az@
}�
}�
}�@
}�@
}�@
}�@
}�@az@
}�@
}�@
}�@
}�@
}�@az@
}�
~�
}�
~
}�
}�
}�
}�
}�
}�
}�
}�
}�@
}�@
}�@
}�@
}�@az@
}�@
}�@
}�@
}�@
}�@az@
}�
}�
}�@
}�@
}�@
}�@
}�@az@
}�@
}�@
}�@
}�@
}�@az@
}�
}�
}�
}�
}�@
}�@
}�@
}�@
}�@az@
}�@
}�@
}�@
}�@
}�@
}�@az
}�az
}�az
}�az
}�az
}�az
}�az
}�az
}�az
}�az
}�az
}�az
}�az
}�az
}�az
}�az�@
}�
}�@
}�@
}�@
}�@
}�@az@
}�
~
}�
}�
}�
}�
}�@
}�@
}�@
}�@
}�@az@
}�@
}�@
}�@
}�@
}�@az@
}�
}�
}�@
}�@
}�@
}�@
}�@az@
}�@
~@
~@
~@
~@az@
~
~
~
~
~@
~@
~	@
~
@
~@az@
~
@
~@
~@
~@
~@az@
~
~
~@
~@
~@
~@
~@|@
~@
~@
~@
~@
~@az@
~ 
~Q
~!
~6
~"
~)@
~#
~$@
~%@
~&@
~'@
~(@az@
~*
~0
~+@
~,@
~-@
~.@
~/@az@
~1@
~2@
~3@
~4@
~5@az@
~7
~D
~8
~>
~9@
~:@
~;@
~<@
~=@az@
~?@
~@@
~A@
~B@
~C@az@
~E
~K
~F@
~G@
~H@
~I@
~J@az@
~L@
~M@
~N@
~O@
~P@az@
~R
~g
~S
~`
~T
~Z
~U@
~V@
~W@
~X@
~Y@az@
~[@
~\@
~]@
~^@
~_@az@@
~a
~b@
~c@
~d@
~e@
~f@az@
~h
~u
~i
~o
~j@
~k@
~l@
~m@
~n@az@
~p@
~q@
~r@
~s@
~t@az@
~v
~|
~w@
~x@
~y@
~z@
~{@v�@
~}@
~~@
~@
~�@
~�@az@
~�
~�
~�
~�
~�
~�
~�
~�
~�
~�
~�@
~�@
~�@
~�@
~�@az@
~�@
~�@
~�@
~�@
~�@az@
~�
~�
~�@
~�@
~�@
~�@
~�@
~�@
~�@
~�@
~�@|@
~�@
~�@
~�@
~�@
~�@�@
~�
~�
~�
~�
~�@
~�@
~�@
~�@
~�@az@
~�@
~�@
~�@
~�@
~�@az@
~�
~�
~�@
~�@
~�@
~�@
~�@az@
~�@
~�@
~�@
~�@
~�@az@
~�
~�
~�
~�
~�
~�
~�@
~�@
~�@
~�@
~�@az@
~�@
~�@
~�@
~�@
~�@az@
~�
~�
~�@
~�@
~�@
~�@
~�@az@
~�@
~�@
~�@
~�@
~�@az@
~�
~�
~�
~�
~�@
~�@
~�@
~�@
~�@az@
~�@
~�@
~�@
~�@
~�@az@
~�
~�
~�@
~�@
~�@
~�@
~�@az@
~�@
~�@
~�@
~�@
~�@az@
~�
.
~�

~�

~�

~�@
~�@
~�@
~�@
~�@az@
@
@
@
@
@az@


@
	@

@
@
@az@
@
@
@
@
@az@

!


@
@
@
@
@az@
@
@
@
@
 @az@
"
(
#@
$@
%@
&@
'@az@
)@
*@
+@
,@
-@az@
/
F
0
9
1
3
2@az@
4@
5@
6@
7@
8@az@
:
@
;@
<@
=@
>@
?@|@
A@
B@
C@
D@
E@az@
G
P
H
J
I@az@
K@
L@
M@
N@
O@az@
Q
W
R@
S@
T@
U@
V@az@
X@
Y@
Z@
[@
\@az@
^
�9
_
�2
`
�
a
�
b
}
c
p
d
j
e@
f@
g@
h@
i@az@
k@
l@
m@
n@
o@az@
q
w
r@
s@
t@
u@
v@az@
x@
y@
z@
{@
|@az@
~
�

�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@
�
���
�
�������
�������
�@
�@
�@
�@
�@az@
�
�
�
�
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@|@
�@
�@
�@
�@
�@az@
�
�
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@@
�
�@
�@
�@
�@
�@|@
�
�
�
�
�
�
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�@
�
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@|@
�
�
�
�
@
�
�@
�@
�@
�@
�	@|@
�
�
�@
�
@
�@
�@
�@az@
�@
�@
�@
�@
�@�@
�
�%
�
�
�@
�@
�@
�@
�@az@
� @
�!@
�"@
�#@
�$@|@
�&
�,
�'@
�(@
�)@
�*@
�+@az@
�-@
�.@
�/@
�0@
�1@az@
�3
��
�4
��
�5
��
�6
�C
�7
�=
�8@
�9@
�:@
�;@
�<@az@
�>@
�?@
�@@
�A@
�B@az@
�D
��
�E@
�F@
�G@
�H@
�I@
�J@
�Kaz
�Laz
�Maz
�Naz
�O
�jaz
�P
�Qaz
�Raz
�Saz
�Taz
�Uaz
�Vaz
�Waz
�Xaz
�Yaz
�Zaz
�[az
�\az
�]az
�^az
�_az
�`az
�aaz
�bazaz
�caz
�d
�eazaz
�f
�gaz
�haz
�iazw�azaz
�k
�laz
�mazaz
�n
�oazaz
�p
�qazaz
�raz
�s
�tazaz
�u
�vaz
�waz
�xaz
�yaz
�zaz
�{az
�|az
�}azaz
�~az
�
��azaz
��
��az
��az
��azv�az
��@
��@
��@
��@
��@|@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
�@
�@az@
�
�	
�@
�@
�@
�@
�@az@
�
@
�@
�@
�
@
�@az@
�
�+
�
�
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�%
� @
�!@
�"@
�#@
�$@az@
�&@
�'@
�(@
�)@
�*@az@@
�,
�-
�3
�.@
�/@
�0@
�1@
�2@az@
�4@
�5@
�6@
�7@
�8@az@
�:
�
�;
��
�<
�s
�=
�X
�>
�K
�?
�E
�@@
�A@
�B@
�C@
�D@�@
�F@
�G@
�H@
�I@
�J@az@
�L
�R
�M@
�N@
�O@
�P@
�Q@az@
�S@
�T@
�U@
�V@
�W@az@
�Y
�f
�Z
�`
�[@
�\@
�]@
�^@
�_@az@
�a@
�b@
�c@
�d@
�e@az@
�g
�m
�h@
�i@
�j@
�k@
�l@az@
�n@
�o@
�p@
�q@
�r@az@
�t
��
�u
��
�v
�|
�w@
�x@
�y@
�z@
�{@az@
�}@
�~@
�@
��@
��@az@
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@|@@
��
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@
��@
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��azaz
��az
��
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��azaz
��az
��w�az
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@
��@az@@
��
��@
��@
��@
��@
��@az@
��
��@
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
�
�
�
�
�@
�@
�@
�@
�@az@
�@
�	@
�
@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
��
� 
�Q
�!
�<
�"
�/
�#
�)
�$@
�%@
�&@
�'@
�(@az@
�*@
�+@
�,@
�-@
�.@az@
�0
�6
�1@
�2@
�3@
�4@
�5@az@
�7@
�8@
�9@
�:@
�;@az@
�=
�J
�>
�D
�?@
�@@
�A@
�B@
�C@az@
�E@
�F@
�G@
�H@
�I@az@@
�K
�L@
�M@
�N@
�O@
�P@az@
�R
�m
�S
�`
�T
�Z
�U@
�V@
�W@
�X@
�Y@az@
�[@
�\@
�]@
�^@
�_@az@
�a
�g
�b@
�c@
�d@
�e@
�f@az@
�h@
�i@
�j@
�k@
�l@az@
�n
�{
�o
�u
�p@
�q@
�r@
�s@
�t@az@
�v@
�w@
�x@
�y@
�z@az@
�|@
�}@
�~@
�@
��@
��@az@
��
��
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@@
��
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@|@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��
�S
��
��
��
�R
��
�!
��
�
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��@
��@
��@
��@
��@az@
�@
�@
�@
�@
�@az@
�
�
�
�
�	@
�
@
�@
�@
�
@az@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
� @az@
�"
�7
�#
�0
�$
�*
�%@
�&@
�'@
�(@
�)@az@
�+@
�,@
�-@
�.@
�/@az@@
�1
�2@
�3@
�4@
�5@
�6@|@
�8
�E
�9
�?
�:@
�;@
�<@
�=@
�>@az@
�@@
�A@
�B@
�C@
�D@az@
�F
�L
�G@
�H@
�I@
�J@
�K@az@
�M@
�N@
�O@
�P@
�Q@az@
�S
�~
�T
�i
�U
�b
�V
�\
�W@
�X@
�Y@
�Z@
�[@az@
�]@
�^@
�_@
�`@
�a@|@@
�c
�d@
�e@
�f@
�g@
�h@|@
�j
�q@
�k
�l@
�m@
�n@
�o@
�p@az@
�r
�x
�s@
�t@
�u@
�v@
�w@az@
�y@
�z@
�{@
�|@
�}@az@
�
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��@
��
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@|@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@
��@
���
���
���|�
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@
��@
��az
��az
��az
��
��az
��
��az
��azjaz
��az
��azaz
����az
��@
��@
��@
��@
��@�'@
��
��
��
��
��
��
��@
��@
��@
��@
�@
�@
�az
�az
�az
�az
�az
�az
�azaz
�	
�

�I
�
�*
�
�
�
�
�az
�
�
�
�azv�w��
�az����
�az
�
�
�
�azv�w��
�az����
�
�#
�az
�
�!
�
� azv�w��
�"az����
�$az
�%
�(
�&
�'azv�w��
�)az����
�+
�:
�,
�3
�-az
�.
�1
�/
�0azv�w��
�2az����
�4az
�5
�8
�6
�7azv�w��
�9az����
�;
�B
�<az
�=
�@
�>
�?azv�w��
�Aaz����
�Caz
�D
�G
�E
�Fazv�w��
�Haz����
�J
��
�K
�t
�L
�`
�M
�\
�N
�U
�O
�R
�P
�Qw�w*wb�
�S
�T�"wwc�
�V
�Y
�W
�XkXgC��v�
�Z
�[�v�gQw�
�]az
�^az
�_az�ub
�a
�p
�b
�i
�c
�f
�d
�ew�w*wb�
�g
�h�"wwc�
�j
�m
�k
�lkXgC��v�
�n
�o�v�gQw�
�qaz
�raz
�saz�ub
�u
��
�v
��
�w
�~
�x
�{
�y
�zw�w*wb�
�|
�}�"wwc�
�
��
��
��kXgC��v�
��
���v�gQw�
��az
��az
��az�ub
��
��
��
��
��
��
��
��w�w*wb�
��
���"wwc�
��
��
��
��kXgC��v�
��
���v�gQw�
��az
��az
��az�ub
��
��
��
��
��az
��
��
��
��azv�w��
��az����
��az
��
��
��
��azv�w��
��az����
��
��
��az
��
��
��
��azv�w��
��az����
��az
��
��
��
��azv�w��
��az����
��@
��@
��@
��@
��@V�@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��
�
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��@
��@
��@
��@
�@az@
�@
�@
�@
�@
�@az@
�
�
�	
�
�
@
�@
�@
�
@
�@az@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@az@
�
�8
�
�+
�
�%
� @
�!@
�"@
�#@
�$@az@
�&@
�'@
�(@
�)@
�*@az@
�,
�2
�-@
�.@
�/@
�0@
�1@az@
�3@
�4@
�5@
�6@
�7@|@
�9
�F
�:
�@
�;@
�<@
�=@
�>@
�?@az@
�A@
�B@
�C@
�D@
�E@az@
�G
�M
�H@
�I@
�J@
�K@
�L@az@
�N@
�O@
�P@
�Q@
�R@|@
�T
�K
�U
��
�V
��
�W
�r
�X
�e
�Y
�_
�Z@
�[@
�\@
�]@
�^@az@
�`@
�a@
�b@
�c@
�d@|@
�f
�l
�g@
�h@
�i@
�j@
�k@az@
�m@
�n@
�o@
�p@
�q@az@
�s
��
�t
�z
�u@
�v@
�w@
�x@
�y@az@
�{@
�|@
�}@
�~@
�@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��@
��
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@�@
��
��
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@@
��
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�0
��
�#
��
�
��@
��@
��@
��@
��@
��@
��az
��az
�azaz
�
�az
�azaz
�
�az
�az
�az
�az
�	az
�
az
�az
�az
�
az
�az
�az
�az
�az
�az
�az
�az
�az
�azaz
�az
�az
�az
�
�az
�azazw�
�@
�@
� @
�!@
�"@az@
�$
�*
�%@
�&@
�'@
�(@
�)@az@
�+@
�,@
�-@
�.@
�/@az@
�1
�>
�2
�8
�3@
�4@
�5@
�6@
�7@az@
�9@
�:@
�;@
�<@
�=@az@
�?
�E
�@@
�A@
�B@
�C@
�D@|@
�F@
�G@
�H@
�I@
�J@az@
�L
��
�M
�w
�N
�\
�O
�U
�P@
�Q@
�R@
�S@
�T@az@@
�V
�W@
�X@
�Y@
�Z@
�[@|@
�]
�j
�^
�d
�_@
�`@
�a@
�b@
�c@az@
�e@
�f@
�g@
�h@
�i@az@
�k
�q
�l@
�m@
�n@
�o@
�p@|@
�r@
�s@
�t@
�u@
�v@az@
�x
��
�y
��@
�z
�{@
�|@
�}@
�~@
�@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@az@@
��
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��@
��
��@
��@
��@
��@
��@az@@
��
��@
��@
�@
�@
�@az@
�
��
�
��
�
�u
�
�>
�
�#
�	
�
�

�
�@
�@
�
@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@az@
�@
�@
� @
�!@
�"@az@
�$
�1
�%
�+
�&@
�'@
�(@
�)@
�*@|@
�,@
�-@
�.@
�/@
�0@az@
�2
�8
�3@
�4@
�5@
�6@
�7@az@
�9@
�:@
�;@
�<@
�=@az@
�?
�Z
�@
�M
�A
�G
�B@
�C@
�D@
�E@
�F@az@
�H@
�I@
�J@
�K@
�L@az@
�N
�T
�O@
�P@
�Q@
�R@
�S@az@
�U@
�V@
�W@
�X@
�Y@az@
�[
�h
�\
�b
�]@
�^@
�_@
�`@
�a@az@
�c@
�d@
�e@
�f@
�g@az@
�i
�o
�j@
�k@
�l@
�m@
�n@az@
�p@
�q@
�r@
�s@
�t@|@
�v
��
�w
��
�x
�@
�y
�z@
�{@
�|@
�}@
�~@|@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��@
��
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��@
��
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�<
��
�
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�	@
�
@az@
�
�!
�
�@
�
�@
�@
�@
�@
�@�@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
� @|@
�"
�/
�#
�)
�$@
�%@
�&@
�'@
�(@az@
�*@
�+@
�,@
�-@
�.@az@
�0
�6
�1@
�2@
�3@
�4@
�5@az@
�7@
�8@
�9@
�:@
�;@az@
�=
�[
�>
�F@
�?
�@@
�A@
�B@
�C@
�D@
�E@az@
�G
�N@
�H
�I@
�J@
�K@
�L@
�M@az@
�O
�U
�P@
�Q@
�R@
�S@
�T@az@
�V@
�W@
�X@
�Y@
�Z@az@
�\
�{
�]
�n
�^
�h
�_@
�`@
�a@
�b@
�c@
�d@
�e@
�f@
�g@az@
�i@
�j@
�k@
�l@
�m@az@
�o
�u
�p@
�q@
�r@
�s@
�t@az@
�v@
�w@
�x@
�y@
�z@az@
�|
��
�}
��
�~@
�@
��@
��@
��@|@
��@
��@
��@
��@
��@az@@
��
��@
��@
��@
��@
��@az@
��
�Z
��
��
��
��
��
��
��
��
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@�@
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@@
��
��@
��@
��@
��@
��@az@
��
�)
��
�
��
�
��
��
��@
��@
��@
��@
��@az@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�	@
�
@
�@az@
�
@
�@
�@
�@
�@az@
�
� 
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@�@
�!
�#
�"@az@
�$@
�%@
�&@
�'@
�(@az@
�*
�E
�+
�8
�,
�2
�-@
�.@
�/@
�0@
�1@az@
�3@
�4@
�5@
�6@
�7@az@
�9
�?
�:@
�;@
�<@
�=@
�>@|@
�@@
�A@
�B@
�C@
�D@az@
�F
�S
�G
�M
�H@
�I@
�J@
�K@
�L@az@
�N@
�O@
�P@
�Q@
�R@az@@
�T
�U@
�V@
�W@
�X@
�Y@az@
�[
��
�\
��
�]
�x
�^
�k
�_
�e
�`@
�a@
�b@
�c@
�d@|@
�f@
�g@
�h@
�i@
�j@az@
�l
�r
�m@
�n@
�o@
�p@
�q@az@
�s@
�t@
�u@
�v@
�w@az@
�y
��
�z
��
�{@
�|@
�}@
�~@
�@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@�@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��
�
��@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�	@
�
@
�@az@
�
@
�@
�@
�@
�@az@
�
� 
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�!
�'
�"@
�#@
�$@
�%@
�&@|@
�(@
�)@
�*@
�+@
�,@az@
�.
�,
�/
�
�0
��
�1
��
�2
�#
�3
��
�4
�^
�5
�P
�6
�C
�7
�=
�8@
�9@
�:@
�;@
�<@az@
�>@
�?@
�@@
�A@
�B@az@
�D
�J
�E@
�F@
�G@
�H@
�I@|@
�K@
�L@
�M@
�N@
�O@az@
�Q@
�R
�X
�S@
�T@
�U@
�V@
�W@az@
�Y@
�Z@
�[@
�\@
�]@az@
�_
�n
�`
�g@
�a
�b@
�c@
�d@
�e@
�f@az@
�h@
�i@
�j@
�k@
�l@
�m@az@
�o
�|
�p
�v
�q@
�r@
�s@
�t@
�u@az@
�w@
�x@
�y@
�z@
�{@az@
�}
��
�~@
�@
��@
��@
��@
��@
��az
��az
��az
��az
��az
��az
��az
��az
��az
��
��
��
��az
��az
��
��az
��azazjaz
��az
��
��az
��az�waz
��az
��
��
��az
��az
��az�az
��azaz
��v�az
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@@
��
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@az@@
��
��@
��@
��@
��@
��@
��@az
��az
��
��az
��az
��az
��az
��az
��
��
��
��az
��
��az�az
��az
��az�az
��az
��
��
��az�az
��az
��az
��azaz
��
��az�az
��
�
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��@
��@
��@
�@
�@az@
�@
�@
�@
�@
�@az@
�	
�
�

�
�@
�@
�
@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@az@
�@
�@
� @
�!@
�"@|@
�$
��
�%
�l
�&
�A
�'
�4
�(
�.
�)@
�*@
�+@
�,@
�-@az@
�/@
�0@
�1@
�2@
�3@az@
�5
�;
�6@
�7@
�8@
�9@
�:@az@
�<@
�=@
�>@
�?@
�@@az@
�B
�O
�C
�I
�D@
�E@
�F@
�G@
�H@az@
�J@
�K@
�L@
�M@
�N@az@
�P
�V
�Q@
�R@
�S@
�T@
�U@az@
�W@
�X@
�Y@
�Z@
�[@
�\@
�]az
�^az
�_az
�`az
�aaz
�baz
�caz
�daz
�eaz
�faz
�gaz
�haz
�iaz
�jaz
�kazazb�
�m
��
�n
�{
�o
�u
�p@
�q@
�r@
�s@
�t@az@
�v@
�w@
�x@
�y@
�z@az@@
�|
�}@
�~@
�@
��@
��@az@
��
��@
��
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@��@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
�]
��
�,
��
�
��
�
��
��
��@
��@
��@
��@
��@|@
��@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�	@
�
@az@
�@
�
@
�@
�@
�@az@
�
�
�
�
�@
�@
�@
�@
�@|@
�@
�@
�@
�@
�@az@
� 
�&
�!@
�"@
�#@
�$@
�%@az@
�'@
�(@
�)@
�*@
�+@|@
�-
�B
�.
�5@
�/
�0@
�1@
�2@
�3@
�4@|@
�6
�<
�7@
�8@
�9@
�:@
�;@az@
�=@
�>@
�?@
�@@
�A@�@
�C
�P
�D
�J
�E@
�F@
�G@
�H@
�I@|@
�K@
�L@
�M@
�N@
�O@az@
�Q
�W
�R@
�S@
�T@
�U@
�V@|@
�X@
�Y@
�Z@
�[@
�\@az@
�^
��
�_
�z
�`
�m
�a
�g
�b@
�c@
�d@
�e@
�f@az@
�h@
�i@
�j@
�k@
�l@az@
�n
�t
�o@
�p@
�q@
�r@
�s@az@
�u@
�v@
�w@
�x@
�y@az@
�{
��
�|@
�}@
�~@
�@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@|@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�*
��
��
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��
�
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
�@
�@az@
�
�	
�@
�@
�@
�@
�@az@
�
@
�@
�@
�
@
�@az@
�
�
�
�
�@
�@
�@
�@
�@|@
�@
�@
�@
�@
�@az@
�
�$
�@
� @
�!@
�"@
�#@az@
�%@
�&@
�'@
�(@
�)@az@
�+
�V
�,
�A
�-
�4
�.@
�/@
�0@
�1@
�2@
�3@az@
�5
�;
�6@
�7@
�8@
�9@
�:@|@
�<@
�=@
�>@
�?@
�@@az@
�B
�O
�C
�I
�D@
�E@
�F@
�G@
�H@az@
�J@
�K@
�L@
�M@
�N@az@@
�P
�Q@
�R@
�S@
�T@
�U@az@
�W
�r
�X
�e
�Y
�_
�Z@
�[@
�\@
�]@
�^@az@
�`@
�a@
�b@
�c@
�d@az@
�f
�l
�g@
�h@
�i@
�j@
�k@az@
�m@
�n@
�o@
�p@
�q@|@
�s
��
�t
�z
�u@
�v@
�w@
�x@
�y@az@
�{@
�|@
�}@
�~@
�@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�3
��
�t
��
��
��
��
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@
��@
��@
��@
��@
��@|@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@
��@az@
��
�/
��
�
��
�
��
�
��@
��@
��@
��@
�@az@
�@
�@
�@
�@
�@az@
�
�
�	@
�
@
�@
�@
�
@az@
�@
�@
�@
�@
�@az@
�
�"
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
� @
�!@az@
�#
�)
�$@
�%@
�&@
�'@
�(@az@
�*@
�+@
�,@
�-@
�.@az@
�0
�?
�1
�8
�2@
�3@
�4@
�5@
�6@
�7@|@
�9@
�:@
�;@
�<@
�=@
�>@az@
�@
�m
�A
�g
�B@
�C@
�D@
�E@
�F@
�G@
�Haz
�Iaz
�Jaz
�Kaz
�Laz
�Maz
�Naz
�Oaz
�Paz
�Qaz
�Raz
�Saz
�Taz
�Uaz
�Vaz
�Waz
�Xaz
�Yaz
�Zaz
�[az
�\az
�]az
�^az
�_az
�`az
�aaz
�baz
�caz
�daz
�eazaz
�fw�az
�h@
�i@
�j@
�k@
�l@az@@
�n
�o@
�p@
�q@
�r@
�s@az@
�u
��
�v
��
�w
��
�x
��
�y
�
�z@
�{@
�|@
�}@
�~@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@az@@
��
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@
��@az@
��
�
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��@
��
��@
��@
��@
��@
��@az@@
��
��@
�@
�@
�@
�@|@
�
�
�
�
�
�
�@
�	@
�
@
�@
�@
�
@
�@
�@
�@`�@
�@
�@
�@
�@
�@|@@
�
�@
�@
�@
�@
�@az@
�
�,
� 
�&
�!@
�"@
�#@
�$@
�%@az@
�'@
�(@
�)@
�*@
�+@az@@
�-
�.@
�/@
�0@
�1@
�2@az@
�4
�	
�5
��
�6
�g
�7
�R
�8
�E
�9
�?
�:@
�;@
�<@
�=@
�>@az@
�@@
�A@
�B@
�C@
�D@az@
�F
�L
�G@
�H@
�I@
�J@
�K@az@
�M@
�N@
�O@
�P@
�Q@az@
�S
�Z
�T@
�U@
�V@
�W@
�X@
�Y@az@
�[
�a
�\@
�]@
�^@
�_@
�`@az@
�b@
�c@
�d@
�e@
�f@az@
�h
��
�i
�v
�j
�p
�k@
�l@
�m@
�n@
�o@az@
�q@
�r@
�s@
�t@
�u@|@
�w
�}
�x@
�y@
�z@
�{@
�|@az@
�~@
�@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@
��@az@
��
�
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@
��@
��@
�@
�@|@@
�
�@
�@
�@
�@
�@az@
�

��
�
�<
�
�'
�
�
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�!
�@
�@
�@
�@
� @az@
�"@
�#@
�$@
�%@
�&@az@
�(
�5
�)
�/
�*@
�+@
�,@
�-@
�.@az@
�0@
�1@
�2@
�3@
�4@�@@
�6
�7@
�8@
�9@
�:@
�;@az@
�=
�R
�>
�K
�?
�E
�@@
�A@
�B@
�C@
�D@az@
�F@
�G@
�H@
�I@
�J@az@@
�L
�M@
�N@
�O@
�P@
�Q@az@
�S
�d
�T
�^
�U@
�V@
�W@
�X@
�Y@
�Z@
�[@
�\@
�]@az@
�_@
�`@
�a@
�b@
�c@|@
�e
�{
�f@
�g@
�h@
�i@
�j@
�k@
�laz
�maz
�naz
�oazaz
�paz
�q
�raz
�sazaz
�t
�uazaz
�v
�wazaz
�xaz
�y
�zazazv�
�|@
�}@
�~@
�@
��@az@
��
��
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@�@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@|@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@�@
��
��
��@
��@
��@
��@
��@
��@
��@
��@
��
��
��
��
��
��
��
��@�
��
������;�d
���
���z��
��
���
���
��
n��
��
��
��
��
�-K��
������
��
���
���
��
��
���d�|��
��
��
��
��
��
��@���;�
�����
��@
��@�@
��@
��@
��@
��@
��@az@
��
�

��
�
��@
�@
�@
�@
�@|@
�@
�@
�@
�@
�	@az@
�@
�@
�
@
�@
�@
�@az@
�
�'
�
�
�
�L
�
��
�
�I
�
�2
�
�%
�
�
�@
�@
�@
�@
�@az@
� @
�!@
�"@
�#@
�$@|@
�&
�,
�'@
�(@
�)@
�*@
�+@az@
�-@
�.@
�/@
�0@
�1@az@
�3
�@
�4
�:
�5@
�6@
�7@
�8@
�9@az@
�;@
�<@
�=@
�>@
�?@az@
�A
�C
�B@az@
�D@
�E@
�F@
�G@
�H@az@
�J
�_
�K
�R
�L@
�M@
�N@
�O@
�P@
�Q@az@
�S
�Y
�T@
�U@
�V@
�W@
�X@az@
�Z@
�[@
�\@
�]@
�^@az@
�`
��
�a
��
�b@
�c@
�d@
�e@
�f@
�g@
�h
��
�iaz
�j
�{az
�kaz
�laz
�maz
�naz
�o
�paz
�qaz
�razaz
�s
�t
�x
�uaz
�v
�wazw�w�azaz
�yaz
�zazw�
�|az
�}
��
�~
��az
�az
��
��az
��az
��azaz
��
��az
��az
��azazw�az
��az
��
��az
��az
��azaz
��
��
��
��az
��azazv�az
��az
��azv�
��az
��az
��
��
��az
��az
��azaz
��
��
��
��az
��
��azv�v�azaz
��az
��azv�
��az
��az
��azaz
��
��
��
��az
��azazv�az
��az
��azv�az
��az
��
��az
��az
��azaz
��
��
��
��az
��az
��azaz
��
��azj
��
��azjaz
��az
��az
��azaz
��
��
��
��az
��
��azjjazaz
��az
��azj
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��
�
��@
��@
��@
�@
�@az@
�@
�@
�@
�@
�@az@
�	
�
�
@
�@
�@
�
@
�@az@
�@
�@
�@
�@
�@az@
�
�1
�
�$
�
�
�@
�@
�@
�@
�@az@
�@
� @
�!@
�"@
�#@az@
�%
�+
�&@
�'@
�(@
�)@
�*@az@
�,@
�-@
�.@
�/@
�0@az@
�2
�?
�3
�9
�4@
�5@
�6@
�7@
�8@�@
�:@
�;@
�<@
�=@
�>@az@
�@
�F
�A@
�B@
�C@
�D@
�E@az@
�G@
�H@
�I@
�J@
�K@az@
�M
��
�N
�
�O
�d
�P
�]
�Q
�W
�R@
�S@
�T@
�U@
�V@az@
�X@
�Y@
�Z@
�[@
�\@az@@
�^
�_@
�`@
�a@
�b@
�c@az@
�e
�r
�f
�l
�g@
�h@
�i@
�j@
�k@az@
�m@
�n@
�o@
�p@
�q@az@
�s
�y
�t@
�u@
�v@
�w@
�x@az@
�z@
�{@
�|@
�}@
�~@|@
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@@
��
��@
��@
��@
��@
��@az@
��
��
��
��
��
��@
��
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@@
��
��@
��@
��@
��@
��@az@
��
�
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
�@
�@az@
�
�	
�@
�@
�@
�@
�@az@
�
@
�@
�@
�
@
�@|@
�
��
�
�t
�
�C
�
�(
�
�
�@
�@
�@
�@
�@
�@az@
�
�"
�@
�@
�@
� @
�!@|@
�#@
�$@
�%@
�&@
�'@az@
�)
�6
�*
�0
�+@
�,@
�-@
�.@
�/@az@
�1@
�2@
�3@
�4@
�5@az@
�7
�=
�8@
�9@
�:@
�;@
�<@az@
�>@
�?@
�@@
�A@
�B@az@
�D
�Y
�E
�L@
�F
�G@
�H@
�I@
�J@
�K@az@
�M
�S
�N@
�O@
�P@
�Q@
�R@az@
�T@
�U@
�V@
�W@
�X@az@
�Z
�g
�[
�a
�\@
�]@
�^@
�_@
�`@az@
�b@
�c@
�d@
�e@
�f@az@
�h
�n
�i@
�j@
�k@
�l@
�m@az@
�o@
�p@
�q@
�r@
�s@az@
�u
��
�v
��
�w
��
�x
�~
�y@
�z@
�{@
�|@
�}@az@
�@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@|@
��
��@
��
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@
��@
��@
��@
��@az@@
��
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��
��
��@
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@�'@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��
�*
�
�
�az
�az
�az
�
�
�azaz
�
�az
�
�
az
�	��
�az
�
�
�
������
�
�D����
�az
�az
�az
�azaz
�w�azaz
�az
�az
�az
�az
�az
�
�az
� az
�!az
�"az
�#az
�$az
�%az
�&az
�'az
�(azaz
�)azv�
�+az
�,
��
�-
��
�.az
�/
�i
�0
�Z
�1
�P
�2az
�3
�Maz
�4
�5v�v�
�6v�
�7
�8v�v�
�9v�
�:
�;v�
�<v�v�
�=v�
�>v�
�?v�
�@
�Av�
�Bv�
�Cv�v�
�Dv�
�E
�Fv�
�Gv�
�Hv�
�Iv�
�Jv�
�Kv�
�Lv�azv�
�N
�Oazv�v�az
�Q
�T
�R
�Sazv�azv�
�Uaz
�V
�Wazv�
�Xaz
�Yazv�az
�[
�e
�\
�_
�]
�^azv�azv�
�`
�aazv�
�bv�v�
�c
�dv�v�
�faz
�gazaz
�hw�az
�j
�o
�kaz
�laz
�mazaz
�nw�az
�p
��
�q
��az
�r
�s
�z
�t
�w
�u
�v�����
�x
�y��D��
�{
�~
�|
�}��RF�
�
���SC�>�
��az
���
��az
����F�
��az
��azw�
��
��w�
���&b��
��az
��az
��azaz
��
��az
��az
��az
��az
��azaz
��az
��az
��az
��azaz
��
��az
��
��v�
��v�az
��azv�az
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@|@
��
��
��
��
��@az@
��@
��@
��@
��@
��@az@@
��
��@
��@
��@
��@
��@az@
��
�
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@@
��
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@�@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
�
�
�
�
�
�	
�@
�@
�@
�@
�@az@
�
@
�@
�@
�
@
�@az@@
�
�@
�@
�@
�@
�@az@
�
�$
�
�
�@
�@
�@
�@
�@az@
�@
� @
�!@
�"@
�#@|@@
�%
�&@az@
�(
�}
�)
��
�*
��
�+
�^
�,
�C
�-
�6
�.
�0
�/@az@
�1@
�2@
�3@
�4@
�5@az@
�7
�=
�8@
�9@
�:@
�;@
�<@az@
�>@
�?@
�@@
�A@
�B@az@
�D
�Q
�E
�K
�F@
�G@
�H@
�I@
�J@az@
�L@
�M@
�N@
�O@
�P@az@
�R
�X
�S@
�T@
�U@
�V@
�W@az@
�Y@
�Z@
�[@
�\@
�]@az@
�_
�t
�`
�g@
�a
�b@
�c@
�d@
�e@
�f@az@
�h
�n
�i@
�j@
�k@
�l@
�m@��@
�o@
�p@
�q@
�r@
�s@az@
�u
��
�v
�|
�w@
�x@
�y@
�z@
�{@az@
�}@
�~@
�@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�y
��
�^
��
�Q
��
�<
��@
��@
��
�)
��
�
��az
��az
��
�E
��az
��az
��az
��az
��az
��
�<
��az
��az
��
�
��
�?
��
��
��az
��az
��
���azaz�
��az
��az
��az
��az
��az
��az
��az
��
�$
��
��
��
��
��
��
��
��
��azaz
��az
��az
��
��azaz
��
��azazw�
��
��
��
��az
��
��azaz
��
��azaz
��azw�az
��
��azaz
��az
��az
��w�az
��azaz
��
��azaz
��
��azaz
��azw�az
��az
��az
��az
��az
��az
��
��az
��azazw�
��az
��
��
��
��az
��
��az
��azaz
��az
��az
��azw�az
��az
��
��azaz
��az
��
��azazw�az
��
��az
��az
��azaz
��az
��az
��azw�
��
�
��
�
��
�az
��
��azaz
��
��az
��az
��azaz
��w�azaz
�
�az
�az
�az
�azaz
�
�azw�az
�	azaz
�

�azaz
�
�
az
�az
�az
�azazw�
�
�
�az
�az
�azaz
�az
�az
�
�az
�azazw�az
�az
�
�azaz
�
� az
�!azaz
�"
�#azw�az
�%az
�&az
�'
�6
�(az
�)az
�*
�0
�+az
�,azaz
�-
�.az
�/azw�azaz
�1
�2az
�3az
�4az
�5azw�azaz
�7
�8azaz
�9az
�:
�;az
�<az
�=azaz
�>w�az
�@
��
�Aaz
�Baz
�Caz
�Daz
�Eaz
�Faz
�G
��
�H
��
�I
�o
�J
�e
�K
�\
�L
�T
�Maz
�Naz
�Oazaz
�P
�Qaz
�Razaz
�Sazw�az
�U
�Vazaz
�W
�Xazaz
�Y
�Zaz
�[azw�azaz
�]az
�^az
�_az
�`
�aazaz
�b
�cazaz
�dw�az
�faz
�gazaz
�h
�iaz
�jaz
�kaz
�laz
�mazaz
�nw�az
�p
�zaz
�qaz
�raz
�saz
�taz
�u
�vaz
�wazaz
�xaz
�yazw�az
�{az
�|az
�}az
�~az
�az
��az
��
��az
��azazw�
��
��
��
��
��az
��az
��azaz
��
��az
��azaz
��az
��az
��w�azaz
��az
��
��az
��az
��az
��azaz
��az
��
��azw�azaz
��
��az
��az
��az
��az
��az
��az
��az
��az
��azazw�
��az
��azaz
��
��az
��az
��az
��az
��azaz
��
��azaz
��az
��azw�
��az
��az
��az
��az�
���
���
��
��
�%�
��
��
��
��
��
��
���
��
��
��
���
����
���
��
�����S
����
��
���
���
�����S
����
��
���
����
��
���
����S�
��
��
��
���
��
����
��
��
��
����
���S�
���
����S�
���
���
���
����
���
���S�
��
���
���
���
��
���
���
�����S
����
���
��
����
���
���S�
��
�
�
��
��
�
��
�
���
����
���
��
����S��
�
��
���
�
����S�
�
��
�	�
�
�
���
���S�
�
�
��
��
��
��
�
���
��S�
��
�
��
�
���
�
����S�
�
�
�"
� ��
�!�S�
�#��
�$�S�
�&
��
�'
�_
�(
�F
�)
�7�
�*
�+
�1
�,�
�-��
�.�
�/
�0��S��
�2
�3��
�4�
�5
�6���S
�8
�?�
�9�
�:�
�;
�<��
�=
�>��S��
�@�
�A�
�B�
�C
�D��
�E�S��
�G
�H
�X
�I�
�J
�O
�K�
�L��
�M�
�N��S
�P
�T�
�Q
�R��
�S��S
�U�
�V�
�W��S�
�Y�
�Z�
�[��
�\
�]��
�^��S
�`
��
�a
�{
�b
�o
�c
�i
�d��
�e
�f��
�g
�h��S�
�j�
�k�
�l�
�m�
�n��S�
�p�
�q
�v�
�r�
�s
�t��
�u��S
�w��
�x�
�y�
�z�S�
�|
��
�}
��
�~
��
�
��
���
����
����S�
��
����
���S��
��
����
��
����S��
���
���
���
��
�����S
��
���
��
���
���
����
����S
����
���
��
����
����S
��
��
��
��
��
���
��
���
���
����
����S�
���
��
���
���
�����S
����
���
��
����
���
����S
��
���
��
��
���
��
���
����
����S
���
���
����
����S
��
��
���
����
��
����
����S
��
��
���
��
��
���
����S�
����
���S��
���
��
����
���S�
��
�
��
�

��
�
��
��
��
��
��
��
���
����
��
�����S
����
���
���
����S
����
���
��
���
����S�
��
���
���
��
����
��
�����S
��
���
��
��
���
��
�����S
����
���S�
���
����
��
��S�
��
���
�
��
��
��
�	��S�
���
�
�
�
���
�
��
���
��S�
���
��
��
�
���
��
�
��
���S�
�az
�az
� az
�!az
�"az
�#azaz
�$az
�%az
�&az
�'az
�(az
�)
�*
�3az
�+az
�,az
�-az
�.
�/azaz
�0
�1az
�2azw�az
�4az
�5az
�6az
�7az
�8azaz
�9
�:az
�;azazw�az
�=
�>az
�?az
�@az
�Aaz
�Baz
�Caz
�Daz�az
�F
��
�Gaz
�H
�taz
�I
�J
�T
�Kazaz
�Laz
�M
�Naz
�Oaz
�Paz
�Qaz
�Razaz
�Saz�

�Uazaz
�V
�Wazaz
�X
�Yazaz
�Z
�[azaz
�\az
�]
�^azkX
�_kX
�`
�a
�f
�b
�ekX
�c
�db�kXb�b�gC
�g
�m
�h
�jgC
�igCv�
�k
�lw�w*�"wc
�n
�q
�o
�p��v�gQw�
�r
�s�wubw
�uaz
�vaz
�waz
�xaz
�yaz
�zaz
�{az
�|azaz
�}
�~azaz
�az
��az
��az
��az
��az
��
��
��az
��v�
��v�az
��v�
��v�azv�
���
��
���
��
��
���
��
��
���
���
���
���
���
���
��
����w*�
��
����
���
��
���
����
��
���
��
��
��
��
��
��b�gC
��
��kXgQ
��
��w�b�ubwU
��
��
��
��
��w�?v�
��
��w*�M�"b�
��
��
��
���v��iwc
��b�kXb�
��
��
��
��
��
��b�
��b���
��v�v�v�
��
��
��
��v���[gQ
��gCw�wU
��
��
��
��gC
��
��
��wU��w
��
��
��gCwub
��
���w*<a�
��
��
��v�
��
���M�kXb�
��
��
��
���[�gQRT
��
���-��ubw
���
����
���
���
��
���
����
��
���az��
��
���
���
���
���
���
����
��
����
��
���
���
��az
��
�
��az
��az
��az
��az
��azaz
��az
��
��azaz
��az
��az
��
�az
�azw�az
�azaz
�
�az
�az
�azaz
�
�	az
�
azaz
�
�az
�
azaz
�
�azazw�
�az
�az
�az
�az
�az
�az
�az
�az
�azaz
�az
�az
�
�azaz
�
�az
� az
�!azaz
�"v�
�#v�
�$v�
�%v�
�&
�'v�
�(v�v�azaz
�*az
�+az
�,az
�-
�.az
�/az
�0az
�1azaz
�2
�3azaz
�4az
�5
�6azaz
�7
�8azaz
�9
�:azaz
�;az�
�=@
�>@
�?az
�@az
�Aaz
�B
�L
�C
�Faz
�Daz
�Emj
�G
�J
�H
�Iv�w�gCw�az
�Kw�w�
�Maz
�Naz
�O
�Pb�jgCt�
�R
�X
�S@
�T@
�U@
�V@
�W@az@
�Y@
�Z@
�[@
�\@
�]@az@
�_
�l
�`
�f
�a@
�b@
�c@
�d@
�e@az@
�g@
�h@
�i@
�j@
�k@az@
�m
�s
�n@
�o@
�p@
�q@
�r@az@
�t@
�u@
�v@
�w@
�x@az@
�z
��
�{
��
�|
��
�}@
�~@
�@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@|@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��
��
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@|@
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@@
��
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
�
�
�
�
�@
�@
�@
�@
�@|@
�@
�	@
�
@
�@
�@|@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�R
�
�7
�
�*
�
�$
�@
� @
�!@
�"@
�#@az@
�%@
�&@
�'@
�(@
�)@az@
�+
�1
�,@
�-@
�.@
�/@
�0@az@
�2@
�3@
�4@
�5@
�6@az@
�8
�E
�9
�?
�:@
�;@
�<@
�=@
�>@az@
�@@
�A@
�B@
�C@
�D@az@
�F
�L
�G@
�H@
�I@
�J@
�K@az@
�M@
�N@
�O@
�P@
�Q@az@
�S
�b
�T
�[
�U@
�V@
�W@
�X@
�Y@
�Z@az@@
�\
�]@
�^@
�_@
�`@
�a@az@
�c
�p
�d
�j
�e@
�f@
�g@
�h@
�i@v�@
�k@
�l@
�m@
�n@
�o@az@
�q
�w
�r@
�s@
�t@
�u@
�v@az@
�x@
�y@
�z@
�{@
�|@|@
�~
�O
�
��
��
��
��
��
��
��
��@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��@
��
��@
��@
��@
��@
��@�@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��
��
��
��
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@|@
��
�
��
�
��@
��@
��@
��@
�@az@
�@
�@
�@
�@
�@az@
�
�
�	@
�
@
�@
�@
�
@az@
�@
�@
�@
�@
�@az@
�
�4
�
�'
�
�!
�@
�@
�@
�@
�@
�@
�@
�@
� @az@
�"@
�#@
�$@
�%@
�&@|@
�(
�.
�)@
�*@
�+@
�,@
�-@az@
�/@
�0@
�1@
�2@
�3@az@
�5
�B
�6
�<
�7@
�8@
�9@
�:@
�;@az@
�=@
�>@
�?@
�@@
�A@|@
�C
�I
�D@
�E@
�F@
�G@
�H@az@
�J@
�K@
�L@
�M@
�N@az@
�P
��
�Q
��
�R
�g
�S
�Z@
�T
�U@
�V@
�W@
�X@
�Y@az@
�[
�a
�\@
�]@
�^@
�_@
�`@az@
�b@
�c@
�d@
�e@
�f@az@
�h
��
�i
�o
�j@
�k@
�l@
�m@
�n@az@
�p@
�q@
�r@
�s@
�t@
�u@
�vaz
�waz
�xaz
�yaz
�zaz
�{az
�|az
�}az
�~az
�az
��az
��az
��az
��az
��azazgC
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@@
��
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��
�

��
�
��@
�@
�@
�@
�@az@
�@
�@
�@
�@
�	@|@
�
�
�@
�
@
�@
�@
�@|@
�@
�@
�@
�@
�@az@
�
�@
�
�@
�@
�@
�@
�@f@
� 
�&
�!@
�"@
�#@
�$@
�%@az@
�'@
�(@
�)@
�*@
�+@az@
�-
�c
�.
��
�/
�
�0
��
�1
��
�2
�g
�3
�R
�4
�A
�5
�;
�6@
�7@
�8@
�9@
�:@az@
�<@
�=@
�>@
�?@
�@@|@
�B
�L
�C@
�D@
�E@
�F@
�G@
�H@
�I@
�J@
�K@az@
�M@
�N@
�O@
�P@
�Q@az@
�S
�`
�T
�Z
�U@
�V@
�W@
�X@
�Y@|@
�[@
�\@
�]@
�^@
�_@az@@
�a
�b@
�c@
�d@
�e@
�f@az@
�h
�}
�i
�v
�j
�p
�k@
�l@
�m@
�n@
�o@az@
�q@
�r@
�s@
�t@
�u@az@@
�w
�x@
�y@
�z@
�{@
�|@az@
�~
��
�
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@@
��
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��
��
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@|@
��
��
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@az@
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@az@
��
�i
��
�2
��
�
��
�

��
�
��@
��@
��@
��@
��@az@
�@
�@
�@
�@
�@
�@
�|
�|
�	||�
�
�
�@
�
@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�%
�
�
�@
�@
�@
�@
�@az@
� @
�!@
�"@
�#@
�$@M@
�&
�,
�'@
�(@
�)@
�*@
�+@az@
�-@
�.@
�/@
�0@
�1@az@
�3
�N
�4
�A
�5
�;
�6@
�7@
�8@
�9@
�:@az@
�<@
�=@
�>@
�?@
�@@az@
�B
�H
�C@
�D@
�E@
�F@
�G@az@
�I@
�J@
�K@
�L@
�M@az@
�O
�\
�P
�V
�Q@
�R@
�S@
�T@
�U@az@
�W@
�X@
�Y@
�Z@
�[@|@
�]
�c
�^@
�_@
�`@
�a@
�b@az@
�d@
�e@
�f@
�g@
�h@az@
�j
��
�k
��
�l
�y
�m
�s
�n@
�o@
�p@
�q@
�r@az@
�t@
�u@
�v@
�w@
�x@az@
�z
��
�{@
�|@
�}@
�~@
�@|@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@
��@
��|
��|
��|
��|
��||
��
��
��
��|
��|
��|
��|
��|
��|
��||
��|
��
��||
��|
��|
��|
��|
��|
��|
��|
��
��|
��|
��||
��|
��|
��|@
��|
��||
��|
��
��|
��|
��|
��||
��
��||
��
��|
��|
��|
��|
��||
��
��||
��
��||
��|
��|
��
��||@
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@@
��
��@
��@
��@
��@
��@az@
��
��@
��
��@
��@
��@
��@
��@|@
��
��
��@
��@
��@
��@
��@az@
�@
�@
�@
�@
�@az@
�
��
�
�v
�
�?
�	
�$
�

�
�
�
�@
�
@
�@
�@
�@|@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@az@
�@
� @
�!@
�"@
�#@az@
�%
�2
�&
�,
�'@
�(@
�)@
�*@
�+@az@
�-@
�.@
�/@
�0@
�1@az@
�3
�9
�4@
�5@
�6@
�7@
�8@az@
�:@
�;@
�<@
�=@
�>@az@
�@
�[
�A
�N
�B
�H
�C@
�D@
�E@
�F@
�G@az@
�I@
�J@
�K@
�L@
�M@az@
�O
�U
�P@
�Q@
�R@
�S@
�T@az@
�V@
�W@
�X@
�Y@
�Z@az@
�\
�i
�]
�c
�^@
�_@
�`@
�a@
�b@|@
�d@
�e@
�f@
�g@
�h@|@
�j
�p
�k@
�l@
�m@
�n@
�o@az@
�q@
�r@
�s@
�t@
�u@az@
�w
��
�x
��
�y
��
�z
��
�{@
�|@
�}@
�~@
�@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�I
��
�
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@|@
��
�
��@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�	@
�
@
�@az@
�
@
�@
�@
�@
�@az@
�
�.
�
�!
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
� @az@
�"
�(
�#@
�$@
�%@
�&@
�'@az@
�)@
�*@
�+@
�,@
�-@az@
�/
�<
�0
�6
�1@
�2@
�3@
�4@
�5@az@
�7@
�8@
�9@
�:@
�;@az@
�=
�C
�>@
�?@
�@@
�A@
�B@az@
�D@
�E@
�F@
�G@
�H@az@
�J
��
�K
�f
�L
�Y
�M
�S
�N@
�O@
�P@
�Q@
�R@az@
�T@
�U@
�V@
�W@
�X@az@
�Z
�`
�[@
�\@
�]@
�^@
�_@az@
�a@
�b@
�c@
�d@
�e@az@
�g
�n
�h@
�i@
�j@
�k@
�l@
�m@az@
�o
��
�p@
�q@
�r@
�s@
�t@
�u@az
�v
�waz
�xaz
�yaz
�zaz
�{az
�|az
�}az
�~
��
�
��
��
��
��
��
��az
��az
��azaz�K
��az
��az
��azaz�K
��
��
��az
��az
��azaz�K
��az
��az
��azaz�K
��az
��az
��az
��az
��azaz�K
��az
��az
��az
��az
��az
��azaz�K
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@
��@��
����
��
����
����
����
����
����
����
����
����
����
����
����
����
��������
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�q
��
�]
��
��
��
�[
��
�
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@@
�
�@
�@
�@
�@
�@az@
�
�N@
�
�	@
�
@
�az
�az
�
az
�
�.
�az
�azaz
�
�az
�az
�az
�azaz
�az
�
�az
�az
�az
�azaz
�az
�
�az
�azaz
� 
�!azaz
�"
�#azaz
�$
�%az
�&az
�'az
�(az
�)azaz
�*az
�+
�,az
�-azw�az
�/az
�0azaz
�1
�2az
�3az
�4az
�5azaz
�6
�7az
�8azaz
�9
�:az
�;azaz
�<az
�=az
�>
�?azaz
�@az
�A
�Bazaz
�C
�Daz
�Eazaz
�F
�Gaz
�Haz
�Iazaz
�J
�Kazaz
�Laz
�Maz@
�O
�U
�P@
�Q@
�R@
�S@
�T@az@
�V@
�W@
�X@
�Y@
�Z@az@
�\
�w
�]
�j
�^
�d
�_@
�`@
�a@
�b@
�c@�'@
�e@
�f@
�g@
�h@
�i@az@
�k
�q
�l@
�m@
�n@
�o@
�p@az@
�r@
�s@
�t@
�u@
�v@az@
�x
��
�y
�
�z@
�{@
�|@
�}@
�~@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��
��
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@|@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��
�

��
�
��@
��@
��@
��@
��@az
��az
��
��azaz
��
��az
��azaz
��az
��az
��
��azaz
��
��
��
��azaz
��az
��az
��
��az
��azaz
��az
��
��az
��az
��azaz
��az
��
��az
��az
��az
��az
��az
��az
��az@az
��az
��az
��az
��az
��azaz
��az
��
��azaz
��
��az
��az
��az
��az
��az
��az
��az
�az
�az
�az
�az@az
�@
�@
�@
�@
�	@az@
�
�
�@
�
@
�@
�@
�@|@
�@
�@
�@
�@
�@az@
�
�%
�
�
�@
�@
�@
�@
�@az@
� @
�!@
�"@
�#@
�$@az@
�&
�,
�'@
�(@
�)@
�*@
�+@az@
�-@
�.@
�/@
�0@
�1@
�2@
�3az
�4az
�5az
�6az
�7az
�8az
�9az
�:az
�;az
�<az
�=
�W
�>
�H
�?
�Caz
�@
�A
�BkXgCgCb�
�D
�F
�Eazv�maz
�Gazv�
�I
�P
�J
�M
�K
�Lv�v�v�t�
�N
�Oazmazv�
�Q
�T
�R
�SjwwUgQ
�U
�Vu�t�v�w�
�Xaz
�Yaz
�Zaz
�[
�\w�v�v�u�
�^
�
�_
��
�`
�w
�a
�j
�b
�h
�c@
�d@
�e@
�f@
�g@v�@
�i@az@
�k
�q
�l@
�m@
�n@
�o@
�p@az@
�r@
�s@
�t@
�u@
�v@az@
�x
��
�y
�
�z@
�{@
�|@
�}@
�~@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@
��@
��
��
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��azaz
��
��az
��azazw�az
��
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��azaz
��az
��az
��
��az
��az
��az
��az
��azaz
��az
��
��azaz
��
��azaz
��az
��
��az
��azaz
��azw�
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@az@
��
�
��@
��@
��@
�@
�@az@
�@
�@
�@
�@
�@az@
�	
�:
�

�
�
�@
�
�
@
�@
�@
�@
�@|@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
� 
�-
�!
�'
�"@
�#@
�$@
�%@
�&@az@
�(@
�)@
�*@
�+@
�,@az@
�.
�4
�/@
�0@
�1@
�2@
�3@az@
�5@
�6@
�7@
�8@
�9@�?@
�;
�V
�<
�I
�=
�C
�>@
�?@
�@@
�A@
�B@az@
�D@
�E@
�F@
�G@
�H@az@
�J
�P
�K@
�L@
�M@
�N@
�O@az@
�Q@
�R@
�S@
�T@
�U@az@
�W
�d
�X
�^
�Y@
�Z@
�[@
�\@
�]@az@
�_@
�`@
�a@
�b@
�c@az@
�e
�k
�f@
�g@
�h@
�i@
�j@az@
�l@
�m@
�n@
�o@
�p@az@
�r
��
�s
�/
�t
��
�u
��
�v
��
�w
�}
�x@
�y@
�z@
�{@
�|@|@
�~@
�@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@
��@
��|
��|
��|
��|
��|
��
��
��||
��
��|
��|
��||
��
��||
��|
��
��||
��|
��|
��
��||
��
��|
��||
��
��|
��|
��|
��||
��
��||
��|@
��
��|
��
��|
��||
��|
��|
��|
��
��||
��
��||
��
��||
��
��|
��|
��||
��
��|
��||
��
��|
��||
��|
��@||
��
��|
��|
��||
��|
��|
��
��|
��||
��
��||
��|
��|
��|
��
��||
��|
��|
��
��|
��||
��|
��|
��|@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
�
�
�
�
�@
�@
�@
�@
�@az@
�@
�	@
�
@
�@
�@az@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�"@
�
�@
�@
�@
� @
�!@az@
�#
�)
�$@
�%@
�&@
�'@
�(@az@
�*@
�+@
�,@
�-@
�.@az@
�0
�a
�1
�L
�2
�?
�3
�9
�4@
�5@
�6@
�7@
�8@az@
�:@
�;@
�<@
�=@
�>@az@
�@
�F
�A@
�B@
�C@
�D@
�E@|@
�G@
�H@
�I@
�J@
�K@az@
�M
�T
�N@
�O@
�P@
�Q@
�R@
�S@az@
�U
�[
�V@
�W@
�X@
�Y@
�Z@az@
�\@
�]@
�^@
�_@
�`@az@
�b
��
�c
�p
�d
�j
�e@
�f@
�g@
�h@
�i@|@
�k@
�l@
�m@
�n@
�o@az@
�q
�w
�r@
�s@
�t@
�u@
�v@az@
�x@
�y@
�z@
�{@
�|@
�}@
�~@
�@
��@az@
��
��@
��
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��
��
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@
��@�@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@|@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��@
��@
��@
��@
��@az@
�@
�@
�@
�@
�@az@
�
�8
�
�#
�	
�
�

�
�@
�@
�
@
�@
�@az@
�@
�@
�@
�@
�@|@
�
�
�@
�@
�@
�@
�@az@
�@
�@
� @
�!@
�"@az@
�$
�+@
�%
�&@
�'@
�(@
�)@
�*@az@
�,
�2
�-@
�.@
�/@
�0@
�1@az@
�3@
�4@
�5@
�6@
�7@az@
�9
�N
�:
�A@
�;
�<@
�=@
�>@
�?@
�@@az@
�B
�H
�C@
�D@
�E@
�F@
�G@az@
�I@
�J@
�K@
�L@
�M@az@
�O
�V@
�P
�Q@
�R@
�S@
�T@
�U@az@
�W
�]
�X@
�Y@
�Z@
�[@
�\@az@
�^@
�_@
�`@
�a@
�b@az@
�d
��
�e
�
�f
�?
�g
��
�h
��
�i
��
�j
�w
�k
�q
�l@
�m@
�n@
�o@
�p@az@
�r@
�s@
�t@
�u@
�v@az@
�x
�~
�y@
�z@
�{@
�|@
�}@��@
�@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
�@az@
�
�
�@
�@
�@
�@
�@|@
�	@
�
@
�@
�@
�
@az@
�
�$
�
�
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�@
�@
� @
�!@
�"@
�#@az@
�%
�2
�&
�,
�'@
�(@
�)@
�*@
�+@|@
�-@
�.@
�/@
�0@
�1@az@
�3
�9
�4@
�5@
�6@
�7@
�8@az@
�:@
�;@
�<@
�=@
�>@az@
�@
��
�A
�r
�B
�]
�C
�P
�D
�J
�E@
�F@
�G@
�H@
�I@az@
�K@
�L@
�M@
�N@
�O@az@
�Q
�W
�R@
�S@
�T@
�U@
�V@az@
�X@
�Y@
�Z@
�[@
�\@az@
�^
�k
�_
�e
�`@
�a@
�b@
�c@
�d@az@
�f@
�g@
�h@
�i@
�j@az@@
�l
�m@
�n@
�o@
�p@
�q@az@
�s
��
�t
��
�u
�{
�v@
�w@
�x@
�y@
�z@az@
�|@
�}@
�~@
�@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@|@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@az@
�
�
�@
�@
�@
�@
�@|@
�@
�@
�	@
�
@
�@az@
�
��
�
�m
�
�B
�
�'
�
�
�
�
�@az@
�@
�@
�@
�@
�@|@
�
�!
�@
�@
�@
�@
� @az@
�"@
�#@
�$@
�%@
�&@az@
�(
�5
�)
�/
�*@
�+@
�,@
�-@
�.@az@
�0@
�1@
�2@
�3@
�4@az@
�6
�<
�7@
�8@
�9@
�:@
�;@az@
�=@
�>@
�?@
�@@
�A@az@
�C
�X
�D
�K@
�E
�F@
�G@
�H@
�I@
�J@|@
�L
�R
�M@
�N@
�O@
�P@
�Q@az@
�S@
�T@
�U@
�V@
�W@az@
�Y
�f
�Z
�`
�[@
�\@
�]@
�^@
�_@az@
�a@
�b@
�c@
�d@
�e@az@@
�g
�h@
�i@
�j@
�k@
�l@az@
�n
��
�o
��
�p
�w@
�q
�r@
�s@
�t@
�u@
�v@az@
�x
�~
�y@
�z@
�{@
�|@
�}@az@
�@
��@
��@
��@
��@az@
��
��@
��
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@|@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@
��@az@
��
�:
��
�
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@|@
��
��
��@
��@
��@
��@
��@�c@
��@
��@
��@
��@
��@|@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
�@
�@
�@az@
�
�
�
�
�
�
�@
�@
�	@
�
@
�@az@
�
@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
� 
�-
�!
�'
�"@
�#@
�$@
�%@
�&@az@
�(@
�)@
�*@
�+@
�,@�@
�.
�4
�/@
�0@
�1@
�2@
�3@az@
�5@
�6@
�7@
�8@
�9@az@
�;
��
�<
�W
�=
�J
�>
�D
�?@
�@@
�A@
�B@
�C@az@
�E@
�F@
�G@
�H@
�I@az@
�K
�Q
�L@
�M@
�N@
�O@
�P@az@
�R@
�S@
�T@
�U@
�V@az@
�X
��
�Y
�_
�Z@
�[@
�\@
�]@
�^@az@
�`@
�a@
�b@
�c@
�d@
�e@
�f
�m
�gaz
�haz
�iaz
�jaz
�kaz
�laz�az
�naz
�oaz
�p
��
�q
��
�r
�xaz
�s
�taz
�uazaz
�vaz
�wmaz
�y
�~az
�z
�{azaz
�|az
�}azv�az
�
��az
��az
��azubaz
��
��
��az
��
��az
��
��az
��azt�azaz
��
��az
��azazv�
��azaz
��
��az
��az
��azmaz
��az
��az
��az
��az
��az
��az
��az
��az
��azaz
��
��
��azwv�az
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@|@
��
��
��@
��@
��@
��@
��@�@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@
��@az@@
��
��@
��@
��@
��@
��@az@
��
�
��
�!
��
�t
��
�C
��
�.
��
�'
��
�!
��@
��@
��@
��@
��@
��@
��az
��az
��azaz
��
��
�az
��
��azaz
��
��az
��az
��az
��azaz
��
��azaz
��
��azaz
��az
��
��azaz
��az
��
��az
��az
��az
��azaz
�az
�az
�
�az
�az
�az@az
�az
�azaz
�	
�
az
�az
�az
�
az
�azaz
�az
�az
�az
�az
�
�az
�az
�azaz
�
�az
�azaz
�
�azaz
�
�azaz
�
�azaz
� @az
�"@
�#@
�$@
�%@
�&@az@@
�(
�)@
�*@
�+@
�,@
�-@az@
�/
�<
�0
�6
�1@
�2@
�3@
�4@
�5@az@
�7@
�8@
�9@
�:@
�;@az@
�=@
�>@
�?@
�@@
�A@
�B@az@
�D
�Y
�E
�R
�F
�L
�G@
�H@
�I@
�J@
�K@|@
�M@
�N@
�O@
�P@
�Q@az@@
�S
�T@
�U@
�V@
�W@
�X@|@
�Z
�g
�[
�a
�\@
�]@
�^@
�_@
�`@az@
�b@
�c@
�d@
�e@
�f@az@
�h
�n
�i@
�j@
�k@
�l@
�m@az@
�o@
�p@
�q@
�r@
�s@az@
�u
��
�v
��
�w
��
�x
�~
�y@
�z@
�{@
�|@
�}@az@
�@
��@
��@
��@
��@
��@
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��
��
��
��
��
��
��
��
��
��azb�gQw
��
��wUazv�wc
��az
��azgCkX
��
��
��
��
��
���^wv��
��
��az�Kt�az
��az
��azv�u�
��az
��az
��az
��azaz�i
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@az@
��
�
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@
��@
��
�
��az
�az
�az
�azaz
�az
�azb�az
�az
�az
�az
�	az
�
az
�az
�
�
az
�az
�az
�azaz
�
�az
�azb�az
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
� @az@
�"
�y
�#
�H
�$
�3
�%
�,@
�&
�'@
�(@
�)@
�*@
�+@|@@
�-
�.@
�/@
�0@
�1@
�2@az@
�4
�A
�5
�;
�6@
�7@
�8@
�9@
�:@az@
�<@
�=@
�>@
�?@
�@@az@@
�B
�C@
�D@
�E@
�F@
�G@az@
�I
�d
�J
�W
�K
�Q
�L@
�M@
�N@
�O@
�P@az@
�R@
�S@
�T@
�U@
�V@az@
�X
�^
�Y@
�Z@
�[@
�\@
�]@az@
�_@
�`@
�a@
�b@
�c@az@
�e
�r
�f
�l
�g@
�h@
�i@
�j@
�k@az@
�m@
�n@
�o@
�p@
�q@az@@
�s
�t@
�u@
�v@
�w@
�x@az@
�z
��
�{
��
�|
��
�}
��
�~@
�@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@|@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��@
��@
��@
��@
��@
��@
��az
��az
��az
��az
��az
��az
��
�	
��az
��az
��az
��
��
��
��
��az
��
��
��
��azv�w��
��az����
��az
��
��
��
��azv�w��
��az����
��
�
��az
��
�
��
��azv�w��
�az����
�az
�
�
�
�azv�w��
�az����az
�

�
�
�
�
v�w����
�az��az
�@
�@
�@
�@
�@az@
�
�N
�
��
�
�P
�
�5
�
�(
�
�"
�@
�@
�@
� @
�!@az@
�#@
�$@
�%@
�&@
�'@az@
�)
�/
�*@
�+@
�,@
�-@
�.@az@
�0@
�1@
�2@
�3@
�4@az@
�6
�C
�7
�=
�8@
�9@
�:@
�;@
�<@az@
�>@
�?@
�@@
�A@
�B@|@
�D
�J
�E@
�F@
�G@
�H@
�I@az@
�K@
�L@
�M@
�N@
�O@az@
�Q
�l
�R
�_
�S
�Y
�T@
�U@
�V@
�W@
�X@az@
�Z@
�[@
�\@
�]@
�^@az@
�`
�f
�a@
�b@
�c@
�d@
�e@az@
�g@
�h@
�i@
�j@
�k@az@
�m
�z
�n
�t
�o@
�p@
�q@
�r@
�s@az@
�u@
�v@
�w@
�x@
�y@az@
�{
��
�|@
�}@
�~@
�@
��@az@
��@
��@
��@
��@
��@az@
��
�
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@
��@
��||
��
��
��|
��
��||
��|
���|
��||
��
��|
��||
��
��||
��|
��
��||
��
��|
��||�
��
��
��@
��@
��@
��@az@
��@
��@
��@
��@
��@|@
��
�
��
�
��@
��@
��@
��@
��@
��@
��az
��az
��az
��az
��az
��
��
��
��az
��
��az
��az
��
��az
��
��az
��azaz
��v�az
��az
��azaz
��
��azw�az
��
��
��az
��az
��az
��az
��az
��az
��azazj
��az
��az
��az
��az
��az
��
��
��
��azgCv�b�
��
��b�gQkXgC
��
�
��
��
��az
��az
��az
��az
��
��
��
��
��
��azt�v�waz
���1u�
��az
��azu�v�
��az
��az
��az
��az
��az
�az
�
�azmmaz
�az
�az
�az
�az
�az
�	az
�
az
�azazv�
�
@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
� 
�/
�!
�(@
�"
�#@
�$@
�%@
�&@
�'@az@@
�)
�*@
�+@
�,@
�-@
�.@|@
�0
�=
�1
�7
�2@
�3@
�4@
�5@
�6@az@
�8@
�9@
�:@
�;@
�<@az@
�>
�H
�?@
�@@
�A@
�B@
�C@
�D@
�E@
�F@
�G@az@
�I@
�J@
�K@
�L@
�M@az@
�O
��
�P
��
�Q
�l
�R
�_
�S
�Y
�T@
�U@
�V@
�W@
�X@az@
�Z@
�[@
�\@
�]@
�^@az@
�`
�f
�a@
�b@
�c@
�d@
�e@az@
�g@
�h@
�i@
�j@
�k@az@
�m
�t@
�n
�o@
�p@
�q@
�r@
�s@az@
�u
�{
�v@
�w@
�x@
�y@
�z@az@
�|@
�}@
�~@
�@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��
��@
��
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��
�
��
��
��@
��@
��@
��@
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
�@az@
�
�
�@
�@
�@
�@
�@az@
�	@
�
@
�@
�@
�
@az@
�
�
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�#
�@
�@
� @
�!@
�"@az@
�$@
�%@
�&@
�'@
�(@|@
�*
�?
�+
�
�,
��
�-
��
�.
�B
�/
�Y
�0
��
�1
��
�2
��
�3
��@
�4
�5@
�6@
�7@
�8@
�9@
�:@
�;
��
�<az
�=az
�>
��
�?
�Q
�@
��
�A
��
�B
�}
�C
�V
�D
�L
�Eazaz
�F
�Gaz
�H
�J
�It�azt�
�Kazt�azgC
�MgC
�N
�O
�T
�P
�R
�QwgCw
�SwwgC
�UgCwgC
�W
�z
�X
�g
�Y
�a
�Z
�]az
�[
�\wazw
�^
�`
�_wwazwazaz
�b
�c
�e
�dkXgCkX
�fkXkXgC
�h
�q
�i
�n
�j
�lkX
�kgCkXkX
�mkXgCkX
�o
�pkXgCkX
�r
�w
�s
�u
�tkXkXgCkX
�vgCkX
�xkXkX
�ykXgCv�
�{
�|w�azw�
�~
��
�
��
��
��w�
��
��
��
��
��
��w�mw�
��w�w�m
��
��w�
��mw�w�
��w�m
��
��
��
��az
��
��azmaz
��
��
��azazmaz
��maz
��az
��azaz
��azmazw�
��
��wv�
��
��
��
��
��ubv�
��v�
��ub�
���ub
��ub
���ub
��
���
��
��ub
��ubb�ubub
��
��ub
��ububb�
��
��
��
��
��
��
��
��
��
��ub
��
��gQgQ
��b�gQ
��
��
��gQ
��gQ
��gQgQ
��
��gQgQ
��
��gQgQ
��gQ
��gQ
��
��gQ
��gQgQ
��
��gQgQ
��
��gQgQ
��gQ
��gQ@
��gQgQ
��gQb�
��
��gQ
��gQ
��
���"b��"�"
���"
��
���"�"b�
��wc
��
���"
���"
���"
��b�wcwc
��wc
��wc
��wcb�
��
��
��
��
��
��w�wcw�w*
��
��
��w*w�w*
��w�w*w�w�
��w�
��w�
��
��w�
��w�b�w�b�v�
��
�v�
��
��
��v�
��v�
��v�
��v�
��v�
��v�
��v�t�
��
�
�
�
�S4t�
�t�
�t�
�t�v�
�
�	
�
�v�b�v�gC
�
ww��
�
�
�
az
�azkXv�az
���
�����
�
�8
�
�#
�
�
�w
�����
�����
�
�w
�
�
�wb�wgC
�
�!
� wwS�
�"wkXv�
�$
�-
�%
�(w
�&S�
�'S���
�)
�+��
�*��WW
�,W�y
�.
�3
�/
�1�y
�0�y����
�2����
�4
�6��
�5��v�
�7wwm
�9
�F
�:
�>
�;w
�<w
�=w�w
�?
�C
�@
�Bw
�Aw��J�
�D
�EJ��y
�Gw
�H
�K
�I
�J�yS�S��
�L
�N�
�Mv�w
�O
�Pmww�
�R
��
�S
��
�T
�s
�U
�j
�V
�^
�W
�Yaz
�Xaz�
�Z
�\
�[S��S�
�]8S�8
�_
�d
�`
�b
�a�8�
�cS��S�
�e
�h
�f
�gS�v�mazaz
�iw�az
�k
�o
�laz
�mazaz
�naz�&az
�paz
�qaz
�raz�&
�t
��
�u
�|
�v
�y
�w
�x�&����e
�z
�{e����5
�}
��
�~
��5
��^����
������
��
����
��v��^�^
����az
��az
��
��
��
��az
��az����
��v�az
��azaz
��az�0
��
��
��
��
��
��
��
��
��
��az
��az�0�0
��T%az
��
��az
��azT%T%~
��
��
��
��~�����;
��
���;V�V���
��
��
��
��
��
��������
��
��������Tz
��
��
��
��Tz
��v�mm
��mw�
��
��v�S�S�R�
��
��
��
��
��
��R�S	
����S	����
��
����Sw�
��
��
��
��
��
��
��
����T�
��
��F���>
��
��
��
������4RF
��
�������
��
��
��
��
��
����&bD
��
�����L�SC
��
��
��
������
��
��t�������
��
���e�����o
��
�Y
��
�
��
�
��
��
��
��
��
��
��
����W�y��
��
��������R�
��
��
��
��R������
��
��J��S�
��
��
��
��
��
��8�yS4�&
��
����e��5
��
��
���B�^��T4
�Taz
�
�
�
�
�
�����
�Q
�
�	�
��0T%
�

�~���;V�
�
�
�
�
�
��������
�
�Tz�	�	
�
�
�
�S��wF
�
�wFTC
�
�;
�
�,
�
�%
�
�"
� 
�!TC?U?U
�#
�$����w
�&
�)
�'
�(w���
�*
�+��S�
�-
�4
�.
�1
�/
�0�1�1"�
�2
�3"���<
�5
�8
�6
�7<RTRT�
�9
�:����,
�<
�K
�=
�D
�>
�A
�?
�@�,S�S�X
�B
�CX�����W
�E
�H
�F
�G�W�i�i'
�I
�J'Q�
�L
�S
�M
�P
�N
�OQ��
azF�
�Q
�Raz�`�`�
�T
�W
�U
�V���azaz
�Xaz�
�Zaz
�[
�z
�\
�k
�]
�d
�^
�a
�_
�`���a�
�b
�ca������
�e
�h
�f
�g��[�[�?
�i
�j�?wUwU�
�l
�s
�m
�p
�n
�o��-�-�
�q
�r������M
�t
�w
�u
�v�M�����
�x
�y����
�{
��
�|
��
�}
��
�~
����v���
��
��v��?�?��
��
��
��
�������9
��
���9�H�HV'
��
��
��
��
��
��V'v�v�
����v���
���
F�
��v�
��
��Tv�v���
��az
��
�b
��
�
��
��
��
��
��
��
��
��
��az
��az
��az
��az
��azv�az
��azaz
��az
��az
��
��
��az
��
��v�azv�
��az
��azv�az
��azaz
��az
��az
��
��
��az
��
��v�azv�
��az
��az
��azv�az
��
��
��
��
��azaz
��
��azaz
��
��
��az
��az
��azv�v�
��v�azaz
��az
��
��az
��az
��
��azv�
��azv�az
��azaz
��az
��az
��
��azaz
��
��v�azv�
��
��az
��
��
��
��
��
��azaz
��
��az
��azaz
��
��azv�azaz
��az
��az
��az
��az
��az
��v�azaz
��az
��
��b�az
��
��b�
��b�azb�
��
�b�
��
��
��
��azb�
��b�
��
��azb�
��
��azv�azaz
��az
��
��az
��azaz
��
��azv�az
�
�	az
�
�az
�azaz
�
�azaz
�w�
�w�az
�

�
�azaz
�az
�
az
�
�az
�w�azw�az
�
�b�az
�az
�az
�azb�
�
��
�
�:
�
�"b�
�
�v�
�v�
�v�
�v�
� v�b�
�!b�v�
�#
�,
�$
�*
�%b�
�&b�
�'b�
�(b�
�)b�v�b�b�
�+b�v�v�
�-
�.
�4v�
�/
�0az
�1azv�
�2v�
�3w�azaz
�5az
�6az
�7
�8az
�9azazw�
�;
�e
�<
�I
�=
�Baz
�>
�?v�
�@v�az
�Aazv�v�
�Cv�
�D
�Eazv�
�F
�Gazv�
�Hv�az
�J
�U
�K
�Q
�Lazaz
�Maz
�Naz
�Oaz
�Pazv�
�Rv�az
�S
�Tv�azv�
�V
�Z
�Wazv�
�Xv�
�Yv�az
�[
�`
�\
�^
�]w�azw�
�_w*w�w*w*
�a
�bw
�cww*
�dw*w
�f
�y
�gkX
�h
�u
�i
�q
�j
�mw
�k
�l�"w�"
�nw�"
�o�"
�p�"ww
�rw
�s
�twcwwc
�vkX
�wkX
�xkXwckX
�z
��
�{gCkX
�|kX
�}
�~gC
�gCkX
��kXgC
��
��
��
��gC
��gC
��
��v�gC
��gCv�
��v�
��v�
��
��v�
��v��
��v��v�v�
��v�
��
��gQv�
��v�
��v�gQ
��
��
��
��
��
��
��
��
��
��gQ
��gQ
��
��ub
��
��
��w�gQw�w�
��w�ub
��
��
��
��
��w�ub
��
��w�ubw�
��w*w�
��
��w*w�w*w*
��
��ww*w
��
��
��
��
��
��w
��
���"w
��w�"�"ww
��w
��
��wcw
��wwc
��kX
��kX
��kXwc
��
��kXwckXkX
��
��gCkX
��kX
��
��gCkXgC
��
��
��
��
��
��
��
��gC
��gC
��gCv�
��v�
��v�v�
���v�v�
��v�
��v�gQ
��
��gQ
��gQ
��
��ub
��w�gQw�
��
��
��
��
��w�ub
��ubw�
��w*
��w*w�w*
��
��w*ww
��
���"
���"w�"
��kX
��kXw
��
��kX
��kX
��
��
��wcwwcwc
��wckX
��
�)
��
�
��
��
��gC
��gCkX
��
��gC
��gCkXgC
��
�
��v�
�v�
�v�v�
�v��
�gQ
�gQv�
�
�gQv�gQ
�	kX
�

�
�
�
�
�
�
�gQw�
�ubw�
�w�ububw�
�
�
�w*w�w*w*
�
�ww*w
�
�!
�
�w
�
��"w
�w�"
�w
� w�"ww
�"
�#
�&
�$wcw
�%wwc
�'kX
�(kXwckX
�*
�8
�+
�0kX
�,kX
�-
�.gC
�/gCkXgCgC
�1
�2v�gC
�3
�4
�6
�5v�gCv�
�7v��v�
�9
�M
�:
�>
�;gQv�
�<v�
�=v�gQ
�?
�FgQ
�@
�A
�CgQ
�BgQw�w�
�D
�Eubw�ub
�G
�Jub
�H
�Iw�ubw�
�Kw*
�Lw*w�w*
�NkX
�O
�[
�P
�W
�Q
�T
�Rww*
�Sw*w
�U�"w
�Vw�"
�Xw
�Yw
�Zw�"ww
�\w
�]
�^
�`
�_wcwwc
�akXwckX
�caz
�daz
�e
��
�f
��
�g
��
�h
�v
�i
�okX
�j
�kgC
�lgC
�mgC
�ngCkXgC
�pv�gC
�q
�rv�
�sv�
�t
�ugCv�v�v�
�w
��
�x
��
�y
�}
�zgQ
�{gQv�
�|v�gQ
�~
��gQ
�gQ
��gQw�w�
��w�ub
��
��
��
��ub
��
��w�ubw�w�
��
��w*w�w*w*
��w*
��w*w
��
��
��w
��
��w
��w�"�"ww
��
��kXwwc
��
��kX
��
��gCkX
��kX
��kXgC
��
��
��
��
��v�gC
��gC
��v�v�v�
��v�
��v�
��v�gQ
��
��gQ
��
��
��
��w�gQw�
��ub
��ubw�ubm
��m
��mv�
��
��
��
��
��
��v�
��
����
����v�
��v�
��v�����
��
��m
��m��
����m
��
��
��
��
��v�
��v�
��v�mv�
����v�
��v�
��
����v�����
��
��m��
����m
��
��
��
��
��
��m
��
��v�
��v�mv�v�
��v�
��v�����
��
��m��
��
��m
��m��m
��
��
��
��
��v�m
��m
��m
��mv�v�
��v�
��
����
����v�����
��
��m
��m��
����m
��
�C
��
�
��
�
��
��
��
��
��v�m
��m
��mv�v�
��
����
����v�
��v���
��m��
���
�
�m��
���m
�
�
�
�
�v�
�v�
�	v�m
�
mv�
���v���
�
���v�
�w�v�
�v�
�v�
�v�w�
�
�-
�
�!
�
�w�
�w�
�
�w�
�w�azw�
�v�
�v�w�
�
� v�w�v�
�"
�%
�#w�
�$w�v�w�
�&
�*w�
�'w�
�(
�)w�w�azw�
�+
�,v�w�v�
�.
�9
�/
�3
�0w�
�1w�v�
�2v�w�w�
�4
�5
�8
�6w�
�7w�w�azw�v�
�:
�<
�;w�v�w�w�
�=
�>
�A
�?w�w�
�@w�azw�
�Bw�v�
�D
�p
�E
�Z
�F
�Q
�G
�Lv�
�Hv�
�I
�Jw�
�Kw�v�w�
�Mv�w�
�Nw�
�Ow�
�Pw�v�
�R
�V
�Sw�v�
�T
�Uw�v�w�
�Ww�v�
�Xv�
�Yv�w�
�[
�j
�\
�e
�]
�aw�
�^w�
�_
�`v�w�v�v�
�b
�cw�v�
�dv�w�w�
�fw�
�g
�h
�iw�v�v�w�w�
�k
�lw�
�mw�
�n
�ow�v�v�w�
�q
��
�r
��
�s
�z
�t
�ww�
�u
�vv�w�v�
�x
�yv�w�w�v�
�{
��
�|
�~v�
�}v�w�w�
�w�v�v�
��v�
��w�v�
��
��
��w�v�
��v�w�
��
��w�
��v�
��w�v�
��t�
��t�v�w�
��az
��azt�az
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@|@@
��
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@|@
��
�"
��
�
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��@
��@
��@
��@
�@��@
�@
�@
�@
�@
�@az@
�
�
�	
�
�
@
�@
�@
�
@
�@az@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
� @
�!@az@
�#
�>
�$
�1
�%
�+
�&@
�'@
�(@
�)@
�*@�r@
�,@
�-@
�.@
�/@
�0@az@
�2
�8
�3@
�4@
�5@
�6@
�7@az@
�9@
�:@
�;@
�<@
�=@az@
�?
�L
�@
�F
�A@
�B@
�C@
�D@
�E@az@
�G@
�H@
�I@
�J@
�K@az@
�M
�S
�N@
�O@
�P@
�Q@
�R@az@
�T@
�U@
�V@
�W@
�X@az@
�Z
��
�[
��
�\
�w
�]
�j
�^
�d
�_@
�`@
�a@
�b@
�c@az@
�e@
�f@
�g@
�h@
�i@az@
�k
�q
�l@
�m@
�n@
�o@
�p@|@
�r@
�s@
�t@
�u@
�v@az@
�x
��
�y
�
�z@
�{@
�|@
�}@
�~@az@
��@
��@
��@
��@
��@az@@
��
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@|@
��
��
��@
��@
��@
��@
��@��@
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@@
��
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��
��@
��
��@
��@
��@
��@
��@az@
��
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�	@
�
@az@
�
�5
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�
�!
�azaz
�
�az
�az
�az
� azazw
�"
�(az
�#
�$az
�%az
�&az
�'azazwaz
�)az
�*az
�+az
�,az
�-az
�.az
�/az
�0az
�1az
�2az
�3
�4azazw
�6
�<
�7@
�8@
�9@
�:@
�;@az@
�=@
�>@
�?@
�@@
�A@az@
�C
�
�D
��
�E
�|
�F
�a
�G
�T
�H
�N
�I@
�J@
�K@
�L@
�M@az@
�O@
�P@
�Q@
�R@
�S@az@
�U
�[
�V@
�W@
�X@
�Y@
�Z@az@
�\@
�]@
�^@
�_@
�`@|@
�b
�o
�c
�i
�d@
�e@
�f@
�g@
�h@az@
�j@
�k@
�l@
�m@
�n@|@
�p
�v
�q@
�r@
�s@
�t@
�u@az@
�w@
�x@
�y@
�z@
�{@az@
�}
��
�~
��@
�
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@|@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@@
��
��@
��@
��@
��@
��@az@
��
��@
��
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@|@
��
��@
��
��@
��@
��@
��@
��@az@@
��
��@
�@
�@
�@
�@az@
�
�h
�
�1
�
�"
�
�
�	
�
�
@
�@
�@
�
@
�@az@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
� @
�!@az@
�#
�*
�$@
�%@
�&@
�'@
�(@
�)@az@
�+@
�,@
�-@
�.@
�/@
�0@az@
�2
�M
�3
�@
�4
�:
�5@
�6@
�7@
�8@
�9@az@
�;@
�<@
�=@
�>@
�?@|@
�A
�G
�B@
�C@
�D@
�E@
�F@az@
�H@
�I@
�J@
�K@
�L@az@
�N
�[
�O
�U
�P@
�Q@
�R@
�S@
�T@az@
�V@
�W@
�X@
�Y@
�Z@az@
�\
�b
�]@
�^@
�_@
�`@
�a@|@
�c@
�d@
�e@
�f@
�g@az@
�i
��
�j
�
�k
�r
�l@
�m@
�n@
�o@
�p@
�q@az@
�s
�y
�t@
�u@
�v@
�w@
�x@az@
�z@
�{@
�|@
�}@
�~@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@@
��
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@@
��
��@
��@
��@
��@
��@��@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�+
��
��
��
�5
��
�
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@
��@
��az
��azaz
����az
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
�@
�@
�@
�@|@
�
� 
�
�
�
�
�@
�	@
�
@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�!
�.
�"
�(
�#@
�$@
�%@
�&@
�'@az@
�)@
�*@
�+@
�,@
�-@|@@
�/
�0@
�1@
�2@
�3@
�4@|@
�6
�k
�7
�P
�8
�I
�9
�?
�:@
�;@
�<@
�=@
�>@az@
�@@
�A@
�B@
�C@
�D@
�E@
�F@
�G@
�H@�@
�J@
�K@
�L@
�M@
�N@
�O@�?@
�Q
�^
�R
�X
�S@
�T@
�U@
�V@
�W@az@
�Y@
�Z@
�[@
�\@
�]@az@
�_
�e
�`@
�a@
�b@
�c@
�d@|@
�f@
�g@
�h@
�i@
�j@az@
�l
��
�m
�v
�n
�p
�o@az@
�q@
�r@
�s@
�t@
�u@az@
�w
�}
�x@
�y@
�z@
�{@
�|@az@
�~@
�@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�Q
��
� 
��
�
��
��
��
��
��@
��@
��@
��@
��@
��@
��
��az
��
��
�O
��
��
��az
��az
��
��az
��
��az
��az
��
��
��azaz
��
��azaz
��azw�az
��
��az
��azw�az
��az
��az
��
��
��az
��azaz
��az
��
��azaz��az
��
��az
��
��az
��az
��t�az
��
��azw�
��
��azw�w�az
��az
��az
��az
��
�-
��
�
��
��
��
��
��
��
��
��
��az
��azazw
��
��
��
��azwcazw
��azwaz
��
��
��az
��
��v�gCgCazaz
��az
��azgC
��
��
��az
��azb�az
��az
��az
��kXazkX
��
�
��
��
��
��
��azgQ
��gQaz
��
��az
��gQaz
��azgQaz
��
�w�
�
�azw�az
�azaz
�azw�
�
�
�
�
ub
�
�	azubaz
�azaz
�azub
�
�
�azb�az
�azaz
�b�az
�az
�
�"
�
�
�
�
�azv�az
�
�
�gCgCaz
�azgCaz
�az
� azwU
�!wUaz
�#
�(
�$
�%gCb�gQ
�&kX
�'gQkX
�)az
�*az
�+
�,gCgQ�igC
�.az
�/
�E
�0
�>
�1
�7
�2az
�3
�5
�4���v�
�6azw8az
�8
�;
�9az
�:azv�az
�<azaz
�=v���
�?
�A
�@azkXaz
�Baz
�Caz
�Daz�az
�Faz
�G
�K
�Haz
�Iaz
�Jaz�?az
�Laz
�Maz
�Nazb�az
�P
��
�Qaz
�Raz
�Saz
�T
��
�U
��
�V
�r
�W
�d
�X
�^
�Y
�\t�
�Zt�
�[azt�
�]azazt�
�_
�a
�`azwaz
�b
�cazwwaz
�e
�kv�
�f
�g
�iv�
�hazv�
�jazv�az
�l
�om
�mm
�nmaz
�paz
�qazmaz
�s
�{
�t
�w
�uaz
�vazwaz
�xaz
�yaz
�zaz��az
�|
�
�}az
�~az�1az
��azv�azaz
��az
��
��
��
��az
��az
��azv�az
��
��u�
��
��
��azu�azu�
��azu�
��u�az
��az
��az
��az
��az
��az
��az
��az�waz
��az
��az
��az
��
��
��az
��az
��
��
��
��
��
��
��az
��w�azw�
��
��azw�j
��w�j
��azjaz
��
��
��az
��az
��
��az����az
��azjaz
��az
��az
��az
��az
��az
��az
��azjazaz
��az
��
��az
��az
��
��
��az
��az
��az
��az
��az
��az
��azaz
��
��azazgQ
��az
��az
��az
��az
��
��
��
��az
��
��
��az
��b�gC
��
��wUt�u�v�
��az
��
��m
��t�w�
��azw�j
��
��
��
��
��
��az
��t�azaz
��b�gC
��az
��azkX�
��
��
��
��
��
��b�v�wkX
��
��v�w�gCub
��az
��
��b�u�jaz
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
�@
�@
�@
�@
�@az@
�
�
�
�
�@
�	@
�
@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�!
�6
�"
�/
�#
�)
�$@
�%@
�&@
�'@
�(@az@
�*@
�+@
�,@
�-@
�.@az@@
�0
�1@
�2@
�3@
�4@
�5@�@
�7
�D
�8
�>
�9@
�:@
�;@
�<@
�=@az@
�?@
�@@
�A@
�B@
�C@az@
�E
�K
�F@
�G@
�H@
�I@
�J@|@
�L@
�M@
�N@
�O@
�P@|@
�R
��
�S
�n
�T
�a
�U
�[
�V@
�W@
�X@
�Y@
�Z@az@
�\@
�]@
�^@
�_@
�`@az@
�b
�h
�c@
�d@
�e@
�f@
�g@az@
�i@
�j@
�k@
�l@
�m@az@
�o
��
�p
�z
�q@
�r@
�s@
�t@
�u@
�v@
�w@
�x@
�y@az@
�{@
�|@
�}@
�~@
�@az@@
��
��@
��@
��@
��@
��@az@
��
�
��
�
��
�	
��@
��@
��@
��@
��@
��@az
��
��az
��az
��az
��az
��az
��az
��az
��az
��az
��
��
��
��az
��
��azaz
��
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��azaz
��azw
��
��az
��
��
��az
��
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��azmaz
��
��
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��azv�az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��azv�az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��azazj
��az
��
��az
��
��azu�az
��
�az
��gQ
�
�az
�azgQaz
�az
�azb�
�
�az
�azb�az
�
@
�@
�@
�
@
�@az@@
�
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@az@
�
�%
� @
�!@
�"@
�#@
�$@|@
�&@
�'@
�(@
�)@
�*@az@
�,
��
�-
��
�.
�e
�/
�J
�0
�=
�1
�7
�2@
�3@
�4@
�5@
�6@|@
�8@
�9@
�:@
�;@
�<@az@
�>
�D
�?@
�@@
�A@
�B@
�C@az@
�E@
�F@
�G@
�H@
�I@az@
�K
�X
�L
�R
�M@
�N@
�O@
�P@
�Q@|@
�S@
�T@
�U@
�V@
�W@|@
�Y
�_
�Z@
�[@
�\@
�]@
�^@�?@
�`@
�a@
�b@
�c@
�d@az@
�f
��
�g
�t
�h
�n
�i@
�j@
�k@
�l@
�m@az@
�o@
�p@
�q@
�r@
�s@az@
�u
�{
�v@
�w@
�x@
�y@
�z@az@
�|@
�}@
�~@
�@
��@az@
��
��
��@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��
��@
��
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@|@@
��
��@
��@
��@
��@
��@|@
��
�g
��
�6
��
�
��
�

��
�
��@
�@
�@
�@
�@az@
�@
�@
�@
�@
�	@az@
�
�
�@
�
@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�%
�
�
�@
�@
�@
�@
�@az@
� @
�!@
�"@
�#@
�$@az@
�&
�0
�'@
�(@
�)@
�*@
�+@
�,@
�-@
�.@
�/@az@
�1@
�2@
�3@
�4@
�5@az@
�7
�L
�8
�?@
�9
�:@
�;@
�<@
�=@
�>@az@
�@
�F
�A@
�B@
�C@
�D@
�E@az@
�G@
�H@
�I@
�J@
�K@az@
�M
�Z
�N
�T
�O@
�P@
�Q@
�R@
�S@az@
�U@
�V@
�W@
�X@
�Y@az@
�[
�a
�\@
�]@
�^@
�_@
�`@az@
�b@
�c@
�d@
�e@
�f@az@
�h
��
�i
��
�j
�w
�k
�q
�l@
�m@
�n@
�o@
�p@|@
�r@
�s@
�t@
�u@
�v@az@
�x
��
�y@
�z@
�{@
�|@
�}@
�~@�
�
������
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@�@
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��
�B
��
�
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@az@
��
�
��
��
��@
��@
��@
��@
��@az@
��@
�@
�@
�@
�@�@
�
�
�@
�@
�@
�	@
�
@az@
�@
�
@
�@
�@
�@az@
�
�'
�
�
�@
�@
�@
�@
�@
�@az@
�
�!
�@
�@
�@
�@
� @|@
�"@
�#@
�$@
�%@
�&@az@
�(
�5
�)
�/
�*@
�+@
�,@
�-@
�.@az@
�0@
�1@
�2@
�3@
�4@az@
�6
�<
�7@
�8@
�9@
�:@
�;@|@
�=@
�>@
�?@
�@@
�A@az@
�C
�t
�D
�Y
�E
�R
�F
�L
�G@
�H@
�I@
�J@
�K@az@
�M@
�N@
�O@
�P@
�Q@az@@
�S
�T@
�U@
�V@
�W@
�X@az@
�Z
�g
�[
�a
�\@
�]@
�^@
�_@
�`@az@
�b@
�c@
�d@
�e@
�f@az@
�h
�n
�i@
�j@
�k@
�l@
�m@|@
�o@
�p@
�q@
�r@
�s@az@
�u
��
�v
��
�w
�}
�x@
�y@
�z@
�{@
�|@az@
�~@
�@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@
��@
��
��
��
��
��
���azaz
��
��az
��az
��az
��
��
��az�
��
��az
��
��az
��az
��az
��az�
��az
��
��az�
���az�
��az
��az
��az
���az
��
��
��
��az�az
��az�az
��
��
��az
��azaz
��
��
��
��az
��az
��az
��az�azaz
��
��az
��az
��az
��az
��az
��az
��az�azaz
��
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az�azaz
��az
��az
��az
��az
��az
��az
��
��az
��az
��az
��az
��az
��az
��az�az
��@
��@
��@
��@
��@|@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�d
��
�3
��
�
��
�
��
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�	@
�
@az@
�
�
�
@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�&
�
� 
�@
�@
�@
�@
�@az@
�!@
�"@
�#@
�$@
�%@az@
�'
�-
�(@
�)@
�*@
�+@
�,@az@
�.@
�/@
�0@
�1@
�2@�@
�4
�O
�5
�B
�6
�<
�7@
�8@
�9@
�:@
�;@az@
�=@
�>@
�?@
�@@
�A@az@
�C
�I
�D@
�E@
�F@
�G@
�H@az@
�J@
�K@
�L@
�M@
�N@|@
�P
�W@
�Q
�R@
�S@
�T@
�U@
�V@az@
�X
�^
�Y@
�Z@
�[@
�\@
�]@az@
�_@
�`@
�a@
�b@
�c@az@
�e
��
�f
��
�g
�u
�h
�o
�i@
�j@
�k@
�l@
�m@
�n@az@
�p@
�q@
�r@
�s@
�t@az@
�v
�|
�w@
�x@
�y@
�z@
�{@az@
�}@
�~@
�@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@@
��
��@
��@
��@
��@
��@az@
��
��
��
�9
��
�
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@|@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@@
��
��@
��@
��@
�@
�@az@
�
�
�
�
�
�
�@
�@
�@
�	@
�
@az@
�@
�
@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�,
� 
�&
�!@
�"@
�#@
�$@
�%@|@
�'@
�(@
�)@
�*@
�+@az@
�-
�3
�.@
�/@
�0@
�1@
�2@az@
�4@
�5@
�6@
�7@
�8@az@
�:
�M
�;
�2
�<
�I
�=
�C
�>@
�?@
�@@
�A@
�B@az@
�D@
�E@
�F@
�G@
�H@az@
�J
�P
�K@
�L@
�M@
�N@
�O@|@
�Q@
�R@
�Saz
�Taz
�Uaz
�Vaz
�W
��
�X
�$
�Y
��
�Z
��
�[
��
�\
�q
�]m
�^m
�_
�k
�`
�e
�a
�c
�bv���v�
�d�yv��y
�f
�i
�g
�hT���J
�jw��"�yw�
�l
�m
�ow�
�nw��w�
�pw�m
�rj
�s
��
�t
�}
�u
�xm
�vm
�wL���
�y
�{��
�z��<
�|�����
�~
��
�w*��
����w*
��
��w*
��T4�i�i
���iup
��j
��
��
��
��
��
��up)S���
���Q��
��j�
����jj
��j
��j
��j
��j
��
��
��j
�����
�������
��
��
��v�
��v�
��v�
��v�
��v�
��v�
��v�F�v�v�
��
��
��v�
��
��w
��
��v�
��v�
��v���
��w��
����SQ
���K
��
��w
��w
��
��jXS	
���Kj
��
��
��jTCTC�K
��
��
��
���K
���K
��
��
���Kw�
��b�
��
��
��
��
��
��w������L�L
���RF
��
����M�Mb�b�
��b�
��b�
��b�
��b�
��
��
��b�
��b����"
���"�
��
��
��
��
��kX
��
��
��
��
��
��
��
����;
�����;��
��wF���
��w
��w
��w��w
��
��w
��
��
��
��
��wV�V�wcwc
��wc��
��kX
��kX
��
���	R�R��kX
��
��gC
��gCkX
��
��gC
��gCkXT%
��u�
��
�
��
�
��
�
��
�gC
��gC
���"
�
�
�F�
��4�&
�
�
�
�
�4
�	S45
�����B
�
���
����&�&�
�
�
�
�
�
�
�w���4
��4a�
�
�
��a�SC
�u��u�u�
�u�v�
�u�
� u�v�
�!
�"u�
�#u�"�u�
�%az
�&
��
�'
�a
�(
�?
�)
�6
�*
�/u�
�+
�,pu�
�-u�
�.Tzp
�0v�
�1
�3p
�2pV�
�4v�
�5�V��
�7v�
�8v�
�9
�=v�
�:
�;
�<v��1��0
�>v��0v�v�
�@
�A
�K
�Bv�
�C
�E
�D��v���
�F
�H
�G�o��Z
�I
�J�o�}��

�L
�U
�M
�R
�N
�Pv�
�Ov�����
�Q�����
�S��
�T���j
�V
�\
�W
�Y~
�X~�
�Z
�[����S�
�]
�_
�^�[S����
�`��
�b
�|
�cw�
�dw�
�e
�p
�f
�i��
�g��
�h���
�j
�m
�k
�l��?�T
�n
�o3
RT�
�q
�v
�r
�s��

�t
�u�
��D
�w
�z
�x
�ye��J�
�{�J��
�}
��
�~
��
�
��
��v�w�
��w�v�
��
��
��
��v�
��v�
��
��J�����J�
���
������
��
���
���
���gQ
��
��gQw�
��t��
��W��
��
��
��
��
��
��t�
��t��
�����

���
��
��
����
������
���1
��
���������1
��
���1
��
����
�����1��
��
��
��wU��
����wU
��
��
��
����S�
���S��
��
��
��
��
��ub
��
��
��{�
��
��
��
���
������
��w8��
��
���?�
��{��{�
��ub
��
��
����{�
��S���
��
����
������ub
��
��ub
��
��
��
��
��
��
��t�
�����-
��
��8�?US�
��
��F�
���J�b
��bS
���w�+
��
��
��-��9T�w
��
��
���w
���w
���w
���w�W
��
��
��
��
��
���e�s���,
��w�,
��
��w
��w�>
��������
��az
��az
��az
��
��
���^
��
����
����J�
���^J��^
��az
��az�^
��S�azaz
�
�azaz
�
�az
�
�az
�
�
�
�
�
�
�az
�	
�

�az����
�
���
��
��
�
�����
�
�wq
�wq
�wq
�S���
�v�
�
�
����
�v����
�az
� az
�!
�-
�"
�&v�
�#
�$
�%R7J�J�j
�'
�*
�(
�)�Kw�kXu�
�+
�,u��;wFaz
�.az
�/az
�0
�1��p�az
�3
�@
�4
�:
�5@
�6@
�7@
�8@
�9@az@
�;@
�<@
�=@
�>@
�?@az@
�A
�G
�B@
�C@
�D@
�E@
�F@az@
�H@
�I@
�J@
�K@
�L@az@
�N
�i
�O
�\
�P
�V
�Q@
�R@
�S@
�T@
�U@az@
�W@
�X@
�Y@
�Z@
�[@az@
�]
�c
�^@
�_@
�`@
�a@
�b@az@
�d@
�e@
�f@
�g@
�h@az@
�j
�w
�k
�q
�l@
�m@
�n@
�o@
�p@az@
�r@
�s@
�t@
�u@
�v@az@
�x
�~
�y@
�z@
�{@
�|@
�}@az@
�@
��@
��@
��@
��@az@
��
�
��
��
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@@
��
��@
��@
��@
��@
��@
��@
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��
��
��
��az
��j
��j
��j
��jaz
��
��w�
��w�
��w�
��w�azv�
��v�
��
��azv�az
��az
��azgC
��gC
��gC
��gCaz
��
��@
��
��@
��@
��@
��@
��@�@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@
��@�@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@�@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�	@
�
@az@
�
�C
�
�(
�
�
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�"
�@
�@
�@
� @
�!@v�@
�#@
�$@
�%@
�&@
�'@az@
�)
�2
�*
�,
�+@az@
�-@
�.@
�/@
�0@
�1@az@
�3
�9
�4@
�5@
�6@
�7@
�8@|@
�:@
�;@
�<@
�=@
�>@
�?@�
�@
�A�
�B���
�D
�k
�E
�b
�F
�L
�G@
�H@
�I@
�J@
�K@az@
�M@
�N@
�O@
�P@
�Q@
�R@az
�Saz
�T
�Uazaz
�Vaz
�Waz
�X
�Yaz
�Zaz
�[az
�\az
�]az
�^azaz
�_
�`az
�aazwaz
�c
�e
�d@az@
�f@
�g@
�h@
�i@
�j@az@
�l
�y
�m
�s
�n@
�o@
�p@
�q@
�r@�@
�t@
�u@
�v@
�w@
�x@az@
�z
��
�{@
�|@
�}@
�~@
�@az@
��@
��@
��@
��@
��@|@
��
�x
��
��
��
�$
��
��
��
��
��
��
��
��
��@
��@
��@
��@
��@
��@
��azaz
��az
��
��az
��az
��az
��az
��az
��azaz
��
��az
��azaz
��az
��
��az
��az
��azaz
��
��azaz
��
��azaz
��az
��az
��
��az
��az
��az
��az
��az
��az
��az@az
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@|@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@@
��
��@
��@
��@
��@
��@az@
��
�
��
��
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@
��@
��
�
��
�

��az
��az
��az
��az
��az
��az
�az
�az
�azaz
�
�
�az
�az
�azgQ
�az
�	azt�azaz
�azgQ
�
az
�azt�az
�
�
�@
�@
�@
�@
�@
�@|@
�
�
�@
�@
�@
�@
�@az@
�@
� @
�!@
�"@
�#@az@
�%
�X
�&
�A
�'
�4
�(
�.
�)@
�*@
�+@
�,@
�-@az@
�/@
�0@
�1@
�2@
�3@az@
�5
�;
�6@
�7@
�8@
�9@
�:@|@
�<@
�=@
�>@
�?@
�@@|@
�B
�K
�C
�E
�D@az@
�F@
�G@
�H@
�I@
�J@az@
�L
�R
�M@
�N@
�O@
�P@
�Q@az@
�S@
�T@
�U@
�V@
�W@az@
�Y
��
�Z
�a
�[@
�\@
�]@
�^@
�_@
�`@az@
�b
��
�c@
�d@
�e@
�f@
�g@
�h@
�iaz
�jaz
�kaz
�laz
�maz
�naz
�oaz
�paz
�qaz
�raz
�saz
�taz
�uaz
�vazaz
�waz
�x
�yaz
�zaz
�{az
�|az
�}az
�~az
�az
��az
��az
��az
��az
��az
��az
��az
��azazgC
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@az@
��
�
��
��
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@�@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��
�
��@
��@
��@
�@
�@az@
�@
�@
�@
�@
�@az@
�	
�
�
@
�@
�@
�
@
�@az@
�@
�@
�@
�@
�@az@
�
�G
�
�,
�
�%
�
�
�@
�@
�@
�@
�@az@
� @
�!@
�"@
�#@
�$@az@@
�&
�'@
�(@
�)@
�*@
�+@az@
�-
�:
�.
�4
�/@
�0@
�1@
�2@
�3@|@
�5@
�6@
�7@
�8@
�9@az@
�;
�A
�<@
�=@
�>@
�?@
�@@az@
�B@
�C@
�D@
�E@
�F@az@
�H
�c
�I
�V
�J
�P
�K@
�L@
�M@
�N@
�O@az@
�Q@
�R@
�S@
�T@
�U@az@
�W
�]
�X@
�Y@
�Z@
�[@
�\@az@
�^@
�_@
�`@
�a@
�b@az@
�d
�q
�e
�k
�f@
�g@
�h@
�i@
�j@az@
�l@
�m@
�n@
�o@
�p@az@@
�r
�s@
�t@
�u@
�v@
�w@az@
�y
�L
�z
��
�{
��
�|
��
�}
��
�~
��
�@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��@
��
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@|@
��
��
��@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@az@
��
�
��
�
��@
��@
��@
�@
�@az@
�@
�@
�@
�@
�@az@
�	
�
�
@
�@
�@
�
@
�@az@
�@
�@
�@
�@
�@az@
�
�1
�
�$
�
�
�@
�@
�@
�@
�@az@
�@
� @
�!@
�"@
�#@az@
�%
�+
�&@
�'@
�(@
�)@
�*@|@
�,@
�-@
�.@
�/@
�0@az@
�2
�?
�3
�9
�4@
�5@
�6@
�7@
�8@az@
�:@
�;@
�<@
�=@
�>@|@
�@
�F
�A@
�B@
�C@
�D@
�E@az@
�G@
�H@
�I@
�J@
�K@az@
�M
²
�N
…
�O
�j
�P
�]
�Q
�W
�R@
�S@
�T@
�U@
�V@az@
�X@
�Y@
�Z@
�[@
�\@az@
�^
�d
�_@
�`@
�a@
�b@
�c@|@
�e@
�f@
�g@
�h@
�i@az@
�k
�x
�l
�r
�m@
�n@
�o@
�p@
�q@az@
�s@
�t@
�u@
�v@
�w@az@
�y
�
�z@
�{@
�|@
�}@
�~@|@
€@
@
‚@
ƒ@
„@az@
†
—
‡
Ž@
ˆ
‰@
Š@
‹@
Œ@
@az@

‘
@az@
’@
“@
”@
•@
–@az@
˜
¥
™
Ÿ
š@
›@
œ@
@
ž@az@
 @
¡@
¢@
£@
¤@az@
¦
¬
§@
¨@
©@
ª@
«@az@
­@
®@
¯@
°@
±@az@
³
��
´
��
µ
��
¶
¼
·@
¸@
¹@
º@
»@az@
½@
¾@
¿@
�@
�@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@|@
��
��
��@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
�@
�@
�@
�@
�@az@
�@az@
�
�

�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�	@az@
�
�
�@
�
@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�
�
ƕ
�
��
�
�
�
à
�
�T
�
�9
�
�,
� 
�&
�!@
�"@
�#@
�$@
�%@az@
�'@
�(@
�)@
�*@
�+@az@
�-
�3
�.@
�/@
�0@
�1@
�2@az@
�4@
�5@
�6@
�7@
�8@az@
�:
�G
�;
�A
�<@
�=@
�>@
�?@
�@@az@
�B@
�C@
�D@
�E@
�F@az@
�H
�N
�I@
�J@
�K@
�L@
�M@az@
�O@
�P@
�Q@
�R@
�S@az@
�U
É
�V
�c
�W
�]
�X@
�Y@
�Z@
�[@
�\@az@
�^@
�_@
�`@
�a@
�b@az@
�d
�n
�e@
�f@
�g@
�h@
�i@
�j@
�k@
�l@
�m@az@
�o@
�p@
�q@
�r@
�s@
�t@az
�u
�v
�xaz
�wazv�
�y
�zjj
�{az
�|az
�}az
�~az
�az
Àaz
Áaz
Âaz
Ãazaz
Ä
Å
Çaz
Æazv�
Èazjj
Ê
Ó
Ë
Í
Ì@|@
Î@
Ï@
Ð@
Ñ@
Ò@az@
Ô
Ú
Õ@
Ö@
×@
Ø@
Ù@az@
Û@
Ü@
Ý@
Þ@
ß@az@
á
��
â
ý
ã
ð
ä
ê
å@
æ@
ç@
è@
é@az@
ë@
ì@
í@
î@
ï@|@
ñ
÷
ò@
ó@
ô@
õ@
ö@az@
ø@
ù@
ú@
û@
ü@az@
þ
��
ÿ
��
�@
�@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@|@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
�
�
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�	
�@
�@
�@
�@
�@az@
�
@
�@
�@
�
@
�@az@
�
ć
�
�H
�
�-
�
� 
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�!
�'
�"@
�#@
�$@
�%@
�&@az@
�(@
�)@
�*@
�+@
�,@az@
�.
�;
�/
�5
�0@
�1@
�2@
�3@
�4@|@
�6@
�7@
�8@
�9@
�:@az@
�<
�B
�=@
�>@
�?@
�@@
�A@az@
�C@
�D@
�E@
�F@
�G@az@
�I
�l
�J
�_
�K
�Q
�L@
�M@
�N@
�O@
�P@az@
�R@
�S@
�T@
�U@
�V@
�W@
�X@
�Y@
�Z@
�[@
�\@
�]@
�^@az@
�`
�f
�a@
�b@
�c@
�d@
�e@az@
�g@
�h@
�i@
�j@
�k@az@
�m
�z
�n
�t
�o@
�p@
�q@
�r@
�s@az@
�u@
�v@
�w@
�x@
�y@az@
�{
ā
�|@
�}@
�~@
�@
Ā@az@
Ă@
ă@
Ą@
ą@
Ć@az@
Ĉ
ij
ĉ
Ĥ
Ċ
ė
ċ
đ
Č@
č@
Ď@
ď@
Đ@|@
Ē@
ē@
Ĕ@
ĕ@
Ė@az@
Ę
Ğ
ę@
Ě@
ě@
Ĝ@
ĝ@az@
ğ@
Ġ@
ġ@
Ģ@
ģ@�@
ĥ
Ĭ
Ħ@
ħ@
Ĩ@
ĩ@
Ī@
ī@az@@
ĭ
Į@
į@
İ@
ı@
IJ@|@
Ĵ
��
ĵ
ļ@
Ķ
ķ@
ĸ@
Ĺ@
ĺ@
Ļ@az@
Ľ
��
ľ@
Ŀ@
�@
�@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@@
��
��@
��@
��@
��@
��@az@
��
ż
��
�O
��
�
��
�
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��@
��@
��@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�	@
�
@az@
�
�
�
@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�4
�
�'
�
�!
�@
�@
�@
�@
� @az@
�"@
�#@
�$@
�%@
�&@az@
�(
�.
�)@
�*@
�+@
�,@
�-@az@
�/@
�0@
�1@
�2@
�3@az@
�5
�B
�6
�<
�7@
�8@
�9@
�:@
�;@az@
�=@
�>@
�?@
�@@
�A@|@
�C
�I
�D@
�E@
�F@
�G@
�H@az@
�J@
�K@
�L@
�M@
�N@az@
�P
Ň
�Q
�l
�R
�_
�S
�Y
�T@
�U@
�V@
�W@
�X@az@
�Z@
�[@
�\@
�]@
�^@az@
�`
�f
�a@
�b@
�c@
�d@
�e@az@
�g@
�h@
�i@
�j@
�k@az@
�m
�z
�n
�t
�o@
�p@
�q@
�r@
�s@az@
�u@
�v@
�w@
�x@
�y@az@
�{
Ł
�|@
�}@
�~@
�@
ŀ@|@
ł@
Ń@
ń@
Ņ@
ņ@az@
ň
ŝ
ʼn
Ő
Ŋ@
ŋ@
Ō@
ō@
Ŏ@
ŏ@az@
ő
ŗ
Œ@
œ@
Ŕ@
ŕ@
Ŗ@az@
Ř@
ř@
Ś@
ś@
Ŝ@az@
Ş
ů
ş
ť
Š@
š@
Ţ@
ţ@
Ť@az@
Ŧ@
ŧ@
Ũ@
ũ@
Ū@
ū@
Ŭ@
ŭ@
Ů@az@
Ű
Ŷ
ű@
Ų@
ų@
Ŵ@
ŵ@az@
ŷ@
Ÿ@
Ź@
ź@
Ż@az@
Ž
�&
ž
��
ſ
��
�
��
�
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@�@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@��@@
��
��@
��@
��@
��@
��@��@
��
�
��
�
��
�
��@
��@
�@
�@
�@az@
�@
�@
�@
�@
�@|@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�	@
�
@|@
�
�
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
� 
�@
�@
�@
�@
�@az@
�!@
�"@
�#@
�$@
�%@az@
�'
�^
�(
�C
�)
�6
�*
�0
�+@
�,@
�-@
�.@
�/@az@
�1@
�2@
�3@
�4@
�5@az@
�7
�=
�8@
�9@
�:@
�;@
�<@az@
�>@
�?@
�@@
�A@
�B@az@
�D
�Q
�E
�K
�F@
�G@
�H@
�I@
�J@az@
�L@
�M@
�N@
�O@
�P@az@
�R
�X
�S@
�T@
�U@
�V@
�W@az@
�Y@
�Z@
�[@
�\@
�]@az@
�_
�z
�`
�m
�a
�g
�b@
�c@
�d@
�e@
�f@��@
�h@
�i@
�j@
�k@
�l@|@
�n
�t
�o@
�p@
�q@
�r@
�s@az@
�u@
�v@
�w@
�x@
�y@az@
�{
ƈ
�|
Ƃ
�}@
�~@
�@
ƀ@
Ɓ@az@
ƃ@
Ƅ@
ƅ@
Ɔ@
Ƈ@az@
Ɖ
Ə
Ɗ@
Ƌ@
ƌ@
ƍ@
Ǝ@az@
Ɛ@
Ƒ@
ƒ@
Ɠ@
Ɣ@az@
Ɩ
�I
Ɨ
�j
Ƙ
�
ƙ
��
ƚ
Ƶ
ƛ
ƨ
Ɯ
Ƣ
Ɲ@
ƞ@
Ɵ@
Ơ@
ơ@az@
ƣ@
Ƥ@
ƥ@
Ʀ@
Ƨ@az@
Ʃ
Ư
ƪ@
ƫ@
Ƭ@
ƭ@
Ʈ@az@
ư@
Ʊ@
Ʋ@
Ƴ@
ƴ@az@
ƶ
��
Ʒ
ƽ
Ƹ@
ƹ@
ƺ@
ƻ@
Ƽ@az@
ƾ@
ƿ@
�@
�@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@|@
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@�@@
��
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
�@
�@
�@
�@
�@
�@az@
�
�3
�
�
�
�
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�	@
�
@az@
�
�
�
@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�&
�
� 
�@
�@
�@
�@
�@az@
�!@
�"@
�#@
�$@
�%@az@
�'
�-
�(@
�)@
�*@
�+@
�,@az@
�.@
�/@
�0@
�1@
�2@az@
�4
�O
�5
�B
�6
�<
�7@
�8@
�9@
�:@
�;@az@
�=@
�>@
�?@
�@@
�A@az@
�C
�I
�D@
�E@
�F@
�G@
�H@az@
�J@
�K@
�L@
�M@
�N@az@
�P
�]
�Q
�W
�R@
�S@
�T@
�U@
�V@az@
�X@
�Y@
�Z@
�[@
�\@az@
�^
�d
�_@
�`@
�a@
�b@
�c@az@
�e@
�f@
�g@
�h@
�i@az@
�k
��
�l
ǣ
�m
Lj
�n
�{
�o
�u
�p@
�q@
�r@
�s@
�t@az@
�v@
�w@
�x@
�y@
�z@az@
�|
ǂ
�}@
�~@
�@
ǀ@
ǁ@az@
ǃ@
DŽ@
Dž@
dž@
LJ@az@
lj
ǖ
NJ
ǐ
Nj@
nj@
Ǎ@
ǎ@
Ǐ@az@
Ǒ@
ǒ@
Ǔ@
ǔ@
Ǖ@az@
Ǘ
ǝ
ǘ@
Ǚ@
ǚ@
Ǜ@
ǜ@az@
Ǟ@
ǟ@
Ǡ@
ǡ@
Ǣ@�@
Ǥ
ǿ
ǥ
Dz
Ǧ
Ǭ
ǧ@
Ǩ@
ǩ@
Ǫ@
ǫ@az@
ǭ@
Ǯ@
ǯ@
ǰ@
DZ@az@
dz
ǹ
Ǵ@
ǵ@
Ƕ@
Ƿ@
Ǹ@az@
Ǻ@
ǻ@
Ǽ@
ǽ@
Ǿ@�@
�
��
�
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��
�
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
�@
�@|@
�
�
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�	@
�
@
�@az@
�
@
�@
�@
�@
�@az@
�
�.
�
�!
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
� @az@
�"
�(
�#@
�$@
�%@
�&@
�'@az@
�)@
�*@
�+@
�,@
�-@az@
�/
�<
�0
�6
�1@
�2@
�3@
�4@
�5@|@
�7@
�8@
�9@
�:@
�;@az@
�=
�C
�>@
�?@
�@@
�A@
�B@az@
�D@
�E@
�F@
�G@
�H@|@
�J
�#
�K
ȼ
�L
�}
�M
�h
�N
�[
�O
�U
�P@
�Q@
�R@
�S@
�T@az@
�V@
�W@
�X@
�Y@
�Z@az@
�\
�b
�]@
�^@
�_@
�`@
�a@az@
�c@
�d@
�e@
�f@
�g@v�@
�i
�v
�j
�p
�k@
�l@
�m@
�n@
�o@az@
�q@
�r@
�s@
�t@
�u@az@
�w@
�x@
�y@
�z@
�{@
�|@az@
�~
ș
�
Ȍ
Ȁ
Ȇ
ȁ@
Ȃ@
ȃ@
Ȅ@
ȅ@�@
ȇ@
Ȉ@
ȉ@
Ȋ@
ȋ@|@
ȍ
ȓ
Ȏ@
ȏ@
Ȑ@
ȑ@
Ȓ@az@
Ȕ@
ȕ@
Ȗ@
ȗ@
Ș@az@
Ț
ȯ
ț
ȩ
Ȝ@
ȝ@
Ȟ@
ȟ@
Ƞ@
ȡ@az
Ȣ
ȣazaz
Ȥaz
ȥ
Ȧaz
ȧaz
Ȩazw�az
Ȫ@
ȫ@
Ȭ@
ȭ@
Ȯ@|@
Ȱ
ȶ
ȱ@
Ȳ@
ȳ@
ȴ@
ȵ@az@
ȷ@
ȸ@
ȹ@
Ⱥ@
Ȼ@az@
Ƚ
��
Ⱦ
��
ȿ
��
�
��
�@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@@
��
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@
��@az@
��
�
��
�
��
�
��@
��@
��@
��@
��@
��@
��@
��@
��@az@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@|@
�	
�
�

�
�@
�@
�
@
�@
�@az@
�@
�@
�@
�@
�@|@
�
�
�@
�@
�@
�@
�@az@
�@
�@
� @
�!@
�"@�@
�$
ɓ
�%
�\
�&
�A
�'
�4
�(
�.
�)@
�*@
�+@
�,@
�-@|@
�/@
�0@
�1@
�2@
�3@az@
�5
�;
�6@
�7@
�8@
�9@
�:@az@
�<@
�=@
�>@
�?@
�@@az@
�B
�O
�C
�I
�D@
�E@
�F@
�G@
�H@az@
�J@
�K@
�L@
�M@
�N@az@
�P
�V
�Q@
�R@
�S@
�T@
�U@az@
�W@
�X@
�Y@
�Z@
�[@az@
�]
�x
�^
�k
�_
�e
�`@
�a@
�b@
�c@
�d@az@
�f@
�g@
�h@
�i@
�j@az@
�l
�r
�m@
�n@
�o@
�p@
�q@az@
�s@
�t@
�u@
�v@
�w@az@
�y
Ɇ
�z
ɀ
�{@
�|@
�}@
�~@
�@az@
Ɂ@
ɂ@
Ƀ@
Ʉ@
Ʌ@az@
ɇ
ɍ
Ɉ@
ɉ@
Ɋ@
ɋ@
Ɍ@az@
Ɏ@
ɏ@
ɐ@
ɑ@
ɒ@az@
ɔ
��
ɕ
ɰ
ɖ
ɣ
ɗ
ɝ
ɘ@
ə@
ɚ@
ɛ@
ɜ@az@
ɞ@
ɟ@
ɠ@
ɡ@
ɢ@az@
ɤ
ɪ
ɥ@
ɦ@
ɧ@
ɨ@
ɩ@az@
ɫ@
ɬ@
ɭ@
ɮ@
ɯ@az@
ɱ
ɾ
ɲ
ɸ
ɳ@
ɴ@
ɵ@
ɶ@
ɷ@az@
ɹ@
ɺ@
ɻ@
ɼ@
ɽ@az@
ɿ
��
�@
�@
��@
��@
��@|@
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@az@
��
�
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�Z
�
˩
�
��
�
�o
�
�>
�
�#
�	
�
�

�
�@
�@
�
@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@az@
�@
�@
� @
�!@
�"@az@
�$
�1
�%
�+
�&@
�'@
�(@
�)@
�*@az@
�,@
�-@
�.@
�/@
�0@�@
�2
�8
�3@
�4@
�5@
�6@
�7@az@
�9@
�:@
�;@
�<@
�=@az@
�?
�T
�@
�G@
�A
�B@
�C@
�D@
�E@
�F@az@
�H
�N
�I@
�J@
�K@
�L@
�M@az@
�O@
�P@
�Q@
�R@
�S@az@
�U
�b
�V
�\
�W@
�X@
�Y@
�Z@
�[@az@
�]@
�^@
�_@
�`@
�a@|@
�c
�i
�d@
�e@
�f@
�g@
�h@az@
�j@
�k@
�l@
�m@
�n@az@
�p
ʛ
�q
ʀ
�r
�y@
�s
�t@
�u@
�v@
�w@
�x@az@
�z@
�{@
�|@
�}@
�~@
�@az@
ʁ
ʎ
ʂ
ʈ
ʃ@
ʄ@
ʅ@
ʆ@
ʇ@�'@
ʉ@
ʊ@
ʋ@
ʌ@
ʍ@az@
ʏ
ʕ
ʐ@
ʑ@
ʒ@
ʓ@
ʔ@az@
ʖ@
ʗ@
ʘ@
ʙ@
ʚ@az@
ʜ
ʱ
ʝ
ʤ@
ʞ
ʟ@
ʠ@
ʡ@
ʢ@
ʣ@az@
ʥ
ʫ
ʦ@
ʧ@
ʨ@
ʩ@
ʪ@az@
ʬ@
ʭ@
ʮ@
ʯ@
ʰ@az@
ʲ
ʿ
ʳ
ʹ
ʴ@
ʵ@
ʶ@
ʷ@
ʸ@az@
ʺ@
ʻ@
ʼ@
ʽ@
ʾ@�@
�
��
�@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�8
��
�
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@az@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�
�
�
�
�

�@
�@
�@
�@
�	@|@
�@
�@
�
@
�@
�@az@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�+
�
�%
� @
�!@
�"@
�#@
�$@az@
�&@
�'@
�(@
�)@
�*@az@
�,
�2
�-@
�.@
�/@
�0@
�1@az@
�3@
�4@
�5@
�6@
�7@az@
�9
�p
�:
�U
�;
�H
�<
�B
�=@
�>@
�?@
�@@
�A@az@
�C@
�D@
�E@
�F@
�G@az@
�I
�O
�J@
�K@
�L@
�M@
�N@az@
�P@
�Q@
�R@
�S@
�T@az@
�V
�c
�W
�]
�X@
�Y@
�Z@
�[@
�\@az@
�^@
�_@
�`@
�a@
�b@az@
�d
�j
�e@
�f@
�g@
�h@
�i@az@
�k@
�l@
�m@
�n@
�o@|@
�q
ˎ
�r
�y@
�s
�t@
�u@
�v@
�w@
�x@az@
�z@
�{@
�|@
�}@
�~@
�@
ˀ@
ˁazaz
˂az
˃
˄az
˅
ˋ
ˆ
ˉ
ˇ
ˈazt�v�wUm
ˊv�v�
ˌaz
ˍazazw
ˏ
˜
ː
˖
ˑ@
˒@
˓@
˔@
˕@az@
˗@
˘@
˙@
˚@
˛@az@
˝
ˣ
˞@
˟@
ˠ@
ˡ@
ˢ@az@
ˤ@
˥@
˦@
˧@
˨@az@
˪
�
˫
�
ˬ
��
˭
��
ˮ
˻
˯
˵
˰@
˱@
˲@
˳@
˴@az@
˶@
˷@
˸@
˹@
˺@|@
˼
��
˽@
˾@
˿@
�@
�@az@
��@
��@
��@
��@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@az@
��
�
��
��@
��
��@
��@
��@
��@
��@az@
��
�
��@
��@
��@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�
�
�	
�@
�@
�@
�@
�@
�@
�@
�@
�@az@
�
@
�@
�@
�
@
�@az@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�N
�
�9
�
�,
� 
�&
�!@
�"@
�#@
�$@
�%@az@
�'@
�(@
�)@
�*@
�+@az@
�-
�3
�.@
�/@
�0@
�1@
�2@az@
�4@
�5@
�6@
�7@
�8@|@
�:
�A@
�;
�<@
�=@
�>@
�?@
�@@az@
�B
�H
�C@
�D@
�E@
�F@
�G@az@
�I@
�J@
�K@
�L@
�M@az@
�O
�j
�P
�]
�Q
�W
�R@
�S@
�T@
�U@
�V@az@
�X@
�Y@
�Z@
�[@
�\@az@
�^
�d
�_@
�`@
�a@
�b@
�c@|@
�e@
�f@
�g@
�h@
�i@�@
�k
�r@
�l
�m@
�n@
�o@
�p@
�q@az@
�s
�y
�t@
�u@
�v@
�w@
�x@az@
�z@
�{@
�|@
�}@
�~@|@
̀
��
́
̬
̂
̗
̃
̐
̄
̊
̅@
̆@
̇@
̈@
̉@az@
̋@
̌@
̍@
̎@
̏@az@@
̑
̒@
̓@
̔@
̕@
̖@az@
̘
̟@
̙
̚@
̛@
̜@
̝@
̞@az@
̠
̦
̡@
̢@
̣@
̤@
̥@az@
̧@
̨@
̩@
̪@
̫@az@
̭
��
̮
̻
̯
̵
̰@
̱@
̲@
̳@
̴@az@
̶@
̷@
̸@
̹@
̺@az@
̼
��
̽@
̾@
̿@
�@
�@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@|@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�#
��
�
��
�
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
�@
�@az@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�
�
�
�@
�@
�	@
�
@
�@
�@
�
@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@|@
�@
�@
� @
�!@
�"@az@
�$
�?
�%
�2
�&
�,
�'@
�(@
�)@
�*@
�+@|@
�-@
�.@
�/@
�0@
�1@az@
�3
�9
�4@
�5@
�6@
�7@
�8@az@
�:@
�;@
�<@
�=@
�>@|@
�@
�M
�A
�G
�B@
�C@
�D@
�E@
�F@az@
�H@
�I@
�J@
�K@
�L@|@
�N
�T
�O@
�P@
�Q@
�R@
�S@az@
�U@
�V@
�W@
�X@
�Y@|@
�[
�
�\
�5
�]
��
�^
͕
�_
�z
�`
�m
�a
�g
�b@
�c@
�d@
�e@
�f@|@
�h@
�i@
�j@
�k@
�l@az@
�n
�t
�o@
�p@
�q@
�r@
�s@az@
�u@
�v@
�w@
�x@
�y@az@
�{
͈
�|
͂
�}@
�~@
�@
̀@
́@az@
̓@
̈́@
ͅ@
͆@
͇@az@
͉
͏
͊@
͋@
͌@
͍@
͎@�@
͐@
͑@
͒@
͓@
͔@|@
͖
ͱ
͗
ͤ
͘
͞
͙@
͚@
͛@
͜@
͝@az@
͟@
͠@
͡@
͢@
ͣ@az@
ͥ
ͫ
ͦ@
ͧ@
ͨ@
ͩ@
ͪ@az@
ͬ@
ͭ@
ͮ@
ͯ@
Ͱ@az@
Ͳ
Ϳ
ͳ
͹
ʹ@
͵@
Ͷ@
ͷ@
͸@az@
ͺ@
ͻ@
ͼ@
ͽ@
;@az@
�
��
�@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@az@
��
�
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
�@
�@az@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�
�
�
�
�
�@
�	@
�
@
�@
�@az@
�@
�@
�@
�@
�@az@@
�
�@
�@
�@
�@
�@az@
�
�(
�
�"
�@
�@
�@
� @
�!@az@
�#@
�$@
�%@
�&@
�'@az@
�)
�/
�*@
�+@
�,@
�-@
�.@az@
�0@
�1@
�2@
�3@
�4@az@
�6
Υ
�7
�n
�8
�S
�9
�F
�:
�@
�;@
�<@
�=@
�>@
�?@az@
�A@
�B@
�C@
�D@
�E@az@
�G
�M
�H@
�I@
�J@
�K@
�L@az@
�N@
�O@
�P@
�Q@
�R@az@
�T
�a
�U
�[
�V@
�W@
�X@
�Y@
�Z@az@
�\@
�]@
�^@
�_@
�`@|@
�b
�h
�c@
�d@
�e@
�f@
�g@az@
�i@
�j@
�k@
�l@
�m@az@
�o
Ί
�p
�}
�q
�w
�r@
�s@
�t@
�u@
�v@az@
�x@
�y@
�z@
�{@
�|@az@
�~
΄
�@
΀@
΁@
΂@
΃@az@
΅@
Ά@
·@
Έ@
Ή@|@
΋
Θ
Ό
Β
΍@
Ύ@
Ώ@
ΐ@
Α@|@
Γ@
Δ@
Ε@
Ζ@
Η@|@
Ι
Ο
Κ@
Λ@
Μ@
Ν@
Ξ@az@
Π@
Ρ@
΢@
Σ@
Τ@az@
Φ
��
Χ
μ
Ψ
ε
Ω
ί
Ϊ@
Ϋ@
ά@
έ@
ή@az@
ΰ@
α@
β@
γ@
δ@az@@
ζ
η@
θ@
ι@
κ@
λ@az@
ν
��
ξ
��
ο@
�@
�@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@|@
��
�
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@az@
�	@
�
@
�@
�@
�
@az@
�
��
�
��
�
ψ
�
�-
�
� 
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�!
�'
�"@
�#@
�$@
�%@
�&@|@
�(@
�)@
�*@
�+@
�,@az@
�.
�;
�/
�5
�0@
�1@
�2@
�3@
�4@az@
�6@
�7@
�8@
�9@
�:@az@
�<
ς
�=@
�>@
�?
�~
�@
�{
�A
�c
�Baz
�Caz
�Daz
�Eaz
�Faz
�Gaz
�Haz
�Iaz
�Jaz
�Kaz
�Laz
�Maz
�N
�\
�O
�U
�P
�Raz
�Qazm
�S
�Tt�v�gCv�
�V
�Y
�W
�Xu�t�azv�
�Z
�[v�www�
�]az
�^
�a
�_
�`�"azju�v�
�bv�w�
�d�
�eaz
�faz
�gaz
�haz
�iaz
�jaz
�kaz
�laz
�maz
�naz
�oaz
�paz
�q
�x
�r
�u
�s
�tv�kXgQv�
�v
�wb�ubt�w
�yaz
�zazwUw�
�|
�}jgCaz�1
�az
π
ρ�w�^ww*
σ@
τ@
υ@
φ@
χ@az@
ω
Ͼ
ϊ
ϱ
ϋ
ϑ
ό@
ύ@
ώ@
Ϗ@
ϐ@az@
ϒ@
ϓ@
ϔ@
ϕ@
ϖ@
ϗ@
Ϙaz
ϙaz
Ϛaz
ϛaz
Ϝaz
ϝaz
Ϟaz
ϟaz
Ϡaz
ϡaz
Ϣaz
ϣ
Ϭ
Ϥ
ϩ
ϥ
ϧaz
ϦgCb�az
Ϩt�az
Ϫaz
ϫazv�gQ
ϭaz
Ϯaz
ϯ
ϰmazwUaz
ϲ
ϸ
ϳ@
ϴ@
ϵ@
϶@
Ϸ@�@
Ϲ@
Ϻ@
ϻ@
ϼ@
Ͻ@|@
Ͽ
��
�
��
�@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@|@
��
Г
��
�x
��
��
��
��
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@
��@
��az
��azaz
�
�az
�
�f
�
�-
�
�
�
�
�
�
�
�
�
����0���-
�
��?�wFv�
�
�
�b��v�
�
�wv��^�
�	
�
�

�
�
����b��M
�
������i��
�az
�
�v�w�wUa�
�
� 
�
�
�
�
�
��w�wq��
�
�v��Z�1t�
�az
�az�az
�!
�&
�"
�$
�#��u���
�%azu�az
�'
�*
�(
�)wc��{�w�
�+
�,{�ub�[az
�.
�K
�/
�=
�0
�6
�1
�4
�2
�3�j�j
�5azjaz
�7
�:
�8
�9t�m��m
�;
�<��w�w
�>
�D
�?
�A
�@kXv�gC
�B
�CgQ�"gQaz
�E
�H
�F
�Gv�����az
�I
�Jw����j
�L
�Z
�M
�T
�N
�Q
�O
�Pazw��
��
�R
�Sw�azw�az
�U
�X
�V
�Wv�v�az��az
�Yazv�
�[
�a
�\
�^az
�]��w
�_
�`v�u�u�m
�b
�d
�cv�w*waz
�ev�az
�gaz
�haz
�iaz
�j
�q
�k
�n
�l
�mkXwU���
�o
�p�&?US��0
�r
�u
�s
�t���v�w8
�v
�wkXv���az
�y
І
�z
Ѐ
�{@
�|@
�}@
�~@
�@az@
Ё@
Ђ@
Ѓ@
Є@
Ѕ@az@
Ї
Ѝ
Ј@
Љ@
Њ@
Ћ@
Ќ@�r@
Ў@
Џ@
А@
Б@
В@az@
Д
Я
Е
Т
Ж
М
З@
И@
Й@
К@
Л@az@
Н@
О@
П@
Р@
С@az@
У
Щ
Ф@
Х@
Ц@
Ч@
Ш@az@
Ъ@
Ы@
Ь@
Э@
Ю@az@
а
н
б
з
в@
г@
д@
е@
ж@|@
и@
й@
к@
л@
м@az@
о
��
п@
�@
�@
��@
��@az@
��@
��@
��@
��@
��@az@
��
Ѹ
��
�
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@az@
��
�
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
�@az@
�@
�@
�@
�@
�@
�@az@
�
�
�
�
�
�
�@
�@
�@
�@
�@|@
�@
�@
�	@
�
@
�@az@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@|@
�
ѫ@
�
�@
�@
�@
�@
� @
�!@
�"az
�#az
�$
ў
�%
�
�&
�k
�'
�F
�(
�4az
�)
�*az
�+az
�,az
�-az
�.az
�/
�2
�0
�1azw��w
�3azw��
�5
�=
�6az
�7az
�8az
�9az
�:az
�;az
�<azazv�
�>az
�?az
�@az
�Aaz
�Baz
�Caz
�D
�Eazu�u�az
�G
�Y
�H
�Q
�Iaz
�Jaz
�Kaz
�Laz
�Maz
�Naz
�O
�Pazv�v�az
�Raz
�Saz
�Taz
�Uaz
�Vaz
�Waz
�Xazazv�
�Z
�b
�[az
�\az
�]az
�^az
�_az
�`az
�aazaz�1
�caz
�daz
�eaz
�faz
�gaz
�haz
�i
�jazt�t�az
�laz
�m
�vaz
�n
�oaz
�paz
�qaz
�raz
�saz
�taz
�uazazwq
�waz
�xaz
�yaz
�zaz
�{az
�|az
�}az
�~azaz�w
рaz
с
ьaz
тaz
у
фaz
хaz
цaz
чaz
шaz
щaz
ъ
ыazb�b�az
эaz
ю
і
яaz
ѐaz
ёaz
ђaz
ѓaz
єaz
ѕazazgC
їaz
јaz
љaz
њaz
ћaz
ќaz
ѝazazgQ
џaz
Ѡaz
ѡazaz
Ѣ
ѣaz
Ѥaz
ѥaz
Ѧaz
ѧaz
Ѩaz
ѩaz
Ѫazazj
Ѭ
Ѳ
ѭ@
Ѯ@
ѯ@
Ѱ@
ѱ@az@
ѳ@
Ѵ@
ѵ@
Ѷ@
ѷ@az@
ѹ
�
Ѻ
��
ѻ
��
Ѽ
��
ѽ@
Ѿ@
ѿ@
�@
�@az@
��@
��@
��@
��@
��@
��@
��az
��
��
��az
��az
��az
��az
��az
��azaz
��gQaz
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��azaz
��v�t�
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��
�
��@
��@
��@
��@
��@az@
�@
�@
�@
�@
�@�@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�	
�$
�

�
�
�
�@
�
@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@az@
�@
� @
�!@
�"@
�#@az@
�%
�2
�&
�,
�'@
�(@
�)@
�*@
�+@az@
�-@
�.@
�/@
�0@
�1@az@
�3
�9
�4@
�5@
�6@
�7@
�8@az@
�:@
�;@
�<@
�=@
�>@az@
�@
�
�A
و
�B
�3
�C
�z
�D
ӡ
�E
��
�F
ҥ
�G
Ҋ
�H
�U
�I
�O
�J@
�K@
�L@
�M@
�N@|@
�P@
�Q@
�R@
�S@
�T@az@
�V
҄
�W@
�X
�\
�Y@
�Z@
�[@az@
�]@
�^@
�_@
�`
�v
�a
�p
�b@
�c
�m
�d@
�e
�j
�f
�g�@
�h��
�i�@
�k@
�l@�@@
�n
�o@�@
�q@
�r@@
�s
�t@
�u@@�
�w@
�x@
�y@
�z
�}
�{
�|�@�@
�~
҂�
�@
Ҁ@
ҁ�@
҃@�@
҅@
҆@
҇@
҈@
҉@az@
ҋ
Ҙ
Ҍ
Ғ
ҍ@
Ҏ@
ҏ@
Ґ@
ґ@|@
ғ@
Ҕ@
ҕ@
Җ@
җ@az@
ҙ
ҟ
Қ@
қ@
Ҝ@
ҝ@
Ҟ@|@
Ҡ@
ҡ@
Ң@
ң@
Ҥ@az@
Ҧ
�
ҧ
Ҵ
Ҩ
Ү
ҩ@
Ҫ@
ҫ@
Ҭ@
ҭ@az@
ү@
Ұ@
ұ@
Ҳ@
ҳ@az@
ҵ
һ
Ҷ@
ҷ@
Ҹ@
ҹ@
Һ@az@
Ҽ@
ҽ@
Ҿ@
ҿ@
�@|@
��
��
��
��
��@
��@
��@
��@
��@�T@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��
�
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
�
�
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�

�@
�@
�@
�@
�	@az@
�@
�@
�
@
�@
�@az@
�
�,
�
�
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
� 
�&
�!@
�"@
�#@
�$@
�%@|@
�'@
�(@
�)@
�*@
�+@az@
�-
Ӛ
�.
�4
�/@
�0@
�1@
�2@
�3@az@
�5@
�6@
�7@
�8@
�9@
�:@
�;az
�<az
�=az
�>az
�?az
�@az
�Aaz
�Baz
�Caz
�D
�t
�E
�Uaz
�F
�G
�N
�H
�K
�I
�Jazw���
�L
�Mw���v���
�O
�R
�P
�Q�K�<a�
�S
�T���J�"
�V
�e
�W
�^
�X
�[
�Y
�Z��w�;��
�\
�]wF��{�
�_
�b
�`
�awq�1�1�w
�c
�du��Z����
�f
�m
�g
�j
�h
�iw��wu�
�k
�l�����w�
�n
�q
�o
�p��j��

�r
�s�w��&�?
�u
ӌ
�v
�~
�waz
�x
�{
�y
�zwFt���az
�|
�}azw�waz
�
ӆ
Ӏ
Ӄ
Ӂ
ӂ��"���
ӄ
Ӆ��azaz��
Ӈ
Ӊ
ӈ{�"�{�
ӊ
Ӌ�w��
Ӎaz
ӎ
Ӕ
ӏ
ӑ
Ӑaz�;�
Ӓ
ӓaz����az
ӕ
Ә
Ӗ
ӗ���wcaz
әazv��@
ӛ
Ӝ@
ӝ@
Ӟ@
ӟ@
Ӡ@|@
Ӣ
�
ӣ
��
Ӥ
ӿ
ӥ
Ӳ
Ӧ
Ӭ
ӧ@
Ө@
ө@
Ӫ@
ӫ@az@
ӭ@
Ӯ@
ӯ@
Ӱ@
ӱ@az@
ӳ
ӹ
Ӵ@
ӵ@
Ӷ@
ӷ@
Ӹ@az@
Ӻ@
ӻ@
Ӽ@
ӽ@
Ӿ@az@
�
��
�
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��
��
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
�@az@
�
�
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�	@
�
@az@
�@
�
@
�@
�@
�@az@
�
�C
�
�(
�
�!
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
� @az@@
�"
�#@
�$@
�%@
�&@
�'@az@
�)
�6
�*
�0
�+@
�,@
�-@
�.@
�/@az@
�1@
�2@
�3@
�4@
�5@az@
�7
�=
�8@
�9@
�:@
�;@
�<@|@
�>@
�?@
�@@
�A@
�B@az@
�D
�_
�E
�R
�F
�L
�G@
�H@
�I@
�J@
�K@az@
�M@
�N@
�O@
�P@
�Q@az@
�S
�Y
�T@
�U@
�V@
�W@
�X@az@
�Z@
�[@
�\@
�]@
�^@�@
�`
�m
�a
�g
�b@
�c@
�d@
�e@
�f@�@
�h@
�i@
�j@
�k@
�l@az@
�n
�t
�o@
�p@
�q@
�r@
�s@az@
�u@
�v@
�w@
�x@
�y@az@
�{
�Z
�|
��
�}
Դ
�~
ԙ
�
Ԍ
Ԁ
Ԇ
ԁ@
Ԃ@
ԃ@
Ԅ@
ԅ@az@
ԇ@
Ԉ@
ԉ@
Ԋ@
ԋ@az@
ԍ
ԓ
Ԏ@
ԏ@
Ԑ@
ԑ@
Ԓ@|@
Ԕ@
ԕ@
Ԗ@
ԗ@
Ԙ@az@
Ԛ
ԧ
ԛ
ԡ
Ԝ@
ԝ@
Ԟ@
ԟ@
Ԡ@az@
Ԣ@
ԣ@
Ԥ@
ԥ@
Ԧ@az@
Ԩ
Ԯ
ԩ@
Ԫ@
ԫ@
Ԭ@
ԭ@az@
ԯ@
԰@
Ա@
Բ@
Գ@az@
Ե
��
Զ
��
Է
Խ
Ը@
Թ@
Ժ@
Ի@
Լ@az@
Ծ@
Կ@
�@
�@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�#
��
�
��
�
��
�
��@
��@
��@
��@
��@az@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�	
�
�

�
�@
�@
�
@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@az@
�@
�@
� @
�!@
�"@|@
�$
�?
�%
�2
�&
�,
�'@
�(@
�)@
�*@
�+@az@
�-@
�.@
�/@
�0@
�1@az@
�3
�9
�4@
�5@
�6@
�7@
�8@az@
�:@
�;@
�<@
�=@
�>@az@
�@
�M
�A
�G
�B@
�C@
�D@
�E@
�F@az@
�H@
�I@
�J@
�K@
�L@az@
�N
�T
�O@
�P@
�Q@
�R@
�S@az@
�U@
�V@
�W@
�X@
�Y@az@
�[
��
�\
Փ
�]
�x
�^
�k
�_
�e
�`@
�a@
�b@
�c@
�d@az@
�f@
�g@
�h@
�i@
�j@az@
�l
�r
�m@
�n@
�o@
�p@
�q@az@
�s@
�t@
�u@
�v@
�w@��@
�y
Ն
�z
Հ
�{@
�|@
�}@
�~@
�@az@
Ձ@
Ղ@
Ճ@
Մ@
Յ@az@
Շ
Ս
Ո@
Չ@
Պ@
Ջ@
Ռ@az@
Վ@
Տ@
Ր@
Ց@
Ւ@az@
Ք
կ
Օ
բ
Ֆ
՜
՗@
՘@
ՙ@
՚@
՛@az@
՝@
՞@
՟@
ՠ@
ա@az@
գ
թ
դ@
ե@
զ@
է@
ը@az@
ժ@
ի@
լ@
խ@
ծ@az@
հ
ս
ձ
շ
ղ@
ճ@
մ@
յ@
ն@az@
ո@
չ@
պ@
ջ@
ռ@az@
վ
��
տ@
�@
�@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@|@
�
�
�@
�@
�@
�@
�@|@
�@
�@
�@
�@
�@az@
�
�
�
�
�
�
�@
�@
�@
�	@
�
@az@
�@
�
@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�&@
� 
�!@
�"@
�#@
�$@
�%@|@
�'
�-
�(@
�)@
�*@
�+@
�,@az@
�.@
�/@
�0@
�1@
�2@az@
�4
��
�5
�
�6
֙
�7
�h
�8
�S
�9
�F
�:
�@
�;@
�<@
�=@
�>@
�?@�@
�A@
�B@
�C@
�D@
�E@az@
�G
�M
�H@
�I@
�J@
�K@
�L@az@
�N@
�O@
�P@
�Q@
�R@|@
�T
�[@
�U
�V@
�W@
�X@
�Y@
�Z@az@
�\
�b
�]@
�^@
�_@
�`@
�a@az@
�c@
�d@
�e@
�f@
�g@az@
�i
ք
�j
�w
�k
�q
�l@
�m@
�n@
�o@
�p@az@
�r@
�s@
�t@
�u@
�v@az@
�x
�~
�y@
�z@
�{@
�|@
�}@az@
�@
ր@
ց@
ւ@
փ@az@
օ
֒
ֆ
֌
և@
ֈ@
։@
֊@
֋@az@
֍@
֎@
֏@
֐@
֑@az@@
֓
֔@
֕@
֖@
֗@
֘@az@
֚
��
֛
ֶ
֜
֩
֝
֣
֞@
֟@
֠@
֡@
֢@az@
֤@
֥@
֦@
֧@
֨@az@
֪
ְ
֫@
֬@
֭@
֮@
֯@az@
ֱ@
ֲ@
ֳ@
ִ@
ֵ@az@
ַ
��
ָ
־
ֹ@
ֺ@
ֻ@
ּ@
ֽ@|@
ֿ@
�@
�@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��@
��
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@az@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�v
�
�?
�
� 
�
�
�
�
�@
�	@
�
@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@|@
�@
�@
�@
�@
�@az@
�!
�.
�"
�(
�#@
�$@
�%@
�&@
�'@|@
�)@
�*@
�+@
�,@
�-@az@
�/
�5
�0@
�1@
�2@
�3@
�4@az@
�6@
�7@
�8@
�9@
�:@
�;@
�<�
�=�az
�>az�
�@
�[
�A
�N
�B
�H
�C@
�D@
�E@
�F@
�G@|@
�I@
�J@
�K@
�L@
�M@az@
�O
�U
�P@
�Q@
�R@
�S@
�T@az@
�V@
�W@
�X@
�Y@
�Z@az@
�\
�i
�]
�c
�^@
�_@
�`@
�a@
�b@az@
�d@
�e@
�f@
�g@
�h@az@
�j
�p
�k@
�l@
�m@
�n@
�o@az@
�q@
�r@
�s@
�t@
�u@az@
�w
ר
�x
׍
�y
׆
�z
׀
�{@
�|@
�}@
�~@
�@az@
ׁ@
ׂ@
׃@
ׄ@
ׅ@az@@
ׇ
׈@
׉@
׊@
׋@
׌@az@
׎
כ
׏
ו
א@
ב@
ג@
ד@
ה@|@
ז@
ח@
ט@
י@
ך@az@
ל
ע
ם@
מ@
ן@
נ@
ס@az@
ף@
פ@
ץ@
צ@
ק@az@
ש
��
ת
׷
׫
ױ
׬@
׭@
׮@
ׯ@
װ@az@
ײ@
׳@
״@
׵@
׶@az@
׸
׾
׹@
׺@
׻@
׼@
׽@az@
׿@
�@
�@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
ع
��
�P
��
�
��
�
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��@
��@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�
�
�
�@
�@
�@
�@
�@az@
�@
�@
�	@
�
@
�@az@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�5
�
�(
�
�"
�@
�@
�@
� @
�!@az@
�#@
�$@
�%@
�&@
�'@az@
�)
�/
�*@
�+@
�,@
�-@
�.@az@
�0@
�1@
�2@
�3@
�4@az@
�6
�C
�7
�=
�8@
�9@
�:@
�;@
�<@az@
�>@
�?@
�@@
�A@
�B@az@
�D
�J
�E@
�F@
�G@
�H@
�I@|@
�K@
�L@
�M@
�N@
�O@az@
�Q
؈
�R
�m
�S
�`
�T
�Z
�U@
�V@
�W@
�X@
�Y@az@
�[@
�\@
�]@
�^@
�_@az@
�a
�g
�b@
�c@
�d@
�e@
�f@az@
�h@
�i@
�j@
�k@
�l@az@
�n
�{
�o
�u
�p@
�q@
�r@
�s@
�t@az@
�v@
�w@
�x@
�y@
�z@az@
�|
؂
�}@
�~@
�@
؀@
؁@az@
؃@
؄@
؅@
؆@
؇@az@
؉
؞
؊
ؑ@
؋
،@
؍@
؎@
؏@
ؐ@az@
ؒ
ؘ
ؓ@
ؔ@
ؕ@
ؖ@
ؗ@az@
ؙ@
ؚ@
؛@
؜@
؝@az@
؟
ج
ؠ
ئ
ء@
آ@
أ@
ؤ@
إ@az@
ا@
ب@
ة@
ت@
ث@az@
ح
س
خ@
د@
ذ@
ر@
ز@az@
ش@
ص@
ض@
ط@
ظ@az@
غ
�
ػ
��
ؼ
��
ؽ
��@
ؾ
ؿ@
�@
�@
��@
��@|@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��
�
��
�
��@
��@
��@
��@
��@az@
�@
�@
�@
�@
�@|@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@|@
�	
�
�

�
�@
�@
�
@
�@
�@az@
�@
�@
�@
�@
�@az@@
�
�@
�@
�@
�@
�@az@
�
�Q
�
�:
� 
�-
�!
�'
�"@
�#@
�$@
�%@
�&@az@
�(@
�)@
�*@
�+@
�,@az@
�.
�4
�/@
�0@
�1@
�2@
�3@az@
�5@
�6@
�7@
�8@
�9@az@
�;
�D
�<
�>
�=@az@
�?@
�@@
�A@
�B@
�C@az@
�E
�K
�F@
�G@
�H@
�I@
�J@az@
�L@
�M@
�N@
�O@
�P@az@
�R
�m
�S
�`
�T
�Z
�U@
�V@
�W@
�X@
�Y@az@
�[@
�\@
�]@
�^@
�_@az@
�a
�g
�b@
�c@
�d@
�e@
�f@az@
�h@
�i@
�j@
�k@
�l@az@
�n
�{
�o
�u
�p@
�q@
�r@
�s@
�t@az@
�v@
�w@
�x@
�y@
�z@|@
�|
ق
�}@
�~@
�@
ـ@
ف@az@
ك@
ل@
م@
ن@
ه@az@
ى
�t
ي
ۂ
ً
ڧ
ٌ
�>
ٍ
��
َ
٣
ُ
ٜ
ِ
ٖ
ّ@
ْ@
ٓ@
ٔ@
ٕ@az@
ٗ@
٘@
ٙ@
ٚ@
ٛ@az@@
ٝ
ٞ@
ٟ@
٠@
١@
٢@az@
٤
ٱ
٥
٫
٦@
٧@
٨@
٩@
٪@|@
٬@
٭@
ٮ@
ٯ@
ٰ@az@
ٲ
ٸ
ٳ@
ٴ@
ٵ@
ٶ@
ٷ@az@
ٹ@
ٺ@
ٻ@
ټ@
ٽ@
پ@
ٿaz
�az
�az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��azaz
��
��
��az
��azw�
��
��
��
��w�v�v�w�
��azw�az
��
�
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@|@
�
�1
�
�+
�@
�@
�@
�@
�@
�@
�|
�	|
�
|
�|
�|
�
|
�|
�|
�|
�|
�|
�|
�|
�|
�|�
�|
�|
�
�|
�|
�|
�|
�|
�|
� |
�!|
�"|
�#
�'|
�$|
�%|
�&|�
�(||
�)|
�*�|
�,@
�-@
�.@
�/@
�0@az@
�2
�8
�3@
�4@
�5@
�6@
�7@az@
�9@
�:@
�;@
�<@
�=@az@
�?
�v
�@
�[
�A
�N
�B
�H
�C@
�D@
�E@
�F@
�G@az@
�I@
�J@
�K@
�L@
�M@az@
�O
�U
�P@
�Q@
�R@
�S@
�T@|@
�V@
�W@
�X@
�Y@
�Z@az@
�\
�i
�]
�c
�^@
�_@
�`@
�a@
�b@az@
�d@
�e@
�f@
�g@
�h@az@
�j
�p
�k@
�l@
�m@
�n@
�o@|@
�q@
�r@
�s@
�t@
�u@|@
�w
ڒ
�x
څ
�y
�
�z@
�{@
�|@
�}@
�~@az@
ڀ@
ځ@
ڂ@
ڃ@
ڄ@az@
چ
ڌ
ڇ@
ڈ@
ډ@
ڊ@
ڋ@az@
ڍ@
ڎ@
ڏ@
ڐ@
ڑ@az@
ړ
ڠ
ڔ
ښ
ڕ@
ږ@
ڗ@
ژ@
ڙ@az@
ڛ@
ڜ@
ڝ@
ڞ@
ڟ@az@@
ڡ
ڢ@
ڣ@
ڤ@
ڥ@
ڦ@az@
ڨ
�
ک
��
ڪ
��
ګ
ڸ
ڬ
ڲ
ڭ@
ڮ@
گ@
ڰ@
ڱ@az@
ڳ@
ڴ@
ڵ@
ڶ@
ڷ@az@
ڹ
ڿ
ں@
ڻ@
ڼ@
ڽ@
ھ@az@
�@
�@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@
��@
��@
��@
��@
��@
��@
��@
��@az@
��
�
��
�
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
�@
�@az@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�
�
�
�@
�@
�	@
�
@
�@az@
�
@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@az@
�
�K
�
�0
�
�)
�
�#
�@
�@
� @
�!@
�"@|@
�$@
�%@
�&@
�'@
�(@az@@
�*
�+@
�,@
�-@
�.@
�/@az@
�1
�>
�2
�8
�3@
�4@
�5@
�6@
�7@az@
�9@
�:@
�;@
�<@
�=@az@
�?
�E
�@@
�A@
�B@
�C@
�D@az@
�F@
�G@
�H@
�I@
�J@|@
�L
�g
�M
�Z
�N
�T
�O@
�P@
�Q@
�R@
�S@az@
�U@
�V@
�W@
�X@
�Y@az@
�[
�a
�\@
�]@
�^@
�_@
�`@az@
�b@
�c@
�d@
�e@
�f@az@
�h
�u
�i
�o
�j@
�k@
�l@
�m@
�n@az@
�p@
�q@
�r@
�s@
�t@az@
�v
�|
�w@
�x@
�y@
�z@
�{@az@
�}@
�~@
�@
ۀ@
ہ@az@
ۃ
ܡ
ۄ
�9
ۅ
۸
ۆ
ۡ
ۇ
۔
ۈ
ێ
ۉ@
ۊ@
ۋ@az
یaz
ۍaz@
ۏ@
ې@
ۑ@
ے@
ۓ@az@
ە
ۛ
ۖ@
ۗ@
ۘ@
ۙ@
ۚ@az@
ۜ@
۝@
۞@
۟@
۠@az@
ۢ
۫
ۣ
ۥ
ۤ@az@
ۦ@
ۧ@
ۨ@
۩@
۪@az@
۬
۲
ۭ@
ۮ@
ۯ@
۰@
۱@az@
۳@
۴@
۵@
۶@
۷@az@
۹
��
ۺ
��
ۻ
�
ۼ@
۽@
۾@
ۿ@az@
�@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�,
��
�&
��@
��@
��@
��@
��@
��@
��|
��|
��|
��|
��|
��|
��
�
��|
��||
��|
��
��|
��|
��|
��||
��
��|
��|
��|
��|
��||
��|
��|
��|
��
�|
�|
�|
�||
�
�||B/
�|
�|
�|
�|
�|
�|
�
�
�||
�
�|
�||
�|
�
�	|
�
|
�||
�
�
|
�|
�|
�|
�|
�|
�|B/|
�||
�
�|
�|
�|
�|
�|
�||
�
�|
�|
� |
�!|
�"|
�#|
�$|
�%|B/|
�'@
�(@
�)@
�*@
�+@|@
�-
�3
�.@
�/@
�0@
�1@
�2@az@
�4@
�5@
�6@
�7@
�8@az@
�:
�p
�;
�V
�<
�I
�=
�C
�>@
�?@
�@@
�A@
�B@az@
�D@
�E@
�F@
�G@
�H@az@
�J
�P
�K@
�L@
�M@
�N@
�O@az@
�Q@
�R@
�S@
�T@
�U@az@
�W
�c
�X
�]
�Y@
�Z@
�[@
�\@az@
�^@
�_@
�`@
�a@
�b@az@
�d
�j
�e@
�f@
�g@
�h@
�i@az@
�k@
�l@
�m@
�n@
�o@az@
�q
܌
�r
�
�s
�y
�t@
�u@
�v@
�w@
�x@az@
�z@
�{@
�|@
�}@
�~@az@
܀
܆
܁@
܂@
܃@
܄@
܅@az@
܇@
܈@
܉@
܊@
܋@az@
܍
ܚ
܎
ܔ
܏@
ܐ@
ܑ@
ܒ@
ܓ@az@
ܕ@
ܖ@
ܗ@
ܘ@
ܙ@az@@
ܛ
ܜ@
ܝ@
ܞ@
ܟ@
ܠ@az@
ܢ
�
ܣ
��
ܤ
ܹ
ܥ
ܲ
ܦ
ܬ
ܧ@
ܨ@
ܩ@
ܪ@
ܫ@az@
ܭ@
ܮ@
ܯ@
ܰ@
ܱ@az@@
ܳ
ܴ@
ܵ@
ܶ@
ܷ@
ܸ@az@
ܺ
�@
ܻ
ܼ@
ܽ@
ܾ@
ܿ@
�@|@
��
��
��@
��@
��@
��@
��@�@
��@
��@
��@
��@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��
��
��@
��@
��@
��@
��@az@
��@
��@
�@
�@
�@�@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�=
�
�"
�
�
�	
�
�
@
�@
�@
�
@
�@az@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
� @
�!@az@
�#
�0
�$
�*
�%@
�&@
�'@
�(@
�)@az@
�+@
�,@
�-@
�.@
�/@az@
�1
�7
�2@
�3@
�4@
�5@
�6@az@
�8@
�9@
�:@
�;@
�<@az@
�>
�Y
�?
�L
�@
�F
�A@
�B@
�C@
�D@
�E@|@
�G@
�H@
�I@
�J@
�K@az@
�M
�S
�N@
�O@
�P@
�Q@
�R@az@
�T@
�U@
�V@
�W@
�X@az@
�Z
�g
�[
�a
�\@
�]@
�^@
�_@
�`@az@
�b@
�c@
�d@
�e@
�f@az@
�h
�n
�i@
�j@
�k@
�l@
�m@az@
�o@
�p@
�q@
�r@
�s@az@
�u
�`
�v
�2
�w
��
�x
ݒ
�y
�}
�z@
�{@
�|@az@
�~
݋
�
݅
݀@
݁@
݂@
݃@
݄@az@
݆@
݇@
݈@
݉@
݊@az@@
݌
ݍ@
ݎ@
ݏ@
ݐ@
ݑ@az@
ݓ
ݮ
ݔ
ݡ
ݕ
ݛ
ݖ@
ݗ@
ݘ@
ݙ@
ݚ@az@
ݜ@
ݝ@
ݞ@
ݟ@
ݠ@az@
ݢ
ݨ
ݣ@
ݤ@
ݥ@
ݦ@
ݧ@az@
ݩ@
ݪ@
ݫ@
ݬ@
ݭ@az@
ݯ
ݼ
ݰ
ݶ
ݱ@
ݲ@
ݳ@
ݴ@
ݵ@az@
ݷ@
ݸ@
ݹ@
ݺ@
ݻ@az@
ݽ
��
ݾ@
ݿ@
�@
�@
��@az@
��@
��@
��@
��@
��@az@
��
�
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@az@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�
�
�
�
�

�@
�@
�@
�@
�	@az@
�@
�@
�
@
�@
�@az@
�
�
�@
�@
�@
�@
�@|@
�@
�@
�@
�@
�@az@
�
�+
�
�%
� @
�!@
�"@
�#@
�$@az@
�&@
�'@
�(@
�)@
�*@az@@
�,
�-@
�.@
�/@
�0@
�1@az@
�3
��
�4
�k
�5
�P
�6
�C
�7
�=
�8@
�9@
�:@
�;@
�<@az@
�>@
�?@
�@@
�A@
�B@az@
�D
�J
�E@
�F@
�G@
�H@
�I@az@
�K@
�L@
�M@
�N@
�O@az@
�Q
�^
�R
�X
�S@
�T@
�U@
�V@
�W@az@
�Y@
�Z@
�[@
�\@
�]@az@
�_
�e
�`@
�a@
�b@
�c@
�d@az@
�f@
�g@
�h@
�i@
�j@az@
�l
އ
�m
�z
�n
�t
�o@
�p@
�q@
�r@
�s@az@
�u@
�v@
�w@
�x@
�y@az@
�{
ށ
�|@
�}@
�~@
�@
ހ@az@
ނ@
ރ@
ބ@
ޅ@
ކ@|@
ވ
ޕ
މ
ޏ
ފ@
ދ@
ތ@
ލ@
ގ@az@
ސ@
ޑ@
ޒ@
ޓ@
ޔ@az@
ޖ
��
ޗ@
ޘ@
ޙ@
ޚ@
ޛ@
ޜ@
ޝaz
ޞaz
ޟaz
ޠaz
ޡaz
ޢaz
ޣaz
ޤaz
ޥaz
ަ
�az
ާ
ި
޳
ީ
ެaz
ުaz
ޫazw�
ޭ
ް
ޮ
ޯ��j���
ޱ
޲����w�
޴
޻
޵
޸
޶
޷�
w�����
޹
޺u�wq��Z
޼
޿
޽
޾�jt�v�v�
�az�"v�
��
��
��
��
��
��
��
��
��
��v���wcv�
��
����<a��
��
��
��
����az���
��
���-wU��
��
��
��
��
��
��"�����
��
������?�;
��
��
��
�����i�"
��mJaz
��az
��
��
��azm
��maz
��
��
��
���1�Ku�azaz
��azwF
��@
��@
��@
��@
��@az@
��
�)
��
�
��
�
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@|@
�	@
�
@
�@
�@
�
@az@
�
�
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@|@
�
�#
�@
�@
� @
�!@
�"@az@
�$@
�%@
�&@
�'@
�(@az@
�*
�E
�+
�8
�,
�2
�-@
�.@
�/@
�0@
�1@az@
�3@
�4@
�5@
�6@
�7@az@
�9
�?
�:@
�;@
�<@
�=@
�>@|@
�@@
�A@
�B@
�C@
�D@�@
�F
�S
�G
�M
�H@
�I@
�J@
�K@
�L@az@
�N@
�O@
�P@
�Q@
�R@az@
�T
�Z
�U@
�V@
�W@
�X@
�Y@|@
�[@
�\@
�]@
�^@
�_@az@
�a
�;
�b
��
�c
ߚ
�d
�
�e
�r
�f
�l
�g@
�h@
�i@
�j@
�k@az@
�m@
�n@
�o@
�p@
�q@az@
�s
�y
�t@
�u@
�v@
�w@
�x@az@
�z@
�{@
�|@
�}@
�~@az@
߀
ߍ
߁
߇
߂@
߃@
߄@
߅@
߆@az@
߈@
߉@
ߊ@
ߋ@
ߌ@az@
ߎ
ߔ
ߏ@
ߐ@
ߑ@
ߒ@
ߓ@az@
ߕ@
ߖ@
ߗ@
ߘ@
ߙ@az@
ߛ
߰
ߜ
ߣ@
ߝ
ߞ@
ߟ@
ߠ@
ߡ@
ߢ@az@
ߤ
ߪ
ߥ@
ߦ@
ߧ@
ߨ@
ߩ@az@
߫@
߬@
߭@
߮@
߯@|@
߱
߾
߲
߸
߳@
ߴ@
ߵ@
߶@
߷@|@
߹@
ߺ@
߻@
߼@
߽@az@@
߿
�@
�@
��@
��@
��@az@
��
�
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@
��@
��az
��az
��az
��az
��az
��az
��azaz
��
��az
��
��
��
��w��j�
��az�Zaz
��
�
��
�
��@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@|@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�	@
�
@
�@az@
�
�&
�
�
�@
�@
�@
�@
�@
�@|@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
� @
�!@
�"@
�#@
�$@
�%@az@
�'
�4
�(
�.
�)@
�*@
�+@
�,@
�-@az@
�/@
�0@
�1@
�2@
�3@az@@
�5
�6@
�7@
�8@
�9@
�:@az@
�<
�
�=
�t
�>
�Y
�?
�L
�@
�F
�A@
�B@
�C@
�D@
�E@az@
�G@
�H@
�I@
�J@
�K@az@
�M
�S
�N@
�O@
�P@
�Q@
�R@az@
�T@
�U@
�V@
�W@
�X@az@
�Z
�g
�[
�a
�\@
�]@
�^@
�_@
�`@az@
�b@
�c@
�d@
�e@
�f@az@
�h
�n
�i@
�j@
�k@
�l@
�m@az@
�o@
�p@
�q@
�r@
�s@az@
�u
�
�v
�
�w
�}
�x@
�y@
�z@
�{@
�|@az@
�~@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�
�
�
�@
�@
�@
�@
�@|@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
��
�
��
�
�
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
��
�@
�@
�@
�@
�@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��
��
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@az@
��
�
��@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�
�
�
�@
�@
�@
�@
�@az@
�@
�	@
�
@
�@
�@az@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�Y
�
�9
�
�
�
�
�
�
� 
�^
�!
�<
�"
�/
�#
�)
�$@
�%@
�&@
�'@
�(@az@
�*@
�+@
�,@
�-@
�.@az@
�0
�6
�1@
�2@
�3@
�4@
�5@az@
�7@
�8@
�9@
�:@
�;@az@
�=
�W
�>
�D
�?@
�@@
�A@
�B@
�C@az@
�E@
�F@
�G@
�H@
�I@
�J@
�Kaz
�Laz
�Maz
�Naz
�Oaz
�Paz
�Qazaz
�R
�Sw
�Tw
�U
�Vw��t�w@
�X
�Y@
�Z@
�[@
�\@
�]@az@
�_
�z
�`
�m
�a
�g
�b@
�c@
�d@
�e@
�f@az@
�h@
�i@
�j@
�k@
�l@|@
�n
�t
�o@
�p@
�q@
�r@
�s@az@
�u@
�v@
�w@
�x@
�y@az@
�{
�
�|
�
�}@
�~@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@|@
�
��
�
�
�
�
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@|@
�@
�@
�@
�@
�@az@
�
�
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@@
�
��@
��@
��@
��@
��@|@
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��
�
��@
��@
��@
��@
��@
��@
��|
��|
��|
��|
��|
��|
��||
��
��|
�|
�|
�|
�
�
�
�
��|�
����6
�|�|
�@
�@
�@
�@
�@az@
�
�
�@
�@
�	@
�
@
�@az@
�
@
�@
�@
�@
�@az@
�
�
�
��
�
�0
�
�#
�
�
�@
�@
�@
�@
�@az@
�@
�@
� @
�!@
�"@az@
�$
�*
�%@
�&@
�'@
�(@
�)@|@
�+@
�,@
�-@
�.@
�/@az@
�1
��
�2
�8
�3@
�4@
�5@
�6@
�7@az@
�9@
�:@
�;@
�<@
�=@
�>@
�?az
�@
�az
�A
�B
�z
�C
�\
�Daz
�E
�W
�F
�Lv�
�G
�Hw�v�
�I
�Jw�
�Kw�v�w�
�M
�Rw�
�N
�Ow�w�
�Pw�
�Qw�azw�
�Sw�
�T
�Uw�
�Vw�azw�
�Xaz
�Yazw�
�Z
�[azw�azaz
�]
�^
�daz
�_az
�`
�av�
�bv�az
�cazv�
�e
�p
�f
�k
�gw�v�
�hv�
�iv�
�jv�w�w�
�lw�
�mw�
�n
�ow�w�az
�q
�vw�
�rw�
�sw�
�tw�
�uazw�w�
�ww�
�x
�yazw�azaz
�{
�|azaz
�}az
�~
�az
�azaz
�azgC
�az
�az
�az
�az
�az
�
�
�
��
�
�
�
�az
�
�az
�az
�az
�az
�az
�azaz
�
�az
�az
�
�az
�azgC
�azgCaz
�az
�az
�az
�
�
�az
�
�
�
�v�
�
�w�v�w�w�
�w�
�
�w�w�
�w�
�azw�
�az
�azw�
�
�az
�azw�azaz
�
�azaz
�az
�
�az
�az
�
�az
�azv�
�azw�az
�
��
�az
�az
�az
�az
�az
��
��
��az
��azv�
��v�azaz
��
��az
��az
��azaz
��az
��v�az
��
��
��az
��az
��az
��az
��
��
��az
��az
��az
��azw�
��
��azw�az
��az
��az
��az
��azaz
��az
��azw�
��az
��az
��az
��az
��az
��
��
��az
��az
��azv�
��v�
��v�azaz
��az
��az
��
��az
��azazv�
��
�[
�
�
�
�
�az
�az
�az
�az
�az
�az
�
�
�az
�az
�azw�
�w�azaz
�
�azaz
�az
�azw�
�az
�	az
�
az
�az
�
�
�
az
�az
�az
�az
�azv�az
�az
�azaz
�
�az
�azaz
�v�az
�
�F
�az
�az
�
�=
�az
�
�1
� 
�)az
�!
�"w�az
�#
�$
�'
�%
�&w�azazw�
�(w�azw�w�
�*w�
�+
�,
�/w�
�-w�
�.azw�
�0w�w�az
�2az
�3az
�4
�9
�5w�
�6w�
�7
�8w�azazw�
�:az
�;az
�<azazw�az
�>
�?azaz
�@az
�A
�Baz
�Caz
�Dazaz
�Eazw�
�Gaz
�Haz
�Iaz
�Jaz
�Kazw�
�L
�M
�R
�Nw�w�
�O
�Pw�w�
�Qazw�
�S
�W
�Taz
�Uaz
�Vazw�az
�Xazaz
�Y
�Zazw�az
�\
�
�]
�n
�^az
�_az
�`az
�aaz
�baz
�caz
�d
�i
�eazv�
�f
�gaz
�hazv�az
�jaz
�kazaz
�l
�mazv�az
�oaz
�paz
�qaz
�raz
�s
�|
�taz
�uaz
�vazv�
�w
�x
�z
�yw�v�w�
�{azw�az
�}az
�~az
�azaz
�az
�
�
�azv�w�az
�
�
�az
�az
�az
�az
�az
�az
�az
�
�
�az
�az
�azw�azaz
�az
�az
�w�az
�az
�az
�az
�az
�az
�az
�
�v�
�
�azv�
�v�azaz
�
�azaz
�
�azv�az
�az
�az
�az
�
�
�az
�az
�az
�az
�
�
�az
�az
�az
�az
�azw�
�w�az
�azaz
�az
�az
�az
�
�azw�az
�az
�az
�az
�az
�
��
��az
��az
��az
��azv�
��v�
��v�azaz
��
��az
��az
��az
��az
��azazv�
��
��
��@
��@
��@
��@
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��@
��@
��@
��@
�@�@
�@
�@
�@
�@
�@az@
�
�

�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�	@|@
�
�
�@
�
@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�O
�
�4
�
�'
�
�!
�@
�@
�@
�@
� @az@
�"@
�#@
�$@
�%@
�&@az@
�(
�.
�)@
�*@
�+@
�,@
�-@az@
�/@
�0@
�1@
�2@
�3@az@
�5
�B
�6
�<
�7@
�8@
�9@
�:@
�;@az@
�=@
�>@
�?@
�@@
�A@az@
�C
�I
�D@
�E@
�F@
�G@
�H@az@
�J@
�K@
�L@
�M@
�N@az@
�P
�k
�Q
�^
�R
�X
�S@
�T@
�U@
�V@
�W@az@
�Y@
�Z@
�[@
�\@
�]@az@
�_
�e
�`@
�a@
�b@
�c@
�d@|@
�f@
�g@
�h@
�i@
�j@az@
�l
�y
�m
�s
�n@
�o@
�p@
�q@
�r@az@
�t@
�u@
�v@
�w@
�x@az@@
�z
�{@
�|@
�}@
�~@
�@az@
�
�j
�
�
�
��
�
��
�
�
�
�
�@
�@
�@
�@
�@
�@
�
�az
�az
�v�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�azaz
�
�az
�azaz
�az@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
�@
�@
�@
�@az@
�
�@
�
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@az@
�	@
�
@
�@
�@
�
@az@
�
�9
�
�@
�
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�,
� 
�&
�!@
�"@
�#@
�$@
�%@|@
�'@
�(@
�)@
�*@
�+@az@
�-
�3
�.@
�/@
�0@
�1@
�2@az@
�4@
�5@
�6@
�7@
�8@az@
�:
�U
�;
�H
�<
�B
�=@
�>@
�?@
�@@
�A@az@
�C@
�D@
�E@
�F@
�G@az@
�I
�O
�J@
�K@
�L@
�M@
�N@az@
�P@
�Q@
�R@
�S@
�T@|@
�V
�c
�W
�]
�X@
�Y@
�Z@
�[@
�\@az@
�^@
�_@
�`@
�a@
�b@az@@
�d
�e@
�f@
�g@
�h@
�i@az@
�k
��
�l
�
�m
�
�n
�{
�o
�u
�p@
�q@
�r@
�s@
�t@az@
�v@
�w@
�x@
�y@
�z@az@
�|
�
�}@
�~@
�@
�@
�@|@
�@
�@
�@
�@
�@az@
�
�@
�
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@|@
�@
�@
�@
�@
�@az@
�
�
�
�
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@|@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
��
�
�
�@az@
�@
�@
�@
�@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��
��
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��
�
��@
��@
��@
��@
��@az@
�@
�@
�@
�@
�@az@@
�
�@
�@
�@
�@
�@az@
�
�
�
�
�
�
�@
�@
�@
�	@
�
@az@
�@
�
@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�,
� 
�&
�!@
�"@
�#@
�$@
�%@az@
�'@
�(@
�)@
�*@
�+@az@
�-
�3
�.@
�/@
�0@
�1@
�2@az@
�4@
�5@
�6@
�7@
�8@az@
�:
�
�;
�
�<
�
�=
�n
�>
�Y
�?
�L
�@
�F
�A@
�B@
�C@
�D@
�E@|@
�G@
�H@
�I@
�J@
�K@az@
�M
�S
�N@
�O@
�P@
�Q@
�R@az@
�T@
�U@
�V@
�W@
�X@az@
�Z
�a@
�[
�\@
�]@
�^@
�_@
�`@az@
�b
�h
�c@
�d@
�e@
�f@
�g@az@
�i@
�j@
�k@
�l@
�m@az@
�o
�
�p
�}
�q
�w
�r@
�s@
�t@
�u@
�v@az@
�x@
�y@
�z@
�{@
�|@az@
�~
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@�@
�@
�@
�@
�@
�@|@
�
��
�
��
�
�
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
�
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
�@
�@
�@
�@az@
�
�
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�
�	@
�
@
�@
�@
�
@az@
�@
�@
�@
�@
�@az@
�
�
�
�`
�
�E
�
�!
�
�
�@az@
�@
�@
�@
�@
� @az@
�"
�?
�#@
�$@
�%@
�&@
�'@
�(@
�)@
�*@@
�+
�,@@
�-
�.@
�/@
�0@
�1
�8
�2@
�3@
�4@
�5@
�6@
�7@@�@
�9@
�:@
�;@
�<@
�=@
�>@�
�@@
�A@
�B@
�C@
�D@az@
�F
�S
�G
�M
�H@
�I@
�J@
�K@
�L@az@
�N@
�O@
�P@
�Q@
�R@az@
�T
�Z
�U@
�V@
�W@
�X@
�Y@az@
�[@
�\@
�]@
�^@
�_@az@
�a
�v
�b
�o
�c
�i
�d@
�e@
�f@
�g@
�h@az@
�j@
�k@
�l@
�m@
�n@az@@
�p
�q@
�r@
�s@
�t@
�u@|@
�w
�
�x
�~
�y@
�z@
�{@
�|@
�}@az@
�@
�@
�@
�@
�@az@@
�
�@
�@
�@
�@
�@az@
�
��
�
�
�
�
�
�
�@
�@
�@
�@
�@�@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@|@
�
�
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
�@
�@
�@
�@
�@az@
�
��
�
�q
�
�.
�
�
�
�
�
�
�@
�@
�@
�@
�@az@
�@
�@
�	@
�
@
�@az@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
�'
�
�!
�@
�@
�@
�@
� @az@
�"@
�#@
�$@
�%@
�&@az@@
�(
�)@
�*@
�+@
�,@
�-@az@
�/
�J
�0
�=
�1
�7
�2@
�3@
�4@
�5@
�6@az@
�8@
�9@
�:@
�;@
�<@|@
�>
�D
�?@
�@@
�A@
�B@
�C@az@
�E@
�F@
�G@
�H@
�I@az@
�K
�X
�L
�R
�M@
�N@
�O@
�P@
�Q@az@
�S@
�T@
�U@
�V@
�W@�@
�Y
�_
�Z@
�[@
�\@
�]@
�^@az@
�`@
�a@
�b@
�c@
�d@
�e@
�faz
�gaz
�haz
�iaz
�jaz
�kaz
�laz
�maz
�naz
�oaz
�pazgCaz
�r
��
�s
�
�t
�
�u
�{
�v@
�w@
�x@
�y@
�z@az@
�|@
�}@
�~@
�@
�@|@
�
�
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@az@
�
��
�
��
�@
�@
�@
�@
�@
�@
�az
�az
�az
�az
�azaz
�
�az
�az
�az
�az
�az
�azaz
�
�az
�az
�
�
�az
�azaz
�az
�
�az
�az
�azaz
�
�az
�az
�az
�az
�az
�az
�azw�azaz
�az
�
�azaz
�az
�az
�
�azaz
�
�az
�az
�az
��az
��az
��az
��az�az
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@|@
��
��
��@
��
��
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@
��@
��@az@
��
�0
��
�
��
�
��
�
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@az@
�
�

�@
�@
�@
�@
�@
�	@|@
�@
�@
�
@
�@
�@
�@|@
�
�!
�
�
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
� @az@
�"
�)
�#@
�$@
�%@
�&@
�'@
�(@az@
�*@
�+@
�,@
�-@
�.@
�/@az@
�1
�:@
�2@
�3
�4@
�5@
�6@
�7@
�8@
�9@|@
�;
�J
�<
�C
�=@
�>@
�?@
�@@
�A@
�B@|@
�D@
�E@
�F@
�G@
�H@
�I@az@
�K
�R
�L@
�M@
�N@
�O@
�P@
�Q@az@
�S@
�T@
�U@
�V@
�W@
�X@|@
�Z
�,
�[
�*
�\
��
�]
�
�^
�}
�_
�n
�`
�g
�a@
�b@
�c@
�d@
�e@
�f@|@
�h@
�i@
�j@
�k@
�l@
�m@az@
�o
�v
�p@
�q@
�r@
�s@
�t@
�u@az@
�w@
�x@
�y@
�z@
�{@
�|@|@
�~
�
�
�
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@|@
�
�
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@az@
�
�
�
�
�@
�@
�@
�@
�@
�@
�@az@@
�
�@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@az@
�@
�@
��@
��@
��@
��@az@
��
�
��
��
��
��
��
��
��@
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@
��@az@@
��
��@
��@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
�@
�@
�@az@
�
�
�
�	
�
�
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@az@
�

�
�@
�@
�
@
�@
�@
�@az@
�@
�@az@
�
�$
�
�
�@
�@
�@
�@
�@
�@az@
�@
�@
� @
�!@
�"@
�#@|@
�%@
�&@
�'@
�(@
�)@az@
�+
��
�,
�d
�-
�E
�.
�6@
�/
�0@
�1@
�2@
�3@
�4@
�5@az@
�7
�>
�8@
�9@
�:@
�;@
�<@
�=@az@
�?@
�@@
�A@
�B@
�C@
�D@az@
�F
�U
�G
�N
�H@
�I@
�J@
�K@
�L@
�M@az@
�O@
�P@
�Q@
�R@
�S@
�T@az@
�V
�]
�W@
�X@
�Y@
�Z@
�[@
�\@az@
�^@
�_@
�`@
�a@
�b@
�c@|@
�e
�
�f
�u
�g
�n
�h@
�i@
�j@
�k@
�l@
�m@az@
�o@
�p@
�q@
�r@
�s@
�t@az@
�v
�
�w@
�x@
�y@
�z@
�{@
�|@
�}@
�~|
�|
�|
�|
�|
�||
�|
�
�|
�|
�|
�|
�|
�||
�|
�
�|
�|
�|
�|
�||
�
�|
�||
�|
�|
�|
�
�||
�
�||�
�@
�@
�@
�@
�@
�@az@
�
�
�
�
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@|@
�@
�@
�@
�@
�@
��@az@
��
��
��
��
��
��@
��
��@
��@
��@
��@
��@
��@|@
��
��
��@
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@
��@az@
��@
��
��
��@
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@
��@az@
��
�
��
�
��
�
��@
��@
��@
��@
�@
�@az@
�@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@az@
�@
�@
�	@
�
@
�@
�@az@
�
�
�
�
�@
�@
�@
�@
�@
�@|@
�@
�@
�@
�@
�@
�@xv@
�
�%
�@
� @
�!@
�"@
�#@
�$@az@
�&@
�'@
�(@
�)@
�*@
�+@az@
�-
�	
�.
�
�/
�Y
�0
�H
�1
�@
�2
�9
�3@
�4@
�5@
�6@
�7@
�8@az@
�:@
�;@
�<@
�=@
�>@
�?@|@
�A@
�B@
�C@
�D@
�E@
�F@
�G@az@
�I
�Q
�J@
�K@
�L@
�M@
�N@
�O@
�P@az@
�R@
�S@
�T@
�U@
�V@
�W@
�X@az@
�Z
�y
�[
�j
�\
�c
�]@
�^@
�_@
�`@
�a@
�b@az@
�d@
�e@
�f@
�g@
�h@
�i@az@
�k
�r
�l@
�m@
�n@
�o@
�p@
�q@az@
�s@
�t@
�u@
�v@
�w@
�x@az@
�z
�
�{
�
�|@
�}@
�~@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@az@
�
��
�
�
�
�
�
�
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@az@
�
��
�
�
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@|@
��@
��@
��@
��@
��@
��@
��@|@
��
��
��
��
��
��
��@
��@
��@
��@
��@
��@az@
��@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@
��@|@
��@
��@
��@
��@
��@
��@az@
��
�
��
��
��@
��@
��@
��@
��@
��@|@
��@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@|@
�

�h
�
�z
�
�G
�
��
�
�M
�
�.
�
�
�
�
�
�
�@
�@az@
�@
�@az@
�
�
�@
�@az@
�@
�@az@
� 
�'
�!
�$
�"@
�#@az@
�%@
�&@az@
�(
�+
�)@
�*@az@
�,@
�-@az@
�/
�>
�0
�7
�1
�4
�2@
�3@|@
�5@
�6@az@
�8
�;
�9@
�:@az@
�<@
�=@az@
�?
�F
�@
�C
�A@
�B@az@
�D@
�E@az@
�G
�J
�H@
�I@az@
�K@
�L@|@
�N
�j
�O
�^
�P
�W
�Q
�T
�R@
�S@az@
�U@
�V@az@
�X
�[
�Y@
�Z@|@
�\@
�]@az@
�_
�f
�`
�c
�a@
�b@az@
�d@
�e@az@
�g@
�h@
�i@|@
�k
�
�l
�s
�m
�p
�n@
�o@az@
�q@
�r@|@
�t
�
�u@
�v@
�waz
�xaz
�yazaz
�zaz
�{
�|azaz
�}az
�~
�az
�az
�az
�az
�az
�az
�az
�azaz
�
�az
�az
�az
�az
�az
�az
�az
�az
�az
�azaz
�az
�az
�
�azaz
�azv�
�az
�azaz
�
�azaz
�
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�azv�az
�
��
�
�
�@
�@az@
�@
�@az@@
��
��@
��@az@
��
�
��
��
��
��
��
��
��
��
��@
��@az@
��@
��@az@
��
��
��@
��@az@
��@
��@|@
��
��@
��
��@
��@az@
��
��
��@
��@az@
��@
��@az@
��
��
��
��
��
��
��@
��@az@
��@
��@az@
��
��
��@
��@az@
��@
��@az@
�
�
�
�
�@
�@az@
�@
�@az@
�
�
�@
�@az@
�@
�@az@
�
�+
�
�"
�
�
�
�
�@
�	@
�
az
�azaz
�
�
�
�az
�az
�az
�azazwUaz
�
�az
�az
�
�azt�t�az
�@
�@az@
�
�
�@
�@az@
� @
�!@az@
�#
�'
�$@
�%@
�&@az@
�(@
�)@
�*@az@
�,
�;
�-
�4
�.
�1
�/@
�0@az@
�2@
�3@az@
�5
�8
�6@
�7@az@
�9@
�:@az@
�<
�C
�=
�@
�>@
�?@az@
�A@
�B@az@
�D@
�E@
�F@|@
�H
��
�I
�
�J
�
�K
�x
�L@
�M
�P
�N@
�O@az@
�Q@
�R@
�S@az
�Taz
�U
�Vazaz
�W
�X
�j
�Yazaz
�Z
�[
�f
�\az
�]az
�^azt�
�_
�`
�c
�at�
�bt�u�t�
�dt�
�et�u�t�
�gaz
�haz
�iazazkXaz
�kaz
�laz
�m
�naz
�oaz
�paz
�qaz
�raz
�s
�u
�tazazt�
�v
�wazkXu�az
�y
�
�z
�}
�{@
�|@az@
�~@
�@|@
�
�
�@
�@|@
�@
�@az@
�
�
�
�
�
�
�@
�@az@
�@
�@az@
�
�
�@
�@az@
�@
�@az@
�
�
�@
�@
�@az@@
�
�@
�@az@
�
�
�
�
�
�
�
�
�@az@
�@
�@az@
�
�
�@
�@az@
�@
�@az@
�
�@
�
�@
�@az@
�@
�@az@
�
��
�
�
�
�
�@
�@|@
�@
�@az@
��
��
��@
��@az@
��@
��@az@@
��@
��
��@
��@az@
��
�,
��
��
��
��
��
��@
��
��@
��@az@
��
��
��@
��@az@
��@
��@az@@
��
��
��
��@
��@az@
��@
��@|@
��
�
��
��
��
��
��@
��@az@
��@
��@az@
��
��
��@
��@az@
��@
��@
��@
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�
�
�
�az
�
�az
�az
�az
�az
�az
�az
�az
�	az
�
az
�az
�az
�
az
�az
�az
�az
�az
�az
�azwazaz
�az
�az
�azb�
�az
�az
�az
�azazb�
�
�%
�
�"
� @
�!@az@
�#@
�$@az@
�&
�)
�'@
�(@az@
�*@
�+@az@
�-
�^
�.
�=
�/
�6
�0
�3
�1@
�2@az@
�4@
�5@az@
�7
�:
�8@
�9@az@
�;@
�<@az@
�>
�W
�?@
�@@
�A@
�B@az
�C
�Dazaz
�E
�Faz
�Gaz
�Haz
�Iaz
�Jaz
�Kaz
�Laz
�Maz
�Naz
�O
�Saz
�P
�Q
�RazmgCm
�Taz
�U
�Vt�gQb�az
�X
�[
�Y@
�Z@az@
�\@
�]@az@
�_
�n
�`
�g
�a
�d
�b@
�c@az@
�e@
�f@az@
�h
�k
�i@
�j@az@
�l@
�m@|@
�o
�s
�p@
�q@
�r@|@
�t
�w
�u@
�v@az@
�x@
�y@az@
�{
��
�|
�[
�}
�
�~
�
�
�
�@
�
�
�@
�@az@
�@
�@az@
�
�
�
�
�@
�@az@
�@
�@az@
�
�
�@
�@az@
�@
�@az@
�
�
�
�
�@
�@az@
�
�
�@
�@az@
�@
�@az@
�
�
�
�
�@
�@az@
�@
�@az@
�
�
�@
�@az@
�@
�@az@
�
��
�
��
�
�
�
�
�@
�@az@
�@
�@az@
�
�
�@
�@az@
�@
�@az@
��
��
��
��
��@
��@az@
��@
��@|@@
��
��@
��@az@
��
��
��
��
��
��
��@
��@az@
��@
��@az@
��
��
��@
��@az@
��@
��@az@
��
�T
��
��
��@
��@az@
��@
��@
��@
��az
��az
��
�G
��az
��
�;
��
�1
��
�
��
�
��
�
��az
��az
��
�
��az
��
�
�azaz�
�
�az��az
�azaz
�
�azjaz
�azaz
�
�azaz
�az
�
�az�
�
�az
�az
�az
�az
�	az
�
az
�az
�az
�
az
�az
�az
�az
�az
�az
�azazv�
�azaz
�
�azaz
�
�az
�az
�azazv�
�
�%
�az
�azaz
� 
�!az
�"az
�#az
�$azv�az
�&azaz
�'
�(az
�)
�-
�*az
�+az
�,azv�az
�.az
�/az
�0azv�az
�2az
�3az
�4az
�5az
�6azaz
�7
�8az
�9az
�:azazj
�<azaz
�=
�>azaz
�?az
�@
�Aaz
�Baz
�Caz
�Daz
�E
�Faz��az
�Haz
�Iaz
�Jazaz
�K
�Laz
�Mazaz
�Naz
�O
�Paz
�Qaz
�Raz
�Sazv�az
�U
�X
�V@
�W@az@
�Y@
�Z@az@
�\
�
�]
�
�^
�j
�_
�c
�`@
�a@
�b@az@
�d
�g
�e@
�f@az@
�h@
�i@az@
�k
�r
�l
�o
�m@
�n@az@
�p@
�q@az@
�s
�
�t@
�u@
�v@|
�w
�x|
�y|
�z|
�{|
�||
�}|
�~|
�|
�|
�|
�|
�|
�||
�
�|
�|
�|
�|
�|
�|
�|
�|
�|
�|
�|
�|
�|
�|
�|
�|B/|
�@
�@az@
�
�
�
�
�
�
�@
�@|@
�@
�@az@
�
�
�@
�@az@
�@
�@az@
�
�
�
�
�@
�@az@
�@
�@az@
�
�
�@
�@az@
�@
�@az@
�
��
�
��
�
�@
�
�@
�@az@
�
��
�@
��@az@
��@
��@az@
��
��
��
��
��@
��@az@
��@
��@az@az
��
��@
��@az@
��
��
��
��
��@
��@
��@az@
��
��
��@
��@az@
��@
��@az@
��
��
��
��
��@
��@az@
��@
��@az@
��
��
��@
��@az@
��@
��@az@
��
�k
��
�-
��
�
��
�
��
�
��
�
�@
�@az@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@az@
�@
�@az@
�
�
�
�

�@
�	@az@
�@
�@az@
�
�
�@
�@az@
�@
�@az@
�
�
�
�
�@
�@
�@az@
�@
�@
�@az@
�
�&
� 
�#
�!@
�"@az@
�$@
�%@az@
�'
�*
�(@
�)@az@
�+@
�,@az@
�.
�L
�/
�=
�0
�7
�1
�4
�2@
�3@az@
�5@
�6@az@
�8
�;
�9@
�:@az@
�<@|@
�>
�E
�?
�B
�@@
�A@az@
�C@
�D@az@
�F
�I
�G@
�H@az@
�J@
�K@az@
�M
�\
�N
�U
�O
�R
�P@
�Q@|@
�S@
�T@az@
�V
�Y
�W@
�X@az@
�Z@
�[@az@
�]
�d
�^
�a
�_@
�`@az@
�b@
�c@az@
�e
�h
�f@
�g@az@
�i@
�j@az@
�l
��
�m
�
�n
�}
�o
�v
�p
�s
�q@
�r@az@
�t@
�u@az@
�w
�z
�x@
�y@az@
�{@
�|@az@
�~
�
�
�
�@
�@az@
�@
�@az@@
�
�@
�@az@
�
��
�
�
�
�
�@
�@
�@
�az
�az
�az
�az
�az
�az
�az
�az
�az
�
�
�
�
�
�
�
�
�az
�azazjaz
�
�azazgQ
�az
�az
�azu�az
�az
�az
�azaz
�v�az
�
�az
�
�az
�
�
�azv�azaz
�jazaz
�
�azaz
�
�azv�az
�@
�@|@
�
�
�@
�@az@
�@
�@az@
��
��
��
��
��@
��@az@
��@
��@az@
��
��
��@
��@az@
��@
��@
��@az
��
��
��az
��az
��
��az
��az
��azmaz
��az
��az
��az
��az
��
��v�azkXaz
��
�I
��
��
��
��@
��
��@
��@az@
��
��
��@
��@az@
��@
��@|@
��
�B
��
�?
��@
��@
��@
��az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�
�!
�
�
�
�
�azv�
�
�v�
�v�
�v�
�v�
�v�
�	v�
�
v�
�v�
�v�
�
v�
�v�
�
�v�
�
�
�
�v�v�az
�v�azv�
�v�v�
�
�v�azv�az
�v�az
�
�
�azv�az
�
� azv�azv�
�"
�9
�#
�6
�$
�5
�%m
�&v�
�'v�
�(v�
�)v�
�*v�
�+v�
�,v�
�-v�
�.v�
�/v�
�0v�
�1v�
�2v�v�
�3
�4v�wv�azgQ
�7
�8gCazazv�
�:
�<az
�;b�az
�=
�>azv�v�az
�@@
�A@az@
�C
�F
�D@
�E@az@
�G@
�H@az@
�J
�Y
�K
�R
�L
�O
�M@
�N@az@
�P@
�Q@az@
�S
�V
�T@
�U@az@
�W@
�X@az@
�Z
�a
�[
�^
�\@
�]@az@
�_@
�`@az@
�b
�e
�c@
�d@az@
�f@
�g@az@
�i
�
�j
�
�k
�
�l
�
�m
�
�n
�}
�o
�v
�p
�s
�q@
�r@|@
�t@
�u@az@
�w
�z
�x@
�y@az@
�{@
�|@az@
�~
�
�
�
�@
�@az@
�@
�@az@
�
�
�@
�@az@
�@
�@�@
�
�
�
�@
�
�@
�@az@@
�
�@
�@az@
�
�
�
�
�@
�@az@
�@
�@az@
�@
�@
�@�@
�
��
�
�
�
�
�
�
�@
�@az@
�@
�@az@
�
�
�@
�@|@
�@
�@az@
�
�@
�
�@
�@az@
�
��
�@
�@
�@
�azaz
�
�az
�az
�az
��az
��az
��az
��az
��azaz
��
��az
��az
��az
��
��v�azaz
��
��az
��az
��azaz
��az
��v�az
��@
��@az@
��
��
��
��
��
��
��@
��@az@
��@
��@az@
��
��
��@
��@az@
��@
��@az@
��
��
��
��
��@
��@az@
��@
��@az@
��
��
��@
��@|@
��@
��@
�@
�az
�az
�az
�az
�az
�azaz
�
�az
�az
�az
�az
�az
�az
�azaz
�
�az
�az
�azaz
�
�	azaz
�

�azaz
�
�
az
�az
�az
�az
�az
�az
�az
�azu�az
�
�F
�
�3
�
�$
�
� 
�
�
�@
�@az@
�@
�@az@
�!@
�"@
�#@az@
�%
�,
�&
�)
�'@
�(@az@
�*@
�+@az@
�-
�0
�.@
�/@az@
�1@
�2@|@
�4
�=
�5
�9@
�6
�7@
�8@az@
�:@
�;@
�<@az@
�>
�B
�?@
�@@
�A@az@@
�C
�D@
�E@az@
�G
�n
�H
�T
�I
�M
�J@
�K@
�L@az@
�N
�Q
�O@
�P@|@
�R@
�S@az@
�U
�g
�V
�Y
�W@
�X@az@
�Z@
�[@
�\@
�]az
�^az
�_az
�`az
�aaz
�baz
�cazaz
�daz
�eaz
�fv�az
�h
�k
�i@
�j@az@
�l@
�m@az@
�o
�~
�p
�w
�q
�t
�r@
�s@az@
�u@
�v@az@
�x
�{
�y@
�z@az@
�|@
�}@az@@
�
�@
�@az@
�
��
�
�
�
�
�
�
�
�
�
�
�@
�@az@
�@
�@az@
�
�
�@
�@az@
�@
�@az@
�
�
�
�
�@
�@az@
�@
�@az@@
�
�@
�@az@
�
�
�
�
�|
�@
�@az@@
�
�@
�@az@
�
�@
�
�@
�@az@
�
�
�@
�@az@
�@
�@az@
�
��
�
�@
�
�
�
�@
�@az@
�@
�@az@
��
��
��
��
��@
��@az@
��@
��@az@
��
��
��@
��@az@
��@
��@az@
��
��
��
��
��
��
��@
��@az@
��@
��@
��@
��@
��@
��@az@
��
��
��@
��@az@
��@
��@|@
��
��
��
��
��@
��@az@
��@
��@az@
��
��
��@
��@az@
��@
��@az@
��
�
�
�
�
�
�
�
�
�
�@
�@az@
�@
�@az@
�@
�@
�@
�@
�
�|
�
�!az
�
�az
�az
�az
�	az
�
az
�az
�
�
�
�az
�
�az
�
�
�t�azt�t�az
�
�
�az
�
�
�v�azv�
�azv�az
�az
�
�azu�
�azu�azu�
� azv�
�"
�Paz
�#
�$az
�%az
�&az
�'az
�(
�J
�)
�:
�*
�0az
�+
�,az
�-
�.azgQgQ
�/gQazaz
�1
�2
�5az
�3
�4azazgC
�6
�9
�7
�8azgCazgCgCaz
�;
�E
�<
�A
�=az
�>az
�?
�@gCazgCaz
�Baz
�Cazaz
�DkXaz
�Fw
�Gaz
�Haz
�Ib�azb�
�Kaz
�L
�O
�MgC
�Nazv�azwgCaz
�Q
�Raz
�Saz
�T
�p
�U
�]az
�V
�Waz
�Xazaz
�Y
�Zaz
�[az
�\azazv�
�^az
�_
�av�
�`v�az
�b
�k
�c
�g
�dv�
�eaz
�fazv�az
�hv�
�iv�
�jv�v�azv�
�l
�mv�
�nv�az
�oazv�
�q
�u
�razaz
�s
�tazv�az
�vazaz
�waz
�x
�yaz
�zazaz
�{azub
�}az
�~azaz
�
�az
�az
�az
�az
�az
�az
�azaz
�
�azaz
�w�az
�
�
�
�
�@
�@az@
�@
�@az@
�
�
�@
�@az@
�@
�@az@
�
�
�
�
�
�
�@
�@az@
�@
�@az@
�
�
�@
�@az@
�@
�@az@
�
�
�@
�@
�@az@
�
�
�@
�@az@
�@
�@az@
�
�
�
��
�
�
�
�
�@
�@az@
�@
�@az@
�
��
�az
��az
��
��
��
�
��
�
��az
��
��
��az
��azaz
��az
��
��azaz
��az
��az
��
��az
��azaz
��
��az
��az
��az
��azaz
��az
��
��az
��azaz
��
��az
��az
��az
��az
��azaz
��
��azaz@
��azaz
��az
��az
��az
��
��az
��az
��az
��az
��az
��azaz
��az
��az
��
��azaz
��
��az
�az
�azaz
�
�azaz
�az
�
�azaz
�az
�
�azaz@
�
�Haz
�
�azaz
�az
�az
�
�
�1
�az
�az
�	
�az
�
az
�az
�az
�
az
�az
�az
�az
�
�azaz
�az
�
�az
�az
�az
�azaz
�
�az
�az
�azaz@
�azaz
�
� azaz
�!az
�"
�#azaz
�$az
�%
�&az
�'azaz
�(az
�)
�*az
�+azaz
�,az
�-az
�.
�/az
�0az@az
�2az
�3azaz
�4az
�5
�6az
�7azaz
�8az
�9
�:azaz
�;
�<az
�=az
�>az
�?azaz
�@az
�Aaz
�Baz
�Caz
�Daz
�E
�Fazaz
�G@azaz
�I
�J
�iaz
�K
�L
�eaz
�M
�Naz
�Oaz
�Pazaz
�Q
�Razaz
�S
�Tazaz
�Uaz
�V
�Waz
�Xaz
�Yaz
�Zazaz
�[
�\azaz
�]az
�^
�_azaz
�`az
�a
�baz
�caz
�dazaz@�
�f
�gaz
�haz�az
�jaz
�kazaz
�l
�maz
�naz
�oaz
�pazaz
�qaz
�raz
�s
�tazaz
�uaz
�v
�wazaz
�x
�yaz
�zaz
�{azaz
�|az
�}
�~azaz
�
�az
�azaz
�az
�az@
�
�p
�
� 
�az
�
�az
�az
�az
�az
�
�az
�az
�azaz
�
�az
�azaz
�az
�
�az
�az
�azaz
�
�az
�azaz
�az
�az
�
�azaz
�az
�az
�az
�@az
�
�az
�
�az
�az
�azaz
�az
�az
�
�az
�az
�az
�azaz
�
�azaz
�
�azaz
�
�az
�azaz
�
�azaz
�
�azaz
�az
�
�azaz@
�
��az
�
�az
��az
��az
��azaz
��az
��az
��
��azaz
��az
��az
��
��az
��az
��azaz
��az
��
��az
��az
��az
��az
��az
��az
��az@az
��
��
��az
��az
��az
��az
��azaz
��az
��az
��
��az
��az
��az
��az
��az
��azaz
��az
��az
��
��azaz
��
��az
��az
��azaz
��@az
��
�	
��az
��az
�azaz
�
�az
�azaz
�az
�
�azaz
�
�az
�azaz
�
�az
�azaz
�
�azaz
�
�azaz
�
�az
�azaz@
�
az
�azaz
�az
�
az
�az
�
�az
�az
�azaz
�
�az
�az
�az
�azaz
�
�az
�azaz
�
�az
�az
�azaz
�az@az
�!az
�"
�#
�=az
�$az
�%
�&az
�'az
�(az
�)az
�*azaz
�+
�,az
�-azaz
�.az
�/
�0az
�1az
�2azaz
�3
�4az
�5az
�6az
�7az
�8az
�9az
�:az
�;az
�<azaz@
�>
�Waz
�?
�@az
�Aazaz
�B
�Cazaz
�Daz
�Eaz
�F
�Gaz
�Haz
�Iaz
�Jaz
�Kazaz
�L
�Mazaz
�N
�Oazaz
�Paz
�Qaz
�Raz
�Saz
�Taz
�Uaz
�Vaz@
�Xaz
�Yaz
�Zazaz
�[
�\az
�]azaz
�^az
�_
�`az
�aaz
�baz
�caz
�dazaz
�eaz
�f
�gaz
�hazaz
�iaz
�jaz
�k
�laz
�mazaz
�n
�oaz@az
�q
��
�r
��
�s
��
�taz
�uazaz
�v
�waz
�xazaz
�y
�zazaz
�{
�|az
�}azaz
�~az
�az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��
��az
��az
��az�azaz
��
��azaz
��
��
���
���az�az
��
��az
��
��azaz
��
��az
��azaz
��az
��az
��az
��az
��
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��azaz
��@az
��
��
��azaz
��
��az
��az
��az
��az
��azaz
��az
��
��az
��az
��az
��az
��azaz
��az
��az
��az
��
��az
��azaz
��
��az
��az
��azaz
��az@
��
��az
��az
��
��az
��az
��azaz
��
��azaz
��
��az
��az
��az
��az
��az
��azaz
��az
��az
��
��azaz
��
��azaz
��
��azaz
��
��az@azaz
��az
��
��az
��az
��azaz
��
��azaz
��
��az
��az
��az
��az
��az
��azaz
��az
��az
��az
��az
��az
��
��azaz
��
��azaz
��az@
�
��
�
�6
�
�az
�az
�az
�
�az
�az
�az
�	azaz
�
az
�az
�az
�
�az
�az
�azaz
�az
�
�azaz
�
�az
�az
�az
�az
�az
�az
�az@azaz
�
�azaz
�
� azaz
�!az
�"az
�#
�$az
�%azaz
�&
�'azaz
�(
�)az
�*az
�+az
�,azaz
�-
�.azaz
�/
�0az
�1azaz
�2
�3az
�4azaz
�5az@
�7
�Q
�8azaz
�9
�:azaz
�;
�<azaz
�=
�>az
�?azaz
�@
�Aazaz
�Baz
�C
�Daz
�Eaz
�Faz
�Gaz
�Hazaz
�I
�Jaz
�Kazaz
�L
�Mazaz
�Naz
�O
�Pazaz@
�R
�k
�Sazaz
�T
�Uazaz
�V
�Wazaz
�Xaz
�Y
�Zazaz
�[az
�\
�]az
�^az
�_azaz
�`
�aazaz
�b
�caz
�daz
�eazaz
�faz
�gaz
�haz
�iaz
�j@azaz
�l
�maz
�naz
�oazaz
�p
�qaz
�raz
�saz
�taz
�uaz
�vaz
�waz
�xazaz
�yaz
�z
�{azaz
�|az
�}
�~azaz
�
��az
��azaz
��az
��az@
��az
��azaz
��
��azaz
��
��az
��az
��azaz
��
��azaz
��az
��az
��
��az
��az
��az
��azaz
��az
��az
��az
��
��az
��az
��az
��az
��az
��az@az
��
��
��az
��az
��
�S
��
�
��
��
��az
��azaz
��az
��
��azaz
��az
��
��azaz
��
��azaz
��az
��
��az
��az
��azaz
��az
��
��azaz
��az
��
��az
��azaz
��
��az
��azaz@
��
��
��az
��
��
��azaz
��az
��
��azaz
��
��az
��az
��azaz
��
��az
��az
��az
��az
��az
��azaz
��az
��
��az
��azaz
��
��azaz
��az@
��az
��az
��azaz
��az
��
��az
��az
��azaz
��
��az
��az
��az
��azaz
��az
��az
��az
��az
��
��az
��azaz
��
��az@az
��azaz
��
��az
��az
��
�
az
��
��az
��azaz
��
��azaz
��az
��
��azaz
��
�az
�az
�az
�az
�az
�az
�az
�az
�az
�	azaz@
�az
�az
�
azaz
�
�az
�azaz
�
�azaz
�
�azaz
�az
�az
�az
�az
�az
�
�azaz
�
�az@az
�
�9az
� 
�!azaz
�"az
�#az
�$
�%az
�&az
�'az
�(az
�)azaz
�*az
�+
�,az
�-az
�.az
�/az
�0az
�1azaz
�2
�3az
�4az
�5az
�6az
�7azaz
�8@azaz
�:
�;azaz
�<az
�=az
�>az
�?az
�@
�Aaz
�Bazaz
�Caz
�D
�Eaz
�Fazaz
�G
�Haz
�Iazaz
�Jaz
�Kaz
�Laz
�Maz
�N
�Oaz
�Pazaz
�Qaz
�R@azaz
�T
�U
�o
�Vazaz
�Waz
�X
�Yaz
�Zaz
�[az
�\az
�]az
�^azaz
�_
�`az
�aaz
�baz
�caz
�dazaz
�e
�fazaz
�gaz
�haz
�i
�jazaz
�k
�lazaz
�m
�nazaz@
�pazaz
�qaz
�raz
�s
�taz
�uaz
�vazaz
�w
�xaz
�yazaz
�z
�{az
�|az
�}azaz
�~
�azaz
��
��az
��azaz
��az
��az
��
��azaz
��
��az@az
��az
��
��
��azaz
��
��
��
��az
��az
��az
��az
��az
��azaz
��
��az
��azaz
��az
��az
��
��az
��az
��azaz
��
��azaz
��
��az
��az
��azaz
��
��azaz
��az
��az@
��az
��azaz
��
��azaz
��
��azaz
��az
��
��azaz
��
��azaz
��
��az
��azaz
��
��azaz
��
��az
��az
��azaz
��az
��
��azaz
��az
��az@az
��az
��az
��
��azaz
��az
��
��az
��az
��az
��az
��az
��az
��azaz
��
��az
��az
��azaz
��
��az
��az
��azaz
��az
��az
��
��azaz
��az
��
��az@az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��azaz
��az
��az
��
��azv�az
��
��
��
��
��@
��@az@
��@
��@az@
��
��
��@
��@az@
��@
�@az@
�
�
�
�
�@
�@
�@az@
�
�
�	@
�
@az@
�@
�
@|@
�
�
�
�
�@
�@az@
�@
�@az@
�
�
�@
�@az@
�@
�@az@
�
�%
�
��
� 
�`
�!
�D
�"
�5
�#
�*
�$
�'
�%@
�&@az@
�(@
�)@az@
�+
�.
�,@
�-@|@
�/@
�0@
�1@
�2@
�3@
�4@az@
�6
�=
�7
�:
�8@
�9@az@
�;@
�<@az@
�>
�A
�?@
�@@az@
�B@
�C@az@
�E
�T
�F
�M
�G
�J
�H@
�I@az@
�K@
�L@az@
�N
�Q
�O@
�P@az@
�R@
�S@az@
�U
�Y@
�V
�W@
�X@az@
�Z
�]
�[@
�\@|@
�^@
�_@|@
�a
�w
�b
�k
�c
�g@
�d
�e@
�f@az@@
�h
�i@
�j@az@
�l
�s
�m
�p
�n@
�o@az@
�q@
�r@az@@
�t
�u@
�v@az@
�x
��
�y
��
�z
��
�{@
�|@
�}@
�~||
���|
��@
��@az@
��
��
��@
��@
��@az
��az
��
��az
��azaz
��az
��
��azaz
��
��azazgQ
��@
��@az@
��
��
��
��
��@
��@az@
��@
��@az@
��
��
��@
��@az@
��@
��@|@
��
��
��
��
��
��
��@
��
��
��@
��@az@
��@
��@az@
��
��@
��
��@
��@az@
��
��
��@
��@az@
��@
��@az@
��
��
��
��
��
��
��@
��@az@
��@
��@az@
��@
��@
��@az@
��
��
��
��
��@
��@az@
��@
��@az@
��
��
��@
��@az@
��@
��@|@
��
��
��
��
��
��
��@
��@
��@az@
��@
��@
��@az@
��
��
��
��
��@
��@az@
��@
��@az@
��
��
��@
��@az@
��@
��@az@
��
�
��
�
��
�
��@
��@
��@
��az
��az
��az
��az
��az
��
�
��
�
��
�az
��gQaz
�
�t�wv�gC
�
�
�azv�az
�azv�v�
�	azaz
�

�azb�az
�
@
�@az@
�
�
�@
�@az@
�@
�@az@
�
�
�
�
�@
�@az@
�@
�@az@
�
�"
� @
�!@az@
�#@
�$@az@
�&
�N
�'
�g
�(
�H
�)
�9
�*
�.
�+@
�,@
�-@�'@
�/
�2
�0@
�1@az@
�3@
�4@
�5@
�6@
�7@
�8@az@
�:
�A
�;
�>
�<@
�=@az@
�?@
�@@az@
�B
�E
�C@
�D@az@
�F@
�G@az@
�I
�X
�J
�Q
�K
�N
�L@
�M@az@
�O@
�P@az@
�R
�U
�S@
�T@az@
�V@
�W@az@
�Y
�`
�Z
�]
�[@
�\@az@
�^@
�_@�T@
�a
�d
�b@
�c@az@
�e@
�f@az@
�h
�2
�i
��
�j
�q
�k
�n
�l@
�m@az@
�o@
�p@|@
�r
��
�s@
�t@
�u@az
�v
�waz
�xaz
�yaz
�zaz
�{az
�|az
�}az
�~az
�az
��az
��az
��az
��az�az
��@
��@az@
��
�+
��
��
��@
��@az@
��@
��@
��@
��
��
��||
��
��|
��||
��
��||
��
��||
��
��||
��|
��|
��|
��|
��|
��
��|
��||
��|
��|
��|
��|
��
��|
��|
��|
��|
��||
��
��|
��|
��||
��|
��|
��
��||
��
��||
��|
��
��||
��|
��|
��
��|
��||
��
��|
��|
��|
��|
��|
��|
��||
��
��||
��|
��|
��|
��
��||
��
��|
��||
��
��||
��|
��|
��|
��
��||
��|
��
��|
��||
��
��||
��
��|
��|
��|
��|
��||
��
��||
��
��|
��||
��
��|
��||
��|
��|
��@|
��|
��
�|
��|
��|
��
��|
��|
��||
��
��||
��|
��|
��|
��
��|
��||
�
�||
�
�||
�|
�|
�
�|
�|
�	|
�
|
�|
�|
�
|@|
�|
�||
�|
�
�||
�|
�
�||
�|
�|
�
�||
�
�|
�|
�|
�|
� ||
�!|
�"
�#|
�$|
�%|
�&|
�'|
�(|
�)|
�*|@|
�,
�/
�-@
�.@|@
�0@
�1@az@
�3
�B
�4
�;
�5
�8
�6@
�7@az@
�9@
�:@|@
�<
�?
�=@
�>@az@
�@@
�A@az@
�C
�J
�D
�G
�E@
�F@az@
�H@
�I@az@@
�K
�L@
�M@az@
�O
��
�P
�l
�Q
�`
�R
�Y
�S
�V
�T@
�U@az@
�W@
�X@az@
�Z
�]
�[@
�\@az@
�^@
�_@az@
�a
�e@
�b
�c@
�d@az@
�f
�i
�g@
�h@az@
�j@
�k@az@
�m
�|
�n
�u
�o
�r
�p@
�q@az@
�s@
�t@az@
�v
�y
�w@
�x@az@
�z@
�{@az@
�}
��
�~
��
�@
��@az@
��@
��@
��@
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��azaz
��
��az
��
��az
��b�az
��azkXv�
��
��
��@
��@az@
��@
��@|@
��
��
��
��
��
��
��@
��@
��@az@
��@
��@
��@az@
��
��
��
��
��@
��@az@
��@
��@az@
��
��
��@
��@|@
��@
��@az@
��
��
��
��
��
��
��@
��@|@
��@
��@az@
��
��
��@
��@az@
��@
��@az@
��
��
��
��
��@
��@|@
��@
��@az@
��
��
��@
��@az@
��@
��@|@
��
�
��@
��
��
��
��
��
��
��@
��@
��@az@
��@
��@
��@az@
��
��
��@
��@
��@az@
��@
��@
��@az@
��
��
��
��
��@
��@
��@az@
��@
��@
��@az@
��
��
��
��
��@
��@az@
��@
��@az@
��
�
�@
�@az@
�@
�@az@
�
�*
�@
�
�
�	
�
�

�
�@
�@az@
�@
�@az@
�
�
�@
�@az@
�@
�@az@
�
�
�
�
�@
�@az@
�@
�@az@
� 
�%
�!
�#
�"@az@
�$@az@
�&
�(
�'@az@
�)@az@@
�+@
�,@
�-
�.
�1@
�/
�0@az@@
�2
�3@az@
�5@
�6@
�7@
�8@
�9@
�:@
�;@
�<@
�=@
�>@
�?@
�@
�C
�A
�}
�B
�a
�C
�R
�D
�K
�E
�H
�F@
�G@|@
�I@
�J@az@
�L
�O
�M@
�N@az@
�P@
�Q@az@
�S
�Z
�T
�W
�U@
�V@az@
�X@
�Y@az@
�[
�^
�\@
�]@az@
�_@
�`@|@
�b
�q
�c
�j
�d
�g
�e@
�f@az@
�h@
�i@az@
�k
�n
�l@
�m@az@
�o@
�p@az@
�r
�y
�s
�v
�t@
�u@az@
�w@
�x@az@@
�z
�{@
�|@|@
�~
�*
�
��
��
��az
��
��@
��@
��@
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��azaz
��wUaz@
��
��@
��@|@
��
��
��
��
��az
��azaz
��
��az
��azaz
��az
��
��az
��az
��az
��az
��az
��
��az
��
��
��
��
��az
��
��azv�az
��
��
��azb�az
��azgQaz
��
��
��
��
��azkXaz
��azwaz
��
��
��azgCaz
��azwUaz
��
��
��
��
��
��
��az
��azubaz
��
��
��azjaz
��azw�az
��
��
��
��
��azv�az
��azwaz
��
��
��azv�az
��az��az
��
��
��
��
��
��
��azu�az
��azu�az
��
��
��azmaz
��azmaz
��
��
���K
��azt�az�Kaz
��@
��@az@
��
�'
��@
��@
��@
��azaz
��
��az
��az
��az
��az
��az
��
� 
��
�
��az
��
��
��azaz
��
��az
��v�azv�
��
�
��
��
��azazv�
�azazv�az
�
�azw�az
�
�
�az
�
�
�
�
az
�	azv�az
�azv�az
�
v�az
�
�
�
�
�
�az
�azv�
�
�v�azv�az
�
�az
�azv�v�az
�az
�
�az
�azw�az
�w�az
�!az
�"az
�#azaz
�$
�%az
�&azazv�
�(@
�)@az@
�+
�7
�,
�3
�-
�0
�.@
�/@az@
�1@
�2@az@
�4@
�5@
�6@az@
�8
�?
�9
�<
�:@
�;@az@
�=@
�>@az@
�@@
�A@
�B@az@
�D
��
�E
�Z
�F
�N
�G@
�H
�K
�I@
�J@az@
�L@
�M@az@
�O
�V
�P
�S
�Q@
�R@az@
�T@
�U@az@
�W@
�X@
�Y@az@
�[
�w
�\
�`@
�]
�^@
�_@az@
�a
�t
�baz
�caz
�daz
�eazaz
�f
�gaz
�haz
�iaz
�jaz
�kaz
�laz
�maz
�naz
�oaz
�paz
�qazaz
�raz
�sgQaz
�u@
�v@az@
�x
�
�y
�|
�z@
�{@az@
�}@
�~@az@
��
��
��@
��@|@
��@
��@az@
��
��
��
��
��
��
��
��
��@
��@�T@
��@
��@az@
��
��
��@
��@az@
��@
��@az@
��
��
��
��
��@
��@az@
��@
��@az@
��@
��@
��@az@
��
��
��
��
��
��
��@az
��az@
��@
��@az@
��
��
��@
��@az@
��@
��@az@
��
��
��
��
��@
��@az@
��@
��@|@
��
��
��@
��@az@
��@
��@az@
��t
��@
��@
��@
��@
��@
��@
��@
��@
��@
��@
��@
��S�
��-
��&
��
v
���
��<
���
��
���
���
��<
��^
���
��
�
��
��
��
�U
��
�
��
��
��
��
��
��
��
��
��@
��@
��@az@
��@
��@
��@az@
��
��
��@
��@
��@az@az@@
��
��@
��@
��@
��@az@
��
�
��
�
��
��
��@
��@
��@az@
��@
�@
�@az@
�
�
�@
�@
�@az@
�@
�	@
�
@az@
�
�
�
@
�@
�@
�@az@@
�
�@
�@
�@|@
�
�6
�
�'
�
�"
�
�
�@
�@
�@az@
�@
� @
�!@az@
�#@
�$@
�%@
�&@az@
�(
�-
�)az
�*@
�+@
�,@az@
�.
�2
�/@
�0@
�1@|@
�3@
�4@
�5@az@
�7
�F
�8
�=@
�9
�:@
�;@
�<@az@
�>
�B
�?@
�@@
�A@az@
�C@
�D@
�E@az@
�G
�P
�H
�L
�I@
�J@
�K@az@
�M@
�N@
�O@az@@
�Q
�R@
�S@
�T@az@
�V
��
�W
�z
�X
�k
�Y
�b
�Z
�^
�[@
�\@
�]@az@
�_@
�`@
�a@az@
�c
�g
�d@
�e@
�f@az@
�h@
�i@
�j@|@
�l
�u
�m
�q
�n@
�o@
�p@az@
�r@
�s@
�t@az@
�v@
�w@
�x@
�y@az@
�{
��
�|
��
�}
��
�~@
�@
��@az@
��@
��@
��@az@@
��
��@
��@
��@az@
��
��
��
��
��@
��@
��@az@
��@
��@
��@az@@
��
��@
��@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@M@
��@
��@
��@
��@az@
��
��@
��
��@az@
��@
��@
��@az@
��
��
��
��@
��
��@
��@
��@az@@
��
��@
��@
��@az@
��
��
��@
��@
��@
��@az@
��@
��@
��@
��@az@
��
��az
��az�
��
�
��
��
��
��
��
��
��az
���
���
���az��
��
���
���
���az�
��
��
��
��
���
���
���az�
���
���
���az��
��
���
���az�
��
��
��
��
��az
���
���
���az�
��
��
���
���
���az�
���
���
���az�
��
��
��
��az�
���
���
���az�
��
�
���
���
���az�
��
��
��az�az�
�
��
�
��
�
�i
�	
�N
�

�
�@
�
�
�
@
�@az
�az@
�@
�@
�@|@
�
�
�
�
�@
�@
�@az@
�@
�@
�@az@
�
�!
� @az@
�"@az
�#az
�$
�%
��
�&
�r
�'
�G
�(
�2az
�)
�*
�/
�+
�,v�v�
�-
�.v���)
�0az
�1az�"az
�3
�>
�4
�;
�5
�8
�6
�7az��w�
�9
�:S�azkXw�
�<az
�=az���
�?
�E
�@
�B�,
�Aw���
�C
�Dw���^
�FazgCaz
�H
�[
�I
�S
�J
�P
�K
�MJ�
�L�S4
�N
�Ou�azS�SC
�Qaz
�RazS�S�
�Taz
�U
�X
�V
�W~�>�J�
�Y
�ZJ��"�4S�
�\
�g
�]
�d
�^
�a
�_
�`v�S��F�
�b
�cTw8azgC
�eaz
�fazaz�
�h
�o
�i
�l
�j
�kw��azj
�m
�n�az�Z~
�paz
�qazazJ
�saz
�taz
�u
��
�v
�}
�w
�z
�x
�y�?azv�X
�{
�|��azaz
�~az
�azazT
��
��
��
��
��
��T%����v�
��
���waz�[J�
��az
��azw�b�
��
�
��
��
��
��
��az
��az
��azaz
��az
��
��az
��az
��az
��az
��az
��az
��az�4azaz
��
��az
��
��az
��az
��
��az
��az
��az
��az
��az
��az
��azTCaz
��az
��az
��az
��az
��az
��az
��az
��az
��az��az
��
��
��
��
��
��
��
��
��az
��az
��az
��az
��az
��az
��az
��az
��az�1az
��
��az
��
��az
��az
��az
��az
��az
��az
��azwaz
��
��
��az
��az
��az
��az
��az
��az
��azb�az
��az
��az
��az
��az
��az
��az
��azb�az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az�az
��az
��az
��azaz
��
��az
��az
��az
��az
��az
��az
��az��az
��
�	
��az
��
��az
��az
��
��az
��az
��az
��az
��az
��az
��az�&azaz
�az
�
�az
�az
�az
�az
�az
�az
�azRTaz
�
azaz
�az
�
�
az
�az
�az
�az
�az
�az
�az
�azF�az
�az
�az
�
�.
�az
�
�$
�azaz
�
�az
�az
�az
� az
�!az
�"az
�#az�az
�%azaz
�&
�'az
�(az
�)az
�*az
�+az
�,az
�-az��az
�/
�Caz
�0
�1
�:az
�2
�3az
�4az
�5az
�6az
�7az
�8az
�9az�azaz
�;
�<az
�=az
�>az
�?az
�@az
�Aaz
�Baz<az
�Daz
�Eazaz
�F
�Gaz
�Haz
�Iaz
�Jaz
�Kaz
�Laz
�Maz�az
�O
�Z
�P
�U@
�Q
�R@
�S@
�T@az@
�V@
�W@
�X@
�Y@az@
�[
�`@
�\
�]@
�^@
�_@az@
�a
�e
�b@
�c@
�d@az@
�f@
�g@
�h@az@
�j
��
�k
�z
�l
�q@
�m
�n@
�o@
�p@az@
�r
�v
�s@
�t@
�u@az@
�w@
�x@
�y@az@
�{
��@
�|
�}@
�~@
�@az@az
��
��@
��@
��@az@
��
��
��
��
��
��
��@
��@
��@az@
��@
��@
��@az@
��
��
��@
��@
��@az@
��@
��@
��@az@
��
��
��@
��@
��@
��@az@
��
��
��@
��@
��@az@
��@
��@
��@az@
��
��
��@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@az@
��
��
��@
��@
��@az@
��@
��@
��@az@
��
��
��@
��@
��@
��@az@
��@
��@
��@az@
��
��
��
��@
��
��@
��@
��@az@
��
��
��@
��@
��@az@
��@
��@
��@az@
��
��@
��
��@
��@
��@|@
��
��
��@
��@
��@az@
��@
��@
��@az@
��U
��%
��
��
��
��
��@az
��
��
��@
��@
��@az@
��@
��@
��@az@
��
��
��@
��@
��@
��@az@
��
��@
��@
��@az@@@@az@az@	@
@az@@
@@@az@@azgQazazb�azt�azazwm!@@ @az@"@#@$@az@&;'1@()-*@+@,@az@.@/@0@az@27@34@5@6@az@8:9@az@az@<F=@>B?@@@A@az@C@D@E@az@GPHLI@J@K@az@M@N@O@az@@QR@S@T@az@V�WlXeY^azZ[�\�]�az�_a`�az�b�c�d�az�fg�azh�i�j�k�az�m|nwosp@q@r@az@t@u@v@az@azxy@z@{@az@}�@~@�@�@az@���@�@�@az@�@�@�@az@az@���@�@������az��az���azazw�az�azw����azaz��azazj��az��azazv�az�az�azj��������v��gCub��v�v�v��v��v��v��v��v��v���v�v�wU����v�b�v�gQv��v�gC�������w���az�az�az�azaz��azazgCaz�az�az�az�az��azazgCv�kX�azazw*����az�"v�azaz�azw�������azwcwaz���az���azazwUaz�az�M��gC���v�azwaz��az�v�azaz�azw*az����azaz�����azb�azgQ�az��az�az��az�az�jaz�azazw�az@az@az@az@	@
@@az@
\@@@az@W7(@@@az@@@@az@ $!@"@#@az@%@&@'@az@)2*.+�,�-�az�/�0�1�az��34�5�6�az�8G9>:@;@<@=@az@?C@@A@B@az@D@E@F@az@HNIMJ@K@L@az@az@OSP@Q@R@az@T@U@V@|@X�Y�Z�[�az�]@az@_@`�a�bec@d@az@f�gyhoin@jk@l@m@az@|@p@qur@s@t@az@v@w@x@az@z�{�|�}@~@@az@�@�@�@az@���@�@�@az@�@�@�@az@�����@�@�@az@�@�@�@az@���@�@�@|@�@�@�@az@�@�@�@az@�@az@�������������������az�������az���������az�������az�����������az�������az�������������az��azaz��az�azaz�i����������az���������az��@�@�@az@������az��������az�az������az�����������az�������az��az������az��az���az���	�
�az�@
;$@@@az@@@@az@@@@@az@az az!@"@#@az@%0&+'@(@)@*@az@az,-@.@/@az@16@23@4@5@az@7@8@9@:@az@az@=�@>?@@@A�B@CfDSENFJG@H@I@az@K@L@M@az@@OP@Q@R@az@T]UYV@W@X@az@Z@[@\@az@^b_@`@a@|@c@d@e@az@gzhqimj�k�l�az�n�o�p�az�rvs�t�u�az�w�x�y�az�{�|�}�~��az�����az��az������az�����������������az�������az�@�@�@�@�@��@�@�@�@�@�@�@|@�����@�@�@�@�@�@�@�@az@�@@��@@��@�@�@�@�@�@�@�@az@�@@��@@��@@��@�@�@�@�@�@�@az@�������@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@�@az@���@�@�@�@�@�@�@�@�@�@@@az@@@@@@@	@
@@@
@@az@@@@@@@@@@@@@@az@|R ;!."@#@$@%@&@'@(@)@*@+@,@-@az@/@0@1@2@3@4@5@6@7@8@9@:@az@<I=@>@?@@@A@B@C@D@E@F@G@H@|@J@K@L@M@N@O@P@Q@az@SnTaU@V@W@X@Y@Z@[@\@]@^@_@`@az@b@c@d@e@f@g@h@i@j@k@l@m@az@o@p@q@r@s@t@u@v@w@x@y@z@{@az@}�~���@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@|@@��@�@�@�@�@�@�@�@�@�@�@�@az@�@���@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@|@�x�4�������@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@���@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@��@@@@@@@@@	@
@@az@
@@@@@@@@@@@@az@'@@@@@ @!@"@#@$@%@&@az@(@)@*@+@,@-@.@/@0@1@2@3@az@5N6D7@8@9@:@;@<@=@>@?@@@A@B@C@az@E@F@G@H@I@J@K@L@M@az@O]P@Q@R@S@T@U@V@W@X@Y@Z@[@\@az@^k_@`@a@b@c@d@e@f@g@h@i@j@az@l@m@n@o@p@q@r@s@t@u@v@w@az@y�z�{�|�}@~@@�@�@�@�@�@�@�@�@�@|@�@�@�@�@�@�@�@�@az@���@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@���@�@�@�@�@�@�@�@�@�@�@�@�@az@���@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@������@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@@��@�@�@�@�@�@�@�@�@�azazazazazazazazazaz	az
azazaz
azazazazazw�az!@@@@@@@@@@@@ @az@"/#@$@%@&@'@(@)@*@+@,@-@.@az@0@1@2@3@4@5@6@7@8@9@:@;@az@=j>�?s@VAHB@C@D@E@F@G@|@I@J@K@L@@M@NO@P@Q@R@S@T@U@az@WeX@Y@Z@[@@\]@^@_@`@a@b@c@d@az@f@g@h@i@j@@kl@m@n@o@p@q@r@az@t�@uv�w@x@y@z@{@|@}@~@@�@�@�@az@�@�@�@������������������az������@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@az@���@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@�"�����@�@�@�@�@�@�@�@�@|@���@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@����@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@@@@@@@@az@	@
@@@
@@@@@@@@az@@@@@@@@@@@ @!@az@#@$2%@&@'@(@)@*@+@,@-@.@/@0@1@az@3@4@5@6@7@8@9@:@;@<@=@>@?@az@AOB@C@D@E@F@G@H@I@J@K@L@M@N@az@P]Q@R@S@T@U@V@W@X@Y@Z@[@\@az@^@_@`@a@b@c@d@e@f@g@h@i@az@kl�m�nxo@p@q@r@s@t@u@v@w@az@y@z@{@|@}@~@@�@�@�@�@�@�@az@�����@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@���@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@�������@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@���@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@�@��@�@�@�@�@�@�@�@@@@@az@@@@@	@
@@@
@@@@@az@h>0#@@@@@@@@@ @!@"@az@$@%@&@'@(@)@*@+@,@-@.@/@az@@12@3@4@5@6@7@8@9@:@;@<@=@az@?M@@A@B@C@D@E@F@G@H@I@J@K@L@az@N[O@P@Q@R@S@T@U@V@W@X@Y@Z@az@\@]@^@_@`@a@b@c@d@e@f@g@az@i�j�ktl@m@n@o@p@q@r@s@az@u@v@w@x@y@z@{@|@}@~@@�@az@@��@�@�@�@�@�@�@�@�@�@�@�@az@�����@�@�@�@�@�@�@�@�@�@�@�@S�@�@�@�@�@�@�@�@�@�@�@�@�@az@���@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@�
��	6���5������@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@���@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@@@az@
@@@@	@
@@@|@@@@@@@@@@@@@az@(@@@@ @!@"@#@$@%@&@'@az@)@*@+@,@-@.@/@0@1@2@3@4@az@6X7=8@9@:@;@<@az@>K?@@@A@B@C@D@E@F@G@H@I@J@az@L@M@N@O@P@Q@R@S@T@U@V@W@az@Yg@Z[@\@]@^@_@`@a@b@c@d@e@f@az@hui@j@k@l@m@n@o@p@q@r@s@t@az@v@w@x@y@z@{@|@}@~@@�@�@az@������@��@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@�@az@�����@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@�@az@�������@�@�@�@�@�@�@�@�@�@�@�@|@�@�@�@�@�@�@�@�@�@�@�@�@|@���@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@|@					@	@	@	@	@	@	@		@	
@	@	@	
@az@	@	@	@	@	@	@	@	@	@	@	@	@az@		)	@	@	@	 @	!@	"@	#@	$@	%@	&@	'@	(@az@	*@	+@	,@	-@	.@	/@	0@	1@	2@	3@	4@	5@az@	7	�	8	�	9	c	:	U	;	H	<@	=@	>@	?@	@@	A@	B@	C@	D@	E@	F@	G@az@	I@	J@	K@	L@	M@	N@	O@	P@	Q@	R@	S@	T@|@	V@	W@	X@	Y@	Z@	[@	\@	]@	^@	_@	`@	a@	b@az@	d	r@	e	f@	g@	h@	i@	j@	k@	l@	m@	n@	o@	p@	q@az@	s	�	t@	u@	v@	w@	x@	y@	z@	{@	|@	}@	~@	@|@	�@	�@	�@	��	��	��	��	��	��	��	��	��az�	�	�	�@@	�	�@	�@	�@	�@	�@	�@	�@	�@	�@	�@	�@	�@az@	�	�	�	�	�@	�@	�@	�@	�@	�@	�@	�@	�@	�@	�@	�@az@	�@	�@	�@	�@	�@	�@	�@	�@	�@	�@	�@	�@az@	�	�	�@	�@	�@	�@	�@	�@	�@	�@	�@	�@	�@	�@az@	�@	�@	�@	�@	�@	�@	�@	�@	�@	�@	�@	�@az@	�
D	�

	�	�	�	�	�@	�@	�@	�@	�@	�@	�@	�@	�@	�@	�@	�@|@	�@	�@	�@	�@	�@	�@	�@	�@	�@	�@	�@	�@az@	�
	�@	�@	�@	�@	�@	�@	�@	�@	�@	�@	�@	�@az@
@
@
@
@
@
@
@
@
	@

@
@
@az@

)


@
@
@
@
@
@
@
@
@
@
@
@az@
@
@
@
 @
!@
"@
#@
$@
%@
&@
'@
(@az@
*
7
+@
,@
-@
.@
/@
0@
1@
2@
3@
4@
5@
6@az@
8@
9@
:@
;@
<@
=@
>@
?@
@@
A@
B@
C@az@
E
|
F
a
G
T
H@
I@
J@
K@
L@
M@
N@
O@
P@
Q@
R@
S@az@
U@
V@
W@
X@
Y@
Z@
[@
\@
]@
^@
_@
`@az@
b
o
c@
d@
e@
f@
g@
h@
i@
j@
k@
l@
m@
n@az@
p@
q@
r@
s@
t@
u@
v@
w@
x@
y@
z@
{@|@
}
�
~
�
@
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@az@
��
�G
�
�
�
�
�
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@|@
�
�
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@��@
�@
�@
�@
�@
�@
�@
�@
�@
�@@@@az@. @@	@
@@@
@@@@@@az@@@@@@@@@@@@@|@@!"@#@$@%@&@'@(@)@*@+@,@-@az@/=@01@2@3@4@5@6@7@8@9@:@;@<@az@@>?@@@A@B@C@D@E@F@|@H�IoJaKXL@M@N@O@P@Q@R@S@T@U@V@W@az@Y@Z@[@\@]@^@_@`@az@b@c@d@e@f@g@h@i@j@k@l@m@n@az@p�q~r@s@t@u@v@w@x@y@z@{@|@}@az@@�@�@�@�@�@�@�@�@�@�@�@az@���@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@�����@�@�@�@�@�@�@�@�@az@���@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@az@��@��@�@�@�@�@�@�@�@�@�@�@�@az@@��@�@�@�@�@�@�@�@�@�@�@�@az@���W� ����@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@@@@@@az@@@	@
@@@
@@@@@@az@@@@@@@@@@@@@az@!<"/#@$@%@&@'@(@)@*@+@,@-@.@az@0@1@2@3@4@5@6@7@8@9@:@;@az@=J>@?@@@A@B@C@D@E@F@G@H@I@az@K@L@M@N@O@P@Q@R@S@T@U@V@az@X�YpZc[@\@]@^@_@`@a@b@az@d@e@f@g@h@i@j@k@l@m@n@o@az@q~r@s@t@u@v@w@x@y@z@{@|@}@az@@�@�@�@�@�@�@�@�@�@�@�@az@���@�@�@�@�@�@�@�@�@�@�@�@�@az@@��@�@�@�@�@�@�@�@�@�@�@�@az@�
�������@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@���@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@�����@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@f@�
�@
@
@
@
@
@
@
@
@
@
	@
@az@
@

@
@
@
@
@
@
@
@
@
@
@az@

C

(@

@
@
@
@
 @
!@
"@
#@
$@
%@
&@
'@az@
)
6
*@
+@
,@
-@
.@
/@
0@
1@
2@
3@
4@
5@|@
7@
8@
9@
:@
;@
<@
=@
>@
?@
@@
A@
B@az@
D
[
E
N
F@
G@
H@
I@
J@
K@
L@
M@az@
O@
P@
Q@
R@
S@
T@
U@
V@
W@
X@
Y@
Z@az@
\
i
]@
^@
_@
`@
a@
b@
c@
d@
e@
f@
g@
h@az@
j@
k@
l@
m@
n@
o@
p@
q@
r@
s@
t@
u@az@
wO
x

y
z.
{
�
|
�
}
�
~
�
@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�
�
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�@
�
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@az@
�
�
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@az@
�@
�@
�@
�@@@@@az@ @@	@
@@@
@@@@@@az@@@@@@@@@@@@@az@!@"@#@$@%�&�'�(�)�*�+�,�-�|�/�0g1L2?3@4@5@6@7@8@9@:@;@<@=@>@az@@@A@B@C@D@E@F@G@H@I@J@K@az@MZN@O@P@Q�R�S�T�U�V�W�X�Y�|�[@\@]@^@_@`@a@b@c@d@e@f@az@h�ivj@k@l@m@n@o@p@q@r@s@t@u@az@w@x@y@z@{@|@}@~@@�@�@�@az@���@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@�����@�@�@�@�@�@�@�@�@�@�@�@�@az@���@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@�����@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@���@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@�*
@@@@	@
@@@az@@@@@@@@@@@@@@az@@@@@ @!@"@@#$@%@&@'@(@)@az@+b,G-:.@/@0@1@2@3@4@5@6@7@8@9@az@;@<@=@>@?@@@A@B@C@D@E@F@az@HUI@J@K@L@M@N@O@P@Q@R@S@T@az@V@W@X@Y@Z@[@\@]@^@_@`@a@|@c~dqe@f@g@h@i@j@k@l@m@n@o@p@az@r@s@t@u@v@w@x@y@z@{@|@}@az@@�@�@�@�@�@�@�@�@az@���������@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@az@�����@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@az@�����@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@@�@��@�@�@�@�@|@���@�@�@�@�@�@@��@�@�@�@�@�@az@@@@@@@@@@	@
@@@az@^�n7- @@@@@@@@@@@@az@!@"@#@$@%@&@'@(@)@*@+@,@az@.@/@0@1@2@3@4@5@6@az@8S9F:@;@<@=@>@?@@@A@B@C@D@E@az@G@H@I@J@K@L@M@N@O@P@Q@R@az@TaU@V@W@X@Y@Z@[@\@]@^@_@`@az@b@c@d@e@f@g@h@i@j@k@l@m@az@o�p�q~r@s@t@u@v@w@x@y@z@{@|@}@az@@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@�@az@��@��@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@az@�����@��@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@az@�����@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@���@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@@@@@az@+!@	@
@@@
@@@@@@@az@@@@@@@@@@@@ @az@"@#@$@%@&@'@(@)@*@az@,C-:.@/@0@1@2@3@4@5@6@7@8@9@az@;@<@=@>@?@@@A@B@az@DQE@F@G@H@I@J@K@L@M@N@O@P@|@R@S@T@U@V@W@X@Y@Z@[@\@]@az@_�`�azblc@d@e@f@g@h@i@j@k@az@m@n@o@p@q@r@@s@tu@v@w@x@y@|@{�|@}@~@@�@�@@��@�@�@�@�@�@az@�@�@�@�@�@�@�@@��@�@�@�@�@az@����@��@�@�@�@�@�@�@�@�@�@�@�@|@�@�@�@�@�@�@�@�@�@�@�az�azgCaz�����@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@az@�������@�@�@�@�@�@�@az@�@�@�@�@�@�@@�@��@az@@��@�@�@�@�@�@�@@��@�@�@�@�@az@�
@@@@@@@@	@|@@@
@@@@@@@@@@@az@4'@@@@@ @!@"@#@$@%@&@az@(@)@*@+@,@-@.@/@0@1@2@3@az@5B6@7@8@9@:@;@<@=@>@?@@@A@az@C@D@E@F@G@H@I@J@K@L@M@N@az@P�QR�S�T�UlV_W@X@Y@Z@[@\@]@^@az@`@a@b@c@d@e@f@g@h@i@j@k@az@mzn@o@p@q@r@s@t@u@v@w@x@y@az@{@|@}@~@@�@�@�@�@�@�@�@az@��@��@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@az@�����@�@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@az@�����@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@���@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@�2����@�@�@�@�@�@�@�@�@�@�@�@�@az@�@@@@@@@@@@	@
@@|@
(@@@@@@@@@@@@az@@@@@ @!@"@#@$@%@&@'@az@)@*@+@,@-@.@/@0@1@az@3Y4O5B6@7@8@9@:@;@<@=@>@?@@@A@az@C@D@E@F@G@H@I@J@K@L@M@N@az@P@Q@R@S@T@U@V@W@X@az@Zq[h\@]@^@_@`@a@b@c@d@e@f@g@az@i@j@k@l@m@n@o@p@az@r@s@t@u@v@w@x@y@z@{@|@}@~@az@�
���������@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@���@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@az@�����@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@az@���@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@��@��@�@�@�@�@�@�@�@�@|@��@�@�@�@�@�@�@�@�@�@@@@|@@@@@@	@
@@@az@N(@@@@@@@@@@@@@az@@ @!@"@#@$@%@&@'@|@)7*@+@,@-@.@/@0@1@2@3@4@5@6@az@8E9@:@;@<@=@>@?@@@A@B@C@D@|@F@G@H@I@J@K@L@M@az@OuPkQ^R@S@T@U@V@W@X@Y@Z@[@\@]@az@_@`@a@b@c@d@e@f@g@h@i@j@az@l@m@n@o@p@q@r@s@t@az@v�w@x@y@z@{@|@}@~@@�@�@�@�@az@���@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@���P��������@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@az@�����@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@���@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@4@@@@@	@
@@az@
@@@@@@@@@@@@az@'@@@@@ @!@"@#@$@%@&@az@(@)@*@+@,@-@.@/@0@1@2@3@az@5@6C7@8@9@:@;@<@=@>@?@@@A@B@az@D@E@F@G@H@I@J@K@L@M@N@O@az@Q�RxSnTaU@V@W@X@Y@Z@[@\@]@^@_@`@az@b@c@d@e@f@g@h@i@j@k@l@m@az@o@p@q@r@s@t@u@v@w@az@y�z@{@|@}@~@@�@�@�@�@�@�@�@az@���@�@�@������������������az��@�@�@�@�@�@�@�@�@�@�@�@az@�������@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@���@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@���@�@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@az@���*�
���@�@�@�@�@�@�@az@@@@@@@@@@	@
@@@az@@@@@@@@@@@@@@az@@@@ @!@"@#@@$%@&@'@(@)@az@+U,:-@.@/@0@1@2@3@4@5@6@7@8@9@az@;H<@=@>@?@@@A@B@C@D@E@F@G@az@I@J@K@L@M@N@O@P@Q@R@S@T@az@VqWdX@Y@Z@[@\@]@^@_@`@a@b@c@az@e@f@g@h@i@j@k@l@m@n@o@p@az@rs@t@u@v@w@x@y@z@{@|@}@~@|@�@�@�@�@�@�@�@�@�@�@�@�@az@���������@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@�@az@�����@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@������������������az����@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@�
��@��@�@�@�@�@�@�@�@�@�@�@�@�@@@@@@@@@@	@
@@@az@@@@@@@@@@@@@@az@@@@ @!@"@#@$@%@az@'"^(�)*�+�,�-W.I/<0@1@2@3@4@5@6@7@8@9@:@;@az@=@>@?@@@A@B@C@D@E@F@G@H@az@@JK@L@M@N@O@P@Q@R@S@T@U@V@az@XsYfZ@[@\@]@^@_@`@a@b@c@d@e@az@g@h@i@j@k@l@m@n@o@p@q@r@az@t�u@v@w@x@y@z@{@|@}@~@@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@�������@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@@��@�@�@�@�@�@�@�@�@�@�@�@az@�@���@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@�7�
�����@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@��@�@�@�@�@�@�@�@�@�@�@�@az@@@@@@@@@	@
@@@az@@@@@@@@@@@@@@az@*@@ @!@"@#@$@%@&@'@(@)@|@+@,@-@.@/@0@1@2@3@4@5@6@|@8o9T:G;@<@=@>@?@@@A@B@C@D@E@F@az@H@I@J@K@L@M@N@O@P@Q@R@S@az@UbV@W@X@Y@Z@[@\@]@^@_@`@a@az@c@d@e@f@g@h@i@j@k@l@m@n@az@p�q~r@s@t@u@v@w@x@y@z@{@|@}@az@@�@�@�@�@�@�@�@�@�@�@�@az@@��@�@�@�@�@�@�@�@�@�@�@�@az@�^���������@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@���@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@�����@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@@��@�@�@�@�@�@�@�@�@�@�@�@|@�'��@@@@@@@@@	@
@@|@
@@@@@@@@@@@@|@@@@@@@ @!@"@#@$@%@&@az@(C)6*@+@,@-@.@/@0@1@2@3@4@5@az@7@8@9@:@;@<@=@>@?@@@A@B@az@DQE@F@G@H@I@J@K@L@M@N@O@P@az@R@S@T@U@V@W@X@Y@Z@[@\@]@az@_�`�a|boc@d@e@f@g@h@i@j@k@l@m@n@az@p@q@r@s@t@u@v@w@x@y@z@{@az@}�~@@�@�@�@�@�@�@�@�@�@�@|@�@�@�@�@�@�@�@�@�@�@�@�@|@���@�@�@�@������������������az��@�@�@�@�@�@�@�@�@az@����@��@�@�@�@�@�@�@�@�@�@�@�@B�@���@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@�����@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@��@�@�@�@�@�@�@@@@@@az@@@@	@
@@@
@@@@@az@V�sM2%@@@@@@@ @!@"@#@$@az@&@'@(@)@*@+@,@-@.@/@0@1@az@3@4@5@6@7@8@9@:@;@<@=@>@?@az@A@B@C@D@E@F@G@H@I@J@K@L@az@NiO\P@Q@R@S@T@U@V@W@X@Y@Z@[@az@]@^@_@`@a@b@c@d@e@f@g@h@f@j@k@l@m@n@o@p@q@r@az@t�uv@w@x@y@z@{@|@}@~@|@�@�@�@�@�@�@@�@��@�@�@�@�@az@���@�@�@�@�@�@@��@�@�@�@�@�@az@�@�@�@�@�@�@�@@��@�@�@�@�@az@�
�������@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@@��@�@�@�@�@�@�@�@�@�@�@�@az@�����@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@��@�@�@�@�@�@�@�@�@�@�@�@az@@@@@@@@@	@
@@@az@4*@@@@@@@@@@@@|@@@ @!@"@#@$@%@&@'@(@)@az@+@,@-@.@/@0@1@2@3@az@5L6?7@8@9@:@;@<@=@>@az@@@A@B@C@D@E@F@G@H@I@J@K@|@M@N@O@P@Q@R@S@T@U@az@WX�Y~Zt[g\@]@^@_@`@a@b@c@d@e@f@az@h@i@j@k@l@m@n@o@p@q@r@s@az@u@v@w@x@y@z@{@|@}@az@@�@�@�@�@�@�@�@�@�@�@�@�@�@az@�������@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@������az��az�az�azjw����az�az�azv�az����az�azgQ��t�mv�gC�az�azjaz�az�az�az�az�azjazaz�az��azaz�az�az�azj�����@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@���@�@�@�@�@�@�@�@�@�@�@�@az@�@@@@@@@@@@	@
@az@n
D)@@@@@@@@@@@@az@@@@ @!@"@#@$@%@&@'@(@f@*7+@,@-@.@/@0@1@2@3@4@5@6@|@8@9@:@;@<@=@>@?@@@A@B@C@az@E`FSG@H@I@J@K@L@M@N@O@P@Q@R@az@T@U@V@W@X@Y@Z@[@\@]@^@_@az@@ab@c@d@e@f@g@h@i@j@k@l@m@az@o�p�q~r@s@t@u@v@w@x@y@z@{@|@}@az@@�@�@�@�@�@�@�@�@�@�@�@az@���@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@�����@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@���@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@|@�w�1������@�@�@�@�@�@�@�@�@�@az@��@�@�@�@�@�@���@�@�@�@�@�@|@�@�@�@@@@az@@@@@@	@
@@@
@@@@az@I.!@@@@@@@@@@@ @az@"@#@$@%@&@'@(@)@*@+@,@-@az@/<0@1@2@3@4@5@6@7@8@9@:@;@|@=@>@?@@@A@B@C@D@E@F@G@H@az@JeKXL@M@N@O@P@Q@R@S@T@U@V@W@|@Y@Z@[@\@]@^@_@`@a@b@c@d@az@fsg@h@i@j@k@l@m@n@o@p@q@r@az@t@u@v@w@x@y@z@{@|@}@~@@az@�������@�@�@�@�@az@���@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@�����@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@���@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@�@�������@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@az@�
@@@@@@@@	@
@@@az@@@@@@@@@az@$@@@@@@@@ @!@"@#@az@%@&@'@(@)@*@+@,@-@.@/@0@az@2�3m4^5P6C7@8@9@:@;@<@=@>@?@@@A@B@az@D@E@F@G@H@I@J@K@L@M@N@O@az@Q@R@S@T@U@V@W@X@Y@Z@[@\@]@az@_@@`a@b@c@d@e@f@g@h@i@j@k@l@az@n�o�p}q@r@s@t@u@v@w@x@y@z@{@|@az@~@@�@�@�@�@�@�@�@�@�@�@|@�@�@�@�@�@�@�@�@�@az@�����@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@���@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@�*������@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@|@���@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@@@@@az@ @@	@
@@@
@@@@@@az@@@@@@@@@@@@@az@!@"@#@$@%@&@'@(@)@az@+M,G-:.@/@0@1@2@3@4@5@6@7@8@9@az@;@<@=@>@?@@@A@B@C@D@E@F@|@H@I@J@K@L@|@NiO\P@Q@R@S@T@U@V@W@X@Y@Z@[@az@]@^@_@`@a@b@c@d@e@f@g@h@az@@jk@l@m@n@o@p@q@r@s@t@u@v@az@x �y ,z�{�|�}@~@@�@�@az@�@�@@�@��@�@�@�@�@�@�@�@�@az@���@�@@��@�@�@�@�@�@�@�@�@�@az@�@�@�@@��@�@�@�@�@�@�@�@�@|@�������@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@az@���@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@�@�'@� ���@�@�@�@�@�@�@�@�@�@�@�@az@�@�@�@�@�@�@�@�@�@�@�@ @ @az  az azaz  azaz az  	az 
azaz az  
az azaz az w�az   @ @ @ @ @ @ @ @ @ @ @ @az@  @ !@ "@ #@ $@ %@ &@ '@ (@ )@ *@ +@az@ - ~ . e / J 0 = 1@ 2@ 3@ 4@ 5@ 6@ 7@ 8@ 9@ :@ ;@ <@az@ >@ ?@ @@ A@ B@ C@ D@ E@ F@ G@ H@ I@az@ K X L@ M@ N@ O@ P@ Q@ R@ S@ T@ U@ V@ W@|@ Y@ Z@ [@ \@ ]@ ^@ _@ `@ a@ b@ c@ d@az@ f t g@ h@ i@ j@ k@ l@ m@ n@ o@ p@ q@ r@ s@az@ u@ v@ w@ x@ y@ z@ {@ |@ }@az@  � � � � � �@ �@ �@ �@ �@ �@ �@ �@ �@ �@ �@ �@az@ �@ �@ �@ �@ �@ �@ �@ �@ �@ �@ �@ �@az@ � � �@ �@ �@ �@ �@ �@ �@ �@ �@ �@ �@ �@az@ �@ �@ �@ �@ �@ �@ �@ �@az@ � � � � �@ �@ �@ �@ �@ �@ �@ �@ �@ �@ �@ �@|@ �@ �@ �@ �@ �@ �@ �@ �@ �@ �@ �@ �@az@ �@ �@ �@ �@ �@ �@ �@ �@ �@|@ �!� �!! �! � � � � �@ �@ �@ �@ �@ �@ �@ �@ �@ �@ �@ �@az@ �@ �@ �@ �@ �@ �@ �@ �@ �@ �@ �@ �@az@@ � �@ �@ �@ �@ �@ �@ �@!@!@!@!@!@|@!@!!!@!	@!
@!@!@!
@!@!@!@!@!@!@az@!@!@!@!@!@!@!@!@!@!@!@! @az@!"!L!#!>!$!1!%@!&@!'@!(@!)@!*@!+@!,@!-@!.@!/@!0@az@!2@!3@!4@!5@!6@!7@!8@!9@!:@!;@!<@!=@az@!?@!@@!A@!B@!C@!D@!E@!F@!G@!H@!I@!J@!K@az@!M!h!N![!O@!P@!Q@!R@!S@!T@!U@!V@!W@!X@!Y@!Z@az@!\@!]@!^@!_@!`@!a@!b@!c@!d@!e@!f@!g@|@!i!v!j@!k@!l@!m@!n@!o@!p@!q@!r@!s@!t@!u@az@!w@!x@!y@!z@!{@!|@!}@!~@!@!�@!�@!�@az@!�!�!�!�!�!�!�!�!�@!�@!�@!�@!�@!�@!�@!�@!�@!�@!�@!�@az@!�@!�@!�@!�@!�@!�@!�@!�@!�@!�@!�@!�@az@!�!�!�@!�@!�@!�@!�@!�@!�@!�@!�@!�@!�@!�@|@!�@!�@!�@!�@!�@!�@!�@!�@!�@!�@!�@!�@az@!�!�!�!�!�@!�@!�@!�@!�@!�@!�@!�@!�@!�@!�@!�@az@!�@!�@!�@!�@!�@!�@!�@!�@az@!�!�!�@!�@!�@!�@!�@!�@!�@!�@!�@!�@!�@!�@|@!�@!�@!�@!�@!�@!�@!�@!�@!�@!�@!�@!�@az@!�"'!�"!�!�!�@!�@!�@!�@!�@!�@!�@!�@!�@!�@!�@!�@az@"@"@"@"@"@"@"@"@"@"	@"
@"@az@"
""@"@"@"@"@"@"@"@"@"@"@"@az@"@"@"@"@"@" @"!@""@"#@"$@"%@"&@az@"("C")"6"*@"+@",@"-@".@"/@"0@"1@"2@"3@"4@"5@az@"7@"8@"9@":@";@"<@"=@">@"?@"@@"A@"B@az@"D"Q"E@"F@"G@"H@"I@"J@"K@"L@"M@"N@"O@"P@az@"R@"S@"T@"U@"V@"W@"X@"Y@"Z@"[@"\@"]@az@"_'�"`$�"a#�"b"�"c"�"d"s"e@@"f"g@"h@"i@"j@"k@"l@"m@"n@"o@"p@"q@"r@az@"t"�"u"~"v@"w@"x@"y@"z@"{@"|@"}@|@"@"�@"�@"�@"�@"�@"�@"�@"�@"�@"�@"�@|@@"�"�@"�@"�@"�@"�@"�@"�@"�@"�@"�@"�@"�@az@"�"�"�"�"�"�"�@"�@"�@"�@"�@"�@"�@"�@"�@"�@"�@"�@|@"�@"�@"�@"�@"�@"�@"�@"�@"�@"�@"�@"�@az@"�@"�@"�@"�@"�@"�@"�@"�@"�@az@"�"�"�"�"�@"�@"�@"�@"�@"�@"�@"�@"�@"�@"�@"�@az@"�@"�@"�@"�@"�@"�@"�@"�@"�@"�@"�@"�@az@"�"�"�@"�@"�@"�@"�@"�@"�@"�@"�@"�@"�@"�@az@"�@"�@"�@"�@"�@"�@"�@"�@"�@"�@"�@"�@��@"�#I"�#"�#@"�"�@"�@"�@"�@#@#@#@#@#@#@#@#@az@#	@#
@#@#@#
@#@#@#@#@|@##.##!#@#@#@#@#@#@#@#@#@#@#@# @az@#"@##@#$@#%@#&@#'@#(@#)@#*@#+@#,@#-@az@#/#<#0@#1@#2@#3@#4@#5@#6@#7@#8@#9@#:@#;@az@#=@#>@#?@#@@#A@#B@#C@#D@#E@#F@#G@#H@az@#J#g#K#Y@#L#M@#N@#O@#P@#Q@#R@#S@#T@#U@#V@#W@#X@az@#Z@#[@#\@#]@#^@#_@#`@#a@#b@#c@#d@#e@#f@az@#h#�#i#v#j@#k@#l@#m@#n@#o@#p@#q@#r@#s@#t@#u@az@#w@#x@#y@#z@#{@#|@#}@#~@#@#�@#�@#�@az@#�#�#�@#�@#�@#�@#�@#�@#�@#�@#�@#�@#�@#�@az@#�@#�@#�@#�@#�@#�@#�@#�@#�@#�@#�@#�@az@#�$##�#�#�#�#�#�#�#�#�@#�@#�@#�@#�@#�@#�@#�@#�@#�@#�@#�@az@#�@#�@#�@#�@#�@#�@#�@#�@#�@#�@#�@#�@az@#�#�#�@#�@#�@#�@#�@#�@#�@#�@#�@#�@#�@#�@az@#�@#�@#�@#�@#�@#�@#�@#�@#�@#�@#�@#�@az@#�#�@#�#�@#�@#�@#�@#�@#�@#�@#�@az@#�@#�@#�@#�@#�@#�@#�@#�@#�@az@#�#�@#�#�@#�@#�@#�@#�@#�@@#�#�@#�@#�@#�@#�@#�@az@#�$#�$$@$@$@$@$@$@$@$@az@$	@$
@$@$@$
@$@$@$@$@$@$@$@az@$@$@$@$@$@$@$@$@$@$@$ @$!@$"@az@$$$�$%$O$&$A$'$4$(@$)@$*@$+@$,@$-@$.@$/@$0@$1@$2@$3@|@$5@$6@$7@$8@$9@$:@$;@$<@$=@$>@$?@$@@az@@$B$C@$D@$E@$F@$G@$H@$I@$J@$K@$L@$M@$N@az@$P$k$Q$^$R@$S@$T@$U@$V@$W@$X@$Y@$Z@$[@$\@$]@az@$_@$`@$a@$b@$c@$d@$e@$f@$g@$h@$i@$j@|@$l$y$m@$n@$o@$p@$q@$r@$s@$t@$u@$v@$w@$x@N@$z@${@$|@$}@$~@$@$�@$�@$�@$�@$�@$�@az@$�$�$�$�$�@$�@$�@$�@$�@$�@$�@$�@$�@$�@$�@$�@$�@az@@$�$�@$�@$�@$�@$�@$�@$�@$�@$�@$�@$�@$�@az@$�$�$�$�$�@$�@$�@$�@$�@$�@$�@$�@$�@$�@$�@$�@az@$�@$�@$�@$�@$�@$�@$�@$�@$�@$�@$�@$�@az@@$�$�@$�@$�@$�@$�@$�@$�@$�@$�@$�@$�@$�@az@$�&3$�%r$�%$�%$�$�$�$�$�@$�@$�@$�@$�@$�@$�@$�@$�@$�@$�@$�@az@$�@$�@$�@$��$��$��$��$��$��$��$��$��|�$�$�$�@$�@$�@$�@$�@$�@$�@$�@az@$�@$�@$�@$�@$�@$�@$�@%@%@%@%@%@|@%%%@%@%	@%
@%@%@%
@%@%@%@%@%@%@|@%@%@%@%@%@%@%@%@%@az@%%;@% %!%.%"@%#@%$@%%@%&@%'@%(@%)@%*@%+@%,@%-@az@%/@%0@%1@%2@%3@%4@%5@%6@%7@%8@%9@%:@az@%<%W%=%J%>@%?@%@@%A@%B@%C@%D@%E@%F@%G@%H@%I@az@%K@%L@%M@%N@%O@%P@%Q@%R@%S@%T@%U@%V@az@%X%e%Y@%Z@%[@%\@%]@%^@%_@%`@%a@%b@%c@%d@|@%f@%g@%h@%i@%j@%k@%l@%m@%n@%o@%p@%q@az@%s%�%t%�%u%%v@%w@%x@%y@%z@%{@%|@%}@%~@az@%�@%�@%�@%�@%�@%�@%�@%�@%�@%�@%�@%�@%�@|@%�%�%�%�%�@%�@%�@%�@%�@%�@%�@%�@%�@%�@%�@%�@az@%�@%�@%�@%�@%�@%�@%�@%�@%�@%�@%�@%�@az@%�%�%�@%�@%�@%�@%�@%�@%�@%�@%�@%�@%�@%�@|@%�@%�@%�@%�@%�@%�@%�@%�@%�@%�@%�@%�@az@%�%�%�%�%�%�%�@%�@%�@%�@%�@%�@%�@%�@%�@%�@%�@%�@az@%�@%�@%�@%�@%�@%�@%�@%�@%�@%�@%�@%�@��@%�%�%�@%�@%�@%�@%�@%�@%�@%�@%�@%�@%�@%�@az@%�@%�@%�@%�@%�@%�@%�@%�@%�@%�@%�@%�@az@%�&%�&%�@&@&@&@&@&@&@&@&@&@&	@&
@az@&@&
@&@&@&@&@&@&@&@&@&@&@az@&&&&@&@&@&@&@&@& @&!@&"@&#@&$@&%@az@&'@&(@&)@&*@&+@&,@&-@&.@&/@&0@&1@&2@az@&4&�&5&j&6&M&7&?&8@&9@&:@&;@&<@&=@&>@az@&@@&A@&B@&C@&D@&E@@&F@&G&H@&I@&J@&K@&L@az@&N&\&O@&P@&Q@&R@&S@&T@@&U&V@&W@&X@&Y@&Z@&[@az@&]@&^@&_@&`@&a@&b@&c@@&d@&e&f@&g@&h@&i@az@&k&�&l&z&m@&n@&o@&p@&q@&r@&s@@&t&u@&v@&w@&x@&y@az@&{@&|@&}@&~@&@&�@&�@&�@@&�&�@&�@&�@&�@az@&�&�&�&�&�@&�@&�@&�@&�@&�@&�@&�@&�@&�@&�@&�@az@&�@&�@&�@&�@&�@&�@&�@&�@&�@&�@&�@&�@az@&�&�&�@&�@&�@&�@&�@&�@&�@&�@&�@&�@&�@&�@az@&�@&�@&�@&�@&�@&�@&�@&�@&�@&�@&�@&�@az@&�''&�&�&�&�&�&�&�@&�@&�@&�@&�@&�@&�@&�@&�@&�@&�@&�@az@&�@&�@&�@&�@&�@&�@&�@&�@&�@&�@&�@&�@az@&�&�&�@&�@&�@&�@&�@&�@&�@&�@&�@&�@&�@&�@az@&�@&�@&�@&��&��&��&��&��&��&��&��&��az�&�'&�'&�@&�@&�@&�@&�@'@'@'@az@'@'@'@'@'@'	@'
@'@az@'
''@'@'@'@'@'@'@'@'@'@'@'@az@'@'@'@'@'@' @'!@'"@'#@'$@'%@'&@az@'('[')'@'*'7'+@',@'-@'.@'/@'0@'1@'2@'3@'4@'5@'6@az@'8@'9@':@';@'<@'=@'>@'?@��@'A'N'B@'C@'D@'E@'F@'G@'H@'I@'J@'K@'L@'M@az@'O@'P@'Q@'R@'S@'T@'U@'V@'W@'X@'Y@'Z@az@'\'j']@'^@'_@'`@'a@'b@'c@'d@'e@'f@'g@'h@'i@az@'k'x'l@'m@'n@'o@'p@'q@'r@'s@'t@'u@'v@'w@az@'y@'z@'{@'|@'}@'~@'@'�@'�@'�@'�@'�@az@'�*�'�)('�(V'�'�'�'�'�'�@'�'�@'�@'�@'�@'�@'�@'�@'�@'�@'�@'�@'�@az@'�'�'�@'�@'�@'�@'�@'�@'�@'�@'�@'�@'�@'�@az@'�@'�@'�@'�@'�@'�@'�@'�@'�@'�@'�@'�@az@'�'�'�'�'�@'�@'�@'�@'�@'�@'�@'�@'�@'�@'�@'�@az@'�@'�@'�@'�@'�@'�@'�@'�@'�@'�@'�@'�@az@'�'�'�@'�@'�@'�@'�@'�@'�@'�@'�@'�@'�@'�@az@'�@'�@'�@'�@'�@'�@'�@'�@'�@'�@'�@'�@az@'�(#'�('�'�'�@'�@'�@'�@'�@'�@'�@'�@'�@'�@'�@'�@az@'�@'�@'�@'�@(@(@(@(@(@(@(@(@az@(	((
@(@(@(
@(@(@(@(@(@(@(@(@az@(@(@(@(@(@(@(@(@(@( @(!@("@az@($(?(%(2(&@('@((@()@(*@(+@(,@(-@(.@(/@(0@(1@az@(3@(4@(5@(6@(7@(8@(9@(:@(;@(<@(=@(>@az@(@(I(A@(B@(C@(D@(E@(F@(G@(H@az@(J@(K@(L@(M@(N@(O@(P@(Q@(R@(S@(T@(U@az@(W(�(X(�(Y(t(Z(g([@(\@(]@(^�(_�(`�(a�(b�(c�(d�(e�(f�az�(h@(i@(j@(k@(l@(m@(n@(o@(p@(q@(r@(s@az@(u(�(v@(w@(x@(y@(z@({@(|@(}@(~@(@(�@(�@az@(�@(�@(�@(�@(�@(�@(�@(�@(�@(�@(�@(�@az@(�(�(�(�(�@(�@(�@(�@(�@(�@(�@(�@(�@(�@(�@(�@az@(�@(�@(�@(�@(�@(�@(�@(�@(�@(�@(�@(�@az@(�(�(�@(�@(�@(�@(�@(�@(�@(�@(�@(�@(�@(�@az@(�@(�@(�@(�@(�@(�@(�@(�@(�@(�@(�@(�@az@(�(�(�(�(�(�(�@(�@(�@(�@(�@(�@(�@(�@(�@(�@(�@(�@az@(�@(�@(�@(�@(�@(�@(�@(�@(�@(�@(�@(�@az@@(�(�@(�@(�@(�@(�@(�@(�@(�@(�@(�@(�@(�@az@(�)
(�)(�@(�@(�@(�@(�@(�@(�@(�@(�@(�@(�@(�@az@)@)@)@)@)@)@)@)@)	@)
@)@)@az@)))@)@)@)@)@)@)@)@)@)@)@)@az@)@)@)@)@) @)!@)"@)#@)$@)%@)&@)'@az@)))�)*)�)+)n),)`)-@).@)/@)0@)1@)2@)3az)4)Baz)5az)6)7)=)8):az)9azgQ);)<gQazazgQ)>)@gC)?gCazb�)Ab�v�)C)T)D)Kaz)E)F)I)G)Hazb�b�w)Jazwaz)L)Oaz)Maz)NazkX)P)R)QgCkXazgC)SgCaz)Uaz)V)[)W)Y)Xazazub)Zb�azb�)\)^az)]azgQ)_azgQaz)a@)b@)c@)d@)e@)f@@)g@)h)i@)j@)k@)l@)m@az@)o)})p@)q@)r@)s@)t@)u@@)v)w@)x@)y@)z@){@)|@az@)~@)@)�@)�@)�@)�@)�@@)�)�@)�@)�@)�@)�@az@)�)�)�)�)�)�)�@)�@)�@)�@)�@)�@)�@)�@)�@)�@)�@)�@az@)�@)�@)�@)�@)�@)�@)�@)�@)�@)�@)�@)�@|@)�)�)�@)�@)�@)�@)�@)�@)�@)�@)�@)�@)�@)�@az@)�@)�@)�@)�@)�@)�@)�@)�@)�@)�@)�@)�@az@)�)�)�)�)�@)�@)�@)�@)�@)�@)�@)�@)�@)�@)�@)�@az@)�@)�@)�@)�@)�@)�@)�@)�@)�@)�@)�@)�@az@)�)�)�@)�@)�@)�@)�@)�@)�@)�@)�@)�@)�@)�@az@)�@)�@)�@)�@)�@)�@)�@)�@)�@)�@)�@)�@az@)�*])�*&)�*)�@)�@*@*@*@*@*@*@*@*@*@*	@*
@az@***
@*@*@*@*@*@*@*@*@*@*@*@az@*@*@*@*@*@*@* @*!@*"@*#@*$@*%@az@*'*B*(*5*)@**@*+@*,@*-@*.@*/@*0@*1@*2@*3@*4@az@*6@*7@*8@*9@*:@*;@*<@*=@*>@*?@*@@*A@az@*C*P*D@*E@*F@*G@*H@*I@*J@*K@*L@*M@*N@*O@az@*Q@*R@*S@*T@*U@*V@*W@*X@*Y@*Z@*[@*\@az@*^*�*_*z*`*m*a@*b@*c@*d@*e@*f@*g@*h@*i@*j@*k@*l@az@*n@*o@*p@*q@*r@*s@*t@*u@*v@*w@*x@*y@az@@*{*|@*}@*~@*@*�@*�@*�@*�@*�@*�@*�@*�@az@*�*�@*�*�@*�@*�@*�@*�@*�@*�@*�@*�@*�@*�@*�@az@@*�*�@*�@*�@*�@*�@*�@*�@*�@*�@*�@*�@*�@az@*�,*�+d*�+*�*�*�*�*�*�*�@*�@*�@*�@*�@*�@*�@*�@*�@*�@*�@*�@az@*�@*�@*�@*�@*�@*�@*�@*�@az@*�*�*�@*�@*�@*�@*�@*�@*�@*�@*�@*�@*�@*�@az@*�@*�@*�@*�@*�@*�@*�@*�@*�@*�@*�@*�@az@*�*�*�*�*�@*�@*�@*�@*�@*�@*�@*�@*�@*�@*�@*�@az@*�@*�@*�@*�@*�@*�@*�@*�@*�@*�@*�@*�@az@*�+*�@*�@*�@*�@*�@*�@+@+@+@+@+@+@|@+@+@+	@+
@+@+@+
@+@+@+@+@+@az@++-+++@+@+@+@+�+�+�+�+�az�@+ +!@+"@+#@+$@+%@+&@+'@+(@+)@+*@++@+,@az@+.+I+/+<+0@+1@+2@+3@+4@+5@+6@+7@+8@+9@+:@+;@az@+=@+>@+?@+@@+A@+B@+C@+D@+E@+F@+G@+H@az@+J+W+K@+L@+M@+N@+O@+P@+Q@+R@+S@+T@+U@+V@az@+X@+Y@+Z@+[@+\@+]@+^@+_@+`@+a@+b@+c@az@+e+�+f+�+g+�+h+u+i@+j@+k@+l@+m@+n@+o@+p@+q@+r@+s@+t@az@+v@+w@+x@+y@+z@+{@+|@+}@+~@+@+�@+�@az@+�@+�@+�@+�@+�@+�@+�@+�@+�@+�@+�@+�@+�@az@+�+�+�+�+�@+�@+�@+�@+�@+�@+�@+�@+�@+�@+�@+�@az@+�@+�@+�@+�@+�@+�@+�@+�@+�@+�@+�@+�@az@+�@+�@+�@+�@+�@+�@+�@+�@+�@+�@+�@+�@+�@az@+�+�+�+�+�+�+�@+�@+�@+�@+�@+�@+�@+�@+�@+�@+�@+�@az@+�@+�@+�@+�@+�@+�@+�@+�@+�@+�@+�@+�@az@+�+�+�@+�@+�@+�@+�@+�@+�@+�@+�@+�@+�@+�@az@+�@+�@+�@+�@+�@+�@+�@+�@az@+�,+�+�+�@+�@+�@+�@+�@+�@+�@+�@az@@+�+�@+�@+�@+�@+�@,@,@,@,@,@,@az@@,,@,	@,
@,@,@,
@,@,@,@,@,@,@az@,,�,,C,,&,@,@@,,@,@,@,@,@, @,!@,"@,#@,$@,%@az@,',5@,(,)@,*@,+@,,@,-@,.@,/@,0@,1@,2@,3@,4@az@,6@@,7,8@,9@,:@,;@,<@,=@,>@,?@,@@,A@,B@az@,D,w,E,\,F,O,G@,H@,I@,J@,K@,L@,M@,N@az@,P@,Q@,R@,S@,T@,U@,V@,W@,X@,Y@,Z@,[@az@,],j,^@,_@,`@,a@,b@,c@,d@,e@,f@,g@,h@,i@az@,k@,l@,m@,n@,o@,p@,q@,r@,s@,t@,u@,v@az@,x,�,y@,z@,{@,|@,}@,~@,@,�@,�@,�@,�@,�@,�@az@,�,�,�@,�@,�@,�@,�@,�@,�@,�@,�@,�@,�@,�@az@,�@,�@,�@,�@,�@,�@,�@,�@,�@,�@,�@,�@az@,�,�,�,�,�,�,�,�,�@,�@,�@,�@,�@,�@,�@,�@az@@,�,�@,�@,�@,�@@,�@,�@,�,�@,�@,�@,�@az@@,�,�@,�@,�@,�@,�@@,�@,�,�@,�@,�@,�@,�@az@@,�,�@,�@,�@,�@,�@,�@@,�,�@,�@,�@,�@,�@,�@az@@,�,�,�,�,�,�@,�@,�@,�@,�@,�@,�@,�@,�@,�@,�@,�@|@,�@,�@,�@,�@,�@,�@,�@,�@,�@,�@,�@,�@az@,�-,�@,�@,�@,�@,�@,�@,�@,�@,�@-@-@-@az@-@-@-@-@-@-	@-
@-@-@-
@-@-@|@-D�-8�-2�-0-.�--�--l--5--'@--@-@-@-@-@- @-!@-"@-#@-$@-%@-&@az@@-(-)@-*@-+@-,@--@-.@-/@-0@-1@-2@-3@-4@az@-6-Q-7-D-8@-9@-:@-;@-<@-=@->@-?@-@@-A@-B@-C@|@-E@-F@-G@-H@-I@-J@-K@-L@-M@-N@-O@-P@az@-R-_-S@-T@-U@-V@-W@-X@-Y@-Z@-[@-\@-]@-^@|@-`@-a@-b@-c@-d@-e@-f@-g@-h@-i@-j@-k@az@-m-�-n-|@-o-p@-q@-r@-s@-t@-u@-v@-w@-x@-y@-z@-{@az@-}-�-~@-@-�@-�@-�@-�@-�@-�@-�@-�@-�@-�@az@-�@-�@-�@-�@-�@-�@-�@-�@-�@-�@-�@-�@az@-�-�-�-�-�@-�@-�@-�@-�@-�@-�@-�@-�@-�@-�@-�@az@-�@-�@-�@-�@-�@-�@-�@-�@-�@-�@-�@-�@az@-�-�-�@-�@-�@-�@-�@-�@-�@-�@-�@-�@-�@-�@az@-�@-�@-�@-�@-�@-�@-�@-�@-�@-�@-�@-�@az@-�.1-�.-�-�-�-�-�@-�@-�@-�@-�@-�@-�@-�@-�@-�@-�@-�@az@-�@-�@-�@-�@-�@-�@-�@-�@-�@-�@-�@-�@az@-�-�-�@-�@-�@-�@-�@-�@-�@-�@-�@-�@-�@-�@az@-�@-�@-�@-�@-�@.@.@.@.@.@.@.@az@..@.	.
@.@.@.
@.@.@.@.@.@.@.@.@az@..$.@.@.@.@.@.@.@.@. @.!@."@.#@az@.%@.&@.'@.(@.)@.*@.+@.,@.-@..@./@.0@az@.2.i.3.N.4.A.5@.6@.7@.8@.9@.:@.;@.<@.=@.>@.?@.@@az@.B@.C@.D@.E@.F@.G@.H@.I@.J@.K@.L@.M@az@.O.\.P@.Q@.R@.S@.T@.U@.V@.W@.X@.Y@.Z@.[@az@.]@.^@._@.`@.a@.b@.c@.d@.e@.f@.g@.h@az@.j.�.k.t.l@.m@.n@.o�.p�.q�.r�.s�az�.u@.v@.w@.x@.y@.z@.{@.|@.}@.~@.@.�@az@.�@.�@.�@.�@.�@.�@.�@.�@.�@.�@.�@.�@.�@az@.�/P.�.�.�.�.�.�.�.�.�@.�@.�@.�@.�@.�@.�@.�@.�@.�@.�@az@.�@.�@.�@.��.��.��.��.��.��.��.��.��az�@.�.�@.�@.�@.�@.�@.�@.�@.�@.�@.�@.�@.�@az@.�.�.�.�.�@.�@.�@.�@.�@.�@.�@.�@.�@.�@.�@.�@az@.�@.�@.�@.�@.�@.�@.�@.�@az@.�@.�@.�@.�@.�@.�@.�@.�@.�@.�@.�@.�@.�@az@.�/.�.�.�.�.�@.�@.�@.�@.�@.�@.�@.�@.�@.�@.�@.�@az@.�@.�@.�@.�@.�@.�@.�@.�@.�@.�@.�@.�@az@.�//@/@/@/@/@/@/@/@/@/	@/
@/@az@/
@/@/@/@/@/@/@/@/@/@/@/@az@//5//(/@/@/@/@/ @/!@/"@/#@/$@/%@/&@/'@az@/)@/*@/+@/,@/-@/.@//@/0@/1@/2@/3@/4@az@/6/C/7@/8@/9@/:@/;@/<@/=@/>@/?@/@@/A@/B@az@/D@/E@/F@/G@/H@/I@/J@/K@/L@/M@/N@/O@az@/Q/�/R/|/S/n/T/a/U@/V@/W@/X@/Y@/Z@/[@/\@/]@/^@/_@/`@az@/b@/c@/d@/e@/f@/g@/h@/i@/j@/k@/l@/m@az@@/o/p@/q@/r@/s@/t@/u@/v@/w@/x@/y@/z@/{@az@/}/�/~/�/@/�@/�@/�@/�@/�@/�@/�@/�@/�@/�@/�@az@/�@/�@/�@/�@/�@/�@/�@/�@/�@/�@/�@/�@az@/�/�/�@/�@/�@/�@/�@/�@/�@/�@/�@/�@/�@/�@az@/�@/�@/�@/�@/�@/�@/�@/�@/�@/�@/�@/�@az@/�/�/�/�/�/�/�@/�@/�@/�@/�@/�@/�@/�@/�@/�@/�@/�@az@/�@/�@/�@/�@/�@/�@/�@/�@/�@/�@/�@/�@az@@/�/�@/�@/�@/�@/�@/�@/�@/�@/�@/�@/�@/�@az@/�/�/�/�/�@/�@/�@/�@/�@/�@/�@/�@/�@/�@/�@/�@az@/�@/�@/�@/�@/�@/�@/�@/�@az@/�@/�@/�@/�@/�@/�@/�@/�@/�@az@01�00�00n00;00 000@0@0	@0
@0@0@0
@0@0@0@0@0@az@0@0@0@0@0@0@0@0@0@0@0@0@az@0!0.0"@0#@0$@0%@0&@0'@0(@0)@0*@0+@0,@0-@az@0/@00@01@02@03@04@05@06@07@08@09@0:@az@0<0S0=0F0>@0?@0@@0A�0B�0C�0D�0E�az�0G@0H@0I@0J@0K@0L@0M@0N@0O@0P@0Q@0R@�@0T0a0U@0V@0W@0X@0Y@0Z@0[@0\@0]@0^@0_@0`@az@0b@0c@0d@0e@0f@0g@0h@0i@0j@0k@0l@0m@|@0o0�0p@0q0~0r@0s@0t@0u@0v@0w@0x@0y@0z@0{@0|@0}@az@0@0�@0�@0�@0�@0�@0�@0�@az@0�0�0�0�0�@0�@0�@0�@0�@0�@0�@0�@0�@0�@0�@0�@az@0�@0�@0�@0�@0�@0�@0�@0�@0�@0�@0�@0�@az@0�0�0�@0�@0�@0��0��0��0��0��0��0��0��0��az�0�@0�@0�@0�@0�@0�@0�@0�@0�@0�@0�@0�@az@0�1!0�0�0�0�0�0�0�@0�@0�@0�@0�@0�@0�@0�@0�@0�@0�@0�@az@0�@0�@0�@0�@0�@0�@0�@0�@0�@0�@0�@0�@az@@0�0�@0�@0�@0�@0�@0�@0�@0�@0�@0�@0�@0�@az@0�10�0�0�@0�@0�@0�@0�@0�@0�@0�@0�@0�@0�@0�@az@0�@0�@0�@0�@0�@0�@1@1@1@1@1@1@az@111@1	@1
@1@1@1
@1@1@1@1@1@1@az@1@1@1@1@1@1@1@1@1@1@1@1 @az@1"1Y1#1>1$111%@1&@1'@1(@1)@1*@1+@1,@1-@1.@1/@10@az@12@13@14@15@16@17@18@19@1:@1;@1<@1=@az@1?1L1@@1A@1B@1C@1D@1E@1F@1G@1H@1I@1J@1K@az@1M@1N@1O@1P@1Q@1R@1S@1T@1U@1V@1W@1X@az@1Z1u1[1h1\@1]@1^@1_@1`@1a@1b@1c@1d@1e@1f@1g@|@1i@1j@1k@1l@1m@1n@1o@1p@1q@1r@1s@1t@az@1v1�1w@1x@1y@1z@1{@1|@1}@1~@1@1�@1�@1�@az@1�@1�@1�@1�@1�@1�@1�@1�@1�@1�@1�@1�@az@1�2H1�1�1�1�1�1�@1�1�@1�@1�@1�@1�@1�@1�@1�@1�@1�@1�@1�@az@1�1�1�@1�@1�@1�@1�@1�@1�@1�@1�@1�@1�@1�@az@1�@1�@1�@1�@1�@1�@1�@1�@1�@1�@1�@1�@az@1�@1�1�1�@1�@1�@1�@1�@1�@1�@1�@1�@1�@1�@1�@az@1�@1�@1�@1�@1�@1�@1�@1�@1�@1�@1�@1�@az@1�21�1�1�1�1�@1�@1�@1�@1�@1�@1�@1�@1�@1�@1�@1�@az@1�@1�@1�@1�@1�@1�@1�@1�@1�@1�@1�@1�@az@1�21�@1�@1�@1�@1�@1�@1�@1�@2@2@2@2@az@2@2@2@2@2	@2
@2@2@2
@2@2@2@az@22-22 2@2@2@2�2�2�2�2�2�2�2�2�az�2!@2"@2#@2$@2%@2&@2'@2(@2)@2*@2+@2,@az@2.2;2/@20@21@22@23@24@25@26@27@28@29@2:@az@2<@2=@2>@2?@2@@2A@2B@2C@2D@2E@2F@2G@az@2I2�2J2g2K2Y@2L2M@2N@2O@2P@2Q@2R@2S@2T@2U@2V@2W@2X@az@@2Z2[@2\@2]@2^@2_@2`@2a@2b@2c@2d@2e@2f@az@2h2�2i2v2j@2k@2l@2m@2n@2o@2p@2q@2r@2s@2t@2u@az@2w@2x@2y@2z@2{@2|@2}@2~@2@2�@2�@2�@az@2�2�2�@2�@2�@2�@2�@2�@2�@2�@2�@2�@2�@2�@az@2�@2�@2�@2�@2�@2�@2�@2�@2�@2�@2�@2�@az@2�2�2�2�2�2�2�@2�@2�@2�@2�@2�@2�@2�@2�@2�@2�@2�@az@2�@2�@2�@2�@2�@2�@2�@2�@2�@2�@2�@2�@az@2�@2�@2�@2�@2�@az@2�2�2�@2�@2�@2�@2�@2�@2�@2�@2�@2�@2�@2�@2�@az@2�2�2�@2�@2�@2�@2�@2�@2�@2�@2�@2�@2�@2�@|@2�@2�@2�@2�@2�@2�@2�@2�@2�@2�@2�@2�@az@2�5�2�4�2�3�2�3M2�32�32�2�2�@2�@2�@2�@2�@2�@2�@2�@2�@2�@2�@2�@|@3@3@3@3@3@3@3@3@3@3	@3
@3@|@@3
3@3@3@3@3@3@3@3@3@3@3@3@az@33233)3@3@3@3 @3!@3"@3#@3$@3%@3&@3'@3(@az@3*@3+@3,@3-@3.@3/@30@31@az@333@34@35@36@37@38@39@3:@3;@3<@3=@3>@3?@az@3A@3B@3C@3D@3E@3F@3G@3H@3I@3J@3K@3L@az@3N3�3O3j3P3]3Q@3R@3S@3T�3U�3V�3W�3X�3Y�3Z�3[�3\�az�3^@3_@3`@3a@3b@3c@3d@3e@3f@3g@3h@3i@az@3k3x3l@3m@3n@3o@3p@3q@3r@3s@3t@3u@3v@3w@az@3y@3z@3{@3|@3}@3~@3@3�@3�@3�@3�@3�@az@3�3�3�3�3�@3�@3�@3�@3�@3�@3�@3�@3�@3�@3�@3�@az@3�@3�@3�@3�@3�@3�@3�@3�@3�@3�@3�@3�@az@3�3�3�@3�@3�@3�@3�@3�@3�@3�@az@3�@3�@3�@3�@3�@3�@3�@3�@3�@3�@3�@3�@|@3�4$3�3�3�3�3�3�3�@3�@3�@3�@3�@3�@3�@3�@az@3�@3�@3�@3�@3�@3�@3�@3�@3�@3�@3�@3�@az@3�3�3�@3�@3�@3�@3�@3�@3�@3�@3�@3�@3�@3�@az@3�@3�@3�@3�@3�@3�@3�@3�@3�@3�@3�@3�@az@3�4	3�3�3�@3�@3�@3�@3�@3�@3�@3�@3�@3�@3�@3�@az@3�@3�@3�@4@4@4@4@4@4@4@4@4@az@4
44@4@4
@4@4@4@4@4@4@4@4@4@|@4@4@4@4@4@4@4@4@4 @4!@4"@4#@az@4%4\4&4A4'444(@4)@4*@4+@4,@4-@4.@4/@40@41@42@43@az@45@46@47@48@49@4:@4;@4<@4=@4>@4?@4@@az@4B4O4C@4D@4E@4F@4G@4H@4I@4J@4K@4L@4M@4N@az@4P@4Q@4R@4S@4T@4U@4V@4W@4X@4Y@4Z@4[@az@4]4k4^@4_@4`@4a@4b@4c@4d@4e@4f@4g@4h@4i@4j@az@4l4y4m@4n@4o@4p@4q@4r@4s@4t@4u@4v@4w@4x@az@4z@4{@4|@4}@4~@4@4�@4�@4�@4�@4�@4�@az@4�514�4�4�4�4�4�4�4�4�@4�@4�@4�@4�@4�@4�@4�@4�@4�@4�@4�@az@4�@4�@4�@4�@4�@4�@4�@4�@4�@4�@4�@4�@az@@4�4�@4�@4�@4�@4�@4�@4�@4�@4�@4�@4�@4�@az@4�4�@4�4�@4�@4�@4�@4�@4�@4�@4�@4�@4�@4�@4�@az@4�@4�@4�@4�@4�@4�@4�@4�@4�@4�@4�@4�@4�@az@4�54�4�4�4�4�@4�@4�@4�@4�@4�@4�@4�@4�@4�@4�@4�@az@4�@4�@4�@4�@4�@4�@4�@4�@4�@4�@4�@4�@az@4�@4�@4�@4�@4�@4�@4�@4�@4�@4�@4�azaz4�az4�az4�4�az4�az4�az4�az5az5az5az5az5az5az5az5az5az5	az5
azw�az55'5
55@5@5@5@5@5@5@5@5@5@5@5@az@5@5@5@5@5@5 @5!@5"@5#@5$@5%@5&@��@5(@5)@5*@5+@5,@5-@5.@5/@50@az@525�535Y545O555B56@57@58@59@5:@5;@5<@5=@5>@5?@5@@5A@az@5C@5D@5E@5F@5G@5H@5I@5J@5K@5L@5M@5N@az@5P@5Q@5R@5S@5T@5U@5V@5W@5X@|@5Z5q5[5h5\@5]@5^@5_@5`@5a@5b@5c@5d@5e@5f@5g@az@5i@5j@5k@5l@5m@5n@5o@5p@az@5r55s@5t@5u@5v@5w@5x@5y@5z@5{@5|@5}@5~@az@5�@5�@5�@5�@5�@5�@5�@5�@5�@5�@5�@5�@az@5�5�5�5�5�5�5�@5�@5�@5�@5�@5�@5�@5�@5�@5�@5�@5�@az@5�@5�@5�@5�@5�@5�@5�@5�@5�@5�@5�@5�@az@@5�5�@5�@5�@5�@5�@5�@5�@5�@5�@5�@5�@5�@az@5�5�@5�5�@5�@5�@5�@5�@5�@5�@5�@5�@5�@5�@5�@az@5�5�5�@5�@5�@5�@5�@5�@5�@5�@5�@5�@5�@5�@az@5�@5�@5�@5�@5�@5�@5�@5�@5�@5�@5�@5�@az@5�725�6�5�6O5�65�65�5�5�@5�@5�@5�@5�@5�@5�@5�@5�@5�@5�@5�@az@5�@5�@5�@5�@5�@5�@5�@5�@5�@5�@5�@6@az@666@6@6@6@6@6@6	@6
@az@6@6
@6@6@6@6@6@6@6@6@6@6@az@66066'6@6@6@6@6@6 @6!@6"@6#@6$@6%@6&@az@6(@6)@6*@6+@6,@6-@6.@6/@az@616>62@63@64@65@66@67@68@69@6:@6;@6<@6=@az@6?@6@@6A@6B@6C@6D@6E@6F@6G@6H6Kaz6Iaz6JazgC6Laz6M6NkXaz~az6P6z6Q6l6R6_6S@6T@6U@6V@6W@6X@6Y@6Z@6[@6\@6]@6^@az@6`@6a@6b@6c@6d@6e@6f@6g@6h@6i@6j@6k@az@@6m6n@6o@6p@6q@6r@6s@6t@6u@6v@6w@6x@6y@az@6{6�6|@6}@6~@6@6�@6�@6�@6�@6�@6�@6�@6�@6�@az@@6�6�@6�@6�@6�@6�@6�@6�@6�@6�@6�@6�@6�@az@6�6�6�6�6�6�6�6�6�@6�@6�@6�@6�@6�@6�@6�@6�@6�@6�@6�@|@6�@6�@6�@6�@6�@6�@6�@6�@6�@6�@6�@6�@|@@6�6�@6�@6�@6�@6�@6�@6�@6�@6�@6�@6�@6�@az@6�6�6�6�6�@6�@6�@6�@6�@6�@6�@6�@6�@6�@6�@6�@az@6�@6�@6�@6�@6�@6�@6�@6�@6�@6�@6�@6�@az@@6�6�@6�@6�@6�@6�@6�@6�@6�@az@6�76�6�@6�6�@6�@6�@6�@6�@6�@6�@6�@6�@6�@6�@6�@az@6�76�@6�@6�@6�@6�@7@7@7@7@7@7@7@az@7@7	@7
@7@7@7
@7@7@7@7@7@7@az@777@7@7@7@7�az�77%7@7@7@7 @7!@7"@7#@7$@az@7&@7'@7(@7)@7*@7+@7,@7-@7.@7/@70@71@az@737�747�757R767D@7778@79@7:@7;@7<@7=@7>@7?@7@@7A@7B@7C@az@@7E7F@7G@7H@7I@7J@7K@7L@7M@7N@7O@7P@7Q@az@7S7n7T7a7U@7V@7W@7X@7Y@7Z@7[@7\@7]@7^@7_@7`@az@7b@7c@7d@7e@7f@7g@7h@7i@7j@7k@7l@7m@az@7o7|7p@7q@7r@7s@7t@7u@7v@7w@7x@7y@7z@7{@az@7}@7~@7@7�@7�@7�@7�@7�@7�@7�@7�@7�@az@7�7�7�7�7�7�7�@7�@7�@7�@7�@7�@7�@7�@7�@7�@7�@7�@az@7�@7�@7�@7�@7�@7�@7�@7�@7�@7�@7�@7�@az@7�7�7�@7�@7�@7�@7�@7�@7�@7�@7�@7�@7�@7�@az@7�@7�@7�@7�@7�@7�@7�@7�@7�@7�@7�@7�@az@7�7�@7�7�@7�@7�@7�@7�@7�@7�@7�@7�@7�@7�@7�@az@7�7�7�@7�@7�@7�@7�@7�@7�@7�@7�@7�@7�@7�@az@7�@7�@7�@7�@7�@7�@7�@7�@7�@7�@7�@7�@az@7�8J7�87�8	7�7�7�@7�@7�@7�@7�@7�@7�@7�@7�@7�@7�@7�@az@7�@7�@7�@8@8@8@8@8@8@8@8@8@az@8
@8@8@8
@8@8@8@8@8@8@8@8@8@az@88388&8@8@8@8@8@8@8 @8!@8"@8#@8$@8%@az@8'@8(@8)@8*@8+@8,@8-@8.@8/@80@81@82@|@848=85@86@87@88@89@8:@8;@8<@az@8>@8?@8@@8A@8B@8C@8D@8E@8F@8G@8H@8I@az@8K8`8L8R8M@8N@8O@8P@8Q@az@8S@8T@8U@8V@8W@8X@@8Y8Z@8[@8\@8]@8^@8_@|@8a8|8b8o8c@8d@8e@8f@8g@8h@8i@8j@8k@8l@8m@8n@az@8p@8q@8r@8s@8t@8u@8v@8w@8x@8y@8z@8{@az@8}8�8~@8@8�@8�@8�@8�@8�@8�@az@8�@8�@8�@8�@8�@8�@8�@8�@8�@8�@8�@8�@az@8�>�8�;�8�:A8�9s8�98�8�8�8�8�8�8�@8�@8�@8�@8�@8�@8�@8�@8�@8�@8�@8�@az@8�@8�@8�@8�@8�@8�@8�@8�@8�@8�az8�az8�8�azu�v�az8�8�8�@8�@8�@8�@8�@8�@8�@8�@az@8�@8�@8�@8�@8�@8�@8�@8�@8�@8�@8�@8�@az@8�8�8�8�8�@8�@8�@8�@8�@8�@8�@8�@8�@8�@8�@8�@az@8�@8�@8�@8�@8�@8�@8�@8�@8�@8�@8�@8�@az@8�8�8�@8�@8�@8�@8�@8�@8�@8�@8�@8�@8�@8�@az@8�@8�@8�@8�@8�@8�@8�@8�@9@9@9@9@az@99<99!999@9	@9
@9@9@9
@9@9@9@9@9@9@az@9@9@9@9@9@9@9@9@9@9@9@9 @|@9"9/9#@9$@9%@9&@9'@9(@9)@9*@9+@9,@9-@9.@az@90@91@92@93@94@95@96@97@98@99@9:@9;@az@9=9X9>9K9?@9@@9A@9B@9C@9D@9E@9F@9G@9H@9I@9J@az@9L@9M@9N@9O@9P@9Q@9R@9S@9T@9U@9V@9W@az@9Y9f9Z@9[@9\@9]@9^@9_@9`@9a@9b@9c@9d@9e@az@9g@9h@9i@9j@9k@9l@9m@9n@9o@9p@9q@9r@az@9t9�9u9�9v9�9w9�9x@9y@9z@9{@9|@9}@9~@9@9�@9�@9�@9�@az@9�@9�@9�@9�@9�@9�@9�@9�@9�@9�@9�@9�@az@9�9�9�@9�@9�@9�@9�@9�@9�@9�@9�@9�@9�@9�@az@9�@9�@9�@9�@9�@9�@9�@9�@9�@9�@9�@9�@az@9�9�9�9�9�@9�@9�@9�@9�@9�@9�@9�@9�@9�@9�@9�@az@9�@9�@9�@9�@9�@9�@9�@9�@9�@9�@9�@9�@az@9�9�9�@9�@9�@9�@9�@9�@9�@9�@9�@9�@9�@9�@az@9�@9�@9�@9�@9�@9�@9�@9�@9�@9�@9�@9�@��@9�:
9�:9�9�9�@9�@9�@9�@9�@9�@9�@9�@9�@9�@9�@9�@az@9�@9�@9�@9�@9�@9�@9�@9�@9�@9�@9�@9�@az@:@:@:@:@:@:@:@:@:	@az@::&:::
@:@:@:@:@:@:@:@:@:@:@:@az@:@:@:@:@:@:@: @:!@@:":#@:$@:%@az@:':4:(@:)@:*@:+@:,@:-@:.@@:/:0@:1@:2@:3@az@:5@:6@:7@:8@:9@::@:;@@:<@:=:>@:?@:@@az@:B:�:C:j:D@:E:\:F:S:G@:H@:I@:J@:K@:L@@:M:N@:O@:P@:Q@:R@az@:T@:U@:V@:W@:X@:Y@@:Z:[@@az@:]:^@:_@:`@:a@:b@:c@@:d@:e@:f:g@:h@:i@az@:k:�:l:�:m:z:n@:o@:p@:q@:r@:s@:t@:u@:v@:w@:x@:y@az@:{@:|@:}@:~@:@:�@:�@:�@:�@:�@:�@:�@az@:�:�:�@:�@:�@:�@:�@:�@:�@:�@:�@:�@:�@:�@az@:�@:�@:�@:�@:�@:�@:�@:�@az@:�:�:�:�:�@:�@:�@:�@:�@:�@:�@:�@:�@:�@:�@:�@az@:�@:�@:�@:�@:�@:�@:�@:�@:�@:�@:�@:�@az@:�:�:�@:�@:�@:�@:�@:�@:�@:�@:�@:�@:�@:�@az@:�@:�@:�@:�@:�@:�@:�@:�@:�@:�@:�@:�@az@:�;':�:�:�:�:�:�:�@:�@:�@:�@:�@:�@:�@:�@:�@:�@:�@:�@az@:�@:�@:�@:�@:�@:�@:�@:�@az@@:�:�@:�@:�@:�@:�@:�@:�@:�@:�@:�@:�@:�@az@:�;@:�;@;@;@;@;@;@;@;@;@;	@;
@;@az@;
;;@;@;@;@;@;@;@;@;@;@;@;@az@;@;@;@;@;@; @;!@;"@;#@;$@;%@;&@az@;(;R;);D;*;7;+@;,@;-@;.@;/@;0@;1@;2@;3@;4@;5@;6@az@;8@;9@;:@;;@;<@;=@;>@;?@;@@;A@;B@;C@az@;E@;F@;G@;H@;I@;J@;K@;L@;M@;N@;O@;P@;Q@az@;S;n;T;a;U@;V@;W@;X@;Y@;Z@;[@;\@;]@;^@;_@;`@az@;b@;c@;d@;e@;f@;g@;h@;i@;j@;k@;l@;m@az@;o;x;p@;q@;r@;s@;t@;u@;v@;w@az@;y@;z@;{@;|@;}@;~@;@;�@;�@;�@;�@;�@az@;�=;�<H;�;�;�;�;�;�;�;�;�@;�@;�@;�@;�@;�@;�@;�@;�@;�@;�@;�@az@;�@;�@;�@;�@;�@;�@;�@;�@;�@;�@;�@;�@az@;�;�;�@;�@;�@;�@;�@;�@;�@;�@;�@;�@;�@;�@az@;�@;�@;�@;�@;�@;�@;�@;�@;�@;�@;�@;�@|@;�;�;�;�;�@;�@;�@;�@;�@;�@;�@;�@;�@;�@;�@;�@az@;�@;�@;�@;�@;�@;�@;�@;�@;�@;�@;�@;�@az@;�;�;�@;�@;�@;�@;�@;�@;�@;�@;�@;�@;�@;�@az@;�@;�@;�@;�@;�@;�@;�@;�@;�@;�@;�@;�@az@;�</;�<;�<;�@;�@;�@;�@;�@<@<@<@<@<@<@<@az@<@<	@<
@<@<@<
@<@<@<@<@<@<@az@<<"<@<@<@<@<@<@<@<@<@<@< @<!@az@<#@<$@<%@<&@<'@<(@<)@<*@<+@<,@<-@<.@az@<0<:<1@<2@<3@<4@<5@<6@<7@<8@<9@az@<;@<<@<=@<>@<?@<@@@<A<B@<C@<D@<E@<F@<G@az@<I<�<J<�<K<f<L<Y<M@<N@<O@<P@<Q@<R@<S@<T@<U@<V@<W@<X@az@<Z@<[@<\@<]�<^�<_�<`�<a�<b�<c�<d�<e�az�<g<t<h@<i@<j@<k@<l@<m@<n@<o@<p@<q@<r@<s@az@<u@<v@<w@<x@<y@<z@<{@<|@<}@<~@<@<�@az@<�<�@<�<�@<�@<�@<�@<�@<�@<�@<�@<�@<�@<�@<�@az@<�<�<�@<�@<�@<�@<�@<�@<�@<�@<�@<�@<�@<�@az@<�@<�@<�@<�@<�@<�@<�@<�@<�@<�@<�@<�@az@<�<�<�<�<�<�<�@<�@<�@<�@<�@<�@<�@<�@<�@<�@<�@<�@az@<�@<�@<�@<�@<�@<�@<�@<�@<�@<�@<�@<�@az@<�<�<�@<�@<�@<�@<�@<�@<�@<�@<�@<�@<�@<�@az@<�@<�@<�@<�@<�@<�@<�@<�@az@<�<�<�<�<�@<�@<�@<�@<�@<�@<�@<�@<�@<�@<�@<�@az@<�@<�@<�@<�@<�@<�@<�@<�@az@<�=<�@<�@<�@<�@<�@<�@<�@=@=@=@=@=@az@=@=@=@=	@=
@=@=@=
@=@=@=@=@az@==�==v==?==1==$=@=@=@=@=@=@=@=@= @=!@="@=#@az@=%@=&@='@=(@=)@=*@=+@=,@=-@=.@=/@=0@az@=2@=3@=4@=5@=6@=7@=8@=9@=:@=;@=<@==@=>@|@=@=[=A=N=B@=C@=D@=E@=F@=G@=H@=I@=J@=K@=L@=M@az@=O@=P@=Q@=R@=S@=T@=U@=V@=W@=X@=Y@=Z@az@=\=i=]@=^@=_@=`@=a@=b@=c@=d@=e@=f@=g@=h@az@=j@=k@=l@=m@=n@=o@=p@=q@=r@=s@=t@=u@az@=w=�=x=�=y=�=z@={@=|@=}@=~@=@=�@=�@=�@=�@=�@=�@az@=�@=�@=�@=�@=�@=�@=�@=�@az@=�=�=�@=�@=�@=�@=�@=�@=�@=�@=�@=�@=�@=�@az@=�@=�@=�@=�@=�@=�@=�@=�@=�@=�@=�@=�@az@=�=�=�@=�@=�@=�@=�@az@=�=�=�@=�@=�@=�@=�@=�@=�@=�@=�@=�@=�@=�@|@=�@=�@=�@=�@=�@=�@=�@=�@=�@=�@=�@=�@az@=�><=�>=�=�=�=�=�@=�@=�@=��=��=��=��=��=��=��=��=��|�=�@=�@=�@=�@=�@=�@=�@=�@=�@=�@=�@=�@|@=�=�=�@=�@=�@=�@=�@=�@=�@=�@=�@=�@=�@=�@az@=�@=�@=�@=�@=�@=�@=�@>@>@>@>@>@az@>>!>>>@>	@>
@>@>@>
@>@>@>@>@>@>@az@>@>@>@>@>@>@>@>@>@>@>@> @az@>">/>#@>$@>%@>&@>'@>(@>)@>*@>+@>,@>-@>.@|@>0@>1@>2@>3@>4@>5@>6@>7@>8@>9@>:@>;@az@>=>p>>>U>?>H>@@>A@>B@>C@>D@>E@>F@>G@az@>I@>J@>K@>L@>M@>N@>O@>P@>Q@>R@>S@>T@az@>V>c>W@>X@>Y@>Z@>[@>\@>]@>^@>_@>`@>a@>b@az@>d@>e@>f@>g@>h@>i@>j@>k@>l@>m@>n@>o@az@>q>�>r>>s@>t@>u@>v@>w@>x@>y@>z@>{@>|@>}@>~@az@>�@>�@>�@>�@>�@>�@>�@>�@>�@>�@>�@>�@az@>�>�>�@>�@>�@>�@>�@>�@>�@>�@>�@>�@>�@>�@|@>�@>�@>�@>�@>�@>�@>�@>�@>�@>�@>�@>�@az@>�A�>�@J>�?�>�?>�>�>�>�>�>�>�@>�@>�@>�@>�@>�@>�@>�@>�@>�@>�@>�@|@>�@>�@>�@>�@>�@>�@>�@>�@>�@>�@>�@>�@az@>�>�>�@>�@>�@>�@>�@>�@>�@>�@>�@>�@>�@>�@az@>�@>�@>�@>�@>�@>�@>�@>�@>�@>�@>�@>�@az@>�>�>�>�>�@>�@>�@>�@>�@>�@>�@>�@>�@>�@>�@>�@az@>�@>�@>�@>�@>�@>�@>�@>�@>�@>�@>�@>�@az@??
?@?@?@?@?@?@?@?@?	@?
@?@?@az@?@?@?@?@?@?@?@?@?@?@?@?@az@??R??7??*?@?@? @?!@?"@?#@?$@?%@?&@?'@?(@?)@az@?+@?,@?-@?.@?/@?0@?1@?2@?3@?4@?5@?6@az@?8?E?9@?:@?;@?<�?=�?>�??�?@�?A�?B�?C�?D�az�?F@?G@?H@?I@?J@?K@?L@?M@?N@?O@?P@?Q@az@?S?n?T?a?U@?V@?W@?X@?Y@?Z@?[@?\@?]@?^@?_@?`@az@?b@?c@?d@?e@?f@?g@?h@?i@?j@?k@?l@?m@az@?o?|?p@?q@?r@?s@?t@?u@?v@?w@?x@?y@?z@?{@az@?}@?~@?@?�@?�@?�@?�@?�@?�@?�@?�@?�@|@?�?�?�?�?�?�?�?�?�@?�@?�@?�@?�@?�@?�@?�@?�@?�@?�@?�@az@?�@?�@?�@?�@?�@?�@?�@?�@?�@?�@?�@?�@az@@?�?�@?�@?�@?�@?�@?�@?�@?�@?�@?�@?�@?�@az@?�?�?�?�?�@?�@?�@?�@?�@?�@?�@?�@?�@?�@?�@?�@az@?�@?�@?�@?�@?�@?�@?�@?�@?�@?�@?�@?�@az@?�?�?�@?�@?�@?�@?�@?�@?�@?�@?�@?�@?�@?�@az@?�@?�@?�@?�@?�@?�@?�@?�@?�@?�@?�@?�@az@?�@$?�@	?�?�?�@?�@?�@?�@?�@?�@?�@?�@?�@?�@?�@?�@az@?�@?�@?�@@@@@@@@@@@@@@@@@@@az@@
@@@@@@
@@@@@@@@@@@@@@@@@@@az@@@@@@@@@@@@@@@@@@ @@!@@"@@#@az@@%@@@&@3@'@@(@@)@@*@@+@@,@@-@@.@@/@@0@@1@@2@az@@4@@5@@6@@7@@8@@9@@:@@;@@<@@=@@>@@?@az@@A@@B@@C@@D@@E@@F@@G@@H@@I@�@@KA"@L@�@M@�@N@e@O@\@P@@Q@@R@@S@@T@@U@@V@@W@@X@@Y@@Z@@[@az@@]@@^@@_@@`@@a@@b@@c@@d@az@@f@s@g@@h@@i@@j@@k@@l@@m@@n@@o@@p@@q@@r@az@@t@@u@@v@@w@@x@@y@@z@@{@@|@@}@@~@@@az@@�@�@�@�@�@@�@@�@@�@@�@@�@@�@@�@@�@@�@@�@@�@|@@�@@�@@�@@�@@�@@�@@�@@�@@�@@�@@�@@�@az@@�@�@�@@�@@�@@�@@�@@�@@�@@�@@�@@�@@�@@�@az@@�@@�@@�@@�@@�@@�@@�@@�@@�@@�@@�@@�@az@@�@�@�@�@�@�@�@@�@@�@@�@@�@@�@@�@@�@@�@@�@@�@@�@az@@�@@�@@�@@�@@�@@�@@�@@�@az@@�@�@�@@�@@�@@�@@�@@�@@�@@�@@�@@�@@�@@�@az@@�@@�@@�@@�@@�@@�@@�@@�@@�@@�@@�@@�@az@@�A@�@�@�@@�@@�@@�@@�@@�@@�@@�@@�@@�@@�@@�@az@@�@@�@@�@@�@@�@A@A@A@A@A@A@A@az@AAA	@A
@A@A@A
@A@A@A@A@A@A@A@az@A@A@A@A@A@A@A@A@A@A@A @A!@az@A#A�A$ANA%A3@A&A'@A(@A)@A*@A+@A,@A-@A.@A/@A0@A1@A2@az@A4AAA5@A6@A7@A8@A9@A:@A;@A<@A=@A>@A?@A@@az@AB@AC@AD@AE@AF@AG@AH@AI@AJ@AK@AL@AM@az@AOAjAPA]AQ@AR@AS@AT@AU@AV@AW@AX@AY@AZ@A[@A\@az@A^@A_@A`@Aa@Ab@Ac@Ad@Ae@Af@Ag@Ah@Ai@az@AkAxAl@Am@An@Ao@Ap@Aq@Ar@As@At@Au@Av@Aw@az@Ay@Az@A{@A|@A}@A~@A@A�@A�@A�@A�@A�@az@A�A�A�A�A�A�A�@A�@A�@A�@A�@A�@A�@A�@A�@A�@A�@A�@az@A�@A�@A�@A�@A�@A�@A�@A�@A�@A�@A�@A�@az@A�A�A�@A�@A�@A�@A�@A�@A�@A�@A�@A�@A�@A�@|@A�@A�@A�@A�@A�@A�@A�@A�@A�@A�@A�@A�@az@A�A�A�A�A�@A�@A�@A�@A�@A�@A�@A�@A�@A�@A�@A�@|@A�@A�@A�@A�@A�@A�@A�@A�@A�@A�@A�@A�@az@A�A�A�@A�@A�@A�@A�@A�@A�@A�@A�@A�@A�@A�@az@A�@A�@A�@A�@A�@A�@A�@A�@A�@A�@A�@A�@az@A�CkA�B�A�BfA�B/A�BA�BA�@A�@A�@A�@A�@B@B@B@B@B@B@B@az@B@B	@B
@B@B@B
@B@B@B@B@B@B@az@BB"B@B@B@B@B@B@B@B@B@B@B @B!@|@B#@B$@B%@B&@B'@B(@B)@B*@B+@B,@B-@B.@az@B0BKB1B>B2@B3@B4@B5@B6@B7@B8@B9@B:@B;@B<@B=@az@B?@B@@BA@BB@BC@BD@BE@BF@BG@BH@BI@BJ@az@BLBYBM@BN@BO@BP@BQ@BR@BS@BT@BU@BV@BW@BX@az@BZ@B[@B\@B]@B^@B_@B`@Ba@Bb@Bc@Bd@Be@az@BgB�BhBv@BiBj@Bk@Bl@Bm@Bn@Bo@Bp@Bq@Br@Bs@Bt@Bu@az@BwB�Bx@By@Bz@B{@B|@B}@B~@B@B�@B�@B�@B�@az@B�@B�@B�@B�@B�@B�@B�@B�@B�@B�@B�@B�@az@B�B�B�B�B�@B�@B�@B�@B�@B�@B�@B�@B�@B�@B�@B�@az@B�@B�@B�@B�@B�@B�@B�@B�@B�@B�@B�@B�@az@B�B�B�@B�@B�@B�@B�@B�@B�@B�@B�@B�@B�@B�@az@B�@B�@B�@B�@B�@B�@B�@B�@B�@B�@B�@B�@az@B�CB�B�B�B�B�@B�@B�@B�@B�@az@B�B�B�@B�@B�@B�@B�@B�@B�@B�@B�@B�@B�@B�@az@B�@B�@B�@B�@B�@B�@B�@B�@B�@B�@B�@B�@|@B�B�@B�B�@B�@B�@B�@B�@B�@B�@B�@B�@B�@B�@B�@az@B�C	B�@B�@B�@C@C@C@C@C@C@C@C@C@az@C
@C@C@C
@C@C@C@C@C@C@C@C@az@CCACC3CC&C@C@C@C@C@C@C @C!@C"@C#@C$@C%@az@C'@C(@C)@C*@C+@C,@C-@C.@C/@C0@C1@C2@az@@C4C5@C6@C7@C8@C9@C:@C;@C<@C=@C>@C?@C@@az@CBCP@CCCD@CE@CF@CG@CH@CI@CJ@CK@CL@CM@CN@CO@az@CQC^CR@CS@CT@CU@CV@CW@CX@CY@CZ@C[@C\@C]@az@C_@C`@Ca@Cb@Cc@Cd@Ce@Cf@Cg@Ch@Ci@Cj@az@ClD1CmC�CnC�CoC}@CpCq@Cr@Cs@Ct@Cu@Cv@Cw@Cx@Cy@Cz@C{@C|@az@C~C�C@C�@C�@C�@C�@C�@C�@C�@C�@C�@C�@C�@az@C�@C�@C�@C�@C�@C�@C�@C�@C�@C�@C�@C�@az@C�C�C�C�C�@C�@C�@C�@C�@C�@C�@C�@C�@C�@C�@C�@az@C�@C�@C�@C�@C�@C�@C�@C�@C�@C�@C�@C�@az@C�C�C�@C�@C�@C�@C�@C�@C�@C�@C�@C�@C�@C�@az@C�@C�@C�@C�@C�@C�@C�@C�@C�@C�@C�@C�@az@C�DC�C�C�C�C�@C�@C�@C�@C�@C�@C�@C�@C�@C�@C�@C�@|@C�@C�@C�@C�@C�@C�@C�@C�@C�@C�@C�@C�@az@C�C�C�@C�@C�@C�@C�@C�@C�@C�@C�@C�@C�@C�@|@C�@C�@C�@C�@C�@D@D@D@D@D@D@D@az@DDD	@D
@D@D@D
@D@D@D@D@D@D@D@D@az@DD$D@D@D@D@D@D@D@D@D @D!@D"@D#@az@D%@D&@D'@D(@D)@D*@D+@D,@D-@D.@D/@D0@az@D2D�D3DjD4DOD5DBD6@D7@D8@D9@D:@D;@D<@D=@D>@D?@D@@DA@az@DC@DD@DE@DF@DG@DH@DI@DJ@DK@DL@DM@DN@az@DPD]DQ@DR@DS@DT@DU@DV@DW@DX@DY@DZ@D[@D\@az@D^@D_@D`@Da@Db@Dc@Dd@De@Df@Dg@Dh@Di@az@DkD�DlDyDm@Dn@Do@Dp@Dq@Dr@Ds@Dt@Du@Dv@Dw@Dx@az@Dz@D{@D|@D}@D~@D@D�@D�@D�@D�@D�@D�@az@D�D�D�@D�@D�@D�@D�@D�@D�@D�@D�@D�@D�@D�@az@D�@D�@D�@D�@D�@D�@D�@D�@D�@D�@D�@D�@az@D�D�D�D�D�D�D�@D�@D�@D�@D�@D�@D�@D�@D�@D�@D�@D�@az@D�@D�@D�@D�@D�@D�@D�@D�@az@D�D�D�@D�@D�@D�@D�@D�@D�@D�@D�@D�@D�@D�@az@D�@D�@D�@D�@D�@D�@D�@D�@D�@D�@D�@D�@az@D�D�D�D�D�@D�@D�@D�@D�@D�@D�@D�@D�@D�@D�@D�@az@D�@D�@D�@D�@D�@D�@D�@D�@D�@D�@D�@D�@az@@D�D�@D�@D�@D�@D�@D�@D�@D�@D�@D�@D�@D�@az@EL�EI�EHEF~EE�EEREE,EE"EEE	@E
@E@E@E
@E@E@E@E@E@E@E@az@E@E@E@E@E@E@E@E@E@E@E @E!@az@E#@E$@E%@E&@E'@E(@E)@E*@E+@az@E-EHE.E;E/@E0@E1@E2@E3@E4@E5@E6@E7@E8@E9@E:@az@E<@E=@E>@E?@E@@EA@EB@EC@ED@EE@EF@EG@az@EI@EJ@EK@EL@EM@EN@EO@EP@EQ@az@ESE�ETEoEUEbEV@EW@EX@EY@EZ@E[@E\@E]@E^@E_@E`@Ea@az@Ec@Ed@Ee@Ef@Eg@Eh@Ei@Ej@Ek@El@Em@En@az@EpE}Eq@Er@Es@Et@Eu@Ev@Ew@Ex@Ey@Ez@E{@E|@az@E~@E@E�@E�@E�@E�@E�@E�@E�@E�@E�@E�@|@E�E�E�E�E�@E�@E�@E�@E�@E�@E�@E�@E�@E�@E�@E�@az@E�@E�@E�@E�@E�@E�@E�@E�@E�@E�@E�@E�@az@@E�E�@E�@E�@E�@E�@E�@E�@E�@E�@E�@E�@E�@az@E�FE�E�E�E�E�E�E�@E�@E�@E�@E�@E�@E�@E�@E�@E�@E�@E�@az@E�@E�@E�@E�@E�@E�@E�@E�@E�@E�@E�@E�@az@E�E�E�@E�@E�@E�@E�@E�@E�@E�@E�@E�@E�@E�@az@E�@E�@E�@E�@E�@E�@E�@E�@E�@E�@E�@E�@az@E�F	E�E�E�@E�@E�@E�@E�@E�@E�@E�@E�@E�@E�@E�@az@E�@E�@E�@F@F@F@F@F@F@F@F@F@az@@F
F@F@F
@F@F@F@F@F@F@F@F@F@az@FFOFF4FF'F@F@F@F@F@F @F!@F"@F#@F$@F%@F&@az@F(@F)@F*@F+@F,@F-@F.@F/@F0@F1@F2@F3@az@F5FBF6@F7@F8@F9@F:@F;@F<@F=@F>@F?@F@@FA@az@FC@FD@FE@FF@FG@FH@FI@FJ@FK@FL@FM@FN@az@FPFkFQF^FR@FS@FT@FU@FV@FW@FX@FY@FZ@F[@F\@F]@az@F_@F`@Fa@Fb@Fc@Fd@Fe@Ff@Fg@Fh@Fi@Fj@az@FlFuFm@Fn@Fo@Fp@Fq@Fr@Fs@Ft@az@Fv@Fw@Fx@Fy@Fz@F{@F|@F}@az@FG3F�F�F�F�F�F�F�F�F�@F�@F�@F�@F�@F�@F�@F�@F�@F�@F�@F�@az@F�@F�@F�@F�@F�@F�@F�@F�@F�@F�@F�@F�@az@F�F�F�@F�@F�@F�@F�@F�@F�@F�@F�@F�@F�@F�@az@F�@F�@F�@F�@F�@F�@F�@F�@F�@F�@F�@F�@az@F�F�@F�F�@F�@F�@F�@F�@F�@F�@F�@F�@F�@F�@F�@az@F�F�F�@F�@F�@F�@F�@F�@F�@F�@F�@F�@F�@F�@|@F�@F�@F�@F�@F�@F�@F�@F�@az@F�GF�F�F�F�F�@F�@F�@F�@F�@F�@F�@F�@F�@F�@F�@F�@az@F�@F�@F�@F�@F�@F�@F�@F�@F�@F�@F�@F�@az@F�G	F�@F�@F�@G@G@G@G@G@G@G@G@G@az@G
@G@G@G
@G@G@G@G@G@G@G@G@az@GG%@GG@G@G@G@G@G@G@G @G!@G"@G#@G$@az@@G&G'@G(@G)@G*@G+@G,@G-@G.@G/@G0@G1@G2@az@G4G�G5GlG6GQG7GDG8@G9@G:@G;@G<@G=@G>@G?@G@@GA@GB@GC@az@GE@GF@GG@GH@GI@GJ@GK@GL@GM@GN@GO@GP@az@GRG_GS@GT@GU@GV@GW@GX@GY@GZ@G[@G\@G]@G^@az@G`@Ga@Gb@Gc@Gd@Ge@Gf@Gg@Gh@Gi@Gj@Gk@az@GmG�GnG{Go@Gp@Gq@Gr@Gs@Gt@Gu@Gv@Gw@Gx@Gy@Gz@az@G|@G}@G~@G@G�@G�@G�@G�@G�@G�@G�@G�@|@G�G�G�@G�@G�@G�@G�@G�@G�@G�@G�@G�@G�@G�@az@G�@G�@G�@G�@G�@G�@G�@G�@G�@G�@G�@G�@az@G�G�G�G�G�G�G�@G�@G�@G�@G�@G�@G�@G�@G�@G�@G�@G�@az@G�@G�@G�@G�@G�@G�@G�@G�@G�@G�@G�@G�@az@@G�G�@G�@G�@G�@G�@G�@G�@G�@G�@G�@G�@G�@az@G�G�G�G�G�@G�@G�@G�@G�@G�@G�@G�@G�@G�@G�@G�@az@G�@G�@G�@G�@G�@G�@G�@G�@G�@G�@G�@G�@az@G�G�G�@G�@G�@G�@G�@G�@G�@G�@G�@G�@G�@G�@az@G�@G�@G�@G�@G�@G�@G�@H@H@H@H@H@az@HH�HHaHH&H	@H
HH@H@H
@H@H@H@H@H@H@H@H@H@H@az@H@H@H@H@H@H@H@H @H!@H"@H#@H$@H%@az@H'HDH(H6H)@H*@H+@H,@H-@H.@H/@H0@H1@H2@H3@H4@H5@az@H7@H8@H9@H:@H;@H<@H=@H>@H?@H@@HA@HB@HC@az@HEHSHF@HG@HH@HI@HJ@HK@HL@HM@HN@HO@HP@HQ@HR@az@HT@HU@HV@HW@HX@HY@HZ@H[@H\@H]@H^@H_@H`@az@HbH�HcH�HdHrHe@Hf@Hg@Hh@Hi@Hj@Hk@Hl@Hm@Hn@Ho@Hp@Hq@az@Hs@Ht@Hu@Hv@Hw@Hx@Hy@Hz@H{@H|@H}@H~@H@az@H�H�H�@H�@H�@H�@H�@H�@H�@H�@H�@H�@H�@H�@H�@az@H�@H�@H�@H�@H�@H�@H�@H�@H�@H�@H�@H�@H�@az@H�H�H�H�H�@H�@H�@H�@H�@H�@H�@H�@H�@az@H�@H�@H�@H�@H�@H�@H�@H�@H�@H�@H�@H�@H�@az@H�H�H�@H�@H�@H�@H�@H�@H�@H�@H�@H�@H�@H�@H�@az@H�@H�@H�@H�@H�@H�@H�@H�@H�@H�@H�@H�@H�@az@H�I>H�IH�H�H�H�H�@H�@H�@H�@H�@H�@H�@H�@H�@H�@H�@H�@H�@az@H�@H�@H�@H�@H�@H�@H�@H�@H�@H�@H�@H�@H�@az@H�IH�@H�@H�@H�@H��H��H��H��H��H��I�I�I�az�I@I@I@I@I@I	@I
@I@I@I
@I@I@I@az@II!@II@I@I@I@I@I@I@I@I@I@I@I@I @az@I"I0I#@I$@I%@I&@I'@I(@I)@I*@I+@I,@I-@I.@I/@az@I1@I2@I3@I4@I5@I6@I7@I8@I9@I:@I;@I<@I=@az@I?IzI@I]IAIOIB@IC@ID@IE@IF@IG@IH@II@IJ@IK@IL@IM@IN@az@IP@IQ@IR@IS@IT@IU@IV@IW@IX@IY@IZ@I[@I\@az@I^IlI_@I`@Ia@Ib@Ic@Id@Ie@If@Ig@Ih@Ii@Ij@Ik@az@Im@In@Io@Ip@Iq@Ir@Is@It@Iu@Iv@Iw@Ix@Iy@az@I{I�@I|I}@I~@I@I�@I�@I�@I�@I�@I�@I�@I�@I�@I�@az@I�I�I�@I�@I�@I�@I�@I�@I�@I�@I�@I�@I�@I�@I�@az@I�@I�@I�@I�@I�@I�@I�@I�@I�@az@I�KGI�JfI�JI�I�I�I�I�I�I�@I�@I�@I�@I�@I�@I�@I�@I�@I�@I�@I�@I�@az@I�@I�@I�@I�@I�@I�@I�@I�@I�@I�@I�@I�@I�@az@I�@I�@I�@I�@I�@I�@I�@I�@I�@I�@I�@I�@I�@I�@az@I�I�I�I�I�@I�@I�@I�@I�@I�@I�@I�@I�@I�@I�@I�@I�@az@I�@I�@I�@I�@I�@I�@I�@I�@I�@az@I�I�I�@I�@I�@I�@I�@I�@I�@I�@I�@I�@I�@I�@I�@az@I�@I�@J@J@J@J@J@J@J@J@J@J	@J
@az@JJ9J
J*JJJ@J@J@J@J@J@J@J@J@J@J@J@J@az@J@J@J@J @J!@J"@J#@J$@J%@J&@J'@J(@J)@az@@J+J,@J-@J.@J/@J0@J1@J2@J3@J4@J5@J6@J7@J8@|@J:JI@J;J<@J=@J>@J?@J@@JA@JB@JC@JD@JE@JF@JG@JH@az@JJJXJK@JL@JM@JN@JO@JP@JQ@JR@JS@JT@JU@JV@JW@az@JY@JZ@J[@J\@J]@J^@J_@J`@Ja@Jb@Jc@Jd@Je@az@JgJ�JhJ�JiJ�JjJxJk@Jl@Jm@Jn@Jo@Jp@Jq@Jr@Js@Jt@Ju@Jv@Jw@az@Jy@Jz@J{@J|@J}@J~@J@J�@J�@J�@J�@J�@J�@az@J�@J�@J�@J�@J�@J�@J�@J�@J�@J�@J�@J�@J�@J�@az@J�J�J�J�J�@J�@J�@J�@J�@J�@J�@J�@J�@J�@J�@J�@J�@az@J�@J�@J�@J�@J�@J�@J�@J�@J�@J�@J�@J�@J�@az@J�J�J�@J�@J�@J�@J�@J�@J�@J�@J�@J�@J�@J�@J�@az@J�@J�@J�@J�@J�@J�@J�@J�@J�@J�@J�@J�@J�@az@J�KJ�J�J�J�J�@J�@J�@J�@J�@J�@J�@J�@J�@J�@J�@J�@J�@az@J�@J�@J�@J�@J�@J�@J�@J�@J�@J�@J�@J�@J�@az@J�J�J�@J�@J�@J�@J�@J�@J�@J�@J�@J�@J�@J�@J�@az@J�@K@K@K@K@K@K@K@K@K@K	@K
@K@az@K
K*KKK@K@K@K@K@K@K@K@K@K@K@K@K@az@K@K@K@K @K!@K"@K#@K$@K%@K&@K'@K(@K)@|@K+K9K,@K-@K.@K/@K0@K1@K2@K3@K4@K5@K6@K7@K8@az@K:@K;@K<@K=@K>@K?@K@@KA@KB@KC@KD@KE@KF@az@KHK�KIK�KJK�KKKhKLKZKM@KN@KO@KP@KQ@KR@KS@KT@KU@KV@KW@KX@KY@az@K[@K\@K]@K^@K_@K`@Ka@Kb@Kc@Kd@Ke@Kf@Kg@az@KiKwKj@Kk@Kl@Km@Kn@Ko@Kp@Kq@Kr@Ks@Kt@Ku@Kv@az@Kx@Ky@Kz@K{@K|@K}@K~@K@K�@K�@K�@K�@K�@az@K�K�K�K�K�@K�@K�@K�@K�@K�@K�@K�@K�@K�@K�@K�@K�@az@K�@K�@K�@K�@K�@K�@K�@K�@K�@K�@K�@K�@K�@az@K�@K�@K�@K�@K�@K�@K�@K�@K�@K�@K�@K�@K�@K�@az@K�K�K�@K�K�K�@K�@K�@K�@K�@K�@K�@K�@K�@K�@K�@K�@K�@az@K�@K�@K�@K�@K�@K�@K�@K�@K�@K�@K�@K�@K�@az@K�K�@K�K�@K�@K�@K�@K�@K�@K�@K�@K�@K�@K�@K�@K�@|@K�K�K�@K�@K�@K�@K�@K�@K�@K�@K�@K�@K�@K�@K�@az@K�@K�@K�@K�@K�@K�@K�@K�@K�@K�@K�@K�@K�@�@K�LnLL3LLLLL@L@L@L@L@L@L	@L
@L@L@L
@L@L@az@L@L@L@L@L@az@LL%L@L@L@L@L@L@L@L@L @L!@L"@L#@L$@|@L&@L'@L(@L)@L*@L+@L,@L-@L.@L/@L0@L1@L2@az@L4LQL5LCL6@L7@L8@L9@L:@L;@L<@L=@L>@L?@L@@LA@LB@|@LD@LE@LF@LG@LH@LI@LJ@LK@LL@LM@LN@LO@LP@az@LRL`LS@LT@LU@LV@LW@LX@LY@LZ@L[@L\@L]@L^@L_@az@La@Lb@Lc@Ld@Le@Lf@Lg@Lh@Li@Lj@Lk@Ll@Lm@az@LoL�LpL�LqLLr@Ls@Lt@Lu@Lv@Lw@Lx@Ly@Lz@L{@L|@L}@L~@az@L�@L�@L�@L�@L�@L�@L�@L�@L�@L�@L�@L�@L�@az@L�@L�@L�@L�@L�@L�@L�@L�@L�@L�@L�@L�@L�@L�@az@L�L�L�L�L�@L�@L�@L�@L�@L�@L�@L�@L�@L�@L�@L�@L�@az@L�@L�@L�@L�@L�@L�@L�@L�@L�@az@L�L�L�@L�@L�@L�@L��L��L��L��L��L��L��L��L��az�L�@L�@L�@L�@L�@L�@L�@L�@L�@L�@L�@L�@L�@az@L�PSL�N�L�M�L�MNL�ML�L�L�L�L�@L�@L�@L�@L�@L�@L�@L�@L�@L�@L�@L�@L�@az@L�@L�@L�@L�@L�@L�@L�@L�@L�@L�@L�@L�@L�@az@L�ML�@L�@L�@L�@L�@L�@L�@L�@M@M@M@M@M@az@M@M@M@M	@M
�M�M�M
�M�M�M�M�M�az�MM1MM#M@M@M@M@M@M@M@M@M@M@M @M!@M"@az@M$@M%@M&@M'@M(@M)@M*@M+@M,@M-@M.@M/@M0@az@M2M@M3@M4@M5@M6@M7@M8@M9@M:@M;@M<@M=@M>@M?@az@MA@MB@MC@MD@ME@MF@MG@MH@MI@MJ@MK@ML@MM@f@MOM�MPMmMQM_MR@MS@MT@MU@MV@MW@MX@MY@MZ@M[@M\@M]@M^@az@M`@Ma@Mb@Mc@Md@Me@Mf@Mg@Mh@Mi@Mj@Mk@Ml@az@MnM|Mo@Mp@Mq@Mr@Ms@Mt@Mu@Mv@Mw@Mx@My@Mz@M{@az@M}@M~@M@M�@M�@M�@M�@M�@M�@M�@M�@M�@M�@az@M�M�@M�M�@M�@M�@M�@M�@M�@M�@M�@M�@M�@M�@M�@M�@az@M�M�M�@M�@M�@M�@M�@M�@M�@M�@M�@M�@M�@M�@M�@az@M�@M�@M�@M�@M�@M�@M�@M�@M�@M�@M�@M�@M�@az@M�N/M�M�M�M�M�M�M�@M�@M�@M�@M�@M�@M�@M�@M�@M�@M�@M�@M�@az@M�@M�@M�@M�@M�@M�@M�@M�@M�@M�@M�@M�@M�@az@M�M�M�@M�@M�@M�@M�@M�@M�@M�@M�@M�@M�@M�@M�@az@M�@M�@M�@M�@M�@M�@M�@M�@M�@M�@M�@M�@M�@az@M�NM�NM�@M�@M�@M�@M�@M�@M�@M�@M�@N@N@N@N@az@N@N@N@N@N	@N
@N@N@N
@N@N@N@N@az@NN!N@N@N@N@N@N@N@N@N@N@N@N@N @az@N"@N#@N$@N%@N&@N'@N(@N)@N*@N+@N,@N-@N.@az@N0NkN1NNN2N@N3@N4@N5@N6@N7@N8@N9@N:@N;@N<@N=@N>@N?@az@NA@NB@NC@ND@NE@NF@NG@NH@NI@NJ@NK@NL@NM@az@NON]NP@NQ@NR@NS@NT@NU@NV@NW@NX@NY@NZ@N[@N\@az@N^@N_@N`@Na@Nb@Nc@Nd@Ne@Nf@Ng@Nh@Ni@Nj@az@NlN�NmN{Nn@No@Np@Nq@Nr@Ns@Nt@Nu@Nv@Nw@Nx@Ny@Nz@az@N|@N}@N~@N@N�@N�@N�@N�@N�@N�@N�@N�@N�@az@N�N�N�@N�@N�@N�@N�@N�@N�@N�@N�@N�@N�@N�@N�@|@N�@N�@N�@N�@N�@N�@N�@N�@N�@N�@N�@N�@N�@az@N�OvN�ON�N�N�N�N�@N�@N�@N�@N�@N��N��N��N��N��N��N��N��N��az�N�N�N�@N�@N�@N�@N�@N�@N�@N�@N�@N�@N�@N�@N�@az@N�@N�@N�@N�@N�@N�@N�@N�@N�@N�@N�@N�@N�@az@N�N�N�N�N�@N�@N�@N�@N�@N�@N�@N�@N�@N�@N�@N�@N�@az@N�@N�@N�@N�@N�@N�@N�@N�@N�@N�@N�@N�@N�@az@N�ON�@N�@N�@N�@N�@N�@N�@N�@N�@N�@O@O@O@az@O@O@O@O@O@O	@O
@O@O@O
@O@O@O@az@OO;OO,OOO@O@O@O@O@O@O@O@O@az@O@O @O!@O"@O#@O$@O%@O&@O'@O(@O)@O*@O+@az@O-@O.@O/@O0@O1@O2@O3@O4@O5@O6@O7@O8@O9@O:@az@O<OYO=OKO>@O?@O@@OA@OB@OC@OD@OE@OF@OG@OH@OI@OJ@az@OL@OM@ON@OO@OP@OQ@OR@OS@OT@OU@OV@OW@OX@az@OZOhO[@O\@O]@O^@O_@O`@Oa@Ob@Oc@Od@Oe@Of@Og@az@Oi@Oj@Ok@Ol@Om@On@Oo@Op@Oq@Or@Os@Ot@Ou@az@OwO�OxO�OyO�OzO�O{@O|@O}@O~@O@O�@O�@O�@O�@O�@O�@O�@O�@az@O�@O�@O�@O�@O�@O�@O�@O�@O�@O�@O�@O�@O�@az@O�O�O�@O�@O�@O�@O�@O�@O�@O�@O�@O�@O�@O�@O�@az@O�@O�@O�@O�@O�@O�@O�@O�@O�@O�@O�@O�@O�@az@O�O�O�O�O�@O�@O�@O�@O�@O�@O�@O�@O�@O�@O�@O�@O�@az@O�@O�@O�@O�@O�@O�@O�@O�@O�@O�@O�@O�@O�@|@O�O�O�@O�@O�@O�@O�@O�@O�@O�@O�@O�@O�@O�@O�@az@O�@O�@O�@O�@O��O��O��O��O��O��O��O��O��az�O�P&O�P
O�O�O�@O�@O�@O�@O�@O�@O�@O�@O�@O�@O�@O�@O�@az@P@P@P@P@P@P@P@P@P@P	@P
@P@P@az@PPP@P@P@P@P@P@P@P@P@P@P@P@P@az@P@P@P@P @P!@P"@P#@P$@P%@az@P'P6@P(P)@P*@P+@P,@P-@P.@P/@P0@P1@P2@P3@P4@P5@az@P7PEP8@P9@P:@P;@P<@P=@P>@P?@P@@PA@PB@PC@PD@az@PF@PG@PH@PI@PJ@PK@PL@PM@PN@PO@PP@PQ@PR@az@PTQ�PUQ*PVP�PWP�PXPqPYPgPZ@P[@P\@P]@P^@P_@P`@Pa@Pb@Pc@Pd@Pe@Pf@az@Ph@Pi@Pj@Pk@Pl@Pm@Pn@Po@Pp@az@PrP�Ps@Pt@Pu@Pv@Pw@Px@Py@Pz@P{@P|@P}@P~@P@az@P�@P�@P�@P�@P�@P�@P�@P�@P�@P�@P�P�P�P�azP�azgQP�P�azt�b�azP�azazP�v�azP�P�@P�P�@P�@P�@P�@P�@P�@P�@P�@P�@P�@P�@P�@P�@|@P�P�P�@P�@P�@P�@P�@P�@P�@P�@P�@P�@P�@P�@P�@az@P�@P�@P�@P�@P�@P�@P�@P�@P�@P�@P�@P�@P�@az@P�P�P�P�P�@P�@P�@P�@P�@P�@P�@P�@P�@P�@P�@P�@P�@P�@|@P�P�P�@P�@P�@P�@P�@P�@P�@P�@P�@P�@P�@P�@P�@az@P�@P�@P�@P�@P�@P�@P�@P�@P�@P�@P�@P�@P�@az@P�Q
P�P�P�@P�@P�@P�@P�@P�@P�@P�@P�@P�@P�@P�@P�@az@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q	@Q
@Q@Q@az@QQQ@Q@Q@Q@Q�Q�Q�Q�Q�Q�Q�Q�Q�az�Q@Q@Q@Q @Q!@Q"@Q#@Q$@Q%@Q&@Q'@Q(@Q)@az@Q+Q�Q,QQQ-Q4@Q.Q/@Q0@Q1@Q2@Q3@az@Q5QCQ6@Q7@Q8@Q9@Q:@Q;@Q<@Q=@Q>@Q?@Q@@QA@QB@|@QD@QE@QF@QG@QH@QI@QJ@QK@QL@QM@QN@QO@QP@az@QRQoQSQaQT@QU@QV@QW@QX@QY@QZ@Q[@Q\@Q]@Q^@Q_@Q`@az@Qb@Qc@Qd@Qe@Qf@Qg@Qh@Qi@Qj@Qk@Ql@Qm@Qn@az@QpQ~Qq@Qr@Qs@Qt@Qu@Qv@Qw@Qx@Qy@Qz@Q{@Q|@Q}@az@Q@Q�@Q�@Q�@Q�@Q�@Q�@Q�@Q�@Q�@Q�@Q�@Q�@az@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�@az@Q�Q�Q�@Q�@Q�@Q�@Q�@Q�@Q�@Q�@Q�@Q�@Q�@Q�@Q�@az@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�@az@Q�@Q�@Q�@Q�@Q�@Q�@Q�@Q�@Q�@Q�@Q�@Q�@Q�@az@Q�Q�Q�@Q�@Q�@Q�@Q�@Q�@Q�@Q�@Q�@Q�@Q�@Q�@Q�@az@Q�@Q�@Q�@Q�@Q�@Q�@Q�@Q�@Q�@Q�@Q�@Q�@Q�@az@RR�RRfRR/RR RRR@R@R@R@R	@R
@R@R@R
@R@R@R@R@az@R@R@R@R@R@R@R@R@R@R@R@R@R@az@R!@R"@R#@R$@R%@R&@R'@R(@R)@R*@R+@R,@R-@R.@az@R0RIR1R;R2@R3@R4@R5@R6@R7@R8@R9@R:@az@R<@R=@R>@R?@R@@RA@RB@RC@RD@RE@RF@RG@RH@az@RJRXRK@RL@RM@RN@RO@RP@RQ@RR@RS@RT@RU@RV@RW@az@RY@RZ@R[@R\@R]@R^@R_@R`@Ra@Rb@Rc@Rd@Re@az@RgR�RhRwRi@Rj@Rk@Rl@Rm@Rn@Ro@Rp@Rq@Rr@Rs@Rt@Ru@Rv@az@RxR�Ry@Rz@R{@R|@R}@R~@R@R�@R�@R�@R�@R�@R�@|@R�@R�@R�@R�@R�@R�@R�@R�@R�@R�@R�@R�@R�@az@R�R�R�R�R�@R�@R�@R�@R�@R�@R�@R�@R�@R�@R�@R�@R�@az@R�@R�@R�@R�@R�@R�@R�@R�@R�@R�@R�@R�@R�@az@R�@R�@R�@R�@R�@R�@R�@R�@R�@R�@R�@R�@R�@R�@az@R�S9R�R�R�R�R�R�R�@R�@R�@R�@R�@R�@R�@R�@R�@R�@R�@R�@R�@|@R�@R�@R�@R�@R�@R�@R�@R�@R�@R�@R�@R�@R�@|@R�R�R�@R�@R�@R�@R�@R�@R�@R�@R�@R�@R�@R�@R�@az@R�@R�@R�@R�@R�@R�@R�@R�@R�@R�@R�@R�@R�@az@R�SSSS@S@S@S@S@S@S@S@S	@S
@S@S@S
@|@S@S@S@S@S@S@S@S@S@S@S@S@S@az@SS+S@S@S @S!@S"@S#@S$@S%@S&@S'@S(@S)@S*@az@S,@S-@S.@S/@S0@S1@S2@S3@S4@S5@S6@S7@S8@|@S:SfS;SWS<@S=SJS>@S?@S@@SA@SB@SC@SD@SE@SF@SG@SH@SI@cW@SK@SL@SM@SN@SO@SP@@SQSR@SS@ST@SU@SV@az@SX@SY@SZ@S[@S\@S]@S^@S_@S`@Sa@Sb@Sc@Sd@Se@az@SgS�ShSvSi@Sj@Sk@Sl@Sm@Sn@So@Sp@Sq@Sr@Ss@St@Su@az@Sw@Sx@Sy@Sz@S{@S|@S}@S~@S@S�@S�@S�@S�@az@S�S�S�@S�@S�@S�@S�@S�@S�@S�@S�@S�@S�@S�@S�@az@S�@S�@S�@S�@S�@S�@S�@S�@S�@S�@S�@S�@S�@az@S�r�S�n�S�a�S�[S�WmS�UxS�T�S�TS�S�S�S�S�S�S�@S�@S�@S�@S�@S�@S�@S�@az@@S�S�@S�@S�@az@S�S�S�S�S�@S�@S�@S�@S�@az@S�@S�@S�@S�@S�@S�@S�@S�@az@S�S�S�@S�@S�@az@S�@S�@S�@S�@S�@S�@S�@az@S�S�S�S�S�S�S�@S�@S�@S�@S�@S�@S�@S�@S�@az@S�@S�@S�@S�@S�@S�@S�@az@S�@S�@S�@S�@S�@S�@S�@S�@az@S�TS�S�S�@S�@S�@S�@S�@az@S�@T@T@T@T@T@T@az@TTT@T	@T
�T�T�T
�T�az�T@T@T@T@T@T@T@az@TT^TT9TT+TT%T@T@T@T@T @T!@T"@T#@T$@az@T&@T'@T(@T)@T*@az@T,T3T-@T.@T/@T0@T1@T2@az@T4@T5@T6@T7@T8@az@T:TGT;TAT<@T=@T>@T?@T@@az@TB@TC@TD@TE@TF@az@THTSTI@TJ@TK@TL@TM@TN@TO@TP@TQ@TR@az@TT@TU@TV@TW@TX@TY@TZ@T[@T\@T]@az@T_TsT`TmTaTeTb@Tc@Td@az@Tf@Tg@Th@Ti@Tj@Tk@Tl@az@@TnTo@Tp@Tq@Tr@az@TtT�TuTyTv@Tw@Tx�|�Tz@T{@T|@T}@T~@T@T�@T�@az@T�T�T�@T�@T�@T�@T�@T�@T�@az@T�@T�@T��T��T��T��T��T��T��T��|�T�UT�T�T�T�T�T�T�@T�@T�@T�@T�@T�@T�@T�@az@T�T�T�@T�@T�@T�@T�@T�@T�@az@T�@T�@T�@T�@T�@T�@T�@az@T�T�T�T�T�@T�@T�@T�@T�@az@T�@T�@T�@T�@T�@T�@az@T�@T�@T�@T�@T�@T�@T�@T�@T�@T�@az@T�T�T�T�T�T�T�@T�@T�@T�@T�@T�@T�@az@T�@T�@T�@az@@T�T�@T�@T�@T�@T�@T�@T�@T�@T�@T�@�@T�T�T�T�T�@T�@T�@T�@T�@T�@T�@T�@az@T�@T�@T�@T�@az@T�UT�@T�@T�@T�@T�@U@U@az@U@U@U@U@U@U@U	@U
@U@az@U
UQUU.UU!UUU@U@U@U@U@U@U@U@az@U@U@U@U@U@U@U @az@U"U*U#@U$@U%@U&@U'@U(@U)@|@U+@U,@U-@az@U/U@U0U8U1@U2@U3�U4�U5�U6�U7�az�U9@U:@U;@U<@U=@U>@U?@az@UAUIUB@UC@UD@UE@UF@UG@UH@az@UJ@UK@UL@UM@UN@UO@UP@az@URUmUSU\UTUXUU@UV@UW@az@UY@UZ@U[@az@U]UeU^@U_@U`�Ua�Ub�Uc�Ud�az�Uf@Ug@Uh@Ui@Uj@Uk@Ul@az@UnUsUo@Up@Uq@Ur@az@Ut@Uu@Uv@Uw@az@UyVOUzU�U{U�U|U�U}U�U~U�U@U�@U�@az@U�@U�@U�@U�@U�@U�@U�@az@U�U�U�@U�@U�@az@U�@U�@U�@U�@U�@U�@U�@az@U�U�U�U�U�@U�@U�@U�@U�@U�@U�@U�@U�U�U�gCgCU�gCazazU�U�azt�azU�@U�@U�@U�@U�@U�@U�@az@U�@U�@U�@U�@U�@U�@U�@U�@az@U�U�U�U�U�U�U�@U�@U�@az@U�@U�@U�@U�@U�@U�@U�@az@U�@U�@U�@U�@U�@U�@U�@U�@az@U�U�U�U�U�@U�@U�@U�@U�@U�@U�@az@U�@U�@U�@az@U�U�U�@U�@U��az�U�@U�@U�@U�@U�@U�@U�@az@U�V U�VU�U�U�@U�@U�@U�@U�@U�@U�@U�@|@U�U�U�@U�@U�@az@U�@U�@V@V@V@V@V@az@VVVVV@V	@V
@V@V@V
@V@az@V@V@V@V@V@V@V@az@@VV@V@V@V@V@V@V@az@V!V<V"V/V#V+V$@V%@V&@V'@V(@V)@V*@az@V,@V-@V.@az@V0V8V1@V2@V3@V4@V5@V6@V7@az@V9@V:@V;�az�V=VFV>@V?@V@@VA@VB@VC@VD@VE@az@VGVKVH@VI@VJ@az@VL@VM@VN@az@VPV�VQV�VRVeVSV`VTV\VU@VV@VW@VX@VY@VZ@V[@az@V]@V^@V_@az@@VaVb@Vc@Vd@az@VfVsVgVoVh@Vi@Vj@Vk@Vl@Vm@Vn@az@Vp@Vq@Vr@az@VtV|Vu@Vv@Vw@Vx@Vy@Vz@V{@az@V}@V~@V@V�@V�azV�azV�azV�azazV�V�azazV�azv�V�V�V�V�V�V�V�@V�@V�@V�@V�@V�@V�@az@V�@V�@V�@V�@V�@V�@V�@az@V�V�V�@V�@V��V��V��V��V��az�V�@V�@V�@V�@V�@V�@V�@az@V�V�V�V�V�@V�@V�@V�@V�@V�@V�@V�@V�@@V�V�@@�V�@V�@V�@az@V�V�V�@V�@V�@az@V�@V�@V�@V�@V�@V�@V�@|@V�WBV�V�V�V�V�@V�@V�@V�@az@V�V�V�@V�@V�@V�@V�@V�@V�@az@V�@V�@V�@V�@V�@V�@V�@az@V�W1V�W-V�@V�@V�@V�@V�@V�@V�@V�@V�azV�azV�b�V�azV�WV�WV�azV�azV�azV�azV�azV�azV�azV�azV�azV�azazV�WazazWv�azWWWazazWWWWazWazW	azW
azWazWazW
azv�azWazv�azazWazWWWWazv�azWazv�azWazWW%azWWazWazWazWazWazW azW!azazW"W#azazW$v�azW&azazW'W(azW)azW*W,W+u�azu�u�azW.@W/@W0@az@W2W:W3@W4@W5@W6@W7@W8@W9@az@W;@W<@W=@W>@W?@W@@WA@az@WCWRWDWMWEWIWF@WG@WH@az@WJ@WK@WL@az@WN@WO@WP@WQ@az@WSWdWTW\WU@WV@WW@WX@WY@WZ@W[@az@W]@W^@W_@W`@Wa@Wb@Wc@az@WeWiWf@Wg@Wh@az@Wj@Wk@Wl@az@WnY%WoXNWpW�WqW�WrW�WsW|WtWxWu@Wv@Ww@az@Wy@Wz@W{@az@W}W�W~@W@W�@W�@W�@W�@W�@az@W�@W�@W�@W�@W�@W�@W�@az@W�W�W�W�W�@W�@W�@az@W�@W�@W�@W�@W�@W�@W�@az@azW�W�@W�@W�@W�@W�@W�@W�@az@W�W�W�W�@W�W�@W�@W�@W�@W�@W�@W�@az@W�W�W�@W�@W�@W�@W�@W�@W�@az@W�@W�@W�@W�@W�@W�@W�@az@W�W�W�W�W�@W�@W�@az@W�@W�@W�@W�@W�@W�@W�@az@W�W�W�@W�@W�@W�@W�@W�@W�@az@W�@W�@W�@W�@W�@W�@W�@az@W�XW�W�W�W�W�W�W�@W�@W�@az@W�@W�@W�@az@W�W�W�@W�@W�@W�@W�@W�@W�@az@W�@W�@W�@W�@W�@W�@W�@az@W�X
W�XW�@X@X@az@X@X@X@X@X@X@X	@az@XXX@X
@X@X@X@X@X@az@X@X@X@az@XX/XX@XX@X@X@az@XX'X @X!@X"@X#@X$@X%@X&@az@X(@X)@X*@X+@X,@X-@X.@az@X0XAX1X9X2@X3@X4@X5@X6@X7@X8@az@X:@X;@X<@X=@X>@X?@X@@az@XBXFXC@XD@XE@az@XG@XH@XI@XJ@XK@XL@XM@az@XOX�XPX�XQXpXRXcXSX[XT@XU@XV@XW@XX@XY@XZ@az@X\@X]@X^@X_@X`@Xa@Xb@az@XdXlXe@Xf@Xg@Xh@Xi@Xj@Xk@az@Xm@Xn@Xo@az@XqXzXrXvXs@Xt@Xu@az@Xw@Xx@Xy@az@X{@X|@X}@X~@X@X�@X�@X�@az@X�X�X�X�X�X�X�@X�@X��|�X�@X�@X�@az@X�X�X�@X�@X�@az@X�@X�@X�@az@X�X�X�X�X�@X�@X�@X�@X�@X�@X�@az@X�@X�@X�@X�@X�@X�@X�@az@X�X�X�@X�@X�@az@X�@X�@X�@az@X�X�X�X�X�X�X�X�X�@X�@X�@X�@X�@X�@X�@az@X�@X�@X�@az@X�X�X�@X�@X�@X�@X�@X�@X�@az@X�@X�@X�@|@X�X�X�X�X�@X�@X�@az@X�@X�@X�@X�@X�@X�@X�@az@X�X�X�@X�@X�@az@X�@X�@X�@X�@X�@X�@X�@az@X�YX�X�X�X�X�@X�@X�@X�@X�@X�@X�@az@X�@X�@X�@X�@X�@X�@X�@az@X�YX�@Y@Y@Y@Y@Y@Y@az@Y@Y@Y	@Y
@Y@Y@Y
@|@YYYYY@Y@Y@az@Y@Y@Y@Y@Y@Y@Y@az@YY!Y@Y@Y @az@Y"@Y#@Y$@az@Y&Z%Y'Y�Y(YqY)YHY*Y7Y+Y3Y,@Y-@Y.@Y/@Y0@Y1@Y2@az@Y4@Y5@Y6@az@Y8Y@Y9@Y:@Y;@Y<@Y=@Y>@Y?@az@YA@YB@YC@YD@YE@YF@YG@az@YIYZYJYRYK@YL@YM@YN@YO@YP@YQ@az@YS@YT@YU@YV@YW@YX@YY@az@Y[YcY\@Y]@Y^@Y_@Y`@Ya@Yb@az@Yd@Ye@Yf@Yg@Yh@Yi@Yj@Yk@azYlYmYoYnazjazYpazazjYrY�YsYx@YtYu@Yv@Yw@az@YyY�Yz@Y{@Y|@Y}@Y~@Y@Y�@az@Y�@Y�@Y�@az@Y�Y�Y�Y�Y�@Y�@Y�@az@Y�@Y�@Y�@Y�@Y�@Y�@Y�@az@Y�Y�Y�@Y�@Y�@az@Y�@Y�@Y�@az@Y�Y�Y�Y�Y�Y�Y�Y�Y�@Y�@Y�@Y�@Y�@Y�@Y�@az@Y�@Y�@Y�@Y�@Y�@Y�@Y�@az@Y�Y�Y�@Y�@Y��az�Y�@Y�@Y�@Y�@Y�@Y�@Y�@az@Y�Y�Y�Y�Y�@Y�@Y�@az@Y�@Y�@Y�@az@Y�Y�Y�@Y�@Y�@Y�@Y�@Y�@Y�@az@Y�@Y�@Y�@az@Y�Y�Y�Y�Y�Y�Y�@Y�@Y�@Y�@Y�@Y�@Y�@az@Y�@Y�@Y�@Y�@Y�@Y�@Y�@az@Y�Y�Y�@Y�@Y�@az@Y�@Y�@Y�@az@Y�ZY�ZY�@Y�@Y�@Y�@azY�Y�azY�azazY�Y�ZY�ZazY�azY�Y�gQZgQZgQZgQZgQgQZZgQgQZZgQZgQZ	gQZ
gQZgQZgQZ
gQgCgQZazazv�ZazZZmu�jazZ@Z@Z@Z@Z@Z@Z@|@Z@Z@Z@Z @Z!@Z"@Z#@Z$@|@Z&Z�Z'Z^Z(ZGZ)Z:Z*Z2Z+@Z,@Z-@Z.@Z/@Z0@Z1@az@Z3@Z4@Z5@Z6@Z7@Z8@Z9@az@Z;ZCZ<@Z=@Z>@Z?@Z@@ZA@ZB@az@ZD@ZE@ZF@az@ZHZUZIZMZJ@ZK@ZL@az@ZN@ZO@ZP@ZQ@ZR@ZS@ZT@az@ZVZZZW@ZX@ZY@az@Z[@Z\@Z]@az@Z_ZzZ`ZmZaZeZb@Zc@Zd@az@Zf@Zg@Zh@Zi@Zj@Zk@Zl@az@ZnZvZo@Zp@Zq@Zr@Zs@Zt@Zu@az@Zw@Zx@Zy@az@Z{Z�Z|Z�Z}@Z~@Z@Z�@Z�@Z�@Z�@az@Z�@Z�@Z�@Z�@Z�@Z�@Z�@�@Z�Z�Z�@Z�@Z�@Z�@Z�@Z�@Z�@az@Z�@Z�@Z�@Z�@Z�@Z�@Z�@az@Z�Z�Z�Z�Z�Z�Z�Z�Z�@Z�@Z�@Z�@Z�@Z�@Z�@az@Z�@Z�@Z�@Z�@Z�@Z�@Z�@az@Z�Z�Z�@Z�@Z�@Z�@Z�@Z�@Z�@az@Z�@Z�@Z�@az@Z�Z�Z�Z�Z�@Z�@Z�@Z�@Z�@Z�@Z�@az@Z�@Z�@Z�@az@Z�Z�Z�@Z�@Z��az�Z�@Z�@Z�@Z�@Z�@Z�@Z�@az@Z�Z�Z�Z�Z�Z�Z�@Z�@Z�@az@Z�@Z�@Z�@Z�@Z�@Z�@Z�@az@Z�Z�Z�@Z�@Z�@Z�@Z�@Z�@Z�@az@Z�@Z�@Z�@az@Z�Z�@Z�Z�@Z�@Z�@Z�@Z�@Z�@Z�@az@[[[@[@[@az@[@[@[@[@[	@[
@[@az@[
^P[\�[[�[[�[[P[[-[[$[[[@[@[@[@[@[@[@az@[@[@[@[ @[!@["@[#@az@[%[)[&@['@[(@az@[*@[+@[,@az@[.[?[/[7[0@[1@[2@[3@[4@[5@[6@az@[8@[9@[:@[;@[<@[=@[>@az@[@[H[A@[B@[C@[D@[E@[F@[G@az@[I@[J@[K@[L@[M@[N@[O@az@[Q[h[R[_[S[W[T@[U@[V@az@[X@[Y@[Z@[[@[\@[]@[^@az@[`@[a@[b@[c@[d@[e@[f@[g@az@[i[r@[j[k@[l@[m@[n@[o@[p@[q@az@[s[{[t@[u@[v@[w@[x@[y@[z@az@[|@[}@[~@[@[�@[�@[�@az@[�[�[�[�[�[�[�[�[�@[�@[�@az@[�@[�@[�@az@[�[�[�@[�@[�@[�@[�@[�@[�@az@[�@[�@[�@[�@[�@[�@[�@az@[�[�@[�[�@[�@[�@[�@[�@[�@[�@az@[�[�[�@[�@[�@[�@[�@[�@[�@az@[�@[�@[�@[�@[�@[�@[�@az@[�[�[�[�[�[�[�@[�@[�@[�@[�@[�@[�@az@[�@[�@[�@[�@[�@[�@[�@az@[�[�[�@[�@[�@[�@[�@[�@[�@az@[�@[�@[�@[�@[�@[�@[�@az@[�[�[�[�[�@[�@[�@[�@[�@[�@[�@az@[�@[�@[�@az@[�[�[�@[�@[�@[�@[�@[�@[�@|@[�@[�@[�@az@[�\k[�\0[�\[�\@[�\@\@\@\@az@\\
\@\@\@\	@\
@\@\@az@\@\@\@\@\@\@\@az@\\'\\\@\@\@\@\@\@\@az@\ @\!@\"@\#@\$@\%@\&@az@\(@\)@\*@\+@\,@\-@\.@\/@az@\1\L\2\?\3\7\4@\5@\6@az@\8@\9@\:@\;@\<@\=@\>@|@\@\H\A@\B@\C@\D@\E@\F@\G@az@\I@\J@\K@az@\M\Z\N\R\O@\P@\Q@az@\S@\T@\U@\V@\W@\X@\Y@az@\[\c\\@\]@\^@\_@\`@\a@\b@az@\d@\e@\f@\g@\h@\i@\j@az@\l\�\m\�\n\\o\w\p@\q@\r@\s@\t@\u@\v@az@\x@\y@\z@\{@\|@\}@\~@az@\�\�\�@\�@\�@\�@\�@\�@\�@|@\�@\�@\�@\�@\�@\�@\�@az@\�\�\�@\�@\�@\�@\�@\�@\�@\�@az@@\�\�@\�@\�@\�@\�@\�@\�@az@\�\�\�\�\�\�\�@\�@\�@az@\�@\�@\�@\�@\�@\�@\�@az@\�@\�@\�@\�@\�@\�@\�@\�@az@\�\�\�\�\�@\�@\�@az@\�@\�@\�@\�@\�@\�@\�@az@\�\�\�@\�@\�@\�@\�@\�@\�@az@\�@\�@\�@\�@\�@\�@\�@az@\�]�\�]>\�]\�\�\�\�\�\�\�@\�@\�@\�@\�@\�@\�@az@\�@\�@\�@\�@\�@\�@\�@az@\�\�\�@\�@\�@az@\�@\�@\��\��\��\��\��az�\�@@\�]@]@]@az@]]]]]]
]@]@]	@az@]@]@]
@]@]@]@]@az@]]]@]@]@]@]@]@]@az@]@]@]@az@] ]1]!])]"@]#@]$@]%@]&@]'@](@az@]*@]+@],@]-@].@]/@]0@az@]2]6]3@]4@]5@az@]7@]8@]9@]:@];@]<@]=@az@]?]z]@]_]A]N]B]F]C@]D@]E@az@]G@]H@]I@]J@]K@]L@]M@az@]O]W]P@]Q@]R@]S@]T@]U@]V@az@]X@]Y@]Z@][@]\@]]@]^@az@]`]m]a]e]b@]c@]d@az@]f@]g@]h@]i@]j@]k@]l@az@]n]v]o@]p@]q@]r@]s@]t@]u@az@]w@]x@]y@az@]{]�]|]�]}]�]~@]@]�@]�@]�@]�@]�@az@]�@]�@]�@]�@]�@]�@]�@az@@]�]�@]�@]�@]�@]�@]�@]�@az@]�]�]�]�]�@]�@]�@az@]�@]�@]�@az@]�]�]�@]�@]�@]�@]�@]�@]�@az@]�@]�@]�@]�@]�@]�@]�@az@]�^]�]�]�]�]�]�@]�]�@]�@]�@az@]�]�]�@]�@]�@]�@]�@]�@]�@az@]�@]�@]�@]�@]�@]�@]�@az@]�]�]�]�]�@]�@]�@az@]�@]�@]�@az@]�]�]�@]�@]�@]�@]�@]�@]�@az@]�@]�@]�@]�@]�@]�@]�@az@]�]�]�]�]�]�]�@]�@]�@az@]�@]�@]�@|@]�]�]�@]�@]�@az@]�@]�@]�@az@]�^]�^]�@]�@]�@^@^@^@^@az@^@^@^@|@^	^
^
@^@^@|@^@^@^@az@^^9^^&^^^^^@^@^@az@^@^@^@az@^^"^@^ @^!�az�^#@^$@^%@az@^'^0^(az^)@^*@^+@^,@^-@^.@^/@az@^1^5^2@^3@^4@az@^6@^7@^8@az@^:^E^;^@^<@^=@^>@^?@az@^Aaz^B@^C@^D@az@^F^K^G@^H@^I@^J@az@^L@^M@^N@^O@az@^Q_�^R_(^S^�^T^�^U^d^V^[@^W^X@^Y@^Z@az@^\^`^]@^^@^_@az@^a@^b@^c@az@^e^v^f^n^g@^h@^i@^j@^k@^l@^m@az@^o@^p@^q@^r@^s@^t@^u@az@^w^{^x@^y@^z@az@^|@^}@^~@^@^�@^�@^�@az@^�^�^�^�^�^�^�@^�@^�@az@^�@^�@^�@^�@^�@^�@^�@az@^�^�^�@^�@^�@^�@^�@^�@^�@az@^�@^�@^�@az@^�^�^�^�^�@^�@^�@az@^�@^�@^�@^�@^�@^�@^�@az@^�^�^�@^�@^�@^�@^�@^�@^�@az@^�@^�@^�@az@^�^�^�^�^�^�^�^�^�@^�@^�@^�@^�az^�az^�azaz^�^�az^�azv�az^�@^�@^�@az@^�^�^�@^�@^�@^�@^�@^�@^�@az@^�@^�@^�@az@^�^�az^�^�@^�@^�@az@^�^�^�@^�@^�@^�@^�@^�@^�@az@^�@^�@^�@az@^�_
^�^�^�^�^�@^�@^�@^�@^�@^�@^�@az@^�@^�@^�@az@^�_^�@^�@_@_@_@_@_@az@_@_@_@_	@_
@_@_@az@_____@_@_@_@_@_@_@az@_@_@_@az@__ _@_@_@az@_!@_"@_#@_$@_%@_&@_'@az@_)_�_*_Q_+_:_,_5@_-_.@_/@_0@_1@_2@_3@_4@|@@_6_7@_8@_9@az@_;_@_<@_=@_>@_?@az@_A_I_B@_C@_D@_E@_F@_G@_H@az@_J@_K@_L@_M@_N@_O@_P@az@_R_q_S_d_T_\_U@_V@_W@_X@_Y@_Z@_[@az@_]@_^@__@_`@_a@_b@_c@az@_e_i_f@_g@_h@az@_j@_k@_l@_m@_n@_o@_p@az@_r_w_s@_t@_u@_v@az@_xaz_y@_z@_{@_|@_}@_~@_@az@_�_�_�_�_�_�_�_�_�@_�@_�@az@_�@_�@_�@az@_�_�_�@_�@_�@az@_�@_�@_�@az@_�_�_�_�_�@_�@_�@az@_�@_�@_�@_�@_�@_�@_�@az@_�@_�@_�@_�@_�@_�@_�@_�@az@_�_�_�_�_�_�_�@_�@_�@az@_�@_�@_�@_�@_�@_�@_�@az@_�_�_�@_�@_�@_�@_�@_�@_�@az@_�@_�@_�@_�@_�@_�@_�@az@_�_�_�_�_�@_�@_�@_�@_�@_�@_�@az@_�@_�@_�@az@_�_�_�@_�@_�@az@_�@_�@_�@az@_�`�_�`H_�`_�_�_�_�_�_�_�@_�@_�@_�@_�@_�@_�@az@_�@_�@_�@��@_�@_�@_�@_�@|@_�`_�`_�@_�@_�@az@`@`@`@`@`@`@`@az@@`	`
@`@`@`
@`@`@`@az@``%``az@```@`@`@`@`@`@`@az@`@`@` @`!@`"@`#@`$@az@`&`7`'`/`(@`)@`*@`+@`,@`-@`.@|@`0@`1@`2@`3@`4@`5@`6@az@`8`@`9@`:@`;@`<@`=@`>@`?@az@`A@`B@`C@`D@`E@`F@`G@az@`I`x`J`a`K`T@`L`M@`N@`O@`P@`Q@`R@`S@az@`U`Y`V@`W@`X@az@`Z@`[@`\@`]@`^@`_@``@az@`b`k@`c`d@`e@`f@`g@`h@`i@`j@az@`l`p`m@`n@`o@az@`q@`r@`s@`t@`u@`v@`w@az@`y`�`z`�`{``|@`}@`~@az@`�@`�@`�@`�@`�@`�@`�@az@`�`�`�@`�@`�@`�@`�@`�@`�@az@`�@`�@`�@az@`�`�`�`�`�@`�@`�@`�@`�@`�@`�@az@`�@`�@`�@az@`�`�`�@`�@`�@az@`�@`�@`�@|@`�a`�`�`�`�`�`�`�`�`�@`�@`�@az@`�@`�@`�@`�@`�@`�@`�@az@`�`�`�@`�@`�@az@`�@`�@`�@az@`�`�`�`�`�@`�@`�@az@`�@`�@`�@az@`�`�`�@`�@`�@`�@`�@`�@`�@az@`�@`�@`�@az@`�`�`�`�`�`�`�@`�@`�@az@`�@`�@`�@`�@`�@`�@`�@az@`�`�`�@`�@`�@`�@`�@`�@`�@az@`�@`�@`�@az@`�a@`�`�@`�@`�@`�@`�@a@a@|@aaa@a@a@a@a@a	@a
@az@a@a
@a@a@a@a@a@az@aaKaa4aa'aaa@a@a@a@a@a@a@az@a @a!@a"@a#@a$@a%@a&@az@a(a0a)@a*@a+@a,@a-@a.@a/@az@a1@a2@a3@az@a5a>a6a:a7@a8@a9@az@a;@a<@a=@az@a?aCa@@aA@aB@az@aD@aE@aF@aG@aH@aI@aJ@az@aLakaMaZaNaRaO@aP@aQ@|@aS@aT@aU@aV@aW@aX@aY@az@a[aca\@a]@a^@a_@a`@aa@ab@az@ad@ae@af@ag@ah@ai@aj@az@ala}amaqan@ao@ap@az@ar@as@at@au@av@aw@ax@ay@azaza{azaza|az�Ba~a�a@a�@a�@az@a�@a�@a�@az@a�ha�d�a�c!a�bYa�a�a�a�a�a�a�a�a�a�a�@a�@a�@az@a�@a�@a�@az@a�a�a�@a�@a�@az@a�@a�@a�@az@a�a�a�a�a�@a�@a�@az@a�@a�@a�@az@a�a�a�@a�@a�@az@a�@a�@a�@az@a�a�a�a�a�a�a�@a�@a�@a�@a�@a�@a�@|@a�@a�@a�@a�@a�@a�@a�@|@a�a�a�@a�@a�@az@a�@a�@a�@az@a�a�a�a�a�@a�@a��az�a�@a�@a�@a�@a�@a�@a�@az@a�a�a�@a�@a�@az@a�@a�@a�@az@a�ba�ba�a�a�a�a�@a�@a�@a�@a�@a�@a�@az@a�@a�@a�@a�@a�@a�@a�@az@a�ba�@a�@a�@a�@b@b@b@az@b@b@b@az@bbb	b
b
@b@b@az@b@b@b@az@b@b@b@b@b@b@b@b@az@bb:bb-bb%b@b@b @b!@b"@b#@b$@az@b&@b'@b(@b)@b*@b+@b,@az@b.b6b/@b0@b1@b2@b3@b4@b5@az@b7@b8@b9@az@b;bHb<b@b=@b>@b?@az@bA@bB@bC@bD@bE@bF@bG@az@bIbQbJ@bK@bL@bM@bN@bO@bP@az@bR@bS@bT@bU@bV@bW@bX@az@bZb�b[byb\bsb]bjb^bfb_@b`@ba@bb@bc@bd@be@az@bg@bh@bi@az@bkbobl@bm@bn�az�bp@bq@br@az@@bt@bubv@bw@bx@az@bzb�b{b�b|b�b}@b~@b@b�@b�@b�@b�@az@b�@b�@b�@b�@b�@b�@b�@az@L�b�b�@b�@b�@b�@b�@b�@b�@az@b�b�b�b�b�@b�@b�@az@b�@b�@b�@az@b�b�b�@b�@b�@b�@b�@b�@b�@az@b�@b�@b�@b�@b�@b�@b�@az@b�b�b�b�b�b�b�b�b�@b�@b�@b�@b�@b�@b�@az@b�@b�@b�@az@b�b�b�@b�@b�@b�@azb�b�azb�azb�azazb�b�b�azb�azu�b�azu�azb�@b�@b�@az@b�b�b�b�b�@b�@b�@az@b�@b�@b��az�b�b�b�@b�@b�@b�@b�@b�@b�@|@b�@b�@b�@b�@b�@b�@b�@|@b�c
b�cb�b�b�@b�@b�@b�@b�@b�@b�@az@b�@b�@b��b��b��b��c�az�c@c@c@c@c@c@c@c	@az@ccccc
@c@c@az@c@c@c@az@ccc@c@c@az@c@c@c@c@c@c@c @az@c"dc#c�c$c_c%cDc&c7c'c/c(@c)@c*@c+@c,@c-@c.@az@c0@c1@c2@c3@c4@c5@c6@az@c8c@c9@c:@c;@c<@c=@c>@c?@az@cA@cB@cC@az@cEcRcFcNcG@cH@cI@cJ@cK@cL@cM@az@cO@cP@cQ�|�cScWcT@cU@cV@az@cX@cY@cZ@c[@c\@c]@c^@az@c`ccacrcbcjcc@cd@ce@cf@cg@ch@ci@az@ck@cl@cm@cn@co@cp@cq@az@csc{ct@cu@cv@cw@cx@cy@cz@az@c|@c}@c~@|@c�c�@c�c�@c�@c�@az@c�c�c�@c�@c�@az@c�@c�@c�@c�@c�@c�@c�@az@c�c�c�c�c�c�c�c�c�@c�@c�@az@c�@c�@c�@c�@c�@c�@c�@az@c�c�c�@c�@c�@c�@c�@c�@c�@az@c�@c�@c�@az@c�c�c�c�c�@c�@c�@c�@c�@c�@c�@az@c�@c�@c�@c�@c�@c�@c�@|@c�c�c�@c�@c�@c�@c�@c�@c�@az@c�@c�@c�@az@c�c�c�c�c�c�c�@c�@c�@c�@c�@c�@c�@az@c�@c�@c�@az@c�c�c�@c�@c�@c�@c�@c�@c�@az@c�@c�@c�@c�@c�@c�@c�@az@c�c�@c�c�@c�@c�@az@c�c�c�@c�@c�@az@c�@c�@c�@c�@c�@c�@d@|@ddqdd6ddddddd@d@d	@d
@d@d@d
@az@d@d@d@d@d@d@d@az@ddd@d@d@az@d@d@d@az@d d)d!d%d"@d#@d$@az@d&@d'@d(@az@d*d.d+@d,@d-@az@d/@d0@d1@d2@d3@d4@d5@|@d7dRd8dEd9dAd:@d;@d<@d=@d>@d?@d@@az@dB@dC@dD@az@dFdNdG@dH@dI@dJ@dK@dL@dM@az@dO@dP@dQ@az@dSdddTd\dU@dV@dW@dX@dY@dZ@d[@|@d]@d^@d_@d`@da@db@dc@az@dedidf@dg@dh@az@dj@dk@dl@dm@dn@do@dp@az@drd�dsd�dtd�dud}dv@dw@dx@dy@dz@d{@d|@az@d~@d@d�@az@d�@d�@d�@d�@d�@d�@d�@d�@az@d�d�d�@d�@d�@d�@az@d�d�d�@d�@d�@az@d�@d�@d�@d�@d�@d�@d�@az@d�d�d�d�d�d�d�@d�@d�@az@d�@d�@d�@az@d�d�d�@d�@d�@az@d�@d�@d�@d�@d�@d�@d�@az@d�d�d�d�d�@d�@d�@az@d�@d�@d�@az@d�d�d�@d�@d�@az@d�@d�@d�@d�@d�@d�@d�@|@d�fTd�e�d�e*d�ed�d�d�d�@d�d�@d�@d�@d�@d�@d�@d�@d�@azd�d�azd�azgQazd�d�d�@d�@d�@az@d�@d�@d�@az@d�d�d�d�d�@d�@d�@d�@d�@d�@d�@az@d�@d�@d�@az@d�d�d�@d�@d�@d�@d�@d�@d�@az@e@e@e@e@e@e@e@az@eee	ee
@e@e@e
@e@e@e@e@az@@ee@e@e@az@ee!eee@e@e@az@e@e@e @az@e"e&e#@e$@e%@az@e'@e(@e)@az@e+ebe,eGe-e>e.e6e/@e0@e1@e2@e3@e4@e5@az@e7@e8@e9@e:@e;@e<@e=@az@e?eCe@@eA@eB@az@eD@eE@eF@az@eHeUeIeMeJ@eK@eL@az@eN@eO@eP@eQ@eR@eS@eT@az@eVeZeW@eX@eY@az@e[@e\@e]@e^@e_@e`@ea@|@ece�edeueeemef@eg@eh@ei@ej@ek@el@az@en@eo@ep@eq@er@es@et@az@evezew@ex@ey@az@e{@e|@e}@e~@e@e�@e�@az@e�e�@e�e�@e�@e�@az@e�e�e�@e�@e�@e�@e�@e�@e�@az@e�@e�@e�@e�@e�@e�@e�@az@e�e�e�e�e�e�e�e�e�e�e�@e�@e�@|@e�@e�@e�@az@e�@e�@e�@e�@e�@e�@e�@e�@az@e�e�@e�e�@e�@e�@az@e�e�e�@e�@e�@e�@e�@e�@e�@az@e�@e�@e�@az@e�e�e�e�e�@e�@e�@e�@e�@e�@e�@e�@az@e�e�e�@e�@e�@e�@e�@e�@e�@|@e�@e�@e�@e�@e�@e�@e�@az@e�e�e�e�e�@e�@e�@az@e�@e�@e�@az@e�e�e�@e�@e�@e�@e�@e�@e�@az@e�@e�@e�@az@e�f!e�fe�fe�fe�@e�@e�@e�@e�@e�@f@az@f@f@f@az@ff
f@f@f	@az@f@f@f
@az@fffff@f@f@az@f@f@f@|@f@f@f@f@f@f@f@f @|@f"f=f#f0f$f(f%@f&@f'@az@f)@f*@f+@f,@f-@f.@f/@az@f1f5f2@f3@f4@az@f6@f7@f8@f9@f:@f;@f<@az@f>fKf?fCf@@fA@fB@az@fD@fE@fF@fG@fH@fI@fJ@az@fLfPfM@fN@fO@az@fQ@fR@fS@az@fUg8fVf�fWf�fXfwfYfjfZfbf[@f\@f]@f^@f_@f`@fa@az@fc@fd@fe@ff@fg@fh@fi@az@fkfofl@fm@fn@az@fp@fq@fr@fs@ft@fu@fv@az@fxf�fyf�fz@f{@f|@f}@f~@f@f�@az@f�@f�@f�@az@f�f�f�@f�@f�@f�@f�@f�@f�@az@f�@f�@f�@f�@f�@f�@f�@az@f�f�f�f�f�f�f�@f�@f�@az@f�@f�@f�@az@f�f�f�@f�@f�@f�@f�@f�@f�@az@f�@f�@f�@az@f�f�f�f�f�@f�@f�@f�@f�@f�@f�@az@f�@f�@f�@az@@f�f�@f�@f�@f�@f�@f�@f�@az@f�gf�f�f�f�f�f�f�@f�@f�@az@f�@f�@f�@f�@f�@f�@f�@|@f�f�f�@f�@f�@az@f�@f�@f�@f�@f�@f�@f�@az@f�f�f�f�f�@f�@f�@f�@f�@f�@f�@az@f�@f�@f�@f�@f�@f�@f�@az@f�f�f�@f�@f�@f�@f�@f�@f�@az@f�@f�@g@az@ggggggg@g@g@az@g	@g
@g@az@g
gg@g@g@g@g@g@g@az@g@g@g@g@g@g@g@az@gg/gg'g @g!@g"@g#@g$@g%@g&@az@g(@g)@g*@g+@g,@g-@g.@az@g0g4g1@g2@g3@az@g5@g6@g7@az@g9g�g:gqg;gVg<gMg=gEg>@g?@g@@gA@gB@gC@gD@az@gF@gG@gH@gI@gJ@gK@gL@az@@gNgO@gP@gQ@gR@gS@gT@gU@az@gWgdgXg`gY@gZ@g[@g\@g]@g^@g_@az@ga@gb@gc@az@gegigf@gg@gh@az@gj@gk@gl@gm@gn@go@gp@az@grg�gsg�gtgxgu@gv@gw@az@gy@gz@g{@g|@g}@g~@g@az@g�g�g�@g�@g�@az@g�@g�@g�@g�@g�@g�@g�@az@g�g�g�g�g�@g�@g�@g�@g�@g�@g�@az@g�@g�@g�@g�@g�@g�@g�@az@g�g�g�@g�@g�@az@g�@g�@g�@az@g�g�g�g�g�g�g�g�g�@g�@g�@g�@g�@g�@g�@az@g�@g�@g�@g�@g�@g�@g�@az@g�g�g�@g�@g�@az@g�@g�@g�@az@g�g�@g�g�@g�@g�@g�@g�@g�@g�@az@g�g�g�@g�@g�@g�@g�@g�@g�@az@g�@g�@g�@az@g�g�g�g�g�g�g�@g�@g�@g�@g�@g�@g�@az@g�@g�@g�@az@g�g�g�@g�@g�@g�@g�@g�@g�@az@g�@g�@g�@az@g�h
g�hg�@g�@g�@g�@g�@h@h@az@h@h@h@h@h@h@h	@az@hhh@h
@h@az@h@h@h@h@h@h@h@az@hkxhi�hh�hh}hhShh8hh/hh'h @h!@h"@h#@h$@h%@h&@az@h(@h)@h*@h+@h,@h-@h.@|@h0h4h1@h2@h3@az@h5@h6@h7@az@h9hFh:h>h;@h<@h=@az@h?@h@@hA@hB@hC@hD@hE@az@hGhOhH@hI@hJ@hK@hL@hM@hN@az@hP@hQ@hR@az@hThkhUhbhVh^hW@hX@hY@hZ@h[@h\@h]@az@h_@h`@ha@az@hc@hd@he@hf@hg@hh@hi@hj@az@@hlhmhuhn@ho@hp@hq@hr@hs@ht@az@hv@hw@hx@hy@hz@h{@h|@az@h~h�hh�h�h�h�h�h�@h�@h�@h�@h�@h�@h�@az@h�@h�@h�@az@h�h�h�@h�@h�@az@h�@h�@h�@h�@h�@h�@h�@az@h�h�h�h�h�@h�@h�@|@h�@h�@h��az�azh�h�@h�@h�@az@h�h�h�h�h�h�h�@h�@h�@h�@h�@h�@h�@az@h�@h�@h�@az@@h�h�@h�@h�@az@h�h�h�h�h�@h�@h�@h�@h�@h�@h�@az@h�@h�@h�@az@h�h�h�@h�@h�@h�@h�@h�@h�@az@h�@h�@h�@az@h�i4h�i	h�h�h�h�h�h�h�@h�@h�@h�@h�@h�@h�@az@h�@h�@h�@az@@h�h�@h�@h�@|@h�h�h�h�h�@h�@h�@az@h�@h�@h�@h�@h�@h�@h�@az@h�ih�@h�@i@i@i@i@i@az@i@i@i@az@i
i!iiiazi
@i@i@i@i@i@i@az@iii@i@i@i@i@i@i@az@i@i@i �az�i"i+i#i'i$@i%@i&@|@i(@i)@i*@az@i,azi-@i.@i/@i0@i1@i2@i3@az@i5ihi6iMi7iDi8i<i9@i:@i;@az@i=@i>@i?@i@@iA@iB@iC@az@iEiIiF@iG@iH@az@iJ@iK@iL@az@iNi[iOiSiP@iQ@iR@az@iT@iU@iV@iW@iX@iY@iZ@az@i\idi]@i^@i_@i`@ia@ib@ic@az@ie@if@ig@az@iii�iji{ikisil@im@in@io@ip@iq@ir@az@it@iu@iv@iw@ix@iy@iz@az@i|i�i}@i~@i@|@i�@i�@i�@|@i�@i�i�i�@i�@i�@i�@i�@i�@i�@az@i�@i�@i�@az@i�j�i�ji�i�i�i�i�i�i�i�i�@i�@i�@i�@i�@i�@i�@az@i�@i�@i�@i�@i�@i�@i�@az@@i�i�@i�@i�@i�@i�@i�@i�@|@i�i�i�i�i�@i�@i�@i�@i�@i�@i�@az@i�@i�@i�@az@i�i�i�@i�@i�@i�@i�@i�@i�@az@i�@i�@i�@i�@i�@i�@i�@|@i�i�i�i�i�i�i�@i�@i�@i�@i�@i�@i�@az@i�@i�@i�@az@i�i�i�@i�@i�@i�@i�@i�@i�@az@i�@i�@i�@az@i�i�i�i�i�@i�@i�@i�@i�@i�@i�@az@i�@i�@i�@i�@i�@i�@i�@|@i�@j@j@j@az@jj[jjjj@jj@j	@j
@j@j@j
@j@az@jjj@j@j@az@j@j@j@j@j@j@j@az@jj2jj*j@j @j!@j"@j#@j$@j%@j&@j'||j(�j)�|j+@j,@j-@j.@j/@j0@j1@az@j3jWj4@j5@j6@j7@j8azazj9j:jRj;jEj<jBj=j?azj>azwj@jAazgCv�b�jCazazjDazt�jFjKjGjIazjHkXwUjJazazgCjLjOjMjNv�b�u�azjPjQt�mazb�jSazjTazjUazjVazazgQjX@jY@jZ@az@j\jsj]jjj^jfj_@j`@ja@jb@jc@jd@je@az@jg@jh@ji@az@jkjojl@jm@jn@az@jp@jq@jr@az@jtj�juj}jv@jw@jx@jy@jz@j{@j|@az@j~@j@j�@j�@j�@j�@j�@az@j�j�j�@j�@j�@az@j�@j�@j�@j�@j�@j�@j�@|@j�j�j�j�j�j�j�j�j�j�j�@j�@j�@az@j�@j�@j�@j�@j�@j�@j�@az@j�j�j�@j�@j�@az@j�@j�@j�@az@j�j�j�j�j�@j�@j�@j�@j�@j�@j�@az@j�@j�@j�@j�@j�@j�@j�@az@j�j�j�@j�@j�@j�@j�@j�@j�@az@j�@j�@j�@az@j�j�j�j�j�j�j�@j�@j�@az@j�@j�@j�@az@j�j�j�@j�@j�@j�@j�@j�@j�@az@j�@j�@j�@az@j�j�j�j�j�@j�@j�@j�@j�@j�@j�@|@j�@j�@j�@az@j�j�j�@j�@j�@az@j�@j�@j�@j�@j�@j�@j�@az@j�k=kk&kkkkk@k@k�k�k�k�k	�k
�kkazkk
kjazw�v�kkazkw�azkkazv�azt�k@k@k@az@kk"k@k@k@k@k@k @k!@az@k#@k$@k%@az@k'k0k(k,k)@k*@k+@az@k-@k.@k/@az@k1k9k2@k3@k4@k5@k6@k7@k8@az@k:@k;@k<@az@k>k]k?kPk@kHkA@kB@kC@kD@kE@kF@kG@az@kI@kJ@kK@kL@kM@kN@kO@|@kQkYkR@kS@kT@kU@kV@kW@kX@|@kZ@k[@k\@az@k^kkk_kgk`@ka@kb@kc@kd@ke@kf@az@kh@ki@kj@az@klktkm@kn@ko@kp@kq@kr@ks@az@ku@kv@kw@az@kymkzlMk{k�k|k�k}k�k~k�kk�k�@k�@k�@k�@k�@k�@k�@az@k�@k�@k�@k�@k�@k�@k�@az@k�k�k�@k�@k�@k�@k�@k�@k�@az@k�@k�@k�@az@k�k�k�k�k�@k�@k�@az@k�@k�@k�@k�@k�@k�@k�@az@k�k�k�@k�@k�@k�@k�@k�@k�@k�@k�azk�azazk�t�v�k�@k�@k�@k�@k�@k�@k�@az@k�k�k�k�k�@k�@k�@k�@k�@k�@k�@k�@az@k�k�k�@k�@k�@az@k�@k�@k�@az@k�k�@k�k�@k�@k�@k�@k�@k�@k�@az@k�k�k�@k�@k�@az@k�@k�@k�@az@k�lk�k�k�k�@k�k�@k�@k�@az@k�k�k�@k�@k�@az@k�@k�@k�@k�@k�@k�@k�@az@k�l
k�lk�@k�@l@l@l@l@l@az@l@l@l@l	@l
@l@l@az@lll@l@l@l@l@l@l@az@l@l@l@>�@ll6ll)ll!l@l@l @az@l"@l#@l$@l%@l&@l'@l(@az@l*l2l+@l,@l-@l.@l/@l0@l1@az@l3@l4@l5@az@l7l<l8@l9@l:@l;@az@l=lEl>@l?@l@@lA@lB@lC@lD@az@lF@lG@lH@lI@lJ@lK@lL@az@lNl�lOl�lPlklQl^lRlZlS@lT@lU@lV@lW@lX@lY@az@l[@l\@l]@az@l_lcl`@la@lb@az@ld@le@lf@lg@lh@li@lj@az@lllylmlqln@lo@lp@|@lr@ls@lt@lu@lv@lw@lx@az@lzl�l{@l|@l}�l~�l�l��l��az�l�@l�@l��l��l��l��l��az�l�l�l�l�l�l�l�@l�@l�@az@l�@l�@l�@az@l�l�l�@l�@l�@az@l�@l�@l�@l�@l�@l�@l�@az@l�l�l�azl�@l�@l�@az@l�l�l�@l�@l�@az@l�@l�@l�@l�@l�@l�@l�@|@l�l�l�l�l�l�l�l�l�@l�@l�@l�@l�@l�@l�@az@l�@l�@l�@az@l�l�l�@l�@l�@az@l�@l�@l�@az@l�l�l�l�l�@l�@l�@az@l�@l�@l�@l�@l�@l�@l�@az@l�l�l�@l�@l�@az@l�@l�@l�@l�@l�@l�@l�@az@l�ml�l�l�l�l�@l�@l�@az@l�@l�@l�@az@l�l�l�@l�@l�@l�@l�@l�@l�@az@l�@l�@m@az@mmm@m@m@m@m@m@m	@m
@az@@mm
@m@m@az@mm�mm�mmJmm/mmmmm@m@m@az@m@m@m@az@mm'm @m!@m"@m#@m$@m%@m&@az@m(@m)@m*@m+@m,@m-@m.@az@m0m=m1m5m2@m3@m4@az@m6@m7@m8@m9@m:@m;@m<@az@m>mBm?@m@@mA@az@mC@mD@mE@mF@mG@mH@mI@az@mKmfmLmYmMmUmN@mO@mP@mQ@mR@mS@mT@az@mV@mW@mX@az@mZm^m[@m\@m]@az@m_@m`@ma@mb@mc@md@me@az@mgmxmhmpmi@mj@mk@ml@mm@mn@mo@az@mq@mr@ms@mt@mu@mv@mw@az@mym�mz@m{@m|@m}@m~@m@m�@|@m�@m�@m�@az@m�m�m�m�m�m�m�m�m�@m�@m�@az@m�@m�@m�@az@m�m�m�@m�@m�@az@m�@m�@m�@m�@m�@m�@m�@az@m�m�m�m�m�@m�@m�@m�@m�@m�@m�@az@m�@m�@m�@m�@m�@m�@m�@az@m�m�m�@m�@m�@m�@m�@m�@m�@az@m�@m�@m�@az@m�m�m�m�m�m�m�@m�@m�@m�@m�@m�@m�@az@m�@m�@m�@m�@m�@m�@m�@az@m�m�m�@m�@m�@m�@m�@m�@m�@az@m�@m�@m�@az@m�m�m�m�m�@m�@m�@m�@m�@m�@m�@az@m�@m�@m�@az@m�m�m�@m�@m�@m�@m�@m�@m�@az@m�@m�@m�@az@m�ntm�n1m�nm�n
m�nm�@m�@n@n@n@n@n@az@n@n@n@n	@n
@n@n@az@nnn@n@n@az@n@n@n@az@nn(nn n@n@n@n@n@n@n@az@n!@n"@n#@n$@n%@n&@n'@az@n)n-n*@n+@n,@az@n.@n/@n0@az@n2nQn3nDn4n<n5@n6@n7@n8@n9@n:@n;@az@n=@n>@n?�n@�nA�nB�nC�az�nEnInF@nG@nH@az@nJ@nK@nL@nM@nN@nO@nP@az@nRncnSn[nT@nU@nV@nW@nX@nY@nZ@az@n\@n]@n^@n_@n`@na@nb@|@ndnlne@nf@ng@nh@ni@nj@nk@az@nm@nn@no@np@nq@nr@ns@az@nun�nvn�nwn�nxn�ny@nz@n{@n|@n}@n~@n@az@n�@n�@n�@n�@n�@n�@n�@|@azn�n�@n�@n�@az@n�n�n�n�n�@n�@n�@n�@n�@n�@n�@az@n�@n�@n�@n�@n�@n�@n�@|@n�n�n�@n�@n�@n�@n�@n�@n�@az@n�@n�@n�@az@n�n�n�n�n�n�n�@n�@n�@az@n�@n�@n�@n�@n�@n�@n�@az@n�n�n�@n�@n�@az@n�@n�@n�@n�@n�@n�@n�@az@n�n�n�n�n�@n�@n�@n�@n�@n�@n�@az@n�@n�@n�@n�@n�@n�@n�@az@@n�n�@n�@n�@n�@n�@n�@n�@|@n�ptn�o�n�on�n�n�n�n�n�n�@n�@n�@n�@n�@az@n�@n�@n�@az@@n�n�@n�@n�@n�@az@n�n�azn�n�@n�@n�@az@ooo@o@o@az@o@o@o@az@o	o�o
o�ooo@o
@o@az@oazoo�oazoofoo6oazoazoazazooazazooazazoazoazoazoo azo!azo"azo#o'azo$azo%o&azw�azo(azo)azo*azo+azo,azazo-o.azo/azo0azo1o3o2w�azw�o4o5w�azazw�o7azazo8o9azo:azo;oIo<oAo=azo>azo?azazo@jazoBazoCoFazoDoEazazv�oGazoHazazjazoJazoKoLazoMazoNazoOazoPoWoQazoRazazoSazoToUazoVazazv�oXazoYazazoZo[azazo\o]azo^azo_azo`azoaazobazocazodazoeazv�azogorohazazoiazojazokazolomazonazooazopazazoqazjazosotazouoxazovazowv�azazoyazozo{o�o|azv�o}o~azoo�v�azv�azo�azo�azo�azw�azazo�o�o�o�azo�azo�azo�azo�azazo�o�azo�azo�azo�azo�azazo�o�azo�azo�azo�azo�azo�azo�azo�v�o�azo�azo�azazo�o�azazo�o�azv�azo�azo�azo�azo�azo�azo�azazo�o�azo�azo�azazo�v�azo�o�o�@o�@o�@az@o�@o�@o�@az@o�o�o�o�o�@o�@o�@az@o�@o�@o�@az@o�o�o�@o�@o�@az@o�@o�@o�@az@o�o�o�o�o�o�o�o�o�@o�@o�@az@o�@o�@o�@az@o�o�o�@o�@o�@az@o�@o�@o�@az@o�o�o�@o�@o�@o�@az@o�o�o�@o�@o�@az@o�@o�@o�@az@o�po�o�o�o�o�@o�@o�@az@o�@o�@o�@az@o�o�o�@o�@o�@az@p@p@p@az@ppopazp@p@p@p	@p
azpazpazp
azpp=pp*pppazpppppazv�azpazazjpppazazv�azpw�azpp!azpazpazp v�azp"p'p#p%p$azv���p&azjazp(azp)azazw�p+p7p,p3p-p0azp.azp/v�azp1azp2azv�azazp4azp5p6azazjp8azp9azp:azp;p<azw�jazp>p`p?pQp@pFpAazpBpDazpCw�azazpEazv�pGpLpHpJpIazazv�azpKjazpMpOazpNazv�pPazw�azpRp[pSpVpTazazpUazv�pWpYazpXazv�pZazazv�azp\p]p^jazazp_jazpaazpbphazpcpdpfazpev�azazpgazjpiazpjpmpkplazv�v�jpnazazv�azpppq@pr@ps@az@pup�pvp�pwp�pxpyaz@pzp~p{@p|@p}@az@p@p�@p�@az@p�p�p�p�p�@p�@p�@az@p�@p�@p�@az@p�p�p�@p�@p�@az@p�@p�@p�@az@p�p�p�p�azp�p�@p�@p�@az@@azp�p�p�p�p�@p�@p�@az@p�azp�azp�azazp�azp�azp�p�azv�azazp�p�@p�@p�@az@p�r|p�rqp�rhp�p�p�@p�@p�@az@p�@p�@p�@p�@p�azp�azp�azp�azp�qp�p�p�p�p�p�p�azazp�p�azw�azp�p�p�p�p�azazt�p�p�t�azazt�p�azp�az�Mazp�p�p�azp�p�azp�azt�p�az�v�p�azp�p�p�p�gCm�Kv�p�p�azgQu���p�qp�p�p�p�p�azazp�kXv�p�azp�azb�mp�p�p�p�v�azp�p�azwFv�b�p�azp�p�wazp�azp�azp�azp�azp�azp�azp�azp�azp�azazp�azp�azp�azqqazqazqaz�Kazqqqazqq	qazazq
qwUw�iv�q
azqqqazaz�qazu�azqqJazqazqazqazqqq)azqqazqazqazqazqazqazq azq!azq"azq#azq$azq%azq&azq'azq(azu�azq*q:q+azq,azq-azq.azq/azq0azq1azq2azq3azq4azq5azq6azq7azq8azq9azu�azq;azq<azq=azq>azq?azq@azqAazqBazqCazqDazqEazqFazqGazqHazqIazu�azqKq�qLq�qMq�qNqqqOq`azqPqQazqRazqSazqTazqUazqVazqWazqXazqYazqZazq[azq\azq]azq^azq_azu�azqaazqbazqcazqdazqeazqfazqgazqhazqiazqjazqkazqlazqmazqnazqoazqpazu�azazqrqsq�qtazquazqvazqwazqxazqyazqzazq{azq|azq}azq~azqazq�azq�azq�az�
azq�azq�azq�azq�azq�azq�azq�azq�azq�azq�azq�azq�azq�azq�azq�azjazq�q�q�azazq�q�azq�azq�azq�azq�azq�azq�azq�azq�azq�azq�azq�azq�azq�azq�az��azq�q�q�azq�azq�azq�azq�azq�azq�azq�azq�azq�azq�azq�azq�azq�azq�azq�azt�azq�q�q�azq�azq�azq�azq�azq�azq�azq�azq�azq�azq�azq�azq�azq�azq�az��azq�azq�azq�azq�azq�azq�azq�azq�azq�azq�azq�azq�azq�azq�azq�azv�azq�azq�q�azq�q�azq�azq�azq�azq�azq�azq�azq�azq�azq�azq�azq�azq�azq�azq�azq�azb�azq�azazq�q�azq�azq�azq�azq�azq�azq�azq�azq�azq�azq�azq�azq�azq�azq�azw�azrr+rrazrrrazw�wUu�rrrr�Mv�v�r	r
azrazrazr
azrazrazrazrazazrazrazrazrrazrazrazkXazazrazrrazrazrazrazr azr!azr"azr#azazr$azr%azr&azr'r(azr)azr*az�azr,rbr-rOazr.r/r?r0w�r1w�r2w�r3w�r4w�r5w�r6w�r7w�w�r8w�r9w�r:w�r;r<w�r=w�r>w�azw�r@jrAjrBjrCjrDjrEjrFjrGjjrHjrIjrJjrKrLjrMjrNjazjrPrQt�v�rRv�rSwFrTwFrUwFrVwFrWwFrXwFrYwFrZwFwFr[wFr\wFr]wFr^r_wFr`wFrawFubwFrcrfrdreb�gQgC�Kazrgazmrirmrj@rk@rl@az@rn@ro@rp@az@rrr{rsrwrt@ru@rv@az@rx@ry@rz@|@az@r}r�r~r�rr�r�@r�@r�@az@r�@r�@r�@az@r�r�r�@r�@r�@az@r�@r�@r�@az@r�r�r�@r�@r�@r�@az@r�azr�@r�@r�@az@r�sMr�sr�r�r�r�r�r�r�r�azr�r�@r�@r�@az@r�r�r�@r�@r�@az@r�@r�@r�@az@r�r�@r�r�@r�@r�@az@r�r�r�@r�@r�@az@r�@r�@r�@az@r�r�r�r�r�r�r�@r�@r�@az@r�@r�@r�@az@r�azr�@r�@r�@az@r�r�r�r�r�@r�@r�@az@r�@r�@r�@az@r�azr�@r�@r�@az@r�r�r�r�r�r�azr�r�@r�@r�@az@r�r�r�@r�@r�@|@r�@r�@r�@az@r�r�r�r�r�@r�@r�@az@r�@r�@r�@az@|r�r�@r�@r�@az@r�s
r�ssss@s@s@az@s@s@s@az@s	azs
@s@s@az@sssazs@s@s@az@sss@s@s@az@s@s@s@|@ss!s@s@s @az@s"s8s#s2s$s)azs%s&@s'@s(@az@s*s.s+@s,@s-@az@s/@s0@s1@az@azs3s4|s5@s6@s7@az@s9sCazs:s;s?s<@s=@s>@az@s@@sA@sB@|@azsDsEsIsF@sG@sH@az@sJ@sK@sL@az@sNs|azsOsPsYsQsSazsR|azazsTazsUsV@sW@sX@az@sZsms[sds\s`s]@s^@s_@az@sa@sb@sc@az@sesisf@sg@sh@az@sj@sk@sl@az@snswsosssp@sq@sr@az@st@su@sv@|@sxazsy@sz@s{@az@s}s�s~s�ss�s�s�azs�s�@s�@s�@az@s�s�s�@s�@s�@az@s�@s�@s�@az@s�s�|s�s�@s�@s�@az@@s�s�@s�@s�@az@s�s�s�s�s�s�s�@s�@s�@s�@s�@s�@s�@s�@s�@s�@s�@s�@s�@@s��@s�@s�@s�@az@s�s�s�@s�@s�@az@s�@s�@s�@az@s�s�s�@s�@s�@s�@az@@s�s�@s�@s�@az@s�s�s�s�s�azazs�s�@s�@s�@az@s�s�s�s�s�@s�@s�@az@s�@s�@s�@|@s�s�s�@s�@s�@az@s�azs�azs�s�azs�s�azw�azs�azazs�s�azazs�s�azs�azs�azs�azs�azs�azs�azs�azazs�s�azazs�azs�s�azs�azazs�s�azs�azs�azazs�s�azazs�s�azs�azazs�az@s�t	s�taztt@t@t@az@aztt@t@t@az@t
tttt@t
@t@az@t@t@t@az@ttt@t@t@az@t@t@t@az@t@t@t@azt t!@t"@t#@t$@t%@t&@t'@az@t)*t*A�t+@t,@t-@t.@t/@t0@t1��t2�wt3x�t4xYt5@t6xXt7xTt8v}t9u�t:ut;tvt<tat=tOt>tGt?tC@t@tA@tB@Q@tD@tE@tF@�@�_tHtItLtJ@tK@
@tM@tN@
@tPtXtQ@tRtUtS@tT@�_@tV@tW@�_@tYt]@tZt[@t\@�@t^@t_@t`@.�@tbtptctotdth@tetf@tg@p@titltj@tk@�@tm@tn@�@@2T@@tq�Otrts@tt@tu@�@twt�txt�tyt�tzt~t{@t|@t}@
@t@t�@t�@�_@t�t�t�@t�@t�@�@t�@t�@t�@�@t�t�t�t�t�@t�@t�@߫@t�@t�@t�@Q@t�t�t�@t�@t�@Q@t�@t�@t�@�_@t�t�t�t�t�t�t�@t�@t�@.�@t�@t�@t�@�_@t�t�t�@t�@t�@�@@t�@t�@t�@Q@t�t�t�t�t�@t�@t�@�_@t�@t�@t�@�O@t�ut�@t�@t�@t�@t��Ot��Ot�t��Ot�t��Ot�t�t��Ot�2&t�t�t�t��Ot�2&�Ot�t��^�Ot�Țt��Ot��Ot��Ot��Ot��Ot��Ot��Ot��Ot��Ot��Ot��Ot��Ot��Ot��Ot��Ot��Ot��Ot��O�Ot��O.)t��Ot��O2&.	�Ot�t�t�t��Ot��Ot��O2&�Ot��Ot��Ot��O2&.)t�t�t��Ot�t�t�t��O��Ț�Ot��Ot��Ot��Ot�t�t��O2&�Xt��OȚ�Ou�Ou�Ou�O2&�Ou@u@u@Q@uuKu	u(u
uuuu@u
@u@u@�@uuu@u@u@�_@u@u@u@�1@uu#uuu@u@u@�_@u @u!@u"@2T@�Ou$u%@u&@u'@Q@u)u<u*u3u+u/u,@u-@u.@��@u0@u1@u2@Q@u4u8u5@u6@u7@�@u9@u:@u;@�_@u=uB@u>u?@u@@uA@�O@uCuGuD@uE@uF@k@uH@uI@uJ@�@uLupuMu`uNuWuOuSuP@uQ@uR@Q@uT@uU@uV@�O@uXu\uY@uZ@u[@p@u]@u^@u_@Q@uaugubufuc@ud@ue@�_@߫@uhului@uj@uk@�1@um@un@uo@�@uqu�uruzusuvut@uu@�_@uw@ux@uy@p@u{uu|@u}@u~@�!@u�@u�@u�@Q@u�u�u�u�u�@u�@u�@��@u�@u�@u�@�_@u�u�u�@u�@u�@
@u�@u�@u�@u�@u��_�_u�u��_u��_u��_u��_u��_u��_u��_u��_u��_u��_u��_u��_u�u��_���_.9u�v-u�u�u�u�u�u�u�u�u�u�u�@u�@u�@�@u�@u�@u�@A@u�u�u�@.�@u�@u�@u�@�@u�u�u�@u�@u�@u�@�@u�u�u�@u�@u�@Q@u�@u�@u�@��@u�u�u�u�u�u��O@u�@u�@u�@�O@@u�u�@u�@u�@�@u�u�u�u�u�@u�@u�@Q@u�@u�@u�@Q@u�u�u�@u�@u�@Q@u�@u�@u�@�@u�vu�u�u�u�u�u�u�@u�@u�@
@u�@u�@u�@�@@u�u�@u�@u�@k@u�vu�vu�@v@v@Q@v@v@v@Q@vvv@v	@v
@�_@v@v
@v@�/@vv#vvvvv@v@v@�O@v@v@v@Q@vvv@v@v@�_@v @v!@v"@�O@@v$v%v)v&@v'@v(@
@v*@v+@v,@�@v.vuv/vRv0vCv1v:v2v6v3@v4@v5@�_@v7@v8@v9@�_@v;v?v<@v=@v>@
@v@@vA@vB@�_@vDvMvEvIvF@vG@vH@�@vJ@vK@vL@�@@vNvO@vP@vQ@Q@vSvbvTv]vUvYvV@vW@vX@�O@vZ@v[@v\@�@v^
v_@v`@va@a@vcvlvdvhve@vf@vg@�_@vi@vj@vk@�_@vmvqvn@vo@vp@�O@vr@vs@vt@�_@vv@vw@vx@vy@vz@v{@v|@2T@v~w�vwv�v�v�v�v�v�v�v�v��_v�@v�@v�@�O@v�v�v�@v�@v�@�_@v�@v�@�@v�v�v�v�v�@v�@v�@2T@v�@v�@v�@�_@v�v�v�@v�@v�@�@v�@v�@v�@�_@v�v�v�v�v�v�v�@�@v�@v�@v�@�@@v�v�v�@v�@v�@�O@v�@v�@v�@�O@v�v�v�v�v�@v�@v�@�@v�@v�@v�@�_@v�v�v�@v�@v�@Q@v�@v�@v�@Q@v�v�v�v�v�v�v�v�v�@v�@v�@�_@v�@v�@v�@�1@v�v�v�@v�@v�@�_@
@v�v�v�v�v�@v�@v�@�_@v�@v�@v�@�O@v�v�v�@v�@v�@�!@v�@v�@v�@�_@v�v�v�v�v�v�v�@v�@v�@߫@v�@v�@v�@Q@v�v��@v�@v�@v�@�@v�wwww@w@w@�_@w@w@w@�_@w	w
w
@w@w@k@w@w@w@�O@ww]ww6ww'wwwww@w@w@�_@w@w@w@�_@ww#w @w!@w"@k@w$@w%@w&@�_@w(w1w)w-w*@w+@w,@�_@w.@w/@w0@�_@w2@w3@w4@w5@Q@w7wJw8wAw9w=w:@w;@w<@�_@w>@w?@w@@�_@wBwFwC@wD@wE@�_@wG@wH@wI@�_@wKwTwLwPwM@wN@wO@�O@wQ@wR@wS@��@wUwYwV@wW@wX@�O@wZ@w[@w\@�_@w^w~w_wow`wiwawewb@wc@wd@��@wf@wg@wh@a@wjwlwk@�@wm@wn@�@wpwuwq@wr@ws@wt@�O@wvwzww@wx@wy@�_@w{@w|@w}@�O@ww�w�w�w�w�w�@w�@w�@�_@w�@w�@w�@�@w�w�w�@w�@w�@w�@w��_w��_w��_w��_w��_w��_w��_w��_w��_w�w�w�w�w�w�w�w�w�w��_w��z�_w�w�.��_w��_w��\w��\w��\w��\w��\w��\w��\w��\�\w��\w�w��\w��\w��\w��\w��\�\��w��_w��_.��_w�w�w�w�w��_���_w��_�k�_w��_w��_���_w�w�w��_w�w�w�w�.9�_���_w�w����_���_w��_w�w�w�w��[�_�\�_w��_.h�_�_w�w��_�_w�w��_�_w��\�_w��_�_w�w��_w��_w��_w��_w��_w��_w��_w��_w��_�_w�w��_w��_w��_w��_w��_w��_w��_�_��w�w�w�w�w�@w�@w�@az@w�@w�@w�@
@w�w�w�@w�@w�@Q@w�@w�@w�@�@w�xOw�xCw�xw�xw�xxxx@x@x@�_@x@x@x@�@x	x
x
@x@x@�@x@x@x@�_@xx@xx@x@x@�_@@xx@x@x@�!@xx0xx'xx#x @x!@x"@�_@x$@x%@x&@�1@x(x,x)@x*@x+@�_@x-@x.@x/@�_@x1x:x2x6x3@x4@x5@�@x7@x8@x9@p@x;x?x<@x=@x>@߫@x@@xA@xB@�_@xD@xE@xF@xGxKxH@xI@xJ@�_@xL@xM@xN@�_@xP@xQ@xR@xS@.�@xU@xV@xW@
@�_@xZx�@x[x\x�x]@x^@x_@x`@xa@xb@xcxrxdxkxexhxf@xg@
@xi@xj@
@xlxoxm@xn@
@xp@xq@
@xsxzxtxwxu@xv@
@xx@xy@
@x{x~x|@x}@
@x@x�@
@x�@x�@x�@x�@x�@x�@x�@x�@x�@x�@x�@�_@x�@@x�x�@x�@@x�@x�x�@x�@x�@x�@�@x�@x�@x�@x�@x�@x�@x�@x���x��?x�@x�@x�y�x�@x�@x�y�x��x�@x�@x�y�x�@x�@x�y�x�y#x�x�x�x�x�x�x�x�x�x�x�@x�@x�@2T@x�@x�@x�@Q@x�x�x�@x�@x�@�@x�@x�@x�@a@x�x�x�x�x�@x�@x�@.�@x�@x�@x�@Q@x�x�x�@�@x�@x�@x�@�O@x�@x�x�x�x�x�@x�@x�@�1@x�@x�@x�@�_@@x�Q@x�y
x�x�x�x�x�x�x�@x�@x�@�O@x�@x�@x�@�@@x�x�x�@x�@x�@Q@x�@x�@x�@�!@x�yx�x�x�@x�@�_@x�@x�@y@Q@yyy@y@y@�_@y@y@y	@p@yyyyy
yy@y@y@�O@y@y@y@�_@y�_y@y@y@a@yyyy�O@�_@@yy @y!@y"@�!@y$yby%yDy&y1y'y0y(y,y)@y*@y+@
@y-@y.@y/@�O@�_@y2y;y3y7y4@y5@y6@߫@y8@y9@y:@�_@y<y@y=@y>@y?@�_@yA@yB@yC@�@yEyOyF@yGyKyH@yI@yJ@�O@yL@yM@yN@�_@yPyYyQyUyR@yS@yT@a@yV@yW@yX@߫@yZy^y[@y\@y]@�O@y_@y`@ya@�_@ycy�ydywyeynyfyjyg@yh@yi@�O@yk@yl@ym@k@yoysyp@yq@yr@�O@yt@yu@yv@�/@yxy�yyy}yz@y{@y|@�O@y~@y@y�@�_@�Oy�y�@y�@y�@�O@y�y�y�y�y�y�y�@y�@y�@Q@y�@y�@y�@�O@@y�y�@y�@y�@�O@y�y�y�@y�@y�@y�@�O@y�y�y�@y�@y�@�_@y�@y�@y�@�_@y�@y�@y�y�y�y�y�y�y�y�y�@y�@y�@Q@y�@y�@y�@�@y�@y�@y�@y�@�@y�@y�@y�@y�@y�@�_@y�y�y�y�y�y�y�@y�@y�@�O@y�@y�@y�@߫@y�@y�@y�@y�@�@y�@y�y�y�@y�@y�@�O@y�@y�@y�@�@2T@Q@y���y�Dy�|�y�{@y�z�y�z<y�z
y�y�y�y�y�@y�@y�@y�@y�@y�@y�@�_@y�@y�@y�@y�@y�@y�@y�@y�@y�@y�@�O@y�zy�@y�@y�@y�@y�@y�@y�@y�@z@z@�_@z@z@z@z@z@z@z	@z
@z@z@�_@zz%zzz@z@z@z@z@z@z@z@z@z@�_@z@z@z@z@z@z @z!@z"@z#@z$@p@z&z1z'@z(@z)@z*@z+@z,@z-@z.@z/@z0@�O@z2@z3@z4@z5@z6@z7@z8@z9@z:@z;@�O@z=zlz>zUz?zJz@@zA@zB@zC@zD@zE@zF@zG@zH@zI@�_@zK@zL@zM@zN@zO@zP@zQ@zR@zS@zT@�_@zVzazW@zX@zY@zZ@z[@z\@z]@z^@z_@z`@p@zb@zc@zd@ze@zf@zg@zh@zi@zj@zk@�O@zmz�znzuzo@zp@zq@zr@zs@zt@a@zv@zw@zx@zy@zz@z{@z|@z}@z~@z@�@z�z�z�@z�@z�@z�@z�@z�@z�@z�@z�@z�@�O@z�@z�@z�@z�@z�@z�@z�@z�@z�@z�@�O@z�z�z�z�z�z�z�z�z�@z�@z�@z�@z�@z�@z�@z�@z�@z�@�_@z�@z�@z�@z�@z�@z�@z�@z�@z�@z�@Q@z�z�z�@z�@z�@z�@z�@z�@z�@z�@z�@z�@�!@z�@z�@z�@z�@z�@z�@z�@z�@z�@z�@p@z�z�@z�z�@z�@z�@z�@z�@z�@z�@z�@z�@z�@�@z�z�z�@z�@z�@z�@z�@z�@z�@z�@z�@z�@�@z�@z�@z�@z�@z�@z�@z�@z�@z�@z�@�O@z�{z�{z�z�z�@z�@z�@z�@z�@z�@z�@z�@z�@z�@�O@z�@z�@z�@z�@z�@{@{@{@{@{@�O@{{{@{@{	@{
@{@{@{
@{@{@{@�_@{@{@{@{@{@{@{@{@{@{@�O@{{4{{){@{ @{!@{"@{#@{$@{%@{&@{'@{(@�_@{*@{+@{,@{-@{.@{/@{0@{1@{2@{3@�O@{5@{6@{7@{8@{9@{:@{;@{<@{=@{>@{?@�O@{A|{B{�{C{r{D{[{E{P{F@{G@{H@{I@{J@{K@{L@{M@{N@{O@�_@{Q@{R@{S@{T@{U@{V@{W@{X@{Y@{Z@�O@{\{g{]@{^@{_@{`@{a@{b@{c@{d@{e@{f@�!@{h@{i@{j@{k@{l@{m@{n@{o@{p@{q@
@{s{�{t{{u@{v@{w@{x@{y@{z@{{@{|@{}@{~@�_@{�@{�@{�@{�@{�@{�@{�@{�@{�@{�@�@{�{�{�@{�@{�@{�@{�@{�@{�@{�@{�@{�@�@{�@{�@{�@{�@{�@{�@{�@{�@{�@{�@�@{�{�{�{�{�{�{�@{�@{�@{�@{�@{�@{�@{�@{�@{�@�O@{�@{�@{�@{�@{�@{�@{�@{�@{�@{�@�O@{�{�{�@{�@{�@{�@{�@{�@{�@{�@{�@{�@�O@{�@{�@{�@{�@{�@{�@{�@{�@{�@{�@�O@{�{�{�{�{�@{�@{�@{�@{�@{�@{�@{�@{�@{�@�_@{�@{�@{�@{�@{�@{�@{�@{�@{�@{�@�O@{�{�{�@{�@{�@{�@{�@{�@{�@{�@{�@{�@�_@{�@{�@{�@{�@{�@{�@{�@{�@{�@{�@�1@||`||1|||||@|@|@|@|	@|
@|@|@|
@|@�O@|@|@|@|@|@|@|@|@|@|@�O@||&|@|@|@|@| @|!@|"@|#@|$@|%@�O@|'@|(@|)@|*@|+@|,@|-@|.@|/@|0@�@|2|I|3|>|4@|5@|6@|7@|8@|9@|:@|;@|<@|=@
@|?@|@@|A@|B@|C@|D@|E@|F@|G@|H@p@|J|U|K@|L@|M@|N@|O@|P@|Q@|R@|S@|T@�_@|V@|W@|X@|Y@|Z@|[@|\@|]@|^@|_@Q@|a|�|b|y|c|n|d@|e@|f@|g@|h@|i@|j@|k@|l@|m@�_@|o@|p@|q@|r@|s@|t@|u@|v@|w@|x@�O@|z|�|{@||@|}@|~@|@|�@|�@|�@|�@|�@�_@|�@|�@|�@|�@|�@|�@|�@|�@|�@|�@�O@|�@|�|�|�@|�@|�@|�@|�@|�@|�@|�@|�@|�@�O@|�@|�@|�@|�@|�@|�@|�@|�@|�@|�@�_@|�~|�}b|�}|�|�|�|�|�|�|�@|�@|�|�|�@|�@|�@|�@|�@|�@|�@�!@|�@|�@|�@�O@|�@|�@|�@|�@|�@|�@|�@|�@|�@|�@Q@|�|�|�@|�@|�@|�@|�@|�@|�@|�@|�@|�@p@|�@|�@|�@|�@|�@|�@|�@|�@|�@|�@�O@|�|�|�|�|�@|�@|�@|�@|�@|�@|�@|�@|�@|�@a@|�@|�@|�@|�@|�@|�@|�@|�@|�@|�@�O@|�}|�@|�@|�@|�@|�@|�@|�@}@}@}@Q@}@}@}@}@}@}	@}
@}@}@}
@�O@}}3}}}@}@}@}@}@}@}@}@}@}@}@�O@}}(}@}@} @}!@}"@}#@}$@}%@}&@}'@�_@})@}*@}+@},@}-@}.@}/@}0@}1@}2@�O@}4}K}5}@}6@}7@}8@}9@}:@};@}<@}=@}>@}?@�@}A@}B@}C@}D@}E@}F@}G@}H@}I@}J@�O@}L}W}M@}N@}O@}P@}Q@}R@}S@}T@}U@}V@�O@}X@}Y@}Z@}[@}\@}]@}^@}_@}`@}a@
@}c}�}d}�}e}|}f}q}g@}h@}i@}j@}k@}l@}m@}n@}o@}p@�_@}r@}s@}t@}u@}v@}w@}x@}y@}z@}{@�O@}}}�}~@}@}�@}�@}�@}�@}�@}�@}�@}�@�_@}�@}�@}�@}�@}�@}�@}�@}�@}�@}�@�O@}�}�@}�}�@}�@}�@}�@}�@}�@}�@}�@}�@}�@�_@}�}�}�@}�@}�@}�@}�@}�@}�@}�@}�@}�@�_@}�@}�@}�@}�@}�@}�@}�@}�@}�@}�@�O@}�}�}�}�}�}�}�@}�@}�@}�@}�@}�@}�@}�@}�@}�@�_@}�@}�@}�@}�@}�@}�@}�@}�@}�@}�@�O@}�}�}�@}�@}�@}�@}�@}�@}�@}�@}�@}�@p@}�@}�@}�@}�@}�@}�@}�@}�@}�@}�@�O@}�}�@}�}�@}�@}�@}�@}�@}�@}�@}�@}�@}�@�@@}�@}�@}�@}�@}�@}�@}�@}�@}�@}�@}�@�O@~~�~~a~~2~~~~~@~@~@~	@~
@~@~@~
@~@~@
@~@~@~@~@~@~@~@~@~@~@�_@~~'~@~@~@~ @~!@~"@~#@~$@~%@~&@�_@~(@~)@~*@~+@~,@~-@~.@~/@~0@~1@�@~3~J~4~?~5@~6@~7@~8@~9@~:@~;@~<@~=@~>@�_@~@@~A@~B@~C@~D@~E@~F@~G@~H@~I@�O@~K~V~L@~M@~N@~O@~P@~Q@~R@~S@~T@~U@p@~W@~X@~Y@~Z@~[@~\@~]@~^@~_@~`@�@~b~�~c~z~d~o~e@~f@~g@~h@~i@~j@~k@~l@~m@~n@Q@~p@~q@~r@~s@~t@~u@~v@~w@~x@~y@�@~{~�~|@~}@~~@~@~�@~�@~�@~�@~�@~�@�_@~�@~�@~�@~�@~�@~�@~�@~�@~�@~�@�O@~�~�~�~�~�@~�@~�@~�@~�@~�@~�@~�@~�@~�@�@@~�@~�@~�@~�@~�@~�@~�@~�@~�@~�@�O@~�@~�@~�@~�@~�@~�@~�@~�@~�@~�@~�@�@~�~�~�~�~�~�@~�~�@~�@~�@~�@~�@~�@~�@~�@~�@~�@߫@~�~�~�@~�@~�@~�@~�@~�@~�@~�@~�@~�@�_@~�@~�@~�@~�@~�@~�@~�@~�@~�@~�@�O@~�~�~�@~�@~�@~�@~�@~�@~�@~�@~�@~�@~�@�O@~�~�~�@~�@~�@~�@~�@~�@~�@~�@~�@~�@�_@~�@~�@~�@~�@~�@~�@~�@~�@~�@~�@�O@ 
@@@@@@@	@
@@@�@@@@@@@@@@@�_@@@@@@@�O@!8"-#@$@%@&@'@(@)@*@+@,@�O@.@/@0@1@2@3@4@5@6@7@�O@9@:@;@<@=@>@?@@@A@B@C@�@E��F��G�H�IxJaKVL@M@N@O@P@Q@R@S@T@U@�O@W@X@Y@Z@[@\@]@^@_@`@�O@bmc@d@e@f@g@h@i@j@k@l@Q@n@o@p@q@r@s@t@u@v@w@�O@y�z�{@|@}@~@@�@�@�@�@�@�_@�@�@�@�@�@�@�@�@�@�@�O@���@�@�@�@�@�@�@�@�@�@�O@�@�@�@�@�@�@�@�@�@�@�O@����@��@�@�@�@�@�@�@�@�@�@�O@���@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�!@�����@�@�@�@�@�@�@�@�@�@p@�@�@�@�@�@�@�@�@�@�@�O@���@�@�@�@�@�@�@�@�@�@Q@�@�@�@�@�@�@�@�@�@�@�O@��Z��,����
�@�@�@�@�@�@�@�@�@�	@�O@�@�@�
@�@�@�@�@�@�@�@�1@��!�@�@�@�@�@�@�@�@�@� @Q@�"@�#@�$@�%@�&@�'@�(@�)@�*@�+@�O@�-�C�.�8�/@�0@�1@�2@�3@�4@�5@�6@�7@2T@�9@�:@�;@�<@�=@�>@�?@�@@�A@�B@�_@�D�O�E@�F@�G@�H@�I@�J@�K@�L@�M@�N@�_@�P@�Q@�R@�S@�T@�U@�V@�W@�X@�Y@�O@�[�{�\�h�]@�^@�_@�`@�a@�b@�c@�d@�e@�f@�g@p@�i�p�j@�k@�l@�m@�n@�o@߫@�q@�r@�s@�t@�u@�v@�w@�x@�y@�z@�O@�|���}���~@�@��@��@��@��@��@��@��@��@�!@��@��@��@��@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@��@��@��@��@�O@���P��������������@��@��@��@��@��@��@��@��@��@��@�@������@��@��@��@��@��@��@��@��@��@�@��@��@��@��@��@��@�O@����������@��@��@��@��@��@��@��@��@��@�@��@��@��@��@��@��@��@��@��@��@�_@������@��@��@��@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@��@��@��@�O@���!���
������@��@��@��@��@��@��@��@��@��@�O@�@�@�@�@�@�@�@�@�@�	@�O@���@�
@�@�@�@�@�@�@�@�@�O@�@�@�@�@�@�@�@�@�@� @�O@�"�9�#�.�$@�%@�&@�'@�(@�)@�*@�+@�,@�-@�@�/@�0@�1@�2@�3@�4@�5@�6@�7@�8@�O@�:�E�;@�<@�=@�>@�?@�@@�A@�B@�C@�D@�O@�F@�G@�H@�I@�J@�K@�L@�M@�N@�O@Q@�Q���R�r�S�f�T�[�U@�V�(�W�(�X�(�Y�(�Z�(��(�\@�]@�^@�_@�`@�a@�b@�c@�d@�e@�@@�g�h@�i@�j@�k@�l@�m@�n@�o@�p@�q@�O@�s���t��u@�v@�w@�x@�y@�z@�{@�|@�}@�~@�1@��@��@��@��@��@��@��@��@��@��@�O@������@��-@��-@��-@��-@��-@��-@��-@��-@��-@�_-@��@��@��@��@��@��@��@��@��@��@�O@��������������@��@��@��@��@��@��@��@��@��@�@@��@��@��@��@��@��@��@��@��@��@�O@������@��@��@��@��@��@��@��@��@��@Q@��@��@��@��@��@��@��@��@��@��@�O@����@����@��@��@��@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@��@��@��@��@Q@���A�������H���$���
�����@��@��@������@��@��@��@��@��@k@@��@����@��@�@�@��@�@�@�@�@�@�@�	@�
@�@�@�O@���@�@�@�@�@�@�@�@�@�@�_@�@�@�@�@�@�@� @�!@�"@�#@�O@�%�1�&@�'@�(@�)@�*@�+@�,@�-@�.@�/@�0@a@�2�=�3@�4@�5@�6@�7@�8@�9@�:@�;@�<@߫@�>@�?@�@@�A@�B@�C@�D@�E@�F@�G@�O@�I�t�J�a�K�V�L@�M@�N@�O@�P@�Q@�R@�S@�T@�U@�_@�W@�X@�Y@�Z@�[@�\@�]@�^@�_@�`@�@�b�i�c@�d@�e@�f@�g@�h@�O@�j@�k@�l@�m@�n@�o@�p@�q@�r@�s@�O@�u���v���w@�x@�y@�z@�{@�|@�}@�~@�@��@�_@��@��@��@��@��@��@��@��@��@��@�O@������@��@��@��@��@��@��@��@��@��@�_@��@��@��@��@��@��@��@��@��@��@߫@������������@����@��@��@��@��@��@��@��@��@��@�_@������@��@��@��@��@��@��@��@��@��@p@��@��@��@��@��@��@��@��@��@��@�@����������@��@��@��@��@��@��@��@��@��@�@��@��@��@��@��@��@��@��@��@��@�O@������@��@��@��@��@��@��@��@��@��@Q@��@��@��@��@��@��@��@��@��@��@�!@���(��������@��@��@��@�@�@�@�@�@�@�_@�@�@�	@�
@�@�@�
@�@�@�@�O@���@�@�@�@�@�@�@�@�@�@�_@�@�@� @�!@�"@�#@�$@�%@�&@�'@�O@�)�5@�*�+@�,@�-@�.@�/@�0@�1@�2@�3@�4@�/@�6@�7@�8@�9@�:@�;@�<@�=@�>@�?@�@@�O@�B���C���D�s�E�\�F�Q�G@�H@�I@�J@�K@�L@�M@�N@�O@�P@Q@�R@�S@�T@�U@�V@�W@�X@�Y@�Z@�[@�@�]�h�^@�_@�`@�a@�b@�c@�d@�e@�f@�g@a@�i@�j@�k@�l@�m@�n@�o@�p@�q@�r@�O@�t���u���v@�w@�x@�y@�z@�{@�|@�}@�~@�@�!@��@��@��@��@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@��@��@��@��@Q@��������������@��@��@��@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@��@��@��@�O@������@��@��@��@��@��@��@��@��@��@�/@��@��@��@��@��@��@��@��@��@��@�O@����������@��@��@��@��@��@��@��@��@��@�_@��@��@��@��@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@��@��@��@��@p@���5���������@��@��@��@��@��@��@��@��@��@��@�@�����@��@��@��@�@�@�@�@�@�@߫@�@�@�	@�
@�@�@�
@�@�@�@�O@��)���@�@�@�@�@�@�@�@�@�@�/@�@� @�!@�"@�#@�$@�%@�&@�'@�(@�O@@�*�+@�,@�-@�.@�/@�0@�1@�2@�3@�4@�O@�6�a�7�J�8�?�9@�:@�;@�<@�=@�>@߫@�@@�A@�B@�C@�D@�E@�F@�G@�H@�I@�@@�K�V�L@�M@�N@�O@�P@�Q@�R@�S@�T@�U@�O@�W@�X@�Y@�Z@�[@�\@�]@�^@�_@�`@�O@�b�y�c�n�d@�e@�f@�g@�h@�i@�j@�k@�l@�m@�_@�o@�p@�q@�r@�s@�t@�u@�v@�w@�x@�O@�z@�{@�|@�}@�~@�@��@��@��@��@��@�!@�������K�������'������������@����@��@��@��@��@��@��@��@��@��@�@@����@��@��@��@��@��@��@��@��@��@�O@����������@��@��@��@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@��@��@��@Q@������@��@��@��@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@��@��@��@�O@��������@����@��@��@��@��@��@��@��@��@��@�_@������@��@��@��@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@��@��@��@�@��������@��@��@��@��@�@�@�@�@�@�_@�@�@�@�	@�
@�@�@�
@�@�@�O@���@�@�@�@�@�@�@�@�@�@p@�@�@�@� @�!@�"@�#@�$@�%@�&@�O@�(���)�T�*�A�+�6�,@�-@�.@�/@�0@�1@�2@�3@�4@�5@�_@�7@�8@�9@�:@�;@�<@�=@�>@�?@�@@
@�B�I�C@�D@�E@�F@�G@�H@�O@�J@�K@�L@�M@�N@�O@�P@�Q@�R@�S@p@�U�l�V�a�W@�X@�Y@�Z@�[@�\@�]@�^@�_@�`@p@�b@�c@�d@�e@�f@�g@�h@�i@�j@�k@p@�m�x�n@�o@�p@�q@�r@�s@�t@�u@�v@�w@a@�y@�z@�{@�|@�}@�~@�@��@��@��@�@@��������������@��@��@��@��@��@��@��@��@��@�_@��@��@��@��@��@��@��@��@��@��@�_@������@��@��@��@��@��@��@��@��@��@p@��@��@��@��@��@��@��@��@��@��@�!@����������@��@��@��@��@��@��@��@��@��@�1@��@��@��@��@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@��@��@��@��@�_@�������8���	����������@��@��@��@��@��@��@��@��@��@�_@��@��@��@��@��@��@��@��@��@��@�_@������@��@��@��@��@��@��@��@��@��@߫@��@�@�@�@�@�@�@�@�@�@�O@�
�!���@�
@�@�@�@�@�@�@�@�@Q@�@�@�@�@�@�@�@�@�@� @�O@�"�-�#@�$@�%@�&@�'@�(@�)@�*@�+@�,@�O@�.@�/@�0@�1@�2@�3@�4@�5@�6@�7@�O@�9�h�:�Q�;�F�<@�=@�>@�?@�@@�A@�B@�C@�D@�E@�!@�G@�H@�I@�J@�K@�L@�M@�N@�O@�P@�O@�R�]�S@�T@�U@�V@�W@�X@�Y@�Z@�[@�\@�O@�^@�_@�`@�a@�b@�c@�d@�e@�f@�g@��@�i���j�u�k@�l@�m@�n@�o@�p@�q@�r@�s@�t@k@�v@�w@�x@�y@�z@�{@�|@�}@�~@�@�O@������@��@��@��@��@��@��@��@��@��@�_@��@��@��@��@��@��@��@��@��@��@�1@������������������@��@��@��@��@��@��@��@��@��@�@��@��@��@��@��@��@��@��@��@��@�_@������@��@��@��@��@��@��@��@��@��@�_@��@��@��@��@��@��@��@��@��@��@�O@����������@��@��@��@��@��@��@��@��@��@p@��@��@��@��@��@��@��@��@��@��@�O@������@��@��@��@��@��@��@��@��@��@�_@��@��@��@��@��@��@��@��@��@��@�1@���'��������@��@��@��@��@�@�@�@�@�@�_@�@�@�@�	@�
@�@�@�
@�@�@�O@���@�@�@�@�@�@�@�@�@�@p@�@�@�@� @�!@�"@�#@�$@�%@�&@�O@�(�?�)�4�*@�+@�,@�-@�.@�/@�0@�1@�2@�3@�O@�5@�6@�7@�8@�9@�:@�;@�<@�=@�>@�O@�@@�A@�B@�C@�D@�E@�F@�G@�H@�I@�J@�_@�L�~�M���N���O�~�P�g�Q�\�R@�S@�T@�U@�V@�W@�X@�Y@�Z@�[@�O@�]@�^@�_@�`@�a@�b@�c@�d@�e@�f@a@�h�s�i@�j@�k@�l@�m@�n@�o@�p@�q@�r@Q@�t@�u@�v@�w@�x@�y@�z@�{@�|@�}@�O@���@����@��@��@��@��@��@��@��@��@��@�O@������@��@��@��@��@��@��@��@��@��@�@��@��@��@��@��@��@��@��@��@��@�O@��������@����@��@��@��@��@��@��@��@��@��@�@������@��@��@��@��@��@��@��@��@��@�_@��@��@��@��@��@��@��@��@��@��@�O@����@����@��@��@��@��@��@��@��@��@��@�O@������@��@��@��@��@��@��@��@��@��@p@��@��@��@��@��@��@��@��@��@��@�O@���@������������@��@��@��@��@��@��@��@��@��@Q@��@��@��@��@��@�@�@�@�@�@�@@�@�@�@�	@�
@�@�@�
@�@�@�@�1@��)���@�@�@�@�@�@�@�@�@�@�_@�@� @�!@�"@�#@�$@�%@�&@�'@�(@�O@�*�5�+@�,@�-@�.@�/@�0@�1@�2@�3@�4@�O@�6@�7@�8@�9@�:@�;@�<@�=@�>@�?@�O@�A�e�B�Y�C�N�D@�E@�F@�G@�H@�I@�J@�K@�L@�M@�O@�O@�P@�Q@�R@�S@�T@�U@�V@�W@�X@�O@@�Z�[@�\@�]@�^@�_@�`@�a@�b@�c@�d@�O@�f�r�g@�h@�i@�j@�k@�l@�m@�n@�o@�p@�q@�1@�s@�t@�u@�v@�w@�x@�y@�z@�{@�|@�}@�O@��'������������@����@��@��@��@��@��@��@��@��@��@�O@������@��@��@��@��@��@��@��@��@��@Q@��@��@��@��@��@��@��@��@��@�O@����������@��@��@��@��@��@��@��@��@��@2T@��@��@��@��@��@��@��@��@��@��@�@������@��@��@��@��@��@��@��@��@��@�@��@��@��@��@��@��@��@��@��@��@�O@�������������@��@��@��@��@��@��@��@��@��@Q@��@��@��@��@��@��@��@��@��@��@�@������@��@��@��@��@��@��@��@��@��@�_@��@��@��@��@��@��@��@�@�@�@�O@�����@�@�@�	@�
@�@�@�
@�@�@Q@�@�@�@�@�@�@�@�@�@�@�O@�@�@�@�@� @�!@�"@�#@�$@�%@�&@߫@�(���)�T�*�=�+�6�,@�-@�.@�/@�0@�1@�2@�3@�4@�5@Q@�7@�8@�9@�:@�;@�<@�O@�>�I�?@�@@�A@�B@�C@�D@�E@�F@�G@�H@Q@�J@�K@�L@�M@�N@�O@�P@�Q@�R@�S@�_@�U�l�V�a�W@�X@�Y@�Z@�[@�\@�]@�^@�_@�`@�_@�b@�c@�d@�e@�f@�g@�h@�i@�j@�k@�O@�m�x�n@�o@�p@�q@�r@�s@�t@�u@�v@�w@Q@�y@�z@�{@�|@�}@�~@�@��@��@��@�O@����������@��@��@��@��@��@��@��@��@��@��@߫@������@��@��@��@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@��@��@��@�O@����������@��@��@��@��@��@��@��@��@��@�@��@��@��@��@��@��@��@��@��@��@�1@��@��@��@��@��@��@��@��@��@��@��@�_@�������3������ �������������@��@��@��@��@��@��@��@��@��@�!@��@��@��@��@��@��@��@��@��@��@�@������@��@��@��@��@��@��@��@��@��@�_@��@��@��@��@��@��@��@��@��@��@�O@��
�@�@�@�@�@�@�@�	@�
@�@�@�@���@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�O@�!�P�"�9�#�.�$@�%@�&@�'@�(@�)@�*@�+@�,@�-@�O@�/@�0@�1@�2@�3@�4@�5@�6@�7@�8@�@�:�E�;@�<@�=@�>@�?@�@@�A@�B@�C@�D@Q@�F@�G@�H@�I@�J@�K@�L@�M@�N@�O@�O@�Q�h�R�]�S@�T@�U@�V@�W@�X@�Y@�Z@�[@�\@߫@�^@�_@�`@�a@�b@�c@�d@�e@�f@�g@�O@�i�t�j@�k@�l@�m@�n@�o@�p@�q@�r@�s@�_@�u@�v@�w@�x@�y@�z@�{@�|@�}@�~@�O@������������������@��@��@��@��@��@��@��@��@��@�@��@��@��@��@��@��@��@��@��@��@�@������@��@��@��@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@��@��@��@�O@����������@��@��@��@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@��@��@��@�O@������@��@��@��@��@��@��@��@��@��@�_@��@��@��@��@��@��@��@��@��@��@�O@�������������@��@��@��@��@��@��@��@��@��@a@��@��@��@��@��@��@��@��@��@��@�O@�����@��@��@��@��@��@�@�@�@�@�_@�@�@�@�@�	@�
@�@�@�
@�@�O@��'���@�@�@�@�@�@�@�@�@�@�O@�@�@�@� @�!@�"@�#@�$@�%@�&@�O@�(@�)@�*@�+@�,@�-@�.@�/@�0@�1@�2@�@�4���5���6�e�7�N�8�C�9@�:@�;@�<@�=@�>@�?@�@@�A@�B@�!@�D@�E@�F@�G@�H@�I@�J@�K@�L@�M@�O@�O�Z�P@�Q@�R@�S@�T@�U@�V@�W@�X@�Y@�_@�[@�\@�]@�^@�_@�`@�a@�b@�c@�d@�O@�f�}�g�r�h@�i@�j@�k@�l@�m@�n@�o@�p@�q@�@@�s@�t@�u@�v@�w@�x@�y@�z@�{@�|@�O@�~���@��@��@��@��@��@��@��@��@��@�_@��@��@��@��@��@��@��@��@��@��@�O@��������������@��@��@��@��@��@��@��@��@��@.�@��@��@��@��@��@��@��@��@��@��@�O@������@��@��@��@��@��@��@��@��@��@�_@��@��@��@��@��@��@��@��@��@��@�O@����������@��@��@��@��@��@��@��@��@��@�@��@��@��@��@��@��@��@��@��@��@�O@������@��@��@��@��@��@��@��@��@��@Q@��@��@��@��@��@��@��@��@��@��@�O@���G������	�����@��@��@��@��@��@��@��@�@�@�_@�@�@�@�@�@�@�O@�
��@�@�
@�@�@�@�@�@�@�@�O@�@�@�@�@�@�@�O@��0��%�@� @�!@�"@�#@�$@�@�&@�'@�(@�)@�*@�+@�,@�-@�.@�/@Q@�1�<�2@�3@�4@�5@�6@�7@�8@�9@�:@�;@�O@�=@�>@�?@�@@�A@�B@�C@�D@�E@�F@�O@�H�w�I�`�J�U�K@�L@�M@�N@�O@�P@�Q@�R@�S@�T@�_@�V@�W@�X@�Y@�Z@�[@�\@�]@�^@�_@�O@�a�l�b@�c@�d@�e@�f@�g@�h@�i@�j@�k@p@�m@�n@�o@�p@�q@�r@�s@�t@�u@�v@�O@�x���y���z@�{@�|@�}@�~@�@��@��@��@��@�O@��@��@��@��@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@��@��@��@��@�_@�������C������������������@��@��@��@��@��@��@��@��@��@�@��@��@��@��@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@��@��@��@��@�_@����������@��@��@��@��@��@��@��@��@��@�_@��@��@��@��@��@��@��@��@��@��@߫@������@��@��@��@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@��@��@��@�O@������������@��@��@��@��@��@��@�_@��@��@�@�@�@�@�@�@�@�@�@�	��
@�@�@�
@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�O@� �,@�!�"@�#@�$@�%@�&@�'@�(@�)@�*@�+@�O@�-�8�.@�/@�0@�1@�2@�3@�4@�5@�6@�7@�_@�9@�:@�;@�<@�=@�>@�?@�@@�A@�B@�O@�D���E�t�F�]�G�R�H@�I@�J@�K@�L@�M@�N@�O@�P@�Q@�@�S@�T@�U@�V@�W@�X@�Y@�Z@�[@�\@�@�^�i�_@�`@�a@�b@�c@�d@�e@�f@�g@�h@�@�j@�k@�l@�m@�n@�o@�p@�q@�r@�s@�O@�u���v���w@�x@�y@�z@�{@�|@�}@�~@�@��@�_@��@��@��@��@��@��@��@��@��@��@�_@������@��@��@��@��@��@��@��@��@��@�_@��@��@��@��@��@��@��@��@��@��@�O@��������@����@��@��@��@��@��@��@��@��@��@�O@������@��@��@��@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@��@��@��@�O@����������@��@��@��@��@��@��@��@��@��@�@��@��@��@��@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@��@��@��@��@Q@�������M������������@��@��@��@��@��@��@��@��@��@�_@��@��@��@�@�@�@�@�@�@�@�_@���	@�
@�@�@�
@�@�@�@�@�@a@�@�@�@�@�@�@�@�@�@�@Q@��6� �+�!@�"@�#@�$@�%@�&@�'@�(@�)@�*@�@�,@�-@�.@�/@�0@�1@�2@�3@�4@�5@�O@�7�B�8@�9@�:@�;@�<@�=@�>@�?@�@@�A@�_@�C@�D@�E@�F@�G@�H@�I@�J@�K@�L@�O@�N�g�O�[@�P�Q@�R@�S@�T@�U@�V@�W@�X@�Y@�Z@�@�\@�]@�^@�_@�`@�a@�b@�c@�d@�e@�f@�O@�h��i�t�j@�k@�l@�m@�n@�o@�p@�q@�r@�s@�_@�u@�v@�w@�x@�y@�z@�{@�|@�}@�~@�@��@��@��@��@��@��@��@��@��@��@��@�_@������������������@��@��@��@��@��@��@��@��@��@�_@��@��@��@��@��@��@��@��@��@��@�O@������@��@��@��@��@��@��@��@��@��@�_@��@��@��@��@��@��@��@��@��@��@�O@����������@��@��@��@��@��@��@��@��@��@Q@��@��@��@��@��@��@��@��@��@��@�O@������@��@��@��@��@��@��@��@��@��@Q@��@��@��@��@��@��@��@��@��@��@�O@������������@��@��@��@��@��@��@��@��@��@�@��@��@��@��@��@��@�@�@�@�@�O@���@�@�@�	@�
@�@�@�
@�@�@�O@�@�@�@�@�@�@�@�@�@�@�O@��3��(�@�@� @�!@�"@�#@�$@�%@�&@�'@�_@�)@�*@�+@�,@�-@�.@�/@�0@�1@�2@�O@�4@�5@�6@�7@�8@�9@�:@�;@�<@�=@�>@�O@�@���A���B���C���D���E���F���G@�H���I���J�j�K�}�L�o�M���N���O�j�P�_�Q�Z�R�V�S@�T@�U@�@�W@�X@�Y@�@@�[�\@�]@�^@�@�`�e@�a�b@�c@�d@�@@�f�g@�h@�i@�@�k�~�l�u�m�q�n@�o@�p@�@�r@�s@�t@�@�v�z�w@�x@�y@�@�{@�|@�}@�@���������@��@��@�@��@��@��@�@������@��@��@�@��@��@��@�@������������������@��@��@�@��@��@��@�@������@��@��@�@��@��@��@�@����������@��@��@�@��@��@��@�@������@��@��@�@��@��@��@�@��������������@��@��@�@��@��@��@�@��@��@��@��@�@����������@��@��@�@��@��@��@�@������@��@��@�@��@��@��@�@���,�����������������@��@��@�@��@��@��@�@������@��@��@�@��@��@��@�@����������@��@��@�@��@��@��@�@�����@��@�@�@�@�@�@�@�������	@�
@�@�@�
@�@�@�@���@�@�@�@�@�@�@�@��#���@�@�@�@� @�!@�"@�@�$�(�%@�&@�'@�@�)@�*@�+@�@�-�L�.�=�/�4�0@�1@�2@�3@�@�5�9�6@�7@�8@�@�:@�;@�<@�@�>�G�?�C�@@�A@�B@�@�D@�E@�F@�@�H@�I@�J@�K@�@�M�\�N�S@�O�P@�Q@�R@�@�T�X�U@�V@�W@�@�Y@�Z@�[@�@�]�f�^�b�_@�`@�a@�@�c@�d@�e@�@�g�k�h@�i@�j@�@�l@�m@�n@�@�p���q���r���s���t�}�u�y�v@�w@�x@�@�z@�{@�|@�@�~���@��@��@�@��@��@��@�@����������@��@��@�@��@��@��@�@������@��@��@�@��@��@��@�@��������@����@��@��@�@@����@��@��@�@����������@��@��@�@��@��@��@�@������@��@��@�@��@��@��@�@������������������@��@��@�@��@��@��@�@��@��@��@��@�@����������@��@��@�@��@��@��@�@@����@��@��@�@��������������@��@�@��@��@��@�@@����@��@��@�@@��������@��@��@�@��@��@��@�@���4����������������@��@��@�@��@��@��@�@����@�@�@�@�@�@�@�@���	�
�
@�@�@�@�@�@�@���@�@�@�@�@�@�@�@��)��$�� �@�@�@�@�!@�"@�#@�@@�%�&@�'@�(@�@�*�3�+�/�,@�-@�.@�@�0@�1@�2@�@�@�5�X�6�E�7�<@�8�9@�:@�;@�@�=�A�>@�?@�@@�@�B@�C@�D@�@�F�O�G�K�H@�I@�J@�@�L@�M@�N@�@�P�T�Q@�R@�S@�@�U@�V@�W@�@�Y�l�Z�c�[�_�\@�]@�^@�@�`@�a@�b@�@�d�h�e@�f@�g@�@�i@�j@�k@�@�m�t�n�p�o@�@�q@�r@�s@�@�u�y�v@�w@�x@�@�z@�{@�|@�@�~����
����������������������@��@��@�@��@��@��@�@������@��@��@�@��@��@��@�@����������@��@��@�@��@��@��@�@������@��@��@�@��@��@��@�@��������������@��@��@�@��@��@��@�@������@��@��@�@��@��@��@�@����������@��@�@��@��@��@�@@����@��@��@�@������������������@��@��@�@��@��@��@�@������@��@��@�@��@��@��@�@����@����@��@��@�@������@��@��@�@��@��@��@�@�������������@��@��@�@������@��@��@�@��@��@��@�@����@�@�@�@�@��	�@�@�@�@�
@�@�@�@��I��2��#�����@�@�@�@�@�@�@�@���@�@�@�@� @�!@�"@�@�$�-�%�)�&@�'@�(@�@�*@�+@�,@�@@�.�/@�0@�1@�@�3�:�4�5�@@�6�7@�8@�9@�@�;�D�<�@�=@�>@�?@�@�A@�B@�C@�@�E@�F@�G@�H@�@�J�i�K�Z�L�U�M�Q�N@�O@�P@�@�R@�S@�T@�@@�V�W@�X@�Y@�@�[�`@�\�]@�^@�_@�@�a�e�b@�c@�d@�@�f@�g@�h@�@�j�u�k�t�l�p�m@�n@�o@�@�q@�r@�s@�@�@�v�w�@�x�|�y@�z@�{@�@�}@�~@�@�@��������������������������@��@��@�@��@��@��@�@������@��@��@�@��@��@��@�@����@����@��@��@�@������@��@��@�@��@��@��@�@��������@����@��@��@�@������@��@��@�@��@��@��@�@����������@��@��@�@��@��@��@�@��@��@��@��@�@������������������@��@��@�@��@��@��@�@�@����������@��@��@�@��@��@��@�@�@��������������@��@��@�@��@��@��@�@�@�����@������@��@��@�@��@��@��@�@���8������
���������@��@��@�@��@��@�@�@���@�@�@�@�@�@�	@�@���@�
@�@�@�@�@�@�@�@�@��)�� ���@�@�@�@�@�@�@�@�!�%�"@�#@�$@�@�&@�'@�(@�@�*�3�+�/�,@�-@�.@�@�0@�1@�2@�@@�4�5@�6@�7@�@�9�S�:�M�;�D�<�@�=@�>@�?@�@�A@�B@�C@�@�E�I�F@�G@�H@�@�J@�K@�L@�@@�N@�O�P@�Q@�R@�@�T�W�U�V�@�@�X�a�Y�]�Z@�[@�\@�@�^@�_@�`@�@�b�f�c@�d@�e@�@�g@�h@�i@�@�k�6�l���m�n�@�o���p���q���r�w�s@�t@�u@�v@�@�x�|�y@�z@�{@�@�}@�~@�@�@����@����@��@��@�@�@��������@����@��@��@�@������@��@��@�@��@��@��@�@����������@��@��@�@��@��@��@�@������@��@��@�@��@��@��@�@��������@��������@��@��@�@��@��@��@�@����������@��@��@�@��@��@��@�@������@��@��@�@��@��@��@�@��������������@��@��@�@��@��@��@�@������@��@��@�@��@��@��@�@������@��@��@��@�@������@��@��@�@��@��@��@�@�����@��������������������@��@��@�@��@��@��@�@�@��������@�@�@�@�@�@�@�@���@�	@�
@�@�@�
@�@�@��#�����@�@�@�@�@�@�@�@���@�@�@�@� @�!@�"@�@�$�-�%�)�&@�'@�(@�@�*@�+@�,@�@�.�2�/@�0@�1@�@�3@�4@�5@�@�7��8��-K�9�:�`�;�N�<�E�=�A�>-K�?-K�@-K�-K�B-K�C-K�D-K�-K�F�J�G-K�H-K�I-K�-K�K-K�L-K�M-K�-K�O�W�P�S�Q-K�R-K�-K�T-K�U-K�V-K�-K�X�\�Y-K�Z-K�[-K�-K�]-K�^-K�_-K�-K�a�o�b�f�c-K�d-K�e-K�-K�g�k�h-K�i-K�j-K�-K�l-K�m-K�n-K�-K�p�y�q�u�r-K�s-K�t-K�-K�v-K�w-K�x-K�-K�z�~�{-K�|-K�}-K�-K�-K��-K��-K�-K����������������������-K��-K��-K�-K��-K��-K��-K�-K������-K��-K��-K�-K��-K��-K��-K�-K����������-K��-K��-K�-K��-K��-K��-K�-K������-K��-K��-K�-K��-K��-K��-K�-K��������������-K��-K��-K�-K��-K��-K��-K�-K������-K��-K��-K�-K��-K��-K��-K�-K����������-K��-K��-K�-K��-K��-K�-K������-K��-K��-K�-K��-K��-K��-K�-K������������������-K��-K��-K�-K��-K��-K��-K�-K������-K��-K��-K�-K��-K��-K��-K�-K����������-K��-K��-K�-K��-K��-K��-K�-K-K����-K��-K��-K�-K���������-K��-K��-K��-K�-K�����-K��-K�-K�-K�-K�-K�-K�-K�����-K�	-K�
-K�-K���
-K�-K�-K�-K�-K�-K�-K�-K�����Q��6��+��"���@�@�@�@�@� @�!@�@�#�'�$@�%@�&@�@�(@�)@�*@�@�,�-�@�.�2�/@�0@�1@�@�3@�4@�5@�@�7�F�8�A�9�=�:@�;@�<@�@�>@�?@�@@�@�B@�C@�D@�E@�@�G�P�H�L�I@�J@�K@�@�M@�N@�O@�@�@�R�s�S�d�T�\�U�X�V@�W@�@�Y@�Z@�[@�@�]�`�^@�_@�@�a@�b@�c@�@�e�n�f�j�g@�h@�i@�@�k@�l@�m@�@@�o�p@�q@�r@�@�t���u�z@�v�w@�x@�y@�@�{��|@�}@�~@�@��@�@������@��@��@��@�@������@��@��@�@��@��@��@�@�@�����������.�����@����������������������@��@��@�@��@��@��@�@������@��@��@�@��@��@��@�@����������@��@��@�@��@��@�@������@��@��@�@��@��@��@�@��������������@��@�@��@��@��@�@������@��@��@�@��@��@��@�@����������@��@��@�@��@��@��@�@������@��@��@�@��@��@��@�@�����������@����@��@��@�@������@��@��@�@��@��@��@�@����������@��@��@�@��@��@��@�@���@�@�@�@�@�@�@���	��
��@�@�
@�@�@�@�@�@���@�@�@�@�@�@�@�@��%��!�@�@� @�@�"@�#@�$@�@�&�*�'@�(@�)@�@�+@�,@�-@�@�/���0�Q�1�J�2�E�3�<�4�8�5@�6@�7@�@�9@�:@�;@�@�=�A�>@�?@�@@�@�B@�C@�D@�@�F�I�G@�H@�@�@�K@�L@�M@�N@�O@�P@�@�R�y�S�f�T�]�U�Y�V@�W@�X@�@�Z@�[@�\@�@�^�b�_@�`@�a@�@�c@�d@�e@�@�g�p�h�l�i@�j@�k@�@�m@�n@�o@�@�q�u�r@�s@�t@�@�v@�w@�x@�@�z���{�}�|@�@�~���@��@��@�@��@��@��@�@����������@��@��@�@��@��@��@�@������@��@��@�@��@��@��@�@�@���������@�@�����@�@�������������@�@�������������������������@��@��@�@��@��@��@�@������@��@��@�@��@��@��@�@����������@��@��@�@��@��@��@�@�@��������������@��@��@�@��@��@��@�@������@��@��@�@��@��@��@�@����@����@��@��@�@�@��������������@��@��@�@������@��@��@�@��@��@��@�@����������@��@��@�@��@��@��@�@�@���
���@�@�@�@�@��
�@�@�	@�@�@�@�@�����@�@�@�@�@�@�@���@�@�@�@�@�@�@�@� �A�!�"�@�#�.�$�)�%@�&@�'@�(@�@@�*�+@�,@�-@�@�/�8�0�4�1@�2@�3@�@�5@�6@�7@�@�9�=�:@�;@�<@�@�>@�?@�@@�@�B�a�C�U�D�L�E�I�F@�G@�H@�@�J@�K@�@�M�Q�N@�O@�P@�@�R@�S@�T@�@�V�^�W�Z�X@�Y@�@�[@�\@�]@�@@�_�`@�@�b�u�c�l�d�h�e@�f@�g@�@�i@�j@�k@�@�m�q�n@�o@�p@�@�r@�s@�t@�@�v��w�{�x@�y@�z@�@�|@�}@�~@�@������@��@��@�@��@��@��@�@����������������������������@��@��@�@��@��@��@�@������@��@��@�@��@�@����������@��@��@�@��@��@��@�@������@��@��@�@��@��@��@�@��������������@��@��@�@��@��@��@�@������@��@��@�@��@��@��@�@����������@��@��@�@��@�@������@��@��@�@��@��@��@�@������������������@��@��@�@��@��@��@�@������@��@��@�@��@��@��@�@����������@��@��@�@��@��@��@�@�@������������@��@��@�@��@��@�@�@@��@�@�@�@�����	@�
@�@�@�
@�@�@�@@��@�@�@�@�@���@��S��8��&��%��!�@�@� @�@�"@�#@�$@�@�@�'�0�(�,�)@�*@�+@�@�-@�.@�/@�@�1�5�2@�3@�4@�@�6@�7@�@�9�H�:�C�;�?�<@�=@�>@�@�@@�A@�B@�@��D�E@�F@�G@�@�I�J�@�K�O�L@�M@�N@�@�P@�Q@�R@�@�T�w�U�d�V�_�W�[�X@�Y@�Z@�@�\@�]@�^@�@��`�a@�b@�c@�@�e�n�f�j�g@�h@�i@�@�k@�l@�m@�@�o�s�p@�q@�r@�@�t@�u@�v@�@�x���y���z�~�{@�|@�}@�@�@��@��@�@������@��@��@�@��@��@��@�@����������@��@��@�@��@��@��@�@������@��@��@�@��@��@��@�@��@��@��@��@��@�@��@��@��@��@��@��@��@��@��@��@����������@��@��@�@��@��@�@��@��@��@��@�@�@�����@�@���������@�@�����@�@�������������@�@�����@�@���������@�@�����@�@�����������������@�@�����@�@���������@�@�����@�@�������������@�@�����@�@���������@�@�����@�@������{��@������@�@��@�����@��@�@���@��z��C����1��&���	�
�
@�@�@�@�������@��@�����@��@��"������@����@��� �!�@@���#�$��%��@�'�,@�(�)@�*@�+@�@�-@�.@�/@�0@�@�2��3�8�4��5@�6@�7@�@�9�?�:�=��;��<@���>@��@���A��B@��D��E�c�F�P�G�O��H�I��J�M�K�L@�@��N�@��@�Q�]��R�S�X�T�V��U@���W@��Y�[�Z�@���\@���^�_�`�@��a@�b@��d�x�e�p��f�g�m�h�j�i@�@�k�l@�@��n@��o@��q@�r@�s�u��t�@�v�w�@@�@�y@��@�|@�}@�~@�@@����@��@��@��@��@��@��@��@��@��@��@��@��@��@����������@��@��@�@��@@��@���@��@������@��@�@��@��@�@���e�����������/������������������@��@��@��@��@��@��@�_@��@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@��@��@��@��@��@�O@����������@��@��@��@��@��@��@p@��@��@��@��@��@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@��@��@��@��@��@�O@������������@��@��@��@��@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@��@�@�@�@1@�@�@�@�@�@�	@�
@�@�@�
@�@�@�O@���@�@�@�@�@�@�@�@�@�@�@�@�O@�@� @�!@�"@�#@�$@�%@�&@�'@�(@�)@�*@�+@�,@�-@�.@�O@�0�y�1�K�2�B�3�6�4@�5@�O@�7@�8@�9@�:@�;@�<@�=@�>@�?@�@@�A@�O@�C@�D@�E@�F@�G@�H@�I@�J@�O@�L�p�M�d�N@�O@�P@�Q@�R@�S@�T@�U@�V@�W@�X@�Y@�Z�a�[�^�\�]�22&�O.�_�`Ț2&2&.	�b�O�c�O26�O�e@�f@�g@�h@�i@�j@�k@�l@�m@�n@�o@�O@�q@�r@�s@�t@�u@�v@�w@�x@�O@�z���{���|���}@�~@�@��@��@��@��@�_@��@��@��@��@��@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@��@�O@������@��@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@��@��@��@��@��@�O@����������������_����@��@��@��@��@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@��@�O@����������@��@��@��@��@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@��@��@��@��@��@�O@���
���@����@��@��@��@��@��@��@��@��@��@��@�O@�@�@�@�@�@�@�@�@�	@�
@�@�@�O@@��@�@�@�@�@�@�@�@�@�@�@�@�O@��U��<��/��#� @�!@�"@�O@�$@�%@�&@�'@�(@�)@�*@�+@�,@�-@�.@�O@�0@�1@�2@�3@�4@�5@�6@�7@�8@�9@�:@�;@�O@�=@�>�I�?@�@@�A@�B@�C@�D@�E@�F@�G@�H@�O@�J@�K@�L@�M@�N@�O@�P@�Q@�R@�S@�T@�!@�V�y�W�l�X�`�Y@�Z@�[@�\@�]@�^@�_@߫@�a@�b@�c@�d@�e@�f@�g@�h@�i@�j@�k@�O@�m@�n@�o@�p@�q@�r@�s@�t@�u@�v@�w@�x@�O@�z���{@�|@�}@�~@�@��@��@��@�O@��@��@��@��@��@��@��@��@�O@���d�����������������_����@��@��@��@��@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@��@�O@����������@��@��@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@a@��@��@��@��@��@��@��@��@��@��@��@��@�O@��������@����@��@��@��@��@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@��@�O@������@��@��@��@��@��@��@��@��@��@��@��@a@��@��@��@��@��@��@��@��@��@��@��@��@�O@���-����������@�@�@�@�@�@�@�@�@�	@�
@�@�O@�
� ���@�@�@�@�@�@�@�@�@�O@�@�@�@�@�@�@�@�@@�!@�"@�#@�$@�%@�&@�'@�(@�)@�*@�+@�,@�O@�.�I�/�@�0�4�1@�2@�3@߫@�5@�6@�7@�8@�9@�:@�;@�<@�=@�>@�?@�O@�A@�B@�C@�D@�E@�F@�G@�H@�O@�J�W�K@�L@�M@�N@�O@�P@�Q@�R@�S@�T@�U@�V@�O@�X@�Y@�Z@�[@�\@�]@�^@�_@�`@�a@�b@�c@�O@�e���f���g���h�}�i�q�j@�k@�l@�m@�n@�o@�p@�O@�r@�s@�t@�u@�v@�w@�x@�y@�z@�{@�|@Q@�~@�@��@��@��@��@��@��@��@��@��@��@�O@����������@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@��@��@��@��@2T@��@��@��@��@��@��@��@��@��@��@��@��@��@��@��@��@�O@��������������@��@��@��@��@��@��@�_@��@��@��@��@���O���O���O���O���O���O���O���O���O�O�����O-��O��@��@��@��@��@��@��@��@��@��@��@��@�O@@����@��@��@��@��@��@��@��@�O@���+�������������@��@��@�O@��@��@��@��@��@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@��@�@�@�@�@�O@�����@�@�	@�
@�@�@�
@�@�@�@�@�O@�@�@�@�@�@�@�@�@�@�@�@�O@�@� @�!@�"@�#@�$@�%@�&@�'@�(@�)@�*@�O@�,�J�-�=�.�1�/@�0@�O@�2@�3@�4@�5@�6@�7@�8@�9@�:@�;@�<@�O@�>@�?@�@@�A@�B@�C@�D@�E@�F@�G@�H@�I@�_@�K�X�L@�M@�N@�O@�P@�Q@�R@�S@�T@�U@�V@�W@�O@�Y@�Z@�[@�\@�]@�^@�_@�`@�a@�b@�c@�d@�O@�f�Y�g�a�h���i���j���k���l�x�m@�n@�o@�p@�q@�r@�s@�t@�u@�v@�w@߫@�y@�z@�{@�|@�}@�~@�@�O@��@��@��@��@��@��@��@��@��@��@��@��@�1@����������@��@��@��@��@��@��@��@��@��@��@�1@��@��@��@��@��@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@��@��@��@��@��@�O@��������������@��@��@��@��@��@��@�_@��@��@��@��@��@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@��@��@��@��@��@�O@������@��@��@��@��@��@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@��@��@��@��@��@��@��@��@��@�O@���7������������@��@��@�O@�@�@�@�@�@�@�@�O@�@�	@�
@�@�@�
@�@�@�O@��*���@�@�@�@�@�@�@�@�@�@�@�O@�@� @�!@�"@�#@�$@�%@�&@�'@�(@�)@�@�+@�,@�-@�.@�/@�0@�1@�2@�3@�4@�5@�6@�O@�8�F�9@Q�:�;@�<@�=@�>@�?@�@@�A@�B@�C@�D@�E@�O@�G�T�H@�I@�J@�K@�L@�M@�N@�O@�P@�Q@�R@�S@�O@�U@�V@�W@�X@�Y@�Z@�[@�\@�]@�^@�_@�`@�O@�b���c���d���e�}�f�p�g@�h@�i@�j@�k@�l@�m@�n@�o@�O@�q@�r@�s@�t@�u@�v@�w@�x@�y@�z@�{@�|@�!�D�~@�@��@��@��@��@��@��@��@��@��@��@�O@����������@��@��@��@��@��@��@��@��@��@��@�_@��@��@��@��@��@��@��@��@��@��@��@�@@��@��@��@��@�O@��������@����@��@��@��@��@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@��@��@��@��@��@�O@������@��@��@��@��@��@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@��@��@��@��@��@�O@���������@������@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@��@��@��@��@�O@��������@��@��@��@��@�@�@�@�@�@�@�O@�@�@�	@�
@�@�@�
@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�@�O@� �B�!�9�"�-�#@�$@�%@�&@�'@�(@�)@�*@�+@�,@2T@�.@�/@�0@�1@�2@�3@�4@�5@�6@�7@�8@�O@�:@�;@�<@�=@�>@�?@�@@�A@�O@�C�P�D@�E@�F@�G@�H@�I@�J@�K@�L@�M@�N@�O@�O@�Q@�R@�S@�T@�U@�V@�W@�X@�O@�Z�X�[���\���]�{�^�n�_�f�`@�a@�b@�c@�d@�e@�_@�g@�h@�i@�j@�k@�l@�m@�O@�o@�p@�q@�r@�s@�t@�u@�v@�w@�x@�y@�z@�O@�|���}���~@�@��@��@��@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@��@��@��@��@��@�O@��������������@��@��@�O@��@��@��@��@��@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@��@��@��@��@��@�O@������@��@��@��@��@��@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@��@��@��@��@��@�O@����������������@��@��@��@��@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@��@��@��@�@�@�O@�����@�@�@�@�	@�
@�@�@�
@�@�@�@�@�@�@�O@�@�@�@�@�@�@�@�@�O@��=��0� �$�!@�"@�#@�O@�%@�&@�'@�(@�)@�*@�+@�,@�-@�.@�/@�O@�1@�2@�3@�4@�5@�6@�7@�8@�9@�:@�;@�<@�O@�>�K�?@�@@�A@�B@�C@�D@�E@�F@�G@�H@�I@�J@�_@�L@�M@�N@�O@�P@�Q@�R@�S@�T@�U@�V@�W@�O@�Y���Z���[��\�r�]�f�^@�_@�`@�a@�b@�c@�d@�e@�_@�g@�h@�i@�j@�k@�l@�m@�n@�o@�p@�q@�O@�s@�t@�u@�v@�w@�x@�y@�z@�{@�|@�}@�~@�O@����������@��@��@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@��@��@��@��@��@�O@��������������@��@��@��@��@��@��@�_@��@��@��@��@��@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@��@��@��@��@��@�O@������@��@��@��@��@��@��@��@��@��@�O@��@��@��@��@��@��@��@��@��@��@��@��@�O@���<���!���������_�_�����_���_���_���_���_���_���_����������������_���_�����_.9�z�����������\.9�_����.9.�����������_������.���_����_��z.���.���.9��_������.9���	@�
@�@�@�
@�@�@�@�@�@�@�O@�@�@�@�@�@�@�@�@�@�@�@� @�O@�"�+�#@�$@�%@�&@�'@�(@�)@�*@�O@�,@�-@�.@�/@�0@�1@�2@�3@�4@�5@�6@�7@�8@�9@�:@�;@�O@�=�d�>�W�?�K�@@�A@�B@�C@�D@�E@�F@�G@�H@�I@�J@�O@�L@�M@�N@�O@�P@�Q@�R@�S@�T@�U@�V@�O@�X@�Y@�Z@�[@�\@�]@�^@�_@�`@�a@�b@�c@�O@�e�n�f@�g@�h@�i@�j@�k@�l@�m@�O@�o@�p@�q@�r@�s@�t@�u@�v@�O@�x���y���z@�{@�|@�}@�~@�@��@��@��@��@��@��@��@�O�������O�����O�O��2&�O��������26�^Ț.	����2&�O���Oȩ�O��@��@��@��@��@��@��@�_@���������������;���{�������7��������������@������@��@��@�_@��@��@��@
@����������@��@��@�@��@��@��@Q@��@��@��@��@�_@����������@��@��@��@��@������-K��-K@-K��@��@��@��@��@��@��@��@��@��@��@��@��@����@-K@��@����@��@��@��@��@��@��@��@��@��@��@��@-K@������@��@��@�!@��@@����@A@������@��@��@��@�!@��@��@��@��@�@������
������@�@�@a@�@�@�@�@�	@�
@�@�@�_@�����@�@�@�_@�@�@�@Q@�@�@�@�@A@��,��'��#� @�!@�"@�@�$@�%@�&@�O@�(@�)@�*@�+@�_@�-�2�.@�/@�0@�1@�_@�3@�4@�5@�6@�O@�8�s�9�X�:�I�;�D�<�@�=@�>@�?@߫@�A@�B@�C@�@�E@�F@�G@�H@�_@�J�S�K�O�L@�M@�N@�O@�P@�Q@�R@
@�T@�U@�V@�W@�_@�Y�h�Z�c�[�_�\@�]@�^@�_@�`@�a@�b@߫@�d@�e@�f@�g@�O@�i�n�j@�k@�l@�m@�_@�o@�p@�q@�r@�_@�t���u���v�{@�w�x@�y@�z@�O@�|@�}@�~@�@�_@��@��@��@��@��@�_@��������������@��@��@Q@��@��@��@
@��@��@��@��@-�@������@��@��@��@�!@��@��@��@��@�O@�������������������������@��@��@�_@��@��@��@Q@��@��@��@��@Q@����������@��@��@�_@��@��@��@�@��@��@��@��@�_@����������@��@��@��@�@��@��@��@��@�_@������@��@��@��@�@��@��@��@��@Q@������������������@��@��@�@��@��@��@�_@��@��@��@��@�_@������@��@��@��@�@��@��@��@��@�_@������������@��@��@�_@��@��@�@�_@�@�@�@�@
@���@�	@�
@�@�_@�
@�@�@�@�_@��D��-���@���@�@�@߫@�@�@�@Q@��(� �$�!@�"@�#@�_@�%@�&@�'@�@�)@�*@�+@�,@�_@�.�9�/�4�0@�1@�2@�3@�_@�5@�6@�7@�8@�_@�:�?�;@�<@�=@�>@�_@�@@�A@�B@�C@�1@�E�`�F�U�G�P�H�L�I@�J@�K@�_@�M@�N@�O@�@�Q@�R@�S@�T@�_@�V�[�W@�X@�Y@�Z@a@�\@�]@�^@�_@�1@�a�p�b�k�c�g�d@�e@�f@
@�h@�i@�j@�O@�l@�m@�n@�o@�1@�q�v�r@�s@�t@�u@�_@�w@�x@�y@�z@�@�|�T�}���~�����������@������@��@��@�@��@��@��@�@����������@��@��@�_@��@��@��@2T@��@��@��@��@�_@��������������@��@��@�_@��@��@��@�_@��@��@��@��@�1@������@��@��@��@�_@��@��@��@��@�_@������������������@��@��@�_@��@��@��@a@��@��@��@��@�_@����������@��@��@Q@��@��@��@
@��@��@��@��@�O@��������������@��@��@�@��@��@��@�O@��@��@��@��@�_@������@��@��@��@�1@��@��@��@��@�_@���&���������@������@��@��@�_@��@��@��@1@��������@�@�@�@�@�@�@�O@�@�@�	@�
@�_@���
����@�@�@�O@�@�@�@�_@�@�@�@�@Q@��!�@�@�@� @Q@�"@�#@�$@�%@�!@�'�>�(�3�)�.@�*�+@�,@�-@�O@�/@�0@�1@�2@�_@�4�9�5@�6@�7@�8@�_@�:@�;@�<@�=@p@�?�N�@�I�A�E�B@�C@�D@߫@�F@�G@�H@Q@�J@�K@�L@�M@�@@�O�P@�Q@�R@�S@p@�U���V���W�v�X�g�Y�b�Z�^�[@�\@�]@�_@�_@�`@�a@Q@�c@�d@�e@�f@�O@�h�q�i�m�j@�k@�l@�O@�n@�o@�p@�@�r@�s@�t@�u@�_@�w���x���y�}�z@�{@�|@�!@�~@�@��@�@@��@��@��@��@�!@������@��@��@��@Q@��@��@��@��@�_@������������������@��@��@��@��@��@��@�_@��@��@��@��@�@@@����@��@��@��@Q@�������������O@��@��@��@�O@��@��@��@��@�_@������@��@��@��@�_@��@��@��@��@�_@����������������������@��@��@Q@��@��@��@�@��@��@��@��@�_@����������@��@��@�_@��@��@��@�1@��@��@��@��@�_@������@������@��@��@�O@��@��@��@�1@������@��@��@��@Q@��@��@��@��@�_@��� �����������@��@��@��@�������������������	��
������
����������@�@�@�1@�@�@�@�@Q@@��@�@�@�@
@�!�0�"�+�#�'�$@�%@�&@�_@�(@�)@�*@�O@�,@�-@�.@�/@�_@�1�6�2@�3@�4@�5@�@�7@�8@�9@�:@�_@�<���=��>���?�z�@�_�A�P�B�K�C�G�D@�E@�F@�@�H@�I@�J@�O@�L@�M@�N@�O@Q@�Q�Z�R�V�S@�T@�U@�@�W@�X@�Y@�@�[@�\@�]@�^@
@�`�o�a�j�b�f�c@�d@�e@�_@�g@�h@�i@�@�k@�l@�m@�n@�_@�p�u�q@�r@�s@�t@�!@�v@�w@�x@�y@�@�{���|���}���~���@��@��@�n@��@��@��@�_@��@��@��@��@�_@����������@��@��@�1@��@��@��@Q@��@��@��@��@�@��������������@��@��@p@��@��@��@�_@��@��@��@��@�_@������@��@��@��@�_@��@��@��@��@�_@����������������������@��@��@Q@��@��@��@�O@��@��@��@��@�_@����������@��@��@�O@��@��@��@�_@��@��@��@��@�@��������������@��@��@�@��@��@��@�_@��@��@��@��@Q@@����@��@��@��@�_@���������@������@��@��@�@��@��@��@�!@������@��@��@��@Q@��@�@�@�@�@����
@��@�@�	@�O@�@�@�
@�@�_@���@�@�@�@�_@�@�@�@�@�_@����S��<��-��(� �$�!@�"@�#@�1@�%@�&@�'@�@�)@�*@�+@�,@�_@�.�7�/�3�0@�1@�2@�@@�4@�5@�6@�O@�8@�9@�:@�;@�!@�=�H�>�C@�?�@@�A@�B@�1@�D@�E@�F@�G@�@�I�N�J@�K@�L@�M@�_@�O@�P@�Q@�R@
@�T�d�U@�V�_�W�[�X@�Y@�Z@.�@�\@�]@�^@�1@�`@�a@�b@�c@�@@�e�t�f�o�g�k�h@�i@�j@�O@�l@�m@�n@�@�p@�q@�r@�s@�_@�u�z�v@�w@�x@�y@�O@�{@�|@�}@�~@�@����������������������@��@��@��@��@��@��@�@@��@��@��@��@�!@����������@��@��@�@��@��@��@
@��@��@��@��@�_@��������������@��@��@-�@��@��@��@�1@��@��@��@��@�@@������@��@��@��@�_@��@��@��@��@�@������������������@��@��@�_@��@��@��@�O@��@��@��@��@�1@������@��@��@��@-�@��@��@��@��@�_@��������������@��@��@�O@��@��@��@�O@��@��@��@��@�O@������@��@��@��@Q@��@��@��@��@�@�������Z���'���������������@��@��@�O@��@��@�@�@�@�@�@�@�_@�����	@�
@�@�O@�
@�@�@2T@�@�@�@�@�O@��!��@��@�@�@�1@�@�@�@� @�!@@�"�#@�$@�%@�&@
@�(�C�)�4�*�/�+@�,@�-@�.@�_@�0@�1@�2@�3@p@�5�>�6�:�7@�8@�9@�_@�;@�<@�=@�@�?@�@@�A@�B@�_@�D�O�E�J@�F�G@�H@�I@�O@�K@�L@�M@�N@�_@�P�U�Q@�R@�S@�T@�1@�V@�W@�X@�Y@�@�[���\�{�]�l�^�g�_�c�`@�a@�b@�O@�d@�e@�f@
@�h@�i@�j@�k@�_@�m�v�n�r�o@�p@�q@�_@�s@�t@�u@�O@�w@�x@�y@�z@�_@�|���}��@�~�@��@��@�O@��@��@��@��@�_@������@��@��@��@a@��@��@��@��@�_@������������������@��@��@�_@��@��@��@
@��@��@��@��@�@@����@��@��@��@
@��������������@��@��@.�@��@��@��@�_@��@��@��@��@�_@������@��@��@��@�_@��@��@��@��@�_@���%����������������@����@��@��@�@��@��@��@��@�@����������@��@��@�@��@��@��@�@��@��@��@��@�_@��������������@��@��@�_@��@��@��@�O@��@��@��@��@Q@@����@��@��@��@�_@���
�����@�����@��@��@�_@�@�@�@�O@@��@�@�@�	@�_@�����
��@�@�@�_@�@�@�@�@�@�@�@�@�@�� �@�@�@�@�_@�!@�"@�#@�$@�@�&�]�'�F�(�7�)�2�*�.�+@�,@�-@�@�/@�0@�1@�@�3@�4@�5@�6@�_@�8�A�9�=�:@�;@�<@�_@�>@�?@�@@�@@�B@�C@�D@�E@�_@�G�R�H�M�I@�J@�K@�L@�_@�N@�O@�P@�Q@�_@�S�X�T@�U@�V@�W@�@�Y@�Z@�[@�\@�_@�^�y�_�n�`�i�a�e�b@�c@�d@�_@�f@�g@�h@�_@�j@�k@�l@�m@�_@�o�t�p@�q@�r@�s@�_@�u@�v@�w@�x@�@�z���{���|���}@�~@�@
@��@��@��@�@��@��@��@��@�_@������@��@��@��@�_@��@��@��@��@�_@���	���a���~�������������������������@��@��@�_@��@��@��@�_@��@��@��@��@�_@����������@��@��@�@��@��@��@
@��@��@��@��@�O@��������������@��@��@a@��@��@��@�O@��@��@��@��@�_@������@��@��@��@�_@��@��@��@��@�_@������������@����@��@��@p@��@��@��@��@Q@����������@��@��@�_@��@��@��@a@��@��@��@��@�_@�������������@��@��@�O@��@��@��@�_@��@��@��@��@�@���@�@�@�@a@�@�@�	@�
@�O@��G�
�,�������@�@�@�@�@�@�@Q@�@�@�@�@�@��'��#� @�!@�"@�_@�$@�%@�&@�O@�(@�)@�*@�+@Q@�-�<�.�7�/�3�0@�1@�2@A@�4@�5@�6@
@�8@�9@�:@�;@�@�=�B�>@�?@�@@�A@
@�C@�D@�E@�F@�_@�H�c�I�X�J�S�K�O�L@�M@�N@�_@�P@�Q@�R@�O@�T@�U@�V@�W@�_@�Y�^�Z@�[@�\@�]@�_@�_@�`@�a@�b@
@�d�s�e�n�f�j�g@�h@�i@�_@�k@�l@�m@�@�o@�p@�q@�r@Q@�t�y�u@�v@�w@�x@�_@�z@�{@�|@�}@
@�������������������������@��@��@�_@��@��@��@�@��@��@��@��@�_@����������@��@��@�_@��@��@��@�@��@��@��@��@�1@��������������@��@��@�@��@��@��@�@��@��@��@��@�@������@��@��@��@�O@��@��@��@��@�_@������������������@��@��@�@��@��@��@�O@��@��@��@��@�_@������@��@��@��@�@��@��@��@��@a@��������@����@��@��@�@@��@��@��@��@�@������@��@��@��@Q@��@��@��@��@�@���*����������������@��@��@�_@��@��@��@�1@��@��@��@��@�@@��
���@�@�@�O@�@�@�	@�@�@�@�
@�@Q@�������@�@�@2T@�@�@�@p@�@�@�@�@�_@� �%�!@�"@�#@�$@�O@�&@�'@�(@�)@�@�+�F�,�;�-�6�.�2�/@�0@�1@�_@�3@�4@�5@�!@�7@�8@�9@�:@
@�<�A�=@�>@�?@�@@�_@�B@�C@�D@�E@
@�G�V�H�Q�I�M�J@�K@�L@�_@�N@�O@�P@Q@�R@�S@�T@�U@�_@�W�\�X@�Y@�Z@�[@�@�]@�^@�_@�`@�_@�b�B�c���d���e���f�u�g�p�h�l�i@�j@�k@Q@�m@�n@�o@�@�q@�r@�s@�t@�_@�v��w�{�x@�y@�z@A@�|@�}@�~@�_@��@��@��@��@Q@��������������@��@��@p@��@��@��@
@��@��@��@��@Q@������@��@��@��@�O@��@��@��@��@�_@������������������@��@��@߫@��@��@��@�@��@��@��@��@�@����������@��@��@߫@��@��@��@p@��@��@��@��@�@@��������������@��@��@�_@��@��@��@�O@��@��@��@��@�_@@����@��@��@��@Q@���������������������@��@�!@��@��@��@�@��@��@��@��@�@����������@��@��@�_@��@��@��@�1@��@��@��@��@�@������������@��@��@�O@��@��@��@�@�@�@�@�@Q@���@�@�	@�
@�_@�@�
@�@�@�@��'��!�����@�@�@߫@�@�@�@�@�@�@�@� @�_@@�"�#@�$@�%@�&@�_@�(�7�)�2�*�.�+@�,@�-@�1@�/@�0@�1@�@�3@�4@�5@�6@�_@�8�=�9@�:@�;@�<@Q@�>@�?@�@@�A@�_@�C���D�w�E�\�F�Q�G�L�H@�I@�J@�K@�_@�M@�N@�O@�P@�@�R�W@�S�T@�U@�V@�@�X@�Y@�Z@�[@�_@�]�l�^�g�_�c�`@�a@�b@
@�d@�e@�f@�@�h@�i@�j@�k@�_@�m�r�n@�o@�p@�q@�@�s@�t@�u@�v@�O@�x���y���z���{��|@�}@�~@�_@��@��@��@�_@��@��@��@��@�_@������@��@��@��@Q@��@��@��@��@�@��������������@��@��@߫@��@��@��@
@��@��@��@��@�_@@����@��@��@��@Q@��������������@������@��@��@�@��@��@��@�1@����������@��@��@߫@��@��@��@Q@��@��@��@��@�!@��������������@��@��@�_@��@��@��@�@��@��@��@��@Q@@����@��@��@��@�1@������������@����@��@��@�1@��@��@��@��@�_@@����@��@��@��@�_@��������������@��@��@Q@��@��@��@�O@��@��@��@��@�@����@�@�@�@a@�@�@�@�@a@�
��������
�D��-�������@�@�@߫@�@�@�@�1@�@�@�@�@�@��(� �$�!@�"@�#@k@�%@�&@�'@�@�)@�*@�+@�,@
@�.�9�/�4@�0�1@�2@�3@�@�5@�6@�7@�8@�_@�:�?�;@�<@�=@�>@�_@�@@�A@�B@�C@�_@�E�d�F�U�G�P�H�L�I@�J@�K@�@�M@�N@�O@�1@�Q@�R@�S@�T@�_@�V�_�W�[�X@�Y@�Z@�@�\@�]@�^@�@�`@�a@�b@�c@Q@�e�t�f�o�g�k�h@�i@�j@�_@�l@�m@�n@�O@�p@�q@�r@�s@�O@�u�z�v@�w@�x@�y@�_@�{@�|@�}@�~@�_@������������������@��@��@��@�@��@��@��@��@�_@����@����@��@��@�O@��@��@��@��@�_@��������������@��@��@�@@��@��@��@�1@��@��@��@��@�!@������@��@��@��@a@��@��@��@��@
@������������@����@��@��@�1@��@��@��@��@Q@������@��@��@��@�_@��@��@��@��@�!@��������������@��@��@�_@��@��@��@
@��@��@��@��@�1@������@��@��@��@�1@��@��@��@��@�O@���Z���#�����������������@��@��@߫@��@��@��@Q@��@��@��@��@k@���������@��@��@Q@�@�@�@�O@�@�@�@�@�_@�	��
����@�
@�@�_@�@�@�@�@�@�@�@�@߫@���@�@�@�@Q@�@� @�!@�"@�@�$�?�%�4�&�/�'�+�(@�)@�*@�_@�,@�-@�.@Q@�0@�1@�2@�3@߫@�5�:�6@�7@�8@�9@�_@�;@�<@�=@�>@�!@�@�O�A�J�B�F�C@�D@�E@�@�G@�H@�I@�1@�K@�L@�M@�N@�_@�P�U�Q@�R@�S@�T@�_@�V@�W@�X@�Y@.�@�[���\�{�]�l�^�g�_�c�`@�a@�b@�@�d@�e@�f@
@�h@�i@�j@�k@߫@�m�v�n�r�o@�p@�q@�1@�s@�t@�u@
@�w@�x@�y@�z@�!@�|���}���~���@��@��@�_@��@��@��@�_@��@��@��@��@�_@������@��@��@��@Q@��@��@��@��@�_@������������������@��@��@�1@��@��@��@�@��@��@��@��@
@������@��@��@��@�_@��@��@��@��@Q@������@������@��@��@�_@��@��@��@�@������@��@��@��@�_@��@��@��@��@�1@�������=���������������������@��@��@Q@��@��@��@Q@��@��@��@��@p@����������@��@��@�_@��@��@��@
@��@��@��@��@�_@��������������@��@��@�_@��@��@��@
@��@��@��@��@�_@�����@��@��@�@p@�@�@�@�@�@��"���	��
��@�@�
@
@�@�@�@�@@�@�@�@�@�@���@�@�@�@�_@�@�@� @�!@�O@�#�2�$�-�%�)�&@�'@�(@
@�*@�+@�,@
@�.@�/@�0@�1@Q@�3�8�4@�5@�6@�7@Q@�9@�:@�;@�<@�@�>�y�?�^�@�O�A�J�B�F�C@�D@�E@�@@�G@�H@�I@�1@�K@�L@�M@�N@�_@�P�Y�Q�U�R@�S@�T@Q@�V@�W@�X@�O@�Z@�[@�\@�]@�@�_�n�`�i�a�e�b@�c@�d@a@�f@�g@�h@�_@�j@�k@�l@�m@�!@�o�t�p@�q@�r@�s@�_@�u@�v@�w@�x@Q@�z���{���|���}���~@�@��@�_@��@��@��@�@@��@��@��@��@Q@������@��@��@��@�_@��@��@��@��@�@������@������@��@��@Q@��@��@��@�O@������@��@��@��@�!@��@��@��@��@�@�������������������������@��@��@�@��@��@��@�_@��@��@��@��@�@����������@��@��@
@��@��@��@�@@��@��@��@��@�_@��������������@��@��@Q@��@��@��@Q@��@��@��@��@�_@������@��@��@��@Q@��@��@��@��@�_@������������������@��@��@A@��@��@��@�1@��@��@��@��@�_@@����@��@��@��@�O@����
���@�@�@�_@�@�@�	@�@�@�@�
@�@�@���@�@�@�@�O@�@�@�@�@�_@��Q��;��,��'��#� @�!@�"@�_@�$@�%@�&@�1@�(@�)@�*@�+@p@�-�6�.�2�/@�0@�1@�_@�3@�4@�5@�@�7@�8@�9@�:@�_@�<�K�=�F�>�B�?@�@@�A@�O@�C@�D@�E@�@�G@�H@�I@�J@p@@�L�M@�N@�O@�P@�_@�R�m�S�b�T�]�U�Y�V@�W@�X@a@�Z@�[@�\@
@�^@�_@�`@�a@�!@�c�h�d@�e@�f@�g@�_@�i@�j@�k@�l@�@�n�}�o�x�p�t�q@�r@�s@�_@�u@�v@�w@�@�y@�z@�{@�|@�_@�~���@��@��@��@�_@��@��@��@��@�O@����������I���a��������������������������@��@��@�_@��@��@��@�_@��@��@��@��@�_@����������@��@��@�_@��@��@��@Q@��@��@��@��@Q@������@@����@��@��@�_@������@��@��@��@�_@��@��@��@��@
@������������������@��@��@�_@��@��@��@�_@��@��@��@��@Q@����������@��@��@�_@��@��@��@�O@��@��@��@��@�_@��������������@��@��@�@��@��@��@�_@��@��@��@��@�O@������@��@��@��@Q@��@��@��@��@�_@���.��������@���@�@�@Q@�@�@�@�1@�	�@�
�@�@�
@�1@�@�@�@�@�_@��#�����@�@�@�_@�@�@�@�@@�@� @�!@�"@Q@�$�)�%@�&@�'@�(@a@�*@�+@�,@�-@a@�/�J�0�?�1�:�2�6�3@�4@�5@߫@�7@�8@�9@�O@�;@�<@�=@�>@�1@�@�E�A@�B@�C@�D@�O@�F@�G@�H@�I@a@�K�V�L�Q@�M�N@�O@�P@2T@�R@�S@�T@�U@Q@�W�\�X@�Y@�Z@�[@Q@�]@�^@�_@�`@Q@�b���c���d�~�e�t�f�o�g�k�h@�i@�j@�_@�l@�m@�n@Q@�p@�q@�r@�s@�_@�u@�v�z�w@�x@�y@�_@�{@�|@�}@
@�������������@��@��@�@��@��@��@
@��@��@��@��@�_@������@��@��@��@A@��@��@��@��@�@������������������@��@��@k@��@��@��@
@��@��@��@��@�_@������@��@��@��@a@��@��@��@��@�_@������@������@��@��@��@������������������������������������8��������������������������������@��@��@߫@@����@��@��@��@�!@���������������������@��@��@a@��@��@��@
@��@��@��@��@�O@����������@��@��@Q@��@��@��@�O@��@��@��@��@�_@���
������@�@�@.�@�@�@�@�@�	@�
@�@�@Q@���@�@�@�@�@�@�@�@�@�@��3��(��#���@�@�_@� @�!@�"@߫@�$@�%@�&@�'@Q@�)�.�*@�+@�,@�-@
@�/@�0@�1@�2@�_@�4�C�5�>�6�:�7@�8@�9@�@�;@�<@�=@�O@�?@�@@�A@�B@�_@@�D�E@�F@�G@�H@�!@�J�#�K���L���M�l�N�]�O�X�P�T�Q@�R@�S@�@�U@�V@�W@
@�Y@�Z@�[@�\@�_@�^�g�_�c�`@�a@�b@�_@�d@�e@�f@�@�h@�i@�j@�k@�_@�m�x�n�s@�o�p@�q@�r@�O@�t@�u@�v@�w@�@�y�~�z@�{@�|@�}@�@@�@��@��@��@a@������������������@��@��@�N@��@��@��@�@��@��@��@��@�@����������@��@��@�_@��@��@��@�_@��@��@��@��@Q@��������������@��@��@�_@��@��@��@
@��@��@��@��@Q@������@��@��@��@�_@��@��@��@��@�@����������������@����@��@��@�1@��@��@��@��@�_@����������@��@��@Q@��@��@��@�O@��@��@��@��@�_@��������������@��@��@�_@��@��@��@�O@��@��@��@��@Q@������@��@��@��@p@��@��@��@��@a@���
�����@������@��@��@�_@��@�@�@�@���@�@�@�@�_@�	@�
@�@�@�_@�������@�@�@�_@�@�@�@�@�@�@�@�@�@@��@� @�!@�"@߫@�$���%�`�&�E�'�6�(�1�)�-�*@�+@�,@�@�.@�/@�0@Q@�2@�3@�4@�5@�_@�7�@�8�<�9@�:@�;@�_@�=@�>@�?@�@�A@�B@�C@�D@�1@�F�U�G�P�H�L�I@�J@�K@�_@�M@�N@�O@�_@�Q@�R@�S@�T@�@�V�[�W@�X@�Y@�Z@�_@�\@�]@�^@�_@�!@�a�|�b�q�c�l�d�h�e@�f@�g@Q@�i@�j@�k@�_@�m@�n@�o@�p@�O@�r�w�s@�t@�u@�v@�_@�x@�y@�z@�{@�_@�}���~�������@��@��@k@��@��@��@�O@��@��@��@��@�_@������@��@��@��@�1@��@��@��@��@�O@����������������������@��@��@2T@��@��@��@�1@��@��@��@��@�_@����������@��@��@�_@��@��@��@�@��@��@��@��@�@��������������@��@��@�@��@��@��@�1@��@��@��@��@Q@@����@��@��@��@�@������������������@��@��@
@��@��@��@
@��@��@��@��@�_@������@��@��@��@�@��@��@��@��@�_@��������������@��@��@�_@��@��@��@Q@��@��@��@��@�@�����@��@��@��@�_@�@�@�@�@�!@��������w�	�D�
�)�����
��@�@�@�_@�@�@�@Q@�@�@�@�@�_@��$�� �@�@�@�@�!@�"@�#@�O@�%@�&@�'@�(@�_@�*�9�+�4�,�0�-@�.@�/@�_@�1@�2@�3@�_@�5@�6@�7@�8@�_@�:�?�;@�<@�=@�>@�@�@@�A@�B@�C@�@�E�\�F�Q�G�L�H@�I@�J@�K@�@@�M@�N@�O@�P@߫@�R�W@�S�T@�U@�V@�O@�X@�Y@�Z@�[@
@�]�l�^�g�_�c�`@�a@�b@�@�d@�e@�f@�1@�h@�i@�j@�k@�@�m�r�n@�o@�p@�q@��@�s@�t@�u@�v@�_@�x���y���z���{���|���}@�~@�@��@��QQ��Q����Q��QQ����Q��Q��Q��Q��QQ����Q��QQ��2�Q��@��@��@�_@��@��@��@��@�_@����������@��@��@�_@��@��@��@�O@��@��@��@��@�_@��������@����@��@��@
@��@��@��@��@�_@������@��@��@��@
@��@��@��@��@�@@������������������@��@��@�@@��@��@��@�_@��@��@��@��@�@������@��@��@��@�_@��@��@��@��@
@��������������@��@��@�@��@��@��@�O@��@��@��@��@�@������@��@��@��@-�@��@��@��@��@�O@���e���3������	��������@��@��@�_@�@�@�@�_@�@�@�@�@�@�
����@�
@�@�_@�@�@�@�O@�@�@�@�@�_@��(��#���@�@�@�_@� @�!@�"@�_@�$@�%@�&@�'@Q@�)�.�*@�+@�,@�-@�@@�/@�0@�1@�2@�_@�4�J�5�D�6�?�7�;�8@�9@�:@�_@�<@�=@�>@�_@�@@�A@�B@�C@�_@�E@�F@�G@�H@�I@�_@�K�Z�L�U�M�Q�N@�O@�P@�@�R@�S@�T@�@�V@�W@�X@�Y@a@�[�`�\@�]@�^@�_@�_@�a@�b@�c@�d@�_@�f���g���h�r�i@�j�n�k@�l@�m@a@�o@�p@�q@�_@�s�|�t�x�u@�v@�w@�O@�y@�z@�{@
@�}@�~@�@��@�_@��������������@��@��@
@��@��@��@�_@��@��@��@��@�@������@��@��@��@Q@��@��@��@��@�1@������������������@��@��@p@��@��@��@Q@��@��@��@��@�_@������@��@��@��@�@��@��@��@��@�@��������������@��@��@�_@��@��@��@�O@��@��@��@��@�_@������@��@��@��@�@��@��@��@��@�_@�������H���
������������@����@��@��@�@��@��@��@��@�_@����������@��@��@�@��@��@��@�@��@��@��@��@�_@�������������@��@��@�_@��@��@��@�1@��@��@�@�@߫@���@�@�@�@�_@�	@�
@�@�@�!@��-�������@�@�@-�@�@�@�@�_@�@�@�@�@�_@��(� �$�!@�"@�#@�@�%@�&@�'@�_@�)@�*@�+@�,@�O@�.�=�/�8�0�4�1@�2@�3@�_@�5@�6@�7@
@�9@�:@�;@�<@�@�>�C�?@�@@�A@�B@�@�D@�E@�F@�G@�_@�I��J�d�K�U�L@�M�Q�N@�O@�P@�_@�R@�S@�T@�1@�V�_�W�[�X@�Y@�Z@�!@�\@�]@�^@�@�`@�a@�b@�c@�!@�e�t�f�o�g�k�h@�i@�j@�1@�l@�m@�n@�@�p@�q@�r@�s@�_@�u�z�v@�w@�x@�y@
@�{@�|@�}@�~@�O@������������������@��@��@�@��@��@��@�1@��@��@��@��@Q@������@��@��@��@�_@��@��@��@��@�_@��������������@��@��@�_@��@��@��@�1@��@��@��@��@�_@������@��@��@��@�_@��@��@��@��@�O@���P�������������@������@��@��@p@��@��@��@�_@����@����@��@��@
@��@��@��@��@�@�������������@��@��@��@����Q����QQ����Q��Q��Q��Q��QQ����QQ����Q������QQ2�����2�QQ2���Q��Q��Q��Q��Q��Q��Q��QQ����QQ����QQ����Q2�Q��@��@��@�_@��@��@��@�@�_@���@�@�@�@a@�@�	@�
@�@�@�
�_��_��_��_�����_��H�_��.9�_�X�������_�g�_.h���vɁ�b�_��5� �/�!�*�"�&�#@�$@�%@�@�'@�(@�)@�_@�+@�,@�-@�.@�O@@�0�1@�2@�3@�4@�@�6�E�7�@�8�<�9@�:@�;@A@�=@�>@�?@�@�A@�B@�C@�D@a@�F�K�G@�H@�I@�J@�_@�L@�M@�N@�O@�_@�Q���R�l�S�]�T@�U�Y�V@�W@�X@p@�Z@�[@�\@�@�^�g�_�c�`@�a@�b@Q@�d@�e@�f@�1@�h@�i@�j@�k@
@�m�|�n�w�o�s�p@�q@�r@�_@�t@�u@�v@�_@�x@�y@�z@�{@�O@@�}�~@�@��@��@�O@������������@����@��@��@�_@��@��@��@��@�_@������@��@��@��@�_@��@��@��@��@�_@��������������@��@��@�@��@��@��@�@��@��@��@��@�O@������@��@��@��@�_@��@��@��@��@�@���5���z�������(����������������������@��@��@�@��@��@��@�_@��@��@��@��@�_@����������@��@��@�_@��@��@��@�!@��@��@��@��@�_@������������az@��@��@��@�O@��@��@��@��@
@������@��@��@��@Q@��@��@��@��@�_@���
������@������@��@��@�_@��@��@��@�1@������@�@�@�_@�@�@�@�O@�	@�
@�@�@�_@�������@�@�@�@�@�@�@�1@�@�@�@�@�_@��#�@� @�!@�"@�_@�$@�%@�&@�'@�_@�)�`�*�I�+�:�,�5�-�1�.@�/@�0@Q@�2@�3@�4@
@�6@�7@�8@�9@�_@�;�D�<�@�=@�>@�?@
@�A@�B@�C@p@�E@�F@�G@�H@�_@�J�U�K�P@�L�M@�N@�O@�O@�Q@�R@�S@�T@�_@�V�[�W@�X@�Y@�Z@�@�\@�]@�^@�_@Q@�a�|�b�q�c�l�d�h�e@�f@�g@�@@�i@�j@�k@
@�m@�n@�o@�p@�@�r�w�s@�t@�u@�v@�@�x@�y@�z@�{@Q@�}���~�������@��@��@�_@��@��@��@�@��@��@��@��@a@������@��@��@��@�_@��@��@��@��@�@�������������������������@��@��@�1@��@��@��@
@��@��@��@��@�@����������@��@��@�_@��@��@��@p@��@��@��@��@�O@��������������@��@��@A@��@��@��@�@��@��@��@��@Q@������@��@��@��@�_@��@��@��@��@�@������������������@��@��@�@��@��@��@�!@��@��@��@��@�@������@��@��@��@�_@��@��@��@��@�O@�������������@��@��@Q@��@��@��@�1@��@��@��@��@�_@���@�@�@�@Q@�@�@�	@�
@Q@��C�
�(�������@�_��@�_@�@�@�@�_@�@�@�@�@�@��#@�� @�!@�"@�1@�$@�%@�&@�'@�_@�)�8�*�3�+�/�,@�-@�.@
@�0@�1@�2@Q@�4@�5@�6@�7@Q@�9�>�:@�;@�<@�=@�_@�?@�@@�A@�B@�_@�D�_�E�T�F�O�G�K�H@�I@�J@�O@�L@�M@�N@�@�P@�Q@�R@�S@�@�U�Z�V@�W@�X@�Y@�_@�[@�\@�]@�^@�@�`�o�a�j�b�f�c@�d@�e@�@�g@�h@�i@�@�k@�l@�m@�n@Q@�p�u�q@�r@�s@�t@�@�v@�w@�x@�y@�_@�{�R�|���}���~���������������@��@��@�_@��@��@��@�O@��@��@��@��@�_@����������@��@��@�_@��@��@��@�1@��@��@��@��@�_@������@������@��@��@�_@��@��@��@�_@������@��@��@��@�_@��@��@��@��@�_@������������������@��@��@�@��@��@��@�@��@��@��@��@�_@����������@��@��@�!@��@��@��@
@��@��@��@��@�O@��������������@��@��@�_@��@��@��@
@��@��@��@��@�@@@����@��@��@��@�_@���%���
��������������@��@��@�@��@��@��@Q@��@��@��@��@Q@��������@��@�@�_@�@�@�@
@�@�@�@�	@�O@�����
��@�@�@�@�@�@�@�_@�@�@�@�@�_@�� �@�@�@�@�_@�!@�"@�#@�$@�@�&�<�'�6�(�1�)�-�*@�+@�,@�_@�.@�/@�0@�@�2@�3@�4@�5@�_@@�7�8@�9@�:@�;@�@�=�L�>�G�?�C�@@�A@�B@�_@�D@�E@�F@�@�H@�I@�J@�K@�_@@�M�N@�O@�P@�Q@�_@�S���T���U�t�V�e�W�`�X�\�Y@�Z@�[@�@�]@�^@�_@�@�a@�b@�c@�d@Q@�f�o�g�k�h@�i@�j@�_@�l@�m@�n@
@�p@�q@�r@�s@�_@�u���v��w�{�x@�y@�z@�_@�|@�}@�~@�O@��@��@��@��@�_@������@��@��@��@�@��@��@��@��@�_@������������������@��@��@�_@��@��@��@�O@��@��@��@��@�_@������@��@��@��@�_@��@��@��@��@�@��������@����@��@��@k@��@��@��@��@�_@������@��@��@��@�_@��@��@��@��@�1@����������������������@��@��@1@��@��@��@�@��@��@��@��@߫@����������@��@��@�_@��@��@��@
@��@��@��@��@�_@��������������@��@��@a@��@��@��@Q@��@��@��@��@�_@������@��@��@��@�@��@��@��@��@�_@�������
���@�@�@Q@�@�@�	@�1@�@�@�
@�@Q@���@�@�@�@
@�@�@�@�@�_@��*��%��!�@�@� @�O@�"@�#@�$@�_@�&@�'@�(@�)@�O@�+�0�,@�-@�.@�/@�_@�1@�2@�3@�4@�_@�6���7��8���9�o�:�Y�;�J�<�E�=�A�>@�?@�@@�@@�B@�C@�D@
@�F@�G@�H@�I@�_@�K�T�L�P�M@�N@�O@�_@�Q@�R@�S@�O@�U@�V@�W@�X@�_@�Z�i�[�d�\�`�]@�^@�_@�_@�a@�b@�c@Q@�e@�f@�g@�h@�@@�j�k@�l@�m@�n@�_@�p���q�w�r@�s@�t@�u@�v@�_@�x���y�}�z@�{@�|@�@@�~@�@��@�O@��@��@��@��@�_@����������@��@��@��@�@��@��@��@��@�!@@����@��@��@��@�@����������������������@��@��@a@��@��@��@Q@��@��@��@��@�_@����������@��@��@�_@��@��@��@�O@��@��@��@��@�@��������������@��@��@߫@��@��@��@�O@��@��@��@��@�_@������@��@��@��@�_@��@��@��@��@�_@������������������@��@��@�_@��@��@��@�1@��@��@��@��@�_@������@��@��@��@�_@��@��@��@��@�@�������������@��@��@��@��@��@��@�O@��@��@��@��@߫@���@�@�@�@�_@�@�@�	@�
@�_@��z�
�H��-�������@�@�@�_@�@�@�@�@�@�@�@�@A@��(� �$�!@�"@�#@�_@�%@�&@�'@Q@�)@�*@�+@�,@�_@�.�=�/�8�0�4�1@�2@�3@�_@�5@�6@�7@�@�9@�:@�;@�<@
@�>�C�?@�@@�A@�B@�!@�D@�E@�F@�G@�O@�I�d�J�Y�K�T�L�P�M@�N@�O@Q@�Q@�R@�S@�@�U@�V@�W@�X@�!@�Z�_�[@�\@�]@�^@�_@�`@�a@�b@�c@�_@�e�o�f@�g�k�h@�i@�j@�_@�l@�m@�n@�1@�p�u�q@�r@�s@�t@
@�v@�w@�x@�y@�_@�{���|���}���~�������@��@��@�_@��@��@��@�1@��@��@��@��@�_@����������@��@��@�O@��@��@��@�@��@��@��@��@�_@��������������@��@��@p@��@��@��@�1@��@��@��@��@Q@������@��@��@��@�_@��@��@��@��@�_@������������������@��@��@�_@��@��@��@�1@��@��@��@��@�_@������@��@��@��@�_@��@��@��@��@
@��������������@��@��@a@��@��@��@
@��@��@��@��@
@������@��@��@��@�_@��@��@��@��@��@�������b���+����������������@��@��@
@��@��@��@�@��@��@��@�@�O@�����@�@�@�_@�@�	@�
@�1@�@�
@�@�@�_@�� �����@�@�@�_@�@�@�@�@�@�@�@�@�1@�!�&�"@�#@�$@�%@�_@�'@�(@�)@�*@�_@�,�G�-�<�.�7�/�3�0@�1@�2@A@�4@�5@�6@�1@�8@�9@�:@�;@�@@�=�B�>@�?@�@@�A@�_@�C@�D@�E@�F@�!@�H�W�I�R�J�N�K@�L@�M@
@�O@�P@�Q@�!@�S@�T@�U@�V@�_@�X�]�Y@�Z@�[@�\@�_@�^@�_@�`@�a@Q@�c���d���e�t�f�o�g�k�h@�i@�j@�@�l@�m@�n@�1@�p@�q@�r@�s@Q@�u�~�v�z�w@�x@�y@�_@�{@�|@�}@a@�@��@��@��@�_@��������������@��@��@�@��@��@��@�1@��@��@��@��@Q@��@��@��@��@��@�_@������������������@��@��@Q@��@��@��@�1@��@��@��@��@�_@������@��@��@��@Q@��@��@��@��@�_@��������������@��@��@�@��@��@��@�@��@��@��@��@�O@������@��@��@��@߫@��@��@��@��@�@���D����������������@����@��@��@
@��@��@��@��@�@����������@��@��@�_@��@��@��@
@��@��@��@��@�O@����@����@��@��@��@Q@@����@��@��@��@Q@�������������@�@�@�_@�@�@�@�1@�@�	@�
@�@
@�
��@�@�@�@�_@�@�@�@�@�@@��9��"���@�@�@�!@�@� @�!@�1@�#@�$@�%@�&@�'@�(��)��*��+��,��-��.��/��0��1��2��3���4�5�7��6�����8���-r�:�?�;@�<@�=@�>@�_@�@@�A@�B@�C@�_@�E�w�F�e�G�V�H�Q�I�M�J@�K@�L@�_@�N@�O@�P@a@�R@�S@�T@�U@�_@�W�`�X�\�Y@�Z@�[@�_@�]@�^@�_@�O@�a@�b@�c@�d@�O@�f�q�g�l�h@�i@�j@�k@�_@�m@�n@�o@�p@�_@�r@�s@�t@�u@�v@�@�x���y��z@@�{�|@�}@�~@�O@@����@��@��@��@�@��������������@��@��@�_@��@��@��@�@��@��@��@��@�_@������@��@��@��@a@��@��@��@��@�_@�����Ĵ������e�����������������������������@��@��@�_@��@��@��@�_@��@��@��@��@�_@����������@��@��@�@��@��@��@
@��@��@��@��@a@��������������@��@��@�_@��@��@��@�1@��@��@��@��@�_@������@��@��@��@�_@��@��@��@��@
@�����������������@��@��@
@��@��@��@�_@��@��@��@��@�_@����������@��@��@Q@��@��@��@Q@��@��@�@�@�!@����	�@�@�@�@Q@�
@�@�@�
@�_@���@�@�@�@�@�@�@�@�@�_@��P��5��&�@��"�@� @�!@�@�#@�$@�%@�@�'�0�(�,�)@�*@�+@Q@�-@�.@�/@�!@�1@�2@�3@�4@Q@�6�E�7�@�8�<�9@�:@�;@
@�=@�>@�?@�O@�A@�B@�C@�D@�_@�F�K�G@�H@�I@�J@�_@�L@�M@�N@�O@�_@�Q�l�R�a�S�\�T�X�U@�V@�W@�@�Y@�Z@�[@�@�]@�^@�_@�`@Q@�b�g�c@�d@�e@�f@�O@�h@�i@�j@�k@�_@�m�|�n�w�o�s�p@�q@�r@�_@�t@�u@�v@Q@�x@�y@�z@�{@Q@�}���~@�@��@��@�_@��@��@��@��@�_@��������������������������@��@��@�O@��@��@��@�_@��@��@��@��@�@����������@��@��@�_@��@��@��@�O@��@��@��@��@�@��������������@��@��@�_@��@��@��@�1@��@��@��@��@�@������@��@��@��@�O@��@��@��@��@�O@������������������@��@��@�_@��@��@��@�_@��@��@��@��@�@������@��@��@��@Q@��@��@��@��@�_@��������������@��@��@�O@��@��@��@�@��@��@��@��@Q@@����@��@��@��@�O@���2���������������@��@��@�/@�@�@�@�@�@�@�@�@�_@�	��
��@�@�
@�_@�@�@�@�@�@�@�@�@�_@��'��"���@�@�@�_@�@� @�!@�@�#@�$@�%@�&@�_@�(�-�)@�*@�+@�,@a@�.@�/@�0@�1@�_@�3�J�4�?�5�:@�6�7@�8@�9@�1@�;@�<@�=@�>@�@@�@�E�A@�B@�C@�D@�_@�F@�G@�H@�I@�_@�K�Z�L�U�M�Q�N@�O@�P@A@�R@�S@�T@a@�V@�W@�X@�Y@�O@�[�`�\@�]@�^@�_@�@�a@�b@�c@�d@�@�f�C�g���h���i���j�y�k�t�l�p�m@�n@�o@�@�q@�r@�s@�@�u@�v@�w@�x@�@�z���{��|@�}@�~@�@��@��@��@�@��@��@��@��@Q@��������������@��@��@�@��@��@��@�@��@��@��@��@�_@������@��@��@��@�_@��@��@��@��@�1@������������������@��@��@�_@��@��@��@�1@��@��@��@��@�!@����������@��@��@Q@��@��@��@�@��@��@��@��@߫@��������������@��@��@�O@��@��@��@�1@��@��@��@��@�_@������@��@��@��@a@��@��@��@��@Q@���������������@����@��@��@�@��@��@��@��@�_@����������@��@��@�_@��@��@��@�_@��@��@��@��@�_@�����������@�@�@�_@�@�@�@
@�@�@�	@�
@�@@��
@�@�@�@�_@��(��"�����@�@�@�O@�@�@�@�1@�@�@� @�!@�@@�#�$@�%@�&@�'@�_@�)�8�*�3�+�/�,@�-@�.@�O@�0@�1@�2@
@�4@�5@�6@�7@�!@�9�>�:@�;@�<@�=@�_@�?@�@@�A@�B@�@�D���E�|�F�a�G�R�H�M@�I�J@�K@�L@�@�N@�O@�P@�Q@�@�S�\�T�X�U@�V@�W@�_@�Y@�Z@�[@�@�]@�^@�_@�`@�_@�b�q�c�l�d�h�e@�f@�g@߫@�i@�j@�k@�@�m@�n@�o@�p@�O@�r�w�s@�t@�u@�v@�_@�x@�y@�z@�{@�_@�}���~�����������@��@��@�_@��@��@��@�_@��@��@��@��@�1@������@��@��@@��@a��@��@��@��@�_@������@������@��@��@2T@��@��@��@�O@������@��@��@��@�_@��@��@��@��@p@��������������@������@��@��@Q@��@��@��@�@����������@��@��@Q@��@��@��@�O@��@��@��@��@�!@������@������@��@��@�!@��@��@��@�@������@��@��@��@p@��@��@��@��@�_@������������@����@��@��@�_@��@��@��@��@a@������@��@��@��@�_@��@��@��@��@�_@������������@��@��@�@�@�@�@�_@�@�@�@�@�_@�	��
@�@�@�
@�_@�@�@�@�@�_@�����������R��7��(��#���@�@�@�_@� @�!@�"@�_@�$@�%@�&@�'@�_@�)�2�*�.�+@�,@�-@�1@�/@�0@�1@Q@�3@�4@�5@�6@�O@�8�G�9�B�:�>�;@�<@�=@a@�?@�@@�A@
@�C@�D@�E@�F@.�@�H�M�I@�J@�K@�L@�_@�N@�O@�P@�Q@�_@�S�r�T�c�U�^�V�Z�W@�X@�Y@�_@�[@�\@�]@�O@�_@�`@�a@�b@�_@�d�m�e�i�f@�g@�h@�@�j@�k@�l@�1@�n@�o@�p@�q@a@�s�~�t�y@�u�v@�w@�x@�O@�z@�{@�|@�}@Q@�����@��@��@��@�_@��@��@��@��@Q@����������������������@��@��@�@��@��@��@
@��@��@��@��@�_@����������@��@��@�_@��@��@��@�O@��@��@��@��@�O@��������������@��@��@�_@��@��@��@�@��@��@��@��@�@������@��@��@��@�_@��@��@��@��@�!@����������@������@��@��@�_@��@��@��@�O@������@��@��@��@a@��@��@��@��@.�@��������������@��@��@Q@��@��@��@�_@��@��@��@��@�_@������@��@��@��@�_@��@��@��@��@�_@���b���4������
��������@��@�@p@�@�@�@�O@�@�@�@�	@�_@�����
@�@�@�_@�@�@�@�@�@�@�@�@�O@��)��$�� �@�@�@�_@�!@�"@�#@�@�%@�&@�'@�(@�_@�*�/�+@�,@�-@�.@�_@�0@�1@�2@�3@�O@�5�K�6�E�7�@�8�<�9@�:@�;@�_@�=@�>@�?@�@�A@�B@�C@�D@�_@@�F�G@�H@�I@�J@�_@�L�W�M�R@�N�O@�P@�Q@߫@�S@�T@�U@�V@�_@�X�]�Y@�Z@�[@�\@Q@�^@�_@�`@�a@�@@�cš�d��e�p�f�k�g@�h@�i@�j@k@�l@�m@�n@�o@�_@�q�z�r�v�s@�t@�u@�1@�w@�x@�y@
@�{@�|@�}@�~@�_@€Š‚†ƒ@„@…@�_@‡@ˆ@‰@�@‹@Œ@@Ž@�@•‘@’@“@”@߫@–@—@˜@™@�@@›­œ§¢@žŸ@ @¡@�@£@¤@¥@¦@�_@¨@©@ª@«@¬@�_@®½¯¸°´±@²@³@�_@µ@¶@·@�!@¹@º@»@¼@�@¾��¿@�@�@��@�@��@��@��@��@�_@�������r���?���)������������@��@��@�_@��@��@��@��@�������Q��Q����Q��Q����Q�rQ����Q�N2�����������Q�������r�r�N��Q2��n��Q����2����������������r2������Q��Q2������2��r��Q�Q�rQ�Q�Q�Q�rQ�Q�����Q��Q�Q�Q�Q��Q�	��
Q�Q��
���r2�������c�T���Q�Q�Q2��n�@�@�@�@�_@��$�� �@�@�@�@�!@�"@�#@�_@�%@�&@�'@�(@�_@�*�4�+@�,�0�-@�.@�/@A@�1@�2@�3@�@�5�:�6@�7@�8@�9@�_@�;@�<@�=@�>@Q@�@�[�A�L�B�G@�C�D@�E@�F@2T@�H@�I@�J@�K@�@�M�V�N�R�O@�P@�Q@�_@�S@�T@�U@�_@�W@�X@�Y@�Z@
@�\�g�]�b@�^�_@�`@�a@�@�c@�d@�e@�f@�@@�h�m�i@�j@�k@�l@�_@�n@�o@�p@�q@�O@�sé�tÓ�uÄ�v��w�{�x@�y@�z@A@�|@�}@�~@�@À@Á@Â@Ã@�_@ÅÎÆÊÇ@È@É@A@Ë@Ì@Í@�O@Ï@Ð@Ñ@Ò@�_@ÔÞÕ@ÖÚ×@Ø@Ù@�O@Û@Ü@Ý@�1@ßäà@á@â@ã@�@å@æ@ç@è@a@ê�ëöìñ@íî@ï@ð@�1@ò@ó@ô@õ@�@÷üø@ù@ú@û@�_@ý@þ@ÿ@�@Q@��������������@��@��@�_@��@��@��@�_@��@��@��@��@�!@������@��@��@��@Q@��@��@��@��@�_@���K��������������������@��@��@�_@��@��@��@�_@��@��@��@��@�@��������@��@��@�_@�@�@�@Q@�@�@�@�@�1@����	���@�@�@�_@�@�@�@�@�
@�@�@�
@�@�@�@�@�@�@��@��0��%�� ���@�@�@�@�@�@�@�_@�!@�"@�#@�$@�_@�&�+�'@�(@�)@�*@a@�,@�-@�.@�/@
@�1�@�2�;�3�7�4@�5@�6@�@�8@�9@�:@�@�<@�=@�>@�?@�_@�A�F�B@�C@�D@�E@�@�G@�H@�I@�J@�_@�LĂ�M�g�N�]�O�X�P�T�Q@�R@�S@�_@�U@�V@�W@�@�Y@�Z@�[@�\@�_@�^@�_�c�`@�a@�b@߫@�d@�e@�f@�@�h�w�i�r�j�n�k@�l@�m@Q@�o@�p@�q@
@�s@�t@�u@�v@�_@�x�}�y@�z@�{@�|@�@�~@�@Ā@ā@Q@ăĞĄēąĎĆĊć@Ĉ@ĉ@�_@ċ@Č@č@�O@ď@Đ@đ@Ē@k@Ĕęĕ@Ė@ė@Ę@�_@Ě@ě@Ĝ@ĝ@�_@ğĮĠĩġĥĢ@ģ@Ĥ@�@Ħ@ħ@Ĩ@�O@Ī@ī@Ĭ@ĭ@�!@@įİ@ı@IJ@ij@Q@ĵ�{Ķƙķŕĸ�*Ĺ��ĺ��Ļ��ļ��Ľ�ľ@Ŀ@�@��@��@��@��@�@��@��@��@��@�_@����������@��@��@�!@��@��@��@�O@��@��@��@��@�O@��������������@��@��@�_@��@��@��@Q@��@��@��@��@�@������@��@��@��@�_@��@��@��@��@�_@���������@�@�@Q@�@�@�@�1@�@�@�@�@�_@�����@�	@�
@�O@�@�
@�@�@@�@�@�@�@�_@��$�����@�@�@�1@�@�@�@�O@� @�!@�"@�#@�_@@�%�&@�'@�(@�)@�_@�+�b�,�K�-�<�.�7�/�3�0@�1@�2@1@�4@�5@�6@�@�8@�9@�:@�;@�_@�=�F�>�B�?@�@@�A@�@�C@�D@�E@a@�G@�H@�I@�J@�_@�L�W�M�R�N@�O@�P@�Q@�1@�S@�T@�U@�V@�@�X�]�Y@�Z@�[@�\@Q@�^@�_@�`@�a@�1@�c�z�d�o�e�j@�f�g@�h@�i@�!@�k@�l@�m@�n@�@�p�u�q@�r@�s@�t@�_@�v@�w@�x@�y@�!@�{Ŋ�|Ņ�}Ł�~@�@ŀ@߫@ł@Ń@ń@�O@ņ@Ň@ň@ʼn@�_@ŋŐŌ@ō@Ŏ@ŏ@�_@ő@Œ@œ@Ŕ@�@Ŗ�&ŗ��Ř��ř��Ś�śşŜ@ŝ@Ş@�@Š@š@Ţ@ţ@�Ťť�Ŧ��ŧŨ�ũ�Ū�ūŸŬ�ŭ�Ůų�ůŰ�ű��Ų����Ŵ�ŵŶ�ŷ�����Źź�Ż��żŽ�ž�ſ�����@��@��@��@A@����������@��@��@�_@��@��@��@�O@��@��@��@��@�_@��������������@��@��@�_@��@��@��@�@@��@��@��@��@�@������@��@��@��@�_@��@��@��@��@�!@��������������@�@�@�_@�@�@�@Q@�@�@�@�@�_@���@�@�@�@�_@�@�@�	@�
@�@���
����@�@�@�/@�@�@�@�!@�@�@�@�@Q@��!�@�@�@� @�O@�"@�#@�$@�%@�_@�'�b�(�G�)�8�*�3�+�/�,@�-@�.@�_@�0@�1@�2@�1@�4@�5@�6@�7@�_@�9�B�:�>�;@�<@�=@�1@�?@�@@�A@�1@�C@�D@�E@�F@�@�H�W�I�R�J�N�K@�L@�M@�_@�O@�P@�Q@
@�S@�T@�U@�V@�_@�X�]�Y@�Z@�[@�\@�@�^@�_@�`@�a@�@�c�~�d�s�e�n�f�j�g@�h@�i@a@�k@�l@�m@
@�o@�p@�q@�r@�@�t�y�u@�v@�w@�x@�O@�z@�{@�|@�}@�O@�ƎƀƉƁƅƂ@ƃ@Ƅ@�_@Ɔ@Ƈ@ƈ@�_@Ɗ@Ƌ@ƌ@ƍ@�@@ƏƔƐ@Ƒ@ƒ@Ɠ@�_@ƕ@Ɩ@Ɨ@Ƙ@�@ƚ�~ƛ�Ɯ��ƝƴƞƩƟƤ@Ơơ@Ƣ@ƣ@�O@ƥ@Ʀ@Ƨ@ƨ@�@ƪƯ@ƫƬ@ƭ@Ʈ@�@ư@Ʊ@Ʋ@Ƴ@�_@Ƶ��ƶƿƷƻƸ@ƹ@ƺ@�_@Ƽ@ƽ@ƾ@�_@�@�@��@��@�@������@��@��@��@A@��@��@��@��@�_@������������������@��@��@�_@��@��@��@�O@��@��@��@��@�_@����@����@��@��@�1@��@��@��@��@Q@������������@��@��@Q@��@��@�@�@�@�@�@�@�@���@�@�@�@�_@�@�@�@�@Q@��B��'�	��
����@�
@�@Q@�@�@�@�_@�@�@�@�@�@��"���@�@�@�_@�@� @�!@2T@�#@�$@�%@�&@�_@�(�7�)�2�*�.�+@�,@�-@�@�/@�0@�1@�_@�3@�4@�5@�6@�_@�8�=�9@�:@�;@�<@�_@�>@�?@�@@�A@�@�C�^�D�S�E�N�F�J�G@�H@�I@�1@�K@�L@�M@�@�O@�P@�Q@�R@
@�T�Y�U@�V@�W@�X@Q@�Z@�[@�\@�]@�@�_�s�`�e@�a�b@�c@�d@
@�f@�g@�h@�i@�j@�k�O�l�O�m�n�OȚ�o�O�p�O�q�O�r�O..)�t�y�u@�v@�w@�x@�@�z@�{@�|@�}@�@��ǀǷǁǜǂǍǃLj@DŽDž@dž@LJ@�@lj@NJ@Nj@nj@�_@ǎǗǏǓǐ@Ǒ@ǒ@߫@ǔ@Ǖ@ǖ@�@ǘ@Ǚ@ǚ@Ǜ@�@ǝǬǞǧǟǣǠ@ǡ@Ǣ@�O@Ǥ@ǥ@Ǧ@�@Ǩ@ǩ@Ǫ@ǫ@�_@ǭDzǮ@ǯ@ǰ@DZ@a@dz@Ǵ@ǵ@Ƕ@�1@Ǹ��ǹ��Ǻ��ǻǿǼ@ǽ@Ǿ@�_@�@�@��@�_@��@��@��@��@�_@������@��@��@��@�@��@��@��@��@
@������������@��@��@��@��߫��߫��߫��߫��߫��߫��߫��߫��߫������߫������߫��߫��߫��߫��߫߫��߫���M߫߫����߫߫����߫��߫߫���@�@�@�_@�@�@�@�@�_@���@�@�@�@�_@�@�@�@�@�@�	�D�
�)�����
��@�@�@�_@�@�@�@�!@�@�@�@�@�@��$�� �@�@�@߫@�!@�"@�#@�1@�%@�&@�'@�(@�@�*�9�+�4�,�0�-@�.@�/@�_@�1@�2@�3@�O@�5@�6@�7@�8@�O@�:�?�;@�<@�=@�>@a@�@@�A@�B@�C@
@�E�`�F�U�G�P�H�L�I@�J@�K@�_@�M@�N@�O@
@�Q@�R@�S@�T@�_@�V�[�W@�X@�Y@�Z@�@�\@�]@�^@�_@�@�a�p�b�k�c�g�d@�e@�f@�!@�h@�i@�j@�O@�l@�m@�n@�o@�_@�q�v�r@�s@�t@�u@�_@�w@�x@�y@�z@�_@�|�;�}�f�~���ȀțȁȐȂȋȃȇȄ@ȅ@Ȇ@�O@Ȉ@ȉ@Ȋ@�_@Ȍ@ȍ@Ȏ@ȏ@�_@ȑȖ@Ȓȓ@Ȕ@ȕ@�O@ȗ@Ș@ș@Ț@�@ȜȫȝȦȞȢȟ@Ƞ@ȡ@A@ȣ@Ȥ@ȥ@�1@ȧ@Ȩ@ȩ@Ȫ@�_@@Ȭȭ@Ȯ@ȯ@Ȱ@ȱ@Ȳ��ȳ�ȴ�ȵȶ�ȷ�ȸ�ȹ�Ⱥ�Ȼ�ȼ�Ƚ�Ⱦ�ȿ���������������@������@��@��@�@��@��@��@Q@����������@��@��@�@��@��@��@�!@��@��@��@��@
@��������������@��@��@Q@��@��@��@�@��@��@��@��@�!@������@��@��@��@Q@��@��@�@�@�O@��3����	�����@�@�@2T@�@�@�@�_@�@�@�@�@�_@�
����@�
@�@�!@�@�@�@�_@�@�@�@�@�_@��(��#���@�@�@Q@� @�!@�"@�1@�$@�%@�&@�'@�O@�)�.�*@�+@�,@�-@�@�/@�0@�1@�2@�_@�4�K�5�@�6�;�7@�8@�9@�:@�!@�<@�=@�>@�?@�@�A�F�B@�C@�D@�E@��@�G@�H@�I@�J@�_@�L�[�M�V�N�R�O@�P@�Q@�_@�S@�T@�U@�@�W@�X@�Y@�Z@�O@�\�a�]@�^@�_@�`@Q@�b@�c@�d@�e@�@�g���hɣ�iɈ�j�y�k�t�l�p�m@�n@�o@
@�q@�r@�s@�_@�u@�v@�w@�x@�@�zɃ�{��|@�}@�~@�@ɀ@Ɂ@ɂ@�_@Ʉ@Ʌ@Ɇ@ɇ@
@ɉɘɊɓɋɏɌ@ɍ@Ɏ@Q@ɐ@ɑ@ɒ@�O@ɔ@ɕ@ɖ@ɗ@�_@əɞɚ@ɛ@ɜ@ɝ@�@ɟ@ɠ@ɡ@ɢ@�@@ɤɺɥɴɦɯɧɫɨ@ɩ@ɪ@
@ɬ@ɭ@ɮ@�@ɰ@ɱ@ɲ@ɳ@�_@@ɵɶ@ɷ@ɸ@ɹ@�@ɻ��ɼ�@ɽɾ@ɿ@�@�O@��@��@��@��@�O@@����@��@��@��@�_@�����������������@��@��@��@�_@��@��@��@��@�_@����������@��@��@��@��@��@��@�@��@��@��@��@Q@�������������@��@��@�_@��@��@��@�_@�@�@�@�@�_@���@�@�@�@�_@�@�@�@�@a@�� �������	@�
@�@a@�
@�@�@߫@�@�@�@�@A@���@�@�@�@�_@�@�@�@�@�@@�!�0�"�+�#�'�$@�%@�&@�@�(@�)@�*@�@�,@�-@�.@�/@�_@�1�6�2@�3@�4@�5@�_@�7@�8@�9@�:@�O@�<�*�=ʼ�>�y�?�^�@�O�A�J�B�F�C@�D@�E@�@�G@�H@�I@�_@�K@�L@�M@�N@�@�P�Y�Q�U�R@�S@�T@߫@�V@�W@�X@�O@�Z@�[@�\@�]@�@@�_�n�`�i�a�e�b@�c@�d@�_@�f@�g@�h@�_@�j@�k@�l@�m@�!@�o�t�p@�q@�r@�s@�_@�u@�v@�w@�x@�_@�zʕ�{ʊ�|ʅ�}ʁ�~@�@ʀ@�_@ʂ@ʃ@ʄ@�@@ʆ@ʇ@ʈ@ʉ@�!@ʋʐʌ@ʍ@ʎ@ʏ@�@ʑ@ʒ@ʓ@ʔ@�_@ʖʡʗʜ@ʘʙ@ʚ@ʛ@�1@ʝ@ʞ@ʟ@ʠ@Q@ʢʷʣ@ʤ@ʥ@ʦ@ʧ@�Oʨʩ�Oʪ�O�Oʫʬʱʭʮ�O�^ʯʰ�^.	.)�Oʲʵʳʴ�O�^.	�O�Oʶ�^�Oʸ@ʹ@ʺ@ʻ@Q@ʽ��ʾ��ʿ����������@��@��@�@@��@��@��@�1@��@��@��@��@�_@��@������@��@��@�_@��@��@��@�O@��������������@��@��@�_@��@��@��@�O@��@��@��@��@Q@������@��@��@��@�_@��@��@��@��@Q@����������@�@�@�_@�@�@�@�_@�@�@�@�@�_@��
�@�@�@�	@�_@�@�@�
@�@�_@�������@�@�@
@�@�@�@�_@�@�@�@�@�@� �%�!@�"@�#@�$@�@�&@�'@�(@�)@�O@�+˙�,�g�-�L�.�=�/�8�0�4�1@�2@�3@�_@�5@�6@�7@�_@�9@�:@�;@�<@�@�>�G�?�C�@@�A@�B@�O@�D@�E@�F@�O@�H@�I@�J@�K@a@�M�\�N�W�O�S�P@�Q@�R@�O@�T@�U@�V@�_@�X@�Y@�Z@�[@Q@�]�b�^@�_@�`@�a@�_@�c@�d@�e@�f@�!@�h˃�i�x�j�s�k�o�l@�m@�n@�_@�p@�q@�r@a@�t@�u@�v@�w@Q@�y�~�z@�{@�|@�}@�_@�@ˀ@ˁ@˂@�O@˄˓˅ˎˆˊˇ@ˈ@ˉ@߫@ˋ@ˌ@ˍ@2T@ˏ@ː@ˑ@˒@�@@˔˕@˖@˗@˘@Q@˚��˛˺˜˫˝˦˞ˢ˟@ˠ@ˡ@�_@ˣ@ˤ@˥@�_@˧@˨@˩@˪@�_@ˬ˵˭˱ˮ@˯@˰@�_@˲@˳@˴@�@˶@˷@˸@˹@Q@˻��˼�@˽˾@˿@�@�_@��@��@��@��@�_@������@��@��@��@�_@��@��@��@��@�@@��������������@��@��@��@�_@��@��@��@��@�@������@��@��@��@�@@��@��@��@��@�@@�������@����@��@��@�@��@��@��@��@�O@���@�@�@�@�@�@�@�@�@
@���π�ͻ�����j��8��"���	��
��@�@�
@
@�@�@�@�1@�@�@�@�@�_@��@��@�@�@�O@�@�@� @�!@�_@�#�-�$@�%�)�&@�'@�(@�_@�*@�+@�,@
@�.�3�/@�0@�1@�2@�_@�4@�5@�6@�7@�_@�9�O�:�E�;�@�<@�=@�>@�?@�!@�A@�B@�C@�D@Q@�F@�G�K�H@�I@�J@�_@�L@�M@�N@�@�P�_�Q�Z�R�V�S@�T@�U@Q@�W@�X@�Y@�_@�[@�\@�]@�^@
@�`�e�a@�b@�c@�d@�_@�f@�g@�h@�i@�_@�k̦�l̋�m�|�n�w�o�s�p@�q@�r@�@�t@�u@�v@
@�x@�y@�z@�{@�@�}̆�~̂�@̀@́@�@̃@̄@̅@�1@̇@̈@̉@̊@�1@̛̖̌̍̎̒̏@̐@̑@�@̓@̔@̕@
@̗@̘@̙@̚@Q@̡̜̝@̞@̟@̠@�@̢@̣@̤@̥@
@̧��̷̨̩̲̪̮̫@̬@̭@�@@̯@̰@̱@�@̳@̴@̵@̶@�@̸̹̽@̺@̻@̼@�_@̾@̿@�@�@�_@��������@����@��@��@�O@��@��@��@��@�@������@��@��@��@a@��@��@��@��@�O@���H��������������������@��@��@�_@��@��@��@�O@��@��@��@��@�@���������@��@��@�_@��@��@�@�!@�@�@�@�@�O@�������@�@�@�_@�@�@�@�_@�@�@�	@�
@�_@@��
@�@�@�@�_@��-��"�����@�@�@�_@�@�@�@�@�@�@� @�!@�_@�#�(�$@�%@�&@�'@�@@�)@�*@�+@�,@߫@�.�=�/�8�0�4�1@�2@�3@�_@�5@�6@�7@
@�9@�:@�;@�<@a@�>�C�?@�@@�A@�B@�@�D@�E@�F@�G@�_@�Ḯ�J�i�K�Z�L�U�M�Q�N@�O@�P@Q@�R@�S@�T@�@�V@�W@�X@�Y@�_@�[�d�\�`�]@�^@�_@�_@�a@�b@�c@�@�e@�f@�g@�h@�O@�j�y�k�t�l�p�m@�n@�o@�/@�q@�r@�s@Q@�u@�v@�w@�x@�_@�z��{@�|@�}@�~@�_@̀@́@͂@̓@p@͕͇͈͉͆͐͌͠ͅ@͊@͋@-�@͍@͎@͏@�@͑@͒@͓@͔@�@͖͛͗@͘@͙@͚@�_@͜@͝@͞@͟@�_@͡Ͱͫͣͧͤ͢@ͥ@ͦ@�_@ͨ@ͩ@ͪ@
@ͬ@ͭ@ͮ@ͯ@�_@ͱͶͲ@ͳ@ʹ@͵@a@ͷ@͸@͹@ͺ@�1@ͼγͽ�@;�	Ϳ��������������@��@��@�@@��@��@��@�1@��@��@��@��@߫@����������@��@��@�@@��@��@��@�@��@��@��@��@�_@�����������@��@��@��@��a��a��a��a��a��a��a��a��a��a��a��a��a��a��a�a�@�@�@�1@�@�@�@�@Q@���@�@�@�@�_@�@�@�@�@�O@�
�%����@�
�@�@�@Q@�@�@�@�@�_@�� ���@�@�@�@�@�@�@Q@�!@�"@�#@�$@�O@�&�5�'�0�(�,�)@�*@�+@Q@�-@�.@�/@�_@�1@�2@�3@�4@Q@�6�;�7@�8@�9@�:@�_@�<@�=@�>@�?@�@�A�|�B�a�C�R�D�M�E�I�F@�G@�H@�_@�J@�K@�L@
@�N@�O@�P@�Q@�@�S�\�T�X�U@�V@�W@�_@�Y@�Z@�[@�@�]@�^@�_@�`@�O@�b�q�c�l�d�h�e@�f@�g@Q@�i@�j@�k@�@@�m@�n@�o@�p@�O@�r�w�s@�t@�u@�v@�/@�x@�y@�z@�{@�O@�}Θ�~΍�Έ΀΄΁@΂@΃@�O@΅@Ά@·@�O@Ή@Ί@΋@Ό@�@ΎΓΏ@ΐ@Α@Β@�@Δ@Ε@Ζ@Η@�_@ΙΨΚΣΛΟΜ@Ν@Ξ@�_@Π@Ρ@΢@�@Τ@Υ@Φ@Χ@�@ΩήΪ@Ϋ@ά@έ@�_@ί@ΰ@α@β@�_@δ�"ε��ζ��η��θ�ινκ@λ@μ@�O@ξ@ο@�@�@��@��@��@��@�@����������@��@��@�_@��@��@��@�O@��@��@��@��@�1@��������������@��@��@�_@��@��@��@�@��@��@��@��@Q@������@��@��@��@�_@��@��@��@��@�_@�������������@�@�@�_@�@�@�@�_@�@�@�@�@�_@���@�@�@�@�_@�@�	@�
@�@�@�
������@�@�@.�@�@�@�@�O@�@�@�@�@�O@@��@�@� @�!@�_@�#�N�$�>�%�/�&@�'�+�(@�)@�*@a@�,@�-@�.@�@�0�9�1�5�2@�3@�4@�_@�6@�7@�8@�@�:@�;@�<@�=@�_@�?@�@�I�A�E�B@�C@�D@�_@�F@�G@�H@߫@�J@�K@�L@�M@�_@�O�e�P�_�Q�Z�R�V�S@�T@�U@�_@�W@�X@�Y@
@�[@�\@�]@�^@Q@@�`�a@�b@�c@�d@�_@�f�u�g�p�h�l�i@�j@�k@�_@�m@�n@�o@�@�q@�r@�s@�t@�1@�v�{�w@�x@�y@�z@2T@�|@�}@�~@�@Q@ρ�Pς�mσ�
τ��υϴφϥχϠψϜω@ϊ@ϋ@ό@AύAώAϏAϐAϑAϒAϓAϔAϕAϖAϗAϘAϙAϚAϛr,Aϝ@Ϟ@ϟ@�1@ϡ@Ϣ@ϣ@Ϥ@�@ϦϯϧϫϨ@ϩ@Ϫ@߫@Ϭ@ϭ@Ϯ@
@ϰ@ϱ@ϲ@ϳ@
@ϵ��϶ϿϷϻϸ@Ϲ@Ϻ@�_@ϼ@Ͻ@Ͼ@�O@�@�@��@��@Q@������@��@��@��@�_@��@��@��@��@�_@������������������@��@��@�@@��@��@��@
@��@��@��@��@�_@����������@��@��@Q@��@��@��@�@��@��@��@��@�_@�����������@��@�@�@�@�@�@�@�@�@�@�@�1@���@�@�@�@Q@�@�@�@�	@�_@��>��'�
����@�@�@�@�@�@�@�@�@�@��"���@�@�@�_@�@� @�!@�@�#@�$@�%@�&@�!@�(�3�)�.�*@�+@�,@�-@�!@�/@�0@�1@�2@Q@�4�9�5@�6@�7@�8@�_@�:@�;@�<@�=@�@�?�V�@�K�A�F@�B�C@�D@�E@�_@�G@�H@�I@�J@�1@�L�Q�M@�N@�O@�P@�_@�R@�S@�T@�U@�_@�W�b�X�]@�Y�Z@�[@�\@�!@�^@�_@�`@�a@�@�c�h�d@�e@�f@�g@Q@�i@�j@�k@�l@Q@�n���oЪ�pЏ�qЀ�r�{�s�w�t@�u@�v@�_@�x@�y@�z@�_@�|@�}@�~@�@�_@ЁЊЂІЃ@Є@Ѕ@
@Ї@Ј@Љ@�O@Ћ@Ќ@Ѝ@Ў@
@АПБКВЖГ@Д@Е@
@З@И@Й@��@Л@М@Н@О@�@РХС@Т@У@Ф@�O@Ц@Ч@Ш@Щ@�O@Ы��ЬзЭв@ЮЯ@а@б@�_@г@д@е@ж@A@инй@к@л@м@
@о@п@�@�@�@��������������@��@��@Q@��@��@��@�O@��@��@��@��@Q@������@��@��@��@A@��@��@��@��@�O@��������������������@��@��@2T@��@��@��@�1@��@��@��@��@�_@��������@��@��@�@�@�@�@
@�@�@�@�@�_@����	���@�@�@�@�@�@�@�_@�
@�@�@�
@�_@���@�@�@�@߫@�@�@�@�@�_@��5��*��%��!�@�@� @
@�"@�#@�$@�@�&@�'@�(@�)@�_@�+�0�,@�-@�.@�/@�_@�1@�2@�3@�4@
@�6�E�7�@�8�<�9@�:@�;@Q@�=@�>@�?@�!@�A@�B@�C@�D@�_@�F�K�G@�H@�I@�J@�_@�L@�M@�N@�O@Q@�Q�3�R��Sю�T�s�U�d�V�_�W�[�X@�Y@�Z@�_@�\@�]@�^@�@�`@�a@�b@�c@�_@�e�n�f�j�g@�h@�i@߫@�k@�l@�m@�@�o@�p@�q@�r@Q@�tу�u�~�v�z�w@�x@�y@�@�{@�|@�}@�@�@р@с@т@�@фщх@ц@ч@ш@�_@ъ@ы@ь@э@.�@яѮѐџёњђіѓ@є@ѕ@�@ї@ј@љ@�1@ћ@ќ@ѝ@ў@�_@ѠѩѡѥѢ@ѣ@Ѥ@
@Ѧ@ѧ@Ѩ@�@@Ѫ@ѫ@Ѭ@ѭ@�_@ѯѵѰ@@ѱѲ@ѳ@Ѵ@�1@Ѷѻѷ@Ѹ@ѹ@Ѻ@Q@Ѽ@ѽ@Ѿ@ѿ@�_@��������������������@��@��@��@��@��@��@�1@��@��@��@��@�O@����������@��@��@�_@��@��@��@
@��@��@��@��@�O@��������������@��@��@�_@��@��@��@
@��@��@��@��@�@�����@��@�@�@�_@�@�@�@�@�_@����
�����@�@�@a@�@�@�@�@�	@�
@�@�@�_@���@�@�@�@�_@�@�@�@�@߫@��(��#���@�@�@Q@� @�!@�"@�_@�$@�%@�&@�'@�!@�)�.�*@�+@�,@�-@�_@�/@�0@�1@�2@Q@�4қ�5�h�6�M�7�B�8�=@�9�:@�;@�<@�_@�>@�?@�@@�A@�O@�C�H@�D�E@�F@�G@�_@�I@�J@�K@�L@Q@�N�]�O�X�P�T�Q@�R@�S@�_@�U@�V@�W@p@�Y@�Z@�[@�\@Q@�^�c�_@�`@�a@�b@�@�d@�e@�f@�g@�@�iҀ�j�u�k�p@�l�m@�n@�o@�1@�q@�r@�s@�t@�_@�v�{�w@�x@�y@�z@�_@�|@�}@�~@�@�@ҁҐ҂ҋ҃҇҄@҅@҆@
@҈@҉@Ҋ@2T@Ҍ@ҍ@Ҏ@ҏ@�@ґҖҒ@ғ@Ҕ@ҕ@�@җ@Ҙ@ҙ@Қ@�@Ҝ��ҝҼҞҭҟҨҠҤҡ@Ң@ң@�_@ҥ@Ҧ@ҧ@�1@ҩ@Ҫ@ҫ@Ҭ@�_@ҮҷүҳҰ@ұ@Ҳ@�_@Ҵ@ҵ@Ҷ@�1@Ҹ@ҹ@Һ@һ@�@ҽ��Ҿ��ҿ���@�@��@�O@��@��@��@a@��@��@��@��@�@������@��@��@��@�_@��@��@��@��@�O@������������������@��@��@�@��@��@��@�_@��@��@��@��@�_@@����@��@��@��@�_@�����������@��@��@�_@�@�@�@�O@�@�@�@�@�@@��@�@�@�@Q@��l��������u�	�?�
�)�����
��@�@�@�O@�@�@�@�_@�@�@�@�@�@��$�� �@�@�@�_@�!@�"@�#@�_@�%@�&@�'@�(@�O@�*�9�+�4�,�0�-@�.@�/@�_@�1@�2@�3@�1@�5@�6@�7@�8@�_@@�:�;@�<@�=@�>@�@�@�Z�A�K�B@�C�G�D@�E@�F@�_@�H@�I@�J@�@@�L�U�M�Q�N@�O@�P@�!@�R@�S@�T@�O@�V@�W@�X@�Y@�!@�[�j�\�e�]�a�^@�_@�`@Q@�b@�c@�d@�_@�f@�g@�h@�i@�_@�k�p�l@�m@�n@�o@�@@�q@�r@�s@�t@�_@�vӱ�wӖ�xӇ�yӂ�z�~�{@�|@�}@�_@�@Ӏ@Ӂ@
@Ӄ@ӄ@Ӆ@ӆ@�@ӈӑӉӍӊ@Ӌ@ӌ@߫@ӎ@ӏ@Ӑ@�@Ӓ@ӓ@Ӕ@ӕ@Q@ӗӦӘӡәӝӚ@ӛ@Ӝ@�_@Ӟ@ӟ@Ӡ@�@@Ӣ@ӣ@Ӥ@ӥ@�_@ӧӬӨ@ө@Ӫ@ӫ@�O@ӭ@Ӯ@ӯ@Ӱ@�@@Ӳ��ӳ��ӴӽӵӹӶ@ӷ@Ӹ@�@Ӻ@ӻ@Ӽ@�_@Ӿ@ӿ@�@�@Q@������@��@��@��@��@��@��@��@��@�@��������������@��@��@a@��@��@��@�@��@��@��@��@
@������@��@��@��@�_@��@��@��@��@�@���Z���%���
������������@��@��@�_@��@��@�@�_@�@�@�@�@�_@�����@�@�@�_@�@�@�@�O@�@�@�@�	@�_@�����
��@�@�@�_@�@�@�@�!@�@�@�@�@�_@�� �@�@�@�@Q@�!@�"@�#@�$@�_@�&�A�'�6�(�1�)�-�*@�+@�,@�@�.@�/@�0@A@�2@�3@�4@�5@�_@�7�<�8@�9@�:@�;@�_@�=@�>@�?@�@@�O@�B�Q�C�L�D�H�E@�F@�G@�O@�I@�J@�K@�@�M@�N@�O@�P@�_@�R�W�S@�T@�U@�V@�_@�X@�Y@�O@�[Ԓ�\�w�]�l�^�g�_�c�`@�a@�b@߫@�d@�e@�f@�1@�h@�i@�j@�k@�@�m�r@�n�o@�p@�q@�@�s@�t@�u@�v@�_@�xԇ�yԂ�z�~�{@�|@�}@�@�@Ԁ@ԁ@Q@ԃ@Ԅ@ԅ@Ԇ@�_@Ԉԍԉ@Ԋ@ԋ@Ԍ@�@Ԏ@ԏ@Ԑ@ԑ@
@ԓԩԔԣԕԞԖԚԗ@Ԙ@ԙ@�@ԛ@Ԝ@ԝ@
@ԟ@Ԡ@ԡ@Ԣ@�_@@Ԥԥ@Ԧ@ԧ@Ԩ@�_@ԪԹԫԴԬ԰ԭ@Ԯ@ԯ@�!@Ա@Բ@Գ@�@Ե@Զ@Է@Ը@Q@ԺԿԻ@Լ@Խ@Ծ@Q@�@�@��@��@Q@��ՠ���9���������������������@��@��@Q@��@��@��@�_@��@��@��@��@�1@����������@��@��@�O@��@��@��@�@��@��@��@��@�_@�������������@��@��@�@@��@��@��@�@��@��@�@�@Q@���@�@�@�@Q@�@�@�@�@Q@��"������
�@�@�	@�_@�@�@�
@�_@�@�@�@�@Q@�����@�@�@�_@�@�@�@�1@�@�@� @�!@
@�#�.�$�)@�%�&@�'@�(@�@�*@�+@�,@�-@�_@�/�4�0@�1@�2@�3@�_@�5@�6@�7@�8@�_@�:�q�;�Z�<�K�=�F�>�B�?@�@@�A@�_@�C@�D@�E@�O@�G@�H@�I@�J@�_@�L�U�M�Q�N@�O@�P@�_@�R@�S@�T@�O@�V@�W@�X@�Y@�!@�[�f�\�a�]@�^@�_@�`@�_@�b@�c@�d@�e@�_@�g�l�h@�i@�j@�k@�@�m@�n@�o@�p@Q@�rՄ�s�~�t�y�u@�v@�w@�x@�_@�z@�{@�|@�}@�_@�@Հ@Ձ@Ղ@Ճ@�_@ՅՕՆՐՇՌՈ@Չ@Պ@Ջ@�_.9Ս@Վ@Տ@
@Ց@Ւ@Փ@Ք@�_@Ֆ՛՗@՘@ՙ@՚@�@՜@՝@՞@՟@�@ա�բ��գ��դճեծզժէ@ը@թ@�_@ի@լ@խ@
@կ@հ@ձ@ղ@�@մսյչն@շ@ո@�@պ@ջ@ռ@�O@վ@տ@�@�@�_@��������@����@��@��@�@��@��@��@��@�_@������@��@��@��@Q@��@��@��@��@�_@������������@����@��@��@
@��@��@��@��@�_@��@��@��@��@��@߫@������������@��@��@Q@��@�@�@�@�@�@�@�@�_@@��@�@�@�@�!@��9�����@���@�	@�
@�_@�@�
@�@�_@�����@�@�@�@�@�@�@�_@�@�@�@�@�O@��.� �)�!�%�"@�#@�$@�_@�&@�'@�(@a@�*@�+@�,@�-@�_@�/�4�0@�1@�2@�3@�@�5@�6@�7@�8@�_@�:�Q�;�F�<�A@�=�>@�?@�@@�_@�B@�C@�D@�E@�O@�G�L�H@�I@�J@�K@�_@�M@�N@�O@�P@�_@�R�a�S�\�T�X�U@�V@�W@Q@�Y@�Z@�[@Q@�]@�^@�_@�`@�_@�b�g�c@�d@�e@�f@�@�h@�i@�j@�k@�@�m��n�J�o���p֦�q֋�r�|�s@�t�x�u@�v@�w@�_@�y@�z@�{@
@�}ֆ�~ւ�@ր@ց@�_@փ@ք@օ@�_@և@ֈ@։@֊@�@֌֛֍֖֎֒֏@֐@֑@�@֓@֔@֕@߫@֗@֘@֙@֚@�@֜֡֝@֞@֟@֠@a@֢@֣@֤@֥@߫@֧��ֲַ֪֮֨֩֫@֬@֭@�_@֯@ְ@ֱ@��@ֳ@ִ@ֵ@ֶ@2T@ָ�ֹֺֽ@ֻ@ּ@�_@־@ֿ@�@�@��@��@��@��@�@��������������@��@��@a@��@��@��@�_@��@��@��@��@�1@������@��@��@��@�@��@��@��@��@�@��������������������@��@��@�_@��@��@��@�@��@��@��@��@�_@��@���@�@�@�_@�@�@�@
@��
�����@�@�@�1@�@�@�@�_@�	@�
@�@�@�_@���@�@�@�@�!@�@�@�@�@�1@��4��)��$�� �@�@�@�_@�!@�"@�#@�@�%@�&@�'@�(@�@�*�/�+@�,@�-@�.@�@�0@�1@�2@�3@�O@�5�D�6�?�7�;�8@�9@�:@�_@�<@�=@�>@Q@�@@�A@�B@�C@Q@@�E�F@�G@�H@�I@�_@�Kש�Lׂ�M�l�N�]�O�X�P�T�Q@�R@�S@a@�U@�V@�W@��@�Y@�Z@�[@�\@�@�^�g�_�c�`@�a@�b@�!@�d@�e@�f@�O@�h@�i@�j@�k@�_@�m�|�n�w�o�s�p@�q@�r@�O@�t@�u@�v@�1@�x@�y@�z@�{@Q@�}@�~@�@׀@ׁ@�_@׃דׄ@ׅ׎׆׊ׇ@׈@׉@�}@׋@׌@׍@�@׏@א@ב@ג@߫@הףומזךח@ט@י@�_@כ@ל@ם@�O@ן@נ@ס@ע@Q@@פץ@צ@ק@ר@
@ת��׫��׬׻׭׶׮ײׯ@װ@ױ@�@׳@״@׵@�O@׷@׸@׹@׺@�@׼��׽�׾@׿@�@��@��@��@��@�O@��@��@��@��@�_@��������������@��@��@�_@��@��@��@
@��@��@��@��@�@������@��@��@��@�_@��@��@��@��@�!@����������������@��@��@�_@��@��@��@�@��@��@��@�@�_@���@�@�@�@�_@�@�@�@�@�@�������@�@�@�1@�	@�
@�@�1@�
@�@�@�@
@���@�@�@�@�_@�@�@�@�@�O@��	�ؖ��c� �L�!�=�"�8�#�4�$@�%@�&@�'@�(��)��*��+��,��-��.��/��0���1�2���3�{��5@�6@�7@Q@�9@�:@�;@�<@�_@�>�G�?�C�@@�A@�B@�O@�D@�E@�F@�O@�H@�I@�J@�K@�O@�M�X�N�S@�O�P@�Q@�R@�O@�T@�U@�V@�W@Q@�Y�^�Z@�[@�\@�]@�1@�_@�`@�a@�b@�@�d�{�e�p�f�k@�g�h@�i@�j@�_@�l@�m@�n@�o@�@�q�v�r@�s@�t@�u@��@�w@�x@�y@�z@
@�|؋�}؆�~؂�@؀@؁@Q@؃@؄@؅@�1@؇@؈@؉@؊@�_@،ؑ؍@؎@؏@ؐ@�_@ؒ@ؓ@ؔ@ؕ@
@ؗ��ؘطؙبؚأ؛؟؜@؝@؞@p@ؠ@ء@آ@�@ؤ@إ@ئ@ا@�_@ةزتخث@ج@ح@�@د@ذ@ر@�O@س@ش@ص@ض@
@ظ��ع��غؾػ@ؼ@ؽ@�_@ؿ@�@�@�1@��@��@��@��@�_@������@��@��@��@�_@��@��@��@��@Q@������������������@��@��@߫@��@��@��@
@��@��@��@��@�_@������@��@��@��@�@��@��@��@��@�@�����������@��@��@�_@�@�@�@�@�@�@�@�@�_@���@�@�@�@�@�@�@�@�@�@�
�m��A��+�
������@�@�@�!@�@�@�@��@�@�@�@�@�@��&��"�@� @�!@�_@�#@�$@�%@�O@�'@�(@�)@�*@�_@�,�6�-@�.�2�/@�0@�1@�_@�3@�4@�5@�O@�7�<�8@�9@�:@�;@Q@�=@�>@�?@�@@�_@�B�]�C�R�D�M�E�I�F@�G@�H@�O@�J@�K@�L@�@@�N@�O@�P@�Q@�1@�S�X�T@�U@�V@�W@�@�Y@�Z@�[@�\@�@�^@�_�h�`�d�a@�b@�c@Q@�e@�f@�g@
@�i@�j@�k@�l@Q@�n٤�oَ�p��q�z�r�v�s@�t@�u@�O@�w@�x@�y@�1@�{@�|@�}@�~@�_@ـىفمق@ك@ل@�@ن@ه@و@�1@ي@ً@ٌ@ٍ@�O@ُِٙ@ّْٕ@ٓ@ٔ@�@ٖ@ٗ@٘@�_@ٟٚٛ@ٜ@ٝ@ٞ@�_@٠@١@٢@٣@�_@٥ټ٦ٱ٧٬@٨٩@٪@٫@�O@٭@ٮ@ٯ@ٰ@�O@ٲٷٳ@ٴ@ٵ@ٶ@1@ٸ@ٹ@ٺ@ٻ@�@ٽ��پ��ٿ���@�@��@�O@��@��@��@�_@��@��@��@��@�_@������@��@��@��@Q@��@��@��@��@�O@��?���@��3�������u�������\������V��ڛ���K��������������������@�@��@�@�����@�@����������@�@��@�@���@�@�@�@�������@�@�@�@�@�@�@��	���@�@�@�@�
��@�@�
@�@��6��+��&���@�@�@�@������������������� ��!��"��#��$��%��-d�'�)�(@�@�*@�@�,�1�-�/�.@�@�0@�@�2�4�3@�@�5@�@�7�B�8�=�9�;�:@�@�<@�@�>�@�?@�@�A@�@�C�F@�D�E@�@�G�I�H@�@�J@�@�L�v�M�d�N�Y�O�T�P�R�Q@�@�S@�@�U�W�V@�@�X@�@�Z�_�[�]�\@�@�^@�@�`�b�a@�@�c@�@�e�p�f�k�g�i�h@�@�j@�@�l�n�m@�@�o@�@�q@�r�t�s@�@�u@�@�wڊ�xځ�y�|�z@�{@�@�}��~@�@ڀ@�@ڂڇڃڅڄ@�@چ@�@ڈ@ډ@�@ڋڒڌڏڍ@ڎ@�@ڐ@ڑ@�@ړږ@ڔڕ@�@ڗڙژ@�@ښ@�@ڜ��ڝ��ڞڭڟڦڠڣ@ڡڢ@�@@ڤڥ@�@ڧڪڨ@ک@�@@ګڬ@�@ڮڷگڴڰڲڱ@�@ڳ@�@ڵ@ڶ@�@ڸڽڹڻں@�@ڼ@�@ھ�ڿ@�@�@�@������������������@�@��@�@@���@�����@@����@�@��������������@�@��@�@������@�@��@�@����������@�@��@�@������@�@��@�@���/�����������������@�@��@�@@����@�@@����@�@�@�@�������@�@�@�@���@�@�@�@��*����	��
�����
�������������������������������������� ���!��"��#�$��%��&���'��(�)��@�+�-�,@�@�.@�@�0�E�1�:�2�5@�3�4@�@�6�8�7@�@�9@�@�;�@�<�>�=@�@�?@�@�A�C�B@-K@�D@�@�F�O�G�J�H@�I@�@�K�M�L@�@�N@�@�P�S@�Q�R@�@�T@�U@�@�W��Xۭ�Yۂ�Z�o�[�f�\�a�]�_�^@�@�`@�@�b�d�c@�@�e@�@�g�l�h�j�i@�@�k@�@�m@�n@�@�p�y�q�v�r�t�s@�@�u@�@@�w�x@�@�z�}@�{�|@�@�~ۀ�@�@ہ@�@ۃۚۄۏۅۊۆۈۇ@�@ۉ@�@ۋۍی@�@ێ@�@ېەۑۓے@�@۔@�@ۖۘۗ@�@ۙ@�@ۛۤۜ۟۝@۞@�@۠ۢۡ@�@ۣ@�@ۥ۪ۦۨۧ@�@۩@�@@۫۬@�@ۮ��ۯ��۰۹۱۴۲@۳@�@۵۷۶@�@۸@�@ۺۿۻ۽ۼ@�@۾@�@�@�@�@��������������@�@��@�@������@�@��@�@����������@�@��@�@������@�@��@�@��������������@��@�@������@�@��@�@����������@�@��@�@������@�@��@�@������������@�@�@�@�@�@�@�����@�@�@�@���@�@�@�@��L��%����
�	�
�@@��@�@�����@�@�@�@@��@�@�����@�@�@�@�@�@��"� @�!@�@@�#�$@-K@�&�7�'�.�(�+�)@�*@�@�,@�-@�@�/�4�0�2�1@�@�3@�@�5@�6@�@�8�A�9�<�:@�;@�@�=�?�>@�@�@@�@�B�G�C�E�D@�@�F@�@�H�J�I@�@�K@�@�Mܖ�N��O�v�P�S�Q@�R@�@�T@�U��V��W��X��Y��Z��[��\��]���^�_��`���a�b���c�d��e���f�g��h��i��j��k��l��m��n��o��p��q���r�s���t�u�-d��w�|�x�z�y@�@�{@�@@�}�~@�@܀܋܁܆܂܄܃@�@܅@�@܇܉܈@�@܊@�@܌ܑ܍܏܎@�@ܐ@�@ܒܔܓ@�@ܕ@�@ܗܪܘܡܙܞܚܜܛ@�@ܝ@�@ܟ@ܠ@�@ܢܥ@ܣܤ@�@ܦܨܧ@�@ܩ@�@ܫܶܬܱܭܯܮ@�@ܰ@�@ܴܲܳ@�@ܵ@-K@ܷܼܸܹܺ@�@ܻ@�@ܾܽܿ@�@�@�@���	���`���
����������������������@�@��@�@@����@�@����@����@�@������@�@��@�@����������@��@�@��@��@�@������@�@������@�@��@�@�������@��������@�@��@�@���@����@�@���@�@�@�@����@��@�@@��@�@�����@�@�@�@�	��
@�@�@�@��9��&�������@�@�@�@���@�@�@�@��!���@�@� @�@�"�$�#@�@�%@�@�'�0�(�+@�)�*@�@�,�.�-@�@�/@�@�1�6�2�4�3@�@�5@�@@�7�8@�@�:�M�;�D�<�A�=�?�>@�@�@@�@�B@�C@�@�E�H@�F�G@�@�I�K�J@�@�L@�@�N�W�O�T�P�R�Q@�@�S@�@@�U�V@�@�X�]�Y�[�Z@�@�\@�@�^@�_@�@�aݲ�b݉�c�v�d�m�e�j�f�h�g@�@�i@�@�k@�l@�@�n�s�o�q�p@�@�r@�@�t@�u@�@�w݀�x�{�y@�z@�@�|�~�}@�@�@�@݄݁@݂݃@�@݆݅݇@�@݈@�@݊ݟ݋ݖ݌ݑݍݏݎ@�@ݐ@�@ݒݔݓ@�@ݕ@�@ݗݜݘݚݙ@�@ݛ@�@@ݝݞ@�@ݠݩݡݤ@ݢݣ@�@ݥݧݦ@�@ݨ@�@ݪݭ@ݫݬ@�@ݮݰݯ@�@ݱ@�@ݳ��ݴ��ݵݾݶݻݷݹݸ@�@ݺ@�@ݼ@ݽ@�@ݿ������@�@��@�@������@�@��@�@��������@����@�@������@�@��@�@����������@�@��@�@������@�@��@�@������������@����@�@������@�@��@�@����������@�@��@�@������@�@��@�@�������@�@�@�@���@�@�@�@�����@�@�@�@�@�@�@�
ޱ��_��2�
����@@��@�@�����@�@�@�@���@�@�@�@��)��$� �"�!@�@�#@�@�%�'�&@�@�(@�@�*�-@�+�,@�@�.�0�/@�@�1@�@�3�J�4�?�5�:�6�8�7@�@�9@�@�;�=�<@�@�>@�@�@�E�A�C�B@�@�D@�@�F�H�G@�@�I@�@�K�V�L�Q�M�O�N@�@�P@�@�R�T�S@�@�U@�@�W�\�X�Z�Y@�@�[@�@�]@�^@�@�`ނ�a�t�b�k�c�h�d�f�e@�@�g@�@@�i�j@�@�l�q�m�o�n@�@�p@�@�r@�s@�@�u�~�v�y�w@�x@�@�z�|�{@�@�}@�@@�@ހށ@�@ރޚބޏޅފކވއ@�@މ@�@ދލތ@�@ގ@�@ސޕޑޓޒ@�@ޔ@�@ޖޘޗ@�@ޙ@�@ޛަޜޡޝޟޞ@�@ޠ@�@ޢޤޣ@�@ޥ@�@ާެިުީ@�@ޫ@�@ޭޯޮ@�@ް@�@޲�	޳��޴��޵޾޶޻޷޹޸@�@޺@�@@޼޽@�@޿���@�@�@������@�@��@�@��������������@�@��@�@������@�@��@�@����������@�@��@�@������@�@��@�@������������@����@�@������@�@��@�@����������@�@��@�@@����@�@���������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�
�5�� ���
����@�@�@�@�@�@�@�����@�@�@�@���@�@�@�@�!�*�"�%@�#�$@�@�&�(�'@�@�)@�@�+�0�,�.�-@�@�/@�@�1�3�2@�@�4@�@�6�K�7�B�8�=�9�;�:@�@�<@�@�>�@�?@�@�A@�@�C�H�D�F�E@�@�G@�@@�I�J@�@�L�[�M�X@�N�O@�P@@�Q�R@�S@�T@@�U�V@�W@@-K�Y@�Z@�@�@�]��^��_��`߻�aߊ�b�y�c�n�d�i�e�g�f@�@�h@�@�j�l�k@�@�m@�@�o�t�p�r�q@�@�s@�@�u�w�v@�@�x@�@�z߃�{�~�|@�}@�@�߁߀@�@߂@�@߄߇߅@߆@�@߈@߉@�@ߋߦߌߝߍߘߎߖߏ@ߐ@@ߑߒ@ߓ@ߔ@ߕ@-K@ߗ@�@ߙߛߚ@�@ߜ@�@ߞߡ@ߟߠ@�@ߢߤߣ@�@ߥ@�@ߧ߰ߨ߫ߩ@ߪ@�@߬߮߭@�@߯@�@߱߶߲ߴ߳@�@ߵ@�@߷߹߸@�@ߺ@�@߼��߽��߾��߿������@�@��@�@������@�@��@�@����������@�@��@�@������@�@��@�@����������@��@�@��@��@�@����������@�@��@�@@����@�@�������������@��@�@������@�@��@�@���������@�@�@�@���@�@�@�@�������@�@�@�@�@�@�@����	�@�@�
@�@���
@�@�@�@��c��:��#��@����@�@�@�@���@�@�@��!� @�@�"@�@�$�/�%�*�&�(�'@�@�)@�@�+�-�,@�@�.@�@�0�5�1�3�2@�@�4@�@�6�8�7@�@�9@�@�;�P�<�E�=�@�>@�?@�@�A�C�B@�@�D@�@�F�K�G�I�H@�@�J@�@�L�N�M@�@�O@�@�Q�\�R�W�S�U�T@�@�V@�@�X�Z�Y@�@�[@�@�]�`�^@�_@�@�a@�b@�@�d��e�z�f�o�g�j@�h�i@�@�k�m�l@�@�n@�@�p�u�q�s�r@�@�t@�@�v�x�w@�@�y@�@�{��|��}��~@�@�@�@���@�@�@�@�����@�@�@�@�@�@�@���������@�@�@�@@��@�@�����@�@�@�@���@�@�@�@�����@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@��h���������������@��@�@������@�@��@�@����@����@�@������@�@��@�@��������������@�@��@�@������@�@��@�@����@����@�@������@�@��@�@�����������������@�@��@�@������@�@��@�@������@�@�@�@���@�@�@�@����@��@�@���@�@�@�@�	��
��@�@�
@�@�@�@�@��=��*�������@�@�@�@���@�@�@�@� �%�!�#�"@�@�$@�@�&�(�'@�@�)@�@�+�4�,�/�-@�.@�@�0�2�1@�@�3@�@�5�8�6@�7@�@�9�;�:@�@�<@-K@�>�S�?�H�@�C@�A�B@�@�D�F�E@�@�G@�@�I�N�J�L�K@�@�M@�@�O�Q�P@�@�R@�@�T�_�U�Z�V�X�W@�@�Y@�@�[�]�\@�@�^@�@�`�c@�a�b@�@�d�f�e@�@�g@�@�i��j��k��l�u�m�r�n�p�o@�@�q@�@@�s�t@�@�v�{�w�y�x@�@�z@�@�|�~�}@�@�@�@��@����@�@�@�@�����@�@�@�@���@�@�@�@���������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�������@�@�@�@@��@�@���@�@�@���@�@�@�@������������������@�@��@�@������@�@��@�@����@����@�@������@�@��@�@��������������@�@�@������@�@��@�@����������@�@��@�@������@�@��@�@����������@����@�@������@�@��@�@���@�@�@���@�@�@�@��
�����@�@�@�@���@�@�	@�@�����
@�@�@�@���@�@�@�@��m�����o��D��/��$��!���@�@� @�@@�"�#@�@�%�*�&�(�'@�@�)@�@�+�-�,@�@�.@�@�0�9�1�4�2@�3@�@�5�7�6@�@�8@�@�:�?�;�=�<@�@�>@�@�@�B�A@�@�C@�@�E�Z�F�Q�G�L�H�J�I@�@�K@�@�M�O�N@�@�P@�@�R�U�S@�T@�@�V�X�W@�@�Y@�@�[�d�\�a�]�_�^@�@�`@�@@�b�c@�@�e�j�f�h�g@�@�i@�@�k�m�l@�@�n@�@�p��q��r�{�s�x�t�v�u@�@�w@�@�y@�z@�@�|��}��~@�@�@�@@��@�@@������@�@�@�@���@�@�@�@���������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@����@��@�@���@�@�@�@�����@�@�@�@����@�@�������������������������������������������@�@������������������������@�@��@�@������@�@��@�@����������@�@��@�@������@�@��@�@��������������@�@��@�@������@�@��@�@������@�@�@�@���@�@�@�@����	��@��@�@���@�@�@�@�
���
�@�@�@�@���@�@�@�@��D��-��"�����@�@�@�@�� �@�@�!@�@�#�(�$�&�%@�@�'@�@�)�+�*@�@�,@�@�.�9�/�4�0�2�1@�@�3@�@�5�7�6@�@�8@�@�:�?�;�=�<@�@�>@�@�@�B�A@�@�C@�@�E�X�F�O�G�J�H@�I@�@�K�M�L@�@�N@�@�P�U�Q�S�R@�@�T@�@@�V�W@�@�Y�b�Z�]�[@�\@�@�^�`�_@�@�a@�@�c�h�d�f�e@�@�g@�@�i�k�j@�@�l@�@�n��o���p��q��r�}�s�x�t�v�u@�@�w@�@�y�{�z@�@�|@�@�~����@�@�@�@���@�@�@�@����@��@�@���@�@�@�@�����@�@�@�@�@�@�@���������@�@�@�@���@�@�@�@�@���@�@�@�@�������@�@�@�@���@�@�@�@���@�@�@���@�@��@�@����������������������@�@��@�@������@�@��@�@����@����@�@������@�@��@�@��������������@�@��@�@������@�@��@�@����������@�@��@�@������@�@��@�@���	���������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�
������
@�@�@�@@��@�@�����@�@�@�@���@�@�@�@��v� �I�!�4�"�+�#�(�$�&�%@�@�'@�@�)@�*@�@�,�/@�-�.@�@�0�2�1@�@�3@�@�5�@�6�;�7�9�8@�@�:@�@�<�>�=@�@�?@�@�A�F�B�D�C@�@�E@�@�G@�H@�@�J�_�K�V�L�Q�M�O�N@�@�P@�@�R�T�S@�@�U@�@�W�\�X�Z�Y@�@�[@�@�]@�^@�@�`�k�a�f�b�d�c@�@�e@�@�g�i�h@�@�j@�@�l�q�m�o�n@�@�p@�@�r�t�s@�@�u@�@�w��x��y��z��{�}�|@�@�~@�@���@�@�@�@���@�@�@���@�@�@�@�����@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@���������@�@�@�@���@�@�@�@��@��@�@@��@�@�������@�@�@�@@��@�@���������@�@��@�@������@�@��@�@���X���}���#���t���%���������������������@�@��@�@������@�@��@�@����������@�@��@�@@����@�@��������������@�@��@�@@����@�@��������@�@�@�@�@�@�@���������@�@�@�@���@�@�@�@��
�	��
@�@�@�@���@�@�@�@����@��@�@���@�@�@�@��"�� �@�@�!@�@�#@�$@�@�&�N�'�<�(�3�)�.�*�,�+@�@�-@�@�/�1�0@�@�2@�@�4�7@�5�6@�@�8�:�9@�@�;@�@�=�H�>�C�?�A�@@�@�B@�@�D�F�E@�@�G@�@�I@�J�L�K@�@�M@�@�O�d�P�[�Q�V�R�T�S@�@�U@�@�W�Y�X@�@�Z@�@�\�_@�]�^@�@�`�b�a@�@�c@�@�e�i@�f@�g�h@�@�j�o�k�m�l@�@�n@�@�p�r�q@�@�s@�@�u���v��w��x��y�~�z�|�{@�@�}@�@@��@�@�����@�@�@�@���@�@�@�@�������@�@�@�@���@�@�@�@�����@�@�@�@@��@�@���������@�@�@�@�@�@�@�����@�@�@�@���@�@�@�@��������@�@�@�@���@�@��@�@����������@�@��@�@@����@�@���������������@����@�@������@�@��@�@����������@�@��@�@������@�@��@�@��������������@�@��@�@@����@�@����������@�@��@�@����@�@�@�@���������@�@�@�@���@�@�@�@����	�@�@�
@�@���
@�@�@�@�������@�@�@�@���@�@�@�@�� �@�@�@@�!�"@�@�$���%�|�&�M�'�<�(�1�)�,�*@�+@�@�-�/�.@�@�0@�@�2�7�3�5�4@�@�6@�@�8�:�9@�@�;@�@�=�F�>�C�?�A�@@�@�B@�@@�D�E@�@�G�J�H@�I@�@@�K�L@�@�N�e�O�Z�P�U�Q�S�R@�@�T@�@�V�X�W@�@�Y@�@�[�`�\�^�]@�@�_@�@�a�c�b@�@�d@�@�f�q�g�l�h�j�i@�@�k@�@�m�o�n@�@�p@�@�r�w�s�u�t@�@�v@�@�x�z�y@�@�{@�@�}��~��������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�����@�@�@@��@�@�����@�@�@�@���@�@�@�@���������@�@�@�@���@�@�@�@���@�@�@���@�@�@�@����@�@��@�@����@����@�@������@�@��@�@���&���������������������@�@��@�@������@�@��@�@����������@�@��@�@������@�@��@�@��������������@�@��@�@������@�@��@�@�������@�@�@�@�@�@�@���������@�@�@�@���@�@�@�@�	��
��@�@�
@�@���@-K@�@�@����@��@�@�@�@�@��!���@�@� @�@�"�$�#@�@�%@�@�'�R�(�;�)�0�*�/�+�-�,@�@�.@�@�@�1�6�2�4�3@�@�5@�@�7�9�8@�@�:@�@�<�G�=�B�>�@�?@-K@�A@�@�C�E�D@�@�F@�@�H�M�I�K�J@�@�L@�@�N�P�O@�@�Q@�@�S�f�T�]�U�X@�V�W@�@�Y�[�Z@�@�\@�@�^�a�_@�`@�@�b�d�c@�@�e@�@�g�r�h�m�i�k�j@�@�l@�@�n�p�o@�@�q@�@�s�x�t�v�u@�@�w@�@�y�{�z@�@�|@�@�~���S��������������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@���@���@�@�@�@�����@�@�@�@���@�@�@�@���������@�@�@�@�@�@�@�����@�@�@�@���@�@�@�@��������������@�@��@�@������@�@��@�@����������@�@��@�@������@�@��@�@���������������@����@�@������@�@��@�@����������@�@��@�@������@�@��@�@������������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�����	��
��@�@�
@�@���@�@�@�@�����@�@�@�@@��@�@��(��#��!� @�@�"@�@�$�&�%@�@�'@�@�)�N�*�,�+@�@�-@�.@�/@@�0@�1@�2�3@�4@�5@�6@�7@�8@�9@�:@�;@�<@�=@�>@�?@�@@�A@�B@�C@�D@�E@�F@�G@�H@�I@�J@@�K�L@@�M-K@�O�Q�P@�@�R@�@�T��U��V�i�W�^�X�[@�Y�Z@-K@@�\�]@�@�_�d�`�b�a@�@�c@�@�e�g�f@�@�h@�@�j�{�k�v�l�n�m@�@�o@�p@@�q�r@�s@�t@@�u-K@�w�y�x@�@�z@�@�|��}��~@�@�@�@�@�@�@���������@�@�@�@���@�@�@�@�����@�@�@�@�@�@�@�������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�����������@�@�@���@�@�@�@������@�@��@�@������@�@��@�@��������������@�@��@�@@����@�@����������@�@��@�@@����@�@������������������@�@��@�@������@�@��@�@����@����@�@@����@�@�������@����@�@���@�@�@�@�����@�@�@�@���@�@�@�@����Z��2���	��
���
�@�@�@�@@��@�@�����@�@�@�@���@�@�@�@��'��$� �"�!@�@�#@�@�%@�&@�@�(�-�)�+�*@�@�,@�@�.�0�/@�@�1@�@�3�H�4�=�5�8@�6�7@�@�9�;�:@�@�<@�@�>�C�?�A�@@�@�B@�@�D�F�E@�@�G@�@�I�T�J�O�K�M�L@�@�N@�@�P�R�Q@�@�S@�@�U@�V�X�W@�@�Y@�@�[��\�q�]�h�^�c�_�a�`@�@�b@�@�d�f�e@�@�g@�@�i�n�j�l�k@�@�m@�@�o@�p@�@�r�{�s�x�t�v�u@�@�w@�@�y@�z@�@�|��}��~@�@�@�@�@�@�@���������@�@�@�@���@�@�@�@@����@�@�@�@�������@�@�@�@@��@�@�����@�@�@�@���@�@�@�@������������@��@�@���@�@�@�@�����@�@�@�@����@�@��@�@��������@����@�@������@�@��@�@����������@�@��@�@��@��@�@������������������@�@��@�@������@�@��@�@����������@�@��@�@������@�@��@�@������������@�@�@�@���@�@�@�@��@��@�@���@�@�@�@��2������
�	��
@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@��)��$� �"�!@�@�#@�@�%�'�&@�@�(@�@�*�-�+@�,@�@�.�0�/@�@�1@�@�3�J�4�?�5�:�6�8�7@�@�9@�@�;�=�<@�@�>@�@�@�E�A�C�B@�@�D@�@�F�H�G@�@�I@�@�K�O�L@�M@�N@�@�P�U�Q�S�R@�@�T@�@�V@�W@�@�Y��Z��[��\��]��^�q�_�h�`�c�a@�b@�@�d�f�e@�@�g@�@�i�n�j�l�k@�@�m@�@�o@�p@�@�r�}�s�x�t�v�u@�@�w@�@�y�{�z@�@�|@�@�~����@�@�@�@�@�@�@���������@�@�@�@@��@�@���@�@�@@��@�@��@��@�@�@�����@�@�@�@@��@�@������������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@������������@�@��@�@������@�@��@�@����������@�@��@�@������@�@��@�@������������������@�@��@�@��@��@�@������@��@�@������@�@��@�@�������������@�@��@�@������@�@�@�@�����@�@�@�@���@�@�@�@��R��'������	�@�@�@�
��@�@�
@�@���@�@�@���@�@�@�@��#�����@�@�@�@��!� @�@�"@�@�$@@�%�&@�@�(�=�)�2�*�-�+@�,@�@�.�0�/@�@�1@�@�3�8�4�6�5@�@�7@�@�9�;�:@�@�<@�@�>�G�?�B@�@�A@�@�C�E�D@�@�F@�@�H�M�I�K�J@�@�L@�@�N�P�O@�@�Q@�@�S�~�T�k�U�`�V�[�W�Y�X@�@�Z@�@�\�^�]@�@�_@�@�a�f�b�d�c@�@�e@�@�g�i�h@�@�j@�@�l�u�m�p�n@�o@�@�q�s�r@�@�t@�@�v�{�w�y�x@�@�z@�@�|@�}@�@������@��@�@���@�@�@�@�����@�@�@�@���@�@�@�@�������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@��P����������@���@�@�@�@�����@�@�@�@�@�@�@������������@�@��@�@������@�@��@�@����������@�@��@�@@����@�@������������@����@�@������@�@��@�@����������@�@��@�@������@�@��@�@�������������@�@��@�@������@�@�@�@���@�@�@@��@�@��%������@��@�@@��@�@��
�	��
@�@�@�@���@�@�@�@�������@�@�@�@�@�@�@��"�� �@�@�!@�@@�#�$@�@�&�;�'�2�(�-�)�+�*@�@�,@�@�.�0�/@�@�1@�@�3�8�4�6�5@�@�7@-K@�9@�:@�@�<�E�=�B�>�@�?@�@�A@�@@�C�D@�@�F�K�G�I�H@�@�J@�@�L�N�M@�@�O@�@�Q��R��S�j�T�_�U�Z�V�X�W@�@�Y@�@�[�]�\@�@�^@�@�`�e�a�c�b@�@�d@�@�f�h�g@�@�i@�@�k�v�l�q�m�o�n@�@�p@�@�r�t�s@�@�u@�@�w�|�x�z�y@�@�{@�@�}@�~@�@���������@�@�@�@@��@�@�����@�@�@�@���@�@�@�@�������@�@�@�@���@�@�@�@�����@�@�@�@@��@�@������������@�@�@�@@��@�@�����@�@�@�@@��@�@������������@�@��@�@������@�@��@�@����@����@�@������@�@��@�@������������@����@�@������@�@��@�@������@��@�@������@�@��@�@��������������@�@��@�@������@�@��@�@�����@�@�@�@���@�@�@�@��Y����L��%�����@��	�@�@�
@�@��@�
�@�@���@�@�@�@�������@�@�@�@@��@�@��"� @�!@�@@�#�$@�@�&�9�'�0�(�+�)@�*@�@�,�.�-@�@�/@�@�1�6�2�4�3@�@�5@�@@�7�8@�@�:�C�;�@�<�>�=@�@�?@�@@�A�B@�@�D�G@�E�F@�@�H�J�I@�@�K@�@�M�x�N�c�O�X�P�U�Q�S�R@�@�T@�@�V@�W@�@�Y�^�Z�\�[@�@�]@�@�_�a�`@�@�b@�@�d�o�e�j�f�h�g@�@�i@�@�k�m�l@�@�n@�@�p�s@�q�r@�@�t�v�u@�@�w@�@�y��z��{��|�~�}@�@�@�@���@�@�@�@�����@�@�@�@�@�@�@���@���@�@�@�@�����@�@�@�@���@�@�@�@��������������@�@�@�@���@�@�@�@�����@�@�@�@@��@�@����������@�@�@�@@��@��@-K@��@�@������@�@��@�@����������@�@��@�@������@�@��@�@��������������@��@�@������@�@��@�@������@��@�@@����@-K@��������@����@�@������@�@��@�@��������@�@�@�@@��@�@��$���������@�@�@�@@��@�@��
�@�	@�@��
�@�@�@�@�����@�@�@���@�@�@�@�����@�@�@�@� �"�!@�@�#@�@�%�B�&�7�'�,�(�*�)@�@�+@�@�-�/�.@�@�0@�1@@�2�3@�4@�5@@�6-K@�8�=�9�;�:@�@�<@�@�>�@�?@�@�A@�@�C�N�D�I�E�G�F@�@�H@�@�J�L�K@�@�M@�@�O�T�P�R�Q@�@�S@�@�U�W�V@�@�X@�@�Z��[��\��]�n�^�g�_�b�`@�a@�@�c�e�d@�@�f@�@�h�k�i@�j@�@�l@�m@�@�o�x�p�s�q@�r@�@�t�v�u@�@�w@�@�y�~�z�|�{@�@�}@�@���@�@�@�@�������@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@����������@��@�@���@�@�@�@������@�@�@�@@����@�@��������������@�@��@�@������@�@��@�@������@��@�@������@�@��@�@������������@����@�@@����@�@����������@�@��@�@������@�@��@�@������������@�@��@�@���@�@�@�@��@��@�@@��@�@�@��V��%����
��
��	�@�@���@�@�����@�@@��@�@�@�@�������@�@���@�@��"� �!�@�@�#�$�@�@�&�5�'�.�(�+�)�*�@�@�,�-�@�@�/�2�0�1�@�@�3�4�@�@�6�=�7�:�8�9�@�@�;�<�@�@�>�A�?�@�@�@�B�U�C@�D�H�E�G�F@�@�@�I�T�J@�K@�L�Q�M�P�N�O�@�@�@�R@�S@�@�@�@�W@�X�g�Y�`�Z�]�[�\�@�@�^�_�@�@�a�d�b�c�@�@�e�f�@�@�h�o�i�l�j�k�@�@�m�n�@�@�p�s�q�r�@�@�t@�@�v���w��x�'�y���z�$�{���|��}��~������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�������@�@�@�@���@�@�@�@�����@�@�@�@���@-K@�@�@������@��@�@���@�@�@�@�����@�@�@�@�@�@�@������������@�@��@�@������@�@��@�@����������@�@��@�@��@��@�@���������������������@�@��@�@������@�@��@�@������@��@�@��@��@�@������@@����@�@����������@�@��@�@���@�@�@�@��
�������@�@�@�@�@�@�@��@��@�@�	��
@�@�@�@�������@�@�@�@���@�@�@�@�����@�@�@�@� �"�!@�@�#@�@�%��&�[�'�>�(�3�)�.�*�,�+@�@�-@�@�/�1�0@�@�2@�@�4�9�5�7�6@�@�8@�@�:�<�;@�@�=@�@�?�P�@�K�A�C�B@�@�D@�E@@�F@�G�H@�I@@�J@-K�L�N�M@�@�O@�@�Q�V�R�T�S@�@�U@�@�W�Y�X@�@�Z@�@�\�q�]�f�^�c�_�a�`@�@�b@�@�d@�e@�@�g�l�h�j�i@�@�k@�@�m�o�n@�@�p@�@�r�{�s�x�t�v�u@�@�w@�@@�y�z@�@�|��}��~@�@�@�@���@�@�@�@��������@��@�@���@�@�@�@���@�@�@���@�@�@�@�������@�@�@�@@��@�@�����@�@�@�@���@�@�@�@��������@�@�@���@�@�@�@�����@-K@�@�@������@�@��@�@��������������@�@��@�@������@�@��@�@����������@�@��@�@������@�@��@�@������5���
�����������������@�@��@�@������@�@��@�@����������@�@��@�@����@�@�@�@����@��@�@���@�@�@�@�����@�@�@�@�	��
@�@�@�@�� ��@����@�@�@�@�����@�@�@�@���@�@�@�@�!�*�"�'�#�%�$@�@�&@�@�(@�)@�@�+�0�,�.�-@�@�/@�@�1�3�2@�@�4@�@�6�[�7�H�8�?�9�<@�:�;@�@@�=�>@�@�@�C�A@�B@�@�D�F�E@�@�G@�@�I�P�J�M�K@�L@�@�N@�O@�@�Q�V�R�T�S@�@�U@�@�W�Y�X@�@�Z@�@�\�o�]�d�^�a�_@�`@�@@�b�c@�@�e�j�f�h�g@�@�i@�@�k�m�l@�@�n@�@�p�y�q�v�r�t�s@�@�u@�@�w@�x@�@�z��{�}�|@�@�~@�@���@�@�@�@��������������@�@�@�@���@�@�@�@��@��@�@@��@�@�������@�@�@�@���@�@�@�@�����@�@�@�@@��@�@������@��@�@�@�@�@���@�@�@���@�@�@�@��������������@�@��@�@������@�@��@�@����������@�@��@�@��@��@�@���������������������@�@��@�@������@�@��@�@����������@�@��@�@������@�@��@�@����@��@����@�@�����@�@�@�@���@�@�@�@����	�����@�@�@�@�@�@�
�
@��@�@@��@�@�������@�@�@�@���@�@�@�@��"�� �@�@�!@�@�#�%�$@�@�&@�@�(��)���*��+�X�,�A�-�8�.�3�/�1�0@�@�2@�@�4�6�5@�@�7@�@�9�<@�:�;@�@�=�?�>@�@�@@�@�B�M�C�H�D�F�E@�@�G@�@�I�K�J@�@�L@�@�N�S�O�Q�P@�@�R@�@�T�V�U@�@�W@�@�Y�p�Z�e�[�`�\�^�]@�@�_@�@�a�c�b@�@�d@�@�f�k�g�i�h@�@�j@�@�l�n�m@�@�o@�@�q�w@�r�s�u�t@�@�v@�@�x�{@�y�z@�@�|�~�}@�@�@�@�����������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@@�@��@�@@�@-K�����������@�@�@�@���@�@��@�@����@����@�@������@�@��@�@��������������@�@��@�@������@�@��@�@����������@�@��@�@��@��@�@���;��������������@����@�@������@�@��@�@����������@�@��@�@���@�@�@�@�������@�@�@�@���@�@�@�@����	�@-K@�
@�@���
@�@�@�@��&�������@�@�@�@���@�@�@�@��#��!� @�@�"@�@�$@�%@�@�'�2�(�-�)�+�*@-K@�,@�@�.�0�/@-K@�1@�@�3�6�4@�5@�@�7�9�8@�@�:@�@�<�g�=�R�>�G�?�D�@�B�A@�@�C@�@�E@�F@�@�H�M�I�K�J@�@�L@�@�N�P�O@-K@�Q@�@�S�\�T�W@�U�V@�@�X�Z�Y@�@�[@�@�]�b�^�`�_@�@�a@�@�c�e�d@�@�f@�@�h�{�i�r�j�o�k�m�l@�@�n@�@�p@�q@�@�s�x�t�v�u@�@�w@-K@�y@�z@�@�|��}��~��@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@��B�����������@��@�@���@�@�@�@�����@�@�@�@���@�@�@�@�������@�@�@�@@��@�@�����@�@�@�@���@�@�@�@�����������@����@�@������@�@��@�@����������@�@��@�@������@�@��@�@��������@����@�@������@�@��@�@����������@�@��@�@������@�@��@�@�������������������@�@��@�@�@�@�@�����@�@�@�@���@�@�@�@����	���@�@�@�@�
��@�@�
@�@���@�@�@���@�@�@�@��-��"��@��@�@�� �@�@�!@�@�#�(�$�&�%@�@�'@�@�)�+�*@�@�,@�@�.�9�/�4�0�2�1@�@�3@�@�5�7�6@�@�8@�@�:�=@�;�<@�@�>�@�?@�@�A@�@�C��D�m�E�X�F�O�G�L�H�J�I@�@�K@�@@�M�N@�@�P�U�Q�S�R@�@�T@�@@�V�W@�@�Y�d�Z�_�[�]�\@�@�^@�@�`�b�a@�@�c@�@�e�h@�f�g@�@�i�k�j@�@�l@�@�n�|�o�x�p�u�q�s�r@�@�t@�@�v@�w@�@@�y@�z�{@�@�}��~����@�@�@�@@��@�@��@��@�@���@�@�@�@�����������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@����������������@�@��@�@������@�@��@�@����������@�@��@�@������@�@��@�@��������������@�@��@�@������@�@��@�@����������@�@��@�@������@�@��@��@@����@��@��@@����@�@@-K�����Y�����S��(���������@�@�@�@���@�@�@�@�	�@�
�@�@�
��@�@�@�@�������@�@�@�@���@�@�@�@��#��!� @�@�"@�@�$�&�%@�@�'@�@�)�<�*�3�+�0�,�.�-@�@�/@�@�1@�2@�@�4�7@�5�6@�@�8�:�9@�@�;@�@�=�H�>�C�?�A�@@�@�B@�@�D�F�E@�@�G@�@�I�N�J�L�K@�@�M@�@�O�Q�P@�@�R@�@�T���U�l�V�a�W�\�X�Z�Y@�@�[@�@�]�_�^@�@�`@�@�b�g�c�e�d@�@�f@�@�h�j�i@�@�k@�@�m�x�n�s�o�q�p@�@�r@�@�t�v�u@�@�w@�@�y�~�z�|�{@�@�}@�@�����@�@��@�@������������@����@�@������@�@��@�@����������@�@��@�@������@�@��@�@��������������@�@��@�@@����@�@����������@�@��@�@������@�@��@�@�������������������������@�@��@�@������@�@��@�@������@��@�@������@�@��@�@��������@����@�@������@�@��@�@������@��@�@������@�@��@�@������������@����@�@������@�@��@�@����������@�@��@�@������@�@��@�@��������������@�@��@�@������@�@��@�@������@��@�@���@�@�@�@��2������
�	��
@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@��'��"� @�!@�@�#�%�$@�@�&@�@�(�-�)�+�*@�@�,@�@�.�0�/@�@�1@�@�3�D�4�=�5�:�6�8�7@�@�9@�@@�;�<@�@�>�A�?@�@@�@@�B�C@�@�E�N�F�I@�G�H@�@�J�L�K@�@�M@�@�O�T�P�R�Q@�@�S@�@�U�W�V@�@�X@�@�Z��[���\���]�p�^�g�_�d�`�b�a@�@�c@�@@�e�f@�@�h�m�i�k�j@�@�l@�@�n@�o@�@�q�|�r�w�s�u�t@�@�v@�@�x�z�y@�@�{@�@�}���~���@�@��@�@������@�@��@�@������������������@�@��@�@������@�@��@�@����������@��@��@��@��@��@��@-K@��@�@������@�@��@�@��������������@�@��@�@������@�@��@�@����@����@�@������@�@��@�@����������������������@�@��@�@������@�@��@�@������@��@�@������@�@��@-K@��������@����@�@������@�@��@�@������@��@�@������@�@��@�@������������������@�@��@�@������@�@��@�@����@����@�@��@��@�@�������������@�@��@�@���@�@�@�@��
���@�@�	@�@��
�@�@�@�@��i��>��'�������@�@�@�@���@�@�@�@��$� �"�!@�@�#@�@@�%�&@�@�(�3�)�.�*�,�+@�@�-@�@�/�1�0@�@�2@�@�4�9�5�7�6@�@�8@�@�:�<�;@�@�=@�@�?�T�@�I�A�F�B�D�C@�@�E@�@@�G�H@�@�J�O�K�M�L@�@�N@�@�P�R�Q@�@�S@�@�U�`�V�[�W�Y�X@�@�Z@�@�\�^�]@�@�_@�@�a�d�b@�c@�@�e�g�f@�@�h@�@�j���k���l�u�m�p@�n�o@�@�q�s�r@�@�t@-K@�v�{�w�y�x@�@�z@�@�|�~�}@�@�@�@��������������@�@��@�@@����@�@����������@�@��@�@������@�@��@�@������������������@�@��@�@������@�@��@�@����������@�@��@�@������@�@��@�@��������������@�@��@�@��@��@�@����������@�@��@�@������@�@��@�@������e�������������������������@�@��@�@������@�@��@�@��@������@�@��@�@��������������@�@��@�@��@��@�@����������@�@��@�@������@�@��@�@������������@����@�@��@��@�@����@����@�@@����@�@��������@�@�@�@@��@�@�	��
��@�@�
@�@���@�@�@�@��?��*��!�����@�@�@�@���@�@� @�@�"�%�#@�$@�@�&�(�'@�@�)@�@�+�4�,�1�-�/�.@�@�0@�@@�2�3@�@�5�:�6�8�7@�@�9@�@�;�=�<@�@�>@�@�@�W�A�L�B�G�C�E�D@�@�F@�@�H�J�I@�@�K@�@�M�R�N�P�O@�@�Q@�@�S�U�T@�@�V@�@�X�_�Y�\@�Z�[@�@�]@�^@�@@�`�a�c�b@�@�d@�@�f���g���h��i�t�j�o�k�m�l@�@�n@�@�p�r�q@�@�s@�@�u�z�v�x�w@�@�y@�@�{�}�|@�@�~@�@��������������@�@��@�@������@�@��@�@����������@�@��@�@������@�@��@�@������������������@�@��@�@������@�@��@�@����������@�@��@�@������@�@��@�@��������������@�@��@�@������@�@��@�@����������@�@��@�@������@�@��@�@����������������������@�@��@�@������@�@��@�@����������@�@��@�@������@�@��@�@��������������@�@��@�@������@�@��@�@����@����@�@@����@�@���	��������������@�@��@�@������@�@��@�@������@�@�@�@���@�@�@�@�
������
@�@�@�@���@�@�@�@�����@�@�@�@�@�@�@���� �y�!�N�"�9�#�.�$�)�%�'�&@�@�(@�@�*�,�+@�@�-@�@�/�4�0�2�1@�@�3@�@�5�7�6@�@�8@�@�:�E�;�@�<�>�=@�@�?@�@�A�C�B@�@�D@�@�F�K�G�I�H@�@�J@�@@�L�M@�@�O�f�P�[�Q�V�R�T�S@�@�U@�@�W�Y�X@�@�Z@�@�\�a�]�_�^@�@�`@�@�b�d�c@�@�e@�@�g�p�h�k�i@�j@�@�l�n�m@�@�o@�@�q�t�r@�s@�@�u�w�v@�@�x@�@�z���{���|���}���~���@�@��@�@��@��@�@����������@�@��@�@������@�@��@�@����������@��@�@������@�@��@�@����������@�@��@�@������@�@��@�@������������������@�@��@�@������@�@��@�@����@����@�@������@�@��@�@����������@��@�@������@�@��@�@����������@�@��@�@������@�@��@�@���L���������������������@�@��@�@������@�@��@�@����������@�@��@�@������@�@��@�@��������@����@�@@����@�@��������@��@����������������������������������������������	���
������
����������������@��@-K@���@�@�@�@��5��*� �%�!�#�"@�@�$@�@�&�(�'@�@�)@�@�+�0�,�.�-@�@�/@-K@�1�3�2@�@�4@�@�6�A�7�<�8�:�9@�@�;@�@�=�?�>@�@�@@�@�B�G�C�E�D@�@�F@�@�H�J�I@�@�K@�@�M�p�N�`�O�U@�P�Q�S�R@�@�T@�@�V�[�W�Y�X@�@�Z@�@�\�^�]@�@�_@�@�a�g�b@�c�e�d@�@�f@�@�h�k�i@�j@�@�l�n�m@�@�o@�@�q���r�}�s�x�t�v�u@�@�w@�@�y�{�z@�@�|@�@�~�������@�@��@�@������@�@��@�@��������������@�@��@�@������@�@��@�@������@��@�@������@�@��@�@��;���j������V��������������������@����@�@��@��@�@����������@�@��@�@������@�@��@�@��������������@�@��@�@������@�@��@�@����������@�@��@�@������@�@��@�@������������������@�@��@�@������@�@��@�@����������@�@��@�@@����@�@��������������@�@��@�@��@��@�@����@����@�@������@�@��@�@���'���������������@�@��@�@���@�@�@�@����	�@�@�
@�@���
@�@�@�@�������@�@�@�@���@�@�@�@��"�� �@�@�!@�@�#�%�$@�@�&@�@�(�?�)�4�*�/�+�-�,@�@�.@�@�0�2�1@�@�3@�@�5�:�6�8�7@�@�9@�@�;�=�<@�@�>@-K@�@�K�A�F�B�D�C@�@�E@�@�G�I�H@�@�J@�@�L�Q�M�O�N@�@�P@�@�R�T�S@�@�U@�@�W���X���Y�p�Z�e�[�`�\�^�]@�@�_@�@�a�c�b@�@�d@�@�f�k�g�i�h@�@�j@�@�l�n�m@�@�o@�@�q�z�r�u@�s�t@�@�v�x�w@�@�y@�@�{���|�~�}@�@�@�@������@�@��@�@������������@����@�@������@�@��@�@����������@�@��@�@������@�@��@�@��������������@�@��@�@������@-K@��@�@����������@�@��@�@������@�@��@�@����������������������@�@��@�@������@�@��@�@����������@�@��@�@������@�@��@�@��������������@�@��@�@��@��@�@����@����@�@������@�@��@�@������������������@�@��@�@������@�@��@�@����@����@�@������@�@��@�@�������������@�@��@�@������@�@��@�@���@�@�@@��@�@����	�[�
�7��"���
����@�@�@�@���@�@�@�@�����@�@�@�@�� �@�@�!@�@�#�,�$�)�%�'�&@�@�(@�@@�*�+@�@�-�2�.�0�/@�@�1@�@�3�5�4@�@�6@�@�8�K�9�B�:�?�;�=�<@�@�>@�@�@@�A@�@�C�F@�D�E@�@�G�I�H@�@�J@�@�L�P@�M@�N�O@�@�Q�V�R�T�S@�@�U@�@�W�Y�X@�@�Z@�@�\���]�~�^�s�_�d�`�b�a@�@�c@�@�e�g�f@�@�h@�i@�j@�k@@�l�m@�n@�o@�p@@�q�r@@-K�t�y�u�w�v@�@�x@�@�z�|�{@�@�}@�@�������@����@�@������@�@��@�@����������@�@��@�@������@�@��@�@������������������@�@��@�@������@�@��@�@����������@�@��@�@������@�@��@�@��������������@�@��@�@��@��@�@����������@�@��@�@@����@�@�������������������������@�@��@�@������@�@��@�@������@��@�@��@��@�@��������������@�@��@�@������@�@��@�@������@��@�@������@�@��@�@�����������������@�@��@�@������@�@��@�@����������@�@��@�@������@�@�@�@��
�����@�@�@�@�	��
@�@�@�@�����@�@�@�@�@�@�@��?��-��"�����@�@�@�@@� �!@�@�#�(�$�&�%@�@�'@�@�)�+�*@�@�,@�@�.�9�/�4�0�2�1@�@�3@�@�5�7�6@�@�8@�@�:@�;�=�<@�@�>@�@�@�U�A�J�B�E�C@�D@�@�F�H�G@�@�I@�@�K�P�L�N�M@�@�O@�@�Q�S�R@�@�T@�@�V�_�W�Z@�X�Y@�@�[�]�\@�@�^@�@�`�e�a�c�b@�@�d@�@�f�h�g@�@�i@�@�k���l��m���n���o���p�{�q�v�r�t�s@�@�u@�@�w�y�x@�@�z@�@�|���}��~@�@��@�@������@�@��@�@��������������@�@��@�@������@�@��@�@����������@�@��@�@������@�@��@�@������������@����@�@������@�@��@�@����������@�@��@�@��@��@�@����������@��@�@������@�@��@�@����@����@�@������@�@��@�@����������������������@�@��@�@������@�@��@�@����������@�@��@�@������@�@��@�@��������@����@�@������@�@��@�@����������@�@��@�@������@�@��@�@���
��������������@�@��@�@������@�@��@�@�����@�@�@�@���@�@�	@�@�����
��@�@�@�@���@�@�@�@��@��@�@���@�@�@�@� �{�!�L�"�7�#�,�$�'@�%�&@�@�(�*�)@�@�+@�@�-�2�.�0�/@-K@�1@�@�3�5�4@�@�6@�@�8�C�9�>�:�<�;@�@�=@�@�?�A�@@�@�B@�@�D�I�E�G�F@�@�H@�@�J@�K@�@�M�d�N�Y�O�T�P�R�Q@�@�S@�@�U�W�V@�@�X@�@�Z�_�[�]�\@�@�^@�@�`�b�a@�@�c@�@�e�p�f�k�g�i�h@�@�j@�@�l�n�m@�@�o@�@�q�v�r�t�s@�@�u@�@�w�y�x@�@�z@�@�|���}���~�����������@�@��@�@������@�@��@�@����������@�@��@�@������@�@��@�@��������������@�@��@�@������@�@��@�@����@����@�@������@�@��@�@������������������@�@��@�@��@��@�@����������@�@��@�@������@�@��@�@��������������@�@��@�@������@�@��@�@����������@�@��@�@������@�@��@�@�������1���������������������@�@��@�@@����@�@����������@�@��@�@������@�@��@�@��������������@�@��@�@@����@�@����������@�@��@�@���@�@�@�@��������
�	@�@�@�@�
@�@�@�����@�@�@�@���@�@�@�@��&��!���@-K@� @�@�"�$�#@�@�%@-K@�'�,�(�*�)@�@�+@�@�-�/�.@-K@�0@�@�2�_�3�J�4�?�5�:�6�8�7@�@�9@�@�;�=�<@�@�>@�@�@�E�A�C�B@�@�D@�@�F�H�G@�@�I@�@�K�V�L�Q�M�O�N@�@�P@�@�R�T�S@�@�U@�@�W�\�X�Z�Y@�@�[@�@@�]�^@�@�`�s�a�h�b�e�c@�d@�@�f@�g@�@�i�n�j�l�k@�@�m@�@�o�q�p@�@�r@�@�t��u�z�v�x�w@�@�y@�@�{�}�|@�@�~@�@����������@�@��@�@��@��@�@��������������������������@�@��@�@������@�@��@�@����������@�@��@�@������@�@��@�@��������������@�@��@�@@����@�@����@����@�@������@�@��@�@������������������@�@��@�@������@�@��@�@����������@�@��@�@������@�@��@�@��������������@�@��@�@������@�@��@�@����������@�@��@�@������@�@��@�@��������������@����@�@������@�@��@�@����@����@�@��@��@�@������������@�@��@�@��@�@@�@	@�@@�@
@�@
@�@&@�@@�@@�@@�@!@�@ @�@"$#@�@%@�@'0(+)@*@�@,.-@�@/@�@16243@�@5@�@798@�@:@�@<=�>�?�@mAXBMCHDFE@�@G@�@IKJ@�@L@�@NSOQP@�@R@�@TVU@�@W@�@YdZ_[]\@�@^@�@`ba@�@c@�@ehf@g@�@ikj@�@l@�@n�ozpuqsr@�@t@�@vxw@�@y@�@{�|~}@�@@�@���@�@�@�@����@��@�@���@�@�@�@�����@�@�@�@���@�@�@�@��������@��@�@���@�@�@�@�����@�@�@�@���@�@�@�@��@����@�@�@�@��@��@�@���@�@�@�@���������@�@�@�@@��@�@��@��@�@���@�@�@�@�������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�D���������@�@�@�@���@�@�@�@����@�@@�@@�@@�@
	
@�@@�@@�@@�@@@�@@�@@�@1&#! @�@"@�@$@%@�@',(*)@�@+@�@-/.@�@0@�@2;36@45@�@798@�@:@�@<A=?>@�@@@�@@BC@�@ErF[GPHKI@J@�@LNM@�@O@�@QVRTS@�@U@�@WYX@�@Z@�@\g]b^`_@�@a@�@ced@�@f@�@hmikj@�@l@�@npo@�@q@�@s�t}uzvxw@�@y@�@@{|@�@~���@�@�@�@���@�@�@�@����@��@�@���@�@�@�@�����@�@�@�@���@�@�@�@�O�������������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@-K@������@��@�@���@�@�@�@�����@�@�@�@���@�@�@�@����@��@�@���@�@�@�@�����@�@�@�@���@�@�@�@�(����@�@@�@@�@@�@	
@�@
@�@@@�@@�@@�@@�@@�@#! @�@"@�@$&%@�@'@�@)<*3+.,@-@�@/10@�@2@�@475@6@�@8:9@�@;@�@=F>A?@@@�@BDC@�@E@�@GLHJI@�@K@�@M@N@�@P�Q|RgS\TYUWV@�@X@�@@Z[@�@]b^`_@�@a@�@ced@�@f@�@hsinjlk@�@m@�@oqp@�@r@�@tyuwv@�@x@�@z@{@�@}�~�����@�@�@�@���@�@�@�@�����@�@�@�@�@�@�@�������@�@�@�@@��@�@�����@�@�@�@���@�@�@�@�����������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�����@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@���������@�@�@�@���@�@�@�@�����@�@�@�@@��@�@�������@�@�@�@���@�@�@�@�����@�@�@�@��@�@@�@[�`5	
@�@
@�@@�@@�@@�@@�@@�@@�@* %!#"@�@$@�@&('@�@)@�@+0,.-@�@/@�@132@�@4@�@6K7@8;@9:@�@<>=@�@?@�@AFBDC@�@E@�@GIH@�@J@�@LUMRNPO@�@Q@�@@ST@�@V[WYX@�@Z@�@\^]@�@_@�@a�bycndiegf@�@h@-d@jlk@�@m@�@otprq@�@s@�@uwv@�@x@�@z�{�|~}@�@@�@���@�@�@�@�����@�@�@�@���@�@�@�@���������@�@�@�@@��@�@���@�@�@�@�@�@�������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@������������@�@�@�@@��@�@�����@�@�@�@�@�@�@����@��@�@���@�@�@�@��@��@�@���@�@�@�@����@����@�@�@�@�����@�@�@�@���@�@�@�@������@�@�@�@���@�@@�@@�@@�@
	@�@@�@
4@�@@�@@@�@@@�@@@�@ +!&"$#@�@%@�@')(@�@*@�@,/-@.@�@021@�@3@�@5H6A7<8:9@�@;@�@=?>@�@@@�@BE@CD@�@@FG@�@IPJM@KL@�@@NO@�@QVRTS@�@U@�@WYX@�@Z@�@\
]�^�_v`kafbdc@�@e@�@gih@�@j@�@lqmon@�@p@�@rts@�@u@�@w�x{y@z@�@|~}@�@@�@�@���@�@�@�@���������@�@�@�@@��@�@��@��@�@@��@�@�������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�����������@�@�@�@���@�@�@�@�����@�@�@�@�@�@�@�������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@���������@�@�@�@���@�@�@�@��@��@�@���@�@�@�@�������@�@�@�@���@�@�@�@@�@@�@@�@	@�@d9
"@�@@�@@�@@�@@�@@�@@ !@�@#.$)%'&@�@(@�@*,+@�@-@�@/4021@�@3@�@576@�@8@�@:Q;F<A=?>@�@@@�@BDC@�@E@�@GLHJI@�@K@�@MON@�@P@�@R[SXTVU@�@W@�@Y@Z@�@\_]@^@�@`ba@�@c@�@e�fygphmikj@�@l@�@n@o@�@qvrts@�@u@�@@wx@�@z�{�|~}@�@@�@���@�@�@�@���@�@�@���@�@�@�@���������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@����@��@�@@��@�@�����@�@�@�@�@�@�@����e��� �p������������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�������@�@�@�@���@�@�@�@�����@�@�@�@@��@�@��������@�@�@�@���@�@�@�@�����@�@�@�@@�@@�@	@�@
@�@
@�@@�@@@�@@@�@C.#@@�@! @�@"@�@$)%'&@-K@(@�@*,+@�@-@-K@/:05132@�@4@�@687@�@9@�@;@<>=@�@?@�@@AB@�@D[EPFKGIH@�@J@�@LNM@�@O@�@QVRTS@�@U@�@WYX@�@Z@�@\g]b^`_@�@a@�@ced@�@f@-K@hk@ij@�@lnm@�@o@�@q�r�s�tuzvxw@�@y@�@{}|@�@~@�@��@��@�@���@�@�@�@���@���@�@�@�@�����@�@�@�@���@�@�@�@���������@�@�@�@���@�@�@�@���@�@�@���@�@�@�@�������@�@�@�@@��@�@�����@-d@�@�@@��@�@�����������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�	�������@�@�@�@�@�@�@�@�@@�@@�@@�@

@�@@�@@�@@�@@�@@�@@�@@�@!�"#P$9%.&+')(@�@*@�@,@-@�@/4021@�@3@�@576@�@8@�@:E;@<>=@�@?@�@ACB@�@D@�@FKGIH@�@J@�@LNM@�@O@�@QhR]SXTVU@�@W@�@Y[Z@�@\@�@^c_a`@�@b@�@dfe@�@g@�@itjokml@�@n@�@prq@�@s@�@uzvxw@�@y@�@{}|@�@~@�@��������@��@�@���@�@�@�@�����@�@�@�@���@�@�@�@�������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@���������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�8����������@�@�@�@���@�@�@�@���@�@�@���@�@�@�@������@�@�@�@���@�@�@�@@�@@�@	@�@
@�@!
@@�@@�@@�@@�@@�@@�@ @�@"-#($&%@�@'@�@)+*@�@,@�@.3/10@�@2@�@465@�@7@�@9h:Q;F<A=?>@�@@@�@BDC@�@E@�@GLHJI@�@K@�@MON@�@P@�@R]SXTVU@�@W@�@Y[Z@�@\@�@^c_a`@�@b@�@dfe@�@g@�@i~jukplnm@�@o@�@qsr@�@t@�@vy@wx@�@z|{@�@}@�@������@�@�@�@�@�@�@�����@�@�@�@���@�@�@�@�
�	H����������@��@�@@��@�@�����@�@�@�@���@�@�@�@�������@�@�@�@���@�@�@�@���@�@�@���@�@�@�@���������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�������@�@�@�@@��@�@�����@�@�@�@���@�@�@�@�	�	�������@�@�@�@���@�@�@�@��@��@�@			@�@	@�@						@	@�@	
		@�@	
@�@					@�@	@�@			@�@	@�@		1		&		!			@�@	 @�@	"	$	#@�@	%@�@	'	,	(	*	)@�@	+@�@	-	/	.@�@	0@�@	2	=	3	8	4	6	5@�@	7@�@	9	;	:@�@	<@�@	>	C	?	A	@@�@	B@�@	D	F	E@�@	G@�@	I	�	J	u	K	`	L	U	M	P	N@	O@�@	Q	S	R@�@	T@�@	V	[	W	Y	X@�@	Z@�@	\	^	]@�@	_@�@	a	l	b	g	c	e	d@�@	f@�@	h	j	i@�@	k@�@	m	r	n	p	o@�@	q@�@	s@	t@-K@	v	�	w	�	x	}	y	{	z@�@	|@�@	~	�	@�@	�@�@	�	�	�	�	�@�@	�@�@	�	�	�@�@	�@�@	�	�	�	�	�	�	�@	�@	�@	�@	�@@	�	�@-K@	�@�@	�	�	�@�@	�@�@	�	�	�	�	�@�@	�@�@	�@	�@�@	�	�	�	�	�	�	�	�	�	�	�@�@	�@�@	�	�	�@�@	�@�@	�	�	�	�	�@�@	�@�@	�	�	�@�@	�@�@	�	�	�	�	�	�	�@�@	�@�@	�	�	�@�@	�@�@	�	�	�	�	�@�@	�@�@	�	�	�@�@	�@�@	�	�	�	�	�	�@	�	�@�@	�@	�@�@	�	�	�	�	�@�@	�@�@	�	�	�@�@	�@�@	�	�	�	�	�	�	�@�@	�@�@	�	�	�@�@	�@�@	�	�	�@	�@�@	�	�	�@�@
@�@

�

Y

1









	@�@
@�@



@�@
@�@




@�@
@�@


@�@
@�@

(

#

!
 @�@
"@�@
$
&
%@�@
'@�@
)
,@
*
+@�@
-
/
.@�@
0@-K@
2
D
3
9
4@
5
7
6@�@
8@�@
:
?
;
=
<@�@
>@�@
@
B
A@�@
C@�@
E
N
F
K
G
I
H@�@
J@�@@
L
M@�@
O
T
P
R
Q@�@
S@�@
U
W
V@�@
X@�@
Z
�
[
p
\
e
]
`
^@
_@�@
a
c
b@�@
d@�@
f
k
g
i
h@�@
j@�@
l
n
m@�@
o@�@
q
|
r
w
s
u
t@�@
v@�@
x
z
y@�@
{@�@
}
�@
~
@�@
�
�
�@�@
�@�@
�
�
�
�
�
�
�
�
�@�@
�@-K@
�
�
�@�@
�@�@
�
�
�@
�@�@
�
�
�@�@
�@�@
�
�
�
�
�@
�@�@
�
�
�@�@
�@�@
�
�
�
�
�@�@
�@�@
�
�
�@�@
�@�@
�
�
�
�
�
�
�
�
�@
�
�@�@
�
�
�@�@
�@�@
�
�
�
�
�@�@
�@�@
�
�
�@�@
�@�@
�
�
�
�
�
�
�@�@
�@�@
�
�
�@�@
�@�@
�
�
�
�
�@�@
�@�@
�
�
�@�@
�@�@
�
�
�
�
�
�@
�
�@�@
�
�
�@�@
�@�@
�
�
�
�
�@�@
�@�@
�
�
�@�@
�@�@
�
�
�
�
�
�@�@
�@�@
�
�
�@�@@�@@�@@�@
	@�@@�@
:#@�@@�@@�@@�@@@�@! @�@"@�@$/%*&('@�@)@�@+-,@�@.@�@05132@�@4@�@687@�@9@�@;R<G=B>@?@�@A@�@CED@�@F@�@HMIKJ@�@L@�@NPO@�@Q@�@SZTW@UV@�@@XY@�@[`\^]@�@_@�@acb@�@d@�@f3g�hi�j�k{lumrnpo@�@q@�@s@t@�@v@wyx@-K@z@�@|�}�@~@�@���@�@�@�@�����@�@�@�@���@�@�@�@���������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�����@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�����������@�@�@�@���@�@�@�@���@�@�@���@�@�@�@�������@�@�@�@���@�@�@�@���@�@�@���@�@�@�@���������@�@�@�@@��@�@�����@�@�@�@���@�@�@�@	@�@@�@@@�@

@�@@�@@�@@�@nA,#@�@@�@! @�@"@�@$)%'&@�@(@�@*@+@�@-6.3/10@�@2@�@@45@�@7<8:9@�@;@�@=?>@�@@@�@BYCNDIEGF@�@H@�@JLK@�@M@�@OTPRQ@�@S@�@UWV@�@X@�@Zc[^\@]@�@_a`@�@b@�@diegf@�@h@�@jlk@�@m@�@o�p�q|rwsut@�@v@�@xzy@�@{@�@}�@~@�@�@�@�@�������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@���������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�
x�
&��������@��@�@���@�@�@�@�����@�@�@�@���@�@�@�@�������@�@�@�@���@�@�@�@��@��@�@���@�@�@�@�
�
�����@�@�@�@


@�@
@�@




@�@
	@�@



@�@
@�@






@�@
@�@


@�@
@�@

!


@�@
 @�@
"
$
#@�@
%@�@
'
Q
(
?
)
4
*
/
+
-
,@�@
.@�@
0
2
1@�@
3@�@
5
:
6
8
7@�@
9@�@
;
=
<@�@
>@�@
@
F@
A
B
D
C@�@
E@�@
G
L
H
J
I@�@
K@�@
M
O
N@�@
P@�@
R
i
S
^
T
Y
U
W
V@�@
X@�@
Z
\
[@�@
]@�@
_
d
`
b
a@�@
c@�@
e
g
f@�@
h@�@
j
q
k
n@
l
m@�@
o@
p@�@
r
u@
s
t@�@@
v
w@�@
y
�
z
�
{
�
|
�
}
�
~
�
@�@
�@�@
�
�
�@�@
�@�@
�
�
�
�
�@�@
�@�@
�
�
�@�@
�@�@
�
�
�
�
�
�
�@�@
�@�@
�
�
�@�@
�@�@
�
�
�
�
�@�@
�@�@
�
�
�@�@
�@�@
�
�
�
�
�
�
�
�
�@�@
�@�@
�
�
�@�@
�@�@
�
�
�
�
�@�@
�@�@
�
�
�@�@
�@�@
�
�
�
�
�
�
�@�@
�@�@
�
�
�@�@
�@�@
�
�
�
�
�@�@
�@�@
�
�
�@�@
�@�@
�
�
�
�
�
�
�
�
�
�@�@
�@�@
�
�
�@�@
�@�@
�
�
�
�
�@�@
�@�@
�
�
�@�@
�@�@
�
�
�
�
�
�
�@�@
�@�@
�
�
�@�@
�@�@
�
�@�@@�@@�@@�@	

@�@@�@@�@@�@@�@@�@@@�@* %!#"@�@$@�@&('@�@)@�@+0,.-@�@/@�@1@2@�@4�5�6�7f8O9D:?;=<@�@>@�@@BA@�@C@�@EJFHG@�@I@�@KML@�@N@�@P[QVRTS@�@U@�@WYX@�@Z@�@\a]_^@�@`@�@bdc@�@e@�@g~hsinjlk@�@m@�@oqp@�@r@�@tyuwv@�@x@�@z|{@�@}@�@������@�@�@�@���@�@�@�@�����@�@�@-K@���@�@�@�@�����������@�@�@�@@��@�@�����@�@�@�@@��@�@�������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@���������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�������@�@�@�@���@�@�@�@��@��@�@���@�@�@�@�J������@��@�@���@�@�@�@����@�@@-d@@�@@�@	@
@�@
@�@@�@@�@@�@@�@@�@3(#! @�@"@�@$&%@�@'@�@).*,+@�@-@�@/10@�@2@�@4?5:687@�@9@�@;=<@�@>@�@@EACB@�@D@�@FHG@�@I@�@KxLcMXNSOQP@�@R@�@TVU@�@W@-K@Y^Z\[@�@]@�@_a`@�@b@�@dmejfhg@�@i@�@k@l@�@nsoqp@�@r@�@tvu@�@w@�@y�z�{�|~}@�@@�@���@�@�@�@�����@�@�@�@���@-K@�@�@����@��@�@���@�@�@-K@�����@�@�@�@���@�@�@�@�V�������������@�@�@�@�@�@�@�����@�@�@�@���@�@�@�@�������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@���������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@���@���@�@�@�@�����@�@�@�@���@�@�@�@)@@�@	@�@
@�@
@@�@@�@@�@ @�@@�@@�@@�@!&"$#@�@%@�@'@(@�@*?+4,1-/.@�@0@�@@23@�@5:687@�@9@�@;=<@�@>@�@@KAFBDC@�@E@�@GIH@�@J@�@LQMON@�@P@�@RTS@�@U@�@W�X�YnZe[`\^]@�@_@�@acb@�@d@�@fig@h@�@jlk@�@m@�@oxpuqsr@�@t@�@v@w@�@y~z|{@�@}@�@��@�@�@�@������@��@�@���@�@�@�@�����@�@�@�@�@�@�@�������@�@�@�@�@�@�@�����@�@�@�@���@�@�@�@�����������@�@�@�@���@�@�@�@�����@�@�@�@�@�@�@�����@�@�@���@�@�@�@�����@�@�@�@@��@�@���������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�������@�@�@�@�@�@�@�����@�@�@�@�@�@@�@!��a	4
@
@�@@�@@�@@�@@�@@@�@)$ "!@�@#@�@%'&@�@(@�@*/+-,@�@.@�@021@�@3@�@5J6A7<8:9@�@;@�@=?>@�@@@�@BEC@D@�@FHG@�@I@�@KVLQMON@�@P@�@RTS@�@U@�@W\XZY@�@[@�@]_^@�@`@�@b�czdoejfhg@�@i@�@kml@�@n@�@puqsr@�@t@�@vxw@�@y@�@{�|�}~@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@���������@�@�@�@���@�@�@�@�����@�@�@�@@��@�@����@��@�@���@�@�@�@�����@�@�@�@���@�@�@�@������������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@������@�@�@���@�@�@�@�����@�@�@�@�@�@@�@
@�@	@�@
@�@@�@@�@@�@@�@@�@h3(#! @�@"@�@$&%@�@'@�@).*,+@�@-@�@/10@�@2@�@4_5Z687@�@9@:@�;<�=�>�?�@�A��BC�D�E��F�GH��I�JK�L�M��NO�P�Q�R�S�T�U�V�W�X�Y�@�[]\@�@^@�@`eacb@�@d@�@@fg@�@i~jukplnm@�@o@�@qsr@�@t@�@vyw@x@�@z|{@�@}@�@������@�@�@�@���@�@�@�@@����@�@�@�@�>����������@��@�@�@�@�@�����@�@�@�@�@�@�@�������@�@�@�@���@�@�@�@��@��@�@���@�@�@�@���������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�������@�@�@�@���@�@�@�@�����@�@�@�@@��@�@����������@�@�@�@@��@�@�����@�@�@�@���@�@�@�@�@@�@@�@@�@	@
@�@
@�@@�@'@�@@�@@@�@" @�@!@�@#%$@�@&@�@(3).*,+@�@-@�@/10@�@2@�@49576@�@8@�@:<;@�@=@�@?�@�AVBMCHDFE@�@G@�@IKJ@�@L@�@NQ@OP@�@RTS@�@U@�@W`X]Y[Z@�@\@�@@^_@�@a�b�c@d@e�f�g�h�i�j�k�l�m�n�o�p�q�r��st�u�v�w�x�y�z�{�|�}�~�����������-d���*�-d-d.������2���������������*��@�@���@�@�@�@���������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�������@�@�@�@�@�@�@�����@�@�@�@���@�@�@�@�����������@�@�@�@�@�@�@�����@�@�@�@���@�@�@�@�������@�@�@�@���@�@�@�@���@�@�@���@�@�@�@�
�������@�@�@�@���@�@�@�@@�@@�@@�@	@�@
@�@@�@@�@@�@@�@@�@@�@ @�@"�#�${%N&9'0(+@)*@�@,.-@�@/@�@16243@�@5@�@7@8@�@:E;@<>=@�@?@�@ACB@�@D@�@FIG@H@�@JLK@�@M@�@OfP[QVRTS@�@U@�@WYX@�@Z@�@\a]_^@�@`@�@bdc@�@e@�@grhmikj@�@l@�@npo@�@q@�@sxtvu@�@w@�@@yz@�@|�}�~�����@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�����@�@�@���@�@�@�@�����@�@�@�@@��@�@���������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�������@�@�@�@���@�@�@�@���@�@�@���@�@�@�@�.����������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@����@��@�@�@�@�@�����@�@�@�@���@�@@�@@@�@
	@�@@�@
@�@@�@@�@@�@#@�@@�@! @�@"@�@$)%'&@�@(@�@*,+@�@-@�@/\0G1<27354@�@6@�@8:9@�@;@�@=B>@?@�@A@�@CED@�@F@�@HQINJLK@�@M@�@@OP@�@RWSUT@�@V@�@XZY@�@[@�@]r^i_d`ba@�@c@�@egf@�@h@�@jm@kl@�@npo@�@q@�@s~tyuwv@�@x@�@z|{@�@}@�@����@�@�@�@@��@�@�C�������������@�@�@�@���@�@�@�@�����@�@�@�@�@�@�@�������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@���������@�@�@�@�@�@�@�����@�@�@�@���@�@�@�@�������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@����������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�	�@�@@�@@�@@�@

@�@@�@@�@@�@,!@�@@�@@�@ @�@"'#%$@�@&@�@(*)@�@+@�@-8.3/10@�@2@�@465@�@7@�@9>:<;@�@=@�@?A@@�@B@�@D�EtF]GRHMIKJ@�@L@�@NPO@�@Q@�@SXTVU@�@W@�@Y[Z@�@\@�@^i_d`ba@�@c@�@egf@�@h@�@jokml@�@n@�@prq@�@s@�@u�v�w|xzy@�@{@�@}~@�@�@�@�����@�@�@�@���@�@�@�@�������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�����������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@���������@�@�@�@���@�@�@�@�����@�@�@�@@��@�@�������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�n�a4
	
@�@@�@@�@@�@@�@@�@@�@@�@)$ "!@�@#@�@%'&@�@(@�@*/+-,@�@.@�@021@�@3@�@5J6A7<8:9@�@;@�@=?>@�@@@�@BE@CD@�@FHG@�@I@�@KVLQMON@�@P@�@RTS@�@U@�@W\XZY@�@[@�@]_^@�@`@�@b�cxdmeh@fg@�@ikj@�@l@�@nsoqp@�@r@�@tvu@�@w@�@y�z{}|@�@~@�@���@�@�@�@�����@�@�@�@���@�@�@�@���������@�@�@�@���@�@�@�@���@�@�@���@�@�@�@�������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@������������@�@�@�@���@�@�@�@��@��@�@@��@�@�������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@��������@�@�@�@���@�@�@�@�����@�@�@�@���@�@@�@
@�@@�@	
@�@@�@@�@@�@@�@@�@D-"@@�@ @!@�@#($&%@�@'@�@)+*@�@,@�@.9/4021@�@3@�@576@�@8@�@:?;=<@�@>@�@@BA@�@C@�@EWFL@GHJI@�@K@�@MRNPO@�@Q@�@SUT@�@V@�@XcY^Z\[@�@]@�@_a`@�@b@-K@diegf@�@h@�@jlk@�@m@�@o p�q�r�s~tyuwv@�@x@�@z|{@�@}@�@����@�@�@�@���@�@�@�@�������@�@�@�@@��@�@�����@�@�@�@@��@�@���������@�@�@�@���@�@�@�@�����@�@�@�@@��@�@����@��@�@���@�@�@�@�����@�@�@�@�@�@�@��������@��@�@@��@�@�����@�@�@�@���@�@�@�@�������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�	�������@�@�@�@���@�@�@�@�@�@@�@@�@@�@

@�@@�@@�@@�@@�@@�@@�@@�@!�"Q#:$/%*&('@�@)@�@+-,@�@.@�@05132@�@4@�@687@�@9@�@;F<A=?>@�@@@�@BDC@�@E@�@GLHJI@�@K@�@MON@�@P@�@RiS^TYUWV@�@X@�@Z\[@�@]@�@_d`ba@-K@c@�@egf@�@h@�@jukplnm@�@o@�@qsr@�@t@�@v{wyx@�@z@�@|~}@�@@�@��������@��@�@���@�@�@�@���@�@�@@��@�@����@��@�@@��@�@�����@�@�@�@���@�@�@�@���������@�@�@�@���@�@�@�@�����@�@�@-K@���@�@�@�@�������@�@�@�@�@�@�@�����@�@�@�@���@�@�@�@�E���/����������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�����@�@�@���@�@�@�@���@�@�@��@�@@�@
@�@	@�@
@�@@�@@�@@�@@�@@�@$@@�@ "!@�@#@�@%*&('@�@)@�@+-,@�@.@�@0[1F2=38465@�@7@�@9;:@�@<@�@>C?A@@�@B@�@@DE@�@GPHMIKJ@�@L@�@@NO@-d@QVRTS@�@U@�@WYX@�@Z@�@\q]f^c_a`@�@b@�@d@e@�@glhji@�@k@�@mon@�@p@�@r}sxtvu@�@w@�@y{z@�@|@�@~���@�@�@�@���@�@�@�@�������������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�������@�@�@�@���@�@�@�@�����@�@�@�@�@�@�@@��@-K@���@�@�@�@���������@�@�@�@���@�@�@-d@�����@�@�@�@���@�@�@�@�������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@���������@�@�@�@���@�@�@�@���@�@@�@@@�@
@	@�@
@�@@�@@@�@@�@@�@.% @�@@�@!#"@�@$@�@&)@'(@�@*,+@�@-@�@/:05132@�@4@�@687@�@9@�@;@<>=@�@?@�@ACB@�@D@�@F�G�HnI\JUKPLNM@�@O@�@QSR@�@T@�@VY@WX@�@Z@[@�@]h^c_a`@�@b@�@dfe@�@g@�@i@jlk@�@m@�@o�p{qvrts@�@u@�@wyx@�@z@�@|}@~@�@���@�@�@�@�������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�����������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@���������@�@�@�@���@�@�@�@���@�@�@���@�@�@�@����@��@�@���@�@�@�@�����@�@�@�@���@�@�@�@�N�#������@�@�@-K@@�@@�@	@�@
@�@
@�@@�@@�@@�@@@�@ @�@@�@!@"@�@$9%0&+')(@�@*@�@,.-@�@/@�@16243@�@5@�@7@8@�@:C;>@<=@�@?A@@�@B@�@DIEGF@�@H@�@JLK@�@M@�@OPbQW@RSUT@�@V@�@X]Y[Z@�@\@�@^`_@�@a@�@cndiegf@�@h@�@jlk@�@m@�@otprq@�@s@�@u}v@w@@x@yz@{@|@-K@~@�@���������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�(F�"����%�j������������@�@�@�@�@�@�@�����@�@�@�@���@�@�@�@�������@�@�@�@���@�@�@�@���@�@�@���@�@�@�@���������@�@�@-K@���@�@�@�@�����@�@�@�@@��@�@������@�@�@�@��@-K@@�@@�@@�@@	
@�@;
$@�@@�@@�@@�@@�@@�@ "!@�@#@�@%0&+')(@�@*@�@,.-@�@/@�@16243@�@5@�@798@�@:@�@<S=H>C?A@@�@B@�@DFE@�@G@�@INJLK@�@M@�@OQP@�@R@�@T_UZVXW@�@Y@�@[]\@�@^@�@`eacb@�@d@�@fhg@�@i@�@k�l�m�nyotprq@�@s@�@uwv@�@x@�@z{}|@�@~@�@���@�@�@�@�������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@���������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�����������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�������@�@�@�@���@�@�@�@�����@�@�@�@�@�@�@������@�@�@�@@�@@-K@	@@�@
@�@
@�@@�@@�@@�@@�@ @�@@�@!#"@�@$@�@&�'�(U)>*5+0,.-@�@/@�@132@�@4@�@6;798@�@:@�@@<=@�@?J@EACB@�@D@�@FHG@�@I@�@KPLNM@�@O@�@QSR@�@T@�@ViW`X]Y[Z@�@\@�@^@_@�@ad@bc@�@egf@�@h@�@jukplnm@�@o@�@qsr@�@t@�@v{wyx@�@z@�@|~}@�@@�@���������@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�������@�@�@�@���@�@�@�@���@�@�@���@�@�@�@���������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�;����������@�@�@�@@��@�@�����@�@�@�@���@�@�@�@�����@�@�@���@�@�@�@��@�@@�@@�@@�@	$

@�@@@@@@@@-K@@�@@�@!@�@ @�@"@#@�@%0&+')(@�@*@�@,.-@�@/@�@16243@�@5@�@798@�@:@�@<k=T>I?D@BA@�@C@�@EGF@�@H@�@JOKML@�@N@�@PRQ@�@S@�@U`V[WYX@�@Z@�@\^]@�@_@�@afbdc@�@e@�@gih@�@j@�@l�mvnq@op@�@rts@�@u@�@w|xzy@�@{@�@}~@�@�@�@�����@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�!
� Q�������������@�@�@�@@��@�@�����@�@�@�@���@�@�@�@�������@�@�@�@���@�@�@�@�����@�@�@�@���@-K@�@�@���������@�@�@�@���@�@�@�@�����@�@�@�@���@�@�@�@�������@�@�@�@���@�@�@�@�����@-K@�@�@���@�@�@�@� $� � �����@�@�@�@   @�@ @�@  
   @�@ 	@�@  
 @�@ @�@     @ @�@   @�@ @�@     @�@ @�@   " !@�@ #@�@ % < & 1 ' , ( * )@�@ +@�@ - / .@�@ 0@�@ 2 7 3 5 4@�@ 6@�@ 8 : 9@�@ ;@�@ = H > C ? A @@�@ B@�@ D F E@�@ G@�@ I L@ J K@�@ M O N@�@ P@�@ R � S � T i U ^ V [ W Y X@�@ Z@�@ \@ ]@�@ _ d ` b a@�@ c@�@ e g f@�@ h@�@ j u k p l n m@�@ o@�@ q s r@�@ t@�@ v { w y x@�@ z@�@ | ~ }@�@ @�@ � � � � � � � � �@�@ �@�@ � � �@�@ �@�@ � � � � �@�@ �@�@ � � �@�@ �@�@ � � � � � � �@�@ �@�@ � � �@�@ �@�@ � � � � �@�@ �@�@ � � �@�@ �@�@ � � � � � � � � � � �@�@ �@�@ � � �@�@ �@�@ � � � � �@�@ �@�@ �@ �@�@ � � � � � � �@�@ �@�@ � � �@�@ �@�@ � � �@ �@�@ � � �@�@ �@�@ � � � � � � � � �@�@ �@�@ � � �@�@ �@�@ � � � � �@�@ �@�@ � � �@�@ �@�@ � � � � � � �@�@ �@�@ � � �@�@ �@�@!!!!!@�@!@�@!!!@�@!	@�@!!�!!g!
!:!!%!!!!!!!@�@!@�@!!!@�@!@�@!! !!!@�@!@�@!!!#!"@�@!$@�@!&!1!'!,!(!*!)@�@!+@�@!-!/!.@�@!0@�@!2!7!3!5!4@�@!6@�@@!8!9@�@!;!P!<!E!=!@!>@!?@�@!A!C!B@�@!D@�@!F!K!G!I!H@�@!J@�@!L!N!M@�@!O@�@!Q!\!R!W!S!U!T@�@!V@�@!X!Z!Y@�@![@�@!]!b!^!`!_@�@!a@�@!c!e!d@�@!f@�@!h!�!i!�!j!u!k!p!l!n!m@�@!o@�@!q!s!r@�@!t@�@!v!{!w!y!x@�@!z@�@!|!~!}@�@!@�@!�!�!�!�!�!�!�@�@!�@�@!�@!�@�@!�!�@!�!�@�@!�!�!�@�@!�@�@!�!�!�!�!�!�!�!�!�@�@!�@�@!�!�!�@�@!�@�@!�!�!�!�!�@�@!�@�@!�!�!�@�@!�@�@!�!�!�!�!�!�!�@�@!�@�@!�!�!�@�@!�@�@!�!�!�!�!�@�@!�@-K@!�!�!�@�@!�@�@!�" !�!�!�!�!�!�!�!�!�!�!�@�@!�@�@!�!�!�@�@!�@�@!�!�!�!�!�@�@!�@�@!�!�!�@�@!�@�@!�!�!�!�!�!�!�@�@!�@�@!�!�!�@�@!�@�@!�!�!�!�!�@�@!�@�@!�!�!�@�@!�@�@!�"!�"!�!�!�!�!�@�@!�@�@!�!�!�@�@!�@�@"""""@�@"@�@""	"@�@"
@�@"""
""""@�@"@�@"""@�@"@�@"""@"@�@"""@�@"@�@"!"V"""9"#"."$")"%"'"&@�@"(@�@"*","+@�@"-@�@"/"4"0"2"1@�@"3@�@"5"7"6@�@"8@�@":"K";"F"<"D"=@">@"?@"@@"A@"B@"C@-K@"E@�@"G"I"H@�@"J@�@"L"Q"M"O"N@�@"P@�@"R"T"S@�@"U@�@"W"n"X"c"Y"^"Z"\"[@�@"]@�@"_"a"`@�@"b@�@"d"i"e"g"f@�@"h@�@"j"l"k@�@"m@�@"o"z"p"u"q"s"r@�@"t@�@"v"x"w@�@"y@�@"{"�"|"~"}@�@"@�@"�"�"�@�@"�@�@"�%h"�#�"�#="�"�"�"�"�"�"�"�"�"�"�"�"�@�@"�@�@@"�"�@�@"�"�"�"�"�@�@"�@�@"�"�"�@�@"�@�@"�"�"�"�"�"�"�@�@"�@�@"�"�"�@�@"�@�@"�"�"�"�"�@�@"�@�@"�"�"�@�@"�@�@"�"�"�"�"�"�"�"�"�@�@"�@�@@"�"�@�@"�"�"�"�"�@�@"�@�@"�"�"�@�@"�@�@"�"�"�"�"�@"�@�@"�"�"�@�@"�@�@"�"�"�"�"�@�@"�@�@@"�"�@�@"�#"�"�"�"�"�"�"�"�"�@�@"�@�@"�"�"�@�@"�@�@"�"�"�"�"�@�@"�@�@"�"�"�@�@"�@�@"�#"�#"�"�"�@�@"�@�@###@�@#@�@####	#@�@#
@�@###
@�@#@�@##(#######@�@#@�@###@�@#@�@#####!# @�@#"@�@#$#&#%@�@#'@�@#)#2#*#-#+@#,@�@#.#0#/@�@#1@�@#3#8#4#6#5@�@#7@�@#9#;#:@�@#<@�@#>#�#?#n#@#W#A#L#B#G#C#E#D@�@#F@�@#H#J#I@�@#K@�@#M#R#N#P#O@�@#Q@�@#S#U#T@�@#V@�@#X#c#Y#^#Z#\#[@�@#]@�@#_#a#`@�@#b@�@#d#i#e#g#f@�@#h@�@#j#l#k@�@#m@�@#o#�#p#{#q#v#r#t#s@�@#u@�@#w#y#x@�@#z@�@#|#�#}##~@�@#�@�@#�#�#�@�@#�@�@#�#�#�#�#�#�#�@�@#�@�@#�#�#�@�@#�@�@#�#�#�#�#�@�@#�@�@#�#�#�@�@#�@�@#�#�#�#�#�#�#�#�#�#�#�@�@#�@�@#�#�#�@�@#�@�@#�#�#�#�#�@�@#�@�@#�#�#�@�@#�@�@#�#�#�#�#�#�#�@�@#�@�@#�@#�@�@#�#�#�#�#�@�@#�@�@#�#�#�@�@#�@�@#�#�#�#�#�#�#�#�#�@�@#�@�@#�#�#�@�@#�@�@#�#�#�#�#�@�@#�@�@#�#�#�@�@#�@�@#�#�#�@#�@#�@�@#�#�#�#�#�@�@#�@�@#�#�#�@�@#�@�@#�$�#�$P#�$%#�$#�$#�#�#�#�#�@�@#�@�@#�$$@�@$@�@$$	$$$@�@$@�@$
$$@�@$
@�@$$$$$$$@�@$@�@$$$@�@$@�@$$ $$$@�@$@�@$!$#$"@�@$$@�@$&$;$'$0$($-$)$+$*@�@$,@�@$.@$/@�@$1$6$2$4$3@�@$5@�@$7$9$8@�@$:@�@$<$E$=$B$>$@$?@�@$A@�@$C@$D@�@$F$K$G$I$H@�@$J@�@$L$N$M@�@$O@�@$Q$~$R$g$S$^$T$Y$U$W$V@�@$X@�@$Z$\$[@�@$]@�@$_$b$`@$a@�@$c$e$d@�@$f@�@$h$s$i$n$j$l$k@�@$m@�@$o$q$p@�@$r@�@$t$y$u$w$v@�@$x@�@$z$|${@�@$}@�@$$�$�$�$�$�$�$�$�@�@$�@�@$�$�$�@�@$�@�@$�$�$�$�$�@�@$�@�@$�$�$�@�@$�@�@$�$�$�$�$�$�$�@�@$�@�@$�$�$�@�@$�@�@$�$�$�$�$�@�@$�@�@$�$�$�@�@$�@�@$�%
$�$�$�$�$�$�$�$�$�$�$�@�@$�@�@$�$�$�@�@$�@�@$�$�$�$�$�@�@$�@�@$�$�$�@�@$�@�@$�$�$�$�$�$�$�@�@$�@�@$�$�$�@�@$�@�@$�$�$�$�$�@�@$�@�@$�$�$�@-K@$�@�@$�$�$�$�$�$�$�$�$�@�@$�@�@$�$�$�@�@$�@�@$�$�$�$�$�@�@$�@�@$�$�$�@�@$�@�@$�%$�$�$�$�$�@�@$�@�@$�%$�@�@%@�@%%%%%@�@%@�@%	%%
@�@%@�@%%9%%$%%%%%%%@�@%@�@%@%@�@%%%%%@�@%@�@% %"%!@�@%#@�@%%%0%&%+%'%)%(@�@%*@�@%,%.%-@�@%/@�@%1%6%2%4%3@�@%5@�@%7@%8@�@%:%Q%;%F%<%A%=%?%>@�@%@@�@%B%D%C@�@%E@�@%G%L%H%J%I@�@%K@�@%M%O%N@�@%P@�@%R%]%S%X%T%V%U@�@%W@�@%Y%[%Z@�@%\@-K@%^%c%_%a%`@�@%b@�@%d%f%e@�@%g@�@%i&�%j&%%k%�%l%�%m%�%n%y%o%t%p%r%q@�@%s@�@%u%w%v@�@%x@�@%z%%{%}%|@�@%~@�@%�%�%�@�@%�@�@%�%�%�%�%�%�%�@�@%�@�@%�%�%�@�@%�@�@%�%�%�%�%�@�@%�@�@%�%�%�@�@%�@�@%�%�%�%�%�%�%�%�%�@�@%�@�@%�%�%�@�@%�@�@%�%�%�%�%�@�@%�@�@%�%�%�@�@%�@�@%�%�%�%�%�%�%�@�@%�@�@%�%�%�@�@%�@�@%�%�%�%�%�@�@%�@�@%�%�%�@�@%�@�@%�%�%�%�%�%�%�%�@%�%�@�@%�%�%�@�@%�@-K@%�%�%�%�%�@�@%�@�@%�%�%�@�@%�@�@%�%�%�%�%�%�%�@�@%�@�@%�%�%�@�@%�@�@%�%�%�%�%�@�@%�@�@%�%�%�@�@%�@�@%�&%�&%�&%�%�%�@�@%�@�@&@&@�@&&	&&&@�@&@�@&
&&@�@&
@�@&&&&&&&@�@&@�@&&&@�@&@�@&& &&&@�@&@�@&!&#&"@�@&$@�@&&&�&'&R&(&=&)&2&*&/&+&-&,@�@&.@�@@&0&1@�@&3&8&4&6&5@�@&7@�@&9&;&:@�@&<@�@&>&I&?&D&@&B&A@�@&C@�@&E&G&F@�@&H@�@&J&M&K@&L@�@&N&P&O@�@&Q@�@&S&j&T&_&U&Z&V&X&W@�@&Y@�@&[&]&\@�@&^@�@&`&e&a&c&b@�@&d@�@&f&h&g@�@&i@�@&k&w&l&q&m&o&n@�@&p@�@&r&t&s@�@&u@&v@-K@&x&}&y&{&z@�@&|@�@&~&�&@�@&�@�@&�&�&�&�&�&�&�&�&�&�&�@�@&�@�@@&�&�@�@&�&�&�&�&�@�@&�@�@&�&�&�@�@&�@�@&�&�&�&�&�@&�@�@&�&�&�@�@&�@�@&�&�&�&�&�@�@&�@�@&�&�&�@�@&�@�@&�&�&�&�&�&�&�&�&�@�@&�@�@&�&�&�@�@&�@�@&�&�&�&�&�@�@&�@�@&�&�&�@-K@&�@�@&�&�&�&�&�&�&�@�@&�@�@&�&�&�@�@&�@�@&�&�&�&�&�@�@&�@�@&�@&�@�@&�'�&�':&�'&�&�&�&�&�&�&�&�&�@�@&�@�@&�&�&�@�@&�@�@&�&�&�&�&�@�@&�@�@@&�&�@�@&�'&�&�&�&�&�@�@&�@�@&�&�&�@�@&�@�@'''''@�@'@�@''	'@�@'
@�@''#'
''''''@�@'@�@'''@�@'@�@'''''@�@'@�@''!' @�@'"@�@'$'/'%'*'&'(''@�@')@�@'+'-',@�@'.@�@'0'5'1'3'2@�@'4@�@'6'8'7@�@'9@�@';'j'<'S'='H'>'C'?'A'@@�@'B@�@'D'F'E@�@'G@�@'I'N'J'L'K@�@'M@�@'O'Q'P@�@'R@�@'T'_'U'Z'V'X'W@�@'Y@�@'[']'\@�@'^@�@'`'e'a'c'b@�@'d@�@'f'h'g@�@'i@�@'k'~'l'u'm'p'n@'o@�@'q's'r@�@'t@�@'v'y'w@'x@�@'z'|'{@�@'}@�@''�'�'�'�'�'�@�@'�@�@'�'�'�@�@'�@�@'�'�'�@'�@�@'�'�'�@�@'�@�@'�'�'�'�'�'�'�'�'�'�'�'�'�@�@'�@�@'�'�'�@�@'�@�@'�'�'�'�'�@�@'�@�@'�'�'�@�@'�@�@'�'�'�'�@'�'�@�@'�'�'�@�@'�@�@'�'�'�'�'�@�@'�@�@'�'�'�@�@'�@�@'�'�'�'�'�'�'�@'�@�@'�'�'�@�@'�@�@'�'�'�'�'�@�@'�@�@'�'�'�@�@'�@�@'�'�'�'�'�'�'�@�@'�@�@'�@'�@�@'�'�'�'�'�@�@'�@�@'�'�'�@�@'�@�@'�('�('�'�'�'�'�'�'�@�@'�@�@'�'�'�@�@'�@�@'�('�'�'�@�@(@�@(((@�@(@�@((((
(	((
@�@(@�@(((@�@(@�@(((((@�@(@�@(((@�@(@-K@((3((*( (%(!(#("@�@($@�@(&((('@�@()@�@(+(.@(,(-@�@(/(1(0@�@(2@�@(4(?(5(:(6(8(7@�@(9@�@(;(=(<@�@(>@�@(@(C@(A(B@�@@(D(E@�@(G.0(H+5(I)�(J)(K(�(L({(M(d(N(Y(O(T(P(R(Q@�@(S@�@(U(W(V@�@(X@�@(Z(_([(](\@�@(^@�@(`(b(a@�@(c@�@(e(p(f(k(g(i(h@�@(j@�@(l(n(m@�@(o@�@(q(v(r(t(s@�@(u@�@(w(y(x@�@(z@�@(|(�(}(�(~(�((�(�@�@(�@�@(�(�(�@�@(�@�@(�(�(�(�(�@�@(�@�@(�(�(�@�@(�@�@(�(�(�(�(�(�(�@�@(�@�@(�(�(�@�@(�@�@(�(�(�(�(�@�@(�@�@(�(�(�@�@(�@�@(�(�(�(�(�(�(�(�(�(�(�@�@(�@�@(�(�(�@�@(�@�@(�(�(�(�(�@�@(�@�@(�(�(�@�@(�@�@(�(�(�(�(�(�(�@�@(�@�@(�(�(�@�@(�@�@(�(�(�(�(�@�@(�@�@(�@(�@�@(�(�(�(�(�(�(�(�(�@�@(�@�@(�(�(�@�@(�@�@(�(�(�(�(�@�@(�@�@(�(�(�@�@(�@�@(�(�(�(�(�@(�@�@(�(�(�@�@(�@�@(�)(�(�(�@�@(�@�@)))@�@)@�@))c))4)))	))
)))
)@�@)@-K@@))@�@)))))@�@)@�@)))@�@)@�@)))))$) )")!@�@)#@�@)%)')&@�@)(@�@)*)/)+)-),@�@).@-K@)0)2)1@�@)3@�@)5)L)6)A)7)<)8):)9@�@);@�@)=)?)>@�@)@@�@)B)G)C)E)D@-K@)F@�@)H)J)I@�@)K@�@)M)X)N)S)O)Q)P@�@)R@�@)T)V)U@�@)W@�@)Y)^)Z)\)[@�@)]@�@)_)a)`@�@)b@�@)d)�)e)z)f)q)g)l)h)j)i@�@)k@�@)m)o)n@�@)p@�@)r)w)s)u)t@�@)v@�@@)x)y@�@){)�)|)�)}))~@�@)�@-K@)�)�)�@�@)�@�@)�)�)�)�)�@�@)�@�@@)�)�@�@)�)�)�)�)�)�)�)�)�@�@)�@�@)�)�)�@�@)�@�@)�)�)�)�)�@�@)�@�@)�)�)�@�@)�@�@)�)�)�)�)�)�)�@�@)�@�@)�)�)�@�@)�@�@)�)�)�)�)�@�@)�@�@)�)�)�@�@)�@�@)�*z)�*)�)�)�)�)�)�)�)�)�@)�@�@)�)�)�@�@)�@�@)�)�)�)�)�@�@)�@�@)�)�)�@�@)�@�@)�)�)�)�)�@)�@�@)�)�)�@�@)�@�@)�)�)�)�)�@�@)�@�@)�)�)�@�@)�@�@)�*)�)�)�)�)�)�)�@�@)�@�@)�)�)�@�@)�@�@)�)�)�)�)�@�@)�@�@***@�@*@�@******	*@�@*
@�@***
@-K@*@�@*****@�@*@�@***@�@*@�@**K**4**)**$* *"*!@�@*#@�@*%*'*&@�@*(@�@***/*+*-*,@�@*.@�@*0*2*1@�@*3@�@*5*@*6*;*7*9*8@�@*:@�@*<*>*=@�@*?@�@*A*F*B*D*C@�@*E@�@*G*I*H@�@*J@�@*L*c*M*X*N*S*O*Q*P@�@*R@�@*T*V*U@�@*W@�@*Y*^*Z*\*[@�@*]@�@*_*a*`@�@*b@�@*d*o*e*j*f*h*g@�@*i@�@*k*m*l@�@*n@�@*p*u*q*s*r@�@*t@�@*v*x*w@�@*y@�@*{*�*|*�*}*�*~*�**�*�*�*�@�@*�@�@*�*�*�@�@*�@�@*�*�*�*�*�@�@*�@�@*�*�*�@�@*�@�@*�*�*�*�*�@*�@�@*�*�*�@�@*�@�@*�*�*�*�*�@�@*�@�@*�@*�@�@*�*�*�*�*�*�*�*�*�@�@*�@�@*�*�*�@�@*�@-K@*�*�*�*�*�@�@*�@�@*�*�*�@�@*�@�@*�*�*�*�*�*�*�@-K@*�@�@*�*�*�@�@*�@�@*�*�*�*�*�@�@*�@�@*�*�*�@�@*�@�@*�+*�*�*�*�*�*�*�*�*�@�@*�@�@*�*�*�@�@*�@�@*�*�*�*�*�@�@*�@�@*�*�*�@�@*�@�@*�*�*�*�*�*�*�@�@*�@�@*�*�*�@�@*�@�@*�+*�*�*�@�@+@�@+++@�@+@�@+++++	++
++@�@+
@�@+++@�@+@�@+++++@�@+@�@+++@�@+@�@++*+ +%+!+#+"@�@+$@�@+&+(+'@�@+)@�@+++0+,+.+-@�@+/@�@+1+3+2@�@+4@�@+6,�+7+�+8+�+9+h+:+Q+;+F+<+A+=+?+>@�@+@@�@+B+D+C@�@+E@�@+G+L+H+J+I@�@+K@�@+M+O+N@-K@+P@�@+R+]+S+X+T+V+U@�@+W@�@+Y+[+Z@�@+\@�@+^+c+_+a+`@�@+b@�@+d+f+e@�@+g@�@+i+~+j+u+k+p+l+n+m@�@+o@�@+q+s+r@�@+t@�@+v+y+w@+x@�@+z+|+{@�@+}@�@++�+�+�+�+�+�@�@+�@�@+�+�+�@�@+�@�@+�+�+�+�+�@�@+�@�@+�+�+�@�@+�@�@+�+�+�+�+�+�+�+�+�+�+�@�@+�@�@+�+�+�@�@+�@�@+�+�+�+�+�@�@+�@�@+�+�+�@�@+�@�@+�+�+�+�+�+�+�@�@+�@�@+�+�+�@�@+�@�@+�+�+�+�+�@�@+�@�@+�+�+�@�@+�@�@+�+�+�+�+�+�+�+�+�@�@+�@�@+�+�+�@�@+�@�@+�+�+�+�+�@�@+�@�@+�+�+�@�@+�@�@+�+�+�+�+�+�+�@�@+�@�@+�+�+�@�@+�@�@+�+�+�+�+�@�@+�@�@+�+�+�@�@+�@�@+�,T+�,%+�,+�,+�+�+�+�+�@�@+�@�@+�,,@�@,@�@,,	,,,@�@,@�@,
,,@�@,
@�@,,,,,,,@�@,@�@,,,@�@,@�@,, ,,,@�@,@�@,!,#,"@�@,$@�@,&,=,',2,(,-,),+,*@�@,,@�@,.,0,/@�@,1@�@,3,8,4,6,5@�@,7@�@,9,;,:@�@,<@�@,>,I,?,D,@,B,A@�@,C@�@,E,G,F@-K@,H@�@,J,O,K,M,L@�@,N@�@,P,R,Q@�@,S@�@,U,�,V,m,W,b,X,],Y,[,Z@�@,\@�@,^,`,_@�@,a@�@,c,h,d,f,e@�@,g@�@,i,k,j@�@,l@�@,n,y,o,t,p,r,q@�@,s@�@,u,w,v@�@,x@�@,z,,{,},|@�@,~@�@,�,�,�@�@,�@�@,�,�,�,�,�,�,�,�,�@�@,�@�@,�,�,�@�@,�@�@,�,�,�,�,�@�@,�@�@,�,�,�@�@,�@�@,�,�,�,�,�,�,�@�@,�@�@,�,�,�@�@,�@�@,�,�,�,�,�@�@,�@�@@,�,�@�@,�-u,�-,�,�,�,�,�,�,�,�,�,�,�@�@,�@�@,�,�,�@�@,�@�@,�,�,�,�,�@�@,�@�@,�,�,�@�@,�@�@,�,�,�,�,�,�,�@�@,�@�@,�,�,�@�@,�@�@,�,�,�,�,�@�@,�@�@,�,�,�@�@,�@�@,�,�,�,�,�,�,�,�,�@�@,�@�@,�,�,�@�@,�@�@,�,�,�,�,�@�@,�@�@,�,�,�@�@,�@�@,�-,�-,�@,�@�@---@�@-@�@----	-@�@-
@�@---
@�@-@�@--H--1--&-----@�@-@�@--$-@-@-@-@-@- @-!@-"@-#@@-K-%@�@-'-,-(-*-)@�@-+@�@---/-.@�@-0@-K@-2-=-3-8-4-6-5@�@-7@�@-9-;-:@�@-<@�@->-C-?-A-@@�@-B@�@-D-F-E@�@-G@�@-I-`-J-U-K-P-L-N-M@�@-O@�@-Q-S-R@�@-T@�@-V-[-W-Y-X@�@-Z@�@-\-^-]@�@-_@�@-a-j-b-e-c@-d@�@-f-h-g@�@-i@�@-k-p-l-n-m@�@-o@�@-q-s-r@�@-t@�@-v-�-w-�-x-�-y-�-z--{-}-|@�@-~@�@-�-�-�@�@-�@�@-�-�-�-�-�@�@-�@�@-�-�-�@�@-�@�@-�-�-�-�-�-�-�@�@-�@�@-�-�-�@�@-�@�@-�-�-�-�-�@�@-�@�@-�-�-�@�@-�@�@-�-�-�-�-�-�-�-�-�@�@-�@�@-�-�-�@�@-�@�@-�-�-�-�-�@�@-�@�@-�-�-�@�@-�@�@-�-�-�-�@-�-�@�@-�-�-�@�@-�@�@-�-�-�-�-�@�@-�@�@-�-�-�@�@-�@�@-�.-�-�-�-�-�-�-�-�-�@�@-�@�@-�-�-�@-K@-�@�@-�-�-�-�-�@�@-�@�@-�-�-�@�@-�@�@-�-�-�-�-�-�-�@�@-�@�@-�-�-�@�@-�@�@-�-�-�-�-�@�@-�@�@-�..@�@.@�@......	.@.@�@.
..@�@.
@�@.....@�@.@�@...@�@.@�@..%.. ...@�@.@�@.!.#."@�@.$@�@.&.+.'.).(@�@.*@�@.,...-@�@./@�@.11.2/�.3.�.4.�.5.d.6.M.7.B.8.=.9.;.:@�@.<@�@.>.@.?@�@.A@�@.C.H.D.F.E@�@.G@�@.I.K.J@�@.L@�@.N.Y.O.T.P.R.Q@�@.S@�@.U.W.V@�@.X@�@.Z._.[.].\@�@.^@�@.`.b.a@�@.c@�@.e.|.f.q.g.l.h.j.i@�@.k@�@.m.o.n@�@.p@�@.r.w.s.u.t@�@.v@�@.x.z.y@�@.{@�@.}.�.~.�..�.�@�@.�@�@.�.�.�@�@.�@�@.�.�.�.�.�@�@.�@�@.�.�.�@�@.�@�@.�.�.�.�.�.�.�.�.�.�.�@�@.�@�@.�.�.�@�-K.�@�@.�.�.�.�.�@�@.�@�@.�.�.�@�@.�@�@.�.�.�.�.�.�.�@�@.�@�@.�.�.�@�@.�@�@.�.�.�.�.�@�@.�@�@.�.�.�@�@.�@�@.�.�.�.�.�.�.�@.�@�@.�.�.�@�@.�@�@.�.�.�.�.�@�@.�@-K@.�.�.�@�@.�@�@.�.�.�.�.�.�.�@�@.�@�@.�.�.�@�@.�@�@.�.�.�.�.�@-K@.�@�@.�.�.�@�@.�@�@.�/J.�/!.�/
.�.�.�.�.�.�.�@�@.�@�@.�.�.�@�@.�@�@/////@�@/@�@///@�@/	@�@/////
//@�@/@�@///@�@/@�@/////@�@/@�@///@�@/ @�@/"/5/#/,/$/'/%@/&@�@/(/*/)@�@/+@�@/-/0/.@//@�@/1/3/2@�@/4@�@/6/A/7/</8/:/9@�@/;@�@/=/?/>@�@/@@�@/B/G/C/E/D@�@/F@�@@/H/I@�@/K/x/L/c/M/X/N/S/O/Q/P@�@/R@�@/T/V/U@�@/W@�@/Y/^/Z/\/[@�@/]@�@/_/a/`@�@/b@�@/d/m/e/j/f/h/g@�@/i@�@@/k/l@�@/n/s/o/q/p@�@/r@�@/t/v/u@�@/w@�@/y/�/z/�/{/�/|/~/}@�@/@�@/�/�/�@�@/�@�@/�/�/�/�/�@�@/�@�@/�/�/�@�@/�@�@/�/�/�/�/�/�/�@�@/�@�@/�/�/�@�@/�@�@/�/�/�/�/�@�@/�@�@/�/�/�@�@/�@�@/�0a/�0/�/�/�/�/�/�/�/�/�/�/�@�@/�@�@/�/�/�@�@/�@�@/�/�/�/�/�@�@/�@�@/�/�/�@�@/�@�@/�/�/�/�@/�/�@�@/�/�/�@�@/�@�@/�/�/�/�/�@�@/�@�@/�/�/�@�@/�@�@/�/�/�/�/�/�/�/�/�@�@/�@�@/�/�/�@�@/�@�@/�/�/�/�/�@�@/�@�@/�/�/�@�@/�@�@/�/�/�/�/�/�/�@�@/�@�@/�/�/�@�@/�@�@/�/�/�@/�@�@000@�@0@�@002000000
0	00
@�@0@�@000@�@0@�@00000@�@0@�@@00@�@00'00"00 0@�@0!@�@0#0%0$@�@0&@�@0(0-0)0+0*@�@0,@�@0.000/@�@01@�@030J040?050:060807@�@09@�@0;0=0<@�@0>@�@0@0E0A0C0B@�@0D@�@0F0H0G@�@0I@�@0K0V0L0Q0M0O0N@�@0P@�@0R0T0S@�@0U@�@0W0\0X0Z0Y@�@0[@�@0]0_0^@�@0`@�@0b0�0c0�0d0{0e0p0f0k0g0i0h@�@0j@�@0l0n0m@�@0o@�@0q0v0r0t0s@�@0u@�@0w0y0x@�@0z@�@0|0�0}0�0~0�0@�@0�@�@0�0�0�@�@0�@�@0�0�0�0�0�@�@0�@�@0�0�0�@�@0�@�@0�0�0�0�0�0�0�0�0�@�@0�@�@0�0�0�@�@0�@�@0�0�0�0�0�@�@0�@�@0�0�0�@�@0�@�@0�0�0�0�0�0�0�@�@0�@�@0�@0�@�@0�0�0�0�0�@�@0�@�@0�0�0�@�@0�@�@0�0�0�0�0�0�0�0�0�0�0�@�@0�@�@0�0�0�@�@0�@�@0�0�@0�0�@�@0�0�0�@-K@0�@�@0�0�0�0�@0�0�@�@@0�0�@�@0�0�0�@0�@�@0�0�0�@�@0�@�@0�0�0�0�0�0�0�0�0�@�@0�@�@0�0�0�@�@0�@�@0�0�0�0�0�@�@0�@�@0�0�0�@�@0�@�@11@1111@�@1@�@1111
1	@�@1@�@1
11@�@1@�@12}11�11o11D11-11"11111@�@1@�@11 1@�@1!@�@1#1(1$1&1%@�@1'@�@1)1+1*@�@1,@�@1.191/14101211@�@13@�@151716@�@18@�@1:1?1;1=1<@�@1>@�@1@1B1A@�@1C@�@1E1\1F1Q1G1L1H1J1I@�@1K@�@1M1O1N@�@1P@�@1R1W1S1U1T@�@1V@�@1X1Z1Y@�@1[@�@1]1d1^1a@1_1`@�@1b@1c@�@1e1j1f1h1g@�@1i@�@1k1m1l@�@1n@�@1p1�1q1�1r1}1s1x1t1v1u@�@1w@�@1y1{1z@�@1|@�@1~1�11�1�@�@1�@�@@1�1�@�@1�1�1�1�1�1�1�@�@1�@-K@1�1�1�@�@1�@�@1�1�1�1�1�@�@1�@�@1�@1�@�@1�1�1�1�1�1�1�1�1�@�@1�@�@1�1�1�@�@1�@�@1�1�1�@1�@�@1�1�1�@�@1�@�@1�1�1�1�1�1�1�@�@1�@�@1�1�1�@�@1�@�@1�1�1�1�1�@�@1�@�@1�1�1�@�@1�@�@1�2&1�1�1�1�1�1�1�1�1�1�1�@�@1�@�@@1�1�@�@1�1�1�1�1�@�@1�@�@1�1�1�@�@1�@�@1�1�1�1�1�1�1�@�@1�@�@1�1�1�@�@1�@�@1�1�1�1�1�@�@1�@�@1�1�1�@�@1�@�@1�21�21�1�1�1�1�@�@1�@�@222@�@2@�@22
222@�@2	@�@22
2@�@2@�@2222222@�@2@�@222@�@2@�@22!222@�@2 @�@2"2$2#@�@2%@�@2'2T2(2?2)242*2/2+2-2,@�@2.@�@202221@�@23@�@252:262827@�@29@�@2;2=2<@�@2>@�@2@2I2A2F2B2D2C@�@2E@�@2G@2H@�@2J2O2K2M2L@�@2N@�@2P2R2Q@�@2S@�@2U2h2V2_2W2\2X2Z2Y@�@2[@�@2]@2^@�@2`2c2a@2b@�@2d2f2e@�@2g@�@2i2t2j2o2k2m2l@�@2n@�@2p2r2q@�@2s@�@2u2z2v2x2w@�@2y@�@@2{2|@�@2~3622�2�2�2�2�2�2�2�2�2�2�2�@�@2�@�@2�2�2�@�@2�@�@2�2�2�2�2�@�@2�@�@2�2�2�@�@2�@�@2�2�2�2�2�2�2�@�@2�@�@2�2�2�@�@2�@�@2�2�2�2�2�@�@2�@�@2�2�2�@�@2�@�@2�2�2�2�2�2�2�2�2�@�@2�@�@2�2�2�@�@2�@�@2�2�2�2�2�@�@2�@�@2�2�2�@�@2�@�@2�2�2�2�2�2�2�@�@2�@�@2�2�2�@�@2�@�@2�2�2�@2�@�@2�2�2�@�@2�@�@2�32�2�2�2�2�2�2�2�2�@�@2�@�@2�2�2�@�@2�@�@2�2�2�2�2�@�@2�@�@2�2�2�@�@2�@�@2�32�2�2�2�2�@�@2�@�@2�2�2�@�@3@�@33333@�@3@�@33
3	@�@3@�@3
3$3333333@�@3@�@333@�@3@�@33333@�@3@�@3 3"3!@�@3#@�@3%3+3&@3'3)3(@�@3*@�@3,313-3/3.@�@30@�@323433@�@35@�@373�383e393P3:3E3;3@3<3>3=@�@3?@�@3A3C3B@�@3D@�@3F3K3G3I3H@�@3J@�@3L3N3M@�@3O@�@3Q3\3R3W3S3U3T@�@3V@�@3X3Z3Y@�@3[@�@3]3b3^3`3_@�@3a@�@3c@3d@�@3f3}3g3r3h3m3i3k3j@�@3l@�@3n3p3o@�@3q@�@3s3x3t3v3u@�@3w@�@3y3{3z@�@3|@�@3~3�33�3�3�3�@�@3�@�@3�3�3�@�@3�@�@3�3�3�3�3�@�@3�@�@3�3�3�@�@3�@�@3�3�3�3�3�3�3�3�3�@3�@�@3�3�3�@�@3�@�@3�3�3�3�3�@�@3�@�@3�3�3�@�@3�@�@3�3�3�3�3�3�3�@�@3�@�@3�3�3�@�@3�@�@3�3�@3�3�@�@3�3�3�@�@3�@�@3�3�3�3�3�3�3�3�3�@�@3�@�@3�3�3�@�@3�@�@3�3�3�3�3�@�@3�@�@3�@3�@�@3�3�3�3�3�@3�@�@3�3�3�@�@3�@�@3�3�@3�3�@�@3�3�3�@�@3�@�@3�@3�@3�?t3�9y3�6�3�5H3�4�3�4E3�43�43�3�3�3�3�@3�@�@3�3�3�@�@3�@�@3�43�44@�@4@�@444@�@4@�@4	44
444
4@�@4@�@444@�@4@�@@4444@�@4@�@44044'44"44 4@�@4!@�@4#4%4$@�@4&@-K@4(4+@4)4*@�@4,4.4-@�@4/@�@414:4247434544@�@46@�@@4849@�@4;4@4<4>4=@�@4?@�@4A4C4B@�@4D@�@4F4l4G4^4H4S4I4N4J4L4K@�@4M@�@4O4Q4P@�@4R@�@4T4Y4U4W4V@�@4X@�@4Z4\4[@�@4]@�@4_4f4`4c@4a4b@�@@4d4e@�@@4g4h4j4i@-K@4k@�@4m4�4n4w4o4r4p@4q@�@4s4u4t@�@4v@�@4x4}4y4{4z@�@4|@�@4~4�4@�@4�@�@4�4�4�4�4�4�4�@�@4�@�@4�4�4�@�@4�@�@4�4�4�4�4�@�@4�@�@@4�4�@�@4�4�4�4�4�4�4�4�4�4�4�4�4�@�@4�@�@4�4�4�@�@4�@�@4�4�4�4�4�@�@4�@�@4�4�4�@�@4�@�@4�4�4�4�4�4�4�@�@4�@�@4�4�4�@�@4�@�@4�4�4�4�4�@�@4�@�@4�4�4�@�@4�@�@4�4�4�4�4�4�4�4�4�@�@4�@�@@4�4�@�@4�4�4�4�4�@�@4�@�@@4�4�@�@4�4�4�4�4�4�4�@�@4�@�@@4�4�@�@4�4�4�4�4�@�@4�@�@4�4�4�@�@4�@�@4�54�5
4�4�4�4�4�4�4�@�@4�@�@4�4�4�@�@4�@�@55555@�@5@�@555@�@5	@�@55555
55@�@5@�@5@5@�@55555@�@5@�@@55@�@55355(5 5#5!@5"@�@5$5&5%@�@5'@�@5)5.5*5,5+@�@5-@�@5/5150@�@52@�@545?555:565857@�@59@�@5;5=5<@�@5>@�@5@5E5A5C5B@�@5D@�@5F@5G@�@5I5�5J5�5K5v5L5a5M5V5N5Q5O@5P@�@5R5T5S@�@5U@�@5W5\5X5Z5Y@�@5[@�@5]5_5^@�@5`@�@5b5m5c5h5d5f5e@�@5g@�@5i5k5j@�@5l@�@5n5s5o5q5p@�@5r@�@5t@5u@�@5w5�5x5�5y5~5z5|5{@�@5}@�@55�5�@�@5�@�@5�5�5�5�5�@�@5�@�@5�5�5�@�@5�@�@5�5�5�5�@5�5�@�@5�5�5�@�@5�@�@5�5�5�5�5�@�@5�@�@@5�5�@�@5�5�5�5�5�5�5�5�@5�5�@�@@5�5�@�@5�5�5�5�5�@�@5�@�@5�5�5�@�@5�@�@5�5�5�5�5�@5�@�@5�5�5�@�@5�@�@5�5�@5�5�@�@5�5�5�@�@5�@�@5�5�5�5�5�5�5�5�5�@�@5�@�@5�5�5�@�@5�@�@5�5�5�5�5�@�@5�@�@5�5�5�@�@5�@�@5�5�5�5�5�5�5�@�@5�@�@5�5�5�@�@5�@�@5�5�5�5�5�@�@5�@�@@5�5�@�@5�6N5�6%5�65�65�5�@5�5�@�@5�66@�@6@�@66	666@�@6@�@6
66@�@6
@�@6666666@�@6@�@666@�@6@�@66 666@�@6@�@6!6#6"@�@6$@�@6&6;6'606(6+@6)6*@�@6,6.6-@-K@6/@�@6166626463@�@65@�@676968@�@6:@�@6<6C6=6@@6>6?@�@@6A6B@�@6D6I6E6G6F@�@6H@�@6J6L6K@�@6M@�@6O6~6P6g6Q6\6R6W6S6U6T@�@6V@�@6X6Z6Y@�@6[@�@6]6b6^6`6_@�@6a@�@6c6e6d@�@6f@�@6h6s6i6n6j6l6k@�@6m@�@6o6q6p@�@6r@�@6t6y6u6w6v@�@6x@�@6z6|6{@�@6}@�@66�6�6�6�6�6�6�6�@�@6�@�@6�6�6�@�@6�@�@6�6�6�6�6�@�@6�@�@6�6�6�@�@6�@�@6�6�6�6�6�@6�@�@6�6�6�@�@6�@�@6�6�6�6�6�@�@6�@�@6�6�6�@�@6�@�@6�86�7b6�76�6�6�6�6�6�6�6�6�6�6�@�@6�@�@6�6�6�@�@6�@�@6�6�6�6�6�@�@6�@�@6�@6�@�@6�6�6�6�6�6�6�@�@6�@�@6�6�6�@�@6�@�@6�6�6�6�6�@�@6�@�@6�6�6�@�@6�@�@6�6�6�6�6�6�6�6�6�@�@6�@�@6�6�6�@�@6�@�@6�6�6�6�6�@�@6�@�@6�@6�@�@6�6�6�6�6�6�6�@�@6�@�@6�6�6�@�@6�@�@6�77@7@�@777@�@7@�@7777	7 7
777777
@�@7@�@777@�@7@�@77777@�@7@�@777@�@7@�@7!7,7"7'7#7%7$@�@7&@�@7(7*7)@�@7+@�@7-727.707/@�@71@�@737574@�@76@�@787O797D7:7?7;7=7<@�@7>@�@7@7B7A@�@7C@�@7E7J7F7H7G@�@7I@�@7K7M7L@�@7N@�@7P7W7Q7T@7R7S@�@@7U7V@�@7X7]7Y7[7Z@�@7\@�@7^7`7_@�@7a@�@7c7�7d7�7e7z7f7q7g7l7h7j7i@�@7k@�@7m7o7n@�@7p@�@7r7w7s7u7t@�@7v@�@@7x7y@�@7{7�7|77}@7~@�@7�@7�@�@7�7�7�7�7�@�@7�@�@7�7�7�@�@7�@�@7�7�7�7�7�7�7�7�7�@�@7�@�@7�7�7�@�@7�@�@7�7�7�7�7�@�@7�@�@7�7�7�@�@7�@�@7�7�7�7�7�7�7�@�@7�@�@7�7�7�@�@7�@�@7�7�7�7�7�@�@7�@�@7�@7�@�@7�7�7�7�7�7�7�7�7�7�7�@�@7�@�@7�7�7�@�@7�@�@7�7�7�7�7�@�@7�@�@7�7�7�@�@7�@�@7�7�7�7�7�@7�@�@7�7�7�@�@7�@�@@7�7�7�7�@�@7�@�@7�7�7�7�7�7�7�7�7�@�@7�@�@7�7�7�@�@7�@�@7�7�7�7�7�@�@7�@�@7�7�7�@�@7�@�@7�87�87�87�@�@8@�@8@8@�@8888	8@�@8
@�@888
@�@8@�@88�88i88>88)8888888@�@8@�@8@8@�@88$8 8"8!@�@8#@�@8%8'8&@�@8(@�@8*838+808,8.8-@�@8/@�@@8182@�@8489858786@�@88@�@8:8<8;@�@8=@�@8?8V8@8K8A8F8B8D8C@�@8E@�@8G8I8H@�@8J@�@8L8Q8M8O8N@�@8P@�@8R8T8S@�@8U@�@8W8^8X8[8Y@8Z@�@8\@8]@�@8_8d8`8b8a@�@8c@�@8e8g8f@�@8h@�@8j8�8k8�8l8u8m8r8n8p8o@�@8q@�@@8s8t@�@8v8{8w8y8x@�@8z@�@8|8~8}@�@8@�@8�8�8�8�8�@8�@�@8�8�8�@�@8�@�@8�8�8�8�8�@�@8�@�@8�8�8�@�@8�@�@8�8�8�8�8�8�8�8�8�@�@8�@�@8�8�8�@�@8�@�@8�8�8�8�8�@�@8�@�@8�8�8�@�@8�@�@8�8�8�8�8�8�8�@�@8�@�@8�8�8�@�@8�@�@8�8�8�8�8�@�@8�@�@8�@8�@�@8�98�8�8�8�8�8�8�8�8�8�8�@�@8�@�@@8�8�@�@8�8�8�8�8�@�@8�@�@8�8�8�@�@8�@�@8�8�8�8�@8�8�@�@8�8�8�@�@8�@�@8�8�8�8�8�@�@8�@�@8�8�8�@�@8�@�@8�98�8�8�8�8�8�8�@�@8�@�@8�@8�@�@8�98�8�8�@�@8�@�@999@�@9@�@9999
9@9	@�@99
9@�@9@�@99999@�@9@�@999@�@9@�@99J99399(99#99!9 @�@9"@�@9$9&9%@�@9'@�@9)9.9*9,9+@�@9-@�@9/9190@�@92@�@949?959:969897@�@99@�@9;9=9<@�@9>@�@9@9E9A9C9B@�@9D@�@9F9H9G@�@9I@�@9K9b9L9W9M9R9N9P9O@�@9Q@�@9S9U9T@�@9V@�@9X9]9Y9[9Z@�@9\@�@9^9`9_@�@9a@�@9c9n9d9i9e9g9f@�@9h@�@9j9l9k@�@9m@�@9o9t9p9r9q@�@9s@�@9u9w9v@�@9x@�@9z<u9{:�9|:A9}9�9~9�99�9�9�9�9�9�9�9�@�@9�@�@9�9�9�@�@9�@�@9�9�9�9�9�@�@9�@�@9�9�9�@�@9�@�@9�9�9�9�9�9�9�@�@9�@�@9�9�9�@�@9�@�@9�9�9�9�9�@�@9�@�@9�9�9�@�@9�@�@9�9�9�9�9�9�9�9�9�@�@9�@�@9�9�9�@�@9�@�@9�9�9�9�9�@�@9�@�@9�9�9�@�@9�@�@9�9�9�9�9�9�9�@�@9�@�@9�9�9�@�@9�@�@9�9�@9�9�@�@9�9�9�@�@9�@�@9�:9�9�9�9�9�9�9�9�9�@�@9�@�@9�9�9�@�@9�@�@9�9�9�9�9�@�@9�@�@9�9�9�@�@9�@�@9�:9�9�9�9�9�@�@9�@�@9�9�9�@�@9�@9�@:�:��::�:�:�:�-d�::
:	::
@�@:@�@:::@�@:@�@::*:::::::@�@:@�@:::@�@:@�@: :%:!:#:"@�@:$@�@:&:(:'@�@:)@�@:+:6:,:1:-:/:.@�@:0@�@:2:4:3@�@:5@�@:7:<:8:::9@�@:;@�@:=:?:>@�@:@@�@:B:�:C:n:D:W:E:N:F:K:G:I:H@�@:J@�@@:L:M@�@:O:R:P@:Q@�@:S:U:T@�@:V@�@:X:c:Y:^:Z:\:[@�@:]@�@:_:a:`@�@:b@�@:d:i:e:g:f@�@:h@�@:j:l:k@�@:m@�@:o:�:p:y:q:t@:r:s@�@:u:w:v@�@:x@�@:z::{:}:|@�@:~@�@:�:�:�@�@:�@�@:�:�:�:�:�:�:�@�@:�@�@:�:�:�@�@:�@�@:�:�:�:�:�@�@:�@�@:�:�:�@�@:�@�@:�:�:�:�:�:�:�:�:�:�:�@�@:�@�@:�:�:�@�@:�@�@:�:�:�:�:�@�@:�@�@:�:�:�@�@:�@�@:�:�:�:�:�:�:�@�@:�@�@:�:�:�@�@:�@�@:�:�:�:�:�@�@:�@�@:�:�:�@�@:�@�@:�:�:�:�:�:�:�:�:�@�@:�@�@:�:�:�@�@:�@�@:�:�:�:�:�@�@:�@�@:�:�:�@�@:�@�@:�:�:�:�@:�:�@�@:�:�:�@�@:�@�@:�:�:�:�:�@�@:�@�@:�:�:�@�@:�@�@:�;�:�;Y:�;*:�;:�;:�;:�;;@�@;@�@;;;@�@;@�@;	;;
;;@�@;
@�@;;;@�@;@�@;;;;;;;@�@;@�@;;;@�@;@�@; ;%;!;#;"@�@;$@�@;&;(;'@�@;)@�@;+;B;,;7;-;2;.;0;/@�@;1@�@;3;5;4@�@;6@�@;8;=;9;;;:@�@;<@�@;>;@;?@�@;A@�@;C;N;D;I;E;G;F@�@;H@�@;J;L;K@�@;M@�@;O;T;P;R;Q@�@;S@�@;U;W;V@�@;X@�@;Z;�;[;r;\;g;];b;^;`;_@�@;a@�@;c;e;d@�@;f@�@;h;m;i;k;j@�@;l@�@;n;p;o@�@;q@�@;s;~;t;y;u;w;v@�@;x@�@;z;|;{@�@;}@�@;;�;�;�;�@�@;�@�@;�;�;�@�@;�@�@;�;�;�;�;�;�;�;�;�@�@;�@�@;�;�;�@�@;�@�@;�;�;�;�;�@�@;�@�@;�;�;�@�@;�@�@;�;�;�;�;�;�;�@�@;�@�@;�;�;�@�@;�@�@;�;�;�;�;�@�@;�@�@;�;�;�@�@;�@�@;�<;�;�;�;�;�;�;�;�;�;�;�@�@;�@�@;�;�;�@�@;�@�@;�;�;�;�;�@�@;�@�@;�;�;�@�@;�@�@;�;�;�;�;�;�;�@�@;�@�@;�;�;�@�@;�@�@;�;�;�;�;�@�@;�@�@;�;�;�@�@;�@�@;�<;�;�;�;�;�;�;�@�@;�@�@;�;�;�@�@;�@�@;�;�;�;�;�@�@;�@�@;�;�;�@�@<@�@<<
<<<<<@�@<@�@<	<<
@�@<@�@<<<<<@�@<@�@<<<@�@<@�@<<F<</<<&<<!<<<@�@< @�@<"<$<#@�@<%@�@<'<,<(<*<)@�@<+@�@@<-<.@�@<0<;<1<6<2<4<3@�@<5@�@<7<9<8@�@<:@�@<<<A<=<?<>@�@<@@�@<B<D<C@�@<E@�@<G<^<H<S<I<N<J<L<K@�@<M@�@<O<Q<P@�@<R@�@<T<Y<U<W<V@�@<X@�@<Z<\<[@�@<]@�@<_<j<`<e<a<c<b@�@<d@�@<f<h<g@�@<i@�@<k<p<l<n<m@�@<o@�@<q<s<r@�@<t@�@<v=�<w=6<x<�<y<�<z<�<{<�<|<�<}<<~@�@<�@�@<�<�<�@�@<�@�@<�<�<�<�<�@�@<�@�@<�<�<�@�@<�@�@<�<�<�<�<�<�<�@�@<�@�@<�<�<�@�@<�@�@<�<�<�<�<�@�@<�@�@<�<�<�@�@<�@�@<�<�<�<�<�<�<�<�<�@�@<�@�@<�<�<�@�@<�@�@<�<�<�<�<�@�@<�@�@<�<�<�@�@<�@�@<�<�<�<�<�<�<�@�@<�@�@<�<�<�@�@<�@�@<�<�<�<�<�@�@<�@�@<�<�<�@�@<�@�@<�=<�<�<�<�<�<�<�<�<�@�@<�@�@<�<�<�@�@<�@�@<�<�<�<�<�@�@<�@�@<�<�<�@�@<�@�@<�<�<�<�<�<�<�@�@<�@�@<�<�<�@�@<�@�@<�=<�=<�@�@=@�@===@�@=@�@===	==
===
=@�@=@�@===@�@=@�@=====@�@=@�@===@�@=@�@= =+=!=&="=$=#@�@=%@�@='=)=(@�@=*@�@=,=1=-=/=.@�@=0@�@=2=4=3@�@=5@�@=7=�=8=g=9=P=:=E=;=@=<=>==@�@=?@�@=A=C=B@�@=D@�@=F=K=G=I=H@�@=J@�@=L=N=M@�@=O@�@=Q=\=R=W=S=U=T@�@=V@�@=X=Z=Y@�@=[@�@=]=b=^=`=_@�@=a@�@=c=e=d@�@=f@�@=h==i=t=j=o=k=m=l@�@=n@�@=p=r=q@�@=s@�@=u=z=v=x=w@�@=y@�@={=}=|@�@=~@�@=�=�=�=�=�=�=�@�@=�@�@=�=�=�@�@=�@�@=�=�=�=�=�@�@=�@�@=�=�=�@�@=�@�@=�=�=�=�=�=�=�=�=�=�=�@�@=�@�@=�=�=�@�@=�@�@=�=�=�=�=�@�@=�@�@=�=�=�@�@=�@�@=�=�=�=�=�=�=�@�@=�@�@=�=�=�@�@=�@�@=�=�=�=�=�@�@=�@�@=�=�=�@�@=�@�@=�=�=�=�=�=�=�=�=�@�@=�@�@=�=�=�@�@=�@�@=�=�=�=�=�@�@=�@�@=�=�=�@�@=�@�@=�=�=�=�=�=�=�@�@=�@�@=�=�=�@�@=�@�@=�=�=�=�=�@�@=�@�@=�=�=�@�@=�@�@=�>�=�>V=�>'=�>=�>=�>=�=�=�@�@=�@�@>>>@�@>@�@>>>>	>@�@>
@�@>>>
@�@>@�@>>>>>>>@�@>@�@>>>@�@>@�@>>">> >@�@>!@�@>#>%>$@�@>&@�@>(>?>)>4>*>/>+>->,@�@>.@�@>0>2>1@�@>3@�@>5>:>6>8>7@�@>9@�@>;>=><@�@>>@�@>@>K>A>F>B>D>C@�@>E@�@>G>I>H@�@>J@�@>L>Q>M>O>N@�@>P@�@>R>T>S@�@>U@�@>W>�>X>o>Y>d>Z>_>[>]>\@�@>^@�@>`>b>a@�@>c@�@>e>j>f>h>g@�@>i@�@>k>m>l@�@>n@�@>p>{>q>v>r>t>s@�@>u@�@>w>y>x@�@>z@�@>|>�>}>>~@�@>�@�@>�>�>�@�@>�@�@>�>�>�>�>�>�>�>�>�@�@>�@�@>�>�>�@�@>�@�@>�>�>�>�>�@�@>�@�@>�>�>�@�@>�@�@>�>�>�>�>�>�>�@�@>�@�@>�>�>�@�@>�@�@>�>�>�>�>�@�@>�@�@>�>�>�@�@>�@�@>�?>�>�>�>�>�>�>�>�>�>�>�@�@>�@�@>�>�>�@�@>�@�@>�>�>�>�>�@�@>�@�@>�>�>�@�@>�@�@>�>�>�>�>�>�>�@�@>�@�@>�>�>�@�@>�@�@>�>�>�>�>�@�@>�@�@>�>�>�@�@>�@�@>�>�>�>�>�>�>�>�>�@�@>�@�@>�>�>�@�@>�@�@>�>�>�>�>�@�@>�@�@>�>�>�@�@>�@�@>�?
?????@�@?@�@???@�@?	@�@?????
@�@?@�@???@�@?@�@??E??.??#?????@�@?@�@??!? @�@?"@�@?$?)?%?'?&@�@?(@�@?*?,?+@�@?-@�@?/?:?0?5?1?3?2@�@?4@�@?6?8?7@�@?9@�@?;?@?<?>?=@�@??@�@?A?C?B@�@?D@�@?F?]?G?R?H?M?I?K?J@�@?L@�@?N?P?O@�@?Q@�@?S?X?T?V?U@�@?W@�@?Y?[?Z@�@?\@�@?^?i?_?d?`?b?a@�@?c@�@?e?g?f@�@?h@�@?j?o?k?m?l@�@?n@�@?p?r?q@�@?s@�@?u@?v@?w@?x@?y@?z@?{@?|@?}@?~@?@�@?�@?�@?�@?�@?�A4?�@?�A$?�?�?�@?�@?�@?�@�@?�A?�@y?�?�?�?�?�?�?�?�?�?�?���@?��@��?�?���?�?���?��?��?�?��?���?��?��?��?��?��?��?��?��?��?�?��?��?��?��?��?��?��?��?��?��?��?��?��?��?��.I�?�?��?��?�@�?��?��@�?�?�?�@?�@?�@�@?�?�?�@?�@�@?�?�?��?��?�@?�@?�@?�@?�@?�@?�@?�@?�@?�@?�@?�?�?�@?�@?�@�@?�@?�@?�@�@?��@�?�?�?�?�?�@?�@?�@�@?�@?�@?�@�@?�@u?��?�@�?��?��?��?�?��?��?���?�?��?���?�?��?��?��@��@@��@�@@�@��@�@�@	@
�@�@��@
�@�@�@@��@@�@@5@�@�@�@�@�@��@@�@�@�@�@ �@!�@"�@#�@$�@%�@&�@'�@(��@)@*��@+@,�@-�@.��@/@0�@1�@2�@3�@4�@��@6@7@V�@8�@9�@:@;��@<@=�@>�@?�@@�@A�@B�@C��@D@E��@F@G�@H�@I�@J��@K�@L@M��@N�@O�@P@Q��@R�@S�@T�@U�@@W�@X�@Y�@Z��@[@\�@]�@^�@_�@`�@a�@b�@c��@d�@e@f�@g�@h�@i��@j�@k@l�@m�@n��@o�@p�@q@r�@s�@t��@@v@@w@@x@�@@z@�@{@�@|@��@}�@~@��@@�@@�@@�@�@@�@�@�@@�@@�@�@@�@@�@@�@�@@�@�@�@�@�@@�@@�@�@@�@@�@@�@�@@�@�@�@��@�@��@�@�@�@��@��@@��@�@�@�@@�@@�@��@�@��@�@�@���@�@��@��@��@��@��@��@��@��@���@��@��@��@��@��@��@��@��@��@�@��@��@���@�@��@��@�@��@��@��@��@���@�@��@��@��@��@��@��@���@��@�@���@�@��@��@���@��@�@��@���@�@���@�@�@���@�@��@��@���@��@�@���@�@��@��@��@��@��@���@��@��@��@�@��@���@��@�@���@��@�@��@��@���@�@�AA�@@�AAAAA�AA
�AA�A	��@�AA��A
�@AAAAA�A�A�@�A@A@A@�@�AA@A@A@�@�A�A�A �A!�A"A#��@A%@A&@A'@A(@A)A0�A*�A+A,A.A-�@�A/��@A1@A2@A3@�@A5@A6@A7@A8@A9A�A:A`A;��A<�A=�A>�A?A@�AA�AB�AC�AD�AE�AF�AG�AH�AI�AJ�AK�AL��AMAN�AO��APAQ�AR��AS�AT�AU�AVAW��AXAY�AZ�A[��A\A]��A^A_�@�Aa��Ab�Ac�Ad�AeAf�Ag�Ah�Ai�Aj�Ak�Al�Am�An�Ao�Ap�Aq��ArAs��AtAu�Av�Aw��AxAy�Az�A{�A|�A}��A~A�A��A���A�A��A���A��@A��A��A���A��A��A�A��A��A��A��A��A��A��A��A��A��A��A���A�A���A�A���A�A��A��A��A���A��A��A�A��A���A�A��A��A���A�A���@A�@A�@A�@A�@A�ĬA�x�A�
��A���A�xIA�b#A�N+A�M�A�D!A�A�A�@A�dA�dA�dA�ddA�A�dA�dA�dA�dA�dA�dA�ddA�dA�A�dA�dA�dA�dA�dA�A�A�dA�dA�ddA�A�ddA�dA�dA�dA�dA�dA�dA�A�dA�dA�ddA�A�dA�ddA�dA�A�d@dA�dA�ddA�dA�dA�dA�A�ddA�dA�dA�dA�A�dA�ddA�dA�A�ddA�A�ddA�A�dA�dd@A�B9A�@A�@B@BM�BM�BM�BB0BB'BM�M�BBM�B	M�B
M�BM�BM�M�B
M�BM�BBM�BM�BM�BM�M�BM�BBM�M�BBM�BM�M�BM�BM�BM�BBM�BM�B M�B!M�B"M�B#M�M�B$B%M�B&M�@M�M�B(M�B)B*M�B+M�B,M�B-M�B.M�B/M�Z�M�B1M�B2M�M�B3B4M�B5M�B6M�B7M�B8M��1M�B:ClB;B�B<B�B=BVB>BMB?BFB@BCBA@BB@d@BD@BE@M@BGBJBH@BI@cW@BK@BL@`�@BNBRBO@BP@BQ@M@�,BSBT@BU@cW@BWB]BXB\BY@BZ@B[@xv@`�@B^BeB_BbB`@Ba@M@Bc@Bd@m�@BfB�Bg@Bh@Bi@BjL�BkL�L�BlBmL�BnL�BoL�BpL�BqL�BrL�BsL�BtL�L�BuBvL�L�BwL�BxL�ByBzL�B{L�B|L�B}L�B~L�BL�B�L�B�L�B�L�B�L�B�L�B�L�B�L�B�L�B�L�L��:B�@B�@g_@B�B�B�B�B�B�B�B�B�@B�@aN@B�@B�@|�@B�B�B�@B�@c�@B�@B�@d@B�B�B�B�B�@B�@B�@B�`�B�`�`�B�B�`�B�`�B�`�B�`�B�`�B�`�B�`�B�`�B�B�B�B�`�B�`�B�B�`�B�`�B�`�`�B�B�`�`�B�`�B�`�siB�`�`�B���`�B�B�B�`�`�B�B�`�`�B�`��J`�B�`�B�`�B�B�`�`��JB�@B�@xv@B�NB�@B�@d@B�B�B�B�dB�B�@B�@M�@B�@B�@B�@d@B�B�B�B�B�@B�@M@B�@B�@~@@B�B�@B�@g4@B�CB�B�B�B�B�B�NB�B�@B�@cW@B�B�B�@B�@N@B�@B�@b�@B�B�B�B�B�@B�@iM@B�@B�@cW@B�@B�@B�@`�@CC	CCC@C@C@`�@@CC@C@d@C
CCCC@C
@L@C@C@M@CCC@C@cW@C@C@N@CC*CC CCcWg4M�CC@C@b�@C!C#@C"d@C$C'C%@C&@cW@C(@C)@b�@C+CdC,C3C-C0C.@C/@g4@C1@C2@N@C4CaC5@C6@C7@NC8C9CSNC:C;CGNC<C=NNC>C?NNC@CANNCBCCNNCDCENNCFN;NNCHCINNCJNCKNCLCMNNCNNCONCPCQNNCRNX#NCTNCUNCVNCWNCXNCYNCZNC[NC\NC]NC^NC_NC`NQ�Cb@Cc@�,@@CeCfCiCg@Ch@aN@Cj@Ck@N@CmC�CnC�CoC�CpC|CqCuCrnWCs@Ct@L�@CvCyCw@Cx@d@Cz@C{@M�@C}C~M@CC�C�@C�@d@C�@C�@g_@C�C�C�C�C�C�C�@C�@ak@C�@C�@nW@dC�C�@C�@d@dC�C�C�C�@C�@L@b�@C�C�C�C�C�C�C�@C�@C�@L�@C�C�C�@C�@{
@C�@C�@g4@C�C�nWdC�b�C�@C�@g4@C�C�C�C�C�C�C�@C�@~@C�@C�@N@C�C�C�@C�@M@C�@C�@i�@C�C�n�C�C�@C�@d@C�C�C�@C�@aN@C�@C�@nW@C�C�C�C�C�C�C�C�b�C�C�@C�@b�@NC�C�@C�@M@C�C�C�`�C�@C�@`�@C�hC�@C�@b�@C�C�C�C�c�dC�@d{@C�C�C�@C�@C�@N@C�C�C�@C�@d@C�@C�@xv@C�DC�C�C�C�C�C�C�@C�@N@C�@C�@d@C�C�C�@C�@cW@C�@C�@M�@DDdDD@D@d@@dDDDDDDD	@D
@n�@D@D
@L�@DDD@D@M@D@D@M@DDDDD@D@d@D@D@��@DiMD@D @l@D"I�D#G�D$F�D%D�D&D\D'D=D(D4D)D-D*@D+@D,@d@D.D1D/@D0@d@D2@D3@d@D5D9D6xvD7@D8@b�@D:@D;@D<@d@D>DMD?DFD@DCDA@DB@aN@DD@DE@N@DGDJDH@DI@d@DK@DL@g_@DNDUDODRDP@DQ@�X@DS@DT@M@DVDYDW@DX@M@DZ@D[@b�@D]DsD^DjD_DfD`DcDa@Db@L�@Dd@De@`�@@DgDh@Di@M@DkDoDl@Dm@Dn@c�@nWDpDq@Dr@q~@DtD�DuD|DvDyDw@Dx@cW@Dz@D{@`�@D}j�D~@D@q~@D�D�D�MD�@D�@��@D�D�D�@D�@M@D�@D�@d]@D�E\D�D�D�D�D�D�dD�D�@D�@{
@q~@D�D�D�D�D�@D�@b�@D�@D�@cW@@D�D�@D�@b�@D�D�D�D�D�b�D�@D�@g_@@D�D�@D�@D�@D�q�D�q�D�q�D�q�D�q�D�q�D�q�D�q�D�q�D�q�D�q�D�q�D�q�D�q�q�dD�EUMD�D�dD�ddD�D�dD�dD�dD�dD�dD�dD�dq�D�D�q�D�q�D�q�q�D�D�ED�D�D�D�D�q�D�q�D�q�q�D�D�q�q�D�D�q�D�q�q�D�q�D�D�q�D�q�q�D�D�q�D�q�D�q�q�D�q�D�q�D�D�D�q�D�q�q�D�q�D�D�q�q�D�q�D�q�D�q�D�D�q�D�q�D�q�D�q�q�D�q�q�D�q�D�q�D�D�q�q�D�q�D�q�D�q�D�q�D�D�q�D�q�D�q�q�q�D�q�EEq�q�EEq�q�EEq�q�EEq�q�EE	q�E
q�Eq�q�EE
q�Eq�Eq�q�EE#Eq�q�Eq�EEq�q�Eq�EEq�Eq�Eq�q�EEq�Eq�q�EEq�E q�E!q�E"q�q�E$E5E%q�E&q�E'q�q�E(q�E)q�E*q�E+q�E,E-q�E.q�E/q�E0q�E1q�E2q�E3q�E4q�q�q�E6E7EFq�E8E9q�q�E:E;q�E<q�q�E=E>q�E?q�E@q�EAq�EBq�ECq�EDq�EEq�q�q�EGEHq�q�EIEJq�q�EKq�ELEMq�q�ENEOq�EPq�EQq�ERq�ESq�ETq�q�EVEYEW@EX@i�@EZ@E[@N@E]EmE^EgE_EcE`NEa@Eb@d@p�EdEe@Ef@iM@EhEi@z�xvEjEk@El@M@EnF�EoF�EpF�Eq@Er@Es@EtF�Eug4Evg4EwFrExg4Eyg4Ezg4E{FjE|FME}F	E~E�EE�E�E�E�E�E�E�g4�m,�+E��Mu#E�E�E�E�������g4E�E��E��+E��+E��+E��+E��+�+E��+E�E��+E��+�+E�E��+�+E�E��+#�+E�E�E�E�E�E�����E�E����E�E�E�E�2���2E�E�E��lE�2E�2E�2E�2E�2E�22E�2E�E�2E�2E�22E�E�2E�2E�22@�LE�E���E���E���E���E���E���E���E���E���E���E���E���E���E���E������zE�E�E�E�E�E�mE����[E�E��[uE���E�nE�nE�nE�nE�nE�E�E�E�E�nE�nE�nE�nE�nnE��MnnE�E�nnE�E�nnE�E�nn��E�E�nE�E�nnE�E�nnE�E�n�MnE�nE�nnE�E�nnE�E�n�nE�E�E�E����>��mE�x��ME�FE�FE�E��#����FFn���FFFFg4mg4#Fg4��g4F
F-FF)FFF
FFF���m�+FFi7��mg4Fg4Fg4Fg4Fg4Fg4Fg4Fg4Fg4Fg4Fg4Fg4Fg4F g4F!g4F"F&g4F#g4F$g4F%g4�LF'g4F(g4�+g4g4F*g4F+g4F,g4�+F.FFF/FCF0FAF1F@g4F2F3g4F4g4F5g4F6g4F7g4F8g4F9g4F:g4F;g4F<g4F=g4F>g4F?g4mg4g4�g4FBg4�3FDg4FEg4i7g4FGFJg4FHg4FIm,g4FKg4FLg4��g4FNFdFOg4FPFZFQFWFRFUFSFTuVg4�+_NFV���mFXg4FYg4��+F[F`F\F^F]g4��g4g4F_�Ug4Fag4FbFcg4#�g4Feg4g4Ffg4Fgg4Fhg4Fi�g4Fkg4Flg4Fmg4Fng4Fog4Fpg4Fqg4�
g4Fsg4FtF~g4Fug4FvFwg4Fxg4g4Fyg4FzF{g4g4F|F}g4m�[g4Fg4F�g4F�F�g4F�g4g4F�g4F�F�g4F�F���g4m��F�g4F�g4g4F�F�g4F�g4F�g4F�g4F�g4F�g4g4F�F�g4F�g4F�g4F�g4g42F�@F�@M@F�F�F�@F�@g4@F�@F�@��@F�F�F�NF�@F�@L�@F�NF�@F�@M@F�GfF�F�F�F�F�F�F�F�F�F�F�@F�@d@F�@F�@M�@F�F�F�@F�@F�@d{F�d{F�d{F�d{F�d{F�d{F�d{F�d{F�d{F�d{F�d{F�d{F�d{F�d{F�d{F�=d{F�@F�@|�@F�F�F�F�F�@F�@L�@F�@F�@d{@dF�F�@F�@xv@F�F�F�F�@F�F�@F�@b�@@F�F�@F�@g_@F�F�F�xvF�@F�@M@@F�F�@F�@d@F�G=F�G7F�G0F�F�F�@F�@N@F�@F�@F�@F�GF�MF�MF�MF�MF�MF�MMF�GGGMGMMGGMGMG�OM�OGMMG	G
MMG�OMMG
MGGMMGMGMGMGGGMGMGGMGGMGMGM�GMMG�OMGG*G MG!G%G"MMG#G$M�OMMG&G'MG(G)�OMM�G+MG,MG-MMG.G/M�;MG1G4G2@G3@N@G5@G6@j�@G8G<G9j�G:@G;@b�@L�@G>GWG?GCdG@GA@GB@b�@dGDGEdGFdGGdGHddGIdGJdGKGLdGMdGNdGOdGPdGQdGRdGSdGTddGUdGVo�dGXG_GYG\GZ@G[@g4@G]@G^@d@G`GcGa@Gb@߫@Gd@Ge@ku@GgG�GhG{GiGrGjGnM�GkGl@Gm@c�@Go@Gp@Gq@N@GsGwMGtGu@Gv@d@@GxGy@Gz@d@G|G�G}G�G~G�G@G�@d@G�@G�@d@G�e�G�@G�@M@G�G�`�G�G�@G�@n�@G�G�G�@G�@b�@G�@G�@��@G�G�G�G�G�G�@G�G�@G�@N@G�dG�@G�@b�@G�G�G�@G�@G�@c�@MG�G�@G�@l@G�G�G�G�G�G�G�@G�@b�@G�@G�@G�@G�dG�dG�dG�dG�dG�dG�dG�dG�dG�dG�dG�dG�dG�ddG�d�ZMn�G�G�G�@G�@G�@nW@G�b�G�@G�@p�@G�H�G�HKG�H!G�G�G�G�G�G�G�@G�@G�@nW@G�G�G�@G�@b�@G�@G�@d@G�G�G�liG�@G�@n�@G�@G�@G�@M@G�HG�G�G�@G�@G�@b�@G�HG�i�G�i�G�i�G�i�i�G�G�i�G�i�G�i�G�i�G�i�G�i�G�i�G�i�G�H
G�HG�G�G�i�G�i�i�3�HHHHi��eF�i�Hi�B�i�Hi�Hi�HH	Ki�i�B�Hi�Hi�i�H
Hi�i�HHi�Hi�Hi�Hi�HBz3�B�H@H@g_@HH@HH@H@b�@HNH@H @d@H"H;H#H2H$H+H%H(H&@H'@l@H)@H*@c�@H,H/H-@H.@N@H0@H1@g4@H3H7MH4H5@H6@d@dH8H9@H:@p�@H<HEH=HDH>HAH?@H@@p�@HB@HC@M@b�nWHFHGdL�HH`�HI@HJ@M@HLH|HMHcHNHWHOHShHPHQ@HR@L@HT@HU@HV@g4@HXH_HYH\HZ@H[@M�@H]@H^@g_@@H`Ha@Hb@M@HdHpHeHlHfHiHg@Hh@M@Hj@Hk@nW@@HmHn@Ho@N@HqHxHrHuHs@Ht@t�@Hv@Hw@aN@Hyc�Hz@H{@iM@H}H�H~H�HH�y7H�H�@H�@d{@H�M�H�@H�@y7@H�H�nWH�H�@H�@d@H�H�H�@H�@L�@H�@H�@i�@H�H�H�H�g4iMH�@H�@H�@M@H�H�d@H�H�H�@H�@q~@H�@H�@b�@H�IHH�H�H�H�H�H�H�g4n�H�H�@H�@q~@H�H�H�H�H�@H�@`�@H�@H�@g4@H�H�H�H�H�H�N_FQ�W�H�H�N+TFQ�N;H�@H�@g4@H�H�H�H�H�@H�@H�@b�@ty@H�H�H�H�H�@H�@L@H�@H�@N@H�H�H�@H�@M@H�@H�@H�@H�NH�NNH�H�NH�NNH�H�NH�NH�NNH�NH�NH�H�NH�NH�NH�NH�NH�NH�NH�NH�NH�NH�NH�NH�NH�NH�NH�NH�NH�NNH�N@H�IH�IH�H�H�H�H�@H�@nW@H�@H�@d{@III@I@M�@I@I@t�@III@I	@I
@p�@I@I
@I@M�@IIII@II@I@az@III@I@b�@I@I@M�@II$II!I@I @l�@I"@I#@y7@@I%I&MI'MI(MI)MI*MI+MI,MI-MI.MI/MI0MI1MI2MI3MMI4I5MI6MI7MMI8I9MI:MI;MI<MI=MI>MI?MI@MIAMIBMICMIDMIEMMIFMIGMq�III�IJI�IKIWILISIMIPIN@IO@b�@IQ@IR@N@@ITIU@IV@M�@IXIIYI\IZ@I[@N@I]akI^akI_akI`akIaakIbakIcakIdakIeakIfakIgakIhakIiakIjakIkakakIlakImakInakIoIpakIqakIrakIsakItakIuakIvakIwakIxakIyakIzakI{akakI|akI}akI~akٛI�@I�@I�@b�@I�I�I�I�@I�I�@I�@d@I�I�I�@I�@az@I�@I�@iM@I�I�ЛN@I�I�@I�@p�@I�I�I�I�I�I�I�I�I�@I�@m�@I�@I�@L�@xvI�I�@I�@d@I�I�d{I�I�@I�@nW@I�p�I�@I�@M�@I�I�I�I�I�cWI�@I�@m�@I�I�I�@I�@b�@I�dI�dI�dI�dI�dI�dI�dI�dI�dI�ddI�I�dI�dI�dI�dI�dI�dI�dI�dI�dI�dI�dI�dI�dI�dI�dI�dI�dI�dI�dI�dI�dI�dI�dd�I�I�I�g4I�@I�@cW@dI�I�@I�@M@I�K�I�J�I�JDI�JI�JI�I�I�I�xvI�I�@I�@xv@I�I�I�@I�@m�@I�@I�@b�@I�I�@I�I�@I�@d@I�I�I�@I�@d@I�@J@b�@JJJJ
JJJ@J@cW@J@J	@N@�HJJ@J
@`�@JJJJJ@J@g4@J@J@g_@@q~JJ.JJ"JJ!JJJ@J@c�@J@J @L�@db�J#J*J$J'J%@J&@p�@J(@J)@L�@NJ+J,@J-@p�@J/J8J0J4J1NJ2@J3@b�@J5rfJ6@J7@rf@J9J=J:d]J;@J<@d@J>JAJ?@J@@d@JB@JC@t�@JEJ�JFJ~JGJrJHJqJIJLJJ@JK@d@JMliJNliJOliJPJ_JQliJRliJSliliJTliJUliJVJWliJXliliJYJZliJ[liJ\liliJ]liJ^liq�liJ`liJaliJbliJcliJdliJeliJfliJgliJhliJiliJjliJkJlJnliJmlipzJoJplipz��Rdt�JsJwdJtJu@Jv@d@JxJ{Jy@Jz@d@J|@J}@N@JJ�J�J�J�J�J�@J�@M@J�@J�@b�@NJ�J�@J�@N@J�J�J�M�J�@J�@L�@J�J�J�@J�@d@J�@J�@d@J�J�J�J�J�J�c�J�J�@J�@`�@J�J�J�@J�@M@J�@J�@c�@J�J�J�J�J�@J�@xv@J�@J�@`�@J�J�J�@J�@d@J�@J�@M@J�J�J�J�J�dJ�@J�@N@dMJ�J�dMJ�J�J�@J�@N@J�@J�@aN@J�KQJ�K!J�KJ�J�J�J�J�J�J�@J�@L�@J�@J�@ku@MdJ�J�n�J�J�@J�@J�@J�M�J�M�J�J�J�M�J�M�J�M�J�M�M�J�J�M�J�M�J�M�J�M�J�M�J�M�J�M��J�J�M�J�M�J�M�J�M�J�M�J�M�J�M�J�M�J�M�J�M�J�M�J�M�J�M�J�M�J��0M��0J�M�J�M�J�J�J�J�{����[J�J��{��0M�KKK@K@M@K@K@b�@KKKKK	KK
@K@c�@K
@M@KKK@K@nW@K@K@p�@KKKg4K@K@L�@KKK@K@b�@K@K @nW@K"K;K#K2K$K+K%K(K&@K'@M@K)@K*@iM@K,K/K-@K.@M@K0@K1@��@K3K4dxvK5K8K6@K7@L�@K9@K:@p�@K<KHK=KANK>K?@K@@c�@KBKEKC@KD@y7@KF@KG@g_@KIKM@KJKK@KL@N@LKNKO@KP@b�@KRK�KSKlKTK]KUK\KVKYKW@KX@`�@KZ@K[@b�@L�aNK^KeK_KbK`@Ka@M@Kc@Kd@d@KfKiKg@Kh@b�@Kj@Kk@g4@KmK|KnKuKoKrKp@Kq@d@Ks@Kt@b�@KvKyKw@Kx@d{@Kz@K{@d@K}K�K~K�K@K�@nW@K�@K�@b�@aNb�K�K�K�K�K�K���K�K�@K�@K�@K�L�K�L�K�L�K�L�K�L�K�L�K�L�K�L�K�L�K�L�K�L�K�L�K�L�L�K�K�L�K�L�K�L�K�L�K�L�K�L�K�L�K�L�K�L�K�L�K�L�K�L�K�L�K�L�K�L�K�L�K�L��:L�K�K�K�@K�@q~@K�@K�@M@K�K�K�K�K�@K�@g4@K�@K�@M@K�K�K�@K�@L�@K�@K�@�,@K�K�K�K�@NNK�K�@K�@N@K�K�`�nWK�K�K�@K�@M@K�@K�@L�@K�MK�L[K�L%K�LK�K�K�K�K�K�K�@K�@c�@K�@K�@d@K�MK�@K�@M@K�LK�K�K�@K�@M�@K�b�K�b�K�b�K�b�K�b�K�b�K�b�K�b�K�b�K�b�K�b�K�b�K�b�K�b�K�b�K�b�b�K�K�LK�b�K�b�K�b�b�K�K�b�Lb�Lb�b�Lb�LLb�Lb�Lb�b�LLb�L	b�L
b�b��Y38b�L
dL@L@p�@LLLLMLL@b�@LLL@L@M�@L@L@N@LL!LML@L @ty@L"b�L#@L$@b�@L&LEL'L<L(L)n�xvL*L-L+@L,@nW@L.@L/@L0@L1g_L2g_L3g_L4g_L5g_L6g_L7g_L8g_L9g_g_L:g_L;�g_L=LAL>NL?@L@@d@`�LBLC@LD@t�@LFLOLGLKLH`�LI@LJ@�X@LLMLM@LN@M@LPLWLQLTLR@LS@��@LU@LV@c�@LXg_LY@LZ@aN@L\L�L]LL^LmL_LfL`LcLa@Lb@c�@Ld@Le@d@LgLjLh@Li@l@Lk@Ll@c�@LnL{LoLxLpLsLqLrNQ�Q�_�LtLuOE_FLv[�LwQ�]�[�Ly@Lz@M�@c�L|L}@L~@N@L�L�L�L�L�L�L�@L�@M@L�@L�@d@L�c�L�@L�@p�@L�L�L�L�L�@L�@c�@L�@L�@`�@LL�L�@L�@b�@L�L�L�L�L�L�L�L�L�@L�@b�@L�@L�@d{@L�@L�@L�@M@L�L�L�L�L�@L�@N@L�@L�@n�@L�L�L�@L�@d{@L�L�L�L�L�L�L�`�L�`�L�`�`�L�`�L�L�`�L�`�`�L�L�`�`�L�L�`�`�L�`�L�`�L�`�L�`�L�`�L�`�L�`�L�L�`�L�`�L�`�L�`�L�`�L�`�L�`�L�L�L�L�L�L�L�`�`�L�L�`�`�L�L�`�`�z�`�L�`�L�L�`�L�`�`�L�`�z�L�`�L�`�L�`�`�L�L�`�`�L�`�z�L�`�L�L�`�L�`�L�`�L�L�`�L�`�z�`�`�L�`�L�`�L�L�`�L�`�z�`�L�@L�@b�@p�{
L�L�L�L�L�@L�@N@L�@L�@M�@M@M@M@M@MM`MM6MMMMMM@M	M
@M@aN@b�M
nWMMnWMnWMnWMnWnWM)(�RMMd{MN@M@M@M@L�@MM+MM$MM!M@M @j�@M"@M#@b�@M%M(M&@M'@L�@M)@M*@aN@M,M1M-M0M.@M/@xv@b�Y�M2M3L�@M4@M5@d@M7MPM8MAM9M@M:M=M;@M<@d@M>@M?@b�@aNd{MBMIMCMFMD@ME@c�@MG@MH@M@MJMMMK@ML@c�@MN@MO@li@MQMWMRMVMSb�MT@MU@e�@xvi�MXM_MYM\MZ@M[@M@M]@M^@w�@@t�MaM�MbM{McMoMdMkMeMhMf@Mg@N@Mi@Mj@d@MlnWMm@Mn@L�@MpMwMqMtMr@Ms@t�@Mu@Mv@h@g4MxMy@Mz@d@M|M�M}M~q~`�Mg4M�@M�@p�@M�M�L�M�M�@M�@t�@M�dM�@M�@b�@M�M�M�M�M�M�M�M�M�@M�@M�@M�@M�@g4@M�aNM�@M�@c�@M�M�b�M�M�@M�@��@MM�M�@M�@p�@M�M�M�M�b�@MM�M�@M�@d@M�M�M�M�M�@M�@iM@M�@M�@d@M�M�M�@M�@L�@M�@M�@d@M�@M�@M�@M�M�M�MM�MM�MM�MM�MM�MM�MM�MM�MM�MM�M�MM�M�MM�MM�MM�MM�MMM�M�MM�MM�MMM�M�M�MM�M~M�M)xMM�MMM�MM�MM�MM�~)xMM�MM�MM�M�NM�MM�MMM�MM�MM�M�MMM�M�MMM�MM�MM�M�MMM�M�MM�MMM�MM�M�MM�MMM�MM�M�MM�MM�MMM�MM�MM�M�MMM�M�MNMNMNMNMNMNMM@NMMNMN	MN
NMNMN
MNMMNNMMNMNMNNMNMNMNMNMNMNMNMNMNMNMMNN MMN!MN"N#MN$MN%MN&MN'MN(MN)MN*MM@N,SEN-P�N.OzN/N�N0NuN1NTN2NCN3N;N4N6N5@iM@N7@N8@N9@N:@aN@N<NAN=@N>@N?@N@@L�@NB@`�@NDNLNENGNF@m�@NH@NI@NJ@NK@c�@NMNONN@g4@NP@NQ@NR@NS@`�@NUNaNVN^NWN\NX@NY@NZ@N[@d@N]@c�@N_@N`@N@NbNmNcNhNd@Ne@Nf@Ng@d]@Ni@Nj@Nk@Nl@��@NnNsNo@Np@Nq@Nr@cW@Nt@L�@NvN�NwN�NxN�NyN~Nz@N{@N|@N}@b�@N@N�@N�@N�@`�@N�N�N�@N�@N�@N�@M@N�@N�@N�@N�@c�@N�N�N�N�N�@N�@N�@N�@L�@N�@N�@N�@N�@M@N�N�N�@N�@N�@N�@L�@N�@az@N�N�N�N�N�N�N�@N�@N�@N�@M@N�@N�@N�@N�@d@N�N�N�@N�@N�@N�@M@N�@N�@N�@N�@b�@N�N�N�N�N�@p�@N�@N�@N�@N�@M@N�N�N�@N�@N�@N�@az@N�@N�@N�@N�@`�@N�O&N�N�N�N�N�N�N�N�N�@N�@N�@N�@g4@N�@N�@N�@N�@b�@N�N�N�@N�@N�@N�@{
@N�@N�@N�@N�@aN@N�N�N�N�N�@N�@N�@N�@b�@N�@N�@N�@N�@b�@N�N�N�@N�@N�@N�@M@N�@N�@N�@N�@M@OOOO	OOO@O@O@O@b�@O@�H@O
OO@O@O
@O@p�@O@O@O@O@L@OOOOO@O@b�@O@O@O@O@w�@OO$O @O!@O"@O#@N@O%@i�@O'ONO(O7O)O4O*O/O+@O,@O-@O.@b�@O0@O1@O2@O3@rf@O5@O6@L�@O8OCO9O>O:@O;@O<@O=@g4@O?@O@@OA@OB@L�@ODOIOE@OF@OG@OH@`�@OJ@OK@OL@OM@b�@OOOcOPO[OQOVOR@OS@OT@OU@d@OW@OX@OY@OZ@d@O\OaO]@O^@O_@O`@cW@Ob@`�@OdOoOeOjOf@Og@Oh@Oi@L�@Ok@Ol@Om@On@�I@OpOuOq@Or@Os@Ot@az@Ov@Ow@Ox@Oy@aN@O{P
O|O�O}O�O~O�OO�O�O�O�@ak@O�@O�@O�@O�@aN@O�O�O�@d@O�@O�@O�@O�@b�@O�O�O�O�O�@O�@O�@O�@xv@O�@e�@O�O�O�@O�@O�@O�@��@O�@O�@O�@O�@g_@O�O�O�O�O�O�O�@M@O�@L@O�O�O�@�b@O�@O�@O�@O�@d@O�O�O�@O�@d@O�O�O�@O�@O�@O�@aN@O�@O�@O�@O�@b�@O�O�O�O�O�O�O�O�O�@O�@O�@O�@M@O�@O�@O�@O�@L�@O�O�O�@O�@O�@O�@`�@O�@K�@O�O�O�O�O�@O�@O�@O�@b�@O�@O�@O�@O�@b�@@O�O�@M@O�O�O�O�O�O�O�@O�@O�@O�@L�@O�@O�@O�@O�@nW@O�O�O�@O�@O�@O�@j�@O�@O�@O�@O�@e�@O�P
PPP@P@P@P@L@P@P@P@P	@p�@P@P@cW@PPPPP1PP'PPPPP@P@P@P@b�@P@P@P@P@li@PP"P@P@P @P!@d@P#@P$@P%@P&@iM@P(P.@P)P*@P+@P,@P-@L�@P/@P0@p�@P2PFP3P;P4P6P5@xv@P7@P8@P9@P:@b�@P<PAP=@P>@P?@P@@M@PB@PC@PD@PE@|�@PGPMPH@PI@PJ@PK@PL@d@@PNPO@L@PQP�PRPiPSP^PTPYPU@PV@PW@PX@d@PZ@P[@P\@P]@N@P_PdP`@Pa@Pb@Pc@N@Pe@Pf@Pg@Ph@ak@PjPuPkPpPl@Pm@Pn@Po@K�@Pq@Pr@Ps@Pt@|�@PvP{Pw@Px@Py@Pz@cW@P|@P}@P~@P@az@P�P�P�P�@P�P�@P�@P�@P�@L@P�P�P�@P�@P�@P�@L�@P�@P�@P�@P�@nW@P�P�P�P�P�@P�@P�@P�@b�@P�@d@P�P�P�@P�@P�@P�@L�@P�@L@P�RP�QBP�P�P�P�P�P�P�P�P�P�P�@|�@P�@P�@P�@P�@N@@P�P�@P�@P�@P�@M�@P�P�P�P�P�@P�@P�@P�@d@P�@P�@P�@P�@t�@P�P�P�@P�@P�@P�@b�@P�@l@P�P�P�P�P�P�P�@P�@P�@P�@xv@P�@P�@P�@P�@b�@P�@P�@N@P�P�P�P�P�@P�@P�@P�@b�@P�@P�@P�@P�@ak@P�P�P�@P�@P�@P�@N@P�@P�@P�@P�@nW@P�QP�QP�P�P�@P�@P�@P�@P�@b�@P�QP�@P�@Q@Q@p�@Q@Q@Q@Q@M@QQQ	QQ
@Q@Q@Q
@�X@Q@M@QQQ@Q@Q@Q@N@Q@Q@Q@Q@iM@QQ3QQ(QQ#Q@Q @Q!@Q"@d@Q$@Q%@Q&@Q'@g4@Q)Q.Q*@Q+@Q,@Q-@`�@Q/@Q0@Q1@Q2@cW@Q4Q<Q5Q7Q6@|�@Q8@Q9@Q:@Q;@c�@Q=@Q>@Q?@Q@@QA@M�@QCQ�QDQhQEQWQFQQQGQLQH@QI@QJ@QK@t�@QM@QN@QO@QP@M@QR@QS@QT@QU@QV@M@QXQ`QYQ[QZ@cW@Q\@Q]@Q^@Q_@c�@QaQfQb@Qc@Qd@Qe@c�@Qg@`�@QiQ�QjQpQk@Ql@Qm@Qn@Qo@\�@QqQ�Qr@Qs@QtMQuMQvMQwMQxMQyMQzMQ{MQ|MMQ}MQ~MQQ�MQ�MQ�MQ�MMQ�MŹQ�@Q�@Q�@Q�@d@Q�Q�Q�Q�Q�@M@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�`�`�Q�,`�Q�Q�Q�`�Q�`�,`�Q�Q�Q�`�`�,`�Q�`�,Q�Q�Q�@Q�@Q�@Q�@M�@Q�@Q�@Q�@Q�@�G@Q�Q�Q�Q�Q�Q�Q�Q�Q�@Q�@Q�@Q�@M@Q�@Q�@Q�@Q�@b�@Q�@Q�@d@Q�Q�Q�Q�Q�@Q�@Q�@Q�@`�@Q�@Q�@Q�@Q�@c�@Q�Q�Q�@Q�@Q�@Q�@b�@Q�@c�@Q�RQ�Q�Q�Q�Q�@Q�@Q�@Q�@�I@Q�@Q�@Q�@Q�@L�@Q�Q�Q�@c�@Q�@Q�@Q�@R@M@RR
RRR@R@R@R@M@R	@R
@R@R@`�@@RR@R@R@R@c�@RR�RRgRR8RR.RR#RRR@R@R@R@xv@R@R @R!@R"@b�@R$R)R%@R&@R'@R(@M@R*@R+@R,@R-@M�@R/R2R0@R1@L�@@R3R4@R5@R6@R7@b�@R9RPR:RER;R@R<@R=@R>@R?@M�@RA@RB@RC@RD@i�@RFRKRG@RH@RI@RJ@q~@RL@RM@RN@RO@N@RQR\RRRWRS@RT@RU@RV@d]@RX@RY@RZ@R[@d@R]RbR^@R_@R`@Ra@M�@Rc@Rd@Re@Rf@d@RhR�RiR}RjRuRkRpRl@Rm@Rn@Ro@M@Rq@Rr@Rs@Rt@aN@RvRxRw@L�@Ry@Rz@R{@R|@b�@R~R�R@R�@R�@R�@R�@d@R�R�R�@R�@R�@R�@L@R�@R�@R�@R�@g4@R�R�R�R�R�R�R�@`�@R�@R�@R�@R�@c�@R�@R�@R�@R�@R�@`�@R�R�R�R�R�@`�@R�@d@R�R�R�@R�@R�@R�@M@R�@R�@R�@R�@N@R�R�R�R�R�R�R�R�R�R�R�@R�@R�@R�@L@R�@R�@xv@R�R�R�@|�@R�@R�@R�@R�@d@R�R�R�R�R�@R�@R�@R�@M�@R�@iM@R�R�R�@b�@R�@R�@R�@R�@L�@R�R�R�R�R�R�R�@R�@R�@R�@b�@R�@R�@R�@R�@aN@R�R�R�@nW@R�@R�@R�@R�@N@R�R�R�R�R�@R�@R�@R�@M@R�@ku@R�R�R�@l@R�@|@R�S!R�S
R�SR�@R�@R�@S@S@d@SSS@S@S@S@nW@S	@S
@S@S@y7@SSSSS@S@S@S@L�@S@N@SSS@S@S@S@M�@S@S@S@S @|�@S"S1S#S.S$S)S%@S&@S'@S(@M@S*@S+@S,@S-@c�@S/@S0@d@S2S=S3S8S4@S5@S6@S7@d@S9@S:@S;@S<@d{@S>S@S?@d@SA@SB@SC@SD@c�@SFVSGT�SHS�SIS�SJStSKSbSLSWSMSRSN@SO@SP@SQ@L�@SS@ST@SU@SV@d@SXS]SY@SZ@S[@S\@c�@S^@S_@S`@Sa@L�@ScSi@SdSe@Sf@Sg@Sh@b�@SjSoSk@Sl@Sm@Sn@d@Sp@Sq@Sr@Ss@i�@SuS�SvS|@SwSx@Sy@Sz@S{@p�@S}S�S~@S@S�@S�@d@S�@S�@S�@S�@d@S�S�S�S�S�@c�@S�@M�@S�S�S�@{
@S�@S�@S�@S�@d@S�S�S�S�S�S�S�S�S�@L�@S�@S�@S�@S�@aN@S�S�S�@S�@S�@S�@b�@S�@S�@S�@S�@c�@S�S�S�S�S�@S�@S�@S�@c�@S�@S�@S�@S�@M@S�S�S�@S�@S�@S�@b�@S�@S�@S�@S�@M@S�S�S�S�S�S�S�@S�@S�@S�@M@S�@S�@S�@S�@b�@S�@S�@S�@S�cWS�cWS�cWS�cWS�cWcWS�S�cWS�cWS�cWS�cWS�cWcWS�S�cWS�cWS�cWS�cWS�cWS�cW�fcWS�S�S�S�S�@S�@S�@S�@iM@S�@S�@S�@S�@iM@S�S�S�@g4@S�@S�@S�@S�@L�@S�TNS�T%S�TS�TS�TS�@T@T@T@d@T@T@T@T@L�@T	@T
@T@T@T
@Л@TTTTT@T@T@T@d@T@T@T@T@g_@TT T@T@T@T@li@T!@T"@T#@T$@c�@T&T7T'T/T(T*T)@xv@T+@T,@T-@T.@b�@T0T2T1@b�@T3@T4@T5@T6@M@T8TCT9T>T:@T;@T<@T=@ak@T?@T@@TA@TB@b�@TDTITE@TF@TG@TH@`�@TJ@TK@TL@TM@b�@TOTxTPTaTQTYTRTTTS@�x@TU@TV@TW@TX@t�@TZT\T[@L@T]@T^@T_@T`@M�@TbTmTcThTd@Te@Tf@Tg@d@Ti@Tj@Tk@Tl@`�@TnTsTo@Tp@Tq@Tr@M�@Tt@Tu@Tv@Tw@c�@TyT�TzT�T{T�T|@T}@T~@T@d@T�@T�@T�@T�@d@T�T�T�@T�@T�@T�@d{@T�@T�@T�@T�@L�@T�T�T�T�T�@L�@T�@M@T�T�T�@T�@T�@T�@nW@T�@d@T�U6T�T�T�T�T�T�T�T�T�T�T�@T�@T�@T�@d@T�@T�@T�@T�@L�@@T�T�@L@T�T�T�T�T�@T�@T�@T�@li@T�@T�@T�@T�@`�@T�@T�@T�@T�@T�@L�@T�T�T�T�T�T�T�@L�@T�@T�@T�@T�@y7@T�T�T�@T�@T�@T�@L@T�@T�@T�@T�@N@T�T�@T�T�@T�@T�@T�@`�@T�T�T�@T�@T�@T�@b�@T�@T�@T�@T�@L@T�UT�UT�T�T�T�T�@l�@T�@T�@T�@T�@c�@T�T�T�@T�@T�@T�@L�@T�@T�@T�@T�@`�@UUU@U@M@UU
U@U@U@U	@L@U@U@U
@U@li@UU"UUUUU@U@U@U@M�@U@U@U@U@t�@U@U@U@U @U!@M�@U#U+U$U&U%@�b@U'@U(@U)@U*@K�@U,U1U-@U.@U/@U0@xv@U2@U3@U4@U5@M@U7U�U8UbU9UPU:UEU;U@U<@U=@U>@U?@b�@UA@UB@UC@UD@b�@UFUKUG@UH@UI@UJ@c�@UL@UM@UN@UO@M@UQUWUR@US@UT@UU@UV@d@UXU]UY@UZ@U[@U\@l�@U^@U_@U`@Ua@b�@UcU�UdUoUeUjUf@Ug@Uh@Ui@M@Uk@Ul@Um@Un@j�@UpU�Uq@Ur@UsU�`�UtUu`�Uv`�Uw`�Ux`�`�UyUz`�U{`�`�U|U}`�U~`�`�UU�`�U�`�U�`�U�`�`�U�U�`�U�`�U�`�U�`�`�U�`�U�`�U�U�`�U�`�U�`�U�`�U�`�U�`�U�`�U�`�U�`���`�`�U�`�U�U�`�U�`�U�`�aU`�U�@U�@U�@U�@iM@U�U�U�U�U�@U�@U�@U�@`�@U�@U�@U�@U�@L@U�@U�@U�@U�@U�@xv@U�U�U�U�U�U�U�U�U�@U�@U�@U�@d@U�@U�@U�@U�@f@U�U�U�@U�@U�@U�@L�@U�@U�@U�@U�@d@U�U�U�U�U�@U�@U�@U�@M�@U�@U�@U�@U�@M@U�U�U�@U�@U�@U�@g_@U�@U�@U�@U�@d@U�U�U�U�U�U�U�@U�@U�@U�@M@U�@U�@U�@U�@cW@U�U�U�@U�@U�@U�@ak@U�@U�@U�@U�@b�@U�VU�U�U�@b�@U�@N@VVV@V@V@V@L�@V@V@V	@V
@N@VW�V
V�VV�VV>VV'VVVVV@V@V@V@g_@V@V@V@V@M@VV"V@V@V @V!@iM@V#@V$@V%@V&@M@V(V3V)V.V*@V+@V,@V-@M�@V/@V0@V1@V2@w�@V4V9V5@V6@V7@V8@N@V:@V;@V<@V=@d{@V?V�V@VKVAVFVB@VC@VD@VE@L@VG@VH@VI@VJ@L@VLV�VM@VN@VOVhNVPVQNVRNVSNVTNVUNVVNVWNVXNVYNVZVaV[NV\NV]NV^NV_NNV`Q�NVbNVcNVdNVeNVfNQ�VgQ�NViVzNVjVkNVlNVmNVnNVoNVpNVqNVrNVsNVtNVuNVvNVwNVxNVyN]RNV{NV|NV}NV~NVNV�NV�NV�NV�NV�NV�NV�NV�NV�NV�NV�NOqNV�@V�@V�@V�@�I@V�V�V�V�V�@V�@V�@V�@L�@V�@��@V�V�V�@V�@V�@V�@L@V�@V�@V�@V�@|�@V�V�V�V�V�V�V�V�V�@V�@V�@V�@L�@V�@V�@V�@V�@c�@V�V�V�@V�@nW@V�@L�@V�V�V�V�V�@V�@V�@V�@M@V�@V�@V�@V�@`�@V�V�V�@V�@V�@V�@d@V�@V�@V�@V�@L�@V�V�V�V�V�V�V�@V�@V�@V�@c�@V�@c�@V�V�V�@V�@V�@V�@c�@V�@V�@V�@V�@n�@V�V�V�V�V�@d@V�@V�@V�@V�@{
@V�V�V�@V�@V�@V�@L@V�@V�@V�@V�@nW@V�WHV�W&V�WV�WV�WV�@V�@W@W@i�@W@W@W@W@N@WW
W	@d@W@W@W
@W@d@WWWWW@W@W@W@M@W@W@W@W@p�@WW!W@W@W@W @d@W"@W#@W$@W%@b�@W'W6W(W3W)W.W*@W+@W,@W-@L�@W/@W0@W1@W2@g4@W4@W5@c�@W7W=W8@W9@W:@W;@W<@cW@W>WCW?@W@@WA@WB@N@WD@WE@WF@WG@nW@WIWrWJW^WKWVWLWQWM@WN@WO@WP@li@WR@WS@WT@WU@b�@WWW\WX@WY@WZ@W[@M@W]@aN@W_WjW`WeWa@Wb@Wc@Wd@t�@Wf@Wg@Wh@Wi@c�@WkWmWl@iM@Wn@Wo@Wp@Wq@rf@WsW�WtWWuWzWv@Ww@Wx@Wy@b�@W{@W|@W}@W~@L@W�W�W�@W�@W�@W�@N@W�@M@W�W�W�W�W�@W�@W�@W�@t�@W�@W�@W�@W�@b�@W�W�W�@W�@W�@W�@cW@W�@W�@W�@W�@M@W�a�W�a8W�W�W�W�W�W�W�W�W�@W�@W�@W�@M�@W�@W�@W�@W�@L�@W�W�W�@W�@W�@W�@|�@W�@W�@W�@W�@b�@W�W�W�W�W�@W�@W�@W�@�,@W�@W�@W�@W�@b�@W�W�W�@L�@W�@L�@W�W�W�W�W�@W�@W�@W�@W�@L�@W�W�W�@W�@W�@W�@N@W�@W�@W�@W�@N@W�W�@W�W�@W�@W�@W�@b�@W�W�W�@W�@W�@W�@d@W�@W�@W�@W�@W�]W�Y�W�cWW�X�W�cWW�cWW�X�W�X�W�cWW�XKW�X9W�XW�X	W�XW�XW�W�cW���@XXW�9�^4cWXXXX�fcW�9�XcW�@��X
XXX
�XcW�WXcWv�$$XXXX$cW�@cWXX�fcWcW�@XX$XXXXcWXcW�(XXcW$$���fXX!�fX ���X"X#�fcW$$�X%X,X&X)X'X(cW�!cW�fX*X+$$�@9�$$X-X8X.X7X/�(cWX0cWX1cWX2cWX3cWX4cWX5X6cWcW�@$$W�W�cWX:XDX;cWX<X?X=�@�@X>cW�@X@XBcWXA��cWXCcW�@cWXEcWXFXHXGcWcW��XIcWcWXJcW�@XLX�XMXiXNX\XOXUXPXRXQcWrC�(XSXT$$y���XVXYXWXX�$$cW]�XZX[�|�cW��X]XcX^X`��X_^4�(XaXb$$^4$$�@XdXfXe����XgXh$$cWcW$$XjXxXkXqXlXoXmXn�cW9��WcWXpv��(XrXuXsXt��(��_XvXw$$�(�f�XyX�XzX}X{X|rC�$$�X~X�W��$$�(X�X�X�X�9�cW9�$$X�X�������X�X�X�X�X�X�X�X�X�X����W��X�X��$$]��X�X�X�X�]�$$�9�X�X�9�v�9��^X�X�X�X�X�X��]��($$X�X�cW$$cW�fX�X�X�X�]��@�$$X�X���v��@X�cWX�cWX�cWX�cW�cWX�X�X�cWX�cWX�cWX�cWX�cWX�cWX�cWX�cWX�cWX�X�X�cWX�X�X�X�X�X�X�X�9�9��7x�X�X�ghm����X�X�X�X�cW�7x��ucWX�cWx�X�cWX�X�x�X��v�cWX�v�v�X�cWcWX�cWX�cWX�X�cWcWx�X�cWX�cWX�cWX�cWX�cWX�cWX�cWX�cWX�cWX�cWX�cWX�cWX�cWX�cWX�cWcWx�X�cWX�X�X�cWX�cWX�cWcWX�X�cWcWX�X�cWx�cWX�cWX�cWX�cWX�cWX�X�X�X�x�X��u�7X�X��@cWcW$$X�cWx�X�ghx�X�YTX�YcWX�X�cWYcWYcWYcWYcWYcWcWYcWYYcWcW9�Y	Y%Y
cWYcWYcWY
cWYcWYYYYYYYY�@�����fYYgv$$��9�YYYY�0$$�$$YY)��@�$$YcWY Y#Y!Y"cW�(W�$$Y$cW$$cWY&Y2Y'cWY(cWY)cWY*cWY+cWY,Y/Y-x�x�Y.cWx�Y0cWY1cWx�cWY3cWY4cWY5cWY6YHY7Y@Y8Y<Y9Y;Y:cWcWx�cWx�Y=x�Y>Y?cWx�cWx�YAYDYBcWYCx�cWx�YEYFcWx�YGx�x�cWYIYQYJYLYKx�x�cWYMYOx�YNcWx�x�YPx�cWYRcWYScWx�cWYUYgcWYVYWcWYXcWYYcWYZcWY[cWY\cWY]cWY^cWY_cWY`cWYacWYbcWYccWcWYdcWYeYfcW9�cWYhY�YicWYjcWYkcWYlcWYmcWYncWYocWYpcWYqcWYrcWYscWYtcWYuY�YvY}YwYzYxYy�@�����fY{Y|gv$$��9�Y~Y�YY��0$$�$$Y�Y�)��@�$$Y�cWY�Y�Y�Y�cW�(W�$$Y�cW$$cWY�Y�Y�cWY�cWY�cWY�cWY�cWY�cWY�cWY�cWY�cWY�cWY�cWY�cWx�cWY�cWY�cWY�cWY�cWY�cWY�cWY�cWY�cWY�cWY�cWY�Y�Y�Y�Y�Y�Y�Y�Y�cWcWx�cWx�Y�x�Y�Y�cWx�cWx�Y�Y�x�cWY�Y�cWY�x�cWY�x�x�cWY�Y�Y�Y�Y�x�x�cWY�Y�x�Y�cWx�x�Y�x�cWY�cWY�cWx�cWcWY�cWY�cWY�cWY�cWY�cWY�cWY�cWY�cWY�cWY�Y�cWY�cWY�[�Y�ZY�Y�Y�cWY�cWY�cWY�Y�Y�Y�Y�Y�Y�x�$$cWY�x�cWx�Y�Y�Y�Y���9��fcWY�Y�cWx�9�cWY�cWY�cWY�Y�x�cWx�cWY�Y�Y�Y�Y�cWY�cWY�cWx�Y�Y�cWx�cWY�cWY�Y�Y�Y�x�Y�Y�x�cWx�Y�Y�Y�Y�x�cWx�cWx�Y�x�cWY�cWY�cWx�Y�x�cWY�ZZcWZcWZcWZZ9�Z�Q9�ZcW9�cWZcWZ	cWZ
cWZcWZZ
cW�@��cWZZ�ZZ�ZZIZZ.ZZ ZZZZZZ�f��x�cWZx�x��@ZZZx��QcWZZv�x�cW�7Z!Z(Z"Z%Z#Z$x�cWcWx�Z&Z'�cW���QZ)Z,Z*Z+$$9�9�W�Z-cW$$��Z/Z<Z0Z6Z1Z4Z2Z3��cWcW9�cWZ5��mZ7Z:Z8Z99�cW9��!Z;cWcWv�Z=ZCZ>Z@Z?cW$$�uZAZBcWx�cWx�ZDZFx�ZE�fv�ZGZHcWyx�ӴZJZgZKZYZLZRZMZO��ZNx���ZPZQcWx�9��ZSZVZTZUghx�cW�@ZWZXcW9�x���ZZZaZ[Z^Z\Z]�fx�cWx�Z_Z`cW�(^4ghZbZeZcZdx�cW�cW$$ZfcW9�ZhZvZiZpZjZmZkZlcWx�9�x�ZnZocWx��9�ZqZtZrZsx�cWv���x�Zu�cWZwZ}ZxZzcWZy�cWZ{Z|x��mcWx�Z~Z�ZZ�x����x�Z�Z�$$x�v�$$Z�Z�Z�Z�Z�Z�Z�Z�Z�x�Z�Z��Qx�cW�7Z�Z�Z�Z��cW�Wx�Z�Z��cW��cWZ�Z�Z�Z�Z�cW|�cWZ�Z��f��x�cWZ�Z�Z�Z�x��fx�cWZ�Z�x�9�x�cWZ�Z�Z�Z�Z�Z�Z�Z�gv�ux�cWZ�Z�x��79�$$Z�Z�Z�Z���mcWv�Z�Z�ghcW���(Z�Z�Z�Z�Z�Z�x�cWx�ӴZ�Z����cWx�Z�Z�Z�Z�cW�W�x�Z�cW9�x�Z�Z�Z�Z�Z�Z�Z�Z�Z�Z�cW���u_Z�Z�x���Qx�Z�Z�Z�Z�y�(cW�(Z�Z��frC�(9�Z�Z�Z�Z�Z�Z�v�x��cWZ�Z��mcWx�cWZ�Z�Z�Z�]�v�cWv�Z�Z�x�cWgh$$Z�Z�Z�Z�Z�Z�Z�Z��mx�v�cWZ�x�x�cWZ�Z�Z�Z�cW�uy�x�Z�x��cWZ�Z�Z�Z�Z�Z���$$cW�Z�x�cWx�Z�Z�cWZ�ghcWcWZ�$$x�Z�[fZ�[1Z�[Z�[Z�[Z�[[[cWx��7cWx�[9���[[[[�x��(v�[	[
9��(rCx�[[[
[[cWx��cW[cWx�cW[[[�cW�mx�[[#[[[[[cW���[[cWx�cW9�[[![[ ��cWx�["cWcW9�[$[+[%[([&['x�cWcW�[)[*cWx�x�cW[,[.x�[-�mӴ[/[0cW�(��x�[2[K[3[@[4[:[5[7[6x�9�x�[8[9x�cWx��W[;[>[<[=cWgh^4x�cW[?x�cW[A[D[BcWcW[C9�cW[E[H[F[G��cWx���[I[J�mcWcW�[L[Y[M[S[N[Q[O[PcW�@cWx�[RcWx�cW[T[VcW[UcWW�[W[X9�$cWx�[Z[`[[[]cW[\��cW[^[_rCcWcW9�[a[d[b[c9��ucW$$[ecWx�cW[g[�[h[~[i[t[j[ncW[k[l[mcWx��cW[o[q[pcWx�cW[r[scW�$$cW[u[{[v[x[wcW$$cW[y[zx�cWcW�[|cWcW[}cW��[[�[�[�[�[�[�cWx�cW[�[�cW��x�cWcW[�[�[��@�#�cW[�[�[�[�[�[�x�cW�cWcW[�cWx�[�[�$$[�x�cW[�cW9�y[�[�[�[�[�[�[�x�[�[�cWx��x�[�[�cW[�cW�7[�[��Wx���cW[�[�[�[�[�[�cW$$cWgh[�[�9��(9�cW[�[�[�[�9�$$�cW[�[��cWcWx�[�[�[�[�[�[�cW[�cWx�[�[��m��cW�7[�[�[�[�cWx�cW��cW[�x�y[�[�[�[�[�[�x���cWx�[�[��Qx�cWӴ[�[�[�[���gh�@cW[�x�v��Q[�cW[�\�[�\%[�\[�[�[�[�[�[�[�[�[�x�x���[�[�cW�v\���[�[�[�x�9�x�x�[��Q�m[�[�[�cW[�[�x�cWcW�m[�cW[�[���cWx�[�[�[�[�[�[�[�[�cW���WcWx�[��cW[�[�[�[�x�cWx�cW[�cW$$cW[�[�[�[�[�[�cWx�cWӴ[�cWghcW[�\\\x�cWcW]�\\cW9�x�9�\\\\\\\	\\
\��gh]�\
\cWx�$$cW\\\cW�mcW\cWcW�m\cW\\cW9�\cWcWx�\\cW\\cWcWx�\\!\cWcW\ v�cW\"cW\#\$x�cWcW9�\&\[\'\@\(\4\)\/\*\-\+\,cWx��(9�cW\.cW�\0\2\1cW�ucW\3cWcW�Q\5\:\6\8cW\7x�cWcW\9x�cW\;\=cW\<cW]�\>\?9�cWghcW\A\O\B\H\C\Ex�\DcW�7\F\GcWx�cW��\I\L\J\KcW��cW$$\M\NcWx�cW�f\P\U\Q\ScW\RcW9�\TcW]�x�\V\X\Wx�cW�@\Y\Z�7x��cW\\\r\]\j\^\e\_\b\`\acWx�cW9�\c\dx�$$�cW\f\hcW\gx�cWcW\iv��\k\o\lcW\m\ncWv�x�cW\pcWcW\qcWx�\s\~\t\z\u\x\v\wcWx��@cW\yx�x�cW\{cW\|\}cWx�x�cW\\�\�\�cW\��WcW\�\��cW�fcW\�\�\�\��7cWcWx�\�\�9�9�cWx�\�\�\�\�\�\�\�\�\�\�\�\�\�\�cW�mcWx�cW\�x�cW\�cW\�cWx�cW\�\�\�\�cW\�cWx�cW\�cWx�cW\�\�cWcW�m\�\�\�\�\�\�cW\��cWcW\��@��\�cW\�cWcWx�\�\�\�\�cW\�cW9�\�\�x��mcWx�\�\�cW\�m�x�\�\�cWx�cWx�\�\�\�\�\�\�\�\�cW\�9�cWcW\�x�cW\�\�\�cWcW�mcW\�^4cW\�\�\�\�x�\�cWx�\�\��cW��cW\�\�cW\�x�cW\�\�x�cW|�cW\�\�cW\�\�\�\�\��^cWcWx�cW\�x�cW\�\�\�\�cW\�cW)�\�\�9�]�cWx�\�\�\�cW$$cW\�\�x����@cW\�cW\�]\�\�\�\�\�\�\�\�9�x�x�cW\�\�x�cWx��0\�\�cWx�\�\�cWx�cWx�\�]\�\�\�cW$$cW\�\�x�cWx��]]]]$$x��cW]]x�$$cWx�]cW]	cW]
]x�cW$$x�]
`F]cW]_b]_W]]$]cW]cW]cWcW]]cW]cW]cW]cW]cW]cW]cW]cW]cW]cW] cW]!cW]"cW]#cW�fx�]%_]&]/]'cW](cW])cW]*cWcW]+],cW]-cWcW].cWx�]0cWcW]1]2cWcW]3cW]4cW]5cW]6]7^�]8^]9]�]:]m];]Q]<]H]=]C]>]A]?]@��x�x�cWx�]B9�x�]D]G]E]F9�x�x���x�9�]I]L]Jx�]Kx�v��@]M]O]Nx��Qx�]Px��@cW]R]_]S]Z]T]W]U]V�mv�x��]X]Yv�x�gh�u][]\x��]]]^��79���]`]g]a]d]b]cgh$$��x�]e]fx��7ghx�]h]k]i]j9��m^4x�x�]l9�x�]n]�]o]x]p]sx�]q]r�Q�f�Q]t]v�Q]ux���x�]w���]y]�]z]}]{]|x�ghx�v�]~]v�9�9��Q]�]�]�x��vx�x�]�x�y]�]�]�]�]�]�]�]�9�x�����]�]��mx�Ӵ�m]�]�]�x�x�y]���9�gh]�]�]�]�]�x��Wx�]�]�$$x�9��f]�]�]�]�x����9�]�x�x��]�]�]�]�]�]�]�]�]�]�]�x�x��m]�]����7$$�W]�]�]�]�$$W�v��]�]�x��fx�9�]�]�]�]�]�]�$$��$$x�]�]��x��@]�]�]�x�]���v�]�]�rC]��0x�]�]�]�]�]�]�]�]����$�]�x�rC]�]�]�]�|�gh��m�]�]�x�v�����]�]�]�]�]�]�^4�����]�]�9�x�\��@]�]�]�x����u]�x�x��]�]�]�]�]�]�]�]�x�]�$$x�]�x�x��@]�x�]�x�W�$$]�]�]�]�]�]���x�ghx�]�]�x�9�9��(]�]�]�]�cW��$$x�]�x�x�$$]�^]�]�]�]�]�]�9�x�9�x�]�x��W�]�]�x�]�x�$$^^|�x�v��f^^^^^x�x�9�x�^gh�(x�^	^
^x�Ӵ�(9�^
^u^^C^^*^^^^^^^^x�cW���^^�x���x�^^^^x��(��_x�^x��Q^^&^ ^#^!^"x�y�(�^$^%�frC�(9�x�^'^(^)�7x�x�gh^+^8^,^1^-^/^.x�$$x�x�^0x�y�^2^5^3^49���x�^6^7�$$x�$$^9^<^:x�x�^;�^x�^=^@^>^?x�cWӴx�^A^B9�x�x��^D^b^E^T^F^M^G^J^H^I�m�����^K^LcWx�x�Ӵ^N^Q^O^Pv���x���^R^Sx��mx��W^U^\^V^Y^W^X��x�x�cW^Z^[9�x�x�cW^]^`^^^_�m�9�x�^ax�rC�m^c^k^d^h^ex�^f^gx����mx�x�^ix�^j$$x�^l^o^mx�^nx��WW�^p^s^q^r�@9�9�x�^tx��f�7^v^�^w^�^x^�^y^}^zx�^{^|�!x�x���^~^�x�^�@x�^�x�x��W^�^�^�^�x�^��@x�^�^�9��($x�^�^�^�^�x��m�$$x�^�cW�@^�^�^�^�^�^�^�^��$$cWx�^�^�cW9��u9�^�^�^�x�y�^�^�x���$$�(^�^�^�^�^�^���v�x�9�^�^�x�9�$$�^�^�^�x��x�^�x���x�^�^�^�^�^�^�^�^�x�^�Ӵ9�^�^��m��x�^�^�^�^�x����x�^�^�x�$$x�9�^�^�^�^�^�^��Qghx��m^�^�]��m9��^�^�^�^��gh]�9�^�9��x�^�^�^�^�^�^�x�^�x�v�^�^�9�x�9�^4^�^�^�^���u�#�(^�^�x�]�9�x�^�^�^�^�^�^�x��7cW$$x�^�]�x�^�^�^�^�x���7x�^�^�9��@9��f^�cW^�cW^�cW^�_^�^�^�^�^�^�^�^��$$�v�^�x��v�^�^�^�x�x��m^�x��@x�^�^�x�^�^�^�x�9��m�^�^�x�^�x���__9���x�cW_x�__	___x��mx�_x�x��_
x�_x�x��7x�_
x�__x�__A__'_____x�_x�x���_x�x�_$$x�__!____rCx��u$$__ �W��@x�_"_%_#_$x��7x��@x�_&�fx�_(_4_)_._*_,x�_+x���_-x��fx�_/_1x�_0x�$$_2_3ghx��mx�_5_<_6_9_7_8x����fx�_:_;��x���x�_=_?_>x�x�$$x�_@x��m_B_R_C_I_Dx�_E_Gx�_F�7x�x�_H9�x�_J_M_Kx�x�_L�mx�_N_Px�_OcWx�_Qx�x��_Sx�_Tx�_Ux�_Vx��fx�_XcW_YcW_ZcW_[cWcW_\cW_]_^cW__cW_`cW_acWx�cW_c_�_d_wcW_e_fcW_gcW_hcW_icW_jcW_kcW_lcW_mcW_ncW_ocW_pcW_qcW_rcW_scWcW_tcW_u_vcW9�cW_x_�_ycW_zcW_{cW_|cW_}cW_~cW_cW_�cW_�cW_�cW_�cW_�cW_�cW_�_�_�_�_�_�_�_��@�����f_�_�gv$$��9�_�_�_�_��0$$�$$_�_�)��@�$$_�cW_�_�_�_�cW�(W�$$_�cW$$cW_�_�_�cW_�cW_�cW_�cW_�cW_�cW_�cW_�cW_�cW_�cW_�cW_�cW_�cWx�cW_�cW_�cW_�cW_�cW_�cW_�cW_�cW_�cW_�cW_�cW_�cW_�_�_�_�_�_�_�_�_�cWcWx�cWx�_�x�_�_�cWx�cWx�_�_�_�cW_�x�cWx�_�_�cWx�_�x�x�cW_�_�_�_�_�x�x�cW_�_�x�_�cWx�x�_�x�cW_�cW_�cWx�cW_�_�cW_�_�cW_�cW_�cW_�cW_�cW_�cW_�cW_�cW_�cW_�cW_�cW_�cW_�cW_�cWcW_�cW_�_�cW9�cW_�`_�cW_�cW_�cW_�cW_�cW_�cW_�cW_�cW_�cW_�cW_�cW_�cW_�cW_�`_�`_�_�_�_��@�����f_�_�gv$$��9�````�0$$�$$``)��@�$$`cW`	``
`cW�(W�$$`
cW$$cW```cW`cW`cW`cW`cW`cW`cW`cW`cW`cW`cW`cW`cWx�cW`cW`cW` cW`!cW`"cW`#cW`$cW`%cW`&cW`'cW`(cW`)`:`*`3`+`/`,`.`-cWcWx�cWx�`0x�`1`2cWx�cWx�`4`5x�cW`6`8cW`7x�cW`9x�x�cW`;`C`<`>`=x�x�cW`?`Ax�`@cWx�x�`Bx�cW`DcW`EcWx�cWcW`GcW`HcW`I`JcW`KcW`LcW`McW`NcW`OcW`PcW`Qa,`Ra&`Sa`T`�cW`U`VcW`W`�`X`s`Y`e`Z`_`[`]�`\�m�`^��@�```c`a`b�9�$$cWcW`dx�9�`f`l`g`i�(`h�$$`j`krCx���$$`m`p`n`o�(��x���`q`r9��7�7�(`t`�`u`|`v`y`w`xx�v����`z`{v�x�v��(`}``~�QӴx���`���y`�`�`�`�`�`�x��gh9�`�`�$$x���9�`�`�`�`��Q9��m|�`�`��Qx����`�`�`�`�`�`�`�`�`�`��Q�fcW�x�`�$$x�`�`�`�`�x���vv�`�`�]�9�x��u`�`�`�`�`�`�x��]�$$x�`��m9�`�`�`�`�9�x��mx�x�`�cW9�`�`�`�`�`�`�`�`�x���x�`�`��Qx�9�v�`�`�`�`�9��m9�gh`�x�9�x�`�`�`�`�`�`���7�x�`�`��f]�x��(`�`�`�`��(9�9��@x�`�x��`�x�`�cW`�cW`�`�`�`�`�`�`�`�cW`���`�cWx�cW`�`�`�`�x��@cWx�`�`���x�x��@`�`�`�`�`�`�x�cW��x�`�`��m�(gh�W`�`�x�`��#x�`�`��Q��x��m`�`�`�`�`�`�x�`�$$x�`�`�x��9��mx�`�`�`��7x�x��W`�`�`�`�`�`�9����m��`�`�9��m��x�`�ax�a�^x�x�ax�]�acW��aacWacWaa!a	aa
aaaaa
cWӴx��9�a�ghaax�aghx�aax�$v�x�aaaax�ax�\�x�a9�x�aaax�$$�x�a x��@a"cWa#cWa$cWa%cWx�cWa'a*a(a)x���@x�x�a+x�cWa-a3a.a0x�a/x�cWa1a2�Q9�x�9�a4a6a5x�9�x�a7cWx�cWa9aha:aQa;aFa<aAa=@a>@a?@a@@nW@aB@aC@aD@aE@p�@aGaLaH@aI@aJ@aK@M@aM@aN@aO@aP@d{@aRa]aSaXaT@aU@aV@aW@g4@aY@aZ@a[@a\@L�@a^aca_@a`@aa@ab@b�@ad@ae@af@ag@d@aiaxajamak@al@L@anasao@ap@aq@ar@i�@at@au@av@aw@b�@aya�aza|a{@N@a}@a~@a@a�@M@a�a�a�@a�@a�@a�@g4@a�@a�@a�@a�@��@a�a�a�a�a�a�a�a�a�a�a�@a�@a�@a�@b�@a�@a�@a�@a�@d@a�a�a�@a�@a�@a�@`�@a�@a�@a�@a�@t�@a�a�a�a�a�@N@a�@a�@a�@a�@`�@a�a�a�@a�@a�@a�@d@a�@a�@a�@a�@b�@a�a�a�a�a�a�a�@a�@a�@a�@d{@a�@a�@a�@a�@M@a�@a�@a�@a�@a�@b�@a�a�a�a�a�@iM@a�@a�@a�@a�@��@a�@a�@a�@a�@a�@N@a�ba�a�a�a�a�a�a�@a�@a�@a�@d{@a�@a�@a�@a�@d]@a�a�a�@L�@a�@a�@a�@a�@L@a�a�a�@a�@a�@a�@a�@xv@a�a�a�@L�@a�@a�@a�@b@L�@bbbbbb	b@b@b@b@L@b
@b@b@b
@j�@b@b@b@b@b@L�@bbb@b@d@bbb@b@b@b@d@b@b @b!@b"@c�@b$mab%hmb&e�b'dSb(b�b)b}b*bQb+b:b,b4b-b/b.@M@b0@b1@b2@b3@`�@b5@b6@b7@b8@b9@b�@b;bFb<bAb=@b>@b?@b@@N@bB@bC@bD@bE@N@bGbLbH@bI@bJ@bK@g_@bM@bN@bO@bP@`�@bRbibSb^bTbYbU@bV@bW@bX@{
@bZ@b[@b\@b]@d@b_bdb`@ba@bb@bc@d@be@bf@bg@bh@p�@bjbrbkbpbl@bm@bn@bo@d@bq@cW@bsbxbt@bu@bv@bw@M@by@bz@b{@b|@m�@b~b�bb�b�b�b�b�b�@b�@b�@b�@aN@b�@b�@b�@b�@xv@b�b�b�@N@b�@b�@b�@b�@`�@b�b�b�b�b�@b�@b�@b�@M�@b�@b�@b�@b�@ak@b�b�b�@b�@b�@b�@cW@b�@b�@b�@b�@`�@b�b�b�b�b�b�b�@b�@b�@b�@�@b�@b�@b�@b�@d]@b�@b�@N@b�b�b�b�b�@b�@b�@b�@L�@b�@b�@b�@b�@`�@b�b�b�@b�@b�@b�@y7@b�@b�@b�@b�@L@b�c$b�b�b�b�b�b�@b�b�@b�@b�Mb�M��Mb�b�b�@b�@b�@b�@N@b�@b�@b�@b�@d@b�b�b�b�b�@b�@b�@b�@m�@b�@b�@b�@b�@g_@b�b�b�@b�@b�@b�@b�@b�@b�@b�@b�@L@b�cb�c
ccc@c@c@c@b�@c@c@c@c	@K�@c@c@c
@c@c@M@ccccc@b�@c@c@c@c@M@ccc@c@c@c@M@c @c!@c"@c#@c�@c%dc&c5c'c2c(c-c)@c*@c+@c,@b�@c.@c/@c0@c1@��@c3@c4@N@c6cAc7c<c8@c9@c:@c;@i�@c=@c>@c?@c@@`�@cBdcC@cD@cE@cF@cG@cHc�cIazcJc�cKcfcLazcMazcNazcOc[cPazcQazcRcVcSazcTazazcUgCazcWazcXazcYazcZazazjc\azc]azc^cbazc_c`azazcagQazccazcdazceazkXazcgazchazciazcjazckazclcxcmcrazcnazcocpazcqazjazcsazctazcucwcvazazjazubcyazczcc{c}azc|azv�c~azwazc�azc�c�v�azt�wc�c�c�azc�azc�azc�c�c�c�c�c�c�c�c�c�c�azc�c�gCazv�jc�c�c�c�c�v�jazb�w�c�azwazc�c�c�azc�azw*wUc�azazc�azwcc�c�c�c�azc�c�az�azc�azc�c�u�azazc���azc�c�c�azc�c�c�azjazt�azc�c�c�c�mv�b�azc�azb�azc�azc�azc�c�c�azc�c��?v�u�azc�c�c�c�az��azu�c�azjazc�azc�azc�c�c�c�c�azazb�c�c�azc�w��c�azkXazc�azc�azc�azazv�azc�c�azc�azazc�azc�c�azazc�azc�azc�azc�gQazc�azc�azc�azc�azc�azc�azc�azc�azc�azc�c�c�c�c�c�azc�c�c�gCazmazc�c�c�azjazc�c�azb�azt�c�c�c�c�c�c�kXwv�v�c�c�wgQwUw�c�c�c�az�?v�c�c�jb�ubw*dd	dddazdazazwddazdv�u�jdv�wcd
azdddd
azv�azt�b�db�u�d@d@d@d@`�@ddAddddd@��@d@d@d@d@{
@d d<d!@d"@d#@d$@d%@d&d-d'hd(hd)hd*hd+d,`
hh`
hd.hd/hd0hd1hd2hd3hd4d5hd6hd7hd8hd9hd:hd;h`
hd=@d>@d?@d@@N@dBdMdCdHdD@dE@dF@dG@p�@dI@dJ@dK@dL@aN@@dNdO@dP@dQ@dR@M@dTd�dUd�dVdzdWdcdXd[dY@dZ@iM@d\d^d]@��@d_@d`@daazdbazgQazdddodedjdf@dg@dh@di@L�@dk@dl@dm@dn@L�@dpdudq@dr@ds@dt@b�@dv@dw@dx@dy@b�@d{d�d|d�d}d�d~@d@d�@d�@az@d�@d�@d�@d�@d@d�d�d�@M@d�@d�@d�@d�@b�@d�d�d�d�d�@d�@d�@d�@`�@d�@d�@d�@d�@b�@d�d�d�@d�@d�@d�@L�@d�@d�@d�@d�@p�@d�d�d�d�d�d�d�d�d�@p�@d�@d�@d�@d�@nW@d�d�d�@d�@d�@d�@c�@d�@d@d�d�d�d�d�@L@d�@d�@d�@d�@M@d�d�d�@d�@d�@d�@b�@d�@d�@d�@d�@M@d�d�d�d�d�d�d�@d�@d�@d�@b�@d�@d�@d�@d�@b�@d�d�d�@M@d�@d�@d�@d�@b�@d�d�d�d�d�@d�@d�@d�@L�@d�@d�@d�@d�@�b@@d�d�@nW@d�e^d�e2d�ed�ed�d�d�@d�@d�@d�@li@d�@d�@d�@d�@d@eee@e@e@e@e@eazeaze	aze
azeazeazaze
eazeazeazazeazeeazazeeazazkXe@e@e@e@`�@ee'ee"e@e@e @e!@i�@e#@e$@e%@e&@��@e(e-e)@e*@e+@e,@L@e.@e/@e0@e1@g4@e3eJe4e?e5e:e6@e7@e8@e9@az@e;@e<@e=@e>@ku@e@eEeA@eB@eC@eD@��@eF@eG@eH@eI@b�@eKeVeLeQeM@eN@eO@eP@L�@eR@eS@eT@eU@g_@eWe\eX@eY@eZ@e[@c�@e]@�X@e_e~e`ereaelebegec@ed@ee@ef@M@eh@ei@ej@ek@L@@emen@eo@ep@eq@N@ese{eteveu@xv@ew@ex@ey@ez@`�@@e|e}@N@ee�e�e�e�e�e�@e�@e�@e�@M@e�@e�@e�@e�@nW@e�e�e�@e�@e�@e�@d@e�@e�@e�@e�@nW@e�e�e�e�e�@e�@e�@e�@d]@e�@e�@e�@e�@M@e�e�e�@e�@e�@e�@M@e�@e�@e�@e�@`�@e�f�e�fDe�e�e�e�e�e�e�e�e�e�e�@m�@e�@L�@@e�e�@e�@e�@e�@j�@e�e�e�e�e�@e�@e�@e�@aN@e�@b�@e�@e�@d@e�e�e�e�e�e�e�@e�@e�@e�@��@e�@e�@e�@e�@z�@e�e�e�@e�@e�@e�@|�@e�@e�@e�@e�@xv@e�e�e�e�e�@e�@e�@e�@az@e�@e�@e�@e�@L@e�e�e�@e�@e�@e�@M@e�@e�@e�@e�@`�@e�fe�fe�fe�@e�@e�@f@f@b�@fff@N@f@|�@fff	ff
@f@f@f
@|�@f@L�@fff@|�@f@f@f@f@M@ff-ff%ff f@f@f@f@d@f!@f"@f#@f$@c�@f&f(f'@N@f)@f*@f+@f,@��@f.f9f/f4f0@f1@f2@f3@L�@f5@f6@f7@f8@b�@f:f?f;@f<@f=@f>@L@f@@fA@fB@fC@L�@fEf�fFfmfGf[fHfSfIfNfJ@fK@fL@fM@M@fO@fP@fQ@fR@q~@fTfYfU@fV@fW@fX@L@fZ@M@f\fgf]fbf^@f_@f`@fa@cW@fc@fd@fe@ff@L@fh@fi@fj@fk@fl@iM@fnf�fofzfpfufq@fr@fs@ft@{
@fv@fw@fx@fy@`�@f{f�f|@f}@f~@f@aN@f�@p�@f�f�f�f�f�@f�@f�@f�@M@f�@f�@f�@f�@b�@f�@f�@az@f�f�f�f�f�f�f�f�f�@f�@f�@f�@f�@azf�f�azf�azf�azf�azazf�azf�f�azf�azf�azf�azazf�f�azf�azf�azb�azf�@f�@f�@f�@M�@f�f�f�@f�@f�@f�@j�@f�@f�@f�@f�@c�@f�f�f�@f�@b�@f�f�f�@f�@f�@f�@M�@f�@f�@f�@f�@d@f�f�f�f�f�f�f�@f�@f�@f�@b�@f�@f�@f�@f�@b�@f�f�f�@f�@f�@f�@cW@f�@f�@f�@f�@M�@f�f�f�f�f�@b�@f�@f�@f�@f�@b�@f�f�f�@f�@f�@f�@nW@f�@f�@f�@f�@aN@f�g�f�gZf�gf�g
f�gf�f�f�@b�@f�@f�@g@g@az@ggg@g@g@g@cW@g	@g
@g@g@q~@ggg@g@g@g@g@d{@ggg@g4@g@g@g@g@L�@gg&gg#gg!g @`�@g"@K�@g$@g%@��@g'gRg(g-g)@g*@g+@g,@L�@g.@g/@g0@g1@g2@g3L�g4L�g5L�g6L�g7L�g8L�g9L�g:L�g;L�g<L�g=L�g>L�g?L�g@L�gAL�gBL�gCL�gDL�gEL�L�gFgGL�gHL�gIL�gJL�gKL�gLL�gML�gNL�gOL�gPL�gQL��:L�gSgXgT@gU@gV@gW@L@gY@d@g[g�g\gng]gc@g^g_@g`@ga@gb@L@gdgige@gf@gg@gh@N@gj@gk@gl@gm@L@gogzgpgugq@gr@gs@gt@M@gv@gw@gx@gy@i�@g{g�g|@g}@g~@g@L@g�@g�@g�@g�@d@g�g�g�g�g�g�g�@g�@g�@g�@p�@g�@g�@g�@g�@iM@g�g�g�@g�@g�@g�@l�@g�@g�@g�@g�@N@g�g�g�g�g�@g�@g�@g�@g_@g�@g�@g�@g�@M@g�g�g�@g�@g�@g�@c�@g�@g�@g�@g�@�b@g�h%g�g�g�g�g�g�g�g�g�@g�@g�@g�@e�@g�@g�@g�@g�@N@@g�g�@g�@g�@g�@c�@g�g�g�g�g�@g�@g�@g�@xv@g�@g�@g�@g�@`�@g�g�g�@g�@g�@g�@N@g�@g�@g�@g�@M@g�hg�hg�g�g�@g�@g�@g�@d@g�@g�@g�@g�@g�@g�Ng�Ng�Ng�Ng�Ng�Ng�Ng�g�g�NNg�g�Ng�NNg�g�Ng�NNN;g�Ng�NhNhNhNhNhhNQ�Q�Nhhh@h	@h
@h@c�@h
@h@h@h@M@hhhhh@d@h@h@h@h@M@hh h@h@h@h@c�@h!@h"@h#@h$@M@h&hJh'h;h(h0h)h+h*@d@h,@h-@h.@h/@d@h1h6h2@h3@h4@h5@M@h7@h8@h9@h:@`�@h<h?h=@h>@b�@h@hEhA@hB@hC@hD@l�@hF@hG@hH@hI@j�@hKh\hLhThMhOhN@c�@hP@hQ@hR@hS@c�@hUhWhV@�b@hX@hY@hZ@h[@`�@h]heh^hch_@h`@ha@hb@l�@hd@d@hfhkhg@hh@hi@hj@xv@hl@cW@hnj�hoi�hpihqh�hrh�hsh�hthhuhzhv@hw@hx@hy@N@h{@h|@h}@h~@d@h�h�h�@`�@h�@h�@h�@h�@M@h�h�h�h�h�@h�@h�@h�@��@h�@h�@h�@h�@d@h�@h�@h�@h�@h�@N@h�h�h�h�h�h�h�@h�@h�@h�@q~@h�@h�@h�@h�@L�@h�h�h�@h�@h�@h�@M�@h�@xv@h�h�h�h�h�@h�@h�@h�@d@h�@h�@h�@h�@q~@h�h�h�@h�@h�@h�@g4@h�@h�@h�@h�@M@h�h�h�h�h�h�h�h�h�@d@h�@h�@h�@h�@L@h�h�h�@nW@h�@h�@h�@h�@�b@h�h�h�h�h�@h�@h�@h�@M@h�@h�@h�@h�@`�@h�h�h�@h�@h�@h�@M@h�@h�@h�@h�@az@h�ih�h�h�h�h�@h�@h�@h�@b�@h�@h�@h�@h�@L�@h�ih�@h�@i@i@L@i@n�@ii@ii@i@i	@i
@L@@ii
@i@i@i@`�@iibii5ii#iii@i@M@iii@i@i@i@c�@i@i @i!@i"@g4@i$i*@i%i&@i'@i(@i)@L�@i+i0i,@i-@i.@i/@L�@i1@i2@i3@i4@M@i6iMi7iBi8i=i9@i:@i;@i<@cW@i>@i?@i@@iA@d@iCiHiD@iE@iF@iG@nW@iI@iJ@iK@iL@c�@iNiWiOiTiP@iQ@iR@iS@L�@iU@iV@xv@iXi]iY@iZ@i[@i\@N@i^@i_@i`@ia@b�@ici�idixieimifihig@M@ii@ij@ik@il@L@inisio@ip@iq@ir@N@it@iu@iv@iw@L@iyi�izii{@i|@i}@i~@cW@i�@i�@i�@i�@g4@i�@i�@i�@i�@i�@L@i�i�i�i�i�i�i�@i�@i�@i�@d@i�@i�@i�@i�@`�@@i�i�@i�@i�@i�@M�@i�i�i�@i�@i�@i�@i�@d@i�i�i�@i�@i�@i�@N@i�@i�@i�@i�@L�@i�jNi�ji�i�i�i�i�i�@i�i�@i�@i�@i�@M@i�i�i�@i�@i�@i�@L@i�@i�@i�@i�@M@i�i�i�i�i�@t�@i�@i�@i�@i�@j�@i�i�i�@i�@i�@i�@b�@i�@i�@i�@i�@d@i�i�i�i�i�i�i�@i�@i�@i�@M@i�@i�@i�@i�@cW@@i�i�@i�@i�@i�@b�@i�i�i�i�i�@d@i�@i�@i�@i�@`�@i�i�i�@i�@i�@i�@|�@i�@i�@i�@i�@L�@jj(jjjjjj	j@j@j@j@`�@j
@j@j@j
@`�@jjj@j@j@j@d@j@j@j@j@L�@jj j@j@j@j@j@l@j!j#j"@cW@j$@j%@j&@j'@b�@j)j7j*j/j+j-j,@b�@j.@`�@j0j5j1@j2@j3@j4@ku@j6@d@j8jCj9j>j:@j;@j<@j=@L�@j?@j@@jA@jB@Ae@jDjIjE@jF@jG@jH@~@jJ@jK@jL@jM@iM@jOj�jPjwjQjejRjZjSjUjT@p�@jV@jW@jX@jY@L@j[j`j\@j]@j^@j_@M@ja@jb@jc@jd@b�@jfjqjgjljh@ji@jj@jk@d{@jm@jn@jo@jp@d{@@jrjs@jt@ju@jv@g_@jxj�jyj|jz@j{@{
@j}jj~@M@j�@j�@j�@j�@b�@j�j�j�@j�@d@j�@j�@j�@j�@j�@cW@j�j�j�j�j�j�j�j�j�@p�@j�@j�@j�@j�@`�@j�j�j�@j�@j�@j�@b�@j�@j�@j�@j�@L�@j�j�j�j�j�@j�@j�@j�@N@j�@j�@j�@j�@e�@j�j�j�@j�@j�@j�@d@j�@�@j�j�j�j�j�@j�@j�@j�@j�@b�@j�j�j�@j�@j�@j�@az@j�@j�@j�@j�@ak@j�j�j�j�j�@j�@j�@j�@b�@j�@j�@j�@j�@aN@j�j�j�@j�@j�@j�@g4@j�@j�@j�@j�@L�@j�l#j�k�j�k<j�kj�j�j�j�j�j�j�@j�@j�@j�@j�@j�@j�@j�@j�@�I@j�j�j�@j�@j�@j�@az@j�@j�@j�@j�@g_@j�kkkk@k@k@k@L@k@cW@kk
k	@k
@k@k@q~@k@k@k@k@M@kk%kk@kk@k@k@k@L�@kk k@k@k@k@iM@k!@k"@k#@k$@b�@k&k1k'k,k(@k)@k*@k+@L�@k-@k.@k/@k0@L�@k2k7k3@k4@k5@k6@b�@k8@k9@k:@k;@d]@k=kgk>kPk?kJk@kEkA@kB@kC@kD@`�@kF@kG@kH@kI@g4@@kKkL@kM@kN@kO@d@kQk\kRkWkS@kT@kU@kV@L�@kX@kY@kZ@k[@n�@k]kbk^@k_@k`@ka@g_@kc@kd@ke@kf@t�@khkwkikqkjklkk@M@km@kn@ko@kp@M@kr@ks@kt@ku@kv@M@kxk�kyk~kz@k{@k|@k}@`�@k@d@k�@k�@k�@k�@k�@|�@k�k�k�k�k�k�k�k�k�k�k�@d@k�@k�@k�@k�@cW@k�@k�@k�@k�@k�@b�@k�k�k�k�k�@k�@k�@k�@d{@k�@k�@k�@k�@b�@k�@k�@b�@k�k�k�k�k�k�k�@N@k�@k�@k�@k�@�m@@k�k�@k�@k�@k�@b�@k�k�k�k�k�@k�@k�@k�@d@k�@k�@k�@k�@L�@k�k�k�@k�@k�@k�@L@k�@k�@k�@k�@M@k�k�k�k�k�k�k�@k�@M@@k�k�@k�@k�@k�@N@k�k�k�k�k�@k�@k�@k�@M�@k�@k�@k�@k�@b�@k�k�k�@d@k�@k�@k�@k�@L�@k�lk�l	k�lk�@k�@k�b�b�k�b�k�b�k�b�k�b�k�b�k�b�k�b�k�b�k�b�k�b�k�b�lb�lb�llb�lb�llb�d$x�b�l@{
@l
ll@`�@l
@l@l@l@L�@lllll@l@l@l@g4@l@l@l@l@c�@l@l@l @l!@l"@L�@l$l�l%lnl&lOl'l8l(l0l)l+l*@w�@l,@l-@l.@l/@c�@l1l3l2@M@l4@l5@l6@l7@rf@l9lDl:l?l;@l<@l=@l>@b�@l@@lA@lB@lC@d{@lElJlF@lG@lH@lI@M�@lK@lL@lM@lN@L@lPldlQlYlRlWlS@lT@lU@lV@M@lX@aN@lZl_l[@l\@l]@l^@b�@l`@la@lb@lc@c�@lelhlf@lg@M@@lilj@lk@ll@lm@l�@lol�lpl�lql|lrlwls@lt@lu@lv@j�@lx@ly@lz@l{@M@l}l�l~@l@l�@l�@L�@l�@L�@l�l�l�l�l�@l�@l�@l�@L�@l�@l�@l�@l�@d@l�l�l�@l�@l�@l�@d@l�@l�@l�@l�@cW@l�l�l�l�@l�l�@l�@l�@l�@aN@l�l�l�@l�@l�@l�@az@l�@l�@l�@l�@d{@l�l�@l�l�@l�@l�@l�@N@l�l�l�@l�@l�@l�@L�@l�@p�@l�ml�l�l�l�l�l�l�l�l�@l�@l�@l�@d{@l�@l�@l�@l�@ty@l�l�l�@l�@l�@l�@L@l�@iM@l�l�l�@l�@l�@l�@l�@L�@l�l�l�@l�@l�@l�@b�@l�@l�@l�@l�@M�@l�l�l�l�l�l�l�@l�@l�@l�@cW@l�@l�@l�@l�@N@l�l�l�@l�@l�@l�@b�@l�@l�@l�@l�@M�@l�m
mmm@m@m@m@cW@m@m@m@m	@aN@mmm@m
@m@m@b�@m@m@m@m@c�@mm7mm(mm#mmm@m@m@m@b�@m@m @m!@m"@b�@m$m&m%@nW@m'@L@m)m4m*m/m+@m,@m-@m.@L�@m0@m1@m2@m3@`�@m5@m6@L@m8mOm9mDm:m?m;@m<@m=@m>@b�@m@@mA@mB@mC@c�@mEmJmF@mG@mH@mI@L�@mK@mL@mM@mN@cW@mPmVmQ@mR@mS@mT@mU@L@mWm\mX@mY@mZ@m[@b�@m]@m^@m_@m`@xv@mbsmcpmdn�menmfm�mgm�mhmmimtmjmomk@ml@mm@mn@L�@mp@mq@mr@ms@c�@mumzmv@mw@mx@my@b�@m{@m|@m}@m~@M@m�m�m�m�m�@m�@m�@m�@N@m�@m�@m�@m�@��@m�m�m�@m�@m�@m�@N@m�@m�@m�@m�@d{@m�m�m�m�m�m�m�@m�@m�@m�@c�@m�@m�@m�@m�@L�@m�m�m�@m�@m�@m�@L@m�@m�@m�@m�@�b@m�m�m�m�m�@L@m�@m�@m�@m�@d@m�m�m�@m�@m�@m�@g_@m�@cW@m�m�m�m�m�m�m�m�m�@m�@m�@m�@d{@m�@m�@m�@m�@b�@@m�m�@m�@m�@m�@`�@m�m�m�m�m�@`�@m�@m�@m�@m�@M@m�m�m�@m�@m�Nm�Nm�NNm�Nm�Nm�Nm�Nm�Nm�Nm�Nm�Nm�Nm�Nm�Nm�Nm�Nm�Nm�NQ�m�@m�@m�@m�@L�@m�nm�m�m�m�m�@b�@m�@d@m�@n@n@n@n@L�@nnnnn@n@n	@n
@d@n@n
@n@n@l�@nnn@n@n@n@q~@n@n@n@n@M@nnonnInn2nn*n n%n!@n"@n#@n$@M@n&@n'@n(@n)@L@n+n-n,@nW@n.@n/@n0@n1@M@n3n>n4n9n5@n6@n7@n8@c�@n:@n;@n<@n=@iM@n?nDn@@nA@nB@nC@b�@nE@nF@nG@nH@g_@nJn^nKnVnLnQnM@nN@nO@nP@xv@nR@nS@nT@nU@M@nWn\nX@nY@nZ@n[@nW@n]@ty@n_ndn`nbna@xv@nc@`�@nenjnf@ng@nh@ni@M@nk@nl@nm@nn@`�@npn�nqn�nrnznsnunt@N@nv@nw@nx@ny@cW@n{n�n|@n}@n~@n@M�@n�@N@n�n�n�n�n�@n�@n�@n�@`�@n�@n�@n�@n�@y7@n�n�n�@n�@n�@n�@N@n�@n�@n�@n�@M�@n�n�n�n�n�n�n�@n�@n�@n�@l�@n�@n�@n�@n�@c�@n�n�n�@n�@n�@n�@M�@n�@n�@n�@n�@q~@n�n�n�n�n�@n�@n�@n�@L�@n�@n�@n�@n�@M@n�@n�@N@n�osn�on�n�n�n�n�n�n�n�n�@n�@n�@n�@cW@n�@Л@n�n�n�@n�@n�@n�@L@n�@n�@n�@n�@b�@n�n�n�n�n�@n�@n�@n�@`�@n�@|�@n�n�n�@n�@n�@n�@b�@n�@n�@n�@n�@d@n�n�n�n�@n�n�@n�@n�@n�@d]@n�n�n�@n�@n�@n�@d@n�@n�@n�@n�@t�@ooooo@M@o@o@o@o@q~@o	oo
@o@o@o
@b�@o@b�@oo7oo ooooo@d@o@i�@ooo@o@o@o@aN@o@d]@o!o,o"o'o#@o$@o%@o&@O%@o(@o)@o*@o+@rf@o-o2o.@o/@o0@o1@g4@o3@o4@o5@o6@q~@o8o_o9oDo:o?o;@o<@o=@o>@��@o@@oA@oB@oC@xv@oEoZoF@oG@oH@oI@oJ@oKNoLNoMNoNNoONoPNoQNoRNoSNoTNoUNoVNoWNoXNNoYN�No[@o\@o]@o^@d@o`ohoaofob@oc@od@oe@L�@og@d@oionoj@ok@ol@om@b�@oo@op@oq@or@M@oto�ouo�ovo�owo}@oxoy@oz@o{@o|@N@o~o�o@h@o�@o�@o�@o�@M@o�o�o�o�o�@o�@o�@o�@L�@o�@o�@o�@o�@az@o�o�o�@d@o�@o�@o�@o�@`�@o�o�o�o�o�o�o�@o�@o�@o�@b�@o�@o�@o�@o�@M�@o�o�o�@o�@o�@o�@cW@o�@o�@o�@o�@c�@o�o�o�o�o�@o�@o�@o�@c�@o�@o�@o�@o�@b�@o�o�o�@o�@o�@o�@d@o�@o�@o�@o�@b�@o�o�o�o�o�o�o�o�o�@o�@o�@o�@L@o�@cW@o�o�o�@o�@o�@o�@M@o�@o�@o�@o�@nW@o�o�o�o�o�@o�@o�@o�@L�@o�@o�@o�@o�@L@o�o�o�@o�@o�@o�@d{@o�@K�@o�po�o�o�@o�@o�@o�@o�@{
@o�po�@o�@o�@o�@d@p@p@p@p@b�@ppppp@p	@p
@p@aN@p
@p@p@p@L�@@pp@p@p@p@b�@pq\pp�pp�ppBpp+pp%pp p@M@p!@p"@p#@p$@`�@p&@p'@p(@p)@p*@xv@p,p7p-p2p.@p/@p0@p1@L@p3@p4@p5@p6@c�@p8p=p9@p:@p;@p<@d@p>@p?@p@@pA@b�@pCpcpDpXpEpGpF@L@pH@pI@pJazpKazpLazpMazpNazpOazpPazpQazpRazpSazpTazpUazpVazpWazgQb�pYp^pZ@p[@p\@p]@{
@p_@p`@pa@pb@b�@pdp�pepgpf@ty@ph@pi@pj@pk@pl@pm`�pn`�po`�ppp|pq`�pr`�ps`�pt`�pu`�pv`�pw`�px`�py`�pz`�p{`�`�i�`�p}`�p~`�p`�p�`�p�`�p�`�p�`�p�`�p�`�p�`�p�`�e�p�p�p�@p�@p�@p�@N@p�@p�@p�@p�@b�@p�p�p�p�p�p�p�p�p�@M@p�@p�@p�@p�@N@p�p�p�@p�@p�@p�@q~@p�@cW@p�p�p�p�p�@p�@p�@p�@L@p�@cW@p�p�p�@K�@p�@cW@p�p�p�p�p�p�p�@p�@p�@p�@M@p�@cW@p�p�p�@p�@p�@p�@d@p�@cW@p�p�p�p�p�@p�@p�@p�@N@p�@cW@p�p�p�@p�@p�@p�@xv@p�@cW@p�qp�p�p�p�p�p�p�p�p�@p�@p�@p�@`�@p�@cW@p�@p�@n�@p�p�p�p�p�@p�@p�@p�@xv@p�@cW@p�p�p�@p�@p�@p�@d{@p�@cW@p�qp�qp�p�p�@p�@p�@p�@iM@q@cW@qqq@N@q@cW@qq
q@q	@q
@q@q@d@qqq@c�@q@q@q@q@M@qq8qq&qq#qqq@q@q@q@M@q@q @q!@q"@b�@q$@q%@N@q'q2q(q-q)@q*@q+@q,@M@q.@q/@q0@q1@i�@q3@q4@q5@q6@q7@d@q9qEq:qBq;q@q<@q=@q>@q?@M@qA@M@qC@qD@nW@qFqQqGqLqH@qI@qJ@qK@L�@qM@qN@qO@qP@`�@qRqWqS@qT@qU@qV@t�@qX@qY@qZ@q[@i�@q]r7q^q�q_q�q`qrqaqgqb@qc@qd@qe@qf@l�@qhqmqi@qj@qk@ql@n�@qn@qo@qp@qq@c�@qsq{qtqyqu@qv@qw@qx@N@qz@M@q|@q}@q~@q@q�@b�@q�q�q�q�q�q�q�@q�@q�@q�@g4@q�@q�@q�@q�@aN@q�q�q�@xv@q�@N@q�q�q�q�q�@q�@q�@q�@d@q�@q�@q�@q�@M@q�q�q�@q�@q�@q�@g4@q�@q�@q�@q�@L@q�rq�q�q�q�q�q�q�@q�@q�@q�@q�@Mq�Mq�Mq�Mq�q�Mq�MMq�q�Mq�Mq�Mq�MMq�q�q�q�MMq�Mq�Mq�q�Mq�Mq�MMq�Mq�q�MMq�q�Mq�Mq�Mq�Mq�Mq�Mq�M��Mq�MMq�Mq�q�MMq�q�Mq�Mq�MMq�q�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mg�Mq�@q�@q�@q�@M@@q�q�@q�@q�@q�@~@q�q�q�q�q�@q�@q�@q�@xv@q�@q�@q�@q�@M@q�rq�@r@r@r@b�@r@r@r@r@L�@r	r r
rrrr@r
@r@r@xv@r@r@r@r@b�@rrr@r@r@r@L@r@r@r@r@i�@r!r,r"r'r#@r$@r%@r&@M@r(@r)@r*@r+@d@r-r2r.@r/@r0@r1@cW@r3@r4@r5@r6@L@r8r�r9r}r:rQr;rFr<rAr=@r>@r?@r@@c�@rB@rC@rD@rE@`�@rGrLrH@rI@rJ@rK@b�@rM@rN@rO@rP@d@rRrWrSrUrT@L@rV@d@rX@rY@rZ@r[`�r\`�r]`�r^`�r_`�r``�`�ra`�rb`�rc`�rdre`�`�rfrg`�`�rhri`�rj`�`�rkrl`�`�rmrn`�`�rorp`�`�rq`�rr`�rsrt`�ru`�`�rvrw`�`�rxry`�`�rzr{`�r|`�`���r~r�rr�r�r�r�@r�@r�@r�@b�@r�@r�@r�@r�@d{@@r�r�@r�@r�@r�@L@r�r�r�r�r�@r�@r�@r�@r�@r�azr�azr�azr�azr�azr�azr�azr�azr�azr�azr�r�r�r�azr�r�azr�azazgCr�azr�r�r�az�?azr�azwazr�r�r�azr�azr�azb�azazr�r�r�azr�gCazr�r�gQazkXv�r�@r�@r�@r�@K�@r�r�r�@r�@r�@r�@l@r�@r�@r�@r�@�x@r�r�r�r�r�r�r�r�r�@r�@r�@r�@xv@r�@r�@r�@r�@xv@r�r�r�@r�@r�@r�@OE@r�@r�@r�@M@r�r�r�r�r�@r�@r�@r�@b�@r�@r�@r�@r�@b�@r�@r�@r�@r�@r�@nW@r�sr�r�r�r�r�@M@r�@r�@r�@r�@M@r�sr�@s@s@s@L�@s@s@s@s@b�@s	ss
ss@s@s
@s@q~@s@s@s@s@N@s@s@L�@su�stass�ssjss>ss4ss)ss$s @s!@s"@s#@b�@s%@s&@s'@s(@cW@s*s/s+@s,@s-@s.@g_@s0@s1@s2@s3@d@s5s;s6@s7@s8@s9@s:@L�@s<@s=@M@s?sVs@sKsAsFsB@sC@sD@sE@d@sG@sH@sI@sJ@M@sLsQsM@sN@sO@sP@xv@sR@sS@sT@sU@L@sWs_sXsZsY@d@s[@s\@s]@s^@M@s`sesa@sb@sc@sd@M@sf@sg@sh@si@L@sks�sls~smsxsnssso@sp@sq@sr@ak@st@su@sv@sw@`�@sy@sz@s{@s|@s}@b�@ss�s�s�s�@s�@s�@s�@`�@s�@s�@s�@s�@b�@s�s�s�@s�@s�@s�@cW@s�@s�@s�@s�@c�@s�s�s�s�s�s�s�@s�@s�@s�@q~@s�@s�@s�@s�@b�@s�s�s�@M@s�@s�@s�@s�@g4@s�s�s�s�s�@j�@s�@s�@s�@s�@aN@s�s�s�@s�@s�@s�@xv@s�@s�@s�@s�@M@s�ts�s�s�s�s�s�s�@s�@d@s�s�s�@s�@s�@s�@d@s�@`�@s�s�s�s�s�@s�@s�@s�@N@s�@s�@s�@s�@nW@s�s�s�@s�@s�@s�@xv@s�@s�@s�@s�@M@s�s�s�s�s�s�s�@s�@s�@s�@b�@s�@s�@s�@s�@M@s�s�s�@s�@s�@s�@`�@s�@s�@s�@s�@g_@s�ts�ts�@xv@t@t@t@t@b�@ttt@t@t	@t
@c�@t@t
@t@t@N@tt8tt!ttttt@t@t@t@nW@t@t@t@t@M@t@t @cW@t"t-t#t(t$@t%@t&@t'@cW@t)@t*@t+@t,@q~@t.t3t/@t0@t1@t2@cW@t4@t5@t6@t7@c�@t9tKt:t@@t;t<@t=@t>@t?@i�@tAtFtB@tC@tD@tE@M@tG@tH@tI@tJ@N@tLtVtMtQtN@tO@tP@d{@tR@tS@tT@tU@M@tWt\tX@tY@tZ@t[@aN@t]@t^@t_@t`@cW@tbt�tct�tdt�tetttftitg@th@c�@tjtotk@tl@tm@tn@L�@tp@tq@tr@ts@d]@tut�tvt{tw@tx@ty@tz@L�@t|@t}@t~@t@az@t�@t�@j*@t�t�t�t�t�@t�@M�@t�t�t�@t�@t�@t�@c�@t�@t�@t�@t�@M@t�t�t�@t�@t�@t�@t�@d@t�t�t�@t�@t�@t�@L@t�@t�@t�@t�@b�@t�t�t�t�t�t�t�t�t�@t�@t�@t�@c�@t�@b�@t�t�t�@t�@t�@t�@M@t�@t�@t�@t�@M@t�t�t�t�t�@t�@t�@t�@L�@t�@t�@t�@t�@L�@t�t�t�@t�@t�@t�@M@t�@d@t�t�t�t�t�t�t�@t�@t�@t�@N@t�@t�@t�@t�@M@t�@t�@t�@t�@t�@g4@t�t�t�@t�@t�@t�@t�@L�@t�t�t�@t�@t�@t�@g4@t�@b�@t�uTt�ut�ut�t�t�t�t�@t�@t�@t�@d{@t�@L�@t�@t�@d@uu	uuu@L�@u@u@u@u@\�@u
uu@u@u
@u@d@u@l@uu)uuuuu@u@u@u@M@u@u@u@u@nW@uu$u @u!@u"@u#@M@u%@u&@u'@u(@��@u*u5u+u0u,@u-@u.@u/@nW@u1@u2@u3@u4@L@u6uRu7@u8@u9@u:@u;@u<azu=azu>azazu?u@azuAazuBazuCazuDazuEazuFazuGuNuHazuIuLuJuKgQb�kXwcuMazgCkXuOazuPazuQazv�azuS@d{@uUu|uVuhuWu]@uXuY@uZ@u[@u\@L�@u^ucu_@u`@ua@ub@d@ud@ue@uf@ug@b�@uiuqujuouk@ul@um@un@y7@up@`�@uruwus@ut@uu@uv@aN@ux@uy@uz@u{@c�@u}u�u~u�uu�u�@u�@u�@u�@M@u�@N@@u�u�@L�@u�u�u�u�u�@u�@u�@u�@L�@u�@u�@u�@u�@cW@u�u�u�@u�@u�@u�@d@u�@cW@u�v�u�v:u�u�u�u�u�u�u�u�u�u�u�@u�@u�@u�@n�@u�@u�@u�@u�@g4@u�u�u�@u�@u�@u�@b�@u�@u�@u�@u�@M�@u�u�u�u�u�@u�@u�@u�@cW@u�@nW@u�u�u�@u�@u�@u�@M@u�@u�@u�@u�@��@u�u�u�u�u�u�u�@u�@u�@u�@xv@u�@u�@u�@u�@g4@@u�u�@u�@u�@u�@b�@u�u�u�@u�@u�@u�@u�@M@u�@u�@u�@u�@u�@M@u�vu�u�u�u�u�@u�@u�@u�@u�@`�@u�u�u�@c�@u�@u�@u�@u�@��@u�v
vvv@v@v@v@M�@v@v@v@v	@b�@vvv@v
@v@v@c�@v@v@v@v@j*@vv(vv@vv@v@v@v@N@vv#v@v @v!@v"@L�@v$@v%@v&@v'@N@v)v4v*v/v+@v,@v-@v.@L@v0@v1@v2@v3@`�@v5@v6@v7@v8@v9@M@v;v�v<vhv=vTv>vIv?vDv@@vA@vB@vC@M�@vE@vF@vG@vH@d@vJvOvK@vL@vM@vN@b�@vP@vQ@vR@vS@b�@vUv]vVv[vW@vX@vY@vZ@b�@v\@m�@v^vcv_@v`@va@vb@M�@vd@ve@vf@vg@M@viv}vjvrvkvmvl@li@vn@vo@vp@vq@d@vsvxvt@vu@vv@vw@M@vy@vz@v{@v|@`�@v~v�vv�v�@v�@v�@v�@t�@v�@�,@v�v�v�@v�@v�@v�@p�@v�@v�@v�@v�@N@v�v�v�v�v�v�v�v�v�@v�@v�@v�@M�@v�@v�@v�@v�@v�@v�g_v�g_v�g_v�g_v�g_v�g_v�g_v�g_v�g_v�g_v�g_v�g_v�g_v�g_v�g_g_p�v�v�v�@L@v�@v�@v�@v�@d@v�v�v�v�v�@v�@v�@v�@M�@v�@v�@v�@v�@b�@v�v�v�@v�@v�@v�@c�@v�@v�@v�@v�@d@v�v�v�v�v�v�v�@d@v�@v�@v�@v�@g4@v�v�v�@v�@v�@v�@cW@v�@v�@v�@v�@c�@v�v�v�v�v�@v�@v�@v�@c�@v�@v�@v�@v�@b�@v�@v�@��@v�w�v�wEv�w!v�w
v�v�v�v�v�@v�@v�@v�@L@v�@d@www@w@w@w@b�@w@w@w@w	@p�@wwwww
@w@w@w@M@w@w@w@w@M@www@w@w@w@~@w@w@w@w @d@w"w1w#w+w$w&w%@`�@w'@w(@w)@w*@b�@w,@w-@w.@w/@w0@b�@w2w:w3w5w4@nW@w6@w7@w8@w9@b�@w;w@w<@w=@w>@w?@M@wA@wB@wC@wD@c�@wFwrwGw^wHwSwIwNwJ@wK@wL@wM@ty@wO@wP@wQ@wR@b�@wTwYwU@wV@wW@wX@d@wZ@w[@w\@w]@L�@w_wgw`wbwa@`�@wc@wd@we@wf@i�@whwmwi@wj@wk@wl@d@wn@wo@wp@wq@`�@wsw�wtw|wuwwwv@cW@wx@wy@wz@w{@c�@w}@w~@w@w�@w�@L�@w�w�w�w�w�@w�@w�@w�@d@w�@w�@w�@w�@M@w�w�w�@c�@w�@aN@w�w�w�w�w�w�w�w�w�w�w�@w�@w�@w�@d{@w�@w�@w�@w�@xv@w�@w�@w�@w�@w�@ak@w�w�w�w�w�@N@w�@w�@w�@w�@d{@w�w�w�@w�@w�@w�@d@w�@w�@w�@w�@M@w�w�w�w�w�@w�@w�@w�@w�@aN@w�w�w�@w�@w�Nw�Nw�Nw�Nw�Nw�Nw�Nw�Nw�Nw�Nw�Nw�Nw�Nw�Nw�Nw�w�Nw�NyONw�w�NyONw�@w�@w�@w�@M@w�w�w�w�w�@w�@w�@w�@`�@w�@w�@w�@w�@d@w�w�w�@w�@w�@w�@L@w�@w�@w�@w�@L@w�x%w�xw�xw�xw�@w�@w�@x@d@x@x@x@x@d@xxx@x	@x
@x@L@x
@x@x@x@p�@xxxxx@��@x@x@xxvxxvΝxvxx x@x@x@x@c�@x!@x"@x#@x$@b�@x&x:x'x/x(x*x)@cW@x+@x,@x-@x.@b�@x0x5x1@x2@x3@x4@M�@x6@x7@x8@x9@M@x;x>x<@x=@j�@x?xDx@@xA@xB@xC@c�@xE@xF@xG@xH@M@xJ�mxK��xL��xM��xN�=xO��xP��xQy9xRx�xSxixTx]xUxYxVtyxW@xX@L�@tyxZx[@x\@p�@x^xex_xbx`@xa@L�@xc@xd@xv@dxfxg@xh@g_@xjxyxkxrxlxoxm@xn@M@xp@xq@L@xsxvxt@xu@M@xw@xx@M�@xzx~@x{x|@x}@L�@xdx�@x�@x�@Mx�Mx�Mx�Mx�Mx�Mx�Mx�Mx�Mx�Mx�Mx�Mx�Mx�Mx�Mx�M��x�x�x�x�x�x�x�x�x�@x�@N@x�@x�@i�@x�x�x�@x�@M@x�@x�@az@x�x�x�i�x�@x�@�X@x�x�x�@g_@x�@x�@�g@x�y*x�x�x�x�x�@x�@M@x�@x�@L�@x�y'x�@x�@x�@m;x�x�x�x�m;m;x�x�m;m;x�x�m;x�m;m;x�x�m;x�m;m;x�x�m;x�m;x�m;m;Q�x�x�x�x�x�m;x�m;x�m;x�m;m;x�m;x�m;x�x�m;x�m;m;x�x�m;Q�m;x�m;m;x�m;x�m;x�x�m;x�m;x�m;x�m;x�m;x�m;x�m;x�m;x�m;x�m;x�m;x�m;x�m;x�m;x�m;x�m;x�m;x�m;x�m;x�m;x�m;x�m;x�m;Q�m;x�Q�x�yx�ym;x�m;x�x�m;m;x�x�m;m;x�m;x�ym;ym;m;Q�m;yym;m;ym;yym;ym;y	m;m;y
m;yym;y
m;ym;ym;ym;ym;ym;ym;ym;ym;ym;ym;ym;ym;ym;ym;Q�m;m;yym;ym;y m;y!m;m;y"m;y#m;y$m;y%y&m;Q�m;y(@y)@b�@y+y2y,y/y-@y.@j�@y0@y1@M�@y3y6y4@y5@L@y7@y8@g4@y:�py;�Zy<�Dy=yDy>yAy?@y@@g4@yB@yC@j�@yE@yF@yG@yHy�MyIyJMyKydyLyXyMMyNMyOMyPMyQMMyRMySyTMMyUyVMyWM�MyYMyZMy[My\My]My^My_My`MMyaybMycM�Myey�yfMygMyhMyiMyjMykMylMymMMynyoMypMyqMyrMysMytMyuMyvMywMyxMyyMyzMy{My|My}My~y�y�Oy��OM�Oy�y�y�y��OMM�Oy�M�OMy�My�My�My�MMy�y�My�My�My�My�My�My�My�My�My�My�My�My�My�My�My�My�My�My�My�My�My�M�OMy�zAy�MMy�y�My�My�My�My�My�z:y�z
y�y�y�y�y�y�y�y�y�MMg�g�y�g���y�g�y�g�g�My�y�y�y�y�y�g���y�g�y�My�My�My�My�My�My�My�My�My�My�My�My�My�g�g�MMy�y���y�My�My�My�My�My�My�My�My�My�My�My�My�My�My�Mg�My�y�g�y���g�y�g�g���y�y�y�y�y�y�y�y�q�MMy�y�My�My�My�My�My�My�My�My�My�My�My�My�My�My�My�MMy��Oq�y�My�y�Mg�q��OzzzzzztO�����Ozz����tOq�zzz	z
g������4zM�g�q�zMzzzzzzzzM�g��%Mzz�OMtO��zMzM��MzMzMMzMzzMz Mz!Mz"z-z#z&z$g�z%g��o)xz'z*z(z)��g�g�)�z+z,g���M��z.z4z/z2z0z1��q����4z3tO*��oz5z8z6z7�;M���g�z9Mq�tOz;Mz<Mz=Mz>Mz?Mz@Mg�MMzBMzCMzDzEMzF{/zGznzHzNzIMzJMzKMMzLzMMg�MzOMzPMzQMzRMzSMzTMzUz`zVMzWzZg�zXg�zY����z[z]q�z\�Og�z^z_�Og�Mg�zazjzbzezcg�zdg���g�zfzizgzh��tOM����MzkMzlMzmM�O��zoz�zpMzqMzrMzsz�ztz�MzuzvMzwMzxMzyMzzMz{Mz|Mz}Mz~MzMz�Mz�Mz�Mz�z�Mz�Mz�z�MM�Oz�Mz�Mz�Mg�Mz�MMz�M�Oz�Mz�Mz�Mg�Mz�Mz�Mz�{z�z�z�z�Mz�z�z�Mz�z�Mz�Mz�MMz�z�MMz�Mz�Mz�Mz�z�Mz�MMz�z�Mz�Mz�Mg�Mz�z�z�Mz�Mz�MMz�z�MMz�Mz�Mz�Mz�z�Mz�MMz�z�Mz�Mg�Mz�Mz�Mz�MMz�z�MMz�Mz�Mz�Mz�z�Mz�MMz�z�Mz�z�z�z�g�MMg�z�Mg�Mz�z�Mz�Mz�z�Mz�Mz�MMz�z�MMz�Mz�Mz�Mz�z�Mz�MMz�z�Mz�Mz�g�g�MMz�z�Mz�Mz�Mz�MMz�z�MMz�Mz�Mz�Mz�z�Mz�MMz�z�Mz�Mz�Mg�Mz�Mz�MMz�Mz�z�Mz�Mz�MMz�z�MMz�z�MMz�Mz�M{M{M{{M{M{Mg�MM{{M{	{{
M{M{M{
M{MM{{MM{M{M{M{{{{MMg�{MM{{M{M{Mg�M{MM{{ M{!M{"MM{#{$MM{%M{&M{'M{({)M{*MM{+{,M{-M{.g�g�M{0M{1�{2M{3M{4M{5M{6M{7��{8��{9��{:�{;}o{<{�{={O{>g�{?g�{@M{AM{BM{C{Ig�{D{Eg�g�{Fg�{G{Hg�g�M{JMg�{Kg�{Lg�{M{NMg�M{P{v{Q{i{RM{SM{TM{U{c{V{^{W{\{X{Yg�q�{Zq�q�{[q�g�{]g�q�g�{_g�g�{`M{aM{bMg�{dM{eM{fM{gMg�{hg�M{jM{kM{lM{m{rg�{ng�{og�{p{qMg�M{sM{tM{uMg�Mg�{w{xM{yM{z{�{{M{|{�{}{���{~{��{���������{�{�M��{���M{�M��M{�M{�MM{�M{�{���M��{�|lM{�M{�{�{�{�{�{�{�g�{�g�{�{�g�{�g�{�g�{�g�g�M{�{�{�{�g�{�g�{�{�g�Mg�g�{�{�M{�M{�{�MM�M�M{�{�{�{�{�{�{��+{��+M�+M{�{���M��{�{�Mg�{�{�{�Mg�M{�Mg�M{�{�{�M{�M{�g�Mg�M{�M{�{�g�Mg�{�{�{�{�{�{�{�MM{�{�{�M{�Mg�{�MMg�M{�M{�{�{�{�g�g�M{�Mg�M{�{�{�MM{�{�MMg�M{�{�{�M{�Mg�{�{�{�Mg�M{�Mg�M{�{�{�{�{�{�{�{�{�M{�g�Mg�{��O{�MMg��O{�L�{�L�{�L�ML�{�{�{�{�M{�M��M{���{����+��{�{�{�g�{�g�Mg�{���g�{�g�{�M{���M{�|6{�||||||||)�|)�M|)�M||)�Mq�|	q�|
��M||��|
|����|��M��|��||�OL��O|||g�)�||��)�M|||��g�M|g�|g�Mq�| |(|!g�|"|$g�|#g�q�|%�O��|&|'L���L�|)|/|*|.g�|+|,|-��L�L�MMg�|0|4�O|1|2g�|3g��Og�|5��g���|7|K|8|=|9|<��|:��|;��g�g�q�|>|G|?|Cq�|@|A��g�|BM����|D|E�+|FMMg��+|H��|I��|J����|L|X|M|S|N|P|Oq�Mq�q�|Q��|R��M|T|W|U�%|V�%���%�%�4|Y|f|Z|c|[|^q�|\q�|]q�M|_|aq�|`Mq�M|bMq�|d��|eMML�|gg�|h|jM|iL�g��O|k�OM|mM|n}X|o|�|p|�|q|�|r|�|s|u|t��M)�|v|||w|z|xM|yM�4MM|{�4MM|}M|~||��4Mq�M|�|�|�|�|�Mg�|�|�Mg�M|�MM|�M|�M�4|�M|�M�4M|�|�|�|�|�|�M|�|�|�M|�M��|�MM�%|�Mg�|�g�M|�|�|�M|�M|�M�%M|�|�M|�|��%M�%|�|�|�Mg�M|�|�Mg�g�M|�|�|�|�g�MM|�M|�M|�Mg�|�|�|�|�|�M|�Mg�M|�g�M|�Mg�|��%|��%|��%g��%|�|�|�|�|�|�|�|�|�q��%|�|�q��%q�q�|�|��4|��4q��4|����4|��4|�|����4��|�|�|�|�|�g�|�g�|�g���g�|��Og�|�|�|�g�MM�O|�g��O|�|�g�|�g��Og�|�|�|�g�g�|�|�g�|��4|��%g��%|�|�g�|�Mg�|�M|�M|�M|�Mg�M|�}*|�}|�|�|�M|�|�M|�|�g�M|�Mg�g�|�g�|�g�|�g�M|�}|�|�M|�M|�|�g�Mg�}}}Mg�MM}}}g�)�M)�)�}}L�}	L�}
L�)�L�}}}
}}}}��L�}}��L�����}}��}������M}M}M}}q�Mq�}}%}}!}g�}g�} g�q�g�}"Mg�}#}$Mg�MM}&M}'M}(})q�Mq�}+}F},}7}-}2M}.}/M}0M}1Mq�M}3tO}4tOM}5}6tOMtO}8}=}9MtO}:tO};}<MtOM}>}B}?tO}@tO}AtOMtO}C�%tO}D}E�%tO�%}G}R}H}M}I�4�%}J}K�4}L�4�%�4�4}N}Oq�}Pq�}Qq��4q�}SM}TM}U�Oq�}V}W�Oq��O}YM}ZM}[}f}\}bg�}]g�}^}_�%}`�%g�}ag��%}c}e}d�Oq��O�O�%}gM}hM}i}k}jg��%q�}lM}mMg�}ng�M}p~�}q}�g�}r}sg�}tM}uM}vM}wM}x}�}y}}}zg�}{g�g�}|g�M}~}�g�}}�g�Mg�g�}�g�}�g�M}�M}�M}�M}�Mg�M}���}�tO}�}�}�}�}�}�M}�M}�}�M}�}�M}�Mg�}�}�M}�Mg�}�Mg�M}�}�}�M}�}�}�M}�}�M}�M�4}�M�4M}�}�}�}�}�M�4MM}�M�%}�M}�M�%MM}�}�}�}�}�M}�M}�Mg�}�}�}�Mg�MM}�g�MM}�}�}�M}�M�O}�M�OM}�}�}�}�M}�}�}�M}�}�M�%MM}�M}�M}�M�O}�}�}�}�}�M}�M}�M�OMM}�}�MM�4}�}�}�}�M}�M}�M�4M}�}�MMg�M}�}�Mg�M}�}�}�}�}�MM}�M}�}�Mg�M}�g�M}�M}�Mg�}�}�}�MM}�}�M}�M�4MM}�}�MM}��O}��OM}�~?}�~}�~}�}�}�}�M}�}�MM}�g�MM}�M}�M}���M}�~~MM~~��M��M~~MM��~~~M~	~
~
M~~q�g�Mg�~MM~Mg�~~M~M~~~Mq�q�MM~M~M~Mg�~~+~~#M~~~!~MM~ M�OM~"Mg�~$M~%M~&~(~'MM�O~)~*M�O�OM~,~7~-~3~.~1M~/~0g�Mg�M~2g�M~4g�M~5M~6Mg�~8~;M~9M~:g�MM~<~=MM~>g�M~@~x~A~a~B~O~C~HM~D~EM~F~GMg�g�M~IM~J~M~K~LM�4�4M~NM�4M~P~X~Q~UM~R~S~TM�%�%MM~V�%~WM�%~Y~]M~Z~[~\M�%�%M~^M~_~`Mq�q�M~b~n~c~iM~d~e~gM~fq�MM~hMg�M~j~k~m~lMg�Mg�MM~o~p~tM~q~r~sMg�g�MM~u~v~wMg�g�M~y~~zM~{M~|M~}MM~~Mg�~�~�~�~�~�~�~�~��4M~�~�Mg�g�M~�MM~�g�M~�MM~�~�~�g�MMg�~�~�~�~�~�MM~�g�M~�MM~�g�MM~�M~�M~�Mg�~�
~�M~�M~�M~�M~�~�~�~�~�~�~�~���~�g�~�q�g�g�~�~�~�g��O�Og�~�~�~�~�~�g�g��O~�~�g�)�q�g�~�~�~�~���L�����~�~���g�g��+~�~�~�~�~�g�~�~��+g�g�M�~�~�g�~�g�M�~�~�M�g�M�g�~�~�~�~�~�~�g��4�4�%~�~��%M~�~�M�MM�O~�~�~�~�~�g��Og�g�~�g�M~�~�M~�Mg�~�~�g�q�q�)�~�~�~�~�~�~�~�~�~�~�~��%�4�O���O~�L�g�g�~�~�~�tOg�g���~�~�~�~�~�~���g���g�~�g�g���~�~�~�Mg��+M��~�~�~�~�~�M��M�~�����~�~�~�M��M~�~�g���g�������MMtOq�MMM	tO
tO�OM�OMI<MMM(MMM�%MMMg�MMg�$ M!"Mg�#q�Mq�M%M&'MM�4)3*-M+M,Mg�M./1M0Mg�M2M�M485M6MM7M�M9MM:M;M�M=g�>g�?M@Mg�ABEg�Cg�Dg�MFMGMMHg�MMJKdLZMMNMOMPVMQRTSMMg�UMg�Mg�WMXYM����[M\M]M^M_M`bag��4g�g�cg�MeMf�g�h�iwjpkml�Oq��4no�O�%�4�%qtrsq��4�O�4uv�O�%�4�%x|yMz{�4q��4�O}�o~�Oq����%�4q��%�M�M����q��O�4�;�M�;M�Mg��g��g����M����g��g��g��Mg�������)�M�������tO*�g�������M�M��M������g�Mg�)��g�q��������g�������MM����������L�M����)���)���������Mq�q�M��M�O�OM����M��M�M�M�M���M���M��M����M�M��M�M�MM�M��MtOM�MtOM����M�M�������0������g���MM��OMMg������MM����M�g�M��Mq�g�M������Mq�g�MM�g�M����Mq�g�MM�g�M��������M�g�MM�g�M��M�g�MM�g�M�	��
�
���%q��4�O���%q��4�O��O���%q��4�O��$�������%q��4�O���%q��4�O��!�� �%q��4�O�"�#�%q��4�O�%�,�&�)�'�(�%q��4�O�*�+�%q��4�OM�-�.�/M�4�%�O�1�Q�2�>�3M�4�:�5�8�6�7M�4�%�OM�9Mg��;M�<�=M�4�%�O�?�H�@�E�A�C�BMg�M�DMg�MM�F�GMg�M�I�N�J�L�KMg�M�MMg�M�OM�PMg�M�R�k�S�^�T�Y�U�W�VMg�M�XMg�M�Z�\�[g�g�M�]g�g�M�_�f�`�c�a�bg�MMg��d�eg�MMg��g�i�hg�g�M�jg�g�M�l�x�m�r�n�p�og�g�M�qg�g�M�s�v�t�ug�Mg�M�wg�g�M�yM�z�}�{�|����)�L��~M)�L�����������MM��M����M��M������������M����Mq��O��M��M���OMq���M��M��������Mq�M�Oq��O����������MM��M��q��O����M��M��g���Mg���Mg�M����������M��Mq�M��MM��q��O��MM��Mg�����������M������MM��Mg�����M��Mg���M����������MM����������������������Mg�������M������M����g���g���g���g�Mg���g�����g�Mg�����g�������g�����M������M��M��������g���g���Mg�g��������%q��4�O�������������%q��4�O�����%q��4�O���������%q��4�O�����%q��4�O��M���	��g�����������������%q��4�O�����%q��4�O�������%q��4�O���%q��4�O�g��g����%q��4�O�
M�����
���Oq�M��Oq�g��g���g�g��g����Oq�M������M���8�M��1��,��#M� �%�!�"g�Mg��$�+�%�(�&�'g�Mg�M�)�*M�O�OMM�O�-M��.g��O�/�O�0�Og��2M�3�6M��4�5M�MM�M��7M�M�9�W�:�G�;�D�<�%�=�?�O�>�Og��@�Bg��Ag�M�C��M���Eg����F��g��H�M�Ig�g��Jg��K�Lg�g�M�N�R�Oq�g��Pg��Qg�M�S�4�T�Vg��UMg�g��4�X�v�Y�g�Z�^�[g��\g��]g�M�4�_�bg��`g��aMg��c�e�dg�g�Mg��fMg��h�o�i�jg��O�k�m�O�l�Og��ng�Mg��p�sg��qg��rg�M�tg��ug�Mg��w�|�xg��yg��zg��{g�Mg�g��}g��~���g���g�M����Mg�g�M��MM����M��������������M����M��Mq�q�M������g�Mg�����M��Mg�g���g�M������M����g���Mg���Mg�M����M���O���OM���������OM�OM��M�OM����������M��MMg�����M������M����M����M����MM��Mg���������g���g���MtO��g���g�tOg���������g���g��O�����Og�g��%��M�����%�4�4MM������������M��M��M����M����M��MMg�����������Mg�M��M��M��M��M��M��M��M��M��M��M����g���g�Mg�M���M��������M����������������q�M�Oq������O�%�4q���������q��4�O������O�%�4�O����������q��4�Oq�M��4q����o��O�4M��%�4�Mg��	g��
g����g��
�-�����Mg�M���M�M����M�tOM�� ��M�M�M��M�����)��)�M�!�&�"�$M�#M�����%M���'�*�(�)����L�M�+�,����)�M�.�A�/�9�0�5�1�2)�g��3�4����)����6�8�7g���)�tOg��:�=g��;M��<g�M�>�@�?��g�MM�tO�BM�C�I�D�F)��Eq����G�H��M)��o�J�L�KtO�4M)��o�N�`�O�[�PM�QM�R�W�S�U�Tq��%�O�O�Vq��O�XM�Y�ZM�o�o)x�\M�]M�^Mg��_Mg��a�l�bM�cM�d�gg��eg��f�Oq��h�ig�M�j�kM�������m���n�|�o�v�p�s�q�r�%�Oq��O�t�uM�og��o�w�yM�x�%�4�z�{�%�4Mq��}M�~�����q��%�oq�����q��%�oM��M������������Mg�g�Mg�������g���g�Mg�M��M��M��M��M��M��M��M��M��M��M��M��M��M��M��Mg�M���*����������������g���tO����M��M��M��M��M��M��M��MMg�������g���M��M��M��M��M��M��M��MM��g�M������M��M��M��M��M��M������M��Mg�MM����g�g�M��M��M��M��M��M��M��M��M��M��������q�g��Og�g���g���������������g�)�)�M����M�tOq�������tO����g�����g��O���������������Mq�q�g��������Og��O����������g���q���M��M��M��M��M��M��M����M��M��M����M�����
�M�M�M�M�M�M�M�M�	MMtO�M�M�
M�M�M�M����M��M�otO�������og�g�M�����OM����*��M�M� M�!���"���#�S�$�7�%�/�&�)�'�(�����M�*�,M�+tOM�-�.M�OtO�;�0�3�1g��;�2g�M��4�5g�M��6g�)xg��8�E�9�?�:�=�;�<��M�OM�>g�g�)x�@�B�Ag�Mq��C�D��g�)x���F�L�G�IM�Hq����J�Kg���g����M�P�N�Og��O�Oq��Q�R��q��O���T�k�U�b�V�\�W�Z�X�Y��g�g����[q�g����]�_�^�Oq�g��`�a�O�������c�h�d�f�eg���M�g��g�M�ig��jg�tOq��l�w�m�q�n�o��M�g��pg�tO�r�u�s�tg�tO�;g��vg�g�q��x�}�y�{�zg��Oq��|�O���O�~�������g�g�M��tOM����������������������g����;g�����M�g�q�tO��������g�����tOg�����������Mg�����q��Og�q�g���g���tO�������������g���g�M�O��MtO���������Oq�q�g�g�����q���������������Oq�g��Og�g�������)xg��Og������������������Og�����q�Mg�M����tO������)xy�y�q�������������q�)�)�q������Oq�q��o���������o����g�������MMtO������������M�����M����MM���M�������g��o��tOg�����g���������tO����g�M����M���tOg���M��������������������;g�g���g��O������g�g�q�����g�q�g��O�����������O�Og�g�����������q�*�*�~����~���O���
�����g�q��Og�M���J��J$3��	g�A�$3A������
�A��Oq�����q��o�;d��g��d�oy���oy��M��&�����g���g�tO�tOg�� �#�!�"�4�otO�;�$�%y��otO}q�'M�(M�)L�}qtO�+��,���-���.���/���0M�1M�2M�3���4�d�5�R�6�D�7�>�8�;�9�:tO)x�4�%�<�=q�MM�o�?�B�@�A�o�%q��O�Cq��4*��E�K�F�H�O�G�O�%�I�J�4q��4�O�L�O�M�N�4�O�%�4�P�Q�%�4�4�O�S�]�T�Z�U�WM�V�Oq��X�Y�%�4q�*��[g����\�4g�g��^�_�ag��`g��O�b�c�%�4q��%�e���f�u�g�n�h�k�i�jg��4q��4�l�m�Oq��O�4�o�r�p�q�4�Oq��%�s�t�O�4q��4�v�}�w�z�x�y�Oq��O�4�{�|��)���)��~���������tO��������L�tO����������tO������M���M�����M��������M)��o��������*���;��M��M������������)x��y�g�����~)��J���Md��$3�o��M��M��M��M��M����g�������g���g�����g���g�g�����g�����g����;����g���M��M��M��M��M��M��M��������������tO)�������M�)��;��������������M)�����)�����)���������M�����tO����tO��M���������������������M��M�������1������M��M��M��M��������������M)����������Mg�g�������)���)�����������������tO��������L�tO��tO����tO��tO��������M���M��M����M�)����������M��M��M���g���g����g��g��������M�M�M$3M�	M�
M�M��&�
��������O�%�4q����%�4q��4�����Oq��O�4���4�Oq��%��$��!�� �O�4q��4�"�#�Oq��O�4M�%�o*��'�.�(�+�)�*��;)xy��,�-��~�Jd�/M�0Md�o�2�T�3M�4M�5M�6M�7�N�8�D�9�=�:�;)��g��<��)��>�A�?�@��)������B�CtO����L��E�I�F�H�GtOtO��tO���J�K��M��L�MM�)�)����OM�PM�QM�R�S������M�U�c�VM�WM�XM�Y�_g��Zg��[�\�^g��]g��������`M�aM�bM$3M�dM�eM�fM�g���h�w�i�p�j�m�k�l�O�%�4q��n�o�%�4q��4�q�t�r�s�Oq��O�4�u�v�4�Oq��%�x��y�|�z�{�O�4q��4�}�~�Oq��O�4M���o*���������������;)xy�������~�Jd��M��Md�o��M������M��M��M��M����������������g�����)�������)�������������tO����L���tOtO����������tO����M���������M�)�)�������������)���M��M��M����)���M������M��M��M����g���g�������g���g���������M��M��M$3M��M��M��M���������������������O�%�4q������%�4q��4���������Oq��O�4�����4�Oq��%�������������O�4q��4�����Oq��O�4M���o*���������������;)xy�������~�Jd��M��Md�o���/��������M��M��M��M��M�����������Oq���q���q�M���������O����%�%���%M�o�4�M�M�M�4��4��M�M�M�M�	Mg��
��g��g��
g��g�����g����;g����M�M��M�M�M�M�M�M�M�M��(��"� ���!��M����#�&�$�%MM���tO)��')����)�,���*���+��)��-M�.M��tO�0�G�1�=�2M�3M�4M�5M�6M�7M�8M�9M�:M�;�<q��;�;M�>M�?M�@M�AM�BM�CM�DM�EM�FMg����HM�IM�J���K���L���M�u�N�e�O�]�P�V�Q�T�R�S�4q�)xg����Uq��O�W�Z�X�Yq��O��g��[�\tO����M��^�a�_g��`g�tOM��bg��c�dM��q����f�m�g�jg��h�i��g����k���l���O���n�r�o�q���p��g���g�g��s�tM�g�tO�v�|tO�w�x�{�y���z����g�tOg��}���~���������g�y�����g�y�������y�tO��tOy���������y�)�M�)���MM�������������g�������������Mq���g������;g��;g�g���g���g�M��������g���Mg��O��q�����g�q�g�����g�q����4��g�������������g�������q��4���4���O�4�O����q������O���Oq�����������������)���������M�q�tOq��������4q����4����q��4�O�O����q��O���������������������������O~~����O��)���O�~���4�����O)�)��4����q��O���������O�����o�O�oq��o���������o���o�J�J$3�J��$3�J��M��M���	��������������$3�J���o$3����$3��$3)x)x��)x�������d����dd����MdM���������g���g�Mg���g��g��4�4��4A�A����A��A�g�g�A��
����}qA��
A�g�}q�}qg��Mg���Mg�M�����[��E��6�M�M�M�M�M�M��+� �$�!�#�"tO�o�4)��o�%�(�&�'�%�Oq��o�)�*�oMM�%�,�1�-�.�4q��/�0�%q�q��%�2�5�3�4�o�%�o����M�7M�8M�9M�:M�;M�<Mg��=�>�B�?g��@�Ag���g����CM�DMg�M�FM�GM�HM�IM�JM�KM�LM�M�W�N�T�O�Q)��P�����R�S)�����)��U�VtOM���M��XM�Y�ZtO)���M�\M�]M�^���_M�`M�aM�bM�c�|�d�q�e�k�f�hg��g��)��i�j��)������l�o�m�ntO����L��ptOtO���r�u�s�ttO����M��v�y�w�xM�)�)����z�{������)��}M�~M�M����)���M������M��M��M����g���g�������g���g���������M��M��M$3M��M��M��M���������������������O�%�4q������%�4q��4���������Oq��O�4�����4�Oq��%�������������O�4q��4�����Oq��O�4M���o*���������������;)xy�������~�Jd��M��Md�o���-���������������������M��M��M��M��M��g�g���g�����M��M��M������������g���g���������g���MMg���Mg�����Mg�M��M��M��M��M��������������y��Oq�����dMM�o����*����o�;�����;��)x��M��������)x~�����M��J��M��M��M��M��M�������������A�������tOA�tO���M���M�����������)��M�M��)�$3}qL��	�`�
�&���M�
M�M�Mg�M�Mg���M�� �������g�������g�g�M�����M����������!�%�"�$���#��g�g�����M�'M�(M�)�D�*�5�+�1�,�/�O�-�.q��Oq��0Mq�My��2�3�4y�MM�o�6�>�7�;d�8�9�:d�o�o�;*��<�;�=�;��?�B�@)x��A��J�C�~���E�X�F�P�G�K�H�J�IM���M�tOA��L�N�M�o�Jd�O�;�o�;�Q�S*��R*��;�T�V�U)x�;)x~�W~)x�YM�Z�^�[�\)x�o�]�J�o�J��_�M�aM�bM�cM�d���e�p�f�l�g�j���h�i�������kA���A�A��m�ntO�otOA�tO�q�xtO�r�s�v�t�uM���M���M��wM����y�~�z�|�{�������})���)��������)�M�$3������$3}q}q$3����������������$3}q����}q������������)�)�M�������������M���M���M���������M�����M�����M��M��L�)���)�L�������������������M��M��M��Mg�M��M��M����������g���g�g���g�����M����������g�g�M��M��Mg���g�M��M��M��M��M��������������y��Oq�����MdM�o����*����o�;�����;��)x��M��������)x~�����M��J��M��M��M��M��M����������������A�����A���tOA�tO����M���M�������������)���M��M����)�$3}qL��������������M��M��M��Mg�M��M��M��Mg�������g���g�����M����g�����g���M��M�M�M����	���y��Oq���MdM�o�
�*���o�;�
��;��)x�M����)x~����M��J�M�M�M�M�M��(��"�� �A������!tOA�tO�#�%M��$M����&�'������)��)M�*M�+�,)�$3}qL��.�m�/M�0�V�1�=�2M�3M�4M�5Mg��6g��7�8�;�9�:g�����g����<g�M�>M�?M�@M�AM�B�O�C�I�D�F�Ey��Oq��G�HMdM�o�J�L*��K�o�;�M�N�;��)x�PM�Q�T�R�S)x~����UM��J�WM�XM�YM�ZM�[M�\�h�]�b�^�`�_A������atOA�tO�c�eM��dM����f�g������)��iM�jM�k�l)�$3}qL��n�y�oM�pM�qM�rM�sM�tM�uM�vM�wM�xMg�M�zM�{M�|���}M�~M�M��Mg�M��M��M��Mg�����Mg�M������M������M������MM��M����M��M��M��M��M��M����M��Mg�g�����Mg�MM����MMg���M����M����MM�O��MM����M��M������M�������������Og���g���M��M��M��M��M��M��M��M��Mq�M����������M��M��M��M��M��M��M������MMg�g���Mg���M��M��M��M��M��M��M��M��M�OM������M��M��M��M��M��M����M������Mg�Mg�g�M��M��M��M��M��M��M��M��M��Mg���������MMg���Mg�����M��M��M��M��M��M��MM����Mg�M��M��������M��q�M��MM�O������
�M�M�M�M�M�M�M�M�M���	�O���M�M�
M�M�M�M�M�MM��MM���MM���M�M�M�M�M��3M�M�� M�!M�"M�#M�$M�%M�&M�'M�(M�)M�*�/�+g��,g��-g��.g�Mg��0Mg��1g��2g�M�4MM�5�6M�7M�8M�9M�:M�;M�<M�=M�>M�?M�@Mg��Ag��Bg��Cg�M�E�Fd@d�G�Hd�Id�Jdd�K�Ldd�M�Nd�Od�Pd�Qd�Rd�Sd�Td�Udd�Vd�Wd�X�Ydd�Z�[�d�\�]Mi��^�a�_@�`@M@�b@�c@l�@�e�i�fxv�g@�h@nW@�j�m�k@�l@d@�n@�o@M@�q���r�{�s�w�X�t�u@�v@c�@g4�x�y@�z@d@�|��L�}�~@�@M@N����@��@Z�@����������L��@��@L�@rfc�������d��@��@i�@������@��@q~@��@��@d@���"����������������������@��@cW@��cW��cW��cW��cW��cW��cW��cW��@��@��@b�@����������@��@b�@��@��@cW@��d��@��@b�@��������������@��@L�@��@��@M@������@��@L@��@��@i�@����n�����@��@i�@��cW��@��@q~@�����������������M���M���M���M���M���M���M���M���M�M�����M���M���M���M�M�����M�M���M���M����@��@ak@��M���@��@L�@������cW��@��@L�@�����M���M���M���M���M�M�����M���M���M���M���M��M��M��M��M��M��M��M��M��M��	M��
M��M��M��
M��M�M���M��M��M�M���M��M�M��M���@�@t�@��!��M@�`��@� @cW@c�@�#�D�$�7�%�.�&�*M�'�(@�)@M@�+@�,@�-@N@�/�3`��0�1@�2@j�@cW�4�5@�6@c�@�8�A�9�=@�:�;@�<@M@�>c��?@�@@N@�B�Cdq~@L��E�X�F�O�G�K�HM�I@�J@N@j��L�M@�N@M@�P�T�0�Q�R@�S@N@M��U�V@�W@M�@�Y�b�Z�^@�[�\@�]@iM@@�_�`@�a@d@�c���d@�e|�f|�g|�h���i|�j�*�k���l��|�m�n��o�v�p|�q|�r|�s|�t|�u|||��w|�x|�y|�z|�{|�||�}�~|a�|||����|��|��|��|��|��|��||��������|������|��|��|��|��|��|��|||���|��|��|��|��|��|��||L|��||����|��|��|��|��|��|����|����|���
��������|����|��|��|��|��|��|��||�6������|��|��|��|��|��|��|��|��|��|��|��|��|��||�|��|��|��|��|��|��|��|��|��|��|��|��|��|��|��|��|����������|��|��|��|��|��|��|��|��|��|��|��|��|��|��|�6|��|��|��|��|��|��|��|������|��|��|��|��|��|��|��|������|��|��|��|��|��|��|������|��|�|�|�|�|�|����|�|�|�	|�
|�|�|��|��|�|��|�|�|�|�|�|�|��|�||��|�|�|�|�|� |�!|�"|�#|�$|�%|�&|�'|�(|�)||�||�+�,���-�O|�.�/�?�0|�1|�2|�3|�4|�5|�6|�7|�8|�9|�:|�;|�<|�=|�>|a�|�@|�A|�B|�C|�D|�E|�F|�G|�H|�I|�J|�K|�L|�M|�N|��|�P�q�Q�a�R|�S|�T|�U|�V|�W|�X|�Y|�Z|�[|�\|�]|�^|�_|�`||.|�b|�c|�d|�e|�f|�g|�h|�i|�j|�k|�l|�m|�n|�o|�p||[|�r���s|�t|�u|�v|�w|�x|�y|�z|�{|�||�}|�~|�|��||�|��|��|��|��|��|��|��|��|��|��|��|��|��|��|��||�||����|��|��|��|��|��|��|��|��|��|��|��|��|��|��|��|��|��|��|��|��|۫||��|��|��|��|��|��|����|��||����|��||��||M�����@��@M@���P��������������������������@��@i�@��@��@d@������@M@��@��@M@����������@��@M@��@��@M@������@��@xv@��@��@d@��������d����@��@N@������@��@M@��@��@iM@������g4��@��@nW@L�������������������@��@d@��@��@d@������@��@xv@��@��@g_@���d�d�d�d�d�d�d�	d�
d�d�d�
d�d�d�dd��d�dd��Zd�@�@�@i�@��&���M�@�@`�@� �#�!@�"@d@�$@�%@i�@�'�(m�M�)�,�*@�+@aN@�-�i�.d�/�v�0d�1d�2d�3�Z�4d�5d�6d�7dd�8d�9�:dd�;�<�G�=d�>d�?d�@dd�Ad�B�Cd�Ddd�E�F�Zd�Zd�Hd�Id�Jd�Kd�Ld�Md�Nd�Od�Pd�Qd�Rd�Sd�Td�Ud�Vd�Wd�X�Y�Zd�Zd�[d�\�]d�^d�_d�`d�ad�bdd�cd�d�ed�fd�gdd�h�id�jd�kd�ld�md�nd�odd�p�qdd�rd�s�tdd�u�d�w�*�xd�y�
�zd�{d�|d�}d�~d�d����d������d����dd����d��d��d��d��d����d��d����d��dd����d��dd��d����dd������d��d��d��d����dd��d����dd����d��d��dd����d��d��dd����d��d��dd����dd����d��d��d��dd����d��dd����d��dd��d����dd��d��d��d��������dd����dd����������d����d��d��dd��d����d��d��d��d��dd����dd����dd��d��d��d����d��dd����dd����d��dd��d��d����dd����dd����dd����d��dd����dd����dd��d����d��dd�������dd����dd��d��d��d����dd����d�d��d�dd�d��d�d�dd��	dd�
d�d�d��d��d�d�d�d�dd��dd��d�d�dd��dd��dd��dd� �!dd�"d�#d�$�%dd�&d�'�(d�)d��dd�+�,d�-d�.d�/d�0d�1d�2d�3d�4dd�5�6d�7d�8�I�9�����:d�;�<dd�=d�>�?d�@dd�Ad�Bd�C�Dd�Edd�F�Gdd�H��d�Jd�K�Z�Ldd�M�Nd�Od�Pdd�Q�Rdd�S�Td�Ud�Vd�Wdd�X�Ydd��d�[�\d�]d�^dd�_�`d�add�b�cd�dd�edd�fd�g�hd��dd�jd�k�ld�md�nd�od�pd�qd�rdb��sd�td�ud�vd�w�xd�yd�zd�{dd�|�}d�~d�d��d��dd����dd����dd����dd����dd��db�����������������M����@��@b�@������@��@xv@��@��@N@����nW����@��@cW@M����@��@�M@��������������@��@b�@��@��@b�@������@��@M@��@��@aN@����nWM������@��@M@��az��az��az��az��az��az��az��az��az��az��az��az��az��az������az��az������az��az������az��az��az��az��az��az��az��az��azaz����az��azaz��azkXaz��az��������������v�b�gC����az��az��az��az��az��azkX��kXaz����v�����az��az��az��az��az��azub��ubazazv���az��azwwazv���az��azaz��azb��������d@�d�@�@b�@�����	@�
@M@�@�
@ak@�|��@�@d@�������@�@d@�@�@d@�cW�@�@q~@� �O�!@�"@�#@�$@�%xv�&xv�'xv�(xv�)xv�*xv�+xv�,xv�-xv�.xvxv�/xv�0�1xvxv�2xv�3�4xvxv�5xv�6�7xv�8xv�9�Dxv�:�;xvxv�<�=xv�>xv�?xv�@xv�Axvxv�Bxv�CW[xvxv�Exv�Fxv�G�Hxv�Ixvxv�J�Kxvxv�L�Mxvxv�NW[xvxv@�Q���R�s�S�c�T�Z�U�Y�Vd]�W@�X@nW@@M�[�_�\@�]@�^@b�@�`@�a@�b@aN@�d�m�e�f|�L��g�j�h@�i@M�@�k@�l@n�@�n�rd�o�p@�q@g4@@L��t���u�~�v�}�w�z�x@�y@b�@�{@�|@d@g_c����������@��@`�@��@��@cW@��@��@��@d{@��������������@��@d@��@��@M@������@��@M�@��@��@L�@����������@��@b�@��@��@b�@��d��d��d��dd��d��d��d��d��d��d��d��d��d��d��d��d��d��d��dm�������������@��������@��@N@��@��@c�@������L���@��@c�@������@��@c�@��@��@M@����������@��@��@d@������@��@d{@��@��@d{@����������@��@cW@��@��@cW@��@��@��@L@���'�������������@��@d@��@��@N@������@��@c�@��nW��nWnW����nW��nW��nW��nW��nW��nW��nW��nW�nWnW��nW�nW�nWnW�nW��nWnW�nW�	nW�
nW�nW��
nWnW�nW��nW�nW�nW�nW�nW�nW�nW@nW�� ��d���m�ddq��@�@M@�!�$�"@�#@L�@�%@�&@M@�(�4�)�-�*N�+@�,@d{@�.�1�/@�0@`�@�2@�3@l@�5�9d�6�7@�8@aN@�:d�;@�<@d@�>�V�?@�@@�Ad�B�P�C�I�Dd�Ed�F�G�Ndd�Hd�N�Jd�Kd�L�N�Mdm�dd�Odm�d�Qd�R�Sd�Td�Udd�W���X@�Y@�Z@d�[�\d�]d�^dd�_�`d�ad�bdd�cd�d�edd�f�gdd�hd�id�j�kdd�ld�m�nd�odd�pd�qd�rd�sd�td�ud�vd�w�xd�yd�zd�{d�|d�}d�~d�d@d��@��@��@��L�����L�����L�����L����L���L���L���L���L�L�����L���L���L�L���L�����L�L���L�����L�L���L���L���L���L�����L���L���L���L���L���L���L���L���L���L���L���L�@L���L��L�c�@`�@������������������C������������������@��@��@��@h@��@��@��@��@��@��M��M��M��M��M��M��M��M��M����������M��M��MMq�M����M��M�����oM�M��MtOM������@��@��@��@M�@��@��@��@��@d@����������@��@��@��@b�@��@��@��@��@d@������@L�@��@��@��@��@N@������������@��@��@��@L@�@�@�@�@g4@��
�@�@�@�	@L@�@�@�
@�@�b@��;���@�@�@�@d@�@�@�@�@�@�li�li�li�li� li�!li�"li�#li�$li�%li�&li�'li�(li�)lili�*�+li�,li�-li�.li�/li�0li�1li�2li�3li�4li�5li�6li�7li�8li�9li�:lijVli�<�A�=@�>@�?@�@@cW@�B@d@�D���E�t�F�I�G@�H@b�@�J�O�K@�L@�M@�N@xv@�P@�Q@�RaNaN�S�TaN�UaN�VaN�WaN�XaN�YaN�ZaN�[aNaN�\aN�]�^aNaN�_�`aNaN�a�baNaN�caN�daN�eaN�faN�gaN�haN�iaN�jaN�kaN�laN�maN�naN�oaN�paN�qaN�raN�saNa1�u���v�{�w@�x@�y@�z@`�@�|@�}@�~@�@b�@������@��@��@��@nW@��@��@��@��@ku@��������������@��@��@��@M@��@��@��@��@L�@������@��@��@��@g_@��@��@��@��@b�@����������@��@��@��@b�@��@��@��@��@g_@��@��@��@��@��@b�@���������������������@��@��@��@M�@��@��@��@��@b�@������@��@��@��@b�@��@��@��@��@b�@����������@��@��@��@L@��@��@��@��@`�@������@��@��@��@|�@��@��@��@��@d{@��������������@��@��@��@K�@��@��@��@��@N@��@��@cW@������@��@L�@������@L�@��@��@�@�@`�@��h��V�����@�@�	@�
@�x@�@�
@�@�@L�@��Q�@�@�cW�cW�cW��C�cW��>��"�� ��cW�cW�W�x��WcW�!cW�ucWcW�#cW�$cW�%cW�&�'cW�(cW�)cW�*cW�+cW�,cW�-cW�.cW�/cW�0cW�1cW�2cW�3cW�4cW�5cW�6cW�7cW�8cW�9cW�:cW�;cW�<cW�=cWghcW�?cW�@cW�AcW�BcWghcWcW�D�EcW�F�JcW�GcW�HcW�IcW�u�KcW�L�O�M�Nx�cW�WcWcW�PghcW�R@�S@�T@�U@c�@�W�]@�X�Y@�Z@�[@�\@t�@�^�c�_@�`@�a@�b@L�@�d@�e@�f@�g@M@�i�}�j�u�k�p�l@�m@�n@�o@l@�q@�r@�s@�t@b�@�v�{�w@�x@�y@�z@E@�|@M@�~��@���@��@��@��@j*@������@q~@��@��@��@��@d{@���Z����������������������@��@��@��@d@��@��@��@��@i�@��@��@��@��@��@`�@����������@��@��@��@b�@��@��@��@��@��@��b�b�����b���b���b���b���b�b�����b���b���b���b���b���b���b�b�38������@��@��@��@cW@��@��@��@��@L@��������������@��@��@��@�x@��@��@��@��@b�@������@��@��@��@b�@��@��@��@��@cW@����@����@��@��@��@|�@������@��@��@��@b�@��@��@��@��@��@���3������������@��@��@��@h@��@��@��@�@L�@���@�@�@�@ak@�@�	@�
@�@d{@�
����@�@�@�@L@�@�@�@�@cW@��.�@�@�@�@�@�iM� iM�!iM�"iM�#iM�$iM�%iM�&iM�'iM�(iM�)iM�*iM�+iM�,iM�-iM�iiM�/@�0@�1@�2@M@�4�F�5�@�6�;�7@�8@�9@�:@M@�<@�=@�>@�?@d@�A@�B@�C@�D@�E@ku@�G�O�H�M�I@�J@�K@�L@L@�N@��@�P�U�Q@�R@�S@�T@d@�V@�W@�X@�Y@q~@�[���\���]�n�^�c�_�a�`@N@�b@c�@�d�i�e@�f@�g@�h@aN@�j@�k@�l@�m@M@�o�z�p�u�q@�r@�s@�t@b�@�v@�w@�x@�y@b�@�{���|@�}@�~@�@M@��@��@��@��@l@��������������@��@��@��@b�@��@��@��@��@aN@������@��@��@��@ku@��@��@��@��@N@����������@��@��@��@d@��@��@��@��@d@������@d@��@��@��@��@b�@������������������@��@��@��@L�@��@��@��@��@c�@��@��@��@��@��@b�@����������@��@��@��@`�@��@��@��@��@b�@������@��@��@��@`�@��@��@��@��@b�@��������������@��@��@��@�b@��@��@��@��@L�@������@��@��@��@cW@��@��@��@��@N@������@��@d@������@��@��@��@d@��@�@�@�@N@��2�����R��+���	��
��@�@�
@�@d@�@nW@�@�@N@�� ���@�@�@�@b�@�@�@�@�@d@�!�&�"@�#@�$@�%@d@�'@�(@�)@�*@d@�,�C�-�8�.�3�/@�0@�1@�2@i�@�4@�5@�6@�7@e�@�9�>�:@�;@�<@�=@N@�?@�@@�A@�B@��@�D�O�E�J�F@�G@�H@�I@M@�K@�L@�M@�N@p�@�P@�Q@p�@�S�|�T�e�U�]�V�X�W@j�@�Y@�Z@�[@�\@b�@�^�`�_@d@�a@�b@�c@�d@b�@�f�q�g�l�h@�i@�j@�k@L@�m@�n@�o@�p@cW@�r�w�s@�t@�u@�v@d@�x@�y@�z@�{@N@�}���~�������@M�@��@��@��@��@c�@��@��@xv@����������@��@��@��@sG@��@��@��@��@c�@������@��@��@��@az@��@��@��@��@M�@����������������������@��@��@��@M@��@��@��@��@`�@������@��@��@��@aN@��@��@��@��@N@����������@��@��@��@�@��@��@��@��@L@������@��@��@��@N@��@b�@����������@��@iM@@����@��@��@��@b�@����������@��@��@��@d@��@��@��@��@b�@������@d@��@d@���
�������������@��@��@��@d{@��@N@������@��@��@��@M@��@��@��@��@cW@��@��@�@�@�@M@�@�	@M@��!���
��@�@�@�@M�@�@�@�@�@`�@���@�@�@g4@�@�@�@� @`�@�"�-�#�(�$@�%@�&@�'@L@�)@�*@�+@�,@L@�.�0�/@xv@�1@`�@�3���4���5�d�6�M�7�B�8�=�9@�:@�;@�<@d{@�>@�?@�@@�A@M@�C�H�D@�E@�F@�G@iM@�I@�J@�K@�L@N@�N�Y�O�T�P@�Q@�R@�S@`�@�U@�V@�W@�X@b�@�Z�_�[@�\@�]@�^@L�@�`@�a@�b@�c@`�@�e�y�f�n�g�i�h@d@�j@�k@�l@�m@`�@�o�t�p@�q@�r@�s@`�@�u@�v@�w@�x@g_@�z��{�}�|@M@�~@c�@��@��@��@��@��@M@������������������@��@��@��@g_@��@��@��@��@��@��i���i���i�i��������@��@��@��@b�@��@��@��@��@b�@������@��@��@��@��@az@������@��@��@��@M@��@��@��@��@M@��������������@��@��@��@M@��@��@��@��@L@������@��@��@��@nW@��@��@��@��@M@����������@��@��@��@�
@��@��@��@��@M@������@��@��@��@xv@��@��@��@��@N@���=�����������������@��@��@��@g_@��@��@��@��@M@������@��@��@��@d{@��@��@��@��@N@���	����@�@�@�@b�@�@�@�@�@�H@�
��@�@�
@�@N@�@�@�@�@M@��&�����@�@�@�@M@�@`�@��$� @�!@�"@�#@d{@�%@�F@�'�2�(�-�)@�*@�+@�,@�x@�.@�/@�0@�1@��@�3�8�4@�5@�6@�7@L�@�9@�:@�;@�<@M@�>�g�?�S�@�H�A�C�B@c�@�D@�E@�F@�G@ak@�I�N�J@�K@�L@�M@M@�O@�P@�Q@�R@g4@�T�_�U�Z�V@�W@�X@�Y@aN@�[@�\@�]@�^@b�@�`�b�a@iM@�c@�d@�e@�f@c�@�h�|�i�q�j�o�k@�l@�m@�n@b�@�p@`�@�r�w�s@�t@�u@�v@b�@�x@�y@�z@�{@`�@�}���~���@��@��@��@`�@��@��@��@��@d{@������@��@��@��@b�@��@��@��@��@L@���h�������e����������������������@��@��@��@M@��@��@��@��@b�@������@��@��@��@L@��@��@��@��@nW@����������@��@��@��@`�@��@��@��@��@L�@������@��@��@��@p�@��@��@��@��@L�@����������@��@��@��@��@c�@������@p�@��@��@��@��@b�@����������@��@��@��@p�@��@��@��@��@M@������@��@��@��@M@��@��@��@��@b�@�����������������@��@��@��@aN@��@��@��@��@xv@��@��@M@�����@�@�@�@i�@�@�@�	@�
@N@���
@�@�@�@e�@�@�@�@�@az@��N��#���@�@�@�@M�@�@� @�!@�"@t�@�$�I�%@�&@�'N�(N�)N�*N�+N�,N�-N�.N�/N�0N�1N�2N�3N�4N�5N�6N�7NN�8�9N�:N�;N�<N�=N�>NN�?�@NN�A�BN�CN�DN�EN�FN�GN�HNNx��J@�K@�L@�M@cW@�O�Z�P�U�Q@�R@�S@�T@L�@�V@�W@�X@�Y@c�@�[�`�\@�]@�^@�_@`�@�a@�b@�c@�d@N@�f���g���h�v�i�n�j�l�k@xv@�m@d@�o�q�p@{
@�r@�s@�t@�u@L�@�w�}�x@�y@�z@�{@�|@��@�~���@��@��@��@d@��@��@��@��@gn@��������������@`�@��@��@��@��@b�@������@b�@��@��@��@��@l�@����@����@��@��@��@c�@������@��@��@��@`�@��@��@��@��@M@������������������@L�@��@��@��@��@g_@��@��@N@����������@��@��@��@b�@��@��@��@��@d@������@��@��@��@L�@��@��@��@��@N@��������������@��@��@��@e�@��@��@��@��@b�@������@��@��@��@g4@��@��@��@��@`�@������@��@��@��@��@d@������@��@��@��@N@��@��@��@��@b�@�������\���-��������@�@�@�@c�@�@�@�	@�
@b�@���
@�@�@�@L@�@�@�@�@M@��"���@�@�@�@d{@�@�@� @�!@L@�#�(�$@�%@�&@�'@ku@�)@�*@�+@�,@aN@�.�E�/�:�0�5�1@�2@�3@�4@L@�6@�7@�8@�9@az@�;�@�<@�=@�>@�?@L�@�A@�B@�C@�D@L�@�F�Q�G�L�H@�I@�J@�K@cW@�M@�N@�O@�P@xv@�R�W�S@�T@�U@�V@i�@�X@�Y@�Z@�[@N@�]���^�m�_�b�`@�a@� @�c�h�d@�e@�f@�g@N@�i@�j@�k@�l@M@�n�y�o�t�p@�q@�r@�s@xv@�u@�v@�w@�x@b�@�z��{@�|@�}@�~@d@��@M@��������������@��@��@��@b�@��@��@��@��@d@������@��@��@��@xv@��@��@��@��@L�@����������@��@��@��@j�@��@��@��@��@b�@������@��@��@��@d@��@��@��@��@c�@���������������������@��@��@��@c�@��@��@��@��@b�@@����@��@��M��M��M��M��M��M��g���M��M��M��M��M��M��M������M����M��M*���M}qM��M��MM��dM����@����@��@��@��@M@@����@��@��@��@i�@��������������@��@��@��@M�@��@��@��@��@p�@������@��@��@��@g_@��@`�@���	����@�@�@�@d{@�@�@�@�@l�@�
@�@�@�
@�@ŕ@��?��(�����@�@�@�@L�@�@�@�@�@b�@��#�@� @�!@�"@Л@�$@�%@�&@�'@M@�)�4�*�/�+@�,@�-@�.@c�@�0@�1@�2@�3@d@�5�:�6@�7@�8@�9@d@�;@�<@�=@�>@q~@�@�T�A�I�B�D�C@|�@�E@�F@�G@�H@M@�J�O�K@�L@�M@�N@i�@�P@�Q@�R@�S@d@�U�`�V�[�W@�X@�Y@�Z@nW@�\@�]@�^@�_@L@�a�c�b@g4@�d@�e@�f@�g@d{@�i���j��k���l���m���n�y�o�t�p@�q@�r@�s@`�@�u@�v@�w@�x@i�@�z��{@�|@�}@�~@g_@��@��@��@��@L�@������@��@��@��@��@d]@������@��@��@��@b�@��@��@��@��@�H@��������������@��@��@��@b�@��@��@��@��@d{@������@��@��@��@`�@��@��@��@��@d{@����������@��@��@��@N@��@��@��@��@d@������@��@��@L@��@��@��@��@cW@������������@����@��@��@��@li@��@��@��@��@��@i�@����������@��@��@��@M@��@��@��@��@b�@������@��@��@��@c�@��@��@��@��@L@��������������@��@��@��@q~@��@��@��@��@iM@������@N@��@��@��@��@d]@�����@�@�@�@az@�@�@�	@�
@L�@���
@�@�@�@`�@�@�@�@�@ak@��k��D��0��%�� �@�@�@�@c�@�!@�"@�#@�$@d@�&�+�'@�(@�)@�*@b�@�,@�-@�.@�/@`�@�1�<�2�7�3@�4@�5@�6@cW@�8@�9@�:@�;@M@�=�B�>@�?@�@@�A@d@�C@N@�E�W�F�L@�G�H@�I@�J@�K@N@�M�R�N@�O@�P@�Q@`�@�S@�T@�U@�V@L@�X�c�Y�^�Z@�[@�\@�]@L@�_@�`@�a@�b@`�@�d�f�e@d@�g@�h@�i@�j@az@�l���m���n�v�o�q�p@c�@�r@�s@�t@�u@d]@�w�|�x@�y@�z@�{@ku@�}@�~@�@��@d@����������@��@��@��@L@��@��@��@��@aN@��@��@d@��������������@��@��@��@d@��@��@��@��@b�@������@M@��@��@��@��@d@����������@��@��@��@�H@��@��@��@��@`�@������@��@��@��@aN@��@N@���W���
������������@����@��@��@��@d@������@��@��@��@c�@��@��@��@��@N@����������@��@��@��@L@��@��@��@��@c�@��@��@��@��@��@M@��������������@��@��@��@M�@��@aN@������@��@��@��@M@��@��@��@��@d@���������@��@��@��@M@��@��@�@�@aN@���@�@�@�@e�@�	@�
@�@�@nW@��-�������@M�@�@�@�@�@N@�@�@�@�@�@d@��"� @�!@aN@�#�(�$@�%@�&@�'@b�@�)@�*@�+@�,@M@�.�@�/�5�0@�1@�2@�3@�4@y7@�6�;�7@�8@�9@�:@d@�<@�=@�>@�?@b�@�A�L�B�G�C@�D@�E@�F@b�@�H@�I@�J@�K@xv@�M�R�N@�O@�P@�Q@p�@�S@�T@�U@�V@d@�X���Y���Z�z�[�o�\�j�]@�^@�_L��`L�L��a�bL��cL��dL��eL��fL��gL��hL��iL�iL��k@�l@�m@�n@j*@�p�u�q@�r@�s@�t@�,@�v@�w@�x@�y@`�@�{���|���}@�~@�@��@li@��@��@��@��@`�@������@��@��@��@aN@��@��@��@��@xv@��������������@��@��@��@L@��@��@��@��@xv@������@��@��@��@j�@��@��@��@��@q~@������@��@��@��@��@q~@������@��@��@��@aN@��@��@��@��@d@���D���-���'���%��@��@��az���������gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b��b��b��b��b�gb�w��az�az�az�	az�
az�az�az�
az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az� az�!az�"az�#az�$azw�az�&@b�@@�(�)@�*@�+@�,@ak@�.�9�/�4�0@�1@�2@�3@d@�5@�6@�7@�8@d@�:�?�;@�<@�=@�>@xv@�@@�A@�B@�C@M�@�E�\�F�Q�G�L�H@�I@�J@�K@`�@�M@�N@�O@�P@b�@�R�W�S@�T@�U@�V@�H@�X@�Y@�Z@�[@|@�]�e�^�`�_@K�@�a@�b@�c@�d@M@�f�k�g@�h@�i@�j@M@�l@xv@�n���o���p�N�q���r�0�s���t���u���v���w�|�x@�y@�z@�{@M@�}@�~@�@��@l�@������@b�@��@��@��@��@`�@����������@��@��@��@l@��@��@��@��@g4@������@��@��@��@cW@��@nW@��������������@`�@��@��@��@��@aN@������@��@��@��@d{@��@c�@����������@��@��@��@d@��@��@��@��@b�@������@��@��@��@d@��@��@��@��@L�@���	��������������@��@��@��@��@��L���L���L�L�����L���L���L���L���L���L���L���L�����L�����L�iL���L���L��jL���@��@��@��@i�@������@��@��@��@b�@��@��@��@��@b�@����������@��@��@��@|�@��@��@��@��@l�@����@�@�@�@�,@�@�@�@�@M@�
������
@�@�@�@aN@�@�@�@�@`�@���@M@�@�@�@�@b�@��%� @�!@�"@�#@�$@b�@�&�+�'@�(@�)@�*@nW@�,@�-@�.@�/@d@�1���2�Y�3�J�4�?�5�:�6@�7@�8@�9@d@�;@�<@�=@�>@`�@�@�E�A@�B@�C@�D@`�@�F@�G@�H@�I@L@�K�N�L@�M@L@�O�T�P@�Q@�R@�S@b�@�U@�V@�W@�X@cW@�Z�q�[�f�\�a�]@�^@�_@�`@N@�b@�c@�d@�e@c�@�g�l�h@�i@�j@�k@`�@�m@�n@�o@�p@M@�r�x�s@�t@�u@�v@�w@N@�y�~�z@�{@�|@�}@M@�@��@��@��@b�@��������������@��@b�@��@��@��@��@��@��@��ak��ak��ak��ak��ak��ak��ak��ak��ak��ak��ak�����������������l�{�lՊtk��X>�{��������ՊX>X/tk����rg_9tkXM��ak����������p�j8X/��ak?1ak����������@��@��@��@az@��@��@��@��@g_@������@��@��@��@L@��@��@��@��@M@��������������@��@��@��@li@��@��@��@��@az@������@��@��@��@ak@��@��@��@��@L�@������@��@d@������@��@��@��@M@��@��@��@��@N@�������I����������������@N@��@b�@������@��@��@��@i�@��@�@�@�@cW@����
�@�@�@�	@ak@�@�@�
@�@L@���@�@�@�@d@�@�@�@�@j*@��2��'��"�@�@� @�!@M@�#@�$@�%@�&@L�@�(�-�)@�*@�+@�,@M@�.@�/@�0@�1@b�@�3�>�4�9�5@�6@�7@�8@N@�:@�;@�<@�=@d{@�?�D�@@�A@�B@�C@g_@�E@�F@�G@�H@M@�J�y�K�b�L�W�M�R�N@�O@�P@�Q@b�@�S@�T@�U@�V@c�@�X�]�Y@�Z@�[@�\@d@�^@�_@�`@�a@c�@�c�n�d�i�e@�f@�g@�h@j�@�j@�k@�l@�m@i�@�o�t�p@�q@�r@�s@L�@�u@�v@�w@�x@N@�z���{���|���}@�~@�@��@cW@��@K�@������@��@��@��@xv@��@��@��@��@g_@����������@cW@��@c�@@����@N@���
������������������@��@��@��@��@@��@��@��@��@��@��@��@����@��@��@��@��@��@��@��@@����@��@��@��@��@@����@@����@@��@����@��@��@@���@��@��@��@g_@������@��@��@��@m;@��@��@��@��@��@����������@M�@��@��@��@��@m�@������@��@��@��@g4@��@��@��@��@ku@��������������@��@xv@��@��@��@��@N@��@��@`�@����������@��@��@��@nW@��@��@��@��@L@���@�@�@�@nW@�@�@�@�	@q~@��'���
����@M�@�@�@�@�@d@@��@�@�@�@az@���@�@L�@� �"�!@aN@�#@�$@�%@�&@N@�(�:�)�4�*�/�+@�,@�-@�.@d@�0@�1@�2@�3@c�@�5@�6@�7@�8@�9@c�@�;�C�<�>�=@i�@�?@�@@�A@�B@d@�D�I�E@�F@�G@�H@xv@�J@�K@�L@�M@��@�O���P���Q���R�q�S�]�T�W�U@�V@L�@�X@�Y@�Z@�[@�\@n�@�^�i�_�d�`@�a@�b@�c@M�@�e@�f@�g@�h@N@�j�l�k@M@�m@�n@�o@�p@j�@�r���s�{�t�v�u@g_@�w@�x@�y@�z@`�@�|���}@�~@�@��@L@��@��@��@��@b�@������@��@��@��@��@iM@������@��@��@��@az@��@��@��@��@L@������������������@��@��@��@`�@��@��@��@��@`�@������@��@��@��@��@��@��@��@��@@����������@��@��@��@N@��@��@��@��@L@������@��@��@��@L�@��@��@��@��@`�@��������������@��@��@��@`�@��@��@��@��@cW@������@��@��@��@L@��@��@��@��@c�@������@��@��@��@��@c�@������@��@��@��@d@��@��@��@��@g_@���B����������@����@xv@������@��@��@��@c�@�@�@�@�@|�@�����@�@�	@�
@g_@�@�
@�@�@�I@���@�@�@�@b�@�@�@�@�@q~@��0��%��#�@� @�!@�"@L�@�$@b�@�&�+�'@�(@�)@�*@M@�,@�-@�.@�/@M�@�1�?�2�:�3@�4@�5@�6@�7@�8�9Q�P}X#OT�;@�<@�=@�>@xv@�@@�A@N@�C�f�D�U�E�M�F�K�G@�H@�I@�J@M@�L@j*@�N�P�O@xv@�Q@�R@�S@�T@N@�V�^�W�Y�X@L�@�Z@�[@�\@�]@�I@�_�a�`@b�@�b@�c@�d@�e@c�@�g�{�h�p�i�k�j@rf@�l@�m@�n@�o@L�@�q�v�r@�s@�t@�u@M@�w@�x@�y@�z@d@�|���}���~@�@��@��@N@��@��@��@��@l�@@����@��@��@��@c�@���5����������������������@��@��@��@iM@��@��@��@��@d@������@��@��@��@`�@��@��@��@��@b�@������@��@��@��@��@M@������@��@��@��@b�@��@L@��������������@��@��@��@nW@��@��@��@��@c�@������@��@��@��@L�@��@��@��@��@g_@����������@��@��@��@cW@��@��@��@��@d@@����@��@��@��@ku@���	��������������@��@��@��@`�@��@��@��@��@c�@��@��@��@��@��@b�@����������@`�@��@��@��@��@c�@����@�@�@�@`�@�@�@�@�@�X@�
�!�����
@�@�@�@nW@�@�@�@�@�H@���@�@�@�@N@�@�@�@� @d@�"�-�#�(�$@�%@�&@�'@q~@�)@�*@�+@�,@d@�.�0�/@N@�1@�2@�3@�4@M@�6�v�7�Y�8�E�9�?�:@�;@�<@�=@�>@`�@@�@�A@�B@�C@�D@nW@�F�N�G�I�H@j*@�J@�K@�L@�M@`�@�O�T�P@�Q@�R@�S@o�@�U@�V@�W@�X@n�@�Z�i�[�c�\�a�]@�^@�_@�`@�I@�b@�b@�d@�e@�f@�g@�h@d@�j�p�k@�l@�m@�n@�o@L�@�q@�r@�s@�t@�u@N@�w���x���y���z@�{@�|@�}M�~�M��oM������@��@��@��@ak@��@��@��@��@M@����������@��@��@��@M@��@��@��@��@g4@��@��@d@��������������@��@��@��@b�@��@��@��@��@L@������@xv@��@��@��@��@b�@����������@��@��@��@j�@��@��@��@��@d@��@��@d{@���y���&���{���!������������������@��@��@��@M@��@��@��@��@M@������@��@��@��@xv@��@��@��@��@L�@����������@��@��@��@d@��@��@��@��@az@������@��@��@��@N@��@��@��@��@j*@���
����������@��@��@��@M�@��@��@��@��@iM@���@�@�@�@M@�@�@�@�	@c�@�����
@�@�@�@|�@�@�@�@�@L�@���@�@�@�@li@�@�@�@� @b�@�"�L�#�7�$�,�%�*�&@�'@�(@�)@M@�+@M@�-�2�.@�/@�0@�1@d{@�3@�4@�5@�6@L@�8�A�9�<�:@�;@b�@�=@�>@�?@�@@L�@�B�G�C@�D@�E@�F@M@�H@�I@�J@�K@cW@�M�d�N�Y�O�T�P@�Q@�R@�S@d{@�U@�V@�W@�X@`�@�Z�_�[@�\@�]@�^@`�@�`@�a@�b@�c@L@�e�p�f�k�g@�h@�i@�j@d@�l@�m@�n@�o@c�@�q�v�r@�s@�t@�u@N@�w@�x@�y@�z@l�@�|���}���~�����������@��@��@��@~�@��@e�@������@��@��@��@e�@��@��@��@��@d@����������@��@��@��@cW@��@��@��@��@d]@������@��@��@��@L@��@��@��@��@xv@��������������@M@��@��@��@��@nW@������@��@��@��@iM@��@��@��@��@M�@����������@L�@��@��@��@��@M@������@��@��@��@M@��@��@��@��@L�@������������������@��@��@��@`�@��@��@��@��@`�@������@��@��@��@N@��@��@��@��@aN@����������@N@��@��@��@��@L�@������@��@��@��@b�@��@��@��@��@��@�����@�@d@��
�@�@�@�	@d@�@�@�
@�@�,@�����@�@�@�@d@�@�@�@�@d@��!�@�@�@� @`�@�"@�#@�$@�%@p�@�'���(�p�)�O�*�>�+�3�,�.�-@p�@�/@�0@�1@�2@cW@�4�9�5@�6@�7@�8@nW@�:@�;@�<@�=@M@�?�G�@�B�A@m�@�C@�D@�E@�F@L@�H�J�I@xv@�K@�L@�M@�N@xv@�P�_�Q�W@�R�S@�T@�U@�V@N@�X�Z�Y@L@�[@�\@�]@�^@�b@�`�h�a�c�b@d@�d@�e@�f@�g@N@�i�n�j@�k@�l@�m@b�@�o@az@�q���r���s�~�t�y�u@�v@�w@�x@g_@�z@�{@�|@�}@b�@�����@��@��@��@cW@��@��@��@��@L�@����������@��@��@��@M�@��@��@��@��@b�@��@��@��@��@��@c�@��������������@`�@��@��@��@��@cW@��@��@`�@����������@��@��@��@d@��@��@��@��@L@������@��@��@��@�X@��@��@��@��@d@���'��������������@��@��@��@��@d@������@��@��@��@`�@��@��@��@��@c�@����������@{
@��@��@��@��@c�@@����@��@��@��@L@�����������@��@��@��@��@��i���i���i���i���i���i���i���i���i���i���i���i�����������3�i������4��i���i�B�i��@�@�@�@L@���@�@�	@�
@M@�@�
@�@�@{
@�����@�@�@�@c�@�@�@�@�@cW@��"�@�@� @�!@b�@�#@�$@�%@�&@xv@�(�T�)�@�*�5�+�0�,@�-@�.@�/@M@�1@�2@�3@�4@q~@�6�;�7@�8@�9@�:@d@�<@�=@�>@�?@c�@�A�I�B�D�C@L�@�E@�F@�G@�H@g4@�J�O�K@�L@�M@�N@cW@�P@�Q@�R@�S@d@�U�g�V�\@�W�X@�Y@�Z@�[@c�@�]�b�^@�_@�`@�a@c�@�c@�d@�e@�f@c�@�h�s�i�n�j@�k@�l@�m@g4@�o@�p@�q@�r@aN@�t@�u@�v@�w@�x@xv@�z���{��|���}���~�����������@��@��@��@M@��@��@��@��@ty@@����@��@��@��@L@������@��@��@��@��@`�@������@��@��@��@ku@��@��@��@��@L�@��������������@��@��@��@cW@��@��@��@��@`�@@����@��@��@��@d@����������@d@��@��@��@��@i�@��@��@d@������������������@��@��@��@j�@��@��@��@��@b�@������@��@��@��@M@��@��@��@��@N@����������@M@��@��@��@��@M@������@��@��@��@M@��@N@����������@��@L@������@��@��@��@i�@��@��@��@��@b�@��������@��@�@�@xv@�@�@�@�@`�@��
�	@�
@�@�@cW@�@�@�@�@M�@��`��>��,��!���@�@�@�@cW@�@�@�@� @b�@�"�'�#@�$@�%@�&@ak@�(@�)@�*@�+@�Z@�-�8�.�3�/@�0@�1@�2@d{@�4@�5@�6@�7@n�@@�9�:@�;@�<@�=@t�@�?�I�@�F@�A�B@�C@�D@�E@L�@�G@�H@cW@�J�U�K�P�L@�M@�N@�O@b�@�Q@�R@�S@�T@p�@�V�[�W@�X@�Y@�Z@L@�\@�]@�^@�_@q~@�a���b�y�c�n�d�i�e@�f@�g@�h@`�@�j@�k@�l@�m@j*@�o�t�p@�q@�r@�s@b�@�u@�v@�w@�x@M@�z���{���|@�}@�~@�@L@��@��@��@��@ak@��@��@M�@��������������@��@��@��@M�@��@��@��@��@M@������@��@���>��i���i���i�������i�������)��i�����������i���i���i�������i���i���i�i���i�����i���i���������i���������i���i���i���i�i�����i���i���i�3�i���i���i���i���i�i�����i���i���i��ei�i�����i���i���i���i�����i�����i���i���i�3�i���i���i���i���i�3�i���i���i���i���i���i���i���i�i�����i���i���i��i����f���.���
������i���i���i���i���i���i�i���������i���i���i���i���i���i���i�JLi���i���i���i���i���i���i������ei��ei���i���i��i��i��i��i�i���B��i��i��i��	i��
i��i��i�B�i����i��i��i��i��i��i�i���i��i��i��i��i��i��i��i��i��i�� i��!i��"i��#i�i��$i��%i��&�'i��(i��)i��*i��+i��,i��-i��i��/�@i��0�1i��2i��3i��4i��5i��6i�i��7�8i��9i��:i��;i��<i��=i��>i��?i��ei��A�U�Bi��Ci��Di��Ei��Fi��Gi��Hi��Ii��Ji��Ki��Li��M�Q�Ni��Oi��Pi�Ji��Ri��Si��Ti�Ji��Vi��Wi��Xi��Yi��Zi��[i��\i��]i��^i��_i��`i��ai��b�d�ci�Ji��ei�i�J�g���h��i��i�ji��ki��li��mi��ni��oi�i��p�qi��r�{�si��ti��u�xJ�v�wi�Ji��yi�J�zJi��|i��}i�i��~�i�Ji���i���i���i���i���i���i���i�i�����i���i���i���i���i���i���i���i�3�i�i���i�����i���i�������������i�������������i���i�i���i�����i���i���i�Ki���i���i�����������i���i���i��i���i���i���i��i����������i���i��i���i���i��i�i�������i�����i���i���i���������i��i�������i���i���i���i��i���i���i���i���i��i���������i�3�3�K��������K������������Bz�i��e������i�K�3���������i�B�3�i�������i�i�B���i���������i���i��i���i�K�������i�3�i�����B���3����i���i���i���i���i���i���i�i�����i���i���i���i���i�i�����i�i�B����i��i��i��i��i��i��i�i���	i��
i��i��i��
i��i��i��i��i�i��i���ei��i��i��i��i���&��$i���i��i��i��i�� i��!i��"i���#�i��%i��i��'i��(i�i��e�*i��+�{i��,�-�d�.�K�/i��0i��1�D�2i��3i��4i��5i��6i��7i��8i��9i��:i��;i��<i��=i��>i��?i��@i��Ai��Bi��Ci��i��Ei�i��Fi��G�Hi��Ii��Ji��i��L�Qi��M�Ni��Oi��Pi��i��Ri��Si��Ti��Ui���V�Wi��Xi��Yi��Zi��[i��\i��]i��^i��_i��`i��ai��bi��ci��i��e�k�fi��gi��hi�i��i�ji��ei��li��mi��ni��oi��p�q�i��ri��si��ti��ui�i��v�wi��xi��y�z�B���i��|i��}i��~����������������������ei�B�i�����3�i��ei���i�������i�B�i�����������i�3�������i��ei����������ei�3�i�����B�i��i������������������i��i�i���3�i���i���i�i�B�������i���i�3�i���i��i�������i���i���i���i�i�����i���i���i���i�������������i��e3�i������e3�3�����������i�3�i�B�����i��B�i�i�����i���i���i���i�����������i�i�����i���i���i���i�������i���i���i���i���i��i���i���i���i���i���i���i��i�i���i�����i���i���i���i���i�i�����i���i�i�����i���i��i���i���i���i�i���i�����i�i���������i���i���i���i���i���i��i���i���i���i��i��i��i��i���q��ei����0�i��	i��
i��i��i��
i����i��i��i��i��i��i��i��i��i��i��i��i�i��i���i�i��B�i�� i��!i��"i��#i��$i��%i��&i��'i��(i��)i��*i��+i��,i��-i��.i��/i�i�B��1�S�2�9i��3�4i��5i��6i��7�8JB�3�i�i��:�;i��<i��=�P�>�O��?�@���A���B���C���D���E���F���G���H���I���J���K���L���M���N��K��B�i��Q�R3�B��i�i��T�Ui��V�^�Wi��X�[�Y�Z�eB�3�J�\�]i���i��_i��`�bi��a3�i��c�di���i��fi�i��g�hi��ii��ji��ki��li��m�o3��n3�B��pi����ei��r�si��t���u���v���w�|i��x��y�zi���{�i��}���~���i�������i���i�L���L�i���i�����JL��JLi���i�JLi������e���e���e����i��e����i��e����i��e���ei�i���i���i�����i���i���i���i���i���i���i���i�����������i�i�����i���i���i�i�����i�i�����i�i��i���i�����i���i�i���i���i�������i���i��e�ei���i���i���i���i���i�i���i���i���i�����i�i��e������������B���������i�B���B�i�F�i���������������i���i������i��i�������������3���3���3�i���3�3���3�i���i���i�3�i�������������������i���i���i���i�������i���i���i�������i��*i���i�B�i�i���i�B�i������2��i���i���i���i���i���i���i�������������e3��ei�i��3��e����i��e�e��	i��
i��i��i��
i��i��i��JL�i��i��i�i���i�i���i�JLi���i��e�ei��i���0����i�� i��!i��"i��#i��$i��%i��&i��'i��(��)i��*i��+i�i��,�-i�i��.�/i��i�i��1��i��3i��4i��5i��6i��7i��8i��9i��:i��;i��<i��=i��ei��?��i��@�Ai��Bi��C�~�D�`�Ei��Fi��Gi��Hi��Ii��Ji��Ki�i��L�Mi��Ni��Oi�i��P�Qi��Ri��Si��Ti��Ui�i��Vi��Wi��X�Yi��Zi��[i��\i��]i��^i��_i�3�i�i��a�bi�i��ci��d�ei��fi��gi��hi��ii��ji��ki��l�t�mi��ni��oi��pi��qi��ri��si��i��ui��vi��wi��xi��yi��z�}�{�|i��i���i�i����i���i�i�����i���i���i���i���i���i���i���i���i�i�����i�i�����i�i�����i�i����ei�������i���i���i���i���i���i���i�i�����i���i���i���i���i���i��i����e��i���i���i����������i����H�����������i������������������i����������������������i���i�����i����������i���i��9i���i�������������i���i���i���i���i���i�����i�����i���i���i���������������i������������i���i��i���i���i���i���i���������������i���������i�����i����i���i��i��������������������������������������������������������������������	��
������
����������������������������i���9������� ��!��"��#�1��$�%��&��'���(�)�,��*�+����-�/��.L���0����2��3��4��5���6�7��8����:��;��<��=��>��?���@�A��B��C��D��E���F�G���9�I�g��J�K�W�L�T�M�O�N��i��P�R�Q��i���S�i��U��V�i���X�a�Y�^�Z�\��[�i���]�i���_��`�i��b��c�e��d�i���f�i��h�v�i�t�j�n��k��l��m�i��o�r�p���q�i��s�i���ui��i��w�}�xi���y�zi��{�|�i��i��~�������i��Wi���i��9i���i���������i���������������������������������������������������������������������������������������������������������������������������������������������������W�����������W��i���i���i���i���i���i���i�i�����i���i���i���i������i��i���i������i���i���i���i���i���i���i�i�����i���i���i���i�i���i�����i�i���������������44������������4�4��4�I4������4��4DH4��4����D:4��4��4����4��4����4�I�4�������
�
���
�����
���������
�����
�
��
��
���
��
��
�
��B�����	B��
B�B���B��
B��B�B��B��B���B��B��B��i��i���1��e��+���e�����e����e� �'�!�$�"�e���#���e�%�eL��&L��e�(�e�)�*JL�eJL�e�,�e�e�-�e�.�e�/�0�e�e���2�\�3�@�4�7B��5B��6F�B��8�<�9���:�;��B��=B���>�?B��B��A�T�B�Q�C�F3��D3��E3�B��G3�3��H3��I�JB��KB��LB��MB��NB��OB��PB�B�3��RB��SB�3�B��U�Y���V���W���X��B��ZB��[B���B��]B��^B��_B��`B��a�c�bB��*B��dB�B�B��fi��gi��h�|�ii��ji��ki�i��l�mi��ni��oi��pi�i��q�ri��si��ti��ui��vi��wi��xi��yi��zi��{i��i��}i��~i������i���i���i���i���i���i���i���i��i���i���i���i���i���i���i���i���i��ei���@��@��@��@ak@����������@��@��@��@|�@��@��@��@��@d@������@cW@��@��@��@��@L�@���Y���������������������@��@��@��@{
@��@��@��@��@M@������@��@��@��@c�@��@��@��@��@d@����������@��@��@��@M�@��@��@��@��@b�@������@��@��@��@nW@��@��@��@��@c�@��������������@��@��@��@L@��@��@��@��@cW@������@N@��@��@��@��@N@����������@��@��@��@M@��@��@��@��@b�@�����@�@�@�@|�@�@�@�@�@L�@�	�0�
���@��
@�@�@�@M@���@�@�@�@cW@�@K�@��%�� �@�@�@�@b�@�!@�"@�#@�$@N@�&�+�'@�(@�)@�*@q~@�,@�-@�.@�/@m�@�1�B�2�:�3�8�4@�5@�6@�7@L�@�9@d@�;�@�<@�=@�>@�?@nW@�A@N@�C�N�D�I�E@�F@�G@�H@c�@�J@�K@�L@�M@c�@�O�T�P@�Q@�R@�S@h@�U@�V@�W@�X@`�@�Z���[�}�\�k�]�`�^@�_@i�@�a�f�b@�c@�d@�e@b�@�g@�h@�i@�j@�Z@�l�w�m�r�n@�o@�p@�q@az@�s@�t@�u@�v@M@@�x�y@�z@�{@�|@`�@�~�����������@��@��@��@cW@��@��@��@��@cW@������@d@��@��@��@��@w�@����������@iM@��@��@��@��@xv@������@��@��@��@L@��@��@��@��@M@��������������@��@��@��@��@q~@������@��@��@��@b�@��@��@��@��@i�@����������@��@��@��@d@��@��@��@��@M@@����@��@��@��@`�@��������������@��@��@��@cW@��@��@��@��@d{@������@��@��@��@`�@��@��@��@��@az@������@��@��@��@��@nW@������@��@��@��@b�@��@��@��@��@L�@��@��L����L�����L�L�����L���L���L��L������
�L���L���L���L�L���	L�~�L���L���
L�L���L��L��L��L��IL��L��L���_��;�L�L���L��L��L��L��L��L�� L��!L�L��"L��#�$L��%L��&L��'L�L��(�)L��*L��+L��,L��-L�L��.L��/L��0L��1L��2L��3�4L��5L��6L��7L��8L��9L��:L�@L��<L��=L��>L��?L�L��@�AL��BL��CL�L��D�EL��FL�L��GL��H�IL�L��JL��KL��L�ML�L��NL��O�PL�L��Q�RL�L��SL��T�UL�L��VL��W�XL��YL��ZL��[L��\L��]L��^L�@L��`L��aL��bL��c���dL��e���f�k�gL��hL��i�j>�L�>�L��l�p�mL��n�o>cL�>cL��qL��rL��sL��tL��uL��vL��wL��xL��yL��zL�L��{�|L��}L��~L�L����L���L���L���L���L���L���L���L���L���L���L���L���L�>�L���L�������L�����>SL�>SL���L���L���L���L���L���L���L���L���L���L�L�����L���L���L�L�����L���L���L���L���L���L���L���L���L���L���L���L���L�>SL���L���������������L�������L�>CL�>CL���L���L���L���L���L���L���L���L���L���L�L�����L���L���L�L�����L���L���L���L���L���L���L���L���L���L���L���L���L�>CL���L���L���L�>CL���L���L���L���L�>rL�����������L���L���L���L���L���L���L��+L�������L�L�����L���L���L���L��+L�L���L�����L���L���L���L���L���L���L���L���L���L�>cL���L�L���L��L���b��-�����L��L��	L��
��+�I�L��
��L��L���n��������L����[o�n�L��L���Zv�^L���%��!�L��L�� L��L��"L��#L��$L��iL��&�'�*�(L��)L�o"L��+L��,L�oo�.�@�/L��0�8�1�4�2L��3L�n�L��5L��6�7�d!n�L��9�<�:L��;L����=L��>�?L�x�L��A�T�B�I��C�D�G�E�F���P���HL�L��J�P�K�N�L�Mo�o�obL�L��Oz.��QL��R�So�����L��U�]�V�Z�WL��X�Y����>�L��[L��\L���:�^c^�_L��`�a�����L��c���d�s�eL��f�o�g�k�hL��i�j�e�u�L��lL��m�n�N�>j����pL��qL��rL��L��tL��u��v�|�w�z�x�y�?�{�N�l�{L��]�m�}L��~L��*��������ߜ��ߜL������L�j�L�������L�t�����L���L���L���>���������������L���L��^L���L���L�xl�������L������j�
��L���L���L��wL�������t���L���L������t��L���L���L���
����
����
v������������������������-����������������������@��@d]@��@��@N@N����@��@d@����`�b���xv��@��@M�@����������|���@��@M@������@��@c�@��@��@N@����g4M������@��@d{@��@��@c�@������������M�����@��@l�@@����@��@M@����������@��@L@��@��@d@@����@��@d]@���!����������@��@nW@��@��@g_@������@��@b�@�@�@�@���nW�nW�nW�nW�nW�	nW�
nW�nW�nW�
nW�nWnW����nW��nW�nW�nW�nW�nW�nW�nW�nW�nW�nW�nW�nWnW��� �nW��nW�"�&�#n��$@�%@c�@�'�*�(@�)@nW@�+@�,@`�@�.�r�/�a�0�<�1�5�2aN�3@�4@`�@�6�9�7@�8@cW@�:@�;@li@�=�ZN�>�?xv�@xv�Axv�Bxv�Cxv�Dxv�Exv�Fxv�Gxv�Hxv�Ixv�Jxv�Kxv�L�U�Mxv�N�Rxv�O�P�Qq�xv�����Sxv�Txv���k�Vxv�Wxv�Xxvxv�Y��xv�[�^�\@�]@j�@�_@�`@ty@�b�e�c�d@`�@d�f�k�g�j�h@�i@M�@cW@�l�o�m@�n@N@�p@�q@c�@�s���t�}�u�vdaN�w�z�x@�y@M�@�{@�|@i�@�~�@d@g4��������ak����@��@b�@������@��@xv@��@��@N@����������������3�����@��@b�@������@��@xv@��@��@L�@��������������������cW����@��@b�@��d��@��@cW@������nW��@��@i�@������@��@M@��@��@d@��������������@��@b�@��@��@d@��b���@��@M�@����������@��@`�@��@��@c�@nW����@��@i�@��������������b���@��@d{@������@��@b�@��@��@M@������cW��@��@c�@������@��@M@��@��@L�@����������nW��@��@d@@����@M@����d����@��@`�@d����@��@b�@���!�����������M�@�@d{@�@�@�@g_@d����	@�
@b�@�@�
@M@�������@�@d@�@�@N@xv��@�@d@��NcW�@�@� @cW@�"�@�#�1�$�*�%�'�&@~@�(@�)@cW@�+�.�,@�-@M@�/@�0@L�@�2�9�3�6�4@�5@d@�7@�8@d]@�:�=�;@�<@cW@�>@�?@L@�A���B�Fxv�C�D@�E@|�@�G���H@�I@�J@�Kaz�Laz�Maz�Naz�Oaz�P�b�Qaz�Raz�Saz�Taz�Uaz�Vaz�W�\�X�Zaz�Y�wgC�[b�gC�]�`�^�_v�azv����aazb�v�az�c�daz�eaz�f�z�g�q�h�m�iaz�jaz�k�lazgCgCaz�naz�oaz�pazgQaz�r�v�saz�taz�ub�azw��waz�xazkX�ykXaz�{���|���}az�~az�azubaz��az��azwaz������az��az��azv�az��az��az��azv�az��@��@i�@����������@��@g4@��@��@L�@������@��@d@��@��@b�@���r���'����������������������@��@M@��@��@b�@������@��@cW@��cW��cW��cW��cWcW��cW����cW��cW��cW��cW��cW��cW��cW��cWcW����cWcW��cW��cW����cW��cW��cW��cW��cW��cW��cW��cW��cW��cW��cW��cW��cW��cW��cW?@cW����d����@��@cW@������@��@d@��@��@d@����������cW��@��@b�@������@��@d@��@��@N@������L���@��@aN@M�����@��@c�@�����������������@��@c�@��@��@L�@`�N�����@�@g_@�@�@xv@�L��	@�
@L�@���
�@��@�@ak@���@�@`�@�@�@d]@�� ���@�@c�@�@�@o�@�!�$�"@�#@xv@�%@�&@N@�(�T�)�<�*�0�+�,m�M�@�-�.@�/@`�@�1�5�2@�3@�4@N@�6�9�7@�8@b�@�:@�;@i�@�=�L�>�E�?�B�@@�A@e�@�C@�D@b�@�F�I�G@�H@b�@�J@�K@q~@d�M�N�Q�O@�P@xv@�R@�S@g_@�U�b�V�_�W�[t��X�Y@�Z@d@d�\�]@�^@xv@�`�ad@NM�c�l�d�h�e@�f@�g@cW@d�i�j@�k@g4@�m�ng4@�o@�p@�q@d{@�s��t���u���v���w�{`��x�y@�z@d@�|��}@�~@m�@��@��@b�@������@��@��@cW@������@��@aN@��@��@m;@��������e�����@��@d@������@��@d@��@��@M@����������@��@{
@��@��@L�@������@��@`�@��@��@d]@������������������@��@d{@��@��@`�@N����@��@b�@����������@��@cW@��@��@d@��b���@��@b�@��������������@��@aN@��@��@N@��@��@��@M@����������@��@g_@��@��@L�@������@��@L�@��@��@��@��p���p�p�����p���p���p���p���p���p���p�p�����p���p���p���p���p���p���p���p���p���p���p�p�����p���p���p���p���p���p�p���p���wsp���c��!�������@�@M@�	@�
@d@���
@�@M@�@�@d@�����@�@N@�@�@N@���@�@q~@�@� @q~@�"�W�#�*�$�'�%@�&@ty@�(@�)@az@�+�T�,M��-M��.M��/M��0M��1M��2M��3M��4M��5M��6M��7M��8M��9M��:�>M��;�<M��=M��M��?M��@�R�AM��BM��CM��DM��EM��FM��GM��HM��IM��JM��KM��LM��MM��NM��OM��PM��QM��M��SM���M��U@�V@g4@�X�\M��Y�Z@�[@xv@�]�`�^@�_@j�@�a@�b@d@�d�z�e�n�f�gq~d�h�k�i@�j@d@�l@�m@L�@�o�sd�p�q@�r@n�@�t�w�u@�v@L@�x@�y@M�@�{���|���}g4�~@�@M@������@��@N@��@��@`�@����������@��@nW@��@��@d{@��@��@��@c�@���������������������������n�q~��ty��@��@H:@������iM��@��@�I@������@��@N@��@��@`�@��������������@��@n�@��@��@c�@��t���@��@g4@����@dty����@��@b�@������������@t�������@��@M@��@��@��@��N��N��N��N��N��NN����N��N��N��NN��N����N��N��N��N��N��N��N��N��N��N��N��N��N��N��N��N��N��Nx�N����������@��@d@��@��@d{@������@��@L@��@��@d@������������@��@d@��@�@M@M��@�@M@��
@��@�	@aN@�@�@�
@ty@��h��O��@��9���@�@ak@�@�@�@�d�d�dd�d��dd� �!d�"dd�#d�$�%d�&dd�'�(dd�)d�*�+d�,dd�-�.d�/dd�0d�1d�2�3d�4d�5d�6d�7d�8d@d�:�=�;@�<@xv@�>@�?@L�@�A�K�B�H�CM�M��D�EM��FM��GM��0M��I@�J@N@�LN�M@�N@b�@�P�Y�Q�Ug4�R�S@�T@N@c��V�W@�X@d@�Z�a�[�^�\@�]@b�@�_@�`@N@�b�e�c@�d@xv@�f@�g@b�@�i���j�v�k�oaN�l�m@�n@N@�p�s�q@�r@N@�t@�u@d@�w�xM�`��y���z@�{@�|@�}t�t��~�t���t���t���t���t���t���t���t���t���t���t���t���t���t���t���t���t���t�t���t���t���t�����t�t�����t���t�t�����t�t���t�@��@xv@��������rfnW������@��@aN@��@��@b�@����������@��@N@��@��@M@������@��@|�@��@��@L�@���M����������������������@��@d@��@��@N@��nW��N��N��N��OT��OT��OT��OT��OT��OT��OT��OT��OT��OT��OT��OT��OT��OT��OTQ�OT����������@��@nW@��@��@xv@`�����@��@nW@����xv��������@��@q~@��@��@l@����������@��@d@��@��@j�@������@��@N@��@��@M�@���7���	���L����@�@l@���@�@cW@�@�@��@�
�6�LM��M��
M���M�M���M��M��M����M���0�M���0���0M��0M�M���M��M���0� �5�!M��0�"�0�#�0�$�0�%�0�&�'�0�0�(�)�0�*�0�+�0�0�,�0�-�.�0�/�0�0�0�1�0�2�0�0�3�4�0�0@�0M�cWg4�8�A�9�=@�:�;@�<@�,@d�>�?@�@@b�@�B�F�CM��D@�E@d@�G�J�H@�I@g4@�K@�L@M@�N���O�e�P�\�Q�U�Rd�S@�T@M@�V�Y�W@�X@M@�Z@�[@g4@�]�a�^d�_@�`@xv@�b@�c@�d@d@�f�{�g�t@�h�iN�jN�kN�lN�mN�nN�oN�pN�qN�r�sQ�NQ�N�u�x�v@�w@M@�y@�z@{
@�|���}@�~@�@b�@������@��@N@��@��@M@������������M����@��@`�@������@��@M@��@��@d@����������@��@`�@��@��@d@d����@��@d@����������b���@��@N@������@��@N@��@��@c�@����������@��@e�@��@��@L@������@��@Л@��@��@M@�����������������������������@��@d@��@��@�H@������@��@c�@��@��@L�@������~���@��@xv@@����@��@xv@��������c�d������@��@d@��@��@M�@������@��@��@xv@��M��@��@L�@�����������������@��@j�@��@��@L�@@d���������@��@N@��@��@M@�M�@�@M@����N�N@@�	�
@�@cW@�
@���@�@t�@�@�@M@��<��#����xvg_l@��d��@�@az@� cW�!@�"@iM@�$�0�%�,�&�)�'@�(@d@�*@�+@L�@�-cW�.@�/@L�@�1�5�2n��3@�4@nW@�6�9�7@�8@t�@�:@�;@d@�=�S�>�G�?�Cn��@�A@�B@c�@n��D�E@�F@M�@�H�L@�I�J@�K@xv@�M�P�N@�O@d{@�Q@�R@xv@�T���U���V�Y�W@�X@L�@c��Zc��[c��\�]c��^c��_c��`c��ac��bc��cc��dc��ec��fc��gc��hc��ic�c��j�kc��l���mc��nc��o�|c��p�qc�c��r�sc�c��t�uc��vc��wc��xc�c��yc��z�{c��c��}c��~��c����c��c����������xOxO������������c���c���c�����c�����c�c�����c�c�����c���c���c���c�c���c�����c��c���c�����c�����c��c����������xOxO������������c���j���@��@�X@����������@��@cW@��@��@az@t�M���E����������������������@��@d@��@��@b�@��@��@��@L�@����n�����@��@N@������@��@c�@��@��@M@��������������@��@{
@��@��@|�@��L���@��@`�@����������@��@cW@��@��@M@��@��@��@cW@������������������@��@l�@��@��@c�@?"xv����d����@��@M�@��M���@��@M@���'���#��� ��@��@�@�L��L��L��L��L��L�L���L��	L��
L��L��L�L��
�L��L�L���L��L��L��L��L��L��L��L��L��L��L�L���L��L��L��:L��!@�"@`�@`��$�%@�&@`�@�(�>�)@�*@�+@�,@�-@�.@�/@�0@�1@�2@�3@�4@�5@�6@�7@�8@�9@�:�<@�;��@@�=@���?�B�@@�A@p�@�C@�D@M@�F�y�G�f�H�W�I�P�J�M�K@�L@g_@�N@�O@d@�Q�T�R@�S@��@�U@�V@N@�X�_�Y�\�Z@�[@b�@�]@�^@d@�`�c�a@�b@N@�d@�e@d@�g�p�h�l�i|��j@�k@c�@�mnW�n@�o@y7@�q�u�rN�s@�t@`�@�vc��w@�x@M@�z���{���|���}���~@�@c�@��@��@{
@������@��@d@��@��@d@����������@��@c�@��@��@��@gQ����gQ��gQ��gQgQ����gQ��gQt�gQ������@��@M@��@��@M@��������t�����@��@g4@������@��@`�@��@��@d@����nW����@N@c�@���u���sd��������@��@��@��cWcW����cWcW��cW����cW��cWcW����cWcW��cW����cW��cW��cW��cWcW��cW��cW��cW����cWcW����cWcW��cW��cW��cW��cW����cW��cWcW����cWcW����cW��cW��cW��cW�cW�����������������d��@��@|�@������@��@M@��@��@d@����������@��@c�@��@��@b�@@����@��@ak@���
��������@��@M@�@�@M@���@�@b�@�@�	@c�@�����
@�@xv@�@�@cW@���@�@p�@�@�@b�@��-��$�� �t��@�@M�@�?�!�"@�#@N@�%�)�&@�'@�(@M@�*xv�+@�,@N@�.�:�/�6�0�3�1@�2@d@�4@�5@p�@N�7�8@�9@d@�;�O�<b��=@�>@�?@�@g_�Ag_�Bg_�Cg_�Dg_�Eg_�Fg_�Gg_�Hg_�Ig_�Jg_�Kg_�Lg_�Mg_�Ng_g_���Pd�Q@�R@�S@l�T�Ul�Vl�Wl�Xl�Yl�Zll�[�\l�]l�^l�_l�`l�al�bl�cl�dl�el�fl�gl�hl�il�jl�kl�ll�ml�nl�ol�pll�ql�rll�t�w�u@�v@M�@�x���y���z���{���|��i��}�~@�@d@������@��@M�@��@��@`�@����������@��@H:@��@��@d@������@��@`�@��@��@xv@��������@M@����@��@M@����nWNd@��������������g4��@��@N@@����@��@d@����������@��@cW@��@��@g4@������@��@�H@��@��@d{@��������iM����@��@M@������@��@��@��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��dd����dd���@��@m�@����������@��@M@��@��@b�@������@��@d@��@��@M@���*������������@��@��@M@����@�@b�@�@�@`�@��
�@�@�	@N@���@�
@iM@�@�@L�@�������@�@L�@�@�@g4@�L��@�@b�@��#� @�!@�"@g_@�$�'�%@�&@c�@�(@�)@c�@�+�\�,�P�-�L�.�1�/@�0@M�@�2@�3@�4@�5M�6M�7M�8M�9MM�:�;M�<MM�=M�>M�?M�@M�AM�BM�CM�DM�E�FM�GM�HM�IMM�J�KMg�M�Md�N@�O@p�@�Q�Uxv�R�S@�T@��@�V�Y�W@�X@d@�Z@�[@xv@�]�i�^�baN�_�`@�a@M�@�c�f�d@�e@b�@�g@�h@M@�j�q�k�n�l@�m@M@�o@�p@b�@�rd�s@�t@M@�v@�w@�x@�yg_�zg_�{g_g_�|�}g_�~g_�g_��g_��g_��g_��g_��g_��g_g_����g_��g_g_����g_��g_g_��g_����g_g_����g_��g_��g_��g_g_����g_��g_g_����g_��g_��g_��g_��g_��g_��g_��g_@g_��
v2��
s
���s���f�������������������d{����@��@M@c�����@��@b�@����������@��@c�@��@��@d@������@��@��@��@��@L�@��������������@��@`�@��@��@p�@������@��@M@��@��@`�@������L��@��@L�@������@��@b�@��@��@i�@������������������@��@M@��@��@xv@��L���@��@b�@������d��@��@nW@N����@��@�,@���
���������@��@M@��@��@��@��nW��nWnW���nW�nW�nWnW�nW��nW�nWnW�nW��	nW�
nW�nW��nWM`���N@@��@�@L�@��3��#�� ����b�@�@�@cW@�@�@�@L@�!@�"@nW@�$�*�%�&L�t��'@�(@�)@`�@�+�/�,b��-@�.@l@�0L��1@�2@N@�4�G�5�>�6�=�7�:�8@�9@aN@�;@�<@nW@aNd�?�Cc��@�A@�B@M@cW�D�E@�F@N@�H�W�I�P�J�M�K@�L@��@�N@�O@L�@�Q�T�R@�S@g_@�U@�V@cW@�X�_�Y�\�Z@�[@d@�]@�^@L�@�`�c�a@�b@b�@�d@�e@M@�g���h���i���j�p�k�o�lЛ�m@�n@nW@@L��q�x�r�u�s@�t@g4@�v@�w@d@�y@�z@�{@�|@�}n��~�����������n���n�n���=ln���n���n�n���=ln�������n���n�n���=ln���n���n�n���=ln�������n���n���n�n���=ln���n���n���n�n���=ln���������L�ak������@��@d@��@��@L�@����������@��@d@��@��@N@������@��@c�@��@�^@������������LL�d]����@��@t�@����������@��@N@��@��@b�@������@��@nW@��@��@nW@��������������@��@b�@��@��@aN@������@��@M@��@��@d@������@��@��@c�@��aN��@��@��@��d��d��d��d��d��d��ddo����:�����������������@��@M@��@��@N@��� ��@��@xv@���@����@��@L�@m�aN����p���@�@M�@���	@�
@�@�aN�
aN�aN�aN�aN�aN�aN�aN�aN�aN�aN�aN�aNaN�aN�aN�f�@�@L�@��#b�� �!@�"@nW@�$�7�%N�&N�'N�(N�)N�*NN�+�,N�-N�.N�/N�0N�1N�2N�3N�4N�5N�6NQ�N�8@�9@d{@�;�W�<�H�=�D�>�A�?@�@@p�@�B@�C@N@�Eg_�F@�G@j*@�I�P�J�M�K@�L@L@�N@�O@M@�Q�T�R@�S@L�@�U@�V@`�@�X�g�Y�`�Z�]�[@�\@M�@�^@�_@L@�a�d�b@�c@n�@�e@�f@d@�h�l�iN�j@�k@L�@�m�p�n@�o@j*@�q@�r@d@�t���u�6�v���w���x���y���z�}�{@�|@N@�~@�@c�@��@��@��@g4@����������@��@`�@��@��@xv@������@��@c�@��@��@b�@��������������@��@L�@��@��@c�@d����@��@M@����@����@��@|@nW����dd��d����d��d��d��d��d��ddq�����������������@��@d@��@��@d@������@��@M�@��@��@��@������M��M��M��M��M��M��M��M��M��M��M��MM����M�;M��������M����M��M��M��M��M��M��M��M��M��M��M���;��M��M�������;��M��M��M��M��M��M��M��M��M��M����M�;�;M�;MM����Mg�MM��M����M��M��M��M��M��M��M��M�M�M�M���q��q��q��q��q��	q��
q��q��q��
q��q�q���q��q��M�Mq�M���@�@�@M�@�`��@�@b�@��*��&� �#�!@�"@xv@�$@�%@t�@M�'�(@�)@d@�+�/�,cW�-@�.@M@�0�3�1@�2@b�@�4@�5@M�@�7�}�8�d�9�B�:�>�;@�<@�=@N@�?b��@@�A@b�@�C�]�D�G�E@�F@cW@�HcW�IcW�JcWcW�KcW�LcW�McW�NcW�OcW�PcW�QcW�R�ScW�TcW�UcW�VcW�WcW�X�[�Y�ZcW$$�f��\cW�cW�^�a�_@�`@aN@�b@�c@M�@�e�q�f�m�g�j�h@�i@d{@�k@�l@b�@�nrf�o@�p@|�@�r�y�s�v�t@�u@b�@�w@�x@b�@@�z�{@�|@�x@�~���������M�xv��@��@��@n�@������c���@��@b�@��@��@��@xv@����������aN��@��@L@������@��@li@��@��@rf@������nW��@��@b�@@����@��@li@��
r�����������������������@��@p�@��@��@�,@��@��@��@�^@������@��@��@b�@li����@��@L�@��������nWb�b�����@��@M@����������@��@ak@��@��@b�@��d��@��@N@������������������@��@c�@��@��@b�@��b���@��@nW@����cW����@��@b�@������@��@c�@��@��@L�@��������������@��@c�@��@��@ty@��@��@��@K�@����������@��@b�@��@��@c�@�d��2�N�N��_�����B������	���
����e��.�
����N�NN��NP}N��N�N��NN;N���N�NQ�N�NN�NR�� �)�!�%�"N�#N�$NNQ�N�&N�'N�(N]R�*N�+NN�,�-NNW��/�F�0�9�1�5�2N�3NN�4OTNN�6�7N�8NOcN�:�A�;�>�<N�=NNQ�N�?�@NNP}�BNN�C�D�EN]RNQ��G�X�H�O�I�LN�JN�KN;N�MN�NNNOc�P�S�QN�RNOcN�T�V�UQ�VpN�WP}O�N�Y�a�Z�^�[N�\�]OENQ�N�_N�`NQ�N�bN�cNN�dNOq�fN�gN�h�v�i�mN�jN�kN�lO�N�n�rN�o�p�qP}NR�N�sN�t�uP}NO�N�wN�x�}�y�{N�zNZN�|NZ��~���NP}N��NY�N;����N����N��N��N��N��N��NN;N��N��N��N��N��N��N��NN;N��������N����N��N��N��N��N��NN;N��N��N��N��N��N��N��NOTN����������N��N��N��N��N��NN;N��N��N��N��N��N��NOTN������N��N��N��N��N��NQ�N��N��N��N��N��N��NN;N��������������N��N��N��N��N��N��NW�N������N��N��N��N��N��NQ�N��N��N��N��N��N��NOEN������N��N��N��N��N��N��NR�NN����N��N��N��N��N��NOTNN����N������N��N��N��N��N��NN;N��N��N��N��N��N��NQ�N��%��N����N�N�N�N�	N�
N�NQ�NN�
�N�N�N�N�N�NOENN�N����N�N�N�N�N�NN;N�N� N�!N�"N�#N�$NQ�N�&�0N�'N�(�)N�*N�+N�,N�-N�.N�/NOTN�1N�2�:N�3�4N�5N�6N�7N�8N�9NQ�N�;N�<N�=N�>N�?N�@N�ANP}N�C�c�D�X�EN�F�ON�G�HN�IN�JN�KN�LN�MN�NNN;NN�PN�Q�RN�SN�TN�UN�VN�WNOEN�YNN�ZN�[�\N�]N�^N�_N�`N�aN�bNOTN�d���e�w�fN�g�o�hN�iN�jN�kN�lN�mN�nNOqN�pN�qN�rN�sN�tN�uN�vNN;N�xN�y���zN�{N�|N�}N�~N�N��NN;N��N��N��N��N��N��N��NN;N��N��NN����N��N��N��N��N��N��NW�N����������������N��N����N��N��N��N��N��N��N[�NN��������N��N��N��N��N��N��NOcN��N��N��N��N��N��N��NN�N��N��N��N��N��N��N��N��N��N��N^CN��������N����N��N��N��N��N��N��N��NQ�NN��N����N��N��N��N��N��N��NQ�N������N������N��N��N��N��N��N��NYN��N��N��N��N��N��N��NQ�N��N������N��N��N��N��N��N��NOEN��N��N��N��N��N��N��NQ�N������N��N����N�N�N�N�N�N�N�NOcN�NN�	N�
�N�N�
N�N�N�N�NN;N��9��&�N���N�N�N�N�N�N�NQ�N�N� N�!N�"N�#N�$N�%NN;N�'�0�(N�)N�*N�+N�,N�-N�.N�/NSNN�1�2N�3N�4N�5N�6N�7N�8NOcN�:�M�;�DN�<�=N�>N�?N�@N�AN�BN�CNSNN�E�FN�GN�HN�IN�JN�KN�LNN;N�NN�O�W�PN�QN�RN�SN�TN�UN�VNN�N�XN�YN�ZN�[N�\N�]N�^NQ�N�`�n�a���b���c���d��e�v�f�n�gN�hN�iN�jN�kN�lN�mN_�N�oN�pN�qN�rN�sN�tN�uNN;NN�w�xN�yN�zN�{N�|N�}N�~NN;N��NN����N��N��N��N��N��N��NQ�NN����N������N��N��N��N��N��N��NOTN��N��N��N��N��N��N��NP}N������������N����N��N��N��N��N��N��NOTN��N��N��N��N��N��N��N��NW�N��N������N��N��N��N��N��N��NOTN��N��N��N��N��N��N��NQ�N��������������N��N��N��N��N��N��NQ�N��N��N��N��N��N��N��NQ�NN����N��N��N��N��N��N��NYN����������N��N��N��N��N��N��NX#N��N��N��N��N��N��N��NYNN����N��N��N��N��N��N��NOEN���Q���"���N��N���N�N�N�N�N�N�N[�N���	��
N�N�N�
N�N�N�NQ�N�N�N�N�N�N�N�N\;N�N�N�N�N�N�N� N�!NVpN�#�>�$�-N�%�&N�'N�(N�)N�*N�+N�,NOTN�.�6�/N�0N�1N�2N�3N�4N�5NVpN�7N�8N�9N�:N�;N�<N�=NN;N�?�HN�@�AN�BN�CN�DN�EN�FN�GNOTN�IN�JN�KN�LN�MN�NN�ON�PNN;N�RNN�S�T�]N�U�VN�WN�XN�YN�ZN�[N�\NOTN�^�f�_N�`N�aN�bN�cN�dN�eNP}N�gN�hN�iN�jN�kN�lN�mNN;N�o���p���q���r���s�|�tN�uN�vN�wN�xN�yN�zN�{NP�NN�}�~N�N��N��N��N��N��NQ�NN��N����N��N��N��N��N��N��NU\N����N��N����N��N��N��N��N��N��NU\N��N��N��N��N��N��N��N��N��NU\N��N��������N����N��N��N��N��N��N��NU\N������N��N��N��N��N��N��NVpN��N��N��N��N��N��N��NOqN��N��N��N��N��N��N��N��N��NN;N�����������������N��N��N��N��N��N��N��NTFN������N��N��N��N��N��N��NN;N��N��N��N��N��N��N��NN�NN����N��N��N��N��N��N��N��NN;N����N����N��N��N��N��N��N��N��NOTNN���N�N�N�N�N�N�N�NN;N�	�N�
��N��
N�N�N�N�N�N�NN;NN��N�N�N�N�N�N�NO�N��(N�� N�!N�"N�#N�$N�%N�&N�'NU\N�)NN�*�+N�,N�-N�.N�/N�0N�1NQ�NN�3�4�D�5N�6N�7N�8N�9N�:N�;N�<N�=N�>N�?N�@N�AN�BN�CNQ�N�E�R�FN�GN�HN�IN�JN�K�I�L���M���N���O�k�P�]�Q�W�R�TN�S[�N�U�V_�N_�N�X�ZN�YW�N�[�\W�NW�N�^�d�_�b�`�aW�NQ�NN�c[�N�e�h�f�g*VNQ�N�i�jQ�NQ�N�l�z�m�t�n�q�o�pQ�N�VN�r�sQ�NQ�N�u�w�vN_�N�x�yN�NX#N�{���|��}�~VpNVpN����R�NR�N��������Q�NOTNN��N;N��������������������N;NN;N����N;NN;N������NO�N����OENOEN������������OqNSN����P}NP}N��������P}NQ�N��NYN����������������W�Q�N;Q�Q���N+Q���Q�Q���N+Q���Q���Q���Q�]�Q�������������N��������NQ�N��NQ�N��������N���N��N�N������_F_FN����[�NQ�N����������������Q�Q�Q�Q�����OTQ�P}Q���������Q�Q�Q�Q�����TFQ�TFQ���Q�����Q���U�Q�����U\Q�U\Q���������Q���������Q��Q���Q�W�Q�Q�����Q�����W�Q�W�Q�Q���������������Q�NNQ���NQ�N��N�����]�[�N��OT���2�������������OEOTOqOT��O�OTN;OT��	�N;N;OT�
�N;OTQ�OT�
�����Q�OT[�OT�OTQ�OT�OTOT�Q�OT��$�����Q�Q�OT��N+OTQ�OT��!W�� Q�OT�"�#Q�OT[�Q��%�,�&�)�'�([�[�*VOT�*�+_FQ�N+OT�-�0�.�/Q�OT_F��OT�1OEOT�3OT�4�B�5�;�6�9�7�8W�OTN+Q��:N+Q���<�?�=�>\�[�OT_��@�AW��VQ�OT�COT�D�FOT�E_FN+�G�HN+TF[�OT�JN�KN�LN�MN�NN�ON�PN�QNQ�N�S�N�TN�U�V���W��N�XN�Y�Z±N�[N�\�]�l�^���_���`���a�q�bNN�c�dN�eN�fN�gN�hN�iN�jN�kN�lN�mN�nN�oN�pNQ�N�rNN�s�tN�uN�vN�wN�xN�yN�zN�{N�|N�}N�~N�N��NQ�N������NN����N��N��N��N��N��N��N��N��N��N��N��N��NQ�N��NN����N��N��N��N��N��N��N��N��N��N��N��N��NQ�N����������NN����N��N��N��N��N��N��N��N��N��N��N��N��NQ�N��NN����N��N��N��N��N��N��N��N��N��N��N��N��NQ�N������NN����N��N��N��N��N��N��N��N��N��N��N��N��NQ�N��NN����N��N��N��N��N��N��N��N��N��N��N��N��NQ�N���)���������NN����N��N��N��N��N��N��N��N��N��N��N��N��NQ�N��NN����N��N��N��N��N�N�N�N�N�N�N�N�NQ�N�	��
NN��N�
N�N�N�N�N�N�N�N�N�N�N�NQ�N�NN��N�N�N�N� N�!N�"N�#N�$N�%N�&N�'N�(NQ�N�*�K�+�;�,NN�-�.N�/N�0N�1N�2N�3N�4N�5N�6N�7N�8N�9N�:NQ�N�<NN�=�>N�?N�@N�AN�BN�CN�DN�EN�FN�GN�HN�IN�JNQ�N�L�\�MNN�N�ON�PN�QN�RN�SN�TN�UN�VN�WN�XN�YN�ZN�[NQ�N�]NN�^�_N�`N�aN�bN�cN�dN�eN�fN�gN�hN�iN�jN�kNQ�N�mN�nN�o�p€�qNN�r�sN�tN�uN�vN�wN�xN�yN�zN�{N�|N�}N�~N�NQ�NNN‚ƒN„N…N†N‡NˆN‰NŠN‹NŒNNŽNNQ�N‘¡’NN“”N•N–N—N˜N™NšN›NœNNžNŸN NQ�N¢NN£¤N¥N¦N§N¨N©NªN«N¬N­N®N¯N°NQ�N²�^³N´��µ�~¶�\·�¸��¹��º��Q�»¼N½N¾NQ�¿�NQ����NQ���Q�N��N��N��N��N��N��N��N��N��N��N��N��N��NQ�N��NN����N��NQ���������Q�Q���Q���Q�����Q���Q�Q���Q���NQ�Q�����NQ���Q���Q���Q�����NQ�N������Q�����N��N��NQ�����NQ�����NQ���Q�N�N�N�N�N�N�N�N�N�N�N�N�N�NQ�N�NN��N�NQ���	��
Q�Q��Q��Q��
�Q��Q�Q��Q��NQ�Q���NQ��Q��Q��Q���NQ�N��L��5��'Q���N� N�!NQ��"�#NQ��$�%NQ��&Q�N�(N�)N�*N�+N�,N�-N�.N�/N�0N�1N�2N�3N�4NQ�N�6NN�7�8N�9NQ��:�;�D�<Q�Q��=Q��>Q��?�@Q��AQ�Q��BQ��CNQ�Q��E�FNQ��GQ��HQ��IQ��J�KNQ�N�MNN�N�ON�PN�QN�RN�SN�TN�UN�VN�WN�XN�YN�ZN�[NQ�NQ��]�^�n�_NN�`�aN�bN�cN�dN�eN�fN�gN�hN�iN�jN�kN�lN�mNQ�N�oNN�p�qN�rN�sN�tN�uN�vN�wN�xN�yN�zN�{N�|N�}NQ�N�áQ�ÀÁÑÂNNÃÄNÅNÆNÇNÈNÉNÊNËNÌNÍNÎNÏNÐNQ�NÒNNÓÔNÕNÖN×NØNÙNÚNÛNÜNÝNÞNßNàNQ�NâóQ�ãäNNåæNçNèNéNêNëNìNíNîNïNðNñNòNQ�Nô��õNNö÷NøNùNúNûNüNýNþNÿN�N�N��N��NQ�N��NN����N��N��N��N��N��N��N��N��N��N��N��N��NQ�N���;�����N������NN����N��N��N��N��N��N��N��N��N��N��N��N��NQ�N��NN����N��N��N��N��N��N��N��N��N��N�N�N�NQ�N����
�NN��N�N�N�N�N�N�N�N�N�N�N�N�	NQ�N�NN��
N�N�N�N�N�N�N�N�N�N�N�N�NQ�N��+�NN��N�N� N�!N�"N�#N�$N�%N�&N�'N�(N�)N�*NQ�N�,NN�-�.N�/N�0N�1N�2N�3N�4N�5N�6N�7N�8N�9N�:NQ�N�<N�=N�>�N�?NN�@�AN�BN�CN�DN�EN�FN�GN�HN�IN�JN�KN�LN�MNQ�N�ONN�P�QN�RN�SN�TN�UN�VN�WN�XN�YN�ZN�[N�\N�]NQ�N�_N�`N�a���bĒ�cN�dĂ�e�tN�f�gN�hN�iN�jN�kN�lN�mN�nN�oN�pN�qN�rN�sNQ�N�uN�vN�wN�xN�yNQ��z�{N�|N�}NQ��~�NĀNāNQ�NăNNĄąNĆNćNĈNĉNĊNċNČNčNĎNďNĐNđNQ�NēNĔIJĕĤNĖėNĘNęNĚNěNĜNĝNĞNğNĠNġNĢNģNQ�NĥNĦNħNĨNĩNQ�ĪīNĬNĭNQ�ĮįNİNıNQ�NijNNĴĵNĶNķNĸNĹNĺNĻNļNĽNľNĿN�N�NQ�N��N��N��������N����N��N��N��N��N��N��N��N��N��N��N��N��NQ�N��N��N��N��N��NQ�����N��N��NQ�����N��N��NQ�N��NN����N��N��N��N��N��N��N��N��N��N��N��N��NQ�N���'��+��0�ŧ�N�N��m��4�N��$��
N��N�N�N�N�N�N�N�N�N�	N�
N�N�NQ�N�NN��N�NQ�����Q�Q��Q��Q���Q��Q�Q��Q��NQ�Q���NQ��Q�� Q��!Q��"�#NQ�N�%NN�&�'N�(N�)N�*N�+N�,N�-N�.N�/N�0N�1N�2N�3NQ�N�5N�6�]�7�FN�8�9N�:N�;N�<N�=N�>N�?N�@N�AN�BN�CN�DN�ENQ�N�GNN�H�IN�JNQ��K�L�U�MQ�Q��NQ��OQ��P�QQ��RQ�Q��SQ��TNQ�Q��V�WNQ��XQ��YQ��ZQ��[�\NQ�N�^NN�_�`N�aN�bN�cN�dN�eN�fN�gN�hN�iN�jN�kN�lNQ�N�nN�oN�pŗ�qŀN�r�sN�tN�uN�vN�wN�xN�yN�zN�{N�|N�}N�~N�NQ�NŁNNłŃNńNQ�ŅņŏŇQ�Q�ňQ�ʼnQ�ŊŋQ�ŌQ�Q�ōQ�ŎNQ�Q�ŐőNQ�ŒQ�œQ�ŔQ�ŕŖNQ�NŘNNřŚNśNŜNŝNŞNşNŠNšNŢNţNŤNťNŦNQ�NŨNũ�Ū��NūŬNŭŽŮNNůŰNűNŲNųNŴNŵNŶNŷNŸNŹNźNŻNżN�9NžNNſ�N�N��N��N��N��N��N��N��N��N��N��N��N�9N������N������NN����N��N��N��N��N��N��N��N��N��N��N��N��N�9N��NN����N��N��N��N��N��N��N��N��N��N��N��N��N�9N��N�����NN���N�N�N�N�N�N�N�N�N�N�N�N�N�9N�NN��N�N�N�N�	N�
N�N�N�
N�N�N�N�N�9N�N�N�N�� �NN��N�N�N�N�N�N�N�9N�!NN�"�#N�$N�%N�&N�'N�(N�)N�*N�+N�,N�-N�.N�/N�9N�1Ɯ�2N�3N�4�y�5�W�6N�7�G�8NN�9�:N�;N�<N�=N�>N�?N�@N�AN�BN�CN�DN�EN�FN�HN�HNN�I�JN�KN�LN�MN�NN�ON�PN�QN�RN�SN�TN�UN�VN�HN�XN�Y�i�ZNN�[�\N�]N�^N�_N�`N�aN�bN�cN�dN�eN�fN�gN�hN�HN�jNN�k�lN�mN�nN�oN�pN�qN�rN�sN�tN�uN�vN�wN�xN�HN�zN�{N�|ƌ�}NN�~�NƀNƁNƂNƃNƄNƅNƆNƇNƈNƉNƊNƋN�HNƍNNƎƏNƐNƑNƒNƓNƔNƕNƖNƗNƘNƙNƚNƛN�HNƝNƞ�Ɵ��ƠNơNƢƲƣNNƤƥNƦNƧNƨNƩNƪNƫNƬNƭNƮNƯNưNƱN�XNƳNNƴƵNƶNƷNƸNƹNƺNƻNƼNƽNƾNƿN�N�N�XN������N������NN����N��N��N��N��N��N��N��N��N��N��N��N��N�XN��NN����N��N��N��N��N��N��N��N��N��N��N��N��N�XN��N�����NN����N��N��N��N��N��N��N��N��N��N��N�N�N�XN�NN��N�N�N�N�N�N�N�N�N�N�N�N�N�XN�N�	N�
N���NN�
�N�N�N�N�N�N�N�N�N�N�N�N�N�XN�NN��N�N� N�!N�"N�#N�$N�%N�&N�'N�(N�)N�*N�XN�,���-ǘ�.���/���0�u�1�S�2���3�C�4�����5�6���7���8���9���:���;���<���=���>���?���@���A���B���g���D�����E�F���G���H���I���J���K���L���M���N���O���P���Q���R���g���T���U�e�V�����W�X���Y���Z���[���\���]���^���_���`���a���b���c���d���g���f�����g�h���i���j���k���l���m���n���o���p���q���r���s���t���g�����v�w���xLj�y�����z�{���|���}���~�����ǀ��ǁ��ǂ��ǃ��DŽ��Dž��dž��LJ���g��lj����NJNj��nj��Ǎ��ǎ��Ǐ��ǐ��Ǒ��ǒ��Ǔ��ǔ��Ǖ��ǖ��Ǘ���g��Ǚ��ǚ�Ǜ��ǜǾǝ��ǞǮǟ����Ǡǡ��Ǣ��ǣ��Ǥ��ǥ��Ǧ��ǧ��Ǩ��ǩ��Ǫ��ǫ��Ǭ��ǭ���v��ǯ����ǰDZ��Dz��dz��Ǵ��ǵ��Ƕ��Ƿ��Ǹ��ǹ��Ǻ��ǻ��Ǽ��ǽ���v��ǿ�����������������������������������������������������������������v���������������������������������������������������������������v���������������������������������������������������������������������������v�������������������������������������������������v�������������������	�
���������
������������������������������v��������������������������� ���!���"���#���$���%���&���v���(ˈ�)ʾ�*��+^C�,^C�-Ƀ�.��/���0Ȑ�1�D�2�6�3^C�4^C�5^C=^C�7^C�8^C�9^C�:^C�;^C�<^C�=^C�>^C�?^C�@^C�A^C�B^C�C^C=^C^C�E�F^C^C�G^C�H�I^C^C�J^C�K�L^C�M�v�N�_�O�X�P�S�Q==�R^C=�T�V=�U^C=�W=^C=�Y�\�Z�[=^C=^C�]^C=�^^C=�`�m�a�g�b�e�c�d=^C^C=�f=^C=�h�j�i==^C�k�l^C=^C=�n�s�o�r�p�q^C==^C^C=^C�t=�u=^C�w^C�xȄ�y��z�|�{^C=^C�}�~=^C^C=ȀȂȁ^C^C=ȃ=^C=ȅȋȆȈȇ==^CȉȊ=^C^C=ȌȎ=ȍ=^Cȏ=^C=ȑȤȒȖȓ^CȔ^Cȕ^C=^Cȗ^CȘ^Cș^CȚ^Cț^CȜ^Cȝ^CȞ^Cȟ^CȠ^Cȡ^CȢ^Cȣ^C=^C^CȥȦ^C^Cȧ^CȨȩ^C^CȪ^CȫȬ^Cȭ��ȮȿȯȸȰȳȱ==Ȳ^C=ȴȶ=ȵ^C=ȷ=^C=ȹȼȺȻ=^C=^CȽ^C=Ⱦ^C=��������������=^C^C=��=^C=������==^C����^C=^C=������������^C==^C^C=^C��=��=^C��^C��������������^C=^C����=^C^C=������^C^C=��=^C=����������==^C����=^C^C=����=��=^C��=^C=�����^C^C����^C�^C�^C�^C�^C�^C�^C�^C�^C�^C�^C�^C�^C=^C�^C^C��^C�^C�^C�^C�^C�	^C�
^C�^C�^C�
^C�^C�^C�^C=^C�^C��s��'���^C�^C�^C=^C�^C�^C�^C�^C�^C�^C� ^C�!^C�"^C�#^C�$^C�%^C�&^C=^C^C�(�)^C^C�*^C�+�,^C^C�-^C�.�/^C�0�Y�1�B�2�;�3�6�4==�5^C=�7�9=�8^C=�:=^C=�<�?�=�>=^C=^C�@^C=�A^C=�C�P�D�J�E�H�F�G=^C^C=�I=^C=�K�M�L==^C�N�O^C=^C=�Q�V�R�U�S�T^C==^C^C=^C�W=�X=^C�Z^C�[�g�\�b�]�_�^^C=^C�`�a=^C^C=�c�e�d^C^C=�f=^C=�h�n�i�k�j==^C�l�m=^C^C=�o�q=�p=^C�r=^C=�t^C^C�u�v^C�w^C�x^C�y^C�z^C�{^C�|^C�}^C�~^C�^Cɀ^CɁ^Cɂ^C=^CɄ^CɅ^CɆ��ɇɚɈɌɉ^CɊ^Cɋ^C=^Cɍ^CɎ^Cɏ^Cɐ^Cɑ^Cɒ^Cɓ^Cɔ^Cɕ^Cɖ^Cɗ^Cɘ^Cə^C=^C^Cɛɜ^C^Cɝ^Cɞɟ^C^Cɠ^Cɡɢ^Cɣ��ɤɵɥɮɦɩɧ==ɨ^C=ɪɬ=ɫ^C=ɭ=^C=ɯɲɰɱ=^C=^Cɳ^C=ɴ^C=ɶ��ɷɽɸɻɹɺ=^C^C=ɼ=^C=ɾ�ɿ==^C���^C=^C=������������^C==^C^C=^C��=��=^C��^C��������������^C=^C����=^C^C=������^C^C=��=^C=����������==^C����=^C^C=����=��=^C��=^C=��^C^C����^C��^C��^C��^C��^C��^C��^C��^C��^C��^C��^C��^C�^C=^C�^C�^C�ʌ��[��:����^C��^C�^C�^C�^C�^C�^C�^C�^C�^C�^C�	^C�
^C�^CQ�^C^C�
�^C�^C^C�^C�^C��^C�^C�^C�^C�^C�^C�^CQ��Q�^C��+^C��^C�^C� ^C�!^C�"^C�#^C�$^C�%^C�&^C�'^C�(^C�)^C�*^CQ�^C^C�,�-^C�.^C^C�/^C�0^C�1�2^C�3^C�4^C�5^C�6^C�7^C�8^CQ��9Q�^C�;�K�<^C^C�=�>^C�?^C�@^C�A^C�B^C�C^C�D^C�E^C�F^C�G^C�H^C�I^C�J^CQ�^C�L^C^C�M�N^C�O^C�P^C�Q^C�R^C�S^C�T^C�U^C�V^C�W^C�X^C�Y^C�Z^CQ�^C�\^C�]�|�^�m^C�_�`^C�a^C�b^C�c^C�d^C�e^C�f^C�g^C�h^C�i^C�j^C�k^C�l^CQ�^C^C�n�o^C�p^C^C�q^C�r^C�s�t^C�u^C�v^C�w^C�x^C�y^C�z^CQ��{Q�^C�}^C^C�~�^Cʀ^Cʁ^Cʂ^Cʃ^Cʄ^Cʅ^Cʆ^Cʇ^Cʈ^Cʉ^Cʊ^Cʋ^CQ�^Cʍ^Cʎ^Cʏʮʐʟ^Cʑʒ^Cʓ^Cʔ^Cʕ^Cʖ^Cʗ^Cʘ^Cʙ^Cʚ^Cʛ^Cʜ^Cʝ^Cʞ^CQ�^C^Cʠʡ^Cʢ^C^Cʣ^Cʤ^Cʥʦ^Cʧ^Cʨ^Cʩ^Cʪ^Cʫ^Cʬ^CQ�ʭQ�^Cʯ^C^Cʰʱ^Cʲ^Cʳ^Cʴ^Cʵ^Cʶ^Cʷ^Cʸ^Cʹ^Cʺ^Cʻ^Cʼ^Cʽ^CQ�^Cʿ^C�^C�^C���%������^C��������^C����^C��^C��^C��^C��^C��^C��^C��^C��^C��^C��^C��^C��^COc^C^C����^C^C����^C��^C��^C^C����^C^C��^C����^COc����^C��^COc^C��^C^C����^C��^C��^C��^C��^C��^C��^C��^C��^C��^C��^C��^C��^COc^C�^C����^C��^C�^C�^C�^C�^C�^C�^C�^C�^C�^C�^C�^C�^COc^C^C��^C^C�	�
^C�^C�^C^C�
�^C^C�^C��^COc��^C�^COc^C�^C^C��^C�^C�^C�^C�^C�^C�^C�^C� ^C�!^C�"^C�#^C�$^COc^C�&�W�'^C�(�G�)�8^C�*�+^C�,^C�-^C�.^C�/^C�0^C�1^C�2^C�3^C�4^C�5^C�6^C�7^COc^C^C�9�:^C^C�;�<^C�=^C�>^C^C�?�@^C^C�A^C�B�C^COc�D�E^C�F^COc^C�H^C^C�I�J^C�K^C�L^C�M^C�N^C�O^C�P^C�Q^C�R^C�S^C�T^C�U^C�V^COc^C�X^C�Y�x�Z�i^C�[�\^C�]^C�^^C�_^C�`^C�a^C�b^C�c^C�d^C�e^C�f^C�g^C�h^COc^C^C�j�k^C^C�l�m^C�n^C�o^C^C�p�q^C^C�r^C�s�t^COc�u�v^C�w^COc^C�y^C^C�z�{^C�|^C�}^C�~^C�^Cˀ^Cˁ^C˂^C˃^C˄^C˅^Cˆ^Cˇ^COc^Cˉ�RˊQ�ˋQ�ˌQ�ˍ� ˎ��ˏ˿ː˯ˑˠQ�˒˓Q�˔Q�˕Q�˖Q�˗Q�˘Q�˙Q�˚Q�˛Q�˜Q�˝Q�˞Q�˟Q�N+Q�Q�ˡˢQ�ˣQ�ˤQ�˥Q�˦Q�Q�˧˨Q�˩Q�Q�˪˫Q�ˬQ�˭Q�ˮQ�N+Q�˰Q�Q�˱˲Q�˳Q�˴Q�˵Q�˶Q�˷Q�˸Q�˹Q�˺Q�˻Q�˼Q�˽Q�˾Q�N+Q�������Q�����Q���Q���Q���Q���Q���Q���Q���Q���Q���Q���Q���Q���Q�N+Q�Q�����Q���Q���Q���Q���Q�Q�����Q���Q�Q�����Q���Q���Q���Q�N+Q���Q�Q�����Q���Q���Q���Q���Q���Q���Q���Q���Q���Q���Q���Q���Q�N+Q���Q�������Q�����Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q�N+Q�Q���Q��Q��Q��Q��Q�Q���	Q��
Q�Q���Q��
Q��Q��Q�N+Q��Q�Q���Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q�N+Q��!Q��"Q��#�B�$�3Q��%�&Q��'Q��(Q��)Q��*Q��+Q��,Q��-Q��.Q��/Q��0Q��1Q��2Q�N+Q�Q��4�5Q��6Q��7Q��8Q��9Q�Q��:�;Q��<Q�Q��=�>Q��?Q��@Q��AQ�N+Q��CQ�Q��D�EQ��FQ��GQ��HQ��IQ��JQ��KQ��LQ��MQ��NQ��OQ��PQ��QQ�N+Q��S�X�TQ��U�4�V��W̊�XQ��Y�z�ZQ��[�e�\Q��]Q�*V�^�_Q��`Q��aQ��bQ��cQ��dQ�*VQ��fQ��gQ��h�s�iQ��jQ��kQ��lQ��mQ��nQ��oQ��pQ��qQ��rQ�*VQ�Q��t�uQ�Q��vQ��wQ��x�yQ�*VQ��{Q�Q��|�}Q��~Q��Q�̀Q�́Q�̂Q�̃Q�̄Q�̅Q�̆Q�̇Q�̈Q�̉Q�*VQ�̋��̌̭̍Q�̎̘̏Q�̐Q�*V̑̒Q�̓Q�̔Q�̕Q�̖Q�̗Q�*VQ�̙Q�̚Q�̛̦̜Q�̝Q�̞Q�̟Q�̠Q�̡Q�̢Q�̣Q�̤Q�̥Q�*VQ�Q�̧̨Q�Q�̩Q�̪Q�̫̬Q�*VQ�̮Q�̯̹̰Q�̱Q�*V̲̳Q�̴Q�̵Q�̶Q�̷Q�̸Q�*VQ�̺Q�̻Q�̼��̽Q�̾Q�̿Q��Q��Q���Q���Q���Q���Q���Q�*VQ�Q�����Q�Q���Q���Q�����Q�*VQ�������Q�������Q���Q�*V����Q���Q���Q���Q���Q���Q�*VQ���Q���Q�������Q���Q���Q���Q���Q���Q���Q���Q���Q���Q�*VQ�Q�����Q�Q���Q���Q�����Q�*VQ���Q�Q�����Q���Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q�*VQ��Q��Q���$�Q����Q��Q�*V��	Q��
Q��Q��Q��
Q��Q�*VQ��Q��Q����Q��Q��Q��Q��Q��Q��Q��Q��Q��Q�*VQ�Q���Q�Q�� Q��!Q��"�#Q�*VQ��%Q�Q��&�'Q��(Q��)Q��*Q��+Q��,Q��-Q��.Q��/Q��0Q��1Q��2Q��3Q�*VQ��5Q��6Q��7Q��8�H�9Q�Q��:�;Q��<Q��=Q��>Q��?Q��@Q��AQ��BQ��CQ��DQ��EQ��FQ��GQ�*VQ��IQ�Q��J�KQ��LQ��MQ��NQ��OQ��PQ��QQ��RQ��SQ��TQ��UQ��VQ��WQ�*VQ��YQ��ZQ��[��\͎�]Q��^�~�_�nQ��`�aQ��bQ��cQ��dQ��eQ��fQ��gQ��hQ��iQ��jQ��kQ��lQ��mQ�OcQ�Q��o�pQ�Q��q�rQ��sQ�Q��t�uQ��vQ�Q��wQ��x�yQ��z�}Oc�{�|OcQ�OcOcQ��Q�Q�̀́Q�͂Q�̓Q�̈́Q�ͅQ�͆Q�͇Q�͈Q�͉Q�͊Q�͋Q�͌Q�͍Q�OcQ�͏Q�͐Ͱ͑͠Q�͒͓Q�͔Q�͕Q�͖Q�͗Q�͘Q�͙Q�͚Q�͛Q�͜Q�͝Q�͞Q�͟Q�OcQ�Q�͡͢Q�Q�ͣͤQ�ͥQ�Q�ͦͧQ�ͨQ�Q�ͩQ�ͪͫQ�ͬͯOcͭͮOcQ�OcOcQ�ͱQ�Q�ͲͳQ�ʹQ�͵Q�ͶQ�ͷQ�͸Q�͹Q�ͺQ�ͻQ�ͼQ�ͽQ�;Q�ͿQ�OcQ��Q���Q���������Q�����Q���Q���Q���Q���Q���Q���Q���Q���Q���Q���Q���Q���Q�OcQ�Q�����Q�Q�����Q���Q�Q�����Q���Q�Q���Q�����Q�����Oc����OcQ�OcOcQ���Q�Q�����Q���Q���Q���Q���Q���Q���Q���Q���Q���Q���Q���Q���Q�OcQ�����ү��y�����N�N��^��-�N����N��N�N�N�N�N�N�N�N�	N�
N�N�N�
NOcNN��NN��N�NN�N��N�NN�Oc��N�NOc�OcN�NN�� N�!N�"N�#N�$N�%N�&N�'N�(N�)N�*N�+N�,NOcN�.N�/�N�0�?N�1�2N�3N�4N�5N�6N�7N�8N�9N�:N�;N�<N�=N�>NOcNN�@�ANN�B�CN�DNN�EN�F�GN�HNN�IOc�J�KN�LNOc�MOcN�ONN�P�QN�RN�SN�TN�UN�VN�WN�XN�YN�ZN�[N�\N�]NOcN�_ΐ�`N�a΀�b�qN�c�dN�eN�fN�gN�hN�iN�jN�kN�lN�mN�nN�oN�pNOcNN�r�sNN�t�uN�vNN�wN�x�yN�zNN�{Oc�|�}N�~NOc�OcN΁NN΂΃N΄N΅NΆN·NΈNΉNΊN΋NΌN΍NΎNΏNOcNΑNΒαΓ΢NΔΕNΖNΗNΘNΙNΚNΛNΜNΝNΞNΟNΠNΡNOcNNΣΤNNΥΦNΧNNΨNΩΪNΫNNάOcέήNίNOcΰOcNβNNγδNεNζNηNθNιNκNλNμNνNξNοN�NOcN��N��Ϣ���3�����N��������N����N������N��N��N��N��N��N��N��N��N��N��NOcN��N��N��N��NN��OcNN��N����NN����NN��Oc����N��N��N��NOc����N��NOcN��NN����N��N��N��N��N��N�N�N�N�N�N�N�NOcN�N��#��N��N���N�N�N�N�N�N�	N�
N�N�N�
NOcN�N�N�N�NN�OcNN�N��NN��NN�Oc��N�N�N�NOc� �!N�"NOcN�$NN�%�&N�'N�(N�)N�*N�+N�,N�-N�.N�/N�0N�1N�2NOcN�4�k�5N�6�[�7�LN�8�9N�:�F�;N�<N�=N�>N�?N�@N�AN�BN�CN�DN�ENOcN�GN�HN�IN�JNN�KOcNN�MN�N�ONN�P�QNN�ROc�S�TN�UN�VN�WNOc�X�YN�ZNOcN�\NN�]�^N�_N�`N�aN�bN�cN�dN�eN�fN�gN�hN�iN�jNOcN�lN�mϒ�nσN�o�pN�q�}�rN�sN�tN�uN�vN�wN�xN�yN�zN�{N�|NOcN�~N�NπNρNNςOcNNτNυφNNχψNNωOcϊϋNόNύNώNOcϏϐNϑNOcNϓNNϔϕNϖNϗNϘNϙNϚNϛNϜNϝNϞNϟNϠNϡNOcNϣNϤ��ϥNϦ��ϧϼNϨϩNϪ϶ϫNϬNϭNϮNϯNϰNϱNϲNϳNϴNϵNOcNϷNϸNϹNϺNNϻOcNNϽNϾϿNN��NN��Oc����N��N��N��NOc����N��NOcN��NN����N��N��N��N��N��N��N��N��N��N��N��N��NOcN��N�������N����N������N��N��N��N��N��N��N��N��N��N��NOcN��N��N��N��NN��OcNN��N��NN��NN�Oc��N�N�N�NOc��N�NOcN�NN��N�N�N�N�	N�
N�N�N�
N�N�N�N�NOcN����N�N��}��J�N��:��)N��N�N�N�N� N�!N�"N�#N�$N�%N�&N�'N�(NOcNN�*�+NN�,�-N�.NN�/�0N�1N�2N�3N�4N�5�8Oc�6�7OcNOc�9NOcN�;NN�<�=N�>N�?N�@N�AN�BN�CN�DN�EN�FN�GN�HN�INOcN�KN�L�m�M�\N�N�ON�PN�QN�RN�SN�TN�UN�VN�WN�XN�YN�ZN�[NOcNN�]�^NN�_�`N�aNN�b�cN�dN�eN�fN�gN�h�kOc�i�jOcNOc�lNOcN�nNN�o�pN�qN�rN�sN�tN�uN�vN�wN�xN�yN�zN�{N�|NOcN�~б�NЀСЁАNЂЃNЄNЅNІNЇNЈNЉNЊNЋNЌNЍNЎNЏNOcNNБВNNГДNЕNNЖЗNИNЙNКNЛNМПOcНОOcNOcРNOcNТNNУФNХNЦNЧNШNЩNЪNЫNЬNЭNЮNЯNаNOcNвNг��д��NежNзNиNйNкNлNмNнNоNпN�N�N��NOcNN����NN����N��NN����N��N��N��N��N����Oc����OcNOc��NOcN��NN����N��N��N��N��N��N��N��N��N��N��N��N��NOcN��N��N���H�����N������N����N��N��N��N��N��N��N��N�N�N�N�N�N��NN��N�NN��NN�N�N�N�N��N�N�N��N�	NN�
�N�N�
N�N�N�N�N�N�N�N�N�N�N��N�N��8��*N��N�N�N� N�!N�"N�#N�$N�%N�&N�'N�(N�)N��NN�+�,N�-NN�.�/NN�0N�1N�2N�3N�4�5N�6N�7N��N�9NN�:�;N�<N�=N�>N�?N�@N�AN�BN�CN�DN�EN�FN�GN��N�IN�JN�K�i�L�[N�M�NN�ON�PN�QN�RN�SN�TN�UN�VN�WN�XN�YN�ZN��NN�\�]N�^NN�_�`NN�aN�bN�cN�dN�e�fN�gN�hN��N�jNN�k�lN�mN�nN�oN�pN�qN�rN�sN�tN�uN�vN�wN�xN��N�zҮ�{�C�|N�}N�~����рѰсѠтёNуфNхNцNчNшNщNъNыNьNэNюNяNѐN��NNђѓNєNѕNNіїNNјљNNњћNќNѝNўNџN��NѡNNѢѣNѤNѥNѦNѧNѨNѩNѪNѫNѬNѭNѮNѯN��Nѱ��Ѳ�NѳѴNѵNѶNѷNѸNѹNѺNѻNѼNѽNѾNѿN�N��NN����N��N��NN����NN����NN����N��N��N��N��N��N��NN����N��N��N��N��N��N��N��N��N��N��N��N��N��N��N�������N����N��N��N��N��N��N��N��N��N��N��N��N��N��NN����N�N�NN��NN��NN��N�N�N�N�N��N�NN��N�N�N�N�N�	N�
N�N�N�
N�N�N�N��N�N�N��3��$N��N�N�N�N�N�N�N�N�N� N�!N�"N�#N��NN�%�&N�'N�(NN�)�*NN�+�,NN�-�.N�/N�0N�1N�2N��N�4NN�5�6N�7N�8N�9N�:N�;N�<N�=N�>N�?N�@N�AN�BN��N�DN�EN�Fҋ�G�i�HN�I�Y�JNN�K�LN�MN�NN�ON�PN�QN�RN�SN�TN�UN�VN�WN�XNQ�N�ZNN�[�\N�]N�^N�_N�`N�aN�bN�cN�dN�eN�fN�gN�hNQ�N�jN�k�{�lNN�m�nN�oN�pN�qN�rN�sN�tN�uN�vN�wN�xN�yN�zNQ�N�|NN�}�~N�NҀNҁN҂N҃N҄N҅N҆N҇N҈N҉NҊNQ�NҌNҍNҎҞҏNNҐґNҒNғNҔNҕNҖNҗNҘNҙNҚNқNҜNҝNQ�NҟNNҠҡNҢNңNҤNҥNҦNҧNҨNҩNҪNҫNҬNҭNQ�NW�[�Ұ�{ұӲҲ�ҳ_FҴ_Fҵ�Ҷ��ҷ_FҸ��ҹ_F_FҺһ_FҼ_Fҽ_FҾ_Fҿ_F�_F�_F��_F��_F��_F��_F��_F��_F��_F��_F_F����_F��_F��_F��_F��_F��_F��_F��_F��_F��_F��_F��_F��_F��_F��_F������_F_F����_F��_F��_F��_F��_F��_F��_F��_F��_F��_F��_F��_F��_F��_F��_F_F����_F��_F��_F��_F��_F��_F��_F��_F�_F�_F�_F�_F�_F��_F�_F�_F��
�_F_F��_F�_F�_F�_F�_F�_F�_F�_F�_F�	_F�
_F�_F�_F��_F�_F_F��_F�_F�_F�_F�_F�_F�_F�_F�_F�_F�_F�_F�_F��_F�_F�_F� Ӂ�!�Q�"_F�#�A�$�3_F�%�&_F�'_F�(_F�)_F�*_F�+_F�,_F�-_F�._F�/_F�0_F�1_F�2_F-_F_F�4�5_F�6_F_F�7�8_F_F�9_F�:�;_F_F�<�=_F�>_F�?_F�@_F-_F�B_F_F�C�D_F�E_F�F_F�G_F�H_F�I_F�J_F�K_F�L_F�M_F�N_F�O_F�P_F-_F�R_F�S�q�T�c_F�U�V_F�W_F�X_F�Y_F�Z_F�[_F�\_F�]_F�^_F�__F�`_F�a_F�b_F-_F_F�d�e_F�f_F_F�g�h_F_F�i_F�j�k_F_F�l�m_F�n_F�o_F�p_F-_F�r_F_F�s�t_F�u_F�v_F�w_F�x_F�y_F�z_F�{_F�|_F�}_F�~_F�_FӀ_F-_Fӂ_FӃ_FӄӢӅӔ_FӆӇ_Fӈ_FӉ_Fӊ_FӋ_Fӌ_FӍ_Fӎ_Fӏ_FӐ_Fӑ_FӒ_Fӓ_F-_F_FӕӖ_Fӗ_F_FӘә_F_FӚ_FӛӜ_F_FӝӞ_Fӟ_FӠ_Fӡ_F-_Fӣ_F_FӤӥ_FӦ_Fӧ_FӨ_Fө_FӪ_Fӫ_FӬ_Fӭ_FӮ_Fӯ_FӰ_Fӱ_F-_Fӳ_FӴ_Fӵ_FӶ�Iӷ��Ӹ_Fӹ��Ӻ��_FӻӼ_Fӽ_FӾ_Fӿ_F�_F�_F��_F��_F��_F��_F��_F��_F��_F��_F_F����_F��_F��_F_F����_F_F��_F��_F����_F��_F��_F��_F��_F��_F��_F_F����_F��_F��_F��_F��_F��_F��_F��_F��_F��_F��_F��_F��_F��_F���(���	���_F����_F��_F��_F��_F��_F��_F��_F��_F�_F�_F�_F�_F�_F��_F_F��_F�_F�_F_F��_F_F�_F�_F��_F�_F�_F�_F�_F��_F�
�_F��_F�
_F�_F�_F�_F�_F�_F�_F�_F�_F�_F�_F�_F��_F_F��_F�_F�_F_F��_F_F� _F�!_F�"�#_F�$_F�%_F�&_F�'_F��_F�)�9�*_F_F�+�,_F�-_F�._F�/_F�0_F�1_F�2_F�3_F�4_F�5_F�6_F�7_F�8_F��_F�:_F_F�;�<_F�=_F�>_F�?_F�@_F�A_F�B_F�C_F�D_F�E_F�F_F�G_F�H_F��_F�J_F�K_F�L�k�M�\_F�N�O_F�P_F�Q_F�R_F�S_F�T_F�U_F�V_F�W_F�X_F�Y_F�Z_F�[_F��_F_F�]�^_F�__F�`_F_F�a�b_F_F�c_F�d_F�e�f_F�g_F�h_F�i_F�j_F��_F�l_F_F�m�n_F�o_F�p_F�q_F�r_F�s_F�t_F�u_F�v_F�w_F�x_F�y_F�z_F��_F�|ԓ_F�}�~N�N_FԀԁNԂN_FԃԄNNԅԆNԇNԈNԉNԊNԋNԌNԍNԎNԏNԐNԑNԒN_FNԔ�ԕNԖNԗԺԘ_F_FԙԚԪԛNNԜԝNԞNԟNԠNԡNԢNԣNԤNԥNԦNԧNԨNԩN_FNԫNNԬԭNԮNԯN԰NԱNԲNԳNԴNԵNԶNԷNԸNԹN_FNԻ_FԼNԽ��ԾNԿ���N�N_F��_F����N_F����N_F����N_FN������N��N��N��N��N��N��N��N��N��N��N��N_FN��NN����NN��������_F��_F_F��_F����_F��_F_F��N_F��N��N_F��_F��_F����N_FN��NN����N��N��N��N��N��N��N�N�N�N�N�N�N_FN�N�N�_F_F�_F��N�NN��N�N�N�N�N�	N�
N�N�N�
N�N�N�N_FN����֐����b�N�N��+_F�_F��N�NN��N�N� N�!N�"N�#N�$N�%N�&N�'N�(N�)N�*N_FN�,N�-N�.�R�/N�0�9�1N�2N�3N_F�4�5N�6N�7N_F�8_FN�:N�;�G�<N�=N�>N�?N�@N�AN�BN�CN�DN�EN�FN_FN�HN�IN�JN�KNN�LN�M_F�N�ON�PN�QN_FN�SNN�T�UN�VN�WN�XN�YN�ZN�[N�\N�]N�^N�_N�`N�aN_FN�cN�dN�e���f՗�gN�hՇ�i�xN�j�kN�lN�mN�nN�oN�pN�qN�rN�sN�tN�uN�vN�wN��NN�y�zN�{N�|NN�}N�~N�NՀՁNՂNՃNՄNՅNՆN��NՈNNՉՊNՋNՌNՍNՎNՏNՐNՑNՒNՓNՔNՕNՖN��N՘Nՙո՚թN՛՜N՝N՞N՟NՠNաNբNգNդNեNզNէNըN��NNժիNլNխNNծNկNհNձղNճNմNյNնNշN��NչNNպջNռNսNվNտN�N�N��N��N��N��N��N��N��N��N��N��������N����N��N��N��N��N��N��N��N��N��N��N��N��N��NN����N��N��NN��N��N��N����N��N��N��N��N��N��N��NN����N��N��N��N��N��N��N��N�N�N�N�N�N��N�P}�P}�P}��_��/�P}����P}��P}�P}�P}�P}�P}�	P}�
P}�P}�P}�
P}�P}�P}�P}?sP}P}��P}�P}P}��P}P}�P}�P}��P}�P}�P}�P}�P}?sP}� P}P}�!�"P}�#P}�$P}�%P}�&P}�'P}�(P}�)P}�*P}�+P}�,P}�-P}�.P}?sP}�0P}�1�O�2�AP}�3�4P}�5P}�6P}�7P}�8P}�9P}�:P}�;P}�<P}�=P}�>P}�?P}�@P}?sP}P}�B�CP}�DP}P}�E�FP}P}�GP}�HP}�I�JP}�KP}�LP}�MP}�NP}?sP}�PP}P}�Q�RP}�SP}�TP}�UP}�VP}�WP}�XP}�YP}�ZP}�[P}�\P}�]P}�^P}?sP}�`P}�aP}�bր�c�rP}�d�eP}�fP}�gP}�hP}�iP}�jP}�kP}�lP}�mP}�nP}�oP}�pP}�qP}?sP}P}�s�tP}�uP}P}�v�wP}P}�xP}�yP}�z�{P}�|P}�}P}�~P}�P}?sP}ցP}P}ւփP}քP}օP}ֆP}ևP}ֈP}։P}֊P}֋P}֌P}֍P}֎P}֏P}?sP}֑�(֒�u֓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�ֽ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���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��
�Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q���Q��Q���I�Q���9� Q�Q��!�"Q��#Q��$�/�%Q��&Q��'Q��(Q��)Q��*Q��+Q��,Q��-Q��.Q���Q�Q��0�1Q��2Q�Q��3�4Q��5Q��6Q����7���8��Q��:Q�Q��;�<Q��=Q��>Q��?Q��@Q��AQ��BQ��CQ��DQ��EQ��FQ��GQ��HQ���Q��JQ��K�e�LQ�Q��M�NQ��OQ��P�[�QQ��RQ��SQ��TQ��UQ��VQ��WQ��XQ��YQ��ZQ���Q�Q��\�]Q��^Q�Q��_�`Q��aQ��bQ����c���d��Q��fQ�Q��g�hQ��iQ��jQ��kQ��lQ��mQ��nQ��oQ��pQ��qQ��rQ��sQ��tQ���Q��vQ��w��xפQ��y�zQ��{ה�|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�ס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���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�����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��Q��Q��Q��Q���Q��Q�Q���Q��Q��Q��Q��Q�� Q��!Q��"Q��#Q��$Q��%Q��&Q��'Q���Q��)���*Q��+��,�^Q��-�.Q��/�N�0�?Q��1�2Q��3Q��4Q��5Q��6Q��7Q��8Q��9Q��:Q��;Q��<Q��=Q��>Q��Q�Q��@�AQ��BQ��CQ�Q��D�EQ��FQ�Q��GQ��HQ��I�JQ��KQ��LQ��MQ��Q��OQ�Q��P�QQ��RQ��SQ��TQ��UQ��VQ��WQ��XQ��YQ��ZQ��[Q��\Q��]Q��Q��_ؐ�`Q��a؀�b�qQ��c�dQ��eQ��fQ��gQ��hQ��iQ��jQ��kQ��lQ��mQ��nQ��oQ��pQ��Q�Q��r�sQ��tQ��uQ�Q��v�wQ��xQ�Q��yQ��zQ��{�|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��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�����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���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���Q��Q�Q���Q��Q��Q��Q��Q��Q��Q��Q�� Q��!Q��"Q��#Q��$Q���Q��&�d�'�S�(�C�)Q�Q��*�+Q��,Q��-�8�.Q��/Q��0Q��1Q��2Q��3Q��4Q��5Q��6Q��7Q���Q��9Q��:Q��;Q��<Q��=Q��>Q��?Q��@Q����A�BQ���Q��DQ�Q��E�FQ��GQ��HQ��IQ��JQ��KQ��LQ��MQ��NQ��OQ��PQ��QQ��RQ���Q��TQ��UQ�Q��V�WQ��XQ��YQ��ZQ��[Q��\Q��]Q��^Q��_Q��`Q��aQ��bQ��cQ���Q��eQ��fف�gQ�Q��h�iQ��jQ��k�v�lQ��mQ��nQ��oQ��pQ��qQ��rQ��sQ��tQ��uQ���Q��wQ��xQ��yQ��zQ��{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�٢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���Q���Q�������Q���Q���Q�Q�����Q���Q���Q���Q���Q���Q���Q���Q���Q���Q���Q���Q���Q���Q��������N��ڗ��Q����i���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��
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��/�0Q��1Q��2Q��3Q��4Q��5Q��6Q��7Q��8Q��9Q��:Q��;Q��<Q���Q��>Q��?�Y�@�OQ��A�BQ��CQ��DQ��EQ��FQ��GQ��HQ��IQ��JQ��KQ��LQ��MQ��NQ���Q�Q��P�QQ�Q��R�SQ�Q��T�UQ�Q��V�WQ�Q��X��Q��ZQ�Q��[�\Q��]Q��^Q��_Q��`Q��aQ��bQ��cQ��dQ��eQ��fQ��gQ��hQ���Q��jQ��kQ��lQ��mڇ�n�}Q��o�pQ��qQ��rQ��sQ��tQ��uQ��vQ��wQ��xQ��yQ��zQ��{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�ڢ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�������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���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��Q��Q��Q��Q��Q��Q���Q��!Q��"Q��#Q��$�>�%Q�Q��&�'Q��(Q��)Q��*�4�+Q��,Q��-Q��.Q��/Q��0Q��1Q��2Q��3Q���Q��5Q�Q��6�7Q�Q��8�9Q����:�;Q����<�=Q���Q��?Q�Q��@�AQ��BQ��CQ��DQ��EQ��FQ��GQ��HQ��IQ��JQ��KQ��LQ��MQ���Q��O��PQ��Q���R�|Q��S�TQ��U�l�VQ�Q��W�XQ��YQ��ZQ��[Q��\�e�]Q��^Q��_Q��`Q��aQ��bQ��cQ��dQ���Q�Q��fQ��gQ��h�iQ����j���k��Q��mQ�Q��n�oQ��pQ��qQ��rQ��sQ��tQ��uQ��vQ��wQ��xQ��yQ��zQ��{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�ۤ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���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���Q��Q��Q��Q��Q��Q���Q��Q��ܫ��T��)�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��(Q��Q��*Q��+�D�,Q�Q��-�.Q��/Q��0Q��1Q��2�;�3Q��4Q��5Q��6Q��7Q��8Q��9Q��:Q��Q��<Q�Q��=Q��>�?Q��@Q���A��B��C�Q��EQ�Q��F�GQ��HQ��IQ��JQ��KQ��LQ��MQ��NQ��OQ��PQ��QQ��RQ��SQ��Q��U܀�VQ��W�p�XQ�Q��Y�ZQ��[Q��\Q��]Q��^�g�_Q��`Q��aQ��bQ��cQ��dQ��eQ��fQ��Q��hQ�Q��iQ��j�kQ��lQ���m��n��o�Q��qQ�Q��r�sQ��tQ��uQ��vQ��wQ��xQ��yQ��zQ��{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�ܤ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���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��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���0��!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��1Q�Q��2�3Q��4Q��5Q��6Q��7Q��8Q��9Q��:Q��;Q��<Q��=Q��>Q��?Q�?�Q��A�r�BQ��C�b�D�SQ��E�FQ��GQ��HQ��IQ��JQ��KQ��LQ��MQ��NQ��OQ��PQ��QQ��RQ�?�Q�Q��T�UQ��VQ��WQ��XQ��YQ��ZQ�Q��[�\Q�Q��]�^Q��_Q��`Q��aQ�?�Q��cQ�Q��d�eQ��fQ��gQ��hQ��iQ��jQ��kQ��lQ��mQ��nQ��oQ��pQ��qQ�?�Q��sQ��tݓ�u݄Q��v�wQ��xQ��yQ��zQ��{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�ݟQ�ݠQ�ݡQ�ݢQ�?�Q�ݤQ�ݥ�Sݦ�'ݧ�ݨ��ݩ��ݪ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���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��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��Q��Q��Q��Q��Q�� Q��!Q��"Q��#Q��$Q��%Q��&Q��Q�Q��(�)Q��*�C�+Q�Q��,�-Q��.Q��/�:�0Q��1Q��2Q��3Q��4Q��5Q��6Q��7Q��8Q��9Q��Q��;Q��<Q�Q��=Q��>�?Q��@Q��AQ��BQ��Q��DQ�Q��E�FQ��GQ��HQ��IQ��JQ��KQ��LQ��MQ��NQ��OQ��PQ��QQ��RQ��Q��TQ��UQ��VQ��W�p�XQ�Q��Y�ZQ��[Q��\�g�]Q��^Q��_Q��`Q��aQ��bQ��cQ��dQ��eQ��fQ��Q��hQ��iQ�Q��jQ��k�lQ��mQ��nQ��oQ��Q��qQ�Q��r�sQ��tQ��uQ��vQ��wQ��xQ��yQ��zQ��{Q��|Q��}Q��~Q��Q��Q�ށ�mނ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�ޭ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���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����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��Q��"Q�Q��#�$Q�Q��%�&Q��'Q��(Q���)�*Q��+Q��,Q��Q��.Q�Q��/�0Q��1Q��2Q��3Q��4Q��5Q��6Q��7Q��8Q��9Q��:Q��;Q��<Q��Q��>Q��?Q��@Q��A�]�BQ�Q��C�DQ��E�Q�FQ��GQ��HQ��IQ��JQ��KQ��LQ��MQ��NQ��OQ��PQ��Q��RQ�Q��S�TQ�Q��U�VQ��WQ��XQ���Y�ZQ��[Q��\Q��Q��^Q�Q��_�`Q��aQ��bQ��cQ��dQ��eQ��fQ��gQ��hQ��iQ��jQ��kQ��lQ��Q��nQ��oQ��p���qQ��rߠ�sߐ�t߃Q��u�vQ��wQ��xQ��yQ��zQ��{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�ߟ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���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�Q�����Q���Q��Q���Q�Q�����Q���Q���Q���Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��Q��
3+�
���1������f����������	�:�
�����*�
�����������������������������_���������� ��!��"��#��$��%�&��'��(�_��)_���+���,�-��.��/��0��1��2��3��4��5��6��7��8��9�_���;�k�<��=�[�>�M��?�@��A��B��C��D��E��F��G��H��I��J��K��L�_����N�O��P���Q��R��S��T��U��V�W��X��Y�_��Z_���\���]�^��_��`��a��b��c��d��e��f��g��h��i��j�_���l��m��n�}��o�p��q��r��s��t��u��v��w��x��y��z��{��|�_����~����������������������_��_��������������������������������_����������������������������������������_��������������������������_��_�������������������������������������������_��Q�����Q���Q����4�����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��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�Q��� Q��!Q��"Q��#Q�?�Q��%Q�Q��&�'Q��(Q��)Q��*Q��+Q��,Q��-Q��.Q��/Q��0Q��1Q��2Q��3Q�?�Q��5Q��6Q��7�V�8�GQ��9�:Q��;Q��<Q��=Q��>Q��?Q��@Q��AQ��BQ��CQ��DQ��EQ��FQ�?�Q�Q��H�IQ��JQ�Q��K�LQ��MQ�Q��NQ��O�PQ�Q��Q�RQ��SQ��TQ��UQ�?�Q��WQ�Q��X�YQ��ZQ��[Q��\Q��]Q��^Q��_Q��`Q��aQ��bQ��cQ��dQ��eQ�?�Q��g��h���iP��jP��k��l��mP��n�~�oP�P��p�qP��rP��sP��tP��uP��vP��wP��xP��yP��zP��{P��|P��}P��P��P�P���P��P��P��P��P��P��P��P��P��P��P��P��P��P��P����P�P���P��P��P��P��P��P��P��P��P��P��P��P��P��P��P�P���P��P��P��P��P��P��P��P��P��P��P��P��P��P��P��P�����P�P���P��P��P��P��P��P��P��P��P��P��P��P���P��P���P�P�����P���P���P���P���P���P���P���P���P���P���P���P���P��P���P�������A�����P��������P�����P���P���P���P���P���P���P���P���P���P���P���P���P�OcP�P�����P�P�����P���P�P���P���P���P�����P����Oc�Oc�Oc�OcP��P�Oc�Oc�OcP��P�P���P��P��P��P��P��P��P��P��P��P��	P��
P��P�OcP��
P���1��P���P��P��P��P��P��P��P��P��P��P��P��P��P�OcP�P��� P�P��!�"P��#P�P��$P��%P��&P��'�(P��)�-Oc�*Oc�+Oc�,OcP��.P�Oc�/Oc�0OcP��2P�P��3�4P��5P��6P��7P��8P��9P��:P��;P��<P��=P��>P��?P��@P�OcP��B�w�CP��D�g�E�TP��F�GP��HP��IP��JP��KP��LP��MP��NP��OP��PP��QP��RP��SP�OcP�P��U�VP�P��W�XP��YP�P��ZP��[P��\P��]�^P��_�cOc�`Oc�aOc�bOcP��dP�Oc�eOc�fOcP��hP�P��i�jP��kP��lP��mP��nP��oP��pP��qP��rP��sP��tP��uP��vP�OcP��xP��y��z�P��{�|P��}P��~P��P��P��P��P��P��P��P��P��P��P�OcP�P���P�P���P��P�P��P��P��P���P���Oc�Oc�Oc�OcP��P�Oc�Oc�OcP��P�P���P��P��P��P��P��P��P��P��P��P��P��P��P�OcP��P�����P������P���P��P��P��P��P��P��P��P��P��P��P��P��P�OcP�P����P�P�����P���P�P���P���P���P�����P�����Oc��Oc��Oc��OcP���P�Oc��Oc��OcP���P�P�����P���P���P���P���P���P���P���P���P���P���P���P���P�OcP���P�������P�����P���P���P���P���P���P���P���P���P���P���P���P���P�OcP�P���P�P���P��P�P��P��P��P���P���Oc�Oc�Oc�OcP��P�Oc�Oc�OcP��	P�P��
�P��P��
P��P��P��P��P��P��P��P��P��P��P�OcP��P��P��P�����N�P���>� �/P��!�"P��#P��$P��%P��&P��'P��(P��)P��*P��+P��,P��-P��.P�?�P�P��0�1P��2P��3P�P��4�5P��6P�P��7P��8�9P��:P��;P��<P��=P�?�P��?P�P��@�AP��BP��CP��DP��EP��FP��GP��HP��IP��JP��KP��LP��MP�?�P��OP��P�o�Q�`P��R�SP��TP��UP��VP��WP��XP��YP��ZP��[P��\P��]P��^P��_P�?�P�P��a�bP��cP��dP�P��e�fP��gP�P��hP��i�jP��kP��lP��mP��nP�?�P��pP�P��q�rP��sP��tP��uP��vP��wP��xP��yP��zP��{P��|P��}P��~P�?�P��P��P�����P���P��P��P��P��P��P��P��P��P��P��P��P��P�?�P�P���P��P��P�P���P��P�P��P���P��P��P��P��P�?�P��P�P���P��P��P��P��P��P��P��P��P��P��P��P��P�?�P���h��I[���[��[�������[�������[���[��[��[��[��[���[���[���[���[���[���[���[���[��*[�[�����[���[�[�����[�[�����[�[���[�����[���[���[���[��*[���[�[�����[���[���[���[���[���[���[���[���[���[���[���[���[��*[���[�������[�����[���[���[���[���[���[���[���[��[��[��[��[��[��*[�[���[��[�[���[�[���[�[��[���[��[��[��[��*[��	[�[��
�[��[��
[��[��[��[��[��[��[��[��[��[��[��*[��[��[���9��+[���[��[�� [��![��"[��#[��$[��%[��&[��'[��([��)[��*[��*[�[��,�-[��.[�[��/�0[�[��1�2[�[��3[��4�5[��6[��7[��8[��*[��:[�[��;�<[��=[��>[��?[��@[��A[��B[��C[��D[��E[��F[��G[��H[��*[��J���K[��L[��M��N�{�O[��P�k�Q[�[��R�S[��T[��U�`�V[��W[��X[��Y[��Z[��[[��\[��][��^[��_[��:[�[��a�b[�[��c�d[��e[��f[��g[��h[��i[��j[��:[��l[�[��m�n[��o[��p[��q[��r[��s[��t[��u[��v[��w[��x[��y[��z[��:[��|[��}��~[�[���[��[����[��[��[��[��[��[��[��[��[��[��:[�[���[�[���[��[��[��[��[��[��[��:[��[�[���[��[��[��[��[��[��[��[��[��[��[��[��[��:[��[��[�����[�[���[��[����[��[��[��[��[��[��[��[��[��[��:[�[���[�[���[��[��[���[���[���[���[��:[���[�[�����[���[���[���[���[���[���[���[���[���[���[���[���[��:[���[���[����8���	��[��������[�����[���[���[���[���[���[���[���[���[���[���[���[���[��J[�[�����[���[�[���[���[�����[�[����[��[��[��[��J[��[�[���[��[��[��[��[��[��[��[��[��[��[��[��[��J[��
[���(��[��
�[��[��[��[��[��[��[��[��[��[��[��[��[��J[�[���[��[�[��[�� [��!�"[�[��#�$[��%[��&[��'[��J[��)[�[��*�+[��,[��-[��.[��/[��0[��1[��2[��3[��4[��5[��6[��7[��J[��9[��:[��;�X�<�K[��=�>[��?[��@[��A[��B[��C[��D[��E[��F[��G[��H[��I[��J[��J[�[��L�M[��N[�[��O[��P[��Q�R[�[��S�T[��U[��V[��W[��J[��Y[�[��Z�[[��\[��][��^[��_[��`[��a[��b[��c[��d[��e[��f[��g[��J[��i��j���kN�lN�m�N�n�oN�p��qNN�r�sN�tN�u��vN�wN�xN�yN�zN�{N�|N�}N�~N�N�N�N�NN��NN��N���N���N�NN��N�N�N�N�N�N�N�N�N�N�N�N�N�N����N���NN��N�N���N�N�N�N�N�N�N�N�N�N�N�N�NN��NN��N���N���N�NN��N�N�N�N�N�N�N�N��N��N��N��N��N�N��N������NN����N��N������N��N��N��N��N��N��N��N��N��N�N��N��NN����NN����N�����N����N��NN����N��N��N��N��N��N��N��N��N��N��N��N��N�N���-��Q��Q��Q����	�NN��N�N�N�N�N�N�N�N�N�N�N�N�NQ�N�
NN��N�
N�N�N�N�N�N�N�N�N�N�N�NQ�N�Q�Q��Q��Q���NN�� N�!N�"N�#N�$N�%N�&N�'N�(N�)N�*N�+N�,NQ�N�.N�/��0�s�1�R�2�B�3NN�4�5N�6N�7N�8N�9N�:N�;N�<N�=N�>N�?N�@N�ANQ�N�CNN�D�EN�FN�GN�HN�IN�JN�KN�LN�MN�NN�ON�PN�QNQ�N�S�c�TNN�U�VN�WN�XN�YN�ZN�[N�\N�]N�^N�_N�`N�aN�bNQ�N�dNN�e�fN�gN�hN�iN�jN�kN�lN�mN�nN�oN�pN�qN�rNQ�N�tN�u��vNN�w�xN�yN�zN�{N�|N�}N�~N�N�N�N�N�N�NQ�N�NN��N�N�N�N�N�N�N�N�N�N�N�N�NQ�N�N�N���NN��N�N�N�N�N�N�N�N�N�N�N�N�NQ�N�NN��N�N�N�N�N�N�N�N�N�N�N�N�NQ�NQ���������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���Q���Q���Q���Q���Q���Q���Q���Q���Q��Q����Y���8����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��"Q��#Q��$Q��%Q��&Q��'Q��(Q��)Q��*Q��+Q��Q��-Q��.Q��/Q��0Q��1Q��2Q���3��4�5Q��6Q���7�Q��9�I�:Q�Q��;�<Q��=Q��>Q��?Q��@Q��AQ��BQ��CQ��DQ��EQ��FQ��GQ��HQ��Q��JQ�Q��K�LQ��MQ��NQ��OQ��PQ��QQ��RQ��SQ��TQ��UQ��VQ��WQ��XQ��Q��ZQ��[�}�\Q��]�c�^Q��_Q���`�aQ��bQ��Q��dQ��e�q�fQ��gQ��hQ��iQ��jQ��kQ��lQ��mQ��nQ��oQ��pQ��Q��rQ��sQ��tQ��uQ��vQ��wQ���x��y�zQ��{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��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���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��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��#Q��$Q��%Q��&Q��'Q��(Q��)Q��*Q��+Q��,Q��-Q��.Q��Q��0�u�1�S�2Q��3�9�4Q��5Q���6�7Q��8Q��Q��:Q��;�G�<Q��=Q��>Q��?Q��@Q��AQ��BQ��CQ��DQ��EQ��FQ��Q��HQ��IQ��JQ��KQ��LQ��MQ���N��O�PQ��QQ���R�Q��TQ��U�[�VQ��WQ���X�YQ��ZQ��Q��\Q��]�i�^Q��_Q��`Q��aQ��bQ��cQ��dQ��eQ��fQ��gQ��hQ��Q��jQ��kQ��lQ��mQ��nQ��oQ���p��q�rQ��sQ���t�Q��v��wQ�Q��x�yQ��zQ��{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���������U��"��_������@�����@���@��@��@��@��@��@��@��@��@��@��@��@��@�=^@�@��@��@���@�@��=^��@��@��@��@��@�=^�=^�=^@��@�@���@���@���@���@���@���@���@���@���@���@���@���@���@�=^@���@���������@�����@���@���@���@���@���@���@���@���@���@���@���@���@�=^@�@���@���@�����@�@���=^����@���@���@���@���@�=^��=^��=^@���@�@�����@���@���@���@��@��@��@��@��@��@��@��@��@�=^@���/�@�����@���@��@��@��@��@��	@��
@��@��@��
@��@��@��@�=^@�@��@��@���@�@��=^��@��@��@��@��@�=^�=^�=^@�� @�@��!�"@��#@��$@��%@��&@��'@��(@��)@��*@��+@��,@��-@��.@�=^@��0@��1�O�2�A@��3�4@��5@��6@��7@��8@��9@��:@��;@��<@��=@��>@��?@��@@�=^@�@��B@��C@��D�E@�@��F=^�G�H@��I@��J@��K@��L@�=^�M=^�N=^@��P@�@��Q�R@��S@��T@��U@��V@��W@��X@��Y@��Z@��[@��\@��]@��^@�=^@��`��a��b@��c��d�s@��e�f@��g@��h@��i@��j@��k@��l@��m@��n@��o@��p@��q@��r@�=^@�@��t@��u@��v�w@�@��x=^�y�z@��{@��|@��}@��~@�=^�=^�=^@��@�@���@��@��@��@��@��@��@��@��@��@��@��@��@�=^@��@�����@���@��@��@��@��@��@��@��@��@��@��@��@��@�=^@�@��@��@���@�@��=^��@��@��@��@��@�=^�=^�=^@��@�@���@��@��@��@��@��@��@��@��@��@��@��@��@�=^@�������@���������@�����@���@���@���@���@���@���@���@���@���@���@���@���@�=^@�@���@���@�����@�@���=^����@���@���@���@���@�=^��=^��=^@���@�@�����@���@���@���@���@���@���@���@���@���@���@���@���@�=^@���@������@���@��@��@��@��@��@��@��@��@��@��@��@��@�=^@�@��@��@���@�@��	=^�
�@��@��
@��@��@�=^�=^�=^@��@�@���@��@��@��@��@��@��@��@��@��@��@�� @��!@�=^@��#@��$@��%@��&@��'�E�(�7@��)�*@��+@��,@��-@��.@��/@��0@��1@��2@��3@��4@��5@��6@�=^@�@��8@��9@��:�;@�@��<=^�=�>@��?@��@@��A@��B@�=^�C=^�D=^@��F@�@��G�H@��I@��J@��K@��L@��M@��N@��O@��P@��Q@��R@��S@��T@�=^@��V@��W@��X���Y��Z��[�z�\�k@��]�^@��_@��`@��a@��b@��c@��d@��e@��f@��g@��h@��i@��j@��Z@�@��l�m@��n@�@��o�p@��q@��r@��s@�@��t@��u�v@��w@��x@��y@��Z@��{@�@��|�}@��~@��@��@��@��@��@��@��@��@��@��@��@��Z@�����@���@��@��@��@��@��@��@��@��@��@��@��@��@��Z@�@���@��@�@���@��@��@��@�@��@���@��@��@��@��Z@��@�@���@��@��@��@��@��@��@��@��@��@��@��@��@��Z@��@�������@���@��@��@���@���@���@���@���@���@���@���@���@���@��Z@�@�����@���@�@�����@���@���@���@�@���@�����@���@���@���@��Z@���@�@�����@���@���@���@���@���@���@���@���@���@���@���@���@��Z@�@�����@����
���@�����@���@���@���@��@��@��@��@��@��@��@��@��@��Z@�@���@��@�@���@��@��@��@�@��@���	@��
@��@��@��Z@��@�@���@��@��@��@��@��@��@��@��@��@��@��@��@��Z@���D�@�� ��!��"��#�R�$�B�%�4@��&�'@��(@��)@��*@��+@��,@��-@��.@��/@��0@��1@��2@��3@��j@�@��5�6@��7@�@��8@��9�:@��;@�@��<�=@��>@��?@��@@��A@��j@��C@�@��D�E@��F@��G@��H@��I@��J@��K@��L@��M@��N@��O@��P@��Q@��j@��S�q�T�c@��U�V@��W@��X@��Y@��Z@��[@��\@��]@��^@��_@��`@��a@��b@��j@�@��d�e@��f@�@��g@��h�i@��j@�@��k�l@��m@��n@��o@��p@��j@��r@�@��s�t@��u@��v@��w@��x@��y@��z@��{@��|@��}@��~@��@��@��j@��@�����@���@��@��@��@��@��@��@��@��@��@��@��@��@��j@�@���@��@�@��@���@��@�@���@��@��@��@��@��j@��@�@���@��@��@��@��@��@��@��@��@��@��@��@��@��j@�����@�������@���@��@��@��@��@��@��@��@��@��@��@���@���@��j@�@�����@���@�@���@�����@���@�@�����@���@���@���@���@��j@���@�@�����@���@���@���@���@���@���@���@���@���@���@���@���@��j@���@��������@�����@���@���@���@���@���@���@���@���@���@���@���@���@��j@�@���@��@�@��@���@��@�@���@��@��@��@��@��j@��@�@���@��@��@��@��	@��
@��@��@��
@��@��@��@��@��j@��@��@��@���4��&@���@��@��@��@��@��@��@�� @��!@��"@��#@��$@��%@��j@�@��'�(@��)@�@��*@��+�,@��-@�@��.�/@��0@��1@��2@��3@��j@��5@�@��6�7@��8@��9@��:@��;@��<@��=@��>@��?@��@@��A@��B@��C@��j@��E@��F�=�G���H��I�y�J�i�K�Z@��L�M@��N@��O@��P@��Q@��R@��S@��T@��U@��V@��W@��X@��Y@��z@�@��[�\@��]@�@��^@��_@��`�a@��b@��c@�@��d�e@��f@��g@��z�h�z@��j@�@��k�l@��m@��n@��o@��p@��q@��r@��s@��t@��u@��v@��w@��x@��z@��z��{�@��|�}@��~@��@��@��@��@��@��@��@��@��@��@��@��z@�@���@��@�@��@��@���@��@��@�@���@��@��@��z��z@��@�@���@��@��@��@��@��@��@��@��@��@��@��@��@��z@��@������@���@��@��@��@��@��@��@��@��@��@��@��@��@��z@�@���@��@�@��@��@����@���@���@�@�����@���@���@��z���z@���@�@�����@���@���@���@���@���@���@���@���@���@���@���@���@��z@������@��������@�����@���@���@���@���@���@���@���@���@���@���@���@���@��z@�@�����@���@�@���@���@�����@��@��@�@���@��@��@��z��z@��@�@���@��@��@��@��@��@��@��@��@��@��	@��
@��@��z@��
@���-��@���@��@��@��@��@��@��@��@��@��@��@��@��@��z@�@��� @��!@�@��"@��#@��$�%@��&@��'@�@��(�)@��*@��+@��z�,�z@��.@�@��/�0@��1@��2@��3@��4@��5@��6@��7@��8@��9@��:@��;@��<@��z@��>@��?�p�@@��A�`�B�Q@��C�D@��E@��F@��G@��H@��I@��J@��K@��L@��M@��N@��O@��P@��z@�@��R�S@��T@�@��U@��V@��W�X@��Y@��Z@�@��[�\@��]@��^@��z�_�z@��a@�@��b�c@��d@��e@��f@��g@��h@��i@��j@��k@��l@��m@��n@��o@��z@��q@��r��s�@��t�u@��v@��w@��x@��y@��z@��{@��|@��}@��~@��@��@��@��z@�@���@��@�@��@��@���@��@��@�@���@��@��@��z��z@��@�@���@��@��@��@��@��@��@��@��@��@��@��@��@��z@���M��k�@��@���9����������@���@��@��@��@��@��@��@��@��@��@��@��@��@���@�@���@��@��@��@�@��@���@���@�@�����@���@���@���@���@���@�@�����@���@���@���@���@���@���@���@���@���@���@���@���@���@��������@�����@���@���@���@���@���@���@���@���@���@���@���@���@���@�@�����@���@���@���@�@���@�����@���@�@�����@��@��@��@���@��@�@���@��@��@��@��@��@��@��@��@��@��@��@��@���@��	@��
�)��@���
@��@��@��@��@��@��@��@��@��@��@��@��@���@�@���@��@��@��@�@�� @��!�"@��#@�@��$�%@��&@��'@��(@���@��*@�@��+�,@��-@��.@��/@��0@��1@��2@��3@��4@��5@��6@��7@��8@���@��:@��;@��<�[�=�L@��>�?@��@@��A@��B@��C@��D@��E@��F@��G@��H@��I@��J@��K@���@�@��M�N@��O@��P@��Q@�@��R@��S�T@��U@�@��V�W@��X@��Y@��Z@���@��\@�@��]�^@��_@��`@��a@��b@��c@��d@��e@��f@��g@��h@��i@��j@���@��l@��m��n���o@��p��q��r@�@��s�t@��u@��v@��w��x@��y@��z@��{@��|@��}@��~@��@��@�S�@��@��@�@��@���@��@��@�S��S��S�@��@�@���@��@��@��@��@��@��@��@��@��@��@��@��@�S�@����@�@���@��@��@����@��@��@��@��@��@��@��@��@�S�@��@��@�@��@���@��@��@�S��S��S�@��@�@���@��@��@��@��@��@��@��@��@���@���@���@���@�S�@�������@�������@�@�����@���@���@�������@���@���@���@���@���@���@���@���@�S�@���@���@�@���@�����@���@���@�S���S���S�@���@�@�����@���@���@���@���@���@���@���@���@���@���@���@���@�S�@���@����@�@���@��@��@����@��@��@��@��@��@��@��@��@�S�@��@��@�@��@��	�
@��@��@�S��
S��S�@��@�@���@��@��@��@��@��@��@��@��@��@��@��@��@�S�@�� @��!@��"@��#�=�$@�@��%�&@��'@��(@��)�3�*@��+@��,@��-@��.@��/@��0@��1@��2@�S�@��4@��5@�@��6@��7�8@��9@��:@�S��;S��<S�@��>@�@��?�@@��A@��B@��C@��D@��E@��F@��G@��H@��I@��J@��K@��L@�S�@��N@��O@��P@��Q��R@��S��T�s�U�d@��V�W@��X@��Y@��Z@��[@��\@��]@��^@��_@��`@��a@��b@��c@���@�@��e�f@��g@�@��h@��i�j@�@��k�l@��m@��n@��o@��p@��q@����r��@��t@�@��u�v@��w@��x@��y@��z@��{@��|@��}@��~@��@��@��@��@���@�����@���@��@��@��@��@��@��@��@��@��@��@��@��@���@�@���@��@�@��@���@�@���@��@��@��@��@��@������@��@�@���@��@��@��@��@��@��@��@��@��@��@��@��@���@�����@�������@���@��@��@��@��@��@��@��@��@���@���@���@���@���@�@�����@���@�@���@�����@�@�����@���@���@���@���@���@�������@���@�@�����@���@���@���@���@���@���@���@���@���@���@���@���@���@���@�������@�����@���@���@���@���@���@���@���@���@���@���@��@��@���@�@���@��@�@��@���@�@���@��@��@��@��@��@������@��@�@���	@��
@��@��@��
@��@��@��@��@��@��@��@��@���@��������N�N����~��N��>� �/N�!�"N�#N�$N�%N�&N�'N�(N�)N�*N�+N�,N�-N�.N��NN�0�1N�2NN�3�4N�5N�6NN�7�8NN�9�:N�;N�<N�=N��N�?NN�@�AN�BN�CN�DN�EN�FN�GN�HN�IN�JN�KN�LN�MN��N�O�n�P�_N�Q�RN�SN�TN�UN�VN�WN�XN�YN�ZN�[N�\N�]N�^N��NN�`�aN�bNN�c�dN�eN�fNN�g�hNN�i�jN�kN�lN�mN��N�oNN�p�qN�rN�sN�tN�uN�vN�wN�xN�yN�zN�{N�|N�}N��N�N����N��N�N�N�N�N�N�N�N�N�N�N�N�N��NN��N�NN��N�N�NN��NN��N�N�N�N��N�NN��N�N�N�N�N�N�N�N�N�N�N�N�N��N�N���������N��N�N�N�N�N�N�N�N�N�N�N�N�N��NN����N��NN����N��N��NN����NN����N��N��N��N��N����N����N��N��N��N��N��N��N��N��N��N��N��N��N��NN����N��NN����N��N��NN����NN����N��N��N��N��N�����NN����N�N�N�N�N�N�N�N�N�N�N�N�N��N�NN��N�N�N�N�N�	N�
N�N�N�
N�N�N�N��N�N�N�����U�N��E��6���N�N�NW�N�N�N� �+�!N�"N�#N�$N�%N�&N�'N�(N�)N�*NW�NN�,�-N�.NN�/N�0�1W�W��2�3W�W��4�5W�W�NN�7�8NN�9N�:�;N�<NN�=N�>�?N�@NW��A�BNW��C�DNW�N�FNN�G�HN�IN�JN�KN�LN�MN�NN�ON�PN�QN�RN�SN�TNW�N�V��W��X�v�Y�]�ZN�[N�\NW�N�^N�_N�`�k�aN�bN�cN�dN�eN�fN�gN�hN�iN�jNW�NN�l�mN�nNN�oN�p�qW�W��r�sW�W��t�uW�W�NN�w�xNN�yN�z�{N�|NN�}N�~�N�NW���NW���NW�N�����N�N�NW�N�N�N���N�N�N�N�N�N�N�N�N�NW�NN��N�NN�N��W�W���W�W���W�W�NN��NN�N��N�NN�N��N�NW���NW���NW�N����NN��N�N�N�N�N�N�N�N�N�N�N��N��NW�N��NN����N��N��N��N��N��N��N��N��N��N��N��N��NW�N��N��N������������N��N��NW�N��N��N������N��N��N��N��N��N��N��N��N��NW�NN����N��NN��N����W�W�����W�W����W�W�NN��NN�N��N�NN�N��N�NW���NW���NW�N�NN��N�	N�
N�N�N�
N�N�N�N�N�N�N�NW�N[�����x���N�N��~��M�N��=��.N� �!N�"N�#N�$N�%N�&N�'N�(N�)N�*N�+N�,N�-NQ�NN�/�0N�1N�2NN�3�4NN�5�6N�7NN�8�9N�:N�;N�<NQ�N�>NN�?�@N�AN�BN�CN�DN�EN�FN�GN�HN�IN�JN�KN�LNQ�N�NN�O�n�P�_N�Q�RN�SN�TN�UN�VN�WN�XN�YN�ZN�[N�\N�]N�^NQ�NN�`�aN�bN�cNN�d�eNN�f�gN�hNN�i�jN�kN�lN�mNQ�N�oNN�p�qN�rN�sN�tN�uN�vN�wN�xN�yN�zN�{N�|N�}NQ�N�N�N����N��N�N�N�N�N�N�N�N�N�N�N�N�NQ�NN��N�N�NN��NN��N�NN��N�N�N�NQ�N�NN��N�N�N�N�N�N�N�N�N�N�N�N�NQ�N�N�N��F����N������N��N�N�N�N�N�N�N�N�N��N��N��N��N�ZNN����N��N��NN����N��N��NN��N����N��N��N��N�ZN��NN����N��N��N��N��N��N��N��N��N��N��N��N��N�ZN���%������N����N��N��N��N��N��N��N��N��N��N��N�N�N�ZNN��N�N�NN��N�N�NN�N��N�N�N�N�ZN��N��	N�
N�N�N�
N�N�N�N�N�N�N�N�N�ZNN��N�N�NN��N�N�NN�N� �!N�"N�#N�$N�ZN�&�6�'NN�(�)N�*N�+N�,N�-N�.N�/N�0N�1N�2N�3N�4N�5N�ZN�7NN�8�9N�:N�;N�<N�=N�>N�?N�@N�AN�BN�CN�DN�EN�ZN�GN�HN�I�h�J�YN�K�LN�MN�NN�ON�PN�QN�RN�SN�TN�UN�VN�WN�XN�ZNN�Z�[N�\N�]NN�^�_N�`N�aNN�bN�c�dN�eN�fN�gN�ZN�iNN�j�kN�lN�mN�nN�oN�pN�qN�rN�sN�tN�uN�vN�wN�ZN�y�9�zN�{N�|�	�}��~N����N��N�N�N�N�N�N�N�N�N�N�N�N�NQENN��NN��N�NN��N�NN��N�NQE�QEN�NN��N�N�N�N�N�N�N�N�N�N�N�N�NQEN��������N��N�N�N�N�N�N�N�N�N�N�N�N�NQENN��NN���N��NN����N��NN����N��NQE��QEN����N����N��N��N��N��N��N��N��N��N��N��N��N��NQENN����NN����N��NN����N��NN����N��NQE��QEN�����NN����N��N��N��N��N��N��N��N��N�N�N�N�NQEN�NN��N�N�N�N�N�N�N�N�N�N�N�N�NQEN�
N�N��)�
�N��N�N�N�N�N�N�N�N�N�N�N�N�NQENN��NN�� N�!NN�"�#N�$NN�%�&N�'NQE�(QEN�*NN�+�,N�-N�.N�/N�0N�1N�2N�3N�4N�5N�6N�7N�8NQEN�:N�;N�<���=��>�n�?�^�@�ON�A�BN�CN�DN�EN�FN�GN�HN�IN�JN�KN�LN�MN�NNLNN�P�QN�RNN�SN�TN�UN�V�WN�XNN�Y�ZN�[N�\N�]LNL�_NN�`�aN�bN�cN�dN�eN�fN�gN�hN�iN�jN�kN�lN�mNLN�o��p�N�q�rN�sN�tN�uN�vN�wN�xN�yN�zN�{N�|N�}N�~NLNN��N�NN�N�N�N��N�NN��N�N�N�LNL�NN��N�N�N�N�N�N�N�N�N�N�N�N�NLN�N����N��N�N�N�N�N�N�N�N�N�N�N�N�NLNN��N�NN�N�N�N��N�NN��N�N�N�LNL�NN���N��N��N��N��N��N��N��N��N��N��N��N��NLN��N�����������N����N��N��N��N��N��N��N��N��N��N��N��N��NLNN����N��NN��N��N��N����N��NN����N��N��N��LNL���N����N�N�N�N�N�N�N�N�N�N�N�N�NLNN��N�NN�N�N�N��	N�
NN��N�
N�N�LNL��!�NN��N�N�N�N�N�N�N�N�N�N�N�N� NLN�"NN�#�$N�%N�&N�'N�(N�)N�*N�+N�,N�-N�.N�/N�0NLN�2���3���4���5���6���7N�8N�9���:�j�;N�<�Z�=�LN�>�?N�@N�AN�BN�CN�DN�EN�FN�GN�HN�IN�JN�KNQ�NN�M�NN�ONN�P�QNN�R�SN�TNN�U�VN�WN�XN�YNQ�N�[NN�\�]N�^N�_N�`N�aN�bN�cN�dN�eN�fN�gN�hN�iNQ�N�k���l���m�|N�n�oN�pN�qN�rN�sN�tN�uN�vN�wN�xN�yN�zN�{NQ�NN�}�~N�NN����NN����N��NN����N��N��N��NQ�N����N����N��N��N��N��N��N��N��N��N��N��N��N��NQ�NN����N��NN����NN����N��NN����N��N��N��NQ�N������NN����N��N��N��N��N��N��N��N��N��N��N��N��NQ�N��NN����N��N��N��N��N��N��N��N��N��N��N��N��NQ�N��N��N��������N����N��N��N��N��N��N��N��N��N��N��N��N��NQ�NN����N��NN����NN����N��NN����N��N��N��NQ�N��NN����N��N��N��N��N��N��N��N��N��N��N��N��NQ�N��N��N���/N����N����N��N�N�N�N�N�N�	N�
N�N�N�
N�N�N��NN��N�N�N�N�NN�N��NN��N�N�N�N��N� NN�!�"N�#N�$N�%N�&N�'N�(N�)N�*N�+N�,N�-N�.N��N�0�a�1N�2�Q�3�BN�4�5N�6N�7N�8N�9N�:N�;N�<N�=N�>N�?N�@N�AN��NN�C�DN�EN�FN�GN�HNN�IN�J�KNN�L�MN�NN�ON�PN��N�RNN�S�TN�UN�VN�WN�XN�YN�ZN�[N�\N�]N�^N�_N�`N��N�bN�c���d�sN�e�fN�gN�hN�iN�jN�kN�lN�mN�nN�oN�pN�qN�rN��NN�t�uN�vN�wN�xN�yNN�zN�{�|NN�}�~N�N��N��N��N��NN����N��N��N��N��N��N��N��N��N��N��N��N��N��NQ�����N�������������N��������������N��N��NU\����N��N��NU\N��N��N������N��N��N��N��N��N��N��N��N��NU\NN����NN����NNU\N��N����NN����N��N��NU\��U\����N��N��NU\��U\��U\N��NN����N��N��N��N��N��N��N��N��N��N��N��N��NU\N��N�������������N��N��NU\����N��N��NU\N��N��N������N��N��N��N��N��N��N��N��N��NU\NN����NN����NNU\N��N����NN����N��N��NU\��U\����N��N�NU\�U\�U\N�NN��N�N�N�	N�
N�N�N�
N�N�N�N�N�NU\N��R�N��B��3�� �N�N�NU\��N�N�NU\N�!N�"N�#�.�$N�%N�&N�'N�(N�)N�*N�+N�,N�-NU\NN�/�0NN�1�2NNU\N�4N�5�6NN�7�8N�9N�:NU\�;U\�<�=N�>N�?NU\�@U\�AU\N�CNN�D�EN�FN�GN�HN�IN�JN�KN�LN�MN�NN�ON�PN�QNU\N�SN�T���U�q�V�^�WN�XN�YNU\�Z�[N�\N�]NU\N�_N�`N�a�l�bN�cN�dN�eN�fN�gN�hN�iN�jN�kNU\NN�m�nNN�o�pNNU\N�rN�s�tNN�u�vN�wN�xNU\�yU\�z�{N�|N�}NU\�~U\�U\N��NN����N��N��N��N��N��N��N��N��N��N��N��N��NU\N���������N��������������N��N��NU\����N��N��NU\N��N��N������N��N��N��N��N��N��N��N��N��NU\NN����NN����NNU\N��N����NN����N��N��NU\��U\����N��N��NU\��U\��U\N��NN����N��N��N��N��N��N��N��N��N��N��N��N��NU\N��N��������������N��N��NU\����N��N��NU\N��N��N������N��N��N��N��N��N��N��N��N��NU\NN����NN����NNU\N��N����NN����N��N��NU\��U\����N��N��NU\��U\��U\N��NN��N�N�N�N�N�N�N�N�	N�
N�N�N�
NU\N�N��i��=��.���N�N�NU\��N�N�NU\N�N�N��)�N� N�!N�"N�#N�$N�%N�&N�'N�(NU\NN�*�+NN�,�-NNU\N�/N�0�1NN�2�3N�4N�5NU\�6U\�7�8N�9N�:NU\�;U\�<U\N�>�Z�?�G�@N�AN�BNU\�C�DN�EN�FNU\N�HN�IN�J�U�KN�LN�MN�NN�ON�PN�QN�RN�SN�TNU\NN�V�WNN�X�YNNU\N�[N�\�]NN�^�_N�`N�aNU\�bU\�c�dN�eN�fNU\�gU\�hU\N�j�z�kNN�l�mN�nN�oN�pN�qN�rN�sN�tN�uN�vN�wN�xN�yNU\N�{NN�|�}N�~N�N��N��N��N��N��N��N��N��N��N��NU\N���$��Vp��Vp��Vp����������Vp��������Vp����Vp��Vp��Vp��Vp��Vp��Vp��Vp��Vp��Vp��Vp��Vp��Vp��VpyOVpVp����VpVp����VpVp��Vp��Vp��Vp��yO����Vp��Vp��Vp��VpyO��yOVp��VpVp����Vp��Vp��Vp��Vp��Vp��Vp��Vp��Vp��Vp��Vp��Vp��Vp��VpyOVp��Vp��������Vp����Vp��Vp��Vp��Vp��Vp��Vp��Vp��Vp��Vp��Vp��Vp��Vp��VpyOVpVp����VpVp����VpVp��Vp��Vp��Vp��yO����Vp��Vp��Vp��VpyO��yOVp��VpVp����Vp��Vp��Vp��Vp��Vp��Vp��Vp��Vp��Vp��Vp��Vp��Vp��VpyOVp��Vp��Vp������Vp����Vp��Vp��Vp��Vp��Vp��Vp��Vp��Vp�Vp�Vp�Vp�Vp�VpyOVpVp��VpVp��	VpVp�
Vp�Vp�Vp�
yO��Vp�Vp�Vp�VpyO�yOVp�VpVp��Vp�Vp�Vp�Vp�Vp�Vp�Vp�Vp�Vp� Vp�!Vp�"Vp�#VpyOVp�%���&N�'N�(���)�U�*N�+�E�,NN�-�.N�/N�0N�1�;�2N�3N�4N�5N�6N�7N�8N�9N�:Nm+NN�<�=N�>N�?Nm+�@m+�Am+�B�CN�DNm+N�FNN�G�HN�IN�JN�KN�LN�MN�NN�ON�PN�QN�RN�SN�TNm+N�VN�W�q�XNN�Y�ZN�[N�\N�]�g�^N�_N�`N�aN�bN�cN�dN�eN�fNm+NN�h�iN�jN�kNm+�lm+�mm+�n�oN�pNm+N�rNN�s�tN�uN�vN�wN�xN�yN�zN�{N�|N�}N�~N�N��Nm+N��N��N������NN����N��N��N������N��N��N��N��N��N��N��N��Nm+NN����N��N��Nm+��m+��m+����N��Nm+N��NN����N��N��N��N��N��N��N��N��N��N��N��N��Nm+NOTN��������N��0O�����O��������y���������������O�����O���O���O���O���O���O���O���O���O���O���O���O���O���O�O�����O���O���O�O���O���O�����O�O���O�����O���O���O���O���O���O�O�����O���O���O���O���O���O���O���O���O���O���O���O���O���O��������O�����O���O���O���O���O���O���O���O���O���O���O���O���O���O�O�����O���O���O�O���O���O���O�O��O���O��O��O��O���O��	O�O��
�O��O��
O��O��O��O��O��O��O��O��O��O��O���O���I��9��*O���O��O��O�� O��!O��"O��#O��$O��%O��&O��'O��(O��)O���O�O��+�,O��-O��.O�O��/O��0O��1�2O�O��3O��4�5O��6O��7O��8O���O��:O�O��;�<O��=O��>O��?O��@O��AO��BO��CO��DO��EO��FO��GO��HO���O��J�i�K�ZO��L�MO��NO��OO��PO��QO��RO��SO��TO��UO��VO��WO��XO��YO���O�O��[�\O��]O��^O�O��_O��`O��a�bO�O��cO��d�eO��fO��gO��hO���O��jO�O��k�lO��mO��nO��oO��pO��qO��rO��sO��tO��uO��vO��wO��xO���O�O��z�{O��|���}��O��~�O���O���O���O���O���O���O���O���O���O���O���O���O���O�O�����O���O���O�O���O���O�����O�O���O�����O���O���O���O���O���O�O�����O���O���O���O���O���O���O���O���O���O���O���O���O���O���O���O���O���������O�����O���O���O���O���O���O���O���O���O���O���O���O���O���O�O�����O���O���O�O���O���O�����O�O���O�����O���O���O���O���O���O�O�����O���O���O���O���O���O���O���O���O���O���O���O���O���O����xS����S��S���F�����S�������S����S��S��S��S��S��S��S��S��S��S��S��S��S��SS����S��SS��S��S��S��S����S�S�S�S����S��S�SS��S�	S�
S�S�S�
S�S�S�S�S�S�S�S��S�S��6��'S��S�S�S�S�S�S� S�!S�"S�#S�$S�%S�&S��SS�(�)S�*SS�+S�,S�-S�.S�/�0S�1S�2S�3S���4�5S��S�7SS�8�9S�:S�;S�<S�=S�>S�?S�@S�AS�BS�CS�DS�ES��S�GS�HS�I�h�J�YS�K�LS�MS�NS�OS�PS�QS�RS�SS�TS�US�VS�WS�XS��SS�Z�[S�\SS�]S�^S�_S�`S�a�bS�cS�dS�eS���f�gS��S�iSS�j�kS�lS�mS�nS�oS�pS�qS�rS�sS�tS�uS�vS�wS��S�y��zS�{S�|���}���~S�������S����S��S��S��S��S��S��S��S��S��S��S��S��S��SS����S��S��SS����S��SS����S��S��S��S��S��S��S��SS����S��S��S��S��S��S��S��S��S��S��S��S��S��S��S��������S����S��S��S��S��S��S��S��S��S��S��S��S��S��SS����S��S��SS����S��SS����S��S��S��S��S��S��S��SS����S��S��S��S��S��S��S��S��S��S��S��S��S��S��S��S�������S����S��S��S��S��S��S��S��S��S��S��S��S��S��SS����S��S��SS����S��SS����S��S��S��S��S�S��S�SS��S�S�S�S�S�	S�
S�S�S�
S�S�S�S��S�S�S�����v��F��6��'S��S�S�S�S�S�S� S�!S�"S�#S�$S�%S�&S��SS�(�)S�*S�+S�,SS�-S�.�/SS�0�1S�2S�3S�4S�5S��S�7SS�8�9S�:S�;S�<S�=S�>S�?S�@S�AS�BS�CS�DS�ES��S�G�f�H�WS�I�JS�KS�LS�MS�NS�OS�PS�QS�RS�SS�TS�US�VS��SS�X�YS�ZS�[S�\SS�]S�^�_SS�`�aS�bS�cS�dS�eS��S�gSS�h�iS�jS�kS�lS�mS�nS�oS�pS�qS�rS�sS�tS�uS��S�wS�x���y��S�z�{S�|S�}S�~S�S��S��S��S��S��S��S��S��S��SS����S��S��S��SS��S����SS����S��S��S��S��S��S��SS����S��S��S��S��S��S��S��S��S��S��S��S��S��SS����S��������S����S��S��S��S��S��S��S��S��S��S��S��S��S��SS����S��S��S��SS��S����SS����S��S��S��S��S��S��SS����S��S��S��S��S��S��S��S��S��S��S��S��S��S��
���f�������r��Y��Y���A�����Y�������Y����Y��Y��Y��Y��Y��Y��Y��Y��Y��Y��Y��Y��Y~�YY����Y��YY����YY��Y����Y��Y��Y��Y��Y�Y~�Y�YY��Y�Y�Y�Y�Y�	Y�
Y�Y�Y�
Y�Y�Y�Y~�Y�Y��1��#Y��Y�Y�Y�Y�Y�Y�Y�Y�Y�Y� Y�!Y�"Y~�YY�$�%Y�&YY�'�(YY�)Y�*�+Y�,Y�-Y�.Y�/Y�0Y~�Y�2YY�3�4Y�5Y�6Y�7Y�8Y�9Y�:Y�;Y�<Y�=Y�>Y�?Y�@Y~�Y�BY�CY�D�b�E�TY�F�GY�HY�IY�JY�KY�LY�MY�NY�OY�PY�QY�RY�SY~�YY�U�VY�WYY�X�YYY�ZY�[�\Y�]Y�^Y�_Y�`Y�aY~�Y�cYY�d�eY�fY�gY�hY�iY�jY�kY�lY�mY�nY�oY�pY�qY~�Y�sY�t�:�u��v���w���x���y��Y�z�{Y�|Y�}Y�~Y�Y��Y��Y��Y��Y��Y��Y��Y��Y�	YY����Y��Y��Y��Y��YY��Y����Y��Y��Y��Y��Y��Y�	Y��YY����Y��Y��Y��Y��Y��Y��Y��Y��Y��Y��Y��Y��Y�	Y��������Y����Y��Y��Y��Y��Y��Y��Y��Y��Y��Y��Y��Y��Y�	YY����Y��Y��Y��Y��YY��Y����Y��Y��Y��Y��Y��Y�	Y��YY����Y��Y��Y��Y��Y��Y��Y��Y��Y��Y��Y��Y��Y�	Y��Y��������Y����Y��Y��Y��Y��Y��Y��Y��Y��Y��Y��Y��Y��Y�	YY����Y��Y��Y��Y��YY��Y����Y��Y��Y��Y��Y��Y�	Y��YY����Y��Y��Y��Y��Y�Y�Y�Y�Y�Y�Y�Y�Y�	YY�	�
Y��*��Y�
�Y�Y�Y�Y�Y�Y�Y�Y�Y�Y�Y�Y�Y�	YY��Y�Y�Y� Y�!YY�"Y�#�$Y�%Y�&Y�'Y�(Y�)Y�	Y�+YY�,�-Y�.Y�/Y�0Y�1Y�2Y�3Y�4Y�5Y�6Y�7Y�8Y�9Y�	Y�;Y�<�m�=Y�>�]�?�NY�@�AY�BY�CY�DY�EY�FY�GY�HY�IY�JY�KY�LY�MY�	YY�O�PY�QY�RY�SY�TYY�UY�V�WY�XY�YY�ZY�[Y�\Y�	Y�^YY�_�`Y�aY�bY�cY�dY�eY�fY�gY�hY�iY�jY�kY�lY�	Y�nY�o���p�Y�q�rY�sY�tY�uY�vY�wY�xY�yY�zY�{Y�|Y�}Y�~Y�	YY����Y��Y��Y��Y��YY��Y����Y��Y��Y��Y��Y��Y�	Y��YY����Y��Y��Y��Y��Y��Y��Y��Y��Y��Y��Y��Y��Y�	Y��Y��Y���4������Y��Y��������Y����Y��Y��Y��Y��Y��Y��Y��Y��Y��Y��Y��Y��Y�YY����Y��YY����YY����Y��Y��YY����Y��Y��Y�Y��YY����Y��Y��Y��Y��Y��Y��Y��Y��Y��Y��Y��Y��Y�Y�����Y��������Y����Y��Y��Y��Y��Y��Y��Y��Y��Y��Y��Y��Y��Y�YY����Y��YY����YY����Y��Y��YY����Y��Y��Y�Y��YY����Y��Y��Y��Y��Y��Y��Y��Y��Y�Y�Y�Y�Y�Y�Y��$��Y��	Y�
Y�Y�Y�
Y�Y�Y�Y�Y�Y�Y�Y�Y�YY��Y�YY��YY��Y�Y�YY� �!Y�"Y�#Y�Y�%YY�&�'Y�(Y�)Y�*Y�+Y�,Y�-Y�.Y�/Y�0Y�1Y�2Y�3Y�Y�5Y�6Y�7Y�8�V�9�HY�:�;Y�<Y�=Y�>Y�?Y�@Y�AY�BY�CY�DY�EY�FY�GY�YY�I�JY�KYY�L�MYY�N�OY�PY�QYY�R�SY�TY�UY�Y�WYY�X�YY�ZY�[Y�\Y�]Y�^Y�_Y�`Y�aY�bY�cY�dY�eY�Y�g
��h
�iN�jN�k���l���mN�n���o�~N�p�qN�rN�sN�tN�uN�vN�wN�xN�yN�zN�{N�|N�}N�(NN���N��N��N��NN����NN����NN����N��N��N��N�(N��NN����N��N��N��N��N��N��N��N��N��N��N��N��N�(N��N��������N����N��N��N��N��N��N��N��N��N��N��N��N��N�(NN����N��N��N��NN����NN����NN����N��N��N��N�(N��NN����N��N��N��N��N��N��N��N��N��N��N��N��N�(N��N��N��������N����N��N��N��N��N��N��N��N��N��N��N��N��N�(NN����N��N��N��NN����NN����NN����N��N��N��N�(N��NN����N��N��N��N��N��N��N��N��N��N��N��N��N�(N
N

g

B

0Q�


 
N


	NQ�


N
NQ�


NQ�N


N
N
N
N
N
N
N
N
N
N
N
NQ�NN

NNQ�
!NN
"
#N
$N
%N
&N
'N
(N
)N
*N
+N
,N
-N
.N
/NQ�NN
1Q�
2
3NN
4
5N
6N
7N
8N
9N
:N
;N
<N
=N
>N
?N
@N
ANQ�N
C
U
DNQ�
E
FNN
G
HN
IN
JN
KN
LN
MN
NN
ON
PN
QN
RN
SN
TNQ�N
VNQ�
W
XNN
Y
ZN
[N
\N
]N
^N
_N
`N
aN
bN
cN
dN
eN
fNQ�N
hNQ�
iQ�
j
k
{
lNN
m
nN
oN
pN
qN
rN
sN
tN
uN
vN
wN
xN
yN
zNQ�N
|NN
}
~N
N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�NQ�N
�
=
�N
�N
�
�
�
�
�N
�
�
�NN
�
�N
�N
�N
�
�
�N
�N
�N
�N
�N
�N
�N
�N
�N�7N
�NN
�N
�
�N
�N
�N
�N
�N�7N
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N�7N
�N
�
�
�NN
�
�N
�N
�N
�
�
�N
�N
�N
�N
�N
�N
�N
�N
�N�7N
�NN
�N
�
�N
�N
�N
�N
�N�7N
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N�7N
�

�N
�

�NN
�
�N
�N
�N
�
�
�N
�N
�N
�N
�N
�N
�N
�N
�N�7N
�NN
�N
�
�N
�N
�N
N
N�7N
NN

N
N
N
N
	N

N
N
N

N
N
N
N
N�7N
N

-
NN

N
N
N

$
N
N
N
N
N
 N
!N
"N
#N�7N
%NN
&N
'
(N
)N
*N
+N
,N�7N
.NN
/
0N
1N
2N
3N
4N
5N
6N
7N
8N
9N
:N
;N
<N�7N
>N
?N
@
�
A
r
BN
C
b
D
SN
E
FN
GN
HN
IN
JN
KN
LN
MN
NN
ON
PN
QN
RN�%NN
T
UN
VNN
W
XN
YNN
Z
[N
\N
]N
^N
_N
`N
aN�%N
cNN
d
eN
fN
gN
hN
iN
jN
kN
lN
mN
nN
oN
pN
qN�%N
sN
t
�
u
�N
v
wN
xN
yN
zN
{N
|N
}N
~N
N
�N
�N
�N
�N�%NN
�
�N
�NN
�
�N
�NN
�
�N
�N
�N
�N
�N
�N
�N�%N
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N�%N
�
�
�N
�
�
�
�N
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N�%NN
�
�N
�NN
�
�N
�NN
�
�N
�N
�N
�N
�N
�N
�N�%N
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N�%N
�N
�
�
�
�N
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N�%NN
�
�N
�NN
�
�N
�NN
�
�N
�N
�N
�N
�N
�N
�N�%N
�NN
�
�N
�N
�N
�N
�N
�N
�N
N
N
N
N
N
N�%N

7

�
	
�

[�
[�

s


@
[�

0

[�

[�
[�
[�
[�
[�
[�
[�
[�
[�
[�
[�
[�
[�[�[�
 
![�[�
"
#[�
$[�[�
%
&[�[�
'[�
(
)[�
*[�
+
.
,
-[�
/[�
1[�[�
2
3[�
4[�
5[�
6[�
7[�
8[�
9[�
:[�
;[�
<[�
=[�
>[�
?[�[�
A[�
B
c
C
R[�
D
E[�
F[�
G[�
H[�
I[�
J[�
K[�
L[�
M[�
N[�
O[�
P[�
Q[�[�[�
S
T[�[�
U
V[�
W[�[�
X
Y[�[�
Z[�
[
\[�
][�
^
a
_
`[�
b[�
d[�[�
e
f[�
g[�
h[�
i[�
j[�
k[�
l[�
m[�
n[�
o[�
p[�
q[�
r[�[�
t
�
u[�
v
�
w
�[�
x
y[�
z[�
{[�
|[�
}[�
~[�
[�
�[�
�[�
�[�
�[�
�[�
�[�[�[�
�
�[�[�
�
�[�
�[�[�
�
�[�[�
�[�
�
�[�
�[�
�
�
�
�[�
�[�
�[�[�
�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�[�
�[�
�
�
�
�[�
�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�[�[�
�
�[�[�
�
�[�
�[�[�
�
�[�[�
�[�
�
�[�
�[�
�
�
�
�[�
�[�
�[�[�
�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�[�
�[�
�[�
�
@
�

�[�
�
�
�
�[�
�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[���[�[�
�
�[�[�
�
�[�
�[�
�[�
�[�
�[�[�
�[�
�
�[�
�[���
���
���[�
[�[�

[�
[�
[�
[�
[�
[�
[�
	[�

[�
[�
[�

[�
[���[�
[�

0

![�

[�
[�
[�
[�
[�
[�
[�
[�
[�
[�
[�
[�
 [���[�[�
"
#[�[�
$
%[�
&[�
'[�
([�
)[�[�
*[�
+
,[�
-[���
.��
/��[�
1[�[�
2
3[�
4[�
5[�
6[�
7[�
8[�
9[�
:[�
;[�
<[�
=[�
>[�
?[���[�
A
r
B[�
C
b
D
S[�
E
F[�
G[�
H[�
I[�
J[�
K[�
L[�
M[�
N[�
O[�
P[�
Q[�
R[���[�[�
T
U[�[�
V
W[�
X[�
Y[�
Z[�
[[�[�
\[�
]
^[�
_[���
`��
a��[�
c[�[�
d
e[�
f[�
g[�
h[�
i[�
j[�
k[�
l[�
m[�
n[�
o[�
p[�
q[���[�
s[�
t
�
u
�[�
v
w[�
x[�
y[�
z[�
{[�
|[�
}[�
~[�
[�
�[�
�[�
�[�
�[���[�[�
�
�[�[�
�
�[�
�[�
�[�
�[�
�[�[�
�[�
�
�[�
�[���
���
���[�
�[�[�
�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[���[�
�
<
�[�
�[�
�
�
�[�
�[�
�
�
�
�[�
�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�=^[�[�
�
�[�[�
�
�[�
�[�
�[�
�[�
�[�[�
�
�[�
�[�
�[�=^
�=^
�=^[�
�[�[�
�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�=^[�
�

�[�
�
�
�
�[�
�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�=^[�[�
�
�[�[�
�
�[�
�[�
�[�
�[�
�[�[�
�
�[�
�[�
�[�=^
�=^
�=^[�
�[�[�
�
�[�
�[�
[�
[�
[�
[�
[�
[�
[�
[�
[�
	[�

[�=^[�
[�


,

[�

[�
[�
[�
[�
[�
[�
[�
[�
[�
[�
[�
[�
[�=^[�[�

[�[�
 
![�
"[�
#[�
$[�
%[�[�
&
'[�
([�
)[�=^
*=^
+=^[�
-[�[�
.
/[�
0[�
1[�
2[�
3[�
4[�
5[�
6[�
7[�
8[�
9[�
:[�
;[�=^[�
=[�
>

?
q
@[�
A[�
B
a
C
R[�
D
E[�
F[�
G[�
H[�
I[�
J[�
K[�
L[�
M[�
N[�
O[�
P[�
Q[�Q�[�[�
S
T[�
U[�[�
V[�
W[�
X[�
Y
Z[�
[[�
\[�
][�
^[�Q�
_
`[�Q�[�
b[�[�
c
d[�
e[�
f[�
g[�
h[�
i[�
j[�
k[�
l[�
m[�
n[�
o[�
p[�Q�[�
r
�
s
�
t
�
u
�[�
v
w[�
x[�
y[�
z[�
{[�
|[�
}[�
~[�
[�
�[�
�[�
�[�
�[�Q�[�[�
�
�[�
�[�[�
�[�
�[�
�[�
�
�[�
�[�
�[�
�[�
�[�Q�
�
�[�Q�[�
�
�[�
�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�Q�[�[�
�
�[�
�[�[�
�[�
�[�
�[�
�
�[�
�[�
�[�
�[�
�[�Q�
�
�[�Q�[�
�
�
�[�[�
�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�Q�[�
�[�[�
�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�Q�[�
�[�
�
�
�
�[�
�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�Q�[�[�
�
�[�
�[�[�
�[�
�[�
�[�
�
�[�
�[�
�[�
�[�
�[�Q�
�
�[�Q�[�
�[�[�
�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
[�
[�
[�
[�Q�[�
[�
[�
[�

'
	
[�


[�
[�

[�
[�
[�
[�
[�
[�
[�
[�
[�
[�
[�Q�[�[�

[�
[�[�
[�
[�
[�

 [�
![�
"[�
#[�
$[�Q�
%
&[�Q�[�
([�[�
)
*[�
+[�
,[�
-[�
.[�
/[�
0[�
1[�
2[�
3[�
4[�
5[�
6[�Q�[�
8
�
9
/
:[�
;
�
<
m
=[�
>[�
?
]
@
O[�
A
B[�
C[�
D[�
E[�
F[�
G[�
H[�
I[�
J[�
K[�
L[�
M[�
N[��F[�[�
P
Q[�[�
R
S[�
T[�
U[�[�
V[�
W
X[�[�
Y
Z[��F
[
\[��F[�
^[�[�
_
`[�
a[�
b[�
c[�
d[�
e[�
f[�
g[�
h[�
i[�
j[�
k[�
l[��F[�
n
�
o
�
p
�
q
�[�
r
s[�
t[�
u[�
v[�
w[�
x[�
y[�
z[�
{[�
|[�
}[�
~[�
[��F[�[�
�
�[�[�
�
�[�
�[�
�[�[�
�[�
�
�[�[�
�
�[��F
�
�[��F[�
�
�[�
�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[��F[�[�
�
�[�[�
�
�[�
�[�
�[�[�
�[�
�
�[�[�
�
�[��F
�
�[��F[�
�
�
�[�[�
�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[��F[�
�[�[�
�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[��F[�
�[�
�
�
�
�[�
�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[��F[�[�
�
�[�[�
�
�[�
�[�
�[�[�
�[�
�
�[�[�
�
�[��F
�
�[��F[�
�[�[�
�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[��F[�
�[�
�[�
[�



[�

[�
[�
[�
[�
[�
	[�

[�
[�
[�

[�
[�
[�
[��F[�[�

[�[�

[�
[�
[�[�
[�

[�[�

[��F

[��F[�
 [�[�
!
"[�
#[�
$[�
%[�
&[�
'[�
([�
)[�
*[�
+[�
,[�
-[�
.[��F[�
0[�
1[�
2
�
3
c
4[�
5
S
6
E[�
7
8[�
9[�
:[�
;[�
<[�
=[�
>[�
?[�
@[�
A[�
B[�
C[�
D[�Oc[�[�
F
G[�
H[�[�
I[�
J
K[�
L[�
M[�
N[�
O[�
P[�
Q[�
R[�Oc[�
T[�[�
U
V[�
W[�
X[�
Y[�
Z[�
[[�
\[�
][�
^[�
_[�
`[�
a[�
b[�Oc[�
d[�
e
�
f
u[�
g
h[�
i[�
j[�
k[�
l[�
m[�
n[�
o[�
p[�
q[�
r[�
s[�
t[�Oc[�[�
v
w[�
x[�[�
y[�
z
{[�
|[�
}[�
~[�
[�
�[�
�[�
�[�Oc[�
�[�[�
�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�Oc[�
�
�
�[�
�
�
�
�[�
�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�Oc[�[�
�
�[�
�[�[�
�[�
�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�Oc[�
�[�[�
�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�Oc[�
�[�
�
�
�
�[�
�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�Oc[�[�
�
�[�
�[�[�
�[�
�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�Oc[�
�[�[�
�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�Oc[�[�
�
�[�
�
�
�
Y
�
)
�[�
�

�
[�
�
�[�
�[�
[�
[�
[�
[�
[�
[�
[�
[�
[�
	[�

[�[�[�


[�[�

[�[�

[�[�

[�
[�
[�


[�
[�[�

[�
[�
[�
[�
 [�
![�
"[�
#[�
$[�
%[�
&[�
'[�
([�[�
*[�
+
I
,
;[�
-
.[�
/[�
0[�
1[�
2[�
3[�
4[�
5[�
6[�
7[�
8[�
9[�
:[�[�[�
<
=[�[�
>
?[�[�
@
A[�[�
B
C[�
D[�
E[�
F
G
H[�
J[�[�
K
L[�
M[�
N[�
O[�
P[�
Q[�
R[�
S[�
T[�
U[�
V[�
W[�
X[�[�
Z
�
[[�
\
z
]
l[�
^
_[�
`[�
a[�
b[�
c[�
d[�
e[�
f[�
g[�
h[�
i[�
j[�
k[�[�[�
m
n[�[�
o
p[�[�
q
r[�[�
s
t[�
u[�
v[�
w
x
y[�
{[�[�
|
}[�
~[�
[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�[�
�[�
�
�
�
�[�
�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�[�[�
�
�[�[�
�
�[�[�
�
�[�[�
�
�[�
�[�
�[�
�
�
�[�
�[�[�
�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�[�
�[�
�[�
�[�
�
�
�
�[�
�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�[�[�
�
�[�[�
�
�[�[�
�
�[�[�
�
�[�
�[�
�[�
�
�
�[�
�[�[�
�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�
�[�[�
�
�
�
5
�

Y
�
	�
�
	
�

�P�
�P�
�
:
�

�P�
�

�P�P�
�
�P�
�P�
�P�
�P�
�P�
P�
P�
P�
P�
P�
P�
P�
P�~7P�
	P�P�


P�
P�

P�
P�
P�
P�
P�
P�
P�
P�
P�
P�
P�~7P�
P�

*
P�P�

P�
P�
P�
 P�
!P�
"P�
#P�
$P�
%P�
&P�
'P�
(P�
)P�~7P�
+P�P�
,
-P�
.P�
/P�
0P�
1P�
2P�
3P�
4P�
5P�
6P�
7P�
8P�
9P�~7P�
;
]
<P�
=
M
>P�P�
?
@P�
AP�
BP�
CP�
DP�
EP�
FP�
GP�
HP�
IP�
JP�
KP�
LP�~7P�
NP�P�
O
PP�
QP�
RP�
SP�
TP�
UP�
VP�
WP�
XP�
YP�
ZP�
[P�
\P�~7P�
^P�
_
o
`P�P�
a
bP�
cP�
dP�
eP�
fP�
gP�
hP�
iP�
jP�
kP�
lP�
mP�
nP�~7P�
pP�P�
q
rP�
sP�
tP�
uP�
vP�
wP�
xP�
yP�
zP�
{P�
|P�
}P�
~P�~7P�
�P�
�P�
�
�
�
�
�P�
�
�
�P�P�
�
�P�
�P�
�P�
�P�
�P�
�P�
�P�
�P�
�P�
�P�
�P�
�P�
�P�~7P�
�P�P�
�
�P�
�P�
�P�
�P�
�P�
�P�
�P�
�P�
�P�
�P�
�P�
�P�
�P�~7P�
�P�
�
�
�P�P�
�
�P�
�P�
�P�
�P�
�P�
�P�
�P�
�P�
�P�
�P�
�P�
�P�
�P�~7P�
�P�P�
�
�P�
�P�
�P�
�P�
�P�
�P�
�P�
�P�
�P�
�P�
�P�
�P�
�P�~7P�
�
�
�P�
�
�
�P�P�
�
�P�
�P�
�P�
�P�
�P�
�P�
�P�
�P�
�P�
�P�
�P�
�P�
�P�~7P�
�P�P�
�
�P�
�P�
�P�
�P�
�P�
�P�
�P�
�P�
�P�
�P�
�P�
�P�
�P�~7P�
�P�
�
�
�P�P�
�
�P�
�P�
�P�
�P�
�P�
�P�
�P�
�P�
�P�
�P�
�P�
�P�
�P�~7P�
�P�P�
�
�P�
	P�
	P�
	P�
	P�
	P�
	P�
	P�
	P�
	P�
		P�
	
P�
	P�~7P�
	
P�
	P�
	P�
	
	s
	
	B
	P�
	
	2
	
	#P�
	
	P�
	P�
	P�
	P�
	P�
	P�
	P�
	P�
	P�
	P�
	 P�
	!P�
	"P��UP�P�
	$
	%P�
	&P�P�
	'P�
	(
	)P�P�
	*P�
	+
	,P�
	-P�
	.P�
	/P�
	0P��U
	1�UP�
	3P�P�
	4
	5P�
	6P�
	7P�
	8P�
	9P�
	:P�
	;P�
	<P�
	=P�
	>P�
	?P�
	@P�
	AP��UP�
	CP�
	D
	c
	E
	TP�
	F
	GP�
	HP�
	IP�
	JP�
	KP�
	LP�
	MP�
	NP�
	OP�
	PP�
	QP�
	RP�
	SP��UP�P�
	U
	VP�
	WP�P�
	XP�
	Y
	ZP�P�
	[P�
	\
	]P�
	^P�
	_P�
	`P�
	aP��U
	b�UP�
	dP�P�
	e
	fP�
	gP�
	hP�
	iP�
	jP�
	kP�
	lP�
	mP�
	nP�
	oP�
	pP�
	qP�
	rP��UP�
	tP�
	uP�
	v
	�
	w
	�P�
	x
	yP�
	zP�
	{P�
	|P�
	}P�
	~P�
	P�
	�P�
	�P�
	�P�
	�P�
	�P�
	�P��UP�P�
	�
	�P�
	�P�P�
	�P�
	�
	�P�P�
	�P�
	�
	�P�
	�P�
	�P�
	�P�
	�P��U
	��UP�
	�P�P�
	�
	�P�
	�P�
	�P�
	�P�
	�P�
	�P�
	�P�
	�P�
	�P�
	�P�
	�P�
	�P�
	�P��UP�
	�
�
	�
4
	�N
	�N
	�
	�
	�
	�
	�N
	�
	�
	�NN
	�
	�N
	�N
	�N
	�N
	�N
	�N
	�N
	�N
	�N
	�N
	�N
	�N
	�NU�N
	�NN
	�
	�N
	�N
	�N
	�N
	�N
	�N
	�N
	�N
	�N
	�N
	�N
	�N
	�NU�N
	�N
	�
	�
	�NN
	�
	�N
	�N
	�N
	�N
	�N
	�N
	�N
	�N
	�N
	�N
	�N
	�N
	�NU�N
	�NN
	�
	�N
	�N
	�N
	�N
	�N
	�N
	�N
	�N
	�N
	�N
	�N
	�N
	�NU�N
	�

	�N
	�

	�NN
	�
	�N
	�N
	�N
	�N
	�N
	�N
	�N
	�N
	�N
	�N
	�N
N
NU�N
NN

N
N
N
N
	N

N
N
N

N
N
N
N
NU�N
N

$
NN

N
N
N
N
N
N
N
N
N
 N
!N
"N
#NU�N
%NN
&
'N
(N
)N
*N
+N
,N
-N
.N
/N
0N
1N
2N
3NU�N
5
�
6
c
7
�
8
�
9
b
:
R
;
P
<
B
=NQ�
>
?NQ�
@Q�
AQ�N
CN
DN
EN
FN
GN
HN
IN
JN
KN
LN
MN
NN
ONQ�N
QNQ�N
SNN
T
UN
VN
WN
XN
YN
ZN
[N
\N
]N
^N
_N
`N
aNQ�N
c
s
dNN
e
fN
gN
hN
iN
jN
kN
lN
mN
nN
oN
pN
qN
rNQ�N
tNN
u
vN
wN
xN
yN
zN
{N
|N
}N
~N
N
�N
�N
�NQ�N
�N
�
�
�
�
�
�
�NQ�
�
�NQ�
�Q�
�Q�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�NQ�N
�N
�N
�
�N
�Q�
�Q�
�
�Q�Q�
�Q�
�Q�
�Q�
�Q�
�
�Q�Q�
�Q�N
�N
�N
�N
�NQ�
�
�NQ�
�
�NQ�
�Q�
�
�NQ�N
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�NQ�N
�
�Q�
�
�
�
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�NQ�N
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�NQ�N
�
!
�

�

�
�
�NQ�
�
�NQ�
�Q�
�Q�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
NQ�N
N
N

NQ�
N
N
N
	NQ�


NQ�


NQ�
Q�

NQ�N
NN

N
N
N
N
N
N
N
N
N
N
N
N
 NQ�N
"
S
#
8
$
*
%NQ�
&
'NQ�
(Q�
)Q�N
+N
,N
-N
.N
/N
0N
1N
2N
3N
4N
5N
6N
7NQ�N
9N
:N
;
GN
<Q�
=Q�
>
?Q�Q�
@Q�
AQ�
BQ�
CQ�
D
EQ�Q�
FQ�N
HN
IN
JN
KNQ�
L
MNQ�
N
ONQ�
PQ�
Q
RNQ�N
TNN
U
VN
WN
XN
YN
ZN
[N
\N
]N
^N
_N
`N
aN
bNQ�N
d
�
e
�
fN
g
�
h
}
i
o
jNQ�
k
lNQ�
mQ�
nQ�N
pN
qN
rN
sN
tN
uN
vN
wN
xN
yN
zN
{N
|NQ�N
~N
N
�
�NQ�
�N
�N
�N
�NQ�
�
�NQ�
�
�NQ�
�Q�
�
�NQ�N
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�NQ�NQ�
�
�
�
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�NQ�N
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�NQ�N
�Q�Q�N
�N
�
1
�
�Q�
�
�
�
�
�
�
�
�NQ�
�
�NQ�
�Q�
�Q�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�NQ�N
�NQ�N
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�NQ�N
�N
�
!
�

�
�
�NQ�
�
�NQ�
�Q�
�Q�N
�N
�N
�N
�N
�N
�N
�N
N
N
N
N
N
NQ�N
N
N
	
N

Q�
Q�


Q�Q�
Q�
Q�
Q�
Q�

Q�Q�
Q�N
N
N
N
NQ�

NQ�

NQ�
Q�

 NQ�N
"NN
#
$N
%N
&N
'N
(N
)N
*N
+N
,N
-N
.N
/N
0NQ�N
2
u
3
T
4
D
5NN
6
7N
8N
9N
:N
;N
<N
=N
>N
?N
@N
AN
BN
CNQ�N
ENN
F
GN
HN
IN
JN
KN
LN
MN
NN
ON
PN
QN
RN
SNQ�N
U
e
VNN
W
XN
YN
ZN
[N
\N
]N
^N
_N
`N
aN
bN
cN
dNQ�N
fNN
g
hN
iN
jN
kN
lN
mN
nN
oN
pN
qN
rN
sN
tNQ�N
vN
w
�
xNN
y
zN
{N
|N
}N
~N
N
�N
�N
�N
�N
�N
�N
�NQ�N
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�NQ�NU�
�
�U�
�U�
�
�
�
�
�U�
�
�
�
�U�
�
�U�
�U�
�U�
�U�
�U�
�U�
�U�
�U�
�U�
�U�
�U�
�U�
�U��GU�U�
�
�U�U�
�
�U�
�U�U�
�
�U�U�
�
�U�U�
�
�U��G
��GU�
�U�U�
�
�U�
�U�
�U�
�U�
�U�
�U�
�U�
�U�
�U�
�U�
�U�
�U�
�U��GU�
�U�
�
�
�
�U�
�
�U�
�U�
�U�
�U�
�U�
�U�
�U�
�U�
�U�
�U�
�U�
�U�
�U��GU�U�
�
�U�U�
�
�U�
�U�U�
�
�U�U�
�
�U�U�
�
�U��G
��GU�
�U�U�
�
�U�
�U�
�U�
�U�
�U�
�U�
�U�
�U�
�U�
�U�
�U�
�U�
�U��GU�
�

*
�U�
�


�


U�
�

U�

U�

U�

U�

U�

U�

U�

U�

U�

	U�

U�

U�

U��GU�U�



U�U�



U�

U�U�



U�U�



U�U�



U��G

�GU�

U�U�



U�

U�

U�

 U�

!U�

"U�

#U�

$U�

%U�

&U�

'U�

(U�

)U��GU�

+U�

,

I

-

<U�

.

/U�

0U�

1U�

2U�

3U�

4U�

5U�

6U�

7U�

8U�

9U�

:U�

;U��GU�U�

=

>U�U�

?

@U�

AU�U�

B

CU�U�

D

EU�U�

F

GU��G

H�GU�

JU�U�

K

LU�

MU�

NU�

OU�

PU�

QU�

RU�

SU�

TU�

UU�

VU�

WU�

XU��GU�

Z
I

[
�

\
S

]N

^
!

_

�

`

�

aN

b

�

c

rN

d

eN

fN

gN

hN

iN

jN

kN

lN

mN

nN

oN

pN

qN�gNN

s

tNN

u

vN

wN

xN

yN

zN

{NN

|

}N

~N�g

�gN

�NN

�

�N

�N

�N

�N

�N

�N

�N

�N

�N

�N

�N

�N

�N�gN

�N

�

�

�

�N

�

�N

�N

�N

�N

�N

�N

�N

�N

�N

�N

�N

�N

�N�gNN

�

�NN

�

�N

�N

�N

�N

�N

�NN

�

�N

�N�g

��gN

�NN

�

�N

�N

�N

�N

�N

�N

�N

�N

�N

�N

�N

�N

�N�gN

�

�

�N

�

�

�

�N

�

�N

�N

�N

�N

�N

�N

�N

�N

�N

�N

�N

�N

�N�gNN

�

�NN

�

�N

�N

�N

�N

�N

�NN

�

�N

�N�g

��gN

�NN

�

�N

�N

�N

�N

�N

�N

�N

�N

�N

�N

�N

�N

�N�gN

�N

�


�
N

�

�N

�N

�N

�N

�N

�N

�N

�N

�N

�N
N
N
N�gNN

NN

N
N
	N

N
N
NN


N
N�g
�gN
NN

N
N
N
N
N
N
N
N
N
N
N
N
 N�gN
"N
#N
$N
%
C
&
5N
'
(N
)N
*N
+N
,N
-N
.N
/N
0N
1N
2N
3N
4N�gNN
6
7NN
8
9N
:N
;N
<N
=N
>NN
?
@N
AN�g
B�gN
DNN
E
FN
GN
HN
IN
JN
KN
LN
MN
NN
ON
PN
QN
RN�gN
TN
U
Q
V
�
W
�
X
�
Y
y
Z
m
[
_
\N
]N
^NTFN
`N
aN
bN
cN
dN
eN
fN
gN
hN
iN
jN
kN
lNTFNN
n
oNN
p
qNN
rN
s
tN
uN
vNTF
wTF
xTFN
zNN
{
|N
}N
~N
N
�N
�N
�N
�N
�N
�N
�N
�N
�NTFN
�
�
�
�
�
�
�N
�N
�NTFN
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�NTFNN
�
�NN
�
�NN
�N
�
�N
�N
�NTF
�TF
�TFN
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�NTFN
�N
�
�
�
�
�
�
�N
�N
�NTFN
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�NTFNN
�
�NN
�
�NN
�N
�
�N
�N
�NTF
�TF
�TFN
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�NTFN
�

�N
�

�

�
�
�N
�N
�NTFN
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
N
N
NTFNN

NN

NN
N
	

N
N
NTF

TF
TFN
NN

N
N
N
N
N
N
N
N
N
N
N
N
NTFN
 N
!
A
"
5
#
'
$N
%N
&NTFN
(N
)N
*N
+N
,N
-N
.N
/N
0N
1N
2N
3N
4NTFNN
6
7NN
8
9NN
:N
;
<N
=N
>NTF
?TF
@TFN
BNN
C
DN
EN
FN
GN
HN
IN
JN
KN
LN
MN
NN
ON
PNTFN
R
�
S
�
TN
U
u
V
i
W
[
XN
YN
ZNTFN
\N
]N
^N
_N
`N
aN
bN
cN
dN
eN
fN
gN
hNTFNN
j
kNN
l
mNN
nN
o
pN
qN
rNTF
sTF
tTFN
vNN
w
xN
yN
zN
{N
|N
}N
~N
N
�N
�N
�N
�N
�NTFN
�N
�
�
�
�
�
�
�N
�N
�NTFN
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�NTFNN
�
�NN
�
�NN
�N
�
�N
�N
�NTF
�TF
�TFN
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�NTFN
�N
�N
�
�
�
�
�
�
�N
�N
�NTFN
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�NTFNN
�
�NN
�
�NN
�N
�
�N
�N
�NTF
�TF
�TFN
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�NTFN
�
�
�N
�N
�
Q
�
 
�N
�

�
N
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
N�dNN

N
NN

N
NN
N
	N


N
N

N
N
N�dN
NN

N
N
N
N
N
N
N
N
N
N
N
N
N�dN
!N
"
A
#
2N
$
%N
&N
'N
(N
)N
*N
+N
,N
-N
.N
/N
0N
1N�dNN
3
4N
5NN
6
7N
8NN
9N
:N
;
<N
=N
>N
?N
@N�dN
BNN
C
DN
EN
FN
GN
HN
IN
JN
KN
LN
MN
NN
ON
PN�dN
R
�
SN
T
s
U
dN
V
WN
XN
YN
ZN
[N
\N
]N
^N
_N
`N
aN
bN
cN�dNN
e
fN
gNN
h
iN
jNN
kN
lN
m
nN
oN
pN
qN
rN�dN
tNN
u
vN
wN
xN
yN
zN
{N
|N
}N
~N
N
�N
�N
�N�dN
�N
�
�
�
�N
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N�dNN
�
�N
�NN
�
�N
�NN
�N
�N
�
�N
�N
�N
�N
�N�dN
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N�dN
�N
�N
�

�
�
�N
�
�
�
�N
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N�
NN
�
�N
�NN
�N
�
�N
�N
�NN
�N
�
�N
�N
�N�
N
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N�
N
�N
�

�
�N
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N�
NN
�
�N
�NN
�N
�
N
N
NN
N

N
N
N�
N
	NN


N
N

N
N
N
N
N
N
N
N
N
N
N�
N
N
N

9

+N

N
N
 N
!N
"N
#N
$N
%N
&N
'N
(N
)N
*N�
NN
,
-N
.NN
/N
0
1N
2N
3NN
4N
5
6N
7N
8N�
N
:NN
;
<N
=N
>N
?N
@N
AN
BN
CN
DN
EN
FN
GN
HN�
N
J
l
K
�
L�t
M�t
N
�
O
}
P�t
Q
m
R
a�t
S
T�t
U�t
V�t
W�t
X�t
Y�t
Z�t
[�t
\�t
]�t
^�t
_�t
`�tOc�t�t
b
c�t�t
d
e�t
f�t
g�t�t
h�t
i
j�t
k�t
l�tOc�t
n�t�t
o
p�t
q�t
r�t
s�t
t�t
u�t
v�t
w�t
x�t
y�t
z�t
{�t
|�tOc�t
~�t

�
�
��t
�
��t
��t
��t
��t
��t
��t
��t
��t
��t
��t
��t
��t
��tOc�t�t
�
��t�t
�
��t
��t
��t�t
��t
�
��t
��t
��tOc�t
��t�t
�
��t
��t
��t
��t
��t
��t
��t
��t
��t
��t
��t
��t
��tOc�t
��t
��t
�
�
�
��t
�
��t
��t
��t
��t
��t
��t
��t
��t
��t
��t
��t
��t
��tOc�t�t
�
��t�t
�
��t
��t
��t�t
��t
�
��t
��t
��tOc�t
��t�t
�
��t
��t
��t
��t
��t
��t
��t
��t
��t
��t
��t
��t
��tOc�t
��t
��t
�


��t
��t
�
�
�
��t
�
��t
��t
��t
��t
��t
��t
��t
��t
��t
��t
��t
��t
��t���t�t
�
��t
��t�t
��t
��t
�
��t�t
��t
��t
�
��t
��t���t
��t�t
�
�t
�t
�t
�t
�t
�t
�t
�t
�t
	�t

�t
�t
�t���t

=
�t

-

 �t

�t
�t
�t
�t
�t
�t
�t
�t
�t
�t
�t
�t
�t���t�t
!
"�t
#�t�t
$�t
%�t
&
'�t�t
(�t
)�t
*
+�t
,�t���t
.�t�t
/
0�t
1�t
2�t
3�t
4�t
5�t
6�t
7�t
8�t
9�t
:�t
;�t
<�t���t
>�t
?
\
@
O�t
A
B�t
C�t
D�t
E�t
F�t
G�t
H�t
I�t
J�t
K�t
L�t
M�t
N�t���t�t
P
Q�t
R�t�t
S�t
T�t
U
V�t�t
W�t
X�t
Y
Z�t
[�t���t
]�t�t
^
_�t
`�t
a�t
b�t
c�t
d�t
e�t
f�t
g�t
h�t
i�t
j�t
k�t���t�t
m
n�t
o�t
p
�
q
�
r�t
s
�
t
��t
u
v�t
w�t
x�t
y�t
z�t
{�t
|�t
}�t
~�t
�t
��t
��t
��t?��t�t
�
��t
��t
��t�t
��t
�
��t�t
�
��t
��t
��t
��t
��t
��t?��t
��t�t
�
��t
��t
��t
��t
��t
��t
��t
��t
��t
��t
��t
��t
��t?��t
��t
�
�
�
��t
�
��t
��t
��t
��t
��t
��t
��t
��t
��t
��t
��t
��t
��t?��t�t
�
��t
��t
��t�t
��t
�
��t�t
�
��t
��t
��t
��t
��t
��t?��t
��t�t
�
��t
��t
��t
��t
��t
��t
��t
��t
��t
��t
��t
��t
��t?��t
��t
�

�
�
�
��t
�
��t
��t
��t
��t
��t
��t
��t
��t
��t
��t
��t
��t
��t?��t�t
�
��t
��t
��t�t
��t
�
��t�t
�
��t
��t
��t
��t
��t
��t?��t
�
�t
�
��t
��t
��t
��t
��t
��t
��t
��t
�t
�t
�t
�t
�t?��t�t

�t
�t
	�t�t

�t

�t�t


�t
�t
�t
�t
�t
�t?��t

%
�t�t

�t
�t
�t
�t
�t
�t
�t
�t
 �t
!�t
"�t
#�t
$�t?��t
&�t�t
'
(�t
)�t
*�t
+�t
,�t
-�t
.�t
/�t
0�t
1�t
2�t
3�t
4�t?��t
6
l
7
Y
8
�
9
�
:N
;N
<
m
=N
>N
?
]
@
ON
A
BN
CN
DN
EN
FN
GN
HN
IN
JN
KN
LN
MN
NN��NN
P
QNN
R
SN
TN
UNN
VN
WN
XN
Y
ZN��
[
\N��N
^NN
_
`N
aN
bN
cN
dN
eN
fN
gN
hN
iN
jN
kN
lN��N
n
�
oN
p
�
q
�N
r
sN
tN
uN
vN
wN
xN
yN
zN
{N
|N
}N
~N
N��NN
�
�NN
�
�N
�N
�NN
�N
�N
�N
�
�N��
�
�N��N
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N��N
�N
�
�
�
�N
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N��NN
�
�NN
�
�N
�N
�NN
�N
�N
�N
�
�N��
�
�N��N
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N��N
�N
�N
�
4
�

�N
�
�
�
�N
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N��NN
�
�N
�NN
�N
�N
�N
�
�NN
�N
�
�N
�N��
�
�N��N
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
N
N
N��N
N

$

N

N
	N

N
N
N

N
N
N
N
N
N
N
N��NN

N
NN
N
N
N

NN
N

 N
!N��
"
#N��N
%NN
&
'N
(N
)N
*N
+N
,N
-N
.N
/N
0N
1N
2N
3N��N
5
f
6N
7
V
8
GN
9
:N
;N
<N
=N
>N
?N
@N
AN
BN
CN
DN
EN
FN��NN
H
IN
JNN
KN
LN
MN
N
ONN
PN
Q
RN
SN��
T
UN��N
WNN
X
YN
ZN
[N
\N
]N
^N
_N
`N
aN
bN
cN
dN
eN��N
gN
h
�
i
xN
j
kN
lN
mN
nN
oN
pN
qN
rN
sN
tN
uN
vN
wN��NN
y
zN
{NN
|N
}N
~N

�NN
�N
�
�N
�N��
�
�N��N
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N��N
�
-
�N
�N
�
�
�N
�N
�
�
�
�N
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N��NN
�
�N
�NN
�
�NN
�N
�N
�
�NN
�
�N
�N
�N��N
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N��N
�
�
�N
�
�
�
�N
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N��NN
�
�N
�NN
�
�NN
�N
�N
�
�NN
�
�N
�N
�N��N
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N��N
�N
�


N

N
N
N
N
N
N
N
	N

N
N
N

N
N��NN

N
NN

NN
N
N

NN

N
N
N��N
NN

 N
!N
"N
#N
$N
%N
&N
'N
(N
)N
*N
+N
,N��N
.N
/
&
0
�
1
b
2N
3
R
4
CN
5
6N
7N
8N
9N
:N
;N
<N
=N
>N
?N
@N
AN
BN�WNN
D
EN
FN
GNN
H
INN
JN
K
LNN
M
NN
ON
PN
QN�WN
SNN
T
UN
VN
WN
XN
YN
ZN
[N
\N
]N
^N
_N
`N
aN�WN
cN
d
�
e
tN
f
gN
hN
iN
jN
kN
lN
mN
nN
oN
pN
qN
rN
sN�WNN
u
vN
wN
xNN
y
zNN
{N
|
}NN
~
N
�N
�N
�N�WN
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N�WN
�
�
�
�
�
�
�
�N
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N�WNN
�
�N
�N
�NN
�
�NN
�N
�
�NN
�
�N
�N
�N
�N�WN
�
�N
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N�WNN
�
�N
�N
�NN
�
�NN
�N
�
�NN
�
�N
�N
�N
�N�WN
�
�
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N�WN
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N�WN
�N
�

�
N
�
�N
�N
�N
�N
�N
�N
N
N
N
N
N
N
N�WNN

	N

N
NN


NN
N

NN

N
N
N
N�WN
NN

N
N
N
N
N
N
N
 N
!N
"N
#N
$N
%N�WN
'N
(N
)N
*
I
+
:N
,
-N
.N
/N
0N
1N
2N
3N
4N
5N
6N
7N
8N
9N�WNN
;
<N
=N
>NN
?
@NN
AN
B
CNN
D
EN
FN
GN
HN�WN
JNN
K
LN
MN
NN
ON
PN
QN
RN
SN
TN
UN
VN
WN
XN�WN
Z
�
[
�
\N
]
�
^N
_
�
`N
a
}
b
qN
c
dN
eN
fN
gN
hN
iN
jN
kN
lN
mN
nN
oN
pN @NN
r
sNN
t
uN
vN
wN
xNN
yN
z
{N
|N @N
~NN

�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N @N
�N
�
�
�
�N
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N @NN
�
�NN
�
�N
�N
�N
�NN
�N
�
�N
�N @N
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N @N
�N
�N
�N
�
�
�
�N
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N @NN
�
�NN
�
�N
�N
�N
�NN
�N
�
�N
�N @N
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N @N
�N
�
�
�
O
�

�N
�

�
N
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
N��NN

N
NN

NN
N

	NN

N

N

N
N��N
NN

N
N
N
N
N
N
N
N
N
N
N
N
N��N
 N
!
?
"
1N
#
$N
%N
&N
'N
(N
)N
*N
+N
,N
-N
.N
/N
0N��NN
2
3N
4NN
5
6NN
7N
8
9NN
:N
;
<N
=N
>N��N
@NN
A
BN
CN
DN
EN
FN
GN
HN
IN
JN
KN
LN
MN
NN��N
P
�
QN
R
p
S
bN
T
UN
VN
WN
XN
YN
ZN
[N
\N
]N
^N
_N
`N
aN��NN
c
dN
eNN
f
gNN
hN
i
jNN
kN
l
mN
nN
oN��N
qNN
r
sN
tN
uN
vN
wN
xN
yN
zN
{N
|N
}N
~N
N��N
�N
�
�
�
�N
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N��NN
�
�N
�NN
�
�NN
�N
�
�NN
�N
�
�N
�N
�N��N
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N��N
�N
�N
�N
�
�
�
�N
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N��NN
�
�N
�NN
�
�NN
�N
�
�NN
�N
�
�N
�N
�N��N
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N��N
�
�
�N
�N
�
I
�

�N
�

�
�N
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N��NN
�
�N
�N
�NN
�
�N
NN

NN

N
N
N
N��N
	NN


N
N

N
N
N
N
N
N
N
N
N
N
N��N
N

9

*N

N
N
N
 N
!N
"N
#N
$N
%N
&N
'N
(N
)N��NN
+
,N
-N
.NN
/
0N
1NN
2
3NN
4
5N
6N
7N
8N��N
:NN
;
<N
=N
>N
?N
@N
AN
BN
CN
DN
EN
FN
GN
HN��N
J
{
KN
L
k
M
\N
N
ON
PN
QN
RN
SN
TN
UN
VN
WN
XN
YN
ZN
[N��NN
]
^N
_N
`NN
a
bN
cNN
d
eNN
f
gN
hN
iN
jN��N
lNN
m
nN
oN
pN
qN
rN
sN
tN
uN
vN
wN
xN
yN
zN��N
|N
}
�
~
�N

�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N��NN
�
�N
�N
�NN
�
�N
�NN
�
�NN
�
�N
�N
�N
�N��N
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N��N
�N
�N
�

�
�
�N
�
�
�
�N
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�NQ�NN
�
�N
�NN
�N
�N
�
�N
�NN
�N
�
�N
�NQ�N
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�NQ�N
�N
�
�
�
�N
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�NQ�NN
�
�N
�NN
�N
�N
�
�N
�NN
�N
�
�N
�NQ�N
�NN

N
N
N
N
N
N
N
N
	N

N
N
N

NQ�N
N

K

.

!N

N
N
N
N
N
N
N
N
N
N
N
N
 NQ�NN
"
#N
$NN
%N
&N
'
(N
)NN
*N
+
,N
-NQ�N
/
>N
0
1N
2N
3N
4N
5N
6N
7N
8N
9N
:N
;N
<N
=NQ�NN
?
@N
ANN
BN
CN
D
EN
FNN
GN
H
IN
JNQ�N
L
\
MNN
N
ON
PN
QN
RN
SN
TN
UN
VN
WN
XN
YN
ZN
[NQ�N
]NN
^
_N
`N
aN
bN
cN
dN
eN
fN
gN
hN
iN
jN
kNQ�N
m
�
n
�
o

pN
qN
r
�
sN
tN
u
�
v
�N
w
xN
yN
zN
{N
|N
}N
~N
N
�N
�N
�N
�N
�N��NN
�
�N
�N
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N��N
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N��N
�
�
�N
�
�
�
�N
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N��NN
�
�N
�N
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N��N
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N��N
�N
�
�
�
�N
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N��NN
�
�N
�N
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N��N
�NN
�
�N
�N
�N
�N
�N
�N
N
N
N
N
N
N
N��N
N
	
�


e

8
N


(
NN

N
N


N
N
N
N
N
N
N
N
N
NX�N
N
N
 N
!NN
"
#NX�
$
%N
&N
'NX�N
)NN
*
+N
,N
-N
.N
/N
0N
1N
2N
3N
4N
5N
6N
7NX�N
9N
:
U
;NN
<
=N
>N
?
J
@N
AN
BN
CN
DN
EN
FN
GN
HN
INX�N
KN
LN
MN
NNN
O
PNX�
Q
RN
SN
TNX�N
VNN
W
XN
YN
ZN
[N
\N
]N
^N
_N
`N
aN
bN
cN
dNX�N
f
�
gN
h
�
iNN
j
kN
lN
m
x
nN
oN
pN
qN
rN
sN
tN
uN
vN
wNX�N
yN
zN
{N
|NN
}
~NX�

�N
�N
�NX�N
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�NX�N
�N
�
�
�NN
�
�N
�N
�
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�NX�N
�N
�N
�N
�NN
�
�NX�
�
�N
�N
�NX�N
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�NX�N
�N
�N
�N
�
�
�NN
�
�N
�N
�
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�NX�N
�N
�N
�N
�NN
�
�NX�
�
�N
�N
�NX�N
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�NX�N
�_�
�_�
�_�
�
%
�_�
�_�
�

�
_�
�
�_�
�_�
�_�
�_�
�_�
�_�
�_�
_�
_�
_�
_�
_�
_���_�_�

_�
	_�

_�
_�_�
_�

_�

_�_�

_�
_�
_�
_���_�
_�_�

_�
_�
_�
_�
_�
_�
_�
_�
 _�
!_�
"_�
#_�
$_���_�
&
W
'_�
(
G
)
8_�
*
+_�
,_�
-_�
._�
/_�
0_�
1_�
2_�
3_�
4_�
5_�
6_�
7_���_�_�
9
:_�
;_�
<_�
=_�_�
>_�
?_�
@
A_�_�
B
C_�
D_�
E_�
F_���_�
H_�_�
I
J_�
K_�
L_�
M_�
N_�
O_�
P_�
Q_�
R_�
S_�
T_�
U_�
V_���_�
X_�
Y
x
Z
i_�
[
\_�
]_�
^_�
__�
`_�
a_�
b_�
c_�
d_�
e_�
f_�
g_�
h_���_�_�
j
k_�
l_�
m_�
n_�_�
o_�
p_�
q
r_�_�
s
t_�
u_�
v_�
w_���_�
y_�_�
z
{_�
|_�
}_�
~_�
_�
�_�
�_�
�_�
�_�
�_�
�_�
�_�
�_���_�
�
+
�
v
�N
�N
�

�
�
�N
�
�
�
�N
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�NLNN
�
�NN
�
�N
�NN
�N
�N
�N
�N
�
�
�
�
�
�L
�LNL
�
�L
�LNL
�LNL
�
�N
�NLN
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�NLN
�N
�
�
�
�N
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�NLNN
�
�NN
�
�N
�NN
�N
�N
�N
�N
�
�
�
�
�
�L
�LNL
�
�L
�LNL
�LNL
�
�N
�NLN
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
N
NLN
N

U

-

N

N
	N

N
N
N

N
N
N
N
N
N
N
NLNN

NN

N
NN
N
N
N
N

 
)
!
$
"L
#LNL
%
'L
&LNL
(LNL
*
+N
,NLN
.
=N
/
0N
1N
2N
3N
4N
5N
6N
7N
8N
9N
:N
;N
<NLNN
>
?NN
@
AN
BNN
CN
DN
EN
FN
G
H
Q
I
L
JL
KLNL
M
OL
NLNL
PLNL
R
SN
TNLN
V
f
WNN
X
YN
ZN
[N
\N
]N
^N
_N
`N
aN
bN
cN
dN
eNLN
gNN
h
iN
jN
kN
lN
mN
nN
oN
pN
qN
rN
sN
tN
uNLN
wN
xN
y
�
z
�
{N
|
�
}NN
~
N
�N
�N
�
�
�N
�N
�N
�N
�N
�N
�N
�N
�N��N
�N
�NN
�
�N
�N
�N
�N
�N
�N��N
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N��N
�N
�
�
�NN
�
�N
�N
�N
�
�
�N
�N
�N
�N
�N
�N
�N
�N
�N��N
�N
�NN
�
�N
�N
�N
�N
�N
�N��N
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N��N
�
�
�N
�
�
�NN
�
�N
�N
�N
�
�
�N
�N
�N
�N
�N
�N
�N
�N
�N��N
�N
�NN
�
�N
�N
�N
�N
�N
�N��N
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N��N
N


NN

N
N
N


N
	N

N
N
N

N
N
N
N��N
N
NN

N
N
N
N
N
N��N
NN

N
N
 N
!N
"N
#N
$N
%N
&N
'N
(N
)N
*N��N
,@�
-N
.N
/
�
0
`
1N
2
P
3
BN
4
5N
6N
7N
8N
9N
:N
;N
<N
=N
>N
?N
@N
AN�NN
C
DN
ENN
F
GNN
H
INN
J
KN
LN
MN
NN
ON�N
QNN
R
SN
TN
UN
VN
WN
XN
YN
ZN
[N
\N
]N
^N
_N�N
aN
b
�
c
rN
d
eN
fN
gN
hN
iN
jN
kN
lN
mN
nN
oN
pN
qN�NN
s
tN
uNN
v
wNN
x
yNN
z
{N
|N
}N
~N
N�N
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N�N
�
�
�N
�
�
�
�N
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N�NN
�
�N
�NN
�
�NN
�
�NN
�
�N
�N
�N
�N
�N�N
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N�N
�N
�
�
�
�N
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N�NN
�
�N
�NN
�
�NN
�
�NN
�
�N
�N
�N
�N
�N�N
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N�N
�
(�
�
##
�
 �
�
b
�
�
�N
�N
�
N
�
$
�N
�

�NN
�
�N
N
N
N
N


N
N
N
N
	N

N
NQqN

N
N
NQq

NQq

NQqN
NN

N
N
N
N
N
N
N
N
N
 N
!N
"N
#NQqN
%N
&
>
'NN
(
)N
*N
+N
,N
-N
.
6
/N
0N
1N
2N
3N
4N
5NQqN
7N
8N
9NQq
:
;NQq
<
=NQqN
?NN
@
AN
BN
CN
DN
EN
FN
GN
HN
IN
JN
KN
LN
MNQqN
ON
P
�
Q
i
RNN
S
TN
UN
VN
WN
XN
Y
a
ZN
[N
\N
]N
^N
_N
`NQqN
bN
cN
dNQq
e
fNQq
g
hNQqN
jNN
k
lN
mN
nN
oN
pN
q
y
rN
sN
tN
uN
vN
wN
xNQqN
zN
{N
|NQq
}
~NQq

�NQqN
�
�
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�NQqN
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�NQqN
�N
�
A
�
�
�
�
�N
�
�
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�NQ�N
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�NQ�N
�N
�
�
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�NQ�N
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�NQ�N
�

�N
�
�
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�NQ�N
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
N
N
N
NQ�N

 


NN

	N

N
N
N

N
N
N
N
N
NQ�N
NN

N
N
N
N
N
N
N
N
N
NQ�N
!
1
"NN
#
$N
%N
&N
'N
(N
)N
*N
+N
,N
-N
.N
/N
0NQ�N
2NN
3
4N
5N
6N
7N
8N
9N
:N
;N
<N
=N
>N
?N
@NQ�N
BN
CN
DN
E
R
FNN
G
HN
IN
JN
KN
LN
MN
NN
ON
PN
QNQ�N
SNN
T
UN
VN
WN
XN
YN
ZN
[N
\N
]N
^N
_N
`N
aNQ�N
c
�
dN
eN
f
�
g
�
hN
i
�
jNN
k
lN
mN
n
y
oN
pN
qN
rN
sN
tN
uN
vN
wN
xN�8NN
zN
{
|NN
}
~N
N
�N
�N
�N
�N�8N
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N�8N
�N
�
�
�NN
�
�N
�N
�
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N�8NN
�N
�
�NN
�
�N
�N
�N
�N
�N
�N�8N
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N�8N
�N
�N
�
�
�NN
�
�N
�N
�
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N�8NN
�N
�
�NN
�
�N
�N
�N
�N
�N
�N�8N
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N�8N
�N
�N
�
 �
�
 T
�
 $
�
 
�
 N
�
�N
�N
�N
�N
�N
�N
�N
�N
 N
 N
 N
 N
 N��NN
 
 NN
 
 	N
 
NN
 N
 N
 

 N
 N��
 
 N��
 
 N��N
 NN
 
 N
 N
 N
 N
 N
 N
 N
 N
 N
  N
 !N
 "N
 #N��N
 %
 D
 &
 5N
 '
 (N
 )N
 *N
 +N
 ,N
 -N
 .N
 /N
 0N
 1N
 2N
 3N
 4N��NN
 6
 7NN
 8
 9N
 :NN
 ;N
 <N
 =
 >N
 ?N��
 @
 AN��
 B
 CN��N
 ENN
 F
 GN
 HN
 IN
 JN
 KN
 LN
 MN
 NN
 ON
 PN
 QN
 RN
 SN��N
 U
 �
 V
 u
 W
 fN
 X
 YN
 ZN
 [N
 \N
 ]N
 ^N
 _N
 `N
 aN
 bN
 cN
 dN
 eN��NN
 g
 hNN
 i
 jN
 kNN
 lN
 mN
 n
 oN
 pN��
 q
 rN��
 s
 tN��N
 vNN
 w
 xN
 yN
 zN
 {N
 |N
 }N
 ~N
 N
 �N
 �N
 �N
 �N
 �N��N
 �
 �
 �
 �N
 �
 �N
 �N
 �N
 �N
 �N
 �N
 �N
 �N
 �N
 �N
 �N
 �N
 �N��NN
 �
 �NN
 �
 �N
 �NN
 �N
 �N
 �
 �N
 �N��
 �
 �N��
 �
 �N��N
 �NN
 �
 �N
 �N
 �N
 �N
 �N
 �N
 �N
 �N
 �N
 �N
 �N
 �N
 �N��N
 �N
 �N
 �
 �
 �
 �N
 �
 �N
 �N
 �N
 �N
 �N
 �N
 �N
 �N
 �N
 �N
 �N
 �N
 �N��NN
 �
 �NN
 �
 �N
 �NN
 �N
 �N
 �
 �N
 �N��
 �
 �N��
 �
 �N��N
 �NN
 �
 �N
 �N
 �N
 �N
 �N
 �N
 �N
 �N
 �N
 �N
 �N
 �N
 �N��N
 �
!u
 �]�
 �]�
 �]�
 �
!
 �]�
 �]�
 �
!

 �]�]�
 �
 �]�
 �]�
 �
 �
 �]�
 �]�
 �]�
 �]�
 �]�
 �]�
 �]�
 �]�
 �]�
 �]�[]�
!]�]�
!]�
!
!]�
!]�
!]�[
![
!
!]�
!	]�[]�
!]�]�
!
!
]�
!]�
!]�
!]�
!]�
!]�
!]�
!]�
!]�
!]�
!]�
!]�
!]�[]�
!
!H
!]�
!
!8
!]�]�
!
! ]�
!!]�
!"
!-
!#]�
!$]�
!%]�
!&]�
!']�
!(]�
!)]�
!*]�
!+]�
!,]�[]�
!.]�]�
!/]�
!0
!1]�
!2]�
!3]�[
!4[
!5
!6]�
!7]�[]�
!9]�]�
!:
!;]�
!<]�
!=]�
!>]�
!?]�
!@]�
!A]�
!B]�
!C]�
!D]�
!E]�
!F]�
!G]�[]�
!I]�
!J
!e
!K]�]�
!L
!M]�
!N]�
!O
!Z
!P]�
!Q]�
!R]�
!S]�
!T]�
!U]�
!V]�
!W]�
!X]�
!Y]�[]�
![]�]�
!\]�
!]
!^]�
!_]�
!`]�[
!a[
!b
!c]�
!d]�[]�
!f]�]�
!g
!h]�
!i]�
!j]�
!k]�
!l]�
!m]�
!n]�
!o]�
!p]�
!q]�
!r]�
!s]�
!t]�[]�
!v
"[
!w]�
!x]�
!y
!�
!z
!�
!{]�
!|
!�
!}
!�
!~
!�
!]�
!�]�
!�]�[�
!�
!�]�[�
!�
!�]�
!�]�[�]�
!�]�
!�]�
!�]�
!�]�
!�]�
!�]�
!�]�
!�[�
!�]�
!�]�
!�]�
!�]�
!�]�[�]�]�
!�]�
!�
!�]�]�
!�]�
!�
!�]�[�
!�
!�]�[�
!�
!�]�[�
!�[�
!�[�]�
!�]�]�
!�
!�]�
!�]�
!�]�
!�]�
!�]�
!�]�
!�]�
!�]�
!�]�
!�]�
!�]�
!�]�
!�]�[�]�
!�]�
!�
!�
!�
!�
!�
!�
!�]�
!�]�
!�]�[�
!�
!�]�[�
!�
!�]�
!�]�[�]�
!�]�
!�]�
!�]�
!�]�
!�]�
!�]�
!�]�
!�[�
!�]�
!�]�
!�]�
!�]�
!�]�[�]�]�
!�]�
!�
!�]�]�
!�]�
!�
!�]�[�
!�
!�]�[�
!�
!�]�[�
!�[�
!�[�]�
!�]�]�
!�
!�]�
!�]�
!�]�
!�]�
!�]�
!�]�
!�]�
!�]�
!�]�
!�]�
!�]�
!�]�
!�]�[�]�
!�
"#
!�]�
!�
"
!�
"
!�
!�
!�]�
!�]�
!�]�[�
!�
!�]�[�
!�
!�]�
!�]�[�]�
!�]�
!�]�
!�]�
!�]�
!�]�
!�]�
!�]�
"[�
"]�
"]�
"]�
"]�
"]�[�]�]�
"]�
"
"	]�]�
"
]�
"
"]�[�
"

"]�[�
"
"]�[�
"[�
"[�]�
"]�]�
"
"]�
"]�
"]�
"]�
"]�
"]�
"]�
"]�
"]�
"]�
" ]�
"!]�
""]�[�]�
"$]�
"%
"K
"&
">
"'
"0
"(]�
")]�
"*]�[�
"+
",]�[�
"-
".]�
"/]�[�]�
"1]�
"2]�
"3]�
"4]�
"5]�
"6]�
"7]�
"8[�
"9]�
":]�
";]�
"<]�
"=]�[�]�]�
"?]�
"@
"A]�]�
"B]�
"C
"D]�[�
"E
"F]�[�
"G
"H]�[�
"I[�
"J[�]�
"L]�]�
"M
"N]�
"O]�
"P]�
"Q]�
"R]�
"S]�
"T]�
"U]�
"V]�
"W]�
"X]�
"Y]�
"Z]�[�]�
"\]�
"]]�
"^
"�
"_
"�
"`
"�
"a
"�
"b
"q]�
"c
"d]�
"e]�
"f]�
"g]�
"h]�
"i]�
"j]�
"k]�
"l]�
"m]�
"n]�
"o]�
"p]��]�]�
"r
"s]�
"t]�
"u]�
"v]�
"w]�
"x]�
"y]�]�
"z
"{]�
"|]�
"}]�
"~]�
"]��]�
"�]�]�
"�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]��]�
"�
"�
"�
"�]�
"�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]��]�]�
"�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]�]�
"�
"�]�
"�]�
"�]�
"�]�
"�]��]�
"�]�]�
"�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]��]�
"�]�
"�
"�
"�
"�]�
"�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]��]�]�
"�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]�]�
"�
"�]�
"�]�
"�]�
"�]�
"�]��]�
"�]�]�
"�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]��]�
"�]�
"�]�
"�
#
"�
#]�
"�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]�
"�]�
#]�
#]�
#]�
#]��]�]�
#
#]�
#]�
#]�
#	]�
#
]�
#]�
#]�]�
#

#]�
#]�
#]�
#]�
#]��]�
#]�]�
#
#]�
#]�
#]�
#]�
#]�
#]�
#]�
#]�
#]�
#]�
# ]�
#!]�
#"]��]�
#$
%x
#%
$�
#&
$
#'N
#(
#�
#)
#�
#*
#Z
#+N
#,
#J
#-
#<N
#.
#/N
#0N
#1N
#2N
#3N
#4N
#5N
#6N
#7N
#8N
#9N
#:N
#;NY�NN
#=
#>N
#?NN
#@N
#A
#BN
#CNN
#DN
#EN
#F
#GN
#HN
#INY�N
#KNN
#L
#MN
#NN
#ON
#PN
#QN
#RN
#SN
#TN
#UN
#VN
#WN
#XN
#YNY�N
#[N
#\
#z
#]
#lN
#^
#_N
#`N
#aN
#bN
#cN
#dN
#eN
#fN
#gN
#hN
#iN
#jN
#kNY�NN
#m
#nN
#oNN
#pN
#q
#rN
#sNN
#tN
#uN
#v
#wN
#xN
#yNY�N
#{NN
#|
#}N
#~N
#N
#�N
#�N
#�N
#�N
#�N
#�N
#�N
#�N
#�N
#�NY�N
#�
#�
#�N
#�
#�
#�
#�N
#�
#�N
#�N
#�N
#�N
#�N
#�N
#�N
#�N
#�N
#�N
#�N
#�N
#�NY�NN
#�
#�N
#�NN
#�N
#�
#�N
#�NN
#�N
#�N
#�
#�N
#�N
#�NY�N
#�NN
#�
#�N
#�N
#�N
#�N
#�N
#�N
#�N
#�N
#�N
#�N
#�N
#�N
#�NY�N
#�N
#�
#�
#�
#�N
#�
#�N
#�N
#�N
#�N
#�N
#�N
#�N
#�N
#�N
#�N
#�N
#�N
#�NY�NN
#�
#�N
#�NN
#�N
#�
#�N
#�NN
#�N
#�N
#�
#�N
#�N
#�NY�N
#�NN
#�
#�N
#�N
#�N
#�N
#�N
#�N
#�N
#�N
#�N
#�N
#�N
#�N
#�NY�N
#�N
#�N
#�N
#�
$

#�
#�N
#�
#�N
#�N
#�N
#�N
#�N
#�N
#�N
#�N
#�N
#�N
#�N
#�N
#�NY�NN
$
$N
$NN
$N
$
$N
$NN
$N
$N
$	
$
N
$N
$NY�N
$NN
$
$N
$N
$N
$N
$N
$N
$N
$N
$N
$N
$N
$N
$NY�N
$N
$N
$ 
$�
$!
$Q
$"N
$#
$A
$$
$3N
$%
$&N
$'N
$(N
$)N
$*N
$+N
$,N
$-N
$.N
$/N
$0N
$1N
$2N�"NN
$4
$5N
$6NN
$7N
$8
$9N
$:NN
$;N
$<
$=N
$>N
$?N
$@N�"N
$BNN
$C
$DN
$EN
$FN
$GN
$HN
$IN
$JN
$KN
$LN
$MN
$NN
$ON
$PN�"N
$RN
$S
$q
$T
$cN
$U
$VN
$WN
$XN
$YN
$ZN
$[N
$\N
$]N
$^N
$_N
$`N
$aN
$bN�"NN
$d
$eN
$fNN
$gN
$h
$iN
$jNN
$kN
$l
$mN
$nN
$oN
$pN�"N
$rNN
$s
$tN
$uN
$vN
$wN
$xN
$yN
$zN
${N
$|N
$}N
$~N
$N
$�N�"N
$�N
$�N
$�
$�
$�
$�N
$�
$�N
$�N
$�N
$�N
$�N
$�N
$�N
$�N
$�N
$�N
$�N
$�N
$�N�"NN
$�
$�N
$�NN
$�N
$�
$�N
$�NN
$�N
$�
$�N
$�N
$�N
$�N�"N
$�NN
$�
$�N
$�N
$�N
$�N
$�N
$�N
$�N
$�N
$�N
$�N
$�N
$�N
$�N�"N
$�N
$�N
$�N
$�
%
$�
$�
$�N
$�
$�
$�
$�N
$�
$�N
$�N
$�N
$�N
$�N
$�N
$�N
$�N
$�N
$�N
$�N
$�N
$�N��NN
$�
$�N
$�NN
$�N
$�
$�N
$�NN
$�
$�NN
$�
$�N
$�N
$�N��N
$�NN
$�
$�N
$�N
$�N
$�N
$�N
$�N
$�N
$�N
$�N
$�N
$�N
$�N
$�N��N
$�N
$�
%
$�
$�N
$�
$�N
$�N
$�N
$�N
$�N
$�N
$�N
$�N
$�N
$�N
$�N
$�N
$�N��NN
$�
$�N
$�NN
$�N
$�
$�N
%NN
%
%NN
%
%N
%N
%N��N
%NN
%	
%
N
%N
%N
%
N
%N
%N
%N
%N
%N
%N
%N
%N
%N��N
%
%H
%N
%
%8
%
%*N
%
%N
%N
%N
% N
%!N
%"N
%#N
%$N
%%N
%&N
%'N
%(N
%)N��NN
%+
%,N
%-NN
%.N
%/
%0N
%1NN
%2
%3NN
%4
%5N
%6N
%7N��N
%9NN
%:
%;N
%<N
%=N
%>N
%?N
%@N
%AN
%BN
%CN
%DN
%EN
%FN
%GN��N
%IN
%J
%h
%K
%ZN
%L
%MN
%NN
%ON
%PN
%QN
%RN
%SN
%TN
%UN
%VN
%WN
%XN
%YN��NN
%[
%\N
%]NN
%^N
%_
%`N
%aNN
%b
%cNN
%d
%eN
%fN
%gN��N
%iNN
%j
%kN
%lN
%mN
%nN
%oN
%pN
%qN
%rN
%sN
%tN
%uN
%vN
%wN��N
%y
'
%z
&v
%{N
%|
&C
%}
%�
%~
%�
%N
%�
%�
%�
%�N
%�
%�N
%�N
%�N
%�N
%�N
%�N
%�N
%�N
%�N
%�N
%�N
%�N
%�N�1NN
%�
%�N
%�N
%�NN
%�N
%�N
%�N
%�N
%�
%�N
%�N
%�N
%�N
%�N�1N
%�NN
%�
%�N
%�N
%�N
%�N
%�N
%�N
%�N
%�N
%�N
%�N
%�N
%�N
%�N�1N
%�N
%�
%�
%�
%�N
%�
%�N
%�N
%�N
%�N
%�N
%�N
%�N
%�N
%�N
%�N
%�N
%�N
%�N�1NN
%�
%�N
%�N
%�NN
%�N
%�N
%�N
%�N
%�
%�N
%�N
%�N
%�N
%�N�1N
%�NN
%�
%�N
%�N
%�N
%�N
%�N
%�N
%�N
%�N
%�N
%�N
%�N
%�N
%�N�1N
%�
&
%�N
%�
&
%�
%�N
%�
%�N
%�N
%�N
%�N
%�N
%�N
%�N
%�N
%�N
%�N
%�N
%�N
%�N�1NN
%�
%�N
%�N
%�NN
%�N
%�N
%�N
%�N
%�
%�N
%�N
%�N
&N
&N�1N
&NN
&
&N
&N
&N
&N
&	N
&
N
&N
&N
&
N
&N
&N
&N
&N�1N
&N
&
&3
&
&$N
&
&N
&N
&N
&N
&N
&N
&N
&N
&N
& N
&!N
&"N
&#N�1NN
&%
&&N
&'N
&(NN
&)N
&*N
&+N
&,N
&-
&.N
&/N
&0N
&1N
&2N�1N
&4NN
&5
&6N
&7N
&8N
&9N
&:N
&;N
&<N
&=N
&>N
&?N
&@N
&AN
&BN�1N
&DN
&EN
&FN
&G
&f
&H
&WN
&I
&JN
&KN
&LN
&MN
&NN
&ON
&PN
&QN
&RN
&SN
&TN
&UN
&VN�1NN
&X
&YN
&ZN
&[NN
&\N
&]N
&^N
&_N
&`
&aN
&bN
&cN
&dN
&eN�1N
&gNN
&h
&iN
&jN
&kN
&lN
&mN
&nN
&oN
&pN
&qN
&rN
&sN
&tN
&uN�1N
&wN
&xN
&y
&�
&z
&�
&{N
&|
&�
&}
&�N
&~
&N
&�N
&�N
&�N
&�N
&�N
&�N
&�N
&�N
&�N
&�N
&�N
&�N�ANN
&�
&�N
&�NN
&�N
&�
&�N
&�N
&�NN
&�
&�N
&�N
&�N
&�N�AN
&�NN
&�
&�N
&�N
&�N
&�N
&�N
&�N
&�N
&�N
&�N
&�N
&�N
&�N
&�N�AN
&�N
&�
&�
&�
&�N
&�
&�N
&�N
&�N
&�N
&�N
&�N
&�N
&�N
&�N
&�N
&�N
&�N
&�N�ANN
&�
&�N
&�NN
&�N
&�
&�N
&�N
&�NN
&�
&�N
&�N
&�N
&�N�AN
&�NN
&�
&�N
&�N
&�N
&�N
&�N
&�N
&�N
&�N
&�N
&�N
&�N
&�N
&�N�AN
&�N
&�N
&�
&�
&�
&�N
&�
&�N
&�N
&�N
&�N
&�N
&�N
&�N
&�N
&�N
&�N
&�N
&�N
&�N�ANN
&�
&�N
&�NN
&�N
&�
&�N
&�N
&�NN
&�
&�N
&�N
&�N
&�N�AN
&�NN
&�
&�N
&�N
'N
'N
'N
'N
'N
'N
'N
'N
'N
'	N
'
N�AN
'
'�
'
N
'N
'
'r
'
'A
'N
'
'1
'
'"N
'
'N
'N
'N
'N
'N
'N
'N
'N
'N
'N
'N
' N
'!N�QNN
'#
'$N
'%N
'&NN
''N
'(N
')
'*N
'+N
',N
'-N
'.N
'/N
'0N�QN
'2NN
'3
'4N
'5N
'6N
'7N
'8N
'9N
':N
';N
'<N
'=N
'>N
'?N
'@N�QN
'BN
'C
'b
'D
'SN
'E
'FN
'GN
'HN
'IN
'JN
'KN
'LN
'MN
'NN
'ON
'PN
'QN
'RN�QNN
'T
'UN
'VN
'WNN
'XN
'YN
'Z
'[N
'\N
']N
'^N
'_N
'`N
'aN�QN
'cNN
'd
'eN
'fN
'gN
'hN
'iN
'jN
'kN
'lN
'mN
'nN
'oN
'pN
'qN�QN
's
'�
'tN
'u
'�
'v
'�N
'w
'xN
'yN
'zN
'{N
'|N
'}N
'~N
'N
'�N
'�N
'�N
'�N
'�N�QNN
'�
'�N
'�N
'�NN
'�N
'�N
'�
'�N
'�N
'�N
'�N
'�N
'�N
'�N�QN
'�NN
'�
'�N
'�N
'�N
'�N
'�N
'�N
'�N
'�N
'�N
'�N
'�N
'�N
'�N�QN
'�N
'�
'�
'�
'�N
'�
'�N
'�N
'�N
'�N
'�N
'�N
'�N
'�N
'�N
'�N
'�N
'�N
'�N�QNN
'�
'�N
'�N
'�NN
'�N
'�N
'�
'�N
'�N
'�N
'�N
'�N
'�N
'�N�QN
'�NN
'�
'�N
'�N
'�N
'�N
'�N
'�N
'�N
'�N
'�N
'�N
'�N
'�N
'�N�QN
'�N
'�
(�
'�
(;
'�
(

'�N
'�
'�
'�
'�N
'�
'�N
'�N
'�N
'�N
'�N
'�N
'�N
'�N
'�N
'�N
'�N
'�N
'�NOcNN
'�
'�NN
'�N
'�
'�N
'�NN
'�
'�NOc
'�
'�NOc
'�
'�N
'�N
'�NOcN
'�NN
'�
'�N
'�N
'�N
(N
(N
(N
(N
(N
(N
(N
(N
(N
(	NOcN
(N
(
(+
(

(N
(
(N
(N
(N
(N
(N
(N
(N
(N
(N
(N
(N
(N
(NOcNN
(
(NN
(N
( 
(!N
("NN
(#
($NOc
(%
(&NOc
('
((N
()N
(*NOcN
(,NN
(-
(.N
(/N
(0N
(1N
(2N
(3N
(4N
(5N
(6N
(7N
(8N
(9N
(:NOcN
(<
(m
(=N
(>
(]
(?
(NN
(@
(AN
(BN
(CN
(DN
(EN
(FN
(GN
(HN
(IN
(JN
(KN
(LN
(MNOcNN
(O
(PNN
(QN
(R
(SN
(TNN
(U
(VNOc
(W
(XNOc
(Y
(ZN
([N
(\NOcN
(^NN
(_
(`N
(aN
(bN
(cN
(dN
(eN
(fN
(gN
(hN
(iN
(jN
(kN
(lNOcN
(nN
(o
(�
(p
(N
(q
(rN
(sN
(tN
(uN
(vN
(wN
(xN
(yN
(zN
({N
(|N
(}N
(~NOcNN
(�
(�NN
(�N
(�
(�N
(�NN
(�
(�NOc
(�
(�NOc
(�
(�N
(�N
(�NOcN
(�NN
(�
(�N
(�N
(�N
(�N
(�N
(�N
(�N
(�N
(�N
(�N
(�N
(�N
(�NOcN
(�N
(�N
(�N
(�
(�
(�
(�N
(�
(�N
(�N
(�N
(�N
(�N
(�N
(�N
(�N
(�N
(�N
(�N
(�N
(�NOcNN
(�
(�NN
(�N
(�
(�N
(�NN
(�
(�NOc
(�
(�NOc
(�
(�N
(�N
(�NOcN
(�NN
(�
(�N
(�N
(�N
(�N
(�N
(�N
(�N
(�N
(�N
(�N
(�N
(�N
(�NOcN
(�
-�
(�
+�
(�
*�
(�
)�
(�X#
(�
)�
(�
);
(�
)

(�X#
(�
(�
(�
(�X#
(�
(�X#
(�X#
(�X#
(�X#
(�X#
(�X#
(�X#
(�X#
(�X#
(�X#
(�X#
(�X#
(�X#OcX#X#
(�
(�X#
(�X#X#
(�X#
(�
(�X#
(�X#
(�X#
(�X#X#
(�
(�X#
(�X#
(�X#
(�X#OcX#
(�X#X#
(�
(�X#
(�X#
(�X#
)X#
)X#
)X#
)X#
)X#
)X#
)X#
)X#
)X#
)	X#OcX#
)X#
)
)+
)

)X#
)
)X#
)X#
)X#
)X#
)X#
)X#
)X#
)X#
)X#
)X#
)X#
)X#
)X#OcX#X#
)
)X#
)X#X#
) X#
)!
)"X#
)#X#
)$X#
)%X#X#
)&
)'X#
)(X#
))X#
)*X#OcX#
),X#X#
)-
).X#
)/X#
)0X#
)1X#
)2X#
)3X#
)4X#
)5X#
)6X#
)7X#
)8X#
)9X#
):X#OcX#
)<
)m
)=X#
)>
)]
)?
)NX#
)@
)AX#
)BX#
)CX#
)DX#
)EX#
)FX#
)GX#
)HX#
)IX#
)JX#
)KX#
)LX#
)MX#OcX#X#
)O
)PX#
)QX#X#
)RX#
)S
)TX#
)UX#
)VX#
)WX#X#
)X
)YX#
)ZX#
)[X#
)\X#OcX#
)^X#X#
)_
)`X#
)aX#
)bX#
)cX#
)dX#
)eX#
)fX#
)gX#
)hX#
)iX#
)jX#
)kX#
)lX#OcX#
)nX#
)o
)�
)p
)X#
)q
)rX#
)sX#
)tX#
)uX#
)vX#
)wX#
)xX#
)yX#
)zX#
){X#
)|X#
)}X#
)~X#OcX#X#
)�
)�X#
)�X#X#
)�X#
)�
)�X#
)�X#
)�X#
)�X#X#
)�
)�X#
)�X#
)�X#
)�X#OcX#
)�X#X#
)�
)�X#
)�X#
)�X#
)�X#
)�X#
)�X#
)�X#
)�X#
)�X#
)�X#
)�X#
)�X#
)�X#OcX#
)�X#
)�X#
)�X#
)�
)�
)�
)�X#
)�
)�X#
)�X#
)�X#
)�X#
)�X#
)�X#
)�X#
)�X#
)�X#
)�X#
)�X#
)�X#
)�X#OcX#X#
)�
)�X#
)�X#X#
)�X#
)�
)�X#
)�X#
)�X#
)�X#X#
)�
)�X#
)�X#
)�X#
)�X#OcX#
)�X#X#
)�
)�X#
)�X#
)�X#
)�X#
)�X#
)�X#
)�X#
)�X#
)�X#
)�X#
)�X#
)�X#
)�X#OcX#
)�X#
)�
*�
)�
*9
)�
*
)�X#
)�
)�
)�
)�X#
)�
)�X#
)�X#
)�X#
)�X#
)�X#
)�X#
)�X#
)�X#
)�X#
)�X#
)�X#
)�X#
)�X#OcX#X#
)�
)�X#X#
)�
)�X#X#
)�
)�X#
)�X#X#
)�X#
)�
)�X#Oc
)�
)�
)�
)�OcOc
)�X#OcOcX#
)�X#X#
)�
)�X#
)�X#
)�X#
)�X#
)�X#
)�X#
*X#
*X#
*X#
*X#
*X#
*X#
*X#OcX#
*X#
*	
*)
*

*X#
*
*X#
*
X#
*X#
*X#
*X#
*X#
*X#
*X#
*X#
*X#
*X#
*X#
*X#OcX#X#
*
*X#X#
*
*X#X#
*
*X#
* X#X#
*!X#
*"
*#X#Oc
*$
*%
*(
*&OcOc
*'X#OcOcX#
**X#X#
*+
*,X#
*-X#
*.X#
*/X#
*0X#
*1X#
*2X#
*3X#
*4X#
*5X#
*6X#
*7X#
*8X#OcX#
*:
*l
*;X#
*<
*\
*=
*LX#
*>
*?X#
*@X#
*AX#
*BX#
*CX#
*DX#
*EX#
*FX#
*GX#
*HX#
*IX#
*JX#
*KX#OcX#X#
*M
*NX#X#
*O
*PX#X#
*Q
*RX#
*SX#X#
*TX#
*U
*VX#Oc
*W
*X
*[
*YOcOc
*ZX#OcOcX#
*]X#X#
*^
*_X#
*`X#
*aX#
*bX#
*cX#
*dX#
*eX#
*fX#
*gX#
*hX#
*iX#
*jX#
*kX#OcX#
*mX#
*n
*�
*o
*~X#
*p
*qX#
*rX#
*sX#
*tX#
*uX#
*vX#
*wX#
*xX#
*yX#
*zX#
*{X#
*|X#
*}X#OcX#X#
*
*�X#X#
*�
*�X#X#
*�
*�X#
*�X#X#
*�X#
*�
*�X#Oc
*�
*�
*�
*�OcOc
*�X#OcOcX#
*�X#X#
*�
*�X#
*�X#
*�X#
*�X#
*�X#
*�X#
*�X#
*�X#
*�X#
*�X#
*�X#
*�X#
*�X#OcX#
*�X#
*�X#
*�X#
*�
*�
*�
*�X#
*�
*�X#
*�X#
*�X#
*�X#
*�X#
*�X#
*�X#
*�X#
*�X#
*�X#
*�X#
*�X#
*�X#OcX#X#
*�
*�X#X#
*�
*�X#X#
*�
*�X#
*�X#X#
*�X#
*�
*�X#Oc
*�
*�
*�
*�OcOc
*�X#OcOcX#
*�X#X#
*�
*�X#
*�X#
*�X#
*�X#
*�X#
*�X#
*�X#
*�X#
*�X#
*�X#
*�X#
*�X#
*�X#OcX#
*�X#
*�X#
*�X#
*�
+1
*�
+
*�X#
*�
*�
*�
*�X#
*�
*�X#
*�X#
*�X#
*�X#
*�X#
*�X#
*�X#
*�X#
*�X#
*�X#
*�X#
*�X#
*�X#��X#X#
*�
*�X#X#
*�X#
*�
*�X#
*�X#
*�X#X#
*���
*�
*�X#��X#
*�X#X#
*�
*�X#
*�X#
*�X#
*�X#
*�X#
*�X#
*�X#
*�X#
*�X#
+X#
+X#
+X#
+X#��X#
+X#
+
+!
+
+X#
+
+	X#
+
X#
+X#
+X#
+
X#
+X#
+X#
+X#
+X#
+X#
+X#
+X#
+X#��X#X#
+
+X#X#
+X#
+
+X#
+X#
+X#X#
+��
+
+ X#��X#
+"X#X#
+#
+$X#
+%X#
+&X#
+'X#
+(X#
+)X#
+*X#
++X#
+,X#
+-X#
+.X#
+/X#
+0X#��X#
+2
+_
+3X#
+4
+O
+5
+DX#
+6
+7X#
+8X#
+9X#
+:X#
+;X#
+<X#
+=X#
+>X#
+?X#
+@X#
+AX#
+BX#
+CX#��X#X#
+E
+FX#X#
+GX#
+H
+IX#
+JX#
+KX#X#
+L��
+M
+NX#��X#
+PX#X#
+Q
+RX#
+SX#
+TX#
+UX#
+VX#
+WX#
+XX#
+YX#
+ZX#
+[X#
+\X#
+]X#
+^X#��X#
+`X#
+a
+|
+b
+qX#
+c
+dX#
+eX#
+fX#
+gX#
+hX#
+iX#
+jX#
+kX#
+lX#
+mX#
+nX#
+oX#
+pX#��X#X#
+r
+sX#X#
+tX#
+u
+vX#
+wX#
+xX#X#
+y��
+z
+{X#��X#
+}X#X#
+~
+X#
+�X#
+�X#
+�X#
+�X#
+�X#
+�X#
+�X#
+�X#
+�X#
+�X#
+�X#
+�X#��X#
+�
,�
+�
,#
+�N
+�N
+�
+�
+�
+�
+�N
+�
+�
+�
+�N
+�
+�N
+�N
+�N
+�N
+�N
+�N
+�N
+�N
+�N
+�N
+�N
+�N
+�N�aNN
+�
+�NN
+�
+�N
+�N
+�N
+�N
+�N
+�N
+�N
+�N
+�N�a
+��aN
+�NN
+�
+�N
+�N
+�N
+�N
+�N
+�N
+�N
+�N
+�N
+�N
+�N
+�N
+�N�aN
+�N
+�
+�
+�
+�N
+�
+�N
+�N
+�N
+�N
+�N
+�N
+�N
+�N
+�N
+�N
+�N
+�N
+�N�aNN
+�
+�NN
+�
+�N
+�N
+�N
+�N
+�N
+�N
+�N
+�N
+�N�a
+��aN
+�NN
+�
+�N
+�N
+�N
+�N
+�N
+�N
+�N
+�N
+�N
+�N
+�N
+�N
+�N�aN
+�N
+�N
+�
,
+�
,N
+�
+�N
+�N
+�N
+�N
+�N
+�N
+�N
+�N
,N
,N
,N
,N
,N�aNN
,
,NN
,
,	N
,
N
,N
,N
,
N
,N
,N
,N
,N�a
,�aN
,NN
,
,N
,N
,N
,N
,N
,N
,N
,N
,N
,N
, N
,!N
,"N�aN
,$N
,%N
,&
,�
,'
,W
,(N
,)
,G
,*
,9N
,+
,,N
,-N
,.N
,/N
,0N
,1N
,2N
,3N
,4N
,5N
,6N
,7N
,8N�pNN
,:
,;NN
,<
,=N
,>NN
,?N
,@N
,A
,BNN
,C�p
,D
,EN�p
,F�pN
,HNN
,I
,JN
,KN
,LN
,MN
,NN
,ON
,PN
,QN
,RN
,SN
,TN
,UN
,VN�pN
,XN
,Y
,w
,Z
,iN
,[
,\N
,]N
,^N
,_N
,`N
,aN
,bN
,cN
,dN
,eN
,fN
,gN
,hN�pNN
,j
,kNN
,l
,mN
,nNN
,oN
,pN
,q
,rNN
,s�p
,t
,uN�p
,v�pN
,xNN
,y
,zN
,{N
,|N
,}N
,~N
,N
,�N
,�N
,�N
,�N
,�N
,�N
,�N�pN
,�N
,�N
,�
,�
,�
,�N
,�
,�N
,�N
,�N
,�N
,�N
,�N
,�N
,�N
,�N
,�N
,�N
,�N
,�N�pNN
,�
,�NN
,�
,�N
,�NN
,�N
,�N
,�
,�NN
,��p
,�
,�N�p
,��pN
,�NN
,�
,�N
,�N
,�N
,�N
,�N
,�N
,�N
,�N
,�N
,�N
,�N
,�N
,�N�pN
,�
-Q
,�N
,�N
,�
-
,�
,�
,�N
,�
,�
,�
,�N
,�
,�N
,�N
,�N
,�N
,�N
,�N
,�N
,�N
,�N
,�N
,�N
,�N
,�NQ�NN
,�
,�N
,�NN
,�N
,�N
,�N
,�
,�NN
,�
,�N
,�N
,�NQ�
,�
,�NQ�N
,�NN
,�
,�N
,�N
,�N
,�N
,�N
,�N
,�N
,�N
,�N
,�N
,�N
,�N
,�NQ�N
,�N
,�
-
,�
-N
,�
,�N
,�N
,�N
,�N
,�N
,�N
,�N
,�N
,�N
,�N
,�N
,�N
,�NQ�NN
-
-N
-NN
-N
-N
-N
-
-NN
-	
-
N
-N
-NQ�
-

-NQ�N
-NN
-
-N
-N
-N
-N
-N
-N
-N
-N
-N
-N
-N
-N
-NQ�N
- N
-!N
-"
-A
-#
-2N
-$
-%N
-&N
-'N
-(N
-)N
-*N
-+N
-,N
--N
-.N
-/N
-0N
-1NQ�NN
-3
-4N
-5NN
-6N
-7N
-8N
-9
-:NN
-;
-<N
-=N
->NQ�
-?
-@NQ�N
-BNN
-C
-DN
-EN
-FN
-GN
-HN
-IN
-JN
-KN
-LN
-MN
-NN
-ON
-PNQ�N
-RN
-SN
-T
-�
-U
-�
-VN
-W
-u
-X
-gN
-Y
-ZN
-[N
-\N
-]N
-^N
-_N
-`N
-aN
-bN
-cN
-dN
-eN
-fN	NN
-h
-iN
-jNN
-kN
-lN
-mN
-nN
-oN
-pN
-q
-rN
-sN	
-t	N
-vNN
-w
-xN
-yN
-zN
-{N
-|N
-}N
-~N
-N
-�N
-�N
-�N
-�N
-�N	N
-�N
-�
-�
-�
-�N
-�
-�N
-�N
-�N
-�N
-�N
-�N
-�N
-�N
-�N
-�N
-�N
-�N
-�N	NN
-�
-�N
-�NN
-�N
-�N
-�N
-�N
-�N
-�N
-�
-�N
-�N	
-�	N
-�NN
-�
-�N
-�N
-�N
-�N
-�N
-�N
-�N
-�N
-�N
-�N
-�N
-�N
-�N	N
-�N
-�N
-�
-�
-�
-�N
-�
-�N
-�N
-�N
-�N
-�N
-�N
-�N
-�N
-�N
-�N
-�N
-�N
-�N	NN
-�
-�N
-�NN
-�N
-�N
-�N
-�N
-�N
-�N
-�
-�N
-�N	
-�	N
-�NN
-�
-�N
-�N
-�N
-�N
-�N
-�N
-�N
-�N
-�N
-�N
-�N
-�N
-�N	N
-�
0�
-�
/@
-�
.�
-�N
-�
.�
-�
.O
-�
.
-�N
-�
.
-�
-�N
-�
-�N
-�N
-�N
-�N
-�N
-�N
-�N
-�N
-�N
-�N
-�N
-�N
-�NNN
.
.NN
.
.N
.NN
.
.NN
.N
.N
.	
.
N
.
.
.
N
.NN
.
.N
.N
.N
.N
.N
.N
.N
.N
.N
.N
.N
.N
.NN
.N
. 
.?
.!
.0N
."
.#N
.$N
.%N
.&N
.'N
.(N
.)N
.*N
.+N
.,N
.-N
..N
./NNN
.1
.2NN
.3
.4N
.5NN
.6
.7NN
.8N
.9N
.:
.;N
.<
.=
.>N
.@NN
.A
.BN
.CN
.DN
.EN
.FN
.GN
.HN
.IN
.JN
.KN
.LN
.MN
.NNN
.P
.QN
.R
.q
.S
.bN
.T
.UN
.VN
.WN
.XN
.YN
.ZN
.[N
.\N
.]N
.^N
._N
.`N
.aNNN
.c
.dNN
.e
.fN
.gNN
.h
.iNN
.jN
.kN
.l
.mN
.n
.o
.pN
.rNN
.s
.tN
.uN
.vN
.wN
.xN
.yN
.zN
.{N
.|N
.}N
.~N
.N
.�NN
.�N
.�N
.�N
.�
.�
.�
.�N
.�
.�N
.�N
.�N
.�N
.�N
.�N
.�N
.�N
.�N
.�N
.�N
.�N
.�NNN
.�
.�NN
.�
.�N
.�NN
.�
.�NN
.�N
.�N
.�
.�N
.�
.�
.�N
.�NN
.�
.�N
.�N
.�N
.�N
.�N
.�N
.�N
.�N
.�N
.�N
.�N
.�N
.�NN
.�N
.�N
.�
/
.�
.�
.�N
.�
.�
.�NN
.�
.�N
.�N
.�
.�
.�N
.�N
.�N
.�N
.�N
.�N
.�N
.�N
.�N
.�NؿN
.�N
.�N
.�NN
.�N
.�
.�N
.�N
.�N
.�N
.�NؿN
.�NN
.�
.�N
.�N
.�N
.�N
.�N
.�N
.�N
.�N
.�N
.�N
.�N
.�N
.�NؿN
.�N
.�
/
.�NN
.�
.�N
.�N
.�
.�
.�N
.�N
.�N
.�N
.�N
.�N
.�N
.�N
.�N
.�NؿN
.�N
.�N
.�NN
.�N
.�
.�N
.�N
.�N
/N
/NؿN
/NN
/
/N
/N
/N
/N
/	N
/
N
/N
/N
/
N
/N
/N
/N
/NؿN
/N
/N
/
/0
/NN
/
/N
/N
/
/%
/N
/N
/N
/N
/N
/ N
/!N
/"N
/#N
/$NؿN
/&N
/'N
/(NN
/)N
/*
/+N
/,N
/-N
/.N
//NؿN
/1NN
/2
/3N
/4N
/5N
/6N
/7N
/8N
/9N
/:N
/;N
/<N
/=N
/>N
/?NؿN
/A�
/B�
/C
0"
/D
/�
/E
/|
/F�
/G
/l
/H
/W�
/I
/J�
/K�
/L�
/M�
/N�
/O�
/P�
/Q�
/R�
/S�
/T�
/U�
/V���
/X
/Y��
/Z
/[��
/\�
/]
/^��
/_
/`
/f
/a
/b
/c
/d
/e�
/g�
/h�
/i�
/j�
/k��
/m��
/n
/o�
/p�
/q�
/r�
/s�
/t�
/u�
/v�
/w�
/x�
/y�
/z�
/{��
/}�
/~
/�
/
/��
/�
/��
/��
/��
/��
/��
/��
/��
/��
/��
/��
/��
/��
/����
/�
/���
/�
/���
/��
/�
/���
/�
/�
/�
/�
/�
/�
/�
/��
/��
/��
/��
/��
/���
/���
/�
/��
/��
/��
/��
/��
/��
/��
/��
/��
/��
/��
/��
/���
/�
/�
/��
/�
/�
/�
/��
/�
/��
/��
/��
/��
/��
/��
/��
/��
/��
/��
/��
/��
/����
/�
/���
/�
/���
/��
/�
/���
/�
/�
/�
/�
/�
/�
/�
/��
/��
/��
/��
/��
/���
/���
/�
/��
/��
/��
/��
/��
/��
/��
/��
/��
/��
/��
/��
/���
/��
/�
0
/�
/��
/�
/��
/��
/��
/��
/��
/��
/��
/��
/��
/��
/��
/��
/����
/�
/���
0
0��
0�
0
0��
0
0
0
0
0
0	
0

0�
0
�
0�
0�
0�
0��
0��
0
0�
0�
0�
0�
0�
0�
0�
0�
0�
0�
0�
0 �
0!��
0#�
0$
0[
0%�
0&
0K
0'
06�
0(
0)�
0*�
0+�
0,�
0-�
0.�
0/�
00�
01�
02�
03�
04�
05���
07
08��
09
0:��
0;�
0<
0=��
0>
0?
0E
0@
0A
0B
0C
0D�
0F�
0G�
0H�
0I�
0J��
0L��
0M
0N�
0O�
0P�
0Q�
0R�
0S�
0T�
0U�
0V�
0W�
0X�
0Y�
0Z��
0\�
0]
0�
0^
0m�
0_
0`�
0a�
0b�
0c�
0d�
0e�
0f�
0g�
0h�
0i�
0j�
0k�
0l���
0n
0o��
0p
0q��
0r�
0s
0t��
0u
0v
0|
0w
0x
0y
0z
0{�
0}�
0~�
0�
0��
0���
0���
0�
0��
0��
0��
0��
0��
0��
0��
0��
0��
0��
0��
0��
0���
0�
1�
0�
1,
0�_�
0�_�
0�
0�
0�
0�
0�_�
0�
0�
0�
0�_�
0�
0�_�
0�_�
0�_�
0�_�
0�_�
0�_�
0�_�
0�_�
0�_�
0�_�
0�_�
0�_�
0�_�V�_�_�
0�
0�_�_�
0�
0�_�
0�_�
0�_�_�
0�
0�_�_�
0�
0�_�
0�_�V�
0�
0�_�
0�_�V�_�
0�_�_�
0�
0�_�
0�_�
0�_�
0�_�
0�_�
0�_�
0�_�
0�_�
0�_�
0�_�
0�_�
0�_�
0�_�V�_�
0�_�
0�
0�
0�
0�_�
0�
0�_�
0�_�
0�_�
0�_�
0�_�
0�_�
0�_�
0�_�
0�_�
0�_�
0�_�
0�_�
0�_�V�_�_�
0�
0�_�_�
0�
0�_�
0�_�
0�_�_�
0�
0�_�_�
0�
0�_�
0�_�V�
0�
0�_�
0�_�V�_�
0�_�_�
0�
0�_�
0�_�
0�_�
0�_�
0�_�
0�_�
0�_�
0�_�
0�_�
0�_�
0�_�
0�_�
0�_�V�_�
0�_�
0�_�
0�
1
0�
1
_�
0�
1_�
1_�
1_�
1_�
1_�
1_�
1_�
1_�
1_�
1	_�
1
_�
1_�
1_�V�_�_�
1
1_�_�
1
1_�
1_�
1_�_�
1
1_�_�
1
1_�
1_�V�
1
1_�
1_�V�_�
1_�_�
1
1_�
1 _�
1!_�
1"_�
1#_�
1$_�
1%_�
1&_�
1'_�
1(_�
1)_�
1*_�
1+_�V�_�
1-_�
1._�
1/
1�
10
1\
11_�
12
1L
13_�_�
14
15_�
16_�
17_�
18
1B
19_�
1:_�
1;_�
1<_�
1=_�
1>_�
1?_�
1@_�
1A_���_�_�
1C_�
1D
1E_�_�
1F
1G_�
1H_���
1I
1J_�
1K_���_�
1M_�_�
1N
1O_�
1P_�
1Q_�
1R_�
1S_�
1T_�
1U_�
1V_�
1W_�
1X_�
1Y_�
1Z_�
1[_���_�
1]_�
1^
1x
1__�_�
1`
1a_�
1b_�
1c_�
1d
1n
1e_�
1f_�
1g_�
1h_�
1i_�
1j_�
1k_�
1l_�
1m_���_�_�
1o_�
1p
1q_�_�
1r
1s_�
1t_���
1u
1v_�
1w_���_�
1y_�_�
1z
1{_�
1|_�
1}_�
1~_�
1_�
1�_�
1�_�
1�_�
1�_�
1�_�
1�_�
1�_�
1�_���_�
1�
1�
1�_�
1�
1�
1�_�_�
1�
1�_�
1�_�
1�_�
1�
1�
1�_�
1�_�
1�_�
1�_�
1�_�
1�_�
1�_�
1�_�
1�_���_�_�
1�_�
1�
1�_�_�
1�
1�_�
1�_���
1�
1�_�
1�_���_�
1�_�_�
1�
1�_�
1�_�
1�_�
1�_�
1�_�
1�_�
1�_�
1�_�
1�_�
1�_�
1�_�
1�_�
1�_���_�
1�_�
1�
1�
1�_�_�
1�
1�_�
1�_�
1�_�
1�
1�
1�_�
1�_�
1�_�
1�_�
1�_�
1�_�
1�_�
1�_�
1�_���_�_�
1�_�
1�
1�_�_�
1�
1�_�
1�_���
1�
1�_�
1�_���_�
1�_�_�
1�
1�_�
1�_�
1�_�
1�_�
1�_�
1�_�
1�_�
1�_�
1�_�
1�_�
1�_�
1�_�
1�_���_�_�
1�
1�_�
1�_�
1�
2h
1�
2'
1�_�
1�
2
1�
2
1�
1�
1�_�
1�_�
1�_�L
1�
1�_�L_�
1�_�
1�_�
1�_�
1�
1�
1�_�
1�_�
1�_�
1�_�
1�_�
1�_�
1�_�
1�_�
1�_�L_�_�
1�
2_�_�
2_�
2L
2
2L
2LL
2L
2_�L_�
2	
2
_�_�
2_�
2
2
_�_�
2
2_�_�
2
2_�
2_�
2LL
2
2L
2L_�L
2_�_�
2
2_�
2_�
2_�
2_�
2_�
2_�
2 _�
2!_�
2"_�
2#_�
2$_�
2%_�
2&_�L_�
2(_�
2)
2X
2*
2I
2+
21
2,_�
2-_�
2._�L
2/
20_�L_�
22_�
23_�
24_�
25
2?
26_�
27_�
28_�
29_�
2:_�
2;_�
2<_�
2=_�
2>_�L_�_�
2@
2A_�_�
2B_�
2CL
2D
2EL
2FLL
2GL
2H_�L_�
2J
2K_�_�
2L_�
2M
2N_�_�
2O
2P_�_�
2Q
2R_�
2S_�
2TLL
2U
2VL
2WL_�L
2Y_�_�
2Z
2[_�
2\_�
2]_�
2^_�
2__�
2`_�
2a_�
2b_�
2c_�
2d_�
2e_�
2f_�
2g_�L_�
2i
2�
2j_�
2k
2�
2l
2�
2m
2s
2n_�
2o_�
2p_�L
2q
2r_�L_�
2t_�
2u_�
2v_�
2w
2�
2x_�
2y_�
2z_�
2{_�
2|_�
2}_�
2~_�
2_�
2�_�L_�_�
2�
2�_�_�
2�_�
2�L
2�
2�L
2�LL
2�L
2�_�L_�
2�
2�_�_�
2�_�
2�
2�_�_�
2�
2�_�_�
2�
2�_�
2�_�
2�LL
2�
2�L
2�L_�L
2�_�_�
2�
2�_�
2�_�
2�_�
2�_�
2�_�
2�_�
2�_�
2�_�
2�_�
2�_�
2�_�
2�_�
2�_�L_�
2�
3

2�
2�
2�
2�
2�
2�
2�_�
2�_�
2�_�L
2�
2�_�L_�
2�_�
2�_�
2�_�
2�
2�
2�_�
2�_�
2�_�
2�_�
2�_�
2�_�
2�_�
2�_�
2�_�L_�_�
2�
2�_�_�
2�_�
2�L
2�
2�L
2�LL
2�L
2�_�L_�
2�
2�_�_�
2�_�
2�
2�_�_�
2�
2�_�_�
2�
2�_�
2�_�
2�LL
2�
2�L
2�L_�L
2�
2�
2�
2�
2�_�
2�_�
2�_�L
2�
2�_�L_�
2�_�
2�_�
2�_�
2�
2�
2�_�
2�_�
2�_�
2�_�
2�_�
2�_�
2�_�
2�_�
2�_�L_�_�
2�
2�_�_�
2�_�
2�L
2�
2�L
2�LL
2�L
2�_�L_�
2�
2�_�_�
2�_�
2�
3_�_�
3
3_�_�
3
3_�
3_�
3LL
3
3L
3	L_�L
3
3
3_�_�
3

3_�
3_�
3_�
3_�
3_�
3_�
3_�
3_�
3_�
3_�
3_�
3_�
3_�L_�
3_�_�
3
3_�
3_�
3 _�
3!_�
3"_�
3#_�
3$_�
3%_�
3&_�
3'_�
3(_�
3)_�
3*_�L_�
3,
W 
3-
B�
3.
;
3/
8K
30
5�
31
3�P�
32
33P�
34P�
35
3�
36
3g
37P�
38
3W
39
3HP�
3:
3;P�
3<P�
3=P�
3>P�
3?P�
3@P�
3AP�
3BP�
3CP�
3DP�
3EP�
3FP�
3GP���P�P�
3I
3JP�
3KP�P�
3LP�
3M
3NP�P�
3OP�
3P
3QP�P�
3R
3SP�
3TP�
3UP���
3V��P�
3XP�P�
3Y
3ZP�
3[P�
3\P�
3]P�
3^P�
3_P�
3`P�
3aP�
3bP�
3cP�
3dP�
3eP�
3fP���P�
3hP�
3i
3�
3j
3yP�
3k
3lP�
3mP�
3nP�
3oP�
3pP�
3qP�
3rP�
3sP�
3tP�
3uP�
3vP�
3wP�
3xP���P�P�
3z
3{P�
3|P�P�
3}P�
3~
3P�P�
3�P�
3�
3�P�P�
3�
3�P�
3�P�
3�P���
3���P�
3�P�P�
3�
3�P�
3�P�
3�P�
3�P�
3�P�
3�P�
3�P�
3�P�
3�P�
3�P�
3�P�
3�P�
3�P���P�
3�
3�
3�P�
3�
3�
3�
3�P�
3�
3�P�
3�P�
3�P�
3�P�
3�P�
3�P�
3�P�
3�P�
3�P�
3�P�
3�P�
3�P�
3�P���P�P�
3�
3�P�
3�P�P�
3�P�
3�
3�P�P�
3�P�
3�
3�P�P�
3�
3�P�
3�P�
3�P���
3���P�
3�P�P�
3�
3�P�
3�P�
3�P�
3�P�
3�P�
3�P�
3�P�
3�P�
3�P�
3�P�
3�P�
3�P�
3�P���P�
3�P�
3�
3�
3�
3�P�
3�
3�P�
3�P�
3�P�
3�P�
3�P�
3�P�
3�P�
3�P�
3�P�
3�P�
3�P�
3�P�
3�P���P�P�
3�
3�P�
3�P�P�
3�P�
3�
3�P�P�
3�P�
3�
3�P�P�
3�
3�P�
3�P�
3�P���
3���P�
3�P�P�
3�
3�P�
3�P�
3�P�
3�P�
3�P�
3�P�
3�P�
3�P�
3�P�
3�P�
3�P�
3�P�
3�P���P�
3�
4�
3�P�
3�P�
3�
4b
4
41
4P�
4
4!
4
4P�
4
4P�
4P�
4P�
4P�
4	P�
4
P�
4P�
4P�
4
P�
4P�
4P�
4P�
4P���P�P�
4
4P�
4P�
4P�
4P�P�
4
4P�
4P�
4P�
4P�
4P�
4P�
4P�
4 P���P�
4"P�P�
4#
4$P�
4%P�
4&P�
4'P�
4(P�
4)P�
4*P�
4+P�
4,P�
4-P�
4.P�
4/P�
40P���P�
42P�
43
4R
44
4CP�
45
46P�
47P�
48P�
49P�
4:P�
4;P�
4<P�
4=P�
4>P�
4?P�
4@P�
4AP�
4BP���P�P�
4D
4EP�
4FP�
4GP�
4HP�P�
4I
4JP�
4KP�
4LP�
4MP�
4NP�
4OP�
4PP�
4QP���P�
4SP�P�
4T
4UP�
4VP�
4WP�
4XP�
4YP�
4ZP�
4[P�
4\P�
4]P�
4^P�
4_P�
4`P�
4aP���P�
4c
4�
4dP�
4e
4�
4f
4uP�
4g
4hP�
4iP�
4jP�
4kP�
4lP�
4mP�
4nP�
4oP�
4pP�
4qP�
4rP�
4sP�
4tP���P�P�
4v
4wP�
4xP�
4yP�
4zP�P�
4{
4|P�
4}P�
4~P�
4P�
4�P�
4�P�
4�P�
4�P���P�
4�P�P�
4�
4�P�
4�P�
4�P�
4�P�
4�P�
4�P�
4�P�
4�P�
4�P�
4�P�
4�P�
4�P�
4�P���P�
4�P�
4�
4�
4�
4�P�
4�
4�P�
4�P�
4�P�
4�P�
4�P�
4�P�
4�P�
4�P�
4�P�
4�P�
4�P�
4�P�
4�P���P�P�
4�
4�P�
4�P�
4�P�
4�P�P�
4�
4�P�
4�P�
4�P�
4�P�
4�P�
4�P�
4�P�
4�P���P�
4�P�P�
4�
4�P�
4�P�
4�P�
4�P�
4�P�
4�P�
4�P�
4�P�
4�P�
4�P�
4�P�
4�P�
4�P���P�
4�P�
4�P�
4�
5+
4�
4�
4�P�
4�
4�
4�
4�P�
4�
4�P�
4�P�
4�P�
4�P�
4�P�
4�P�
4�P�
4�P�
4�P�
4�P�
4�P�
4�P�
4�P���P�P�
4�
4�P�
4�P�P�
4�P�
4�P�
4�
4�P�
4�P�P�
4�
4�P�
4�P�
4�P�
4�P���
4�P���
4�P�P�
4�
4�P�
4�P�
4�P�
4�P�
4�P�
4�P�
4�P�
4�P�
4�P�
4�P�
4�P�
4�P�
4�P���P�
4�P�
4�
5
4�
5P�
4�
4�P�
5P�
5P�
5P�
5P�
5P�
5P�
5P�
5P�
5P�
5	P�
5
P�
5P���P�P�
5

5P�
5P�P�
5P�
5P�
5
5P�
5P�P�
5
5P�
5P�
5P�
5P���
5P���
5P�P�
5
5P�
5P�
5 P�
5!P�
5"P�
5#P�
5$P�
5%P�
5&P�
5'P�
5(P�
5)P�
5*P���P�
5,
5]
5-P�
5.
5M
5/
5>P�
50
51P�
52P�
53P�
54P�
55P�
56P�
57P�
58P�
59P�
5:P�
5;P�
5<P�
5=P���P�P�
5?
5@P�
5AP�P�
5BP�
5CP�
5D
5EP�
5FP�P�
5G
5HP�
5IP�
5JP�
5KP���
5LP���
5NP�P�
5O
5PP�
5QP�
5RP�
5SP�
5TP�
5UP�
5VP�
5WP�
5XP�
5YP�
5ZP�
5[P�
5\P���P�
5^P�
5_
5~
5`
5oP�
5a
5bP�
5cP�
5dP�
5eP�
5fP�
5gP�
5hP�
5iP�
5jP�
5kP�
5lP�
5mP�
5nP���P�P�
5p
5qP�
5rP�P�
5sP�
5tP�
5u
5vP�
5wP�P�
5x
5yP�
5zP�
5{P�
5|P���
5}P���
5P�P�
5�
5�P�
5�P�
5�P�
5�P�
5�P�
5�P�
5�P�
5�P�
5�P�
5�P�
5�P�
5�P�
5�P���P�
5�
7
5�
6Q
5�P�
5�P�
5�
5�
5�
5�
5�P�
5�
5�
5�
5�P�
5�
5�P�
5�P�
5�P�
5�P�
5�P�
5�P�
5�P�
5�P�
5�P�
5�P�
5�P�
5�P�
5�P�#�P�P�
5�
5�P�P�
5�
5�P�P�
5�
5�P�
5�P�P�
5�
5�P�
5�P�#�
5�#�
5�#�P�
5�P�P�
5�
5�P�
5�P�
5�P�
5�P�
5�P�
5�P�
5�P�
5�P�
5�P�
5�P�
5�P�
5�P�
5�P�#�P�
5�P�
5�
5�
5�
5�P�
5�
5�P�
5�P�
5�P�
5�P�
5�P�
5�P�
5�P�
5�P�
5�P�
5�P�
5�P�
5�P�
5�P�#�P�P�
5�
5�P�P�
5�
5�P�P�
5�
5�P�
5�P�P�
5�
5�P�
5�P�#�
5�#�
5�#�P�
5�P�P�
5�
5�P�
5�P�
5�P�
5�P�
5�P�
5�P�
5�P�
5�P�
5�P�
5�P�
5�P�
5�P�
5�P�#�P�
5�
6"
5�P�
5�
6
5�
6P�
5�
5�P�
5�P�
5�P�
5�P�
5�P�
5�P�
5�P�
5�P�
6P�
6P�
6P�
6P�
6P�#�P�P�
6
6P�P�
6
6	P�P�
6

6P�
6P�P�
6

6P�
6P�#�
6#�
6#�P�
6P�P�
6
6P�
6P�
6P�
6P�
6P�
6P�
6P�
6P�
6P�
6P�
6P�
6 P�
6!P�#�P�
6#P�
6$
6A
6%
64P�
6&
6'P�
6(P�
6)P�
6*P�
6+P�
6,P�
6-P�
6.P�
6/P�
60P�
61P�
62P�
63P�#�P�P�
65
66P�P�
67
68P�P�
69
6:P�
6;P�P�
6<
6=P�
6>P�#�
6?#�
6@#�P�
6BP�P�
6C
6DP�
6EP�
6FP�
6GP�
6HP�
6IP�
6JP�
6KP�
6LP�
6MP�
6NP�
6OP�
6PP�#�P�
6RP�
6SP�
6T
6�
6U
6�
6VP�
6W
6v
6X
6gP�
6Y
6ZP�
6[P�
6\P�
6]P�
6^P�
6_P�
6`P�
6aP�
6bP�
6cP�
6dP�
6eP�
6fP�[#P�P�
6h
6iP�
6jP�
6kP�
6lP�
6mP�
6nP�P�
6oP�
6pP�
6q
6rP�
6sP�
6tP�
6uP�[#P�
6wP�P�
6x
6yP�
6zP�
6{P�
6|P�
6}P�
6~P�
6P�
6�P�
6�P�
6�P�
6�P�
6�P�
6�P�[#P�
6�P�
6�
6�
6�
6�P�
6�
6�P�
6�P�
6�P�
6�P�
6�P�
6�P�
6�P�
6�P�
6�P�
6�P�
6�P�
6�P�
6�P�[#P�P�
6�
6�P�
6�P�
6�P�
6�P�
6�P�
6�P�P�
6�P�
6�P�
6�
6�P�
6�P�
6�P�
6�P�[#P�
6�P�P�
6�
6�P�
6�P�
6�P�
6�P�
6�P�
6�P�
6�P�
6�P�
6�P�
6�P�
6�P�
6�P�
6�P�[#P�
6�
6�
6�P�
6�
6�
6�
6�P�
6�
6�P�
6�P�
6�P�
6�P�
6�P�
6�P�
6�P�
6�P�
6�P�
6�P�
6�P�
6�P�
6�P�[#P�P�
6�
6�P�
6�P�
6�P�
6�P�
6�P�
6�P�P�
6�P�
6�P�
6�
6�P�
6�P�
6�P�
6�P�[#P�
6�P�P�
6�
6�P�
6�P�
6�P�
6�P�
6�P�
6�P�
6�P�
6�P�
6�P�
6�P�
6�P�
6�P�
6�P�[#P�
6�P�
6�
7

6�
6�P�
6�
6�P�
6�P�
6�P�
6�P�
6�P�
6�P�
6�P�
6�P�
6�P�
6�P�
6�P�
6�P�
6�P�[#P�P�
6�
6�P�
6�P�
6�P�
7P�
7P�
7P�P�
7P�
7P�
7
7P�
7P�
7P�
7	P�[#P�
7P�P�
7
7
P�
7P�
7P�
7P�
7P�
7P�
7P�
7P�
7P�
7P�
7P�
7P�
7P�[#P�
7
7�
7P�
7P�
7
7�
7
7Q
7 P�
7!
7A
7"
73P�
7#
7$P�
7%P�
7&P�
7'P�
7(P�
7)
71
7*P�
7+P�
7,P�
7-P�
7.P�
7/P�
70P�]RP�P�
72]RP�P�
74
75P�P�
76P�
77
78P�P�
79
7:P�
7;P�
7<P�
7=P�]R
7>]R
7?
7@P�]RP�
7BP�P�
7C
7DP�
7EP�
7FP�
7GP�
7HP�
7IP�
7JP�
7KP�
7LP�
7MP�
7NP�
7OP�
7PP�]RP�
7RP�
7S
7s
7T
7eP�
7U
7VP�
7WP�
7XP�
7YP�
7ZP�
7[
7c
7\P�
7]P�
7^P�
7_P�
7`P�
7aP�
7bP�]RP�P�
7d]RP�P�
7f
7gP�P�
7hP�
7i
7jP�P�
7k
7lP�
7mP�
7nP�
7oP�]R
7p]R
7q
7rP�]RP�
7tP�P�
7u
7vP�
7wP�
7xP�
7yP�
7zP�
7{P�
7|P�
7}P�
7~P�
7P�
7�P�
7�P�
7�P�]RP�
7�P�
7�P�
7�
7�
7�
7�P�
7�
7�P�
7�P�
7�P�
7�P�
7�P�
7�
7�
7�P�
7�P�
7�P�
7�P�
7�P�
7�P�
7�P�]RP�P�
7�]RP�P�
7�
7�P�P�
7�P�
7�
7�P�P�
7�
7�P�
7�P�
7�P�
7�P�]R
7�]R
7�
7�P�]RP�
7�P�P�
7�
7�P�
7�P�
7�P�
7�P�
7�P�
7�P�
7�P�
7�P�
7�P�
7�P�
7�P�
7�P�
7�P�]RP�
7�P�
7�P�
7�
8
7�
7�
7�P�
7�
7�
7�
7�P�
7�
7�P�
7�P�
7�P�
7�P�
7�P�
7�P�
7�P�
7�P�
7�P�
7�P�
7�P�
7�P�
7�P�wP�P�
7�
7�P�
7�P�P�
7�
7�P�P�
7�
7�P�
7�P�
7�P�
7�P�
7�P�
7�P�
7�P�wP�
7�P�P�
7�
7�P�
7�P�
7�P�
7�P�
7�P�
7�P�
7�P�
7�P�
7�P�
7�P�
7�P�
7�P�
7�P�wP�
7�P�
7�
8

7�
7�P�
7�
7�P�
7�P�
7�P�
7�P�
7�P�
7�P�
7�P�
7�P�
7�P�
7�P�
7�P�
7�P�
7�P�wP�P�
7�
7�P�
7�P�P�
8
8P�P�
8
8P�
8P�
8P�
8P�
8P�
8P�
8	P�wP�
8P�P�
8
8
P�
8P�
8P�
8P�
8P�
8P�
8P�
8P�
8P�
8P�
8P�
8P�
8P�wP�
8P�
8P�
8
8;
8
8-P�
8
8 P�
8!P�
8"P�
8#P�
8$P�
8%P�
8&P�
8'P�
8(P�
8)P�
8*P�
8+P�
8,P�wP�P�
8.
8/P�
80P�P�
81
82P�P�
83
84P�
85P�
86P�
87P�
88P�
89P�
8:P�wP�
8<P�P�
8=
8>P�
8?P�
8@P�
8AP�
8BP�
8CP�
8DP�
8EP�
8FP�
8GP�
8HP�
8IP�
8JP�wP�
8L
9|
8M
9{
8N
8�
8ON
8PN
8Q
8�
8R
8�
8SN
8T
8r
8U
8dN
8V
8WN
8XN
8YN
8ZN
8[N
8\N
8]N
8^N
8_N
8`N
8aN
8bN
8cNZNN
8e
8fN
8gNN
8hN
8iN
8jN
8kN
8l
8mNN
8n
8oN
8pNZ
8qZN
8sNN
8t
8uN
8vN
8wN
8xN
8yN
8zN
8{N
8|N
8}N
8~N
8N
8�N
8�NZN
8�N
8�
8�
8�
8�N
8�
8�N
8�N
8�N
8�N
8�N
8�N
8�N
8�N
8�N
8�N
8�N
8�N
8�NZNN
8�
8�N
8�NN
8�N
8�N
8�N
8�N
8�
8�NN
8�
8�N
8�NZ
8�ZN
8�NN
8�
8�N
8�N
8�N
8�N
8�N
8�N
8�N
8�N
8�N
8�N
8�N
8�N
8�NZN
8�N
8�N
8�
8�
8�
8�N
8�
8�N
8�N
8�N
8�N
8�N
8�N
8�N
8�N
8�N
8�N
8�N
8�N
8�NZNN
8�
8�N
8�NN
8�N
8�N
8�N
8�N
8�
8�NN
8�
8�N
8�NZ
8�ZN
8�NN
8�
8�N
8�N
8�N
8�N
8�N
8�N
8�N
8�N
8�N
8�N
8�N
8�N
8�NZN
8�N
8�N
8�
9I
8�
9
8�N
8�
9
8�
8�N
8�
8�N
8�N
8�N
8�N
8�N
8�N
8�N
8�N
8�N
8�N
8�N
8�N
8�N@�NN
8�
8�NN
8�
8�N
8�N
8�N
9NN
9N
9N
9
9N@�
9
9N
9N@�N
9	NN
9

9N
9N
9
N
9N
9N
9N
9N
9N
9N
9N
9N
9N
9N@�N
9N
9
99
9
9*N
9
9N
9N
9N
9 N
9!N
9"N
9#N
9$N
9%N
9&N
9'N
9(N
9)N@�NN
9+
9,NN
9-
9.N
9/N
90N
91NN
92N
93N
94
95N@�
96
97N
98N@�N
9:NN
9;
9<N
9=N
9>N
9?N
9@N
9AN
9BN
9CN
9DN
9EN
9FN
9GN
9HN@�N
9JN
9KN
9L
9k
9M
9\N
9N
9ON
9PN
9QN
9RN
9SN
9TN
9UN
9VN
9WN
9XN
9YN
9ZN
9[N@�NN
9]
9^NN
9_
9`N
9aN
9bN
9cNN
9dN
9eN
9f
9gN@�
9h
9iN
9jN@�N
9lNN
9m
9nN
9oN
9pN
9qN
9rN
9sN
9tN
9uN
9vN
9wN
9xN
9yN
9zN@�N`+��Oq
9}
9~
:?
9Oq
9�Oq
9�
9�
9�
9�
9�Oq
9�
9�
9�
9�Oq
9�
9�Oq
9�Oq
9�Oq
9�Oq
9�Oq
9�Oq
9�Oq
9�Oq
9�Oq
9�Oq
9�Oq
9�Oq
9�Oq��OqOq
9�
9�Oq
9�OqOq
9�Oq
9�Oq
9�
9�OqOq
9�Oq
9�
9�Oq
9�Oq
9�Oq��Oq
9�OqOq
9�
9�Oq
9�Oq
9�Oq
9�Oq
9�Oq
9�Oq
9�Oq
9�Oq
9�Oq
9�Oq
9�Oq
9�Oq
9�Oq��Oq
9�Oq
9�
9�
9�
9�Oq
9�
9�Oq
9�Oq
9�Oq
9�Oq
9�Oq
9�Oq
9�Oq
9�Oq
9�Oq
9�Oq
9�Oq
9�Oq
9�Oq��OqOq
9�
9�Oq
9�OqOq
9�Oq
9�Oq
9�
9�OqOq
9�Oq
9�
9�Oq
9�Oq
9�Oq��Oq
9�OqOq
9�
9�Oq
9�Oq
9�Oq
9�Oq
9�Oq
9�Oq
9�Oq
9�Oq
9�Oq
9�Oq
9�Oq
9�Oq
9�Oq��Oq
9�
:
9�Oq
9�
:
9�
9�Oq
9�
9�Oq
9�Oq
9�Oq
9�Oq
9�Oq
9�Oq
9�Oq
9�Oq
9�Oq
9�Oq
9�Oq
9�Oq
9�Oq��OqOq
9�
9�Oq
9�OqOq
9�Oq
9�Oq
9�
9�OqOq
9�Oq
9�
9�Oq
9�Oq
9�Oq��Oq
:OqOq
:
:Oq
:Oq
:Oq
:Oq
:Oq
:Oq
:	Oq
:
Oq
:Oq
:Oq
:
Oq
:Oq
:Oq��Oq
:Oq
:
:/
:
:"Oq
:
:Oq
:Oq
:Oq
:Oq
:Oq
:Oq
:Oq
:Oq
:Oq
:Oq
:Oq
: Oq
:!Oq��OqOq
:#
:$Oq
:%OqOq
:&Oq
:'Oq
:(
:)OqOq
:*Oq
:+
:,Oq
:-Oq
:.Oq��Oq
:0OqOq
:1
:2Oq
:3Oq
:4Oq
:5Oq
:6Oq
:7Oq
:8Oq
:9Oq
::Oq
:;Oq
:<Oq
:=Oq
:>Oq��Oq
:@Oq
:AOq
:B
:�
:C
:�
:D
:t
:E
:d
:F
:UOq
:G
:HOq
:IOq
:JOq
:KOq
:LOq
:MOq
:NOq
:OOq
:POq
:QOq
:ROq
:SOq
:TOq��OqOq
:V
:WOq
:XOq
:YOqOq
:Z
:[OqOq
:\
:]Oq
:^Oq
:_Oq
:`Oq
:aOq
:bOq
:cOq��Oq
:eOqOq
:f
:gOq
:hOq
:iOq
:jOq
:kOq
:lOq
:mOq
:nOq
:oOq
:pOq
:qOq
:rOq
:sOq��Oq
:u
:�
:v
:�Oq
:w
:xOq
:yOq
:zOq
:{Oq
:|Oq
:}Oq
:~Oq
:Oq
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq��OqOq
:�
:�Oq
:�Oq
:�OqOq
:�
:�OqOq
:�
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq��Oq
:�OqOq
:�
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq��Oq
:�Oq
:�
:�
:�
:�Oq
:�
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq��OqOq
:�
:�Oq
:�Oq
:�OqOq
:�
:�OqOq
:�
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq��Oq
:�OqOq
:�
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq��Oq
:�Oq
:�Oq
:�
:�
:�
:�Oq
:�
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq��OqOq
:�
:�Oq
:�Oq
:�OqOq
:�
:�OqOq
:�
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq��Oq
:�OqOq
:�
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq
:�Oq
;Oq
;Oq
;Oq
;Oq
;Oq
;Oq
;Oq��Oq
;
>
;	
<-
;

;�
;Q�
;Q�
;
Q�
;
;o
;
;?
;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�
;0Q�Q�
;1
;2Q�
;3Q�
;4Q�
;5Q�
;6Q�
;7Q�
;8Q�
;9Q�
;:Q�
;;Q�
;<Q�
;=Q�
;>Q���Q�
;@Q�
;A
;_
;B
;QQ�
;C
;DQ�
;EQ�
;FQ�
;GQ�
;HQ�
;IQ�
;JQ�
;KQ�
;LQ�
;MQ�
;NQ�
;OQ�
;PQ���Q�Q�
;R
;SQ�
;TQ�Q�
;U
;VQ�Q�
;W
;XQ�Q�
;YQ�
;ZQ�
;[
;\Q�
;]Q�
;^Q���Q�
;`Q�Q�
;a
;bQ�
;cQ�
;dQ�
;eQ�
;fQ�
;gQ�
;hQ�
;iQ�
;jQ�
;kQ�
;lQ�
;mQ�
;nQ���Q�
;pQ�
;qQ�
;r
;�
;s
;�Q�
;t
;uQ�
;vQ�
;wQ�
;xQ�
;yQ�
;zQ�
;{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�
;�Q���Q�Q�
;�
;�Q�
;�Q�
;�
<

;�
;�
;�
;�
;�
;�
;�Q�Q�
;�
;�Q�
;�Q�
;�Q�
;�Q�
;�Q�
;�Q�
;�Q�
;�Q�
;�Q�
;�Q�
;�Q�
;�Q�
;�Q�N+Q�
;�Q�Q�
;�
;�Q�
;�Q�
;�Q�
;�Q�
;�Q�
;�Q�
;�Q�
;�Q�
;�Q�
;�Q�
;�Q�
;�Q�
;�Q�N+Q�
;�
;�
;�Q�Q�
;�
;�Q�
;�Q�
;�Q�
;�Q�
;�Q�
;�Q�
;�Q�
;�Q�
;�Q�
;�Q�
;�Q�
;�Q�
;�Q�N+Q�
;�Q�Q�
;�
;�Q�
;�Q�
;�Q�
;�Q�
;�Q�
;�Q�
;�Q�
;�Q�
;�Q�
;�Q�
;�Q�
;�Q�
;�Q�N+Q�
;�Q�
;�
;�
;�Q�Q�
;�
;�Q�
;�Q�
;�Q�
;�Q�
;�Q�
;�Q�
;�Q�
;�Q�
;�Q�
;�Q�
;�Q�
;�Q�
;�Q�N+Q�
;�Q�Q�
;�
;�Q�
;�Q�
;�Q�
<Q�
<Q�
<Q�
<Q�
<Q�
<Q�
<Q�
<Q�
<Q�
<	Q�N+Q�
<Q�
<Q�
<

<
<Q�Q�
<
<Q�
<Q�
<Q�
<Q�
<Q�
<Q�
<Q�
<Q�
<Q�
<Q�
<Q�
<Q�
<Q�N+Q�
<Q�Q�
<
< Q�
<!Q�
<"Q�
<#Q�
<$Q�
<%Q�
<&Q�
<'Q�
<(Q�
<)Q�
<*Q�
<+Q�
<,Q�N+Q�
<.
<�N+
</
<0N
<1N
<2
<�
<3
<`
<4N
<5
<P
<6
<EN
<7
<8N
<9N
<:N
<;N
<<N
<=N
<>N
<?N
<@N
<AN
<BN
<CN
<DNN+NN
<F
<GNN
<H
<IN
<JNN
<KN
<L
<MN
<NN
<ONN+N
<QNN
<R
<SN
<TN
<UN
<VN
<WN
<XN
<YN
<ZN
<[N
<\N
<]N
<^N
<_NN+N
<aN
<b
<}
<c
<rN
<d
<eN
<fN
<gN
<hN
<iN
<jN
<kN
<lN
<mN
<nN
<oN
<pN
<qNN+NN
<s
<tNN
<u
<vN
<wNN
<xN
<y
<zN
<{N
<|NN+N
<~NN
<
<�N
<�N
<�N
<�N
<�N
<�N
<�N
<�N
<�N
<�N
<�N
<�N
<�NN+N
<�N
<�N
<�
<�
<�
<�N
<�
<�N
<�N
<�N
<�N
<�N
<�N
<�N
<�N
<�N
<�N
<�N
<�N
<�NN+NN
<�
<�NN
<�
<�N
<�NN
<�N
<�
<�N
<�N
<�NN+N
<�NN
<�
<�N
<�N
<�N
<�N
<�N
<�N
<�N
<�N
<�N
<�N
<�N
<�N
<�NN+N
<�
=K
<�N
<�N
<�
=
<�
<�
<�N
<�
<�
<�
<�N
<�
<�N
<�N
<�N
<�N
<�N
<�N
<�N
<�N
<�N
<�N
<�N
<�N
<�N�iNN
<�
<�NN
<�
<�N
<�N
<�N
<�NN
<�
<�N
<�N
<�N�iN
<�NN
<�
<�N
<�N
<�N
<�N
<�N
<�N
<�N
<�N
<�N
<�N
<�N
<�N
<�N�iN
<�N
<�
=
<�
=N
<�
<�N
<�N
<�N
<�N
<�N
<�N
<�N
<�N
<�N
<�N
<�N
<�N
<�N�iNN
=
=NN
=
=N
=N
=N
=NN
=
=	N
=
N
=N�iN
=
NN
=
=N
=N
=N
=N
=N
=N
=N
=N
=N
=N
=N
=N
=N�iN
=N
=N
=
=;
= 
=/N
=!
="N
=#N
=$N
=%N
=&N
='N
=(N
=)N
=*N
=+N
=,N
=-N
=.N�iNN
=0
=1NN
=2
=3N
=4N
=5N
=6NN
=7
=8N
=9N
=:N�iN
=<NN
==
=>N
=?N
=@N
=AN
=BN
=CN
=DN
=EN
=FN
=GN
=HN
=IN
=JN�iN
=LN
=MN
=N
=�
=O
=�
=P
=�
=Q
=p
=R
=aN
=S
=TN
=UN
=VN
=WN
=XN
=YN
=ZN
=[N
=\N
=]N
=^N
=_N
=`N��NN
=b
=cN
=dN
=eNN
=fN
=g
=hNN
=iN
=j
=kN
=lN
=mN
=nN
=oN��N
=qNN
=r
=sN
=tN
=uN
=vN
=wN
=xN
=yN
=zN
={N
=|N
=}N
=~N
=N��N
=�
=�
=�
=�N
=�
=�N
=�N
=�N
=�N
=�N
=�N
=�N
=�N
=�N
=�N
=�N
=�N
=�N��NN
=�
=�N
=�N
=�NN
=�N
=�
=�NN
=�N
=�
=�N
=�N
=�N
=�N
=�N��N
=�NN
=�
=�N
=�N
=�N
=�N
=�N
=�N
=�N
=�N
=�N
=�N
=�N
=�N
=�N��N
=�N
=�
=�
=�
=�N
=�
=�N
=�N
=�N
=�N
=�N
=�N
=�N
=�N
=�N
=�N
=�N
=�N
=�N��NN
=�
=�N
=�N
=�NN
=�N
=�
=�NN
=�N
=�
=�N
=�N
=�N
=�N
=�N��N
=�NN
=�
=�N
=�N
=�N
=�N
=�N
=�N
=�N
=�N
=�N
=�N
=�N
=�N
=�N��N
=�N
=�N
=�
>
=�
=�N
=�
=�N
=�N
=�N
=�N
=�N
=�N
=�N
=�N
=�N
=�N
=�N
=�N
=�N��NN
=�
=�N
=�N
=�NN
=�N
=�
=�NN
=�N
=�
=�N
=�N
>N
>N
>N��N
>NN
>
>N
>N
>N
>	N
>
N
>N
>N
>
N
>N
>N
>N
>N
>N��N
>
@�
>
?v
>
>�
>)i
>)i
>
>�
>
>�
>
>N
>
>>
>
>,)i
>
>)i
> )i
>!)i
>")i
>#)i
>$)i
>%)i
>&)i
>')i
>()i
>))i
>*)i
>+)i~7)i)i
>-
>.)i)i
>/
>0)i
>1)i
>2)i)i
>3
>4)i
>5)i)i
>6
>7)i
>8
>;~7
>9
>:~7)i~7
><)i
>=)i~7)i
>?)i)i
>@
>A)i
>B)i
>C)i
>D)i
>E)i
>F)i
>G)i
>H)i
>I)i
>J)i
>K)i
>L)i
>M)i~7)i
>O
>q
>P
>_)i
>Q
>R)i
>S)i
>T)i
>U)i
>V)i
>W)i
>X)i
>Y)i
>Z)i
>[)i
>\)i
>])i
>^)i~7)i)i
>`
>a)i)i
>b
>c)i
>d)i
>e)i)i
>f
>g)i
>h)i)i
>i
>j)i
>k
>n~7
>l
>m~7)i~7
>o)i
>p)i~7)i
>r)i)i
>s
>t)i
>u)i
>v)i
>w)i
>x)i
>y)i
>z)i
>{)i
>|)i
>})i
>~)i
>)i
>�)i~7)i
>�)i
>�
>�
>�
>�)i
>�
>�)i
>�)i
>�)i
>�)i
>�)i
>�)i
>�)i
>�)i
>�)i
>�)i
>�)i
>�)i
>�)i~7)i)i
>�
>�)i)i
>�
>�)i
>�)i
>�)i)i
>�
>�)i
>�)i)i
>�
>�)i
>�
>�~7
>�
>�~7)i~7
>�)i
>�)i~7)i
>�)i)i
>�
>�)i
>�)i
>�)i
>�)i
>�)i
>�)i
>�)i
>�)i
>�)i
>�)i
>�)i
>�)i
>�)i~7)i
>�)i
>�)i
>�
>�
>�
>�)i
>�
>�)i
>�)i
>�)i
>�)i
>�)i
>�)i
>�)i
>�)i
>�)i
>�)i
>�)i
>�)i
>�)i~7)i)i
>�
>�)i)i
>�
>�)i
>�)i
>�)i)i
>�
>�)i
>�)i)i
>�
>�)i
>�
>�~7
>�
>�~7)i~7
>�)i
>�)i~7)i
>�)i)i
>�
>�)i
>�)i
>�)i
>�)i
>�)i
>�)i
>�)i
>�)i
>�)i
>�)i
>�)i
>�)i
>�)i~7)i
>�)i
>�)i
>�
?S
>�
?1
>�
?
>�
?
>�)i)i
>�
>�)i
>�)i
>�)i
>�)i
>�)i
>�)i
>�)i
>�)i
>�)i
>�)i
>�)i
>�)i
>�)i~7)i
?)i)i
?
?)i
?)i
?)i
?)i
?)i
?)i
?	)i
?
)i
?)i
?)i
?
)i
?)i
?)i~7)i
?
?!
?)i)i
?
?)i
?)i
?)i
?)i
?)i
?)i
?)i
?)i
?)i
?)i
?)i
?)i
? )i~7)i
?")i)i
?#
?$)i
?%)i
?&)i
?')i
?()i
?))i
?*)i
?+)i
?,)i
?-)i
?.)i
?/)i
?0)i~7)i
?2)i
?3
?C
?4)i)i
?5
?6)i
?7)i
?8)i
?9)i
?:)i
?;)i
?<)i
?=)i
?>)i
??)i
?@)i
?A)i
?B)i~7)i
?D)i)i
?E
?F)i
?G)i
?H)i
?I)i
?J)i
?K)i
?L)i
?M)i
?N)i
?O)i
?P)i
?Q)i
?R)i~7)i
?T)i
?U)i
?V
?f
?W)i)i
?X
?Y)i
?Z)i
?[)i
?\)i
?])i
?^)i
?_)i
?`)i
?a)i
?b)i
?c)i
?d)i
?e)i~7)i
?g)i)i
?h
?i)i
?j)i
?k)i
?l)i
?m)i
?n)i
?o)i
?p)i
?q)i
?r)i
?s)i
?t)i
?u)i~7)i
?w
@
?x)i
?y)i
?z
?�
?{)i
?|)i
?}
?�
?~)i)i
?
?�)i
?�)i
?�
?�
?�)i
?�)i
?�)i
?�)i
?�)i
?�)i
?�)i
?�)i
?�)i
?�)i��)i)i
?�)i
?�)i
?�
?�)i)i
?�
?�)i
?�)i
?�)i
?�)i��
?���)i
?�)i)i
?�
?�)i
?�)i
?�)i
?�)i
?�)i
?�)i
?�)i
?�)i
?�)i
?�)i
?�)i
?�)i
?�)i��)i
?�
?�
?�)i
?�
?�
?�)i)i
?�
?�)i
?�)i
?�
?�
?�)i
?�)i
?�)i
?�)i
?�)i
?�)i
?�)i
?�)i
?�)i
?�)i��)i)i
?�)i
?�)i
?�
?�)i)i
?�
?�)i
?�)i
?�)i
?�)i��
?���)i
?�)i)i
?�
?�)i
?�)i
?�)i
?�)i
?�)i
?�)i
?�)i
?�)i
?�)i
?�)i
?�)i
?�)i
?�)i��)i
?�)i
?�
?�
?�)i)i
?�
?�)i
?�)i
?�
?�
?�)i
?�)i
?�)i
?�)i
?�)i
?�)i
?�)i
?�)i
?�)i
?�)i��)i)i
?�)i
?�)i
?�
?�)i)i
?�
?�)i
?�)i
?�)i
?�)i��
?���)i
?�)i)i
?�
?�)i
?�)i
?�)i
?�)i
?�)i
?�)i
?�)i
?�)i
?�)i
?�)i
@)i
@)i
@)i��)i
@)i
@
@�
@
@4
@)i
@)i
@	
@$
@
)i)i
@
@)i
@
)i
@
@
@)i
@)i
@)i
@)i
@)i
@)i
@)i
@)i
@)i
@)i�)i)i
@)i
@)i
@
@)i
@)i
@)i
@ )i
@!)i
@")i
@#)i�)i
@%)i)i
@&
@')i
@()i
@))i
@*)i
@+)i
@,)i
@-)i
@.)i
@/)i
@0)i
@1)i
@2)i
@3)i�)i
@5
@b
@6)i
@7
@R
@8)i)i
@9
@:)i
@;)i
@<
@G
@=)i
@>)i
@?)i
@@)i
@A)i
@B)i
@C)i
@D)i
@E)i
@F)i�)i)i
@H)i
@I)i
@J
@K)i
@L)i
@M)i
@N)i
@O)i
@P)i
@Q)i�)i
@S)i)i
@T
@U)i
@V)i
@W)i
@X)i
@Y)i
@Z)i
@[)i
@\)i
@])i
@^)i
@_)i
@`)i
@a)i�)i
@c)i
@d
@
@e)i)i
@f
@g)i
@h)i
@i
@t
@j)i
@k)i
@l)i
@m)i
@n)i
@o)i
@p)i
@q)i
@r)i
@s)i�)i)i
@u)i
@v)i
@w
@x)i
@y)i
@z)i
@{)i
@|)i
@})i
@~)i�)i
@�)i)i
@�
@�)i
@�)i
@�)i
@�)i
@�)i
@�)i
@�)i
@�)i
@�)i
@�)i
@�)i
@�)i
@�)i�)i
@�)i
@�)i
@�)i
@�
@�
@�)i)i
@�
@�)i
@�)i
@�
@�
@�)i
@�)i
@�)i
@�)i
@�)i
@�)i
@�)i
@�)i
@�)i
@�)i�)i)i
@�)i
@�)i
@�
@�)i
@�)i
@�)i
@�)i
@�)i
@�)i
@�)i�)i
@�)i)i
@�
@�)i
@�)i
@�)i
@�)i
@�)i
@�)i
@�)i
@�)i
@�)i
@�)i
@�)i
@�)i
@�)i�)i
@�
B
@�
Ax
@�)i
@�)i
@�
AJ
@�
A
@�
@�
@�
@�
@�)i)i
@�
@�)i
@�)i
@�
@�
@�)i
@�)i
@�)i
@�)i
@�)i
@�)i
@�)i
@�)i
@�)i
@�)i+')i)i
@�)i
@�
@�)i)i
@�)i
@�+'
@�+'
@�
@�)i
@�)i+'
@�+')i
@�)i)i
@�
@�)i
@�)i
@�)i
@�)i
@�)i
@�)i
@�)i
@�)i
@�)i
@�)i
@�)i
@�)i
@�)i+')i
@�
A

@�)i)i
@�
@�)i
@�)i
@�
A
@�)i
@�)i
@�)i
@�)i
@�)i
@�)i
@�)i
@�)i
A)i
A)i+')i)i
A)i
A
A)i)i
A)i
A+'
A+'
A	
A
)i
A)i+'
A+')i
A)i)i
A
A)i
A)i
A)i
A)i
A)i
A)i
A)i
A)i
A)i
A)i
A)i
A)i
A)i+')i
A)i
A
A:
A )i)i
A!
A")i
A#)i
A$
A/
A%)i
A&)i
A')i
A()i
A))i
A*)i
A+)i
A,)i
A-)i
A.)i+')i)i
A0)i
A1
A2)i)i
A3)i
A4+'
A5+'
A6
A7)i
A8)i+'
A9+')i
A;)i)i
A<
A=)i
A>)i
A?)i
A@)i
AA)i
AB)i
AC)i
AD)i
AE)i
AF)i
AG)i
AH)i
AI)i+')i)i
AK
AL)i
AM
Ah
AN)i)i
AO
AP)i
AQ)i
AR
A]
AS)i
AT)i
AU)i
AV)i
AW)i
AX)i
AY)i
AZ)i
A[)i
A\)i+')i)i
A^)i
A_
A`)i)i
Aa)i
Ab+'
Ac+'
Ad
Ae)i
Af)i+'
Ag+')i
Ai)i)i
Aj
Ak)i
Al)i
Am)i
An)i
Ao)i
Ap)i
Aq)i
Ar)i
As)i
At)i
Au)i
Av)i
Aw)i+')i
Ay)i
Az)i
A{
A�
A|
A�
A})i
A~
A�
A
A�)i
A�
A�)i
A�)i
A�)i
A�)i
A�)i
A�)i
A�)i
A�)i
A�)i
A�)i
A�)i
A�)i
A�)i)i)i
A�
A�)i
A�)i)i
A�
A�)i
A�)i)i
A�
A�)i
A�)i)i
A�
A�)i
A�)i
A�)i
A�)i)i
A�)i)i
A�
A�)i
A�)i
A�)i
A�)i
A�)i
A�)i
A�)i
A�)i
A�)i
A�)i
A�)i
A�)i
A�)i)i
A�)i
A�
A�
A�
A�)i
A�
A�)i
A�)i
A�)i
A�)i
A�)i
A�)i
A�)i
A�)i
A�)i
A�)i
A�)i
A�)i
A�)i)i)i
A�
A�)i
A�)i)i
A�
A�)i
A�)i)i
A�
A�)i
A�)i)i
A�
A�)i
A�)i
A�)i
A�)i)i
A�)i)i
A�
A�)i
A�)i
A�)i
A�)i
A�)i
A�)i
A�)i
A�)i
A�)i
A�)i
A�)i
A�)i
A�)i)i)i
A�
A�)i
A�
B
A�
A�)i
A�
A�)i
A�)i
A�)i
A�)i
A�)i
A�)i
A�)i
A�)i
A�)i
A�)i
A�)i
A�)i
A�)i)i)i
A�
A�)i
A�)i)i
A�
A�)i
A�)i)i
A�
A�)i
A�)i)i
A�
A�)i
A�)i
A�)i
A�)i)i
B)i)i
B
B)i
B)i
B)i
B)i
B)i
B)i
B	)i
B
)i
B)i
B)i
B
)i
B)i
B)i)i
B)i
B)i
B)i
B
Bw
B
BF
B)i
B
B6
B
B')i
B
B)i
B)i
B)i
B)i
B)i
B)i
B )i
B!)i
B")i
B#)i
B$)i
B%)i
B&)i)i)i
B(
B))i
B*)i
B+)i)i
B,)i
B-)i
B.)i
B/
B0)i)i
B1
B2)i
B3)i
B4)i
B5)i)i
B7)i)i
B8
B9)i
B:)i
B;)i
B<)i
B=)i
B>)i
B?)i
B@)i
BA)i
BB)i
BC)i
BD)i
BE)i)i
BG)i
BH
Bg
BI
BX)i
BJ
BK)i
BL)i
BM)i
BN)i
BO)i
BP)i
BQ)i
BR)i
BS)i
BT)i
BU)i
BV)i
BW)i)i)i
BY
BZ)i
B[)i
B\)i)i
B])i
B^)i
B_)i
B`
Ba)i)i
Bb
Bc)i
Bd)i
Be)i
Bf)i)i
Bh)i)i
Bi
Bj)i
Bk)i
Bl)i
Bm)i
Bn)i
Bo)i
Bp)i
Bq)i
Br)i
Bs)i
Bt)i
Bu)i
Bv)i)i)i
Bx
By)i
Bz
B�
B{
B�)i
B|
B})i
B~)i
B)i
B�)i
B�)i
B�)i
B�)i
B�)i
B�)i
B�)i
B�)i
B�)i
B�)i)i)i
B�
B�)i
B�)i
B�)i)i
B�)i
B�)i
B�)i
B�
B�)i)i
B�
B�)i
B�)i
B�)i
B�)i)i
B�)i)i
B�
B�)i
B�)i
B�)i
B�)i
B�)i
B�)i
B�)i
B�)i
B�)i
B�)i
B�)i
B�)i
B�)i)i
B�
MQ
B�
H�
B�
E�
B�
DQ
B�
C�
B�N
B�
CZ
B�
C
B�N
B�
B�
B�
B�
B�NN
B�
B�N
B�N
B�
B�
B�N
B�N
B�N
B�N
B�N
B�N
B�N
B�N
B�N
B�N�MN
B�NN
B�
B�NN
B�N
B�
B�N
B�N�MN
B�NN
B�
B�N
B�N
B�N
B�N
B�N
B�N
B�N
B�N
B�N
B�N
B�N
B�N
B�N�MN
B�
B�
B�NN
B�
B�N
B�N
B�
B�
B�N
B�N
B�N
B�N
B�N
B�N
B�N
B�N
B�N
B�N�MN
B�NN
B�
B�NN
B�N
B�
B�N
B�N�MN
B�NN
B�
B�N
B�N
B�N
B�N
B�N
B�N
B�N
B�N
CN
CN
CN
CN
CN�MN
C
C0
CN
C
C 
C	NN
C

CN
CN
C

C
CN
CN
CN
CN
CN
CN
CN
CN
CN
CN�MN
CNN
C
CNN
CN
C
CN
CN�MN
C!NN
C"
C#N
C$N
C%N
C&N
C'N
C(N
C)N
C*N
C+N
C,N
C-N
C.N
C/N�MN
C1N
C2
CJ
C3NN
C4
C5N
C6N
C7
CB
C8N
C9N
C:N
C;N
C<N
C=N
C>N
C?N
C@N
CAN�MN
CCNN
CD
CENN
CFN
CG
CHN
CIN�MN
CKNN
CL
CMN
CNN
CON
CPN
CQN
CRN
CSN
CTN
CUN
CVN
CWN
CXN
CYN�MN
C[N
C\N
C]N
C^
Cv
C_NN
C`
CaN
CbN
Cc
Cn
CdN
CeN
CfN
CgN
ChN
CiN
CjN
CkN
ClN
CmN�MN
CoNN
Cp
CqNN
CrN
Cs
CtN
CuN�MN
CwNN
Cx
CyN
CzN
C{N
C|N
C}N
C~N
CN
C�N
C�N
C�N
C�N
C�N
C�N�MN
C�N
C�
D
C�
C�
C�N
C�N
C�
C�
C�
C�N
C�
C�N
C�N
C�N
C�N
C�N
C�N
C�N
C�N
C�N
C�N
C�N
C�N
C�N'NN
C�
C�N
C�N
C�NN
C�
C�NN
C�N
C�
C�N
C�N
C�N
C�N
C�N
C�N'N
C�NN
C�
C�N
C�N
C�N
C�N
C�N
C�N
C�N
C�N
C�N
C�N
C�N
C�N
C�N'N
C�
C�
C�N
C�
C�
C�
C�N
C�
C�N
C�N
C�N
C�N
C�N
C�N
C�N
C�N
C�N
C�N
C�N
C�N
C�N'NN
C�
C�N
C�N
C�NN
C�
C�NN
C�N
C�
C�N
C�N
C�N
C�N
C�N
C�N'N
C�NN
C�
C�N
C�N
C�N
C�N
C�N
C�N
C�N
C�N
C�N
C�N
C�N
C�N
C�N'N
C�N
C�
D
C�
C�N
C�
C�N
C�N
C�N
C�N
C�N
C�N
C�N
C�N
C�N
C�N
C�N
C�N
C�N'NN
D
DN
DN
DNN
D
DNN
DN
D
DN
D	N
D
N
DN
DN
D
N'N
DNN
D
DN
DN
DN
DN
DN
DN
DN
DN
DN
DN
DN
DN
DN'N
DN
D N
D!N
D"
DA
D#
D2N
D$
D%N
D&N
D'N
D(N
D)N
D*N
D+N
D,N
D-N
D.N
D/N
D0N
D1N'NN
D3
D4N
D5N
D6NN
D7
D8NN
D9N
D:
D;N
D<N
D=N
D>N
D?N
D@N'N
DBNN
DC
DDN
DEN
DFN
DGN
DHN
DIN
DJN
DKN
DLN
DMN
DNN
DON
DPN'N
DR
E
DSN
DT
D�
DU
D�
DVN
DWN
DX
Dw
DY
DhN
DZ
D[N
D\N
D]N
D^N
D_N
D`N
DaN
DbN
DcN
DdN
DeN
DfN
DgN6NN
Di
DjN
DkN
DlNN
Dm
DnN
DoN
DpNN
Dq
DrN
DsN
DtN
DuN
DvN6N
DxNN
Dy
DzN
D{N
D|N
D}N
D~N
DN
D�N
D�N
D�N
D�N
D�N
D�N
D�N6N
D�
D�
D�N
D�
D�
D�
D�N
D�
D�N
D�N
D�N
D�N
D�N
D�N
D�N
D�N
D�N
D�N
D�N
D�N
D�N6NN
D�
D�N
D�N
D�NN
D�
D�N
D�N
D�NN
D�
D�N
D�N
D�N
D�N
D�N6N
D�NN
D�
D�N
D�N
D�N
D�N
D�N
D�N
D�N
D�N
D�N
D�N
D�N
D�N
D�N6N
D�N
D�
D�
D�
D�N
D�
D�N
D�N
D�N
D�N
D�N
D�N
D�N
D�N
D�N
D�N
D�N
D�N
D�N6NN
D�
D�N
D�N
D�NN
D�
D�N
D�N
D�NN
D�
D�N
D�N
D�N
D�N
D�N6N
D�NN
D�
D�N
D�N
D�N
D�N
D�N
D�N
D�N
D�N
D�N
D�N
D�N
D�N
D�N6N
D�N
D�N
D�N
D�
E

D�
D�N
D�
D�N
D�N
D�N
D�N
D�N
D�N
D�N
D�N
D�N
D�N
D�N
D�N
D�N6NN
D�
EN
EN
ENN
E
EN
EN
ENN
E
EN
E	N
E
N
EN
EN6N
ENN
E
EN
EN
EN
EN
EN
EN
EN
EN
EN
EN
EN
EN
EN6N
EN
E
E�
E 
EQ
E!N
E"N
E#
EA
E$
E3N
E%
E&N
E'N
E(N
E)N
E*N
E+N
E,N
E-N
E.N
E/N
E0N
E1N
E2NENN
E4
E5N
E6NN
E7
E8NN
E9N
E:
E;N
E<NN
E=
E>N
E?N
E@NEN
EBNN
EC
EDN
EEN
EFN
EGN
EHN
EIN
EJN
EKN
ELN
EMN
ENN
EON
EPNEN
ER
E�
ESN
ET
Er
EU
EdN
EV
EWN
EXN
EYN
EZN
E[N
E\N
E]N
E^N
E_N
E`N
EaN
EbN
EcNENN
Ee
EfN
EgNN
Eh
EiNN
EjN
Ek
ElN
EmNN
En
EoN
EpN
EqNEN
EsNN
Et
EuN
EvN
EwN
ExN
EyN
EzN
E{N
E|N
E}N
E~N
EN
E�N
E�NEN
E�N
E�
E�
E�
E�N
E�
E�N
E�N
E�N
E�N
E�N
E�N
E�N
E�N
E�N
E�N
E�N
E�N
E�NENN
E�
E�N
E�NN
E�
E�NN
E�N
E�
E�N
E�NN
E�
E�N
E�N
E�NEN
E�NN
E�
E�N
E�N
E�N
E�N
E�N
E�N
E�N
E�N
E�N
E�N
E�N
E�N
E�NEN
E�N
E�N
E�N
E�
E�
E�
E�N
E�
E�N
E�N
E�N
E�N
E�N
E�N
E�N
E�N
E�N
E�N
E�N
E�N
E�NENN
E�
E�N
E�NN
E�
E�NN
E�N
E�
E�N
E�NN
E�
E�N
E�N
E�NEN
E�NN
E�
E�N
E�N
E�N
E�N
E�N
E�N
E�N
E�N
E�N
E�N
E�N
E�N
E�NEN
E�
G�
E�
F�
E�N
E�
F~
E�
F
E�N
E�N
E�
F
E�
E�N
E�
E�N
E�N
E�N
E�N
E�N
E�N
E�N
E�N
E�N
E�N
E�N
E�N
E�NTNN
E�
E�N
E�N
FN
FNN
FN
F
FNN
FN
F
FN
FN
F	N
F
NTN
FNN
F

FN
FN
FN
FN
FN
FN
FN
FN
FN
FN
FN
FN
FNTN
F
FM
FN
F
F=
F
F.N
F 
F!N
F"N
F#N
F$N
F%N
F&N
F'N
F(N
F)N
F*N
F+N
F,N
F-NTNN
F/
F0N
F1N
F2N
F3NN
F4N
F5
F6NN
F7N
F8
F9N
F:N
F;N
F<NTN
F>NN
F?
F@N
FAN
FBN
FCN
FDN
FEN
FFN
FGN
FHN
FIN
FJN
FKN
FLNTN
FNN
FO
Fn
FP
F_N
FQ
FRN
FSN
FTN
FUN
FVN
FWN
FXN
FYN
FZN
F[N
F\N
F]N
F^NTNN
F`
FaN
FbN
FcN
FdNN
FeN
Ff
FgNN
FhN
Fi
FjN
FkN
FlN
FmNTN
FoNN
Fp
FqN
FrN
FsN
FtN
FuN
FvN
FwN
FxN
FyN
FzN
F{N
F|N
F}NTN
FN
F�
F�
F�N
F�
F�
F�
F�N
F�
F�N
F�N
F�N
F�N
F�N
F�N
F�N
F�N
F�N
F�N
F�N
F�N
F�NTNN
F�
F�N
F�N
F�N
F�NN
F�N
F�
F�NN
F�N
F�
F�N
F�N
F�N
F�NTN
F�NN
F�
F�N
F�N
F�N
F�N
F�N
F�N
F�N
F�N
F�N
F�N
F�N
F�N
F�NTN
F�N
F�
F�
F�
F�N
F�
F�N
F�N
F�N
F�N
F�N
F�N
F�N
F�N
F�N
F�N
F�N
F�N
F�NTNN
F�
F�N
F�N
F�N
F�NN
F�N
F�
F�NN
F�N
F�
F�N
F�N
F�N
F�NTN
F�NN
F�
F�N
F�N
F�N
F�N
F�N
F�N
F�N
F�N
F�N
F�N
F�N
F�N
F�NTN
F�N
F�N
F�
GH
F�
G
F�N
F�
G
F�
F�N
F�
F�N
F�N
F�N
F�N
F�N
F�N
F�N
F�N
F�N
F�N
F�N
F�N
F�NdNN
F�
F�N
F�NN
F�N
F�
F�NN
F�N
GN
G
GN
GN
GN
GNd
GdN
GNN
G	
G
N
GN
GN
G
N
GN
GN
GN
GN
GN
GN
GN
GN
GNdN
GN
G
G8
G
G)N
G
GN
GN
GN
GN
G N
G!N
G"N
G#N
G$N
G%N
G&N
G'N
G(NdNN
G*
G+N
G,NN
G-N
G.
G/NN
G0N
G1N
G2
G3N
G4N
G5N
G6Nd
G7dN
G9NN
G:
G;N
G<N
G=N
G>N
G?N
G@N
GAN
GBN
GCN
GDN
GEN
GFN
GGNdN
GI
Gz
GJN
GK
Gj
GL
G[N
GM
GNN
GON
GPN
GQN
GRN
GSN
GTN
GUN
GVN
GWN
GXN
GYN
GZNdNN
G\
G]N
G^NN
G_N
G`
GaNN
GbN
GcN
Gd
GeN
GfN
GgN
GhNd
GidN
GkNN
Gl
GmN
GnN
GoN
GpN
GqN
GrN
GsN
GtN
GuN
GvN
GwN
GxN
GyNdN
G{N
G|
G�
G}
G�N
G~
GN
G�N
G�N
G�N
G�N
G�N
G�N
G�N
G�N
G�N
G�N
G�N
G�NdNN
G�
G�N
G�NN
G�N
G�
G�NN
G�N
G�N
G�
G�N
G�N
G�N
G�Nd
G�dN
G�NN
G�
G�N
G�N
G�N
G�N
G�N
G�N
G�N
G�N
G�N
G�N
G�N
G�N
G�NdN
G�
HD
G�N
G�N
G�
G�
G�N
G�N
G�
G�
G�
G�N
G�
G�N
G�N
G�N
G�N
G�N
G�N
G�N
G�N
G�N
G�N
G�N
G�N
G�NsNN
G�
G�N
G�N
G�N
G�NN
G�
G�NN
G�
G�N
G�N
G�N
G�N
G�N
G�NsN
G�NN
G�
G�N
G�N
G�N
G�N
G�N
G�N
G�N
G�N
G�N
G�N
G�N
G�N
G�NsN
G�
H
G�N
G�
H
G�
G�N
G�
G�N
G�N
G�N
G�N
G�N
G�N
G�N
G�N
G�N
G�N
G�N
G�N
G�NsNN
G�
G�N
G�N
G�N
G�NN
G�
G�NN
G�
G�N
G�N
G�N
HN
HN
HNsN
HNN
H
HN
HN
HN
H	N
H
N
HN
HN
H
N
HN
HN
HN
HN
HNsN
HN
H
H4
H
H%N
H
HN
HN
HN
HN
HN
HN
HN
HN
H N
H!N
H"N
H#N
H$NsNN
H&
H'N
H(N
H)N
H*NN
H+
H,NN
H-
H.N
H/N
H0N
H1N
H2N
H3NsN
H5NN
H6
H7N
H8N
H9N
H:N
H;N
H<N
H=N
H>N
H?N
H@N
HAN
HBN
HCNsN
HEN
HFN
HG
H�
HH
Hy
HIN
HJ
Hi
HK
HZN
HL
HMN
HNN
HON
HPN
HQN
HRN
HSN
HTN
HUN
HVN
HWN
HXN
HYN�NN
H[
H\N
H]N
H^N
H_NN
H`
HaN
HbNN
HcN
Hd
HeN
HfN
HgN
HhN�N
HjNN
Hk
HlN
HmN
HnN
HoN
HpN
HqN
HrN
HsN
HtN
HuN
HvN
HwN
HxN�N
HzN
H{
H�
H|
H�N
H}
H~N
HN
H�N
H�N
H�N
H�N
H�N
H�N
H�N
H�N
H�N
H�N
H�N�NN
H�
H�N
H�N
H�N
H�NN
H�
H�N
H�NN
H�N
H�
H�N
H�N
H�N
H�N�N
H�NN
H�
H�N
H�N
H�N
H�N
H�N
H�N
H�N
H�N
H�N
H�N
H�N
H�N
H�N�NN
H�
H�N
H�
H�
H�
H�N
H�
H�N
H�N
H�N
H�N
H�N
H�N
H�N
H�N
H�N
H�N
H�N
H�N
H�N�NN
H�
H�N
H�N
H�N
H�NN
H�
H�N
H�NN
H�N
H�
H�N
H�N
H�N
H�N�N
H�NN
H�
H�N
H�N
H�N
H�N
H�N
H�N
H�N
H�N
H�N
H�N
H�N
H�N
H�N�N
H�
J�
H�
I�
H�
IH
H�N
H�N
H�N
H�
I&
H�
I
H�
H�
H�NN
H�
H�N
H�N
H�N
H�N
H�N
H�N
H�N
H�N
H�N
H�N
H�N
H�N
H�N~'N
H�NN
H�
H�N
H�N
H�N
H�N
H�N
H�N
H�N
H�N
IN
IN
IN
IN
IN~'N
I
I
INN
I
I	N
I
N
IN
IN
I
N
IN
IN
IN
IN
IN
IN
IN
IN~'N
INN
I
IN
IN
IN
IN
IN
IN
IN
I N
I!N
I"N
I#N
I$N
I%N~'N
I'N
I(
I8
I)NN
I*
I+N
I,N
I-N
I.N
I/N
I0N
I1N
I2N
I3N
I4N
I5N
I6N
I7N~'N
I9NN
I:
I;N
I<N
I=N
I>N
I?N
I@N
IAN
IBN
ICN
IDN
IEN
IFN
IGN~'N
IIN
IJN
IK
I�
ILN
IMN
IN
Ip
IO
IbN
IP
IQN
IRN
ISN
IT
I^
IUN
IVN
IWN
IXN
IYN
IZN
I[N
I\N
I]N~'N
I_N
I`N
IaN~'NN
Ic
IdNN
IeN
If
IgN
IhN
IiN
IjN
IkN
IlN
ImN~'
In
IoN~'N
IqNN
Ir
IsN
ItN
IuN
IvN
IwN
IxN
IyN
IzN
I{N
I|N
I}N
I~N
IN~'N
I�
I�
I�N
I�
I�
I�
I�N
I�
I�N
I�N
I�N
I�
I�
I�N
I�N
I�N
I�N
I�N
I�N
I�N
I�N
I�N~'N
I�N
I�N
I�N~'NN
I�
I�NN
I�N
I�
I�N
I�N
I�N
I�N
I�N
I�N
I�N~'
I�
I�N~'N
I�NN
I�
I�N
I�N
I�N
I�N
I�N
I�N
I�N
I�N
I�N
I�N
I�N
I�N
I�N~'N
I�N
I�
I�
I�
I�N
I�
I�N
I�N
I�N
I�
I�
I�N
I�N
I�N
I�N
I�N
I�N
I�N
I�N
I�N~'N
I�N
I�N
I�N
I�N
I�~'
I�~'
I�~'
I�~'
I�~'N~'N
I�
I�NN
I�N
I�
I�N
I�N
I�N
I�N
I�N
I�N
I�N~'
I�
I�N~'N
I�NN
I�
I�N
I�N
I�N
I�N
I�N
I�N
I�N
I�N
I�N
I�N
I�N
I�N
I�N~'N
I�N
I�N
I�
J�
I�
J%
I�N
I�N
I�
J
I�
JN
I�
I�N
I�N
I�N
I�N
I�N
I�N
I�N
JN
JN
JN
JN
JN
JN�NN
J
JN
J	N
J
N
JN
JNN
J
N
JN
J
JN
JN
JN
JN
JN�N
JNN
J
JN
JN
JN
JN
JN
JN
JN
JN
J N
J!N
J"N
J#N
J$N�N
J&
JW
J'N
J(
JG
J)
J8N
J*
J+N
J,N
J-N
J.N
J/N
J0N
J1N
J2N
J3N
J4N
J5N
J6N
J7N�NN
J9
J:N
J;N
J<N
J=N
J>NN
J?N
J@N
JA
JBN
JCN
JDN
JEN
JFN�N
JHNN
JI
JJN
JKN
JLN
JMN
JNN
JON
JPN
JQN
JRN
JSN
JTN
JUN
JVN�N
JXN
JY
Jx
JZ
JiN
J[
J\N
J]N
J^N
J_N
J`N
JaN
JbN
JcN
JdN
JeN
JfN
JgN
JhN�NN
Jj
JkN
JlN
JmN
JnN
JoNN
JpN
JqN
Jr
JsN
JtN
JuN
JvN
JwN�N
JyNN
Jz
J{N
J|N
J}N
J~N
JN
J�N
J�N
J�N
J�N
J�N
J�N
J�N
J�N�N
J�N
J�N
J�N
J�
J�
J�
J�N
J�
J�N
J�N
J�N
J�N
J�N
J�N
J�N
J�N
J�N
J�N
J�N
J�N
J�N�NN
J�
J�N
J�N
J�N
J�N
J�NN
J�N
J�N
J�
J�N
J�N
J�N
J�N
J�N�N
J�NN
J�
J�N
J�N
J�N
J�N
J�N
J�N
J�N
J�N
J�N
J�N
J�N
J�N
J�N�N
J�
K�
J�
K(
J�N
J�N
J�
K
J�
J�
J�N
J�
J�
J�NN
J�
J�N
J�N
J�N
J�N
J�N
J�N
J�N
J�N
J�N
J�N
J�N
J�N
J�N]�N
J�NN
J�
J�N
J�N
J�N
J�N
J�N
J�N
J�N
J�N
J�N
J�N
J�N
J�N
J�N]�N
J�N
J�
J�
J�NN
J�
J�N
J�N
J�N
J�N
J�N
J�N
J�N
J�N
J�N
J�N
J�N
J�N
J�N]�N
J�NN
J�
J�N
J�N
J�N
J�N
J�N
J�N
J�N
J�N
KN
KN
KN
KN
KN]�N
KN
KN
K
K
K	NN
K

KN
KN
K
N
KN
KN
KN
KN
KN
KN
KN
KN
KN
KN]�N
KNN
K
KN
KN
KN
KN
KN
K N
K!N
K"N
K#N
K$N
K%N
K&N
K'N]�N
K)N
K*
K�
K+
K]
K,N
K-N
K.
KM
K/
K>N
K0
K1N
K2N
K3N
K4N
K5N
K6N
K7N
K8N
K9N
K:N
K;N
K<N
K=N�NN
K?
K@N
KAN
KBN
KCN
KDNN
KE
KFN
KGN
KHN
KIN
KJN
KKN
KLN�N
KNNN
KO
KPN
KQN
KRN
KSN
KTN
KUN
KVN
KWN
KXN
KYN
KZN
K[N
K\N�N
K^
K�
K_N
K`
K
Ka
KpN
Kb
KcN
KdN
KeN
KfN
KgN
KhN
KiN
KjN
KkN
KlN
KmN
KnN
KoN�NN
Kq
KrN
KsN
KtN
KuN
KvNN
Kw
KxN
KyN
KzN
K{N
K|N
K}N
K~N�N
K�NN
K�
K�N
K�N
K�N
K�N
K�N
K�N
K�N
K�N
K�N
K�N
K�N
K�N
K�N�N
K�N
K�
K�
K�
K�N
K�
K�N
K�N
K�N
K�N
K�N
K�N
K�N
K�N
K�N
K�N
K�N
K�N
K�N�NN
K�
K�N
K�N
K�N
K�N
K�NN
K�
K�N
K�N
K�N
K�N
K�N
K�N
K�N�N
K�NN
K�
K�N
K�N
K�N
K�N
K�N
K�N
K�N
K�N
K�N
K�N
K�N
K�N
K�N�N
K�N
K�N
K�N
K�
K�
K�
K�N
K�
K�N
K�N
K�N
K�N
K�N
K�N
K�N
K�N
K�N
K�N
K�N
K�N
K�N�NN
K�
K�N
K�N
K�N
K�N
K�NN
K�
K�N
K�N
K�N
K�N
K�N
K�N
K�N�N
K�NN
K�
K�N
K�N
K�N
K�N
K�N
K�N
K�N
K�N
K�N
K�N
K�N
K�N
K�N�N
K�
L�
K�N
K�N
K�
LZ
K�
L)
K�N
K�
L
K�
L
N
K�
K�N
K�N
K�N
LN
LN
LN
LN
LN
LN
LN
LN
LN
L	N�NN
L
LN
L
N
LN
LN
LN
LN
LN
LNN
L
LN
LN
LN
LN�N
LNN
L
LN
LN
LN
LN
L N
L!N
L"N
L#N
L$N
L%N
L&N
L'N
L(N�N
L*N
L+
LJ
L,
L;N
L-
L.N
L/N
L0N
L1N
L2N
L3N
L4N
L5N
L6N
L7N
L8N
L9N
L:N�NN
L<
L=N
L>N
L?N
L@N
LAN
LBN
LCN
LDNN
LE
LFN
LGN
LHN
LIN�N
LKNN
LL
LMN
LNN
LON
LPN
LQN
LRN
LSN
LTN
LUN
LVN
LWN
LXN
LYN�NN
L[
L\N
L]
L|
L^
LmN
L_
L`N
LaN
LbN
LcN
LdN
LeN
LfN
LgN
LhN
LiN
LjN
LkN
LlN�NN
Ln
LoN
LpN
LqN
LrN
LsN
LtN
LuN
LvNN
Lw
LxN
LyN
LzN
L{N�N
L}NN
L~
LN
L�N
L�N
L�N
L�N
L�N
L�N
L�N
L�N
L�N
L�N
L�N
L�N�N
L�N
L�N
L�
L�
L�
L�
L�N
L�
L�
L�
L�N
L�
L�N
L�N
L�N
L�N
L�N
L�N
L�N
L�N
L�N
L�N
L�N
L�N
L�N�NN
L�
L�N
L�NN
L�
L�N
L�NN
L�N
L�N
L�N
L�
L�N
L�N
L�N�N
L�NN
L�
L�N
L�N
L�N
L�N
L�N
L�N
L�N
L�N
L�N
L�N
L�N
L�N
L�N�N
L�N
L�
L�
L�
L�N
L�
L�N
L�N
L�N
L�N
L�N
L�N
L�N
L�N
L�N
L�N
L�N
L�N
L�N�NN
L�
L�N
L�NN
L�
L�N
L�NN
L�N
L�N
L�N
L�
L�N
L�N
L�N�N
L�NN
L�
L�N
L�N
L�N
L�N
L�N
L�N
L�N
L�N
L�N
L�N
L�N
L�N
L�N�N
L�
M!
L�N
L�
M
L�
MN
L�
L�N
L�N
L�N
L�N
L�N
L�N
L�N
L�N
L�N
L�N
MN
MN
MN�NN
M
MN
MNN
M
MN
M	NN
M
N
MN
MN
M

MN
MN
MN�N
MNN
M
MN
MN
MN
MN
MN
MN
MN
MN
MN
MN
MN
MN
M N�N
M"N
M#
MA
M$
M3N
M%
M&N
M'N
M(N
M)N
M*N
M+N
M,N
M-N
M.N
M/N
M0N
M1N
M2N�NN
M4
M5N
M6NN
M7
M8N
M9NN
M:N
M;N
M<N
M=
M>N
M?N
M@N�N
MBNN
MC
MDN
MEN
MFN
MGN
MHN
MIN
MJN
MKN
MLN
MMN
MNN
MON
MPN�N
MR
R�
MS
O�
MT
NG
MUN;
MVN
MW
N
MX
M�
MY
M�
MZN
M[
Mx
M\
MkN
M]
M^N
M_N
M`N
MaN
MbN
McN
MdN
MeN
MfN
MgN
MhN
MiN
MjNZ�NN
Ml
MmNN
Mn
MoN
MpNN
Mq
MrNN
Ms
MtN
MuN
MvNZ�
MwZ�N
MyNN
Mz
M{N
M|N
M}N
M~N
MN
M�N
M�N
M�N
M�N
M�N
M�N
M�N
M�NZ�N
M�N
M�
M�
M�
M�N
M�
M�N
M�N
M�N
M�N
M�N
M�N
M�N
M�N
M�N
M�N
M�N
M�N
M�NZ�NN
M�
M�NN
M�
M�N
M�NN
M�
M�NN
M�
M�N
M�N
M�NZ�
M�Z�N
M�NN
M�
M�N
M�N
M�N
M�N
M�N
M�N
M�N
M�N
M�N
M�N
M�N
M�N
M�NZ�N
M�
M�
M�N
M�
M�
M�
M�N
M�
M�N
M�N
M�N
M�N
M�N
M�N
M�N
M�N
M�N
M�N
M�N
M�N
M�NZ�NN
M�
M�NN
M�
M�N
M�NN
M�
M�NN
M�
M�N
M�N
M�NZ�
M�Z�N
M�NN
M�
M�N
M�N
M�N
M�N
M�N
M�N
M�N
M�N
M�N
M�N
M�N
M�N
M�NZ�N
M�N
M�
N
M�
M�N
M�
M�N
M�N
M�N
M�N
M�N
M�N
M�N
M�N
M�N
M�N
M�N
M�N
M�NZ�NN
M�
M�NN
M�
M�N
M�NN
M�
NNN
N
NN
NN
NNZ�
NZ�N
NNN
N
N	N
N
N
NN
NN
N
N
NN
NN
NN
NN
NN
NN
NN
NNZ�N
NN
NN
NN
N
N7
N
N*N
N
NN
NN
NN
N N
N!N
N"N
N#N
N$N
N%N
N&N
N'N
N(N
N)NZ�NN
N+
N,NN
N-
N.N
N/NN
N0
N1NN
N2
N3N
N4N
N5NZ�
N6Z�N
N8NN
N9
N:N
N;N
N<N
N=N
N>N
N?N
N@N
NAN
NBN
NCN
NDN
NEN
NFNZ�N
NH
O
NIN
NJN
NK
N�
NL
N}
NMN
NN
Nm
NO
N^N
NP
NQN
NRN
NSN
NTN
NUN
NVN
NWN
NXN
NYN
NZN
N[N
N\N
N]N�NN
N_
N`N
NaNN
Nb
NcN
NdN
NeN
NfNN
Ng
NhN
NiN
NjN
NkN
NlN�N
NnNN
No
NpN
NqN
NrN
NsN
NtN
NuN
NvN
NwN
NxN
NyN
NzN
N{N
N|N�N
N~N
N
N�
N�
N�N
N�
N�N
N�N
N�N
N�N
N�N
N�N
N�N
N�N
N�N
N�N
N�N
N�N
N�N�NN
N�
N�N
N�NN
N�
N�N
N�N
N�N
N�NN
N�
N�N
N�N
N�N
N�N
N�N�N
N�NN
N�
N�N
N�N
N�N
N�N
N�N
N�N
N�N
N�N
N�N
N�N
N�N
N�N
N�N�N
N�
N�
N�N
N�
N�
N�
N�N
N�
N�N
N�N
N�N
N�N
N�N
N�N
N�N
N�N
N�N
N�N
N�N
N�N
N�N�NN
N�
N�N
N�NN
N�
N�N
N�N
N�N
N�NN
N�
N�N
N�N
N�N
N�N
N�N�N
N�NN
N�
N�N
N�N
N�N
N�N
N�N
N�N
N�N
N�N
N�N
N�N
N�N
N�N
N�N�N
N�N
N�
O
N�
N�N
N�
N�N
N�N
N�N
N�N
N�N
N�N
N�N
N�N
N�N
N�N
N�N
N�N
N�N�NN
N�
N�N
N�NN
N�
N�N
N�N
N�N
N�NN
N�
N�N
N�N
N�N
N�N
ON�N
ONN
O
ON
ON
ON
ON
ON
O	N
O
N
ON
ON
O
N
ON
ON
ON�N
ON
ON
O
O�
O
Ov
O
OF
O
O6
O
O'N
O
ON
ON
ON
ON
ON
ON
O N
O!N
O"N
O#N
O$N
O%N
O&N�NN
O(
O)N
O*N
O+NN
O,N
O-N
O.N
O/N
O0N
O1
O2N
O3N
O4N
O5N�N
O7NN
O8
O9N
O:N
O;N
O<N
O=N
O>N
O?N
O@N
OAN
OBN
OCN
ODN
OEN�N
OG
Of
OH
OWN
OI
OJN
OKN
OLN
OMN
ONN
OON
OPN
OQN
ORN
OSN
OTN
OUN
OVN�NN
OX
OYN
OZN
O[NN
O\N
O]N
O^N
O_N
O`N
Oa
ObN
OcN
OdN
OeN�N
OgNN
Oh
OiN
OjN
OkN
OlN
OmN
OnN
OoN
OpN
OqN
OrN
OsN
OtN
OuN�N
OwN
Ox
O�
Oy
O�N
Oz
O{N
O|N
O}N
O~N
ON
O�N
O�N
O�N
O�N
O�N
O�N
O�N
O�N�NN
O�
O�N
O�N
O�NN
O�N
O�N
O�N
O�N
O�N
O�
O�N
O�N
O�N
O�N�N
O�NN
O�
O�N
O�N
O�N
O�N
O�N
O�N
O�N
O�N
O�N
O�N
O�N
O�N
O�N�NN
O�
O�N
O�
O�
O�
O�N
O�
O�N
O�N
O�N
O�N
O�N
O�N
O�N
O�N
O�N
O�N
O�N
O�N
O�N�NN
O�
O�N
O�N
O�NN
O�N
O�N
O�N
O�N
O�N
O�
O�N
O�N
O�N
O�N�N
O�NN
O�
O�N
O�N
O�N
O�N
O�N
O�N
O�N
O�N
O�N
O�N
O�N
O�N
O�N�N
O�
Qg
O�
P�
O�N
O�N
O�
Pn
O�
P>
O�
P
O�
O�
O�
O�N
O�
O�N
O�N
O�N
O�N
O�N
O�N
O�N
O�N
O�N
O�N
O�N
O�N
O�NSNN
O�
O�N
O�NN
O�
O�NN
O�N
O�N
O�N
O�
O�N
O�N
O�N
O�NSN
PNN
P
PN
PN
PN
PN
PN
PN
PN
P	N
P
N
PN
PN
P
N
PNSN
P
P.
P
P N
P
PN
PN
PN
PN
PN
PN
PN
PN
PN
PN
PN
PN
PNSNN
P!
P"N
P#NN
P$
P%NN
P&N
P'N
P(N
P)
P*N
P+N
P,N
P-NSN
P/NN
P0
P1N
P2N
P3N
P4N
P5N
P6N
P7N
P8N
P9N
P:N
P;N
P<N
P=NSN
P?N
P@
P^
PA
PPN
PB
PCN
PDN
PEN
PFN
PGN
PHN
PIN
PJN
PKN
PLN
PMN
PNN
PONSNN
PQ
PRN
PSNN
PT
PUNN
PVN
PWN
PXN
PY
PZN
P[N
P\N
P]NSN
P_NN
P`
PaN
PbN
PcN
PdN
PeN
PfN
PgN
PhN
PiN
PjN
PkN
PlN
PmNSNN
Po
PpN
Pq
P�
Pr
P�N
Ps
PtN
PuN
PvN
PwN
PxN
PyN
PzN
P{N
P|N
P}N
P~N
PN
P�NSNN
P�
P�N
P�NN
P�
P�NN
P�N
P�N
P�N
P�
P�N
P�N
P�N
P�NSN
P�NN
P�
P�N
P�N
P�N
P�N
P�N
P�N
P�N
P�N
P�N
P�N
P�N
P�N
P�NSN
P�N
P�N
P�
Q
P�N
P�
P�
P�
P�
P�
P�N
P�
P�N
P�N
P�N
P�N
P�N
P�N
P�N
P�N
P�N
P�N
P�N
P�N
P�N}ENN
P�
P�NN
P�
P�NN
P�
P�NN
P�N
P�N
P�}E
P�
P�N}E
P�}E
P�
P�N}EN
P�NN
P�
P�N
P�N
P�N
P�N
P�N
P�N
P�N
P�N
P�N
P�N
P�N
P�N
P�N}EN
P�
P�
P�
P�N
P�
P�N
P�N
P�N
P�N
P�N
P�N
P�N
P�N
P�N
P�N
P�N
P�N
P�N}ENN
P�
P�NN
P�
P�NN
P�
P�NN
P�N
P�N
P�}E
P�
P�N}E
P�}E
P�
P�N}EN
P�NN
P�
P�N
P�N
P�N
P�N
P�N
P�N
P�N
P�N
P�N
QN
QN
QN
QN}EN
Q
Q6
QN
Q
Q&
Q
QN
Q	
Q
N
QN
QN
Q
N
QN
QN
QN
QN
QN
QN
QN
QN
QN}ENN
Q
QNN
Q
QNN
Q
QNN
QN
QN
Q }E
Q!
Q"N}E
Q#}E
Q$
Q%N}EN
Q'NN
Q(
Q)N
Q*N
Q+N
Q,N
Q-N
Q.N
Q/N
Q0N
Q1N
Q2N
Q3N
Q4N
Q5N}EN
Q7N
Q8
QW
Q9
QHN
Q:
Q;N
Q<N
Q=N
Q>N
Q?N
Q@N
QAN
QBN
QCN
QDN
QEN
QFN
QGN}ENN
QI
QJNN
QK
QLNN
QM
QNNN
QON
QPN
QQ}E
QR
QSN}E
QT}E
QU
QVN}EN
QXNN
QY
QZN
Q[N
Q\N
Q]N
Q^N
Q_N
Q`N
QaN
QbN
QcN
QdN
QeN
QfN}EN
Qh
R
QiN
QjN
Qk
Q�
QlN
QmN
Qn
Q�
Qo
Q~N
Qp
QqN
QrN
QsN
QtN
QuN
QvN
QwN
QxN
QyN
QzN
Q{N
Q|N
Q}N�NN
Q
Q�N
Q�N
Q�NN
Q�N
Q�
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N�N
Q�NN
Q�
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N�N
Q�
Q�
Q�N
Q�
Q�
Q�
Q�N
Q�
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N�NN
Q�
Q�N
Q�N
Q�NN
Q�N
Q�
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N�N
Q�NN
Q�
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N�N
Q�N
Q�
Q�
Q�
Q�N
Q�
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N�NN
Q�
Q�N
Q�N
Q�NN
Q�N
Q�
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N�N
Q�NN
Q�
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N
Q�N�N
RN
RN
R
R�
R
Re
R
R5
R
R%
R
RN
R
R	N
R
N
RN
RN
R
N
RN
RN
RN
RN
RN
RN
RN
RN�NN
R
RN
RN
RNN
R
RNN
R
RNN
RN
R 
R!N
R"N
R#N
R$N�N
R&NN
R'
R(N
R)N
R*N
R+N
R,N
R-N
R.N
R/N
R0N
R1N
R2N
R3N
R4N�N
R6
RU
R7
RFN
R8
R9N
R:N
R;N
R<N
R=N
R>N
R?N
R@N
RAN
RBN
RCN
RDN
REN�NN
RG
RHN
RIN
RJNN
RK
RLNN
RM
RNNN
RON
RP
RQN
RRN
RSN
RTN�N
RVNN
RW
RXN
RYN
RZN
R[N
R\N
R]N
R^N
R_N
R`N
RaN
RbN
RcN
RdN�N
RfN
Rg
R�
Rh
RwN
Ri
RjN
RkN
RlN
RmN
RnN
RoN
RpN
RqN
RrN
RsN
RtN
RuN
RvN�NN
Rx
RyN
RzN
R{NN
R|
R}NN
R~
RNN
R�N
R�
R�N
R�N
R�N
R�N�N
R�NN
R�
R�N
R�N
R�N
R�N
R�N
R�N
R�N
R�N
R�N
R�N
R�N
R�N
R�N�N
R�N
R�N
R�
R�
R�
R�N
R�
R�N
R�N
R�N
R�N
R�N
R�N
R�N
R�N
R�N
R�N
R�N
R�N
R�N�NN
R�
R�N
R�N
R�NN
R�
R�NN
R�
R�NN
R�N
R�
R�N
R�N
R�N
R�N�N
R�NN
R�
R�N
R�N
R�N
R�N
R�N
R�N
R�N
R�N
R�N
R�N
R�N
R�N
R�N�N
R�
T�
R�
T+
R�
Sc
R�OE
R�OE
R�
S
R�OE
R�OE
R�
R�
R�
R�OE
R�
R�OE
R�OE
R�OE
R�OE
R�OE
R�OE
R�OE
R�OE
R�OE
R�OE
R�OE
R�OE
R�OEOEOE
R�
R�OE
R�OEOE
R�OE
R�
R�OEOE
R�OE
R�OE
R�OE
R�
R�OE
R�OE
R�OE
R�OE
R�OEOE
R�
R�OE
R�OE
R�OE
R�OE
R�OE
R�OE
R�OE
R�OE
R�OE
R�OE
R�OE
R�OE
R�OEOE
S
S2
SOE
S
S"
S
SOE
S
SOE
SOE
SOE
S	OE
S
OE
SOE
SOE
S
OE
SOE
SOE
SOE
SOE
SOEOEOE
S
SOE
SOEOE
SOE
S
SOEOE
SOE
SOE
SOE
S
SOE
SOE
S OE
S!OE
S#OEOE
S$
S%OE
S&OE
S'OE
S(OE
S)OE
S*OE
S+OE
S,OE
S-OE
S.OE
S/OE
S0OE
S1OEOE
S3OE
S4
SS
S5
SDOE
S6
S7OE
S8OE
S9OE
S:OE
S;OE
S<OE
S=OE
S>OE
S?OE
S@OE
SAOE
SBOE
SCOEOEOE
SE
SFOE
SGOEOE
SHOE
SI
SJOEOE
SKOE
SLOE
SMOE
SN
SOOE
SPOE
SQOE
SROE
STOEOE
SU
SVOE
SWOE
SXOE
SYOE
SZOE
S[OE
S\OE
S]OE
S^OE
S_OE
S`OE
SaOE
SbOEOE
SdOE
SeOE
Sf
S�
Sg
S�
Sh
S�
Si
S�
Sj
SyOE
Sk
SlOE
SmOE
SnOE
SoOE
SpOE
SqOE
SrOE
SsOE
StOE
SuOE
SvOE
SwOE
SxOEOEOE
Sz
S{OE
S|OE
S}OE
S~OEOE
S
S�OEOE
S�OE
S�
S�OE
S�OE
S�OE
S�OE
S�OEOE
S�OEOE
S�
S�OE
S�OE
S�OE
S�OE
S�OE
S�OE
S�OE
S�OE
S�OE
S�OE
S�OE
S�OE
S�OEOE
S�
S�
S�
S�OE
S�
S�OE
S�OE
S�OE
S�OE
S�OE
S�OE
S�OE
S�OE
S�OE
S�OE
S�OE
S�OE
S�OEOEOE
S�
S�OE
S�OE
S�OE
S�OEOE
S�
S�OEOE
S�OE
S�
S�OE
S�OE
S�OE
S�OE
S�OEOE
S�OEOE
S�
S�OE
S�OE
S�OE
S�OE
S�OE
S�OE
S�OE
S�OE
S�OE
S�OE
S�OE
S�OE
S�OEOE
S�OE
S�
S�
S�
S�OE
S�
S�OE
S�OE
S�OE
S�OE
S�OE
S�OE
S�OE
S�OE
S�OE
S�OE
S�OE
S�OE
S�OEOEOE
S�
S�OE
S�OE
S�OE
S�OEOE
S�
S�OEOE
S�OE
S�
S�OE
S�OE
S�OE
S�OE
S�OEOE
S�OEOE
S�
S�OE
S�OE
S�OE
S�OE
S�OE
S�OE
S�OE
S�OE
S�OE
S�OE
S�OE
S�OE
S�OEOE
S�OE
S�OE
S�
T
S�
TOE
S�
S�OE
TOE
TOE
TOE
TOE
TOE
TOE
TOE
TOE
TOE
T	OE
T
OE
TOEOEOE
T

TOE
TOE
TOE
TOEOE
T
TOEOE
TOE
T
TOE
TOE
TOE
TOE
TOEOE
TOEOE
T
TOE
TOE
T OE
T!OE
T"OE
T#OE
T$OE
T%OE
T&OE
T'OE
T(OE
T)OE
T*OEOE
T,OE
T-OE
T.OE
T/
Ta
T0OE
T1OE
T2
TQ
T3
TBOE
T4
T5OE
T6OE
T7OE
T8OE
T9OE
T:OE
T;OE
T<OE
T=OE
T>OE
T?OE
T@OE
TAOE-OEOE
TC
TDOE
TEOE
TFOE
TGOEOE
TH
TIOE
TJOEOE
TK
TLOE
TMOE
TNOE
TOOE
TPOE-OE
TROEOE
TS
TTOE
TUOE
TVOE
TWOE
TXOE
TYOE
TZOE
T[OE
T\OE
T]OE
T^OE
T_OE
T`OE-OE
Tb
T�
TcOE
Td
T�
Te
TtOE
Tf
TgOE
ThOE
TiOE
TjOE
TkOE
TlOE
TmOE
TnOE
ToOE
TpOE
TqOE
TrOE
TsOE-OEOE
Tu
TvOE
TwOE
TxOE
TyOEOE
Tz
T{OE
T|OEOE
T}
T~OE
TOE
T�OE
T�OE
T�OE-OE
T�OEOE
T�
T�OE
T�OE
T�OE
T�OE
T�OE
T�OE
T�OE
T�OE
T�OE
T�OE
T�OE
T�OE
T�OE-OE
T�OE
T�
T�
T�
T�OE
T�
T�OE
T�OE
T�OE
T�OE
T�OE
T�OE
T�OE
T�OE
T�OE
T�OE
T�OE
T�OE
T�OE-OEOE
T�
T�OE
T�OE
T�OE
T�OEOE
T�
T�OE
T�OEOE
T�
T�OE
T�OE
T�OE
T�OE
T�OE-OE
T�OEOE
T�
T�OE
T�OE
T�OE
T�OE
T�OE
T�OE
T�OE
T�OE
T�OE
T�OE
T�OE
T�OE
T�OE-OE
T�
U�OE
T�
T�OE
T�
U�
T�
U,
T�
T�
T�OE
T�
T�
T�
T�OE
T�
T�OE
T�OE
T�OE
T�OE
T�OE
T�OE
T�OE
T�OE
T�OE
T�OE
T�OE
T�OE
T�OE^�OEOE
T�
T�OEOE
T�
T�OE
T�OE
T�OEOE
T�
T�OE
T�OE
T�OE
T�OE^�
T�
T�OE
T�OE^�OE
T�OEOE
T�
T�OE
T�OE
T�OE
T�OE
T�OE
T�OE
T�OE
T�OE
T�OE
T�OE
T�OE
T�OE
T�OE^�OE
T�OE
T�
U
T�
U
OE
T�
UOE
UOE
UOE
UOE
UOE
UOE
UOE
UOE
UOE
U	OE
U
OE
UOE
UOE^�OEOE
U
UOEOE
U
UOE
UOE
UOEOE
U
UOE
UOE
UOE
UOE^�
U
UOE
UOE^�OE
UOEOE
U
UOE
U OE
U!OE
U"OE
U#OE
U$OE
U%OE
U&OE
U'OE
U(OE
U)OE
U*OE
U+OE^�OE
U-
U^
U.OE
U/
UN
U0
U?OE
U1
U2OE
U3OE
U4OE
U5OE
U6OE
U7OE
U8OE
U9OE
U:OE
U;OE
U<OE
U=OE
U>OE^�OEOE
U@
UAOEOE
UB
UCOE
UDOE
UEOEOE
UF
UGOE
UHOE
UIOE
UJOE^�
UK
ULOE
UMOE^�OE
UOOEOE
UP
UQOE
UROE
USOE
UTOE
UUOE
UVOE
UWOE
UXOE
UYOE
UZOE
U[OE
U\OE
U]OE^�OE
U_OE
U`
U
Ua
UpOE
Ub
UcOE
UdOE
UeOE
UfOE
UgOE
UhOE
UiOE
UjOE
UkOE
UlOE
UmOE
UnOE
UoOE^�OEOE
Uq
UrOEOE
Us
UtOE
UuOE
UvOEOE
Uw
UxOE
UyOE
UzOE
U{OE^�
U|
U}OE
U~OE^�OE
U�OEOE
U�
U�OE
U�OE
U�OE
U�OE
U�OE
U�OE
U�OE
U�OE
U�OE
U�OE
U�OE
U�OE
U�OE^�OE
U�OE
U�OE
U�OE
U�
U�
U�
U�OE
U�
U�OE
U�OE
U�OE
U�OE
U�OE
U�OE
U�OE
U�OE
U�OE
U�OE
U�OE
U�OE
U�OE^�OEOE
U�
U�OEOE
U�
U�OE
U�OE
U�OEOE
U�
U�OE
U�OE
U�OE
U�OE^�
U�
U�OE
U�OE^�OE
U�OEOE
U�
U�OE
U�OE
U�OE
U�OE
U�OE
U�OE
U�OE
U�OE
U�OE
U�OE
U�OE
U�OE
U�OE^�OE
U�
V�
U�OE
U�OE
U�
VY
U�
V(
U�
U�
U�
U�
U�
U�OE
U�
U�OE
U�OE
U�OE
U�OE
U�OE
U�OE
U�OE
U�OE
U�OE
U�OE
U�OE
U�OE
U�OE"�OEOE
U�
U�OEOE
U�
U�OE
U�OEOE
U�OE
U�
U�OEOE
U�OE
U�"�
U�
U�OE"�
U�
U�OE"�OE
U�OEOE
U�
U�OE
U�OE
U�OE
U�OE
U�OE
U�OE
U�OE
U�OE
U�OE
U�OE
U�OE
U�OE
U�OE"�OE
U�
V
U�
V	OE
U�
U�OE
U�OE
U�OE
U�OE
VOE
VOE
VOE
VOE
VOE
VOE
VOE
VOE
VOE"�OEOE
V

VOEOE
V
V
OE
VOEOE
VOE
V
VOEOE
VOE
V"�
V
VOE"�
V
VOE"�OE
VOEOE
V
VOE
VOE
VOE
VOE
VOE
V OE
V!OE
V"OE
V#OE
V$OE
V%OE
V&OE
V'OE"�OE
V)OE
V*
VI
V+
V:OE
V,
V-OE
V.OE
V/OE
V0OE
V1OE
V2OE
V3OE
V4OE
V5OE
V6OE
V7OE
V8OE
V9OE"�OEOE
V;
V<OEOE
V=
V>OE
V?OEOE
V@OE
VA
VBOEOE
VCOE
VD"�
VE
VFOE"�
VG
VHOE"�OE
VJOEOE
VK
VLOE
VMOE
VNOE
VOOE
VPOE
VQOE
VROE
VSOE
VTOE
VUOE
VVOE
VWOE
VXOE"�OEOE
VZ
V[OE
V\
V{
V]
VlOE
V^
V_OE
V`OE
VaOE
VbOE
VcOE
VdOE
VeOE
VfOE
VgOE
VhOE
ViOE
VjOE
VkOE"�OEOE
Vm
VnOEOE
Vo
VpOE
VqOEOE
VrOE
Vs
VtOEOE
VuOE
Vv"�
Vw
VxOE"�
Vy
VzOE"�OE
V|OEOE
V}
V~OE
VOE
V�OE
V�OE
V�OE
V�OE
V�OE
V�OE
V�OE
V�OE
V�OE
V�OE
V�OE"�OE
V�OE
V�OE
V�
V�
V�OE
V�OE
V�
V�
V�
V�OE
V�
V�OE
V�OE
V�OE
V�OE
V�OE
V�OE
V�OE
V�OE
V�OE
V�OE
V�OE
V�OE
V�OET�OEOE
V�
V�OEOE
V�
V�OE
V�OE
V�OEOE
V�OE
V�OE
V�
V�OE
V�OET�
V�
V�OET�OE
V�OEOE
V�
V�OE
V�OE
V�OE
V�OE
V�OE
V�OE
V�OE
V�OE
V�OE
V�OE
V�OE
V�OE
V�OET�OE
V�
V�
V�OE
V�
V�
V�
V�OE
V�
V�OE
V�OE
V�OE
V�OE
V�OE
V�OE
V�OE
V�OE
V�OE
V�OE
V�OE
V�OE
V�OET�OEOE
V�
V�OEOE
V�
V�OE
V�OE
V�OEOE
V�OE
V�OE
V�
V�OE
V�OET�
V�
V�OET�OE
V�OEOE
V�
V�OE
V�OE
V�OE
V�OE
V�OE
V�OE
V�OE
V�OE
V�OE
V�OE
V�OE
V�OE
V�OET�OE
V�OE
V�
W
V�
WOE
V�
V�OE
V�OE
V�OE
V�OE
V�OE
V�OE
V�OE
V�OE
V�OE
V�OE
V�OE
WOE
WOET�OEOE
W
WOEOE
W
WOE
WOE
WOEOE
W	OE
W
OE
W
WOE
W
OET�
W
WOET�OE
WOEOE
W
WOE
WOE
WOE
WOE
WOE
WOE
WOE
WOE
WOE
WOE
WOE
WOE
WOET�OE
W!
k�
W"
a�
W#
\�
W$
Z
W%
XS
W&
W�
W'N
W(N
W)
WZ
W*N
W+N
W,
WJ
W-
W<N
W.
W/N
W0N
W1N
W2N
W3N
W4N
W5N
W6N
W7N
W8N
W9N
W:N
W;N�NN
W=
W>N
W?NN
W@
WANN
WB
WCNN
WD
WENN
WF
WGN
WHN
WIN�N
WKNN
WL
WMN
WNN
WON
WPN
WQN
WRN
WSN
WTN
WUN
WVN
WWN
WXN
WYN�N
W[
W�
W\N
W]
W{
W^
WmN
W_
W`N
WaN
WbN
WcN
WdN
WeN
WfN
WgN
WhN
WiN
WjN
WkN
WlN�NN
Wn
WoN
WpNN
Wq
WrNN
Ws
WtNN
Wu
WvNN
Ww
WxN
WyN
WzN�N
W|NN
W}
W~N
WN
W�N
W�N
W�N
W�N
W�N
W�N
W�N
W�N
W�N
W�N
W�N�N
W�N
W�
W�
W�
W�N
W�
W�N
W�N
W�N
W�N
W�N
W�N
W�N
W�N
W�N
W�N
W�N
W�N
W�N�NN
W�
W�N
W�NN
W�
W�NN
W�
W�NN
W�
W�NN
W�
W�N
W�N
W�N�N
W�NN
W�
W�N
W�N
W�N
W�N
W�N
W�N
W�N
W�N
W�N
W�N
W�N
W�N
W�N�N
W�N
W�N
W�
X!
W�
W�
W�N
W�
W�
W�
W�N
W�
W�N
W�N
W�N
W�N
W�N
W�N
W�N
W�N
W�N
W�N
W�N
W�N
W�N=NN
W�
W�N
W�N
W�N
W�N
W�NN
W�
W�NN
W�
W�N
W�N
W�N
W�N
W�N=N
W�NN
W�
W�N
W�N
W�N
W�N
W�N
W�N
W�N
W�N
W�N
W�N
W�N
W�N
W�N=N
W�N
W�
X
W�
XN
W�
W�N
W�N
W�N
W�N
W�N
W�N
W�N
W�N
W�N
W�N
W�N
XN
XN=NN
X
XN
XN
XN
XN
XNN
X	
X
NN
X
XN
X
N
XN
XN
XN=N
XNN
X
XN
XN
XN
XN
XN
XN
XN
XN
XN
XN
XN
XN
X N=N
X"N
X#N
X$
XC
X%
X4N
X&
X'N
X(N
X)N
X*N
X+N
X,N
X-N
X.N
X/N
X0N
X1N
X2N
X3N=NN
X5
X6N
X7N
X8N
X9N
X:NN
X;
X<NN
X=
X>N
X?N
X@N
XAN
XBN=N
XDNN
XE
XFN
XGN
XHN
XIN
XJN
XKN
XLN
XMN
XNN
XON
XPN
XQN
XRN=N
XT
YR
XUN
XVN
XW
X�
XX
X�
XY
X�
XZ
Xz
X[
XjN
X\
X]N
X^N
X_N
X`N
XaN
XbN
XcN
XdN
XeN
XfN
XgN
XhN
XiN��NN
Xk
XlN
XmNN
XnN
Xo
XpNN
Xq
XrNN
Xs
XtN
XuN
XvN
XwN
Xx
Xy��N��N
X{NN
X|
X}N
X~N
XN
X�N
X�N
X�N
X�N
X�N
X�N
X�N
X�N
X�N
X�N��N
X�
X�
X�
X�N
X�
X�N
X�N
X�N
X�N
X�N
X�N
X�N
X�N
X�N
X�N
X�N
X�N
X�N��NN
X�
X�N
X�NN
X�N
X�
X�NN
X�
X�NN
X�
X�N
X�N
X�N
X�N
X�
X���N��N
X�NN
X�
X�N
X�N
X�N
X�N
X�N
X�N
X�N
X�N
X�N
X�N
X�N
X�N
X�N��N
X�N
X�
X�
X�
X�N
X�
X�N
X�N
X�N
X�N
X�N
X�N
X�N
X�N
X�N
X�N
X�N
X�N
X�N��NN
X�
X�N
X�NN
X�N
X�
X�NN
X�
X�NN
X�
X�N
X�N
X�N
X�N
X�
X���N��N
X�NN
X�
X�N
X�N
X�N
X�N
X�N
X�N
X�N
X�N
X�N
X�N
X�N
X�N
X�N��N
X�
Y 
X�N
X�
Y
X�
YN
X�
X�N
X�N
X�N
X�N
X�N
X�N
X�N
X�N
X�N
X�N
X�N
X�N
X�N��NN
Y
YN
YNN
YN
Y
YNN
Y
YNN
Y	
Y
N
YN
YN
Y
N
Y
Y��N��N
YNN
Y
YN
YN
YN
YN
YN
YN
YN
YN
YN
YN
YN
YN
YN��N
Y!N
Y"
YB
Y#
Y2N
Y$
Y%N
Y&N
Y'N
Y(N
Y)N
Y*N
Y+N
Y,N
Y-N
Y.N
Y/N
Y0N
Y1N��NN
Y3
Y4N
Y5NN
Y6N
Y7
Y8NN
Y9
Y:NN
Y;
Y<N
Y=N
Y>N
Y?N
Y@
YA��N��N
YCNN
YD
YEN
YFN
YGN
YHN
YIN
YJN
YKN
YLN
YMN
YNN
YON
YPN
YQN��N
YSN
YTN
YU
Y�
YV
Y�
YW
Y�
YX
Yw
YY
YhN
YZ
Y[N
Y\N
Y]N
Y^N
Y_N
Y`N
YaN
YbN
YcN
YdN
YeN
YfN
YgNMNN
Yi
YjN
YkNN
YlN
Ym
YnNN
Yo
YpN
YqNN
Yr
YsN
YtN
YuNM
YvMN
YxNN
Yy
YzN
Y{N
Y|N
Y}N
Y~N
YN
Y�N
Y�N
Y�N
Y�N
Y�N
Y�N
Y�NMN
Y�
Y�
Y�
Y�N
Y�
Y�N
Y�N
Y�N
Y�N
Y�N
Y�N
Y�N
Y�N
Y�N
Y�N
Y�N
Y�N
Y�NMNN
Y�
Y�N
Y�NN
Y�N
Y�
Y�NN
Y�
Y�N
Y�NN
Y�
Y�N
Y�N
Y�NM
Y�MN
Y�NN
Y�
Y�N
Y�N
Y�N
Y�N
Y�N
Y�N
Y�N
Y�N
Y�N
Y�N
Y�N
Y�N
Y�NMN
Y�N
Y�
Y�
Y�
Y�N
Y�
Y�N
Y�N
Y�N
Y�N
Y�N
Y�N
Y�N
Y�N
Y�N
Y�N
Y�N
Y�N
Y�NMNN
Y�
Y�N
Y�NN
Y�N
Y�
Y�NN
Y�
Y�N
Y�NN
Y�
Y�N
Y�N
Y�NM
Y�MN
Y�NN
Y�
Y�N
Y�N
Y�N
Y�N
Y�N
Y�N
Y�N
Y�N
Y�N
Y�N
Y�N
Y�N
Y�NMNN
Y�
Y�N
Y�
Z

Y�
Y�N
Y�
Y�N
Y�N
Y�N
Y�N
Y�N
Y�N
Y�N
Y�N
Y�N
Y�N
Y�N
Y�N
Y�NMNN
Y�
Y�N
Y�NN
Y�N
Z
ZNN
Z
ZN
ZNN
Z
ZN
ZN
ZNM
Z	MN
ZNN
Z
Z
N
ZN
ZN
ZN
ZN
ZN
ZN
ZN
ZN
ZN
ZN
ZN
ZNMN
Z
[L
Z
Z�
ZN
ZN
Z
ZQ
Z N
Z!N
Z"
ZA
Z#
Z2N
Z$
Z%N
Z&N
Z'N
Z(N
Z)N
Z*N
Z+N
Z,N
Z-N
Z.N
Z/N
Z0N
Z1N]NN
Z3
Z4NN
Z5
Z6N
Z7NN
Z8
Z9N
Z:N
Z;NN
Z<
Z=N]
Z>
Z?N]
Z@]N
ZBNN
ZC
ZDN
ZEN
ZFN
ZGN
ZHN
ZIN
ZJN
ZKN
ZLN
ZMN
ZNN
ZON
ZPN]N
ZR
Z�
ZSN
ZT
Zs
ZU
ZdN
ZV
ZWN
ZXN
ZYN
ZZN
Z[N
Z\N
Z]N
Z^N
Z_N
Z`N
ZaN
ZbN
ZcN]NN
Ze
ZfNN
Zg
ZhN
ZiNN
Zj
ZkN
ZlN
ZmNN
Zn
ZoN]
Zp
ZqN]
Zr]N
ZtNN
Zu
ZvN
ZwN
ZxN
ZyN
ZzN
Z{N
Z|N
Z}N
Z~N
ZN
Z�N
Z�N
Z�N]N
Z�N
Z�
Z�
Z�
Z�N
Z�
Z�N
Z�N
Z�N
Z�N
Z�N
Z�N
Z�N
Z�N
Z�N
Z�N
Z�N
Z�N
Z�N]NN
Z�
Z�NN
Z�
Z�N
Z�NN
Z�
Z�N
Z�N
Z�NN
Z�
Z�N]
Z�
Z�N]
Z�]N
Z�NN
Z�
Z�N
Z�N
Z�N
Z�N
Z�N
Z�N
Z�N
Z�N
Z�N
Z�N
Z�N
Z�N
Z�N]N
Z�N
Z�N
Z�
[
Z�
Z�
Z�N
Z�
Z�
Z�
Z�N
Z�
Z�N
Z�N
Z�N
Z�N
Z�N
Z�N
Z�N
Z�N
Z�N
Z�N
Z�N
Z�N
Z�NQbNN
Z�
Z�N
Z�N
Z�N
Z�N
Z�N
Z�N
Z�N
Z�N
Z�N
Z�N
Z�N
Z�N
Z�NQbN
Z�NN
Z�
Z�N
Z�N
Z�N
Z�N
Z�N
Z�N
Z�N
Z�N
Z�N
Z�N
Z�N
Z�N
Z�NQbN
Z�N
Z�
[

Z�
Z�N
Z�
Z�N
Z�N
Z�N
Z�N
Z�N
Z�N
Z�N
Z�N
Z�N
Z�N
Z�N
Z�N
Z�NQbNN
Z�
Z�N
Z�N
Z�N
[N
[N
[N
[N
[N
[N
[N
[N
[N
[	NQbN
[NN
[
[
N
[N
[N
[N
[N
[N
[N
[N
[N
[N
[N
[N
[NQbN
[N
[N
[
[<
[
[-N
[
[ N
[!N
["N
[#N
[$N
[%N
[&N
['N
[(N
[)N
[*N
[+N
[,NQbNN
[.
[/N
[0N
[1N
[2N
[3N
[4N
[5N
[6N
[7N
[8N
[9N
[:N
[;NQbN
[=NN
[>
[?N
[@N
[AN
[BN
[CN
[DN
[EN
[FN
[GN
[HN
[IN
[JN
[KNQbN
[M
\
[NN
[ON
[P
[�
[Q
[�
[R
[�
[S
[r
[T
[cN
[U
[VN
[WN
[XN
[YN
[ZN
[[N
[\N
[]N
[^N
[_N
[`N
[aN
[bNmNN
[d
[eN
[fNN
[g
[hN
[iNN
[jN
[k
[lN
[mN
[nN
[oN
[pN
[qNmN
[sNN
[t
[uN
[vN
[wN
[xN
[yN
[zN
[{N
[|N
[}N
[~N
[N
[�N
[�NmN
[�
[�
[�
[�N
[�
[�N
[�N
[�N
[�N
[�N
[�N
[�N
[�N
[�N
[�N
[�N
[�N
[�NmNN
[�
[�N
[�NN
[�
[�N
[�NN
[�N
[�
[�N
[�N
[�N
[�N
[�N
[�NmN
[�NN
[�
[�N
[�N
[�N
[�N
[�N
[�N
[�N
[�N
[�N
[�N
[�N
[�N
[�NmN
[�N
[�
[�
[�
[�N
[�
[�N
[�N
[�N
[�N
[�N
[�N
[�N
[�N
[�N
[�N
[�N
[�N
[�NmNN
[�
[�N
[�NN
[�
[�N
[�NN
[�N
[�
[�N
[�N
[�N
[�N
[�N
[�NmN
[�NN
[�
[�N
[�N
[�N
[�N
[�N
[�N
[�N
[�N
[�N
[�N
[�N
[�N
[�NmN
[�N
[�N
[�
\
[�
[�N
[�
[�N
[�N
[�N
[�N
[�N
[�N
[�N
[�N
[�N
[�N
[�N
[�N
[�NmNN
[�
[�N
[�NN
[�
[�N
[�NN
[�N
[�
[�N
\N
\N
\N
\N
\NmN
\NN
\
\N
\	N
\
N
\N
\N
\
N
\N
\N
\N
\N
\N
\N
\NmN
\N
\N
\
\{
\
\J
\N
\
\:
\
\+N
\
\N
\N
\ N
\!N
\"N
\#N
\$N
\%N
\&N
\'N
\(N
\)N
\*N|NN
\,
\-N
\.NN
\/
\0N
\1NN
\2
\3NN
\4N
\5
\6N
\7N
\8N
\9N|N
\;NN
\<
\=N
\>N
\?N
\@N
\AN
\BN
\CN
\DN
\EN
\FN
\GN
\HN
\IN|N
\KN
\L
\k
\M
\\N
\N
\ON
\PN
\QN
\RN
\SN
\TN
\UN
\VN
\WN
\XN
\YN
\ZN
\[N|NN
\]
\^N
\_NN
\`
\aN
\bNN
\c
\dNN
\eN
\f
\gN
\hN
\iN
\jN|N
\lNN
\m
\nN
\oN
\pN
\qN
\rN
\sN
\tN
\uN
\vN
\wN
\xN
\yN
\zN|N
\|N
\}N
\~
\�
\
\�N
\�
\�N
\�N
\�N
\�N
\�N
\�N
\�N
\�N
\�N
\�N
\�N
\�N
\�N|NN
\�
\�N
\�NN
\�
\�N
\�NN
\�
\�NN
\�N
\�
\�N
\�N
\�N
\�N|N
\�NN
\�
\�N
\�N
\�N
\�N
\�N
\�N
\�N
\�N
\�N
\�N
\�N
\�N
\�N|N
\�
_A
\�
]�
\�
]H
\�N
\�N
\�
]
\�
\�
\�N
\�
\�
\�
\�N
\�
\�N
\�N
\�N
\�N
\�N
\�N
\�N
\�N
\�N
\�N
\�N
\�N
\�N�NN
\�
\�N
\�NN
\�
\�N
\�NN
\�
\�NN
\�
\�N
\�N
\�N
\�N
\�N�N
\�NN
\�
\�N
\�N
\�N
\�N
\�N
\�N
\�N
\�N
\�N
\�N
\�N
\�N
\�N�N
\�N
\�
]
\�
\�N
\�
\�N
\�N
\�N
\�N
\�N
\�N
\�N
\�N
\�N
\�N
\�N
\�N
\�N�NN
\�
\�N
\�NN
\�
\�N
\�NN
\�
\�NN
]
]N
]N
]N
]N
]N�N
]NN
]
]	N
]
N
]N
]N
]
N
]N
]N
]N
]N
]N
]N
]N
]N�N
]N
]N
]
]8
]
])N
]
]N
]N
]N
]N
] N
]!N
]"N
]#N
]$N
]%N
]&N
]'N
](N�NN
]*
]+N
],NN
]-
].N
]/NN
]0
]1NN
]2
]3N
]4N
]5N
]6N
]7N�N
]9NN
]:
];N
]<N
]=N
]>N
]?N
]@N
]AN
]BN
]CN
]DN
]EN
]FN
]GN�N
]IN
]JN
]K
]�
]L
]}
]MN
]N
]m
]O
]^N
]P
]QN
]RN
]SN
]TN
]UN
]VN
]WN
]XN
]YN
]ZN
][N
]\N
]]N�NN
]_
]`N
]aNN
]b
]cN
]dN
]eNN
]fN
]gN
]h
]iN
]jN
]kN
]lN�N
]nNN
]o
]pN
]qN
]rN
]sN
]tN
]uN
]vN
]wN
]xN
]yN
]zN
]{N
]|N�N
]~N
]
]�
]�
]�N
]�
]�N
]�N
]�N
]�N
]�N
]�N
]�N
]�N
]�N
]�N
]�N
]�N
]�N�NN
]�
]�N
]�NN
]�
]�N
]�N
]�NN
]�N
]�N
]�
]�N
]�N
]�N
]�N�N
]�NN
]�
]�N
]�N
]�N
]�N
]�N
]�N
]�N
]�N
]�N
]�N
]�N
]�N
]�N�N
]�N
]�N
]�
]�
]�
]�N
]�
]�N
]�N
]�N
]�N
]�N
]�N
]�N
]�N
]�N
]�N
]�N
]�N
]�N�NN
]�
]�N
]�NN
]�
]�N
]�N
]�NN
]�N
]�N
]�
]�N
]�N
]�N
]�N�N
]�NN
]�
]�N
]�N
]�N
]�N
]�N
]�N
]�N
]�N
]�N
]�N
]�N
]�N
]�N�N
]�
^y
]�N
]�N
]�
^G
]�
^
]�N
]�
^
]�
]�N
]�
]�N
]�N
]�N
]�N
]�N
]�N
]�N
]�N
]�N
]�N
]�N
]�N
]�N�NN
]�
]�N
]�NN
]�
]�N
]�N
]�NN
]�N
^
^N
^N
^N
^N
^N�N
^NN
^
^	N
^
N
^N
^N
^
N
^N
^N
^N
^N
^N
^N
^N
^N�N
^N
^
^7
^
^(N
^
^N
^N
^N
^N
^N
^ N
^!N
^"N
^#N
^$N
^%N
^&N
^'N�NN
^)
^*N
^+NN
^,
^-N
^.N
^/NN
^0N
^1
^2N
^3N
^4N
^5N
^6N�N
^8NN
^9
^:N
^;N
^<N
^=N
^>N
^?N
^@N
^AN
^BN
^CN
^DN
^EN
^FN�N
^HN
^IN
^J
^i
^K
^ZN
^L
^MN
^NN
^ON
^PN
^QN
^RN
^SN
^TN
^UN
^VN
^WN
^XN
^YN�NN
^[
^\N
^]NN
^^
^_N
^`N
^aNN
^bN
^c
^dN
^eN
^fN
^gN
^hN�N
^jNN
^k
^lN
^mN
^nN
^oN
^pN
^qN
^rN
^sN
^tN
^uN
^vN
^wN
^xN�N
^zN
^{N
^|
_
^}
^�
^~
^�
^
^�
^�
^�N
^�
^�N
^�N
^�N
^�N
^�N
^�N
^�N
^�N
^�N
^�N
^�N
^�N
^�N�NN
^�
^�N
^�NN
^�
^�N
^�N
^�NN
^�
^�N
^�N
^�N
^�N
^�N
^�N�N
^�NN
^�
^�N
^�N
^�N
^�N
^�N
^�N
^�N
^�N
^�N
^�N
^�N
^�N
^�N�N
^�
^�
^�
^�N
^�
^�N
^�N
^�N
^�N
^�N
^�N
^�N
^�N
^�N
^�N
^�N
^�N
^�N�NN
^�
^�N
^�NN
^�
^�N
^�N
^�NN
^�
^�N
^�N
^�N
^�N
^�N
^�N�N
^�NN
^�
^�N
^�N
^�N
^�N
^�N
^�N
^�N
^�N
^�N
^�N
^�N
^�N
^�N�N
^�N
^�
^�
^�
^�N
^�
^�N
^�N
^�N
^�N
^�N
^�N
^�N
^�N
^�N
^�N
^�N
^�N
^�N�NN
^�
^�N
^�NN
^�
^�N
^�N
^�NN
^�
^�N
^�N
^�N
^�N
^�N
^�N�N
_NN
_
_N
_N
_N
_N
_N
_N
_N
_	N
_
N
_N
_N
_
N
_N�N
_N
_N
_
_1
_
_"N
_
_N
_N
_N
_N
_N
_N
_N
_N
_N
_N
_N
_ N
_!N�NN
_#
_$N
_%NN
_&
_'N
_(N
_)NN
_*
_+N
_,N
_-N
_.N
_/N
_0N�N
_2NN
_3
_4N
_5N
_6N
_7N
_8N
_9N
_:N
_;N
_<N
_=N
_>N
_?N
_@N�N
_B
`�
_C
_�
_DN
_EN
_F
_�
_G
_x
_HN
_I
_h
_J
_YN
_K
_LN
_MN
_NN
_ON
_PN
_QN
_RN
_SN
_TN
_UN
_VN
_WN
_XN�NN
_Z
_[N
_\N
_]NN
_^N
__N
_`
_aN
_bNN
_c
_dN
_eN
_fN
_gN�N
_iNN
_j
_kN
_lN
_mN
_nN
_oN
_pN
_qN
_rN
_sN
_tN
_uN
_vN
_wN�N
_yN
_z
_�
_{
_�N
_|
_}N
_~N
_N
_�N
_�N
_�N
_�N
_�N
_�N
_�N
_�N
_�N
_�N�NN
_�
_�N
_�N
_�NN
_�N
_�N
_�
_�N
_�NN
_�
_�N
_�N
_�N
_�N�N
_�NN
_�
_�N
_�N
_�N
_�N
_�N
_�N
_�N
_�N
_�N
_�N
_�N
_�N
_�N�N
_�N
_�N
_�
_�
_�
_�N
_�
_�N
_�N
_�N
_�N
_�N
_�N
_�N
_�N
_�N
_�N
_�N
_�N
_�N�NN
_�
_�N
_�N
_�NN
_�N
_�N
_�
_�N
_�NN
_�
_�N
_�N
_�N
_�N�N
_�NN
_�
_�N
_�N
_�N
_�N
_�N
_�N
_�N
_�N
_�N
_�N
_�N
_�N
_�N�N
_�N
_�
`�
_�
`
_�N
_�N
_�
`
_�
_�N
_�
_�N
_�N
_�N
_�N
_�N
_�N
_�N
_�N
_�N
_�N
_�N
_�N
_�N�NN
_�
_�N
_�N
_�NN
_�N
_�
_�NN
_�
_�NN
_�
_�N
_�N
_�N
_�N�N
`NN
`
`N
`N
`N
`N
`N
`N
`	N
`
N
`N
`N
`
N
`N
`N�N
`
`�
`
`Q
`
`2
`
`#N
`
`N
`N
`N
`N
`N
`N
`N
`N
`N
`N
` N
`!N
`"N�NN
`$
`%N
`&N
`'NN
`(N
`)
`*NN
`+
`,NN
`-
`.N
`/N
`0N
`1N�N
`3
`BN
`4
`5N
`6N
`7N
`8N
`9N
`:N
`;N
`<N
`=N
`>N
`?N
`@N
`AN�NN
`C
`DN
`EN
`FNN
`GN
`H
`INN
`J
`KNN
`L
`MN
`NN
`ON
`PN�N
`R
`q
`S
`bN
`T
`UN
`VN
`WN
`XN
`YN
`ZN
`[N
`\N
`]N
`^N
`_N
``N
`aN�NN
`c
`dN
`eN
`fNN
`gN
`h
`iNN
`j
`kNN
`l
`mN
`nN
`oN
`pN�N
`rNN
`s
`tN
`uN
`vN
`wN
`xN
`yN
`zN
`{N
`|N
`}N
`~N
`N
`�N�N
`�N
`�
`�
`�
`�N
`�
`�N
`�N
`�N
`�N
`�N
`�N
`�N
`�N
`�N
`�N
`�N
`�N
`�N�NN
`�
`�N
`�N
`�NN
`�N
`�
`�NN
`�
`�NN
`�
`�N
`�N
`�N
`�N�N
`�NN
`�
`�N
`�N
`�N
`�N
`�N
`�N
`�N
`�N
`�N
`�N
`�N
`�N
`�N�N
`�N
`�N
`�N
`�
`�
`�NN
`�
`�N
`�N
`�N
`�N
`�N
`�N
`�N
`�N
`�N
`�N
`�N
`�N
`�N�N
`�NN
`�
`�N
`�N
`�N
`�N
`�N
`�N
`�N
`�N
`�N
`�N
`�N
`�N
`�N�N
`�
ac
`�N
`�N
`�
a@
`�
a
`�
`�
`�
`�
`�NN
`�
`�N
`�N
`�N
`�N
`�N
`�N
`�N
`�N
`�N
`�N
`�N
`�N
`�N�N
`�NN
`�
`�N
`�N
`�N
`�N
`�N
`�N
`�N
`�N
`�N
`�N
`�N
`�N
`�N�N
`�
a
`�NN
a
aN
aN
aN
aN
aN
aN
aN
aN
a	N
a
N
aN
aN
a
N�N
aNN
a
aN
aN
aN
aN
aN
aN
aN
aN
aN
aN
aN
aN
aN�N
aN
a 
a0
a!NN
a"
a#N
a$N
a%N
a&N
a'N
a(N
a)N
a*N
a+N
a,N
a-N
a.N
a/N�N
a1NN
a2
a3N
a4N
a5N
a6N
a7N
a8N
a9N
a:N
a;N
a<N
a=N
a>N
a?N�N
aAN
aBN
aC
aS
aDNN
aE
aFN
aGN
aHN
aIN
aJN
aKN
aLN
aMN
aNN
aON
aPN
aQN
aRN�N
aTNN
aU
aVN
aWN
aXN
aYN
aZN
a[N
a\N
a]N
a^N
a_N
a`N
aaN
abN�N
adN
aeN
af
a�
ag
a�
ah
a�
ai
ay
ajNN
ak
alN
amN
anN
aoN
apN
aqN
arN
asN
atN
auN
avN
awN
axN�N
azNN
a{
a|N
a}N
a~N
aN
a�N
a�N
a�N
a�N
a�N
a�N
a�N
a�N
a�N�N
a�
a�
a�NN
a�
a�N
a�N
a�N
a�N
a�N
a�N
a�N
a�N
a�N
a�N
a�N
a�N
a�N�N
a�NN
a�
a�N
a�N
a�N
a�N
a�N
a�N
a�N
a�N
a�N
a�N
a�N
a�N
a�N�N
a�N
a�
a�
a�NN
a�
a�N
a�N
a�N
a�N
a�N
a�N
a�N
a�N
a�N
a�N
a�N
a�N
a�N�N
a�NN
a�
a�N
a�N
a�N
a�N
a�N
a�N
a�N
a�N
a�N
a�N
a�N
a�N
a�N�N
a�N
a�N
a�
a�
a�NN
a�
a�N
a�N
a�N
a�N
a�N
a�N
a�N
a�N
a�N
a�N
a�N
a�N
a�N�N
a�NN
a�
a�N
a�N
a�N
a�N
a�N
a�N
a�N
a�N
a�N
a�N
a�N
a�N
a�N�N
a�
eb
a�
c#�V
a�
a�
b�
a��V
a��V
a�
bY
a�
b(
a��V
a�
b
a�
b	�V
a�
a��V
a��V
a��V
a��V
b�V
b�V
b�V
b�V
b�V
b�V
b�V
b�V
b�V��V�V
b

b�V
b�V
b
�V�V
b�V
b
b�V
b�V�V
b�V
b
b�V
b�V
b�V
b�V��V
b�V�V
b
b�V
b�V
b�V
b�V
b�V
b �V
b!�V
b"�V
b#�V
b$�V
b%�V
b&�V
b'�V��V
b)�V
b*
bI
b+
b:�V
b,
b-�V
b.�V
b/�V
b0�V
b1�V
b2�V
b3�V
b4�V
b5�V
b6�V
b7�V
b8�V
b9�V��V�V
b;
b<�V
b=�V
b>�V�V
b?�V
b@
bA�V
bB�V�V
bC�V
bD
bE�V
bF�V
bG�V
bH�V��V
bJ�V�V
bK
bL�V
bM�V
bN�V
bO�V
bP�V
bQ�V
bR�V
bS�V
bT�V
bU�V
bV�V
bW�V
bX�V��V
bZ�V
b[�V
b\
b{
b]
bl�V
b^
b_�V
b`�V
ba�V
bb�V
bc�V
bd�V
be�V
bf�V
bg�V
bh�V
bi�V
bj�V
bk�V��V�V
bm
bn�V
bo�V
bp�V�V
bq�V
br
bs�V
bt�V�V
bu�V
bv
bw�V
bx�V
by�V
bz�V��V
b|�V�V
b}
b~�V
b�V
b��V
b��V
b��V
b��V
b��V
b��V
b��V
b��V
b��V
b��V
b��V��V
b��V
b��V
b�
b�
b�
b�
b��V
b�
b�
b�
b��V
b�
b��V
b��V
b��V
b��V
b��V
b��V
b��V
b��V
b��V
b��V
b��V
b��V
b��V��V�V
b�
b��V
b��V
b��V�V
b��V
b�
b��V
b��V�V
b�
b��V
b��V
b��V
b��V
b��V��V
b��V�V
b�
b��V
b��V
b��V
b��V
b��V
b��V
b��V
b��V
b��V
b��V
b��V
b��V
b��V��V
b��V
b�
b�
b�
b��V
b�
b��V
b��V
b��V
b��V
b��V
b��V
b��V
b��V
b��V
b��V
b��V
b��V
b��V��V�V
b�
b��V
b��V
b��V�V
b��V
b�
b��V
b��V�V
b�
b��V
b��V
b��V
b��V
b��V��V
b��V�V
b�
b��V
b��V
b��V
b��V
b��V
b��V
b��V
b��V
b��V
b��V
b��V
b��V
b��V��V
b��V
b��V
b�
c
b�
c�V
b�
b��V
b��V
b��V
b��V
b��V
b��V
b��V
b��V
b��V
c�V
c�V
c�V
c�V��V�V
c
c�V
c�V
c�V�V
c	�V
c

c�V
c�V�V
c

c�V
c�V
c�V
c�V
c�V��V
c�V�V
c
c�V
c�V
c�V
c�V
c�V
c�V
c�V
c�V
c�V
c�V
c �V
c!�V
c"�V��V
c$
dI
c%
c�
c&�V
c'�V
c(
c�
c)
cZ
c*�V
c+
cJ
c,
c;�V
c-
c.�V
c/�V
c0�V
c1�V
c2�V
c3�V
c4�V
c5�V
c6�V
c7�V
c8�V
c9�V
c:�V�V�V
c<
c=�V
c>�V
c?�V�V
c@�V
cA
cB�V
cC�V
cD�V�V
cE
cF�V
cG�V
cH�V
cI�V�V
cK�V�V
cL
cM�V
cN�V
cO�V
cP�V
cQ�V
cR�V
cS�V
cT�V
cU�V
cV�V
cW�V
cX�V
cY�V�V
c[�V
c\
c{
c]
cl�V
c^
c_�V
c`�V
ca�V
cb�V
cc�V
cd�V
ce�V
cf�V
cg�V
ch�V
ci�V
cj�V
ck�V�V�V
cm
cn�V
co�V
cp�V�V
cq�V
cr
cs�V
ct�V
cu�V�V
cv
cw�V
cx�V
cy�V
cz�V�V
c|�V�V
c}
c~�V
c�V
c��V
c��V
c��V
c��V
c��V
c��V
c��V
c��V
c��V
c��V
c��V�V
c��V
c��V
c�
c�
c�
c��V
c�
c��V
c��V
c��V
c��V
c��V
c��V
c��V
c��V
c��V
c��V
c��V
c��V
c��V�V�V
c�
c��V
c��V
c��V�V
c��V
c�
c��V
c��V
c��V�V
c�
c��V
c��V
c��V
c��V�V
c��V�V
c�
c��V
c��V
c��V
c��V
c��V
c��V
c��V
c��V
c��V
c��V
c��V
c��V
c��V�V
c��V
c��V
c�
d&
c�
d
c�
c�
c�
c�
c��V�V
c�
c��V
c��V
c��V
c��V
c��V
c��V
c��V
c��V
c��V
c��V
c��V
c��V
c��V�V
c��V�V
c�
c��V
c��V
c��V
c��V
c��V
c��V
c��V
c��V
c��V
c��V
c��V
c��V
c��V�V
c�
c�
c��V�V
c�
c��V
c��V
c��V
c��V
c��V
c��V
c��V
c��V
c��V
c��V
c��V
c��V
c��V�V
c��V�V
c�
c��V
c��V
c��V
c��V
c��V
c��V
c��V
c��V
c��V
d�V
d�V
d�V
d�V�V
d�V
d
d
d�V�V
d
d	�V
d
�V
d�V
d�V
d
�V
d�V
d�V
d�V
d�V
d�V
d�V
d�V
d�V�V
d�V�V
d
d�V
d�V
d�V
d�V
d�V
d�V
d�V
d �V
d!�V
d"�V
d#�V
d$�V
d%�V�V
d'�V
d(�V
d)
d9
d*�V�V
d+
d,�V
d-�V
d.�V
d/�V
d0�V
d1�V
d2�V
d3�V
d4�V
d5�V
d6�V
d7�V
d8�V�V
d:�V�V
d;
d<�V
d=�V
d>�V
d?�V
d@�V
dA�V
dB�V
dC�V
dD�V
dE�V
dF�V
dG�V
dH�V�V
dJ
d�
dK�V
dL�V
dM
d�
dN
d�
dO
dp
dP
d`
dQ�V�V
dR
dS�V
dT�V
dU�V
dV�V
dW�V
dX�V
dY�V
dZ�V
d[�V
d\�V
d]�V
d^�V
d_�V�V
da�V�V
db
dc�V
dd�V
de�V
df�V
dg�V
dh�V
di�V
dj�V
dk�V
dl�V
dm�V
dn�V
do�V�V
dq
d�
dr�V�V
ds
dt�V
du�V
dv�V
dw�V
dx�V
dy�V
dz�V
d{�V
d|�V
d}�V
d~�V
d�V
d��V�V
d��V�V
d�
d��V
d��V
d��V
d��V
d��V
d��V
d��V
d��V
d��V
d��V
d��V
d��V
d��V�V
d��V
d�
d�
d��V�V
d�
d��V
d��V
d��V
d��V
d��V
d��V
d��V
d��V
d��V
d��V
d��V
d��V
d��V�V
d��V�V
d�
d��V
d��V
d��V
d��V
d��V
d��V
d��V
d��V
d��V
d��V
d��V
d��V
d��V�V
d��V
d��V
d�
d�
d��V�V
d�
d��V
d��V
d��V
d��V
d��V
d��V
d��V
d��V
d��V
d��V
d��V
d��V
d��V�V
d��V�V
d�
d��V
d��V
d��V
d��V
d��V
d��V
d��V
d��V
d��V
d��V
d��V
d��V
d��V�V
d��V
d��V
d�
e?
d�
e
d�
d�
d�
d�
d��V�V
d�
d��V
d��V
d��V
d��V
d��V
d��V
d��V
d��V
d��V
d��V
d��V
d��V
d��V�V
d��V�V
d�
d��V
d��V
d��V
d��V
d��V
d��V
d��V
d��V
d��V
d��V
d��V
d��V
d��V�V
d�
e

d��V�V
d�
e�V
e�V
e�V
e�V
e�V
e�V
e�V
e�V
e�V
e	�V
e
�V
e�V
e�V�V
e�V�V
e
e�V
e�V
e�V
e�V
e�V
e�V
e�V
e�V
e�V
e�V
e�V
e�V
e�V�V
e�V
e
e/
e �V�V
e!
e"�V
e#�V
e$�V
e%�V
e&�V
e'�V
e(�V
e)�V
e*�V
e+�V
e,�V
e-�V
e.�V�V
e0�V�V
e1
e2�V
e3�V
e4�V
e5�V
e6�V
e7�V
e8�V
e9�V
e:�V
e;�V
e<�V
e=�V
e>�V�V
e@�V
eA�V
eB
eR
eC�V�V
eD
eE�V
eF�V
eG�V
eH�V
eI�V
eJ�V
eK�V
eL�V
eM�V
eN�V
eO�V
eP�V
eQ�V�V
eS�V�V
eT
eU�V
eV�V
eW�V
eX�V
eY�V
eZ�V
e[�V
e\�V
e]�V
e^�V
e_�V
e`�V
ea�V�V
ec
iU
ed
f�
ee
f.
efN
egN
eh
e�
ei
e�
ejN
ek
e�
el
e{N
em
enN
eoN
epN
eqN
erN
esN
etN
euN
evN
ewN
exN
eyN
ezN!NN
e|
e}N
e~N
eN
e�NN
e�
e�N
e�N
e�NN
e�
e�N
e�N
e�N
e�N!N
e�NN
e�
e�N
e�N
e�N
e�N
e�N
e�N
e�N
e�N
e�N
e�N
e�N
e�N
e�N!N
e�N
e�
e�
e�
e�N
e�
e�N
e�N
e�N
e�N
e�N
e�N
e�N
e�N
e�N
e�N
e�N
e�N
e�N!NN
e�
e�N
e�N
e�N
e�NN
e�
e�N
e�N
e�NN
e�
e�N
e�N
e�N
e�N!N
e�NN
e�
e�N
e�N
e�N
e�N
e�N
e�N
e�N
e�N
e�N
e�N
e�N
e�N
e�N!N
e�
e�
e�N
e�
e�
e�
e�N
e�
e�N
e�N
e�N
e�N
e�N
e�N
e�N
e�N
e�N
e�N
e�N
e�N
e�N!NN
e�
e�N
e�N
e�N
e�NN
e�
e�N
e�N
e�NN
e�
e�N
e�N
e�N
e�N!N
e�NN
e�
e�N
e�N
e�N
e�N
e�N
e�N
e�N
e�N
e�N
e�N
e�N
e�N
e�N!N
e�N
e�
f
f
fN
f
fN
fN
fN
fN
fN
fN
fN
f	N
f
N
fN
fN
f
N
fN!NN
f
fN
fN
fN
fNN
f
fN
fN
fNN
f
fN
fN
fN
fN!N
fNN
f 
f!N
f"N
f#N
f$N
f%N
f&N
f'N
f(N
f)N
f*N
f+N
f,N
f-N!N
f/N
f0N
f1
f�
f2
f�
f3
fc
f4
fS
f5
fDN
f6
f7N
f8N
f9N
f:N
f;N
f<N
f=N
f>N
f?N
f@N
fAN
fBN
fCN0NN
fE
fFN
fGN
fHN
fIN
fJNN
fK
fLNN
fMN
fN
fON
fPN
fQN
fRN0N
fTNN
fU
fVN
fWN
fXN
fYN
fZN
f[N
f\N
f]N
f^N
f_N
f`N
faN
fbN0N
fd
f�
fe
ftN
ff
fgN
fhN
fiN
fjN
fkN
flN
fmN
fnN
foN
fpN
fqN
frN
fsN0NN
fu
fvN
fwN
fxN
fyN
fzNN
f{
f|NN
f}N
f~
fN
f�N
f�N
f�N0N
f�NN
f�
f�N
f�N
f�N
f�N
f�N
f�N
f�N
f�N
f�N
f�N
f�N
f�N
f�N0N
f�N
f�
f�
f�
f�N
f�
f�N
f�N
f�N
f�N
f�N
f�N
f�N
f�N
f�N
f�N
f�N
f�N
f�N0NN
f�
f�N
f�N
f�N
f�N
f�NN
f�
f�NN
f�N
f�
f�N
f�N
f�N
f�N0N
f�NN
f�
f�N
f�N
f�N
f�N
f�N
f�N
f�N
f�N
f�N
f�N
f�N
f�N
f�N0N
f�N
f�N
f�
f�
f�
f�N
f�
f�N
f�N
f�N
f�N
f�N
f�N
f�N
f�N
f�N
f�N
f�N
f�N
f�N0NN
f�
f�N
f�N
f�N
f�N
f�NN
f�
f�NN
f�N
f�
f�N
f�N
f�N
f�N0N
f�NN
f�
f�N
f�N
f�N
f�N
f�N
f�N
f�N
f�N
f�N
f�N
f�N
f�N
f�N0N
f�
g�
f�N
f�N
f�
g�
f�
g\
f�
g,
f�
g
f�
g
N
f�
gN
gN
gN
gN
gN
gN
gN
gN
gN
g	N
g
N
gN
gN?NN
g
gN
gN
gN
gN
gN
gN
gNN
gN
g
gN
gN
gN
gN?N
gNN
g
gN
g N
g!N
g"N
g#N
g$N
g%N
g&N
g'N
g(N
g)N
g*N
g+N?N
g-
gL
g.
g=N
g/
g0N
g1N
g2N
g3N
g4N
g5N
g6N
g7N
g8N
g9N
g:N
g;N
g<N?NN
g>
g?N
g@N
gAN
gBN
gCN
gDN
gENN
gFN
gG
gHN
gIN
gJN
gKN?N
gMNN
gN
gON
gPN
gQN
gRN
gSN
gTN
gUN
gVN
gWN
gXN
gYN
gZN
g[N?N
g]N
g^
g}
g_
gnN
g`
gaN
gbN
gcN
gdN
geN
gfN
ggN
ghN
giN
gjN
gkN
glN
gmN?NN
go
gpN
gqN
grN
gsN
gtN
guN
gvNN
gwN
gx
gyN
gzN
g{N
g|N?N
g~NN
g
g�N
g�N
g�N
g�N
g�N
g�N
g�N
g�N
g�N
g�N
g�N
g�N
g�N?N
g�N
g�N
g�
g�
g�
g�N
g�
g�N
g�N
g�N
g�N
g�N
g�N
g�N
g�N
g�N
g�N
g�N
g�N
g�N?NN
g�
g�N
g�N
g�N
g�N
g�N
g�N
g�NN
g�N
g�
g�N
g�N
g�N
g�N?N
g�NN
g�
g�N
g�N
g�N
g�N
g�N
g�N
g�N
g�N
g�N
g�N
g�N
g�N
g�N?N
g�
h�
g�
h:
g�
g�
g�Q�Q�
g�
g�
g�
g�NN
g�
g�N
g�N
g�N
g�N
g�N
g�N
g�N
g�N
g�N
g�N
g�N
g�N
g�NQ�N
g�NN
g�
g�N
g�N
g�N
g�N
g�N
g�N
g�N
g�N
g�N
g�N
g�N
g�N
g�NQ�NN
g�
g�
hQ�
g�
g�
h
g�
g�Q�
g�
g�N
g�N
g�NQ�
g�
g�NQ�
g�
g�NQ�
g�Q�N
g�N
g�N
g�N
g�N
g�N
g�N
g�N
g�N
g�N
g�N
g�N
hN
hNQ�N
hNN
h
hN
hNQ�
h
h
h
h	Q�Q�
h
Q�
hQ�
h
h
Q�
hQ�Q�
hQ�
hNQ�Q�
h
hNQ�
hQ�
hQ�
hQ�
h
hNQ�N
h
h*
hNN
h
hN
hN
hN
h N
h!N
h"N
h#N
h$N
h%N
h&N
h'N
h(N
h)NQ�N
h+NN
h,
h-N
h.N
h/N
h0N
h1N
h2N
h3N
h4N
h5N
h6N
h7N
h8N
h9NQ�N
h;
hp
h<
hN
h=NQ�
h>
h?NN
h@
hAN
hBN
hCN
hDN
hEN
hFN
hGN
hHN
hIN
hJN
hKN
hLN
hMNQ�NQ�
hO
hP
h`
hQNN
hR
hSN
hTN
hUN
hVN
hWN
hXN
hYN
hZN
h[N
h\N
h]N
h^N
h_NQ�N
haNN
hb
hcN
hdN
heN
hfN
hgN
hhN
hiN
hjN
hkN
hlN
hmN
hnN
hoNQ�N
hq
h�Q�
hr
hs
h�
ht
h�
hu
hQ�
hv
hwN
hxN
hyNQ�
hz
h{NQ�
h|
h}NQ�
h~Q�N
h�N
h�N
h�N
h�N
h�N
h�N
h�N
h�N
h�N
h�N
h�N
h�N
h�NQ�N
h�NN
h�
h�NQ�N
h�NN
h�
h�N
h�N
h�N
h�N
h�N
h�N
h�N
h�N
h�N
h�N
h�N
h�N
h�NQ�N
h�NQ�
h�
h�NN
h�
h�N
h�N
h�N
h�N
h�N
h�N
h�N
h�N
h�N
h�N
h�N
h�N
h�NQ�N
h�
h�
h�
h�Q�
h�
h�NQ�
h�
h�NN
h�
h�N
h�N
h�N
h�N
h�N
h�N
h�N
h�N
h�N
h�N
h�N
h�N
h�NQ�N
h�Q�Q�
h�
h�
h�
h�NN
h�
h�N
h�N
h�N
h�N
h�N
h�N
h�N
h�N
h�N
h�N
h�N
h�N
h�NQ�N
h�NN
h�
h�N
h�N
h�N
h�N
h�N
h�N
h�N
h�N
h�N
h�N
h�N
h�N
h�NQ�N
h�
h�Q�
h�
h�NQ�
h�
h�NN
h�
h�N
h�N
h�N
h�N
h�N
h�N
h�N
h�N
h�N
h�N
h�N
h�N
h�NQ�N
i
i"Q�
i
i
i
iNN
i
iN
iN
iN
iN
i	N
i
N
iN
iN
i
N
iN
iN
iN
iNQ�N
iNN
i
iN
iN
iN
iN
iN
iN
iN
iN
iN
iN
iN
i N
i!NQ�N
i#
i4Q�
i$
i%NN
i&
i'N
i(N
i)N
i*N
i+N
i,N
i-N
i.N
i/N
i0N
i1N
i2N
i3NQ�N
i5
iE
i6NN
i7
i8N
i9N
i:N
i;N
i<N
i=N
i>N
i?N
i@N
iAN
iBN
iCN
iDNQ�N
iFNN
iG
iHN
iIN
iJN
iKN
iLN
iMN
iNN
iON
iPN
iQN
iRN
iSN
iTNQ�N
iV
j�
iW
j
iX\�
iY
i�
iZ
i�
i[
i�
i\\�
i]
iw
i^\�\�
i_
i`\�
ia\�
ib
im
ic\�
id\�
ie\�
if\�
ig\�
ih\�
ii\�
ij\�
ik\�
il\�N\�\�
in
io\�\�
ip\�
iq
ir\�
is\�
it\�
iu\�N
ivN\�
ix\�\�
iy
iz\�
i{\�
i|\�
i}\�
i~\�
i\�
i�\�
i�\�
i�\�
i�\�
i�\�
i�\�
i�\�N\�
i�\�
i�
i�
i�\�\�
i�
i�\�
i�\�
i�
i�
i�\�
i�\�
i�\�
i�\�
i�\�
i�\�
i�\�
i�\�
i�\�
i�\�N\�\�
i�
i�\�\�
i�\�
i�
i�\�
i�\�
i�\�
i�\�N
i�N\�
i�\�\�
i�
i�\�
i�\�
i�\�
i�\�
i�\�
i�\�
i�\�
i�\�
i�\�
i�\�
i�\�
i�\�
i�\�N\�\�
i�
i�\�
i�
i�
i�\�\�
i�
i�\�
i�\�
i�
i�
i�\�
i�\�
i�\�
i�\�
i�\�
i�\�
i�\�
i�\�
i�\�
i�\�N\�\�
i�
i�\�\�
i�\�
i�
i�\�
i�\�
i�\�
i�\�N
i�N\�
i�\�\�
i�
i�\�
i�\�
i�\�
i�\�
i�\�
i�\�
i�\�
i�\�
i�\�
i�\�
i�\�
i�\�
i�\�N\�
i�\�
i�\�
i�\�
i�
i�
i�\�\�
i�
i�\�
i�\�
i�
i�
i�\�
i�\�
i�\�
i�\�
i�\�
i�\�
i�\�
i�\�
i�\�
i�\�N\�\�
i�
i�\�\�
i�\�
i�
i�\�
i�\�
i�\�
i�\�N
i�N\�
i�\�\�
j
j\�
j\�
j\�
j\�
j\�
j\�
j\�
j\�
j	\�
j
\�
j\�
j\�
j
\�N\�
j\�
j
j�
j
j�
j
jT
j
jC
j
j3
j
j$\�
j
j\�
j\�
j\�
j\�
j\�
j\�
j\�
j\�
j\�
j \�
j!\�
j"\�
j#\�]\�\�
j%
j&\�
j'\�\�
j(
j)\�
j*\�
j+\�
j,\�
j-\�\�
j.
j/\�
j0\�
j1\�
j2\�]\�
j4\�\�
j5
j6\�
j7\�
j8\�
j9\�
j:\�
j;\�
j<\�
j=\�
j>\�
j?\�
j@\�
jA\�
jB\�]\�
jD\�
jE\�\�
jF
jG\�
jH\�
jI\�
jJ\�
jK\�
jL\�
jM\�
jN\�
jO\�
jP\�
jQ\�
jR\�
jS\�]\�
jU\�
jV
ju
jW
jf\�
jX
jY\�
jZ\�
j[\�
j\\�
j]\�
j^\�
j_\�
j`\�
ja\�
jb\�
jc\�
jd\�
je\�]\�\�
jg
jh\�
ji\�\�
jj
jk\�
jl\�
jm\�
jn\�
jo\�\�
jp
jq\�
jr\�
js\�
jt\�]\�
jv\�\�
jw
jx\�
jy\�
jz\�
j{\�
j|\�
j}\�
j~\�
j\�
j�\�
j�\�
j�\�
j�\�
j�\�]\�\�
j�
j�\�
j�\�
j�
j�\�
j�
j�\�
j�\�
j�\�
j�\�
j�\�
j�\�
j�\�
j�\�
j�\�
j�\�
j�\�
j�\�
j�\�]\�\�
j�
j�\�
j�\�\�
j�
j�\�
j�\�
j�\�
j�\�
j�\�\�
j�
j�\�
j�\�
j�\�
j�\�]\�
j�\�
j�\�
j�\�
j�
j�
j�
j�\�
j�
j�\�
j�\�
j�\�
j�\�
j�\�
j�\�
j�\�
j�\�
j�\�
j�\�
j�\�
j�\�
j�\�]\�\�
j�
j�\�
j�\�\�
j�
j�\�
j�\�
j�\�
j�\�
j�\�\�
j�
j�\�
j�\�
j�\�
j�\�]\�
j�\�\�
j�
j�\�
j�\�
j�\�
j�\�
j�\�
j�\�
j�\�
j�\�
j�\�
j�\�
j�\�
j�\�
j�\�]\�
j�\�
j�\�
j�
ku
j�
k
j�\�
j�
k
j�
j�
j�\�\�
j�
j�\�
j�\�
j�\�
j�
j�
j�\�
j�\�
j�\�
j�\�
j�\�
j�\�
j�\�
j�\�
j�\�l\�\�
j�
j�\�
j�\�\�
j�
j�\�
j�\�
j�\�
j�\�
j�\�l\�
j�\�\�
j�
j�\�
j�\�
k\�
k\�
k\�
k\�
k\�
k\�
k\�
k\�
k\�
k	\�
k
\�l\�
k\�
k
\�\�
k
k\�
k\�
k\�
k\�
k\�
k\�
k\�
k\�
k\�
k\�
k\�
k\�
k\�l\�
k
kI
k\�
k
k9
k \�\�
k!
k"\�
k#\�
k$\�
k%
k/
k&\�
k'\�
k(\�
k)\�
k*\�
k+\�
k,\�
k-\�
k.\�l\�\�
k0
k1\�
k2\�\�
k3
k4\�
k5\�
k6\�
k7\�
k8\�l\�
k:\�\�
k;
k<\�
k=\�
k>\�
k?\�
k@\�
kA\�
kB\�
kC\�
kD\�
kE\�
kF\�
kG\�
kH\�l\�
kJ\�
kK
ke
kL\�\�
kM
kN\�
kO\�
kP\�
kQ
k[
kR\�
kS\�
kT\�
kU\�
kV\�
kW\�
kX\�
kY\�
kZ\�l\�\�
k\
k]\�
k^\�\�
k_
k`\�
ka\�
kb\�
kc\�
kd\�l\�
kf\�\�
kg
kh\�
ki\�
kj\�
kk\�
kl\�
km\�
kn\�
ko\�
kp\�
kq\�
kr\�
ks\�
kt\�l\�
kv
k�
kw
k�
kx\�
ky\�
kz\�\�
k{
k|\�
k}\�
k~\�
k
k�
k�\�
k�\�
k�\�
k�\�
k�\�
k�\�
k�\�
k�\�
k�\�l\�\�
k�
k�\�
k�\�\�
k�
k�\�
k�\�
k�\�
k�\�
k�\�l\�
k�\�
k�
k�
k�\�\�
k�
k�\�
k�\�
k�\�
k�
k�
k�\�
k�\�
k�\�
k�\�
k�\�
k�\�
k�\�
k�\�
k�\�l\�\�
k�
k�\�
k�\�\�
k�
k�\�
k�\�
k�\�
k�\�
k�\�l\�
k�\�\�
k�
k�\�
k�\�
k�\�
k�\�
k�\�
k�\�
k�\�
k�\�
k�\�
k�\�
k�\�
k�\�
k�\�l\�
k�\�
k�\�
k�
k�
k�\�\�
k�
k�\�
k�\�
k�\�
k�
k�
k�\�
k�\�
k�\�
k�\�
k�\�
k�\�
k�\�
k�\�
k�\�l\�\�
k�
k�\�
k�\�\�
k�
k�\�
k�\�
k�\�
k�\�
k�\�l\�
k�\�\�
k�
k�\�
k�\�
k�\�
k�\�
k�\�
k�\�
k�\�
k�\�
k�\�
k�\�
k�\�
k�\�
k�\�l\�
k�Q�
k�
o�
k�
m�
k�
l�
k�
k�
k�
l�
k�
lU
k�
l%
k�
k�
l
k�
l
k�
k�
k�
k�
k�
k�
k�
l
l
l
l
l
l
l{
l
l	
l

l
l
l

l
l
l
l
l
l
l{
l
l
l
l
l
l
l
l
l
l
l 
l!
l"
l#
l${
l&
l'
lE
l(
l7
l)
l*
l+
l,
l-
l.
l/
l0
l1
l2
l3
l4
l5
l6{
l8
l9
l:
l;
l<
l=
l>
l?
l@
lA
lB
lC
lD{
lF
lG
lH
lI
lJ
lK
lL
lM
lN
lO
lP
lQ
lR
lS
lT{
lV
lW
lX
lv
lY
lh
lZ
l[
l\
l]
l^
l_
l`
la
lb
lc
ld
le
lf
lg{
li
lj
lk
ll
lm
ln
lo
lp
lq
lr
ls
lt
lu{
lw
lx
ly
lz
l{
l|
l}
l~
l
l�
l�
l�
l�
l�
l�{
l�
l�
l�
l�
l�
l�
l�
l�
l�
l�
l�
l�
l�
l�
l�
l�
l�
l�
l�
l�
l�{
l�
l�
l�
l�
l�
l�
l�
l�
l�
l�
l�
l�
l�{
l�
l�
l�
l�
l�
l�
l�
l�
l�
l�
l�
l�
l�
l�
l�{
l�Q�
l�Q�
l�
mQ
l�
m
l�
l�
l�Q�
l�
l�
l�
l�Q�
l�
l�Q�
l�Q�
l�Q�
l�Q�
l�Q�
l�Q�
l�Q�
l�Q�
l�Q�
l�Q�
l�Q�
l�Q�
l�Q�?�Q�Q�
l�
l�Q�
l�Q�
l�Q�
l�Q�
l�Q�
l�Q�Q�
l�
l�Q�
l�Q�
l�Q�
l�Q�
l�Q�
l�Q�?�Q�
l�Q�Q�
l�
l�Q�
l�Q�
l�Q�
l�Q�
l�Q�
l�Q�
l�Q�
l�Q�
l�Q�
l�Q�
l�Q�
l�Q�
l�Q�?�Q�
l�Q�
l�
m
l�
mQ�
l�
l�Q�
l�Q�
l�Q�
l�Q�
l�Q�
l�Q�
l�Q�
l�Q�
l�Q�
l�Q�
l�Q�
l�Q�
l�Q�?�Q�Q�
m
mQ�
mQ�
mQ�
mQ�
mQ�
mQ�Q�
m
m	Q�
m
Q�
mQ�
mQ�
m
Q�
mQ�?�Q�
mQ�Q�
m
mQ�
mQ�
mQ�
mQ�
mQ�
mQ�
mQ�
mQ�
mQ�
mQ�
mQ�
mQ�
mQ�?�Q�Q�
m 
m!Q�
m"
mA
m#
m2Q�
m$
m%Q�
m&Q�
m'Q�
m(Q�
m)Q�
m*Q�
m+Q�
m,Q�
m-Q�
m.Q�
m/Q�
m0Q�
m1Q�?�Q�Q�
m3
m4Q�
m5Q�
m6Q�
m7Q�
m8Q�
m9Q�Q�
m:
m;Q�
m<Q�
m=Q�
m>Q�
m?Q�
m@Q�?�Q�
mBQ�Q�
mC
mDQ�
mEQ�
mFQ�
mGQ�
mHQ�
mIQ�
mJQ�
mKQ�
mLQ�
mMQ�
mNQ�
mOQ�
mPQ�?�Q�
mRQ�
mSQ�
mTQ�
mU
mt
mV
meQ�
mW
mXQ�
mYQ�
mZQ�
m[Q�
m\Q�
m]Q�
m^Q�
m_Q�
m`Q�
maQ�
mbQ�
mcQ�
mdQ�?�Q�Q�
mf
mgQ�
mhQ�
miQ�
mjQ�
mkQ�
mlQ�Q�
mm
mnQ�
moQ�
mpQ�
mqQ�
mrQ�
msQ�?�Q�
muQ�Q�
mv
mwQ�
mxQ�
myQ�
mzQ�
m{Q�
m|Q�
m}Q�
m~Q�
mQ�
m�Q�
m�Q�
m�Q�
m�Q�?�Q�
m�
o:
m�
nO
m�N
m�N
m�
m�
m�
m�
m�N
m�
m�
m�
m�N
m�
m�N
m�N
m�N
m�N
m�N
m�N
m�N
m�N
m�N
m�N
m�N
m�N
m�N`�NN
m�
m�N
m�N
m�NN
m�N
m�N
m�
m�NN
m�
m�N
m�N
m�N
m�N
m�N`�N
m�NN
m�
m�N
m�N
m�N
m�N
m�N
m�N
m�N
m�N
m�N
m�N
m�N
m�N
m�N`�N
m�N
m�
m�
m�
m�N
m�
m�N
m�N
m�N
m�N
m�N
m�N
m�N
m�N
m�N
m�N
m�N
m�N
m�N`�NN
m�
m�N
m�N
m�NN
m�N
m�N
m�
m�NN
m�
m�N
m�N
m�N
m�N
m�N`�N
m�NN
m�
m�N
m�N
m�N
m�N
m�N
m�N
m�N
m�N
m�N
m�N
m�N
m�N
m�N`�N
m�
n
m�N
m�
n
m�
m�N
m�
m�N
m�N
m�N
m�N
m�N
m�N
m�N
m�N
m�N
m�N
m�N
m�N
m�N`�NN
n
nN
nN
nNN
nN
nN
n
nNN
n
n	N
n
N
nN
nN
n
N`�N
nNN
n
nN
nN
nN
nN
nN
nN
nN
nN
nN
nN
nN
nN
nN`�N
nN
n 
n?
n!
n0N
n"
n#N
n$N
n%N
n&N
n'N
n(N
n)N
n*N
n+N
n,N
n-N
n.N
n/N`�NN
n1
n2N
n3N
n4NN
n5N
n6N
n7
n8NN
n9
n:N
n;N
n<N
n=N
n>N`�N
n@NN
nA
nBN
nCN
nDN
nEN
nFN
nGN
nHN
nIN
nJN
nKN
nLN
nMN
nNN`�N
nPN
nQ
n�
nR
n�
nS
n�
nTN
nU
n|
nV
no
nW
na
nXN
nYN
nZN��
n[
n\N
n]N
n^N
n_N
n`N��N
nbN
ncN
ndN
neN
nfN
ngN
nhN
niN
njN
nkN
nlN
nmN
nnN��NN
np
nqNN
nr
nsN
ntNN
nuN
nv
nwNN
nx
nyN��
nz
n{N��N
n}NN
n~
nN
n�N
n�N
n�N
n�N
n�N
n�N
n�N
n�N
n�N
n�N
n�N
n�N��N
n�N
n�
n�
n�
n�
n�
n�
n�N
n�N
n�N��
n�
n�N
n�N
n�N
n�N
n�N��N
n�N
n�N
n�N
n�N
n�N
n�N
n�N
n�N
n�N
n�N
n�N
n�N
n�N��NN
n�
n�NN
n�
n�N
n�NN
n�N
n�
n�NN
n�
n�N��
n�
n�N��N
n�NN
n�
n�N
n�N
n�N
n�N
n�N
n�N
n�N
n�N
n�N
n�N
n�N
n�N
n�N��NN
n�
n�N
n�
n�
n�
n�
n�
n�
n�N
n�N
n�N��
n�
n�N
n�N
n�N
n�N
n�N��N
n�N
n�N
n�N
n�N
n�N
n�N
n�N
n�N
n�N
n�N
n�N
n�N
n�N��NN
n�
n�NN
n�
n�N
n�NN
n�N
n�
n�NN
n�
n�N��
n�
n�N��N
n�NN
n�
n�N
n�N
n�N
n�N
n�N
n�N
n�N
n�N
n�N
n�N
n�N
n�N
n�N��N
oN
oN
oN
o
o*
o
o
o
o
oN
oN
oN��
o	
o
N
oN
oN
o
N
oN��N
oN
oN
oN
oN
oN
oN
oN
oN
oN
oN
oN
oN
oN��NN
o
oNN
o 
o!N
o"NN
o#N
o$
o%NN
o&
o'N��
o(
o)N��N
o+NN
o,
o-N
o.N
o/N
o0N
o1N
o2N
o3N
o4N
o5N
o6N
o7N
o8N
o9N��NN
o;
o<N
o=N
o>
o�
o?
om
o@N
oA
o]
oB
oQN
oC
oDN
oEN
oFN
oGN
oHN
oIN
oJN
oKN
oLN
oMN
oNN
oON
oPN�)NN
oR
oSNN
oT
oUN
oVN
oWN
oXNN
oY
oZNN
o[
o\N�)N
o^NN
o_
o`N
oaN
obN
ocN
odN
oeN
ofN
ogN
ohN
oiN
ojN
okN
olN�)N
onN
oo
o�
op
oN
oq
orN
osN
otN
ouN
ovN
owN
oxN
oyN
ozN
o{N
o|N
o}N
o~N�)NN
o�
o�NN
o�
o�N
o�N
o�N
o�NN
o�
o�NN
o�
o�N�)N
o�NN
o�
o�N
o�N
o�N
o�N
o�N
o�N
o�N
o�N
o�N
o�N
o�N
o�N
o�N�)N
o�N
o�N
o�
o�
o�
o�N
o�
o�N
o�N
o�N
o�N
o�N
o�N
o�N
o�N
o�N
o�N
o�N
o�N
o�N�)NN
o�
o�NN
o�
o�N
o�N
o�N
o�NN
o�
o�NN
o�
o�N�)N
o�NN
o�
o�N
o�N
o�N
o�N
o�N
o�N
o�N
o�N
o�N
o�N
o�N
o�N
o�N�)N
o�
pf
o�
o�\;�
o�R�
o�R�
o�R�
o�
p4
o�
p
o�R�
o�
o�
o�
o�R�
o�
o�R�
o�R�
o�R�
o�R�
o�R�
o�R�
o�R�
o�R�
o�R�
o�R�
o�R�
o�R�
o�R�QSR�R�
o�
o�R�
o�R�
o�R�
o�R�R�
o�R�
o�R�
o�
o�R�
o�R�
o�R�
o�R�
o�R�
o�R�QSR�
o�R�R�
o�
o�R�
o�R�
o�R�
o�R�
o�R�
o�R�
o�R�
o�R�
o�R�
o�R�
pR�
pR�
pR�QSR�
pR�
p
p$
p
pR�
p
pR�
p	R�
p
R�
pR�
pR�
p
R�
pR�
pR�
pR�
pR�
pR�
pR�
pR�QSR�R�
p
pR�
pR�
pR�
pR�R�
pR�
pR�
p
pR�
pR�
p R�
p!R�
p"R�
p#R�QSR�
p%R�R�
p&
p'R�
p(R�
p)R�
p*R�
p+R�
p,R�
p-R�
p.R�
p/R�
p0R�
p1R�
p2R�
p3R�QSR�
p5R�
p6R�
p7
pV
p8
pGR�
p9
p:R�
p;R�
p<R�
p=R�
p>R�
p?R�
p@R�
pAR�
pBR�
pCR�
pDR�
pER�
pFR�QSR�R�
pH
pIR�
pJR�
pKR�
pLR�R�
pMR�
pNR�
pO
pPR�
pQR�
pRR�
pSR�
pTR�
pUR�QSR�
pWR�R�
pX
pYR�
pZR�
p[R�
p\R�
p]R�
p^R�
p_R�
p`R�
paR�
pbR�
pcR�
pdR�
peR�QSR�
pg
p�W�
ph
piW�
pjW�
pk
p�
pl
p�
pmW�
pn
p~
poW�W�
pp
pqW�
prW�
psW�
ptW�
puW�
pvW�
pwW�
pxW�
pyW�
pzW�
p{W�
p|W�
p}W���W�
pW�W�
p�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W���W�
p�W�
p�
p�
p�W�W�
p�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W���W�
p�W�W�
p�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W���W�
p�
p�
p�W�
p�
p�
p�W�W�
p�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W���W�
p�W�W�
p�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W���W�
p�W�
p�
p�
p�W�W�
p�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W���W�
p�W�W�
p�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W�
p�W���W�
p�
q�
p�W�
p�
q�
p�
q\
p�
q+
p�W�
p�
q
p�
qW�
p�
p�W�
qW�
qW�
qW�
qW�
qW�
qW�
qW�
qW�
qW�
q	W�
q
W�
qW��W�W�
q

qW�
qW�
qW�W�
q
qW�W�
qW�
qW�
qW�
q
qW�
qW�
qW�
qW��W�
qW�W�
q
qW�
qW�
q W�
q!W�
q"W�
q#W�
q$W�
q%W�
q&W�
q'W�
q(W�
q)W�
q*W��W�
q,W�
q-
qL
q.
q=W�
q/
q0W�
q1W�
q2W�
q3W�
q4W�
q5W�
q6W�
q7W�
q8W�
q9W�
q:W�
q;W�
q<W��W�W�
q>
q?W�
q@W�
qAW�W�
qB
qCW�W�
qDW�
qEW�
qFW�
qG
qHW�
qIW�
qJW�
qKW��W�
qMW�W�
qN
qOW�
qPW�
qQW�
qRW�
qSW�
qTW�
qUW�
qVW�
qWW�
qXW�
qYW�
qZW�
q[W��W�
q]
q�
q^W�
q_
q~
q`
qoW�
qa
qbW�
qcW�
qdW�
qeW�
qfW�
qgW�
qhW�
qiW�
qjW�
qkW�
qlW�
qmW�
qnW��W�W�
qp
qqW�
qrW�
qsW�W�
qt
quW�W�
qvW�
qwW�
qxW�
qy
qzW�
q{W�
q|W�
q}W��W�
qW�W�
q�
q�W�
q�W�
q�W�
q�W�
q�W�
q�W�
q�W�
q�W�
q�W�
q�W�
q�W�
q�W�
q�W��W�
q�W�
q�
q�
q�
q�W�
q�
q�W�
q�W�
q�W�
q�W�
q�W�
q�W�
q�W�
q�W�
q�W�
q�W�
q�W�
q�W�
q�W��W�W�
q�
q�W�
q�W�
q�W�W�
q�
q�W�W�
q�W�
q�W�
q�W�
q�
q�W�
q�W�
q�W�
q�W��W�
q�W�W�
q�
q�W�
q�W�
q�W�
q�W�
q�W�
q�W�
q�W�
q�W�
q�W�
q�W�
q�W�
q�W�
q�W��W�
q�W�
q�W�
q�W�
q�
q�
q�
q�W�
q�
q�W�
q�W�
q�W�
q�W�
q�W�
q�W�
q�W�
q�W�
q�W�
q�W�
q�W�
q�W�
q�W��W�W�
q�
q�W�
q�W�
q�W�W�
q�
q�W�W�
q�W�
q�W�
q�W�
q�
q�W�
q�W�
q�W�
q�W��W�
q�W�W�
q�
q�W�
q�W�
q�W�
q�W�
q�W�
q�W�
q�W�
q�W�
q�W�
q�W�
q�W�
q�W�
q�W��W�
q�W�
q�W�
q�
r[
q�
r9
q�
r
q�
r
q�W�W�
q�
q�W�
q�W�
q�W�
q�W�
q�W�
rW�
rW�
rW�
rW�
rW�
rW�
rW�
rW�Q�W�
r	W�W�
r

rW�
rW�
r
W�
rW�
rW�
rW�
rW�
rW�
rW�
rW�
rW�
rW�
rW�Q�W�
r
r)
rW�W�
r
rW�
rW�
rW�
rW�
r W�
r!W�
r"W�
r#W�
r$W�
r%W�
r&W�
r'W�
r(W�Q�W�
r*W�W�
r+
r,W�
r-W�
r.W�
r/W�
r0W�
r1W�
r2W�
r3W�
r4W�
r5W�
r6W�
r7W�
r8W�Q�W�
r:W�
r;
rK
r<W�W�
r=
r>W�
r?W�
r@W�
rAW�
rBW�
rCW�
rDW�
rEW�
rFW�
rGW�
rHW�
rIW�
rJW�Q�W�
rLW�W�
rM
rNW�
rOW�
rPW�
rQW�
rRW�
rSW�
rTW�
rUW�
rVW�
rWW�
rXW�
rYW�
rZW�Q�W�
r\
r~
r]W�
r^
rn
r_W�W�
r`
raW�
rbW�
rcW�
rdW�
reW�
rfW�
rgW�
rhW�
riW�
rjW�
rkW�
rlW�
rmW�Q�W�
roW�W�
rp
rqW�
rrW�
rsW�
rtW�
ruW�
rvW�
rwW�
rxW�
ryW�
rzW�
r{W�
r|W�
r}W�Q�W�
rW�
r�
r�
r�W�W�
r�
r�W�
r�W�
r�W�
r�W�
r�W�
r�W�
r�W�
r�W�
r�W�
r�W�
r�W�
r�W�
r�W�Q�W�
r�W�W�
r�
r�W�
r�W�
r�W�
r�W�
r�W�
r�W�
r�W�
r�W�
r�W�
r�W�
r�W�
r�W�
r�W�Q�W�
r�
r�
r�
r�
r�
r�
r�
r�
r�
r�
r�@
r�@b�@
r�@
r�@b�@
r�Ќ
r�@
r�@d{@
r�
r�
r�@
r�@
r�@l@
r�
r�
r�@
r�@xv@
r�@
r�@N@
r�
r�
r�
r�
r�
r�
r�@
r�@L@
r�@
r�@b�@
r�@
r�@
r�@g4@
r�
r�d@
r�
r�
r�@
r�@N@
r�@
r�@L�@
r�
r�
r�
r�
r�
r�
r�
r�
r�@
r�@c�@
r�@
r�@g_@
r�
r�
r�@
r�@g_@
r�@
r�@b�@
r�
r�@
r�
r�
r�
r�
r�d{}�d�}�
r�d{!�d{
r�nW
r�@
r�@��@
r�
r�
r�
r�
r�
r�
r�@
r�@M@
r�@
r�@N@
r�
r�
r�@
r�@L�@
r�@
r�@nW@
r�
s
s
s
s@
s@ty@
s@
s@`�@
sN
s@
s	@i@
s
ui
s
t�
s

s�
s
s�
s
s�
s
su
s
s^d
s
s@
s@
s@
sL
s
s>
s
s%L
s
sL
sL
sL
sL
sL
sL
s L
s!LL
s"
s#L
s$LL{�
s&
s2
s'L
s(LL
s)L
s*
s+L
s,L
s-L
s.L
s/L
s0L
s1LL{�
s3L
s4L
s5L
s6L
s7L
s8L
s9L
s:L
s;L
s<L
s=LL{�
s?LL
s@
sAL
sB
sLL
sCL
sD
sEL
sFL
sGL
sHL
sIL
sJL
sKLL{�
sML
sN
sV
sOL
sPL
sQL
sRL
sSL
sTL
sULL�
sWL
sXL
sYL
sZL
s[L
s\L
s]LL{�
s_
sb
s`@
sa@L@
sc@
sd@
se@
sf|
sg|
sh|
si|
sj|
sk|
sl|
sm|
sn|
so|
sp|
sq|
sr||
ss
st||=�
sv
s}
sw
sz
sx@
sy@cW@
s{@
s|@nW@b�
s~
s@
s�@nW@
s�
s�
s�
s�
s�
s�
s�@
s�@d@
s�@
s�@L�@@N
s�
s�g4@
s�
s�
s�@
s�@N@
s�@
s�@d@
s�
s�
s�
s�
s�
s�
s�
s�
s�@
s�@M@
s�@
s�@`�@
s�
s�
s�`�
s�
s�`�
s�
s�`�
s�`�
s�`�
s�`�
s�`�
s�`�
s�`�
s�`�
s�`�
s�`�
s�
s�
s�
s�
s�`�`�
s�
s�`��y`�
s�
s�
s�
s�`�֥
s�
s�`�,��[`�
s�`�
s�`���`�
s�`�`�
s�
s�`�
s�`�`�֖
s�`�
s�`�
s�`�
s�`�
s�`�
s�`�
s�`�
s�`�
s�`�
s�`�
s�
s�`�
s�`�
s�
s�`�
s�`�`�
s��i`�
s�`�
s�`�
s�`�
s�`�
s�`��i`�
s�@
s�@nW@
s�
s�@
s�
s�@
s�@xv@n���
s�
s�
s�
s�
s�
s�
s�@
s�@L�@
s�@
s�@M@
s�
s�
s�@
s�@d{@
s�@
s�@b�@
s�
s�@
s�
s�@g4@M�@
s�
tF
s�
t

s�
s�
s�
s�@z�
s�d
s�@
s�@b�@
s�
t
t
t
t@
t@d@
t@
t@c�@
t
t

t@
t	@xv@
t@
t@N@
t
t
t
t
t
t
t@
t@d@
t@
t@N@q~
t
t@
t@d@
t
t
tN
t@
t@iM@
t 
tC
t!d
t"d
t#d
t$d
t%d
t&dd
t'
t(d
t)d
t*d
t+d
t,d
t-d
t.d
t/d
t0d
t1d
t2dd
t3
t4d
t5d
t6d
t7d
t8d
t9d
t:d
t;d
t<d
t=d
t>d
t?d
t@d
tAd
tBd�d
tD@
tE@c�@
tG
t�
tH
tW
tI
tP
tJ
tM
tK@
tL@d@
tN@
tO@M@
tQ
tT
tR@
tS@M@
tU@
tV@M@
tX
tj
tY
t\
tZ@
t[@`�@
t]N
t^N
t_N
t`N
taN
tbN
tcN
td
tgN
te
tfN[�N
thN
tiNQ�N
tk
tn
tl@
tm@N@
to@
tp@
tq@�^
tr�^
ts
tt�^�^
tu�^
tv�^
tw
tx�^
ty�^
tz�^
t{�^
t|�^
t}�^
t~�^
t�^
t��^�^
t�
t��^
t��^
t��^�^
t�
t��^�^
t��^
t�
t��^
t��^�^
t�
t��^
t��^
t��^
t��^
t��^�^@
t�
t�
t�
t�
t�
t�
t�@
t�@xv@
t�@
t�@M@
t�d
t�@
t�@M@
t�
t�
t�l�`�@@
t�
t�@
t�@h@
t�
u
t�
t�
t�
t�
t�
t�
t�
t�
t�
t�
t�@
t�@l@
t�@
t�@g_@
t�
t�
t�@
t�@d@
t�@
t�@b�@
t�
t�
t�
t�
t�@
t�@nW@
t�@
t�@d@aN
t�
t�@
t�@N@
t�
t�
t�
t�
t�
t�
t�@
t�@c�@
t�@
t�@M�@h
t�
t�@
t�@aN@
t�
t�
t�
t�
t�@
t�@ty@
t�@
t�@L@
t�
t�
t�@
t�@t�@
t�@
t�@N@
t�
u
t�
t�
t�
t�
t�
t�
t�@
t�@N@
t�@
t�@c�@
t�
t�
t�@
t�@i�@
t�@
t�@q~@
t�
t�
t�
t�
t�@
t�@xv@
t�@
t�@N@
t�
t�
t�@
t�@M@
t�@
t�@L�@
u
u
u
u	
u
u
u@
u@nW@
u@
u@p�@
u

u

u@
u@d@
u@
u@M�@
u
u
u
u
u@
u@`�@
u@
u@cW@
u
u
u@
u@cW@
u@
u@g_@
u 
uL
u!
u@
u"
u1
u#
u*
u$
u'
u%@
u&@g4@
u(@
u)@M@
u+
u.
u,@
u-@g4@
u/@
u0@b�@
u2
u9
u3
u6
u4@
u5@p�@
u7@
u8@b�@
u:
u=
u;@
u<@d{@
u>@
u?@M@
uA
uG
uB
uC@nW
uDiM
uE@
uF@N@
uH@
uI@
uJ@
uK@L@
uM@
uN
uZ
uO
uV
uP
uS
uQ@
uR@d@
uT@
uU@xv@M
uW
uX@
uY@aN@
u[
ub
u\
u_
u]@
u^@�H@
u`@
ua@M@
uc
uf
ud@
ue@i�@
ug@
uh@� @
uj
u�
uk
u�
ul
u{
um
up
un@
uo@nW@
uq
uv
ur@
us@
ut@
uu@g_@
uw@
ux@
uy@
uz@d@
u|
u�
u}
u�
u~@
u@
u�@
u�@`�@
u�@
u�@
u�
u�
u�M
u�M
u�M
u�M
u�M
u�
u�
u�
u�
u�M
u�M
u�M
u�MM
u�M
u�
u�M
u�MM
u�
u�Mq�M
u�MM
u�
u�MM
u�
u�MM
u�
u�MM
u�
u�MM
u�q�M
u�M
u�M
u�MM
u�
u�M
u�M
u�MM
u�
u�M
u�M
u�MMq�M
u�M
u�
u�M
u�M
u�M
u�M
u�M
u�M
u�M
u�M
u�M
u�MM
u�
u�MM
u�M
u�M
u�g�M
u�
u�
u�@
u�@
u�@
u�@L@
u�@
u�@
u�@
u�@`�@
u�
u�
u�
u�
u�
u�
u�@
u�@
u�@
u�@g_@
u�@
u�@
u�@
u�@L�@
u�
u�
u�@
u�@
u�@
u�@d@
u�@
u�@
u�@
u�@c�@
u�
u�@
u�
u�@
u�@
u�@
u�@az@
u�
u�
u�@
u�@
u�@
u�@d@
u�@
u�@
u�@
u�@c�@
u�
u�
u�@
u�@L@
u�
v!
u�@
u�@
u�@l
u�
u�l
vl
vll
vl
vl
v
vll
v
vl
vll
v	
v
l
vl
vl
v
ll
v
vll
vl
v
vl
vl
vll
vl
v
vll
v
vl
vl
vl
vl
vl
vl
vl
v l@l
v"
v*
v#
v%
v$@L@
v&@
v'@
v(@
v)@L�@
v+
v-
v,@d@
v.@
v/@
v0@
v1@`�@
v3@
v4@
v5@
v6d
v7d
v8dd
v9d
v:
v;d
v<
v^d
v=d
v>
v?d
v@d
vAd
vBd
vCd
vDd
vEd
vFd
vGd
vHd
vIdd
vJ
vKd
vLdd
vMd
vNd
vO
vPd
vQd
vRdd
vSd
vTd
vU
vVdd
vW
vXd
vYdd
vZ
v[dd
v\d
v]m�dd
v_d
v`
vad
vbd
vcd
vdd
ved
vfdd
vgd
vh
vid
vjd
vkd
vld
vmdd
vnd
vo
vpd
vqd
vrd
vsdd
vtd
vu
vvdd
vwd
vxd
vyd
vz
v{dd
v|
v}d
v~dd
v@d
v�
�f
v�
yW
v�
x
v�
w"
v�
v�
v�
v�
v�
v�
v�
v�
v�
v�
v�@xv@
v�@
v�@
v�@
v�@M�@@
v�
v�@nW@
v�
v�
v�
v�
v�@
v�@
v�@
v�@y7@
v�@
v�@
v�@
v�@`�@
v�
v�
v�@N@
v�@
v�@
v�@
v�@xv@
v�
v�
v�
v�
v�
v�
v�@
v�@
v�@
v�@`�@
v�@
v�@
v�@
v�@b�@
v�
v�
v�@
v�@
v�@
v�@g4@
v�@
v�@
v�@
v�@c�@
v�
v�
v�
v�
v�@
v�@
v�@
v�@y7@
v�@b�@
v�
v�
v�@
v�@
v�@
v�@g4@
v�@
v�@
v�@
v�@`�@
v�
v�
v�
v�
v�
v�
v�
v�
v�@
v�@
v�@
v�@L�@
v�@
v�@
v�@
v�@L�@
v�
v�
v�@
v�@
v�@
v�@N@
v�@nW@
v�
v�
v�
v�
v�@��@
v�@
v�@
v�@
v�@L�@@
v�
v�@
v�@
v�@
v�@b�@
v�
w
v�
w
v�
w
v�@
v�@
v�@
v�@c�@
w@
w@
w@
w@ak@
w
w
w@
w@
w	@
w
@M@
w@
w
@
w@
w@c�@
w
w
w@
w@
w@
w@
w@��@
w
w
w@
w@
w@
w@b�@
w@
w@
w @
w!@M@
w#
ww
w$
wS
w%
w<
w&
w1
w'
w,
w(@
w)@
w*@
w+@ku@
w-@
w.@
w/@
w0@L@
w2
w7
w3@
w4@
w5@
w6@��@
w8@
w9@
w:@
w;@cW@
w=
wH
w>
wC
w?@
w@@
wA@
wB@M@
wD@
wE@
wF@
wG@d@
wI
wN
wJ@
wK@
wL@
wM@`�@
wO@
wP@
wQ@
wR@`�@
wT
we
wU
w]
wV
wX
wW@d@
wY@
wZ@
w[@
w\@w�@
w^
w`
w_@iM@
wa@
wb@
wc@
wd@M@
wf
wq
wg
wl
wh@
wi@
wj@
wk@L@
wm@
wn@
wo@
wp@b�@
wr@
ws@
wt@
wu@
wv@d@
wx
w�
wy
w�
wz
w�
w{
w�
w|@
w}@
w~@
w@N@
w�@
w�@
w�@
w�@cW@
w�
w�
w�@
w�@
w�@
w�@N@
w�@
w�@
w�@
w�@N@
w�
w�
w�@
w�@aN@
w�
w�
w�@
w�@
w�@
w�@d@
w�@
w�@
w�@
w�@`�@
w�
w�
w�
w�@
w�
w�@`�@@
w�
w�@
w�@
w�@
w�@b�@
w�
x
w�
x	
w�@
w�@
w�@
w�@
w�@
w�
w�
w�e�
w�e�
w�e�
w�
w�
w�e�
w�e�
w�e�
w�e�
w�e�
w�
w�
w�
w�
w�
w�
w�
w�
w�
w�e�d�d��
w�
w��e��e�
w�
w�
w�
w�h�kfd�
w�
w��h�kf
w�
w�
w�
w�
w�
w�d�nSnS1
w�
w�1��1
w�
w�
w�
w�1���
w�
w��d�d�nS
w�
w�
w�
w�
w�
w�
w�
w�nSd�d�h
w�
w�hkfkfh%
w�
w�h%
w�h%d�d�1
w�
w�
w�
w��hkfh%
w�
w���nSe�
w�e�e�
w�e�
w�e�
w�
w�e�e�
w�
w�e�e�
w�e�
w�
w�e�e�d�e�
w�
w�e�e�
w�e�
w�e�
w�e�
x
xe�e�
x
xe�e�
x
xe�e�
xe�
x
xe�e�d�
x
@
x@
x@
x
@b�@
x
x
x@
x@
x@
x@sG@
x@g_@
x
x�
x
xg
x
xE
x
x.
x
x#
x
x
x@l@
x@
x @
x!@
x"@p�@
x$
x)
x%@
x&@
x'@
x(@A@
x*@
x+@
x,@
x-@`�@
x/
x:
x0
x5
x1@
x2@
x3@
x4@p�@
x6@
x7@
x8@
x9@N@
x;
x@
x<@
x=@
x>@
x?@M@
xA@
xB@
xC@
xD@d@
xF
xP
xG
xJ
xH@
xI@t�@
xK@
xL@
xM@
xN@
xO@i�@
xQ
x\
xR
xW
xS@
xT@
xU@
xV@N@
xX@
xY@
xZ@
x[@c�@
x]
xb
x^@
x_@
x`@
xa@`�@
xc@
xd@
xe@
xf@d@
xh
x�
xi
x}
xj
xu
xk
xp
xl@
xm@
xn@
xo@g_@
xq@
xr@
xs@
xt@d@
xv
xx
xw@c�@
xy@
xz@
x{@
x|@N@
x~
x�
x
x�
x�@
x�@
x�@
x�@L@
x�@
x�@
x�@
x�@M@
x�
x�
x�@
x�@
x�@
x�@@�
x�@
x�@
x�@
x�@`�@
x�
x�
x�
x�
x�@
x�@M�@
x�
x�
x�@
x�@
x�@
x�@M@
x�@
x�@
x�@
x�@N@
x�
x�
x�
x�
x�@
x�@
x�@
x�@d@
x�@
x�@
x�@
x�@ak@
x�
x�
x�@aN@
x�@
x�@
x�@
x�@d{@
x�
y
x�
x�
x�
x�
x�
x�
x�
x�
x�@d@
x�@
x�@
x�@
x�@M@
x�@
x�@M@
x�
x�
x�@
x�@
x�@
x�@
x�@c�@
x�
x�
x�@
x�@
x�@
x�@d@
x�@
x�@
x�@
x�@`�@
x�
x�
x�
x�
x�
x�
x�@
x�@
x�@
x�@d@
x�@
x�@
x�@
x�@`�@
x�
x�
x�@
x�@
x�@
x�@d@
x�@
x�@
x�@
x�@b�@
x�
x�
x�
x�
x�@
x�@
x�@
x�@`�@
x�@
x�@
x�@
x�@aN@
x�
y
x�@ak@
y@
y@
y@
y@aN@
y
y+
y
y
y
y@
y	
y
@
y@
y@
y
@`�@
y
y
y@
y@
y@
y@d{@
y@
y@
y@
y@iM@
y
y%
y
y 
y@
y@
y@
y@L�@
y!@
y"@
y#@
y$@g4@@
y&
y'@
y(@
y)@
y*@`�@
y,
y@
y-
y8
y.
y3
y/@
y0@
y1@
y2@i�@
y4@
y5@
y6@
y7@M@
y9
y>
y:@
y;@
y<@
y=@b�@
y?@M@
yA
yL
yB
yG
yC@
yD@
yE@
yF@N@
yH@
yI@
yJ@
yK@|�@
yM
yR
yN@
yO@
yP@
yQ@t�@
yS@
yT@
yU@
yV@cW@
yX
�2
yY
z

yZ
y�
y[
y�
y\
yn
y]
yh
y^
yc
y_@
y`@
ya@
yb@L�@
yd@
ye@
yf@
yg@M@@
yi
yj@
yk@
yl@
ym@N@
yo
yz
yp
yu
yq@
yr@
ys@
yt@`�@
yv@
yw@
yx@
yy@c�@
y{
y}
y|@ku@
y~@
y@
y�@
y�@N@
y�
y�
y�
y�
y�
y�
y�@
y�@
y�@
y�@L@
y�@
y�@
y�@
y�@M�@
y�
y�
y�@
y�@
y�@
y�@d@
y�@
y�@
y�@
y�@N@
y�
y�
y�
y�
y�@
y�@
y�@
y�@b�@
y�@
y�@
y�@
y�@`�@
y�
y�
y�@
y�@
y�@
y�@b�@
y�@
y�@
y�@
y�@az@
y�
y�
y�
y�
y�
y�
y�
y�
y�@
y�@
y�@
y�@b�@
y�@
y�@
y�@
y�@ak@
y�
y�
y�@
y�@
y�@
y�@i�@
y�@d@
y�
y�
y�
y�
y�@
y�@
y�@
y�@d@
y�@
y�@
y�@
y�@`�@
y�
y�
y�@
y�@
y�@
y�@xv@
y�@
y�@
y�@
y�@L@
y�
y�
y�
y�
y�
y�
y�@
y�@
y�@
y�@M@
y�@
y�@
y�@
y�@�X@
y�
y�
y�@
y�@
y�@
y�@M�@
y�@
y�@
y�@
y�@L�@
y�
z
y�
y�
y�@
y�@
y�@
y�@iM@
y�@
y�@
z@
z@L�@
z
z
z@
z@
z@
z@xv@
z	@
z
@
z@
z@`�@
z
zx
z
zL
z
z;
z
z5
z
z0
z@
z@
z@
z@
z@
zM
zM
zM
zM
zMM
z
zM
zM
z M
z!M
z"M
z#
z+
z$
z)
z%
z'M
z&tOg�g�
z(�;M
z*M��M
z,M
z-
z/
z.MtOMg�M
z1@
z2@
z3@
z4@xv@
z6@
z7@
z8@
z9@
z:@t�@
z<
zG
z=
zB
z>@
z?@
z@@
zA@xv@
zC@
zD@
zE@
zF@`�@
zH
zJ
zI@g4@
zK@c�@
zM
za
zN
zV
zO
zQ
zP@b�@
zR@
zS@
zT@
zU@L�@
zW
z\
zX@
zY@
zZ@
z[@L@
z]@
z^@
z_@
z`@nW@
zb
zm
zc
zh
zd@
ze@
zf@
zg@|�@
zi@
zj@
zk@
zl@t�@
zn
zs
zo@
zp@
zq@
zr@M@
zt@
zu@
zv@
zw@c�@
zy
z�
zz
z�
z{
z�
z|
z�
z}@
z~@
z@
z�@b�@
z�@
z�@
z�@
z�@`�@
z�
z�
z�@`�@
z�@
z�@
z�@
z�@c�@
z�
z�
z�
z�
z�@
z�@
z�@
z�@M@
z�@
z�@
z�@
z�@L�@
z�
z�
z�@
z�@
z�@
z�@M@
z�@
z�@
z�@
z�@M@
z�
�
z�
z�
z�
z�
z�@
z�@
z�@
z�@y7@
z�@
z�@
z�@
z�@|�@
z�
�
z�@
z�@
z�
~�
z�
|�
z�
{�
z�lx
z�lx
z�lx
z�lx
z�lx
z�lx
z�
{�
z�
{7
z�
{
z�
z�
z�
z�
z�
z�
z�
z�
z�
z�
z�
z�lx����ee
z���~�
z�lx
z�lxrX�
z�
z�
z�
z�
z�
z�~���d?��
z�
z���*dN�v
z�lx
z�lxՙb
z�
z�
z�
z�
z�
z�
z�
z�ՙ~���
z�e�e
z�lx
z�lx1�$�
z�
z�
z�
z�
z�
z�������w
z�
z�܆��ܖܦ
z�lx
z�lx����
z�
{
z�
z�
z�
z�
z�
z�
z�
z��(��Rܵ
z�
z���|����
z�lx
z�lx*��
z�
{
z�
{
z�
{������9
{
{�*��!;
{lx
{lx���0
{
{
{	
{
{

{

{
{�b�@��P
{
{�`�p�)#e
{lx
{lx�p݀
{
{
{
{
{
{�S��ݐ�
{
{ݟ�ݯݿ
{lx
{lx�D��
{lx
{ lx
{!
{,
{"
{)
{#
{&
{$
{%�>"Z����
{'
{(����
�H
{*lx
{+lx��-
{-
{4
{.
{1
{/
{0�=�7�M�5
{2
{3�\�l�|ތ
{5lx
{6lxޛ��
{8
{�
{9
{h
{:
{Q
{;
{F
{<
{C
{=
{@
{>
{?��HO�
{A
{B���
rIު
{Dlx
{Elx޺�w
{G
{N
{H
{K
{I
{J����	��
{L
{M�� ��m{c
{Olx
{Plx����
{R
{]
{S
{Z
{T
{W
{U
{V����&
{X
{Y�|�5��Q�
{[lx
{\lx�E�T
{^
{e
{_
{b
{`
{a,��d�s߃
{c
{d)ߓ`�O�
{flx
{glxߢ�
{i
{�
{j
{u
{k
{r
{l
{o
{m
{nR~߱�N�
{p
{q��������
{slx
{tlx��,�
{v
{}
{w
{z
{x
{y���.���
{{
{|��
��
{~lx
{lx�+�]
{�
{�
{�
{�
{�
{�
{�
{��������;
{�
{��K�[�j�y
{�lx
{�lx��
{�
{�
{�
{�
{�
{��|:�c6
{�
{�lx������
{�lx
{�lx��1�
{�lx
{�lx
{�
{�
{�
{�
{�
{�
{�
{���*��#
{�
{��39�C,
{�lx
{�lx)���
{�
{�
{�
{�
{�
{�!b�R�b�q
{�
{��v����
{�lx
{�lxؒ 
{�lx
{�lx
{�lx
{�lx
{�
{�
{�
{�
{�
{�
{�
{�e�l�W
{�
{�e!�.!��
{�lx
{�lx���
{�lx
{�lx
{�lx)lx
{�lx
{�lx
{�lx
{�lx
{�lx
{�lx
{�
|�
{�
|C
{�
|*
{�
{�
{�
{�
{�
{�
{�
{�
{�
{�
{�
{�lx����ee
{���~�
{�lx
{�lxrX�
{�
{�
{�
{�
{�
{�~���d?��
{�
{���*dN�v
{�lx
{�lxՙb
{�
{�
{�
{�
{�
{�
{�
{�ՙ~���
{�e�e
{�lx
{�lx1�$�
{�
{�
{�
{�
{�
{�������w
{�
{�܆��ܖܦ
{�lx
{�lx����
{�
|
{�
|
{�
|
{�
|
|
|�(��Rܵ
|
|��|����
|lx
|lx*��
|	
|
|

|

|
|������9
|
|�*��!;
|lx
|lx���0
|
|
|
|
|
|
|
|�b�@��P
|
|�`�p�)#e
|lx
|lx�p݀
| 
|'
|!
|$
|"
|#�S��ݐ�
|%
|&ݟ�ݯݿ
|(lx
|)lx�D��
|+lx
|,lx
|-
|8
|.
|5
|/
|2
|0
|1�>"Z����
|3
|4����
�H
|6lx
|7lx��-
|9
|@
|:
|=
|;
|<�=�7�M�5
|>
|?�\�l�|ތ
|Alx
|Blxޛ��
|D
|�
|E
|t
|F
|]
|G
|R
|H
|O
|I
|L
|J
|K��HO�
|M
|N��&rIު
|Plx
|Qlx޺�w
|S
|Z
|T
|W
|U
|V����	��
|X
|Y�� ��m{c
|[lx
|\lx����
|^
|i
|_
|f
|`
|c
|a
|b����&
|d
|e�|�5��Q�
|glx
|hlx�E�T
|j
|q
|k
|n
|l
|m,��d�s߃
|o
|p)ߓ`�O�
|rlx
|slxߢ�
|u
|�
|v
|�
|w
|~
|x
|{
|y
|zR~߱�N�
||
|}��������
|lx
|�lx��,�
|�
|�
|�
|�
|�
|����.���
|�
|���
��
|�lx
|�lx�+�]
|�
|�
|�
|�
|�
|�
|�
|��������;
|�
|��K�[�j�y
|�lx
|�lx��
|�
|�
|�
|�
|�
|��|:�c6
|�
|�lx������
|�lx
|�lx��1�
|�lx
|�lx
|�
|�
|�
|�
|�
|�
|�
|���*��#
|�
|��39�C,
|�lx
|�lx)���
|�
|�
|�
|�
|�
|�!b�R�b�q
|�
|��v����
|�lx
|�lxؒ 
|�lx
|�lx
|�lx
|�lx
|�
|�
|�
|�
|�
|�
|�
|�e�l�W
|�
|�e!�.!��
|�lx
|�lx���
|�lx
|�lx
|�lx)lx
|�
}�
|�lx
|�lx
|�lx
|�lx
|�lx
|�lx
|�
}�
|�
}P
|�
}7
|�
}
|�
|�
|�
|�
|�
|�
|�
|�
|�
|�lx����ee
|���~�
|�lx
|�lxrX�
|�
|�
|�
|�
|�
|�~���d?��
|�
|���*dN�v
|�lx
|�lxՙb
|�
|�
|�
|�
|�
|�
|�
|�ՙ~���
|�e�e
|�lx
|�lx1�$�
|�
}
|�
}
}
}������w
}
}܆��ܖܦ
}lx
}lx����
}	
} 
}

}
}
}
}
}
}

}�(��Rܵ
}
}��|����
}lx
}lx*��
}
}
}
}
}
}������9
}
}�*��!;
}lx
}lx���0
}!
},
}"
})
}#
}&
}$
}%�b�@��P
}'
}(�`�p�)#e
}*lx
}+lx�p݀
}-
}4
}.
}1
}/
}0�S��ݐ�
}2
}3ݟ�ݯݿ
}5lx
}6lx�D��
}8lx
}9lx
}:
}E
};
}B
}<
}?
}=
}>�>"Z����
}@
}A����
�H
}Clx
}Dlx��-
}F
}M
}G
}J
}H
}I�=�7�M�5
}K
}L�\�l�|ތ
}Nlx
}Olxޛ��
}Q
}�
}R
}�
}S
}j
}T
}_
}U
}\
}V
}Y
}W
}X��HO�
}Z
}[��&rIު
}]lx
}^lx޺�w
}`
}g
}a
}d
}b
}c����	��
}e
}f�� ��m{c
}hlx
}ilx����
}k
}v
}l
}s
}m
}p
}n
}o����&
}q
}r�|�5��Q�
}tlx
}ulx�E�T
}w
}~
}x
}{
}y
}z,��d�s߃
}|
}})ߓ`�O�
}lx
}�lxߢ�
}�
}�
}�
}�
}�
}�
}�
}�
}�
}�R~߱�N�
}�
}���������
}�lx
}�lx��,�
}�
}�
}�
}�
}�
}����.���
}�
}���
��
}�lx
}�lx�+�]
}�
}�
}�
}�
}�
}�
}�
}��������;
}�
}��K�[�j�y
}�lx
}�lx��
}�
}�
}�
}�
}�
}��|:�c6
}�
}�lx������
}�lx
}�lx��1�
}�lx
}�lx
}�
}�
}�
}�
}�
}�
}�
}���*��#
}�
}��39�C,
}�lx
}�lx)���
}�
}�
}�
}�
}�
}�!b�R�b�q
}�
}��v����
}�lx
}�lxؒ 
}�lx
}�lx
}�lx
}�lx
}�
}�
}�
}�
}�
}�
}�
}�e�l�W
}�
}�e!�.!��
}�lx
}�lx���
}�lx
}�lx
}�lx)lx
}�lx
}�lx
}�lx
}�lx
}�lx
}�lx
}�
~�
}�
~\
}�
~C
}�
~
}�
}�
}�
}�
}�
}�
}�
}�
}�
}�lx����ee
}���~�
}�lx
}�lxrX�
}�
}�
}�
}�
}�
}�~���d?��
}�
}���*dN�v
}�lx
}�lxՙb
}�
~	
~
~
~
~
~
~ՙ~���
~e�e
~lx
~lx1�$�
~

~
~
~
~
~
������w
~
~܆��ܖܦ
~lx
~lx����
~
~,
~
~!
~
~
~
~
~
~�(��Rܵ
~
~��|����
~lx
~ lx*��
~"
~)
~#
~&
~$
~%������9
~'
~(�*��!;
~*lx
~+lx���0
~-
~8
~.
~5
~/
~2
~0
~1�b�@��P
~3
~4�`�p�)#e
~6lx
~7lx�p݀
~9
~@
~:
~=
~;
~<�S��ݐ�
~>
~?ݟ�ݯݿ
~Alx
~Blx�D��
~Dlx
~Elx
~F
~Q
~G
~N
~H
~K
~I
~J�>"Z����
~L
~M����
�H
~Olx
~Plx��-
~R
~Y
~S
~V
~T
~U�=�7�M�5
~W
~X�\�l�|ތ
~Zlx
~[lxޛ��
~]
~�
~^
~�
~_
~v
~`
~k
~a
~h
~b
~e
~c
~d��HO�
~f
~g��&rIު
~ilx
~jlx޺�w
~l
~s
~m
~p
~n
~o����	��
~q
~r�� ��m{c
~tlx
~ulx����
~w
~�
~x
~
~y
~|
~z
~{����&
~}
~~�|�5��Q�
~�lx
~�lx�E�T
~�
~�
~�
~�
~�
~�,��d�s߃
~�
~�)ߓ`�O�
~�lx
~�lxߢ�
~�
~�
~�
~�
~�
~�
~�
~�
~�
~�R~߱�N�
~�
~���������
~�lx
~�lx��,�
~�
~�
~�
~�
~�
~����.���
~�
~���
��
~�lx
~�lx�+�]
~�
~�
~�
~�
~�
~�
~�
~��������;
~�
~��K�[�j�y
~�lx
~�lx��
~�
~�
~�
~�
~�
~��|:�c6
~�
~�lx������
~�lx
~�lx��1�
~�lx
~�lx
~�
~�
~�
~�
~�
~�
~�
~���*��#
~�
~��39�C,
~�lx
~�lx)���
~�
~�
~�
~�
~�
~�!b�R�b�q
~�
~��v����
~�lx
~�lxؒ 
~�lx
~�lx
~�lx
~�lx
~�
~�
~�
~�
~�
~�
~�
~�e�l�W
~�
~�e!�.!��
~�lx
~�lx���
~�lx
~�lx
~�lx)lx
~�
�
~�
�
~�lx
~�lx
~�lx
~�lx
~�lx
~�lx
~�
�
~�
j
~�
Q
~�
"
~�

~�

~�
~�
~�
~�
~�
~�lx����ee
~���~�
~�lx
lxrX�

	



~���d?��

��*dN�v

lx
lxՙb








ՙ~���
e�e
lx
lx1�$�





������w

܆��ܖܦ
 lx
!lx����
#
:
$
/
%
,
&
)
'
(�(��Rܵ
*
+��|����
-lx
.lx*��
0
7
1
4
2
3������9
5
6�*��!;
8lx
9lx���0
;
F
<
C
=
@
>
?�b�@��P
A
B�`�p�)#e
Dlx
Elx�p݀
G
N
H
K
I
J�S��ݐ�
L
Mݟ�ݯݿ
Olx
Plx�D��
Rlx
Slx
T
_
U
\
V
Y
W
X�>"Z����
Z
[����
�H
]lx
^lx��-
`
g
a
d
b
c�=�7�M�5
e
f�\�l�|ތ
hlx
ilxޛ��
k
�
l
�
m
�
n
y
o
v
p
s
q
r��HO�
t
u��&rIު
wlx
xlx޺�w
z
�
{
~
|
}����	��

��� ��m{c
�lx
�lx����
�
�
�
�
�
�
�
�����&
�
��|�5��Q�
�lx
�lx�E�T
�
�
�
�
�
�,��d�s߃
�
�)ߓ`�O�
�lx
�lxߢ�
�
�
�
�
�
�
�
�
�
�R~߱�N�
�
���������
�lx
�lx��,�
�
�
�
�
�
����.���
�
���
��
�lx
�lx�+�]
�
�
�
�
�
�
�
��������;
�
��K�[�j�y
�lx
�lx��
�
�
�
�
�
��|:�c6
�
�lx������
�lx
�lx��1�
�lx
�lx
�
�
�
�
�
�
�
���*��#
�
��39�C,
�lx
�lx)���
�
�
�
�
�
�!b�R�b�q
�
��v����
�lx
�lxؒ 
�lx
�lx
�lx
�lx
�
�
�
�
�
�
�
�e�l�W
�
�e!�.!��
�lx
�lx���
�lx
�lx
�lx)lx
�lx
�lx
�lx
�lx
�lx
�lx
�
��
�
�v
�
�]
�
�.
�
�
�
�

�
�

�
�
�
�lx����ee
�	��~�
�lx
�lxrX�
�
�
�
�
�
�~���d?��
�
���*dN�v
�lx
�lxՙb
�
�#
�
� 
�
�
�
�ՙ~���
�e�e
�!lx
�"lx1�$�
�$
�+
�%
�(
�&
�'������w
�)
�*܆��ܖܦ
�,lx
�-lx����
�/
�F
�0
�;
�1
�8
�2
�5
�3
�4�(��Rܵ
�6
�7��|����
�9lx
�:lx*��
�<
�C
�=
�@
�>
�?������9
�A
�B�*��!;
�Dlx
�Elx���0
�G
�R
�H
�O
�I
�L
�J
�K�b�@��P
�M
�N�`�p�)#e
�Plx
�Qlx�p݀
�S
�Z
�T
�W
�U
�V�S��ݐ�
�X
�Yݟ�ݯݿ
�[lx
�\lx�D��
�^lx
�_lx
�`
�k
�a
�h
�b
�e
�c
�d�>"Z����
�f
�g����
�H
�ilx
�jlx��-
�l
�s
�m
�p
�n
�o�=�7�M�5
�q
�r�\�l�|ތ
�tlx
�ulxޛ��
�w
��
�x
��
�y
��
�z
��
�{
��
�|
�
�}
�~��HO�
��
����&rIު
��lx
��lx޺�w
��
��
��
��
��
������	��
��
���� ��m{c
��lx
��lx����
��
��
��
��
��
��
��
������&
��
���|�5��Q�
��lx
��lx�E�T
��
��
��
��
��
��,��d�s߃
��
��)ߓ`�O�
��lx
��lxߢ�
��
��
��
��
��
��
��
��
��
��R~߱�N�
��
����������
��lx
��lx��,�
��
��
��
��
��
�����.���
��
����
��
��lx
��lx�+�]
��
��
��
��
��
��
��
���������;
��
���K�[�j�y
��lx
��lx��
��
��
��
��
��
���|:�c6
��
��lx������
��lx
��lx��1�
��lx
��lx
��
��
��
��
��
��
��
����*��#
��
���39�C,
��lx
��lx)���
��
��
��
��
��
��!b�R�b�q
��
���v����
��lx
��lxؒ 
��lx
��lx
��lx
��lx
��
��
��
��
��
��
��
��e�l�W
��
��e!�.!��
��lx
��lx���
�lx
�lx
�lx)lx
�
�
�lx
�lx
�lx
�lx
�	lx
�
lx
�
��
�
��
�

�j
�
�;
�
�%
�
�
�
�
�
�
�
�lx����ee
���~�
�lx
�lxrX�
�
�"
�
�
�
�~���d?��
� 
�!��*dN�v
�#lx
�$lxՙb
�&
�0
�'
�-
�(
�+
�)
�*ՙ~���
�,e�e
�.lx
�/lx1�$�
�1
�8
�2
�5
�3
�4������w
�6
�7܆��ܖܦ
�9lx
�:lx����
�<
�S
�=
�H
�>
�E
�?
�B
�@
�A�(��Rܵ
�C
�D��|����
�Flx
�Glx*��
�I
�P
�J
�M
�K
�L������9
�N
�O�*��!;
�Qlx
�Rlx���0
�T
�_
�U
�\
�V
�Y
�W
�X�b�@��P
�Z
�[�`�p�)#e
�]lx
�^lx�p݀
�`
�g
�a
�d
�b
�c�S��ݐ�
�e
�fݟ�ݯݿ
�hlx
�ilx�D��
�klx
�llx
�m
�x
�n
�u
�o
�r
�p
�q�>"Z����
�s
�t����
�H
�vlx
�wlx��-
�y
��
�z
�}
�{
�|�=�7�M�5
�~
��\�l�|ތ
��lx
��lxޛ��
��
��
��
��
��
��
��
��
��
��
��
��
��
����HO�
��
����&rIު
��lx
��lx޺�w
��
��
��
��
��
������	��
��
���� ��m{c
��lx
��lx����
��
��
��
��
��
��
��
������&
��
���|�5��Q�
��lx
��lx�E�T
��
��
��
��
��
��,��d�s߃
��
��)ߓ`�O�
��lx
��lxߢ�
��
��
��
��
��
��
��
��
��
��R~߱�N�
��
����������
��lx
��lx��,�
��
��
��
��
��
�����.���
��
����
��
��lx
��lx�+�]
��
��
��
��
��
��
��
���������;
��
���K�[�j�y
��lx
��lx��
��
��
��
��
��
���|:�c6
��
��lx������
��lx
��lx��1�
��lx
��lx
��
��
��
��
��
��
��
����*��#
��
���39�C,
��lx
��lx)���
��
��
��
��
��
��!b�R�b�q
��
���v����
��lx
��lxؒ 
��lx
��lx
��lx
�lx
�
�
�
�	
�
�
�
�e�l�W
�
�e!�.!��
�
lx
�lx���
�
lx
�lx
�lx)lx
�lx
�lx
�lx
�lx
�lx
�lx
�
�
�
��
�
�v
�
�G
�
�1
�
�&
�
�#
�
�!
�
� lx����ee
�"��~�
�$lx
�%lxrX�
�'
�.
�(
�+
�)
�*~���d?��
�,
�-��*dN�v
�/lx
�0lxՙb
�2
�<
�3
�9
�4
�7
�5
�6ՙ~���
�8e�e
�:lx
�;lx1�$�
�=
�D
�>
�A
�?
�@������w
�B
�C܆��ܖܦ
�Elx
�Flx����
�H
�_
�I
�T
�J
�Q
�K
�N
�L
�M�(��Rܵ
�O
�P��|����
�Rlx
�Slx*��
�U
�\
�V
�Y
�W
�X������9
�Z
�[�*��!;
�]lx
�^lx���0
�`
�k
�a
�h
�b
�e
�c
�d�b�@��P
�f
�g�`�p�)#e
�ilx
�jlx�p݀
�l
�s
�m
�p
�n
�o�S��ݐ�
�q
�rݟ�ݯݿ
�tlx
�ulx�D��
�wlx
�xlx
�y
��
�z
��
�{
�~
�|
�}�>"Z����
�
������
�H
��lx
��lx��-
��
��
��
��
��
���=�7�M�5
��
���\�l�|ތ
��lx
��lxޛ��
��
��
��
��
��
��
��
��
��
��
��
��
��
����HO�
��
����&rIު
��lx
��lx޺�w
��
��
��
��
��
������	��
��
���� ��m{c
��lx
��lx����
��
��
��
��
��
��
��
������&
��
���|�5��Q�
��lx
��lx�E�T
��
��
��
��
��
��,��d�s߃
��
��)ߓ`�O�
��lx
��lxߢ�
��
��
��
��
��
��
��
��
��
��R~߱�N�
��
����������
��lx
��lx��,�
��
��
��
��
��
�����.���
��
����
��
��lx
��lx�+�]
��
��
��
��
��
��
��
���������;
��
���K�[�j�y
��lx
��lx��
��
��
��
��
��
���|:�c6
��
��lx������
��lx
��lx��1�
��lx
��lx
��
��
��
��
��
��
��
����*��#
��
���39�C,
��lx
��lx)���
��
�
��
�
�
�!b�R�b�q
�
��v����
�lx
�lxؒ 
�	lx
�
lx
�lx
�lx
�

�
�
�
�
�
�
�e�l�W
�
�e!�.!��
�lx
�lx���
�lx
�lx
�lx)lx
�@az@
�
�*
� 
�%
�!@
�"@
�#@
�$@M@
�&@
�'@
�(@
�)@L�@
�+
�0
�,@
�-@
�.@
�/@c�@
�1@g4@
�3
��
�4
��
�5
�Z
�6
�M
�7
�B
�8
�=
�9@
�:@
�;@
�<@b�@
�>@
�?@
�@@
�A@L�@
�C
�H
�D@
�E@
�F@
�G@b�@
�I@
�J@
�K@
�L@M@
�N
�T
�O@
�P@
�Q@
�R@
�S@`�@
�U@
�V@
�W@
�X@
�Y@c�@
�[
�o
�\
�d
�]
�_
�^@cW@
�`@
�a@
�b@
�c@c�@
�e
�j
�f@
�g@
�h@
�i@g_@
�k@
�l@
�m@
�n@h@
�p
�{
�q
�v
�r@
�s@
�t@
�u@i�@
�w@
�x@
�y@
�z@M@
�|
��
�}@
�~@
�@
��@b�@
��@l@
��
��
��
��
��
��@
��
��@
��@
��@
��@d@
��
��
��@
��@
��@
��@L�@
��@
��@
��@
��@b�@
��
��
��
��
��@d@
��@
��@
��@
��@N@
��@
��@
��@
��@
��@c�@
��
��
��
��
��
��
��@
��@
��@
��@L@
��@
��@
��@
��@i�@
��
��
��@g_@
��@
��@
��@
��@rf@
��
��
��
��
��@
��@
��@
��@j�@
��@
��@
��@
��@M@
��
��
��@
��@
��@
��@L@
��@M@
��
�
��
��
��
��
��
��
��
��
��@c�@
��@aN@
��@
��@
��@
��@
��@b�@
��
��
��@
��@
��@
��@
��@`�@
��
��
��@
��@
��@
��@L�@
��@
��@
��@
��@M@
��
�
��
��
��
��
��@xv@
��@
��@
��@
��@c�@@
��
��@
��@
��@
��@b�@
�
�	
�
�
�@M@
�@
�@
�@
�@nW@
�

�
�@
�@
�
@
�@L@
�@
�@
�@
�@p�@
�
�:
�
�#
�
�
�@
�@
�@
�@
�@i�@
�@
�@
� @
�!@
�"@M@
�$
�/
�%
�*
�&@
�'@
�(@
�)@xv@
�+@
�,@
�-@
�.@L@
�0
�5
�1@
�2@
�3@
�4@N@
�6@
�7@
�8@
�9@b�@
�;
�R
�<
�G
�=
�B
�>@
�?@
�@@
�A@d@
�C@
�D@
�E@
�F@c�@
�H
�M
�I@
�J@
�K@
�L@�,@
�N@
�O@
�P@
�Q@d@
�S
�[
�T
�V
�U@b�@
�W@
�X@
�Y@
�Z@L�@
�\
�a
�]@
�^@
�_@
�`@L@
�b@
�c@
�d@
�e@b�@
�g
��
�h
��
�i
�
�j
��
�k
��
�l
��
�m
�u
�n
�s
�o@
�p@
�q@
�r@`�@
�t@��@
�v
�{
�w@
�x@
�y@
�z@iM@
�|@
�}@
�~@
�@nW@
��
��
��
��
��@
��@
��@
��@q~@
��@
��@
��@
��@d@
��
��
��@
��@
��@
��@M@
��@
��@
��@
��@L�@
��
��
��
��
��
��
��@
��@
��@
��@L�@
��@`�@@
��
��@
��@
��@
��@b�@
��
��
��
��
��@
��@
��@
��@g4@
��@
��@
��@
��@{
@
��
��
��@
��@
��@
��@`�@
��@
��@
��@
��@g4@
��
��
��
��
��
��
��@
��@cW@
��
��
��@
��@
��@
��@c�@
��@
��@
��@
��@cW@
��
��
��
��
��@
��@
��@
��@az@
��@
��@
��@
��@aN@
��@
��@
��@
��@
��@L@
��
��
��
��
��
��
��@
��@
��@
��@j�@
��@
��@
��@
��@�,@
��@
��@
��@
��@
��@nW@
��
�
��
��
��@
��@
��@
��@j�@
��@
��@
��@
��@j�@
�
�
�@
�@
�@
�@b�@
�@
�@
�	@
�
@`�@
�
�e
�

�9
�
�%
�
�
�
�
�@
�@
�@
�@c�@
�@
�@
�@
�@nW@
�
� 
�@
�@
�@
�@iM@
�!@
�"@
�#@
�$@N@
�&
�.
�'
�,
�(@
�)@
�*@
�+@L@
�-@n�@
�/
�4
�0@
�1@
�2@
�3@M@
�5@
�6@
�7@
�8@b�@
�:
�N
�;
�C
�<
�>
�=@cW@
�?@
�@@
�A@
�B@L@
�D
�I
�E@
�F@
�G@
�H@M@
�J@
�K@
�L@
�M@L�@
�O
�Z
�P
�U
�Q@
�R@
�S@
�T@�@
�V@
�W@
�X@
�Y@b�@
�[
�`
�\@
�]@
�^@
�_@y7@
�a@
�b@
�c@
�d@L�@
�f
��
�g
�x
�h
�m
�i
�k
�j@nW@
�l@b�@
�n
�s
�o@
�p@
�q@
�r@c�@
�t@
�u@
�v@
�w@b�@
�y
��
�z
�
�{@
�|@
�}@
�~@`�@
��@
��@
��@
��@xv@
��
��
��@
��@
��@
��@M@
��@
��@
��@
��@c�@
��
��
��
��
��
��
��@
��@
��@
��@c�@
��@j�@
��
��
��@
��@
��@
��@cW@
��@
��@
��@
��@aN@
��
��
��
��
��@
��@
��@
��@L�@
��@
��@
��@
��@��@
��
��
��@
��@
��@
��@w�@
��@
��@
��@
��@g_@
��
�^
��
�

��
��
��
��
��
��
��@
��@
��@
��@
��@ak@
��
��
��@
��@
��@
��@L�@
��@
��@
��@
��@b�@
��
��
��
��
��@
��@
��@
��@i�@
��@
��@
��@
��@l�@
��
��
��@
��@
��@
��@L�@
��@
��@
��@
��@L�@
��
��
��
��
��@
��@
��@
��@
��@M�@
��
��
��@
��@
��@
��@aN@
��@
��@
��@
��@M@
��
�
��
�
��@
��@
�@
�@M�@
�@
�@
�@
�@L@
�@
�	@
�
@
�@
�@b�@
�
�8
�
�&
�
�
�
�
�@
�@
�@
�@d@
�@
�@
�@
�@M@
�
�!
�@
�@
�@
� @`�@
�"@
�#@
�$@
�%@N@
�'
�2
�(
�-
�)@
�*@
�+@
�,@ak@
�.@
�/@
�0@
�1@d@@
�3
�4@
�5@
�6@
�7@c�@
�9
�L
�:
�E
�;
�@
�<@
�=@
�>@
�?@M@
�A@
�B@
�C@
�D@xv@
�F
�K
�G@
�H@
�I@
�J@oY@M@
�M
�S
�N@
�O@
�P@
�Q@
�R@|�@
�T
�Y
�U@
�V@
�W@
�X@b�@
�Z@
�[@
�\@
�]@li@
�_
��
�`
��
�a
�x
�b
�m
�c
�h
�d@
�e@
�f@
�g@M@
�i@
�j@
�k@
�l@xv@
�n
�s
�o@
�p@
�q@
�r@L�@
�t@
�u@
�v@
�w@d{@
�y
��
�z
�
�{@
�|@
�}@
�~@b�@
��@j�@
��
��
��@
��@
��@
��@b�@
��@
��@
��@
��@`�@
��
��
��
��
��
��
��@
��@
��@
��@b�@
��@
��@
��@
��@M@
��
��
��@
��@
��@
��@d@
��@
��@
��@
��@t�@
��
��
��
��
��@
��@
��@
��@b�@
��@M@
��
��
��@c�@
��@
��@
��@
��@d@
��
��
��
��
��
��@
��
��@
��@
��@
��@L@
��
��
��@
��@
��@
��@M@
��@
��@
��@
��@b�@
��
��@
��
��@
��@
��@
��@
��@
��
�
��
�
��
��
��
��
��M
��M
��
��M����g�
��
��
��
��
��
��q�g���d
��
��g�y�g��;
��
��
��
��g��oM�4
��
��g�M~M
��
��
��
��
��
��
��
������g�tO
��
����J��g�
��
��
��
��g�������
��
���oM��M
��
��
��
��
��
��g���g�MM
��g���
�
�
�
��OMM�M
�M�O
�M
�
�
�
�
�	
�M
�
*�M
�
�
M�lM�
�
�
�
�$3M���M
�M�J
�M
�M
�MM��M
�
�
��
�
�)
�
�#
�
� 
�
�q�g���d
�!
�"g�y�g��;
�$
�'
�%
�&g��oM�4g�
�(~�;
�*
�I
�+
�F
�,
�E��
�-
�.��
�/��
�0��
�1��
�2����
�3
�4����
�5
�6��
�7��
�8��
�9��
�:��
�;��
�<��
�=��
�>��
�?��
�@��
�A��
�B��
�C��
�D������g�tO
�G
�H��J��g�
�J
�M
�K
�Lg�������
�N
�g
�O��
�P�o
�Q�o
�R�o
�S�o�o
�T�o
�U�o
�V
�W�o
�X�o
�Y�o�o
�Z
�[�o
�\�o�o
�]�o
�^�o
�_
�`�o
�a�o
�b�o
�c�o
�d�o�o
�e
�f�o���o
�h��
�i��
�j��
�k��
�l����
�m��
�n
�o��
�p��
�q��
�r��
�s��
�t��
�u��
�v��
�w��
�x��
�y��
�z��
�{��
�|��
�}��
�~��
�������
��
��
��
��
��
��
��g�g���g�
��g���
��
��
��
���OMM�M
��M�O
��
��
��
��
��
���	�;*�M
��
���-�lM�
��
��
��
��$3g����
��
���+Mg��J
��@
��@iM@
��
��
��
��
��
��
��@d]@
��@
��@
��@
��@d@
��
��
��@
��@
��@
��@q~@
��@aN@
��
��
��
��
��@M@
��@
��@
��@
��@p�@
��
��
��@
��@
��@
��@M@
��@
��@
��@
��@d@
��
�
��
�d
��
�
��
��
��
��
��
��
��@
��@n�@
��
��
��@
��@
��@
��@g4@
��@
��@
��@
��@d@
��
��
��
��
��@
��@
��@
��@M@
��@
��@
��@
��@m�@
��
��
��@
��@
��@
��@d]@
��@
��@
��@
��@xv@
��
�
��
��
��@
��@
��@
��@
��@g_@
��
��
��@
��@
��@
��@M@
��@
�@
�@
�@L@
�
�
@
�
�@
�@
�@
�	@d@
�
�
�@
�
@
�@
�@M@
�@
�@
�@
�@n�@
�
�8
�
�+
�
�#
�
�
�@
�@
�@
�@b�@
�@
� @
�!@
�"@N@
�$
�)
�%@
�&@
�'@
�(@c�@
�*@� @
�,
�2
�-@
�.@
�/@
�0@
�1@M@@
�3
�4@
�5@
�6@
�7@L�@
�9
�P
�:
�E
�;
�@
�<@
�=@
�>@
�?@ku@
�A@
�B@
�C@
�D@`�@
�F
�K
�G@
�H@
�I@
�J@M�@
�L@
�M@
�N@
�O@`�@
�Q
�Y
�R
�W
�S@
�T@
�U@
�V@�(@
�X@nW@
�Z
�_
�[@
�\@
�]@
�^@M@
�`@
�a@
�b@
�c@L�@
�e
��
�f
��
�g
�~
�h
�s
�i
�n
�j@
�k@
�l@
�m@L�@
�o@
�p@
�q@
�r@cW@
�t
�y
�u@
�v@
�w@
�x@d@
�z@
�{@
�|@
�}@�@
�
��
��
��
��@
��@
��@
��@L@
��@
��@
��@
��@d@@
��
��@
��@
��@
��@az@
��
��
��
��
��
��
��@
��@
��@
��@�H@
��@
��@
��@
��@d@
��
��
��@
��@
��@
��@d{@
��@
��@
��@
��@aN@
��
��
��
��
��@
��@
��@
��@M@
��@
��@
��@
��@L@
��@
��@
��@
��@
��@L�@
��
��
��
��
��
��
��
��
��@
��@
��@
��@p�@
��@
��@
��@
��@M@
��
��
��@
��@
��@
��@d{@
��@
��@
��@
��@c�@
��
��
��
��
��@
��@
��@
��@L�@
��@
��@
��@
��@lx@
��
��
��@
��@
��@
��@e�@
��@
��@
��@
��@d@
��
��
��
��
��
��
��@
��@
��@
��@M@
��@M�@
��
��
��@
��@
��@
��@y7@
��@
��@
��@
��@b�@
�
�@
�
�@b�@
�
�	
�@
�@
�@
�@M@
�
@
�@
�@
�
@M@
�
��
�
�c
�
�7
�
�#
�
�
�
�
�@
�@
�@
�@b�@
�@
�@
�@
�@N@
�
�!
� @N@
�"@g_@
�$
�,
�%
�*
�&@
�'@
�(@
�)@b�@
�+@xv@
�-
�2
�.@
�/@
�0@
�1@d@
�3@
�4@
�5@
�6@M@
�8
�L
�9
�D
�:
�?
�;@
�<@
�=@
�>@ak@
�@@
�A@
�B@
�C@L�@
�E
�J
�F@
�G@
�H@
�I@d@
�K@b�@
�M
�X
�N
�S
�O@
�P@
�Q@
�R@l�@
�T@
�U@
�V@
�W@�X@
�Y
�^
�Z@
�[@
�\@
�]@c�@
�_@
�`@
�a@
�b@L�@
�d
��
�e
�y
�f
�n
�g
�i
�h@xv@
�j@
�k@
�l@
�m@M@
�o
�t
�p@
�q@
�r@
�s@b�@
�u@
�v@
�w@
�x@d{@
�z
��
�{
��
�|@
�}@
�~@
�@M�@
��@
��@
��@
��@
��@
��m�
��
��
��m�m�
��
��m�m�
��m�
��
��m�
��m�
��m�
��m�m�
��m�
��
��m�
��m�m�
��
���
���
���
���
���
���
���
���
���
���
���
���
���
���
�����
��m�m�
��
��m�
��m�
��m�
��m�
��m�
��m�
��m�
��m�
��m�
��m�
��m�
��m�
��m�
��m�
��m�
��m�
��m�
��m�
��m�
��m�
��m�
��m�
��m�
��m�
��m�
��m�
��m���m�
��
��
��@
��@
��@
��@lx@
��@
��@
��@
��@L�@
��
��
��
��
��
��
��@d@
��@
��@
��@
��@L�@
��
��
��@
��@
��@
��@li@
��@
��@
��@
��@ku@
��
��
��
��
��@
��@
��@
��@cW@
��@
��@
��@
��@`�@
��
��
��@
��@
��@
��@b�@
��@
��@
��@
��@`�@
��
�Q
��
�'
��
�
��
�	
��
�
�@
�@
�@
�@aN@
�@
�@
�@
�@N@
�

�
�@
�@
�
@
�@
�@d�Z
�@
�@
�@
�@L@
�
�@
�
�@
�@
�@
�@K�@
�
�"
�@
�@
� @
�!@e�@
�#@
�$@
�%@
�&@L@
�(
�:
�)
�4
�*
�/
�+@
�,@
�-@
�.@xv@
�0@
�1@
�2@
�3@M�@@
�5
�6@
�7@
�8@
�9@`�@
�;
�F
�<
�A
�=@
�>@
�?@
�@@c�@
�B@
�C@
�D@
�E@i�@
�G
�L
�H@
�I@
�J@
�K@cW@
�M@
�N@
�O@
�P@M@
�R
�t
�S
�]
�T
�W
�U@
�V@M�@@
�X
�Y@
�Z@
�[@
�\@cW@
�^
�i
�_
�d
�`@
�a@
�b@
�c@b�@
�e@
�f@
�g@
�h@M�@
�j
�o
�k@
�l@
�m@
�n@b�@
�p@
�q@
�r@
�s@d@
�u
��
�v
��
�w
�|
�x@
�y@
�z@
�{@M@
�}@
�~@
�@
��@aN@
��
��
��@
��@
��@
��@M@
��@
��@
��@
��@�G@
��
��
��
��
��@N@
��@
��@
��@
��@L�@
��@
��@
��@
��@
��@b�@
��
�x
��
��
��
��
��
��
��
�z
��
�o
��
��
��
��
��
��
��
��
��
��
��@
��@d@M@
��@
��@d@
��
��
��@
��@b�@
��
��
��@
��@=�@
��@
��@
��@d
��
��dd
��
��dd
��
��d
��dd
��d
��d
��
��dd
��
��d
��d
��d
��dd
��
��d
��dd
��
��d
��dd
��d
��d
��
��d
��d
��d
��d
��d
��d
��d@d
��
��
��@
��@i�@
��
��
��@
��@N@
��@
��@ak@
��@
��@
��@
��dd
��
��
�M
��
�,
��
�
��d
��dd
��
��d
��dd
��d
��d
��d
��d
��
��d
��d
��d
��d
��d
��d
��d
��d
��d
�dd
�d
�
�d
�d
�dd
�d
�d
�d
�	d
�

�d@dd
�

�dd
�
�d
�dd
�
�d
�dd
�d
�
�d
�d
�d
�d
�d
�d
�d
�dd
�
� d
�!dd
�"
�#d
�$d
�%d
�&dd
�'d
�(d
�)
�*d
�+d@dd
�-
�.dd
�/
�0d
�1d
�2d
�3dd
�4d
�5
�6dd
�7
�8d
�9d
�:d
�;d
�<d
�=d
�>dd
�?
�@dd
�Ad
�B
�Cdd
�Dd
�E
�Fdd
�Gd
�H
�Id
�Jdd
�K
�Ld@d
�Ndd
�O
�Pd
�Qd
�Rdd
�S
�Td
�Udd
�Vd
�Wd
�Xd
�Y
�Zd
�[d
�\d
�]d
�^d
�_d
�`d
�add
�b
�cd
�dd
�ed
�fdd
�gd
�h
�idd
�j
�kdd
�l
�md
�nd@d
�p
�s
�q@
�r@d@
�t
�w
�u@
�v@xv@
�x@
�y@g4@
�{@
�|@
�}@
�~
��L�
�
��L�L�
��
��L�
��L�
��
��
��L�
��L�
��L�
��L�L�
��L�
��
��L�L�
��L�
��
��L�L�
��L�
��
��L�
��L�L�
��L�
��
��L�
��L�L�
��L�
��L�
��
��L�
��L�L�
��
��L�
��L�
��L�
��L�
��L�
��L�
��L�L�@L�
��
��L�
��L�
��L�
��L�
��L�
��L�L�
��L�
��
��L�
��L�L�
��
��L�L�
��
��L�
��L�
��L�
��L�
��L�L�
��L�
��
��L�L�
��L�
��
��L�
��L�
��L�
��L�
��L�
��L�
��L�L�@
��L�
��L�
��L�
��L�
��L�
��L�
��L�
��L�L�
��L�
��
��L�L�
��
��L�
��L�
��L�
��L�
��L�
��L�L�
��L�
��
��L�L�
��L�
��L�
��
��L�L�
��L�
��
��L�L�
��L�
��
��L�L�
��
��L�
��L�L�
��L�
��
��L�L�@
��@
��@M@
��
��
��@L@
��@
��@@
��
��@@
��
��@
��@
��@
��@
��@�d@
��
�u
��
�"
��
�.
��
�
�@
�@g_@
�
�
�@
�@N@
�@
�@
�	@c�
�
c�
�c�
�c�
�

�c�
�c�c�
�
�c�
�c�
�c�
�c�
�c�
�c�
�c�
�c�
�c�c�
�c�
�
�c�c�
�c�
�
�c�c�
� 
�!c�
�"c�
�#c�
�$c�
�%c�c�
�&c�
�'
�(c�
�)c�
�*c�
�+c�
�,c�
�-c�@c�
�/@
�0@
�1@N
�2
�3
��
�4
�{
�5
�X
�6NN
�7
�8NN
�9
�:NN
�;
�<NN
�=N
�>N
�?N
�@
�ANN
�B
�CN
�DNN
�E
�FNN
�G
�HN
�IN
�JN
�KN
�LN
�MN
�NN
�ON
�PN
�QN
�RN
�SN
�TN
�UN
�VN
�WN@NN
�Y
�ZNN
�[
�\N
�]N
�^N
�_NN
�`N
�aN
�bN
�c
�dN
�eN
�fNN
�g
�hNN
�iN
�j
�kN
�lN
�mN
�nN
�oN
�pN
�qN
�rN
�sN
�tN
�uN
�vN
�wN
�xN
�yN
�zNN@
�|NN
�}N
�~N
�N
��
��
��
��N
��NN
��N
��N
��
��NN
��N
��
��N
��N
��NN
��N
��N
��
��N
��N
��N
��N
��N
��N
��NN
��
��N
��N
��N
��N
��N
��N
��N@NN
��
��N
��N
��N
��NN
��
��N
��N
��NN
��
��NN
��N
��
��N
��N
��N
��N
��N
��N
��N
��N
��N
��N
��N
��N
��N
��N
��N
��N
��NN
��
��NN
��N
��
��NN
��N
��
��NN
��
��N
��NN
��
��N
��NN
��N
��
��N
��N
��N
��NN
��
��N
��N
��N
��NN
��
��N
��N
��N
��NN
��
��N
��N
��NN
��
��N
��NN
��
��NN
��
��N
��N
��N
��NN
��N
��
��N
��NN
��N
��N
��N
��N
��N
��N
��
��N
��N
��NN
��N
��N
��
��NN
��N@
��N
��NN
�N
�
�NN
�
�N
�NN
�N
�N
�
�	N
�
NN
�
�NN
�
N
�N
�
�NN
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
� N
�!NN@
�#
�6
�$
�'
�%@
�&@L@
�(
�+
�)@
�*@cW@
�,
�3
�-
�0
�.@
�/@j�@
�1@
�2@cW@
�4@
�5@q~@
�7
�V
�8
�G
�9
�@
�:
�=
�;@
�<@M@
�>@
�?@N@
�A
�D
�B@
�C@c�@
�E@
�F@d@
�H
�O
�I
�L
�J@
�K@N@
�M@
�N@d@
�P
�S
�Q@
�R@L@
�T@
�U@d@
�W
�f
�X
�_
�Y
�\
�Z@
�[@li@
�]@
�^@l@
�`
�c
�a@
�b@nW@
�d@
�e@b�@
�g
�n
�h
�k
�i@
�j@g_@
�l@
�m@M@
�o
�r
�p@
�q@cW@
�s@
�t@H:@
�v@
�w@`�@
�y
�/
�z
�!
�{
��
�|
�7
�}
��
�~
��
�
��
��
��
��@
��@q~@
��@
��@rf@
��
��
��@
��@d{@
��@
��@b�@
��
��
��
��
��@
��@d@
��@
��@d@
��
��
��@
��@
��@
��cW
��cW
��cW
��cW
��cW
��cWcW
��cW
��cW
��cW
��cW
��cW
��cW
��cW
��cW
��cW
��cW
��cW
��cWx�
��@
��@M@
��
�#
��
�
��
�
��@
��@
��@d
��
��
��d
��
��d
��dd
��
��d
��d
��d
��d
��d
��d
��d
��d
��dd
��
��d
��dd
��
��dd
��
��d
��dd
��
��d
��d
��d
��dd
��
��d
��d
��dd
��
��dd�
��
��
��d
��dd
��
��d
��d
��d
��dd
��
��dd
��d
��
��d
��d
��d
��dd
��
��d
��d
��d
��d
��d
��d
��dd
��
��dd
��d
��
��d
��d
��d
��dd�
��d
��dd
��d
��
��d
��d
�d
�d
�d
�d
�d
�d
�d
�dd
�
�	dd
�

�d
�d
�
d
�d
�dd
�
�dd
�
�d
�d
�d
�d
�dd
�d�
�@
�@az@
�
� 
�@
�@xv@
�!@
�"@M@
�$
�+
�%
�(
�&@
�'@`�@
�)@
�*@nW@
�,
�4
�-
�1
�.
�0
�/@cW@c�@
�2@
�3@iM@
�5@
�6@�x@
�8
�Z
�9
�K
�:
�A
�;
�>
�<@
�=@�x@
�?@
�@@L�@
�B
�H
�C@
�D@
�E@
�F@
�G@`�@
�I@
�J@cW@
�L
�S
�M
�P
�N@
�O@t�@
�Q@
�R@`�@
�T
�W
�U@
�V@`�@
�X@
�Y@p�@
�[
��
�\
�c
�]
�`
�^@
�_@xv@
�a@
�b@q~@
�d
�o
�e
�l
�f
�i
�g@
�h@`�@
�j@
�k@L@
�m@
�n@d@
�p@
�q@
�r@
�sM
�tMM
�u
�vM
�wM
�xM
�yM
�zM
�{M
�|M
�}M
�~M
�M
��M
��
��M
��
��
��M
��M��
��
����g��mg�
��M
��M
��M�OM
��
��
��
��
��@
��@`�@
��@
��@d@
��
��
��@
��@m�@
��@
��@`�@
��
��
��
��
��
��
��
��
��
��
��@
��@L�@
��@
��@M@
��
��
��@
��@N@
��@
��@��@
��
��
��
��
��@
��@aN@
��@
��@c�@
��
��
��@
��@b�@
��@
��@d@
��
��
��
��
��
��
��@
��@d@
��@
��@b�@
��
��
��@
��@M�@
��@
��@d{@
��
��
��
��
��@
��@c�@
��@
��@d@
��
��
��@
��@t�@
��
��
��@
��@|�@
��
��
��@
��@xv@d@
��
�
��
��
��
��
��
��
��@
��@N@
��@
��@nW@
��
��
��@
��@b�@
��@
��@�@
��
��
��
��
��@
��@nW@
��@
��@b�@
��
��
��@
��@iM@
��@
�@`�@
�
�
�
�

�
�
�@
�@t�@
�@
�	@M@
�
�
�@
�
@d@
�@
�@
�@N@
�
�
�
�
�@
�@M�@
�@
�@aN@
�
�
�@
�@`�@
�@
� @L�@
�"
��
�#
�b
�$
�C
�%
�4
�&
�-
�'
�*
�(@
�)@M@
�+@
�,@M�@
�.
�1
�/@
�0@�x@
�2@
�3@b�@
�5
�<
�6
�9
�7@
�8@c�@
�:@
�;@nW@
�=
�@
�>@
�?@d@
�A@
�B@`�@
�D
�S
�E
�L
�F
�I
�G@
�H@p�@
�J@
�K@Л@
�M
�P
�N@
�O@xv@
�Q@
�R@iM@
�T
�[
�U
�X
�V@
�W@d{@
�Y@
�Z@L�@
�\
�_
�]@
�^@iM@
�`@
�a@M@
�c
��
�d
�w
�e
�l
�f
�i
�g@
�h@q~@
�j@
�k@M�@
�m
�p
�n@
�o@d@
�q
�t
�r@
�s@p�@
�u@
�v@d@
�x
�
�y
�|
�z@
�{@d@
�}@
�~@M@
��
��
��@
��@L�@
��@
��@xv@
��
��
��
��
��
��
��@
��@d@
��@
��@L�@
��
��
��
��
��@
��@M@
��@d@
��@
��@ak@
��
��
��
��
��@
��@d@
��@
��@cW@
��
��
��@
��@iM@
��@
��@L�@
��
��
��
��
��
��
��
��
��
��
��@
��@d@
��@
��@b�@
��
��
��
��
��@
��@
��@
��@N@
��@
��@
��@
��@xv@
��@
��@nW@
��
��
��
��
��@
��@M�@
��@
��@L�@
��
��
��@
��@c�@
��@
��@c�@
��
��
��
��
��
��
��@
��@d@
��@
��@M@
��
��
��@
��@g4@
��@
��@b�@
��
��
��
��
��@
��@d@
��@
��@l@
��
��
��@
��@b�@
��@
��@b�@
��
�
��
�
��
��
��
��
��@
��@b�@
��@
��@c�@
��
��
��@
��@b�@
��@
�@d{@
�
�	
�
�
�@
�@�b@
�@
�@M@
�

�

�@
�@M�@
�@
�@b�@
�
� 
�
�
�
�
�@
�@b�@
�@
�@`�@
�
�
�@
�@b�@
�@
�@��@
�!
�(
�"
�%
�#@
�$@iM@
�&@
�'@c�@
�)
�,
�*@
�+@M@
�-@
�.@iM@
�0
��
�1
��
�2
�u
�3
�R
�4
�C
�5
�<
�6
�9
�7@
�8@L�@
�:@
�;@N@
�=
�@
�>@
�?@�H@
�A@
�B@cW@
�D
�K
�E
�H
�F@
�G@M@
�I@
�J@c�@
�L
�O
�M@
�N@M�@
�P@
�Q@N@
�S
�f
�T
�_
�U
�\
�V
�Y
�W@
�X@g4@
�Z@
�[@�,@
�]@
�^@d@
�`
�c
�a@
�b@Ќ@
�d@
�e@`�@
�g
�n
�h
�k
�i@
�j@Л@
�l@
�m@nW@
�o
�r
�p@
�q@�@
�s@
�t@��@
�v
��
�w
��
�x
�
�y
�|
�z@
�{@M�@
�}@
�~@d@
��
��
��@
��@az@
��@
��@d@
��
��
��
��
��@
��@L�@
��@
��@�m@
��
��
��@
��@nW@
��@
��@b�@
��
��
��
��
��
��
��
��
��@
��@M@
��@
��@b�@
��@
��@L�@
��
��
��@
��@rf@
��@
��@M@
��
��
��
��
��@
��@�_@
��@
��@d@
��
��
��@
��@c�@
��@
��@c�@
��
��
��
��
��
��
��
��
��
��
��@
��@d@
��@
��@b�@
��
��
��@
��@b�@
��@
��@M@
��
��
��
��
��@
��@
��@
��@
��@p�@
��@
��@`�@
��@
��@
��@az@
��
��
��
��
��
��
��@
��@t�@
��@
��@M@
��
��
��@
��@c�@
��@
��@c�@
��
��
��
��
��@
��@b�@
��@
��@M@
��
��
��@
��@b�@
��@
��@L�@
��
��
��
�
��
�
��
��
��@
��@L�@
�@
�@b�@
�
�
�@
�@
�@
�az
�az
�	az
�
az
�az
�az
�
az
�azaz
�az
�az
�
�az
�az
�az
�az
�az
�az
�azjaz
�@
�@��@
�
��
�
��
�@
� @
�!@
�"
�5
�#
�4nW
�$
�%nWnW
�&
�'nW
�(nW
�)nW
�*nW
�+nWnW
�,
�-nW
�.nWnW
�/
�0nW
�1nW
�2nW
�3nW�RnWnWZh
�6
�a
�7nW
�8nW
�9
�R
�:
�C
�;nW
�<nW
�=nW
�>nWnW
�?
�@nW
�AnW
�BnW��nWnW
�D
�EnWnW
�F
�GnW
�H
�L
�InW
�JnW
�KnWnWnW
�M
�NnW
�OnW
�PnW
�QnW��nW
�SnW
�TnW
�UnWnW
�V
�W
�\nW
�X
�YnW
�ZnW
�[nW�RnW
�]nW
�^nW
�_nW
�`nW)(nW
�bnW
�cnW
�dnW
�enW
�fnW
�gnW
�hnW
�inW
�jnW
�knW
�lnW
�mnW
�nnW
�onW
�pnW
�qnW
�rnW
�snW
�tnW
�unW
�vnW
�wnW
�xnW
�ynW
�znW
�{nW
�|nW
�}nW
�~nW
�nW
��nW
��nWjnW
��@
��@c�@
��
��
��@
��@d@
��@
��@t�@
��
��
��
��
��
��
��@
��@d{@
��@
��@L@
��
��
��@
��@
��@
��N
��N
��N
��NN
��
��N
��N
��N
��N
��
�
��
�
��
��
��
��
��
��
��
��
��
��
��
��N
��NX#Q�
��Q�N;
��
��
��
��N;SQ�NP}
����N
��
��
��
��N;W�P}OT
��
��
��N;YNN;\;
��
��
��
��
��
��Q�P}NQ�
��
��R�VpW�N
��
��N
��N
��N;Q�
��
��OT
��NU�
��
��VpNOqOE
��
��
��
��
��
��
��
��OT
��NQ�
��[�NQ�P}
��
��
��NOENQ�
��
��
��
��
��
��OTNNN;P}Q�
��
��yON
��
��OTNN�yO
��
��
��
��
��
��N
��NP}
��Q�NP}
��
��W�OENN;
��
��
��
��OcQ�Q�OT
��
��N;OqOqN;
��
�

��
�
��
��
��
��
��
��N;NY��Y
��W�N;
�
�Q�
�YW�
�YYN;
�U�
�
�Q�
�Q�N;
�	Q�N;[�
�N
�
�
�

�
�VpX#VpN
��WN
�
�
�]ROTP�
�NP}N
�
�K
�
�/
�
�#
�
� 
�
�
�
�P}OEX#OTOT
�NP}P}
�!P}
�"OTN;
�$
�)
�%
�'
�&OTOqO�
�(N;Q�yO
�*
�,N;
�+N;\;
�-
�.P�N�VpP}
�0
�=
�1
�7
�2
�5
�3
�4NN;[�N;
�6NQ�N
�8
�:N;
�9U\N;
�;
�<OTNN;N
�>
�E
�?
�B
�@
�AQ�OqOqVp
�C
�DYNU\Y
�F
�I
�G
�HN;OEOEQ�OE
�JOEN
�L
�e
�M
�[
�N
�T
�O
�QOE
�POEQ�
�R
�SOTQ�R�OT
�U
�X
�V
�WQ�N;NQ�
�Y
�ZP}X#O�P}
�\
�b
�]
�_
�^OEP}Q�
�`
�aN;NOqU�
�cP}
�dP}P�P}
�f
�p
�g
�kP}
�h
�i
�jOcYSN;N;
�l
�m
�nP}Vp
�oVpVpN
�q
�x
�r
�u
�s
�tVpN;P}N;
�v
�wN;Q�Q�N;
�y
�|
�z
�{N;OqQ�OE
�}
�~NQ�Q�N;
��N
��N
��
��
��
��
��
��
��
��
��P}OTP}P}
��OEN;
��
��
��
��O�Q�OESN
��OTN
��
��
��
��
��
��OEN;YQ�
��
��Q�N;N;P}
��
��
��
��N;P}OEN;N;
��N;N
��N
��
��
��N
��
��N;P}��N
��N
��NNU�
��@
��@M�@
��
��
��
��
��@
��@b�@
��@
��@b�@
��
��
��@
��@
��@
��@
��@N@
��@
��@b�@
��
�E
��
�
��
��
��
��
��
��
��
��
��@
��@xv@
��@
��@`�@
��
��
��
��
��@
��@d{@
��@
��@M@
��@
��@rf@
��
��
��
��
��@
��@M@
��@
��@d@
��
��
��@
��@L�@
��@
��@d{@
��
��
��
��
��
��
��@
��@d@
��@
��@c�@
��
��
��@
��@L�@
��@
��@L�@
��
��
��
��
��@
��@nW@
��@
��@d@
��
��
��@
��@M@
��@
��@c�@
�
�&
�
�
�
�

�
�
�@
�@`�@
�@
�	@M@
�
�
�@
�
@nW@
�@
�@L@
�
�
�
�
�@
�@b�@
�
�
�@M@
�@
�@b�@
�
�#
�@
�@
� @
�!@
�"@b�@
�$@
�%@N@
�'
�6
�(
�/
�)
�,
�*@
�+@N@
�-@
�.@N@
�0
�3
�1@
�2@j*@
�4@
�5@b�@
�7
�>
�8
�;
�9@
�:@y7@
�<@
�=@c�@
�?
�B
�@@
�A@M�@
�C@
�D@��@
�F
��
�G
�i
�H
�W
�I
�P
�J
�M
�K@
�L@b�@
�N@
�O@L�@
�Q
�T
�R@
�S@d@
�U@
�V@c�@
�X
�_
�Y
�\
�Z@
�[@iM@
�]@
�^@q~@
�`
�f
�a@
�b@
�c@
�d@
�e@cW@
�g@
�h@M@
�j
��
�k
�r
�l
�o
�m@
�n@t�@
�p@
�q@c�@
�s
�~
�t
�y
�u@
�v@
�w@
�x@t�@
�z@
�{@
�|@
�}@d@
�
��
��@
��@
��@
��@xv@
��@cW@
��
��
��
��
��@
��@d@
��@
��@d@
��
��
��@
��@`�@
��@
��@c�@
��
��
��
��
��
��
��
��
��@
��@M�@
��@
��@aN@
��
��
��@
��@nW@
��@
��@M@
��
��
��
��
��@
��@d@
��@
��@`�@
��
��
��@
��@aN@
��@
��@g4@
��
��
��
��
��
��
��@
��@N@
��@
��@M@
��
��
��@
��@az@
��@
��@M@
��
��
��
��
��@
��@`�@
��@
��@� @
��
��
��@
��@d@
��@
��@N@
��
��
��
��
��
��
��
��
��
�
��
�q
��
�(
��
��
��
��
��
��
��
��
��@
��@
��@
��@ty@
��@
��@
��@
��@d@@
��
��@N@
��
��
��@
��@
��@
��@
��@d@
��
��
��@
��@
��@
��@aN@
��@
��@
��@
��@j�@
��
�
�
�@
�
�@
�@
�@
�@N@
�
�
�@
�	@
�
@
�@N@
�
@
�@
�@
�@d@
�
�
�
�
�@
�@
�@
�@d]@
�@
�@
�@
�@L�@
�
�#
�@
� @
�!@
�"@L@
�$@
�%@
�&@
�'@c�@
�)
�J
�*
�9
�+
�6
�,
�1
�-@
�.@
�/@
�0@b�@
�2@
�3@
�4@
�5@b�@
�7@
�8@L�@
�:
�B
�;
�@
�<@
�=@
�>@
�?@li@
�A@cW@
�C
�H
�D@
�E@
�F@
�G@ak@
�I@xv@
�K
�Z
�L
�T
�M
�O
�N@aN@
�P@
�Q@
�R@
�S@`�@@
�U
�V@
�W@
�X@
�Y@L�@
�[
�f
�\
�a
�]@
�^@
�_@
�`@cW@
�b@
�c@
�d@
�e@az@
�g
�l
�h@
�i@
�j@
�k@c�@
�m@
�n@
�o@
�p@{
@
�r
��
�s
��
�t
��
�u
�}
�v
�x
�w@c�@
�y@
�z@
�{@
�|@d{@
�~
��
�@
��@
��@
��@L@
��@
��@
��@
��@az@
��
��
��
��
��@
��@
��@
��@M@
��@
��@
��@
��@nW@
��
��
��@
��@
��@
��@i�@
��@
��@
��@
��@M@
��
��
��
��
��
��
��@
��@
��@
��@b�@
��@nW@
��
��
��@
��@
��@
��@��@
��@d@
��
��
��
��
��@
��@
��@
��@cW@
��@
��@
��@
��@M@
��
��
��@
��@
��@
��@L�@
��@
��@
��@
��@h@
��
��
��
��
��
��
��
��
��@
��@
��@
��@b�@
��@
��@
��@
��@{
@
��
��
��@
��@
��@
��@`�@
��@
��@
��@
��@`�@
��
��
��
��
��@
��@
��@
��@L@
��@
��@
��@
��@m�@
��
��
��@
��@
��@
��@b�@
��@
��@
��@
��@j�@
��
�
��
�
��
�
��@
��@
��@
��@b�@
�@
�@
�@
�@b�@
�@
�@
�@
�	@
�
@L�@
�
�
�

�
�@
�@
�@
�@M�@
�@��@
�
�
�@
�@
�@
�@K�@
�@
�@
�@
�@N@
� 
��
�!
�x
�"
�N
�#
�7
�$
�,
�%
�'
�&@L�@
�(@
�)@
�*@
�+@`�@
�-
�2
�.@
�/@
�0@
�1@xv@
�3@
�4@
�5@
�6@d@
�8
�C
�9
�>
�:@
�;@
�<@
�=@p�@
�?@
�@@
�A@
�B@M�@
�D
�I
�E@
�F@
�G@
�H@��@
�J@
�K@
�L@
�M@d{@
�O
�f
�P
�[
�Q
�V
�R@
�S@
�T@
�U@M�@
�W@
�X@
�Y@
�Z@d@
�\
�a
�]@
�^@
�_@
�`@g4@
�b@
�c@
�d@
�e@`�@
�g
�r
�h
�m
�i@
�j@
�k@
�l@`�@
�n@
�o@
�p@
�q@�X@
�s@
�t@
�u@
�v@
�w@`�@
�y
��
�z
��
�{
��
�|
��
�}@
�~@
�@
��@N@
��@
��@
��@
��@`�@
��
��
��@
��@
��@
��@c�@
��@
��@
��@
��@`�@
��
��
��
��
��@
��@
��@
��@`�@
��@
��@
��@
��@b�@
��
��
��@i�@
��@
��@
��@
��@b�@
��
��
��
��
��
��
��@
��@
��@
��@L�@
��@
��@
��@
��@�X@
��@
��@
��@
��@
��@L@
��
��
��
��
��@
��@
��@
��@p�@
��@L�@
��@
��@�X@
��
�
��
��
��
��
��
��
��
��
��@
��@
��@
��@c�@
��@xv@
��@
��@K�@
��
��
��
��
��@
��@
��@
��@p�@
��@
��@
��@
��@xv@
��@
��@g4@
��
��
��
��
��
��
��@
��@
��@
��@aN@
��@
��@
��@
��@iM@
��
��
��@
��@
��@
��@`�@
��@
��@
��@
��@c�@
��
�@
��
��@
��@
��@
�@ty@
�@
�@
�@
�@
�@N@
�
�,
�	
�
�

�
�
�
�@
�
@
�@
�@xv@
�@
�@
�@
�@b�@
�
�
�@
�@
�@
�@t�@
�@b�@
�
�$@
�
� @
�!@
�"@
�#@i�@
�%
�*
�&@
�'@
�(@
�)@b�@
�+@d@
�-
�<
�.
�1
�/@
�0@d@
�2
�7
�3@
�4@
�5@
�6@cW@
�8@
�9@
�:@
�;@nW@
�=
��
�>@
�?@
�@@
�A
��
�Bg4
�Cg4
�Dg4
�E
��
�F
��
�Gg4
�H
��
�I
��
�J
��
�Kg4
�L
��
�M
�^
�N
�S
�Og4
�Pg4g4
�Qg4
�Rg42g4
�T
�U
�[
�V
�Y
�W
�X�U��m,g4
�Z>g4
�\g4
�]g4g4�
�_
�
�`
�j
�a
�g
�b
�d
�cg4_Ng4
�e
�fBx�g4i7
�hg4
�ig4��+
�kg4g4
�l
�m
�ng4��2
�og4
�pg4
�qg4
�rg4
�s
�tg4g4
�u
�vg4
�wg4
�xg4g4
�y
�zg4g4
�{
�|g4
�}g4g4
�~g4��
��
��
��g4
��
��
��g4g4�
��g4g4n
��g4
��g4
��g42g4
��g4
��g4
��g4
��g4
��g4
��g4g4�Mg4
��
��
��g4
��
��
��g4
��
��
��g4
��
��
���g4g4�z
��g4
��g4g4g4
��
��g4
��g4g4
��g4T
��g4
��g4
��g4
��
��
��
��
��g4g4u
��
��g4=��g4
��g4
��g4g4=�
��g4
��g4
��g4
��
��g4
��
��g4
��g4
��g4
��g4ug4
��g4
��g4
��g4
��g4
��g4g4��
��g4
��g4
��
��
��g4g4
��
��g4g4
��
��g4
��g4g4
����g4
��g4g4
��g4
��g4
��
��g4
��g4
��
��g4���g4g4
��g4
��
��g4
��g4g4
��g4
��
��g4
��g4g4
��
��g4
��g4
��g4g4�
��g4
��g4
��g4g4
��
��g4
��g4
��g4
��g4
��g4g4
��
��g4g4
��g4
����g4g4
����g4
��
��
��@
��@
��@
��@d@
��@
��@
��@
��@ak@
��
�D
��
��
��
�W
�
�(
�
�
�
�

�
�
�@
�@
�@
�@g4@
�	@
�
@
�@
�@��@
�
�
�@
�@
�@
�@L�@
�@
�@
�@
�@`�@
�
�
�@
�@
�@
�@
�@h@
� 
�#
�!@
�"@N@
�$@
�%@
�&@
�'@`�@
�)
�@
�*
�5
�+
�0
�,@
�-@
�.@
�/@aN@
�1@
�2@
�3@
�4@M@
�6
�;
�7@
�8@
�9@
�:@`�@
�<@
�=@
�>@
�?@xv@
�A
�L
�B
�G
�C@
�D@
�E@
�F@xv@
�H@
�I@
�J@
�K@z�@
�M
�R
�N@
�O@
�P@
�Q@xv@
�S@
�T@
�U@
�V@t�@
�X
�|
�Y
�m
�Z
�e
�[
�`
�\@
�]@
�^@
�_@L@
�a@
�b@
�c@
�d@M�@
�f
�h
�g@d{@
�i@
�j@
�k@
�l@b�@
�n
�v
�o
�t
�p@
�q@
�r@
�s@c�@
�u@M�@
�w@
�x@
�y@
�z@
�{@nW@
�}
��
�~
��
�
��
��@
��@
��@
��@M�@
��@
��@
��@
��@c�@
��
��
��@
��@
��@
��@N@
��@
��@
��@
��@cW@
��
��
��@
��@
��@
��@
��@c�@
��
��
��@
��@
��@
��@b�@
��@
��@
��@
��@cW@
��
��
��
��
��
��
��
��
��
��
��@
��@
��@
��@nW@
��@
��@
��@
��@g4@@
��
��@
��@
��@
��@N@
��
��
��
��
��@
��@
��@
��@d@
��@
��@
��@
��@L�@
��
��
��@
��@
��@
��@b�@
��@
��@
��@
��@M@
��
��
��
��
��@
��@
��@
��@
��@aN@@
��
��@
��@
��@
��@{
@
��
��
��@
��@
��@
��@
��@d]@
��
��
��@
��@
��@
��@M@
��@
��@
��@
��@g_@
��
�
��
�
��
�
��
��
��@
��@
��@
��@xv@
��@
��@
��@
��@M@@
�
�@
�@
�@
�@�H@
�
�
�
�

�	@
�
@
�@
�@`�@
�@
�@
�@
�@��@
�
�
�@
�@
�@
�@L�@
�@
�@
�@
�@d@
�
�-
�
�"
� @
�!@`�@
�#
�(
�$@
�%@
�&@
�'@e�@
�)@
�*@
�+@
�,@M@
�.
�9
�/
�4
�0@
�1@
�2@
�3@L�@
�5@
�6@
�7@
�8@M@
�:
�?
�;@
�<@
�=@
�>@b�@
�@@
�A@
�B@
�C@cW@
�E
��
�F
��
�G
�l
�H
�Z
�I
�T
�J
�O
�K@
�L@
�M@
�N@b�@
�P@
�Q@
�R@
�S@az@
�U@
�V@
�W@
�X@
�Y@xv@
�[
�f
�\
�a
�]@
�^@
�_@
�`@cW@
�b@
�c@
�d@
�e@b�@@
�g
�h@
�i@
�j@
�k@L�@
�m
��
�n
�v
�o
�q
�p@h@
�r@
�s@
�t@
�u@`�@
�w
�|
�x@
�y@
�z@
�{@M@
�}@
�~@
�@
��@li@
��
��
��
��
��@g_@
��@
��@
��@
��@cW@
��
��
��@
��@
��@
��@aN@
��@
��@
��@
��@L@
��
��
��
��
��
��
��
��
��@
��@
��@
��@N@
��@
��@
��@
��@g_@
��
��
��@
��@
��@
��@d@
��@
��@
��@
��@L�@
��
��
��
��
��@
��@
��@
��@g4@
��@
��@
��@
��@xv@
��
��
��@b�@
��@
��@
��@
��@L�@
��
��
��
��
��
��
��@
��@
��@
��@b�@
��@
��@
��M�
��M�
��M�
��M�
��M�
��M�
��M�
��M�
��M�
��M�
��M�
��M�
��M�
��M�
��M�
��
��
��
��M�
��M��M�
��[��
��M�
��
���0v=M�@
��
��@
��@
��@
��@M@
��
��
��@
��@M@@
��
��@
��@
��@
��@M@
��
�B
��
�
��
�
��
�
��
��
��@�x@
��@
��@
��@
�@M�@
�@
�@
�@
�@
�@L@
�
�
�	
�
�
@
�@
�@
�
@N@
�@
�@
�@
�@nW@
�
�
�@
�@
�@
�@L@
�@
�@
�@
�@M�@
�
�6
� 
�+
�!
�&
�"@
�#@
�$@
�%@L�@
�'@
�(@
�)@
�*@L@
�,
�1
�-@
�.@
�/@
�0@M@
�2@
�3@
�4@
�5@d@
�7
�<
�8
�:
�9@j�@
�;@d@@
�=
�>@
�?@
�@@
�A@b�@
�C
�e
�D
�Y
�E
�N
�F
�I
�G@
�H@d@
�J@
�K@
�L@
�M@xv@
�O
�T
�P@
�Q@
�R@
�S@M�@
�U@
�V@
�W@
�X@L�@
�Z
�_
�[
�]
�\@d@
�^@M@
�`@
�a@
�b@
�c@
�d@ak@
�f
�}
�g
�r
�h
�m
�i@
�j@
�k@
�l@c�@
�n@
�o@
�p@
�q@M@
�s
�x
�t@
�u@
�v@
�w@i�@
�y@
�z@
�{@
�|@g4@
�~
��
�@
��@
��@
��@
��@xv@
��
��
��@
��@
��@
��@az@
��@
��@
��@
��@L�@
��
�I
��
��
��
�.
��
��
��
��
��
��
��
��
��
��
��@
��@
��@
��@M@
��@
��@
��@
��@N@
��@
��@cW@
��
��@
��
��@
��@
��@
��@M@@
��
��@
��@
��@
��@nW@
��
��
��
��
��
��
��@c�@
��@
��@
��@
��@cW@
��
��
��@
��@
��@
��@b�@
��@
��@
��@
��@d@
��
��
��
��
��@
��@
��@
��@aN@
��@
��@
��@
��@M@
��
��
��@
��@
��@
��@b�@
��@
��@
��@
��@d@
��
�
��
��
��
��
��
��
��@
��@
��@
��@g_@
��@
��@
��@
��@aN@
��
��
��@
��@
��@
��@i�@
��@d@
��
��
��
��
��@
��@
��@
��@N@
��@
��@
��@
��@d@
�
�
�@
�@
�@
�@c�@
�@N@
�
�
�	
�
�

�
�@h@
�
@
�@
�@
�@xv@
�@
�@
�@
�@
�@`�@
�
�#
�
�
�@
�@
�@
�@d@
�@
� @
�!@
�"@L@
�$
�)
�%@
�&@
�'@
�(@�,@
�*@
�+@
�,@
�-@c�@
�/
��
�0
�\
�1
�E
�2
�:
�3
�5
�4@d@
�6@
�7@
�8@
�9@az@
�;
�@
�<@
�=@
�>@
�?@L�@
�A@
�B@
�C@
�D@L@
�F
�Q
�G
�L
�H@
�I@
�J@
�K@cW@
�M@
�N@
�O@
�P@li@
�R
�W
�S@
�T@
�U@
�V@c�@
�X@
�Y@
�Z@
�[@cW@
�]
�t
�^
�i
�_
�d
�`@
�a@
�b@
�c@d@
�e@
�f@
�g@
�h@M�@
�j
�o
�k@
�l@
�m@
�n@d@
�p@
�q@
�r@
�s@cW@
�u
��
�v
�{
�w@
�x@
�y@
�z@M@
�|@
�}@
�~@
�@nW@
��
��
��@
��@
��@
��@L�@
��@
��@
��@
��@M@
��
��
��
��
��
��
��
��
��@
��@
��@
��@cW@
��@
��@
��@
��@c�@
��@
��@
��@
��@
��@L�@
��
��
��
��
��@
��@
��@
��@L�@
��@
��@
��@
��@L@@
��
��@
��@
��@
��@b�@
��
��
��
��
��
��
��@
��@
��@
��@`�@
��@
��@
��@
��@d@
��
��
��@
��@
��@
��@aN@
��@
��@
��@
��@j�@
��
��
��
��
��@
��@
��@
��@M�@
��@
��@
��@
��@N@
��@
��@
��@
��@
��@h@
��
��
��
�X
��
�,
��
��
��
��
��
��
��@M@
��@
��@
��@
��@j*@
��@
��@
��@
��@
��@az@
��
�!
��
�
��@
��@
��
��
��i�
��i�
��
�
����
���
��
���
���
��
�

��
��
���
���
��
��
��
��
�����
��
��
��
�	�
�
�
��
��i�
���
��
��
��
��
��
��
����
��
��
�
�
��
��
�
�,
�
��
�
��
�
�R
� 
�9
�!
�-
�"
�&�
�#
�$
�%��9��*
�'
�*
�(
�)������
�+
�,����

�.
�4
�/
�2
�0
�1�f��K�
�3��I
�5
�7
�6��B�
�8�B�4
�:
�D
�;
�?
�<�
�=
�>�B��L�
�@
�B
�A�K���
�C��
�E
�K
�F
�H�
�Gi��
�I
�J��W3��
�L
�O
�M
�NIO��J
�P
�Q�K�H�3�
�S
�p
�T
�b
�U
�[
�V
�X�
�W�F
�Y
�Z�B��E�
�\
�_
�]
�^�9����
�`
�a��v�
�
�c
�i
�d
�g
�e
�f3��F���
�h��3�
�j
�m
�k
�l�e�9�F�
�n
�o��4�
�q
�}
�r
�w
�s
�u
�t������
�vB��
�x
�{
�y
�zKw��eJy�
�|���
�~
��
�
��
���D��
��
������L�
��
��
�����
�����W
���
��
��
��
��
��
��
��
��
��
��B���3�
��
��3��J��
��
���
��D:��
����
��
��
��
��
�����9�
���C�
��
��
���D:�
��
������
���
��
��
��
���
����
��
����e�DH
����
��E��
��
�!
��
��
��
��
��
��
��
��
��
���
��E��
��
����9��*
��
��
��
��������
��
������

��
��
��
��
��
���f��K
��
��B�4��I
���
����B�
��
��
��
��
���
��
���B��L�
��
��
���K���
����
��
��
��
���
��i��
��
����W3��
��
��
��
��IO��J
��
���K�H�3�
��
�
��
��
��
��
��
���
���F
��
���B��E�
��
��
��
���9����
��
����v�
�
��
��
��
��
��
��3��F���
����3�
��
�
��
��e�9�F�
�
���4�
�
�
�
�

�
�

�
�	�����B�
�
��Kw�eJy
�
�
�
����D��
�
�����L�
�
�
�
�
�
���W�B��3�
�
�
�
��J�D:�
�
� �9�C�D:
�"�
�#�
�$�
�%
�(�
�&�
�'��
�)�
�*
�+��e�DH
�-
��
�.
��
�/
�c
�0
�J
�1
�?
�2
�8
�3
�5�
�4E��
�6
�7��9��*
�9
�<
�:
�;������
�=
�>����

�@
�G
�A
�D
�B
�C�f��K
�E
�FB�4��I
�H�
�I��B�
�K
�U
�L
�P
�M�
�N
�O�B��L�
�Q
�S
�R�K���
�T��
�V
�\
�W
�Y�
�Xi��
�Z
�[��W3��
�]
�`
�^
�_IO��J
�a
�b�K�H�3�
�d
��
�e
�s
�f
�l
�g
�i�
�h�F
�j
�k�B��E�
�m
�p
�n
�o�9����
�q
�r��v�
�
�t
�z
�u
�x
�v
�w3��F���
�y��3�
�{
�~
�|
�}�e�9�F�
�
����4�
��
��
��
��
��
��
��
�������B�
��
���Kw�eJy
��
��
��
�����D��
��
������L�
��
��
��
��
��
����W�B��3�
��
��
��
���J�D:�
��
���9�C�D:
���
���
���
��
���
���
����
���
��
����e�DH
���
��
��
��
��
��
��
��
��
��
��
��
������3��
��
���B���
��
��
��
��B��J�i�
��
���f����
��
��
��
��
��
��D�3�K�
��
��KwL��
�e
��
��
��
��FF���
��
���e���W
��
��
��
��
��
��
��
��3����K��
���*�
��
��
���F��v
��
����9BzE�
��
��
��
��
���Bz��e
���e�
��
��
������
���L�
���
���
���
���
����9�W
���
���
���
���
���
���
����
��
��
��3��eD:�i�
��i�
��i�
��i�
��i�
��i�
��i�
��i�
��i�
��i�
��
�i�
�
�
�
�
�
�i�
�i�
�
�
�JLJ�i�J�
�	i�
�

�J�
�i�J�
�
i�i�J�
�
�i�
�i�
��i�
�i�
�i�
�
�i���i�
�i�
�i�
�i�i�
�i��
�@
�@
�@
� @N@
�"
�'
�#@
�$@
�%@
�&@c�@
�(@
�)@
�*@
�+@M�@
�-
�A
�.
�6
�/
�1
�0@d@
�2@
�3@
�4@
�5@��@
�7
�<
�8@
�9@
�:@
�;@K�@
�=@
�>@
�?@
�@@cW@
�B
�M
�C
�H
�D@
�E@
�F@
�G@b�@
�I@
�J@
�K@
�L@b�@
�N
�S
�O@
�P@
�Q@
�R@l�@
�T@
�U@
�V@
�W@b�@
�Y
�x
�Z
�i
�[
�^
�\@
�]@d@
�_
�d
�`@
�a@
�b@
�c@y7@
�e@
�f@
�g@
�h@xv@
�j
�m
�k@
�l@xv@
�n
�s
�o@
�p@
�q@
�r@N@
�t@
�u@
�v@
�w@g_@
�y
��
�z
��
�{
��
�|@
�}@
�~@
�@`�@
��@
��@
��@
��@d@
��
��
��@
��@
��@
��@b�@
��@
��@
��@
��@b�@
��
��
��
��
��@xv@
��@
��@
��@
��@d]@@
��
��@L�@
��
��
��
��
��
��
��
��
��
��
��@
��@
��@
��@b�@
��@
��@
��@
��@M@
��
��
��@
��@
��@
��@L�@
��@
��@
��@
��@N@
��
��
��
��
��@
��@
��@
��@M@
��@
��@
��@
��@N@
��@
��@
��@
��@
��@d@
��
��
��
��
��
��
��@
��@
��@
��@M@
��@
��@
��@
��@M@
��
��
��@
��@
��@
��@b�@
��@
��@
��@
��@L�@
��
��
��@
��@
��@
��@
��@d@
��
��
��@
��@
��@
��@iM@
��@
��@
��@
��@�b@
��
�
��
�
��
�
��
��
��@
��@
��@
��@L@
��@
��@
��@
��@m�@
�
�
�@
�@
�@
�@M@
�@
�@
�	@
�
@N@
�
�
�
@
�@`�@
�
�
�@
�@
�@
�@L�@
�@
�@
�@
�@L�@
�
�2
�
�'
�
�"
�@
�@
� @
�!@d]@
�#@
�$@
�%@
�&@iM@
�(
�-
�)@
�*@
�+@
�,@g4@
�.@
�/@
�0@
�1@q~@
�3
�>
�4
�9
�5@
�6@
�7@
�8@M�@
�:@
�;@
�<@
�=@N@
�?
�D
�@@
�A@
�B@
�C@L�@
�E@
�F@
�G@
�H@b�@
�J
��
�K
�
�L
��
�M
�v
�N
�_
�O
�W
�P
�R
�Q@Л@
�S@
�T@
�U@
�V@M@
�X
�]
�Y@
�Z@
�[@
�\@aN@
�^@N@
�`
�k
�a
�f
�b@
�c@
�d@
�e@aN@
�g@
�h@
�i@
�j@p�@
�l
�q
�m@
�n@
�o@
�p@L@
�r@
�s@
�t@
�u@j*@
�w
��
�x
��
�y
�~
�z@
�{@
�|@
�}@b�@
�@
��@
��@
��@L@
��
��
��@
��@
��@
��@c�@
��@
��@
��@
��@g4@
��
��
��
��
��@
��@
��@
��@g4@
��@
��@
��@
��@M@
��@
��@
��@
��@
��@
��@
��az
��az
��az
��az
��az��
����az
��
��
��
��
��
��
��
��
��@
��@
��@
��@b�@
��@
��@
��@
��@p�@
��
��
��@
��@
��@
��@��@
��@
��@
��@
��@nW@
��
��
��
��
��@
��@
��@
��@L�@
��@
��@
��@
��@d@
��
��
��@
��@
��@
��@ku@
��@
��@
��@
��@l@
��
��
��
��
��
��
��@
��@
��@
��@N@
��@
��@
��@
��@��@
��
��
��@
��@
��@
��@c�@
��@
��@
��@
��@L�@
��
��
��
��
��@
��@
��@
��@q~@
��@
��@
��@
��@b�@
��
�
��@
��@
��@
�@M@
�@�b@
�
�X
�
�4
�
�
�
�
�
�

�	@
�
@
�@
�@N@
�@
�@
�@
�@~@
�
�
�@
�@
�@
�@m�@
�@
�@
�@
�@xv@
�
�)
�
�$
� @
�!@
�"@
�#@b�@
�%@
�&@
�'@
�(@M@
�*
�/
�+@
�,@
�-@
�.@M@
�0@
�1@
�2@
�3@b�@
�5
�D
�6
�A
�7
�<
�8@
�9@
�:@
�;@d@
�=@
�>@
�?@
�@@c�@
�B@
�C@L�@
�E
�M
�F
�K
�G@
�H@
�I@
�J@j*@
�L@`�@
�N
�S
�O@
�P@
�Q@
�R@d@
�T@
�U@
�V@
�W@c�@
�Y
��
�Z
�q
�[
�f
�\
�a
�]@
�^@
�_@
�`@g_@
�b@
�c@
�d@
�e@N@
�g
�l
�h@
�i@
�j@
�k@M@
�m@
�n@
�o@
�p@L@
�r
�z
�s
�u
�t@d@
�v@
�w@
�x@
�y@d@
�{
��
�|@
�}@
�~@
�@cW@
��@
��@
��@
��@M@
��
��
��
��
��
��
��@
��@
��@
��@b�@
��@
��@
��@
��@`�@
��
��
��@
��@
��@
��@d@
��@
��@
��@
��@xv@
��
��
��
��
��@
��@
��@
��@N@
��@
��@
��@
��@`�@
��
��
��@
��@
��@
��@L�@
��@
��@
��@
��@M@
��
�[
��
��
��
��
��
��
��
��
��
��
��@
��@
��@
��@c�@
��@
��@
��@
��@M@
��@
��@xv@
��
��@
��
��@
��@
��@
��@N@
��
��
��@
��@
��@
��@i�@
��@
��@
��@
��@d]@
��
��
��
��
��
��
��@
��@
��@
��@L@
��@
��@
��@
��@b�@
��
��
��@d@
��@
��@
��@
��@d@
��
��@
��
��@
��@
��@
��@g4@
��
��
��@L�@
��@
��@
��@
��@�,@
��
�$
��
�
�
�
�
�
�@xv@
�@
�@
�@
�@`�@
�	
�
�
@
�@
�@
�
@M@
�@N@
�
�
�
�
�@
�@
�@
�@b�@
�@
�@
�@
�@�b@
�
�"
�@
�@
� @
�!@xv@
�#@xv@
�%
�D
�&
�1
�'
�,
�(@
�)@
�*@
�+@N@
�-@
�.@
�/@
�0@e�@
�2
�?
�3@
�4@
�5@
�6@
�7@
�8xv
�9xv
�:xv
�;xv
�<xv
�=xvxv
�>xv��
�@@
�A@
�B@
�C@iM@
�E
�P
�F
�K
�G@
�H@
�I@
�J@aN@
�L@
�M@
�N@
�O@L@
�Q
�V
�R@
�S@
�T@
�U@�X@
�W@
�X@
�Y@
�Z@L@
�\
��
�]
��
�^
�r
�_
�j
�`
�e
�a@
�b@
�c@
�d@N@
�f@
�g@
�h@
�i@L�@
�k
�p
�l@
�m@
�n@
�o@L@
�q@L@
�s
�~
�t
�y
�u@
�v@
�w@
�x@ak@
�z@
�{@
�|@
�}@d@
�@
��@b�@
��
��
��
��
��
��
��@h@
��@
��@
��@
��@L@
��
��
��@
��@
��@
��@b�@
��@L@
��
��
��
��
��@`�@
��@
��@
��@
��@q~@
��
��
��@
��@
��@
��@b�@
��@
��@
��@
��@`�@
��
��
��
��
��
��
��@
��@d@
��
��
��@
��@
��@
��@b�@
��@
��@
��@
��@L�@
��
��
��
��
��@
��@
��@
��@d@
��@
��@
��@
��@M@
��
��
��@
��@
��@
��@M@
��@
��@
��@
��@b�@
��
��
��
��
��
��
��@
��@
��@
��@c�@
��@
��@
��@
��@N@
��
��
��@
��@
��@
��@N@
��@
��@
��@
��@ty@
��
��
��
��
��@
��@
��@
��@b�@
��@
��@
��@
��@aN@
��
��
��@
��@
��@
��@d@
��@
��@
��@
��@N@
��
�q
�
��
�
�-
�
��
�
�F
�
�'
�
�
�
�
�
�

�@
�	@
�
d
�d
�d
�
d
�d
�d
�d
�d
�d
�d
�d
�d
�
�w
�
��
�
�s
�dd
�
�
�,d
�
�d
�d
�d
� d
�!dd
�"d
�#
�$d
�%dd
�&
�'dd
�(d
�)
�*dd
�+d�
�-d
�.
�W
�/
�I
�0d
�1
�=
�2dd
�3d
�4
�5d
�6d
�7d
�8dd
�9
�:dd
�;
�<d�d
�>d
�?d
�@d
�Ad
�Bd
�Cdd
�D
�Edd
�F
�Gdd
�Hd�
�Jd
�Kd
�Ld
�Md
�Nd
�Od
�Pd
�Qd
�Rdd
�S
�Tdd
�U
�Vdd�d
�X
�Y
�fd
�Z
�[d
�\d
�]d
�^d
�_dd
�`
�ad
�bd
�cd
�ddd
�e�d
�gd
�hd
�id
�jd
�kd
�ldd
�m
�nd
�od
�pdd
�qd
�rd�
�t
��d
�u
�v
��d
�w
�xd
�yd
�zd
�{dd
�|
�}d
�~dd
�
��d
��dd
��
��dd
��
��d
��d�dd
��
��d
��d
��d
��dd
��
��dd
��
��d
��d
��d
��dd
��
��dd
��
��dd�
��
��
��dd
��
��d
��d
��d
��d
��d
��d
��d
��d
��dd
��
��d
��d
��d
��d
��d�d
��
��d
��
��d
��d
��d
��d
��
��
��d
��d
��d
��d
��dd
��d
��d
��d
��
��dd�
��dd
��d
��
��dd
��d
��d
��d
��
��dd
���d
��d
��d
��d
��d
��d
��d
��
��
��d
��dd
��
��d
��d
��d
��d
��d
��dd�d
��d
��d
��d
��
��dd
��
��dd
��
��d�d
��
�c
��
�
��
�
��dd
��
��d
��d
��d
��d
��
��
��d
��dd
��
��d
��d
��dd
��
��dd
��
��dd�
��d
��d
��dd
��
��dd
��
��dd
�
�d
�d�dd
�d
�
�d
�d
�d
�	d
�
d
�
�
�d
�
d
�d
�dd
�d
�
�dd
�d
��dd
�
�dd
�d
�d
�d
�d
�
�d
�d�d
� d
�!
�B
�"
�2
�#d
�$d
�%d
�&d
�'d
�(d
�)d
�*d
�+d
�,dd
�-d
�.d
�/d
�0d
�1�d
�3d
�4d
�5d
�6dd
�7
�8d
�9d
�:dd
�;
�<dd
�=
�>dd
�?
�@d
�Add�
�C
�S
�Dd
�Ed
�Fd
�Gd
�Hd
�Id
�Jd
�Kdd
�Ld
�M
�Ndd
�O
�Pdd
�Qd
�R�d
�Td
�Ud
�Vd
�Wd
�Xdd
�Yd
�Z
�[d
�\dd
�]d
�^
�_dd
�`d
�ad
�b�d
�ddd
�ed
�fd
�g
�hd
�id
�jd
�kd
�ld
�md
�nd
�od
�pd
�qd
�rd
�sd
�td
�udd
�vd�
�x
��
�y
��
�z
��d
�{d
�|
�}d
�~d
�d
��d
��d
��d
��d
��dd
��d
��
��d
��dd
��
��dd
��d
��d�
��d
��d
��d
��d
��d
��d
��d
��d
��d
��d
��d
��dd
��
��d
��dd
��d
��
��dd�
��
��d
��
��
��d
��
��d
��d
��d
��dd
��d
��d
��
��dd
��d
��d
��d
��d
��
��dd
��d�
��d
��d
��d
��d
��d
��d
��d
��d
��dd
��
��d
��dd
��
��d
��d
��dd�
��d
��d
��d
��d
��d
��d
��d
��d
��d
��d
��d
��dd
��d
��d
��d
��d
��
��dd�
��d
��d
��
��d
��
��d
��d
��d
��d
��d
��d
��d
��d
��d
��d
��d
��d
��dd
��
��d
��d�dd
��
��d
��d
��d
��d
��d
��
��
��d
��d
��d
��d
��d
��dd
��
��dd
��
��dd@d
�
�dd
�d
�
�d
�d
�dd
�
�d
�	d�d
�@
�@
�
@
�@M@
�@
�@
�@
�@
�@b�@
�
�!
�
�
�@
�@
�@
�@d@
�@
�@
�@
� @b�@@
�"
�#@
�$@
�%@
�&@d@
�(
�2
�)
�,
�*@
�+@N@@
�-
�.@
�/@
�0@
�1@M@
�3
�;
�4
�6
�5@az@
�7@
�8@
�9@
�:@az@
�<
�A
�=@
�>@
�?@
�@@az@
�B@
�C@
�D@
�E@N@
�G
�i
�H
�W
�I
�O
�J@
�K@
�L@
�M@
�N@M@
�P
�U
�Q@
�R@
�S@
�T@d@
�V@xv@
�X
�^
�Y@
�Z@
�[@
�\@
�]@�,@
�_
�d
�`@
�a@
�b@
�c@L�@
�e@
�f@
�g@
�h@l�@
�j
�y
�k
�n
�l@
�m@M@
�o
�t
�p@
�q@
�r@
�s@d@
�u@
�v@
�w@
�x@l�@
�z
��
�{
��
�|@
�}@
�~@
�@cW@
��@
��@
��@
��@xv@
��
��
��@
��@
��@
��@nW@
��@
��@
��@
��@~@
��
��
��
��
��
��
��
��
��
��
��@`�@
��@
��@
��@
��@L�@
��
��
��@M�@
��@
��@
��@
��@L@
��
��
��
��
��@
��@
��@
��@��@
��@
��@
��@
��@L@
��@
��@
��@
��@
��@q~@
��
��
��
��
��
��
��@
��@
��@
��@M@
��@
��@
��@
��@j*@
��
��
��@
��@
��@
��@`�@
��@
��@
��@
��@`�@
��
��
��
��
��@
��@
��@
��@`�@
��@
��@
��@
��@b�@
��
��
��@
��@
��@
��@L@
��@
��@
��@
��@j*@
��
�
��
��
��
��
��
��
��@L�@
��@
��@
��@
��@c�@
��
��
��@
��@
��@
��@M@
��@
��@
��@
��@iM@
��
�
��
��
��@iM@
�@
�@
�@
�@ak@
�
�

�@
�@
�@
�	@aN@
�@
�@
�
@
�@��@
�
�$
�
�
�
�
�@
�@
�@
�@b�@
�@
�@
�@
�@cW@
�
�"
�@
�@
� @
�!@N@
�#@xv@
�%
�*
�&
�(
�'@�H@
�)@j�@
�+@
�,@b�@
�.
�	
�/
�~
�0
�R
�1
�@
�2
�=
�3
�8
�4@
�5@
�6@
�7@N@
�9@
�:@
�;@
�<@j*@
�>@
�?@�b@
�A
�G@
�B
�C@
�D@
�E@
�F@L�@
�H
�M
�I@
�J@
�K@
�L@c�@
�N@
�O@
�P@
�Q@M@
�S
�j
�T
�_
�U
�Z
�V@
�W@
�X@
�Y@b�@
�[@
�\@
�]@
�^@d@
�`
�e
�a@
�b@
�c@
�d@aN@
�f@
�g@
�h@
�i@{
@
�k
�s
�l
�n
�m@L�@
�o@
�p@
�q@
�r@L�@
�t
�y
�u@
�v@
�w@
�x@iM@
�z@
�{@
�|@
�}@cW@
�
��
��
��
��
��
��
��
��@
��@
��@
��@M@
��@
��@
��@
��@d@@
��
��@
��@
��@
��@t�@
��
��
��
��
��@
��@
��N
��N
��N
��
��
��N
��N
��N
��N
��N
��N
��N
��N
��N
��N
��N
��
��
��
��
��
��
��Q�
��N
��N
��N
��N
��N
��N
��N
��N
��N
��N
��N
��N
��
��
��
��
��
��NQ�_FN�
��
��NOTR�Oc
��N
��
��U\^C�Q�_FN�
��
��N;OTR�Oc
��N
��
��U\^C�Q�N
��N
��N
��N
��N
��N
��N
��N
��N
��N
��N
��N
��N
��N
��NQ�
��@N@
��
��
��@
��@
��@
��@ku@
��@
��@
��@
��@cW@
��
��
��
��
��
��
��@
��@
��@
��@c�@
��@d@
��@
��@
��@.
��`�
��`�.
��
�
��
��
��@
��@
��@
��@�m@
��@
��@
��@
�@ak@
�
�
�@
�@
�@
�@M�@
�@aN@
�

�V
�
�2
�
�
�

�
�@
�@L�@
�
�
�@
�@
�@
�@g4@
�@
�@
�@
�@M@
�
�'
�
�"
�@
�@
� @
�!@~@
�#@
�$@
�%@
�&@q~@
�(
�-
�)@
�*@
�+@
�,@M@
�.@
�/@
�0@
�1@L�@
�3
�D
�4
�<
�5
�:
�6@
�7@
�8@
�9@b�@
�;@p�@
�=
�?
�>@d@
�@@
�A@
�B@
�C@az@
�E
�P
�F
�K
�G@
�H@
�I@
�J@M@
�L@
�M@
�N@
�O@b�@
�Q@
�R@
�S@
�T@
�U@d@
�W
��
�X
�l
�Y
�d
�Z
�_
�[@
�\@
�]@
�^@L@
�`@
�a@
�b@
�c@N@
�e
�g
�f@g4@
�h@
�i@
�j@
�k@xv@
�m
�x
�n
�s
�o@
�p@
�q@
�r@j*@
�t@
�u@
�v@
�w@M@
�y
�~
�z@
�{@
�|@
�}@b�@
�@
��@
��@
��@`�@
��
��
��
��
��
��
��@
��@
��@
��@N@
��@M�@
��
��
��@
��@
��@
��@d@
��@
��@
��@
��@N@
��
��
��@
��@
��@
��@
��@N@
��
��
��@
��@
��@
��@b�@
��@
��@
��@
��@m�@
��
�
��
�^
��
��
��
��
��
��
��
��
��
��
��@
��@
��@
��@d@
��@
��@
��@
��@d@
��
��
��@b�@
��@
��@
��@
��@b�@
��
��
��
��
��@
��@
��@
��@d@
��@
��@
��@
��@p�@
��@
��@
��@
��@
��@m;@
��
��
��
��
��
��
��@cW@
��@
��@
��@
��@cW@
��
��
��@
��@
��@
��@M@
��@
��@
��@
��@c�@
��
��
��
��
��@
��@
��@
��@l@
��@
��@
��@
��@b�@
��
��
��@L@
��@
��@
��@
��@b�@
��
�+
�
�
�
�
�
�
�@
�@
�@
�@b�@
�@
�	@
�
@
�@t�@
�

�
�@
�@
�@
�@b�@
�@
�@
�@
�@~@
�
�#
�
�
�@
�@
�@
�@g4@
�@
� @
�!@
�"@d@
�$
�)
�%@
�&@
�'@
�(@b�@
�*@`�@
�,
�G
�-
�0
�.@
�/@`�@
�1
�B
�2@
�3@
�4p�
�5p�p�
�6
�7p�
�8p�
�9p�
�:p�
�;p�
�<p�
�=p�
�>p�
�?p�
�@p�
�Ap�r�p�
�C@
�D@
�E@
�F@~@
�H
�S
�I
�N
�J@
�K@
�L@
�M@N@
�O@
�P@
�Q@
�R@cW@
�T
�Y
�U@
�V@
�W@
�X@aN@
�Z@
�[@
�\@
�]@d{@
�_
��
�`
��
�a
��
�b
�}
�c
�x
�d@
�e@
�f@
�g@
�h@
�ig_
�jg_
�kg_
�lg_
�mg_
�ng_
�og_g_
�p
�qg_
�rg_
�sg_
�tg_
�ug_
�vg_
�wg_��
�y@
�z@
�{@
�|@M@
�~
��
�@aN@
��@
��@
��@
��@M@
��
��
��
��
��@~@
��@
��@
��@
��@iM@
��
��
��@
��@
��@
��@M@
��@
��@
��@
��@g4@
��
��
��
��
��
��
��@
��@
��@N@
��@
��@
��@
��@cW@
��
��
��@
��@
��@
��@d@
��@
��@
��@
��@L@
��
��
��@
��@nW@@
��
��@
��@
��@
��@iM@
��
��
��
��
��
��
��
��
��@
��@
��@
��@b�@
��@
��@
��@
��@h@
��
��
��@
��@
��@
��@N@
��@
��@
��@
��@b�@
��
��
��
��
��@
��@
��@
��@d@
��@
��@
��@
��@xv@
��@
��@
��@
��@
��@L�@
��
��
��
��
��
��
��@
��@
��@
��@N@
��@
��@
��@
��@M@@
��
��@
��@
��@
��@L�@
��
�
��
��
��@
��@
��@
��@�H@
�@
�@
�@
�@b�@
�
�
�@iM@
�@
�	@
�
@
�@d@
�

��
�
�k
�
�I
�
�7
�
�
�
�
�@
�@
�@
�@b�@
�@
�@
�@
�@l�@
�
�2
�@
�@
� @
�!@
�"@
�#L�
�$L�
�%L�
�&L�
�'L�
�(L�
�)L�
�*L�L�
�+L�
�,L�
�-L�
�.
�/L�L�
�0
�1L�c^L�
�3@
�4@
�5@
�6@c�@
�8
�C
�9
�>
�:@
�;@
�<@
�=@l�@
�?@
�@@
�A@
�B@N@
�D@
�E@
�F@
�G@
�H@b�@
�J
�Y
�K
�N
�L@
�M@y7@
�O
�T
�P@
�Q@
�R@
�S@L@
�U@
�V@
�W@
�X@L�@
�Z
�`
�[@
�\@
�]@
�^@
�_@L�@
�a
�f
�b@
�c@
�d@
�e@L�@
�g@
�h@
�i@
�j@cW@
�l
��
�m
��
�n
��
�o@
�p@
�q@
�rb�
�sb�
�tb�
�ub�
�vb�
�wb�
�xb�
�yb�
�zb�
�{b�
�|b�
�}b�b�
�~
�b�
��b�
��b�
��b�
��b�b�d$
��
��
��@
��@
��@
��@L�@
��@
��@
��@
��@b�@
��
��
��@
��@
��@
��@
��@b�@
��
��
��@
��@
��@
��@cW@
��@
��@
��@
��@q~@
��
��
��
��
��
��
��@
��@
��@
��@M@
��@
��@
��@
��@�@
��
��
��@
��@
��@
��@M@
��@
��@
��@
��@N@
��
��
��
��
��@
��@
��@
��@b�@
��@
��@
��@
��@N@
��
��
��@
��@
��@
��@M@
��@
��@
��@
��@Л@
��
�"
��
�
��
��
��
��
��
��
��@
��@
��@
��@`�@
��@
��@
��@
��@L@
��
��
��@
��@
��@
��@d@
��@
��@
��@
��@d@
��
��
��
��
��@
��@
��@
��@b�@
��@
��@
��@
��@b�@
��
��
��@
��@
��@
��@|�@
��@
��@
��@
�@ak@
�
�
�
�
�@
�@c�@
�
�
�@
�	@
�
@
�@L�@
�
@az@
�
�
�
�
�@
�@
�@
�@N@
�@
�@
�@
�@t�@
�
�
�@d{@
�@
�@
� @
�!@cW@
�#
�J
�$
�;
�%
�0
�&
�+
�'@
�(@
�)@
�*@M�@
�,@
�-@
�.@
�/@cW@
�1
�6
�2@
�3@
�4@
�5@xv@
�7@
�8@
�9@
�:@L@
�<
�?
�=@
�>@l@
�@
�E
�A@
�B@
�C@
�D@c�@
�F@
�G@
�H@
�I@d@
�K
�b
�L
�W
�M
�R
�N@
�O@
�P@
�Q@i�@
�S@
�T@
�U@
�V@N@
�X
�]
�Y@
�Z@
�[@
�\@H:@
�^@
�_@
�`@
�a@q~@
�c
�i
�d@
�e@
�f@
�g@
�h@x�@
�j
�o
�k@
�l@
�m@
�n@p�@
�p@{
@
�r
�8
�s
��
�t
�4
�u
��
�v
��
�w
��
�x
��
�y
�{
�z@N@
�|@
�}@
�~@
�@��@
��
��
��@
��@
��@
��@M@
��@
��@
��@
��@M@
��
��
��@
��@b�@
��
��
��@
��@
��N
��N
��N
��N
��N
��N
��N
��N
��N
��N
��N
��N
��N
��N
��N
��N
��N
��NQ�N
��@
��@
��@
��@b�@
��
��
��
��
��
��
��@
��@
��@
��@�,@
��@
��@
��@
��@li@
��
��
��@b�@
��@
��@
��@
��@��@
��
��
��
��
��@
��@
��@
��@aN@
��@
��@
��@
��@xv@
��
��
��@
��@
��@
��@i�@
��@
��@
��@
��@L@
��
�
��
��
��
��
��
��
��@
��@
��@
��@b�@
��@
��@
��@
��@�,@
��
��
��@
��@
��@
��@nW@
��@
��@
��@
��@L�@
��
�
��
��
��@L@
��@
��@
��@
��@
��@
��cW
��cWcW
��cW
��
��cWcW
��
��cWcW
�
�cW
�cW
�cW
�cW
�cW
�cW
�cWcWW�
�	
�
�
@
�@
�@
�
@L@
�@
�@
�@
�@d@
�
�#
�
�
�
�
�@j�@
�@
�@
�@
�@L@
�@
�@
� @
�!@
�"@ku@
�$
�,
�%
�*
�&@
�'@
�(@
�)@j�@
�+@M�@
�-
�2
�.@
�/@
�0@
�1@d@
�3@c�@
�5
�x
�6
�V
�7
�I
�8
�C
�9
�>
�:@
�;@
�<@
�=@az@
�?@
�@@
�A@
�B@ty@
�D@
�E@
�F@
�G@
�H@M@
�J
�P@
�K
�L@
�M@
�N@
�O@M@@
�Q
�R@
�S@
�T@
�U@y7@
�W
�f
�X
�[
�Y@
�Z@b�@
�\
�a
�]@
�^@
�_@
�`@|@
�b@
�c@
�d@
�e@L�@
�g
�m
�h@
�i@
�j@
�k@
�l@az@
�n
�s
�o@
�p@
�q@
�r@N@
�t@
�u@
�v@
�w@g4@
�y
��
�z
��
�{
��
�|
�~
�}@c�@
�@
��@
��@
��@`�@
��
��
��@
��@
��@
��@cW@
��@
��@
��@
��@b�@
��
��
��
��
��@
��@
��@
��@iM@
��@
��@
��@
��@d@
��
��
��@
��@
��@
��@b�@
��@
��@
��@
��@aN@
��
��
��
��
��@
��@�H@
��
��
��@m�@
��@
��@
��@
��@d@
��
��
��
��
��@
��@
��@
��@nW@
��@
��@
��@
��@M@
��
��
��@
��@
��@
��@M@
��@
��@
��@
��@li@
��
�e
��
�!
��
��
��
��
��
��
��
��
��@`�@
��@
��@
��@
��@m�@@
��
��@g_@
��
��
��@
��@
��@
��@
��@d@
��
��
��@
��@
��@
��@d]@
��@
��@
��@
��@L�@
��
�
��
��
��
��
��@
��@
��@
��@y7@
��@xv@
��
�

��@
��@d
��d
��d
��
��d
��d
��d
��
�	
�
�
�
�
�
�do�&}dd
���dd
�
�ddm�
�
dd
�d
�d�
�@
�@
�@
�@aN@
�
�
�@
�@N@
�
�
�@
�@
�@
�@L�@
�@
�@
�@
� @d{@
�"
�A
�#
�2
�$
�'
�%@
�&@M@
�(
�-
�)@
�*@
�+@
�,@b�@
�.@
�/@
�0@
�1@M@
�3
�6
�4@
�5@`�@
�7
�<
�8@
�9@
�:@
�;@b�@
�=@
�>@
�?@
�@@iM@
�B
�V
�C
�K
�D
�F
�E@rf@
�G@
�H@
�I@
�J@d@
�L
�Q
�M@
�N@
�O@
�P@d]@
�R@
�S@
�T@
�U@c�@
�W
�b
�X
�]
�Y@
�Z@
�[@
�\@M�@
�^@
�_@
�`@
�a@xv@
�c@
�d@�X@
�f
��
�g
��
�h
�
�i
�t
�j
�o
�k@
�l@
�m@
�n@L�@
�p@
�q@
�r@
�s@d@
�u
�z
�v@
�w@
�x@
�y@c�@
�{@
�|@
�}@
�~@M@
��
��
��
��
��@L�@
��@
��@
��@
��@L@
��
��
��@
��@
��@
��@`�@
��@
��@
��@
��@M@
��
��
��
��
��
��
��@
��@
��@
��@rf@
��@
��@
��@
��@L�@@
��
��@
��@
��@
��@iM@
��
��
��
��
��@
��@
��@
��@g_@
��@
��@
��@
��@iM@
��@
��@
��@
��@
��@b�@
��
��
��
��
��
��
��@
��@L�@
��
��
��@
��@
��@
��@L�@
��@
��@
��@
��@i�@
��
��
��
��
��@
��@
��@
��@xv@
��@
��@
��@
��@b�@
��
��
��@
��@
��@
��@q~@
��@
��@
��@
��@d@
��
�.
��
�#
��
��
��@
��@
��
��
��b�
��b�
��b�
��b�
��b�
��b�
��b�
��b�
��b�
��b�
��b�
��b�
��b�
��b�b�
��
��b�
��b�yb�b�
��
��b�
��b�
��b�
��b�~�b�
��@
�@
�M�
�M�
�M�
�M�
�M�
�M�
�M�
�M�M�
�	
�
M�M�
�
�M�
�
M�M�
�M�
�
�M�
�M�
�M�M�
�
�M�
�M�
�M�
�M�
�M�
�M�
�M�
�M�
�M�
�M�
�M�
�M�
� M�
�!M�
�"M�>�M�
�$
�)
�%@
�&@
�'@
�(@p�@
�*@
�+@
�,@
�-@g_@
�/
�2
�0@
�1@L�@@
�3
�4@
�5@
�6@
�7@l@
�9
��
�:
��
�;
��
�<
�k
�=
�T
�>
�I
�?
�D
�@@
�A@
�B@
�C@N@
�E@
�F@
�G@
�H@b�@
�J
�O
�K@
�L@
�M@
�N@M@
�P@
�Q@
�R@
�S@y7@
�U
�`
�V
�[
�W@
�X@
�Y@
�Z@M�@
�\@
�]@
�^@
�_@p�@
�a
�f
�b@
�c@
�d@
�e@b�@
�g@
�h@
�i@
�j@d@
�l
��
�m
�u
�n
�p
�o@i�@
�q@
�r@
�s@
�t@L@
�v
�{
�w@
�x@
�y@
�z@L@
�|@
�}@
�~@
�@��@
��
��
��
��
��@
��@
��@
��@t�@
��@
��@
��@
��@d{@
��
��
��@
��@
��@
��@xv@
��@
��@
��@
��@N@
��
��
��
��
��
��
��
��
��@b�@
��@L�@
��
��
��@
��@
��@
��@xv@
��@
��@
��@
��@L@
��
��@
��
��@
��@
��@
��@cW@
��
��
��@
��@
��@
��@M@
��@
��@
��@
��@M@
��
��
��
��
��
��
��@
��@
��@
��@L�@
��@
��@
��@
��@b�@
��
��
��@
��@
��@
��@d@
��@nW@
��
��
��
��
��@
��@
��@
��@d{@
��@N@
��@
��@
��@
��@
��@ty@
��
�5
��
�
��
��
��
��
��
��
��@aN@
��@
��@
��@
��@l@
��
��
��@
��@
��@
��@`�@
��@
��@
��@
��@xv@
��
�
��
��
��@
��@
��@
��@L@
��@
�@
�@
�@iM@
�
�	
�@
�@
�@
�@L�@
�
@
�@
�@
�
@|�@
�
�#
�
�
�
�
�@d@
�@
�@
�@
�@cW@
�
�
�@
�@
�@
�@b�@
�@
� @
�!@
�"@K�@
�$
�/
�%
�*
�&@
�'@
�(@
�)@c�@
�+@
�,@
�-@
�.@cW@
�0@
�1@
�2@
�3@
�4@L�@
�6
�e
�7
�N
�8
�C
�9
�>
�:@
�;@
�<@
�=@M@
�?@
�@@
�A@
�B@b�@
�D
�I
�E@
�F@
�G@
�H@`�@
�J@
�K@
�L@
�M@g4@
�O
�Z
�P
�U
�Q@
�R@
�S@
�T@L@
�V@
�W@
�X@
�Y@M@
�[
�`
�\@
�]@
�^@
�_@M@
�a@
�b@
�c@
�d@xv@
�f
�}
�g
�r
�h
�m
�i@
�j@
�k@
�l@d@
�n@
�o@
�p@
�q@d{@
�s
�x
�t@
�u@
�v@
�w@��@
�y@
�z@
�{@
�|@c�@
�~
��
�
��
��@L�@
��@
��@
��@
��@L�@
��
��
��@
��@
��@
��@t�@
��@
��@
��@
��@
��@
��i�
��i�i�
��i�
��
��i�
��i�i�
��i�
��
��i�
��i�
��i�
��i�
��i�
��i�
��i�i��
��
�1
��
��
��
��
��
��
��
��
��@
��@
��@
��@
��@p�@
��@
��@d@
��
��@
��
��@
��@
��@
��@g4@
��@
��@
��@
��@
��@xv@
��
��
��
��
��@
��@
��@
��@
��@N@
��
��
��@
��@
��@
��@c�@
��@
��@
��@
��@d@
��
��
��
��
��@
��@
��@
��@N@
��@
��@
��@
��@b�@
��
��
��@
��@
��@
��@b�@
��@
��@
��@
��@az@
��
�
��
��
��
��
��@
��@
��@
��@
��@xv@
��@
��@
��@
��@
��@d@
��
��@
��
��@
��@
��@
��@A@
��
�
��@
��@
�@
�@L@
�@
�@
�@
�@d@
�
�
�	
�
�

�
�@
�@
�
@
�@c�@
�@
�@
�@
�@ku@
�
�
�@
�@
�@
�@az@
�@
�@
�@
�@`�@
� 
�+
�!
�&
�"@
�#@
�$@
�%@p�@
�'@
�(@
�)@
�*@xv@@
�,
�-@
�.@
�/@
�0@c�@
�2
�y
�3
�M
�4
�>
�5
�8
�6@
�7@p�@
�9@
�:@
�;@
�<@
�=@d@
�?
�G
�@
�E
�A@
�B@
�C@
�D@M�@
�F@b�@@
�H
�I@
�J@
�K@
�L@L@
�N
�e
�O
�Z
�P
�U
�Q@
�R@
�S@
�T@d@
�V@
�W@
�X@
�Y@c�@
�[
�`
�\@
�]@
�^@
�_@i�@
�a@
�b@
�c@
�d@b�@
�f
�n
�g
�l
�h@
�i@
�j@
�k@b�@
�m@b�@
�o
�t
�p@
�q@
�r@
�s@b�@
�u@
�v@
�w@
�x@g_@
�z
��
�{
��
�|
��
�}
��
�~@
�@
��@
��@M@
��@
��@
��@
��@N@
��
��
��@
��@
��@
��@`�@
��@
��@
��@
��@K�@
��
��
��
��
��@M@
��@
��@
��@
��@cW@
��
��
��@
��@
��@
��@M�@
��@
��@
��@
��@iM@
��
��
��
��
��
��
��@
��@
��@
��@b�@
��@M�@
��
��
��@
��@
��@
��@ak@
��@b�@
��
��
��
��
��@
��@
��@
��@M@
��@
��@
��@
��@L�@
��
��
��@
��@
��@
��@L�@
��@
��@
��@
��@`�@
��
�
��
��
��
�K
��
��
��
�6
��
��
��
�
��
��
��
��
��
��
��@
��@
��@
��@nW@
��@
��@
��@
��@`�@
��
��
��@
��@
��@
��@L@
��@
��@
��@
��@b�@
��
��
��
��
��@
��@
��@
��@b�@
��@N@
��
��
��@
��@
��@
��@b�@
��@
��@
�@
�@M@
�
�%
�
�

�@
�@
�@
�@
�	@N@
�
�
�@
�
@
�@
�@M@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
� @
�!@@
�"@
�#
�$@��@
�&
��
�'
��
�(@
�)@
�*@
�+@
�,@
�-N
�.N
�/NN
�0
�1
�w
�2
�]
�3NN
�4
�5N
�6N
�7N
�8N
�9N
�:N
�;
�LN
�<
�=N
�>N
�?N
�@N
�AN
�BN
�CN
�DNN
�E
�FNN
�GN
�H
�IN
�JNN
�KNQ�
�MN
�NN
�ON
�PN
�QN
�RN
�SN
�TN
�UN
�VN
�WNN
�XN
�YN
�ZN
�[
�\NQ�N
�^NN
�_
�`N
�aN
�bN
�cN
�dN
�eN
�fNN
�g
�hN
�iN
�jN
�kN
�lN
�mN
�nN
�oN
�pNN
�qN
�r
�sNN
�tN
�uN
�vNP}
�xN
�yNN
�z
�{N
�|N
�}N
�~N
�N
��N
��NN
��
��N
��N
��N
��N
��N
��N
��N
��N
��N
��NN
��
��N
��NN
��
��NNQ�
��@
��@
��@
��@L@@
��
��@
��@
��@
��@c�@
��
��
��
��
��
��
��
��
��@
��@
��@
��@M@
��@
��@
��@
��@nW@@
��
��@
��@
��@
��@i�@
��
��
��
��
��@b�@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@ak@
��@
��@
��@
��@N@
��
��
��
��
��
��
��@
��@
��@
��@N@
��@
��@
��@
��@xv@
��
��
��@
��@
��@
��@ak@
��@
��@
��@
��@L�@
��
��@
��
��@
��@
��@
��@M@@
��
��@
��@
��`�
��`�
��`�
��`�
��`�
��`�
��
��`�
��`�
��
��
�E`�
��
��`�
��
� 
��
�
��
���
��
���
��
��`����
��
�
��
���
���`�[��
�
�
���`�
�
��`�`��
�
�
�
�

�	
�
�
`�`�[�
��u`���
�
�
�`�d��u
�
�`��u�g`�
�
�
�
�
�`��b�
�
�`��`�b�
�
�`�
��4`�
�
��;�%fy
�!
�=
�"
�/
�#
�)
�$
�'
�%
�&b�`�`��`�
�(`��%
�*
�-
�+
�,`�},`�
�.`�`�i
�0
�6
�1
�4
�2
�3=O`���`�
�5`�b�`�
�7
�:
�8
�9`�w�f�`�
�;
�<`���W`�
�>`�
�?
�B`�
�@�
�A�`�
�C`�
�D`��`�
�F
��
�G`�
�H
�y
�I
�d
�J
�V
�K
�P
�L
�N
�M�u`���
�O`�d��u
�Q
�T
�R
�S`��u�g`�
�U`��b�
�W
�]
�X
�[
�Y
�Z`��`�b�`�
�\�4`�
�^
�a
�_
�`�;�%fy
�b
�cb�`�`��
�e
�r
�f
�l
�g
�i`�
�h`��%
�j
�k`�},`�
�m
�o
�n`�;i
�p
�q=O`���`�
�s�
�t
�v
�u`�b�`�
�w
�x`�w�f��
�z
��
�{
��
�|
�
�}�
�~���
��
���
��`�[�
��
��[�`�`��
��
��
���
����W�
��
��`�
���`�
��`�[�`�
��`�
��
��`�
��
��
��`���`�
��`�
��`��`�
��`�
��
��
��
��
��
��
��
��
��
��
���u`���
��`�d��u
��
��
��
��`��u�g`�
��`��b�
��
��
��
��
��
��`��`�b�`�
���4`�
��
��
��
���;�%fy
��
��b�`�`��
��
��
��
��
��
��`�
��`��%
��
��`�},`�
��
��
��`�;i
��
��=O`���`�
���
��
��
��`�b�`�
��
��`�w�f��
��
��
��
��
��
��
���
�����
��
���
��`�[�
��
��[�`�`��
��
��
���
����W�
��
��`�
���`�
��`�[�`�
��`�
��
��`�
��
��
��`���`�
��`�
��`��`�
��
��
��`�
��
�=`�
��
��`�
��
�
��
�

��
��
��
��
��
��
���u`���
��`�d��u
��
��
��
��`��u�g`�
��`��b�
��
�
��
�
��
�`��`�b�`�
��4`�
�
�
�
��;�%fy
�
�	b�`�`��
�
�
�
�
�

�`�
�`��%
�
�`�},`�
�
�
�`�;i
�
�=O`���`�
��
�
�
�`�b�`�
�
�`�w�f��
� 
�4
�!
�+
�"
�%
�#�
�$���
�&
�(�
�'`�[�
�)
�*[�`�`��
�,
�/
�-�
�.��W�
�0
�2`�
�1�`�
�3`�[�`�
�5`�
�6
�:`�
�7
�8
�9`���`�
�;`�
�<`��`�
�>`�
�?`�
�@
�q
�A
�\
�B
�N
�C
�H
�D
�F
�E�u`���
�G`�d��u
�I
�L
�J
�K`��u�g`�
�M`��b�
�O
�U
�P
�S
�Q
�R`��`�b�`�
�T�4`�
�V
�Y
�W
�X�;�%fy
�Z
�[b�`�`��
�]
�j
�^
�d
�_
�a`�
�``��%
�b
�c`�},`�
�e
�g
�f`�;i
�h
�i=O`���`�
�k�
�l
�n
�m`�b�`�
�o
�p`�w�f��
�r
��
�s
�}
�t
�w
�u�
�v���
�x
�z�
�y`�[�
�{
�|[�`�`��
�~
��
��
����W�
��
��`�
���`�
��`�[�`�
��`�
��
��`�
��
��
��`���`�
��`�
��`��`�`�
��
��
��`�
��
��`�
��
��
��
��
��
��
��
��
��
��
���u`���
��`�d��u
��
��
��
��`��u�g`�
��`��b�
��
��
��
��
��
��`��`�b�`�
���4`�
��
��
��
���;�%fy
��
��b�`�`��
��
��
��
��
��
��`�
��`��%
��
��`�},`�
��
��
��`�;i
��
��=O`���`�
���
��
��
��`�b�`�
��
��`�w�f��
��
��
��
��
��
��
���
�����
��
���
��`�[�
��
��[�`�`��
��
��
���
����W�
��
��`�
���`�
��`�[�`�
��`�
��
��`�
��
��
��`���`�
��`�
��`��`�`�
��
��`�
��
�
��
�
��
��
��
��
��
��
���u`���
��`�d��u
��
��
��
��`��u�g`�
��`��b�
��
��
��
��`�
��`�b�`�
���4`�
��
��
��
��`��;�%
��`�fyb�
�
�
�
�
�
�
�`��`�
�
��%`�},
�	
�
�

�`�;i`�
�

�`�=O`���
�
�
�
�
�`�`�b�`�
�w�f�`��
�
�+
�
�
�
��
��
����
��
��`�
� 
�&
�!
�#[�
�"`��
�$
�%�`�`��
�'
�)
�(��W��
�*`��
�,`�
�-
�3
�.
�1
�/
�0�`�`��
�2`�`�[�
�4`�
�5`��`�
�7
��
�8
�^
�9
�M
�:
�E
�;
�@
�<@
�=@
�>@
�?@b�@
�A@
�B@
�C@
�D@L�@
�F
�H
�G@b�@
�I@
�J@
�K@
�L@d@
�N
�V
�O
�Q
�P@�b@
�R@
�S@
�T@
�U@L�@
�W
�Y
�X@b�@
�Z@
�[@
�\@
�]@ty@
�_
�v
�`
�k
�a
�f
�b@
�c@
�d@
�e@d{@
�g@
�h@
�i@
�j@M�@
�l
�q
�m@
�n@
�o@
�p@cW@
�r@
�s@
�t@
�u@g_@
�w
�}
�x@
�y@
�z@
�{@
�|@M�@
�~
��
�@d@
��@
��@
��@
��@L@
��
��
��
��
��
��
��
��
��@
��@
��@
��@M�@
��@
��@
��@
��@cW@
��
��
��@b�@
��@
��@
��@
��@`�@
��
��
��
��
��@
��@
��@
��@M@
��@
��@
��@
��@M@
��
��
��@
��@
��@
��@L@
��@
��@
��@
��@`�@
��
��
��
��
��
��
��@
��@
��@
��@b�@
��@
��@
��@
��@aN@@
��
��@
��@
��@
��@y7@
��
��
��
��
��@
��@
��@
��@cW@
��@
��@
��@
��@K�@
��
��
��@{
@
��@
��@
��@
��@� @
��
��
��
�0
��
�
��
��
��
��
��
��
��@
��@
��@
��@l@
��@
��@
��@
��@�X@
��
��
��@
��@
��@
��@M@
��@
��@
��@
��@d@
��
��
��@
��@
��@
��@
��@c�@
��
�
��@
��@
��@
�@N@
�@
�@
�@
�@M@
�
�
�
�
�	
�
�
@
�@
�@
�
@i�@
�@
�@
�@
�@M@
�
�
�@
�@
�@
�@N@
�@
�@
�@
�@��@
�
�*
� 
�%
�!@
�"@
�#@
�$@`�@
�&@
�'@
�(@
�)@j�@
�+@
�,@
�-@
�.@
�/@d@
�1
�|
�2
�Q
�3
�F
�4
�A
�5@
�6@
�7@
�8@
�9@
�:M
�;M
�<M
�=M
�>M
�?MM
�@�oq�
�B@
�C@
�D@
�E@M@
�G
�L
�H@
�I@
�J@
�K@d@
�M@
�N@
�O@
�P@M@
�R
�]
�S
�X
�T@
�U@
�V@
�W@g4@
�Y@
�Z@
�[@
�\@M@
�^
�w
�_@
�`@
�a@
�b@
�c@
�dM
�eM
�fM
�gM
�hM
�iMM
�j
�kM
�lMM
�m
�nM
�o
�sM
�p
�qM
�rMMg�
�tM
�uM
�vM��M
�x@
�y@
�z@
�{@d@
�}
��
�~
��
�
��
��@
��@
��@
��@�G@
��@
��@
��@
��@cW@@
��
��@
��@
��@
��@w�@
��
��
��@
��@li@
��
��
��@
��@
��@
��@ty@
��@
��@
��@
��@`�@
��
�	
��
��
��
��
��
��
��
��
��@
��@
��@
��@M@
��@
��@
��@
��@p�@
��
��
��@
��@
��@
��@c�@
��@
��@
��@
��@q~@
��
��
��@
��@`�@
��
��
��@
��@
��@
��@M@
��@
��@
��@
��@b�@
��
��
��
��@
��
��@
��@
��@
��@g4@
��
��
��@cW@
��@
��@
��@
��@n�@
��
�
��
��
��@
��@
��@
��@L�@
��@
��@
��@
��@
��@
��xv
��xv
��xv
��xv
��xv
��xv
��xv
��xv
��xv
��xv
��xv
��xv
��xv
��xv
��xv
��xv
��xv
��xv
��xv
��xv
��xv
��xv
��xv
��xv
��xv
��xv
��xv
��xv
�xv
�xv
�xv�xv@
�
�@
�@
�@
�@M@
�

�/
�
�
�
�
�

�
�@
�@
�@
�@M@
�@
�@
�@
�@N@@
�
�@
�@
�@
�@aN@
�
�)
�
�$
� @
�!@
�"@
�#@L@
�%@
�&@
�'@
�(@c�@@
�*
�+@
�,@
�-@
�.@��@
�0
�:
�1
�4
�2@
�3@N@@
�5
�6@
�7@
�8@
�9@ak@
�;
�C
�<
�>
�=@l@
�?@
�@@
�A@
�B@d@
�D
�F
�E@iM@
�G@
�H@
�I@
�J@��@
�L
�4
�M
��
�N
�f
�O
�7
�P
�g
�Q
�\
�R
�W
�S@
�T@
�U@
�V@b�@
�X@
�Y@
�Z@
�[@M�@
�]
�b
�^@
�_@
�`@
�a@M@
�c@
�d@
�e@
�f@L�@
�h
�s
�i
�n
�j@
�k@
�l@
�m@iM@
�o@
�p@
�q@
�r@M�@
�t
�2
�u@
�v@
�w@
�x@
�y@
�z
�"
�{d]
�|d]
�}d]
�~d]
�
��
��
��
��
��
��
��
��
��
��
��y(x�
��h4
��d]
��d]d]
��d]
��
��
��
��d]d]
��
��d]d]
��
��d]
��d]d]
��
��d]d]
��d]
��
��
��
��
��d]
��
��h4d]h4
��d]h4d]
��d]
��d]
��d]h4d]d]
��d]h4
��
��y(
��
���+�+
���+
��
���+
���+
���+
���+
���+
���+
���+
���+
���+
���+
���+
���+
���+
���+
���+
���+�~�+x���
��
��
��
��d]y(�^�
��
��h4��(݋
��
��
��
��
��
����y�h4
��
��d]�iݙh4
��
��
��
���^�oh4�
��
����ݶ���N
��
��
��
��
��
��
��
����h4hBd]
��
��hBh4d]�n
��
��
��
��x�h4x��5
��
��݋y(x�Ÿ
��
��
��
��
��
��x�d]x�h4y(
��h4��
��
��
��
��h4����h4d]
���+h4
��
�
��
��
��
��
��
��
��
���d]h4
��
����pyݶ
��
��
��
���y(h4�^
��
���C��d]e
��
�
��
�
�
�[@h4�^y
�
�wUr�x�e
�
�	
�
�a�x��0
�

�d]�ab��
�

�
�
�
�
�
�
�d]ݶd]�5
�
�h4d]d]
�
�
�h4x�wd
�
��^wd[��\
�d]
�
� 
�
�x�d]`�Q'
�!d]�oa
�#d]
�$d]d]
�%d]
�&
�'d]
�(d]d]
�)d]
�*
�+d]
�,d]d]
�-
�.�~�~
�/
�0
�1�~x�h4y(
�3@
�4@
�5@
�6@t�@
�8
�O
�9
�D
�:
�?
�;@
�<@
�=@
�>@c�@
�@@
�A@
�B@
�C@Л@
�E
�J
�F@
�G@
�H@
�I@c�@
�K@
�L@
�M@
�N@d@
�P
�[
�Q
�V
�R@
�S@
�T@
�U@L�@
�W@
�X@
�Y@
�Z@cW@
�\
�a
�]@
�^@
�_@
�`@`�@
�b@
�c@
�d@
�e@g4@
�g
��
�h
�
�i
�t
�j
�o
�k@
�l@
�m@
�n@xv@
�p@
�q@
�r@
�s@d{@
�u
�z
�v@
�w@
�x@
�y@��@
�{@
�|@
�}@
�~@L�@
��
��
��@
��@
��@
��@
��@M@
��
��
��@
��@
��@
��@L�@
��@
��@
��@
��@d]@
��
��
��
��
��
��
��@
��@
��@
��@c�@
��@
��@
��@
��@L@
��
��
��@
��@
��@
��@L@
��@
��@
��@
��@�,@
��
��
��@
��@iM@
��
��
��@
��@
��@
��@b�@
��@
��@
��@
��@d@
��
��
��
��
��
��
��
��
��
��
��@
��@
��@
��@b�@
��@
��@
��@
��@d]@
��@
��@
��@
��@
��@c�@
��
��
��
��
��@
��@
��@
��@d@
��@
��@
��@
��@{
@
��
��
��@
��@
��@
��@M@
��@
��@
��nW
��
��
��
��
�q
��nWnW
��
��nW
��nWnW
��
��
�X
��nW
��
�+
��nWnW
��
��
�
��
�
��nW
��nWnW
��nW
��nW
��
��nWnW
��nW
��nW
��nW
��
��nWnW
��
��nWnW
��
�nWnW
�nW
�
�nWnWjnW
�
�nW
�nWnW
�nW
�	
�
nWnW
�nW
�nW
�
nW
�
�nWnW
�
�nWnW
�
�nWnW
�nW
�
�nWnWjnW
�
�nWnW
�
�nWnW
�nW
�
�nWnW
�nW
� nW
�!nW
�"
�#nWnW
�$
�%nWnW
�&
�'nWnW
�(nW
�)
�*nWnWj
�,
�BnW
�-
�.nW
�/nW
�0nW
�1nWnW
�2nW
�3nW
�4
�5nWnW
�6nW
�7nW
�8nW
�9
�:nWnW
�;
�<nWnW
�=
�>nWnW
�?nW
�@
�AnWnWj
�CnWnW
�D
�EnWnW
�F
�GnW
�HnW
�InW
�JnW
�KnW
�LnW
�MnW
�NnW
�OnW
�PnW
�QnW
�RnW
�SnW
�TnW
�UnW
�VnW
�WnWjnW
�YnW
�ZnWnW
�[nW
�\
�]nW
�^nW
�_nW
�`nW
�anW
�bnWnW
�c
�dnW
�enWnW
�f
�gnW
�hnW
�inW
�jnW
�knW
�lnWnW
�mnW
�n
�onW
�pnWnWjnW
�rnW
�snW
�tnW
�unW
�vnW
�wnW
�xnW
�ynW
�znW
�{nW
�|nW
�}nW
�~nW
�nW
��
��nW
��nW
��nW
��nW
��nW
��nW
��nWnW
��nW
��
��nW
��nW
��nW
��nWnW
��
��nWnWj
����
������
��
����
����
��
����
��
����
������
����
��
����
������
����
������
����
����
����
����
������
����
��
������
������
��
��
��
��
��
��
��@
��@
��@
��@c�@
��@
��@
��@
��@L@
��
��
��@
��@
��@
��@xv@
��@c�@
��
��
��
��
��@
��@
��@
��@L@
��@
��@
��@
��@g_@
��
��
��@
��@
��@
��@l�@
��@
��@
��@
��@aN@
��
�
��
��
��
��
��
��
��@
��@
��@
��@M@
��@
��@
��@
��@nW@
��
��
��@
��@
��@
��@K�@
��@
��@
��@
��@cW@
��
��
��
��
��@
��@
��@
��@L@
��@
��@
��@
��@aN@
��
�
��@
��@
��@
�@b�@
�@
�@
�@
�@nW@
�
�
�
�
�	
�
�
@
�@
�@
�
@N@
�@
�@
�@
�@N@
�
�
�@
�@
�@
�@b�@
�@
�@
�@
�@{
@
�
�*
� 
�%
�!@
�"@
�#@
�$@xv@
�&@
�'@
�(@
�)@cW@
�+
�/
�,@
�-@
�.@d]@
�0@
�1@
�2@
�3@nW@
�5
��
�6
�}
�7
�V
�8
�G
�9
�<
�:@
�;@M@
�=
�B
�>@
�?@
�@@
�A@b�@
�C@
�D@
�E@
�F@b�@
�H
�S
�I
�N
�J@
�K@
�L@
�M@`�@
�O@
�P@
�Q@
�R@M@
�T@
�U@d]@
�W
�i
�X
�c
�Y
�^
�Z@
�[@
�\@
�]@q~@
�_@
�`@
�a@
�b@M�@@
�d
�e@
�f@
�g@
�h@L�@
�j
�r
�k
�m
�l@d@
�n@
�o@
�p@
�q@L@
�s
�x
�t@
�u@
�v@
�w@M@
�y@
�z@
�{@
�|@b�@
�~
��
�
��
��
��
��@
��@nW@
��@
��@
��@
��@
��@L�@
��
��
��
��
��@
��@
��@
��@M�@
��@
��@
��@
��@aN@
��
��
��@c�@
��@
��@
��@
��@aN@
��
��
��
��
��
��
��@
��@
��@
��@p�@
��@
��@
��@
��@g4@
��
��
��@
��@
��@
��@d@
��@
��@
��@
��@Л@
��
��
��
��
��@
��@
��@
��@p�@
��@
��@
��@
��@M@
��
��
��@
��@
��@
��@L@
��@
��@
��@
��@c�@
��
�H
��
��
��
��
��
��
��
��
��@
��@
��@
��@l@
��@
��@
��@
��@l@
��
��
��@
��@
��@
��@d]@
��@
��@
��@
��@c�@
��
��
��
��
��@
��@
��@
��@ty@
��@
��@
��@
��@b�@
��@
��@g_@
��
�1
��
�
��
��
��@
��@
��@
��@d@
��@
��@
�@
�@L@
�
�,
�@
�@
�@
�@
�M
�	M
�

�"
�
�
�M
�

�
�g�g�
�g�M
�Mg�M
�M
�
�
�
�
�
��q��;�o
�
�M�;�q�
�
�
�
�d�J�;�o
� 
�!y���M��
�#M
�$
�(
�%M
�&M
�'MēM
�)M
�*M
�+M����
�-@
�.@
�/@
�0@L�@
�2
�=
�3
�8
�4@
�5@
�6@
�7@{
@
�9@
�:@
�;@
�<@M@
�>
�C
�?@
�@@
�A@
�B@M@
�D@
�E@
�F@
�G@y7@
�I
�k
�J
�Y
�K
�V
�L
�Q
�M@
�N@
�O@
�P@� @
�R@
�S@
�T@
�U@`�@
�W@
�X@d@
�Z
�e
�[
�`
�\@
�]@
�^@
�_@M@
�a@
�b@
�c@
�d@M�@
�f@
�g@
�h@
�i@
�j@M@
�l
�y
�m
�s
�n@
�o@
�p@
�q@
�r@M@@
�t
�u@
�v@
�w@
�x@b�@
�z
��@
�{
�|@
�}@
�~@
�@M@
��@
��@
��@
��@
��@M�@
��
��
��
��
��
�5
��
��
��
��
��
��
��
��
��
��
��@
��@
��@
��@M@
��@
��@
��@
��@M�@
��
��
��@
��@
��@
��@b�@
��@
��@
��@
��@lx@
��
��
��
��
��@
��@
��@
��@d@
��@L�@
��
��
��@
��@
��@
��@M@
��@
��@
��@
��@b�@
��
��
��
��
��
��
��@n�@
��@
��@
��@
��@`�@
��
��
��@
��@
��@
��@�@
��@
��@
��@
��@g4@
��
��
��
��
��@
��@
��@
��@b�@
��@
��@
��@
��@g_@
��@
��@
��@
��@
��@b�@
��
�
��
��
��
��
��@
��@
��@
��@
��@j�@
��
��
��@
��@
��@
��@L�@
��@
��@
��@
��@`�@
��
��
��
��
��@
��@
��@
��@`�@
��@
��@
��@
��@b�@
��
�
�@L�@
�@
�@
�@
�@c�@
�
�
�
�
�	
�
�
@
�@
�@
�
@ku@
�@
�@
�@
�@L@
�
�
�@
�@
�@
�@iM@
�@
�@
�@
�@cW@
�
�*
� 
�%
�!@
�"@
�#@
�$@`�@
�&@
�'@
�(@
�)@az@
�+
�0
�,@
�-@
�.@
�/@`�@
�1@
�2@
�3@
�4@y7@
�6
��
�7
�a
�8
�J
�9
�D
�:
�?
�;@
�<@
�=@
�>@b�@
�@@
�A@
�B@
�C@L@@
�E
�F@
�G@
�H@
�I@c�@
�K
�V
�L
�Q
�M@
�N@
�O@
�P@aN@
�R@
�S@
�T@
�U@b�@
�W
�\
�X@
�Y@
�Z@
�[@M@
�]@
�^@
�_@
�`@nW@
�b
�t
�c
�i
�d@
�e@
�f@
�g@
�h@`�@
�j
�o
�k@
�l@
�m@
�n@d@
�p@
�q@
�r@
�s@aN@
�u
��
�v
�{
�w@
�x@
�y@
�z@L�@
�|@
�}@
�~@
�@c�@@
��
��@
��@
��@
��@M@
��
��
��
��
��
��
��@
��@d{@
��
��
��@
��@
��@
��@L�@
��@
��@
��@
��@d@
��
��
��@
��@
��@
��@
��@L@
��
��
��@
��@
��@
��@`�@
��@
��@
��@
��@L�@
��
��
��
��
��
��
��@
��@
��@
��@`�@
��@L�@
��
��
��@
��@
��@
��@L@
��@
��@
��@
��@ak@
��
��
��
��
��@
��@
��@
��@xv@
��@
��@
��@
��@e�@
��
��
��@
��@
��@
��@b�@
��@`�@
��
��
��
�F
��
�
��
��
��
��
��
��
��@
��@
��@
��@g_@
��@
��@
��@
��@xv@
��
��
��@
��@
��@
��@b�@
��@
��@
��@
��@M@
��
��
��
��
��@
��@
��@
��@M�@
��@p�@
��
��
��@
��@
��@
��@L�@
��@
��@
��@
�@N@
�
�1
�
�
�
�	
�@
�@
�@
�@xv@
�
@
�@
�@
�
@d@@
�
�@
�@
�`�
�`�
�`�
�`�
�`�
�`�
�
�%
�`�
�`�
�`�
�`�
�`�
�`�
�
�$
� `�
�!`�
�"`�
�#`�`�i�e�`�
�&`�
�'`�
�(`�
�)`�
�*`�
�+`�
�,`�
�-`�
�.`�
�/`�
�0`�e�E
�2
�=
�3
�8
�4@
�5@
�6@
�7@N@
�9@
�:@
�;@
�<@M@
�>
�A
�?@
�@@b�b�
�B@
�C@
�D@
�E@g_@
�G
�n
�H
�Z
�I
�O
�J@
�K@
�L@
�M@
�N@b�@
�P
�U
�Q@
�R@
�S@
�T@d@
�V@
�W@
�X@
�Y@q~@
�[
�c
�\
�a
�]@
�^@
�_@
�`@b�@
�b@M@
�d
�i
�e@
�f@
�g@
�h@j�@
�j@
�k@
�l@
�m@d@
�o
��
�p
�{
�q
�v
�r@
�s@
�t@
�u@xv@
�w@
�x@
�y@
�z@nW@
�|
��
�}@
�~@
�@
��@g4@
��@
��@
��@
��@nW@
��
��
��
��
��@
��@
��@
��@L@
��@M@@
��
��@ak@
��
�,
��
�	
��
��
��
��
��@
��@
��@
��@
��@L�@
��
��
��@
��@
��@
��@d]@
��@
��@
��@
��@L�@
��
��
��
��
��@
��@
��@
��@M�@
��@
��@
��@
��@xv@
��
��
��@
��@
��@
��@L�@
��@
��@
��@
��@
��@
��M
��M
��M
��M
��M
��M
��
��M
��
��M
��M
��
��
��
��
��
��
��
���;�oM�J
��
��dq����l
��
��
��
���y��4�
��
����%)x�O
��M
��M
��M����
��
��
��M
��M
��
��
��
��
��
��
��
���;�oM�J
��
��dq����l
��
��
��
���y��4�
��
����%)x�O
��M
��M
��M����
��M
��M
��
�
��
��
��
��
��
���;�oM�J
��
��dq����l
��
�
�
��y��4�
�
���%)x�O
�M
�M
�M����
�

�
�
�
�
�
�
@d@
�@`�@
�
�
�@
�@
�@
�@L�@
�@
�@
�@
�@L�@
�
�$
�
�
�@L@
� @
�!@
�"@
�#@d@
�%
�'
�&@c�@
�(@
�)@
�*@
�+@M@
�-
�Y
�.
�E
�/
�:
�0
�5
�1@
�2@
�3@
�4@az@
�6@
�7@
�8@
�9@g_@
�;
�@
�<@
�=@
�>@
�?@c�@
�A@
�B@
�C@
�D@d@
�F
�Q
�G
�L
�H@
�I@
�J@
�K@L@
�M@
�N@
�O@
�P@`�@
�R
�W
�S@
�T@
�U@
�V@N@
�X@`�@
�Z
�n
�[
�c
�\
�a
�]@
�^@
�_@
�`@d@
�b@g_@
�d
�i
�e@
�f@
�g@
�h@|�@
�j@
�k@
�l@
�m@b�@
�o
�w
�p
�r
�q@c�@
�s@
�t@
�u@
�v@`�@
�x
�}
�y@
�z@
�{@
�|@N@
�~@
�@
��M
��
��Mq��lM
��
��
��
��
��
�\
��
�A
��
��
��
��
��
��
��@
��@
��@
��@
��@
��M�
��M�
��M�
��M�
��
��
��
��
��
�����0M�
��
��M�
��M�
��M�
��M�
��M�
��M�
��M�M�rM�
��M�[
��M�
��
��hM���� 
��@`�@
��
��
��@
��@
��@
��@M@
��@iM@
��
��
��
��
��@
��@
��@
��@{
@
��@
��@
��@
��@g_@
��
�<
��@
��@
��@
��@
��@
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��
�

��gC
��az
��az
��az
��
��
��az
��az
��azaz
��
��az
��
��
��
��
��azaz
��
��az
��azgQaz
��
��
��
��az
��azgQ
��azgQazgQ
��
��azgQaz
��az
��
��gQ
��
��azgQaz
��azgQ
��gQaz
��az
��az
��az
��az
��az
��
�
��
��az
��gQ
��
��azgQaz
��
�gQ
�
�azgQazgQ
�
�azgQaz
�az
�
�
gQ
�
�	azgQaz
�az
�azgQaz
�
�#
�az
�az
�az
�az
�az
�az
�az
�azaz
�az
�
�
�az
�
�az
�az
�az��azaz
�
� az
�!az
�"azgQaz
�$az
�%az
�&az
�'az
�(az
�)az
�*az
�+azaz
�,az
�-
�.
�3az
�/
�0az
�1az
�2azb�az
�4
�8
�5az
�6az
�7azb�az
�9az
�:az
�;azb�az
�=@
�>@
�?@
�@@b�@
�B
�O
�C
�I
�D@
�E@
�F@
�G@
�H@M�@
�J@
�K@
�L@
�M@
�N@`�@
�P
�V
�Q@
�R@
�S@
�T@
�U@`�@
�W@
�X@
�Y@
�Z@
�[@b�@
�]
�o
�^
�e
�_
�b
�`@
�a@M@
�c@
�d@cW@
�f
�l
�g@
�h@
�i@
�j@
�k@xv@
�m@
�n@pz@
�p
�}
�q
�w
�r@
�s@
�t@
�u@
�v@M@
�x@
�y@
�z@
�{@
�|@`�@
�~
��
�@
��@
��@
��@
��@d@
��@
��@
��@
��@
��@b�@
��
��
��
��
��
��
��
��
��@
��@
��@
��@
��@d@
��@
��@
��@
��@
��@M@
��
��
��@
��@
��@
��@
��@d@
��@
��@
��@
��@
��@xv@
��
��
��
��
��@
��@
��@
��@
��@g_@
��@
��@
��@
��@
��@ak@
��
��
��@
��@
��@
��@
��@d@
��@
��@
��@
��@
��@L�@
��
��
��
��
��
��
��@
��@iM@
��@
��@
��@
��@
��@rf@
��
��
��@
��@cW@
��@
��@
��@
��@
��@L�@
��
��
��
��
��@
��@L�@
��@
��@
��@
��@
��@L@
��
��
��@
��@
��@
��@
��@xv@
��@
��@
��@
��@
��@L�@
��
��
��
�Q
��
�6
��
�
��
��
��@
��@
��@
��@
��@M@
��@
��@
��@
��@
�@L�@
�
�
�@
�@d@
�@
�@
�@
�	@
�
@
�@
�az
�
az
�az
�az
�az
�az
�az
�az
�az
�az
�
�.
�
�"
�
�
�
�
�
�kXgCwcb�
�
�ubazww
� az
�!azazv�
�#
�)
�$
�'
�%
�&wUwgQgC
�(mb�w�
�*
�,
�+az��v�az
�-azv�
�/az
�0az
�1
�3az
�2v�w�
�4
�5az�"azwF
�7
�D
�8
�>
�9@
�:@
�;@
�<@
�=@b�@
�?@
�@@
�A@
�B@
�C@cW@
�E
�K
�F@
�G@
�H@
�I@
�J@M@
�L@
�M@
�N@
�O@
�P@b�@
�R
�j
�S
�]
�T
�W
�U@
�V@nW@
�X@
�Y@
�Z@
�[@
�\@��@
�^
�d
�_@
�`@
�a@
�b@
�c@L�@
�e@
�f@
�g@
�h@
�i@L�@
�k
�u
�l
�o
�m@
�n@L@
�p@
�q@
�r@
�s@
�t@�,@
�v
�|
�w@
�x@
�y@
�z@
�{@L�@
�}@
�~@
�@
��@
��@N@
��
��
��
��
��
��
��
��
��@
��@
��@
��@
��@xv@
��@
��@M@
��
��
��@
��@L@
��@
��@
��@
��@
��@b�@
��
��
��
��
��@
��@
��@
��@
��@L�@
��@
��@��@
��
��
��@
��@cW@
��@
��@
��@
��@
��@L�@
��
��
��
��
��
��
��@
��@
��@
��@
��@N@
��@
��@
��@
��@
��@M@
��
��
��@
��@
��@
��@
��@M@
��@
��@
��@
��@
��@N@
��
��
��
��
��@
��@
��@
��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~
��@
��@
��@
��@
��@L�@
��
��
��@
��@
��@
��@
��@N@
�@
�@
�@
�@
�@M@
�
� 
�
��
�
��
�	
�i
�

�;
�
�#
�
�
�

�
�@
�@nW@
�@
�@
�@
�@
�@c�@
�
�
�@
�@
�@
�@
�@t�@
�@
�@
� @
�!@
�"@c�@
�$
�.
�%
�+
�&@
�'@
�(@
�)@
�*@g4@
�,@
�-@d@
�/
�5
�0@
�1@
�2@
�3@
�4@`�@
�6@
�7@
�8@
�9@
�:@`�@
�<
�T
�=
�G
�>
�A
�?@
�@@d@
�B@
�C@
�D@
�E@
�F@j*@
�H
�N
�I@
�J@
�K@
�L@
�M@L�@
�O@
�P@
�Q@
�R@
�S@L�@
�U
�_
�V
�\
�W@
�X@
�Y@
�Z@
�[@M�@
�]@
�^@b�@
�`
�f
�a@
�b@
�c@
�d@
�e@`�@
�g@
�h@N@
�j
��
�k
��
�l
�v
�m
�p
�n@
�o@g4@
�q@
�r@
�s@
�t@
�u@b�@
�w
�}
�x@
�y@
�z@
�{@
�|@d]@
�~@
�@
��@
��@
��@b�@
��
��
��
��
��@
��@
��@
��@
��@M@
��@
��@
��@
��@
��@p�@
��
��
��@
��@
��@
��@
��@L�@
��@
��@
��@
��@
��@`�@
��
��
��
��
��
��
��@
��@
��@
��@
��@L@
��@
��@
��@
��@
��@M@
��
��
��@
��@g4@
��@
��@
��@
��@
��@c�@
��
��
��
��
��@
��@b�@
��@
��@
��@
��@
��@Л@
��
��
��@
��@M�@
��@
��@L@
��
�*
��
��
��
��
��
��
��
��
��@
��@
��@
��@
��@n�@
��@
��@
��@
��@
��@l�@
��
��
��@
��@
��@
��@
��@L@
��@
��@cW@
��
��
��
��
��@
��@N@
��@
��@
��@
��@
��@c�@
��
��
��@
��@
��@
��@
��@b�@
��@
��@
��@
��@
��@N@
��
�
��
�
��
�
�@
�@
�@
�@
�@b�@
�@
�@
�@
�	@
�
@N@
�
�
�
@
�@M@
�@
�@
�@
�@
�@`�@
�
�#
�
�
�@
�@
�@
�@
�@�X@
�@
�@
� @
�!@
�"@b�@
�$
�'
�%@
�&@��@
�(@
�)@N@
�+
�Y
�,
�>
�-
�4
�.
�1
�/@
�0@d@
�2@
�3@N@
�5
�8
�6@
�7@��@
�9@
�:@
�;@
�<@
�=@b�@
�?
�L
�@
�F
�A@
�B@
�C@
�D@
�E@az@
�G@
�H@
�I@
�J@
�K@M�@
�M
�S
�N@
�O@
�P@
�Q@
�R@j�@
�T@
�U@
�V@
�W@
�X@`�@
�Z
�o
�[
�b
�\
�_
�]@
�^@d@
�`@
�a@d@
�c
�i
�d@
�e@
�f@
�g@
�h@b�@
�j@
�k@
�l@
�m@
�n@`�@
�p
�}
�q
�w
�r@
�s@
�t@
�u@
�v@`�@
�x@
�y@
�z@
�{@
�|@b�@
�~
��
�@
��@b�@
��@
��@
��@
��@
��@c�@
��
�J
��
��
��
��
��
��
��
��
��
��
��@
��@b�@
��@
��@
��@
��@
��@az@
��
��
��@
��@
��@
��@
��@d@
��@
��@
��@
��@
��@b�@
��
��
��
��
��@
��@
��@
��@
��@`�@
��@
��@
��@
��@
��@c�@
��
��
��@
��@
��@
��@
��@ak@
��@
��@L�@
��
��
��
��
��
��
��@
��@
��@
��@
��@`�@
��@
��@
��@
��@
��@ak@
��
��
��@
��@
��@
��@
��@L�@
��@
��@
��@M@
��
��
��
��
��@
��@
��@
��@
��@L@
��@
��@
��@
��@
��@L�@
��
��
��@
��@
��@
��@
��@cW@
��@
��@L@
��
�
��
�
��
��
��
��
��@
��@
��@
��@
��@d@
��@
��@l@
��
�
��@
��@
��@
��@
�@� @
�@
�@
�@
�@
�@~�@
�
�
�	
�
�
@
�@
�@
�
@
�@nW@
�@
�@
�@
�@
�@M�@
�
�
�@
�@d@
�@
�@`�@
�
�2
�
�(
�
�"
� @
�!@L�@
�#@
�$@
�%@
�&@
�'@p�@
�)
�/
�*@
�+@
�,@
�-@
�.@N@
�0@
�1@t�@
�3
�@
�4
�:
�5@
�6@
�7@
�8@
�9@b�@
�;@
�<@
�=@
�>@
�?@`�@
�A
�G
�B@
�C@
�D@
�E@
�F@M�@
�H@
�I@M�@
�K
��
�L
��
�M
�b
�N
�X
�O
�U
�P@
�Q@
�R@
�S@
�T@N@
�V@
�W@xv@
�Y
�\
�Z@
�[@M@
�]@
�^@
�_@
�`@
�a@d@
�c
�p
�d
�j
�e@
�f@
�g@
�h@
�i@M�@
�k@
�l@
�m@
�n@
�o@d@
�q
�w
�r@
�s@
�t@
�u@
�v@d@
�x@
�y@
�z@
�{d
�|dd
�}d
�~
�
��d
��d
��
��d
��
��
��m�dm�m�
��m�d
��d
��d
��d
��
��
��m�dm�m�
��m�d
��
��
��
��
��
��
��@
��@
��@
��@
��@q~@
��@
��@cW@
��
��
��@
��@
��@
��@
��@g4@
��@
��@
��@
��@
��@ak@
��
��
��
��
��@
��@b�@
��@
��@
��@
��e�
��e��e�
��
��
��@
��@
��@
��@
��@d@
��@
��@
��@
��@
��@aN@
��
��
��
��
��
��
��
��
��@
��@
��@
��@
��@L�@
��@
��@
��@
��@
��@m;@
��
��
��@
��@aN@
��@
��@
��@
��@
��@b�@
��
��
��
��
��@
��@
��@
��@
��@M@
��@
��@��@
��
��
��@
��@{
@
��@
��@
��@
��@
��@xv@
��
�
��
��
��
��
��@
��@
��@
��@
��@`�@
��@
��@
��@
��@
��@L@
��
�
�@
�@
�@
�@
�@az@
�@
�@b�@
�	
�
�

�

�@
�@{
@
�@
�@
�@
�@
�@c�@
�
�
�@
�@
�@
�@
�@�b@
�@
�@
�@
�@
�@d@
�!
�S
�"
�
�#
��
�$
�R
�%
�=
�&
�3
�'
�-
�(@
�)@
�*@
�+@
�,@M@
�.@
�/@
�0@
�1@
�2@b�@
�4
�7
�5@
�6@li@
�8@
�9@
�:@
�;@
�<@N@
�>
�H
�?
�B
�@@
�A@N@
�C@
�D@
�E@
�F@
�G@b�@
�I
�L
�J@
�K@n�@
�M@
�N@
�O@
�P@
�Q@d@
�S
�n
�T
�a
�U
�[
�V@
�W@
�X@
�Y@
�Z@�@
�\@
�]@
�^@
�_@
�`@M@
�b
�h
�c@
�d@
�e@
�f@
�g@N@
�i@
�j@
�k@
�l@
�m@rX@
�o
��
�p
�v
�q@
�r@
�s@
�t@
�u@d@
�w@
�x@
�y@
�zb�
�{b�
�|b�
�}b�
�~b�
�b�
��b�
��b�
��b�
��b�
��b�
��b�
��b�
��b�
��b�
��b�
��b�
��b�p�d$
��
��
��@
��@
��@
��@
��@|�@
��@
��@
��@
��@
��@L@
��
��
��
��
��
��
��
��
��@
��@
��@
��@b�@
��@
��@d@
��
��
��@
��@
��@
��@
��@b�@
��@
��@L@
��
��
��
��
��@
��@d{@
��@
��@
��@
��@
��@b�@
��
��
��@
��@p�@
��@
��@
��@
��@
��@`�@
��
�
��
��
��
��
��@
��@
��@
��g4
��g4
��g4
��g4
��g4
��g4
��g4
��g4
��g4
��g4g4
��
��g4
��g4
��g4
��g4
��g4
��g4
��g4
��g4
��g4
��g4
��g4
��g4
��g4
��g4
��g4
��g4
��g4
��g4
��g4
��g4
��g4
��g4
��g4c�g4
��@
��@
��@
��@
��@`�@
��
��
��@
��@
��@
��@
��@L@
��@
��@
��@
��@
��@b�@
�
�
�
�
�@
�@
�@
�@
�@`�@
�	@
�
@
�@
�@
�
@`�@
�
�
�@
�@
�@
�@
�@b�@
�@
�@
�@
�@
�@t�@
�
��
�
�N
�
�3
�
�)
� 
�&
�!@
�"@
�#@
�$@
�%@c�@
�'@
�(@M@
�*
�-
�+@
�,@d@
�.@
�/@
�0@
�1@
�2@b�@
�4
�A
�5
�;
�6@
�7@
�8@
�9@
�:@L@
�<@
�=@
�>@
�?@
�@@cW@
�B
�H
�C@
�D@
�E@
�F@
�G@l�@
�I@
�J@
�K@
�L@
�M@b�@
�O
�j
�P
�]
�Q
�W
�R@
�S@
�T@
�U@
�V@nW@
�X@
�Y@
�Z@
�[@
�\@N@
�^
�d
�_@
�`@
�a@
�b@
�c@L@
�e@
�f@
�g@
�h@
�i@M@
�k
�x
�l
�r
�m@
�n@
�o@
�p@
�q@p�@
�s@
�t@
�u@
�v@
�w@b�@
�y
�
�z@
�{@
�|@
�}@
�~@|�@
��@
��@
��@
��@
��@
��@
������
��
��������
��
��
��
��
��
��
��
��
��@
��@
��@
��@
��@m�@
��@
��@
��@
��M
��MM
��
��M
��M
��M
��M
��M
��M
��M
��M
��M
��M
��M
��M
��MM
��
��M
��M
��M
��M
��M
��M
��M
��M
��M
��M
��M
��M
��M
��M
��M
��M
��
��M�oq�M
��
��
��@
��@N@
��@
��@
��@
��@
��@L�@
��
��
��
��
��@
��@
��@
��@
��@d@
��@
��@
��@
��@
��@c�@
��
��
��@
��@
��@
��@
��@b�@
��@
��@
��@
��@
��@L�@
��
�
��
��
��
��
��@
��@
��@
��@
��@?"@
��@
��@
��@
��@
��@M@
��
��
��@
��@d@
��@
��@
��@
��@
��@
��@
��cW
��cW
��
�}cW
��
��
� 
��
�cW
���f$$
�
�cW
�
�cW
�cW
�cWcW
�
�
�
�cW
�	
�
cW����cWcW
�cW
�
cW��
�
�
�cW
�cW
�cWcW
�
�cW
�cW
�
�cWrCrCcW
�cW
�cW
�cWcW
�
�cW
�cW
�cWv�cW
�!
�M
�"
�9
�#
�.
�$cW
�%cW
�&cWcW
�'
�(
�+
�)cW$$
�*$$cWcW
�,cW
�-cW$$
�/cW
�0cW
�1cWcW
�2
�3
�6
�4cW
�5cWcWy�cW
�7cW
�8cWy�
�:
�E
�;cW
�<cW
�=cWcW
�>
�?
�B$$
�@
�AcW$$cWcW
�CcW
�DcW$$
�FcW
�GcW
�HcWcW
�I
�JcW
�KcW
�LcWcWW�
�N
�f
�O
�Z
�PcW
�QcW
�RcWcW
�S
�T
�W
�UcW
�VcWcWv�cW
�XcW
�YcWv�
�[cW
�\cW
�]cWcW
�^
�_
�c
�`
�b
�a��cW����cWcW
�dcW
�ecW��
�g
�r
�hcW
�icW
�jcWcW
�k
�l
�o��
�m
�ncW��cWcW
�pcW
�qcW��
�scW
�tcW
�ucWcW
�v
�w
�z
�xcW
�y�WcW�WcW
�{cW
�|cW�W
�~cW
�
��
€
›cW

‚
Ž
ƒcW
„cW
…cWcW
†
‡
‹
ˆ
Š
‰��cW����cWcW
ŒcW
cW��
cW
cW
‘cWcW
’
“
˜
”
–
•9�cW9�
—cW9�cWcW
™cW
šcW9�
œ
³

¨
žcW
ŸcW
 cWcW
¡
¢
¥
£cW
¤cWcW4PcW
¦cW
§cW4P
©cW
ªcW
«cWcW
¬
­
°
®cW�
¯�cWcW
±cW
²cW�
´
¿
µcW
¶cW
·cWcW
¸
¹
¼$$
º
»cW$$cWcW
½cW
¾cW$$
�cW
�cW
��cWcW
��
��cW
��cW
��cWcW$
��
��
��
��
��
��
��cW
��cW
��cWcW
��
��
��
��
��
���cW��
���cWcW
��cW
��cW�
��cW
��cW
��cWcW
��
��
��
��cW|�
��|�cWcW
��cW
��cW|�cW
��
��cW
��cW
��cWcW
��
��cW
��cW
��)�cW)�
��cW
��cW
��cW
��cW
��cWcW
��
��
�
��cW
���cW�cW
�cW
�cW�
�
�
�
�
�@
�@
�@
�@
�@M�@
�@
�@iM@
�
�

�@
�@
�@
�@
�	@`�@
�@
�@
�
@
�az
�az
�az
�
�D
�
�<
�
�(
�
�
�
�
�
�az
�gCaz
�
�azubazkX
�az
�azazw
�
�&
� 
�#
�!
�"azb�azgQ
�$
�%azgCazv�
�'azwUaz
�)
�4
�*
�1
�+
�.
�,
�-az��azv�
�/
�0az�"azw*
�2az
�3azazv�
�5az
�6
�9
�7
�8az�^az�M
�:
�;azw�azw
�=az
�>az
�?az
�@
�B
�Aazaz�i
�Cazaz�
�Eazaz
�Faz
�Gaz
�H
�Iazaz
�J
�Kaz
�Lazaz
�M
�Nazaz
�Oaz
�Paz
�Qaz
�RgQaz
�T
�
�U
ò
�V
Ç
�W
�o
�X
�b
�Y
�\
�Z@
�[@t�@
�]@
�^@
�_@
�`@
�a@j�@
�c
�i
�d@
�e@
�f@
�g@
�h@g4@
�j@
�k@
�l@
�m@
�n@M�@
�p
�z
�q
�t
�r@
�s@li@
�u@
�v@
�w@
�x@
�y@`�@
�{
Á
�|@
�}@
�~@
�@
À@��@
Â@
Ã@
Ä@
Å@
Æ@b�@
È
à
É
Ö
Ê
Ð
Ë@
Ì@
Í@
Î@
Ï@d@
Ñ@
Ò@
Ó@
Ô@
Õ@xv@
×
Ú
Ø@
Ù@xv@
Û@
Ü@
Ý@
Þ@
ß@M@
á
è
â
å
ã@
ä@xv@
æ@
ç@b�@
é
ï
ê@
ë@
ì@
í@
î@aN@
ð@
ñ@c�@
ó
��
ô
��
õ
��
ö
ü
÷@
ø@
ù@
ú@
û@i�@
ý@
þ@
ÿ@
�@
�@M�@
��
��
��@
��@
��@
��@
��@l�@
��@
��@L�@
��
��
��
��
��@
��@b�@
��@
��@
��@
��@
��@M@
��
��
��@
��@
��@
��@
��@d@
��@
��@
��@
��@
��@b�@
��
�
��
��
��
��
��@
��@
��@
��@
��@M�@
��@
��@
��@
��@
��@L�@
��
�
�@
�@
�@
�@
�@`�@
�@
�@
�@
�@
�@L@
�
�
�
�
�@
�@b�@
�@
�@
�@
�	@
�
@t�@
�
�
�
@
�@
�@
�@
�@q~@
�@
�@e�@
�
Ă
�
�E
�
�0
�
�&
�
� 
�@
�@
�@
�@
�@n�@
�!@
�"@
�#@
�$@
�%@c�@
�'
�*
�(@
�)@xv@
�+@
�,@
�-@
�.@
�/@d]@
�1
�;
�2
�5
�3@
�4@A@
�6@
�7@
�8@
�9@
�:@e�@
�<
�?
�=@
�>@M@
�@@
�A@
�B@
�C@
�D@L�@
�F
�[
�G
�Q
�H
�K
�I@
�J@g4@
�L@
�M@
�N@
�O@
�P@g4@
�R
�X
�S@
�T@
�U@
�V@
�W@l@
�Y@
�Z@��@
�\
�f
�]
�c
�^@
�_@
�`@
�a@
�b@M@
�d@
�e@N@
�g
�m
�h@
�i@
�j@
�k@
�l@aN@
�n@
�o@
�p@`�
�q`�
�r
�s`�
�t`�
�u`�
�v`�
�w`�
�x`�
�y`�
�z`�
�{`�
�|`�
�}`�
�~`�
�`�
Ā`�
ā`�i�`�
ă
ı
Ą
ę
ą
ď
Ć
ĉ
ć@
Ĉ@N@
Ċ@
ċ@
Č@
č@
Ď@{
@
Đ
ē
đ@
Ē@d@
Ĕ@
ĕ@
Ė@
ė@
Ę@L�@
Ě
ħ
ě
ġ
Ĝ@
ĝ@
Ğ@
ğ@
Ġ@`�@
Ģ@
ģ@
Ĥ@
ĥ@
Ħ@d@
Ĩ
ī
ĩ@
Ī@nW@
Ĭ@
ĭ@
Į@
į@
İ@��@
IJ
��
ij
�
Ĵ
ĺ
ĵ@
Ķ@
ķ@
ĸ@
Ĺ@b�@
Ļ@
ļ@
Ľ@
ľ@
Ŀ@M@
�
��
��@
��@
��@
��@
��@L�@
��@
��@
��@
��@
��@b�@
��
��
��
��
��@
��@
��@
��@
��@M@
��@
��@
��@
��@
��@`�@
��
��
��@
��@`�@
��@
��@
��@
��@
��@d@
��Be
��
�
��
�
��
ɇ
��
�0
��
��
��
�n
��
�,
��
�

��
�
��
�
��
��
��@
��@d@
�@
�@g4@
�
�
�@
�@c�@
�@
�@c�@
�
�
�
�
�@
�@d{@
�@
�@g4@
�
�

�@
�	@L�@
�@
�@N@
�
�
�
�
�
�
�@
�@M@
�@
�@p�@
�
�
�@
�@b�@
�@
�@b�@
�
�%
�
�"
� @
�!@L@
�#@
�$@xv@
�&
�)
�'@
�(@g4@
�*@
�+@M@
�-
�O
�.
�=
�/
�6
�0
�3
�1@
�2@c�@
�4@
�5@c�@
�7
�:
�8@
�9@az@
�;@
�<@c�@
�>
�E
�?
�B
�@@
�A@cW@
�C@
�D@b�@
�F
�I
�G@
�H@d@
�J
�M
�K@
�L@b�@
�N@L�@
�P
�_
�Q
�X
�R
�U
�S@
�T@N@
�V@
�W@�g@
�Y
�\
�Z@
�[@p�@
�]@
�^@d@
�`
�g
�a
�d
�b@
�c@b�@
�e@
�f@`�@
�h
�k
�i@
�j@M�@
�l@
�m@c�@
�o
Ů
�p
ŏ
�q
ŀ
�r
�y
�s
�v
�t@
�u@L�@
�w@
�x@M@
�z
�}
�{@
�|@d@
�~@
�@b�@
Ł
ň
ł
Ņ
Ń@
ń@�,@
ņ@
Ň@K�@
ʼn
Ō
Ŋ@
ŋ@nW@
ō@
Ŏ@d@
Ő
ş
ő
Ř
Œ
ŕ
œ@
Ŕ@L�@
Ŗ@
ŗ@d@
ř
Ŝ
Ś@
ś@L�@
ŝ@
Ş@M@
Š
ŧ
š
Ť
Ţ@
ţ@i�@
ť@
Ŧ@az@
Ũ
ū
ũ@
Ū@g_@
Ŭ@
ŭ@nW@
ů
��
Ű
ſ
ű
Ÿ
Ų
ŵ
ų@
Ŵ@M@
Ŷ@
ŷ@cW@
Ź
ż
ź@
Ż@L@
Ž@
ž@cW@
�
��
�
��
��@
��@`�@
��@
��@`�@
��
��
��@
��@b�@
��@
��@b�@
��
��
��
��
��
��
��@
��@az@
��@
��@L�@
��
��
��@
��@L@
��@
��@M@
��
��
��
��
��@
��@cW@
��@
��@M�@
��
��
��@
��@g4@
��@
��@c�@
��
ƪ
��
�k
��
�L
��
�
��
�
��
�
��@
�@M@
�@
�@nW@
�
�
�@
�@iM@
�@
�@c�@
�
�E
�
�:
�
�
�@
�@c�@
�@
�@
�	@az
�
az
�
�
�
�
az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�azaz
�
�az
�azv�azaz
�az
�az
�az
�az
� az
�!az
�"
�#az
�$az
�%az
�&az
�'az
�(az
�)az
�*az
�+az
�,az
�-az
�.az
�/az
�0az
�1az
�2az
�3az
�4az
�5az
�6az
�7az
�8az
�9azv�az
�;
�>
�<@
�=@M@
�?
�B
�@@
�A@b�@
�C@
�D@L�@
�F
�I
�G@
�H@`�@
�J@
�K@�@
�M
�\
�N
�U
�O
�R
�P@
�Q@c�@
�S@
�T@`�@
�V
�Y
�W@
�X@L�@
�Z@
�[@l@
�]
�d
�^
�a
�_@
�`@M@
�b@
�c@d@
�e
�h
�f@
�g@iM@
�i@
�j@M@
�l
Ƌ
�m
�|
�n
�u
�o
�r
�p@
�q@iM@
�s@
�t@d@
�v
�y
�w@
�x@e�@
�z@
�{@c�@
�}
Ƅ
�~
Ɓ
�@
ƀ@L�@
Ƃ@
ƃ@`�@
ƅ
ƈ
Ɔ@
Ƈ@xv@
Ɖ@
Ɗ@M@
ƌ
ƛ
ƍ
Ɣ
Ǝ
Ƒ
Ə@
Ɛ@d@
ƒ@
Ɠ@M@
ƕ
Ƙ
Ɩ@
Ɨ@t�@
ƙ@
ƚ@N@
Ɯ
ƣ
Ɲ
Ơ
ƞ@
Ɵ@M@
ơ@
Ƣ@d{@
Ƥ
Ƨ
ƥ@
Ʀ@M@
ƨ@
Ʃ@b�@
ƫ
��
Ƭ
��
ƭ
Ƽ
Ʈ
Ƶ
Ư
Ʋ
ư@
Ʊ@d{@
Ƴ@
ƴ@M@
ƶ
ƹ
Ʒ@
Ƹ@c�@
ƺ@
ƻ@N@
ƽ
��
ƾ
�
ƿ@
�@iM@
��@
��@L�@
��
��
��@
��@M@
��@
��@K�@
��
��
��
��
��
��
��@
��@M�@
��@
��@d{@
��
��
��@
��@`�@
��@
��@d@
��
��
��
��
��@
��@N@
��@
��@M�@
��
��
��@
��@
��@
��@
��@��@
��@
��@m�@
��
�

��
�
��
�
��
��
��@
��@L�@
�@
�@d@
�
�
�@
�@c�@
�@
�@N@
�
�
�
�
�@
�@d{@
�@
�@cW@
�
�

�@
�	@`�@
�@
�@{
@
�
�
�
�
�
�
�@
�@L�@
�@
�@d@
�
�
�@
�@M@
�@
�@L@
�
�)
�
�&
� 
�#
�!@
�"@b�@
�$@
�%@b�@
�'@
�(@L�@
�*
�-
�+@
�,@N@
�.@
�/@L�@
�1
�-
�2
ǥ
�3
�r
�4
�S
�5
�D
�6
�=
�7
�:
�8@
�9@L�@
�;@
�<@l@
�>
�A
�?@
�@@`�@
�B@
�C@N@
�E
�L
�F
�I
�G@
�H@d@
�J@
�K@M@
�M
�P
�N@
�O@li@
�Q@
�R@M@
�T
�c
�U
�\
�V
�Y
�W@
�X@d@
�Z@
�[@b�@
�]
�`
�^@
�_@A@
�a@
�b@`�@
�d
�k
�e
�h
�f@
�g@M�@
�i@
�j@M@
�l
�o
�m@
�n@q~@
�p@
�q@`�@
�s
dž
�t
�w
�u@
�v@l@
�x
�
�y
�|
�z@
�{@L�@
�}@
�~@c�@
ǀ
ǃ
ǁ@
ǂ@c�@
DŽ@
Dž@p�@
LJ
ǖ
Lj
Ǐ
lj
nj
NJ@
Nj@JL@
Ǎ@
ǎ@`�@
ǐ
Ǔ
Ǒ@
ǒ@iM@
ǔ@
Ǖ@L�@
Ǘ
Ǟ
ǘ
Ǜ
Ǚ@
ǚ@`�@
ǜ@
ǝ@nW@
ǟ
Ǣ
Ǡ@
ǡ@b�@
ǣ@
Ǥ@�b@
Ǧ
��
ǧ
��
Ǩ
�
ǩ
ǰ
Ǫ
ǭ
ǫ@
Ǭ@M�@
Ǯ@
ǯ@M@
DZ
ǽ
Dz
ǵ
dz@
Ǵ@M@
Ƕ
Ǻ
Ƿ@
Ǹ@
ǹ@`�@
ǻ@
Ǽ@nW@
Ǿ@
ǿ@az@
�
��
��
��
��@
��@d@
��@
��@b�@
��
��
��@
��@b�@
��@
��@d@
��
��
��
��
��
��
��@
��@M@
��@
��@xv@
��
��
��@
��@L�@
��@
��@M@
��
��
��
��
��@
��@M@
��@
��@c�@
��
��
��@
��@l@
��@
��@b�@
��
�
��
�
��
�
��
�
��@
��@d{@
�@
�@L@
�
�
�@
�@b�@
�@
�@b�@
�
�
�
�
�@
�@f@
�@
�@iM@
�
�
�	@
�
@iM@
�@
�
@b�@
�
�
�
�
�
�
�@
�@i�@
�@
�@{
@
�
�
�@
�@Л@
�@
�@�@
�
�&
� 
�#
�!@
�"@iM@
�$@
�%@M@
�'
�*
�(@
�)@d@
�+@
�,@b�@
�.
��
�/
ȁ
�0
�b
�1
�S
�2
�9
�3
�6
�4@
�5@g4@
�7@
�8@t�@
�:
�=
�;@
�<@�b@
�>@
�?@
�@@
�ANN
�BN
�C
�DN
�EN
�FN
�GN
�HN
�IN
�JN
�KN
�LN
�MN
�NN
�ON
�PN
�QN
�RNQ�N
�T
�[
�U
�X
�V@
�W@aN@
�Y@
�Z@c�@
�\
�_
�]@
�^@g4@
�`@
�a@N@
�c
�r
�d
�k
�e
�h
�f@
�g@d@
�i@
�j@L@
�l
�o
�m@
�n@`�@
�p@
�q@b�@
�s
�z
�t
�w
�u@
�v@L@
�x@
�y@l�@
�{
�~
�|@
�}@N@
�@
Ȁ@N@
Ȃ
��
ȃ
Ȓ
Ȅ
ȋ
ȅ
Ȉ
Ȇ@
ȇ@c�@
ȉ@
Ȋ@M@
Ȍ
ȏ
ȍ@
Ȏ@`�@
Ȑ@
ȑ@b�@
ȓ
�
Ȕ
ȗ
ȕ@
Ȗ@i�@
Ș@
ș@
Ț@
ț
Ⱦ
Ȝ
Ƚp�
ȝ
Ȟp�
ȟp�
Ƞp�p�
ȡ
Ȣp�
ȣp�
Ȥp�
ȥp�
Ȧp�
ȧp�
Ȩp�
ȩp�
Ȫp�
ȫp�
Ȭp�
ȭp�
Ȯp�
ȯp�
Ȱp�
ȱp�
Ȳp�p�
ȳ
ȴp�p�
ȵ
ȶp�
ȷp�
ȸp�
ȹp�
Ⱥp�
Ȼp�
ȼp��}p�{���p�
ȿ�
p�
�
��
��@
��@aN@
��@
��@i�@
��
��
��
��
��
��
��@
��@b�@
��@
��@N@
��
��
��@
��@cW@
��@
��@M@
��
��
��
��
��@
��@g_@
��@
��@L�@
��
��
��@
��@d@
��@
��@az@
��
�0
��
�
��
�
��
��
��
��
��@
��@b�@
��@
��@lx@
��
�
��@
��@
�@c�@
�@
�@d]@
�
�
�
�
�@
�@d@
�@
�@cW@
�
�
�@
�@L�@
�@
�@`�@
�	
�!
�

�
�
�
�@
�
@L�@
�
�
�
�
�@
�@
�@L@
�@
�@M�@
�@
�@M@
�
�
�@
�@ku@
�@
� @c�@
�"
�)
�#
�&
�$@
�%@ku@
�'@
�(@d@
�*
�-
�+@
�,@d@
�.@
�/@M@
�1
�P
�2
�A
�3
�:
�4
�7
�5@
�6@N@
�8@
�9@b�@
�;
�>
�<@
�=@c�@
�?@
�@@b�@
�B
�I
�C
�F
�D@
�E@`�@
�G@
�H@c�@
�J
�M
�K@
�L@L�@
�N@
�O@c�@
�Q
�`
�R
�Y
�S
�V
�T@
�U@t�@
�W@
�X@g4@
�Z
�]
�[@
�\@c�@
�^@
�_@c�@
�a
�h
�b
�e
�c@
�d@aN@
�f@
�g@`�@
�i
Ʉ
�j@
�k@
�l@
�maNaN
�naN
�o
�paN
�qaN
�raN
�saN
�taN
�uaN
�vaN
�waN
�xaNaN
�y
�zaN
�{aN
�|
Ɂ
�}
�
�~aNaN��
ɀaN۱aN
ɂaN
ɃaNaN�W
Ʌ@
Ɇ@M@
Ɉ
�
ɉ
�u
Ɋ
�
ɋ
��
Ɍ
ɫ
ɍ
ɜ
Ɏ
ɕ
ɏ
ɒ
ɐ@
ɑ@c�@
ɓ@
ɔ@M@
ɖ
ə
ɗ@
ɘ@c�@
ɚ@
ɛ@p�@
ɝ
ɤ
ɞ
ɡ
ɟ@
ɠ@M@
ɢ@
ɣ@b�@
ɥ
ɨ
ɦ@
ɧ@b�@
ɩ@
ɪ@L@
ɬ
ɻ
ɭ
ɴ
ɮ
ɱ
ɯ@
ɰ@N@
ɲ@
ɳ@M�@
ɵ
ɸ
ɶ@
ɷ@c�@
ɹ@
ɺ@d{@
ɼ
��
ɽ
�
ɾ@
ɿ@M@
�@
��@N@
��
��
��@
��@nW@
��@
��@ak@
��
��
��
��
��
��
��
��
��@
��@g_@
��@
��@M@
��
��
��@
��@
��@
��@
��@g_@
��@
��@d@
��
��
��
��
��@
��@`�@
��@
��@d@
��
��
��@
��@d@
��@
��@nW@
��
�
��
�
��
��
��@
��@M@
��@
�@L�@
�
�
�@
�@d@
�@
�@L�@
�
�	
�
�
�
�
�@
�@c�@
�@
�@g_@
�@
�@c�@
�

�

�@
�@|�@
�@
�@M@
�
�P
�
�1
�
�"
�
�
�
�
�@
�@N@
�@
�@az@
�
�
�@
�@xv@
� @
�!@��@
�#
�*
�$
�'
�%@
�&@nW@
�(@
�)@nW@
�+
�.
�,@
�-@b�@
�/@
�0@�b@
�2
�A
�3
�:
�4
�7
�5@
�6@b�@
�8@
�9@M@
�;
�>
�<@
�=@p�@
�?@
�@@xv@
�B
�I
�C
�F
�D@
�E@d@
�G@
�H@N@
�J
�M
�K@
�L@��@
�N@
�O@`�@
�Q
�p
�R
�a
�S
�Z
�T
�W
�U@
�V@cW@
�X@
�Y@d{@
�[
�^
�\@
�]@`�@
�_@
�`@d@
�b
�i
�c
�f
�d@
�e@b�@
�g@
�h@xv@
�j
�m
�k@
�l@M�@
�n@
�o@c�@
�q
�b
�r
�[
�s
�v
�t@
�u@m�@
�w@
�x@
�y@
�zaz
�{
�J
�|
ʌ
�}az
�~az
�azaz
ʀaz
ʁ
ʂazaz
ʃ
ʄaz
ʅaz
ʆaz
ʇaz
ʈaz
ʉaz
ʊaz
ʋazw�az
ʍaz
ʎ
�a
ʏaz
ʐaz
ʑaz
ʒaz
ʓaz
ʔaz
ʕaz
ʖ
�

ʗ
϶
ʘ
̳
ʙ
�E
ʚ
��az
ʛ
ʜ
��
ʝaz
ʞaz
ʟaz
ʠ
ʼ
ʡaz
ʢaz
ʣaz
ʤ
ʳ
ʥaz
ʦaz
ʧaz
ʨaz
ʩ
ʰ
ʪ
ʭ
ʫ
ʬaz��Q��
ʮ
ʯ����
ʱaz
ʲaz�
ʴaz
ʵaz
ʶaz
ʷazaz
ʸaz
ʹ
ʺ
ʻazRF�az
ʽ
��
ʾ
�
ʿ
�az��Q��
��
����RF
��az
��az�az
��az
��az
��az
��
��
��az
��az
��az
��az
��az
��az
��az
��az
��
��
��
��
��
��az�����
��
��R�����
��
��
��
��������
��az�az
��
��
��
��
��
��az�����
��
��R������
��az
��
�������
��
�"az
��
��az
��az
��az
��
�
��az
�az
�az
�
�
�az
�az
�az
�
�
�
�
�
�
�
�azT�F�j�
�
��&
��4�
�
����F�
�az
�	azb
�
��az
�az
�
az
�azaz
�
�azaz
�az
�DS
�
�
�
�
�
�azT�F�
�
�j��&�4
�
�
�
����F�
� 
�!b��DSaz
�#
�$az
�%az
�&az
�'
�=
�(az
�)az
�*az
�+
�5
�,az
�-az
�.az
�/az
�0az
�1
�3
�2�az��
�4�az
�6az
�7az
�8az
�9azaz
�:
�;azaz
�<RFS
�>az
�?
�B
�@
�Aaz���
�C
�D�RFSaz
�F
��
�G
ˎ
�H
�j
�Iaz
�Jaz
�Kaz
�L
�_
�Maz
�Naz
�Oaz
�Paz
�Qaz
�Raz
�Saz
�Taz
�U
�\
�V
�Y
�W
�Xaz����S	
�Z
�[��o��
�]az
�^az����
�`
�g
�a
�d
�b
�caz��S	�
�e
�f�o����
�haz
�iaz��az
�kaz
�laz
�maz
�n
ˆ
�oaz
�paz
�qaz
�r
�~
�saz
�taz
�uaz
�vaz
�waz
�x
�{
�y
�zaz��Q��
�|
�}SC�az
�az
ˀaz
ˁaz
˂azaz
˃
˄azaz
˅�az
ˇaz
ˈ
ˋ
ˉ
ˊaz��Q��
ˌ
ˍSC��
ˏ
˳
ːaz
ˑaz
˒az
˓
˫
˔az
˕az
˖az
˗
ˣ
˘az
˙az
˚az
˛az
˜az
˝
ˠ
˞
˟az��Q��
ˡ
ˢSC�az
ˤaz
˥az
˦az
˧azaz
˨
˩azaz
˪�az
ˬaz
˭
˰
ˮ
˯az��Q��
˱
˲SC��
˴az
˵az
˶az
˷
��
˸az
˹az
˺az
˻az
˼az
˽az
˾az
˿az
�
��
�w�
��w�azS	
��az
��azw�az
��az
��az
��
��azS	w�az
��
��
��az
��az
��az
��az
��
��
��az
��az
��az
��az
��az
��az
��az
��
��
��
��
��v�
���
az�
��
��
��
���������w�wwq
��az
��az
��azwqaz
��
��
��
��
��
��az��
v�
��
���������w
��az
��azwqaz
��
�!
��az
��az
�az
�
�
�az
�az
�az
�az
�az
�az
�az
�
�
�
�
�
�
�
�az��S	w
�u�wu�
�
��Z
���
�	
�
�����
�az
�

�
�
���t�t��s
�az��az
�
�
�
�
�
�az��S	w
�
�u��Z��
�
�
�
�������
�
� t��s��az
�"
̤
�#
̞
�$
�
�%
�p
�&u�
�'u�
�(u�
�)u�
�*u�
�+
�V
�,
�>
�-
�:
�.
�4
�/
�1
�0���y�
�2
�3�����
�5
�8
�6
�7����R�w
�9u�wu�u�
�;u�
�<u�
�=u��Z
�?
�J
�@
�F
�A
�D
�B
�C�Z�o�j�
�E�����
�Gv�
�H
�I��
�
�
�K
�P
�L
�N
�M����
�O�W��
�Q
�S
�R���1��
�T
�U��S���w8
�Wu�
�X
�e
�Y
�_
�Z
�]
�[
�\w8t�t��9�w
�^�w�W
�`
�c
�a
�b�e�s�>
�d���>��
�f
�l
�g
�j
�h
�i������wqwq
�kS��
�mu�
�n
�o��	Su�
�q
�x
�r
�u
�s
�t�y����
�v
�w�������
�y
�|
�z
�{R�wu�u�
�}
�~�Z�o�j�
̀
̏
́
̈
̂
̅
̃
̄����
�
̆
̇v�����
̉
̌
̊
̋W����1
̍
̎��S���w8
̐
̗
̑
̔
̒
̓t��9�w�W
̕
̖�e�s�>
̘
̛
̙
̚������wq
̜
̝S����	
̟u�
̠u�
̡u�
̢u�
̣u�Su�u�
̥u�
̦u�
̧u�
̨u�
̩u�
̪u�
̫u�
̬u�
̭u�
̮u�
̯u�
̰u�
̱u�
̲u�t�
̴
�"
̵
�.
̶
͍
̷
�
̸
�
̹gC
̺
�
̻
��
̼gC
̽gQ
̾gQ
̿gQ
�gQ
�gQ
��
��
��
��
��
��
��
��v�
��v�J
��
��Jw�w���
��
��
��w*��w*up
��TC�;
��
��
��
��
��
��T%v�v��
��
���}������
��
���
�����
��
���gQgQ�
��
��
��
��
��wU
��
�����wUwU
��wU
������
��
��
��
��
��w��ww
��w�	
��gQ
��gQ�gQ
��
�
��
��
��
��v�Jw���
�
�w*upTC�;
�
�
�
�T%v���}
�
��������
�gC
�
�
�
�
�
��gQ��
�
�wU������
�gC
�	
�
w�	�gCgC
�gC
�
gC
�gC
�gC
�gC
�gC
�gC
�gC
�gC
�gC
�gC
�gC
�gC
�gCgQ
�gC
�gC
�
�n
�
�_
�gC
� gC
�!gC
�"gC
�#gC
�$
�9
�%
�1
�&gC
�'
�.
�(
�+
�)
�*����S�
�,
�-�����SQ
�/gCX
�0��gC
�2gC
�3
�4
�7
�5
�65
�8���B��
�:
�V
�;
�I
�<
�C
�=
�@
�>
�?�v�v�"�
�A
�BTz���1
�D
�F��
�E�}��
�G
�HTeJ�
�J
�P
�K
�N
�L
�MJ���
�O��W
�Q
�S�
�RS���
�T
�U8��J�
�WgC
�XgC
�Y
�\
�Z
�[-TJ�S�
�]
�^v�R7J��	
�`
�g
�a
�d
�b
�c���S��
�e
�f����SQX
�h
�k
�i
�j��gC
�l
�m5�B��
�o
�~
�p
�w
�q
�t
�r
�s�v�"�Tz
�u
�v��1���}
�x
�{
�y
�z��Te
�|
�}J���
�
͆
̀
̓
́
͂W�S���
̈́
ͅ8��J�
͇
͊
͈
͉-TJ�S�
͋
͌v�R7J��	
͎
��
͏kX
͐kX
͑
��
͒
��
͓kX
͔kX
͕kX
͖kX
͗kX
͘
ͽ
͙
ͤ
͚
͟
͛b�
͜
͞v�
͝v�T4upb�
͠kXb�
͡
͢
ͣ���;wFV�
ͥ
ͯ
ͦ
ͫ
ͧ
ͩkX
ͨkX�&
ͪv�S4p
ͬ
ͭv��0��
ͮ�j~
Ͱ
Ͷ
ͱ
ʹ
Ͳ
ͳ~��S���
͵����
ͷ
ͺ
͸
͹�e��
ͻ
ͼ�w8w8��
;kX
ͿkX
�
��
�
��
��
��?US���,
���
��kX
��kX��kX
��
��
��
��
��
��v�T4upb�
��
�����;wFV�
��
��
��
��kX�&S4p
��
��v��0���j
��
��
��
��
��
��
��
��~�S���
��
�����e�
��
��
��
���w8��
��
��?US���,
��kX
��kX
��
�����kX
��kX
��kX
��
�%
��
�
��kX
��kX
��kX
�kX
�kX
�kX
�
�	
�
�
�
�
�
�
�w*�yw*
�wT4��wkX
�
�kX
�kX
�kXT%
�
�
�
�F�S45�v�
�
kX
�
�
�
�
�
v�v�"�v�~
�
�
�
�S���?U
�
�T�s��kX
�
�
�
�
�
��yw*T4��
�
�wkXT%F�
�
�"
� 
�!S45�
�#
�$v�"�v�~
�&kX
�'kX
�(
�+
�)
�*S���?U
�,
�-T�s��kX
�/
Λ
�0gC
�1gC
�2gC
�3
΃
�4
�t
�5gC
�6gC
�7gC
�8gC
�9gC
�:
�R
�;
�M
�<
�I
�=
�C
�>
�@
�?w*���"
�A
�Bw*)S��
�D
�G
�E
�F��XXTC
�Hw�w
�JgC
�KgCw
�LwgCgC
�NgC
�OgC
�PgC
�QgC�&
�S
�o
�T
�a
�U
�\
�V
�Y
�W
�XTz���1
�Z
�[�}��TJ�
�]
�`
�^
�_J��J���
�b
�h
�c
�e�
�dS���
�f
�g8S�J�
�i
�l
�j
�k-TJ���
�m
�nv�R7J��	
�pgC
�qgC
�rgC
�sgCb�gC
�u
�|
�v
�y
�w
�x���"w*)
�z
�{S����X
�}
΀
�~
�TC�wgC
΁
΂�&Tz��1
΄
Γ
΅
Ό
Ά
Ή
·
Έ�}��TJ�
Ί
΋�J��
΍
ΐ
Ύ
Ώ�S���
Α
Β8S�J�-
ΔgC
Ε
Θ
Ζ
ΗTJ���v�
Ι
ΚR7J��	b�
Μ
�
Νaz
Ξaz
Ο
��
Π
��
Ρaz
΢az
Σaz
Τ
��
Υaz
Φaz
Χ
��
Ψ
ζ
Ω
ΰ
Ϊ
έ
Ϋ
άazT��L�
ή
������
α
δ
β
γ�F�w�����
�az
η
ν
θ
λ
ι
������
μ�F�
ξ
�&
�
���4SC�
��
��
��
��
��
��
��
������
��
�������

��
��
��
���
�����
��b�F�
��az
��
��
��
����>�>�
�����
��azaz
��
��az
��az
��az
��
��
��
��azRF�D
��azSaz
��
��
��
��
��
��azT��L�
��
��������
��
��
��
��F�w���az
��
�������
��
�
��
�
�
�
�
�F���&�
�
��4SC��
�
�
�
������
�
���
���
�
�

�
�
�
�F�b��>
�
�	����
�az
�
�
RF�DS
�az
�az
�az
�
�
�az
�az
�az
�az
�az
�az
�az
�az
�az
�w�
�w�azw�
�az
� az
�!azazw�
�#
ς
�$
�?
�%az
�&az
�'az
�(az
�)
�8
�*az
�+az
�,az
�-az
�.az
�/az
�0az
�1az
�2az
�3
�6
�4
�5azQ����
�7az��
�9az
�:
�=
�;
�<azQ����
�>az��
�@az
�AgC
�BgC
�C
�y
�D
�j
�EgC
�FgC
�GgC
�HgC
�IgC
�J
�`
�K
�R
�LgC
�MgC
�N
�P
�OXS�SQ
�QgCV��gC
�S
�T
�Z
�U
�WgC
�V
�X
�Y5�B�
�[
�]
�\�"�Tz
�^
�_�1����S�
�agC
�bgC
�cgC
�d
�g
�e
�fJ���8
�h
�i��	b�gC
�k
�r
�l
�o
�m
�nS�SQXV�
�p
�q�gC
�s
�v
�t
�u5�B�"�
�w
�xTz��1��
�zgC
�{gC
�|
�
�}
�~S�J��8
π
ρ��	b�gCaz
σ
τ
ϕ
υj
φj
χj
ψ
ϑ
ωj
ϊj
ϋj
όjaz
ύ
ώj
Ϗjaz
ϐazj
ϒj
ϓj
ϔjazj
ϖj
ϗj
Ϙj
ϙ
Ϯ
Ϛj
ϛj
Ϝj
ϝj
Ϟj
ϟj
Ϡj
ϡj
Ϣ
Ϩ
ϣ
ϥw�
Ϥ�j
Ϧ
ϧj�����
ϩ
Ϭ
Ϫ
ϫ�bb�
ϭj�j
ϯj
ϰ
ϳ
ϱ
ϲw��j��
ϴ
ϵ�b�j
Ϸ
ф
ϸ
��
Ϲ
Є
Ϻ
�'
ϻ
�
ϼaz
Ͻaz
Ͼ
��
Ͽ
��
�az
�az
��az
��az
��az
��az
��
��
��
��
��
��
��
��Jw�
��
��<�i�i�M�M
���"a�
��
��
��
���az
��
�������?
��
��
��
��RT�?�?�
��
��������-
��az
��az
��
��
���^�-�^
��az�^az
��
��
��
��
��
��Jw�<�i
��
���M�"a��
��
��
��
������?RT
��
���?����-
��az
��az
�az
�az�^az
�az
�az
�az
�
�
�az
�az
�az
�az
�az
�az
�
�
�
�

�
�
��"
�
�T�y���"
�	wc�"�
�
�
�
�
�
�[����w�
�{�w�
�w�{�
�az{�
�
�
�
�ub{�ub
�azub�W
�
�!
�
�
�
�T�y���"
�
� �wc���
�"
�%
�#
�$�[�w�{�
�&azub�W
�(
�h
�)az
�*az
�+
�`
�,
�Q
�-az
�.w
�/w
�0w
�1w
�2w
�3
�L
�4
�@
�5
�<
�6
�9
�7
�8���"T4��
�:
�;TC��;ww
�=
�>
�?w�&
�A
�G
�B
�E
�C
�DS4�B�����
�Fe
�H
�J
�I�J�J��
�K?UJ�
�Mw
�Nw
�Ow
�Pw��w
�R
�Y
�S
�V
�T
�U���"T4��
�W
�XTC��;w
�Z
�]
�[
�\�&S4�B
�^
�_���e
�aaz
�baz
�c
�f
�d
�eJ�J��?U
�gazJ���
�iaz
�jaz
�kaz
�l
�}
�maz
�naz
�oaz
�paz
�qaz
�raz
�saz
�taz
�u
�z
�v
�x
�w��azL�
�y�
���
�{az
�|azF�az
�~az
�
Ђ
Ѐ
ЁazL����
Ѓaz�
F�az
Ѕ
І
а
Їv�
Јv�
Љv�
Њ
Ф
Ћv�
Ќv�
Ѝv�
Ўv�
Џv�
Аv�
Бv�
В
Н
Г
И
Д
Ж
Еw<ww
ЗwFv�
Й
Лv�
Кv���
����
Оv�
П
Т
Р
��,�,�^�^
У�^
Х
Ь
Ц
Щ
Ч
Ш<wwFv�
Ъ
������
Эv�
Ю
��,�^
бv�
вv�
гv�
д
��
еv�
жv�
зv�
иv�
йv�
кv�
лv�
м
��
н
��
о
�
п
���K��R�
��
���ww�Z
��
��
��v��Zv�
���
v��j
��
��
��
���
���1t�
���wt��w
��
����
����wqwqv�
��
��
��
��
��
����K��R�
��
���w�Zv�
��
��
��
���j�
��1
��
��t��w��wq
��
�j
��
�
��
�
��v�
��v�
��v�
��
�
��v�
��v�
��v�
��v�
��v�
��v�
��v�
��v�
��v�
��v�
��v�v�
�v�
�v�
�v�v�
�v�
�v�
�v�
�
�
�v�
�v�
�v�
�v�
�v�
�v�
�v�
�
�
�v�
�
�	
�u���K
�
v�u�v�
�
�
�
v�v�
�v�3

�v�
�v��1v�
�v�
�
�
�
���Ku�v�
�
�3
v��1v�
�
�F
�m
�m
�m
�
�8
� m
�!m
�"m
�#m
�$m
�%m
�&m
�'
�4
�(
�.
�)
�,
�*
�+������W
�-t���t�
�/
�1t�
�0����
�2
�3�e��S�
�5m
�6m
�7m�m
�9
�@
�:
�=
�;
�<������W
�>
�?��t�����
�A
�D
�B
�C�e��S�
�Em�m
�Gm
�Hm
�Im
�J
�b
�Km
�Lm
�Mm
�Nm
�Om
�Pm
�Qm
�R
�_
�S
�Y
�T
�Vw�
�U�j
�W
�Xj�����
�Z
�]
�[
�\�bb�
�^j�jj
�`
�amjm
�cm
�d
�g
�e
�fw��j��
�h
�i�b�jaz
�k
�laz
�maz
�naz
�oaz
�p
�
�qaz
�raz
�saz
�taz
�uaz
�vaz
�w
�|
�xv�
�yv�
�zv�
�{v��4
�}az
�~azv�az
рaz
сaz
т
у�4v�az
х
�d
ц
�
ч
��
ш
ѷ
щ
Ѩ
ъaz
ыaz
ь
ѡ
эaz
юaz
яaz
ѐaz
ёaz
ђaz
ѓaz
є
ћ
ѕ
ј
іv�
їv��Kv�v�
љv�
њv�v�
ќaz
ѝ
џv�
ўv�3
��
Ѡ��az
Ѣaz
ѣ
Ѧ
Ѥ
ѥ�Kv�v�3

ѧaz��azaz
ѩaz
Ѫaz
ѫaz
Ѭaz
ѭaz
Ѯaz
ѯaz
Ѱaz
ѱaz
Ѳaz
ѳaz
Ѵaz
ѵaz
Ѷazv�
Ѹaz
ѹaz
Ѻaz
ѻ
��
Ѽaz
ѽaz
Ѿaz
ѿaz
�az
�az
��az
��
��
��u�
��u���u�
��az
��
��
���u�J�
��
��S���az
��az
��
��
��
����u�J��
��
��S��
��
��
��
��
��u�
��u���u�u�
��u�
��u��
��az
��az
��az�az
��az
��az
��az
��
�
��
�
��az
��az
��az
��az
��az
��az
��az
��
�
��
�
��
��
��
���")���
��
��SQ��TJ�
�
�
�
�J����
�
�S���-J�
�az
�az
�
�S�v�R7J�
�
�	
�
�
�
��")���
�
�SQ��TJ�
�

�

�
����S�
�
���-J�S�
�az
�az
�az
�
�v�R7J�az
�
�N
�
�6
�az
�az
�az
�
�/
�az
�az
�az
� az
�!az
�"az
�#az
�$
�,
�%
�(�"
�&�"
�'�"�
�)
�+
�*w��4w�w�ub
�-az
�.azubaz
�0az
�1
�4
�2
�3�"��4w�
�5azubaz
�7az
�8az
�9az
�:
�I
�;az
�<az
�=az
�>az
�?az
�@az
�Aaz
�B
�Ev�
�Cv�
�Dv�v�
�Faz
�Gazv�
�H3
az
�Jaz
�Kaz
�L
�Mv�v�3
az
�Oaz
�Paz
�Qaz
�Raz
�S
�_
�Taz
�Uaz
�Vaz
�Waz
�Xaz
�Yaz
�Zaz
�[az
�\azwc
�]�
�^��az
�`az
�aaz
�b
�cwc���az
�e
Ҳ
�f
҉az
�g
�haz
�iaz
�jaz
�k
�{
�laz
�maz
�naz
�oaz
�paz
�qaz
�raz
�s
�wu�
�tu�
�uu�
�vu���
�xaz��
�y
�zaz�yaz
�|az
�}
Ҁ
�~
�u������y
ҁaz
҂
҅u�
҃u�
҄u���
҆az
҇az
҈az��az
Ҋ
Ҟ
ҋv�
Ҍv�
ҍv�
Ҏ
Қ
ҏv�
Ґv�
ґv�
Ғv�
ғv�
Ҕv�
ҕv�
Җv�j
җj
Ҙ
ҙv�jv�
қv�
Ҝv�
ҝv�jv�
ҟv�
Ҡv�
ҡv�
Ң
Ү
ңv�
Ҥv�
ҥv�
Ҧv�
ҧv�
Ҩv�
ҩv�
Ҫv�
ҫv�
Ҭv�
ҭv��v�
үv�
Ұv�
ұv��v�
ҳ
��
Ҵm
ҵm
Ҷm
ҷm
Ҹ
��
ҹm
Һm
һm
Ҽm
ҽm
Ҿm
ҿm
�
��
�
��
��
��
������w���
��m�
��m�m
��m
��
����
������
��m���
��m
��
��
��
����w����
��
��������
��
��
��v�
��v�
��v�
��
��
��v�
��v�
��v�
��v�
��v�
��v�
��v�
��v�
��v�
��v�
��v��v�
��v�
��v�
��v��v�
��v�
��v�
��v�
��
�
��v�
��v�
��v�
��v�
��v�
�v�
�v�
�
�
�
�
�
�v�
�v�����
���p
�v�w8v�
�v�
�v�
�v���v�
�v�
�
�
�
�v���pw8
�	v���v�
�
�~
�
�}
�

Ӡ
�
�u
�
�:
�
�$
�m
�m
�m
�
� 
�m
�m
�m
�m
�m
�m
�m
�m
�m
�m
��wm�w
�!m
�"m
�#m�wm
�%m
�&m
�'m
�(
�5
�)m
�*m
�+m
�,m
�-m
�.m
�/m
�0m
�1m
�2m
�3
�4����S�m
�6m
�7m
�8
�9����S�m
�;
�`
�<az
�=az
�>az
�?
�Q
�@az
�Aaz
�Baz
�Caz
�Daz
�Eaz
�Faz
�G
�Ku�
�Hu�
�Iu�
�Ju���
�Laz
�M
�O��
�N���y�
�P��az
�Raz
�S
�V
�T
�Uu����y�
�W
�[��
�Xu�
�Yu�
�Zu���
�\az
�]az
�^az
�_az���
�aaz
�baz
�caz
�d
�p
�eaz
�faz
�gaz
�haz
�iaz
�jaz
�kaz
�laz
�maz
�n
�ow���az
�qaz
�raz
�s
�tw���az
�v
�wt�v�
�x
ӌ
�yaz
�zaz
�{az
�|
ӈ
�}az
�~az
�az
Ӏaz
Ӂaz
ӂaz
Ӄaz
ӄaz
Ӆazw�
ӆ
Ӈazw�az
Ӊaz
ӊaz
Ӌazw�az
Ӎaz
ӎaz
ӏaz
Ӑ
Ӝ
ӑaz
Ӓaz
ӓaz
Ӕaz
ӕaz
Ӗaz
ӗaz
Әaz
әazt�
Ӛ
ӛazt�az
ӝaz
Ӟaz
ӟazt�az
ӡ
��
Ӣ
Ӻm
ӣ
Ӥm
ӥm
Ӧm
ӧ
ӵ
Өm
өm
Ӫm
ӫm
Ӭm
ӭm
Ӯm
ӯm
Ӱm
ӱ
Ӵ
Ӳ
ӳ���������m
Ӷm
ӷm
Ӹ
ӹ�����m
ӻ
��
Ӽaz
ӽaz
Ӿaz
ӿ
��
�az
�az
��az
��az
��az
��az
��az
��azaz
��az
��
��
��azaz
��az
��az
��azaz
��az
��az
��az
��
��
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
���az��
��az
��az
��
��az���az
��
�
��
�
��az
��az
��az
��
�
��az
��az
��az
��az
��az
��az
��az
��az
��az
�az
�azJ�v�
�az
�az
�azJ�v�
�az
�az
�az
�
�
�az
�az
�az
�az
�az
�az
�az
�azj
�j
�	
�
azjaz
�az
�
az
�azjaz
�az
�az
�az
�
�e
�
�V
�az
�az
�az
�az
�az
�
�9
�
�)
�
�%
�
�"
�
�!
�
� �y�������i
�#wup
�$��w
�&b��M
�'
�(b��Mb�
�*
�0
�+kX
�,
�.b�
�-b����
�/��kX
�1
�5
�2
�3kX�"
�4��F���
�6
�7a��v�
�8v�p
�:
�I
�;
�D
�<
�?
�=
�>az�0�[�
�@
�B
�A���
�CgQ�?RTwU
�E
�F
�HwU
�GwUS��?�
�J
�M{�
�K{�
�L{��-
�N
�S
�O
�Q
�Pw�9ww
�Rw��
�Taz
�Uaz����
�W
�^
�X
�[
�Y
�Z�y�����
�\
�]�iup��w
�_
�b
�`
�a�Mb����
�c
�d��kX�"F�
�f
�u
�g
�n
�h
�k
�i
�j��a��v�
�l
�mp�0�[�
�o
�r
�p
�q���?RT
�s
�tgQwUS��?
�vaz
�w
�z
�x
�y�{��-�9
�{
�|w����az
�~
Վ
�
�
Ԁ
��
ԁ
Ԗ
Ԃaz
ԃaz
Ԅaz
ԅ
ԑ
Ԇaz
ԇaz
Ԉaz
ԉaz
Ԋaz
ԋaz
Ԍaz
ԍaz
Ԏaz
ԏaz
Ԑ�az�y
Ԓaz
ԓaz
Ԕ
ԕaz�y�az
ԗaz
Ԙaz
ԙ
��
Ԛ
��
ԛaz
Ԝaz
ԝaz
Ԟ
Կ
ԟaz
Ԡaz
ԡ
Ժ
Ԣ
ԭ
ԣ
ԩ
Ԥ
ԧ
ԥ
ԦazL����
Ԩ��F�w�
Ԫ
ԫ���
Ԭ�����
Ԯ
Ե
ԯ
Բ
԰
Ա��&�&�
Գ
Դ�4SC��
Զ
Է�
�
Ը
Թ��>�>
Իaz
Լaz
Խaz�
Ծ��az
�az
�azaz
��
��az
��
��az
��az
��RF�
��az
��az�	az
��
��
��
��
��
��azL����
��
��F�w����
��
��
��
�������&
��
����4SC�
��az
��
��
��
��
��
����
��
��
���>���
��az
��
��RF��	az
��az
��az
��az
��az
��
�
��az
��az
��az
��az
��az
��az
��az
��
�u�
��u�
�u�
�u���
�az
�az
�
�����az
�az
�az
�
�u����
�u�
�u�
�u�
����
�
�(az
�
�az
�	az
�
az
�
�!
�az
�
az
�az
�az
�az
�az
�az
�
�
�
�
�
�
�
�v��w�t�v�
�v��w
�az
�az�wt�
�az
�azwq
� wqaz
�"az
�#
�&
�$
�%v��w�t�
�'azwqaz
�)
�n
�*az
�+az
�,
�i
�-
�Z
�.az
�/az
�0az
�1az
�2az
�3
�T
�4
�I
�5
�@
�6
�;
�7
�9
�8w<ww
�:wFv�
�<
�>v�
�=v���
�?����
�A
�G
�B
�E
�C
�D��,�,�^�^
�F�^
�Hazb�az
�J
�Mb�
�K
�Lazb�az
�N
�R
�O
�Qb�
�P�?�a�gC
�Saz��az
�Uaz
�Vaz
�Waz
�Xaz
�Yaz��az
�[
�b
�\
�_
�]
�^<wwFv�
�`
�a������
�c
�f
�d
�e��,�^
�g
�hb��?�a�
�jaz
�kaz
�laz
�mazgC��
�oaz
�paz
�qaz
�r
Ն
�saz
�taz
�uaz
�vaz
�waz
�xaz
�yaz
�z
�
�{
�}
�|w�iw
�~az��az
Հaz
Ձ
Մ
Ղ
Ճ��a�a��?
ՅazpRT
Շaz
Ո
Ջ
Չ
Պ�iw��a�
Ռ
Ս�?pRTaz
Տ
��
Ր
��
Ց
զ
Ւaz
Փaz
Քaz
Օ
ա
Ֆaz
՗az
՘az
ՙaz
՚az
՛az
՜az
՝az
՞az
՟
ՠw���az
բaz
գaz
դ
եw���az
էaz
ըaz
թaz
ժ
�
իaz
լaz
խaz
ծaz
կaz
հaz
ձaz
ղaz
ճ
պ
մ
շ
յ
նaz�����
ո
չR�����
ջ
վ
ռ
ս������
տaz�az
�
��
��
��
��
��az�����
��
��R������
��az
��
�������az
��
��az
��az
��az
��
��
��az
��az
��az
��az
��az
��az
��az
��az
��azaz
��az
����S	
��az
��az
��
��az��S	az
��
�9
��
�
��w*
��w*
��w*
��
��
��w*
��w*
��w*
��w*
��w*
��w*
��w*
��w*
��w*t�
��
��w*t�w*
�w*
�w*
�w*t�w*
�w*
�w*
�
�0
�
�!
�w*
�w*
�w*
�w*
�w*
�w*
�
�
�
�
�
�

�
�
�w*�yw*
�	wT4��wkX
�
�kX
�
kX
�kXT%
�
�
�
�F�S45�v�
�w*
�
�
�
�
�v�v�"�v�~
�
�
�
�S���?U
�
� T�s��w*
�"
�)
�#
�&
�$
�%�yw*T4��
�'
�(wkXT%F�
�*
�-
�+
�,S45�
�.
�/v�"�v�~
�1w*
�2w*
�3
�6
�4
�5S���?U
�7
�8T�s��w*
�:
�m
�;
�^
�<w*
�=w*
�>
�V
�?w*
�@w*
�Aw*
�Bw*
�Cw*
�Dw*
�Ew*
�F
�S
�G
�M
�H
�Jw�
�I�j
�K
�Lj�����
�N
�Q
�O
�P�bb�
�Rj�jj
�T
�Uw*jw*
�Ww*
�X
�[
�Y
�Zw��j��
�\
�]�b�jw*
�_w*
�`w*
�aw*
�bw*
�cw*
�dw*
�ew*
�fw*
�gw*
�hw*
�iw*
�jw*
�kw*
�lw*j
�nw*
�ow*
�pw*
�q
�z
�rw*
�sw*
�tw*
�uw*az
�v
�ww*
�xw*az
�yazw*
�{w*
�|w*
�}w*azw*
�az
ր
�J
ց
��
ւ
ֶ
փ
֢
քaz
օaz
ֆaz
և
֛
ֈaz
։az
֊az
֋az
֌az
֍az
֎az
֏
֗
֐
֕
֑
֓v�
֒v�����
֔��p
֖azw8az
֘az
֙az
֚az��az
֜az
֝
֠
֞
֟v���pw8
֡az��az
֣v�
֤v�
֥v�
֦
ֲ
֧v�
֨v�
֩v�
֪v�
֫v�
֬v�
֭v�
֮v�
֯v�v�
ְ
ֱv�v�v�
ֳv�
ִv�
ֵv�v�v�az
ַ
ָaz
ֹaz
ֺaz
ֻ
��
ּaz
ֽaz
־az
ֿaz
�az
�az
��az
��az
��az
��
��
��
���jjaz
��
�������az
��az
��az
��
���j���
��
�f
��
�
��b�
��b�
��b�
��
��
��b�
��b�
��b�
��b�
��b�
��b�
��
��
��
��
��v�
��
��
��u���K
��v�u�v�
��
��
��v�v�
��v�3

��b�
��b��1v�
��b�
��b�
��b�v�
��v�b�
��b�
��
�
��
����Ku�v�
�
�3
v��1v�
�b�
�b�
�
�N
�
�?
�b�
�b�
�b�
�b�
�b�
�
�!
�
�
�
�

�
�

�
�	
�
��y�������i
�wup
���w
�b��M
�
�b��Mb�
�
�
�kX
�
�b�
�b����
���kX
�
�
�
�kX�"
���F���
�
�a��v�
� v�p
�"
�1
�#
�,
�$
�'
�%
�&b��0�[�
�(
�*
�)���
�+gQ�?RTwU
�-
�.
�0wU
�/wUS��?�
�2
�5{�
�3{�
�4{��-
�6
�;
�7
�9
�8w�9ww
�:w��
�<b�
�=
�>���wFb�
�@
�G
�A
�D
�B
�C�y�����
�E
�F�iup��w
�H
�K
�I
�J�Mb����
�L
�M��kX�"F�
�O
�^
�P
�W
�Q
�T
�R
�S��a��v�
�U
�Vp�0�[�
�X
�[
�Y
�Z���?RT
�\
�]gQwUS��?
�_b�
�`
�c
�a
�b�{��-�9
�d
�ew���wF
�g
�,
�haz
�i
�
�j
�
�k
��
�laz
�maz
�naz
�oaz
�p
��
�q
ט
�r
ׇ
�s
ׁ
�t
�{
�u
�x
�v
�w�y��J
�y
�zJw�w���
�|
�~��
�}<�i
�
׀�i)��w
ׂ
ׄw
׃��M
ׅb��M
׆�Mb�
׈
׌b�
׉
׊�"
׋�"b���
׍
ד
׎
ב
׏
א�"��wF
גwc��V�
ה
זwc
וT%�"
ח���"�4
י
׳
ך
ר
כ
ס
ל
ן
ם
מ��a�a��
נv��v�
ע
ץ
ף
פpazaz�0
צ
ק�0�����
ש
׮
ת
׬��
׫��~
׭�[~��
ׯ
ױ�
װ��
ײ���
״
׾
׵
׻
׶
׹
׷
׸�?RT�gQ
׺��gQ��
׼wU
׽wU��wU
׿
��wU
�
�
��S�w8w8�?
��{�
��
���?��{�
��az
��
��
��
��{�
��
��
��
��
��{���ubub
��ub��
��
��
��
��
��
�����-�-�
��
��S�az�9�W
��w
��
�����,�,w
��az
��
��
��
��
���^w�^
��
���^����
��az
��az�az
��
��
��
��
��
���y�Jw�
��
������<�i
��
��
��
��)��w�
�
��Mb����"
�
�
�
�
�
�
�
��wF��V�
�
�wcT%�"�4
�
�
�
���a��v�
�
�p�0���
�
�
�	
�
�

�����~��
�

��[���
�
�
�
���?RT�
�
�gQ��wUS�
�az
�
�'
�
� 
�
�
�
�w8�?�{�
�
���ub��
�!
�$
�"
�#�-�S��9
�%
�&�W���,w
�(az
�)az
�*
�+�^���
�-az
�.az
�/az
�0
�C
�1az
�2az
�3az
�4az
�5az
�6az
�7az
�8
�<u�
�9u�
�:u�
�;u���
�=az
�>
�A
�?
�@�����
�Baz���
�Daz
�E
�H
�F
�Gu�����
�Iaz��az
�Kaz
�Laz
�Maz
�Naz
�Oaz
�Paz
�Q
�]
�Raz
�Saz
�Taz
�Uaz
�Vaz
�Waz
�Xaz
�Yaz
�Zaz
�[az
�\az�1az
�^az
�_az
�`az�1az
�baz
�caz
�daz
�eaz
�faz
�gaz
�h
�L
�i
�]
�j
�faz
�k
�l
��
�m
ج
�n
؍
�o
�~
�p
�w
�q
�t
�r
�s��v��yT
�u
�v���J�"
�x
�{
�y
�z�yw��w�
�|
�}mL�����
�
؆
؀
؃
؁
؂<���w*
؄
؅T4�iup)
؇
؊
؈
؉S���Q��
؋
،���j�
؎
؝
؏
ؖ
ؐ
ؓ
ؑ
ؒ��V'���
ؔ
ؕF�v�����
ؗ
ؚ
ؘ
ؙ��SQwX
؛
؜S	jTC�K
؞
إ
؟
آ
ؠ
ءw���az�
أ
ؤRF����M
ئ
ة
ا
بb����"�
ت
ث��;���
ح
��
خ
ؽ
د
ض
ذ
س
ر
زwF����w
ش
صV�wc���	
ط
غ
ظ
عR��kXT%
ػ
ؼgC��"F�
ؾ
��
ؿ
��
�
��&�4
��
��S45��B
��
��
��
�����Q�&�
��
����w�`
��
��
��
��
��
��
��
���4a�SC�
��
��u�v�v�"�
��
��
��
��u�Tzpaz
��
���v��1�
��
��
��
��
��
���0v����
��
���Z�o�}�
��
��
��
��azv����
��
�����j~�
��
�+
��
�
��
�
��
�
��
��
��
�����S���
��
��[���
�
�
�
�������?
�
��T3
RT
�
�
�
�
�
���
�
�
��De�
�
�	
�
��J���
�

�w�v�J�
�

�
�
�
�
�
�
���J����
�
��gQw��
�
�
�
�W��t��
�
��
������
�
�$
�
�!
�
� �1��wU
�"
�#R��S��
�%
�(
�&
�'���w8��
�)
�*�?�{�S�
�,
�K
�-
�<
�.
�5
�/
�2
�0
�1������
�3
�4ubt��
��
�6
�9
�7
�8'�-8�
�:
�;?US�F��
�=
�D
�>
�A
�?
�@J�bSaz
�B
�C-��9�H
�E
�H
�F
�GT�w�W�e
�I
�J�s���,
�L
�[
�M
�T
�N
�Q
�O
�Pw�>����
�R
�SJ��^S���
�U
�X
�V
�Waz���
�Y
�Z����
�\
�c
�]
�`
�^
�_wqS����
�a
�b���v�R7
�daz
�eazJ�az
�g
�b
�h
��
�i
٨
�j
ى
�k
�z
�l
�s
�m
�p
�n
�o��v��yT
�q
�r���J�"
�t
�w
�u
�v�yw��w�
�x
�ymL�����
�{
ق
�|
�
�}
�~<���w*
ـ
فT4�iup)
ك
ن
ل
مS���Q��
ه
و���j�
ي
ٙ
ً
ْ
ٌ
ُ
ٍ
َ��V'���
ِ
ّF�v�����
ٓ
ٖ
ٔ
ٕ��SQwX
ٗ
٘S	jTC�K
ٚ
١
ٛ
ٞ
ٜ
ٝw���az�
ٟ
٠RF����M
٢
٥
٣
٤b����"�
٦
٧��;���
٩
��
٪
ٹ
٫
ٲ
٬
ٯ
٭
ٮwF����w
ٰ
ٱV�wc���	
ٳ
ٶ
ٴ
ٵR��kXT%
ٷ
ٸgC��"F�
ٺ
�
ٻ
پ
ټ
ٽ�&�4
ٿ
�S45��B
��
��
��
�����Q�&�
��
����w�`
��
��
��
��
��
��
��
���4a�SC�
��
��u�v�v�"�
��
��
��
��u�Tzpaz
��
���v��1�
��
��
��
��
��
���0v����
��
���Z�o�}�
��
��
��
��azv����
��
�����j~�
��
�'
��
�
��
�
��
��
��
��
��
�����S���
��
���[���
��
�
��
�������?
�
��T3
RT
�
�
�
�
�
���
�
�
��De�
�
�
�
��J���
�
�w�v�J�
�	
�
�

�
�
�
�
�
��J����
�
��gQw��
�
�
�
�W��t��
�
��
������
�
� 
�
�
�
��1��wU
�
�R��S��
�!
�$
�"
�#���w8��
�%
�&�?�{�S�
�(
�G
�)
�8
�*
�1
�+
�.
�,
�-������
�/
�0ubt��
��
�2
�5
�3
�4'�-8�
�6
�7?US�F��
�9
�@
�:
�=
�;
�<J�bSaz
�>
�?-��9�H
�A
�D
�B
�CT�w�W�e
�E
�F�s���,
�H
�W
�I
�P
�J
�M
�K
�Lw�>����
�N
�OJ��^S���
�Q
�T
�R
�Saz���
�U
�V����
�X
�_
�Y
�\
�Z
�[wqS����
�]
�^���v�R7
�`az
�aazJ�az
�c
��
�d
ڣ
�e
ڄ
�f
�u
�g
�n
�h
�k
�i
�j��v��yT
�l
�m���J�"
�o
�r
�p
�q�yw��w�
�s
�tmL�����
�v
�}
�w
�z
�x
�y<���w*
�{
�|T4�iup)
�~
ځ
�
ڀS���Q��
ڂ
ڃ���j�
څ
ڔ
چ
ڍ
ڇ
ڊ
ڈ
ډ��V'���
ڋ
ڌF�v�����
ڎ
ڑ
ڏ
ڐ��SQwX
ڒ
ړS	jTC�K
ڕ
ڜ
ږ
ڙ
ڗ
ژw���az�
ښ
ڛRF����M
ڝ
ڠ
ڞ
ڟb����"�
ڡ
ڢ��;���
ڤ
��
ڥ
ڴ
ڦ
ڭ
ڧ
ڪ
ڨ
کwF����w
ګ
ڬV�wc���	
ڮ
ڱ
گ
ڰR��kXT%
ڲ
ڳgC��"F�
ڵ
ڼ
ڶ
ڹ
ڷ
ڸ�&�4
ں
ڻS45��B
ڽ
�
ھ
ڿ���Q�&�
�
����w�`
��
��
��
��
��
��
��
���4a�SC�
��
��u�v�v�"�
��
��
��
��u�Tzpaz
��
���v��1�
��
��
��
��
��
���0v����
��
���Z�o�}�
��
��
��
��azv����
��
�����j~�
��
�"
��
�
��
��
��
��
��
��
��
�����S���
��
���[���
��
��
��
��������?
��
���T3
RT
�
�
�
�
�
���
�
�
��De�
�
�
�
��J���
�
�w�v�J�
�
�
�
�
�
�	
�
���J����
�

��gQw��
�

�
�
�W��t��
�
��
������
�
�
�
�
�
��1��wU
�
�R��S��
�
�
�
����w8��
� 
�!�?�{�S�
�#
�B
�$
�3
�%
�,
�&
�)
�'
�(������
�*
�+ubt��
��
�-
�0
�.
�/'�-8�
�1
�2?US�F��
�4
�;
�5
�8
�6
�7J�bSaz
�9
�:-��9�H
�<
�?
�=
�>T�w�W�e
�@
�A�s���,
�C
�R
�D
�K
�E
�H
�F
�Gw�>����
�I
�JJ��^S���
�L
�O
�M
�Naz���
�P
�Q����
�S
�Z
�T
�W
�U
�VwqS����
�X
�Y���v�R7
�[az
�\azJ�az
�^
�U
�_
�Z
�`
��
�a
۠
�b
ہ
�c
�r
�d
�k
�e
�h
�f
�g��v��yT
�i
�j���J�"
�l
�o
�m
�n�yw��w�
�p
�qmL�����
�s
�z
�t
�w
�u
�v<���w*
�x
�yT4�iup)
�{
�~
�|
�}S���Q��
�
ۀ���j�
ۂ
ۑ
ۃ
ۊ
ۄ
ۇ
ۅ
ۆ��V'���
ۈ
ۉF�v�����
ۋ
ێ
ی
ۍ��SQwX
ۏ
ېS	jTC�K
ے
ۙ
ۓ
ۖ
۔
ەw���az�
ۗ
ۘRF����M
ۚ
۝
ۛ
ۜb����"�
۞
۟��;���
ۡ
�
ۢ
۱
ۣ
۪
ۤ
ۧ
ۥ
ۦwF����w
ۨ
۩V�wc���	
۫
ۮ
۬
ۭR��kXT%
ۯ
۰gC��"F�
۲
۹
۳
۶
۴
۵�&�4
۷
۸S45��B
ۺ
۽
ۻ
ۼ���Q�&�
۾
ۿ��w�`
�
��
��
��
��
��
��
���4a�SC�
��
��u�v�v�"�
��
��
��
��u�Tzpaz
��
���v��1�
��
��
��
��
��
���0v����
��
���Z�o�}�
��
��
��
��azv����
��
�����j~�
��
�
��
�
��
��
��
��
��
��
��
�����S���
��
���[���
��
��
��
��������?
��
���T3
RT
��
�
��
�
��
���
�
�
��De�
�
�
�
��J���
�
�w�v�J�
�
�
�
�	
�
�
�
���J����
�
��gQw��
�

�

�
�W��t��
�
��
������
�
�
�
�
�
��1��wU
�
�R��S��
�
�
�
����w8��
�
��?�{�S�
� 
�?
�!
�0
�"
�)
�#
�&
�$
�%������
�'
�(ubt��
��
�*
�-
�+
�,'�-8�
�.
�/?US�F��
�1
�8
�2
�5
�3
�4J�bSaz
�6
�7-��9�H
�9
�<
�:
�;T�w�W�e
�=
�>�s���,
�@
�O
�A
�H
�B
�E
�C
�Dw�>����
�F
�GJ��^S���
�I
�L
�J
�Kaz���
�M
�N����
�P
�W
�Q
�T
�R
�SwqS����
�U
�V���v�R7
�Xaz
�YazJ�az
�[
��
�\
ܛ
�]
�|
�^
�m
�_
�f
�`
�c
�a
�b��v��yT
�d
�e���J�"
�g
�j
�h
�i�yw��w�
�k
�lmL�����
�n
�u
�o
�r
�p
�q<���w*
�s
�tT4�iup)
�v
�y
�w
�xS���Q��
�z
�{���j�
�}
܌
�~
܅
�
܂
܀
܁��V'���
܃
܄F�v�����
܆
܉
܇
܈��SQwX
܊
܋S	jTC�K
܍
ܔ
܎
ܑ
܏
ܐw���az�
ܒ
ܓRF����M
ܕ
ܘ
ܖ
ܗb����"�
ܙ
ܚ��;���
ܜ
ܻ
ܝ
ܬ
ܞ
ܥ
ܟ
ܢ
ܠ
ܡwF����w
ܣ
ܤV�wc���	
ܦ
ܩ
ܧ
ܨR��kXT%
ܪ
ܫgC��"F�
ܭ
ܴ
ܮ
ܱ
ܯ
ܰ�&�4
ܲ
ܳS45��B
ܵ
ܸ
ܶ
ܷ���Q�&�
ܹ
ܺ��w�`
ܼ
��
ܽ
��
ܾ
�
ܿ
��4a�SC�
��
��u�v�v�"�
��
��
��
��u�Tzpaz
��
���v��1�
��
��
��
��
��
���0v����
��
���Z�o�}�
��
��
��
��azv����
��
�����j~�
��
�
��
�
��
��
��
��
��
��
��
�����S���
��
���[���
��
��
��
��������?
��
���T3
RT
��
��
��
��
��
����
�
��
���De�
�
�
�
��J���
�
�w�v�J�
�
�
�
�
�
�
�
���J����
�
��gQw��
�
�
�
�W��t��
�	
�
�
������
�
�
�

�
�
��1��wU
�
�R��S��
�
�
�
����w8��
�
��?�{�S�
�
�:
�
�+
�
�$
�
�!
�
� ������
�"
�#ubt��
��
�%
�(
�&
�''�-8�
�)
�*?US�F��
�,
�3
�-
�0
�.
�/J�bSaz
�1
�2-��9�H
�4
�7
�5
�6T�w�W�e
�8
�9�s���,
�;
�J
�<
�C
�=
�@
�>
�?w�>����
�A
�BJ��^S���
�D
�G
�E
�Faz���
�H
�I����
�K
�R
�L
�O
�M
�NwqS����
�P
�Q���v�R7
�Saz
�TazJ�az
�V
�Q
�W
��
�X
ݗ
�Y
�x
�Z
�i
�[
�b
�\
�_
�]
�^��v��yT
�`
�a���J�"
�c
�f
�d
�e�yw��w�
�g
�hmL�����
�j
�q
�k
�n
�l
�m<���w*
�o
�pT4�iup)
�r
�u
�s
�tS���Q��
�v
�w���j�
�y
݈
�z
݁
�{
�~
�|
�}��V'���
�
݀F�v�����
݂
݅
݃
݄��SQwX
݆
݇S	jTC�K
݉
ݐ
݊
ݍ
݋
݌w���az�
ݎ
ݏRF����M
ݑ
ݔ
ݒ
ݓb����"�
ݕ
ݖ��;���
ݘ
ݷ
ݙ
ݨ
ݚ
ݡ
ݛ
ݞ
ݜ
ݝwF����w
ݟ
ݠV�wc���	
ݢ
ݥ
ݣ
ݤR��kXT%
ݦ
ݧgC��"F�
ݩ
ݰ
ݪ
ݭ
ݫ
ݬ�&�4
ݮ
ݯS45��B
ݱ
ݴ
ݲ
ݳ���Q�&�
ݵ
ݶ��w�`
ݸ
��
ݹ
�
ݺ
ݽ
ݻ
ݼ�4a�SC�
ݾ
ݿu�v�v�"�
�
��
��
��u�Tzpaz
��
���v��1�
��
��
��
��
��
���0v����
��
���Z�o�}�
��
��
��
��azv����
��
�����j~�
��
�
��
�
��
��
��
��
��
��
��
�����S���
��
���[���
��
��
��
��������?
��
���T3
RT
��
��
��
��
��
����
�
��
���De�
��
��
��
���J���
�
�w�v�J�
�
�
�
�
�
�
�
���J����
�
��gQw��
�
�
�
�W��t��
�
��
������
�
�
�	
�
�

��1��wU
�

�R��S��
�
�
�
����w8��
�
��?�{�S�
�
�6
�
�'
�
� 
�
�
�
�������
�
�ubt��
��
�!
�$
�"
�#'�-8�
�%
�&?US�F��
�(
�/
�)
�,
�*
�+J�bSaz
�-
�.-��9�H
�0
�3
�1
�2T�w�W�e
�4
�5�s���,
�7
�F
�8
�?
�9
�<
�:
�;w�>����
�=
�>J��^S���
�@
�C
�A
�Baz���
�D
�E����
�G
�N
�H
�K
�I
�JwqS����
�L
�M���v�R7
�Oaz
�PazJ�az
�R
��
�S
ޒ
�T
�s
�U
�d
�V
�]
�W
�Z
�X
�Y��v��yT
�[
�\���J�"
�^
�a
�_
�`�yw��w�
�b
�cmL�����
�e
�l
�f
�i
�g
�h<���w*
�j
�kT4�iup)
�m
�p
�n
�oS���Q��
�q
�r���j�
�t
ރ
�u
�|
�v
�y
�w
�x��V'���
�z
�{F�v�����
�}
ހ
�~
���SQwX
ށ
ނS	jTC�K
ބ
ދ
ޅ
ވ
ކ
އw���az�
މ
ފRF����M
ތ
ޏ
ލ
ގb����"�
ސ
ޑ��;���
ޓ
޲
ޔ
ޣ
ޕ
ޜ
ޖ
ޙ
ޗ
ޘwF����w
ޚ
ޛV�wc���	
ޝ
ޠ
ޞ
ޟR��kXT%
ޡ
ޢgC��"F�
ޤ
ޫ
ޥ
ި
ަ
ާ�&�4
ީ
ުS45��B
ެ
ޯ
ޭ
ޮ���Q�&�
ް
ޱ��w�`
޳
��
޴
޻
޵
޸
޶
޷�4a�SC�
޹
޺u�v�v�"�
޼
޿
޽
޾u�Tzpaz
�
��v��1�
��
��
��
��
��
���0v����
��
���Z�o�}�
��
��
��
��azv����
��
�����j~�
��
�
��
��
��
��
��
��
��
��
��
�����S���
��
���[���
��
��
��
��������?
��
���T3
RT
��
��
��
��
��
����
�
��
���De�
��
��
��
���J���
��
��w�v�J�
��
�
��
�
�
�
�
���J����
�
��gQw��
�
�
�
�W��t��
�
��
������
�
�

�
�
�
��1��wU
�
�	R��S��
�
�
�
�
���w8��
�
��?�{�S�
�
�1
�
�"
�
�
�
�
�
�������
�
�ubt��
��
�
�
�
�'�-8�
� 
�!?US�F��
�#
�*
�$
�'
�%
�&J�bSaz
�(
�)-��9�H
�+
�.
�,
�-T�w�W�e
�/
�0�s���,
�2
�A
�3
�:
�4
�7
�5
�6w�>����
�8
�9J��^S���
�;
�>
�<
�=az���
�?
�@����
�B
�I
�C
�F
�D
�EwqS����
�G
�H���v�R7
�Jaz
�KazJ�az
�Maz
�Naz
�Oaz
�P
��
�Q
ߐ
�R
�q
�S
�b
�T
�[
�U
�X
�V
�W��v��yT
�Y
�Z���J�"
�\
�_
�]
�^�yw��w�
�`
�amL�����
�c
�j
�d
�g
�e
�f<���w*
�h
�iT4�iup)
�k
�n
�l
�mS���Q��
�o
�p���j�
�r
߁
�s
�z
�t
�w
�u
�v��V'���
�x
�yF�v�����
�{
�~
�|
�}��SQwX
�
߀S	jTC�K
߂
߉
߃
߆
߄
߅w���az�
߇
߈RF����M
ߊ
ߍ
ߋ
ߌb����"�
ߎ
ߏ��;���
ߑ
߰
ߒ
ߡ
ߓ
ߚ
ߔ
ߗ
ߕ
ߖwF����w
ߘ
ߙV�wc���	
ߛ
ߞ
ߜ
ߝR��kXT%
ߟ
ߠgC��"F�
ߢ
ߩ
ߣ
ߦ
ߤ
ߥ�&�4
ߧ
ߨS45��B
ߪ
߭
߫
߬���Q�&�
߮
߯��w�`
߱
�
߲
߹
߳
߶
ߴ
ߵ�4a�SC�
߷
߸u�v�v�"�
ߺ
߽
߻
߼u�Tzpaz
߾
߿�v��1�
�
��
��
��
��
���0v����
��
���Z�o�}�
��
��
��
��azv����
��
�����j~�
��
�
��
��
��
��
��
��
��
��
��
�����S���
��
���[���
��
��
��
��������?
��
���T3
RT
��
��
��
��
��
����
�
��
���De�
��
��
��
���J���
��
��w�v�J�
��
�
��
�
��
�
��
���J����
�
��gQw��
�
�
�
�W��t��
�
��
������
�
�
�
�
�
��1��wU
�
�R��S��
�	
�
�

����w8��
�

��?�{�S�
�
�/
�
� 
�
�
�
�
�
�������
�
�ubt��
��
�
�
�
�'�-8�
�
�?US�F��
�!
�(
�"
�%
�#
�$J�bSaz
�&
�'-��9�H
�)
�,
�*
�+T�w�W�e
�-
�.�s���,
�0
�?
�1
�8
�2
�5
�3
�4w�>����
�6
�7J��^S���
�9
�<
�:
�;az���
�=
�>����
�@
�G
�A
�D
�B
�CwqS����
�E
�F���v�R7
�Haz
�IazJ�az
�Kaz
�Laz
�Maz
�Naz
�Oaz
�Paz
�Qaz
�Raz
�Saz
�Tazaz
�U
�Vaz
�Waz
�Xaz
�Yaz
�Zazazw�
�\
�_
�]@
�^@b�@
�`@
�a@L@
�c
�j
�d
�g
�e@
�f@c�@
�h@
�i@ku@
�k
�n
�l@
�m@c�@
�o
�r
�p@
�q@d@
�s@
�t@d@
�v
�
�w
�q
�x
�
�y
�
�z
�
�{
�~
�|@
�}@`�@
�@
�@
�@
�@
�@iM@
�
�
�@
�@g4@
�@
�@M@
�
�
�
�
�@
�@iM@
�@
�@ku@
�
�
�@
�@b�@
�@
�@c�@
�
�b
�
�
�
�
�@
�@
�@
�lx
�lx
�
��
�
�
�
�
�lx
�lx
�lx
�lx
�lx
�lx
�lxlx
�lx
�
�lxlx
�
�lx
�lx�lx
�lxlx
�lx
�
�lx
�lxlx
�
�lxlx
�lx
�lx
�
�lxlx
�lx
�lxՙlx
��lx
��lx
��lx
��lx
��lx
��lx
��
��
��
��lx
��lxlx
��
��lx
��lx
��lxrXlxlx
��lx
��lx
��
��
��
��rX
��rXlxrX
��lxrXlx
��
��
��lx
��lx
��lx
��lx
��lx
��lx
��lx
��lx
��lx
��lx
��lx
��
��
��
��
��
��lxe�lx
��
����lx;b
��lx
��lxlx�*
��lx
��lx
��lx
��lx
�lx
�lx
�lx
�lx
�lx
�lxlx
�lx
�
�lx
�lx�lx
�@
�@M@
�
�
�@
�@l@
�@
�@
�	@
�
N
�N
�N
�
N
�N
�N
�N
�N
�N
�NN
�
�N
�N
�
�+
�
�
�
��
�
�e
�
�6N
�
�N
�N
�N
� N
�!N
�"
�,
�#NN
�$
�%NN
�&N
�'
�(N
�)NN
�*
�+Nx�N
�-N
�.N
�/NN
�0N
�1
�2NN
�3
�4NN
�5x�N
�7
�G
�8NN
�9
�:N
�;N
�<NN
�=N
�>
�?NN
�@N
�AN
�B
�CN
�DN
�EN
�FNx�N
�HN
�I
�W
�JN
�KN
�LNN
�M
�NN
�ON
�PN
�QN
�RNN
�S
�TN
�UNN
�Vx�N
�XNN
�YN
�Z
�[NN
�\
�]NN
�^N
�_
�`N
�aNN
�bN
�c
�dNNx�
�f
�
�g
�
�h
�
�i
�wN
�jN
�k
�lN
�mN
�nNN
�oN
�pN
�qN
�r
�sN
�tNN
�uN
�vx�N
�xN
�yN
�zNN
�{N
�|N
�}
�~N
�NN
�N
�
�NN
�
�NNx�
�
�N
�
�NN
�N
�
�NN
�N
�
�N
�NN
�
�NN
�N
�Nx�N
�N
�N
�N
�N
�
�N
�N
�N
�N
�N
�N
�NN
�x�N
�NN
�N
�N
�N
�
�N
�N
�NN
�N
�N
�N
�N
�N
�
�Nx�N
�
��
�
��
�N
�N
�N
�N
�NN
�N
�N
�
�N
�NN
�
�NN
�
��Nx�NN
��
��NN
��
��N
��NN
��
��N
��N
��N
��NN
��N
��
��N
��NNx�N
��
��NN
��N
��N
��N
��N
��
��N
��NN
��N
��N
��
��NN
��
��Nx�N
��N
��N
��N
��
�N
��
��N
��NN
��
��NN
��N
��N
��
��N
��NN
��N
��N
��N
��x�N
�NN
�
�N
�N
�NN
�N
�
�NN
�
�N
�NN
�N
�N
�Nx�
�
�N
�N
�
�NN
�	N
�
N
�
�N
�
N
�N
�N
�NN
�N
�N
�
�N
�N
�NN
�Nx�
�N
�NN
�
�N
�NN
�N
�N
� N
�!N
�"N
�#
�$N
�%N
�&N
�'NN
�(
�)NN
�*Nx�
�,
�@
�-N
�.N
�/N
�0NN
�1
�2NN
�3
�4N
�5N
�6N
�7NN
�8
�9N
�:NN
�;N
�<N
�=N
�>
�?NNx�
�AN
�BN
�CN
�DNN
�E
�F
�T
�GN
�HNN
�I
�JN
�KNN
�L
�MNN
�NN
�O
�PNN
�QN
�RN
�Sx�N
�UNN
�V
�WN
�XNN
�Y
�ZNN
�[
�\N
�]N
�^N
�_NN
�`
�aNNx�
�c
�j
�d
�g
�e@
�f@d@
�h@
�i@d@
�k
�n
�l@
�m@az@
�o@
�p@ty@
�r
�
�s
�
�t
�~
�u
�{
�v@
�w@
�x@
�y@
�z@d@
�|@
�}@L�@
�
�
�@
�@c�@
�@
�@nW@
�
�
�
�
�@
�@b�@
�@
�@g4@
�
�
�@
�@M@
�@
�@d@
�
�
�
�
�
�
�@
�@�I@
�@
�@cW@
�
�
�@
�@c�@
�@
�@N@
�
�
�
�
�@
�@~@
�@
�@d@
�
�
�@
�@d@
�@
�@M�@
�
�s
�
��
�
��
�
�
�
�
�@
�@L@
�@
�@az@
�
��
�@
�@`�@
��@
��@az@
��
��
��
��
��@
��@�b@
��@
��@aN@
��
��
��@
��@p�@
��@
��@n�@
��
��
��
��
��
��
��@
��@d@
��@
��@cW@
��
��
��@
��@d@
��@
��@M@
��
��
��
��
��@
��@iM@
��@
��@d@
��
�p
��@
��@
��@
��
�I
��
�3
��
�
��ak
�ak
�ak
�ak
�ak
�akak
�
�ak
�ak
�ak
�ak
�ak
�ak
�ak
�
���ak��ak
�ak
�ak
�
�ak
�
�	
�
�
ak
�akp�akak
�
ak
�ak
�ak
�ak
�ak
�ak
�ak
�ak
�ak
�akp�
�ak
�ak
�ak
�ak
�
�,
�ak
�
�%
�
� ak����
�!
�"ak
�#ak
�$aktkak
�&
�+
�'ak
�(ak
�)ak
�*akp�akp�ak
�-ak
�.
�1
�/
�0p���Պ
�2akp�ak
�4ak
�5ak
�6ak
�7
�@
�8ak
�9ak
�:ak
�;ak
�<ak
�=ak
�>ak
�?akp�ak
�Aak
�Bak
�Cak
�Dak
�Eak
�Fak
�Gak
�HakX>ak
�J
�W
�Kak
�Lak
�Mak
�Nak
�Oak
�Pak
�Qak
�Rak
�Sak
�Tak
�Uak
�Vaktkak
�X
�d
�Yak
�Zak
�[ak
�\ak
�]ak
�^ak
�_ak
�`ak
�aak
�bak
�cak
ak
�eak
�fak
�gak
�hak
�iak
�jak
�kak
�lak
�mak
�nak
�oaksak
�q@
�r@M@
�t
�
�u
�
�v
�}
�w
�z
�x@
�y@`�@
�{@
�|@M@
�~
�
�@
�@
�@cW
�
�cWcW
�
�cWcW
�
�cWx�cW
�@
�@d@
�
�
�
�
�@
�@M@
�@
�@nW@
�
�
�@
�@d@
�@
�@c�@
�
�
�
�
�
�
�@
�@b�@
�@
�@d{@
�
�
�@
�@c�@
�@
�@f@
�
�
�
�
�@
�@d@
�@
�@m�@
�
�
�@
�@e�@
�@
�@L@
�
��
�
�@
�
�
�
��
�
��
�
��
�
��
�@
��@b�@
��@
��@M@
��
��
��@
��@L�@
��@
��@M�@
��
��
��
��
��@
��@d@
��@
��@M�@
��
��
��@
��@g_@
��@
��@b�@
��
��
��
��
��
��
��@
��@rf@
��@
��@M@
��
��
��@
��@N@
��@
��@g4@
��
��
��
��
��@
��@M@
��@
��@nW@
�
�
�@
�@M@
�@
�@`�@
�
�
�
�
�
�
�
�
�@
�@M@
�@
�@d@
�
�	
�@
�@g_@
�
@
�@d@
�

�
�
�
�@
�@N@
�@
�@nW@
�
�
�@
�@`�@
�@
�@d@
�
�1
�
�*
�
�!
�@
� @c�@
�"
�'
�#
�$az@
�%@
�&@L�@
�(@
�)@az@
�+
�.
�,@
�-@c�@
�/@
�0@N@
�2
�9
�3
�6
�4@
�5@�X@
�7@
�8@c�@
�:
�=
�;@
�<@d@
�>@
�?@d@
�A
�
�B
�a
�C
�R
�D
�K
�E
�H
�F@
�G@g_@
�I@
�J@M@
�L
�O
�M@
�N@`�@
�P@
�Q@`�@
�S
�Z
�T
�W
�U@
�V@d{@
�X@
�Y@M@
�[
�^
�\@
�]@iM@
�_@
�`@|�@
�b
�q
�c
�j
�d
�g
�e@
�f@L�@
�h@
�i@b�@
�k
�n
�l@
�m@M�@
�o@
�p@}�@
�r
�y
�s
�v
�t@
�u@aN@
�w@
�x@�@
�z
�}
�{@
�|@nW@
�~@
�@N@
�
�
�
�
�
�
�
�
�@
�@L@
�@
�@g_@
�
�
�@
�@l@
�@
�@M�@
�
�
�
�
�@
�@aN@
�@
�@cW@
�
�
�@
�@ty@
�@
�@N@
�
��
�
�
�
�
�@
�@iM@
�@
�@b�@
�
�
�@
�@
�@
�aN
�aN
�aN
�aN
�aN
�aN
�aN
�aN
�aN
�aN
�aN
�aN
�aN
�aN
�aN
�aN
�aNaN
�۱aN
�@
��@d@
��
��
��
��
��@
��@
��@
��l�
��l�l�
��l�
��
��l�
��l�
��l�l�
��
��l�
��l�
��l�
��l�l�
��l�
��
��l�
��l�
��l�
��l���l�
��@
��@d{@
��
��
��
��
��@
��@��@
��
��
��@
��@N@
��@
��@nW@
��@
��@az@
��
�
��
�A
��
�"
��
�
��
�
��
�
��@
�@p�@
�@
�@L�@
�
�
�@
�@ak@
�@
�@M@
�
�
�
�
�@
�@g4@
�@
�@
�@
�	L�
�
L�
�L�
�L�
�
L�
�L�
�L�
�L�
�L�
�L�
�L�
�L�
�L�L�
�
�L�
�L�
�L�
�L�L��
�
�
�@
�@M�@
� @
�!@d@
�#
�2
�$
�+
�%
�(
�&@
�'@L�@
�)@
�*@b�@
�,
�/
�-@
�.@L@
�0@
�1@N@
�3
�:
�4
�7
�5@
�6@M@
�8@
�9@M@
�;
�>
�<@
�=@M@
�?@
�@@{
@
�B
�a
�C
�R
�D
�K
�E
�H
�F@
�G@��@
�I@
�J@d@
�L
�O
�M@
�N@L@
�P@
�Q@L�@
�S
�Z
�T
�W
�U@
�V@g4@
�X@
�Y@L@
�[
�^
�\@
�]@`�@
�_@
�`@d{@
�b
�
�c
�j
�d
�g
�e@
�f@nW@
�h@
�i@cW@
�k
�n
�l@
�m@d@
�o@
�p@
�q@N
�rN
�sN
�t
�uN
�vN
�wN
�xN
�yN
�zN
�{
�N
�|
�}N
�~N
�N
�N
�N
�N
�NQ�N
�N
�N
�N
�N
�N
�N
�N
�NQ�N
�
�
�
�
�@
�@g4@
�@
�@b�@
�
�
�@
�@b�@
�@
�@xv@
�
��
�
�
�
�
�
�
�
�
�@
�@b�@
�@
�@c�@
�
�
�@
�@nW@
�
�
�@
�@d@
�@
�@`�@
�
�
�
�
�@
�@b�@
�@
�@L@
�
�
�@
�@p�@
�@
�@d@
��
��
��
��
��
��
��@
��@d@
��@
��@b�@
��
��
��@
��@li@
��@
��@d@
��
��
��
��
��@
��@`�@
��@
��@d@
��
��
��@
��@nW@
��@
��@xv@
��
�
��
��
��
��
��
��
��@
��@N@
��@
��@L@
��
��
��@
��@b�@
��@
��@L@
��
�
��
�
��@
�@d@
�@
�@iM@
�
�
�@
�@d@
�@
�@d{@
�
�
�
�	
�
�
�@
�@b�@
�@
�@L�@
�

�

�@
�@l�@
�@
�@L@
�
�
�
�
�@
�@g_@
�@
�@nW@
�
�
�@
�@��@
�@
�@M@
� 
��
�!
�^
�"
�1
�#
�
�$
�j
�%
�K
�&
�5
�'
�.
�(
�+
�)@
�*@d{@
�,@
�-@L�@
�/
�2
�0@
�1@M�@
�3@
�4@l�@
�6
�=
�7
�:
�8@
�9@L@
�;@
�<@N@
�>
�H
�?
�F
�@
�C
�A@
�B@w�@
�D@
�E@d]@
�G@g_@
�I@
�J@d]@
�L
�[
�M
�T
�N
�Q
�O@
�P@`�@
�R@
�S@b�@
�U
�X
�V@
�W@d@
�Y@
�Z@i�@
�\
�c
�]
�`
�^@
�_@�X@
�a@
�b@c�@
�d
�g
�e@
�f@��@
�h@
�i@p�@
�k
�
�l
�{
�m
�t
�n
�q
�o@
�p@N@
�r@
�s@g4@
�u
�x
�v@
�w@d@
�y@
�z@M@
�|
�
�}
�
�~@
�@d@
�@
�@iM@
�
�
�@
�@b�@
�@
�@g4@
�
�
�
�
�
�
�@
�@`�@
�@
�@`�@
�
�
�@
�@M@
�@
�@y7@
�
�
�
�
�@
�@�X@
�@
�@M@
�
�
�@
�@`�@
�@
�@iM@
�
��
�
��
�
�
�
�
�
�
�@
�@
�@
�azgCaz
�@
�@c�@
�
�
�@
�@N@
�@
�@
�@az
�
�gCgCb�
�
��
��
��
��@
��@d@
��@
��@ty@
��
��
��@
��@L�@
��@
��@L�@
��
��
��
��
��
��
��@
��@b�@
��@
��@b�@
��
��
��@
��@n�@
��@
��@�x@
��
��
��
��
��@
��@N@
��@
��@aN@@
��
��@
��@L@
��
�
��
�
��
�
��
��
��@
��@b�@
��@
��@L�@
�
�
�@
�@c�@
�@
�@iM@
�
�
�
�
�@
�@|�@
�@
�@nW@
�
�
�@
�@M@
�	@
�
@d]@
�
�"
�

�
�
�
�@
�@|�@
�@
�@N@
�
�
�
�
�@
�@
�@N@
�@b�@
�@
�@
�@
� @
�!@L�@
�#
�*
�$
�'
�%@
�&@b�@
�(@
�)@d@
�+
�.
�,@
�-@N@
�/@
�0@L@
�2
�
�3
�r
�4
�S
�5
�D
�6
�=
�7
�:
�8@
�9@L@
�;@
�<@N@
�>
�A
�?@
�@@w�@
�B@
�C@p�@
�E
�L
�F
�I
�G@
�H@b�@
�J@
�K@L�@
�M
�P
�N@
�O@g_@
�Q@
�R@g_@
�T
�c
�U
�\
�V
�Y
�W@
�X@az@
�Z@
�[@iM@
�]
�`
�^@
�_@d{@
�a@
�b@M@
�d
�k
�e
�h
�f@
�g@g4@
�i@
�j@M@
�l
�o
�m@
�n@N@
�p@
�q@d@
�s
�
�t
�
�u
�|
�v
�y
�w@
�x@n�@
�z@
�{@c�@
�}
�
�~@
�@M@
�@
�@
�@H:@
�
�
�
�
�@
�@m�@
�@
�@g4@
�
�
�@
�@b�@
�@
�@M@
�
�
�
�
�
�
�@
�@b�@
�@
�@li@
�
�
�@
�@d@
�@
�@aN@
�
�
�
�
�@
�@M@
�@
�@d@
�
�
�@
�@c�@
�@
�@cW@
�
��
�
��
�
��
�
�
�
�
�@
�@L@
�@
�@|�@
�
�
�@
�@d@
��@
��@M@
��
��
��
��
��@
��@L@
��@
��@t�@
��
��
��@
��@L@
��@
��@b�@
��
��
��
��
��
��
��@
��@N@
��@
��@c�@
��
��
��@
��@iM@
��@
��@L�@
��
��
��
��
��@
��@M@
��@
��@Л@
��
��
��@
��@c�@
��@
��@nW@
��
�B
��
�
�
�
�
�
�@
�@N@
�@
�@iM@
�
�
�@
�@M@
�@
�@y7@
�
�
�
�
�@
�@az@
�	@
�
@i�@
�
�
�
@
�@d@
�@
�@
�@
�l
�l
�l
�l
�l
�l
�l
�l
�l
�l
�l
�l
�l
� 
�)
�!
�%
�"l
�#ll
�$c��l
�&
�'l
�(lc�n�
�*
�.
�+l
�,l
�-l\Hl
�/l
�0l
�1ll
�2
�3l
�4l
�5l
�6l
�7l
�8l
�9l
�:l
�;l
�<l
�=l
�>l
�?l
�@l
�Alll
�C
�O
�D
�K
�E
�H
�F@
�G@M�@
�I@
�J@M@@
�L
�M@
�N@g_@
�P
�W
�Q
�T
�R@
�S@`�@
�U@
�V@lx@
�X
�[
�Y@
�Z@g_@
�\@
�]@N@
�_
�a
�`
�
�a
�
�b
�
�c
�r
�d
�k
�e
�h
�f@
�g@N@
�i@
�j@b�@
�l
�o
�m@
�n@d@
�p@
�q@N@
�s
�
�t
�w
�u@
�v@M�@
�x@
�y@
�z@
�{
�
�|NQ�
�}
�~N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�NQ�NN
�NOT
�
�
�@
�@M@
�@
�@M@
�
�
�
�
�
�
�@
�@`�@
�@
�@N@
�
�
�@
�@L@
�@
�@cW@
�
�
�
�
�@
�@iM@
�@
�@�G@
�
�
�@
�@|@
�@
�@aN@
�
��
�
��
�
��
�
�
�@
�@d@
�
��
�
��
�@
�@
�@M@
��@
��@L@
��
��
��@
��@c�@
��@
��@nW@
��
��
��@
��@L�@
��@
��@g4@
��
��
��
��
��@
��@N@
��@
��@d@
��
��
��@
��@`�@
��@
��@b�@
��
��
��
��
��
��
��@
��@g_@
��@
��@b�@
��
��
��@
��@g4@
��@
��@cW@
��
�@
��
�@
�@d{@
�
�
�@
�@gQ@
�@
�@�,@
�
�>
�
�
�
�
�
�	
�
�
�@
�@aN@
�@
�@N@
�

�

�@
�@aN@
�@
�@az@
�
�
�
�
�@
�@d{@
�@
�@c�@
�
�
�@
�@L@
�@
�@`�@
� 
�/
�!
�(
�"
�%
�#@
�$@d{@
�&@
�'@cW@
�)
�,
�*@
�+@t�@
�-@
�.@c�@
�0
�7
�1
�4
�2@
�3@M@
�5@
�6@iM@
�8
�;
�9@
�:@N@
�<@
�=@N@
�?
�^
�@
�O
�A
�H
�B
�E
�C@
�D@b�@
�F@
�G@L�@
�I
�L
�J@
�K@az@
�M@
�N@iM@
�P
�W
�Q
�T
�R@
�S@b�@
�U@
�V@p�@
�X
�[
�Y@
�Z@M@
�\@
�]@b�@
�_@
�`@M�@
�b
�
�c
�
�d
�
�e
�t
�f
�m
�g
�j
�h@
�i@L@
�k@
�l@ty@
�n
�q
�o@
�p@p�@
�r@
�s@N@
�u
�|
�v
�y
�w@
�x@b�@
�z@
�{@c�@
�}
�
�~@
�@
�@
�`�
�`��[`�
�@
�@`�@
�
�
�
�
�
�
�@
�@`�@
�@
�@Ϩ@
�
�
�@
�@L�@
�@
�@M@
�
�
�
�
�@
�@M�@
�@
�@�I@
�@
�@
�@L@
�
��
�
��
�
�
�
�
�@
�@M�@
�@
�@L�@
�
��
�@
�@
�@
�i�
�i�
�i�
�i�
�i�
�i�
�i�
�i�
�i�
�i�
�i�
�i�
�i�i�
�
�i�
�i�
�i�
��i�i�
��
��i�
��i�
��i�
��i�
��i�
��i�
��i�
��i�
��i�
��i�i�
���eF�
��@
��@c�@
��
��
��
��
��@
��@
��@
��cW
��cW$$cW
��@
��@
��@
��j�
��j�
��j�
��j�
��j�
��
��j�j�
��
��
��@
��@d@
��@
��@g_@
��
�
��
�
��
��
��@
��@c�@
��@
��@d@
�
�
�@
�@M@
�@
�@M@
�
�
�
�
�@
�@N@
�@
�@c�@
�
�
�@
�@M@
�	@
�
@c�@
�
�K
�

�,
�
�
�
�
�
�
�@
�@c�@
�@
�@c�@
�
�
�@
�@L@
�@
�@`�@
�
�%
�
�"
� @
�!@N@
�#@
�$@b�@
�&
�)
�'@
�(@cW@
�*@
�+@M�@
�-
�<
�.
�5
�/
�2
�0@
�1@M@
�3@
�4@d{@
�6
�9
�7@
�8@d@
�:@
�;@b�@
�=
�D
�>
�A
�?@
�@@d@
�B@
�C@c�@
�E
�H
�F@
�G@b�@
�I@
�J@M@
�L
�
�M
�
�N
�~
�O
�R
�P@
�Q@xv@
�S@
�T@
�U@
�Vd{
�Wd{
�Xd{
�Yd{
�Zd{
�[
�od{
�\d{
�]d{
�^
�_d{d{
�`d{
�ad{
�b
�cd{
�dd{
�e
�k
�f
�hd{
�g=d{
�i
�jd{\9d{=
�ld{
�m
�nd{}�}�d{
�pd{d{
�qd{
�r
�sd{d{
�td{
�ud{
�v
�wd{
�xd{
�yd{
�z
�|d{
�{d{}�
�}d{\*d{
�
�
�@
�@i�@
�@
�@M�@
�
�
�
�
�@
�@L�@
�@
�@L�@
�
�
�@
�@p�@
�@
�@
�@d
�d
�d
�
�d
�d
�d
�d
�d
�d
�dd
�
�d
�d
�d
�d
�d
�d
�db�d
�
�
�
�
�
�@
�
�@
�@b�@
�@
�@cW@
�
�
�@
�@N@
�@
�@`�@
�
�
�
�
�@
�@d@
�@
�@{
@
�
��
��@
��@xv@
��@
��@cW@
��
�
��
��
��
�O
��
�

��
��
��
��
��
��
��
��
��@
��@cW@
��@
��@M@
��
��
��@
��@L�@
��@
��@p�@
��
��
��
��
��@
��@b�@
��@
��@iM@
��
��
��@
��@l@
��@
��@`�@
��
�
��
��
��
��
��@
��@j*@
��@
��@`�@
�
�
�@
�@l�@
�@
�@aN@
�
�
�
�
�@
�@L@
�@
�@b�@
�
�
�@
�@M@
�@
�	@xv@
�
�*
�
�
�

�
�
�
�@
�@z�@
�@
�@cW@
�
�
�@
�@b�@
�@
�@d@
�
�#
�
� 
�@
�@`�@
�!@
�"@M@
�$
�'
�%@
�&@N@
�(@
�)@az@
�+
�@
�,
�9
�-
�6
�.@
�/@
�0@
�1
�3
�2Q�NOc
�4
�5Q�VpQ�[�
�7@
�8@`�@
�:
�=
�;@
�<@M@
�>@
�?@M�@
�A
�H
�B
�E
�C@
�D@M@
�F@
�G@xv@
�I
�L
�J@
�K@N@
�M@
�N@g4@
�P
�
�Q
�s
�R
�d
�S
�Z
�T
�W
�U@
�V@N@
�X@
�Y@��@
�[
�a
�\@
�]@
�^@
�_@
�`@M@
�b@
�c@`�@
�e
�l
�f
�i
�g@
�h@b�@
�j@
�k@d@
�m
�p
�n@
�o@M@
�q@
�r@d@
�t
�
�u
�|
�v
�y
�w@
�x@M@
�z@
�{@c�@
�}
�
�~@
�@N@
�@
�@N@
�
�
�
�
�@
�@`�@
�@
�@N@
�
�
�@
�@`�@
�@
�@
�@
�@
�@p�@
�
�
�
�
�
�
�
�
�@
�@L�@
�@
�@Л@
�
�
�@
�@p�@
�@
�@cW@
�
�
�
�
�@
�@c�@
�@
�@g4@
�
�
�@
�@nW@
�@
�@c�@
�
��
�
�
�
�
�@
�@li@
�@
�@d@
�
��
�@
�@M@
��@
��@L�@
��
��
��
��
��@
��@M@
��@
��@d@
��
��
��@
��@t�@
��@
��@b�@
��
�w
��
�
��
�
��
��
��
��
��
��
��@
��@N@
��@
��@d{@
��
��
��@
��@{
@
��@
��@nW@
��
��
��
��
��@
��@b�@
��@
��@d@
��
��
��@
��@M@
��@
�@y7@
�
�
�
�
�
�
�@
�@g4@
�@
�@N@
�
�
�@
�@d@
�@
�@b�@
�
�
�
�
�	@
�
@b�@
�@
�
@nW@
�
�
�@
�@��@
�@
�@g4@
�
�5
�
�&
�
�
�
�
�@
�@l�@
�@
�@M@
� 
�#
�!@
�"@d@
�$@
�%@M@
�'
�.
�(
�+
�)@
�*@p�@
�,@
�-@g4@
�/
�2
�0@
�1@t�@
�3@
�4@i�@
�6
�E
�7
�>
�8
�;
�9@
�:@M@
�<@
�=@i�@
�?
�B
�@@
�A@`�@
�C@
�D@d@
�F
�p
�G
�J
�H@
�I@L@
�K@
�L@
�M@
�Nd
�Od
�Pd
�Qdd
�R
�Sd
�Td
�Ud
�Vd
�Wd
�Xd
�Yd
�Zd
�[d
�\d
�]d
�^d
�_d
�`d
�ad
�bd
�cd
�dd
�edd
�fd
�gd
�h
�id
�jd
�kd
�ldd
�m
�nd
�odd�-
�q
�t
�r@
�s@M@
�u@
�v@N@
�x
�
�y
�
�z
�
�{
�
�|
�
�}@
�~@M�@
�@
�@M@
�
�
�@
�@M@
�@
�@M@
�
�
�
�
�@
�@b�@
�@
�@N@
�
�
�@
�@`�@
�@
�@N@
�
�
�
�
�
�
�@
�@`�@
�@
�@iM@
�
�
�@
�@M@
�@
�@aN@
�
�
�
�
�@
�@d@
�@
�@n�@
�
�
�@
�@b�@
�
�
�@
�@b�@
�@
�@g_@
�
��
�
��
�
��
�
��
�@
�@M@
��@
��@`�@
��
��
��@
��@nW@
��@
��@M�@
��
��
��
��
��@
��@`�@
��@
��@n�@
��
��
��@
��@
��@
��azgCaz
��@
��@M�@
��
�
��
�
��
��
��@
��@d@
��@
��@
��@
��M
��M
��M
��M
��M
��M
��M
��M
��M
��M
��M
��MM
��
��M
�M
�M
�M
�MMg�
�
�
�@
�@b�@
�@
�@d@
�
�
�
�
�@
�@ak@
�@
�@li@
�	
�
�
@
�@d@
�
@
�@d@
�
�
�
�
�
�Q
�
�2
�
�#
�
�
�
�
�@
�@M@
�@
�@ty@
�
� 
�@
�@b�@
�!@
�"@L�@
�$
�+
�%
�(
�&@
�'@`�@
�)@
�*@M@
�,
�/
�-@
�.@L@
�0@
�1@N@
�3
�B
�4
�;
�5
�8
�6@
�7@aN@
�9@
�:@`�@
�<
�?
�=@
�>@c�@
�@@
�A@L@
�C
�J
�D
�G
�E@
�F@cW@
�H@
�I@g4@
�K
�N
�L@
�M@b�@
�O@
�P@aN@
�R
��
�S
��
�T
�[
�U
�X
�V@
�W@N@
�Y@
�Z@d@
�\
�_
�]@
�^@`�@
�`@
�a@
�b@
�c
��
�daz
�eaz
�faz
�gaz
�haz
�iaz
�jaz
�kaz
�laz
�maz
�n
�
�o
�
�p
�|az
�q
�r
�y
�s
�v
�t
�ugCb�kX�"
�w
�x�?�MwU�"
�zaz
�{azv�az
�}
�
�~az
�az
�
�v�mu�v�
�az
�az
�azv�v�
�
�
�
�
�
�
�
�jaz
�
�azubkXw
�az
�azv�az
�az
�az
�
�azv�w�az
�
�
�
�
�
�
�
�azu�azv�
�
�azu�gCaz
�az
�azb�v�
�az
�az
�
�azv���az
�az
�
�
�
�
�az
�az
�azv�az
�az
�
�
�azv�az
�azazj
�
��
�
�
�
�
�
�v�gCgQ�"
�
�b�kXazwU
�
�
�
��M�?v�v�
��azv�az
��az
��
��
��azv�w
��mt�u�
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��az
��
��az
��azv�
��azb�az
��
��
��
��
��@
��@b�@
��@
��@d@
��
��
��@
��@N@
��@
��@L�@
��
�
��
�
��
��
��@
��@c�@
��@
��@b�@
�
�
�@
�@iM@
�@
�@q~@
�
�
�
�
�@
�@cW@
�@
�@c�@
�
�
�@
�@M@
�	@
�
@xv@
�
�K
�

�,
�
�
�
�
�
�
�@
�@az@
�@
�@M@
�
�
�@
�@��@
�@
�@d@
�
�%
�
�"
� @
�!@L�@
�#@
�$@b�@
�&
�)
�'@
�(@`�@
�*@
�+@M@
�-
�<
�.
�5
�/
�2
�0@
�1@��@
�3@
�4@d@
�6
�9
�7@
�8@y7@
�:@
�;@d@
�=
�D
�>
�A
�?@
�@@li@
�B@
�C@�b@
�E
�H
�F@
�G@{
@
�I@
�J@M@
�L
�s
�M
�d
�N
�]
�O
�Z
�P
�W
�Q
�T
�R@
�S@M@
�U@
�V@az@
�X@
�Y@{
@
�[@
�\@M@
�^
�a
�_@
�`@d@
�b@
�c@L�@
�e
�l
�f
�i
�g@
�h@M@
�j@
�k@b�@
�m
�p
�n@
�o@M@
�q@
�r@c�@
�t
�
�u
�|
�v
�y
�w@
�x@b�@
�z@
�{@cW@
�}
�
�~@
�@`�@
�@
�@N@
�
�
�
�
�@
�@b�@
�@
�@`�@
�
�
�@
�@M@
�@
�@`�@
�
�<
�
��
�
�
�
�
�
�
�
�
�@
�@cW@
�@
�@{
@
�
�
�@
�@iM@
�@
�@m�@
�
�
�
�
�@
�@g4@
�@
�@e�@
�
�
�@
�@M�@
�@
�@t�@
�
��
�
�
�
�
�@
�@c�@
�@
�@b�@
�
�
�@
�@ak@
��@
��@��@
��
��
��
��
��@@
��
��@
��@xv@
��@
��@cW@
��
��
��@
��@N@
��@
��@li@
��
�
��
��
��
��
��
��
��@
��@az@
��@
��@`�@
��
��
��@
��@j�@
��@
��@`�@
��
��
��
��
��@
��@d@
��@
��@az@
��
�
��@
��@
��@
��M
��M
�MM
�
�M
�M
�M
�M
�M
�
�
�M
�
�
�M
�MM
�
�M
�M��M
�M
�MM
�
�M
�	M
�
M��M
�M
�

�
�M
�MM
�
�M
�M��M
�M
�MM
�
�M
�M
�M��M
�@
�@M@
�
�-
�
�&
� 
�#
�!@
�"@L�@
�$@
�%@M@
�'
�*
�(@
�)@g4@
�+@
�,@e�@
�.
�5
�/
�2
�0@
�1@li@
�3@
�4@N@
�6
�9
�7@
�8@M@
�:@
�;@N@
�=
�
�>
�]
�?
�N
�@
�G
�A
�D
�B@
�C@b�@
�E@
�F@N@
�H
�K
�I@
�J@d@
�L@
�M@d@
�O
�V
�P
�S
�Q@
�R@d@
�T@
�U@xv@
�W
�Z
�X@
�Y@l@
�[@
�\@g4@
�^
�
�_
�f
�`
�c
�a@
�b@b�@
�d@
�e@iM@
�g
�}
�h@
�i@
�j@
�ki�
�li�
�mi�
�ni�
�oi�
�pi�
�qi�
�ri�
�si�
�ti�
�ui�
�vi�
�wi�
�xi�
�yi�i�
�z
�{i�
�|i�i�3�
�~@
�@xv@
�
�
�
�
�@
�@d{@
�@
�@iM@
�
�
�@
�@M@
�@
�@N@
�
�
�
�
�
�
�
�
�@
�@`�@
�@
�@d]@
�
�
�@
�@c�@
�@
�@M@
�
�
�
�
�@
�@M@
�@
�@b�@
�
�
�@
�@q~@
�@
�@i�@
�
��
�
�
�
�
�@
�@aN@
�@
�@`�@
�
�
�@
�@M@
�
��
�@
�@
�@
�@L@
��@
��@l@
��
�
��
�
��@
��@
��@
��M
��M
��M
��M
��M
��M
��M
��
��M
��
��MM
��
��M
��M
��M
��M
��M
��M
��M
��M
��M
��M
��M
��MM
��
��MM
��
��M
��M
��MM
��
��MM
��M
��M
��g�M
��M
��M
��M
��M
��
�
��
����Mg�M
�
�tO�;q���
�@
�@d@
�
�
�@
�@��@
�@
�@q~@
�/�
�
�~
�
�

�
�
�
�
�
�L
�	
�(
�

�
�
�
�
�
�
@
�@g_@
�@
�@`�@
�
�
�@
�@cW@
�@
�@aN@
�
�!
�
�
�@
�@c�@
�@
� @ak@
�"
�%
�#@
�$@L@
�&@
�'@M@
�)
�=
�*
�1
�+
�.
�,@
�-@g_@
�/@
�0@N@
�2
�5
�3@
�4@M@
�6@
�7@
�8@xv
�9xv
�:xv
�;xv
�<xv��
�>
�E
�?
�B
�@@
�A@M@
�C@
�D@L@
�F
�I
�G@
�H@d@
�J@
�K@g_@
�M
��
�N
�]
�O
�V
�P
�S
�Q@
�R@d@
�T@
�U@b�@
�W
�Z
�X@
�Y@d{@
�[@
�\@b�@
�^
��
�_
�b
�`@
�a@xv@
�c@
�d@
�e@
�fb�
�gb�b�
�h
�ib�
�jb�
�kb�
�lb�
�mb�
�nb�
�ob�b�
�p
�qb�
�rb�
�s
�
�t
�
�u
�|
�v
�y
�w
�xb�d$p�p�
�z
�{����b��9
�}b�
�~b����
�
�
�
�
�
�
�d2
���
���
���
���
���
���
���
���
���
�����
�
�
�
���
���
���Ť����
���
���
�Ť��
�ڥ
���
���
���
���
���
���
���
���
���
�����
���
�
���
���
�������
�
��Yb�x�p�
�b�
�b�ڥ
�
��
�
��
�
��
�
��b�
�
��
��
��
��
��
��
��
��
��
���
��
�
��
���
���h�
����
��}U
��}U
��}U
��}U
��}U
��}U
��}U
��}U
��}U}U
��
��}U
��}U}U
��
��}U
��}U}U�d
��
������3`
��b�
��b�b�x�
��b�
��b�
��b�b�й
��
��
��@
��@`�@
��@
��@L@
��
�
��
��
��
��
��@
��@c�@
��@
��@d@
��
��
��@
��@N@
��@
��@d@
�
�
�
�
�@
�@d]@
�@
�@N@
�
�
�@
�@L�@
�@d@
�
�A
�
�%
�
�
�
�
�
�
�	@
�
@c�@
�@
�
@
�@A@
�
�
�@
�@d@
�@
�@L@
�
�
�
�
�@
�@d@
�@
�@M@
�
�"
� @
�!@j�@
�#@
�$@L�@
�&
�2
�'
�+@
�(
�)@
�*@iM@
�,
�/
�-@
�.@iM@
�0@
�1@iM@
�3
�:
�4
�7
�5@
�6@d{@
�8@
�9@N@
�;
�>
�<@
�=@b�@
�?@
�@@d@
�B
�d
�C
�U
�D
�N
�E
�H
�F@
�G@nW@
�I@
�J@
�K@
�L@
�M@y7@
�O
�R
�P@
�Q@L@
�S@
�T@N@
�V
�]
�W
�Z
�X@
�Y@cW@
�[@
�\@L�@
�^
�a
�_@
�`@L�@
�b@
�c@L@
�e
�t
�f
�m
�g
�j
�h@
�i@M@
�k@
�l@g4@
�n
�q
�o@
�p@c�@
�r@
�s@nW@
�u
�|
�v
�y
�w@
�x@d@
�z@
�{@L�@
�}
�
�~@
�@M@
�@
�@
�@
�@
�@azwU
�
�
�
�\
�
�7
�
�(
�
�
�
�
�@
�@L�@
�@
�@M@
�
�%
�@
�@
�@
�N
�
�N
�
�N
�N
�N
�
�
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�NN[�
�N
�N
�N
�N
�N
�
�
�
�Q�W�N�
�N[�N
�
��
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
��N
��N
��NOEN
��
��
��N
��N
��
��
��
��
��N
��N
��N
��N
��N
��
��
��[�
��N
��
��N
��N}E
��
��W�N;U\N[�NN
��N
��NOE
��N
��
��N
��_�N
��NSNN
��N
��N
��N
��N
��N
��N
��
��
�
��
�
��
�
��N
��
��
��
��
��
��N;\;P}OcQ�
��Q�_F
�
�
�
�Q�[�W�[�
�
��VNO�OTN
�N
�
�NN
�NR�
�
�

�
�N
�
�NN
�U�OT
�N
�NN
�	N;N
�N
�NN
�

�NP�N
�
�N
�
�
�
�NN
�
�NN[�
�N
�N
�NVpS
�
� N
�
�NN
�
�NNQ�
�!N
�"N
�#NN
�$U\N
�&@
�'@`�@
�)
�0
�*
�-
�+@
�,@b�@
�.@
�/@g4@
�1
�4
�2@
�3@N@
�5@
�6@M@
�8
�J
�9
�C
�:
�@
�;
�>
�<@
�=@xv@
�?@xv@
�A@
�B@d@
�D
�G
�E@
�F@cW@
�H@
�I@L@
�K
�R
�L
�O
�M@
�N@d{@
�P@
�Q@iM@
�S
�Y
�T@
�U@
�V@
�W@
�X@d@
�Z@
�[@c�@
�]
�
�^
�m
�_
�f
�`
�c
�a@
�b@g4@
�d@
�e@iM@
�g
�j
�h@
�i@N@
�k@
�l@cW@
�n
�
�o
�}
�p@
�q@
�r@
�sN
�tN
�uN
�vN
�wN
�xN
�yN
�zN
�{NN
�|NOE
�~@
�@c�@
�
�
�@
�@li@
�@
�@d@
�
�
�
�
�
�
�@
�@ak@
�@
�@cW@
�
�
�@
�@sG@
�@
�@N@
�
�
�
�
�@
�@b�@
�@
�@d@
�
�
�@
�@y7@
�@
�@N@
�
��
�
��
�
�
�
�
�
�
�@
�@L�@
�@
�@�,@
�
�
�@
�@b�@
�@
�@`�@
�
�
�
�
�@
�@lx@
�@
�@aN@
�
��
��@
��@nW@
��@
��@N@
��@
��@iM@
��
��
��
��
��
��
��
��
��@
��@l@
��@
��@xv@
��
��
��@
��@M@
��@
��@l�@
��
��
��
��
��@
��@M@
��@
��@
��@xv@
��
��
��@
��@c�@
��@
��@i�@
��
�
��
��
��
��
��@
��@cW@
��@
��@b�@
�
�
�@
�@N@
�@
�@L�@
�
�
�
�
�@
�@M@
�@
�@p�@
�
�
�@
�@��@
�@
�	@l@
�
�_
�
�
�

�L
�
�-
�
�
�
�
�
�
�@
�@M�@
�@
�@L@
�
�
�@
�@M@
�@
�@d@
�
�&
� 
�#
�!@
�"@xv@
�$@
�%@j�@
�'
�*
�(@
�)@��@
�+@
�,@M�@
�.
�=
�/
�6
�0
�3
�1@
�2@az@
�4@
�5@M�@
�7
�:
�8@
�9@n�@
�;@
�<@N@
�>
�E
�?
�B
�@@
�A@az@
�C@
�D@d@
�F
�I
�G@
�H@g_@
�J@
�K@`�@
�M
�l
�N
�]
�O
�V
�P
�S
�Q@
�R@c�@
�T@
�U@M�@
�W
�Z
�X@
�Y@b�@
�[@
�\@z�@
�^
�e
�_
�b
�`@
�a@N@
�c@
�d@i�@
�f
�i
�g@
�h@iM@
�j@
�k@i�@
�m
�
�n
�y
�o
�v
�p@
�q@
�r@g_
�s
�t
�ug_p�p�g_
�w@
�x@L�@
�z
�}
�{@
�|@M@
�~@
�@
�@
�M
�M
�M
�M
�M
�M
�M
�M
�M
�M
�MM
�M
�
�MM
�
�M
�M
�MM
�
�M
�M
�M
�M
�M
�M
�M
�M
�M
�M
�MM
�
�M
�MM
�d�M
�
�
�
�
�@
�@cW@
�@
�@cW@
�
�
�@
�@`�@
�@
�@
�@
�@
�@b�@
�
�
�
��
�
��
�
�
�
�
�@
�@i�@
�@
�@nW@
�
��
��@
��@g_@
��@
��@E@
��
��
��
��
��@
��@N@
��@
��@b�@
��
��
��@
��@d@
��@
��@b�@
��
��
��
��
��
��
��@
��@M@
��@
��@c�@
��
��
��@
��@d@
��@
��@L@
��
��
��
��
��@
��@M@
��@
��@az@
��
��
��@
��@b�@
��@
��@M@
�
�=
�
�

�
�
�
�
�
�
�@
�@xv@
�@
�@xv@
�@
�@d@
�
�
�@
�@y7@
�@
�	@N@
�
�6
�
�3
�
@
�@
�@
�
�1
�NQ�
�
�
�"
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
�N
� N
�!NQ�N
�#N
�$NN
�%
�&N
�'N
�(N
�)N
�*N
�+N
�,N
�-N
�.N
�/N
�0NQ�NN
�2NOT
�4@
�5@cW@
�7
�:
�8@
�9@iM@
�;@
�<@L�@
�>
�P
�?
�I
�@
�F
�A@
�B@
�C@
�D@
�E@j�@
�G@
�H@d{@
�J
�M
�K@
�L@d@
�N@
�O@b�@
�Q
�X
�R
�U
�S@
�T@d@
�V@
�W@K�@
�Y
�\
�Z@
�[@`�@
�]@
�^@d@
�`
�
�a
�
�b
�
�c
�r
�d
�k
�e
�h
�f@
�g@c�@
�i@
�j@c�@
�l
�o
�m@
�n@q~@
�p@
�q@d]@
�s
�z
�t
�w
�u@
�v@iM@
�x@
�y@M@
�{
�~
�|@
�}@b�@
�@
�@M@
�
�
�
�
�
�
�@
�@N@
�@
�@d@
�
�
�@
�@t�@
�@
�@d@
�
�
�
�
�@
�@L�@
�@
�@
�@
���
�
�
���
���
���
���
���
���
���
�����
������
�
���
���
���
���
���
���
���
���
�
�
��
��
�
�
�@
�@Ќ@
�@
�@n�@
�
��
�
��
�
��
�
�
�@
�@M@
�@
�@M@
��
��
��@
��@b�@
��@
��@g4@
��
��
��
��
��@
��@i�@
��@
��@M@
��
��
��@
��@b�@
��@
��@b@
��
��
��
��
��
��
��@
��@N@
��@
��@c�@
��
��
��@
��@`�@
��@
��@L�@
��
��
��
��
��@
��@d@
��@
��@b�@
��
��
��@
��@`�@
�@
�@xv@
�
�?
�
�
�
�	
�
�
�
�
�@
�@iM@
�@
�@aN@
�
�
�@
�@`�@
�@
�@d{@
�

�
�
�
�@
�
@L@
�@
�
�
�@
�@M@
�@
�@aN@
�
�
�@
�@N@
�@
�@L@
�
�0
�
�)
� 
�#
�!@
�"@c�@
�$@
�%@
�&@
�'@
�(@d@
�*
�-
�+@
�,@b�@
�.@
�/@߫@
�1
�8
�2
�5
�3@
�4@c�@
�6@
�7@b�@
�9
�<
�:@
�;@N@
�=@
�>@d@
�@
�_
�A
�P
�B
�I
�C
�F
�D@
�E@aN@
�G@
�H@b�@
�J
�M
�K@
�L@az@
�N@
�O@d@
�Q
�X
�R
�U
�S@
�T@g_@
�V@
�W@`�@
�Y
�\
�Z@
�[@cW@
�]@
�^@L@
�`
�o
�a
�h
�b
�e
�c@
�d@d@
�f@
�g@iM@
�i
�l
�j@
�k@b�@
�m@
�n@`�@
�p
�w
�q
�t
�r@
�s@nW@
�u@
�v@N@
�x
�{
�y@
�z@t�@
�|@
�}@d@
�-
��,

��+b
��+
��*�
��
��
��
��
��
��
��@
��@M@
��@
��@M@
��
��
��@
��@l�@
��@
��@c�@
��*�
��
��
��@
��@b�@
��@
��@
��@
��
��
��`�
��`�
��`�
��`�
��`�
��`�
��
��
��
�
��
��
��`�
��`�
��`�
��
��`�
��
��
��
��`�
��`�`��y
��`�
��`�`���
��`�
��`�
��
��`�
��ִ`�
��`�`�lL
��
��
��`�
��`�
��
��
��
��
��
��
��
��Pu�S),�
��
���D99
��9`�
��
��
��
���PHW��
��
��fu
��
��u��`�
��
��
��
��
��
������
��
���
���h�
��
��h���[`�
��`�
��`�
��`�ִ`�
��
�
��
��
��
��
��
��
��
��
��
����֥
��
���j`�`���
����
������֥
��
��
��
����
����`�
��`���`�
����
�������2��
��
����
��
����
�����P
������ִ��
����
��
������
��
������֥`�
���
���`�
�
��
�`�
�`�
�
��
�
�6
�	
�$
�

�!
�
�
�
�
�i��֥�[
�
� 
�֖
�`�
�`�
�`�
�`�
�`�
�`�
�`�
�`�
�`�
�`�
�`�
�`�
�`�
�`�
�`�`��i�y��
�"`�
�#`�HmS
�%`�
�&`�
�'
�5ִ
�(
�)`�
�*`�
�+`�
�,`�
�-`�
�.`�
�/`�
�0`�
�1`�
�2`�
�3`�
�4`��[`��i`�
�7
��
�8
�w
�9
�X
�:
�I
�;
�B
�<`�
�=`�
�>`�
�?`��
�@
�A`��`�
�C`�
�D`�
�E`�
�F`�c�
�G
�H`�c�`�
�J
�Q
�K`�
�L`�
�M`�
�N`��
�O
�P`��`�
�R`�
�S`�
�T`�
�U`���
�V
�W`���`�
�Y
�h
�Z
�a
�[`�
�\`�
�]`�
�^`���
�_
�``���`�
�b`�
�c`�
�d`�
�e`��i
�f
�g`��i`�
�i
�p
�j`�
�k`�
�l`�
�m`��[
�n
�o`��[`�
�q`�
�r`�
�s`�
�t`�ִ
�u
�v`�ִ`�
�x`�
�y`�
�z
��
�{`�
�|`�
�}`�
�~`��J
�
��`��J`�
��`�
��`�
��`�
��`�H
��
��`�H`�
��
��
��
��
��
��
��`�
��`�
��`�
��`�
��`��
��
��`��`�
��
��
��`�
��`�
��`�
��`�֥
��
��`�֥`�
��`�
��`�
��`�
��`�֖
��
��`�֖`�
��
��
��
��
��`�
��`�
��`�
��`��y
��
��`��y`�
��`�
��`�
��`�
��`�mS
��
��`�mS`�
��
��
��`�
��`�
��`�
��`�h�
��
��`�h�`�
��`�
��`�
��`�
��`�si
��
��`�si`�
��`�
��`�
��
��
��`�
��`�
��`�
��`�,�
��
��`�,�`�
��`�
��`�
��`�
��`�k
��
��`�k`�
��`�
��`�
��`�
��`�
��`�
��`�
��`�
��`�
��`�
��`�*F
��
��`�*F`��i��
��`�
��`��`�
��`�
��`�
���
��
�
���
��
��
��
�u
��
�&
��
�
��
�,
��
�

��
��
��
��
��
���
��
��k-�k-�
��
��k-�k-
��
���
��
��k-�k-�
��
��k-�k-
��
�
�
��
�
�k-�k-�
�
�k-�k-
�
�
�
�
�	k-�k-�
�
�k-�k-
�
�
�
�
�
��
�
�k-�k-�
�
�k-�k-
�
��
�
�k-�k-�
�
�k-�k-
�
�%
�
�"�
� 
�!k-�k-�
�#
�$k-�k-
�&
�)�
�'
�(k-�k-�
�*
�+k-�k-
�-
�L
�.
�=
�/
�6
�0
�3�
�1
�2k-�k-�
�4
�5k-�k-
�7
�:�
�8
�9k-�k-�
�;
�<k-�k-
�>
�E
�?
�B�
�@
�Ak-�k-�
�C
�Dk-�k-
�F
�I�
�G
�Hk-�k-�
�J
�Kk-�k-
�M
�`
�N
�U
�O
�R�
�P
�Qk-�k-�
�S
�Tk-�k-
�V
�Y�
�W
�Xk-�k-
�Z
�^
�[�
�\
�]k-��k-
�_k-�k-
�a
�p
�b
�i
�c
�g
�d�
�e
�fk-��k-
�hk-�k-
�j
�n
�k�
�l
�mk-��k-
�ok-�k-
�q
�x
�r
�v
�s�
�t
�uk-��k-
�wk-�k-
�y
�}
�z�
�{
�|k-��k-
�~k-�k-
��
��
��
��
��
��
��
��
��
���
��
��k-�k-�
��
��k-�k-
��
���
��
��k-�k-�
��
��k-�k-
��
��
��
���
��
��k-�k-�
��
��k-�k-
��
���
��
��k-�k-�
��
��k-�k-
��
��
��
��
��
���
��
��k-�k-�
��
��k-�k-
��
���
��
��k-�k-
��
��
���
��
��k-��k-
��k-�k-
��
��
��
��
��
��
���
��
��k-��k-
��k-�k-
��
��
���
��
��k-��k-
��k-�k-
��
��
��
��
���
��
��k-��k-
��k-�k-
��
��
���
��
��k-��k-
��k-�k-
��
��
��
��
��
��
��
���
��
��k-�k-�
��
��k-�k-
��
���
��
��k-�k-�
��
��k-�k-
��
��
��
���
��
��k-�k-�
��
��k-�k-
��
���
��
��k-�k-�
��
��k-�k-
��
�
��
��
��
���
��
��k-�k-�
��
��k-�k-
��
��
��
��k-�k-
�
�
��
�
�k-��k-
�k-�k-
�
�
�	
�
�

�
��
�
�
k-��k-
�k-�k-
�
�
��
�
�k-��k-
�k-�k-
�
�
�
�
��
�
�k-��k-
�k-�k-
� 
�$
�!�
�"
�#k-��k-
�%k-�k-
�'
��
�(
�{
�)
�H
�*
�9
�+
�2
�,
�/�
�-
�.k-�k-�
�0
�1k-�k-
�3
�6�
�4
�5k-�k-�
�7
�8k-�k-
�:
�A
�;
�>�
�<
�=k-�k-�
�?
�@k-�k-
�B
�E�
�C
�Dk-�k-�
�F
�Gk-�k-
�I
�\
�J
�Q
�K
�N�
�L
�Mk-�k-�
�O
�Pk-�k-
�R
�U�
�S
�Tk-�k-
�V
�Z
�W�
�X
�Yk-��k-
�[k-�k-
�]
�l
�^
�e
�_
�c
�`�
�a
�bk-��k-
�dk-�k-
�f
�j
�g�
�h
�ik-��k-
�kk-�k-
�m
�t
�n
�r
�o�
�p
�qk-��k-
�sk-�k-
�u
�y
�v�
�w
�xk-��k-
�zk-�k-
�|
��
�}
��
�~
��
�
��c�
��
��k-c�k-c�
��
��k-c�k-
��
��c�
��
��k-c�k-c�
��
��k-c�k-
��
��
��
��c�
��
��k-c�k-c�
��
��k-c�k-
��
��c�
��
��k-c�k-c�
��
��k-c�k-
��
��
��
��
��
��c�
��
��k-c�k-c�
��
��k-c�k-
��
��c�
��
��k-c�k-
��
��
��c�
��
��k-c�c�k-
��k-c�k-
��
��
��
��
��
��
��c�
��
��k-c�c�k-
��k-c�k-
��
��
��c�
��
��k-c�c�k-
��k-c�k-
��
��
��
��
��c�
��
��k-c�c�k-
��k-c�k-
��
��
��c�
��
��k-c�c�k-
��k-c�k-
��
�"
��
��
��
��
��
��
��
��c�
��
��k-c�k-c�
��
��k-c�k-
��
��c�
��
��k-c�k-c�
��
��k-c�k-
��
��
��
��c�
��
��k-c�k-c�
��
��k-c�k-
��
��c�
��
��k-c�k-c�
��
��k-c�k-
��
�
��
��
��
��c�
��
��k-c�k-c�
��
��k-c�k-
��
��c�
��
��k-c�k-
��
�
��c�
��
�k-c�c�k-
�k-c�k-
�
�
�
�
�
�

�c�
�
�	k-c�c�k-
�k-c�k-
�

�
�c�
�
�k-c�c�k-
�k-c�k-
�
�
�
�
�c�
�
�k-c�c�k-
�k-c�k-
�
� 
�c�
�
�k-c�c�k-
�!k-c�k-
�#
�B
�$
�3
�%
�,
�&
�)c�
�'
�(k-c�k-c�
�*
�+k-c�k-
�-
�0c�
�.
�/k-c�k-c�
�1
�2k-c�k-
�4
�;
�5
�8c�
�6
�7k-c�k-c�
�9
�:k-c�k-
�<
�?c�
�=
�>k-c�k-c�
�@
�Ak-c�k-
�C
�V
�D
�K
�E
�Hc�
�F
�Gk-c�k-c�
�I
�Jk-c�k-
�L
�Oc�
�M
�Nk-c�k-
�P
�T
�Qc�
�R
�Sk-c�c�k-
�Uk-c�k-
�W
�f
�X
�_
�Y
�]
�Zc�
�[
�\k-c�c�k-
�^k-c�k-
�`
�d
�ac�
�b
�ck-c�c�k-
�ek-c�k-
�g
�n
�h
�l
�ic�
�j
�kk-c�c�k-
�mk-c�k-
�o
�s
�pc�
�q
�rk-c�c�k-
�tk-c�k-
�v
��
�w
�
�x
��
�y
��
�z
��
�{
��
�|
�c�
�}
�~k-c�k-c�
��
��k-c�k-
��
��c�
��
��k-c�k-c�
��
��k-c�k-
��
��
��
��c�
��
��k-c�k-c�
��
��k-c�k-
��
��c�
��
��k-c�k-c�
��
��k-c�k-
��
��
��
��
��
��c�
��
��k-c�k-c�
��
��k-c�k-
��
��c�
��
��k-c�k-
��
��
��c�
��
��k-c�c�k-
��k-c�k-
��
��
��
��
��
��
��c�
��
��k-c�c�k-
��k-c�k-
��
��
��c�
��
��k-c�c�k-
��k-c�k-
��
��
��
��
��c�
��
��k-c�c�k-
��k-c�k-
��
��
��c�
��
��k-c�c�k-
��k-c�k-
��
��
��
��
��
��
��
��c�
��
��k-c�k-c�
��
��k-c�k-
��
��c�
��
��k-c�k-c�
��
��k-c�k-
��
��
��
��c�
��
��k-c�k-c�
��
��k-c�k-
��
��c�
��
��k-c�k-c�
��
��k-c�k-
��
��
��
��
��
��c�
��
��k-c�k-c�
��
��k-c�k-
��
��c�
��
��k-c�k-
��
��
��c�
��
��k-c�c�k-
��k-c�k-
�
�
�
�
�
�
�c�
�
�k-c�c�k-
�k-c�k-
�	
�

�
c�
�
�k-c�c�k-
�k-c�k-
�
�
�
�
�c�
�
�k-c�c�k-
�k-c�k-
�
�
�c�
�
�k-c�c�k-
�k-c�k-
�
�r
� 
�?
�!
�0
�"
�)
�#
�&�
�$
�%k-�k-�
�'
�(k-�k-
�*
�-�
�+
�,k-�k-�
�.
�/k-�k-
�1
�8
�2
�5�
�3
�4k-�k-�
�6
�7k-�k-
�9
�<�
�:
�;k-�k-�
�=
�>k-�k-
�@
�S
�A
�H
�B
�E�
�C
�Dk-�k-�
�F
�Gk-�k-
�I
�L�
�J
�Kk-�k-
�M
�Q
�N�
�O
�Pk-��k-
�Rk-�k-
�T
�c
�U
�\
�V
�Z
�W�
�X
�Yk-��k-
�[k-�k-
�]
�a
�^�
�_
�`k-��k-
�bk-�k-
�d
�k
�e
�i
�f�
�g
�hk-��k-
�jk-�k-
�l
�p
�m�
�n
�ok-��k-
�qk-�k-
�s
��
�t
��
�u
�|
�v
�y�
�w
�xk-�k-�
�z
�{k-�k-
�}
���
�~
�k-�k-�
��
��k-�k-
��
��
��
���
��
��k-�k-�
��
��k-�k-
��
���
��
��k-�k-�
��
��k-�k-
��
��
��
��
��
���
��
��k-�k-�
��
��k-�k-
��
���
��
��k-�k-
��
��
���
��
��k-��k-
��k-�k-
��
��
��
��
��
��
���
��
��k-��k-
��k-�k-
��
��
���
��
��k-��k-
��k-�k-
��
��
��
��
���
��
��k-��k-
��k-�k-
��
��
���
��
��k-��k-
��k-�k-
��
�m
��
�
��
��
��
��
��
��
��
���
��
��k-�k-�
��
��k-�k-
��
���
��
��k-�k-�
��
��k-�k-
��
��
��
���
��
��k-�k-�
��
��k-�k-
��
���
��
��k-�k-�
��
��k-�k-
��
��
��
��
��
���
��
��k-�k-�
��
��k-�k-
��
���
��
��k-�k-
��
��
���
��
��k-��k-
��k-�k-
��
�
��
�
��
�
���
�
�k-��k-
�k-�k-
�
�	
��
�
�k-��k-
�
k-�k-
�
�
�

�
��
�
�k-��k-
�k-�k-
�
�
��
�
�k-��k-
�k-�k-
�
�:
�
�+
�
�$
�
�!�
�
� k-�k-�
�"
�#k-�k-
�%
�(�
�&
�'k-�k-�
�)
�*k-�k-
�,
�3
�-
�0�
�.
�/k-�k-�
�1
�2k-�k-
�4
�7�
�5
�6k-�k-�
�8
�9k-�k-
�;
�N
�<
�C
�=
�@�
�>
�?k-�k-�
�A
�Bk-�k-
�D
�G�
�E
�Fk-�k-
�H
�L
�I�
�J
�Kk-��k-
�Mk-�k-
�O
�^
�P
�W
�Q
�U
�R�
�S
�Tk-��k-
�Vk-�k-
�X
�\
�Y�
�Z
�[k-��k-
�]k-�k-
�_
�f
�`
�d
�a�
�b
�ck-��k-
�ek-�k-
�g
�k
�h�
�i
�jk-��k-
�lk-�k-
�nk-
�o
��
�p
�
�q
�x
�r
�u�
�s
�tk-�k-�
�v
�wk-�k-
�y
�|�
�z
�{k-�k-�
�}
�~k-�k-
��
��
��
���
��
��k-�k-�
��
��k-�k-
��
���
��
��k-�k-�
��
��k-�k-
��
��
��
��
��
���
��
��k-�k-�
��
��k-�k-
��
���
��
��k-�k-
��
��
���
��
��k-��k-
��k-�k-
��
��
��
��
��
��
���
��
��k-��k-
��k-�k-
��
��
���
��
��k-��k-
��k-�k-
��
��
��
��
���
��
��k-��k-
��k-�k-
��
��
���
��
��k-��k-
��k-�k-
��
�a
��
�
��
�k
��
�
��
��
��
��
��
��
��
����
��
��k-��k-��
��
��k-��k-
��
����
��
��k-��k-��
��
��k-��k-
��
��
��
����
��
��k-��k-��
��
��k-��k-
��
����
��
��k-��k-��
��
��k-��k-
��
��
��
��
��
����
��
��k-��k-��
��
��k-��k-
��
����
��
��k-��k-
��
��
����
��
��k-����k-
��k-��k-
��
�	
��
�
��
�
����
��
��k-����k-
�k-��k-
�
�
���
�
�k-����k-
�k-��k-
�

�
�
�
���
�

�k-����k-
�k-��k-
�
�
���
�
�k-����k-
�k-��k-
�
�8
�
�)
�
�"
�
���
�
�k-��k-��
� 
�!k-��k-
�#
�&��
�$
�%k-��k-��
�'
�(k-��k-
�*
�1
�+
�.��
�,
�-k-��k-��
�/
�0k-��k-
�2
�5��
�3
�4k-��k-��
�6
�7k-��k-
�9
�L
�:
�A
�;
�>��
�<
�=k-��k-��
�?
�@k-��k-
�B
�E��
�C
�Dk-��k-
�F
�J
�G��
�H
�Ik-����k-
�Kk-��k-
�M
�\
�N
�U
�O
�S
�P��
�Q
�Rk-����k-
�Tk-��k-
�V
�Z
�W��
�X
�Yk-����k-
�[k-��k-
�]
�d
�^
�b
�_��
�`
�ak-����k-
�ck-��k-
�e
�i
�f��
�g
�hk-����k-
�jk-��k-
�l
��
�m
��
�n
�}
�o
�v
�p
�s��
�q
�rk-��k-��
�t
�uk-��k-
�w
�z��
�x
�yk-��k-��
�{
�|k-��k-
�~
��
�
����
��
��k-��k-��
��
��k-��k-
��
����
��
��k-��k-��
��
��k-��k-
��
��
��
��
��
����
��
��k-��k-��
��
��k-��k-
��
����
��
��k-��k-
��
��
����
��
��k-����k-
��k-��k-
��
��
��
��
��
��
����
��
��k-����k-
��k-��k-
��
��
����
��
��k-����k-
��k-��k-
��
��
��
��
����
��
��k-����k-
��k-��k-
��
��
����
��
��k-����k-
��k-��k-
��
��
��
��
��
��
��
����
��
��k-��k-��
��
��k-��k-
��
����
��
��k-��k-��
��
��k-��k-
��
��
��
����
��
��k-��k-��
��
��k-��k-
��
����
��
��k-��k-��
��
��k-��k-
��
��
��
��
��
����
��
��k-��k-��
��
��k-��k-
��
����
��
��k-��k-
��
��
����
��
��k-����k-
��k-��k-
��
�
��
��
��
��
����
��
��k-����k-
��k-��k-
��
�
����
��
�k-����k-
�k-��k-
�
�
�
�	
���
�
�k-����k-
�
k-��k-
�
�
�
��
�
�k-����k-
�k-��k-
�
��
�
�g
�
�4
�
�%
�
�
�
���
�
�k-��k-��
�
�k-��k-
�
�"��
� 
�!k-��k-��
�#
�$k-��k-
�&
�-
�'
�*��
�(
�)k-��k-��
�+
�,k-��k-
�.
�1��
�/
�0k-��k-��
�2
�3k-��k-
�5
�H
�6
�=
�7
�:��
�8
�9k-��k-��
�;
�<k-��k-
�>
�A��
�?
�@k-��k-
�B
�F
�C��
�D
�Ek-����k-
�Gk-��k-
�I
�X
�J
�Q
�K
�O
�L��
�M
�Nk-����k-
�Pk-��k-
�R
�V
�S��
�T
�Uk-����k-
�Wk-��k-
�Y
�`
�Z
�^
�[��
�\
�]k-����k-
�_k-��k-
�a
�e
�b��
�c
�dk-����k-
�fk-��k-
�h
��
�i
�x
�j
�q
�k
�n��
�l
�mk-��k-��
�o
�pk-��k-
�r
�u��
�s
�tk-��k-��
�v
�wk-��k-
�y
��
�z
�}��
�{
�|k-��k-��
�~
�k-��k-
��
����
��
��k-��k-��
��
��k-��k-
��
��
��
��
��
����
��
��k-��k-��
��
��k-��k-
��
����
��
��k-��k-
��
��
����
��
��k-����k-
��k-��k-
��
��
��
��
��
��
����
��
��k-����k-
��k-��k-
��
��
����
��
��k-����k-
��k-��k-
��
��
��
��
����
��
��k-����k-
��k-��k-
��
��
����
��
��k-����k-
��k-��k-
��
�
��
��
��
��
��
��
��
����
��
��k-��k-��
��
��k-��k-
��
����
��
��k-��k-��
��
��k-��k-
��
��
��
����
��
��k-��k-��
��
��k-��k-
��
����
��
��k-��k-��
��
��k-��k-
��
��
��
��
��
����
��
��k-��k-��
��
��k-��k-
��
����
��
��k-��k-
��
��
����
��
��k-����k-
��k-��k-
��
��
��
��
��
��
����
��
��k-����k-
��k-��k-
��
��
����
��
��k-����k-
��k-��k-
�
�
�
�
���
�
�k-����k-
�k-��k-
�
�
�	��
�

�k-����k-
�
k-��k-
�
�.
�
�
�
�
�
���
�
�k-��k-��
�
�k-��k-
�
���
�
�k-��k-��
�
�k-��k-
� 
�'
�!
�$��
�"
�#k-��k-��
�%
�&k-��k-
�(
�+��
�)
�*k-��k-��
�,
�-k-��k-
�/
�B
�0
�7
�1
�4��
�2
�3k-��k-��
�5
�6k-��k-
�8
�;��
�9
�:k-��k-
�<
�@
�=��
�>
�?k-����k-
�Ak-��k-
�C
�R
�D
�K
�E
�I
�F��
�G
�Hk-����k-
�Jk-��k-
�L
�P
�M��
�N
�Ok-����k-
�Qk-��k-
�S
�Z
�T
�X
�U��
�V
�Wk-����k-
�Yk-��k-
�[
�_
�\��
�]
�^k-����k-
�`k-��k-
�b
��
�c
�

�d
��
�e
��
�f
�u
�g
�n
�h
�k��
�i
�jk-��k-��
�l
�mk-��k-
�o
�r��
�p
�qk-��k-��
�s
�tk-��k-
�v
�}
�w
�z��
�x
�yk-��k-��
�{
�|k-��k-
�~
����
�
��k-��k-��
��
��k-��k-
��
��
��
��
��
����
��
��k-��k-��
��
��k-��k-
��
����
��
��k-��k-
��
��
����
��
��k-����k-
��k-��k-
��
��
��
��
��
��
����
��
��k-����k-
��k-��k-
��
��
����
��
��k-����k-
��k-��k-
��
��
��
��
����
��
��k-����k-
��k-��k-
��
��
����
��
��k-����k-
��k-��k-
��
��
��
��
��
��
��
����
��
��k-��k-��
��
��k-��k-
��
����
��
��k-��k-��
��
��k-��k-
��
��
��
����
��
��k-��k-��
��
��k-��k-
��
����
��
��k-��k-��
��
��k-��k-
��
��
��
��
��
����
��
��k-��k-��
��
��k-��k-
��
����
��
��k-��k-
��
��
����
��
��k-����k-
��k-��k-
��
��
��
��
��
��
����
��
��k-����k-
��k-��k-
��
��
����
��
��k-����k-
��k-��k-
��
�
��
�
����
��
�k-����k-
�k-��k-
�
�
���
�
�k-����k-
�	k-��k-
�
�^
�
�+
�

�
�
�
�
��i
�
�k-�ik-�i
�
�k-�ik-
�
��i
�
�k-�ik-�i
�
�k-�ik-
�
�$
�
�!�i
�
� k-�ik-�i
�"
�#k-�ik-
�%
�(�i
�&
�'k-�ik-�i
�)
�*k-�ik-
�,
�?
�-
�4
�.
�1�i
�/
�0k-�ik-�i
�2
�3k-�ik-
�5
�8�i
�6
�7k-�ik-
�9
�=
�:�i
�;
�<k-�i�ik-
�>k-�ik-
�@
�O
�A
�H
�B
�F
�C�i
�D
�Ek-�i�ik-
�Gk-�ik-
�I
�M
�J�i
�K
�Lk-�i�ik-
�Nk-�ik-
�P
�W
�Q
�U
�R�i
�S
�Tk-�i�ik-
�Vk-�ik-
�X
�\
�Y�i
�Z
�[k-�i�ik-
�]k-�ik-
�_
�~
�`
�o
�a
�h
�b
�e�i
�c
�dk-�ik-�i
�f
�gk-�ik-
�i
�l�i
�j
�kk-�ik-�i
�m
�nk-�ik-
�p
�w
�q
�t�i
�r
�sk-�ik-�i
�u
�vk-�ik-
�x
�{�i
�y
�zk-�ik-�i
�|
�}k-�ik-
�
��
��
��
��
���i
��
��k-�ik-�i
��
��k-�ik-
��
���i
��
��k-�ik-
��
��
���i
��
��k-�i�ik-
��k-�ik-
��
��
��
��
��
��
���i
��
��k-�i�ik-
��k-�ik-
��
��
���i
��
��k-�i�ik-
��k-�ik-
��
��
��
��
���i
��
��k-�i�ik-
��k-�ik-
��
��
���i
��
��k-�i�ik-
��k-�ik-
��Y
��
��
��
��
��
��
��
��
���i
��
��k-�ik-�i
��
��k-�ik-
��
���i
��
��k-�ik-�i
��
��k-�ik-
��
��
��
���i
��
��k-�ik-�i
��
��k-�ik-
��
���i
��
��k-�ik-�i
��
��k-�ik-
��
��
��
��
��
���i
��
��k-�ik-�i
��
��k-�ik-
��
���i
��
��k-�ik-
��
��
���i
��
��k-�i�ik-
��k-�ik-
��
��
��
��
��
��
���i
��
��k-�i�ik-
��k-�ik-
��
��
���i
��
��k-�i�ik-
��k-�ik-
��
��
��
��
���i
��
��k-�i�ik-
��k-�ik-�ik-�i�ik-k-�ik-&	

�ik-�ik-�ik-�ik-�ik-�ik-�ik-�ik-�ik-�ik-�ik-�ik- #�i!"k-�ik-�i$%k-�ik-':(/),�i*+k-�ik-�i-.k-�ik-03�i12k-�ik-485�i67k-�i�ik-9k-�ik-;J<C=A>�i?@k-�i�ik-Bk-�ik-DHE�iFGk-�i�ik-Ik-�ik-KRLPM�iNOk-�i�ik-Qk-�ik-SWT�iUVk-�i�ik-Xk-�ik-Zk-[z\k]d^a�i_`k-�ik-�ibck-�ik-eh�ifgk-�ik-�iijk-�ik-lsmp�inok-�ik-�iqrk-�ik-tw�iuvk-�ik-�ixyk-�ik-{�|�}��i~k-�ik-�i��k-�ik-���i��k-�ik-����i��k-�i�ik-�k-�ik-��������i��k-�i�ik-�k-�ik-����i��k-�i�ik-�k-�ik-������i��k-�i�ik-�k-�ik-����i��k-�i�ik-�k-�ik-���N���X����������[��k-�[k-�[��k-�[k-���[��k-�[k-�[��k-�[k-�����[��k-�[k-�[��k-�[k-���[��k-�[k-�[��k-�[k-�������[��k-�[k-�[��k-�[k-���[��k-�[k-����[��k-�[�[k-�k-�[k-��������[��k-�[�[k-�k-�[k-����[��k-�[�[k-�k-�[k-������[��k-�[�[k-�k-�[k-��[k-�[�[k-k-�[k-%	�[
k-�[k-�[
k-�[k-�[k-�[k-�[k-�[k-�[k-�[k-�[k-�[k-"�[ !k-�[k-�[#$k-�[k-&9'.(+�[)*k-�[k-�[,-k-�[k-/2�[01k-�[k-374�[56k-�[�[k-8k-�[k-:I;B<@=�[>?k-�[�[k-Ak-�[k-CGD�[EFk-�[�[k-Hk-�[k-JQKOL�[MNk-�[�[k-Pk-�[k-RVS�[TUk-�[�[k-Wk-�[k-Y�Zy[j\c]`�[^_k-�[k-�[abk-�[k-dg�[efk-�[k-�[hik-�[k-krlo�[mnk-�[k-�[pqk-�[k-sv�[tuk-�[k-�[wxk-�[k-z�{�|�[}~k-�[k-�[��k-�[k-���[��k-�[k-����[��k-�[�[k-�k-�[k-��������[��k-�[�[k-�k-�[k-����[��k-�[�[k-�k-�[k-������[��k-�[�[k-�k-�[k-����[��k-�[�[k-�k-�[k-���������[��k-�[k-�[��k-�[k-���[��k-�[k-�[��k-�[k-�����[��k-�[k-�[��k-�[k-���[��k-�[k-�[��k-�[k-�������[��k-�[k-�[��k-�[k-���[��k-�[k-����[��k-�[�[k-�k-�[k-��������[��k-�[�[k-�k-�[k-����[��k-�[�[k-�k-�[k-������[��k-�[�[k-�k-�[k-����[��k-�[�[k-�k-�[k-�T!�[k-�[k-�[	
k-�[k-�[
k-�[k-�[k-�[k-�[k-�[k-�[k-�[k-�[k-�[k-�[ k-�[k-"5#*$'�[%&k-�[k-�[()k-�[k-+.�[,-k-�[k-/30�[12k-�[�[k-4k-�[k-6E7>8<9�[:;k-�[�[k-=k-�[k-?C@�[ABk-�[�[k-Dk-�[k-FMGKH�[IJk-�[�[k-Lk-�[k-NRO�[PQk-�[�[k-Sk-�[k-UtVeW^X[ִYZk-ִk-ִ\]k-ִk-_bִ`ak-ִk-ִcdk-ִk-fmgjִhik-ִk-ִklk-ִk-nqִopk-ִk-ִrsk-ִk-u�v}wzִxyk-ִk-ִ{|k-ִk-~�ִ�k-ִk-���ִ��k-ִִk-�k-ִk-�������ִ��k-ִִk-�k-ִk-���ִ��k-ִִk-�k-ִk-�����ִ��k-ִִk-�k-ִk-���ִ��k-ִִk-�k-ִk-����������ִ��k-ִk-ִ��k-ִk-��ִ��k-ִk-ִ��k-ִk-����ִ��k-ִk-ִ��k-ִk-��ִ��k-ִk-ִ��k-ִk-������ִ��k-ִk-ִ��k-ִk-��ִ��k-ִk-���ִ��k-ִִk-�k-ִk-�������ִ��k-ִִk-�k-ִk-���ִ��k-ִִk-�k-ִk-�����ִ��k-ִִk-�k-ִk-���ִ��k-ִִk-�k-ִk-����ִk-ִk-ִk-ִk-	ִk-ִk-ִ
k-ִk-
ִk-ִk-ִk-ִk-ִk-ִk-ִk-ִk-/$!ִ k-ִk-ִ"#k-ִk-%(ִ&'k-ִk-)-*ִ+,k-ִִk-.k-ִk-0?18263ִ45k-ִִk-7k-ִk-9=:ִ;<k-ִִk->k-ִk-@GAEBִCDk-ִִk-Fk-ִk-HLIִJKk-ִִk-Mk-ִk-O�P�Q�RqSbT[UXִVWk-ִk-ִYZk-ִk-\_ִ]^k-ִk-ִ`ak-ִk-cjdgִefk-ִk-ִhik-ִk-knִlmk-ִk-ִopk-ִk-r�sztwִuvk-ִk-ִxyk-ִk-{~ִ|}k-ִk-��ִ��k-ִִk-�k-ִk-�������ִ��k-ִִk-�k-ִk-���ִ��k-ִִk-�k-ִk-�����ִ��k-ִִk-�k-ִk-���ִ��k-ִִk-�k-ִk-��������ִ��k-ִk-ִ��k-ִk-��ִ��k-ִk-ִ��k-ִk-����ִ��k-ִk-ִ��k-ִk-��ִ��k-ִk-ִ��k-ִk-������ִ��k-ִk-ִ��k-ִk-��ִ��k-ִk-���ִ��k-ִִk-�k-ִk-�������ִ��k-ִִk-�k-ִk-���ִ��k-ִִk-�k-ִk-�����ִ��k-ִִk-�k-ִk-���ִ��k-ִִk-�k-ִk-�K��	����J��k-�Jk-�Jk-�Jk-�Jk-�Jk-�Jk-�Jk-
�J
k-�Jk-�Jk-�Jk-�Jk-�Jk-�Jk-�Jk-,!�Jk-�Jk-�J k-�Jk-"%�J#$k-�Jk-&*'�J()k-�J�Jk-+k-�Jk--<.5/30�J12k-�J�Jk-4k-�Jk-6:7�J89k-�J�Jk-;k-�Jk-=D>B?�J@Ak-�J�Jk-Ck-�Jk-EIF�JGHk-�J�Jk-Jk-�Jk-LrM_NVOR�JPQk-�Jk-�JSTk-Uk-k-�JW[�JXYk-Zk-k-�J�J\]k-^k-k-�J`iae�Jbck-dk-k-�J�Jfgk-hk-k-�Jjn�Jklk-mk-k-�J�Jopk-qk-k-�Js�t}uy�Jvwk-xk-k-�J�Jz{k-|k-k-�J~��J�k-�k-k-�J����J��k-�J�Jk-�k-�k-k-�J��������J��k-�J�Jk-�k-�k-k-�J����J��k-�J�Jk-�k-�k-k-�J������J��k-�J�Jk-�k-�k-k-�J����J��k-�J�Jk-�k-�k-k-�J�s����������J��k-�Jk-�J��k-�k-k-�J���J��k-�k-k-�J�J��k-�k-k-�J�����J��k-�k-k-�J�J��k-�k-k-�J���J��k-�k-k-�J�J��k-�k-k-�J�������J��k-�k-k-�J�J��k-�k-k-�J���J��k-�k-k-�J����J��k-�J�Jk-�k-�k-k-�J�������J��k-�J�Jk-�k-�k-k-�J����J��k-�J�Jk-�k-�k-k-�J	�Jk-�J�Jk-k-k-k-�J
�J
k-�J�Jk-k-k-k-�J8%�Jk-�Jk-�Jk-k-k-�J!�Jk- k-k-�J�J"#k-$k-k-�J&/'+�J()k-*k-k-�J�J,-k-.k-k-�J04�J12k-3k-k-�J�J56k-7k-k-�J9P:C;?�J<=k->k-k-�J�J@Ak-Bk-k-�JDH�JEFk-Gk-k-�JIMJ�JKLk-�J�Jk-Nk-Ok-k-�JQbRZSWT�JUVk-�J�Jk-Xk-Yk-k-�J[_\�J]^k-�J�Jk-`k-ak-k-�Jckdhe�Jfgk-�J�Jk-ik-jk-k-�Jlpm�Jnok-�J�Jk-qk-rk-k-�Jtk-u�v�wx{�Jyzk-�Jk-�J|}k-~k-k-�J���J��k-�k-k-�J�J��k-�k-k-�J�����J��k-�k-k-�J�J��k-�k-k-�J���J��k-�k-k-�J�J��k-�k-k-�J�������J��k-�k-k-�J�J��k-�k-k-�J���J��k-�k-k-�J����J��k-�J�Jk-�k-�k-k-�J��������J��k-�J�Jk-�k-�k-k-�J����J��k-�J�Jk-�k-�k-k-�J������J��k-�J�Jk-�k-�k-k-�J����J��k-�J�Jk-�k-�k-k-�J�v�'���-��������H��k-Hk-H��k-Hk-��H��k-Hk-H��k-Hk-����H��k-Hk-H��k-Hk-��H��k-Hk-H��k-Hk-���H��k-Hk-Hk-Hk-Hk-Hk-	H
k-HHk-
k-Hk-Hk-HHk-k-Hk-Hk-HHk-k-Hk-& $!H"#k-HHk-%k-Hk-'+(H)*k-HHk-,k-Hk-.M/>0714H23k-Hk-H56k-Hk-8;H9:k-Hk-H<=k-Hk-?F@CHABk-Hk-HDEk-Hk-GJHHIk-Hk-HKLk-Hk-NaOVPSHQRk-Hk-HTUk-Hk-WZHXYk-Hk-[_\H]^k-HHk-`k-Hk-bqcjdheHfgk-HHk-ik-Hk-kolHmnk-HHk-pk-Hk-ryswtHuvk-HHk-xk-Hk-z~{H|}k-HHk-k-Hk-����������H��k-Hk-H��k-Hk-��H��k-Hk-H��k-Hk-����H��k-Hk-H��k-Hk-��H��k-Hk-H��k-Hk-������H��k-Hk-H��k-Hk-��H��k-Hk-���H��k-HHk-�k-Hk-�������H��k-HHk-�k-Hk-���H��k-HHk-�k-Hk-�����H��k-HHk-�k-Hk-���H��k-HHk-�k-Hk-��������H��k-Hk-H��k-Hk-��H��k-Hk-H��k-Hk-����H��k-Hk-H��k-Hk-��H��k-Hk-H��k-Hk-�����H��k-Hk-H��k-Hk-�H�k-Hk-Hk-HHk-k-Hk-	
H
k-HHk-k-Hk-Hk-HHk-k-Hk- Hk-HHk-k-Hk-!%"H#$k-HHk-&k-Hk-(�)|*I+:,3-0H./k-Hk-H12k-Hk-47H56k-Hk-H89k-Hk-;B<?H=>k-Hk-H@Ak-Hk-CFHDEk-Hk-HGHk-Hk-J]KRLOHMNk-Hk-HPQk-Hk-SVHTUk-Hk-W[XHYZk-HHk-\k-Hk-^m_f`daHbck-HHk-ek-Hk-gkhHijk-HHk-lk-Hk-nuospHqrk-HHk-tk-Hk-vzwHxyk-HHk-{k-Hk-}�~�������k-�k-���k-�k-�����k-�k-���k-�k-�������k-�k-���k-�k-�����k-�k-���k-�k-���������k-�k-���k-�k-�����k-�k-������k-��k-�k-�k-����������k-��k-�k-�k-������k-��k-�k-�k-��������k-��k-�k-�k-������k-��k-�k-�k-�#�����������k-�k-���k-�k-�����k-�k-���k-�k-�������k-�k-���k-�k-�����k-�k-���k-�k-��������k-�k-���k-�k-�����k-�k-���k-��k-k-�k-
�	
k-��k-k-�k-�k-��k-k-�k-�k-��k-k-�k-!� k-��k-"k-�k-$C%4&-'*�()k-�k-�+,k-�k-.1�/0k-�k-�23k-�k-5<69�78k-�k-�:;k-�k-=@�>?k-�k-�ABk-�k-DWELFI�GHk-�k-�JKk-�k-MP�NOk-�k-QUR�STk-��k-Vk-�k-XgY`Z^[�\]k-��k-_k-�k-aeb�cdk-��k-fk-�k-hoimj�klk-��k-nk-�k-ptq�rsk-��k-uk-�k-w	�x	y�z�{�|�}��~k-�k-���k-�k-�����k-�k-���k-�k-�������k-�k-���k-�k-�����k-�k-���k-�k-���������k-�k-���k-�k-�����k-�k-������k-��k-�k-�k-����������k-��k-�k-�k-������k-��k-�k-�k-��������k-��k-�k-�k-������k-��k-�k-�k-�����������k-�k-���k-�k-�����k-�k-���k-�k-�������k-�k-���k-�k-�����k-�k-���k-�k-�	�������k-�k-���k-�k-�����k-�k-������k-��k-�k-�k-								�		k-��k-	k-�k-	
		�		
k-��k-	k-�k-					�		k-��k-	k-�k-			�		k-��k-	k-�k-	 	s	!	@	"	1	#	*	$	'`�	%	&k-`�k-`�	(	)k-`�k-	+	.`�	,	-k-`�k-`�	/	0k-`�k-	2	9	3	6`�	4	5k-`�k-`�	7	8k-`�k-	:	=`�	;	<k-`�k-`�	>	?k-`�k-	A	T	B	I	C	F`�	D	Ek-`�k-`�	G	Hk-`�k-	J	M`�	K	Lk-`�k-	N	R	O`�	P	Qk-`�`�k-	Sk-`�k-	U	d	V	]	W	[	X`�	Y	Zk-`�`�k-	\k-`�k-	^	b	_`�	`	ak-`�`�k-	ck-`�k-	e	l	f	j	g`�	h	ik-`�`�k-	kk-`�k-	m	q	n`�	o	pk-`�`�k-	rk-`�k-	t	�	u	�	v	}	w	z`�	x	yk-`�k-`�	{	|k-`�k-	~	�`�		�k-`�k-`�	�	�k-`�k-	�	�	�	�`�	�	�k-`�k-`�	�	�k-`�k-	�	�`�	�	�k-`�k-`�	�	�k-`�k-	�	�	�	�	�	�`�	�	�k-`�k-`�	�	�k-`�k-	�	�`�	�	�k-`�k-	�	�	�`�	�	�k-`�`�k-	�k-`�k-	�	�	�	�	�	�	�`�	�	�k-`�`�k-	�k-`�k-	�	�	�`�	�	�k-`�`�k-	�k-`�k-	�	�	�	�	�`�	�	�k-`�`�k-	�k-`�k-	�	�	�`�	�	�k-`�`�k-	�k-`�k-	�
n	�
	�	�	�	�	�	�	�	�`�	�	�k-`�k-`�	�	�k-`�k-	�	�`�	�	�k-`�k-`�	�	�k-`�k-	�	�	�	�`�	�	�k-`�k-`�	�	�k-`�k-	�	�`�	�	�k-`�k-`�	�	�k-`�k-	�	�	�	�	�	�`�	�	�k-`�k-`�	�	�k-`�k-	�	�`�	�	�k-`�k-	�	�	�`�	�	�k-`�`�k-	�k-`�k-	�
	�
	�

`�

k-`�`�k-
k-`�k-



`�

	k-`�`�k-
k-`�k-





`�

k-`�`�k-
k-`�k-


`�

k-`�`�k-
k-`�k-

;

,

%

"`�
 
!k-`�k-`�
#
$k-`�k-
&
)`�
'
(k-`�k-`�
*
+k-`�k-
-
4
.
1`�
/
0k-`�k-`�
2
3k-`�k-
5
8`�
6
7k-`�k-`�
9
:k-`�k-
<
O
=
D
>
A`�
?
@k-`�k-`�
B
Ck-`�k-
E
H`�
F
Gk-`�k-
I
M
J`�
K
Lk-`�`�k-
Nk-`�k-
P
_
Q
X
R
V
S`�
T
Uk-`�`�k-
Wk-`�k-
Y
]
Z`�
[
\k-`�`�k-
^k-`�k-
`
g
a
e
b`�
c
dk-`�`�k-
fk-`�k-
h
l
i`�
j
kk-`�`�k-
mk-`�k-
ok-
p
�
q
�
r
y
s
v`�
t
uk-`�k-`�
w
xk-`�k-
z
}`�
{
|k-`�k-`�
~
k-`�k-
�
�
�
�`�
�
�k-`�k-`�
�
�k-`�k-
�
�`�
�
�k-`�k-`�
�
�k-`�k-
�
�
�
�
�
�`�
�
�k-`�k-`�
�
�k-`�k-
�
�`�
�
�k-`�k-
�
�
�`�
�
�k-`�`�k-
�k-`�k-
�
�
�
�
�
�
�`�
�
�k-`�`�k-
�k-`�k-
�
�
�`�
�
�k-`�`�k-
�k-`�k-
�
�
�
�
�`�
�
�k-`�`�k-
�k-`�k-
�
�
�`�
�
�k-`�`�k-
�k-`�k-
��
��
�
d
�
�n
�
�
�
�
�
�
�
�
�֥
�
�k-֥k-֥
�
�k-֥k-
�
�֥
�
�k-֥k-֥
�
�k-֥k-
�
�
�
�֥
�
�k-֥k-֥
�
�k-֥k-
�
�֥
�
�k-֥k-֥
�
�k-֥k-
�
�
�
�
�
�֥
�
�k-֥k-֥
�
�k-֥k-
�
�֥
�
�k-֥k-
�
�
�֥
�
�k-֥֥k-
�k-֥k-
�
�
�֥k-֥֥k-k-֥k-
֥	k-֥֥k-k-֥k-
֥k-֥֥k-k-֥k-֥k-֥֥k-k-֥k-;,%"֥ !k-֥k-֥#$k-֥k-&)֥'(k-֥k-֥*+k-֥k--4.1֥/0k-֥k-֥23k-֥k-58֥67k-֥k-֥9:k-֥k-<O=D>A֥?@k-֥k-֥BCk-֥k-EH֥FGk-֥k-IMJ֥KLk-֥֥k-Nk-֥k-P_QXRVS֥TUk-֥֥k-Wk-֥k-Y]Z֥[\k-֥֥k-^k-֥k-`gaeb֥cdk-֥֥k-fk-֥k-hli֥jkk-֥֥k-mk-֥k-o�p�q�rysv֥tuk-֥k-֥wxk-֥k-z}֥{|k-֥k-֥~k-֥k-����֥��k-֥k-֥��k-֥k-��֥��k-֥k-֥��k-֥k-������֥��k-֥k-֥��k-֥k-��֥��k-֥k-���֥��k-֥֥k-�k-֥k-�������֥��k-֥֥k-�k-֥k-���֥��k-֥֥k-�k-֥k-�����֥��k-֥֥k-�k-֥k-���֥��k-֥֥k-�k-֥k-��������֥��k-֥k-֥��k-֥k-��֥��k-֥k-֥��k-֥k-����֥��k-֥k-֥��k-֥k-��֥��k-֥k-֥��k-֥k-������֥��k-֥k-֥��k-֥k-��֥��k-֥k-���֥��k-֥֥k-�k-֥k-������֥��k-֥֥k-�k-֥k-֥k-֥֥k-k-֥k-	֥
k-֥֥k-
k-֥k-֥k-֥֥k-k-֥k-�j7(!֥k-֥k-֥ k-֥k-"%֥#$k-֥k-֥&'k-֥k-)0*-֥+,k-֥k-֥./k-֥k-14֥23k-֥k-֥56k-֥k-8K9@:=֥;<k-֥k-֥>?k-֥k-AD֥BCk-֥k-EIF֥GHk-֥֥k-Jk-֥k-L[MTNRO֥PQk-֥֥k-Sk-֥k-UYV֥WXk-֥֥k-Zk-֥k-\c]a^֥_`k-֥֥k-bk-֥k-dhe֥fgk-֥֥k-ik-֥k-k�l{mtnq֖opk-֖k-֖rsk-֖k-ux֖vwk-֖k-֖yzk-֖k-|�}�֖~k-֖k-֖��k-֖k-��֖��k-֖k-֖��k-֖k-������֖��k-֖k-֖��k-֖k-��֖��k-֖k-���֖��k-֖֖k-�k-֖k-�������֖��k-֖֖k-�k-֖k-���֖��k-֖֖k-�k-֖k-�����֖��k-֖֖k-�k-֖k-���֖��k-֖֖k-�k-֖k-�
��������֖��k-֖k-֖��k-֖k-��֖��k-֖k-֖��k-֖k-����֖��k-֖k-֖��k-֖k-��֖��k-֖k-֖��k-֖k-������֖��k-֖k-֖��k-֖k-��֖��k-֖k-���֖��k-֖֖k-�k-֖k-�
�����֖��k-֖֖k-�k-֖k-�
�֖��k-֖֖k-
k-֖k-




֖

k-֖֖k-
	k-֖k-


֖


k-֖֖k-
k-֖k-

1

"



֖

k-֖k-֖

k-֖k-

֖

k-֖k-֖
 
!k-֖k-
#
*
$
'֖
%
&k-֖k-֖
(
)k-֖k-
+
.֖
,
-k-֖k-֖
/
0k-֖k-
2
E
3
:
4
7֖
5
6k-֖k-֖
8
9k-֖k-
;
>֖
<
=k-֖k-
?
C
@֖
A
Bk-֖֖k-
Dk-֖k-
F
U
G
N
H
L
I֖
J
Kk-֖֖k-
Mk-֖k-
O
S
P֖
Q
Rk-֖֖k-
Tk-֖k-
V
]
W
[
X֖
Y
Zk-֖֖k-
\k-֖k-
^
b
_֖
`
ak-֖֖k-
ck-֖k-
e�
f

g
�
h
�
i
x
j
q
k
n֖
l
mk-֖k-֖
o
pk-֖k-
r
u֖
s
tk-֖k-֖
v
wk-֖k-
y
�
z
}֖
{
|k-֖k-֖
~
k-֖k-
�
�֖
�
�k-֖k-֖
�
�k-֖k-
�
�
�
�
�
�֖
�
�k-֖k-֖
�
�k-֖k-
�
�֖
�
�k-֖k-
�
�
�֖
�
�k-֖֖k-
�k-֖k-
�
�
�
�
�
�
�֖
�
�k-֖֖k-
�k-֖k-
�
�
�֖
�
�k-֖֖k-
�k-֖k-
�
�
�
�
�֖
�
�k-֖֖k-
�k-֖k-
�
�
�֖
�
�k-֖֖k-
�k-֖k-
�
�
�
�
�
�
�
�֖
�
�k-֖k-֖
�
�k-֖k-
�
�֖
�
�k-֖k-֖
�
�k-֖k-
�
�
�
�֖
�
�k-֖k-֖
�
�k-֖k-
�
�֖
�
�k-֖k-֖
�
�k-֖k-
�
�
�
�
�
�֖
�
�k-֖k-֖
�
�k-֖k-
�
�֖
�
�k-֖k-
�
�
�֖
�
�k-֖֖k-
�k-֖k-
�
�
�
�
�
�
�֖
�
�k-֖֖k-
�k-֖k-
�
�
�֖
�
�k-֖֖k-
�k-֖k-
�֖k-֖֖k-k-֖k-֖	
k-֖֖k-k-֖k-a.�yk-�yk-�yk-�yk-�yk-�yk-�yk-�yk- '!$�y"#k-�yk-�y%&k-�yk-(+�y)*k-�yk-�y,-k-�yk-/B0714�y23k-�yk-�y56k-�yk-8;�y9:k-�yk-<@=�y>?k-�y�yk-Ak-�yk-CRDKEIF�yGHk-�y�yk-Jk-�yk-LPM�yNOk-�y�yk-Qk-�yk-SZTXU�yVWk-�y�yk-Yk-�yk-[_\�y]^k-�y�yk-`k-�yk-b�crdkeh�yfgk-�yk-�yijk-�yk-lo�ymnk-�yk-�ypqk-�yk-sztw�yuvk-�yk-�yxyk-�yk-{~�y|}k-�yk-�y�k-�yk-�������y��k-�yk-�y��k-�yk-���y��k-�yk-����y��k-�y�yk-�k-�yk-��������y��k-�y�yk-�k-�yk-����y��k-�y�yk-�k-�yk-������y��k-�y�yk-�k-�yk-����y��k-�y�yk-�k-�yk-�\�	���������y��k-�yk-�y��k-�yk-���y��k-�yk-�y��k-�yk-�����y��k-�yk-�y��k-�yk-���y��k-�yk-�y��k-�yk-�������y��k-�yk-�y��k-�yk-���y��k-�yk-����y��k-�y�yk-�k-�yk-��������y��k-�y�yk-�k-�yk-����y��k-�y�yk-�k-�yk-����y��k-�y�yk-k-�yk-�yk-�y�yk-k-�yk-
)
�yk-�yk-�yk-�yk-�yk-�yk-�yk-�yk-"�yk-�yk-�y !k-�yk-#&�y$%k-�yk-�y'(k-�yk-*=+2,/�y-.k-�yk-�y01k-�yk-36�y45k-�yk-7;8�y9:k-�y�yk-<k-�yk->M?F@DA�yBCk-�y�yk-Ek-�yk-GKH�yIJk-�y�yk-Lk-�yk-NUOSP�yQRk-�y�yk-Tk-�yk-VZW�yXYk-�y�yk-[k-�yk-]k-^}_n`gad�ybck-�yk-�yefk-�yk-hk�yijk-�yk-�ylmk-�yk-ovps�yqrk-�yk-�ytuk-�yk-wz�yxyk-�yk-�y{|k-�yk-~�����y��k-�yk-�y��k-�yk-���y��k-�yk-����y��k-�y�yk-�k-�yk-��������y��k-�y�yk-�k-�yk-����y��k-�y�yk-�k-�yk-������y��k-�y�yk-�k-�yk-����y��k-�y�yk-�k-�yk-�P��Z���������mS��k-mSk-mS��k-mSk-��mS��k-mSk-mS��k-mSk-����mS��k-mSk-mS��k-mSk-��mS��k-mSk-mS��k-mSk-������mS��k-mSk-mS��k-mSk-��mS��k-mSk-���mS��k-mSmSk-�k-mSk-�������mS��k-mSmSk-�k-mSk-���mS��k-mSmSk-�k-mSk-����mS��k-mSmSk-�k-mSk-mSk-mSmSk-k-mSk-'	
mS
k-mSk-mSk-mSk-mSk-mSk-mSk-mSk- mSk-mSk-mSk-mSk-!$mS"#k-mSk-mS%&k-mSk-(;)0*-mS+,k-mSk-mS./k-mSk-14mS23k-mSk-596mS78k-mSmSk-:k-mSk-<K=D>B?mS@Ak-mSmSk-Ck-mSk-EIFmSGHk-mSmSk-Jk-mSk-LSMQNmSOPk-mSmSk-Rk-mSk-TXUmSVWk-mSmSk-Yk-mSk-[�\{]l^e_bmS`ak-mSk-mScdk-mSk-fimSghk-mSk-mSjkk-mSk-mtnqmSopk-mSk-mSrsk-mSk-uxmSvwk-mSk-mSyzk-mSk-|�}�~�mS�k-mSk-mS��k-mSk-��mS��k-mSk-���mS��k-mSmSk-�k-mSk-�������mS��k-mSmSk-�k-mSk-���mS��k-mSmSk-�k-mSk-�����mS��k-mSmSk-�k-mSk-���mS��k-mSmSk-�k-mSk-��������mS��k-mSk-mS��k-mSk-��mS��k-mSk-mS��k-mSk-����mS��k-mSk-mS��k-mSk-��mS��k-mSk-mS��k-mSk-������mS��k-mSk-mS��k-mSk-��mS��k-mSk-���mS��k-mSmSk-�k-mSk-�������mS��k-mSmSk-�k-mSk-���mS��k-mSmSk-�k-mSk-�����mS��k-mSmSk-�k-mSk-���mS��k-mSmSk-k-mSk-�V#

mS	k-mSk-mSk-mSk-mSk-mSk-mSk-mSk-mSk-mSk-mSk-mSk- mSk-mSk-mS!"k-mSk-$7%,&)mS'(k-mSk-mS*+k-mSk--0mS./k-mSk-152mS34k-mSmSk-6k-mSk-8G9@:>;mS<=k-mSmSk-?k-mSk-AEBmSCDk-mSmSk-Fk-mSk-HOIMJmSKLk-mSmSk-Nk-mSk-PTQmSRSk-mSmSk-Uk-mSk-WvXgY`Z]h�[\k-h�k-h�^_k-h�k-adh�bck-h�k-h�efk-h�k-hoilh�jkk-h�k-h�mnk-h�k-psh�qrk-h�k-h�tuk-h�k-w�xy|h�z{k-h�k-h�}~k-h�k-��h���k-h�k-���h���k-h�h�k-�k-h�k-�������h���k-h�h�k-�k-h�k-���h���k-h�h�k-�k-h�k-�����h���k-h�h�k-�k-h�k-���h���k-h�h�k-�k-h�k-����������h���k-h�k-h���k-h�k-��h���k-h�k-h���k-h�k-����h���k-h�k-h���k-h�k-��h���k-h�k-h���k-h�k-������h���k-h�k-h���k-h�k-��h���k-h�k-���h���k-h�h�k-�k-h�k-�������h���k-h�h�k-�k-h�k-���h���k-h�h�k-�k-h�k-�����h���k-h�h�k-�k-h�k-���h���k-h�h�k-�k-h�k-��h�k-h�k-h�k-h�k-h�	
k-h�k-h�
k-h�k-h�k-h�k-h�k-h�k-h�k-h�k-h�k-h�k-1& #h�!"k-h�k-h�$%k-h�k-'*h�()k-h�k-+/,h�-.k-h�h�k-0k-h�k-2A3:485h�67k-h�h�k-9k-h�k-;?<h�=>k-h�h�k-@k-h�k-BICGDh�EFk-h�h�k-Hk-h�k-JNKh�LMk-h�h�k-Ok-h�k-Q�R�S�TsUdV]WZh�XYk-h�k-h�[\k-h�k-^ah�_`k-h�k-h�bck-h�k-elfih�ghk-h�k-h�jkk-h�k-mph�nok-h�k-h�qrk-h�k-t�u|vyh�wxk-h�k-h�z{k-h�k-}�h�~k-h�k-���h���k-h�h�k-�k-h�k-�������h���k-h�h�k-�k-h�k-���h���k-h�h�k-�k-h�k-�����h���k-h�h�k-�k-h�k-���h���k-h�h�k-�k-h�k-��������h���k-h�k-h���k-h�k-��h���k-h�k-h���k-h�k-����h���k-h�k-h���k-h�k-��h���k-h�k-h���k-h�k-������h���k-h�k-h���k-h�k-��h���k-h�k-���h���k-h�h�k-�k-h�k-�������h���k-h�h�k-�k-h�k-���h���k-h�h�k-�k-h�k-�����h���k-h�h�k-�k-h�k-���h���k-h�h�k-�k-h�k-�M����si�k-sik-sik-sik-sik-sik-si	
k-sik-
sik-sik-sik-sik-sik-sik-sik-sik-.# sik-sik-si!"k-sik-$'si%&k-sik-(,)si*+k-sisik--k-sik-/>07152si34k-sisik-6k-sik-8<9si:;k-sisik-=k-sik-?F@DAsiBCk-sisik-Ek-sik-GKHsiIJk-sisik-Lk-sik-NmO^PWQTsiRSk-sik-siUVk-sik-X[siYZk-sik-si\]k-sik-_f`csiabk-sik-sidek-sik-gjsihik-sik-siklk-sik-n�ovpssiqrk-sik-situk-sik-wzsixyk-sik-{|si}~k-sisik-�k-sik-�������si��k-sisik-�k-sik-���si��k-sisik-�k-sik-�����si��k-sisik-�k-sik-���si��k-sisik-�k-sik-�H����������si��k-sik-si��k-sik-��si��k-sik-si��k-sik-����si��k-sik-si��k-sik-��si��k-sik-si��k-sik-������si��k-sik-si��k-sik-��si��k-sik-���si��k-sisik-�k-sik-�������si��k-sisik-�k-sik-���si��k-sisik-�k-sik-�����si��k-sisik-�k-sik-���si��k-sisik-�k-sik-������si��k-sik-si��k-sik-sik-sik-sik-sik-si	
k-sik-si
k-sik-sik-sik-sik-sik-)sik-sik-sik-sik-"si !k-sik-#'$si%&k-sisik-(k-sik-*9+2,0-si./k-sisik-1k-sik-374si56k-sisik-8k-sik-:A;?<si=>k-sisik-@k-sik-BFCsiDEk-sisik-Gk-sik-Ik-JiKZLSMPsiNOk-sik-siQRk-sik-TWsiUVk-sik-siXYk-sik-[b\_si]^k-sik-si`ak-sik-cfsidek-sik-sighk-sik-j}krlosimnk-sik-sipqk-sik-svsituk-sik-w{xsiyzk-sisik-|k-sik-~�����si��k-sisik-�k-sik-���si��k-sisik-�k-sik-�����si��k-sisik-�k-sik-���si��k-sisik-�k-sik-�k-�=���G����������,���k-,�k-,���k-,�k-��,���k-,�k-,���k-,�k-����,���k-,�k-,���k-,�k-��,���k-,�k-,���k-,�k-������,���k-,�k-,���k-,�k-��,���k-,�k-���,���k-,�,�k-�k-,�k-�������,���k-,�,�k-�k-,�k-���,���k-,�,�k-�k-,�k-�����,���k-,�,�k-�k-,�k-���,���k-,�,�k-�k-,�k-������,���k-,�k-,���k-,�k-�,�k-,�k-,�k-,�k-

,�	k-,�k-,�k-,�k-,�k-,�k-,�k-,�k-(,�k-,�k-,�k-,�k-!,� k-,�k-"&#,�$%k-,�,�k-'k-,�k-)8*1+/,,�-.k-,�,�k-0k-,�k-263,�45k-,�,�k-7k-,�k-9@:>;,�<=k-,�,�k-?k-,�k-AEB,�CDk-,�,�k-Fk-,�k-H�IhJYKRLO,�MNk-,�k-,�PQk-,�k-SV,�TUk-,�k-,�WXk-,�k-Za[^,�\]k-,�k-,�_`k-,�k-be,�cdk-,�k-,�fgk-,�k-i|jqkn,�lmk-,�k-,�opk-,�k-ru,�stk-,�k-vzw,�xyk-,�,�k-{k-,�k-}�~���,���k-,�,�k-�k-,�k-���,���k-,�,�k-�k-,�k-�����,���k-,�,�k-�k-,�k-���,���k-,�,�k-�k-,�k-��������,���k-,�k-,���k-,�k-��,���k-,�k-,���k-,�k-����,���k-,�k-,���k-,�k-��,���k-,�k-,���k-,�k-������,���k-,�k-,���k-,�k-��,���k-,�k-���,���k-,�,�k-�k-,�k-�������,���k-,�,�k-�k-,�k-���,���k-,�,�k-�k-,�k-�����,���k-,�,�k-�k-,�k-���,���k-,�,�k-�k-,�k-���C������,���k-,�k-,���k-,�k-��,���k-,�k-,��k-,�k-	,�k-,�k-,�k-,�k-

,�k-,�k-,�k-,�k-$,�k-,�k-,�k-,�k-,�k-,�k-",� !k-,�,�k-#k-,�k-%4&-'+(,�)*k-,�,�k-,k-,�k-.2/,�01k-,�,�k-3k-,�k-5<6:7,�89k-,�,�k-;k-,�k-=A>,�?@k-,�,�k-Bk-,�k-DcETFMGJkHIk-kk-kKLk-kk-NQkOPk-kk-kRSk-kk-U\VYkWXk-kk-kZ[k-kk-]`k^_k-kk-kabk-kk-dwelfikghk-kk-kjkk-kk-mpknok-kk-qurkstk-kkk-vk-kk-x�y�z~{k|}k-kkk-k-kk-���k��k-kkk-�k-kk-�����k��k-kkk-�k-kk-���k��k-kkk-�k-kk-����������k��k-kk-k��k-kk-��k��k-kk-k��k-kk-����k��k-kk-k��k-kk-��k��k-kk-k��k-kk-������k��k-kk-k��k-kk-��k��k-kk-���k��k-kkk-�k-kk-�������k��k-kkk-�k-kk-���k��k-kkk-�k-kk-�����k��k-kkk-�k-kk-���k��k-kkk-�k-kk-�
������k��k-kk-k��k-kk-��k��k-kk-k��k-kk-��k��k-kk-kk-kk-kk-kk-k	k-kk-
kk-kk-kk-kk-kk-kk-kk-kkk-k-kk-. '!%"k#$k-kkk-&k-kk-(,)k*+k-kkk--k-kk-/6041k23k-kkk-5k-kk-7;8k9:k-kkk-<k-kk->�?�@�A`BQCJDGkEFk-kk-kHIk-kk-KNkLMk-kk-kOPk-kk-RYSVkTUk-kk-kWXk-kk-Z]k[\k-kk-k^_k-kk-atbicfkdek-kk-kghk-kk-jmkklk-kk-nrokpqk-kkk-sk-kk-u�v}w{xkyzk-kkk-|k-kk-~�k��k-kkk-�k-kk-�����k��k-kkk-�k-kk-���k��k-kkk-�k-kk-��������k��k-kk-k��k-kk-��k��k-kk-k��k-kk-����k��k-kk-k��k-kk-��k��k-kk-k��k-kk-������k��k-kk-k��k-kk-��k��k-kk-���k��k-kkk-�k-kk-�������k��k-kkk-�k-kk-���k��k-kkk-�k-kk-�����k��k-kkk-�k-kk-���k��k-kkk-�k-kk-�:�������*F��k-*Fk-*F��k-*Fk-��*F��k-*Fk-*F��k-*Fk-���*F��k-*Fk-*F��k-*Fk-*Fk-*Fk-*Fk-*Fk-	

*Fk-*Fk-*Fk-*Fk-*Fk-*Fk-*Fk-*F*Fk-k-*Fk-+$"*F !k-*F*Fk-#k-*Fk-%)&*F'(k-*F*Fk-*k-*Fk-,3-1.*F/0k-*F*Fk-2k-*Fk-485*F67k-*F*Fk-9k-*Fk-;Z<K=D>A*F?@k-*Fk-*FBCk-*Fk-EH*FFGk-*Fk-*FIJk-*Fk-LSMP*FNOk-*Fk-*FQRk-*Fk-TW*FUVk-*Fk-*FXYk-*Fk-[n\c]`*F^_k-*Fk-*Fabk-*Fk-dg*Fefk-*Fk-hli*Fjkk-*F*Fk-mk-*Fk-o~pwqur*Fstk-*F*Fk-vk-*Fk-x|y*Fz{k-*F*Fk-}k-*Fk-����*F��k-*F*Fk-�k-*Fk-���*F��k-*F*Fk-�k-*Fk-�5����������*F��k-*Fk-*F��k-*Fk-��*F��k-*Fk-*F��k-*Fk-����*F��k-*Fk-*F��k-*Fk-��*F��k-*Fk-*F��k-*Fk-������*F��k-*Fk-*F��k-*Fk-��*F��k-*Fk-���*F��k-*F*Fk-�k-*Fk-�������*F��k-*F*Fk-�k-*Fk-���*F��k-*F*Fk-�k-*Fk-�����*F��k-*F*Fk-�k-*Fk-���*F��k-*F*Fk-�k-*Fk-�������*F��k-*Fk-*F��k-*Fk-��*F��k-*Fk-*F��k-*Fk-����*F��k-*Fk-*F��k-*Fk-��*F��k-*Fk-*Fk-*Fk-*Fk-*Fk-*F	
k-*Fk-*F
k-*Fk-*Fk-*F*Fk-k-*Fk-&*Fk-*F*Fk-k-*Fk- $!*F"#k-*F*Fk-%k-*Fk-'.(,)*F*+k-*F*Fk--k-*Fk-/30*F12k-*F*Fk-4k-*Fk-6k-7V8G9@:=*F;<k-*Fk-*F>?k-*Fk-AD*FBCk-*Fk-*FEFk-*Fk-HOIL*FJKk-*Fk-*FMNk-*Fk-PS*FQRk-*Fk-*FTUk-*Fk-WjX_Y\*FZ[k-*Fk-*F]^k-*Fk-`c*Fabk-*Fk-dhe*Ffgk-*F*Fk-ik-*Fk-kzlsmqn*Fopk-*F*Fk-rk-*Fk-txu*Fvwk-*F*Fk-yk-*Fk-{�|�}*F~k-*F*Fk-�k-*Fk-���*F��k-*F*Fk-�k-*Fk-�#q������5���������������k-�k-���k-�k-�����k-�k-���k-�k-�������k-�k-���k-�k-�����k-�k-���k-�k-�k-�k-�����k-�k-���k-�k-�����������k-�k-���k-�k-�����k-�k-���k-�k-�������k-�k-���k-�k-�����k-�k-���k-�k-�k-�k-�����k-�k-���k-�k-�����������k-�k-���k-�k-�����k-�k-���k-�k-�������k-�k-���k-�k-����k-�k-�k-�k-k-k-	�k-�k-�
k-�k-
,�k-�k-�k-�k-�k-�k-�k-�k-%"� !k-�k-�#$k-�k-&)�'(k-�k-�*+k-�k--k-.k-/2�01k-�k-�34k-�k-6�7`8W9H:A;>�<=k-�k-�?@k-�k-BE�CDk-�k-�FGk-�k-IPJM�KLk-�k-�NOk-�k-QT�RSk-�k-�UVk-�k-Xk-Yk-Z]�[\k-�k-�^_k-�k-a�bqcjdgc�efk-c�k-c�hik-c�k-knc�lmk-c�k-c�opk-c�k-rysvc�tuk-c�k-c�wxk-c�k-z}c�{|k-c�k-c�~k-c�k-�k-�k-��c���k-c�k-c���k-c�k-����������c���k-c�k-c���k-c�k-��c���k-c�k-c���k-c�k-����c���k-c�k-c���k-c�k-��c���k-c�k-c���k-c�k-�k-�k-��c���k-c�k-c���k-c�k-��������c���k-c�k-c���k-c�k-��c���k-c�k-c���k-c�k-����c���k-c�k-c���k-c�k-��c���k-c�k-c���k-c�k-�k-�k-��c���k-c�k-c���k-c�k-���7��������c���k-c�k-c���k-c�k-��c���k-c�k-���c�c��k-c��k-c�k-����c���k-c�k-c���k-c�k-��c���k-c�k-c�k-c�k-k-k-c�k-c�k-c�	
k-c�k-.
c�k-c�k-c�k-c�k-c�k-c�k-c�c�k-c�k-c�k- '!$c�"#k-c�k-c�%&k-c�k-(+c�)*k-c�k-c�,-k-c�k-/k-0k-14c�23k-c�k-c�56k-c�k-8d9[:I;B<?�=>k-�k-�@Ak-�k-CF�DEk-�k-�GHk-�k-JTKN�LMk-�k-OR�PQ�k-�Sk-�k-UX�VWk-�k-�YZk-�k-\k-]k-^a�_`k-�k-�bck-�k-e�fugnhk�ijk-�k-�lmk-�k-or�pqk-�k-�stk-�k-v}wz�xyk-�k-�{|k-�k-~���k-�k-���k-�k-�k-�k-�����k-�k-���k-�k-���������������k-�k-���k-�k-�����k-�k-���k-�k-�������k-�k-���k-�k-�����k-�k-���k-�k-�k-�k-�����k-�k-���k-�k-�����������k-�k-���k-�k-�����k-�k-���k-�k-�������k-�k-���k-�k-�����k-�k-���k-�k-�k-�k-�����k-�k-���k-�k-�k-����������k-�k-���k-�k-�����k-�k-���k-�k-�������k-�k-���k-�k-�����k-�k-�k-�k-k-k-�k-�k-�	
k-�k-[
�a8/ ��k-��k-��k-��k-��k-��k-��k-��k-!("%��#$k-��k-��&'k-��k-),��*+k-��k-��-.k-��k-0k-1k-25��34k-��k-��67k-��k-9X:I;B<?��=>k-��k-��@Ak-��k-CF��DEk-��k-��GHk-��k-JQKN��LMk-��k-��OPk-��k-RU��STk-��k-��VWk-��k-Yk-Zk-[^��\]k-��k-��_`k-��k-b�c�dselfi��ghk-��k-��jkk-��k-mp��nok-��k-��qrk-��k-t{ux��vwk-��k-��yzk-��k-|��}~k-��k-����k-��k-�k-�k-������k-��k-����k-��k-������������k-��k-����k-��k-������k-��k-����k-��k-��������k-��k-����k-��k-������k-��k-����k-��k-�k-�k-������k-��k-����k-��k-���������������k-��k-����k-��k-������k-��k-����k-��k-��������k-��k-����k-��k-������k-��k-����k-��k-�k-�k-������k-��k-����k-��k-������������k-��k-����k-��k-������k-��k-����k-��k-��������k-��k-����k-��k-������k-��k-����k-��k-k-k-��k-��k-��k-��k-	2
)
��k-��k-��k-��k-��k-��k-��k-��k-"��k-��k-�� !k-��k-#&��$%k-��k-��'(k-��k-*k-+k-,/��-.k-��k-��01k-��k-3R4C5<69��78k-��k-��:;k-��k-=@��>?k-��k-��ABk-��k-DKEH��FGk-��k-��IJk-��k-LO��MNk-��k-��PQk-��k-Sk-Tk-UX��VWk-��k-��YZk-��k-\]�^�_~`oahbe��cdk-��k-��fgk-��k-il��jkk-��k-��mnk-��k-pwqt��rsk-��k-��uvk-��k-x{��yzk-��k-��|}k-��k-k-�k-������k-��k-����k-��k-������������k-��k-����k-��k-������k-��k-����k-��k-��������k-��k-����k-��k-������k-��k-����k-��k-�k-�k-������k-��k-����k-��k-�����������i��k-�ik-�i��k-�ik-���i��k-�ik-�i��k-�ik-�����i��k-�ik-�i��k-�ik-���i��k-�ik-�i��k-�ik-�k-�k-���i��k-�ik-�i��k-�ik-���������i��k-�ik-�i��k-�ik-���i��k-�ik-�i��k-�ik-�����i��k-�ik-�i��k-�ik-���i��k-�ik-�i��k-�ik-�k-�k-��i��k-�ik-�ik-�ik-W.%	�i
k-�ik-�i
k-�ik-�ik-�ik-�ik-�ik-�ik-�ik-�ik-�ik-"�i !k-�ik-�i#$k-�ik-&k-'k-(+�i)*k-�ik-�i,-k-�ik-/N0?1825�i34k-�ik-�i67k-�ik-9<�i:;k-�ik-�i=>k-�ik-@GAD�iBCk-�ik-�iEFk-�ik-HK�iIJk-�ik-�iLMk-�ik-Ok-Pk-QT�iRSk-�ik-�iUVk-�ik-Xk-YxZi[b\_�i]^k-�ik-�i`ak-�ik-cf�idek-�ik-�ighk-�ik-jqkn�ilmk-�ik-�iopk-�ik-ru�istk-�ik-�ivwk-�ik-yk-zk-{~�i|}k-�ik-�i�k-�ik-� ����+�������������[��k-�[k-�[��k-�[k-���[��k-�[k-�[��k-�[k-�����[��k-�[k-�[��k-�[k-���[��k-�[k-�[��k-�[k-�k-�k-���[��k-�[k-�[��k-�[k-���������[��k-�[k-�[��k-�[k-���[��k-�[k-�[��k-�[k-�����[��k-�[k-�[��k-�[k-���[��k-�[k-�[��k-�[k-�k-�k-���[��k-�[k-�[��k-�[k-����������[��k-�[k-�[��k-�[k-���[��k-�[k-�[��k-�[k-�����[��k-�[k-�[��k-�[k-���[��k-�[k-�[��k-�[k-�k-�k-���[��k-�[k-�[k-�[k-"	�[k-�[k-�[
k-�[k-
�[k-�[k-�[k-�[k-�[k-�[k-�[k-�[k-�[k-�[k-�[ !k-�[k-#k-$k-%(�[&'k-�[k-�[)*k-�[k-,-V.M/>0714�[23k-�[k-�[56k-�[k-8;�[9:k-�[k-�[<=k-�[k-?F@C�[ABk-�[k-�[DEk-�[k-GJ�[HIk-�[k-�[KLk-�[k-Nk-Ok-PS�[QRk-�[k-�[TUk-�[k-WvXgY`Z]ִ[\k-ִk-ִ^_k-ִk-adִbck-ִk-ִefk-ִk-hoilִjkk-ִk-ִmnk-ִk-psִqrk-ִk-ִtuk-ִk-wk-xk-y|ִz{k-ִk-ִ}~k-ִk-����������ִ��k-ִk-ִ��k-ִk-��ִ��k-ִk-ִ��k-ִk-����ִ��k-ִk-ִ��k-ִk-��ִ��k-ִk-ִ��k-ִk-�k-�k-��ִ��k-ִk-ִ��k-ִk-��������ִ��k-ִk-ִ��k-ִk-��ִ��k-ִk-ִ��k-ִk-����ִ��k-ִk-ִ��k-ִk-��ִ��k-ִk-ִ��k-ִk-�k-�k-��ִ��k-ִk-ִ��k-ִk-� z� '����������ִ��k-ִk-ִ��k-ִk-��ִ��k-ִk-ִ��k-ִk-����ִ��k-ִk-ִ��k-ִk-��ִ��k-ִk-ִ��k-ִk-�k-�k-��ִ��k-ִk-ִ��k-ִk-�       ִ  k-ִk-ִ  k-ִk- 	 ִ 
 k-ִk-ִ 
 k-ִk-    ִ  k-ִk-ִ  k-ִk-  ִ  k-ִk-ִ  k-ִk- k-  k- ! $ִ " #k-ִk-ִ % &k-ִk- ( Q ) H * 9 + 2 , /�J - .k-�Jk-�J 0 1k-�Jk- 3 6�J 4 5k-�Jk-�J 7 8k-�Jk- : A ; >�J < =k-�Jk-�J ? @k-�Jk- B E�J C Dk-�Jk-�J F Gk-�Jk- Ik- Jk- K N�J L Mk-�Jk-�J O Pk-�Jk- R q S b T [ U X�J V Wk-�Jk-�J Y Zk-�Jk- \ _�J ] ^k-�Jk-�J ` ak-�Jk- c j d g�J e fk-�Jk-�J h ik-�Jk- k n�J l mk-�Jk-�J o pk-�Jk- rk- sk- t w�J u vk-�Jk-�J x yk-�Jk- { � | � } � ~ �  � � ��J � �k-�Jk-�J � �k-�Jk- � ��J � �k-�Jk-�J � �k-�Jk- � � � ��J � �k-�Jk-�J � �k-�Jk- � ��J � �k-�Jk-�J � �k-�Jk- �k- �k- � ��J � �k-�Jk-�J � �k-�Jk- � � � � � � � ��J � �k-�Jk-�J � �k-�Jk- � ��J � �k-�Jk-�J � �k-�Jk- � � � ��J � �k-�Jk-�J � �k-�Jk- � ��J � �k-�Jk-�J � �k-�Jk- �k- �k- � ��J � �k-�Jk-�J � �k-�Jk- �k- � � � � � � � ��J � �k-�Jk-�J � �k-�Jk- � ��J � �k-�Jk-�J � �k-�Jk- � � � ��J � �k-�Jk-�J � �k-�Jk- � ��J � �k-�Jk-�J � �k-�Jk- �k- �k- � ��J � �k-�Jk-�J � �k-�Jk- �"H �!� �!N �!% �! �!
 �!!!H!!k-Hk-H!!k-Hk-!!
H!!	k-Hk-H!!k-Hk-!!!!H!!k-Hk-H!!k-Hk-!!H!!k-Hk-H!!k-Hk-!k-!k-!!"H! !!k-Hk-H!#!$k-Hk-!&!E!'!6!(!/!)!,H!*!+k-Hk-H!-!.k-Hk-!0!3H!1!2k-Hk-H!4!5k-Hk-!7!>!8!;H!9!:k-Hk-H!<!=k-Hk-!?!BH!@!Ak-Hk-H!C!Dk-Hk-!Fk-!Gk-!H!KH!I!Jk-Hk-H!L!Mk-Hk-!O!x!P!o!Q!`!R!Y!S!VH!T!Uk-Hk-H!W!Xk-Hk-!Z!]H![!\k-Hk-H!^!_k-Hk-!a!h!b!eH!c!dk-Hk-H!f!gk-Hk-!i!lH!j!kk-Hk-H!m!nk-Hk-!pk-!qk-!r!uH!s!tk-Hk-H!v!wk-Hk-!y!�!z!�!{!�!|!H!}!~k-Hk-H!�!�k-Hk-!�!�H!�!�k-Hk-H!�!�k-Hk-!�!�!�!�H!�!�k-Hk-H!�!�k-Hk-!�!�H!�!�k-Hk-H!�!�k-Hk-!�k-!�k-!�!�H!�!�k-Hk-H!�!�k-Hk-!�!�!�!�!�!�!�!�!�!�!�!�H!�!�k-Hk-H!�!�k-Hk-!�!�H!�!�k-Hk-H!�!�k-Hk-!�!�!�!�H!�!�k-Hk-H!�!�k-Hk-!�!�H!�!�k-Hk-H!�!�k-Hk-!�k-!�k-!�!�H!�!�k-Hk-H!�!�k-Hk-!�!�!�!�!�!�!�!��!�!�k-�k-�!�!�k-�k-!�!��!�!�k-�k-�!�!�k-�k-!�!�!�!��!�!�k-�k-�!�!�k-�k-!�!��!�!�k-�k-�!�!�k-�k-!�k-!�k-!�!��!�!�k-�k-�!�!�k-�k-!�"!�"!�"!�"!�!��!�!�k-�k-�!�!�k-�k-""�""k-�k-�""k-�k-"""	"�"
"k-�k-�"
"k-�k-""�""k-�k-�""k-�k-"k-"k-""�""k-�k-�""k-�k-" "?"!"0""")"#"&�"$"%k-�k-�"'"(k-�k-"*"-�"+",k-�k-�"."/k-�k-"1"8"2"5�"3"4k-�k-�"6"7k-�k-"9"<�":";k-�k-�"=">k-�k-"@k-"Ak-"B"E�"C"Dk-�k-�"F"Gk-�k-"I"�"J"�"K"t"L"k"M"\"N"U"O"R�"P"Qk-�k-�"S"Tk-�k-"V"Y�"W"Xk-�k-�"Z"[k-�k-"]"d"^"a�"_"`k-�k-�"b"ck-�k-"e"h�"f"gk-�k-�"i"jk-�k-"lk-"mk-"n"q�"o"pk-�k-�"r"sk-�k-"u"�"v"�"w"~"x"{�"y"zk-�k-�"|"}k-�k-""��"�"�k-�k-�"�"�k-�k-"�"�"�"��"�"�k-�k-�"�"�k-�k-"�"��"�"�k-�k-�"�"�k-�k-"�k-"�k-"�"��"�"�k-�k-�"�"�k-�k-"�"�"�"�"�"�"�"�"�"�`�"�"�k-`�k-`�"�"�k-`�k-"�"�`�"�"�k-`�k-`�"�"�k-`�k-"�"�"�"�`�"�"�k-`�k-`�"�"�k-`�k-"�"�`�"�"�k-`�k-`�"�"�k-`�k-"�k-"�k-"�"�`�"�"�k-`�k-`�"�"�k-`�k-"�"�"�"�"�"�"�"�`�"�"�k-`�k-`�"�"�k-`�k-"�"�`�"�"�k-`�k-`�"�"�k-`�k-"�"�"�"�`�"�"�k-`�k-`�"�"�k-`�k-"�"�`�"�"�k-`�k-`�"�"�k-`�k-"�k-"�k-"�"�`�"�"�k-`�k-`�"�"�k-`�k-"�#G"�#"�#"�#"�"�"�"�`�"�"�k-`�k-`�"�"�k-`�k-"�#`�"�"�k-`�k-`�##k-`�k-####`�##k-`�k-`�#	#
k-`�k-##`�#
#k-`�k-`�##k-`�k-#k-#k-##`�##k-`�k-`�##k-`�k-##>##,##%##"`�# #!k-`�k-`�###$k-`�k-#&#)`�#'#(k-`�k-`�#*#+k-`�k-#-#4#.#1`�#/#0k-`�k-`�#2#3k-`�k-#5#;#6#9`�#7#8`�`�k-#:k-`�k-`�#<#=k-`�k-#?k-#@k-#A#D`�#B#Ck-`�k-`�#E#Fk-`�k-#Hk-#I#h#J#Y#K#R#L#O`�#M#Nk-`�k-`�#P#Qk-`�k-#S#V`�#T#Uk-`�k-`�#W#Xk-`�k-#Z#a#[#^`�#\#]k-`�k-`�#_#`k-`�k-#b#e`�#c#dk-`�k-`�#f#gk-`�k-#ik-#jk-#k#n`�#l#mk-`�k-`�#o#pk-`�k-#r(e#s%�#t$�#u$#v#�#w#�#x#�#y#�#z#�#{#~֥#|#}k-֥k-֥##�k-֥k-#�#�֥#�#�k-֥k-֥#�#�k-֥k-#�#�#�#�֥#�#�k-֥k-֥#�#�k-֥k-#�#�֥#�#�k-֥k-֥#�#�k-֥k-#�k-#�k-#�#�֥#�#�k-֥k-֥#�#�k-֥k-#�#�#�#�#�#�#�#�֥#�#�k-֥k-֥#�#�k-֥k-#�#�֥#�#�k-֥k-֥#�#�k-֥k-#�#�#�#�֥#�#�k-֥k-֥#�#�k-֥k-#�#�֥#�#�k-֥k-֥#�#�k-֥k-#�k-#�k-#�#�֥#�#�k-֥k-֥#�#�k-֥k-#�#�#�#�#�#�#�#�#�#�֥#�#�k-֥k-֥#�#�k-֥k-#�#�֥#�#�k-֥k-֥#�#�k-֥k-#�#�#�#�֥#�#�k-֥k-֥#�#�k-֥k-#�#�֥#�#�k-֥k-֥#�#�k-֥k-#�k-#�k-#�#�֥#�#�k-֥k-֥#�#�k-֥k-#�$#�$#�#�#�#�֥#�#�k-֥k-֥#�#�k-֥k-#�$֥#�$k-֥k-֥$$k-֥k-$$$$	֥$$k-֥k-֥$
$k-֥k-$
$֥$$k-֥k-֥$$k-֥k-$k-$k-$$֥$$k-֥k-֥$$k-֥k-$$p$$G$$>$ $/$!$($"$%֥$#$$k-֥k-֥$&$'k-֥k-$)$,֥$*$+k-֥k-֥$-$.k-֥k-$0$7$1$4֥$2$3k-֥k-֥$5$6k-֥k-$8$;֥$9$:k-֥k-֥$<$=k-֥k-$?k-$@k-$A$D֥$B$Ck-֥k-֥$E$Fk-֥k-$H$g$I$X$J$Q$K$N֖$L$Mk-֖k-֖$O$Pk-֖k-$R$U֖$S$Tk-֖k-֖$V$Wk-֖k-$Y$`$Z$]֖$[$\k-֖k-֖$^$_k-֖k-$a$d֖$b$ck-֖k-֖$e$fk-֖k-$hk-$ik-$j$m֖$k$lk-֖k-֖$n$ok-֖k-$q$�$r$�$s$�$t${$u$x֖$v$wk-֖k-֖$y$zk-֖k-$|$֖$}$~k-֖k-֖$�$�k-֖k-$�$�$�$�֖$�$�k-֖k-֖$�$�k-֖k-$�$�֖$�$�k-֖k-֖$�$�k-֖k-$�k-$�k-$�$�֖$�$�k-֖k-֖$�$�k-֖k-$�$�$�$�$�$�$�$�֖$�$�k-֖k-֖$�$�k-֖k-$�$�֖$�$�k-֖k-֖$�$�k-֖k-$�$�$�$�֖$�$�k-֖k-֖$�$�k-֖k-$�$�֖$�$�k-֖k-֖$�$�k-֖k-$�k-$�k-$�$�֖$�$�k-֖k-֖$�$�k-֖k-$�%k$�%$�$�$�$�$�$�$�$�$�$�֖$�$�k-֖k-֖$�$�k-֖k-$�$�֖$�$�k-֖k-֖$�$�k-֖k-$�$�$�$�֖$�$�k-֖k-֖$�$�k-֖k-$�$�֖$�$�k-֖k-֖$�$�k-֖k-$�k-$�k-$�$�֖$�$�k-֖k-֖$�$�k-֖k-$�%$�%$�$�$�$�֖$�$�k-֖k-֖$�$�k-֖k-$�$�֖$�$�k-֖k-֖$�$�k-֖k-%%%%֖%%k-֖k-֖%%k-֖k-%	%֖%
%k-֖k-֖%
%k-֖k-%k-%k-%%֖%%k-֖k-֖%%k-֖k-%%B%%9%%*%%#%% �y%%k-�yk-�y%!%"k-�yk-%$%'�y%%%&k-�yk-�y%(%)k-�yk-%+%2%,%/�y%-%.k-�yk-�y%0%1k-�yk-%3%6�y%4%5k-�yk-�y%7%8k-�yk-%:k-%;k-%<%?�y%=%>k-�yk-�y%@%Ak-�yk-%C%b%D%S%E%L%F%I�y%G%Hk-�yk-�y%J%Kk-�yk-%M%P�y%N%Ok-�yk-�y%Q%Rk-�yk-%T%[%U%X�y%V%Wk-�yk-�y%Y%Zk-�yk-%\%_�y%]%^k-�yk-�y%`%ak-�yk-%ck-%dk-%e%h�y%f%gk-�yk-�y%i%jk-�yk-%l%�%m%�%n%�%o%~%p%w%q%t�y%r%sk-�yk-�y%u%vk-�yk-%x%{�y%y%zk-�yk-�y%|%}k-�yk-%%�%�%��y%�%�k-�yk-�y%�%�k-�yk-%�%��y%�%�k-�yk-�y%�%�k-�yk-%�k-%�k-%�%��y%�%�k-�yk-�y%�%�k-�yk-%�%�%�%�%�%�%�%��y%�%�k-�yk-�y%�%�k-�yk-%�%��y%�%�k-�yk-�y%�%�k-�yk-%�%�%�%��y%�%�k-�yk-�y%�%�k-�yk-%�%��y%�%�k-�yk-�y%�%�k-�yk-%�k-%�k-%�%��y%�%�k-�yk-�y%�%�k-�yk-%�k-%�%�%�%�%�%�%�%��y%�%�k-�yk-�y%�%�k-�yk-%�%��y%�%�k-�yk-�y%�%�k-�yk-%�%�%�%��y%�%�k-�yk-�y%�%�k-�yk-%�%��y%�%�k-�yk-�y%�%�k-�yk-%�k-%�k-%�%��y%�%�k-�yk-�y%�%�k-�yk-%�'9%�&�%�&?%�&%�&
%�%�%�%�%�%�mS%�%�k-mSk-mS%�%�k-mSk-%�%�mS%�%�k-mSk-mS%�%�k-mSk-%�&&&mS&&k-mSk-mS&&k-mSk-&&
mS&&	k-mSk-mS&&k-mSk-&k-&k-&&mS&&k-mSk-mS&&k-mSk-&&6&&'&& &&mS&&k-mSk-mS&&k-mSk-&!&$mS&"&#k-mSk-mS&%&&k-mSk-&(&/&)&,mS&*&+k-mSk-mS&-&.k-mSk-&0&3mS&1&2k-mSk-mS&4&5k-mSk-&7k-&8k-&9&<mS&:&;k-mSk-mS&=&>k-mSk-&@&i&A&`&B&Q&C&J&D&GmS&E&Fk-mSk-mS&H&Ik-mSk-&K&NmS&L&Mk-mSk-mS&O&Pk-mSk-&R&Y&S&VmS&T&Uk-mSk-mS&W&Xk-mSk-&Z&]mS&[&\k-mSk-mS&^&_k-mSk-&ak-&bk-&c&fmS&d&ek-mSk-mS&g&hk-mSk-&j&�&k&z&l&s&m&pmS&n&ok-mSk-mS&q&rk-mSk-&t&wmS&u&vk-mSk-mS&x&yk-mSk-&{&�&|&mS&}&~k-mSk-mS&�&�k-mSk-&�&�mS&�&�k-mSk-mS&�&�k-mSk-&�k-&�k-&�&�mS&�&�k-mSk-mS&�&�k-mSk-&�&�&�&�&�&�&�&�&�&�&�&�mS&�&�k-mSk-mS&�&�k-mSk-&�&�mS&�&�k-mSk-mS&�&�k-mSk-&�&�&�&�mS&�&�k-mSk-mS&�&�k-mSk-&�&�mS&�&�k-mSk-mS&�&�k-mSk-&�k-&�k-&�&�mS&�&�k-mSk-mS&�&�k-mSk-&�&�&�&�&�&�&�&�h�&�&�k-h�k-h�&�&�k-h�k-&�&�h�&�&�k-h�k-h�&�&�k-h�k-&�&�&�&�h�&�&�k-h�k-h�&�&�k-h�k-&�&�h�&�&�k-h�k-h�&�&�k-h�k-&�k-&�k-&�&�h�&�&�k-h�k-h�&�&�k-h�k-&�'&�'&�&�&�&�&�&�h�&�&�k-h�k-h�&�&�k-h�k-&�&�h�&�&�k-h�k-h�&�&�k-h�k-&�'&�&�h�&�&�k-h�k-h�&�&�k-h�k-''h�''k-h�k-h�''k-h�k-'k-'	k-'
'
h�''k-h�k-h�''k-h�k-''0''!''''h�''k-h�k-h�''k-h�k-''h�''k-h�k-h�'' k-h�k-'"')'#'&h�'$'%k-h�k-h�'''(k-h�k-'*'-h�'+',k-h�k-h�'.'/k-h�k-'1k-'2k-'3'6h�'4'5k-h�k-h�'7'8k-h�k-':'�';'�'<'k'='b'>'P'?'F'@'Ch�'A'Bk-h�k-h�'D'Ek-h�k-'G'M'H'K'Ih�'Jh�h�k-'Lk-h�k-h�'N'Ok-h�k-'Q'X'R'Uh�'S'Tk-h�k-h�'V'Wk-h�k-'Y'\h�'Z'[k-h�k-']'`h�'^h�'_k-h�'ak-h�k-'ck-'dk-'e'hh�'f'gk-h�k-h�'i'jk-h�k-'l'�'m'|'n'u'o'rh�'p'qk-h�k-h�'s'tk-h�k-'v'yh�'w'xk-h�k-h�'z'{k-h�k-'}'�'~'�h�''�k-h�k-h�'�'�k-h�k-'�'�h�'�'�k-h�k-h�'�'�k-h�k-'�k-'�k-'�'�h�'�'�k-h�k-h�'�'�k-h�k-'�'�'�'�'�'�'�'�'�'�si'�'�k-sik-si'�'�k-sik-'�'�si'�'�k-sik-si'�'�k-sik-'�'�'�'�si'�'�k-sik-si'�'�k-sik-'�'�si'�'�k-sik-si'�'�k-sik-'�k-'�k-'�'�si'�'�k-sik-si'�'�k-sik-'�'�'�'�'�'�'�'�si'�'�k-sik-si'�'�k-sik-'�'�si'�'�k-sik-si'�'�k-sik-'�'�'�'�si'�'�k-sik-si'�'�k-sik-'�'�si'�'�k-sik-si'�'�k-sik-'�k-'�k-'�'�si'�'�k-sik-si'�'�k-sik-'�(;'�('�(	'�'�'�'�'�'�si'�'�k-sik-si'�'�k-sik-'�'�si'�'�k-sik-si'�'�k-sik-'�('�'�si'�'�k-sik-si((k-sik-((si((k-sik-si((k-sik-(
k-(k-((si(
(k-sik-si((k-sik-((2((#((((si((k-sik-si((k-sik-(( si((k-sik-si(!("k-sik-($(+(%((si(&('k-sik-si()(*k-sik-(,(/si(-(.k-sik-si(0(1k-sik-(3k-(4k-(5(8si(6(7k-sik-si(9(:k-sik-(<k-(=(\(>(M(?(F(@(Csi(A(Bk-sik-si(D(Ek-sik-(G(Jsi(H(Ik-sik-si(K(Lk-sik-(N(U(O(Rsi(P(Qk-sik-si(S(Tk-sik-(V(Ysi(W(Xk-sik-si(Z([k-sik-(]k-(^k-(_(bsi(`(ak-sik-si(c(dk-sik-(fk-(g)�(h)(i(�(j(�(k(�(l({(m(t(n(q,�(o(pk-,�k-,�(r(sk-,�k-(u(x,�(v(wk-,�k-,�(y(zk-,�k-(|(�(}(�,�(~(k-,�k-,�(�(�k-,�k-(�(�,�(�(�k-,�k-,�(�(�k-,�k-(�k-(�k-(�(�,�(�(�k-,�k-,�(�(�k-,�k-(�(�(�(�(�(�(�(�,�(�(�k-,�k-,�(�(�k-,�k-(�(�,�(�(�k-,�k-,�(�(�k-,�k-(�(�(�(�,�(�(�k-,�k-,�(�(�k-,�k-(�(�,�(�(�k-,�k-,�(�(�k-,�k-(�k-(�k-(�(�,�(�(�k-,�k-,�(�(�k-,�k-(�(�(�(�(�(�(�(�(�(�,�(�(�k-,�k-,�(�(�k-,�k-(�(�,�(�(�k-,�k-,�(�(�k-,�k-(�(�(�(�,�(�(�k-,�k-,�(�(�k-,�k-(�(�,�(�(�k-,�k-,�(�(�k-,�k-(�k-(�k-(�(�,�(�(�k-,�k-,�(�(�k-,�k-(�)(�(�(�(�(�(�,�(�(�k-,�k-,�(�(�k-,�k-(�(�,�(�(�k-,�k-,�(�(�k-,�k-(�(�(�(�,�(�(�k-,�k-,�(�(�k-,�k-)),�))k-,�k-,�))k-,�k-)k-)k-)	),�)
)k-,�k-,�)
)k-,�k-))c)):))1))")))),�))k-,�k-,�))k-,�k-)),�))k-,�k-,�) )!k-,�k-)#)*)$)',�)%)&k-,�k-,�)())k-,�k-)+).,�),)-k-,�k-,�)/)0k-,�k-)2k-)3k-)4)7,�)5)6k-,�k-,�)8)9k-,�k-);)Z)<)K)=)D)>)Ak)?)@k-kk-k)B)Ck-kk-)E)Hk)F)Gk-kk-k)I)Jk-kk-)L)S)M)Pk)N)Ok-kk-k)Q)Rk-kk-)T)Wk)U)Vk-kk-k)X)Yk-kk-)[k-)\k-)])`k)^)_k-kk-k)a)bk-kk-)d)�)e)�)f)u)g)n)h)kk)i)jk-kk-k)l)mk-kk-)o)rk)p)qk-kk-k)s)tk-kk-)v)})w)zk)x)yk-kk-k){)|k-kk-)~)�k))�k-kk-k)�)�k-kk-)�k-)�k-)�)�k)�)�k-kk-k)�)�k-kk-)�)�)�)�)�)�)�)�k)�)�k-kk-k)�)�k-kk-)�)�k)�)�k-kk-k)�)�k-kk-)�)�)�)�k)�)�k-kk-k)�)�k-kk-)�)�k)�)�k-kk-k)�)�k-kk-)�k-)�k-)�)�k)�)�k-kk-k)�)�k-kk-)�*a)�*)�)�)�)�)�)�)�)�)�)�k)�)�k-kk-k)�)�k-kk-)�)�k)�)�k-kk-k)�)�k-kk-)�)�)�)�k)�)�k-kk-k)�)�k-kk-)�)�k)�)�k-kk-k)�)�k-kk-)�k-)�k-)�)�k)�)�k-kk-k)�)�k-kk-)�*)�)�)�)�)�)�k)�)�k-kk-k)�)�k-kk-)�)�k)�)�k-kk-k)�)�k-kk-)�)�)�)�k)�)�k-kk-k)�)�k-kk-)�)�k)�)�k-kk-k**k-kk-*k-*k-**k**k-kk-k*	*
k-kk-**8*
*,*******F**k-*Fk-*F**k-*Fk-***F**k-*Fk-*F**k-*Fk-**%**"*F* *!k-*Fk-*F*#*$k-*Fk-*&*)*F*'*(k-*Fk-*F***+k-*Fk-*-k-*.k-*/*5*0*3*F*1*F*2*Fk-*4k-*Fk-*F*6*7k-*Fk-*9*X*:*I*;*B*<*?*F*=*>k-*Fk-*F*@*Ak-*Fk-*C*F*F*D*Ek-*Fk-*F*G*Hk-*Fk-*J*Q*K*N*F*L*Mk-*Fk-*F*O*Pk-*Fk-*R*U*F*S*Tk-*Fk-*F*V*Wk-*Fk-*Yk-*Zk-*[*^*F*\*]k-*Fk-*F*_*`k-*Fk-*b*�*c*�*d*�*e*t*f*m*g*j*F*h*ik-*Fk-*F*k*lk-*Fk-*n*q*F*o*pk-*Fk-*F*r*sk-*Fk-*u*|*v*y*F*w*xk-*Fk-*F*z*{k-*Fk-*}*�*F*~*k-*Fk-*F*�*�k-*Fk-*�k-*�k-*�*�*F*�*�k-*Fk-*F*�*�k-*Fk-*�*�*�*�*�*�*�*�*F*�*�k-*Fk-*F*�*�k-*Fk-*�*�*F*�*�k-*Fk-*F*�*�k-*Fk-*�*�*�*�*F*�*�k-*Fk-*F*�*�k-*Fk-*�*�*F*�*�k-*Fk-*F*�*�k-*Fk-*�k-*�k-*�*�*F*�*�k-*Fk-*F*�*�k-*Fk-*�k-*�*�*�*�*�*�*�*�*F*�*�k-*Fk-*F*�*�k-*Fk-*�*�*F*�*�k-*Fk-*F*�*�k-*Fk-*�*�*�*�*F*�*�k-*Fk-*F*�*�k-*Fk-*�*�*F*�*�k-*Fk-*F*�*�k-*Fk-*�k-*�k-*�*�*F*�*�k-*Fk-*F*�*�k-*Fk-*�*�*�@*�@cW@*�@*�@cW@*�*�*�*�*�*�*�@*�@M@*�@*�@L�@*�*�*�@*�@l�@*�@*�@`�@*�*�*�*�*�@*�@d@*�@*�@M@*�++@+@+@+@+@L@+@+@xv@+	+*+
++++++
@+@aN@+@+@L@+++@+@c�@+@+@+@+xv��xv++#++ +@+@`�@+!@+"@M�@+$+'+%@+&@iM@+(@+)@��@+++:+,+3+-+0+.@+/@aN@+1@+2@c�@+4+7+5@+6@L�@+8@+9@L�@+;+[+<+?+=@+>@L@+@@+A@+B@+CcW+DcWcW+E+FcW+GcW+HcW+IcW+JcW+KcW+LcW+McW+NcW+OcW+P+X+QcW+R+UcW+ScW+T$$cWcW+VcW+WcW��+YcW+ZcWcW$$+\+_+]@+^@L�@+`@+a@L�@+c+�+d+�+e+t+f+m+g+j+h@+i@b�@+k@+l@d@+n+q+o@+p@cW@+r@+s@`�@+u+|+v+y+w@+x@c�@+z@+{@n�@+}+�+~@+@{
@+�@+�@iM@+�+�+�+�+�+�+�@+�@`�@+�@+�@xv@+�+�+�@+�@`�@+�@+�@+�@+�@+�@L@+�+�+�+�+�@+�@+�@+�@+�@az@+�@+�@L�@+�+�+�@+�@M@+�@+�@M@+�+�+�+�+�+�+�+�+�@+�@ak@+�@+�@|@+�+�+�@+�@iM@+�@+�@L@+�+�+�+�+�@+�@xv@+�@+�@L@+�+�+�@+�@L�@+�@+�@g4@+�+�+�+�+�+�+�@+�@c�@+�@+�@g4@+�+�+�@+�@L�@+�@+�@b�@+�,+�+�+�@+�@b�@+�@+�@+�@�,+��,+�+��,+��,+��,+��,+��,+��,�,+�+��,�,+�+��,+��,�,+�+��,+��,+��,+��,+��,�,+�+��,+��,�,+�+��,�,+��,+��,+�+��,+��,+��,+��,,�,,�,,�,@�,,,,@,@c�@,@,	@b�@,,�,,W,
,4,,",,,,,@,@L�@,@,@li@,,,,,@,@,@,@b�@,@l@, @,!@b�@,#,-,$,*,%@,&@,'@,(@,)@t�@,+@,,@N@,.,1,/@,0@L@,2@,3@cW@,5,H,6,=,7,:,8@,9@M@,;@,<@M@,>,E,?,B,@@,A@L@,C@,D@N@,F@,G@L@,I,P,J,M,K@,L@i�@,N@,O@N@,Q,T,R@,S@c�@,U@,V@�@,X,w,Y,e,Z,a,[,^,\@,]@iM@,_@,`@iM@@,b,c@,d@b�@,f,p,g,m,h@,i@,j@l,k,ll�l,n@,o@N@,q,t,r@,s@M�@,u@,v@b�@,x,�,y,�,z,},{@,|@L�@,~@,@L�@,�,�,�@,�@l@,�@,�@d@,�,�,�,�,�@,�@l@,�@,�@d{@,�,�,�@,�@c�@,�@,�@d@,�,�,�,�,�,�,�,�,�,�,�@,�@d@,�@,�@b�@,�,�,�@,�@nW@,�@,�@L�@,�,�,�,�,�@,�@d@,�@,�@b�@,�,�,�@,�@iM@,�@,�@L�@,�,�,�,�,�,�,�@,�@d@,�@,�@M@,�,�,�@,�@d@,�@,�@N@,�,�,�,�,�@,�@M@,�@,�@d@,�,�,�@,�@y7@,�@,�@|�@,�,�,�,�,�,�,�,�,�@,�@L�@,�@,�@b�@,�,�,�@,�@L@,�@,�@�@,�,�,�,�,�@,�@b�@,�@,�@L@,�,�,�@,�@{
@,�@,�@b�@,�-,�,�,�,�,�@,�@`�@,�@,�@ak@---@-@M@-@-@c�@-----	@-
@N@-@-
@g_@---@-@L�@-@-@xv@-.Y--�--w--;--)--"---@-@j*@- @-!@M@-#-&-$@-%@`�@-'@-(@c�@-*-4-+-1-,@--@-.@-/@-0@g4@-2@-3@nW@-5-8-6@-7@`�@-9@-:@cW@-<-a-=-W->-T-?@-@@-A@-BA-CA-DA-EA-FA-GA-HA-IA-JA-KA-LA-MAA-NA-OA-P-QAA-R-SAuyA-U@-V@d@-X-^-Y@-Z@-[@-\@-]@L�@-_@-`@d@-b-p-c-m-d@-e@-f@-g-j-h-ign���xg-k-le�pzs8�1-n@-o@L�@-q-t-r@-s@nW@-u@-v@iM@-x-�-y-�-z-�-{-~-|@-}@g_@-@-�@N@-�-�-�@-�@iM@-�@-�@c�@-�-�-�-�-�@-�@L@-�@-�@b�@-�-�-�@-�@L@-�@-�@L@-�-�-�-�-�-�-�@-�@iM@-�@-�@ak@-�-�-�@-�@`�@-�@-�@N@-�-�-�-�-�@-�@�@-�@-�@-�@g4-�-�-�-�g4-�g4-�g4-�g4-�g4-�g4-�g4-�g4-�g4-�g4-�g4-�g4-�g4-�g4-�g4-�g4mg4g4-�-�g4-�g4-�g4-�g4-�g4-�g4-�g4-�g4-�g4-�g4-�g4-�g4-�g4-�g4-�g4uVg4-�-�-�@-�@b�@-�@-�@`�@-�.-�-�-�-�-�-�-�-�-�@-�@`�@-�@-�@b�@-�-�-�@-�@M@-�@-�@d@-�-�-�-�-�@-�@b�@-�@-�@L@-�-�-�@-�@b�@-�@-�@b�@-�.-�.-�.-�@.@cW@.@.@d@...@.@g_@.	@.
@cW@...
..@.@M@.@.@L@...@.@c�@.@.@d@..:..+..$@..@. @.!@."@.#@b�@.%.(.&@.'@N@.)@.*@N@.,.3.-.0..@./@g4@.1@.2@nW@.4.7.5@.6@b�@.8@.9@nW@.;.J.<.C.=.@.>@.?@L�@.A@.B@M@.D.G.E@.F@b�@.H@.I@c�@.K.R.L.O.M@.N@|�@.P@.Q@`�@.S.V.T@.U@c�@.W@.X@c�@.Z.�.[.�.\.{.].l.^.e._.b.`@.a@cW@.c@.d@M@.f.i.g@.h@L@.j@.k@�,@.m.t.n.q.o@.p@c�@.r@.s@`�@.u.x.v@.w@d@.y@.z@L�@.|.�.}.�.~.�.@.�@iM@.�@.�@d@.�.�.�@.�@b�@.�@.�@M@.�.�.�.�.�@.�@.�@g_@.�@.�@d]@.�.�.�@.�@d@.�@.�@ak@.�.�.�.�.�.�.�.�.�@.�@b�@.�@.�@L@.�.�.�@.�@d{@.�@.�@rf@.�.�.�.�.�@.�@rf@.�@.�@ty@.�.�.�@.�@iM@.�@.�@d@.�.�.�.�.�.�.�@.�@M@.�@.�@i�@.�.�.�@.�@L�@.�@.�@M@.�.�.�.�.�@.�@cW@.�@.�@n�@.�.�.�@.�@d@.�@.�@c�@.�/.�.�.�.�.�.�.�.�.�@.�@ty@.�@.�@{
@.�.�.�@.�@.�@.�@.�@e�@.�@.�@t�@.�.�.�.�.�@.�@L@.�@.�@M@.�.�.�@.�@L�@.�@.�@|@.�//////@/@b�@/@/@Ќ@///	@/
@iM@/@/
@d@/////@/@nW@/@/@��@///@/@M@/@/@M@//q//b/ /[/!/$/"@/#@{
@/%@/&@/'@/(d]/)/J/*/:/+d]/,d]/-d]/.d]//d]/0d]/1d]/2d]/3d]/4d]/5d]/6d]/7d]/8d]/9d]ݶd]/;d]/<d]/=d]/>d]/?d]/@d]/Ad]/Bd]/Cd]/Dd]/Ed]/Fd]/Gd]/Hd]/Id]�Cd]/Kd]/Ld]/Md]/Nd]/Od]/Pd]/Qd]/Rd]/Sd]/Td]/Ud]/Vd]/Wd]/Xd]/Yd]/Zd]�Od]/\/_/]@/^@M@/`@/a@li@/c/j/d/g/e@/f@M@/h@/i@c�@/k/n/l@/m@Ќ@/o@/p@d@/r/�/s/z/t/w/u@/v@M@/x@/y@d@/{/~/|@/}@b�@/@/�@d@/�/�/�/�/�@/�@g4@/�@/�@c�@/�/�/�@/�@d@/�@/�@p�@/�4t/�1�/�0�/�0/�/�/�/�/�/�/�/�/�/�/�@/�@`�@/�@/�@iM@/�/�/�@/�@M@/�@/�@M@/�/�/�/�/�@/�@d@/�@/�@cW@/�/�/�@/�@M�@/�@/�@b�@/�/�/�/�/�/�/�@/�@��@/�@/�@d@/�/�/�@/�@e�@/�@/�@��@/�/�/�/�/�@/�@�b@/�@/�@��@/�/�/�@/�@M�@/�@/�@g4@/�/�/�/�/�/�/�/�/�@/�@N@/�@/�@M@/�/�/�@/�@q~@/�@/�@l@/�/�/�/�/�@/�@e�@/�@/�@iM@/�/�/�@/�@c�@/�@/�@az@/�0/�/�/�/�/�@/�@L@/�@/�@iM@/�0/�@0@v�@0@0@j*@0000	0@0@m�@0
@0@L@0
00@0@az@0@0@M@00j00K00%00000@0@y7@0@0@aN@00"0 @0!@l@0#@0$@c�@0&0D0'0A0(@0)@0*@0+g40,g40-g40.g40/g400g401g402g403g404g405g406g407g4g408090=g40:0;g40<g4�[g40>g4g40?g40@�[g40B@0C@M@0E0H0F@0G@b�@0I@0J@d{@0L0[0M0T0N0Q0O@0P@c�@0R@0S@��@0U0X0V@0W@az@0Y@0Z@b�@0\0c0]0`0^@0_@y7@0a@0b@`�@0d0g0e@0f@d@0h@0i@L�@0k0�0l0{0m0t0n0q0o@0p@m;@0r@0s@p�@0u0x0v@0w@N@0y@0z@ak@0|0�0}@0~@0@M@0�0�0�@0�@i�@0�@0�@d{@0�0�0�0�0�0�0�@0�@L@0�@0�@d@0�0�0�@0�@b�@0�@0�@y7@0�0�0�0�0�@0�@cW@0�@0�@d@0�0�0�@0�@`�@0�@0�@�b@0�1@0�0�0�0�0�0�0�0�0�0�0�@0�@t�@0�@0�@cW@0�0�0�@0�@iM@0�@0�@N@0�0�0�0�0�@0�@p�@0�@0�@d@0�0�0�@0�@N@0�@0�@l@0�0�0�0�0�0�0�@0�@b�@0�@0�@iM@0�0�0�@0�@N@0�@0�@N@0�0�0�0�0�@0�@{
@0�@0�@`�@0�0�0�@0�@az@0�@0�@0�@0�NN0�0�N0�N0�N0�NN0�0�N0�N0�N0�N0�N0�N0�N0�N0�N0�N0�NNOc0�1!0�10�10�10�@1@1@1111azt�az�M11wUazwaz1	@1
@c�@111
@1@|�@1@1@iM@11111@1@c�@1@1@`�@111@1@q~@1@1 @xv@1"111#1*1$1'1%@1&@i�@1(@1)@nW@1+1.1,@1-@c�@1/@10@N@1219131614@15@L�@17@18@y7@1:1=1;@1<@M@1>@1?@j*@1A1}1B1^1C1O1D1K1E1H1F@1G@M@1I@1J@g_@1L@1M@1N@M@1P1W1Q1T1R@1S@li@1U@1V@iM@1X1[1Y@1Z@L@1\@1]@iM@1_1n1`1g1a1d1b@1c@iM@1e@1f@�@1h1k1i@1j@cW@1l@1m@nW@1o1v1p1s1q@1r@L@1t@1u@��@1w1z1x@1y@g_@1{@1|@c�@1~1�11�1�1�1�1�1�@1�@b�@1�@1�@M@1�1�1�@1�@az@1�@1�@nW@1�1�1�1�1�@1�@M@1�@1�@`�@1�1�1�@1�@iM@1�@1�@`�@1�1�1�1�1�1�1�@1�@`�@1�@1�@iM@1�1�1�@1�@p�@1�@1�@c�@1�1�1�1�1�@1�@ty@1�@1�@M@1�1�1�@1�@L�@1�@1�@iM@1�2�1�2:1�1�1�1�1�1�1�1�1�1�1�@1�@b�@1�@1�@ty@1�1�1�@1�@b�@1�@1�@M@1�1�1�1�1�@1�@|�@1�@1�@M�@1�1�1�@1�@M@1�@1�@cW@1�1�1�1�1�1�1�@1�@b�@1�@1�@d@1�1�1�@1�@N@1�@1�@t�@1�1�1�1�1�@1�@H:@1�@1�@M@1�1�1�@1�@iM@1�@1�@`�@1�22222222@2@b�@2@2@`�@2	22
@2@L�@2
@2@L@22@22@2@`�@222@2@`�@2@2@t�@22+22$22!2@2 @aN@2"@2#@N@2%2(2&@2'@b�@2)@2*@iM@2,232-202.@2/@b�@21@22@c�@242725@26@L@28@29@b�@2;2}2<2^2=2L2>2E2?2B2@@2A@L@2C@2D@cW@2F2I2G@2H@d@2J@2K@w�@2M2T2N2Q2O@2P@aN@2R@2S@d@2U2X2V@2W@i�@2Y@2Z@2[@2\@2]@L�@2_2n2`2g2a2d2b@2c@xv@2e@2f@M@2h2k2i@2j@p�@2l@2m@nW@2o2v2p2s2q@2r@M@2t@2u@M@2w2z2x@2y@iM@2{@2|@c�@2~2�22�2�2�2�2�2�@2�@M@2�@2�@cW@2�2�2�@2�@c�@2�@2�@n�@2�2�2�2�2�@2�@cW@2�@2�@cW@2�2�2�@2�@M�@2�@2�@lx@2�2�2�2�2�2�2�@2�@`�@2�@2�@d@2�2�2�@2�@cW@2�@2�@d@2�2�2�2�2�@2�@L@2�@2�@c�@2�2�2�@2�@2�@2�@2�@L�@2�@2�@L�@2�3�2�3�2�3�2�3|2�2�2�2�2�@2�@N@2�@2�@cW@2�2�2�@2�@p�@2�@2�@2�@M2�M2�2�32�32�2�2�2�2�2�2�M2�2�M2�g�M2�2�M�;M�42�MM2�2�M�4M2�M2�M2�M2�M2�M2�M2�M2�M2�M2�M2�MM2�M�MM2�2�M2�M2�M2�M2�M2�M2�M2�M2�M2�M2�2�2�M�4MM3q�M3M33M33M3M3MA�M3	M3
M3Mg��;3
M333MM3M33Mg�MM33M331q�3q�3q�3q�3q�33q�3q�3q�q�3q�3 3!q�3"q�3#q�3$q�3%q�3&q�3'q�3(q�3)q�3*q�3+q�3,q�3-q�3.q�3/q�30q��Fq�32q�333Lq�3435q�q�3637q�38q�q�393:q�3;q�q�3<3=q�3>q�3?q�3@q�3Aq�3Bq�3Cq�3Dq�3Eq�3Fq�3Gq�3Hq�3Iq�3Jq�3Kq��Fq�q�3M3N3eq�3Oq�3Pq�3Q3Rq�3Sq�q�3T3Uq�3Vq�3Wq�3Xq�3Yq�3Zq�3[q�3\q�3]q�3^q�3_q�3`q�3aq�3bq�3cq�3dq��Fq�q�3f3gq�q�3h3iq�q�3j3kq�3lq�3mq�3nq�3oq�3pq�3qq�3rq�3sq�3tq�3uq�3vq�3wq�3xq�3yq�3zq�3{q��Fq�3}3�3~3�3@3�@M@3�@3�@3�@M@3�3�3�@3�@m;@3�@3�@N@3�3�3�3�3�3�3�@3�@b�@3�@3�@`�@3�3�3�@3�@M@3�@3�@N@3�3�3�3�3�@3�@lx@3�@3�@d{@3�3�3�@3�@nW@3�@3�@L�@3�3�3�3�3�3�3�3�3�@3�@3�@3�@3�@M@3�@3�@`�@3�3�3�@3�@c�@3�@3�@M@3�3�3�3�3�@3�@L�@3�@3�@d@3�3�3�@3�@`�@3�@3�@d{@3�3�3�3�3�3�3�@3�@li@3�@3�@L�@3�3�3�@3�@l@3�@3�@3�@3�`�ִ`�3�3�3�3�3�@3�@c�@3�@3�@`�@3�3�3�@3�@L�@3�@3�@e�@3�423�43�43�3�3�3�3�@3�@xv@3�@3�@d@3�3�3�@3�@M�@3�@4@N@44	444@4@lx@4@4@d@4
4
4@4@y7@4@4@p�@44#44444@4@4@4@4@N@4@4@iM@44 4@4@`�@4!@4"@c�@4$4+4%4(4&@4'@`�@4)@4*@L�@4,4/4-@4.@`�@40@41@M@434U444F454<464947@48@az@4:@4;@cW@4=4C4>@4?@4@@4A@4B@L�@4D@4E@L@4G4N4H4K4I@4J@d@4L@4M@L�@4O4R4P@4Q@g_@4S@4T@`�@4V4e4W4^4X4[4Y@4Z@g_@4\@4]@nW@4_4b4`@4a@`�@4c@4d@d@4f4m4g4j4h@4i@c�@4k@4l@M@4n4q4o@4p@`�@4r@4s@`�@4u?�4v5x4w4�4x4�4y4�4z4�4{4�4|4�4}@4~@4@4�@4�@q~@4�@4�@cW@4�4�4�@4�@N@4�@4�@L�@4�4�4�4�4�@4�@L�@4�@4�@b�@4�4�4�@4�@iM@4�@4�@cW@4�4�4�4�4�4�4�@4�@g_@4�@4�@az@4�4�4�@4�@d@4�@4�@M�@4�4�4�4�4�@4�@y7@4�@4�@d@4�4�4�@4�@d{@4�@4�@c�@4�4�4�4�4�4�4�4�4�@4�@b�@4�@4�@b�@4�4�4�@4�@M@4�@4�@N@4�4�4�4�4�@4�@`�@4�@4�@M@4�4�4�@4�@li@4�@4�@l@4�4�4�4�4�4�4�@4�@b�@4�@4�@c�@4�4�4�@4�@l�@4�@4�@`�@4�4�4�4�4�@4�@d@4�@4�@M�@4�4�4�@4�@M@4�@4�@L@4�594�54�54�54�54�@5@ty@5@5@t�@555@5@�I@5	@5
@b�@555
55@5@`�@5@5@nW@555@5@M@5@5@c�@55*55#55 5@5@`�@5!@5"@cW@5$5'5%@5&@d@5(@5)@iM@5+525,5/5-@5.@M@50@51@l@535654@55@N@57@58@b�@5:5Y5;5J5<5C5=5@5>@5?@d@5A@5B@b�@5D5G5E@5F@b�@5H@5I@N@5K5R5L5O5M@5N@iM@5P@5Q@az@5S5V5T@5U@N@5W@5X@L�@5Z5i5[5b5\5_5]@5^@L@5`@5a@p�@5c5f5d@5e@b�@5g@5h@d@5j5q5k5n5l@5m@d@5o@5p@d@5r5u5s@5t@b�@5v@5w@N@5y9�5z9g5{@5|@5}@5~7L55�5�5�5�i�5�i�5�i�5�i�5�5�5�5�5�5�i�5�5�i�5�i�5�i��i�5�i�5�i�5�i�5�i��i�5�5�5�5�5�i�5�i�5�i�3�i�5�i�5�i�5�i�Ji�5�i�5�i�5�i�5�i���i�5�5�5�5�i�5�5�i�5�i�5�i�F�i�5�i�5�i�5�i�5�i���i�5�5�5�i�5�i�5�i�5�i��ei�5�i�5�i�5�i�5�i�J[i�5�5�5�5�5�5�i�5�5�i�5�i�5�i��i�5�5�5�i�5�i�5�i��i�5�i�5�i�5�i�3�i�5�5�5�5�5�i�5�i�3�i�5�i�5�i�5�i�Ji�5�i�5�i�5�i�5�i���i�5�5�5�5�i�5�5�i�5�i�5�i�F�i�5�i�5�i�5�i�5�i���i�5�5�5�5�5�i�5�i�5�i��ei�5�i�5�i�5�i�3�i�5�i�5�i�5�i�5�i�J[i�5�6,5�65�65�5�i�5�5�i�5�i�5�i��i�5�5�5�i�5�i�5�i��i�6i�6i�6i�3�i�6666	6i�6i�6i�3�i�6
i�6i�Ji�6
i�6i�6i�6i���i�6666i�66i�6i�6i�F�i�6i�6i�6i�6i���i�66'66#6 i�6!i�6"i��ei�6$i�6%i�6&i�3�i�6(i�6)i�6*i�6+i�J[i�6-6�6.6�6/i�606c616L626=6368i�6465i�66i�67i��i�69i�6:i�6;i�6<i��i�6>6G6?6C6@i�6Ai�6Bi�3�i�6Di�6Ei�6Fi�Ji�6Hi�6Ii�6Ji�6Ki���i�6M6X6N6Si�6O6Pi�6Qi�6Ri�F�i�6Ti�6Ui�6Vi�6Wi���i�6Y6^6Zi�6[i�6\i�6]i��ei�6_i�6`i�6ai�6bi�J[i�6d66e6p6f6ki�6g6hi�6ii�6ji��i�6li�6mi�6ni�6oi��i�6q6z6r6v6si�6ti�6ui�3�i�6wi�6xi�6yi�Ji�6{i�6|i�6}i�6~i���i�6�6�6�6�i�6�6�i�6�i�6�i�F�i�6�i�6�i�6�i�6�i���i�6�6�6�i�6�i�6�i�6�i��ei�6�i�6�i�6�i�6�i�J[i�6�i�6�6�6�6�6�6�6�6�i�6�6�i�6�i�6�i��i�6�i�6�i�6�i�6�i��i�6�6�6�6�6�i�6�i�6�i�3�i�6�i�6�i�6�i�Ji�6�i�6�i�6�i�6�i���i�6�6�6�6�i�6�6�i�6�i�6�i�F�i�6�i�6�i�6�i�6�i���i�6�6�6�i�6�i�6�i�6�i��ei�6�i�6�i�6�i�6�i�J[i�6�6�6�6�6�6�i�6�6�i�6�i�6�i��i�6�i�6�i�6�i�6�i��i�6�6�6�6�6�i�6�i�6�i�3�i�6�i�6�i�6�i�Ji�6�i�6�i�6�i�6�i���i�6�6�6�6�i�6�6�i�6�i�6�i�F�i�6�i�6�i�6�i�6�i���i�6�6�6�i�6�i�6�i�6�i��ei�6�i�6�i�6�i�6�i�J[i�6�i�77	7i�7i�i�7i�77i�7i�7i�7i���i�7
i�775777
7i�77i�7i�7i��i�7i�7i�7i�7i��i�770777i�7i�7i�3�i�7i�7i�7 i�7!i�7"i�7#i�7$i�7%i�7&i�7'i�7(i�7)i�7*i�7+i�7,i�7-i�7.i�J7/Ji�71i�72i�73i�74i���i�767A777<i�7879i�7:i�7;i�F�i�7=i�7>i�7?i�7@i���i�7B7G7Ci�7Di�7Ei�7Fi��ei�7Hi�7Ii�7Ji�7Ki�J[i�7M7�i�7N7Oi�7Pi�7Qi�7Ri�7S7n7T7_7U7Zi�7V7Wi�7Xi�7Yi��i�7[i�7\i�7]i�7^i��i�7`7i7a7e7bi�7ci�7di�3�i�7fi�7gi�7hi�Ji�7ji�7ki�7li�7mi���i�7o7z7p7ui�7q7ri�7si�7ti�F�i�7vi�7wi�7xi�7yi���i�7{7�7|i�7}i�7~i�7i��ei�7�i�7�i�7�i�7�i�J[i�i�7�7�8<7�8 7�7�7�7�7�7�7�7�7�7�i�7�7�i�7�i�7�i��i�7�i�7�i�7�i�7�i��i�7�7�7�7�7�i�7�i�7�i�3�i�7�i�7�i�7�i�Ji�7�i�7�i�7�i�7�i���i�7�7�7�7�i�7�7�i�7�i�7�i�F�i�7�i�7�i�7�i�7�i���i�7�7�7�i�7�i�7�i�7�i��ei�7�i�7�i�7�i�7�i�J[i�7�7�7�7�7�7�i�7�7�i�7�i�7�i��i�7�i�7�i�7�i�7�i��i�7�7�7�i�7�i�7�i�7�i�3�i�7�i�7�i�7�i�7�i���i�7�7�7�7�i�7�7�i�7�i�7�i�F�i�7�i�7�i�7�i�7�i���i�7�7�7�i�7�i�7�i�7�i��ei�7�i�7�i�7�i�7�i�J[i�7�i�7�8	7�7�7�7�i�7�7�i�7�i�7�i��i�7�i�7�i�7�i�7�i��i�7�87�87�i�7�i�7�i�3�i�8i�8i�8i�Ji�8i�8i�8i�8i���i�8
888i�88
i�8i�8i�F�i�8i�8i�8i�8i���i�888i�8i�8i�8i��ei�8i�8i�8i�8i�J[i�i�8!i�8"8#i�i�8$i�8%8&i�8'i�8(i�8)i�8*i�8+81i�8,8-i�8.i�8/i�80i���i�828783i�84i�85i�86i���i�88i�89i�8:i�8;i���i�8=8�8>8�8?8r8@8[8A8L8B8Gi�8C8Di�8Ei�8Fi��i�8Hi�8Ii�8Ji�8Ki��i�8M8V8N8R8Oi�8Pi�8Qi�3�i�8Si�8Ti�8Ui�Ji�8Wi�8Xi�8Yi�8Zi���i�8\8g8]8bi�8^8_i�8`i�8ai�F�i�8ci�8di�8ei�8fi���i�8h8m8ii�8ji�8ki�8li��ei�8ni�8oi�8pi�8qi�J[i�8s8�8t88u8zi�8v8wi�8xi�8yi��i�8{i�8|i�8}i�8~i��i�8�8�8�8�8�i�8�i�8�i�3�i�8�i�8�i�8�i�Ji�8�i�8�i�8�i�8�i���i�8�8�8�8�i�8�8�i�8�i�8�i�F�i�8�i�8�i�8�i�8�i���i�8�8�8�i�8�i�8�i�8�i��ei�8�i�8�i�8�i�8�i�J[i�8�i�8�8�8�8�i�8�8�i�8�i�8�i�8�i��i�8�8�8�i�8�i�8�i�8�i�3�i�8�i�8�i�8�i�8�i���i�8�8�i�8�8�i�8�i�8�i�8�i���i�8�8�8�i�8�i�8�i�8�i��ei�8�i�8�i�8�i�8�i�J[i�8�98�i�8�8�8�8�8�8�i�8�8�i�8�i�8�i��i�8�i�8�i�8�i�8�i��i�8�8�8�8�8�i�8�i�8�i�3�i�8�i�8�i�8�i�Ji�8�i�8�i�8�i�8�i���i�8�8�8�8�i�8�8�i�8�i�8�i�F�i�8�i�8�i�8�i�8�i���i�8�8�8�i�8�i�8�i�8�i��ei�8�i�8�i�8�i�8�i�J[i�994999999	i�99i�9i�9i��i�9
i�9i�9i�9
i��i�99999i�9i�9i�3�i�9i�9i�9i�Ji�9i�9i�9i�9i���i�99)99$i�9 9!i�9"i�9#i�F�i�9%i�9&i�9'i�9(i���i�9*9/9+i�9,i�9-i�9.i��ei�90i�91i�92i�93i�J[i�959P969A979<i�9899i�9:i�9;i��i�9=i�9>i�9?i�9@i��i�9B9K9C9G9Di�9Ei�9Fi�3�i�9Hi�9Ii�9Ji�Ji�9Li�9Mi�9Ni�9Oi���i�9Q9\9R9Wi�9S9Ti�9Ui�9Vi�F�i�9Xi�9Yi�9Zi�9[i���i�9]9b9^i�9_i�9`i�9ai��ei�9ci�9di�9ei�9fi�J[i�9h9�9i9x9j9q9k9n9l@9m@b�@9o@9p@b�@9r9u9s@9t@N@9v@9w@d@9y9�9z9}9{@9|@d@9~@9@xv@9�9�9�@9�@d@9�@9�@j*@9�9�9�9�9�9�9�@9�@y7@9�@9�@b�@9�9�9�@9�@c�@9�@9�@c�@9�9�9�9�9�@9�@c�@9�@9�@c�@9�9�9�@9�@d{@9�@9�@t�@9�9�9�9�9�9�9�9�9�9�9�@9�@|�@9�@9�@M@9�9�9�@9�@d@9�@9�@c�@9�9�9�9�9�@9�@N@9�@9�@cW@9�9�9�@9�@d@9�@9�@g4@9�9�9�9�9�9�9�@9�@`�@9�@9�@g4@9�9�9�@9�@l@9�@9�@cW@9�9�9�9�9�@9�@N@9�@9�@M@9�9�9�@9�@cW@9�@9�@�,@9�:9�9�9�9�9�9�9�@9�@N@9�@9�@d@9�9�9�@9�@M@9�@9�@cW@9�9�9�9�9�@9�@c�@9�@9�@`�@:::@:@g4@:@:@b�@:::::	::
@:@b�@:
@:@M@:::@:@L�@:@:@t�@:::::@:@L�@:@:@ty@::": @:!@q~@:#@:$@:%@:&>>:'>kX:(:)=I:*:�:+:�:,:h:-:<:.:5:/:4:0az:1m:2m:3mmazmazgC:6:7w:8:;:9::��yt��"w�:=:P:>:G:?gC:@u�:Au�:Bu�:Cu�:Du�:Eu�:Fu�u�t�:Hazaz:Iaz:Jaz:K:Laz:Mazw:N:Oazwaz:Qaz:RazgQ:S:T:ZgQ:UgQ:V:WgQ:XgQ:YgQwcaz:[:cgQ:\:]gQ:^:a:_:`gQazv�gQ:bgQazw:dgQgQ:egQ:f:ggQ�gQ:i:�:j:t:kaz:lwU:maz:naz:oazaz:p:qazaz:r:sazb�azaz:u:v:�:waz:xaz:yaz:zaz:{:�:|::}:~�Kazwazaz:�t�az:�az:�azv�az:�az:�az:�:�azv�gQazaz:�:�:�azmazm:�:�:�:�m:�:�azmazaz:�:�az�^azaz:�:�az:�az:�az:�az:�az:�az:�az:�az:�az:�azgQaz:�<�:�:�:�:�:�:�w�gQt�az:�:�:�:�az:�:�az:�:�:�azt�az:�azu�az:�:�:�az:�az:�az:�az:�az:�az:�azwaz:�az:�:�:�:�:�:�:�az:�az:�:�azb�az�:�:�:�:�:�:�u�t�azv�:�:�gQ�^w�az:�az:�azazgC:�:�:�:�:�:�:�:�gQazv�u�:�azu�gQ:�az:�azb�gC:�az:�az:�azgQazaz:�:�azaz:�:�az:�azazu�:�az:�az:�az:�az:�azgC:��^:��^az:�:�:�:�:�:�t�azaz:�:�:�:�:��w�kXw�:�:�v�w��ubaz:�maz:�;�az:�:�az:�;z:�;;:�;:�;
;;;;�;azw;;���v�wF;;
;;	��s���;;v��yT��;;;;;;�J�"�y;;az�w�m;;;;L�����<;;���w*T4;;,;;%;;"; ;!�iup)S�;#;$��Q����;&;);';(j���V';*;+���F�v�;-;4;.;1;/;0������SQ;2;3wXS	j;5;8;6;7TCR7w�J�;9;:���L�RF;<;[;=;L;>;E;?;B;@;A����Mb�;C;D����"�;F;I;G;H��;���;J;K�����w;M;T;N;Q;O;PV��Bwc��;R;S�	R��kX;U;X;V;WT%gC��";Y;ZF��&;\;k;];d;^;a;_;`�4S45�;b;c�B���Q�&;e;h;f;g����`;i;j�4a�SC�;l;s;m;p;n;o�u�v�v�;q;r"�u�Tzp;t;w;u;vV��v��1;x;y��0���;{;�;|;�;};�;~;�;;�;�;��Z�o�}�;�;�v����~;�;�;�;����j���;�;��S����[;�;�;�;�;�;������;�;�����?�;�;�;�;�T3
RT;�;��
�De;�;�;�;�;�;�;�;���J��;�;��w�v�;�;�;�;�J���J���;�;���gQw�;�;�;�;�;�;��W��t�;�;���
����;�;�;�;����1��wU;�;�R��az;�;�;�;�;�;�;�;�;�;�����w8;�;����?�{�;�;�;�;�S�������;�;�ubt��
;�;�;�;�;�;���'�-8;�;��?US�F�;�;�;�;��J�bS;�;��+-��;�;�;�;�;�;�;�;��9�HT�w;�;��W�e���,;�;�;�;�w�>��;�;�J��^S���;�;�;�;�;�;�v�az���;�;���;�;�;�;���wqS���;�;�������az;�;�az��;���;���;���;���<<����<��<<��<��<��<��<��<	<�<
<9��<<<,<
<��<<<<��<��<����w<��<��<�����<<"<<<��<��<�K���K<��<��< <!��v�v���<#<(<$��<%��<&<'��v�v���<)��<*��<+����t�<-��<.��</<3<0��<1��<2����v�<4<7<5az<6az��az<8��az��<:<o<;<d<<<Q<=<H<><B<?��<@��<A����v�<C��<D<F<Em��m<G��m��<I<M<J��<K��<L����t�<N��<O��<P�����^<R<[<S<W<T��<U��<V����w<X��<Y��<Z����w<\<`<]��<^��<_�����<a��<b��<c����gC<e��<f��<g<k<h��<i��<j����b�<l��<m��<n����{�<p<�<q<�<r<{<s<w<t��<u��<v����kX<x��<y��<z����gQ<|<�<}��<~��<�����<���<���<�������<�<�<�<�<���<���<������
<���<���<�����v�<�<�<���<���<�����w<���<���<�����ub<���<���<�<�<���<���<�����wc<���<���<�������<���<�<�<�<�<�<�<�<�<�<�<���<���<������i<���<���<������<�<�<���<���<������<���<���<������?<�<�<�<�<���<���<������<���<���<������M<�<�<���<���<�������<���<���<�����v�<���<���<�<�<���<���<�����wU<���<���<������[<���<�<�<�<�<�<�<���<���<�����w�<���<���<������1<�<�<���<���<������w<���<���<�����u�<���<�<�<���<���<�����w�<���<���<�����wq<�=&<�=<�=az<�<�kXgQ<�<�gQgQ<�<��=gQ==gQ=azw�=gQazgQaz==az=w=	w=
w=w===
===az�9t���==�
��yaz=�==����=azaz=az=az=az=az==="az=az= az=!b�az=#az=$az=%azv�az='=3=(=1az=)=*az=+=.=,az=-azgQaz=/azaz=0v�azaz=2maz=4=6=5azjaz=7=8azkX=9=A=:u�=;u�=<u�==u�=>u�=?u�=@u�u�t�=Baz=Caz=Daz=Eaz=Faz=Gaz=HazgCaz=J=�=K=�=L=�=M=R=N=Paz=Ob�az=QazazgQ=S=�=T=]az=U=Vaz=Waz=Xaz=Yaz=Zaz=[az=\azazgC=^=f=_b�=`b�=ab�=bb�=cb�=db�=eb�b�w=gazaz=h=iaz=jaz=kaz=l=~az=maz=n=oaz=pazaz=qaz=r=saz=taz=uaz=vazaz=waz=xaz=y=zaz={azaz=|az=}azw=az=�az=�az=�azaz=�az=�=�az=�az=�azaz=�=�azaz=�az=�=�azaz=�az=�az=�waz=�az=�az=�=�=�az=�=�=�=�=�=�=�=�=�=��
az�yaz=�azazV�=�az=�=�az��SQaz=�=�=�=�az=�az�az=�pazaz=�=�azaz�=�=�=�az=�=�az=��+az=�az�eaz=�=�=�az=�az��az=�azaz=���az=�az=�azaz=�=�azaz=��az=�=�=�=�=�=�kX=�az=�=�az=�azaz=�=�azaz=�=�azgQazazgQaz=�gQaz=�az=�=�=�az=�=�azb�b�azgQaz=�=�az=�=�az=�azj=�=�az=�az=�az=�az=�az=�azaz=�azv�=�azaz=�=�az=�az=�az=�az=�az=�=�=�az=�az=�azwUaz=�az=�az=�azwUaz=�=�az=�=�az=�az=�azazw�az=�az=�az=�az=�az=�=�az=�az=�az>az>az>az>>b�azv�az>>">az>az>	>az>
>azaz>>
az>az>az>azazv�>az>az>>az>>az>azaz>az>>azazw�>az>az>b�>azaz> az>!azgQaz>#az>$>%az>&>2>'az>(az>)az>*azaz>+az>,az>-az>.az>/az>0az>1azmaz>3az>4az>5>6azaz>7>8azaz>9>:azaz>;az><>=azazm>??D>@az>AgC>BgC>CgC>D>�>E>�>F>�>G>�>HgC>I>c>J>PgC>KgC>L>MgCgC>NgC>Ob�gC>Q>Z>R>V>SgCgC>T>UgCgCv�>WgCgC>XgC>YgCgQ>[>_gC>\>]gC>^gCv�gCgC>`>agC>bgCgCaz>d>u>e>lgC>fgC>g>h>jgC>igCaz>kgCazgC>m>qgC>ngC>ogC>pv�gCgC>rgC>s>tgCgCv�>v>{>wgC>xgCgC>y>zgCazgC>|gCgC>}>~gCgC>kXgCgC>�>�gC>�gC>�gCgC>�>�gC>�gC>�gCgCb�gC>�gC>�>�>�>�gCgC>�>�gC>�gC>�gC>�gCgCaz>�gC>�gCgC>�gC>�gC>�gC>�gCaz>�>�>�gC>�gC>�gC>�gC>�gCgC>�>�gCgC>�gC>�azgC>�>�>�gC>�gC>�gC>�gCgC>�gC>�>�gCgC>�gCazgC>�>�gC>�gC>�gCgC>�>�gC>�gC>�gCv�gC>�>�>�>�>�>�>�>�>�gC>�gC>�gCgC>�>�gC>�gCgC>�t�gC>�gC>�gC>�gCgC>�>�gC>�gCgC>�gCj>�gC>�gC>�gC>�gCgC>�>�gCgC>�>�gCwgC>�>�>�>�>�gC>�gC>�>�gC>�>�gCgC>�>�gCgCaz>�gC>�gCgC>�>�gCazgC>�gC>�gC>�gCgC>�>�gCgC>�gC>�gCaz>�>�>�gC>�gC>�gCgC>�gC>�>�gC>�gCazgC>�gC>�gC>�gCgC>�gC>�>�gCgC>�azgC>�?!>�????gC?gC?gCgC?gC??gC?gCgCaz?	gC?
gC?gCgC?gC?
gC??gCt�gC???gC?gC?gCgC?gC?gC??gCgCw?gC?gC?gCgC?gC?gC?gC? gCm?"?3?#?+?$gC?%gC?&gCgC?'gC?(gC?)gC?*�igC?,gC?-gCgC?.?/gC?0gC?1gCgC?2u�gC?4?<?5gC?6gCgC?7?8gC?9gC?:gC?;gCazgC?=gC?>gCgC???@gC?AgC?BgCgC?CgC��?E?daz?F?Gaz?Hazaz?I?Jaz?Kaz?L?[?Maz?N?R?Oaz?P?Qaz����azaz?Saz?T?U�?Vaz?W?Yaz?Xv�azaz?Zt�az?\az?]az?^az?_az?`az?aaz?bazt�?ct�az?e?�?f?�?g?�?h?z?iaz?jaz?kaz?laz?maz?n?t?oaz?paz?qazaz?r?sazaz�y?uaz?vaz?waz?xaz?yaz��az?{?�?|?~?}azgCazaz?maz?�azazu�?�az?�azaz?�?�azb�az?�?�az?�?�?�?�?�gQmaz?�?�az?�az?�az?�azt�az?�?�w�az?�u�?�u�u�?�u�?�u�?�u�v�?�?�?�?�az?�?�?�azu�w�az?�u�?�azaz?�az?�az?�?�az?�az?�az?�az?�azgQaz?�azaz?�az?�az?�?�?�?�azaz?�?�az?�az?�az?�azv�az?�az?�az?�az?�az?�az?�azmaz?�?�?�?�?�?�?�az?�az?�azazw?�az?�az?�kX?�?�?�az?�az?�az?�az?�az?�az?�azgQaz?�az?�az?�az?�az?�az?�az?�azwUaz?�?�az?�?�azaz?�u�azaz?�azu�?�?�?�?�az?�?�azazw�az?�?�?�azu�az?�az?�az?�az?�?�az?�az?�azaz?�az?�az�^?�azaz?�v�az?�A*?�@�?�@7?�@?�@	?�@?�?�?�@?�@aN@@@@@ku@@@@@@@i�@@@@@L@@
@@@@@@
@cW@@@@@d@@@@@@@d@@@@@N@@@(@@!@@@@@@M@@@@ @b�@@"@%@#@@$@L@@&@@'@d@@)@0@*@-@+@@,@j�@@.@@/@nW@@1@4@2@@3@y7@@5@@6@g4@@8@h@9@H@:@A@;@>@<@@=@L@@?@@@@b�@@B@E@C@@D@L�@@F@@G@N@@I@P@J@M@K@@L@b�@@N@@O@b�@@Q@e@R@@S@@T@@Uaz@Vaz@Waz@Xaz@Yaz@Zaz@[az@\@`az@]@^@_azgQm�K@a@cv�@bjv�@dazgCt�@f@@g@c�@@i@x@j@q@k@n@l@@m@��@@o@@p@b�@@r@u@s@@t@N@@v@@w@L@@y@�@z@}@{@@|@d@@~@@@d@@�@�@�@@�@xv@@�@@�@L�@@�@�@�@�@�@�@�@�@�@�@�@@�@j�@@�@@�@M�@@�@�@�@@�@nW@@�@@�@L@@�@�@�@�@�@@�@N@@�@@�@t�@@�@�@�@@�@d@@�@@�@@�@@�az@�az@�az@�az@�@�@�@�az@�@�@�@�@�@�az�?az@�az�-az@�az@�azkXaz@�@�@�az@�@�az@��azaz@��?az@�@�@�azaz@��iaz@�az@�azgQaz@�az@�az@�azaz@�@�azb�az@�@�@�@�@�@�@�@@�@b�@@�@@�@L@@�@�@�@@�@M@@�@@�@j@@�@�@�@�@@�@�@g_@@�@@�@nW@@�@�@�@@�@`�@@�@@�@xv@@�A@�@�@�@�@�@�@�@@�@xv@@�@@�@b�@@�@�@�@@�@Ae@@�@@�@M@@�A@�A@�@A@`�@A@A@L@AAA@A@d@A	@A
@b�@AAA
AAAA@A@j*@A@A@L@AAA@A@`�@A@A@L@AA#AA A@A@c�@A!@A"@N@A$A'A%@A&@iM@A(@A)@iM@A+A�A,AkA-ALA.A=A/A6A0A3A1@A2@c�@A4@A5@ku@A7A:A8@A9@N@A;@A<@b�@A>AEA?ABA@@AA@M�@AC@AD@h@AFAIAG@AH@L�@AJ@AK@JL@AMA\ANAUAOARAP@AQ@��@AS@AT@M@AVAYAW@AX@c�@AZ@A[@l@A]AdA^AaA_@A`@e�@Ab@Ac@`�@AeAhAf@Ag@g_@Ai@Aj@c�@AlA�AmA�AnAuAoArAp@Aq@L�@As@At@L�@AvA�Aw@Ax@Ay@AzazA{azA|azA}azA~azAA�azA�A�A�gCgQb�kXA�A�A�A�ubwUwv�A�azv�gCA�@A�@�@A�A�A�A�A�@A�@A�@g4A�g4A�g4A�A�g4A�g4A�g4A�g4A�g4A�g4A�g4A�g4A�g4A�A�A�g4A�g4A�A�A�A�g4A��+�LA�A����g4�A�A�A�A��m,g4�A�g4����A�A�A�g4A�g4A�A�g4A��+g4A�g4g4�g4A�A�g4A�A�g4A��+g4A�g4g4�A�@A�@g4@A�A�A�@A�@M@A�@A�@q~@A�A�A�A�A�A�A�@A�@d{@A�@A�@b�@A�A�A�@A�@lx@A�@A�@aN@A�A�A�A�A�@A�@aN@A�@A�@c�@A�A�A�@A�@d@A�@A�@c�@A�B&A�BA�A�A�A�A�A�A�@A�@c�@A�@A�@N@A�A�A�@A�@b�@A�@A�@L@A�A�A�A�A�@A�@l@A�@A�@d@BBB@B@L@B@B@L�@BBBBB	BB
@B@c�@B
@B@d@BBB@B@L�@B@B@L�@BBBBB@B@M�@B@B@b�@BB"B @B!@d@@B#B$@B%@xv@B'BFB(B7B)B0B*B-B+@B,@g4@B.@B/@d@B1B4B2@B3@cW@B5@B6@`�@B8B?B9B<B:@B;@d]@B=@B>@y7@B@BCBA@BB@g_@BD@BE@�b@BGBVBHBOBIBLBJ@BK@`�@BM@BN@c�@BPBSBQ@BR@d@BT@BU@l@BWB^BXB[BY@BZ@d@B\@B]@M�@B_BbB`@Ba@cW@Bc@Bd@c�@Bf`(BgQ+BhHHBiFBjC�BkB�BlB�BmB�BnB}BoBvBpBsBq@Br@`�@Bt@Bu@N@BwBzBx@By@M�@B{@B|@M�@B~B�BB�B�@B�@`�@B�@B�@M@B�B�B�@B�@{
@B�@B�@d@B�B�B�B�B�B�B�@B�@d@B�@B�@y7@B�B�B�@B�@�H@B�@B�@M�@B�B�B�B�B�@B�@b�@B�@B�@N@B�B�B�@B�@c�@B�@B�@c�@B�B�B�B�B�B�B�B�B�@B�@xv@B�@B�@b�@B�B�B�@B�@N@B�@B�@ak@B�B�B�B�B�@B�@nW@B�@B�@d@B�B�B�@B�@ku@B�@B�@`�@B�B�B�B�B�B�B�@B�@`�@B�@B�@M�@B�B�B�@B�@g4@B�@B�@L@B�B�B�B�B�@B�@nW@B�@B�@az@B�B�B�@B�@d@B�@B�@`�@B�C*B�CB�B�B�B�B�B�B�@B�@N@B�@B�@`�@B�B�B�@B�@`�@B�@B�@d@B�CB�CB�@C@N@C@C@ku@CCC@C@cW@C	@C
@t�@CCC
CCCC@C@M@C@C@N@CCC@C@L�@C@C@cW@CC#CC C@C@aN@C!@C"@M@C$C'C%@C&@M@C(@C)@M@C+CJC,C;C-C4C.C1C/@C0@cW@C2@C3@`�@C5C8C6@C7@M@C9@C:@j�@C<CCC=C@C>@C?@`�@CA@CB@az@CDCGCE@CF@i�@CH@CI@`�@CKC}CLCSCMCPCN@CO@N@CQ@CR@M@CTCzCU@CV@CW@CXlxCYlxCZlxC[lxC\lxlxC]lxC^C_lxC`lxCalxCblxCclxCdlxCelxCflxCglxChlxCilxCjlxCklxCllxCmlxCnlxColxCplxCqlxCrlxCslxCtlxCulxCvlxCwlxCxlxCylxlx�C{@C|@M@C~C�CC�C�@C�@c�@C�@C�@L�@C�C�C�@C�@L@C�@C�@d{@C�EC�D�C�C�C�C�C�C�C�C�C�@C�@M�@C�@C�@c�@C�C�C�@C�@d@C�@C�@d@C�C�C�C�C�@C�@i�@C�@C�@xv@C�C�C�@C�@rX@C�@C�@C�@C�nWC�nWC�nWC�nWC�nWC�nWC�nWC�nWC�nWC�nWC�nWC�nWC�nWC�nWC�nWC�e�C�e�C�nWe�nWC�D�C�C�C�C�C�@C�@L�@C�@C�@xv@C�D�C�@C�@C�@C�D C�DC�azC�C�C�t�C�t�t�C�C�t�C�t�C�t�C�t�C�t�C�t�C�t�t�C�C�t�C�t�t�C�t�mC�t�t�C�t�C�t�C�t�C�t�C�C�t�t�C�t�C�t�C�C�t�C�t�C�t�C�t�t�C�C�t�C�t�C�t�C�t�C�t�C�t�C�t�C�t�C�t�C�t�C�t�C�t�C�t�C�t�t�C�	t�azDazDDD	azDazDDazDazazDazb�D
azDazDazD
azDazDDDDDDDazazb�Dazazb�DazazDazDDazDazazDazv�DazDazDazazb�D!D2azD"azD#D$azazD%D&azazD'azD(D)azazD*D+azazD,D-azazD.D/azazD0D1azazgCazD3D4D�D5D�D6DAazD7D8azD9D?D:D>azD;D<azD=aza�azazjD@azaz�azDBazDCDDazDEazazDFDGDDHazDIDrDJDfDKazDLazDMazazDNDOazDPazDQazDRazDSazDTazDUazDVazDWazDXazDYazDZazD[DbD\D_D]D^���Ku�v�D`Dav�t�wwDcazDdDew�jmu�DgDnDhDkDiDj�K��u�v�DlDmv�t�wwDoazDpDqw�jmu�DsazDtD{DuDxDvDw���Ku�v�DyDzv�t�wwD|azD}D~w�jmu�D�azD�azazD�azD�D�azD�azaz��D�azD�azD�azD�azD�azazgQazD�D�azazD�azD�azkXD�@D�@d@D�D�D�D�D�@D�@D�@D�b�D�b�b�D�D�b�b�D�D�b�D�b�D�D�D�b�D�b�D�b�D�b�b�D�D�b�b�D�D�b�D�b�D�b��b�D�b�D�b�D�b�D�b�D�b�D�b�D�b�D�b�D�b�D�b���b�D�@D�@c�@D�D�D�@D�@aN@D�@D�@d@D�D�D�D�D�D�D�D�D�@D�@az@D�@D�@L@D�D�D�@D�@N@D�@D�@D�@D�@D�@d@D�D�D�D�D�@D�@L�@D�@D�@d@D�D�D�@D�@c�@D�@D�@L�@D�D�D�D�D�D�D�@D�@ku@D�@D�@iM@D�D�D�@D�@d{@D�@D�@�H@D�ExD�EuD�@D�@D�@D�|�D�|�D�|�D�|�D�|�D�|�E|�E|�E|�E|�E|�E|�E|�E|�E|�E	|�E
EaEEKEE2E
�
E�
E�
E�
E�
E�
E�
EE*E�
EE$EE�
EE�
EE�
E��
EE�
���
�
E �
E!�
E"E#�
��
E%�
�
E&E'�
E(�
E)�
��
E+�
�
E,�
E-E.�
�
E/E0�
�
E1�
�E3|�E4|�E5|�E6|�E7|�E8|�E9|�E:|�E;|�E<|�E=EFE>EBE?|�E@|�EA|�g�|�|�ECED|�|�EEg�|�EG|�|�EHEI|�|�EJg�|�|�ELEMg�ENg�EOg�EPg�EQg�ERg�ESg�ETg�EUg�EVg�EWE\g�EXg�EYEZg�E[g�g�ŀg�E]E^g�g�E_E`g�ŀg�Eb|�Ec|�Ed|�Ee|�Ef|�Eg|�Eh|�Ei|�Ej|�Ek|�El|�Em|�En|�|�EoEp|�EqEsEr|�|�g�Et|�g�|�Ev@Ew@M@EyE|Ez@E{@N@E}@E~@L@E�E�E�E�E�E�E�E�E�E�E�@E�@d@E�@E�@N@E�E�E�@E�@L@E�@E�@xv@E�E�E�E�E�@E�@xv@E�@E�@~@E�E�E�@E�@c�@E�@E�@L�@E�E�E�E�E�E�E�@E�@ku@E�@E�@cW@E�E�E�@E�@d@E�@E�@M@E�E�E�E�E�@E�@cW@E�@E�@N@E�E�E�@E�@M@E�@E�@M@E�E�E�E�E�E�E�E�E�@E�@i�@E�@E�@d@E�E�E�@E�@E�@E�ME�Mg�ME�@E�@iM@E�E�E�E�E�@E�@N@E�@E�@M@E�E�E�@E�@cW@E�@E�@c�@E�E�E�E�E�E�E�@E�@c�@E�@E�@d@E�E�E�@E�@M�@E�@E�@`�@E�E�E�E�E�@E�@`�@E�@E�@d@E�E�E�@E�@L@E�@F@l@FGFF�FFEFF%FFFFFFF	@F
@ty@F@F
@L�@FFF@F@`�@F@F@p�@FFFFF@F@F@M@F@F@xv@FF"F @F!@cW@F#@F$@N@F&F6F'F/F(F,F)@F*@F+@d@F-@F.@nW@F0F3F1@F2@d{@F4@F5@l�@F7F>F8F;F9@F:@nW@F<@F=@�@F?FBF@@FA@d@FC@FD@d@FFFxFGFVFHFOFIFLFJ@FK@nW@FM@FN@M@FPFSFQ@FR@M@FT@FU@M@FWF^FXF[FY@FZ@b�@F\@F]@L�@F_FbF`@Fa@d{@Fc@Fd@Fe@FfNFgNNFhFiNFjNFkNFlNFmNFnNFoNFpNFqNFrNFsNFtNFuNFvNFwNQ�NFyF�FzF�F{F~F|@F}@N@F@F�@d@F�F�F�@F�@b�@F�@F�@cW@F�F�F�F�F�@F�@E@F�@F�@L�@F�F�F�@F�@d@F�@F�@M@F�F�F�F�F�F�F�F�F�F�F�@F�@d@F�@F�@M@F�F�F�@F�@b�@F�@F�@xv@F�F�F�F�F�@F�@d@F�@F�@b�@F�F�F�@F�@M�@F�@F�@N@F�F�F�F�F�F�F�@F�@e�@F�@F�@M@F�F�F�@F�@N@F�@F�@iM@F�F�F�F�F�@F�@M@F�@F�@d{@F�F�F�@F�@`�@F�@F�@aN@F�F�F�F�F�F�F�F�F�@F�@b�@F�@F�@j�@F�F�F�@F�@F�@F�@F�@d@F�@F�@d@F�F�F�F�F�@F�@c�@F�@F�@N@F�F�F�@F�@b�@F�@F�@az@F�G
F�GF�GF�@F�@G@MGMGy�MG@G@c�@GG
G@G	@M@G@G@N@GGGGG@G@��@G@G@g4@GGG@G@d@G@G@L�@GG�GGtGGUG GFG!G?G"G%G#@G$@M@G&@G'@G(@G)EG*EG+EG,EG-EG.EG/EG0EG1EG2EG3EG4EG5EG6EG7EG8G<G9G:ըEEG;
4EEG=EG>Ez[G@GCGA@GB@N@GD@GE@d@GGGNGHGKGI@GJ@L�@GL@GM@N@GOGRGP@GQ@t�@GS@GT@nW@GVGeGWG^GXG[GY@GZ@d@G\@G]@N@G_GbG`@Ga@`�@Gc@Gd@iM@GfGmGgGjGh@Gi@d@Gk@Gl@xv@GnGqGo@Gp@d@Gr@Gs@h@GuG�GvG�GwG~GxG{Gy@Gz@M@G|@G}@c�@GG�G�@G�@y7@G�@G�@d@G�G�G�G�G�@G�@g_@G�@G�@M@G�G�G�@G�@M�@G�@G�@G�@e�G�G�G�G�G�G�G�@G�@lx@G�@G�@M�@G�G�G�@G�@`�@G�@G�@M@G�G�G�G�G�@G�@d@G�@G�@xv@G�G�G�@G�@M@G�@G�@L@G�G�G�G�G�G�G�G�G�G�G�@G�@N@G�@G�@g_@G�G�G�@G�@N@G�@G�@`�@G�G�G�G�G�@G�@c�@G�@G�@iM@G�G�G�@G�@g4@G�@G�@c�@G�G�G�G�G�G�G�@G�@M@G�@G�@t�@G�G�G�@G�@d@G�@G�@t�@G�G�G�G�G�@G�@e�@G�@G�@g_@G�G�G�@G�@`�@G�@G�@ՙ@G�HG�HG�G�G�G�G�@G�@L@G�@G�@g4@G�HH@H@e�@H@H@g4@HH
HH
H@H	@t�@H@H@b�@HHH@H@`�@H@H@`�@HH9HHHHH@H@d@H@H@d@HH6H@H @H!@H"H4H#NQ�H$H%NH&NH'NH(NH)NH*NH+NH,NH-NH.NH/NH0NH1NH2NH3NQ�NNH5NOTH7@H8@N@H:HAH;H>H<@H=@M@H?@H@@cW@HBHEHC@HD@L@HF@HG@M@HIN�HJMjHKL�HLL�HMLqHNH�HOHiHPHSHQ@HR@aN@HT@HU@HV@NHWNHXNHYHZNH[NH\NH]NH^NH_NH`NNHaHbNHcNHdNHeNHfNHgNHhNQ�NHjH�Hk@Hl@Hm@NHnNHoNHpHqNHrNHsNHtNHuNHvNHwNNHxHyNHzNH{NH|NH}NH~NHNQ�NH�@H�@M@H�LjH�H�H�@H�@H�@H�azH�azgQazH�@H�@H�@NH�H�NH�NNH�H�J�H�I�H�I)H�H�H�H�H�H�H�H�H�NNH�NH�H�N�H�H�N�NH�NNH�NH�H�N�H�H�N�NH�H�H�NNH�NH�H�N�H�H�N�NH�NNH�NH�H�N�H�H�N�NH�H�H�H�H�NNH�NH�H�N�H�H�N�NH�NNH�NH�H�N[�H�H�N[�NH�H�H�NNH�NH�H�N[�H�H�N[�NH�NNH�NH�H�N[�H�H�N[�NH�IH�H�H�H�H�NNH�NH�H�NH�H�H�H�H�N[�NN[�H�N[�NH�NNH�NH�H�NH�H�H�H�H�N[�NN[�H�N[�NH�H�H�NNH�NH�H�NH�H�H�H�H�NU�NNU�H�NU�NH�NNH�NH�H�NH�IIIINU�NNU�INU�NIIIIINNI	NI
INIII
IINU�NNU�INU�NINNINIINIIIIINU�NNU�INU�NININNI NI!I"NI#I'I$I&I%NU�NNU�I(NU�NI*IiI+IJI,I;I-I4I.NNI/NI0I1NQ�I2I3NQ�NI5NNI6NI7I8NQ�I9I:NQ�NI<ICI=NNI>NI?I@NQ�IAIBNQ�NIDNNIENIFIGNQ�IHIINQ�NIKIZILISIMNNINNIOIPNQ�IQIRNQ�NITNNIUNIVIWNQ�IXIYNQ�NI[IbI\NNI]NI^I_NQ�I`IaNQ�NIcNNIdNIeIfNQ�IgIhNQ�NIjI�IkI�IlIwImNNInNIoIpNIqIuIrItIsNQ�NNQ�IvNQ�NIxNNIyNIzI{NI|I�I}II~NQ�NNQ�I�NQ�NI�I�I�NNI�NI�I�NI�I�I�I�I�NQ�NNQ�I�NQ�NI�NNI�NI�I�NI�I�I�I�I�NQ�NNQ�I�NQ�NI�I�I�I�I�NNI�NI�I�NI�I�I�I�I�NQ�NNQ�I�NQ�NI�NNI�NI�I�NI�I�I�I�I�NQ�NNQ�I�NQ�NI�NI�NNI�NI�I�NI�I�I�I�I�NQ�NNQ�I�NQ�NI�JRI�I�I�I�I�I�I�I�I�NNI�NI�I�NOTI�I�NOTNI�NNI�NI�I�NOTI�I�NOTNI�I�I�NNI�NI�I�NOTI�I�NOTNI�NNI�NI�I�NOTI�I�NOTNI�I�I�I�I�NNI�NI�I�NOTI�I�NOTNI�NNI�NI�I�NOqI�I�NOqNI�I�I�NNI�NI�I�NOqI�I�NOqNI�NNI�NI�I�NOqI�I�NOqNI�J.JJJJJNNJNJJNJJ
JJ	JNOqNNOqJNOqNJ
NNJNJJNJJJJJNOqNNOqJNOqNJJ#JNNJNJJNJJ!JJ JNYNNYJ"NYNJ$NNJ%NJ&J'NJ(J,J)J+J*NYNNYJ-NYNJ/JFJ0J;J1NNJ2NJ3J4NJ5J9J6J8J7NYNNYJ:NYNJ<NNJ=NJ>J?NJ@JDJAJCJBNYNNYJENYNJGNJHNNJINJJJKNJLJPJMJOJNNYNNYJQNYNJSJ�JTJsJUJdJVJ]JWNNJXNJYJZN�VJ[J\N�VNJ^NNJ_NJ`JaN�VJbJcN�VNJeJlJfNNJgNJhJiN�VJjJkN�VNJmNNJnNJoJpN�VJqJrN�VNJtJ�JuJ|JvNNJwNJxJyN�VJzJ{N�VNJ}NNJ~NJJ�NR�J�J�NR�NJ�J�J�NNJ�NJ�J�NR�J�J�NR�NJ�NNJ�NJ�J�NR�J�J�NR�NJ�J�J�J�J�J�J�NNJ�NJ�J�NJ�J�J�J�J�NR�NNR�J�NR�NJ�NNJ�NJ�J�NJ�J�J�J�J�NR�NNR�J�NR�NJ�J�J�NNJ�NJ�J�NJ�J�J�J�J�NP}NNP}J�NP}NJ�NNJ�NJ�J�NJ�J�J�J�J�NP}NNP}J�NP}NJ�J�J�J�J�NNJ�NJ�J�NJ�J�J�J�J�NP}NNP}J�NP}NJ�NNJ�NJ�J�NJ�J�J�J�J�NP}NNP}J�NP}NJ�NJ�NNJ�NJ�J�NJ�J�J�J�J�NP}NNP}J�NP}NJ�K�J�KAJ�K(J�K	J�J�J�J�J�NNJ�NJ�J�NN;J�J�NN;NJ�NNJ�NJ�J�NN;J�J�NN;NJ�KJ�NNJ�NJ�J�NN;KKNN;NKNNKNKKNN;KKNN;NK
KKKKNNK
NKKNN;KKNN;NKNNKNKKNOEKKNOENKK!KNNKNKKNOEKK NOENK"NNK#NK$K%NOEK&K'NOENK)NK*NK+K6K,NNK-NK.K/NK0K4K1K3K2NOENNOEK5NOENK7NNK8NK9K:NK;K?K<K>K=NOENNOEK@NOENKBK�KCKbKDKSKEKLKFNNKGNKHKINOcKJKKNOcNKMNNKNNKOKPNOcKQKRNOcNKTK[KUNNKVNKWKXNOcKYKZNOcNK\NNK]NK^K_NOcK`KaNOcNKcKrKdKkKeNNKfNKgKhNOcKiKjNOcNKlNNKmNKnKoN}EKpKqN}ENKsKzKtNNKuNKvKwN}EKxKyN}ENK{NNK|NK}K~N}EKK�N}ENK�K�K�K�K�K�K�NNK�NK�K�NK�K�K�K�K�N}ENN}EK�N}ENK�NNK�NK�K�NK�K�K�K�K�N}ENN}EK�N}ENK�K�K�NNK�NK�K�NK�K�K�K�K�NTFNNTFK�NTFNK�NNK�NK�K�NK�K�K�K�K�NTFNNTFK�NTFNK�K�K�K�K�NNK�NK�K�NK�K�K�K�K�NTFNNTFK�NTFNK�NNK�NK�K�NK�K�K�K�K�NTFNNTFK�NTFNK�NK�NNK�NK�K�NK�K�K�K�K�NTFNNTFK�NTFNK�NK�LK�K�K�K�K�K�K�NNK�NK�K�NW�K�K�NW�NK�NNK�NK�K�NW�K�K�NW�NK�K�K�NNK�NK�K�NW�K�K�NW�NK�NNK�NK�K�NW�K�K�NW�NK�LK�LK�NNK�NK�K�NW�K�K�NW�NLNNLNLLNW�LLNW�NLLL	NNL
NLLNW�L
LNW�NLNNLNLLNW�LLNW�NLLFLL/LL$LNNLNLLNLL"LL!L NW�NNW�L#NW�NL%NNL&NL'L(NL)L-L*L,L+NW�NNW�L.NW�NL0L;L1NNL2NL3L4NL5L9L6L8L7NN+NNN+L:NN+NL<NNL=NL>L?NL@LDLALCLBNN+NNN+LENN+NLGL^LHLSLINNLJNLKLLNLMLQLNLPLONN+NNN+LRNN+NLTNNLUNLVLWNLXL\LYL[LZNN+NNN+L]NN+NL_NL`NNLaNLbLcNLdLhLeLgLfNN+NNN+LiNN+NLkLnLl@Lm@b�@Lo@Lp@c�@LrL�LsLzLtLwLu@Lv@b�@Lx@Ly@��@L{L~L|@L}@L�@L@L�@`�@L�L�L�L�L�@L�@L�@L�@L�@N@L�@L�@|�@L�L�L�@L�@b�@L�@L�@b�@L�L�L�L�L�L�L�L�L�@L�@xv@L�@L�@`�@L�L�L�@L�@b�@L�@L�@L@L�L�L�L�L�@L�@`�@L�@L�@N@L�L�L�@L�@d@L�@L�@M@L�L�L�L�L�L�L�@L�@d@L�@L�@c�@L�L�L�@L�@b�@L�@L�@��@L�L�L�L�L�@L�@az@L�@L�@N@L�L�L�@L�@M@L�@L�@b�@L�ML�L�L�L�L�L�L�L�L�@L�@Л@L�@L�@i�@L�L�L�@L�@M@L�@L�@c�@L�L�L�L�L�@L�@d@L�@L�@d]@L�L�L�@L�@L�@L�@L�@`�@L�@L�@b�@L�ML�L�L�L�L�@L�@E@L�@L�@l@MMM@M@N@M@M@xv@MMMMM	@M
@d@M@M
@c�@MMM@M@e�@M@M@M@MMHMM9MM2MM/M@M@M@MNMNNMM NM!NM"NM#NM$NM%NM&NM'NM(NM)NM*NM+NM,NM-NM.NQ�NM0@M1@b�@M3M6M4@M5@N@M7@M8@M@M:MAM;M>M<@M=@L�@M?@M@@t�@MBMEMC@MD@e@MF@MG@`�@MIM[MJMTMKMQML@MM@MN@MO@MP@M@MR@MS@d@MUMXMV@MW@M@MY@MZ@d{@M\McM]M`M^@M_@N@Ma@Mb@d@MdMgMe@Mf@M@Mh@Mi@d@MkN2MlM�MmM�MnM�MoM�MpMsMq@Mr@E@Mt@Mu@Mv@MwMMxMMyMMzMM{MM|MM}MM~MMMM�MM�M�M�MM�MM�MM�M�M�MMM�M�MMtOM�MtOM�M�MtOMM�MM�MM�MM�MM�MM�MM�M��MM�M�M�@M�@`�@M�@M�@M�@M�@M�@b�@M�M�M�M�M�@M�@cW@M�@M�@`�@M�M�M�@M�@c�@M�@M�@c�@M�M�M�M�M�M�M�@M�@M�@NM�NM�NM�M�NM�NM�NM�NM�NM�NM�NNM�M�NM�NM�NM�NM�NM�NM�NQ�NM�@M�@d@M�M�M�@M�@e@M�@M�@`�@M�M�M�M�M�@M�@b�@M�@M�@L@M�M�M�@M�@d@M�@M�@L�@M�NM�M�M�M�M�M�M�@M�@d@M�@M�@b�@M�M�M�@M�@iM@M�@M�@L�@M�M�M�M�M�@M�@ak@M�@M�@K�@M�M�M�@M�@`�@M�@M�@N@NN#NN	NNN@N@d{@N@N@d@N
N
N@N@g4@N@N@N@NcWNcWNcWNcWNcWNcWNcWNcWNcWNcWNcWNcWNcWNcWcWNN cWN!cWcWN"$cWN$N+N%N(N&@N'@!T@N)@N*@E@N,N/N-@N.@t�@N0@N1@d@N3NuN4NVN5NDN6N=N7N:N8@N9@E@N;@N<@nW@N>NAN?@N@@cW@NB@NC@L@NENONFNLNG@NH@NI@NJMNKM�OMNM@NN@L�@NPNSNQ@NR@L�@NT@NU@t�@NWNfNXN_NYN\NZ@N[@iM@N]@N^@iM@N`NcNa@Nb@M@Nd@Ne@L�@NgNnNhNkNi@Nj@{
@Nl@Nm@M@NoNrNp@Nq@N@Ns@Nt@`�@NvN�NwN�NxNNyN|Nz@N{@`�@N}@N~@g4@N�N�N�@N�@q~@N�@N�@c�@N�N�N�N�N�@N�@d@N�@N�@b�@N�N�N�@N�@xv@N�@N�@N@N�N�N�N�N�N�N�@N�@iM@N�@N�@M�@N�N�N�@N�@d{@N�@N�@�,@N�N�N�N�N�@N�@d@N�@N�@N�@N�@N�@g_@N�N�N�@N�@N�@N�@N�@d@N�@N�@xg@N�O�N�O>N�N�N�N�N�N�N�N�N�N�N�@N�@d@N�@N�@nW@N�N�N�@N�@`�@N�@N�@L@N�N�N�N�N�@N�@L@N�@N�@L�@N�N�N�@N�@M�@N�@N�@M@N�N�N�N�N�N�N�@N�@d{@N�@N�@xv@N�N�N�@N�@N@N�@N�@d@N�N�N�N�N�@N�@`�@N�@N�@N�@N���N����O��N�N�N�@N�@L@N�@N�@{
@OOOOOO	OOO@O@cW@O@O@d{@O
O
O@O@b�@O@O@d{@OOOOO@O@xv@O@O@cW@OOO@O@E@O@O@`�@O O/O!O(O"O%O#@O$@M@O&@O'@L�@O)O,O*@O+@d{@O-@O.@M�@O0O7O1O4O2@O3@cW@O5@O6@M@O8O;O9@O:@ku@O<@O=@d@O?O{O@O_OAOPOBOIOCOFOD@OE@L�@OG@OH@`�@OJOMOK@OL@d@ON@OO@b�@OQOXOROUOS@OT@N@OV@OW@N@OYO\OZ@O[@g4@O]@O^@iM@O`OoOaOhObOeOc@Od@L�@Of@Og@d@OiOlOj@Ok@d@Om@On@L�@OpOt@OqOr@Os@b�@OuOxOv@Ow@M@Oy@Oz@j�@O|O�O}O�O~O�OO�O�@O�@d@O�@O�@l�@O�O�O�@O�@N@O�@O�@`�@O�O�O�O�O�@O�@M@O�@O�@`�@O�O�O�@O�@c�@O�@O�@nW@O�O�O�O�O�O�O�@O�@L�@O�@O�@g_@O�O�O�@O�@L�@O�@O�@N@O�O�O�O�O�@O�@d@O�@O�@d@O�O�O�@O�@w�@O�@O�@N@O�P�O�P7O�O�O�O�O�O�O�O�O�@O�@d@O�@O�@g4@O�O�O�@O�@i�@O�@O�@`�@O�O�O�O�O�@O�@N@O�@O�@iM@O�O�O�@O�@d@O�@O�@O�@O�dO�dO�dO�dO�dO�dO�dO�ddO�dO�d��O�P(O�P!O�O�O�@O�@M@O�@O�@O�@O�PO�PO�g4O�g4O�g4O�g4O�g4O�g4O�g4O�g4O�g4O�g4O�g4O�g4O�g4Pg4PPg4Pg4��PPg4��g4g4PPg4P	g4P
g4Pg4Pg4P
g4Pg4Pg4Pg4Pg4�[g4g4Pg4PPg4Pg4Pg4Pg4Pg4Pg4Pg4Pg4Pg4Pg4Pg4P g4mg4P"P%P#@P$@`�@P&@P'@N@P)P0P*P-P+@P,@d{@P.@P/@E@P1P4P2@P3@d@P5@P6@�b@P8PWP9PHP:PAP;P>P<@P=@l@P?@P@@L�@PBPEPC@PD@d@PF@PG@c�@PIPPPJPMPK@PL@d@PN@PO@L@PQPTPR@PS@M@PU@PV@e�@PXPgPYP`PZP]P[@P\@M@P^@P_@xv@PaPdPb@Pc@li@Pe@Pf@j*@PhP�PiPlPj@Pk@b�@Pm@Pn@Po@Pp`�Pq`�Pr`�Ps`�Pt`�Pu`�Pv`�Pw`�Px`�Py`�Pz`�P{`�P|`�P}`�P~`�P`�P�`�P�`�i�`�P�P�P�@P�@e�@P�@P�@`�@P�P�P�P�P�P�P�P�P�P�P�@P�@`�@P�@P�@`�@P�P�P�@P�@d@P�@P�@b�@P�P�P�P�P�@P�@l@P�@P�@l@P�P�P�@P�@iM@P�@P�@M@P�P�P�P�P�P�P�@P�@P�@P�P�P�g4P�g4P�g4P�g4P�g4P�g4P�g4P�g4P�g4P�g4P�g4P�g4P�g4P�g4P�g4P�g4P�g4�g4P�g4P�g4P�g4P�g4P�g4P�g4P�g4P�g4P�g4P�g4P�g4P�g4�g4P�@P�@M@P�P�P�@P�@P�@P�@P�@xv@P�@P�@`�@P�P�P�P�P�@P�@ak@P�@P�@p�@P�P�P�@P�@d@P�@P�@N@P�QP�P�P�P�P�P�P�@P�@d@P�@P�@M@P�P�P�@P�@N@P�@P�@iM@P�QP�QQ@Q@d@Q@Q@`�@QQ	Q@Q@L�@Q
@Q@c�@Q
QQQQQQ@Q@M@Q@Q@N@QQQ@Q@M@Q@Q@d@QQ$QQ!Q@Q @aN@Q"@Q#@Ae@Q%Q(Q&@Q'@d@Q)@Q*@b�@Q,Z$Q-T�Q.R�Q/RQ0Q�Q1Q|Q2QAQ3Q:Q4Q7Q5@Q6@N@Q8@Q9@L�@Q;Q>Q<@Q=@xv@Q?@Q@@az@QBQIQCQFQD@QE@E@QG@QH@E@QJQyQK@QL@QM@MQNQOQPM�MQQMQRMQSMQTMQUMQVMQWQXQhMQYQZQaQ[�oQ\�oQ]�oQ^�oQ_�o�oQ`�o�OQb�oQc�o�oQd�oQeQf�oQg�o�o�QiMQjMQkMQlQrMQmQnMMQoQpQq�MM��QsMQtMQuQwMQvM�;QxMM�-Qz@Q{@M�@Q}Q�Q~Q�QQ�Q�@Q�@Q�@Q�@Q�@xv@Q�@Q�@c�@Q�Q�Q�@Q�@cW@Q�@Q�@Q�@Q�g4g4Q�Q�g4Q�g4Q�g4Q�g4Q�g4Q�g4Q�g4Q�g4Q�g4Q�g4Q�g4Q�g4��g4Q�Q�Q�Q�Q�@Q�@{
@Q�@Q�@c�@Q�Q�Q�@Q�@g_@Q�@Q�@c�@Q�Q�Q�Q�Q�Q�Q�Q�Q�@Q�@M�@Q�@Q�@d@Q�Q�Q�@Q�@t�@Q�@Q�@d@Q�Q�Q�Q�Q�@Q�@d@Q�@Q�@��@Q�Q�Q�@Q�@`�@Q�@Q�@d@Q�Q�Q�Q�Q�Q�Q�@Q�@nW@Q�@Q�@Q�@Q�MQ�Mg�MQ�Q�Q�@Q�@p�@Q�@Q�@M@Q�Q�Q�Q�Q�@Q�@iM@Q�@Q�@b�@Q�RQ�@Q�@Q�@Q�dQ�ddQ�Q�dQ�dQ�dQ�dQ�dQ�dQ�dQ�dQ�dQ�dQ�dQ�dQ�dQ�dQ�dQ�dRdRdRdRdRdRdRdRdRdR	dR
dRdRdR
dRd�dR@R@d@RRORR0RR!RRRRR@R@`�@R@R@L@R@R@R @g4@R"R)R#R&R$@R%@ku@R'@R(@M@R*R-R+@R,@M@R.@R/@cW@R1R@R2R9R3R6R4@R5@cW@R7@R8@c�@R:R=R;@R<@p�@R>@R?@d@RARHRBRERC@RD@c�@RF@RG@M@RIRLRJ@RK@L�@RM@RN@L�@RPR�RQR`RRRYRSRVRT@RU@L�@RW@RX@L@RZR]R[@R\@d{@R^@R_@`�@RaRhRbReRc@Rd@iM@Rf@Rg@N@RiRlRj@Rk@M@Rm@Rn@Ro@Rpg4RqR~Rrg4Rsg4Rtg4Rug4Rvg4Rwg4Rxg4Ryg4Rzg4R{g4R|g4R}g4_Ng4g4RR�g4R�g4R�g4R�g4R�g4R�g4R�g4R�g4R�g4R�g4R�g4R�g4R�g4R�g4R�g4�+g4R�R�R�R�R�R�R�@R�@g4@R�@R�@az@R�R�R�@R�@az@R�@R�@R�@R�g4R�g4R�g4R�g4R�g4R�g4R�g4R�g4R�g4R�g4R�g4R�g4R�g4R�g4R�g4R�g4R�R�R�R�R�g4R�g4R�g4R�g4R�g4R�g4R�g4R�g4R�g4R�g4g4R�g4R�g4R�g4R�g4R�g4R���g4#��R�R��g4��g4R�R�R�R�R�@R�@�b@R�@R�@L@R�R�R�@R�@p�@R�@R�@`�@R�SXR�SR�R�R�R�R�R�R�R�R�@R�@d{@R�@R�@d@R�R�R�@R�@az@R�@R�@d@R�R�R�R�R�@R�@b�@R�@R�@c�@R�R�R�@R�@aN@R�@R�@��@R�S
R�SR�R�R�@R�@H:@R�@R�@`�@SSS@S@xv@S@S@S@S@S	@��@SSSSS
@S@d@S@S@p�@SSS@S@d@S@S@d@SS9SS*SS#SS S@S@{
@S!@S"@d@S$S'S%@S&@`�@S(@S)@M@S+S2S,S/S-@S.@d@S0@S1@M@S3S6S4@S5@c�@S7@S8@d]@S:SIS;SBS<S?S=@S>@i�@S@@SA@iM@SCSFSD@SE@ak@SG@SH@g4@SJSQSKSNSL@SM@iM@SO@SP@d@SRSUSS@ST@xv@SV@SW@L�@SYTSZS�S[S�S\ScS]S`S^@S_@M@Sa@Sb@L�@SdSgSe@Sf@`�@Sh@Si@Sj@SkazSlazSmS�SnazSoazSpS�azSqSrS�SsS}StazSuazSvazSwazSxazSyazSzazS{azS|azgCt�S~azSazS�azS�azS�azS�azS�azS�azS�az�azazS�S�azS�azS�azS�S�S�S�S�S�S�S�azS�azS�b�t�S�S�S�azmazgQS�gQb�S�azS�azS�azb�azS�S�S�S�S�S�azS�azb�S�gQt�azS�S�t�S�t�azw�S�w�gCS�S�S�S�S�S�v�gCgCwwgCb�S�S�kXv�kXS�azS�azS�azS�azS�azv�azazS�S�azazS�azS�S�azS�azS�azS�azazS�S�S�S�azazS�gQazS�azS�S�azv�v�azS�azS�azS�S�S�azS�azS�azS�azS�azS�azazS�S�azazS��S�S�azS�az�azazS�S�azS�azS�S�azS�S�azS�azS�S��azS�azS�az�azS�azS�azS�azS�azS�azS�azS�azS�az�azS�S�S�S�S�@S�@nW@S�@S�@L@S�S�S�@S�@L@S�@S�@li@S�TS�TS�TS�@T@iM@T@T@`�@TTT@T@M@T	@T
@T@T@T
@f@TTTTT@T@c�@T@T@iM@TTT@T@g_@T@T@rf@TT@TT.T T'T!T$T"@T#@M@T%@T&@M�@T(T+T)@T*@`�@T,@T-@g4@T/T6T0T3T1@T2@M@T4@T5@`�@T7T:T8@T9@iM@T;@T<@T=@T>e�T?e�e�t/TATPTBTITCTFTD@TE@N@TG@TH@d{@TJTMTK@TL@M@TN@TO@c�@TQToTRTUTS@TT@ak@TV@TW@TX@TYT[TZazazv�T\azu�T]T^azT_azT`TmazTaTbazTcazTdazazTeTfazTgazThazazTiTjazTkazTlazaz�KTnazazjTpT�Tq@Tr@Ts@TtazTuazazTvTwazTxazTyT~azTzT{azazT|T}azazb�TT�T�T�azT�azT�azT�T�T�T�azT�azmazT�azT�azT�azT�azT�azT�azmazT�azT�azazT�T�azT�azT�azT�azT�T�T�T��T�azgQT�azv�gCT�azT�az�"azT�azT�T�T�T�T�azT�azT�azT�T�T�T�T�azT�azv�azT�azT�azT�azazv�azT�T�azT�azT�azv�v�T�azT�azT�azT�azT�azT�azT�azT�T�v�az�azT�azwazT�@T�@aN@T�Y%T�X�T�X]T�X;T�X,T�X%T�X"T�@T�@T�@T�UiT�UNT�U!T�UT�azT�azT�azT�azT�azT�azazT�T�T�T�T�T�T�T�azT�azT�azazT�T�azT�jT�jT�jT�jT�jT�jT�jT�jT�jT�jjT�T�jT�T�T��T��j�T�jT�j�jazb�T�T�azb�azu�T�T�T�azwazT�T�azgCT�azT�T�T�azazT�w*azUazUU�azUazUazUazUazUazUazU	azU
azUazUazU
azUazUazUazUazaz�UazUazazUUazUazUazUazUazUazUazUazUazUazazU azv�U"U0U#azU$azazU%U&azU'azU(azU)azU*azU+azU,azazU-U.azazU/azt�U1azazU2U3azU4azU5azU6azU7azU8UCU9U;azU:t�azazU<azU=U>azU?UAU@w�gQubb�UBgC�"UDUFUEazkXazUGazazUHUIazUJULb�UKwb�UMazgQazt�UOUPUcUQU`URUS�azUTv�UUwUVwUWwUXwUYwUZwwU[U\wwU]U^wU_w�wUaUbv�b�v�t�UdUgUeUfmwUwwc�Uhv��UjX!UkU�UlUUmU|UnU{u�UoUpjUqjUrjUsjUtjUujUvjUwjUxjUyjUzjmjgCkXU}U~v�az�^t�U�U�U�U�v�azw���U�U�azgQm{�U�azU�azU�W�U�V�U�V&U�U�U�U�U�w�U�U�U�azU�azU�U�U�U�U�U�U�U�az�azwUU�U�w�kXazU�azaz�U�U�azU�azU�az��U�U�U�azazkXazU���azU�azU�U�U�azU�azU�azU�azt�azazU�U�U�U�U�U�U�b�azgQazazU�azb�U�azU�U�b�azazt�U�azU�U�U�azU�azwazazU�U�azazU�U�azU�azU�U�gCazazgCU�VU�U�U�U�U�U�azU�azU�U�azazU�U�U�wUazaz�U�azazU�azU�azU�U�azazv�U�U�U�azU�azU�azazU�azU�wazU�azazU�azU�azU�azU���azU�U�U�U�U�azazwU�U�U�azU�U�U�U�U�azwazazU�az��U�U�v�azazU�azv�az��U�VazU�U�U�U�azazU�U�U�azmaz�yazU�U�azU�azgCazazVazVVazVazjazVV
VazVazV	azb�azVVVVV
azu�b�azVazVVazVVVV�Kv�v�azVVgCazaz��VazVazVazVV V{�VV����^{�V!V#{�V"u�azV$V%v�wFw�gQV'VlV(VEV)V:V*V5V+V-azV,azb�V.azkXV/V0azV1V3azV2��azazV4az��V6V8azV7��azV9azt�azV;VBazV<V=azazV>V?azV@azVAazazb�VCazVDazaz{�VFVZVGVWVHVUVIVTVJVOazVKazVLVMVN{�azazgQVPazazVQVRVSazb�u�azazu�u�VVu�azazVXVYazazgCV[VgazV\azV]V^mV_VbazV`VaazmazVcVeazVd�1azVfazb�azVhazazViVjazVkazazkXVmV�VnVxVoVuVpazazVqVrazVsazVtaz��azazVvazVwa��
VyV�VzazV{V�V|azV}azV~azVazt�azV�azV�V�V�azgQazV�V�V�V�b�azazV�V�azV�azV�azV�azV�azV�azV�azV�azV�azV�azV�azV�azV�azV�azV�azazv�V�V�azu�u�azV�azazV�az{�V�V�azV�azV�azV�V�mV�mV�mV�mazmV�V�V�V�mV�mazazV���azV�azV�V�mazjazV�WV�V�V�V�V�V�V�V�azV�u�azV�azV�azV�azV�azV�azV�V�azu�azb�V�azazV�azV�V�azV�V�azV�azV�mazV�azazV�gCazV�V�V�V�azV�azV�azV�V�V�azV�V�azazpV�azV�azazwV�azV�azazw�V�V�azV�azjV�azgQazV�WV�V�V�V�V�V�V��az��azV�V�V�azazmV�azazgCV�V�V�V�V�V�V�azV�V�azV�azV�mazV�azazV�mazwazazV�azV�V�V�az��t��azV�V�WazV�azWWWWwazwWWv�azgCv�kXv�WWW	WW
W
WWu�azazwazWgQazWWWazazw�WWazgCaz��WWWgCWWwazgCazWWgCWazgCgCWazw�W WdW!W]W"W:W#W6W$W/W%W.W&t�W'W*W(wW)w��wwW+W,W-kXwwUw��t�W0W1wt�b�W2W3azW4azW5azmazW7azW8W9azwmazW;WJW<WEW=azazW>W?WBW@ububWAubwcubWCWDub�ubWFmWGmWHazazWIazv�WKWZWLWQmWMWNazWOazWPaz�wUazWRWSWVWTazWUaz�azazWWWXWYv�azb�azW[W\az�v�azazW^W_azW`WbazWaazw�Wcazw�azWeW}WfWuWgWrWhWjazWiw�azazWkazWlazWmWnWpWoazv�azazWqmazWsazWtazazgQWvazazWwWxazazWyWzazW{azazW|u�w�W~azazWazW�W�azazkXW�azW�W�W�W�W�W�azW�azW�W�azW�W���azjazazW�W�W�azW�azW�kXazW�azW�azazw�W�W�W�W�azW�azW�W�azazgQW�azazW�gQazW�W�W�W�W�azW�azw�azazW�W�azW�azazW��azW�azW�azazW�W�azW�azW�azW�azv�azW�W�W�W�W�W�W�W�W�W�W�W�wUazazw�W�azw�azazW�azW�W�W�W�W�W�W�W�W��wb�gQW�v�b�wW�W�W�W�azv��"��W�v�wW�b�W�W�b�W�b�gQW�b��b�W�W�W�W�W�W���Kazt�W�W�v���jgCW�W�W�W��yazaz��W�azazv�W�W�azW�W�azazW�gCazazW�W�W�W�W�azW�W�azW�azW�az��azW�azW�azW�azW�azb�azW�W�W�azW�az�^W�W�azgCazazW�W�azW�azW�azv�azW�XW�XW�XazW�azW��yazXazazXazw�XXXazXXazXXazX	az�yX
�
azv�azX
�X�az�XXXXXX�azazXwazazXXX�azaz�XXXazXazaz��XazXX azjt�azjazX#@X$@c�@X&X)X'@X(@N@X*@X+@p�@X-X4X.X1X/@X0@|�@X2@X3@N@X5X8X6@X7@b�@X9@X:@`�@X<XKX=XDX>XAX?@X@@M@XB@XC@az@XEXHXF@XG@j�@XI@XJ@az@XLXVXMXPXN@XO@c�@XQ@XR@XS@XTazXUazazb�XWXZXX@XY@c�@X[@X\@c�@X^X}X_XnX`XgXaXdXb@Xc@L�@Xe@Xf@c�@XhXkXi@Xj@L�@Xl@Xm@iM@XoXvXpXsXq@Xr@L�@Xt@Xu@b�@XwXzXx@Xy@M�@X{@X|@lx@X~X�XX�X�X�X�@X�@lx@X�@X�@gn@X�X�X�@X�@c�@X�@X�@L@X�X�X�X�X�@X�@c�@X�@X�@l@@X�X�@X�@xv@X�X�X�X�X�X�X�X�X�X�X�@X�@M@X�@X�@cW@X�@X�@X�@l@X�X�X�X�X�@X�@d@X�@X�@c�@X�X�X�@X�@l�@X�@X�@b�@X�X�X�X�X�X�X�@X�@d@X�@X�@c�@X�X�X�@X�@b�@X�@X�@b�@X�X�X�X�X�@X�@N@X�@X�@n�@X�X�X�@X�@L@X�@X�@iM@X�Y	X�X�X�X�X�X�X�@X�@L�@X�@X�@M@X�X�X�@X�@X�@X�dX�dX�dX�dX�dX�dX�dX�dX�dX�dX�dX�dX�dX�ddX�X�dX�dX�ddb�X�@X�@b�@X�YX�X�X�@X�@M�@Y@Y@c�@YYY@Y@M@Y@Y@c�@Y
YYYYYY
@Y@p�@Y@Y@p�@YYY@Y@L@Y@Y@b�@YY!YYY@Y@c�@Y@Y @c�@Y"@Y#@Y$@iM@Y&Y�Y'YiY(YGY)Y8Y*Y1Y+Y.Y,@Y-@cW@Y/@Y0@nW@Y2Y5Y3@Y4@cW@Y6@Y7@nW@Y9Y@Y:Y=Y;@Y<@p�@Y>@Y?@nW@YAYDYB@YC@`�@YE@YF@c�@YHYWYIYPYJYMYK@YL@iM@YN@YO@M@YQYTYR@YS@aN@YU@YV@E@YXYbYYY_YZ@Y[@Y\@Y]@Y^@d{@Y`@Ya@g4@YcYfYd@Ye@M@Yg@Yh@d{@YjY�YkYzYlYsYmYpYn@Yo@b�@Yq@Yr@d{@YtYwYu@Yv@c�@Yx@Yy@L@Y{Y�Y|YY}@Y~@"E@Y�@Y�@y7@Y�Y�Y�@Y�@d@Y�@Y�@lx@Y�Y�Y�Y�Y�Y�Y�@Y�@d@Y�@Y�@`�@Y�Y�Y�@Y�@c�@Y�@Y�@N@Y�Y�@Y�Y�@Y�@aN@Y�Y�Y�@Y�@c�@Y�@Y�@N@Y�Y�Y�Y�Y�Y�Y�Y�Y�Y�Y�@Y�@b�@Y�@Y�@L�@Y�Y�Y�@Y�@y7@Y�@Y�@y7@Y�Y�Y�Y�Y�@Y�@y7@Y�@Y�@�@Y�Y�Y�@Y�@L@Y�@Y�@d@Y�Y�Y�Y�Y�Y�Y�@Y�@e�@Y�@Y�@N@Y�Y�Y�@Y�@b�@Y�@Y�@xv@Y�Y�Y�Y�Y�@Y�@c�@Y�@Y�@d{@Y�Y�Y�@Y�@M@Y�@Y�@߫@Y�ZY�Y�Y�Y�Y�Y�Y�@Y�@cW@Y�@Y�@az@Y�Y�Y�@Y�@M@Y�@Y�@d@Y�Y�Y�Y�Y�@Y�@nW@Y�@Y�@iM@Y�ZZ@Z@|�@Z@Z@M@ZZZZZZZ	@Z
@d@Z@Z
@`�@ZZZ@Z@d@Z@Z@iM@ZZZZZ@Z@|�@Z@Z@lx@ZZ!Z@Z @N@Z"@Z#@xv@Z%\�Z&[DZ'Z�Z(Z|Z)ZHZ*Z9Z+Z2Z,Z/Z-@Z.@b�@Z0@Z1@d@Z3Z6Z4@Z5@aN@Z7@Z8@d{@Z:ZAZ;Z>Z<@Z=@`�@Z?@Z@@g4@ZBZEZC@ZD@n�@ZF@ZG@M@ZIZXZJZQZKZNZL@ZM@`�@ZO@ZP@M�@ZRZUZS@ZT@N@ZV@ZW@`�@ZYZ`ZZZ]Z[@Z\@aN@Z^@Z_@d@ZaZdZb@Zc@c�@Ze@Zf@Zg@Zhb�Zib�Zjb�Zkb�Zlb�Zmb�Znb�Zob�Zpb�Zqb�Zrb�Zsb�Ztb�Zub�Zvb�Zwb�ZxZzb�Zyb�d$b�Z{x�b�Z}Z�Z~Z�ZZ�Z�Z�Z�@Z�@c�@Z�@Z�@L�@Z�Z�Z�@Z�@L�@Z�@Z�@g4@Z�Z�Z�Z�Z�@Z�@g4@Z�@Z�@Z�@Z�@Z�@nW@Z�Z�Z�@Z�@d@Z�@Z�@`�@Z�Z�Z�Z�Z�Z�Z�@Z�@c�@Z�@Z�@d@Z�Z�Z�@Z�@b�@Z�@Z�@d{@Z�Z�Z�Z�Z�@Z�@`�@Z�@Z�@nW@Z�Z�Z�@Z�@p�@Z�@Z�@p�@Z�[Z�Z�Z�Z�Z�Z�Z�Z�Z�@Z�@L�@Z�@Z�@p�@Z�Z�Z�@Z�@`�@Z�@Z�@N@Z�Z�Z�Z�Z�@Z�@L�@Z�@Z�@c�@Z�Z�Z�@Z�@L@Z�@Z�@aN@Z�Z�Z�Z�Z�Z�Z�@Z�@M@Z�@Z�@M@Z�Z�Z�@Z�@M@Z�@Z�@Z�@Z�Z�Z�Z����LZ�Z�\9t��j�Z�Z�Z�Z�Z�@Z�@y7@Z�@Z�@N@Z�[[@[@cW@[@[@d@[[%[[[[[	[[
@[@l@[
@[@iM@[[[@[@nW@[@[@`�@[[[[[@[@N@[@[@l@[["[ @[!@iM@[#@[$@ty@[&[5['[.[([+[)@[*@L@[,@[-@L@[/[2[0@[1@N@[3@[4@l@[6[=[7[:[8@[9@d@[;@[<@c�@[>[A[?@[@@p�@[B@[C@`�@[E[�[F[�[G[f[H[W[I[P[J[M[K@[L@d{@[N@[O@cW@[Q[T[R@[S@L@[U@[V@L�@[X[_[Y[\[Z@[[@L�@[]@[^@M@[`[c[a@[b@g4@[d@[e@d@[g[v[h[o[i[l[j@[k@iM@[m@[n@E@[p[s[q@[r@b�@[t@[u@M�@[w[~[x[{[y@[z@w�@[|@[}@d@[[�[�@[�@[�@[�aN[�aN[�aN[�aN[�aN[�aN[�aN[�aN[�aN[�aN[�aN[�aN[�aN[�aN[�aN[�aN[�aN[�aN[�aN[�aN[�aN[�aN[�aN[�aN[�aN[�aNaN[�[�aN[�aN[�aN[�aN[�aN[�aNaN[�aNa1[�@[�@M�@[�[�[�[�[�[�[�[�[�@[�@iM@[�@[�@`�@[�[�[�@[�@aN@[�@[�@b�@[�[�[�[�[�@[�@g4@[�@[�@xv@[�[�[�@[�@cW@[�@[�@M@[�[�[�[�[�[�[�@[�@L@[�@[�@[�@[�b�b�[�b�x�[�[�[�@[�@d@[�@[�@[�@[�@[�@xv@[�[�[�[�[�@[�@|�@[�@[�@L�@[�[�[�@[�@[�@N@[�@[�@iM@[�\.[�\[�\[�[�[�[�[�@[�@E@[�@[�@L@[�[�[�@[�@p�@[�@[�@nW@\\\\\@\@b�@\@\@iM@\	\\
@\@b�@\
@\@cW@\\\\\\\@\@L@\@\@H:@\\\@\@gn@\@\@z�@\ \'\!\$\"@\#@aN@\%@\&@M@\(\+\)@\*@iM@\,@\-@j�@\/\Q\0\?\1\8\2\5\3@\4@N@\6@\7@b�@\9\<\:@\;@L�@\=@\>@M�@\@\J\A\G\B@\C@\D@\El�\Fl�b�l�\H@\I@M@\K\N\L@\M@L�@\O@\P@`�@\R\�\S\�\T\�\U@\V@\W@\X\�\YcW\Z\�\[\}\\cW\]cW\^\u\_cW\`$$\acW\bcW\ccW\d\n\e\mcW\fcW\g\h\j��\i�@x�\k\l4P�)�$$$$cW\o\t\pcW\qcW\rcW\scW$$cW�QcW\vcW\wcWcW\xcW\y\zcW\{cWcW\|cW$$\~\�cW\\�cWcW\�cW\�\�cWcW\�\�cW\�cW\�cW\�cW\�cW\�cW\�cW$$cW\�cWcW\�cW\�cW\�cW\�\�cW\�cW\�cW\�cWcW\�\�cW\�\��^\��fcW\�cWcW�^\�cW\�cW\�cW\�cW\�cW\�cW\�cW\�cWcW\�\�cW\�cWcW��cW\�\�\�cW\�cW\�cW\�\�cW\�cWcW\�cW\�\�cW\�cWcW\�cW\�\�cW\�\�\�\�\�\�|$$cW�f\�\���|��cW\�\�\�|x�|\�\��f$$��|\�cW\�cW\�cW\�cW\�cW\�cW\�cW\�cW\�cW\�cW\�cWcW\�\�cW\�cWrCcW\�@\�@`�@\�\�\�@\�@d@\�@\�@c�@\�\�\�\�\�@\�@`�@\�@\�@c�@\�\�\�@\�@E@\�@\�@e@\�^�\�]m\�].\�]\�]\�\�\�\�\�@\�@az@\�@\�@L�@\�\�\�@\�@iM@\�@\�@b�@]]]]]@]@M@]@]@L@]	]]
@]@xv@]
@]@L�@]]]]]]]@]@b�@]@]@L@]]]@]@M@]@]@L@] ]']!]$]"@]#@`�@]%@]&@��@](]+])@]*@d@],@]-@xv@]/]N]0]?]1]8]2]5]3@]4@d@]6@]7@�H@]9]<]:@];@�@]=@]>@d{@]@]G]A]D]B@]C@j�@]E@]F@L@]H]K]I@]J@`�@]L@]M@e�@]O]^]P]W]Q]T]R@]S@b�@]U@]V@ty@]X][]Y@]Z@d@]\@]]@d]@]_]f]`]c]a@]b@d@]d@]e@iM@]g]j]h@]i@c�@]k@]l@L�@]n^�]o^�]p^q]q]x]r]u]s@]t@l@]v@]w@L@]y^n]z@]{@]|@]}cW]~cW]]�]�cW]�cW]�cW]�cW]�cW]�cW]�cW]�cW]�cW]�cW]�cW]�cW]�cW]�cW]�cWcW�f]�^_]�]�]�]�]�]�]�cW]�cW]�]�cW]�]�cW]�cW]�]�]�]�]�]�]�]�cW]��mcWcW]��cW]�cW]�cWcW�f]�cW]�]�cW]�cW�cW]�x�cW]�cW]�cW]�cW]�cWcW��)�cW]�cW]�]�]�cWcW]�]�cW]�cW]�cW�cW]�]�cW]�]�cW]�cW]�cW��cWcW]�]�cW]�cW]�cW$$cW]�]�]�cW]�]�]�cW]�]�]�cW]�cW]�cW$$cW]�cW]�cW]�cW$$cWcW]�]�cW]�cW]�cW]�cW]�cWcW]�cW]�]�cW$$cW]�]�cW]�cW]�cW]�]�cW]�cW]�cW$$cW]�cW]�cW]�cW]�cW]�cW]�cWm�cW]�^']�]�]�cW]�cW]�cW]�cW]�cW]�cW]�cW]�cW]�cW]�cW]�cWcW��]�^]�^cW]�cW]�]�]�]�cW]�cW$$cW^^^cW^cW^cW^cW^cW$$cWcW^cW^cW^	cW^
cW^$$cW^
^^cW^cW^cW^cW��cW^cW^cW^cW^cW$$cW^cW^cW^cW^cW^cW^cW^cW^^$^ ^!cW�f^"^#$$cW$$cW^%cWcW^&Q�cW^(^U^)^JcW^*^+^0cW^,^-cW^.cW^/cW$$cW^1cW^2cW^3cW^4cW^5cW^6cW^7cW^8^9x�cWgh^:cW^;^<cWcW^=cW^>cW^?cW^@cW^A^BcWcW^CcW^DcW^E^FcWcW^GcW^HcW^IcW��^KcW^LcWcW^M^NcW^OcW^PcW^QcW^RcW^ScW$$^T$$cW^VcW^W^]^XcWcW^Y^ZcW^[cW^\cW��cWcW^^cW�^`cW^acW^b^j^ccWcW^dcW^ecW^f^gcW^hcW^icW��cW^kcW^lcW^mcWcW\�^o@^p@m�@^r^y^s^v^t@^u@c�@^w@^x@li@^z^}^{@^|@M@^~@^@d@^�^�^�^�^�^�^�@^�@`�@^�@^�@M�@^�^�^�@^�@L�@^�@^�@aN@^�^�^�^�^�@^�@`�@^�@^�@d@^�^�^�@^�@y7@^�@^�@d]@^�^�^�^�^�^�^�^�^�@^�@d@^�@^�@c�@^�^�^�@^�@M@^�@^�@p�@^�^�^�^�^�@^�@d@^�@^�@xv@^�^�^�@^�@c�@^�@^�@d@^�^�^�^�^�^�^�@^�@az@^�@^�@d@^�^�^�@^�@b�@^�@^�@N@^�^�^�^�^�@^�@iM@^�@^�@d@^�^�^�@^�@b�@^�@^�@g_@^�_^^�_^�_^�^�^�^�^�^�^�@^�@j�@^�@^�@p�@^�^�^�@^�@xv@^�@^�@L@^�^�^�^�^�@^�@iM@^�@^�@d@^�^�^�@^�@aN@^�@^�@L�@____	___@_@c�@_@_@aN@_
_
_@_@`�@_@_@`�@_____@_@M@_@_@`�@___@_@L@_@_@c�@_ _?_!_0_"_)_#_&_$@_%@b�@_'@_(@L@_*_-_+@_,@M@_.@_/@c�@_1_8_2_5_3@_4@E@_6@_7@xv@_9_<_:@_;@b�@_=@_>@M@_@_O_A_H_B_E_C@_D@L�@_F@_G@M@_I_L_J@_K@E@_M@_N@L@_P_W_Q_T_R@_S@N@_U@_V@d]@_X_[_Y@_Z@N@_\@_]@c�@___�_`_�_a_p_b_i_c_f_d@_e@nW@_g@_h@L@_j_m_k@_l@az@_n@_o@c�@_q_�_r_�_s@_t@_u@_v_�_w_�_x_�_y_~_z_|_{lijVli_}liq�li_li_�liq�li_�_�_�_�_�li�Rli_�li��li_�_�_�lignli_�lignli_�_�_�_�_�_�_�lipzli_�li��li_�li_�li)�li_�li_�li_�lijVli_�_�_�_�_�li_�li_�li�li_�li_�li_�liili_�_�_�li_�li_�lixgli_�lili_�_�liieli_�@_�@n�@_�_�_�@_�@i�@_�@_�@N@_�_�_�_�_�_�_�@_�@cW@_�@_�@c�@_�_�_�@_�@nW@_�@_�@`�@_�_�_�_�_�@_�@ak@_�@_�@xv@_�_�_�@_�@g4@_�@_�@d@_�`	_�_�_�_�_�_�_�@_�@b�@_�@_�@aN@_�_�_�@_�@L@_�@_�@_�@_�ak_�ak_�ak_�ak_�ak_�ak_�ak_�ak_�ak_�ak_�ak_�ak_�ak_�ak_�ak_�ak_�akak_�rvak_�`_�_�_�@_�@g_@`@`@d@```@`@b�@`@`@az@`
``````
@`@gn@`@`@li@```@`@xv@`@`@g_@``!```@`@c�@`@` @d{@`"`%`#@`$@b�@`&@`'@xv@`)o'`*e�`+c�`,a�`-`�`.`p`/`Q`0`?`1`8`2`5`3@`4@M@`6@`7@nW@`9`<`:@`;@N@`=@`>@M@`@`G`A`D`B@`C@L@`E@`F@rf@`H`N`I@`J@`K@`L@`M@A@`O@`P@L�@`R`a`S`Z`T`W`U@`V@Л@`X@`Y@M@`[`^`\@`]@b�@`_@``@`�@`b`i`c`f`d@`e@ak@`g@`h@e�@`j`m`k@`l@iM@`n@`o@xv@`q`�`r`�`s`z`t`w`u@`v@b�@`x@`y@az@`{`~`|@`}@L@`@`�@xv@`�`�`�`�`�@`�@b�@`�@`�@l@`�`�`�@`�@`�@`�@`�@az@`�`�`�`�`�`�`�@`�@cW@`�@`�@b�@`�`�`�@`�@d@`�@`�@M�@`�`�`�`�`�@`�@`�@`�@`�@�H@`�`�`�@`�@`�@`�@`�@L�@`�`�`�`�`�`�`�`�`�`�`�@`�@c�@`�@`�@M@`�`�`�@`�@b�@`�@`�@t�@`�`�`�`�`�@`�@iM@`�@`�@`�@`�`�`�@`�@L�@`�@`�@xv@`�`�`�`�`�`�`�@`�@c�@`�@`�@d@`�`�`�@`�@N@`�@`�@M@`�`�`�`�`�@`�@M�@`�@`�@b�@`�`�`�@`�@M@`�@`�@xv@`�a`�a`�`�`�`�`�@`�@b�@`�@`�@nW@`�`�`�@`�@b�@`�@`�@c�@aaaaa@a@d@a@a@g_@a	aa
@a@c�@a
@a@b�@aa�aa�aa�a@a@a@aAaaTaa aAaAaAaAaAaAaA�Aa!�a"�a#�a$�a%�a&�a'�a(�a)�a*�a+�a,a@a-�a.��a/a0�a1�a2�a3�a4�a5�a6�a7�a8�a9�a:�a;��a<a=�a>��a?���aA�aB�aC�aD�aE�aF�aG�aH�aI�aJ�aK�aL�aM�aN��aO�aPaQ�aR��aS���aUabaVAaWAaXAaYa]AaZa[AAa\��Aa^Aa_Aa`aa������Aac��ad��ae��af��ag��ah��ai��aj��ak��al����aman����aoap����aqar��as��at��au��av��aw��ax��ay��az��a{��a|��a}��a~��a��a���a�������a�@a�@d@a�a�a�@a�@d@a�@a�@aN@a�a�a�a�a�@a�@d@a�@a�@�@a�a�a�@a�@M@a�@a�@|�@a�ba�a�a�a�a�a�a�a�a�a�a�@a�@b�@a�@a�@M@a�a�a�@a�@d{@a�@a�@N@a�a�a�a�a�@a�@q~@a�@a�@b�@a�a�a�@a�@l�@a�@a�@xv@a�a�a�a�a�a�a�@a�@L�@a�@a�@c�@a�a�a�@a�@a�@a�@a�@l�@a�@a�@az@a�a�a�a�a�@a�@M@a�@a�@c�@a�a�a�@a�@iM@a�@a�@c�@a�a�a�a�a�a�a�a�a�@a�@aN@a�@a�@d@a�a�a�@a�@aN@a�@a�@b�@a�a�a�a�a�@a�@M@a�@a�@M�@a�a�a�@a�@d@a�@a�@c�@bbbbbbb@b@M�@b@b@M�@b	bb
@b@M�@b
@b@L@bbbbb@b@nW@b@b@g4@bbb@b@L�@b@b@M@bb�b bpb!b0b"b)b#b&b$@b%@g4@b'@b(@b�@b*b-b+@b,@`�@b.@b/@L�@b1b8b2b5b3@b4@L�@b6@b7@N@b9bmb:@b;@b<@b=`�b>`�b?`�b@`�bA`�bB`�bC`�bD`�bE`�bF`�bG`�bH`�bI`�bJb^bKbWbLbRbMbO�bN��ubPbQ,�u`��%bSbU`�bT`�f�bV`�`��vbX`�bYb\bZb[[�`�`��b]�W`�}b_bjb`bebabb�b�bcbd}`�`���bfbibgbh����`�}`�bk`�bl`�*)`�bn@bo@L�@bqb�brbybsbvbt@bu@L@bw@bx@c�@bzb�b{@b|@b}@b~M�bM�b�M�b�M�M�b�M�b�M�b�b�M�b�M�b�M�M�b�@b�@d@b�b�b�b�b�@b�@M@b�@b�@M@b�b�b�@b�@g4@b�@b�@c�@b�c�b�c�b�c�b�b�b�@b�@d@b�@b�@b�@b�b�b�b�b�azb�azb�azb�azazb�b�azb�azb�azb�azb�azb�b�b�azv�azb�azaz�Bb�azb�azb�azb�azb�azb�azb�azb�azb�azb�azb�azb�azb�azazb�azb�b�b�azb�w*�Bb�cb�azb�cSb�c4b�b�b�azb�azb�b�b�azazw�b�b�b�azb�azb�b�b�b�b�azb�b�azb�b�azazb�b�azazb�b�azazb�v�azazb�azb�azb�azb�azb�azwv�b�b�b�b�azazb�b�azazb�b�b�b�b�b�azazwUazb�gCazb�azb�azazb�b�b�b��i�ib�az�i�ib��ib��ib�b��ib��i�ib��iccazcazcazcazcazcazcazcazc	azc
azcc(ccc
ccccc�iv�azv�cazv�azccw�cv�wcccgCv�azwccc!ccccjazwcazcc azw��i�c"c%c#c$azjgCwc&c'az�^w�azc)azc*c1c+c.c,c-gCgQaz�c/c0�azw�azc2azc3azw�azc5cBc6azc7azc8azazc9azc:c;a�c<a�c=a�a�c>c?a�c@a�cAa�b�a�cCcGcDazcEazazcFb�azcHazcIazcJazazcKcLb�cMb�cNb�cOb�cPb�cQb�cRb�b��cTazcUazcVcbcWazazcXazcYgCcZwc[wc\wc]wc^wc_wc`wcagCt�ccazcdcuceazazcfcgcnchazciazazcjckazclazcmazazb�coazcpazazcqazcrcsazctazazv�azcvcwazcxazcyazczazc{azc|azc}azazc~b�azgCazc�c�c�@c�@M�@c�@c�@c�@c�c�c�c�c�@c�@iM@c�@c�@b�@c�c�c�@c�@L�@c�@c�@c�@c�c�c�c�c�c�c�@c�@ku@c�@c�@M�@c�c�c�@c�@N@c�@c�@`�@c�c�c�c�c�@c�@`�@c�@c�@xv@c�c�c�@c�@t�@c�@c�@L�@c�d�c�dSc�dc�c�c�c�c�c�c�c�c�@c�@b�@c�@c�@L@c�c�c�@c�@N@c�@c�@xv@c�c�c�c�c�@c�@d@c�@c�@cW@c�c�c�@c�@M�@c�@c�@c�@c�dc�c�c�c�c�@c�@iM@c�@c�@M�@c�c�c�@c�@b�@c�@c�@c�@c�azc�azazc�c�c�c�azc�azc�azc�azc�azc�azc�azc�azc�azazc�azc�c�c�c�azazc�azv�c�azc�az��azazc�dazdazdazdazdazazwcdd
dd
d@d	@M�@d@d@M�@ddd@d@L@d@d@az@dd4dd%ddddd@d@L�@d@d@M�@dd"d @d!@d@d#@d$@M@d&d-d'd*d(@d)@aN@d+@d,@d@d.d1d/@d0@`�@d2@d3@M@d5dDd6d=d7d:d8@d9@az@d;@d<@M@d>dAd?@d@@d@dB@dC@g_@dEdLdFdIdG@dH@c�@dJ@dK@�X@dMdPdN@dO@M@dQ@dR@N@dTd�dUdhdVdedWd^dXd[dY@dZ@d@d\@d]@`�@d_dbd`@da@L�@dc@dd@L�@df@dg@cW@didxdjdqdkdndl@dm@L@do@dp@i�@drduds@dt@M�@dv@dw@d@dyd�dzd}d{@d|@L�@d~@d@M�@d�d�d�@d�@az@d�@d�@L@d�d�d�d�d�d�d�d�d�@d�@N@d�@d�@d@d�d�d�@d�@d@d�@d�@`�@d�d�d�d�d�@d�@d@d�@d�@cW@d�d�d�@d�@L�@d�@d�@g4@d�d�d�d�d�d�d�@d�@M@d�@d�@L�@d�d�d�@d�@`�@d�@d�@d@d�d�d�d�d�@d�@d@d�@d�@`�@d�d�d�@d�@nW@d�@d�@d�@d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��ϯ�d�e]d�ed�d�d�d�d�d�d�d�d�@d�@L@d�@d�@d�@d@d�d�d�@d�@b�@d�@d�@xv@d�d�d�d�d�@d�@E@d�@d�@g_@d�d�d�@d�@M�@d�@d�@N@d�ed�ed�ee@e@N@e@e@M�@ee	e@e@M�@e
@e@M�@e
eeee@e@c�@e@e@d@eee@e@N@e@e@nW@ee>ee,ee%ee"e @e!@E@e#@e$@N@e&e)e'@e(@b�@e*@e+@e�@e-e4e.e1e/@e0@N@e2@e3@`�@e5e8e6@e7@L@e9@e:@e;@e<e�e�e=�t/e?eNe@eGeAeDeB@eC@M@eE@eF@N@eHeKeI@eJ@y7@eL@eM@N@eOeVePeSeQ@eR@`�@eT@eU@g4@eWeZeX@eY@|�@e[@e\@g_@e^e�e_e~e`eoeaehebeeec@ed@L�@ef@eg@�,@eielej@ek@nW@em@en@M@epeweqeter@es@iM@eu@ev@L�@exe{ey@ez@az@e|@e}@aN@ee�e�e�e�e�e�@e�@L@e�@e�@e�@e�@e�@m;@e�e�e�@e�@L�@e�@e�@d@e�e�e�e�e�@e�@p�@e�@e�@b�@e�e�e�@e�@�@e�@e�@N@e�e�e�e�e�e�e�e�e�@e�@N@e�@e�@d@e�e�e�@e�@d@e�@e�@b�@e�e�e�e�e�@e�@`�@e�@e�@b�@e�e�e�@e�@{�@e�@e�@`�@e�e�e�e�e�e�e�@e�@cW@e�@e�@b�@e�e�e�@e�@N@e�@e�@M@e�e�e�e�e�@e�@d{@e�@e�@i�@e�e�e�@e�@j�@e�@e�@M�@e�me�k(e�j�e�jje�jKe�e�e�e�e�e�e�@e�@nW@e�@e�@M�@e�e�e�@e�@g4@e�@e�@`�@e�jDe�e�e�@e�@L�@e�@e�@e�@`�e�e�`�e�`�`�ffhpfg9ff�ffCff$fffff`�`�f	`�f
`�fw7ff
`�w7`�f`�`�f`�f`�fw7ff`�w7`�fff`�`�f`�f`�fw7ff`�w7`�f`�`�f`�f `�f!w7f"f#`�w7`�f%f4f&f-f'`�`�f(`�f)`�f*w7f+f,`�w7`�f.`�`�f/`�f0`�f1Uf2f3`�U`�f5f<f6`�`�f7`�f8`�f9Uf:f;`�U`�f=`�`�f>`�f?`�f@UfAfB`�U`�fDfwfEf^fFfRfG`�`�fH`�fI`�fJfKfPfLfNfM`�U`�`�fO`�UfQ`�U`�fS`�`�fT`�fU`�fVfWf\fXfZfY`�U`�`�f[`�Uf]`�U`�f_fkf``�`�fa`�fb`�fcfdfifefgff`��L`�`�fh`��Lfj`��L`�fl`�`�fm`�fn`�fofpfufqfsfr`��L`�`�ft`��Lfv`��L`�fxf�fyf�fz`�`�f{`�f|`�f}f~f�ff�f�`��L`�`�f�`��Lf�`��L`�f�`�`�f�`�f�`�f�f�f�f�f�f�`��L`�`�f�`��Lf�`��L`�f�`�f�`�`�f�`�f�`�f�f�f�f�f�f�`��L`�`�f�`��Lf�`��L`�f�f�f�f�f�f�f�f�f�`�`�f�`�f�`�f��jf�f�`��j`�f�`�`�f�`�f�`�f��jf�f�`��j`�f�f�f�`�`�f�`�f�`�f��jf�f�`��j`�f�`�`�f�`�f�`�f��jf�f�`��j`�f�f�f�f�f�`�`�f�`�f�`�f��jf�f�`��j`�f�`�`�f�`�f�`�f�f�f�`�`�f�f�f�`�`�f�`�f�`�f�f�f�`�`�f�`�`�f�`�f�`�f�f�f�`�`�f�gf�f�f�f�f�`�`�f�`�f�`�f�f�f�f�f�f�`�`�`�f�`�f�`�`�f�`�`�f�`�f�`�f�f�f�f�f�f�`�`�`�f�`�f�`�`�f�gf�`�`�f�`�f�`�f�f�gggg`�פ`�`�g`�פg`�פ`�g`�`�g`�g	`�g
ggggg
`�פ`�`�g`�פg`�פ`�gg,gg g`�`�g`�g`�gggggg`�פ`�`�g`�פg`�פ`�g!`�`�g"`�g#`�g$g%g*g&g(g'`�פ`�`�g)`�פg+`�פ`�g-`�g.`�`�g/`�g0`�g1g2g7g3g5g4`�פ`�`�g6`�פg8`�פ`�g:g�g;gzg<g[g=gLg>gEg?`�`�g@`�gA`�gBlZgCgD`�lZ`�gF`�`�gG`�gH`�gIlZgJgK`�lZ`�gMgTgN`�`�gO`�gP`�gQlZgRgS`�lZ`�gU`�`�gV`�gW`�gXlZgYgZ`�lZ`�g\gkg]gdg^`�`�g_`�g``�galZgbgc`�lZ`�ge`�`�gf`�gg`�gh��gigj`���`�glgsgm`�`�gn`�go`�gp��gqgr`���`�gt`�`�gu`�gv`�gw��gxgy`���`�g{g�g|g�g}g�g~`�`�g`�g�`�g�g�g�g�g�g�`���`�`�g�`���g�`���`�g�`�`�g�`�g�`�g�g�g�g�g�g�`���`�`�g�`���g�`���`�g�g�g�`�`�g�`�g�`�g�g�g�g�g�g�`�,`�`�g�`�,g�`�,`�g�`�`�g�`�g�`�g�g�g�g�g�g�`�,`�`�g�`�,g�`�,`�g�g�g�g�g�`�`�g�`�g�`�g�g�g�g�g�g�`�,`�`�g�`�,g�`�,`�g�`�`�g�`�g�`�g�g�g�g�g�g�`�,`�`�g�`�,g�`�,`�g�`�g�`�`�g�`�g�`�g�g�g�g�g�g�`�,`�`�g�`�,g�`�,`�g�hg�g�g�g�g�g�g�`�`�g�`�g�`�g�;g�g�`�;`�g�`�`�g�`�g�`�g�;g�g�`�;`�g�g�g�`�`�g�`�g�`�g�;g�g�`�;`�g�`�`�g�`�g�`�g�;g�g�`�;`�g�hg�g�g�`�`�g�`�g�`�g�;g�g�`�;`�h`�`�h`�h`�h�hh`��`�hhh`�`�h	`�h
`�h�hh
`��`�h`�`�h`�h`�h�hh`��`�hhIhh0hh$h`�`�h`�h`�hhh"hh h`��`�`�h!`��h#`��`�h%`�`�h&`�h'`�h(h)h.h*h,h+`��`�`�h-`��h/`��`�h1h=h2`�`�h3`�h4`�h5h6h;h7h9h8`�ؤ`�`�h:`�ؤh<`�ؤ`�h>`�`�h?`�h@`�hAhBhGhChEhD`�ؤ`�`�hF`�ؤhH`�ؤ`�hJhchKhWhL`�`�hM`�hN`�hOhPhUhQhShR`�ؤ`�`�hT`�ؤhV`�ؤ`�hX`�`�hY`�hZ`�h[h\hah]h_h^`�ؤ`�`�h``�ؤhb`�ؤ`�hd`�he`�`�hf`�hg`�hhhihnhjhlhk`�ؤ`�`�hm`�ؤho`�ؤ`�hqi�hri
hsh�hth�huh�hvh}hw`�`�hx`�hy`�hz�[h{h|`��[`�h~`�`�h`�h�`�h��[h�h�`��[`�h�h�h�`�`�h�`�h�`�h��[h�h�`��[`�h�`�`�h�`�h�`�h��[h�h�`��[`�h�h�h�h�h�`�`�h�`�h�`�h��[h�h�`��[`�h�`�`�h�`�h�`�h��h�h�`��`�h�h�h�`�`�h�`�h�`�h��h�h�`��`�h�`�`�h�`�h�`�h��h�h�`��`�h�h�h�h�h�h�h�`�`�h�`�h�`�h�h�h�h�h�h�`��`�`�h�`��h�`��`�h�`�`�h�`�h�`�h�h�h�h�h�h�`��`�`�h�`��h�`��`�h�h�h�`�`�h�`�h�`�h�h�h�h�h�h�`��`�`�h�`��h�`��`�h�`�`�h�`�h�`�h�h�h�h�h�h�`��`�`�h�`��h�`��`�h�ih�h�h�`�`�h�`�h�`�h�h�h�h�h�h�`��`�`�h�`��h�`��`�h�`�`�h�`�h�`�h�h�h�h�h�h�`��`�`�h�`��h�`��`�i`�i`�`�i`�i`�iiiii	i`��`�`�i
`��i`��`�iiMii.iiiii`�`�i`�i`�i��ii`���`�i`�`�i`�i`�i��ii`���`�i i'i!`�`�i"`�i#`�i$��i%i&`���`�i(`�`�i)`�i*`�i+��i,i-`���`�i/i>i0i7i1`�`�i2`�i3`�i4��i5i6`���`�i8`�`�i9`�i:`�i;Ji<i=`�J`�i?iFi@`�`�iA`�iB`�iCJiDiE`�J`�iG`�`�iH`�iI`�iJJiKiL`�J`�iNi�iOihiPi\iQ`�`�iR`�iS`�iTiUiZiViXiW`�J`�`�iY`�Ji[`�J`�i]`�`�i^`�i_`�i`iaifibidic`�J`�`�ie`�Jig`�J`�iiiuij`�`�ik`�il`�iminisioiqip`�Z`�`�ir`�Zit`�Z`�iv`�`�iw`�ix`�iyizii{i}i|`�Z`�`�i~`�Zi�`�Z`�i�i�i�i�i�`�`�i�`�i�`�i�i�i�i�i�i�`�Z`�`�i�`�Zi�`�Z`�i�`�`�i�`�i�`�i�i�i�i�i�i�`�Z`�`�i�`�Zi�`�Z`�i�`�i�`�`�i�`�i�`�i�i�i�i�i�i�`�Z`�`�i�`�Zi�`�Z`�i�`�i�i�i�i�i�i�i�i�i�`�`�i�`�i�`�i�z i�i�`�z `�i�`�`�i�`�i�`�i�z i�i�`�z `�i�i�i�`�`�i�`�i�`�i�z i�i�`�z `�i�`�`�i�`�i�`�i�z i�i�`�z `�i�i�i�i�i�`�`�i�`�i�`�i�z i�i�`�z `�i�`�`�i�`�i�`�i�t@i�i�`�t@`�i�i�i�`�`�i�`�i�`�i�t@i�i�`�t@`�i�`�`�i�`�i�`�i�t@i�i�`�t@`�i�ji�ji�i�i�`�`�i�`�i�`�i�i�i�i�i�i�`�t@`�`�i�`�t@i�`�t@`�i�`�`�i�`�i�`�i�i�ji�ji�`�t@`�`�j`�t@j`�t@`�jjj`�`�j`�j`�j	j
jjj
j`���`�`�j`���j`���`�j`�`�j`�j`�jjjjjj`���`�`�j`���j`���`�jj7jj+j `�`�j!`�j"`�j#j$j)j%j'j&`���`�`�j(`���j*`���`�j,`�`�j-`�j.`�j/j0j5j1j3j2`���`�`�j4`���j6`���`�j8`�j9`�`�j:`�j;`�j<j=jBj>j@j?`���`�`�jA`���jC`���`�jEjHjF@jG@az@jI@jJ@M@jLj[jMjTjNjQjO@jP@L�@jR@jS@M@jUjXjV@jW@iM@jY@jZ@aN@j\jcj]j`j^@j_@az@ja@jb@f@jdjgje@jf@L@jh@ji@d@jkj�jlj{jmjtjnjqjo@jp@d@jr@js@M@jujxjv@jw@b�@jy@jz@l�@j|j�j}j�j~@j@M@j�@j�@t�@j�j�j�@j�@gC@j�@j�@az@j�j�j�j�j�j�j�@j�@N@j�@j�@L@j�j�j�@j�@b�@j�@j�@d@j�j�j�j�j�@j�@nW@j�@j�@az@j�j�j�@j�@!T@j�@j�@g4@j�j�j�j�j�j�j�j�j�j�j�@j�@cW@j�@j�@az@j�j�j�@j�@xv@j�@j�@cW@j�j�j�j�j�@j�@��@j�@j�@L@j�j�j�@j�@d@j�@j�@b�@j�j�j�j�j�j�j�@j�@c�@j�@j�@N@j�j�j�@j�@gn@j�@j�@d@j�j�j�j�j�@j�@L�@j�@j�@d@j�j�j�@j�@xv@j�@j�@c�@j�k	j�j�j�j�j�j�j�@j�@iM@j�@j�@M@j�j�j�@j�@c�@j�@j�@g_@j�kj�j�j�@j�@d@k@k@L�@kkk@k@M@k@k@[m@k
kkkkkk
@k@L�@k@k@az@kkk@k@N@k@k@l@kk!kkk@k@`�@k@k @ty@k"k%k#@k$@M@k&@k'@w�@k)l�k*kik+kJk,k;k-k4k.k1k/@k0@N@k2@k3@c�@k5k8k6@k7@d{@k9@k:@�G@k<kCk=k@k>@k?@M�@kA@kB@c�@kDkGkE@kF@L@kH@kI@b�@kKkZkLkSkMkPkN@kO@N@kQ@kR@d@kTkWkU@kV@nW@kX@kY@N@k[kbk\k_k]@k^@L�@k`@ka@H:@kckfkd@ke@|�@kg@kh@L�@kjlfkklZklkskmkpkn@ko@d@kq@kr@N@ktkwku@kv@p�@kx@ky@kz@k{l3k|l.k}k�k~k�kazk�k�azk�k�azazk�k�azk�azk�azk�azazv�k�azk�azk�k�azk�k�azk�azazk�azk�k�azazw�k�azk�azk�b�k�azazk�azk�azgQazk�k�azk�azazk�k�azazk�k�azazk�azk�azk�azk�azk�azk�azk�b�azk�l+k�k�k�k�mazk�k�k�azk�azk�k�azk�k�w�k�w�k�w�k�w�k�w�k�w�k�w�k�w�w�k�w�k�k�w�k�w�w�k�k�w�w�k�k�w�w�k�w�k�w�k�w�k�w�k�w�k�w�k�wcw�k�azk�azk�azk�azk�azk�azk�azk�azazt�k�azk�azk�k�k�azk�azk�azk�azk�azk�azk�azazk�azgQmazk�l"k�azk�azk�k�k�k�azk�k�azazk�azk�k�azk�azazk�azk�gCv�k�azk�azazk�azk�k�azk�azk�azk�azazw�k�lb�k�mk�mk�mk�mk�mk�mk�mk�mazazllazlazlazlazlazlazazll	azl
azlazlazl
azlazlazlazlazlazlazlllllazlazlazazb�lazlazb�lb�azlazlazl azl!azb�azl#azl$l(l%l&mv�l'azmazl)ml*mgQmazl,azl-azubl/�l0azl1azl2azubazl4lMl5lEl6azl7azl8azl9azl:azl;azl<azl=azl>azl?azl@az�lAlBazlCazlDazb��lFazlGazlHazazlIlJazlKazazlLazmazlNlOazlPlRazlQb�azlSazlTgQlUazlVazlWazjlXlYazjazl[l_@l\l]@l^@`�@l`lcla@lb@N@ld@le@`�@lglvlhlolilllj@lk@L�@lm@ln@c�@lplslq@lr@`�@lt@lu@d@lwl~lxl{ly@lz@`�@l|@l}@ak@ll�l�@l�@E@l�@l�@b�@l�l�l�l�l�l�l�l�l�l�l�@l�@d{@l�@l�@M@l�l�l�@l�@b�@l�@l�@xv@l�l�l�l�l�@l�@L�@l�@l�@M@l�l�l�@l�@N@l�@l�@l�@`�l�`�l�l�`�`�l�`�l�`�l�l�`�`�l�`�l�`�l�֥`�l�l�l�l�l�l�l�@l�@aN@l�@l�@c�@l�l�l�@l�@p�@l�@l�@�,@l�l�l�l�l�@l�@M@l�@l�@d@l�l�l�@l�@nW@l�@l�@N@l�l�l�l�l�l�l�l�l�@l�@`�@l�@l�@N@l�l�l�@l�@cW@l�@l�@M�@l�l�l�l�l�@l�@L@l�@l�@d@l�l�l�@l�@ak@l�@l�@c�@l�ml�l�l�l�l�@l�@M@l�@l�@L�@l�l�l�@l�@d@l�@l�@`�@mmmmm@m@`�@m@m@L�@m	mm
@m@az@m
@m@xv@mn%mm�mmQmm2mm#mmmmm@m@M�@m@m@@mm m@m@+c@m!@m"@d@m$m+m%m(m&@m'@xv@m)@m*@nW@m,m/m-@m.@M@m0@m1@g4@m3mBm4m;m5m8m6@m7@L�@m9@m:@cW@m<m?m=@m>@g4@m@@mA@N@mCmJmDmGmE@mF@c�@mH@mI@L�@mKmNmL@mM@L�@mO@mP@c�@mRmqmSmbmTm[mUmXmV@mW@{
@mY@mZ@N@m\m_m]@m^@M�@m`@ma@b�@mcmjmdmgme@mf@d@mh@mi@L@mkmnml@mm@N@mo@mp@j*@mrm�msmzmtmwmu@mv@N@mx@my@k@m{m�m|@m}@m~@me�m�e�m�e�m�e�m�e�m�e�m�e�m�e�m�e�m�e�m�e�e�m�m�e�m�e�e�m�m�e�m�e�m�e�he�m�@m�@h@m�m�m�m�m�@m�@d]@m�@m�@ak@m�m�m�@m�@L�@m�@m�@cW@m�m�m�m�m�m�m�m�m�m�m�@m�@M@m�@m�@L@m�m�m�@m�@xv@m�@m�@m�@m�xvxvm���xvm�m�m�m�m�@m�@b�@m�@m�@b�@m�m�m�@m�@w�@m�@m�@M@m�m�m�m�m�m�m�@m�@c�@m�@m�@li@m�m�m�@m�@M@m�@m�@L�@m�m�m�m�m�@m�@d@m�@m�@cW@m�m�m�@m�@M@m�@m�@xv@m�nm�m�m�m�m�m�m�@m�@b�@m�@m�@d@m�m�m�@m�@li@m�@m�@cW@m�m�m�m�m�@m�@li@m�@m�@N@nnn@n@cW@n@n@c�@nnnnn	nn
@n@M@n
@n@`�@nnn@n@N@n@n@L@nnnnn@n@L@n@n@d@nn"n @n!@c�@n#@n$@d@n&n�n'nfn(nGn)n8n*n1n+n.n,@n-@c�@n/@n0@L@n2n5n3@n4@t�@n6@n7@M�@n9n@n:n=n;@n<@c�@n>@n?@M@nAnDnB@nC@b�@nE@nF@N@nHnWnInPnJnMnK@nL@L�@nN@nO@M�@nQnTnR@nS@N@nU@nV@N@nXn_nYn\nZ@n[@xv@n]@n^@E@n`ncna@nb@xv@nd@ne@`�@ngn�nhnwninpnjnmnk@nl@�,@nn@no@L�@nqntnr@ns@`�@nu@nv@M�@nxnnyn|nz@n{@M�@n}@n~@g4@n�n�n�@n�@c�@n�@n�@`�@n�n�n�n�n�n�n�@n�@M@n�@n�@`�@n�n�n�@n�@`�@n�@n�@d{@n�n�n�n�n�@n�@n�@n�@n�@L@n�@n�@L�@n�n�n�@n�@c�@n�@n�@aN@n�n�n�n�n�n�n�n�n�n�n�@n�@M@n�@n�@p�@n�n�n�@n�@lx@n�@n�@N@n�n�n�n�n�@n�@j*@n�@n�@cW@n�n�n�@n�@cW@n�@n�@`�@n�n�n�n�n�n�n�@n�@xv@n�@n�@L�@n�n�n�@n�@cW@n�@n�@L�@n�n�n�n�n�@n�@`�@n�@n�@L�@n�n�n�@n�@az@n�@n�@N@n�on�n�n�n�n�n�n�@n�@d{@n�@n�@�H@n�n�n�@n�@c�@n�@n�@cW@n�on�n�n�@n�@L@n�@o@j�@ooo@o@nW@o@o@b�@o	oo
oooo@o
@E@o@o@b�@ooo@o@`�@o@o@iM@oo ooo@o@L�@o@o@aN@o!o$o"@o#@|�@o%@o&@L@o(t/o)q�o*pSo+o�o,o�o-ooo.o`o/oYo0o3o1@o2@L�@o4@o5@o6@o7Mo8Mo9Mo:Mo;Mo<Mo=Mo>Mo?Mo@MoAMoBMoCMoDMoEMoFMoGMoHMoIMoJMoKMoLMoMMoNMoOMoPMoQMoRMoSMoTMoUMoVMoWMoXM��MoZo]o[@o\@az@o^@o_@L@oaohoboeoc@od@�g@of@og@L�@oioloj@ok@d@om@on@L�@opooqoxorouos@ot@e�@ov@ow@b�@oyo|oz@o{@`�@o}@o~@b�@o�o�o�o�o�@o�@L�@o�@o�@b�@o�o�o�@o�@N@o�@o�@j�@o�o�o�o�o�o�o�o�o�@o�@d@o�@o�@`�@o�o�o�@o�@E@o�@o�@M�@o�o�o�o�o�@o�@N@o�@o�@b�@o�o�o�@o�@L�@o�@o�@lx@o�o�o�o�o�o�o�@o�@g_@o�@o�@L@o�o�o�@o�@L�@o�@o�@c�@o�o�o�o�o�@o�@cW@o�@o�@E@o�o�o�@o�@K�@o�@o�@d@o�po�o�o�o�o�o�o�o�o�@o�@l�@o�@o�@N@o�o�o�@o�@M�@o�@o�@iM@o�o�o�o�o�@o�@aN@o�@o�@az@o�o�o�@o�@o�@o�lilio��Rlio�@o�@c�@o�po�o�o�o�o�@o�@N@o�@o�@��@o�o�o�@o�@L@o�@p@l@pp	ppp@p@L@p@p@L@p
pp@p@p
@n�@p@p@g_@pp4pp%ppppp@p@p@p@p@nW@p@p@d@pp"p @p!@d@p#@p$@`�@p&p-p'p*p(@p)@c�@p+@p,@L�@p.p1p/@p0@xv@p2@p3@L�@p5pDp6p=p7p:p8@p9@d{@p;@p<@L@p>pAp?@p@@iM@pB@pC@d@pEpLpFpIpG@pH@iM@pJ@pK@iM@pMpPpN@pO@l@pQ@pR@M�@pTp�pUp�pVpupWpfpXp_pYp\pZ@p[@l�@p]@p^@L@p`pcpa@pb@��@pd@pe@cW@pgpnphpkpi@pj@xv@pl@pm@j�@poprpp@pq@Ԧ@ps@pt@aN@pvp�pwp~pxp{py@pz@d{@p|@p}@c�@pp�p�@p�@l�@p�@p�@M@p�p�p�p�p�@p�@p�@p�@p�@g4@p�@p�@p�@p�@p�@`�@p�p�p�@p�@c�@p�@p�@�x@p�p�p�p�p�p�p�p�p�@p�@d@p�@p�@xv@p�p�p�@p�@d@p�@p�@N@p�p�p�p�p�@p�@��@p�@p�@d@p�p�p�@p�@d@p�@p�@lx@p�p�p�p�p�p�p�@p�@M@p�@p�@c�@p�p�p�@p�@`�@p�@p�@nW@p�p�p�p�p�@p�@d@p�@p�@�,@p�p�p�@p�@l@p�@p�@L�@p�qvp�qWp�p�p�p�p�p�p�@p�@M@p�@p�@cW@p�p�p�@p�@g_@p�@p�@`�@p�qPp�p�p�@p�@l�@p�@p�@p�@p�qp�Mp�Mp�Mp�MMp�Mp�p�Mp�MMp�Mp�p�MqMMqMqqMqMMqMg�qMqq@q	Mq
Mqq3qq'q
MqMqMqMqMqq!qqMqqMqMqMg�MqqqMqMqMg�MqMqMq Mg�Mq"Mq#Mq$Mq%Mq&Mg�Mq(Mq)Mq*MMq+q,Mq-Mq.MMq/q0Mq1Mq2MMg�q4Mq5Mq6MMq7q8Mq9Mq:MMq;q<Mq=Mq>MMq?g�MqAMqBMqCMqDMqEMqFMqGMqHMqIMMqJqKMqLMqMMMqNqOMMg�qQqTqR@qS@L�@qU@qV@c�@qXqgqYq`qZq]q[@q\@xv@q^@q_@az@qaqdqb@qc@iM@qe@qf@N@qhqoqiqlqj@qk@t�@qm@qn@d@qpqsqq@qr@b�@qt@qu@�b@qwq�qxq�qyq�qzq}q{@q|@L�@q~@q@d@q�q�q�@q�@ײ@q�@q�@L@q�q�q�q�q�@q�@L�@q�@q�@M@q�q�q�@q�@d@q�@q�@nW@q�q�q�q�q�q�q�@q�@d@q�@q�@j�@q�q�q�@q�@M@q�@q�@M@q�q�q�q�q�@q�@M@q�@q�@d@q�q�q�@q�@d@q�@q�@N@q�s%q�rwq�r4q�q�q�q�q�q�q�q�q�@q�@g_@q�@q�@b�@q�q�q�@q�@c�@q�@q�@A@q�q�q�q�q�@q�@d@q�@q�@N@q�q�q�@q�@L@q�@q�@d@q�q�q�q�q�q�q�@q�@cW@q�@q�@d@q�q�q�@q�@L@q�@q�@`�@q�r-q�q�q�@q�@lx@q�@q�@q�@q�MMq�Mq�q�q�q�Mq�Mq�Mq�Mq�Mq�MMq�q�Mq�MMq��;Mrrrr
MrrMMrrMrMMrMrr	MM�rrMrMr
MrrMMrMrMr�JMMrMrrMrMrMMrMrM�oMrrr%rMrMr Mr!MMr"Mr#Mr$Mq�r&Mr'MMr(r)Mr*Mr+Mr,MM�r.r1r/@r0@N@r2@r3@cW@r5rXr6rFr7r?r8r;r9@r:@d{@r<@r=@r>@�dr@rCrA@rB@M�@rD@rE@L@rGrNrHrKrI@rJ@b�@rL@rM@N@rOrRrP@rQ@iM@rS@rT@rU@rV@rW@c�@rYrhrZrar[r^r\@r]@b�@r_@r`@d@rbrerc@rd@aN@rf@rg@b�@rirprjrmrk@rl@c�@rn@ro@N@rqrtrr@rs@d@ru@rv@L@rxr�ryr�rzr�r{r�r|rr}@r~@b�@r�@r�@L�@r�r�r�@r�@r�@r�M�r�M�r�M�r�M�r�M�M�r�M�r�r�M�r�M�r�M�M�r�r�M�r�M�r�M�r�M�r�M�r�M�r�M�M�r�r�M�r�M�r�M�r�r�r�M�r�M�r�M�M�r�r�M�r�M�r�M�r�M�r�M�r�M�r�M�M��r�M�r�M�r�M�r�M�r�M�M�r�r�M�M�r�M�r�r�M�M�r��M�r�@r�@az@r�r�r�r�r�@r�@az@r�@r�@b�@r�r�r�@r�@g4@r�@r�@`�@r�r�r�r�r�r�r�@r�@M@r�@r�@ku@r�r�r�@r�@xv@r�@r�@M@r�r�r�r�r�@r�@M@r�@r�@li@r�r�r�@r�@iM@r�@r�@L�@r�sr�r�r�r�r�r�r�@r�@d@r�@r�@L�@r�r�r�@r�@b�@r�@r�@L�@r�r�r�r�r�@r�@cW@r�@r�@L@sss@s@b�@s@s@`�@sssss	ss
@s@N@s
@s@aN@sss@s@N@s@s@H:@sssss@s@N@s@s@�^@ss"s @s!@c�@s#@s$@d@s&s�s'sms(sGs)s8s*s1s+s.s,@s-@az@s/@s0@d@s2s5s3@s4@b�@s6@s7@`�@s9s@s:s=s;@s<@L�@s>@s?@�@sAsDsB@sC@cW@sE@sF@b�@sHs^sIsRsJsOsK@sL@sM@sN@{
@sP@sQ@xv@sSsVsT@sU@d@sW@sX@sY@sZs\s[@i�@@s]�@s_sfs`scsa@sb@N@sd@se@iM@sgsjsh@si@L�@sk@sl@cW@sns�sos~spswsqstsr@ss@�@su@sv@N@sxs{sy@sz@M@s|@s}@L@ss�s�s�s�@s�@xv@s�@s�@L�@s�s�s�@s�@iM@s�@s�@xv@s�s�s�s�s�s�s�@s�@M�@s�@s�@xv@s�s�s�@s�@M�@s�@s�@g4@s�s�s�s�s�@s�@N@s�@s�@L@s�s�s�@s�@N@s�@s�@L�@s�s�s�s�s�s�s�s�s�s�s�@s�@d@s�@s�@`�@s�s�s�@s�@L�@s�@s�@s�@s�`�s�s�`�e�`��s�s�s�s�s�@s�@c�@s�@s�@cW@s�s�s�@s�@d@s�@s�@d@s�s�s�s�s�s�s�@s�@E@s�@s�@N@s�s�s�@s�@c�@s�@s�@N@s�s�s�s�s�@s�@ak@s�@s�@lx@s�s�s�@s�@d@s�@s�@d{@s�ts�ts�s�s�s�s�@s�@d@s�@s�@`�@s�s�s�@s�@iM@s�@t@`�@tt	ttt@t@L�@t@t@E@t
t
t@t@az@t@t@N@tt ttttt@t@d@t@t@L@ttt@t@N@t@t@L@t!t(t"t%t#@t$@M@t&@t'@M@t)t,t*@t+@L@t-@t.@lx@t0v]t1uOt2t�t3trt4tSt5tDt6t=t7t:t8@t9@xv@t;@t<@`�@t>tAt?@t@@b�@tB@tC@g4@tEtLtFtItG@tH@c�@tJ@tK@c�@tMtPtN@tO@cW@tQ@tR@l@tTtctUt\tVtYtW@tX@iM@tZ@t[@b�@t]t`t^@t_@q~@ta@tb@L@tdtktethtf@tg@M@ti@tj@L@tltotm@tn@j�@tp@tq@�R@tst�ttt�tut|tvtytw@tx@M@tz@t{@l@t}t�t~@t@d@t�@t�@az@t�t�t�t�t�@t�@N@t�@t�@d@t�t�t�@t�@az@t�@t�@d@t�t�t�t�t�t�t�@t�@d@t�@t�@d@t�t�t�@t�@L�@t�@t�@t�@t�azt�azt�azt�azt�azt�azt�azt�azt�azt�azt�azt�azt�azt�azt�azazt�azt�t�azazt�t�t�t�t�t�@t�@`�@t�@t�@j@t�t�t�@t�@d@t�@t�@q~@t�u
t�t�t�t�t�t�t�t�t�@t�@}�@t�@t�@M�@t�t�t�@t�@ak@t�@t�@E@t�t�t�t�t�@t�@L�@t�@t�@b�@t�t�t�@t�@`�@t�@t�@M@t�t�t�t�t�t�t�@t�@t�@ft�t�f�ft�@t�@xv@t�t�t�@t�@g_@t�@t�@e�@t�ut�ut�@t�@t�@t�@t�@q~@u@u@`�@uuu@u@N@u@u	@d@uu*uuu
uuuu@u@L�@u@u@`�@uuu@u@xv@u@u@az@uu#uu u@u@c�@u!@u"@N@u$u'u%@u&@az@u(@u)@d@u+u:u,u3u-u0u.@u/@h@u1@u2@d@u4u7u5@u6@b�@u8@u9@N@u;uEu<u?u=@u>@L@u@@uA@uB@uC@uD@M�@uFuLuG@uH@uI@uJ@uK@L�@uM@uN@g4@uPuSuQ@uR@L@uTvuUu�uVu�uWu^uXu[uY@uZ@c�@u\@u]@c�@u_u�u`@ua@ub@ucu�udue���<�<ufug�<uh�<ui�<uj�<uk�<uluumuvun�<uo�<up�<uq�<ur�<us�<ut�<uu�<j�<uwyux�<uy�<uz�<u{�<u|�<u}�<u~�<�d�<u��<u��<u��<u��<u��<u��<u��<u��<u��<�V�<u��<u��<u��<u��<u��<u��<u��<u��<u��<u�u�u��<u��<u��<u��<u��<u��<u��<��<u��<u��<u��<u��<u��<u��<u��<j�<u�@u�@u�@u�@u�@|�@u�u�u�u�u�@u�@L@u�@u�@H:@u�u�u�@u�@b�@u�@u�@az@u�u�u�u�u�u�u�@u�@L�@u�@u�@d{@u�u�u�@u�@b�@u�@u�@N@u�u�u�u�u�@u�@d@u�@u�@j�@u�vu�@u�@u�@du�u�u�m�o�u�du�u�u�u�u�u�u�u�u�u�db�b�db�u�b��Qu�u�u�u�db��ab�b�u�b�du�u�u�u�u�ddb�u�u��m�o��Du�u�u�u��odd�-u�u��b�i#b�u�vu�u�u�u�u�u��N#A�+�b�du�vu�u�nuX\b�dvvb�db��Zvv	vvdvb�dvb�dc�v
v
vvaq�b�db�vsuJv@v@v@v@v@xv@vv;vv)vv"vvv@v@az@v@v@v@v @v!@b�@v#v&v$@v%@b�@v'@v(@b�@v*v4v+v1v,@v-@v.@v/@v0@i�@v2@v3@c�@v5v8v6@v7@N@v9@v:@l�@v<vNv=vGv>vAv?@v@@az@vB@vC@vD@vE@vF@d@vHvKvI@vJ@{
@vL@vM@az@vOvVvPvSvQ@vR@`�@vT@vU@j*@vWvZvX@vY@g4@v[@v\@cW@v^w�v_v�v`v�vav�vbvuvcvnvdvgve@vf@A@vh@vi@vj@vkdvlvmm��m�dvovrvp@vq@`�@vs@vt@�b@vvv�vwv}vx@vy@vz@v{@v|@cW@v~@v@nW@v�v�v�@v�@d@v�@v�@c�@v�v�v�v�v�v�v�@v�@M@v�@v�@lx@v�v�v�@v�@L@v�@v�@b�@v�v�v�v�v�@v�@d@v�@v�@v�@v�v�v�v�NQ�P}NNW�v�v�v�@v�@b�@v�@v�@v�@v�@v�@`�@v�v�v�v�v�v�v�v�v�@v�@M@v�@v�@iM@v�v�v�@v�@az@v�@v�@xv@v�v�v�v�v�@v�@M@v�@v�@az@v�v�v�@v�@l�@v�@v�@b�@v�v�v�v�v�v�v�@v�@N@v�@v�@cW@v�v�v�@v�@iM@v�@v�@i�@v�v�v�v�v�@v�@c�@v�@v�@b�@v�v�v�@v�@c�@v�@v�@`�@v�w8v�wv�wv�v�v�v�v�@v�@c�@v�@v�@d{@v�v�v�@v�@d@v�@v�@v�@w@w@|�@ww
www@w@d@w@w	@M@www@w
@L@w@w@iM@ww&wwwww@w@w@w@w@p�@w@w@az@ww!w@w @d@w"@w#@w$@w%@{
@w'w.w(w+w)@w*@az@w,@w-@u�@w/w5w0@w1@w2@w3@w4@g4@w6@w7@j*@w9w^w:wLw;wEw<wBw=@w>@w?@w@@wA@`�@wC@wD@d@wFwIwG@wH@d@wJ@wK@b�@wMwTwNwQwO@wP@d@wR@wS@N@wUw[wV@wW@wX@wY@wZ@q~@w\@w]@��@w_wnw`wgwawdwb@wc@nW@we@wf@~�@whwkwi@wj@i�@wl@wm@g4@wowvwpwswq@wr@c�@wt@wu@xv@wwwzwx@wy@d@w{@w|@w}@w~@w@w�@w�Aew�Aew�AeAew�w�Aew�Aew�Aew�Aew�Aew�Aew�Aew�Aew�Aew�Aew�AeAee1w�x9w�xw�w�w�w�w�w�w�w�w�@w�@w�@w�@w�@d@w�@w�@c�@w�w�w�@w�@c�@w�@w�@d@w�w�w�w�w�@w�@w�@w�y7w�y7y7w�w�y7w�y7w�y7�y7w�@w�@��@w�w�w�@w�@az@w�@w�@M@w�w�w�w�w�w�w�@w�@`�@w�@w�@li@w�w�w�@w�@c�@w�@w�@�@w�w�w�w�w�@w�@w�@w�w�lxw�w�lxw�lxw�lxw�lxw�lxw�lxw�lxw�lxw�lxw�lxw�lxw�lxw�lxlxw�lxw�w�lxlxՙlxw�w�lxw�lxw�lxw�lxw�lxw�lxw�lxw�lxlxw�w�lxw�lxlxw�w�lxw�lxw�lxlxw�lxew�@w�@b�@w�w�w�@w�@`�@w�@w�@d{@xxxxxx
xxx@x@d@x@x	@y7@xxx@x
@A@x@x@M@xx@xx@x@b�@@xx@x@b�@xx*xx#xx x@x@H:@x!@x"@u�@x$x'x%@x&@nW@x(@x)@c�@x+x2x,x/x-@x.@c�@x0@x1@L@x3x6x4@x5@g4@x7@x8@L@x:x�x;x]x<xKx=xDx>xAx?@x@@M�@xB@xC@xv@xExHxF@xG@d{@xI@xJ@b�@xLxVxMxSxN@xO@xP@xQ@xR@M@xT@xU@i�@xWxZxX@xY@M@x[@x\@N@x^xmx_xfx`xcxa@xb@d@xd@xe@w@xgxjxh@xi@c�@xk@xl@d@xnxxxoxuxp@xq@xr@xs@xt@c�@xv@xw@L�@xyx|xz@x{@L@x}@x~@x@x�@x�@d@x�x�x�x�x�x�x�x�x�@x�@d@x�@x�@li@x�x�x�@x�@b�@x�@x�@� @x�x�x�x�x�@x�@d]@x�@x�@Ќ@x�x�x�@x�@M@x�@x�@M@x�x�x�x�x�x�x�@x�@d@x�@x�@c�@x�x�x�@x�@d@x�@x�@L@x�x�x�x�x�@x�@`�@x�@x�@b�@x�x�x�@x�@x�@x�@x�@|@x�@x�@M@x�Z|x�%Nx�|�x�@x�x�M@x�@x�@x�@x�@x�@@x�x�@@x�x�@x�@x�@@x�x�@x�@@x�x�{x�y�x�yix�yx�x�x�x�x�x�@x�x�@x�@x�@ �x�x�@ �@@x�x�@x�@x�@ �x�x�@ �@x�x�@x�x�@x�@x�@ �x�x�@ �@@x�x�@x�@x�@ �x�x�@ �@x�y
x�y@yy@y@y@ �yy@ �@@yy@y	@y
@clyy@cl@yy@yy@y@y@clyy@cl@@yy@y@y@clyy@cl@yyHyy3yy)@y y!@y"@y#@y$y'y%@y&@cl@y(@cl@@y*y+@y,@y-@y.y1y/@y0@cl@y2@cl@y4y>@y5y6@y7@y8@y9y<y:@y;@��@y=@��@@y?y@@yA@yB@yCyFyD@yE@��@yG@��@yIy^yJyT@yKyL@yM@yN@yOyRyP@yQ@��@yS@��@@yUyV@yW@yX@yYy\yZ@y[@��@y]@��@y_@@y`ya@yb@yc@ydygye@yf@��@yh@��@yjy�yky�yly{ymyt@ynyo@yp@yq@��yrys@��@@yuyv@yw@yx@��yyyz@��@y|y�@y}y~@y@y�@��y�y�@��@@y�y�@y�@y�@��y�y�@��@y�y�y�y�@y�y�@y�@y�@��y�y�@��@@y�y�@y�@y�@��y�y�@��@y�y�@y�y�@y�@y�@��y�y�@��@@y�y�@y�@y�@��y�y�@��@y�y�y�y�y�y�@y�y�@y�@y�@y�y�y�@y�@��@y�@��@@y�y�@y�@y�@y�y�y�@y�@��@y�@��@y�y�@y�y�@y�@y�@y�y�y�@y�@�@y�@�@@y�y�@y�@y�@y�y�y�@y�@�@y�@�@y�y�y�y�@y�y�@y�@y�@y�y�y�@y�@�@y�@�@@y�y�@y�@y�@y�y�y�@y�@�@y�@�@y�@@y�y�@y�@y�@y�y�y�@y�@�@y�@�@y�z�y�z7y�zy�z	y�z@y�y�@y�@y�@�;zz@�;@@zz@z@z@�;zz@�;@z
z@zz@z
@z@�;zz@�;@@zz@z@z@�;zz@�;@zz(zz!@zz@z@z@�;zz @�;@@z"z#@z$@z%@�z&z'@�@z)z0@z*z+@z,@z-@�z.z/@�@@z1z2@z3@z4@�z5z6@�@z8zcz9zNz:zD@z;z<@z=@z>@z?zBz@@zA@�@zC@�@@zEzF@zG@zH@zIzLzJ@zK@�@zM@�@zOzY@zPzQ@zR@zS@zTzWzU@zV@�E@zX@�E@@zZz[@z\@z]@z^zaz_@z`@�E@zb@�E@zdzyzezo@zfzg@zh@zi@zjzmzk@zl@�E@zn@�E@@zpzq@zr@zs@ztzwzu@zv@�E@zx@�E@zz@@z{z|@z}@z~@zz�z�@z�@�E@z�@�E@z�z�z�z�z�z�z�z�@z�z�@z�@z�@��z�z�@��@@z�z�@z�@z�@��z�z�@��@z�z�@z�z�@z�@z�@��z�z�@��@@z�z�@z�@z�@��z�z�@��@z�z�z�z�@z�z�@z�@z�@��z�z�@��@@z�z�@z�@z�@��z�z�@��@z�z�@z�z�@z�@z�@��z�z�@��@@z�z�@z�@z�@��z�z�@��@z�z�z�z�z�z�@z�z�@z�@z�@z�z�z�@z�@��@z�@��@@z�z�@z�@z�@z�z�z�@z�@��@z�@��@z�z�@z�z�@z�@z�@z�z�z�@z�@�m@z�@�m@@z�z�@z�@z�@z�z�z�@z�@�m@z�@�m@z�{z�z�@z�z�@z�@z�@z�z�z�@z�@�m@z�@�m@@z�z�@z�@{@{{{@{@�m@{@�m@{@@{{	@{
@{@{{{
@{@�m@{@�m@{|-{{�{{S{{4{{%{{@{{@{@{@�d{{@�d@@{{ @{!@{"@�d{#{$@�d@{&{-@{'{(@{)@{*@�d{+{,@�d@@{.{/@{0@{1@�d{2{3@�d@{5{D{6{=@{7{8@{9@{:@�d{;{<@�d@@{>{?@{@@{A@�1{B{C@�1@{E{L@{F{G@{H@{I@�1{J{K@�1@@{M{N@{O@{P@�1{Q{R@�1@{T{{U{j{V{`@{W{X@{Y@{Z@{[{^{\@{]@�1@{_@�1@@{a{b@{c@{d@{e{h{f@{g@�1@{i@�1@{k{u@{l{m@{n@{o@{p{s{q@{r@z�@{t@z�@@{v{w@{x@{y@{z{}{{@{|@z�@{~@z�@{�{�{�{�@{�{�@{�@{�@{�{�{�@{�@z�@{�@z�@@{�{�@{�@{�@{�{�{�@{�@z�@{�@z�@{�@@{�{�@{�@{�@{�{�{�@{�@z�@{�@z�@{�{�{�{�{�{�{�{�@{�{�@{�@{�@|�{�{�@|�@@{�{�@{�@{�@|�{�{�@|�@{�{�@{�{�@{�@{�@|�{�{�@|�@@{�{�@{�@{�@|�{�{�@|�@{�{�{�{�@{�{�@{�@{�@|�{�{�@|�@@{�{�@{�@{�@
d{�{�@
d@{�{�@{�{�@{�@{�@
d{�{�@
d@@{�{�@{�@{�@
d{�{�@
d@{�|{�{�{�{�@{�{�@{�@{�@{�{�{�@{�@
d@{�@
d@@{�{�@{�@{�@{�{�{�@{�@
d@{�@
d@{�|@{�{�@{�@{�@{�|{�@{�@�@|@�@@||@|@|@||
|@|	@�@|@�@|
|"||@||@|@|@|||@|@�@|@�@@||@|@|@|| |@|@�@|!@�@|#@@|$|%@|&@|'@|(|+|)@|*@�@|,@�@|.@|/|n|0|O|1|@|2|9@|3|4@|5@|6@
�|7|8@
�@@|:|;@|<@|=@
�|>|?@
�@|A|H@|B|C@|D@|E@
�|F|G@
�@@|I|J@|K@|L@
�|M|N@
�@|P|_|Q|X@|R|S@|T@|U@
�|V|W@
�@@|Y|Z@|[@|\@��|]|^@��@|`|g@|a|b@|c@|d@��|e|f@��@@|h|i@|j@|k@��|l|m@��@|o|�|p|�|q|{@|r|s@|t@|u@|v|y|w@|x@��@|z@��@@|||}@|~@|@|�|�|�@|�@��@|�@��@|�|�@|�|�@|�@|�@|�|�|�@|�@-K@|�@-K@@|�|�@|�@|�@|�|�|�@|�@-K@|�@-K@|�|�|�|�@|�|�@|�@|�@|�|�|�@|�@-K@|�@-K@@|�|�@|�@|�@|�|�|�@|�@-K@|�@-K@|�@@|�|�@|�@|�@|�|�|�@|�@-K@|�@-K@|���|��^|��|�~x|�}�|�}E|�}&|�}|�}
|�}|�@|�@|�@|�|�|�d|�d|�d|�d|�d|�d|�d|�d|�d|�d|�d|�d|�d|�|�|�|�|�|�d|�m�dd|�dm�|�BfdBf|�d|�|�|�|�do�m�d|�dd�Qd|�|�|�|�d|�d|�d|�d|�d|�d|�d|�d|�d|�d|�d|�d|�d|�d|�ddm�|�d|�d|�d|�d|�d|�d|�d}d}d}d}d}d}d}di#d}@}	@li@}}}@}
@m�@}@}@li@}}}}}@}@}@}@}@l@}@}@h�@}}#}@}@} @}!@}"@b�@}$@}%@li@}'}6}(}/})},}*@}+@az@}-@}.@li@}0}3}1@}2@b�@}4@}5@d{@}7}>}8};}9@}:@M@}<@}=@d{@}?}B}@@}A@xv@}C@}D@d@}F}�}G}�}H}O}I}L}J@}K@b�@}M@}N@N@}P}S}Q@}R@nW@}T@}U@}V@}WcW}X}�}YcW}Z}y}[cW}\cW}]cW}^cW}_cWcW}`cW}acW}bcW}ccW}d}ecW}fcW}gcW}hcW}icW}jcW}kcW}lcW}mcWcW}ncW}o}pcWcW}q}rcWcW}s}tcWcW}ucW}v}wcW}xcWcW$$}zcWcW}{}|cWcW}}cW}~cW}}�cWcW}�cW}�cW}�}�cW}�cW}�cW}�cW}�cW}�cW}�cW}�cW}�cW}�cW}�cW}�cW}�}�}�cW}�cWcW}�cW}�}�cWcW}�}�cWcW|�}�cW}�cW}�cW}�cW}�cW}�cWcW}�4PcW}�cW}�cW}�cW}�cW}�cW}�cW}�cW}�cW}�cW}�cW}�}�cW}�}�}�}�}�cW}�}�cW��cW}�cW}�cW�mcW}�cWcW}�}�cW�cW}�cWcW}�}�cWcW}�}�}�cW]zcW��}�}�}�}�}�@}�@xv@}�@}�@M@}�}�}�@}�@d@}�@}�@nW@}�}�}�}�}�}�}�@}�@`�@}�@}�@H:@}�}�}�@}�@b�@}�@}�@j�@}�}�}�}�}�@}�@`�@}�@}�@}�@}�@}�@q~@}�}�}�@}�@c�@}�@}�@`�@}�~3}�~}�~}�}�}�}�}�@}�@i�@}�@}�@}�@}�@}�@`�@}�~~@~@L@~@~@g_@~~
~~
~@~	@cW@~@~@e�@~~~@~@`�@~@~@�@~~$~~~~~@~@N@~@~@b�@~~!~@~ @`�@~"@~#@p�@~%~,~&~)~'@~(@d@~*@~+@L@~-~0~.@~/@l@~1@~2@N@~4~V~5~D~6~=~7~:~8@~9@w@~;@~<@c�@~>~A~?@~@@b�@~B@~C@e�@~E~L~F~I~G@~H@L@~J@~K@d@~M~P~N@~O@b�@~Q@~R@~S@~T@~U@m�@~W~i~X~b~Y~\~Z@~[@`�@~]@~^@~_@~`@~a@N@~c~f~d@~e@xv@~g@~h@d{@~j~q~k~n~l@~m@cW@~o@~p@L@~r~u~s@~t@`�@~v@~w@c�@~yH~z~�~{~�~|~�~}~�~~~�~@~�@d@~�@~�@9@~�~�~�@~�@`�@~�@~�@d{@~�~�~�~�~�@~�@`�@~�@~�@e�@~�~�~�@~�@iM@~�@~�@~�@~�d~�d~�d~�d~�d~�d~�d~�d~�d~�dd~�~�d~�dd~�db�~�~�~�~�~�~�~�@~�@`�@~�@~�@e�@~�~�~�@~�@b�@~�@~�@e�@~�~�~�~�~�@~�@M@~�@~�@l@~�~�~�@~�@L�@~�@~�@e�@~�&~�~�~�~�~�~�~�@~�@l@~�@~�@p�@~�~�~�@~�@d@~�@~�@`�@~�~�~�@~�@~�@~�d~�d~�~�d~�~�~�~�~�d~�d~�d~�d~�d~�d~�d~�dd~�~�dd~�~�dadd~�~�dd~�~�dad~�~�d~�~�~�d~�~�d�-d~�d~�d��ddddd&}dddd	d
ddd
ddddddd&}ddddd�-d@@@@@z�@ #!@"@M@$@%@`�@'9(2),*@+@`�@-@.@/@0@1@N@364@5@az@7@8@g4@:A;><@=@g_@?@@@M@BEC@D@L@F@G@ՙ@I�JoK]LVMPN@O@`�@Q@R@S@T@U@nW@WZX@Y@M@[@\@N@^e_b`@a@c�@c@d@b�@fig@h@xv@j@k@l@m@n@M@pqxrus@t@`�@v@w@b�@y|z@{@az@}@~@L@�����@�@ak@�@�@�@�@�@g_@���@�@N@�@�@`�@���������@�@d@�@�@g4@���@�@M�@�@�@L�@�����@�@`�@�@�@y7@���@�@li@�@�@M@�������@�@`�@�@�@c�@���@�@az@�@�@L@�����@�@L�@�@�@M@���@�@d@�@�@�@�@�@g_@��K�����+���������@�@`�@�@�@d@���@�@xv@�@�@d@�����@�@�G@�@�@�@�@�@i�@���@�@M@�@�@d{@�������@�@cW@�@�@li@���@�@�@�F��F��	F��
F��F��F��
F��F��F��F��F��F��F��F��F��F��F��F�BF��@�@li@��$��!�@� @M@�"@�#@��@�%�(�&@�'@`�@�)@�*@c�@�,�N�-�?�.�5�/�2�0@�1@c�@�3@�4@cW@�6�9�7@�8@`�@�:@�;@�<@�=@�>@L�@�@�G�A�D�B@�C@M@�E@�F@�,@�H�K�I@�J@c�@�L@�M@`�@�O�d�P�Z�Q�T�R@�S@L�@�U@�V@�W@�X@�Y@t�@�[�^�\@�]@M�@�_@�`@�a@�b@�c@L�@�e���f���g@�h@�i@�jd�k���l�C�md�n���o��pd�qd�rd�sd�td�ud�vd�wd�xd�y�|�zd�{d�Qd�}d�~di#d����d����d��d�Ddd����d��d+�d��d��dd����d��d�Qd��d��d��d��d��d��d��d��d��d��d��������������d��d��di#d��dd��d���Qdd����d��dd��+�d��d��dd����d��d�Dd��@��@L�@������@��@c�@��@��@j�@���������������������@��@d@��@��@ty@������@��@b�@��@��@��@��@��@L�@����������@��@��@��b���b���b���b�b���b�����b�b�����b���b�Jb���@��@cW@������@��@b�@��@��@n�@��������������@��@iM@��@��@M�@������@��@`�@��@��@m�@���������@��@L�@��@��@��@�@�@L�@���@�@iM@�@�@�	@�
@�@aN@�
�,�������@�@d@�@�@N@���@�@`�@�@�@ak@��%��"� @�!@`�@�#@�$@c�@�&�)�'@�(@`�@�*@�+@d{@�-�<�.�5�/�2�0@�1@iM@�3@�4@M@�6�9�7@�8@p�@�:@�;@`�@�=�D�>�A�?@�@@d]@�B@�C@M@�E�H�F@�G@`�@�I@�J@s8@�L���M���N�s�O�a�P�Z�Q�W�R@�S@�T@�U@�V@M�@�X@�Y@L�@�[�^�\@�]@`�@�_@�`@N@�b�i�c�f�d@�e@L@�g@�h@b�@�j�m�k@�l@`�@�n@�o@�p@�q@�r@`�@�t���u��v�y�w@�x@ku@�z@�{@�|@�}@�~@b�@������@��@`�@��@��@L�@����������@��@b�@��@��@d@������@��@`�@��@��@az@������������������@��@`�@��@��@az@������@��@`�@��@��@L�@����������@��@b�@��@��@nW@������@��@N@��@��@��@��@��@L�@��������������@��@L�@��@��@b�@������@��@c�@��@��@az@����������@��@��@����p�����p�p���p�b���@��@��@������@��@`�@��@��@n�@��������������������@��@b�@��@��@L@������@��@c�@��@��@d@����������@��@b�@��@��@N@������@��@��@��@��@�F@��@��@L@����	���@�@N@�@�@d@�
�
�@�@`�@�@�@`�@�����@�@b�@�@�@M�@���@�@c�@�@�@ak@� �?�!�0�"�)�#�&�$@�%@N@�'@�(@L@�*�-�+@�,@b�@�.@�/@`�@�1�8�2�5�3@�4@b�@�6@�7@`�@�9�<�:@�;@c�@�=@�>@L�@�@�O�A�H�B�E�C@�D@cW@�F@�G@`�@�I�L�J@�K@aN@�M@�N@b�@�P�W�Q�T�R@�S@b�@�U@�V@M@�X�[�Y@�Z@`�@�\@�]@`�@�_���`�k�a���b���c�s�d�s�e�l�f�i�g@�h@`�@�j@�k@e�@�m�p�n@�o@l@�q@�r@e�@�t�l�u�x�v@�w@`�@�y@�z@�{@b��|�}b��~b�b�����������������������������b�����b���b�b���������b���b�b�����b���b�b���������b���b�����b�����b���b�b���������b���b�b�����b���b�b���������b���b���������b�����b���b�b���������b���b�b�����b���b�b�������b�b�����b�����b���b�b�������b�b�b�����b���b�b�������b�b�������������b�����b���b�b���������b���b�b���b���b�b�b�����b���b�b���������b���b�b���b���b�b�����b�����b���b�b���������b���b��b���b���b�b��b�����b���b�b���������b���b��b���b���b�b�����
����b�����b���b�b���������b���b��b���b���b�b��b���b��b�b�����b��b��b��b��	b�b���b�b���
b��b�b�����b��b��b��b��b�b����V��7��(��!b���b��b�b���Y�� b��Yb�b��"�#b��$b�b��%�Y�&�'b��Yb��)�0b��*�+b��,b�b��-�Y�.�/b��Yb�b��1�2b��3b�b��4�Y�5�6b��Yb��8�G�9�@b��:�;b��<b�b��=�Y�>�?b��Yb�b��A�Bb��Cb�b��Dp��E�Fb�p�b��H�Ob��I�Jb��Kb�b��Lp��M�Nb�p�b�b��P�Qb��Rb�b��Sp��T�Ub�p�b��W���X�o�Y�db��Z�[b��\b�b��]�^�a�_b��`b�p�b��bb��cb�b�p�b��e�fb��gb�b��h�i�l�jb��kb�p�b��mb��nb�b�p��p�{b��q�rb��sb�b��t�u�x�vb��wb�x�b��yb��zb�b�x�b��|�}b��~b�b��������b���b�x�b���b���b�b�x���������b�����b���b�b���������b���b�x�b���b���b�b�x�b�����b���b�b���������b���b�x�b���b���b�b�x���b�b�����b���b�b���������b���b�x�b���b���b�b�x����?����������������b�����b���b�b���������b���b�b�����b���b�b���������b���b�����b�����b���b�b���������b���b�b�����b���b�b���������b���b���������b�����b���b�b���������b���b�b�����b���b�b���ڥ����b�ڥb�����b�����b���b�b���ڥ����b�ڥb�b�����b���b�b���ڥ����b�ڥb�����������b�����b���b�b���������b���b�ڥb���b���b�b�ڥb�����b���b�b��������b��b�ڥb��b��b�b�ڥ��b���b��b�b��	�
�
�b��b�3`b��b��b�b�3`b���b��b�b�����b��b�3`b��b��b�b�3`��3��(b���b�� b�b��!�"�%�#b��$b�3`b��&b��'b�b�3`b��)�*b��+b�b��,�-�0�.b��/b�3`b��1b��2b�b�3`�4b�b��5�6b��7b�b��8�9�<�:b��;b�3`b��=b��>b�b�3`�@��A�`�B�Q�C�Jb��D�Eb��Fb�b��G=3�H�Ib�=3b�b��K�Lb��Mb�b��N=3�O�Pb�=3b��R�Yb��S�Tb��Ub�b��V=3�W�Xb�=3b�b��Z�[b��\b�b��]=3�^�_b�=3b��a�p�b�ib��c�db��eb�b��f=3�g�hb�=3b�b��j�kb��lb�b��m���n�ob���b��q�xb��r�sb��tb�b��u���v�wb���b�b��y�zb��{b�b��|���}�~b���b�������������b�����b���b�b���������b���b���b���b���b�b���b�����b���b�b���������b���b���b���b���b�b�������b�����b���b�b���������b���b���b���b���b�b���b�����b���b�b���������b���b���b���b���b�b�����������b�����b���b�b���������b���b���b���b���b�b���b�����b���b�b���������b���b���b���b���b�b�����b�b�����b���b�b���������b���b���b���b���b�b����������i���������������b�����b���b�b���p�����b�p�b�b�����b���b�b���p�����b�p�b�����b�����b���b�b���p�����b�p�b�b�����b���b�b���p�����b�p�b��������b�����b���b�b���p�����b�p�b�b���b��b�b���9��b��9b���b���	b��
b�b���9��
b��9b�b���b��b�b���9��b��9b���E��.��#b���b��b�b���� �b��b��9b��!b��"b�b��9b��$�%b��&b�b��'�(�+�)b��*b��9b��,b��-b�b��9�/�:b��0�1b��2b�b��3�4�7�5b��6b�d$b��8b��9b�b�d$b��;�<b��=b�b��>�?�B�@b��Ab�d$b��Cb��Db�b�d$�F�]�G�Rb��H�Ib��Jb�b��K�L�O�Mb��Nb�d$b��Pb��Qb�b�d$b��S�Tb��Ub�b��V�W�Z�Xb��Yb�d$b��[b��\b�b�d$�^b�b��_�`b��ab�b��b�c�f�db��eb�d$b��gb��hb�b�d$�j��b��k�l�tb��mb��n�ob��pb�b��q���r�sb���b��u�|b��v�wb��xb�b��y���z�{b���b�b��}�~b��b�b���������b���b�������������b�����b���b�b���������b���b���b���b���b�b���b�����b���b�b���������b���b���b���b���b�b�������b�����b���b�b���������b���b�~db���b���b�b�~db�����b���b�b���������b���b�~db���b���b�b�~d��������b�����b���b�b���������b���b�~db���b���b�b�~db�����b���b�b���������b���b�~db���b���b�b�~d��b�b�����b���b�b���������b���b�~db���b���b�b�~d��b����������������b�����b���b�b����P����b��Pb�b�����b���b�b����P����b��Pb�����b�����b���b�b����P����b��Pb�b�����b���b�b����P����b��Pb����	���b�����b���b�b����P��b��Pb�b���b��b�b��й��b�йb��
�b���b��
b�b��й��b�йb�b���b��b�b��й��b�йb���H��1��&b���b��b�b��� �#�!b��"b�йb��$b��%b�b�йb��'�(b��)b�b��*�+�.�,b��-b�йb��/b��0b�b�й�2�=b��3�4b��5b�b��6�7�:�8b��9b���b��;b��<b�b���b��>�?b��@b�b��A�B�E�Cb��Db���b��Fb��Gb�b����I�`�J�Ub��K�Lb��Mb�b��N�O�R�Pb��Qb���b��Sb��Tb�b���b��V�Wb��Xb�b��Y�Z�]�[b��\b���b��^b��_b�b����ab�b��b�cb��db�b��e�f�i�gb��hb���b��jb��kb�b����m�p�n@�o@M@�q@�r@e�@�t���u��v�y�w@�x@l@�z@�{@�|@�}@�~@xv@������@��@`�@��@��@H:@����������@��@`�@��@��@`�@������@��@��@��@��@L�@��@��@N@������������������@��@c�@��@��@`�@������@��@`�@��@��@L�@����������@��@e@��@��@b�@������@��@d{@��@��@��@��@��@L�@��������������@��@cW@��@��@c�@������@��@b�@��@��@L@����������@��@`�@��@��@e�@������@��@`�@��@��@e�@���&�����������������@��@N@��@��@��@��@��@y7@������@��@��@��@��@M@��@��@d@����������@��@lx@��@��@M�@�����@��@��@��@�@b�@�@�@`�@����
��
�@�	@`�@�@�@s8@���@�@`�@�@�@߫@�����@�@�@�@�@L�@�@�@i�@� �#�!@�"@`�@�$@�%@d{@�'�L�(�7�)�0�*�-�+@�,@Ae@�.@�/@`�@�1�4�2@�3@`�@�5@�6@e�@�8�B�9�<�:@�;@az@�=@�>@�?@�@b��Ab�b�d$�C�F�D@�E@`�@�G@�H@�I@�J@�K@xv@�M�\�N�U�O�R�P@�Q@b�@�S@�T@L@�V�Y�W@�X@b�@�Z@�[@d@�]�d�^�a�_@�`@`�@�b@�c@e�@�e�h�f@�g@H:@�i@�j@e�@�l�
�m���n���o�~�p�w�q�t�r@�s@L@�u@�v@e�@�x�{�y@�z@d@�|@�}@e�@���������@��@��@��@��@d{@��@��@e�@������@��@L�@��@��@N@��������������@��@`�@��@��@e�@������@��@`�@��@��@`�@����������@��@��@��lxlx����lxlx��lx��lx��lx��lx��lx��lx��lx��lx��lx��lx��lx��lx��lx��lx��lxrX��@��@p�@������@��@��@��@��@b�@��@��@� @������������������@��@`�@��@��@d@������@��@L�@��@��@az@����������@��@aN@��@��@b�@������@��@��@��@��@z�@��@��@L@��������������@��@��@��@��@p�@��@��@��@��@��@ty@������@��@d@��@��@N@������@�@`�@�@�@c�@��
�@�	@iM@�@�@li@��S��1��"�����@�@N@�@�@l�@���@�@iM@�@�@�@� @�!@ty@�#�*�$�'�%@�&@`�@�(@�)@L�@�+�.�,@�-@c�@�/@�0@li@�2�D�3�:�4�7�5@�6@`�@�8@�9@d@�;�A�<@�=@�>@�?@�@@b�@�B@�C@b�@�E�L�F�I�G@�H@ty@�J@�K@c�@�M�P�N@�O@`�@�Q@�R@li@�T�v�U�d�V�]�W�Z�X@�Y@��@�[@�\@l@�^�a�_@�`@d@�b@�c@d@�e�o�f�l�g@�h@�i@�j@�k@iM@�m@�n@�@�p�s�q@�r@d{@�t@�u@`�@�w���x��y�|�z@�{@d@�}@�~@aN@������@��@d@��@��@L�@����������@��@L�@��@��@b�@������@��@cW@��@��@cW@�����������������������@����@��@N@������@��@c�@��@��@c�@����������@��@j�@��@��@ku@������@��@`�@��@��@N@��������������@��@N@��@��@`�@������@��@b�@��@��@`�@����������@��@d@��@��@ak@������@��@��@L�����L�xL���@��@`�@������������������@��@`�@��@��@d@������@��@g_@��@��@cW@����������@��@`�@��@��@j�@������@��@`�@��@��@��@��@��@d{@���
��������@��@b�@�@�@d@���@�@`�@�@�	@d{@�����
@�@��@�@�@`�@���@�@`�@�@�@q~@��Y��:��+��$��!�@� @b�@�"@�#@L�@�%�(�&@�'@b�@�)@�*@t�@�,�3�-�0�.@�/@b�@�1@�2@l�@�4�7�5@�6@L�@�8@�9@L�@�;�J�<�C�=�@�>@�?@M@�A@�B@c�@�D�G�E@�F@e�@�H@�I@p�@�K�R�L�O�M@�N@`�@�P@�Q@li@�S�V�T@�U@az@�W@�X@q~@�Z���[�m�\�c�]�`�^@�_@b�@�a@�b@`�@�d�j�e@�f@�g@�h@�i@az@�k@�l@d@�n�x�o�r�p@�q@N@�s@�t@�u@�v@�w@ak@�y��z@�{@�|@�}@�~@M@��@��@e�@��������������@��@`�@��@��@�b@������@��@d@��@��@�b@����������@��@b�@��@��@nW@������@��@d@��@��@d{@���-����������������������@��@�X@��@��@c�@������@��@Ae@��@��@��@��@��@`�@����������@��@d@��@��@L�@������@��@d@��@��@d@��������������@��@c�@��@��@#@������@��@��@��@��@b�@��@��@az@����������@��@lx@��@��@L�@������@��@N@��@��@e�@�����������������@��@��@��@��@`�@��@��@��@��@��@aN@������@��@c�@��@��@L@�����@�@lx@�@�@N@���	@�
@az@�@�
@`�@�������@�@p�@�@�@`�@���@�@`�@�@�@`�@��&� �#�!@�"@e�@�$@�%@l@�'�*�(@�)@az@�+@�,@`�@�.�m�/�N�0�?�1�8�2�5�3@�4@`�@�6@�7@L@�9�<�:@�;@`�@�=@�>@nW@�@�G�A�D�B@�C@d@�E@�F@i�@�H�K�I@�J@`�@�L@�M@b�@�O�^�P�W�Q�T�R@�S@`�@�U@�V@e�@�X�[�Y@�Z@az@�\@�]@q~@�_�f�`�c�a@�b@lx@�d@�e@`�@�g�j�h@�i@`�@�k@�l@`�@�n���o���p���q�t�r@�s@c�@�u@�v@�w@�x�{�y�z��פ�[���|����}�~W$�W$��W$��W$��W$��W$��W$��W$��W$��W$��W$��W$��W$��W$��W$��W$��W$��W$��W$��W$��W$��W$��W$��W$��W$��W$��W$��W$��W$��W$��W$W2W$`���������@��@`�@��@��@M@����������@��@b�@��@��@��@��@��@e�@������@��@aN@��@��@L�@��������������@��@b�@��@��@M@������@��@d{@��@��@��@��@��@L�@����������@��@`�@��@��@p�@������@��@N@��@��@iM@�� �����������c��� ������������������@��@`�@��@��@M@������@��@c�@��@��@d@����������@��@`�@��@��@N@������@��@d@��@��@`�@�����
���@�@c�@�@�@�@�@�	@l�@���@�
@az@�@�@m;@�����@�@b�@�@�@L�@���@�@N@�@�@`�@�!�D�"�2�#�*�$�'�%@�&@N@�(@�)@i�@�+�.�,@�-@N@�/@�0@�1@p�@�3�:�4�7�5@�6@az@�8@�9@e�@�;�>�<@�=@d@�?@�@@�A@�B@�C@L@�E�T�F�M�G�J�H@�I@az@�K@�L@b�@�N�Q�O@�P@N@�R@�S@`�@�U�\�V�Y�W@�X@d@�Z@�[@L�@�]�`�^@�_@c�@�a@�b@d{@�d���e���f�x�g�n�h�k�i@�j@`�@�l@�m@d]@�o�u�p@�q@�r@�s@�t@b�@�v@�w@d@�y���z�}�{@�|@d@�~@�@n�@������@��@`�@��@��@d@��������������@��@c�@��@��@e�@������@��@e�@��@��@L@����������@��@N@��@��@L�@������@��@b�@��@��@`�@������������������@��@d@��@��@L�@������@��@`�@��@��@`�@����������@��@`�@��@��@N@������@��@`�@��@��@d@��������������@��@`�@��@��@d@������@��@`�@��@��@N@����������@��@`�@��@��@`�@������@��@`�@��@��@L@���l���)���
��������������@��@c�@��@��@iM@������@��@li@��@��@iM@���������@��@`�@��@��@L@���@�@�@�@�@M@�@�	@`�@�����
��@�@c�@�@�@d@���@�@d@�@�@d{@��"���@�@b�@� @�!@d@�#�&�$@�%@`�@�'@�(@N@�*�M�+�>�,�7�-�0�.@�/@q~@�1@�2@�3@b��4�5�6x�b�b�x��8�;�9@�:@`�@�<@�=@aN@�?�F�@�C�A@�B@`�@�D@�E@b�@�G�J�H@�I@iM@�K@�L@e�@�N�]�O�V�P�S�Q@�R@`�@�T@�U@`�@�W�Z�X@�Y@M�@�[@�\@e�@�^�e�_�b�`@�a@`�@�c@�d@e�@�f�i�g@�h@d{@�j@�k@e�@�m���n���o�~�p�w�q�t�r@�s@`�@�u@�v@e�@�x�{�y@�z@az@�|@�}@e�@���������@��@��@��@��@K�@��@��@e�@������@��@`�@��@��@d@��������������@��@`�@��@��@xv@������@��@`�@��@��@e�@����������@��@b�@��@��@e�@������@��@N@��@��@��@��M��M��M��M��M��M��M��M��M��M��M��M��M��M��MM����MM��g�M������������������@��@xv@��@��@d@������@��@d@��@��@e�@����������@��@c�@��@��@e�@������@��@`�@��@��@e�@��������������@��@��@��@��@cW@��@��@e�@������@��@az@��@��@��@��@��@az@���������@��@b�@��@��@az@���@�@gn@�@�@M@���	���
�L��*���
����@�@N@�@�@d@���@�@e�@�@�@b�@��#�� �@�@`�@�!@�"@d]@�$�'�%@�&@`�@�(@�)@t�@�+�:�,�3�-�0�.@�/@b�@�1@�2@�b@�4�7�5@�6@L�@�8@�9@p�@�;�E�<�B�=@�>@�?@�@@�A@nW@�C@�D@M@�F�I�G@�H@V@�J@�K@li@�M�l�N�]�O�V�P�S�Q@�R@e�@�T@�U@M@�W�Z�X@�Y@`�@�[@�\@b�@�^�e�_�b�`@�a@b�@�c@�d@d@�f�i�g@�h@L�@�j@�k@M@�m��n�x�o�r�p@�q@`�@�s@�t@�u@�v@�w@d@�y�|�z@�{@g_@�}@�~@iM@����������@��@߫@��@��@`�@������@��@i@��@��@cW@����������������������@��@b�@��@��@e�@������@��@`�@��@��@d{@����������@��@L�@��@��@ak@������@��@`�@��@��@e�@��������������@��@b�@��@��@g_@������@��@��@��@��@N@��@��@b�@����������@��@{
@��@��@L@������@��@{
@��@��@c�@������������������@��@c�@��@��@��@��@��@M�@������@��@M@��@��@b�@����������@��@iM@��@��@b�@������@��@`�@��@��@��@�������������@��@`�@��@��@ak@�����@�@e�@�@�@l@����	�@�@d@�
@�@q~@�
��@�@b�@�@�@d@��������8��)�����@�@xv@�@�@d@� �#�!@�"@c�@�$@�%@�&@�'@�(@d@�*�1�+�.�,@�-@az@�/@�0@b�@�2�5�3@�4@d{@�6@�7@g_@�9���:�A�;�>�<@�=@M@�?@�@@cW@�B���C@�D@�E@�FM�GM�HM�I�x�JM�KM�L�X�MM�NM�OM�PM�QM�RM�SM�TM�UM�VM�WM)xM�YM�ZM�[M�\�q�]M�^M�_�h�`�d�aM�bM�cMtOM�eM�fM�gMg�M�i�m�jM�kM�lM)xM�nM�oM�pM�;M�rM�sM�tM�uM�vM�wMg�MM�yM�zM�{M�|M�}M�~�����M��M��M��M��M��M~MM����MM��M����������tO��tOMM��Mg���������g��O��g�)xOa��@��@L�@����������@��@`�@��@��@N@������@��@N@��@��@b�@������������������@��@d@��@��@e�@������@��@`�@��@��@w�@����������@��@c�@��@��@M@������@��@L�@��@��@`�@��������������@��@M@��@��@L�@������@��@b�@��@��@iM@����������@��@lx@��@��@N@������@��@��@l@��@��@`�@��G�����������������@��@g4@��@��@`�@������@��@d@��@��@`�@���������@��@e�@��@�@M@���@�@�@`��`��`�e��	@�
@`�@�8�
����@�@M@�@�@p�@���@�@az@�@�@�@�6�����az� az�!az�"��#az�$�R�%���&���'�q�(�B�)�.az�*az�+�,az�-azazkX�/�9�0�6�1�4�2�3gQgCv�waz�5maz�7az�8azazv��:�?�;�=�<azaz�M�>azv�t��@az�Aazjv��C�Z�D�O�E�L�F�I�G�Hwazaz���J�Kw�v�t�m�Maz�Nazb�kX�P�W�Q�T�R�S�?v�v�az�U�Vw8azv�u��Xaz�Yazazu��[�f�\�c�]�`�^�_v�azazgC�a�bw�"azb��daz�eaz�1v��g�n�h�k�i�jv�b�azwU�l�m�ib�gC�1�oaz�pazw*wc�raz�saz�t�~�u�{�v�y�w�x��azazw�m�zaz{��|az�}az��w�azaz��az���"j������������������az������azb�azaz��az���������az��azv���azw�az��az��azwaz�����������������azaz�����a�azv�az��az��azubaz��az����������az�^az����wazv�az������������az����az�Z���az��azazv�������az����az��v���az��az{�w���������az������azm�v���az��azv����azaz����az�az��az��az��������az����azv�az��az��azazw��az��������azjwj����jazj����������������������az����az��u�b���azv�v���������az���&v�az��ju���az��azu�az��������az��az��az����az��azv�az��azaz��az��az���������az����az��v�v�az�w�az�azaz��az��az��	az��azu�az�
az��
�azv�az�azaz���az�az���az���u�az���az{�maz��azjaz��G��-��&�az� �#�!az�"azaz�Z�$az�%az{�azaz�'�(�+az�)az�*wv��,az��az�.�:�/�6�0az�1�4�2�3azgCaz�;az�5��azaz�7�8az�9azjaz�;�?�<az�=az�>az��az�@�Daz�A�B�Cu�azgCaz�Eaz�FazgCaz�Haz�Iaz�J�P�Kaz�L�Nj�Mv�az�Oaz��j�Qazjaz�S���T���U���V�x�W�i�X�b�Y�_�Z�\az�[azj�]�^{�azazj�`az�aazv�az�caz�d�g�e�fazt�t�azaz�haz{��j�q�k�n�lazaz�mazj�oaz�pazw�az�r�u�saz�tazazj�vaz�wazazv��y���z���{��|az�}�~az��azv���az��azv�az���������������-azu���azazv���az��azjaz����������azaz��v�az��az��azazm������������b�azb�azazj��az��azv�v���az��az������az��������azt�azu���azazv���azaz��az��azt���������az��������az����az��gQv���azazv���������azkX����kXazazkX��az��azkXaz������az��azaz����azazu�������azaz��az��w8gC����az��������azazkX��azu�az��az��az������az��az��wazw����az������v�azazj��az��azjaz������������az��az����az������t�azt�azb�az��������az��azaz��azkX����������azu�azaz��azu���az��azazu���az��az��az��azaz����azv�az�az�az���az�azaz��azv�az�az�	az�
��azazw��
azazw��az�az�az�az�az�az�az�az���az�az��r�az�az�az��f��3� �h�!���"���#���$�[�%�@�&�3�'�.�(�+�)�*az�wcaz�,�-b�azazw�/�2�0�1t�azwt�ubw��4�;�5�8�6�7ubazazu��9�:azgCaz�?�<�>�=�"u�w�?azwckX�A�N�B�H�C�F�D�Et�gCu�az�Gazaz�[�I�Kaz�J�1u��L�Mb�azkXaz�O�V�P�S�Q�RgCv�v�m�T�Uv�azb�u��W�Y�XazgCmaz�ZgCb��\�x�]�k�^�e�_�b�`�ab�azwaz�c�dgCazazgC�f�haz�gu�v��i�j�azw*az�l�r�m�p�n�ow�v�jgCaz�qb�az�s�v�t�uazgCu�az�wazkXb��y���z���{�~�|�}v�azmgCaz�v�az��������azgCv�az��gCazt�������������v�wazu�����t�azt�az��������v�mb�kX�����?azgCaz��������������������azgC����v�azu��?��������v�azb�azaz��azv�������������azgCazu�����gCazazb���az����t�azazb�����������������v��"azgC����gCv�v�v���������gCv�v�az��azt���������������v�azazgQ��gCazb���az����azgCazv�������������������azazv�az��azgC����az��azv�az��kXb�������������azgCazkX����azu�az���az����wcgCgCwU��������������azgCaz��azazgQ��������azv�gCkX��t�azu�������������gQb�v�az����azgCt�az��������w�w�azv���gCmaz���n��8���������azv�wgC�mv��	��
�b�azwu��
azjaz������az�^azgC��t�jv�az����b�gCazmm�mv���,��%��"� �!v�azv�b��#�$v�azazu��&�)�'�(t�kXmaz�*�+azb�b�az�-�2�.�0�/az�iu�b��1gCaz�3�5�4azv�az�6�7gQw*azv��9�V�:�I�;�B�<�?�=�>azb�jaz�@�Amazv�az�C�F�D�Eu�azw�az�G�Hv�kXkXgC�J�O�K�M�LwgCv��NazgCb��P�S�Q�RgCwt�v��T�U�Mazw�az�W�b�X�^�Y�\�Z�[azgCwv��]azwgC�_az�`�awazazt��c�g�d�eazv�az�fazw�h�k�i�jgCt�az���l�mb�t�v�m�o���p���q�~�r�x�s�v�t�uju�u�w�wazwv��y�{az�zt�w�|�}jw�1m�����������kXv�v�az��azgCaz��������az��v���azazv�����������������mt�mgCgCaz����az��t�u�����v�gCwaz������������azmt�az����azjazt���������v�azaz�����wwv�w������������������azazm����azgCt�m��������u�v�jt�����u�u�azgQ������������jazazb�����b�gCgCaz����az��v�gQ����wv�azv�����������������v�v�t�w����az�wv�az������azaz�����azv�azkX����az������azgCjt���������b�v�wm����v��w��������K�����������������������t�v�gCazv���v�u���������azv�azwaz��v�v���������gC��mgQ����azgCt�v�������az��gC����azv�kXaz��
�����azaz���azv�gCw���	�
kXmw���gCv�gC����gCazgCv���wUu�kXv���/��#������azkXv�azazgC�� ��u�w�?az�!�"w�u�ubb��$�(az�%�&�'u�t��1az�)�,�*�+azwazgC�-�.v�azb�kX�0�<�1�7�2�5�3�4v�v�wb��6azwcaz�8�9wcb��:�;b�azazgC�=�D�>�A�?�@azv�azv��B�Cv�azgCv��E�H�F�GgCazkXm�I�Jv�jwv��L�V�M�Q�Nazaz�O�Pazaz�az�Raz�Saz�T�Uu�azu��W�q�X�f�Y�`�Z�]�[�\�^b�w�?�^�_wkXub��a�caz�bazt��d�eww�maz�g�m�h�j�imv�az�k�lt�u�b�gCaz�n�o�pgQ�kXaz�r���s�z�t�w�u�vazt�t�az�x�yazgCazv��{�~�|�}gCv�azv����w�gCazw*������������azu�azu���gCwUaz������azu�gCaz��t�v���������������������������mv�b�v���b�w�����az��azv�����b�u�t�j������������mazwazaz��b�az������azazkX����gCv�v�u�����������������u��a��?�����v�v�az��������maz�v�����b�v�v�v��������������w��wFwc����w���w�����������v�v�v��"v���b�m��������������������w�azt�v���azwaz��������azmw*az����azv���u��������������wv�kXmaz��v�az����kXv�����azt�w�w����������������t�v�b�v�az��wv�����m��v�w���azgC�M������������azwgQgC����v�gCv�m����az��v�az����az�azgC��6������	��az�azgC��jw��
w�
�
��azwt�az���w�b�az���az��gCb�upaz��az�azwcaz�azgC��'��!���azgCaz� gCazgC�"�%�#�$u�v�t��az�&azm�(�/�)�,�*�+�Kt�w8���-�.azb�azkX�0�3�1�2b�t�u�v��4�5wkXgCb��7�O�8�C�9�=az�:�;�<azv�gCkX�>�A�?�@azb�v�w�Bazv�az�D�J�E�H�F�Gazmu�t��Iaz�[az�K�Maz�Ljaz�Nb�kXaz�P�\�Q�W�R�T�SazgCu��U�VazgCgCm�X�Zv��Yaz�1�[azaz�[�]�b�^�`az�_gCazaz�av�v��c�f�d�ev�gCazb�az�gv�w�iaz�jaz�k���l���m���n�{�o�v�p�s�q�razgCmv��t�ujt�azm�w�y�xazmv�u��z�MgC�|��}az�~az�1t����������"v�maz����azkXwm����������������azv�v�v�����azt�t�v�������azv�gC����azwv�v�������������azw�v�az��azaz��������azb�az��azjv���������������������v�wazkX����azv�azv�������azv�az����kXv�t�w��������az��azv�����u�jv�gC��������v�t�v�azazv�������������u�jmv�����w�j��azv�v�������������azb�wUw�����azwmkX������azv�v�����azwFwF��������������������������S�����?U�,�;��������v������w��azb���������v�wt�azm��������m��mgC��������b�gCt�v�azgC������������mv�azgC��v�v�w��az��azv�az�����������az�v�w��b�azazw��	��w��mj�
�mt�v��
�
�����ubv�t�v�v��gCw����jww����wv�gC��&�� �az��wv�azb��!�#az�"gCv��$�%mt�v�b��'�-�(�+�)�*�"jwFv�az�,azm�.�0�/azb�gC�1�2u��iwv�az�4�5�G�6azaz�7az�8�9az�:az�;�A�<�>az�=wb��?�@u�gCu�m�B�E�C�Dazv�azv��FazgQv��Hazaz�Iaz�J�K�a�L�Z�M�S�N�Paz�Oazm�Q�RgQv�azgC�T�W�U�Vw��"��1�X�Yazu�azv��[az�\�_�]�^t��?t�u��`az��az�baz�caz�daz�eazw�az�gaz�haz�iaz�jaz�kaz�laz�maz�naz�oaz�paz�qazazgC�saz�taz�uaz�v��w���xaz�y�*�z�V�{���|���}���~�������������az�ubaz����t�gCazt�������v�t�az����wcw*w*�����������azw�az����v�gCaz�M��������u���w��azwb���������������azt�gC��azazwUaz������v�azkXaz������������gCv�azm����v�gCv�u���������gCazt�m����mazkX���������������������b�azwaz����b�w�v�gC����az��gQv������azgQaz������az����azwazgC��������azgCu�az����kXw�v�u�����������������v�azgCwU��azb�az��������azgCgCaz����azt�gCw������������gCkXazgC����az�maz��������u�mv�w�az��waz���!���	������������az��azv�az��u�v���������w�azb�azaz��v�az����������u�gCmb���gCazazb�����t�azazw��azgCt��
������
az�b���v�kXazv���az���az�azazv�������gQazb�az��w�azgCaz�azaz� u�az�"�9�#�-�$�'az�%az�&azv��(�*az�)kXb��+�,azgCazkX�.�3�/�1az�0wazaz�2azm�4�7�5�6azgCv�gCaz�8azb��:�I�;�B�<�?�=�>gQazv�u��@�Av�azazw�C�F�D�Ewb�azv��G�Hazu�t�az�J�Q�K�N�L�Mw�w�v�az�O�Pt�gCwu��R�T�Sazjaz�Umazm�W���X���Y�t�Z�f�[�a�\�^�]azv�gC�_�`mazv�az�b�d�caz�azaz�emgC�g�m�h�jaz�iazgC�k�lt�azt�az�n�q�o�pv�azazw�r�su�azu��?�u�}�v�z�waz�x�ygCwwU�^�{�|gQazazu��~���������v�azjaz����mazb�az��������u�azu�m����kXmmv���������������������wt�kX�^����b�azgCt���������b�azv�t�az��gCt�����������azv�gC����wazv�t�az����u�azv�����������������b�v�azv�����azu�gCaz��az����v�azgCaz������������t�w�w�m����azjb�gCaz��v���v�az��������������������az��azm����az�?azt�������azkXazu���u�az����������azv�jaz��azv���������azv�v�v���azaz��������������az��azgCgCaz����az��azu�az��b�az������������mb�t�az����ubjazt���az����gCv�v�v��������������������w�azmaz��azgCu�����az��b�az��azt�az�������gCv�azw���azwwcaz��
��	b�v�azv�az�gCaz�
������azmaz��azv�azm����v��b�az��azgQazv���#�� ��azgCwu��!�"gC�1t�m�$�'�%�&t�az��m�(�)mv�jaz�+az�,���-�c�.�I�/�;�0�7�1�4�2�3t�v�gCaz�5�6v�v�azw�az�8�9�:kXv�azgC�<�B�=�?az�>azt��@�Ab�v�gCv��C�F�D�Emazu�az�G�HazmgCw��J�W�K�R�L�O�M�Nazv�t�w�P�Qv�mazt��S�U�Tazv�b�az�Vazw��X�]�Y�[�Zazazv�az�\maz�^�a�_�`az�t�gCaz�bgQaz�d���e�r�f�m�g�j�h�iazkXt�gC�k�lv�b�azv��n�paz�omaz�qazjw�s�y�t�v�uu�maz�w�xkXgCazv��z�}�{�|kXb�azt��~�azmmaz������������az��azv�������azgCm����az��v�az����azjv�az������������azv�waz����b�azazm���������Mazv�b�����wazv�az��az��������������������azt�t�kX����gCazv�az��������kXt�v�kX����azmmb�������������gCv�b�v�����gCt�v�az��������t�v�b�m����v�jwaz��az��az��������gCt�gCu���azt�azaz����������az��az����az��az������������azkXazj��azv�v���az����t�w*kXv�az��az����azaz����az��az��azazw�����az��az������������������az��azw����kXju�ub��������wUjw������u�t�azm��az��������jmmaz��az�az��az��az��az��azazwaz�az�az�az��az�az�azwaz�az�	az�
az�az�az�
az�az�az�az�az�azaz��az����������������saz�az���H��3�az� az�!az�"az�#az�$az�%az�&az�'az�(az�)az�*az�+az�,az�-az�.az�/az�0az�1az�2az��az�4az�5az�6az�7az�8az�9az�:az�;az�<az�=az�>az�?az�@az�Aaz�Baz�Caz�Daz�Eaz�Faz�Gaz��az�I�^�Jaz�Kaz�Laz�Maz�Naz�Oaz�Paz�Qaz�Raz�Saz�Taz�Uaz�Vaz�Waz�Xaz�Yaz�Zaz�[az�\az�]az��az�_az�`az�aaz�baz�caz�daz�eaz�faz�gaz�haz�iaz�jaz�kaz�laz�maz�naz�oaz�paz�qaz�raz��az�t�o�u���v���w���xaz�yaz�zaz�{az�|az�}az�~az�az��az��az��az��az��az��az��az��������������az��azv�az��az��azv�azaz����az��azv�az��az��az��az��azv�az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��������������az��azv�az��az��azv�azaz����az��azv�az��az��az��az��azv�az������az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��������������az��azv�az��az��azv�azaz����az��azv�az��az��az��az��azv�az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��������������az��azv�az��az��azv�azaz����az��azv�az��az��az��az��azv�az���6�����az�az�az�az�az�az�az�az�az�az�	az�
az�az�az�
az�az�����az�az�yaz�az�az�yazaz��az�az�yaz�az�az�az�az�az� az�!az�"az�#az�$az�%az�&az�'az�(az�)az�*az�+�2�,�/�-az�.az�yaz�0az�1az�yazaz�3�4az�5az�yaz�7�S�8az�9az�:az�;az�<az�=az�>az�?az�@az�Aaz�Baz�Caz�Daz�Eaz�Faz�Gaz�H�O�I�L�Jaz�Kaz�yaz�Maz�Naz�yazaz�P�Qaz�Raz�yaz�Taz�Uaz�Vaz�Waz�Xaz�Yaz�Zaz�[az�\az�]az�^az�_az�`az�aaz�baz�caz�d�k�e�h�faz�gaz�yaz�iaz�jaz�yazaz�l�maz�naz�yaz�p���q���r���saz�taz�uaz�vaz�waz�xaz�yaz�zaz�{az�|az�}az�~az�az��az��az��az��az��az��az��azTaz��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��azTaz������az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��azTaz��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��azTaz����������az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az���	��az��az��az��az��az��az��az��az��az��az��az�az�az�az�az�az�az�az�az�az��az�
az�az�az�
az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az��az��'� ���!�x�"�M�#�8�$az�%az�&az�'az�(az�)az�*az�+az�,az�-az�.az�/az�0az�1az�2az�3az�4az�5az�6az�7az�az�9az�:az�;az�<az�=az�>az�?az�@az�Aaz�Baz�Caz�Daz�Eaz�Faz�Gaz�Haz�Iaz�Jaz�Kaz�Laz�az�N�c�Oaz�Paz�Qaz�Raz�Saz�Taz�Uaz�Vaz�Waz�Xaz�Yaz�Zaz�[az�\az�]az�^az�_az�`az�aaz�baz�az�daz�eaz�faz�gaz�haz�iaz�jaz�kaz�laz�maz�naz�oaz�paz�qaz�raz�saz�taz�uaz�vaz�waz�az�y���z���{az�|az�}az�~az�az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��azJaz��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��azJaz������az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��azJaz��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��azJaz��az����������az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az�"az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az�"az�����az��az�az�az�az�az�az�az�az�az�az�	az�
az�az�az�
az�az�az�az�az�"az�az�az�az�az�az�az�az�az�az�az�az�az�az� az�!az�"az�#az�$az�%az�&az�"az�(���)���*�U�+�@�,az�-az�.az�/az�0az�1az�2az�3az�4az�5az�6az�7az�8az�9az�:az�;az�<az�=az�>az�?az�yaz�Aaz�Baz�Caz�Daz�Eaz�Faz�Gaz�Haz�Iaz�Jaz�Kaz�Laz�Maz�Naz�Oaz�Paz�Qaz�Raz�Saz�Taz�yaz�V�k�Waz�Xaz�Yaz�Zaz�[az�\az�]az�^az�_az�`az�aaz�baz�caz�daz�eaz�faz�gaz�haz�iaz�jaz�yaz�laz�maz�naz�oaz�paz�qaz�raz�saz�taz�uaz�vaz�waz�xaz�yaz�zaz�{az�|az�}az�~az�az�yaz���.������az��az��az��az��az��az��az������az������az��az��az��az������������������az��azw�az��az��azw�az������az��azw�az��az��azw�az����������az��azw�az��az��azw�az������az��azw�az��az��azw�az��az����������az��azw�az��az��azw�az������az��azw�az��az��azw�az��az��azaz��az��az��az����az��az��az��azw�az��az��az��azaz��az����azaz��az��az����az��az��azw�az��az��az��az��az��az��az��az���!��az�����az��az��az��az�����������������az��azw�az��az��azw�az������az��azw�az��az��azw�az����������az��azw�az��az��azw�az���az�azw�az�az�azw�az�az���	��
az�azw�az�
az�azw�az���az�azw�az�az�azw�az�az�azaz�az�az�az��az�az�az� azw�az�"az�#az�$azaz�%az�&�'azaz�(az�)az�*�+az�,az�-azw�az�/���0az�1az�2az�3az�4az�5az�6az�7�x�8az�9�m�:az�;az�<az�=az�>�]�?�N�@�G�A�D�Baz�Cazw�az�Eaz�Fazw�az�H�K�Iaz�Jazw�az�Laz�Mazw�az�O�V�P�S�Qaz�Razw�az�Taz�Uazw�az�W�Z�Xaz�Yazw�az�[az�\azw�az�^az�_�f�`�c�aaz�bazw�az�daz�eazw�az�g�j�haz�iazw�az�kaz�lazw�az�naz�oazaz�paz�qaz�raz�s�taz�uaz�vaz�wazw�az�yaz�zaz�{azaz�|az�}�~azaz�az��az����az��az��azw�az��az��az��az��az��az��az��az������az������az��az��az��az������������������az��azw�az��az��azw�az������az��azw�az��az��azw�az����������az��azw�az��az��azw�az������az��azw�az��az��azw�az��az����������az��azw�az��az��azw�az������az��azw�az��az��azw�az��az��azaz��az��az��az����az��az��az��azw�az��az��az��azaz��az����azaz��az��az����az��az��azw�az���3���������az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az�az��az��az��az��az��az��az��az��az��az��az��az��az�az�az�az�az�az�az�az�az�az�	��
az�az�az�
az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az� az�!az�"az�#az�$az�%az�&az�'az�(az�)az�*az�+az�,az�-az�.az�/az�0az�1az�2az�azw��4�5�[�6az�7az�8az�9az�:az�;az�<az�=az�>az�?az�@�Q�Aaz�Baz�Caz�Daz�Eaz�F�M�G�J�Haz�Iazw�az�Kaz�Lazw�az�Naz�Oaz�Pazw�az�Raz�Sazaz�T�Uaz�Vazaz�W�Xaz�Yaz�Zazw�az�\az�]az�^az�_az�`az�aaz�baz�caz�daz�eaz�f�w�gaz�haz�iaz�jaz�kaz�l�s�m�p�naz�oazw�az�qaz�razw�az�taz�uaz�vazw�az�xaz�yazaz�z�{az�|azaz�}�~az�az��azw�az���������������u���{���u��az��az��az��az��az��azm�����S���������������az��������az��azaz��az����az��azmaz������azaz����az��az��azmaz������az������az��azmaz��az��azmazaz��az����az��azmaz��az����az����azaz����az��az��azmazaz����azaz��az����az��azmaz����az����az��azaz����az��az��az��azmazaz��az����azaz����azaz����az��azmaz��������az��az��az��az����azaz����az��azmaz��������az����az��az��az��az��azmazaz����azaz��az����az��azmaz��azaz����azaz����az��az��azmaz��az��azaz����az��az��azaz����az�azmaz��H��!��
�az�az�az�az�	az�
az�az�azmazaz�az������azaz��az�azmaz�az�az�az�azmazaz��azaz��az� azmaz�"�?�#�7�$�+�%azaz�&�'az�(az�)az�*azmaz�,az�-�2�.azaz�/�0az�1azmazaz�3�4az�5az�6azmazaz�8az�9az�:az�;az�<�=az�>azmazaz�@�Aaz�Baz�Caz�Dazaz�E�Faz�Gazmazaz�I�Jaz�Kazaz�Laz�M�Naz�Oaz�Paz�Qaz�Razmaz�Taz�Uazaz�V�Waz�X�m�Y�`�Zazaz�[az�\�]az�^az�_azmaz�a�gaz�baz�c�daz�eaz�fazmazaz�h�iazaz�j�kaz�lazmazaz�n�oaz�paz�qaz�raz�saz�tazmaz�vaz�waz�xaz�yaz�zazmaz�|���}az�~az�az��az��azmaz��az��az��az��az��az��az�����������G���$��������������������������������az��azmaz��az��azmaz������az��azmaz��az��azmaz����������az��azmaz��az��azmaz������az��azmaz��az��azmaz��������������az��azmaz��az��azmaz������az��azmaz��az��azmaz����������az��azmaz��az��azmaz������az��azmaz��az��azmaz������������������az��azmaz��az��azmaz������az��azmaz��az��azmaz����������az��azmaz��az��azmaz������az��azmaz��az��azmaz��az��az������az��azmaz��az��azmazaz����azaz����az��az��az��azmaz��	az�az��az�azaz��az�azmazaz�
az�az�az�
�az�az�azmaz���azaz��az�az�az�az�az�azmaz�az�azaz�az�az� az�!�"az�#azmaz�%�8�&�/�'az�(azaz�)az�*az�+�,az�-az�.azmazaz�0az�1az�2�3az�4azaz�5�6az�7azmazaz�9az�:az�;�<az�=�B�>az�?az�@az�Aazmazaz�C�Daz�Eaz�Fazmaz�H�[az�Iaz�J�K�S�Laz�Maz�Naz�Oazaz�P�Qaz�Razmaz�Taz�Uazaz�Vaz�W�Xaz�Yaz�Zazmaz�\�o�]�f�^azaz�_az�`�aazaz�b�caz�daz�eazmaz�gazaz�haz�i�jaz�kazaz�l�maz�nazmaz�p���q�y�razaz�saz�t�uazaz�v�waz�xazmaz�zazaz�{az�|�}azaz�~�az��azmaz��az������azaz����azaz����az��azmaz��az����������az��az��azmaz��az��az��azmazaz��az����az��azmaz�������������������az����azaz����azaz����az��azmazaz��������azaz����az��az��azmaz����az����az��az��azmazaz��az����az��azmaz����az����az��az��az��az��az��azmaz��az��az��azaz����az��az��azmazaz��������azaz����azaz����az��az��azmaz��azaz��az��az����az��az��azmaz��������az����az��az��az��az��az��az��azmaz����az��az����az��az��az��az��azmazaz��az��az����az��az��az��azmaz���az��az��az��az��az��az��az�azmaz�az�az���az�azaz�	�
az�azmaz�
az�az�az�az�azmaz��u��[��+��#�azaz���az�az��az�azmaz�az� az�!az�"azmazaz�$�%az�&azaz�'az�(�)az�*azmaz�,�A�-�:�.�4�/azaz�0�1az�2az�3azmazaz�5�6az�7az�8az�9azmaz�;azaz�<�=azaz�>�?az�@azmaz�B�T�C�Iaz�D�Eazaz�F�Gaz�Hazmaz�J�Oaz�Kaz�L�Maz�Nazmazaz�P�Qaz�Raz�Sazmazaz�Uaz�Vaz�Waz�X�Yaz�Zazmaz�\az�]az�^az�_�j�`�eaz�a�baz�caz�dazmazaz�faz�g�haz�iazmaz�k�p�lazaz�m�naz�oazmaz�qaz�raz�saz�tazmaz�v��az�waz�x�yazaz�z�{azaz�|�}az�~az�azmazaz��az��az����az��az����az����az��azmaz��az��az��azmaz���S���������������az��������az��azaz��az����az��azmaz������azaz����az��az��azmaz������az������az��azmaz��az��azmazaz��az����az��azmaz��az����az����azaz����az��az��azmazaz����azaz��az����az��azmaz����az����az��azaz����az��az��az��azmazaz��az����azaz����azaz����az��azmaz��������az��az��az��az����azaz����az��azmaz��������az����az��az��az��az��azmazaz����azaz��az����az��azmaz��azaz����azaz����az��az��azmaz��az��azaz����az��az��azaz����az�azmaz��H��!��
�az�az�az�az�	az�
az�az�azmazaz�az������azaz��az�azmaz�az�az�az�azmazaz��azaz��az� azmaz�"�?�#�7�$�+�%azaz�&�'az�(az�)az�*azmaz�,az�-�2�.azaz�/�0az�1azmazaz�3�4az�5az�6azmazaz�8az�9az�:az�;az�<�=az�>azmazaz�@�Aaz�Baz�Caz�Dazaz�E�Faz�Gazmazaz�I�Jaz�Kazaz�Laz�M�Naz�Oaz�Paz�Qaz�Razmaz�Taz�Uazaz�V�Waz�X�m�Y�`�Zazaz�[az�\�]az�^az�_azmaz�a�gaz�baz�c�daz�eaz�fazmazaz�h�iazaz�j�kaz�lazmazaz�n�oaz�paz�qaz�raz�saz�tazmaz�v���w���xaz�yaz�zaz�{az�|az�}az�~az�az��az��az��az��az��az��az��az��az��az��az��az��azL�az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��azL�az������az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��azL�az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��azL�az���$����������az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az�����az��az��az��az��az�az�az�az�az�az�az�az�az�az�	az�
az�az�az�
az�az��az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az� az�!az�"az�#az��az�%�r�&�L�'az�(az�)az�*az�+az�,az�-az�.az�/az�0az�1�B�2az�3az�4�;�5az�6az�7az�8az�9az�:az��az�<az�=azaz�>az�?�@az�Aaz��az�Caz�Daz�Eazaz�F�Gaz�Hazaz�I�Jaz�Kaz��az�Maz�Naz�Oaz�Paz�Qaz�Raz�Saz�Taz�Uaz�Vaz�W�h�Xaz�Yaz�Z�a�[az�\az�]az�^az�_az�`az��az�baz�cazaz�daz�e�faz�gaz��az�iaz�jaz�kazaz�l�maz�nazaz�o�paz�qaz��az�s���taz�uaz�vaz�waz�xaz�yaz�zaz�{az�|az�}az�~���az��az������az��az��az��az��az��az��az��az��azaz��az����az��az��az��az��az��azaz����az��azaz����az��az��az��az��az��az��az��az��az��az��az��az��az������az��az������az��az��az��az��az��az��az��az��azaz��az����az��az��az��az��az��azaz����az��azaz����az��az��az���o�������������az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az<az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az<az�����az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az�az�az�az<az�az�az�az�az�az�	az�
az�az�az�
az�az�az�az�az�az�az�az�az�az�az<az��D��/�az�az�az�az�az� az�!az�"az�#az�$az�%az�&az�'az�(az�)az�*az�+az�,az�-az�.az�az�0az�1az�2az�3az�4az�5az�6az�7az�8az�9az�:az�;az�<az�=az�>az�?az�@az�Aaz�Baz�Caz�az�E�Z�Faz�Gaz�Haz�Iaz�Jaz�Kaz�Laz�Maz�Naz�Oaz�Paz�Qaz�Raz�Saz�Taz�Uaz�Vaz�Waz�Xaz�Yaz�az�[az�\az�]az�^az�_az�`az�aaz�baz�caz�daz�eaz�faz�gaz�haz�iaz�jaz�kaz�laz�maz�naz�az�p�G�q���r���saz�taz�uaz�vaz�waz�xaz�yaz�zaz�{az�|az�}���~az�az������az��az����������az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az������azaz����az��az��az��az��az��az��az��az��azaz��az����az��az��az��az��az��az��az��az��az��az��az��az��az������az��az������az��az����������az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az������azaz����az��az��az��az��az��az��az��az��azaz��az����az��az��az�����az��az��az��az��az��az��az��az��az��az�����az��az������az��az����������az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az�az��
�azaz��az�az�az�az�	az��az�az�az�
azaz�az��az�az��az�az�az�az�az�az�az�az�az�az�az��5�az�az� �.�!az�"az�#�*�$�'�%az�&az��az�(az�)az��az�+az�,az�-az��az�/az�0az�1az�2az�3az�4az��az�6az�7�?�8azaz�9�:az�;az�<az�=az�>az��az�@az�Aaz�Bazaz�Caz�D�Eaz�Faz��az�H���I�t�Jaz�Kaz�Laz�Maz�Naz�Oaz�Paz�Qaz�Raz�Saz�Taz�Uaz�Vaz�Waz�Xaz�Y�h�Z�a�[�^�\az�]azw*az�_az�`azw*az�b�e�caz�dazw*az�faz�gazw*az�i�p�j�m�kaz�lazw*az�naz�oazw*az�qaz�raz�sazw*az�uaz�vaz�waz�xaz�yaz�zaz�{az�|az�}az�~az�az��az��az��az��az��������������az��azw*az��az��azw*az������az��azw*az��az��azw*az����������az��azw*az��az��azw*az��az��az��azw*az������az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��������������az��azw*az��az��azw*az������az��azw*az��az��azw*az����������az��azw*az��az��azw*az��az��az��azw*az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��������������az��azw*az��az��azw*az������az��azw*az��az��azw*az����������az��azw*az��az��azw*az��az��az��azw*az�����������P���%�����az��az��az��az�az�az�az�az�az�az�az�az�az�	az�
az�az�az�
az�az�azT4az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az� az�!az�"az�#az�$azT4az�&�;�'az�(az�)az�*az�+az�,az�-az�.az�/az�0az�1az�2az�3az�4az�5az�6az�7az�8az�9az�:azT4az�<az�=az�>az�?az�@az�Aaz�Baz�Caz�Daz�Eaz�Faz�Gaz�Haz�Iaz�Jaz�Kaz�Laz�Maz�Naz�OazT4az�Q���R�q�Saz�Taz�Uaz�Vaz�Waz�Xaz�Yaz�Zaz�[az�\az�]az�^az�_az�`az�aaz�baz�c�j�d�g�eaz�faz�iaz�haz�iaz�iaz�k�n�laz�maz�iaz�oaz�paz�iaz�raz�saz�taz�uaz�vaz�waz�xaz�yaz�zaz�{az�|az�}az�~az�az��az��az����������az��az�iaz��az��az�iaz������az��az�iaz��az��az�iaz������az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az����������az��az�iaz��az��az�iaz������az��az�iaz��az��az�iaz��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az����������az��az�iaz��az��az�iaz������az��az�iaz��az��az�iaz���;���������az��az��az��az��az��az��az��az��az��az��az��az��az��az��az������az��az��az��azupaz��az��az��az��azupaz��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az�����az��az��az�azupaz�az�az�az�azupaz��!�az�	az�
az�az�az�
az�az�az�az�az�az�az�az�az�az���az�az�az�azupaz�az�az�az� azupaz�"az�#az�$az�%az�&az�'az�(az�)az�*az�+az�,az�-az�.az�/az�0az�1�6�2az�3az�4az�5azupaz�7az�8az�9az�:azupaz�<�g�=�R�>az�?az�@az�Aaz�Baz�Caz�Daz�Eaz�Faz�Gaz�Haz�Iaz�Jaz�Kaz�Laz�Maz�Naz�Oaz�Paz�Qaz)az�Saz�Taz�Uaz�Vaz�Waz�Xaz�Yaz�Zaz�[az�\az�]az�^az�_az�`az�aaz�baz�caz�daz�eaz�faz)az�h�}�iaz�jaz�kaz�laz�maz�naz�oaz�paz�qaz�raz�saz�taz�uaz�vaz�waz�xaz�yaz�zaz�{az�|az)az�~az�az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az)az���B��������������az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��azS�az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��azS�az������az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��azS�az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��azS�az��������az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az�az�az��az�az�az�az�az�az�az�	az�
az�az�az�
az�az�az�az�az�az�az�az�az�az��az��-�az�az�az�az�az�az�az� az�!az�"az�#az�$az�%az�&az�'az�(az�)az�*az�+az�,az��az�.az�/az�0az�1az�2az�3az�4az�5az�6az�7az�8az�9az�:az�;az�<az�=az�>az�?az�@az�Aaz��az�C���D�o�E�Z�Faz�Gaz�Haz�Iaz�Jaz�Kaz�Laz�Maz�Naz�Oaz�Paz�Qaz�Raz�Saz�Taz�Uaz�Vaz�Waz�Xaz�YazQ�az�[az�\az�]az�^az�_az�`az�aaz�baz�caz�daz�eaz�faz�gaz�haz�iaz�jaz�kaz�laz�maz�nazQ�az�p���qaz�raz�saz�taz�uaz�vaz�waz�xaz�yaz�zaz�{az�|az�}az�~az�az��az��az��az��az��azQ�az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��azQ�az����������az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az�az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az�az������az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az�az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az�az�������L���$�������u���6�����j��j��j��j��j��j��j�j�j�j�j�j�j�j�j�j�	��
�
�j�j�j�j�j�j���j�j�j�j�j�j�j�j�j�j�j�j�j�j� j�!j�"j�#j�$j�%j�&j�'j�(�/�)�,�*j�+j�j�-j�.j�j�0�3�1j�2j�j�4j�5j�j�7�V�8j�9j�:j�;j�<j�=j�>j�?j�@j�Aj�Bj�Cj�Dj�Ej�Fj�Gj�H�O�I�L�Jj�Kj�j�Mj�Nj�j�P�S�Qj�Rj�j�Tj�Uj�j�Wj�Xj�Yj�Zj�[j�\j�]j�^j�_j�`j�aj�bj�cj�dj�ej�fj�g�n�h�k�ij�jj�j�lj�mj�j�o�r�pj�qj�j�sj�tj�j�v���w���xj�yj�zj�{j�|j�}j�~j�j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j������j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��jj������������j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j�j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j�j�����j��j��j��j��j�j�j�j�j�j�j�j�j�j�	j�
j�j�j�
j�j�j�j�j�j�j�j�j�j�j�j�j�j�j�j�j�j�j� j�!j�"j�#j�j�%�}�&j�'�R�(�=�)j�*j�+j�,j�-j�.j�/j�0j�1j�2j�3j�4j�5j�6j�7j�8j�9j�:j�;j�<j��j�>j�?j�@j�Aj�Bj�Cj�Dj�Ej�Fj�Gj�Hj�Ij�Jj�Kj�Lj�Mj�Nj�Oj�Pj�Qj��j�S�h�Tj�Uj�Vj�Wj�Xj�Yj�Zj�[j�\j�]j�^j�_j�`j�aj�bj�cj�dj�ej�fj�gj��j�ij�jj�kj�lj�mj�nj�oj�pj�qj�rj�sj�tj�uj�vj�wj�xj�yj�zj�{j�|j��j�~�����������j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j�j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j�j������j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j�j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j�j���������j��j��j��j��j��j��j��j��j��j��j��j��j��j��j������j������j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j��j�j�j�j�j���j��	�j�j��j�
j�j��j�
j�j�j�j��j��/�j�j�j�j�j�j�j�j�j�j�j�j�j� j�!j�"�*�#j�$�'�%j�&j��j�(j�)j��j�+j�,j�-j�.j��j�0j�1j�2j�3j�4j�5j�6j�7j�8j�9j�:j�;j�<j�=j�>j�?�G�@j�A�D�Bj�Cj��j�Ej�Fj��j�Hj�Ij�Jj�Kj��j�M���N�7�O���P�{�Q�f�Raz�Saz�Taz�Uaz�Vaz�Waz�Xaz�Yaz�Zaz�[az�\az�]az�^az�_az�`az�aaz�baz�caz�daz�eazF�az�gaz�haz�iaz�jaz�kaz�laz�maz�naz�oaz�paz�qaz�raz�saz�taz�uaz�vaz�waz�xaz�yaz�zazF�az�|���}az�~az�az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��azF�az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��azF�azv���������az��az��az��az��azv�az��az��az��az��az��az��az���������������{����������:����������������������az��azv�az��az��azv�az������az��azv�az��az��azv�az����������az��azv�az��az��azv�az������az��azv�az��az��azv�az��������������az��azv�az��az��azv�az������az��azv�az��az��azv�az����������az��azv�az��az��azv�az������az��azv�az��az��azv�az�������������az�azv�az�az�azv�az��	�az�azv�az�
az�azv�az�
����az�azv�az�az�azv�az���az�azv�az�az�azv�az��+��$��!�az� azv�az�"az�#azv�az�%�(�&az�'azv�az�)az�*azv�az�,�3�-�0�.az�/azv�az�1az�2azv�az�4�7�5az�6azv�az�8az�9azv�az�;�z�<�[�=�L�>�E�?�B�@az�Aazv�az�Caz�Dazv�az�F�I�Gaz�Hazv�az�Jaz�Kazv�az�M�T�N�Q�Oaz�Pazv�az�Raz�Sazv�az�U�X�Vaz�Wazv�az�Yaz�Zazv�az�\�k�]�d�^�a�_az�`azv�az�baz�cazv�az�e�h�faz�gazv�az�iaz�jazv�az�l�s�m�p�naz�oazv�az�qaz�razv�az�t�w�uaz�vazv�az�xaz�yazv�az�{���|���}���~���az��azv�az��az��azv�az������az��azv�az��az��azv�az����������az��azv�az��az��azv�az������az��azv�az��az��azv�az��������������az��azv�az��az��azv�az������az��azv�az��az��azv�az����������az��azv�az��az��azv�az������az��azv�az��az��azv�az�������������������������az��azv�az��az��azv�az������az��azv�az��az��azv�az����������az��azv�az��az��azv�az������az��azv�az��az��azv�az��������������az��azv�az��az��azv�az������az��azv�az��az��azv�az����������az��azv�az��az��azv�az������az��azv�az��az��azv�az��az��az��az�����az�azv�az�az�azv�az�az�az�azaz�az�	�
az�azv�az�
�V��az�az����azaz��az�azv�az���az�az�azv�az�az�az�azv�az� �:�!�0�"�'�#azaz�$�%az�&azv�az�(�,az�)�*az�+azv�az�-az�.az�/azv�azaz�1�2�6�3az�4az�5azv�az�7az�8az�9azv�az�;�Daz�<�=az�>�A�?az�@azv�az�Baz�Cazv�az�E�Q�F�J�Gaz�Haz�Iazv�az�K�N�Laz�Mazv�az�Oaz�Pazv�az�Razaz�S�Taz�Uazv�az�W�f�X�_az�Y�Zazaz�[�\az�]az�^azv�az�`azaz�aaz�baz�c�daz�eazv�az�g�naz�haz�i�jazaz�k�laz�mazv�az�o�u�paz�qaz�raz�saz�tazv�azaz�v�waz�xaz�yaz�zazv�az�|�*�}���~�����������������az����az��azv�azaz����az��azv�az��az��az��az��azv�az��az��azaz����az��azv�azaz��az��az����az��az��azv�az����������azaz����az��az��azv�az��az��az��az��az��azv�az����az��az��az����az��azv�az����������az��az��azv�azaz����az��azv�az����������az��azv�az��az��azv�az������az��azv�az��az��azv�az������������������azaz����az��azv�az��azaz����az��azv�azaz����az��az��az��azv�az����az������az����az��azv�az��az��az��azv�az����az����az��az��azv�az��azaz����az��azv�az�������������az����az��azv�azaz����az��azv�az�azaz��az�azv�azaz���az��	az�
azv�az�az�
az�azv�az�����az�az�az�azv�azaz�az��az�azv�az��%��!�az�az� azv�az�"az�#az�$azv�az�&az�'az�(az�)azv�az�+�c�,�D�-�4�.az�/azaz�0�1az�2az�3azv�az�5az�6�?�7�;az�8�9az�:azv�azaz�<�=az�>azv�azaz�@�Aaz�Baz�Cazv�az�E�Q�Faz�G�L�Hazaz�I�Jaz�Kazv�az�Mazaz�N�Oaz�Pazv�az�R�Xaz�S�Taz�Uaz�Vaz�Wazv�az�Y�^�Zazaz�[�\az�]azv�az�_azaz�`�aaz�bazv�az�d���e�l�faz�gazaz�h�iaz�jaz�kazv�az�m�saz�n�oazaz�p�qaz�razv�azaz�t�u�y�vaz�waz�xazv�az�z�}�{az�|azv�az�~az�azv�az����az��az����az��az��az��azv�azaz����azaz����az��az��azv�az�������������������������az��azaz����az��azv�az��azaz��az����az��azv�az��azaz����azaz����az��azv�az����������azaz����az��az��azv�azaz��az����az��az��azv�az��azaz��az��az����az��azv�az����az����������az��������az��azv�az��az��azv�az��az������az��azv�az��az��azv�az��az��azaz����az��azv�az��������az������az����az��azv�az��az��az��azv�az��az����az����az��azv�az��az��az��azv�az��������az����az��az��azv�az������az��az��azv�azaz����az��azv�az��az��azaz��az�azv�az��U�� ��
az��az�	azaz�
�az�azv�az�az��az�az��az�azv�az���az�az�azv�az���az�azv�az�az�azv�az�!�?�"�1�#�,�$�(�%az�&az�'azv�azaz�)�*az�+azv�az�-az�.az�/az�0azv�az�2�7�3azaz�4�5az�6azv�azaz�8�9�<�:az�;azv�az�=az�>azv�az�@�O�A�J�B�Faz�C�Daz�Eazv�az�Gaz�Haz�Iazv�azaz�Kaz�L�Maz�Nazv�azaz�Paz�Q�Raz�Saz�Tazv�az�V�d�Waz�X�^�Yazaz�Zaz�[�\az�]azv�azaz�_az�`az�a�baz�cazv�az�e�paz�faz�g�h�l�iaz�jaz�kazv�az�maz�naz�oazv�az�q�waz�r�saz�taz�uaz�vazv�az�x�}�yaz�zaz�{az�|azv�azaz�~�az��az��azv�az������az��az��az��azaz��������az��az��azv�azaz����az��azv�az������������az����az��az��az��az��azv�az����az����azaz����az��azv�azaz��az����az��az��azv�az��az����az��az��az����az��azv�az��az��az��az��az��azv�az��az������az��az��az��az��az��azv�az��azaz��az����az��az��azv�az���l�����������������az��az��azaz��������az��azv�az��az��azv�az��az����az����az��az��az��azv�azaz����az��az��az��azv�azaz����azaz����azaz��az����az��azv�az���az����az��������az��������az��azv�az��az��azv�azaz����az��az��azv�az�az�azaz��az�azv�azaz�az��azaz�	�
az�az�az�
azv�az��6��%��az�az��az�az�az�az�azv�azaz��azaz���!az��az� azv�azaz�"�#az�$azv�az�&�.�'azaz�(�)az�*az�+az�,az�-azv�az�/azaz�0�1azaz�2az�3�4az�5azv�az�7�O�8�@az�9�:azaz�;az�<az�=�>az�?azv�az�A�H�Baz�Caz�Dazaz�E�Faz�Gazv�azaz�I�Jazaz�Kaz�L�Maz�Nazv�az�P�^az�Q�R�X�Saz�Tazaz�U�Vaz�Wazv�azaz�Yaz�Z�[az�\az�]azv�azaz�_�`�f�aazaz�baz�c�daz�eazv�az�gazaz�haz�i�jaz�kazv�az�m���n��az�o�p��q�x�raz�saz�tazaz�u�vaz�wazv�azaz�y�zaz�{azaz�|�}az�~azv�az��az��az��az��azaz����az��azv�az����������azaz��az����az��az��az��azv�az����������az��az��az��az��azv�azaz����azaz����az��azv�azaz����az��azaz����az��azv�az��������az��az����az��az��az��azv�az������azaz����az��az��azv�az����az��az����az��azv�azaz��az����az��azv�azaz��������az��az��az��az��azv�azaz��������az��az��azv�azaz����az��azv�az�������az����azaz����az��azaz����az��azv�az������az��az������azaz����az��azv�az����az����az��azv�az��az��az��azv�az��az��az����az��az����az��azv�az��az������az��azv�az��az��azv�az��/��
az��az�az�azaz��az�	azv�az����az�
az��az�az�azv�az��az�az��az�azv�azaz��az�az�azv�az��)��$az� �!az�"az�#azv�az�%azaz�&�'az�(azv�az�*az�+azaz�,�-az�.azv�az�0�k�1�H�2�=�3�8�4az�5az�6az�7azv�azaz�9az�:�;az�<azv�az�>�C�?azaz�@�Aaz�Bazv�azaz�Daz�E�Faz�Gazv�az�I�\�J�S�K�Oaz�L�Maz�Nazv�az�Paz�Qaz�Razv�az�T�X�Uaz�Vaz�Wazv�az�Yaz�Zaz�[azv�az�]�baz�^�_az�`az�aazv�az�c�gaz�d�eaz�fazv�azaz�h�iaz�jazv�az�l�|�m�v�naz�oaz�p�s�qaz�razv�az�taz�uazv�az�waz�xazaz�y�zaz�{azv�az�}���~���az��az��az��azv�az��azaz����az��azv�az��az������az��az��azv�azaz����az��azv�az���!���|�������*������������������az��az��az��az��azv�az��az����������az��azv�az��az��azv�azaz����az��azv�az����������az��az��az��azv�az����������az��azv�az��az��azv�azaz����az��azv�az������azaz����az��azv�az������az��az��azv�az��az��az��azv�az����������az����az����az��azv�az��az��az��azv�az��azaz����az��az��azv�az����������azaz����az��azv�azaz����az��az��azv�az������az������az��azv�az��az��azv�azaz��az����az��azv�az�����az���
������az�az�azv�azaz��az�azv�az�	az�
az�az�azv�az�����az�az�azv�az�az�az�azv�azaz�az��az�azv�az�az��$az�� azaz�!�"az�#azv�az�%azaz�&az�'�(az�)azv�az�+�X�,�;�-�4az�.�/azaz�0�1az�2az�3azv�az�5az�6azaz�7az�8�9az�:azv�az�<�M�=�Gaz�>�?�C�@az�Aaz�Bazv�az�Daz�Eaz�Fazv�az�Haz�Iazaz�J�Kaz�Lazv�az�Naz�Oaz�P�Taz�Q�Raz�Sazv�az�Uaz�Vaz�Wazv�az�Y�q�Z�d�[azaz�\az�]�^�a�_az�`azv�az�baz�cazv�az�e�k�faz�gazaz�h�iaz�jazv�az�lazaz�maz�n�oaz�pazv�az�r�~az�s�t�y�uaz�vaz�waz�xazv�azaz�zaz�{�|az�}azv�az�����az��az��az��az��azv�azaz����azaz����az��azv�az��������������az������az��azaz����az��azv�azaz����az��az��az��azv�azaz����������az����az��az��azv�azaz��az����az��azv�azaz����az������az��azv�az��az��azv�az��������������azaz��az����az��azv�az��az��azaz����az��azv�az��az��az��az��az��az��azv�azaz������������azaz����az��azv�azaz��az����az��azv�azaz��az��az����az��azv�az���3���������������az����az��az��azv�az��az��az��az��azv�az����az��az����az��azv�azaz��az����az��azv�az���������azaz����az��azv�az���az����az�azv�az�az�az�azv�az��az�az��	az�
azv�azaz��
��az�azv�az�az�azv�az��#az����az���az�azv�az�az�azv�az�azaz� �!az�"azv�az�$az�%�*�&azaz�'�(az�)azv�az�+�/az�,�-az�.azv�az�0az�1az�2azv�az�4�m�5�Y�6�G�7�?az�8�9�<�:az�;azv�az�=az�>azv�azaz�@�A�D�Baz�Cazv�az�Eaz�Fazv�az�H�T�I�P�J�M�Kaz�Lazv�az�Naz�Oazv�az�Qaz�Raz�Sazv�az�Uaz�Vaz�Waz�Xazv�az�Z�caz�[�\az�]�`�^az�_azv�az�aaz�bazv�azaz�d�e�iaz�f�gaz�hazv�az�jaz�kaz�lazv�az�n�u�oaz�paz�qaz�raz�saz�tazv�azaz�v�wazaz�x�yaz�zaz�{azv�az�}�z�~� �������������az��az��azaz����az��azv�azaz������az����az��az��azv�azaz��az����az��azv�az����������������az����az��azv�az������az��azv�az��az��azv�az����������az��azv�az��az��azv�az������az��azv�az��az��azv�az����az��������az��azv�az��az��azv�az������az��az��azv�azaz����az��azv�az��������������az��az��azv�az������az��azv�az��az��azv�az��az��az��az��azv�az��az��az��az��az��azv�az������������az����azaz����az��azv�azaz����az��az��az��azv�az����az����azaz����az��azv�az��az��az������az��azv�az��az��azv�az��������az���az�az�azv�azaz��az�azv�azaz�	�
azaz��az�
azv�az���azaz�az��az�azv�az���azaz��az�azv�az�azaz��az�azv�az�!�T�"�@�#�3az�$�%�*�&az�'az�(az�)azv�az�+�/�,az�-az�.azv�az�0az�1az�2azv�az�4�:�5az�6azaz�7�8az�9azv�az�;azaz�<az�=�>az�?azv�az�A�Maz�B�C�H�Dazaz�E�Faz�Gazv�az�Iaz�Jaz�Kaz�Lazv�azaz�N�Oazaz�Paz�Q�Raz�Sazv�az�Uaz�V�e�Waz�X�`�Yaz�Z�]�[az�\azv�az�^az�_azv�az�aaz�baz�caz�dazv�az�f�l�gaz�haz�iaz�jaz�kazv�az�m�raz�n�oaz�paz�qazv�az�saz�t�w�uaz�vazv�az�xaz�yazv�az�{���|���}���~���azaz��az����az��az��azv�azaz��az����azaz����az��azv�az������azaz����azaz����az��azv�azaz��az��az����az��az��azv�az��������az����az��az��az��az��azv�az��azaz����azaz����az��azv�az������azaz����az��az��az��azv�azaz��az��az��������az��azv�az��az��azv�az������������az����az��azaz����az��azv�az������az������az��az��azv�azaz����az��azv�az����az����az��az��azv�azaz��az����az��azv�azaz��az������az����az��az��azv�az��azaz����az��azv�az���	��������az��az����az��az��azv�az����az����az��az��azv�azaz����az��az��azv�azaz���az��az��az�azv�azaz��az�azv�az�
��az���
�az��az�azv�az�az�az�azv�az�azaz��az�azv�az�az�azaz�az��az� azv�az�"az�#az�$az�%�.�&azaz�'az�(az�)�*az�+az�,az�-azv�azaz�/�0az�1azaz�2az�3az�4�5az�6azv�azaz�8�9�r�:�V�;az�<az�=az�>az�?az�@az�Aaz�Baz�Caz�Daz�Eaz�Faz�Gaz�Haz�Iaz�Jaz�K�Oaz�L�Maz�Naz��az�P�S�Qaz�Raz��az�Taz�Uaz��az�Waz�Xaz�Yaz�Zaz�[az�\az�]az�^az�_az�`az�aaz�baz�caz�daz�eaz�faz�g�kaz�h�iaz�jaz��az�l�o�maz�naz��az�paz�qaz��az�s���taz�uaz�vaz�waz�xaz�yaz�zaz�{az�|az�}az�~az�az��az��az��az��az����az����az��az��az������az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az����az����az��az��az������az��az��az��az��az��az���[�������������w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w������w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w�w�w�w�w��w��0���w�w�	w�
w�w�w�
w�w�w�w�w�w�w�w�w�w�w�w�w�wSQw�w�w�w�w� w�!w�"w�#w�$w�%w�&w�'w�(w�)w�*w�+w�,w�-w�.w�/wSQw�1�F�2w�3w�4w�5w�6w�7w�8w�9w�:w�;w�<w�=w�>w�?w�@w�Aw�Bw�Cw�Dw�EwSQw�Gw�Hw�Iw�Jw�Kw�Lw�Mw�Nw�Ow�Pw�Qw�Rw�Sw�Tw�Uw�Vw�Ww�Xw�Yw�ZwSQww�\�]���^�s�_w�`w�aw�bw�cw�dw�ew�fw�gw�hw�iw�jw�kw�lw�mw�nw�ow�pw�qw�rwXw�tw�uw�vw�ww�xw�yw�zw�{w�|w�}w�~w�w��w��w��w��w��w��w��w��wXw������w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��wXw��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��wXw�������e�����������������K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���KS	�K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���KS	�K�������K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���KS	�K���K���K���K���K���K���K��K��K��K��K��K��K��K��K��K�	�K�
�K��K��K�
�KS	�K�����L��K��K��K��K��K��K��K��K��K��7��K��K��K��K��K� �/�!�(�"�%�#�K�$�Kj�K�&�K�'�Kj�K�)�,�*�K�+�Kj�K�-�K�.�Kj�K�0�K�1�4�2�K�3�Kj�K�5�K�6�Kj�K�8�B�K�9�K�:�;�K�<�K�K�=�>�K�?�K�@�K�A�Kj�K�K�C�K�D�E�K�F�K�G�K�K�H�K�I�J�K�K�Kj�K�M�K�N�K�O�K�P�K�Q�K�R�K�S�K�T�K�U�K�V�s�W�K�X�K�Y�K�Z�K�[�K�\�k�]�d�^�a�_�K�`�Kj�K�b�K�c�Kj�K�e�h�f�K�g�Kj�K�i�K�j�Kj�K�l�K�m�p�n�K�o�Kj�K�q�K�r�Kj�K�t�~�K�u�K�v�w�K�x�K�K�y�z�K�{�K�|�K�}�Kj�K�K��K�����K���K���K�K���K�����K���Kj�K�������K���K���K���K���K���K���K���K���K�������K���K���K���K���K���������������K���Kj�K���K���Kj�K�������K���Kj�K���K���Kj�K���K�������K���Kj�K���K���Kj�K�����K���K�����K���K�K�����K���K���K���Kj�K�K���K�����K���K���K�K���K�����K���Kj�K���K���K���K���K���K���K���K���K���K�������K���K���K���K���K���������������K���Kj�K���K���Kj�K�������K���Kj�K���K���Kj�K���K�������K���Kj�K���K���Kj�K�����K���K�����K���K�K�����K���K���K���Kj�K�K���K�����K���K���K�K���K�����K��Kj�K��K��4����K��K��K��K�	�K�
�K��K��K�
�K��K��K��K��K��K��K��K��K����K��KTC�K��K��KTC�K��K��K��K� �K�!�K�"�K�#�K�$�K�%�K�&�K�'�K�(�K�)�K�*�K�+�K�,�K�-�K�.�1�/�K�0�KTC�K�2�K�3�KTC�K�5�M�6�K�7�K�8�K�9�K�:�K�;�K�<�K�=�K�>�K�?�K�@�K�A�K�B�K�C�K�D�K�E�K�F�K�G�J�H�K�I�KTC�K�K�K�L�KTC�K�N�K�O�K�P�K�Q�K�R�K�S�K�T�K�U�K�V�K�W�K�X�K�Y�K�Z�K�[�K�\�K�]�K�^�K�_�b�`�K�a�KTC�K�c�K�d�KTC�K�f�)�g���h��i���j�K�k�K�l�K�m�K�n�K�o�K�p�K�q�K�r�K�s�K�t�K�u�K�v�K�w���x���y���z���{�~�|�K�}�Kw��K��K���Kw��K�������K���Kw��K���K���Kw��K�����������K���Kw��K���K���Kw��K�������K���Kw��K���K���Kw��K���������������K���Kw��K���K���Kw��K�������K���Kw��K���K���Kw��K�����������K���Kw��K���K���Kw��K�������K���Kw��K���K���Kw��K���K���K���K�������K���Kw��K���K���Kw��K���K���K���K���K���K���K���K���K���K���K���K���K���K���
�������������������K���Kw��K���K���Kw��K�������K���Kw��K���K���Kw��K�����������K���Kw��K���K���Kw��K�������K���Kw��K���K���Kw��K���������������K���Kw��K���K���Kw��K�������K���Kw��K���K���Kw��K�������K��Kw��K��K��Kw��K��
��K�	�Kw��K��K��Kw��K��K��K��K����K��Kw��K��K��Kw��K��o��K��K��K��K��K��K��K� �K�!�K�"�K�#�K�$�K�%�K�&�e�'�F�(�7�)�0�*�-�+�K�,�Kw��K�.�K�/�Kw��K�1�4�2�K�3�Kw��K�5�K�6�Kw��K�8�?�9�<�:�K�;�Kw��K�=�K�>�Kw��K�@�C�A�K�B�Kw��K�D�K�E�Kw��K�G�V�H�O�I�L�J�K�K�Kw��K�M�K�N�Kw��K�P�S�Q�K�R�Kw��K�T�K�U�Kw��K�W�^�X�[�Y�K�Z�Kw��K�\�K�]�Kw��K�_�b�`�K�a�Kw��K�c�K�d�Kw��K�f�K�g�K�h�K�i�l�j�K�k�Kw��K�m�K�n�Kw��K�p�K�q�K�r�K�s�K�t�K�u�K�v�K�w�K�x�K�y�K�z�K�{�K�|�K�}���~����������������K���Kw��K���K���Kw��K�������K���Kw��K���K���Kw��K�����������K���Kw��K���K���Kw��K�������K���Kw��K���K���Kw��K���������������K���Kw��K���K���Kw��K�������K���Kw��K���K���Kw��K�����������K���Kw��K���K���Kw��K�������K���Kw��K���K���Kw��K���K���K���K�������K���Kw��K���K���Kw��K�����������K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K�������K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K�������K���K���K���K���K���K������K���K���K���K���K���K��K��K��K��K��K��K��K��K��K�	�K�
�K����K�
�K���K��K��K���K��K��K��K��K��K��K��K��K��K��K��K��K��K��K� �K�!�K�"�K�#�&�$�K�%�K���K�'�K�(�K���K�*���+�d�,�H�-�K�.�K�/�K�0�K�1�K�2�K�3�K�4�K�5�K�6�K�7�K�8�K�9�K�:�K�;�K�<�K�=�D�>�A�?�K�@�K�L�K�B�K�C�K�L�K�E�K�F�K�G�K�L�K�I�K�J�K�K�K�L�K�M�K�N�K�O�K�P�K�Q�K�R�K�S�K�T�K�U�K�V�K�W�K�X�K�Y�`�Z�]�[�K�\�K�L�K�^�K�_�K�L�K�a�K�b�K�c�K�L�K�e���f�K�g�K�h�K�i�K�j�K�k�K�l�K�m�K�n�K�o�K�p�K�q�K�r�K�s�K�t�K�u�K�v�}�w�z�x�K�y�K�L�K�{�K�|�K�L�K�~�K��K���K�L�K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K�����������K���K�L�K���K���K�L�K���K���K���K�L�K�����������K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K��K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K��K�������K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K��K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K���K��K���a���N��b����#�����b���b���b���b���b���b��b��b��b��b��b��b��b��b��b��	b��
b��b��b��
b�RFb��b��b��b��b��b��b��b��b��b��b��b��b��b��b��b��b��b�� b��!b��"b�RFb��$�9�%b��&b��'b��(b��)b��*b��+b��,b��-b��.b��/b��0b��1b��2b��3b��4b��5b��6b��7b��8b�RFb��:b��;b��<b��=b��>b��?b��@b��Ab��Bb��Cb��Db��Eb��Fb��Gb��Hb��Ib��Jb��Kb��Lb��Mb�RFb��O���P���Q�l�Rb��Sb��Tb��Ub��Vb��Wb��Xb��Yb��Zb��[b��\b��]b��^b��_b��`�f�ab��bb��cb��db��eb��b��gb�b��hb��i�jb��kb��b��mb��nb��ob��pb��qb��rb��sb��tb��ub��vb��wb��xb��yb��zb��{���|b��}b��~b��b���b��b���b�b���b�����b���b��b�������b���b���b���b���b���b���b���b���b���b���b���b���b���b�������b���b���b���b���b��b���b�b���b�����b���b��b���b���b���b���b���b���b���b���b���b���b���b���b���b���b�������b���b���b���b���b��b���b�b���b�����b���b��b����������b���b���b���b���b���b���b���b���b���b���b�������b���b���b���b�����������b���b��Mb���b���b��Mb�������b���b��Mb���b���b��Mb���b���b�b���b���b���b�����b���b��Mb���b���b���b���b���b���b���b���b���b���b���b������b���b���b���b����������b���b��Mb���b���b��Mb����b��b��Mb��b��b��Mb��b��	b�b��
b��b��b��
�b��b��Mb���9�b��b��b��b��b��b��b��b��b��b��b���0�b��b�� b��!b��"�)�#�&�$b��%b��Mb��'b��(b��Mb��*�-�+b��,b��Mb��.b��/b��Mb��1b��2b�b��3b��4b��5b��6�7b��8b��Mb��:b��;b��<b��=b��>b��?b��@b��Ab��Bb��Cb��Db��E�X�Fb��Gb��Hb��Ib��J�Q�K�N�Lb��Mb��Mb��Ob��Pb��Mb��R�U�Sb��Tb��Mb��Vb��Wb��Mb��Yb��Zb�b��[b��\b��]b��^�_b��`b��Mb��b��b��c�d���e�z�fb��gb��hb��ib��jb��kb��lb��mb��nb��ob��pb��qb��rb��sb��tb��ub��vb��wb��xb��yb���b��{b��|b��}b��~b��b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b�������b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b����:����������b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b�����������b���b��"b���b���b��"b�������b���b��"b���b���b��"b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b�����������b���b��"b���b���b��"b�������b���b��"b���b���b��"b������b���b���b��b��b��b��b��b��b��b��b��b��	b��
b��b��b��
����b��b��"b��b��b��"b����b��b��"b��b��b��"b��b��b��b��b�� b��!b��"b��#b��$b��%b��&b��'b��(b��)b��*b��+b��,�3�-�0�.b��/b��"b��1b��2b��"b��4�7�5b��6b��"b��8b��9b��"b��;�f�<�Q�=b��>b��?b��@b��Ab��Bb��Cb��Db��Eb��Fb��Gb��Hb��Ib��Jb��Kb��Lb��Mb��Nb��Ob��Pb��b��Rb��Sb��Tb��Ub��Vb��Wb��Xb��Yb��Zb��[b��\b��]b��^b��_b��`b��ab��bb��cb��db��eb��b��g�|�hb��ib��jb��kb��lb��mb��nb��ob��pb��qb��rb��sb��tb��ub��vb��wb��xb��yb��zb��{b��b��}b��~b��b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b���b��b�������	�������������������������az��az��az��az��az��az��az��az��az��az��az��az������az��az��az������az��az��az�az��az��az��az�az��azaz����azaz��az����az��az�az��az��az��az��az��az��az��az��az��az��az��az��az������az��az��az������az��az��az�az��az��az��az�az��azaz����azaz��az����az��az�az������az��az��az��az��az��az��az��az��az��az��az��az������az��az��az������az��az��az�az��az��az��az�az��azaz����azaz��az����az��az�az��az��az�az�az�az�az�az�az�az�az�az�	az�
��az�az�
az���az�az�az�az�az�az�az�az�azaz��azaz�az��az�az�az��f� �C�!az�"az�#az�$az�%az�&az�'az�(az�)az�*�8�+az�,az�-az�.az�/az�0az�1az�2�5�3az�4az�;az�6az�7az�;azaz�9�:az�;azaz�<az�=�>azaz�?�@az�Aaz�Baz�;az�Daz�Eaz�Faz�Gaz�Haz�Iaz�Jaz�Kaz�Laz�M�[�Naz�Oaz�Paz�Qaz�Raz�Saz�Taz�U�X�Vaz�Waz�;az�Yaz�Zaz�;azaz�\�]az�^azaz�_az�`�aazaz�b�caz�daz�eaz�;az�g���haz�iaz�jaz�kaz�laz�maz�naz�oaz�paz�q��raz�saz�taz�uaz�vaz�waz�xaz�y�|�zaz�{az�;az�}az�~az�;azaz����az��azaz��az����azaz����az��az��az�;az��az��az��az��az��az��az��az��az��az������az��az��az��az��az��az��az������az��az�;az��az��az�;azaz����az��azaz��az����azaz����az��az��az�;az���U���������az��az��az��az��az��az��az��az��az��az������az��az��az��az��az����������az��az��az��az��az��az������az��az��az��az��az��azaz��az����azaz��az����az��az��az��az��az��az��az��az��az��az��az��az��az��az��az������az��az��az��az��az����������az��az��az��az��az��az������az��az��az��az��az��azaz��az����azaz��az����az��az�az�az��az��,�az�az�az�az�az�	az�
az�az�az�
az��"�az�az�az�az�az�����az�az��az�az�az��az���az�az��az� az�!az��azaz�#az�$�%azaz�&az�'�(az�)az�*az�+az��az�-az�.az�/az�0az�1az�2az�3az�4az�5az�6az�7�K�8az�9az�:az�;az�<az�=�D�>�A�?az�@az��az�Baz�Caz��az�E�H�Faz�Gaz��az�Iaz�Jaz��azaz�Laz�M�Nazaz�Oaz�P�Qaz�Raz�Saz�Taz��az�V���W�u�Xaz�Yaz�Zaz�[az�\az�]az�^az�_az�`az�aaz�baz�c�l�daz�eaz�faz�gaz�haz�iaz�jaz�kaz�azaz�maz�naz�o�pazaz�qaz�r�saz�taz�az�vaz�waz�xaz�yaz�zaz�{az�|az�}az�~az�az��az������az��az��az��az��az��az��az��az�azaz��az��az����azaz��az����az��az�az������az��az��az��az��az��az��az��az��az��az��az������az��az��az��az��az��az��az��az�azaz��az��az����azaz��az����az��az�az��az��az��az��az��az��az��az��az��az��az��az������az��az��az��az��az��az��az��az�azaz��az��az����azaz��az����az��az�az���Q��az���������az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az����������az��azwFaz��az��azwFaz������az��azwFaz��az��azwFaz��az��az��az��az��az��az��az��az��az��az��az��az�az�az�az�az�����az�azwFaz�	az�
azwFaz���
az�azwFaz�az�azwFaz��2�az�az�az�az�az�az�az�az�az�az�az�az� az�!az�"az�#az�$�+�%�(�&az�'azwFaz�)az�*azwFaz�,�/�-az�.azwFaz�0az�1azwFaz�3az�4az�5az�6az�7az�8az�9az�:az�;az�<az�=az�>az�?az�@az�Aaz�Baz�C�J�D�G�Eaz�FazwFaz�Haz�IazwFaz�K�N�Laz�MazwFaz�Oaz�PazwFaz�R���S�~�T�i�Uaz�Vaz�Waz�Xaz�Yaz�Zaz�[az�\az�]az�^az�_az�`az�aaz�baz�caz�daz�eaz�faz�gaz�haz��az�jaz�kaz�laz�maz�naz�oaz�paz�qaz�raz�saz�taz�uaz�vaz�waz�xaz�yaz�zaz�{az�|az�}az��az�����az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az�������,��az��az��az��az��az��az��az��az�����az��az��az��az����������������������az��azwaz��az��azwaz������az��azwaz��az��azwaz����������az��azwaz��az��azwaz������az��azwaz��az��azwaz��������������az��azwaz��az��azwaz������az��azwaz��az��azwaz����������az��azwaz��az��azwaz������az��azwaz��az��azwaz��az���	���������az��azwaz�az�azwaz���az�azwaz�az�azwaz�
��az�az�
azwaz���az�azwaz�az�azwaz��!�az�azaz��az�azaz�az�az��az� azwazaz�"�#az�$azaz�%�&azaz�'�(azaz�)�*az�+azwaz�-az�.az�/az�0az�1az�2az�3az�4az�5���6az�7az�8az�9az�:�y�;�Z�<�K�=�D�>�A�?az�@azwaz�Baz�Cazwaz�E�H�Faz�Gazwaz�Iaz�Jazwaz�L�S�M�P�Naz�Oazwaz�Qaz�Razwaz�T�W�Uaz�Vazwaz�Xaz�Yazwaz�[�j�\�c�]�`�^az�_azwaz�aaz�bazwaz�d�g�eaz�fazwaz�haz�iazwaz�k�r�l�o�maz�nazwaz�paz�qazwaz�s�v�taz�uazwaz�waz�xazwaz�zaz�{���|���}���~az�azwaz��az��azwaz������az��azwaz��az��azwaz������az��az��azwaz������az��azwaz��az��azwaz������az��azaz����az��azaz��az��az����az��azwazaz����az��azaz����azaz����azaz����az��azwaz���/��az��az��az��az��az��az��az��az�����az��az��az��az����������������������az��azwaz��az��azwaz������az��azwaz��az��azwaz����������az��azwaz��az��azwaz������az��azwaz��az��azwaz��������������az��azwaz��az��azwaz������az��azwaz��az��azwaz����������az��azwaz��az��azwaz������az��azwaz��az��azwaz��az����������az�azwaz�az�azwaz��	�az�azwaz�
az�azwaz�
��az�az�azwaz���az�azwaz�az�azwaz��$�az�azaz��az�azaz�az� az�!�"az�#azwazaz�%�&az�'azaz�(�)azaz�*�+azaz�,�-az�.azwaz�0az�1az�2az�3az�4az�5az�6az�7az�8���9az�:az�;az�<az�=�|�>�]�?�N�@�G�A�D�Baz�Cazwaz�Eaz�Fazwaz�H�K�Iaz�Jazwaz�Laz�Mazwaz�O�V�P�S�Qaz�Razwaz�Taz�Uazwaz�W�Z�Xaz�Yazwaz�[az�\azwaz�^�m�_�f�`�c�aaz�bazwaz�daz�eazwaz�g�j�haz�iazwaz�kaz�lazwaz�n�u�o�r�paz�qazwaz�saz�tazwaz�v�y�waz�xazwaz�zaz�{azwaz�}az�~�����������az��azwaz��az��azwaz������az��azwaz��az��azwaz������az��az��azwaz������az��azwaz��az��azwaz������az��azaz����az��azaz��az��az����az��azwazaz����az��azaz����azaz����azaz����az��azwaz���������kX����������kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX������kX��kXV�kX��kX��kXV�kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX������kX��kXV�kX��kX��kXV�kX������kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX������kX��kXV�kX��kX��kXV�kX��kX�kX�kX�kX�kX�kX�kX�kX�kX�kX�	kX�
kX�kX�kX�
kX�kX�kX���kX�kXV�kX�kX�kXV�kX�–��W��8�kX�kX�kX�kX�kX�kX� kX�!kX�"kX�#kX�$kX�%kX�&kX�'kX�(kX�)kX�*�1�+�.�,kX�-kXwckX�/kX�0kXwckX�2�5�3kX�4kXwckX�6kX�7kXwckX�9kX�:kX�;kX�<kX�=kX�>kX�?kX�@kX�AkX�BkX�CkX�DkX�EkX�FkX�GkX�HkX�I�P�J�M�KkX�LkXwckX�NkX�OkXwckX�Q�T�RkX�SkXwckX�UkX�VkXwckX�X�w�YkX�ZkX�[kX�\kX�]kX�^kX�_kX�`kX�akX�bkX�ckX�dkX�ekX�fkX�gkX�hkX�i�p�j�m�kkX�lkXwckX�nkX�okXwckX�q�t�rkX�skXwckX�ukX�vkXwckX�xkX�ykX�zkX�{kX�|kX�}kX�~kX�kX€kXkX‚kXƒkX„kX…kX†kX‡kXˆ‰ŒŠkX‹kXwckXkXŽkXwckX“‘kX’kXwckX”kX•kXwckX—��˜­™kXškX›kXœkXkXžkXŸkX kX¡kX¢kX£kX¤kX¥kX¦kX§kX¨kX©kXªkX«kX¬kX��kX®kX¯kX°kX±kX²kX³kX´kXµkX¶kX·kX¸kX¹kXºkX»kX¼kX½kX¾kX¿kX�kX�kX��kX������kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��ñ���F��������kX��kX��kX�kX�kX�kX�kX�kX�kX�kX�kX�kX�kX�kX�kX�kX�kX�kX�kX�kX�	kX�kX�kX�	kX�
kX�kX�kX�
kX�kX�kX�kX�kX�kX�kX�kX�kX�kX�kX�kX�kX�kX�	kX��1�kX�kX�kX� kX�!kX�"kX�#kX�$kX�%kX�&kX�'kX�(kX�)kX�*kX�+kX�,kX�-kX�.kX�/kX�0kX�	kX�2kX�3kX�4kX�5kX�6kX�7kX�8kX�9kX�:kX�;kX�<kX�=kX�>kX�?kX�@kX�AkX�BkX�CkX�DkX�EkX�	kX�G�|�H�b�IkX�JkX�KkX�LkX�MkX�NkX�OkX�PkX�QkX�RkX�SkX�TkX�UkX�VkX�WkX�X�]�YkXkX�Z�[kX�\kXR�kXkX�^kX�_�`kX�akXR�kX�ckX�dkX�ekX�fkX�gkX�hkX�ikX�jkX�kkX�lkX�mkX�nkX�okX�pkX�qkX�r�w�skXkX�t�ukX�vkXR�kXkX�xkX�y�zkX�{kXR�kX�}×�~kX�kXÀkXÁkXÂkXÃkXÄkXÅkXÆkXÇkXÈkXÉkXÊkXËkXÌkXÍÒÎkXkXÏÐkXÑkXR�kXkXÓkXÔÕkXÖkXR�kXØkXÙkXÚkXÛkXÜkXÝkXÞkXßkXàkXákXâkXãkXäkXåkXækXçìèkXkXéêkXëkXR�kXkXíkXîïkXðkXR�kXòkXó��ô��õkXökX÷kXøkXùkXúkXûkXükXýkXþkXÿkX�kX�kX��kX��kX��kX��kX��kX��kX��kX�kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX�kX������kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX��kX�kX�kX�kX�kX�kX�kX�kX�kX�kX�kX�kX�kX�kX�kX�kX�kX�kX�kX�kX�kX�kX�kX�
Ǝ����d�
gC��9��$�gC�gC�gC�gC�gC�gC�gC�gC�gC�gC�gC�gC�gC�gC�gC�gC� gC�!gC�"gC�#gCT%gC�%gC�&gC�'gC�(gC�)gC�*gC�+gC�,gC�-gC�.gC�/gC�0gC�1gC�2gC�3gC�4gC�5gC�6gC�7gC�8gCT%gC�:�O�;gC�<gC�=gC�>gC�?gC�@gC�AgC�BgC�CgC�DgC�EgC�FgC�GgC�HgC�IgC�JgC�KgC�LgC�MgC�NgCT%gC�PgC�QgC�RgC�SgC�TgC�UgC�VgC�WgC�XgC�YgC�ZgC�[gC�\gC�]gC�^gC�_gC�`gC�agC�bgC�cgCT%gC�eļ�fđ�g�|�hgC�igC�jgC�kgC�lgC�mgC�ngC�ogC�pgC�qgC�rgC�sgC�tgC�ugC�vgC�wgC�xgC�ygC�zgC�{gC�gC�}gC�~gC�gCĀgCāgCĂgCăgCĄgCągCĆgCćgCĈgCĉgCĊgCċgCČgCčgCĎgCďgCĐgC�gCĒħēgCĔgCĕgCĖgCėgCĘgCęgCĚgCěgCĜgCĝgCĞgCğgCĠgCġgCĢgCģgCĤgCĥgCĦgC�gCĨgCĩgCĪgCīgCĬgCĭgCĮgCįgCİgCıgCIJgCijgCĴgCĵgCĶgCķgCĸgCĹgCĺgCĻgC�gCĽ��ľ��ĿgC�gC�gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC�"gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC�"gC�����gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC�gC�gC�gC�gC�gC�gC�gC�gC�gC�"gC�gC�gC�gC�gC�gC�gC�gC�gC�gC�gC�	gC�
gC�gC�gC�
gC�gC�gC�gC�gC�gC�"gC�����l��A��,�gC�gC�gC�gC�gC�gC�gC�gC� gC�!gC�"gC�#gC�$gC�%gC�&gC�'gC�(gC�)gC�*gC�+gCF�gC�-gC�.gC�/gC�0gC�1gC�2gC�3gC�4gC�5gC�6gC�7gC�8gC�9gC�:gC�;gC�<gC�=gC�>gC�?gC�@gCF�gC�B�W�CgC�DgC�EgC�FgC�GgC�HgC�IgC�JgC�KgC�LgC�MgC�NgC�OgC�PgC�QgC�RgC�SgC�TgC�UgC�VgCF�gC�XgC�YgC�ZgC�[gC�\gC�]gC�^gC�_gC�`gC�agC�bgC�cgC�dgC�egC�fgC�ggC�hgC�igC�jgC�kgCF�gC�mŘ�nŃ�ogC�pgC�qgC�rgC�sgC�tgC�ugC�vgC�wgC�xgC�ygC�zgC�{gC�|gC�}gC�~gC�gCŀgCŁgCłgCgCńgCŅgCņgCŇgCňgCʼngCŊgCŋgCŌgCōgCŎgCŏgCŐgCőgCŒgCœgCŔgCŕgCŖgCŗgCgCřŮŚgCśgCŜgCŝgCŞgCşgCŠgCšgCŢgCţgCŤgCťgCŦgCŧgCŨgCũgCŪgCūgCŬgCŭgCgCůgCŰgCűgCŲgCųgCŴgCŵgCŶgCŷgCŸgCŹgCźgCŻgCżgCŽgCžgCſgC�gC�gC��gCgC���7���������gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC����������gC��gCgC��gC��gCgC��gC��gC��gCgC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC��gC�������gC�gCgC�gC�gCgC�gC�gC�gCgC���gC�gC�gC�gC�gC�gC�gC�gC�gC�	gC�
gC�gC�gC�
gC�gC�gC�����gC�gCgC�gC�gCgC�gC�gC�gCgC�gC�gC�gC�gC� gC�!gC�"gC�#gC�$gC�%gC�&gC�'gC�(gC�)gC�*gC�+gC�,�3�-�0�.gC�/gCgC�1gC�2gCgC�4gC�5gC�6gCgC�8�c�9�N�:gC�;gC�<gC�=gC�>gC�?gC�@gC�AgC�BgC�CgC�DgC�EgC�FgC�GgC�HgC�IgC�JgC�KgC�LgC�MgC�&gC�OgC�PgC�QgC�RgC�SgC�TgC�UgC�VgC�WgC�XgC�YgC�ZgC�[gC�\gC�]gC�^gC�_gC�`gC�agC�bgC�&gC�d�y�egC�fgC�ggC�hgC�igC�jgC�kgC�lgC�mgC�ngC�ogC�pgC�qgC�rgC�sgC�tgC�ugC�vgC�wgC�xgC�&gC�zgC�{gC�|gC�}gC�~gC�gCƀgCƁgCƂgCƃgCƄgCƅgCƆgCƇgCƈgCƉgCƊgCƋgCƌgCƍgC�&gCƏ�2ƐǃƑ�,ƒ��ƓƹƔazƕazƖazƗazƘazƙazƚazƛazƜazƝazƞƯƟazƠazơazƢazƣazƤƫƥƨƦazƧaz�4azƩazƪaz�4azƬazƭazƮaz�4azưazazƱƲazƳazazƴazƵƶazƷazƸaz�4azƺazƻazƼazƽazƾazƿaz�az�az��az��az������az��az��az��az��az����������az��az�4az��az��az�4az��az��az��az�4az��azaz����az��azaz��az����az��az��az�4az�����az��az��az��az��az��az��az��az��az��az�����az��az��az��az��az��������az��az�4az�az�az�4az�az�az�az�4az�azaz��az�azaz�az��az�az�az�4az�az�az�	az�
az�az�az�
az�az�az�az��"�az�az�az�az�az�����az�az�4az�az�az�4az�az� az�!az�4az�#azaz�$�%az�&azaz�'az�(�)az�*az�+az�4az�-�X�.�C�/az�0az�1az�2az�3az�4az�5az�6az�7az�8az�9az�:az�;az�<az�=azaz�>az�?az�@�Aaz�BazS4az�Daz�Eaz�Faz�Gaz�Haz�Iaz�Jaz�Kaz�Laz�Maz�Naz�Oaz�Paz�Qaz�Razaz�Saz�Taz�U�Vaz�WazS4az�Y�n�Zaz�[az�\az�]az�^az�_az�`az�aaz�baz�caz�daz�eaz�faz�gaz�hazaz�iaz�jaz�k�laz�mazS4az�oaz�paz�qaz�raz�saz�taz�uaz�vaz�waz�xaz�yaz�zaz�{az�|az�}azaz�~az�azǀǁazǂazS4azDŽ��DžǰdžǛLJazLjazljazNJazNjaznjazǍazǎazǏazǐazǑazǒazǓazǔazǕazǖazǗazǘazǙazǚaz5azǜazǝazǞazǟazǠazǡazǢazǣazǤazǥazǦazǧazǨazǩazǪazǫazǬazǭazǮazǯaz5azDZ��DzazdzazǴazǵazǶazǷazǸazǹazǺazǻazǼazǽazǾazǿaz�az�az��az��az��az��az5az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az5az���������az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az�az��az��az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az���	az�
az�az�az�
az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az� az�!az�"az�#az�$az�%az�&az�'az�(az�)az�*az�+az�,az�-az�.az�/az�0az�1az�az�3ȋ�4���5�`�6�K�7���8���9���:���;���<���=���>���?���@���A���B���C���D���E���F���G���H���I���J���B���L���M���N���O���P���Q���R���S���T���U���V���W���X���Y���Z���[���\���]���^���_���B���a�v�b���c���d���e���f���g���h���i���j���k���l���m���n���o���p���q���r���s���t���u���B���w���x���y���z���{���|���}���~�����Ȁ��ȁ��Ȃ��ȃ��Ȅ��ȅ��Ȇ��ȇ��Ȉ��ȉ��Ȋ���B��azȌȍ��ȎȮȏazȐazȑazȒazȓazȔazȕazȖazȗazȘazșazȚazțȦȜazȝazȞazȟazȠȣȡazȢaz�&azȤazȥaz�&azȧazȨazazȩȪazazȫȬazȭaz�&azȯazȰazȱazȲazȳazȴazȵazȶazȷazȸazȹazȺazȻ��ȼazȽazȾazȿaz����az��az�&az��az��az�&az��az��azaz����azaz����az��az�&az������az��az��az��az��az��az��az��az��az��az��az��az������az��az��az��az������az��az�&az��az��az�&az��az��azaz����azaz����az��az�&az��az��az��az��az��az�az�az�az�az�az�az�az���az�az�az�az���az�az�&az�az�az�&az�az�	azaz�
�azaz��
az�az�&az��-��^��&�����w��F��.�w�w�w�w�w�w�w�w�w� ww�!�"w�#w�$w�%w�&w�'w�(�+�)w�*w�w�,w�-w�w�/w�0w�1w�2w�3w�4w�5w�6w�7w�8ww�9�:w�;w�<w�=w�>w�?w�@�C�Aw�Bw�w�Dw�Ew�w�G�_�Hw�Iw�Jw�Kw�Lw�Mw�Nw�Ow�Pw�Qww�R�Sw�Tw�Uw�Vw�Ww�Xw�Y�\�Zw�[w�w�]w�^w�w�`w�aw�bw�cw�dw�ew�fw�gw�hw�iww�j�kw�lw�mw�nw�ow�pw�q�t�rw�sw�w�uw�vw�w�xɣ�yɎ�zw�{w�|w�}w�~w�wɀwɁwɂwɃwɄwɅwɆwɇwɈwɉwɊwɋwɌwɍw�wɏwɐwɑwɒwɓwɔwɕwɖwɗwɘwəwɚwɛwɜwɝwɞwɟwɠwɡwɢw�wɤɹɥwɦwɧwɨwɩwɪwɫwɬwɭwɮwɯwɰwɱwɲwɳwɴwɵwɶwɷwɸw�wɺwɻwɼwɽwɾwɿw�w�w��w��w��w��w��w��w��w��w��w��w��w��w�w��w���������w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w�w��w��w��w��w��w��w��w��w��w��w��w��w��w��w�w�w�w�w�w�w�w���w�w�w�w�w�w�w�w�w�w�w�w�	w�
w�w�w�
w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w� w�!w�"w�#w�$w�%w�w�'ʣaz�(�)�f�*�H�+az�,az�-az�.az�/az�0az�1az�2az�3az�4az�5az�6az�7az�8az�9�B�:az�;az�<�?�=az�>az�4az�@az�Aaz�4azaz�C�Daz�Eaz�Faz�Gaz�4az�Iaz�Jaz�Kaz�Laz�Maz�Naz�Oaz�Paz�Qaz�Raz�Saz�Taz�Uaz�Vaz�W�`�Xaz�Yaz�Z�]�[az�\az�4az�^az�_az�4azaz�a�baz�caz�daz�eaz�4az�gʅ�haz�iaz�jaz�kaz�laz�maz�naz�oaz�paz�qaz�raz�saz�taz�uaz�v��waz�xaz�y�|�zaz�{az�4az�}az�~az�4azazʀʁazʂazʃazʄaz�4azʆazʇazʈazʉazʊazʋazʌazʍazʎazʏazʐazʑazʒazʓazʔʝʕazʖazʗʚʘazʙaz�4azʛazʜaz�4azazʞʟazʠazʡazʢaz�4azʤ�ʥ��ʦʾʧazʨazʩazʪazʫazʬazʭazʮazʯazʰazʱazʲazʳazʴazʵazʶazʷazʸʻʹazʺaza�azʼazʽaza�azʿaz�az�az��az��az��az��az��az��az��az��az��az��az��az��az��az��az������az��aza�az��az��aza�az������az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az������az��aza�az��az��aza�az��az��az��az��az��az�az�az�az�az�az�az�az�az�az�az�az�az���az�aza�az�az�aza�az��3�	��
az�az�az�
az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�azSCaz�az� az�!az�"az�#az�$az�%az�&az�'az�(az�)az�*az�+az�,az�-az�.az�/az�0az�1az�2azSCaz�4�I�5az�6az�7az�8az�9az�:az�;az�<az�=az�>az�?az�@az�Aaz�Baz�Caz�Daz�Eaz�Faz�Gaz�HazSCaz�Jaz�Kaz�Laz�Maz�Naz�Oaz�Paz�Qaz�Raz�Saz�Taz�Uaz�Vaz�Waz�Xaz�Yaz�Zaz�[az�\az�]azSCaz�_��`��au��b˭�cˈ�du��eu��fu��gu��hu��iu��ju��ku��lu��mu��nu��o��pu��qu��ru��su��t�{�u�x�vu��wu��u��yu��zu��u��|u��}u��~u��u�ˀu�u�ˁu�˂˃u�u�˄˅u�ˆu�ˇu��u�ˉu�ˊu�ˋu�ˌu�ˍu�ˎu�ˏu�ːu�ˑu�˒u�˓u�˔ˤ˕u�˖u�˗u�˘u�˙ˠ˚˝˛u�˜u��u�˞u�˟u��u�ˡu�ˢu�ˣu��u�˥u�u�˦u�˧˨u�u�˩˪u�˫u�ˬu��u�ˮ��˯u�˰u�˱u�˲u�˳u�˴u�˵u�˶u�˷u�˸u�˹u�˺��˻u�˼u�˽u�˾u�˿������u���u��u���u���u��u���u���u���u��u���u�u���u�����u�u�����u���u���u��u���u���u���u���u���u���u���u���u���u���u���u�������u���u���u���u�����������u���u��u���u���u��u���u���u���u��u���u�u���u�����u�u����u��u��u��u�v�v���R�u���'���u��u��u��u��u��u��u��u��u��u��u��	u��
u��u��u��
u��u��u��u��u�"�u��u��u��u��u��u��u��u��u��u��u��u��u��u�� u��!u��"u��#u��$u��%u��&u�"�u��(�=�)u��*u��+u��,u��-u��.u��/u��0u��1u��2u��3u��4u��5u��6u��7u��8u��9u��:u��;u��<u�"�u��>u��?u��@u��Au��Bu��Cu��Du��Eu��Fu��Gu��Hu��Iu��Ju��Ku��Lu��Mu��Nu��Ou��Pu��Qu�"�u��S̪�T��U�j�Vu��Wu��Xu��Yu��Zu��[u��\u��]u��^u��_u��`u��au��bu��cu��du��eu��fu��gu��hu��iu�Tzu��ku��lu��mu��nu��ou��pu��qu��ru��su��tu��uu��vu��wu��xu��yu��zu��{u��|u��}u��~u�Tzu�̀́̕u�̂u�̃u�̄u�̅u�̆u�̇u�̈u�̉u�̊u�̋u�̌u�̍u�̎u�̏u�̐u�̑u�̒u�̓u�̔u�Tzu�̖u�̗u�̘u�̙u�̚u�̛u�̜u�̝u�̞u�̟u�̠u�̡u�̢u�̣u�̤u�̥u�̦u�̧u�̨u�̩u�Tzu�̫�l̬�̭u�̮u�̯u�̰u�̱u�̲u�̳u�̴u�̵u�̶�̷u�̸�̹��̺u�̻��̼��̽��̾�̿u��u�pu���u���u�pu�������u���u�pu���u���u�pu�����������u���u�pu���u���u�pu�������u���u�pu���u���u�pu���������������u���u�pu���u���u�pu���u���u���u�pu�������u���u���u�pu���u���u���u�pu�u���u�����u�u����u��u��u�pu��u�u��u��u��u��u���u��u�pu��u��u�u���u�u��u��u��u��	�
u��u�pu��
u��u��u��u��u��u��u��u��u���a�u���X��P�u���:��+��$��!�u�� u�pu��"u��#u�pu��%�(�&u��'u�pu��)u��*u�pu��,�3�-�0�.u��/u�pu��1u��2u�pu��4�7�5u��6u�pu��8u��9u�pu��;�G�<�C�=�@�>u��?u�pu��Au��Bu�pu��Du��Eu��Fu�pu��H�L�Iu��Ju��Ku�pu��Mu��Nu��Ou�pu�u��Qu��R�Su�u��T�Uu��Vu��Wu�pu��Yu�u��Zu��[u��\u��]u��^�_u��`u�pu��bu��cu�u��d�eu�u��fu��gu��hu��i�ju��ku�pu��m���nu��ou��pu��qu��ru��su��tu��uu��vu��w���xu��y͹�zͱ�{u��|͛�}͌�~ͅ�͂̀u�́u�pu�̓u�̈́u�pu�͉͇͆u�͈u�pu�͊u�͋u�pu�͍͔͎͑͏u�͐u�pu�͒u�͓u�pu�͕͖͘u�͗u�pu�͙u�͚u�pu�ͨͤ͜͟͝͞͡u�͠u�pu�͢u�ͣu�pu�ͥu�ͦu�ͧu�pu�ͩͭͪu�ͫu�ͬu�pu�ͮu�ͯu�Ͱu�pu�u�Ͳu�ͳʹu�u�͵Ͷu�ͷu�͸u�pu�ͺu�u�ͻu�ͼu�ͽu�;u�Ϳ�u��u�pu���u���u�u�����u�u���u���u���u�����u���u�pu���u���u���u���u���u���u���u���u���u����"��u���������u������������������u���u�pu���u���u�pu�������u���u�pu���u���u�pu�����������u���u�pu���u���u�pu����u��u�pu��u��u�pu��������u��u�pu��u��u�pu��u��u��u�pu��	�
�
u��u��u�pu��u��u��u�pu�u��u���u�u���u��u��u�pu��u�u��u��u��u��u��� u��!u�pu��#u��$u�u��%�&u�u��'u��(u��)u��*�+u��,u�pu��.Ѳ�/Ѝ�0�+�1Τ�2�k�3�O�4az�5az�6az�7az�8az�9az�:az�;az�<az�=az�>az�?az�@az�Aaz�Baz�Caz�D�H�Eaz�Faz�GazV�az�I�L�Jaz�KazV�az�Maz�NazV�az�Paz�Qaz�Raz�Saz�Taz�Uaz�Vaz�Waz�Xaz�Yaz�Zaz�[az�\az�]az�^az�_az�`�d�aaz�baz�cazV�az�e�h�faz�gazV�az�iaz�jazV�az�lΈ�maz�naz�oaz�paz�qaz�raz�saz�taz�uaz�vaz�waz�xaz�yaz�zaz�{az�|az�}΁�~az�az΀azV�az΂΅΃az΄azV�azΆaz·azV�azΉazΊaz΋azΌaz΍azΎazΏazΐazΑazΒazΓazΔazΕazΖazΗazΘazΙΝΚazΛazΜazV�azΞΡΟazΠazV�az΢azΣazV�azΥ��Φ��ΧazΨazΩazΪazΫazάazέazήazίazΰazαazβazγazδazεazζ��ηξθλιazκaz�azμazνaz�azοaz�az�az�az��az��az��az��az�az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��������������az��az�az��az��az�az��az��az��az�az��az��az��az��az�az���
��az��az��az��az��az��az��az��az��az��az��az�az�az�az�az�������az�az�az�az�az�az�az�az�az�az�az�az�az�	az�az�az�az�
az�az�az�az�az�az�az�az�az�az�az�az�az��&��"���az�az�az� az�!az�az�#az�$az�%az�az�'az�(az�)az�*az�az�,�6�-v��.ϲ�/az�0az�1az�2az�3az�4az�5az�6az�7Ϧ�8ϛ�9ϑ�:az�;az�<�x�=�Y�>�M�?�F�@�C�Aaz�Bazv�az�Daz�Eazv�az�G�J�Haz�Iazv�az�Kaz�Lazv�az�N�Raz�O�Paz�Qazv�az�S�V�Taz�Uazv�az�Waz�Xazv�az�Z�i�[�b�\�_�]az�^azv�az�`az�aazv�az�c�f�daz�eazv�az�gaz�hazv�az�j�q�k�n�laz�mazv�az�oaz�pazv�az�r�u�saz�tazv�az�vaz�wazv�az�yaz�zω�{ς�|��}az�~azv�azπazρazv�azσφτazυazv�azχazψazv�azϊazϋώόazύazv�azϏazϐazv�azazϒϓazazϔϕazϖazϗazϘazϙazϚazv�azϜazϝazϞazazϟazϠϡazazϢazϣϤazϥazv�azϧazϨazϩazazϪazϫϬazϭazazϮazϯϰazϱazv�azϳazϴazϵaz϶azϷazϸazϹazϺazϻ�*ϼ�Ͻ�ϾazϿaz�������������������az��azv�az��az��azv�az������az��azv�az��az��azv�az����az����az��azv�az������az��azv�az��az��azv�az��������������az��azv�az��az��azv�az������az��azv�az��az��azv�az���������az��azv�az��az��azv�az���az�azv�az�az�azv�az�az��
�����az�azv�az�az�azv�az��
�az�	azv�az�az�azv�az�az���az�azv�az�az�azv�azaz��azaz��az�az�az�az�az�azv�az� az�!az�"azaz�#az�$�%azaz�&az�'�(az�)azv�az�+az�,az�-azaz�.az�/�0az�1azaz�2az�3�4az�5azv�az�7�b�8�M�9az�:az�;az�<az�=az�>az�?az�@az�Aaz�Baz�Caz�Daz�Eaz�Faz�Gaz�Haz�Iaz�Jaz�Kaz�Laz�1az�Naz�Oaz�Paz�Qaz�Raz�Saz�Taz�Uaz�Vaz�Waz�Xaz�Yaz�Zaz�[az�\az�]az�^az�_az�`az�aaz�1az�c�x�daz�eaz�faz�gaz�haz�iaz�jaz�kaz�laz�maz�naz�oaz�paz�qaz�raz�saz�taz�uaz�vaz�waz�1az�yaz�zaz�{az�|az�}az�~az�azЀazЁazЂazЃazЄazЅazІazЇazЈazЉazЊazЋazЌaz�1azЎ��Џ�0АлБЦВazГazДazЕazЖazЗazИazЙazКazЛazМazНazОazПazРazСazТazУazФazХaz�azЧazШazЩazЪazЫazЬazЭazЮazЯazаazбazвazгazдazеazжazзazиazйazкaz�azм��нazоazпaz�az�az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az�az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az�azv������M�����v���v���v���v���v���v���v���v���v���v�����v��v��v��v��v������v��v���v��v��v���v����v��v���v��v��v���v��	��
v�v��v���
v�v��v���v��v���v��v�v���v��v��v��v��v��v���v��v��v��v��v�� v��!v��"v��#v��$v��%v��&�:�'v��(v��)v��*v��+v��,�3�-�0�.v��/v���v��1v��2v���v��4�7�5v��6v���v��8v��9v���v��;�D�<v�v��=v��>�?v�v��@v��A�Bv��Cv���v��Ev�v��F�Gv��Hv��Iv��Jv��Kv��Lv���v��Nр�Ov��Pv��Qv��Rv��Sv��Tv��Uv��Vv��Wv��Xv��Y�m�Zv��[v��\v��]v��^v��_�f�`�c�av��bv���v��dv��ev���v��g�j�hv��iv���v��kv��lv���v��n�w�ov�v��pv��q�rv�v��sv��t�uv��vv���v��xv�v��y�zv��{v��|v��}v��~v��v���v�сv�тv�уv�фv�хv�цv�чv�шv�щv�ъv�ыџьv�эv�юv�яv�ѐv�ёјђѕѓv�єv���v�іv�їv���v�љќњv�ћv���v�ѝv�ўv���v�Ѡѩѡv�v�Ѣv�ѣѤv�v�ѥv�Ѧѧv�Ѩv���v�Ѫv�v�ѫѬv�ѭv�Ѯv�ѯv�Ѱv�ѱv���v�ѳ�>Ѵ�cѵ�Ѷ��ѷ��ѸazѹazѺazѻazѼazѽazѾazѿaz�az�az��az��az��az��az��az��az��az��az��az��az�az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az�az�����az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�	az�
az�az�az�
�8��#�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az� az�!az�"az�Zaz�$az�%az�&az�'az�(az�)az�*az�+az�,az�-az�.az�/az�0az�1az�2az�3az�4az�5az�6az�7az�Zaz�9�N�:az�;az�<az�=az�>az�?az�@az�Aaz�Baz�Caz�Daz�Eaz�Faz�Gaz�Haz�Iaz�Jaz�Kaz�Laz�Maz�Zaz�Oaz�Paz�Qaz�Raz�Saz�Taz�Uaz�Vaz�Waz�Xaz�Yaz�Zaz�[az�\az�]az�^az�_az�`az�aaz�baz�Zaz�d���eҦ�f҆�gaz�haz�iaz�jaz�kaz�laz�maz�naz�oaz�paz�qaz�raz�s�{�taz�uaz�vazaz�w�xaz�yaz�zaz�oaz�|az�}azaz�~az�Ҁ҃ҁaz҂az�oaz҄az҅az�oaz҇az҈az҉azҊazҋazҌazҍazҎazҏazҐazґazҒazғқҔazҕazҖazazҗҘazҙazҚaz�oazҜazҝazazҞazҟҠңҡazҢaz�oazҤazҥaz�oazҧ��ҨazҩazҪazҫazҬazҭazҮazүazҰazұazҲazҳazҴҼҵazҶazҷazazҸҹazҺazһaz�oazҽazҾazazҿaz������az��az�oaz��az��az�oaz��az��az��az��az��az��az��az��az��az��az��az��az������az��az��azaz����az��az��az�oaz��az��azaz��az��������az��az�oaz��az��az�oaz��������az��az��az��az��az��az��az��az��az��az��az�az�az�az�az�az�az�az�az�az�}az�az�az�az�az�az�az�az�az�az�az�	az�
az�az�az�
az�az�az�az�az�az�}az��)�az�az�az�az�az�az�az�az�az�az�az� az�!az�"az�#az�$az�%az�&az�'az�(az�}az�*az�+az�,az�-az�.az�/az�0az�1az�2az�3az�4az�5az�6az�7az�8az�9az�:az�;az�<az�=az�}az�?���@ӗ�A�l�B�W�Caz�Daz�Eaz�Faz�Gaz�Haz�Iaz�Jaz�Kaz�Laz�Maz�Naz�Oaz�Paz�Qaz�Raz�Saz�Taz�Uaz�Vaz�az�Xaz�Yaz�Zaz�[az�\az�]az�^az�_az�`az�aaz�baz�caz�daz�eaz�faz�gaz�haz�iaz�jaz�kaz�az�mӂ�naz�oaz�paz�qaz�raz�saz�taz�uaz�vaz�waz�xaz�yaz�zaz�{az�|az�}az�~az�azӀazӁaz�azӃazӄazӅazӆazӇazӈazӉazӊazӋazӌazӍazӎazӏazӐazӑazӒazӓazӔazӕazӖaz�azӘ��әӮӚazӛazӜazӝazӞazӟazӠazӡazӢazӣazӤazӥazӦazӧazӨazөazӪazӫazӬazӭaz�
azӯazӰazӱazӲazӳazӴazӵazӶazӷazӸazӹazӺazӻazӼazӽazӾazӿaz�az�az��az�
az������az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az�
az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az�
azv���������F���B�������0��M�����"��
�������������������������������������������������	���
������������������������������������������������������������������ ���!������#�8�$���%���&���'���(���)���*���+���,���-���.���/���0���1���2���3���4���5���6���7������9���:���;���<���=���>���?���@���A���B���C���D���E���F���G���H���I���J���K���L������Nԥ�O�z�P�e�Q���R���S���T���U���V���W���X���Y���Z���[���\���]���^���_���`���a���b���c���d���j���f���g���h���i���j���k���l���m���n���o���p���q���r���s���t���u���v���w���x���y���j���{Ԑ�|���}���~�����Ԁ��ԁ��Ԃ��ԃ��Ԅ��ԅ��Ԇ��ԇ��Ԉ��ԉ��Ԋ��ԋ��Ԍ��ԍ��Ԏ��ԏ���j��ԑ��Ԓ��ԓ��Ԕ��ԕ��Ԗ��ԗ��Ԙ��ԙ��Ԛ��ԛ��Ԝ��ԝ��Ԟ��ԟ��Ԡ��ԡ��Ԣ��ԣ��Ԥ���j��Ԧ��ԧ��Ԩ��ԩ��Ԫ��ԫ��Ԭ��ԭ��Ԯ��ԯ��԰��Ա��Բ��Գ��Դ��Ե��Զ��Է��ԸԿԹԼԺ��Ի��~��Խ��Ծ��~������������~����������������������~����������������������������������������������������������������������������������~����������~��������������~����������������������~����������������������������������������������������������������������~��������~�����������~���	�����
�������
��~����������������������������������������������*�����&� �#�!���"��~���$���%��~���'���(���)��~���+�����,�-���.���/��~���1���2Չ�3�^�4�I�5���6���7���8���9���:���;���<���=���>���?���@���A���B���C���D���E���F���G���H������J���K���L���M���N���O���P���Q���R���S���T���U���V���W���X���Y���Z���[���\���]������_�t�`���a���b���c���d���e���f���g���h���i���j���k���l���m���n���o���p���q���r���s������u���v���w���x���y���z���{���|���}���~�����Հ��Ձ��Ղ��Ճ��Մ��Յ��Ն��Շ��Ո�����ՊյՋՠՌ��Ս��Վ��Տ��Ր��Ց��Ւ��Փ��Ք��Օ��Ֆ��՗��՘��ՙ��՚��՛��՜��՝��՞��՟������ա��բ��գ��դ��ե��զ��է��ը��թ��ժ��ի��լ��խ��ծ��կ��հ��ձ��ղ��ճ��մ������ն��շ��ո��չ��պ��ջ��ռ��ս��վ��տ���������������������������������������������������������������������������������������������������������������������������������������T��������������������������������������������������������������������������������������������������������������������������������������	���
���������
���������������������������������������������8���������� ���!���"���#���$���%���&���'���(���)���*�1�+���,���-���.���/���0��������2���3���4���5�6���7������9���:���;���<���=���>���?���@���A���B���C���D���E���F�M�G���H���I���J���K���L��������N���O���P���Q�R���S������U֐�V�s�W���X���Y���Z���[���\���]���^���_���`���a���b���c�k�d���e���f���g���h���i���j��S����l�����m�n���o���p���q���r��S����t���u���v���w���x���y���z���{���|���}���~�����րֈց��ւ��փ��ք��օ��ֆ��և��S���։����֊֋��֌��֍��֎��֏��S���֑֮֒��֓��֔��֕��֖��֗��֘��֙��֚��֛��֜��֝��֦֞֟��֠��֡��֢��֣��֤��֥��S���֧����֨֩��֪��֫��֬��֭��S���֯��ְ��ֱ��ֲ��ֳ��ִ��ֵ��ֶ��ַ��ָ��ֹ��ֺ��ֻ��ּ��ֽ��־��ֿ������������S�������������������������������S������[��נ���%���������az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az�az�az�az�az�az��az���az�az�az�az�az�az�az�az�az�az�az�az�az�	az�
az�az�az�
az�az�az��az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az� az�!az�"az�#az�$az��az�&�c�'�E�(az�)az�*az�+az�,az�-az�.az�/az�0az�1az�2az�3�<�4az�5az�6az�7az�8az�9az�:az�;az�[az�=az�>az�?az�@az�Aaz�Baz�Caz�Daz�[az�Faz�Gaz�Haz�Iaz�Jaz�Kaz�Laz�Maz�Naz�Oaz�Paz�Q�Z�Raz�Saz�Taz�Uaz�Vaz�Waz�Xaz�Yaz�[az�[az�\az�]az�^az�_az�`az�aaz�baz�[az�dׂ�eaz�faz�gaz�haz�iaz�jaz�kaz�laz�maz�naz�oaz�p�y�qaz�raz�saz�taz�uaz�vaz�waz�xaz�[az�zaz�{az�|az�}az�~az�az׀azׁaz�[az׃azׄazׅaz׆azׇaz׈az׉az׊az׋az׌az׍az׎ח׏azאazבazגazדazהazוazזaz�[azטazיazךazכazלazםazמazןaz�[azס�ע��ף׻פazץazצazקazרazשazתaz׫az׬az׭az׮azׯazװazױazײaz׳az״az׵׸׶az׷az�az׹az׺az�az׼az׽az׾az׿az�az�az��az��az��az��az��az��az��az��az��az��az��az������az��az�az��az��az�az������az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az������az��az�az��az��az�az��az��az��az��az��az��az��az��az�az�az�az�az�az�az�az�az�az���az�az�az�az�az�az��0���az�az�	az�
az�az�az�
az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az� az�!az�"az�#az�$az�%az�&az�'az�(az�)az�*az�+az�,az�-az�.az�/az�az�1�F�2az�3az�4az�5az�6az�7az�8az�9az�:az�;az�<az�=az�>az�?az�@az�Aaz�Baz�Caz�Daz�Eaz�az�Gaz�Haz�Iaz�Jaz�Kaz�Laz�Maz�Naz�Oaz�Paz�Qaz�Raz�Saz�Taz�Uaz�Vaz�Waz�Xaz�Yaz�Zaz�az�\�s�]ش�^؉�_�t�`az�aaz�baz�caz�daz�eaz�faz�gaz�haz�iaz�jaz�kaz�laz�maz�naz�oaz�paz�qaz�raz�saz�az�uaz�vaz�waz�xaz�yaz�zaz�{az�|az�}az�~az�az؀az؁az؂az؃az؄az؅az؆az؇az؈az�az؊؟؋az،az؍az؎az؏azؐazؑazؒazؓazؔazؕazؖazؗazؘazؙazؚaz؛az؜az؝az؞az�azؠazءazآazأazؤazإazئazاazبazةazتazثazجazحazخazدazذazرazزazسaz�azص�ض��طazظazعazغazػazؼazؽazؾazؿaz����az��az��az��az��az����������az��az��az��az������az��az��az��az��az��az��az������az��az��az��az��az��az��az��az��az��azaz����azaz��az����az��az��az��az��az��az��az��az��az��az��az��az���	��az��az��az��az��az�����az�az�az��az���az�az��az�az�az��az�az���az�az��az�az�az��az�
az�az�az�
azaz��azaz�az��az�az��az��D�az�az�az�az�az�az�az�az�az��9� az�!az�"az�#az�$az�%�1�&�*�'az�(az�)az��az�+�.�,az�-az��az�/az�0az��az�2az�3�6�4az�5az��az�7az�8az��az�:az�;az�<az�=azaz�>�?azaz�@az�A�Baz�Caz��az�Eaz�Faz�Gaz�Haz�Iaz�Jaz�Kaz�Laz�Maz�N�h�Oaz�Paz�Qaz�Raz�Saz�T�`�U�Y�Vaz�Waz�Xaz��az�Z�]�[az�\az��az�^az�_az��az�aaz�b�e�caz�daz��az�faz�gaz��az�iaz�jaz�kaz�lazaz�m�nazaz�oaz�p�qaz�raz��az�t���u٠�vً�waz�xaz�yaz�zaz�{az�|az�}az�~az�azـazفazقazكazلazمazنazهazوazىazيaz��azٌazٍazَazُazِazّazْazٓazٔazٕazٖazٗaz٘azٙazٚazٛazٜazٝazٞazٟaz��az١ٶ٢az٣az٤az٥az٦az٧az٨az٩az٪az٫az٬az٭azٮazٯazٰazٱazٲazٳazٴazٵaz��azٷazٸazٹazٺazٻazټazٽazپazٿaz�az�az��az��az��az��az��az��az��az��az��az��az���������az��az��az��az��az��az��az��az��az��az��az��az������az��az��az��az��az��az��az�az��azaz��az��az����az��az��az�az��az��az��az��az��az��az��az��az��az��az�az�az���az�az�az�az�az�az�az�az�azaz�az�az��az�az�az�az��%�	az�
az�az�az�
az�az�az�az�az�az�az�az���az�az�az�az�az�az�az�az�azaz�az� az�!�"az�#az�$az�az�&az�'az�(az�)az�*az�+az�,az�-az�.az�/az�0az�1az�2�:�3az�4az�5az�6az�7az�8az�9az�az�;azaz�<az�=az�>�?az�@az�Aaz�az�C�s�Dۣ�E���Fڝ�G�r�H�]�Iaz�Jaz�Kaz�Laz�Maz�Naz�Oaz�Paz�Qaz�Raz�Saz�Taz�Uaz�Vaz�Waz�Xaz�Yaz�Zaz�[az�\az�?az�^az�_az�`az�aaz�baz�caz�daz�eaz�faz�gaz�haz�iaz�jaz�kaz�laz�maz�naz�oaz�paz�qaz�?az�sڈ�taz�uaz�vaz�waz�xaz�yaz�zaz�{az�|az�}az�~az�azڀazځazڂazڃazڄazڅazچazڇaz�?azډazڊazڋazڌazڍazڎazڏazڐazڑazڒazړazڔazڕazږazڗazژazڙazښazڛazڜaz�?azڞ��ڟڴڠazڡazڢazڣazڤazڥazڦazڧazڨazکazڪazګazڬazڭazڮazگazڰazazڱڲazڳaz�azڵazڶazڷazڸazڹazںazڻazڼazڽazھazڿaz�az�az��az��az��az��azaz����az��az�az������az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��azaz����az��az�az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��azaz����az��az�az��L��!���az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�	az�
az�azTaz�
az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az� azTaz�"�7�#az�$az�%az�&az�'az�(az�)az�*az�+az�,az�-az�.az�/az�0az�1az�2az�3az�4az�5az�6azTaz�8az�9az�:az�;az�<az�=az�>az�?az�@az�Aaz�Baz�Caz�Daz�Eaz�Faz�Gaz�Haz�Iaz�Jaz�KazTaz�M�x�N�c�Oaz�Paz�Qaz�Raz�Saz�Taz�Uaz�Vaz�Waz�Xaz�Yaz�Zaz�[az�\az�]az�^az�_az�`az�aaz�baz3
az�daz�eaz�faz�gaz�haz�iaz�jaz�kaz�laz�maz�naz�oaz�paz�qaz�raz�saz�taz�uaz�vaz�waz3
az�yێ�zaz�{az�|az�}az�~az�azۀazہazۂazۃazۄazۅazۆazۇazۈazۉazۊazۋazیazۍaz3
azۏazېazۑazےazۓaz۔azەazۖazۗazۘazۙazۚazۛazۜaz۝az۞az۟az۠azۡazۢaz3
azۤ�Sۥ�ۦ��ۧۼۨaz۩az۪az۫az۬azۭazۮazۯaz۰az۱az۲az۳az۴az۵az۶az۷az۸az۹azۺazۻazRTaz۽az۾azۿaz�az�az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��azRTaz������az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��azRTaz��az��az��az��az��az��az��az��az��az��az��az��az��az�az�az�az�az�az�az�azRTaz��(���az�az�az�az�az�az�az�az�az�az�	az�
az�az�az�
az�az�az�az�az�azaz�az�az�az�az�az�az�az�az�az�az�az�az� az�!az�"az�#az�$az�%az�&az�'azaz�)�>�*az�+az�,az�-az�.az�/az�0az�1az�2az�3az�4az�5az�6az�7az�8az�9az�:az�;az�<az�=azaz�?az�@az�Aaz�Baz�Caz�Daz�Eaz�Faz�Gaz�Haz�Iaz�Jaz�Kaz�Laz�Maz�Naz�Oaz�Paz�Qaz�Razaz�Tܸ��U�V܇�Waz�Xaz�Yaz�Zaz�[az�\az�]az�^az�_�{�`�p�aaz�baz�caz�daz�eaz�f�k�gaz�haz�iaz�jaz�az�laz�maz�naz�oaz�az�qazaz�raz�saz�t�uaz�vaz�waz�xaz�yaz�zaz�az�|az�}az�~az�azaz܀܁azaz܂܃az܄az܅az܆az�az܈az܉az܊az܋az܌az܍az܎az܏azܐܬܑܡܒazܓazܔazܕazܖazܗܜܘazܙazܚazܛaz�azܝazܞazܟazܠaz�azܢazazܣazܤazܥܦazܧazܨazܩazܪazܫaz�azܭazܮazܯazܰazazܱܲazazܴܳazܵazܶazܷaz�azܹ�ܺ��ܻazܼazܽazܾazܿaz�az�az����������az��az��az��az��az��az��az��azaz����az��az�
az��azaz����azaz����az��azaz����az��az��az��az�
az��az��az��az��az��az��azaz����azaz��az����az��az�
az��az��az��az��az��az��az��az���	�����az��az��az�az�az�az�az�azaz��az�az�
az�azaz��azaz��az�azaz��az�az�az�az�
az�
az�az�az�
az�az�azaz��azaz�az��az�az�
az��E�az�az�az�az�az�az�az��8� �,�!az�"az�#az�$az�%az�&az�'az�(azaz�)�*az�+az�
az�-azaz�.�/azaz�0�1az�2azaz�3�4az�5az�6az�7az�
az�9az�:az�;az�<az�=az�>azaz�?�@azaz�Aaz�B�Caz�Daz�
az�Faz�Gaz�Haz�Iaz�Jaz�Kaz�Laz�M�f�N�Z�Oaz�Paz�Qaz�Raz�Saz�Taz�Uaz�Vazaz�W�Xaz�Yaz�
az�[azaz�\�]azaz�^�_az�`azaz�a�baz�caz�daz�eaz�
az�gaz�haz�iaz�jaz�kaz�lazaz�m�nazaz�oaz�p�qaz�raz�
az�t���u�$�v���wݢ�xݍ�yaz�zaz�{az�|az�}az�~az�az݀az݁az݂az݃az݄az݅az݆az݇az݈az݉az݊az݋az݌az�azݎazݏazݐazݑazݒazݓazݔazݕazݖazݗazݘazݙazݚazݛazݜazݝazݞazݟazݠazݡaz�azݣݸݤazݥazݦazݧazݨazݩazݪazݫazݬazݭazݮazݯazݰazݱazݲazݳazݴazݵazݶazݷaz�azݹazݺazݻazݼazݽazݾazݿaz�az�az��az��az��az��az��az��az��az��az��az��az��az�az���������az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az�az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az�az�az�az�az�az���az�az�az�az�az�az�az�az�az�az�az�az�az�az�	az�
az�az�az�
az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az� az�!az�"az�#az�az�%�|�&�Q�'�<�(az�)az�*az�+az�,az�-az�.az�/az�0az�1az�2az�3az�4az�5az�6az�7az�8az�9az�:az�;azDaz�=az�>az�?az�@az�Aaz�Baz�Caz�Daz�Eaz�Faz�Gaz�Haz�Iaz�Jaz�Kaz�Laz�Maz�Naz�Oaz�PazDaz�R�g�Saz�Taz�Uaz�Vaz�Waz�Xaz�Yaz�Zaz�[az�\az�]az�^az�_az�`az�aaz�baz�caz�daz�eaz�fazDaz�haz�iaz�jaz�kaz�laz�maz�naz�oaz�paz�qaz�raz�saz�taz�uaz�vaz�waz�xaz�yaz�zaz�{azDaz�}ި�~ޓ�azހazށazނazރazބazޅazކazއazވazމazފazދazތazލazގazޏazސazޑazޒazeazޔazޕazޖazޗazޘazޙazޚazޛazޜazޝazޞazޟazޠazޡazޢazޣazޤazޥazަazާazeazީ޾ުazޫazެazޭazޮazޯazްazޱaz޲az޳az޴az޵az޶az޷az޸az޹az޺az޻az޼az޽azeaz޿az�az�az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��azeaz��߃���,���������az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az�az��az��az��az��az��az��az��az��az�az�az�az�az�az�az�az�az�az�az�az�az�az���az�az�az�az�az�az�	az�
az�az�az�
az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az� az�!az�"az�#az�$az�%az�&az�'az�(az�)az�*az�+az�az�-�X�.�C�/az�0az�1az�2az�3az�4az�5az�6az�7az�8az�9az�:az�;az�<az�=az�>az�?az�@az�Aaz�Baz�az�Daz�Eaz�Faz�Gaz�Haz�Iaz�Jaz�Kaz�Laz�Maz�Naz�Oaz�Paz�Qaz�Raz�Saz�Taz�Uaz�Vaz�Waz�az�Y�n�Zaz�[az�\az�]az�^az�_az�`az�aaz�baz�caz�daz�eaz�faz�gaz�haz�iaz�jaz�kaz�laz�maz�az�oaz�paz�qaz�raz�saz�taz�uaz�vaz�waz�xaz�yaz�zaz�{az�|az�}az�~az�az߀az߁az߂az�az߄��߅ߺ߆ߠ߇az߈az߉azߊazߋazߌazߍazߎazߏazߐazߑazߒazߓazߔazߕazߖߛߗazߘazߙazߚazJ�azߜazߝazߞazߟazJ�azߡazߢazߣazߤazߥazߦazߧazߨazߩazߪaz߫az߬az߭az߮az߯az߰ߵ߱az߲az߳azߴazJ�az߶az߷az߸az߹azJ�az߻��߼az߽az߾az߿az�az�az��az��az��az��az��az��az��az��az��az������az��az��az��azJ�az��az��az��az��azJ�az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az������az��az��az��azJ�az��az��az��az��azJ�az��������az��az��az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�	az�
az�az�az�
az�az�az�az�az�az�az�az�az�az�az�az�az�az�az��1�az�az�az� az�!az�"az�#az�$az�%az�&az�'az�(az�)az�*az�+az�,az�-az�.az�/az�0az�az�2az�3az�4az�5az�6az�7az�8az�9az�:az�;az�<az�=az�>az�?az�@az�Aaz�Baz�Caz�Daz�Eaz�az�G�9�H��I��J��Kw��L�}�M�e�Nw��Ow��Pw��Qw��Rw��Sw��Tw��Uw��Vw��Ww��Xw��Yw��Zw��[w��\w��]w��^w��_�b�`w��aw��w��cw��dw��w��fw��gw��hw��iw��jw��kw��lw��mw��nw��ow��pw��qw��rw��sw��tw��uw��vw��w�z�xw��yw��w��{w��|w��w��~��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w����w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w����w��w��w��w��w��w�v���������v��v��v��v��v��v��v��v��v��v��v��v��v��v��v��v���v���v���v���v�v���v���v���v���v���v���v���v���v���v���v���v���v���v���v���v���v���v���v���v���v�v�������v���v���v���v���v���v���v���v���v���v���v���v���v���v���v���v���v���v���v���v�v���v���v���v��v��v��v��v��v��v��v��v��v��v��v��v��v��v��v��v��v�v������_�	�4�
��az�az�
az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�azJ�az� az�!az�"az�#az�$az�%az�&az�'az�(az�)az�*az�+az�,az�-az�.az�/az�0az�1az�2az�3azJ�az�5�J�6az�7az�8az�9az�:az�;az�<az�=az�>az�?az�@az�Aaz�Baz�Caz�Daz�Eaz�Faz�Gaz�Haz�IazJ�az�Kaz�Laz�Maz�Naz�Oaz�Paz�Qaz�Raz�Saz�Taz�Uaz�Vaz�Waz�Xaz�Yaz�Zaz�[az�\az�]az�^azJ�az�`��a�~�baz�caz�daz�eaz�faz�gaz�haz�iaz�jaz�kaz�laz�maz�n�v�oaz�paz�qaz�raz�saz�taz�uaz��az�waz�xazaz�y�zaz�{az�|az�}az��az�az�az�az�az�az�az�az�az�az�az�az�az���az�az�az�az�az�az�az��az�az�azaz��az�az�az�az��az���az�az�az�az�az�az�az�az�az�az�az�az���az�az�az�az�az�az�az��az�az�azaz��az�az�az�az��az�az�az�az�az�az�az�az�az��az��az��az��az������az��az��az��az��az��az��az��az��az��azaz����az��az��az��az��az���.���������az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��azJ�az��az��az��az��az��az��az�az�az�az�az�az�az�az�az�az�az�az�az�az�azJ�az���az�az�az�az�	az�
az�az�az�
az�az�az�az�az�az�az�az�az�az�az�azJ�az�az�az�az�az�az�az� az�!az�"az�#az�$az�%az�&az�'az�(az�)az�*az�+az�,az�-azJ�az�/�Z�0�E�1az�2az�3az�4az�5az�6az�7az�8az�9az�:az�;az�<az�=az�>az�?az�@az�Aaz�Baz�Caz�Daz��az�Faz�Gaz�Haz�Iaz�Jaz�Kaz�Laz�Maz�Naz�Oaz�Paz�Qaz�Raz�Saz�Taz�Uaz�Vaz�Waz�Xaz�Yaz��az�[�p�\az�]az�^az�_az�`az�aaz�baz�caz�daz�eaz�faz�gaz�haz�iaz�jaz�kaz�laz�maz�naz�oaz��az�qaz�raz�saz�taz�uaz�vaz�waz�xaz�yaz�zaz�{az�|az�}az�~az�az�az�az�az�az�az��az����z����P����az�az�az�az�az�az�az�az�az�az�az����az������������az�az�az�az�az�az���az�az�az�az�az�az�����az�az�az�az�az�az�az�az�az�az��������az�az�az�az�az�az����az�az�az��az��az�az����az����az��az�az������az��az�az��az��az�az��az����������az��az��az�az������az��az�az��az��az�az��az��az��az��az�azaz����az��az��azaz��az����az��az�az��az��az��az��az��az��az��az�az�az�az�az��G�az��4���������az�az�az�az�az�az��	�az�az�az�
az�az�az�
����az�az�az�az�az�az�az�az�az�az��(��!���az�az�az�az� az�az�"�%�#az�$az�az�&az�'az�az�)�-az�*�+az�,az�az�.�1�/az�0az�az�2az�3az�az�5az�6�B�7�;�8az�9az�:az�az�<�?�=az�>az�az�@az�Aaz�az�Caz�Daz�Eaz�Faz�azaz�H�Iaz�Jaz�Kazaz�Laz�M�Naz�Oaz�az�Q��Raz�Saz�Taz�Uaz�Vaz�Waz�Xaz�Yaz�Zaz�[az�\az�]��^az�_��`�|�a�p�b�i�c�f�daz�eaz�az�gaz�haz�az�j�m�kaz�laz�az�naz�oaz�az�q�x�r�u�saz�taz�az�vaz�waz�az�yaz�zaz�{az�az�}��~����az�az�az�az�az�az���az�az�az�az�az�az��az��az�az�az���az�az�az�az�az�az�az�����az�az�az�az���az�az�az�az�az�az�az�az�az�az�azaz��az�az�azaz�az��az�az�az�az�az�az�az�az�az�az�az�az�az�az���az���������������������az��az�az��az��az�az������az��az�az��az��az�az����������az��az�az��az��az�az��az��az��az�az��������������az��az�az��az��az�az������az��az�az��az��az�az����az����az��az�az���az�az�az�az�az�az�az��	���az�az�az�az���az�az�az�az�az�az�
az�az�az�
az�azaz��az�az�azaz�az��az�az�az��I��1�az�az�az�az�az�az� az�!az�"az�#az�$az�%az�&az�'az�(az�)az�*az�+�.�,az�-az�az�/az�0az�az�2az�3az�4az�5az�6az�7az�8az�9az�:az�;az�<az�=az�>az�?az�@az�Aaz�Baz�C�F�Daz�Eaz�az�Gaz�Haz�az�J�b�Kaz�Laz�Maz�Naz�Oaz�Paz�Qaz�Raz�Saz�Taz�Uaz�Vaz�Waz�Xaz�Yaz�Zaz�[az�\�_�]az�^az�az�`az�aaz�az�caz�daz�eaz�faz�gaz�haz�iaz�jaz�kaz�laz�maz�naz�oaz�paz�qaz�raz�saz�t�w�uaz�vaz�az�xaz�yaz�azgQ�{�|���}��~az�az�az�az�az�az�az�az�az���az�az�az�az�az�az�����az�azw�az�az�azw�az�az�az�azw�az�az�az�azaz��az�az�azaz��az�azw�az�az�az�az�az�az�az�az�az�az���az�az�az�az�az�az�����az�azw�az�az�azw�az�az�az�azw�az�az��az��azaz����az��az��azaz����az��azw�az������az��az��az��az��az��az��az��az��az������az��az��az��az��az��az����������az��azw�az��az��azw�az��az��az��azw�az��az��az��azaz����az��az��azaz����az��azw�az��az�az�az�az�az�az�az�az�az���az�az�az�az�az�az�����az�azw�az�	az�
azw�az�az�
az�azw�az�az�az�azaz��az�az�azaz��az�azw�az�������N��6�az� az�!az�"az�#az�$az�%az�&az�'az�(az�)az�*az�+az�,az�-az�.az�/az�0�3�1az�2az�az�4az�5az�az�7az�8az�9az�:az�;az�<az�=az�>az�?az�@az�Aaz�Baz�Caz�Daz�Eaz�Faz�Gaz�H�K�Iaz�Jaz�az�Laz�Maz�az�O�g�Paz�Qaz�Raz�Saz�Taz�Uaz�Vaz�Waz�Xaz�Yaz�Zaz�[az�\az�]az�^az�_az�`az�a�d�baz�caz�az�eaz�faz�az�haz�iaz�jaz�kaz�laz�maz�naz�oaz�paz�qaz�raz�saz�taz�uaz�vaz�waz�xaz�y�|�zaz�{az�az�}az�~az�az�����az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�azaz��az�azWaz�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�azaz��az�azWaz���az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�azaz��az�azWaz��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��azaz����az��azWaz���.���������az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az�az�az�az�az�az�az�az�az�az�az�az�az�az�az��az���az�az�az�az�	az�
az�az�az�
az�az�az�az�az�az�az�az�az�az�az�az��az�az�az�az�az�az�az� az�!az�"az�#az�$az�%az�&az�'az�(az�)az�*az�+az�,az�-az��az�/��0�r�1az�2az�3az�4az�5az�6az�7az�8az�9az�:az�;�h�<az�=az�>az�?�[�@�O�A�H�B�E�Caz�Dazt�az�Faz�Gazt�az�I�L�Jaz�Kazt�az�Maz�Nazt�az�P�T�Qaz�Raz�Sazt�az�U�X�Vaz�Wazt�az�Yaz�Zazt�az�\az�]�d�^�a�_az�`azt�az�baz�cazt�az�eaz�faz�gazt�az�iazaz�j�kazaz�l�maz�naz�oaz�paz�qazt�az�saz�taz�uaz�vaz�waz�xaz�yaz�zaz�{az�|az�}��~az�az�az���������az�azt�az�az�azt�az���az�azt�az�az�azt�az���az�az�azt�az���az�azt�az�az�azt�az�az�����az�azt�az�az�azt�az�az�az�azt�az�azaz��azaz��az�az�az�az�azt�az���az�az�az�az�az�az�az�az�az�az����az��az��az������������������az��azt�az��az��azt�az������az��azt�az��az��azt�az������az��az��azt�az������az��azt�az��az��azt�az��az����������az��azt�az��az��azt�az��az��az��azt�az��azaz����azaz����az��az��az�az�azt�az�az�az�az�az�az�az�az�az�az�az��/�az�az�az��"�����	��
az�azt�az�
az�azt�az���az�azt�az�az�azt�az���az�az�azt�az���az�azt�az� az�!azt�az�#az�$�+�%�(�&az�'azt�az�)az�*azt�az�,az�-az�.azt�az�0azaz�1�2azaz�3�4az�5az�6az�7az�8azt�az�:��;�;�<����=�>��?�`�@��A��B��C��D��E��F��G��H��I��J��K�W�L��M��N��O��P��Q�T�R��S��
��U��V��
��X���Y��Z��[��\�]��^��_��
��a��b��c��d��e��f��g��h��i��j��k��l�x�m��n��o��p��q��r�u�s��t��
��v��w��
��y���z��{��|��}�~������
��������������������������������������������
������
������������������
������������������������������������������
������
��������������������
�������=����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	��
������
���������0��!������������������������������ �����"�)�#�&�$��%�����'��(�����*�-�+��,�����.��/�����1��2�9�3�6�4��5�����7��8�����:��;��<�����>�y�?��@��A��B��C��D��E��F��G��H��I��J��K��L��M�l�N�]�O�V�P�S�Q��R�����T��U�����W�Z�X��Y�����[��\�����^�e�_�b�`��a�����c��d�����f�i�g��h�����j��k�����m��n�u�o�r�p��q�����s��t�����v��w��x�����z��{��|��}��~����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������	��
������
����������������������������������������� ��!��"��#��$��%��&�/�'��(��)��*��+���,�-��.�����0��1��2���3��4�5�8�6��7�����9��:�����<���=�1�>��?�`�@�1�A�1�B�1�C�1�D�1�E�1�F�1�G�1�H�T�I�1�J�1�K�1�L�1�M�1�N�1�O�1�P�1�Q�1�R�1�S�1���1�U�1�1�V�W�1�X�1�Y�1�Z�1�1�[�\�1�]�1�^�1�_�1���1�a�1�b�1�c�1�d�1�e�1�f�1�g�1�h�1�i�u�j�1�k�1�l�1�m�1�n�1�o�1�p�1�q�1�r�1�s�1�t�1���1�v�1�1�w�x�1�y�1�z�1�{�1�1�|�}�1�~�1��1��1���1����1��1��1��1��1��1��1��1����1��1��1��1��1��1��1��1��1��1��1���1��1�1���1��1��1��1�1���1��1��1��1���1��1��1��1��1��1��1��1��1����1��1��1��1��1��1��1��1��1��1��1���1��1�1���1��1��1��1�1���1��1���1���1���1�������+�����������������������������������������������������������������������������������wU����������wU������������������wU��������������wU����������������������wU��������������������������������������wU������������������������������� ���������������	��
��������
��wU��������wU�������������wU�����������wU�����������������wU�����!�"�����#�$�����%���&�'���(���)���*��wU���,�^�-���.���/���0���1���2���3���4���5���6�S�7���8���9���:���;�M�<�D�=���>�A�?���@��wU���B���C��wU���E�I�F���G���H��wU�����J�K���L��wU���N���O���P���Q���R��wU�����T�U�����V�W�����X���Y�Z���[���\���]��wU���_���`���a���b���c���d���e���f���g���h��i���j���k���l���m��n�v�o���p�s�q���r��wU���t���u��wU���w�{�x���y���z��wU�����|�}���~��wU�����������������wU��������������������������������wU��������az�����az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�azaz�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�azaz����az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��azaz��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��azaz���N��������az��az��az��az��az��az��az�az�az�az�az�az�az�az�az�az�az���az�az�az�az�az�az�az�az�az�	az�
az�az�az�
az�az�az�az�az�az�az�az�az�az���az�az�az�az�az�az��6�az� az�!az�"az�#az�$az�%az�&az�'az�(az�)az�*az�+az�,az�-az�.az�/az�0�3�1az�2az�az�4az�5az�az�7az�8az�9az�:az�;az�<az�=az�>az�?az�@az�Aaz�Baz�Caz�Daz�Eaz�Faz�Gaz�H�K�Iaz�Jaz�az�Laz�Maz�az�O��P�l�Qaz�Raz�Saz�Taz�Uaz�Vaz�Waz�Xaz�Yaz�Zaz�[az�\az�]az�^az�_az�`az�a�h�b�e�caz�dazS�az�faz�gazS�az�iaz�jaz�kazS�az�maz�naz�oaz�paz�qaz�raz�saz�taz�uaz�vaz�waz�xaz�yaz�zaz�{az�|az�}��~��az�azS�az�az�azS�az�az�az�azS�az���az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�����az�azS�az�az�azS�az�az�az�azS�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�����az�azS�az�az�azS�az�az�az�azS�az����������#������az��az��az��az��az��az��az��az��az��az��az��az������az��az��������������az��az�az��az��az�az������az��az�az��az��az�az��az������az��az�az��az��az�azaz��az��az����azaz����az��az�az�az�az�az�az�az�az�az�az�az�az�az�az���az�az������	�az�az�az�
az�az�az�
��az�az�az�az�az�az�az���az�az�az�az�az�azaz�az�az��azaz� �!az�"az�az�$�S�%az�&az�'az�(az�)az�*az�+az�,az�-az�.az�/az�0az�1�K�2az�3az�4�C�5�<�6�9�7az�8az�az�:az�;az�az�=�@�>az�?az�az�Aaz�Baz�az�Daz�E�H�Faz�Gaz�az�Iaz�Jaz�azaz�Laz�Maz�N�Oazaz�P�Qaz�Raz�az�Taz�Uaz�Vaz�Waz�Xaz�Yaz�Zaz�[az�\az�]az�^az�_az�`�z�aaz�baz�c�r�d�k�e�h�faz�gaz�az�iaz�jaz�az�l�o�maz�naz�az�paz�qaz�az�saz�t�w�uaz�vaz�az�xaz�yaz�azaz�{az�|az�}�~azaz��az�az�az�����az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az��az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az��az����az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az���=���������az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az������az��az�az��az��az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az��	�az�az�az�
az�az�az�
�%�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az��"� az�!az�az�#az�$az�az�&az�'az�(az�)az�*az�+az�,az�-az�.az�/az�0az�1az�2az�3az�4az�5az�6az�7�:�8az�9az�az�;az�<az�az�>�i�?�T�@az�Aaz�Baz�Caz�Daz�Eaz�Faz�Gaz�Haz�Iaz�Jaz�Kaz�Laz�Maz�Naz�Oaz�Paz�Qaz�Raz�Sazw8az�Uaz�Vaz�Waz�Xaz�Yaz�Zaz�[az�\az�]az�^az�_az�`az�aaz�baz�caz�daz�eaz�faz�gaz�hazw8az�j��kaz�laz�maz�naz�oaz�paz�qaz�raz�saz�taz�uaz�vaz�waz�xaz�yaz�zaz�{az�|az�}az�~azw8az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�azw8az���������x���������az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az��az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az��az��az��az��az��az������az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az���5�����az�az�az�az�az�az�az�az�az�az�az���az�az�az�az�az���az�az�?az�	az�
az�?az�az�
azaz�az��az�az�az�az�?az�az�az�az�az�az�az�az�az�az�az�az� �,�!az�"az�#az�$az�%az�&�)�'az�(az�?az�*az�+az�?az�-az�.azaz�/az�0�1az�2az�3az�4az�?az�6�W�7az�8az�9az�:az�;az�<az�=az�>az�?az�@az�Aaz�B�N�Caz�Daz�Eaz�Faz�Gaz�H�K�Iaz�Jaz�?az�Laz�Maz�?az�Oaz�Pazaz�Qaz�R�Saz�Taz�Uaz�Vaz�?az�Xaz�Yaz�Zaz�[az�\az�]az�^az�_az�`az�aaz�baz�c�o�daz�eaz�faz�gaz�haz�i�l�jaz�kaz�?az�maz�naz�?az�paz�qazaz�raz�s�taz�uaz�vaz�waz�?az�y��z��{��|az�}az�~az�az�az�az�az�az�az�az�az���az�az�az�az�az���az�az�az�az�az�az�az�az�azaz��az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az���az�az�az�az�az���az�az�az�az�az�az�az�az�azaz��az�az�az�az�az����az�az�az��az��az��az��az��az��az��az��az������az��az��az��az��az������az��az�az��az��az�az��az��az��azaz����az��az��az��az�az��az��az��az��az��az��az��az��az��az��az��az�����az��az��az��az��az������az��az�az�az�az�az�az�az�azaz��az�az�az�az�az��J���az�az�az�az��z�az�	�`�
�S�az�az�
az�az�az��L��0��!�����az�az{�az�az�az{�az���az�az{�az�az� az{�az�"�)�#�&�$az�%az{�az�'az�(az{�az�*�-�+az�,az{�az�.az�/az{�az�1�=�2�6az�3�4az�5az{�az�7�:�8az�9az{�az�;az�<az{�az�>�E�?�B�@az�Aaz{�az�Caz�Daz{�az�F�I�Gaz�Haz{�az�Jaz�Kaz{�az�Maz�Naz�Oaz�Paz�Qaz�Raz{�azaz�T�Uaz�Vazaz�Waz�Xaz�Y�Zaz�[az�\az�]az�^az�_az{�az�aaz�b�naz�caz�daz�eaz�f�gazaz�h�iaz�jaz�kaz�laz�maz{�azaz�oaz�p�qaz�razaz�s�taz�uazaz�v�waz�xaz�yaz{�az�{�az�|az�}�~azaz��az�az�azaz��az�az�azaz��az�az{�azaz���az�az��az�azaz��az�azaz��azaz��az�az{�azaz��azaz��azaz�az�az��azaz��az�az�az{�az�az�az�az�az���az�����az�az�az�az�az��������������az�az{�az�az�az{�az����az�az{�az��az��az{�az����������az��az{�az��az��az{�az������az��az{�az��az��az{�az��������az����az��az{�az������az��az{�az��az��az{�az����������az��az{�az��az��az{�az������az��az{�az��az��az{�az��az��az��az��az�az�az{�azaz��az�azaz�az�az��az�az�az�az�az�az{�az�az��az�az�az�	az�
�azaz��
az�az�az�az�az{�azaz�az��az�azaz��az�azaz��az�az�az{�az��.az� az�!�"azaz�#�$az�%az�&azaz�'�(az�)az�*azaz�+�,az�-az{�azaz�/�0�=az�1az�2�3az�4azaz�5�6az�7azaz�8�9azaz�:�;az�<az{�azaz�>�?azaz�@�Aazaz�Baz�Caz�D�Eazaz�F�Gaz�Haz�Iaz{�az�K���Laz�Maz�Naz�Oaz�P���Qaz�R��S��Taz�Uaz�Vaz�Waz�Xaz�Y��Z�y�[�j�\�c�]�`�^az�_az{�az�aaz�baz{�az�d�g�eaz�faz{�az�haz�iaz{�az�k�r�l�o�maz�naz{�az�paz�qaz{�az�s�v�taz�uaz{�az�waz�xaz{�az�z��{�az�|�}az�~az{�az���az�az{�az�az�az{�az�����az�az{�az�az�az{�az���az�az{�az�az�az{�az�az�az�az�az�az�az{�azaz��az�azaz�az�az��az�az�az�az�az�az{�az�az��az�az�az�az��azaz��az�az�az�az�az{�azaz�az��az�azaz��az�azaz��az�az��az{�az����az��az����azaz����az��az��azaz����az��az��azaz����az��az{�azaz������az��az����az��azaz����az��azaz����azaz����az��az{�azaz����azaz����azaz��az��az����azaz����az��az��az{�az��az��az��az��az���g�az��M��@�az�az�az�az�az��9���������az�az{�az�az�az{�az���	az�
az{�az�az�
az{�az�����az�az{�az�az�az{�az���az�az{�az�az�az{�az��*��#az� �!az�"az{�az�$�'�%az�&az{�az�(az�)az{�az�+�2�,�/�-az�.az{�az�0az�1az{�az�3�6�4az�5az{�az�7az�8az{�az�:az�;az�<az�=az�>az�?az{�azaz�A�Baz�Cazaz�Daz�Eaz�F�Gaz�Haz�Iaz�Jaz�Kaz�Laz{�az�Naz�O�[az�Paz�Qaz�Raz�S�Tazaz�U�Vaz�Waz�Xaz�Yaz�Zaz{�azaz�\az�]�^az�_azaz�`�aaz�bazaz�c�daz�eaz�faz{�az�h�waz�iaz�j�kazaz�l�maz�naz�oazaz�p�qaz�raz�sazaz�t�uaz�vaz{�azaz�x�y�az�zaz�{�|az�}azaz�~�az�azaz��azaz��az�az{�azaz��azaz��azaz�az�az��azaz��az�az�az{�az����������������������������������������������������������������������S���������������������������������������������������������������S���������������������������������������������������������������������������������������S�����������������������������������������������������������������������������������S������D����������������������������������������������������������������������������������������	���
���������
�����������������������������������������/���������������� ���!���"���#���$���%���&���'���(���)���*���+���,���-���.�������0���1���2���3���4���5���6���7���8���9���:���;���<���=���>���?���@���A���B���C�������E�p�F�[�G���H���I���J���K���L���M���N���O���P���Q���R���S���T���U���V���W���X���Y���Z�������\���]���^���_���`���a���b���c���d���e���f���g���h���i���j���k���l���m���n���o�������q��r���s���t���u���v���w���x���y���z���{���|���}���~����������������������������������������������������������������������������������������������t���������t��t��t��t��t��t��t��t��t��t��t��t��t��t��t��t��t����t��t�t��t��t�t��t��t��t��t��t��t��t��t��t���t���t���t���t���t���t���t���t�������t���t�t���t���t�t�������t���t���t���t���t���t���t���t���t���t���t���t���t���t���t���t���t�������t���t�t���t���t�t���t���t���t���t���t���t���t���t���t���t���t��t��t��t��t��t��t����t��t�t��t��t�t������t��t��t��t��t��	t��
t��������
�8����^��D��-��'��"�����t��t�ubt��t��t�ubt����t��t�ubt�� t��!t�ubt��#t��$t��%t��&t�ubt�t��(t��)�*t��+t��,t�ubt��.�9�/�4�0t��1t��2t��3t�ubt��5t��6t��7t��8t�ubt��:�?�;t�t��<�=t��>t�ubt��@t�t��A�Bt��Ct�ubt��E�R�F�L�Gt�t��Ht��I�Jt��Kt�ubt�t��M�Nt��Ot��Pt��Qt�ubt�t��S�T�Y�Ut�t��V�Wt��Xt�ubt�t��Zt��[�\t��]t�ubt��_��`�t�a�j�bt��ct��d�g�et��ft�ubt��ht��it�ubt�t��k�l�pt��m�nt��ot�ubt��qt��rt��st�ubt��u��v�{t��wt��x�yt��zt�ubt��|t�t��}�~t��t�ubt��t�t�����t��t�ubt��t��t�ubt��������t�t���t��t�ubt�t���t��t��t�ubt��t��t��t��t��t�ubt�����t��t���t��t�ubt�t��t���t��t�ubt��t�t���t��t��t�ubt���������t��t�t���t��t��t�ubt��t��t�t���t��t��t�ubt�����������t���t�����t���t�ubt�t�����t���t���t�ubt�����t�����t���t���t�ubt���t�������t���t�ubt���t���t�ubt�������t�t�����t���t���t�ubt�����������t���t���t�ubt���t���t���t�ubt�t���t�����t���t�ubt������������t�t���t��t��t�ubt����t�t���t��t�ubt���t���t��t�ubt��t��t��t�ubt��	�t��
t���t��
t��t�ubt�t��t���t��t��t�ubt���,��"��t���t��t��t�ubt��t�t��� t��!t�ubt�t��#�$�(t��%�&t��'t�ubt�t��)�*t��+t�ubt�t��-�.�3�/t��0t��1t��2t�ubt��4t�t��5�6t��7t�ubt��9��:��;�d�<�N�=�Ct��>t��?�@t��At��Bt�ubt��D�It��E�Ft��Gt��Ht�ubt�t��Jt��K�Lt��Mt�ubt��O�Z�P�Ut��Qt��R�St��Tt�ubt�t��Vt��W�Xt��Yt�ubt�t��[�\�`t��]�^t��_t�ubt�t��a�bt��ct�ubt��e�v�f�p�gt��h�l�it��jt��kt�ubt�t��m�nt��ot�ubt��qt��rt��st��tt��ut�ubt��w�}�xt��yt�t��z�{t��|t�ubt��~t��t��t��t��t�ubt�����t���t��t�t���t��t�ubt�t��t��t���t��t��t�ubt������t����t��t��t�ubt��t��t��t�ubt��t��t��t��t��t�ubt�t���t�t��t���t��t�ubt��������t��t��t���t��t��t�ubt��t�t��t��t���t��t�ubt��t��t�t��t��t�����t���t�ubt�������t�����t�����t�t�����t���t�ubt���t�����t�����t���t�ubt�t�����t���t�ubt�����t�����t�t���t�����t���t�ubt�������t�t�����t���t���t�ubt�t���t�����t���t���t�ubt����D���'��������������t���t���t��t�ubt��t��t��t�ubt�t���t�t���t��t�ubt���
t��t��t���t��	t�ubt��t��t��
t��t��t�ubt�t�����t�t���t��t��t�ubt�t��t���t��t��t�ubt�t��� t�t��!t��"t��#�$t��%t��&t�ubt��(�1�)t�t��*�+t�t��,t��-�.t��/t��0t�ubt�t��2t��3�4�>t��5�6�:�7t��8t��9t�ubt��;t��<t��=t�ubt��?t�t��@�At��Bt��Ct�ubt��E�z�F�O�Gt��Ht��It�t��Jt��K�Lt��Mt��Nt�ubt��P�k�Q�^�R�X�St��Tt��Ut��Vt��Wt�ubt�t��Y�Zt��[t��\t��]t�ubt��_�e�`t��at�t��b�ct��dt�ubt�t��f�gt��ht��it��jt�ubt��l�st��mt��nt��o�pt��qt��rt�ubt�t��tt��u�vt�t��w�xt��yt�ubt��{���|���}��t��~�t���t���t���t���t�ubt�������t�t�����t���t���t�ubt�t���t���t�����t���t�ubt�������t�t�����t���t���t���t�ubt�t���t�����t�t�����t���t�ubt���������t�����t�t���t�����t���t�ubt���t�t���t�����t���t���t�ubt�t�����t���t�t�����t���t���t�ubt���t���t���������t���������t�t�����t�t�����t���t�ubt�����t�����t�t�����t���t�ubt�t���t���t�����t���t�ubt�������t�����t���t�����t���t���t�ubt���t�t���t�����t���t�ubt���t���t�t���t�����t���t���t�ubt���t�������t�t���t�����t���t���t���t�ubt�����t���t�����t���t���t���t�ubt�t���t���t���t����t��t�ubt��t��t��t��t��t��t��	t��
�������7�
����]��C��,��&��!�����t��t�ubt��t��t�ubt����t��t�ubt��t�� t�ubt��"t��#t��$t��%t�ubt�t��'t��(�)t��*t��+t�ubt��-�8�.�3�/t��0t��1t��2t�ubt��4t��5t��6t��7t�ubt��9�>�:t�t��;�<t��=t�ubt��?t�t��@�At��Bt�ubt��D�Q�E�K�Ft�t��Gt��H�It��Jt�ubt�t��L�Mt��Nt��Ot��Pt�ubt�t��R�S�X�Tt�t��U�Vt��Wt�ubt�t��Yt��Z�[t��\t�ubt��^���_�s�`�i�at��bt��c�f�dt��et�ubt��gt��ht�ubt�t��j�k�ot��l�mt��nt�ubt��pt��qt��rt�ubt��t��u�zt��vt��w�xt��yt�ubt��{t�t��|�}t��~t�ubt���t�t���������t���t�ubt���t���t�ubt���������������t�t�����t���t�ubt�t�����t���t���t�ubt���t���t���t���t���t�ubt���������t���t�����t���t�ubt�t���t�����t���t�ubt���t�t�����t���t���t�ubt���������������t���t�t�����t���t���t�ubt���t���t�t�����t���t���t�ubt�������������t���t�����t���t�ubt�t�����t���t���t�ubt�����t�����t���t���t�ubt���t�������t���t�ubt���t���t�ubt�������t�t�����t���t���t�ubt�����������t���t���t�ubt���t���t���t�ubt�t���t�����t���t�ubt�������������t�t�����t���t���t�ubt�������t�t�����t���t�ubt����t���t��t�ubt��t��t��t�ubt���t��	t��
�t��t��
t�ubt�t��t���t��t��t�ubt���+��!��t���t��t��t�ubt��t�t���t�� t�ubt�t��"�#�'t��$�%t��&t�ubt�t��(�)t��*t�ubt�t��,�-�2�.t��/t��0t��1t�ubt��3t�t��4�5t��6t�ubt��8���9���:�c�;�M�<�Bt��=t��>�?t��@t��At�ubt��C�Ht��D�Et��Ft��Gt�ubt�t��It��J�Kt��Lt�ubt��N�Y�O�Tt��Pt��Q�Rt��St�ubt�t��Ut��V�Wt��Xt�ubt�t��Z�[�_t��\�]t��^t�ubt�t��`�at��bt�ubt��d�u�e�o�ft��g�k�ht��it��jt�ubt�t��l�mt��nt�ubt��pt��qt��rt��st��tt�ubt��v�|�wt��xt�t��y�zt��{t�ubt��}t��~t��t���t���t�ubt���������t�����t���t�t�����t���t�ubt�t���t���t�����t���t���t�ubt�����������t�������t���t���t�ubt���t���t���t�ubt���t���t���t���t���t�ubt�t�����t�t���t�����t���t�ubt�������������t���t���t�����t���t���t�ubt���t�t���t���t�����t���t�ubt���t���t�t���t���t�����t���t�ubt�������t�����t�����t�t�����t���t�ubt���t�����t�����t���t�ubt�t�����t���t�ubt�����t�����t�t���t�����t���t�ubt�������t�t�����t���t���t�ubt�t���t�����t���t���t�ubt����C���&���������������t�����t�����t���t�ubt���t���t���t�ubt�t�����t�t����t��t�ubt���	t��t��t���t��t�ubt��
t��t��t��
t��t�ubt�t�����t�t���t��t��t�ubt�t��t���t��t��t�ubt�t���t�t�� t��!t��"�#t��$t��%t�ubt��'�0�(t�t��)�*t�t��+t��,�-t��.t��/t�ubt�t��1t��2�3�=t��4�5�9�6t��7t��8t�ubt��:t��;t��<t�ubt��>t�t��?�@t��At��Bt�ubt��D�y�E�N�Ft��Gt��Ht�t��It��J�Kt��Lt��Mt�ubt��O�j�P�]�Q�W�Rt��St��Tt��Ut��Vt�ubt�t��X�Yt��Zt��[t��\t�ubt��^�d�_t��`t�t��a�bt��ct�ubt�t��e�ft��gt��ht��it�ubt��k�rt��lt��mt��n�ot��pt��qt�ubt�t��st��t�ut�t��v�wt��xt�ubt��z���{���|��t��}�~t��t���t���t���t�ubt�������t�t�����t���t���t�ubt�t���t���t�����t���t�ubt�������t�t�����t���t���t���t�ubt�t���t�����t�t�����t���t�ubt���������t�����t�t���t�����t���t�ubt���t�t���t�����t���t���t�ubt�t�����t���t�t�����t���t���t�ubt���t���t���������t���������t�t�����t�t�����t���t�ubt�����t�����t�t�����t���t�ubt�t���t���t�����t���t�ubt�������t�����t���t�����t���t���t�ubt���t�t���t�����t���t�ubt���t���t�t���t�����t���t���t�ubt���t�������t�t���t�����t���t���t���t�ubt�����t���t�����t���t���t���t�ubt�t���t���t���t�����t��t�ubt����t��t��t��t��t��t��	t��
�������7�
����]��C��,��&��!�����t��t�ubt��t��t�ubt����t��t�ubt��t�� t�ubt��"t��#t��$t��%t�ubt�t��'t��(�)t��*t��+t�ubt��-�8�.�3�/t��0t��1t��2t�ubt��4t��5t��6t��7t�ubt��9�>�:t�t��;�<t��=t�ubt��?t�t��@�At��Bt�ubt��D�Q�E�K�Ft�t��Gt��H�It��Jt�ubt�t��L�Mt��Nt��Ot��Pt�ubt�t��R�S�X�Tt�t��U�Vt��Wt�ubt�t��Yt��Z�[t��\t�ubt��^���_�s�`�i�at��bt��c�f�dt��et�ubt��gt��ht�ubt�t��j�k�ot��l�mt��nt�ubt��pt��qt��rt�ubt��t��u�zt��vt��w�xt��yt�ubt��{t�t��|�}t��~t�ubt���t�t���������t���t�ubt���t���t�ubt���������������t�t�����t���t�ubt�t�����t���t���t�ubt���t���t���t���t���t�ubt���������t���t�����t���t�ubt�t���t�����t���t�ubt���t�t�����t���t���t�ubt���������������t���t�t�����t���t���t�ubt���t���t�t�����t���t���t�ubt�������������t���t�����t���t�ubt�t�����t���t���t�ubt�����t�����t���t���t�ubt���t�������t���t�ubt���t���t�ubt�������t�t�����t���t���t�ubt�����������t���t���t�ubt���t���t���t�ubt�t���t�����t���t�ubt�������������t�t�����t���t���t�ubt�������t�t�����t���t�ubt����t���t��t�ubt��t��t��t�ubt���t��	t��
�t��t��
t�ubt�t��t���t��t��t�ubt���+��!��t���t��t��t�ubt��t�t���t�� t�ubt�t��"�#�'t��$�%t��&t�ubt�t��(�)t��*t�ubt�t��,�-�2�.t��/t��0t��1t�ubt��3t�t��4�5t��6t�ubt��8���9���:�c�;�M�<�Bt��=t��>�?t��@t��At�ubt��C�Ht��D�Et��Ft��Gt�ubt�t��It��J�Kt��Lt�ubt��N�Y�O�Tt��Pt��Q�Rt��St�ubt�t��Ut��V�Wt��Xt�ubt�t��Z�[�_t��\�]t��^t�ubt�t��`�at��bt�ubt��d�u�e�o�ft��g�k�ht��it��jt�ubt�t��l�mt��nt�ubt��pt��qt��rt��st��tt�ubt��v�|�wt��xt�t��y�zt��{t�ubt��}t��~t��t���t���t�ubt���������t�����t���t�t�����t���t�ubt�t���t���t�����t���t���t�ubt�����������t�������t���t���t�ubt���t���t���t�ubt���t���t���t���t���t�ubt�t�����t�t���t�����t���t�ubt�������������t���t���t�����t���t���t�ubt���t�t���t���t�����t���t�ubt���t���t�t���t���t�����t���t�ubt�������t�����t�����t�t�����t���t�ubt���t�����t�����t���t�ubt�t�����t���t�ubt�����t�����t�t���t�����t���t�ubt�������t�t�����t���t���t�ubt�t���t�����t���t���t�ubt����C���&���������������t�����t�����t���t�ubt���t���t���t�ubt�t�����t�t����t��t�ubt���	t��t��t���t��t�ubt��
t��t��t��
t��t�ubt�t�����t�t���t��t��t�ubt�t��t���t��t��t�ubt�t���t�t�� t��!t��"�#t��$t��%t�ubt��'�0�(t�t��)�*t�t��+t��,�-t��.t��/t�ubt�t��1t��2�3�=t��4�5�9�6t��7t��8t�ubt��:t��;t��<t�ubt��>t�t��?�@t��At��Bt�ubt��D�y�E�N�Ft��Gt��Ht�t��It��J�Kt��Lt��Mt�ubt��O�j�P�]�Q�W�Rt��St��Tt��Ut��Vt�ubt�t��X�Yt��Zt��[t��\t�ubt��^�d�_t��`t�t��a�bt��ct�ubt�t��e�ft��gt��ht��it�ubt��k�rt��lt��mt��n�ot��pt��qt�ubt�t��st��t�ut�t��v�wt��xt�ubt��z���{���|��t��}�~t��t���t���t���t�ubt�������t�t�����t���t���t�ubt�t���t���t�����t���t�ubt�������t�t�����t���t���t���t�ubt�t���t�����t�t�����t���t�ubt���������t�����t�t���t�����t���t�ubt���t�t���t�����t���t���t�ubt�t�����t���t�t�����t���t���t�ubt���t���t���������t���������t�t�����t�t�����t���t�ubt�����t�����t�t�����t���t�ubt�t���t���t�����t���t�ubt�������t�����t���t�����t���t���t�ubt���t�t���t�����t���t�ubt���t���t�t���t�����t���t���t�ubt���t�������t�t���t�����t���t���t���t�ubt�����t���t�����t���t���t���t�ubt�t���t���t���t�����t��t�ubt��t��t��t��t��t��t��t��	���
����6����
�\��B��+��%�� �����t��t�ubt��t��t�ubt����t��t�ubt��t��t�ubt��!t��"t��#t��$t�ubt�t��&t��'�(t��)t��*t�ubt��,�7�-�2�.t��/t��0t��1t�ubt��3t��4t��5t��6t�ubt��8�=�9t�t��:�;t��<t�ubt��>t�t��?�@t��At�ubt��C�P�D�J�Et�t��Ft��G�Ht��It�ubt�t��K�Lt��Mt��Nt��Ot�ubt�t��Q�R�W�St�t��T�Ut��Vt�ubt�t��Xt��Y�Zt��[t�ubt��]���^�r�_�h�`t��at��b�e�ct��dt�ubt��ft��gt�ubt�t��i�j�nt��k�lt��mt�ubt��ot��pt��qt�ubt��s�~�t�yt��ut��v�wt��xt�ubt��zt�t��{�|t��}t�ubt��t�t���������t���t�ubt���t���t�ubt���������������t�t�����t���t�ubt�t�����t���t���t�ubt���t���t���t���t���t�ubt���������t���t�����t���t�ubt�t���t�����t���t�ubt���t�t�����t���t���t�ubt���������������t���t�t�����t���t���t�ubt���t���t�t�����t���t���t�ubt�������������t���t�����t���t�ubt�t�����t���t���t�ubt�����t�����t���t���t�ubt���t�������t���t�ubt���t���t�ubt�������t�t�����t���t���t�ubt�����������t���t���t�ubt���t���t���t�ubt�t���t�����t���t�ubt�������������t�t�����t���t���t�ubt�������t�t�����t���t�ubt����t����t��t�ubt��t��t��t�ubt���
t��t��	�
t��t��t�ubt�t��t���t��t��t�ubt���*�� ��t���t��t��t�ubt��t�t���t��t�ubt�t��!�"�&t��#�$t��%t�ubt�t��'�(t��)t�ubt�t��+�,�1�-t��.t��/t��0t�ubt��2t�t��3�4t��5t�ubt��7���8���9�b�:�L�;�At��<t��=�>t��?t��@t�ubt��B�Gt��C�Dt��Et��Ft�ubt�t��Ht��I�Jt��Kt�ubt��M�X�N�St��Ot��P�Qt��Rt�ubt�t��Tt��U�Vt��Wt�ubt�t��Y�Z�^t��[�\t��]t�ubt�t��_�`t��at�ubt��c�t�d�n�et��f�j�gt��ht��it�ubt�t��k�lt��mt�ubt��ot��pt��qt��rt��st�ubt��u�{�vt��wt�t��x�yt��zt�ubt��|t��}t��~t��t���t�ubt���������t�����t���t�t�����t���t�ubt�t���t���t�����t���t���t�ubt�����������t�������t���t���t�ubt���t���t���t�ubt���t���t���t���t���t�ubt�t�����t�t���t�����t���t�ubt�������������t���t���t�����t���t���t�ubt���t�t���t���t�����t���t�ubt���t���t�t���t���t�����t���t�ubt�������t�����t�����t�t�����t���t�ubt���t�����t�����t���t�ubt�t�����t���t�ubt�����t�����t�t���t�����t���t�ubt�������t�t�����t���t���t�ubt�t���t�����t���t���t�ubt����B���%���������������t�����t�����t���t�ubt���t���t���t�ubt�t�����t�t�����t��t�ubt���t��t��t���t��t�ubt��	t��
t��t��t��
t�ubt�t�����t�t���t��t��t�ubt�t��t���t��t��t�ubt�t���t�t��t�� t��!�"t��#t��$t�ubt��&�/�'t�t��(�)t�t��*t��+�,t��-t��.t�ubt�t��0t��1�2�<t��3�4�8�5t��6t��7t�ubt��9t��:t��;t�ubt��=t�t��>�?t��@t��At�ubt��C�x�D�M�Et��Ft��Gt�t��Ht��I�Jt��Kt��Lt�ubt��N�i�O�\�P�V�Qt��Rt��St��Tt��Ut�ubt�t��W�Xt��Yt��Zt��[t�ubt��]�c�^t��_t�t��`�at��bt�ubt�t��d�et��ft��gt��ht�ubt��j�qt��kt��lt��m�nt��ot��pt�ubt�t��rt��s�tt�t��u�vt��wt�ubt��y���z���{��t��|�}t��~t��t���t���t�ubt�������t�t�����t���t���t�ubt�t���t���t�����t���t�ubt�������t�t�����t���t���t���t�ubt�t���t�����t�t�����t���t�ubt���������t�����t�t���t�����t���t�ubt���t�t���t�����t���t���t�ubt�t�����t���t�t�����t���t���t�ubt���t���t���������t���������t�t�����t�t�����t���t�ubt�����t�����t�t�����t���t�ubt�t���t���t�����t���t�ubt�������t�����t���t�����t���t���t�ubt���t�t���t�����t���t�ubt���t���t�t���t�����t���t���t�ubt���t�������t�t���t�����t���t���t���t�ubt�����t���t�����t���t���t���t�ubt�t���t���t���t�����t���t�ubt���Y�az��.���az�az�az�az�	az�
az�az�az�
az�az�az�az�az�az�az�az�az�az�az�az��az�az�az�az�az�az�az� az�!az�"az�#az�$az�%az�&az�'az�(az�)az�*az�+az�,az�-az��az�/�D�0az�1az�2az�3az�4az�5az�6az�7az�8az�9az�:az�;az�<az�=az�>az�?az�@az�Aaz�Baz�Caz��az�Eaz�Faz�Gaz�Haz�Iaz�Jaz�Kaz�Laz�Maz�Naz�Oaz�Paz�Qaz�Raz�Saz�Taz�Uaz�Vaz�Waz�Xaz��az�Z���[���\�q�]az�^az�_az�`az�aaz�baz�caz�daz�eaz�faz�gaz�haz�iaz�jaz�kaz�laz�maz�naz�oaz�paz�-az�raz�saz�taz�uaz�vaz�waz�xaz�yaz�zaz�{az�|az�}az�~az�az��az��az��az��az��az��az�-az������az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az�-az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az�-az����������az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az8az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az8az������az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az8az��az��az��az��az��az��az��az��az��az��az��az��azazazazazazazazaz8az	�
2c?U
8#?U?U?U?U?U?U?U?U?U?U?U?U?U?U?U?U?U ?U!?U"?U�?U$?U%?U&?U'?U(?U)?U*?U+?U,?U-?U.?U/?U0?U1?U2?U3?U4?U5?U6?U7?U�?U9N:?U;?U<?U=?U>?U??U@?UA?UB?UC?UD?UE?UF?UG?UH?UI?UJ?UK?UL?UM?U�?UO?UP?UQ?UR?US?UT?UU?UV?UW?UX?UY?UZ?U[?U\?U]?U^?U_?U`?Ua?Ub?U�?Ud�e�f{gazhaziazjazkazlazmaznazoazpazqazrazsaztazuazvazwazxazyazzazS�az|az}az~azaz�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�azS�az���az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�azS�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�azS�az�����az�az�az�az�az�az�az�az�az�az�az�az���az�az�az�az�az�az�azF�azaz��az�azaz�az��az�azF�az�az�az�az�az�az�az�az�az�az�az�az�az���az�az�az�az�az�az�azF�azaz��az�azaz�az��az�azF�az��az�az�az�az�az�az�azazazazazaz
azazaz	az
azazazF�azazazazazazazazF�azazazazazazazazazazaz az!az"*#az$az%az&az'az(az)azF�azaz+,az-azaz.az/0az1azF�az3�4�5`6K7az8az9az:az;az<az=az>az?az@azAazBazCazDazEazFazGazHazIazJaz�azLazMazNazOazPazQazRazSazTazUazVazWazXazYazZaz[az\az]az^az_az�azavbazcazdazeazfazgazhaziazjazkazlazmaznazoazpazqazrazsaztazuaz�azwazxazyazzaz{az|az}az~azaz�az�az�az�az�az�az�az�az�az�az�az�az�����az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�azJ�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�azJ�az���az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�azJ�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�azJ�az�V���az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�����az�azbaz�az�azbaz�az�azazbazazazazazazazaz	az
azazaz
azazazazazazazbazazazbazazazazbaz:az az!az"az#az$az%az&az'az(az)az*az+az,az-az.az/6031az2azbaz4az5azbaz7az8az9azbaz;az<az=az>az?az@azAazBazCazDazEazFazGazHazIazJazKRLOMazNazbazPazQazbazSazTazUazbazW�XmYazZaz[az\az]az^az_az`azaazbazcazdazeazfazgazhaziazjazkazlazSaznazoazpazqazrazsaztazuazvazwazxazyazzaz{az|az}az~azaz�az�azSaz���az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�azSaz�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�azSaz�5���/�����az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�����az�az�+az�az�az�+az���az�az�+az�az�az�+az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�����az�az�+az�az�az�+az���az�az�+az�az�az�+az��az�az�az�az�az�az�az�az�az�az�az�az�az�azazaz	azaz�+azazaz�+az

azaz�+azazaz�+azazazazazazazazazazazazazazazaz az!("%#az$az�+az&az'az�+az),*az+az�+az-az.az�+az0[1F2az3az4az5az6az7az8az9az:az;az<az=az>az?az@azAazBazCazDazEaz-azGazHazIazJazKazLazMazNazOazPazQazRazSazTazUazVazWazXazYazZaz-az\q]az^az_az`azaazbazcazdazeazfazgazhaziazjazkazlazmaznazoazpaz-azrazsaztazuazvazwazxazyazzaz{az|az}az~azaz�az�az�az�az�az�az-az�������az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az���az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�
���az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�9az�az�az�az�az�az�az�az�az�az�azazazazazazazazazaz	az�9az az
azazazazazazazazazazazazazazazazazazaz�9az!az"az#az$az%az&az'az(az)az*az+az,az-az.az/az0az1az2az3az4az�9az6��w78c9N:�w;�w<�w=�w>�w?�w@�wA�wB�wC�wD�wE�wF�wG�wH�wI�wJ�wK�wL�wM�wT�wO�wP�wQ�wR�wS�wT�wU�wV�wW�wX�wY�wZ�w[�w\�w]�w^�w_�w`�wa�wb�wT�wdye�wf�wg�wh�wi�wj�wk�wl�wm�wn�wo�wp�wq�wr�ws�wt�wu�wv�ww�wx�wT�wz�w{�w|�w}�w~�w�w��w��w��w��w��w��w��w��w��w��w��w��w��w��wT�w�w�������w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w�W�w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w�W�w����w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w�W�w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w�W�w�
��7�p���B���az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�azazaz�eazazazazazazaz	az
azazaz
azazazazazazazazazaz�eaz-azazazazazazaz az!az"az#az$az%az&az'az(az)az*az+az,az�eaz.az/az0az1az2az3az4az5az6az7az8az9az:az;az<az=az>az?az@azAaz�eazCnDYEazFazGazHazIazJazKazLazMazNazOazPazQazRazSazTazUazVazWazXaz�sazZaz[az\az]az^az_az`azaazbazcazdazeazfazgazhaziazjazkazlazmaz�sazo�pazqazrazsaztazuazvazwazxazyazzaz{az|az}az~azaz�az�az�az�az�saz�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�saz�������az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az��az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az��az���az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az��az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az��az�1��az�az�az�az�az�az�az�az�az�az��azazazazazazazazaz�,az	azaz
azazaz
azazazaz�,azazazazazazazazazazaz'azaz az!az"az#az$az%az&az�,az(azaz)*az+azaz,az-.az/az0az�,az2Q3az4az5az6az7az8az9az:az;az<az=G>az?az@azAazBazCazDazEazFaz�,azHazazIJazKazazLazMNazOazPaz�,azRazSazTazUazVazWazXazYazZaz[az\f]az^az_az`azaazbazcazdazeaz�,azgazazhiazjazazkazlmaznazoaz�,azq�r�s�t�uazvazwazxazyazzaz{az|az}az~azaz�az�az�az�az�az�az�az�az�azaz�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�azaz���az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�azaz�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�azaz�)���az�az�az�az�az�az�az�az�az���az�az�az�az�az�������az�azwaz�az�azwaz���az�azwaz�az�azwaz�az�az�az�azwazaz�az�az��az�az�az�az�az�az�azwaz�az�az�az�az�azazazazazazazazaz	az

azazwazazazwazazazwazazazwazazazazazwazazaz az!"az#az$az%az&az'az(azwaz*Y+az,az-az.az/az0az1az2az3az4N5az6az7az8az9az:I;B<?=az>azwaz@azAazwazCFDazEazwazGazHazwazJazKazLazMazwazazOazPazQRazSazTazUazVazWazXazwazZaz[az\az]az^az_az`azaazbazc}dazeazfazgazhazixjqknlazmazwazoazpazwazrusaztazwazvazwazwazyazzaz{az|azwazaz~azaz��az�az�az�az�az�az�azwaz�������az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�>az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�>az���az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�>az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�>az����az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az��az�az�az�az�az�az�az�az�azazazazazazazazazaz	az
azaz��az
"azazazazazazazazazazazazazazazazazaz az!az��az#az$az%az&az'az(az)az*az+az,az-az.az/az0az1az2az3az4az5az6az��az8	�9	|:�;�<j=�^>�^?�^@�^A�^B�^C�^D�^E�^F�^G�^H�^I�^J�^KdLUMQ�^NO�^P�^���^�^RS�^T�^���^V]WZX�^Y�^���^[�^\�^���^^a_�^`�^���^b�^c�^���^e�^f�^g�^h�^i�^���^k�^l�^m�^n�^o�^p�^q�^r�^s�^t�^u�^v�^w�^x�^y�z�{�^|}�^~�^���^�^���^��^���^������^��^���^��^��^���^����^��^���^��^��^���^��^��^��^��^��^���^����^��^��^��^��^��^��^��^��^��^��^��^��^��^�������^���^��^���^�^���^��^���^������^��^���^��^��^���^����^��^���^��^��^���^��^��^��^��^��^���^��^��^��^��^��^��^��^��^��^��^��^��^��^��^�������^���^��^���^�^���^��^���^������^��^���^��^��^���^����^��^���^��^��^���^��^��^��^��^��^���^�	9�	��^��^��^��^��^��^��^��^			�^	�^	�^	�^	�^	�^	�^	�^		�^	
�^	�^J��^	
�^�^	�^	�^		�^�^	�^	�^	�^		�^	�^J��^	�^	�^	�^	�^	�^	�^	�^	 �^	!	-	"�^	#�^	$�^	%�^	&�^	'�^	(�^	)�^	*�^	+�^	,�^J��^	.�^�^	/�^	0�^	1	2�^�^	3�^	4�^	5�^	6	7�^	8�^J��^	:	[	;�^	<�^	=�^	>�^	?�^	@�^	A�^	B�^	C	O	D�^	E�^	F�^	G�^	H�^	I�^	J�^	K�^	L�^	M�^	N�^J��^	P�^�^	Q�^	R�^	S	T�^�^	U�^	V�^	W�^	X	Y�^	Z�^J��^	\�^	]�^	^�^	_�^	`�^	a�^	b�^	c�^	d	p	e�^	f�^	g�^	h�^	i�^	j�^	k�^	l�^	m�^	n�^	o�^J��^	q�^�^	r�^	s�^	t	u�^�^	v�^	w�^	x�^	y	z�^	{�^J��^�^	}	~	�		�	��^	��^	��^	��^	��^	��^	��^	��^	��^	��^	��^	��^	��^	��^	��^	��^	��^	��^	��^	��^S��^	��^	��^	��^	��^	��^	��^	��^	��^	��^	��^	��^	��^	��^	��^	��^	��^	��^	��^	��^	��^S��^	�	�	��^	��^	��^	��^	��^	��^	��^	��^	��^	��^	��^	��^	��^	��^	��^	��^	��^	��^	��^	��^S��^	��^	��^	��^	��^	��^	��^	��^	��^	��^	��^	��^	��^	��^	��^	��^	��^	��^	��^	��^	��^S��^az	�	�
9	�
	�	�	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�	�	�az	�az�az	�az	�az�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az	�az
az
az


az
az�az
az
az�az
	
!

az
az
az

az
az
az
az
az
az
az
az
az
az
az
az
az
az


az
az�az
az
 az�az
"az
#az
$az
%az
&az
'az
(az
)az
*az
+az
,az
-az
.az
/az
0az
1az
2az
3
6
4az
5az�az
7az
8az�az
:
s
;
W
<az
=az
>az
?az
@az
Aaz
Baz
Caz
Daz
Eaz
Faz
Gaz
Haz
Iaz
Jaz
Kaz
L
S
M
P
Naz
Oaz��az
Qaz
Raz��azaz
T
Uaz
Vaz��az
Xaz
Yaz
Zaz
[az
\az
]az
^az
_az
`az
aaz
baz
caz
daz
eaz
faz
gaz
h
o
i
l
jaz
kaz��az
maz
naz��azaz
p
qaz
raz��az
t
�
uaz
vaz
waz
xaz
yaz
zaz
{az
|az
}az
~az
az
�az
�az
�az
�az
�az
�
�
�
�
�az
�az��az
�az
�az��azaz
�
�az
�az��az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�
�
�
�
�az
�az��az
�az
�az��azaz
�
�az
�az��az
�p
�

�^
�
�
�
�
�
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�azaz
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�azaz
�
�
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�azaz
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�az
�azazazazazazazazaz3	
azazaz
azazazazazazazazazazazazazazazazazazaz az!az"az#az$az%az&az'az(az)az*az+az,az-az.az/az0az1az2azaz4I5az6az7az8az9az:az;az<az=az>az?az@azAazBazCazDazEazFazGazHazazJazKazLazMazNazOazPazQazRazSazTazUazVazWazXazYazZaz[az\az]azaz_�`a�bazcazdazeazfazgazhaziazjazk�lazmaznazoazp�q�rysvtazuaz�azwazxaz�azz}{az|az�az~azaz�az�����az�az�az�az�az�az���az�az�az�az�az�az�������az�az�az�az�az�az���az�az�az�az�az�az�����az�az�az�az�az�az���az�az�az�az�az�az�azaz�az�az�az��azaz�az��az�az�az�az�az�az�az�az�az�az�az�az��az�az�az�az���������az�az�az�az�az�az���az�az�az�az�az�az�����az�az�az�az�az�az���az�az�az�az�az�az�������az�az�az�az�az�az���az�az�az�az�az�az�����az�az�az�az�az�azazaz�azazaz�azazazaz	az
azazaz
azazaz�azjazazazazazazazazaz_azazaz az!@"1#*$'%az&az�az(az)az�az+.,az-az�az/az0az�az29364az5az�az7az8az�az:=;az<az�az>az?az�azAPBICFDazEaz�azGazHaz�azJMKazLaz�azNazOaz�azQXRUSazTaz�azVazWaz�azY\Zaz[az�az]az^az�az`azazaazbazcazdeazazfazghaziaz�azkazlazmaznazoazpazqazrazsazt�uazvazwazxazy�z�{�|}az~az�az�az�az�az���az�az�az�az�az�az�����az�az�az�az�az�az���az�az�az�az�az�az�������az�az�az�az�az�az���az�az�az�az�az�az�����az�az�az�az�az�az���az�az�az�az�az�az�azaz�az�az�az��azaz�az��az�az�az�����az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�
�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az
az
az
az
az�az
az
az
az
az
	az
az
az
az

az
az
az
az
az
az
az
az
az
az
az
az�az
�

�

Q

7
az
az
 az
!az
"az
#az
$az
%az
&azaz
'
(azaz
)
*azaz
+az
,
-
2
.azaz
/
0az
1az��az
3az
4az
5az
6az��az
8az
9az
:az
;az
<az
=az
>az
?az
@azaz
A
Bazaz
C
Dazaz
Eaz
F
G
L
Hazaz
I
Jaz
Kaz��az
Maz
Naz
Oaz
Paz��az
R
l
Saz
Taz
Uaz
Vaz
Waz
Xaz
Yaz
Zaz
[azaz
\
]azaz
^
_azaz
`az
a
b
g
cazaz
d
eaz
faz��az
haz
iaz
jaz
kaz��az
maz
naz
oaz
paz
qaz
raz
saz
taz
uazaz
v
wazaz
x
yazaz
zaz
{
|
�
}azaz
~
az
�az��az
�az
�az
�az
�az��az
�$
�
�
�az
�az
�az
�az
�az
�az
�az
�az
�az
�
�
�az
�az
�az
�az
�
�
�
�
�
�
�
�
�az
�azwqaz
�az
�azwqaz
�
�
�az
�azwqaz
�az
�azwqaz
�
�
�az
�az
�azwqaz
�
�
�az
�azwqaz
�az
�azwqaz
�
�
�
�
�
�
�az
�azwqaz
�az
�azwqaz
�
�
�az
�azwqaz
�az
�azwqaz
�az
�
�
�az
�azwqaz
�az
�azwqazaz
�az
�
�azaz
�
�az
�az
�azaz
�
�az
�azwqaz
�az
�az
�az
�az
�az
�az
�az
�az
�az
�
�az
�az
�az
�az
�
�
�
�
�
�
�
�az
�azwqaz
�az
�azwqaz
�
�
�az
�azwqaz
�az
�azwqaz
�
�
�az
�az
�azwqaz
�
�
�az
�azwqaz
�azazwqaz
azazwqazaz	azwqazaz
azwqazazazwqazazazazwqazazazwqazazazazazazaz azaz!"az#azwqaz%s&az'az(az)az*az+az,az-az.az/h0az1az2az3az4P5D6=7:8az9azwqaz;az<azwqaz>A?az@azwqazBazCazwqazEIFazGazHazwqazJMKazLazwqazNazOazwqazQ`RYSVTazUazwqazWazXazwqazZ][az\azwqaz^az_azwqazaazbecazdazwqazfazgazwqazaziazjkazazlmaznazoazazpqazrazwqaztazuazvazwazxazyazzaz{az|az}�~azaz�az�az���������az�azwqaz�az�azwqaz���az�azwqaz�az�azwqaz���az�az�azwqaz���az�azwqaz�az�azwqaz�������az�azwqaz�az�azwqaz���az�azwqaz�az�azwqaz�az���az�azwqaz�az�azwqazaz�az��azaz��az�az�azaz��az�azwqaz������az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�azS�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�azS�az��az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�azazazazazS�azazazazaz	az
azazaz
azazazazazazazazazazazazS�azE0azazazaz az!az"az#az$az%az&az'az(az)az*az+az,az-az.az/az��az1az2az3az4az5az6az7az8az9az:az;az<az=az>az?az@azAazBazCazDaz��azF[GazHazIazJazKazLazMazNazOazPazQazRazSazTazUazVazWazXazYazZaz��az\az]az^az_az`azaazbazcazdazeazfazgazhaziazjazkazlazmaznazoaz��azqrIs�t�u�vazwazxazyazzaz{az|az}az~azaz�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az���az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�
���az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�����az�az�az�az�az�az���az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az���az�az�azazaz�azazaz�azaz	az�az*az
azazazazazazazazazazazazazazaz# azaz�az!az"az�az$'%az&az�az(az)az�az+az,az-az.az/az0az1az2az3az4az5az6az7az8az9az:az;B<?=az>az�az@azAaz�azCFDazEaz�azGazHaz�azJ�KvLaMazNazOazPazQazRazSazTazUazVazWazXazYazZaz[az\az]az^az_az`az��azbazcazdazeazfazgazhaziazjazkazlazmaznazoazpazqazrazsaztazuaz��azw�xazyazzaz{az|az}az~azaz�az�az�az�az�az�az�az�az�az�az�az�az��az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az��az�_��az�az�az�az�az�az�az�����az�az�az�az�����������az�azv�az�az�azv�az���az�azv�az�az�azv�az�����az�azv�az�az�azv�az���az�azv�az�az�azv�az�az�����az�azv�az�az�azv�az���az�azv�az�az�azv�az�azaz��azaz��az�azv�azaz��az�az�azaz��azaz��az�az�az�azv�az�az�az�azaz��azaz��azaz�az�az��azazv�azazazazazazazaz	R
Fazaz
azaz?/ azazv�azazazv�azazazv�azazazv�az!("%#az$azv�az&az'azv�az),*az+azv�az-az.azv�az0az18253az4azv�az6az7azv�az9<:az;azv�az=az>azv�az@azazABazazCDazEazv�azazGHazIazJazazKLazazMNazOazPazQazv�azSazTazUazazVWazazXYazazZaz[az\]az^azv�az`�aazbazcazdazeazfazgazh�i�jazkazlazmazn�o�pqxrusaztazv�azvazwazv�azy|zaz{azv�az}az~azv�az�����az�azv�az�az�azv�az���az�azv�az�az�azv�az�az�����az�azv�az�az�azv�az���az�azv�az�az�azv�az�azaz��azaz��az�azv�azaz��az�az�azaz��azaz��az�az�az�azv�az�az�az�azaz��azaz��azaz�az�az��az�azv�az�az�az�az�az�az�az�az���az�az�az�az�����������az�azv�az�az�azv�az���az�azv�az�az�azv�az�����az�azv�az�az�azv�az���az�azv�az�az�azv�az�az�����az�azv�az�az�azv�az���az�azv�az�az�azv�az�azaz��azazazazv�azazazazazaz	azaz
azaz
azazv�azazazazazazazazazazazazazv�azazuJ 5!az"az#az$az%az&az'az(az)az*az+az,az-az.az/az0az1az2az3az4azR7az6az7az8az9az:az;az<az=az>az?az@azAazBazCazDazEazFazGazHazIazR7azK`LazMazNazOazPazQazRazSazTazUazVazWazXazYazZaz[az\az]az^az_azR7azaazbazcazdazeazfazgazhaziazjazkazlazmaznazoazpazqazrazsaztazR7azv�w�xazyazzaz{az|az}az~azaz�az�az���az�az�az�az�az�az�az�az�azJ�azaz�az�az�az��azaz��az�az�azJ�az�az�az�az�az�az�az�az�az�az�az���az�az�az�az�az�az�az�az�azJ�azaz�az�az�az��azaz��az�az�azJ�az���az�az�az�az�az�az�az�az�az�az���az�az�az�az�az�az�az�az�azJ�azaz�az�az�az��azaz��az�az�azJ�az�az�az�az�az�az�az�az�az�az�az���az�az�az�az�az�az�az�az�azJ�azaz�az�az�az��azaz��az�az�azJ�az�P�����`�:�0��m�m�
�v���v��yv��yT���J	w��"�yw�w�
w��w�w�mj%mmL�������<����� w*����w*!#w*"T4�i�i$�iup&j'-(+)*up)S���,�Q��.j�/��jj1j2j3j4j568j7���9�����;C<v�=v�>v�?v�@v�Av�Bv�F�v�DKv�Ev�Fv�GHv�v�Iv�Jv�azLUv�MNwORv�Pv�Qv���Sw��T��SQV�KW[wXwYZjXS	\�Kj]^_jTCTC�Ka{bq�Kc�Kdef�Kw�gb�hniljkw������L�Lm�RFop��M�Mb�b�rb�sb�tb�ub�vwyb�xb����"z�"�|�}�~kX���������;����;���wF����w�w�w��w��w�����wV�V�wcwc�wc���kX�kX���	R�R��kX��gC�gCkX��gC�gCkXT%�u���������gC�gC���"���F���4�&�����4�S45�����B��������&�&��������w���4��4a�����a�SC�u��u�u��u�v��u��u�v���u��u�"�u����]�������u���pu��u��Tzp����p�pV��v���V���v��v��v�azv��v��v���v����v��1��0�v��0v�v�����v������v�������o��Z���o�}��
������v��v������������������j~~�����S�	�[S����
��&
w�w����������?�T3
RT� ��
�
��D!$"#e��J�%�J��'?(6),*v�w�+w�v�-3.0v�/v�12J�����J�4�5����7:�8�9�gQ;<gQw�=t��>W��@NAGBDt�Ct��E���
F�
��HJ��I����K�1LM�������1OS�1PQ��R���1��TWUwU��V��wUX[YZ��S�\�S��^�_u`ubalb{�chdf�e����gw8��ij�?�k{��{�mubnqo��{�pS���rt��s����ubv�ubwx�yz|t�{���-}~8�?US���F���J�b�bS��w�+���-��9T�w����w��w��w��w�W�������e�s���,�w�,��w�w�>��������az�az�az����^�������J���^J��^�az�az�^�S�azaz�az��az�azaz�az����azaz��az�az�az�az�az�az�azaz��azaz��azaz�az�az��azaz��azaz�az�az@az�az��azaz��az�az�az�az�az�az�az�azaz��azaz�az��azaz��az�azaz�@az���azaz�az�az�az�az�az�az��az�az�azaz��az�az�az�az�azaz��azaz��azaz�az�az�az��az�az�az�azaz@�az�az��azazazazazazazazazazaz	
azazazaz
azazazazazazazazazazaz@azaz5az*&#az !"az����$���%�'�()����+/wq,wq-wq.S���0v�132���4v����6az7az8D9=v�:;<R7J�J�j>A?@�Kw�kXu�BCu��;wFazELFIGH��p�azJKv���w�MazNOwqRT�1azQ�RS�T�U�VkWmXmYeZ_[]\v���v�^�yv��y`cabT���Jdw��"�yw�fgiw�hw��w�jw�mljm�nwormpmqL���su��t��<v�����x{yw*��z��w*|~w*}T4�i�i�iup�j������up)S�����Q���j����jj�j�j�j�j���j�������������v��v��v��v��v��v��v�F�v�v����v���w��v��v��v����w�����SQ��K��w�w��jXS	��Kj���jTCTC�K�����K��K����Kw��b�������w������L�L��RF����M�Mb�b��b��b��b��b����b��b����"��"������kX����������;����;���wF����w�w�w��w��w�����wV�V�wcwc�wc���kX�kX���	R�R��kX��gC�gCkX��gC�gCkXT%�u���
���gC�gC���"���F���4�&�4S45����B	�����&�&�
w���4�4a��a�SCu��u�u�u�v�u�u�v�u�u�"�u�az �!^"<#4$)u�%&pu�'u�(Tzp*0+-p,pV�.v�/�V��1v�2v�3v�azv�5v�6v�7:v�8�19��0;v��0v�v�=>H?v�@BA��v���CED�o��ZFG�o�}��
IRJOKMv�Lv�����N�����P��Q���jSYTV~U~�WX����S�Z\[�[S����]��_y`w�aw�bmcf��d��e���gjhi��?�Tkl3
RT�nsop��
qr�
��Dtwuve��J�x�J��z�{�|}v�w�~w�v�����v��v���J�����J���������������gQ��gQw��t���W��������t��t������
��
�������������1���������1���1��������1�����wU�����wU������S���S�������ub���{������������w8�����?��{��{��ub�����{��S������������ub��ub�������t�����-��8�?US���F���J�b�bS��w�+���-��9T�w����w��w��w��w�W�������e�s���,�w�,��w�w�>��������az�az�az����^�������J���^J��^�az�az�^�S�azaz��azaz�azaz	azaz����
����
�����wqwqwqS���v����v����azaz*#v� !"R7J�J�j$'%&�Kw�kXu�()u��;wFaz+2,/-.��p�az01v���w�3az45wqRT�1az7U8.9az:az;az<5=az>�?~@_APBICFDE��v��yTGH���J�"JMKL�yw��w�NOmL�����QXRUST<���w*VWT4�iup)Y\Z[S���Q��]^���j�`oahbecd��V'���fgF�v�����iljk��SQwXmnS	jTC�Kpwqtrsw����L�uvRF����Mx{yzb����"�|}��;������������wF����w��V�wc���	����R��kXT%��gC��"F��������&�4��S45��B�������Q�&�����w�`���������4a�SC���u�v�v�"�����u�TzpV����v��1��������0v�������Z�o�}�����v���������j~����������������S����[���������������?���T3
RT��������
����De������J���w���v�J�����������J�������gQw��W������t���
���������1��������wUR����S���������w8���?���{�S���������ubt��
��'	
�-8�?U
S�F��J�bS�+-��9�HT�w�W�e�s���,w-& #!"�>����J�$%�^S���az'*()���+,����wq.az/201S�����34��v�R7J�6az7�8w9X:I;B<?=>��v��yT@A���J�"CFDE�yw��w�GHmL�����JQKNLM<���w*OPT4�iup)RUSTS���Q��VW���j�YhZa[^\]��V'���_`F�v�����becd��SQwXfgS	jTC�Kipjmklw����L�noRF����Mqtrsb����"�uv��;���x�y�z�{~|}wF����w�V�wc���	����R��kXT%��gC��"F��������&�4��S45��B�������Q�&�����w�`���������4a�SC���u�v�v�"�����u�TzpV����v��1��������0v�������Z�o�}�����v���������j~����������������S����[���������������?���T3
RT��������
����De������J���w���v�J�����������J�������gQw��W������t���
���������1��������wUR����S���������w8���?���{�S��������������ub��t��
��'�-8�?US�F��J�	
bS�+-
��9�HT�w�W�e�s���,w&�>����J��^S���az #!"���$%����wq'az(+)*S�����,-��v�R7J�/0�1�2r3j4N5m6G7C8=9;:v���v�<�yv��y>A?@T���JBw��"�yw�Dw�EFw��w�HmImJLKmw�mmMmazOjP^QXmRSVTUmL�������W<�Y[��Z��w*w*\]�iw*T4_j`eab�iupcd)S���Q�fhg���ij���jkjljmjnjojpjq���s}tv�uv�vv�wv�xv�y{z�����|v�F�v�v�~�v����v��v����������w�w�wSQw��Kw����jw�XS	��j�jTC��KTC�K���b��K��K����K��w��K��Kw���w�������L���L�RF��b�����M��M�Mb������kX������b����"���"�����"��;��;��������wF�wwF���ww���w�V�wc��wc����	R���kXkX��gCkX��gCkX��gCkXT%�u�����gC�����gC�gC����"F�����&�4�4��4S4���������5��B������&���&��������w�4���4a�a�SC�u��u���u��u�v����v��v�v�v��u�v��"�u������'��	u�u�ppu�Tzp�V�pV�
v�v�v�
v��1��0�0v�v�v�v�v�v���������Z�o#v�!�o �}�"v��
v�v�$%����&���(S)w�*?+6,/��-.~�j~0312~����45�S�S���7;89�[�:������<=>�����?@MAGBECD�T3
RTF��HJ�
I�
�KL�De�Nw�ORPQ�J�J���w�TaUXw�Vw�Ww�v�Y�v�Z[^\]v�J���_`��J����b�c~dfegQ��g|gQhiw�gQjkgQlgQmgQngQogQgQpqgQgQrsgQtgQugQgQvgQwgQxgQyzgQ{gQ@gQw�}w����t����W��t�t��t����������
��
�����������1��1���������1����������������1���wU�����az����wU���S��S���������{�������w8���?��?��{��{��ub�ub�������S���������������������������������������������������������������@���ub�������ub�ub�ub�ub�ubt���w�����������-8��F�?US����b�J���+bS��w���+�-���w�9T�az�az�����w��w����w�W�e�s���w�����,�,���w��>������^��^��J��az�az�az�^S�azazazazazazazazaz	azaz
azaz
azazazazazazazazazazazazazazaz@azazazaz az!0az"az#$,%)az&'(az����*���+�-�./����1az2=37wq4wq5wq6S���8v�9;:���<v����>I?Bv�@AJ�v�R7CFDE�Kw�jkXGHu�u��;wFJQKNLMaz��p�OPazv���RazSTw�wqRT�1VazW�X Y�Z�[�\t]m^o_k`eacbv���v�d�yv��yfighT���Jjw��"�yw�lw�mnw��w�pmqmrmsmw�mujv�w~mxy|z{mL�������}<�������w*w*���iw*T4�j�����iup��)S���Q��������j���j�j�j�j�j�j�j�������v��v��v��v��v����������v�F�v�v����v����v��v����������w�w�wSQw��Kw����jw�XS	��j�jTC��KTC�K���b��K��K����K��w��K��Kw���w�������L���L�RF��b�����M��M�Mb������kX������b����"���"�����"��;��;��������wF�wwF���ww���w�V�wc��wc����	R���kXkX��gCkX��gCkX��gCkXT%�u���gC�����gC�gC����"F���&�4�4�4S4	��5��B��
�&���&�
��w�4�4a�a�SC�u�u�u�u�v�v�v�v�v�u�v�"�u�!az"�#Q$;%/u�&'+u�()p*pu�Tzp,-�.V�pV�0v�152v�v�34v�azv�v�67:89v��1��0�0v�v�<=Fv�>?Bv�@v�Av�����CDE����Z�oGMHv�IK�oJ�}�Lv��
v�v�NO����P���R}Sw�TiU`VY��WX~�j~Z][\~����^_�S�S���aebc�[�d������fgh�����?jwkqlomn�T3
RTp��rt�
s�
�uv�De�xw�y|z{�J�J���w�~��w��w��w�v���v������v�J�������J�����������gQ����gQ�gQw�w��w�����t����W��t�t��t����������
��
�����������1��1���������1����������������1����wU����wU���S��S���������{�������w8���?��?��{��{��ub�ub��������S����ub�������ub�ub�ub�ub�ubt���w�����������-8��F�?US����b�J���+bS��w���+�-���w�9T�az�az�����w��w����w�W�e�s���w�����,�,���w��>������^��^��J��az�az�az�^S�azazazazazazaz	
az����
���������az wqwqwqS���v����v����!,"%v�#$J�v�R7&)'(j�Kw�kX*+u�u��;wF-4.1/0az��p�23azv���5az67w�wqRT�19@:=;@<@b�@>@?@i�@ADB@C@L�@E@F@d@HjIXJQKNL@M@b�@O@P@�b@RUS@T@d@V@W@d{@YcZ`[@\@]@^@_@b�@a@b@M@dge@f@b�@h@i@`�@k �l �msn@o@p@q@r@L@t@u@v@w�x�yDz:{�|�}�~�N�NNm+�N�NN�N��N�N�N�N�N��Nm+m+N�N�N��N��NN��N�N�N�N�NQ�N�[��Q��Q��Q�Q���Q��Q��Q�OTQ���N��N�N�NN�N�N�N���N���NQ�\;N���Q�Q�[��Q�Q�N�N��N�NQ����N�N�N�NNQ��N�N���NNN;�NN��N�N�NQ�N�N�N���NN��N�N;N;��N;N;��N;�N;�N;OqN;�N�NN�N;��N;N;�N;�N;��N;N;�N;����N;�N;���N;�N;�N;���N;�N;N;��N;�N;�N;N;Q��N;N;��N;�N;N;��N;N;N�N;�N;��N;�N;N;N;N;N;N;N;Q�N;N;N;N;	
N;N;N;N;
N;OTN;N;N;N;N;N;N;N;N;N;N;N;N;N;N;Q�,N;N; N;!"N;N;#N;$%N;&N;'N;N;()N;*N;+N;Q�N;-N;.N;N;/0N;N;12N;3N;4N;5N;N;67N;8N;9N;N;Q�;NN<N=>A?NN@OTNNBNCQ�NE�FdGVHPIL�JK���MN���O��QR�vqSUT|�vq|�|�f?W^X[Y��f?Zf?���\]���_c`a���b�e?e?�evfngkhjit��t�t��Ul���Um�U��or�pq�stu-w}xy-��z|{<��<<K~�[K�K[k��zkz����������z�����������������0���0��0�������������������vq�vq|�����|�f?���f?�������������������e?�e?���t���t��U����U������������--�����<������<K�[K[��k�kzz�����������������0���0������������������-<����KZix������������������!0������?zN��]l{�������������������x��ty"1@��	O^m|
�k��
vq���|�|�|�|�tyT4& ���������!"�vq#%$|�vq|�|�f?'.(+)��f?*f?���,-���/301���2�e?e?�5F6>7;8:9t��t�t��U<���U=�U��?B�@A�CDE-GMHI-��JLK<��<<KNQO[KPK[kRSzkzUyVeW]X\YZz��[����^b_a`�����0c��0d�0�fpgkhj�i����lnm���vqovq|�qurs|�f?t��f?��vx�w����z�{�|�}~e?�e?���t���t��U����U������������--�����<������<K�[K[��k�kzz�����������������0���0�� t������������������-<����KZix������������������!0������?zN��]l{����������������������x��ty��"1@��������O^m|���k�����vq����|��|���|�|�ty� %� �����������������������vq���|�vq|�|�f?�������f?�f?��������    ��� �e?e?�       	  
t��t�t��U 
���U �U��  �  �   -    -��   <��<<K  "  [K !K[k # $zkz & J ' 6 ( . ) - * +z�� ,���� / 3 0 2 1�����0 4��0 5�0� 7 A 8 < 9 ;� :���� = ? >���vq @vq|� B F C D|�f? E��f?�� G I� H���� K ` L V M R N P Oe?�e?� Q�t� S Tt��U U���U�� W [ X Z� Y� \ ^ ]--�� _��< a j b f c d<K e[K[ g ik hkzz� k p l n m���� o�� q r��0 s��0� u|� v � w � x  y | z {���� } ~-< � � � �KZix � ����� � � � � � ����� � �!0 � � � ���?zN � �]l{� � � � � � � � ����� � ���� � � � �x��ty � �"1@�� � � � � � �O^m| � ��k�� � � �vq��� �|� �|� � �|�|�ty � � �@ �@ak@ �@ �@ �@ �@ �@M�@ � � � � �@ �@az@ �@ �@c�@ � � �@ �@ �@ �@ �@M@ �@ �@N@ �# �!� �!b �! � � � � � � � � �@ �@`�@ �@ �@��@ � � �@ �@n�@ �@ �@L@ � � � � �@ �@ �@ �@ �@L@ �@ �@ �@ �@ �@b�@ � � �@ �@d@ �@ �@`�@ �! �! �! �@!@d{@!@!@d]@!!!@!@��@!	@!
@cW@!!!
!!@!@e�@!@!@`�@!!!@!@!@!@!@b�@!@!@`�@!!C!!.! !'!!!$!"@!#@d{@!%@!&@d{@!(!+!)@!*@b�@!,@!-@`�@!/!9!0!3!1@!2@l�@!4@!5@!6@!7@!8@e�@!:!@!;@!<@!=@!>@!?@d@!A@!B@L@!D!S!E!L!F!I!G@!H@N@!J@!K@M@!M!P!N@!O@M@!Q@!R@L�@!T![!U!X!V@!W@b�@!Y@!Z@L@!\!_!]@!^@az@!`@!a@b�@!c!�!d!�!e!t!f!m!g!j!h@!i@`�@!k@!l@l�@!n!q!o@!p@d@!r@!s@M@!u!!v!|!w@!x@!y@!z@!{@l@!}@!~@g4@!�!�!�@!�@!�@!�@!�@M�@!�@!�@N@!�!�!�!�!�!�!�@!�@L�@!�@!�@`�@!�!�!�@!�@�b@!�@!�@ؤ@!�!�!�!�!�@!�@b�@!�@!�@`�@!�!�!�@!�@M�@!�@!�@iM@!�!�!�!�!�!�!�!�!�@!�@b�@!�@!�@L@!�!�!�@!�@cW@!�@!�@`�@!�!�!�!�!�@!�@j*@!�@!�@e�@!�!�!�@!�@c�@!�@!�@L@!�!�!�!�!�!�!�@!�@b�@!�@!�@d@!�!�!�@!�@��@!�@!�@c�@!�!�!�!�!�@!�@b�@!�@!�@L@!�!�!�@!�@xv@!�@!�@c�@!�"�!�"C!�"	!�!�!�!�!�!�!�@!�@b�@!�@!�@cW@!�!�!�@!�@cW@!�@!�@d@!�"!�!�!�@!�@b�@"@"@p�@"""@"@d@"@"@b�@"
"4"""""
@"@p�@"@"@"@"@"@N@"""@"@d{@"@"@"@"b�"b�b�"" b�"!b�""b�"#b�"$b�"%b�"&b�"'b�"(b�")b�"*b�"+b�","1"-"/".b�b�p�b�"0b�b�"2b�b�"3p�b�"5"<"6"9"7@"8@b�@":@";@M@"="@">@"?@N@"A@"B@M@"D"c"E"T"F"M"G"J"H@"I@nW@"K@"L@`�@"N"Q"O@"P@l�@"R@"S@j�@"U"\"V"Y"W@"X@c�@"Z@"[@L@"]"`"^@"_@c�@"a@"b@M@"d"v"e"l"f"i"g@"h@`�@"j@"k@li@"m"p"n@"o@N@"q@"r@"s@"t@"u@d@"w"~"x"{"y@"z@b�@"|@"}@d@""�"�@"�@b�@"�@"�@g4@"�"�"�"�"�"�"�"�"�"�"�@"�@M@"�@"�@az@"�"�"�@"�@xv@"�@"�@c�@"�"�"�"�"�@"�@b�@"�@"�@L@"�"�"�@"�@ak@"�@"�@"�@"�@"�@l�@"�"�"�"�"�"�"�@"�@b�@"�@"�@p�@"�"�"�@"�@c�@"�@"�@d@"�"�"�"�"�@"�@`�@"�@"�@N@"�"�"�@"�@az@"�@"�@c�@"�"�"�"�"�"�"�"�"�@"�@"�@"�"�"�"�d�N�m�"�"�m��o�su"�@"�@d{@@"�"�@"�@M@"�"�"�"�"�@"�@b�@"�@"�@L@"�"�"�@"�@�,@"�@"�@d{@"�#"�"�"�"�"�@"�@b�@"�@"�@"�@"�@"�@M@"�"�"�@"�@"�@"�@"�@xv@#@#@L�@##
###@#@c�@#@#	@b�@###@#
@ak@#@#@N@#$ ##�##V##7##(##!###@#@`�@#@#@#@#@# @N@#"#%##@#$@d@#&@#'@m�@#)#0#*#-#+@#,@xv@#.@#/@n�@#1#4#2@#3@d@#5@#6@d@#8#G#9#@#:#=#;@#<@xv@#>@#?@N@#A#D#B@#C@c�@#E@#F@b�@#H#O#I#L#J@#K@b�@#M@#N@p�@#P#S#Q@#R@az@#T@#U@i�@#W#y#X#j#Y#`#Z#]#[@#\@`�@#^@#_@d@#a#d#b@#c@l@#e@#f@#g@#h@#i@M@#k#r#l#o#m@#n@c�@#p@#q@L�@#s#v#t@#u@az@#w@#x@b�@#z#�#{#�#|##}@#~@c�@#�@#�@L�@#�#�#�@#�@d@#�@#�@`�@#�#�#�#�#�@#�@b�@#�@#�@E@#�#�#�@#�@az@#�@#�@c�@#�#�#�#�#�#�#�#�#�#�#�@#�@c�@#�@#�@L�@#�#�#�@#�@az@#�@#�@`�@#�#�#�#�#�@#�@`�@#�@#�@#�@#�@#�@g_@#�#�#�@#�@��@#�@#�@q�@#�#�#�#�#�#�#�@#�@#�@#�@#�@d@#�@#�@L�@#�#�#�@#�@d@#�@#�@L@#�#�#�#�#�@#�@`�@#�@#�@L@#�#�#�@#�@g_@#�@#�@w�@#�$#�#�#�#�#�#�#�@#�@xv@#�@#�@y7@#�#�#�@#�@L�@#�@#�@`�@#�#�#�#�#�@#�@`�@#�@#�@N@#�#�#�@#�@N@#�@#�@#�@#�@$@M@$$$$
$$$@$@c�@$@$	@d@$$$@$
@d@$@$@d@$$$$$@$@b�@$@$@`�@$$$@$@az@$@$@i�@$!$�$"$a$#$B$$$3$%$,$&$)$'@$(@az@$*@$+@xv@$-$0$.@$/@L@$1@$2@d@$4$;$5$8$6@$7@b�@$9@$:@d{@$<$?$=@$>@e�@$@@$A@p�@$C$R$D$K$E$H$F@$G@L�@$I@$J@N@$L$O$M@$N@c�@$P@$Q@L@$S$Z$T$W$U@$V@`�@$X@$Y@c�@$[$^$\@$]@��@$_@$`@c�@$b$�$c$u$d$n$e$h$f@$g@N@$i@$j@$k@$l@$m@N@$o$r$p@$q@c�@$s@$t@L@$v$}$w$z$x@$y@`�@${@$|@l�@$~$�$@$�@d@$�@$�@$�@$�@$�@`�@$�$�$�$�$�$�$�@$�@az@$�@$�@`�@$�$�$�@$�@b�@$�@$�@`�@$�$�$�$�$�@$�@az@$�@$�@aN@$�$�$�@$�@b�@$�@$�@L�@$�$�$�$�$�$�$�$�$�$�$�@$�@az@$�@$�@h@$�$�$�@$�@$�@$�@$�@b�@$�@$�@$�@$�@$�@q~@$�$�$�$�$�@$�@b�@$�@$�@`�@$�$�$�@$�@L�@$�@$�@p�@$�$�$�$�$�$�$�@$�@lx@$�@$�@p�@$�$�$�@$�@c�@$�@$�@$�@$�@$�@xv@$�$�$�$�$�@$�@d@$�@$�@E@$�$�$�@$�@$�@b�$�b�$�x�b�$�@$�@L@$�%$�%$�$�$�$�$�@$�@xv@$�@$�@L@$�%$�@$�@gn@%@%@L@%%%%%@%@d@%	@%
@M@%%%
@%@N@%@%@`�@%%"%%%%%@%@aN@%@%@az@%%%@%@li@% @%!@`�@%#%D%$%>%%@%&@%'@%(d%)d%*d%+%:%,d%-d%.d%/d%0dd%1%2%6%3d%4d%5db�d%7d%8d%9dd%;d%<d%=do�d%?@%@@%A@%B@%C@L�@%E%K%F@%G@%H@%I@%J@L�@%L@%M@`�@%OE4%P7�%Q+%R(c%S'C%T&�%U&l%V%u%W%f%X%_%Y%\%Z@%[@`�@%]@%^@az@%`%c%a@%b@b�@%d@%e@y7@%g%n%h%k%i@%j@c�@%l@%m@M@%o%r%p@%q@L@%s@%t@L�@%v&Z%w%~%x%{%y@%z@M@%|@%}@y7@%&W%�@%�@%�@%�c�%�&V%�c�%�&S%�c�%�%�c�%�%�%�%�%�%�%�c���%��%�%��%�%�%�%�%�%�%�%�%�%��			"%�%��	1	@	O%�%�%�%��I	^��	m%�%��Q	|	�	�%�%�%�%�%�%��m�O[�%�%�	�	�	�vb%�%�%�%��	�	�	�%�%�

o%�%�%�%�%�%�%�%�
!
0�y�i%�%��.
?��t�%�%�%�%�
N
]
l
{%�%�"y
��
�%��%��%����
�%�%�c�%�%�c�%�c�%�c�%�c�%�c�%�c�%�c�c�
�c�%�%�%�%�%�%�%�%�c�%�%�%�%�%�
�c�
�Ԧ%�Ԧ
�%�%�
�
�%�c�
��
�Ԧ%�%�Ԧ
�
���%�c�%�%��O��c�%�%�%�%�c��.c��O%�c�c�%�%�
�%�c�%�c�%�c�%�%�%�%�%�c�Ԧc�%�c�c�%�%�%�c��yc�%�c�Ԧc�%�&M%�&K%�&.c�%�c�%�&& &&&&
&c�&&c�&&c�c�&c�&	c�c�Ԧc�&&c�&
c�c�&c�Ԧ&&&&&c�c�&&c�c��&c�&&c�&�ic�c�&c�Ԧc�&&c�c�&c�&c�Ԧ&!c�&"c�&#&*&$&'&%c�&&c�c�&(c�&)c�c�Ԧ&+c�&,c�c�&-c�Ԧc�&/c�&0&1&D&2&B&3&7&4c�&5c�&6c��O�y&8&?&9&<&:&;
��
�&=&>
�c�c�&@
�&Ac�+c�&Cc�Ԧc�c�&Ec�&Fc�&Gc�&Hc�&Ic�&Jc�:&Lc�c��&Nc�&O&R&P&Qc��O�c��c�&Tc�c�&Uc��x^c�&X@&Y@d{@&[&b&\&_&]@&^@L�@&`@&a@b�@&c&f&d@&e@d{@&g@&h@&i@&j@&k@g_@&m&�&n&�&o&y&p&v&q@&r@&s@&t@&u@b�@&w@&x@g4@&z&}&{@&|@iM@&~@&@&�@&�@&�@d@&�&�&�&�&�@&�@y7@&�@&�@M@&�&�&�@&�@d@&�@&�@g4@&�&�&�&�&�&�&�@&�@cW@&�@&�@N@&�&�&�@&�@L@&�@&�@i�@&�&�&�&�&�@&�@d{@&�@&�@&�@&�@&�@d@&�&�&�@&�@`�@&�@&�@ak@&�&�&�&�&�&�&�&�&�&�&�@&�@g_@&�@&�@b�@&�&�&�@&�@&�@&�@&�@L�@&�@&�@L@&�&�&�&�&�@&�@iM@&�@&�@xv@&�&�&�@&�@b�@&�@&�@h@&�&�&�&�&�&�&�@&�@&�@&�@&�@az@&�@&�@&�@b�@&�&�&�@&�@M@&�@&�@��@&�&�&�&�&�@&�@M@&�@&�@b�@&�&�&�@&�@M@&�@&�@��@&�'&�'&�'&�''@'@L@'@'@d{@''	'@'@iM@'
@'@M�@'
''''@'@az@'@'@'@'@'@`�@'''@'@L�@'@'@d@''1' '*'!'$'"@'#@b�@'%@'&@''@'(@')@c�@'+'.',@'-@N@'/@'0@b�@'2'<'3'6'4@'5@b�@'7@'8@'9@':@';@i�@'='@'>@'?@M�@'A@'B@nW@'D'�'E'�'F'e'G'V'H'O'I'L'J@'K@M�@'M@'N@az@'P'S'Q@'R@az@'T@'U@xv@'W'^'X'['Y@'Z@M@'\@']@L@'_'b'`@'a@i�@'c@'d@A@'f'x'g'n'h'k'i@'j@`�@'l@'m@d@'o'r'p@'q@L@'s@'t@'u@'v@'w@L@'y'�'z'}'{@'|@`�@'~@'@az@'�'�'�@'�@d{@'�@'�@L@'�'�'�'�'�'�'�'�'�@'�@lx@'�@'�@L@'�'�'�@'�@m�@'�@'�@d@'�'�'�'�'�@'�@`�@'�@'�@L�@'�'�'�@'�@L�@'�@'�@az@'�'�'�'�'�'�'�@'�@p�@'�@'�@L@'�'�'�@'�@L@'�@'�@'�@'�@'�@c�@'�'�'�'�'�@'�@t�@'�@'�@`�@'�'�'�@'�@xv@'�@'�@N@'�('�'�'�'�'�'�'�'�'�@'�@'�@'�@'�@M@'�@'�@d@'�'�'�@'�@N@'�@'�@t�@'�'�'�'�'�@'�@��@'�@'�@g_@'�'�'�@'�@L�@'�@'�@d@'�('�'�'�'�'�@'�@j�@'�@'�@'�@'�@'�@��@'�'�'�@'�@c�@'�@'�@nW@(((((@(@b�@(@(@l@(	((
@(@�@(
@(@(@(@(@L@((8((#(((((@(@xv@(@(@p�@(( (@(@L�@(!@("@L�@($(1(%(+(&@('@((@()@(*@N@(,@(-@(.@(/@(0@L@(2(5(3@(4@M@(6@(7@`�@(9(M(:(D(;(>(<@(=@g4@(?@(@@(A@(B@(C@`�@(E(H(F@(G@L@(I@(J@(K@(L@d@(N(\(O(R(P@(Q@aN@(S@(T@(U@(V(Y(W(Xq�ddc�(Z([c�d�osu(](`(^@(_@`�@(a@(b@c�@(d)�(e)(f(�(g(�(h(w(i(p(j(m(k@(l@p�@(n@(o@d@(q(t(r@(s@E@(u@(v@cW@(x((y(|(z@({@b�@(}@(~@N@(�(�(�@(�@nW@(�@(�@L�@(�(�(�(�(�(�(�@(�@nW@(�@(�@c�@(�(�(�@(�@ak@(�@(�@d@(�(�(�(�(�@(�@c�@(�@(�@lx@(�(�(�@(�@(�@(�@(�@m�@(�@(�@M@(�(�(�(�(�(�(�(�(�@(�@(�@(�@(�@aN@(�@(�@(�@(�@(�@iM@(�(�(�@(�@`�@(�@(�@iM@(�(�(�(�(�@(�@(�@(�@(�@g_@(�@(�@b�@(�(�(�@(�@L�@(�@(�@p�@(�(�(�(�(�(�(�@(�@|�@(�@(�@N@(�(�(�@(�@cW@(�@(�@M@(�(�(�(�(�@(�@M@(�@(�@rf@(�)
(�@(�@(�@(�M�nW(�(�[(�M�(�M�(�M�(�M�(�)
(�(�(�[M�[[(�(�[(�M�(�M�(�M�(�M�(�M�)M�)M�)M�)M�)M�)M�)M�)M�)M�)	M�[M�)M�)M�[M�)@)@)@)@)@`�@))l))A))/))%)))@)@t�@)@)@)@A)) AA)!A)")#AA)$�A)&),)'@)(@))@)*b�)+b�p�b�)-@).@d@)0)7)1)4)2@)3@j*@)5@)6@ՙ@)8);)9@):@�F@)<@)=@)>@)?@)@@ak@)B)W)C)M)D)J)E@)F@)G@)H@)I@g_@)K@)L@L�@)N)Q)O@)P@j�@)R@)S@)T@)U@)V@g4@)X)b)Y)_)Z@)[@)\@)]@)^@M@)`@)a@b�@)c)f)d@)e@j�@)g@)h@)i@)j@)k@N@)m)�)n)})o)v)p)s)q@)r@`�@)t@)u@�,@)w)z)x@)y@g4@){@)|@`�@)~)�))�)�@)�@)�@)�lx)�lx)�lx)�lx)�lx)�lx)�lx)�lx)�lx)�lx)�lx)�lx)�lx)�lx)�lx)�lx)�lxlx)�lx��)�@)�@y7@)�)�)�@)�@N@)�@)�@L�@)�)�)�)�)�)�)�@)�@l@)�@)�@M@)�)�)�@)�@b�@)�@)�@g_@)�)�)�)�)�@)�@M@)�@)�@)�@)�@)�@g4@)�)�)�@)�@L�@)�@)�@iM@)�*K)�*)�)�)�)�)�)�)�)�)�@)�@)�@)�@)�@L@)�@)�@b�@)�)�)�@)�@�@)�@)�@N@)�)�)�)�)�@)�@M�@)�@)�@cW@)�)�)�@)�@ak@)�@)�@g_@)�)�)�)�)�)�)�@)�@lx@)�@)�@)�@)�@)�@b�@)�)�)�@)�@c�@)�@)�@)�@)�@)�@iM@)�*)�*)�@*@E@*@*@xv@***@*@M@*	@*
@ak@**,*
******@*@aN@*@*@h@***@*@`�@*@*@*@M�@**%**"* @*!@M�@*#@*$@b�@*&*)*'@*(@L@**@*+@ak@*-*<*.*5*/*2*0@*1@N@*3@*4@xv@*6*9*7@*8@c�@*:@*;@ty@*=*D*>*A*?@*@@`�@*B@*C@M�@*E*H*F@*G@`�@*I@*J@c�@*L*�*M*�*N*]*O*V*P*S*Q@*R@M@*T@*U@p�@*W*Z*X@*Y@h@*[@*\@e�@*^*e*_*b*`@*a@��@*c@*d@`�@*f*�*g@*h@*i@*j@*k@*l@*m`�*n`�*o`�*p`�*q`�*r`�*s`�*t*�*u`�*v`�*w`�*x`�*y**z*}*{*|�%�f�`�*~`��4,`�*�*�`�`��*�`�*�`�*�`�*�`�*�`�*�*�`��*�`�`��*�@*�@M@*�*�*�*�*�*�*�@*�@d@*�@*�@*�@*�@*�@c�@*�*�*�@*�@aN@*�@*�@L@*�*�*�*�*�@*�@*�@*�@*�@d@*�@*�@L@*�*�*�@*�@L@*�@*�@cW@*�*�*�*�*�*�*�*�*�@*�@*�@*�@*�@b�@*�@*�@iM@*�*�*�@*�@d@*�@*�@cW@*�*�*�*�*�@*�@*�@*�@*�@cW@*�@*�@g4@*�*�*�@*�@d@*�@*�@*�@*�@*�@M�@*�*�*�*�*�*�*�@*�@L@*�@*�@iM@*�*�*�@*�@aN@*�@*�@e�@*�*�*�*�*�@*�@*�@*�@*�@li@*�@*�@*�@*�@*�@gQ@*�+*�@*�@*�@*�@+@N@+@+@+@+@+@q~@+-�+	,�+
+�++M++.+
++++++@+@q~@+@+@M@+++@+@+@+@+@xv@+@+@iM@+ +'+!+$+"@+#@c�@+%@+&@aN@+(+++)@+*@b�@+,@+-@`�@+/+>+0+7+1+4+2@+3@ak@+5@+6@N@+8+;+9@+:@L@+<@+=@`�@+?+F+@+C+A@+B@N@+D@+E@b�@+G+J+H@+I@B�@+K@+L@L@+N+�+O+a+P+Z+Q+T+R@+S@j*@+U@+V@+W@+X@+Y@xv@+[+^+\@+]@`�@+_@+`@g_@+b+}+c+f+d@+e@d@+g@+h@+i@+jd+kd+ld+md+nd+od+pd+qd+rd+sd+td+ud+vd+wdd+x+yd+zd+{+|�Zb�dm�+~+�+@+�@d@+�@+�@L@+�+�+�+�+�+�+�@+�@N@+�@+�@xv@+�+�+�@+�@`�@+�@+�@iM@+�+�+�+�+�@+�@az@+�@+�@g4@+�+�+�@+�@b�@+�@+�@g_@+�+�+�+�+�+�+�+�+�+�+�@+�@g4@+�@+�@N@+�+�+�@+�@b�@+�@+�@p�@+�+�+�+�+�@+�@M@+�@+�@c�@+�+�+�@+�@N@+�@+�@az@+�+�+�+�+�+�+�@+�@cW@+�@+�@M@+�+�+�@+�@c�@+�@+�@c�@+�+�+�+�+�@+�@`�@+�@+�@L�@+�+�+�@+�@iM@+�@+�@az@+�,`+�,N+�,+�+�+�@+�@+�@N+�N+�N+�+�N+�N+�N+�N+�N+�N+�N+�N+�N+�N+�N+�N+�N+�N+�N_FN+�@+�@,@,@,@t�@,,,@,@d@,@,	@,
@,@,@,
@,�-,�-,�-,�-,�-,�-,�-,�-,�-,�-,�-,�-,�-,�-,,=,,-,�-,�-, �-,!�-,"�-,#�-,$�-,%�-�-,&,'�-,(�-�-,)�-,*,+�-,,�-�-u�,.�-,/�-,0�-,1�-,2�-,3�-,4�-�-,5,6�-,7�-,8�-,9�-,:�-,;�-,<�-�-u��-,>,?�-,@�-,A�-,B�-,C�-,D�-,E�-,F�-�-,G�-,H,I�-,J�-,K�-�-,L�-,Mu��-,O,Y,P,S,Q@,R@b�@,T@,U@,V@,W@,X@L�@,Z,],[@,\@g4@,^@,_@N@,a,w,b,i,c,f,d@,e@iM@,g@,h@L@,j,t,k@,l@,m@,n,q,o,pߺr���,r,si�i�E��,u@,v@cW@,x,�,y,|,z@,{@nW@,}@,~@,@,�@,�@b�@,�,�,�@,�@N@,�@,�@`�@,�-(,�,�,�,�,�,�,�,�,�,�,�@,�@j*@,�@,�@,�@,�@,�@L@,�,�,�@,�@cW@,�@,�@L�@,�,�,�,�,�@,�@L�@,�@,�@L@,�,�,�@,�@M@,�@,�@d@,�,�,�,�,�,�,�@,�@,�@,�@,�@M�@,�@,�@`�@,�,�,�@,�@d@,�@,�@N@,�,�,�,�,�@,�@M@,�@,�@d@,�,�,�@,�@p�@,�@,�@,�@,�d{,�d{,�d{,�d{,�d{,�d{,�d{,�d{,�d{,�d{,�d{,�d{,�d{,�d{,�d{,�d{,�d{,�d{�jd{,�-,�,�,�,�,�,�,�@,�@aN@,�@,�@L@,�,�,�@,�@cW@,�@,�@M@,�,�,�,�,�@,�@`�@,�@,�@iM@,�-,�@,�@M@-@-@az@------	-@-@L@-
@-@-@-
@-@xv@---@-@b�@-@-@M�@-----@-@li@-@-@L@--%- @-!@-"@-#@-$@i�@-&@-'@M@-)-n-*-L-+-=-,-6---0-.@-/@N@-1@-2@-3@-4@-5@cW@-7-:-8@-9@i�@-;@-<@b�@->-E-?-B-@@-A@b�@-C@-D@M@-F-I-G@-H@N@-J@-K@d@-M-_-N-U-O-R-P@-Q@M�@-S@-T@M@-V-Y-W@-X@L�@-Z@-[@-\@-]@-^@`�@-`-g-a-d-b@-c@ty@-e@-f@az@-h-k-i@-j@`�@-l@-m@b�@-o-�-p--q-x-r-u-s@-t@L@-v@-w@nW@-y-|-z@-{@N@-}@-~@b�@-�-�-�-�-�@-�@-�@-�@-�@nW@-�@-�@aN@-�-�-�@-�@M@-�@-�@cW@-�-�-�-�-�-�-�@-�@L@-�@-�@-�@-�@-�@g_@-�-�-�@-�@iM@-�@-�@cW@-�-�-�-�-�@-�@i�@-�@-�@-�@-�@-�@xv@-�-�-�@-�@iM@-�@-�@L@-�6V-�5�-�5�-�5\-�5M-�5F-�-�-�@-�@`�@-�@-�@-�@-�0�-�0C-�az-�/K-�.d-�-�-�-�-�az-�az-�-�-�az-�m-�m-�-�m-�-�-�-�azmv�-�m-�mgQaz-�m-�m-�-�-�azu�v�gCaz{�az-�-�-�az-�azmaz-�azaz-�-�az-�az-�az-�az-�az-�az-�azaz-��az-�.-�azaz-�-�.az-�-�az-�-�-�az-�az-�az-�az-�azv�az-�az-�az-�az-�az.azgQv�az......wwb�w..w�.	w�.
w�.w�.w�.
w�.w�.w�.w�.w�.w�.w�.w�.w�.w�.w�.w�.w�.w�.w�ww�..azv�v��. .a.!.#."azu�az.$az.%.A.&az.'azaz.(.).5.*az.+az.,az.-azb�..b�./b�.0b�.1b�.2b�.3b�.4b�az.6az.7az.8az.9azw.:w.;w.<w.=�
.>�
.?�
.@�
az.B.^.C.L.D.Gaz.E.Fazv�az.Haz.Iaz.Jaz.Kaz��az.M.Y.N.U.O.R.Paz.Qazv�az.Saz.Tazwcaz.Vaz.Waz.XazgCaz.Zaz.[azaz.\.]az��az._az.`azwazaz.b.cazazw�.e.�.f.�.g.x.h.n.iaz.jaz.kaz.laz.mazu�az.oaz.paz.qaz.raz.saz.taz.uaz.vazt�.wu�az.y.�.z.�az.{.|az.}az.~az.az.�az.�.�p.��b�.�azv��
az.�.�az.�az.�.�.�az.�az.�az.�azb�.�.�az.�az.�.�az.�.�az.�az.�az.�az.�az.�az.�az.�az.�az.�az.�.�kXgCwUb�.�az.�az.�az.�az.�az.�az.�az.�az.�az.�az.�az.�az{�azaz.�.�azaz.�az.�gQazaz.�azw�.�az.�.�.�.�mazaz.�.�.�.�.�az.�az.�.�az.�az.�azv�az.�.�.�.�.�.�t�.�.�azv�azw.�.�w��wwv�.�.�.�.�.�.�v�.�v�wu�.�u�az.�.�v�.�v�w�az.�az.�az��v�.�az.�.�.�.�.�.�.�gQb�.�b�az.�gC.�.�kXazkXaz.�azwaz.�az{�azaz.�.�az.�w.�w.�ww.�.�w.�.�.�.�wu��^w�.�.�az���w.�/.�/.�.�.�az.�azm.�m.�u�m.�az.�az/az/az/az////	//az/azv�/azwFaz/
//az�ywaz/
�
az/az/az//�
t�azaz//azazv�az/az///;az///'/az/az//!/az/ azv�az/"az/#/&/$/%�gQgCgQb�az/(/5/)/-az/*/+az/,azwaz/.az//az/0/3/1/2��azgQw/4azazgQaz/6az/7az/8az/9az/:az�y/<az/=az/>/I/?/Daz/@/Aaz/Baz/Cazb�gQaz/E/Fw/Gww/Hwt�/Jazwaz/L/�/M/i/N/a/Oaz/P/R/Qazaz��/Sazaz/T/Uaz/Vaz/W/\/Xaz/Yaz/Zaz/[b�azb�az/]az/^az/_az/`azb�/b/faz/c/d/eazgQgQv�/gazaz/hu�az/j/�/k/�/laz/m/yaz/n/oaz/paz/qaz/raz/saz/t/v/uv�az�/w/x��v���az/zaz/{az/|az/}az/~az/az/�az/�azazgC/�/�/�azaz/�/�az/�az/�az/�az/�az/�az/�/��yv�u�az/�/�wcazazb�/�/�/�az/�/�/�/�/�az/�az/�azmaz�/��/��/��/�/��/�/��/�b��/���b�/�az/�/�/�az/�az/�az/�az/�/�gC/�az�/�/�azgCazw�/�az/�/�az/�az/�/�az/�azaz�/�azaz/�az/�/�az�az/�azaz/�/�az/�/�/�/�/�azaz/�/�az/�/�/�azazw/�azazv�/�azaz/�/�azaz/�/�azazw�az/�/�azaz/�az/�az/�az/�v�az/�0/�/�/�az/�/�/�az/�az/�az/�az/�az/�az/�azaz/�/�azazb�/�azaz/�/�b�/�b�/�b�/�b�/�b�/�b�/�b�v�b�/�/�az/�az/�az/�/�az/�/�/�azw��/�az/�az/�az/�az/�az�Kaz/�az/�0/�kX/�az0az0az0az0az0azaz0v�az0w�0az0	az0
az�az00#0
00az0azw�azaz000�azaz0000az0az0az0az0az0azb�azaz0az00azaz0 az0!az0"azw0$az0%azaz0&0'az�10(�10)0*090+0.0,0-�1w��t�0/04000201�1v��103�1az�1050706�1az�108�1az�10:�10;0@0<0>0=�1v��10?�1gQ�10A�10B�1az�10Daz0E0�0F0{0G0_0H0P0I0L0Jaz0Kazazv�az0M0N0Oazv�v�gQ0Q0X0R0U0S0Tb��b��0V0WgCkX�Mub0Y0\0Z0[wUwwt�0]0^v���v�w�0`0l0a0f0b0d0cjmv�0eu�ju�0g0iv�0h�1�w0j0kkXw�mv�0m0t0n0q0o0pu�w�v�v�0r0sb�wv�wU0u0x0v0w�[����i0y0zgQgCv���0|0�0}0�0~0�00�0�0���Kv�w0�0�t��"�Mub0�0�0�0�w*�?V�wc0�0�ww���w�0�0�0�0�0�0��RT���0�0���{��0�0�0�0�azv�w8S�0�0��^S�v��0�0�0�0�0�0�0�0���w*�"0�0��azb�az0�0�0�0�v�t�az�0�0�azb�V���0�0�0�0�0�0�az�az�0�0�az����&0�0�0�0�az�wF�"0�0�azwqS�az0�w0�0�0�0�0�0�0�0�0�0��,az���+0�0��y�az�0�0�0�0�jaz�a�0�0��Lazb��00�0�0�0�0�0�az~az��0�0�����
0�0�0�0�azS�F�0�0�azjJ�w0�w0�w0�0�0�0���bTC0�0�v�jazw0�az0�5B0�4�az0�az0�0�4�0�30�20�1x0�120�10�10�0�0�0�R70�R70�R70�R7J�J�0�J�0�J�J0�0�J0�J0�0���J����0���up11	11up11��up1up����11������1
1��11�1
������Z11 11111�"�Z1�Z1�Z�"1w�"1�"w111u�w11u�wu�1u�u�u�1!1)1"1&1#p1$pu�1%u�p1'v�1(v�pv�1*1.1+v�1,v�1-v�v�v��01/�010�011�0��131U141D151=1619��17��18����1:�1;1<�j��j1>1@�j1?�j~~1A1B�~1C~�1E1M1F1I1Gv�1Hv��v�1J�1K�1L�v��1N1R�
1O�
1P�
1Q�
��1S�1T��1V1f1W1^1X1\�1Y�1Z1[����1]�m1_1cm1`1a��m1bm��1dS	1eS	����1g1o1h1l1i��1j��S	1kS	��1m�o1n�o���o1p1t1q3
1r3
1s3
�o3
W1uW1vW1wWt�1y1�1z1�1{1�1|1�1}1�t�1~t�1t�����1���1�1�������1�1�1���1���1���������1���1���1����1�1�1�1��1��1������1���1�1��e���e1�1�1�1��e1���1���1�����1�1�1�1�1�1�S�1�S�1�S�1�S���1��1����1�1���1���1�1��1���1�11��1w81�1�1�1�w81�1���w81�w8����1�1�t���t�1�1�t�1�1�v�1�v�t�v�v��1�1�1�1�1�1�1�1�1����1��1����1��W��1����W1�1�1��w�W1�1��w�W�w1��s�w�s1�1�1�1�1�v�1�v��s1��sv�1���1���v���1�1�1�wq1�wq1�wq��wq�1��1��1����1�1�1�1�1�1���1���1�������1���1�1�w���w�1�1�w�1�w�����1�1�w*��1���w*1�1�1�1�w*1�1�Q�w*Q�Q�1�1��1��Q��1�1���i1���i2�i2�i�22�22J22(2222222	a��2
2a��a�2
�a��222�M2�M�2��M2�"2�"�M�"22 222�2�2��"��2�2�2�wc2!2$wc2"wc2#wckXkX2%kX2&2'F�kXF�2)2:2*212+2-F�2,F�����2.2/b���20��b�2227b�232425b��&�&26�&����28��29���42;2B2<2@�42=�42>2?��4��2A�2C2G2D2E�2F��2H2I���2K2k2L2[2M2S2N2R�2O2Pv�2Qv��v�v�"�2T2X2Uv�"�2V"�2W"�v�2Y�1v�2Zv��12\2c2]2a2^���12_2`���1��2b����2d2h2e��2f���2g���2i�[2j�[���[2l2~2m2v2n2r2o�2p�2q��[��2s�2t�2u�D2w2zD2xD2yD����2{��2|2}����22�2�2��2����2��?���?2�2�2��2���?2��?�2�gQ2�gQ�gQ2�2�2�2�2�2�2�2�2�2�2���2���2���gQ��RT2�RT2�RT2�RTw�2�2�w�2�w�2�w�wUwU2�wU2�2��wU�2�2�2�2��2���?�?2�2��?2��?2�2��2��2��2����2��2���-2�2�2�2�2�2��-2��-2�2����-����2���w2�2�w2�2�ubw2�wubub2�2�wubw2�2�2�2�w2�2��2��w���^2�2�2�gC�^2��^2��^gC2���gC2�gC��2�2�2�2�2�2�2�2�2����2�2�����2�T�T2�2�2��2��T2�T�2��2����2�2�2�2�2�F�2�F�2�F��F�v�2�v�2�v�2�v���2�2���2���2�����2��2�2����2�32�2�2�2��2��bb2�2��b2�b�2�3�33����33�&3�&��&33
33	�&SC3
�4SC3SC3SC�4333��43�4�3w��33w��w�3433�33]33=33-33%333�w��33"3 ��3!��3#��3$�az3&3)3'�
3(�
��
3*�3+�3,��
�3.363/33�>30�>31�>32�>azaz34az35azw�373;w�38w�393:L�w�L�L�3<L��3>3M3?3G3@3D�3A3Bj�3C�jj3E3Fjjj3H3Lj3I3Jw�3Kw�jw�w���3N3V3O3S3P���3Q��3R���3T��3U��3W3[3X���3Y3Z�����3\F���F�3^3�3_3q3`3h3a3e3b�;3c�;F�3dF��;3f�"3g�"�;�"3i3m3jS�3kS�3lS��"S��3n�3o�3p�T43r3z3s3vT43tT43uT4))3w)3x3yTC)TC3{3}TC3|TC�9�93~3�}�93��9�}3�3�3�3�3�3��}3�3����}����3�3���3�������3�3���wF3�V�wF3�wF3�wFV�3�3�3�3�3��BV�3�V��B3�-�B3�3�-�B-3�3�3�T%-T%3�S43�S4T%3�T%S43�3�3�3�3�3�3�3�3�3�3�3�S43�53�53�553�3��3��3��3������3���3�����3�3�3�3���3���3�3�S���S�S�3�S��3�3��3�3�T�3��TT3�3��T�3�3�3�3�3�3��3�3�3��e3�3�3�J�e3�e3�eJ�3���J�3�J���3�3�3�3�3���3�3���3�J�J�3�3�3�J�3�J�J�3�J�J�3��3��J��3�4	3�3�3�3�3�3�3�SQ3�SQ3�SQ�SQS�3�S�3�S�3�S�?U3�3�?U3�?U3�?U����3���3�3�8��83�43�3�83�8v�v�3�3�J�v�4v�J�44J�44TJ�TT44�,4�,T�,4
az4az44
�,S�4azS�4S�4S�az44u44<44!az444az4w�4w�4w�j44j4j44w�jw�w�4 w�w�4"414#4+4$4(w�4%4&ww�4'w�ww4)4*�w�4,40�4-4.��4/�������j424743az44azj45j46jazaz48az494:gC4;gCazgC4=4Y4>4J4?4BgC4@gC4AgCgQ4C4GgQ4D4Eb�gQ4FgQb�b�4H4IkXb�kX4K4Q4L4PkX4M4Nw�4Ow�kXw�w�v�4R4V4S��v�4Tv�4Uv���4W�?��4X���?4Z4g4[4b4\4`4]m�?4^4_m�?m4awmw4c{�4d{�4e{�w4fw{�4h4q4i4m4jv�4kv�4lv�{�v��4n�4o�4p���4r�L��4s��4t���L4vaz4waz4x4�4y4�4z4|�L4{�L�&�&4}4~��&4�&�4�4��4�4��4��4�44�4��4���4�4�4�4�4��b4��b4�b4�b�4�az4�az�4��azaz4�az4�4�azkXaz4�5@4�4�kX4�4�b�4�b�4�b�4�b�4�b�4�b�b�4�b��^4�az4�az4�5+4�azw4�4�azaz4�4�az4�az4�az4�azaz4�4�az4�azaz4�az4�4�azaz4�4�az4�azaz4�4�4�az4�az4�4�4�4�4�az4�4�4�v�w�w�m4�4�4�4���<��w*4�4��iup�j4�4�4�4�4�4���v�wj4�4�w�����M4�4�4�4�b��"��;4�4����wFw4�54�4�4�4�4�4�4�4�4�4�wckXgC�"4�4����&w4�4�4�4��4a��u�4�4�v�v�u�p4�4�4�4�4�4��v���04�4�v����Zv�4�4�4�4������j~4�4�����[�4�54�54�4�4�4������?4�4�RT�w�v�5555��gQw�55�t���
555	55
5�����1��5
5wU���5555w8�?�{�55��ubt���5az55'55 5555�-?Ub�w55�,w��J�5!5$5"5#�^S�az�5%5&�wq�v�5(az5)az5*azJ�az5,57az5-5.az5/az50az51545253azkXgQv�5556�"b�azw*58w�59azaz5:az5;5<az5=azaz5>az5?azgC5AazgCaz5Cu�5Daz5Eazu�az5G5J5H@5I@b�@5K@5L@N@5N5U5O5R5P@5Q@E@5S@5T@N@5V5Y5W@5X@L�@5Z@5[@c�@5]5r5^5h5_5e5`@5a@5b@5c@5d@d@5f@5g@`�@5i5l5j@5k@L@5m@5n@5o@5p@5q@p�@5s5z5t5w5u@5v@E@5x@5y@az@5{5~5|@5}@M�@5@5�@d@5�5�5�5�5�5�5�5�5�@5�@cW@5�@5�@g4@5�5�5�@5�@`�@5�@5�@`�@5�5�5�5�5�@5�@l@5�@5�@L@5�5�5�@5�@5�@5�@5�@xv@5�@5�@5�@5�@5�@N@5�5�5�5�5�5�5�@5�@M@5�@5�@`�@5�5�5�@5�@5�@5�@L�@5�@5�@5�@5�@5�@q~@5�5�5�5�5�@5�@az@5�@5�@ak@5�5�5�@5�@M�@5�@5�@g4@5�65�5�5�5�5�5�5�5�5�@5�@p�@5�@5�@d@5�5�5�@5�@M@5�@5�@5�@5�@5�@H:@5�5�5�@5�@5�@`�@5�5�5�@5�@5�@5�@5�@cW@5�@5�@cW@5�65�5�5�5�5�@5�@b�@5�@5�@xv@5�5�5�@5�@d@5�@5�@5�@6@6@cW@66
666@6@L�@6@6	@N@666@6
@M@6@6@cW@66166"66666@6@y7@6@6@L�@666@6@az@6 @6!@e�@6#6*6$6'6%@6&@`�@6(@6)@cW@6+6.6,@6-@L�@6/@60@L@626D636=646:65@66@67@68@69@az@6;@6<@M@6>6A6?@6@@c�@6B@6C@d@6E6L6F6I6G@6H@q~@6J@6K@b�@6M6S6N@6O@6P@6Q@6R@N@6T@6U@b�@6W6�6X6�6Y6{6Z6i6[6b6\6_6]@6^@N@6`@6a@L@6c6f6d@6e@c�@6g@6h@g4@6j6q6k6n6l@6m@M@6o@6p@L@6r6u6s@6t@d@6v@6w@6x@6y@6z@`�@6|6�6}6�6~6�6@6�@L@6�@6�@aN@6�6�6�@6�@b�@6�@6�@6�@6�@6�@M@6�6�6�6�6�@6�@6�@6�@6�@`�@6�@6�@b�@6�6�6�@6�@ku@6�@6�@p�@6�6�6�6�6�6�6�6�6�@6�@L�@6�@6�@M�@6�6�6�@6�@�b@6�@6�@6�@6�@6�@iM@6�6�6�6�6�@6�@6�@6�@6�@�F@6�@6�@b�@6�6�6�@6�@c�@6�@6�@6�@6�@6�@g_@6�6�6�6�6�6�6�@6�@M@6�@6�@M@6�6�6�@6�@`�@6�@6�@6�@6�@6�@L@6�6�6�6�6�@6�@M@6�@6�@az@6�6�6�@6�@xv@6�@6�@`�@6�7�6�7B6�6�6�6�6�6�6�@6�@L�@6�@6�@N@6�6�6�@6�@g_@6�@6�@az@6�76�77@7@iM@7@7@7@7@7@c�@7	77
@7@7@7
@7@L�@7@7@7@7cW7cW7cW77,7cW7cW7cW7cW7cWcW77cW77%77"7 7!cW$$��x�7#7$x����mcW7&7)7'7(\�|�4Pm�7*7+�@�+�B�fcW7-cW7.cW7/70cW71cWcW7273cW747;75787677��$$��x�797:x����mcW7<7?7=7>\�|�4Pm�7@7A�@�+�B�f7C7w7D7m7E7j7F@7G@7H@`�7I7J`�7Ke�7L7[7M`�7N`�7O`�7P`�7Q`�7R`�7S`�7T`�7U`�7V`�7W`�7X`�7Y`�7Z`��`�7\`�7]`�7^`�7_`�7``�7a`�7b`�7c`�7d`�7e`�7f`�7g`�7h`�7i`�e�`�7k@7l@aN@7n7t7o@7p@7q@7r@7s@L@7u@7v@`�@7x77y7|7z@7{@N@7}@7~@`�@7�7�7�@7�@c�@7�@7�@d@7�7�7�7�7�7�7�7�7�@7�@g4@7�@7�@7�@7�@7�@`�@7�7�7�@7�@g4@7�@7�@N@7�7�7�7�7�@7�@lx@7�@7�@7�@7�@7�@N@7�7�7�@7�@Л@7�@7�@L@7�7�7�7�7�7�7�@7�@7�@`�7�7�`�7�i�7�`�7�`�7�`�7�`�7�`�7�`�7�`�7�`�7�`�7�`�7�`�7�`�7�`�7�`�7�`���`�7�@7�@`�@7�7�7�@7�@b�@7�@7�@L@7�7�7�7�7�@7�@d@7�@7�@b�@7�7�7�@7�@L�@7�@7�@7�@7�@7�@d@7�=�7�;T7�9D7�8�7�8(7�8	7�7�7�7�7�7�7�@7�@N@7�@7�@M@7�7�7�@7�@��@7�@7�@L�@7�87�7�7�@7�@M@7�@7�@7�@8@8@c�@888@8@`�@8@8@M�@8
888888
@8@`�@8@8@c�@888@8@d@8@8@N@88!888@8@b�@8@8 @N@8"8%8#@8$@xv@8&@8'@M@8)8K8*8<8+828,8/8-@8.@L@80@81@b�@838984@85@86@87@88@L@8:@8;@L�@8=8D8>8A8?@8@@d@8B@8C@M@8E8H8F@8G@b�@8I@8J@L�@8L88M8x8N8u8O@8P@8Q@`�8R8S8t8T8d8U`�8V`�8W`�8X`�8Y`�8Z`�8[`�8\`�8]`�8^`�8_`�8``�8a`�8b`�8c`�i�`�8e`�8f`�8g`�8h`�8i`�8j`�8k`�8l`�8m`�8n`�8o`�8p`�8q`�8r`�8s`�e�`���e�8v@8w@M@8y8|8z@8{@m;@8}@8~@c�@8�8�8�8�8�@8�@L@8�@8�@nW@8�8�8�@8�@L@8�@8�@L@8�8�8�8�8�8�8�8�8�8�8�@8�@c�@8�@8�@c�@8�8�8�@8�@l@8�@8�@L�@8�8�8�8�8�@8�@c�@8�@8�@d@8�8�8�@8�@M@8�@8�@|�@8�8�8�8�8�8�8�@8�@8�@8�@8�@N@8�@8�@8�@8�@8�@L�@8�8�8�@8�@b�@8�@8�@L@8�8�8�8�8�@8�@N@8�@8�@`�@8�8�8�@8�@az@8�@8�@g4@8�98�8�8�8�8�8�8�@8�@t�@8�@8�@8�@ak8�8�akaktk8�8�8�@8�@L�@8�@8�@`�@8�8�8�8�8�@8�@M@8�@8�@L@8�8�8�@8�@b�@8�@8�@8�@8�M8�M8�M8�M8�8�8�g�Mq�g�8�M�;9999	999@9@e�@9@9@M�@9
9
9@9@`�@9@9@d@99=999@9@e�@9@9@9@9az9az9az9az9az9az9az9 az9!az9"az9#az9$az9%az9&989'949(9.9)9+az9*w�9,9-��w���v�9/929091���K�<93aza�azaz95az9697azu�azaz999:az9;az9<azazt�9>9A9?@9@@b�@9B@9C@`�@9E:�9F:69G9�9H9�9I9P9J9M9K@9L@ty@9N@9O@d@9Q9T9R@9S@M@9U@9V@9W@9Xg_9Yg_9Zg_9[g_9\g_9]g_g_9^9_g_9`g_9ag_9bg_9c9�9d9p9eg_9f9j9gg_��9h9ig_��g_9k9n9lg_M�9mM�g_g_9oM�g_9q9�9r9y9s9t�g_9u9w9vg_M6g_9xg_MEg_9z9~9{9|��g_9}g_MTg_g_99�9��g_Mcg_9�g_9�g_9�9�g_9�p�g_9�9�M�g_g_3�9�9�9�g_9�9�9�9�9�g_9�g_4�g_9�9�9�9�Mrg_M	g_9�g_Mg_9�g_9�9�9�9�M�g_M�g_g_9�M'g_9�g_9�9�9�9�9�g_9�g_g_M�9�9�9�9�M�g_M�g_g_9�Xg_9�g_9�g_g_9�Jg_9�9�9�9�9�@9�@L�@9�@9�@9�@9�Q�9�Q�_FQ�9�9�9�@9�@9�@9�@9�@az@9�@9�@L�@9�9�9�9�9�9�9�@9�@9�@9�9�9�9�i���i��9�e�9�e�e�9�9�e�e�9�9�e�e�9�9�e�e�9�e�9�9�e�e�9�e�9�9�e�e�9�e�9�9�e�e��9�@9�@d@9�9�9�@9�@L@9�@9�@e�@9�:/9�:)9�@9�@9�@9�lx9�:9�lx9�:	9�lx9�lx9�lx9�lx9�lx9�lx9�lx9�:9�lx9�lx9�lx9�lx9�lx:lxlx�lx::lxlx::lx:lx::lxrXrXlx:
lxlx::lxlx:
:lxlx::lxlx::lxlx::lxlx::lxlx:rXlx:lx:lx:lx:lx:lx:lx:lx: lx:!lx:"lx:#lx:$lx:%lx:&lx:'lx:(lxlx�:*@:+@:,@:-@:.@cW@:0:3:1@:2@L@:4@:5@M@:7:Z:8:J:9:@:::=:;@:<@t�@:>@:?@`�@:A:G:B@:C@:D@:E@:F@`�@:H@:I@L�@:K:R:L:O:M@:N@p�@:P@:Q@L�@:S:V:T@:U@L@:W@:X@:Y@ak@:[:�:\:c:]:`:^@:_@e�@:a@:b@L@:d:�:e@:f@:g@:hxv:ixv:jxv:kxv:lxv:mxv:nxv:oxv:pxv:qxv:rxv:sxv:txv:uxv:vxv:wxv:xxv:yxv:zxv:{xv:|xv:}xv:~xv:xv:�xv:�xv:�xv:�xv:�xv:�xv:�xv:�xv:�xv:�xv�xv:�@:�@L@:�:�:�:�:�@:�@:�@:�@:�@L@:�@:�@:�@:�@b�@:�:�:�@:�@L@:�@:�@iM@:�;:�:�:�:�:�:�:�:�:�@:�@d@:�@:�@nW@:�:�:�@:�@d@:�@:�@d@:�:�:�:�:�@:�@d@:�@:�@t�@:�:�:�@:�@b�@:�@:�@xv@:�:�:�:�:�:�:�@:�@:�@:�:�e�:�:�e�e�:�:�e�e�:�e�:�:�e�:�e�e�:�e�:�e�:�e�:�:�e�e�:�:�e�:�e�e�:��e�:�e�:�e�:�e�:�e�:�e�:�e�:�e�:�e�:�e�:�e�:�e�:�e�:�e�:�e�:�e�:�:�:�:�e��������:���e�:�@:�@L�@:�:�:�@:�@:�@:�@:�@M@:�@:�@`�@:�;:�;;@;@�i@;@;@d{@;;;@;@;	@;
@;@nW@;
@;@d@;;5;;#;;;;;@;@t�@;@;@M�@;; ;@;@;@;@;@nW@;!@;"@b�@;$;.;%;+;&@;'@;(@;)@;*@d@;,@;-@L@;/;2;0@;1@M@;3@;4@g4@;6;E;7;>;8;;;9@;:@e�@;<@;=@L@;?;B;@@;A@M@;C@;D@M@;F;M;G;J;H@;I@lK@;K@;L@c�@;N;Q;O@;P@N@;R@;S@N@;U<�;V;�;W;�;X;�;Y;k;Z;d;[;a;\@;]@;^@;_@;`@M@;b@;c@M�@;e;h;f@;g@c�@;i@;j@�b@;l;v;m;s;n@;o@;p@;q@;r@d@;t@;u@`�@;w;};x@;y@;z@;{@;|@N@;~@;@b�@;�;�;�;�;�;�;�@;�@az@;�@;�@;�@;�@;�@az@;�;�;�@;�@;�@;�@;�@M@;�@;�@L�@;�;�;�;�;�@;�@d@;�@;�@L@@;�;�@;�@;�@;�@;�@d@;�;�;�;�;�;�;�;�;�@;�@L�@;�@;�@az@;�;�;�@;�@iM@;�@;�@az@;�;�;�;�;�@;�@M@;�@d@;�;�;�@;�@c�@;�@;�@;�@;�@;�@M@;�;�;�;�;�;�;�@;�@e�@;�@;�@;�@;�@;�@d@;�;�;�@;�@j�@;�@;�@b�@;�;�;�;�;�@;�@;�@;�;�;�e�e�|X;�;�FlKF�;�@;�@`�@;�;�;�@;�@b�@;�@;�@b�@;�<Y;�<;�<;�;�;�;�;�@;�@xv@;�@;�@`�@;�;�;�@;�@H:@;�@<@<@<@<@d@<<<<	<@<@cW@<
@<@N@<
<<@<@M@<@<@`�@<<$<<<<<@<@<@e�@<@<@N@<<!<@< @� @<"@<#@c�@<%<O<&<)<'@<(@L�@<*@<+@<,@<-`�<.`�</`�<0`�<1`�<2`�<3`�<4`�<5`�<6`�<7`�<8`�<9`�<:`�<;`�<<`�<=`�<>`�<?`�<@`�<A`�<B`�<C`�<D`�<E`�<F`�<G`�<H`�<I`�<J`�<K`�<L`�<M`�<N`�`���<P<V<Q@<R@<S@<T@<U@M@<W@<X@i�@<Z<<[<m<\<f<]<`<^@<_@M@<a@<b@<c@<d@<e@N@<g<j<h@<i@`�@<k@<l@Y@<n<x<o<r<p@<q@d{@<s@<t@<u@<v@<w@d@<y<|<z@<{@M@<}@<~@c�@<�<�<�<�<�<�<�@<�@�i@<�@<�@xv@<�<�<�@<�@l�@<�@<�@~@<�<�<�<�<�@<�@b�@<�@<�@b�@<�<�<�@<�@M@<�@<�@b�@<�=f<�<�<�<�<�<�<�<�<�<�<�@<�@<�@<�@<�@d@<�@<�@L�@<�<�<�@<�@L@<�@<�@`�@<�<�<�<�<�@<�@b�@<�@<�@<�@<�@<�@|�@<�<�<�@<�@c�@<�@<�@b�@<�<�<�<�<�<�<�@<�@T@<�@<�@c�@<�<�<�@<�@p�@<�@<�@L@<�<�<�<�<�@<�@xv@<�@<�@c�@<�<�<�@<�@<�@<�<�b�x�<�b�x�b�<�@<�@`�@<�=<�<�<�<�<�<�<�@<�@<�@<�@g_@<�@<�@L@<�<�<�@<�@d@<�@<�@L�@<�=<�=<�@=@g4@=@=@=@=@=@M@===	@=
@b�@=@=
@`�@==8==.===@=@`�@=@=@=@=l=l=l=l=l=l=l=l= l=!l="l=#l=$l=%l=&l='l=(l=)�l=*�=+�=,�=-=��=/=2=0@=1@M�@=3@=4@=5@=6@=7@xv@=9=_=:=\=;@=<@==@az=>az=?az=@=Aaz=Baz=Caz=D=P=Eaz=Faz=Gaz=Hazaz=I=Jazaz=Kaz=Laz=Maz=Naz=Ow*az=Qaz=Raz=Saz=Taz=Uaz=Vaz=Wazaz=Xaz=Y=Zazaz=[ubaz=]@=^@L�@=`=c=a@=b@M�@=d@=e@p�@=g=�=h=�=i={=j=q=k=n=l@=m@e�@=o@=p@nW@=r=u=s@=t@`�@=v@=w@=x@=y@=z@b�@=|=�=}=�=~@=@d@=�@=�@d@=�=�=�@=�@=�@=�@=�@d@=�@=�@L@=�=�=�=�=�=�=�@=�@�@=�@=�@az@=�=�=�@=�@d@=�@=�@�b@=�=�=�=�=�@=�@M@=�@=�@az@=�=�=�@=�@d@=�@=�@b�@=�=�=�=�=�=�=�=�=�@=�@d]@=�@=�@=�@=�@=�@iM@=�=�=�@=�@d{@=�@=�@M�@=�=�=�=�=�@=�@=�@=�@=�@c�@=�@=�@`�@=�=�=�@=�@=�@=�@=�@aN@=�@=�@xv@=�=�=�=�=�=�=�@=�@e�@=�@=�@t�@=�=�=�@=�@c�@=�@=�@b�@=�=�=�=�=�@=�@L@=�@=�@N@=�=�=�@=�@d{@=�@=�@`�@=�@q=�?&=�>|=�>==�>=�>	=�>=�=�=�@=�@L@>@>@nW@>>>@>@M�@>@>@b�@>
>>>>@>
@L�@>@>@M@>>>@>@`�@>@>@`�@>>+>>$>>>@>@M@>@> @>!@>"@>#@d@>%>(>&@>'@li@>)@>*@c�@>,>6>->0>.@>/@az@>1@>2@>3@>4@>5@nW@>7>:>8@>9@b�@>;@><@b�@>>>]>?>N>@>G>A>D>B@>C@M@>E@>F@c�@>H>K>I@>J@t�@>L@>M@c�@>O>V>P>S>Q@>R@`�@>T@>U@az@>W>Z>X@>Y@N@>[@>\@d@>^>m>_>f>`>c>a@>b@��@>d@>e@M@>g>j>h@>i@L�@>k@>l@L@>n>u>o>r>p@>q@N@>s@>t@z�@>v>y>w@>x@N@>z@>{@b�@>}>�>~>�>>�>�>�>�>�>�@>�@>�@>�`�>�>���`�>���>�`�>�`�>�`�>�`�>�`�>�`�>�`�>�`�>�`�>�`�>�`�>�`�>�`�>�>�פ>���פ>�`���`�>�@>�@M@>�>�>�@>�@>�@>�@>�@M�@>�@>�@az@>�>�>�>�>�@>�@d@>�@>�@>�@>�@>�@nW@>�>�>�@>�@d@>�@>�@>�@>�@>�@M�@>�>�>�>�>�>�>�@>�@>�@>�@>�@p�@>�@>�@N@>�>�>�@>�@c�@>�@>�@xv@>�>�>�>�>�@>�@L�@>�@>�@M@>�>�>�@>�@>�@>�@>�@M@>�@>�@j�@>�?>�>�>�>�>�>�>�@>�@xv@>�@>�@`�@>�>�>�@>�@nW@>�@>�@`�@>�>�>�>�>�@>�@>�@>�@>�@b�@>�@>�@lx@>�?>�@?@nW@?@?@?@?@?@g4@???	??
?
?@?@r@?@?@L�@???@?@c�@?@?@N@?????@?@lx@?@?@d]@? ?#?!@?"@g4@?$@?%@e�@?'?�?(?o?)?K?*?<?+?2?,?/?-@?.@cW@?0@?1@e�@?3?6?4@?5@xv@?7@?8@?9@?:@?;@b�@?=?D?>?A??@?@@L�@?B@?C@L�@?E?H?F@?G@t�@?I@?J@cW@?L?`?M?Y?N?V?O@?P@?Q@?R?SW�F?T?UFW�T��?W@?X@M�@?Z?]?[@?\@cW@?^@?_@M@?a?h?b?e?c@?d@`�@?f@?g@iM@?i?l?j@?k@M�@?m@?n@`�@?p?�?q?�?r?y?s?v?t@?u@iM@?w@?x@M@?z?}?{@?|@d@?~@?@d@?�?�?�?�?�@?�@?"@?�@?�@?�@?�@?�@M�@?�?�?�@?�@`�@?�@?�@b�@?�?�?�?�?�?�?�@?�@e�@?�@?�@`�@?�?�?�@?�@ak@?�@?�@?�@?�cW?�cW?�cW?�?�?�cW?�cW?�cW?�cW?�cW?�cW?�cW?�cW?�cW?�cW?�?�?�?�?�?�?�cWcW)�?�?�cW)�cW)�?�cW)�cW?�cW)�?�?�cW)�cWcW?�cW?�?�cWcW?�cW?�cW?�cW?�cW?�cW?�cW?�cW?�?�?�)�cWcW?�cW?�cW)�?�?�?�?�?�@?�@?�@?�@?�@`�@?�@?�@L@?�?�?�@?�@b�@?�@?�@g4@?�@&?�@?�?�?�?�?�?�?�@?�@b�@?�@?�@N@?�?�?�@?�@d@?�@?�@b�@?�?�?�?�?�@?�@?�@?�@?�@az@?�@?�@b�@?�@?�@@@M�@@@@@L@@@@@@@
@@@	@@
@@@@@�H@@@@@b�@@@@@@@L�@@@@@l@@@@@@@@@c�@@@@@cW@@ @#@!@@"@d@@$@@%@b�@@'@F@(@7@)@0@*@-@+@@,@cW@@.@@/@d@@1@4@2@@3@d@@5@@6@L@@8@?@9@<@:@@;@p�@@=@@>@cW@@@@C@A@@B@e�@@D@@E@xv@@G@_@H@U@I@O@J@@K@@L@@M@@N@cW@@P@@Q@@R@@S@@T@d@@V@\@W@@X@@Y@@Z@@[@N@@]@@^@N@@`@g@a@d@b@@c@g_@@e@@f@`�@@h@k@i@@j@cW@@l@@m@@n@@o@@p@M@@rC�@sCQ@tB�@u@�@v@�@w@~@x@{@y@@z@az@@|@@}@L�@@@�@�@@�@az@@�@@�@c�@@�@�@�@�@�@@�@p�@@�@@�@d{@@�@�@�@@�@b�@@�@@�@M@@�B�@�B�@�B�@�@@�@@�@@�az@�B�@�@�@�az@�az@�azaz@�@�@�@�@�@�@�azgCazkX@�@�ubb�wv�@�@�@�@�wUgQgCv�@�azw�kX@�az@�az@�azaz@�@�A�@�A!@�@�az@�@�az@�az@�@�@�@�@�@�@�azaz@�gCaz@�@�m@�t�az@�@�wwjv�@�@�@�@�@�@�azkXwUv�@�@�v�azb�ub@�@�@�azv�az@�azgQaz@�az@�az@�@�@�@�azv�gCj@�@���w�jw�@�A@�az@�az@�@�@�@�@�@�@�azaz@�gCaz@�@�m@�t�az@�@�wwjv�@�@�@�@�@�@�azkXwUv�@�@�v�azb�ub@�@�@�azv�az@�azgQaz@�az@�az@�@�@�@�azv�gCj@�@���w�jw�AazAazAAAAAAAazazAgCazA	AmA
t�azAA
wwjv�AAAAAAazkXwUv�AAv�azb�ubAAAazv�azAazgQazAazAazAazAA azv�gCazA"AkA#AGA$azA%azA&A>A'A1A(A+A)azazA*gCazA,A.mA-t�azA/A0wwjv�A2A9A3A6A4A5azkXwUv�A7A8v�azb�ubA:A<A;azv�azA=azgQazA?azA@azAAADABACazv�gCjAEAF��w�jw�AHazAIazAJAbAKAUALAOAMazazANgCazAPARmAQt�azASATwwjv�AVA]AWAZAXAYazkXwUv�A[A\v�azb�ubA^A`A_azv�azAaazgQazAcazAdazAeAhAfAgazv�gCjAiAj��jw�w�AlA�AmazAnazAoA�ApAzAqAtArazazAsgCazAuAwmAvt�azAxAywwjv�A{A�A|AA}A~azkXwUv�A�A�v�azb�ubA�A�A�azv�azA�azgQazA�azA�azA�A�A�A�azv�gCjA�A���w�jw�A�azA�azA�A�A�A�A�A�A�azazA�gCazA�A�mA�t�azA�A�wwjv�A�A�A�A�A�A�azkXwUv�A�A�v�azb�ubA�A�A�azv�azA�azgQazA�azA�azA�A�A�A�azv�gCjA�A���w�jw�A�B?A�A�A�A�A�azA�azA�A�A�A�A�A�A�azazA�gCazA�A�mA�t�azA�A�wwjv�A�A�A�A�A�A�azkXwUv�A�A�v�azb�ubA�A�A�azv�azA�azgQazA�azA�azA�azA�A�azv�gCazA�azA�azA�A�A�A�A�A�A�azazA�gCazA�A�mA�t�azA�A�wwjv�A�A�A�A�A�A�azkXwUv�A�A�v�azb�ubA�A�A�azv�azA�azgQazA�azA�azA�A�A�A�azv�gCjA�A���w�jw�A�BA�azA�azBBBBBBBazazBgCazBBmBt�azB	B
wwjv�BBB
BBBazkXwUv�BBv�azb�ubBBBazv�azBazgQazBazBazBazBBazv�gCazBazB azB!B9B"B,B#B&B$azazB%gCazB'B)mB(t�azB*B+wwjv�B-B4B.B1B/B0azkXwUv�B2B3v�azb�ubB5B7B6azv�azB8azgQazB:azB;azB<azB=B>azv�gCazB@B�BABeBBazBCazBDB\BEBOBFBIBGazazBHgCazBJBLmBKt�azBMBNwwjv�BPBWBQBTBRBSazkXwUv�BUBVv�azb�ubBXBZBYazv�azB[azgQazB]azB^azB_BbB`Baazv�gCjBcBd��w�jw�BfazBgazBhB�BiBsBjBmBkazazBlgCazBnBpmBot�azBqBrwwjv�BtB{BuBxBvBwazkXwUv�ByBzv�azb�ubB|B~B}azv�azBazgQazB�azB�azB�azB�B�azv�gCazB�azB�azB�azB�B�B�B�B�B�B�azazB�gCazB�B�mB�t�azB�B�wwjv�B�B�B�B�B�B�azkXwUv�B�B�v�azb�ubB�B�B�azv�azB�azgQazB�azB�azB�azB�B�azv�gCazB�azazB�B�azB�azB�azB�azB�azB�azB�azB�azB�azB�B�B�B�B�B�B�B�B�B�gCazazmB�B�mazazt�B�B�B�B�azv�wwB�B�jazkXwUB�B�B�B�B�B�v�v�azb�B�azubazB�B�B�azgQazB�azgCv�B�azB�B�azB�B�B�azv�w�v�B�azB�azv�kXB�@B�@c�@B�B�B�@B�@j*@B�@B�@{F@B�B�B�B�B�@B�@B�@�,@B�@B�@|@B�B�B�@B�@L�@B�@B�@ty@B�C,B�CB�B�B�B�B�@B�@E@B�@B�@b�@B�CB�@C@M@C@C@xv@CCCCC@C@C	@C
@C@M@C
@C@C@C@C@`�@CCC@C@b�@C@C@C@CcWCcWcWCCcWCcWCcWC cWC!cWC"cWC#cWcWC$C%cWcWC&C'cWC(cWcWC)cWC*C+cW)�cWC-C?C.C8C/C5C0@C1@C2@C3@C4@iM@C6@C7@c�@C9C<C:@C;@d@C=@C>@`�@C@CJCACGCB@CC@CD@CE@CF@aN@CH@CI@az@CKCNCL@CM@i�@CO@CP@b�@CRC�CSC�CTCqCUCgCVCdCW@CX@CY@L�CZC[L�L�C\C]L�C^L�C_L�C`L�CaL�CbL�L�Cc�L�Ce@Cf@L�@ChCkCi@Cj@M@Cl@Cm@Cn@Co@Cp@b�@CrCyCsCvCt@Cu@d@Cw@Cx@M@CzC}C{@C|@M�@C~@C@L@C�C�C�C�C�C�C�@C�@C�@C�@C�@N@C�@C�@xv@C�C�C�@C�@c�@C�@C�@Л@C�C�C�C�C�@C�@gn@C�@C�@iM@C�C�C�@C�@aN@C�@C�@i�@C�C�C�C�C�C�C�C�C�@C�@`�@C�@C�@C�@C�@C�@q~@C�C�C�@C�@y7@C�@C�@N@C�C�C�C�C�@C�@nW@C�@C�@d@C�C�C�@C�@N@C�@C�@C�@C�@C�@d@C�C�C�C�C�C�C�@C�@l@C�@C�@C�@C�@C�@L@C�C�C�@C�@`�@C�@C�@C�@C�@C�@b�@C�C�C�C�C�@C�@`�@C�@C�@M@C�C�C�@C�@M@C�@C�@ak@C�D�C�D7C�DC�DC�C�C�C�C�@C�@C�@C�@C�@d@C�@C�@az@C�DC�@C�@M@D@D@xv@DDDDD@D@b�@D	@D
@D@D@D
@b�@DDD@D@L@D@D@d{@DD(DDDDD@D@b�@D@D@Л@DD%D @D!@D"@D#fD$fZfD&@D'@b�@D)D0D*D-D+@D,@L�@D.@D/@N@D1D4D2@D3@d@D5@D6@M@D8D]D9DHD:DAD;D>D<@D=@M@D?@D@@M@DBDEDC@DD@M@DF@DG@M@DIDSDJDPDK@DL@DM@DN@DO@g4@DQ@DR@d@DTDWDU@DV@b�@DX@DY@DZ@D[@D\@xv@D^D�D_D�D`DcDa@Db@L@Dd@De@Df@Dg@Dh@Di@Djq~Dkq~Dlq~q~DmDnq~q~Doq~Dpq~DqDrq~Dsq~Dtq~Duq~Dvq~Dwq~Dxq~q~DyDzq~q~D{D|q~q~D}D~q~Dq~D�q~D�q~q~D�q~D�q~D�D�q~q~D�D�q~D�q~@q~D�D�D�@D�@aN@D�@D�@b�@D�D�D�D�D�@D�@N@D�@D�@L�@D�D�D�@D�@c�@D�@D�@|�@D�D�D�D�D�D�D�D�D�D�D�@D�@p�@D�@D�@i�@D�D�D�@D�@aN@D�@D�@b�@D�D�D�D�D�@D�@g_@D�@D�@D�@D�@D�@b�@D�D�D�@D�@`�@D�@D�@D�@`�D�D�`�`�e�D�D�D�D�D�D�D�@D�@c�@D�@D�@c�@D�D�D�@D�@c�@D�@D�@L@D�D�D�D�D�@D�@D�@D�@D�@cW@D�@D�@`�@D�D�D�@D�@c�@D�@D�@iM@D�ED�D�D�D�D�D�D�@D�@d@D�@D�@L�@D�D�D�@D�@D�@D�@D�@L�@D�@D�@d@D�ED�ED�@E@E@E@E@d@E@E@ak@EEE	@E
@M@E@E
@aN@EEEEEEE@E@E@M@E@E@c�@EEE@E@L�@E@E@c�@E E*E!E'E"@E#@E$@E%@E&@d@E(@E)@L@E+E1E,@E-@E.@E/@E0@xv@E2@E3@aN@E5P^E6J�E7HE8F�E9E�E:EyE;EZE<EKE=EDE>EAE?@E@@xv@EB@EC@l�@EEEHEF@EG@cW@EI@EJ@t�@ELESEMEPEN@EO@L�@EQ@ER@M�@ETEWEU@EV@M@EX@EY@N@E[EjE\EcE]E`E^@E_@E@Ea@Eb@L@EdEgEe@Ef@`�@Eh@Ei@d@EkErElEoEm@En@e�@Ep@Eq@b�@EsEvEt@Eu@aN@Ew@Ex@b�@EzE�E{E�E|E�E}E�E~@E@`�@E�@E�@d@E�E�E�@E�@d{@E�@E�@c�@E�E�E�E�E�@E�@+�@E�@E�@c�@E�E�E�@E�@E�@E�@E�@b�@E�@E�@M@E�E�E�E�E�E�E�@E�@E�@E�@E�@nW@E�@E�@E�@xv@E�E�E�@E�@M�@E�@E�@t�@E�E�E�E�E�@E�@`�@E�@E�@d@E�E�E�@E�@b�@E�@E�@`�@E�F:E�E�E�E�E�E�E�E�E�@E�@nW@E�@E�@b�@E�E�E�@E�@E�@E�@E�@d]@E�@E�@e�@E�E�E�E�E�@E�@E�@E�@E�@iM@E�@E�@c�@E�E�E�@E�@E�@E�@E�@b�@E�@E�@`�@E�E�E�E�E�E�E�@E�@L@E�@E�@d@E�E�E�@E�@c�@E�@E�@|@E�FE�E�E�@E�@c�@E�@F@M�@FF7F@F@F@azFazFFFF	azF
azFazFazF
azFazFaz�?kXazFazFazFazFazFazFazFazFFF FazFazazFFazazFFazgCazF!F'azF"azF#F$azazF%F&azazwF(F0azF)F*azF+F.F,F-azgQazgCazF/azwcF1azazF2F3F5azF4v�gCazF6�?azF8@F9@i�@F;F`F<FNF=FGF>FDF?@F@@FA@FB@FC@li@FE@FF@L@FHFKFI@FJ@L�@FL@FM@d@FOFVFPFSFQ@FR@L@FT@FU@d@FWFZFX@FY@L@F[@F\@F]@F^@F_@d]@FaF�FbF�FcFfFd@Fe@p�@Fg@Fh@Fi@FjF�FkF�FlF}Fm��Fn��Fo��Fp��Fq��Fr��Fs��Ft��Fu��Fv��Fw��Fx��Fy��Fz��F{F|��Tk��TkF~��F��F���F���F���F���F���F���F���F���F���F���F���F���F�F����p�p��F�F�F���F���F���F���F���F���F���F���F���F���F���F���F���F���F������`F���F���F���F���F���F���F���F���F���F���F���F���F���F���F������oF�F�F���F���F���F���F���F���F���F���F���F���F���F���F���F���F���F�������F���F���F���F���F���F���F���F���F���F���F���F���F���F���F���F�����T\F�F�F�@F�@g_@F�@F�@d@F�F�F�F�F�@F�@c�@F�@F�@i�@F�F�F�@F�@iM@F�@F�@M@F�GwF�G,F�G
F�F�F�F�F�F�F�@F�@d{@F�@F�@nW@F�F�F�@F�@`�@F�@F�@l@F�GF�GF�@F�@j�@G@G@c�@GGG@G@M�@G@G	@G
@G@G@L�@GGGGGGG@G@cW@G@G@d@GGG@G@M�@G@G@e�@GG%GG"G @G!@d@G#@G$@d@G&G)G'@G(@b�@G*@G+@�H@G-GUG.GFG/G9G0G3G1@G2@N@G4@G5@G6@G7@G8@b�@G:G@G;@G<@G=@G>@G?@d@GA@GB@GC@GD@GE@d@GGGNGHGKGI@GJ@e�@GL@GM@p�@GOGRGP@GQ@b�@GS@GT@n�@GVGhGWG^GXG[GY@GZ@d{@G\@G]@ak@G_GeG`@Ga@Gb@Gc@Gd@c�@Gf@Gg@d@GiGpGjGmGk@Gl@L�@Gn@Go@cW@GqGtGr@Gs@l@Gu@Gv@`�@GxG�GyG�GzG�G{G�G|GG}@G~@L�@G�@G�@`�@G�G�G�@G�@b�@G�@G�@N@G�G�G�G�G�@G�@g4@G�@G�@G�@G�@G�@t�@G�G�G�@G�@t�@G�@G�@`�@G�G�G�G�G�G�G�@G�@`�@G�@G�@G�@G�@G�@M@G�G�G�@G�@b�@G�@G�@b�@G�G�G�G�G�@G�@N@G�@G�@iM@G�G�G�@G�@N@G�@G�@ak@G�G�G�G�G�G�G�G�G�@G�@M@G�@G�@h@G�G�G�@G�@��@G�@G�@b�@G�G�G�G�G�@G�@`�@G�@G�@G�@G�@G�@M@G�G�G�@G�@d@G�@G�@b�@G�G�G�G�G�G�G�@G�@q~@G�@G�@iM@G�G�G�@G�@L�@G�@G�@G�@G�@G�@d@G�G�G�G�G�@G�@H:@G�@G�@t�@G�G�G�@G�@L@H@H@iM@HIdHH�HH[HH:HHHHH	HH
@H@�@H
@H@cW@HHH@H@L�@H@H@H@H@H@d@HH!HHH@H@`�@H@H @d@H"H(H#@H$@H%@H&@H'@e�@H)@H*@H+@H,azH-azH.H6H/gQH0H3H1H2gQb�gQ{�H4H5gCgQwgQH7azH8azH9azazv�H;HJH<HCH=H@H>@H?@M�@HA@HB@c�@HDHGHE@HF@az@HH@HI@li@HKHTHLHQHM@HN@HO@HP@d@HR@HS@az@HUHXHV@HW@cW@HY@HZ@ku@H\H�H]HrH^HhH_HeH`@Ha@Hb@Hc@Hd@d@Hf@Hg@M@HiHoHj@Hk@Hl@Hm@Hn@M@Hp@Hq@c�@HsH�HtHwHu@Hv@c�@Hx@Hy@Hz@H{l�H|H}�l�H~l�Hl�H�l�H�l�H�l�H�l�H�l�l�H�l��H�H�H�@H�@`�@H�@H�@d@H�H�H�H�H�H�H�@H�@g4@H�@H�@L�@H�H�H�@H�@N@H�@H�@j�@H�H�H�H�H�@H�@N@H�@H�@N@H�H�H�@H�@c�@H�@H�@N@H�IH�H�H�H�H�H�H�H�H�@H�@M@H�@H�@N@H�H�H�@H�@iM@H�@H�@d@H�H�H�H�H�@H�@H�@H�@H�@H�@H�dH�H�H�H�dH�H�H�H�ddH���ddH�dH�d�H�H�H�dH�dH�H�db�b�c�H�dH�dH�H�d#rdH�H�H�H�H�dH�dH�H�db�sudH�dH�ddH�+�A�H�dH�dH�dH�H�d�Q�CdH�@H�@c�@H�H�H�@H�@H�@H�@H�@p�@H�@H�@j�@H�I
H�IH�IH�@H�@L�@I@I@d@II
I@I@I@`�II	e�`�e�I@I@ak@IIIII@I@c�@I@I@d@III@I@d]@I@I@d{@IIBII-II&I I#I!@I"@`�@I$@I%@d@I'I*I(@I)@N@I+@I,@l@I.I8I/I2I0@I1@b�@I3@I4@I5@I6@I7@xv@I9I?I:@I;@I<@b�I=I>b�b�x�I@@IA@`�@ICIRIDIKIEIHIF@IG@cW@II@IJ@li@ILIOIM@IN@c�@IP@IQ@cW@ISI]ITIWIU@IV@l@IX@IY@IZ@I[@I\@xv@I^IaI_@I`@L@Ib@Ic@xv@IeI�IfI�IgI�IhI}IiIsIjImIk@Il@iM@In@Io@Ip@Iq@Ir@`�@ItIzIu@Iv@Iw@Ix@Iy@N@I{@I|@L�@I~I�II�I�@I�@N@I�@I�@N@I�I�I�@I�@d@I�@I�@N@I�I�I�I�I�I�I�@I�@L�@I�@I�@I�@I�@I�@xv@I�I�I�@I�@I�@I�@I�@c�@I�@I�@M@I�I�I�I�I�@I�@E@I�@I�@�F@I�I�I�@I�@cW@I�@I�@d@I�I�I�I�I�I�I�I�I�@I�@M@I�@I�@`�@I�I�I�@I�@p�@I�@I�@d{@I�I�I�I�I�@I�@I�@I�@I�@b�@I�@I�@M@I�I�I�@I�@`�@I�@I�@N@I�I�I�I�I�@I�@I�@L@I�I�I�@I�@ak@I�@I�@N@I�I�I�I�I�@I�@e�@I�@I�@M@I�I�I�@I�@I�@I�@I�@L@I�@I�@g4@I�JBI�JI�JI�I�I�I�I�@I�@az@I�@I�@L@I�JJ@J@J@J@J@M@J@J@L�@J	JJ
J
J@J@b�@J@J@d@JJJ@J@J@J@J@cW@J@J@i�@JJ0JJ&JJ J@J@M@J!@J"@J#@J$@J%@d@J'J-J(@J)@J*@J+@J,@L@J.@J/@c�@J1J8J2J5J3@J4@L�@J6@J7@M@J9J<J:@J;@{
@J=@J>@J?@J@@JA@az@JCJ�JDJ�JEJ�JFJIJG@JH@lx@JJ@JK@JL@JMJ�JNNJOJvJPNJQNJRNJSNJTNJUNJVNJWNJXNJYNJZJpNJ[J\JmJ]NJ^NJ_NJ`JjJaJcJbQ�NQ�JdJeNQ�Q�JfJgQ�JhQ�JiQ�_FQ�Q�JkJlNQ�NJnNJoNN@�JqNJrNJsNJtJuQ�Q�NQ�JwNJxNJyNJzNJ{NJ|NJ}NJ~NJNJ�NJ�NJ�NJ�NJ�NJ�J�NQ�N;NNJ�NQ�J�J�J�@J�@d@J�@J�@iM@J�J�J�J�J�@J�@d@J�@J�@e�@J�J�J�@J�@d@J�@J�@J�@J�@J�@q~@J�J�J�J�J�J�J�@J�@li@J�@J�@t�@J�J�J�@J�@J�@J�@J�@d@J�@J�@m�@J�J�J�J�J�@J�@`�@J�@J�@�e@J�J�J�@J�@y7@J�@J�@N@J�M�J�L�J�L'J�K�J�J�J�J�J�J�J�J�J�@J�@j�@J�@J�@|@J�J�J�@J�@J�@J�@J�@d@J�@J�@`�@J�J�J�J�J�@J�@cW@J�@J�@d$@J�J�J�@J�@`�@J�@J�@L�@J�J�J�J�J�J�J�@J�@cW@J�@J�@L@J�J�J�@J�@xv@J�@J�@d{@J�K�J�KJ�@J�@b�@K@K@K@KazKKtKK7KazKazK	KK
azKazKKK
azKazKazazKazKv�azKazazKKazKKazKwazKKaz�KazwazKKazKK-azKK azK!azK"azK#K(azK$K%azK&azK'azwazazK)K*azK+azK,azv�azK.azK/azK0azK1azK2azazK3K4azK5azK6azb�azK8azK9azK:KgK;K[K<KPazK=K>KGazK?K@azKAazKBazKCazazKDKEazKFazazwazKHKIazKJazKKazKLazKMazazKNKOazb�azKQazazKRazKSKTazKUazKVazKWazKXazKYazazKZv�azK\azazK]K^azazK_K`azKaazKbazKcazKdazKeazKfazjazKhazazKiazKjazKkKlazKmazKnazKoazKpazKqazKrazKsaz�azKuazKvazKwK�KxK�KyK�KzazK{azK|azK}azK~azKK�K�azK�azK�K�K�azK�azK�azK�azK�azK�azK�azK�azK�azK�azK�azK�azK�azK�azK�azK�azK�azK�azv�azK�azazK�K�azK�azK�azK�azK�azK�azK�azK�azK�azK�azK�azK�azK�azK�azK�azK�azb�azK�K�azK�K�azK�azK�azazK�K�azK�azK�azK�azK�azK�azK�azK�azK�azK�azK�azK�azK�azK�azK�azb�azK�azK�azazK�K�azK�azK�azK�azK�azK�azK�azK�azK�azK�azK�azK�azK�azK�azK�azK�azK�azt�azazK�K�azazK�K�azazK�K�azK�azgCv�{�azK�azazv�K�K�K�@K�@b�@K�@K�@b�@K�LK�K�K�K�K�K�K�@K�@d@K�@K�@l�@K�K�K�@K�@l@K�@K�@b�@K�K�K�K�K�@K�@M�@K�@K�@cW@K�LL@L@M@L@L@L@LLLLLLL	@L
@L@L@L
@g_@L@L@`�@LLL@L@N@L@L@`�@LL LLL@L@L�@L@L@xv@L!L$L"@L#@cW@L%@L&@N@L(LjL)LHL*L9L+L2L,L/L-@L.@b�@L0@L1@d@L3L6L4@L5@b�@L7@L8@l�@L:LAL;L>L<@L=@`�@L?@L@@cW@LBLELC@LD@c�@LF@LG@g4@LILXLJLQLKLNLL@LM@iM@LO@LP@N@LRLULS@LT@L@LV@LW@L�@LYLcLZL]L[@L\@M�@L^@L_@L`@La@Lb@L@LdLgLe@Lf@M@Lh@Li@b�@LkL�LlL{LmLtLnLqLo@Lp@M@Lr@Ls@g4@LuLxLv@Lw@c�@Ly@Lz@d@L|L�L}L�L~@L@cW@L�@L�@K�@L�L�L�@L�@cW@L�@L�@m�@L�L�L�L�L�L�L�@L�@`�@L�@L�@e�@L�L�L�@L�@n�@L�@L�@d{@L�L�L�L�L�@L�@i�@L�@L�@d@L�L�L�@L�@��@L�@L�@li@L�M5L�L�L�L�L�L�L�L�L�L�L�@L�@l@L�@L�@d@L�L�L�@L�@L@L�@L�@N@L�L�L�L�L�@L�@nW@L�@L�@M@L�L�L�@L�@M@L�@L�@c�@L�L�L�L�L�L�L�@L�@cW@L�@L�@aN@L�L�L�@L�@c�@L�@L�@L�@L�@L�@d@L�L�L�L�L�@L�@N@L�@L�@cW@L�L�L�@L�@c�@L�@L�@L�@L�@L�@d]@L�ML�ML�L�L�L�L�@L�@L�@L�@L�@L@L�@L�@L@L�ML�@M@c�@M@M@M@MMMM	M@M@g4@M
@M@c�@M
MM@M@`�@M@M@cW@MM&MMMMM@M@M@M@M@li@M@M@cW@M M#M!@M"@b�@M$@M%@N@M'M.M(M+M)@M*@g4@M,@M-@c�@M/M2M0@M1@`�@M3@M4@N@M6M{M7M\M8MJM9MCM:M@M;@M<@M=@M>@M?@N@MA@MB@aN@MDMGME@MF@M@MH@MI@`�@MKMUMLMRMM@MN@MO@MP@MQ@xv@MS@MT@d@MVMYMW@MX@t�@MZ@M[@M@M]MlM^MeM_MbM`@Ma@iM@Mc@Md@g4@MfMiMg@Mh@N@Mj@Mk@`�@MmMtMnMqMo@Mp@L�@Mr@Ms@d@MuMxMv@Mw@M@My@Mz@xv@M|M�M}M�M~M�MM�M�@M�@b�@M�@M�@M�@M�M�M�@M�@p�@M�@M�@g4@M�M�M�M�M�@M�@`�@M�@M�@b�@M�M�M�@M�@b�@M�@M�@��@M�M�M�M�M�@M�@M�@g_@M�M�M�@M�@y7@M�@M�@c�@M�M�M�M�M�@M�@M@M�@M�@c�@M�M�M�@M�@k@M�@M�@b�@M�N�M�NNM�M�M�M�M�M�M�M�M�M�M�@M�@c�@M�@M�@M�@M�@M�@d@M�M�M�@M�@d@M�@M�@az@M�M�M�M�M�@M�@M@M�@M�@l�@M�M�M�@M�@d@M�@M�@M�@M�@M�@M@M�M�M�M�M�M�M�@M�@j*@M�@M�@d@M�M�M�@M�@cW@M�@M�@j�@M�M�M�M�M�@M�@�m@M�@M�@d@M�M�M�@M�@L@M�@M�@L@NN&NNNN	NNN@N@L�@N@N@xv@N
N
N@N@M@N@N@N@NNNNNOT[�R�NNN+_�_��NNNNN@N@d@N@N@az@N N#N!@N"@xv@N$@N%@H:@N'N<N(N/N)N,N*@N+@b�@N-@N.@nW@N0N6N1@N2@N3@N4@N5@M@N7@N8@N9@N:@N;@b�@N=NGN>NDN?@N@@NA@NB@NC@xv@NE@NF@M@NHNKNI@NJ@c�@NL@NM@M@NON�NPNrNQNcNRNYNSNVNT@NU@M�@NW@NX@L@NZN`N[@N\@N]@N^@N_@cW@Na@Nb@N@NdNkNeNhNf@Ng@b�@Ni@Nj@xv@NlNoNm@Nn@N@Np@Nq@xv@NsN�NtN{NuNxNv@Nw@b�@Ny@Nz@N@N|NN}@N~@d{@N�@N�@M@N�N�N�N�N�@N�@iM@N�@N�@L@N�N�N�@N�@N�@N�N�N�N�azN�N�azN�azN�azN�azN�azN�azazN�N�azN�azN�azN�azN�N�N�azazN�N�azazb�N�azN�azN�azgQazazgQazN�N�azN�azN�azN�azN�azN�azN�azazN�gCgQN�@N�@�F@N�N�N�N�N�N�N�N�N�@N�@l�@N�@N�@g4@N�N�N�@N�@d@N�@N�@b�@N�N�N�N�N�@N�@M�@N�@N�@N@N�N�N�@N�@N@N�@N�@M@N�N�N�N�N�N�N�@N�@N�@N�c�N�c�pc�N�@N�@�I@N�N�N�@N�@b�@N�@N�@b�@N�N�N�N�N�@N�@d@N�@N�@N�@N�@N�@ak@N�N�N�@N�@N�@N�@N�@g4@N�@N�@cW@N�O�N�OrN�OPN�O!OOOOO@O@h@O@O@d@OOO	@O
@O@OazO
azOazOazOazOazOazOazOazOazOazOazOazOOazgQgCazO@O@O@O@O @xv@O"OLO#O&O$@O%@N@O'@O(@O)@O*dO+dO,dO-dO.dO/dO0dO1dO2dO3dO4dO5dO6dO7dO8dO9dO:ddO;o�O<O=dO>dO?dO@dOAdOBdOCdODdOEdOFdOGdOHdOIdOJdOKdd�@OMON@OO@az@OQOcOROYOSOVOT@OU@d@OW@OX@M@OZO]O[@O\@N@O^@O_@O`@Oa@Ob@d@OdOkOeOhOf@Og@xv@Oi@Oj@xv@OlOoOm@On@`�@Op@Oq@K�@OsO�OtO�OuO�OvO|Ow@Ox@Oy@Oz@O{@ak@O}@O~@O@O�@O�@d@O�O�O�@O�@O�@O�@O�@M@O�@O�@O�@O�@O�@O�@O�e�O�e�O�e�O�e�O�e�O�e�O�e�O�e�O�e�O�e�O�e�O�e�O�e�O�e�O�e��e�O�O�O�O�O�@O�@L�@O�@O�@b�@O�O�O�@O�@c�@O�@O�@d@O�O�O�O�O�O�O�@O�@`�@O�@O�@g4@O�O�O�@O�@N@O�@O�@d@O�O�O�O�O�@O�@`�@O�@O�@L@O�O�O�@O�@lx@O�@O�@c�@O�PO�O�O�O�O�O�O�O�O�@O�@cW@O�@O�@b�@O�O�O�@O�@O�@O�@O�@p�@O�@O�@O�@O�@O�@c�@O�O�O�O�O�@O�@g_@O�@O�@�,@O�O�O�@O�@p�@O�@O�@d@O�PO�O�O�@O�@O�@d@O�O�O�@O�@b�@O�@P@P@P@P@L@PPPP	P@P@M�@P
@P@iM@P
PP@P@`�@P@P@P@P@P@M@PP9PP*PP#PP P@P@P@P@P@g4@P!@P"@y7@P$P'P%@P&@iM@P(@P)@L�@P+P2P,P/P-@P.@c�@P0@P1@g_@P3P6P4@P5@g_@P7@P8@i�@P:PLP;PEP<P?P=@P>@aN@P@@PA@PB@PC@PD@N@PFPIPG@PH@c�@PJ@PK@b�@PMPTPNPQPO@PP@xv@PR@PS@E@PUPXPV@PW@M@PY@PZ@P[@P\c�P]c�#�c�P_U*P`R�PaQ�PbP�PcP�PdP�PePtPfPmPgPjPh@Pi@��@Pk@Pl@`�@PnPqPo@Pp@c�@Pr@Ps@L�@PuP|PvPyPw@Px@c�@Pz@P{@d@P}P�P~@P@M@P�@P�@b�@P�P�P�P�P�P�P�@P�@d{@P�@P�@c�@P�P�P�@P�@P�@P�@P�@M@P�@P�@d{@P�P�P�P�P�@P�@d@P�@P�@nW@P�P�P�@P�@b�@P�@P�@cW@P�P�P�P�P�P�P�P�P�@P�@ty@P�@P�@li@P�P�P�@P�@b�@P�@P�@d@P�P�P�P�P�@P�@t�@P�@P�@L@P�P�P�@P�@xv@P�@P�@xv@P�P�P�P�P�P�P�@P�@E@P�@P�@M@P�P�P�@P�@Л@P�@P�@N@P�P�P�P�P�@P�@e�@P�@P�@L@P�P�P�@P�@g_@P�@P�@M@P�QLP�Q
P�P�P�P�P�P�P�@P�@l@P�@P�@d@P�P�P�@P�@p�@P�@P�@b�@P�QP�P�P�@P�@P�@P�@P�@j*@P�@Q@j�@QQQ@Q@d@Q@Q@Q@Q	do�dQQQQQ
QQ@Q@ak@Q@Q@ak@QQQ@Q@L�@Q@Q@iM@QQ"QQQ@Q@g_@Q @Q!@c�@Q#Q&Q$@Q%@e�@Q'@Q(@Q)@Q*LQ+LQ,LQ-LQ.LQ/LQ0LQ1LQ2LQ3LQ4LQ5LQ6LQ7LQ8LQ9LQ:LLQ;Q<LQ=LQ>LQ?LQ@LLQAQBLQCLLQDLQELQFQGLQHLQILLQJLQKL��QMQrQNQcQOQYQPQSQQ@QR@M@QT@QU@QV@QW@QX@az@QZQ]Q[@Q\@xv@Q^@Q_@Q`@Qa@Qb@L@QdQkQeQhQf@Qg@c�@Qi@Qj@b�@QlQoQm@Qn@xv@Qp@Qq@ak@QsQ�QtQ{QuQxQv@Qw@M�@Qy@Qz@p�@Q|QQ}@Q~@y7@Q�@Q�@b�@Q�Q�Q�Q�Q�@Q�@d@Q�@Q�@N@Q�Q�Q�@Q�@N@Q�@Q�@b�@Q�R4Q�Q�Q�Q�Q�Q�Q�Q�Q�Q�Q�@Q�@b�@Q�@Q�@d@Q�Q�Q�@Q�@Q�@Q�b�Q�b�Q�b�Q�b�Q�b�Q�b�Q�b�Q�b�Q�b�Q�b�Q�b�Q�b�Q�b�Q�b�Q�b�Q�b�Q�b�Q�Q�d$b�b�x�Q�@Q�@M@Q�Q�Q�Q�Q�@Q�@nW@Q�@Q�@`�@Q�Q�Q�@Q�@Q�@Q�@Q�@L�@Q�@Q�@`�@Q�Q�Q�Q�Q�Q�Q�@Q�@Q�@Q�@Q�@{
@Q�@Q�@e�@Q�Q�Q�@Q�@xv@Q�@Q�@iM@Q�Q�Q�Q�Q�@Q�@d{@Q�@Q�@L@Q�Q�Q�@Q�@Q�@Q�@Q�@L�@Q�@Q�@`�@Q�RQ�RQ�Q�Q�Q�Q�@Q�@M@Q�@Q�@N@Q�Q�Q�@Q�@b�@Q�@Q�@R@R@R@ty@RRRRR@R@M@R	@R
@��@RRR
@R@iM@R@R@R@R@R@L�@RR%RRRRR@R@e�@R@R@cW@RR"R @R!@`�@R#@R$@�b@R&R-R'R*R(@R)@M@R+@R,@~�@R.R1R/@R0@M@R2@R3@b�@R5R�R6RXR7RFR8R?R9R<R:@R;@c�@R=@R>@N@R@RCRA@RB@iM@RD@RE@L@RGRQRHRKRI@RJ@cW@RL@RM@RN@RO@RP@d@RRRURS@RT@`�@RV@RW@xv@RYRRZRuR[RrR\@R]@R^@R_b�R`Rax�b�Rbb�Rcb�Rdb�Reb�Rfb�Rgb�Rhb�Rib�Rjb�Rkb�Rlb�Rmb�Rnb�Rob�Rpb�Rqb���b�Rs@Rt@d@RvR|Rw@Rx@Ry@Rz@R{@q~@R}@R~@L@R�R�R�R�R�@R�@M@R�@R�@N@R�R�R�@R�@d{@R�@R�@R�@R�@R�@c�@R�R�R�R�R�R�R�R�R�@R�@L�@R�@R�@b�@R�R�R�@R�@`�@R�@R�@N@R�R�R�R�R�@R�@c�@R�@R�@cW@R�R�R�@R�@R�@R�@R�@L@R�@R�@L@R�R�R�R�R�R�R�@R�@g4@R�@R�@az@R�R�R�@R�@R�@R�@R�@cW@R�@R�@R�@R�@R�@�,@R�R�R�R�R�@R�@N@R�@R�@M@R�R�R�@R�@L@R�@R�@b�@R�TR�SiR�S!R�R�R�R�R�R�R�R�R�@R�@L�@R�@R�@N@R�R�R�@R�@d{@R�@R�@e�@R�R�R�R�R�@R�@R�@R�@R�@az@R�@R�@L�@R�R�R�@R�@N@R�@R�@g4@SSSSSSS@S@d@S@S@xv@S	SS
@S@c�@S
@S@g4@SSSSS@S@c�@S@S@c�@SSS@S@S@S@S@az@S@S @h@S"SAS#S2S$S+S%S(S&@S'@az@S)@S*@d@S,S/S-@S.@aN@S0@S1@li@S3S:S4S7S5@S6@M�@S8@S9@`�@S;S>S<@S=@M@S?@S@@d@SBSWSCSMSDSJSE@SF@SG@SH@SI@az@SK@SL@d@SNSTSO@SP@SQ@SR@SS@e�@SU@SV@c�@SXSbSYS\SZ@S[@p�@S]@S^@S_@S`@Sa@d@ScSfSd@Se@M@Sg@Sh@L@SjS�SkS�SlS~SmSwSnSqSo@Sp@M@Sr@Ss@St@Su@Sv@N@SxS{Sy@Sz@`�@S|@S}@b�@SS�S�S�S�@S�@xv@S�@S�@cW@S�S�S�@S�@S�@S�@S�@L�@S�@S�@iM@S�S�S�S�S�S�S�@S�@`�@S�@S�@S�@S�@S�@M@S�S�S�@S�@`�@S�@S�@|@S�S�S�S�S�@S�@b�@S�@S�@S�@S�@S�@iM@S�S�S�@S�@S�@S�@S�@b�@S�@S�@ku@S�S�S�S�S�S�S�S�S�@S�@S�@����S�@S�@l�@S�S�S�@S�@`�@S�@S�@d@S�S�S�S�S�@S�@d{@S�@S�@`�@S�S�S�@S�@b�@S�@S�@g4@S�TS�S�S�S�S�@S�@i�@S�@S�@S�@S�MS�MS�MS�MS�MS�MS�MS�MS�MS�MS�MS�MS�MS�MS�MS�S�MS�S�g�Mg�S�MS�Mg�MS�S�S�@S�@S�@S�@S�@�F@T@T@M@TT
TTT@T@sG@T@T	@d@TTT@T
@L�@T@T@aN@TT�TTUTT3TT$TTTTT@T@d@T@T@az@TT!T@T @c�@T"@T#@b�@T%T,T&T)T'@T(@L@T*@T+@L�@T-T0T.@T/@L@T1@T2@aN@T4TFT5T?T6T<T7@T8@T9@T:@T;@b�@T=@T>@l�@T@TCTA@TB@d@TD@TE@l�@TGTNTHTKTI@TJ@L�@TL@TM@L@TOTRTP@TQ@L@TS@TT@aN@TVTsTWTfTXT_TYT\TZ@T[@iM@T]@T^@N@T`TcTa@Tb@li@Td@Te@ak@TgToThTlTi@Tj@Tk@b�@Tm@Tn@�,@Tp@Tq@Tr@d@TtT�TuT|TvTyTw@Tx@N@Tz@T{@d@T}T�T~@T@N@T�@T�@w�@T�T�T�T�T�@T�@b�@T�@T�@T�@T�T�T�T�rI*rX�T�T�bd?d?!�T�T�T�@T�@cW@T�@T�@N@T�T�T�T�T�T�T�T�T�T�T�@T�@L�@T�@T�@M@T�T�T�@T�@d]@T�@T�@`�@T�T�T�T�T�@T�@M�@T�@T�@T�@T�@T�@aN@T�T�T�@T�@T�@T�@T�@q~@T�@T�@T�@T�@T�@N@T�T�T�T�T�T�T�@T�@`�@T�@T�@L@T�T�T�@T�@d@T�@T�@c�@T�T�@T�T�@T�@xv@T�T�T�@T�@T�@T�@T�@c�@T�@T�@T�@T�@T�@d@T�UT�T�T�T�T�T�T�@T�@L@T�@T�@li@T�T�T�@T�@L�@T�@T�@`�@T�T�T�T�T�@T�@b�@T�@T�@L@T�UU@U@b�@U@U@xv@UUUUUUU	@U
@cW@U@U
@d@UUU@U@iM@U@U@U@U@U@b�@UU UUU@U@M@U@U@c�@U!U'U"@U#@U$@U%@U&@d@U(@U)@L@U+W�U,VkU-U�U.U�U/UwU0UbU1U[U2U5U3@U4@d@U6@U7@U8@U9MU:MU;MU<MU=MU>MU?MU@MUAMUBMUCMUDMUEMUFMUGMUHMUIMUJMMUKULMUMMUNMUOMUPMUQMURMUSMUTMUUMUVMUWMMUXMUYUZMy�MU\U_U]@U^@d@U`@Ua@b�@UcUmUdUgUe@Uf@iM@Uh@Ui@Uj@Uk@Ul@N@UnUtUo@Up@Uq@Ur@Us@xv@Uu@Uv@ty@UxU�UyU�UzU}U{@U|@g4@U~@U@L@U�U�U�@U�@c�@U�@U�@e�@U�U�U�U�U�@U�@n�@U�@U�@d@U�U�U�@U�@E@U�@U�@d@U�U�U�U�U�U�U�U�U�@U�@cW@U�@U�@U�@U�@U�@M@U�U�U�@U�@d@U�@U�@j*@U�U�U�U�U�@U�@U�@U�@U�@L�@U�@U�@N@U�U�U�@U�@N@U�@U�@U�@U�@U�@q~@U�U�U�U�U�U�U�@U�@`�@U�@U�@b�@U�U�U�@U�@c�@U�@U�@d@U�U�U�U�U�@U�@d]@U�@U�@`�@U�@U�@U�@L�@U�VU�U�U�U�U�U�U�U�U�@U�@L@U�@U�@lx@U�U�U�@U�@L�@U�@U�@M@U�U�U�U�U�@U�@N@U�@U�@M@U�U�U�@U�@L�@U�@U�@�H@U�VU�VU�VV@V@li@V@V@L�@VVV@V@V	@V
@V@c�@V
@V@M@VVVVV@V@d@V@V@M@VVV@V@g_@V@V@L�@VVAV V2V!V+V"V(V#@V$@V%@V&@V'@ak@V)@V*@nW@V,V/V-@V.@M@V0@V1@aN@V3V:V4V7V5@V6@M@V8@V9@l@V;V>V<@V=@L@V?@V@@M�@VBVTVCVMVDVGVE@VF@e�@VH@VI@VJ@VK@VL@ak@VNVQVO@VP@j*@VR@VS@L�@VUVdVVV\VW@VX@VY@VZ@V[@N@V]@V^@V_@V`Vb��Va��c�Vc`�lZVeVhVf@Vg@L@Vi@Vj@d@VlWVmV�VnV�VoV�VpVwVqVtVr@Vs@b�@Vu@Vv@M�@VxV~Vy@Vz@V{@V|@V}@cW@V@V�@b�@V�V�V�V�V�@V�@L@V�@V�@j�@V�V�V�@V�@`�@V�@V�@V�@V�@V�@d@V�V�V�V�V�V�V�@V�@`�@V�@V�@V�@V�@V�@N@V�V�V�@V�@b�@V�@V�@aN@V�V�V�V�V�@V�@iM@V�@V�@cW@V�V�V�@V�@d@V�@V�@V�@V�@V�@b�@V�V�V�V�V�V�V�V�V�@V�@iM@V�@V�@N@V�V�V�@V�@M@V�@V�@g4@V�V�V�V�V�@V�@s�@V�@V�@V�@V�@V�@b�@V�V�V�@V�@z�@V�@V�@cW@V�V�V�V�V�V�V�@V�@b�@V�@V�@V�@V�@V�@d@V�V�V�@V�@V�@V�@V�@`�@V�@V�@c�@V�V�V�V�V�@V�@b�@V�@V�@L�@V�V�V�@V�@xv@V�@V�@�I@WWCWW$WWWWWWW@W@c�@W	@W
@nW@WWW
@W@xv@W@W@iM@WWWWW@W@`�@W@W@L@WWW@W@M@W@W @W!@W"@W#@N@W%W4W&W-W'W*W(@W)@rX@W+@W,@F�@W.W1W/@W0@L@W2@W3@c�@W5W<W6W9W7@W8@M@W:@W;@i�@W=W@W>@W?@|+@WA@WB@p�@WDWcWEWTWFWMWGWJWH@WI@��@WK@WL@L@WNWQWO@WP@M�@WR@WS@L@WUW\WVWYWW@WX@`�@WZ@W[@L@W]W`W^@W_@cW@Wa@Wb@xv@WdWsWeWlWfWiWg@Wh@d@Wj@Wk@M@WmWpWn@Wo@g4@Wq@Wr@cW@WtW�WuW{Wv@Ww@Wx@Wy@Wz@xv@W|@W}@W~@W@W�@c�@W�W�W�@W�@M�@W�@W�@b�@W�X�W�XW�W�W�W�W�W�W�W�W�W�W�@W�@L@W�@W�@`�@W�W�W�@W�@W�@W�@y7@W�@W�@q~@W�W�W�W�W�@W�@b�@W�@W�@L@W�W�W�@W�@xv@W�@W�@M@W�W�W�W�W�W�W�@W�@d@W�@W�@ak@W�W�W�@W�@N@W�@W�@N@W�W�W�W�W�@W�@W�@W�@W�@nW@W�@W�@i�@W�W�W�@W�@e�@W�@W�@L�@W�W�W�W�W�W�W�W�W�@W�@`�@W�@W�@xv@W�W�W�@W�@az@W�@W�@M@W�W�W�W�W�@W�@W�@W�@M@W�@W�@M@W�W�W�@W�@d{@W�@W�@q~@W�XW�W�W�W�W�@W�@�,@W�@W�@ty@W�W�W�@W�@c�@W�@X@p�@XX	XXX@X@c�@X@X@ty@X
X
X@X@c�@X@X@xv@XX_XX4XX"XXXXX@X@L@X@X@xv@XXX@X@d@X @X!@az@X#X-X$X'X%@X&@M@X(@X)@X*@X+@X,@b�@X.X1X/@X0@b�@X2@X3@e�@X5XMX6X@X7X=X8@X9@X:@X;@X<@`�@X>@X?@t�@XAXGXB@XC@XD@XE@XF@c�@XH@XI@XJ@XK@XL@L�@XNXXXOXUXP@XQ@XR@XS@XT@M@XV@XW@M@XYX\XZ@X[@N@X]@X^@cW@X`X�XaXsXbXiXcXfXd@Xe@N@Xg@Xh@b�@XjXpXk@Xl@Xm@Xnb�b�Xox�b�Xq@Xr@d@XtX{XuXxXv@Xw@b�@Xy@Xz@L�@X|XX}@X~@M@X�@X�@L@X�X�X�X�X�X�X�@X�@li@X�@X�@�,@X�X�X�@X�@cW@X�@X�@X�@X�@X�@`�@X�X�X�X�X�@X�@L@X�@X�@L@X�X�X�@X�@az@X�@X�@X�@X�@X�@N@X�Y�X�YX�X�X�X�X�X�X�X�X�@X�@X�@X�@X�@az@X�@X�@X�@X�@X�@d@X�X�X�@X�@X�@X�@X�@d@X�@X�@c�@X�X�X�X�X�@X�@j�@X�@X�@L�@X�X�X�@X�@X�@X�@X�@M@X�@X�@X�@X�@X�@L�@X�X�X�X�X�X�X�@X�@X�@X�@X�@nW@X�@X�@p�@X�X�X�@X�@e�@X�@X�@w�@X�YX�YX�@X�@X�@X�Mg�X�X�MX�MX�MX�MX�MX�MMX�X�MX�MX�MX�MX�MX�MYYMYMg�YMg�Yg�MY@Y@`�@Y	YY
@Y@N@Y
@Y@m�@YY�YY�YYYYY@Y@Y@Y@Y@d@Y@Y@d@YY#Y@Y@Y @Y!@Y"@ak@Y$@Y%@Y&@Y'dY(YOY)dY*dY+dY,dY-dY.dY/dY0ddY1Y2ddY3dY4Y5ddY6dY7Y8dY9dY:dY;dY<dY=dY>dY?dY@dYAdYBdYCdYDdYEYKYFYIYG�YH�d�YJd�dYLd�YM�YN�dYPdYQdYRdYSdYTdYUdYVdYWdYXdYYdYZdY[dY\dY]dY^Y�Y_Y�Y`YpYadYbdYcdYddYedYfdYgdYhdYidYjdYkdYldYmdYndYod�dYqdYrdYsdYtdYudYvdYwdYxdYydYzdY{dY|dY}dY~dYd�dY�Y�Y�dY�dY�dY�dY�dY�dY�dY�dY�dY�dY�dY�dY�dY�dY�d�dY�dY�dY�dY�dY�dY�dY�dY�dY�dY�dY�dY�dY�dY�dY�d�dY�dY�dY�dY�dY�dY�dY�dY�dY�dY�dY�dY�dY�dY�dY�dY�dY�d�dY�Y�Y�Y�Y�@Y�@li@Y�@Y�@N@Y�Y�Y�@Y�@j*@Y�@Y�@cW@Y�Y�Y�Y�Y�Y�Y�@Y�@f@Y�@Y�@b�@Y�Y�Y�@Y�@j�@Y�@Y�@m�@Y�Y�Y�Y�Y�@Y�@aN@Y�@Y�@l�@Y�Y�Y�@Y�@c�@Y�@Y�@d{@Y�Z'Y�ZY�Y�Y�Y�Y�Y�Y�@Y�@ak@Y�@Y�@d@Y�Y�Y�@Y�@d@Y�@Y�@L�@Y�Y�Y�Y�Y�@Y�@M�@Y�@Y�@Y�@Y�@Y�@M@Y�ZZ@Z@d@Z@Z@��@ZZZZZZZ	@Z
@d@Z@Z
@��@ZZZ@Z@L@Z@Z@q~@ZZZZZ@Z@d@Z@Z@l@ZZ!Z@Z @d@Z"@Z#@Z$@Z%@Z&@N@Z(Z]Z)ZKZ*ZDZ+Z.Z,@Z-@ty@Z/@Z0@Z1@Z2xvZ3xvZ4xvZ5xvZ6xvZ7xvZ8xvZ9xvZ:xvZ;xvZ<xvZ=xvZ>xvZ?xvZ@xvZAxvZBxvZCxv�xvZEZHZF@ZG@y7@ZI@ZJ@L@ZLZVZMZSZN@ZO@ZP@ZQ@ZR@L�@ZT@ZU@`�@ZWZZZX@ZY@M�@Z[@Z\@`�@Z^ZmZ_ZfZ`ZcZa@Zb@L@Zd@Ze@nW@ZgZjZh@Zi@b�@Zk@Zl@M@ZnZuZoZrZp@Zq@az@Zs@Zt@`�@ZvZyZw@Zx@h@Zz@Z{@`�@Z}�NZ~wyZh�Z�cyZ�\�Z�[�Z�[Z�Z�Z�Z�Z�Z�Z�Z�Z�Z�Z�@Z�@nW@Z�@Z�@Z�@Z�@Z�@L�@Z�Z�Z�@Z�@M@Z�@Z�@L@Z�Z�Z�Z�Z�@Z�@iM@Z�@Z�@M@Z�Z�Z�@Z�@cW@Z�@Z�@y7@Z�Z�Z�Z�Z�Z�Z�@Z�@L�@Z�@Z�@L@Z�Z�Z�@Z�@d@Z�@Z�@d@Z�Z�Z�Z�Z�@Z�@`�@Z�@Z�@xv@Z�Z�Z�@Z�@`�@Z�@Z�@Z�@Z�@Z�@d@Z�Z�Z�Z�Z�Z�Z�Z�Z�@Z�@d@Z�@Z�@Z�@Z�@Z�@g4@Z�Z�Z�@Z�@Z�@Z�@Z�@�R@Z�@Z�@e�@Z�Z�Z�Z�Z�@Z�@Z�@d@Z�@Z�@L@Z�Z�Z�@Z�@c�@Z�@Z�@e�@Z�[Z�Z�Z�Z�Z�@Z�@L�@Z�@Z�@H:@Z�Z�Z�@Z�@d{@Z�@Z�@M@[[[[[@[@[@[@[@L�@[	@[
@M@[[[
@[@d{@[@[@N@[[[[[9[['[[[[[@[@b�@[@[@j�@[[![@[ @d{@["@[#@[$@[%@[&@L@[([/[)[,[*@[+@`�@[-@[.@nW@[0[6[1@[2@[3@[4@[5@b�@[7@[8@b�@[:[I[;[B[<[?[=@[>@`�@[@@[A@t�@[C[F[D@[E@d{@[G@[H@p�@[J[T[K[Q[L@[M@[N@[O@[P@d{@[R@[S@c�@[U[X[V@[W@b�@[Y@[Z@nW@[\[~[][o[^[h[_[b[`@[a@d@[c@[d@[e@[f@[g@d@[i[l[j@[k@d{@[m@[n@M@[p[w[q[t[r@[s@d@[u@[v@d@[x[{[y@[z@d{@[|@[}@p�@[[�[�[�[�[�[�@[�@{
@[�@[�@L@[�[�[�@[�@d{@[�@[�@`�@[�[�[�[�[�@[�@d{@[�@[�@d@[�[�[�@[�@`�@[�@[�@xv@[�\&[�[�[�[�[�[�[�[�[�[�[�@[�@g_@[�@[�@L�@[�[�[�@[�@`�@[�@[�@g_@[�[�[�[�[�@[�@[�@[�@[�@L�@[�@[�@M@[�[�[�@[�@l�@[�@[�@L@[�[�[�[�[�[�[�@[�@L@[�@[�@b�@[�[�[�@[�@L�@[�@[�@M@[�[�[�[�[�@[�@j�@[�@[�@c�@[�[�[�@[�@L@[�@[�@c�@[�\[�[�[�[�[�[�[�@[�@nW@[�@[�@b�@[�[�[�@[�@M@[�@[�@d@[�[�[�[�[�@[�@L@[�@[�@p�@[�[�[�@[�@xv@[�@\@d@\\\\
\\
\@\@\@\@\	@��@\@\@c�@\\\@\@c�@\@\@m�@\\\\\@\@d@\@\@iM@\\ \@\@c�@\!@\"@\#@\$@\%@L@\'\l\(\J\)\;\*\1\+\.\,@\-@b�@\/@\0@az@\2\5\3@\4@xv@\6@\7@\8@\9@\:@g4@\<\C\=\@\>@\?@az@\A@\B@p�@\D@\E@\F@\G@\H@\I@g4@\K\]\L\V\M\S\N@\O@\P@\Q@\R@M@\T@\U@t�@\W\Z\X@\Y@L@\[@\\@b�@\^\e\_\b\`@\a@nW@\c@\d@L@\f\i\g@\h@d@\j@\k@nW@\m\�\n\}\o\v\p\s\q@\r@li@\t@\u@y7@\w\z\x@\y@L@\{@\|@L@\~\�\\�\�@\�@\�@d@\�@\�@L@\�\�\�@\�@b�@\�@\�@L�@\�\�\�\�\�\�\�@\�@�G@\�@\�@M@\�\�\�@\�@d{@\�@\�@N@\�\�\�\�\�@\�@g4@\�@\�@c�@\�\�\�@\�@L@\�@\�@d@\�]�\�]+\�\�\�\�\�\�\�\�\�\�\�@\�@d@\�@\�@d@\�\�\�@\�@h@\�@\�@L�@\�\�\�\�\�@\�@b�@\�@\�@`�@\�\�\�@\�@d@\�@\�@L@\�\�\�\�\�\�\�@\�@iM@\�@\�@cW@\�\�\�@\�@nW@\�@\�@d@\�\�\�\�\�@\�@M@\�@\�@g4@\�\�\�@\�@�b@\�@\�@b�@\�]\�\�\�\�\�\�\�@\�@cW@\�@\�@xv@\�\�\�@\�@N@\�@\�@d{@]]]]]@]@d@]@]@j�@]]]	@]
@]@t�@]
@]@b�@]]]]]]]@]@L�@]@]@p�@]]]@]@N@]@]@M�@] ]']!]$]"@]#@c�@]%@]&@L�@@](])@]*@L@],]q]-]R].]@]/]9]0]6]1@]2@]3@]4@]5@N@]7@]8@b�@]:]=];@]<@c�@]>@]?@xv@]A]H]B]E]C@]D@p�@]F@]G@b�@]I]O]J@]K@]L@]M@]N@b�@]P@]Q@d{@]S]b]T][]U]X]V@]W@ak@]Y@]Z@c�@]\]_]]@]^@M@]`@]a@`�@]c]j]d]g]e@]f@E@]h@]i@g4@]k]n]l@]m@b�@]o@]p@d@]r]�]s]�]t]{]u]x]v@]w@d{@]y@]z@nW@]|]]}@]~@c�@]�@]�@li@]�]�]�]�]�@]�@g4@]�@]�@M@]�]�]�@]�@c�@]�@]�@L�@]�]�]�]�]�]�]�@]�@sG@]�@]�@]�@~@]�]�]�@]�@L@]�@]�@nW@]�]�]�]�]�@]�@]�@M]�M]�M]�]�M]�M]�M]�M]�M]�M]�M]�M]�MM]�M]�M]�]�M]�MM]�g�M]�@]�@`�@]�]�]�@]�@`�@]�@]�@cW@]�^k]�^]�]�]�]�]�]�]�]�]�@]�@]�@]�@]�@d@]�@]�@d@]�]�]�@]�@]�@]�@]�@`�@]�@]�@g4@]�]�]�]�]�@]�@c�@]�@]�@b�@]�]�]�@]�@`�@]�@]�@M@]�]�]�]�]�]�]�@]�@l@]�@]�@xv@]�]�]�@]�@M@]�@]�@d@]�^]�^]�@^@^@^@^@p�@^@^@M@^^^	@^
@c�@^@^
@L@^^.^^^^^^^@^@d{@^@^@b�@^^^@^@M@^@^@li@^ ^'^!^$^"@^#@d@^%@^&@c�@^(^+^)@^*@d@^,@^-@d@^/^Y^0^:^1^7^2@^3@^4@^5@^6@`�@^8@^9@`�@^;^>^<@^=@iM@^?@^@@^A@^B^W^C�^Dl�^El�^Fl�^Gl�^Hl�^Il�^Jl�^Kl�^Ll�^Ml�^Nl�^Ol�^Pl�^Q^T^Rl�^Sl��l�^Ul�^Vl�rl�l�^X��^Z^d^[^a^\@^]@^^@^_@^`@c�@^b@^c@`�@^e^h^f@^g@פ@^i@^j@`�@^lc.^m^�^n^�^o^y^p^v^q@^r@^s@^t@^u@cW@^w@^x@ty@^z^}^{@^|@iM@^~@^@`�@^�^�^�^�^�@^�@N@^�@^�@az@^�^�^�@^�@`�@^�@^�@rf@^�^�^�^�^�^�^�@^�@w@^�@^�@az@^�^�^�@^�@d{@^�@^�@az@^�^�^�^�^�@^�@`�@^�@^�@M@^�c+^�@^�@^�@^�cW^�cW^�cW^�cWcW^�^�`�^�`^�_e^�_^�^�cW^�^�cWcW^�^�cW^�^�^�^�cW^�^�^��8y�\��G^�^�^�cWcW�V^�^�\��ecW\�^�^�^�^�^�^�cW��v��t^�^�)��cWЃ^�cW^�^�ВcW]
cW^�^�^�cWcW^�^�cW^�^�^�^�^�^�^�^�cW��СcW^�^�а��п�O^�^�^�^�]����cW^�^�����
9�^�^�^�^�^�^�cW��7�+^�^��:cW�I�Y^�cW^�^�cW9��icW^�cWcW^�^�cW^�_^�^�^�^�^�^�cW�mcW�x^�^�чcWїѧ^�_^�_cW��cWѷ__��]+m���____cW_��cW_	_
cW���_cW_
_�#�&�cW__7__#_cWcW__cW____cW__cWcW$$__cW_�2rC__cW�BcW�QcW_ _!cWcW_"];cW_$cWcW_%_&cW_'_1_(_._)_+cW_*cW�`_,_-cW��cW__/cW_0cW�pcW_2cW_3_5cW_4]K�W_6cW][cW_8_H_9cWcW_:_;cW_<_DcW_=_>_A_?_@cWW�Ҁҏ_B_CcWҟcWҮ_EcW_FcWcW_G�cW_IcWcW_J_KcW_L_Z_M_T_N_Q_O_PcWҽ��cW_R_S�����G��_U_W_VcW���_X_Y�
��)cW_[_b_\___]_^�9�H�^�X_`_a�h�wcW:_ccW_dcWcWӆ_f_�_g_�_h_y_icWcW_j_kcW_l_scW_m_n_pcW_ocWy_q_rcW%(ӖcW_tcW_u_wcW_v�|cW_xcWӥ�0_zcWcW_{_|cW_}_�_~_�cW__�cWӴ�@cW_�_�_����9���_�cW_�_�_�_�cW]k�B\�_�cW9�cW_�_�_�cWcW_�_�cW_�_�_�_�cW_�_�cWcW��cW_�_�_�cW��cW]z_�cW_�cW_�cWghcW_�cWcW_�_�cW_�_�_�_�cW_�_�_�cW]�cW��_�_�_�cW��
_�_�cW]��cW_�_�_�_�_�_��+cWv�cWcW_�cW]�_�cW_�_�cW�:]�cW_�_�_�_�_�cWcW_�_�cW_�_�_�_�_�cW_�_�cW�I�X�g_�cW_�_�cW��cW�v_�_�_�_�cW_�ԅԕ_�_�gv#s��cW_�cW_�cWcW]�_�cWcW_�_�cW_�_�_�_�_�_�_�_�cWԥcWԵ_�_�}�]�����_�_�_�_���cWcW��_�_���� �/_�_�_�_�_�_��>�M]��\_�_��k^�zՉ_�cW_�_�9�9�^$cW_�`_�cWcW_�_�cW_�`_�_�_�_�_�_�cWՙcWթ_�_�cWո����_�_�_�cWcW��``�fcWcW$``	````�cW�cW`cWcW�`
cWcW`��cW`
cWcW``cW`cWcW`cW``cWcW^``�``m``<``4`cWcW``cW``*``#`` `cWcWm�`!`"cW�#�3�B`$`'`%`&�QcWcW9�`(`)��`�ocW`+`1`,`.cW`-�~֍`/`0�(cWcW֜`2cW`3cWcW֫`5cWcW`6`7cW`8cW`9cW`:cW`;cWcW]�`=`O`>cWcW`?`@cW`A`H`B`EcW`C`DcWcWֻcW`FcW`GcW�`IcW`J`LcW`KcW�?`M`NcW4PcW^C`PcWcW`Q`RcW`S`b`T`[`U`X`V`WcW^4����`Y`Z^c|�cW�u`\`_`]`^������!```a���	^S^�`c`i`d`fcW`e�^�`g`h�(cW�8cW`jcW`k`l9�^s�GcW`n`�`o`�`pcWcW`q`rcW`s`�`t`z`u`wcW`vcW�W`x`y^�cW�f^�`{`~`|`}�vcW:*ׄ``�ד^�^�ע`�`�`�`�cW`�\�cW`�`�ױcW���`�cWcW`�^�cW`�cWcW`�`�cW`�`�`�`�`�`�`�cWcW|cW`�cW^�cW`�`�cWcW��`�`�`�cWcW`�cWx�`�cW`�`�cW��_cW`�`�`�cWcW`�`�cW`�`�`�`�`�`�`�`�cW�cW�`�`�cW:
cW�`�`�`�cWcW�)cW`��8cW`�cWcW`�`�cWcW�G`�cWcW`�`�cW`�`�`�cWcW`�cW`��VcW`�cW`�cWcW`�cW�e`�cW`�`�cW`�`�cWcW`�`�cW`�`�`�cWcW`�`�cWcW_`�cWcW`�`�cW�tcW`�cW`�cWcW`�`�cW`�`�`�`�`�cW`�cWcWv�cW`�`�cWcW؄`�cWcW`�cW`�cWؔ`�bD`�a�`�a?`�acW`�`�cWcW`�cW`�`�`�`�`�cW`�`�`��8y�\��G`�`�`�cWcW�V`�`�\��ecW\�`�`�`�`�`�`�cW��v��t`�`�)��cWЃ`�cW`�aВcW]
cWaa!acWcWacWaaaaaaaa	a
cW��СcWaa
а��п�Oaaaa]����cWaa����
9�aaaaaacW��7�+aa�:cW�I�YacWaa cW9��icWa"cWcWa#cWa$a%a4a&a-a'a*a(a)cW�mcW�xa+a,чcWїѧa.a1a/a0cW��cWѷa2a3��]+m���a5a;a6a8cWa7��cWa9a:cW���a<cWa=a>�#�&�cWa@agaAaSaBcWcWaCcWaDaEaOaFaIcWaGaHcWcW$$aJaLcWaK�2rCaMaNcW�BcW�QcWaPaQcWcWaR];cWaTcWcWaUcWaVaWaaaXa^aYa[cWaZcW�`a\a]cW��cW_a_cWa`cW�pcWabcWacaecWad]K�WafcW][cWahaxaicWcWajcWakalatcWamanaqaoapcWW�ҀҏarascWҟcWҮaucWavcWcWaw�cWaycWcWazcWa{a|a�a}a�a~a�aa�cWҽ��cWa�a������G��a�a�a�cW���a�a��
��)cWa�a�a�a�a�a��9�H�^�Xa�a��h�wcW:a�cWa�cWcWӆa�a�a�a�a�a�a�cWcWa�cWa�a�a�cWa�a�a�cWa�cWya�a�cW%(ӖcWa�cWa�a�cWa��|cWa�cWӥ�0a�cWcWa�cWa�a�a�a�a�cWa�a�cWӴ�@cWa�a�a����9���a�cWa�a�a�a�cW]k�B\�a�cW9�cWa�a�a�cWcWa�cWa�a�a�a�a�cWa�a�cWcW��cWa�a�a�cW��cW]za�cWa�cWa�cWghcWa�cWcWa�cWa�a�a�a�a�cWa�a�a�cW]�cW��a�a�a�cW��
a�a�cW]��cWa�a�a�a�a�a��+cWv�cWcWa�cW]�a�cWa�a�cW�:]�cWa�ba�ba�cWcWa�cWa�a�a�a�a�a�cWa�a�cW�I�X�ga�cWa�a�cW��cW�va�a�a�a�cWa�ԅԕa�a�gv#s��cWa�cWa�cWcW]�bcWcWbcWbbbbbbb	bbcWԥcWԵb
b}�]�����b
bbb��cWcW��bb��� �/bbbbbb�>�M]��\bb�k^�zՉbcWbb9�9�^$cWb b<b!cWcWb"cWb#b$b2b%b,b&b)b'b(cWՙcWթb*b+cWո����b-b/b.cWcW��b0b1�fcWcW$b3b9b4b7b5b6�cW�cWb8cWcW�b:cWcWb;��cWb=cWcWb>cWb?b@cWcWbAcWbBbCcWcW^bEb�bFb�bGblbHbdbIcWcWbJcWbKbLbZbMbSbNbPbOcWcWm�bQbRcW�#�3�BbTbWbUbV�QcWcW9�bXbY��`�ocWb[bab\b^cWb]�~֍b_b`�(cWcW֜bbcWbccWcW֫becWcWbfcWbgbhcWbicWbjcWbkcWcW]�bmbbncWcWbocWbpbqbxbrbucWbsbtcWcWֻcWbvcWbwcW�bycWbzb|cWb{cW�?b}b~cW4PcW^Cb�cWcWb�cWb�b�b�b�b�b�b�b�b�cW^4����b�b�^c|�cW�ub�b�b�b�������!b�b����	^S^�b�b�b�b�cWb��^�b�b��(cW�8cWb�cWb�b�9�^s�GcWb�b�b�b�b�cWcWb�cWb�b�b�b�b�b�b�cWb�cW�Wb�b�^�cW�f^�b�b�b�b��vcW:*ׄb�b�ד^�^�עb�b�b�b�cWb�\�cWb�b�ױcW���b�cWcWb�^�cWb�cWcWb�cWb�b�b�b�b�b�b�b�cWcW|cWb�cW^�cWb�b�cWcW��b�b�b�cWcWb�cWx�b�cWb�b�cW��_cWb�b�b�cWcWb�cWb�b�b�b�b�b�b�b�b�cW�cW�b�b�cW:
cW�b�b�b�cWcW�)cWb��8cWb�cWcWb�b�cWcW�Gb�cWcWb�cWb�b�b�b�cWcWb�cWb��VcWb�cWb�cWcWb�cW�eb�cWb�ccWb�b�cWcWb�cWb�b�b�b�cWcWb�b�cWcW_b�cWcWb�ccW�tcWccccWcWccWccc
cc
ccWc	cWcWv�cWcccWcW؄ccWcWccWccWؔccWccWccWccWccWcc)cWccWcccWccWccWccWccWccWc cWc!cWc"cWcWc#cWc$c%cWcWc&c'cWc(cW|�cWc*cW��cWc,@c-@N@c/cWc0cEc1c;c2c5c3@c4@L�@c6@c7@c8@c9@c:@M@c<c?c=@c>@d@c@@cA@cB@cC@cD@L@cFcPcGcJcH@cI@L�@cK@cL@cM@cN@cO@li@cQcTcR@cS@b�@cU@cV@M@cXcgcYc`cZc]c[@c\@c�@c^@c_@e�@cacdcb@cc@c�@ce@cf@d@chcrciclcj@ck@`�@cm@cn@co@cp@cq@b�@cscvct@cu@`�@cw@cx@L@czfc{d�c|dc}c�c~c�cc�c�c�c�c�c�@c�@c�@c�@c�@iM@c�@c�@`�@c�c�c�@c�@L@c�@c�@cW@c�c�c�c�c�@c�@cW@c�@c�@L�@c�c�c�@c�@`�@c�@c�@az@c�c�c�c�c�c�c�@c�@l@c�@c�@i�@c�c�c�@c�@b�@c�@c�@`�@c�c�c�c�c�@c�@c�@c�@c�@d@c�@c�@c�@c�c�c�@c�@M@c�@c�@li@c�c�c�c�c�c�c�c�c�@c�@c�@c�@c�@L�@c�@c�@d@c�c�c�@c�@x�@c�@c�@c�@c�c�c�c�c�@c�@c�@c�@c�@�,@c�@c�@sG@c�c�c�@c�@L@c�@c�@d]@c�c�c�c�c�c�c�@c�@aN@c�@c�@L@c�c�c�@c�@N@c�@c�@c�@c�dc�c�c�@c�@N@c�@c�@N@ddd@d@`�@d@d@c�@ddGd	d(d
dddddd
@d@xv@d@d@d@ddd@d@e@d@d@`�@dd!ddd@d@c�@d@d @L@d"d%d#@d$@M@d&@d'@M@d)d8d*d1d+d.d,@d-@N@d/@d0@c�@d2d5d3@d4@`�@d6@d7@d@d9d@d:d=d;@d<@M@d>@d?@L�@dAdDdB@dC@L@dE@dF@e�@dHdjdId[dJdQdKdNdL@dM@`�@dO@dP@d@dRdUdS@dT@d@dV@dW@dX@dY@dZ@L@d\dcd]d`d^@d_@lx@da@db@d@dddgde@df@aN@dh@di@N@dkdzdldsdmdpdn@do@li@dq@dr@g4@dtdwdu@dv@L@dx@dy@M@d{d�d|dd}@d~@L@d�@d�@M@d�d�d�@d�@i�@d�@d�@L@d�eFd�d�d�d�d�d�d�d�d�d�d�@d�@d�@L�@d�@d�@L@d�d�d�@d�@d@d�@d�@`�@d�d�d�d�d�@d�@d@d�@d�@d�@d�@d�@N@d�d�d�@d�@��@d�@d�@c�@d�d�d�d�d�d�d�@d�@az@d�@d�@b�@d�d�d�@d�@`�@d�@d�@e�@d�d�d�d�d�@d�@b�@d�@d�@L�@d�d�d�@d�@g_@d�@d�@g4@d�ed�ed�d�d�d�d�@d�@M@d�@d�@d�@d�Md�Md�Md�d�d�Md�Md�Md�Md�Md�MMd�d�MMd�d�M��MMd�Md�Md�d�Md�Md�Md�Md�Md�Md�Md�Md�Md�Md�M��Md�d�d�@d�@c�@d�@d�@d�@d�@d�@d@eeeee@e@e@e@e@L@e	@e
@�,@eee
@e@`�@e@e@M@ee"eeeee@e@d@e@e@b�@eee@e@M@e @e!@M@e#e?e$e<e%@e&@e'@M�e(M�e)M�e*M�e+M�e,M�e-M�e.M�e/M�e0M�e1M�e2e3M�e4M�e5M�e6M�e7M�e8e:��e9hM�e;M�hM�e=@e>@p�@e@eCeA@eB@i�@eD@eE@`�@eGe�eHeteIeXeJeQeKeNeL@eM@N@eO@eP@c�@eReUeS@eT@ak@eV@eW@b�@eYemeZeje[@e\@e]@e^Ne_Ne`NeaefebedNecYN;Q�eeOEP}egNeheiOTVpOqNek@el@d{@eneqeo@ep@lx@er@es@m�@eue�eve}ewezex@ey@nW@e{@e|@ak@e~e�e@e�@e�@e�Le�LLe�e�Le�LLe�Le�e�Le�Le�LLe�e�Le�Le�Le�LLe�e�LLe�e�Le�Le�LLe�Le�Le�Le�e�LLe�e�Le�Le�Le�Le�Le�Le�L@Le�@e�@M�@e�e�e�e�e�@e�@cW@e�@e�@M�@e�e�e�@e�@e�@e�@e�@M@e�e�e�e�e�e�e�e�e�@e�@`�@e�@e�@c�@e�e�e�@e�@M@e�@e�@e�@e�e�e�e�e�@e�@`�@e�@e�@d{@e�e�e�@e�@��@e�@e�@c�@e�e�e�e�e�e�e�@e�@e�@e�@e�@e�@e�t�e�t�e�t�e�t�e�t�e�t�e�t�e�t�e�t�e�t�e�t�e�t�e�t�t�e�t�e�t���e�@e�@N@e�e�e�@e�@L�@e�@e�@b�@e�fe�fe�@e�@e�@e�@f@d@f@f@c�@fff@f@M@f	@f
@ak@fg�f
f�ffVff1fffffff@f@ak@f@f@L�@fff@f@d{@f@f@��@f f'f!f$f"@f#@d@f%@f&@M@f(f+f)@f*@L�@f,@f-@f.@f/@f0@p�@f2fDf3f:f4f7f5@f6@M@f8@f9@li@f;f>f<@f=@q~@f?@f@@fA@fB@fC@d@fEfLfFfIfG@fH@{
@fJ@fK@j*@fMfPfN@fO@xv@fQ@fR@fS@fT@fU@aN@fWf|fXfjfYfcfZf`f[@f\@f]@f^@f_@M@fa@fb@h@fdfgfe@ff@c�@fh@fi@b�@fkfuflfofm@fn@N@fp@fq@fr@fs@ft@aN@fvfyfw@fx@d{@fz@f{@`�@f}f�f~f�ff�f�@f�@f�@f�c�f�c�f�c�f�c�f�f�f�c�f�f�f�c�f�c�f�c�f�c�f�c�f�c�f�c�f�c�f�c�c�f�f�c��yc�f�c�f�c�f�c�f�c�f�c�f�c�f�c�f�c�f�c�f�c�f�c��yc�c�f�f�c�f�c�f�c�f�c�f�c�f�c�f�c�f�c�f�c�f�c�f�c�f�c��yc�f�@f�@z�@f�f�f�@f�@b�@f�@f�@f�@f�@f�@xv@f�f�f�f�f�@f�@iM@f�@f�@M@f�f�f�@f�@N@f�@f�@c�@f�g7f�f�f�f�f�f�f�f�f�@f�@f�@f�@f�@q~@f�@f�@xv@f�f�f�@f�@f�@f�@f�@d@f�@f�@N@f�f�f�@f�@f�@b�@f�f�f�@f�@`�@f�@f�@f�@f�@f�@M@f�g%f�gf�f�f�@f�@L@f�@f�@f�@f�df�ddf�df�dgdgdggdgddggdgdgddg	dg
gdgdg
dgdgdgdgdgdgdgddggdgddgdgdgdggddgm�dgg"g @g!@L@g#@g$@N@g&g0g'g-g(@g)@g*@g+@g,@d@g.@g/@az@g1g4g2@g3@N@g5@g6@c�@g8gZg9gHg:gAg;g>g<@g=@b�@g?@g@@M@gBgEgC@gD@N@gF@gG@M@gIgSgJgPgK@gL@gM@gN@gO@b�@gQ@gR@c�@gTgWgU@gV@li@gX@gY@h@g[gpg\gfg]gcg^@g_@g`@ga@gb@iM@gd@ge@ak@gggjgh@gi@L�@gk@gl@gm@gn@go@e�@gqgxgrgugs@gt@L�@gv@gw@d@gyggz@g{@g|@g}@g~@L�@g�@g�@g�@g�@g�@b�@g�hg�g�g�g�g�g�g�g�g�g�g�@g�@|�@g�@g�@xv@g�g�g�@g�@az@g�@g�@b�@g�g�g�g�g�@g�@d{@g�@g�@L�@g�g�g�@g�@d@g�@g�@d{@g�g�g�g�g�g�g�@g�@M@g�@g�@c�@g�g�g�@g�@d@g�@g�@b�@g�g�g�g�g�@g�@g�@g�@g�@e�@g�@g�@g�@g�@g�@xv@g�g�g�@g�@g4@g�@g�@N@g�g�g�g�g�g�g�g�g�@g�@g_@g�@g�@c�@g�g�g�@g�@l@g�@g�@c�@g�g�g�g�g�@g�@d@g�@g�@c�@g�g�g�@g�@d@g�@g�@d@g�hg�g�g�g�g�@g�@nW@g�@g�@M@g�g�g�@g�@g�@g�@g�@d@g�@g�@g�@h@h@cW@hh
hh
h@h@h@h@h	@L@h@h@ak@hhh@h@d@h@h@rX@hhThh5hh&hhhhh@h@g4@h@h@xv@h h#h!@h"@b@h$@h%@b�@h'h.h(h+h)@h*@M@h,@h-@d@h/h2h0@h1@lx@h3@h4@`�@h6hEh7h>h8h;h9@h:@L@h<@h=@c�@h?hBh@@hA@c�@hC@hD@d@hFhMhGhJhH@hI@b�@hK@hL@ak@hNhQhO@hP@b�@hR@hS@b�@hUhwhVhehWh^hXh[hY@hZ@b�@h\@h]@M@h_hbh`@ha@d@hc@hd@ak@hfhphghjhh@hi@b�@hk@hl@hm@hn@ho@`�@hqhthr@hs@M@hu@hv@c�@hxh�hyh�hzh}h{@h|@c�@h~@h@��@h�h�h�@h�@N@h�@h�@d@h�h�h�h�h�@h�@c�@h�@h�@d@h�h�h�@h�@az@h�@h�@N@h�rfh�o
h�i�h�i h�h�h�h�h�h�h�h�h�h�h�@h�@`�@h�@h�@aN@h�h�h�@h�@h�@h�@h�@xv@h�@h�@h�@h�@h�@`�@h�h�h�h�h�@h�@`�@h�@h�@e�@h�h�h�@h�@N@h�@h�@az@h�h�h�h�h�h�h�@h�@d@h�@h�@lx@h�h�h�@h�@e�@h�@h�@d@h�h�h�h�h�@h�@M@h�@h�@li@h�h�h�@h�@c�@h�@h�@N@h�ih�h�h�h�h�h�h�@h�@L�@h�@h�@c�@h�h�h�@h�@h�@d@h�@h�@N@h�h�h�h�h�@h�@`�@h�@h�@az@h�h�h�@h�@`�@h�@i@xv@iiii
iii@i@ku@i@i	@`�@iii@i
@N@i@i@d{@iiiii@i@b�@i@i@M@iii@i@l@i@i@N@i!i�i"iHi#i9i$i2i%i(i&@i'@M@i)@i*@i+@i,@i-@i.@i/�i0�i1M��M�i3i6i4@i5@L�@i7@i8@b�@i:iAi;i>i<@i=@d@i?@i@@d@iBiEiC@iD@nW@iF@iG@c�@iIi~iJitiKiNiL@iM@cW@iO@iP@iQ@iRMiSMMiTiUMMiViWMMiXiYMiZMi[MMi\i]Mi^Mi_Mi`MiaMibMicMidMieMifMigMihMiiMijMikMilMimMinMioMipMiqMirMisMtOMiuixiv@iw@`�@iy@iz@i{@i|@i}@q~@ii�i�i�i�@i�@i�@i�@i�@`�@i�@i�@xv@i�i�i�@i�@c�@i�@i�@az@i�i�i�i�i�i�i�i�i�@i�@{
@i�@i�@M@i�i�i�@i�@i�@i�@i�@L�@i�@i�@d@i�i�i�i�i�@i�@m�@i�@i�@L@i�i�i�@i�@aN@i�@i�@c�@i�i�i�i�i�i�i�@i�@L�@i�@i�@L@i�i�i�@i�@L@i�@i�@`�@i�i�i�i�i�@i�@xv@i�@i�@g4@i�i�i�@i�@L@i�@i�@i�@i�di�ddi�i�di�di�di�di�di�di�d�Cdi�jqi�j,i�ji�i�i�i�i�i�i�@i�@L@i�@i�@i�@L�@i�i�i�@i�@d@i�@i�@d@i�i�i�i�i�@i�@t�@i�@i�@M@i�ji�@i�@i�@i�@i�@N@j@j@t�@jjjjjj	j@j@d@j
@j@j@j
jjjlxՙ��dNjje�bejjj@j@`�@j@j@j@j@j@`�@jj%jj"j @j!@b�@j#@j$@`�@j&j)j'@j(@H:@j*@j+@M@j-jOj.j=j/j6j0j3j1@j2@N@j4@j5@N@j7j:j8@j9@b�@j;@j<@d@j>jHj?jBj@@jA@c�@jC@jD@jE@jF@jG@g4@jIjLjJ@jK@`�@jM@jN@p�@jPjbjQjXjRjUjS@jT@p�@jV@jW@q~@jYj_jZ@j[@j\@j]@j^@az@j`@ja@d@jcjjjdjgje@jf@d@jh@ji@d@jkjnjl@jm@L@jo@jp@L@jrm�jsj�jtj�juj|jvjyjw@jx@iM@jz@j{@b�@j}j�j~@j@M@j�@j�@d{@j�j�j�j�j�@j�@j�@j�@j�@b�@j�@j�@N@j�j�j�@j�@N@j�@j�@iM@j�m�j�m�j�j�j�@j�@j�@j�@j�@b�@j�@j�@j�m~j�cWj�cWj�cWj�j�j�cWj�j�j�j�j�cWj�cWj�cWj�cWj�cWj�cWj�cWj�cWj�cWj�cWj�cWcW$$j�cWj�cWj�cWj�cWj�j�j�j�j�j�j�cWj�j�cWj�j�cWcWx�j�cWj�cWcWx�cWj�j�j�j�cWj�cW$$��j�cWj�cW$cWcWj�j��fj�cWj�cWj�cW�ucWj�cWj�cW�WcWj�cWj�j�j�j�j�j�cW$x���j�j�$$cWcW�fj�j�j�j��WcWcW�Wj�cWcWj�j�cWj�cWj�cW�mcWj�muj�cWj�kQj�kj�cWj�kj�j�j�j�cWj�cWj�cW)�j�cWcWj�cWj�j��0�0j��0$$cWj�cWj�cWj�cWj�cWj�j�cWcWj�cW�9kkkcWkcWcWkcWkkcWcW�kkk	kcWk
kcWkcWk
cWkcW��cWkcWkcWkcWkcWkcW$$cWcWkkcWkcWkcWkcWkcW\�cWkk-cWkkcWk cWk!cWk"cWk#cWk$cWk%cWk&cWk'cWk(cWk)k+$$k*\�$$k,cW�fcWk.cWk/kJk0k7k1cWcWk2cWk3k4cWk5cWk6cWghcWk8cWk9kFk:cWk;kBk<k?k=k>�@#s$�|k@kA���@�!cWkCcWkDkE)�}�W�cWcWkGkHcWkIcW�cWkKkN$$kLkM$$$$x�$$kO$$kPcW$$kRmEkSkykTkUcW�kVkakWcWkXcWkYcWykZk[cWk\k_k]k^cW����ghk`cWycW��kb��kc��kd��ke��kf��kg��kh��ki��kjkk��kl����km��kn��ko��kpkq��kr��ks��kt��ku��kv��kw����kxy��kzmAcWk{cWk|k}m#cWk~cWkk�k�k�k�k�k�k�k�k�k�k�k�k�k�\�В\�];k�k��t�8\��Vk�k�k�k����Gv��ek�k�Ѓ�)�]
k�k�k�k�k�k��+]аСk�k�9����i��k�k�k�k���:9��k�k����Y�I�7k�k�k�k�k�k�k�k����
�Oпk�k�����]+k�k�k�k��m�:ї^�k�k����#�x��k�k�k�k�k�k�]�ѧчѷk�k������|�k�k�k�k���&�rCk�k��2�B�Q�`k�k�k�k�k�k�k�k�k�k�_�8�H]Kk�k����G][ҏk�k�k�k�ҮҀW��k�k��G�3�fҽk�k�k�k�k�k����$$��k�k���^�
��k�k�k�k��9�w�h��k�k��):ӆӥk�k�k�k�k�k�k�k�%(�Ӗyk�k��0\�9�Ӵk�k�k�k��B]k�@��k�k��9���ghk�k�k�k�k�k���]z]�]�k�k��
v�]���k�k�k�k��I���Xԕk�k�ԅ]���gvll?ll llll
llll#s�/��Չll	9��z��kllll
���M]�^ll�t9�ҟ}�llllllԵ� ]��\llԥ^$�ՙllll���fթll����ո��l!l0l"l)l#l&l$l%������>l'l($^9�֜l*l-l+l,֍m��B֫l.l/�#�Q�o�l1l8l2l5l3l4�(�~]�ֻl6l7�4P^C��l9l<l:l;����g��l=l>�`��e�	l@l_lAlPlBlIlClFlDlE�(^4^S�?lGlH�����u9�lJlMlKlL�!����^�lNlOv��X^��WlQlXlRlUlSlT�v^c��lVlW|�cW^s��lYl\lZl[:*^��vדl]l^^�ׄעױl`lolalhlblelcld^�\�^��Wlflg�^�|y�lillljlk��x�����lmln_�G:
�8lpl�lql�lrl{ls�)�ltlu��lvlw�lx�ly�lz��v�l|�p�Vl}l~�Vl�Vl��Vl��Vl��Vl��V�V�ml�l�l�؄_l�l�__l�l�_l�_l�_l�__W�l�l�l�ؔؔl�ؔl�l�ؔl�ؔl�ؔl�ؔؔ9�l�l�m�l�l�m�m�l�l�m�l�m�l�m�m�v�l�m�m�l�m�l�l�m�m�l�m�l�m���l�l�l�l�l�cWl�l�l�cWl�cWl�cWcWl�cWl�l�cWcW�l�cWcWl�cWl�l�cWcWl�l�cWcW4PcWl�l�cWl�l�l�cWcWl�cWl�cWl�cWl�cW�7l�l�l�cWl�l�l�cWl�cWcW�l�cWcWl�cW�l�l�cWl�cWl�cWl�cWghl�cWl�cWcWl�]�cWl�l�cWl�cWl�l�cWcWl�l�cWl�cWl�cWl�cWcW�vcWl�$$l�$$l�$$l�$$l�l�ml�l�l�l�$$l�l�l�l�9�l�9�$$9�l�$$l�$$9�$$l�l�l�$$l�$$l��$$�l�l�l��Wl��W$$�Wl�$$l�$$�W$$l�ml�l�l�$$l�$l�$$$$mmm|�m|�$$|�m$$m$$|�$$mmm$$m	$$m
rC$$rCm$$m
$$mW�$$W�m$$mmmmm$$m$$m�f$$�fm$$m$$m��$$��mmm$$m$$m)�$$)�m $$m!$$m"\�$$\�m$m,m%cWm&cWm'm*m(m)cWx�x�4Pm+cWycWm-m7m.m4m/m1cWm0$$�fm2m3gh�x�$$m5cWm6cW��cWm8m>m9m;m:ycWym<m=����ym?cWm@cWv�cWmBcWmCmDx�gh���umFmfmGmYcWmHmIcWmJcWmKcWmLmUmMmRmNmP��mO�@�fmQx�#sx�mScWmTcWy��mVcWcWmWcWmX�mcWӴmZm[cWm\cWm]cWm^mb�um_m`may��ghx�ymcmdme�u��ghx�mgmjcWmhmiycWx�cWmkmlmommmnx�y���umpmrghmq���mmsmt9�$$��/mvcWcWmwmxcWmycWmzcWm{cWm|m}y�ughcWm@m�@@m�@m�m�@m�@m�@@m�@m�m�@m�@@m�m�@@m�@m�m�m�m�@
n@@m�@m��@m�m�m�@m�@`�@m�@m�@c�@m�m�m�m�m�@m�@d@m�@m�@d@m�m�m�@m�@L�@m�@m�@d@m�m�m�m�m�m�m�m�m�@m�@d]@m�@m�@m�@m�@m�@g_@m�m�m�@m�@`�@m�@m�@d@m�m�m�m�m�@m�@`�@m�@m�@l�@m�m�m�@m�@az@m�@m�@c�@m�n�m�n�m�n�m�@m�@m�@m�m�Q�m�m�Q�m�Nm�Nm�Nm�m�m�m�m�N;m�N;NN;m�NN;Nm�Nm�Nm�NN;NQ�m�m�Q�m�Nm�Nm�Nm�Nm�Nm�Nm�n�m�nJm�n2m�nm�m�m�m�m�m�m�m�m�Q�NQ�Q�Q�m�NQ�Nm�m�m�m�m�N+Q�N+N+Ocm�NOcNnn	nnnnnN;OcN;N;nN[�nNnN_�[�n
nnn
nOE[�OEnOTOEOTnNnNOT]Rnn!nnnnW�nnQ�W�Q�nNQ�Nnn^�nn�^��nNn NN�n"n+n#n)n$n'n%n&U\@�=^Ln(�N�n*N�Nn,n/_�n-n.=^_�=^n0Nn1NW�=^n3Nn4Nn5n@n6n=n7n:n8n9\�Qq]�W�n;n<���_FNn>Nn?N*VNnAnGnBnEnCnD��TF�:TFnF}ETF}EnHNnIN}ENnKn�nLnvnMnanNnYnOnVnPnSnQnR��N+'^�nTnUN�AN]�nWNnXNN]�nZn^[n[n\n][Q��`+n_Nn`N�tW�nbnkncnindnfneQ�N;�8ngnhQ�U\^C��njNOcNnlnsnmnpnnnoNX�L=^nqnrN�a=~'ntNnuNN@�nwn�nxn�nyn�nzn}n{n|S�*VpNn~nNU\�Mn�n�Nn�Nn�Nn�Nn�Nn�Nn�Nn�Nn�Nn�Nn�Nn�Nn�Nn�Nn�N��Nn�Nn�NP��zn�n�n�n�n�n�^C��]R=^n�n���Q��W�n�Nn�N��	n�n�n�n�n�n�n�n���#�?sn�n�N]Z�n�Nn�N��n�n�n�n�n�n�����~�n�n�w��X��An�Nn�NwyOn�Nn�Nn�n�n�n�n�n�n�n����0�Q�n�n��)[�!�?sn�Nn�NP���n�n�n�n�n�n�NS���n�n�NQb?��vn�Nn�N�Nn�Nn�Nn�Nn�Nn�Nn�n�n�P�n���N��n�Nn�NP�Nn�@n�@N@n�n�n�@n�@n�@n�@M�@n�@n�@M@n�on�n�n�@n�@n�@n�ln�ln�lln�n�lln�n�ln�ln�ln�ln�ln�ln�ln�ln�ln�ln�lg&ln�@n�@p�@ooo@o@N@o@o@o@o@o	@l@opoo�o
oSoo4oo!ooooo@o@L�@o@o@o@o@o@d@ooo@o@L�@o@o @b�@o"o)o#o&o$@o%@d@o'@o(@M@o*o1o+@o,@o-@No.o/o0Q�NQ�No2@o3@ak@o5oDo6o=o7o:o8@o9@M�@o;@o<@cW@o>oAo?@o@@`�@oB@oC@c�@oEoLoFoIoG@oH@g4@oJ@oK@N@oMoPoN@oO@`�@oQ@oR@j*@oTovoUodoVo]oWoZoX@oY@c�@o[@o\@p�@o^oao_@o`@d@ob@oc@cW@oeooofolog@oh@oi@oj@ok@L�@om@on@az@oposoq@or@d{@ot@ou@iM@owo�oxooyo|oz@o{@`�@o}@o~@��@o�o�o�@o�@nW@o�@o�@d@o�o�o�o�o�@o�@iM@o�@o�@M@o�o�o�@o�@o�@o�@L�@o�@o�@iM@o�o�o�o�o�o�o�o�o�o�o�@o�@ak@o�@o�@b�@o�o�o�@o�@N@o�@o�@b�@o�o�o�o�o�@o�@o�@o�@o�@L�@o�@o�@M@o�o�o�@o�@d@o�@o�@b�@o�o�o�o�o�o�o�@o�@iM@o�@o�@lx@o�o�o�@o�@c�@o�@o�@xv@o�o�o�o�o�@o�@M@o�@o�@L@o�o�o�@o�@o�@o�@o�@d@o�@o�@d@o�o�o�o�o�o�o�o�o�@o�@�@o�@o�@L@o�o�o�@o�@c�@o�@o�@c�@o�o�o�o�o�@o�@aN@o�@o�@g4@o�o�o�@o�@e�@o�@o�@iM@o�p
o�pppp@p@`�@p@p@`�@pp
p@p	@c�@p@p@az@ppppp@p@d@p@p@M@ppp@p@M@p@p@cW@pq�pp`pp>p p/p!p(p"p%p#@p$@g4@p&@p'@g4@p)p,p*@p+@N@p-@p.@l@p0p7p1p4p2@p3@iM@p5@p6@N@p8p;p9@p:@xv@p<@p=@Л@p?pQp@pJpApDpB@pC@d{@pE@pF@pG@pH@pI@{
@pKpNpL@pM@`�@pO@pP@L@pRpYpSpVpT@pU@ak@pW@pX@�m@pZp]p[@p\@M@p^@p_@j�@pap�pbpqpcpjpdpgpe@pf@q~@ph@pi@d{@pkpnpl@pm@ak@po@pp@N@prp|pspvpt@pu@N@pw@px@py@pz@p{@N@p}p�p~@p@L@p�@p�@g4@p�q�p�q�p�p�p�@p�@�b@p�@p�@p�@p�g_p�qfg_p�p�g_p�g_p�g_p�g_p�q'p�p�p�p�p�p�p�p���p�p������p�p�p����8����p����p�p���p���p�p�p��p�p���p�p��p��p��p��p��p��p��p��p��p��p��p��p��p��p��p�p���(�Mcp���p���p��������p�p���p�3�p���p�����p����p�p�p���p�p�p���p���p�����p�p���M�����p�p�M6��p�p���p�������p���p�p�p���p���p�����p���p���ME��p�p�3�p�p�p�p�p��������p�����p���p������p�p�p�p�p�p�g_p�g_p�g_p�p�g_p�g_p�g_g_��g_p�p�g_g_��p�p�g_p�p�p�M�g_��g_p�p�p�g_g_��g_��p�qp�q
p�qqq
g_qqqqg_qg_�p�qqg_qg_�q	g_Xg_M6g_qg_g_3�qqqg_��g_qqg_qqg_qg_�g_qqqg_qg_qg_g_��qg_qg_qg_��qq$q q"g_q!��g_q#g_g_�q%g_q&g_�g_q(q\q)q?q*q/g_q+q,g_q-q.M�g_��g_q0g_q1q7g_q2g_q3q4g_q5g_g_q6�g_q8q>g_q9q:g_q;g_q<q=g_��g_g_�q@g_qAg_g_qBqCqD�g_g_qEqFqYqG3�3�qHM�qIqJ��qK��qL��qM��qN��qO��qP��qQ��qR��qS��qT��qU��qV��qW��qX��3���3�qZ3�q[3��q]g_q^g_q_g_q`g_qag_qbg_qcg_qdg_qeg_M�g_qgg_qhg_qiq�qjg_qkq|g_qlqmqwg_qnqog_g_qpg_qqqrg_qsg_g_qtg_qug_qvMcg_g_qxg_qyg_qzg_q{�g_q}g_q~g_qg_q�g_q�g_q�g_g_q��g_q�g_g_q�q�g_q�g_q�g_q�g_q�g_q�g_�g_q�q�q�@q�@nW@q�@q�@q�@q�K�ӹq���K�q�q�q�q�q�@q�@c�@q�@q�@q�@q�q�q�q�v�b�gCgQq�q�azw*v�kXq�q�q�@q�@q�@q�@q�@M�@q�@q�@L�@q�rq�q�q�q�q�q�q�q�q�@q�@ty@q�@q�@q�@q�H�q�H�q�H�q�H�q�H�q�H�q�H�q�H�q�H�q�H�q�H�q�H�q�H�q�H�q�H�q�H�q�H�q�q�H����H�q�q�q�@q�@c�@q�@q�@d{@q�q�q�q�q�@q�@iM@q�@q�@M@q�q�q�@q�@b�@q�@q�@e�@q�q�q�q�q�q�q�@q�@M@q�@q�@`�@q�q�q�@q�@L@q�@q�@M@q�q�q�q�q�@q�@N@q�@q�@d@q�rq�@r@`�@r@r@L@rr$rrrrrrr	@r
@L�@r@r
@`�@rrr@r@M@r@r@`�@rrrrr@r@N@r@r@cW@rr!r@r @N@r"@r#@`�@r%r4r&r-r'r*r(@r)@d@r+@r,@L�@r.r1r/@r0@L�@r2@r3@c�@r5r<r6r9r7@r8@b�@r:@r;@L�@r=rcr>@r?@r@@rANrBNrCrSrDNrENrFNrGNrHNrINrJNrKNrLNNrMrNNNrONrPrQNNrR��NrTNrUNrVNrWNrXNrYNrZNr[Nr\Nr]Nr^Nr_Nr`NraNrbNOqNrd@re@q~@rgt�rhs�rir�rjr�rkr�rlr{rmrtrnrqro@rp@b�@rr@rs@`�@rurxrv@rw@N@ry@rz@d]@r|r�r}r�r~@r@N@r�@r�@b�@r�r�r�@r�@r�@r�r�r�b�b�x�r�r�x�b�b�x�r�@r�@b�@r�r�r�r�r�r�r�@r�@r�@r�@r�@j�@r�@r�@b�@r�r�r�@r�@�X@r�@r�@ty@r�r�r�r�r�@r�@d@r�@r�@L@r�r�r�@r�@r�@r�@r�@xv@r�@r�@c�@r�r�r�r�r�r�r�r�r�@r�@r�@r�@r�@M�@r�@r�@xv@r�r�r�@r�@M�@r�@r�@N@r�r�r�r�r�@r�@r�@r�@r�@j�@r�@r�@aN@r�r�r�@r�@b�@r�@r�@|�@r�r�r�r�r�r�r�@r�@cW@r�@r�@M@r�r�r�@r�@ak@r�@r�@p�@r�r�r�r�r�@r�@b�@r�@r�@r�@r�@r�@M@r�r�r�@r�@L@r�@r�@cW@r�s=r�ssssssss@s@`�@s@s@L@s	ss
@s@az@s
@s@N@sssss@s@M@s@s@{
@sss@s@c�@s@s@�H@ss.s s's!s$s"@s#@�H@s%@s&@c�@s(s+s)@s*@l@s,@s-@d@s/s6s0s3s1@s2@L�@s4@s5@l@s7s:s8@s9@L�@s;@s<@d@s>scs?sQs@sJsAsGsB@sC@sD@sE@sF@aN@sH@sI@e�@sKsNsL@sM@c�@sO@sP@M�@sRs\sSsYsT@sU@sV@sW@sX@cW@sZ@s[@`�@s]s`s^@s_@L�@sa@sb@M@sdsvsesosfsisg@sh@i�@sj@sk@sl@sm@sn@N@spsssq@sr@c�@st@su@b�@sws~sxs{sy@sz@xv@s|@s}@M@ss�s�@s�@xv@s�@s�@t�@s�ts�s�s�s�s�s�s�s�s�s�s�@s�@cW@s�@s�@L�@s�s�s�@s�@s�@s�@s�@iM@s�@s�@cW@s�s�s�s�s�@s�@d@s�@s�@L@s�s�s�@s�@c�@s�@s�@L@s�s�s�s�s�s�s�@s�@c�@s�@s�@d@s�s�s�@s�@s�@d@s�@s�@az@s�s�s�s�s�@s�@c�@s�@s�@L�@s�s�s�@s�@lx@s�@s�@az@s�s�s�s�s�s�s�s�s�@s�@d@s�@s�@d{@s�s�s�@s�@d@s�@s�@d@s�s�s�s�s�@s�@L�@s�@s�@s�@s�@s�@d{@s�s�s�@s�@M@s�@s�@�F@s�ts�s�s�s�s�@s�@b�@s�@s�@s�@s�@s�@j�@s�s�s�@s�@cW@s�@s�@M@ttttt@t@c�@t@t@t@t	@t
@b�@ttt
@t@L�@t@t@c�@ttktt9tt'ttttt@t@b�@t@t@w@tt$t@t @t!@t"@t#@d@t%@t&@��@t(t2t)t/t*@t+@t,@t-@t.@N@t0@t1@d@t3t6t4@t5@d@t7@t8@az@t:t\t;tUt<tRt=@t>@t?@g4t@tAg4tBg4tCg4tDg4tEg4tFg4tGg4tHg4tI�[tJ�[tK�[tL�[tM�[�[tNtO�[tP�[tQ�[��[tS@tT@c�@tVtYtW@tX@lx@tZ@t[@`�@t]tdt^tat_@t`@c�@tb@tc@`�@tethtf@tg@L�@ti@tj@`�@tlt�tmt�tntxtotutp@tq@tr@ts@tt@i�@tv@tw@b�@tyttz@t{@t|@t}@t~@N@t�@t�@b�@t�t�t�t�t�@t�@aN@t�@t�@t�@t�t�M�t�M�{�t�M���0t�t�t�@t�@b�@t�@t�@d@t�t�t�t�t�t�t�@t�@d@t�@t�@t�@t�@t�@w�@t�t�t�@t�@߫@t�@t�@az@t�t�t�t�t�@t�@b�@t�@t�@az@t�t�t�@t�@|�@t�@t�@E@t�vbt�u�t�uYt�ut�t�t�t�t�t�t�@t�@d@t�@t�@aN@t�t�t�@t�@t�@t�azt�t�t�azt�azt�azt�azt�azt�azt�azt�azt�azt�azt�azt�azt�azt�azt�azt�azt�azt�azt�azt�azt�azt�azt�azt�azt�azt�azt�azt�azt�azt�azt�azazt�azwt�azt�azt�azt�azt�azt�azt�azt�azt�azt�azt�azt�az��wFt�@t�@b�@t�ut�ut�@u@b�@u@u@b�@uuu@u@j�@u	@u
@b�@uu!u
uuuu@u@L@u@u@u@u@u@l�@uuu@u@u@u@u@q~@u@u @`�@u"uOu#uIu$@u%@u&@u'L�u(L�u)L�u*L�u+L�u,L�u-L�u.L�u/L�u0L�u1L�u2L�u3L�u4L�u5L�u6L�u7L�u8L�u9L�u:L�u;L�u<L�u=L�u>L�u?L�u@L�uAL�uBL�uCL�uDL�uEL�uFL�uGL�uHL��:L�uJ@uK@uL@uM@uN@M@uPuVuQ@uR@uS@uT@uU@d@uW@uX@b�@uZu|u[umu\ucu]u`u^@u_@N@ua@ub@`�@udugue@uf@cW@uh@ui@uj@uk@ul@iM@unuuuourup@uq@N@us@ut@�,@uvuyuw@ux@M�@uz@u{@g4@u}u�u~u�uu�u�@u�@L�@u�@u�@u�@u�Q�u�u�u�Nu�Q�u�Q�u�Q�Q�u�u�Q�u�Q�u�Q�u�Q�u�Q�u�Q�u�Q�Q�u�u�u�u�Q�u�Q�Q�Oqu�u�Q�u�u�Q�u�Q�u�Q�u�Q�u�Q�u�Q�u�Q�u�Q�u�Q�u�Q�u�Q�u�Q�u�Q�u�Q�u�Q�u�Q�OqQ�OqQ�u�Nu�Nu�Nu�Nu�Nu�Nu�Nu�Nu�Nu�Nu�u�u�u�N_FQ�N;u�u�Oc*VN;Q�u�u�u�@u�@�,@u�@u�@l�@u�u�u�u�u�@u�@q~@u�@u�@u�@u�@u�@cW@u�u�u�@u�@N@u�@u�@c�@u�vu�u�u�u�u�u�u�u�u�@u�@d@u�@u�@d@u�u�u�@u�@b�@u�@u�@b�@u�u�u�u�u�@u�@d{@u�@u�@c�@u�u�u�@u�@ak@u�@u�@L�@u�vu�vu�u�u�@u�@ak@u�@u�@`�@vvv@v@c�@v@v@`�@vvv	vv
@v@v@v
@v@N@v@v@cW@vvv@v@b�@v@v@E@vv<vv-vv#vv v@v@d{@v!@v"@�@v$v*v%@v&@v'@v(@v)@g4@v+@v,@az@v.v5v/v2v0@v1@��@v3@v4@d@v6v9v7@v8@d@v:@v;@L@v=vLv>vEv?vBv@@vA@b�@vC@vD@��@vFvIvG@vH@L@vJ@vK@l@vMvXvNvUvO@vP@vQ@vR@vSvTp����dz�vV@vW@d{@vYv_vZ@v[@v\@v]@v^@L@v`@va@d@vcv�vdv�vev�vfvyvgvqvhvnvi@vj@vk@vl@vm@M@vo@vp@p�@vrvvvs@vt@vu@ku@vw@vx@N@vzv�v{v~v|@v}@M@v@v�@N@v�v�v�@v�@N@v�@v�@q~@v�v�v�v�v�v�v�@v�@i�@v�@v�@b�@v�v�v�@v�@b�@v�@v�@ak@v�v�v�v�v�@v�@d@v�@v�@v�@v�@v�@c�@v�v�v�@v�@d@v�@v�@c�@v�v�v�v�v�v�v�v�v�@v�@p�@v�@v�@d@v�v�v�@v�@H:@v�@v�@cW@v�v�v�v�v�@v�@c�@v�@v�@b�@v�v�v�@v�@c�@v�@v�@v�@v�@v�@L@v�v�v�v�v�v�v�@v�@j�@v�@v�@v�@v�`�e�`�v�v�v�@v�@v�@v�cWv�cW$$cWv�@v�@N@v�v�v�v�v�@v�@c�@v�@v�@M�@v�v�v�@v�@L@v�@v�@d@v�w5v�wv�wv�v�v�v�v�@v�@N@v�@v�@`�@v�wv�@v�@xv@w@w@w@d@wwww	w@w@aN@w
@w@l�@w
ww@w@M@w@w@c�@ww&wwwww@w@w@w@w@`�@w@w@`�@w w#w!@w"@e�@w$@w%@q~@w'w.w(w+w)@w*@g4@w,@w-@ak@w/w2w0@w1@c�@w3@w4@N@w6wXw7wIw8w?w9w<w:@w;@p�@w=@w>@e�@w@wCwA@wB@d@wD@wE@wF@wG@wH@`�@wJwQwKwNwL@wM@xv@wO@wP@��@wRwUwS@wT@L@wV@wW@M@wYwjwZwcw[w`w\@w]@w^@w_Q�NQ�wa@wb@az@wdwgwe@wf@d@wh@wi@aN@wkwrwlwowm@wn@L�@wp@wq@xv@wswvwt@wu@L@ww@wx@d@wz��w{�w|{(w}x�w~x;ww�w�w�w�w�w�w�w�w�w�@w�@L@w�@w�@M�@w�w�w�@w�@N@w�@w�@l�@w�w�w�w�w�@w�@b�@w�@w�@d@w�w�w�@w�@xv@w�@w�@xv@w�w�w�w�w�w�w�@w�@L�@w�@w�@d@w�w�w�@w�@M@w�@w�@d{@w�w�w�w�w�@w�@b�@w�@w�@d{@w�w�w�@w�@b�@w�@w�@b�@w�w�w�w�w�w�w�w�w�@w�@d@w�@w�@E@w�w�w�@w�@d@w�@w�@c�@w�w�w�w�w�@w�@L�@w�@w�@`�@w�w�w�@w�@w�@w�@w�@b�@w�@w�@`�@w�x,w�w�w�w�w�@w�@`�@w�@w�@M@w�w�w�@w�@c�@w�@w�@w�@w�b�b�w�w�b�w�b�w�b�w�xw�x
w�xw�w�w�w�b�w�b�w�b�xb�xb�b�xd2x�xxxxx���p���xx	*�,����xxxxx
x��p���*xx�,����9xxxxڥp�����xx��9�x�xx(xx!xxx�xB=%xx P
�p�Px"x%x#x$3S��3F�x&x'^kB=%x)b�x*b�x+b�y�x-x4x.x1x/@x0@L�@x2@x3@g4@x5x8x6@x7@cW@x9@x:@c�@x<x�x=xbx>xMx?xFx@xCxA@xB@N@xD@xE@`�@xGxJxH@xI@d@xK@xL@az@xNx[xOxUxP@xQ@xR@xS@xT@M�@xV@xW@xX@xY@xZ@b�@x\x_x]@x^@`�@x`@xa@L�@xcxrxdxkxexhxf@xg@c�@xi@xj@K�@xlxoxm@xn@`�@xp@xq@M@xsxzxtxwxu@xv@L�@xx@xy@b�@x{x�x|@x}@x~@x@x�@n�@x�@x�@��@x�x�x�x�x�x�x�x�x�@x�@xv@x�@x�@N@x�x�x�@x�@d@x�@x�@`�@x�x�x�x�x�@x�@cW@x�@x�@x�@x�@x�@N@x�x�x�@x�@x�@b�@x�@x�@d]@x�x�x�x�x�x�x�@x�@b�@x�@x�@y7@x�x�x�@x�@L@x�@x�@b�@x�x�x�x�x�@x�@nW@x�@x�@�;@x�x�x�@x�@M@x�@x�@L@x�ycx�yx�x�x�x�x�x�x�x�x�@x�@lx@x�@x�@b�@x�x�x�@x�@d@x�@x�@b�@x�x�x�x�x�@x�@d{@x�@x�@b@x�x�x�@x�@d@x�@x�@x�@x�@x�@e�@x�x�x�x�x�x�x�@x�@M@x�@x�@`�@x�x�x�@x�@g4@x�@x�@x�@x�@x�@M@yyyyy@y@L�@y@y@N@yyy	@y
@xv@y@y
@c�@yy8yy yyyyy@y@y@N@y@y@d@yyy@y@d@y@y@`�@y!y+y"y(y#@y$@y%@y&@y'@b�@y)@y*@iM@y,y2y-@y.@y/@y0@y1@li@y3@y4@y5@y6@y7@g4@y9yQy:yGy;yAy<@y=@y>@y?@y@@b�@yB@yC@yD@yEfyFfZfyHyKyI@yJ@M�@yL@yM@yN@yO@yP@M@yRy\ySyVyT@yU@d@yW@yX@yY@yZ@y[@m�@y]y`y^@y_@xv@ya@yb@aN@ydz�yey�yfyuygynyhykyi@yj@`�@yl@ym@lx@yoyryp@yq@xv@ys@yt@`�@yvy}ywyzyx@yy@c�@y{@y|@lx@y~y�y@y�@L�@y�@y�@M@y�z�y�z�y�y�y�@y�@`�@y�@y�@y�@y�zLy�zKy�M�y�z:y�y�y�M�y�y�M�y�y�y�M�y�y�M��y�y�y��y�L�y��L�M�y�M�y�M�y�y�M�M�y�y�M�y�M�y�M�y�M�M�hy�M�y�M�M�y�M�y�y�M�y�M�M�y�M�y�y�M�M�y�M�y�M�hM�y�y�y�y�y�M�y�y�M�M�y�y�M�M�y�y�M�y�M�y�M�y�M�M�y�P�M�y�M�y�M�M�y�y�M�M�y�M�y�y�M�M�y�y�M�y�M�M�P�y�y�M�y�y�y�M�y�y�M�M�y�y�M�M�y�y�M�y�M�M�y�P���M���y�M�y�z+y�zy�y�y�ry�ry�y�y�ry�ry�ry�ry�ry�ry�ry�ry�ry�ry�ry�ry�ry�ry�ry�ry�ry�ry�r[ry�ry�rry�hry�ry�ry�rry�y�ry�rhrzz$zM�zM�zM�zM�zM�zM�z�z	zz
M�zM�zM�z
M�zM�zM�zM�zM�zM�zM�zM�zzzzz����M���zM���zM�zz[M�[M�M�zM�z M�z!M�z"M�z#��M�M�z%M�z&M�z'M�z(M�z)M�z*M���z,M�z-M�z.M�z/M�z0M�z1z7z2z5z3z4r��[rz6r[rrz8rz9r[z;M�z<M�M�z=z>M�z?zEM�z@M�zAzBM�zCM�zDM�P�M�zFM�zGM�zHM�zIM�zJM�M���M�hzMz�zNz]zO�zP�zQ�zR��zSzT��zUzV��zWzXzZ�zY�P�z[z\�v[��M�z^z_M�M�z`zazM�zbzcM�M�zdM�zeM�zfM�zgzhM�ziM�zjM�zkM�M�zlzm\uznM�zoM�zpM�M�zqzrM�zsM�ztM�zuM�zvM�zwM�zxM�zyM�zzM�z{z}M�z|M�rz~M�\u�M�z�z�M�M�z�z�M�M�z�z�M�M�z�M�z�M�z�M�z�M�z�z�M�z�M�M�z�z�M�z�M�z�M�z�M�z�M�z�M�z�M�z�M�z�M�z�M�z�M�z�M�z�M�M�[M�z�z�[z�[z�[z�[z�[z�z�z�z�z�[z�[[z�z�[z�[z�[[z�z�[=[z�z�z�[[z�z�[z�[[z�z�[z�[�[z�[[z�z�[[z�[z�z�[z�[[b[z�z�[z�[[z�[z�[z�z�[z�[[z�\u[z�z�z�@z�@g4@z�@z�@z�@z�`�`�z�`�e�z�z�z�z�z�@z�@L@z�@z�@z�@z�@z�@M@z�z�z�@z�@z�@z�@z�@`�@z�@z�@M@z�{z�z�z�z�z�z�z�@z�@xv@z�@z�@�X@z�z�z�@z�@d@z�@z�@d@z�z�z�z�z�@z�@j�@z�@z�@c�@{{{@{@�I@{@{@�b@{{{{{	{{
@{@i�@{
@{@cW@{{{@{@M@{@{@d@{{{{{@{@i�@{@{@E@{{%{ @{!@{"@{#@{$@d@{&@{'@d@{)}|{*|�{+{�{,{�{-{<{.{5{/{2{0@{1@L�@{3@{4@nW@{6{9{7@{8@d@{:@{;@`�@{={~{>{A{?@{@@`�@{B@{C@{D@d{E{Fd{Gd{Hd{Id{Jd{Kd{Ld{Md{Nd{Odd{P{Qdd{R{Sd{Td{U{s{V{`d{Wd{X{Yd{Zd{[d{\dd{]{^{_d�Zo�b�{a{jd{b{cd{dd{ed{fdd{g{h{id�Zo�b�d{k{ld{md{nd{odd{p{q{rd�Zo�b�{td{udd{v{wd{xd{yd{zdd{{{|{}d�Zo�b�{{�{�@{�@{�@{�@{�@d{@{�@{�@az@{�{�{�{�{�{�{�@{�@li@{�@{�@E@{�{�{�@{�@M�@{�@{�@d@{�{�{�{�{�@{�@q~@{�@{�@ty@{�{�{�@{�@iM@{�@{�@c�@{�|�{�|{�|{�|{�@{�@{�@N{�N{�{�N{�N{�N{�N{�{�{�{�N{�{�NN{�{�N{�N{�NN{�{�N{�N{�{�N;NOTQ�N{�N{�{�Q�{�{�{�N;{�N;{�{�{�N;{�N;{�N;NN;N;{�{�{�N;{�N;`�{�{�N;��N;{�N;N;{�{�N;N;{�{�N;N;{�N;O�N{�N{�{�|{�N{�|{�{�{�{�{�{�{�{�N{�{�{�N_FN{�{�{�NU�N{�NN[�N{�{�{�N{�\;N{�NOq\;{�N{�{�{�N{�N_�NN{�N{�=^N{�NN{�N{�N{�|NQ�N|||N|N|N|N|N[�N|	N|
NN|N||
NQ�NQ�N|@|@L@|||@|@H:@|@|@`�@||!|||@|@L@|@| @cW@|"|�|#@|$@|%@|&|I|'|H|(NN|)N|*N|+N|,N|-N|.N|/N|0|1N|2N|3N|4NN|5N|6|7N|8N|9N|:N|;N|<N|=N|>N|?N|@N|AN|BN|CN|DN|EN|FN|GNN[�Q�N|J|KNN;N|L|M|�|N|||O|i|PW�|QW�|RW�|SW�|T|[|UW�W�|V|WW�|XW�|YW�|ZW�N;W�|\W�W�|]W�|^W�|_|`W�|aW�|bW�|cW�|d|g|e|fW�Q�NW�|hW�OTQ�Q�|j|kQ�|l|nQ�|mQ�*V|oW�Q�|p|qW�|rW�|sW�|tW�|uW�|v|y|w|xQ�=^=^N;|z|{W�N;*VW�|}Q�N;|~|N;|�N;|�N;|�N;|�N;|�N;|�N;|�N;|�N;|�N;|�N;|�N;|�N;|�N;|�N;|�N;|�N;|�N;|�N;|�N;|�N;|�N;|�N;|�N;|�N;|�N;|�|�N;W�W�N;|�|�|�W�|�W�W�|�|�W�|�W�|�W�|�|�|�W�|�W�|�W�|�W�|�|�|�|�W�N;OcW�|�W�W�TF|�|�W�|�W�|�|�W�|�W�W�|��W�W�|�|�W�|�W�|�W�W�|�*VW�|�W�|�W�|�W�|�W�W�|�|�W�|�W�W�|�|�W�W�|�|�W�|�W�|�W�Q�W�|�@|�@L�@|�|�|�|�|�|�|�@|�@xv@|�@|�@`�@|�|�|�@|�@|�@|�N|�|�N_�N;|�|�|�|�|�|�Q�U�Q�|�|�NN;Q�[�|�[�W�*V|�@|�@|�@|�@|�@M�@|�|�|�|�|�@|�@��@|�@|�@`�@|�|�|�@|�@N@|�@|�@�b@|�}:|�}|�}|�}|�}}@}@`�@}@}@L@}}	}@}@iM@}
@}@`�@}
}}}}@}@az@}@}@d@}}}@}@�H@}@}@`�@}}+}}$}}!}@} @az@}"@}#@`�@}%}(}&@}'@b�@})@}*@lx@},}3}-}0}.@}/@M�@}1@}2@d@}4}7}5@}6@l@}8@}9@�O@};}]}<}K}=}D}>}A}?@}@@N@}B@}C@`�@}E}H}F@}G@c�@}I@}J@c�@}L}V}M}S}N@}O@}P@}Q@}R@Л@}T@}U@d@}W}Z}X@}Y@d@}[@}\@rX@}^}m}_}f}`}c}a@}b@L@}d@}e@b�@}g}j}h@}i@L�@}k@}l@`�@}n}u}o}r}p@}q@L@}s@}t@L@}v}y}w@}x@l@}z@}{@`�@}}~n}~~,}}�}�}�}�}�}�}�}�@}�@M@}�@}�@p�@}�}�}�@}�@L�@}�@}�@L�@}�}�}�}�}�@}�@c�@}�@}�@xv@}�}�}�@}�@j�@}�@}�@M@}�}�}�}�}�}�}�@}�@N@}�@}�@N@}�}�}�@}�@c�@}�@}�@L@}�~%}�}�}�@}�@d@}�@}�@}�@}�}�}�azaz}�az}�}�azaz}�az}�}�az}�az}�az}�b�}�}���S�v���}�az}�az}�az}�az}�~}�}�}�}�}�}�}�gCkXgC}�}�azb�}�az}�azaz}�}�}�v�}�v�v�}�v�w*}�}�}�azaz}�gQaz}�}�az}�az�az}�az�}�}�}�}�}�}�kXgC}��^}�}�up�S�w8}�}�wUb�}�}�}�}������wc}�}�v��"��v�}�~}�}�}�}�}�}�v��w�w*}�}��iw�M�"}�}�}�}�wFw��a�~~�v��[�~~
~~~~�RTgQ�~~	�?����-~~~~
�^az��^~~w�ub��~az~az~~~~w��^kX~~~~~~b�v�w��M~~v�wFw��~ ~#~!~"w*�"gQS�~$v�v�S4~&~)~'@~(@ak@~*@~+@L@~-~O~.~@~/~9~0~6~1@~2@~3@~4@~5@d@~7@~8@d{@~:~=~;@~<@N@~>@~?@`�@~A~H~B~E~C@~D@c�@~F@~G@L�@~I~L~J@~K@d@~M@~N@M@~P~_~Q~X~R~U~S@~T@N@~V@~W@d@~Y~\~Z@~[@y7@~]@~^@L@~`~g~a~d~b@~c@j�@~e@~f@b�@~h~k~i@~j@d@~l@~m@d@~o~�~p~�~q~}~r~y~s~v~t@~u@d@~w@~x@b�@~z@~{@~|@lx@~~~�~~�~�@~�@gn@~�@~�@az@~�~�~�@~�@q~@~�@~�@d@~�~�~�~�~�~�~�@~�@N@~�@~�@~�@~�@~�@cW@~�~�~�@~�@c�@~�@~�@L@~�~�~�~�~�@~�@M@~�@~�@ak@~�~�~�@~�@ty@~�@~�@N@~�<~�~�~�~�~�~�~�@~�@g4@~�@~�@b�@~�~�~�@~�@M@~�@~�@ak@~�~�~�~�~�@~�@`�@~�@~�@cW@~�~�~�@~�@N@~�@~�@~�@~��)~��)~��)~��)~��)~��)~�~��)~��)~�~�~�~��)~��)~��)~��)~��)~��)~��)�R�)~��)~��)~�~�~�~�~��)~��)~��)t��)~��)~��)~��)�)~�~��)~��)~��)~��)~��)~��)~��)�\~�~��)~��)~��)�)~�~��)~��)~��)�)�;~��)~��)�)�)t��)�)�)�)�)�)	�)
�;�)�;�)
�)�)�)�)�)�)�\�)�)�)�)�)�)�\�)�)�)�)�)�) �)!�)"�)#�)$�)%�)&.'�)(�))�)*�)t�+,-t��)t��)�)/�)0�)1�)2�)3�)4�)5�)6�)7�)8�)9�):�);�)t�=r>E?B@@A@d{@C@D@l�@FlG@H@I@JaNaNKaNLMaNNaNOaNPaNQaNRaNSaNTaNUaNVaNWaNXaNYaNZaN[aNaN\aN]^aNaN_aN`aaNbaNaNcdaNaNefaNgaNhaNiaNaNjkaNa1aNm@n@o@p@q@m�@s}tzu@v@w@x@y@M@{@|@`�@~�@�@N@�@�@M@��a����������������@�@M@�@�@L�@���@�@L�@�@�@�@�@�@j*@�����@�@�@�@�@w�@�@�@�@�@�@M@���@�@+c@�@�@M�@�������@�@M@�@�@L�@���@�@M@�@�@�b@�����@�@aN@�@�@d@���@�@`�@�@�@i�@���������@�@M@�@�@`�@���@�@li@�@�@`�@�����@�@|�@�@�@`�@���@�@c�@�@�@`�@�������@�@N@�@�@`�@���@�@iM@�@�@�@�@�@d{@�����@�@i�@�	@�
@g4@���
@�@aN@�@�@c�@��[��9��$�����@�@M@�@�@`�@��!�@� @M@�"@�#@b�@�%�/�&�,�'@�(@�)@�*@�+@M@�-@�.@�b@�0�6�1@�2@�3@�4@�5@c�@�7@�8@c�@�:�L�;�E�<�B�=@�>@�?@�@@�A@j�@�C@�D@�b@�F�I�G@�H@c�@�J@�K@`�@�M�T�N�Q�O@�P@xv@�R@�S@`�@�U�X�V@�W@aN@�Y@�Z@d@�\�~�]�l�^�e�_�b�`@�a@N@�c@�d@`�@�f�i�g@�h@d@�j@�k@d@�m�t�n�q�o@�p@M@�r@�s@aN@�u�x�v@�w@g4@�y@�z@�{@�|@�}@��@�������������@��@d@��@��@`�@������@��@`�@��@��@l�@����������@��@b�@��@��@��@��@��@L@������@��@b�@��@��@c�@��������������������������@��@li@��@��@g_@������@��@M@��@��@c�@����������@��@li@��@��@��@��@��@M@������@��@cW@��@��@d@��������������@��@y7@��@��@cW@������@��@g4@��@��@`�@����������@��@H:@��@��@H:@������@��@cW@��@��@e�@�����������������@��@M@��@��@d@������@��@d@��@��@��@��@��@M@���������@��@c�@��@��@N@���@�@c�@�@�@L�@����	���
�o�@�@�
@�l�l�l�l�l�l�l��d�l�l�l�l��N��0��%�� �g&�g&lg&�!�#�"g&g&���$ڈg&��&�*�'��(�)�������+�.�,�-g&��n����/�y��1�6�2g&�3g&�4�5c���ն�7g&�8�K�9�J�:��;g&�<g&�=g&�>g&�?g&�@g&�Ag&�Bg&�Cg&�Dg&g&�Eg&�Fg&�Gg&�Hg&�I�yg&g	g&�L�Mg&#�ohg&�O�U�Pg&g&�Qg&�R�S�Tg&g	c�g&�V�]�W�Zg&�Xg&�Yg&���[g&�\g&�,���^g&�_�a�`g&j�#��b�c�#�lg&�ell�f�gl�hl�ill�jl�k�ll�mll�n��l�p@�q@�r@�saz�t�}az�u�vaz�wazaz�x�yaz�zaz�{az�|azazw�~az�az��az��az��az��az��az����az����az����������������������gCaz�?����wU�i��M��az��azb�gQ������������w�kXv�w����ww*�"w���az��az�-ub������az������v�gC�����{�azgQaz��az��az��azkXaz��az������az��az��azwaz��az��az�������a�wU��az��az��az��az��az��az��az��azaz�^������@��@aN@��@��@b�@����������@��@L@��@��@d@������@��@`�@��@��@M@���������������������@��@L�@��@��@��@��@��@d@������@��@c�@��@��@`�@����������@��@N@��@��@d@������@��@t�@��@��@L@���	���������@��@b�@�@�@L�@���@�@m�@�@�@`�@�
����@�
@lx@�@�@`�@���@�@L�@�@�@p�@��A��/��(��"�@�@�@M� �!Mg�M�#@�$@�%@�&@�'@M�@�)�,�*@�+@|�@�-@�.@d@�0�:�1�4�2@�3@d{@�5@�6@�7@�8@�9@L�@�;�>�<@�=@|�@�?@�@@g4@�B�Q�C�J�D�G�E@�F@M@�H@�I@e�@�K�N�L@�M@|�@�O@�P@b�@�R�Z�S�W�T@�U@�V@d@�X@�Y@M�@�[�^�\@�]@|�@�_@�`@L@�b���c���d���e���f�u�g�n�h�k�i@�j@L�@�l@�m@c�@�o�r�p@�q@M@�s@�t@b�@�v�}�w�z�x@�y@az@�{@�|@d@�~���@��@|�@��@��@g_@��������������@��@��@��@��@d@��@��@li@������@��@|�@��@��@L@����������@��@iM@��@��@y7@������@��@`�@��@��@f@������������������@��@��@��@��@M@��@��@L�@������@��@`�@��@��@`�@����������@��@d{@��@��@d{@������@��@cW@��@��@b�@��������������@��@iM@��@��@c�@������@��@g4@��@��@`�@����������@��@~�@��@��@c�@������@��@|�@��@��@L@���(���	��������������@��@l�@��@��@L�@������@��@|�@��@��@M@���������@��@b�@�@�@d@���@�@c�@�@�@az@�
������
@�@M@�@�@H:@���@�@M�@�@�@c�@��!���@�@l�@�@� @H:@�"�%�#@�$@L@�&@�'@lx@�)�H�*�9�+�2�,�/�-@�.@g4@�0@�1@c�@�3�6�4@�5@L�@�7@�8@c�@�:�A�;�>�<@�=@d{@�?@�@@b�@�B�E�C@�D@d@�F@�G@az@�I�X�J�Q�K�N�L@�M@N@�O@�P@g_@�R�U�S@�T@M@�V@�W@H:@�Y�`�Z�]�[@�\@d{@�^@�_@i�@�a�d�b@�c@�R@�e@�f@�g@�h`�`��i�j`��k`�`��l�m`�`��n�o`�`��p�q`�`��r�s`�`��t�u`�`��v�w`��x`��y`��z`��{`��|`��}`��~`�`��`���`���`�����`���`���`���`���`���`���`�@`����&����������������������@��@��@��@��@`�@��@��@`�@������@��@L�@��@��@p�@����������@��@��@��sG��sG��sG��sG��sG��sG��sG��sG��sG��sG��sG��sG��sG��sG��sGsG����sG��sGsG���@��@H:@������@��@iM@��@��@c�@��������������@��@ty@��@��@`�@������@��@`�@��@��@��@��@��@N@����������@��@L@��@��@`�@������@��@N@��@��@d@�����������������@��@d@��@��@M@������@��@b�@��@��@d@���������@��@��@��@��@aN@��@��@d@���@�@`�@�@�@c�@���	��
�
�@�@M@�@�@xv@���@�@M@�@�@t�@�����@�@N@�@�@b�@� �#�!@�"@iM@�$@�%@az@�'�r�(�P�)�8�*�1�+�.�,@�-@L@�/@�0@b�@�2�5�3@�4@M@�6@�7@c�@�9�C�:�=�;@�<@`�@�>@�?@�@@�A@�B@L@�D�J�E@�F@�G@�H@�I@N@�K@�L@�M@�N@�O@�@�Q�c�R�Y�S�V�T@�U@d{@�W@�X@d@�Z�`�[@�\@�]@�^@�_@M@�a@�b@M@�d�k�e�h�f@�g@li@�i@�j@cW@�l�o�m@�n@L@�p@�q@c�@�s���t���u���v�y�w@�x@cW@�z@�{@�|@�}az�~az�az��az��azaz��az����az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��azaz��az����az��az��az��az��azaz��az����azgQaz������@��@��@��@��@aN@��@��@d{@����������@��@b�@��@��@d{@������@��@e�@��@��@M@��������������@��@`�@��@��@��@��@��@L�@������@��@L�@��@��@d{@����������@��@d@��@��@N@������@��@L@��@��@N@�������^���5�������<�����������������@��@i�@��@��@c�@������@��@lx@��@��@b�@����������@��@��@��@��@M@��@��@l@������@��@e�@�@�@lx@��*�����@�@aN@�	@�
@�,@���
@�@d@�@�@�@���tytyf?ty�ty���'�ty�tyty��ty�ty�ty�ty� ty�!ty�"ty�#ty�$ty�%ty�&tytyvq�(tyty�)tyvq�+�5�,�/�-@�.@c�@�0@�1@�2@�3lx�4lxrXlx�6�9�7@�8@g4@�:@�;@N@�=�x�>�c�?�I�@�F�A@�B@�C@�D@�E@li@�G@�H@d@�J�`�K@�L@�M@�N`��O`��P`��Q`��R`��S`��T`��U`��V`��W`��X`��Y`��Z`��[`��\`��]`��^`�e��_e�i��a@�b@iM@�d�k�e�h�f@�g@b�@�i@�j@��@�l�r�m@�n@�o@�p@�q@cW@�s@�t@�u@�v@�w@li@�y���z���{�~�|@�}@N@�@��@d@������@��@xv@��@��@L@����������@��@e�@��@��@`�@������@��@aN@��@��@az@����������������������@��@L@��@��@c�@������@��@t�@��@��@c�@����������@��@c�@��@��@d{@������@��@M@��@��@d{@��������������@��@��@��@��@j*@��@��@az@������@��@��@��MM����M��M��M��M��M��M��M��M��M��M��M��M��M��M��������M�o�;�J��Mdy���@��@N@����������@��@b�@��@��@`�@������@��@w�@��@��@`�@����������������@��@`�@��@��@N@������@��@b�@��@�@H:@����	�@�@�@N��NdN�
@�@d{@�
��@�@�@�@�@cW@�@�@M@��&�����@�@b�@�@�@c�@� �#�!@�"@c�@�$@�%@j�@�'�.�(�+�)@�*@l�@�,@�-@xv@�/�2�0@�1@lx@�3@�4@b�@�6���7��8�Z�9�H�:�A�;�>�<@�=@b�@�?@�@@b�@�B�E�C@�D@�@�F@�G@az@�I�S�J�P�K@�L@�M@�N@�O@d@�Q@�R@d@�T�W�U@�V@c�@�X@�Y@c�@�[�p�\�c�]�`�^@�_@c�@�a@�b@p�@�d�j�e@�f@�g@�h@�i@b�@�k@�l@�m@�n@�o@M@�q�x�r�u�s@�t@L�@�v@�w@ak@�y�|�z@�{@az@�}@�~@c�@������������������@��@N@��@��@`�@������@��@b�@��@��@ty@����������@��@iM@��@��@c�@������@��@cW@��@��@b�@��������������@��@d@��@��@c�@������@��@iM@��@��@d@����������@��@��@��@��@d@��@��@H:@������@��@M@��@��@H:@���������������������@��@nW@��@��@b�@������@��@��@N��N��N^C��@��@d@����������@��@�b@��@��@`�@������@��@b�@��@��@c�@�������������@��@ak@��@��@d@������@��@��@��M���M���M���M���M���M���M���M���M�M���h����@��@lx@�����@�@�@�@�@d@�	@�
@`�@���
@�@M@�@�@L�@��8��&�����@�@�@�@�@`�@�@�@nW@� �#�!@�"@N@�$@�%@M�@�'�.�(�+�)@�*@L�@�,@�-@M@�/�5�0@�1@�2@�3@�4@L�@�6@�7@c�@�9�O�:�H�;�>�<@�=@aN@�?@�@@�A@�BE�CE�DE�EE�FE�GEE��I�L�J@�K@e�@�M@�N@az@�P�W�Q�T�R@�S@b�@�U@�V@`�@�X�[�Y@�Z@b�@�\@�]@H:@�_�t�`���a���b���c�u�d�k�e�h�f@�g@c�@�i@�j@N@�l�r�m@�n@�o@�p@�q@L@�s@�t@M@�v�}�w�z�x@�y@b�@�{@�|@d@�~���@��@��@��@��@l�@��@��@�y@��������������@��@M@��@��@L@������@��@L@��@��@c�@����������@��@d{@��@��@|�@������@��@d]@��@��@H:@������������������@��@q~@��@��@d@������@��@cW@��@��@az@����������@��@l@��@��@L�@������@��@M@��@��@L@��������������@��@��@`�@��@��@b�@������@��@��@��@��@p�@��@��@{
@����������@��@iM@��@��@A@������@��@d@��@��@N@���/���
��������������@��@d@��@��@p�@������@��@L@��@��@L�@��������@��@L@�@�@N@���@�@L@�@�	@�*@�����
��@�@aN@�@�@��@���@�@d@�@�@`�@��%���@�@li@� @�!@�"@�#@�$@�b@�&�,�'@�(@�)@�*@�+@`�@�-@�.@b�@�0�O�1�@�2�9�3�6�4@�5@g4@�7@�8@az@�:�=�;@�<@M�@�>@�?@`�@�A�H�B�E�C@�D@d@�F@�G@H:@�I�L�J@�K@b�@�M@�N@p�@�P�b�Q�X�R�U�S@�T@az@�V@�W@c�@�Y�_�Z@�[@�\@�]@�^@d@�`@�a@L@�c�m�d�g�e@�f@li@�h@�i@�j@�k@�l@M@�n�q�o@�p@M�@�r@�s@b�@�u���v���w���x���y���z�}�{@�|@`�@�~@�@az@������@��@��@��@��@nW@��@��@xv@����������@��@M@��@��@d{@������@��@d@��@��@b�@��������������@��@ku@��@��@c�@������@��@`�@��@��@H:@����������@��@cW@��@��@y7@������@��@L�@��@��@y7@������������������@��@c�@��@��@L@������@��@��@��@��@aN@��@��@M@����������@��@d@��@��@H:@������@��@��@��@��@`�@��@��@c�@��������������@��@b�@��@��@L@������@��@M�@��@��@d@����@����@��@lx@������@��@N@��@��@`�@���=�������������@�@h@�@�@H:@��	�@�@xv@�
@�@M@�
����@�@b�@�@�@`�@���@�@sG@�@�@b�@��+��$��!�@� @d@�"@�#@az@�%�(�&@�'@iM@�)@�*@aN@�,�6�-�0�.@�/@L�@�1@�2@�3@�4@�5@N@�7�:�8@�9@cW@�;@�<@M�@�>�^�?�O�@�H�A�D�B@�C@c�@�E@�F@�G@M@�I�L�J@�K@j*@�M@�N@ku@�P�W�Q�T�R@�S@L�@�U@�V@b�@�X�[�Y@�Z@b�@�\@�]@N@�_�n�`�g�a�d�b@�c@M@�e@�f@`�@�h�k�i@�j@`�@�l@�m@ak@�o�v�p�s�q@�r@L@�t@�u@az@�w�z�x@�y@M@�{@�|@�}@�~@�@c�@�����������>����������������������@��@xv@��@��@c�@������@��@`�@��@��@M@����������@��@b�@��@��@d{@������@��@p�@��@��@H:@��������������@��@d@��@��@L@������@��@`�@��@��@��@��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��dd����d��d��d��d��d��d��d��d��d��d��d��d��dd����d�d����������@��@ak@��@��@cW@������@��@nW@��@��@e�@���	��������������@��@d@��@��@L�@������@��@c�@��@��@cW@����������@��@e�@��@��@iM@���@�@b�@�@�@�@�@�@L�@�
������
@�@M@�@�@iM@���@�@ak@�@�@ku@��4���@�@M@�@� @�!@�"@�#@�$@�%az�&az�'az�(az�)az�*az�+az�,az�-az�.az�/azaz�0az�1az�2�3azv�az�5�8�6@�7@L@�9@�:@�;@�<d�=db�i#�?���@�b�A�P�B�I�C�F�D@�E@az@�G@�H@p�@�J�M�K@�L@L@�N@�O@`�@�Q�X�R�U�S@�T@g4@�V@�W@�@�Y�\�Z@�[@b�@�]@�^@�_@�`@�a@l@�c�u�d�n�e�k�f@�g@�h@�i@�j@b�@�l@�m@l@�o�r�p@�q@L@�s@�t@nW@�v�}�w�z�x@�y@L@�{@�|@lx@�~���@��@cW@��@��@L@������������������@��@�b@��@��@H:@������@��@M@��@��@�b@����������@��@h@��@��@az@������@��@g4@��@��@b�@��������������@��@N@��@��@H:@������@��@L@��@��@n�@����������@��@xv@��@��@rf@������@��@|�@��@��@l�@���L���������������������@��@e�@��@��@L�@������@��@L@��@��@`�@����������@��@g4@��@��@��@������@��@d@��@��@cW@��������@����@��@N@������@��@��@��@��@L�@��@��@`�@���������@��@��@��@��@~@��@��@M@���@�@c�@�@�@H:@��-�	��
����@�
@d@�@�@c�@���@�@x�@�@�@�@�@�@b�@��#�� �@�@b�@�!@�"@c�@�$�*�%@�&@�'@�(@�)@iM@�+@�,@M@�.�=�/�6�0�3�1@�2@aN@�4@�5@N@�7�:�8@�9@b�@�;@�<@b�@�>�E�?�B�@@�A@M@�C@�D@cW@�F�I�G@�H@c�@�J@�K@d@�M���N�m�O�^�P�W�Q�T�R@�S@c�@�U@�V@b�@�X�[�Y@�Z@c�@�\@�]@az@�_�f�`@�a@�b@�c@�daz�eazazgQ�g�j�h@�i@d{@�k@�l@cW@�n���o�y�p�v�q@�r@�s@M�tM�uMg��w@�x@b�@�z���{@�|@�}@�~@�@L@��@��@`�@����������@��@gn@��@��@d@������@��@M�@��@��@e�@������������������@��@d]@��@��@w@������@��@M@��@��@m�@����������@��@�I@��@��@L�@������@��@cW@��@��@e�@��������������@��@d@��@��@M@������@��@d@��@��@`�@����������@��@N@��@��@�@������@��@b�@��@��@`�@�������e���������������������@��@e�@��@��@`�@������@��@`�@��@��@pz@����������@��@M@��@��@`�@������@��@��@��@��@b�@��@��@H:@������������@��@`�@��@��@H:@���@�@b�@�@�@az@���	��
@�@ty@�
@�@H:@���@�@L�@�@�@lx@��C��*��#�� �@�@�@�@�@b�@�!@�"@lx@�$�'�%@�&@L�@�(@�)@b�@�+�5�,�2�-@�.@�/@�0@�1@l�@�3@�4@`�@�6�9�7@�8@d{@�:@�;@�<@�=�@�>�?e��ՙ��A�BdN*�9~��D�V�E�L�F�I�G@�H@L@�J@�K@g_@�M�P�N@�O@L�@�Q@�R@�S@�T@�U@L�@�W�^�X�[�Y@�Z@ak@�\@�]@d{@�_�b�`@�a@L@�c@�d@az@�f���g���h�z�i�s�j�m�k@�l@`�@�n@�o@�p@�qb��rb�x�b��t�w�u@�v@t�@�x@�y@az@�{���|��}@�~@w�@��@��@��@��@��@cW@������@��@��@��@��@aN@��@��@az@��������������@��@M@��@��@az@������@��@`�@��@��@az@����������@��@c�@��@��@iM@������@��@M�@��@��@az@������������������@��@cW@��@��@`�@������@��@y7@��@��@b�@����������@��@b�@��@��@��@��@��@N@������@��@��@��@��@cW@��@��@L�@��������������@��@��@��@��@L�@��@��@`�@������@��@��@��@��@g4@��@��@d@����������@��@g_@��@��@ak@������@��@��@��@��@M@��@��@b�@�������c����������@�@L�@�@�@b�@�	��
@�@l@�
@�@N@�����@�@`�@�@�@H:@���@�@L�@�@�@c�@��1� �*�!�$�"@�#@M@�%@�&@�'@�(@�)@N@�+�.�,@�-@M@�/@�0@p�@�2�\�3�Y�4@�5@�6@�7g4�8g4�9�I�:g4�;g4�<g4�=g4�>g4�?g4�@g4�Ag4�Bg4�Cg4�Dg4�Eg4�Fg4�Gg4�Hg4�g4�Jg4�Kg4�Lg4�Mg4�Ng4�Og4�Pg4�Qg4�Rg4�Sg4�Tg4�Ug4�Vg4�Wg4�Xg4�g4�Z@�[@b�@�]�`�^@�_@N@�a@�b@c�@�d���e���f���g��h@�i@�j@�k�m�ll�ll�nl�o�pl�ql�rll�s�tl�ul�vl�wl�xl�yl�zll�{�|ll�}�~llg	��@��@�,@������@��@g_@��@��@��@��@��@c�@����������@��@��@��@��@d@��@��@`�@������@��@N@��@��@H:@��������������@��@ty@��@��@b�@������@��@E@��@��@b�@����������@��@i�@��@��@b�@������@��@xv@��@��@��@��@��@`�@���������������������@��@az@��@��@p�@������@��@`�@��@��@d@����������@��@d{@��@��@`�@������@��@`�@��@��@g4@��������������@��@M@��@��@az@������@��@L�@��@��@`�@����������@��@`�@��@��@b�@������@��@L�@��@��@H:@��#����
���@�@d{@�@�	@d@���@�
@p�@�@�@b�@�����@�@�@�@�@L�@�@�@M@�� �@�@e�@�!@�"@`�@�$�<�%�/�&�)�'@�(@M@�*@�+@�,@�-@�.@b�@�0�6�1@�2@�3@�4@�5@d@�7@�8@�9@�:@�;@b�@�=�D�>�A�?@�@@d@�B@�C@j�@�E�K�F@�G@�H@�I@�J@az@�L@�M@d{@�O���P���Q�i�R�*�S�a�T���U���V�t�W�Y�X@iM@�Z@�[@�\@�]@�^@@�_@�`@�a�b@�c@�d@@�e�f�m@�g@�h@�i@�j@�k@�l@�d@�n@�o�p@@�q@�r�s@@�d�u���v�}�w�z�x@�y@`�@�{@�|@L�@�~���@��@d{@��@��@c�@����������@��@e�@��@��@`�@@����@��@d@��@��@`�@����������������������@��@|@��@��@xv@������@��@d{@��@��@H:@����������@��@d@��@��@b�@������@��@L�@��@��@lx@��������������@��@��@��@��@b�@��@��@d@������@��@c�@��@��@li@����������@��@li@��@��@c�@������@��@N@��@��@d@���?���
����������@��@`�@��@��@N@���
��@��@��@��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��az��azaz����az��az��az��az��az��az��az��az�az�az�az���az�azgCaz�az�az�	azazgC�@�@d@�����@�@b�@�@�@`�@���@�@L@�@�@�@�@�M��M�� M��!M��"M��#M��$M��%M��&M��'M��(M��)M��*M��+M��,M�M��-�.=�/��M��0�1M��2M�M��3�4M��5M��6M�M��7M��8�9M��:M��;M��<M�M��=M��>M�{��@�R�A�K�B�H�C@�D@�E@�F@�G@aN@�I@�J@M@�L�O�M@�N@d@�P@�Q@�b@�S�Z�T�W�U@�V@p�@�X@�Y@L�@�[�^�\@�]@`�@�_@�`@d{@�b��c���d���e�t�f�m�g�j�h@�i@`�@�k@�l@g_@�n�q�o@�p@cW@�r@�s@c�@�u�|�v�y�w@�x@b�@�z@�{@�H@�}���~@�@q~@��@��@��@��@��@~@��������������@��@b�@��@��@iM@������@��@��@��@��@i�@��@��@i�@����������@��@L�@��@��@d@������@��@`�@��@��@p�@������������������@��@d{@��@��@M@������@��@L@��@��@d@����������@��@g4@��@��@cW@������@��@d@��@��@��@��lx��lx��lx��lx��lx��lx��lx��lx��lx��lx��lx��lx��lx��lx��lx��lx��lx��lxlxe��������������@��@��@��@��@b�@��@��@g4@������@��@l@��@��@N@����������@��@d@��@��@N@������@��@��@��@��@d@��@��@��@��_��!�������@�@g4@�	@�
@H:@���
@�@d@�@�@d@�����@�@L@�@�@L@���@�@N@�@� @H:@�"�G�#�*�$�'�%@�&@N@�(@�)@b�@�+�D�,@�-@�.@�/�B�0�Ae�1�2lx�3lx�4lx�5lx�6lx�7lx�8lx�9lx�:lx�;lx�<lx�=lx�>lx�?lx�@lxelxelx�Clxelx�E@�F@cW@�H�O�I�L�J@�K@d@�M@�N@s8@�P�V�Q@�R@�S@�T@�U@M@�W@�X@�Y@�ZM�[M�\M�]M�^Mg�M�`��a���b�i�c�f�d@�e@`�@�g@�h@L�@�j���k@�l@�m@�nM��oM��pM��qM��rM��sM��tM��uM��vM��wM��xM��yM��zM��{M��|���}���~��M����L����h*�{����������M���=M�M���L�0������������M�v�M���M�h[��M���M�M����@��@��@��M��M������M��M��M��M��M��M��M��M��M��M��M��M��MM����MM�M��M��M��M��M��M��M��M������M��M��M��M��M��M��M�����M��M��M��M��M��M��M��M��M��M��M��M��M��MM��M�;�����������������������MM�����������@��@d@��@��@M@�����@��@��@��l��l��l��l��l��l��l��l��l��l��l��l��l����������l��ll���ll����ll����������������ڈ���ն������l�s�d��l��ln���l�l����yl���@�@d@�	��
����@�
@b�@�@�@L�@���@�@n�@�@�@`�@�� ���@�@iM@�@�@ty@�!�'�"@�#@�$@�%@�&@L@�(@�)@L@�+�H�,���-���.�M�/�>�0�7�1�4�2@�3@N@�5@�6@b�@�8�;�9@�:@`�@�<@�=@d@�?�F�@�C�A@�B@d{@�D@�E@`�@�G�J�H@�I@`�@�K@�L@`�@�N�t�O�j�P�S�Q@�R@iM@�T@�U@�V@�Wlx�Xlx�Ylx�Zlx�[lx�\lx�]lx�^lx�_lx�`lx�alx�blx�clx�dlx�elx�flx�g�i�helx�elx�k�q�l@�m@�n@�o`��p`�`�i��r@�s@d@�u�|�v�y�w@�x@iM@�z@�{@`�@�}���~@�@��@��@��@d@��@��@N@������������������@��@cW@��@��@lx@������@��@�H@��@��@N@����������@��@`�@��@��@d@������@��@d@��@��@xv@��������������@��@g_@��@��@L�@������@��@`�@��@��@b�@����������@��@j*@��@��@xv@������@��@d@��@��@c�@���������������������@��@li@��@��@`�@������@��@L�@��@��@L@����������@��@f@��@��@c�@������@��@d@��@��@i�@��������������@��@g4@��@��@M@������@��@d@��@��@M@����������@��@�1@��@��@i�@����@�@�@�@�@cW@�@�@i�@�	�(�
������
@�@li@�@�@d{@���@�@d@�@�@b�@��!���@�@`�@�@� @b�@�"�%�#@�$@h@�&@�'@M@�)�8�*�1�+�.�,@�-@n�@�/@�0@b�@�2�5�3@�4@M@�6@�7@c�@�9�@�:�=�;@�<@`�@�>@�?@d@�A�E�B@�C@�D@ak@�F@�G@d{@�I���J���K�m�L�^�M�W�N�Q�O@�P@L�@�R@�S@�T@�U@�V@d@�X�[�Y@�Z@cW@�\@�]@`�@�_�f�`�c�a@�b@`�@�d@�e@M@�g�j�h@�i@iM@�k@�l@H:@�n���o���p�s�q@�r@d@�t@�u@�v@M�wM�xM�yM�z�{M�|M�}M�~M�M��M��M��M��M��MM����M��M��MM~������@��@�H@��@��@L@����������@��@d{@��@��@`�@������@��@`�@��@��@b�@������������������@��@L�@��@��@b�@������@��@lx@��@��@`�@����������@��@xv@��@��@`�@������@��@i�@��@��@��@��@��@d@��������������@��@nW@��@��@az@������@��@N@��@��@c�@����������@��@M@��@��@b�@������@��@L�@��@��@��@��@��@g4@���'�����������������@��@L@��@��@az@������@��@L@��@��@L@���������@��@��@��@��@sG@��@�@d@���@�@N@�@�@c�@�	��
����@�
@c�@�@�@d@���@�@aN@�@�@`�@�� ���@�@c�@�@�@L@�!�$�"@�#@��@�%@�&@cW@�(�J�)�8�*�1�+�.�,@�-@xv@�/@�0@`�@�2�5�3@�4@L@�6@�7@d@�9�@�:�=�;@�<@ak@�>@�?@ak@�A�D�B@�C@L�@�E@�F@�G@�He��Ie�he��K�Z�L�S�M�P�N@�O@N@�Q@�R@c�@�T�W�U@�V@`�@�X@�Y@N@�[�b�\�_�]@�^@�b@�`@�a@b�@�c�f�d@�e@w@�g@�h@`�@�j�X�k�M�l���m���n���o���p�w�q�t�r@�s@M@�u@�v@d@�x�{�y@�z@`�@�|@�}@�~@�d{��d{��d{��d{��d{��d{��d{��d{��d{��d{��d{��d{��d{��d{��d{��d{����d{��}�}���d{!�d{����������@��@��@��@��@xv@��@��@M@������@��@L�@��@��@c�@��������������@��@��@��������^�NW�N;����Q�[���]���@��@d@������@��@M@��@��@`�@����������@��@��@q~@��@��@b�@������@��@L@��@��@`�@������������������@��@iM@��@��@l�@������@��@��@��@��@cW@��@��@N@����������@��@M@��@��@l@������@��@b�@��@��@d{@��������������@��@l@��@��@e�@������@��@��@��@��@d@�@�@�@��)d��d�b��b��b��	b��
b��b��b��
����b��b�"�b�b��b��b�"��b��b��b���%����b��db�b��o�b���"� �!b�c�b�i#�#�$�Qb�b�n��&b��'b��(b�"�d�*���+d�,d�-���.�N�/�F�0d�1d�2�=d�3�4d�5d�6d�7d�8d�9�<�:�;dm�Xldd+��>d�?d�@d�Ad�Bd�Cd�Dd�Edm�d�Gd�H�K�I�Jm�dd+��L�Md"E�Nd�Od�P���Qd�R�[d�S�Td�Ud�Vd�Wd�Xd�Yd�Zddm��\�zd�]�^dd�_�`d�a�g�b�e�c�ddo�m��d�f�Cd�hdd�ib��j�kd�ld�md�nd�od�pd�qd�rd�sd�td�ud�vd�wd�xd�ydm�d�{d�|d�}d�~d�d��d��dq�d����������������������q���"���d��dq�d��d��dd�����N�NBf��r����r����r��rr��r��ro���r��������r����rri#��rr���Dr��rr����r�Crd�K����������d��d+���"E����������b���b�n���ddb�����d��b��d��c�b���d��d��d��dd��d����ddb���dd��d��d��d����d��d��db�d������������Bf��suA���Bf��Bf��Bf��Bf��Bf��BfBfm�rb���d�Qd��d��d��d��d��d��dd������db�b�d����������@��@d@��@��@M@������@��@p�@��@��@��@xv��xv��xv�����������������������@��@L@��@��@l@���@�@b�@�@�@�@���ty��	���
�I��)���
��������������������vq���|�vq|�|�f?��#�� ���f?�f?����!�"����$�(�%�&����'�e?e?��*�;�+�3�,�0�-�/�.t��t�t��U�1���U�2�U���4�7��5�6��8�9�:-�<�B�=�>-���?�A�@<��<<K�C�F�D[K�EK[k�G�Hzkz�J�n�K�Z�L�R�M�Q�N�Oz���P�����S�W�T�V�U�����0�X��0�Y�0��[�e�\�`�]�_��^�����a�c�b���vq�dvq|��f�j�g�h|�f?�i��f?���k�m��l�����o���p�z�q�v�r�t�se?�e?��u�t��w�xt��U�y���U���{��|�~��}�������--������<������������<K��[K[����k��kzz�������������������������0����0�����������������������������-<��������KZix����������������������������!0����������?zN����]l{������������������������������������x��ty����"1@��������������O^m|�����k��������vq�����|���|�����|�|�ty��ty|�ty����������@��@b�@��@��@g_@������@��@��@��@��@N@��@��@��@��@��@iM@��������������@��@L@��@��@iM@������@��@b�@��@��@d@�����@�@`�@�@�@`�@���	@�
@`�@�@�
@p�@��.�������@�@l�@�@�@d@���@�@M@�@�@`�@� �'�!�$�"@�#@c�@�%@�&@L�@�(�+�)@�*@j�@�,@�-@L�@�/�>�0�7�1�4�2@�3@e�@�5@�6@`�@�8�;�9@�:@N@�<@�=@i�@�?�F�@�C�A@�B@�b@�D@�E@b�@�G�J�H@�I@L�@�K@�L@b�@�N���O���P�r�Q�`�R�Y�S�V�T@�U@c�@�W@�X@cW@�Z�]�[@�\@li@�^@�_@b�@�a�k�b�e�c@�d@d@�f@�g@�h@�i@�j@d{@�l�o�m@�n@`�@�p@�q@l@�s���t�{�u�x�v@�w@N@�y@�z@c�@�|��}@�~@L@��@��@lx@����������@��@lx@��@��@xv@������@��@b�@��@��@�H@������������������@��@��@��@��@az@������@��@xv@��@��@L�@����������@��@`�@��@��@N@������@��@q~@��@��@�b@��������������@��@lx@��@��@b�@������@��@M@��@��@b�@����������@��@��@��@��@N@��@��@b�@������@��@��@��@��@d@���������������������@��@b@��@��@L�@��@��@��@p�@����������@��@b�@��@��@az@������@��@M@��@��@xv@�������������@��@M@��@��@az@������@��@lx@��@�@b�@��	���@�@`�@�@�@N@�
�
�@�@L�@�@�@i�@��3��$�����@�@L�@�@�@�@�az{��{�az��!�@� @p�@�"@�#@b�@�%�,�&�)�'@�(@az@�*@�+@lx@�-�0�.@�/@`�@�1@�2@lx@�4�I�5�<�6�9�7@�8@b�@�:@�;@d@�=�F�>@�?@�@@�A�CM��B��M��D�E[M�M��G@�H@b�@�J�Q�K�N�L@�M@ty@�O@�P@N@�R�U�S@�T@L�@�V@�W@d@�Y���Z���[���\�~�]�o�^�h�_�e�`@�a@�b@�c@�d@`�@�f@�g@h@�i�l�j@�k@d@�m@�n@lx@�p�w�q�t�r@�s@N@�u@�v@b�@�x�{�y@�z@c�@�|@�}@`�@�������������@��@d@��@��@L@������@��@ak@��@��@M@����������@��@e�@��@��@`�@������@��@d@��@��@`�@������������������@��@N@��@��@N@������@��@iM@��@��@c�@����������@��@c�@��@��@N@������@��@��@��@��@��@��@��@M@��������������@��@ku@��@��@d@������@��@d@��@��@d@����������@��@�x@��@��@b�@������@��@iM@��@��@b�@�������8��������������@��@d{@��@��@��@��@��@d@������@��@d@��@��@c�@���1���.��@��@��@��az���
az�������az��az�az�azaz��azazv��azaz��az�az�	azaz�
�az�w�jw��az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az� az�!az�"az�#az�$az�%az�&az�'az�(az�)az�*az�+az�,az�-azgCaz�/@�0@`�@�2�5�3@�4@b�@�6@�7@d{@�9�}�:�A�;�>�<@�=@g4@�?@�@@N@�B�w�C@�D@�E@�Fd�Gd�Hd�Id�Jd�Kd�Ld�Md�Nd�Od�Pd�Qd�Rd�Sd�Td�Ud�Vdd�Wd�X�Yd�Zd�[d�\d�]d�^d�_d�`�o�a�h�bdd�c�dd�ed�fdd�gd�d�id�j�kd�ldd�m�ndd��pdd�qd�rd�sd�t�ud�vd�d�x@�y@�z@�{@�|@N@�~�������@��@cW@��@��@��@��@��@d@������@��@`�@��@��@d@������������������@��@��@��@��@N@������@��@p�@��@��@lx@����������@��@xv@��@��@az@������@��@i�@��@��@N@��������������@��@L�@��@��@iM@������@��@`�@��@��@lx@����������@��@d@��@��@iM@������@��@xv@��@��@d@���d���������������������@��@b�@��@��@b�@������@��@N@��@��@��@��@��@`�@����������@��@h@��@��@d@������@��@N@��@��@`�@�������������@��@b�@��@��@M@�����@��@N@�@�@g_@�����@�@lx@�	@�
@p�@���
@�@d@�@�@M�@��E��#�����@�@L�@�@�@M�@�� �@�@`�@�!@�"@ՙ@�$�+�%�(�&@�'@`�@�)@�*@`�@�,�B�-@�.@�/@�0A�1A�2��3AA�4�5A�6A�7AA�8�9AA�:A�;�<A�=AA�>�?A�@A�AAC�A�C@�D@`�@�F�U�G�N�H�K�I@�J@N@�L@�M@N@�O�R�P@�Q@xv@�S@�T@aN@�V�]�W�Z�X@�Y@d@�[@�\@N@�^�a�_@�`@=@�b@�c@d@�e���f���g�v�h�o�i�l�j@�k@d@�m@�n@`�@�p�s�q@�r@`�@�t@�u@L�@�w�~�x�{�y@�z@d@�|@�}@`�@�����@��@b�@��@��@c�@��������������@��@d@��@��@`�@������@��@M@��@��@`�@����������@��@��@��@��@d@��@��@b�@������@��@d@��@��@ku@������������������@��@e�@��@��@b�@������@��@l�@��@��@b�@����������@��@c�@��@��@��@cW����cW��cW����������������������������x���������@��@l�@��@��@d@��������������@��@d{@��@��@b�@������@��@b�@��@��@L�@����������@��@b�@��@��@b�@������@��@d@��@��@��@�������m���m���w���5���������������@��@L@��@��@lx@���@�@b�@�@�@lx@���	��
@�@l@�
@�@b�@���@�@l@�@�@c�@��&�����@�@N@�@�@d@� �#�!@�"@M@�$@�%@d@�'�.�(�+�)@�*@iM@�,@�-@iM@�/�2�0@�1@M@�3@�4@e�@�6�X�7�I�8�?�9�<�:@�;@li@�=@�>@g4@�@�C�A@�B@N@�D@�E@�F@�G@�H@c�@�J�Q�K�N�L@�M@g4@�O@�P@b�@�R�U�S@�T@b�@�V@�W@`�@�Y�h�Z�a�[�^�\@�]@L@�_@�`@b�@�b�e�c@�d@l�@�f@�g@`�@�i�p�j�m�k@�l@q~@�n@�o@aN@�q�t�r@�s@N@�u@�v@iM@�x���y���z���{���|��}@�~@d@��@��@b�@������@��@lx@��@��@lx@����������@��@M@��@��@aN@������@��@`�@��@��@xv@��������������@��@Q�@��@��@d@������@��@��@l�����l��l���@��@��@����������@��@az@��@��@d@������@��@b�@��@��@p�@������������������@��@d@��@��@i�@������@��@`�@��@��@`�@����������@��@i�@��@��@xv@������@��@d@��@��@j�@��������������@��@l@��@��@l�@������@��@c�@��@��@N@���f���c��@��@��@���`������d��d������d��d��d��d��d��d��dq�d����dd��d�q�d�d�d�d�d�d�d�d�	��
d�d�d�
d�d�d�dm�d�d�d�d�d��d�d�db���d�dq��dq�d�d� ���!d�"�qd�#�$d�%d�&d�'d�(�0�)RR�*�+R�,RR�-�.�/b���CRR�1R�2R�3�4R�5RR�6R�7�8b��9b��:b��;b��<b��=b��>b��?b��@b��Ab��B�_�C�P�D�J�E�H�F�GRc�b�c��Ib�c�b��K�M��Lc����N�Oo�c�b����Q�X�R�U�S�Tsub���b��V�Wb��R�Y�\�Z�[b�suo��Z�]�^b�#��b��`�m�a�h�b�e�c�do�m�b���f�g�b��b��i�k�jb��b�b��lb�o��nb��ob�b��pb��C�rd�sd�td�u���v���w���xd�yd�K�z�{d�|d�}d�~d�d��dd��d��d����dd����d��dd��d����d��d��dn�b�������������d+�d����������d��d����b���n�����������d��d��dd����d������d��������m�dq�m���dm�d��d��dd��A�d������dd������b�dd����dd����d#�d��d������dd����d��d��d����q���d��d��d��d��d��db���b�dd��d��d����d��d��d��d��d�����������d����dd��dq�d������d��d+�d��d��������������d��dm�d��d����d��d��d��d��d��d��d��d��d��d��d��d��������d���Zd����b�q��Zq���d��d�Zd��d��ddb��������d��+�d����ddm����dm�d�dd����	��
������
�����D"�i#��#�Cr�o�����su�Q+�������"���X��L��7d�d�� d�!d�"d�#d�$d�%d�&d�'d�(d�)d�*d�+d�,d�-�3�.�1�/�0d�ri#�2d�C�D�4d�5�6db�dm��8�:d�9dm�d�;d�<�=d�>d�?dd�@�Ad�Bd�Cd�Dd�Ed�Fdd�G�Hd�Idd�Jd�Kd#�M�S�N�Q�O�Pdq�"�d�Rdd�D�T�V�Ud�Dd�Wdq�d�Yd�Z�]d�[d�\d�^d�_ddm��a�bdo�m��-�d@�e@b�@�g�j�h@�i@d@�k@�l@L@�n���o���p���q���r�|�s�y�t@�u@�v@�w@�x@d@�z@�{@b�@�}���~@�@`�@��@��@`�@����������@��@b�@��@��@l@������@��@b�@��@��@lx@��������������@��@p�@��@��@`�@������@��@c�@��@��@M@����������@��@ڈ@��@��@ku@������@��@M@��@��@lx@������������������@��@L�@��@��@`�@������@��@��@��xv��xv��xv��xv������������xv��xv����xvxv����xv��xv��xv��xvxv��xv��xv����xv��xvxv��xv����@��@d@����������@��@q~@��@��@M@������@��@d@��@��@lx@��������������@��@`�@��@��@`�@������@��@N@��@��@��@d��d���-d���������@��@d@�@�@q~@���@�@L�@�@�@�	@�
���������
�������������G�����e$$����������$$�����)���������������S� �2���!�"���#���$���%���&���'���(���)���*���+���,�����-�.���/���0�1��$$�f���3�C�4���5���6���7���8���9���:���;���<���=���>�����?�@���A���Bx���x��D���E���F���G���H���I���J���K���L���M���N�����O�P���Q���R�������T���Uy�V���W���X���Y���Z���[���\���]���^���_���`�����a�b���c���d�����m�f���g���h�����i�j���km��lm��mm��nm��o�~m��pm��q�rm�m��s�tm��um��vm�m��w�xm��ym��zm�m��{�|m��}m�x�m��m���m���m�m�����m���m���m�m�����m���m���m�m�����m���m��um�������$����������x�������������9�������9��������������������Ӵ�������������������������f����������������������������������������������������������������������9������������9���������������$$������������������������������������������������������������������$$������������������������$$������������������������^�����������������������������������������������������������������������������������������������������9���9���9�9�cW�������@����������������$$$$�gh$$����u������
���������	�
9�cW$$����������Q��������������$$���W����ׄ�������������u�������9���� �3�!�,�"�(�#���$���%���&�'$$���������)���*�+�����m�-�.��x��/���0�@�@�1�@�2m:�@���4�5���6�;�7���8���9�:����?���<�C�=�@�>�?����gh���A�B�uyy�/�D�u�E�Fyv�y���H���I�Y�J��K�V�L�S�M�N��$$���O�PQ��QQ��RQ�Q�x��T�U���������W�X����$$�Z�m�[�a���\���]�^���_��$$�`$$���b�j���c���d�e�g�f�������h�����i�����k�l�|rC���n���o�~�p�y���q�r���s�v�t�u��|�$���w�x$��$�����z�{���|�����}�������������������$$��$$������������$$���������������������m�������W��������������������������$$x��f$$��������$$������$$��������������$$����������������������x�9�4P�7����]��$$����������m���|����9��vv��8����������������������������������x���������$$����������������$$������������������������������������������������������������4P�����������|�����gh4P��x�������������9���������������������������������������$�����+���	��������������@��@b�@��@��@��@b���b���x�b�������@��@d@��@��@lx@���������@��@L�@�@�@d@���@�@`�@�@�@�,@�
������
@�@M@�@�@M@���@�@sG@�@�@�@�@�@M@��$��!�@� @�H@�"@�#@d@�%�(�&@�'@d{@�)@�*@e�@�,�K�-�<�.�5�/�2�0@�1@c�@�3@�4@t�@�6�9�7@�8@xv@�:@�;@`�@�=�D�>�A�?@�@@d@�B@�C@N@�E�H�F@�G@e�@�I@�J@`�@�L�^�M�W�N�Q�O@�P@cW@�R@�S@�T@�U@�V@M@�X�[�Y@�Z@ak@�\@�]@��@�_�f�`�c�a@�b@��@�d@�e@L�@�g�j�h@�i@M@�k@�l@lx@�n�;�o���p���q���r�~�s�w@�t�u@�v@`�@�x�{�y@�z@lx@�|@�}@H:@���������@��@e�@��@��@iM@������@��@L@��@��@M@��������������@��@N@��@��@b�@������@��@N@��@��@��@��@��@d@����������@��@lx@��@��@`�@������@��@d@��@��@N@������������������@��@cW@��@��@j�@������@��@b�@��@��@d@����������@��@g4@��@��@��@��@��@`�@������@��@N@��@��@t�@��������������@��@g4@��@��@lx@������@��@��@��@��@d@��@��@d@����������@��@d@��@��@`�@������@��@�R@��@��@M@�������������������@��@�@��@��@��@�@�@l�@��	�@�@�@�@�@ak@�
@�@c�@�
����@�@b�@�@�@N@���@�@b�@�@�@lx@����������@� @�!@�"�G�#az�$�7�%az�&az�'az�(az�)az�*az�+�2az�,�-az�.�0az�/wv��1azt�az�3az�4az�5az�6azb�gCaz�8�9azaz�:�;azaz�<�=azaz�>az�?�@az�Aaz�Baz�Caz�Dazaz�E�Fazb�azaz�H�I�v�Jaz�Kaz�Laz�Maz�Naz�O�Z�P�Y�Qt��Raz�Saz�Tazaz�U�Vaz�Waz�Xaz�Kazaz�K�[az�\az�]az�^�h�_az�`az�a�daz�baz�c�Kazaz�e�f�gaz�K�Kazaz�iaz�j�kaz�laz�maz�naz�oazaz�p�qazaz�r�sazaz�t�uazwaz�w�~az�x�yaz�zaz�{az�|az�}azwt�az�az��������az��az��az������az��������az��az����azaz��azv�az��az����az��azaz���az����az��az����azwaz�������������y�K�Kaz���yww����y���y�yaz����az����azaz��������������az�Kwaz��az��azaz��az����az��az��azaz����az��az����az�
�Kaz��az��az��az��az����������az����������az��azb�az��az��azwv���az��az����gQaz�KgQ��az��az��az��az����wazv�az��az��azaz������az����azazm��az��azwaz��@��@�@������@��@d@��@��@b�@����������@��@d@��@��@g4@������@��@b�@��@��@�b@������
��������@��@��@��@��@M@�@�@`�@���@�@L�@�@�	@xv@�����
@�@L@�@�@g_@���@�@d@�@�@H:@��,��%���@�@b�@� @�!@�"@�#@�$@e�@�&�)�'@�(@`�@�*@�+@L�@�-�4�.�1�/@�0@cW@�2@�3@H:@�5�8�6@�7@M@�9@�:@d@�<���=���>���?�N�@�G�A�D�B@�C@`�@�E@�F@d{@�H�K�I@�J@iM@�L@�M@`�@�O���P���Q@�R@�S@�T��U�h�VcW�WcW�XcW�YcW�ZcW�[cW�\cW�]cW�^�f�_cW�`cW�acWcW�b�ccW�dcW�ecW$$cW�gcWx�cW�icW�jcW�kcW�lcW�mcW�ncW�ocW�pcWcW�q�rcW�s�zcW�tcW�u�vcW�wcW�x�y]z$$cW��cW�{�|cW�}]z�~]z]z$$������cW��cW��cW��cW��cW��cW��cW����cW����cW��cW��cW9�cW9�cW������cW��cW��cW��cW��cW��cW��cWcW����cW��cW��cW9�cW��cW��cW������)���X��������������������cW����cWcW����cWcW��x�cWcW��cWx�����cW����cW��cW��cW��cWycW������cW��cW��������ghcWcWx���cW��cWcW$������cW����$$cW��cW������������9��������������+��������cW��cW����cW��cW��cWcW����cW��cW��cW$$cW��cW��cW��cW��cW��cWghcW����cW����cW����x�cWcW�������������cW��������cW��cW��y��cWcW��cW�cW|�cW����cW��cW��cW����cW$$$$cWcW����cWcW����cW��cW��cW�kcW���J���:���7�cWcW�cW�������������������	���
���������
��������������������������x�����'������������������������� ���!���"���#���$���%���&��x����(���)���*���+���,���-���.���/���0���1���2���3���4���5���6��x����8cWcW�9�fcW�;�FcW�<�=�E�>�AcW�?�@cW��cW�BcW�CcW�DcW�cWcW�m�G�I�HcWycWcWӴ�K�T�L�O�MӴ�NcWӴcW�P�R�QcWcWӴ�ScWӴcWcW�UcW�VcW�W��x��Y���Z���[�j�\�g�]cWcW�^�_cW�`�c�acW�bcW\�cWcW�d�e�f�fm�x�ghcW�h�icWӴcW�k���l���m�rӴ�n�ocWcW�pcW�qcW�ucW�s�t�z�u�x�v�wx�:
:
x�x��yx����{x��|���}$$�~x��x���x���x���x���x���x���x���x���x���x���x���x�x�������$$x�x��O��x�cW���fcW����cW��cW�����cW������������ycWghx�cW��cWcW���mcW9�����cW������cW�cWcW��x�cW��������cW��cW��cW��������cW��cWcWթ��cWcW���cW����cW����cWcW����cWcW��$$\���cWcWӴ������cW��cWcW����cW��cWcW��cW�f��cWcW����Ӵ�������������7x�9�cW�������m�����������y�gh�7�f�����(�	����������cW����cW��cWx�cW����cW��cW��cW����cW������������$$cW�����mgh�������cW��cW����cW��cW��cW��4P��cW������cWcW������$$cW�cW��cW��cW��cW��cW��cW��cW��cW��cW��cW��cW��cW�cW�cW�cW�cW�cW�cW�cW�cW?@cW�	�cW�
��cW��
$$�cW��cW���cW��$$��Q�x��cWcW$��cW����cWgh��ghgh�ygh�cWcW� cW�!���"�#�&�$cW�%cW4PcWcW�'cW�(cW4P�*���+�l�,�D�-�@�.�;�/�5cW�0cW�1�2cW�3cW�4cWx�cW�6�:�7cW�8cW�9cW9�cW�(cW�<�>�=�cW��?cW�0�cW�A�BcWcW�C�cW�E�b�F�V�G�P�H�O�IcW�JcW�K�M�LcWx�cW�NcWx�cW$$cW�QcW�RcW�S9��T9��U9�cW9��W�Y�XcW�cWcW�ZcW�[�\cW�]�`�^�_cW$�fcW�acWcW$$cW�c�d�f�ecWcW|��gcW9��h�icW�jcWcW�kcW���m���n�v�ocW�pcW�qcW�rcWcW�s�tcW�ucW\�cWcW�w�x��cW�y�zcW�{�~�|cWcW�}x�cW���x���#scWcW���mcWcW��cW9�cW��cW������cW��cW����cW��cW��cW|cW�����ucWcWgh������������cW��cW��cW��cW$$������cW��cWcW����cW��cW��cW�?cW������cW��cW��cW��cW��cWcW��cW��cW$$������������cW��cW��������������������y��y��y��y��y��y��y��y��y��y��y��y��������������m�Ӵgh����v��uy\���y����v��7�9���gh��������������m�Ӵgh����v��uy\���y����v��7�9�����m�\�9�x���cW��cW$$cWcW����cWcW����cW��|cW����cW����cW����cWcW����cW�fcWx��W����cW������������cWcW����cW��cWcW��v�x�������cW��cW��cW��cW�fcWӴcW��ӴcW��cW������cW�cWӴcW�cW��cW�cW��	��
��cWӴcW�
cWcWycW�cW��cW���cWv��ghx�cW���x�cWv�cW�cW��j��5�cW��-��&cW� �!cWcW�"�#cW�$cW�%cWӴcW�'cW�(cWcW�)�*cW�+cW�,cWx�cW�.�2�/�1cW�0cW�WӴcW�3cW�4cWӴcW�6�;�7cW�8cWcW�9�:cWycWcW�<�=�M�>�K�?cWcW�@�A�H�B�E�C�DcW��ygh�F�G�um�cWx��IcW�JcW$$�f�LcWcW$$�N�^�O�XcW�PcW�Q�R�U�S�TcW\��7��V�W�y�]�4P�Y�]cW�Z�[cW�\cWcW)�$$cW�_�e�`�acW�f$$�bcW�ccW�d|cW�f$$cW�g�hӴ�iӴӴgh�kcW�lcW�mcW�n�w�o�s�p�r�q$$$$cW$$cW�t$$�u�v$$cWcW$$�x���y�{�z$$cW$$�|cW$$�}�~cW�cWv�cW��cW��cW��cW��cW��cWghcW��@��@b�@������@��@d@��@��@p�@��������������@��@b�@��@��@N@������@��@g4@��@��@b�@����������@��@`�@��@��@b�@������@��@L�@��@��@e�@������������������@��@g_@��@��@lx@������@��@d{@��@��@M@����������@��@d@��@��@d@������@��@cW@��@��@c�@��������������@��@b�@��@��@xv@������@��@d@��@��@xv@����������@��@L�@��@��@N@������@��@c�@��@��@`�@���4����������������@��@ak@��@��@`�@������@��@L�@��@��@cW@�����@�@b�@�@�@d@�	��
@�@d@�
@�@c�@��"�����@�@b�@�@�@b�@���@�@�@�@�@ak@� @�!@N@�#�*�$�'�%@�&@d@�(@�)@j�@�+�.�,@�-@M�@�/@�0@�1@�2@�3@M@�5�T�6�E�7�>�8�;�9@�:@ty@�<@�=@xv@�?�B�@@�A@i�@�C@�D@`�@�F�M�G�J�H@�I@az@�K@�L@`�@�N�Q�O@�P@L�@�R@�S@`�@�U�d�V�]�W�Z�X@�Y@s8@�[@�\@b�@�^�a�_@�`@N@�b@�c@xv@�e���f���g@�h@�i@�jd�kd�ld�md�nd�od�pd�qd�rdd�s�td�ud�vd�wd�xd�yd�zd�{d�|d�}d�~d�d��d��d��d��d��d��d��d��d��d��d��d��ddn���@��@d{@������@��@cW@��@��@�,@���d�����������������������������@��@M�@��@��@`�@������@��@d{@��@��@w@����������@��@N@��@��@b�@������@��@N@��@��@M@��������������@��@`�@��@��@c�@������@��@`�@��@��@`�@����������@��@aN@��@��@az@������@��@b�@��@��@`�@������������������@��@L�@��@��@b�@������@��@`�@��@��@b�@����������@��@g4@��@��@`�@������@��@b�@��@��@d@�����������@��@��@�@�@iM@�@�@M@���@�@�	@�
@�@N@�
@�@d@�����@�@`�@�@�@N@���@�@e@�@�@az@��a� �?�!�0�"�)�#�&�$@�%@`�@�'@�(@|�@�*�-�+@�,@d@�.@�/@`�@�1�8�2�5�3@�4@`�@�6@�7@d@�9�<�:@�;@c�@�=@�>@N@�@�O�A�H�B�E�C@�D@N@�F@�G@c�@�I�L�J@�K@L@�M@�N@N@�P�W�Q�T�R@�S@M@�U@�V@N@�X�[�Y@�Z@d@�\@�]@�^@�_N;Q��`Q�N�b���c�r�d�k�e�h�f@�g@`�@�i@�j@`�@�l�o�m@�n@d@�p@�q@b�@�s���t���u@�v@�w@�xd�yd���z�{d�|d�}���~���d��������b���J��dsuc�����d��d��q�o���dd��&nd��d������d��dm�dd��d���Qd��@��@b�@������@��@p�@��@��@lx@��������������@��@`�@��@��@n�@������@��@��@��@��@`�@��@��@L�@����������@��@d@��@��@d@������@��@e�@��@��@b�@�������������������������@��@l@��@��@l�@������@��@cW@��@��@`�@����������@��@ku@��@��@`�@������@��@`�@��@��@��@��@��@d@��������������@��@d@��@��@b�@������@��@ku@��@��@�,@���������@��@li@��@��@��@��@��@�G@���@�@`�@�@�@d@��E�	�6�
����@�
@L@�@�@`�@��3�@�@�@l�l�l�l�l�l�l���(�l�l� l�!l�"l�#l�$ll�%l�&l�'�ll�)l�*l�+l�,l�-l�.l�/l�0�1l�2ll��4@�5@�b@�7�>�8�;�9@�:@L�@�<@�=@iM@�?�B�@@�A@nW@�C@�D@lx@�F���G���H���I@�J@�K@�L���M�^lx�N�Olxlx�Plx�Qlx�R�Slx�Tlxlx�U�Vlx�Wlx�Xlxlx�Y�Zlx�[lx�\lx�]lxdNlx�_lx�`lx�alx�blx�clx�dlx�elx�flx�glx�hlx�ilx�jlx�klx�llx�mlx�n�lx�o�plx�qlx�rlxlx�s�tlxlx�u�vlx�wlxlx�x�ylxlx�zlx�{lx�|lx�}�~lx�lx��lx��lx��lx��lx��lx��lx����lx����lxlx����lxlx����lx��lx��lxlx���lx��lxlx����lxlx����lxlx��lx��lx��lx��lx���lx��lx��lx��lx��lx��lx��lx��lx��lx��lx��lx��lx��lx��lx��lx��lx��lxrXlx��@��@d@������@��@L�@��@��@b�@����������@��@b�@��@��@`�@������@��@��@��������U�=^VpO�����Q�Q�Q�Q���@��@y7@���������������������@��@d@��@��@b�@������@��@`�@��@��@d@����������@��@`�@��@��@lx@������@��@az@��@��@p�@������	������@��@`�@��@��@��@��M��M��M��M��g���M��M��M��M�M�M�M�M�M����M�M�MMg��
�
�@�@{
@�@�@`�@�����@�@L�@�@�@l�@���@�@ku@�@�@d@� �B�!�0�"�)�#�&�$@�%@d@�'@�(@g4@�*�-�+@�,@`�@�.@�/@K�@�1�;�2�5�3@�4@p�@�6@�7@�8@�9@�:@|@�<�?�=@�>@L�@�@@�A@w@�C�U�D�N�E�H�F@�G@d@�I@�J@�K@�LcW�McWcWgh�O�R�P@�Q@d@�S@�T@f@�V�]�W�Z�X@�Y@`�@�[@�\@`�@�^�a�_@�`@az@�b@�c@b�@�e���f�0�g���h���i�{�j�q�k�n�l@�m@`�@�o@�p@lx@�r�x�s@�t@�u@�v@�w@L�@�y@�z@b�@�|���}���~@�@d@��@��@b�@������@��@p�@��@��@c�@��������������@��@e�@��@��@L@������@��@g4@��@��@��@��N��NNQ�����������@��@m�@��@��@M@������@��@b�@��@��@cW@������������������@��@d@��@��@`�@������@��@d@��@��@`�@����������@��@g_@��@��@`�@������@��@xv@��@��@b�@��������������@��@c�@��@��@L@������@��@`�@��@��@b�@���)���&��@��@��@�����L�L�����L���L���L�L�����L���L���L�L���L�����L���L�L���L�����L���L���L���L���L���L���L���L���L���L���L���L���L���L��L��L��L��L��:L��L��L��L��L��	L��
L��L��L��
L��L��L�L���L��L��L��L�L���L��L��L��L��L��L��L��L��L��L�� L��!L��"L��#L��$L�L��%�+L��'@�(@l�@�*�-�+@�,@p�@�.@�/@c�@�1�v�2�Q�3�B�4�;�5�8�6@�7@az@�9@�:@`�@�<�?�=@�>@cW@�@@�A@`�@�C�J�D�G�E@�F@L�@�H@�I@`�@�K�N�L@�M@lx@�O@�P@H:@�R�a�S�Z�T�W�U@�V@iM@�X@�Y@`�@�[�^�\@�]@nW@�_@�`@b�@�b�o�c�f�d@�e@l@�g@�h@�i@�j�m�k�lQ�NQ�N�nNQ�N�p�s�q@�r@xv@�t@�u@L�@�w���x���y�}�z�z�{@�|@�}@�~�����������ty��ty��ty������ty��ty��tyty����ty��ty��ty��ty��ty��ty��ty�Uty��ty��ty��ty��ty��ty��ty��ty��ty��ty��tyty��ty���������������������f?e?x����-�U������vq�vq���vq���������������t��t���tyt�ty��i���ty������0���������������1����������]��������l��k�����������ty��ty��������|��<����ty�ty���"��ty��ty��ty��������|���|���������ty|�tyty����-��-ty-����-������������-��-���������������������@����@��������������������������������������{����{����{x��f?���x��f?��Uf?���f?�f?�����U�	��
��U����
�k��
���

�


#��K
#K�����m�mKmm��im�mii� �!�i��#ty�$ty�%ty�&���'�f�(�F�)�8�*�2�+�.��,�-����/�0����1���3�4�vq�5�7�6|�vq|�|�f?�9�@�:�=�;��f?�<f?����>�?����A�E�B�C����D�e?e?��G�X�H�P�I�M�J�L�Kt��t�t��U�N���U�O�U���Q�T��R�S��U�V�W-�Y�_�Z�[-���\�^�]<��<<K�`�c�a[K�bK[k�d�ezkz�g���h�w�i�o�j�n�k�lz���m�����p�t�q�s�r�����0�u��0�v�0��x���y�}�z�|��{�����~������vq��vq|���������|�f?����f?�������������������������������e?�e?����t�����t��U�����U��������������������--������<������������<K��[K[����k��kzz�������������������������0����0�����������������������������-<��������KZix����������������������������!0����������?zN����]l{������������������������������������x��ty����"1@��������������O^m|�����k��������vq�����|���|�����|�|�ty��@ty���������8������
�������������������������vq��	�|�vq|�|�f?�����
��f?�f?�����������������e?e?���*��"�����t��t�t��U� ���U�!�U���#�&��$�%��'�(�)-�+�1�,�--���.�0�/<��<<K�2�5�3[K�4K[k�6�7zkz�9�h�:�I�;�A�<�@�=�>z���?�����B�F�C�E�D�����0�G��0�H�0��J�W�K�O�L�N��M�����P�T�Q�R����S�vqvq�U�V|�vq|��X�a�Y�\�Zf?|��[|�f?�]�_�^��f?�����`����b�e��c�d����f���g���i���j�}�k�t�l�q�m�o�ne?�e?e?�pe?���r�st��t��u�x�v�Ut��wt��U�y�{�z���U�����|����~�������������������������---��-��������<��<��������������K<��<K������[K[[��[k����k����zkz���z��z��������������������������������������0�����0��������0���������3�����������������������������������������������������������������������-����-��-��-<<��<��<K������������K��K��KZZ��Z��Zi����i��i��ixx��x��x�������������������������������������������������������������������������������������������
��
��	�!�!!��0��]0]]��l]l��$����l��{l{{���{���!��� �����"�#����%�,�&�)��'�(�����*�+����-�0��.�/�����1�2����4�p�5�V�6�E�7�>�8�;��9�:�����<�=��?�B�@�Axxx�C�D��x���F�M�G�J���H�Ity��tyty�K�Lty�N�S�O�Q�P"�R1"11�T�U@1@�W�e�X�_�Y�\@�Z�[O��OO�]�^^O^�`�c^�a�bm^m�d|m|�f�k�g�i�h�|��j����l�n�m����o����q|��r|��s�v�t��u���|��w|��x�y|�|�ty�{@�|@d@�~���@��@d@��@��@`�@����������@��@q~@��@��@c�@������@��@d@��@��@M@��������������@��@L�@��@��@`�@������@��@N@��@��@b�@������@��@��@`�@������@��@c�@��@��@`�@���i����������������������@��@lx@��@��@`�@������@��@��@��@��@`�@��@��@cW@����������@��@M@��@��@b�@������@��@li@��@��@d@��������������@��@��@��lxelx��@��@c�@������@��@b�@��@��@g4@����@����@��@M@������@��@az@��@��@iM@����������������@��@b�@��@��@c�@�����@��@`�@�@�@d@�����@�@e@�	@�
@`�@���
@�@�@�@�@L�@�@�@M@��Z��S��P�@�@�@�lx�lx�lx�lx� lx�!lx�"lx�#lx�$lx�%lx�&lx�'lx�(�1&�)�*�-�+e&�,&ee�.�/c6�0c6ec6�2�D�3�9�4�5c6dN�6���7�8dNd?d?��:�@�;�=���<��ՙ�>�?ՙ~�~�rI�A{r�B�C��rXrX{r�Elx�F�J�Glx�H�I{r�H�Hlx�K�M�Lb��9�N�O����lx�Q@�R@cW@�T�W�U@�V@cW@�X@�Y@N@�[�b�\�_�]@�^@c�@�`@�a@`�@�c�f�d@�e@g_@�g@�h@N@�j���k���l�{�m�t�n�q�o@�p@N@�r@�s@`�@�u�x�v@�w@d@�y@�z@`�@�|���}���~@�@cW@��@��@M@������@��@az@��@��@`�@��������������@��@��@���c���c���c���c���c���c���c���c���c���c���c���c���c���c���c���c���c���c���c���c���c���c���c���c���c���c���c�c���c�����c�c�����c���c���c
2�c��@��@l@������@��@b�@��@��@��@��������v�kXv�gC����b�v�v�wq����������@��@`�@��@��@b�@������@��@aN@��@��@`�@���w��������������@��@`�@��@��@L�@������@��@M@��@��@d@���p������@��@L@��@��@��@N�����oN����N��N������N������N��N����NN����NN����N��NQ�N��NQ��N�N��N�N����	��NQ�N;O�N;�
Q�N;���
NQ�Q���NQ��VN�N�NN�N��N�NN�N��NN�N�N^��NN�� �FN�!OT�"�#N�$N�%NN�&�'�A�(�?�)N;�*N;N;�+N;�,�-N;�.N;�/N;�0N;�1N;�2N;�3N;�4N;�5N;�6N;�7�<�8�:N;�9N;Q��;Q�[�N;�=N;�>N;Q�\;�@Q�W�[��B�D�CN;Q�\;�EN;OqN;�GN�H�]�I�V�J�P�KNN�L�MN�NN�ONN;N�QN�RN�SN�TN�UNQ�N�WN�XNN�Y�ZN�[N�\NO�N�^�fN�_�`NN�a�bN�cN�d�eN;NR�N�g�mN�h�iN�jN�kN�lN[�N�nNNN;Q�N;�q�t�r@�s@{
@�u@�v@N@�x���y���z�}�{@�|@y7@�~@�@��@��@��@d@������@��@d@��@��@d@����������@��@`�@��@��@d@������@��@b�@��@��@p�@�������������������6����������������������@��@b�@��@��@N@������@��@��@��@��@`�@��@��@li@����������@��@az@��@��@�H@������@��@p�@��@��@e�@��������������@��@L�@��@��@e�@������@��@d@��@��@H:@����������@��@az@��@��@d@������@��@b�@��@��@M@�����������������@��@d{@��@��@M�@������@��@L�@��@��@d@���������@��@H:@��@��@��@��������wazazw���azwazw���@�@d@�@�@az@�	�'�
� ���@�
@�@@&�@&�@&��@&�@&�@&@&��@&@&��@&@&��@&�@&�@&N�@&�@�@c�@�!�$�"@�#@cW@�%@�&@lx@�(�/�)�,�*@�+@ak@�-@�.@`�@�0�3�1@�2@i�@�4@�5@M@�7�y�8�Z�9�K�:�A�;�>�<@�=@`�@�?@�@@c�@�B�E�C@�D@`�@�F@�G@�H@�I@�J@j*@�L�S�M�P�N@�O@N@�Q@�R@aN@�T�W�U@�V@N@�X@�Y@N@�[�m�\�e�]�b�^@�_@�`@�alxelx�c@�d@Q�@�f�j�g@�h@�i@M@�k@�l@c�@�n�r@�o�p@�q@aN@�s�v�t@�u@d@�w@�x@d@�z���{���|���}���~@�@b�@��@��@e�@������@��@`�@��@��@e�@����������@��@��@��@��@L�@��@��@e�@������@��@��@��@��@`�@��@��@e�@��������������@��@lx@��@��@e�@������@��@c�@��@��@i�@����������@��@`�@��@��@��@��������OEOq�_�����=W�^CU\������@��@az@��@��@N@���H���	������������������@��@d@��@��@e�@������@��@i�@��@��@M�@����������@��@L@��@��@��@��@��@b�@������@��@c�@��@��@N@��������������@��@b@��@��@e�@������@��@`�@��@��@e�@���������@��@��@�@�@L�@���@�@�H@�@�@g_@�
�/�����
��@�@d@�@�@lx@���@�@�@�@�@lx@��"���@�@N@� @�!@ՙ@�#�&�$@�%@�H@�'@�(@�)@�*�-�+�,N;�`+\�N+�.N+OE�0�<�1�8�2�5�3@�4@M�@�6@�7@lx@@�9�:@�;@lx@�=�A@�>�?@�@@lx@�B�E�C@�D@`�@�F@�G@lx@�I���J�i�K�Z�L�S�M�P�N@�O@b�@�Q@�R@lx@�T�W�U@�V@L@�X@�Y@lx@�[�b�\�_�]@�^@b�@�`@�a@lx@�c�f�d@�e@d@�g@�h@lx@�j�y�k�r�l�o�m@�n@c�@�p@�q@lx@�s�v�t@�u@M@�w@�x@lx@�z���{�~�|@�}@cW@�@��@`�@������@��@p�@��@��@N@������������������@��@`�@��@��@L@��@��@��@M@����������@��@b�@��@��@��@��@��@c�@������@��@p�@��@��@`�@��������������@��@e@��@��@��@��@��@d{@������@��@��@����e��elx��lxelx��@��@d{@����������@��@M@��@��@`�@������@��@lx@��@��@lx@�������P���������������������@��@N@��@��@e�@������@��@q~@��@��@e�@����������@��@e@��@��@e�@������@��@n�@��@��@e�@�������������@��@H:@��@��@e�@������@��@aN@�@�@H:@��
���@�@lx@�@�	@L�@���@�
@c�@�@�@M@��1��"�����@�@N@�@�@b�@���@�@g_@� @�!@b�@�#�*�$�'�%@�&@��@�(@�)@ty@�+�.�,@�-@d@�/@�0@d@�2�A�3�:�4�7�5@�6@`�@�8@�9@aN@�;�>�<@�=@d@�?@�@@`�@�B�I�C�F�D@�E@b@�G@�H@_�@�J�M�K@�L@`�@�N@�O@lx@�Q���R�t�S�e�T�[�U�X�V@�W@e�@�Y@�Z@rX@�\�b�]@�^@�_@�`@�a@N@�c@�d@d?@�f�m�g�j�h@�i@g4@�k@�l@rX@�n�q�o@�p@N@�r@�s@e@�u���v�}�w�z�x@�y@`�@�{@�|@rX@�~���@��@xv@��@��@e�@����������@��@��@��@��@`�@��@��@e�@������@��@��@iM��iM����iM��iM��iM��iM��iM��iM��iM��iM��iM��iM��iM��iMiM����iM��iM��iM�:iM��@��@e�@������������������@��@`�@��@��@e�@������@��@az@��@��@e�@����������@��@��@��@��@M@��@��@lx@������@��@O@��@��@lx@��������������@��@lx@��@��@lx@������@��@e@��@��@��@����������@��@M@��@��@lx@������@��@e@��@��@L@���k���,���
��������������@��@d@��@��@lx@������@��@c�@��@��@lx@������@�@b�@�@�@lx@��
�@�	@b�@�@�@(�@�������@�@`�@�@�@lx@���@�@L�@�@�@N@��%��"� @�!@xv@�#@�$@N@�&�)�'@�(@c�@�*@�+@N@�-�L�.�=�/�6�0�3�1@�2@L�@�4@�5@N@�7�:�8@�9@d@�;@�<@N@�>�E�?�B�@@�A@L�@�C@�D@lx@�F�I�G@�H@c�@�J@�K@lx@�M�\�N�U�O�R�P@�Q@M�@�S@�T@lx@�V�Y�W@�X@M@�Z@�[@lx@�]�d�^�a�_@�`@`�@�b@�c@lx@�e�h�f@�g@d@�i@�j@`�@�l���m���n�}�o�v�p�s�q@�r@g4@�t@�u@c�@�w�z�x@�y@c�@�{@�|@?"@�~�������@��@`�@��@��@�H@������@��@ak@��@��@e@��������������@��@d{@��@��@L@������@��@d@��@��@`�@����������@��@��@����az��azgC��azazv���@��@c�@������@��@N@��@��@Y�@������������������@��@`�@��@��@b�@������@��@`�@��@��@M@����������@��@cW@��@��@d@������@��@e@��@��@d@��������������@��@w@��@��@M�@������@��@e@��@��@L�@����������@��@d@��@��@M@������@��@�H@��@��@d@���^������w���8����������������@��@`�@��@��@L�@�����@�@p�@�@�@g4@����	�@�@d{@�
@�@`�@�
��@�@�@�@�@d@�@�@M@��&�����@�@L@�@�@d$@� �#�!@�"@N@�$@�%@�b@�'�.�(�+�)@�*@b�@�,@�-@b�@�/�2�0@�1@b�@�3@�4@�5@�6@�7@`�@�9�X�:�I�;�B�<�?�=@�>@i�@�@@�A@l@�C�F�D@�E@l@�G@�H@d@�J�Q�K�N�L@�M@d@�O@�P@`�@�R�U�S@�T@c�@�V@�W@`�@�Y�h�Z�a�[�^�\@�]@N@�_@�`@c�@�b�e�c@�d@c�@�f@�g@c�@�i�p�j�m�k@�l@d@�n@�o@`�@�q�t�r@�s@�b@�u@�v@az@�x���y���z���{���|��}@�~@d@��@��@`�@������@��@N@��@��@az@����������@��@g_@��@��@��@��@��@c�@������@��@l�@��@��@g_@��������������@��@��@��@��@��@������@��@��@��E��E��E��E��E��E��E��E��E��E��E��E��E��E��E��E������E�E��EE!T��@��@d@����������@��@N@��@��@M@������@��@d{@��@��@b�@������������������@��@`�@��@��@L@������@��@cW@��@��@az@����������@��@c�@��@��@d]@������@��@`�@��@��@i�@��������������@��@ak@��@��@`�@������@��@d@��@��@L@�����@�@L@�@�@l@���	@�
@rX@�@�
@n�@�����R��0��!�����@�@b�@�@�@iM@���@�@b�@�@� @M�@�"�)�#�&�$@�%@M@�'@�(@b�@�*�-�+@�,@az@�.@�/@iM@�1�C�2�<�3�6�4@�5@`�@�7@�8@�9@�:@�;@�I@�=�@�>@�?@M@�A@�B@j*@�D�K�E�H�F@�G@d@�I@�J@d]@�L�O�M@�N@d@�P@�Q@d@�S�r�T�c�U�\�V�Y�W@�X@L@�Z@�[@d@�]�`�^@�_@N@�a@�b@L@�d�k�e�h�f@�g@`�@�i@�j@M@�l�o�m@�n@c�@�p@�q@l@�s���t�{�u�x�v@�w@`�@�y@�z@q~@�|��}@�~@k@��@��@l@����������@��@��@d��d��d��d������d������d����dd��d��d��d��d����d��d��d�Cdd����dd����d��d��d��d��d����������dd��d��d������d����d��d��d����������d��d��drd��d��d��di#d��d��d��d��db�dd��d��d��d��d��d����dd��d��rd��@��@`�@������@��@c�@��@��@��@��@��@`�@���������������������@��@p�@��@��@iM@������@��@xv@��@��@��@��@��@M@����������@��@L@��@��@��@��b�b���������@��@�H@��@��@`�@������������@��@`�@�@�@`�@���@�@c�@�@�@�	@�
@�@N@�
����@�@d@�@�@c�@���@�@e�@�@�@cW@��;��,��%��"� @�!@d@�#@�$@c�@�&�)�'@�(@lx@�*@�+@`�@�-�4�.�1�/@�0@`�@�2@�3@L@�5�8�6@�7@`�@�9@�:@`�@�<�L�=�D�>�A�?@�@@N@�B@�C@`�@�E�H�F@�G@p�@�I@�J@�K@�����M�T�N�Q�O@�P@`�@�R@�S@`�@�U�[�V@�W@�X@�Y@�Z@az@�\@�]@c�@�_�j�`���a���b���c�r�d�k�e�h�f@�g@`�@�i@�j@d@�l�o�m@�n@M@�p@�q@b�@�s�}�t�w�u@�v@`�@�x@�y@�z@q~�{q~�|
Gq~�~���@��@iM@��@��@L�@��������������@��@`�@��@��@`�@������@��@az@��@��@`�@����������@��@b�@��@��@`�@������@��@i�@��@��@s8@������������������@��@iM@��@��@|�@������@��@d@��@��@M@����������@��@d@��@��@L@������@��@c�@��@��@`�@��������������@��@N@��@��@`�@������@��@d{@��@��@��@��@��@M@����������@��@@&@��@��@�1@������@��@L�@��@��@c�@���(���	��������������@��@`�@��@��@ak@������@��@c�@��@��@b�@���������@��@`�@��@��@��@�@�@L�@���@�@d]@�@�@g_@�
������
@�@L@�@�@b�@���@�@`�@�@�@d@��!���@�@N@�@� @cW@�"�%�#@�$@xv@�&@�'@N@�)�H�*�9�+�2�,�/�-@�.@iM@�0@�1@cW@�3�6�4@�5@b�@�7@�8@cW@�:�A�;�>�<@�=@d@�?@�@@b�@�B�E�C@�D@lx@�F@�G@d@�I�[�J�Q�K�N�L@�M@c�@�O@�P@L@�R�X�S@�T@�U@�V@�W@M@�Y@�Z@t�@�\�c�]�`�^@�_@az@�a@�b@b�@�d�g�e@�f@b�@�h@�i@b�@�k���l���m���n���o�y�p�s�q@�r@b�@�t@�u@�v@�w@�x@��@�z�}�{@�|@`�@�~@�@��@��@��@g4@����������@��@c�@��@��@N@������@��@N@��@��@`�@��������������@��@M�@��@��@L�@������@��@ �@��@��@b�@����������@��@c�@��@��@j�@������@��@iM@��@��@`�@������������������@��@d@��@��@`�@������@��@M@��@��@d@����������@��@d@��@��@q~@������@��@b�@��@��@N@��������������@��@d@��@��@M@������@��@`�@��@��@`�@����������@��@ty@��@��@`�@������@��@l@��@��@d@���u���3���$��������@��@��@��M�����M��M��M��M��MM��M��g�tOg���M�M�M�M�	M�
M���M���
�M�M�M�M��M�M�M�M�M�M�M��MM�M�M�M�M����M� �!�0M�"M�#�$MM�%�&�-�'�*�(�)M�;tOA��+�,��)�g��o�.M�/MOa���1M�2���3�{�4�8�5M�6M�7M��M�9M�:M�;M�<M�=�\�>�M�?�F�@�C�A�B�������-�D�E'�
V�����G�J�H�I�������$�K�L$3L���5�N�U�O�R�P�Q��T�~���S�Tq�)x���Z�V�Y�W�X��}q����Z�[�p&�Ò�)�]�l�^�e�_�b�`�a'�K�����c�d����Z��f�i�g�h�����˫�j�k��
e��
t�m�t�n�q�o�p�*
�&����r�s�5���&��u�x�v�w�u������y�z
������-M�|�}M�~M�MM����M��M������������MOa���������{����M��MtOM����������M��������g�����M��M��M������g���MMtO��������������������M��������M��M��M��M��g�Mg���������������������MtOM���������K�����M��M��M������������M��A�������tOL����������������0���������-
���g��MM������M��M������������A����������M������M���������������M�������q���o�������;��;�;�����������������������������������-A������)��������������M����������tO�g���g����M��M��M��M���������0��̣�<������˺�w�KM��M���M�M�MM�~����M�����
M�	g�M�g�q��;�
M�MMq�M��M�M�MM���MM��M�M�M�O��@�@n�@��!�@� @|@�"@�#@`�@�%�,�&�)�'@�(@nW@�*@�+@cW@�-�0�.@�/@|@�1@�2@`�@�4�C�5�<�6�9�7@�8@cW@�:@�;@d{@�=�@�>@�?@H:@�A@�B@az@�D�K�E�H�F@�G@ak@�I@�J@M�@�L�r�M@�N@�O@�Plx�Qlx�R�b�Slx�Tlx�Ulx�Vlx�Wlx�Xlx�Ylx�Zlx�[lx�\lx�]lx�^lx�_lx�`lx�alxrXlx�clx�dlx�elx�flx�glx�hlx�ilx�jlx�klx�llx�mlx�nlx�olx�plx�qlxrXlx�s@�t@{
@�v���w���x��y�|�z@�{@L@�}@�~@c�@������@��@c�@��@��@d@����������@��@��@��e��e��e��e��e��e��e��e��e��e��e��e��e��e��e��e����e��e�w��ee���@��@nW@������@��@`�@��@��@��@��@��@nW@��������������@��@cW@��@��@`�@������@��@az@��@��@��@��@��@q~@����������@��@e@��@��@��@������@��@az@��@��@��@n�E���n���8���~�������������������������@��@g4@��@��@d@������@��@az@��@��@M@����������@��@~�@��@��@L�@������@��@`�@��@��@`�@�������������@��@N@��@��@c�@����@�@i�@�@�@`�@��
��
�@�	@��@�@�@L�@���@�@d@�@�@�@�@�@N@�����+��$���@�@g_@�@� @�!@�"b�b��#d$b��%�(�&@�'@N@�)@�*@`�@�,�3�-�0�.@�/@N@�1@�2@q~@�4�7�5@�6@b�@�8@�9@�:@�;M�<MM�=�>���?M�@M�AM�BM�CMM�D�E�^�FM�G�M�HMM�I�JM�KMM�LM��M�N�OM�P�W�Q�T�R�SMg�Oag��U�Vg��+M���X�[�Y�Z��M�g����\�]tO*�g�M�_���`�wM�aM�b�cMM�d�eM�fM�g��h��i��j��k��l��m��n��o��p��q��r��s��t��u�vy��y���x���y�}�zM�{M�|MOaM�~MM�M����M��M������MM��M����M��MM����MM��M��M��M����MM��d�M��MM����MM��M��M��M����M��M��MM��M��M��Md���M��M��M��MM�o������MM����M����M����M����M)x��M��M��MM����M��M�;M��MM��M��M��M��M����MM��M��M����MM��M��M��M�;��������������@��@��@��l��l��l��l��l��l��l��l��l��l��l��l��l��l��l��l��lg&l��@��@�@������@��@az@��@��@`�@����������@��@g_@��@��@xv@������@��@t�@��@��@c�@���2����������������@��@`�@��@��@d@���@�@d@�@�@az@�����	@�
@ty@�@�
@q~@@��@�@�@��"�����@�@L@�@�@li@���@�@`�@� @�!@az@�#�*�$�'�%@�&@b�@�(@�)@nW@�+�.�,@�-@g&@�/@�0@�1@xv@�3�[�4�I�5�?�6�<�7@�8@�9@�:@�;@L@�=@�>@`�@�@�C�A@�B@c�@�D@�E@�F@�G@�H@N@�J�Q�K�N�L@�M@g_@�O@�P@p�@�R�U�S@�T@`�@�V@�W@�X@�Y@�Z@l@�\�n�]�d�^�a�_@�`@`�@�b@�c@c�@�e�k�f@�g@�h@�i@�j@M�@�l@�m@d@�o�w�p�s�q@�r@L�@�t@�u@�v@d@�x�{�y@�z@N@�|@�}@d{@������������������������@��@��@��@��@i�@��@��@b�@������@��@L�@��@��@M@����������@��@��@��xv��xv��xv��@��@M@������@��@cW@��@��@��@��@��@N@��������������@��@N@��@��@L�@������@��@M�@��@��@��@��@��@`�@����������@��@xv@��@��@��@��M���M���M���M���M���M���M���M���M���M���M���M���M�����M���M�����M�M���M���M���M�����M�M���M�h������@��@`�@��@��@��@��M��MM����M��M��M��M��M��M��M��M��M���
M����M��MM��M����M��M��M��M��M��M��M��MM�����M��M�M�M�M�Mq�MM�M�M�	�
M�MM�d�MM��M�MM���q�Mq�M�����v��o��P�@�@�@��?�M�M��M� M�!�"���#���$���%�\�&�+M�'M�(�)�*A�tO�����,M�-�U�.�<�/�3�0MM�1�2MM���4�9�5�7�6MM�;�8MMM�M�:�;M)��4�=M�>�R�?M�@�I�Ag��BM�CM�DM�EM�FM�GM�Hg�Mg�M�J�KM�LM�MM�NM�OM�PMM�Q�;M�SMM�Tg�MM�V�WM�XMM�Y�Z�[tOM�����]M�^�}�_�p�`�eM�a�bM�cM�dMtOM�f�m�g�jM�h�iMMtO�kM�lMtOM�nM�oM��M�q�xM�r�sM�t�v�uM��M�wMM���yMM�zM�{�|M��M�~��M���MM��M��������M����M��A�M��MM����M��M��M��MM����M��M��M������M��MM����M��M��M��MM������M��MtO��MM�J��������M��M��M����M������������M������M��M�;��MM��M��M����M��MMtOM����MM��M����M��M������M������M��M�M��MM��M)���)x����������MM)�M��Mg���MM��M�������M��M��M������������������������M��M)���������*�M��MM��M��������������MtO���+��Mg�M������������M)xy�tO��M�4M���������J��A�g���M��M����������������A�d��M�M������M����M��M����MM��M�M�M�MM��M�M�MM�	�
M�M�M�
M�M�M�M�M�M�M�M�M�M�M�M��M�M�M�M�M�M�M� M�!M�"M�#�4�$�/�%�*�&�(�'MMg��)M�M�+�-�,M)xMM�.Mq��0MM�1�2�3M��MM��5MM�6�7�9M�8q�M�:M�;M�<M�=M�;�>�O�;M�@M�A�B�I�C�F�D�Eg�y��Jg��G�HtO�q��;�J�M�K�LM�o�����N�OdM������Q@�R@�S@�TM�UMM�V�WM�XM�YM�ZM�[M�\M�]M�^M�_M�`M�a�fM�bM�c�dM�eMM�;�g�k�hMM�iM�jM�;M�lM�m�nMM�;�p�s�q@�r@`�@�t@�u@`�@�w�~�x�{�y@�z@`�@�|@�}@y7@�����@��@��@��@��@`�@��@��@��@��@��@M�@��������������@��@lx@��@��@e�@������@��@c�@��@��@li@����������@��@M@��@��@��@��@��@M�@������@��@L@��@��@g4@����������������������@��@L�@��@��@nW@������@��@b�@��@��@cW@����������@��@cW@��@��@L@������@��@az@��@��@��@��@��@d@��������������@��@M@��@��@H:@������@��@c�@��@��@e�@����������@��@lx@��@��@li@������@��@��@��@��@cW@��@��@li@����������������@��@b�@��@��@L�@�����@�@L�@�@�@�e@����	�@�@b�@�
@�@b�@�
��@�@�@�@�@M@�@�@`�@��)�����@�@lx@�@�@`�@� �&�!@�"@�#@�$@�%@c�@�'@�(@i�@�*�1�+�.�,@�-@d@�/@�0@b�@�2�5�3@�4@L@�6@�7@c�@�9�G�:���;�z�<�[�=�L�>�E�?�B�@@�A@`�@�C@�D@M@�F�I�G@�H@c�@�J@�K@M@�M�T�N�Q�O@�P@d{@�R@�S@c�@�U�X�V@�W@b�@�Y@�Z@c�@�\�k�]�d�^�a�_@�`@lx@�b@�c@L@�e�h�f@�g@`�@�i@�j@L�@�l�s�m�p�n@�o@N@�q@�r@M@�t�w�u@�v@`�@�x@�y@b�@�{���|���}���~���@��@b�@��@��@c�@������@��@`�@��@��@d@����������@��@c�@��@��@c�@������@��@cW@��@��@��@��@��@nW@��������������@��@`�@��@��@M�@������@��@l�@��@��@n�@����������@��@c�@��@��@`�@������@��@i�@��@��@d@���������������������@��@��@��@��@L�@��@��@`�@������@��@�b@��@��@m�@����������@��@c�@��@��@az@������@��@M@��@��@c�@��������������@��@i�@��@��@cW@������@��@lx@��@��@l�@����������@��@d@��@��@��@��@��@p�@������@��@`�@�@�@d{@��%������	�@�@lx@�
@�@c�@�
��@�@cW@�@�@c�@�����@�@nW@�@�@�@�@�@L�@��"� @�!@�F@�#@�$@c�@�&�8�'�1�(�+�)@�*@`�@�,@�-@�.@�/@�0@N@�2�5�3@�4@xv@�6@�7@H:@�9�@�:�=�;@�<@M�@�>@�?@d@�A�D�B@�C@g_@�E@�F@g4@�H���I���J�l�K�]�L�V�M�P�N@�O@L@�Q@�R@�S@�T@�U@g_@�W�Z�X@�Y@L�@�[@�\@L�@�^�e�_�b�`@�a@L�@�c@�d@xv@�f�i�g@�h@{
@�j@�k@y7@�m���n���o�r�p@�q@`�@�s@�t@�u@�v|�w||�x�y|�z|�{|�||�}|�~|�|��||����|��|��|��||����|||�������@��@M@��@��@d@����������@��@��@��@��@`�@��@��@d@������@��@`�@��@��@`�@������������������@��@lx@��@��@`�@������@��@xv@��@��@b�@����������@��@d@��@��@��@��@��@d{@������@��@N@��@��@lx@��������������@��@`�@��@��@l@������@��@��@��@��@N@��@��@nW@����������@��@c�@��@��@`�@������@��@xv@��@��@L�@���,���
��������������@��@`�@��@��@`�@������@��@��@��@��@z�@���������@��@c�@��@��@�@�@�@w�@���@�@��@�@�	@�
@�cW�cW�cW�������@�@N@�@�@i�@���@�@d@�@�@g4@��%��"� @�!@b�@�#@�$@M@�&�)�'@�(@l�@�*@�+@N@�-�L�.�=�/�6�0�3�1@�2@�w@�4@�5@N@�7�:�8@�9@b�@�;@�<@N@�>�E�?�B�@@�A@N@�C@�D@M@�F�I�G@�H@c�@�J@�K@M@�M�_�N�U�O�R�P@�Q@d@�S@�T@M@�V�Y�W@�X@N@�Z@�[@�\@�]@�^@b�@�`�g�a�d�b@�c@c�@�e@�f@b�@�h�k�i@�j@ՙ@�l@�m@c�@�o�%�p���q���r���s���t���u��v�|�w@�x@�y@�z@�{@d@�}@�~@iM@������@��@b�@��@��@n�@����������@��@d{@��@��@M�@������@��@nW@��@��@��@��@��@L�@��������������@��@N@��@��@d{@������@��@d@��@��@`�@����������@��@ak@��@��@xv@������@��@nW@��@��@az@������������������@��@�@��@��@ty@������@��@N@��@��@c�@����������@��@d@��@��@L�@������@��@b�@��@��@p�@��������������@��@d@��@��@g4@������@��@L@��@��@ak@����������@��@ty@��@��@cW@������@��@c�@��@��@iM@���X���������������@��@cW@��@�@gn@���@�@`�@�@�@g_@�	��
�
�@�@`�@�@�@c�@���@�@K�@�@�@b�@��F��#�� �@�@�@�@�@d{@�!@�"@d@�$�C�%@�&@�'@�(d�)d�*�2�+d�,d�-dd�.�/d�0d�1ddm��3d�4d�5dd�6�7d�8dd�9d�:�;d�<dd�=d�>�?�@o�m��Ad�Bdo����D@�E@M@�G�Q�H�K�I@�J@c�@�L@�M@�N@�O@�P@c�@�R�U�S@�T@H:@�V@�W@iM@�Y���Z�p�[�b�\�_�]@�^@�H@�`@�a@b�@�c�m�d@�e@�f@b��gb��hb��i�jb��kb��lb�d$b��n@�o@`�@�q�x�r�u�s@�t@cW@�v@�w@M@�y��z@�{@�|@�}@�~@N@��@��@��@m���m�����m���m���m�������������������m���m���m��������!m��!��m�m�Wp����m�����m���m���m��!m���m���m���m���m��!m���m���m�m�����m���m���m�#Vm���m�m�����m�m�����m���m���m��m���m���m���m���m���m���m���m���m�m�Wp��������������@��@L�@��@��@��@��@��@�b@������@��@��@��@��@b�@��@��@��@��@��@`�@����������@��@c�@��@��@H:@������@��@b�@��@��@��@��@��@p�@���{���-�����������������@��@b�@��@��@��@��@��@g4@������@��@i�@��@��@L�@���������@��@��@��@M�@��@�@L@���@�@c�@�@�@�@�	@�
@L�@���
����@�@lx@�@�@�@�@�@xv@���@�@e�@�@�@`�@��&� �#�!@�"@ty@�$@�%@`�@�'�*�(@�)@iM@�+@�,@L�@�.�P�/�>�0�7�1�4�2@�3@`�@�5@�6@N@�8�;�9@�:@�@�<@�=@L�@�?�F�@�C�A@�B@e�@�D@�E@`�@�G�J�H@�I@iM@�K@�L@�M@�N@�O@cW@�Q�c�R�Y�S�V�T@�U@d@�W@�X@iM@�Z�]�[@�\@N@�^@�_@�`@�a@�b@L�@�d�n�e�h�f@�g@az@�i@�j@�k@�l@�m@M�@�o�u�p@�q@�r@�s@�t@K�@�v@�w@�x@�y@�z@xv@�|���}���~�����������@��@az@��@��@d{@������@��@K�@��@��@`�@����������@��@az@��@��@b@������@��@��@��@N@��@��@ՙ@��������������@��@`�@��@��@lx@������@��@b�@��@��@lx@����������@��@M@��@��@��@���������dN�.9��d?~�~�������@��@b�@��@��@N@������������������@��@`�@��@��@N@������@��@aN@��@��@N@����������@��@M@��@��@lx@������@��@`�@��@��@N@��������������@��@L@��@��@lx@������@��@`�@��@��@lx@��������@��@��@��M��M��M��M��M��M��M�M�M�M�M�M�M�M�M�M�	M�
M�M�y��
y��y��y��y��y�y���y��y�y���y�y���y�y���y�y��k�@�@dN@��"� @�!@`�@�#@�$@��@�&Û�'��(�}�)�L�*�9�+�2�,�/�-@�.@@�0@�1@dN@�3�6�4@�5@c�@�7@�8@lx@�:�A�;�>�<@�=@b�@�?@�@@lx@�B�E�C@�D@H:@�F@�G@�H@�Ie�J�Kՙ��be�M�\�N�U�O�R�P@�Q@lx@�S@�T@lx@�V�Y�W@�X@d@�Z@�[@d@�]�d�^�a�_@�`@`�@�b@�c@b�@�e�o�f@�g@�h@�i�l�j�kN}ENQ��m�nQ��V_FOT�p@�q@�r@li�sq��tli�u�vli�wli�xli�yli�zli�{li�|liq�li�~���³€¬©‚@ƒ@„@…—†cWcW‡ˆcW‰cWŠcW‹cWŒcWcWŽcWcWcW‘cWcW’“cW”cW•cW–cW��u˜cW™cWšcW›cWœcWcWžcWŸcW cWcW¡¢cW£cW¤cW¥cW¦cWcW§¨cW$$cWª@«@ՙ@­°®@¯@e�@±@²@lx@´»µ¸¶@·@`�@¹@º@e@¼��½@¾@¿@L��L����L���o���o���o���o���o���o���o���o���o���o���o���o�o���o���o���o�����o���o���o���o���o���o���o���o���o���o���o���o�o���o���o���o��<��@��@lx@�������������@��@lx@��@��@&@������@��@c�@��@��@ՙ@�����@�@d@�@�@b@���@�@M@�@�@��@��W��+�����	��
@�@K�@�
@�@�@����lxeed?lx�lxe���@�@cW@�@�@�@��$��!�@� @c�@�"@�#@e@�%�(�&@�'@j�@�)@�*@lx@�,�H�-�>�.�8�/@�0@�1@�2�5�3�4!beO*��6�7!������H�9@�:@�;@�<lxlx�=elx�?�E�@@�A@�B@�Cm���D+rm��F@�G@L�@�I�P�J�M�K@�L@c�@�N@�O@d@�Q�T�R@�S@{
@�U@�V@d@�X�z�Y�k�Z�d�[�^�\@�]@lx@�_@�`@�a@�b@�c@N@�e�h�f@�g@|@�i@�j@N@�l�s�m�p�n@�o@c�@�q@�r@iM@�t�w�u@�v@d@�x@�y@�@�{Ê�|Ã�}À�~@�@�v@Á@Â@`�@ÄÇÅ@Æ@d@È@É@c�@ËÒÌÏÍ@Î@d{@Ð@Ñ@N@ÓÖÔ@Õ@d@×@Ø@Ù@Ú@p�@Ü�*Ý��Þ�ßñàçáäâ@ã@lx@å@æ@L@èëé@ê@g4@ì@í@î@ï@ð@cW@òùóöô@õ@d@÷@ø@d@úýû@ü@b�@þ@ÿ@iM@�������������@��@L@��@��@��@��@��@d@������@��@b�@��@��@M@����������@��@d@��@��@N@������@��@e�@��@��@`�@����������������@��@�@��@��@��@��@��@��@������@��@e�@��@�@d{@�����@�@�@�@�@b�@�@�@p�@���@�@e�@�@�@b�@�	��
����@�
@`�@�@�@d@���@�@e�@�@�@b�@��#�� �@�@�@�@�@M@�!@�"@g_@�$�'�%@�&@e�@�(@�)@d@�+�j�,�K�-�<�.�5�/�2�0@�1@N@�3@�4@c�@�6�9�7@�8@az@�:@�;@d@�=�D�>�A�?@�@@c�@�B@�C@L@�E�H�F@�G@e�@�I@�J@e�@�L�[�M�T�N�Q�O@�P@`�@�R@�S@d@�U�X�V@�W@e�@�Y@�Z@M@�\�c�]�`�^@�_@b�@�a@�b@e�@�d�g�e@�f@e�@�h@�i@e�@�kĊ�l�{�m�t�n�q�o@�p@lx@�r@�s@e�@�u�x�v@�w@L�@�y@�z@e�@�|ă�}Ā�~@�@cW@ā@Ă@e�@Ąćą@Ć@ku@Ĉ@ĉ@q~@ċĚČēčĐĎ@ď@M@đ@Ē@L�@Ĕėĕ@Ė@e�@Ę@ę@xv@ěĥĜğĝ@Ğ@d@Ġ@ġ@Ģ@ģ@Ĥ@N@Ħĩħ@Ĩ@b�@Ī@ī@t�@ĭ@Į!�į��İ��ı�(IJʌij�Ĵƶĵ�1Ķ�ķ��ĸ��Ĺ�ĺĽĻ@ļ@c�@ľ@Ŀ@N@�����@��@b�@��@��@L@����������@��@��@��@��@��@d@������@��@n�@��@��@d@��������������@��@��@��@��@d@��@��@xg@������@��@`�@��@��@`�@����������@��@L@��@��@M@�����@�@d@�@�@ty@����
�����@�@�@�@�@c�@�@�@d@��
�@�	@i#@�@�@li@�����@�@�@�az�az�az��V��7��(��!����azjv�kX�� b�w�w�t��"�%�#�$v�gC�;�"�&�'S��T4)�)�0�*�-�+�,TC���az�.�/�}��SQ���1�4�2�3wF�B��V��5�6T%S45�8�G�9�@�:�=�;�<�X�����>�?S��T��A�D�B�CeJ����E�Fazaz��H�O�I�L�J�KS�az?Uaz�M�N8S�v���P�S�Q�RJ�T�,�T�US�R7J��y�W�v�X�g�Y�`�Z�]�[�\up����az�^�_��Z�K�s�a�d�b�cu�u�V�p�e�fv�v��0���h�o�i�l�j�k�
v�����m�n�j~v���p�s�q�r�
�����t�u�1w8{����wņ�x��y�|�z�{t���+�W�}�~�wwazv�ŀŃŁł��wq��ńŅ��Jw���ŇŎňŋʼnŊ��w*<�iŌōa���M�"ŏŒŐő�wckX�"œŔb�����Ŗ��ŗŵŘŧřŠŚŝśŜv�v����Şş�[�RT�šŤŢţ����?gQťŦw�wU��?ŨůũŬŪūaz��-��ŭŮwubw�^ŰųűŲgCazaz�azŴv���Ŷ��ŷžŸŻŹź�Laz�bżŽaz�&SC�4ſ�����w���
az��az�>������������azmazjaz��azt���������az��az������azjazw����������������������jjw�������������������F���azaz��jaz����������az�azaz��jazaz��az��waz����������������azv�b�j��S�jaz����azjv�b������j��az�jv�b���j�b�jj�jb��@�@b�@��	�@�@b�@�
@�@d@�
�"�����@�@c�@�@�@�@�`��`�`�����@�@�@�@�@�I@� @�!@L�@�#�*�$�'�%@�&@y7@�(@�)@q�@�+�.�,@�-@L�@�/@�0@M@�2�t�3�R�4�C�5�<�6�9�7@�8@t�@�:@�;@�@�=�@�>@�?@b�@�A@�B@li@�D�K�E�H�F@�G@b�@�I@�J@�,@�L�O�M@�N@c�@�P@�Q@��@�S�e�T�[�U�X�V@�W@c�@�Y@�Z@cW@�\�b�]@�^@�_@�`@�a@b�@�c@�d@li@�f�m�g�j�h@�i@L�@�k@�l@h�@�n�q�o@�p@d@�r@�s@li@�uƔ�vƅ�w�~�x�{�y@�z@`�@�|@�}@li@�Ƃƀ@Ɓ@��@ƃ@Ƅ@q~@ƆƍƇƊƈ@Ɖ@M@Ƌ@ƌ@g4@ƎƑƏ@Ɛ@d{@ƒ@Ɠ@Л@ƕƤƖƝƗƚƘ@ƙ@c�@ƛ@Ɯ@cW@ƞơƟ@Ơ@aN@Ƣ@ƣ@d@ƥƬƦƩƧ@ƨ@L�@ƪ@ƫ@�R@ƭƳƮ@Ư@ư@Ʊ@Ʋ@M�@ƴ@Ƶ@li@Ʒ�BƸ�ƹ��ƺ��ƻ��Ƽƿƽ@ƾ@g4@�@�@��@��@��@b�@������@��@L�@��@��@��@M�@����������@��@rf@��@��@az@������@��@��@��@d@��@��@��@��@��@M�@��������������@��@t�@��@��@`�@������@��@`�@��@��@li@��������@�@y7@�@�@d@���@�@cW@�@�@�@�@�@L�@��#����
��
�@�	@`�@�@�@N@���@�@aN@�@�@gn@�����@�@L@�@�@L@�� �@�@j*@�!@�"@L�@�$�3�%�,�&�)�'@�(@t�@�*@�+@cW@�-�0�.@�/@M@�1@�2@e�@�4�;�5�8�6@�7@t�@�9@�:@g_@�<�?�=@�>@L�@�@@�A@��@�Cǂ�D�c�E�T�F�M�G�J�H@�I@L�@�K@�L@L@�N�Q�O@�P@d@�R@�S@b�@�U�_�V�Y�W@�X@y7@�Z@�[@�\@�]@�^@L�@�`@�a@�b@d@�d�s�e�l�f�i�g@�h@b�@�j@�k@d@�m�p�n@�o@xv@�q@�r@cW@�t�{�u�x�v@�w@y7@�y@�z@b�@�|��}@�~@nW@ǀ@ǁ@xv@ǃǨDŽǖDžǏdžljLJ@Lj@p�@NJ@Nj@nj@Ǎ@ǎ@`�@ǐǓǑ@ǒ@u�@ǔ@Ǖ@az@ǗǡǘǛǙ@ǚ@xv@ǜ@ǝ@Ǟ@ǟ@Ǡ@M@Ǣǥǣ@Ǥ@N@Ǧ@ǧ@N@ǩǻǪǴǫDZǬ@ǭ@Ǯ@ǯ@ǰ@g4@Dz@dz@`�@ǵǸǶ@Ƿ@y7@ǹ@Ǻ@c�@Ǽ��ǽ��Ǿ@ǿ@�@�@�X@��@��@d@������@��@ty@��@��@��@��l���l���l���l���l���l���l���l���l���l���l���l���l���l����������������
�l�������������������������������������������������
�������u��y������"z���l���u�l��l���
��}cl��ɇ�ȋ��I��$�������@�@m�@�	@�
@b�@���
@�@N@�@�@p�@�����@�@�@�@�@`�@�@�@d@��!�@� @d@�"@�#@z�@�%�7�&�0�'�*�(@�)@b�@�+@�,@�-@�.@�/@M@�1�4�2@�3@L@�5@�6@L@�8�?�9�<�:@�;@d@�=@�>@c�@�@�C�A@�B@N@�D@�E@�F@�G@�H@M@�J�i�K�Z�L�S�M�P�N@�O@`�@�Q@�R@cW@�T�W�U@�V@e�@�X@�Y@xv@�[�b�\�_�]@�^@u�@�`@�a@M@�c�f�d@�e@|�@�g@�h@��@�j��k�u�l�o�m@�n@d@�p@�q@�r@�s@�t@L@�v�y�w@�x@g4@�z@�{@�|@�}@�~@c�@ȀȄȁ@Ȃ@ȃ@c�@ȅȈȆ@ȇ@d@ȉ@Ȋ@`�@Ȍ��ȍȲȎȣȏȖȐȓȑ@Ȓ@`�@Ȕ@ȕ@b�@ȗȝȘ@ș@Ț@ț@Ȝ@xv@Ȟ@ȟ@Ƞ@ȡ@Ȣ@g_@ȤȫȥȨȦ@ȧ@N@ȩ@Ȫ@N@Ȭȯȭ@Ȯ@`�@Ȱ@ȱ@N@ȳ��ȴȻȵȸȶ@ȷ@l�@ȹ@Ⱥ@N@ȼȿȽ@Ⱦ@aN@�@�@N@����������@��@ak@��@��@N@������@��@d@��@��@N@�����������������@��@��@��@��@M@��@��@N@������@��@��@��@��@d@��@��@c�@����������@��@xv@��@��@c�@������@��@d@�@�@c�@��
�����@�@L�@�@�@�@�xv�xvxv3����@�@N@�@�	@M@�ɀ��}�
@�@�@�cW�cW��G�cW�cW�cW�cW�cW�cW�cWcW���<��'��"�cWcW�� cW�!cWcW��cW�#�$cW�%cW�&cWcW9��(�3�)�-�*cW�+cW�,cW$$cW�.cW�/�1cW�0$$cWcW�2cW���4�8cW�5�6cW�7cWcW��cW�9�:cWcW�;cW�f�=cW�>cW�?�CcW�@cW�AcW�B$$cW�DcW�EcW�FcW�WcW�HcW�IcW�JcW�KcW�LcW�McWcW�N�O�]�PcW�Q�W�RcWcW�S���T�U�����V����XcWcW�Y�ZcWcW�[�\cW$$cW�^�l�_�f�`cWcW�a�b]z�c]z�d�e]z�f]zx�cW�g�hcW�im:�jm:�km:$$m:�mcW�n]z�o�v�p�s�q]z]z�r]z$$�t]z�u]z��]z�w�z�x]z]z�y]z�f�{]z�|]z]zx��~@�@d{@ɁɄɂ@Ƀ@e�@Ʌ@Ɇ@d@Ɉ�
ɉ��ɊɩɋɚɌɓɍɐɎ@ɏ@d@ɑ@ɒ@e@ɔɗɕ@ɖ@M�@ɘ@ə@e@ɛɢɜɟɝ@ɞ@b�@ɠ@ɡ@e@ɣɦɤ@ɥ@N@ɧ@ɨ@e@ɪɹɫɲɬɯɭ@ɮ@N@ɰ@ɱ@e@ɳɶɴ@ɵ@c�@ɷ@ɸ@lx@ɺ�ɻɾɼ@ɽ@c�@ɿ@�@�v@������@��@b�@��@��@�v@������������������@��@M@��@��@lx@������@��@j*@��@��@�v@����������@��@��@��@��@L�@��@��@�v@������@��@pz@��@��@�v@������������@��@��@��@��@d@�@�@lx@���@�@az@�@�@lx@�����@�@L@�@�@lx@��
�@�	@N@�@�@lx@��M��.�������@�@L@�@�@lx@���@�@d@�@�@e�@� �'�!�$�"@�#@xv@�%@�&@e�@�(�+�)@�*@+c@�,@�-@e�@�/�>�0�7�1�4�2@�3@L�@�5@�6@e�@�8�;�9@�:@iM@�<@�=@e�@�?�F�@�C�A@�B@az@�D@�E@e�@�G�J�H@�I@c�@�K@�L@e�@�N�m�O�^�P�W�Q�T�R@�S@N@�U@�V@e�@�X�[�Y@�Z@pz@�\@�]@e�@�_�f�`�c�a@�b@L�@�d@�e@e�@�g�j�h@�i@d@�k@�l@e�@�n�}�o�v�p�s�q@�r@`�@�t@�u@N@�w�z�x@�y@li@�{@�|@c�@�~ʅ�ʂʀ@ʁ@M�@ʃ@ʄ@g4@ʆʉʇ@ʈ@h�@ʊ@ʋ@{
@ʍ��ʎ˶ʏ�&ʐ��ʑʳʒʤʓʚʔʗʕ@ʖ@d@ʘ@ʙ@d@ʛʞʜ@ʝ@
�@ʟ@ʠ@ʡ@ʢ@ʣ@d@ʥʬʦʩʧ@ʨ@b�@ʪ@ʫ@~@ʭʰʮ@ʯ@
�@ʱ@ʲ@d@ʴ��ʵʼʶʹʷ@ʸ@e�@ʺ@ʻ@`�@ʽ�ʾ@ʿ@b�@�@��@d@����������@��@e�@��@��@iM@������@��@b�@��@��@g_@������������������@��@e�@��@��@d@������@��@
�@��@��@M@����������@��@e�@��@��@b�@������@��@
�@��@��@L�@���������@�@e�@�@�@L�@���@�@�@�@�@l�@�����@�@b�@�@�	@�
@�M�MM�
�M�M�M�M�M�M�M�M�M�MM�M�����������#�@�@� @�!@�"@d@�$@�%@c�@�'�n�(�L�)�8�*�1�+�.�,@�-@�@�/@�0@M@�2�5�3@�4@L�@�6@�7@M@�9�B�:�=�;@�<@b�@�>@�?@�@@�A@q~@�C�F�D@�E@i�@�G@�H@�I@�J@�K@az@�M�_�N�U�O�R�P@�Q@lx@�S@�T@M@�V�Y�W@�X@c�@�Z@�[@�\@�]@�^@cW@�`�g�a�d�b@�c@b�@�e@�f@c�@�h�k�i@�j@b�@�l@�m@li@�oˑ�p��q�x�r�u�s@�t@e�@�v@�w@aN@�y�|�z@�{@g_@�}@�~@d@ˀˇˁ˄˂@˃@H:@˅@ˆ@nW@ˈˋˉ@ˊ@d{@ˌ@ˍ@ˎ@ˏMːMg�M˒ˡ˓˚˔˗˕@˖@lx@˘@˙@c�@˛˞˜@˝@L@˟@ˠ@d@ˢ˯ˣ˩ˤ@˥@˦@˧@˨@b�@˪@˫@ˬ@˭@ˮ@d@˰˳˱@˲@b�@˴@˵@az@˷�?˸�˹��˺��˻��˼˿˽@˾@ty@�@�@t�@������@��@b�@��@��@��@��@��@e�@����������@��@L@��@��@L�@������@��@b�@��@��@e�@��������������@��@lx@��@��@d@������@��@L@��@��@l@����������@��@d{@��@��@`�@����@�@�@�@�@d@�@�@c�@���������@�@lx@�@�@M@���	@�
@e�@�@�
@d@�����@�@�X@�@�@c�@���@�@az@�@�@M@��0��)� �#�!@�"@e�@�$@�%@�&@�'@�(@d@�*�-�+@�,@e�@�.@�/@L�@�1�8�2�5�3@�4@�,@�6@�7@iM@�9�<�:@�;@e�@�=@�>@d@�@̃�A�`�B�Q�C�J�D�G�E@�F@�@�H@�I@N@�K�N�L@�M@e�@�O@�P@L�@�R�Y�S�V�T@�U@Q�@�W@�X@aN@�Z�]�[@�\@e�@�^@�_@c�@�a�s�b�i�c�f�d@�e@e�@�g@�h@nW@�j�p�k@�l@�m@�nN�oNYN�q@�r@L�@�t�|�u�x�v@�w@Q�@�y@�z@�{@d@�}̀�~@�@e�@́@̂@q~@̦̄̅̔̆̍̇̊̈@̉@lx@̋@̌@iM@̎̑̏@̐@N@̒@̓@b�@̜̖̙̗̕@̘@Q�@̚@̛@`�@̝̠̞@̟@L@̡@̢@̣@̤@̥@d@̧̨̼̲̩̯̪@̫@̬@̭@̮@g4@̰@̱@d@̴̳̹@̵@̶@̷N̸N[N̺@̻@`�@̽��̾�̿@�@�@��@��@��@��@��@L@������@��@N@��@��@lx@������U���������������������@��@p�@��@��@��@��@��@j*@������@��@N@��@��@iM@����������@��@�@��@��@iM@������@��@e�@��@��@b�@�������@�@e�@�@�@`�@���@�@e�@�@�@b�@����	�@�@��@�
@�@b�@�
��@�@N@�@�@li@��3��$�����@�@lx@�@�@M@��!�@� @N@�"@�#@xv@�%�,�&�)�'@�(@��@�*@�+@L�@�-�0�.@�/@N@�1@�2@d@�4�C�5�<�6�9�7@�8@e�@�:@�;@d@�=�@�>@�?@N@�A@�B@|�@�D�N�E�H�F@�G@dN@�I@�J@�K@M�LM�MMM��O�R�P@�Q@N@�S@�T@e@�V͘�W�v�X�g�Y�`�Z�]�[@�\@�@�^@�_@lx@�a�d�b@�c@e�@�e@�f@e@�h�o�i�l�j@�k@dN@�m@�n@M@�p�s�q@�r@e�@�t@�u@ak@�w͆�x��y�|�z@�{@e�@�}@�~@b�@̀̓́@͂@e�@̈́@ͅ@d@͇͎͈͉͋@͊@dN@͌@͍@g4@͏͒͐@͑@N@͓@͔@͕@͖@͗@b�@͙ͺ͚ͨ͛͜͡@͝@͞@͟@͠N�Nͥͣ͢@ͤ@g4@ͦ@ͧ@z�@ͩͰͪͭͫ@ͬ@dN@ͮ@ͯ@e@ͱʹͲ@ͳ@b�@͵@Ͷ@ͷ@͸@͹@y7@ͻ�ͼ�ͽ�;@Ϳ@e�@�@��@��@��@��@��@��N��N��N��N��N��N��N��N��N��N��N��N��N��N��N������N��N��N��N��N��N��N��N��N��N��N��N��N��N��NN;N��N��N��N��N��N��N��N��N��N��N��N��N��N��NN�N@���@�@b�@�@�@d@�����@�@�*@�@�@`�@��	�@�@b�@�
@�@L@�
Τ��Y��1�������@�@N@�@�@`�@���@�@d@�@�@`�@� �'�!�$�"@�#@�*@�%@�&@xv@�(�+�)@�*@N@�,@�-@�.@�/@�0@l@�2�G�3�=�4�7�5@�6@e�@�8@�9@�:@�;@�<@p�@�>�A�?@�@@e�@�B@�C@�D@�E@�F@d@�H�O�I�L�J@�K@�*@�M@�N@L�@�P�S�Q@�R@b�@�T@�U@�V@�W@�X@iM@�Z΂�[�s�\�i�]�f�^@�_@�`@�a�d�b�cW�Q�Q�N�e�\�]��g@�h@M�@�j�m�k@�l@b�@�n@�o@�p@�q@�r@L�@�t�{�u�x�v@�w@�*@�y@�z@w�@�|��}@�~@b�@΀@΁@N@΃Ε΄΋΅ΈΆ@·@e�@Ή@Ί@nW@ΌΒ΍@Ύ@Ώ@ΐ@Α@d@Γ@Δ@iM@ΖΝΗΚΘ@Ι@e@Λ@Μ@N@ΞΡΟ@Π@M@΢@Σ@q�@Υ��Φ��ΧθΨαΩάΪ@Ϋ@e�@έ@ή@ί@ΰ@d@βεγ@δ@e�@ζ@η@`�@ι�κνλ@μ@ؒ@ξ@ο@c�@�����@��@߫@��@��@`�@��������������@��@`�@��@��@M�@������@��@L�@��@��@gn@����������@��@ؒ@��@��@ty@������@��@��@��@��@l@���	�������������@��@e�@��@��@`�@������@��@g4@�@�@c�@�����@�@rI@�@�@d@���@�@�@�@�@c�@�@�@L@�
������
@�@e�@�@�@c�@���@�@b�@�@�@M@��!���@�@rI@�@� @c�@�"�%�#@�$@M@�&@�'@c�@�)���*ц�+�]�,ϲ�-�m�.�K�/�9�0�2�1@`�@�3�6�4@�5@d@�7@�8@d@�:�A�;�>�<@�=@n�@�?@�@@xv@�B�E�C@�D@iM@�F@�G@�H@�I@�J@~�@�L�[�M�T�N�Q�O@�P@	�@�R@�S@cW@�U�X�V@�W@g_@�Y@�Z@c�@�\�c�]�`�^@�_@b�@�a@�b@d{@�d�j�e@�f@�g@�h@�i@b�@�k@�l@cW@�nϐ�o�~�p�w�q�t�r@�s@e�@�u@�v@d@�x�{�y@�z@d@�|@�}@N@�ωπφρ@ς@σ@τ@υ@M�@χ@ψ@`�@ϊύϋ@ό@N@ώ@Ϗ@M@ϑϣϒϜϓϙϔ@ϕ@ϖ@ϗ@Ϙ@aN@Ϛ@ϛ@c�@ϝϠϞ@ϟ@d@ϡ@Ϣ@L�@ϤϫϥϨϦ@ϧ@M@ϩ@Ϫ@li@Ϭϯϭ@Ϯ@l@ϰ@ϱ@N@ϳ�ϴ��ϵ��϶ϽϷϺϸ@Ϲ@M@ϻ@ϼ@li@Ͼ�Ͽ@�@iM@��@��@g4@����������@��@N@��@��@~@������@��@cW@��@��@e�@������������@��@i�@��@��@��@��L���L���L�L���L���L���L�����L���L�L���L�����L���L���L�L�����L���L�L���L�����L���L���L���L���L��L��L��L��L��L��L��L��L��L��L��:L����@�@d]@�@�@`�@�����	@�
@c�@�@�
@�@�@�@L�@���@�@iM@�@�@g4@��;��)��"���@�@M@� @�!@|�@�#�&�$@�%@N@�'@�(@b�@�*�1�+�.�,@�-@q~@�/@�0@cW@�2�5�3@�4@�,@�6@�7@�8@�9@�:@c�@�<�N�=�D�>�A�?@�@@e�@�B@�C@`�@�E�H�F@�G@M@�I@�J@�K@�L@�M@��@�O�V�P�S�Q@�R@d@�T@�U@`�@�W�Z�X@�Y@b�@�[@�\@ak@�^���_С�`��a�p�b�i�c�f�d@�e@cW@�g@�h@d@�j�m�k@�l@N@�n@�o@b�@�q�x�r�u�s@�t@߫@�v@�w@y7@�y�|�z@�{@L�@�}@�~@d{@ЀВЁЋЂЅЃ@Є@b�@І@Ї@Ј@Љ@Њ@N@ЌЏЍ@Ў@N@А@Б@N@ГКДЗЕ@Ж@t�@И@Й@iM@ЛОМ@Н@p�@П@Р@d@Т��УиФЮХЫЦ@Ч@Ш@Щ@Ъ@l@Ь@Э@c�@Ява@б@b�@г@д@е@ж@з@d@й��к�л@м@н@о@п@d@�@��@d@������@��@`�@��@��@��@��@��@L�@��������������@��@i@��@��@d@������@��@��@b���b���b�X��@��@b�@����������@��@lx@��@��@rf@������@��@��@��@��@c�@��@��@M�@���G���'����@��@�@|�@���@�@xv@�@�@`�@�����@�@�@�g4g4��	g4�
g4�g4�g4�
g4�g4g4�g4�g4��g4�g4g4�g4����+g4g4�g4�g4�+�@�@b�@��$�@� @�!@�"@�#@L�@�%@�&@b�@�(�8�)�0�*�-�+@�,@`�@�.@�/@d@�1�5�2@�3@�4@g4@�6@�7@c�@�9�@�:�=�;@�<@L�@�>@�?@L�@�A�D�B@�C@M�@�E@�F@b�@�H�g�I�X�J�Q�K�N�L@�M@d@�O@�P@b�@�R�U�S@�T@j�@�V@�W@b�@�Y�`�Z�]�[@�\@ak@�^@�_@d@�a�d�b@�c@N@�e@�f@aN@�h�w�i�p�j�m�k@�l@M@�n@�o@d@�q�t�r@�s@M@�u@�v@`�@�x��y�|�z@�{@d@�}@�~@j*@рус@т@c�@ф@х@c�@чҮш�'щ��ъ��ыѭьѦэѣю@я@ѐ@ёM�ђM�ѓM�єM�ѕM�іM�їM�јM�љM�њM�ћM�ќM�ѝM�ўM�џM�ѠM�M�ѡѢM�M��Ѥ@ѥ@c�@ѧѪѨ@ѩ@L�@ѫ@Ѭ@`�@ѮѻѯѵѰ@ѱ@Ѳ@ѳ@Ѵ@d@Ѷ@ѷ@Ѹ@ѹ@Ѻ@`�@Ѽ�ѽ@Ѿ@ѿ@M@�@��@��@��@��@cW@��������������@��@aN@��@��@L�@������@��@N@��@��@ak@����������@��@nW@��@��@d{@������@��@d{@��@��@M@����������������@��@i�@��@��@iM@������@��@N@��@�@ty@�����@�@cW@�@�@p�@���@�@d@�@�@p�@�������	@�
@�@�@�
@M�@�@�@nW@���@�@M@�@�@c�@�� ���@�@M@�@�@g4@�!�$�"@�#@iM@�%@�&@cW@�(�k�)�I�*�:�+�3�,�0�-@�.@�/@`�@�1@�2@`�@�4�7�5@�6@e�@�8@�9@M@�;�B�<�?�=@�>@L@�@@�A@d@�C�F�D@�E@e�@�G@�H@li@�J�Y�K�R�L�O�M@�N@aN@�P@�Q@pz@�S�V�T@�U@b�@�W@�X@g4@�Z�d�[�^�\@�]@iM@�_@�`@�a@�b@�c@d@�e�h�f@�g@b�@�i@�j@aN@�lҎ�m��n�x�o�u�p@�q@�r@�s@�t@c�@�v@�w@az@�y�|�z@�{@j�@�}@�~@`�@Ҁ҇ҁ҄҂@҃@b�@҅@҆@d@҈ҋ҉@Ҋ@b�@Ҍ@ҍ@d@ҏҟҐҘґҕҒ@ғ@Ҕ@d@Җ@җ@c�@ҙҜҚ@қ@g4@ҝ@Ҟ@L@ҠҧҡҤҢ@ң@b�@ҥ@Ҧ@`�@Ҩҫҩ@Ҫ@c�@Ҭ@ҭ@d@ү�=Ұ�ұ��Ҳ��ҳҽҴҷҵ@Ҷ@l�@Ҹ@ҹ@Һ@һ@Ҽ@�+@Ҿ�ҿ@�@aN@��@��@��@��@��@ku@����������@��@b�@��@��@l�@������@��@��@��@��@L@��@��@aN@��������������@��@d{@��@��@iM@������@��@ty@��@��@L�@����������@��@b�@��@��@g4@�����@��@b�@�@�@�@�@�@M@���������@�@M@�@�@`�@��	�@�@�b@�
@�@L�@�
����@�@b�@�@�@#@���@�@d@�@�@N@��.��$��!�@� @g_@�"@�#@az@�%�+�&@�'@�(@�)@�*@d@�,@�-@w�@�/�6�0�3�1@�2@c�@�4@�5@`�@�7�:�8@�9@ku@�;@�<@b�@�>ӌ�?�d�@�U�A�H�B�E�C@�D@iM@�F@�G@b�@�I�O�J@�K@�L@�M@�N@N@�P@�Q@�R@�S@�T@L�@�V�]�W�Z�X@�Y@ak@�[@�\@N@�^�a�_@�`@t�@�b@�c@N@�e�z�f�p�g�m�h@�i@�j@�k@�l@M�@�n@�o@L�@�q�t�r@�s@`�@�u@�v@�w@�x@�y@ak@�{ӂ�|��}@�~@N@Ӏ@Ӂ@`�@Ӄӆӄ@Ӆ@`�@Ӈ@ӈ@Ӊ@ӊ@Ӌ@xv@ӍӬӎӝӏӖӐӓӑ@Ӓ@`�@Ӕ@ӕ@H:@ӗӚӘ@ә@L�@ӛ@Ӝ@M@ӞӥӟӢӠ@ӡ@b�@ӣ@Ӥ@g4@Ӧөӧ@Ө@`�@Ӫ@ӫ@li@ӭӿӮӸӯӲӰ@ӱ@`�@ӳ@Ӵ@ӵ@Ӷ@ӷ@M@ӹӼӺ@ӻ@�H@ӽ@Ӿ@d@��������@��@l@��@��@`�@������@��@d{@��@��@L�@���o���Z���r��������������������@��@c�@��@��@��@��@��@cW@������@��@N@��@��@b�@����������@��@��@��@��@`�@��@��@�,@�����@��@aN@�@�@iM@�������@�@y7@�@�@�@�@�@N@���@�@�@�	@�
@L@�@�
@N@�����@�@l@�@�@b�@���@�@N@�@�@M�@��P��.� �'�!�$�"@�#@li@�%@�&@c�@�(�+�)@�*@c�@�,@�-@iM@�/�6�0�3�1@�2@L�@�4@�5@xv@�7�:�8@�9@L�@�;@�<@�=@�>d�?dd�@d�Ad�Bd�Cd�D�Ed�Fd�Gd�Hd�Id�Jd�Kdd�L�Mdd�Nd�O�Dd�Q�c�R�\�S�V�T@�U@M�@�W@�X@�Y@�Z@�[@az@�]�`�^@�_@cW@�a@�b@`�@�d�k�e�h�f@�g@L�@�i@�j@M@�l�o�m@�n@d@�p@�q@M@�s��t��uԵ�vԮ�wԫ�x@�y@�z@�{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�q~q~Ԟq~ԟԠq~q~ԡq~Ԣq~ԣq~Ԥq~ԥq~Ԧq~ԧq~Ԩԩq~Ԫq~w�q~Ԭ@ԭ@N@ԯԲ԰@Ա@M@Գ@Դ@M@Զ��ԷԺԸ@Թ@N@Ի@Լ@Խ@Ծl�Կ������l���l���l���l���l���l���l�l�����l���l���l���l���l���l���l��l���l���l���l���l���l���l���l�l�����l���l���l���l���l���l���l�"l���l���l���l���l���l���l���l���l�l�����l���l���l���l���l���l���l��l������@��@b�@�@�@M@�������@�@�@�@�@M@�@�@�@�@�@N@���	@�
@d@�@�
@M@�����@�@aN@�@�@M@���@�@M@�@�@b�@��5��� ���!�$�"@�#@li@�%@�&@�'@�(�s�)cW�*�g�+�\�,cW�-cW�.cW�/cW�0cW�1�BcW�2�3�<�4�6cW�5��$�7cWcW�8�9cW�:cW�;cWcW$$�=�@�>cWcW�?�m$$cW�A�cW�CcW�DcW�EcW�F�GcW9�cW�H�IcW�JcW�KcWcW�L�McW�NcW�OcW�PcW�QcW�RcW�ScW�TcW�UcWcW�V�WcW�XcWcW�YcW�ZcW�[$$cWcW�]�^cW�_cWcW�`cW�a�bcW�ccW�dcWcW�e�fcW�cW�hcW�icW�jcW�kcW�lcW�mcW�ncWcW�o�pcW�qcW�rcW9�cW�tխ�uՔ�vcW�wcW�xcW�ycW�zcW�{cW�|ՓcW�}�~ՁcW�cWՀcW$$ՂՊcWՃcWՄՅՇՆcW$cWՈcWcWՉcW$ՋcWcWՌՍ$$ՎՑՏՐ$$�fcWx�Ւ$$��$$9�cWՕcWՖcW՗cW՘cWՙcW՚cW՛cWcW՜՝cW՞cWcW՟ՠcWաըբեգդ#scW�f$$զէ$$ghcWx�թիcWժ4P�kcWլcW��ծտկcWհcWձcWղcWճcWմcWյcWcWնշcWոcWչվպ9�ջ�u�uռ�uս$$�ucWӴ�cW�cW��cW��cW��cW��cWcW����cW��cW��cW9�cW������@��@`�@��@��@��@���
����������cW��cW��cW��cW��cW��cW��cWcW����cWcW����cW��cW��cW��cW�f���fcWcW��cW����cW��cWcW��cW����cW��cWcW��cW����cW��cW���������cW�cW�cW�cW��cW�cWcW�cW��cW�cW���cWcW�cW��cW�cW���^cWcW�^cW��cW�	cWcW�
�cWcW��cW�cWcW��cW�cWcW��cWcW��cWcW��cW�cW�cW�cWcW��cW�cW�cW�fcW� �'�!�$�"@�#@L�@�%@�&@d@�(�+�)@�*@d@�,@�-@�.@�/���0���1�����2���3���4�����6�K�7�A�8�;�9@�:@L@�<@�=@�>@�?@�@@H:@�B�E�C@�D@cW@�F@�G@�H@�I@�J@m;@�L�S�M�P�N@�O@cW@�Q@�R@b�@�T�W�U@�V@aN@�X@�Y@b�@�[���\֥�]ւ�^�m�_�f�`�c�a@�b@t�@�d@�e@d@�g�j�h@�i@ak@�k@�l@�b@�n�x�o�u�p@�q@�r@�s@�t@g4@�v@�w@c�@�y�|�z@�{@xv@�}@�~@�@ր@ց@d@փ֕ք֋օֈֆ@և@cW@։@֊@b�@֌֏֍@֎@`�@֐@֑@֒@֓@֔@~@֖֚֞֗֘@֙@d@֛@֜@֝@cW@֢֟֠@֡@cW@֣@֤@aN@֦��ֶ֧֪֨֯֩֬@֫@�,@֭@֮@cW@ְֱֳ@ֲ@M@ִ@ֵ@xv@ַ�ָ־ֹ@ֺ@ֻ@ּazazֽazv�ֿ@�@g4@������@��@M@��@��@b�@��������������@��@az@��@��@nW@������@��@p�@��@��@N@����������@��@M@��@��@g_@������@��@L�@��@��@c�@���-����������������@��@rf@��@��@xv@�����@�@��@�@�@b�@�����@�@�@�@�@d@�@�@�@���@�@d{@�	@�
@�@���
����@�@M�@�@�@�@���@�@M@�@�@�@�@�@N@��&� �#�!@�"@L�@�$@�%@L�@�'�*�(@�)@M@�+@�,@�@�.�M�/�>�0�7�1�4�2@�3@L�@�5@�6@�@�8�;�9@�:@b�@�<@�=@c�@�?�F�@�C�A@�B@M�@�D@�E@c�@�G�J�H@�I@d@�K@�L@c�@�N�`�O�V�P�S�Q@�R@A@�T@�U@c�@�W�]�X@�Y@�Z@�[@�\@N@�^@�_@c�@�a�h�b�e�c@�d@b�@�f@�g@�b@�i�l�j@�k@g4@�m@�n@d{@�p��q�3�r׽�sט�t׆�u�|�v�y�w@�x@d@�z@�{@b�@�}׃�~@�@׀@ׁ��ׂ��p���ׄ@ׅ@M@ׇב׈׋׉@׊@d@׌@׍@׎@׏@א@`�@גוד@ה@li@ז@ח@L�@י׫ךפכסל@ם@מ@ן@נ@aN@ע@ף@M�@ץרצ@ק@li@ש@ת@L@׬׶׭׳׮@ׯ@װ@ױ@ײ@N@״@׵@|�@׷׺׸@׹@d@׻@׼@d]@׾�׿����������@��@d{@��@��@��@��@��@ty@������@��@$$@��@��@c�@����������@��@L@��@��@M�@�����@��@��@��F���F���F���F����������F���F���F���F���F���F���F���F���F���F�i@����F�B�H��F���F���F���F��F��F��F��F��F��F��F��F�i@F��F��F��F��F��F��F��F��F��F��F��F��	F��
F�i@F��@�
@M@��!�����@�@ak@�@�@d@���@�@`�@�@�@�@�@� @F�@�"�)�#�&�$@�%@`�@�'@�(@M@�*�0�+@�,@�-@�.@�/@M@�1@�2@L�@�4�y�5�Z�6�K�7�D�8�>�9@�:@�;@�<@�=@z�@�?@�@@�A@�B@�C@`�@�E�H�F@�G@b�@�I@�J@b�@�L�S�M�P�N@�O@cW@�Q@�R@M@�T�W�U@�V@az@�X@�Y@g4@�[�j�\�c�]�`�^@�_@L�@�a@�b@c�@�d�g�e@�f@b�@�h@�i@li@�k�r�l�o�m@�n@`�@�p@�q@`�@�s�v�t@�u@ak@�w@�x@f@�zؙ�{؊�|؃�}؀�~@�@e�@؁@؂@g_@؄؇؅@؆@li@؈@؉@q~@؋ؒ،؏؍@؎@d@ؐ@ؑ@iM@ؓؖؔ@ؕ@li@ؗ@ؘ@L�@ؚد؛إ؜آ؝@؞@؟@ؠ@ء@d{@أ@ؤ@ty@ئةا@ب@li@ت@ث@ج@ح@خ@az@ذطرشز@س@iM@ص@ض@`�@ظػع@غ@li@ؼ@ؽ@ؾ@ؿ@�@L@���J���������������������@��@��@��@��@d@��@��@��@��@��@l�@������@��@li@��@��@M@����������@��@li@��@��@M@������@��@li@��@��@��@��@��@b�@������������@��@M@��@��@�b@���@�@li@�@�@p�@�����@�@M@�@�@M@���@�@M@�	@�
@`�@��+�
������@�@d@�@�@b�@���@�@L�@�@�@p�@��$��!�@� @d{@�"@�#@cW@�%�(�&@�'@c�@�)@�*@d@�,�;�-�4�.�1�/@�0@l@�2@�3@b�@�5�8�6@�7@L@�9@�:@c�@�<�C�=�@�>@�?@`�@�A@�B@c�@�D�G�E@�F@c�@�H@�I@L�@�Kٍ�L�k�M�\�N�U�O�R�P@�Q@N@�S@�T@i�@�V�Y�W@�X@c�@�Z@�[@g4@�]�d�^�a�_@�`@c�@�b@�c@L@�e�h�f@�g@N@�i@�j@Ԧ@�l�{�m�t�n�q�o@�p@b�@�r@�s@b�@�u�x�v@�w@l@�y@�z@d{@�|ن�}ـ�~@�@d@ف@ق@ك@ل@م@d@هيو@ى@L@ً@ٌ@d@َُِّْٰٞٗٔ@ٓ@L@ٕ@ٖ@cW@٘ٛٙ@ٚ@d@ٜ@ٝ@d@ٟ٩٠٦١@٢@٣@٤@٥@g4@٧@٨@M@٪٭٫@٬@li@ٮ@ٯ@N@ٱ��ٲټٳٹٴ@ٵ@ٶ@ٷ@ٸ@iM@ٺ@ٻ@cW@ٽ�پ@ٿ@li@�@��@c�@����������@��@`�@��@��@�b@������@��@li@��@��@c�@���z������$������^��������������������@��@��@��Ae����AeNNAe��@��@`�@������@��@li@��@��@nW@���������@��@M@��@��@N@���@�@L@�@�@M@�������@�@b�@�@�@N@��	�@�@`�@�
@�@M@�
����@�@g_@�@�@`�@���@�@d@�@�@c�@��?��/��(��"� @�!@li@�#@�$@�%@�&@�'@q~@�)�,�*@�+@c�@�-@�.@߫@�0�8�1�4�2@�3@d@�5@�6@�7@q~@�9�<�:@�;@d{@�=@�>@M@�@�O�A�H�B�E�C@�D@L�@�F@�G@b�@�I�L�J@�K@b�@�M@�N@d@�P�W�Q�T�R@�S@b�@�U@�V@N@�X�[�Y@�Z@b�@�\@�]@`�@�_ں�`ڂ�a�p�b�i�c�f�d@�e@N@�g@�h@|@�j�m�k@�l@L@�n@�o@c�@�q�x�r�u�s@�t@L�@�v@�w@c�@�y�|�z@�{@b�@�}@�~@�@ڀ@ځ@d@ڃګڄڋڅڈچ@ڇ@d@ډ@ڊ@K�@ڌڏڍ@ڎ@b�@ڐ@ڑ@ڒ@dړdڔdڕږdڗdژdڙdښdڛdڜdڝdڞdڟddڠڡڦڢdڣdڤڥdb�b�dڧdڨdکڪdi#�Cdڬڳڭڰڮ@گ@F�@ڱ@ڲ@g4@ڴڷڵ@ڶ@b�@ڸ@ڹ@b�@ڻ��ڼ��ڽ��ھ�ڿ@�@ty@��@��@N@������@��@b�@��@��@N@����������@��@��@��@��@d@��@��@N@������@��@b�@��@��@e�@��������������@��@M@��@��@N@������@��@b�@��@��@H:@���������@��@`�@��@��@b�@���@�@d{@�@�@M@����@���������@�@N@�@�@b�@�	��
@�@N@�
@�@L�@�����@�@N@�@�@}�@���@�@N@�@�@d{@��1� �'�!�$�"@�#@lx@�%@�&@d{@�(�.�)@�*@�+@�,d{�-d{�d{�/@�0@M@�2�9�3�6�4@�5@N@�7@�8@b�@�:�=�;@�<@b�@�>@�?@p�@�A�`�B�Q�C�J�D�G�E@�F@N@�H@�I@li@�K�N�L@�M@b�@�O@�P@nW@�R�Y�S�V�T@�U@lx@�W@�X@b�@�Z�]�[@�\@b�@�^@�_@b�@�a�p�b�i�c�f�d@�e@d{@�g@�h@b�@�j�m�k@�l@N@�n@�o@e�@�q�x�r�u�s@�t@N@�v@�w@lx@�y�|�z@�{@b�@�}@�~@H:@ۀۿہ۠ۂۑۃۊۄۇۅ@ۆ@c�@ۈ@ۉ@b�@ۋێی@ۍ@lx@ۏ@ې@M@ےۙۓۖ۔@ە@N@ۗ@ۘ@d$@ۚ۝ۛ@ۜ@N@۞@۟@xv@ۡ۰ۢ۩ۣۦۤ@ۥ@b�@ۧ@ۨ@b�@۪ۭ۫@۬@b�@ۮ@ۯ@N@۱۸۲۵۳@۴@d@۶@۷@N@۹ۼۺ@ۻ@`�@۽@۾@b�@���������������@��@b�@��@��@lx@������@��@H:@��@��@`�@���������@��@cW@��@��@��@��dd��������d��d��d��d��d��d��d��d��d��d��d��d��d��d��db�d��d��d��d��d��d��d��d��d��d�d�d�d�d�d�d�Qd���@�@lx@�@�@iM@�������@�@N@�	@�
@�@�@�
@d@���@�@N@�@�@c�@�����@�@b�@�@�@L@��!�@� @d@�"@�#@b�@�%�v�&ܾ�'�f�(�G�)�8�*�1�+�.�,@�-@N@�/@�0@N@�2�5�3@�4@b�@�6@�7@lx@�9�@�:�=�;@�<@`�@�>@�?@b�@�A�D�B@�C@lx@�E@�F@b�@�H�W�I�P�J�M�K@�L@ku@�N@�O@N@�Q�T�R@�S@N@�U@�V@N@�X�_�Y�\�Z@�[@`�@�]@�^@N@�`�c�a@�b@lx@�d@�e@N@�g܌�h�z�i�s�j�m�k@�l@b�@�n@�o@�p@�q@�r@N@�t�w�u@�v@lx@�x@�y@|�@�{܂�|��}@�~@li@܀@܁@b�@܃܉܄@܅@܆@܇@܈@M�@܊@܋@H:@܍ܜ܎ܕ܏ܒܐ@ܑ@l�@ܓ@ܔ@M@ܖܙܗ@ܘ@lx@ܚ@ܛ@`�@ܝܤܞܡܟ@ܠ@b�@ܢ@ܣ@`�@ܥܨܦ@ܧ@cW@ܩ@ܪ@ܫ@ܬ@ܭ@ܮ@ܯb�ܰb�ܱb�ܲb�ܳb�ܴb�ܵܺb�ܷܶb�b�ܸܹb�b��}ܻb�ܼb�ܽb�~�b�ܿ�4���������������@��@��@N@��@��@N@������@��@f@��@��@d@����������@��@`�@��@��@`�@������@��@lx@��@��@��@��M��M��M��M��M������M��M��M��M��M��M��MM��M����MM������M��M�;M�M�M���M�M�M�M��M���M��Mg����M���Mg�Mg��M�M�	M�
�ēM�M�
M�Mg�M��"�����@�@d@�@�@�@b��b��b�x����@�@d{@� @�!@ak@�#�*�$�'�%@�&@M@�(@�)@`�@�+�1�,@�-@�.@�/@�0@N@�2@�3@d{@�5�T�6�E�7�>�8�;�9@�:@i�@�<@�=@b�@�?�B�@@�A@M@�C@�D@M@�F�M�G�J�H@�I@H:@�K@�L@N@�N�Q�O@�P@b�@�R@�S@N@�U�d�V�]�W�Z�X@�Y@p�@�[@�\@d@�^�a�_@�`@`�@�b@�c@N@�e�l�f�i�g@�h@`�@�j@�k@�@�m�p�n@�o@lx@�q@�r@�s@�t@�u@d{@�w��xݷ�yݘ�z݉�{݂�|��}@�~@N@݀@݁@L�@݆݄݃@݅@b�@݇@݈@lx@݊ݑ݋ݎ݌@ݍ@L�@ݏ@ݐ@N@ݒݕݓ@ݔ@b�@ݖ@ݗ@b�@ݙݨݚݡݛݞݜ@ݝ@lx@ݟ@ݠ@lx@ݢݥݣ@ݤ@N@ݦ@ݧ@lx@ݩݰݪݭݫ@ݬ@N@ݮ@ݯ@b�@ݱݴݲ@ݳ@L�@ݵ@ݶ@e�@ݸ��ݹ��ݺ�ݻݾݼ@ݽ@L�@ݿ@�@b�@������@��@lx@��@��@b�@����������@��@b@��@��@N@������@��@`�@��@��@b�@��������������@��@��@��@��@l@��@��@b�@������@��@lx@��@��@d@����������@��@d{@��@��@N@�����@�@c�@�@�@N@���ޡ�ޒ�ދ�ވ�@�@�@��E��$��
��
��
��
��	
��

��
��
��

��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
�� 
��!
��"
��#
�W�
��j�%�&�'�(�)�*�+�,�-�.�/�0�1�2�3�4�5�6�7�8�9�:�;�<�=�>�?�@�A�B�C�DĢ�F�g�G�L�H�I�J�K�L�M�N�O�P�Q�R�S�T�U�V�W�X�Y�Z�[�\�]�^�_�`�a�b�c�d�e�fؤ�h�i�j�k�l�m�n�o�p�q�r�s�t�u�v�w�x�y�z�{�|�}�~�ހށނރބޅކއq�މ@ފ@H:@ތޏލ@ގ@e�@ސ@ޑ@N@ޓޚޔޗޕ@ޖ@d{@ޘ@ޙ@N@ޛޞޜ@ޝ@e�@ޟ@ޠ@c�@ޢޱޣުޤާޥ@ަ@M@ި@ީ@N@ޫޮެ@ޭ@e�@ޯ@ް@N@޲޹޳޶޴@޵@`�@޷@޸@�@޺޽޻@޼@l�@޾@޿@gn@�����������������@��@��@��`���O������@��@b�@������@��@N@��@��@N@����������@��@b�@��@��@`�@������@��@b�@��@��@lx@��������������@��@`�@��@��@b�@������@��@N@��@��@b�@������@�@b�@�@�@e�@���@�@lx@�@�@b�@��3���߄��E��&���	��
�
�@�@N@�@�@b�@���@�@`�@�@�@lx@�����@�@b�@�@�@d@� �#�!@�"@lx@�$@�%@b�@�'�6�(�/�)�,�*@�+@li@�-@�.@lx@�0�3�1@�2@az@�4@�5@�,@�7�>�8�;�9@�:@N@�<@�=@b�@�?�B�@@�A@d{@�C@�D@d{@�F�e�G�V�H�O�I�L�J@�K@~�@�M@�N@`�@�P�S�Q@�R@H:@�T@�U@b�@�W�^�X�[�Y@�Z@N@�\@�]@H:@�_�b�`@�a@H:@�c@�d@b�@�f�u�g�n�h�k�i@�j@N@�l@�m@b�@�o�r�p@�q@az@�s@�t@M@�v�}�w�z�x@�y@M�@�{@�|@N@�~߁�@߀@lx@߂@߃@az@߅��߆ߨ߇ߙ߈ߏ߉ߌߊ@ߋ@lx@ߍ@ߎ@N@ߐߖߑ@ߒ@ߓ@ߔ@ߕ@N@ߗ@ߘ@d@ߚߡߛߞߜ@ߝ@`�@ߟ@ߠ@N@ߢߥߣ@ߤ@L�@ߦ@ߧ@N@ߩ��ߪ߱߫߮߬@߭@b�@߯@߰@b�@߲ߵ߳@ߴ@b�@߶@߷@߸@߹b�ߺb�߻b�߼b�߽b�߾b�߿b��b��b���b���b���b�����b���b�d$��b�x�b�����������@��@`�@��@��@b�@������@��@lx@��@��@c�@�����������������@��@��@��������`�ؤq�������yW�q�`���@��@lx@������@��@`�@��@��@N@��������@��@N@�@�@d@���@�@L@�@�@li@�������@�@az@�@�@d@�	��
@�@e@�
@�@N@�����@�@H:@�@�@N@���@�@M@�@�@N@��� �_�!�@�"�1�#�*�$�'�%@�&@g_@�(@�)@N@�+�.�,@�-@lx@�/@�0@N@�2�9�3�6�4@�5@nW@�7@�8@N@�:�=�;@�<@b�@�>@�?@N@�A�P�B�I�C�F�D@�E@lx@�G@�H@d@�J�M�K@�L@li@�N@�O@H:@�Q�X�R�U�S@�T@M@�V@�W@N@�Y�\�Z@�[@d{@�]@�^@N@�`��a�p�b�i�c�f�d@�e@`�@�g@�h@N@�j�m�k@�l@b�@�n@�o@d{@�q�x�r�u�s@�t@N@�v@�w@d@�y�|�z@�{@lx@�}@�~@lx@�������@�@c�@�@�@lx@���@�@N@�@�@lx@�����@�@M@�@�@lx@���@�@b�@�@�@lx@������������@�@N@�@�@lx@���@�@b�@�@�@gn@�����@�@e�@�@�@lx@���@�@H:@�@�@lx@������������@��@N@��@��@b�@������@��@lx@��@��@lx@����������@��@d@��@��@N@������@��@lx@��@��@b�@����������������@��@N@��@��@L@������@��@lx@��@��@��@��nW��nWnW����nW��nWnW��nWnW�nW�nW�nW��nWnW��nWnW�nW�nW��nWnW��
���@�@g4@�@�	@N@���@�
@N@�@�@li@��$�����@�@N@�@�@N@���@�@N@�@� @�!@�"@�#@g4@�%�,�&�)�'@�(@lx@�*@�+@L@�-�0�.@�/@lx@�1@�2@c�@�4�p�5���6��7�|�8�G�9�@�:�=�;@�<@N@�>@�?@H:@�A�D�B@�C@lx@�E@�F@M@�H�r�I�o�J@�K@�L@�Mc��Nc��Oc��Pc��Qc��Rc��Sc��Tc��Uc��Vc��Wc��Xc��Yc��Zc��[c��\c��]c��^c��_c��`c��ac��bc��cc��dc��ec��fc��gc��hc��ic�c��j�kc��lc��mc�c��n<�c��p@�q@lx@�s�v�t@�u@lx@�w@�x@�y@�z@�{@L@�}��~����@�@N@�@�@�H@���@�@lx@�@�@H:@�����@�@b�@�@�@b�@���@�@b�@�@�@lx@���������@�@c�@�@�@lx@���@�@�X@�@�@H:@�����@�@b�@�@�@b�@���@�@b�@�@�@b�@���������@�@@��@��@b�@������@��@lx@��@��@b�@����������@��@lx@��@��@l@������@��@e�@��@��@li@���-��������������@��@��@��d{��d{��d{��d{��d{��d{��d{��d{��d{��d{��d{��d{��d{��d{��d{��d{��d{��d{d{=�@�@L�@���@�@e�@�@�@b�@�����@�@`�@�@�@lx@���	@�
@e�@�@�
@N@�������@�@l�@�@�@d@���@�@`�@�@�@b�@��&� �#�!@�"@lx@�$@�%@N@�'�*�(@�)@H:@�+@�,@b�@�.�N�/�?�0�8�1�5�2@�3@�4@�>t/�6@�7@e�@�9�<�:@�;@d@�=@�>@N@�@�G�A�D�B@�C@b�@�E@�F@lx@�H�K�I@�J@`�@�L@�M@N@�O�a�P�Z�Q�T�R@�S@kX@�U@�V@�W@�Xb��Yb�x�b��[�^�\@�]@iM@�_@�`@lx@�b�i�c�f�d@�e@c�@�g@�h@lx@�j�m�k@�l@`�@�n@�o@h@�q���r��s��t��u�|�v�y�w@�x@t�@�z@�{@lx@�}��~@�@b�@�@�@lx@�����@�@l@�@�@b�@���@�@b�@�@�@lx@�������@�@�@d@�@�@d{@���@�@lx@�@�@lx@�����@�@N@�@�@d@���@�@lx@�@�@lx@�����������@�@d@�@�@lx@���@�@lx@�@��@N@����������@��@`�@��@��@N@������@��@lx@��@��@M@��������������@��@e�@��@��@lx@������@��@b�@��@��@N@����������@��@iM@��@��@lx@������@��@H:@��@��@H:@���4�����������@�@lx@�@�@M@���@�@b�@�@�@H:@�����@�@N@�	@�
@N@���
@�@�@�@�@cW@�@�@N@��%�����@�@N@�@�@lx@��"� @�!@N@�#@�$@N@�&�-�'�*�(@�)@H:@�+@�,@N@�.�1�/@�0@N@�2@�3@iM@�5�T�6�E�7�>�8�;�9@�:@`�@�<@�=@lx@�?�B�@@�A@c�@�C@�D@c�@�F�M�G�J�H@�I@H:@�K@�L@li@�N�Q�O@�P@lx@�R@�S@N@�U�h�V�a�W�^�X@�Y@�Z@`��[�\�]�wF6`��_@�`@b�@�b�e�c@�d@lx@�f@�g@N@�i�p�j�m�k@�l@`�@�n@�o@L@�q�w�r@�s@�t@�u@�v@d@�x@�y@m�@�{��|��}��~������������@�@�@�@�@g_@�@�@d@���@�@
�@�@�@N@�����@�@b�@�@�@e�@���@�@lx@�@�@H:@�������@�@c�@�@�@li@���@�@N@�@�@lx@�����@�@b�@�@�@lx@���@�@N@�@�@b�@������������������@��@N@��@��@b�@������@��@b�@��@��@b�@����������@��@b�@��@��@lx@������@��@N@��@��@b�@��������������@��@b�@��@��@lx@������@��@lx@��@��@H:@��������@�@lx@�@�@H:@���@�@b�@�@�@N@��C��!�������@�@`�@�	@�
@lx@���
@�@lx@�@�@lx@�����@�@N@�@�@b�@���@�@H:@�@� @lx@�"�1�#�*�$�'�%@�&@ak@�(@�)@lx@�+�.�,@�-@iM@�/@�0@lx@�2�9�3�6�4@�5@l@�7@�8@lx@�:�@�;@�<@�=@�>cW�?cWcW)��A@�B@H:@�D�c�E�T�F�M�G�J�H@�I@N@�K@�L@lx@�N�Q�O@�P@lx@�R@�S@lx@�U�\�V�Y�W@�X@b�@�Z@�[@N@�]�`�^@�_@H:@�a@�b@N@�d�s�e�l�f�i�g@�h@d]@�j@�k@d{@�m�p�n@�o@N@�q@�r@H:@�t�{�u�x�v@�w@d@�y@�z@N@�|��}@�~@b�@�@�@N@��������������@�@l�@�@�@H:@���@�@e�@�@�@lx@�����@�@N@�@�@lx@���@�@e�@�@�@b�@�������@�@N@�@�@lx@���@�@e�@�@�@lx@�����@�@N@�@�@lx@���@�@b�@�@��@b�@������������������@��@��@��@��@d@��@��@N@������@��@N@��@��@c�@����������@��@N@��@��@��@��@��@�X@������@��@H:@��@��@d{@�������������@��@�@��@��@H:@�����@�@e�@�@�@z�@�����@�@�@�@�@aN@�@�@li@���@�@N@�	@�
@N@��N�
�/�������@�@`�@�@�@M@���@�@b�@�@�@lx@��(��"� @�!@H:@�#@�$@�%@�&@�'@c�@�)�,�*@�+@iM@�-@�.@N@�0�?�1�8�2�5�3@�4@N@�6@�7@N@�9�<�:@�;@N@�=@�>@L�@�@�G�A�D�B@�C@N@�E@�F@iM@�H�K�I@�J@N@�L@�M@iM@�O�n�P�_�Q�X�R�U�S@�T@M@�V@�W@lx@�Y�\�Z@�[@`�@�]@�^@lx@�`�g�a�d�b@�c@M@�e@�f@ak@�h�k�i@�j@M@�l@�m@N@�o�~�p�w�q�t�r@�s@lx@�u@�v@b�@�x�{�y@�z@lx@�|@�}@ty@�����@�@H:@�@�@b�@���@�@N@�@�@b�@����������������@�@M@�@�@H:@���@�@lx@�@�@lx@�����@�@e�@�@�@H:@���@�@b�@�@�@lx@�������@�@N@�@�@H:@���@�@`�@�@�@H:@���������@��@j*@��@��@b�@������@��@�I@��@��@L�@�����������������@��@N@��@��@N@������@��@N@��@��@N@����������@��@��@��@��@N@��@��@lx@�����@��@��@���i���i���i`�����`��`��`�`��`���`�`�Pu�@�@li@��
�����@�@d{@�@�@N@��
�@�	@e�@�@�@`�@�����@�@N@�@�@`�@���@�@e�@�@�@L�@��b��=��.� �'�!�$�"@�#@lx@�%@�&@L�@�(�+�)@�*@e�@�,@�-@lx@�/�6�0�3�1@�2@N@�4@�5@b�@�7�:�8@�9@e�@�;@�<@lx@�>�P�?�F�@�C�A@�B@c�@�D@�E@lx@�G�M�H@�I@�J@�K@�L@ku@�N@�O@lx@�Q�[�R�U�S@�T@d@�V@�W@�X@�Y@�Z@`�@�\�_�]@�^@H:@�`@�a@`�@�c��d�s�e�l�f�i�g@�h@N@�j@�k@N@�m�p�n@�o@K�@�q@�r@b�@�t�{�u�x�v@�w@`�@�y@�z@`�@@�|�}@�~@lx@�������@�@�@�@�@M@�@�@lx@���@�@d@�@�@lx@�����@�@b�@�@�@g4@���@�@d@�@�@lx@��*�������������@�@M@�@�@N@���@�@d@�@�@H:@�����@�@�@�@�@d{@�@�@lx@����@��@N@��@��@b�@��������������@��@lx@��@��@N@������@��@e�@��@��@`�@����������@��@N@��@��@N@������@��@e�@��@��@��@��@��@M�@����������������@��@z�@��@��@N@�����@�@e�@�@�@H:@�����@�@lx@�@�@N@���@�@e�@�@�@N@�	��
����@�
@�@�@�@`�@�@�@li@���@�@b�@�@�@lx@��#�� �@�@H:@�!@�"@lx@�$�'�%@�&@b�@�(@�)@N@�+�m�,�K�-�<�.�5�/�2�0@�1@N@�3@�4@N@�6�9�7@�8@g_@�:@�;@N@�=�D�>�A�?@�@@d{@�B@�C@M@�E�H�F@�G@N@�I@�J@e�@�L�[�M�T�N�Q�O@�P@d@�R@�S@e�@�U�X�V@�W@aN@�Y@�Z@iM@�\�f�]�`�^@�_@H:@�a@�b@�c@az�d�eazb�az�g�j�h@�i@`�@�k@�l@H:@�n��o�~�p�w�q�t�r@�s@c�@�u@�v@d@�x�{�y@�z@lx@�|@�}@b�@�����@�@lx@�@�@lx@���@�@�@ty@�@�@H:@�������@�@L�@�@�@H:@���@�@b�@�@�@N@�����@�@`�@�@�@N@���@�@H:@�@�@g_@������/��������������@�@N@�@�@L@���@�@lx@�@�@`�@����������@��@b�@��@��@N@������@��@`�@��@��@lx@��������������@��@lx@��@��@H:@������@��@lx@��@��@H:@����������@��@N@��@��@lx@������@��@lx@��@��@lx@�������������@�@N@�@�@b�@���@�@N@�@�@c�@��	���@�@lx@�@�@b�@�
�
�@�@H:@�@�@d@�� �����@�@d@�@�@lx@���@�@H:@�@�@߫@�!�(�"�%�#@�$@b�@�&@�'@N@�)�,�*@�+@L�@�-@�.@d@�0�o�1�P�2�A�3�:�4�7�5@�6@lx@�8@�9@d@�;�>�<@�=@b�@�?@�@@ak@�B�I�C�F�D@�E@M@�G@�H@N@�J�M�K@�L@lx@�N@�O@lx@�Q�`�R�Y�S�V�T@�U@L@�W@�X@li@�Z�]�[@�\@b�@�^@�_@cW@�a�h�b�e�c@�d@N@�f@�g@lx@�i�l�j@�k@b�@�m@�n@d{@�p��q��r�y�s�v�t@�u@j*@�w@�x@l�@�z�}�{@�|@d@�~@�@w�@�����@�@b�@�@�@M�@���@�@N@�@�@iM@�������@�@lx@�@�@cW@���@�@N@�@�@H:@�����@�@`�@�@�@`�@���@�@N@�@�@�@�@�@t�@��1��������������@�@N@�@�@lx@���@�@b�@��@��@lx@����������@��@c�@��@��@lx@������@��@rf@��@��@lx@��������������@��@`�@��@��@lx@������@��@b�@��@��@`�@����������@��@N@��@��@H:@������@��@b�@��@��@N@�����������@�@kf@�@�@az@���@�@d@�@�@iM@�����@�@`�@�	@�
@M@���
@�@n�@�@�@M@��"�����@�@`�@�@�@d{@���@�@d{@� @�!@p�@�#�*�$�'�%@�&@b�@�(@�)@N@�+�.�,@�-@N@�/@�0@lx@�2�q�3�R�4�C�5�<�6�9�7@�8@e�@�:@�;@N@�=�@�>@�?@H:@�A@�B@N@�D�K�E�H�F@�G@`�@�I@�J@N@�L�O�M@�N@�,@�P@�Q@d{@�S�b�T�[�U�X�V@�W@`�@�Y@�Z@lx@�\�_�]@�^@L�@�`@�a@H:@�c�j�d�g�e@�f@N@�h@�i@lx@�k�n�l@�m@M@�o@�p@N@�r��s��t�{�u�x�v@�w@lx@�y@�z@N@�|��}@�~@`�@�@�@�@���� /��?O_������@�@`�@�@�@M@���@�@N@�@�@L�@�������@�@b�@�@�@lx@���@�@ku@�@�@lx@�����@�@H:@�@�@b�@���@�@e�@�@�@M@����8��������������@�@lx@��@��@iM@������@��@e�@��@��@cW@����������@��@`�@��@��@b�@������@��@e�@��@��@N@��������������@��@lx@��@��@N@������@��@e�@��@��@H:@����������@��@`�@��@��@�b@�����@�@b�@�@�@lx@����
�����@�@az@�@�@lx@���@�@cW@�@�	@lx@�����
@�@N@�@�@b�@���@�@lx@�@�@c�@��)��"���@�@L�@� @�!@H:@�#�&�$@�%@M@�'@�(@H:@�*�1�+�.�,@�-@lx@�/@�0@d@�2�5�3@�4@d@�6@�7@b�@�9�y�:�Z�;�K�<�D�=�@�>@�?@li@�A@�B@�C@b�@�E�H�F@�G@L�@�I@�J@H:@�L�S�M�P�N@�O@e�@�Q@�R@li@�T�W�U@�V@d@�X@�Y@H:@�[�j�\�c�]�`�^@�_@nW@�a@�b@N@�d�g�e@�f@H:@�h@�i@H:@�k�r�l�o�m@�n@߫@�p@�q@lx@�s�v�t@�u@N@�w@�x@lx@�z��{��|��}��~@�@e�@�@�@lx@���@�@N@�@�@lx@�����@�@u�@�@�@lx@���@�@li@�@�@lx@�������@�@N@�@�@lx@���@�@N@�@�@N@�����@�@v�@�@�@az@���@�@N@�@�@lx@��m��(������������@�@b�@��@��@lx@������@��@d�@��@��@N@����������@��@v�@��@��@�@������@��@b�@��@��@c�@�������������@��@lx@��@��@�@������@��@lx@��@��@��@��M��M��MM�����M����MM��M����M�MM��MM��MM�M��M�;MM�M�M�M�M�M�M�M�M�M��MM�	M�
M�q���
�q��q��q��q��q��$3q��q��q�q��q���q�dq���!���@�@v�@�@� @N@�"�%�#@�$@lx@�&@�'@N@�)�K�*�<�+�5�,�2�-@�.@�/@�0@�1@M�@�3@�4@M@�6�9�7@�8@`�@�:@�;@lx@�=�D�>�A�?@�@@u�@�B@�C@lx@�E�H�F@�G@lx@�I@�J@N@�L�^�M�W�N�Q�O@�P@N@�R@�S@�T@�U@�V@az@�X�[�Y@�Z@b�@�\@�]@iM@�_�f�`�c�a@�b@v�@�d@�e@`�@�g�j�h@�i@e�@�k@�l@li@�n��o��p��q�x�r�u�s@�t@b�@�v@�w@b�@�y��z@�{@�|@�}N�~NOEN�@�@b�@�����@�@az@�@�@L�@���@�@e�@�@�@lx@�������@�@N@�@�@H:@���@�@e�@�@�@L�@�����@�@az@�@�@b�@���@�@d@�@�@az@����������@�@`�@�@�@H:@���@�@b�@�@�@lx@����������@��@M@��@��@d@������@��@e@��@��@lx@��������������@��@H:@��@��@iM@������@��@d@��@��@b�@����������@��@c�@��@��@H:@������@��@lx@��@��@d@��	����?���������������5���������@�@N@�@�@lx@���@�@N@�@�@H:@���	��
@�@b�@�
@�@lx@���@�@b�@�@�@�@��&�����@�@N@�@�@lx@� �#�!@�"@N@�$@�%@b�@�'�.�(�+�)@�*@d{@�,@�-@d{@�/�2�0@�1@N@�3@�4@`�@�6���7���8��9�<�:@�;@lx@�=@�>@�?@�@��A�`�B�Q�C�J�D�G�E�Fov�}��H�I����K�N�L�M�����O�P�	"�R�Y�S�V�T�U1@O^�W�Xm|��Z�]�[�\�����^�_����a�p�b�i�c�f�d�e%5E�g�hTdt��j�m�k�l�����n�o����q�x�r�u�s�t/?�v�wN^n}�y�|�z�{/����}�~��������������E�	��(8HW����gv��������������� ����-<����L[kz��������������������%����5DSb��q�����������������	����'7FV��et������@�@b�@��@��@lx@����������@��@i�@��@��@az@������@��@H:@��@��@`�@��������������@��@N@��@��@H:@��@��@��@N@����������@��@N@��@��@c�@������@��@N@��@��@d@���S������������@�@sG@�@�@xv@���@�@N@�@�@t�@��
���@�@H:@�@�	@d@���@�
@N@�@�@b�@��!�����@�@lx@�@�@b�@���@�@N@�@� @az@�"�L�#�&�$@�%@N@�'@�(@�)@�*xv�+xv�,xv�-�=�.xv�/xv�0xv�1xv�2xv�3xv�4xv�5xv�6xv�7xv�8xv�9xv�:xv�;�<������xvxv�>xv�?xv�@xv�Axv�Bxv�Cxv�Dxv�Exv�Fxv�Gxv�Hxv�Ixv�Jxv�Kxv���M�P�N@�O@N@�Q@�R@t�@�T�s�U�d�V�]�W�Z�X@�Y@lx@�[@�\@`�@�^�a�_@�`@`�@�b@�c@`�@�e�l�f�i�g@�h@lx@�j@�k@H:@�m�p�n@�o@M@�q@�r@H:@�t��u�|�v�y�w@�x@d@�z@�{@H:@�}��~@�@H:@�@�@�@���}�}�d{��}��L�.�j�����@�@N@�@�@M@���@�@li@�@�@M@��������������@�@lx@�@�@H:@���@�@N@�@�@b�@�����@�@N@�@�@b�@���@�@N@�@�@H:@���������@�@l�@�@��@b�@������@��@b�@��@��@H:@����������@��@N@��@��@li@������@��@M@��@��@d@�����������������@��@lx@��@��@F�@������@��@b�@��@��@N@����������@��@߫@��@��@b�@�����@�@L@�@�@b�@�������@�@N@�@�@d{@���@�@N@�@�@�	@�
@�@d@�
����@�@�@�az�azazub�@�@cW@���@�@��@�@�@L@��g� �E�!�0�"�)�#�&�$@�%@b�@�'@�(@az@�*�-�+@�,@b�@�.@�/@lx@�1�>�2�;�3@�4@�5@�6�9�7�8}��L�.�j}��:d{}��<@�=@b�@�?�B�@@�A@lx@�C@�D@b�@�F�U�G�N�H�K�I@�J@M@�L@�M@b�@�O�R�P@�Q@H:@�S@�T@e�@�V�]�W�Z�X@�Y@d@�[@�\@e�@�^�d�_@�`@�a@�b@�c@l�@�e@�f@N@�h��i�x�j�q�k�n�l@�m@lx@�o@�p@b�@�r�u�s@�t@lx@�v@�w@b�@�y��z�}�{@�|@g_@�~@�@`�@���@�@b�@�@�@c�@�������@�@�@�M��M�M���M��M��M��M��M��M��M��M��M��M��M��M��M��M��M��M��M��M��M��M��M��M��M��M��M��M��M��M��M��M��M�>�M��@�@N@���@�@b�@�@�@lx@������@�@lx@�@�@b�@������@��@lx@��@��@l�@�������J���������������������@��@N@��@��@b�@������@��@M@��@��@lx@����@����@��@i�@������@��@lx@��@��@ak@�������������@��@b�@��@��@d@�����@�@lx@�@�@lx@�����@�@lx@�@�@b�@���@�@lx@�@�@H:@�	�+�
������
@�@lx@�@�@ku@���@�@lx@�@�@b�@��$���@�@c�@�@� @�!@�"@�#@`�@�%�(�&@�'@N@�)@�*@b�@�,�;�-�4�.�1�/@�0@iM@�2@�3@y7@�5�8�6@�7@N@�9@�:@ty@�<�C�=�@�>@�?@c�@�A@�B@b�@�D�G�E@�F@l�@�H@�I@L�@�K��L�k�M�\�N�U�O�R�P@�Q@H:@�S@�T@g_@�V�Y�W@�X@lx@�Z@�[@�L@�]�d�^�a�_@�`@N@�b@�c@H:@�e�h�f@�g@lx@�i@�j@c�@�l�{�m�t�n�q�o@�p@N@�r@�s@az@�u�x�v@�w@N@�y@�z@ku@�|��}��~@�@lx@�@�@c�@���@�@H:@�@�@b�@���������@�@lx@�@�@b�@���@�@lx@�@�@b�@�����@�@lx@�@�@b�@���@�@H:@�@�@lx@�������@�@iM@�@�@b�@���@�@H:@�@�@b�@������@�@li@�@�@d@������@��@H:@��@��@b�@���W���������������������@��@N@��@��@b�@������@��@lx@��@��@d@����������@��@N@��@��@b�@������@��@lx@��@��@lx@�����������@��@��@��l��l��l�ll��l��l�@�@lx@���@�@�@�@�@h@�@�@L@��
��
�@�	@N@�@�@lx@���@�@li@�@�@az@��4��%�����@�@H:@�@�@L�@��"� @�!@d@�#@�$@b�@�&�-�'�*�(@�)@lx@�+@�,@H:@�.�1�/@�0@b�@�2@�3@b�@�5�H�6�>�7�;�8@�9@�:@M�@�<@�=@L�@�?�E�@@�A@�B@�C@�D@M@�F@�G@N@�I�P�J�M�K@�L@N@�N@�O@b�@�Q�T�R@�S@b�@�U@�V@`�@�X��Y�{�Z�l�[�b�\�_�]@�^@b�@�`@�a@iM@�c�i�d@�e@�f@�g@�h@ku@�j@�k@b�@�m�t�n�q�o@�p@li@�r@�s@b�@�u�x�v@�w@li@�y@�z@b�@�|��}��~��@�@N@�@�@b�@���@�@li@�@�@b�@�����@�@az@�@�@b�@���@�@az@�@�@b�@���������@�@H:@�@�@e�@���@�@�@�����1H�������@�@b�@�����@�@d{@�@�@b�@���@�@aN@�@�@b�@��������������@��@M@��@��@N@������@��@d@��@��@iM@����������@��@lx@��@��@L�@������@��@li@��@��@��@���M����M���
��M���M����M��MM����M������M��M��M��M��M��M�����������-�W�������������M�M��M�g�M��MM�M��M�M�M�M�M�M�	MMtO��M��
MM��MM����M�M�MM����������Mg��M���MMtO���M� �3�!M�"MtO�#�$�����%�&���'���(���)���*�����+�,�����-���.���/�0���1�����2�����4�FM�5�-�6�7M�8MM�9M�:M�;�<MM�=M�>M�?�@MM�A�BM�CM�DMM�E)�M�G�X�HM�IM�JM�KM�LM�MM�NM�OMM�PM�QM�RM�SM�T�UM�VM�WMM���Y��ZM�[��\�{�]�i�^MM�_�`M�aM�bM�cMM�d�eM�fMM�gM�hM��M�jM�kM�l�mMM�n�o�uM�pM�q�rMM�s�tMA�MM�vM�w�xMM�yM�zMA�M�|�}M�~MM��MM�A��M��MM�M��MA�M�M�M�MM��M�M���M�M�MM�M��MA�M�M�M�MM�M�M�MA��M�MM��M�M�M�MM��M�MM�M�M��M�MtOMM�������Mg�g�Oa���;MM���M�Mg�M���M�M�M���MA�M����������������������������A�����tO����)������O���������	����M������������������������������������A�����M���������MM����M��M��M����M������������������������������������������������������������������������������������������M��M�;�MM�M�����M��MM�M�M�M�	M�
�g�Mg��
M�M�M�M�M�M����M��M�MM��M�M�MA�M��`�������^� �?�!�0�"�)�#�&�$@�%@N@�'@�(@�b@�*�-�+@�,@c�@�.@�/@L�@�1�8�2�5�3@�4@lx@�6@�7@b�@�9�<�:@�;@N@�=@�>@b�@�@�O�A�H�B�E�C@�D@lx@�F@�G@b�@�I�L�J@�K@lx@�M@�N@L�@�P�W�Q�T�R@�S@b�@�U@�V@H:@�X�[�Y@�Z@lx@�\@�]@M@�_��`�r�a�k�b�e�c@�d@lx@�f@�g@�h@�i@�j@N@�l�o�m@�n@N@�p@�q@cW@�s�z�t�w�u@�v@b�@�x@�y@i�@�{�~�|@�}@lx@�@�@az@�������@�@lx@�@�@�@�@�@L�@���@�@lx@�@�@b�@�����@�@ak@�@�@c�@���@�@�@�@�@g4@�@�@c�@��A���������@�@b�@�@�@L�@���@�@d@�@�@L�@�����@�@sG@�@�@�@�����g_��g_��g_��g_��g_g_����g_��g_g_����g_��g_��g_g_��g_����g_g_����g_g_����������g_�g_�������p���g_g_����g_����g_����g_��g_��g_��g_��g_��g_��g_��g_��g_������g_��g_��g_g_���(���(���(�p�(���g_��g_g_��g_���g_�g_g_����@�@H:@�@�@�@���������A��!����
��	�������
����������vq���|�vq|�|�f?�������f?�f?���������� �������e?e?��"�3�#�+�$�(�%�'�&t��t�t��U�)���U�*�U���,�/��-�.��0�1�2-�4�:�5�6-���7�9�8<��<<K�;�>�<[K�=K[k�?�@zkz�B�f�C�R�D�J�E�I�F�Gz���H�����K�O�L�N�M�����0�P��0�Q�0��S�]�T�X�U�W��V�����Y�[�Z���vq�\vq|��^�b�_�`|�f?�a��f?���c�e��d�����g�|�h�r�i�n�j�l�ke?�e?��m�t��o�pt��U�q���U���s�w�t�v��u��x�z�y--���{��<�}��~���<K�[K[��k�kzz�����������������0���0�����������������-<����KZix������������������!0������?zN��]l{����������������������x��ty��"1@�������������O^m|�����k��������vq�����|���|�����|�|�ty���`�������������������������������������������vq������|�vq|�|�f?������������f?��f?������������������������e?e?�������������t��t�t��U����U��U�����������-��
��-����	�<��<<K���[K�
K[k��zkz��6��"������z�����������������0� ��0�!�0��#�-�$�(�%�'��&�����)�+�*���vq�,vq|��.�2�/�0|�f?�1��f?���3�5��4�����7�L�8�B�9�>�:�<�;e?�e?��=�t��?�@t��U�A���U���C�G�D�F��E��H�J�I--���K��<�M�V�N�R�O�P<K�Q[K[�S�Uk�Tkzz��W�\�X�Z�Y�����[���]�^��0�_��0��a��b�q�c�j�d�g�e�f�����h�i-<�k�n�l�mKZix�o�p�����r�y�s�v�t�u�����w�x!0�z�}�{�|��?zN�~�]l{����������������������x��ty��"1@��������O^m|���k�����vq���|��|���������p�������������������-<����KZix������������������!0������?zN��]l{������������������������������������x��ty����"1@��������������O^m|�����k��������vq�����|���|�����|�|�f?���!���������������������������������������vq������|�vq|�|�f?��������f?�f?�����������������e?e?����������t��t�t��U�	���U�
�U������
�����-����-�����<��<<K���[K�K[k�� zkz�"�F�#�2�$�*�%�)�&�'z���(�����+�/�,�.�-�����0�0��0�1�0��3�=�4�8�5�7��6�����9�;�:���vq�<vq|��>�B�?�@|�f?�A��f?���C�E��D�����G�\�H�R�I�N�J�L�Ke?�e?��M�t��O�Pt��U�Q���U���S�W�T�V��U��X�Z�Y--���[��<�]�f�^�b�_�`<K�a[K[�c�ek�dkzz��g�l�h�j�i�����k���m�n��0�o��0��q���r�z�s�w�t�v�ut��t�t��U�x���U�y�U���{�~��|�}������-��������-��������<��<<K������[K��K[k����zkz��������������������z�����������������������0����0���0�����������������������������vq��vq|���������|�f?����f?�������������������������������e?�e?����t�����t��U�����U��������������������--������<������������<K��[K[����k��kzz�������������������������0����0�����������������������������-<��������KZix����������������������������!0����������?zN����]l{�������������������	��
�x��ty�
�"1@��������O^m|���k�����vq���|���2��$��!�@� @lx@�"@�#@d{@�%�(�&@�'@l@�)@�*@�+@�,�/�-�.9~�~�rI�0�1*rXd?!��3�:�4�7�5@�6@lx@�8@�9@e�@�;�>�<@�=@y7@�?@�@@`�@�B�a�C�R�D�K�E�H�F@�G@b�@�I@�J@`�@�L�O�M@�N@N@�P@�Q@`�@�S�Z�T�W�U@�V@az@�X@�Y@`�@�[�^�\@�]@c�@�_@�`@`�@�b�q�c�j�d�g�e@�f@N@�h@�i@lx@�k�n�l@�m@M@�o@�p@lx@�r�y�s�v�t@�u@N@�w@�x@lx@�z�}�{@�|@az@�~@�@`�@���>����������������������@��@N@��@��@��@��@��@N@������@��@��@��@��@M@����������@��@nW@��@��@`�@������@��@N@��@��@li@��������������@��@d@��@��@��@��N��N��N��N��N��N��N��N��N��N��N��N��N��N��N��N��N��NN����N��N��N��N��N��N��N��NN����N��N����N��N��NQ���N��������W�NNOqQ�N������@��@N@��@��@L�@����������@��@N@��@��@��@li��li����li��li��li��li��li��li��li��li��li��li��li��li��li��li��lili��h�li������@��@L�@��@��@`�@������	���@�@lx@�@�@iM@�
�
�@�@M@�@�@`�@�����@�@l@�@�@L�@���@�@b�@�@�@`�@� �/�!�(�"�%�#@�$@N@�&@�'@b�@�)�,�*@�+@N@�-@�.@li@�0�7�1�4�2@�3@l@�5@�6@��@�8�;�9@�:@e�@�<@�=@H:@�?��@���A�P�B�I�C�F�D@�E@M�@�G@�H@g_@�J�M�K@�L@d@�N@�O@c�@�Q���R�U�S@�T@lx@�V@�W@�X@�Yd$�Zd$�[d$�\��]���^d$d$�_�`d$�a�{d$�bd$�cd$�dd$�ed$�f�gd$�hd$�id$d$�j�kd$�ld$�md$�nd$�od$�pd$�qd$�rd$�sd$�td$�ud$�vd$�wd$�xd$�yd$�zd$��d$�|d$�}d$�~d$d$���d$��d$d$��d$��d$��d$����d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$����������d$d$����d$��d$��d$d$��d$����d$��d$��d$d$����d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$d$������d$��d$����d$��d$��d$��d$d$����d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$d$��d$��d$��d$����d$d$��d$��d$����d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$d$����d$d$����d$d$����d$��d$��d$d$����d$d$����d$d$����d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$�d$�d$�d$�d$��d$��R��#d$��d$�	d$�
d$d$��d$�
d$�d$�d$�d$�d$�d$d$��d$�d$�d$�d$�d$�d$�d$�d$�d$�d$�d$�d$� d$�!d$�"d$��d$d$�$�%�Y�Y�&�'�Y�(�Y�Y�)�Y�*�+�Y�Y�,�Y�-�.�@�Y�/�Y�0�1�Y�2�Y�3�Y�4�Y�5�Y�6�Y�7�Y�8�Y�9�Y�:�Y�;�Y�<�Y�=�Y�>�Y�?�Y�z�Y�A�Y�Y�B�C�Y�D�Y�E�Y�F�Y�G�Y�H�Y�I�Y�J�Y�K�Y�L�Y�M�Y�N�Y�O�Y�P�Y�Q�Y�z�Y�S���T��d$�U�Vd$�Wd$�Xd$�Yd$�Zd$�[���\�pd$�]�^d$d$�_d$�`�ad$�bd$�cd$�dd$�ed$�fd$�gd$�hd$�id$�jd$�kd$�ld$�md$�nd$�od$��d$�qd$d$�r�sd$�td$�ud$�vd$�wd$�xd$�yd$�zd$�{d$�|d$�}d$�~d$�d$��d$��d$��d$��d$��d$��d$��d$������d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$d$����d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$����������d$d$��d$��d$����d$��d$��d$d$����d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$d$��d$��d$����d$d$����d$��d$d$b�d$��d$��d$����d$d$��d$��d$����d$��d$d$b�d$����d$��d$��d$��d$d$����d$d$����d$d$����d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$��d$������@��@xv@��@��@ak@��������@�@b�@�@�@cW@���	@�
@az@�@�
@�@�@�@z�@�����@�@L@�@�@lx@@��@�@M�@��=��.� �'�!�$�"@�#@xv@�%@�&@c�@�(�+�)@�*@lx@�,@�-@b�@�/�6�0�3�1@�2@lx@�4@�5@h@�7�:�8@�9@aN@�;@�<@d@�>�Q�?�I�@�C�A@�B@lx@�D@�E@�F@�Gd�Hdq�d�J�M�K@�L@N@�N@�O@�P@d@�R�Y�S�V�T@�U@l@�W@�X@d{@�Z�]�[@�\@N@�^@�_@`�@�a��b���c���d���e�t�f�m�g�j�h@�i@N@�k@�l@d{@�n�q�o@�p@N@�r@�s@d@�u�|�v�y�w@�x@H:@�z@�{@lx@�}���~@�@N@��@��@g4@��������������@��@N@��@��@lx@������@��@lx@��@��@L�@����������@��@b�@��@��@M@������@��@N@��@��@aN@������������������@��@N@��@��@��@��@��@b�@������@��@H:@��@��@nW@����������@��@��@��������@��@N@������@��@c�@��@��@h@��������������@��@b�@��@��@��@��������}��L�.�j�����y�L��������@��@lx@��@��@d@����������@��@��@��b���b�d$b���@��@}�@������@��@b�@��@��@`�@���4����������������@��@lx@��@��@aN@�����@��@N@�@�@b�@�����@�@�@�	@�
@d@�@�
@b�@���@�@"�@�@�@�,@��%�����@�@`�@�@�@li@��"� @�!@L�@�#@�$@d@�&�-�'�*�(@�)@`�@�+@�,@��@�.�1�/@�0@�@�2@�3@nW@�5�T�6�E�7�>�8�;�9@�:@lx@�<@�=@d$@�?�B�@@�A@li@�C@�D@c�@�F�M�G�J�H@�I@lx@�K@�L@iM@�N�Q�O@�P@li@�R@�S@L�@�U�d�V�]�W�Z�X@�Y@nW@�[@�\@d@�^�a�_@�`@az@�b@�c@`�@�e��f�i�g@�h@lx@�j@�k@�l@�m���n���o���p��q�x�r�u�s�td{od{v��v�w}����y�|�z�{�����}�~���	������������"1@����O^O_��������m|?�������������������������d{�������%5��������ETdt������������������������������������/?N^����n}/���������������������d{����������d{���������	(����8HWg������������v������������������� ������-<L����������������d{[kz������������������������%������������5DSb����q���������������������	��d{��d{����������������d{'7F����Vet����������j�����N^���d{���������d{dd{���@�@N@�	@�
@az@����
�R��0��!�����@�@M@�@�@�@�@�@d@���@�@lx@�@� @b�@�"�)�#�&�$@�%@d{@�'@�(@d@�*�-�+@�,@lx@�.@�/@p�@�1�@�2�9�3�6�4@�5@lx@�7@�8@az@�:�=�;@�<@l�@�>@�?@az@�A�H�B�E�C@�D@b�@�F@�G@az@�I�O�J@�K@�L@�M@�N@b�@�P@�Q@az@�S�r�T�c�U�\�V�Y�W@�X@N@�Z@�[@az@�]�`�^@�_@lx@�a@�b@az@�d�k�e�h�f@�g@N@�i@�j@az@�l�o�m@�n@lx@�p@�q@c�@�s���t�{�u�x�v@�w@N@�y@�z@d@�|��}@�~@lx@��@��@d@����������@��@li@��@��@�@������@��@lx@��@��@i�@����������������������@��@M�@��@��@`�@������@��@lx@��@��@c�@����������@��@lx@��@��@`�@������@��@b�@��@��@��@��dd����dd����d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��d��ddo���������������@��@N@��@��@L�@������@��@e�@��@��@L@����������@��@N@��@��@M@������@��@e�@��@��@��@��@��@`�@���������������@��@b�@��@�@l�@���@�@lx@�@�@�b@�	��
�
�@�@lx@�@�@�@�@�@d@���@�@e�@�@�@t�@��-��&�� �@�@lx@�!@�"@�#@�$@�%@d@�'�*�(@�)@e�@�+@�,@d@�.�5�/�2�0@�1@lx@�3@�4@d$@�6�9�7@�8@lx@�:@�;@�<@�=@�>@L�@�@H�A�B���C��D���E�e�F�U�G�N�H�K�I@�J@c�@�L@�M@N@�O�R�P@�Q@N@�S@�T@b�@�V�^�W�Z�X@�Y@b�@�[@�\@�]@L�@�_�b�`@�a@lx@�c@�d@q�@�f�u�g�n�h�k�i@�j@l�@�l@�m@~�@�o�r�p@�q@N@�s@�t@b�@�v�}�w�z�x@�y@lx@�{@�|@l�@�~���@��@H:@��@��@ak@������������������@��@��@��@��@M@��@��@qw@������@��@H:@��@��@��@��@��@��@��d��d��d��d��d��d��d��d��d��d��d��d��d��dd��b�d����������@��@N@��@��@c�@������@��@H:@��@��@ku@��������������@��@lx@��@��@��@��d��dd����d��d��d��d��d��d��d��d��d��d��d��d��d��dd��d����d��d��d��d��d��d��d��d��d��d����d����d��dd���d������dd����d�dd����d��d�d������@��@lx@��@��@q~@����������@��@lx@��@��@b�@����@�@H:@�@�@cW@��E��&���	��
�
�@�@b�@�@�@iM@���@�@lx@�@�@M@�����@�@aN@�@�@b�@� �#�!@�"@d@�$@�%@d@�'�6�(�/�)�,�*@�+@H:@�-@�.@ku@�0�3�1@�2@߫@�4@�5@L�@�7�>�8�;�9@�:@lx@�<@�=@N@�?�B�@@�A@d@�C@�D@��@�F���G�]�H�V�I�S�J@�K@�L@�MM�NM�OM�PM�QM�RM��M�T@�U@b�@�W�Z�X@�Y@`�@�[@�\@b�@�^���_���`@�a@�b@b��c�d�eb�gQb��f�gb��hb��ib��jb��kb��lb��mb��nb��ob��pb��qb��rb��sb��tb��ub��vb��wb��xb��yb��zb��{b��|b��}b��~b��b���b���b���b���b���b���b�{�b���@��@`�@������@��@lx@��@��@q�@��������������@��@lx@��@��@L�@������@��@N@��@��@}�@����������@��@N@��@��@L@������@��@lx@��@��@��@������MMg�M����M�����M��M������������M��������M��M��M��M��M��M��Mq�M��M��M��M��M��M��M��M�;M����������M��M��M��M��M��M��Mq�M������M��M��M��M��M��Mq�MM��M����MM��M��M��*�M��M��M��M��M��M��M��M��Mq�M��M��M��M��M��M��M��M��M��M��Mq�M��M��MM��M��M����M�M�M�MM�M�*�M��[M���<�	�&�
��M���
MM��MM��M�M�MM)xM�M��M�M�M�MM�M���MM��M� M�!MM�"�#MM�$M�%M���'�1M�(�)M�*M�+M�,M�-M�.M�/M�0Mq�M�2M�3MM�4M�5M�6�7M�8M�9M�:�;Mq�M�1M�=�>�HM�?�@MM�A�BMM�CM�D�EM�FM�GMdM�I�RM�JM�KM�LM�M�NMM�OM�PM�Qy�M�SM�TM�UM�VM�WM�XM�YM�ZMM���\���]���^�r�_MM�`�a�j�bMM�cM�dM�eM�f�g�iM�h*�M*�M�kM�lM�mMM�nM�o�pMM�qq�M�s��M�t�uMM�v�w�}M�x�yM�zM�{M�|M��MM�~�M��M��M��MM������������M��M������M��M��M��M*�M��M��M��M��MM*���M��M��M��M��M����q���q�M��Mq�M������M��M��M��M��M��M��M*�M��M��M��M��M��M��M��M�;MM����MM������M������M����M��M��M��M�MM����M��M��M��MOaM��M��M��M��M��M��M��M*�M����M������M����MM��M����M��MM����MM���OMM��������M��M��M��M��M��M��MM�M��M����MM��M��M��M��M��M����MM����MM������M����M��M��M��M�;MM����M��M��M��M�oM���{���<��������������@�@m�@�@�@c�@���@�@N@�	@�
@d@���
��@�@lx@�@�@d@���@�@lx@�@�@q~@��-��&�� �@�@H:@�!@�"@�#@�$@�%@L�@�'�*�(@�)@N@�+@�,@d$@�.�5�/�2�0@�1@H:@�3@�4@iM@�6�9�7@�8@N@�:@�;@iM@�=�\�>�M�?�F�@�C�A@�B@b�@�D@�E@d@�G�J�H@�I@lx@�K@�L@c�@�N�U�O�R�P@�Q@b�@�S@�T@M@�V�Y�W@�X@xv@�Z@�[@`�@�]�l�^�e�_�b�`@�a@lx@�c@�d@g4@�f�i�g@�h@L�@�j@�k@L@�m�t�n�q�o@�p@b�@�r@�s@L@�u�x�v@�w@��@�y@�z@l@�|���}���~�����������@��@lx@��@��@`�@������@��@N@��@��@��@��@��@c�@����������@��@lx@��@��@d@������@��@N@��@��@`�@��������������@��@lx@��@��@cW@������@��@N@��@��@c�@����������@��@M@��@��@��@��@��@L�@������@��@N@��@��@N@������������������@��@az@��@��@M@������@��@c�@��@��@ak@����������@��@d@��@��@l�@������@��@d@��@��@l@��������������@��@b�@��@��@�b@������@��@c�@��@��@az@����������@��@d{@��@��@az@������@��@M�@��@��@az@/�E#

@	@lx@@@az@@@L�@@@d@@@lx@@@az@ @@xv@!@"@az@$6%,&)'@(@d@*@+@az@-3.@/@0@1@2@`�@4@5@az@7>8;9@:@@&@<@=@b�@?B@@A@az@C@D@�b@FeGVHOILJ@K@az@M@N@M@PSQ@R@m�@T@U@M�@W^X[Y@Z@H:@\@]@az@_b`@a@L�@c@d@az@fugnhki@j@lx@l@m@az@orp@q@N@s@t@az@v}wzx@y@g_@{@|@az@~�@�@�@�@�@aN@�@�@L�@�����������@�@�@�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�dd��d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�dd��@�@M@���@�@`�@�@�@N@�����@�@d@�@�@d@���@�@lx@�@�@`�@�������@�@H:@�@�@�@�@�@L�@���@�@lx@�@�@c�@�����@�@l�@�@�@M@���@�@az@�@�@c�@�������@�@nW@�@�@�@�ee�,e���@�@lx@�@@d@	@@N@@@az@

@@lx@@@
�@ @@lx@@@g_@@@n�@@@l@!("%#@$@H:@&@'@g4@),*@+@d@-@.@b�@0�1�2Q3B4;586@7@N@9@:@d@<?=@>@lx@@@A@L�@CJDGE@F@lx@H@I@`�@KNL@M@d@O@P@c�@RwS]TWU@V@d@X@Y@Z@[@\@cW@^a_@`@c�@b@c@d@eb�fb�gb�hb�ib�jb�kb�lb�mb�nb�ob�pb�qb�rb�sb�tb�ub�vb�b�p�xy|z@{@c�@}@~@`�@���@�@M@�@�@�@�b��b��b��b��b��b��b��b��b��b��b��b��b��b��b��b��b���d$b�p�����������@�@H:@�@�@p�@���@�@iM@�@�@b�@�����@�@t�@�@�@q~@���@�@H:@�@�@L@�������@�@N@�@�@`�@���@�@lx@�@�@`�@�����@�@H:@�@�@L@���@�@d{@�@�@xv@���������@�@lx@�@�@�@�@�@L@���@�@N@�@�@�@�@�@M�@�����@�@N@�@�@d]@���@�@az@�@�@m�@	@@lx@@@b�@

@@lx@@@d@@@H:@@@N@@@lx@@@b�@ ?!0")#&$@%@H:@'@(@l�@*-+@,@H:@.@/@L@18253@4@N@6@7@`�@9<:@;@lx@=@>@b�@@6AHBEC@D@H:@F@G@d@ILJ@K@lx@M@N@O@PQMRMSMTMUMVMWX�Y�ZnM[\`]M^MM_�%MaMbMchde��g�fgq�Oaq�Miljkg���g���mMg�Mo�prqMM��sxtuM�;vMwM�;Myz~{tO|}OaMA�M�����M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�MtOM�M�M����M�q�MM���M��M�����MM�Mg�M��MM����MM�y�MM���Mg�q�M����M����������o��M��Jq��q��q��q�tO�M�MM�������M(�(|�(���˜�~������O�����������
΄M�����M�M��M��M�M�MM��g��J���M���M�����M�%MM�%���M�%y���M�%�%�Mg�M��MM���q���Mq�MM�M�Mq��MM��M���M���Oa��MOa��OaM�M�Mg�MMMM~MMMMM	M
M�;MM
M�JMMMMMMMMMMMMM��M%M M!M"M#MM$MtO&MM'(M)/*,(�+�hg�-.g�MM�]0312�x�����;45�]��d�7>8;9@:@N@<@=@|�@?B@@A@N@C@D@E@F@G@cW@I�JRK�L�MlN]OVPSQ@R@N@T@U@e�@WZX@Y@xv@[@\@`�@^e_b`@a@N@c@d@g4@fig@h@b�@j@k@ty@m|nuorp@q@M@s@t@g_@vyw@x@lx@z@{@b�@}�~�@�@b�@�@�@M�@���@�@d@�@�@`�@���������@�@lx@�@�@g4@���@�@d{@�@�@�@�@�@d@�����@�@c�@�@�@nW@���@�@d]@�@�@b�@�������@�@d@�@�@g_@���@�@lx@�@�@az@�����@�@lx@�@�@l�@���@�@N@�@�@L@����������@�@az@�@�@L@���@�@lx@�@�@g4@�����@�@lx@�@�@`�@���@�@H:@�@�@�@�@�@M@������@�@M@�@�@L@���@�@d@�@@��@	@@N@@@b�@

@@M@@@{
@0!@@b�@@@N@@@c�@@ @}�@")#&$@%@lx@'@(@l�@*-+@,@az@.@/@l@1@29364@5@H:@7@8@ku@:=;@<@lx@>@?@�F@AKBEC@D@lx@F@G@H@I@J@K�@LOM@N@H:@P@Q@M@S�T�UtVeW^X[Y@Z@c�@\@]@ak@_b`@a@H:@c@d@l�@fmgjh@i@lx@k@l@g_@nqo@p@lx@r@s@��@u�v}wzx@y@H:@{@|@M@~�@�@L@�@�@b�@�����@�@N@�@�@L@���@�@H:@�@�@�@���������@�@lx@�@�@L@���@�@lx@�@�@M�@�����@�@li@�@�@lx@���@�@lx@�@�@lx@�������@�@lx@�@�@xv@���@�@lx@�@�@e@�����@�@lx@�@�@b�@���@�@b�@�@�@cW@����������@�@H:@�@�@L@���@�@lx@�@�@`�@�����@�@N@�@�@p�@���@�@M@�@�@iM@������@�@lx@�@�@`�@��@�@N@@@L�@@@d@	@
@�I@
@@lx@@@@@@`�@r&@@lx@@@M@ #!@"@N@$@%@b�@'k(+)@*@li@,@-@.@��/��0162��3��45��A�A���7�8�9g:��;J<��=>���o?��@��A��B��C��D��EHFGg�A�tOMI��M��K��L��M��N��O��P��Q\RYSVTU��A���tOWX)�˫g���Z��[��Oa�;]d^a_`q��O���bc�@�^���7e��f��������hixj��kwl��m��n��o��p��qt��r��sA���u��v���O����4y{z��������|}��~������������������Oa�����q�������������������o����������A����������tO)���������o� �����������������������������M����dg�������)x���q����������������������������M����������;g�������������������������������������������������g�����������g�������������M���M�q��������M������������������������������������������������o�������������������A�M�������q��������������������������L��������*�����*�����	������tO��
����g���
�����������+����������������������'����q�!8��"#7$/%&��g���'(g�)g�*g�+g�,g�-g�g�.g���0����12��3��4��5��6������829:������;<�=|>]?N@GADBC�<΄����EF�������HKIJ��� �	�sLM����4��OVPSQR�x������TU�7���N��WZXY�]�6����[\��
���
�^m_f`cab�0�����Gde�W�e���ugjhi�w�����+kl���g��;nuorpq���:���Kst����-��vywx�������z{�W������}�~�������)��������,�����������%�o��&����[���>�������;�M�]�l���{���]�������4�(��������˜���������v�������M����1�@�����O(|��J����tO(��^�������m�|�b)�������������������
������Oa�-�����������������$L������#��'�����
V����
t��$3(���+���������
����������)�Z������q����5��}q����~�����������T'�)x����&����������
���p������~�����������
�������� �i������/���������
Ò����ēĢ�(��*����Ź	�Y��*�>
d�6���
�4��y���KA��Z�����%��y��Ʌ�O+$! �����ʰ"#����Mg�%(&'N�!����)*�	˫�h(�,��-0./
e]˺�*1��̣����3��45��6��7��������9:W;U<M=��>A�?A�@A�AA�BHCEA�Dg��FGg�����L�ILJKL���q�����A���NO��P��Q��R��S��T��g�����V����X��Ya��Z[��\��]��^��_��`���;����bc��d��e��f��g��h��ij���;g���lom@n@az@p@q@g4@s�t{uxv@w@li@y@z@d@|}@~@N@�@�@M@�����@�@�@�@�@H:@�@�@M@���@�@lx@�@�@N@���.�����������@�@N@�@�@H:@���@�@N@�@�@d@�����@�@�@�H:�H:�H:�H:�H:�H:�H:�H:�H:�H:�H:�H:�H:�H:H:,i�@�@d@���@�@lx@�@�@N@�������@�@lx@�@�@}�@���@�@N@�@�@c�@�����@�@lx@�@�@j*@���@�@lx@�@�@�b@��������@�@N@�@�@c�@���@�@N@�@�@�@����m�nS���|�����@@g4@@@@@@M@	
@@H:@
@@@@@N@@@N@@@c�@@@@`�@ '!$"@#@`�@%@&@e�@(+)@*@M�@,@-@d@/q0R1C29364@5@d{@7@8@M@:=;@<@lx@>@?@@@A@B@cW@DKEHF@G@H:@I@J@M@LOM@N@lx@P@Q@i�@SbT[UXV@W@lx@Y@Z@|@\_]@^@g4@`@a@d@cjdge@f@d@h@i@lx@knl@m@N@o@p@b�@r�s�t{uxv@w@L�@y@z@l@|}@~@lx@�@�@ՙ@�����@�@lx@�@�@b�@���@�@`�@�@�@d@�������@�@N@�@�@d@���@�@lx@�@�@`�@�����@�@lx@�@�@�@�����x^�����c�
�����@�@az@�@�@d@�	E�����������@�@az@�@�@d@���@�@lx@�@�@�@�����@�@lx@�@�@d@���@�@�@gn+c�@�@c�@�������@�@lx@�@�@M@���@�@L�@�@�@L@�����@�@N@�@�@cW@���@�@c�@�@�@az@�	 �	
�	�	�@�@az@	@	@lx@			@	@g4@	@		@M@					
@	@lx@	@	@e@			@	@b�@	@	@	@				�bd?��		ՙ(�� �	!	3	"	,	#	)	$@	%@	&@	'@	(@d@	*@	+@q~@	-	0	.@	/@b�@	1@	2@c�@	4	;	5	8	6@	7@N@	9@	:@N@	<	B	=@	>@	?@	@@	A@`�@	C@	D@L�@	F	�	G	u	H	f	I	P	J	M	K@	L@L@	N@	O@M@	Q	T	R@	S@lx@	U@	V@	W@	XtOtO	Y	Z	b	[tO	\tO	]tO	^tO	_tO	`tO	atO��tO	ctO	dtO	etO��tO	g	n	h	k	i@	j@lx@	l@	m@t�@	o	r	p@	q@H:@	s@	t@��@	v	�	w	~	x	{	y@	z@iM@	|@	}@i�@		�	�@	�@lx@	�@	�@b�@	�	�	�	�	�@	�@lx@	�@	�@d@	�	�	�@	�@lx@	�@	�@N@	�	�	�	�	�	�	�	�	�@	�@N@	�@	�@�b@	�	�	�@	�@lx@	�@	�@N@	�	�	�	�	�@	�@	�@	�@	�@N@	�@	�@d@	�	�	�@	�@lx@	�@	�@N@	�	�	�	�	�	�	�@	�@M�@	�@	�@xv@	�	�	�@	�@lx@	�@	�@iM@	�	�	�@	�@	�@nW@	�	�	�@	�@`�@	�@	�@�b@	��	�	��	�U	�
�	�
R	�
	�
	�	�	�	�	�@	�@N@	�@	�@	�@	�@	�@	�@	�aNaN	�	�aN	�aNaN	�aN	�aN	�aN	�aN	�aN	�aN	�aN	�aN	�	�aN	�aNaN�u	�	�	�@	�@	�@	�@	�@M@	�@	�@M@




@
@g4@
@
@E�@
	


@
@cW@

@
@L�@

C

<


@
@��@
@
@
@
߫
߫
߫
߫

/
߫
߫
 ߫
!߫
"߫
#߫
$߫
%߫
&߫
'߫
(߫
)
,
*
+�#
-
.2AP_
0߫
1߫
2
9
3
6
4
5�>���
7
8#2P
:߫
;߫A߫
=
@
>@
?@y7@
A@
B@i�@
D
K
E
H
F@
G@c�@
I@
J@c�@
L
O
M@
N@`�@
P@
Q@az@
S
u
T
c
U
\
V
Y
W@
X@`�@
Z@
[@cW@
]
`
^@
_@li@
a@
b@`�@
d
n
e
k
f@
g@
h@
i@
j@�b@
l@
m@lx@
o
r
p@
q@ty@
s@
t@j*@
v
�
w
~
x
{
y@
z@lx@
|@
}@M�@

�
�@
�@c�@
�@
�@N@
�
�
�
�
�@
�@d@
�@
�@M@
�
�
�@
�@d@
�@
�@N@
�
�
�
�
�
�
�
�
�
�
�@
�@N@
�@
�@b�@
�
�
�@
�@L@
�@
�@iM@
�
�
�
�
�@
�@nW@
�@
�@`�@
�
�
�@
�@g4@
�@
�@d@
�
�
�
�
�
�
�@
�@L@
�@
�@nW@
�
�
�@
�@`�@
�@
�@M@
�
�
�
�
�@
�@q~@
�@
�@L�@
�
�
�@
�@l�@
�@
�@cW@
�#
�
�
�
�
�
�
�@
�@`�@
�@
�@
�@ذ)�
�
�
�@
�@
�@
�@
�@b�@
�@
�@
�@
�
�
�
�e
�e
�b��
�
�
�
�ՙdN *�
�
��*�H�#e
�lx
�
�
�
��w9~�rI
�
�rX�. �lx
�
�@@@`�`�`�`�
`�	`�
`�`�`��`�`�`�`�`�`�f�`�`��`�`��`�@@b@ @@b�@!@"@q~@$3%,&)'@(@N@*@+@�,@-0.@/@ak@1@2@t�@4;586@7@`�@9@:@dN@<?=@>@e�@@@A@B@C@D@E@@FG@@HI@J@K@@LM@N@O@P@@QR@@ST@@�VW�XzYhZa[^\@]@xv@_@`@M@bec@d@L�@f@g@cW@ipjmk@l@M@n@o@c�@qtr@s@xv@u@v@w@x@y@az@{�|�}�~@@N@�@�@ku@���@�@`�@�@�@`�@�����@�@gn@�@�@b�@���@�@lx@�@�@cW@���������@�@`�@�@�@d@���@�@lx@�@�@N@�����@�@�@�M�M�M�M�M�M�M�M���M�M����M�M��MM�M��;M�����MM��MM���MM�M�Mq���M��M�M��MM��M�MMg��M�M��M��MM�g�MM��MM�Mg����M�MM��MM�M�M�M�M��M�M��M�MM�M�M�M�Mg��@�@�b@���@�@`�@�@�@L�@�
�@@g4@@@iM@
@	@N@@@�,@@@d@@@iM@@@li@@@b�@b@4 *!$"@#@A@%@&@'@(@)@nW@+1,@-@.@/0�i��2@3@e@59@67@8@e@:=;@<@M@>@?@ku@ASBLCID@E@F@G@H@L@J@K@`�@MPN@O@d@Q@R@b�@T[UXV@W@�F@Y@Z@c�@\_]@^@N@`@a@cW@c�d�e{fig@h@`�@j@k@l@g_mg_ng_og_pg_qg_rg_sg_tg_ug_vg_wg_xyg_g_z��g_|}@~@l�@�@�@L@�����@�@L�@�@�@M@���@�@`�@�@�@c�@�������@�@L@�@�@M�@���@�@H:@�@�@�@�@�@�@�h�h�h�h�h�h�hh��h�h�h��h�����@�@rf@�@�@`�@���@�@L�@�@�@g_@�
��
J�
���������@�@m�@�@�@`�@���@�@L�@�@�@c�@�����@�@iM@�@�@g4@���@�@�@M�M�M�M��M�MM�M�M�Md�@�@b�@�������@�@H @�@�@L�@���@�@L�@�@�@b�@�
�
�@
@b�@
@
@d@


@
@�c@
	@
@c�@

+







@
@t�@
@
@d]@


@
@M@
@
@i�@

$

!
@
 @b�@
"@
#@aN@
%
(
&@
'@M@
)@
*@M�@
,
;
-
4
.
1
/@
0@L@
2@
3@��@
5
8
6@
7@ak@
9@
:@c�@
<
C
=
@
>@
?@iM@
A@
B@M@
D
G
E@
F@b�@
H@
I@N@
K
�
L
q
M
_
N
X
O
R
P@
Q@c�@
S@
T@
U@
V@
W@d@
Y
\
Z@
[@#@
]@
^@d@
`
j
a
d
b@
c@L�@
e@
f@
g@
h@
i@b�@
k
n
l@
m@b�@
o@
p@M@
r
�
s
z
t
w
u@
v@lx@
x@
y@d@
{
~
|@
}@L�@
@
�@xv@
�
�
�
�
�@
�@M@
�@
�@e@
�
�
�@
�@M@
�@
�@lx@
�
�
�
�
�
�
�
�
�@
�@N@
�@
�@lx@
�
�
�@
�@b�@
�@
�@e@
�
�
�
�
�@
�@`�@
�@
�@
�@
�
�
�
���dNb9
�
�~�*(��*
�
�
�@
�@l@
�@
�@
�@
�
�
�
�~�����7
�
����~�&
�
�
�
�
�
�
�@
�@M@
�@
�@lx@
�
�
�@
�@c�@
�@
�@lx@
�
�
�
�
�@
�@c�@
�@
�@lx@
�
�
�@
�@y7@
�@
�@lx@
�c
�!
�
�
�
�
�
�
�
�@
�@L@
�@
�@lx@
�
�
�@
�@lx@
�@
�@c�@
�
�
�
�
�@
�@
�@
�@
�@nW@
�@
�@`�@
�
�
�@
�@xv@@@`�@@@L@	@
@`�@
@@d@@@`�@@@`�@@@`�@@@ՙ@@ @`�@"A#2$+%(&@'@N@)@*@`�@,/-@.@b�@0@1@`�@3:475@6@M@8@9@`�@;><@=@M@?@@@��@BTCJDGE@F@l�@H@I@d@KNL@M@b�@O@P@Q@R@S@li@U\VYW@X@az@Z@[@�H@]`^@_@c�@a@b@��@d�e�fxgqhki@j@M@l@m@n@o@p@M@rus@t@b�@v@w@M@y�z}{@|@t�@~@@ku@���@�@ak@�@�@�@�@�@z�@�������@�@h@�@�@iM@���@�@�@����n��}����
��8�@�@d{@�����@�@j*@�@�@`�@���@�@b�@�@�@q~@���������@�@d@�@�@nW@���@�@b�@�@�@�@��iM�����@�@d@�@�@d@���@�@b�@�@�@d@�������@�@�@�@�@`�@�@�@iM@���@�@�@�����d���������F�0��@�@N@�����@�@�@�@�@��@�@�@`�@��@�@�@����b�ddb�d�o�m�@@ty@E�F'	
@
@c�@@@b�@@@d@@@g_@ @@d@@@d{@!$"@#@�b@%@&@e�@(7)0*-+@,@ak@.@/@M@142@3@`�@5@6@L�@8?9<:@;@`�@=@>@aN@@CA@B@M@D@E@b�@GfHWIPJMK@L@li@N@O@L@QTR@S@ak@U@V@y7@X_Y\Z@[@iM@]@^@N@`ca@b@t�@d@e@L�@g}hoilj@k@N@m@n@`�@pzq@r@s@twuv����U�xy��{@|@q~@~���@�@N@�@�@`�@���@�@N@�@�@cW@�����������@�@`�@�@�@g_@���@�@c�@�@�@M@�����@�@e@�@�@b�@���@�@`�@�@�@b�@�������@�@cW@�@�@ak@���@�@��@�@�@�@�m��m��m��m��m��m��m��m��m��m��m��m��m��m����#V�+r�����@�@`�@�@�@c�@���@�@`�@�@�@e�@���������@�@M@�@�@g_@���@�@cW@�@�@L�@�����@�@d@�@�@aN@���@�@d@�@�@c�@�
�@@b�@@@M�@
@	@N@@@M@@@lx@@@c�@@@p�@@@b�@�]> /!("%#@$@L@&@'@i@),*@+@`�@-@.@xv@07142@3@gn@5@6@j*@8;9@:@j*@<@=@b�@?N@GADB@C@`�@E@F@M�@HKI@J@xv@L@M@M@OVPSQ@R@p�@T@U@d@WZX@Y@iM@[@\@ku@^�_q`gadb@c@cW@e@f@`�@hni@j@k@l@m@d@o@p@`�@rysvt@u@b�@w@x@b�@z}{@|@H:@~@@az@�������@�@aN@�@�@L�@���@�@�@�d��d��d�d�d�d�d�d�d�d�d�d�d�dd��d�d�Zd�d�d�d�d�d�dd��d�d�d�d�d�d�d�dd���d�@�@`�@�����@�@M@�@�@d@���@�@L�@�@�@d]@����������@�@`�@�@�@d]@���@�@az@�@�@e�@�����@�@nW@�@�@N@���@�@b�@�@�@c�@�������@�@t�@�@�@d@���@�@d@�@�@iM@�����@�@�@�@�@d{@�@�@`�@@@lx@@@az@&	

@@rf@@@c�@@@lx@@@g4@@@d@@@b�@ #!@"@`�@$@%@`�@'6(/),*@+@d@-@.@iM@031@2@`�@4@5@iM@7>8;9@:@g_@<@=@c�@?B@@A@`�@C@D@L@F}G�H�IhJYKRLOM@N@l�@P@Q@M@SVT@U@`�@W@X@c�@Za[^\@]@g_@_@`@d@bec@d@`�@f@g@d{@ixjqknl@m@nW@o@p@l@rus@t@`�@v@w@g4@y�z�{@|@}@~���M)x���M���4�@�@iM@���@�@`�@�@�@c�@���������@�@b�@�@�@l@���@�@`�@�@�@�@�����!0?��N]l������@�@M@�@�@�@����{������������@�@`�@�@�@��@�������@�@g4@�@�@d@���@�@`�@�@�@c�@�����@�@L@�@�@M�@���@�@`�@�@�@ty@�5��������@�@`�@�@�@�@�����+��;KZi���@�@`�@�@�@�@�h%�����@�@�@�@�@c�@�@�@li@@@`�@@@@hna	

@@M@@@@�)}�@@`�@@@@}��n�ءe��r4� '!$"@#@iM@%@&@n�@(+)@*@`�@,@-@.@/201�$�%
�:34{�%�!�s6X7F8?9<:@;@L�@=@>@m�@@CA@B@`�@D@E@M@GQHNI@J@K@L@M@M@O@P@b�@RUS@T@`�@V@W@d@YkZa[^\@]@b�@_@`@b�@bec@d@`�@f@g@h@i@j@N@lvmsn@o@p@q@r@d{@t@u@��@wzx@y@`�@{@|@iM@~����������@�@L@�@�@M@���@�@`�@�@�@`�@�����@�@��@�@�@l@���@�@`�@�@�@`�@�������@�@M@�@�@c�@���@�@`�@�@�@��@�����@�@d@�@�@�@�@�@b�@���@�@`�@�@�@b�@���������@�@lx@�@�@cW@���@�@`�@�@�@b�@�����@�@L�@�@�@L�@���@�@`�@�@�@M@�������@�@N@�@�@`�@���@�@`�@�@�@iM@�����@�@i�@�@�@iM@���@�@`�@�@�@�c@a?@@`�@	@
@d@
@@`�@@@b�@@@lx@@@L@@@`�@@ @!@L�"L�#L�$%L�&L�'0L�()L�L�*L�+,L�-L�.L�/L�L�ߜ1L�2L�3L�4L�L�56L�7L�L�89L�:=;<�+�L��>L�xL�@RAHBEC@D@M@F@G@l�@ILJ@K@`�@M@N@O@P@Q@aN@SZTWU@V@lx@X@Y@iM@[^\@]@`�@_@`@c�@b�cudnehf@g@H:@i@j@k@l@m@~@orp@q@M�@s@t@az@v}wzx@y@N@{@|@N@~�@�@lx@�@�@h@�������@�@b�@�@�@az@���@�@d@�@�@M@�����@�@nW@�@�@l�@���@�@s8@�@�@�@�@�@d]@�����Q�������������@�@li@�@�@M@���@�@�@�@�@L@�@�@M@�����@�@lx@�@�@`�@���@�@L@�@�@p�@�{�����@�@lx@�@�@�@�@�@M@���@�@e�@�@�@�@��az�azw�az�vaz�az�az�az�az�az����az������wv�t�gC��az��kXv��az�azb�azaz��az�;��
��yJ��up������Z
	�����wF�"u�u�V�pS��0���
v�����j~�v���
��,%" !�v����1#$w8����+&)'(�W�w�s��*+v���wq�-4.1/0�ymt���23��S�����5867R�3
�oW9:�����<[=L>E?B@AS	����CD���e���FIGH��R��;�"JKS����T4MTNQOP)TC���RS�}Xaz��UXVW�B��V�T%YZS45�\k]d^a_`����S��bcT�eehfgJ�����ijJ�J��SQlsmpno��S�J�?Uqr��8S�v�tazuaz�wazxazyzazv�t�az|�}�~@@g_@�@�@az@���@�@cW@�@�@iM@���������@�@�@�@�@M@�@�@c�@���@�@b�@�@�@�@�@�@li@�����@�@~@�@�@iM@���@�@b�@�@�@l�@�������@�@iM@�@�@aN@�@�@�@p�@�����@�@��@�@�@t�@���@�@`�@�@�@cW@����������@�@c�@�@�@`�@���@�@`�@�@�@N@�����@�@`�@�@�@M@���@�@`�@�@�@L�@�������@�@aN@�@�@`�@���@�@`�@�@�@`�@��@@N@@@A@	@@ak@
@@aN@
2 @@@@@p�@@@b�@@@b@@@��@!("%#@$@L@&@'@rf@)/*@+@,@-@.@N@0@1@g4@3B4;586@7@e�@9@:@b�@<?=@>@M@@@A@e�@CJDGE@F@lx@H@I@d{@KNL@M@`�@O@P@d@R�S�TsUdV]WZX@Y@cW@[@\@nW@^a_@`@e@b@c@`�@elfig@h@lx@j@k@d@mpn@o@��@q@r@d{@t�u|vyw@x@e�@z@{@M@}�~@@e@�@�@g�@�����@�@e�@�@�@b�@���@�@�@�@�@b�@���������@�@l@�@�@� @���@�@ՙ@�@�@iM@�����@�@�@�M�M�M�M�M�M�M�M�M�M�M�M�M�M������M�;�;M���M�dd�o�����MM�MM�o�JM�@�@iM@���@�@e@�@�@`�@�������@�@iM@�@�@d@���@�@lx@�@�@F�@�����@�@c�@�@�@az@���@�@c�@�@�@`�@�J��������@�@c�@�@�@�G@���@�@b�@�@�@��@
@@@@@|�@@	@�I@@
@nW@@@cW@;@@iM@@@d@@@L�@@ @!@"d{#d{$d{%d{&d{'d{(d{)d{*d{+d{,d{-d{.d{/d{0d{182534d{}��x67��=\99d{:d{��j<C=@>@?@lx@A@B@N@DGE@F@l@H@I@L@KjL[MTNQO@P@`�@R@S@xv@UXV@W@��@Y@Z@j*@\c]`^@_@lx@a@b@d@dge@f@d@h@i@iM@k�lvmsn@o@p@q@r@q~@t@u@iM@w}x@y@z@{@|@li@~@@�b@�����@�@lx@�@�@N@���@�@�@�@�@g4@�@�@��@���������������@�@�@�@�@d@�@�@L@���@�@��@�@�@M�@�����@�@lx@�@�@N@���@�@d{@�@�@�@�@�@m�@�������@�@cW@�@�@L�@�@�@�@M@�����@�@d@�@�@�:@���@�@M@�@�@d@���������@�@{
@�@�@c�@���@�@nW@�@�@M�@�����@�@�@�b���b�d$p�b��@�@xv@���@�@c�@�@�@�@��M�M��&MMMMA�MM	M
MM
Mg�g�MMM��MMM��A���tOMMMM q��;M�;M!$"#�M�%M%M�MM'(�M)*M+�,M-].M/>071423�����4�756�������-8;9:������<=�%�o�;�l?F@CAB����O�JDE����OaGJHI������+KL�
q�)x~NMOVPSQR�����
TU���ŹdWZXYy���O��[\M˜)x�(^}_n`gadbc�������ef���G�u�ehkij�������:lm��������ovpsqr���,�[�tu�|���
��wzxy���$����{|�o����)~��������~�o�����iÒĢ(������*��*��������%Ʌ�M�M��ʰ���*̣���M�����������<�s���������6
��0�����W�g�������M����1�������@�tO�^���m��)�������������-��L�������������������������ē���6�����KA��Z������O����M����M��˫˺�M�>M�M�M�����������)������������1������������M��~�OM��M�M�M�������M��M����A�tO�����M�q�q��;g�MM��M��M�Ug���M�C�M��M�
����M�M�Mg�M�Mg�Mg�Mg�MMMg�M	Mg�MMM
Mg�MMMg�M5M��A�MMA�M��tOtOM0 '!$)�"#M)�M%M&MM�M(+��)*M��M,.-MēM/M�M1M2M3M4M�OM6M7M8@9;�;:�;M<=q�M�>?M�MAMBMOaMDMEQFMGMHMIMJMKMLM��MNMOMPM�	MRMSMTM�~MV~WsX[YZM��tO��\]A�g�^i_f`cabM)�M�	de�M�O�;gMhM��MjpknlmM��M���oM�o��qMrMēMtMuMvzwMxMyMM�~{M|M}MM��M�M��M��M�����M�M�M�M�M�M�;M�MM�����MtOM��M�M��Mg��M�M�M�M���MM���M���M�M�M�M�M�M�M�M�M�M�M�M�M�M�M�M��M�MM��MM��M�M�M�M�M�M�M�M�M�M�M�M�M�M�MA�M�M�M�M�MM��M�M�M�M�M��M�OatO�M�M�������@�@c�@�@�@�@�@�@d@���@�@nW@�@�@�@�@�@L�@�����@�@e�@�@�@d{@���@�@j*@�@�@t�@����
���@�@M@@@M@@@~@@	@`�@
@@d@@@d{@@@{
@@@L�@�"@@cW@ @!@g_@#&$@%@`�@'@(@)@H:*+?,H:�-�.�/�01�2�3�4�5�6�7�8��9:<;��=>�s�{s�ֈ@AH:BH:CH:DH:EH:FH:GH:H�IH:JH:K�LH:MrN^OYs�PQVRTSH:UH:WXH:,>Z[�F\�F]�FH:�F_h`daObOcOH:Oe�*f�*g�*H:�*injH:kml�H:��H:o�p�q�H:�s�t}uyv!�w!�x!�H:!�z ]{ ]| ]H: ]~�N�N�NH:N�s��s��s�H:s����!���H:��H:�H:�H:����"��9�H:�H:�*H:�����@�@e�@�@�@�@�@�@M@���@�@�@�@�@M@�@�@`�@���������@�@`�@�@�@L�@���@�@b�@�@�@N@�����@�@g4@�@�@`�@���@�@b�@�@�@l�@�������@�@c�@�@�@d@���@�@�@�@�@c�@�@�@�@�@�@p�@�����@�@�@h�h��@�@�@�@�@g4@���@�@b�@�@�@li@�B�2�������@�@d{@�@�@L�@��@@M@@@b�@	@@e�@
@@aN@
@@L@@@p�@#@@b�@@@d@ @@`�@!@"@L@$+%(&@'@b�@)@*@li@,/-@.@L�@0@1@b�@3#45<697@8@j*@:@;@li@=>@?@@@azAazBazCDazE�FazazGHYazIJazKazLazMazNazOazPVQSRazv�b�TU���gQwWazXazt�v�Z�[�\az]p^az_az`kahbecdazw�az�yfg�v��1iazjazwqkXlazmaznogQu�wFv�azqazrazsaztazuazvazwxazyazzazaz{|az}az~azaz�az�az�az�az�az�az�az�
��az�az��az���az��az�az�K�az�Kaz��������wv�t��azgCm����b�v��az��v�azt��Kaz�az��az�az�az�az������b����w���������w�����v�v���az�azt�az�az������az��az���az���t��azaz��azazw�gQw���v�wv���az��azaz�K�az�az�az�az�az�az�az�az�azazwaz�az�azw�az�az�az�az�az�az�����������^��Z�
����
�1�L�����y��swF����w����������j�u���w8��w�T�����"���&�?�����Bwq���
��,J�S��Q���y��
	��4�L���az��azazazup@@li@@@e�@@@L@ @@�R@!@"@M@$3%,&)'@(@� @*@+@��@-0.@/@d@1@2@`�@4;586@7@e�@9@:@li@<?=@>@|@@@A@li@C�DfEWFPGMH@I@J@K@L@L@N@O@li@QTR@S@c�@U@V@li@X_Y\Z@[@e�@]@^@L�@`ca@b@ak@d@e@li@gvhoilj@k@�@m@n@b�@psq@r@`�@t@u@d@w~x{y@z@M@|@}@li@��@�@M@�@�@d@���������@�@�b@�@�@�@�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�az�wazw���@�@cW@�@�@��@�����@�@�@�@�@c�@�@�@li@���@�@iM@�@�@N@�������@�@c�@�@�@li@���@�@b�@�@�@li@��@��@�@li@���@�@L�@�@�@gn@�n��_����������@�@��@�@�@+c@���@�@ak@�@�@gn@�����@�@c�@�@�@#@���@�@N@�@�@ku@����@@b�@@@li@@@d@	@
@@@
@m�@@@M@@@��@@@�g@@@s8@@. '!$"@#@e�@%@&@li@(+)@*@`�@,@-@c�@/6031@2@lx@4@5@li@7:8@9@d{@;@<@=@>@?@l�@APBICFD@E@L@G@H@iM@JMK@L@��@N@O@iM@QXRUS@T@ՙ@V@W@N@Y\Z@[@L@]@^@L�@`�a�btcmdge@f@e�@h@i@j@k@l@`�@nqo@p@L�@r@s@ty@u�v�w@x@y@z}{|���&,��~,��	�=1��@�@iM@���@�@�@�@�@M@�@�@�@�@�@b�@�������@�@L@�@�@l�@���@�@�,@�@�@L�@�����@�@M@�@�@d@���@�@j*@�@�@t�@���������@�@`�@�@�@c�@���@�@�@L��L��L��L��L��L��L��L��L��L��L���@�@d@�����@�@d@�@�@�@���@�@aN@�@�@li@�������@�@c�@�@�@H:@���@�@M@�@�@l�@�����@�@�@������ՙ(�����dN�.�w�@�@b�@���@�@aN@�@�@d@�V"	@@iM@
@@H @
@@az@@@li@@@b@@@li@@@d@ @!@li@#G$@%=&@'@(@);*c�+c�,c�-c�.c�/c�0c�1c�2c�3c�4c�5c�6c�c�78c�9c�c�:ymc�c�<c��a>@?@+c@ADB@C@d{@E@F@li@HOILJ@K@e@M@N@gn@PSQ@R@b�@T@U@gn@WyXgY`Z][@\@��@^@_@iM@adb@c@M�@e@f@M@hrilj@k@d@m@n@o@p@q@M@svt@u@c�@w@x@M@z�{�|}@~@L@�@�@�@�@�@d@���@�@L@�@�@�@�@�@d@�����@�@�@����ՙ*��w ���OQ���!b�@�@L�@���@�@N@�@�@b�@�����������@�@�@�@�@M@�@�@+c@���@�@ak@�@�@�@����w�azazw�w��ww������@�@�@���������9;���������@�@�b@���@�@M@�@�@|�@�������@�@e�@�@�@N@���@�@`�@�@�@�@�����@�@�@�@�AeAe��Ae�Ae�AeAeB��@�@b�@���@�@M@�@�@�@�@�@b�@	@@`�@@@L@

@@M@@@li@@@g4@@@i@@@d@@@li@ /!("%#@$@cW@&@'@li@),*@+@ty@-@.@s8@07142@3@lx@5@6@xg@8k9@:@;@<�=M>M?�@}ATBOCMMDEMFMMGHMIJ�;MKMLMMMNM�;q�MPMQRSM�o�oMMUMVWMXMYMZM[M\x]t^aM_M`����bMcMMd��e��f��g��h��i��j��k��lm��no�p�q�r��s���uMMvMw�;MyMzM{M|MM��~���MM�M��MM�M�M�M��M�M��Mq�q�M�MM�M�M��M�M�M�M�M�Mg�M��M��M�M�M�M�M�M�M�M�M��M����MM�M��M�M�������A�tO��M��ML�������)��;���M������M�M���M�M�M�M�M�M�M�M���MA����MM���M�M�M�M�M�M��MM���M��M�M�MM�M�M��MM��M�M��MM��MM�M�M�M�M�M����Mg��g�MM�M�M��WM�M��DM����M�M�MM��M�Mg�MM�M�M��)�
�����tO���������	�A��g�
������������$���M���Oa� "!��;�#�����%�&�'�(���~*~+~,~-~.~/~0~12~~3~4~56~7~~89~:~~;~<=~>A?~@~~�;~BC~Oa~MEFMMG��HIRJMKMLMMMNMOMPMQg�Mg�MSMTMUMVMg�MXMYZh[M\M]M^M_M`MaMbMcMdMMefMgM�OMMiMj�;Ml@m@gn@o �p q�r�s�t{uxv@w@d@y@z@li@|�}@~@@�@�@N@�@�@s8@�����@�@ՙ@�@�@s8@���@�@iM@�@�@d@�������@�@e�@�@�@li@���@�@M@�@�@�@M��M�MM�M�M�M�M�M��MM�������@�@c�@�@�@d@���@�@az@�@�@d@���������@�@e�@�@�@ak@���@�@g4@�@�@d{@�����@�@d{@�@�@M@���@�@nW@�@�@�@�@�@l�@�������@�@d{@�@�@N@���@�@M@�@�@p�@�����@�@d@�@�@aN@���@�@d{@�@�@M@  F  !       @ @L�@ 	@ 
@M@   
@ @c�@ @ @d{@     @ @xv@ @ @c�@   @ @`�@ @  @`�@ " 7 # - $ * %@ &@ '@ (@ )@l@ +@ ,@M�@ . 4 /@ 0@ 1@ 2@ 3@N@ 5@ 6@L�@ 8 ? 9 < :@ ;@t�@ =@ >@y7@ @ C A@ B@L�@ D@ E@t�@ G f H W I P J M K@ L@L�@ N@ O@d@ Q T R@ S@aN@ U@ V@M@ X _ Y \ Z@ [@M�@ ]@ ^@L�@ ` c a@ b@iM@ d@ e@F�@ g v h o i l j@ k@`�@ m@ n@M@ p s q@ r@xv@ t@ u@b�@ w � x { y@ z@c�@ |@ }@ ~@  � �b�b� �b� � �b�b� �b� � �b� �b��b�b� �b��@ � � �@ �@iM@ �@ �@b�@ �!\ � � � � � � � � � � �@ �@ �@ �@ �@d@ �@ �@M@ � � �@ �@`�@ �@ �@l�@ � � � � �@ �@��@ �@ �@iM@ � � �@ �@j*@ �@ �@iM@ � � � � � � �@ �@ak@ �@ �@M@ � � �@ �@M@ �@ �@ty@ � � � � �@ �@b�@ �@ �@iM@ � � �@ �@c�@ �@ �@b�@ �!: � � � � � � �@ �@n�@ �@ �@c�@ � � �@ �@iM@ �@ �@d@ � � � � �@ �@N@ �@ �@aN@ �!7 �@ �@ �@ �d{ �d{ �d{ �d{ �d{ �d{ �d{ �d{ �d{ �d{ �d{ �d{ �d{!d{!d{!d{!!%d{!!!!d{!d{!d{!	d{!
d{!d{!d{!
d{!d{!d{!d{!d{!d{!d{!d{d�d{!d{!d{!d{!d{!d{!d{!d{!d{!d{!d{! d{!!d{!"d{!#d{!$d{}�d{d{!&d{!'!(d{!)d{!*d{!+d{!,d{!-d{!.d{!/d{!0d{!1d{!2d{!3d{!4d{!5d{!6d{}�d{!8@!9@N@!;!J!<!C!=!@!>@!?@`�@!A@!B@g4@!D!G!E@!F@d{@!H@!I@c�@!K!U!L!R!M@!N@!O@!Pg_!Qg_l�g_!S@!T@d@!V!Y!W@!X@c�@!Z@![@e�@!]!�!^!~!_!n!`!g!a!d!b@!c@N@!e@!f@L@!h!k!i@!j@t�@!l@!m@t�@!o!v!p!s!q@!r@lx@!t@!u@N@!w!{!x@!y@!z@q�M!|@!}@t�@!!�!�!�!�!�!�@!�@lx@!�@!�@y7@!�!�!�@!�@y7@!�@!�@b�@!�!�!�!�!�@!�@b@!�@!�@d{@!�!�!�@!�@!�@!�@!�@b�@!�@!�@d@!�!�!�!�!�!�!�!�!�@!�@e@!�@!�@N@!�!�!�@!�@!�@!�@!�@d@!�@!�@d@!�!�!�!�!�@!�@e@!�@!�@d@!�!�!�@!�@`�@!�@!�@p�@!�!�!�!�!�!�!�@!�@e�@!�@!�@N@!�!�!�@!�@d{@!�@!�@L@!�!�!�!�!�@!�@l@!�@!�@M@!�!�!�@!�@L�@!�@!�@b�@!�@!�@!�@!�&g!�$!�"�!�"w!�")!�"
!�!�!�!�!�!�!�@!�@d@!�@!�@�F@!�!�!�@!�@t�@!�@!�@�j@!�"!�"!�@!�@M@"@"@�j@"""@"@c�@"@"	@�j@"""""
""@"@h@"@"@M�@"""@"@l�@"@"@g4@""""""@"@L@" @"!@��@"#"&"$@"%@b�@"'@"(@M@"*"L"+"=","3"-"0".@"/@iM@"1@"2@d@"4"7"5@"6@g_@"8@"9@":@";@"<@L@">"E"?"B"@@"A@az@"C@"D@d@"F"I"G@"H@iM@"J@"K@H:@"M"\"N"U"O"R"P@"Q@iM@"S@"T@F�@"V"Y"W@"X@j*@"Z@"[@M@"]"d"^"a"_@"`@az@"b@"c@d@"e"h"f@"g@`�@"i@"j@"k@"l`�"m"v"n`�"o`�"p`�"q`�`�"r"s`�`�"t"u`�f�`��%`�"x"�"y"�"z"�"{"�"|""}@"~@d{@"�@"�@"�@"�@"�@j*@"�"�"�@"�@nW@"�@"�@M@"�"�"�"�"�@"�@az@"�@"�@t�@"�"�"�@"�@H:@"�@"�@b�@"�"�"�"�"�"�"�@"�@aN@"�@"�@i�@"�"�"�@"�@y7@"�@"�@h@"�"�"�"�"�@"�@az@"�@"�@t�@"�"�"�@"�@"�@"�"�"�Mg�MM"�Mg�"�@"�@`�@"�"�"�"�"�"�"�"�"�@"�@iM@"�@"�@d@"�"�"�@"�@L�@"�@"�@M�@"�"�"�"�"�@"�@�I@"�@"�@L@"�"�"�@"�@e�@"�@"�@l@"�"�"�"�"�"�"�@"�@d{@"�@"�@iM@"�"�"�@"�@e�@"�@"�@`�@"�"�"�"�"�@"�@az@"�@"�@d{@"�"�"�@"�@b�@"�@"�@iM@"�#�##E## ####
###@#@`�@#@#	@iM@###@#
@`�@#@#@c�@#####@#@li@#@#@`�@###@#@nW@#@#@iM@#!#3#"#)###&#$@#%@L�@#'@#(@xv@#*#-#+@#,@b�@#.@#/@#0@#1@#2@N@#4#;#5#8#6@#7@��@#9@#:@M@#<#B#=@#>@#?@#@@#A@g_@#C@#D@xv@#F#h#G#Y#H#O#I#L#J@#K@d@#M@#N@q~@#P#V#Q@#R@#S@#T@#U@M�@#W@#X@az@#Z#a#[#^#\@#]@��@#_@#`@L@#b#e#c@#d@b�@#f@#g@iM@#i#u#j#n#k@#l@#m@iM@#o#r#p@#q@b�@#s@#t@iM@#v#}#w#z#x@#y@�F@#{@#|@iM@#~#�#@#�@b�@#�@#�@+c@#�#�#�#�#�#�#�#�#�#�#�@#�@�b@#�@#�@gn@#�#�#�@#�@L�@#�@#�@e�@#�#�#�#�#�@#�@g_@#�@#�@b�@#�#�#�@#�@d{@#�@#�@�,@#�#�#�#�#�#�#�@#�@j�@#�@#�@rf@#�#�#�@#�@m�@#�@#�@iM@#�#�#�#�#�@#�@c�@#�@#�@iM@#�#�#�@#�@m�@#�@#�@iM@#�#�#�#�#�#�#�#�#�@#�@d{@#�@#�@iM@#�#�#�@#�@aN@#�@#�@iM@#�#�#�#�#�@#�@L�@#�@#�@iM@#�#�#�@#�@c�@#�@#�@iM@#�$#�$#�#�#�@#�@#�@#�`�#�`�#�`�#�`�#�`�#�`�#�`�#�`�#�`�#�`�#�`�#�`�#�`�#�`�#�`�#�`�#�`�#�#�`�i�i�`�#�@$@c�@$$$@$@b�@$@$@N@$	$$
$
$@$@az@$@$@$@$@$@b�@$$$@$@@&@$@$@$@$@$@b�@$%/$$�$ $_$!$@$"$1$#$*$$$'$%@$&@d{@$(@$)@xv@$+$.$,@$-@M@$/@$0@b�@$2$9$3$6$4@$5@az@$7@$8@L�@$:$=$;@$<@c�@$>@$?@b�@$A$P$B$I$C$F$D@$E@iM@$G@$H@d@$J$M$K@$L@li@$N@$O@d@$Q$X$R$U$S@$T@az@$V@$W@iM@$Y$\$Z@$[@li@$]@$^@iM@$`$�$a$p$b$i$c$f$d@$e@li@$g@$h@d@$j$m$k@$l@li@$n@$o@nW@$q$x$r$u$s@$t@az@$v@$w@c�@$y$|$z@${@li@$}@$~@$@$�@$�@b�@$�$�$�$�$�$�$�@$�@L@$�@$�@M�@$�$�$�@$�@|�@$�@$�@L�@$�$�$�$�$�@$�@az@$�@$�@iM@$�$�$�@$�@$�@$�@$�@d@$�@$�@xv@$�$�$�$�$�$�$�$�$�$�$�@$�@i�@$�@$�@rf@$�$�$�@$�@iM@$�@$�@L@$�$�$�$�$�@$�@$�@$�@$�@g_@$�@$�@N@$�$�$�@$�@ak@$�@$�@iM@$�$�$�$�$�$�$�@$�@$�@$�@$�@M�@$�@$�@$�@$�@$�@L@$�$�$�@$�@c�@$�@$�@L�@$�$�$�$�$�@$�@az@$�@$�@e�@$�$�$�@$�@��@$�@$�@Л@$�%$�$�$�$�$�$�$�@$�@c�@$�@$�@L@$�$�$�@$�@b�@$�@$�@j�@$�%%%%@%@az@%@%@@&@%%
%@%	@%
@%`�%`�Ģ`�%@%@H:@%% %%%%%@%@L�@%@%@L�@%%%@%@`�@%@%@M@%!%(%"%%%#@%$@az@%&@%'@q~@%)%,%*@%+@`�@%-@%.@iM@%0%�%1%s%2%Q%3%B%4%;%5%8%6@%7@M@%9@%:@`�@%<%?%=@%>@`�@%@@%A@d@%C%J%D%G%E@%F@`�@%H@%I@L@%K%N%L@%M@`�@%O@%P@c�@%R%d%S%]%T%Z%U@%V@%W@%X@%Y@ak@%[@%\@d@%^%a%_@%`@`�@%b@%c@d@%e%l%f%i%g@%h@az@%j@%k@`�@%m%p%n@%o@`�@%q@%r@M@%t%�%u%�%v%}%w%z%x@%y@�b@%{@%|@az@%~%�%@%�@`�@%�@%�@nW@%�%�%�%�%�@%�@az@%�@%�@%�@%�@%�@b�@%�%�%�@%�@`�@%�@%�@s8@%�%�%�%�%�%�%�@%�@d@%�@%�@t�@%�%�%�@%�@`�@%�@%�@%�@%�@%�@b�@%�%�%�%�%�@%�@l@%�@%�@iM@%�%�%�@%�@`�@%�@%�@c�@%�%�%�%�%�%�%�%�%�%�%�@%�@cW@%�@%�@ty@%�%�%�@%�@`�@%�@%�@N@%�%�%�%�%�@%�@iM@%�@%�@c�@%�%�%�@%�@`�@%�@%�@%�@%�@%�@M�@%�%�%�%�%�%�%�@%�@d@%�@%�@iM@%�%�%�@%�@`�@%�@%�@N@%�%�%�%�%�@%�@d@%�@%�@az@%�%�%�@%�@`�@%�@%�@h@%�&%�&%�&%�&&@&@d@&@&@E@&&	&@&@`�@&
@&@Л@&
&&&&@&@d{@&@&@e�@&&&@&@`�@&@&@aN@&&+&&$&&!&@& @L�@&"@&#@cW@&%&(&&@&'@ku@&)@&*@l@&,&6&-&0&.@&/@d@&1@&2@&3@&4@&5@g_@&7&d&8@&9@&:@&;M&<M&=M&>&_&?&U&@&Q&A&O&BM&CM&DM&E&K&FM&GM&HM&I&JMg��;M&LM&MM&NM�;MM&P�;M&Rg�&S&TM�;�;M&V&Z&W&XtOM&YMtOM&[&]&\MtOM&^Mg�M&`M&aM&bMM&ctOM&e@&f@g4@&h(�&i'�&j&�&k&�&l&�&m&&n&x&o&r&p@&q@N@&s@&t@&u@&v@&w@d@&y&|&z@&{@M@&}@&~@d@&�&�&�&�&�@&�@c�@&�@&�@nW@&�&�&�@&�@M@&�@&�@gn@&�&�&�&�&�&�&�@&�@b�@&�@&�@li@&�&�&�@&�@&�@&�@&�@t�@&�@&�@li@&�&�@&�&�@&�@M@&�&�&�@&�@M@&�@&�@L@&�&�&�&�&�&�&�&�&�@&�@g_@&�@&�@`�@&�&�&�@&�@M@&�@&�@ak@&�&�&�&�&�@&�@L@&�@&�@&�@&�@&�@nW@&�&�&�@&�@L@&�@&�@d{@&�&�&�&�&�&�&�@&�@d{@&�@&�@aN@&�&�&�@&�@�b@&�@&�@c�@&�&�&�&�&�@&�@��@&�@&�@b�@&�&�&�@&�@iM@&�@&�@&�@&�@&�@d@&�'B&�' &�'&�&�&�&�&�@&�@h@&�@&�@iM@&�'&�@'@d@'@'@`�@'''''@'@'	@'
H:'H:'H:'
H:'H:H:''H:'H:'H:'H:'H:'H:H:s�'@'@L@'''@'@M@'@'@cW@'!'3'"','#'&'$@'%@��@''@'(@')@'*@'+@d@'-'0'.@'/@M@'1@'2@t�@'4';'5'8'6@'7@d@'9@':@��@'<'?'=@'>@M@'@@'A@c�@'C'h'D'V'E'O'F'L'G@'H@'I@'J@'K@az@'M@'N@H:@'P'S'Q@'R@`�@'T@'U@b�@'W'^'X'['Y@'Z@az@'\@']@N@'_'b'`@'a@q~@'c@'d@'e@'f@'g@M@'i'{'j't'k'q'l@'m@'n@'o@'p@M@'r@'s@iM@'u'x'v@'w@M�@'y@'z@L@'|'�'}'�'~@'@M@'�@'�@L�@'�'�'�@'�@iM@'�@'�@'�@'�@'�@cW@'�('�'�'�'�'�'�'�'�'�'�'�@'�@c�@'�@'�@cW@'�'�'�@'�@xv@'�@'�@aN@'�'�'�'�'�@'�@'�@'�@'�@L�@'�@'�@d@'�'�'�@'�@d@'�@'�@��@'�'�'�'�'�'�'�@'�@b�@'�@'�@b�@'�'�'�@'�@`�@'�@'�@iM@'�'�'�'�'�@'�@'�@'�@'�@cW@'�@'�@M@'�'�'�@'�@iM@'�@'�@b�@'�'�'�'�'�'�'�'�'�@'�@j*@'�@'�@cW@'�'�'�@'�@'�@'�@'�@��@'�@'�@li@'�'�'�'�'�@'�@L�@'�@'�@iM@'�'�'�@'�@�b@'�@'�@iM@'�(
'�('�'�'�@'�@`�@'�@'�@b�@(((@(@m�@(@(@(@(@(	@d@(((((
@(@L�@(@(@li@(((@(@|�@(@(@M�@((S((:((+(($((!(@( @iM@("@(#@li@(%(((&@('@d{@()@(*@li@(,(3(-(0(.@(/@d@(1@(2@xv@(4(7(5@(6@j�@(8@(9@N@(;(G(<(C(=(@(>@(?@az@(A@(B@b�@(D@(E@(F@c�@(H(L(I@(J@(K@d@(M@(N@(O@(P@(Q@(R@b�@(T(j(U(a(V(](W@(X@(Y@(Z@([@(\@lx@(^@(_@(`@��@(b(f(c@(d@(e@d@(g@(h@(i@az@(k(w(l(p(m@(n@(o@c�@(q@(r@(s@(t@(u@(v@aN@(x(|(y@(z@({@sG@(}@(~@(@L@(�)&(�(�(�(�(�(�(�(�(�(�(�@(�@(�@b�@(�@(�@(�@cW@(�(�(�@(�@(�@iM@(�@(�@(�@g_@(�(�(�(�(�@(�@(�@d{@(�@(�@(�@d@(�(�(�@(�@(�@d{@(�@(�@(�@b�@(�(�(�(�(�(�(�@(�@(�@b�@(�@(�@(�@N@(�(�(�@(�@(�@c�@(�@(�@(�@��@(�(�(�(�(�@(�@(�@ak@(�@(�@(�@(�@(�@(�@M@(�(�(�@(�@(�@t�@(�@(�@(�@d@(�(�(�(�(�(�(�(�(�@(�@(�@M@(�@(�@(�@(�@(�@(�@N@(�(�(�@(�@(�@c�@(�@(�@(�@d@(�(�(�(�(�@(�@(�@i�@(�@(�@(�@f@(�(�(�@(�@(�@L@(�@(�@(�@`�@))))
)))@)@)@b�@)@)@)	@M�@)))@)
@)@az@)@)@)@ku@)))))@)@)@az@)@)@)@b�@))")@) @)!@j*@)#@)$@)%@`�@)')�)()O)))<)*)3)+)/),@)-@).@q~@)0@)1@)2@��@)4)8)5@)6@)7@�b@)9@):@);@�x@)=)F)>)B)?@)@@)A@b�@)C@)D@)E@d{@)G)K)H@)I@)J@iM@)L@)M@)N@d{@)P)�)Q)])R)Y)S@)T@)U@)V@)W@)X@L�@)Z@)[@)\@d{@)^)b)_@)`@)a@b�@)c@)d@)e@)f@)gaz)hazaz)i)jaz)k)�)laz)maz)n)yaz)oaz)paz)q)raz)saz)taz)uaz)vaz)waz)xazu�azaz)zaz){az)|)}az)~az)azazu�)�az)�az)�)�)�)�v�)�v�)�)�v�)�v�)�v�v�u�)�v�)�)�)�)�v�)�)�v�v�)�)�v�v�)�)�v�v�u�)�v�)�v�)�v�v�)�)�v�)�v�u�v�)�v�v�)�v�)�)�v�)�v�v�)�v�)�v�u�)�v�)�v�)�)�)�v�v�)�)�v�v�u�)�v�v�)�)�v�u�v�)�)�)�)�)�@)�@)�@b�@)�@)�@)�@d@)�)�)�@)�@)�@)�@)�@)�@`�@)�@)�@)�@iM@)�)�)�)�)�)�)�)�)�@)�@)�@)�@)�@)�@d@)�@)�@)�@)�@)�@)�@xv@)�)�)�@)�@)�@y7@)�@)�@)�@M@)�)�)�)�)�@)�@)�@b�@)�@)�@)�@c�@)�)�)�@)�@)�@c�@)�@)�@)�@lx@)�*)�)�)�)�)�@)�@)�@d@)�@)�@)�@iM@)�*)�@*@*@g4@*@*@*@iM@*****	@*
@*@�.@*
@*@*@iM@***@*@*@az@*@*@*@iM@*@*@*@*@*@*@@* @*!@*"*#*R*$@*%*(*&*'�@sG@*)*.**@*+@*,@*-@sG@*/*3*0@*1@*2@�@*4*?*5@*6@*7@*8@*9@*:@*;@*<@*=@*>@sG@*@*B*A@j@*C*D;@*E*L*F*I*G@*H@sG@*J@*K@j@*M*P*N@*O@sG@*Q@+@*S4}*T/_*U,�*V+�*W*�*X*�*Y*~*Z*o*[*h*\*b*]@*^@*_@*`@*a@sG@*c@*d@*e@*f@*g@sG@*i@*j@*k@*l@*m@*n@�@*p*w@*q*r@*s@*t@*u@*v@{@*x@*y@*z@*{@*|@*}@�@**�*�*�*�*�*�@*�@*�@*�@*�@sG@*�@*�@*�@*�@*�@sG@*�@*�@*�@*�@*�@*�@
@*�*�*�*�*�@*�@*�@*�@*�@@*�@*�@*�@*�@*�@�@*�@*�@*�@*�@*�@*�@sG@*�*�*�*�*�*�*�*�*�@*�@*�@*�@*�@sG@*�@*�@*�@*�@*�@sG@*�@*�@*�@*�@*�@*�@�@*�*�*�*�*�@*�@*�@*�@*�@�@*�@*�@*�@*�@*�@{@*�@*�@*�@*�@*�@*�@;@*�*�*�@*�*�*�@*�@*�@*�@*�@
@*�@*�@*�@*�@*�@�@*�@*�*�*�@*�@*�@*�@*�@
@*�@*�@*�@*�@*�@{@*�+D*�+*�+
*�+*�*�*�@*�@*�@*�@*�@sG@*�@*�@+@+@+@�@+@+@+@+@+@+	@�@+++++
@+@+@+@+@�@+@+@+@+@+@ @+@+@+@+@+@+@sG@+ +/+!+(@+"+#@+$@+%@+&@+'@�_@+)@+*@++@+,@+-@+.@sG@+0+=+1+7+2@+3@+4@+5@+6@K@+8@+9@+:@+;@+<@�@+>@+?@+@@+A@+B@+C@
@+E+p+F+[+G+T+H+N+I@+J@+K@+L@+M@sG@+O@+P@+Q@+R@+S@sG@+U@+V@+W@+X@+Y@+Z@sG@+\+i+]+c+^@+_@+`@+a@+b@sG@+d@+e@+f@+g@+h@�@+j@+k@+l@+m@+n@+o@�@+q+�+r+{+s+u+t@@+v@+w@+x@+y@+z@sG@+|@+}@+~@+@+�@+�@sG@+�+�+�+�+�@+�@+�@+�@+�@lx@+�@+�@+�@+�@+�@sG@+�@+�@+�@+�@+�@+�@sG@+�,3+�+�+�+�+�+�+�+�+�+�+�@+�@+�@+�@+�@sG@+�@+�@+�@+�@+�@k@+�@+�@+�@+�@+�@+�@�@+�+�+�+�+�@+�@+�@+�@+�@sG@+�@+�@+�@+�@+�@sG@+�@+�@+�@+�@+�@+�@K@+�+�+�@+�+�+�@+�@+�@+�@+�@sG@+�@+�@+�@+�@+�@sG@+�+�+�+�+�@+�@+�@+�@+�@j@+�@+�@+�@+�@+�@@+�@+�@+�@+�@+�@+�@J@+�,+�+�+�+�@+�+�@+�@+�@+�@+�@sG@+�@+�@+�@+�@+�@+�@sG@+�,+�,+�@+�@+�@,@,@sG@,@,@,@,@,@�@,	@,
@,@,@,
@,@ @,,,@,,,@,@,@,@,@sG@,@,@,@,@,@J@,,,, ,&,!@,"@,#@,$@,%@sG@,'@,(@,)@,*@,+@@,-@,.@,/@,0@,1@,2@sG@,4,�,5,Z,6,E,7,>@,8,9@,:@,;@,<@,=@@,?@,@@,A@,B@,C@,D@sG@,F,S,G,M,H@,I@,J@,K@,L@sG@,N@,O@,P@,Q@,R@sG@,T@,U@,V@,W@,X@,Y@sG@,[,p,\,i,],c,^@,_@,`@,a@,b@@,d@,e@,f@,g@,h@;@,j@,k@,l@,m@,n@,o@�@,q,~,r,x,s@,t@,u@,v@,w@�@,y@,z@,{@,|@,}@sG@,@,�@,�@,�@,�@,�@sG@,�,�,�,�,�,�,�,�,�@,�@,�@,�@,�@sG@,�@,�@,�@,�@,�@;@,�@,�@,�@,�@,�@,�@@,�,�,�,�,�@,�@,�@,�@,�@sG@,�@,�@,�@,�@,�@sG@,�@,�@,�@,�@,�@,�@J@,�,�,�@,�,�,�@,�@,�@,�@,�@�@,�@,�@,�@,�@,�@Z@,�,�,�,�,�@,�@,�@,�@,�@�@,�@,�@,�@,�@,�@�_@,�@,�@,�@,�@,�@,�@�@,�.;,�-s,�-",�,�,�,�,�@@,�,�@,�@,�@,�@,�@sG@,�,�,�,�,�@,�@,�@,�@,�@sG@,�@,�@,�@,�@,�@sG@,�@,�@,�@,�@,�@,�@sG@,�-
,�-,�-,�@,�@,�@,�@,�@Z@-@-@-@-@-@�@-@-@-	@-
@-@-@�@-----@-@-@-@-@�@-@-@-@-@-@�@-@-@-@-@- @-!@�@-#-H-$-9-%-2-&-,-'@-(@-)@-*@-+@�@--@-.@-/@-0@-1@sG@-3@-4@-5@-6@-7@-8@�@-:-A@-;-<@-=@->@-?@-@@�@-B@-C@-D@-E@-F@-G@
@-I-^-J-W-K-Q-L@-M@-N@-O@-P@sG@-R@-S@-T@-U@-V@�@-X@-Y@-Z@-[@-\@-]@sG@-_-l-`-f-a@-b@-c@-d@-e@@-g@-h@-i@-j@-k@�@-m@-n@-o@-p@-q@-r@ @-t-�-u-�-v-�-w-�-x-~-y@-z@-{@-|@-}@lx@-@-�@-�@-�@-�@�@-�@-�@-�@-�@-�@-�@�@-�-�-�-�-�@-�@-�@-�@-�@sG@-�@-�@-�@-�@-�@�@-�@-�@-�@-�@-�@-�@�@-�-�-�-�@-�-�@-�@-�@-�@-�@sG@-�@-�@-�@-�@-�@-�@-�@-��-��-��-�-�-��-�-�-�-����-�-�-����-�-�-��-�-��"��2B-�-��R�-��-��-�-�-��-�-�b��-��-�-�b2R�-�-�-�-�-�@-�@-�@-�@-�@J@-�@-�@-�@-�@-�@sG@-�@-�@-�@-�@-�@-�@@-�.-�-�-�-�-�-�-�@-�@-�@-�@-�@sG@-�@-�@-�@-�@-�@sG@-�@-�@-�@-�@-�@-�@�@-�.	-�.-�@-�@.@.@.@sG@.@.@.@.@.@�@.
@.@.@.
@.@.@�@..&.....@.@.@.@.@�@.@.@.@.@.@�@. @.!@."@.#@.$@.%@sG@.'.4.(...)@.*@.+@.,@.-@�@./@.0@.1@.2@.3@sG@.5@.6@.7@.8@.9@.:@�@.<.�.=.�.>.i.?.T.@.M.A.G.B@.C@.D@.E@.F@[@.H@.I@.J@.K@.L@�@.N@.O@.P@.Q@.R@.S@sG@.U.b.V.\.W@.X@.Y@.Z@.[@�@.]@.^@._@.`@.a@�@.c@.d@.e@.f@.g@.h@�@.j..k.x.l.r.m@.n@.o@.p@.q@�_@.s@.t@.u@.v@.w@�@.y@.z@.{@.|@.}@.~@�@.�.�.�.�.�@.�@.�@.�@.�@�@.�@.�@.�@.�@.�@�@.�@.�@.�@.�@.�@.�@sG@.�.�.�.�.�.�.�.�.�@.�@.�@.�@.�@sG@.�@.�@.�@.�@.�@�@.�@.�@.�@.�@.�@.�@��@.�.�.�.�.�@.�@.�@.�@.�@sG@.�@.�@.�@.�@.�@sG@.�@.�@.�@.�@.�@.�@sG@.�.�.�.�.�.�.�@.�@.�@.�@.�@sG@.�@.�@.�@.�@.�@�@.�@.�@.�@.�@.�@.�@sG@.�.�.�.�.�@.�@.�@.�@.�@k@.�@.�@.�@.�@.�@j@.�@.�@��@.�/'.�/.�.�.�.�.�@.�@.�@.�@.�@.�@�@.�@.�@.�@.�@.�@.�@;@.�/.�@.�@.�@.�@.�@/@sG@/@/@/@/@/@/@�@/	//
//@/@/
@/@/@/@�@/@/@/@/@/@/@sG@// /@/@/@/@/@/@�@/!@/"@/#@/$@/%@/&@�@/(/@/)/1@/*/+@/,@/-@/.@//@/0@sG@/2/9/3@/4@/5@/6@/7@/8@[@/:@/;@/<@/=@/>@/?@�@/A/P/B/I/C@/D@/E@/F@/G@/H@�@/J@/K@/L@/M@/N@/O@�@/Q/X/R@/S@/T@/U@/V@/W@�@/Y@/Z@/[@/\@/]@/^@lx@/`2/a0�/b0/c/�/d/�/e/z/f/s/g/m/h@/i@/j@/k@/l@sG@/n@/o@/p@/q@/r@sG@/t@/u@/v@/w@/x@/y@�@/{/�/|/�/}@/~@/@/�@/�@�@/�@/�@/�@/�@/�@�@/�@/�@/�@/�@/�@/�@�@/�/�/�/�/�/�/�@/�@/�@/�@/�@sG@/�@/�@/�@/�@/�@sG@/�@/�@/�@/�@/�@/�@z@/�/�/�/�/�@/�@/�@/�@/�@sG@/�@/�@/�@/�@/�@sG@/�@/�@/�@/�@/�@/�@�@/�/�/�/�/�/�/�/�/�@/�@/�@/�@/�@@/�@/�@/�@/�@/�@�@/�@/�@/�@/�@/�@/�@sG@/�/�/�/�/�@/�@/�@/�@/�@�@/�@/�@/�@/�@/�@[@/�@/�@/�@/�@/�@/�@�@/�/�/�/�/�/�/�@/�@/�@/�@/�@sG@/�@/�@/�@/�@/�@�@/�@/�@/�@/�@/�@/�@sG@/�0
/�0/�@0@0@0@0@K@0@0@0@0@0	@sG@0@0@0
@0@0@0@@00i00>00)00"000@0@0@0@0@�@0@0@0@0 @0!@z@0#@0$@0%@0&@0'@0(@sG@0*070+010,@0-@0.@0/@00@sG@02@03@04@05@06@sG@08@09@0:@0;@0<@0=@�@0?0T0@0M0A0G0B@0C@0D@0E@0F@sG@0H@0I@0J@0K@0L@�@0N@0O@0P@0Q@0R@0S@sG@0U0b0V0\0W@0X@0Y@0Z@0[@[@0]@0^@0_@0`@0a@�@0c@0d@0e@0f@0g@0h@sG@0j0�0k0�0l0y0m0s0n@0o@0p@0q@0r@{@0t@0u@0v@0w@0x@+@0z@0{@0|@0}@0~@0@sG@0�0�@0�0�@0�@0�@0�@0�@sG@0�@0�@0�@0�@0�@0�@�@0�0�0�0�0�0�0�@0�@0�@0�@0�@0�@�0�0�����0�@0�@0�@0�@0�@�@0�@0�@0�@0�@0�@0�@�@0�0�0�0�0�@0�@0�@0�@0�@sG@0�@0�@0�@0�@0�@sG@0�@0�@0�@0�@0�@0�@sG@0�1`0�1	0�0�0�0�0�0�0�0�0�@0�@0�@0�@0�@sG@0�@0�@0�@0�@0�@
@0�@0�@0�@0�@0�@0�@sG@0�0�0�0�0�@0�@0�@0�@0�@sG@0�@0�@0�@0�@0�@�R@0�@0�@0�@0�@0�@0�@sG@0�0�0�@@0�0�@0�@0�@0�@0�@sG@0�10�0�0�@0�@0�@0�@0�@�@0�@0�@0�@1@1@�@1@1@1@1@1@1@�@1
1511 111
11@1@1@1@1@�@1@1@1@1@1@sG@1@1@1@1@1@1@�@1!1.1"1(1#@1$@1%@1&@1'@
@1)@1*@1+@1,@1-@sG@1/@10@11@12@13@14@k@161K171D181>19@1:@1;@1<@1=@@1?@1@@1A@1B@1C@[@1E@1F@1G@1H@1I@1J@sG@1L1Y1M1S1N@1O@1P@1Q@1R@;@1T@1U@1V@1W@1X@�@1Z@1[@1\@1]@1^@1_@sG@1a1�1b1�1c1x1d1q1e1k1f@1g@1h@1i@1j@�@1l@1m@1n@1o@1p@sG@1r@1s@1t@1u@1v@1w@sG@1y1�1z1�1{@1|@1}@1~@1@�@1�@1�@1�@1�@1�@�@1�@1�@1�@1�@1�@1�@sG@1�1�1�1�1�1�1�@1�@1�@1�@1�@sG@1�@1�@1�@1�@1�@;@1�@1�@1�@1�@1�@1�@z@1�1�1�1�1�@1�@1�@1�@1�@sG@1�@1�@1�@1�@1�@{@1�@1�@1�@1�@1�@1�@�@1�1�1�1�1�1�1�1�1�@1�@1�@1�@1�@
@1�@1�@1�@1�@1�@J@1�@1�@1�@1�@1�@1�@�@1�1�1�1�1�@1�@1�@1�@1�@sG@1�@1�@1�@1�@1�@K@1�@1�@1�@1�@1�@1�@k@1�1�1�1�1�1�1�@1�@1�@1�@1�@sG@1�@1�@1�@1�@1�@sG@1�@1�@1�@1�@1�@1�@�@1�21�21�@1�@1�@2@2@sG@2@2@2@2@2@�@2	@2
@2@2@2
@2@sG@23g22�22i22>22)22"222@2@2@2@2@sG@2@2@2@2 @2!@sG@2#@2$@2%@2&@2'@2(@�@2*272+212,@2-@2.@2/@20@;@22@23@24@25@26@sG@28@29@2:@2;@2<@2=@sG@2?2T2@2M2A2G2B@2C@2D@2E@2F@�@2H@2I@2J@2K@2L@�@2N@2O@2P@2Q@2R@2S@sG@2U2b2V2\2W@2X@2Y@2Z@2[@�@2]@2^@2_@2`@2a@@2c@2d@2e@2f@2g@2h@sG@2j2�2k2�2l2y2m2s2n@2o@2p@2q@2r@�@2t@2u@2v@2w@2x@�@2z@2{@2|@2}@2~@2@sG@2�2�2�2�2�@2�@2�@2�@2�@sG@2�@2�@2�@2�@2�@@2�@2�@2�@2�@2�@2�@@2�2�2�2�2�2�2�@2�@2�@2�@2�@
@2�@2�@2�@2�@2�@sG@2�@2�@2�@2�@2�@2�@��@2�2�2�2�2�@2�@2�@2�@2�@;@2�@2�@2�@2�@2�@�@2�@2�@2�@2�@2�@2�@{@2�32�2�2�2�2�2�2�2�2�@2�@2�@2�@2�@sG@2�@sG@2�@2�@2�@2�@2�@2�@k@2�2�2�2�2�@2�@2�@2�@2�@sG@2�@2�@2�@2�@2�@sG@2�@2�@2�@2�@2�@2�@�@2�2�2�2�2�2�2�@2�@2�@2�@2�@sG@2�@2�@2�@2�@2�@�_@2�@2�@2�@2�@2�@2�@�@33
333@3@3@3@3@sG@3@3	@3
@3@3@�@3@3@3@3@3@3@sG@33@33+33$333@3@3@3@3@��@3@3 @3!@3"@3#@�@3%@3&@3'@3(@3)@3*@�@3,393-333.@3/@30@31@32@�@34@35@36@37@38@sG@3:@3;@3<@3=@3>@3?@�_@3A3R3B3O3C3I3D@3E@3F@3G@3H@�@3J@3K@3L@3M@3N@�_@3P@3Q@�@3S3`3T3Z3U@3V@3W@3X@3Y@��@3[@3\@3]@3^@3_@�@3a@3b@3c@3d@3e@3f@�@3h4	3i3�3j3�3k3�3l3y3m3s3n@3o@3p@3q@3r@�@3t@3u@3v@3w@3x@
@3z@3{@3|@3}@3~@3@sG@3�@3�3�3�@3�@3�@3�@3�@r@3�@3�@3�@3�@3�@[@3�3�3�3�3�3�3�@3�@3�@3�@3�@�@3�@3�@3�@3�@3�@sG@3�@3�@3�@3�@3�@3�@sG@3�3�3�3�3�@3�@3�@3�@3�@j@3�@3�@3�@3�@3�@�@3�@3�@3�@3�@3�@3�@sG@3�3�3�3�3�@3�3�3�@3�@3�@3�@3�@sG@3�@3�@3�@3�@3�@�@3�3�3�3�3�@3�@3�@3�@3�@sG@3�@3�@3�@3�@3�@�_@3�@3�@3�@3�@3�@3�@sG@3�3�3�3�3�3�3�@3�@3�@3�@3�@K@3�@3�@3�@3�@3�@sG@3�@3�@3�@3�@3�@3�@sG@3�43�3�3�@3�@3�@3�@3�@J@3�@3�@3�@4@4@�@4@4@4@4@4@4@sG@4
4E44*444
44@4@4@4@4@4@@4@4@4@4@4@4@�@44#4@4@4@4 @4!@4"@sG@4$@4%@4&@4'@4(@4)@�_@4+4:4,434-@4.@4/@40@41@42@�@44@45@46@47@48@49@[@4;4>4<@4=@�@4?@4@@4A@4B@4C@4D@sG@4F4^4G4O4H@4I@4J@4K@4L@4M@4N@+@4P4W4Q@4R@4S@4T@4U@4V@sG@4X@4Y@4Z@4[@4\@4]@�@4_4n4`4g4a@4b@4c@4d@4e@4f@�@4h@4i@4j@4k@4l@4m@sG@4o4v4p@4q@4r@4s@4t@4u@�@4w@4x@4y@4z@4{@4|@sG@@4~@44�82@4�4�6V4�5y4�4�4�4�4�4�4�4�4�4�4�4�4�@4�@+@4�@4�@�R@4�4�4�@4�@sG@4�@4�@�@4�4�4�@4�@4�@sG@4�4�4�@4�@�@4�@4�@lx@4�4�4�4�4�4�4�@4�@sG@4�@4�@sG@4�4�4�@4�@�@4�@4�@�@4�4�4�4�4�@4�@sG@4�@4�@sG@4�4�4�@4�@�@4�@4�@�@4�4�4�4�4�4�4�4�4�@4�@�@4�@4�@�@4�4�4�@4�@J@4�@4�@sG@4�4�4�4�4�@4�@sG@4�@4�@sG@4�4�4�@4�@�@4�@4�@�@4�4�4�4�4�@4�@4�@sG@4�4�4�@4�@sG@4�@4�@sG@4�4�4�4�4�@4�@sG@4�@4�@��@4�4�4�@4�@�@4�@4�@�R@4�5=4�55555555@5@�@5@5@��@5	55
@5@[@5
@5@�@55555@5@�@5@5@sG@555@5@sG@5@5@sG@55.5 5'5!5$5"@5#@sG@5%@5&@;@5(5+5)@5*@[@5,@5-@
@5/56505351@52@�@54@55@@575:58@59@�@5;@5<@sG@5>5Z5?5K5@5D5A@5B@5C@�@5E5H5F@5G@sG@5I@5J@�@5L5S5M5P5N@5O@sG@5Q@5R@sG@5T5W5U@5V@�@5X@5Y@sG@5[5j5\5c5]5`5^@5_@	�@5a@5b@�@5d5g5e@5f@sG@5h@5i@@5k5r5l5o5m@5n@sG@5p@5q@sG@5s5v5t@5u@sG@5w@5x@sG@5z5�5{5�5|5�5}5�5~5�55�5�@5�@sG@5�@5�@sG@@5�5�@5�@sG@5�5�5�5�5�@5�@sG@5�@5�@@5�5�5�@5�@sG@5�@5�@�@5�5�5�5�5�@5�@5�@�@5�5�5�@5�@;@5�@5�@sG@5�5�5�5�5�@5�@j@5�@5�@k@5�5�5�@5�@@5�@5�@sG@5�5�5�5�5�5�5�5�5�@5�@j@5�@5�@�@5�5�5�@5�@sG@5�@5�@�@5�5�@5�5�@5�@�@5�@5�@5�@@5�5�5�5�5�5�5�@5�@�@5�@5�@@5�5�5�@5�@sG@5�@5�@K@5�5�5�5�5�@5�@�@5�@5�@k@@5�5�@5�@[@5�65�5�5�@5�@5�sG5�sG5�sG5�sG5�sG5�sG5�sG5�5�sG5�5�sG5�sGsG��5�sG5�sGsG5��sG5�666@66@6@sG@666@6@�@6	@6
@;@666
66@6@[@6@6@;@@66@6@�@66766(66!666@6@sG@6@6 @sG@6"6%6#@6$@sG@6&@6'@z@6)606*6-6+@6,@sG@6.@6/@j@616462@63@@65@66@�@686G696@6:6=6;@6<@sG@6>@6?@ @6A6D6B@6C@sG@6E@6F@sG@6H6O6I6L6J@6K@[@6M@6N@sG@6P6S6Q@6R@sG@6T@6U@
@6W7H6X6�6Y6�6Z6v6[6j6\6c6]6`6^@6_@1�@6a@6b@sG@6d6g6e@6f@�@6h@6i@sG@6k6o6l@6m@6n@sG@6p6s6q@6r@�R@6t@6u@�@6w6�6x66y6|6z@6{@sG@6}@6~@sG@6�6�6�@6�@��@6�@6�@;@6�6�6�6�6�@6�@+@6�@6�@sG@6�6�6�@6�@sG@6�@6�@�@6�6�6�6�6�6�6�@6�@6�@sG@6�6�6�@6�@z@6�@6�@sG@6�6�6�6�6�@6�@@6�@6�@@6�6�6�@6�@sG@6�@6�@;@6�6�6�6�6�6�6�@6�@sG@6�@6�@;@@6�6�@6�@sG@6�6�6�6�6�@6�@sG@6�@6�@sG@6�6�6�@6�@+@6�@6�@sG@6�76�6�6�6�6�6�6�6�6�@6�@@6�@6�@K@6�6�6�@6�@sG@6�@6�@�_@6�6�6�6�6�@6�@�@6�@6�@sG@@6�6�@6�@sG@6�6�6�6�6�6�6�@6�@sG@6�@6�@sG@6�6�6�@6�@sG@6�@6�@sG@6�76�76�@7@sG@7@7@sG@777@7@sG@7	@7
@�@77+7
777777@7@sG@7@7@sG@777@7@�@7@7@sG@77$77!7@7 @�@7"@7#@�@7%7(7&@7'@sG@7)@7*@j@7,757-717.@7/@70@�@@7273@74@sG@767=777:78@79@sG@7;@7<@sG@7>7E7?@7@@7A@7B@7C@7D@sG@7F@7G@sG@7I7�7J7�7K7d7L7X7M7T7N7Q7O@7P@;@7R@7S@@@7U7V@7W@k@7Y7]@7Z7[@7\@sG@7^7a7_@7`@sG@7b@7c@�@7e7q7f7m7g7j7h@7i@�@7k@7l@sG@7n@7o@7p@�@7r7y7s7v7t@7u@sG@7w@7x@�@7z7}7{@7|@sG@7~@7@sG@7�7�7�7�7�7�7�7�7�@7�@�@7�@7�@sG@7�7�7�@7�@sG@7�@7�@sG@7�7�7�7�7�@7�@J@7�@7�@sG@7�7�7�@7�@[@7�@7�@J@7�7�7�7�7�7�7�@7�@�@7�@7�@sG@7�7�7�@7�@;@7�@7�@sG@7�7�7�7�7�@7�@sG@7�@7�@�@7�7�7�@7�@�@7�@7�@K@7�7�7�7�7�7�7�7�7�7�7�@7�@
@7�@7�@�@7�7�7�@7�@sG@7�@7�@sG@7�7�7�7�7�@7�@sG@7�@7�@sG@7�@7�@7�@sG@7�7�7�7�7�7�7�@7�@sG@7�@7�@sG@@7�7�@7�@K@7�7�7�7�7�@7�@sG@7�@7�@�@7�7�7�@7�@_@7�@7�@sG@7�87�8
7�87�87�@7�@+@8@8@�@888@8@�@8@8	@sG@888@8
@8@lx@@88@8@[@88#88888@8@sG@8@8@�@88 8@8@sG@8!@8"@�@8$8+8%8(8&@8'@sG@8)@8*@
@8,8/8-@8.@
@80@81@�@83<t84:8859_868�878v888W898H8:8A8;8>8<@8=@�@8?@8@@�@8B8E8C@8D@sG@8F@8G@�@8I8P8J8M8K@8L@sG@8N@8O@sG@8Q8T8R@8S@sG@8U@8V@�@8X8g8Y8`8Z8]8[@8\@�@8^@8_@K@8a8d8b@8c@sG@8e@8f@
@8h8o8i8l8j@8k@@8m@8n@K@8p8s8q@8r@�@8t@8u@sG@8w8�8x8�8y8�8z8}8{@8|@sG@8~@8@sG@8�8�8�@8�@sG@8�@8�@�@8�8�8�@8�@8�@sG@8�8�8�@8�@�@8�@8�@�@8�8�8�8�8�8�8�@
@8�@8�@sG@8�@8�@8�@lx@8�8�8�8�8�@8�@Z@8�@8�@sG@8�8�8�@8�@sG@8�@8�@�@8�8�8�8�8�8�@8�8�8�8�@8�@sG@8�@8�@�@8�8�@8�8�@8�@�@8�8�8�@8�@�@8�@8�@;@8�8�8�8�8�8�8�@8�@k@8�@8�@sG@8�8�8�@8�@sG@8�@8�@sG@8�8�8�8�8�@8�@@8�@8�@[@8�8�8�@8�@J@8�@8�@sG@8�9@8�918�8�8�8�8�@8�@�@8�@8�@�@8�@8�@8�@8�@8�98�@8�@8�@8�@8�@8�@8�@8�@8�@8�@8�@8�@9@9@9@9@9@9@9@9@9@9	@9
@9@9@9
@9@9@9@9@�@9@9@9@9@9@9@9@9@9@9@9@9@9@9 @9!@9"@9#@9$@9%@9&@9'@9(@9)@9*@9+@9,@9-@9.@9/@90@�@9299939694@95@sG@97@98@sG@9:9=9;@9<@�@9>@9?@sG@9A9P9B9I9C9F9D@9E@sG@9G@9H@@9J9M9K@9L@�@9N@9O@�@9Q9X9R9U9S@9T@sG@9V@9W@sG@9Y9\9Z@9[@sG@9]@9^@sG@9`9�9a9�9b9w9c9k9d@9e9h9f@9g@[@9i@9j@sG@9l9p9m@9n@9o@K@9q9t9r@9s@+@9u@9v@sG@9x9�9y9}@9z9{@9|@lx@9~@9@9�@@9�9�@9�9�@9�@sG@9�9�9�@9�@�@9�@9�@sG@9�9�9�9�9�9�9�9�9�@9�@@9�@9�@sG@9�@9�@9�@z@9�9�9�9�9�@9�@sG@9�@9�@sG@9�9�9�@9�@sG@9�@9�@sG@9�9�9�9�@9�9�@9�@��@9�@9�@9�@sG@9�9�9�9�9�@9�@�@9�@9�@
@9�9�9�@9�@
@9�@9�@
@9�:9�9�9�9�9�9�9�9�9�@9�@sG@9�@9�@k@9�9�9�@9�@�R@9�@9�@sG@9�9�9�9�9�@9�@
@9�@9�@@9�9�9�@9�@sG@9�@9�@sG@9�9�9�9�9�9�9�@9�@sG@9�@9�@��@9�9�9�@9�@sG@9�@9�@�@9�9�9�9�9�@9�@lx@9�@9�@sG@@9�9�@9�@�@::::::
:::@:@sG@:@:	@�@:::@:
@sG@:@:@sG@:@:::@:@z@:@:@�@::)::":::@:@sG@: @:!@sG@:#:&:$@:%@k@:'@:(@�@:*:1:+:.:,@:-@�@:/@:0@sG@:2:5:3@:4@sG@:6@:7@�@:9;=:::�:;:q:<:X:=:I:>:E:?:B:@@:A@sG@:C@:D@�@@:F:G@:H@�@:J:Q:K:N:L@:M@+@:O@:P@
@:R:U:S@:T@J@:V@:W@+@:Y:e:Z:a:[:^:\@:]@sG@:_@:`@sG@:b@:c@:d@sG@:f:j:g@:h@:i@sG@:k:n:l@:m@sG@:o@:p@sG@:r:�:s:�:t:{:u:x:v@:w@sG@:y@:z@sG@:|::}@:~@J@:�@:�@+@:�:�:�:�:�@:�@�@:�@:�@sG@:�:�:�@:�@sG@:�@:�@sG@:�:�:�:�:�:�:�@:�@sG@:�@:�@sG@:�:�:�@:�@+@:�@:�@�@:�:�:�:�:�@:�@sG@:�@:�@sG@:�:�:�@:�@sG@:�@:�@sG@:�:�:�:�:�:�:�:�:�:�:�@:�@sG@:�@:�@sG@:�:�:�@:�@j@:�@:�@�_@:�:�:�:�:�@:�@�@:�@:�@sG@:�:�:�@:�@:�@:�lx:�lx:�lx:�lx:�lx:�lx:�lx:�lx:�lx:�lx:�:�1�lx1�lx:�@:�@
@:�:�:�:�@:�:�@:�@�@:�:�:�@:�@�R@:�@:�@@:�:�:�:�:�@:�@��@:�@:�@K@:�:�:�@:�@sG@:�@:�@�@:�;$:�;:�;@:�:�@;@sG@@;;@;@;@;sG;sG;sG;	sG;
sG;sG;sG;
sG;sG;sG;sG;sG;sG;;;sGsG�;;sG�[�ksG;; ;;;@;@�@;@;@sG@;!@;"@;#@sG@;%;1;&;-;';*;(@;)@�@;+@;,@z@@;.;/@;0@+@;2;6;3@;4@;5@k@;7;:;8@;9@sG@;;@;<@z@;>;�;?;r;@;\;A;P;B;I;C;F;D@;E@�@;G@;H@��@;J;M;K@;L@sG@;N@;O@J@;Q;X;R;U;S@;T@�@;V@;W@;@@;Y;Z@;[@�@;];f;^;b;_@;`@;a@�@@;c;d@;e@[@;g;k@;h;i@;j@sG@;l;o;m@;n@*@;p@;q@@;s;�;t;�;u;y;v@;w@;x@lx@;z;};{@;|@�@;~@;@z@;�;�@;�;�@;�@_@;�;�;�@;�@
@;�@;�@K@;�;�;�;�@;�;�@;�@�@;�;�;�@;�@[@;�@;�@;�@;�sGsG;�;�sG;�sG;�sG;�sG;�sG;�sG;�sG;�sG;�;�;�;�;�;�sG;�sG;�sG��;�sG��sG;�;�;�;��sG�sG;�sG��sG;�sG;�sG;�sG��sG;�;�;�;�;�@;�@sG@;�@;�@sG@;�;�;�@;�@sG@;�@;�@sG@;�<;�;�;�;�;�;�;�;�;�@;�@sG@;�@;�@sG@;�;�;�@;�@K@;�@;�@@;�;�;�;�;�@;�@sG@;�@;�@@;�;�;�@;�@
@;�@;�@;�@;�sG;�sG;�sG;�sG;�sG;�sG;�sG;�sG;�sG;�sG;�sG;�sG;�sG;�sG;�sGsG��;�<;�;�;�;�;�@;�@@;�@;�@�R@;�<<@<@[@<@<@�@<<
<@<@<	@sG@<<<@<
@�@<@<@�@<<[<<<<<<<@<@sG@<@<@_@@<<@<@sG@< <T<!<$<"@<#@�@<%sG<&sG<'sGsG<(<)sG<*sG<+sG<,sG<-sG<.<K</<@<0sG<1<7<2sGsG<3<4sG<5sG<6sGsG��<8sGsG<9<:<=<;sG<<sG��sGsG<>sG<?sG��<AsGsG<B<CsGsG<D<E<H<FsG<GsG��sGsG<IsG<JsG��<LsG<MsG<NsG<OsGsG<P<QsG<RsG<SsGsG��<U<X<V@<W@
@<Y@<Z@sG@<\<k<]<d<^<a<_@<`@J@<b@<c@z@<e<h<f@<g@�@<i@<j@
@<l<p@<m<n@<o@sG@@<q<r@<s@sG@<u><v=U<w<�<x<�<y<�<z<�sG<{<|<<}@<~@@<�@<�@�@<�<�@<�<�@<�@@<�<�<�@<�@�R@<�@<�@sG@<�<�<�<�<�@<�@<�@o@<�<�<�@<�@sG@<�@<�@�@<�<�<�@<�@<�@;@@<�<�@<�@�@<�<�<�<�<�<�<�<�<�@<�@�@<�@<�@@<�@<�@<�@{@@<�<�<�<�@<�@;@<�@<�@sG@<�<�<�@<�<�<�@<�@o@<�@<�@k@<�<�<�<�<�@<�@�R@<�@<�@J@<�<�<�@<�@�@<�@<�@K@<�=	<�<�<�<�<�<�<�<�<�@<�@�@<�@<�@_@@<�<�@<�@��@<�<�<�<�<�@<�@K@<�@<�@��@<�<�<�@<�@�@<�@<�@*@<�<�<�<�<�<�<�@<�@�@<�@<�@�@<�@<�@<�@�@<�=<�@=@=@
@===@=@sG@=@=@@=
=9=====
==@=@�@=@=@sG@===@=@�@=@=@�@=="===@=@j@= @=!@sG@=#=&=$@=%@�@='@=(@=)@=*0=+0=,0=-0=.0=/0=00=10=20=30=40=50=60=700=8�0=:=F=;=B=<=?==@=>@@=@@=A@sG@@=C=D@=E@sG@=G=N=H=K=I@=J@�@=L@=M@sG@=O=R=P@=Q@@=S@=T@�@=V=�=W=�=X=q=Y=e=Z=^=[@=\@=]@J@=_=b=`@=a@�R@=c@=d@�@=f=m=g=j=h@=i@�@=k@=l@@@=n=o@=p@@=r=w@=s@=t=u@=v@sG@=x=|=y@=z@={@@@=}=~@=@sG@=�=�=�=�=�=�=�=�=�@=�@@=�@=�@��@=�=�=�@=�@sG@=�@=�@�@=�zZ@=�=�=�=�=�=�=�@=�@j@=�@=�@@@=�=�@=�@�@=�=�=�=�=�@=�@�@=�@=�@�@=�=�=�@=�@@=�@=�@sG@=�=�=�=�=�=�=�=�=�=�=�@=�@[@=�@=�@sG@=�=�=�@=�@�_@=�@=�@sG@=�=�=�@=�@=�@�@=�=�=�@=�@sG@=�@=�@K@=�=�=�=�=�=�=�@=�@sG@=�@=�@k@=�=�=�@=�@�@=�@=�@@=�=�=�@=�@=�@�@=�@=�@=�@@=�>=�=�=�=�=�=�=�@=�@sG@=�@=�@
@=�=�=�@=�@k@=�@=�@�@=�=�=�=�=�@=�@sG@=�@=�@�@>>>@>@sG@>@>@
@>sG>>>	>>
@>@sG@>
@>@[@>>>@>@�@>@>@sG@>>�>>�>>3>>sG@>>(>>$>>!>@> @�@>"@>#@j@@>%>&@>'@j@>)>/>*>,>+@�@>-@>.@sG@>0@>1@>2@�@>4>p>5>d>6>]>7>:>8@>9@�@>;@><@�>=�>>>?�>@�>A�>B�>C�>D�>E��>F>G�>H��>I�>J�>K�>L�>M�>N�>O�>P�>Q>R�>S��>T�>U�>V�>W>X�>Y�>Z��>[�>\�@>^>a>_@>`@�@>b@>c@�@>e>i@>f>g@>h@J@>j>m>k@>l@sG@>n@>o@{@>q>z>r>v@>s>t@>u@*@@>w>x@>y@K@>{>�>|>>}@>~@�@>�@>�@sG@>�>�>�@>�@
@>�@>�@J@>�>�>�>�>�>�>�>�>�>�>�@>�@�@>�@>�@{@>�>�>�@>�@
@>�@>�@lx@>�>�>�>�>�@>�@
@>�@>�@�@>�>�>�@>�@
@>�@>�@�@>�>�>�>�>�>�>�@>�@*@>�@>�@�@>�sG>�@>�@j@>�>�>�>�>�@>�@[@>�@>�@sG@@>�>�@>�@_@>�>�>�>�>�>�>�>�>�@>�@;@>�@>�@J@>�>�>�@>�@*@>�@>�@*@>�>�>�>�>�@>�@sG@>�@>�@
@>�>�>�@>�@
@>�@>�@[@>�>�>�>�>�>�>�@>�@
@>�@>�@sG@>�>�>�@>�@sG@>�@>�@sG@>�>�@>�>�@>�@j@>�>�>�@>�@sG@>�@>�@sG@??�??T??????@??@?@�@?	??
@?@[@?
@?@sG@?????@?@sG@?@?@sG@???@?@	)@?@?@�@??H? ?D?!@?"@?#@?$@�R?%?&�R?'�R?(�R?)�R?*�R?+�R?,�R?-�R?.�R?/�R?0�R?1�R?2�R?3�R�R?4?5�R?6�R?7�R?8�R?9�R?:�R?;�R?<�R?=�R?>�R??�R�R?@?A�R?B�R?C�R��R@?E?F@?G@�@?I?P?J?M?K@?L@;@?N@?O@�R@@?Q?R@?S@sG@?U?�?V?b?W?[@?X?Y@?Z@�@?\?_?]@?^@sG@?`@?a@
@?c?j?d?g?e@?f@�@?h@?i@�@?k?�?l@?m@?n�R?o�R?p�R?q�R?r�R?s�R?t�R?u�R?v�R?w�R?x�R�R?y?z?~�R?{�R?|?}		�R		??�?�?�		?�		�R?��R		�R?��R�R?���R?�@?�@*@?�?�?�?�?�?�?�@?�@[@?�@?�@Z@@?�?�@?�@?�@?�sG?�sG?�sG?�sG?�sG?�sG?�sG?�sG?�sG?�sG?�sG?�sG?�sG?�?�?�?��sG�sGsG?��sG?�?�?�@?�@?�@�@?�?�?�@?�@lx@?�@?�@�@?�?�?�sG?�?�?�?�?�?�?�@?�@@?�@?�@sG@?�?�?�@?�@@?�@?�@�@?�?�?�?�?�@?�@�@?�@?�@Z@?�@?�@?�@sG@?�?�?�?�?�?�?�?�?�@?�@sG@?�@?�@�@?�?�?�@?�@�@?�@?�@[@?�?�?�?�?�@?�@[@?�@?�@�@?�?�?�@?�@�@?�@?�@Z@?�@?�?�?�?�?�@?�@sG@?�@?�@sG@?�@?�@@@sG@@@@@sG@@@	@@@@@@�@@
@@@@@�@@@@@@@@@@@@@@@@@@@�Icontinent�DcodeBASJgeoname_id�_r+Enames�BdeEAsienBenDAsiaBes 6BfrDAsieBjaIアジアEpt-BREÁsiaBruHАзияEzh-CNF亚洲Gcountry� �e�Hiso_codeBJP #� *EJapan 3 � ;FJapón @EJapon HF日本 UFJapão aLЯпония m �Rregistered_country ��   z� ��� �BCN #� *EChina 3! ;! @EChine HF中国 U! aJКитай m! � �� � BOC �_r/ #� *HOzeanien 3GOceania ;HOceanía @HOcéanie HOオセアニア U!^ aNОкеания mI大洋洲 z� �� �BAU #� *JAustralien 3IAustralia ;!� @IAustralie HUオーストラリア UJAustrália aRАвстралия mL澳大利亚 �!�� �!��   z� �� �BTH #� *HThailand 3"S ;ITailandia @JThaïlande HLタイ王国 UJTailândia aNТаиланд mF泰国 �"B� � BNA �_r- #� *KNordamerika 3MNorth America ;MNorteamérica @QAmérique du Nord HO北アメリカ UQAmérica do Norte a]Северная Америка mI北美洲 z� �_e� �BUS #� *CUSA 3MUnited States ;NEstados Unidos @KÉtats Unis HLアメリカ UCEUA aFСША mF美国 �!��   z� ��R �BHK #� *HHongkong 3IHong Kong ;#� @#� HF香港 U#� aNГонконг m$ � �� � BEU �_r, #� *FEuropa 3FEurope ;$< @$E HOヨーロッパ U$< aLЕвропа mF欧洲 z� ��Z �BRU #� *HRussland 3FRussia ;ERusia @FRussie HIロシア UGRússia aLРоссия mO俄罗斯联邦 � ��   z� �_� �BIN #� *FIndien 3EIndia ;% @DInde HIインド UFÍndia aJИндия mF印度 �$��   z� �q� �BMY #� *HMalaysia 3%l ;GMalasia @HMalaisie HOマレーシア UHMalásia aPМалайзия mL马来西亚 �%[�   z� �A �BKR #� *ISüdkorea 3KSouth Korea ;MCorea del Sur @MCorée du Sud HL大韓民国 UMCoreia do Sul a]Республика Корея mF韩国 �%��   z� ��� �BSG #� *HSingapur 3ISingapore ;&� @ISingapour HRシンガポール UISingapura aPСингапур mI新加坡 �&w�   z� �t� �BTW #� *FTaiwan 3'	 ;GTaiwán @GTaïwan HF台湾 U'	 aNТайвань m'* �&w�   z#� �&w�   z%� �&w�   z � �&w�   z� ��* �BKH #� *JKambodscha 3HCambodia ;GCamboya @HCambodge HRカンボジア国 UGCamboja aPКамбоджа mI柬埔寨 �&w�   z&� �&��   z � �&��   z#� �#��   z� ��8 �BPH #� *KPhilippinen 3KPhilippines ;IFilipinas @(G HXフィリピン共和国 U(U aRФилиппины mI菲律宾 �((�   z � �"B�   z� ��� �BVN #� *GVietnam 3(� ;(� @IViêt Nam HLベトナム UGVietnã aNВьетнам mF越南 �(�� $+ z� �)��Tis_in_european_union �BNL #� *KNiederlande 3OThe Netherlands ;GHolanda @HPays-Bas HRオランダ王国 U(t aTНидерланды mF荷兰 � �� $+ z$� �&�� � BSA �_r. #� *KSüdamerika 3MSouth America ;KSudamérica @PAmérique du Sud HO南アメリカ UOAmérica do Sul aYЮжная Америка mI南美洲 z� �4�� �BBR #� *IBrasilien 3FBrazil ;FBrasil @GBrésil H[ブラジル連邦共和国 U(� aPБразилия mF巴西 �&w� (� z� �:�� �BAR #� *KArgentinien 3IArgentina ;( @IArgentine H[アルゼンチン共和国 U( aRАргентина mI阿根廷 �&w�   z� �_qR �BPS #� *JPalästina 3IPalestine ;IPalestina @(� HOパレスチナ U(� aRПалестина mL巴勒斯坦 �(|� $+ z� �&O�(3 �BES #� *GSpanien 3ESpain ;GEspaña @GEspagne HLスペイン UGEspanha aNИспания mI西班牙 �(�� $+ z� �.
�(3 �BFR #� *JFrankreich 3FFrance ;GFrancia @(� HUフランス共和国 UGFrança aNФранция mF法国 �(x� $+ z� �(5� �BGB #� *BUK 3NUnited Kingdom ;KReino Unido @KRoyaume-Uni HF英国 U(  aPБритания m(< �(��   z$� �(�� $+ z� �(��(3 �BSE #� *HSchweden 3FSweden ;FSuecia @FSuède HXスウェーデン王国 UGSuécia aLШвеция mF瑞典 �(z� $+ z(, �(,� (� z(q �(,� $+ z� �,�T(3 �BDE #� *KDeutschland 3GGermany ;HAlemania @IAllemagne HXドイツ連邦共和国 UHAlemanha aFФРГ mF德国 �(,� $+ z� �.�(3 �BCZ #� *JTschechien 3GCzechia ;GChequia @ITchéquie HRチェコ共和国 UHChéquia aJЧехия mF捷克 �(,� $+ z(� �(,� $+ z(x �(,� $+ z$� �(,� $+ z� �(�� �BCH #� *GSchweiz 3KSwitzerland ;ESuiza @FSuisse HOスイス連邦 UGSuíça aRШвейцария mF瑞士 �(,� $+ z� �*s�(3 �BAT #� *KÖsterreich 3GAustria ;(� @HAutriche H[オーストリア共和国 UHÁustria aNАвстрия mI奥地利 �(,� $+ z� �0s�(3 �BIT #� *GItalien 3EItaly ;FItalia @FItalie HUイタリア共和国 UGItália aLИталия mI意大利 �(,� $+ z� ���(3 �BGR #� *LGriechenland 3FGreece ;FGrecia @FGrèce HUギリシャ共和国 UGGrécia aLГреция mF希腊 �(,� $+ z(z �(,� "� z#^ �(,� $+ z(� �(,� !B z!� �(,�   z� �n� �BAE #� *\Vereinigte Arabische Emirate 3TUnited Arab Emirates ;WEmiratos Árabes Unidos @TÉmirats Arabes Unis HXアラブ首長国連邦 UWEmirados Árabes Unidos aFОАЭ mI阿联酋 �(,� $+ z� �(8(3 �BDK #� *IDänemark 3GDenmark ;IDinamarca @HDanemark HUデンマーク王国 U(
� aJДания mF丹麦 �(,� $+ z� �"�M(3 �BPT #� *HPortugal 3(
� ;(
� @(
� HXポルトガル共和国 U(
� aTПортугалия mI葡萄牙 �(,� � BAF �_r* #� *FAfrika 3FAfrica ;GÁfrica @GAfrique HLアフリカ U(� aLАфрика mF非洲 z� �#� �BGH #� *EGhana 3(� ;(� @(� HRガーナ共和国 UDGana aHГана mF加纳 �(,� (b z� ��� �BZA #� *JSüdafrika 3LSouth Africa ;JSudáfrica @NAfrique du Sud HO南アフリカ UNÁfrica do Sul aFЮАР mF南非 �(,� (b z� �"+ �BCM #� *GKamerun 3HCameroon ;HCamerún @HCameroun HXカメルーン共和国 UICamarões aNКамерун mI喀麦隆 �(,�   z� ��+ �BTR #� *GTürkei 3HTürkiye ;HTurquía @GTurquie HRトルコ共和国 UGTurquia aLТурция mI土耳其 �(,� $+ z� �
-(3 �BFI #� *HFinnland 3GFinland ;IFinlandia @HFinlande H[フィンランド共和国 UJFinlândia aRФинляндия mF芬兰 �(,� $+ z� �/P(3 �BPL #� *EPolen 3FPoland ;GPolonia @GPologne HXポーランド共和国 UHPolônia aLПольша mF波兰 �(,�   z� ��� �BJO #� *IJordanien 3FJordan ;HJordania @HJordanie H]ヨルダン・ハシミテ王国 UIJordânia aPИордания mF约旦 �(,�   z"B �(,�   z � �(,� $+ z� �*¹(3 �BBE #� *GBelgien 3GBelgium ;HBélgica @HBelgique HRベルギー王国 U(� aNБельгия mI比利时 �(,� $+ z� �/U(3 �BRO #� *IRumänien 3GRomania ;HRumanía @HRoumanie HOルーマニア UHRomênia aNРумыния mL罗马尼亚 �(,� (b z� �� �BKE #� *EKenia 3EKenya ;(� @(� HRケニア共和国 UGQuênia aJКения mI肯尼亚 �(,� $+ z� �-8�(3 �BIE #� *FIrland 3GIreland ;GIrlanda @GIrlande HRアイルランド U($ aPИрландия mI爱尔兰 �(,� (b z� �s �BUG #� *FUganda 3(� ;(� @GOuganda HUウガンダ共和国 U(� aLУганда mI乌干达 �(,�   z� ��� �BAM #� *HArmenien 3GArmenia ;( @HArménie HXアルメニア共和国 UHArmênia aNАрмения mL亚美尼亚 �(,� (b z� �HV �BTZ #� *HTansania 3HTanzania ;(� @HTanzanie H]タンザニア連合共和国 UITanzânia aPТанзания mL坦桑尼亚 �(,� (b z� ��� �BBI #� *GBurundi 3( ;( @( HUブルンジ共和国 U( aNБурунди mI布隆迪 �(,�   z#� �(,�   z&w �(,� (� z(� �(,� $+ z� �/�� �BNO #� *HNorwegen 3FNorway ;GNoruega @HNorvège HUノルウェー王国 U(� aPНорвегия mF挪威 �(,� $+ z� �-+�(3 �BLU #� *ILuxemburg 3JLuxembourg ;JLuxemburgo @(> HUルクセンブルク U(K aTЛюксембург mI卢森堡 �(,� (� z� �8>� �BCO #� *IKolumbien 3HColombia ;(� @HColombie HXコロンビア共和国 UIColômbia aPКолумбия mL哥伦比亚 �(,� $+ z� �.�(3 �BBG #� *IBulgarien 3HBulgaria ;(U @HBulgarie HXブルガリア共和国 UIBulgária aPБолгария mL保加利亚 �(,� (� z� �;oJ �BCL #� *EChile 3(� ;(� @EChili HOチリ共和国 U(� aHЧили mF智利 �(,� $+ z� �
�g �BUA #� *GUkraine 3(5 ;GUcrania @(5 HXウクライナ共和国 UHUcrânia aNУкраина mI乌克兰 �(,� (b z� �vj �BEG #� *HÄgypten 3EEgypt ;FEgipto @GÉgypte H]エジプト・アラブ共和国 UEEgito aLЕгипет mF埃及 �(,� "� z� �_e� �BCA #� *FKanada 3FCanada ;GCanadá @(A HIカナダ U(J aLКанада mI加拿大 �(,�   z$� �(,�   z� �~� �BIL #� *FIsrael 3(� ;(� @GIsraël HRイスラエル国 U(� aNИзраиль mI以色列 �(,�   z� �k� �BQA #� *EKatar 3EQatar ;ECatar @(% HLカタール U(- aJКатар mI卡塔尔 �(,� $+ z(^ �(^�   z(	� �(	��   z(� �(�� $+ z� �	m> �BMD #� *ORepublik Moldau 3GMoldova ;HMoldavia @HMoldavie HUモルドバ共和国 UIMoldávia aNМолдова mL摩尔多瓦 �(�� $+ z(
i �(
i� "� z#^ �(
i� $+ z(3 �(3� "� z#^ �#^� $+ z� �0�(3 �BHR #� *HKroatien 3GCroatia ;GCroacia @GCroatie HXクロアチア共和国 UHCroácia aPХорватия mL克罗地亚 �#^� $+ z(, �� �� �BSC #� *JSeychellen 3JSeychelles ;( @( HOセーシェル UPIlhas Seychelles a]Сейшельские о-ва mI塞舌尔� $+ z( �#^�   z(� �(	�� "� z#^ �(� $+ z$� �$�� $+ z($ �$��   z� ��� �BIQ #� *DIrak 3DIraq ;(� @(� HRイラク共和国 UFIraque aHИрак mI伊拉克 �(�� $+ z(R �(R� $+ z(� �� �6�� �BBZ #� *FBelize 3(] ;FBelice @(] HLベリーズ U(] aJБелиз mI伯利兹� $+ z(� �(�   z(
= �(
=� $+ z(Q �(Q� "� z(' �(� $+ z( �(� $+ z(� �(�� $+ z(, �$��   z#� �$�� $+ z(Q �(�� $+ z(x �(�� $+ z( �(�   z(
= �($� $+ z($ �($� $+ z(3 �($� "� z#^ �� �<�(3 �BCY #� *FZypern 3FCyprus ;FChipre @FChypre HUキプロス共和国 U(� aHКипр mL塞浦路斯� "� z#^ �(�� $+ z� �0I� �BVA #� *LVatikanstadt 3LVatican City ;SCiudad del Vaticano @GVatican H]
ローマ法王庁 (バチカン市国) UHVaticano aNВатикан mI梵蒂冈 �(�� $+ z(~ �(~� $+ z($ �(	�� "� z#^ �(	�� $+ z$� �(	�� "� z� �6�v �BVG #� *XBritische Jungferninseln 3VBritish Virgin Islands ;OIslas Vírgenes @MÎles Vierges H[英領ヴァージン諸島 UYIlhas Virgens Britânicas a]Виргинские о-ва (Великобритания) mU英属维尔京群岛 �(�� $+ z(, �(�   z#� �(� "� z#^ �(� $+ z(� �(�� $+ z(� �#^� $+ z(, �#^� $+ z(� �(�� "� z#^ �� �	�(3 �BLT #� *GLitauen 3ILithuania ;HLituania @HLituanie HXリトアニア共和国 UILituânia aJЛитва mI立陶宛� "� z#^ �(��   z(� �(�� $+ z(, �(~� $+ z(x �(~� "� z#^ �(� $+ z(� �(� $+ z$� �$�� $+ z� �( ; �BIS #� *FIsland 3GIceland ;HIslandia @GIslande H[アイスランド共和国 UIIslândia aPИсландия mF冰岛 �(	��   z(
= �(S� (� z(q �(S�   z%� �(S� $+ z(^ �(S�   z � �(� $+ z(� �(� "� z#^ �&w�   z� ��� �BIR #� *DIran 3(!? ;EIrán @(!? H]イラン・イスラム共和国 UDIrã aHИран mF伊朗 �(!.� $+ z( �(	�� $+ z(, �(	�� $+ z(� �(	�� $+ z(� �(	�� $+ z(� �(�� (� z(� �#^� (� z(q �#^�   z� �	`� �BGE #� *HGeorgien 3GGeorgia ;("' @HGéorgie HUグルジア共和国 UHGeórgia aLГрузия mL格鲁吉亚 �("� $+ z� �.��(3 �BSK #� *HSlowakei 3HSlovakia ;JEslovaquia @ISlovaquie H]
スロバキア (スロバキア共和国) UKEslováquia aPСловакия mL斯洛伐克 �("�� $+ z(x �#^� $+ z(� �(~�   z� �<� �BKZ #� *JKasachstan 3JKazakhstan ;JKazajstán @(#t H[カザフスタン共和国 ULCazaquistão aRКазахстан mO哈萨克斯坦 �(#V� $+ z( �(� $+ z( �(Ftraits�Ris_anonymous_proxy� $+ z(Q �(	�� $+ z(x �(�� $+ z(S �(S� (b z(� �(�� $+ z� ��e(3 �BEE #� *GEstland 3GEstonia ;($� @GEstonie HXエストニア共和国 UHEstônia aNЭстония mL爱沙尼亚 �($i� !B z!� �#^� "� z#^ �(�� $+ z(x �(�� $+ z� �$�B �BGI #� *IGibraltar 3(%- ;(%- @(%- HRジブラルタル U(%- aRГибралтар mL直布罗陀 �(%� $+ z(^ �(� $+ z(, �(� $+ z� ��(3 �BLV #� *HLettland 3FLatvia ;GLetonia @HLettonie HUラトビア共和国 UHLetônia aLЛатвия mL拉脱维亚 �(%�� $+ z(� �(�� $+ z(h �(�   z(� �(� $+ z( �(� $+ z(
i �(� $+ z� �0�
(3 �BSI #� *ISlowenien 3HSlovenia ;IEslovenia @ISlovénie HOスロベニア UJEslovênia aPСловения mO斯洛文尼亚 �(&�� $+ z(� �(�� $+ z(, �(($($� $+ z( �(�� "� z� �<�� �BMX #� *FMexiko 3FMexico ;GMéxico @GMexique HUメキシコ合衆国 U('l aNМексика mI墨西哥 �(� $+ z(� �(� $+ z� ��� �BAL #� *HAlbanien 3GAlbania ;('� @GAlbanie HXアルバニア共和国 UHAlbânia aNАлбания mO阿尔巴尼亚 �(� $+ z( �(S� $+ z(
� �(
�� $+ z( �(3� $+ z( �(3($($� $+ z(, �(�� $+ z( �$�� $+ z(� �$��   z&w �� �
��(3 �BHU #� *FUngarn 3GHungary ;HHungría @GHongrie HXハンガリー共和国 UGHungria aNВенгрия mI匈牙利� "� z#^ �((�� $+ z((� �((�� $+ z(, �(�� $+ z(x �(� $+ z($ �(�� "� z#^ �((�   z(� �(S� $+ z(
� �(S�   z&w �(S� $+ z(� �(S� "� z#^ �&��   z#� �(�   z&w �(	�� "� z#^ �(L� $+ z(Q �(L� $+ z(^ �(�� $+ z$� �(��   z(� �(��   z� ��� �BSA #� *MSaudi-Arabien 3LSaudi Arabia ;MArabia Saudí @OArabie saoudite H[サウジアラビア王国 UOArábia Saudita a]Саудовская Аравия mO沙特阿拉伯 �(�� $+ z(� �(S� (b z(( �((� $+ z(R �((�   z(
= �(&�� (� z(q �(� "� z#^ �#��   z%� �#��   z � �#�� "� z� �7L| �BCR #� *JCosta Rica 3(+� ;(+� @(+� HOコスタリカ U(+� aSКоста-Рика mO哥斯达黎加 �(��   z(
= �(
i� $+ z(, �(
i� $+ z(� �(��   z � �(��   z$� �(	�� "� z#^ �(3� $+ z(
� �(
�� $+ z(� �(��   z(*V �(*V�   z&w �#^� !B z� �![� �BNZ #� *JNeuseeland 3KNew Zealand ;MNueva Zelanda @QNouvelle-Zélande HXニュージーランド UNNova Zelândia a[Новая Зеландия mI新西兰 �#^� $+ z(z �#^�   z� �m� �BBH #� *GBahrain 3(-b ;HBahréin @HBahreïn HOバーレーン U(-b aNБахрейн mF巴林 �#^�   z$� �#^�   z� �L �BID #� *JIndonesien 3IIndonesia ;(-� @JIndonésie H[インドネシア共和国 UJIndonésia aRИндонезия mO印度尼西亚 �#^� (b z(( �#^� $+ z(� �#^�   z(	� �#^�   z%� �#^�   z � �#^�   z%[ �#^� $+ z(^ �#^�   z(� �#^� "� z(' �#^� $+ z(� �#^� $+ z(R �#^�   z(
= �#^� $+ z(� �#^�   z( �#^� (b z(� �#^� $+ z(Q �#^� $+ z(
� �#^�   z(� �#^�   z#� �#^� "� z#^ �#^($($� "� z('I �#^� $+ z(� �#^� (� z(� �#^� (� z(� �#^� $+ z(� �#^�   z� �� �BSY #� *FSyrien 3ESyria ;ESiria @ESyrie H]シリア・アラブ共和国 UFSíria aJСирия mI叙利亚 �(/�� $+ z(� �(S� $+ z(� �(��   z(	� �(�� "� z#^ �(R� $+ z(, �(,($($� $+ z($i �$�� "� z#^ �$��   z&w �(� $+ z(, �(� $+ z(� �(�   z$� �(� $+ z(Q �$��   z � �(� $+ z( �(�   z� �&� �BLB #� *GLibanon 3GLebanon ;GLíbano @ELiban HUレバノン共和国 U(1= aJЛиван mI黎巴嫩 �(1� $+ z(^ �(�� $+ z(� �(�� $+ z(z �(�� $+ z(, �� ��l �BAZ #� *MAserbaidschan 3JAzerbaijan ;KAzerbaiyán @LAzerbaïdjan H]アゼルバイジャン共和国 UKAzerbaijão aVАзербайджан mL阿塞拜疆� $+ z(� �(1��   z(!. �(1��   z� �`� �BOM #� *DOman 3(2� ;EOmán @(2� HOオマーン国 UDOmã aHОман mF阿曼 �(2�� $+ z� �_�L �BRS #� *GSerbien 3FSerbia ;(3 @FSerbie HLセルビア UGSérvia aLСербия mL塞尔维亚 �(2�� $+ z(� �(�� $+ z$� �(�� $+ z("� �(�� $+ z$� �#^� $+ z($ �(�� $+ z(, �(
�� $+ z(� �(
�� $+ z(Q �(
�� $+ z(� �(z�   z(
= �('� "� z(' �('� $+ z( �('� $+ z((� �('� $+ z(^ �('� $+ z(� �('� $+ z( �('� $+ z(� �('� $+ z(
i �('� $+ z(z �('�   z(*V �('� $+ z(R �('� $+ z(� �('�   z(#V �('� $+ z(x �('� $+ z( ? �( ?�   z'| �'|� $+ z� �
� �BMK #� *NNordmazedonien 3ONorth Macedonia ;SMacedonia del Norte @RMacédoine du Nord HR北マケドニア UJMacedônia a]Северная Македония mO前南马其顿 �(4��   z&w �($� "� z#^ �($� $+ z(, �($� $+ z($ �($($($�   z(!. �!��   z � �!�� $+ z� �.k
 �BLI #� *MLiechtenstein 3(6 ;(6 @(6 H]リヒテンシュタイン公国 U(6 aVЛихтенштейн mO列支敦士登 �(5�� $+ z($i �(�� $+ z(z �(�� $+ z(� �(��   z(#V �$�� $+ z("� �$�� $+ z� �.k^ �BJE #� *FJersey 3(6� ;(6� @(6� HOジャージー U(6� aLДжерси mI泽西岛 �(6�� $+ z(, �(�� $+ z(� �(x� $+ z(R �(x� $+ z(Q �(x� $+ z(� �(x� $+ z(, �(x� $+ z( �(x� $+ z(� �(x� $+ z(
� �(x� $+ z(^ �(x� $+ z(
� �(x� $+ z(S �(x� $+ z(� �(x� $+ z(� �(x� $+ z(h �(h� $+ z( �(�� $+ z(^ �(�� $+ z(z �$�� $+ z$� �$�($($� $+ z(z �$�($($� $+ z(x �$��   z&� �#^�   z � �$��   z(	� �(S�   z(*V �$�� $+ z� �2% �BBA #� *WBosnien und Herzegowina 3VBosnia and Herzegovina ;RBosnia-Herzegovina @SBosnie-Herzégovine H]ボスニア・ヘルツェゴビナ UUBósnia e Herzegovina a]	Босния и Герцеговина mF波黑 �(8��   z(1� �(1��   z(	� �$�� "� z(' �(� $+ z(, �(�� "� z#^ �(�� $+ z$� �(�� $+ z( �(($($� $+ z( �(�� $+ z(, �(!.�   z� �O� �BKG #� *KKirgisistan 3JKyrgyzstan ;KKirguistán @KKirghizstan HUキルギス共和国 ULQuirguistão aTКыргызстан mR吉尔吉斯斯坦 �(:*� (b z� �E�(3 �BRE #� *HRéunion 3(:� ;HReunión @(:� HOレユニオン UHReunião aNРеюньон mI留尼汪 �(:�� "� z#^ �(^�   z � �(�� $+ z$� �(�� $+ z("� �(�� $+ z(� �(�� $+ z(h �(��   z(#V �(�� $+ z(^ �(��   z(" �(�� $+ z(� �(�� $+ z(~ �(�� $+ z(� �(�� $+ z(� �(��   z(:* �(�� "� z#^ �(!.� $+ z(, �(�($($� $+ z(x �(^� $+ z("� �(^� $+ z(, �(^� !B z!� �(�� $+ z(� �(�� $+ z(� �(��   z&w �(��   z(-� �(��   z � �(�� "� z(' �(�� (� z(q �(�� !B z� �Y�� �  #� *RAmerikanisch-Samoa 3NAmerican Samoa ;OSamoa Americana @RSamoa américaines HO米領サモア U(= a]Американское Самоа mO美属萨摩亚 �(�� "� z� �6� �BAI #� *HAnguilla 3(=� ;GAnguila @(=� HLアンギラ U(=� aNАнгилья mI安圭拉 �(�� "� z� �6�L �BAG #� *SAntigua und Barbuda 3SAntigua and Barbuda ;QAntigua y Barbuda @RAntigua-et-Barbuda H]アンティグア・バーブーダ URAntígua e Barbuda a]Антигуа и Барбуда mU安提瓜和巴布达 �(�� (� z(� �(�� "� z� �6�� �BAW #� *EAruba 3(? ;(? @(? HLアルバ島 U(? aJАруба mI阿鲁巴 �(�� "� z� �6�� �BBS #� *GBahamas 3(?j ;(?j @(?j HLバハマ国 U(?j aLБагамы mI巴哈马 �(�� "� z� �3| �BBB #� *HBarbados 3(?� ;(?� @GBarbade HOバルバドス U(?� aPБарбадос mL巴巴多斯 �(�� "� z(L �(�� "� z� �6�a �BBM #� *GBermuda 3(@O ;HBermudas @HBermudes HUバミューダ諸島 U(@^ a\Бермудские о-ва mI百慕大 �(�� (� z� �;�q �BBO #� *HBolivien 3GBolivia ;(@� @GBolivie HUボリビア共和国 UHBolívia aNБоливия mL玻利维亚 �(�� "� z(� �(�� "� z� �6�. �BKY #� *LKaimaninseln 3NCayman Islands ;MIslas Caimán @NÎles Caïmans HRケイマン諸島 ULIlhas Caiman a]Каймановы Острова mL开曼群岛 �(�� (� z(� �(�� (� z(� �(�� !B z� ��� �BCK #� *JCookinseln 3LCook Islands ;JIslas Cook @JÎles Cook HOクック諸島 UJIlhas Cook aWОстрова Кука mL库克群岛 �(�� "� z(+� �(�� "� z� �6]� �BCU #� *DKuba 3DCuba ;(B� @(B� HUキューバ共和国 U(B� aHКуба mF古巴 �(�� "� z� �6� �BDM #� *HDominica 3(CI ;(CI @IDominique HOドミニカ国 U(CI aPДоминика mL多米尼克 �(�� "� z� �5�< �BDO #� *MDom. Republik 3RDominican Republic ;MSanto Domingo @WRépublique dominicaine HUドミニカ共和国 UURepública Dominicana a]Доминиканская Республика mL多米尼加 �(�� (� z� �7Қ �BEC #� *GEcuador 3(D� ;(D� @IÉquateur HXエクアドル共和国 UGEquador aNЭквадор mL厄瓜多尔 �(�� "� z� �6�� �BSV #� *KEl Salvador 3(E ;(E @HSalvador HUエルサルバドル U(E aRСальвадор mL萨尔瓦多 �(�� (� z� �5� �BFK #� *NFalklandinseln 3PFalkland Islands ;NIslas Malvinas @OÎles Malouines H[フォークランド諸島 UNIlhas Malvinas a]Фолклендские о-ва m]福克兰群岛(马尔维纳斯) �(�� !B z� �!�" �BFJ #� *GFidschi 3DFiji ;DFiyi @EFidji HLフィジー U(F� aJФиджи mF斐济 �(�� "� z� �6�O �BGD #� *GGrenada 3(F� ;GGranada @GGrenade HLグレナダ U(F� aNГренада mL格林纳达 �(�� "� z� �6�(3 �BGP #� *JGuadeloupe 3(GT ;IGuadalupe @(GT HRグアドループ U(Gf aRГваделупа mL瓜德罗普 �(�� !B z� �=�� �BGU #� *DGuam 3(G� ;(G� @(G� HIグアム U(G� aHГуам mF关岛 �(�� "� z� �6� �BGT #� *IGuatemala 3(H& ;(H& @(H& HOグアテマラ U(H& aRГватемала mL危地马拉 �(�� (� z� �3�g �BGY #� *FGuyana 3(H� ;(H� @(H� HLガイアナ UFGuiana aLГайана mI圭亚那 �(�� "� z� �8�� �BHT #� *EHaiti 3(H� ;FHaití @FHaïti HRハイチ共和国 U(H� aJГаити mF海地 �(�� "� z� �7d �BHN #� *HHonduras 3(Ih ;(Ih @(Ih H[ホンジュラス共和国 U(Ih aPГондурас mL洪都拉斯 �(�� "� z� �5@� �BJM #� *GJamaika 3GJamaica ;(I� @IJamaïque HOジャマイカ U(I� aLЯмайка mI牙买加 �(�� !B z� �=�� �BKI #� *HKiribati 3(JT ;(JT @(JT HUキリバス共和国 UIQuiribati aPКирибати mL基里巴斯 �(�� "� z� �6�� �BMS #� *JMontserrat 3(J� ;(J� @(J� HUモントセラト島 U(J� aTМонтсеррат mO蒙特塞拉特 �(�� !B z� � 3� �BNR #� *ENauru 3(KL ;(KL @(KL HIナウル U(KL aJНауру mF瑙鲁 �(�� "� z� �72� �BNI #� *INicaragua 3(K� ;(K� @(K� HXニカラグア共和国 UJNicarágua aRНикарагуа mL尼加拉瓜 �(�� !B z� � �% �BNC #� *MNeukaledonien 3MNew Caledonia ;ONueva Caledonia @SNouvelle-Calédonie HXニューカレドニア UONova Caledônia a]Новая Каледония mR新喀里多尼亚 �(�� !B z� �=�� �BNU #� *DNiue 3(L� ;(L� @(L� HLニウエ島 U(L� aHНиуэ mF纽埃 �(�� !B z� � �k �BNF #� *LNorfolkinsel 3NNorfolk Island ;LIsla Norfolk @LÎle Norfolk HUノーフォーク島 ULIlha Norfolk aTо-в Норфолк mL诺福克岛 �(��   z� ��� �BKP #� *INordkorea 3KNorth Korea ;OCorea del Norte @NCorée du Nord H]
韓国、朝鮮民主主義人民共和国 UOCoreia do Norte aHКНДР mF朝鲜 �(�� "� z� �8�� �BPA #� *FPanama 3(N� ;GPanamá @(N� HIパナマ U(N� aLПанама mI巴拿马 �(�� !B z� �޴ �BPG #� *OPapua-Neuguinea 3PPapua New Guinea ;SPapúa-Nueva Guinea @ZPapouasie-Nouvelle-Guinée H]パプア・ニューギニア UQPapua-Nova Guiné a]	Папуа – Новая Гвинея mU巴布亚新几内亚 �(�� (� z� �4t �BPY #� *HParaguay 3(O� ;(O� @(O� HXパラグアイ共和国 UHParaguai aPПарагвай mI巴拉圭 �(�� (� z� �<H �BPE #� *DPeru 3(Pc ;EPerú @FPérou HRペルー共和国 U(Pc aHПеру mF秘鲁 �(��   z(( �(�� !B z� �=�� �BPN #� *NPitcairninseln 3PPitcairn Islands ;NIslas Pitcairn @HPitcairn HUピトケアン諸島 UNIlhas Pitcairn aVо-ва Питкэрн mL皮特凯恩 �(�� "� z� �E�� �BPR #� *KPuerto Rico 3(Q� ;(Q� @JPorto Rico HRプエルトリコ U(Q� aUПуэрто-Рико mL波多黎各 �(�� "� z� �6�� �BKN #� *SSt. Kitts und Nevis 3RSt Kitts and Nevis ;WSan Cristóbal y Nieves @\Saint-Christophe-et-Niévès H]
セントクリストファー・ネビス UYSão Cristóvão e Névis a]Сент-Китс и Невис mU圣基茨和尼维斯 �(�� "� z� �6�� �BLC #� *ISt. Lucia 3KSaint Lucia ;LSanta Lucía @LSainte-Lucie HRセントルシア ULSanta Lúcia aSСент-Люсия mL圣卢西亚 �(�� "� z� �6�� �BVC #� *]St. Vincent und die Grenadinen 3YSt Vincent and Grenadines ;\San Vicente y las Granadinas @]Saint-Vincent-et-les-Grenadines H]セントビンセント及びグレナディーン諸島 UYSão Vicente e Granadinas a]Сент-Винсент и Гренадины m]圣文森特和格林纳丁斯 �(�� !B z� �=�N �BWS #� *ESamoa 3(T� ;(T� @(T� HL西サモア U(T� aJСамоа mI萨摩亚 �(�� !B z� � 6 �BSB #� *ISalomonen 3OSolomon Islands ;NIslas Salomón @MÎles Salomon HRソロモン諸島 UNIlhas Salomão a]Соломоновы Острова mO所罗门群岛 �(�� (� z� �3�� �BSR #� *HSuriname 3(V ;GSurinam @(V HUスリナム共和国 U(V aNСуринам mI苏里南 �(�� (b z� �C� �BSZ #� *HEswatini 3(Vz ;HEsuatini @ISwaziland HXスワジランド王国 UJEssuatíni aPЭсватини mL斯威士兰 �(�� !B z� �=�b �BTK #� *GTokelau 3(W ;(W @(W HLトケラウ U(W aNТокелау mI托克劳 �(�� !B z� �=� �BTO #� *ETonga 3(Wk ;(Wk @(Wk HOトンガ王国 U(Wk aJТонга mF汤加 �(�� "� z� �6�W �BTT #� *STrinidad und Tobago 3STrinidad and Tobago ;QTrinidad y Tobago @RTrinité-et-Tobago H]トリニダード・トバゴ UQTrinidad e Tobago a]Тринидад и Тобаго mX特立尼达和多巴哥 �(�� "� z� �6�T �BTC #� *WTurks- und Caicosinseln 3XTurks and Caicos Islands ;UIslas Turcas y Caicos @YÎles Turques-et-Caïques H]タークス・カイコス諸島 UUIlhas Turcas e Caicos a]о-ва Тёркс и Кайкос m[特克斯和凯科斯群岛 �(�� !B z� � 3Y �BTV #� *FTuvalu 3(Y� ;(Y� @(Y� HIツバル U(Y� aLТувалу mI图瓦卢 �(�� (� z� �4|Y �BUY #� *GUruguay 3(Z ;(Z @(Z HXウルグアイ共和国 UGUruguai aNУругвай mI乌拉圭 �(�� !B z� � �� �BVU #� *GVanuatu 3(Z� ;(Z� @(Z� HUバヌアツ共和国 U(Z� aNВануату mL瓦努阿图 �(�� (� z� �7Q� �BVE #� *IVenezuela 3(Z� ;(Z� @LVénézuéla HXベネズエラ共和国 U(Z� aRВенесуэла mL委内瑞拉 �(�� "� z� �4B� �BPM #� *WSt. Pierre und Miquelon 3YSaint Pierre and Miquelon ;USan Pedro y Miquelón @XSaint-Pierre et Miquelon H]
サンピエール島・ミクロン島 UVSão Pedro e Miquelão a]Сен-Пьер и Микелон m]圣皮埃尔和密克隆群岛 �(�� $+ z� �.i �BAD #� *GAndorra 3(\� ;(\� @GAndorre HLアンドラ U(\� aNАндорра mI安道尔 �(�� (b z� �3%G �BAO #� *FAngola 3(\� ;(\� @(\� HUアンゴラ共和国 U(\� aLАнгола mI安哥拉 �(��   z(� �(��   z(1� �(��   z(-Q �(��   z� �zu �BBD #� *KBangladesch 3JBangladesh ;(]� @(]� H]
バングラディッシュ人民共和国 U(]� aRБангладеш mL孟加拉国 �(�� $+ z� �	�@ �BBY #� *GBelarus 3(^) ;KBielorrusia @LBiélorussie HXベラルーシ共和国 UMBielorrússia aPБеларусь mL白俄罗斯 �(�� (b z� �$�" �BBJ #� *EBenin 3(^� ;FBenín @FBénin HRベニン共和国 U(^� aJБенин mF贝宁 �(��   z� � �BBT #� *FBhutan 3(_( ;FBután @GBhoutan HRブータン王国 UFButão aJБутан mF不丹 �(�� $+ z(8� �(�� (b z� �?� �BBW #� *HBotswana 3(_� ;HBotsuana @(_� HUボツワナ共和国 U(_� aPБотсвана mL博茨瓦纳 �(��   z� �Ȏ �BBN #� *FBrunei 3(`" ;GBrunéi @(`" HLブルネイ U(`" a]Бруней-Даруссалам mF文莱 �(�� $+ z(3 �(�� (b z� �$	� �BBF #� *LBurkina Faso 3(`� ;(`� @(`� HUブルキナファソ UMBurquina Faso aWБуркина-Фасо mO布基纳法索 �(�� (b z( �(��   z'| �(�� (b z(� �(�� (b z� �3~� �BCV #� *IKapverden 3JCabo Verde ;(at @HCap-Vert HRカーボベルデ U(at aSКабо-Верде mI佛得角 �(�� (b z� �� �BCF #� *\Zentralafrikanische Republik 3XCentral African Republic ;YRepública Centroafricana @LCentrafrique H[中央アフリカ共和国 UZRepública Centro-Africana a]#Центрально-Африканская Республика mF中非 �(�� (b z� �%%� �BTD #� *FTschad 3DChad ;(b� @ETchad HRチャド共和国 UEChade aFЧад mF乍得 �(�� !B z� ��� �BCX #� *OWeihnachtsinsel 3PChristmas Island ;OIsla de Navidad @NÎle Christmas HRクリスマス島 UNIlha Christmas aXо-в Рождества mI圣诞岛 �(��   z� ��p �BCC #� *KKokosinseln 3WCocos (Keeling) Islands ;KIslas Cocos @KÎles Cocos H]ココス(キーリング)諸島 UUIlhas Cocos (Keeling) aZКокосовые о-ва m[科科斯(基林)群岛 �(�� (b z� �I �BKM #� *GKomoren 3GComoros ;GComoras @GComores H]
コモロ・イスラム連邦共和国 U(d� aZКоморские о-ва mI科摩罗 �(�� (b z� �0 �BCD #� *EKongo 3HDR Congo ;RCongo Democrático @ECongo HXコンゴ民主共和国 UPCongo - Kinshasa aHЗаир mI扎伊尔 �(�� (b z� �"� �BCI #� *OElfenbeinküste 3KIvory Coast ;PCôte d’Ivoire @NCôte d'Ivoire HL象牙海岸 U(f. aVКот-д’Ивуар m(fR �(�� $+ z(~ �(�� (b z(� �(�� (b z� �#;� �BGQ #� *QÄquatorialguinea 3QEquatorial Guinea ;QGuinea Ecuatorial @TGuinée équatoriale HO赤道ギニア UQGuiné Equatorial a]Экваториальная Гвинея mO赤道几内亚 �(�� (b z� �(Z �BER #� *GEritrea 3(g� ;(g� @JÉrythrée HOエリトリア UHEritreia aNЭритрея mO厄立特里亚 �(�� $+ z($i �(�� (b z� �(L �BET #� *JÄthiopien 3HEthiopia ;HEtiopía @IÉthiopie HOエチオピア UHEtiópia aNЭфиопия mO埃塞俄比亚 �(�� $+ z� �(p �BFO #� *HFäröer 3MFaroe Islands ;KIslas Feroe @MÎles Féroé HRフェロー諸島 ULIlhas Faroé aZФарерские о-ва mL法罗群岛 �(�� (b z� �$�) �BGA #� *EGabun 3EGabon ;FGabón @(iV HRガボン共和国 UFGabão aJГабон mF加蓬 �(�� (b z� �$Ӌ �BGM #� *FGambia 3(i� ;(i� @FGambie HUガンビア共和国 UGGâmbia aLГамбия mI冈比亚 �(��   z(" �(�� (b z(� �(�� $+ z(% �(�� $+ z(� �(�� "� z� �4D� �BGL #� *IGrönland 3IGreenland ;KGroenlandia @IGroenland HUグリーンランド ULGroenlândia aTГренландия mI格陵兰 �(�� (b z� �$2� �BGW #� *MGuinea-Bissau 3(k ;NGuinea-Bissáu @NGuinée-Bissau H[ギニアビサウ共和国 UMGuiné-Bissau aWГвинея-Бисау mO几内亚比绍 �(�� (b z� �$� �BGN #� *FGuinea 3(k� ;(k� @GGuinée HRギニア共和国 UFGuiné aLГвинея mI几内亚 �(��   z(!. �(��   z(� �(�� $+ z(� �(��   z(� �(��   z(#V �(�� (b z(� �(��   z� �[� �BKW #� *FKuwait 3(l~ ;(l~ @GKoweït HOクウェート U(l~ aLКувейт mI科威特 �(��   z(:* �(��   z� �D" �BLA #� *DLaos 3(l� ;(l� @(l� HIラオス U]
República Popular Democrática do Laos aHЛаос mF老挝 �(�� $+ z(%� �(��   z(1 �(�� (b z� �;T �BLS #� *GLesotho 3(m� ;(m� @(m� HOレソト王国 UFLesoto aLЛесото mI莱索托 �(�� (b z� �"�8 �BLR #� *GLiberia 3(m� ;(m� @(m� HUリベリア共和国 UHLibéria aNЛиберия mL利比里亚 �(�� (b z� �!�� �BLY #� *FLibyen 3ELibya ;ELibia @ELibye H]
社会主義人民リビア・アラブ国 UFLíbia aJЛивия mI利比亚 �(�� $+ z(5� �(�� $+ z(S �(��   z� ��[ �BMO #� *EMacau 3EMacao ;(o' @(o' HIマカオ U(o aJМакао mF澳门 �(�� $+ z(4� �(�� (b z� �8# �BMG #� *JMadagaskar 3JMadagascar ;(o� @(o� H[マダガスカル共和国 U(o� aTМадагаскар mO马达加斯加 �(�� (b z� �&� �BMW #� *FMalawi 3(p ;FMalaui @(p HUマラウイ共和国 UGMalauí aLМалави mI马拉维 �(�� $+ z("� �(��   z� ��� �BMV #� *IMalediven 3HMaldives ;HMaldivas @(p� HOモルディブ U(p� aPМальдивы mL马尔代夫 �(�� (b z� �%qj �BML #� *DMali 3(q ;(q @(q HOマリ共和国 U(q aHМали mF马里 �(�� $+ z� �'�(3 �BMT #� *EMalta 3(qw ;(qw @EMalte HLマルタ島 U(qw aLМальта mI马耳他 �(�� (b z� �$I` �BMR #� *KMauretanien 3JMauritania ;(q� @JMauritanie H]
モーリタニア・イスラム共和国 UKMauritânia aTМавритания mO毛利塔尼亚 �(�� (b z� �A� �BMU #� *IMauritius 3(r� ;HMauricio @GMaurice HRモーリシャス UIMaurício aPМаврикий mL毛里求斯 �(�� $+ z(� �(�� $+ z� �-�1 �BMC #� *FMonaco 3(s ;GMónaco @(s HIモナコ U(s+ aLМонако mI摩纳哥 �(��   z� ��� �BMN #� *HMongolei 3HMongolia ;(s� @HMongolie HOモンゴル国 UIMongólia aPМонголия mF蒙古 �(�� $+ z� �0� �BME #� *JMontenegro 3(s� ;(s� @LMonténégro HRモンテネグロ U(s� aTЧерногория mF黑山 �(�� (b z� �&ɷ �BMA #� *GMarokko 3GMorocco ;IMarruecos @EMaroc HRモロッコ王国 UHMarrocos aNМарокко mI摩洛哥 �(�� (b z� �ҭ �BMZ #� *HMosambik 3JMozambique ;(u @(u H[モザンビーク共和国 UKMoçambique aPМозамбик mL莫桑比克 �(��   z� �B� �BMM #� *GMyanmar 3(u� ;RMyanmar (Birmania) @(u� HUミャンマー連邦 USMianmar (Birmânia) aYМьянма (Бирма) mF缅甸 �(�� (b z� �32� �"� #� *GNamibia 3(v ;(v @GNamibie HUナミビア共和国 UHNamíbia aNНамибия mL纳米比亚 �(��   z� ��� �BNP #� *ENepal 3(v� ;(v� @FNépal HRネパール王国 U(v� aJНепал mI尼泊尔 �(�� (b z� �%= �BNE #� *ENiger 3(w ;FNíger @(w HXニジェール共和国 U(w aJНигер mI尼日尔 �(�� (b z� �#�^ �BNG #� *GNigeria 3(wq ;(wq @(wq H]ナイジェリア連邦共和国 UHNigéria aNНигерия mL尼日利亚 �(��   z(2� �(��   z� ��� �BPK #� *HPakistan 3(x ;IPakistán @(x H]
パキスタン・イスラム共和国 UJPaquistão aPПакистан mL巴基斯坦 �(��   z(| �(��   z( �(�� (b z� �jH �BDJ #� *IDschibuti 3HDjibouti ;FYibuti @(x� HIジブチ UGDjibuti aNДжибути mI吉布提 �(�� (b z� �"~ �BCG #� *VKongo (Republik Kongo) 3NCongo Republic ;(e� @TRépublique du Congo HRコンゴ共和国 U(e� a]Республика Конго mO刚果共和国 �(�� $+ z( �(�� (b z� �n �BRW #� *FRuanda 3FRwanda ;(y� @(y� HUルワンダ共和国 U(y� aLРуанда mI卢旺达 �(�� (b z� �3n� �BSH #� *JSt. Helena 3LSaint Helena ;KSanta Elena @OSainte-Hélène HRセントヘレナ ULSanta Helena aVо-в Св. Елены mL圣赫勒拿 �(�� $+ z� �0WD �BSM #� *JSan Marino 3(z� ;(z� @KSaint-Marin HXサンマリノ共和国 U(z� aSСан-Марино mL圣马力诺 �(�� (b z� �$� �BST #� *XSão Tomé und Príncipe 3XSão Tomé and Príncipe ;WSanto Tomé y Príncipe @USao Tomé-et-Principe H]サントメ・プリンシペ UVSão Tomé e Príncipe a]Сан-Томе и Принсипи mX圣多美和普林西比 �(��   z(*V �(�� (b z� �"D �BSN #� *GSenegal 3(|� ;(|� @ISénégal HUセネガル共和国 U(|� aNСенегал mL塞内加尔 �(�� $+ z(2� �(�� (b z� �$� �BSL #� *LSierra Leone 3(} ;LSierra Leona @(} HRシエラレオネ UJSerra Leoa aWСьерра-Леоне mL塞拉利昂 �(�� $+ z(&� �(�� (b z� ��Q �BSO #� *GSomalia 3(}� ;(}� @GSomalie HLソマリア UHSomália aLСомали mI索马里 �(��   z� ��S �BLK #� *ISri Lanka 3(~( ;(~( @(~( H]
スリランカ民主社会主義共和国 U(~( aQШри-Ланка mL斯里兰卡 �(�� (b z� ��� �BSD #� *ESudan 3(~� ;FSudán @FSoudan HUスーダン共和国 UFSudão aJСудан mF苏丹 �(�� $+ z� �	C` �BSJ #� *YSpitzbergen und Jan Mayen 3VSvalbard and Jan Mayen ;TSvalbard y Jan Mayen @USvalbard et Jan Mayen H]スバールバル諸島・ヤンマイエン島 UTSvalbard e Jan Mayen a]
Шпицберген и Ян-Майен m]斯瓦尔巴岛和扬马延岛 �(��   z(/� �(��   z� ��9 �BTJ #� *MTadschikistan 3JTajikistan ;KTayikistán @KTadjikistan H[タジキスタン共和国 UMTadjiquistão aVТаджикистан mO塔吉克斯坦 �(�� (b z(s �(��   z"B �(�� (b z� �$& �BTG #� *DTogo 3(� ;(� @(� HRトーゴ共和国 U(� aHТого mF多哥 �(�� (b z� �%�� �BTN #� *HTunesien 3GTunisia ;FTúnez @GTunisie HXチュニジア共和国 UHTunísia aJТунис mI突尼斯 �(��   z� ��� �BTM #� *LTurkmenistan 3(�� ;MTurkmenistán @MTurkménistan HXトルクメニスタン UNTurcomenistão aXТуркменистан mO土库曼斯坦 �(�� (b z(| �(�� $+ z(
� �(�� $+ z($ �(��   z(	� �(��   z� �� �BUZ #� *JUsbekistan 3JUzbekistan ;KUzbekistán @LOuzbékistan H]ウズベキスタン共和国 ULUzbequistão aTУзбекистан mR乌兹别克斯坦 �(�� $+ z( �(��   z(� �(��   z� �� �BYE #� *EJemen 3EYemen ;(�� @FYémen HUイエメン共和国 UFIêmen aJЙемен mF也门 �(�� (b z� �
�� �BZM #� *FSambia 3FZambia ;(�& @FZambie HUザンビア共和国 UGZâmbia aLЗамбия mI赞比亚 �(�� (b z� �
hS �BZW #� *HSimbabwe 3HZimbabwe ;GZimbawe @(�� HXジンバブエ共和国 UIZimbábue aPЗимбабве mL津巴布韦 �(�� $+ z(h �(��   z� ��� �BAF #� *KAfghanistan 3(�. ;KAfganistán @(�. H]
アフガニスタン・イスラム国 ULAfeganistão aTАфганистан mI阿富汗 �(�� $+ z('� �(�� (b z� �'�� �BDZ #� *HAlgerien 3GAlgeria ;GArgelia @HAlgérie H]
アルジェリア民主人民共和国 UHArgélia aJАлжир mO阿尔及利亚 �(�� $+ z� �
z(3 �BAX #� *LÅlandinseln 3NÅland Islands ;KIslas Aland @LÎles Åland HUオーランド諸島 UFAlanda aLАланды mL奥兰群岛 �(�� $+ z� �.k� �BIM #� *KIsle of Man 3(� ;KIsla de Man @KÎle de Man HIマン島 UKIlha de Man aLо-в Мэн mR英国属地曼岛 �(�� $+ z� �.l: �BGG #� *HGuernsey 3(�� ;IGuernesey @(�� HOガーンジー U(�� aLГернси mI根西岛 �(�� $+ z(� �(�� $+ z(% �(�� $+ z(� �(��   z&w �(� !B z!� �(� (b z(nd �(nd�   z(
= �(� $+ z$� �(�   z(�� �(��� $+ z(^ �(^�   z(#V �(�� $+ z(� �$�� $+ z((� �(� $+ z(3 �(�   z(�� �(� "� z(' �(� $+ z(R �($� $+ z( �($� "� z(' �($� (b z� ��(3 �BYT #� *GMayotte 3(�( ;(�( @(�( HOマヨット島 U(�( aNМайотта mI马约特 �� �6z�(3 �BMQ #� *JMartinique 3(�� ;IMartinica @(�� HUマルティニーク U(�� aRМартиника mL马提尼克� "� z(�u �(�u� "� z(G> �(�u� "� z� �6�5(3 �BMF #� *JSt. Martin 3LSaint Martin ;KSan Martín @LSaint-Martin HUサン・マルタン UMSão Martinho aSСен-Мартен mO法属圣马丁 �(�u� (� z� �3��(3 �BGF #� *TFranzösisch-Guayana 3MFrench Guiana ;PGuayana Francesa @FGuyane HO仏領ギアナ UOGuiana Francesa a]Французская Гвиана mO法属圭亚那 �(�u�   z#� �(|� (� z(q �(|� "� z#^ �(|� $+ z(, �(|� $+ z(~ �(
=�   z(lm �#^� $+ z(
i �(� "� z#^ �(�� $+ z(, �(�� $+ z(� �($� $+ z(^ �($� $+ z($i �($� $+ z(� �($� $+ z(
� �($� $+ z(x �($� $+ z(z �($� "� z('I �($� !B z(,� �($� "� z#^ �(
=�   z(#V �(	��   z(�� �(��� $+ z(� �(
=� $+ z(, �("�   z � �(z� $+ z(, �(z� !B z(,� �(�� $+ z(� �(Q� $+ z(� �(x� $+ z(x �(x($($�   z(
= �(�� $+ z($ �#^� $+ z(, �(3� $+ z(� �(3� "� z(' �(3� $+ z(� �(�� $+ z(
� �$�� $+ z(R �(� $+ z(^ �(� $+ z(� �(�� $+ z(
� �(�� $+ z( �(�� $+ z(
i �(�� $+ z(
� �(�� $+ z( �(�� $+ z(� �(�� $+ z(� �(� $+ z(� �(!.� $+ z(� �(!.� $+ z(z� �(^� $+ z(, �(
=�   z(#V �#�� $+ z(� �(^� $+ z( �(^� $+ z(R �(^� $+ z(� �(^� (b z(Vi �(^� (b z(el �(^� $+ z$� �(� $+ z(2� �(�   z(	� �(�   z( �(� $+ z(� �(�   z(lm �(� $+ z(� �(� $+ z(R �(� $+ z(� �(
=� $+ z$� �(1�� $+ z(^ �(1�� $+ z(x �(1�� "� z#^ �(�� $+ z(� �$�� $+ z(� �(~� $+ z(z �(~�   z( �(�   z(
= �(~� $+ z( �(~� $+ z($i �(~� $+ z(� �(~� $+ z( ? �(~�   z � �(~�   z(#V �(~� $+ z(� �(~� $+ z(2� �(~� $+ z("� �(~� (b z(�� �(� $+ z($ �(�� $+ z(h �(~� $+ z( �(S�   z(1 �(,�   z#� �(��   z#� �$�� $+ z(8� �(	�� $+ z(� �(	�� "� z('I �(	�� $+ z("� �(	�� $+ z(
� �(�� $+ z(� �(�� $+ z( �(� $+ z(, �(S�   z"B �(�   z%[ �(�   z(( �(� !B z(,� �(� $+ z(3 �(3($($�   z � �$��   z%[ �(	�� $+ z(� �(	��   z#� �(��   z(� �(� "� z#^ �(�� "� z#^ �('� $+ z(x �(S�   z(-� �(S� $+ z(z �(S� "� z#^ �(�� $+ z(� �(�   z#� �('�   z � �('� $+ z(� �(�   z � �(�   z(�� �(	�� $+ z(R �$�� $+ z( �$�� $+ z((� �$�� $+ z(
� �$�� $+ z(, �$�($($� $+ z(x �(	��   z � �(	�� $+ z(, �((�� $+ z$� �#�� $+ z(� �#�� (� z(� �(	��   z(lm �(lm� $+ z( �(
i� $+ z(� �(
i� $+ z(z �(
i� $+ z(
� �(
i� $+ z(� �(
i� $+ z(� �(
i� $+ z(� �(
i� $+ z(� �(
i� $+ z(R �(
i� $+ z((� �(
i� $+ z("� �(
i� $+ z(&� �(
i� $+ z(h �(
i� $+ z(8� �(
i� $+ z(2� �(
i� $+ z(Q �(
i� $+ z($ �(
i� $+ z(� �(
i� $+ z( �(
i� $+ z(3 �(
i� $+ z(� �(
i� $+ z(x �(
i� $+ z(^ �(
i� $+ z(
� �(
i� $+ z(� �(
i�   z(1� �#^�   z(]� �#^�   z(_ �#^�   z(` �#^� "� z#^ �(x� $+ z(^ �$�� $+ z(
i �#^� $+ z(
i �(z� "� z(G> �(G>� (b z(( �(� (� z(q �(� $+ z($ �(� $+ z(^ �$��   z#� �(�   z(
= �(� $+ z(3 �$�� $+ z(x �(� (� z(q �$��   z(� �(� $+ z(Q �(� !B z!� �(�   z(
= �$�� $+ z(^ �(� $+ z(
� �$��   z(#V �(� $+ z(z �(x� $+ z( �(x� $+ z(qa �(qa� �(,� $+ z� ��M �BXK #� *FKosovo 3(�_ ;(�_ @(�_ HIコソボ U(�_ aLКосово mI科索沃 �('�� $+ z(
� �(� $+ z(5� �(R� "� z#^ �(�� $+ z(Q �(� $+ z(z �(� $+ z(� �(� (� z(q �(!.� "� z#^ �(&�� $+ z(, �(&�� $+ z(
i �(��   z"B �(�   z(1� �(� $+ z( �("��   z(
= �(	�� "� z(' �(x� "� z(N� �(N�� $+ z(R �(	�� $+ z$� �(�� $+ z( �(��   z(� �(~� "� z('I �(~�   z(	� �(~�   z&w �(~� $+ z( �(~� !B z!� �(~� $+ z(^ �(~�   z � �(��   z(
= �(��   z(l� �#^� $+ z( �(� $+ z(� �(� $+ z(Q �(� $+ z(� �(� !B z� �=�� �BMP #� *SNördliche Marianen 3XNorthern Mariana Islands ;XIslas Marianas del Norte @WÎles Mariannes du Nord HU北マリアナ諸島 UWIlhas Marianas do Norte a]Северные Марианские о-ва mO北马里亚纳 �#^� !B z(G� �#^� "� z(C� �#^� $+ z(� �#^� (� z(PR �#^� "� z� �I1g �BVI #� *\Amerikanische Jungferninseln 3SU.S. Virgin Islands ;ZIslas Vírgenes de EE. UU. @]Îles Vierges des États-Unis H[米領ヴァージン諸島 UXIlhas Virgens Americanas a]Виргинские о-ва (США) mU美属维尔京群岛 �#^� "� z(+� �#^� $+ z($i �#^� (b z(w` �#^� $+ z(
� �#^� (b z(\� �#^�   z(( �#^� $+ z( �#^� $+ z(� �#^� $+ z(S �#^� $+ z(3 �#^�   z"B �#^� $+ z(~ �#^� $+ z( �#^� $+ z((� �#^� $+ z(2� �#^� $+ z( ? �#^� !B z� �YV� �BUM #� *\Amerikanische Überseeinseln 3UU.S. Outlying Islands ;]Islas menores alejadas de EE. UU. @]
Îles mineures éloignées des États-Unis HX合衆国領有小離島 U]Ilhas Menores Distantes dos EUA a]
Внешние малые о-ва (США) mX美国本土外小岛屿 �#^� $+ z(� �#^� $+ z(%� �#^� !B z(<� �#^� "� z(Qs �#^� $+ z("� �#^�   z � �&w� $+ z(� �&w� $+ z( �&w� $+ z$� �&w�   z(	� �&w�   z"B �&w�   z(( �&w�   z(� �&w�   z(*V �&w�   z(-� �&w�   z(l� �&w�   z$� �&w�   z%[ �&w� (� z(D� �#^� (� z(Z� �#^� "� z(N� �#^� "� z(K� �#^� "� z(H �#^� "� z(IW �#^� $+ �#^�   z � �#^�   z � �%��   z(� �%��   z&� �%��   z%[ �%��   z"B �%��   z(sp �%��   z$� �%��   z(	� �%��   z(( �%�� !B z(,� �(,�� !B z(Y� �#^�   z(c� �#^�   z(p� �#^�   z(sp �#^�   z(]� �(]��   z(w� �(w��   z(sp �(sp�   z � � �Srepresented_country� #a �#g ##lDtypeHmilitary�   z(-� �(-��   z � �#�� !B z(N� �&w� !B z(WZ �&w� !B z(U: �&w� !B z(Zy �&w� !B z(Fg �&w� !B z(G� �&w� !B z(B, �&w� !B z(Y� �&w� !B z(,� �&w� !B z!� �&w� $+ z(z �&w� $+ z(x �&w� $+ z(^ �&w� $+ z(� �&w� $+ z(Q �&w� (b z(� �&w� (b z(w` �&w�   z(~ �$��   z#� �%[� !B z(N� �(N��   �#^�   z(2� �#^�   z&w �('�   z(( �('�   z(*V �#^�   z(o �#^� "� z(I� �#^� $+ z('� �#^�   z(" �#^�   z(� �#^� "� z(W� �#^� "� z(B� �#^�   z'| �#^�   z(� �(��   z(
= �(�� "� z(' �(�� "� z(X� �#^� "� z('� "� z(Qs �(Qs� "� z#^� �('� "� z(F� �(F�� "� z(Q� �(Q�� "� z(> �(>� "� z� �6�l �BBL #� *OSt. Barthélemy 3QSaint Barthélemy ;NSan Bartolomé @QSaint-Barthélemy H[サン・バルテルミー UOSão Bartolomeu a]Остров Святого Бартоломея mO圣巴泰勒米 �(��� $+ z(, �#^($($� "� z(� �(�� "� z(�� �(��� �#^�   z(M� �#^� "� z(�u �('� "� z(I� �(I�� $+ z(, �('� "� z(S� �(S�� "� z(?Y �(?Y� "� z(C8 �(C8� "� z(AX �(AX�   z(us �#^� (� z(Z �#^� "� z(F� �#^�   z(~ �#^�   z(:* �#^�   z$� �('�   z � �('� (b z(tg �#^�   z(#V �#^� "� z#^ � �� $+ z( � �� $+ z(� � ��   z#� � �� $+ z(x � �� (� z(PR � �� "� z(L � �� (b z(w` � �� $+ z(� � ��   z(*V � �� (� z(Z� � �� "� z(?Y � �� (b z(tg � ��   z(2� � �� (� z(� � ��   z(�� � �� "� z(?� �(?�� $+ z(� �('� "� z(R� �(R�� (� z(q �(q� (� z(O� �(O�� "� z(C� �(C�� "� z(H �(H� (� z(� �(�� (� z(� �(�� $+ z(x �(��   z(v� �(v�� (� z(D� �(D�� !B z(V� �(V��   z(o �#��   z&w �#��   z(o �(o�   z(us �(us�   z(( �!��   z(p� �(p�� "� z#^ �$�� !B z!� �(,�� !B z(L �(L� !B z!� �#��   z&� �#��   z$� �#�� !B z(Fg �(Fg� !B z� �=�� �BWF #� *QWallis und Futuna 3QWallis and Futuna ;OWallis y Futuna @PWallis-et-Futuna HXウォリス・フツナ UOWallis e Futuna a\Уоллис и Футуна mU瓦利斯和富图纳 �(�C�   z(w� �&w�   z%� �%�($($� $+ z( �(
=� $+ z(R �(N�� $+ z(3 �(4�� $+ z(R �(5��   z � �(�� $+ z$� �(~�   z$� �(��   z&w �(�� $+ z(^ �(�� $+ z(z �(��   z%� �(�� !B z(,� �(�� "� z(' �(��   z � �(�� $+ z(� �(�� $+ z(� �(�� (� z(q �(��   z&� �(�� "� z('I �(�� (� z(� �(��   z(-� �(�� $+ z(
i �(�� $+ z( �(� $+ z(z �(� $+ z(3 �(^� $+ z(3 �(S� "� z#^ �(Q� $+ z( �(�� $+ z( �(�� $+ z(x �(Q� "� z('I �(��   z#� �(��   z"B �(�� $+ z( �(�� $+ z(� �(~�   z$� �(�� $+ z('� �('�� $+ z(� �(�� $+ z(
� �(z�   z(
= �(�� (� z(� �(�� $+ z(� �(�� $+ z( �(�� "� z#^ �(�� $+ z(x �(�� $+ z( �(�� $+ z( �!�� � BAN �_r0 #� *IAntarktis 3JAntarctica ;JAntártida @KAntarctique HL南極大陸 UJAntártica aTАнтарктика mI南极洲 z� �3ps �BBV #� *KBouvetinsel 3MBouvet Island ;KIsla Bouvet @KÎle Bouvet HLブーベ島 UKIlha Bouvet aNо-в Буве mI布维岛 �("�� (� z(� �(� $+ z( �(��   z&� �(�� $+ z(� �#��   z � �$�� (� z(PR �$�� (� z(PR �#�� $+ z(
� �#�� $+ z(, �(Q� $+ z$� �($�   z$� �($� (b z(( �($�   z(� �(S� $+ z(R �(S� $+ z(� �(S� "� z(@> �(@>�   z � �(!.� $+ z(� �(!.� $+ z(S �(!.� $+ z(%� �(!.� (b z(( �(!.� $+ z(� �(!.� $+ z( �(!.�   z(
= �(!.�   z"B �(!.� (b z(� �(!.� $+ z('� �(!.�   z&� �(!.� (� z(� �(!.�   z(]� �(!.�   z(	� �(!.� $+ z(%� �$�� $+ z(
� �$�($($� !B z!� �(R� $+ z(x �(�   z(	� �(z� $+ z(
� �(Q�   z(�� �(�� $+ z(� �(��   z(/� �(�� $+ z(^ �(�� (� z(� �(� $+ z(, �(�� $+ z( �('�� "� z#^ �(�� $+ z(� �(�� $+ z$� �(&�� $+ z(� �(� $+ z(� �(|� $+ z(� �(Q�   z(w� �(�   z(*V �(�   z&� �(�   z&w �$�� $+ z(� �$�� $+ z(z� �(z�� $+ z(^ �(z�� $+ z(� �(��   z � �(x� $+ z( �$�� "� z(' �$�� !B z!� �$�� $+ z(� �$��   z(( �$�� $+ z(^ �$�� $+ z(s� �(s�� (b z(el �#^� $+ z(� �((��   z(
= �((�� "� z('I �(,� $+ z$� �(#V� $+ z(Q �(
=� $+ z(Q �(!.� $+ z(� �(��   z(	� �(x�   z&w �(x�   z(-Q �(-Q� "� z(C� �(,� "� z(IW �(,� $+ z(
i �(�� "� z(L �(� $+ z(Q �(�� $+ z(� �(%� "� z#^ �("� $+ z(3 �#��   z(( �(�� $+ z(, �(�� $+ z(^ �(�� $+ z(� �(�� $+ z(8� �(��   z$� �(�� !B z(,� �(,� $+ z(Q �$��   z � �(#V�   z(w� �#^� !B z(N� �#^� $+ z(^ �#^� (b z(� �#^� $+ z(\~ �#^� $+ z(5� �#^� $+ z(s �#^� $+ z(&� �#^�   z(�� �#^� (� z(@� �#^� (� z(O� �#^� $+ z(qa �#^� (b z(�g �#^� (b z(�� �#^�   z(w� �(]��   z(_ �(_�   z(� �&��   z(( �&�� "� z#^ �(h� $+ z("� �(h� (� z(D� �(h�   z&� �(w��   z(( �(w��   z&w �(w��   z$� �(w��   z&w �%[�   z(
= �#�� "� z#^ �(w�� $+ z("� �(w�� $+ z(h �(z� $+ z(S �(z� (b z(tg �(� $+ z(� �(x� $+ z(Q �(�� $+ z(x �(
�� $+ z(� �(
�� $+ z(� �(
�� $+ z((� �(
�� $+ z(� �(
�� $+ z(
� �(
�� $+ z(� �(
�� (b z(nd �(
�� $+ z("� �(
�� (b z(tg �(
�� $+ z(� �(
�� $+ z(� �(
�� $+ z(z �(
�� $+ z(R �(
�� $+ z(^ �(
�� $+ z( �(
�� $+ z(� �(
�� $+ z( �(
�� $+ z(~ �(
�� $+ z(h �(
��   z(" �(
�� $+ z(^ �(^($($� $+ z(� �(��   z(" �(,�   z(:* �(,� "� z(j\ �(j\� $+ z("� �(x� $+ z(x �(��   z&w �(� $+ z(
� �(R� (� z(q �(R� (� z(�� �(R� $+ z(� �(R� $+ z(, �(R�   z&w �(R� $+ z(� �(R�   z(*V �(lm� (� z(� �(S� $+ z(s �(s� $+ z(2� �(,� $+ z(� �(!.� $+ z( �(!.� $+ z(, �(L� $+ z(
i �(x� $+ z( �(x� $+ z($ �#�� $+ z(�� �(�� $+ z(� �(��   z(�; �(�;� $+ z(� �(�� $+ z((� �(� $+ z(3 �(� $+ z(2� �(� $+ z$� �(� $+ z("� �(� !B z!� �(� $+ z(, �(($($� $+ z(h� �(� $+ z(z �$��   z#� �!�� "� z#^ �(*V� $+ z(%� �(1��   z&� �!�� !B z!� �($� (� z(� �($� $+ z($ �(%�� (b z(ry �(ry�   z%� �(3�   z(-� �$�� "� z('I �$�� $+ z($i �(� (� z(� �('� $+ z(
� �('�   z#� �(S� $+ z(� �(�� $+ z( �(��� $+ z(� �(z� $+ z(� �(��   z � �(S�   z(]� �(x� $+ z( �(%��   z(�� �$�� $+ z(� �$�� $+ z(
� �(�� $+ z( �(�� $+ z(z �(�� $+ z(s� �(2�� "� z#^ �(�� $+ z(
� �( ?� $+ z(
� �( ?($($� $+ z(
� �(� $+ z(&� �(,� $+ z(S �$�� $+ z(
i �$��   z%[ �(,� "� z(?Y �(,� $+ z(� �$��   z(#V �(,�   z(� �(	�� $+ z(R �(z� $+ z(� �(z� $+ z( �(z� $+ z( �(z� $+ z("� �(z� $+ z((� �(z� $+ z(� �(z� $+ z( �(z� $+ z(Q �(z� !B z!� �(�� $+ z(� �(�� $+ z(^ �(�� $+ z( ? �(�� $+ z(Q �(�� $+ z(Q �(�($($� $+ z(R �(�� (� z(� �(�� $+ z(� �(�� $+ z(z �(�� $+ z(x �(�� $+ z(� �(
=� $+ z(Q �(�� (b z(tg �(x� $+ z( �(�� $+ z(&� �(�� "� z(' �(�� (� z(q �(��   z&� �(��   z%� �(��   z(	� �(�� $+ z("� �(�� $+ z(3 �(�� $+ z(
� �(�� $+ z$� �(�� $+ z$� �(�($($� "� z(> �#^� "� z(E
 �#^�   z(� �#^�   z(1 �#^� (b z(aW �#^� (b z(nd �#^� (b z(_� �#^�   z(v� �#^�   z(�� �#^� "� z(Q� �#^� "� z(R� �#^� (� z(H� �#^� (b z(q �#^� (b z(� �#^� (b z(t� �#^� (b z(Vi �#^� $+ z(8� �#^�   z(� �#^� (b z(e� �#^� $+ z( �#^($($� !B z!� � �� "� z#^ � ��   z(
= �((� (b z(� �(�� (b z(�� �(��� (b z(m� �(m�� (b z(� �(�� (b z(w` �(w`� (b z((� (b z(��� (b z(s �(s� (b z(�� �(�� (b z(� �(�� (b z(el �(�� (b z(� �(�� (b z(_� �(�� (b z(e� �((� (b z(�g �(�g� (b z(w` �((� �((� (b z(� �((�   z$� �((� $+ z( �((�   z(2� �((� $+ z(� �((� (� z(D� �((� (b z(v �(v� (b z(oz �(oz� (b z(\� �(\�� (b z(e� �(e�� $+ z(� �((� (b z(� �(�� (b z(~� �(~�� (b z(p �(p� "� z#^ �(w`�   z$� �(w`� $+ z(, �(w`� (b z(\�� (b z(\� �(�� (b z(� �(ry� (b z(q �(q� (b z(� �(w`� (b z(^� �(^�� (b z(_� �(_�� (b z(b�� (b z(( �(e�� (b z(aW �(aW� (b z(y� �(y�� (b z(y �(y� (b z(| �(|� (b z(t� �(t�� (b z(i� �(i�� (b z(m� �(m�� (b z(m� �(_�� (b z(� �(�� (b z(tg �(tg� $+ z(� �(�� (b z(� �(ry� (b z(k� �(k�� (b z(s� (b z(�� (b z(el �(el� (b z(Vi �(Vi� (b z(ry� (b z(`� �(`�� (b z(}� �(}�� (b z(} �(}� (b z(v� �(v�� (b z(a� �(a�� (b z(� �(�� (b z(i= �(i=� (b z� �x�� �BSS #� *ISüdsudan 3KSouth Sudan ;NSudán del Sur @MSoudan du Sud HX南スーダン共和国 U[República do Sudão do Sul aUЮжный Судан mI南苏丹 �(��� (b z( �(� (b z(f� �(f�� (b z(�� �(ry� !B z(,� �((� (b z(( �(s� (b z(|� �(|�� (b z(w` �(ry� (b z(( �(_�� (b z(�� (b z(�� �(��� (b z(q� �(q�� (b z(( �(ry� (b z(| �(ry� (b z(y� �(ry� (b z(el �(ry� (b z(s �(ry� "� z#^ �((� "� z(' �((� $+ z(^ �((� $+ z(� �((� $+ z(x �((� (� z(Z� �((� (b z(x� �(x�� (b z(^�� (b z(|� (b z(_� �(e�� (b z(_� �(�� (b z(( �(�� (b z(� �((� (b z(d� �((� (b z(y �((� (b z(�� �((� (b z(v �(ry� (b z(e�� (b z(w`� (b z(w` �(e�� (b z(y �(�� (b z(��� (b z(s �(�� (b z(� �(e�� $+ z(
� �((�   z(-� �((� $+ z(, �((� $+ z(Q �((� (b z(�� (b z(\� �(v� (b z(� �(v� (b z(^� �((�   z(( �(�� $+ z(3 �(�g� (b z(el �(�� (b z(el� (b z(� �(�� (b z(b� �(b�� $+ z(�N �%�� "� z(' �%��   �&w�   z$� � ��   � ��   z&w � �� $+ z(� �&w� $+ z(3 �&w� $+ z((� �&w� $+ z(2� �&w� $+ z(&� �&w� $+ z(8� �&w� $+ z(h �&w� $+ z("� �&w� $+ z(, �&w� "� z(' �&w�   z(
= �&w�   z(� �&w�   z(v� �&w�   z%� �%[�   z(l� �(l��   z(~ �(~�   z(` �(`� (b z(( �#��   z(	� �$��   z"B �(l�� (b z(� � ��   z � �(w�� !B z!� �(w�� "� z#^ �(,��   z(]� �$�� $+ z($i �$�� !B z(K; �(K;� $+ z( � �� !B z(G� �(G�� !B z!��   z%[ �$�� !B z!� �$�� !B z(T� �(T�� "� z#^ �(]��   z ��   z&w �!�� !B z� �d �BTL #� *KTimor-Leste 3(Ŷ ;(Ŷ @NTimor Oriental H[東ティモール共和国 U(Ŷ aUТимор-Лесте mI东帝汶 �(ť�   z(-� �#��   z(]� �(S�   z(( �%[�   z � �%[� !B z(�� �(G�� "� z(' � �� !B z� ��~ �BFM #� *KMikronesien 3]Federated States of Micronesia ;JMicronesia @KMicronésie HXミクロネシア連邦 UKMicronésia a]Федеративные Штаты Микронезии mX密克罗尼西亚联邦 �(ƅ�   z � � �� !B z!� � ��   z%� � ��   z � �(,�� (� z(� �(,�� (� z(� �(,��   z%� �!�� !B z� �=�� �BPF #� *WFranzösisch-Polynesien 3PFrench Polynesia ;RPolinesia Francesa @UPolynésie française HU仏領ポリネシア USPolinésia Francesa a]Французская Полинезия mU法属波利尼西亚 �(���   z(o �&w�   z � �(sp� !B z(,� �!��   z%[ �!��   z&w �"B�   z(� �#�� (� z(q �$�� !B z!� �"B� !B z(WZ �(WZ� (� z(� �(�� "� z(IW �(IW� (� z(@� �(@�� "� z#^ �(IW� "� z(E
 �(E
� "� z('I �('I� "� z(+� �(+�� (� z(PR �(PR� (� z(q �(PR� (� z(� �(PR� "� z(K� �(K�� (� z(O� �(Z� (� z(Z� �(Z��   z(
= �(�� "� z#^ �(�($($�   z(( �(,�   z(-� �(,� (� z(PR �(,� "� z� �t`T �BCW #� *HCuraçao 3(�] ;GCurazao @(�] HOキュラソー U(�] aNКюрасао mI库拉索 �(�L�   z(-� �(~�   z#� �(~�   z%[ �(~� "� z(' �(~� (� z(� �(~� !B z!� �(S� (� z(q �(~� $+ z(, �(C8� $+ z(, �(C8($($� $+ z(R �(C8� $+ z(R �(C8($($�   z(	� �(� $+ z(S �(� $+ z$� �(3� $+ z(� �(3� $+ z(� �(3�   z(� �(� "� z#^ �($($($� $+ z(�� �(��� $+ z((� �(x�   z(
= �(x� $+ z( �(�   z%� �(!.� $+ z(x �(!.�   z#� �(!.� $+ z(
� �(!.�   z(�� �(��   z(:* �(	�� !B z(Zy �$��   z( �$�� $+ z(
i �$�� $+ z(R �(�� $+ z(Q �(R�   z(2� �(� $+ z(� �(� $+ z(&� �(� $+ z("� �(� $+ z((� �(� $+ z(, �(�� $+ z(
� �(S� $+ z(3 �(�� $+ z(� �($� $+ z(x �(3� "� z#^ �(z� $+ z(x �(z� $+ z(^ �(z� $+ z(x �$�($($� $+ z((� �(�� "� z(� �(,� !B z!� �(��   z(� � �� !B z(,� � ��   z&� � �� (b z(p �#^� $+ z( �#^� (b z(~� �#^� (b z( �#^� (b z(} �#^� (b z(� �('� !B z(K; �#^� (b z(q� �#^� (b z(f� �('� $+ z(z� �#^� (b z(j� �#^� !B z(Y� �('� (b z(d� �('� (b z(y �(F�� (b z(}� �(S�� "� z#^ �(S�� !B z(T� �#^�   z(� �(�� !B z(WZ �#^� $+ z(�� �#^� $+ z( �#^� (b z(k� �#^� "� z(�u �#^� "� z(N� �('� (b z(�� �('� (b z(v� �('� $+ z(% �('� "� z(� �#^� "� z(?Y �#^� "� z(AX �#^� "� z(C8 �#^� "� z(?� �#^� "� z(G> �#^� "� z(J� �#^� "� z(� �#^� "� z(S� �#^� "� z([o �#^�   z&w �(-�� $+ z(Q �(v�� $+ z(&� �(v�� $+ z(� �(v��   z$� �(,�� $+ z(x �$�� $+ z(� �(!.� (� z(Z� �(�� $+ z(, �$�� $+ z(
� �(~� $+ z(� �$�� "� z#^ �('�� $+ z('� �$��   z(� �(	�� "� z(' �(	��   z%� �(,� $+ z(� �(�� $+ z(� �(�   z%� �(� (� z(U� �(U�� "� z(L �(L� $+ z(%� �(
i� !B z(,� �('�� $+ z(� �('�� $+ z(� �$�� "� z(+� �(� (� z(D� �(��   z(#V �(($($�   z%� �(� $+ z(
� �(� "� z#^ �(�;� $+ z("� �(S� (� z(q �('� $+ z(� �(,� $+ z(� �(z�   z(
= �(3� $+ z(S �(�� $+ z(^ �(	�� $+ z(z �(	�� $+ z(� �(	�� $+ z((� �$��   z(� �(� (� z(� �(� $+ z(4� �(�� $+ z(S �(�� $+ z(� �(�� (� z(q � �� $+ z(� � ��   z(1� �(��   z(v� �(��   z%[ �(��   z(~ �(��   z( �(�� (b z(�� �(�� (b z(b� �(�� (b z(q� �(�� (b z(|� �(�� (� z(Z� �(�� "� z(E
 �(�� $+ z($ �(�� $+ z(, �($i� (� z(q �(3� $+ z(� �(�   z(#V �(�� $+ z(� �$�� (� z(q �(z� (� z(PR �(�� $+ z(%� �(,� $+ z(S �(,� $+ z(� �(�� $+ z(R �(�� (� z(� �(~�   z � �(�� $+ z(qa �(� $+ z($i �(	�� $+ z( ? �(,�   z(	� �($i� $+ z(� �($i� "� z#^ �($i� $+ z(^ �($i�   z&w �(�� (� z(� �(� (� z(q �(	�� (� z(Z� �(	�� $+ z(z �#�� $+ z(^ �(	�� "� z('I �(�� $+ z(^ �#��   z(� �(	�� $+ z(� �(�� $+ z(� �(��   z%[ �(S�   z(( �(S� (� z(q �(x�   z#� �(x� $+ z(2� �$�� $+ �(~�   z(!. �(
=� !B z!� �(	��   z#� �(�� $+ z( �((�� $+ z(^ �(|� $+ z( �#�� $+ z(� �(S� $+ z(� �(�� $+ z(z �(�� "� z('I �(� $+ z(%� �(3� $+ z(Q �#�� $+ z(� �(�   z(#V �$�� $+ z(x �(R� $+ z(, �(%��   z%� �('� $+ z( ? �(�   z(" �(	�� $+ z(, �(�� $+ z(� �(�� $+ z(S �(~�   z$� �$�� $+ z( �(
=�   z(� �(�� $+ z(� �(1� "� z#^ �(1� $+ z(3 �(� (� z(PR �(� (� z(Z �(� (� z(Z� �(� $+ z("� �(�� $+ z(
i �(�� (b z(tg �$��   z(� �$�� "� z(?Y �(�   z(]� �(� "� z(@> �(� $+ z(h �(h($($�   z(	� �(�� $+ z$� �(�($($� $+ z(8� �(S�   z(us �(,�   z'| �(us� "� z(' �#�� !B z!� �(-��   z � �(-��   z(]� �((� !B z(G� �(��� $+ z( ?� $+ z(&�� $+ z((��   z&w �&w($($�   z%� �(��   z(( �$��   z(	� �!�� $+ z(^ �!�� (b z(( �!��   z(
= �&�� $+ z(S �#��   z$� �!�� $+ z( �"B� $+ z( �$��   z"B �(�� $+ z(%� �(� $+ z(s� �(�   z(� �(�� $+ z(� �#�� (� z(q �#�� $+ z(x �($i� $+ z(� �($i� $+ z(%� �($� $+ z(�N �(,� $+ z((� �(3� $+ z(, �(3($($� $+ z(Q �($i�   z&� �$�� !B z(G� �(3� �(� $+ z($ �($i� (b z(� �(�� "� z(N� �(1� $+ z(� �(
=� $+ z(, �#�� $+ z(� �#^� (b z(�� �(,�   z(:* �$��   z(-� �(� $+ z(%� �$�� "� z#^ �(2�� (�� z� �f0� �BAQ #� *(�� 3(� ;(�
 @(� HF南極 U(�
 aTАнтарктида m(�[ �(� (� z(� �#�� $+ z(Q �(%��   z � �(�� $+ z( �(R� $+ z($ �(Q�   z&w �(z� $+ z(^ �(,� $+ z($ �(�   z'| �(	��   z&� �(	�� (� z(q �(�   z(-� �(�   z&� �(� $+ z(%� �(	�� $+ z(� �(R� $+ z( �(R� "� z('I �(�� (b z(�g �$�� (b z(s �$��   z(_ �(� (� z(@� �(�   z(` �(�   z'| �(� $+ z(S �(��   z(	� �(	�($($� $+ z(� �(��� $+ z(
i �(���   z#� �(L� $+ z(
� �(	�� $+ z( �(~� $+ z(qa �(~� $+ z(
� �(~� (�� z� ��2 �BHM #� *XHeard und McDonaldinseln 3ZHeard and McDonald Islands ;VIslas Heard y McDonald @\Île Heard et îles McDonald H]
ハード島・マクドナルド諸島 UVIlhas Heard e McDonald a]о-ва Херд и Макдональд m[赫德岛和麦克唐纳岛 �(R� $+ z(� �(�� $+ z(, �(]��   z � �(	�� $+ z(\~ �(�   z(� �(�   z(1� �(�   z(w� �(	�� !B z(�� �(�� !B z� �� �BPW #� *EPalau 3(ޫ ;FPalaos @(޸ HIパラオ U(ޫ aJПалау mF帕劳 �(�� "� z� �t_ �BSX #� *LSint Maarten 3(� ;SIsla de San Martín @(�R H[シント・マールテン U(�y aUСинт-Мартен mL圣马丁岛 �(�� !B z(�� �(�� !B z� ��� �BMH #� *NMarshallinseln 3PMarshall Islands ;NIslas Marshall @NÎles Marshall HUマーシャル諸島 UNIlhas Marshall a]Маршалловы Острова mO马绍尔群岛 �(�� $+ z(� �(�� (b z(� �(�� "� z(�� �(�� !B z(ƅ �(�� $+ z(6� �(�� $+ z(Q �(,($($� $+ z(� �(�� $+ z(� �(�� $+ z(� �(� $+ z(4� �(�   z(" �(�� $+ z(z �(��   z(� �(3� $+ z(, �(�($($�   z(v� �#�� "� z(Qs �(,� $+ z(� �(��   z$� �(S� $+ z(� �(R� (b z(� �(��   z%� �(��   z#� �(3�   z#� �(&�� $+ z(, �(1� $+ z( �(1�   z(�; �(�� $+ z(� �(	��   z(
= �(�� !B z(,� �(��   z(� �$�� (� z(q �(^�   z&� �(,�   z$� �(z�   z(1� �(	��   z(� �(	�� (� z(q �(�� $+ z(z �!�� $+ z( �(#V� $+ z(� �((�� (b z(( �(�� $+ z(� �(	�� (� z(q �(�� "� z(' �(z� (� z(@� �$��   z#� �(z� (� z(Z� �(,�   z&w �(&��   z(M� �(&�� $+ z( �(&�� "� z(' �(S� "� z#^ �(%��   z#� �((�   z(*V �(� $+ z(&� �(	�� $+ z(h �(	�� (b z(� �(	��   z%� �(	�� $+ z(s� �(	��   z$� �(�   z(� �$��   z&� �(S�   z&� �(�� (b z(�� �$�� (b z(s �$��   z(( �#�� $+ z(~ �(� !B z!� �(�� $+ z(x �#�� $+ z(4� �(&��   z(*V �$�� $+ z(qa �(�� $+ z(� �(^� $+ z(x �(�($($� (� z(Z� �(S� (b z(w` �(��   z � �(^� $+ z(� �(�� $+ z(5� �(,� $+ z(
i �(	�� !B z(,� �(	�� $+ z(
� �(	�� (� z(�� (� z(q� "� z#^ �('I� "� z#^ �(q� "� z#^ �(PR� (� z(D� �(PR� "� z(N� �(PR� (� z(� �(PR� (� z(�� �(��� $+ z( �(IW� "� z#^ �(�� $+ z(� �(�� $+ z(� �(�� "� z(IW �(�� (� z(D� �(�� (� z(� �(�� (� z(� �(�� (� z(� �(�� (� z(� �('I� "� z(H �(O�� (� z(O� �(�� $+ z( �(�� $+ z(x �(�� "� z(' �(D�� "� z(W� �(W�� "� z(H �(E
� (� z(� �(q� "� z(H �(+�� (� z(� �(�� "� z#^ �(Z��   z#� �(ry� $+ z(Q �(ry� $+ z$� �(ry� $+ z( �(ry� $+ z(� �(ry� $+ z(z �(ry� $+ z(^ �(ry� $+ z(R �(ry� $+ z((� �(ry� $+ z(2� �(ry�   z(( �(ry�   z&w �(ry�   z(-� �(ry�   z(� �(ry�   z%[ �(ry� (� z(� �(ry� "� z#^ �(ry�   z&� �(ry� "� z(C� �(ry� (� z(PR �(ry�   z%� �(ry� $+ z( �(ry� !B z!� �(ry�   z(� �(ry� "� z('I �(ry� $+ z(� �(ry� (� z(Z� �(ry� "� z(+� �(ry� $+ z(
� �(ry� $+ z(� �(ry� $+ z(� �(ry� (� z(D� �(ry�   z'| �(ry�   z"B �(ry�   z$� �(ry�   z � �(ry�   z(
= �(ry�   z(us �(ry� "� z(E
 �(ry�   z(� �(ry� $+ z(, �(ry� "� z(H �(ry� $+ z(� �(ry�   z(v� �(ry�   z(w� �(ry� $+ z(%� �(ry� (b z(� �(ry�   z(]� �(ry� (b z(�� �(ry� !B z(N� �(ry�   z$� �(�� (b z(( �(�� (� z(PR �(q� (� z(q �(@�� (� z(q �(�� "� z(N� �(�� $+ z(, �(N�� (� z(Z �(Z� (� z(Z �(�� (� z(� �(O�� "� z#^ �(�� "� z(' �(�� "� z('I �(�� (� z(� �(�� (� z(� �(�� (� z(PR �(��   z&w �(]��   z&� �(]�� !B z(,� �$�� !B z(ߚ �#^� !B z(,� �#�� � ��   z%[ � ��   z(" �$��   z"B �$��   z%[ �$�� $+ z(� �$��   z&w �(��   z%� �(�� $+ z( �(��   z(
= �(�� $+ z(� �(��   z&� �(�� $+ z(� �(�� $+ z($ �(S� �(N�� $+ z$� �(>� $+ z( �(��   z#� �(�� $+ z(&� �(�� $+ z( �(�� $+ z(x �(�� $+ z(x �(|� $+ z$� �(R�   z$� �(1��   z%[ �(1�� $+ z($ �(1��   z(#V �(��   z$� �(�� $+ z(� �("�� (� z(Z� �(�� "� z(IW �(�� �(
i� $+ z(h �(�� $+ �(�� (� z(@� �(S� (� z(U� �(S� !B z(B, �(S� !B z(L� �(S� (�� z� ��� �BTF #� *]Französische Süd- und Antarktisgebiete 3[French Southern Territories ;]Territorios Australes Franceses @\Terres australes françaises HR仏領極南諸島 U]Territórios Franceses do Sul a]Французские Южные территории mR法属南部领地 �(S� $+ z(�� �(S� "� z('I �(S� "� z(�u �(S� (b z(� �(S� !B z(L �(S� !B z(M5 �(S� (b z(\� �(S� (b z(i� �(S� (b z(_� �(S�   z(:* �(S� (b z(oz �(S� (b z(t� �(S�   z(v� �(S�   z(` �(S�   z(�� �(S�   z(#V �(S� !B z(P� �(S� $+ z(z� �(S� $+ z(� �(S� $+ z(�e �(S� $+ z(h� �(S� $+ z( �(S�   z(c� �(S� !B z(K; �(S� (�� z� �5� �BGS #� *]Südgeorgien und die Südlichen Sandwichinseln 3]South Georgia and the South Sandwich Islands ;]Islas Georgia del Sur y Sandwich del Sur @]Géorgie du Sud-et-les îles Sandwich du Sud H]"サウスジョージア・サウスサンドウィッチ諸島 U]
Ilhas Geórgia do Sul e Sandwich do Sul a]'Южная Георгия и Южные Сандвичевы о-ва m]南乔治亚岛和南桑德韦奇岛 �(S� !B z(�� �(S� $+ z(^ �(R� "� z('I �(R� $+ z(^ �(R�   z%[ �(R� (� z(@� �(R�   z$� �(R� "� z(� �(R�   z(w� �(R� (� z(Z� �(R� (b z(j� �(R�   z(�; �(R� (b z(b� �(� (b z(el �(� (b z(x� �(� (b z(a� �(� "� z(� �(� "� z(S� �(� "� z([o �(� "� z(�� �(� "� z(C8 �(� (b z(d� �(� (b z(s �(� (b z({t �(� (� z(E� �(� (b z(| �(� !B z(�� �(� !B z(ť �(� !B z(�C �(� (b z(~� �(� "� z� �t`\ �BBQ #� *VKaribische Niederlande 3]Bonaire, Sint Eustatius, and Saba ;GBonaire @SPays-Bas caribéens H]%ボネール、シント・ユースタティウスおよびサバ U(� a]Бонайре, Синт-Эстатиус и Саба m]
博奈尔岛、圣尤斯达蒂斯和萨巴 �(� "� z(�L �(�   z(" �(� $+ z$� �(!.� $+ z(Q �(Q($($� $+ z(2� �('�� $+ z(R �(L�   z � �(S� $+ z($ �((�� $+ z(3 �((�� $+ z(Q �($� (b z(� �$��   z(]� �$�� !B z(,� �$��   z(�; �$�� $+ z(� �(��   z � �(,� $+ z(h �(&�� (b z(ry �(&�� $+ z(2� �(&�� $+ z(8� �(&�� $+ z(\~ �(\~� $+ z($ �('� $+ z$� �("�   z$� �(� $+ z(h �(�� $+ z(4� �(��   z(/� �(�� $+ z((� �(�� $+ z(%� �(L� $+ z(%� �(L($($� (b z(:� �(x� (� z(�� �(x� "� z(G> �(x� (b z(� �(x� "� z(�u �(x� $+ z(� �(x� "� z(�� �(x� !B z(L �(x� $+ z(z �(z($($�   z(	� �(/�� $+ z(z �(�� $+ z(x �(��   z#� �(��   z#� �(�($($� $+ z(h� �(h�� $+ z(^ �(3� $+ z(R �(R($($� (b z(|� �#^� "� z(�u �(G>� $+ z(qa �(,� "� z(?� �(,� $+ z(s �(,� "� z(>� �(,�   z(�� �(,�   z(2� �(,� (b z� �%� �BEH #� *JWestsahara 3NWestern Sahara ;RSáhara Occidental @QSahara Occidental HL西サハラ UOSaara Ocidental a]Западная Сахара mL西撒哈拉 �(,�   z(-Q �(,� !B z(�� �(,� (�� z(� �(,� $+ z('� �(,�   z(� �(,� $+ z( �(Q� "� z('I �&w� $+ z(Q �(��   z(!. �(� $+ z(8� �(�   z#� �#^($($�   z&w �#^($($� "� z(' � ��   z#� �&�� !B z(L� �(L�� !B z(,� �(L�� "� z#^ �%�� $+ z(Q �#^($($� (b z(( �(�   z(
= �(x($($�   z&� �(�� !B z(�� �(x�   z(*V �(x� $+ z( �(x($($� $+ z(� �(x($($� !B z!� �('�   z(� �(x� "� z(' �('($($� $+ z(� �('�   z$� �#^($($� $+ �(� $+ �(�� $+ z(Q �(�� $+ z(, �(�� (b z(( �(�� $+ z(� �(�� $+ z( �(�� !B z!� �(�� !B z(L �(�� !B z(Fg �(�� !B z(Zy �(�� !B z(WZ �(�� !B z(T� �(�� !B z(Y� �(�� !B z(N� �(�� !B z(U: �(�� !B z(ޚ �(�� !B z(ߚ �(�� !B z(ƅ �(�� !B z(K; �(�� !B z(JC �(�� �(�($�Uis_satellite_provider�   �(��   z(� �(��   z(( �(��   z(us �(��   z(]� �(��   z'| �(��   z(l� �(��   z(~ �(��   z(p� �(��   z%[ �(��   z"B �(��   z(` �(��   z(v� �(��   z(_ �(��   z(sp �(��   z(M� �(�� "� z(H �(�� "� z(IW �(�� "� z(K� �(�� "� z(N� �(�� "� z(+� �(�� "� z(E
 �(�� "� z(L �(�� "� z(C� �(�� "� z(I� �(�� "� z(W� �(�� "� z(>� �(�� "� z(Qs �(�� "� z(?Y �(�� "� z(Q� �(�� "� z(B� �(�� "� z(H� �(�� "� z(> �(�� "� z(C8 �(�� "� z(R� �(�� "� z(S� �(�� "� z(?� �(�� "� z(F� �(�� (� z(� �(�� (� z(� �(�� (� z(PR �(�� (� z(D� �(�� (� z(O� �(�� (� z(Z �(�� (� z(Z� �(�� (� z(@� �(�� (� z(U� �(�� (� z(H� �(�� (� z(�� �(�� (� z(�� �#^� (� z(U� �#^� "� z(L �#^� $+ z(R �(�� $+ z(
� �(�� $+ z(5� �(�� $+ z(\~ �(�� $+ z(z� �(�� $+ z(s �(�� $+ z(~ �(�� $+ z( �(�� (b z(tg �(�� (b z(�� �(�� (b z(�g �(�� (b z(el �(�� (b z(y �(�� (b z(\� �(�� (b z(� �(�� (b z(a� �(�� (b z(b� �(�� (b z(f� �(�� (b z(i= �(�� (b z(^� �(�� (b z({t �(�� (b z(t� �(�� (b z(m� �(�� (b z(_� �(�� (b z(Vi �(�� (b z(�� �(�� (b z(p �(�� (b z(v �(�� (b z(`� �(�� (b z(ry �(�� (b z(oz �(�� (b z(� �(�� (b z(d� �(�� (b z(� �(�� (b z(s �(�� (b z(| �(�� (b z(h �(�� (b z(g� �(�� (b z(x� �(�� (b z( �(�� (b z(y� �(�� (b z(w` �(�� (b z(� �(�� (b z(|� �(�� (b z(� �(�� (b z(� �(�� (b z(v� �(�� (b z(q �(�� (b z(m� �(�� (b z(} �(�� (b z(i� �(�� (b z(aW �(�� (b z(q� �(�� (b z(� �(��   z(� �(��   z(� �(��   z(1 �(��   z(	� �(��   z(-Q �(��   z(lm �(��   z(2� �(��   z( �(��   z(*V �(�� (b z(ry �#^� (b z(v �#^� (b z(v� �#^� (b z({t �#^� (b z(s �#^� (b z(�� �#^� $+ z$� �(�� $+ z(
� �(�� $+ z(� �(�� $+ z( ? �(�� $+ z($i �(�� $+ z(S �(�� $+ z(%� �(�� $+ z(^ �(�� $+ z($ �(�� $+ z('� �(�� $+ z(3 �(�� $+ z(8� �(�� $+ z(s� �(�� $+ z(� �(�� $+ z(&� �(�� $+ z(h �(�� $+ z(� �(�� $+ z((� �(�� $+ z(4� �(��   z(w� �(��   z(#V �(��   z(" �(��   z(� �(��   z(1� �(��   z(�� �(��   z(�� �(��   z(:* �(��   z(�; �(�� $+ z( �(�� $+ z("� �(�� $+ z(2� �(��   z(
= �(�� "� z(>� �#^�   z � �(��   z%[ �(��   z(� �(��   z(1 �(��   z(	� �(�� $+ z(R �(�� $+ z(� �(�� $+ z(� �(�� $+ z(^ �(�� (b z(� �(�� (b z(( �(��   z(*V �(�� $+ z$� �(�� "� z(' �(�� (� z(q �(��   z#� �(��   z&w �(�� !B z!� �(�� $+ �(��   z&w � ��   z%[ �#��   z(us �#��   z"B �#��   �#��   z(lm �#��   z(]� �#�� $+ z(� � ��   z%[ � ��   z(( � ��   z&� � �� $+ z(x �!��   z � �!�� $+ z(� �!��   z(-� � �� �#��   z(us � ��   z&� �(-�� (� z(q � ��   z(M� � ��   z(-� �(��   z(
= �(�� $+ z(2� �(�� $+ z(8� �(�� $+ z(h� �(
i� $+ z( �(�� $+ z( �(�� "� z#^ �#^(�,(�@� (b z(| �(�� (b z(�� �(�� $+ z(x �(:�� $+ �(�� $+ z(s �(�� $+ �(�� $+ z( �(��   z#� �(�� "� z('I �(�� $+ z(x �(�� $+ z(z �(�� "� z#^ �(��   z(
= �(�� �(x� $+ z(� �(�(�,(�@� $+ z($i �(�� $+ z(� �(^�   z#� �(^� $+ z$� �(z� $+ z(� �(z�   z(
= �(z� $+ z($i �(,� $+ z((� �(,� �(($(�z�   z(!. �(�   z(#V �(� �(,($(�z� $+ z($ �("��   z(lm �(lm(�,(�@� $+ z(� �(� $+ z(2� �(	��   z'| �(,� $+ z(� �(,� $+ z(\~ �(,�   z(]� �(,�   z(o �(,�   z(sp �(,�   z(~ �(,�   z(_ �(,�   z(` �(,� $+ z(s� �(,�   z%[ �(�� $+ z($ �(%� �(R� "� z(@> �#^� $+ z(S �$�� "� z(?� �(I�� "� z(� �(I�� (b z(� �#^� "� z(�L �#^� $+ z(4� �#^� "� z#^ �(sp� "� z#^ �(��� (b z(tg �(�� $+ z( �#^($($� "� z(F� �(?�� "� z(S� �(?�� "� z(Q� �(?�� "� z(� �(?�� "� z(R� �(?�� !B z(ƅ �#^� !B z(P� �#^� !B z(B, �#^� "� z(� �#^� "� z(X� �(X�� (b z(i� �#^� "� z(H� �#^� (b z(y �#^� "� z(AX �(I��   z%[ �#^($($� $+ z(qa �(�� $+ z(� �(��   z(| �#^� !B z(Zy �#^� (b z(^� �#^� (b z(y� �#^� (b z(}� �#^� (b z(m� �#^� (b z(| �#^� (b z(oz �#^� (b z(� �#^� (b z(i= �#^� (b z(`� �#^� (b z(� �#^� "� z(��� $+ z( �(,�� $+ z(, �(,��   z� �� �BIO #� *]Britisches Territorium im Indischen Ozean 3]British Indian Ocean Territory ;]Territorio Británico del Océano Índico @]Territoire britannique de l'océan Indien HX英領インド洋地域 U]Território Britânico do Oceano Índico a]/Британская территория в Индийском океане mU英属印度洋领地 �#^� !B z!� �#^($($� $+ �(,�   z(� �('� $+ z(z �(,�� (�� z(�g �#^� "� z(=� �(>� "� z(R� �(>� "� z(� �(>� "� z(Q� �(>� "� z(C8 �(>� (� z(� �('� "� z(C8 �(?�� "� z([o �([o�   z(!. �#^� (b z(h �#^�   z(-� �%[� "� z(?Y �(?�� $+ z(x �(�� "� z#^ �(AX� !B z(<� �('� $+ z(� �('�   z � �(��   z#� �(��   z&w �&��   z � �($� $+ z(� �(�($($� $+ z$� �(%�� $+ z(Q �(#V� $+ z(� �(#V� $+ z(, �(#V� $+ z(
� �(R� $+ z( �(8�� $+ z(� �(8��   z$� �(8�� $+ z(� �(�� $+ z( �(	�� $+ z(^ �(h� $+ z(� �$�� $+ z($i �#�� $+ z(Q �(3� $+ z(z �(3� $+ z($i �(3� (b z(w` �(� (b z(� �(�   z(� �("� $+ z(
� �("�   z(� �("� $+ z((� �("� $+ z( �("�   z(#V �("� $+ z(Q �("� $+ z$� �(s�� $+ z(z �(s�� $+ z(z �(s�($($�   z(� �(s�� (b z(nd �(s��   z(� �(s�� "� z('I �(s��   z(~ �(s�� $+ z(� �(s�� (� z(Z �(s�� $+ z(3 �(s�� $+ z(� �(s�� $+ z(Q �(s�� $+ z(
� �(s��   z(� �(s��   z(v� �(s�� "� z(B� �(s�� $+ z(� �(s�� (b z(( �(s�� $+ z(, �(s��   z(*V �(-Q� (b z(a� �$�� "� z#^ �(2�� $+ z( �$�($($�   z(*V �(1�   z&w �(��   z(� �(x� $+ z($i �(z� $+ z(%� �(z� (b z(v �(�� $+ z(� �(*V� $+ z$� �(:*� $+ z($i �&w� $+ z(
� �&w� $+ z( �&w($($� $+ z(
� �&w($($�   z(� �(��   z � �(3�   z(lm �(S� $+ z(z �(� $+ z(4� �(3�   z(	� �(^� $+ z$� �($i� �(Q($(�z� $+ z(� �('�   z(*V �(� $+ z(~ �$�� "� z(' �(�� $+ z(~ �(,� $+ z(R �(|� $+ z(� �(
=�   z(*V �(z�   z( �(z�   z&w �(�� $+ z(^ �($� $+ z( �($� $+ z(� �($�   z%� �(� (� z(PR �(3�   z(	� �(3� (�� z(�� �(z�   z(( �(	�� $+ z(R �(�� $+ z(�e �(
�� $+ z(
� �(�� $+ z( ? �(R�   z(
= �(R�   z(� �(R� $+ z('� �(R� (b z(\� �(R�   z(1� �(R�   z(-Q �(R� (b z(� �(R� (b z(�� �(R� (b z(g� �(R� (b z(h �(R�   z(� �(R�   z(� �(R� (b z(� �(R� (b z(d� �(R�   z(lm �(R�   z(#V �(R� (b z(nd �(R� $+ z(s� �(R� (b z(q� �(R�   z( �(R�   z(2� �(R� (b z(ry �(R� (b z(t� �(R�   z(*V �(R� (b z(y� �(R� (b z(|� �(R� (b z(~� �(R�   z(/� �(R� (b z(}� �(R� (b z(�� �(R� (b z(b� �(R� (b z(� �(R�   z(�� �(R� (b z(�g �(R� (b z(s �(R� (b z(| �(R�   z(�� �(R�   z(�� �(R� (b z(� �(R�   �(�� �(3� $+ z(� �(8�� $+ z( �(�� $+ z(� �(Q� $+ z( �(2�� $+ z( �(�� "� z(+� �(	�� (�� z(�� �(	�� $+ �(x� $+ z(z �('�� $+ z(3 �(�� $+ z((� �(��   z(� �(�� "� z(L �(,� $+ z(R �(3� $+ z$� �(�� (� z(E� �(E�� $+ z(� �(E�� $+ z(� �(5��   z(-� �(	��   z � �(
i� $+ z(� �(�(�,(�@� $+ z(� �(*V� (b z(� �(,� $+ z(3 �(�� $+ z(x �(��   z(1 �(w`� $+ z(� �(�� !B z(Fg �(� $+ z(, �(%� $+ z(� �(� (� z(� �(� $+ z(� �(� $+ z(
� �(�� $+ z(
i �(
i($($� $+ z(� �(^� $+ z(Q �(^� �('($(�z� $+ z(� �('� $+ z(Q �('� $+ z(
� �('� (b z(y �('� $+ z$� �('� (b z(} �('� $+ z(2� �('� $+ z( �('� $+ z($i �(%�� $+ z(R �&w� $+ z(3 �(z� $+ z(2� �(z�   z(� �(z� $+ z(� �(z� $+ z($ �(z� $+ z(8� �(z� $+ z(� �(z� $+ z(
� �(z� (b z(( �(z� $+ z(� �(z� $+ z(x �(�� !B z!� �(�� $+ z(
i �(�� (� z(q �(&�� $+ z(
� �(&��   z(� �(&�� (b z(w` �(� (b z(� �(� (b z(s �(�   z(*V �(��� $+ z(2� �(�� $+ �(� $+ z(� �(%�� $+ z$� �(x� $+ z(�� $+ z(R �(Q� $+ z(� �(�($($� $+ z(R �(N�($($� $+ z(s� �(&�� $+ �(��   z$� �(�� $+ z($ �(� $+ z(� �(^� $+ z(S �(^� $+ z((� �(^�   z(#V �(^� (b z(�� �(x� $+ z(h �$�� (� z(@� �(^�   z(�� �(#V� (� z(� �(�� $+ z(� �(� $+ z(S �(%�� (b z(i= �(�� (b z(el �(��   z(-� �(��   z(us �(�� (� z(� �(�� (b z(� �(��   z(
= �(
=(�,(�@� $+ z(� �(�($($� (� z(� �(� $+ z$� �!�� $+ z(, �!�� $+ z(^ �(
�� $+ z(&� �$��   z(*V �($i� (� z(� �$��   z(-� �(z� $+ z(qa �(3�   z(� �(�� $+ �(
�� $+ z(� �(S� (b z(( �(�� $+ z(� �(�� "� z(Qs �(�   z(~ �(� "� z(W� �(� $+ z(s �(�   z(sp �(� $+ z( �(�($($� $+ z(x �(
��   z$� �(|� "� z(' �(|�   z&w �(|� $+ z(� �(�� $+ z(� �(�� $+ z(R �(�� $+ z(
� �(�� $+ z$� �(��   z#� �(�� $+ z($ �(|�   z(
= �(|� "� z(� �(�   z(2� �(	��   z(us �(�   z(v� �(� (b z(:� �(�u�   z(1 �$��   z(	� �(	�(�,(�@� $+ �(	��   z � �(R� $+ z(S �(R� �(�($(�z�   z(�� �(x�   z(�� �(^� $+ z( ? �( ?($($� $+ z(� �( ?� $+ z(, �( ?� $+ z(z �( ?� $+ z(� �(Q� $+ z(� �$�($($� $+ z(� �&w� $+ z('� �(^� $+ z(x �((��   z#� �((��   z(#V �(!.�   z � �(Q� "� z(H �(� "� z(E
 �(� "� z(IW �(� "� z(N� �(�   z(
= �$�($($� "� z(I� �(3� "� z(B� �(3�   z(1 �(3� (b z(w` �(
=� (b z(w` �(^� (b z(w` �(�� (b z(w` �(@>� (b z(w` �#�� $+ z(� �(�� $+ z( �((�� (� z(� �(z� $+ z(%� �(S� �(x($(�z� $+ z(h �(S� $+ z($i �(S� !B z!� �(^�   z&w �(^� $+ z(� �(	�� $+ z(
� �(� $+ z(x �(&�� $+ z(� �(3� $+ z(% �(�� $+ z(� �(�($($�   z(-Q �(*V� $+ z(� �(3� $+ z(� �(3� $+ z(� �(3� $+ z$� �(S� (� z(@� �(� (� z(D� �(� "� z(H �(�   z(v� �(� (� z(PR �(� (� z(Z �(�   z(o �(�   z(]� �(� $+ z(qa �(x� "� z('I �(x� (� z(� �(x� (b z(\� �(^� $+ z(� �(^� "� z(' �(^� (b z(`� �(^� (b z(^� �(^� (b z(_� �(^� (b z(� �(^� (b z(a� �(^� (b z(y �(^� (b z(g� �(^� (b z(�� �(^� (b z(h �(^� (b z(i= �(^� (b z(i� �(^� (b z(k� �(^� (b z(f� �(^� (b z(j� �(^� (b z(e� �(^� (b z(m� �(^� (b z(m� �(^� $+ z( �(^� (b z(oz �(^� (b z(p �(^� (b z(t� �(^� (b z(v �(^� (b z(y� �(^� (b z(}� �(^� $+ z( �((�,(�@� $+ z( �(�� $+ �(
i� "� z('I �(��   z(1 �(� $+ z( �(($($�   z(" �(
=� $+ z(h �(,� $+ �(R� $+ z( �(1�� $+ z$� �(^� $+ z(z �(qa� $+ z(� �(qa� $+ z(� �(qa� $+ z( �(qa� $+ z(^ �(qa� "� z#^ �(qa�   z � �(R� $+ z(~ �(� "� z(N� �(R�   z(w� �(!.� $+ z(S �(L� $+ z(� �(~�   z&w �(��   z%� �($� "� z#^ �(3($($� (b z(� �(3�   z$� �(~� $+ z(R �(~� $+ z(x �(	�($($� $+ z(3 �(~� "� z(L �(3� $+ z(
� �($i� (b z(( �(x� (b z(� �(x� (b z(� �(x� (b z(�g �(x� (b z(e� �(x� (b z(� �(x� (b z(w` �(x� (b z(� �(x� (b z(t� �(x� (b z(s �(x� (b z(| �(x� $+ z(h �(x� $+ z(8� �(x� $+ z(2� �(x� $+ z(s� �(x� $+ z(&� �(x� $+ z(4� �(x� $+ z($ �(x�   z(#V �(x�   z(1 �(x�   z(-Q �(x�   z(lm �(x�   z( �(x�   z&� �(Q�   z%[ �(Q�   �(� $+ z(x �(%�� "� z(' �(%�� $+ z(� �(%�� $+ z(� �(%�� (b z(�g �(�� (b z(� �(�� (b z(nd �(�� (b z(�� �(�� (b z(q� �(�� (b z(v� �(�� (b z(b� �(�� (b z(q �(�� (b z(tg �(�� (b z(~� �(�� (b z(� �(�� (b z(e� �(�� (b z(^� �(�� (b z(`� �(�� (b z(|� �(�� $+ z( ? �(�� $+ z(� �(S� $+ z(� �(S� $+ z(Q �(S� (b z(( �(S�   z(� �(
i� $+ z(3 �(L�   z(#V �(�� $+ z((� �(�� $+ z(^ �(L� $+ z( �(L� $+ z$� �(L� $+ �(z�   z"B �(S� $+ z(
i �(~� $+ z(
i �(R� "� z(' �(($($�   z(� �(3� $+ z( �(3� $+ z(S �(3� (� z(PR �(�   z(#V �(��   z(� �$��   z&w �(3�   z$� �(!.� "� z#^ �(
��   z$� �(
�� $+ z($ �(^� !B z!� �(3� $+ z(� �#^(�,(�@� $+ z(S �($� (b z(� �(^� (b z(� �(^� (b z(| �(^� (b z(( �(^� $+ z(
� �(^� (b z(� �(^� $+ z(8� �$�� "� z#^ �((�($($� $+ z(� �((�� !B z!� �((��   z'| �((��   z$� �((��   z%� �((�� (� z(q �((�� $+ z( �((�� $+ z((� �(S� $+ z($ �(~�   z(" �(~� (b z(( �(~� $+ z( �("� $+ z(� �#�� $+ z(� �#�� $+ z$� �(
=� $+ z(
i �($� $+ z(� �(�� $+ z(� �(2��   z$� �(2�� $+ z(, �(2�� $+ z(� �(
�� !B z!� �(x�   z � �(x� $+ z(2� �(�� $+ z(� �(�� $+ z(R �(!.� $+ z(h �(� $+ z( �(^� $+ z(
� �(�� $+ z(x �$�($($� $+ z(� �(L� (� z(� �$�� (� z(� �(	�� $+ z(� �(1�� $+ z(Q �(��   z(
= �(� (� z(D� �(	�� $+ z(� �(�� $+ z(� �(($($� $+ z( �(S� $+ z(&� �(S� $+ z('� �(S� $+ z(2� �(S� $+ z(5� �(�� $+ z(^ �(Q� $+ z(^ �(
=� $+ z(� �(
�� $+ z( �(��   z#� �($�   z&� �($�   z%[ �($�   z � �(�� $+ z(R �(��   z%� �(R� (� z(� �(R� (b z(( �(R�   z( �((�,(�@�   z(1� �(,� (b z(� �$�� $+ z( ? �(��   z(� �(�� "� z('I �(�   z(	� �(� $+ z(
� �(
�($($�   z(
= �!�� "� z(' �!�� $+ z((� �((�($($� "� z(j\ �(� $+ z(5� �(� $+ z(� �(� "� z(N� �(� $+ z(Q �(�� $+ z(Q �(
�� $+ z($ �(3� $+ z(� �(Q� $+ z(� �(Q� $+ z( �(Q� $+ z("� �(Q�   z$� �(
=�   z$� �(x� $+ z(R �(�($($�   z(!. �$�� $+ z(, �(>� $+ z(&� �($�   z(-� �($� $+ z(2� �($� $+ z(h �($� $+ z(
i �(�� $+ z$� �(�� $+ z(� �(��   z#� �(R� "� z#^ �(#V� (� z(� �(3� $+ z(~ �(3� $+ z("� �(,� $+ z(
� �(Q� $+ z( �(Q�   z#� �(Q�   z(	� �(R� $+ z(z �((�� $+ z(^ �((�� $+ z(
i �((�� $+ z(\~ �(	�� $+ z(% �(Q� $+ z($i �(2�� $+ z(� �($i� $+ z(z �($i� $+ z(
� �($i�   z � �(�� $+ z(3 �(x� (� z(� �(�� $+ z$� �(
i� $+ z(~ �$�� $+ z(� �(h� $+ z(� �(h� $+ z(,� $+ z("� �($� (� z(Z� �($�   z(�� �$�� $+ �(�� $+ z( �(3� (b z(� �(�   z(" �(S� $+ z(� �(�($($� $+ z(� �(,�� $+ z(� �#�� $+ z(� �(x��   z(� �($�   z"B �($� $+ z(�e �(z�   z(:* �(��   z#� �(�� $+ z(� �#�� $+ z(^ �(&��   z(*V� $+ z($ �(�� $+ z(Q �(~� $+ z(�N �(2�� !B z!� �('�� $+ z(s �(	��   z(1 �(!.� $+ z($ �(R�   z(~ �$�� $+ z(� �%[� $+ z($ �("�   z(*V �(�� $+ z(� �($� (� z(� �(	�� $+ z$� �(
�� $+ z(, �(z�� $+ z( �(h� $+ z( �(!.� "� z(N� �(3� "� z#^ �(
�� $+ z(�N �(� $+ z$�� $+ z($i �($i($($�   z(]� �(�� $+ z(z �(R� (b z(( �(��   z(" �#�� $+ z(� �#�� !B z!� �(&�� (b z(w` �(,� $+ z(� �$��   z&w �($i� !B z(,� �(�� $+ z( �(L� (b z(e� �(� (b z(v� �(� $+ z(� �(~� $+ z(� �(~� $+ z(� �(R� $+ z(� �(&�� (� z(O� �$�� (b z(� �$�� $+ z(
� �((�� $+ z(Q �((�� (� z(D� �(,� "� z(j\ �(,� (b z(w` �(N��   z"B �(	�� (b z(( �$��   z(w� �('�� $+ z(� �('�� (b z(tg �('�� $+ z(&� �('�� $+ z(� �(Q� $+ z(x �(3($($� (b z(�� �(	�� (b z(k� �(,� $+ z(� �(x� $+ z(x �(($($� (b z(� �(� $+ z(� �(� "� z(N� �$�� $+ z(S �(	�� $+ z(� �(�� $+ z(, �(h� "� z#^ �(�($($� $+ z(
� �(��   z(
= �("�� $+ z('� �(2�� $+ z(x �(�� $+ z(
� �(�� $+ z$� �(�� $+ z(z �(L� $+ z(� �(L� $+ z(qa �(� "� z(Qs �(� �(�� $+ z( �(	�� $+ z(%� �(� (b z(� �(� $+ z(, �(q�   z(�� �(�� $+ z(%� �(�� (� z(q �(
��   z%[ �(2�� $+ z(� �(%�   z$� �(�� $+ z( �(�($($� $+ z($i �(x� $+ z( ? �(x� $+ z(%� �(x� $+ z( �(,�� $+ z(� �(,�� $+ z(� �($� $+ z(~ �(R� $+ z(Q �(��   z(
= �(^�   z(� �(^� $+ z(5� �(� $+ z(x �(�� (� z(� �(�� "� z#^ �(%� $+ z(� �(%�   z(#V �(%� $+ z(R �(%� $+ z(� �(%� $+ z(x �(%� $+ z(
� �(%� $+ z(S �(%� $+ z($i �(%� $+ z(Q �(%� $+ z(� �(%� $+ z(z �(%� $+ z(
� �(%� $+ z("� �(%� $+ z(%� �(%� $+ z( �(%�   z(
= �(%� $+ z$� �(%�   z(� �(%� $+ z( �(%� $+ z(3 �(Q� $+ z(qa �$�� "� z(+� �$��   z%� �$�� $+ z(%� �(%�($($� $+ z(z �(%�� $+ z( ? �(��   z(�� �(,� $+ z('� �(3� $+ z(2� �(3�   z(1� �(�� $+ z( �(	�($($�   z&w �(�� "� z(' �($i� $+ �(3� (b z(( �(3� $+ z(� �$�($($� $+ z(R �(��   z&w �(
�� $+ z($ �&w�   z(�; �(��   z(�� �(��� !B z!� �(
�� $+ z(x �(
=� (b z(:� �(G>� $+ z(
� �(>� $+ z(x �("�� $+ z(� �("�� "� z#^ �("�� (� z(q �("�� "� z(' �("��   z(!. �(	�� $+ z( �(>� $+ z(� �(%� (� z(q �(%� (� z(q �(%($($� $+ z(
i �(%� $+ z(3 �(%� $+ z(� �(%� $+ z((� �(%� $+ z(� �(%� $+ z(^ �(%� $+ z(^ �(%($($� $+ z(� �(%� $+ z( ? �(%� "� z('I �(%� (b z(tg �(� $+ z(s �(�   z( �(�   z(" �(� (� z(Z� �(� "� z(?Y �(�   z(~ �(� (b z(� �(*V� (b z(s �(^� $+ z(h �(^� (b z(nd �(^� (b z(tg �(^� (b z(�� �(^� $+ z(� �(^� (� z(PR �(^� (b z(|� �(^� (b z(� �(^� $+ z(� �(,($($� "� z(AX �(� "� z(C� �(� (� z(D� �(� "� z(' �(�� "� z(�� �#^�   z(-� �('� $+ z($i �('� "� z#^ �(��   z&w �(��   z#� �(�� $+ z(6� �#^� $+ z(s� �#^� (� z(� �&w� (b z(( �&w� (b z(� �&w�   z$� �(^� !B z!� �%��   z#� �%��   z%[ �%[($($� (b z(~� �(��� (b z(�� (b z(� �(w`� $+ z(x �(m�� (� z(� �(w`� (� z(PR �(w`� $+ z(\~ �(w`� $+ z(8� �(w`�   z � �(w`� (� z(� �(w`� "� z(+� �(w`� $+ z(~ �(w`� $+ z(h �(w`� "� z(H �(w`� (� z(D� �(w`� $+ z(5� �(w`�   z(]� �(w`� $+ z(qa �(w`� $+ z(s �(w`�   z(v� �(w`� $+ z(%� �(w`�   z(:* �(w`� (b z(�� �(w`� $+ z$� �(w`� $+ z(� �(w`� $+ z($i �(w`� $+ z(
� �(w`� (b z(ry �(w`� (b z(� �((� (b z(� �((�   z(	� �(nd�   z(� �((�   z"B �((�   z%� �((�   z&w �((� (b z(w` �(\�� (� z(q �(\�� (b z(( �((($($� (b z(s �(�� (b z(� �(�� (b z(� �(:�� (b z(( �(tg�   z � �((�   z%[ �((� (� z(q �((�   z'| �((�   z(( �(�g� $+ z(z �((�   z(*V �((� $+ z(%� �((� (b z(( �(Vi� (b z(( �(\�� (b z(h �(h� (b z(| �(�� (b z(( �(m�� (b z(i� �(w`� (b z(|� �(w`�   z%� �(e��   z#� �(e�� $+ z(, �(e��   z(� �(e�� $+ z($ �(e�� (� z(� �(w`�   z(lm �(w`� (b z(j� �(j�� (b z(ry �(�� (b z(e� �(�� (b z(el �((� (b z(( �(t�� (b z(d� �(d�� $+ z($ � �� !B z(�� �(��� !B z(U: �(U:� $+ z($i �(]��   z&� �%[�   z#� �"B� !B z(Zy �(Zy� $+ z(Q � ��   z%�� !B z(N� �!��   z"B �%[� !B z!� �(]��   z$� �(p��   z � �$��   z&� �(��   z#� �(-�� "� z#^ �"B�   z%[ �(-��   z(-� �(-�($($�   z(� �(�(�,(�@� !B z(,� � �� $+ z(, �(w�� !B z(ޚ �(ޚ�   z#� �((�   z(o �%[�   z&w �$�� !B z(M5 �(M5�   z(]� �"B�   z#� �(w��   z$� �(sp�   z#� �'|� !B z!� �'|� $+ z(R � �� $+ z(R �$��   z&w �((�   z$��   z(us �"B�   z#�� (� z(� �(�� $+ z(S� $+ z(~ �(�� $+ z(R �(-��   z � �((� !B z(G� �#�� !B z!� �((�   z&w �(,�� (b z(� �!�� (� z(q �!�� (� z(� �!��   z(-� �!��   z$� �(&�� $+ z(� �(w��   z(]� �(_�   z � �(]��   z"B � �� !B z(JC �(JC�   z&w �(�� "� z('I �(]��   z$� �(]��   �$��   z"B �(l�($($�   z%� � ��   z$� �(��   z(*V �(,��   z&w �(sp� "� z#^ �(v�� !B z!� �(N��   z � �(N��   z&w �(N��   z%[ �((�   z � �(ť� !B z!� �(ť�   z$� �(_� (b z(w` �(S� $+ z(
� �$��   z$� � ��   z(� �!��   z(
= �(]��   z$� �(-��   z&� �$�� !B z!� �(z�   z&w� $+ z(�   z(w� �%[�   z � �(w�� !B z(,� �(w��   z(#V �(�($($�   z%[ �('�   z&� �('� "� z(' �$��   z#� �#�($($�   z(#V �(w��   z(]� �(-�� $+ z(x �(]��   z(us �&w�   z(� �$��   z#� �(]��   z#� �(o�   z%� �(o�   z(-� �(w�� "� z#^ �%[� !B z(<� �(<��   z(-� �$��   z$� �'|� $+ z(� �(,��   z(1� �(,�� "� z#^ �(-��   z"B �(us�   z%� �(x� !B z(,� �(x�   z(-� �(x�   z%[ �(x�   z&� �(x�   z(� �(x�   z"B �!��   z$� �(us� �(,��   z#� �(Zy�   z � �(Zy�   z(� �(�($($�   z&��   z&� �((�   z$� �"B� "� z#^ �'|�   z%� �'|�   z(p� �"B�   z � �($i�   z(� �((�   z(]� �%[�   z(( � ��   z(-� �(]�� !B z(cH �!�� !B z(ť �(l�� !B z(G� �!��   z(]��   z(	� � ��   z'| � ��   z(-Q � �� (�� z(�� �#^�   z(p� �$��   z( �$�� !B z!� �(
i� !B z!� �(N�� $+ z( �(w�� !B z(T��   z(*V � ��   z( � ��   z$� �(
�� "� z(E
 �((� $+ z(3 �((�   z(w��   z'| �#��   z(]� �&w� $+ z(� �$��   z(v��   z(v� �%��   z(v� �('��   z(v� �(-��   z � �&�� $+ z(� �$�� (� z(O� �(]��   z(" �(]�� !B z(,�� $+ z(�� $+ z(z�   z(
=� $+ z(
��   z%� �(w�� (� z(� � ��   z(us�   z%[�   z(( �(]��   z(� �(�   z(w� �!�� $+ z(� �!��   z((�   z(o � ��   z(
= � ��   z(
= �$��   z(-� �(�� (�� z(�� �(R�   z(-� � ��   z(2� �$�� $+ z($ �$�� (b z(� �$�� (� z(Z� �$�� "� z#^ �#�($($�   z(*V �#�� (b z(� �#�� $+ z( ? �$�� $+ z(� �$��   z(" �$�� $+ z(, �"B� !B z(ߚ �(ߚ�   z(v� �(�� $+ z(5� �(,�� !B z(,� �(,�($($�   z(` �(w�� $+ z(� �(w��   z � �%[�   z(�� �(��   z(� � ��   z(v� �(w��   z(l� �(w��   z'| �(w�� $+ z( �'|�   z(-�� "� z(' �"B�   z(w� �&�� (� z(� �&�� $+ z(� �(]��   z(�� $+ z(� �$��   z(	� �#�� $+ z( �%[� $+ z(%� �(�� $+ z(R �#�� $+ z(� �#�� $+ z(� �(-��   z(w� �$��   z"B �$�� $+ z(^ �(�� (b z(a� �#��   z#� �(,��   z$� �(Q� $+ z(� �!�� "� z('I �$��   z(1� �$��   z%� �$��   z(-� �&w($($�   z(� �#^� "� z(=� �#^� $+ z(�e �#^� "� z(�2 �#^� (b z(a� �#^� !B z(cH �#^� (b z(x� �#^� (b z(�� �#^� (b z(g� �#^� !B z(Fg �#^� (� z(E� �#^� $+ z(h� �#^� $+ z(% �#^� "� z(j\ �#^� (b z(f� �#^� (�� z(� �#^� (�� z(�
 �#^� !B z(JC �#^� (b z(d� �#^� (b z(m� �#^� !B z(L �#^� !B z(M5 �#^� !B z(L� �#^� !B z(�� �#^� !B z(ޚ �#^� (b z(:� �#^� !B z(U: �#^� (b z(� �#^� (b z(zK �#^� (b z(�� �#^�   z(/� �#^� (b z(b� �#^� (�� z(� �#^�   z(�; �#^� !B z(V� �#^� !B z(ť �#^�   z(�� �#^� !B z(�C �#^� (b z(� �#^� !B z(,� �(�� (b z(� �('� (b z(tg �('� $+ z(^ �('� "� z(=� �(=��   z&w �(=�� "� z(W� �('� "� z(?Y �('� "� z(C� �('� "� z('I �('� (b z(( �('� $+ z( �#^($($� "� z(� �(C8� "� z(� �(G>� "� z(> �(=�� (b z(t� �(ry� $+ z(x �(ry� (b z(x� �(ry� (b z(m� �((� $+ z(� � �� $+ z(, � �� (b z(� � ��   z � � ��   z(	� � ��   z �� "� z(?� �('� "� z#^ �('($($� (� z(q �('($($� $+ z(, �('($($� $+ z(R �(� $+ z(x �(�u� $+ z(� �(�� $+ z('� �(H�   z%[ �(8��   z#� �(8��   z&� �(8��   z&w �(8��   z � �(8��   z%[ �(!.� $+ z(� �($� $+ z(
� �$�($($� $+ z(� �(\~�   z � �(^�   z(#V �&w� $+ z(%� �&w� $+ z(� �(2�� $+ z( �(2�� (b z(( �(2�� $+ z("� �(2��   z � �(�� $+ z(s �$�� $+ z('� �$�� $+ z( ? �$��   z(sp �$�� $+ z(&� �$�� (� z(� �$��   z(1� �$�� (� z(@� �$��   z(�; �(	�� $+ z(� �('�� "� z(' �(!.� $+ z(� �(!.�   z#� �(�� $+ z( �($i� $+ z( ? �(3� !B z(,� �(� (b z(w` �$��   z(( �(�� $+ z(%� �(�($($� � ��   z(� � �� !B z(<� � �� "� z#^ �(L�   �(�� "� z(' �(w��   �(-��   z(_ �(-�� (b z(� �(w�� $+ z(� �(w�� !B z(B, �(B,� "� z#^ �(N��   z"B �(]�� !B z!� �&�� (� z(q �%��   z&� �&�($($�   z(2� �%�� (b z(( �%��   z&w �%�� !B z(G� �$��   z$� �(��   z#� �(sp�   z(v� �(sp�   z � �(o� $+ z( �%�� $+ z( �(R� $+ z(� �&w�   z(� �&w� (b z(�� �(,� (b z(ry �(,� (b z(� �(,� $+ z(� �(�($($� (b z(zK �(\�� "� z('I �(N�� (� z(� �(N�� $+ z(x �(IW� (� z(q �(IW�   z � �(IW� "� z(� �(�� "� z(E
 �(+�� "� z(K� �(+�� "� z(' �(
��   z � �(
��   z#� �(
�� "� z#^ �(Qs� $+ z(� �(Qs� $+ z( �(Qs� !B z!� �(Qs� $+ z(~ �(��   z(*V �(,� $+ z(x �(Qs� (� z(� �(Qs�   z(v� �(,�   z(:* �!�� (� z(q �(�� $+ z(
� �(�� $+ z(� �(�� "� z(' �(�� $+ z($i �(IW� "� z(' �(IW� "� z(+� �(+�($($� (� z(q �(O�� "� z(C� �(�� "� z(W� �(�� (� z(q �(�� "� z(N� �(�� (� z(�� �(�� "� z(+� �(�� "� z(IW �(�� (� z(D� �(�� "� z(H �(�� (� z(H� �(H�� "� z(H �(K�� (� z(q �(L� (� z(PR �(L� (� z(� �(L� (� z(Z� �(L� (� z(D� �(L� (� z(q �(N�� (� z(� �(L�   z(	� �('�   z(v� �('�   z'| �('�   z(us �('�   z(2� �('�   z"B �('�   z(~ �('� (� z(� �('� "� z('I �(H� (� z(q �(Z�� $+ z(� �(R�   z(� �(R� $+ z("� �(R� $+ z((� �(R� $+ z(2� �(R� "� z#^ �(�2� "� z('I �(�� "� z(N� �(�� (� z(PR �(�� "� z(' �(U�� "� z#^ �(U�� (� z(@� �(PR� "� z('I� "� z(@> �(�� (b z(( �(IW� $+ z(, �(IW� $+ z(� �(IW� "� z(>� �(>�� "� z#^ �(`� $+ z(� �(`� $+ z(� �('�� $+ z(R �('��   z � �('�� $+ z(Q �('��   z&w �('($($� !B z!� �('($($� !B z(,� �('� "� z('I �(z�   �(�� $+ z(^ �(��   z"B �(x� $+ z(S �(S($($�   z(
= �#^($($�   z(�; �(,� (b z(}� �(,� "� z(� �(,� (b z(nd �(,� $+ z( �(	�� "� z(H �(�� (� z(q �(��   z%� �(��   z$� �(��   z"B �(��   �(x�   z)[ �('� "� z(�2 �(�2� $+ z(� �#^($($� (� z(q �(+�� (� z(� �(+�� "� z#^ �(��   z%� �(��   z$� �(��   z(*V �(�� $+ z(x �(�($($� $+ z(R �(��   �(,�   z%[ �(�� $+ �('�   z"B �(��   z(� �(�� (� z(� �(�� $+ z(
i �(�� (b z(( �$�� (� z(q �(
�� $+ z(Q �(�� $+ z(h �(�� $+ z(\~ �(�� "� z(+� �(� (� z(� �(�   z(w� �(�   z%[ �(� (� z(� �(� $+ z(
� �(� (b z(w` �(� $+ z(� �(($($� (� z(� �(� $+ z(h �(� "� z#^ �$�($($�   �(R� (�� z(�� �!�� (�� z(�
 �!�� (b z(� �(	�� $+ z(� �(R� !B z(,� �(R� $+ z(z �(^� $+ z( ? �(qa� $+ z(� �(qa� �(�� "� z(H� �(H�� (� z(� �(x� (� z(O� �(�� (� z(PR �(�� (� z(Z �(�� $+ z(� �(>� (�� z(�� �(x�   z"B � �� $+ z( �$�� $+ z(
i� $+ z(3 �('� $+ z( �(�� $+ z($ �(��   z(� �(��   z(*V �(��   z(1 �(�� $+ z(&� �(&�($($� "� z(B� �(B�� $+ z(� �(R� $+ z(3 �(R� $+ z(� �(R� "� z(' �(R� $+ z(h �(R� $+ z($i �(R� $+ z(%� �(R� $+ z(8� �(R� $+ z(&� �(R�   z(" �(R� (b z(e� �(R� $+ z(6� �(R� (b z(} �(R� $+ z( �((� !B z!� �((� "� z(C� �((� "� z#^ �((($($� (� z(� �((� "� z('I �((� (�� z(�� (b z(��� (b z(� $+ z(
� �({t� (b z({t �({t�   z � �((� (b z(`� �(�� (b z(p �(�� (b z(v� �(�� (b z(f� �(k�� $+ z(x �(b��   z(w� �(�� !B z(N� �(�� "� z(AX �(�� (� z(Z� �(�� (� z(D� �(��   z(us �(�� (� z(PR �(��   z(lm �(�� $+ z( �(��   z(� �(�� $+ z(%� �(�� $+ z((� �(�� (� z(� �(��   z(-Q �(��   z(v� �(��   z(� �(�� (b z(`� �(w`� (�� z(� �(oz� (� z(q �(ry� (b z(�� �(tg� "� z(H �(�� "� z(C� �(�� "� z(+� �(��   z'| �(�� (� z(� �(�� "� z(E
 �(��   z(� �(��   z(2� �(�� "� z(Qs �(��   z(l� �(�� $+ z( �(�� $+ z(� �((�   z"B� !B z(N��   z(( �(`�   z(� �(��   z(!. �(�� (� z(� �(�� !B z(G� �(�� !B z(Fg �(�� !B z(Zy �(�� (b z(}� � �� (b z( � �� (� z(�� �(�� !B z(ť �(�� $+ z( ? �(�� "� z(�L �(�� (� z(PR �('�   z(� �$�� (� z(@� �(�� "� z(I� �(� $+ z(
i �(
�� (� z(� �&w�   z#� �(%�� $+ z(
� �(%�� $+ z(� �(%�� $+ z(R �(%�� !B z!� �(%�� !B z(,� �(%�� (b z(( �(%��   z � �(ry� "� z(+� �(N��   z(� �((�   z&� �((� $+ z$� �((� (b z(Vi�   z(	�� $+ z('�� $+ z(�� $+ z(8�� $+ z(�� $+ z(3� $+ z(R� $+ z(�� $+ z($i� $+ z(�� $+ z(x� $+ z(�� $+ z(�� $+ z(h�   z(�� $+ z(^� $+ z(� $+ z(%�� $+ z(�� $+ z(s�� $+ z(4�� (� z(PR� $+ z(Q� $+ z(2�� $+ z("�� $+ z($� $+ z(^� (� z(Z� (� z(Z�� "� z(I�� "� z(C��   z(~�   z(��   z(sp�   z(l��   z(#V�   z'|�   z(��   z(!.� $+ z(
� �!�� $+ z(
i �!�� (b z(zK �(v� (b z(t� �(v� (b z(_� �(v� (b z(( �(v� $+ z(� �(IW� $+ z(� �(IW� "� z(W� �(H�� $+ z($ �((�   z(( �((� $+ z((� �((�   z(	� �((� $+ z(� �((� (� z(� �((�   z(l� �((� $+ z(� �((� $+ z( ? �((� "� z(' �(,�� "� z(S� �(>� "� z(X� �(?�� "� z(F� �(>� "� z#^ �(=�� "� z(J� �(>� $+ z(
i �(L� "� z(Qs �(�� (� z(q �(�� "� z#^ �(�� $+ z(^ �(IW� $+ z$� �(IW�   z(( �(IW� (� z(O� �(q� $+ �(B�� (b z(y �(el� "� z(H �(��   z(-� �(IW� "� z(G> �(��� (� z(� �(D�� $+ z(� �(IW� $+ z(qa �$�� $+ z(
� �($�   z � �#^($($� "� z(X� �(I�� $+ z(Q �(]��   z(-� �%��   z(� �%��   z(� �%�� (b z(� �%��   z(M� �(M�� "� z(X� �!��   z%[ �(w�� $+ z( �(x�   z&w �(!.� $+ z((� �(!.�   z( �(�� "� z(j\ �(� !B z(G� �(� "� z(L �(	��   z(� �(�� $+ z(� �(�� (� z(� �(�� $+ z((� �(	�� (b z(( �(� $+ z(
i �(�� $+ z(� �(�� (b z(�� �(� $+ z(s� �(� $+ z(^ �(��   z � �(�� "� z(' �(Q�   z(( �(x� $+ z(S �!��   z(�� �!�� "� z('I �(D��   z$� �(IW� (�� z(�� �(�� $+ z(^ �(�� $+ z(&� �(Q� $+ z((� �(Q� (� z(Z� �$�� (� z(� �$�� (b z(�� �$��   z(!. �(/�� (� z(Z �(,�   z(us �$�� $+ z(h �$�� (b z(� �$�� !B z(�� �(�� $+ z($ �(�($($� $+ z(� �(^� $+ z(^ �#^($($� (� z(PR � ��   z(w� � �� "� z#^ � �($($� $+ z(Q �$�($($�   z%� �(Q� $+ z(z �(Q� $+ z((� �(%��   z(o �(!.�   z(
= �(2�� $+ z(h �(2�� $+ z(qa �($i�   z(( �($i�   z(� �($i� $+ z(% �($i� $+ z(�� �($i� "� z('I �(L� (� z(� �(L� "� z(K� �(L� "� z(E
 �(��   z#� �(	�� "� z(N� �(	�� "� z(C� �(	�� $+ z(� �(q� (b z(( �(q� (� z(� �(q� $+ z(x �(q� $+ z( �(q� "� z('I �(q� $+ z(z �(q� $+ z(� �(q� (� z(� �(q� (� z(Z� �(>�� "� z(+� �(�� (� z(D� �(�� "� z(E
 �(�� "� z(IW �(�� "� z(K� �(�� "� z(C� �(�� "� z(+� �(�� $+ z(� �(Z�� "� z(C� �(IW� "� z(H �(IW� (� z(� �(IW� $+ z(� �(�� (� z(PR �(	�� $+ z(qa �(	�� "� z(�u �(	�� (b z(ry �(	�� !B z(L �(	�� "� z(K� �(	�� !B z(JC �&w� $+ �!��   z(� �!��   z(sp �&w�   z(� �(-�� !B z(�� �&w� (b z(nd �(�� $+ z(z �(,($($�   z$� �(%�� $+ z(2� �(%�� $+ z(�� �(6�� $+ z(�� �(�� $+ z( �(� (b z(�g �(�   z(	� �(
=�   z( �(
=�   z(*V �(
=�   z(lm �(
=� (� z(q �(��   z$� �(�� $+ z( �(
=� $+ z(^ �(�� $+ z(z �(L($($� $+ z(� �((��   z(-Q �(-Q(�,(�@� $+ z(z �(!.� $+ z(8� �(3� $+ z(, �(
�� $+ z(� �$�($($� $+ z(� �($i�   z(" �(3� (� z(D� �('� "� z(H �('� "� z(Qs �('� $+ z(� �(�� !B z!� �("��   z � �("��   z%� �("��   z%[ �("�� (b z(� �(�($($� $+ z(, �(qa� "� z(?Y �(x� "� z(� �(x� (� z(PR �(x�   z(w� �(x� "� z(N� �(x�   z(!. �(
i� "� z([o �(x� (� z(� �(^� $+ z(8� �(�� $+ z(� �(N�� $+ z(� �(N�� $+ z(qa �(Q� $+ z(&� �(2�� $+ z(2� �(lm�   z(� �(1��   z(�; �(�� $+ z(qa �(��   z(	� �(�� $+ z(^ �(*V� $+ z(~ �(� $+ z(3 �#^($($� $+ z(� �(4�� $+ z(^ �(�� $+ �(��   �(�� $+ z(
� �(h� $+ z(� �(h� $+ z(� �(qa� $+ z(z �(�� "� z(N� �(��   z(	� �(*V�   z(
= �(1� $+ z( �( ?� $+ z( �( ?($($� (b z(v� �( ?�   z(1 �(��   z( �(��   z(	� �(��   z(� �(Q� $+ z( �(�� "� z('I �(�� $+ z(s �(x� $+ z(� �(�($($� $+ z(~ �(~($($� $+ z(
� �(|� $+ z( �(|� (b z(( �(��   z&� �(�� "� z(' �(h�   z"B �(&�� $+ z(� �(S�   z(-� �(�� (� z(O� �(� $+ z( �(�($($�   z(� �(!.� !B z!� �(!.�   z(M� �(L� "� z(' �(L�   z � �(L� $+ z(, �(L($($� (� z(q �(h� $+ z(x �(h� $+ z((� �(�� (b z(( �(�� $+ z$� �(qa� (b z(tg �(,� $+ z$� �(N�� $+ z(x �(N�� $+ z$� �(�� $+ z(� �(\��   z"B �(s�� "� z(+� �(s�� $+ z( �(s�� "� z(I� �(s�� $+ z(^ �(� (� z(Z �$�� $+ z( �$�� $+ z(� �($� $+ z(� �($($($� $+ z(� �(�� $+ z( �(6�� $+ z(� �(6�� (� z(q �($i�   z#� �(�� $+ z(%� �(~� $+ z(� �(�� $+ z(z �(��   z(-� �(��   z%[ �(��   z(w� �(�� "� z#^ �(�($($� $+ z(� �(z��   z(	� �(lm� $+ z(
i �(S�   z&w �(�� $+ z(� �(($($�   z(� �(��   z(� �$�� (b z(� �(lm� $+ z(S �(&�� $+ z( �(*V�   z(� �(�($($� $+ z(~ �(�� (�� z(�� � �� (�� z(�g �(
��   z%[ �(
=� $+ z($i �(�� $+ z($i �#^($($� $+ z($i �(
i� (� z(q �(
i� (b z(( �(
i�   z � �(
i�   z#� �(
i�   z%� �(
i�   z(( �(
i�   z(	� �(
i� $+ z(� �(($($�   z(!. �(R� $+ z(
i �(
=� $+ z(x �(,�� $+ z(� �(,�� $+ z(S �(��   z(� �#��   z%� �(�� $+ z(� �(��   z(!. �(3� "� z#^ �(($($� $+ z( �(��   z(#V �(� $+ �(� "� z(C� �(�� $+ z(
� �#^($($�   z(l� �(�   z&w �(($($� $+ z(3 �(
=� (b z(ry �(!.� $+ z(%� �(h� $+ z(� �(lm� "� z#^ �(4�� $+ z$� �(2�� $+ z(2� �(�� $+ z(� �(��� $+ z(Q �(/��   z(o �(
�� (b z(� �(Q� $+ z(Q �(�� "� z(E
 �(��   z(*V �(	�� $+ z(z �(($($� $+ z(8� �(,�   z$� �(h� "� z(N� �(,� $+ z(� �(� $+ z(z �(�($($� $+ z(, �( ?($($� $+ z(� �(3� $+ z(^ �$�($($� $+ z(2� �(� $+ z("� �(�� $+ z(
� �#��   z(� �(�   z(sp �(� (� z(D� �(N��   z(*V �(IW� (� z(� �(�L�   z#� �(q� $+ z(^ �(q� (� z(q �('I� (� z(� �('I� (� z(Z �('I� (� z(� �('I� (� z(PR �('I� "� z(N� �('I� "� z(+� �('I� "� z(H �('I�   z%[ �(&�� $+ z(� �(	��   z � �(� $+ z(� �(qa� (b z(y �(,�   z(� �(� $+ z(� �("�� (b z(( �(�� $+ z(
i �(
i(�,(�@�   z(( �(�   z(� �(� (b z(tg �(h� (b z(w` �(	��   z'| �(� "� z#^ �(/��   z(l� �(�   z(us �(� "� z(C� �(� $+ z(\~ �(� $+ z(&� �(~�   z(:* �(#V�   z(v� �!�� "� z('I �('I($($� $+ z(, �(�L� "� z(� �(�L� "� z(IW �(H� (� z(PR �(D�� (� z(� �(H� "� z('I �(PR� "� z(K� �(E
� "� z('I �(�� "� z(H �(�� "� z(C� �(�� "� z(E
 �(�� "� z(+� �(�� "� z(K� �(�� "� z#^ �(H�� (� z(q �(W�� "� z#^ �(W�� "� z(L �(W�� !B z!� �(W�� "� z('I �(W�� (� z(� �(W�� $+ z(, �(W�� (� z(H� �(W�� �(+�� "� z(W� �(��   z#� �(��   z&w �(�� "� z(G> �(�� (� z(� �(@�� "� z('I �(�($($� "� z(�L �(>�� "� z(C� �('I� "� z(K� �(H� "� z#^ �(Z� (� z(Z �(N�� "� z(H �(N�� (� z(PR �(�($($� $+ z(� �(�L�   z(	� �(�L� $+ z(x �(�L� $+ z(� �(�L� $+ z( �(�L� "� z(�� �(�2� "� z(Q� �(�2� "� z(� �(�2� "� z(�L �(�2� $+ z(, �(�2� "� z(IW �(D�� "� z(N� �(D��   z#� �(IW� "� z(' �(�� "� z#^ �(�� $+ z(� �(�� $+ z( �(N�� $+ z(� �(N�($($� (� z(Z� �(�� "� z(L �(�� "� z(AX �(�� "� z(�L �(�� (b z(� �(	�� "� z#^ �(	�($($� (b z(( �(	��   z%[ �(IW�   z � �(q� $+ z(� �(q�   z&w �(q� !B z!� �(q� (� z(q �(q($($� $+ z(� �(
�� $+ z(� �(z� $+ z( ? �(z� $+ z(&� �(z�   z(| �(��   z(~ �((�   z(]� �((� "� z(H �((�   z(w� �((� "� z(+� �((� "� z(IW �((�   z(sp �((�   �(z� "� z#^ �(�u� $+ z(% �(�   z$� �&�� $+ z(~ �&�� "� z#^ �(C8� (b z(� �(~�   z � �(� $+ �(�� $+ z(, �(�� $+ z(� �(� $+ z(6� �(� (b z(t� �(�� (b z(y� �(�� (b z(�� �(�� (b z(� �(��   z&w �(
i� "� z#^ �(,($($� "� z#^ �(�� $+ z(R �(
=�   z$� �(
i� "� z#^ �(6��   z(!. �(S�   z(1 �(� $+ z(� �&�� $+ z( �(^�   �(
i� $+ z(
� �(�   z(� �(|� (b z(� �(��� �(���   z$� �(�� "� z(' �(qa� $+ z(, �($($($� $+ z(, �(^�   z(!. �(��   z(� �(��   z(| �(��   �(�� $+ z(s �#�� $+ z(4� �($� $+ �(5�� $+ z($ �(x($($� $+ z(� �(�(�,(�@� (b z(\� �(��   �(��   z(
= �("� (b z(b� �(x� (b z(f� �(x� $+ z$� �(��� $+ z(� �(�($($�   z&w �(�($($� (� z(O� �(,� $+ z(, �(�($($�   z(/� �(	��   z(� �(� $+ z($ �(�� $+ z(\~ �(R� "� z(> �(R� "� z(=� �(R�   z(� �(R� !B z(<� �(R� "� z(>� �(R� $+ z(�e �(R� "� z(?� �(R�   z(]� �(R� (b z(`� �(R� (b z( �(R� (b z(^� �(R� "� z(�� �(R� "� z(@> �(R�   z(` �(R� "� z(�2 �(R� "� z(?Y �(R�   z(_ �(R� (�� z(�g �(R� (b z(_� �(R� "� z(L �(R�   z(c� �(R� (b z(el �(R� (b z(a� �(R� (b z(y �(R� !B z(B, �(R� (� z(� �(R� (� z(� �(R� "� z(+� �(R� "� z(B� �(R� (b z(aW �(R� "� z(�L �(R� !B z(cH �(R� (b z(x� �(R� "� z(C8 �(R� "� z(C� �(R� (� z(D� �(R� (b z(�� �(R� !B z(Fg �(R� (� z(E� �(R� !B z(ƅ �(R� $+ z(h� �(R� (b z(i= �(R� "� z(F� �(R� $+ z(�� �(R� (b z(� �(R� $+ z(% �(R� "� z(j\ �(R� (b z(i� �(R� (b z(k� �(R� "� z(G> �(R� (b z(f� �(R� (�� z(� �(R� "� z(H �(R� !B z(G� �(R� (� z(H� �(R� "� z(IW �(R� "� z(H� �(R�   z(-� �(R� $+ z(� �(R�   z)[ �(R� "� z(I� �(R�   z(:* �(R�   z'| �(R� !B z(JC �(R� "� z(Q� �(R�   z(M� �(R� "� z(AX �(R�   z(l� �(R�   z(1 �(R� "� z(R� �(R�   z(~ �(R� (b z(m� �(R� (b z(m� �(R� (b z(tg �(R� $+ z(s �(R� "� z(� �(R� (b z(oz �(R� !B z(ߚ �(R� $+ z(4� �(R� (b z(q �(R�   z(us �(R�   z(sp �(R�   z(o �(R� !B z(�� �(R� "� z(�u �(R� "� z(J� �(R� $+ z(qa �(R�   z(p� �(R� (b z(p �(R� (b z(v �(R� !B z(L �(R� (b z(v� �(R� !B z(M5 �(R� (b z(w` �(R� "� z(K� �(R�   z(v� �(R� !B z(K; �(R� !B z(L� �(R� (� z(PR �(R� !B z(�� �(R� !B z(N� �(R�   z(( �(R� "� z([o �(R� !B z(P� �(R� "� z(Qs �(R�   z(| �(R� !B z(ޚ �(R� (� z(O� �(R� (b z(:� �(R� !B z(U: �(R� (b z(� �(R� (b z(zK �(R� $+ z( �(R� $+ z(z� �(R� (� z(U� �(R� (b z({t �(R� "� z(E
 �(R� (b z(Vi �(R� "� z(X� �(R� (�� z(� �(R�   z"B �(R� !B z(V� �(R� !B z(ť �(R� !B z(WZ �(R� "� z(W� �(R� !B z(Y� �(R�   z&� �(R� !B z(�� �(R� (� z(Z �(R� $+ z( �(R� "� z(S� �(R� "� z(� �(R� "� z(�� �(R�   z(� �(R� !B z(Zy �(R� !B z(�C �(R� !B z(T� �(R� (b z(� �(R� (b z(� �(R� (b z(�� �(R� $+ z(^ �(�� "� z(' �(N�� $+ z(� �(N�� $+ z$� �(
�� "� z(Qs �(
�� $+ z(R �(
�� $+ z( �(
�� $+ z(� �(
�� $+ z(� �(�� $+ z(
� �(��   z(� �(�� $+ z( �(��   z"B �(�� !B z(,� �(�� $+ z(3 �(�� !B z!� �(�� (� z(q �(��   z(� �(��   z(� �(x� (b z(( � ��   z&w �(5�� $+ z(� �(~� $+ z($i �(Zy�   z(sp �(!.�   z(� �($� $+ z(� �((�� $+ z(R �((�� $+ z(� �(($($� $+ z(s �(N��   z(l� �(,� (� z(@� �(,� $+ z(� �(!.�   z(*V �(�� $+ �(^� $+ z(4� �(z� $+ z(� �($� $+ z(^ �(lm� (b z(�� �#�� $+ z(^ �#�� $+ z(� �(&�� $+ z(s� �(�� (� z(Z� �#�� $+ z(
i �(�� $+ z(% �$�� $+ z(� �("��   z � �(3�   z(M� �(3� $+ z$� �(Q� $+ z(4� �('�� $+ z(Q �(^�   z(�� �('� $+ z(4� �('�   z(-Q �('� $+ z(6� �(��� $+ z(
� �(3� (b z(ry �((� �(ry($(�z� (b z(m� �((� (b z(Vi �((� (b z(v �((� (b z(a�� (b z(�� (b z(w` �(�� $+ z( �(�� $+ z("� �(�� $+ z( �(�� $+ z('� �(�� (b z(�� �(�� (b z(\� �(�� "� z(> �(�� "� z(?Y �(�� "� z(?� �(�� "� z(L �(�� (b z(^� �(��   z(_ �(�� (� z(@� �(�� (b z(_� �(��   z(` �(�� (b z( �(�� (b z(� �(�� (b z(aW �(�� (b z(a� �(�� (b z(b� �(�� (b z(d� �(�� "� z(B� �(�� (b z(el �(�� (b z(x� �(�� "� z(C8 �(�� !B z(ť �(�� (b z(f� �(�� (b z(g� �(�� (b z(Vi �(�� (b z(h �(�� (b z(i= �(�� (b z(i� �(�� (b z(� �(�� "� z(F� �(�� (b z(k� �(�� (b z(j� �(�� (� z(H� �(�� "� z(H� �(�� "� z(IW �(�� (b z(e� �(�� "� z(I� �(�� !B z(JC �(��   z(M� �(��   z(1 �(�� (b z(m� �(�� (b z(m� �(�� (b z(nd �(�� $+ z(5� �(�� (b z(oz �(��   z(p� �(�� (b z(q �(�� !B z(ߚ �(�� (b z(q� �(�� (b z(ry �(�� !B z(ƅ �(��   z(sp �(�� (b z(t� �(�� (b z(v �(�� !B z(K; �(�� "� z(K� �(�� $+ z(4� �(�� !B z(ޚ �(��   z(| �(�� "� z(N� �(�� (� z(O� �(�� (b z(y �(�� (b z(y� �(�� "� z(Q� �(�� "� z(R� �(�� "� z(S� �(�� !B z(T� �(�� $+ z(z� �(�� (b z({t �(�� (b z(|� �(�� (b z(} �(�� $+ z(&� �(�� !B z(U: �(�� (b z(}� �(�� (b z(�� �(��   z(~ �(�� (b z(~� �(�� (� z(U� �(��   z(/� �(�� (b z(� �(�� !B z(WZ �(�� "� z(W� �(�� !B z(Y� �(�� (b z(| �(�� (� z(Z �(��   z(�� �(�� (b z(� �(�� (b z(�� �(�� (b z(g� �(y� "� z(L� "� z(Q�� "� z#^ �(tg� (b z(g� �(h� (b z(h �(h($($� (b z(g� �(g�� �(�($(�z� (b z(tg �(�� (b z(� �(�(�,(�@� (b z( �(�g� (b z(a� �(�g� (b z(el �(e�� (b z(| �(e�� (� z(q �(�g� (b z(( �(w`� (b z(}� (b z(_�� "� z([o �('� $+ z(z �(Q�� $+ z(z �(Q�($($� $+ z(R �($i� $+ z( �((� (b z(� �#^($($� "� z(J� �(J�� "� z(' �(Qs� "� z(?Y �(R�� "� z(?� �(R��   �(�� "� z(G> �(�� "� z(' �(I�� "� z(F� �(C8� "� z(S� �(C8� "� z(� �(X�� �#^($(�z� "� z(S� �(R�� "� z(F� �(R�� (� z(q �(Z� $+ z(, �(�� "� z(' �(�� !B z!� �(IW�   z"B �(IW� "� z(Qs �(�� (� z(� �(�($($� (� z(@� �(�� "� z(E
 �(H� "� z(+� �(H� (� z(Z �(�� "� z(� �(�� "� z(I� �(�� "� z(IW �(E
� (� z(� �(Z� (� z(H� �(�� �(q� (� z(D� �(+�� (� z(@� �(�� (� z(PR �(�� "� z(N� �(�� (� z(PR �(N�� !B z(Fg �(L� !B z(Y� �(Y�� !B z(<� �(T�� !B z(T� �&w� !B z(N� � ��   z)[ �)[�   �(,�� $+ z( �(-��   z"B �"B($($�   z � �(z�   z"B �(z�   z%[ �(z�   z&� �(z�   z(2� �&w�   z#� �#�(�,(�@�   z$� �%[�   z(� �#��   �!�� !B z!� �(L� !B z(ƅ �&w�   z(| �!��   z"B �'|�   z(` �#�� "� z(H �((� "� z(' �((�   z(p� �%[�   z � �(�� $+ z(� �!��   �%�� "� z(Q� �(=�� $+ z(S �('� $+ z(h �('�   z(" �('�   �('� "� z(IW �#^(�,(�@�   z#� �(Qs� $+ z(� �(�($($� "� z(AX �(@>� "� z(Q� �(G>� (b z(w` �('� (b z(nd �('�   z � �(Qs� (� z(� �(�� $+ z(3 �(�� $+ z(h �(�� $+ z(� �(�� $+ z(
� �(�� $+ z(% �(�� $+ z(� �(�� $+ z((� �(�� $+ z(%� �(�� $+ z(S �(�� $+ z( �(�� $+ z(� �(�� $+ z("� �(�� $+ z($ �(�� $+ z(qa �(�� $+ z(2� �(�� $+ z(^ �(�� $+ z(8� �(�� $+ z(� �(�� $+ z('� �(�� $+ z(4� �(�� $+ z($i �(�� $+ z(s� �(�� $+ z(� �(�� $+ z(\~ �(�� $+ z(s �(�� $+ z(5� �(�� $+ z(z� �(��   z(�� �(�� "� z(�� �('� "� z(S� �(I�� "� z(Q� �(I�� $+ �#��   z%� �%�(�,(�@� $+ z( �((�,(�@� $+ z(� �(1�   z(us �(1�   z&w �(1�   z � �(1�   z(� �(��   z(	� �(�� $+ z(� �(2�� $+ z(� �(x($($�   z(�� �(� !B z(N� �(� (b z(� �(� $+ z(^ �(2�� $+ z(� �(2�� !B z(,� �(2�� $+ z( �(2��   z(� �(^�   z(� �(!.� (b z(k� �(��   z(| �(�� $+ z(&� �(��   z(#V �(z�   z � �(%�� $+ �(Q�   z(�; �#�� $+ z$� �(��� !B z(,� �(3� $+ z(
i �(3� $+ z(� �(3� $+ z(
� �(3� (b z(�� �(��   z(�� �(~� (b z(� �(~� $+ z('� �(s��   z(]� �(z� $+ z(� �(� $+ z(3 �(�� (� z(q �(�� $+ z(, �(��   z(w� �(��   z(1� �(�� (b z(} �(�� (b z(�g �(��   z(� �(�� $+ z(~ �(�� (b z(� �(�� $+ z( ? �(�� $+ z(� �(��   z(2� �(��   z � �(�� $+ z((� �(�� $+ z(4� �(�� $+ z(2� �(�� (b z(� �(�� (b z(w` �(�� $+ z(8� �(�� $+ z(S �(�� (� z(�� �(G>� (b z(_� �((� �((($(�z� $+ z(2� �(s�� $+ z(� �$�($($� $+ z(� �(�� �$��   z(1� �(
=� (� z(� �#^($($� "� z(?Y �(?Y(�,(�@� $+ z(
� �&�� "� z(AX �('�   z(�� �#��   z(" �(z� (b z(el �(S� $+ z(�e �(�e� (b z(g� �(�� �(�($(�z� $+ z(^ �(�� (b z(i= �(�� (b z(� �(�� (b z(el �(��   z%� �(z� $+ z($ �(�($($�   z � �(�� $+ z(� �(($($� (b z(k� �#��   z$� �$�(�,(�@� $+ z(x � �� $+ z(z � ��   z(2� � �� $+ z( �(L� "� z(' �(L� "� z('I �#�� "� z#^ �(�� $+ z(� �(�� $+ z( �(� "� z(B� �(x� (� z(� �(x� (� z(Z� �(x�   z(~ �(x�   z(us �(x�   z(!. �(x� "� z(?� �(x� "� z(> �(x� "� z(F� �(x� (b z(�� �(x� (b z(nd �(x� (b z(i� �(x� (b z(|� �(x� (b z(q� �(x� (b z(q �(x� (b z(k� �(x� (b z(`� �(x� (b z(v� �(x� (b z(� �(x� (b z(^� �(x� (b z(ry �(x� (b z(m� �(x� (b z(} �(x� (b z(a� �(x� (b z(� �(x� (b z(aW �(x� (b z({t �(x� (b z(i= �(x� (b z(y �(x� (b z(el �(x� (b z(\� �(x� (b z(j� �(x� (b z(� �(x� (b z(~� �(x� (b z(y� �(x� (b z(h �(x� (b z(}� �(x� (b z(x� �(x� (b z( �(x� (b z(oz �(x� (b z(�� �(x� (b z(v �(x� (b z(p �(x� (b z(m� �(x� (b z(_� �(x� (b z(Vi �(x� (b z(d� �(x� (b z(g� �(x� $+ z('� �(x� $+ z(~ �(x�   z(� �(x� $+ z(^ �(x� $+ z(\~ �(x� $+ z(z� �(x� $+ z(�N �(x� "� z(C� �(x� $+ z(5� �(x� "� z(R� �(x� "� z(C8 �(x� "� z(W� �(x� "� z(Q� �(x� "� z(I� �(x� "� z(S� �(x� "� z(L �(x� "� z(H �(x� "� z(E
 �(x� "� z(IW �(x� "� z(K� �(x� "� z(+� �(x� "� z(H� �(x� (� z(@� �(x� (� z(H� �(x� (� z(D� �(x� (� z(O� �(x� (� z(U� �(x� (� z(Z �(x� !B z(ť �(x�   z(` �(x� !B z(K; �(x� !B z(N� �(x� !B z(WZ �(x� !B z(U: �(x� !B z(Zy �(x� !B z(Fg �(x� !B z(ޚ �(x� !B z(T� �(x� !B z(JC �(x� !B z(Y� �(x� !B z(ƅ �(x� !B z(ߚ �(x�   z(M� �(x�   z'| �(x�   z(l� �(x�   z(p� �(x�   z(/� �(x�   z(� �(x�   z(�� �(x�   z(2� �(x�   z(_ �(x�   z(sp �(x�   z(v� �(x�   z(�; �(x�   z(�� �(x�   z(1� �(x�   z(" �(x�   z(:* �(x� $+ z(R �("�� $+ z(R �(^� $+ z(R �(�� $+ z(R �(&�� $+ z(R �(,�� $+ z(R �(1� $+ z(R �(*V� $+ z(� �(&�� "� z(N�� $+ z(� �(�� !B z!� �(v�� !B z!� �(L�� !B z!� �(Fg� !B z!� �%[� !B z!� �(l��   z%[ �(]��   z(w� �(-��   z(w� �#��   z(w� �(�� !B z!� �(��   z(v� �(,��   z(v� �$��   z(v� �(��   z$� �(v�� $+ z(Q �(x($($�   z � �(&�� "� z(' �(&�� $+ z(� �(&�� $+ z(� �(&�� $+ z(� �(&�� "� z('I �(&�� (b z(� �!�� (� z(� �#�� (b z(� �#��   z � �&w($($� $+ z(Q �%[� $+ z(S �(N�� $+ z(^ �(]�� $+ z($i � �� (� z(q �(,�� !B z!� � �($($� $+ z(, �&�� $+ z(
� �&w� $+ z(� �&w� $+ z(� �&w� $+ z( �&w� $+ z(
i �&w�   z'| �!��   z&w �#�($($� !B z!� �#�($($� $+ z(Q �!�� $+ z(3 �!��   z(� � �� (� z(D� �#��   z(
= � ��   z(-Q �#��   z( �#�� (� z(� �#�� $+ z( � ��   z(]� �!�� (� z(PR �&w�   � �� $+ � �� $+ z(^ � �� $+ z(
� � ��   z(*V �!�� "� z('I �!��   z%� �(N��   z&� �(N��   z#� �(N��   z(-� �(N��   z%[ �(N�� "� z(' �&�� "� z(' �&�($($� $+ z(x �&�� $+ z( �&�� $+ z(^ �&��   z(-� �&��   z(]� �&��   z(sp �&��   z(�� �&��   z(v� �&�� (� z(q �&�� !B z(,� �&��   z"B �&��   z(� �&�� "� z('I �&�� $+ z(Q �&��   z%� �&�� $+ z( �(Qs� $+ z( ? �('� $+ z(�N �#^� $+ z(x �#^($($� "� z(@> �(AX� $+ z(� "� z(��� "� z(+�� �(�� (� z(PR �(+�� (� z(@� �(�� "� z(B� �(�� "� z(H� �(�� (� z(U� �(�� (� z(� �(PR� $+ z(x �(PR� $+ z(� �(PR� "� z(H� �(�� (� z(� �(D�� (� z(D��   z(!. �('� (�� z(�� �(��   z&� �(^� (�� z(�g �(�   z(o �(�� "� z(Qs �(x� "� z(�u �(,� (� z(E� �(,� "� z(� �(,� "� z(R� �(,� "� z(�L �(,� !B z(ޚ �(,� !B z(�� �(,� !B z(ƅ �(,�   z(p� �(,� $+ z(z� �(,� "� z(E
 �(,� "� z(K� �(,� "� z(I� �(,� "� z(H �(,� "� z(+� �(,� $+ z( �(,� (b z(e� �(,� (b z(�g �(,� (b z(q �(,� (b z(� �(,� (b z(Vi �(,� (b z(|� �(,� (b z(i� �(,� (b z(`� �(,� !B z(ť �(,� (b z(x� �(,� (b z(} �(,� (b z(v �(,� (b z(m� �(,� (b z(j� �(,� (b z(aW �(,� "� z(@> �(,� $+ z(�� �(,� !B z(G� �(,�   z(� �(,� $+ z(h� �(,� (b z(� �(,�   z(w� �(,� (b z(:� �(,� (b z(t� �(,� (b z(p �(,� (b z(oz �(,� (b z(m� �(,� (b z(d� �(,�   z)[ �(,� (b z(h �(,� (b z(_� �(,� (�� z(�� �(,�   z(�� �(,� (b z(�� �(,� (b z(~� �(,� (b z(y� �(,�   z(| �(,� $+ z(4� �(,�   z(lm �(,�   z(� �(,� (b z(g� �(,� (b z(el �(,� $+ z(6� �(,� !B z(N� �(,� !B z(ߚ �(,� "� z([o �(,� "� z(�� �(,� "� z(S� �(,� (� z(U� �(,� "� z(J� �(,� "� z(AX �(,� "� z(Q� �(,� (� z(H� �(,� "� z(G> �(,� (� z(�� �(,� "� z(F� �(,� "� z(C8 �(,� "� z(�� �(,� "� z(=� �(,� "� z(> �(,� (b z(b� �(,� (b z({t �(,� (b z(v� �(,� (b z(q� �(,� (b z(f� �(,� $+ z(% �(,� (b z(i= �(,� (b z(a� �(,� (b z(^� �(,� (b z(\� �(,� !B z(T� �(,� !B z(�C �(,� !B z(Zy �(,� !B z(Y� �(,� !B z(WZ �(,� !B z(V� �(,� !B z(U: �(,� !B z(�� �(,� !B z(L� �(,� !B z(K; �(,� !B z(M5 �(,� !B z(JC �(,� !B z(Fg �(,� !B z(B, �(,� !B z(<� �(,� "� z(W� �(,� "� z(X� �(,� "� z(H� �(,� "� z(�2 �(,� !B z(L �(,� $+ z(
� �(�� $+ z(z �(%�($($� �(^� "� z('I �(��   z%[ �(��   z � �(�� (� z(� �(��   z(~ �(3�   z$� �(3� $+ z$� �("�� (b z(� �(^�   z(M� �(^� !B z(,� �(^�   z(o �(^�   z(( �(^� "� z(B� �(^� "� z('I �(^� "� z(N� �(^� "� z(j\ �(^� (�� z(�� �(^�   z%[ �(^� $+ z( ? �(^� $+ z(
� �(^� $+ z(
i �(^� $+ z$� �"B� !B z(,� �#^($($�   z(	� �($� $+ z(� �(�� !B z(,� �(�� (b z(w` �(�� (b z(( �(�� $+ z( �(Zy�   z&w �(Zy� $+ z(, �(Zy�   z(2� �(1� $+ z( ? �(
�� $+ z(
� �(
�� $+ z(z �(
�� $+ z(� �(
�� !B z(,� �(
�� $+ z(
i �(
�� (b z(w` �(
�� (b z(( �(
��   z � �(
�� $+ z(� �(
�� "� z('I �(
�� (� z(� �(
�� (� z(� �(
��   z(
= �(
��   z%� �(
�� "� z(' �(
�� !B z!� �(
��   z � �(
�� $+ z( �(
�� (� z(� �(
�� $+ z(\~ �(
��   z(	� �(
�� "� z(?� �(
�� $+ z(3 �(
�� "� z(?Y �(
�� (� z(@� �(
�� $+ z(^ �(
�� "� z(L �(
�� "� z(+� �(
�� $+ z(~ �(
�� $+ z(� �(
�� "� z(C� �(
�� (b z(�� �(
�� (� z(D� �(
�� $+ z($i �(
�� (b z(� �(
��   z(" �(
�� $+ z(� �(
�� "� z(H �(
�� (� z(H� �(
�� $+ z(h �(
�� $+ z((� �(
��   z(-� �(
��   z(� �(
��   z(� �(
��   z(#V �(
�� $+ z(S �(
�� $+ z(%� �(
�� (b z(tg �(
�� $+ z(s� �(
�� $+ z(qa �(
��   z%[ �(
�� "� z(K� �(
��   z(v� �(
��   z(2� �(
�� "� z(N� �(
�� (� z(PR �(
��   z(( �(
�� (� z(O� �(
��   z( �(
�� $+ z( �(
�� $+ z(2� �(
��   z(*V �(
�� $+ z(&� �(
�� $+ z("� �(
��   z"B �(
�� (b z(�g �(
�� $+ z($ �(
�� (� z(Z �(
�� (b z(v� �(
��   z(� �(
��   z(-� �(
=�   z#� �(
=� $+ z('� �(
=� $+ z(\~ �(
=�   z(� �(
=� $+ z(� �(
=� $+ z(^ �(
=� $+ z(� �(
=� $+ z(8� �(
=� $+ z(h �(
=� $+ z(� �(
=� $+ z($i �(
=� $+ z(h� �(
=� $+ z(
� �(
=� $+ z((� �(
=� $+ z( ? �(
=� $+ z(� �(
=� $+ z(%� �(
=� $+ z(5� �(
=� $+ z(S �(
=� $+ z(4� �(
=� $+ z(qa �(
=� $+ z(s �(
=� $+ z(s� �(
=� $+ z(
� �(
=� $+ z(z� �(
=� $+ z(2� �(
=� $+ z("� �(
=� $+ z(&� �(
=� $+ z(z �(
=� $+ z($ �(
=� $+ z( �(
=� (� z(� �(
=�   z&� �(
=�   z&w �(
=�   z � �(
=�   z(( �(
=� "� z(' �(
=�   z � �(
=� !B z!� �(
=�   z(M� �(
=� (�� z(�� �(
=�   z(( �(�� $+ �($i� $+ z(
� �(�� $+ z(S �($i� �(z� "� z(B� �(,� $+ z(�e �(,� $+ z( �(,� $+ z(2� �(�� $+ z(
� �(�� $+ z($ �(��   z(M� �(�� $+ z(z �(�� $+ z( �(��   z(o �$��   z(M� �$�� (�� z(�� �$�� $+ �$�� "� z(j\ �$�� "� z([o �$��   z'| �$�� "� z(S� �$��   z(w� �$��   z(v� �$�� (b z(� �(z�   z(M� �(� $+ z(5� �(R($($� $+ z(�N �(
��   z(w� �(
�� $+ z(4� �(
��   z&� �(
�� "� z(IW �(
�� (� z(Z� �(
�� "� z(E
 �(
�� "� z(C8 �(C8($($� !B z(,� �((�� "� z(�u �(�� !B z(�C �(�� (b z(� �(�� (b z(:� �(�� (�� z(�g �(��   z)[ �(��   z#� �($i� $+ z(� �($i($($� $+ z(3 �($i�   z%� �(~� $+ z($i �(�� $+ z(\~ �($� $+ z(5� �($� $+ z(z� �($� (b z(y� �($� (b z(w` �($� (b z(� �($� (b z(� �($�   z � �($�   z(w� �($� (b z(�� �($�   z(� �($� "� z(+� �($� "� z(C� �($�   z(~ �($�   z(" �($�   z(/� �($�   z'| �($�   z(lm �($� "� z(IW �($�   z(v� �($�   z(| �($� "� z(B� �($�   z(us �($�   z(1 �($�   z(-Q �($�   z(l� �($�   z(o �($�   z(� �($� "� z(W� �($� "� z(Qs �($� !B z(L �($� (b z(h �($� (b z(t� �($� (b z(e� �($� (b z(:� �($�   z(` �($� (b z(| �($� (b z(� �($� $+ z(�N �($� (b z(|� �($� (b z(}� �($� (b z(�� �($� (b z(s �($� "� z(G> �($� (b z(� �($�   z(p� �($� (b z(� �($� (b z(aW �($�   z(�� �($� "� z(�u �($� "� z(@> �($� (b z(el �($� (� z(�� �($� (b z(i= �($� "� z(?Y �($� (b z(~� �($� (b z(p �($� "� z(?� �($� !B z(�� �($� (b z(y �($� (b z(f� �($� (b z(^� �($� "� z(R� �($� (b z(q� �($� "� z(>� �($� "� z(�L �($� (b z(`� �($� (b z(v �($� !B z(Fg �($� (b z(q �($� (b z(_� �($� "� z(H� �($� (b z(i� �($� "� z(j\ �($�   z(_ �($� "� z(AX �($� (b z(m� �($� !B z(G� �($� "� z(> �($� (b z({t �($� !B z(ߚ �($� "� z(C8 �($� "� z(S� �($� "� z(� �($� (b z(v� �($� $+ z(% �($� !B z(ť �($� (b z(k� �($� "� z(�2 �($� (b z(m� �($� "� z(F� �($� $+ z(� �($� "� z(Q� �($� (b z(x� �($� $+ z(�� �($� (b z(b� �($� (b z(Vi �($� (b z(� �($� $+ z(6� �($� (b z( �($� "� z(�� �($� (b z(�� �($� (b z(d� �($� !B z(�� �($�   z(�� �($� "� z(� �($� "� z(� �($� "� z(=� �($� !B z(Zy �($� !B z(WZ �($� $+ z(�e �($� (b z(g� �($� "� z(J� �($� (b z(a� �($� !B z(ƅ �($� $+ z( �($� !B z(<� �($� !B z(B, �($� !B z(�C �($� (b z(j� �($� !B z(U: �($� (� z(E� �($� "� z(X� �($� $+ z(h� �($� !B z(T� �($� !B z(ޚ �($� (b z(�� �($� (� z(O� �(~� (� z(Z �(~� (� z(PR �(~� (� z(� �(~� $+ z(
� �(��   z(� �($� (�� z(� �(�� (�� z(�
 �(�� "� z(�� �(�� "� z(� �(�� (�� z(� �(�� !B z(�� �(�� (b z(�� �(��   z(]� �(~� "� z(N� �(~� "� z(I� �(~� "� z(L �(~� "� z(K� �(~� (� z(q �(
=� "� z('I �(
=� (� z(� �(
=�   z(w� �(
=� $+ z( ? �(N�� $+ z(� �(N�� $+ z(
� �(N�� $+ z(^ �(N��   z(" �(N�� $+ z(%� �(N�� $+ z(� �(N�� $+ z($i �(N�� !B z(N� �(~�   z(( �(~�   z(� �(~�   z"B �(~� $+ z(s �(~� $+ z(^ �(~� !B z(,� �(~� $+ z((� �(~� $+ z('� �(~� $+ z(8� �(~� $+ z(s� �(~� $+ z(4� �(~�   z(:* �(~�   z(sp �(~�   z(�; �(~�   z(2� �(~�   z(*V �(~�   z( �(~� (b z(� �(~� (b z(oz �(~� (b z(� �(~� (b z(tg �(~� (b z(ry �(~� (b z(�g �(~� (b z(\� �(~� (b z(} �(~� (� z(Z� �(~� (� z(H� �(~� (� z(D� �(~� (� z(@� �(~� (� z(U� �(~� "� z(E
 �(~� "� z(H �(~�   z(1� �(~� (� z(q �($�   z(#V �($� (b z(�� �(�� $+ z(� �#�� $+ z( �#�� $+ z( �(�� (b z(t� �(w`� (b z(y� �(w`� (b z(b� �(w`� (b z(^� �(w`� (b z(p �(w`� (b z(s �(w`� (b z(} �(w`� (b z(Vi �(w`� (b z(oz �(w`� (b z(� �(w`� (b z(� �(k�� (b z(p �((� (b z(tg �((���MaxMind.com�[binary_format_major_version�[binary_format_minor_version�Kbuild_epochfV�Mdatabase_typePGeoLite2-CountryKdescription�BenYGeoLite2 Country databaseJip_version�IlanguagesBdeBenBesBfrBjaEpt-BRBruEzh-CNJnode_count�@Krecord_size�lib/wfMD5BloomFilter.php000064400000012317150755146450011124 0ustar00<?php
/* 
Copyright (c) 2012, Da Xue
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright
   notice, this list of conditions and the following disclaimer.
2. 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.
3. The name of the author 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 DA XUE ''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 DA XUE 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.
*/

/* https://github.com/dsx724/php-bloom-filter */

// Modified for PHP 5.2 compatibility and to support serialization.

class wfMD5BloomFilter {
	private static function merge($bf1,$bf2,$bfout,$union = false){
		if ($bf1->m != $bf2->m) throw new Exception('Unable to merge due to vector difference.');
		if ($bf1->k != $bf2->k) throw new Exception('Unable to merge due to hash count difference.');
		$length = strlen($bfout->bit_array);
		if ($union){
			$bfout->bit_array = $bf1->bit_array | $bf2->bit_array;
			$bfout->n = $bf1->n + $bf2->n;
		} else {
			$bfout->bit_array = $bf1->bit_array & $bf2->bit_array;
			$bfout->n = abs($bf1->n - $bf2->n);
		}
	}
	public static function createFromProbability($n, $p){
		if ($p <= 0 || $p >= 1) throw new Exception('Invalid false positive rate requested.');
		if ($n <= 0) throw new Exception('Invalid capacity requested.');
		$k = floor(log(1/$p,2));
		$m = pow(2,ceil(log(-$n*log($p)/pow(log(2),2),2))); //approximate estimator method
		return new self($m,$k);
	}
	public static function getUnion($bf1,$bf2){
		$bf = new self($bf1->m,$bf1->k,$bf1->hash);
		self::merge($bf1,$bf2,$bf,true);
		return $bf;
	}
	public static function getIntersection($bf1,$bf2){
		$bf = new self($bf1->m,$bf1->k,$bf1->hash);
		self::merge($bf1,$bf2,$bf,false);
		return $bf;
	}
	private $n = 0; // # of entries
	private $m; // # of bits in array
	private $k; // # of hash functions
	private $k2;
	private $mask;
	private $bit_array; // data structure
	public function __construct($m, $k){
		if ($m < 8) throw new Exception('The bit array length must be at least 8 bits.');
		if (($m & ($m - 1)) !== 0) throw new Exception('The bit array length must be power of 2.');
		if ($m > 65536) throw new Exception('The maximum data structure size is 8KB.');
		if ($k > 8) throw new Exception('The maximum bits to set is 8.');
		$this->m = $m;
		$this->k = $k;
		$this->k2 = $k * 2;
		$address_bits = (int)log($m,2);
		$this->mask = (1 << $address_bits) - 8;
		$this->bit_array = (binary)(str_repeat("\0",$this->getArraySize(true)));
	}
	public function __sleep() {
		return array('n', 'm', 'k', 'k2', 'mask', 'bit_array');
	}
	public function calculateProbability($n = 0){
		return pow(1-pow(1-1/$this->m,$this->k*($n ? $n : $this->n)),$this->k);
	}
	public function calculateCapacity($p){
		return floor($this->m*log(2)/log($p,1-pow(1-1/$this->m,$this->m*log(2))));
	}
	public function getElementCount(){
		return $this->n;
	}
	public function getArraySize($bytes = false){
		return $this->m >> ($bytes ? 3 : 0);
	}
	public function getHashCount(){
		return $this->k;
	}
	public function getInfo($p = null){
		$units = array('','K','M','G','T','P','E','Z','Y');
		$M = $this->getArraySize(true);
		$magnitude = intval(floor(log($M,1024)));
		$unit = $units[$magnitude];
		$M /= pow(1024,$magnitude);
		return 'Allocated '.$this->getArraySize().' bits ('.$M.' '.$unit.'Bytes)'.PHP_EOL.
		'Using '.$this->getHashCount(). ' (16b) hashes'.PHP_EOL.
		'Contains '.$this->getElementCount().' elements'.PHP_EOL.
		(isset($p) ? 'Capacity of '.number_format($this->calculateCapacity($p)).' (p='.$p.')'.PHP_EOL : '');
	}
	public function add($key){
		$hash = md5($key,true);
		for ($index = 0; $index < $this->k2; $index++){
			$hash_sub = (ord($hash[$index++]) << 8) | ord($hash[$index]);
			$word = ($hash_sub & $this->mask) >> 3;
			$this->bit_array[$word] = $this->bit_array[$word] | chr(1 << ($hash_sub & 7));
		}
		$this->n++;
	}
	public function contains($key){
		$hash = md5($key,true);
		for ($index = 0; $index < $this->k2; $index++){
			$hash_sub = (ord($hash[$index++]) << 8) | ord($hash[$index]);
			if ((ord($this->bit_array[($hash_sub & $this->mask) >> 3]) & (1 << ($hash_sub & 7))) === 0) return false;
		}
		return true;
	}
	public function unionWith($bf){
		self::merge($this,$bf,$this,true);
	}
	public function intersectWith($bf){
		self::merge($this,$bf,$this,false);
	}
}lib/dashboard/widget_localattacks.php000064400000011101150755146450013770 0ustar00<?php if (!defined('WORDFENCE_VERSION')) { exit; } ?>
<div class="wf-row">
	<div class="wf-col-xs-12">
		<div class="wf-dashboard-item active">
			<div class="wf-dashboard-item-inner">
				<div class="wf-dashboard-item-content">
					<div class="wf-dashboard-item-title">
						<strong><?php esc_html_e('Firewall Summary:', 'wordfence'); ?> </strong><?php echo esc_html(sprintf(
						/* translators: The site's domain name. */
								__('Attacks Blocked for %s', 'wordfence'), preg_replace('/^[^:]+:\/\//', '', network_site_url()))); ?>
					</div>
					<div class="wf-dashboard-item-action"><div class="wf-dashboard-item-action-disclosure"></div></div>
				</div>
			</div>
			<div class="wf-dashboard-item-extra">
				<?php if ($firewall->learningModeStatus() !== false): ?> 
					<div class="wf-widget-learning-mode"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100.11 100.44"><path d="M96.14,30.67a50.7,50.7,0,0,0-10.66-16A50,50,0,0,0,69.51,4,49.57,49.57,0,0,0,30.6,4a50,50,0,0,0-16,10.69A50.69,50.69,0,0,0,4,30.67,50,50,0,0,0,4,69.74a50.62,50.62,0,0,0,10.66,16,50,50,0,0,0,16,10.69,49.54,49.54,0,0,0,38.91,0,50,50,0,0,0,16-10.69,50.56,50.56,0,0,0,10.66-16,50,50,0,0,0,0-39.07Zm-75.74,39a35.77,35.77,0,0,1-1-37.35,35.21,35.21,0,0,1,12.91-13A34.65,34.65,0,0,1,50.06,14.6a34.22,34.22,0,0,1,19.55,5.93ZM82.71,64a35.4,35.4,0,0,1-7.56,11.37A36,36,0,0,1,63.84,83a34.32,34.32,0,0,1-13.79,2.84A34.85,34.85,0,0,1,30.7,80L79.84,31a34.57,34.57,0,0,1,5.67,19.23A35.17,35.17,0,0,1,82.71,64Zm0,0"/></svg><span><?php esc_html_e('No Data Available During Learning Mode', 'wordfence'); ?></span></div>
				<?php else: ?>
				<ul class="wf-dashboard-item-list">
					<li class="wf-flex-vertical wf-flex-full-width">
						<?php
						$hasSome = false;
						foreach ($d->localBlocks as $row) {
							if ($row['24h'] > 0 || $row['7d'] > 0 || $row['30d'] > 0) {
								$hasSome = true;
								break;
							}
						}
						
						if (!$hasSome):
						?>
							<div class="wf-dashboard-item-list-text"><p><em><?php esc_html_e('No blocks have been recorded.', 'wordfence'); ?></em></p></div>
						<?php else: ?>
							<table class="wf-blocks-summary">
								<thead>
								<tr>
									<th><?php echo wp_kses(__('<span class="wf-hidden-xs">Block </span>Type', 'wordfence'), array('span'=>array('class'=>array()))); ?></th>
								<?php
								$totals = array('24h' => 0, '7d' => 0, '30d' => 0);
								foreach ($d->localBlocks as $row): ?>
									<th width="25%"<?php if ($row['type'] == wfActivityReport::BLOCK_TYPE_BLACKLIST && !wfConfig::get('isPaid')) { echo ' class="wf-premium"'; } ?>><?php echo esc_html($row['title']); ?></th>
									<?php $totals['24h'] += $row['24h']; $totals['7d'] += $row['7d']; $totals['30d'] += $row['30d']; ?>
								<?php endforeach; ?>
									<th width="25%"><?php esc_html_e('Total', 'wordfence'); ?></th>
								</tr>
								</thead>
								<tbody>
								<?php
								$keys = array('24h' => __('Today', 'wordfence'), '7d' => __('Week', 'wordfence'), '30d' => __('Month', 'wordfence'));
								foreach ($keys as $k => $title): ?>
									<tr>
										<th><?php echo esc_html($title); ?></th>
								<?php foreach ($d->localBlocks as $row): ?>
										<td<?php if ($row['type'] == wfActivityReport::BLOCK_TYPE_BLACKLIST && !wfConfig::get('isPaid')) { echo ' class="wf-premium"'; } ?>><?php echo ($row['type'] == wfActivityReport::BLOCK_TYPE_BLACKLIST && !wfConfig::get('isPaid')) ? '&mdash;' : esc_html(number_format_i18n($row[$k])); ?></td> 
								<?php endforeach; ?>
										<td><?php echo esc_html(number_format_i18n($totals[$k])); ?></td>
									</tr>
								<?php endforeach; ?>
								</tbody>
								<tfoot>
									<tr>
										<th></th>
										<?php foreach ($d->localBlocks as $row): ?>
											<td<?php if ($row['type'] == wfActivityReport::BLOCK_TYPE_BLACKLIST && !wfConfig::get('isPaid')) { echo ' class="wf-premium"'; } ?>><?php if ($row['type'] == wfActivityReport::BLOCK_TYPE_BLACKLIST && !wfConfig::get('isPaid')) { esc_html_e('Premium', 'wordfence'); } ?></td>
										<?php endforeach; ?>
										<td></td>
									</tr>
								</tfoot>
							</table>
							<p class="wf-right wf-no-top"><a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_WIDGET_LOCAL_ATTACKS); ?>" target="_blank" rel="noopener noreferrer"><i class="wf-fa wf-fa-question-circle-o" aria-hidden="true"></i> <?php esc_html_e('How are these categorized?', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></p>
						<?php endif; ?>
					</li>
				</ul>
				<?php endif; ?>
			</div>
		</div>
	</div>
</div>lib/dashboard/widget_content_logins.php000064400000001563150755146450014363 0ustar00<?php if (!defined('WORDFENCE_VERSION')) { exit; } ?>
<?php //$data is defined here as an array of login attempts: array('t' => timestamp, 'name' => username, 'ip' => IP address) ?>
<table class="wf-table wf-table-hover">
	<thead>
		<tr>
			<th><?php esc_html_e('Username', 'wordfence') ?></th>
			<th><?php esc_html_e('IP', 'wordfence') ?></th>
			<th><?php esc_html_e('Date', 'wordfence') ?></th>
		</tr>
	</thead>
	<tbody>
	<?php foreach ($data as $l): ?>
		<tr>
			<td><?php echo esc_html($l['name']); ?></td>
			<td><?php echo esc_html($l['ip']); ?></td>
			<td><?php
				if (time() - $l['t'] < 86400) {
					echo esc_html(wfUtils::makeTimeAgo(time() - $l['t']) . ' ago');
				}
				else {
					echo esc_html(wfUtils::formatLocalTime(get_option('date_format') . ' ' . get_option('time_format'), (int) $l['t']));
				}
				?></td>
		</tr>
	<?php endforeach; ?>
	</tbody>
</table>lib/dashboard/widget_logins.php000064400000011277150755146450012634 0ustar00<?php if (!defined('WORDFENCE_VERSION')) { exit; } ?>
<?php //$d is defined here as a wfDashboard instance ?>
<div class="wf-row">
	<div class="wf-col-xs-12">
		<div class="wf-dashboard-item active">
			<div class="wf-dashboard-item-inner">
				<div class="wf-dashboard-item-content">
					<div class="wf-dashboard-item-title">
						<strong><?php esc_html_e('Login Attempts', 'wordfence') ?></strong>
					</div>
					<div class="wf-dashboard-item-action"><div class="wf-dashboard-item-action-disclosure"></div></div>
				</div>
			</div>
			<div class="wf-dashboard-item-extra">
				<ul class="wf-dashboard-item-list">
					<li>
						<div>
							<div class="wf-dashboard-toggle-btns">
								<ul class="wf-pagination wf-pagination-sm">
									<li class="wf-active"><a href="#" class="wf-dashboard-login-attempts" data-grouping="success" role="button"><?php esc_html_e('Successful', 'wordfence') ?></a></li>
									<li><a href="#" class="wf-dashboard-login-attempts" data-grouping="fail" role="button"><?php esc_html_e('Failed', 'wordfence') ?></a></li>
								</ul>
							</div>
							<div class="wf-recent-logins wf-recent-logins-success">
								<?php if (count($d->loginsSuccess) == 0): ?>
									<div class="wf-dashboard-item-list-text"><p><em><?php esc_html_e('No successful logins have been recorded.', 'wordfence') ?></em></p></div>
								<?php else: ?>
									<?php $data = array_slice($d->loginsSuccess, 0, min(10, count($d->loginsSuccess)), true); include(dirname(__FILE__) . '/widget_content_logins.php'); ?>
									<?php if (count($d->loginsSuccess) > 10): ?>
										<div class="wf-dashboard-item-list-text"><div class="wf-dashboard-show-more" data-grouping="logins" data-period="success"><a href="#" role="button"><?php esc_html_e('Show more', 'wordfence') ?></a></div></div>
									<?php endif; ?>
								<?php endif; ?>
							</div>
							<div class="wf-recent-logins wf-recent-logins-fail wf-hidden">
								<?php if (count($d->loginsFail) == 0): ?>
									<div class="wf-dashboard-item-list-text"><p><em><?php esc_html_e('No failed logins have been recorded.', 'wordfence') ?></em></p></div>
								<?php else: ?>
									<?php $data = array_slice($d->loginsFail, 0, min(10, count($d->loginsFail)), true); include(dirname(__FILE__) . '/widget_content_logins.php'); ?>
									<?php if (count($d->loginsFail) > 10): ?>
										<div class="wf-dashboard-item-list-text"><div class="wf-dashboard-show-more" data-grouping="logins" data-period="fail"><a href="#" role="button"><?php esc_html_e('Show more', 'wordfence') ?></a></div></div>
									<?php endif; ?>
								<?php endif; ?>
							</div>
							<script type="application/javascript">
								(function($) {
									$('.wf-dashboard-login-attempts').on('click', function(e) {
										e.preventDefault();
										e.stopPropagation();
										
										$(this).closest('ul').find('li').removeClass('wf-active');
										$(this).closest('li').addClass('wf-active'); 
										
										$('.wf-recent-logins').addClass('wf-hidden');
										$('.wf-recent-logins-' + $(this).data('grouping')).removeClass('wf-hidden');
									});

									$('.wf-recent-logins .wf-dashboard-show-more a').on('click', function(e) {
										e.preventDefault();
										e.stopPropagation();

										var grouping = $(this).parent().data('grouping');
										var period = $(this).parent().data('period');

										$(this).closest('.wf-dashboard-item-list-text').fadeOut();

										var self = this;
										WFAD.ajax('wordfence_dashboardShowMore', {
											grouping: grouping,
											period: period
										}, function(res) {
											if (res.ok) {
												var table = $('#logins-data-template').tmpl(res);
												$(self).closest('.wf-recent-logins').css('overflow-y', 'auto');
												$(self).closest('.wf-recent-logins').find('table').replaceWith(table);
											}
											else {
												WFAD.colorboxModal('300px', <?php echo json_encode(__('An error occurred', 'wordfence')) ?>, <?php echo json_encode(__('We encountered an error trying load more data.', 'wordfence')) ?>);
												$(this).closest('.wf-dashboard-item-list-text').fadeIn();
											}
										});
									});
								})(jQuery);
							</script>
						</div>
					</li>
				</ul>
			</div>
		</div>
	</div>
</div>
<script type="text/x-jquery-template" id="logins-data-template">
	<table class="wf-table wf-table-hover">
		<thead>
		<tr>
			<th><?php esc_html_e('Username', 'wordfence') ?></th>
			<th><?php esc_html_e('IP', 'wordfence') ?></th>
			<th><?php esc_html_e('Date', 'wordfence') ?></th>
		</tr>
		</thead>
		<tbody>
		{{each(idx, d) data}}
		<tr>
			<td>${d.name}</td>
			<td>${d.ip}</td>
			<td>${d.t}</td>
		</tr>
		{{/each}}
		</tbody>
	</table>
</script>lib/dashboard/widget_networkattacks.php000064400000016767150755146450014416 0ustar00<?php if (!defined('WORDFENCE_VERSION')) { exit; } ?>
<div class="wf-row">
	<div class="wf-col-xs-12">
		<div class="wf-dashboard-item active">
			<div class="wf-dashboard-item-inner">
				<div class="wf-dashboard-item-content">
					<div class="wf-dashboard-item-title">
						<strong><?php esc_html_e('Total Attacks Blocked:', 'wordfence'); ?> </strong><?php esc_html_e('Wordfence Network', 'wordfence'); ?>
					</div>
					<div class="wf-dashboard-item-action"><div class="wf-dashboard-item-action-disclosure"></div></div>
				</div>
			</div>
			<div class="wf-dashboard-item-extra">
				<ul class="wf-dashboard-item-list">
					<li>
						<?php if ($d->networkBlock24h === null): ?>
							<div class="wf-dashboard-item-list-text"><p><em><?php esc_html_e('Blocked attack counts not available yet.', 'wordfence'); ?></em></p></div>
						<?php else: ?>
							<div class="wf-dashboard-graph-wrapper">
								<div class="wf-dashboard-toggle-btns">
									<ul class="wf-pagination wf-pagination-sm">
										<li class="wf-active"><a href="#" class="wf-dashboard-graph-attacks" data-grouping="24h" role="button"><?php esc_html_e('24 Hours', 'wordfence'); ?></a></li>
										<li><a href="#" class="wf-dashboard-graph-attacks" data-grouping="30d" role="button"><?php esc_html_e('30 Days', 'wordfence'); ?></a></li>
									</ul>
								</div>
								<div class="wf-dashboard-network-blocks"><canvas id="wf-dashboard-network-blocks-24h"></canvas></div>
								<div class="wf-dashboard-network-blocks wf-hidden"><canvas id="wf-dashboard-network-blocks-7d"></canvas></div>
								<div class="wf-dashboard-network-blocks wf-hidden"><canvas id="wf-dashboard-network-blocks-30d"></canvas></div>
							</div>
							<script type="application/javascript">
								<?php
								$totalAttacksString = json_encode(__("Total Attacks", 'wordfence'));
								$styling = <<<STYLING
																		label: $totalAttacksString,
																		fill: false,
																		lineTension: 0.1,
																		backgroundColor: "rgba(75,192,192,0.4)",
																		borderColor: "#16bc9b",
																		borderCapStyle: 'butt',
																		borderDash: [],
																		borderDashOffset: 0.0,
																		borderJoinStyle: 'miter',
																		pointBorderColor: "rgba(75,192,192,1)",
																		pointBackgroundColor: "#fff",
																		pointBorderWidth: 1,
																		pointHoverRadius: 5,
																		pointHoverBackgroundColor: "rgba(75,192,192,1)",
																		pointHoverBorderColor: "rgba(220,220,220,1)",
																		pointHoverBorderWidth: 2,
																		pointRadius: 1,
																		pointHitRadius: 10,
																		spanGaps: false,
STYLING;
								
								?>
								(function($) {
									$(document).ready(function() {
										new Chart($('#wf-dashboard-network-blocks-24h'), {
											type: 'line',
											data: {
												<?php
												$blocks = $d->networkBlock24h;
												$labels = array();
												$values = array();
												
												foreach ($blocks as $b) {
													$values[] = $b['c'];
													$labels[] = "'" . wfUtils::formatLocalTime('g a', $b['t']) . "'";
												}
												?>
												labels: [<?php echo implode(',', $labels); ?>],
												datasets: [
													{
														<?php echo $styling; ?>
														data: [<?php echo implode(',', $values) ?>]
													}
												]
											},
											options: {
												scales: {
													y: {
														beginAtZero: true,
														ticks: {
															callback: function(value, index, values) {
																return value.toLocaleString();
															}
														}
													}
												},
												tooltips: {
													callbacks: {
														label: function(tooltipItem, data) {
															var datasetLabel = data.datasets[tooltipItem.datasetIndex].label || 'Other';
															var label = parseInt(tooltipItem.yLabel).toLocaleString();
															return datasetLabel + ': ' + label;
														}
													}
												}
											}
										});

										new Chart($('#wf-dashboard-network-blocks-7d'), {
											type: 'line',
											data: {
												<?php
												$blocks = $d->networkBlock7d;
												$labels = array();
												$values = array();
												
												foreach ($blocks as $b) {
													$values[] = $b['c'];
													$labels[] = "'" . wfUtils::formatLocalTime('M j', $b['t']) . "'";
												}
												?>
												labels: [<?php echo implode(',', $labels); ?>],
												datasets: [
													{
														<?php echo $styling; ?>
														data: [<?php echo implode(',', $values) ?>]
													}
												]
											},
											options: {
												scales: {
													y: {
														beginAtZero: true,
														ticks: {
															callback: function(value, index, values) {
																return value.toLocaleString();
															}
														}
													}
												},
												tooltips: {
													callbacks: {
														label: function(tooltipItem, data) {
															var datasetLabel = data.datasets[tooltipItem.datasetIndex].label || 'Other';
															var label = parseInt(tooltipItem.yLabel).toLocaleString();
															return datasetLabel + ': ' + label;
														}
													}
												}
											}
										});

										new Chart($('#wf-dashboard-network-blocks-30d'), {
											type: 'line',
											data: {
												<?php
												$blocks = $d->networkBlock30d;
												$labels = array();
												$values = array();
												
												foreach ($blocks as $b) {
													$values[] = $b['c'];
													$labels[] = "'" . wfUtils::formatLocalTime('M j', $b['t']) . "'";
												}
												?>
												labels: [<?php echo implode(',', $labels); ?>],
												datasets: [
													{
														<?php echo $styling; ?>
														data: [<?php echo implode(',', $values) ?>]
													}
												]
											},
											options: {
												scales: {
													y: {
														beginAtZero: true,
														ticks: {
															callback: function(value, index, values) {
																return value.toLocaleString();
															}
														}
													}
												},
												tooltips: {
													callbacks: {
														label: function(tooltipItem, data) {
															var datasetLabel = data.datasets[tooltipItem.datasetIndex].label || 'Other';
															var label = parseInt(tooltipItem.yLabel).toLocaleString();
															return datasetLabel + ': ' + label;
														}
													}
												}
											}
										});
									});
									
									$('.wf-dashboard-graph-attacks').on('click', function(e) {
										e.preventDefault();
										e.stopPropagation();

										$(this).closest('ul').find('li').removeClass('wf-active');
										$(this).closest('li').addClass('wf-active');

										$('.wf-dashboard-network-blocks').addClass('wf-hidden');
										$('#wf-dashboard-network-blocks-' + $(this).data('grouping')).closest('.wf-dashboard-network-blocks').removeClass('wf-hidden');
									});
								})(jQuery);
							</script>
						<?php endif; ?>
					</li>
				</ul>
				<p class="wf-dashboard-last-updated"><?php echo esc_html(sprintf(
					/* translators: Time since. Example: 1 minute, 2 seconds */
						__('Last Updated: %s ago', 'wordfence'), wfUtils::makeTimeAgo(time() - $d->lastGenerated))); ?></p>
			</div>
		</div>
	</div>
</div>lib/dashboard/widget_content_ips.php000064400000001652150755146450013662 0ustar00<?php if (!defined('WORDFENCE_VERSION')) { exit; } ?>
<?php //$data is defined here as an array of login attempts: array('IP' => binary ip, 'countryCode' => string, 'blockCount' => int, 'unixday' => int, 'countryName' => string) ?>
<table class="wf-table wf-table-hover">
	<thead>
		<tr>
			<th><?php esc_html_e('IP', 'wordfence') ?></th>
			<th colspan="2"><?php esc_html_e('Country', 'wordfence') ?></th>
			<th><?php esc_html_e('Block Count', 'wordfence') ?></th>
		</tr>
	</thead>
	<tbody>
	<?php foreach ($data as $l): ?>
		<tr>
			<td><?php echo esc_html(wfUtils::inet_ntop($l['IP'])); ?></td>
			<td><?php echo esc_html($l['countryName']); ?></td>
			<td><span class="wf-flag <?php echo esc_attr('wf-flag-' . strtolower($l['countryCode'])); ?>" title="<?php echo esc_attr($l['countryName']); ?>"></span></td>
			<td><?php echo esc_html(number_format_i18n($l['blockCount'])); ?></td>
		</tr>
	<?php endforeach; ?>
	</tbody>
</table>lib/dashboard/widget_ips.php000064400000014715150755146450012134 0ustar00<?php if (!defined('WORDFENCE_VERSION')) { exit; } ?>
<?php
//$d is defined here as a wfDashboard instance

$initial = false;
if (!isset($limit)) { $limit = 10; $initial = true; }
?>
<div class="wf-row">
	<div class="wf-col-xs-12">
		<div class="wf-dashboard-item active">
			<div class="wf-dashboard-item-inner">
				<div class="wf-dashboard-item-content">
					<div class="wf-dashboard-item-title">
						<strong><?php esc_html_e('Top IPs Blocked', 'wordfence') ?></strong>
					</div>
					<div class="wf-dashboard-item-action"><div class="wf-dashboard-item-action-disclosure"></div></div>
				</div>
			</div>
			<div class="wf-dashboard-item-extra">
				<?php if ($firewall->learningModeStatus() !== false): ?>
					<div class="wf-widget-learning-mode"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100.11 100.44"><path d="M96.14,30.67a50.7,50.7,0,0,0-10.66-16A50,50,0,0,0,69.51,4,49.57,49.57,0,0,0,30.6,4a50,50,0,0,0-16,10.69A50.69,50.69,0,0,0,4,30.67,50,50,0,0,0,4,69.74a50.62,50.62,0,0,0,10.66,16,50,50,0,0,0,16,10.69,49.54,49.54,0,0,0,38.91,0,50,50,0,0,0,16-10.69,50.56,50.56,0,0,0,10.66-16,50,50,0,0,0,0-39.07Zm-75.74,39a35.77,35.77,0,0,1-1-37.35,35.21,35.21,0,0,1,12.91-13A34.65,34.65,0,0,1,50.06,14.6a34.22,34.22,0,0,1,19.55,5.93ZM82.71,64a35.4,35.4,0,0,1-7.56,11.37A36,36,0,0,1,63.84,83a34.32,34.32,0,0,1-13.79,2.84A34.85,34.85,0,0,1,30.7,80L79.84,31a34.57,34.57,0,0,1,5.67,19.23A35.17,35.17,0,0,1,82.71,64Zm0,0"/></svg><span><?php esc_html_e('No Data Available During Learning Mode', 'wordfence'); ?></span></div>
				<?php else: ?>
				<ul class="wf-dashboard-item-list">
					<li>
						<div>
							<div class="wf-dashboard-toggle-btns">
								<ul class="wf-pagination wf-pagination-sm">
									<li class="wf-active"><a href="#" class="wf-dashboard-ips" data-grouping="24h" role="button"><?php  esc_html_e('24 Hours', 'wordfence') ?></a></li>
									<li><a href="#" class="wf-dashboard-ips" data-grouping="7d" role="button"><?php esc_html_e('7 Days', 'wordfence') ?></a></li>
									<li><a href="#" class="wf-dashboard-ips" data-grouping="30d" role="button"><?php esc_html_e('30 Days', 'wordfence') ?></a></li>
								</ul>
							</div>
							<div class="wf-ips wf-ips-24h">
								<?php if (count($d->ips24h) == 0): ?>
									<div class="wf-dashboard-item-list-text"><p><em><?php esc_html_e('No blocks have been recorded.', 'wordfence') ?></em></p></div>
								<?php else: ?>
									<?php $data = array_slice($d->ips24h, 0, min($limit, count($d->ips24h)), true); include(dirname(__FILE__) . '/widget_content_ips.php'); ?>
									<?php if (count($d->ips24h) > $limit && $initial): ?>
										<div class="wf-dashboard-item-list-text"><div class="wf-dashboard-show-more" data-grouping="ips" data-period="24h"><a href="#" role="button"><?php esc_html_e('Show more', 'wordfence') ?></a></div></div>
									<?php endif; ?>
								<?php endif; ?>
							</div>
							<div class="wf-ips wf-ips-7d wf-hidden">
								<?php if (count($d->ips7d) == 0): ?>
									<div class="wf-dashboard-item-list-text"><p><em><?php esc_html_e('No blocks have been recorded.', 'wordfence') ?></em></p></div>
								<?php else: ?>
									<?php $data = array_slice($d->ips7d, 0, min($limit, count($d->ips7d)), true); include(dirname(__FILE__) . '/widget_content_ips.php'); ?>
									<?php if (count($d->ips7d) > $limit && $initial): ?>
										<div class="wf-dashboard-item-list-text"><div class="wf-dashboard-show-more" data-grouping="ips" data-period="7d"><a href="#" role="button"><?php esc_html_e('Show more', 'wordfence') ?></a></div></div>
									<?php endif; ?>
								<?php endif; ?>
							</div>
							<div class="wf-ips wf-ips-30d wf-hidden">
								<?php if (count($d->ips30d) == 0): ?>
									<div class="wf-dashboard-item-list-text"><p><em><?php esc_html_e('No blocks have been recorded.', 'wordfence') ?></em></p></div>
								<?php else: ?>
									<?php $data = array_slice($d->ips30d, 0, min($limit, count($d->ips30d)), true); include(dirname(__FILE__) . '/widget_content_ips.php'); ?>
									<?php if (count($d->ips30d) > $limit && $initial): ?>
										<div class="wf-dashboard-item-list-text"><div class="wf-dashboard-show-more" data-grouping="ips" data-period="30d"><a href="#" role="button"><?php esc_html_e('Show more', 'wordfence') ?></a></div></div>
									<?php endif; ?>
								<?php endif; ?>
							</div>
							<script type="application/javascript">
								(function($) {
									$('.wf-dashboard-ips').on('click', function(e) {
										e.preventDefault();
										e.stopPropagation();

										$(this).closest('ul').find('li').removeClass('wf-active');
										$(this).closest('li').addClass('wf-active');

										$('.wf-ips').addClass('wf-hidden');
										$('.wf-ips-' + $(this).data('grouping')).removeClass('wf-hidden');
									});
									
									$('.wf-ips .wf-dashboard-show-more a').on('click', function(e) {
										e.preventDefault();
										e.stopPropagation();
										
										var grouping = $(this).parent().data('grouping');
										var period = $(this).parent().data('period');
										
										$(this).closest('.wf-dashboard-item-list-text').fadeOut();

										var self = this;
										WFAD.ajax('wordfence_dashboardShowMore', {
											grouping: grouping,
											period: period
										}, function(res) {
											if (res.ok) {
												var table = $('#ips-data-template').tmpl(res);
												$(self).closest('.wf-ips').css('overflow-y', 'auto');
												$(self).closest('.wf-ips').find('table').replaceWith(table);
											}
											else {
												WFAD.colorboxModal('300px', <?php echo json_encode(__('An error occurred', 'wordfence')) ?>, <?php echo json_encode(__('We encountered an error trying load more data.', 'wordfence')) ?>);
												$(this).closest('.wf-dashboard-item-list-text').fadeIn();
											}
										});
									});
								})(jQuery);
							</script>
						</div>
					</li>
				</ul>
				<?php endif; ?>
			</div>
		</div>
	</div>
</div>
<script type="text/x-jquery-template" id="ips-data-template">
	<table class="wf-table wf-table-hover">
		<thead>
		<tr>
			<th><?php esc_html_e('IP', 'wordfence') ?></th>
			<th colspan="2"><?php esc_html_e('Country', 'wordfence') ?></th>
			<th><?php esc_html_e('Block Count', 'wordfence') ?></th>
		</tr>
		</thead>
		<tbody>
		{{each(idx, d) data}}
		<tr>
			<td>${d.IP}</td>
			<td>${d.countryName}</td>
			<td><span class="wf-flag ${d.countryFlag}" title="${d.countryName}"></td>
			<td>${d.blockCount}</td>
		</tr>
		{{/each}}
		</tbody>
	</table>
</script>lib/dashboard/widget_countries.php000064400000007201150755146450013344 0ustar00<?php if (!defined('WORDFENCE_VERSION')) { exit; } ?>
<?php //$d is defined here as a wfDashboard instance ?>
<div class="wf-row">
	<div class="wf-col-xs-12">
		<div class="wf-dashboard-item active">
			<div class="wf-dashboard-item-inner">
				<div class="wf-dashboard-item-content">
					<div class="wf-dashboard-item-title">
						<strong><?php esc_html_e('Top Countries by Number of Attacks - Last 7 Days', 'wordfence') ?></strong>
					</div>
					<div class="wf-dashboard-item-action"><div class="wf-dashboard-item-action-disclosure"></div></div>
				</div>
			</div>
			<div class="wf-dashboard-item-extra">
				<?php if ($firewall->learningModeStatus() !== false): ?>
					<div class="wf-widget-learning-mode"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100.11 100.44"><path d="M96.14,30.67a50.7,50.7,0,0,0-10.66-16A50,50,0,0,0,69.51,4,49.57,49.57,0,0,0,30.6,4a50,50,0,0,0-16,10.69A50.69,50.69,0,0,0,4,30.67,50,50,0,0,0,4,69.74a50.62,50.62,0,0,0,10.66,16,50,50,0,0,0,16,10.69,49.54,49.54,0,0,0,38.91,0,50,50,0,0,0,16-10.69,50.56,50.56,0,0,0,10.66-16,50,50,0,0,0,0-39.07Zm-75.74,39a35.77,35.77,0,0,1-1-37.35,35.21,35.21,0,0,1,12.91-13A34.65,34.65,0,0,1,50.06,14.6a34.22,34.22,0,0,1,19.55,5.93ZM82.71,64a35.4,35.4,0,0,1-7.56,11.37A36,36,0,0,1,63.84,83a34.32,34.32,0,0,1-13.79,2.84A34.85,34.85,0,0,1,30.7,80L79.84,31a34.57,34.57,0,0,1,5.67,19.23A35.17,35.17,0,0,1,82.71,64Zm0,0"/></svg><span><?php esc_html_e('No Data Available During Learning Mode', 'wordfence'); ?></span></div>
				<?php else: ?>
				<ul class="wf-dashboard-item-list">
					<li>
						<div>
							<?php if (isset($d->countriesNetwork) && count($d->countriesNetwork) > 0): ?>
							<div class="wf-dashboard-toggle-btns">
								<ul class="wf-pagination wf-pagination-sm">
									<li class="wf-active"><a href="#" class="wf-dashboard-countries" data-grouping="local" role="button">Local Site</a></li>
									<li><a href="#" class="wf-dashboard-countries" data-grouping="network" role="button"><?php esc_html_e('Wordfence Network', 'wordfence') ?></a></li>
								</ul>
							</div>
							<?php endif; ?>
							<div class="wf-countries wf-countries-local">
								<?php if (!isset($d->countriesLocal) || count($d->countriesLocal) == 0): ?>
									<div class="wf-dashboard-item-list-text"><p><em><?php esc_html_e('No blocks have been recorded.', 'wordfence') ?></em></p></div>
								<?php else: ?>
									<?php $data = array_slice($d->countriesLocal, 0, min(10, count($d->countriesLocal)), true); include(dirname(__FILE__) . '/widget_content_countries.php'); ?>
								<?php endif; ?>
							</div>
							<div class="wf-countries wf-countries-network wf-hidden">
								<?php if (!isset($d->countriesNetwork) || count($d->countriesNetwork) == 0): ?>
									<div class="wf-dashboard-item-list-text"><p><em><?php esc_html_e('No blocks have been recorded.', 'wordfence') ?></em></p></div>
								<?php else: ?>
									<?php $data = array_slice($d->countriesNetwork, 0, min(10, count($d->countriesNetwork)), true); include(dirname(__FILE__) . '/widget_content_countries.php'); ?>
								<?php endif; ?>
							</div>
							<script type="application/javascript">
								(function($) {
									$('.wf-dashboard-countries').on('click', function(e) {
										e.preventDefault();
										e.stopPropagation();

										$(this).closest('ul').find('li').removeClass('wf-active');
										$(this).closest('li').addClass('wf-active');

										$('.wf-countries').addClass('wf-hidden');
										$('.wf-countries-' + $(this).data('grouping')).removeClass('wf-hidden');
									});
								})(jQuery);
							</script>
						</div>
					</li>
				</ul>
				<?php endif; ?>
			</div>
		</div>
	</div>
</div>lib/dashboard/widget_notifications.php000064400000017206150755146450014210 0ustar00<?php if (!defined('WORDFENCE_VERSION')) { exit; } ?>
<div class="wf-flex-row wf-flex-row-full-height wf-flex-row-vertical-xs">
	<div class="wf-flex-col-xs-100 <?php if (wfCentral::isSupported() && wfConfig::get('showWfCentralUI', false)): ?>wf-flex-col-lg-50 wf-col-lg-half-padding-right wf-dashboard-item-flex-wrapper<?php endif ?>">
		<div class="wf-dashboard-item active">
			<div class="wf-dashboard-item-inner">
				<div class="wf-dashboard-item-content">
					<div class="wf-dashboard-item-title">
						<strong><?php esc_html_e('Notifications', 'wordfence') ?></strong><span class="wf-dashboard-badge wf-notification-count-container wf-notification-count-value<?php echo (count($d->notifications) == 0 ? ' wf-hidden' : ''); ?>"><?php echo number_format_i18n(count($d->notifications)); ?></span>
					</div>
					<div class="wf-dashboard-item-action"><div class="wf-dashboard-item-action-disclosure"></div></div>
				</div>
			</div>
			<div class="wf-dashboard-item-extra">
				<ul class="wf-dashboard-item-list wf-dashboard-item-list-striped">
					<?php foreach ($d->notifications as $n): ?>
						<li class="wf-notification<?php if ($n->priority % 10 == 1) { echo ' wf-notification-critical'; } else if ($n->priority % 10 == 2) { echo ' wf-notification-warning'; } ?>" data-notification="<?php echo esc_html($n->id); ?>">
							<div class="wf-dashboard-item-list-title"><?php echo $n->html; ?></div>
							<?php foreach ($n->links as $l): ?>
								<div class="wf-dashboard-item-list-action"><a href="<?php echo esc_html($l['link']); ?>"<?php if (preg_match('/^https?:\/\//i', $l['link'])) { echo ' target="_blank" rel="noopener noreferrer"'; } ?>><?php echo esc_html($l['label']); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></div>
							<?php endforeach; ?>
							<div class="wf-dashboard-item-list-dismiss"><a href="#" class="wf-dismiss-notification" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
						</li>
					<?php endforeach; ?>
					<?php if (count($d->notifications) == 0): ?>
						<li class="wf-notifications-empty"><?php esc_html_e('No notifications received', 'wordfence') ?></li>
					<?php endif; ?>
				</ul>
			</div>
		</div>
	</div>
	<?php if (wfCentral::isSupported() && wfConfig::get('showWfCentralUI', false)): ?>
		<div class="wf-flex-col-xs-100 wf-flex-col-lg-50 wf-col-lg-half-padding-left wf-dashboard-item-flex-wrapper wf-central-connected">
			<div class="wf-dashboard-item active wf-flex-row-1">
				<div class="wf-central-dashboard">
					<img class="wf-central-dashboard-logo" src="<?php echo wfUtils::getBaseURL() ?>images/wf-central-logo.svg" alt="Wordfence Central">
					<div class="wf-central-dashboard-copy">
						<p id="wf-central-status"><strong><?php esc_html_e('Wordfence Central Status', 'wordfence') ?></strong></p>
						<p><?php
							if ($d->wordfenceCentralConnected) {
								echo esc_html(sprintf(
								/* translators: 1. Email address. 2. Localized date. */
										__('Connected by %1$s on %2$s', 'wordfence'), $d->wordfenceCentralConnectEmail, date_i18n(get_option('date_format'), $d->wordfenceCentralConnectTime)));
							} elseif ($d->wordfenceCentralDisconnected) {
								echo esc_html(sprintf(
								/* translators: 1. Email address. 2. Localized date. */
										__('Disconnected by %1$s on %2$s', 'wordfence'), $d->wordfenceCentralDisconnectEmail, date_i18n(get_option('date_format'), $d->wordfenceCentralDisconnectTime)));
							} elseif (wfCentral::isPartialConnection()) {
								_e('It looks like you\'ve tried to connect this site to Wordfence Central, but the installation did not finish.', 'wordfence');
							} else {
								_e('Wordfence Central allows you to manage Wordfence on multiple sites from one location. It makes security monitoring and configuring Wordfence easier.', 'wordfence');
							}
						?></p>
						<div class="wf-flex-row">
							<?php if (wfCentral::isPartialConnection()): ?>
								<p>
									<a href="<?php echo WORDFENCE_CENTRAL_URL_SEC ?>/sites/connection-issues?complete-setup=<?php echo esc_attr(wfConfig::get('wordfenceCentralSiteID')) ?>"
											class="wf-central-resume wf-btn wf-btn-sm wf-btn-primary"
									><?php esc_html_e('Resume Installation', 'wordfence') ?></a>
									<a href="#" class="wf-central-disconnect wf-btn wf-btn-sm wf-btn-default" role="button"><strong><?php esc_html_e('Disconnect This Site', 'wordfence') ?></strong></a>
								</p>
							<?php else: ?>
								<p class="wf-flex-row-1">
									<?php if ($d->wordfenceCentralConnected): ?>
										<a href="#" class="wf-central-disconnect" role="button"><strong><?php esc_html_e('Disconnect This Site', 'wordfence') ?></strong></a>
									<?php else: ?>
										<a href="<?php echo WORDFENCE_CENTRAL_URL_SEC ?>?newsite=<?php echo esc_attr(home_url()) ?>"><strong><?php $d->wordfenceCentralDisconnected ? esc_html_e('Reconnect This Site', 'wordfence') : esc_html_e('Connect This Site', 'wordfence') ?></strong></a>
									<?php endif; ?>
								</p>
								<p class="wf-flex-row-1 wf-right wf-nowrap"><a href="<?php echo esc_url(WORDFENCE_CENTRAL_URL_SEC) ?>" target="_blank" rel="noopener noreferrer"><strong><?php esc_html_e('Visit Wordfence Central', 'wordfence') ?></strong><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></p>
							<?php endif ?>

						</div>
					</div>
				</div>
			</div>
		</div>
	<?php endif ?>
</div>
<script type="application/javascript">
	(function($) {
		$('.wf-dismiss-notification').on('click', function(e) {
			e.preventDefault();
			e.stopPropagation();
			
			var n = $(this).closest('.wf-notification');
			var id = n.data('notification');
			n.fadeOut(400, function() {
				n.remove();
				
				var count = $('.wf-dismiss-notification').length;
				WFDash.updateNotificationCount(count);
			});
			
			WFAD.ajax('wordfence_dismissNotification', {
				id: id
			}, function(res) {
				//Do nothing
			});
		});

		$('.wf-central-disconnect').on('click', function(e) {
			e.preventDefault();

			var prompt = $('#wfTmpl_wfCentralDisconnectPrompt').tmpl();
			var promptHTML = $("<div />").append(prompt).html();
			WFAD.colorboxHTML('400px', promptHTML, {
				overlayClose: false, closeButton: false, className: 'wf-modal', onComplete: function() {
					$('#wf-central-prompt-cancel').on('click', function(e) {
						e.preventDefault();
						e.stopPropagation();

						WFAD.colorboxClose();
					});

					$('#wf-central-prompt-disconnect').on('click', function(e) {
						e.preventDefault();
						e.stopPropagation();
						WFAD.colorboxClose();
						WFAD.ajax('wordfence_wfcentral_disconnect', {}, function(response) {
							var onClosed = function() { window.location.reload(true); };
							if (response && response.success && response.message && response.title) {
								WFAD.colorboxModal(
									(self.isSmallScreen ? '300px' : '400px'),
									response.title,
									response.message,
									{
										onClosed: onClosed
									}
								);
							}
							else {
								onClosed();
							}
						});
					});
				}
			});

			return false;
		});
	})(jQuery);
</script>
<script type="text/x-jquery-template" id="wfTmpl_wfCentralDisconnectPrompt">
	<?php
	echo wfView::create('common/modal-prompt', array(
		'title'            => __('Confirm Disconnect', 'wordfence'),
		'message'          => __('Are you sure you want to disconnect your site from Wordfence Central?', 'wordfence'),
		'primaryButton'    => array('id' => 'wf-central-prompt-cancel', 'label' => __('Cancel', 'wordfence'), 'link' => '#'),
		'secondaryButtons' => array(array('id' => 'wf-central-prompt-disconnect', 'label' => __('Disconnect', 'wordfence'), 'link' => '#')),
	))->render();
	?>
</script>lib/dashboard/widget_content_countries.php000064400000001547150755146450015105 0ustar00<?php if (!defined('WORDFENCE_VERSION')) { exit; } ?>
<?php //$data is defined here as an array of login attempts: array('IP' => binary ip, 'countryCode' => string, 'blockCount' => int, 'unixday' => int, 'totalIPs' => int, 'totalBlockCount' => int, 'countryName' => string) ?>
<table class="wf-table wf-table-hover">
	<thead>
		<tr>
			<th colspan="2"><?php esc_html_e('Country', 'wordfence') ?></th>
			<th><?php esc_html_e('Block Count', 'wordfence') ?></th>
		</tr>
	</thead>
	<tbody>
	<?php foreach ($data as $l): ?>
		<tr>
			<td><?php echo esc_html($l['countryName']); ?></td>
			<td><span class="wf-flag <?php echo esc_attr('wf-flag-' . strtolower($l['countryCode'])); ?>" title="<?php echo esc_attr($l['countryName']); ?>"></span></td>
			<td><?php echo esc_html(number_format_i18n($l['totalBlockCount'])); ?></td>
		</tr>
	<?php endforeach; ?>
	</tbody>
</table>lib/wfAPI.php000064400000023241150755146450007007 0ustar00<?php
require_once(dirname(__FILE__) . '/wordfenceConstants.php');
require_once(dirname(__FILE__) . '/wordfenceClass.php');
require_once(dirname(__FILE__) . '/wfLicense.php');

class wfAPI {

	public $lastHTTPStatus = '';
	public $lastCurlErrorNo = '';
	private $curlContent = 0;
	private $APIKey = '';
	private $wordpressVersion = '';

	public function __construct($apiKey, $wordpressVersion) {
		$this->APIKey = $apiKey;
		$this->wordpressVersion = $wordpressVersion;
	}

	public function getStaticURL($url) { // In the form '/something.bin' without quotes
		return $this->getURL(rtrim($this->getAPIURL(), '/') . '/' . ltrim($url, '/'));
	}

	public function call($action, $getParams = array(), $postParams = array(), $forceSSL = false, $timeout = 900) {
		$apiURL = $this->getAPIURL();
		//Sanity check. Developer should call wfAPI::SSLEnabled() to check if SSL is enabled before forcing SSL and return a user friendly msg if it's not.
		if ($forceSSL && (!preg_match('/^https:/i', $apiURL))) {
			//User's should never see this message unless we aren't calling SSLEnabled() to check if SSL is enabled before using call() with forceSSL
			throw new wfAPICallSSLUnavailableException(__("SSL is not supported by your web server and is required to use this function. Please ask your hosting provider or site admin to install cURL with openSSL to use this feature.", 'wordfence'));
		}
		$json = $this->getURL(rtrim($apiURL, '/') . '/v' . WORDFENCE_API_VERSION . '/?' . $this->makeAPIQueryString() . '&' . self::buildQuery(
				array_merge(
					array('action' => $action),
					$getParams
				)), $postParams, $timeout);
		if (!$json) {
			throw new wfAPICallInvalidResponseException(sprintf(/* translators: API call/action/endpoint. */__("We received an empty data response from the Wordfence scanning servers when calling the '%s' function.", 'wordfence'), $action));
		}

		$dat = json_decode($json, true);

		if (!is_array($dat)) {
			throw new wfAPICallInvalidResponseException(sprintf(/* translators: API call/action/endpoint. */ __("We received a data structure that is not the expected array when contacting the Wordfence scanning servers and calling the '%s' function.", 'wordfence'), $action));
		}

		//Only process key data for responses that include it
		if (array_key_exists('_isPaidKey', $dat))
			$this->processKeyData($dat);
		
		if (isset($dat['_touppChanged'])) {
			wfConfig::set('touppPromptNeeded', wfUtils::truthyToBoolean($dat['_touppChanged']));
		}

		if (isset($dat['errorMsg'])) {
			throw new wfAPICallErrorResponseException($dat['errorMsg']);
		}

		return $dat;
	}

	private function processKeyData($dat) {
		$license = wfLicense::current()
			->setApiKey($this->APIKey)
			->setPaid($dat['_isPaidKey'])
			->setRemainingDays($dat['_keyExpDays'])
			->setType(array_key_exists('_licenseType', $dat) ? $dat['_licenseType'] : null);

		if (isset($dat['_isPaidKey']) && !isset($dat['errorMsg'])) {
			wfConfig::setOrRemove('premiumAutoRenew', isset($dat['_autoRenew']) ? wfUtils::truthyToInt($dat['_autoRenew']) : null);
			wfConfig::setOrRemove('premiumNextRenew', isset($dat['_nextRenewAttempt']) ? time() + $dat['_nextRenewAttempt'] * 86400 : null);
			wfConfig::setOrRemove('premiumPaymentExpiring', isset($dat['_paymentExpiring']) ? wfUtils::truthyToInt($dat['_paymentExpiring']) : null);
			wfConfig::setOrRemove('premiumPaymentExpired', isset($dat['_paymentExpired']) ? wfUtils::truthyToInt($dat['_paymentExpired']) : null);
			wfConfig::setOrRemove('premiumPaymentMissing', isset($dat['_paymentMissing']) ? wfUtils::truthyToInt($dat['_paymentMissing']) : null);
			wfConfig::setOrRemove('premiumPaymentHold', isset($dat['_paymentHold']) ? wfUtils::truthyToInt($dat['_paymentHold']) : null);	
		}
		
		$hasKeyConflict = false;
		if (isset($dat['_hasKeyConflict'])) {
			$hasKeyConflict = ($dat['_hasKeyConflict'] == 1);
			if ($hasKeyConflict) {
				new wfNotification(null, wfNotification::PRIORITY_HIGH_CRITICAL, '<a href="' . wfUtils::wpAdminURL('admin.php?page=Wordfence&subpage=global_options') . '">' . esc_html__('The Wordfence license you\'re using does not match this site\'s address. Premium features are disabled.', 'wordfence') . '</a>', 'wfplugin_keyconflict', null, array(array('link' => 'https://www.wordfence.com/manage-wordfence-api-keys/', 'label' => 'Manage Keys')));
				$license->setConflicting();
			}
		}
		
		$license->setDeleted(isset($dat['_keyNoLongerValid']) && $dat['_keyNoLongerValid'] == 1);
		
		if (!$hasKeyConflict) {
			$license->setConflicting(false);
			$n = wfNotification::getNotificationForCategory('wfplugin_keyconflict');
			if ($n !== null) {
				wordfence::status(1, 'info', 'Idle');
				$n->markAsRead();
			}
		}

		$license->save(isset($dat['errorMsg']));
	}

	protected function getURL($url, $postParams = array(), $timeout = 900) {
		wordfence::status(4, 'info', sprintf(/* translators: API version. */ __("Calling Wordfence API v%s:", 'wordfence'), WORDFENCE_API_VERSION) . $url);

		if (!function_exists('wp_remote_post')) {
			require_once(ABSPATH . WPINC . 'http.php');
		}

		$ssl_verify = (bool) wfConfig::get('ssl_verify');
		$args = array(
			'timeout'    => $timeout,
			'user-agent' => "Wordfence.com UA " . (defined('WORDFENCE_VERSION') ? WORDFENCE_VERSION : '[Unknown version]'),
			'body'       => $postParams,
			'sslverify'  => $ssl_verify,
			'headers'	 => array('Referer' => false),
		);
		if (!$ssl_verify) {
			// Some versions of cURL will complain that SSL verification is disabled but the CA bundle was supplied.
			$args['sslcertificates'] = false;
		}

		$response = wp_remote_post($url, $args);

		$this->lastHTTPStatus = (int) wp_remote_retrieve_response_code($response);

		if (is_wp_error($response)) {
			$error_message = $response->get_error_message();
			if ($error_message) {
				$apiExceptionMessage = sprintf(/* translators: Error message. */ __('There was an error connecting to the Wordfence scanning servers: %s', 'wordfence'), $error_message);
			} else {
				$apiExceptionMessage = __('There was an unknown error connecting to the Wordfence scanning servers.', 'wordfence');
			}

			throw new wfAPICallFailedException($apiExceptionMessage);
		}
		
		$dateHeader = @$response['headers']['date'];
		if (!empty($dateHeader) && (time() - wfConfig::get('timeoffset_wf_updated', 0) > 3600)) {
			if (function_exists('date_create_from_format')) {
				$dt = DateTime::createFromFormat('D, j M Y G:i:s O', $dateHeader);
				$timestamp = $dt->getTimestamp();
			}
			else {
				$timestamp = strtotime($dateHeader);
			}
			$offset = $timestamp - time();
			wfConfig::set('timeoffset_wf', $offset);
			wfConfig::set('timeoffset_wf_updated', time());
		}

		if (!empty($response['response']['code'])) {
			$this->lastHTTPStatus = (int) $response['response']['code'];
		}

		if (200 != $this->lastHTTPStatus) {
			throw new wfAPICallFailedException(sprintf(/* translators: HTTP status code. */__("The Wordfence scanning servers are currently unavailable. This may be for maintenance or a temporary outage. If this still occurs in an hour, please contact support. [%s]", 'wordfence'), $this->lastHTTPStatus));
		}

		$content = wp_remote_retrieve_body($response);
		return $content;
	}

	public function binCall($func, $postData) {
		$url = rtrim($this->getAPIURL(), '/') . '/v' . WORDFENCE_API_VERSION . '/?' . $this->makeAPIQueryString() . '&action=' . $func;

		$data = $this->getURL($url, $postData);

		if (preg_match('/\{.*errorMsg/', $data)) {
			$jdat = @json_decode($data, true);
			if (is_array($jdat) && $jdat['errorMsg']) {
				throw new Exception($jdat['errorMsg']);
			}
		}
		return array('code' => $this->lastHTTPStatus, 'data' => $data);
	}

	public static function generateSiteStats($wordpressVersion = null) {
		if ($wordpressVersion === null)
			$wordpressVersion = wfUtils::getWPVersion();
		$cv = null;
		$cs = null;
		if (function_exists('curl_version')) {
			$curl = curl_version();
			$cv = $curl['version'];
			$cs = $curl['ssl_version'];
		}
		
		$values = array(
			'wp' => $wordpressVersion,
			'wf' => WORDFENCE_VERSION,
			'ms' => (is_multisite() ? get_blog_count() : false),
			'h' => wfUtils::wpHomeURL(),
			'sslv' => function_exists('openssl_verify') && defined('OPENSSL_VERSION_NUMBER') ? OPENSSL_VERSION_NUMBER : null,
			'pv' => phpversion(),
			'pt' => php_sapi_name(),
			'cv' => $cv,
			'cs' => $cs,
			'sv' => (isset($_SERVER['SERVER_SOFTWARE']) ? $_SERVER['SERVER_SOFTWARE'] : null),
			'dv' => wfConfig::get('dbVersion', null),
			'lang' => get_site_option('WPLANG'),
		);

		return wfUtils::base64url_encode(wfUtils::jsonEncodeSafely($values));
	}

	public function makeAPIQueryString() {
		return self::buildQuery(array(
			'k' => $this->APIKey,
			's' => self::generateSiteStats($this->wordpressVersion)
		));
	}

	private function buildQuery($data) {
		if (version_compare(phpversion(), '5.1.2', '>=')) {
			return http_build_query($data, '', '&'); //arg_separator parameter was only added in PHP 5.1.2. We do this because some PHP.ini's have arg_separator.output set to '&amp;'
		} else {
			return http_build_query($data);
		}
	}

	private function getAPIURL() {
		return self::SSLEnabled() ? WORDFENCE_API_URL_SEC : WORDFENCE_API_URL_NONSEC;
	}

	public static function SSLEnabled() {
		if (!function_exists('wp_http_supports')) {
			require_once(ABSPATH . WPINC . 'http.php');
		}
		return wp_http_supports(array('ssl'));
	}
	
	public function getTextImageURL($text) {
		$apiURL = $this->getAPIURL();
		return rtrim($apiURL, '/') . '/v' . WORDFENCE_API_VERSION . '/?' . $this->makeAPIQueryString() . '&' . self::buildQuery(array('action' => 'image', 'txt' => base64_encode($text)));
	}
}

class wfAPICallSSLUnavailableException extends Exception {
}

class wfAPICallFailedException extends Exception {
}

class wfAPICallInvalidResponseException extends Exception {
}

class wfAPICallErrorResponseException extends Exception {
}lib/menu_dashboard.php000064400000067777150755146450011042 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
$firewall = new wfFirewall();
$scanner = wfScanner::shared();
$d = new wfDashboard();
?>
<?php
if (!wfOnboardingController::shouldShowAttempt3() && wfConfig::get('touppPromptNeeded')) {
	echo wfView::create('gdpr/disabled-overlay')->render();
	echo wfView::create('gdpr/banner')->render();
}
?>
<div class="wrap wordfence" id="wf-dashboard">
	<div class="wf-container-fluid">
		<div class="wf-row">
			<div class="wf-col-xs-12">
				<div class="wp-header-end"></div>
				<?php
				echo wfView::create('common/section-title', array(
					'title' => __('Wordfence Dashboard', 'wordfence'),
					'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_DASHBOARD),
					'helpLabelHTML' => wp_kses(__('Learn more<span class="wf-hidden-xs"> about the Dashboard</span>', 'wordfence'), array('span'=>array('class'=>array()))),
					'showIcon' => true,
				))->render();
				?>
			</div>
		</div>
		<div class="wf-row">
			<div class="wf-col-xs-12">
				<div class="wf-block wf-active wf-add-bottom">
					<div class="wf-block-content">
						<ul class="wf-block-list">
							<li>
								<?php
								echo wfView::create('dashboard/global-status', array(
									'firewall' => $firewall,
									'scanner' => $scanner,
									'dashboard' => $d,
								))->render();
								?>
							</li>
							<li>
								<ul class="wf-block-list wf-block-list-horizontal wf-block-list-nowrap wf-waf-coverage">
									<li>
										<?php
										echo wfView::create('common/status-detail', array(
											'id' => 'waf-coverage',
											'percentage' => $firewall->overallStatus(),
											'activeColor' => ($firewall->firewallMode() == wfFirewall::FIREWALL_MODE_LEARNING ? '#ececec' : null /* automatic */),
											'title' => __('Firewall', 'wordfence'),
											'subtitle' => ($firewall->firewallMode() == wfFirewall::FIREWALL_MODE_LEARNING ? __('WAF Currently in Learning Mode', 'wordfence') : __('Protection from known and emerging threats', 'wordfence')),
											'link' => wfPage::pageURL(wfPage::PAGE_FIREWALL_OPTIONS, wfPage::PAGE_DASHBOARD),
											'linkLabel' => __('Manage Firewall', 'wordfence'),
											'statusTitle' => __('Firewall Status', 'wordfence'),
											'statusList' => $firewall->statusList(),
											'statusExtra' => ($firewall->firewallMode() == wfFirewall::FIREWALL_MODE_LEARNING ? wfView::create('waf/status-tooltip-learning-mode')->render() : ''),
											'helpLink' => __('https://www.wordfence.com/help/dashboard/#dashboard-status', 'wordfence'),
										))->render();
										?>
									</li>
									<li>
										<?php
										echo wfView::create('common/status-detail', array(
											'id' => 'wf-scanner-type',
											'percentage' => $scanner->scanTypeStatus(),
											'activeColor' => (!$scanner->isEnabled() ? '#ececec' : null /* automatic */),
											'title' => __('Scan', 'wordfence'),
											'subtitle' => __('Detection of security issues', 'wordfence'),
											'link' => wfPage::pageURL(wfPage::PAGE_SCAN_OPTIONS, wfPage::PAGE_DASHBOARD),
											'linkLabel' => __('Manage Scan', 'wordfence'),
											'statusTitle' => __('Scan Status', 'wordfence'),
											'statusList' => $scanner->scanTypeStatusList(),
											'helpLink' => __('https://www.wordfence.com/help/dashboard/#dashboard-status', 'wordfence'),
										))->render();
										?>
									</li>
									<li>
										<?php if (wfConfig::get('hasKeyConflict')): ?>
											<?php
											echo wfView::create('common/status-critical', array(
												'id' => 'wf-premium-alert',
												'title' => __('Premium License Conflict', 'wordfence'),
												'subtitle' => __('License already in use', 'wordfence'),
												'link' => 'https://www.wordfence.com/gnl1manageConflict/manage-wordfence-api-keys/',
												'linkLabel' => __('Reset License', 'wordfence'),
												'linkNewWindow' => true,
											))->render();
											?>
										<?php elseif (wfConfig::get('keyType') == wfLicense::KEY_TYPE_PAID_EXPIRED): ?>
											<?php
											echo wfView::create('common/status-critical', array(
												'id' => 'wf-premium-alert',
												'title' => __('Premium Protection Disabled', 'wordfence'),
												'subtitle' => __('License is expired', 'wordfence'),
												'link' => 'https://www.wordfence.com/gnl1renewExpired/manage-wordfence-api-keys/',
												'linkLabel' => __('Renew License', 'wordfence'),
												'linkNewWindow' => true,
											))->render();
											?>
										<?php elseif (wfConfig::get('keyType') == wfLicense::KEY_TYPE_PAID_DELETED): ?>
											<?php
											echo wfView::create('common/status-critical', array(
												'id' => 'wf-premium-alert',
												'title' => __('Premium Protection Disabled', 'wordfence'),
												'subtitleHtml' => wp_kses(__('The license you were using has been removed from your account. Please reach out to <a href="mailto:billing@wordfence.com">billing@wordfence.com</a> or create a Premium support case at <a href="https://support.wordfence.com/support/tickets" target="_blank">https://support.wordfence.com/support/tickets<span class="screen-reader-text"> (opens in new tab)</span></a> for more information. Our staff is happy to help.', 'wordfence'), array('a'=>array('href'=>array(), 'target'=>array()), 'span'=>array('class'=>array()))),
												'link' => null,
												'linkLabel' => null
											))->render();
											?>
										<?php elseif (wfConfig::get('keyType') == wfLicense::KEY_TYPE_FREE || wfConfig::get('keyType') === false): ?>
											<div>
												<p><h3><?php esc_html_e('Premium Protection Disabled', 'wordfence'); ?></h3></p>
												<p><?php esc_html_e('As a free Wordfence user, you are currently using the Community version of the Threat Defense Feed. Premium users are protected by additional firewall rules and malware signatures. Upgrade to Premium today to improve your protection.', 'wordfence'); ?></p>
												<p><a class="wf-btn wf-btn-primary wf-btn-callout-subtle" href="https://www.wordfence.com/gnl1dashboardUpgrade/products/wordfence-premium/" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Upgrade to Premium', 'wordfence'); ?></a>&nbsp;&nbsp;<a class="wf-btn wf-btn-callout-subtle wf-btn-default" href="https://www.wordfence.com/gnl1dashboardLearn/products/pricing/" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Learn More', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></p>
											</div>
										<?php elseif (wfConfig::get('keyExpDays') < 30 && (wfConfig::get('premiumAutoRenew', null) === '0' || wfConfig::get('premiumAutoRenew', null) === 0)): ?>
											<?php
											echo wfView::create('common/status-critical', array(
												'id' => 'wf-premium-alert',
												'title' => __('Premium License Expiring', 'wordfence'),
												'subtitle' => __('Auto-renew is disabled', 'wordfence'),
												'link' => 'https://www.wordfence.com/gnl1renewExpiring/manage-wordfence-api-keys/',
												'linkLabel' => __('Renew License', 'wordfence'),
												'linkNewWindow' => true,
											))->render();
											?>
										<?php elseif (wfConfig::get('keyExpDays') < 30): ?>
											<?php
											if (wfConfig::get('premiumPaymentExpiring')) {
												$title = __('Payment Method Expiring', 'wordfence');
											}
											else if (wfConfig::get('premiumPaymentExpired')) {
												$title = __('Payment Method Expired', 'wordfence');
											}
											else if (wfConfig::get('premiumPaymentMissing')) {
												$title = __('Payment Method Missing', 'wordfence');
											}
											else if (wfConfig::get('premiumPaymentHold')) {
												$title = __('Payment Method Invalid', 'wordfence');
											}
											
											if (isset($title)) {
												$days = floor(((int) wfConfig::get('premiumNextRenew') - time()) / 86400);
												if ($days <= 0) {
													$subtitle = __('License renews today', 'wordfence');
												}
												else if ($days == 1) {
													$subtitle = __('License renews tomorrow', 'wordfence');
												}
												else {
													$subtitle = sprintf(
															/* translators: Number of days */
															__('License renews in %d days', 'wordfence'), $days);
												}
												
												echo wfView::create('dashboard/status-payment-expiring', array(
													'id' => 'wf-premium-alert',
													'title' => $title,
													'subtitle' => $subtitle,
													'link' => 'https://www.wordfence.com/gnl1renewExpiring/manage-wordfence-api-keys/',
													'linkLabel' => __('Update Payment Method', 'wordfence'),
													'linkNewWindow' => true,
												))->render();
											}
											else {
												$days = floor(((int) wfConfig::get('premiumNextRenew') - time()) / 86400);
												if ($days == 0) {
													$subtitle = __('License renews today', 'wordfence');
												}
												else if ($days == 1) {
													$subtitle = __('License renews in 1 day', 'wordfence');
												}
												else {
													$subtitle = sprintf(__('License renews in %d days', 'wordfence'), $days);
												}
												
												echo wfView::create('dashboard/status-renewing', array(
													'id' => 'wf-premium-alert',
													'title' => __('Premium License Expiring', 'wordfence'), 
													'subtitle' => $subtitle,
													'link' => 'https://www.wordfence.com/gnl1reviewExpiring/manage-wordfence-api-keys/',
													'linkLabel' => __('Review Payment Method', 'wordfence'),
													'linkNewWindow' => true,
												))->render();
											}
											?>
										<?php elseif (wfLicense::current()->isPaidAndCurrent()): ?>
											<div class="wf-block-labeled-value wf-protection-status wf-protection-status-<?php echo esc_attr($firewall->ruleMode()); ?>">
												<div class="wf-block-labeled-value-value"><i class="wf-fa wf-fa-check" aria-hidden="true"></i></div>
												<div class="wf-block-labeled-value-label"><?php echo esc_html(sprintf(__('%s Enabled', 'wordfence'), wfLicense::current()->getTypeLabel(true))); ?></div>
												<?php if (wfLicense::current()->isBelowResponse()): ?>
													<p>
													<?php if (wfLicense::current()->isBelowCare()): ?>
														<a href="https://www.wordfence.com/gnl1dashboardLearnCareResponse/products/pricing/"><?php esc_html_e('Learn about Wordfence Care and Wordfence Response', 'wordfence') ?></a>
													<?php else: ?>
														<a href="https://www.wordfence.com/gnl1dashboardLearnResponse/products/wordfence-response/"><?php esc_html_e('Learn about Wordfence Response', 'wordfence') ?></a>
													<?php endif ?>
													</p>
												<?php endif ?>
											</div> 
										<?php endif; ?>
									</li>
								</ul>
							</li>
						</ul>
					</div>
				</div>
			</div>
		</div>
		<!-- begin notifications -->
		<?php include(dirname(__FILE__) . '/dashboard/widget_notifications.php'); ?>
		<!-- end notifications -->
		<div class="wf-row">
			<div class="wf-col-xs-12">
				<div class="wf-block wf-active wf-add-bottom">
					<div class="wf-block-content">
						<ul class="wf-block-list">
							<li>
								<ul class="wf-block-list wf-block-list-horizontal wf-dashboard-navigation">
									<li>
										<?php
										echo wfView::create('common/block-navigation-option', array(
											'id' => 'wf-dashboard-option-tools',
											'img' => 'tools.svg',
											'title' => __('Tools', 'wordfence'),
											'subtitle' => __('Live Traffic, Whois Lookup, Import/Export, and Diagnostics', 'wordfence'),
											'link' => network_admin_url('admin.php?page=WordfenceTools'),
										))->render();
										?>
									</li>
									<li>
										<?php
										echo wfView::create('common/block-navigation-option', array(
											'id' => 'wf-dashboard-option-support',
											'img' => 'support.svg',
											'title' => __('Help', 'wordfence'),
											'subtitle' => __('Find the documentation and help you need', 'wordfence'),
											'link' => network_admin_url('admin.php?page=WordfenceSupport'),
										))->render();
										?>
									</li>
									<li>
										<?php
										echo wfView::create('common/block-navigation-option', array(
											'id' => 'wf-dashboard-option-options',
											'img' => 'options.svg',
											'title' => __('Global Options', 'wordfence'),
											'subtitle' => __('Manage global options for Wordfence such as alerts, premium status, and more', 'wordfence'),
											'link' => network_admin_url('admin.php?page=Wordfence&subpage=global_options'),
										))->render();
										?>
									</li>
								</ul>
							</li>
						</ul>
					</div>
				</div>
			</div>
		</div>
		<div class="wf-row">
			<div class="wf-col-xs-12 wf-col-lg-6 wf-col-lg-half-padding-right">
				<!-- begin firewall summary site -->
				<?php include(dirname(__FILE__) . '/dashboard/widget_localattacks.php'); ?>
				<!-- end firewall summary site -->
			</div> <!-- end content block -->
			<div class="wf-col-xs-12 wf-col-lg-6 wf-col-lg-half-padding-left">
				<!-- begin total attacks blocked network -->
				<?php include(dirname(__FILE__) . '/dashboard/widget_networkattacks.php'); ?>
				<!-- end total attacks blocked network -->
			</div> <!-- end content block -->
		</div> <!-- end row -->
	</div> <!-- end container -->
</div>

<?php if (wfOnboardingController::willShowNewTour(wfOnboardingController::TOUR_DASHBOARD)): ?>
<script type="application/javascript">
	(function($) {
		$(function() {
			WFAD.tour1 = function() {
				WFAD.tour('wfNewTour1', 'wfStatusTourMarker', 'top', 'left', null, WFAD.tour2);
			};
			WFAD.tour2 = function() {
				WFAD.tour('wfNewTour2', 'waf-coverage', 'top', 'left', WFAD.tour1, WFAD.tour3);
			};
			WFAD.tour3 = function() {
				WFAD.tour('wfNewTour3', 'wf-dashboard-option-options', 'right', 'right', WFAD.tour2, WFAD.tourComplete);
			};
			WFAD.tourComplete = function() { WFAD.tourFinish('<?php echo esc_attr(wfOnboardingController::TOUR_DASHBOARD); ?>'); };
			
			<?php if (wfOnboardingController::shouldShowNewTour(wfOnboardingController::TOUR_DASHBOARD) && !isset($_GET['onboarding'])): ?>
			if (!WFAD.isSmallScreen) { WFAD.tour1(); }
			<?php endif; ?>
		});
	})(jQuery);
</script>

<script type="text/x-jquery-template" id="wfNewTour1">
	<div>
		<h3><?php esc_html_e('This is your Dashboard', 'wordfence'); ?></h3>
		<p><?php esc_html_e('The Wordfence Dashboard provides valuable insights into the current state of your site\'s security. You\'ll find useful data summarized here as well as important status updates and notifications.', 'wordfence'); ?></p>
		<div class="wf-pointer-footer">
			<ul class="wf-tour-pagination">
				<li class="wf-active">&bullet;</li>
				<li>&bullet;</li>
				<li>&bullet;</li>
			</ul>
			<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Next', 'wordfence'); ?></a></div>
		</div>
		<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
	</div>
</script>
<script type="text/x-jquery-template" id="wfNewTour2">
	<div>
		<h3><?php esc_html_e('Easily Monitor Your Wordfence Protection', 'wordfence'); ?></h3>
		<p><?php esc_html_e('Each feature contains a status that reminds you what\'s enabled, disabled or needs attention. The Notifications section will highlight actions you need to take.', 'wordfence'); ?></p>
		<div class="wf-pointer-footer">
			<ul class="wf-tour-pagination">
				<li>&bullet;</li>
				<li class="wf-active">&bullet;</li>
				<li>&bullet;</li>
			</ul>
			<div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default" role="button"><?php esc_html_e('Previous', 'wordfence'); ?></a></div>
			<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Next', 'wordfence'); ?></a></div>
		</div>
		<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
	</div>
</script>
<script type="text/x-jquery-template" id="wfNewTour3">
	<div>
		<h3><?php esc_html_e('Global Wordfence Options', 'wordfence'); ?></h3>
		<p class="wf-center"><svg viewBox="0 0 100.11 100.11" class="wf-icon"><path d="M99.59,41.42a2.06,2.06,0,0,0-1.37-.82L86.3,38.78a39.34,39.34,0,0,0-2.67-6.39q1.17-1.63,3.52-4.6t3.32-4.33A2.52,2.52,0,0,0,91,22a2.1,2.1,0,0,0-.46-1.43Q88.18,17.2,79.78,9.45a2.52,2.52,0,0,0-1.63-.65,2.12,2.12,0,0,0-1.57.59l-9.25,7a40.09,40.09,0,0,0-5.87-2.41L59.64,2a1.92,1.92,0,0,0-.75-1.4A2.46,2.46,0,0,0,57.29,0H42.82a2.19,2.19,0,0,0-2.34,1.82,106,106,0,0,0-1.89,12.12,37.62,37.62,0,0,0-5.93,2.48l-9-7A2.78,2.78,0,0,0,22,8.8q-1.44,0-6.16,4.66a64.88,64.88,0,0,0-6.42,7A2.75,2.75,0,0,0,8.8,22a2.44,2.44,0,0,0,.65,1.56q4.37,5.28,7,9a32.38,32.38,0,0,0-2.54,6L1.76,40.34a2,2,0,0,0-1.24.85A2.5,2.5,0,0,0,0,42.69V57.16a2.44,2.44,0,0,0,.52,1.53,2,2,0,0,0,1.37.82l11.93,1.76a31.91,31.91,0,0,0,2.67,6.45Q15.31,69.35,13,72.31T9.65,76.65a2.54,2.54,0,0,0-.07,3q2.54,3.52,10.75,11a2.25,2.25,0,0,0,1.63.71,2.35,2.35,0,0,0,1.63-.59l9.19-7a40.54,40.54,0,0,0,5.87,2.41l1.82,12a1.92,1.92,0,0,0,.75,1.4,2.45,2.45,0,0,0,1.6.55H57.29a2.2,2.2,0,0,0,2.35-1.82,107.41,107.41,0,0,0,1.89-12.12,37.19,37.19,0,0,0,5.93-2.48l9,7a3.18,3.18,0,0,0,1.69.59q1.43,0,6.13-4.62a65.86,65.86,0,0,0,6.45-7,2.16,2.16,0,0,0,.59-1.5,2.51,2.51,0,0,0-.65-1.63q-4.69-5.74-7-9a41.57,41.57,0,0,0,2.54-5.93l12.06-1.82a2,2,0,0,0,1.3-.85,2.52,2.52,0,0,0,.52-1.5V43a2.46,2.46,0,0,0-.52-1.53ZM61.85,61.86a16.08,16.08,0,0,1-11.8,4.89A16.69,16.69,0,0,1,33.37,50.06,16.69,16.69,0,0,1,50.06,33.37,16.69,16.69,0,0,1,66.74,50.06a16.08,16.08,0,0,1-4.89,11.8Zm0,0"></path></svg></p>
		<p><?php echo wp_kses(__('You\'ll find this icon throughout the plugin. Clicking it will show you the options and features for each section of Wordfence. From the dashboard, you can find the <strong>Global Options</strong> for Wordfence such as alerts, automatic updates, and managing your site\'s Premium License.', 'wordfence'), array('strong'=>array())); ?></p>
		<div class="wf-pointer-footer">
			<ul class="wf-tour-pagination">
				<li>&bullet;</li>
				<li>&bullet;</li>
				<li class="wf-active">&bullet;</li>
			</ul>
			<div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default" role="button"><?php esc_html_e('Previous', 'wordfence'); ?></a></div>
			<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Got it', 'wordfence'); ?></a></div>
		</div>
		<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
	</div>
</script>
<?php endif; ?>

<?php if (wfOnboardingController::willShowUpgradeTour(wfOnboardingController::TOUR_DASHBOARD)): ?>
<script type="application/javascript">
	(function($) {
		$(function() {
			WFAD.tour1 = function() {
				WFAD.tour('wfUpgradeTour1', 'wfStatusTourMarker', 'top', 'left', null, WFAD.tour2);
			};
			WFAD.tour2 = function() {
				WFAD.tour('wfUpgradeTour2', 'waf-coverage', 'top', 'left', WFAD.tour1, WFAD.tour3);
			};
			WFAD.tour3 = function() {
				WFAD.tour('wfUpgradeTour3', 'wf-dashboard-option-options', 'right', 'right', WFAD.tour2, WFAD.tour4);
			};
			WFAD.tour4 = function() {
				WFAD.tour('wfUpgradeTour4', 'toplevel_page_Wordfence', 'left', 'left', WFAD.tour3, WFAD.tourComplete);
			};
			WFAD.tourComplete = function() { WFAD.tourFinish('<?php echo esc_attr(wfOnboardingController::TOUR_DASHBOARD); ?>'); };
			
			<?php if (wfOnboardingController::shouldShowUpgradeTour(wfOnboardingController::TOUR_DASHBOARD) && !isset($_GET['onboarding'])): ?>
			if (!WFAD.isSmallScreen) { WFAD.tour1(); }
			<?php endif; ?>
		});
	})(jQuery);
</script>

<script type="text/x-jquery-template" id="wfUpgradeTour1">
	<div>
		<h3><?php printf(
				/* translators: Wordfence version. */
				esc_html__('You have successfully updated to Wordfence %s', 'wordfence'), WORDFENCE_VERSION); ?></h3>
		<p><?php esc_html_e('This update includes a number of significant interface changes. We\'d like to walk you through  some of them, but you can bypass the tour for a section at any time by closing the dialogs.', 'wordfence'); ?></p>
		<p><?php echo wp_kses(__('We welcome your feedback and comments at <a href="mailto:feedback@wordfence.com">feedback@wordfence.com</a>. For a deeper dive on all of the changes, <a href="https://www.wordfence.com/blog/2018/01/introducing-wordfence-7/" target="_blank" rel="noopener noreferrer">click here<span class="screen-reader-text"> (opens in new tab)</span></a>.', 'wordfence'), array('a'=>array('href'=>array(), 'target'=>array()), 'span'=>array('class'=>array()))); ?></p>
		<div class="wf-pointer-footer">
			<ul class="wf-tour-pagination">
				<li class="wf-active">&bullet;</li>
				<li>&bullet;</li>
				<li>&bullet;</li>
				<li>&bullet;</li>
			</ul>
			<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Next', 'wordfence'); ?></a></div>
		</div>
		<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
	</div>
</script>
<script type="text/x-jquery-template" id="wfUpgradeTour2">
	<div>
		<h3><?php esc_html_e('Monitor Your Wordfence Protection', 'wordfence'); ?></h3>
		<p><?php esc_html_e('Each feature contains a status percentage reminding you at a high level of what\'s enabled, disabled, or needing your attention. The Notifications section highlights actions you need to take.', 'wordfence'); ?></p>
		<div class="wf-pointer-footer">
			<ul class="wf-tour-pagination">
				<li>&bullet;</li>
				<li class="wf-active">&bullet;</li>
				<li>&bullet;</li>
				<li>&bullet;</li>
			</ul>
			<div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default" role="button"><?php esc_html_e('Previous', 'wordfence'); ?></a></div>
			<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Next', 'wordfence'); ?></a></div>
		</div>
		<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
	</div>
</script>
<script type="text/x-jquery-template" id="wfUpgradeTour3">
	<div>
		<h3><?php esc_html_e('Global Wordfence Options', 'wordfence'); ?></h3>
		<p class="wf-center"><svg viewBox="0 0 100.11 100.11" class="wf-icon"><path d="M99.59,41.42a2.06,2.06,0,0,0-1.37-.82L86.3,38.78a39.34,39.34,0,0,0-2.67-6.39q1.17-1.63,3.52-4.6t3.32-4.33A2.52,2.52,0,0,0,91,22a2.1,2.1,0,0,0-.46-1.43Q88.18,17.2,79.78,9.45a2.52,2.52,0,0,0-1.63-.65,2.12,2.12,0,0,0-1.57.59l-9.25,7a40.09,40.09,0,0,0-5.87-2.41L59.64,2a1.92,1.92,0,0,0-.75-1.4A2.46,2.46,0,0,0,57.29,0H42.82a2.19,2.19,0,0,0-2.34,1.82,106,106,0,0,0-1.89,12.12,37.62,37.62,0,0,0-5.93,2.48l-9-7A2.78,2.78,0,0,0,22,8.8q-1.44,0-6.16,4.66a64.88,64.88,0,0,0-6.42,7A2.75,2.75,0,0,0,8.8,22a2.44,2.44,0,0,0,.65,1.56q4.37,5.28,7,9a32.38,32.38,0,0,0-2.54,6L1.76,40.34a2,2,0,0,0-1.24.85A2.5,2.5,0,0,0,0,42.69V57.16a2.44,2.44,0,0,0,.52,1.53,2,2,0,0,0,1.37.82l11.93,1.76a31.91,31.91,0,0,0,2.67,6.45Q15.31,69.35,13,72.31T9.65,76.65a2.54,2.54,0,0,0-.07,3q2.54,3.52,10.75,11a2.25,2.25,0,0,0,1.63.71,2.35,2.35,0,0,0,1.63-.59l9.19-7a40.54,40.54,0,0,0,5.87,2.41l1.82,12a1.92,1.92,0,0,0,.75,1.4,2.45,2.45,0,0,0,1.6.55H57.29a2.2,2.2,0,0,0,2.35-1.82,107.41,107.41,0,0,0,1.89-12.12,37.19,37.19,0,0,0,5.93-2.48l9,7a3.18,3.18,0,0,0,1.69.59q1.43,0,6.13-4.62a65.86,65.86,0,0,0,6.45-7,2.16,2.16,0,0,0,.59-1.5,2.51,2.51,0,0,0-.65-1.63q-4.69-5.74-7-9a41.57,41.57,0,0,0,2.54-5.93l12.06-1.82a2,2,0,0,0,1.3-.85,2.52,2.52,0,0,0,.52-1.5V43a2.46,2.46,0,0,0-.52-1.53ZM61.85,61.86a16.08,16.08,0,0,1-11.8,4.89A16.69,16.69,0,0,1,33.37,50.06,16.69,16.69,0,0,1,50.06,33.37,16.69,16.69,0,0,1,66.74,50.06a16.08,16.08,0,0,1-4.89,11.8Zm0,0"></path></svg></p>
		<p><?php esc_html_e('Manage your Wordfence license, see alerts and automatic plugin updates, and import/export your settings.', 'wordfence'); ?></p>
		<div class="wf-pointer-footer">
			<ul class="wf-tour-pagination">
				<li>&bullet;</li>
				<li>&bullet;</li>
				<li class="wf-active">&bullet;</li>
				<li>&bullet;</li>
			</ul>
			<div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default" role="button"><?php esc_html_e('Previous', 'wordfence'); ?></a></div>
			<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Next', 'wordfence'); ?></a></div>
		</div>
		<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
	</div>
</script>
<script type="text/x-jquery-template" id="wfUpgradeTour4">
	<div>
		<h3><?php esc_html_e('Updated Navigation', 'wordfence'); ?></h3>
		<p><?php echo wp_kses(__('The main navigation no longer includes an <strong>Options</strong> link. Options are now accessed via the <strong>Options</strong> link on each feature\'s main page. Live Traffic is now located in the Tools section, and blocking is found under the Firewall. Shortcuts to add a <strong>Blocking</strong> link back to the main navigation are available under Blocking options.', 'wordfence'), array('strong'=>array())); ?></p>
		<div class="wf-pointer-footer">
			<ul class="wf-tour-pagination">
				<li>&bullet;</li>
				<li>&bullet;</li>
				<li>&bullet;</li>
				<li class="wf-active">&bullet;</li>
			</ul>
			<div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default" role="button"><?php esc_html_e('Previous', 'wordfence'); ?></a></div>
			<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Got it', 'wordfence'); ?></a></div>
		</div>
		<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
	</div>
</script>
<?php endif; ?>
<?php
$hostSetting = false;
$recordAll = wfConfig::liveTrafficEnabled($hostSetting);

if ($recordAll && !$hostSetting && !wfUtils::truthyToBoolean(wfConfig::get('switchLiveTrafficSecurityOnlyChoice'))):
?>
<script type="application/javascript">
	(function($) {
		$(function() {
			var prompt = $('#wfLiveTrafficMigration').tmpl();
			var promptHTML = $("<div />").append(prompt).html();
			WFAD.colorboxHTML((WFAD.isSmallScreen ? '300px' : '700px'), promptHTML, {overlayClose: false, closeButton: false, className: 'wf-modal', onComplete: function() {
				$('#wf-livetrafficmigrate-no').on('click', function(e) {
					e.preventDefault();
					e.stopPropagation();

					wordfenceExt.switchLiveTrafficSecurityOnlyChoice('no');
					WFAD.colorboxClose();
				});

				$('#wf-livetrafficmigrate-yes').on('click', function(e) {
					e.preventDefault();
					e.stopPropagation();

					wordfenceExt.switchLiveTrafficSecurityOnlyChoice('yes');
					WFAD.colorboxClose();
				});
			}});
		});
	})(jQuery);
</script>
<script type="text/x-jquery-template" id="wfLiveTrafficMigration">
	<?php
	echo wfView::create('common/modal-prompt', array(
		'title' => __('Recommended Settings Change', 'wordfence'),
		'messageHTML' => '<p>' . esc_html__('Greetings! The default configuration for Wordfence Live Traffic has changed. The new default saves only logins and blocked requests, while this site is currently recording all traffic. Would you like to change to the new default?', 'wordfence') . '</p>' . (!wfRateLimit::identicalHumanBotRateLimits() ? '<p>' . __('Rate limiting based on type of request (human vs crawler) may be less accurate because this prevents loading the extra JavaScript used for that identification.', 'wordfence') . '</p>' : ''),
		'primaryButton' => array('id' => 'wf-livetrafficmigrate-yes', 'label' => __('Yes Please', 'wordfence'), 'link' => '#', 'type' => 'wf-btn-primary'),
		'secondaryButtons' => array(
			array('id' => 'wf-livetrafficmigrate-no', 'label' => __('No Thanks', 'wordfence'), 'link' => '#', 'type' => 'wf-btn-default'),
			array('id' => 'wf-livetrafficmigrate-learn', 'label' => __('Learn More', 'wordfence'), 'link' => wfSupportController::supportURL(wfSupportController::ITEM_NOTICE_SWITCH_LIVE_TRAFFIC), 'type' => 'wf-btn-default', 'target' => '_blank', 'rel' => 'noopener noreferrer'),
		),
	))->render();
	?>
</script>
<?php endif; ?>lib/wfUtils.php000064400000334222150755146450007502 0ustar00<?php
require_once(dirname(__FILE__) . '/wfConfig.php');
class wfUtils {
	//Flags for wfUtils::parse_version
	const VERSION_MAJOR = 'major';
	const VERSION_MINOR = 'minor';
	const VERSION_PATCH = 'patch';
	const VERSION_PRE_RELEASE = 'pre-release';
	const VERSION_BUILD = 'build';
	
	private static $isWindows = false;
	public static $scanLockFH = false;
	private static $lastErrorReporting = false;
	private static $lastDisplayErrors = false;
	public static function patternToRegex($pattern, $mod = 'i', $sep = '/') {
		$pattern = preg_quote(trim($pattern), $sep);
		$pattern = str_replace(' ', '\s', $pattern);
		return $sep . '^' . str_replace('\*', '.*', $pattern) . '$' . $sep . $mod;
	}
	public static function versionedAsset($subpath) {
		$version = WORDFENCE_BUILD_NUMBER;
		if ($version != 'WORDFENCE_BUILD_NUMBER' && preg_match('/^(.+?)(\.[^\.]+)$/', $subpath, $matches)) {
			$prefix = $matches[1];
			$suffix = $matches[2];
			return $prefix . '.' . $version . $suffix;
		}
		
		return $subpath;
	}
	public static function makeTimeAgo($secs, $noSeconds = false) {
		if($secs < 1){
			return __("a moment", 'wordfence');
		}
		
		if (function_exists('date_diff')) {
			$now = new DateTime();
			$utc = new DateTimeZone('UTC');
			$dtStr = gmdate("c", (int) ($now->getTimestamp() + $secs)); //Have to do it this way because of PHP 5.2
			$then = new DateTime($dtStr, $utc);
			
			$diff = $then->diff($now);
			$years = $diff->y;
			$months = $diff->m;
			$days = $diff->d;
			$hours = $diff->h;
			$minutes = $diff->i;
		}
		else {
			$years = 0;
			$months = floor($secs / (86400 * 30));
			$days = floor($secs / 86400);
			$hours = floor($secs / 3600);
			$minutes = floor($secs / 60);
			
			if ($months) {
				$days -= $months * 30;
			}
			else if ($days) {
				$hours -= $days * 24;
			}
			else if ($hours) {
				$minutes -= $hours * 60;
			}
		}
		
		if ($years) {
			return $years . ' ' . _n('year', 'years', $years, 'wordfence') .
				(is_numeric($months) ? ' ' . $months . ' ' . _n('month', 'months', $months, 'wordfence') : '');
		}
		else if ($months) {
			return $months . ' ' . _n('month', 'months', $months, 'wordfence') .
				(is_numeric($days) ? ' ' . $days . ' ' . _n('day', 'days', $days, 'wordfence') : '');
		}
		else if ($days) {
			return $days . ' ' . _n('day', 'days', $days, 'wordfence') .
				(is_numeric($hours) ? ' ' . $hours . ' ' . _n('hour', 'hours', $hours, 'wordfence') : '');
		}
		else if ($hours) {
			return $hours . ' ' . _n('hour', 'hours', $hours, 'wordfence') .
				(is_numeric($minutes) ? ' ' . $minutes . ' ' . _n('minute', 'minutes', $minutes, 'wordfence') : '');
		}
		else if ($minutes) {
			return $minutes . ' ' . _n('minute', 'minutes', $minutes, 'wordfence');
		}
		else {
			if($noSeconds){
				return __("less than a minute", 'wordfence');
			} else {
				return sprintf(/* translators: Number of seconds. */ __("%d seconds", 'wordfence'), floor($secs));
			}
		}
	}
	public static function makeDuration($secs, $createExact = false) {
		$components = array();
		
		$months = floor($secs / (86400 * 30)); $secs -= $months * 86400 * 30;
		$days = floor($secs / 86400); $secs -= $days * 86400;
		$hours = floor($secs / 3600); $secs -= $hours * 3600;
		$minutes = floor($secs / 60); $secs -= $minutes * 60;
		
		if ($months) {
			$components[] = $months . ' ' . _n('month', 'months', $months, 'wordfence');
			if (!$createExact) {
				$hours = $minutes = $secs = 0;
			}
		}
		if ($days) {
			$components[] = $days . ' ' . _n('day', 'days', $days, 'wordfence');
			if (!$createExact) {
				$minutes = $secs = 0;
			}
		}
		if ($hours) {
			$components[] = $hours . ' ' . _n('hour', 'hours', $hours, 'wordfence');
			if (!$createExact) {
				$secs = 0;
			}
		}
		if ($minutes) {
			$components[] = $minutes . ' ' . _n('minute', 'minutes', $minutes, 'wordfence');
		}
		if ($secs && $secs >= 1) {
			$components[] = $secs . ' ' . _n('second', 'seconds', $secs, 'wordfence');
		}
		
		if (empty($components)) {
			$components[] = __('less than 1 second', 'wordfence');
		}
		
		return implode(' ', $components);
	}
	public static function pluralize($m1, $m1Singular, $m1Plural, $m2 = false, $m2Singular = false, $m2Plural = false) {
		$m1Text = _n($m1Singular, $m1Plural, $m1, 'wordfence');
		if (is_numeric($m2)) {
			$m2Text = _n($m2Singular, $m2Plural, $m2, 'wordfence');
			return "$m1 $m1Text $m2 $m2Text";
		} else {
			return "$m1 $m1Text";
		}
	}
	public static function formatBytes($bytes, $precision = 2) {
		$units = array('B', 'KB', 'MB', 'GB', 'TB');

		$bytes = max($bytes, 0);
		$pow = floor(($bytes ? log($bytes) : 0) / log(1024));
		$pow = min($pow, count($units) - 1);

		// Uncomment one of the following alternatives
		$bytes /= pow(1024, $pow);
		// $bytes /= (1 << (10 * $pow)); 

		return round($bytes, $precision) . ' ' . $units[$pow];
	}
	
	/**
	 * Returns the PHP version formatted for display, stripping off the build information when present.
	 * 
	 * @return string
	 */
	public static function cleanPHPVersion() {
		$version = phpversion();
		if (preg_match('/^(\d+\.\d+\.\d+)/', $version, $matches)) {
			return $matches[1];
		}
		return $version;
	}
	
	/**
	 * Check if an IP address is in a network block
	 *
	 * @param string	$subnet	Single IP or subnet in CIDR notation (e.g. '192.168.100.0' or '192.168.100.0/22')
	 * @param string	$ip		IPv4 or IPv6 address in dot or colon notation
	 * @return boolean
	 */
	public static function subnetContainsIP($subnet, $ip) {
		static $_network_cache = array();
		static $_ip_cache = array();
		static $_masks = array(
			0 => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			1 => "\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			2 => "\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			3 => "\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			4 => "\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			5 => "\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			6 => "\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			7 => "\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			8 => "\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			9 => "\xff\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			10 => "\xff\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			11 => "\xff\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			12 => "\xff\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			13 => "\xff\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			14 => "\xff\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			15 => "\xff\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			16 => "\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			17 => "\xff\xff\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			18 => "\xff\xff\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			19 => "\xff\xff\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			20 => "\xff\xff\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			21 => "\xff\xff\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			22 => "\xff\xff\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			23 => "\xff\xff\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			24 => "\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			25 => "\xff\xff\xff\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			26 => "\xff\xff\xff\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			27 => "\xff\xff\xff\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			28 => "\xff\xff\xff\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			29 => "\xff\xff\xff\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			30 => "\xff\xff\xff\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			31 => "\xff\xff\xff\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			32 => "\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			33 => "\xff\xff\xff\xff\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			34 => "\xff\xff\xff\xff\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			35 => "\xff\xff\xff\xff\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			36 => "\xff\xff\xff\xff\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			37 => "\xff\xff\xff\xff\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			38 => "\xff\xff\xff\xff\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			39 => "\xff\xff\xff\xff\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			40 => "\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			41 => "\xff\xff\xff\xff\xff\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			42 => "\xff\xff\xff\xff\xff\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			43 => "\xff\xff\xff\xff\xff\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			44 => "\xff\xff\xff\xff\xff\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			45 => "\xff\xff\xff\xff\xff\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			46 => "\xff\xff\xff\xff\xff\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			47 => "\xff\xff\xff\xff\xff\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			48 => "\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			49 => "\xff\xff\xff\xff\xff\xff\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			50 => "\xff\xff\xff\xff\xff\xff\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			51 => "\xff\xff\xff\xff\xff\xff\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			52 => "\xff\xff\xff\xff\xff\xff\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			53 => "\xff\xff\xff\xff\xff\xff\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			54 => "\xff\xff\xff\xff\xff\xff\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			55 => "\xff\xff\xff\xff\xff\xff\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			56 => "\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			57 => "\xff\xff\xff\xff\xff\xff\xff\x80\x00\x00\x00\x00\x00\x00\x00\x00",
			58 => "\xff\xff\xff\xff\xff\xff\xff\xc0\x00\x00\x00\x00\x00\x00\x00\x00",
			59 => "\xff\xff\xff\xff\xff\xff\xff\xe0\x00\x00\x00\x00\x00\x00\x00\x00",
			60 => "\xff\xff\xff\xff\xff\xff\xff\xf0\x00\x00\x00\x00\x00\x00\x00\x00",
			61 => "\xff\xff\xff\xff\xff\xff\xff\xf8\x00\x00\x00\x00\x00\x00\x00\x00",
			62 => "\xff\xff\xff\xff\xff\xff\xff\xfc\x00\x00\x00\x00\x00\x00\x00\x00",
			63 => "\xff\xff\xff\xff\xff\xff\xff\xfe\x00\x00\x00\x00\x00\x00\x00\x00",
			64 => "\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00",
			65 => "\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x00\x00\x00\x00\x00\x00",
			66 => "\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\x00\x00\x00\x00\x00\x00",
			67 => "\xff\xff\xff\xff\xff\xff\xff\xff\xe0\x00\x00\x00\x00\x00\x00\x00",
			68 => "\xff\xff\xff\xff\xff\xff\xff\xff\xf0\x00\x00\x00\x00\x00\x00\x00",
			69 => "\xff\xff\xff\xff\xff\xff\xff\xff\xf8\x00\x00\x00\x00\x00\x00\x00",
			70 => "\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00\x00\x00\x00\x00\x00\x00",
			71 => "\xff\xff\xff\xff\xff\xff\xff\xff\xfe\x00\x00\x00\x00\x00\x00\x00",
			72 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00",
			73 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x00\x00\x00\x00\x00",
			74 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\x00\x00\x00\x00\x00",
			75 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe0\x00\x00\x00\x00\x00\x00",
			76 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\x00\x00\x00\x00\x00\x00",
			77 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf8\x00\x00\x00\x00\x00\x00",
			78 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00\x00\x00\x00\x00\x00",
			79 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\x00\x00\x00\x00\x00\x00",
			80 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00",
			81 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x00\x00\x00\x00",
			82 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\x00\x00\x00\x00",
			83 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe0\x00\x00\x00\x00\x00",
			84 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\x00\x00\x00\x00\x00",
			85 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf8\x00\x00\x00\x00\x00",
			86 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00\x00\x00\x00\x00",
			87 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\x00\x00\x00\x00\x00",
			88 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00",
			89 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x00\x00\x00",
			90 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\x00\x00\x00",
			91 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe0\x00\x00\x00\x00",
			92 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\x00\x00\x00\x00",
			93 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf8\x00\x00\x00\x00",
			94 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00\x00\x00\x00",
			95 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\x00\x00\x00\x00",
			96 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00",
			97 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x00\x00",
			98 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\x00\x00",
			99 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe0\x00\x00\x00",
			100 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\x00\x00\x00",
			101 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf8\x00\x00\x00",
			102 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00\x00\x00",
			103 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\x00\x00\x00",
			104 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00",
			105 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x00",
			106 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\x00",
			107 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe0\x00\x00",
			108 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\x00\x00",
			109 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf8\x00\x00",
			110 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00\x00",
			111 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\x00\x00",
			112 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00",
			113 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00",
			114 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00",
			115 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe0\x00",
			116 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\x00",
			117 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf8\x00",
			118 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00",
			119 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\x00",
			120 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00",
			121 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80",
			122 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0",
			123 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe0",
			124 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0",
			125 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf8",
			126 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfc",
			127 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe",
			128 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff",
		);
		/*
		 * The above is generated by:
		 * 
		   function gen_mask($prefix, $size = 128) {
				//Workaround to avoid overflow, split into four pieces			
				$mask_1 = (pow(2, $size / 4) - 1) ^ (pow(2, min($size / 4, max(0, 1 * $size / 4 - $prefix))) - 1);
				$mask_2 = (pow(2, $size / 4) - 1) ^ (pow(2, min($size / 4, max(0, 2 * $size / 4 - $prefix))) - 1);
				$mask_3 = (pow(2, $size / 4) - 1) ^ (pow(2, min($size / 4, max(0, 3 * $size / 4 - $prefix))) - 1);
				$mask_4 = (pow(2, $size / 4) - 1) ^ (pow(2, min($size / 4, max(0, 4 * $size / 4 - $prefix))) - 1);
				return ($mask_1 ? pack('N', $mask_1) : "\0\0\0\0") . ($mask_2 ? pack('N', $mask_2) : "\0\0\0\0") . ($mask_3 ? pack('N', $mask_3) : "\0\0\0\0") . ($mask_4 ? pack('N', $mask_4) : "\0\0\0\0");
			}
			
			$masks = array();
			for ($i = 0; $i <= 128; $i++) {
				$mask = gen_mask($i);
				$chars = str_split($mask);
				$masks[] = implode('', array_map(function($c) { return '\\x' . bin2hex($c); }, $chars));
			}
			
			echo 'array(' . "\n";
			foreach ($masks as $index => $m) {
				echo "\t{$index} => \"{$m}\",\n";
			}
			echo ')';
		 *
		 */
		
		if (isset($_network_cache[$subnet])) {
			list($bin_network, $prefix, $masked_network) = $_network_cache[$subnet];
			$mask = $_masks[$prefix];
		}
		else {
			list($network, $prefix) = array_pad(explode('/', $subnet, 2), 2, null);
			if (filter_var($network, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
				// If no prefix was supplied, 32 is implied for IPv4
				if ($prefix === null) {
					$prefix = 32;
				}
				
				// Validate the IPv4 network prefix
				if ($prefix < 0 || $prefix > 32) {
					return false;
				}
				
				// Increase the IPv4 network prefix to work in the IPv6 address space
				$prefix += 96;
			}
			else {
				// If no prefix was supplied, 128 is implied for IPv6
				if ($prefix === null) {
					$prefix = 128;
				}
				
				// Validate the IPv6 network prefix
				if ($prefix < 1 || $prefix > 128) {
					return false;
				}
			}
			$mask = $_masks[$prefix];
			$bin_network = self::inet_pton($network);
			$masked_network = $bin_network & $mask;
			$_network_cache[$subnet] = array($bin_network, $prefix, $masked_network);
		}
		
		if (isset($_ip_cache[$ip]) && isset($_ip_cache[$ip][$prefix])) {
			list($bin_ip, $masked_ip) = $_ip_cache[$ip][$prefix];
		}
		else {
			$bin_ip = self::inet_pton($ip);
			$masked_ip = $bin_ip & $mask;
			if (!isset($_ip_cache[$ip])) {
				$_ip_cache[$ip] = array();
			}
			$_ip_cache[$ip][$prefix] = array($bin_ip, $masked_ip);
		}
		
		return ($masked_ip === $masked_network);
	}

	/**
	 * Convert CIDR notation to a wfUserIPRange object
	 *
	 * @param string $cidr
	 * @return wfUserIPRange
	 */
	public static function CIDR2wfUserIPRange($cidr) {
		list($network, $prefix) = array_pad(explode('/', $cidr, 2), 2, null);
		$ip_range = new wfUserIPRange();

		if (filter_var($network, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
			// If no prefix was supplied, 32 is implied for IPv4
			if ($prefix === null) {
				$prefix = 32;
			}

			// Validate the IPv4 network prefix
			if ($prefix < 0 || $prefix > 32) {
				return $ip_range;
			}

			// Increase the IPv4 network prefix to work in the IPv6 address space
			$prefix += 96;
		} else {
			// If no prefix was supplied, 128 is implied for IPv6
			if ($prefix === null) {
				$prefix = 128;
			}

			// Validate the IPv6 network prefix
			if ($prefix < 1 || $prefix > 128) {
				return $ip_range;
			}
		}

		// Convert human readable address to 128 bit (IPv6) binary string
		// Note: self::inet_pton converts IPv4 addresses to IPv6 compatible versions
		$binary_network = self::inet_pton($network);
		$binary_mask = wfHelperBin::str2bin(str_pad(str_repeat('1', $prefix), 128, '0', STR_PAD_RIGHT));

		// Calculate first and last address
		$binary_first = $binary_network & $binary_mask;
		$binary_last = $binary_network | ~ $binary_mask;

		// Convert binary addresses back to human readable strings
		$first = self::inet_ntop($binary_first);
		$last = self::inet_ntop($binary_last);

		if (filter_var($network, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
			$first = self::expandIPv6Address($first);
			$last = self::expandIPv6Address($last);
		}

		// Split addresses into segments
		$first_array = preg_split('/[\.\:]/', $first);
		$last_array = preg_split('/[\.\:]/', $last);

		// Make sure arrays are the same size. IPv6 '::' could cause problems otherwise.
		// The strlen filter should leave zeros in place
		$first_array = array_pad(array_filter($first_array, 'strlen'), count($last_array), '0');

		$range_segments = array();

		foreach ($first_array as $index => $segment) {
			if ($segment === $last_array[$index]) {
				$range_segments[] = str_pad(ltrim($segment, '0'), 1, '0');
			} else if ($segment === '' || $last_array[$index] === '') {
				$range_segments[] = '';
			} else {
				$range_segments[] = "[". str_pad(ltrim($segment, '0'), 1, '0') . "-" .
					str_pad(ltrim($last_array[$index], '0'), 1, '0') . "]";
			}
		}

		$delimiter = filter_var($network, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) ? '.' : ':';

		$ip_range->setIPString(implode($delimiter, $range_segments));

		return $ip_range;
	}

	/**
	 * Return dot notation of IPv4 address.
	 *
	 * @param int $ip
	 * @return string|bool
	 */
	public static function inet_ntoa($ip) {
		$long = 4294967295 - ($ip - 1);
		return long2ip(-$long);
	}

	/**
	 * Return string representation of 32 bit int of the IP address.
	 *
	 * @param string $ip
	 * @return string
	 */
	public static function inet_aton($ip) {
		$ip = preg_replace('/(?<=^|\.)0+([1-9])/', '$1', $ip);
		return sprintf("%u", ip2long($ip));
	}

	/**
	 * Return dot or colon notation of IPv4 or IPv6 address.
	 *
	 * @param string $ip
	 * @return string|bool
	 */
	public static function inet_ntop($ip) {
		// trim this to the IPv4 equiv if it's in the mapped range
		if (strlen($ip) == 16 && substr($ip, 0, 12) == "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff") {
			$ip = substr($ip, 12, 4);
		}
		return self::hasIPv6Support() ? @inet_ntop($ip) : self::_inet_ntop($ip);
	}

	/**
	 * Return the packed binary string of an IPv4 or IPv6 address.
	 *
	 * @param string $ip
	 * @return string
	 */
	public static function inet_pton($ip) {
		// convert the 4 char IPv4 to IPv6 mapped version.
		$pton = str_pad(self::hasIPv6Support() ? @inet_pton($ip) : self::_inet_pton($ip), 16,
			"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00", STR_PAD_LEFT);
		return $pton;
	}

	/**
	 * Added compatibility for hosts that do not have inet_pton.
	 *
	 * @param $ip
	 * @return bool|string
	 */
	public static function _inet_pton($ip) {
		// IPv4
		if (preg_match('/^(?:\d{1,3}(?:\.|$)){4}/', $ip)) {
			$octets = explode('.', $ip);
			$bin = chr($octets[0]) . chr($octets[1]) . chr($octets[2]) . chr($octets[3]);
			return $bin;
		}

		// IPv6
		if (preg_match('/^((?:[\da-f]{1,4}(?::|)){0,8})(::)?((?:[\da-f]{1,4}(?::|)){0,8})$/i', $ip)) {
			if ($ip === '::') {
				return "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
			}
			$colon_count = substr_count($ip, ':');
			$dbl_colon_pos = strpos($ip, '::');
			if ($dbl_colon_pos !== false) {
				$ip = str_replace('::', str_repeat(':0000',
						(($dbl_colon_pos === 0 || $dbl_colon_pos === strlen($ip) - 2) ? 9 : 8) - $colon_count) . ':', $ip);
				$ip = trim($ip, ':');
			}

			$ip_groups = explode(':', $ip);
			$ipv6_bin = '';
			foreach ($ip_groups as $ip_group) {
				$ipv6_bin .= pack('H*', str_pad($ip_group, 4, '0', STR_PAD_LEFT));
			}

			return strlen($ipv6_bin) === 16 ? $ipv6_bin : false;
		}

		// IPv4 mapped IPv6
		if (preg_match('/^(?:\:(?:\:0{1,4}){0,4}\:|(?:0{1,4}\:){5})ffff\:(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$/i', $ip, $matches)) {
			$octets = explode('.', $matches[1]);
			return "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff" . chr($octets[0]) . chr($octets[1]) . chr($octets[2]) . chr($octets[3]);
		}

		return false;
	}

	/**
	 * Added compatibility for hosts that do not have inet_ntop.
	 *
	 * @param $ip
	 * @return bool|string
	 */
	public static function _inet_ntop($ip) {
		// IPv4
		if (strlen($ip) === 4) {
			return ord($ip[0]) . '.' . ord($ip[1]) . '.' . ord($ip[2]) . '.' . ord($ip[3]);
		}

		// IPv6
		if (strlen($ip) === 16) {

			// IPv4 mapped IPv6
			if (substr($ip, 0, 12) == "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff") {
				return "::ffff:" . ord($ip[12]) . '.' . ord($ip[13]) . '.' . ord($ip[14]) . '.' . ord($ip[15]);
			}

			$hex = bin2hex($ip);
			$groups = str_split($hex, 4);
			$in_collapse = false;
			$done_collapse = false;
			foreach ($groups as $index => $group) {
				if ($group == '0000' && !$done_collapse) {
					if ($in_collapse) {
						$groups[$index] = '';
						continue;
					}
					$groups[$index] = ':';
					$in_collapse = true;
					continue;
				}
				if ($in_collapse) {
					$done_collapse = true;
				}
				$groups[$index] = ltrim($groups[$index], '0');
				if (strlen($groups[$index]) === 0) {
					$groups[$index] = '0';
				}
			}
			$ip = join(':', array_filter($groups, 'strlen'));
			$ip = str_replace(':::', '::', $ip);
			return $ip == ':' ? '::' : $ip;
		}

		return false;
	}

	/**
	 * Verify PHP was compiled with IPv6 support.
	 *
	 * Some hosts appear to not have inet_ntop, and others appear to have inet_ntop but are unable to process IPv6 addresses.
	 *
	 * @return bool
	 */
	public static function hasIPv6Support() {
		return defined('AF_INET6');
	}

	public static function hasLoginCookie(){
		if(isset($_COOKIE)){
			if(is_array($_COOKIE)){
				foreach($_COOKIE as $key => $val){
					if(strpos($key, 'wordpress_logged_in') === 0){
						return true;
					}
				}
			}
		}
		return false;
	}
	public static function getBaseURL(){
		return plugins_url('', WORDFENCE_FCPATH) . '/';
	}
	public static function getPluginBaseDir(){
		if(function_exists('wp_normalize_path')){ //Older WP versions don't have this func and we had many complaints before this check.
			if(defined('WP_PLUGIN_DIR')) {
				return wp_normalize_path(WP_PLUGIN_DIR . '/');
			}
			return wp_normalize_path(WP_CONTENT_DIR . '/plugins/');
		} else {
			if(defined('WP_PLUGIN_DIR')) {
				return WP_PLUGIN_DIR . '/';
			}
			return WP_CONTENT_DIR . '/plugins/';
		}
	}
	public static function makeRandomIP(){
		return rand(11,230) . '.' . rand(0,255) . '.' . rand(0,255) . '.' . rand(0,255);
	}
	
	/**
	 * Converts a truthy value to a boolean, checking in this order:
	 * - already a boolean
	 * - numeric (0 => false, otherwise true)
	 * - 'false', 'f', 'no', 'n', or 'off' => false
	 * - 'true', 't', 'yes', 'y', or 'on' => true
	 * - empty value => false, otherwise true
	 * 
	 * @param $value
	 * @return bool
	 */
	public static function truthyToBoolean($value) {
		if ($value === true || $value === false) {
			return $value;
		}
		
		if (is_numeric($value)) {
			return !!$value;
		}
		
		if (preg_match('/^(?:f(?:alse)?|no?|off)$/i', $value)) {
			return false;
		}
		else if (preg_match('/^(?:t(?:rue)?|y(?:es)?|on)$/i', $value)) {
			return true;
		}
		
		return !empty($value);
	}
	
	/**
	 * Converts a truthy value to 1 or 0.
	 * 
	 * @see wfUtils::truthyToBoolean
	 * 
	 * @param $value
	 * @return int
	 */
	public static function truthyToInt($value) {
		return self::truthyToBoolean($value) ? 1 : 0;
	}
	
	/**
	 * Returns the whitelist presets, which first grabs the bundled list and then merges the dynamic list into it.
	 * 
	 * @return array
	 */
	public static function whitelistPresets() {
		static $_cachedPresets = null;
		if ($_cachedPresets === null) {
			include(dirname(__FILE__) . '/wfIPWhitelist.php'); /** @var array $wfIPWhitelist */
			$currentPresets = wfConfig::getJSON('whitelistPresets', array());
			if (is_array($currentPresets)) {
				$_cachedPresets = array_merge($wfIPWhitelist, $currentPresets);
			}
			else {
				$_cachedPresets = $wfIPWhitelist;
			}
		}
		return $_cachedPresets;
	}
	
	/**
	 * Returns an array containing all whitelisted service IPs/ranges. The returned array is grouped by service
	 * tag: array('service1' => array('range1', 'range2', range3', ...), ...)
	 * 
	 * @return array
	 */
	public static function whitelistedServiceIPs() {
		$result = array();
		$whitelistPresets = self::whitelistPresets();
		$whitelistedServices = wfConfig::getJSON('whitelistedServices', array());
		foreach ($whitelistPresets as $tag => $preset) {
			if (!isset($preset['n'])) { //Just an array of IPs/ranges
				$result[$tag] = $preset;
				continue;
			}
			
			if ((isset($preset['h']) && $preset['h']) || (isset($preset['f']) && $preset['f'])) { //Forced
				$result[$tag] = $preset['r'];
				continue;
			}
			
			if ((!isset($whitelistedServices[$tag]) && isset($preset['d']) && $preset['d']) || (isset($whitelistedServices[$tag]) && $whitelistedServices[$tag])) {
				$result[$tag] = $preset['r'];
			}
		}
		return $result;
	}

	/**
	 * Get the list of whitelisted IPs and networks, which is a combination of preset IPs/ranges and user-entered
	 * IPs/ranges.
	 *
	 * @param string	$filter	Group name to filter whitelist by
	 * @return array
	 */
	public static function getIPWhitelist($filter = null) {
		static $wfIPWhitelist;

		if (!isset($wfIPWhitelist)) {
			$wfIPWhitelist = self::whitelistedServiceIPs();
			
			//Append user ranges
			$wfIPWhitelist['user'] = array();
			foreach (array_filter(explode(',', wfConfig::get('whitelisted'))) as $ip) {
				$wfIPWhitelist['user'][] = new wfUserIPRange($ip);
			}
		}

		$whitelist = array();
		foreach ($wfIPWhitelist as $group => $values) {
			if ($filter === null || $group === $filter) {
				$whitelist = array_merge($whitelist, $values);
			}
		}

		return $whitelist;
	}

	/**
	 * @param string $addr Should be in dot or colon notation (127.0.0.1 or ::1)
	 * @return bool
	 */
	public static function isPrivateAddress($addr) {
		// Run this through the preset list for IPv4 addresses.
		if (filter_var($addr, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) !== false) {
			foreach (self::getIPWhitelist('private') as $a) {
				if (self::subnetContainsIP($a, $addr)) {
					return true;
				}
			}
		}

		return filter_var($addr, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_IPV6) !== false
			&& filter_var($addr, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_IPV6 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) === false;
	}

	/**
	 * Expects an array of items. The items are either IP's or IP's separated by comma, space or tab. Or an array of IP's.
	 * We then examine all IP's looking for a public IP and storing private IP's in an array. If we find no public IPs we return the first private addr we found.
	 *
	 * @param array $arr
	 * @return bool|mixed
	 */
	private static function getCleanIP($arr){
		$privates = array(); //Store private addrs until end as last resort.
		for($i = 0; $i < count($arr); $i++){
			$item = $arr[$i];
			if(is_array($item)){
				foreach($item as $j){
					// try verifying the IP is valid before stripping the port off
					if (!self::isValidIP($j)) {
						$j = preg_replace('/:\d+$/', '', $j); //Strip off port
					}
					if (self::isValidIP($j)) {
						if (self::isPrivateAddress($j)) {
							$privates[] = $j;
						} else {
							return $j;
						}
					}
				}
				continue; //This was an array so we can skip to the next item
			}
			$skipToNext = false;
			foreach(array(',', ' ', "\t") as $char){
				if(strpos($item, $char) !== false){
					$sp = explode($char, $item);
					$sp = array_reverse($sp);
					foreach($sp as $j){
						$j = trim($j);
						if (!self::isValidIP($j)) {
							$j = preg_replace('/:\d+$/', '', $j); //Strip off port
						}
						if(self::isValidIP($j)){
							if(self::isPrivateAddress($j)){
								$privates[] = $j;
							} else {
								return $j;
							}
						}
					}
					$skipToNext = true;
					break;
				}
			}
			if($skipToNext){ continue; } //Skip to next item because this one had a comma, space or tab so was delimited and we didn't find anything.

			if (!self::isValidIP($item)) {
				$item = preg_replace('/:\d+$/', '', $item); //Strip off port
			}
			if(self::isValidIP($item)){
				if(self::isPrivateAddress($item)){
					$privates[] = $item;
				} else {
					return $item;
				}
			}
		}
		if(sizeof($privates) > 0){
			return $privates[0]; //Return the first private we found so that we respect the order the IP's were passed to this function.
		} else {
			return false;
		}
	}

	/**
	 * Expects an array of items. The items are either IP's or IP's separated by comma, space or tab. Or an array of IP's.
	 * We then examine all IP's looking for a public IP and storing private IP's in an array. If we find no public IPs we return the first private addr we found.
	 *
	 * @param array $arr
	 * @return bool|mixed
	 */
	private static function getCleanIPAndServerVar($arr, $trustedProxies = null) {
		$privates = array(); //Store private addrs until end as last resort.
		for($i = 0; $i < count($arr); $i++){
			list($item, $var) = $arr[$i];
			if(is_array($item)){
				foreach($item as $j){
					// try verifying the IP is valid before stripping the port off
					if (!self::isValidIP($j)) {
						$j = preg_replace('/:\d+$/', '', $j); //Strip off port
					}
					if (self::isValidIP($j)) {
						if (self::isIPv6MappedIPv4($j)) {
							$j = self::inet_ntop(self::inet_pton($j));
						}

						if (self::isPrivateAddress($j)) {
							$privates[] = array($j, $var);
						} else {
							return array($j, $var);
						}
					}
				}
				continue; //This was an array so we can skip to the next item
			}
			$skipToNext = false;
			if ($trustedProxies === null) {
				$trustedProxies = self::unifiedTrustedProxies();
			}
			foreach(array(',', ' ', "\t") as $char){
				if(strpos($item, $char) !== false){
					$sp = explode($char, $item);
					$sp = array_reverse($sp);
					foreach($sp as $index => $j){
						$j = trim($j);
						if (!self::isValidIP($j)) {
							$j = preg_replace('/:\d+$/', '', $j); //Strip off port
						}
						if(self::isValidIP($j)){
							if (self::isIPv6MappedIPv4($j)) {
								$j = self::inet_ntop(self::inet_pton($j));
							}
							
							foreach ($trustedProxies as $proxy) {
								if (!empty($proxy)) {
									if (self::subnetContainsIP($proxy, $j) && $index < count($sp) - 1) {
										continue 2;
									}
								}
							}

							if(self::isPrivateAddress($j)){
								$privates[] = array($j, $var);
							} else {
								return array($j, $var);
							}
						}
					}
					$skipToNext = true;
					break;
				}
			}
			if($skipToNext){ continue; } //Skip to next item because this one had a comma, space or tab so was delimited and we didn't find anything.

			if (!self::isValidIP($item)) {
				$item = preg_replace('/:\d+$/', '', $item); //Strip off port
			}
			if(self::isValidIP($item)){
				if (self::isIPv6MappedIPv4($item)) {
					$item = self::inet_ntop(self::inet_pton($item));
				}

				if(self::isPrivateAddress($item)){
					$privates[] = array($item, $var);
				} else {
					return array($item, $var);
				}
			}
		}
		if(sizeof($privates) > 0){
			return $privates[0]; //Return the first private we found so that we respect the order the IP's were passed to this function.
		} else {
			return false;
		}
	}
	
	/**
	 * Returns an array of all trusted proxies, combining both the user-entered ones and those from the selected preset.
	 * 
	 * @return string[]
	 */
	public static function unifiedTrustedProxies() {
		$trustedProxies = explode("\n", wfConfig::get('howGetIPs_trusted_proxies', ''));
		
		$preset = wfConfig::get('howGetIPs_trusted_proxy_preset');
		$presets = wfConfig::getJSON('ipResolutionList', array());
		if (is_array($presets) && isset($presets[$preset])) {
			$testIPs = array_merge($presets[$preset]['ipv4'], $presets[$preset]['ipv6']);
			foreach ($testIPs as $val) {
				if (strlen($val) > 0) {
					if (wfUtils::isValidIP($val) || wfUtils::isValidCIDRRange($val)) {
						$trustedProxies[] = $val;
					}
				}
			}
		}
		return $trustedProxies;
	}

	/**
	 * @param string $ip
	 * @return bool
	 */
	public static function isIPv6MappedIPv4($ip) {
		return preg_match('/^(?:\:(?:\:0{1,4}){0,4}\:|(?:0{1,4}\:){5})ffff\:\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/i', $ip) > 0;
	}

	public static function extractHostname($str){
		if(preg_match('/https?:\/\/([a-zA-Z0-9\.\-]+)(?:\/|$)/i', $str, $matches)){
			return strtolower($matches[1]);
		} else {
			return false;
		}
	}
	
	/**
	 * Returns the known server IPs, ordered by those as the best match for outgoing requests.
	 * 
	 * @param bool $refreshCache
	 * @return string[]
	 */
	public static function serverIPs($refreshCache = false) {
		static $cachedServerIPs = null;
		if (isset($cachedServerIPs) && !$refreshCache) {
			return $cachedServerIPs;
		}
		
		$serverIPs = array();
		$storedIP = wfConfig::get('serverIP');
		if (preg_match('/^(\d+);(.+)$/', $storedIP, $matches)) { //Format is 'timestamp;ip'
			$serverIPs[] = $matches[2];
		}
		
		if (function_exists('dns_get_record')) {
			$storedDNS = wfConfig::get('serverDNS');
			$usingCache = false;
			if (preg_match('/^(\d+);(\d+);(.+)$/', $storedDNS, $matches)) { //Format is 'timestamp;ttl;ip'
				$timestamp = $matches[1];
				$ttl = $matches[2];
				if ($timestamp + max($ttl, 86400) > time()) {
					$serverIPs[] = $matches[3];
					$usingCache = true;
				}
			}
			
			if (!$usingCache) {
				$home = get_home_url();
				if (preg_match('/^https?:\/\/([^\/]+)/i', $home, $matches)) {
					$host = strtolower($matches[1]);
					$cnameRaw = @dns_get_record($host, DNS_CNAME);
					$cnames = array();
					$cnamesTargets = array();
					if ($cnameRaw) {
						foreach ($cnameRaw as $elem) {
							if ($elem['host'] == $host) {
								$cnames[] = $elem;
								$cnamesTargets[] = $elem['target'];
							}
						}
					}
					
					$aRaw = @dns_get_record($host, DNS_A);
					$a = array();
					if ($aRaw) {
						foreach ($aRaw as $elem) {
							if ($elem['host'] == $host || in_array($elem['host'], $cnamesTargets)) {
								$a[] = $elem;
							}
						}
					}
					
					$firstA = wfUtils::array_first($a);
					if ($firstA !== null) {
						$serverIPs[] = $firstA['ip'];
						wfConfig::set('serverDNS', time() . ';' . $firstA['ttl'] . ';' . $firstA['ip']);
					}
				}
			}
		}
		
		if (isset($_SERVER['SERVER_ADDR']) && wfUtils::isValidIP($_SERVER['SERVER_ADDR'])) {
			$serverIPs[] = $_SERVER['SERVER_ADDR'];
		}
		
		$serverIPs = array_unique($serverIPs);
		$cachedServerIPs = $serverIPs;
		return $serverIPs;
	}
	
	public static function getIP($refreshCache = false) {
		static $theIP = null;
		if (isset($theIP) && !$refreshCache) {
			return $theIP;
		}
		//For debugging. 
		//return '54.232.205.132';
		//return self::makeRandomIP();

		// if no REMOTE_ADDR, it's probably running from the command line
		$ip = self::getIPAndServerVariable();
		if (is_array($ip)) {
			list($IP, $variable) = $ip;
			$theIP = $IP;
			return $IP;
		}
		return false;
	}
	
	public static function getIPForField($field, $trustedProxies = null) {
		$ip = self::getIPAndServerVariable($field, $trustedProxies);
		if (is_array($ip)) {
			list($IP, $variable) = $ip;
			return $IP;
		}
		return false;
	}

	public static function getAllServerVariableIPs()
	{
		$variables = array('REMOTE_ADDR', 'HTTP_CF_CONNECTING_IP', 'HTTP_X_REAL_IP', 'HTTP_X_FORWARDED_FOR');
		$ips = array();

		foreach ($variables as $variable) {
			$ip = isset($_SERVER[$variable]) ? $_SERVER[$variable] : false;

			if ($ip && strpos($ip, ',') !== false) {
				$ips[$variable] = preg_replace('/[\s,]/', '', explode(',', $ip));
			} else {
				$ips[$variable] = $ip;
			}
		}

		return $ips;
	}

	public static function getIPAndServerVariable($howGet = null, $trustedProxies = null) {
		$connectionIP = array_key_exists('REMOTE_ADDR', $_SERVER) ? array($_SERVER['REMOTE_ADDR'], 'REMOTE_ADDR') : array('127.0.0.1', 'REMOTE_ADDR');

		if ($howGet === null) {
			$howGet = wfConfig::get('howGetIPs', false);
		}
		
		if($howGet){
			if($howGet == 'REMOTE_ADDR'){
				return self::getCleanIPAndServerVar(array($connectionIP), $trustedProxies);
			} else {
				$ipsToCheck = array(
					array((isset($_SERVER[$howGet]) ? $_SERVER[$howGet] : ''), $howGet),
					$connectionIP,
				);
				return self::getCleanIPAndServerVar($ipsToCheck, $trustedProxies);
			}
		} else {
			$ipsToCheck = array();
			
			$recommendedField = wfConfig::get('detectProxyRecommendation', ''); //Prioritize the result from our proxy check if done
			if (!empty($recommendedField) && $recommendedField != 'UNKNOWN' && $recommendedField != 'DEFERRED') {
				if (isset($_SERVER[$recommendedField])) {
					$ipsToCheck[] = array($_SERVER[$recommendedField], $recommendedField);
				}
			}
			$ipsToCheck[] = $connectionIP;
			if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
				$ipsToCheck[] = array($_SERVER['HTTP_X_FORWARDED_FOR'], 'HTTP_X_FORWARDED_FOR');
			}
			if (isset($_SERVER['HTTP_X_REAL_IP'])) {
				$ipsToCheck[] = array($_SERVER['HTTP_X_REAL_IP'], 'HTTP_X_REAL_IP');
			}
			return self::getCleanIPAndServerVar($ipsToCheck, $trustedProxies);
		}
		return false; //Returns an array with a valid IP and the server variable, or false.
	}
	public static function getIPPreview($howGet = null, $trustedProxies = null) {
		$ip = self::getIPAndServerVariable($howGet, $trustedProxies);
		if (is_array($ip)) {
			list($IP, $variable) = $ip;
			if (isset($_SERVER[$variable]) && strpos($_SERVER[$variable], ',') !== false) {
				$items = preg_replace('/[\s,]/', '', explode(',', $_SERVER[$variable]));
				$output = '';
				foreach ($items as $i) {
					if ($IP == $i) {
						$output .= ', <strong>' . esc_html($i) . '</strong>';
					}
					else {
						$output .= ', ' . esc_html($i); 
					}
				}
				
				return substr($output, 2);
			}
			return '<strong>' . esc_html($IP) . '</strong>';
		}
		return false;
	}
	public static function isValidIP($IP){
		return filter_var($IP, FILTER_VALIDATE_IP) !== false;
	}
	public static function isValidCIDRRange($range) {
		$components = explode('/', $range);
		if (count($components) != 2) { return false; }
		
		list($ip, $prefix) = $components;
		if (!self::isValidIP($ip)) { return false; }
		
		if (!preg_match('/^\d+$/', $prefix)) { return false; }
		
		if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
			if ($prefix < 0 || $prefix > 32) { return false; }
		}
		else {
			if ($prefix < 1 || $prefix > 128) { return false; }
		}
		
		return true;
	}
	public static function isValidEmail($email, $strict = false) {
		//We don't default to strict, full validation because poorly-configured servers can crash due to the regex PHP uses in filter_var($email, FILTER_VALIDATE_EMAIL)
		if ($strict) {
			return (filter_var($email, FILTER_VALIDATE_EMAIL) !== false);
		}
		
		return preg_match('/^[^@\s]+@[^@\s]+\.[^@\s]+$/i', $email) === 1;
	}
	public static function getRequestedURL() {
		if (isset($_SERVER['HTTP_HOST']) && $_SERVER['HTTP_HOST']) {
			$host = $_SERVER['HTTP_HOST'];
		} else if (isset($_SERVER['SERVER_NAME']) && $_SERVER['SERVER_NAME']) {
			$host = $_SERVER['SERVER_NAME'];
		}
		else {
			return null;
		}
		$prefix = 'http';
		if (is_ssl()) {
			$prefix = 'https';
		}
		return $prefix . '://' . $host . $_SERVER['REQUEST_URI'];
	}

	public static function editUserLink($userID){
		return get_admin_url() . 'user-edit.php?user_id=' . $userID;
	}
	public static function tmpl($file, $data){
		extract($data);
		ob_start();
		include dirname(__FILE__) . DIRECTORY_SEPARATOR . $file;
		return ob_get_contents() . (ob_end_clean() ? "" : "");
	}
	public static function bigRandomHex(){
		return bin2hex(wfWAFUtils::random_bytes(16));
	}
	public static function encrypt($str){
		$key = wfConfig::get('encKey');
		if(! $key){
			wordfence::status(1, 'error', __("Wordfence error: No encryption key found!", 'wordfence'));
			return false;
		}
		$db = new wfDB();
		return $db->querySingle("select HEX(AES_ENCRYPT('%s', '%s')) as val", $str, $key);
	}
	public static function decrypt($str){
		$key = wfConfig::get('encKey');
		if(! $key){
			wordfence::status(1, 'error', __("Wordfence error: No encryption key found!", 'wordfence'));
			return false;
		}
		$db = new wfDB();
		return $db->querySingle("select AES_DECRYPT(UNHEX('%s'), '%s') as val", $str, $key);
	}
	public static function lcmem(){
		$trace=debug_backtrace();
		$caller=array_shift($trace);
		$mem = memory_get_usage(true);
		error_log("$mem at " . $caller['file'] . " line " . $caller['line']);
	}
	public static function logCaller(){
		$trace=debug_backtrace();
		$caller=array_shift($trace);
		$c2 = array_shift($trace);
		error_log("Caller for " . $caller['file'] . " line " . $caller['line'] . " is " . $c2['file'] . ' line ' . $c2['line']);
	}
	public static function getWPVersion($forceRecheck = false){
		if ($forceRecheck) {
			require(ABSPATH . 'wp-includes/version.php'); //defines $wp_version
			return $wp_version;
		}
		
		if(wordfence::$wordfence_wp_version){
			return wordfence::$wordfence_wp_version;
		} else {
			global $wp_version;
			return $wp_version;
		}
	}
	
	public static function parse_version($version, $component = null) {
		$major = 0;
		$minor = 0;
		$patch = 0;
		$prerelease = '';
		$build = '';
		
		if (preg_match('/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/', $version, $matches)) { //semver
			$major = $matches[1];
			$minor = $matches[2];
			$patch = $matches[3];
			
			if (preg_match('/^([^\+]+)\+(.*)$/', $version, $matches)) {
				$version = $matches[1];
				$build = $matches[2];
			}
			
			if (preg_match('/^([^\-]+)\-(.*)$/', $version, $matches)) {
				$version = $matches[1];
				$prerelease = $matches[2];
			}
		}
		else { //Parse as "PHP-standardized" (see version_compare docs: "The function first replaces _, - and + with a dot . in the version strings and also inserts dots . before and after any non number so that for example '4.3.2RC1' becomes '4.3.2.RC.1'.")
			$version = trim(preg_replace('/\.\.+/', '.', preg_replace('/([^0-9\.]+)/', '.$1.', preg_replace('/[_\-\+]+/', '.', $version))), '.');
			$components = explode('.', $version);
			$i = 0;
			if (isset($components[$i]) && is_numeric($components[$i])) { $major = $components[$i]; $i++; }
			if (isset($components[$i]) && is_numeric($components[$i])) { $minor = $components[$i]; $i++; }
			if (isset($components[$i]) && is_numeric($components[$i])) { $patch = $components[$i]; $i++; }
			while (isset($components[$i]) && is_numeric($components[$i])) {
				if (!empty($build)) {
					$build .= '.';
				}
				$build .= $components[$i];
				$i++;
			}
			while (isset($components[$i])) {
				if (!empty($prerelease)) {
					$prerelease .= '.';
				}
				
				if (preg_match('/^(?:dev|alpha|a|beta|b|rc|#|pl|p)$/i', $components[$i])) {
					$prerelease .= strtolower($components[$i]);
					if (isset($components[$i + 1])) {
						if (!preg_match('/^(?:a|b|rc|#|pl|p)$/i', $components[$i])) {
							$prerelease .= '-';
						}
						$i++;
					}
				}
				
				$prerelease .= $components[$i];
				$i++;
			}
		}
		
		$version = array(
			self::VERSION_MAJOR => $major,
			self::VERSION_MINOR => $minor,
			self::VERSION_PATCH => $patch,
			self::VERSION_PRE_RELEASE => $prerelease,
			self::VERSION_BUILD => $build,
		);
		
		$version = array_filter($version, function($v) {
			return $v !== '';
		});
		
		if ($component === null) {
			return $version;
		}
		else if (isset($version[$component])) {
			return $version[$component];
		}
		
		return null;
	}
	
	public static function isAdminPageMU(){
		if(preg_match('/^[\/a-zA-Z0-9\-\_\s\+\~\!\^\.]*\/wp-admin\/network\//', $_SERVER['REQUEST_URI'])){
			return true;
		}
		return false;
	}
	public static function getSiteBaseURL(){
		return rtrim(site_url(), '/') . '/';
	}
	public static function longestLine($data){
		$lines = preg_split('/[\r\n]+/', $data);
		$max = 0;
		foreach($lines as $line){
			$len = strlen($line);
			if($len > $max){
				$max = $len;
			}
		}
		return $max;
	}
	public static function longestNospace($data){
		$lines = preg_split('/[\r\n\s\t]+/', $data);
		$max = 0;
		foreach($lines as $line){
			$len = strlen($line);
			if($len > $max){
				$max = $len;
			}
		}
		return $max;
	}
	public static function requestMaxMemory(){
		if(wfConfig::get('maxMem', false) && (int) wfConfig::get('maxMem') > 0){
			$maxMem = (int) wfConfig::get('maxMem');
		} else {
			$maxMem = 256;
		}
		if( function_exists('memory_get_usage') && ( (int) @ini_get('memory_limit') < $maxMem ) ){
			self::iniSet('memory_limit', $maxMem . 'M');
		}
	}
	public static function isAdmin($user = false){
		if($user){
			if(is_multisite()){
				if(user_can($user, 'manage_network')){
					return true;
				}
			} else {
				if(user_can($user, 'manage_options')){
					return true;
				}
			}
		} else {
			if(is_multisite()){
				if(current_user_can('manage_network')){
					return true;
				}
			} else {
				if(current_user_can('manage_options')){
					return true;
				}
			}
		}
		return false;
	}
	public static function hasTwoFactorEnabled($user = false) {
		if (!$user) {
			$user = get_user_by('ID', get_current_user_id());
		}
		
		if (!$user) {
			return false;
		}
		
		$twoFactorUsers = wfConfig::get_ser('twoFactorUsers', array());
		$hasActivatedTwoFactorUser = false;
		foreach ($twoFactorUsers as &$t) {
			if ($t[3] == 'activated') {
				$userID = $t[0];
				if ($userID == $user->ID && wfUtils::isAdmin($user)) {
					$hasActivatedTwoFactorUser = true;
				}
			}
		}
		
		return $hasActivatedTwoFactorUser;
	}
	public static function isWindows(){
		if(! self::$isWindows){
			if(preg_match('/^win/i', PHP_OS)){
				self::$isWindows = 'yes';
			} else {
				self::$isWindows = 'no';
			}
		}
		return self::$isWindows == 'yes' ? true : false;
	}
	public static function cleanupOneEntryPerLine($string) {
		$string = str_replace(",", "\n", $string); // fix old format
		return implode("\n", array_unique(array_filter(array_map('trim', explode("\n", $string)))));
	}

	public static function afterProcessingFile() {
		if (wfScanner::shared()->useLowResourceScanning()) {
			usleep(10000); //10 ms
		}
	}

	public static function getScanLock(){
		//Windows does not support non-blocking flock, so we use time.
		$scanRunning = wfConfig::get('wf_scanRunning');
		if($scanRunning && time() - $scanRunning < WORDFENCE_MAX_SCAN_LOCK_TIME){
			return false;
		}
		wfConfig::set('wf_scanRunning', time());
		return true;
	}
	public static function clearScanLock(){
		global $wpdb;
		$wfdb = new wfDB();
		$wfdb->truncate(wfDB::networkTable('wfHoover'));

		wfConfig::set('wf_scanRunning', '');
		wfIssues::updateScanStillRunning(false);
		if (wfCentral::isConnected()) {
			wfCentral::updateScanStatus();
		}
	}
	public static function getIPGeo($IP){ //Works with int or dotted

		$locs = self::getIPsGeo(array($IP));
		if(isset($locs[$IP])){
			return $locs[$IP];
		} else {
			return false;
		}
	}
	public static function getIPsGeo($IPs){ //works with int or dotted. Outputs same format it receives.
		$IPs = array_unique($IPs);
		$toResolve = array();
		$db = new wfDB();
		$locsTable = wfDB::networkTable('wfLocs');
		$IPLocs = array();
		foreach($IPs as $IP){
			$isBinaryIP = !self::isValidIP($IP);
			if ($isBinaryIP) {
				$ip_printable = wfUtils::inet_ntop($IP);
				$ip_bin = $IP;
			} else {
				$ip_printable = $IP;
				$ip_bin = wfUtils::inet_pton($IP);
			}
			
			$ipHex = wfDB::binaryValueToSQLHex($ip_bin);
			$row = $db->querySingleRec("select IP, ctime, failed, city, region, countryName, countryCode, lat, lon, unix_timestamp() - ctime as age from " . $locsTable . " where IP={$ipHex}");
			if($row){
				if($row['age'] > WORDFENCE_MAX_IPLOC_AGE){
					$ipHex = wfDB::binaryValueToSQLHex($row['IP']);
					$db->queryWrite("delete from " . $locsTable . " where IP={$ipHex}");
				} else {
					if($row['failed'] == 1){
						$IPLocs[$ip_printable] = false;
					} else {
						$row['IP'] = self::inet_ntop($row['IP']);
						$row['region'] = wfUtils::shouldDisplayRegion($row['countryName']) ? $row['region'] : '';
						$IPLocs[$ip_printable] = $row;
					}
				}
			}
			if(! isset($IPLocs[$ip_printable])){
				$toResolve[] = $ip_printable;
			}
		}
		if(sizeof($toResolve) > 0){
			if (wfConfig::get('enableRemoteIpLookup', true)) {
				$api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion());
				try {
					$freshIPs = $api->call('resolve_ips', array(), array(
						'ips' => implode(',', $toResolve)
						));
				} catch(Exception $e){
					wordfence::status(2, 'error', sprintf(/* translators: Error message. */ __("Call to Wordfence API to resolve IPs failed: %s", 'wordfence'), $e->getMessage()));
					return array();
				}
			}
			else {
				require_once(__DIR__ . '/wfIpLocator.php');
				$locator = wfIpLocator::getInstance();
				$freshIPs = array();
				$locale = get_locale();
				foreach ($toResolve as $ip) {
					$record = $locator->locate($ip);
					if ($record !== null) {
						$countryCode = $record->getCountryCode();
						if ($countryCode !== null) {
							$countryName = $record->getCountryName($locale);
							if ($countryName === null)
								$countryName = $countryCode;
							$freshIPs[$ip] = array($countryCode, $countryName);
							continue;
						}
					}
					$freshIPs[$ip] = 'failed';
				}
			}
			if(is_array($freshIPs)){
				foreach($freshIPs as $IP => $value){
					$IP_bin = wfUtils::inet_pton($IP);
					$ipHex = wfDB::binaryValueToSQLHex($IP_bin);
					if($value == 'failed'){
						$db->queryWrite("insert IGNORE into " . $locsTable . " (IP, ctime, failed) values ({$ipHex}, unix_timestamp(), 1)");
						$IPLocs[$IP] = false;
					} else if(is_array($value)){
						for($i = 0; $i <= 5; $i++){
							//Prevent warnings in debug mode about uninitialized values
							if(! isset($value[$i])){ $value[$i] = ''; }
						}
						$db->queryWrite("insert IGNORE into " . $locsTable . " (IP, ctime, failed, city, region, countryName, countryCode, lat, lon) values ({$ipHex}, unix_timestamp(), 0, '%s', '%s', '%s', '%s', %s, %s)",
							$value[3], //city
							$value[2], //region
							$value[1], //countryName
							$value[0],//countryCode
							$value[4],//lat
							$value[5]//lon
							);
						$IPLocs[$IP] = array(
							'IP' => $IP,
							'city' => $value[3],
							'region' => wfUtils::shouldDisplayRegion($value[1]) ? $value[2] : '',
							'countryName' => $value[1],
							'countryCode' => $value[0],
							'lat' => $value[4],
							'lon' => $value[5]
							);
					}
				}
			}
		}
		return $IPLocs;
	}

	public static function reverseLookup($IP) {
		static $_memoryCache = array();
		if (isset($_memoryCache[$IP])) {
			return $_memoryCache[$IP];
		}
		
		$db = new wfDB();
		$reverseTable = wfDB::networkTable('wfReverseCache');
		$IPn = wfUtils::inet_pton($IP);
		$ipHex = wfDB::binaryValueToSQLHex($IPn);
		$host = $db->querySingle("select host from " . $reverseTable . " where IP={$ipHex} and unix_timestamp() - lastUpdate < %d", WORDFENCE_REVERSE_LOOKUP_CACHE_TIME);
		if (!$host) {
			// This function works for IPv4 or IPv6
			if (function_exists('gethostbyaddr')) {
				$host = @gethostbyaddr($IP);
			}
			if (!$host) {
				$ptr = false;
				if (filter_var($IP, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) !== false) {
					$ptr = implode(".", array_reverse(explode(".", $IP))) . ".in-addr.arpa";
				} else if (filter_var($IP, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) !== false) {
					$ptr = implode(".", array_reverse(str_split(bin2hex($IPn)))) . ".ip6.arpa";
				}

				if ($ptr && function_exists('dns_get_record')) {
					$host = @dns_get_record($ptr, DNS_PTR);
					if ($host) {
						$host = $host[0]['target'];
					}
				}
			}
			$_memoryCache[$IP] = $host;
			if (!$host) {
				$host = 'NONE';
			}
			$db->queryWrite("insert into " . $reverseTable . " (IP, host, lastUpdate) values ({$ipHex}, '%s', unix_timestamp()) ON DUPLICATE KEY UPDATE host='%s', lastUpdate=unix_timestamp()", $host, $host);
		}
		if ($host == 'NONE') {
			$_memoryCache[$IP] = '';
			return '';
		} else {
			$_memoryCache[$IP] = $host;
			return $host;
		}
	}
	public static function errorsOff(){
		self::$lastErrorReporting = @ini_get('error_reporting');
		@error_reporting(0);
		self::$lastDisplayErrors = @ini_get('display_errors');
		self::iniSet('display_errors', 0);
		if(class_exists('wfScan')){ wfScan::$errorHandlingOn = false; }
	}
	public static function errorsOn(){
		@error_reporting(self::$lastErrorReporting);
		self::iniSet('display_errors', self::$lastDisplayErrors);
		if(class_exists('wfScan')){ wfScan::$errorHandlingOn = true; }
	}
	//Note this function may report files that are too big which actually are not too big but are unseekable and throw an error on fseek(). But that's intentional
	public static function fileTooBig($file, &$size = false, &$handle = false){ //Deals with files > 2 gigs on 32 bit systems which are reported with the wrong size due to integer overflow
		if (!@is_file($file) || !@is_readable($file)) { return false; } //Only apply to readable files
		wfUtils::errorsOff();
		$fh = @fopen($file, 'rb');
		wfUtils::errorsOn();
		if(! $fh){ return false; }
		try {
			if(@fseek($fh, WORDFENCE_MAX_FILE_SIZE_OFFSET, SEEK_SET) === 0 && !empty(fread($fh, 1))){
				return true;
			} //Otherwise we couldn't seek there so it must be smaller
			if ($size !== false && @fseek($fh, 0, SEEK_END) === 0) {
				$size = @ftell($fh);
				if ($size === false)
					$size = 0; // Assume 0 if unable to determine file size
			}
			return false;
		} catch(Exception $e){
			return true; //If we get an error don't scan this file, report it's too big.
		} finally {
			if ($handle === false) {
				fclose($fh);
			}
			else {
				$handle = $fh;
			}
		}
	}
	public static function fileOver2Gigs($file){ //Surround calls to this func with try/catch because fseek may throw error.
		$fh = @fopen($file, 'rb');
		if(! $fh){ return false; }
		$offset = 2147483647;
		$tooBig = false;
		//My throw an error so surround calls to this func with try/catch
		if(@fseek($fh, $offset, SEEK_SET) === 0){
			if(strlen(fread($fh, 1)) === 1){
				$tooBig = true;
			}
		} //Otherwise we couldn't seek there so it must be smaller
		@fclose($fh);
		return $tooBig;
	}
	public static function countryCode2Name($code){
		require(dirname(__FILE__) . '/wfBulkCountries.php'); /** @var array $wfBulkCountries */
		if(isset($wfBulkCountries[$code])){
			return $wfBulkCountries[$code];
		} else {
			return '';
		}
	}
	public static function shouldDisplayRegion($country) {
		$countries_to_show_for = array('united states', 'canada', 'australia');
		return in_array(strtolower($country), $countries_to_show_for);
	}
	public static function extractBareURI($URL){
		$URL = preg_replace('/^https?:\/\/[^\/]+/i', '', $URL); //strip of method and host
		$URL = preg_replace('/\#.*$/', '', $URL); //strip off fragment
		$URL = preg_replace('/\?.*$/', '', $URL); //strip off query string
		return $URL;
	}
	public static function requireIpLocator() {
		/**
		 * This is also used in the WAF so in certain site setups (i.e. nested sites in subdirectories)
		 * it's possible for this to already have been loaded from a different installation of the
		 * plugin and hence require_once doesn't help as it's a different file path. There is no guarantee
		 * that the two plugin installations are the same version, so should the wfIpLocator class or any
		 * of its dependencies change in a manner that is not backwards compatible, this may need to be
		 * handled differently.
		 */
		if (!class_exists('wfIpLocator'))
			require_once(__DIR__ . '/wfIpLocator.php');
	}
	public static function IP2Country($ip){
		self::requireIpLocator();
		return wfIpLocator::getInstance()->getCountryCode($ip);
	}
	public static function geoIPVersion() {
		self::requireIpLocator();
		$version = wfIpLocator::getInstance()->getDatabaseVersion();
		return $version === null ? 0 : $version;
	}
	public static function siteURLRelative(){
		if(is_multisite()){
			$URL = network_site_url();
		} else {
			$URL = site_url();
		}
		$URL = preg_replace('/^https?:\/\/[^\/]+/i', '', $URL);
		$URL = rtrim($URL, '/') . '/';
		return $URL;
	}
	public static function localHumanDate(){
		return date('l jS \of F Y \a\t h:i:s A', time() + (3600 * get_option('gmt_offset')));
	}
	public static function localHumanDateShort(){
		return date('D jS F \@ h:i:sA', time() + (3600 * get_option('gmt_offset')));
	}
	public static function funcEnabled($func){
		if (!function_exists($func)){ return false; }
		if (!is_callable($func)) { return false; }
		$disabled = explode(',', ini_get('disable_functions'));
		if (in_array($func, $disabled)) {
			return false;
		}
		return true;
	}
	public static function iniSet($key, $val){
		if(self::funcEnabled('ini_set')){
			@ini_set($key, $val);
		}
	}
	public static function doNotCache(){
		header("Pragma: no-cache");
		header("Cache-Control: no-cache, must-revalidate, private, max-age=0");
		header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); //In the past
		if(! defined('DONOTCACHEPAGE')){ define('DONOTCACHEPAGE', true); }
		if(! defined('DONOTCACHEDB')){ define('DONOTCACHEDB', true); }
		if(! defined('DONOTCDN')){ define('DONOTCDN', true); }
		if(! defined('DONOTCACHEOBJECT')){ define('DONOTCACHEOBJECT', true); }
		wfCache::doNotCache();
	}
	public static function isUABlocked($uaPattern){ // takes a pattern using asterisks as wildcards, turns it into regex and checks it against the visitor UA returning true if blocked
		return fnmatch($uaPattern, !empty($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '', FNM_CASEFOLD);
	}
	public static function isRefererBlocked($refPattern){
		return fnmatch($refPattern, !empty($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '', FNM_CASEFOLD);
	}
	
	public static function error_clear_last() {
		if (function_exists('error_clear_last')) {
			error_clear_last();
		}
		else {
			// set error_get_last() to defined state by forcing an undefined variable error
			set_error_handler('wfUtils::_resetErrorsHandler', 0);
			@$undefinedVariable;
			restore_error_handler();
		}
	}
	
	/**
	 * Logs the error given or the last PHP error to our log, rate limiting if needed.
	 * 
	 * @param string $limiter_key
	 * @param string $label
	 * @param null|string $error The error to log. If null, it will be the result of error_get_last
	 * @param int $rate Logging will only occur once per $rate seconds.
	 */
	public static function check_and_log_last_error($limiter_key, $label, $error = null, $rate = 3600 /* 1 hour */) {
		if ($error === null) {
			$error = error_get_last();
			if ($error === null) {
				return;
			}
			else if ($error['file'] === __FILE__) {
				return;
			}
			$error = $error['message'];
		}
		
		$rateKey = 'lastError_rate_' . $limiter_key;
		$previousKey = 'lastError_prev_' . $limiter_key;
		$previousError = wfConfig::getJSON($previousKey, array(0, false));
		if ($previousError[1] != $error) {
			if (wfConfig::getInt($rateKey) < time() - $rate) {
				wfConfig::set($rateKey, time());
				wfConfig::setJSON($previousKey, array(time(), $error));
				wordfence::status(2, 'error', $label . ' ' . $error);
			}
		}
	}
	
	public static function last_error($limiter_key) {
		$previousKey = 'lastError_prev_' . $limiter_key;
		$previousError = wfConfig::getJSON($previousKey, array(0, false));
		if ($previousError[1]) {
			return wfUtils::formatLocalTime(get_option('date_format') . ' ' . get_option('time_format'), $previousError[0]) . ': ' . $previousError[1];
		}
		return false;
	}
	
	public static function _resetErrorsHandler($errno, $errstr, $errfile, $errline) {
		//Do nothing
	}

	/**
	 * @param $startIP
	 * @param $endIP
	 * @return array
	 */
	public static function rangeToCIDRs($startIP, $endIP){
		$start_ip_printable = wfUtils::inet_ntop($startIP);
		if (filter_var($start_ip_printable, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
			return self::rangeToCIDRsIPv4(current(unpack('N', substr($startIP, 12, 4))), current(unpack('N', substr($endIP, 12, 4))));
		}
		$startIPBin = str_pad(wfHelperBin::bin2str($startIP), 128, '0', STR_PAD_LEFT);
		$endIPBin = str_pad(wfHelperBin::bin2str($endIP), 128, '0', STR_PAD_LEFT);
		$IPIncBin = $startIPBin;
		$CIDRs = array();
		while (strcmp($IPIncBin, $endIPBin) <= 0) {
			$longNetwork = 128;
			$IPNetBin = $IPIncBin;
			while (($IPIncBin[$longNetwork - 1] == '0') && (strcmp(substr_replace($IPNetBin, '1', $longNetwork - 1, 1), $endIPBin) <= 0)) {
				$IPNetBin[$longNetwork - 1] = '1';
				$longNetwork--;
			}
			$CIDRs[] = self::inet_ntop(str_pad(wfHelperBin::str2bin($IPIncBin), 16, "\x00", STR_PAD_LEFT)) . ($longNetwork < 128 ? '/' . $longNetwork : '');
			$IPIncBin = str_pad(wfHelperBin::bin2str(wfHelperBin::addbin2bin(chr(1), wfHelperBin::str2bin($IPNetBin))), 128, '0', STR_PAD_LEFT);
		}
		return $CIDRs;
	}

	public static function rangeToCIDRsIPv4($startIP, $endIP){
		$startIPBin = sprintf('%032b', $startIP);
		$endIPBin = sprintf('%032b', $endIP);
		$IPIncBin = $startIPBin;
		$CIDRs = array();
		while(strcmp($IPIncBin, $endIPBin) <= 0){
			$longNetwork = 32;
			$IPNetBin = $IPIncBin;
			while(($IPIncBin[$longNetwork - 1] == '0') && (strcmp(substr_replace($IPNetBin, '1', $longNetwork - 1, 1), $endIPBin) <= 0)){
				$IPNetBin[$longNetwork - 1] = '1';
				$longNetwork--;
			}
			$CIDRs[] = long2ip(bindec($IPIncBin)) . ($longNetwork < 32 ? '/' . $longNetwork : '');
			$IPIncBin = sprintf('%032b', bindec($IPNetBin) + 1);
		}
		return $CIDRs;
	}
	
	/**
	 * This is a convenience function for sending a JSON response and ensuring that execution stops after sending
	 * since wp_die() can be interrupted.
	 * 
	 * @param $response
	 * @param int|null $status_code
	 */
	public static function send_json($response, $status_code = null) {
		wp_send_json($response, $status_code);
		die();
	}

	public static function setcookie($name, $value, $expire, $path, $domain, $secure, $httpOnly){
		if(version_compare(PHP_VERSION, '5.2.0') >= 0){
			@setcookie($name, $value, $expire, $path, $domain, $secure, $httpOnly);
		} else {
			@setcookie($name, $value, $expire, $path);
		}
	}
	public static function isNginx(){
		$sapi = php_sapi_name();
		$serverSoft = $_SERVER['SERVER_SOFTWARE'];
		if($sapi == 'fpm-fcgi' && stripos($serverSoft, 'nginx') !== false){
			return true;
		}
	}
	public static function getLastError(){
		$err = error_get_last();
		if(is_array($err)){
			return $err['message'];
		}
		return '';
	}
	public static function hostNotExcludedFromProxy($url){
		if(! defined('WP_PROXY_BYPASS_HOSTS')){
			return true; //No hosts are excluded
		}
		$hosts = explode(',', WP_PROXY_BYPASS_HOSTS);
		$url = preg_replace('/^https?:\/\//i', '', $url);
		$url = preg_replace('/\/.*$/', '', $url);
		$url = strtolower($url);
		foreach($hosts as $h){
			if(strtolower(trim($h)) == $url){
				return false;
			}
		}
		return true;
	}
	public static function hasXSS($URL){
		if(! preg_match('/^https?:\/\/[a-z0-9\.\-]+\/[^\':<>\"\\\]*$/i', $URL)){
			return true;
		} else {
			return false;
		}
	}

	/**
	 * @param string $host
	 * @return array
	 */
	public static function resolveDomainName($host, $ipVersion = null) {
		if (!function_exists('dns_get_record')) {
			if ($ipVersion === 4 || $ipVersion === null) {
				$ips = gethostbynamel($host);
				if ($ips !== false)
					return $ips;
			}
			return array();
		}
		$recordTypes = array();
		if ($ipVersion === 4 || $ipVersion === null)
			$recordTypes[DNS_A] = 'ip';
		if ($ipVersion === 6 || $ipVersion === null)
			$recordTypes[DNS_AAAA] = 'ipv6';
		$ips = array();
		foreach ($recordTypes as $type => $key) {
			$records = @dns_get_record($host, $type);
			if ($records !== false) {
				foreach ($records as $record) {
					$ips[] = $record[$key];
				}
			}
		}
		return $ips;
	}

	/**
	 * Expand a compressed printable representation of an IPv6 address.
	 *
	 * @param string $ip
	 * @return string
	 */
	public static function expandIPv6Address($ip) {
		$hex = bin2hex(self::inet_pton($ip));
		$ip = substr(preg_replace("/([a-f0-9]{4})/i", "$1:", $hex), 0, -1);
		return $ip;
	}

	public static function set_html_content_type() {
		return 'text/html';
	}

	public static function htmlEmail($to, $subject, $body) {
		add_filter( 'wp_mail_content_type', 'wfUtils::set_html_content_type' );
		$result = wp_mail($to, $subject, $body);
		remove_filter( 'wp_mail_content_type', 'wfUtils::set_html_content_type' );
		return $result;
	}

	/**
	 * @param string $readmePath
	 * @return bool
	 */
	public static function hideReadme($readmePath = null) {
		if ($readmePath === null) {
			$readmePath = ABSPATH . 'readme.html';
		}

		if (file_exists($readmePath)) {
			$readmePathInfo = pathinfo($readmePath);
			require_once(ABSPATH . WPINC . '/pluggable.php');
			$hiddenReadmeFile = $readmePathInfo['filename'] . '.' . wp_hash('readme') . '.' . $readmePathInfo['extension'];
			return @rename($readmePath, $readmePathInfo['dirname'] . '/' . $hiddenReadmeFile);
		}
		return false;
	}

	/**
	 * @param string $readmePath
	 * @return bool
	 */
	public static function showReadme($readmePath = null) {
		if ($readmePath === null) {
			$readmePath = ABSPATH . 'readme.html';
		}
		$readmePathInfo = pathinfo($readmePath);
		require_once(ABSPATH . WPINC . '/pluggable.php');
		$hiddenReadmeFile = $readmePathInfo['dirname'] . '/' . $readmePathInfo['filename'] . '.' . wp_hash('readme') . '.' . $readmePathInfo['extension'];
		if (file_exists($hiddenReadmeFile)) {
			return @rename($hiddenReadmeFile, $readmePath);
		}
		return false;
	}

	public static function htaccessAppend($code)
	{
		$htaccess = wfCache::getHtaccessPath();
		$content  = self::htaccess();
		if (wfUtils::isNginx() || !is_writable($htaccess)) {
			return false;
		}

		if (strpos($content, $code) === false) {
			// make sure we write this once
			file_put_contents($htaccess, $content . "\n" . trim($code), LOCK_EX);
		}

		return true;
	}
	
	public static function htaccessPrepend($code)
	{
		$htaccess = wfCache::getHtaccessPath();
		$content  = self::htaccess();
		if (wfUtils::isNginx() || !is_writable($htaccess)) {
			return false;
		}
		
		if (strpos($content, $code) === false) {
			// make sure we write this once
			file_put_contents($htaccess, trim($code) . "\n" . $content, LOCK_EX);
		}
		
		return true;
	}

	public static function htaccess() {
		$htaccess = wfCache::getHtaccessPath();
		if (is_readable($htaccess) && !wfUtils::isNginx()) {
			return file_get_contents($htaccess);
		}
		return "";
	}

	/**
	 * @param array $array
	 * @param mixed $oldKey
	 * @param mixed $newKey
	 * @return array
	 * @throws Exception
	 */
	public static function arrayReplaceKey($array, $oldKey, $newKey) {
		$keys = array_keys($array);
		if (($index = array_search($oldKey, $keys)) === false) {
			throw new Exception(sprintf('Key "%s" does not exist', $oldKey));
		}
		$keys[$index] = $newKey;
		return array_combine($keys, array_values($array));
	}
	
	/**
	 * Takes a string that may have characters that will be interpreted as invalid UTF-8 byte sequences and translates them into a string of the equivalent hex sequence.
	 * 
	 * @param $string
	 * @param bool $inline
	 * @return string
	 */
	public static function potentialBinaryStringToHTML($string, $inline = false, $allowmb4 = false) {
		$output = '';
		
		if (!defined('ENT_SUBSTITUTE')) {
			define('ENT_SUBSTITUTE', 0);
		}
		
		$span = '<span class="wf-hex-sequence">';
		if ($inline) {
			$span = '<span style="color:#587ECB">';
		}
		
		for ($i = 0; $i < wfUtils::strlen($string); $i++) {
			$c = $string[$i];
			$b = ord($c);
			if ($b < 0x20) {
				$output .= $span . '\x' . str_pad(dechex($b), 2, '0', STR_PAD_LEFT) . '</span>';
			}
			else if ($b < 0x80) {
				$output .= htmlspecialchars($c, ENT_QUOTES, 'ISO-8859-1');
			}
			else { //Assume multi-byte UTF-8
				$bytes = 0;
				$test = $b;
				
				while (($test & 0x80) > 0) {
					$bytes++;
					$test = (($test << 1) & 0xff);
				}
				
				$brokenUTF8 = ($i + $bytes > wfUtils::strlen($string) || $bytes == 1);
				if (!$brokenUTF8) { //Make sure we have all the bytes
					for ($n = 1; $n < $bytes; $n++) {
						$c2 = $string[$i + $n];
						$b2 = ord($c2);
						if (($b2 & 0xc0) != 0x80) {
							$brokenUTF8 = true;
							$bytes = $n;
							break;
						}
					}
				}
				
				if (!$brokenUTF8) { //Ensure the byte sequences are within the accepted ranges: https://tools.ietf.org/html/rfc3629
					/*
					 * UTF8-octets = *( UTF8-char )
   					 * UTF8-char   = UTF8-1 / UTF8-2 / UTF8-3 / UTF8-4
   					 * UTF8-1      = %x00-7F
   					 * UTF8-2      = %xC2-DF UTF8-tail
   					 * UTF8-3      = %xE0 %xA0-BF UTF8-tail / %xE1-EC 2( UTF8-tail ) /
   					 *               %xED %x80-9F UTF8-tail / %xEE-EF 2( UTF8-tail )
   					 * UTF8-4      = %xF0 %x90-BF 2( UTF8-tail ) / %xF1-F3 3( UTF8-tail ) /
   					 *               %xF4 %x80-8F 2( UTF8-tail )
   					 * UTF8-tail   = %x80-BF
					 */
					
					$testString = wfUtils::substr($string, $i, $bytes);
					$regex = '/^(?:' .
						'[\xc2-\xdf][\x80-\xbf]' . //UTF8-2
						'|' . '\xe0[\xa0-\xbf][\x80-\xbf]' . //UTF8-3
						'|' . '[\xe1-\xec][\x80-\xbf]{2}' .
						'|' . '\xed[\x80-\x9f][\x80-\xbf]' .
						'|' . '[\xee-\xef][\x80-\xbf]{2}';
					if ($allowmb4) {
						$regex .= '|' . '\xf0[\x90-\xbf][\x80-\xbf]{2}' . //UTF8-4
							'|' . '[\xf1-\xf3][\x80-\xbf]{3}' .
							'|' . '\xf4[\x80-\x8f][\x80-\xbf]{2}';
					}
					$regex  .= ')$/';
					if (!preg_match($regex, $testString)) {
						$brokenUTF8 = true;
					}
				}
				
				if ($brokenUTF8) {
					$bytes = min($bytes, strlen($string) - $i);
					for ($n = 0; $n < $bytes; $n++) {
						$c2 = $string[$i + $n];
						$b2 = ord($c2);
						$output .= $span . '\x' . str_pad(dechex($b2), 2, '0', STR_PAD_LEFT) . '</span>';
					}
					$i += ($bytes - 1);
				}
				else {
					$output .= htmlspecialchars(wfUtils::substr($string, $i, $bytes), ENT_QUOTES | ENT_SUBSTITUTE, 'ISO-8859-1');
					$i += ($bytes - 1);
				}
			}
		}
		return $output;
	}
	
	public static function requestDetectProxyCallback($timeout = 2, $blocking = true, $forceCheck = false) {
		$currentRecommendation = wfConfig::get('detectProxyRecommendation', '');
		if (!$forceCheck) {
			$detectProxyNextCheck = wfConfig::get('detectProxyNextCheck', false);
			if ($detectProxyNextCheck !== false && time() < $detectProxyNextCheck) {
				if (empty($currentRecommendation)) {
					wfConfig::set('detectProxyRecommendation', 'DEFERRED', wfConfig::DONT_AUTOLOAD);
				}
				return; //Let it pull the currently-stored value
			}
		}

		try {
			$waf = wfWAF::getInstance();
			if ($waf->getStorageEngine()->getConfig('attackDataKey', false) === false) {
				$waf->getStorageEngine()->setConfig('attackDataKey', mt_rand(0, 0xfff));
			}
			$response = wp_remote_get(sprintf(WFWAF_API_URL_SEC . "proxy-check/%d.txt", $waf->getStorageEngine()->getConfig('attackDataKey')), array('headers' => array('Referer' => false)));
			
			if (!is_wp_error($response)) {
				$okToSendBody = wp_remote_retrieve_body($response);
				if (preg_match('/^(ok|wait),\s*(\d+)$/i', $okToSendBody, $matches)) {
					$command = $matches[1];
					$ttl = $matches[2];
					if ($command == 'wait') {
						wfConfig::set('detectProxyNextCheck', time() + $ttl, wfConfig::DONT_AUTOLOAD);
						if (empty($currentRecommendation) || $currentRecommendation == 'UNKNOWN') {
							wfConfig::set('detectProxyRecommendation', 'DEFERRED', wfConfig::DONT_AUTOLOAD);
						}
						return;
					}
					
					wfConfig::set('detectProxyNextCheck', time() + $ttl, wfConfig::DONT_AUTOLOAD);
				}
				else { //Unknown response
					wfConfig::set('detectProxyNextCheck', false, wfConfig::DONT_AUTOLOAD);
					if (empty($currentRecommendation) || $currentRecommendation == 'UNKNOWN') {
						wfConfig::set('detectProxyRecommendation', 'DEFERRED', wfConfig::DONT_AUTOLOAD);
					}
					return;
				}
			}
		}
		catch (Exception $e) {
			return;
		}
		
		$nonce = bin2hex(wfWAFUtils::random_bytes(32));
		$callback = self::getSiteBaseURL() . '?_wfsf=detectProxy';
		
		wfConfig::set('detectProxyNonce', $nonce, wfConfig::DONT_AUTOLOAD);
		wfConfig::set('detectProxyRecommendation', '', wfConfig::DONT_AUTOLOAD);
		
		$payload = array(
			'nonce' => $nonce,
			'callback' => $callback,
		);
		
		$homeurl = wfUtils::wpHomeURL();
		$siteurl = wfUtils::wpSiteURL();
		
		try {
			$response = wp_remote_post(WFWAF_API_URL_SEC . "?" . http_build_query(array(
					'action' => 'detect_proxy',
					'k'      => wfConfig::get('apiKey'),
					's'      => $siteurl,
					'h'		 => $homeurl,
					't'		 => microtime(true),
					'lang'   => get_site_option('WPLANG'),
				), '', '&'),
				array(
					'body'    => json_encode($payload),
					'headers' => array(
						'Content-Type' => 'application/json',
						'Referer' => false,
					),
					'timeout' => $timeout,
					'blocking' => $blocking,
				));
		
			if (!is_wp_error($response)) {
				$jsonResponse = wp_remote_retrieve_body($response);
				$decoded = @json_decode($jsonResponse, true);
				if (is_array($decoded) && isset($decoded['data']) && is_array($decoded['data']) && isset($decoded['data']['ip']) && wfUtils::isValidIP($decoded['data']['ip'])) {
					wfConfig::set('serverIP', time() . ';' . $decoded['data']['ip']);
				}
			}
		}
		catch (Exception $e) {
			return;
		}
	}
	
	/**
	 * @return bool Returns false if the payload is invalid, true if it processed the callback (even if the IP wasn't found).
	 */
	public static function processDetectProxyCallback() {
		$nonce = wfConfig::get('detectProxyNonce', '');
		$testNonce = (isset($_POST['nonce']) ? $_POST['nonce'] : '');
		if (empty($nonce) || empty($testNonce)) {
			return false;
		}
		
		if (!hash_equals($nonce, $testNonce)) {
			return false;
		}
		
		$ips = (isset($_POST['ips']) ? $_POST['ips'] : array());
		if (empty($ips)) {
			return false;
		}
		
		$expandedIPs = array();
		foreach ($ips as $ip) {
			$expandedIPs[] = self::inet_pton($ip);
		}
		
		$checks = array('HTTP_CF_CONNECTING_IP', 'HTTP_X_REAL_IP', 'REMOTE_ADDR', 'HTTP_X_FORWARDED_FOR');
		foreach ($checks as $key) {
			if (!isset($_SERVER[$key])) {
				continue;
			}
			
			$testIP = self::getCleanIPAndServerVar(array(array($_SERVER[$key], $key)));
			if ($testIP === false) {
				continue;
			}
			
			$testIP = self::inet_pton($testIP[0]);
			if (in_array($testIP, $expandedIPs)) {
				wfConfig::set('detectProxyRecommendation', $key, wfConfig::DONT_AUTOLOAD);
				wfConfig::set('detectProxyNonce', '', wfConfig::DONT_AUTOLOAD);
				return true;
			}
		}
		
		wfConfig::set('detectProxyRecommendation', 'UNKNOWN', wfConfig::DONT_AUTOLOAD);
		wfConfig::set('detectProxyNonce', '', wfConfig::DONT_AUTOLOAD);
		return true;
	}
	
	/**
	 * Returns a v4 UUID.
	 * 
	 * @return string
	 */
	public static function uuid() {
		return sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
			// 32 bits for "time_low"
			wfWAFUtils::random_int(0, 0xffff), wfWAFUtils::random_int(0, 0xffff),
			
			// 16 bits for "time_mid"
			wfWAFUtils::random_int(0, 0xffff),
			
			// 16 bits for "time_hi_and_version",
			// four most significant bits holds version number 4
			wfWAFUtils::random_int(0, 0x0fff) | 0x4000,
			
			// 16 bits, 8 bits for "clk_seq_hi_res",
			// 8 bits for "clk_seq_low",
			// two most significant bits holds zero and one for variant DCE1.1
			wfWAFUtils::random_int(0, 0x3fff) | 0x8000,
			
			// 48 bits for "node"
			wfWAFUtils::random_int(0, 0xffff), wfWAFUtils::random_int(0, 0xffff), wfWAFUtils::random_int(0, 0xffff)
		);
	}
	
	public static function base32_encode($rawString, $rightPadFinalBits = false, $padFinalGroup = false, $padCharacter = '=') //Adapted from https://github.com/ademarre/binary-to-text-php
	{
		// Unpack string into an array of bytes
		$bytes = unpack('C*', $rawString);
		$byteCount = count($bytes);
		
		$encodedString = '';
		$byte = array_shift($bytes);
		$bitsRead = 0;
		$oldBits = 0;
		
		$chars             = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';
		$bitsPerCharacter  = 5;
		
		$charsPerByte = 8 / $bitsPerCharacter;
		$encodedLength = $byteCount * $charsPerByte;
		
		// Generate encoded output; each loop produces one encoded character
		for ($c = 0; $c < $encodedLength; $c++) {
			
			// Get the bits needed for this encoded character
			if ($bitsRead + $bitsPerCharacter > 8) {
				// Not enough bits remain in this byte for the current character
				// Save the remaining bits before getting the next byte
				$oldBitCount = 8 - $bitsRead;
				$oldBits = $byte ^ ($byte >> $oldBitCount << $oldBitCount);
				$newBitCount = $bitsPerCharacter - $oldBitCount;
				
				if (!$bytes) {
					// Last bits; match final character and exit loop
					if ($rightPadFinalBits) $oldBits <<= $newBitCount;
					$encodedString .= $chars[$oldBits];
					
					if ($padFinalGroup) {
						// Array of the lowest common multiples of $bitsPerCharacter and 8, divided by 8
						$lcmMap = array(1 => 1, 2 => 1, 3 => 3, 4 => 1, 5 => 5, 6 => 3, 7 => 7, 8 => 1);
						$bytesPerGroup = $lcmMap[$bitsPerCharacter];
						$pads = $bytesPerGroup * $charsPerByte - ceil((strlen($rawString) % $bytesPerGroup) * $charsPerByte);
						$encodedString .= str_repeat($padCharacter, $pads);
					}
					
					break;
				}
				
				// Get next byte
				$byte = array_shift($bytes);
				$bitsRead = 0;
				
			} else {
				$oldBitCount = 0;
				$newBitCount = $bitsPerCharacter;
			}
			
			// Read only the needed bits from this byte
			$bits = $byte >> 8 - ($bitsRead + ($newBitCount));
			$bits ^= $bits >> $newBitCount << $newBitCount;
			$bitsRead += $newBitCount;
			
			if ($oldBitCount) {
				// Bits come from seperate bytes, add $oldBits to $bits
				$bits = ($oldBits << $newBitCount) | $bits;
			}
			
			$encodedString .= $chars[$bits];
		}
		
		return $encodedString;
	}
	
	private static function _home_url_nofilter($path = '', $scheme = null) { //A version of the native get_home_url and get_option without the filter calls
		global $pagenow, $wpdb, $blog_id;
		
		static $cached_url = null;
		if ($cached_url !== null) {
			return $cached_url;
		}
		
		if (defined('WP_HOME') && WORDFENCE_PREFER_WP_HOME_FOR_WPML) {
			$cached_url = WP_HOME;
			return $cached_url;
		}
		
		if ( empty( $blog_id ) || !is_multisite() ) {
			$url = $wpdb->get_var("SELECT option_value FROM {$wpdb->options} WHERE option_name = 'home' LIMIT 1");
			if (empty($url)) { //get_option uses siteurl instead if home is empty
				$url = $wpdb->get_var("SELECT option_value FROM {$wpdb->options} WHERE option_name = 'siteurl' LIMIT 1");
			}
		}
		else if (is_multisite()) {
			$current_network = get_network();
			if ( 'relative' == $scheme )
				$url = rtrim($current_network->path, '/');
			else
				$url = 'http://' . rtrim($current_network->domain, '/') . '/' . trim($current_network->path, '/');
		}
		
		if ( ! in_array( $scheme, array( 'http', 'https', 'relative' ) ) ) {
			if ( is_ssl() && ! is_admin() && 'wp-login.php' !== $pagenow )
				$scheme = 'https';
			else
				$scheme = parse_url( $url, PHP_URL_SCHEME );
		}
		
		$url = set_url_scheme( $url, $scheme );
		
		if ( $path && is_string( $path ) )
			$url .= '/' . ltrim( $path, '/' );
		
		$cached_url = $url;
		return $url;
	}
	
	public static function refreshCachedHomeURL() {
		$pullDirectly = class_exists('WPML_URL_Filters');
		$homeurl = '';
		if ($pullDirectly) {
			//A version of the native get_home_url without the filter call
			$homeurl = self::_home_url_nofilter();
		}
		
		if (function_exists('get_bloginfo') && empty($homeurl)) {
			if (is_multisite()) {
				$homeurl = network_home_url();
			}
			else {
				$homeurl = home_url();
			}
			
			$homeurl = rtrim($homeurl, '/'); //Because previously we used get_bloginfo and it returns http://example.com without a '/' char.
		}
		
		if (wfConfig::get('wp_home_url') !== $homeurl) {
			wfConfig::set('wp_home_url', $homeurl);
		}
	}
	
	public static function wpHomeURL($path = '', $scheme = null) {
		$homeurl = wfConfig::get('wp_home_url', '');
		if (function_exists('get_bloginfo') && empty($homeurl)) {
			if (is_multisite()) {
				$homeurl = network_home_url($path, $scheme);
			}
			else {
				$homeurl = home_url($path, $scheme);
			}
			
			$homeurl = rtrim($homeurl, '/'); //Because previously we used get_bloginfo and it returns http://example.com without a '/' char.
		}
		else {
			$homeurl = set_url_scheme($homeurl, $scheme);
			if ($path && is_string($path)) {
				$homeurl .= '/' . ltrim($path, '/');
			}
		}
		return $homeurl;
	}
	
	private static function _site_url_nofilter($path = '', $scheme = null) { //A version of the native get_site_url and get_option without the filter calls
		global $pagenow, $wpdb, $blog_id;
		
		static $cached_url = null;
		if ($cached_url !== null) {
			return $cached_url;
		}
		
		if (defined('WP_SITEURL') && WORDFENCE_PREFER_WP_HOME_FOR_WPML) {
			$cached_url = WP_SITEURL;
			return $cached_url;
		}
		
		if ( empty( $blog_id ) || !is_multisite() ) {
			$url = $wpdb->get_var("SELECT option_value FROM {$wpdb->options} WHERE option_name = 'siteurl' LIMIT 1");
		}
		else if (is_multisite()) {
			$current_network = get_network();
			if ( 'relative' == $scheme )
				$url = rtrim($current_network->path, '/');
			else
				$url = 'http://' . rtrim($current_network->domain, '/') . '/' . trim($current_network->path, '/');
		}
		
		if ( ! in_array( $scheme, array( 'http', 'https', 'relative' ) ) ) {
			if ( is_ssl() && ! is_admin() && 'wp-login.php' !== $pagenow )
				$scheme = 'https';
			else
				$scheme = parse_url( $url, PHP_URL_SCHEME );
		}
		
		$url = set_url_scheme( $url, $scheme );
		
		if ( $path && is_string( $path ) )
			$url .= '/' . ltrim( $path, '/' );
		
		$cached_url = $url;
		return $url;
	}
	
	public static function refreshCachedSiteURL() {
		$pullDirectly = class_exists('WPML_URL_Filters');
		$siteurl = '';
		if ($pullDirectly) {
			//A version of the native get_home_url without the filter call
			$siteurl = self::_site_url_nofilter();
		}
		
		if (function_exists('get_bloginfo') && empty($siteurl)) {
			if (is_multisite()) {
				$siteurl = network_site_url();
			}
			else {
				$siteurl = site_url();
			}
			
			$siteurl = rtrim($siteurl, '/'); //Because previously we used get_bloginfo and it returns http://example.com without a '/' char.
		}
		
		if (wfConfig::get('wp_site_url') !== $siteurl) {
			wfConfig::set('wp_site_url', $siteurl);
		}
	}
	
	/**
	 * Equivalent to network_site_url but uses the cached value for the URL if we have it
	 * to avoid breaking on sites that define it based on the requesting hostname.
	 * 
	 * @param string $path
	 * @param null|string $scheme
	 * @return string
	 */
	public static function wpSiteURL($path = '', $scheme = null) {
		$siteurl = wfConfig::get('wp_site_url', '');
		if (function_exists('get_bloginfo') && empty($siteurl)) {
			if (is_multisite()) {
				$siteurl = network_site_url($path, $scheme);
			}
			else {
				$siteurl = site_url($path, $scheme);
			}
			
			$siteurl = rtrim($siteurl, '/'); //Because previously we used get_bloginfo and it returns http://example.com without a '/' char.
		}
		else {
			$siteurl = set_url_scheme($siteurl, $scheme);
			if ($path && is_string($path)) {
				$siteurl .= '/' . ltrim($path, '/');
			}
		}
		return $siteurl;
	}
	
	/**
	 * Equivalent to network_admin_url but uses the cached value for the URL if we have it
	 * to avoid breaking on sites that define it based on the requesting hostname.
	 *
	 * @param string $path
	 * @param null|string $scheme
	 * @return string
	 */
	public static function wpAdminURL($path = '', $scheme = null) {
		if (!is_multisite()) {
			$adminURL = self::wpSiteURL('wp-admin/', $scheme);
		}
		else {
			$adminURL = self::wpSiteURL('wp-admin/network/', $scheme);
		}
		
		if ($path && is_string($path)) {
			$adminURL .= ltrim($path, '/');
		}
		
		if (!is_multisite()) {
			return apply_filters('admin_url', $adminURL, $path, null);
		}
		
		return apply_filters('network_admin_url', $adminURL, $path);
	}
	
	public static function wafInstallationType() {
		$storage = 'file';
		if (defined('WFWAF_STORAGE_ENGINE')) { $storage = WFWAF_STORAGE_ENGINE; }
		
		try {
			$status = (defined('WFWAF_ENABLED') && !WFWAF_ENABLED) ? 'disabled' : wfWaf::getInstance()->getStorageEngine()->getConfig('wafStatus');
			if (defined('WFWAF_ENABLED') && !WFWAF_ENABLED) {
				return "{$status}|const|{$storage}";
			}
			else if (defined('WFWAF_SUBDIRECTORY_INSTALL') && WFWAF_SUBDIRECTORY_INSTALL) {
				return "{$status}|subdir|{$storage}";
			}
			else if (defined('WFWAF_AUTO_PREPEND') && WFWAF_AUTO_PREPEND) {
				return "{$status}|extended|{$storage}";
			}
			
			return "{$status}|basic|{$storage}";
		}
		catch (Exception $e) {
			//Do nothing
		}
		
		return 'unknown';
	}
	
	public static function hex2bin($string) { //Polyfill for PHP < 5.4
		if (!is_string($string)) { return false; }
		if (strlen($string) % 2 == 1) { return false; }
		return pack('H*', $string);
	}
	
	/**
	 * Returns whether or not the site should be treated as if it's full-time SSL.
	 * 
	 * @return bool
	 */
	public static function isFullSSL() {
		return is_ssl() && parse_url(self::wpHomeURL(), PHP_URL_SCHEME) === 'https'; //It's possible for only wp-admin to be SSL so we check the home URL too
	}

	/**
	 * Identical to the same functions in wfWAFUtils.
	 * 
	 * Set the mbstring internal encoding to a binary safe encoding when func_overload
	 * is enabled.
	 *
	 * When mbstring.func_overload is in use for multi-byte encodings, the results from
	 * strlen() and similar functions respect the utf8 characters, causing binary data
	 * to return incorrect lengths.
	 *
	 * This function overrides the mbstring encoding to a binary-safe encoding, and
	 * resets it to the users expected encoding afterwards through the
	 * `reset_mbstring_encoding` function.
	 *
	 * It is safe to recursively call this function, however each
	 * `mbstring_binary_safe_encoding()` call must be followed up with an equal number
	 * of `reset_mbstring_encoding()` calls.
	 *
	 * @see wfWAFUtils::reset_mbstring_encoding
	 *
	 * @staticvar array $encodings
	 * @staticvar bool  $overloaded
	 *
	 * @param bool $reset Optional. Whether to reset the encoding back to a previously-set encoding.
	 *                    Default false.
	 */
	public static function mbstring_binary_safe_encoding($reset = false) {
		static $encodings = array();
		static $overloaded = null;
		
		if (is_null($overloaded)) {
			// phpcs:ignore PHPCompatibility.IniDirectives.RemovedIniDirectives.mbstring_func_overloadDeprecated
			$overloaded = function_exists('mb_internal_encoding') && (ini_get('mbstring.func_overload') & 2);
		}
		
		if (false === $overloaded) { return; }
		
		if (!$reset) {
			$encoding = mb_internal_encoding();
			array_push($encodings, $encoding);
			mb_internal_encoding('ISO-8859-1');
		}
		
		if ($reset && $encodings) {
			$encoding = array_pop($encodings);
			mb_internal_encoding($encoding);
		}
	}
	
	/**
	 * Reset the mbstring internal encoding to a users previously set encoding.
	 *
	 * @see wfWAFUtils::mbstring_binary_safe_encoding
	 */
	public static function reset_mbstring_encoding() {
		self::mbstring_binary_safe_encoding(true);
	}
	
	/**
	 * @param callable $function
	 * @param array $args
	 * @return mixed
	 */
	protected static function callMBSafeStrFunction($function, $args) {
		self::mbstring_binary_safe_encoding();
		$return = call_user_func_array($function, $args);
		self::reset_mbstring_encoding();
		return $return;
	}
	
	/**
	 * Multibyte safe strlen.
	 *
	 * @param $binary
	 * @return int
	 */
	public static function strlen($binary) {
		$args = func_get_args();
		return self::callMBSafeStrFunction('strlen', $args);
	}
	
	/**
	 * @param $haystack
	 * @param $needle
	 * @param int $offset
	 * @return int
	 */
	public static function stripos($haystack, $needle, $offset = 0) {
		$args = func_get_args();
		return self::callMBSafeStrFunction('stripos', $args);
	}
	
	/**
	 * @param $string
	 * @return mixed
	 */
	public static function strtolower($string) {
		$args = func_get_args();
		return self::callMBSafeStrFunction('strtolower', $args);
	}
	
	/**
	 * @param $string
	 * @param $start
	 * @param $length
	 * @return mixed
	 */
	public static function substr($string, $start, $length = null) {
		if ($length === null) { $length = self::strlen($string); }
		return self::callMBSafeStrFunction('substr', array(
			$string, $start, $length
		));
	}
	
	/**
	 * @param $haystack
	 * @param $needle
	 * @param int $offset
	 * @return mixed
	 */
	public static function strpos($haystack, $needle, $offset = 0) {
		$args = func_get_args();
		return self::callMBSafeStrFunction('strpos', $args);
	}
	
	/**
	 * @param string $haystack
	 * @param string $needle
	 * @param int $offset
	 * @param int $length
	 * @return mixed
	 */
	public static function substr_count($haystack, $needle, $offset = 0, $length = null) {
		if ($length === null) { $length = self::strlen($haystack); }
		return self::callMBSafeStrFunction('substr_count', array(
			$haystack, $needle, $offset, $length
		));
	}
	
	/**
	 * @param $string
	 * @return mixed
	 */
	public static function strtoupper($string) {
		$args = func_get_args();
		return self::callMBSafeStrFunction('strtoupper', $args);
	}
	
	/**
	 * @param string $haystack
	 * @param string $needle
	 * @param int $offset
	 * @return mixed
	 */
	public static function strrpos($haystack, $needle, $offset = 0) {
		$args = func_get_args();
		return self::callMBSafeStrFunction('strrpos', $args);
	}
	
	public static function sets_equal($a1, $a2) {
		if (!is_array($a1) || !is_array($a2)) {
			return false;
		}
		
		if (count($a1) != count($a2)) {
			return false;
		}
		
		sort($a1, SORT_NUMERIC);
		sort($a2, SORT_NUMERIC);
		return $a1 == $a2;
	}
	
	public static function array_first($array) {
		if (empty($array)) {
			return null;
		}
		
		$values = array_values($array);
		return $values[0];
	}
	
	public static function array_last($array) {
		if (empty($array)) {
			return null;
		}
		
		$values = array_values($array);
		return $values[count($values) - 1];
	}
	
	public static function array_strtolower($array) {
		$result = array();
		foreach ($array as $a) {
			$result[] = strtolower($a);
		}
		return $result;
	}
	
	/**
	 * Convenience function to return the value in an array or the given default if not present.
	 * 
	 * @param array $array
	 * @param string|int $key
	 * @param mixed $default
	 * @return mixed|null
	 */
	public static function array_choose($array, $key, $default = null) {
		if (isset($array[$key])) {
			return $array[$key];
		}
		return $default;
	}
	
	public static function array_column($input = null, $columnKey = null, $indexKey = null) { //Polyfill from https://github.com/ramsey/array_column/blob/master/src/array_column.php
		$argc = func_num_args();
		$params = func_get_args();
		if ($argc < 2) {
			trigger_error("array_column() expects at least 2 parameters, {$argc} given", E_USER_WARNING);
			return null;
		}
		
		if (!is_array($params[0])) {
			trigger_error(
				'array_column() expects parameter 1 to be array, ' . gettype($params[0]) . ' given',
				E_USER_WARNING
			);
			return null;
		}
		
		if (!is_int($params[1]) && !is_float($params[1]) && !is_string($params[1]) && $params[1] !== null && !(is_object($params[1]) && method_exists($params[1], '__toString'))) {
			trigger_error('array_column(): The column key should be either a string or an integer', E_USER_WARNING);
			return false;
		}
		
		if (isset($params[2]) && !is_int($params[2]) && !is_float($params[2]) && !is_string($params[2]) && !(is_object($params[2]) && method_exists($params[2], '__toString'))) {
			trigger_error('array_column(): The index key should be either a string or an integer', E_USER_WARNING);
			return false;
		}
		
		$paramsInput = $params[0];
		$paramsColumnKey = ($params[1] !== null) ? (string) $params[1] : null;
		$paramsIndexKey = null;
		if (isset($params[2])) {
			if (is_float($params[2]) || is_int($params[2])) {
				$paramsIndexKey = (int) $params[2];
			}
			else {
				$paramsIndexKey = (string) $params[2];
			}
		}
		
		$resultArray = array();
		foreach ($paramsInput as $row) {
			$key = $value = null;
			$keySet = $valueSet = false;
			if ($paramsIndexKey !== null && array_key_exists($paramsIndexKey, $row)) {
				$keySet = true;
				$key = (string) $row[$paramsIndexKey];
			}
			
			if ($paramsColumnKey === null) {
				$valueSet = true;
				$value = $row;
			}
			elseif (is_array($row) && array_key_exists($paramsColumnKey, $row)) {
				$valueSet = true;
				$value = $row[$paramsColumnKey];
			}
			
			if ($valueSet) {
				if ($keySet) {
					$resultArray[$key] = $value;
				}
				else {
					$resultArray[] = $value;
				}
			}
		}
		
		return $resultArray;
	}
	
	/**
	 * Returns $string if it isn't empty, $ifEmpty if it is.
	 * 
	 * @param string $string
	 * @param string $ifEmpty
	 * @return string
	 */
	public static function string_empty($string, $ifEmpty) {
		if (empty($string)) {
			return $ifEmpty;
		}
		return $string;
	}
	
	/**
	 * Returns the current timestamp, adjusted as needed to get close to what we consider a true timestamp. We use this
	 * because a significant number of servers are using a drastically incorrect time.
	 *
	 * @return int
	 */
	public static function normalizedTime($base = false) {
		if ($base === false) {
			$base = time();
		}
		
		$offset = (int) wfConfig::get('timeoffset_wf', 0);
		return $base + $offset;
	}
	
	/**
	 * Returns what we consider a true timestamp, adjusted as needed to match the local server's drift. We use this
	 * because a significant number of servers are using a drastically incorrect time.
	 *
	 * @return int
	 */
	public static function denormalizedTime($base) {
		$offset = (int) wfConfig::get('timeoffset_wf', 0);
		return $base - $offset;
	}
	
	/**
	 * Returns the number of minutes for the time zone offset from UTC. If $timestamp and using a named time zone, 
	 * it will be adjusted automatically to match whether or not the server's time zone is in Daylight Savings Time.
	 * 
	 * @param bool|int $timestamp Assumed to be in UTC. If false, defaults to the current timestamp.
	 * @return int
	 */
	public static function timeZoneMinutes($timestamp = false) {
		if ($timestamp === false) {
			$timestamp = time();
		}
		
		$tz = get_option('timezone_string');
		if (!empty($tz)) {
			$timezone = new DateTimeZone($tz);
			$dtStr = gmdate("c", (int) $timestamp); //Have to do it this way because of PHP 5.2
			$dt = new DateTime($dtStr, $timezone);
			return (int) ($timezone->getOffset($dt) / 60);
		}
		else {
			$gmt = get_option('gmt_offset');
			if (!empty($gmt)) {
				return (int) ($gmt * 60);
			}
		}
		
		return 0;
	}
	
	/**
	 * Formats and returns the given timestamp using the time zone set for the WordPress installation.
	 * 
	 * @param string $format See the PHP docs on DateTime for the format options. 
	 * @param int|bool $timestamp Assumed to be in UTC. If false, defaults to the current timestamp.
	 * @return string
	 */
	public static function formatLocalTime($format, $timestamp = false) {
		if ($timestamp === false) {
			$timestamp = time();
		}
		
		$utc = new DateTimeZone('UTC');
		$dtStr = gmdate("c", (int) $timestamp); //Have to do it this way because of PHP 5.2
		$dt = new DateTime($dtStr, $utc);
		$tz = get_option('timezone_string');
		if (!empty($tz)) {
			$dt->setTimezone(new DateTimeZone($tz));
		}
		else {
			$gmt = get_option('gmt_offset');
			if (!empty($gmt)) {
				if (PHP_VERSION_ID < 50510) {
					$dtStr = gmdate("c", (int) ($timestamp + $gmt * 3600)); //Have to do it this way because of < PHP 5.5.10
					$dt = new DateTime($dtStr, $utc);
				}
				else {
					$direction = ($gmt > 0 ? '+' : '-');
					$gmt = abs($gmt);
					$h = (int) $gmt;
					$m = ($gmt - $h) * 60;
					$dt->setTimezone(new DateTimeZone($direction . str_pad($h, 2, '0', STR_PAD_LEFT) . str_pad($m, 2, '0', STR_PAD_LEFT)));
				}
			}
		}
		return $dt->format($format);
	}
	
	/**
	 * Parses the given time string and returns its DateTime with the server's configured time zone.
	 * 
	 * @param string $timestring
	 * @return DateTime
	 */
	public static function parseLocalTime($timestring) {
		$utc = new DateTimeZone('UTC');
		$tz = get_option('timezone_string');
		if (!empty($tz)) {
			$tz = new DateTimeZone($tz);
			return new DateTime($timestring, $tz);
		}
		else {
			$gmt = get_option('gmt_offset');
			if (!empty($gmt)) {
				if (PHP_VERSION_ID < 50510) {
					$timestamp = strtotime($timestring);
					$dtStr = gmdate("c", (int) ($timestamp + $gmt * 3600)); //Have to do it this way because of < PHP 5.5.10
					return new DateTime($dtStr, $utc);
				}
				else {
					$direction = ($gmt > 0 ? '+' : '-');
					$gmt = abs($gmt);
					$h = (int) $gmt;
					$m = ($gmt - $h) * 60;
					$tz = new DateTimeZone($direction . str_pad($h, 2, '0', STR_PAD_LEFT) . str_pad($m, 2, '0', STR_PAD_LEFT));
					return new DateTime($timestring, $tz);
				}
			}
		}
		return new DateTime($timestring);
	}
	
	/**
	 * Base64URL-encodes the given payload. This is identical to base64_encode except it substitutes characters
	 * not safe for use in URLs.
	 * 
	 * @param string $payload
	 * @return string
	 */
	public static function base64url_encode($payload) {
		$intermediate = base64_encode($payload);
		$intermediate = rtrim($intermediate, '=');
		$intermediate = str_replace('+', '-', $intermediate);
		$intermediate = str_replace('/', '_', $intermediate);
		return $intermediate;
	}
	
	/**
	 * Base64URL-decodes the given payload. This is identical to base64_encode except it allows for the characters
	 * substituted by base64url_encode.
	 * 
	 * @param string $payload
	 * @return string
	 */
	public static function base64url_decode($payload) {
		$intermediate = str_replace('_', '/', $payload);
		$intermediate = str_replace('-', '+', $intermediate);
		$intermediate = base64_decode($intermediate);
		return $intermediate;
	}
	
	/**
	 * Returns a signed JWT for the given payload. Payload is expected to be an array suitable for JSON-encoding.
	 * 
	 * @param array $payload
	 * @param int $maxAge How long the JWT will be considered valid.
	 * @return string
	 */
	public static function generateJWT($payload, $maxAge = 604800 /* 7 days */) {
		$payload['_exp'] = time() + $maxAge;
		$key = wfConfig::get('longEncKey');
		$header = '{"alg":"HS256","typ":"JWT"}';
		$body = self::base64url_encode($header) . '.' . self::base64url_encode(json_encode($payload));
		$signature = hash_hmac('sha256', $body, $key, true);
		return $body . '.' . self::base64url_encode($signature);
	}
	
	/**
	 * Decodes and returns the payload of a JWT. This also validates the signature.
	 * 
	 * @param string $token
	 * @return array|bool The decoded payload or false if the token is invalid or fails validation.
	 */
	public static function decodeJWT($token) {
		$components = explode('.', $token);
		if (count($components) != 3) {
			return false;
		}
		
		$key = wfConfig::get('longEncKey');
		$body = $components[0] . '.' . $components[1];
		$signature = hash_hmac('sha256', $body, $key, true);
		$testSignature = self::base64url_decode($components[2]);
		if (!hash_equals($signature, $testSignature)) {
			return false;
		}
		
		$json = self::base64url_decode($components[1]);
		$payload = @json_decode($json, true);
		if (isset($payload['_exp']) && $payload['_exp'] < time()) {
			return false;
		}
		return $payload;
	}

	/**
	 * Split a path into its components
	 * @param string $path
	 */
	public static function splitPath($path) {
		return preg_split('/[\\/\\\\]/', $path, -1, PREG_SPLIT_NO_EMPTY);
	}

	/**
	 * Convert an absolute path to a path relative to $to
	 * @param string $absolute the absolute path to convert
	 * @param string $to the absolute path from which to derive the relative path
	 * @param bool $leadingSlash if true, prepend the resultant URL with a slash
	 */
	public static function relativePath($absolute, $to, $leadingSlash = false) {
		$trailingSlash = in_array(substr($absolute, -1), array('/', '\\'));
		$absoluteComponents = self::splitPath($absolute);
		$toComponents = self::splitPath($to);
		$relativeComponents = array();
		do {
			$currentAbsolute = array_shift($absoluteComponents);
			$currentTo = array_shift($toComponents);
		} while($currentAbsolute === $currentTo && $currentAbsolute !== null);
		while ($currentTo !== null) {
			array_push($relativeComponents, '..');
			$currentTo = array_shift($toComponents);
		}
		while ($currentAbsolute !== null) {
			array_push($relativeComponents, $currentAbsolute);
			$currentAbsolute = array_shift($absoluteComponents);
		}
		return implode(array(
			$leadingSlash ? '/' : '',
			implode('/', $relativeComponents),
			($trailingSlash && (count($relativeComponents) > 0 || !$leadingSlash)) ? '/' : ''
		));
	}

	/**
	 * Determine the effective port given the output of parse_url
	 * @param array $urlComponents
	 * @return int the resolved port number
	 */
	private static function resolvePort($urlComponents) {
		if (array_key_exists('port', $urlComponents) && !empty($urlComponents['port'])) {
			return $urlComponents['port'];
		}
		if (array_key_exists('scheme', $urlComponents) && $urlComponents['scheme'] === 'https') {
			return 443;
		}
		return 80;
	}

	/**
	 * Check if two site URLs identify the same site
	 * @param string $a first url
	 * @param string $b second url
	 * @param array $ignoredSubdomains An array of subdomains to ignore when matching (e.g., www)
	 * @return bool true if the URLs match, false otherwise
	 */
	public static function compareSiteUrls($a, $b, $ignoredSubdomains = array()) {
		$patterns = array_map(function($p) { return '/^' . preg_quote($p, '/') . '\\./i'; }, $ignoredSubdomains);
		
		$componentsA = parse_url($a);
		if (isset($componentsA['host'])) { $componentsA['host'] = preg_replace($patterns, '', $componentsA['host']); }
		$componentsB = parse_url($b);
		if (isset($componentsB['host'])) { $componentsB['host'] = preg_replace($patterns, '', $componentsB['host']); }
		foreach (array('host', 'port', 'path') as $component) {
			$valueA = array_key_exists($component, $componentsA) ? $componentsA[$component] : null;
			$valueB = array_key_exists($component, $componentsB) ? $componentsB[$component] : null;
			if ($valueA !== $valueB) {
				if ($component === 'port') {
					$portA = self::resolvePort($componentsA);
					$portB = self::resolvePort($componentsB);
					if ($portA !== $portB)
						return false;
				}
				else {
					return false;
				}
			}
		}
		return true;
	}

	public static function getHomePath() {
		if (!function_exists('get_home_path')) {
			include_once(ABSPATH . 'wp-admin/includes/file.php');
		}
		if (WF_IS_FLYWHEEL)
			return trailingslashit($_SERVER['DOCUMENT_ROOT']);
		return get_home_path();
	}

	public static function includeOnceIfPresent($path) {
		if (file_exists($path)) {
			@include_once($path);
			return @include_once($path); //Calling `include_once` for an already included file will return true
		}
		return false;
	}

	public static function isCurlSupported() {
		if (self::includeOnceIfPresent(ABSPATH . 'wp-includes/class-wp-http-curl.php'))
			return WP_Http_Curl::test();
		return false;
	}

	private static function isValidJsonValue($value) {
		return json_encode($value) !== false;
	}

	private static function filterInvalidJsonValues($data, &$modified, &$valid = null) {
		if (is_array($data)) {
			$modified = array();
			$filtered = array();
			$valid = true;
			foreach ($data as $key => $value) {
				$value = self::filterInvalidJsonValues($value, $itemModified, $itemValid);
				if (($itemValid || $itemModified) && self::isValidJsonValue(array($key => $value))) {
					$filtered[$key] = $value;
					if ($itemModified)
						$modified[$key] = $itemModified;
				}
				else {
					$valid = false;
				}
			}
			return $filtered;
		}
		else {
			$modified = false;
			$valid = self::isValidJsonValue($data);
			if ($valid) {
				return $data;
			}
			else if (is_string($data)) {
				$modified = true;
				return base64_encode($data);
			}
			else {
				return null;
			}
		}
	}

	public static function jsonEncodeSafely($data) {
		$encoded = json_encode($data);
		if ($encoded === false) {
			$data = self::filterInvalidJsonValues($data, $modified);
			if ($modified)
				$data['__modified__'] = $modified;
			$encoded = json_encode($data);
		}
		return $encoded;
	}
	
	/**
	 * Convenience function to extract a matched pattern from a string. If $pattern has no matching groups, the entire
	 * matched portion is returned. If it has at least one matching group, the first one is returned (others are 
	 * ignored). If there is no match, false is returned.
	 * 
	 * @param string $pattern
	 * @param string $subject
	 * @param bool $expandToLine Whether or not to expand the captured value to include the entire line's contents
	 * @return false|string
	 */
	public static function pregExtract($pattern, $subject, $expandToLine = false) {
		if (preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE)) {
			if (count($matches) > 1) {
				$start = $matches[1][1];
				$text = $matches[1][0];
				$end = $start + strlen($text);
			}
			else {
				$start = $matches[0][1];
				$text = $matches[0][0];
				$end = $start + strlen($text);
			}
			
			if ($expandToLine) {
				if (preg_match_all('/[\r\n]/', substr($subject, 0, $start), $matches, PREG_OFFSET_CAPTURE)) {
					$start = $matches[0][count($matches[0]) - 1][1] + 1;
				}
				else {
					$start = 0;
				}
				
				if (preg_match('/[\r\n]/', $subject, $matches, PREG_OFFSET_CAPTURE, $end)) {
					$end = $matches[0][1];
				}
				else {
					$end = strlen($subject) - 0;
				}
				
				$text = substr($subject, $start, $end - $start);
			}
			
			return $text;
		}
		return false;
	}
	
	/**
	 * Returns whether or not MySQLi should be used directly when needed. Returns true if there's a valid DB handle,
	 * our database test succeeded, our constant is not set to prevent it, and then either $wpdb indicates it's using
	 * mysqli (older WordPress versions) or we're on PHP 7+ (only mysqli is ever used).
	 * 
	 * @return bool
	 */
	public static function useMySQLi() {
		global $wpdb;
		$dbh = $wpdb->dbh;
		$useMySQLi = (is_object($dbh) && (PHP_MAJOR_VERSION >= 7 || $wpdb->use_mysqli) && wfConfig::get('allowMySQLi', true) && WORDFENCE_ALLOW_DIRECT_MYSQLI);
		return $useMySQLi;
	}
}

// GeoIP lib uses these as well
if (!function_exists('inet_ntop')) {
	function inet_ntop($ip) {
		return wfUtils::_inet_ntop($ip);
	}
}
if (!function_exists('inet_pton')) {
	function inet_pton($ip) {
		return wfUtils::_inet_pton($ip);
	}
}


class wfWebServerInfo {

	const APACHE = 1;
	const NGINX = 2;
	const LITESPEED = 4;
	const IIS = 8;

	private $handler;
	private $software;
	private $softwareName;

	/**
	 *
	 */
	public static function createFromEnvironment() {
		$serverInfo = new self;
		$sapi = php_sapi_name();
		if (WF_IS_FLYWHEEL) {
			$serverInfo->setSoftware(self::NGINX);
			$serverInfo->setSoftwareName('Flywheel');
		}
		else if (strpos($_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS') !== false || strpos($_SERVER['SERVER_SOFTWARE'], 'ExpressionDevServer') !== false) {
			$serverInfo->setSoftware(self::IIS);
			$serverInfo->setSoftwareName('iis');
		}
		else if (strpos($_SERVER['SERVER_SOFTWARE'], 'nginx') !== false) {
			$serverInfo->setSoftware(self::NGINX);
			$serverInfo->setSoftwareName('nginx');
		}
		else if (stripos($_SERVER['SERVER_SOFTWARE'], 'litespeed') !== false || $sapi == 'litespeed') {
			$serverInfo->setSoftware(self::LITESPEED);
			$serverInfo->setSoftwareName('litespeed');
		}
		else if (stripos($_SERVER['SERVER_SOFTWARE'], 'apache') !== false) {
			$serverInfo->setSoftware(self::APACHE);
			$serverInfo->setSoftwareName('apache');
		}

		$serverInfo->setHandler($sapi);

		return $serverInfo;
	}

	/**
	 * @return bool
	 */
	public function isApache() {
		return $this->getSoftware() === self::APACHE;
	}

	/**
	 * @return bool
	 */
	public function isNGINX() {
		return $this->getSoftware() === self::NGINX;
	}

	/**
	 * @return bool
	 */
	public function isLiteSpeed() {
		return $this->getSoftware() === self::LITESPEED;
	}

	/**
	 * @return bool
	 */
	public function isIIS() {
		return $this->getSoftware() === self::IIS;
	}

	/**
	 * @return bool
	 */
	public function isApacheModPHP() {
		return $this->isApache() && function_exists('apache_get_modules');
	}

	/**
	 * Not sure if this can be implemented at the PHP level.
	 * @return bool
	 */
	public function isApacheSuPHP() {
		return $this->isApache() && $this->isCGI() &&
			function_exists('posix_getuid') &&
			getmyuid() === posix_getuid();
	}

	/**
	 * @return bool
	 */
	public function isCGI() {
		return !$this->isFastCGI() && stripos($this->getHandler(), 'cgi') !== false;
	}

	/**
	 * @return bool
	 */
	public function isFastCGI() {
		return stripos($this->getHandler(), 'fastcgi') !== false || stripos($this->getHandler(), 'fpm-fcgi') !== false;
	}

	/**
	 * @return mixed
	 */
	public function getHandler() {
		return $this->handler;
	}

	/**
	 * @param mixed $handler
	 */
	public function setHandler($handler) {
		$this->handler = $handler;
	}

	/**
	 * @return mixed
	 */
	public function getSoftware() {
		return $this->software;
	}

	/**
	 * @param mixed $software
	 */
	public function setSoftware($software) {
		$this->software = $software;
	}

	/**
	 * @return mixed
	 */
	public function getSoftwareName() {
		return $this->softwareName;
	}

	/**
	 * @param mixed $softwareName
	 */
	public function setSoftwareName($softwareName) {
		$this->softwareName = $softwareName;
	}
}lib/wfDashboard.php000064400000020317150755146450010266 0ustar00<?php

class wfDashboard {
	const SCAN_SUCCESS = 1;
	const SCAN_FAILED = 0;
	const SCAN_NEVER_RAN = -1;
	const SCAN_WARNINGS = 2;
	
	const FEATURE_ENABLED = 1;
	const FEATURE_DISABLED = 0;
	const FEATURE_PREMIUM = -1;
	
	public $scanLastCompletion;
	public $scanLastStatusMessage;
	public $scanLastStatus;
	
	public $notifications = array();
	
	public $features = array();
	
	public $lastGenerated;
	
	public $tdfCommunity;
	public $tdfPremium;
	
	public $ips24h;
	public $ips7d;
	public $ips30d;
	
	public $loginsSuccess;
	public $loginsFail;
	
	public $localBlocks;
	
	public $networkBlock24h;
	public $networkBlock7d;
	public $networkBlock30d;
	
	public $countriesLocal;
	public $countriesNetwork;
	public $wordfenceCentralConnected;
	public $wordfenceCentralConnectTime;
	public $wordfenceCentralConnectEmail;
	public $wordfenceCentralDisconnected;
	public $wordfenceCentralDisconnectTime;
	public $wordfenceCentralDisconnectEmail;

	public static function processDashboardResponse($data) {
		if (isset($data['notifications'])) {
			foreach ($data['notifications'] as $n) {
				if (!isset($n['id']) || !isset($n['priority']) || !isset($n['html'])) {
					continue;
				}
				
				new wfNotification($n['id'], $n['priority'], $n['html'], (isset($n['category']) ? $n['category'] : null));
			}
			
			unset($data['notifications']);
		}
		
		if (isset($data['revoked'])) {
			foreach ($data['revoked'] as $r) {
				if (!isset($r['id'])) {
					continue;
				}
				
				$notification = wfNotification::getNotificationForID($r['id']);
				if ($notification !== null) {
					$notification->markAsRead();
				}
			}
			
			unset($data['revoked']);
		}
		wfConfig::set_ser('dashboardData', $data, false, wfConfig::DONT_AUTOLOAD);
	}
	
	public function __construct() {
		// Scan values
		$lastScanCompleted = wfConfig::get('lastScanCompleted');
		if ($lastScanCompleted === false || empty($lastScanCompleted)) {
			$this->scanLastStatus = self::SCAN_NEVER_RAN;
		}
		else if ($lastScanCompleted == 'ok') {
			$this->scanLastStatus = self::SCAN_SUCCESS;
			
			$i = new wfIssues();
			$this->scanLastCompletion = (int) wfScanner::shared()->lastScanTime();
			$issueCount = $i->getIssueCount();
			if ($issueCount) {
				$this->scanLastStatus = self::SCAN_WARNINGS;
				$this->scanLastStatusMessage = "{$issueCount} issue" . ($issueCount == 1 ? ' found' : 's found');
			}
		} 
		else {
			$this->scanLastStatus = self::SCAN_FAILED;
			$n = wfNotification::getNotificationForCategory('wfplugin_scan', false);
			if ($n !== null) {
				$this->scanLastStatusMessage = $n->html;
			}
			else {
				$this->scanLastStatusMessage = esc_html(substr($lastScanCompleted, 0, 100) . (strlen($lastScanCompleted) > 100 ? '...' : ''));
			}
		}
		
		// Notifications
		$this->notifications = wfNotification::notifications();
		
		// Features
		$countryBlocking = self::FEATURE_PREMIUM;
		if (wfConfig::get('isPaid')) {
			$countryBlocking = self::FEATURE_DISABLED;
			$countryList = wfConfig::get('cbl_countries');
			if (!empty($countryList) && (wfConfig::get('cbl_loggedInBlocked', false) || wfConfig::get('cbl_loginFormBlocked', false) || wfConfig::get('cbl_restOfSiteBlocked', false))) {
				$countryBlocking = self::FEATURE_ENABLED;
			}
		}
		
		$this->features = array(); //Deprecated
		
		$data = wfConfig::get_ser('dashboardData');
		$lastChecked = wfConfig::get('lastDashboardCheck', 0);
		if ((!is_array($data) || (isset($data['generated']) && $data['generated'] + 3600 < time())) && $lastChecked + 3600 < time()) {
			$wp_version = wfUtils::getWPVersion();
			$apiKey = wfConfig::get('apiKey');
			$api = new wfAPI($apiKey, $wp_version);
			wfConfig::set('lastDashboardCheck', time());
			try {
				$json = $api->getStaticURL('/stats.json');
				$data = @json_decode($json, true);
				if ($json && is_array($data)) {
					self::processDashboardResponse($data);
				}
			}
			catch (Exception $e) {
				//Do nothing
			}
		}
		
		// Last Generated
		if (is_array($data) && isset($data['generated'])) {
			$this->lastGenerated = $data['generated'];
		}
		
		// TDF
		if (is_array($data) && isset($data['tdf']) && isset($data['tdf']['community'])) {
			$this->tdfCommunity = (int) $data['tdf']['community'];
			$this->tdfPremium = (int) $data['tdf']['premium'];
		}
		
		// Top IPs Blocked
		$activityReport = new wfActivityReport();
		$this->ips24h = (array) $activityReport->getTopIPsBlocked(100, 1);
		foreach ($this->ips24h as &$r24h) {
			$r24h = (array) $r24h;
			if (empty($r24h['countryName'])) { $r24h['countryName'] = 'Unknown'; }
		}
		$this->ips7d = (array) $activityReport->getTopIPsBlocked(100, 7);
		foreach ($this->ips7d as &$r7d) {
			$r7d = (array) $r7d;
			if (empty($r7d['countryName'])) { $r7d['countryName'] = 'Unknown'; }
		}
		$this->ips30d = (array) $activityReport->getTopIPsBlocked(100, 30);
		foreach ($this->ips30d as &$r30d) {
			$r30d = (array) $r30d;
			if (empty($r30d['countryName'])) { $r30d['countryName'] = 'Unknown'; }
		}
		
		// Recent Logins
		$logins = wordfence::getLog()->getHits('logins', 'loginLogout', 0, 200);
		$this->loginsSuccess = array();
		$this->loginsFail = array();
		foreach ($logins as $l) {
			if ($l['fail']) {
				$this->loginsFail[] = array('t' => $l['ctime'], 'name' => $l['username'], 'ip' => $l['IP']);
			}
			else if ($l['action'] != 'logout') {
				$this->loginsSuccess[] = array('t' => $l['ctime'], 'name' => $l['username'], 'ip' => $l['IP']);
			}
		}
		
		// Local Attack Data
		$this->localBlocks = array();
		$this->localBlocks[] = array('title' => __('Complex', 'wordfence'), 'type' => wfActivityReport::BLOCK_TYPE_COMPLEX,
			'24h' => (int) $activityReport->getBlockedCount(1, wfActivityReport::BLOCK_TYPE_COMPLEX),
			'7d' => (int) $activityReport->getBlockedCount(7, wfActivityReport::BLOCK_TYPE_COMPLEX),
			'30d' => (int) $activityReport->getBlockedCount(30, wfActivityReport::BLOCK_TYPE_COMPLEX),
		);
		$this->localBlocks[] = array('title' => __('Brute Force', 'wordfence'), 'type' => wfActivityReport::BLOCK_TYPE_BRUTE_FORCE,
			'24h' => (int) $activityReport->getBlockedCount(1, wfActivityReport::BLOCK_TYPE_BRUTE_FORCE),
			'7d' => (int) $activityReport->getBlockedCount(7, wfActivityReport::BLOCK_TYPE_BRUTE_FORCE),
			'30d' => (int) $activityReport->getBlockedCount(30, wfActivityReport::BLOCK_TYPE_BRUTE_FORCE),
		);
		$this->localBlocks[] = array('title' => __('Blocklist', 'wordfence'), 'type' => wfActivityReport::BLOCK_TYPE_BLACKLIST,
			'24h' => (int) $activityReport->getBlockedCount(1, wfActivityReport::BLOCK_TYPE_BLACKLIST),
			'7d' => (int) $activityReport->getBlockedCount(7, wfActivityReport::BLOCK_TYPE_BLACKLIST),
			'30d' => (int) $activityReport->getBlockedCount(30, wfActivityReport::BLOCK_TYPE_BLACKLIST),
		);
		
		// Network Attack Data
		if (is_array($data) && isset($data['attackdata']) && isset($data['attackdata']['24h'])) {
			$this->networkBlock24h = $data['attackdata']['24h'];
			$this->networkBlock7d = $data['attackdata']['7d'];
			$this->networkBlock30d = $data['attackdata']['30d'];
		}
		
		// Blocked Countries
		$this->countriesLocal = (array) $activityReport->getTopCountriesBlocked(10, 7);
		foreach ($this->countriesLocal as &$rLocal) {
			$rLocal = (array) $rLocal;
			if (empty($rLocal['countryName'])) { $rLocal['countryName'] = 'Unknown'; }
		}
		
		if (is_array($data) && isset($data['countries']) && isset($data['countries']['7d'])) {
			$networkCountries = array();
			foreach ($data['countries']['7d'] as $rNetwork) {
				$countryCode = $rNetwork['cd'];
				$countryName = $activityReport->getCountryNameByCode($countryCode);
				if (empty($countryName)) { $countryName = 'Unknown'; }
				$totalBlockCount = $rNetwork['ct'];
				$networkCountries[] = array('countryCode' => $countryCode, 'countryName' => $countryName, 'totalBlockCount' => $totalBlockCount);
			}
			$this->countriesNetwork = $networkCountries;
		}

		// Wordfence Central
		$this->wordfenceCentralConnected = wfCentral::_isConnected(); // This value is cached.
		$this->wordfenceCentralConnectTime = wfConfig::get('wordfenceCentralConnectTime');
		$this->wordfenceCentralConnectEmail = wfConfig::get('wordfenceCentralConnectEmail');
		$this->wordfenceCentralDisconnected = wfConfig::get('wordfenceCentralDisconnected');
		$this->wordfenceCentralDisconnectTime = wfConfig::get('wordfenceCentralDisconnectTime');
		$this->wordfenceCentralDisconnectEmail = wfConfig::get('wordfenceCentralDisconnectEmail');
	}
}
lib/IPTraf.php000064400000002246150755146450007170 0ustar00<?php if (!defined('WORDFENCE_VERSION')) { exit; } ?>
<?php if(! wfUtils::isAdmin()){ exit(); } ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"  dir="ltr" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel='stylesheet' id='wordfence-main-style-css'  href='<?php echo wfUtils::getBaseURL() . wfUtils::versionedAsset('css/iptraf.css'); ?>?ver=<?php echo WORDFENCE_VERSION; ?>' type='text/css' media='all' />
</head>
<body>
<h1><?php echo esc_html(sprintf(
	/* translators: IP address. */
		__('Wordfence: All recent hits for IP address %s', 'wordfence'), wp_kses($IP, array()) . (($reverseLookup) ? '[' . wp_kses($reverseLookup, array()) . ']' : ''))) ?></h1>
<div class="footer"><?php echo wp_kses(sprintf(
	/* translators: 1. year (2011). 2. year (2020) */
		__('&copy;&nbsp;%d to %d Wordfence &mdash; Visit <a href="http://wordfence.com/">Wordfence.com</a> for help, security updates and more.', 'wordfence'), date_i18n('Y', WORDFENCE_EPOCH), date_i18n('Y')), array('a'=>array('href'=>array()))) ?></div>
</body>
</html>lib/wfDiagnostic.php000064400000204335150755146450010467 0ustar00<?php

require_once __DIR__ . '/wfCurlInterceptor.php';

class wfGrant
{
	public $select = false;
	public $update = false;
	public $insert = false;
	public $delete = false;
	public $alter = false;
	public $create = false;
	public $drop = false;

	public static function get()
	{
		static $instance;
		if ($instance === null) {
			$instance = new self;
		}
		return $instance;
	}
	
	private function __construct()
	{
		global $wpdb;
		$rows = $wpdb->get_results("SHOW GRANTS FOR current_user()", ARRAY_N);
		
		foreach ($rows as $row) {
			preg_match("/GRANT (.+) ON (.+) TO/", $row[0], $matches);
			foreach (explode(",", $matches[1]) as $permission) {
				$permission = str_replace(" ", "_", trim(strtolower($permission)));
				if ($permission === 'all_privileges') {
					foreach ($this as $key => $value) {
						$this->$key = true;
					}
					break 2;
				}
				if (property_exists($this, $permission))
					$this->$permission = true;
			}
		}
	}
}

class wfDiagnostic
{
	protected $minVersion = array(
		'PHP' => '5.6.20',
		'cURL' => '1.0',
	);

	protected $description = false; //Defined in the constructor to allow for localization

	protected $results = array();

	public function __construct()
	{
		$this->description = array(
			'Wordfence Status' => array(
				'description' => __('General information about the Wordfence installation.', 'wordfence'),
				'tests' => array(
					'wfVersion' => __('Wordfence Version', 'wordfence'),
					'geoIPVersion' => __('GeoIP Version', 'wordfence'),
					'cronStatus' => __('Cron Status', 'wordfence'),
				),
			),
			'Filesystem' => array(
				'description' => __('Ability to read/write various files.', 'wordfence'),
				'tests' => array(
					'isPluginReadable' => __('Checking if web server can read from <code>~/plugins/wordfence</code>', 'wordfence'),
					'isPluginWritable' => __('Checking if web server can write to <code>~/plugins/wordfence</code>', 'wordfence'),
					'isWAFReadable' => __('Checking if web server can read from <code>~/wp-content/wflogs</code>', 'wordfence'),
					'isWAFWritable' => __('Checking if web server can write to <code>~/wp-content/wflogs</code>', 'wordfence'),
				),
			),
			'Wordfence Config' => array(
				'description' => __('Ability to save Wordfence settings to the database.', 'wordfence'),
				'tests' => array(
					'configWritableSet' => __('Checking basic config reading/writing', 'wordfence'),
					'configWritableSetSer' => __('Checking serialized config reading/writing', 'wordfence'),
				),
			),
			'Wordfence Firewall' => array(
				'description' => __('Current WAF configuration.', 'wordfence'),
				'tests' => array(
					'wafAutoPrepend' => __('WAF auto prepend active', 'wordfence'),
					'wafStorageEngine' => __('Configured WAF storage engine (WFWAF_STORAGE_ENGINE)', 'wordfence'),
					'wafActiveStorageEngine' => __('Active WAF storage engine', 'wordfence'),
					'wafLogPath' => __('WAF log path', 'wordfence'),
					'wafSubdirectoryInstall' => __('WAF subdirectory installation', 'wordfence'),
					'wafAutoPrependFilePath' => __('wordfence-waf.php path', 'wordfence'),
					'wafFilePermissions' => __('WAF File Permissions', 'wordfence'),
					'wafRecentlyRemoved' => __('Recently removed wflogs files', 'wordfence'),
					'wafLoaded' => __('WAF Loaded Successfully', 'wordfence'),
					'wafAutoPrependHtaccess' => __('WAF .htaccess contents', 'wordfence'),
					'wafAutoPrependUserIni' => __('WAF .user.ini contents', 'wordfence'),
					'wafAutoPrependHtaccessOther' => __('.htaccess other auto prepend', 'wordfence'),
					'wafAutoPrependUserIniOther' => __('.user.ini other auto prepend', 'wordfence'),
				),
			),
			'MySQL' => array(
				'description' => __('Database version and privileges.', 'wordfence'),
				'tests' => array(
					'databaseVersion' => __('Database Version', 'wordfence'),
					'userCanDelete' => __('Checking if MySQL user has <code>DELETE</code> privilege', 'wordfence'),
					'userCanInsert' => __('Checking if MySQL user has <code>INSERT</code> privilege', 'wordfence'),
					'userCanUpdate' => __('Checking if MySQL user has <code>UPDATE</code> privilege', 'wordfence'),
					'userCanSelect' => __('Checking if MySQL user has <code>SELECT</code> privilege', 'wordfence'),
					'userCanCreate' => __('Checking if MySQL user has <code>CREATE TABLE</code> privilege', 'wordfence'),
					'userCanAlter'  => __('Checking if MySQL user has <code>ALTER TABLE</code> privilege', 'wordfence'),
					'userCanDrop'   => __('Checking if MySQL user has <code>DROP</code> privilege', 'wordfence'),
					'userCanTruncate'   => __('Checking if MySQL user has <code>TRUNCATE</code> privilege', 'wordfence'),
				)
			),
			'PHP Environment' => array(
				'description' => __('PHP version, important PHP extensions.', 'wordfence'),
				'tests' => array(
					'phpVersion' => array('raw' => true, 'value' => wp_kses(sprintf(/* translators: Support URL. */ __('PHP version >= PHP 5.6.20<br><em> (<a href="https://wordpress.org/about/requirements/" target="_blank" rel="noopener noreferrer">Minimum version required by WordPress</a>)</em> <a href="%s" target="_blank" rel="noopener noreferrer" class="wfhelp"><span class="screen-reader-text"> (opens in new tab)</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_VERSION_PHP)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array(), 'class'=>array()), 'span'=>array('class'=>array())))),
					'processOwner' => __('Process Owner', 'wordfence'),
					'hasOpenSSL' => __('Checking for OpenSSL support', 'wordfence'),
					'openSSLVersion' => __('Checking OpenSSL version', 'wordfence'),
					'hasCurl'    => __('Checking for cURL support', 'wordfence'),
					'curlFeatures'    => __('cURL Features Code', 'wordfence'),
					'curlHost'    => __('cURL Host', 'wordfence'),
					'curlProtocols'    => __('cURL Support Protocols', 'wordfence'),
					'curlSSLVersion'    => __('cURL SSL Version', 'wordfence'),
					'curlLibZVersion'    => __('cURL libz Version', 'wordfence'),
					'displayErrors' => array('raw' => true, 'value' => wp_kses(__('Checking <code>display_errors</code><br><em> (<a href="http://php.net/manual/en/errorfunc.configuration.php#ini.display-errors" target="_blank" rel="noopener noreferrer">Should be disabled on production servers<span class="screen-reader-text"> (opens in new tab)</span></a>)</em>', 'wordfence'), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()), 'span'=>array('class'=>array()), 'em'=>array(), 'code'=>array(), 'br'=>array()))),
				)
			),
			'Connectivity' => array(
				'description' => __('Ability to connect to the Wordfence servers and your own site.', 'wordfence'),
				'tests' => array(
					'connectToServer2' => __('Connecting to Wordfence servers (https)', 'wordfence'),
					'connectToSelf' => __('Connecting back to this site', 'wordfence'),
					'connectToSelfIpv6' => array('raw' => true, 'value' => wp_kses(sprintf(__('Connecting back to this site via IPv6 (not required; failure to connect may not be an issue on some sites) <a href="%s" target="_blank" rel="noopener noreferrer" class="wfhelp"><span class="screen-reader-text"> (opens in new tab)</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_DIAGNOSTICS_IPV6)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array(), 'class'=>array()), 'span'=>array('class'=>array())))),
					'serverIP' => __('IP(s) used by this server', 'wordfence'),
				)
			),
			'Time' => array(
				'description' => __('Server time accuracy and applied offsets.', 'wordfence'),
				'tests' => array(
					'wfTime' => __('Wordfence Network Time', 'wordfence'),
					'serverTime' => __('Server Time', 'wordfence'),
					'wfTimeOffset' => __('Wordfence Network Time Offset', 'wordfence'),
					'ntpTimeOffset' => __('NTP Time Offset', 'wordfence'),
					'ntpStatus' => __('NTP Status', 'wordfence'),
					'timeSourceInUse' => __('TOTP Time Source', 'wordfence'),
					'wpTimeZone' => __('WordPress Time Zone', 'wordfence'),
				),
			),
		);
		
		foreach ($this->description as $title => $tests) {
			$this->results[$title] = array(
				'description' => $tests['description'],
			);
			foreach ($tests['tests'] as $name => $description) {
				if (!method_exists($this, $name)) {
					continue;
				}
				
				$result = $this->$name();

				if (is_bool($result)) {
					$result = array(
						'test'    => $result,
						'message' => $result ? 'OK' : 'FAIL',
					);
				}

				$result['label'] = $description;
				$result['name'] = $name;

				$this->results[$title]['results'][] = $result;
			}
		}
	}

	public function getResults()
	{
		return $this->results;
	}
	
	public function wfVersion() {
		return array('test' => true, 'message' => WORDFENCE_VERSION . ' (' . WORDFENCE_BUILD_NUMBER . ')');
	}
	
	public function geoIPVersion() {
		return array('test' => true, 'infoOnly' => true, 'message' => wfUtils::geoIPVersion());
	}
	
	public function cronStatus() {
		$cron = _get_cron_array();
		$overdue = 0;
		foreach ($cron as $timestamp => $values) {
			if (is_array($values)) {
				foreach ($values as $cron_job => $v) {
					if (is_numeric($timestamp)) {
						if ((time() - 1800) > $timestamp) { $overdue++; }
					}
				}
			}
		}
		
		return array('test' => true, 'infoOnly' => true, 'message' => $overdue ? sprintf(/* translators: Number of jobs. */ _n('%d Job Overdue', '%d Jobs Overdue', $overdue, 'wordfence'), $overdue) : __('Normal', 'wordfence'));
	}
	
	public function geoIPError() {
		$error = wfUtils::last_error('geoip');
		return array('test' => true, 'infoOnly' => true, 'message' => $error ? $error : __('None', 'wordfence'));
	}

	public function isPluginReadable() {
		return is_readable(WORDFENCE_PATH);
	}

	public function isPluginWritable() {
		return is_writable(WORDFENCE_PATH);
	}
	
	public function isWAFReadable() {
		if (!is_readable(WFWAF_LOG_PATH)) {
			if (defined('WFWAF_STORAGE_ENGINE') && WFWAF_STORAGE_ENGINE == 'mysqli') {
				return array('test' => false, 'infoOnly' => true, 'message' => __('No files readable', 'wordfence'));
			}
			
			return array('test' => false, 'message' => __('No files readable', 'wordfence'));
		}
		
		$files = array(
			WFWAF_LOG_PATH . 'attack-data.php', 
			WFWAF_LOG_PATH . 'ips.php', 
			WFWAF_LOG_PATH . 'config.php',
			WFWAF_LOG_PATH . 'rules.php',
		);
		$unreadable = array();
		foreach ($files as $f) {
			if (!file_exists($f)) {
				$unreadable[] = sprintf(__('File "%s" does not exist', 'wordfence'), basename($f));
			}
			else if (!is_readable($f)) {
				$unreadable[] = sprintf(/* translators: File path. */ __('File "%s" is unreadable', 'wordfence'), basename($f));
			}
		}
		
		if (count($unreadable) > 0) {
			if (defined('WFWAF_STORAGE_ENGINE') && WFWAF_STORAGE_ENGINE == 'mysqli') {
				return array('test' => false, 'infoOnly' => true, 'message' => implode(', ', $unreadable));
			}
			
			return array('test' => false, 'message' => implode(', ', $unreadable));
		}
		
		return true;
	}
	
	public function isWAFWritable() {
		if (!is_writable(WFWAF_LOG_PATH)) {
			if (defined('WFWAF_STORAGE_ENGINE') && WFWAF_STORAGE_ENGINE == 'mysqli') {
				return array('test' => false, 'infoOnly' => true, 'message' => __('No files writable', 'wordfence'));
			}
			
			return array('test' => false, 'message' => __('No files writable', 'wordfence'));
		}
		
		$files = array(
			WFWAF_LOG_PATH . 'attack-data.php',
			WFWAF_LOG_PATH . 'ips.php',
			WFWAF_LOG_PATH . 'config.php',
			WFWAF_LOG_PATH . 'rules.php',
		);
		$unwritable = array();
		foreach ($files as $f) {
			if (!file_exists($f)) {
				$unwritable[] = sprintf(/* translators: File name. */__('File "%s" does not exist', 'wordfence'), basename($f));
			}
			else if (!is_writable($f)) {
				$unwritable[] = sprintf(/* translators: File name. */__('File "%s" is unwritable', 'wordfence'), basename($f));
			}
		}
		
		if (count($unwritable) > 0) {
			if (defined('WFWAF_STORAGE_ENGINE') && WFWAF_STORAGE_ENGINE == 'mysqli') {
				return array('test' => false, 'infoOnly' => true, 'message' => implode(', ', $unwritable));
			}
			
			return array('test' => false, 'message' => implode(', ', $unwritable));
		}
		
		return true;
	}
	
	public function databaseVersion() {
		global $wpdb;
		$version = $wpdb->get_var("SELECT VERSION()");
		return array('test' => true, 'message' => $version);
	}

	public function userCanInsert() {
		return wfGrant::get()->insert;
	}
	
	public function userCanUpdate() {
		return wfGrant::get()->update;
	}

	public function userCanDelete() {
		return wfGrant::get()->delete;
	}

	public function userCanSelect() {
		return wfGrant::get()->select;
	}

	public function userCanCreate() {
		return wfGrant::get()->create;
	}

	public function userCanDrop() {
		return wfGrant::get()->drop;
	}

	public function userCanTruncate() {
		return wfGrant::get()->drop && wfGrant::get()->delete;
	}

	public function userCanAlter() {
		return wfGrant::get()->alter;
	}

	public function phpVersion()
	{
		return array(
			'test' => version_compare(phpversion(), $this->minVersion['PHP'], '>='),
			'message'  => phpversion(),
		);
	}
	
	public function configWritableSet() {
		global $wpdb;
		$show = $wpdb->hide_errors();
		$val = md5(time());
		wfConfig::set('configWritingTest', $val, wfConfig::DONT_AUTOLOAD);
		$testVal = wfConfig::get('configWritingTest');
		$wpdb->show_errors($show);
		return array(
			'test' => ($val === $testVal),
			'message' => __('Basic config writing', 'wordfence')
		);
	}
	public function configWritableSetSer() {
		global $wpdb;
		$show = $wpdb->hide_errors();
		$val = md5(time());
		wfConfig::set_ser('configWritingTest_ser', array($val), false, wfConfig::DONT_AUTOLOAD);
		$testVal = @array_shift(wfConfig::get_ser('configWritingTest_ser', array(), false));
		$wpdb->show_errors($show);
		return array(
			'test' => ($val === $testVal),
			'message' => __('Serialized config writing', 'wordfence')
		);
	}

	public function wafAutoPrepend() {
		return array('test' => true, 'infoOnly' => true, 'message' => (defined('WFWAF_AUTO_PREPEND') && WFWAF_AUTO_PREPEND ? __('Yes', 'wordfence') : __('No', 'wordfence')));
	}
	public function wafAutoPrependHtaccess() {
		$htaccessPath = wfWAFAutoPrependHelper::getHtaccessPath();
		if (!file_exists($htaccessPath)) {
			return array('test' => true, 'infoOnly' => true, 'message' => __('(.htaccess not present)', 'wordfence'));
		}
		else if (!is_readable($htaccessPath)) {
			return array('test' => true, 'infoOnly' => true, 'message' => __('(.htaccess not readable)', 'wordfence'));
		}
		
		$htaccessContents = file_get_contents($htaccessPath);
		$section = wfWAFAutoPrependHelper::getHtaccessSectionContent($htaccessContents);
		if ($section === false) {
			return array('test' => true, 'infoOnly' => true, 'message' => __('(not set)', 'wordfence'));
		}
		
		$snippet = wfUtils::pregExtract("/auto_prepend_file\s+['\"]?[^'\"]*['\"]?/", $section);
		return array('test' => true, 'infoOnly' => true, 'message' => $snippet, 'detail' => array('escaped' => nl2br(esc_html($section)), 'textonly' => $section));
	}
	public function wafAutoPrependHtaccessOther() {
		$htaccessPath = wfWAFAutoPrependHelper::getHtaccessPath();
		if (!file_exists($htaccessPath)) {
			return array('test' => true, 'infoOnly' => true, 'message' => __('(.htaccess not present)', 'wordfence'));
		}
		else if (!is_readable($htaccessPath)) {
			return array('test' => true, 'infoOnly' => true, 'message' => __('(.htaccess not readable)', 'wordfence'));
		}
		
		$htaccessContents = file_get_contents($htaccessPath);
		$section = wfWAFAutoPrependHelper::getHtaccessSectionContent($htaccessContents);
		if ($section !== false) {
			$htaccessContents = str_replace($section, '', $htaccessContents);
		}
		
		$snippet = wfUtils::pregExtract("/auto_prepend_file\s+['\"]?[^'\"]*['\"]?/", $htaccessContents, true);
		return array('test' => true, 'infoOnly' => true, 'message' => ($snippet === false ? __('(not present)', 'wordfence') : trim($snippet)));
	}
	public function wafAutoPrependUserIni() {
		$userIniPath = wfWAFAutoPrependHelper::getUserIniPath();
		if (!file_exists($userIniPath)) {
			return array('test' => true, 'infoOnly' => true, 'message' => __('(.user.ini not present)', 'wordfence'));
		}
		else if (!is_readable($userIniPath)) {
			return array('test' => true, 'infoOnly' => true, 'message' => __('(.user.ini not readable)', 'wordfence'));
		}
		
		$userIniContents = file_get_contents($userIniPath);
		$section = wfWAFAutoPrependHelper::getUserIniSectionContent($userIniContents);
		if ($section === false) {
			return array('test' => true, 'infoOnly' => true, 'message' => __('(not set)', 'wordfence'));
		}
		
		$snippet = wfUtils::pregExtract("/auto_prepend_file\s*=\s*['\"]?[^'\"]*['\"]?/", $section);
		return array('test' => true, 'infoOnly' => true, 'message' => $snippet, 'detail' => $section);
	}
	public function wafAutoPrependUserIniOther() {
		$userIniPath = wfWAFAutoPrependHelper::getUserIniPath();
		if (!file_exists($userIniPath)) {
			return array('test' => true, 'infoOnly' => true, 'message' => __('(.user.ini not present)', 'wordfence'));
		}
		else if (!is_readable($userIniPath)) {
			return array('test' => true, 'infoOnly' => true, 'message' => __('(.user.ini not readable)', 'wordfence'));
		}
		
		$userIniContents = file_get_contents($userIniPath);
		$section = wfWAFAutoPrependHelper::getUserIniSectionContent($userIniContents);
		if ($section !== false) {
			$userIniContents = str_replace($section, '', $userIniContents);
		}
		
		$snippet = wfUtils::pregExtract("/auto_prepend_file\s*=\s*['\"]?[^'\"]*['\"]?/", $userIniContents, true); 
		return array('test' => true, 'infoOnly' => true, 'message' => ($snippet === false ? __('(not present)', 'wordfence') : trim($snippet)));
	}
	public function wafStorageEngine() {
		return array('test' => true, 'infoOnly' => true, 'message' => (defined('WFWAF_STORAGE_ENGINE') ? WFWAF_STORAGE_ENGINE : __('(default)', 'wordfence')));
	}
	private static function getStorageEngineDescription($storageEngine) {
		if ($storageEngine === null) {
			return __('None', 'wordfence');
		}
		else if (method_exists($storageEngine, 'getDescription')) {
			return $storageEngine->getDescription();
		}
		else {
			return __('Unknown (mixed plugin version)', 'wordfence');
		}
	}
	public function wafActiveStorageEngine() {
		return array('test' => true, 'infoOnly' => true, 'message' => self::getStorageEngineDescription(wfWAF::getSharedStorageEngine()));
	}
	public function wafLogPath() {
		$logPath = __('(not set)', 'wordfence');
		if (defined('WFWAF_LOG_PATH')) {
			$logPath = WFWAF_LOG_PATH;
			if (strpos($logPath, ABSPATH) === 0) {
				$logPath = '~/' . substr($logPath, strlen(ABSPATH));
			}
		}
		
		return array('test' => true, 'infoOnly' => true, 'message' => $logPath);
	}
	
	public function wafSubdirectoryInstall() {
		return array('test' => true, 'infoOnly' => true, 'message' => (defined('WFWAF_SUBDIRECTORY_INSTALL') && WFWAF_SUBDIRECTORY_INSTALL ? __('Yes', 'wordfence') : __('No', 'wordfence')));
	}
	
	public function wafAutoPrependFilePath() {
		$path = wordfence::getWAFBootstrapPath();
		if (!file_exists($path)) {
			$path = '';
		}
		return array('test' => true, 'infoOnly' => true, 'message' => $path);
	}
	
	public function wafFilePermissions() {
		if (defined('WFWAF_LOG_FILE_MODE')) {
			return array('test' => true, 'infoOnly' => true, 'message' => sprintf(/* translators: Unix file permissions in octal (example 0777). */ __('%s - using constant', 'wordfence'), str_pad(decoct(WFWAF_LOG_FILE_MODE), 4, '0', STR_PAD_LEFT)));
		}
		
		if (defined('WFWAF_LOG_PATH')) {
			$template = rtrim(WFWAF_LOG_PATH, '/') . '/template.php';
			if (file_exists($template)) {
				$stat = @stat($template);
				if ($stat !== false) {
					$mode = $stat[2];
					$updatedMode = 0600;
					if (($mode & 0020) == 0020) {
						$updatedMode = $updatedMode | 0060;
					}
					return array('test' => true, 'infoOnly' => true, 'message' => sprintf(/* translators: Unix file permissions in octal (example 0777). */ __('%s - using template', 'wordfence'), str_pad(decoct($updatedMode), 4, '0', STR_PAD_LEFT)));
				}
			}
		}
		return array('test' => true, 'infoOnly' => true, 'message' => __('0660 - using default', 'wordfence'));
	}
	
	public function wafRecentlyRemoved() {
		$removalHistory = wfConfig::getJSON('diagnosticsWflogsRemovalHistory', array());
		if (empty($removalHistory)) {
			return array('test' => true, 'infoOnly' => true, 'message' => __('None', 'wordfence'));
		}
		
		$message = array();
		foreach ($removalHistory as $r) {
			$m = wfUtils::formatLocalTime('M j, Y', $r[0]) . ': (' . count($r[1]) . ')';
			$r[1] = array_filter($r[1], array($this, '_filterOutNestedEntries'));
			$m .= ' ' . implode(', ', array_slice($r[1], 0, 5));
			if (count($r[1]) > 5) {
				$m .= ', ...';
			}
			$message[] = $m;
		}
		
		return array('test' => true, 'infoOnly' => true, 'message' => implode("\n", $message));
	}

	public function wafLoaded() {
		$waf = wfWAF::getInstance();
		return array(
			'test' => true,
			'infoOnly' => true,
			'message' => $waf !== null && ($waf instanceof wfWAFWordPress) ? __('Yes', 'wordfence') : __('No', 'wordfence')
		);
	}
	
	private function _filterOutNestedEntries($a) {
		return !is_array($a);
	}

	public function processOwner() {
		$disabledFunctions = explode(',', ini_get('disable_functions'));

		if (is_callable('posix_geteuid')) {
			if (!is_callable('posix_getpwuid') || in_array('posix_getpwuid', $disabledFunctions)) {
				return array(
					'test' => false,
					'message' => __('Unavailable', 'wordfence'),
				);
			}

			$processOwner = posix_getpwuid(posix_geteuid());
			if ($processOwner !== false)
			{
				return array(
					'test' => true,
					'message' => $processOwner['name'],
				);
			}
		}

		$usernameOrUserEnv = getenv('USERNAME') ? getenv('USERNAME') : getenv('USER');
		if (!empty($usernameOrUserEnv)) { //Check some environmental variable possibilities
			return array(
				'test' => true,
				'message' => $usernameOrUserEnv,
			);
		}

		$currentUser = get_current_user();
		if (!empty($currentUser)) { //php.net comments indicate on Windows this returns the process owner rather than the file owner
			return array(
				'test' => true,
				'message' => $currentUser,
			);
		}

		if (!empty($_SERVER['LOGON_USER'])) { //Last resort for IIS since POSIX functions are unavailable, Source: https://msdn.microsoft.com/en-us/library/ms524602(v=vs.90).aspx
			return array(
				'test' => true,
				'message' => $_SERVER['LOGON_USER'],
			);
		}

		return array(
			'test' => false,
			'message' => __('Unknown', 'wordfence'),
		);
	}

	public function hasOpenSSL() {
		return is_callable('openssl_open');
	}
	
	public function openSSLVersion() {
		if (!function_exists('openssl_verify') || !defined('OPENSSL_VERSION_NUMBER') || !defined('OPENSSL_VERSION_TEXT')) {
			return false;
		}
		$compare = wfVersionCheckController::shared()->checkOpenSSLVersion();
		return array(
			'test' => $compare == wfVersionCheckController::VERSION_COMPATIBLE,
			'message'  => OPENSSL_VERSION_TEXT . ' (0x' . dechex(OPENSSL_VERSION_NUMBER) . ')',
		);
	}

	public function hasCurl() {
		if (!is_callable('curl_version')) {
			return false;
		}
		$version = curl_version();
		return array(
			'test' => version_compare($version['version'], $this->minVersion['cURL'], '>='),
			'message'  => $version['version'] . ' (0x' . dechex($version['version_number']) . ')',
		);
	}
	
	public function curlFeatures() {
		if (!is_callable('curl_version')) {
			return false;
		}
		$version = curl_version();
		return array(
			'test' => true,
			'message'  => '0x' . dechex($version['features']),
			'infoOnly' => true,
		);
	}
	
	public function curlHost() {
		if (!is_callable('curl_version')) {
			return false;
		}
		$version = curl_version();
		return array(
			'test' => true,
			'message'  => $version['host'],
			'infoOnly' => true,
		);
	}
	
	public function curlProtocols() {
		if (!is_callable('curl_version')) {
			return false;
		}
		$version = curl_version();
		return array(
			'test' => true,
			'message'  => implode(', ', $version['protocols']),
			'infoOnly' => true,
		);
	}
	
	public function curlSSLVersion() {
		if (!is_callable('curl_version')) {
			return false;
		}
		$version = curl_version();
		return array(
			'test' => true,
			'message'  => $version['ssl_version'],
			'infoOnly' => true,
		);
	}
	
	public function curlLibZVersion() {
		if (!is_callable('curl_version')) {
			return false;
		}
		$version = curl_version();
		return array(
			'test' => true,
			'message'  => $version['libz_version'],
			'infoOnly' => true,
		);
	}
	
	public function displayErrors() {
		if (!is_callable('ini_get')) {
			return false;
		}
		$value = ini_get('display_errors');
		$isOn = strtolower($value) == 'on' || $value == 1;
		return array(
			'test' => !$isOn,
			'message'  => $isOn ? __('On', 'wordfence') : __('Off', 'wordfence'),
			'infoOnly' => true,
		);
	}

	public function connectToServer2() {
		return $this->_connectToServer('https');
	}

	public function _connectToServer($protocol) {
		$cronURL = admin_url('admin-ajax.php');
		$cronURL = preg_replace('/^(https?:\/\/)/i', '://noc1.wordfence.com/scanptest/', $cronURL);
		$cronURL .= '?action=wordfence_doScan&isFork=0&cronKey=47e9d1fa6a675b5999999333';
		$cronURL = $protocol . $cronURL;
		$result = wp_remote_post($cronURL, array(
			'timeout' => 10, //Must be less than max execution time or more than 2 HTTP children will be occupied by scan
			'blocking' => true, //Non-blocking seems to block anyway, so we use blocking
			// This causes cURL to throw errors in some versions since WordPress uses its own certificate bundle ('CA certificate set, but certificate verification is disabled')
			// 'sslverify' => false,
			'headers' => array()
			));
		if( (! is_wp_error($result)) && $result['response']['code'] == 200 && strpos($result['body'], "scanptestok") !== false){
			return true;
		}

		$detail = '';
		if (is_wp_error($result)) {
			$message = __('wp_remote_post() test to noc1.wordfence.com failed! Response was: ', 'wordfence') . $result->get_error_message();
		}
		else {
			$message = __('wp_remote_post() test to noc1.wordfence.com failed! Response was: ', 'wordfence') . $result['response']['code'] . " " . $result['response']['message'] . "\n";
			$message .= __('This likely means that your hosting provider is blocking requests to noc1.wordfence.com or has set up a proxy that is not behaving itself.', 'wordfence') . "\n";
			if (isset($result['http_response']) && is_object($result['http_response']) && method_exists($result['http_response'], 'get_response_object') && is_object($result['http_response']->get_response_object()) && property_exists($result['http_response']->get_response_object(), 'raw')) {
				$detail = str_replace("\r\n", "\n", $result['http_response']->get_response_object()->raw);
			}
		}

		return array(
			'test' => false,
			'message' => $message,
			'detail' => $detail,
		);
	}
	
	public function connectToSelf($ipVersion = null) {
		$adminAJAX = admin_url('admin-ajax.php?action=wordfence_testAjax');
		$result = wp_remote_post($adminAJAX, array(
			'timeout' => 10, //Must be less than max execution time or more than 2 HTTP children will be occupied by scan
			'blocking' => true, //Non-blocking seems to block anyway, so we use blocking
			'headers' => array()
		));
		
		if ((!is_wp_error($result)) && $result['response']['code'] == 200 && strpos($result['body'], "WFSCANTESTOK") !== false) {
			$host = parse_url($adminAJAX, PHP_URL_HOST);
			if ($host !== null) {
				$ips = wfUtils::resolveDomainName($host, $ipVersion);
				if (!empty($ips)) {
					$ips = implode(', ', $ips);
					return array('test' => true, 'message' => sprintf('OK - %s', $ips));
				}
			}
			return true;
		}
		
		$detail = '';
		if (is_wp_error($result)) {
			$message = __('wp_remote_post() test back to this server failed! Response was: ', 'wordfence') . $result->get_error_message();
			$messageTextOnly = __('wp_remote_post() test back to this server failed! Response was: ', 'wordfence') . $result->get_error_message();
		}
		else {
			$message = __('wp_remote_post() test back to this server failed! Response was: ', 'wordfence') . '<br>' . $result['response']['code'] . ' ' . $result['response']['message'] . '<br><br>';
			$messageTextOnly = __('wp_remote_post() test back to this server failed! Response was: ', 'wordfence') . "\n" . $result['response']['code'] . ' ' . $result['response']['message'] . "\n\n";
			if ($this->_detectBlockedByCloudflare($result)) {
				$message .= __('Cloudflare appears to be blocking your site from connecting to itself.', 'wordfence') . '<br>' . sprintf(' <a href="%s" target="_blank" rel="noopener noreferrer">', wfSupportController::esc_supportURL(wfSupportController::ITEM_DIAGNOSTICS_CLOUDFLARE_BLOCK)) . __('Get help with Cloudflare compatibility', 'wordfence') . '</a><br><br>';
				$messageTextOnly .= __('Cloudflare appears to be blocking your site from connecting to itself.', 'wordfence') . "\n" . __('Get help with Cloudflare compatibility', 'wordfence') . ': ' . wfSupportController::esc_supportURL(wfSupportController::ITEM_DIAGNOSTICS_CLOUDFLARE_BLOCK) . "\n\n";
			}
			$message .= __('This additional info may help you diagnose the issue. The response headers we received were:', 'wordfence') . '<br><br>';
			$messageTextOnly .= __('This additional info may help you diagnose the issue. The response headers we received were:', 'wordfence') . "\n\n";
			if (isset($result['http_response']) && is_object($result['http_response']) && method_exists($result['http_response'], 'get_response_object') && is_object($result['http_response']->get_response_object()) && property_exists($result['http_response']->get_response_object(), 'raw')) {
				$detail = str_replace("\r\n", "\n", $result['http_response']->get_response_object()->raw);
			}
		}
		
		$message = wp_kses($message, array('a' => array('href' => array(), 'target' => array(), 'rel' => array()), 'span' => array('class' => array()), 'em' => array(), 'code' => array(), 'br' => array()));
		
		return array(
			'test' => false,
			'message' => array('escaped' => $message, 'textonly' => $messageTextOnly),
			'detail' => $detail,
		);
	}

	public function connectToSelfIpv6() {
		if (wfUtils::isCurlSupported()) {
			$interceptor = new wfCurlInterceptor();
			$interceptor->setOption(CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V6);
			try {
				$instance = $this;
				$result = $interceptor->intercept(function() use ($instance) {
					return $instance->connectToSelf(6);
				});
				if ($result !== true && !$result['test']) {
					$handle = $interceptor->getHandle();
					$errorNumber = curl_errno($handle);
					if ($errorNumber === 6 /* COULDNT_RESOLVE_HOST */) {
						$detail = sprintf(/* translators: error message from failed request */ __('This likely indicates that the server either does not support IPv6 or does not have an IPv6 address assigned or associated with the domain. Original error message: %s', 'wordfence'), is_array($result['message']) ? $result['message']['escaped'] : $result['message']);
						$detail = wp_kses($detail, array('a' => array('href' => array(), 'target' => array(), 'rel' => array()), 'span' => array('class' => array()), 'em' => array(), 'code' => array(), 'br' => array()));
						$detailTextOnly = sprintf(/* translators: error message from failed request */ __('This likely indicates that the server either does not support IPv6 or does not have an IPv6 address assigned or associated with the domain. Original error message: %s', 'wordfence'), is_array($result['message']) ? $result['message']['textonly'] : strip_tags($result['message']));
						
						return array(
							'test' => false,
							'infoOnly' => true,
							'message' => __('IPv6 DNS resolution failed', 'wordfence'),
							'detail' => array('escaped' => $detail, 'textonly' => $detailTextOnly),
						);
					}
				}
				return $result;
			}
			catch (wfCurlInterceptionFailedException $e) {
				return array(
					'test' => false,
					'message' => __('This diagnostic is unavailable as cURL appears to be supported, but was not used by WordPress for this request', 'wordfence')
				);
			}
		}
		return array(
			'test' => false,
			'message' => __('This diagnostic requires cURL', 'wordfence')
		);
	}
	
	/**
	 * Looks for markers in $result that indicate it was challenged/blocked by Cloudflare.
	 * 
	 * @param $result
	 * @return bool
	 */
	private function _detectBlockedByCloudflare($result) {
		$headers = $result['headers'];
		if (isset($headers['cf-mitigated']) && strtolower($headers['cf-mitigated']) == 'challenge' /* managed challenge */) { //$headers is an instance of Requests_Utility_CaseInsensitiveDictionary
			return true;
		}
		
		$body = $result['body'];
		$search = array(
			'/cdn-cgi/styles/challenges.css', //managed challenge
			'/cdn-cgi/challenge-platform', //managed challenge
			'/cdn-cgi/styles/cf.errors.css', //block
			'cf-error-details', //block
			'Cloudflare Ray ID', //block
		);
		foreach ($search as $s) {
			if (stripos($body, $s) !== false) {
				return true;
			}
		}
		return false;
	}
	
	public function serverIP() {
		$serverIPs = wfUtils::serverIPs();
		return array(
			'test' => true,
			'infoOnly' => true,
			'message' => implode(',', $serverIPs),
		);
	}

	public function howGetIPs()
	{
		$howGet = wfConfig::get('howGetIPs', false);
		if ($howGet) {
			if (empty($_SERVER[$howGet])) {
				return array(
					'test' => false,
					'message' => sprintf(/* translators: PHP super global key. */ __('We cannot read $_SERVER[%s]', 'wordfence'), $howGet),
				);
			}
			return array(
				'test' => true,
				'message' => $howGet,
			);
		}
		foreach (array('HTTP_CF_CONNECTING_IP', 'HTTP_X_REAL_IP', 'HTTP_X_FORWARDED_FOR') as $test) {
			if (!empty($_SERVER[$test])) {
				return array(
					'test' => false,
					'message' => __('Should be: ', 'wordfence') . $test
				);
			}
		}
		return array(
			'test' => true,
			'message' => 'REMOTE_ADDR',
		);
	}
	
	public function serverTime() {
		return array(
			'test' => true,
			'infoOnly' => true,
			'message' => date('Y-m-d H:i:s', time()) . ' UTC',
		);
	}
	
	public function wfTime() {
		try {
			$api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion());
			$response = $api->call('timestamp');
			if (!is_array($response) || !isset($response['timestamp'])) {
				throw new Exception('Unexpected payload returned');
			}
		}
		catch (Exception $e) {
			return array(
				'test' => true,
				'infoOnly' => true,
				'message' => '-',
			);
		}
		
		return array(
			'test' => true,
			'infoOnly' => true,
			'message' => date('Y-m-d H:i:s', $response['timestamp']) . ' UTC',
		);
	}
	
	public function wfTimeOffset() {
		$delta = wfUtils::normalizedTime() - time();
		return array(
			'test' => true,
			'infoOnly' => true,
			'message' => ($delta < 0 ? '-' : '+') . ' ' . wfUtils::makeDuration(abs($delta), true),
		);
	}
	
	public function ntpTimeOffset() {
		if (class_exists('WFLSPHP52Compatability')) {
			$time = WFLSPHP52Compatability::ntp_time();
			if ($time === false) {
				return array(
					'test' => true,
					'infoOnly' => true,
					'message' => __('Blocked', 'wordfence'),
				);
			}
			
			$delta = $time - time();
			return array(
				'test' => true,
				'infoOnly' => true,
				'message' => ($delta < 0 ? '-' : '+') . ' ' . wfUtils::makeDuration(abs($delta), true),
			);
		}
		
		return array(
			'test' => true,
			'infoOnly' => true,
			'message' => '-',
		);
	}

	public function ntpStatus() {
		$maxFailures = \WordfenceLS\Controller_Time::FAILURE_LIMIT;
		$cronDisabled = \WordfenceLS\Controller_Settings::shared()->is_ntp_cron_disabled($failureCount);
		if ($cronDisabled) {
			$constant = \WordfenceLS\Controller_Settings::shared()->is_ntp_disabled_via_constant();
			$status = __('Disabled ', 'wordfence');
			if ($constant) {
				$status .= __('(WORDFENCE_LS_DISABLE_NTP)', 'wordfence');
			}
			else if ($failureCount > 0) {
				$status .= __('(failures exceeded limit)', 'wordfence');
			}
			else {
				$status .= __('(settings)', 'wordfence');
			}
		}
		else {
			$status = __('Enabled', 'wordfence');
			if ($failureCount > 0) {
				$remainingAttempts = $maxFailures - $failureCount;
				$status .= sprintf(__(' (%d of %d attempts remaining)', 'wordfence'), $remainingAttempts, $maxFailures);
			}
		}
		return array(
			'test' => true,
			'infoOnly' => true,
			'message' => $status
		);
	}
	
	public function timeSourceInUse() {
		if (class_exists('WFLSPHP52Compatability')) {
			$time = WFLSPHP52Compatability::ntp_time();
			if (WFLSPHP52Compatability::using_ntp_time()) {
				return array(
					'test' => true,
					'infoOnly' => true,
					'message' => __('NTP', 'wordfence'),
				);
			}
			else if (WFLSPHP52Compatability::using_wf_time()) {
				return array(
					'test' => true,
					'infoOnly' => true,
					'message' => __('Wordfence Network', 'wordfence'),
				);
			}
			
			return array(
				'test' => true,
				'infoOnly' => true,
				'message' => __('Server Time', 'wordfence'),
			);
		}
		
		return array(
			'test' => true,
			'infoOnly' => true,
			'message' => '-',
		);
	}
	
	public function wpTimeZone() {
		$tz = get_option('timezone_string');
		if (empty($tz)) {
			$offset = get_option('gmt_offset');
			$tz = 'UTC' . ($offset >= 0 ? '+' . $offset : $offset);
		}
		
		return array(
			'test' => true,
			'infoOnly' => true,
			'message' => $tz,
		);
	}

	public static function getWordpressValues() {
		require(ABSPATH . 'wp-includes/version.php');
		$postRevisions = (defined('WP_POST_REVISIONS') ? WP_POST_REVISIONS : true);
		return array(
			'WordPress Version'            => array('description' => '', 'value' => $wp_version),
			'Multisite'					   => array('description' => __('Return value of is_multisite()', 'wordfence'), 'value' => is_multisite() ? __('Yes', 'wordfence') : __('No', 'wordfence')),
			'ABSPATH'					   => __('WordPress base path', 'wordfence'), 
			'WP_DEBUG'                     => array('description' => __('WordPress debug mode', 'wordfence'), 'value' => (defined('WP_DEBUG') && WP_DEBUG ? __('On', 'wordfence') : __('Off', 'wordfence'))),
			'WP_DEBUG_LOG'                 => array('description' => __('WordPress error logging override', 'wordfence'), 'value' => defined('WP_DEBUG_LOG') ? (WP_DEBUG_LOG ? 'Enabled' : 'Disabled') : __('(not set)', 'wordfence')),
			'WP_DEBUG_DISPLAY'             => array('description' => __('WordPress error display override', 'wordfence'), 'value' => defined('WP_DEBUG_DISPLAY') ? (WP_DEBUG_DISPLAY ? 'Enabled' : 'Disabled') : __('(not set)', 'wordfence')),
			'SCRIPT_DEBUG'                 => array('description' => __('WordPress script debug mode', 'wordfence'), 'value' => (defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? __('On', 'wordfence') : __('Off', 'wordfence'))),
			'SAVEQUERIES'                  => array('description' => __('WordPress query debug mode', 'wordfence'), 'value' => (defined('SAVEQUERIES') && SAVEQUERIES ? __('On', 'wordfence') : __('Off', 'wordfence'))),
			'DB_CHARSET'                   => __('Database character set', 'wordfence'),
			'DB_COLLATE'                   => __('Database collation', 'wordfence'),
			'WP_SITEURL'                   => __('Explicitly set site URL', 'wordfence'),
			'WP_HOME'                      => __('Explicitly set blog URL', 'wordfence'),
			'WP_CONTENT_DIR'               => array('description' => __('"wp-content" folder is in default location', 'wordfence'), 'value' => (realpath(WP_CONTENT_DIR) === realpath(ABSPATH . 'wp-content') ? __('Yes', 'wordfence') : sprintf(/* translators: WordPress content directory. */ __('No: %s', 'wordfence'), WP_CONTENT_DIR))),
			'WP_CONTENT_URL'               => __('URL to the "wp-content" folder', 'wordfence'),
			'WP_PLUGIN_DIR'                => array('description' => __('"plugins" folder is in default location', 'wordfence'), 'value' => (realpath(WP_PLUGIN_DIR) === realpath(ABSPATH . 'wp-content/plugins') ? __('Yes', 'wordfence') : sprintf(/* translators: WordPress plugins directory. */ __('No: %s', 'wordfence'), WP_PLUGIN_DIR))),
			'WP_LANG_DIR'                  => array('description' => __('"languages" folder is in default location', 'wordfence'), 'value' => (realpath(WP_LANG_DIR) === realpath(ABSPATH . 'wp-content/languages') ? __('Yes', 'wordfence') : sprintf(/* translators: WordPress languages directory. */ __('No: %s', 'wordfence'), WP_LANG_DIR))),
			'WPLANG'                       => __('Language choice', 'wordfence'),
			'UPLOADS'                      => __('Custom upload folder location', 'wordfence'),
			'TEMPLATEPATH'                 => array('description' => __('Theme template folder override', 'wordfence'), 'value' => (defined('TEMPLATEPATH') && realpath(get_template_directory()) !== realpath(TEMPLATEPATH) ? sprintf(/* translators: WordPress theme template directory. */ __('Overridden: %s', 'wordfence'), TEMPLATEPATH) : __('(not set)', 'wordfence'))),
			'STYLESHEETPATH'               => array('description' => __('Theme stylesheet folder override', 'wordfence'), 'value' => (defined('STYLESHEETPATH') && realpath(get_stylesheet_directory()) !== realpath(STYLESHEETPATH) ? sprintf(/* translators: WordPress theme stylesheet directory. */ __('Overridden: %s', 'wordfence'), STYLESHEETPATH) : __('(not set)', 'wordfence'))),
			'AUTOSAVE_INTERVAL'            => __('Post editing automatic saving interval', 'wordfence'),
			'WP_POST_REVISIONS'            => array('description' => __('Post revisions saved by WordPress', 'wordfence'), 'value' => is_numeric($postRevisions) ? $postRevisions : ($postRevisions ? __('Unlimited', 'wordfence') : __('None', 'wordfence'))),
			'COOKIE_DOMAIN'                => __('WordPress cookie domain', 'wordfence'),
			'COOKIEPATH'                   => __('WordPress cookie path', 'wordfence'),
			'SITECOOKIEPATH'               => __('WordPress site cookie path', 'wordfence'),
			'ADMIN_COOKIE_PATH'            => __('WordPress admin cookie path', 'wordfence'),
			'PLUGINS_COOKIE_PATH'          => __('WordPress plugins cookie path', 'wordfence'),
			'NOBLOGREDIRECT'               => __('URL redirected to if the visitor tries to access a nonexistent blog', 'wordfence'),
			'CONCATENATE_SCRIPTS'          => array('description' => __('Concatenate JavaScript files', 'wordfence'), 'value' => (defined('CONCATENATE_SCRIPTS') && CONCATENATE_SCRIPTS ? __('Yes', 'wordfence') : __('No', 'wordfence'))),
			'WP_MEMORY_LIMIT'              => __('WordPress memory limit', 'wordfence'),
			'WP_MAX_MEMORY_LIMIT'          => __('Administrative memory limit', 'wordfence'),
			'WP_CACHE'                     => array('description' => __('Built-in caching', 'wordfence'), 'value' => (defined('WP_CACHE') && WP_CACHE ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence'))),
			'CUSTOM_USER_TABLE'            => array('description' => __('Custom "users" table', 'wordfence'), 'value' => (defined('CUSTOM_USER_TABLE') ? sprintf(/* translators: WordPress custom user table. */ __('Set: %s', 'wordfence'), CUSTOM_USER_TABLE) : __('(not set)', 'wordfence'))),
			'CUSTOM_USER_META_TABLE'       => array('description' => __('Custom "usermeta" table', 'wordfence'), 'value' => (defined('CUSTOM_USER_META_TABLE') ? sprintf(/* translators: WordPress custom user meta table. */ __('Set: %s', 'wordfence'), CUSTOM_USER_META_TABLE) : __('(not set)', 'wordfence'))),
			'FS_CHMOD_DIR'                 => array('description' => __('Overridden permissions for a new folder', 'wordfence'), 'value' => defined('FS_CHMOD_DIR') ? decoct(FS_CHMOD_DIR) : __('(not set)', 'wordfence')),
			'FS_CHMOD_FILE'                => array('description' => __('Overridden permissions for a new file', 'wordfence'), 'value' => defined('FS_CHMOD_FILE') ? decoct(FS_CHMOD_FILE) : __('(not set)', 'wordfence')),
			'ALTERNATE_WP_CRON'            => array('description' => __('Alternate WP cron', 'wordfence'), 'value' => (defined('ALTERNATE_WP_CRON') && ALTERNATE_WP_CRON ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence'))),
			'DISABLE_WP_CRON'              => array('description' => __('WP cron status', 'wordfence'), 'value' => (defined('DISABLE_WP_CRON') && DISABLE_WP_CRON ? __('Cron is disabled', 'wordfence') : __('Cron is enabled', 'wordfence'))),
			'WP_CRON_LOCK_TIMEOUT'         => __('Cron running frequency lock', 'wordfence'),
			'EMPTY_TRASH_DAYS'             => array('description' => __('Interval the trash is automatically emptied at in days', 'wordfence'), 'value' => (EMPTY_TRASH_DAYS > 0 ? EMPTY_TRASH_DAYS : __('Never', 'wordfence'))),
			'WP_ALLOW_REPAIR'              => array('description' => __('Automatic database repair', 'wordfence'), 'value' => (defined('WP_ALLOW_REPAIR') && WP_ALLOW_REPAIR ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence'))),
			'DO_NOT_UPGRADE_GLOBAL_TABLES' => array('description' => __('Do not upgrade global tables', 'wordfence'), 'value' => (defined('DO_NOT_UPGRADE_GLOBAL_TABLES') && DO_NOT_UPGRADE_GLOBAL_TABLES ? __('Yes', 'wordfence') : __('No', 'wordfence'))),
			'DISALLOW_FILE_EDIT'           => array('description' => __('Disallow plugin/theme editing', 'wordfence'), 'value' => (defined('DISALLOW_FILE_EDIT') && DISALLOW_FILE_EDIT ? __('Yes', 'wordfence') : __('No', 'wordfence'))),
			'DISALLOW_FILE_MODS'           => array('description' => __('Disallow plugin/theme update and installation', 'wordfence'), 'value' => (defined('DISALLOW_FILE_MODS') && DISALLOW_FILE_MODS ? __('Yes', 'wordfence') : __('No', 'wordfence'))),
			'IMAGE_EDIT_OVERWRITE'         => array('description' => __('Overwrite image edits when restoring the original', 'wordfence'), 'value' => (defined('IMAGE_EDIT_OVERWRITE') && IMAGE_EDIT_OVERWRITE ? __('Yes', 'wordfence') : __('No', 'wordfence'))),
			'FORCE_SSL_ADMIN'              => array('description' => __('Force SSL for administrative logins', 'wordfence'), 'value' => (defined('FORCE_SSL_ADMIN') && FORCE_SSL_ADMIN ? __('Yes', 'wordfence') : __('No', 'wordfence'))),
			'WP_HTTP_BLOCK_EXTERNAL'       => array('description' => __('Block external URL requests', 'wordfence'), 'value' => (defined('WP_HTTP_BLOCK_EXTERNAL') && WP_HTTP_BLOCK_EXTERNAL ? __('Yes', 'wordfence') : __('No', 'wordfence'))),
			'WP_ACCESSIBLE_HOSTS'          => __('Allowlisted hosts', 'wordfence'),
			'WP_AUTO_UPDATE_CORE'          => array('description' => __('Automatic WP Core updates', 'wordfence'), 'value' => defined('WP_AUTO_UPDATE_CORE') ? (is_bool(WP_AUTO_UPDATE_CORE) ? (WP_AUTO_UPDATE_CORE ? __('Everything', 'wordfence') : __('None', 'wordfence')) : WP_AUTO_UPDATE_CORE) : __('Default', 'wordfence')),
			'WP_PROXY_HOST'                => array('description' => __('Hostname for a proxy server', 'wordfence'), 'value' => defined('WP_PROXY_HOST') ? WP_PROXY_HOST : __('(not set)', 'wordfence')),
			'WP_PROXY_PORT'                => array('description' => __('Port for a proxy server', 'wordfence'), 'value' => defined('WP_PROXY_PORT') ? WP_PROXY_PORT : __('(not set)', 'wordfence')),
			'MULTISITE'               	   => array('description' => __('Multisite enabled', 'wordfence'), 'value' => defined('MULTISITE') ? (MULTISITE ? __('Yes', 'wordfence') : __('No', 'wordfence')) : __('(not set)', 'wordfence')),
			'WP_ALLOW_MULTISITE'           => array('description' => __('Multisite/network ability enabled', 'wordfence'), 'value' => (defined('WP_ALLOW_MULTISITE') && WP_ALLOW_MULTISITE ? __('Yes', 'wordfence') : __('No', 'wordfence'))),
			'SUNRISE'					   => array('description' => __('Multisite enabled, WordPress will load the /wp-content/sunrise.php file', 'wordfence'), 'value' => defined('SUNRISE') ? __('Yes', 'wordfence') : __('(not set)', 'wordfence')),
			'SUBDOMAIN_INSTALL'			   => array('description' => __('Multisite enabled, subdomain installation constant', 'wordfence'), 'value' => defined('SUBDOMAIN_INSTALL') ? (SUBDOMAIN_INSTALL ? __('Yes', 'wordfence') : __('No', 'wordfence')) : __('(not set)', 'wordfence')),
			'VHOST'						   => array('description' => __('Multisite enabled, Older subdomain installation constant', 'wordfence'), 'value' => defined('VHOST') ? (VHOST == 'yes' ? __('Yes', 'wordfence') : __('No', 'wordfence')) : __('(not set)', 'wordfence')),
			'DOMAIN_CURRENT_SITE'		   => __('Defines the multisite domain for the current site', 'wordfence'),
			'PATH_CURRENT_SITE'			   => __('Defines the multisite path for the current site', 'wordfence'),
			'BLOG_ID_CURRENT_SITE'		   => __('Defines the multisite database ID for the current site', 'wordfence'),
			'WP_DISABLE_FATAL_ERROR_HANDLER' => array('description' => __('Disable the fatal error handler', 'wordfence'), 'value' => (defined('WP_DISABLE_FATAL_ERROR_HANDLER') && WP_DISABLE_FATAL_ERROR_HANDLER ? __('Yes', 'wordfence') : __('No', 'wordfence'))),
			'AUTOMATIC_UPDATER_DISABLED' => array('description' => __('Disables automatic updates', 'wordfence'), 'value' => (defined('AUTOMATIC_UPDATER_DISABLED') ? (AUTOMATIC_UPDATER_DISABLED ? __('Automatic updates disabled', 'wordfence') : __('Automatic updates enabled', 'wordfence')) : __('(not set)', 'wordfence')))
		);
	}
	
	public static function getWordfenceValues() {
		//Rate Limiting
		$rateOptions = array(
			'DISABLED' => __('Unlimited', 'wordfence'),
			1920 => sprintf(/* translators: Number of HTTP requests. */__('%d per minute', 'wordfence'), 1920),
			960 => sprintf(/* translators: Number of HTTP requests. */__('%d per minute', 'wordfence'), 960),
			480 => sprintf(/* translators: Number of HTTP requests. */__('%d per minute', 'wordfence'), 480),
			240 => sprintf(/* translators: Number of HTTP requests. */__('%d per minute', 'wordfence'), 240),
			120 => sprintf(/* translators: Number of HTTP requests. */__('%d per minute', 'wordfence'), 120),
			60 => sprintf(/* translators: Number of HTTP requests. */__('%d per minute', 'wordfence'), 60),
			30 => sprintf(/* translators: Number of HTTP requests. */__('%d per minute', 'wordfence'), 30),
			15 => sprintf(/* translators: Number of HTTP requests. */__('%d per minute', 'wordfence'), 15),
			10 => sprintf(/* translators: Number of HTTP requests. */__('%d per minute', 'wordfence'), 10),
			5 => sprintf(/* translators: Number of HTTP requests. */__('%d per minute', 'wordfence'), 5),
			4 => sprintf(/* translators: Number of HTTP requests. */__('%d per minute', 'wordfence'), 4),
			3 => sprintf(/* translators: Number of HTTP requests. */__('%d per minute', 'wordfence'), 3),
			2 => sprintf(/* translators: Number of HTTP requests. */__('%d per minute', 'wordfence'), 2),
			1 => sprintf(/* translators: Number of HTTP requests. */__('%d per minute', 'wordfence'), 1),
		);
		$actionOptions = array(
			'throttle' => __('throttle it', 'wordfence'),
			'block' => __('block it', 'wordfence'),
		);
		
		$avoidPHPInput = false;
		try {
			$avoidPHPInput = wfWAFConfig::get('avoid_php_input');
		}
		catch (Exception $e) {
			//Ignore
		}
		
		
		return array(
			array('subheader' => __('Scanner', 'wordfence')),
			array('description' => __('Scan Type', 'wordfence'), 'value' => wfScanner::shared()->scanTypeName()),
			array('description' => __('Check if this website is on a domain blocklist', 'wordfence'), 'value' => !!wfConfig::get('scansEnabled_checkGSB') ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
			array('description' => __('Check if this website is being "Spamvertised"', 'wordfence'), 'value' => !!wfConfig::get('spamvertizeCheck') ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
			array('description' => __('Check if this website IP is generating spam', 'wordfence'), 'value' => !!wfConfig::get('checkSpamIP') ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
			array('description' => __('Scan for misconfigured How does Wordfence get IPs', 'wordfence'), 'value' => !!wfConfig::get('scansEnabled_checkHowGetIPs') ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
			array('description' => __('Scan for publicly accessible configuration, backup, or log files', 'wordfence'), 'value' => !!wfConfig::get('scansEnabled_checkReadableConfig') ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
			array('description' => __('Scan for publicly accessible quarantined files', 'wordfence'), 'value' => !!wfConfig::get('scansEnabled_suspectedFiles') ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
			array('description' => __('Scan core files against repository versions for changes', 'wordfence'), 'value' => !!wfConfig::get('scansEnabled_core') ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
			array('description' => __('Scan theme files against repository versions for changes', 'wordfence'), 'value' => !!wfConfig::get('scansEnabled_themes') ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
			array('description' => __('Scan plugin files against repository versions for changes', 'wordfence'), 'value' => !!wfConfig::get('scansEnabled_plugins') ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
			array('description' => __('Scan wp-admin and wp-includes for files not bundled with WordPress', 'wordfence'), 'value' => !!wfConfig::get('scansEnabled_coreUnknown') ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
			array('description' => __('Scan for signatures of known malicious files', 'wordfence'), 'value' => !!wfConfig::get('scansEnabled_malware') ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
			array('description' => __('Scan file contents for backdoors, trojans and suspicious code', 'wordfence'), 'value' => !!wfConfig::get('scansEnabled_fileContents') ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
			array('description' => __('Scan file contents for malicious URLs', 'wordfence'), 'value' => !!wfConfig::get('scansEnabled_fileContentsGSB') ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
			array('description' => __('Scan posts for known dangerous URLs and suspicious content', 'wordfence'), 'value' => !!wfConfig::get('scansEnabled_posts') ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
			array('description' => __('Scan comments for known dangerous URLs and suspicious content', 'wordfence'), 'value' => !!wfConfig::get('scansEnabled_comments') ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
			array('description' => __('Scan WordPress core, plugin, and theme options for known dangerous URLs and suspicious content', 'wordfence'), 'value' => !!wfConfig::get('scansEnabled_suspiciousOptions') ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
			array('description' => __('Scan for out of date, abandoned, and vulnerable plugins, themes, and WordPress versions', 'wordfence'), 'value' => !!wfConfig::get('scansEnabled_oldVersions') ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
			array('description' => __('Scan for suspicious admin users created outside of WordPress', 'wordfence'), 'value' => !!wfConfig::get('scansEnabled_suspiciousAdminUsers') ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
			array('description' => __('Check the strength of passwords', 'wordfence'), 'value' => !!wfConfig::get('scansEnabled_passwds') ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
			array('description' => __('Monitor disk space', 'wordfence'), 'value' => !!wfConfig::get('scansEnabled_diskSpace') ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
			array('description' => __('Monitor Web Application Firewall status', 'wordfence'), 'value' => !!wfConfig::get('scansEnabled_wafStatus') ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
			array('description' => __('Scan files outside your WordPress installation', 'wordfence'), 'value' => !!wfConfig::get('other_scanOutside') ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
			array('description' => __('Scan images, binary, and other files as if they were executable', 'wordfence'), 'value' => !!wfConfig::get('scansEnabled_scanImages') ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
			array('description' => __('Use low resource scanning (reduces server load by lengthening the scan duration)', 'wordfence'), 'value' => !!wfConfig::get('lowResourceScansEnabled') ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
			array('description' => __('Limit the number of issues sent in the scan results email', 'wordfence'), 'value' => wfConfig::get('scan_maxIssues')),
			array('description' => __('Time limit that a scan can run in seconds', 'wordfence'), 'value' => wfConfig::get('scan_maxDuration')),
			array('description' => __('How much memory should Wordfence request when scanning', 'wordfence'), 'value' => wfConfig::get('maxMem')),
			array('description' => __('Maximum execution time for each scan stage ', 'wordfence'), 'value' => wfConfig::get('maxExecutionTime')),
			array('description' => __('Exclude files from scan that match these wildcard patterns (one per line)', 'wordfence'), 'value' => wfUtils::cleanupOneEntryPerLine(wfUtils::string_empty(wfConfig::get('scan_exclude'), __('(empty)', 'wordfence')))),
			array('description' => __('Additional scan signatures (one per line)', 'wordfence'), 'value' => wfUtils::string_empty(wfConfig::get('scan_include_extra'), __('(empty)', 'wordfence'))),
			array('description' => __('Use only IPv4 to start scans', 'wordfence'), 'value' => !!wfConfig::get('scan_force_ipv4_start') ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
			array('description' => __('Maximum number of attempts to resume each scan stage', 'wordfence'), 'value' => wfConfig::get('scan_max_resume_attempts')),
			
			array('subheader' => __('Diagnostics', 'wordfence')),
			array('description' => __('Enable debugging mode (increases database load)', 'wordfence'), 'value' => !!wfConfig::get('debugOn') ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
			array('description' => __('Start all scans remotely (Try this if your scans aren\'t starting and your site is publicly accessible)', 'wordfence'), 'value' => !!wfConfig::get('startScansRemotely') ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
			array('description' => __('Enable SSL Verification (Disable this if you are consistently unable to connect to the Wordfence servers.)', 'wordfence'), 'value' => !!wfConfig::get('ssl_verify') ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
			array('description' => __('Disable reading of php://input', 'wordfence'), 'value' => !!$avoidPHPInput ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
			array('description' => __('Enable Wordfence translations', 'wordfence'), 'value' => !!wfConfig::get('wordfenceI18n') ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
			
			array('subheader' => __('Brute Force Protection', 'wordfence')),
			array('description' => __('Enable brute force protection', 'wordfence'), 'value' => !!wfConfig::get('loginSecurityEnabled') ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
			array('description' => __('Lock out after how many login failures', 'wordfence'), 'value' => wfConfig::get('loginSec_maxFailures')),
			array('description' => __('Lock out after how many forgot password attempts', 'wordfence'), 'value' => wfConfig::get('loginSec_maxForgotPasswd')),
			array('description' => __('Count failures over what time period', 'wordfence'), 'value' => wfConfig::getInt('loginSec_countFailMins')),
			array('description' => __('Amount of time a user is locked out', 'wordfence'), 'value' => wfConfig::getInt('loginSec_lockoutMins')),
			array('description' => __('Immediately lock out invalid usernames', 'wordfence'), 'value' => !!wfConfig::get('loginSec_lockInvalidUsers') ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
			array('description' => __('Immediately block the IP of users who try to sign in as these usernames', 'wordfence'), 'value' => wfUtils::cleanupOneEntryPerLine(wfUtils::string_empty(wfConfig::get('loginSec_userBlacklist'), __('(empty)', 'wordfence')))),
			array('description' => __('Prevent the use of passwords leaked in data breaches', 'wordfence'), 'value' => (!!wfConfig::get('loginSec_breachPasswds_enabled') ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')) . "\n" . wfUtils::array_choose(array('admins' => __('For admins only', 'wordfence'), 'pubs' => __('For all users with "publish posts" capability', 'wordfence')), wfConfig::get('loginSec_breachPasswds'), __('(unknown)', 'wordfence'))),
			array('description' => __('Enforce strong passwords', 'wordfence'), 'value' => (!!wfConfig::get('loginSec_strongPasswds_enabled') ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')) . "\n" . wfUtils::array_choose(array('pubs' => __('Force admins and publishers to use strong passwords (recommended)', 'wordfence'), 'all' => __('Force all members to use strong passwords', 'wordfence')), wfConfig::get('loginSec_strongPasswds'), __('(unknown)', 'wordfence'))),
			array('description' => __('Don\'t let WordPress reveal valid users in login errors', 'wordfence'), 'value' => !!wfConfig::get('loginSec_maskLoginErrors') ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
			array('description' => __('Prevent users registering \'admin\' username if it doesn\'t exist', 'wordfence'), 'value' => !!wfConfig::get('loginSec_blockAdminReg') ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
			array('description' => __('Prevent discovery of usernames through \'/?author=N\' scans, the oEmbed API, the WordPress REST API, and WordPress XML Sitemaps', 'wordfence'), 'value' => !!wfConfig::get('loginSec_disableAuthorScan') ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
			array('description' => __('Disable WordPress application passwords', 'wordfence'), 'value' => !!wfConfig::get('loginSec_disableApplicationPasswords') ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
			array('description' => __('Block IPs who send POST requests with blank User-Agent and Referer', 'wordfence'), 'value' => !!wfConfig::get('other_blockBadPOST') ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
			array('description' => __('Custom text shown on block pages', 'wordfence'), 'value' => wfUtils::string_empty(wfConfig::get('blockCustomText'), __('(empty)', 'wordfence'))),
			array('description' => __('Check password strength on profile update', 'wordfence'), 'value' => !!wfConfig::get('other_pwStrengthOnUpdate') ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
			array('description' => __('Participate in the Real-Time Wordfence Security Network', 'wordfence'), 'value' => !!wfConfig::get('other_WFNet') ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
			
			array('subheader' => __('Rate Limiting', 'wordfence')),
			array('description' => __('Enable Rate Limiting and Advanced Blocking', 'wordfence'), 'value' => !!wfConfig::get('firewallEnabled') ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
			array('description' => __('How should we treat Google\'s crawlers', 'wordfence'),
				'value' => wfUtils::array_choose(array('neverBlockVerified' => __('Verified Google crawlers will not be rate-limited', 'wordfence'), 'neverBlockUA' => __('Anyone claiming to be Google will not be rate-limited', 'wordfence'), 'treatAsOtherCrawlers' => __('Treat Google like any other Crawler', 'wordfence')), wfConfig::get('neverBlockBG'), __('(unknown)', 'wordfence'))),
			array('description' => __('If anyone\'s requests exceed', 'wordfence'), 'value' => 
				wfUtils::array_choose($rateOptions, wfConfig::get('maxGlobalRequests'), __('(unknown)', 'wordfence')) . "\n" .
				wfUtils::array_choose($actionOptions, wfConfig::get('maxGlobalRequests_action'), __('(unknown)', 'wordfence'))),
			array('description' => __('If a crawler\'s page views exceed', 'wordfence'), 'value' => 
				wfUtils::array_choose($rateOptions, wfConfig::get('maxRequestsCrawlers'), __('(unknown)', 'wordfence')) . "\n" .
				wfUtils::array_choose($actionOptions, wfConfig::get('maxRequestsCrawlers_action'), __('(unknown)', 'wordfence'))),
			array('description' => __('If a crawler\'s pages not found (404s) exceed', 'wordfence'), 'value' => 
				wfUtils::array_choose($rateOptions, wfConfig::get('max404Crawlers'), __('(unknown)', 'wordfence')) . "\n" .
				wfUtils::array_choose($actionOptions, wfConfig::get('max404Crawlers_action'), __('(unknown)', 'wordfence'))),
			array('description' => __('If a human\'s page views exceed', 'wordfence'), 'value' => 
				wfUtils::array_choose($rateOptions, wfConfig::get('maxRequestsHumans'), __('(unknown)', 'wordfence')) . "\n" .
				wfUtils::array_choose($actionOptions, wfConfig::get('maxRequestsHumans_action'), __('(unknown)', 'wordfence'))),
			array('description' => __('If a human\'s pages not found (404s) exceed', 'wordfence'), 'value' => 
				wfUtils::array_choose($rateOptions, wfConfig::get('max404Humans'), __('(unknown)', 'wordfence')) . "\n" .
				wfUtils::array_choose($actionOptions, wfConfig::get('max404Humans_action'), __('(unknown)', 'wordfence'))),
			array('description' => __('How long is an IP address blocked when it breaks a rule', 'wordfence'), 'value' => wfConfig::getInt('blockedTime')),
			array('description' => __('Allowlisted 404 URLs', 'wordfence'), 'value' => wfUtils::cleanupOneEntryPerLine(wfConfig::get('allowed404s'))),
			
			array('subheader' => __('Country Blocking', 'wordfence')),
			array('description' => __('What to do when we block someone', 'wordfence'),
				'value' => wfUtils::array_choose(array('block' => __('Show the standard Wordfence blocked message', 'wordfence'), 'redir' => __('Redirect to the URL below', 'wordfence')), wfConfig::get('cbl_action'), __('(unknown)', 'wordfence'))),
			array('description' => __('URL to redirect blocked users to', 'wordfence'), 'value' => wfUtils::string_empty(wfConfig::get('cbl_redirURL'), __('(empty)', 'wordfence'))),
			array('description' => __('Block countries even if they are logged in', 'wordfence'), 'value' => !!wfConfig::get('cbl_loggedInBlocked') ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
			array('description' => __('Bypass Redirect', 'wordfence'), 'value' => wfUtils::string_empty(wfConfig::get('cbl_bypassRedirURL'), __('(empty)', 'wordfence')) . ' -> ' . wfUtils::string_empty(wfConfig::get('cbl_bypassRedirDest'), __('(empty)', 'wordfence'))),
			array('description' => __('Bypass Cookie', 'wordfence'), 'value' => wfUtils::string_empty(wfConfig::get('cbl_bypassViewURL'), __('(empty)', 'wordfence'))),
		);
	}
	
	public static function getWordfenceCentralValues() {
		return array(
			array('description' => __('Connected', 'wordfence'), 'value' => wfConfig::get('wordfenceCentralConnected') ? __('true', 'wordfence') : __('false', 'wordfence')),
			array('description' => __('Connect Timestamp', 'wordfence'), 'value' => wfConfig::getInt('wordfenceCentralConnectTime') > 0 ? wfConfig::getInt('wordfenceCentralConnectTime') : __('(not set)', 'wordfence')),
			array('description' => __('Site ID', 'wordfence'), 'value' => wfUtils::string_empty(wfConfig::get('wordfenceCentralSiteID'), __('(empty)', 'wordfence'))),
			array('description' => __('Disconnected', 'wordfence'), 'value' => wfConfig::get('wordfenceCentralDisconnected') ? __('true', 'wordfence') : __('false', 'wordfence')),
			array('description' => __('Disconnect Timestamp', 'wordfence'), 'value' => wfConfig::getInt('wordfenceCentralDisconnectTime') > 0 ? wfConfig::getInt('wordfenceCentralDisconnectTime') : __('(not set)', 'wordfence')),
			array('description' => __('Configuration Issue', 'wordfence'), 'value' => wfConfig::get('wordfenceCentralConfigurationIssue') ? __('true', 'wordfence') : __('false', 'wordfence')),
			array('description' => __('Plugin Alerting Disabled', 'wordfence'), 'value' => wfConfig::get('wordfenceCentralPluginAlertingDisabled') ? __('true', 'wordfence') : __('false', 'wordfence')),
		);
	}
}lib/wfInaccessibleDirectoryException.php000064400000000457150755146450014532 0ustar00<?php

class wfInaccessibleDirectoryException extends RuntimeException {

	private $directory;

	public function __construct($message, $directory) {
		parent::__construct("{$message}: {$directory}");
		$this->directory = $directory;
	}

	public function getDirectory() {
		return $this->directory;
	}

}lib/wfIpLocation.php000064400000003350150755146450010436 0ustar00<?php

class wfIpLocation {

	const LANGUAGE_DEFAULT = 'en';
	const LANGUAGE_SEPARATOR = '_';

	private $record;

	public function __construct($record) {
		$this->record = is_array($record) ? $record : array();
	}

	public function getCountryRecord() {
		if (array_key_exists('country', $this->record)) {
			$country = $this->record['country'];
			if (is_array($country))
				return $country;
		}
		return array();
	}

	public function getCountryField($field) {
		$country = $this->getCountryRecord();
		if (array_key_exists($field, $country))
			return $country[$field];
		return null;
	}

	public function getCountryCode() {
		$isoCode = $this->getCountryField('iso_code');
		if (is_string($isoCode) && strlen($isoCode) === 2)
			return $isoCode;
		return null;
	}

	private function findBestLanguageMatch($options, $preferredLanguage = self::LANGUAGE_DEFAULT) {
		$languages = array();
		if (is_string($preferredLanguage))
			$languages[] = $preferredLanguage;
		if (strpos($preferredLanguage, self::LANGUAGE_SEPARATOR) !== false) {
			$components = explode(self::LANGUAGE_SEPARATOR, $preferredLanguage);
			$baseLanguage = $components[0];
			if ($baseLanguage !== self::LANGUAGE_DEFAULT)
				$languages[] = $baseLanguage;
		}
		if ($preferredLanguage !== self::LANGUAGE_DEFAULT)
			$languages[] = self::LANGUAGE_DEFAULT;
		foreach ($languages as $language) {
			if (array_key_exists($language, $options))
				return $options[$language];
		}
		if (!empty($options))
			return reset($options);
		return null;
	}

	public function getCountryName($preferredLanguage = self::LANGUAGE_DEFAULT) {
		$names = $this->getCountryField('names');
		if (is_array($names) && !empty($names))
			return $this->findBestLanguageMatch($names, $preferredLanguage);
		return null;
	}

}lib/wfScanMonitor.php000064400000010070150755146450010626 0ustar00<?php

class wfScanMonitor {

	const CRON_INTERVAL_NAME = 'wf_scan_monitor_interval';
	const CRON_INTERVAL_AMOUNT = 60; //Seconds
	const CRON_HOOK = 'wf_scan_monitor';

	const CONFIG_LAST_ATTEMPT = 'scanMonitorLastAttempt';
	const CONFIG_LAST_ATTEMPT_WAS_FORK = 'scanMonitorLastAttemptWasFork';
	const CONFIG_LAST_ATTEMPT_MODE = 'scanMonitorLastAttemptMode';
	const CONFIG_LAST_SUCCESS = 'scanMonitorLastSuccess';
	const CONFIG_MAX_RESUME_ATTEMPTS = 'scan_max_resume_attempts';
	const CONFIG_REMAINING_RESUME_ATTEMPTS = 'scanMonitorRemainingResumeAttempts';

	const DEFAULT_RESUME_ATTEMPTS = 2;
	const MAX_RESUME_ATTEMPTS = 5;
	const SCAN_START_TIMEOUT = 30; //Seconds

	public static function beginMonitoring() {
		if (wp_next_scheduled(self::CRON_HOOK))
			return;
		wp_schedule_event(time(), self::CRON_INTERVAL_NAME, self::CRON_HOOK);
	}

	public static function endMonitoring() {
		$timestamp = wp_next_scheduled(self::CRON_HOOK);
		if ($timestamp !== false)
			wp_unschedule_event($timestamp, self::CRON_HOOK);
	}

	public static function validateResumeAttempts($attempts, &$valid = null) {
		if ($attempts < 0 || $attempts > self::MAX_RESUME_ATTEMPTS) {
			$valid = false;
			return self::DEFAULT_RESUME_ATTEMPTS;
		}
		$valid = true;
		return $attempts;
	}

	private static function setRemainingResumeAttempts($attempts) {
		wfConfig::set(self::CONFIG_REMAINING_RESUME_ATTEMPTS, $attempts);
	}

	public static function getConfiguredResumeAttempts() {
		$attempts = (int) wfConfig::get(self::CONFIG_MAX_RESUME_ATTEMPTS, self::DEFAULT_RESUME_ATTEMPTS);
		return self::validateResumeAttempts($attempts);
	}

	private static function resetResumeAttemptCounter() {
		$attempts = self::getConfiguredResumeAttempts();
		self::setRemainingResumeAttempts($attempts);
		return $attempts;
	}

	private static function getRemainingResumeAttempts() {
		$attempts = (int) wfConfig::get(self::CONFIG_REMAINING_RESUME_ATTEMPTS, 0);
		return self::validateResumeAttempts($attempts);
	}

	public static function handleScanStart($mode) {
		wfConfig::set(self::CONFIG_LAST_ATTEMPT_MODE, $mode);
		$maxAttempts = self::resetResumeAttemptCounter();
		if ($maxAttempts > 0)
			self::beginMonitoring();
	}

	public static function monitorScan() {
		$remainingAttempts = self::getRemainingResumeAttempts();
		if ($remainingAttempts > 0) {
			$now = time();
			$lastAttempt = wfConfig::get(self::CONFIG_LAST_ATTEMPT);
			if ($lastAttempt === null || $now - $lastAttempt < self::SCAN_START_TIMEOUT)
				return;
			$lastSuccess = wfConfig::get(self::CONFIG_LAST_SUCCESS);
			self::setRemainingResumeAttempts(--$remainingAttempts);
			if ($lastSuccess === null || $lastAttempt > $lastSuccess) {
				wordfence::status(2, 'info', sprintf(__('Attempting to resume scan stage (%d attempt(s) remaining)...', 'wordfence'), $remainingAttempts));
				self::resumeScan();
			}
		}
		else {
			self::endMonitoring();
		}
	}

	private static function resumeScan() {
		$mode = wfConfig::get(self::CONFIG_LAST_ATTEMPT_MODE);
		if (!wfScanner::isValidScanType($mode))
			$mode = false;
		wfScanEngine::startScan(wfConfig::get(self::CONFIG_LAST_ATTEMPT_WAS_FORK), $mode, true);
	}

	private static function logTimestamp($key) {
		wfConfig::set($key, time());
	}

	public static function logLastAttempt($fork) {
		self::logTimestamp(self::CONFIG_LAST_ATTEMPT);
		wfConfig::set(self::CONFIG_LAST_ATTEMPT_WAS_FORK, $fork);
	}

	public static function logLastSuccess() {
		self::logTimestamp(self::CONFIG_LAST_SUCCESS);
	}

	public static function handleStageStart($fork) {
		if ($fork)
			self::resetResumeAttemptCounter();
	}

	public static function registerCronInterval($schedules) {
		if (!array_key_exists(self::CRON_INTERVAL_NAME, $schedules)) {
			$schedules[self::CRON_INTERVAL_NAME] = array(
				'interval' => self::CRON_INTERVAL_AMOUNT,
				'display' => 'Wordfence Scan Monitor'
			);
		}
		return $schedules;
	}

	public static function registerActions() {
		add_filter('cron_schedules', array(self::class, 'registerCronInterval'));
		add_action(self::CRON_HOOK, array(self::class, 'monitorScan'));
	}

	public static function handleDeactivation() {
		self::endMonitoring();
	}

}lib/menu_firewall_blocking_options.php000064400000011201150755146450014306 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }

$backPage = new wfPage(wfPage::PAGE_BLOCKING);
if (isset($_GET['source']) && wfPage::isValidPage($_GET['source'])) {
	$backPage = new wfPage($_GET['source']);
}
?>
<script type="application/javascript">
	(function($) {
		$(function() {
			document.title = "<?php esc_attr_e('Blocking Options', 'wordfence'); ?>" + " \u2039 " + WFAD.basePageName;

			//Hash-based option block linking
			if (window.location.hash) {
				var hashes = WFAD.parseHashes();
				var hash = hashes[hashes.length - 1];
				var block = $('.wf-block[data-persistence-key="' + hash + '"]');
				if (block) {
					if (!block.hasClass('wf-active')) {
						block.find('.wf-block-content').slideDown({
							always: function() {
								block.addClass('wf-active');
								$('html, body').animate({
									scrollTop: block.offset().top - 100
								}, 1000);
							}
						});

						WFAD.ajax('wordfence_saveDisclosureState', {name: block.data('persistenceKey'), state: true}, function() {});
					}
					else {
						$('html, body').animate({
							scrollTop: block.offset().top - 100
						}, 1000);
					}
					history.replaceState('', document.title, window.location.pathname + window.location.search);
				}
			}
		});
	})(jQuery);
</script>
<div class="wf-options-controls">
	<div class="wf-row">
		<div class="wf-col-xs-12">
			<?php
			echo wfView::create('options/block-controls', array(
				'backLink' => $backPage->url(),
				'backLabelHTML' => wp_kses(sprintf(
						/* translators: Page title/label. */
						__('<span class="wf-hidden-xs">Back to </span>%s', 'wordfence'), $backPage->label()), array('span'=>array('class'=>array()))),
				'restoreDefaultsSection' => wfConfig::OPTIONS_TYPE_BLOCKING,
				'restoreDefaultsMessage' => __('Are you sure you want to restore the default Blocking settings? This will undo any custom changes you have made to the options on this page. Any existing blocks will be preserved.', 'wordfence'),
			))->render();
			?>
		</div>
	</div>
</div>
<div class="wf-options-controls-spacer"></div>
<?php
if (!wfOnboardingController::shouldShowAttempt3() && wfConfig::get('touppPromptNeeded')) {
	echo wfView::create('gdpr/disabled-overlay')->render();
	echo wfView::create('gdpr/banner')->render();
}
?>
<div class="wrap wordfence">
	<div class="wf-container-fluid">
		<?php
		if (function_exists('network_admin_url') && is_multisite()) {
			$firewallURL = network_admin_url('admin.php?page=WordfenceWAF#top#waf');
			$blockingURL = network_admin_url('admin.php?page=WordfenceWAF#top#blocking');
		}
		else {
			$firewallURL = admin_url('admin.php?page=WordfenceWAF#top#waf');
			$blockingURL = admin_url('admin.php?page=WordfenceWAF#top#blocking');
		}
		?>
		<div class="wf-row">
			<div class="wf-col-xs-12">
				<div class="wp-header-end"></div>
			</div>
		</div>
		<div class="wf-row">
			<div class="<?php echo wfStyle::contentClasses(); ?>">
				<div id="waf-options" class="wf-fixed-tab-content">
					<?php
					echo wfView::create('common/section-title', array(
						'title' => __('Blocking Options', 'wordfence'),
						'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_BLOCKING),
						'helpLabelHTML' => wp_kses(__('Learn more<span class="wf-hidden-xs"> about Blocking</span>', 'wordfence'), array('span'=>array('class'=>array()))),
						'showIcon' => true,
					))->render();
					?>
					<div class="wf-row">
						<div class="wf-col-xs-12">
							<div class="wf-block wf-always-active">
								<div class="wf-block-header">
									<div class="wf-block-header-content">
										<div class="wf-block-title">
											<strong><?php esc_html_e('General', 'wordfence'); ?></strong>
										</div>
										<div class="wf-block-header-action"></div>
									</div>
								</div>
								<div class="wf-block-content">
									<ul class="wf-block-list">
										<li>
											<?php
											echo wfView::create('options/option-toggled', array(
												'optionName' => 'displayTopLevelBlocking',
												'enabledValue' => 1,
												'disabledValue' => 0,
												'value' => wfConfig::get('displayTopLevelBlocking') ? 1 : 0,
												'title' => __('Display Blocking menu option', 'wordfence'),
											))->render();
											?>
										</li>
									</ul>
								</div>
							</div>
						</div>
					</div> <!-- end general options -->
					<?php
					echo wfView::create('blocking/options-group-advanced-country', array(
						'stateKey' => 'blocking-options-country',
						'collapseable' => false,
					))->render();
					?>
				</div> <!-- end blocking options block -->
			</div> <!-- end content block -->
		</div> <!-- end row -->
	</div> <!-- end container -->
</div>lib/wfDict.php000064400000001342150755146450007257 0ustar00<?php
$dictWords = array(
'password',
'Password',
'passwd',
'admin',
'administrator',
'super',
'superuser',
'supervisor',
'root',
'manager',
'mgr',
'1234567890',
'123456789',
'12345678',
'1234567',
'123456',
'12345',
'1234',
'123',
'12',
'1',
'password',
'abc123',
'qwerty',
'asdf',
'zxcv',
'9876543210',
'876543210',
'76543210',
'6543210',
'543210',
'43210',
'3210',
'210',
'10',
'0',
'1',
'11',
'111',
'1111',
'11111',
'2',
'22',
'222',
'2222',
'22222',
'3',
'33',
'333',
'3333',
'33333',
'4',
'44',
'444',
'4444',
'44444',
'5',
'55',
'555',
'5555',
'55555',
'6',
'66',
'666',
'6666',
'66666',
'7',
'77',
'777',
'7777',
'77777',
'8',
'88',
'888',
'8888',
'88888',
'9',
'99',
'999',
'9999',
'99999',
'0',
'00',
'000',
'0000',
'00000'
);
lib/wfInvalidPathException.php000064400000000412150755146450012453 0ustar00<?php

class wfInvalidPathException extends RuntimeException {

	private $path;

	public function __construct($message, $path) {
		parent::__construct("{$message} for path {$path}");
		$this->path = $path;
	}

	public function getPath() {
		return $this->path;
	}

}lib/menu_scanner.php000064400000053037150755146450010524 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
$scanner = wfScanner::shared();
$issues = wfIssues::shared();
$dashboard = new wfDashboard();
?>
<?php if (wfConfig::get('liveActivityPauseEnabled')): ?>
	<div id="wfLiveTrafficOverlayAnchor"></div>
	<div id="wfLiveTrafficDisabledMessage">
		<h2><?php echo wp_kses(__('Status Updates Paused<br /><small>Click inside window to resume</small>', 'wordfence'), array('small'=>array(), 'br'=>array())); ?></h2>
	</div>
<?php endif; ?>
<?php
if (!wfOnboardingController::shouldShowAttempt3() && wfConfig::get('touppPromptNeeded')) {
	echo wfView::create('gdpr/disabled-overlay')->render();
	echo wfView::create('gdpr/banner')->render();
}
?>
<div id="wordfenceMode_scan"></div>
<div class="wrap wordfence">
	<div class="wf-container-fluid">
		<div class="wf-row">
			<div class="wf-col-xs-12">
				<div class="wp-header-end"></div> 
				<?php
				echo wfView::create('common/section-title', array(
					'title' => __('Scan', 'wordfence'),
					'headerID' => 'wf-section-scan',
					'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN),
					'helpLabelHTML' => wp_kses(__('Learn more<span class="wf-hidden-xs"> about the Scanner</span>', 'wordfence'), array('span'=>array('class'=>array()))),
					'showIcon' => true,
				))->render();
				?>
			</div>
			<div class="wf-col-xs-12">
				<div class="wf-block wf-active">
					<div class="wf-block-content">
						<ul class="wf-block-list">
							<li>
								<?php
								echo wfView::create('scanner/scanner-status', array(
									'scanner' => $scanner,
									'dashboard' => $dashboard,
								))->render();
								?>
							</li>
							<li>
								<ul class="wf-block-list wf-block-list-horizontal wf-block-list-nowrap wf-scanner-coverage">
									<li>
										<?php
										if (function_exists('network_admin_url') && is_multisite()) { $optionsURL = network_admin_url('admin.php?page=WordfenceScan&subpage=scan_options'); }
										else { $optionsURL = admin_url('admin.php?page=WordfenceScan&subpage=scan_options'); }
										echo wfView::create('common/status-detail', array(
											'id' => 'wf-scanner-type',
											'percentage' => $scanner->scanTypeStatus(),
											'activeColor' => (!$scanner->isEnabled() ? '#ececec' : null /* automatic */),
											'title' => __('Scan Type: ', 'wordfence') . wfScanner::displayScanType($scanner->scanType()),
											'subtitle' => wfScanner::displayScanTypeDetail($scanner->scanType()),
											'link' => $optionsURL,
											'linkLabel' => __('Manage Scan', 'wordfence'),
											'statusTitle' => __('Scan Status', 'wordfence'),
											'statusList' => $scanner->scanTypeStatusList(),
											'helpLink' => __('https://www.wordfence.com/help/scan/#scan-status', 'wordfence'),
										))->render();
										?>
									</li>
									<li>
										<?php
										echo wfView::create('common/status-detail', array(
											'id' => 'wf-scanner-malware-type',
											'percentage' => $scanner->signatureMode() == wfScanner::SIGNATURE_MODE_PREMIUM ? 1.0 : 0.7,
											'activeColor' => (!$scanner->isEnabled() ? '#ececec' : null /* automatic */),
											'title' => __('Malware Signatures: ', 'wordfence') . ($scanner->signatureMode() == wfScanner::SIGNATURE_MODE_PREMIUM ? __('Premium', 'wordfence') : __('Community', 'wordfence')),
											'subtitle' => ($scanner->signatureMode() == wfScanner::SIGNATURE_MODE_PREMIUM ? __('Signatures updated in real-time', 'wordfence') : __('Signature updates delayed by 30 days', 'wordfence')),
											'link' => 'https://www.wordfence.com/gnl1scanUpgrade/wordfence-signup/',
											'linkLabel' => ($scanner->signatureMode() == wfScanner::SIGNATURE_MODE_PREMIUM ? __('Protect More Sites', 'wordfence') : __('Upgrade to Premium', 'wordfence')),
											'linkNewWindow' => true,
											'statusTitle' => __('Malware Signatures Status', 'wordfence'),
											'statusList' => $scanner->signatureMode() == wfScanner::SIGNATURE_MODE_PREMIUM ? array() : array(array(
												'percentage' => 0.30,
												'title'      => __('Enable Premium Scan Signatures.', 'wordfence'),
											)),
											'helpLink' => __('https://www.wordfence.com/help/scan/#scan-status', 'wordfence'),
										))->render();
										?>
									</li>
									<li>
										<?php
										echo wfView::create('common/status-detail', array(
											'id' => 'wf-scanner-reputation',
											'percentage' => $scanner->reputationStatus(),
											'activeColor' => (!$scanner->isEnabled() ? '#ececec' : null /* automatic */),
											'title' => __('Reputation Checks', 'wordfence'),
											'subtitle' => __('Check spam &amp; spamvertising blocklists', 'wordfence'),
											'link' => $optionsURL . '#wf-scanner-options-general',
											'linkLabel' => __('Manage Options', 'wordfence'),
											'statusTitle' => __('Reputation Check Status', 'wordfence'),
											'statusList' => $scanner->reputationStatusList(),
											'helpLink' => __('https://www.wordfence.com/help/scan/#scan-status', 'wordfence'),
										))->render();
										?>
									</li>
								</ul>
							</li>
						</ul>
					</div>
				</div>
			</div>
		</div>
		<div class="wf-row">
			<div class="wf-col-xs-12">
				<div class="wf-block wf-active">
					<div class="wf-block-content">
						<ul class="wf-block-list">
							<li>
								<ul class="wf-block-list wf-block-list-horizontal wf-scan-navigation">
									<li>
										<?php
										echo wfView::create('scanner/scan-starter', array(
											'running' => wfScanner::shared()->isRunning(),
										))->render();
										?>
									</li>
									<li>
										<?php
										echo wfView::create('common/block-navigation-option', array(
											'id' => 'wf-scan-option-support',
											'img' => 'support.svg',
											'title' => __('Help', 'wordfence'),
											'subtitle' => __('Find the documentation and help you need', 'wordfence'),
											'link' => network_admin_url('admin.php?page=WordfenceSupport'),
										))->render();
										?>
									</li>
									<li>
										<?php
										echo wfView::create('common/block-navigation-option', array(
											'id' => 'wf-scan-option-all-options',
											'img' => 'options.svg',
											'title' => __('Scan Options and Scheduling', 'wordfence'),
											'subtitle' => __('Manage scan options including scheduling', 'wordfence'),
											'link' => network_admin_url('admin.php?page=WordfenceScan&subpage=scan_options'),
										))->render();
										?>
									</li>
								</ul>
							</li>
							<li id="wf-scan-progress-bar">
								<?php
								echo wfView::create('scanner/scan-progress', array(
									'scanner' => $scanner,
									'running' => wfScanner::shared()->isRunning(),
								))->render();
								?>
							</li>
						</ul>
					</div>
				</div>
			</div>
		</div>
		<div class="wf-row">
			<div class="wf-col-xs-12">
				<?php
				echo wfView::create('scanner/scan-progress-detailed', array(
					'scanner' => $scanner,
				))->render();
				?>
			</div>
		</div>
		<div class="wf-row">
            <div class="wf-col-xs-12">
			  <?php
			  echo wfView::create('scanner/scan-results', array(
				'scanner' => $scanner, 
				 'issues' => $issues,
			  ))->render();
			  ?>
            </div>
        </div>
		<div class="wf-row">
			<div class="wf-col-xs-12">
				<?php
				echo wfView::create('scanner/site-cleaning-bottom', array(
				))->render();
				?>
			</div>
		</div>
	</div> <!-- end container -->
</div>
<script type="application/javascript">
	(function($) {
		$(function() {
			WFAD.updateActivityLog();
			WFAD.startActivityLogUpdates();
		});
	})(jQuery);
</script>

<script type="text/x-jquery-template" id="wfTmpl_scannerDelete">
	<?php
	echo wfView::create('common/modal-prompt', array(
		'title' => __('Are you sure you want to delete?', 'wordfence'),
		'messageHTML' => '<p class="wf-callout-warning"><i class="wf-fa wf-fa-exclamation-triangle" aria-hidden="true"></i> ' . wp_kses(__('<strong>WARNING:</strong> If you delete the wrong file, it could cause your WordPress website to stop functioning, and you will probably have to restore from a backup.', 'wordfence'), array('strong'=>array())) . '</p>' . 
			'<p>' . wp_kses(sprintf(
			/* translators: Support URL. */
					__('Do not delete files on your system unless you\'re ABSOLUTELY sure you know what you\'re doing. If you delete the wrong file it could cause your WordPress website to stop functioning and you will probably have to restore from backups. If you\'re unsure, Cancel and work with your hosting provider to clean your system of infected files. If you\'d like to learn more, <a href="%s" target="_blank" rel="noopener noreferrer">click here for our help article<span class="screen-reader-text"> (opens in new tab)</span></a>.', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_BULK_DELETE_WARNING)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()), 'span'=>array('class'=>array()))) . '</p>',
		'primaryButton' => array('id' => 'wf-scanner-prompt-cancel', 'label' => __('Cancel', 'wordfence'), 'link' => '#', 'type' => 'wf-btn-default'),
		'secondaryButtons' => array(array('id' => 'wf-scanner-prompt-confirm', 'label' => __('Delete Files', 'wordfence'), 'link' => '#', 'type' => 'wf-btn-danger')),
	))->render();
	?>
</script>

<script type="text/x-jquery-template" id="wfTmpl_scannerRepair">
	<?php
	echo wfView::create('common/modal-prompt', array(
		'title' => __('Are you sure you want to repair?', 'wordfence'),
		'message' => __('Do not repair files on your system unless you\'re ABSOLUTELY sure you know what you\'re doing. If you repair the wrong file it could cause your WordPress website to stop functioning and you will probably have to restore from backups. If you\'re unsure, Cancel and work with your hosting provider to clean your system of infected files.', 'wordfence'),
		'primaryButton' => array('id' => 'wf-scanner-prompt-cancel', 'label' => __('Cancel', 'wordfence'), 'link' => '#'),
		'secondaryButtons' => array(array('id' => 'wf-scanner-prompt-confirm', 'label' => __('Repair Files', 'wordfence'), 'link' => '#')),
	))->render();
	?>
</script>

<script type="text/x-jquery-template" id="wfTmpl_scannerStop">
	<?php
	echo wfView::create('common/modal-prompt', array(
		'title' => '${title}',
		'message' => '${message}',
		'primaryButton' => array('id' => 'wf-generic-modal-close', 'label' => __('Close', 'wordfence'), 'link' => '#'),
	))->render();
	?>
</script>

<?php
echo wfView::create('scanner/site-cleaning')->render();
echo wfView::create('scanner/site-cleaning-high-sense')->render();
echo wfView::create('scanner/site-cleaning-beta-sigs')->render();
echo wfView::create('scanner/no-issues')->render();
echo wfView::create('scanner/issue-wfUpgrade')->render();
echo wfView::create('scanner/issue-wfUpgradeError')->render();
echo wfView::create('scanner/issue-wfPluginUpgrade')->render();
echo wfView::create('scanner/issue-wfThemeUpgrade')->render();
echo wfView::create('scanner/issue-wfPluginRemoved')->render();
echo wfView::create('scanner/issue-wfPluginAbandoned')->render();
echo wfView::create('scanner/issue-wfPluginVulnerable')->render();
echo wfView::create('scanner/issue-file')->render();
echo wfView::create('scanner/issue-skippedPaths')->render();
echo wfView::create('scanner/issue-knownfile')->render();
echo wfView::create('scanner/issue-configReadable')->render();
echo wfView::create('scanner/issue-publiclyAccessible')->render();
echo wfView::create('scanner/issue-coreUnknown')->render();
echo wfView::create('scanner/issue-diskSpace')->render();
echo wfView::create('scanner/issue-wafStatus')->render();
echo wfView::create('scanner/issue-geoipSupport')->render();
echo wfView::create('scanner/issue-easyPassword')->render();
echo wfView::create('scanner/issue-commentBadURL')->render();
echo wfView::create('scanner/issue-postBadURL')->render();
echo wfView::create('scanner/issue-postBadTitle')->render();
echo wfView::create('scanner/issue-optionBadURL')->render();
echo wfView::create('scanner/issue-database')->render();
echo wfView::create('scanner/issue-checkSpamIP')->render();
echo wfView::create('scanner/issue-spamvertizeCheck')->render();
echo wfView::create('scanner/issue-checkGSB')->render();
echo wfView::create('scanner/issue-checkHowGetIPs')->render();
echo wfView::create('scanner/issue-suspiciousAdminUsers')->render();
echo wfView::create('scanner/issue-timelimit')->render();

//Currently unused
echo wfView::create('scanner/issue-wpscan_fullPathDiscl')->render();
echo wfView::create('scanner/issue-wpscan_directoryList')->render();

if (wfOnboardingController::willShowNewTour(wfOnboardingController::TOUR_SCAN)): ?>
	<script type="application/javascript">
		(function($) {
			$(function() {
				WFAD.tour1 = function() {
					WFAD.tour('wfNewTour1', 'wf-section-scan', 'top', 'left', null, WFAD.tour2);
				};
				WFAD.tour2 = function() {
					WFAD.tour('wfNewTour2', 'wf-scan-option-all-options', 'right', 'right', WFAD.tour1, WFAD.tour3);
				};
				WFAD.tour3 = function() {
					WFAD.tour('wfNewTour3', 'wf-scan-starter', 'left', 'left', WFAD.tour2, WFAD.tourComplete); 
				};
				WFAD.tourComplete = function() { WFAD.tourFinish('<?php echo esc_attr(wfOnboardingController::TOUR_SCAN); ?>'); };

				<?php if (wfOnboardingController::shouldShowNewTour(wfOnboardingController::TOUR_SCAN)): ?>
				if (!WFAD.isSmallScreen) { WFAD.tour1(); }
				<?php endif; ?>
			});
		})(jQuery);
	</script>

	<script type="text/x-jquery-template" id="wfNewTour1">
		<div>
			<h3><?php esc_html_e('Scan', 'wordfence'); ?></h3>
			<p><?php esc_html_e('A Wordfence scan looks for malware, malicious URLs, and patterns of infections by examining all of the files, posts, and comments on your WordPress website. It also checks your server and monitors your site\'s online reputation.', 'wordfence'); ?></p>
			<div class="wf-pointer-footer">
				<ul class="wf-tour-pagination">
					<li class="wf-active">&bullet;</li>
					<li>&bullet;</li>
					<li>&bullet;</li>
				</ul>
				<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Next', 'wordfence'); ?></a></div>
			</div>
			<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
		</div>
	</script>
	<script type="text/x-jquery-template" id="wfNewTour2">
		<div>
			<h3><?php esc_html_e('Manage Scan Settings', 'wordfence'); ?></h3>
			<p class="wf-center"><svg viewBox="0 0 100.11 100.11" class="wf-icon"><path d="M99.59,41.42a2.06,2.06,0,0,0-1.37-.82L86.3,38.78a39.34,39.34,0,0,0-2.67-6.39q1.17-1.63,3.52-4.6t3.32-4.33A2.52,2.52,0,0,0,91,22a2.1,2.1,0,0,0-.46-1.43Q88.18,17.2,79.78,9.45a2.52,2.52,0,0,0-1.63-.65,2.12,2.12,0,0,0-1.57.59l-9.25,7a40.09,40.09,0,0,0-5.87-2.41L59.64,2a1.92,1.92,0,0,0-.75-1.4A2.46,2.46,0,0,0,57.29,0H42.82a2.19,2.19,0,0,0-2.34,1.82,106,106,0,0,0-1.89,12.12,37.62,37.62,0,0,0-5.93,2.48l-9-7A2.78,2.78,0,0,0,22,8.8q-1.44,0-6.16,4.66a64.88,64.88,0,0,0-6.42,7A2.75,2.75,0,0,0,8.8,22a2.44,2.44,0,0,0,.65,1.56q4.37,5.28,7,9a32.38,32.38,0,0,0-2.54,6L1.76,40.34a2,2,0,0,0-1.24.85A2.5,2.5,0,0,0,0,42.69V57.16a2.44,2.44,0,0,0,.52,1.53,2,2,0,0,0,1.37.82l11.93,1.76a31.91,31.91,0,0,0,2.67,6.45Q15.31,69.35,13,72.31T9.65,76.65a2.54,2.54,0,0,0-.07,3q2.54,3.52,10.75,11a2.25,2.25,0,0,0,1.63.71,2.35,2.35,0,0,0,1.63-.59l9.19-7a40.54,40.54,0,0,0,5.87,2.41l1.82,12a1.92,1.92,0,0,0,.75,1.4,2.45,2.45,0,0,0,1.6.55H57.29a2.2,2.2,0,0,0,2.35-1.82,107.41,107.41,0,0,0,1.89-12.12,37.19,37.19,0,0,0,5.93-2.48l9,7a3.18,3.18,0,0,0,1.69.59q1.43,0,6.13-4.62a65.86,65.86,0,0,0,6.45-7,2.16,2.16,0,0,0,.59-1.5,2.51,2.51,0,0,0-.65-1.63q-4.69-5.74-7-9a41.57,41.57,0,0,0,2.54-5.93l12.06-1.82a2,2,0,0,0,1.3-.85,2.52,2.52,0,0,0,.52-1.5V43a2.46,2.46,0,0,0-.52-1.53ZM61.85,61.86a16.08,16.08,0,0,1-11.8,4.89A16.69,16.69,0,0,1,33.37,50.06,16.69,16.69,0,0,1,50.06,33.37,16.69,16.69,0,0,1,66.74,50.06a16.08,16.08,0,0,1-4.89,11.8Zm0,0"></path></svg></p>
			<p><?php esc_html_e('Set up the way you want the scan to monitor your site security including custom scan configurations and scheduling.', 'wordfence'); ?></p>
			<div class="wf-pointer-footer">
				<ul class="wf-tour-pagination">
					<li>&bullet;</li>
					<li class="wf-active">&bullet;</li>
					<li>&bullet;</li>
				</ul>
				<div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default" role="button"><?php esc_html_e('Previous', 'wordfence'); ?></a></div>
				<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Next', 'wordfence'); ?></a></div>
			</div>
			<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
		</div>
	</script>
	<script type="text/x-jquery-template" id="wfNewTour3">
		<div>
			<h3><?php esc_html_e('Start Your First Scan', 'wordfence'); ?></h3>
			<p><?php esc_html_e('By default, Wordfence will scan your site daily. Start your first scan now to see if your site has any security issues that need to be addressed. From here you can run manual scans any time you like.', 'wordfence'); ?></p>
			<div class="wf-pointer-footer">
				<ul class="wf-tour-pagination">
					<li>&bullet;</li>
					<li>&bullet;</li>
					<li class="wf-active">&bullet;</li>
				</ul>
				<div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default" role="button"><?php esc_html_e('Previous', 'wordfence'); ?></a></div>
				<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Got it', 'wordfence'); ?></a></div>
			</div>
			<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
		</div>
	</script>
<?php endif; ?>

<?php if (wfOnboardingController::willShowUpgradeTour(wfOnboardingController::TOUR_SCAN)): ?>
	<script type="application/javascript">
		(function($) {
			$(function() {
				WFAD.tour1 = function() {
					WFAD.tour('wfUpgradeTour1', 'wf-scan-option-all-options', 'right', 'right', null, WFAD.tour2);
				};
				WFAD.tour2 = function() {
					WFAD.tour('wfUpgradeTour2', 'wf-scan-starter', 'left', 'left', WFAD.tour1, WFAD.tourComplete);
				};
				WFAD.tourComplete = function() { WFAD.tourFinish('<?php echo esc_attr(wfOnboardingController::TOUR_SCAN); ?>'); };

				<?php if (wfOnboardingController::shouldShowUpgradeTour(wfOnboardingController::TOUR_SCAN)): ?>
				if (!WFAD.isSmallScreen) { WFAD.tour1(); }
				<?php endif; ?>
			});
		})(jQuery);
	</script>

	<script type="text/x-jquery-template" id="wfUpgradeTour1">
		<div>
			<h3><?php esc_html_e('Scan Options &amp; Settings', 'wordfence'); ?></h3>
			<p class="wf-center"><svg viewBox="0 0 100.11 100.11" class="wf-icon"><path d="M99.59,41.42a2.06,2.06,0,0,0-1.37-.82L86.3,38.78a39.34,39.34,0,0,0-2.67-6.39q1.17-1.63,3.52-4.6t3.32-4.33A2.52,2.52,0,0,0,91,22a2.1,2.1,0,0,0-.46-1.43Q88.18,17.2,79.78,9.45a2.52,2.52,0,0,0-1.63-.65,2.12,2.12,0,0,0-1.57.59l-9.25,7a40.09,40.09,0,0,0-5.87-2.41L59.64,2a1.92,1.92,0,0,0-.75-1.4A2.46,2.46,0,0,0,57.29,0H42.82a2.19,2.19,0,0,0-2.34,1.82,106,106,0,0,0-1.89,12.12,37.62,37.62,0,0,0-5.93,2.48l-9-7A2.78,2.78,0,0,0,22,8.8q-1.44,0-6.16,4.66a64.88,64.88,0,0,0-6.42,7A2.75,2.75,0,0,0,8.8,22a2.44,2.44,0,0,0,.65,1.56q4.37,5.28,7,9a32.38,32.38,0,0,0-2.54,6L1.76,40.34a2,2,0,0,0-1.24.85A2.5,2.5,0,0,0,0,42.69V57.16a2.44,2.44,0,0,0,.52,1.53,2,2,0,0,0,1.37.82l11.93,1.76a31.91,31.91,0,0,0,2.67,6.45Q15.31,69.35,13,72.31T9.65,76.65a2.54,2.54,0,0,0-.07,3q2.54,3.52,10.75,11a2.25,2.25,0,0,0,1.63.71,2.35,2.35,0,0,0,1.63-.59l9.19-7a40.54,40.54,0,0,0,5.87,2.41l1.82,12a1.92,1.92,0,0,0,.75,1.4,2.45,2.45,0,0,0,1.6.55H57.29a2.2,2.2,0,0,0,2.35-1.82,107.41,107.41,0,0,0,1.89-12.12,37.19,37.19,0,0,0,5.93-2.48l9,7a3.18,3.18,0,0,0,1.69.59q1.43,0,6.13-4.62a65.86,65.86,0,0,0,6.45-7,2.16,2.16,0,0,0,.59-1.5,2.51,2.51,0,0,0-.65-1.63q-4.69-5.74-7-9a41.57,41.57,0,0,0,2.54-5.93l12.06-1.82a2,2,0,0,0,1.3-.85,2.52,2.52,0,0,0,.52-1.5V43a2.46,2.46,0,0,0-.52-1.53ZM61.85,61.86a16.08,16.08,0,0,1-11.8,4.89A16.69,16.69,0,0,1,33.37,50.06,16.69,16.69,0,0,1,50.06,33.37,16.69,16.69,0,0,1,66.74,50.06a16.08,16.08,0,0,1-4.89,11.8Zm0,0"></path></svg></p>
			<p class="wf-center"><?php esc_html_e('All of your scan options, including scheduling, are now located here.', 'wordfence'); ?></p>
			<div class="wf-pointer-footer">
				<ul class="wf-tour-pagination">
					<li class="wf-active">&bullet;</li>
					<li>&bullet;</li>
				</ul>
				<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Next', 'wordfence'); ?></a></div>
			</div>
			<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
		</div>
	</script>
	<script type="text/x-jquery-template" id="wfUpgradeTour2">
		<div>
			<h3><?php esc_html_e('Scan Progress and Activity', 'wordfence'); ?></h3>
			<p><?php esc_html_e('Track each scan stage as Wordfence scans your entire site. Along the way you can see the activity log one line at a time or expand the activity log for a more detailed view. Clicking on scan results will reveal detailed scan findings.', 'wordfence'); ?></p>
			<div class="wf-pointer-footer">
				<ul class="wf-tour-pagination">
					<li>&bullet;</li>
					<li class="wf-active">&bullet;</li>
				</ul>
				<div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default" role="button"><?php esc_html_e('Previous', 'wordfence'); ?></a></div>
				<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Got it', 'wordfence'); ?></a></div>
			</div>
			<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
		</div>
	</script>
<?php endif; ?>lib/menu_tools_whois.php000064400000011162150755146450011435 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
?>
<script type="application/javascript">
	(function($) {
		$(function() {
			document.title = "<?php esc_attr_e('Whois Lookup', 'wordfence'); ?>" + " \u2039 " + WFAD.basePageName;
		});
	})(jQuery);
</script>

<div class="wordfenceModeElem" id="wordfenceMode_whois"></div>

<div id="wf-tools-whois">
	<div class="wf-section-title">
		<h2><?php esc_html_e('Whois Lookup', 'wordfence') ?></h2>
		<span><?php echo wp_kses(sprintf(
				/* translators: URL to support page. */
				__('<a href="%s" target="_blank" rel="noopener noreferrer" class="wf-help-link">Learn more<span class="wf-hidden-xs"> about Whois Lookup</span><span class="screen-reader-text"> (opens in new tab)</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_TOOLS_WHOIS_LOOKUP)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array(), 'class'=>array()), 'span'=>array('class'=>array()))); ?>
			<i class="wf-fa wf-fa-external-link" aria-hidden="true"></i></span>
	</div>

	<p><?php esc_html_e("The whois service gives you a way to look up who owns an IP address or domain name that is visiting your website or is engaging in malicious activity on your website.", 'wordfence') ?></p>

	<div>

		<div class="wf-form wf-flex-row">
			<div class="wf-flex-row-1">
				<input type="text" class="wf-form-control" name="whois" id="wfwhois" value="" maxlength="255" onkeydown="if(event.keyCode == 13){ whois(jQuery('#wfwhois').val()) }"/>
			</div>
			<div class="wf-flex-row-0 wf-padding-add-left">
				<input type="button" name="whoisbutton" id="whoisbutton" class="wf-btn wf-btn-primary" value="Look up IP or Domain" onclick="whois(jQuery('#wfwhois').val());">
			</div>
		</div>
		<?php if (isset($_GET['wfnetworkblock']) && $_GET['wfnetworkblock']) { ?>
			<h2><?php esc_html_e('How to block a network', 'wordfence') ?></h2>
			<p style="width: 600px;">
				<?php echo wp_kses(sprintf(
				/* translators: Hostname or IP address. */
						__("You've chosen to block the network that <span style=\"color: #F00;\">%s</span> is part of. We've marked the networks we found that this IP address belongs to in red below. Make sure you read all the WHOIS information so that you see all networks this IP belongs to. We recommend blocking the network with the lowest number of addresses. You may find this is listed at the end as part of the 'rWHOIS' query which contacts the local WHOIS server that is run by the network administrator.", 'wordfence'), esc_html($_GET['whoisval'])), array('span'=>array('style'=>array()))); ?>
			</p>
		<?php } ?>
		<div id="wfrawhtml" class="wf-padding-add-top"></div>
	</div>
	<script type="text/x-jquery-template" id="wfBlockedRangesTmpl">
		<div>
			<div style="border-bottom: 1px solid #CCC; padding-bottom: 10px; margin-bottom: 10px;">
				<table border="0" style="width: 100%">
					{{each(idx, elem) results}}
					<tr>
						<td></td>
					</tr>
					{{/each}}
				</table>
			</div>
		</div>
	</script>
	<script type="text/javascript">
		var whoisval = "<?php if (isset($_GET['whoisval'])) {
			echo esc_js($_GET['whoisval']);
		} ?>";
		if (whoisval) {
			jQuery(function() {
				jQuery('#wfwhois').val(whoisval);
				whois(whoisval);
			});
		}
	</script>

	<script type="text/x-jquery-template" id="wfWhoisBlock">
		<div class="wf-block wf-active">
			<div class="wf-block-header">
				<div class="wf-block-header-content">
					<div class="wf-block-title">
						<strong><?php esc_html_e('Whois Lookup', 'wordfence') ?> <a>${ip}</a></strong>
					</div>
				</div>
			</div>
			<div class="wf-block-content wf-clearfix">
				<ul class="wf-block-list">
					<li>
						<div class="wf-padding-add-top">{{html whois}}</div>
					</li>
				</ul>
			</div>
		</div>
	</script>

</div>

<script type="text/javascript">
	function whois(ip) {
		var val = ip.replace(' ', '');
		if (!/\w+/.test(val)) {
			WFAD.colorboxModal('300px', <?php echo json_encode(__("Enter a valid IP or domain", 'wordfence')) ?>, <?php echo json_encode(__("Please enter a valid IP address or domain name for your whois lookup.", 'wordfence')) ?>);
			return;
		}
		var whoisButton = jQuery('#whoisbutton').attr('disabled', 'disabled')
			.attr('value', <?php echo json_encode(__('Loading...', 'wordfence')) ?>);
		WFAD.ajax('wordfence_whois', {
			val: val
		}, function(res) {
			whoisButton.removeAttr('disabled')
				.attr('value', <?php echo json_encode(__('Look up IP or Domain', 'wordfence')) ?>);
			var whoisHTML = WFAD.completeWhois(res, true);
			var content = jQuery('#wfWhoisBlock').tmpl({
				ip: val,
				whois: whoisHTML
			});
			if (!res.ok)
				content.addClass('failed');
			jQuery('#wfrawhtml').html(content);
		});
	}
</script>lib/email_unlockRequest.php000064400000004535150755146450012061 0ustar00<?php if (!defined('WORDFENCE_VERSION')) { exit; } ?>
<?php echo wp_kses(sprintf(
	/* translators: 1. IP address. 2. Site URL. 3. Site name.  */
		__('Either you or someone else at IP address <b>%1$s</b> requested instructions to regain access to the website <a href="%2$s"><b>%3$s</b></a>.', 'wordfence'), esc_html($IP), esc_attr(wfUtils::getSiteBaseURL()), esc_html($siteName)), array('a'=>array('href'=>array()), 'b'=>array())); ?>
<br><br>
<?php printf(
	/* translators: Localized date.  */
		__('Request was generated at: %s', 'wordfence'), wfUtils::localHumanDate()); ?>
<br><br>
<?php esc_html_e('If you did not request these instructions then you can safely ignore them.', 'wordfence'); ?><br>
<?php echo wp_kses(__('These instructions <b>will be valid for 30 minutes</b> from the time they were sent.', 'wordfence'), array('b'=>array())); ?>
<ul>
	<li>
		<a href="<?php echo $unlockHref; ?>&func=unlockMyIP"><?php esc_html_e('Click here to unlock your ability to sign-in and to access to the site.', 'wordfence'); ?></a> <?php esc_html_e('Do this if you simply need to regain access because you were accidentally locked out. If you received an "Insecure Password" message before getting locked out, you may also need to reset your password.', 'wordfence'); ?> <a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_USING_BREACH_PASSWORD); ?>"><?php esc_html_e('Learn More', 'wordfence'); ?></a>
	</li>
	<li>
	<a href="<?php echo $unlockHref; ?>&func=unlockAllIPs"><?php esc_html_e('Click here to unblock all IP addresses.', 'wordfence'); ?></a> <?php esc_html_e('Do this if you still can\'t regain access using the link above. It causes everyone who is blocked or locked out to be able to access your site again.', 'wordfence'); ?>
	</li>
	<li>
	<a href="<?php echo $unlockHref; ?>&func=disableRules"><?php esc_html_e('Click here to unlock all IP addresses and disable the Wordfence Firewall and Wordfence login security for all users', 'wordfence'); ?></a>. <?php esc_html_e('Do this if you keep getting locked out or blocked and can\'t access your site. You can re-enable login security and the firewall once you sign-in to the site by visiting the Wordfence Firewall menu, clicking and then turning on the firewall and login security options. If you use country blocking, you will also need to choose which countries to block.', 'wordfence'); ?>
	</li>
</ul>lib/menu_firewall_waf.php000064400000047733150755146450011543 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
$waf = wfWAF::getInstance();
$d = new wfDashboard(); unset($d->countriesNetwork);
$firewall = new wfFirewall();
$config = $waf->getStorageEngine();
$wafConfigURL = network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options#configureAutoPrepend');
$wafRemoveURL = network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options#removeAutoPrepend');
/** @var array $wafData */
?>

<div class="wf-row">
	<div class="wf-col-xs-12">
		<div class="wf-block wf-active">
			<div class="wf-block-content">
				<ul class="wf-block-list">
					<li>
						<?php
						echo wfView::create('waf/firewall-status', array(
							'firewall' => $firewall,
							'dashboard' => $d,
						))->render();
						?>
					</li>
					<li>
						<ul class="wf-block-list wf-block-list-horizontal wf-block-list-nowrap wf-waf-coverage">
							<li>
								<?php
								if (function_exists('network_admin_url') && is_multisite()) { $optionsURL = network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options'); }
								else { $optionsURL = admin_url('admin.php?page=WordfenceWAF&subpage=waf_options'); }
								echo wfView::create('common/status-detail', array(
									'id' => 'waf-coverage',
									'percentage' => $firewall->wafStatus(),
									'activeColor' => ($firewall->firewallMode() == wfFirewall::FIREWALL_MODE_LEARNING ? '#ececec' : null /* automatic */),
									'title' => __('Web Application Firewall', 'wordfence'),
									'subtitle' => ($firewall->firewallMode() == wfFirewall::FIREWALL_MODE_LEARNING ? __('Currently in Learning Mode', 'wordfence') : __('Stops Complex Attacks', 'wordfence')),
									'link' => $optionsURL,
									'linkLabel' => __('Manage WAF', 'wordfence'),
									'statusTitle' => __('Web Application Firewall Status', 'wordfence'),
									'statusList' => $firewall->wafStatusList(),
									'statusExtra' => ($firewall->firewallMode() == wfFirewall::FIREWALL_MODE_LEARNING ? wfView::create('waf/status-tooltip-learning-mode')->render() : ''),
									'helpLink' => __('https://www.wordfence.com/help/firewall/#firewall-status', 'wordfence'),
								))->render();
								?>
							</li>
							<li>
								<?php
								echo wfView::create('common/status-detail', array(
									'id' => 'waf-rules',
									'percentage' => $firewall->ruleStatus(),
									'activeColor' => ($firewall->firewallMode() == wfFirewall::FIREWALL_MODE_LEARNING ? '#ececec' : null /* automatic */),
									'title' => __('Firewall Rules: ', 'wordfence') . ($firewall->ruleMode() == wfFirewall::RULE_MODE_PREMIUM ? __('Premium', 'wordfence') : __('Community', 'wordfence')),
									'subtitle' => ($firewall->firewallMode() == wfFirewall::FIREWALL_MODE_LEARNING ? __('Currently in Learning Mode', 'wordfence') : ($firewall->ruleMode() == wfFirewall::RULE_MODE_PREMIUM ? __('Rules updated in real-time', 'wordfence') : __('Rule updates delayed by 30 days', 'wordfence'))),
									'link' => ($firewall->ruleMode() == wfFirewall::RULE_MODE_PREMIUM ? $optionsURL . '#waf-options-advanced' : 'https://www.wordfence.com/gnl1wafUpgrade/wordfence-signup/'),
									'linkLabel' => ($firewall->ruleMode() == wfFirewall::RULE_MODE_PREMIUM ? __('Manage Firewall Rules', 'wordfence') : __('Upgrade to Premium', 'wordfence')),
									'linkNewWindow' => ($firewall->ruleMode() != wfFirewall::RULE_MODE_PREMIUM),
									'statusTitle' => __('Firewall Rules Status', 'wordfence'),
									'statusList' => $firewall->wafStatusList('rules'),
									'statusExtra' => ($firewall->firewallMode() == wfFirewall::FIREWALL_MODE_LEARNING ? wfView::create('waf/status-tooltip-learning-mode')->render() : ''),
									'helpLink' => __('https://www.wordfence.com/help/firewall/#firewall-status', 'wordfence'),
								))->render();
								?>
							</li>
							<li>
								<?php
								echo wfView::create('common/status-detail', array(
									'id' => 'waf-blacklist',
									'percentage' => $firewall->blacklistStatus(),
									'title' => __('Real-Time IP Blocklist: ', 'wordfence') . ($firewall->blacklistMode() == wfFirewall::BLACKLIST_MODE_ENABLED ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
									'subtitle' => __('Blocks requests from known malicious IPs', 'wordfence'),
									'link' => (($firewall->ruleMode() == wfFirewall::RULE_MODE_PREMIUM) ? network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options') : 'https://www.wordfence.com/gnl1wafUpgrade/wordfence-signup/'),
									'linkLabel' => $firewall->firewallMode() == wfFirewall::FIREWALL_MODE_DISABLED ? null : ($firewall->ruleMode() == wfFirewall::RULE_MODE_PREMIUM ? ($firewall->blacklistMode() == wfFirewall::BLACKLIST_MODE_ENABLED ? __('Manage Real-Time IP Blocklist', 'wordfence') : ($firewall->isSubDirectoryInstallation() ? null : __('Enable', 'wordfence'))) : __('Upgrade to Premium', 'wordfence')),
									'linkNewWindow' => ($firewall->ruleMode() != wfFirewall::RULE_MODE_PREMIUM),
									'statusTitle' => __('Blocklist Status', 'wordfence'),
									'statusList' => $firewall->wafStatusList('blacklist'),
									'helpLink' => __('https://www.wordfence.com/help/firewall/#firewall-status', 'wordfence'),
								))->render();
								
								if ($firewall->ruleMode() == wfFirewall::RULE_MODE_PREMIUM && $firewall->blacklistMode() == wfFirewall::BLACKLIST_MODE_DISABLED):
								?>
								<script type="application/javascript">
									(function($) {
										$(function() {
											$('#waf-blacklist a').on('click', function(e) {
												e.preventDefault();
												e.stopPropagation();

												WFAD.setOption('disableWAFBlacklistBlocking', 0, function() {
													window.location.reload(true);
												});
											});
										});
									})(jQuery);
								</script>
								<?php endif; ?>
							</li>
							<li>
								<?php
								echo wfView::create('common/status-detail', array(
									'id' => 'waf-brute',
									'percentage' => $firewall->bruteForceStatus(),
									'title' => __('Brute Force Protection', 'wordfence') . ($firewall->bruteForceStatus() == 0 ? __(': Disabled', 'wordfence') : ''),
									'subtitle' => __('Stops Password Guessing Attacks', 'wordfence'),
									'link' => network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options#waf-options-bruteforce'),
									'linkLabel' => __('Manage Brute Force Protection', 'wordfence'),
									'statusTitle' => __('Brute Force Protection Status', 'wordfence'),
									'statusList' => $firewall->bruteForceStatusList(),
									'helpLink' => __('https://www.wordfence.com/help/firewall/#firewall-status', 'wordfence'),
								))->render();
								?>
							</li>
						</ul>
					</li>
				</ul>
			</div>
		</div>
	</div>
</div>
<div class="wf-row">
	<div class="wf-col-xs-12">
		<div class="wf-block wf-active">
			<div class="wf-block-content">
				<ul class="wf-block-list">
					<li>
						<ul class="wf-block-list wf-block-list-horizontal wf-waf-navigation">
							<li>
								<?php
								echo wfView::create('common/block-navigation-option', array(
									'id' => 'waf-option-rate-limiting',
									'img' => 'ratelimiting.svg',
									'title' => __('Rate Limiting', 'wordfence'),
									'subtitle' => __('Block crawlers that are using too many resources or stealing content', 'wordfence'),
									'link' => network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options#waf-options-ratelimiting'),
								))->render();
								?>
							</li>
							<li>
								<?php
								echo wfView::create('common/block-navigation-option', array(
									'id' => 'waf-option-blocking',
									'img' => 'blocking.svg',
									'title' => __('Blocking', 'wordfence'),
									'subtitle' => __('Block traffic by country, IP, IP range, user agent, referrer, or hostname', 'wordfence'),
									'link' => '#top#blocking',
								))->render();
								?>
							</li>
						</ul>
					</li>
					<li>
						<ul class="wf-block-list wf-block-list-horizontal wf-waf-navigation">
							<li>
								<?php
								echo wfView::create('common/block-navigation-option', array(
									'id' => 'waf-option-support',
									'img' => 'support.svg',
									'title' => __('Help', 'wordfence'),
									'subtitle' => __('Find the documentation and help you need', 'wordfence'),
									'link' => network_admin_url('admin.php?page=WordfenceSupport'),
								))->render();
								?>
							</li>
							<li>
								<?php
								echo wfView::create('common/block-navigation-option', array(
									'id' => 'waf-option-all-options',
									'img' => 'options.svg',
									'title' => __('All Firewall Options', 'wordfence'),
									'subtitle' => __('Manage global and advanced firewall options', 'wordfence'),
									'link' => network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options'),
								))->render();
								?>
							</li>
						</ul>
					</li>
				</ul>
			</div>
		</div>
	</div>
</div>
<div class="wf-row">
	<div class="wf-col-xs-12 wf-col-lg-6 wf-col-lg-half-padding-right">
		<!-- begin top ips blocked -->
		<?php include(dirname(__FILE__) . '/dashboard/widget_ips.php'); ?>
		<!-- end top ips blocked -->
		<!-- begin countries blocked -->
		<?php include(dirname(__FILE__) . '/dashboard/widget_countries.php'); ?>
		<!-- end countries blocked -->
	</div> <!-- end content block -->
	<div class="wf-col-xs-12 wf-col-lg-6 wf-col-lg-half-padding-left">
		<!-- begin firewall summary site -->
		<?php include(dirname(__FILE__) . '/dashboard/widget_localattacks.php'); ?>
		<!-- end firewall summary site -->
		<!-- begin total attacks blocked network -->
		<?php include(dirname(__FILE__) . '/dashboard/widget_networkattacks.php'); ?>
		<!-- end total attacks blocked network -->
		<!-- begin recent logins -->
		<?php include(dirname(__FILE__) . '/dashboard/widget_logins.php'); ?>
		<!-- end recent logins -->
	</div> <!-- end content block -->
</div> <!-- end row -->
<?php if (wfOnboardingController::willShowNewTour(wfOnboardingController::TOUR_FIREWALL)): ?>
	<script type="application/javascript">
		(function($) {
			$(function() {
				WFAD.setUpFirewallTour = function() {
					WFAD.tour1 = function () {
						WFAD.tour('wfWAFNewTour1', 'wf-section-firewall', 'top', 'left', null, WFAD.tour2);
					};
					WFAD.tour2 = function () {
						WFAD.tour('wfWAFNewTour2', 'waf-coverage', 'top', 'left', WFAD.tour1, WFAD.tour3);
					};
					WFAD.tour3 = function () {
						WFAD.tour('wfWAFNewTour3', 'waf-brute', 'right', 'right', WFAD.tour2, WFAD.tour4);
					};
					WFAD.tour4 = function () {
						WFAD.tour('wfWAFNewTour4', 'waf-option-all-options', 'right', 'right', WFAD.tour3, WFAD.tourComplete);
					};
					WFAD.tourComplete = function () {
						WFAD.tourFinish('<?php echo esc_attr(wfOnboardingController::TOUR_FIREWALL); ?>');
					};
				};

				WFAD.wafTourShown = false;
				<?php if (wfOnboardingController::shouldShowNewTour(wfOnboardingController::TOUR_FIREWALL)): ?>
				$(window).on('wfTabChange', function(e, tab) {
					if (tab == 'waf' && !WFAD.wafTourShown) {
						WFAD.wafTourShown = true;
						WFAD.setUpFirewallTour();
						if (!WFAD.isSmallScreen) { WFAD.tour1(); }
					}
				});
				
				if ($('#waf').hasClass('wf-active')) {
					WFAD.wafTourShown = true;
					WFAD.setUpFirewallTour();
					if (!WFAD.isSmallScreen) { WFAD.tour1(); }
				}
				<?php endif; ?>
			});
		})(jQuery);
	</script>

	<script type="text/x-jquery-template" id="wfWAFNewTour1">
		<div>
			<h3><?php esc_html_e('The Wordfence firewall protects your sites from attackers', 'wordfence'); ?></h3>
			<p><?php esc_html_e('This is where you can monitor the work Wordfence is doing to protect your site and also where you can manage the options to optimize the firewall\'s configuration.', 'wordfence'); ?></p>
			<div class="wf-pointer-footer">
				<ul class="wf-tour-pagination">
					<li class="wf-active">&bullet;</li>
					<li>&bullet;</li>
					<li>&bullet;</li>
					<li>&bullet;</li>
				</ul>
				<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Next', 'wordfence'); ?></a></div>
			</div>
			<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
		</div>
	</script>
	<script type="text/x-jquery-template" id="wfWAFNewTour2">
		<div>
			<h3><?php esc_html_e('Web Application Firewall (WAF)', 'wordfence'); ?></h3>
			<p><?php esc_html_e('The Wordfence Web Application Firewall blocks known and emerging attacks using firewall rules. When you first install the WAF, it will be in learning mode. This allows Wordfence to learn about your site so that we can understand how to protect it and how to allow normal visitors through the firewall. We recommend you let Wordfence learn for a week before you enable the firewall.', 'wordfence'); ?></p>
			<div class="wf-pointer-footer">
				<ul class="wf-tour-pagination">
					<li>&bullet;</li>
					<li class="wf-active">&bullet;</li>
					<li>&bullet;</li>
					<li>&bullet;</li>
				</ul>
				<div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default" role="button"><?php esc_html_e('Previous', 'wordfence'); ?></a></div>
				<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Next', 'wordfence'); ?></a></div>
			</div>
			<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
		</div>
	</script>
	<script type="text/x-jquery-template" id="wfWAFNewTour3">
		<div>
			<h3><?php esc_html_e('Brute Force Protection', 'wordfence'); ?></h3>
			<p><?php esc_html_e('Wordfence protects your site from password-guessing attacks by locking out attackers and helping you avoid weak passwords.', 'wordfence'); ?></p>
			<div class="wf-pointer-footer">
				<ul class="wf-tour-pagination">
					<li>&bullet;</li>
					<li>&bullet;</li>
					<li class="wf-active">&bullet;</li>
					<li>&bullet;</li>
				</ul>
				<div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default" role="button"><?php esc_html_e('Previous', 'wordfence'); ?></a></div>
				<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Next', 'wordfence'); ?></a></div>
			</div>
			<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
		</div>
	</script>
	<script type="text/x-jquery-template" id="wfWAFNewTour4">
		<div>
			<h3><?php esc_html_e('Firewall Options', 'wordfence'); ?></h3>
			<p class="wf-center"><svg viewBox="0 0 100.11 100.11" class="wf-icon"><path d="M99.59,41.42a2.06,2.06,0,0,0-1.37-.82L86.3,38.78a39.34,39.34,0,0,0-2.67-6.39q1.17-1.63,3.52-4.6t3.32-4.33A2.52,2.52,0,0,0,91,22a2.1,2.1,0,0,0-.46-1.43Q88.18,17.2,79.78,9.45a2.52,2.52,0,0,0-1.63-.65,2.12,2.12,0,0,0-1.57.59l-9.25,7a40.09,40.09,0,0,0-5.87-2.41L59.64,2a1.92,1.92,0,0,0-.75-1.4A2.46,2.46,0,0,0,57.29,0H42.82a2.19,2.19,0,0,0-2.34,1.82,106,106,0,0,0-1.89,12.12,37.62,37.62,0,0,0-5.93,2.48l-9-7A2.78,2.78,0,0,0,22,8.8q-1.44,0-6.16,4.66a64.88,64.88,0,0,0-6.42,7A2.75,2.75,0,0,0,8.8,22a2.44,2.44,0,0,0,.65,1.56q4.37,5.28,7,9a32.38,32.38,0,0,0-2.54,6L1.76,40.34a2,2,0,0,0-1.24.85A2.5,2.5,0,0,0,0,42.69V57.16a2.44,2.44,0,0,0,.52,1.53,2,2,0,0,0,1.37.82l11.93,1.76a31.91,31.91,0,0,0,2.67,6.45Q15.31,69.35,13,72.31T9.65,76.65a2.54,2.54,0,0,0-.07,3q2.54,3.52,10.75,11a2.25,2.25,0,0,0,1.63.71,2.35,2.35,0,0,0,1.63-.59l9.19-7a40.54,40.54,0,0,0,5.87,2.41l1.82,12a1.92,1.92,0,0,0,.75,1.4,2.45,2.45,0,0,0,1.6.55H57.29a2.2,2.2,0,0,0,2.35-1.82,107.41,107.41,0,0,0,1.89-12.12,37.19,37.19,0,0,0,5.93-2.48l9,7a3.18,3.18,0,0,0,1.69.59q1.43,0,6.13-4.62a65.86,65.86,0,0,0,6.45-7,2.16,2.16,0,0,0,.59-1.5,2.51,2.51,0,0,0-.65-1.63q-4.69-5.74-7-9a41.57,41.57,0,0,0,2.54-5.93l12.06-1.82a2,2,0,0,0,1.3-.85,2.52,2.52,0,0,0,.52-1.5V43a2.46,2.46,0,0,0-.52-1.53ZM61.85,61.86a16.08,16.08,0,0,1-11.8,4.89A16.69,16.69,0,0,1,33.37,50.06,16.69,16.69,0,0,1,50.06,33.37,16.69,16.69,0,0,1,66.74,50.06a16.08,16.08,0,0,1-4.89,11.8Zm0,0"></path></svg></p>
			<p><?php esc_html_e('Set up the way you want the firewall to protect your site including the web application firewall, brute force protection, rate limiting, and blocking.', 'wordfence'); ?></p>
			<div class="wf-pointer-footer">
				<ul class="wf-tour-pagination">
					<li>&bullet;</li>
					<li>&bullet;</li>
					<li>&bullet;</li>
					<li class="wf-active">&bullet;</li>
				</ul>
				<div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default" role="button"><?php esc_html_e('Previous', 'wordfence'); ?></a></div>
				<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Got it', 'wordfence'); ?></a></div>
			</div>
			<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
		</div>
	</script>
<?php endif; ?>

<?php if (wfOnboardingController::willShowUpgradeTour(wfOnboardingController::TOUR_FIREWALL)): ?>
	<script type="application/javascript">
		(function($) {
			$(function() {
				WFAD.setUpFirewallTour = function() {
					WFAD.tour1 = function() {
						WFAD.tour('wfWAFUpgradeTour1', 'waf-option-all-options', 'right', 'right', null, WFAD.tourComplete);
					};
					WFAD.tourComplete = function() { WFAD.tourFinish('<?php echo esc_attr(wfOnboardingController::TOUR_FIREWALL); ?>'); };
				};

				WFAD.wafTourShown = false;
				<?php if (wfOnboardingController::shouldShowUpgradeTour(wfOnboardingController::TOUR_FIREWALL)): ?>
				$(window).on('wfTabChange', function(e, tab) {
					if (tab == 'waf' && !WFAD.wafTourShown) {
						WFAD.wafTourShown = true;
						WFAD.setUpFirewallTour();
						if (!WFAD.isSmallScreen) { WFAD.tour1(); }
					}
				});

				if ($('#waf').hasClass('wf-active')) {
					WFAD.wafTourShown = true;
					WFAD.setUpFirewallTour();
					if (!WFAD.isSmallScreen) { WFAD.tour1(); }
				}
				<?php endif; ?>
			});
		})(jQuery);
	</script>

	<script type="text/x-jquery-template" id="wfWAFUpgradeTour1">
		<div>
			<h3><?php esc_html_e('Firewall Options', 'wordfence'); ?></h3>
			<p class="wf-center"><svg viewBox="0 0 100.11 100.11" class="wf-icon"><path d="M99.59,41.42a2.06,2.06,0,0,0-1.37-.82L86.3,38.78a39.34,39.34,0,0,0-2.67-6.39q1.17-1.63,3.52-4.6t3.32-4.33A2.52,2.52,0,0,0,91,22a2.1,2.1,0,0,0-.46-1.43Q88.18,17.2,79.78,9.45a2.52,2.52,0,0,0-1.63-.65,2.12,2.12,0,0,0-1.57.59l-9.25,7a40.09,40.09,0,0,0-5.87-2.41L59.64,2a1.92,1.92,0,0,0-.75-1.4A2.46,2.46,0,0,0,57.29,0H42.82a2.19,2.19,0,0,0-2.34,1.82,106,106,0,0,0-1.89,12.12,37.62,37.62,0,0,0-5.93,2.48l-9-7A2.78,2.78,0,0,0,22,8.8q-1.44,0-6.16,4.66a64.88,64.88,0,0,0-6.42,7A2.75,2.75,0,0,0,8.8,22a2.44,2.44,0,0,0,.65,1.56q4.37,5.28,7,9a32.38,32.38,0,0,0-2.54,6L1.76,40.34a2,2,0,0,0-1.24.85A2.5,2.5,0,0,0,0,42.69V57.16a2.44,2.44,0,0,0,.52,1.53,2,2,0,0,0,1.37.82l11.93,1.76a31.91,31.91,0,0,0,2.67,6.45Q15.31,69.35,13,72.31T9.65,76.65a2.54,2.54,0,0,0-.07,3q2.54,3.52,10.75,11a2.25,2.25,0,0,0,1.63.71,2.35,2.35,0,0,0,1.63-.59l9.19-7a40.54,40.54,0,0,0,5.87,2.41l1.82,12a1.92,1.92,0,0,0,.75,1.4,2.45,2.45,0,0,0,1.6.55H57.29a2.2,2.2,0,0,0,2.35-1.82,107.41,107.41,0,0,0,1.89-12.12,37.19,37.19,0,0,0,5.93-2.48l9,7a3.18,3.18,0,0,0,1.69.59q1.43,0,6.13-4.62a65.86,65.86,0,0,0,6.45-7,2.16,2.16,0,0,0,.59-1.5,2.51,2.51,0,0,0-.65-1.63q-4.69-5.74-7-9a41.57,41.57,0,0,0,2.54-5.93l12.06-1.82a2,2,0,0,0,1.3-.85,2.52,2.52,0,0,0,.52-1.5V43a2.46,2.46,0,0,0-.52-1.53ZM61.85,61.86a16.08,16.08,0,0,1-11.8,4.89A16.69,16.69,0,0,1,33.37,50.06,16.69,16.69,0,0,1,50.06,33.37,16.69,16.69,0,0,1,66.74,50.06a16.08,16.08,0,0,1-4.89,11.8Zm0,0"></path></svg></p>
			<p><?php esc_html_e('All of the Firewall settings are now located here. This includes configuration options for the web application firewall, brute force protection, rate limiting, allowlisted URLs, and blocking.', 'wordfence'); ?></p>
			<div class="wf-pointer-footer">
				<ul class="wf-tour-pagination">
					<li class="wf-active">&bullet;</li>
				</ul>
				<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Got it', 'wordfence'); ?></a></div>
			</div>
			<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
		</div>
	</script>
<?php endif; ?>lib/wfCrypt.php000064400000010062150755146450007474 0ustar00<?php
class wfCrypt {
	private static function getPubKey(){
		#Command to generate our keypair was: openssl req -x509 -newkey rsa:2048 -keyout mycert.key -out mycert.pem -nodes -subj "/C=US/ST=Washington/L=Seattle/O=Wordfence/OU=IT/CN=wordfence.com" -days 7300
		#This is a 2048 bit key using SHA256 with RSA. 
		$key = <<<ENDKEY
-----BEGIN CERTIFICATE-----
MIIDrTCCApWgAwIBAgIJAIg6Va5tcvwyMA0GCSqGSIb3DQEBCwUAMG0xCzAJBgNV
BAYTAlVTMRMwEQYDVQQIDApXYXNoaW5ndG9uMRAwDgYDVQQHDAdTZWF0dGxlMRIw
EAYDVQQKDAlXb3JkZmVuY2UxCzAJBgNVBAsMAklUMRYwFAYDVQQDDA13b3JkZmVu
Y2UuY29tMB4XDTE1MDMxMjA1NTIzMFoXDTM1MDMwNzA1NTIzMFowbTELMAkGA1UE
BhMCVVMxEzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxEjAQ
BgNVBAoMCVdvcmRmZW5jZTELMAkGA1UECwwCSVQxFjAUBgNVBAMMDXdvcmRmZW5j
ZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC/9Ogj1PIQsuZu
dTUNWlG0zaDNWpeY1ZiB/6oBS/YXkGFuG8R/nZ/kYsRmBm6yRp/3jC/HiPjg+7Zc
bA/CKoHdUlNjFZ+10DmS369wVX+c0oV9f720b/a0xN0qeKxJTiN2NsAl5szYv2CQ
Bvzjeb5VfKgrfV9tgYr38swudxvexponYaK0OlDL3u/Xca4SLRKmB+ZYCcZJttoG
SNFsQMlLHWWmM0FJH9qZ3x8MtRM5KsNEWO+/op511Rr36ZnLJdzUnETsaxHKwuCv
0+D9b0mwk8K/c67l63v4+zywXNkdYIslgo7Aeeyb6t0lyyfruXutEyMinmApACT2
sDMAbYk7AgMBAAGjUDBOMB0GA1UdDgQWBBTstr/AoPQyLLIt4/peFSjj0FFXHzAf
BgNVHSMEGDAWgBTstr/AoPQyLLIt4/peFSjj0FFXHzAMBgNVHRMEBTADAQH/MA0G
CSqGSIb3DQEBCwUAA4IBAQA9HsK+XdZh2MGP2SDdggA+MxkNBCCFBtcsmQrpiLUW
67xt59FPRMwTgSA9Lt8uqcWaXoHXiaTnXTRtN/BKZR0F71HQfiV6zy511blIRlk2
nV+vYzwLUENCZ31hQEZsY+uYqBSTiHecUKohn8A9pOOEpis2YEn2zVo4cobdyGa1
zCnaAN99KT8s9lOO0UW0J52qZhvv4y8YhELtrXKBsFatGEsVIM0NFI+ZDsNpMnSQ
cmUtLiIJtk5hxNbOaIz2vzbOkbzJ3ehzODJ1X5rya7X0v2akLLhwP9jqz5ua6ttP
duLv4Q6v3LY6pwDoyKQMDqNNxVjaFmx5HyFWRPofpu/T
-----END CERTIFICATE-----
ENDKEY;
		return $key;
	}
	public static function makeSymHexKey($length){
		return bin2hex(wfWAFUtils::random_bytes($length / 2));
	}
	public static function pubCrypt($symKey){ //encrypts a symmetric key and returns it base64
		openssl_public_encrypt($symKey, $encSymKey, self::getPubKey(), OPENSSL_PKCS1_OAEP_PADDING); //The default OPENSSL_PKCS1_PADDING is deprecated.
		return base64_encode($encSymKey);
	}
	
	/**
	 * Returns the payload symmetrically encrypted and signed by the noc1 public key. The payload is converted to JSON, 
	 * encrypted using a randomly-generated symmetric key, and then hashed and signed with the noc1 public key.
	 * 
	 * This is NOT cryptographically secure for verifying that this server sent or was aware of the context of the 
	 * message, rather it is intended to be used in tandem with verification via another method (e.g., a call that 
	 * validates due to the site URL matching the license key or noc1 does a call itself to the server to retrieve the 
	 * encrypted payload). It is solely a means to provide data to noc1 that only it can read.
	 * 
	 * @param array $payload
	 * @return array The encrypted and signed payload in the form array('message' => <encrypted message in hex>, 'signature' => <signature in hex>).
	 */
	public static function noc1_encrypt($payload) {
		$payloadJSON = json_encode($payload);
		
		$keyData = file_get_contents(dirname(__FILE__) . '/noc1.key');
		$key = @openssl_get_publickey($keyData);
		if ($key !== false) {
			$symmetricKey = wfWAFUtils::random_bytes(32);
			$iv = wfWAFUtils::random_bytes(16);
			$encrypted = @openssl_encrypt($payloadJSON, 'aes-256-cbc', $symmetricKey, OPENSSL_RAW_DATA, $iv);
			if ($encrypted !== false) {
				$success = openssl_public_encrypt($symmetricKey, $symmetricKeyEncrypted, $key, OPENSSL_PKCS1_OAEP_PADDING);
				if ($success) {
					$message = $iv . $symmetricKeyEncrypted . $encrypted;
					$signatureRaw = hash('sha256', $message, true);
					$success = openssl_public_encrypt($signatureRaw, $signature, $key, OPENSSL_PKCS1_OAEP_PADDING);
					if ($success) {
						$package = array('message' => bin2hex($message), 'signature' => bin2hex($signature));
						return $package;
					}
				}
			}
		}
		return array();
	}
	
	/**
	 * Returns a SHA256 HMAC for $payload using the local long key.
	 * 
	 * @param $payload
	 * @return false|string
	 */
	public static function local_sign($payload) {
		return hash_hmac('sha256', $payload, wfConfig::get('longEncKey'));
	}
}
lib/menu_install.php000064400000003347150755146450010540 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
$errorMessage = null;
if (!$shouldShowOnboarding) {
	$errorMessage = __('Wordfence is already installed on this site. If you need to replace the current license, you may do so by visiting the "All Options" page of the Wordfence menu.', 'wordfence');
}
elseif ($invalidLink) {
	if ($payloadException instanceof wfWebsiteEphemeralPayloadRateLimitedException) {
		$errorMessage = __('Too many installation requests have been made from your IP address. Please try again later.', 'wordfence');
	}
	elseif ($payloadException instanceof wfWebsiteEphemeralPayloadExpiredException) {
		$errorMessage = __('The link you used to access this page has expired, has already been used, or is otherwise invalid.', 'wordfence');
	}
	else {
		$errorMessage = __('An error occurred while retrieving your license information from the Wordfence servers. Please ensure that your server can reach www.wordfence.com on port 443.', 'wordfence');
	}
}
?>
<div class="wrap wordfence" id="wf-install">
	<div class="wf-container-fluid">
		<div class="wf-row">
			<div class="wf-col-xs-12">
				<div class="wp-header-end"></div>
				<?php
				echo wfView::create('common/section-title', array(
					'title' => __('Install Wordfence', 'wordfence'),
					'showIcon' => true,
				))->render();
				?>
			</div>
		</div>
		<div class="wf-row">
			<div class="wf-col-xs-12">
				<?php if ($errorMessage): ?>
					<p class="wf-onboarding-error"><?php echo esc_html($errorMessage) ?></p>
				<?php endif ?>
				<?php if ($shouldShowOnboarding): ?>
					<?php echo wfView::create('onboarding/registration-prompt', array('attempt' => 1, 'existing' => true, 'email' => $email, 'license' => $license)) ?>
				<?php endif ?>
			</div>
		</div>
	</div>
</div>lib/wfBulkCountries.php000064400000023422150755146450011170 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }

$wfBulkCountries = array(
"AD" => __("Andorra", 'wordfence'),
"AE" => __("United Arab Emirates", 'wordfence'),
"AF" => __("Afghanistan", 'wordfence'),
"AG" => __("Antigua and Barbuda", 'wordfence'),
"AI" => __("Anguilla", 'wordfence'),
"AL" => __("Albania", 'wordfence'),
"AM" => __("Armenia", 'wordfence'),
"AO" => __("Angola", 'wordfence'),
"AQ" => __("Antarctica", 'wordfence'),
"AR" => __("Argentina", 'wordfence'),
"AS" => __("American Samoa", 'wordfence'),
"AT" => __("Austria", 'wordfence'),
"AU" => __("Australia", 'wordfence'),
"AW" => __("Aruba", 'wordfence'),
"AX" => __("Aland Islands", 'wordfence'),
"AZ" => __("Azerbaijan", 'wordfence'),
"BA" => __("Bosnia and Herzegovina", 'wordfence'),
"BB" => __("Barbados", 'wordfence'),
"BD" => __("Bangladesh", 'wordfence'),
"BE" => __("Belgium", 'wordfence'),
"BF" => __("Burkina Faso", 'wordfence'),
"BG" => __("Bulgaria", 'wordfence'),
"BH" => __("Bahrain", 'wordfence'),
"BI" => __("Burundi", 'wordfence'),
"BJ" => __("Benin", 'wordfence'),
"BL" => __("Saint Bartelemey", 'wordfence'),
"BM" => __("Bermuda", 'wordfence'),
"BN" => __("Brunei Darussalam", 'wordfence'),
"BO" => __("Bolivia", 'wordfence'),
"BQ" => __("Bonaire, Saint Eustatius and Saba", 'wordfence'),
"BR" => __("Brazil", 'wordfence'),
"BS" => __("Bahamas", 'wordfence'),
"BT" => __("Bhutan", 'wordfence'),
"BV" => __("Bouvet Island", 'wordfence'),
"BW" => __("Botswana", 'wordfence'),
"BY" => __("Belarus", 'wordfence'),
"BZ" => __("Belize", 'wordfence'),
"CA" => __("Canada", 'wordfence'),
"CC" => __("Cocos (Keeling) Islands", 'wordfence'),
"CD" => __("Congo, The Democratic Republic of the", 'wordfence'),
"CF" => __("Central African Republic", 'wordfence'),
"CG" => __("Congo", 'wordfence'),
"CH" => __("Switzerland", 'wordfence'),
"CI" => __("Cote dIvoire", 'wordfence'),
"CK" => __("Cook Islands", 'wordfence'),
"CL" => __("Chile", 'wordfence'),
"CM" => __("Cameroon", 'wordfence'),
"CN" => __("China", 'wordfence'),
"CO" => __("Colombia", 'wordfence'),
"CR" => __("Costa Rica", 'wordfence'),
"CU" => __("Cuba", 'wordfence'),
"CV" => __("Cape Verde", 'wordfence'),
"CW" => __("Curacao", 'wordfence'),
"CX" => __("Christmas Island", 'wordfence'),
"CY" => __("Cyprus", 'wordfence'),
"CZ" => __("Czech Republic", 'wordfence'),
"DE" => __("Germany", 'wordfence'),
"DJ" => __("Djibouti", 'wordfence'),
"DK" => __("Denmark", 'wordfence'),
"DM" => __("Dominica", 'wordfence'),
"DO" => __("Dominican Republic", 'wordfence'),
"DZ" => __("Algeria", 'wordfence'),
"EC" => __("Ecuador", 'wordfence'),
"EE" => __("Estonia", 'wordfence'),
"EG" => __("Egypt", 'wordfence'),
"EH" => __("Western Sahara", 'wordfence'),
"ER" => __("Eritrea", 'wordfence'),
"ES" => __("Spain", 'wordfence'),
"ET" => __("Ethiopia", 'wordfence'),
"EU" => __("Europe", 'wordfence'),
"FI" => __("Finland", 'wordfence'),
"FJ" => __("Fiji", 'wordfence'),
"FK" => __("Falkland Islands (Malvinas)", 'wordfence'),
"FM" => __("Micronesia, Federated States of", 'wordfence'),
"FO" => __("Faroe Islands", 'wordfence'),
"FR" => __("France", 'wordfence'),
"GA" => __("Gabon", 'wordfence'),
"GB" => __("United Kingdom", 'wordfence'),
"GD" => __("Grenada", 'wordfence'),
"GE" => __("Georgia", 'wordfence'),
"GF" => __("French Guiana", 'wordfence'),
"GG" => __("Guernsey", 'wordfence'),
"GH" => __("Ghana", 'wordfence'),
"GI" => __("Gibraltar", 'wordfence'),
"GL" => __("Greenland", 'wordfence'),
"GM" => __("Gambia", 'wordfence'),
"GN" => __("Guinea", 'wordfence'),
"GP" => __("Guadeloupe", 'wordfence'),
"GQ" => __("Equatorial Guinea", 'wordfence'),
"GR" => __("Greece", 'wordfence'),
"GS" => __("South Georgia and the South Sandwich Islands", 'wordfence'),
"GT" => __("Guatemala", 'wordfence'),
"GU" => __("Guam", 'wordfence'),
"GW" => __("Guinea-Bissau", 'wordfence'),
"GY" => __("Guyana", 'wordfence'),
"HK" => __("Hong Kong", 'wordfence'),
"HM" => __("Heard Island and McDonald Islands", 'wordfence'),
"HN" => __("Honduras", 'wordfence'),
"HR" => __("Croatia", 'wordfence'),
"HT" => __("Haiti", 'wordfence'),
"HU" => __("Hungary", 'wordfence'),
"ID" => __("Indonesia", 'wordfence'),
"IE" => __("Ireland", 'wordfence'),
"IL" => __("Israel", 'wordfence'),
"IM" => __("Isle of Man", 'wordfence'),
"IN" => __("India", 'wordfence'),
"IO" => __("British Indian Ocean Territory", 'wordfence'),
"IQ" => __("Iraq", 'wordfence'),
"IR" => __("Iran, Islamic Republic of", 'wordfence'),
"IS" => __("Iceland", 'wordfence'),
"IT" => __("Italy", 'wordfence'),
"JE" => __("Jersey", 'wordfence'),
"JM" => __("Jamaica", 'wordfence'),
"JO" => __("Jordan", 'wordfence'),
"JP" => __("Japan", 'wordfence'),
"KE" => __("Kenya", 'wordfence'),
"KG" => __("Kyrgyzstan", 'wordfence'),
"KH" => __("Cambodia", 'wordfence'),
"KI" => __("Kiribati", 'wordfence'),
"KM" => __("Comoros", 'wordfence'),
"KN" => __("Saint Kitts and Nevis", 'wordfence'),
"KP" => __("North Korea", 'wordfence'),
"KR" => __("South Korea", 'wordfence'),
"KW" => __("Kuwait", 'wordfence'),
"KY" => __("Cayman Islands", 'wordfence'),
"KZ" => __("Kazakhstan", 'wordfence'),
"LA" => __("Lao Peoples Democratic Republic", 'wordfence'),
"LB" => __("Lebanon", 'wordfence'),
"LC" => __("Saint Lucia", 'wordfence'),
"LI" => __("Liechtenstein", 'wordfence'),
"LK" => __("Sri Lanka", 'wordfence'),
"LR" => __("Liberia", 'wordfence'),
"LS" => __("Lesotho", 'wordfence'),
"LT" => __("Lithuania", 'wordfence'),
"LU" => __("Luxembourg", 'wordfence'),
"LV" => __("Latvia", 'wordfence'),
"LY" => __("Libyan Arab Jamahiriya", 'wordfence'),
"MA" => __("Morocco", 'wordfence'),
"MC" => __("Monaco", 'wordfence'),
"MD" => __("Moldova, Republic of", 'wordfence'),
"ME" => __("Montenegro", 'wordfence'),
"MF" => __("Saint Martin", 'wordfence'),
"MG" => __("Madagascar", 'wordfence'),
"MH" => __("Marshall Islands", 'wordfence'),
"MK" => __("North Macedonia, Republic of", 'wordfence'),
"ML" => __("Mali", 'wordfence'),
"MM" => __("Myanmar", 'wordfence'),
"MN" => __("Mongolia", 'wordfence'),
"MO" => __("Macao", 'wordfence'),
"MP" => __("Northern Mariana Islands", 'wordfence'),
"MQ" => __("Martinique", 'wordfence'),
"MR" => __("Mauritania", 'wordfence'),
"MS" => __("Montserrat", 'wordfence'),
"MT" => __("Malta", 'wordfence'),
"MU" => __("Mauritius", 'wordfence'),
"MV" => __("Maldives", 'wordfence'),
"MW" => __("Malawi", 'wordfence'),
"MX" => __("Mexico", 'wordfence'),
"MY" => __("Malaysia", 'wordfence'),
"MZ" => __("Mozambique", 'wordfence'),
"NA" => __("Namibia", 'wordfence'),
"NC" => __("New Caledonia", 'wordfence'),
"NE" => __("Niger", 'wordfence'),
"NF" => __("Norfolk Island", 'wordfence'),
"NG" => __("Nigeria", 'wordfence'),
"NI" => __("Nicaragua", 'wordfence'),
"NL" => __("Netherlands", 'wordfence'),
"NO" => __("Norway", 'wordfence'),
"NP" => __("Nepal", 'wordfence'),
"NR" => __("Nauru", 'wordfence'),
"NU" => __("Niue", 'wordfence'),
"NZ" => __("New Zealand", 'wordfence'),
"OM" => __("Oman", 'wordfence'),
"PA" => __("Panama", 'wordfence'),
"PE" => __("Peru", 'wordfence'),
"PF" => __("French Polynesia", 'wordfence'),
"PG" => __("Papua New Guinea", 'wordfence'),
"PH" => __("Philippines", 'wordfence'),
"PK" => __("Pakistan", 'wordfence'),
"PL" => __("Poland", 'wordfence'),
"PM" => __("Saint Pierre and Miquelon", 'wordfence'),
"PN" => __("Pitcairn", 'wordfence'),
"PR" => __("Puerto Rico", 'wordfence'),
"PS" => __("Palestinian Territory", 'wordfence'),
"PT" => __("Portugal", 'wordfence'),
"PW" => __("Palau", 'wordfence'),
"PY" => __("Paraguay", 'wordfence'),
"QA" => __("Qatar", 'wordfence'),
"RE" => __("Reunion", 'wordfence'),
"RO" => __("Romania", 'wordfence'),
"RS" => __("Serbia", 'wordfence'),
"RU" => __("Russian Federation", 'wordfence'),
"RW" => __("Rwanda", 'wordfence'),
"SA" => __("Saudi Arabia", 'wordfence'),
"SB" => __("Solomon Islands", 'wordfence'),
"SC" => __("Seychelles", 'wordfence'),
"SD" => __("Sudan", 'wordfence'),
"SE" => __("Sweden", 'wordfence'),
"SG" => __("Singapore", 'wordfence'),
"SH" => __("Saint Helena", 'wordfence'),
"SI" => __("Slovenia", 'wordfence'),
"SJ" => __("Svalbard and Jan Mayen", 'wordfence'),
"SK" => __("Slovakia", 'wordfence'),
"SL" => __("Sierra Leone", 'wordfence'),
"SM" => __("San Marino", 'wordfence'),
"SN" => __("Senegal", 'wordfence'),
"SO" => __("Somalia", 'wordfence'),
"SR" => __("Suriname", 'wordfence'),
"ST" => __("Sao Tome and Principe", 'wordfence'),
"SV" => __("El Salvador", 'wordfence'),
"SX" => __("Sint Maarten", 'wordfence'),
"SY" => __("Syrian Arab Republic", 'wordfence'),
"SZ" => __("Swaziland", 'wordfence'),
"TC" => __("Turks and Caicos Islands", 'wordfence'),
"TD" => __("Chad", 'wordfence'),
"TF" => __("French Southern Territories", 'wordfence'),
"TG" => __("Togo", 'wordfence'),
"TH" => __("Thailand", 'wordfence'),
"TJ" => __("Tajikistan", 'wordfence'),
"TK" => __("Tokelau", 'wordfence'),
"TL" => __("Timor-Leste", 'wordfence'),
"TM" => __("Turkmenistan", 'wordfence'),
"TN" => __("Tunisia", 'wordfence'),
"TO" => __("Tonga", 'wordfence'),
"TR" => __("Turkey", 'wordfence'),
"TT" => __("Trinidad and Tobago", 'wordfence'),
"TV" => __("Tuvalu", 'wordfence'),
"TW" => __("Taiwan", 'wordfence'),
"TZ" => __("Tanzania, United Republic of", 'wordfence'),
"UA" => __("Ukraine", 'wordfence'),
"UG" => __("Uganda", 'wordfence'),
"UM" => __("United States Minor Outlying Islands", 'wordfence'),
"US" => __("United States", 'wordfence'),
"UY" => __("Uruguay", 'wordfence'),
"UZ" => __("Uzbekistan", 'wordfence'),
"VA" => __("Holy See (Vatican City State)", 'wordfence'),
"VC" => __("Saint Vincent and the Grenadines", 'wordfence'),
"VE" => __("Venezuela", 'wordfence'),
"VG" => __("Virgin Islands, British", 'wordfence'),
"VI" => __("Virgin Islands, U.S.", 'wordfence'),
"VN" => __("Vietnam", 'wordfence'),
"VU" => __("Vanuatu", 'wordfence'),
"WF" => __("Wallis and Futuna", 'wordfence'),
"WS" => __("Samoa", 'wordfence'),
"XK" => __("Kosovo", 'wordfence'),
"YE" => __("Yemen", 'wordfence'),
"YT" => __("Mayotte", 'wordfence'),
"ZA" => __("South Africa", 'wordfence'),
"ZM" => __("Zambia", 'wordfence'),
"ZW" => __("Zimbabwe", 'wordfence'),
);
lib/wfRESTAPI.php000064400000000571150755146450007506 0ustar00<?php
if (defined('ABSPATH')) {
class wfWP_REST_Users_Controller extends WP_REST_Users_Controller
{
	public static function wfGetURLBase() {
		$controller = new wfWP_REST_Users_Controller();
		return rtrim($controller->namespace . '/' . $controller->rest_base, '/');
	}
	
	public function _wfGetURLBase() {
		return rtrim($this->namespace, '/' . $this->rest_base, '/');
	}
}
}
lib/wfUpdateCheck.php000064400000066360150755146450010567 0ustar00<?php

class wfUpdateCheck {
	const VULN_SEVERITY_CRITICAL = 90;
	const VULN_SEVERITY_HIGH = 70;
	const VULN_SEVERITY_MEDIUM = 40;
	const VULN_SEVERITY_LOW = 1;
	const VULN_SEVERITY_NONE = 0;
	
	const LAST_UPDATE_CHECK_ERROR_KEY = 'lastUpdateCheckError';
	const LAST_UPDATE_CHECK_ERROR_SLUG_KEY = 'lastUpdateCheckErrorSlug';

	private $needs_core_update = false;
	private $core_update_patch_available = false;
	private $core_earlier_branch = false;
	private $core_update_version = 0;
	private $core_update_patch_version = 0;
	private $plugin_updates = array();
	private $all_plugins = array();
	private $plugin_slugs = array();
	private $theme_updates = array();
	private $api = null;
	
	/**
	 * This hook exists because some plugins override their own update check and can return invalid 
	 * responses (e.g., null) due to logic errors or their update check server being unreachable. This
	 * can interfere with our scan running the outdated plugins check. When scanning, we adjust the 
	 * response in those cases to be `false`, which causes WP to fall back to the plugin repo data.
	 */
	public static function installPluginAPIFixer() {
		add_filter('plugins_api', 'wfUpdateCheck::_pluginAPIFixer', 999, 3);
	}
	
	public static function _pluginAPIFixer($result, $action, $args) {
		if ($result === false || is_object($result) || is_array($result)) {
			return $result;
		}
		
		if (!wfScanEngine::isScanRunning(true)) { //Skip fixing if it's not the call the scanner made
			return $result;
		}
		
		$slug = null;
		if (is_object($args) && isset($args->slug)) {
			$slug = $args->slug;
		}
		else if (is_array($args) && isset($args['slug'])) {
			$slug = $args['slug'];
		}
		wordfence::status(2, 'info', sprintf(/* translators: 1. Plugin slug. */ __('Outdated plugin scan adjusted invalid return value in plugins_api filter for %s', 'wordfence'), $slug));
		return false;
	}

	public static function syncAllVersionInfo() {
		// Load the core/plugin/theme versions into the WAF configuration.
		wfConfig::set('wordpressVersion', wfUtils::getWPVersion());
		wfWAFConfig::set('wordpressVersion', wfUtils::getWPVersion(), wfWAF::getInstance(), 'synced');

		if (!function_exists('get_plugins')) {
			require_once(ABSPATH . '/wp-admin/includes/plugin.php');
		}

		$pluginVersions = array();
		foreach (get_plugins() as $pluginFile => $pluginData) {
			$slug = plugin_basename($pluginFile);
			if (preg_match('/^([^\/]+)\//', $pluginFile, $matches)) {
				$slug = $matches[1];
			} else if (preg_match('/^([^\/.]+)\.php$/', $pluginFile, $matches)) {
				$slug = $matches[1];
			}
			$pluginVersions[$slug] = isset($pluginData['Version']) ? $pluginData['Version'] : null;
		}

		wfConfig::set_ser('wordpressPluginVersions', $pluginVersions);
		wfWAFConfig::set('wordpressPluginVersions', $pluginVersions, wfWAF::getInstance(), 'synced');

		if (!function_exists('wp_get_themes')) {
			require_once(ABSPATH . '/wp-includes/theme.php');
		}

		$themeVersions = array();
		foreach (wp_get_themes() as $slug => $theme) {
			$themeVersions[$slug] = isset($theme['Version']) ? $theme['Version'] : null;
		}

		wfConfig::set_ser('wordpressThemeVersions', $themeVersions);
		wfWAFConfig::set('wordpressThemeVersions', $themeVersions, wfWAF::getInstance(), 'synced');
	}
	
	public static function cvssScoreSeverity($score) {
		$intScore = floor($score * 10);
		if ($intScore >= self::VULN_SEVERITY_CRITICAL) {
			return self::VULN_SEVERITY_CRITICAL;
		}
		else if ($intScore >= self::VULN_SEVERITY_HIGH) {
			return self::VULN_SEVERITY_HIGH;
		}
		else if ($intScore >= self::VULN_SEVERITY_MEDIUM) {
			return self::VULN_SEVERITY_MEDIUM;
		}
		else if ($intScore >= self::VULN_SEVERITY_LOW) {
			return self::VULN_SEVERITY_LOW;
		}
		
		return self::VULN_SEVERITY_NONE;
	}
	
	public static function cvssScoreSeverityLabel($score) {
		$severity = self::cvssScoreSeverity($score);
		switch ($severity) {
			case self::VULN_SEVERITY_CRITICAL:
				return __('Critical', 'wordfence');
			case self::VULN_SEVERITY_HIGH:
				return __('High', 'wordfence');
			case self::VULN_SEVERITY_MEDIUM:
				return __('Medium', 'wordfence');
			case self::VULN_SEVERITY_LOW:
				return __('Low', 'wordfence');
		}
		return __('None', 'wordfence');
	}
	
	public static function cvssScoreSeverityHexColor($score) {
		$severity = self::cvssScoreSeverity($score);
		switch ($severity) {
			case self::VULN_SEVERITY_CRITICAL:
				return '#cc0500';
			case self::VULN_SEVERITY_HIGH:
				return '#df3d03';
			case self::VULN_SEVERITY_MEDIUM:
				return '#f9a009';
			case self::VULN_SEVERITY_LOW:
				return '#ffcb0d';
		}
		return '#000000';
	}
	
	public static function cvssScoreSeverityClass($score) {
		$severity = self::cvssScoreSeverity($score);
		switch ($severity) {
			case self::VULN_SEVERITY_CRITICAL:
				return 'wf-vulnerability-severity-critical';
			case self::VULN_SEVERITY_HIGH:
				return 'wf-vulnerability-severity-high';
			case self::VULN_SEVERITY_MEDIUM:
				return 'wf-vulnerability-severity-medium';
			case self::VULN_SEVERITY_LOW:
				return 'wf-vulnerability-severity-low';
		}
		return 'wf-vulnerability-severity-none';
	}
	
	public function __construct() {
		$this->api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion());
	}
	
	public function __sleep() {
		return array('needs_core_update', 'core_update_version', 'plugin_updates', 'all_plugins', 'plugin_slugs', 'theme_updates');
	}
	
	public function __wakeup() {
		$this->api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion());
	}
	
	/**
	 * @return bool
	 */
	public function needsAnyUpdates() {
		return $this->needsCoreUpdate() || count($this->getPluginUpdates()) > 0 || count($this->getThemeUpdates()) > 0;
	}

	/**
	 * Check for any core, plugin or theme updates.
	 *
	 * @return $this
	 */
	public function checkAllUpdates($useCachedValued = true) {
		if (!$useCachedValued) {
			wfConfig::remove(self::LAST_UPDATE_CHECK_ERROR_KEY);
			wfConfig::remove(self::LAST_UPDATE_CHECK_ERROR_SLUG_KEY);
		}
		
		return $this->checkCoreUpdates($useCachedValued)
			->checkPluginUpdates($useCachedValued)
			->checkThemeUpdates($useCachedValued);
	}

	/**
	 * Check if there is an update to the WordPress core.
	 *
	 * @return $this
	 */
	public function checkCoreUpdates($useCachedValued = true) {
		$this->needs_core_update = false;

		if (!function_exists('wp_version_check')) {
			require_once(ABSPATH . WPINC . '/update.php');
		}
		if (!function_exists('get_preferred_from_update_core')) {
			require_once(ABSPATH . 'wp-admin/includes/update.php');
		}
		
		include(ABSPATH . WPINC . '/version.php'); /** @var $wp_version */
		
		$availableUpdates = get_site_transient('update_core');
		/**
		 * Sample Structure:
		 * 
		 * class stdClass#1 (4) {
			  public $updates =>
			  array(3) {
				[0] =>
				class stdClass#2 (10) {
				  public $response => string(7) "upgrade"
				  public $version => string(5) "6.4.2"
				  ...
				}
				[1] =>
				class stdClass#4 (11) {
				  public $response => string(10) "autoupdate"
				  public $version => string(5) "6.4.2"
				  ...
				}
				[2] =>
				class stdClass#6 (11) {
				  public $response => string(10) "autoupdate"
				  public $version => string(5) "6.3.2"
				  ...
				}
			  }
			  public $last_checked => int(1703025218)
			  public $version_checked => string(5) "6.3.1"
			  public $translations => ...
			}

		 */
		
		if ($useCachedValued && 
			isset($availableUpdates->updates) && is_array($availableUpdates->updates) && 
			isset($availableUpdates->last_checked) && 12 * HOUR_IN_SECONDS > (time() - $availableUpdates->last_checked) && $availableUpdates->version_checked == $wp_version) {
			//Do nothing, use cached value
		}
		else {
			wp_version_check();
			$availableUpdates = get_site_transient('update_core');
		}
		
		if (isset($availableUpdates->updates) && is_array($availableUpdates->updates)) {
			$current = wfUtils::parse_version($wp_version);
			$updates = $availableUpdates->updates;
			foreach ($updates as $update) {
				if (version_compare($update->version, $wp_version) <= 0) { continue; } //Array will contain the reinstall info for the current version if non-prerelease or the last production version if prerelease, skip
				
				if (version_compare($update->version, $this->core_update_version) > 0) {
					$this->needs_core_update = true;
					$this->core_update_version = $update->version;
				}
				
				$checking = wfUtils::parse_version($update->version);
				if ($checking[wfUtils::VERSION_MAJOR] == $current[wfUtils::VERSION_MAJOR] && $checking[wfUtils::VERSION_MINOR] == $current[wfUtils::VERSION_MINOR] && $checking[wfUtils::VERSION_PATCH] > $current[wfUtils::VERSION_PATCH]) {
					$this->core_update_patch_available = true;
					$this->core_update_patch_version = $update->version;
				}
			}
			
			if ($this->needs_core_update && $this->core_update_patch_available && version_compare($this->core_update_version, $this->core_update_patch_version) === 0) { //Patch and edge update are the same, clear patch values
				$this->core_update_patch_available = false;
				$this->core_update_patch_version = 0;
			}
			
			if ($this->needs_core_update) {
				$checking = wfUtils::parse_version($this->core_update_version);
				$this->core_earlier_branch = ($checking[wfUtils::VERSION_MAJOR] > $current[wfUtils::VERSION_MAJOR] || $checking[wfUtils::VERSION_MINOR] > $current[wfUtils::VERSION_MINOR]);
			}
		}

		return $this;
	}

	private function checkPluginFile($plugin, &$installedPlugins) {
		if (!array_key_exists($plugin, $installedPlugins))
			return null;
		$file = wfUtils::getPluginBaseDir() . $plugin;
		if (!file_exists($file)) {
			unset($installedPlugins[$plugin]);
			return null;
		}
		return $file;
	}

	private function initializePluginUpdateData($plugin, &$installedPlugins, $checkVulnerabilities, $populator = null) {
		$file = $this->checkPluginFile($plugin, $installedPlugins);
		if ($file === null)
			return null;
		$data = $installedPlugins[$plugin];
		$data['pluginFile'] = $file;
		if ($populator !== null)
			$populator($data, $file);
		if (!array_key_exists('slug', $data) || empty($data['slug']))
			$data['slug'] = $this->extractSlug($plugin);
		$slug = $data['slug'];
		if ($slug !== null) {
			$vulnerable = $checkVulnerabilities ? $this->isPluginVulnerable($slug, $data['Version']) : null;
			$data['vulnerable'] = !empty($vulnerable);
			if ($data['vulnerable']) {
				if (isset($vulnerable['link']) && is_string($vulnerable['link'])) { $data['vulnerabilityLink'] = $vulnerable['link']; }
				if (isset($vulnerable['score'])) {
					$data['cvssScore'] = number_format(floatval($vulnerable['score']), 1);
					$data['severityColor'] = self::cvssScoreSeverityHexColor($data['cvssScore']);
					$data['severityLabel'] = self::cvssScoreSeverityLabel($data['cvssScore']);
					$data['severityClass'] = self::cvssScoreSeverityClass($data['cvssScore']);
				}
				if (isset($vulnerable['vector']) && is_string($vulnerable['vector'])) { $data['cvssVector'] = $vulnerable['vector']; }
			}
			$this->plugin_slugs[] = $slug;
			$this->all_plugins[$slug] = $data;
		}
		unset($installedPlugins[$plugin]);
		return $data;
	}

	public function extractSlug($plugin, $data = null) {
		$slug = null;
		if (is_array($data) && array_key_exists('slug', $data))
			$slug = $data['slug'];
		if (!is_string($slug) || empty($slug)) {
			if (preg_match('/^([^\/]+)\//', $plugin, $matches)) {
				$slug = $matches[1];
			}
			else if (preg_match('/^([^\/.]+)\.php$/', $plugin, $matches)) {
				$slug = $matches[1];
			}
		}
		return $slug;
	}

	private static function requirePluginsApi() {
		if (!function_exists('plugins_api'))
			require_once(ABSPATH . '/wp-admin/includes/plugin-install.php');
	}

	private function fetchPluginUpdates($useCache = true) {
		$update_plugins = get_site_transient('update_plugins');
		if ($useCache && isset($update_plugins->last_checked) && 12 * HOUR_IN_SECONDS > (time() - $update_plugins->last_checked)) //Duplicate of _maybe_update_plugins, which is a private call
			return $update_plugins;
		if (!function_exists('wp_update_plugins'))
			require_once(ABSPATH . WPINC . '/update.php');
		try {
			wp_update_plugins();
		}
		catch (Exception $e) {
			wfConfig::set(self::LAST_UPDATE_CHECK_ERROR_KEY, $e->getMessage(), false);
			wfConfig::remove(self::LAST_UPDATE_CHECK_ERROR_SLUG_KEY);
			error_log('Caught exception while attempting to refresh plugin update status: ' . $e->getMessage());
		}
		catch (Throwable $t) {
			wfConfig::set(self::LAST_UPDATE_CHECK_ERROR_KEY, $t->getMessage(), false);
			wfConfig::remove(self::LAST_UPDATE_CHECK_ERROR_SLUG_KEY);
			error_log('Caught error while attempting to refresh plugin update status: ' . $t->getMessage());
		}
		return get_site_transient('update_plugins');
	}

	/**
	 * Check if any plugins need an update.
	 *
	 * @param bool $checkVulnerabilities whether or not to check for vulnerabilities while checking updates
	 *
	 * @return $this
	 */
	public function checkPluginUpdates($useCachedValued = true, $checkVulnerabilities = true) {
		if($checkVulnerabilities)
			$this->plugin_updates = array();

		self::requirePluginsApi();

		$update_plugins = $this->fetchPluginUpdates($useCachedValued);
		
		//Get the full plugin list
		if (!function_exists('get_plugins')) {
			require_once(ABSPATH . '/wp-admin/includes/plugin.php');
		}
		$installedPlugins = get_plugins();

		$context = $this;

		if ($update_plugins && !empty($update_plugins->response)) {
			foreach ($update_plugins->response as $plugin => $vals) {
				$data = $this->initializePluginUpdateData($plugin, $installedPlugins, $checkVulnerabilities, function (&$data, $file) use ($context, $plugin, $vals) {
					$vals = (array) $vals;
					$data['slug'] = $context->extractSlug($plugin, $vals);
					$data['newVersion'] = (isset($vals['new_version']) ? $vals['new_version'] : 'Unknown');
					$data['wpURL'] = (isset($vals['url']) ? rtrim($vals['url'], '/') : null);
					$data['updateAvailable'] = true;
				});

				if($checkVulnerabilities && $data !== null)
					$this->plugin_updates[] = $data;
			}
		}
		
		//We have to grab the slugs from the update response because no built-in function exists to return the true slug from the local files
		if ($update_plugins && !empty($update_plugins->no_update)) {
			foreach ($update_plugins->no_update as $plugin => $vals) {
				$this->initializePluginUpdateData($plugin, $installedPlugins, $checkVulnerabilities, function (&$data, $file) use ($context, $plugin, $vals) {
					$vals = (array) $vals;
					$data['slug'] = $context->extractSlug($plugin, $vals);
					$data['wpURL'] = (isset($vals['url']) ? rtrim($vals['url'], '/') : null);
				});
			}	
		}
		
		//Get the remaining plugins (not in the wordpress.org repo for whatever reason)
		foreach ($installedPlugins as $plugin => $data) {
			$data = $this->initializePluginUpdateData($plugin, $installedPlugins, $checkVulnerabilities);
		}

		return $this;
	}

	/**
	 * Check if any themes need an update.
	 *
	 * @param bool $checkVulnerabilities whether or not to check for vulnerabilities while checking for updates
	 *
	 * @return $this
	 */
	public function checkThemeUpdates($useCachedValued = true, $checkVulnerabilities = true) {
		if($checkVulnerabilities)
			$this->theme_updates = array();

		if (!function_exists('wp_update_themes')) {
			require_once(ABSPATH . WPINC . '/update.php');
		}
		
		$update_themes = get_site_transient('update_themes');
		if ($useCachedValued && isset($update_themes->last_checked) && 12 * HOUR_IN_SECONDS > (time() - $update_themes->last_checked)) { //Duplicate of _maybe_update_themes, which is a private call
			//Do nothing, use cached value
		}
		else {
			try {
				wp_update_themes();
			}
			catch (Exception $e) {
				wfConfig::set(self::LAST_UPDATE_CHECK_ERROR_KEY, $e->getMessage(), false);
				error_log('Caught exception while attempting to refresh theme update status: ' . $e->getMessage());
			}
			catch (Throwable $t) {
				wfConfig::set(self::LAST_UPDATE_CHECK_ERROR_KEY, $t->getMessage(), false);
				error_log('Caught error while attempting to refresh theme update status: ' . $t->getMessage());
			}
			
			$update_themes = get_site_transient('update_themes');
		}

		if ($update_themes && (!empty($update_themes->response)) && $checkVulnerabilities) {
			if (!function_exists('wp_get_themes')) {
				require_once(ABSPATH . '/wp-includes/theme.php');
			}
			$themes = wp_get_themes();
			foreach ($update_themes->response as $theme => $vals) {
				foreach ($themes as $name => $themeData) {
					if (strtolower($name) == $theme) {
						$vulnerable = false;
						if (isset($themeData['Version'])) {
							$vulnerable = $this->isThemeVulnerable($theme, $themeData['Version']);
						}
						
						$data = array(
							'newVersion' => (isset($vals['new_version']) ? $vals['new_version'] : 'Unknown'),
							'package'    => (isset($vals['package']) ? $vals['package'] : null),
							'URL'        => (isset($vals['url']) ? $vals['url'] : null),
							'Name'       => $themeData['Name'],
							'name'       => $themeData['Name'],
							'version'    => $themeData['Version'],
							'vulnerable' => $vulnerable
						);
						
						$data['vulnerable'] = !empty($vulnerable);
						if ($data['vulnerable']) {
							if (isset($vulnerable['link']) && is_string($vulnerable['link'])) { $data['vulnerabilityLink'] = $vulnerable['link']; }
							if (isset($vulnerable['score'])) {
								$data['cvssScore'] = number_format(floatval($vulnerable['score']), 1);
								$data['severityColor'] = self::cvssScoreSeverityHexColor($data['cvssScore']);
								$data['severityLabel'] = self::cvssScoreSeverityLabel($data['cvssScore']);
								$data['severityClass'] = self::cvssScoreSeverityClass($data['cvssScore']);
							}
							if (isset($vulnerable['vector']) && is_string($vulnerable['vector'])) { $data['cvssVector'] = $vulnerable['vector']; }
						}
						
						$this->theme_updates[] = $data;
					}
				}
			}
		}
		return $this;
	}
	
	/**
	 * @param bool $initial if true, treat as the initial scan run
	 */
	public function checkCoreVulnerabilities($initial = false) {
		$vulnerabilities = array();
		
		include(ABSPATH . WPINC . '/version.php'); /** @var $wp_version */
		
		$core = array(
			'current' => $wp_version,
		);
		
		if ($this->needs_core_update) {
			$core['edge'] = $this->core_update_version;
		}
		
		if ($this->core_update_patch_available) {
			$core['patch'] = $this->core_update_patch_version;
		}
		
		try {
			$result = $this->api->call('core_vulnerability_check', array(), array(
				'core' => json_encode($core),
			));
			
			wfConfig::set_ser('vulnerabilities_core', $result['vulnerable'], false, wfConfig::DONT_AUTOLOAD); //Will have the index `current` with possibly `edge` and `patch` depending on what was provided above
		}
		catch (Exception $e) {
			//Do nothing
		}
	}

	private function initializePluginVulnerabilityData($plugin, &$installedPlugins, &$records, $values = null, $update = false) {
		$file = $this->checkPluginFile($plugin, $installedPlugins);
		if ($file === null)
			return null;
		$data = $installedPlugins[$plugin];
		$record = array(
			'slug' => $this->extractSlug($plugin, $values),
			'fromVersion' => isset($data['Version']) ? $data['Version'] : 'Unknown',
			'vulnerable' => false
		);
		if ($update && is_array($values))
			$record['toVersion'] = isset($values['new_version']) ? $values['new_version'] : 'Unknown';
		$records[] = $record;
		unset($installedPlugins[$plugin]);
	}

	/**
	 * @param bool $initial if true, treat as the initial scan run
	 */
	public function checkPluginVulnerabilities($initial=false) {

		self::requirePluginsApi();
		
		$vulnerabilities = array();
		
		//Get the full plugin list
		if (!function_exists('get_plugins')) {
			require_once(ABSPATH . '/wp-admin/includes/plugin.php');
		}
		$installedPlugins = get_plugins();
		
		//Get the info for plugins on wordpress.org
		$update_plugins = $this->fetchPluginUpdates();
		if ($update_plugins) {
			if (!empty($update_plugins->response)) {
				foreach ($update_plugins->response as $plugin => $vals) {
					$this->initializePluginVulnerabilityData($plugin, $installedPlugins, $vulnerabilities, (array) $vals, true);
				}
			}
			
			if (!empty($update_plugins->no_update)) {
				foreach ($update_plugins->no_update as $plugin => $vals) {
					$this->initializePluginVulnerabilityData($plugin, $installedPlugins, $vulnerabilities, (array) $vals);
				}
			}
		}
		
		//Get the remaining plugins (not in the wordpress.org repo for whatever reason)
		foreach ($installedPlugins as $plugin => $data) {
			$this->initializePluginVulnerabilityData($plugin, $installedPlugins, $vulnerabilities, $data);
		}
		
		if (count($vulnerabilities) > 0) {
			try {
				$result = $this->api->call('plugin_vulnerability_check', array(), array(
					'plugins' => json_encode($vulnerabilities),
				));
				
				foreach ($vulnerabilities as &$v) {
					$vulnerableList = $result['vulnerable'];
					foreach ($vulnerableList as $r) {
						if ($r['slug'] == $v['slug']) {
							$v['vulnerable'] = !!$r['vulnerable'];
							if (isset($r['link'])) {
								$v['link'] = $r['link'];
							}
							if (isset($r['score'])) {
								$v['score'] = $r['score'];
							}
							if (isset($r['vector'])) {
								$v['vector'] = $r['vector'];
							}
							break;
						}
					}
				}
			}
			catch (Exception $e) {
				//Do nothing
			}
			
			wfConfig::set_ser('vulnerabilities_plugin', $vulnerabilities, false, wfConfig::DONT_AUTOLOAD);
		}
	}

	/**
	 * @param bool $initial whether or not this is the initial run
	 */
	public function checkThemeVulnerabilities($initial = false) {
		if (!function_exists('wp_update_themes')) {
			require_once(ABSPATH . WPINC . '/update.php');
		}
		
		self::requirePluginsApi();
		
		$this->checkThemeUpdates(!$initial, false);
		$update_themes = get_site_transient('update_themes');
		
		$vulnerabilities = array();
		if ($update_themes && !empty($update_themes->response)) {
			if (!function_exists('get_plugin_data'))
			{
				require_once(ABSPATH . '/wp-admin/includes/plugin.php');
			}
			
			foreach ($update_themes->response as $themeSlug => $vals) {
				
				$valsArray = (array) $vals;
				$theme = wp_get_theme($themeSlug);
				
				$record = array();
				$record['slug'] = $themeSlug;
				$record['toVersion'] = (isset($valsArray['new_version']) ? $valsArray['new_version'] : 'Unknown');
				$record['fromVersion'] = $theme->version;
				$record['vulnerable'] = false;
				$vulnerabilities[] = $record;
			}
			
			try {
				$result = $this->api->call('theme_vulnerability_check', array(), array(
					'themes' => json_encode($vulnerabilities),
				));
				
				foreach ($vulnerabilities as &$v) {
					$vulnerableList = $result['vulnerable'];
					foreach ($vulnerableList as $r) {
						if ($r['slug'] == $v['slug']) {
							$v['vulnerable'] = !!$r['vulnerable'];
							if (isset($r['link'])) {
								$v['link'] = $r['link'];
							}
							if (isset($r['score'])) {
								$v['score'] = $r['score'];
							}
							if (isset($r['vector'])) {
								$v['vector'] = $r['vector'];
							}
							break;
						}
					}
				}
			}
			catch (Exception $e) {
				//Do nothing
			}
			
			wfConfig::set_ser('vulnerabilities_theme', $vulnerabilities, false, wfConfig::DONT_AUTOLOAD);
		}
	}
	
	/**
	 * Returns whether the core version is vulnerable. Available $which values are `current` for the version running now,
	 * `patch` for the patch update (if available), and `edge` for the most recent update available. `patch` and `edge`
	 * are accurate only if an update is actually available and will return false otherwise.
	 * 
	 * @param string $which
	 * @return bool
	 */
	public function isCoreVulnerable($which = 'current') {
		static $_vulnerabilitiesRefreshed = false;
		$vulnerabilities = wfConfig::get_ser('vulnerabilities_core', null);
		if ($vulnerabilities === null) {
			if (!$_vulnerabilitiesRefreshed) {
				$this->checkCoreVulnerabilities(true);
				$_vulnerabilitiesRefreshed = true;
			}
			
			//Verify that we got a valid response, if not, avoid infinite recursion
			$vulnerabilities = wfConfig::get_ser('vulnerabilities_core', null);
			if ($vulnerabilities === null) {
				wordfence::status(4, 'error', __("Failed obtaining core vulnerability data, skipping check.", 'wordfence'));
				return false;
			}
			
			return $this->isCoreVulnerable($which);
		}
		
		if (!isset($vulnerabilities[$which])) {
			return false;
		}
		
		return !!$vulnerabilities[$which]['vulnerable'];
	}
	
	public function isPluginVulnerable($slug, $version) {
		return $this->_isSlugVulnerable('vulnerabilities_plugin', $slug, $version, function(){ $this->checkPluginVulnerabilities(true); });
	}
	
	public function isThemeVulnerable($slug, $version) {
		return $this->_isSlugVulnerable('vulnerabilities_theme', $slug, $version, function(){ $this->checkThemeVulnerabilities(true); });
	}
	
	private function _isSlugVulnerable($vulnerabilitiesKey, $slug, $version, $populateVulnerabilities=null) {
		static $_vulnerabilitiesRefreshed = array();
		$vulnerabilities = wfConfig::get_ser($vulnerabilitiesKey, null);
		if ( $vulnerabilities === null) {
			if (is_callable($populateVulnerabilities)) {
				if (!isset($_vulnerabilitiesRefreshed[$vulnerabilitiesKey])) {
					$populateVulnerabilities();
					$_vulnerabilitiesRefreshed[$vulnerabilitiesKey] = true;
				}
				
				$vulnerabilities = wfConfig::get_ser($vulnerabilitiesKey, null);
				if ($vulnerabilities === null) {
					wordfence::status(4, 'error', __("Failed obtaining vulnerability data, skipping check.", 'wordfence'));
					return false;
				}
				
				return $this->_isSlugVulnerable($vulnerabilitiesKey, $slug, $version);
			}
			return false;
		}
		foreach ($vulnerabilities as $v) {
			if ($v['slug'] == $slug) {
				if (
					($v['fromVersion'] == 'Unknown' && $v['toVersion'] == 'Unknown') ||
					((!isset($v['toVersion']) || $v['toVersion'] == 'Unknown') && version_compare($version, $v['fromVersion']) >= 0) ||
					($v['fromVersion'] == 'Unknown' && isset($v['toVersion']) && version_compare($version, $v['toVersion']) < 0) ||
					(version_compare($version, $v['fromVersion']) >= 0 && isset($v['toVersion']) && version_compare($version, $v['toVersion']) < 0)
				) {
					if ($v['vulnerable']) { return $v; }
					return false;
				}
			}
		}
		return false;
	}

	/**
	 * @return boolean
	 */
	public function needsCoreUpdate() {
		return $this->needs_core_update;
	}

	/**
	 * @return string
	 */
	public function getCoreUpdateVersion() {
		return $this->core_update_version;
	}
	
	/**
	 * Returns true if there is a patch version available for the site's current minor branch and the site is not on
	 * the most recent minor branch (e.g., a backported security update).
	 * 
	 * Example: suppose the site is currently on 4.1.37. This will return true and `getCoreUpdatePatchVersion` will 
	 * return 4.1.39. `getCoreUpdateVersion` will return 6.4.2 (as of writing this comment). 
	 * 
	 * @return bool
	 */
	public function coreUpdatePatchAvailable() {
		return $this->core_update_patch_available;
	}
	
	/**
	 * The version number for the patch update if available.
	 * 
	 * @return string
	 */
	public function getCoreUpdatePatchVersion() {
		return $this->core_update_patch_version;
	}
	
	/**
	 * Returns whether or not the current core version is on a major or minor release earlier than the current available 
	 * edge update.
	 * 
	 * @return bool
	 */
	public function getCoreEarlierBranch() {
		return $this->core_earlier_branch;
	}

	/**
	 * @return array
	 */
	public function getPluginUpdates() {
		return $this->plugin_updates;
	}
	
	/**
	 * @return array
	 */
	public function getAllPlugins() {
		return $this->all_plugins;
	}
	
	/**
	 * @return array
	 */
	public function getPluginSlugs() {
		return $this->plugin_slugs;
	}

	/**
	 * @return array
	 */
	public function getThemeUpdates() {
		return $this->theme_updates;
	}
}lib/wfUnlockMsg.php000064400000002213150755146450010274 0ustar00<?php if (!defined('WORDFENCE_VERSION')) { exit; } ?>
<p><?php esc_html_e('If you are a WordPress user with administrative privileges on this site please enter your email in the box below and click &quot;Send&quot;. You will then receive an email that helps you regain access.', 'wordfence'); ?></p>
<form method="POST" id="unlock-form" action="#">
	<?php require_once(ABSPATH . 'wp-includes/pluggable.php'); ?>
	<input type="hidden" name="nonce" value="<?php echo wp_create_nonce('wf-form'); ?>">
	<input type="text" size="50" name="email" id="unlock-email" value="" maxlength="255" placeholder="email@example.com">&nbsp;&nbsp;<input type="submit" class="wf-btn wf-btn-default" id="unlock-submit" name="s" value="<?php esc_attr_e('Send Unlock Email', 'wordfence'); ?>" disabled>
</form>
<script type="application/javascript">
	(function() {
		var textfield = document.getElementById('unlock-email');
		textfield.addEventListener('focus', function() {
			document.getElementById('unlock-form').action = "<?php echo esc_js(wfUtils::getSiteBaseURL()); ?>" + "?_wfsf=unlockEmail";
			document.getElementById('unlock-submit').disabled = false;
		});
	})();
</script>
lib/menu_tools_importExport.php000064400000002436150755146450013024 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
?>
<script type="application/javascript">
	(function($) {
		$(function() {
			document.title = "<?php esc_attr_e('Import/Export Options', 'wordfence'); ?>" + " \u2039 " + WFAD.basePageName;
		});
	})(jQuery);
</script>
<div id="wf-tools-importexport">
	<div class="wf-section-title">
		<h2><?php esc_html_e('Import/Export Options', 'wordfence') ?></h2>
		<span><?php echo wp_kses(sprintf(
			/* translators: URL to support page. */
				__('<a href="%s" target="_blank" rel="noopener noreferrer" class="wf-help-link">Learn more<span class="wf-hidden-xs"> about importing and exporting options</span><span class="screen-reader-text"> (opens in new tab)</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_TOOLS_IMPORT_EXPORT)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array(), 'class'=>array()), 'span'=>array('class'=>array()))); ?>
			<i class="wf-fa wf-fa-external-link" aria-hidden="true"></i></span>
	</div>
	
	<p><?php esc_html_e("To clone one site's configuration to another, use the import/export tools below.", 'wordfence') ?></p>
	
	<?php
	echo wfView::create('dashboard/options-group-import', array(
		'stateKey' => 'global-options-import',
		'collapseable' => false,
	))->render();
	?>
</div>lib/wfScanPath.php000064400000003431150755146450010076 0ustar00<?php

require_once __DIR__ . '/wfFileUtils.php';
require_once __DIR__ . '/wfScanFile.php';
require_once __DIR__ . '/wfScanFileLink.php';

class wfScanPath {

	private $baseDirectory;
	private $path;
	private $realPath;
	private $wordpressPath;
	private $expectedFiles;

	public function __construct($baseDirectory, $path, $wordpressPath = null, $expectedFiles = null) {
		$this->baseDirectory = $baseDirectory;
		$this->path = $path;
		$this->realPath = wfFileUtils::realPath($path);
		$this->wordpressPath = $wordpressPath;
		$this->expectedFiles = is_array($expectedFiles) ? array_flip($expectedFiles) : null;
	}

	public function getPath() {
		return $this->path;
	}

	public function getRealPath() {
		return $this->realPath;
	}

	public function getWordpressPath() {
		return $this->wordpressPath;
	}

	public function hasExpectedFiles() {
		return $this->expectedFiles !== null && !empty($this->expectedFiles);
	}

	public function expectsFile($name) {
		return array_key_exists($name, $this->expectedFiles);
	}

	public function isBaseDirectory() {
		return $this->path === $this->baseDirectory;
	}

	public function isBelowBaseDirectory() {
		return wfFileUtils::belongsTo($this->path, $this->baseDirectory);
	}

	public function getContents() {
		return wfFileUtils::getContents($this->realPath);
	}

	public function createScanFile($relativePath) {
		$path = wfFileUtils::joinPaths($this->realPath, $relativePath);
		$realPath = wfFileUtils::realPath($path);
		$wordpressPath = wfFileUtils::trimSeparators(wfFileUtils::joinPaths($this->wordpressPath, $relativePath), true, false);
		if (is_link($path)) {
			return new wfScanFileLink($path, $realPath, $wordpressPath);
		}
		else {
			return new wfScanFile($realPath, $wordpressPath);
		}
	}

	public function __toString() {
		return $this->realPath;
	}

}lib/wordfenceClass.php000064400001562026150755146450011015 0ustar00<?php
require_once(dirname(__FILE__) . '/wordfenceConstants.php');
require_once(dirname(__FILE__) . '/wfScanEngine.php');
require_once(dirname(__FILE__) . '/wfScan.php');
require_once(dirname(__FILE__) . '/wfScanMonitor.php');
require_once(dirname(__FILE__) . '/wfCrawl.php');
require_once(dirname(__FILE__) . '/Diff.php');
require_once(dirname(__FILE__) . '/Diff/Renderer/Html/SideBySide.php');
require_once(dirname(__FILE__) . '/wfAPI.php');
require_once(dirname(__FILE__) . '/wfIssues.php');
require_once(dirname(__FILE__) . '/wfDB.php');
require_once(dirname(__FILE__) . '/wfUtils.php');
require_once(dirname(__FILE__) . '/wfLog.php');
require_once(dirname(__FILE__) . '/wfConfig.php');
require_once(dirname(__FILE__) . '/wfSchema.php');
require_once(dirname(__FILE__) . '/wfCache.php');
require_once(dirname(__FILE__) . '/wfCrypt.php');
require_once(dirname(__FILE__) . '/wfMD5BloomFilter.php');
require_once(dirname(__FILE__) . '/wfView.php');
require_once(dirname(__FILE__) . '/wfHelperString.php');
require_once(dirname(__FILE__) . '/wfDirectoryIterator.php');
require_once(dirname(__FILE__) . '/wfUpdateCheck.php');
require_once(dirname(__FILE__) . '/wfActivityReport.php');
require_once(dirname(__FILE__) . '/wfHelperBin.php');
require_once(dirname(__FILE__) . '/wfDiagnostic.php');
require_once(dirname(__FILE__) . '/wfStyle.php');
require_once(dirname(__FILE__) . '/wfDashboard.php');
require_once(dirname(__FILE__) . '/wfNotification.php');

require_once(dirname(__FILE__) . '/../models/page/wfPage.php');
require_once(dirname(__FILE__) . '/../models/common/wfTab.php');
require_once(dirname(__FILE__) . '/../models/block/wfBlock.php');
require_once(dirname(__FILE__) . '/../models/block/wfRateLimit.php');
require_once(dirname(__FILE__) . '/../models/firewall/wfFirewall.php');
require_once(dirname(__FILE__) . '/../models/scanner/wfScanner.php');
require_once(dirname(__FILE__) . '/wfPersistenceController.php');
require_once(dirname(__FILE__) . '/wfImportExportController.php');
require_once(dirname(__FILE__) . '/wfOnboardingController.php');
require_once(dirname(__FILE__) . '/wfSupportController.php');
require_once(dirname(__FILE__) . '/wfCredentialsController.php');
require_once(dirname(__FILE__) . '/wfVersionCheckController.php');
require_once(dirname(__FILE__) . '/wfDateLocalization.php');
require_once(dirname(__FILE__) . '/wfAdminNoticeQueue.php');
require_once(dirname(__FILE__) . '/wfModuleController.php');
require_once(dirname(__FILE__) . '/wfAlerts.php');
require_once(dirname(__FILE__) . '/wfDeactivationOption.php');

if (version_compare(phpversion(), '5.3', '>=')) {
	require_once(dirname(__FILE__) . '/WFLSPHP52Compatability.php');
	define('WORDFENCE_USE_LEGACY_2FA', wfCredentialsController::useLegacy2FA());
	$wfCoreLoading = true;
	require(dirname(__FILE__) . '/../modules/login-security/wordfence-login-security.php');	
}

require_once(dirname(__FILE__) . '/wfJWT.php');
require_once(dirname(__FILE__) . '/wfCentralAPI.php');

if (class_exists('WP_REST_Users_Controller')) { //WP 4.7+
	require_once(dirname(__FILE__) . '/wfRESTAPI.php');
}
if (wfCentral::isSupported()) { //WP 4.4.0+
	require_once(dirname(__FILE__) . '/rest-api/wfRESTAuthenticationController.php');
	require_once(dirname(__FILE__) . '/rest-api/wfRESTConfigController.php');
	require_once(dirname(__FILE__) . '/rest-api/wfRESTScanController.php');
}

class wordfence {
	public static $printStatus = false;
	public static $wordfence_wp_version = false;
	/**
	 * @var WP_Error
	 */
	public static $authError;
	private static $passwordCodePattern = '/\s+wf([a-z0-9 ]+)$/i'; 
	protected static $lastURLError = false;
	protected static $curlContent = "";
	protected static $curlDataWritten = 0;
	protected static $hasher = '';
	protected static $itoa64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
	protected static $ignoreList = false;
	private static $wfLog = false;
	private static $hitID = 0;
	private static $debugOn = null;
	private static $runInstallCalled = false;
	private static $userDat = false;

	const ATTACK_DATA_BODY_LIMIT=41943040; //40MB

	public static function installPlugin(){
		self::runInstall();
		
		if (get_current_user_id() > 0) {
			wfConfig::set('activatingIP', wfUtils::getIP());
		}
		
		//Used by MU code below
		update_option('wordfenceActivated', 1);
		
		if (defined('WORDFENCE_LS_FROM_CORE') && WORDFENCE_LS_FROM_CORE) {
			WFLSPHP52Compatability::install_plugin();
		}
	}
	public static function uninstallPlugin(){
		//Send admin alert
		$currentUser = wp_get_current_user();
		$username = $currentUser->user_login;
		$alertCallback = array(new wfWordfenceDeactivatedAlert($username, wfUtils::getIP()), 'send');
		do_action('wordfence_security_event', 'wordfenceDeactivated', array(
			'username' => $username,
			'ip' => wfUtils::getIP(),
		), $alertCallback);
		
		//Check if caching is enabled and if it is, disable it and fix the .htaccess file.
		wfCache::removeCaching();

		//Used by MU code below
		update_option('wordfenceActivated', 0);
		wp_clear_scheduled_hook('wordfence_daily_cron');
		wp_clear_scheduled_hook('wordfence_hourly_cron');
		wp_clear_scheduled_hook('wordfence_daily_autoUpdate');

		//Remove old legacy cron job if it exists
		wp_clear_scheduled_hook('wordfence_scheduled_scan');

		//Remove all scheduled scans.
		wfScanner::shared()->unscheduleAllScans();
		wfScanMonitor::handleDeactivation();

		// Remove cron for email summary
		wfActivityReport::clearCronJobs();

		// Remove the admin user list so it can be regenerated if Wordfence is reactivated.
		wfConfig::set_ser('adminUserList', false);

		if (!WFWAF_SUBDIRECTORY_INSTALL) {
			wfWAFConfig::set('wafDisabled', true);
		}

		if(wfConfig::get('deleteTablesOnDeact')){
			if (wfCentral::isSupported() && wfCentral::isConnected()) {
				self::ajax_wfcentral_disconnect_callback();
			}

			wfConfig::updateTableExists(false);
			$schema = new wfSchema();
			$schema->dropAll();
			foreach(array('wordfence_version', 'wordfenceActivated', wfSchema::TABLE_CASE_OPTION) as $opt) {
				if (is_multisite() && function_exists('delete_network_option')) {
					delete_network_option(null, $opt);
				}
				delete_option($opt);
			}

			if (!WFWAF_SUBDIRECTORY_INSTALL) {
				try {
					if (WFWAF_AUTO_PREPEND) {
						$helper = new wfWAFAutoPrependHelper();
						if ($helper->uninstall()) {
							wfWAF::getInstance()->uninstall();
						}
					} else {
						wfWAF::getInstance()->uninstall();
					}
				} catch (wfWAFStorageFileException $e) {
					error_log($e->getMessage());
				} catch (wfWAFStorageEngineMySQLiException $e) {
					error_log($e->getMessage());
				}
			}
		}
		
		if (defined('WORDFENCE_LS_FROM_CORE') && WORDFENCE_LS_FROM_CORE) {
			WFLSPHP52Compatability::uninstall_plugin();
		}
	}
	public static function hourlyCron() {
		wfLog::trimHumanCache();
		
		wfRateLimit::trimData();
		
		wfCentral::checkForUnsentSecurityEvents();
		wfCentral::populateCentralSiteUrl();

		wfVersionCheckController::shared()->checkVersionsAndWarn();
		
		if (wfScanner::shared()->shouldRunQuickScan()) {
			wfScanner::shared()->recordLastQuickScanTime();
			wfScanEngine::startScan(false, wfScanner::SCAN_TYPE_QUICK);
		}
	}
	private static function keyAlert($msg){
		self::alert($msg, $msg . " " . __("To ensure uninterrupted Premium Wordfence protection on your site,\nplease renew your license by visiting http://www.wordfence.com/ Sign in, go to your dashboard,\nselect the license about to expire and click the button to renew that license.", 'wordfence'), false);
	}
	private static function pingApiKey() {
		$apiKey = wfConfig::get('apiKey');
		if (empty($apiKey))
			return;
		$api = new wfAPI($apiKey, wfUtils::getWPVersion());
		try {
			$keyType = wfLicense::KEY_TYPE_FREE;
			$keyData = $api->call('ping_api_key', array(), array('supportHash' => wfConfig::get('supportHash', ''), 'whitelistHash' => wfConfig::get('whitelistHash', ''), 'tldlistHash' => wfConfig::get('tldlistHash', ''), 'ipResolutionListHash' => wfConfig::get('ipResolutionListHash', '')));
			if (isset($keyData['_isPaidKey'])) {
				$keyType = wfConfig::get('keyType');
			}
			
			if (isset($keyData['_feedbackBasis'])) {
				wfConfig::setBool('satisfactionPromptOverride', $keyData['_feedbackBasis'] > WORDFENCE_FEEDBACK_EPOCH);
			}
			
			if(isset($keyData['_isPaidKey']) && $keyData['_isPaidKey']){
				$keyExpDays = $keyData['_keyExpDays'];
				$keyIsExpired = $keyData['_expired'];
				if (!empty($keyData['_autoRenew'])) {
					if ($keyExpDays > 12) {
						wfConfig::set('keyAutoRenew10Sent', '');
					} else if ($keyExpDays <= 12 && $keyExpDays > 0 && !wfConfig::get('keyAutoRenew10Sent')) {
						wfConfig::set('keyAutoRenew10Sent', 1);
						$email = __("Your Premium Wordfence License is set to auto-renew in 10 days.", 'wordfence');
						self::alert($email, $email . " " . __("To update your license settings please visit http://www.wordfence.com/zz9/dashboard", 'wordfence'), false);
					}
				} else {
					if($keyExpDays > 15){
						wfConfig::set('keyExp15Sent', '');
						wfConfig::set('keyExp7Sent', '');
						wfConfig::set('keyExp2Sent', '');
						wfConfig::set('keyExp1Sent', '');
						wfConfig::set('keyExpFinalSent', '');
					} else if($keyExpDays <= 15 && $keyExpDays > 0){
						if($keyExpDays <= 15 && $keyExpDays >= 11 && (! wfConfig::get('keyExp15Sent'))){
							wfConfig::set('keyExp15Sent', 1);
							self::keyAlert(__("Your Premium Wordfence License expires in less than 2 weeks.", 'wordfence'));
						} else if($keyExpDays <= 7 && $keyExpDays >= 4 && (! wfConfig::get('keyExp7Sent'))){
							wfConfig::set('keyExp7Sent', 1);
							self::keyAlert(__("Your Premium Wordfence License expires in less than a week.", 'wordfence'));
						} else if($keyExpDays == 2 && (! wfConfig::get('keyExp2Sent'))){
							wfConfig::set('keyExp2Sent', 1);
							self::keyAlert(__("Your Premium Wordfence License expires in 2 days.", 'wordfence'));
						} else if($keyExpDays == 1 && (! wfConfig::get('keyExp1Sent'))){
							wfConfig::set('keyExp1Sent', 1);
							self::keyAlert(__("Your Premium Wordfence License expires in 1 day.", 'wordfence'));
						}
					} else if($keyIsExpired && (! wfConfig::get('keyExpFinalSent')) ){
						wfConfig::set('keyExpFinalSent', 1);
						self::keyAlert(__("Your Wordfence Premium License has Expired!", 'wordfence'));
					}
				}
			}
			if (isset($keyData['dashboard'])) {
				wfConfig::set('lastDashboardCheck', time());
				wfDashboard::processDashboardResponse($keyData['dashboard']);
			}
			if (isset($keyData['support']) && isset($keyData['supportHash'])) {
				wfConfig::set('supportContent', $keyData['support'], wfConfig::DONT_AUTOLOAD);
				wfConfig::set('supportHash', $keyData['supportHash']);
			}
			if (isset($keyData['_whitelist']) && isset($keyData['_whitelistHash'])) {
				wfConfig::setJSON('whitelistPresets', $keyData['_whitelist']);
				wfConfig::set('whitelistHash', $keyData['_whitelistHash']);
			}
			if (isset($keyData['_tldlist']) && isset($keyData['_tldlistHash'])) {
				wfConfig::set('tldlist', $keyData['_tldlist'], wfConfig::DONT_AUTOLOAD);
				wfConfig::set('tldlistHash', $keyData['_tldlistHash']);
			}
			if (isset($keyData['_ipResolutionList']) && isset($keyData['_ipResolutionListHash'])) {
				wfConfig::setJSON('ipResolutionList', $keyData['_ipResolutionList']);
				wfConfig::set('ipResolutionListHash', $keyData['_ipResolutionListHash']);
			}
			if (isset($keyData['scanSchedule']) && is_array($keyData['scanSchedule'])) {
				wfConfig::set_ser('noc1ScanSchedule', $keyData['scanSchedule']);
				if (wfScanner::shared()->schedulingMode() == wfScanner::SCAN_SCHEDULING_MODE_AUTOMATIC) {
					wfScanner::shared()->scheduleScans();
				}
			}
			if (isset($keyData['showWfCentralUI'])) {
				wfConfig::set('showWfCentralUI', (int) $keyData['showWfCentralUI']);
			}

			if (isset($keyData['_keyNoLongerValid']) && $keyData['_keyNoLongerValid'] == 1) {
				if (wfConfig::get('keyDeletedNotice') !== $apiKey) {
					$keyDeletedNoticeSent = self::alert(__("The Wordfence Premium License in use on this site has been removed from your account.", 'wordfence'), __("The license you were using has been removed from your account. Please reach out to billing@wordfence.com or create a Premium support case at https://support.wordfence.com/support/tickets for more information. Our staff is happy to help.", 'wordfence'), false);
					if ($keyDeletedNoticeSent) {
						wfConfig::set('keyDeletedNotice', $apiKey);
					}
				}
			}

			wfConfig::set('keyType', $keyType);
		}
		catch(Exception $e){
			wordfence::status(4, 'error', sprintf(/* translators: Wordfence license key. */ __("Could not verify Wordfence License: %s", 'wordfence'), $e->getMessage()));
		}
	}
	public static function dailyCron() {
		$lastDailyCron = (int) wfConfig::get('lastDailyCron', 0);
		if (($lastDailyCron + 43200) > time()) { //Run no more frequently than every 12 hours
			return;
		}

		wfConfig::set('lastDailyCron', time());
		
		global $wpdb;
		$version = $wpdb->get_var("SELECT VERSION()");
		wfConfig::set('dbVersion', $version);

		self::pingApiKey();

		$allowMySQLi = wfConfig::testDB();
		wfConfig::set('allowMySQLi', $allowMySQLi);

		$wfdb = new wfDB();
		
		$table_wfLocs = wfDB::networkTable('wfLocs');
		$wfdb->queryWrite("delete from {$table_wfLocs} where ctime < unix_timestamp() - %d", WORDFENCE_MAX_IPLOC_AGE);
		
		wfBlock::vacuum();
		
		$table_wfCrawlers = wfDB::networkTable('wfCrawlers');
		$wfdb->queryWrite("delete from {$table_wfCrawlers} where lastUpdate < unix_timestamp() - (86400 * 7)");

		self::trimWfHits(true);

		$maxRows = absint(wfConfig::get('liveTraf_maxRows', 2000));; //affects stuff further down too
		
		$table_wfLogins = wfDB::networkTable('wfLogins');
		$count2 = $wfdb->querySingle("select count(*) as cnt from {$table_wfLogins}");
		if($count2 > 20000){
			$wfdb->truncate($table_wfLogins); //in case of Dos
		} else if($count2 > $maxRows){
			$wfdb->queryWrite("delete from {$table_wfLogins} order by ctime asc limit %d", ($count2 - $maxRows));
		}
		
		wfCentral::trimSecurityEvents();
		
		$table_wfReverseCache = wfDB::networkTable('wfReverseCache');
		$wfdb->queryWrite("delete from {$table_wfReverseCache} where unix_timestamp() - lastUpdate > 86400");
		
		$table_wfStatus = wfDB::networkTable('wfStatus');
		$count4 = $wfdb->querySingle("select count(*) as cnt from {$table_wfStatus}");
		if($count4 > 100000){
			$wfdb->truncate($table_wfStatus);
		} else if($count4 > 1000){ //max status events we keep. This determines how much gets emailed to us when users sends us a debug report.
			$wfdb->queryWrite("delete from {$table_wfStatus} where level != 10 order by ctime asc limit %d", ($count4 - 1000));
			$count5 = $wfdb->querySingle("select count(*) as cnt from {$table_wfStatus} where level=10");
			if($count5 > 100){
				$wfdb->queryWrite("delete from {$table_wfStatus} where level = 10 order by ctime asc limit %d", ($count5 - 100) );
			}
		}

		$report = new wfActivityReport();
		$report->rotateIPLog();
		self::_refreshUpdateNotification($report, true);

		wfUpdateCheck::syncAllVersionInfo();

		self::purgeWafFailures();

		wfConfig::remove('lastPermissionsTemplateCheck');
	}
	public static function _scheduleRefreshUpdateNotification($upgrader = null, $options = null) {
		$defer = false;
		if (is_array($options) && isset($options['type']) && $options['type'] == 'core') {
			$defer = true;
			set_site_transient('wordfence_updating_notifications', true, 600);
		}
		
		if ($defer) {
			wp_schedule_single_event(time(), 'wordfence_refreshUpdateNotification');
		}
		else {
			self::_refreshUpdateNotification();
		}
	}
	public static function _refreshUpdateNotification($report = null, $useCachedValued = false) {
		if ($report === null) {
			$report = new wfActivityReport();
		}
		
		$updatesNeeded = $report->getUpdatesNeeded($useCachedValued);
		if ($updatesNeeded) {
			$items = array();
			$plural = false;
			if ($updatesNeeded['core']) {
				$items[] = sprintf(/* translators: WordPress version. */ __('WordPress (v%s)', 'wordfence'), esc_html($updatesNeeded['core']));
			}
			
			if ($updatesNeeded['plugins']) {
				$entry = sprintf(/* translators: Number of plugins. */ _n('%d plugin', '%d plugins', count($updatesNeeded['plugins']), 'wordfence'), count($updatesNeeded['plugins']));
				$items[] = $entry;
			}
			
			if ($updatesNeeded['themes']) {
				$entry = sprintf(/* translators: Number of themes. */ _n('%d theme', '%d themes', count($updatesNeeded['themes']), 'wordfence'), count($updatesNeeded['themes']));
				$items[] = $entry;
			}
			
			$message = _n('An update is available for ', 'Updates are available for ', count($items), 'wordfence');

			for ($i = 0; $i < count($items); $i++) {
				if ($i > 0 && count($items) > 2) { $message .= ', '; }
				else if ($i > 0) { $message .= ' '; }
				if ($i > 0 && $i == count($items) - 1) { $message .= __('and ', 'wordfence'); }
				$message .= $items[$i];
			}
			
			new wfNotification(null, wfNotification::PRIORITY_HIGH_WARNING, '<a href="' . wfUtils::wpAdminURL('update-core.php') . '">' . $message . '</a>', 'wfplugin_updates');
		}
		else {
			$n = wfNotification::getNotificationForCategory('wfplugin_updates');
			if ($n !== null) {
				$n->markAsRead();
			}
		}
		
		$i = new wfIssues();
		$i->reconcileUpgradeIssues($report, true);
		
		wp_schedule_single_event(time(), 'wordfence_completeCoreUpdateNotification');
	}
	public static function _completeCoreUpdateNotification() {
		//This approach is here because WP Core updates run in a different sequence than plugin/theme updates, so we have to defer the running of the notification update sequence by an extra page load
		delete_site_transient('wordfence_updating_notifications');
		
		wfVersionCheckController::shared()->checkVersionsAndWarn();
	}
	private static function scheduleCrons($delay = 0) {
		wp_clear_scheduled_hook('wordfence_daily_cron');
		wp_clear_scheduled_hook('wordfence_hourly_cron');
		if (is_main_site()) {
			wfConfig::remove('lastDailyCron');
			wp_schedule_event(time() + $delay, 'daily', 'wordfence_daily_cron'); //'daily'
			wp_schedule_event(time() + $delay, 'hourly', 'wordfence_hourly_cron');
		}
	}
	public static function runInstall(){
		if(self::$runInstallCalled){ return; }
		self::$runInstallCalled = true;
		if (function_exists('ignore_user_abort')) {
			@ignore_user_abort(true);
		}
		if (!defined('DONOTCACHEDB')) { define('DONOTCACHEDB', true); }
		$previous_version = ((is_multisite() && function_exists('get_network_option')) ? get_network_option(null, 'wordfence_version', '0.0.0') : get_option('wordfence_version', '0.0.0'));
		if (is_multisite() && function_exists('update_network_option')) {
			update_network_option(null, 'wordfence_version', WORDFENCE_VERSION); //In case we have a fatal error we don't want to keep running install.	
		}
		else {
			update_option('wordfence_version', WORDFENCE_VERSION); //In case we have a fatal error we don't want to keep running install.
		}
		
		wordfence::status(4, 'info', sprintf(/* translators: Wordfence version. */ __('`runInstall` called with previous version = %s', 'wordfence'), $previous_version));
		
		//EVERYTHING HERE MUST BE IDEMPOTENT

		//Remove old legacy cron job if exists
		wp_clear_scheduled_hook('wordfence_scheduled_scan');

		wfSchema::updateTableCase();
		$schema = new wfSchema();
		$schema->createAll(); //if not exists
		wfConfig::updateTableExists(true);
		
		/** @var wpdb $wpdb */
		global $wpdb;
		
		//6.1.15
		$configTable = wfDB::networkTable('wfConfig');
		$hasAutoload = $wpdb->get_col($wpdb->prepare(<<<SQL
SELECT * FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA=DATABASE()
AND COLUMN_NAME='autoload'
AND TABLE_NAME=%s
SQL
			, $configTable));
		if (!$hasAutoload) {
			$wpdb->query("ALTER TABLE {$configTable} ADD COLUMN autoload ENUM('no', 'yes') NOT NULL DEFAULT 'yes'");
			$wpdb->query("UPDATE {$configTable} SET autoload = 'no' WHERE name = 'wfsd_engine' OR name LIKE 'wordfence_chunked_%'");
		}

		$wpdb->query("DELETE FROM $configTable WHERE `name` = 'emailedIssuesList' AND LENGTH(`val`) > 2 * 1024 * 1024");
		wfConfig::setDefaults(); //If not set

		$restOfSite = wfConfig::get('cbl_restOfSiteBlocked', 'notset');
		if($restOfSite == 'notset'){
			wfConfig::set('cbl_restOfSiteBlocked', '1');
		}

		if(wfConfig::get('autoUpdate') == '1'){
			wfConfig::enableAutoUpdate(); //Sets up the cron
		}

		$freshAPIKey = !wfConfig::get('apiKey');
		if ($freshAPIKey) {
			wfConfig::set('touppPromptNeeded', true);
		}

		self::scheduleCrons(15);

		$db = new wfDB();

		// IPv6 schema changes for 6.0.1
		$tables_with_ips = array(
			'wfCrawlers',
			'wfBadLeechers',
			'wfBlockedIPLog',
			'wfBlocks', //Removed in 7.0.1 but left in in case migrating from really old
			'wfHits',
			'wfLocs',
			'wfLogins',
			'wfReverseCache',
		);

		foreach ($tables_with_ips as $ip_table) {
			$ptable = wfDB::networkTable($ip_table);
			$tableExists = $wpdb->get_col($wpdb->prepare(<<<SQL
SELECT TABLE_NAME FROM information_schema.TABLES
WHERE TABLE_SCHEMA=DATABASE()
AND TABLE_NAME=%s
SQL
				, $ptable));
			if (!$tableExists) {
				continue;
			}
			
			$result = $wpdb->get_row("SHOW FIELDS FROM {$ptable} where field = 'IP'");
			if (!$result || strtolower($result->Type) == 'binary(16)') {
				continue;
			}

			$db->queryWriteIgnoreError("ALTER TABLE {$ptable} MODIFY IP BINARY(16)");

			// Just to be sure we don't corrupt the data if the alter fails.
			$result = $wpdb->get_row("SHOW FIELDS FROM {$ptable} where field = 'IP'");
			if (!$result || strtolower($result->Type) != 'binary(16)') {
				continue;
			}
			$db->queryWriteIgnoreError("UPDATE {$ptable} SET IP = CONCAT(LPAD(CHAR(0xff, 0xff), 12, CHAR(0)), LPAD(
	CHAR(
		CAST(IP as UNSIGNED) >> 24 & 0xFF,
		CAST(IP as UNSIGNED) >> 16 & 0xFF,
		CAST(IP as UNSIGNED) >> 8 & 0xFF,
		CAST(IP as UNSIGNED) & 0xFF
	),
	4,
	CHAR(0)
))");
		}

		//Country reassignment moved to the GeoIP file sync segment

		if (wfConfig::get('other_hideWPVersion')) {
			wfUtils::hideReadme();
		}

		$colsFor610 = array(
			'attackLogTime'     => '`attackLogTime` double(17,6) unsigned NOT NULL AFTER `id`',
			'statusCode'        => '`statusCode` int(11) NOT NULL DEFAULT 0 AFTER `jsRun`',
			'action'            => "`action` varchar(64) NOT NULL DEFAULT '' AFTER `UA`",
			'actionDescription' => '`actionDescription` text AFTER `action`',
			'actionData'        => '`actionData` text AFTER `actionDescription`',
		);

		$hitTable = wfDB::networkTable('wfHits');
		foreach ($colsFor610 as $col => $colDefintion) {
			$count = $wpdb->get_col($wpdb->prepare(<<<SQL
SELECT * FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA=DATABASE()
AND COLUMN_NAME=%s
AND TABLE_NAME=%s
SQL
				, $col, $hitTable));
			if (!$count) {
				$wpdb->query("ALTER TABLE $hitTable ADD COLUMN $colDefintion");
			}
		}

		$has404 = $wpdb->get_col($wpdb->prepare(<<<SQL
SELECT * FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA=DATABASE()
AND COLUMN_NAME='is404'
AND TABLE_NAME=%s
SQL
			, $hitTable));
		if ($has404) {
			$wpdb->query(<<<SQL
UPDATE $hitTable
SET statusCode= CASE
WHEN is404=1 THEN 404
ELSE 200
END
SQL
			);

			$wpdb->query("ALTER TABLE $hitTable DROP COLUMN `is404`");
		}

		$loginsTable = wfDB::networkTable('wfLogins');
		$hasHitID = $wpdb->get_col($wpdb->prepare(<<<SQL
SELECT * FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA=DATABASE()
AND COLUMN_NAME='hitID'
AND TABLE_NAME=%s
SQL
			, $loginsTable));
		if (!$hasHitID) {
			$wpdb->query("ALTER TABLE $loginsTable ADD COLUMN hitID int(11) DEFAULT NULL AFTER `id`, ADD INDEX(hitID)");
		}

		if (!WFWAF_SUBDIRECTORY_INSTALL) {
			wfWAFConfig::set('wafDisabled', false);
		}

		// Call this before creating the index in cases where the wp-cron isn't running.
		self::trimWfHits(true);
		$hitsTable = wfDB::networkTable('wfHits');
		$hasAttackLogTimeIndex = $wpdb->get_var($wpdb->prepare(<<<SQL
SELECT COLUMN_KEY FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = %s
AND COLUMN_NAME = 'attackLogTime'
SQL
			, $hitsTable));

		if (!$hasAttackLogTimeIndex) {
			$wpdb->query("ALTER TABLE $hitsTable ADD INDEX `attackLogTime` (`attackLogTime`)");
		}
		
		//6.1.16
		$allowed404s = wfConfig::get('allowed404s', '');
		if (!wfConfig::get('allowed404s6116Migration', false)) {
			if (!preg_match('/(?:^|\b)browserconfig\.xml(?:\b|$)/i', $allowed404s)) {
				if (strlen($allowed404s) > 0) {
					$allowed404s .= "\n";
				}
				$allowed404s .= "/browserconfig.xml";
				wfConfig::set('allowed404s', $allowed404s);
			}
			
			wfConfig::set('allowed404s6116Migration', 1);
		}
		if (wfConfig::get('email_summary_interval') == 'biweekly') {
			wfConfig::set('email_summary_interval', 'weekly');
		}
		
		//6.2.0
		wfConfig::migrateCodeExecutionForUploadsPHP7();
		
		//6.2.3
		if (!WFWAF_SUBDIRECTORY_INSTALL && class_exists('wfWAFIPBlocksController')) {
			wfWAFIPBlocksController::setNeedsSynchronizeConfigSettings(); //changed slightly for 7.0.1
		}
		
		//6.2.8
		wfCache::removeCaching();
		
		//6.2.10
		$snipCacheTable = wfDB::networkTable('wfSNIPCache');
		$hasType = $wpdb->get_col($wpdb->prepare(<<<SQL
SELECT * FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA=DATABASE()
AND COLUMN_NAME='type'
AND TABLE_NAME=%s
SQL
			, $snipCacheTable));
		if (!$hasType) {
			$wpdb->query("ALTER TABLE `{$snipCacheTable}` ADD `type` INT  UNSIGNED  NOT NULL  DEFAULT '0'");
			$wpdb->query("ALTER TABLE `{$snipCacheTable}` ADD INDEX (`type`)");
		}
		
		//6.3.5
		$fileModsTable = wfDB::networkTable('wfFileMods');
		$hasStoppedOn = $wpdb->get_col($wpdb->prepare(<<<SQL
SELECT * FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA=DATABASE()
AND COLUMN_NAME='stoppedOnSignature'
AND TABLE_NAME=%s
SQL
			, $fileModsTable));
		if (!$hasStoppedOn) {
			$wpdb->query("ALTER TABLE {$fileModsTable} ADD COLUMN stoppedOnSignature VARCHAR(255) NOT NULL DEFAULT ''");
			$wpdb->query("ALTER TABLE {$fileModsTable} ADD COLUMN stoppedOnPosition INT UNSIGNED NOT NULL DEFAULT '0'");
		}
		
		$blockedIPLogTable = wfDB::networkTable('wfBlockedIPLog');
		$hasType = $wpdb->get_col($wpdb->prepare(<<<SQL
SELECT * FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA=DATABASE()
AND COLUMN_NAME='blockType'
AND TABLE_NAME=%s
SQL
			, $blockedIPLogTable));
		if (!$hasType) {
			$wpdb->query("ALTER TABLE {$blockedIPLogTable} ADD blockType VARCHAR(50) NOT NULL DEFAULT 'generic'");
			$wpdb->query("ALTER TABLE {$blockedIPLogTable} DROP PRIMARY KEY");
			$wpdb->query("ALTER TABLE {$blockedIPLogTable} ADD PRIMARY KEY (IP, unixday, blockType)");
		}
		
		//6.3.6
		if (!wfConfig::get('migration636_email_summary_excluded_directories')) {
			$excluded_directories = explode(',', (string) wfConfig::get('email_summary_excluded_directories'));
			$key = array_search('wp-content/plugins/wordfence/tmp', $excluded_directories); if ($key !== false) { unset($excluded_directories[$key]); }
			$key = array_search('wp-content/wflogs', $excluded_directories); if ($key === false) { $excluded_directories[] = 'wp-content/wflogs'; }
			wfConfig::set('email_summary_excluded_directories', implode(',', $excluded_directories));
			wfConfig::set('migration636_email_summary_excluded_directories', 1, wfConfig::DONT_AUTOLOAD);
		}
    
		$fileModsTable = wfDB::networkTable('wfFileMods');
		$hasSHAC = $wpdb->get_col($wpdb->prepare(<<<SQL
SELECT * FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA=DATABASE()
AND COLUMN_NAME='SHAC'
AND TABLE_NAME=%s
SQL
			, $fileModsTable));
		if (!$hasSHAC) {
			$wpdb->query("ALTER TABLE {$fileModsTable} ADD COLUMN `SHAC` BINARY(32) NOT NULL DEFAULT '' AFTER `newMD5`");
			$wpdb->query("ALTER TABLE {$fileModsTable} ADD COLUMN `isSafeFile` VARCHAR(1) NOT NULL  DEFAULT '?' AFTER `stoppedOnPosition`");
		}
		
		//6.3.7
		$hooverTable = wfDB::networkTable('wfHoover');
		$hostKeySize = $wpdb->get_var($wpdb->prepare(<<<SQL
SELECT CHARACTER_MAXIMUM_LENGTH FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA=DATABASE()
AND COLUMN_NAME='hostKey'
AND TABLE_NAME=%s
SQL
			, $hooverTable));
		if ($hostKeySize < 124) {
			$wpdb->query("ALTER TABLE {$hooverTable} CHANGE `hostKey` `hostKey` VARBINARY(124) NULL DEFAULT NULL");
		}
		
		//6.3.15
		$scanFileContents = wfConfig::get('scansEnabled_fileContents', false);
		if (!wfConfig::get('fileContentsGSB6315Migration', false)) {
			if (!$scanFileContents) {
				wfConfig::set('scansEnabled_fileContentsGSB', false);
			}
			wfConfig::set('fileContentsGSB6315Migration', 1);
		}
		
		//6.3.20
		$lastBlockAggregation = wfConfig::get('lastBlockAggregation', 0);
		if ($lastBlockAggregation == 0) {
			wfConfig::set('lastBlockAggregation', time());
		}
		
		//7.0.1
		//---- Config Migration
		if (!wfConfig::get('config701Migration', false)) {
			//loginSec_strongPasswds gains a toggle
			if (wfConfig::get('loginSec_strongPasswds') == '') {
				wfConfig::set('loginSec_strongPasswds', 'pubs');
				wfConfig::set('loginSec_strongPasswds_enabled', false);
			}
			
			$limitedOptions = wfScanner::limitedScanTypeOptions();
			$standardOptions = wfScanner::standardScanTypeOptions();
			$highSensitivityOptions = wfScanner::highSensitivityScanTypeOptions();
			$settings = wfScanner::customScanTypeOptions();
			if ($settings == $limitedOptions) { wfConfig::set('scanType', wfScanner::SCAN_TYPE_LIMITED); }
			else if ($settings == $standardOptions) { wfConfig::set('scanType', wfScanner::SCAN_TYPE_STANDARD); }
			else if ($settings == $highSensitivityOptions) { wfConfig::set('scanType', wfScanner::SCAN_TYPE_HIGH_SENSITIVITY); }
			else { wfConfig::set('scanType', wfScanner::SCAN_TYPE_CUSTOM); }
			
			if (wfConfig::get('isPaid')) {
				wfConfig::set('keyType', wfLicense::KEY_TYPE_PAID_CURRENT);
			}
			
			wfConfig::remove('premiumAutoRenew');
			wfConfig::remove('premiumNextRenew');
			wfConfig::remove('premiumPaymentExpiring');
			wfConfig::remove('premiumPaymentExpired');
			wfConfig::remove('premiumPaymentMissing');
			wfConfig::remove('premiumPaymentHold');
			
			wfConfig::set('config701Migration', 1);
		}
		
		//---- wfBlocks migration
		$oldBlocksTable = wfDB::networkTable('wfBlocks');
		$blocksTable = wfBlock::blocksTable();
		$oldBlocksExist = $wpdb->get_col($wpdb->prepare(<<<SQL
SELECT TABLE_NAME FROM information_schema.TABLES
WHERE TABLE_SCHEMA=DATABASE()
AND TABLE_NAME=%s
SQL
			, $oldBlocksTable));
		if ($oldBlocksExist && !wfConfig::get('blocks701Migration', false)) {
			//wfBlocks migration
			$query = $wpdb->prepare("INSERT INTO `{$blocksTable}` (`type`, `IP`, `blockedTime`, `reason`, `lastAttempt`, `blockedHits`, `expiration`) SELECT CASE 
WHEN wfsn = 1 AND permanent = 0 THEN %d
WHEN wfsn = 0 AND permanent = 0 THEN %d
WHEN wfsn = 0 AND permanent = 1 THEN %d
END AS `type`, `IP`, `blockedTime`, `reason`, `lastAttempt`, `blockedHits`, CASE 
WHEN wfsn = 1 AND permanent = 0 THEN (`blockedTime` + 600)
WHEN wfsn = 0 AND permanent = 0 THEN (`blockedTime` + %d)
WHEN wfsn = 0 AND permanent = 1 THEN 0
END AS `expiration` FROM `{$oldBlocksTable}`", wfBlock::TYPE_WFSN_TEMPORARY, wfBlock::TYPE_RATE_BLOCK, wfBlock::TYPE_IP_AUTOMATIC_PERMANENT, wfConfig::get('blockedTime'));
			$wpdb->query($query);
			
			//wfBlocksAdv migration
			$advancedBlocksTable = wfDB::networkTable('wfBlocksAdv');
			$advancedBlocks = $wpdb->get_results("SELECT * FROM {$advancedBlocksTable}", ARRAY_A);
			foreach ($advancedBlocks as $b) {
				$blockType = $b['blockType']; //unused
				$blockString = $b['blockString'];
				$ctime = (int) $b['ctime'];
				$reason = $b['reason'];
				$totalBlocked = (int) $b['totalBlocked'];
				$lastBlocked = (int) $b['lastBlocked'];
				
				list($ipRange, $uaRange, $referrer, $hostname) = explode('|', $blockString);
				
				wfBlock::createPattern($reason, $ipRange, $hostname, $uaRange, $referrer, wfBlock::DURATION_FOREVER, $ctime, $lastBlocked, $totalBlocked);
			}
			
			//throttle migration
			$throttleTable = wfDB::networkTable('wfThrottleLog');
			$throttles = $wpdb->get_results("SELECT * FROM {$throttleTable}", ARRAY_A);
			foreach ($throttles as $t) {
				$ip = wfUtils::inet_ntop($t['IP']);
				$startTime = (int) $t['startTime'];
				$endTime = (int) $t['endTime'];
				$timesThrottled = (int) $t['timesThrottled'];
				$reason = $t['lastReason'];
				
				wfBlock::createRateThrottle($reason, $ip, wfBlock::rateLimitThrottleDuration(), $startTime, $endTime, $timesThrottled);
			}
			
			//lockout migration
			$lockoutTable = wfDB::networkTable('wfLockedOut');
			$lockouts = $wpdb->get_results("SELECT * FROM {$lockoutTable}", ARRAY_A);
			foreach ($lockouts as $l) {
				$ip = wfUtils::inet_ntop($l['IP']);
				$blockedTime = (int) $l['blockedTime'];
				$reason = $l['reason'];
				$lastAttempt = (int) $l['lastAttempt'];
				$blockedHits = (int) $l['blockedHits'];
				
				wfBlock::createLockout($reason, $ip, wfBlock::lockoutDuration(), $blockedTime, $lastAttempt, $blockedHits);
			}
			
			//country blocking migration
			$countries = wfConfig::get('cbl_countries', false);
			if ($countries) {
				$countries = explode(',', $countries);
				wfBlock::createCountry(__('Automatically generated from previous country blocking settings', 'wordfence'), wfConfig::get('cbl_loginFormBlocked', false), wfConfig::get('cbl_restOfSiteBlocked', false), $countries);
			}
			
			wfConfig::set('blocks701Migration', 1);
		}
		
		//---- wfIssues/wfPendingIssues Schema Change
		$issuesTable = wfDB::networkTable('wfIssues');
		$pendingIssuesTable = wfDB::networkTable('wfPendingIssues');
		$hasLastUpdated = $wpdb->get_col($wpdb->prepare(<<<SQL
SELECT * FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA=DATABASE()
AND COLUMN_NAME='lastUpdated'
AND TABLE_NAME=%s
SQL
			, $issuesTable));
		if (!$hasLastUpdated) {
			$wpdb->query("ALTER TABLE `{$issuesTable}` ADD `lastUpdated` INT UNSIGNED NOT NULL AFTER `time`");
			$wpdb->query("ALTER TABLE `{$issuesTable}` ADD INDEX (`lastUpdated`)");
			$wpdb->query("ALTER TABLE `{$issuesTable}` ADD INDEX (`status`)");
			$wpdb->query("ALTER TABLE `{$issuesTable}` ADD INDEX (`ignoreP`)");
			$wpdb->query("ALTER TABLE `{$issuesTable}` ADD INDEX (`ignoreC`)");
			$wpdb->query("UPDATE `{$issuesTable}` SET `lastUpdated` = `time` WHERE `lastUpdated` = 0");
			
			$wpdb->query("ALTER TABLE `{$pendingIssuesTable}` ADD `lastUpdated` INT UNSIGNED NOT NULL AFTER `time`");
			$wpdb->query("ALTER TABLE `{$pendingIssuesTable}` ADD INDEX (`lastUpdated`)");
			$wpdb->query("ALTER TABLE `{$pendingIssuesTable}` ADD INDEX (`status`)");
			$wpdb->query("ALTER TABLE `{$pendingIssuesTable}` ADD INDEX (`ignoreP`)");
			$wpdb->query("ALTER TABLE `{$pendingIssuesTable}` ADD INDEX (`ignoreC`)");
		}
		
		//---- Scheduled scan start hour and manual type
		if (wfConfig::get('schedStartHour') < 0) {
			wfConfig::set('schedStartHour', wfWAFUtils::random_int(0, 23));
			
			if (wfConfig::get('schedMode') == 'manual') {
				$sched = wfConfig::get_ser('scanSched', array());
				if (is_array($sched) && is_array($sched[0])) { //Try to determine the closest matching value for manualScanType
					$hours = array_fill(0, 24, 0);
					$distinctHours = array();
					$days = array_fill(0, 7, 0);
					$distinctDays = array();
					foreach ($sched as $dayIndex => $day) {
						foreach ($day as $h => $enabled) {
							if ($enabled) {
								if (in_array($h, $distinctHours)) {
									$distinctHours[] = $h;
								}
								$hours[$h]++;
								if (in_array($dayIndex, $distinctDays)) {
									$distinctDays[] = $dayIndex;
								}
								$days[$dayIndex]++;
							}
						}
					}
					
					sort($distinctHours, SORT_NUMERIC);
					sort($distinctDays, SORT_NUMERIC);
					if (count($distinctDays) == 7) {
						if (count($distinctHours) == 1) {
							wfConfig::set('manualScanType', wfScanner::MANUAL_SCHEDULING_ONCE_DAILY);
							wfConfig::set('schedStartHour', $distinctHours[0]);
						}
						else if (count($distinctHours) == 2) {
							$matchesTwiceDaily = false;
							if ($distinctHours[0] + 12 == $distinctHours[1]) {
								$matchesTwiceDaily = true;
								foreach ($sched as $dayIndex => $day) {
									if (!$day[$distinctHours[0]] || !$day[$distinctHours[1]]) {
										$matchesTwiceDaily = false;
									}
								}
							}
							
							if ($matchesTwiceDaily) {
								wfConfig::set('manualScanType', wfScanner::MANUAL_SCHEDULING_TWICE_DAILY);
								wfConfig::set('schedStartHour', $distinctHours[0]);
							}
							else {
								wfConfig::set('manualScanType', wfScanner::MANUAL_SCHEDULING_CUSTOM);
							}
						}
						else {
							wfConfig::set('manualScanType', wfScanner::MANUAL_SCHEDULING_CUSTOM);
						}
					}
					else if (count($distinctDays) == 5 && count($distinctHours) == 1) {
						if ($days[2] == 0 && $days[4] == 0 && $hours[$distinctHours[0]] == 5) {
							wfConfig::set('manualScanType', wfScanner::MANUAL_SCHEDULING_ODD_DAYS_WEEKENDS);
							wfConfig::set('schedStartHour', $distinctHours[0]);
						}
						else if ($days[0] == 0 && $days[6] == 0 && $hours[$distinctHours[0]] == 5) {
							wfConfig::set('manualScanType', wfScanner::MANUAL_SCHEDULING_WEEKDAYS);
							wfConfig::set('schedStartHour', $distinctHours[0]);
						}
						else {
							wfConfig::set('manualScanType', wfScanner::MANUAL_SCHEDULING_CUSTOM);
						}
					}
					else if (count($distinctDays) == 2 && count($distinctHours) == 1) {
						if ($distinctDays[0] == 0 && $distinctDays[1] == 6 && $hours[$distinctHours[0]] == 2) {
							wfConfig::set('manualScanType', wfScanner::MANUAL_SCHEDULING_WEEKENDS);
							wfConfig::set('schedStartHour', $distinctHours[0]);
						}
						else {
							wfConfig::set('manualScanType', wfScanner::MANUAL_SCHEDULING_CUSTOM);
						}
					}
					else {
						wfConfig::set('manualScanType', wfScanner::MANUAL_SCHEDULING_CUSTOM);
					}
				}
				//manualScanType
			}
		}
		
		//---- Onboarding
		if (!$freshAPIKey) {
			wfOnboardingController::migrateOnboarding();
		}
		
		//7.0.2
		if (!wfConfig::get('blocks702Migration')) {
			$blocksTable = wfBlock::blocksTable();
			
			$query = "UPDATE `{$blocksTable}` SET `type` = %d WHERE `type` = %d AND `parameters` IS NOT NULL AND `parameters` LIKE '%\"ipRange\"%'";
			$wpdb->query($wpdb->prepare($query, wfBlock::TYPE_PATTERN, wfBlock::TYPE_IP_AUTOMATIC_PERMANENT));
			
			$countryBlock = wfBlock::countryBlocks();
			if (!count($countryBlock)) {
				$query = "UPDATE `{$blocksTable}` SET `type` = %d WHERE `type` = %d AND `parameters` IS NOT NULL AND `parameters` LIKE '%\"blockLogin\"%' LIMIT 1";
				$wpdb->query($wpdb->prepare($query, wfBlock::TYPE_COUNTRY, wfBlock::TYPE_IP_AUTOMATIC_PERMANENT));
			}
			
			$query = "DELETE FROM `{$blocksTable}` WHERE `type` = %d AND `parameters` IS NOT NULL AND `parameters` LIKE '%\"blockLogin\"%'";
			$wpdb->query($wpdb->prepare($query, wfBlock::TYPE_IP_AUTOMATIC_PERMANENT));
			
			wfConfig::set('blocks702Migration', 1);
		}
		
		//7.0.3
		/*if (!wfConfig::get('generateAllOptionsNotification')) {
			new wfNotification(null, wfNotification::PRIORITY_HIGH_WARNING, '<p>Developers: If you prefer to edit all Wordfence options on one page, you can enable the "All Options" page here:</p>
<p><a href="javascript:WFAD.enableAllOptionsPage();" class="wf-btn wf-btn-primary wf-btn-callout-subtle">Enable "All Options" Page</a></p>', 'wfplugin_devalloptions');
			wfConfig::set('generateAllOptionsNotification', 1);
		}*/
		
		//7.1.9
		if (wfConfig::get('loginSec_maxFailures') == 1) {
			wfConfig::set('loginSec_maxFailures', 2);
		}
		
		$blocksTable = wfBlock::blocksTable();
		$patternBlocks = wfBlock::patternBlocks();
		foreach ($patternBlocks as $b) {
			if (!empty($b->ipRange) && preg_match('/^\d+\-\d+$/', $b->ipRange)) { //Old-style range block using long2ip
				$ipRange = new wfUserIPRange($b->ipRange);
				$ipRange = $ipRange->getIPString();
				
				$parameters = $b->parameters;
				$parameters['ipRange'] = $ipRange;
				$wpdb->query($wpdb->prepare("UPDATE `{$blocksTable}` SET `parameters` = %s WHERE `id` = %d", json_encode($parameters), $b->id));
			}
		}
		
		wfConfig::set('needsGeoIPSync', true, wfConfig::DONT_AUTOLOAD);

		// Set the default scan options based on scan type.
		if (!wfConfig::get('config720Migration', false)) {
			// Replace critical/warning checkboxes with setting based on numeric severity value.
			if (wfConfig::hasCachedOption('alertOn_critical') && wfConfig::hasCachedOption('alertOn_warnings')) {
				$alertOnCritical = wfConfig::get('alertOn_critical');
				$alertOnWarnings = wfConfig::get('alertOn_warnings');
				wfConfig::set('alertOn_scanIssues', $alertOnCritical || $alertOnWarnings);
				if ($alertOnCritical && ! $alertOnWarnings) {
					wfConfig::set('alertOn_severityLevel', wfIssues::SEVERITY_HIGH);
				} else {
					wfConfig::set('alertOn_severityLevel', wfIssues::SEVERITY_LOW);
				}
			}

			// Update severity for existing issues where they are still using the old severity values.
			foreach (wfIssues::$issueSeverities as $issueType => $severity) {
				$wpdb->query($wpdb->prepare("UPDATE $issuesTable SET severity = %d 
				WHERE `type` = %s
				AND severity in (0,1,2)
				", $severity, $issueType));
			}

			$syncedOptions = array();
			switch (wfConfig::get('scanType')) {
				case wfScanner::SCAN_TYPE_LIMITED:
					$syncedOptions = wfScanner::limitedScanTypeOptions();
					break;
				case wfScanner::SCAN_TYPE_STANDARD:
					$syncedOptions = wfScanner::standardScanTypeOptions();
					break;
				case wfScanner::SCAN_TYPE_HIGH_SENSITIVITY:
					$syncedOptions = wfScanner::highSensitivityScanTypeOptions();
					break;
			}
			if ($syncedOptions) {
				foreach ($syncedOptions as $key => $value) {
					if (is_bool($value)) {
						wfConfig::set($key, $value ? 1 : 0);
					}
				}
			}

			wfConfig::set('config720Migration', true);
		}
		
		//7.2.3
		if (wfConfig::get('waf_status') === false) {
			$firewall = new wfFirewall();
			$firewall->syncStatus(true);
		}
		
		//7.3.1
		//---- drop long deprecated tables
		$tables = array('wfBadLeechers', 'wfBlockedCommentLog', 'wfBlocks', 'wfBlocksAdv', 'wfLeechers', 'wfLockedOut', 'wfNet404s', 'wfScanners', 'wfThrottleLog', 'wfVulnScanners');
		foreach ($tables as $t) {
			$schema->drop($t);
		}

		//7.5.10
		$knownFilesTable = wfDB::networkTable('wfKnownFileList');
		$wordpressPathColumn = $wpdb->get_row($wpdb->prepare("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = %s AND COLUMN_NAME = 'wordpress_path'", $knownFilesTable));
		if ($wordpressPathColumn === null) {
			$wpdb->query("DELETE FROM `{$knownFilesTable}`");
			$wpdb->query("ALTER TABLE `{$knownFilesTable}` ADD COLUMN wordpress_path TEXT NOT NULL");
		}

		$realPathColumn = $wpdb->get_row($wpdb->prepare("SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = %s AND COLUMN_NAME = 'real_path'", $fileModsTable));
		if ($realPathColumn === null) {
			$wpdb->query("DELETE FROM `{$fileModsTable}`");
			$wpdb->query("ALTER TABLE `{$fileModsTable}` ADD COLUMN real_path TEXT NOT NULL AFTER filename");
		}

		//wfFileMods updates
		$wpdb->query("ALTER TABLE {$fileModsTable} ALTER COLUMN oldMD5 SET DEFAULT ''");
		
		//---- enable legacy 2fa if applicable
		if (wfConfig::get('isPaid') && (wfCredentialsController::hasOld2FARecords() || version_compare(phpversion(), '5.3', '<'))) {
			wfConfig::set(wfCredentialsController::ALLOW_LEGACY_2FA_OPTION, true);
		}
		
		//Record the installation timestamp if activating the plugin for the first time
		if (get_option('wordfenceActivated') != 1 && wfConfig::get('satisfactionPromptInstallDate') == 0 && empty(wfConfig::get('apiKey'))) {
			wfConfig::set('satisfactionPromptInstallDate', time());
		}

		//Check the How does Wordfence get IPs setting
		wfUtils::requestDetectProxyCallback();
		
		//Install new schedule. If schedule config is blank it will install the default 'auto' schedule.
		wfScanner::shared()->scheduleScans();
		
		//Check our minimum versions and generate the necessary warnings
		if (!wp_next_scheduled('wordfence_version_check')) {
			wp_schedule_single_event(time(), 'wordfence_version_check');
		}

		//Must be the final line
	}
	private static function doEarlyAccessLogging(){
		$wfLog = self::getLog();
		if($wfLog->logHitOK()){
			$request = $wfLog->getCurrentRequest();

			if(is_404()){
				if ($request) {
					$request->statusCode = 404;
				}
				$wfLog->logLeechAndBlock('404');
			} else {
				$wfLog->logLeechAndBlock('hit');
			}
		}
	}
	public static function initProtection(){ //Basic protection during WAF learning period
		// Infinite WP Client - Authentication Bypass < 1.9.4.5
		// https://wpvulndb.com/vulnerabilities/10011
		$iwpRule = new wfWAFRule(wfWAF::getInstance(), 0x80000000, null, 'auth-bypass', 100, 'Infinite WP Client - Authentication Bypass < 1.9.4.5', 0, 'block', null);
		wfWAF::getInstance()->setRules(wfWAF::getInstance()->getRules() + array(0x80000000 => $iwpRule));

		if (strrpos(wfWAF::getInstance()->getRequest()->getRawBody(), '_IWP_JSON_PREFIX_') !== false) {
			$iwpRequestDataArray = explode('_IWP_JSON_PREFIX_', wfWAF::getInstance()->getRequest()->getRawBody());
			$iwpRequest = json_decode(trim(base64_decode($iwpRequestDataArray[1])), true);
			if (is_array($iwpRequest)) {
				if (array_key_exists('iwp_action', $iwpRequest) &&
					($iwpRequest['iwp_action'] === 'add_site' || $iwpRequest['iwp_action'] === 'readd_site')
				) {
					require_once ABSPATH . '/wp-admin/includes/plugin.php';
					if (is_plugin_active('iwp-client/init.php')) {
						$iwpPluginData = get_plugin_data(WP_PLUGIN_DIR . '/iwp-client/init.php');
						if (version_compare('1.9.4.5', $iwpPluginData['Version'], '>')) {
							remove_action('setup_theme', 'iwp_mmb_set_request');
						}
					}

					if ((is_multisite() ? get_site_option('iwp_client_action_message_id') : get_option('iwp_client_action_message_id')) &&
						(is_multisite() ? get_site_option('iwp_client_public_key') : get_option('iwp_client_public_key'))
					) {
						wfWAF::getInstance()->getStorageEngine()->logAttack(array($iwpRule), 'request.rawBody',
							wfWAF::getInstance()->getRequest()->getRawBody(),
							wfWAF::getInstance()->getRequest(),
							wfWAF::getInstance()->getRequest()->getMetadata()
						);
					}
				}
			}
		}
	}
	public static function install_actions(){
		register_activation_hook(WORDFENCE_FCPATH, 'wordfence::installPlugin');
		register_deactivation_hook(WORDFENCE_FCPATH, 'wordfence::uninstallPlugin');

		$versionInOptions = ((is_multisite() && function_exists('get_network_option')) ? get_network_option(null, 'wordfence_version', false) : get_option('wordfence_version', false));
		if( (! $versionInOptions) || version_compare(WORDFENCE_VERSION, $versionInOptions, '>')){
			//Either there is no version in options or the version in options is greater and we need to run the upgrade
			self::runInstall();
		}
		
		self::getLog()->initLogRequest();
		
		//Fix wp_mail bug when $_SERVER['SERVER_NAME'] is undefined
		add_filter('wp_mail_from', 'wordfence::fixWPMailFromAddress');

		//These access wfConfig::get('apiKey') and will fail if runInstall hasn't executed.
		if(defined('MULTISITE') && MULTISITE === true){
			global $blog_id;
			if($blog_id == 1 && get_option('wordfenceActivated') != 1){ return; } //Because the plugin is active once installed, even before it's network activated, for site 1 (WordPress team, why?!)
		}
		//User may be logged in or not, so register both handlers
		add_action('wp_ajax_nopriv_wordfence_lh', 'wordfence::ajax_lh_callback');
		add_action('wp_ajax_nopriv_wordfence_doScan', 'wordfence::ajax_doScan_callback');
		add_action('wp_ajax_nopriv_wordfence_testAjax', 'wordfence::ajax_testAjax_callback');
		if(wfUtils::hasLoginCookie()){ //may be logged in. Fast way to check. These aren't secure functions, this is just a perf optimization, along with every other use of hasLoginCookie()
			add_action('wp_ajax_wordfence_lh', 'wordfence::ajax_lh_callback');
			add_action('wp_ajax_wordfence_doScan', 'wordfence::ajax_doScan_callback');
			add_action('wp_ajax_wordfence_testAjax', 'wordfence::ajax_testAjax_callback');

			if (is_multisite()) {
				add_action('wp_network_dashboard_setup', 'wordfence::addDashboardWidget');
			} else {
				add_action('wp_dashboard_setup', 'wordfence::addDashboardWidget');
			}
		}
		
		add_action('wp_ajax_wordfence_wafStatus', 'wordfence::ajax_wafStatus_callback');
		add_action('wp_ajax_nopriv_wordfence_wafStatus', 'wordfence::ajax_wafStatus_callback');
		
		add_action('wp_ajax_nopriv_wordfence_remoteVerifySwitchTo2FANew', 'wordfence::ajax_remoteVerifySwitchTo2FANew_callback');

		add_action('wordfence_start_scheduled_scan', 'wordfence::wordfenceStartScheduledScan');
		add_action('wordfence_daily_cron', 'wordfence::dailyCron');
		add_action('wordfence_daily_autoUpdate', 'wfConfig::autoUpdate');
		add_action('wordfence_hourly_cron', 'wordfence::hourlyCron');
		add_action('wordfence_version_check', array(wfVersionCheckController::shared(), 'checkVersionsAndWarn'));
		add_action('plugins_loaded', 'wordfence::veryFirstAction');
		add_action('init', 'wordfence::initAction');
		//add_action('admin_bar_menu', 'wordfence::admin_bar_menu', 99);
		add_action('template_redirect', 'wordfence::templateRedir', 1001);
		add_action('shutdown', 'wordfence::shutdownAction');
		
		if (!wfConfig::get('ajaxWatcherDisabled_front')) {
			add_action('wp_enqueue_scripts', 'wordfence::enqueueAJAXWatcher');
		}
		if (!wfConfig::get('ajaxWatcherDisabled_admin')) {
			add_action('admin_enqueue_scripts', 'wordfence::enqueueAJAXWatcher');
		}
		
		//add_action('wp_enqueue_scripts', 'wordfence::enqueueDashboard');
		add_action('admin_enqueue_scripts', 'wordfence::enqueueDashboard');
		
		add_action('wp_authenticate','wordfence::authAction', 1, 2);
		add_action('wp_authenticate_user', 'wordfence::authUserAction', 1, 2); //A secondary lockout check for plugins that override the login flow and don't call the complete set of hooks
		add_filter('authenticate', 'wordfence::authenticateFilter', 99, 3);
		
		$lockout = wfBlock::lockoutForIP(wfUtils::getIP());
		if ($lockout !== false) {
			add_filter('xmlrpc_enabled', '__return_false');
		}

		add_action('login_init','wordfence::loginInitAction');
		add_action('wp_login','wordfence::loginAction');
		add_action('wp_logout','wordfence::logoutAction');
		add_action('lostpassword_post', 'wordfence::lostPasswordPost', 1, 2);
		
		$allowSeparatePrompt = ini_get('output_buffering') > 0;
		if (wfConfig::get('loginSec_enableSeparateTwoFactor') && $allowSeparatePrompt) {
			add_action('login_form', 'wordfence::showTwoFactorField');
		}
		
		if(wfUtils::hasLoginCookie()){
			add_action('user_profile_update_errors', 'wordfence::validateProfileUpdate', 0, 3 );
			add_action('profile_update', 'wordfence::profileUpdateAction', 99, 2);
		}
		
		add_action('validate_password_reset', 'wordfence::validatePassword', 10, 2);

		// Add actions for the email summary
		add_action('wordfence_email_activity_report', array('wfActivityReport', 'executeCronJob'));

		//For debugging
		//add_filter( 'cron_schedules', 'wordfence::cronAddSchedules' );

		add_filter('wp_redirect', 'wordfence::wpRedirectFilter', 99, 2);
		add_filter('wp_redirect_status', 'wordfence::wpRedirectStatusFilter', 99, 2);
		//html|xhtml|atom|rss2|rdf|comment|export
		if(wfConfig::get('other_hideWPVersion')){
			add_filter('style_loader_src', 'wordfence::replaceVersion');
			add_filter('script_loader_src', 'wordfence::replaceVersion');

			add_action('upgrader_process_complete', 'wordfence::hideReadme');
		}
		add_filter('get_the_generator_html', 'wordfence::genFilter', 99, 2);
		add_filter('get_the_generator_xhtml', 'wordfence::genFilter', 99, 2);
		add_filter('get_the_generator_atom', 'wordfence::genFilter', 99, 2);
		add_filter('get_the_generator_rss2', 'wordfence::genFilter', 99, 2);
		add_filter('get_the_generator_rdf', 'wordfence::genFilter', 99, 2);
		add_filter('get_the_generator_comment', 'wordfence::genFilter', 99, 2);
		add_filter('get_the_generator_export', 'wordfence::genFilter', 99, 2);
		add_filter('registration_errors', 'wordfence::registrationFilter', 99, 3);
		add_filter('woocommerce_new_customer_data', 'wordfence::wooRegistrationFilter', 99, 1);
		
		if (wfConfig::get('loginSec_disableAuthorScan')) {
			add_filter('oembed_response_data', 'wordfence::oembedAuthorFilter', 99, 4);
			add_filter('rest_request_before_callbacks', 'wordfence::jsonAPIAuthorFilter', 99, 3);
			add_filter('rest_post_dispatch', 'wordfence::jsonAPIAdjustHeaders', 99, 3);
			add_filter('wp_sitemaps_users_pre_url_list', '__return_false', 99, 0);
			add_filter('wp_sitemaps_add_provider', 'wordfence::wpSitemapUserProviderFilter', 99, 2);
		}
		
		if (wfConfig::get('loginSec_disableApplicationPasswords')) {
			add_filter('wp_is_application_passwords_available', '__return_false');
			add_action('edit_user_profile', 'wordfence::showDisabledApplicationPasswordsMessage', -1);
			add_action('show_user_profile', 'wordfence::showDisabledApplicationPasswordsMessage', -1);

			// Override the wp_die handler to let the user know app passwords were disabled by the Wordfence option.
			if (!empty($_SERVER['SCRIPT_FILENAME']) && $_SERVER['SCRIPT_FILENAME'] === ABSPATH . 'wp-admin/authorize-application.php') {
				add_filter('wp_die_handler', function ($handler = null) {
					return function ($message, $title, $args) {
						if ($message === 'Application passwords are not available.') {
							$message = __('Application passwords have been disabled by Wordfence.', 'wordfence');
						}
						_default_wp_die_handler($message, $title, $args);
					};
				}, 10, 1);
			}
		}

		add_filter('rest_dispatch_request', 'wordfence::_filterCentralFromLiveTraffic', 99, 4);

		// Change GoDaddy's limit login mu-plugin since it can interfere with the two factor auth message.
		if (self::hasGDLimitLoginsMUPlugin()) {
			add_action('login_errors', array('wordfence', 'fixGDLimitLoginsErrors'), 11);
		}
		
		add_action('upgrader_process_complete', 'wfUpdateCheck::syncAllVersionInfo');
		add_action('upgrader_process_complete', 'wordfence::_scheduleRefreshUpdateNotification', 99, 2);
		add_action('automatic_updates_complete', 'wordfence::_scheduleRefreshUpdateNotification', 99, 0);
		add_action('wordfence_refreshUpdateNotification', 'wordfence::_refreshUpdateNotification', 99, 0);
		add_action('wordfence_completeCoreUpdateNotification', 'wordfence::_completeCoreUpdateNotification', 99, 0);
		
		add_action('wfls_xml_rpc_blocked', 'wordfence::checkSecurityNetwork');
		add_action('wfls_registration_blocked', 'wordfence::checkSecurityNetwork');
		add_action('wfls_activation_page_footer', 'wordfence::_outputLoginSecurityTour');
		add_action('wfls_settings_set', 'wordfence::queueCentralConfigurationSync', 10, 2);

		if(is_admin()){
			add_action('admin_init', 'wordfence::admin_init');
			add_action('admin_head', 'wordfence::_retargetWordfenceSubmenuCallout');
			if(is_multisite()){
				if(wfUtils::isAdminPageMU()){
					add_action('network_admin_menu', 'wordfence::admin_menus', 10);
					add_action('network_admin_menu', 'wordfence::admin_menus_20', 20);
					add_action('network_admin_menu', 'wordfence::admin_menus_30', 30);
					add_action('network_admin_menu', 'wordfence::admin_menus_40', 40);
					add_action('network_admin_menu', 'wordfence::admin_menus_50', 50);
					add_action('network_admin_menu', 'wordfence::admin_menus_60', 60);
					add_action('network_admin_menu', 'wordfence::admin_menus_70', 70);
					add_action('network_admin_menu', 'wordfence::admin_menus_80', 80);
					add_action('network_admin_menu', 'wordfence::admin_menus_85', 85);
					add_action('network_admin_menu', 'wordfence::admin_menus_90', 90);
				} //else don't show menu
			} else {
				add_action('admin_menu', 'wordfence::admin_menus', 10);
				add_action('admin_menu', 'wordfence::admin_menus_20', 20);
				add_action('admin_menu', 'wordfence::admin_menus_30', 30);
				add_action('admin_menu', 'wordfence::admin_menus_40', 40);
				add_action('admin_menu', 'wordfence::admin_menus_50', 50);
				add_action('admin_menu', 'wordfence::admin_menus_60', 60);
				add_action('admin_menu', 'wordfence::admin_menus_70', 70);
				add_action('admin_menu', 'wordfence::admin_menus_80', 80);
				add_action('admin_menu', 'wordfence::admin_menus_85', 85);
				add_action('admin_menu', 'wordfence::admin_menus_90', 90);
			}
			add_filter('plugin_action_links_' . plugin_basename(realpath(dirname(__FILE__) . '/../wordfence.php')), 'wordfence::_pluginPageActionLinks');
			add_filter('pre_current_active_plugins', 'wordfence::registerDeactivationPrompt');
		}

		add_action('request', 'wordfence::preventAuthorNScans');
		add_action('password_reset', 'wordfence::actionPasswordReset');

		$adminUsers = new wfAdminUserMonitor();
		if ($adminUsers->isEnabled()) {
			add_action('set_user_role', array($adminUsers, 'updateToUserRole'), 10, 3);
			add_action('grant_super_admin', array($adminUsers, 'grantSuperAdmin'), 10, 1);
			add_action('revoke_super_admin', array($adminUsers, 'revokeSuperAdmin'), 10, 1);
		} else if (wfConfig::get_ser('adminUserList', false)) {
			// reset this in the event it's disabled or the network is too large
			wfConfig::set_ser('adminUserList', false);
		}

		if (wfConfig::liveTrafficEnabled()) {
			add_action('wp_head', 'wordfence::wfLogHumanHeader');
			add_action('login_head', 'wordfence::wfLogHumanHeader');
		}

		add_action('wordfence_processAttackData', 'wordfence::processAttackData');
		if (!empty($_GET['wordfence_syncAttackData']) && get_site_option('wordfence_syncingAttackData') <= time() - 60 && get_site_option('wordfence_lastSyncAttackData', 0) < time() - 8) {
			@ignore_user_abort(true);
			update_site_option('wordfence_syncingAttackData', time());
			header('Content-Type: text/javascript');
			define('WORDFENCE_SYNCING_ATTACK_DATA', true);
			add_action('init', 'wordfence::syncAttackData', 10, 0);
			add_filter('woocommerce_unforce_ssl_checkout', '__return_false');
		}
		
		add_action('wordfence_batchReportBlockedAttempts', 'wordfence::wfsnBatchReportBlockedAttempts');
		add_action('wordfence_batchReportFailedAttempts', 'wordfence::wfsnBatchReportFailedAttempts');
		
		add_action('wordfence_batchSendSecurityEvents', 'wfCentral::sendPendingSecurityEvents');

		if (wfConfig::get('other_hideWPVersion')) {
			add_filter('update_feedback', 'wordfence::restoreReadmeForUpgrade');
		}

		add_action('rest_api_init', 'wordfence::initRestAPI');

		if (wfCentral::isConnected()) {
			add_action('wordfence_security_event', 'wfCentral::sendSecurityEvent', 10, 3);
		} else {
			add_action('wordfence_security_event', 'wfCentral::sendAlertCallback', 10, 3);
		}

		if (!wfConfig::get('wordfenceI18n', true)) {
			add_filter('gettext', function ($translation, $text, $domain) {
				if ($domain === 'wordfence') {
					return $text;
				}
				return $translation;
			}, 10, 3);
		}

		wfScanMonitor::registerActions();
		wfUpdateCheck::installPluginAPIFixer();
	}

	public static function registerDeactivationPrompt() {
		$deleteMain = (bool) wfConfig::get('deleteTablesOnDeact');
		$deleteLoginSecurity = (bool) \WordfenceLS\Controller_Settings::shared()->get('delete-deactivation');
		echo wfView::create(
			'offboarding/deactivation-prompt',
			array(
				'deactivationOption' => wfDeactivationOption::forState($deleteMain, $deleteLoginSecurity),
				'wafOptimized' => defined('WFWAF_AUTO_PREPEND') && WFWAF_AUTO_PREPEND && (!defined('WFWAF_SUBDIRECTORY_INSTALL') || !WFWAF_SUBDIRECTORY_INSTALL),
				'deactivate' => array_key_exists('wf_deactivate', $_GET)
			)
		)->render();
	}

	public static function showDisabledApplicationPasswordsMessage() {
		echo wfView::create('user/disabled-application-passwords', array('isAdmin' => self::isCurrentUserAdmin()))->render();
	}

	public static function _pluginPageActionLinks($links) {
		if (!wfConfig::get('isPaid')) {
			$links = array_merge(array('aWordfencePluginCallout' => '<a href="https://www.wordfence.com/zz12/wordfence-signup/" target="_blank" rel="noopener noreferrer"><strong style="color: #11967A; display: inline;">' . esc_html__('Upgrade To Premium', 'wordfence') . '</strong><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>'), $links);
		} 
		return $links;
	}
	
	public static function _outputLoginSecurityTour() {
		if (WORDFENCE_LS_FROM_CORE) {
			echo wfView::create('tours/login-security', array())->render();
		}
	}
	
	public static function fixWPMailFromAddress($from_email) {
		if ($from_email == 'wordpress@') { //$_SERVER['SERVER_NAME'] is undefined so we get an incomplete email address
			wordfence::status(4, 'info', __("wp_mail from address is incomplete, attempting to fix", 'wordfence'));
			$urls = array(get_site_url(), get_home_url());
			foreach ($urls as $u) {
				if (!empty($u)) {
					$u = preg_replace('#^[^/]*//+([^/]+).*$#', '\1', $u);
					if (substr($u, 0, 4) == 'www.') {
						$u = substr($u, 4);
					}
					
					if (!empty($u)) {
						wordfence::status(4, 'info', sprintf(/* translators: Email address. */ __("Fixing wp_mail from address: %s", 'wordfence'), $from_email . $u));
						return $from_email . $u;
					}
				}
			}
			
			//Can't fix it, return it as it was
		}
		return $from_email;
	}
	public static function wpRedirectFilter($location, $status) {
		self::getLog()->initLogRequest();
		self::getLog()->getCurrentRequest()->statusCode = $status;
		return $location;
	}
	public static function wpRedirectStatusFilter($status, $location) {
		self::getLog()->initLogRequest();
		self::getLog()->getCurrentRequest()->statusCode = $status;
		self::getLog()->logHit();
		return $status;
	}
	public static function enqueueAJAXWatcher() {
		$wafDisabled = !WFWAF_ENABLED || (class_exists('wfWAFConfig') && wfWAFConfig::isDisabled());
		if (wfUtils::isAdmin() && !$wafDisabled) {
			wp_enqueue_style('wordfenceAJAXcss', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wordfenceBox.css'), '', WORDFENCE_VERSION);
			wp_enqueue_script('wfi18njs', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/wfi18n.js'), array(), WORDFENCE_VERSION);
			wp_enqueue_script('wordfenceAJAXjs', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/admin.ajaxWatcher.js'), array('jquery'), WORDFENCE_VERSION);
			wp_localize_script('wordfenceAJAXjs', 'WFAJAXWatcherVars', array(
				'nonce' => wp_create_nonce('wf-waf-error-page'),
			));
			self::setupI18nJSStrings();
		}
	}

	private static function isWordfencePage($includeWfls = true) {
		return (isset($_GET['page']) && (preg_match('/^Wordfence/', @$_GET['page']) || ($includeWfls && $_GET['page'] == 'WFLS' && wfOnboardingController::shouldShowNewTour(wfOnboardingController::TOUR_LOGIN_SECURITY))));
	}

	private static function isWordfenceSubpage($page, $subpage) {
		return array_key_exists('page', $_GET) && $_GET['page'] == ('Wordfence' . ucfirst($page)) && array_key_exists('subpage', $_GET) && $_GET['subpage'] == $subpage;
	}

	public static function enqueueDashboard() {
		if (wfUtils::isAdmin()) {
			wp_enqueue_style('wf-adminbar', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wf-adminbar.css'), '', WORDFENCE_VERSION);
			wp_enqueue_style('wordfence-license-global-style', wfLicense::current()->getGlobalStylesheet(), '', WORDFENCE_VERSION);
			wp_enqueue_script('wordfenceDashboardjs', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/wfdashboard.js'), array('jquery'), WORDFENCE_VERSION);
			if (wfConfig::get('showAdminBarMenu')) {
				wp_enqueue_script('wordfencePopoverjs', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/wfpopover.js'), array('jquery'), WORDFENCE_VERSION);
				wp_localize_script('wordfenceDashboardjs', 'WFDashVars', array(
					'ajaxURL' => admin_url('admin-ajax.php'),
					'nonce' => wp_create_nonce('wp-ajax'),
				));
			}
		}
	}
	public static function ajax_testAjax_callback(){
		die("WFSCANTESTOK");
	}
	public static function ajax_doScan_callback(){
		@ignore_user_abort(true);
		self::$wordfence_wp_version = false;
		if (!defined('DONOTCACHEDB')) { define('DONOTCACHEDB', true); }
		//This is messy, but not sure of a better way to do this without guaranteeing we get $wp_version
		require(ABSPATH . 'wp-includes/version.php'); /** @var string $wp_version */
		self::$wordfence_wp_version = $wp_version;
		require_once(dirname(__FILE__) . '/wfScan.php');
		wfScan::wfScanMain();

	} //END doScan
	public static function ajax_lh_callback(){
		self::getLog()->canLogHit = false;
		$UA = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '';
		$isCrawler = empty($UA);
		if ($UA) {
			if (wfCrawl::isCrawler($UA) || wfCrawl::isGoogleCrawler()) {
				$isCrawler = true;
			}
		}

		@ob_end_clean();
		if(! headers_sent()){
			header('Content-type: text/javascript');
			header("Connection: close");
			header("Content-Length: 0");
			header("X-Robots-Tag: noindex");
			if (!$isCrawler) {
				wfLog::cacheHumanRequester(wfUtils::getIP(), $UA);
			}
		}
		flush();
		if (!$isCrawler && array_key_exists('hid', $_GET)) {
			$hid = $_GET['hid'];
			$hid = wfUtils::decrypt($hid);
			if (!is_string($hid) || !preg_match('/^\d+$/', $hid)) { exit(); }
			$db = new wfDB();
			$table_wfHits = wfDB::networkTable('wfHits');
			$db->queryWrite("update {$table_wfHits} set jsRun=1 where id=%d", $hid);
		}
		die("");
	}
	public static function ajaxReceiver(){
		if(! wfUtils::isAdmin()){
			wfUtils::send_json(array('errorMsg' => __("You appear to have logged out or you are not an admin. Please sign-out and sign-in again.", 'wordfence')));
		}
		$func = (isset($_POST['action']) && $_POST['action']) ? $_POST['action'] : $_GET['action'];
		$nonce = (isset($_POST['nonce']) && $_POST['nonce']) ? $_POST['nonce'] : $_GET['nonce'];
		if(! wp_verify_nonce($nonce, 'wp-ajax')){
			wfUtils::send_json(array('errorMsg' => __("Your browser sent an invalid security token to Wordfence. Please try reloading this page or signing out and in again.", 'wordfence'), 'tokenInvalid' => 1));
		}
		//func is e.g. wordfence_ticker so need to munge it
		$func = str_replace('wordfence_', '', $func);
		$returnArr = call_user_func('wordfence::ajax_' . $func . '_callback');
		if($returnArr === false){
			$returnArr = array('errorMsg' => __("Wordfence encountered an internal error executing that request.", 'wordfence'));
		}

		if(! is_array($returnArr)){
			error_log("Function " . wp_kses($func, array()) . " did not return an array and did not generate an error.");
			$returnArr = array();
		}
		if(isset($returnArr['nonce'])){
			error_log("Wordfence ajax function return an array with 'nonce' already set. This could be a bug.");
		}
		$returnArr['nonce'] = wp_create_nonce('wp-ajax');
		wfUtils::send_json($returnArr);
	}
	public static function ajax_remoteVerifySwitchTo2FANew_callback() {
		$payload = wfUtils::decodeJWT(wfConfig::get('new2FAMigrationNonce'));
		if (empty($payload)) {
			wfUtils::send_json(new stdClass()); //Ensures an object response
		}
		
		$package = wfCrypt::noc1_encrypt($payload);
		wfUtils::send_json($package);
	}
	public static function ajax_switchTo2FANew_callback() {
		$migrate = (isset($_POST['migrate']) && wfUtils::truthyToBoolean($_POST['migrate']));
		
		$twoFactorUsers = wfConfig::get_ser('twoFactorUsers', array());
		if ($migrate && is_array($twoFactorUsers) && !empty($twoFactorUsers)) {
			$smsActive = array();
			$authenticatorActive = array();
			foreach ($twoFactorUsers as &$t) {
				if ($t[3] == 'activated') {
					$user = new WP_User($t[0]);
					if ($user instanceof WP_User && $user->exists()) {
						if ((!isset($t[5]) || $t[5] != 'authenticator')) {
							$smsActive[] = $user->user_login;
						}
						else {
							$authenticatorActive[] = $t[6];
						}
					}
				}
			}
			
			if (!empty($smsActive)) {
				return array('ok' => 0, 'smsActive' => $smsActive);
			}
			
			$total = 0;
			$imported = 0;
			$nonce = bin2hex(wfWAFUtils::random_bytes(32));
			wfConfig::set('new2FAMigrationNonce', wfUtils::generateJWT(array('nonce' => $nonce), 90));
			$api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion());
			try {
				$response = $api->call('twoFactorTOTP_migrate', array(), array('migrateids' => json_encode($authenticatorActive), 'nonce' => $nonce, 'verifyurl' => add_query_arg(array('action' => 'wordfence_remoteVerifySwitchTo2FANew'), admin_url('admin-ajax.php'))));
				/*
				 * A successful response will be in the format 
				 * {
				 * 		"ok": 1,
				 * 		"records": {
				 * 			"skipped": {
				 * 				<id>: true, ... if applicable
				 * 			},
				 * 			"totp": {
				 * 					<id>: {
				 * 							"secret": <secret>,
				 * 							"recovery": <recovery keys>,
				 * 							"ctime": <timestamp created>,
				 * 							"vtime": <timestamp of last verified TOTP code>
				 * 					},
				 * 					...
				 * 			}
				 * 		}
				 * }
				 */
				
				if (!is_array($response) || !isset($response['records']) || !is_array($response['records'])) {
					return array('ok' => 0, 'fail' => 1);
				}
				
				$secrets = $response['records'];
				if (!isset($secrets['totp']) || !is_array($secrets['totp'])) {
					return array('ok' => 0, 'fail' => 2);
				}
				
				$import = array();
				foreach ($twoFactorUsers as &$t) {
					if ($t[3] == 'activated') {
						$user = new WP_User($t[0]);
						if ($user instanceof WP_User && $user->exists()) {
							if ((!isset($t[5]) || $t[5] != 'authenticator')) {
								//Do nothing
							}
							else {
								if (isset($secrets['totp'][$t[6]])) { 
									$import[$user->ID] = $secrets['totp'][$t[6]];
									$import[$user->ID]['type'] = 'authenticator';
									$total++;
								}
							}
						}
					}
				}
				
				$imported = WFLSPHP52Compatability::import_2fa($import);
			}
			catch (Exception $e) {
				wordfence::status(4, 'error', sprintf(/* translators: Error message. */ __('2FA Migration Error: %s', 'wordfence'), $e->getMessage()));
				return array('ok' => 0, 'fail' => 1);
			}
			
			wfConfig::remove('new2FAMigrationNonce');
			wfConfig::set(wfCredentialsController::DISABLE_LEGACY_2FA_OPTION, true);
			return array('ok' => 1, 'total' => $total, 'imported' => $imported);
		}
		
		//No legacy 2FA active, just set the option.
		wfConfig::set(wfCredentialsController::DISABLE_LEGACY_2FA_OPTION, true);
		return array('ok' => 1);
	}
	public static function ajax_switchTo2FAOld_callback() {
		wfConfig::set(wfCredentialsController::DISABLE_LEGACY_2FA_OPTION, false);
		return array('ok' => 1);
	}
	public static function validateProfileUpdate($errors, $update, $userData){
		wordfence::validatePassword($errors, $userData);
	}
	public static function validatePassword($errors, $userData) {
		$password = (isset($_POST['pass1']) && trim($_POST['pass1'])) ? $_POST['pass1'] : false;
		$user_id = isset($userData->ID) ? $userData->ID : false;
		$username = isset($_POST["user_login"]) ? $_POST["user_login"] : $userData->user_login;
		if ($password == false) { return $errors; }
		if ($errors->get_error_data("pass")) { return $errors; }
		
		$enforceStrongPasswds = false;
		if (wfConfig::get('loginSec_strongPasswds_enabled')) {
			if (wfConfig::get('loginSec_strongPasswds') == 'pubs') {
				if (user_can($user_id, 'publish_posts')) {
					$enforceStrongPasswds = true;
				}
			}
			else if (wfConfig::get('loginSec_strongPasswds') == 'all') {
				$enforceStrongPasswds = true;
			}
		}
		
		if ($enforceStrongPasswds && !wordfence::isStrongPasswd($password, $username)) {
			$errors->add('pass', __('<strong>ERROR</strong>: The password could not be changed. Please choose a stronger password and try again. A strong password will follow these guidelines: <ul class="wf-password-requirements">
					<li>At least 12 characters</li>
					<li>Uppercase and lowercase letters</li>
					<li>At least one symbol</li>
					<li>At least one number</li>
					<li>Avoid common words or sequences of letters/numbers</li>
				</ul>', 'wordfence'));
			return $errors;
		}
		
		$twoFactorUsers = wfConfig::get_ser('twoFactorUsers', array());
		if (preg_match(self::$passwordCodePattern, $password) && is_array($twoFactorUsers) && count($twoFactorUsers) > 0) {
			$errors->add('pass', __('Passwords containing a space followed by "wf" without quotes are not allowed.', 'wordfence'));
			return $errors;
		}
		
		$enforceBreachedPasswds = false;
		if (wfConfig::get('loginSec_breachPasswds_enabled')) {
			if ($user_id !== false && wfConfig::get('loginSec_breachPasswds') == 'admins' && wfUtils::isAdmin($user_id)) {
				$enforceBreachedPasswds = true;
			}
			else if ($user_id !== false && wfConfig::get('loginSec_breachPasswds') == 'pubs' && user_can($user_id, 'publish_posts')) {
				$enforceBreachedPasswds = true;
			}
		}
		
		if ($enforceBreachedPasswds && wfCredentialsController::isLeakedPassword($username, $password)) {
			$errors->add('pass', sprintf(/* translators: Support URL. */ __('Please choose a different password. The password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. <a href="%s">Learn More</a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_USING_BREACH_PASSWORD)));
			return $errors;
		}
		else if ($user_id !== false) {
			wfAdminNoticeQueue::removeAdminNotice(false, '2faBreachPassword', array($user_id));
			wfAdminNoticeQueue::removeAdminNotice(false, 'previousIPBreachPassword', array($user_id));
			wfCredentialsController::clearCachedCredentialStatus($userData);
		}
		
		return $errors;
	}
	public static function isStrongPasswd($passwd, $username ) {
		$passwd = trim($passwd);
		$lowerPasswd = strtolower($passwd);
		$passwdLength = strlen($lowerPasswd);
		if ($passwdLength < 12)
			return false;
		if ($lowerPasswd == strtolower( $username ) )
			return false;
		if (preg_match('/(?:password|passwd|mypass|wordpress)/i', $passwd))
			return false;
		if (preg_match('/(.)\1{2,}/', $lowerPasswd)) //Disallow any character repeated 3 or more times
			return false;
		/*
		 * Check for ordered sequences of at least 4 characters for alphabetic sequences and 3 characters for other sequences, ignoring case
		 * Examples:
		 *	- 321
		 *	- abcd
		 *	- abab
		 */
		$last = null;
		$sequenceLength = 1;
		$alphabetic = true;
		for ($i = 0; $i < $passwdLength; $i++) {
			$current = ord($lowerPasswd[$i]);
			if ($last !== null) {
				if (abs($current - $last) === 1) {
					$alphabetic &= ctype_alpha($lowerPasswd[$i]);
					if (++$sequenceLength > ($alphabetic ? 3 : 2))
						return false;
				}
				else {
					$sequenceLength = 1;
					$alphabetic = true;
				}
			}
			$last = $current;
		}
		$characterTypes = array(
			'/[a-z]/',
			'/[A-Z]/',
			'/[0-9]/',
			'/[^a-zA-Z0-9]/'
		);
		foreach ($characterTypes as $type) {
			if (!preg_match($type, $passwd))
				return false;
		}
		return true;
	}
	public static function lostPasswordPost($errors = null, $user = null) {
		$IP = wfUtils::getIP();
		if ($request = self::getLog()->getCurrentRequest()) {
			$request->action = 'lostPassword';
			$request->save();
		}
		if (wfBlock::isWhitelisted($IP)) {
			return;
		}

		$lockout = wfBlock::lockoutForIP(wfUtils::getIP());
		if ($lockout !== false) {
			$lockout->recordBlock();
			$customText = wpautop(wp_strip_all_tags(wfConfig::get('blockCustomText', '')));
			require(dirname(__FILE__) . '/wfLockedOut.php');
		}

		if ($user === null) {
			if (empty($_POST['user_login'])) { return; }
			$user_login = $_POST['user_login'];
			if (is_array($user_login)) { $user_login = wfUtils::array_first($user_login); }
			$user_login = trim($user_login);
			$user  = get_user_by('login', $user_login);
			if (!$user) {
				$user = get_user_by('email', $user_login);
			}
		}

		if ($user === false && wfConfig::get('loginSec_maskLoginErrors')) {
			if (self::hasWoocommerce() && isset($_POST['wc_reset_password'], $_POST['user_login'])) {
				$redirectUrl = add_query_arg('reset-link-sent', 'true', wc_get_account_endpoint_url('lost-password'));
			}
			else {
				$redirectUrl = !empty($_REQUEST['redirect_to']) ? $_REQUEST['redirect_to'] : 'wp-login.php?checkemail=confirm';
			}
			wp_safe_redirect($redirectUrl);
			exit;
		}

		if($user){
			$alertCallback = array(new wfLostPasswdFormAlert($user, wfUtils::getIP()), 'send');
			do_action('wordfence_security_event', 'lostPasswdForm', array(
				'email' => $user->user_email,
				'ip' => wfUtils::getIP(),
			), $alertCallback);

		}

		// do not count password reset attempts if there is a user logged in with the edit_users capability
		// because they're probably using the "send password reset" feature in the WP admin and therefore we shouldn't
		// be locking them out!
		if(wfConfig::get('loginSecurityEnabled') && !current_user_can( 'edit_users' ) ){
			$tKey = self::getForgotPasswordFailureCountTransient($IP);
			$forgotAttempts = get_transient($tKey);
			if($forgotAttempts){
				$forgotAttempts++;
			} else {
				$forgotAttempts = 1;
			}
			if($forgotAttempts >= wfConfig::get('loginSec_maxForgotPasswd')){
				self::lockOutIP($IP, sprintf(
					/* translators: 1. Password reset limit (number). 2. WordPress username. */
					__('Exceeded the maximum number of tries to recover their password which is set at: %1$s. The last username or email they entered before getting locked out was: \'%2$s\'', 'wordfence'),
					wfConfig::get('loginSec_maxForgotPasswd'),
					$_POST['user_login']
				));
				$customText = wpautop(wp_strip_all_tags(wfConfig::get('blockCustomText', '')));
				require(dirname(__FILE__) . '/wfLockedOut.php');
			}
			set_transient($tKey, $forgotAttempts, wfConfig::get('loginSec_countFailMins') * 60);
		}
	}
	public static function lockOutIP($IP, $reason) {
		wfBlock::createLockout($reason, $IP, wfBlock::lockoutDuration(), time(), time(), 1);
		self::getLog()->tagRequestForLockout($reason);
		$alertCallback = array(new wfLoginLockoutAlert($IP, $reason), 'send');
		do_action('wordfence_security_event', 'loginLockout', array(
			'ip'       => $IP,
			'reason'   => $reason,
			'duration' => wfBlock::lockoutDuration(),
		), $alertCallback);

	}

	public static function getLoginFailureCountTransient($IP) {
		return 'wflginfl_' . bin2hex(wfUtils::inet_pton($IP));
	}

	public static function getForgotPasswordFailureCountTransient($IP) {
		return 'wffgt_' . bin2hex(wfUtils::inet_pton($IP));
	}

	public static function clearLockoutCounters($IP) {
		delete_transient(self::getLoginFailureCountTransient($IP));
		delete_transient(self::getForgotPasswordFailureCountTransient($IP));
	}

	public static function veryFirstAction() {
		/** @var wpdb $wpdb ; */
		global $wpdb;
		
		self::initProtection();

		$wfFunc = isset($_GET['_wfsf']) ? @$_GET['_wfsf'] : false;
		if ($wfFunc == 'unlockEmail') {
			$nonceValid = false;
			if (isset($_POST['nonce']) && is_string($_POST['nonce'])) {
				$nonceValid = wp_verify_nonce($_POST['nonce'], 'wf-form');
				if (!$nonceValid && method_exists(wfWAF::getInstance(), 'createNonce')) {
					$nonceValid = wfWAF::getInstance()->verifyNonce($_POST['nonce'], 'wf-form');
				}
			}
			
			if(!$nonceValid){
				die(__("Sorry but your browser sent an invalid security token when trying to use this form.", 'wordfence'));
			}
			$numTries = get_transient('wordfenceUnlockTries');
			if($numTries > 10){
				printf("<html><body><h1>%s</h1><p>%s</p></body></html>",
					esc_html__('Please wait 3 minutes and try again', 'wordfence'),
					esc_html__('You have used this form too much. Please wait 3 minutes and try again.', 'wordfence')
				);
				exit();
			}
			if(! $numTries){ $numTries = 1; } else { $numTries = $numTries + 1; }
			set_transient('wordfenceUnlockTries', $numTries, 180);

			$email = trim(@$_POST['email']);
			global $wpdb;
			$ws = $wpdb->get_results($wpdb->prepare("SELECT ID, user_login FROM $wpdb->users WHERE user_email = %s", $email));
			$found = false;
			foreach($ws as $user){
				$userDat = get_userdata($user->ID);
				if(wfUtils::isAdmin($userDat)){
					if($email == $userDat->user_email){
						$found = true;
						break;
					}
				}
			}
			if(! $found){
				foreach(wfConfig::getAlertEmails() as $alertEmail){
					if($alertEmail == $email){
						$found = true;
						break;
					}
				}
			}
			if($found){
				$key = wfUtils::bigRandomHex();
				$IP = wfUtils::getIP();
				set_transient('wfunlock_' . $key, $IP, 1800);
				$content = wfUtils::tmpl('email_unlockRequest.php', array(
					'siteName' => get_bloginfo('name', 'raw'),
					'siteURL' => wfUtils::getSiteBaseURL(),
					'unlockHref' => wfUtils::getSiteBaseURL() . '?_wfsf=unlockAccess&key=' . $key,
					'key' => $key,
					'IP' => $IP
					));
				wp_mail($email, __("Unlock email requested", 'wordfence'), $content, "Content-Type: text/html");
			}
			echo "<html><body><h1>" . esc_html__('Your request was received', 'wordfence') . "</h1><p>" .
				esc_html(sprintf(/* translators: Email address. */ __("We received a request to email \"%s\" instructions to unlock their access. If that is the email address of a site administrator or someone on the Wordfence alert list, they have been emailed instructions on how to regain access to this system. The instructions we sent will expire 30 minutes from now.", 'wordfence'), wp_kses($email, array())))
				. "</p></body></html>";

			exit();
		} else if($wfFunc == 'unlockAccess'){
			if (!preg_match('/^(?:(?:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9](?::|$)){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))$/i', get_transient('wfunlock_' . $_GET['key']))) {
				_e("Invalid key provided for authentication.", 'wordfence');
				exit();
			}
			
			if($_GET['func'] == 'unlockMyIP'){
				wfBlock::unblockIP(wfUtils::getIP());
				if (class_exists('wfWAFIPBlocksController')) { wfWAFIPBlocksController::setNeedsSynchronizeConfigSettings(); }
				self::clearLockoutCounters(wfUtils::getIP());
				header('Location: ' . wp_login_url());
				exit();
			} else if($_GET['func'] == 'unlockAllIPs'){
				wordfence::status(1, 'info', __("Request received via unlock email link to unblock all IPs.", 'wordfence'));
				wfBlock::removeAllIPBlocks();
				if (class_exists('wfWAFIPBlocksController')) { wfWAFIPBlocksController::setNeedsSynchronizeConfigSettings(); }
				self::clearLockoutCounters(wfUtils::getIP());
				header('Location: ' . wp_login_url());
				exit();
			} else if($_GET['func'] == 'disableRules'){
				wfConfig::set('firewallEnabled', 0);
				wfConfig::set('loginSecurityEnabled', 0);
				wordfence::status(1, 'info', __("Request received via unlock email link to unblock all IPs via disabling firewall rules.", 'wordfence'));
				wfBlock::removeAllIPBlocks();
				wfBlock::removeAllCountryBlocks();
				if (class_exists('wfWAFIPBlocksController')) { wfWAFIPBlocksController::setNeedsSynchronizeConfigSettings(); }
				self::clearLockoutCounters(wfUtils::getIP());
				header('Location: ' . wp_login_url());
				exit();
			} else {
				_e("Invalid function specified. Please check the link we emailed you and make sure it was not cut-off by your email reader.", 'wordfence');
				exit();
			}
		}
		else if ($wfFunc == 'detectProxy') {
			wfUtils::doNotCache();
			if (wfUtils::processDetectProxyCallback()) {
				self::getLog()->getCurrentRequest()->action = 'scan:detectproxy'; //Exempt a valid callback from live traffic
				echo wfConfig::get('detectProxyRecommendation', '-');
			}
			else {
				echo '0';
			}
			exit();
		}
		else if ($wfFunc == 'removeAlertEmail') {
			wfUtils::doNotCache();
			
			$payloadStatus = false;
			$jwt = (isset($_GET['jwt']) && is_string($_GET['jwt'])) ? $_GET['jwt'] : '';
			if (!empty($jwt)) {
				$payload = wfUtils::decodeJWT($jwt);
				if ($payload && isset($payload['email'])) {
					$payloadStatus = true;
				}
			}
			
			if (isset($_POST['resend'])) {
				$email = trim(@$_POST['email']);
				$found = false;
				$alertEmails = wfConfig::getAlertEmails();
				foreach ($alertEmails as $e) {
					if ($e == $email) {
						$found = true;
						break;
					}
				}
					
				if ($found) {
					$content = wfUtils::tmpl('email_unsubscribeRequest.php', array(
						'siteName' => get_bloginfo('name', 'raw'),
						'siteURL' => wfUtils::getSiteBaseURL(),
						'IP' => wfUtils::getIP(),
						'jwt' => wfUtils::generateJWT(array('email' => $email)),
					));
					wp_mail($email, __("Unsubscribe Requested", 'wordfence'), $content, "Content-Type: text/html");
				}
				
				echo wfView::create('common/unsubscribe', array(
					'state' => 'resent',
				))->render();
				exit();
			}
			else if (!$payloadStatus) {
				echo wfView::create('common/unsubscribe', array(
					'state' => 'bad',
				))->render();
				exit();
			}
			else if (isset($_POST['confirm'])) {
				$confirm = wfUtils::truthyToBoolean($_POST['confirm']);
				if ($confirm) {
					$found = false;
					$alertEmails = wfConfig::getAlertEmails();
					$updatedAlertEmails = array();
					foreach ($alertEmails as $alertEmail) {
						if ($alertEmail == $payload['email']) {
							$found = true;
						}
						else {
							$updatedAlertEmails[] = $alertEmail;
						}
					}
					
					if ($found) {
						wfConfig::set('alertEmails', implode(',', $updatedAlertEmails));
					}
					
					echo wfView::create('common/unsubscribe', array(
						'jwt' => $_GET['jwt'],
						'email' => $payload['email'],
						'state' => 'unsubscribed',
					))->render();
					exit();
				}
			}
			
			echo wfView::create('common/unsubscribe', array(
				'jwt' => $_GET['jwt'],
				'email' => $payload['email'],
				'state' => 'prompt',
			))->render();
			exit();
		}
		else if ($wfFunc == 'installLicense') {
			if (wfUtils::isAdmin()) {
				wfUtils::doNotCache();
				
				if (isset($_POST['license'])) {
					$nonceValid = wp_verify_nonce(@$_POST['nonce'], 'wf-form');
					if (!$nonceValid) {
						die(__('Sorry but your browser sent an invalid security token when trying to use this form.', 'wordfence'));
					}
					
					$changes = array('apiKey' => $_POST['license']);
					$errors = wfConfig::validate($changes);
					if ($errors !== true) {
						$error = __('An error occurred while saving the license.', 'wordfence');
						if (count($errors) == 1) {
							$error = sprintf(/* translators: Error message. */ __('An error occurred while saving the license: %s', 'wordfence'), $errors[0]['error']);
						}
						
						echo wfView::create('common/license', array(
							'state' => 'bad',
							'error' => $error,
						))->render();
						exit();
					}
					
					try {
						wfConfig::save(wfConfig::clean($changes));
						echo wfView::create('common/license', array(
							'state' => 'installed',
						))->render();
						exit();
					}
					catch (Exception $e) {
						echo wfView::create('common/license', array(
							'state' => 'bad',
							'error' => sprintf(/* translators: Error message. */ __('An error occurred while saving the license: %s', 'wordfence'), $e->getMessage()),
						))->render();
						exit();
					}
				}
				
				echo wfView::create('common/license', array(
					'state' => 'prompt',
				))->render();
				exit();
			}
		}
		
		if (is_main_site() && wfUtils::isAdmin()) {
			if (wp_next_scheduled('wordfence_daily_cron') === false) {
				wp_schedule_event(time() + 600, 'daily', 'wordfence_daily_cron');
				wordfence::status(2, 'info', __("Rescheduled missing daily cron", 'wordfence'));
			}
			
			if (wp_next_scheduled('wordfence_hourly_cron') === false) {
				wp_schedule_event(time() + 600, 'hourly', 'wordfence_hourly_cron');
				wordfence::status(2, 'info', __("Rescheduled missing hourly cron", 'wordfence'));
			}
		}

		// Sync the WAF data with the database.
		if (!WFWAF_SUBDIRECTORY_INSTALL && $waf = wfWAF::getInstance()) {
			$homeurl = wfUtils::wpHomeURL();
			$siteurl = wfUtils::wpSiteURL();
			
			//Sync the GeoIP database if needed
			$destination = WFWAF_LOG_PATH . '/GeoLite2-Country.mmdb';
			if (!file_exists($destination) || wfConfig::get('needsGeoIPSync')) {
				$allowSync = false;
				if (wfConfig::createLock('wfSyncGeoIP')) {
					$status = get_transient('wfSyncGeoIPActive');
					if (!$status) {
						$allowSync = true;
						set_transient('wfSyncGeoIPActive', true, 3600);
					}
					wfConfig::releaseLock('wfSyncGeoIP');
				}
				
				if ($allowSync) {
					wfUtils::requireIpLocator();
					try {
						$wflogsLocator = wfIpLocator::getInstance(wfIpLocator::SOURCE_WFLOGS);
						$bundledLocator = wfIpLocator::getInstance(wfIpLocator::SOURCE_BUNDLED);
						if (!$wflogsLocator->isPreferred() || $wflogsLocator->getDatabaseVersion() !== $bundledLocator->getDatabaseVersion()) {
							$source = dirname(__FILE__) . '/GeoLite2-Country.mmdb';
							if (copy($source, $destination)) {
								$shash = '';
								$dhash = '';
								$sp = @fopen($source, "rb");
								if ($sp) {
									$scontext = hash_init('sha256');
									while (!feof($sp)) {
										$data = fread($sp, 65536);
										if ($data === false) {
											$scontext = false;
											break;
										}
										hash_update($scontext, $data);
									}

									fclose($sp);
									if ($scontext !== false) {
										$shash = hash_final($scontext, false);
									}
								}
								$dp = @fopen($destination, "rb");
								if ($dp) {
									$dcontext = hash_init('sha256');
									while (!feof($dp)) {
										$data = fread($dp, 65536);
										if ($data === false) {
											$dcontext = false;
											break;
										}
										hash_update($dcontext, $data);
									}

									fclose($dp);
									if ($scontext !== false) {
										$dhash = hash_final($dcontext, false);
									}
								}
								if (hash_equals($shash, $dhash)) {
									wfConfig::remove('needsGeoIPSync');
									delete_transient('wfSyncGeoIPActive');
								}
							}
						}
						else {
							wfConfig::remove('needsGeoIPSync');
							delete_transient('wfSyncGeoIPActive');
						}
					}
					catch (Exception $e) {
						//Ignore
					}
				}
			}
			
			try {
				$sapi = @php_sapi_name();
				if ($sapi != "cli") {
					$lastPermissionsTemplateCheck = wfConfig::getInt('lastPermissionsTemplateCheck', 0);
					if (defined('WFWAF_LOG_PATH') && ($lastPermissionsTemplateCheck + 43200) < time()) { //Run no more frequently than every 12 hours
						$timestamp = preg_replace('/[^0-9]/', '', microtime(false)); //We avoid using tmpfile since it can potentially create one with different permissions than the defaults
						$tmpTemplate = rtrim(WFWAF_LOG_PATH, '/') . "/template.{$timestamp}.tmp";
						$template = rtrim(WFWAF_LOG_PATH, '/') . '/template.php';
						@unlink($tmpTemplate);
						@file_put_contents($tmpTemplate, "<?php exit('Access denied'); __halt_compiler(); ?>\n");
						$tmpStat = @stat($tmpTemplate);
						if ($tmpStat !== false) {
							$mode = $tmpStat[2] & 0777;
							$updatedMode = 0600;
							if (($mode & 0020) == 0020) { //Group writable
								$updatedMode = $updatedMode | 0060;
							}
							
							if (defined('WFWAF_LOG_FILE_MODE')) {
								$updatedMode = WFWAF_LOG_FILE_MODE;
							}
							
							$stat = @stat($template);
							if ($stat === false || ($stat[2] & 0777) != $updatedMode) {
								@chmod($tmpTemplate, $updatedMode);
								
								@unlink($template);
								@rename($tmpTemplate, $template);
							}
							@unlink($tmpTemplate);
						}
						else {
							@unlink($tmpTemplate);
						}
						
						wfConfig::set('lastPermissionsTemplateCheck', time());
					
						@chmod(WFWAF_LOG_PATH, (wfWAFWordPress::permissions() | 0755));
						wfWAFWordPress::writeHtaccess();
						
						$contents = self::_wflogsContents();
						if ($contents) {
							$validFiles = wfWAF::getInstance()->fileList();
							foreach ($validFiles as &$vf) {
								$vf = basename($vf);
							}
							$validFiles = array_filter($validFiles);
							
							$previousWflogsFileList = wfConfig::getJSON('previousWflogsFileList', array());
							
							$wflogs = realpath(WFWAF_LOG_PATH);
							$filesRemoved = array();
							foreach ($contents as $f) {
								if (!in_array($f, $validFiles) && in_array($f, $previousWflogsFileList)) {
									$fullPath = $f;
									$removed = self::_recursivelyRemoveWflogs($f);
									$filesRemoved = array_merge($filesRemoved, $removed);
								}
							}
							
							$contents = self::_wflogsContents();
							wfConfig::setJSON('previousWflogsFileList', $contents);
							
							if (!empty($filesRemoved)) {
								$removalHistory = wfConfig::getJSON('diagnosticsWflogsRemovalHistory', array());
								$removalHistory = array_slice($removalHistory, 0, 4);
								array_unshift($removalHistory, array(time(), $filesRemoved));
								wfConfig::setJSON('diagnosticsWflogsRemovalHistory', $removalHistory);
							}
						}
					}
				}
			}
			catch (Exception $e) { 
				//Ignore
			}
			
			try {
				$configDefaults = array(
					'apiKey'         => wfConfig::get('apiKey'),
					'isPaid'         => !!wfConfig::get('isPaid'),
					'siteURL'        => $siteurl,
					'homeURL'        => $homeurl,
					'whitelistedIPs' => (string) wfConfig::get('whitelisted'),
					'whitelistedServiceIPs' => @json_encode(wfUtils::whitelistedServiceIPs()),
					'howGetIPs'      => (string) wfConfig::get('howGetIPs'),
					'howGetIPs_trusted_proxies_unified' => implode("\n", wfUtils::unifiedTrustedProxies()),
					'detectProxyRecommendation' => (string) wfConfig::get('detectProxyRecommendation'),
					'other_WFNet'    => !!wfConfig::get('other_WFNet', true), 
					'pluginABSPATH'	 => ABSPATH,
					'serverIPs'		 => json_encode(wfUtils::serverIPs()),
					'blockCustomText' => wpautop(wp_strip_all_tags(wfConfig::get('blockCustomText', ''))),
					'disableWAFIPBlocking' => wfConfig::get('disableWAFIPBlocking'),
					'wordpressVersion' => wfConfig::get('wordpressVersion'),
					'wordpressPluginVersions' => wfConfig::get_ser('wordpressPluginVersions'),
					'wordpressThemeVersions' => wfConfig::get_ser('wordpressThemeVersions'),
					'WPLANG' => get_site_option('WPLANG'),
				);
				if (wfUtils::isAdmin()) {
					$errorNonceKey = 'errorNonce_' . get_current_user_id();
					$configDefaults[$errorNonceKey] = wp_create_nonce('wf-waf-error-page'); //Used by the AJAX watcher script
				}
				foreach ($configDefaults as $key => $value) {
					$waf->getStorageEngine()->setConfig($key, $value, 'synced');
				}
				
				if (wfConfig::get('timeoffset_wf') !== false) {
					$waf->getStorageEngine()->setConfig('timeoffset_wf', wfConfig::get('timeoffset_wf'), 'synced');
				}
				else {
					$waf->getStorageEngine()->unsetConfig('timeoffset_wf', 'synced');
				}
				
				if (class_exists('wfWAFIPBlocksController')) {
					wfWAFIPBlocksController::setNeedsSynchronizeConfigSettings();
				}
				
				if (wfUtils::isAdmin()) {
					if ($waf->getStorageEngine()->getConfig('wafStatus', '') == 'learning-mode') {
						if ($waf->getStorageEngine()->getConfig('learningModeGracePeriodEnabled', false)) {
							if ($waf->getStorageEngine()->getConfig('learningModeGracePeriod', 0) <= time()) {
								// Reached the end of the grace period, activate the WAF.
								$waf->getStorageEngine()->setConfig('wafStatus', 'enabled');
								$waf->getStorageEngine()->setConfig('learningModeGracePeriodEnabled', 0);
								$waf->getStorageEngine()->unsetConfig('learningModeGracePeriod');
								
								$firewall = new wfFirewall();
								$firewall->syncStatus(true);
							}
						}
					}
				}

				if (empty($_GET['wordfence_syncAttackData'])) {
					$table_wfHits = wfDB::networkTable('wfHits');
					if ($waf->getStorageEngine() instanceof wfWAFStorageMySQL) {
						$lastAttackMicroseconds = floatval($waf->getStorageEngine()->getConfig('lastAttackDataTruncateTime'));
					} else {
						$lastAttackMicroseconds = $wpdb->get_var("SELECT MAX(attackLogTime) FROM {$table_wfHits}");
					}
					if (get_site_option('wordfence_lastSyncAttackData', 0) < time() - 8) {
						if ($waf->getStorageEngine()->hasNewerAttackData($lastAttackMicroseconds)) {
							if (get_site_option('wordfence_syncingAttackData') <= time() - 60) {
								// Could be the request to itself is not completing, add ajax to the head as a workaround
								$attempts = get_site_option('wordfence_syncAttackDataAttempts', 0);
								if ($attempts > 10) {
									add_action('wp_head', 'wordfence::addSyncAttackDataAjax');
									add_action('login_head', 'wordfence::addSyncAttackDataAjax');
									add_action('admin_head', 'wordfence::addSyncAttackDataAjax');
								} else {
									update_site_option('wordfence_syncAttackDataAttempts', ++$attempts);
									wp_remote_post(add_query_arg('wordfence_syncAttackData', microtime(true), home_url('/')), array(
										'timeout'   => 0.01,
										'blocking'  => false,
										'sslverify' => apply_filters('https_local_ssl_verify', false)
									));
								}
							}
						}
					}
				}

				if ($waf instanceof wfWAFWordPress && ($learningModeAttackException = $waf->getLearningModeAttackException())) {
					$log = self::getLog();
					$log->initLogRequest();
					$request = $log->getCurrentRequest();
					$request->action = 'learned:waf';
					$request->attackLogTime = microtime(true);

					$ruleIDs = array();
					/** @var wfWAFRule $failedRule */
					foreach ($learningModeAttackException->getFailedRules() as $failedRule) {
						$ruleIDs[] = $failedRule->getRuleID();
					}

					$actionData = array(
						'learningMode' => 1,
						'failedRules'  => $ruleIDs,
						'paramKey'     => $learningModeAttackException->getParamKey(),
						'paramValue'   => $learningModeAttackException->getParamValue(),
					);
					if ($ruleIDs && $ruleIDs[0]) {
						$rule = $waf->getRule($ruleIDs[0]);
						if ($rule) {
							$request->actionDescription = $rule->getDescription();
							$actionData['category'] = $rule->getCategory();
							$actionData['ssl'] = $waf->getRequest()->getProtocol() === 'https';
							$actionData['fullRequest'] = base64_encode($waf->getRequest());
						}
					}
					$request->actionData = wfRequestModel::serializeActionData($actionData);
					register_shutdown_function(array($request, 'save'));

					self::scheduleSendAttackData();
				}
			} catch (wfWAFStorageFileException $e) {
				// We don't have anywhere to write files in this scenario.
			} catch (wfWAFStorageEngineMySQLiException $e) {
				// Ignore and continue
			}
		}

		if(wfConfig::get('firewallEnabled')){
			$wfLog = self::getLog();
			$wfLog->firewallBadIPs();

			$IP = wfUtils::getIP();
			if (wfBlock::isWhitelisted($IP)) {
				return;
			}
			if (wfConfig::get('neverBlockBG') == 'neverBlockUA' && wfCrawl::isGoogleCrawler()) {
				return;
			}
			if (wfConfig::get('neverBlockBG') == 'neverBlockVerified' && wfCrawl::isVerifiedGoogleCrawler()) {
				return;
			}

			if (wfConfig::get('bannedURLs', false)) {
				$URLs = explode("\n", wfUtils::cleanupOneEntryPerLine(wfConfig::get('bannedURLs')));
				foreach ($URLs as $URL) {
					if (preg_match(wfUtils::patternToRegex($URL, ''), $_SERVER['REQUEST_URI'])) {
						$reason = __('Accessed a banned URL', 'wordfence');
						wfBlock::createIP($reason, $IP, wfBlock::blockDuration(), time(), time(), 1, wfBlock::TYPE_IP_AUTOMATIC_TEMPORARY);
						wfActivityReport::logBlockedIP($IP, null, 'bannedurl');
						$wfLog->tagRequestForBlock($reason);
						$wfLog->do503(3600, __("Accessed a banned URL", 'wordfence'));
						//exits
					}
				}
			}

			if (wfConfig::get('other_blockBadPOST') == '1' && $_SERVER['REQUEST_METHOD'] == 'POST' && empty($_SERVER['HTTP_USER_AGENT']) && empty($_SERVER['HTTP_REFERER'])) {
				$reason = __('POST received with blank user-agent and referer', 'wordfence');
				wfBlock::createIP($reason, $IP, wfBlock::blockDuration(), time(), time(), 1, wfBlock::TYPE_IP_AUTOMATIC_TEMPORARY);
				wfActivityReport::logBlockedIP($IP, null, 'badpost');
				$wfLog->tagRequestForBlock($reason);
				$wfLog->do503(3600, __("POST received with blank user-agent and referer", 'wordfence'));
				//exits
			}
		}
	}
	
	private static function _wflogsContents() {
		$dir = opendir(WFWAF_LOG_PATH);
		if ($dir) {
			$contents = array();
			while ($path = readdir($dir)) {
				if ($path == '.' || $path == '..') { continue; }
				$contents[] = $path;
			}
			closedir($dir);
			return $contents;
		}
		return false;
	}
	
	/**
	 * Removes a path within wflogs, recursing as necessary.
	 * 
	 * @param string $file
	 * @param array $processedDirs
	 * @return array The list of removed files/folders.
	 */
	private static function _recursivelyRemoveWflogs($file, $processedDirs = array()) {
		if (preg_match('~(?:^|/|\\\\)\.\.(?:/|\\\\|$)~', $file)) {
			return array();
		}
		
		if (stripos(WFWAF_LOG_PATH, 'wflogs') === false) { //Sanity check -- if not in a wflogs folder, user will have to do removal manually
			return array();
		}
		
		$path = rtrim(WFWAF_LOG_PATH, '/') . '/' . $file;
		if (is_link($path)) {
			if (@unlink($path)) {
				return array($file);
			}
			return array();
		}
		
		if (is_dir($path)) {
			$real = realpath($file);
			if (in_array($real, $processedDirs)) {
				return array();
			}
			$processedDirs[] = $real;
			
			$count = 0;
			$dir = opendir($path);
			if ($dir) {
				$contents = array();
				while ($sub = readdir($dir)) {
					if ($sub == '.' || $sub == '..') { continue; }
					$contents[] = $sub;
				}
				closedir($dir);
				
				$filesRemoved = array();
				foreach ($contents as $f) {
					$removed = self::_recursivelyRemoveWflogs($file . '/' . $f, $processedDirs);
					$filesRemoved = array($filesRemoved, $removed);
				}
			}
			
			if (@rmdir($path)) {
				$filesRemoved[] = $file;
			}
			return $filesRemoved;
		}
		
		if (@unlink($path)) {
			return array($file);
		}
		return array();
	}

	public static function loginAction($username){
		if(sizeof($_POST) < 1){ return; } //only execute if login form is posted
		if(! $username){ return; }
		wfConfig::inc('totalLogins');
		$user = get_user_by('login', $username);
		$userID = $user ? $user->ID : 0;
		self::getLog()->logLogin('loginOK', 0, $username);
		if(wfUtils::isAdmin($user)){
			wfConfig::set_ser('lastAdminLogin', array(
				'userID' => $userID,
				'username' => $username,
				'firstName' => $user->first_name,
				'lastName' => $user->last_name,
				'time' => wfUtils::localHumanDateShort(),
				'IP' => wfUtils::getIP()
				));
		}
		
		$salt = wp_salt('logged_in');
		//TODO: Drop support for legacy cookie after 1 year
		$legacyCookieName = 'wf_loginalerted_' . hash_hmac('sha256', wfUtils::getIP() . '|' . $user->ID, $salt);
		$cookieName = 'wf_loginalerted_' . hash_hmac('sha256', $user->ID, $salt);
		$cookieValue = hash_hmac('sha256', $user->user_login, $salt);
		$newDevice = !(isset($_COOKIE[$legacyCookieName]) && hash_equals($cookieValue, $_COOKIE[$legacyCookieName])); //Check legacy cookie
		if($newDevice){
			$newDevice = !(isset($_COOKIE[$cookieName]) && hash_equals($cookieValue, $_COOKIE[$cookieName]));
		}
		else{
			$_COOKIE[$cookieName]=$cookieValue;
		}
		if(wfUtils::isAdmin($userID)){
			$securityEvent = 'adminLogin';
			$alertCallback = array(new wfAdminLoginAlert($cookieName, $cookieValue, $username, wfUtils::getIP()), 'send');

		} else {
			$securityEvent = 'nonAdminLogin';
			$alertCallback = array(new wfNonAdminLoginAlert($cookieName, $cookieValue, $username, wfUtils::getIP()), 'send');
		}
		if($newDevice)
			$securityEvent.='NewLocation';
		do_action('wordfence_security_event', $securityEvent, array(
			'username' => $username,
			'ip' => wfUtils::getIP(),
		), $alertCallback);
		
		if (wfConfig::get(wfUtils::isAdmin($userID)?'alertOn_firstAdminLoginOnly':'alertOn_firstNonAdminLoginOnly')) {
			//Purge legacy cookie if still present
			if(array_key_exists($legacyCookieName, $_COOKIE))
				wfUtils::setcookie($legacyCookieName, '', 1, '/', null, wfUtils::isFullSSL(), true);
			wfUtils::setcookie($cookieName, $cookieValue, time() + (86400 * 365), '/', null, wfUtils::isFullSSL(), true);
		}
	}
	public static function registrationFilter($errors, $sanitizedLogin, $userEmail) {
		if (wfConfig::get('loginSec_blockAdminReg') && $sanitizedLogin == 'admin') {
			$errors->add('user_login_error', __('<strong>ERROR</strong>: You can\'t register using that username', 'wordfence'));
		}
		return $errors;
	}
	public static function wooRegistrationFilter($wooCustomerData) {
		/*
		   $wooCustomerData matches:
		   array(
				'user_login' => $username,
				'user_pass'  => $password,
				'user_email' => $email,
				'role'       => 'customer',
			)
		 */
		if (wfConfig::get('loginSec_blockAdminReg') && is_array($wooCustomerData) && isset($wooCustomerData['user_login']) && isset($wooCustomerData['user_email']) && preg_match('/^admin\d*$/i', $wooCustomerData['user_login'])) {
			//Converts a username of `admin` generated from something like `admin@example.com` to `adminexample`
			$emailComponents = explode('@', $wooCustomerData['user_email']);
			if (strpos(wfUtils::array_last($emailComponents), '.') === false) { //e.g., admin@localhost 
				$wooCustomerData['user_login'] .= wfUtils::array_last($emailComponents); 
			}
			else { //e.g., admin@example.com
				$hostComponents = explode('.', wfUtils::array_last($emailComponents));
				array_pop($hostComponents);
				$wooCustomerData['user_login'] .= wfUtils::array_last($hostComponents);
			}
			
			//If it's still `admin` at this point, it will fall through and get blocked by wordfence::blacklistedUsernames
		}
		return $wooCustomerData;
	}
	public static function oembedAuthorFilter($data, $post, $width, $height) {
		unset($data['author_name']);
		unset($data['author_url']);
		return $data;
	}
	public static function jsonAPIAuthorFilter($response, $handler, $request) {
		$route = $request->get_route();
		if (!current_user_can('edit_others_posts')) {
			$urlBase = wfWP_REST_Users_Controller::wfGetURLBase();
			if (preg_match('~' . preg_quote($urlBase, '~') . '/*$~i', $route)) {
				$error = new WP_Error('rest_user_cannot_view', __('Sorry, you are not allowed to list users.', 'wordfence'), array('status' => rest_authorization_required_code()));
				$response = rest_ensure_response($error);
				if (!defined('WORDFENCE_REST_API_SUPPRESSED')) { define('WORDFENCE_REST_API_SUPPRESSED', true); }
			}
			else if (preg_match('~' . preg_quote($urlBase, '~') . '/+(\d+)/*$~i', $route, $matches)) {
				$id = (int) $matches[1];
				if (get_current_user_id() !== $id) {
					$error = new WP_Error('rest_user_invalid_id', __('Invalid user ID.', 'wordfence'), array('status' => 404));
					$response = rest_ensure_response($error);
					if (!defined('WORDFENCE_REST_API_SUPPRESSED')) { define('WORDFENCE_REST_API_SUPPRESSED', true); }
				}
			}
		}
		return $response;
	}
	public static function jsonAPIAdjustHeaders($response, $server, $request) {
		if (defined('WORDFENCE_REST_API_SUPPRESSED')) {
			$response->header('Allow', 'GET');
		}
		
		return $response;
	}
	public static function wpSitemapUserProviderFilter($provider, $name) {
		if ($name === 'users') {
			return false;
		}
		return $provider;
	}
	public static function _filterCentralFromLiveTraffic($dispatch_result, $request, $route, $handler) {
		if (preg_match('~^/wordfence/v\d+/~i', $route)) {
			self::getLog()->canLogHit = false;
		}
		return $dispatch_result;
	}
	public static function showTwoFactorField() {
		$existingContents = ob_get_contents();
		if (!preg_match('/wftwofactornonce:([0-9]+)\/(.+?)\s/', $existingContents, $matches)) {
			return;
		}
		
		$userID = intval($matches[1]);
		$twoFactorNonce = preg_replace('/[^a-f0-9]/i', '', $matches[2]);
		if (!self::verifyTwoFactorIntermediateValues($userID, $twoFactorNonce)) {
			return;
		}
		
		//Strip out the username and password fields
		$formPosition = strrpos($existingContents, '<form');
		$formTagEnd = strpos($existingContents, '>', $formPosition);
		if ($formPosition === false || $formTagEnd === false) {
			return;
		}
		
		ob_end_clean();
		ob_start();
		echo substr($existingContents, 0, $formTagEnd + 1);
		
		//Add the 2FA field
		echo "<p>
        <label for=\"wfAuthenticationCode\">Authentication Code<br>
        <input type=\"text\" size=\"6\" class=\"input\" id=\"wordfence_authFactor\" name=\"wordfence_authFactor\" autofocus></label>
        <input type=\"hidden\" id=\"wordfence_twoFactorUser\" name=\"wordfence_twoFactorUser\" value=\"" . $userID . "\">
        <input type=\"hidden\" id=\"wordfence_twoFactorNonce\" name=\"wordfence_twoFactorNonce\" value=\"" . $twoFactorNonce . "\">
    </p>";
	}
	private static function verifyTwoFactorIntermediateValues($userID, $twoFactorNonce) {
		$user = get_user_by('ID', $userID);
		if (!$user || get_class($user) != 'WP_User') { return false; } //Check that the user exists
		
		$expectedNonce = get_user_meta($user->ID, '_wf_twoFactorNonce', true);
		$twoFactorNonceTime = get_user_meta($user->ID, '_wf_twoFactorNonceTime', true);
		if (empty($twoFactorNonce) || empty($twoFactorNonceTime)) { return false; } //Ensure the two factor nonce and time have been set
		if ($twoFactorNonce != $expectedNonce) { return false; } //Verify the nonce matches the expected
		
		$twoFactorUsers = wfConfig::get_ser('twoFactorUsers', array());
		if (!$twoFactorUsers || !is_array($twoFactorUsers)) { return false; } //Make sure there are two factor users configured
		foreach ($twoFactorUsers as &$t) { //Ensure the two factor nonce hasn't expired
			if ($t[0] == $user->ID && $t[3] == 'activated') {
				if (isset($t[5]) && $t[5] == 'authenticator') { $graceTime = WORDFENCE_TWO_FACTOR_GRACE_TIME_AUTHENTICATOR; }
				else { $graceTime = WORDFENCE_TWO_FACTOR_GRACE_TIME_PHONE; }
				return ((time() - $twoFactorNonceTime) < $graceTime);
			}
		}
		return false;
	}
	public static function authenticateFilter($authUser, $username, $passwd) {
		wfConfig::inc('totalLoginHits'); //The total hits to wp-login.php including logins, logouts and just hits.
		$IP = wfUtils::getIP();
		$secEnabled = wfConfig::get('loginSecurityEnabled');
		
		$twoFactorUsers = wfConfig::get_ser('twoFactorUsers', array());
		$userDat = self::$userDat;
		
		$checkBreachList = $secEnabled &&
			!wfBlock::isWhitelisted($IP) &&
			wfConfig::get('loginSec_breachPasswds_enabled') &&
			is_object($authUser) &&
			get_class($authUser) == 'WP_User' &&
			((wfConfig::get('loginSec_breachPasswds') == 'admins' && wfUtils::isAdmin($authUser)) || (wfConfig::get('loginSec_breachPasswds') == 'pubs' && user_can($authUser, 'publish_posts')));
		
		$usingBreachedPassword = false;
		if ($checkBreachList) {
			$cacheStatus = wfCredentialsController::cachedCredentialStatus($authUser);
			if ($cacheStatus != wfCredentialsController::UNCACHED) {
				$usingBreachedPassword = ($cacheStatus == wfCredentialsController::LEAKED);
			}
			else {
				if (wfCredentialsController::isLeakedPassword($authUser->username, $passwd)) {
					$usingBreachedPassword = true;
				}
				wfCredentialsController::setCachedCredentialStatus($authUser, $usingBreachedPassword);
			}
		}
		
		$checkTwoFactor = $secEnabled &&
			!wfBlock::isWhitelisted($IP) &&
			wfConfig::get('isPaid') &&
			isset($twoFactorUsers) &&
			is_array($twoFactorUsers) &&
			sizeof($twoFactorUsers) > 0 &&
			is_object($userDat) &&
			get_class($userDat) == 'WP_User' &&
			wfCredentialsController::useLegacy2FA();
		
		if ($checkTwoFactor) {
			$twoFactorRecord = false;
			$hasActivatedTwoFactorUser = false;
			foreach ($twoFactorUsers as &$t) {
				if ($t[3] == 'activated') {
					$userID = $t[0];
					$testUser = get_user_by('ID', $userID);
					if (is_object($testUser) && wfUtils::isAdmin($testUser)) {
						$hasActivatedTwoFactorUser = true;
					}
					
					if ($userID == $userDat->ID) {
						$twoFactorRecord = &$t;
					}
				}
			}
			
			if (isset($_POST['wordfence_authFactor']) && $_POST['wordfence_authFactor'] && $twoFactorRecord) { //User authenticated with name and password, 2FA code ready to check
				$userID = $userDat->ID;
				
				if (is_object($authUser) && get_class($authUser) == 'WP_User' && $authUser->ID == $userID) {
					//Do nothing. This is the code path the old method of including the code in the password field will take -- since we already have a valid $authUser, skip the nonce verification portion
				}
				else if (isset($_POST['wordfence_twoFactorNonce'])) {
					$twoFactorNonce = preg_replace('/[^a-f0-9]/i', '', $_POST['wordfence_twoFactorNonce']);
					if (!self::verifyTwoFactorIntermediateValues($userID, $twoFactorNonce)) {
						remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
						self::$authError = new WP_Error('twofactor_required', wp_kses(__('<strong>VERIFICATION FAILED</strong>: Two-factor authentication verification failed. Please try again.', 'wordfence'), array('strong'=>array())));
						return self::processBruteForceAttempt(self::$authError, $username, $passwd);
					}
				}
				else { //Code path for old method, invalid password the second time
					self::$authError = $authUser;
					if (is_wp_error(self::$authError) && (self::$authError->get_error_code() == 'invalid_username' || $authUser->get_error_code() == 'invalid_email' || self::$authError->get_error_code() == 'incorrect_password' || $authUser->get_error_code() == 'authentication_failed') && wfConfig::get('loginSec_maskLoginErrors')) {
						self::$authError = new WP_Error('incorrect_password', sprintf(/* translators: 1. WordPress username. 2. Password reset URL. */ wp_kses(__('<strong>ERROR</strong>: The username or password you entered is incorrect. <a href="%2$s" title="Password Lost and Found">Lost your password</a>?', 'wordfence'), array('strong'=>array(), 'a'=>array('href'=>array(), 'title'=>array()))), $username, wp_lostpassword_url()));
					}
					
					return self::processBruteForceAttempt(self::$authError, $username, $passwd);
				}
				
				if ($usingBreachedPassword) {
					wfAdminNoticeQueue::removeAdminNotice(false, 'previousIPBreachPassword', array($userID));
					wfAdminNoticeQueue::addAdminNotice(wfAdminNotice::SEVERITY_CRITICAL, sprintf(
						/* translators: 1. WordPress admin panel URL. 2. Support URL. */
						__('<strong>WARNING: </strong>The password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. Please <a href="%1$s">change your password</a>. <a href="%2$s" target="_blank" rel="noopener noreferrer">Learn More<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'),
						self_admin_url('profile.php'),
						wfSupportController::esc_supportURL(wfSupportController::ITEM_USING_BREACH_PASSWORD)
					), '2faBreachPassword', array($authUser->ID));
				}
				
				if (isset($twoFactorRecord[5])) { //New method TOTP
					$mode = $twoFactorRecord[5];
					$code = preg_replace('/[^a-f0-9]/i', '', $_POST['wordfence_authFactor']);
					
					$api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion());
					try {
						$codeResult = $api->call('twoFactorTOTP_verify', array(), array('totpid' => $twoFactorRecord[6], 'code' => $code, 'mode' => $mode));
						
						if (isset($codeResult['notPaid']) && $codeResult['notPaid']) {
							//No longer a paid key, let them sign in without two factor
						}
						else if (isset($codeResult['ok']) && $codeResult['ok']) {
							//Everything's good, let the sign in continue
						} 
						else {
							if (is_object($authUser) && get_class($authUser) == 'WP_User' && $authUser->ID == $userID) { //Using the old method of appending the code to the password
								if ($mode == 'authenticator') {
									remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
									self::$authError = new WP_Error('twofactor_invalid', wp_kses(__('<strong>INVALID CODE</strong>: Please sign in again and add a space, the letters <code>wf</code>, and the code from your authenticator app to the end of your password (e.g., <code>wf123456</code>).', 'wordfence'), array('strong'=>array(), 'code'=>array())));
								}
								else {
									remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
									self::$authError = new WP_Error('twofactor_invalid', wp_kses(__('<strong>INVALID CODE</strong>: Please sign in again and add a space, the letters <code>wf</code>, and the code sent to your phone to the end of your password (e.g., <code>wf123456</code>).', 'wordfence'), array('strong'=>array(), 'code'=>array())));
								}
							}
							else {
								$loginNonce = wfWAFUtils::random_bytes(20);
								if ($loginNonce === false) { //Should never happen but is technically possible
									remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
									self::$authError = new WP_Error('twofactor_required', wp_kses(__('<strong>AUTHENTICATION FAILURE</strong>: A temporary failure was encountered while trying to log in. Please try again.', 'wordfence'), array('strong'=>array())));
									return self::$authError;
								}
								
								$loginNonce = bin2hex($loginNonce);
								update_user_meta($userDat->ID, '_wf_twoFactorNonce', $loginNonce);
								update_user_meta($userDat->ID, '_wf_twoFactorNonceTime', time());
								
								if ($mode == 'authenticator') {
									remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
									self::$authError = new WP_Error('twofactor_invalid', wp_kses(__('<strong>INVALID CODE</strong>: You need to enter the code generated by your authenticator app. The code should be a six digit number (e.g., 123456).', 'wordfence'), array('strong'=>array())) . '<!-- wftwofactornonce:' . $userDat->ID . '/' . $loginNonce . ' -->');
								}
								else {
									remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
									self::$authError = new WP_Error('twofactor_invalid', wp_kses(__('<strong>INVALID CODE</strong>: You need to enter the code generated sent to your phone. The code should be a six digit number (e.g., 123456).', 'wordfence'), array('strong'=>array())) . '<!-- wftwofactornonce:' . $userDat->ID . '/' . $loginNonce . ' -->');
								}
							}
							return self::processBruteForceAttempt(self::$authError, $username, $passwd);
						}
					}
					catch (Exception $e) {
						if (self::isDebugOn()) {
							error_log('TOTP validation error: ' . $e->getMessage());
						}
					} // Couldn't connect to noc1, let them sign in since the password was correct.
				}
				else { //Old method phone authentication
					$authFactor = $_POST['wordfence_authFactor'];
					if (strlen($authFactor) == 4) {
						$authFactor = 'wf' . $authFactor;
					}
					if ($authFactor == $twoFactorRecord[2] && $twoFactorRecord[4] > time()) { // Set this 2FA code to expire in 30 seconds (for other plugins hooking into the auth process)
						$twoFactorRecord[4] = time() + 30;
						wfConfig::set_ser('twoFactorUsers', $twoFactorUsers);
					}
					else if ($authFactor == $twoFactorRecord[2]) {
						$api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion());
						try {
							$codeResult = $api->call('twoFactor_verification', array(), array('phone' => $twoFactorRecord[1]));
							
							if (isset($codeResult['notPaid']) && $codeResult['notPaid']) {
								//No longer a paid key, let them sign in without two factor
							} 
							else if (isset($codeResult['ok']) && $codeResult['ok']) {
								$twoFactorRecord[2] = $codeResult['code'];
								$twoFactorRecord[4] = time() + 1800; //30 minutes until code expires
								wfConfig::set_ser('twoFactorUsers', $twoFactorUsers); //save the code the user needs to enter and return an error.
								
								$loginNonce = wfWAFUtils::random_bytes(20);
								if ($loginNonce === false) { //Should never happen but is technically possible
									remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
									self::$authError = new WP_Error('twofactor_required', wp_kses(__('<strong>AUTHENTICATION FAILURE</strong>: A temporary failure was encountered while trying to log in. Please try again.', 'wordfence'), array('strong'=>array())));
									return self::$authError;
								}
								
								$loginNonce = bin2hex($loginNonce);
								update_user_meta($userDat->ID, '_wf_twoFactorNonce', $loginNonce);
								update_user_meta($userDat->ID, '_wf_twoFactorNonceTime', time());
								
								remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
								self::$authError = new WP_Error('twofactor_required', wp_kses(__('<strong>CODE EXPIRED. CHECK YOUR PHONE:</strong> The code you entered has expired. Codes are only valid for 30 minutes for security reasons. We have sent you a new code. Please sign in using your username, password, and the new code we sent you.', 'wordfence'), array('strong'=>array())) . '<!-- wftwofactornonce:' . $userDat->ID . '/' . $loginNonce . ' -->');
								return self::$authError;
							}
							
							//else: No new code was received. Let them sign in with the expired code.
						}
						catch (Exception $e) {
							// Couldn't connect to noc1, let them sign in since the password was correct.
						} 
					}
					else { //Bad code, so cancel the login and return an error to user.
						$loginNonce = wfWAFUtils::random_bytes(20);
						if ($loginNonce === false) { //Should never happen but is technically possible
							remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
							self::$authError = new WP_Error('twofactor_required', wp_kses(__('<strong>AUTHENTICATION FAILURE</strong>: A temporary failure was encountered while trying to log in. Please try again.', 'wordfence'), array('strong'=>array())));
							return self::$authError;
						}
						
						$loginNonce = bin2hex($loginNonce);
						update_user_meta($userDat->ID, '_wf_twoFactorNonce', $loginNonce);
						update_user_meta($userDat->ID, '_wf_twoFactorNonceTime', time());
						
						remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
						self::$authError = new WP_Error('twofactor_invalid', wp_kses(__('<strong>INVALID CODE</strong>: You need to enter your password and the code we sent to your phone. The code should start with \'wf\' and should be four characters (e.g., wfAB12).', 'wordfence'), array('strong'=>array())) . '<!-- wftwofactornonce:' . $userDat->ID . '/' . $loginNonce . ' -->');
						return self::processBruteForceAttempt(self::$authError, $username, $passwd);
					}
				}
				delete_user_meta($userDat->ID, '_wf_twoFactorNonce');
				delete_user_meta($userDat->ID, '_wf_twoFactorNonceTime');
				$authUser = $userDat; //Log in as the user we saved in the wp_authenticate action
			}
			else if (is_object($authUser) && get_class($authUser) == 'WP_User') { //User authenticated with name and password, prompt for the 2FA code
				//Verify at least one administrator has 2FA enabled
				$requireAdminTwoFactor = $hasActivatedTwoFactorUser && wfConfig::get('loginSec_requireAdminTwoFactor');
				
				if ($twoFactorRecord) {
					if ($twoFactorRecord[0] == $userDat->ID && $twoFactorRecord[3] == 'activated') { //Yup, enabled, so require the code
						if ($usingBreachedPassword) {
							wfAdminNoticeQueue::removeAdminNotice(false, 'previousIPBreachPassword', array($authUser->ID));
							wfAdminNoticeQueue::addAdminNotice(wfAdminNotice::SEVERITY_CRITICAL, sprintf(
								/* translators: 1. WordPress admin panel URL. 2. Support URL. */
								__('<strong>WARNING: </strong>The password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. Please <a href="%1$s">change your password</a>. <a href="%2$s" target="_blank" rel="noopener noreferrer">Learn More<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'), self_admin_url('profile.php'), wfSupportController::esc_supportURL(wfSupportController::ITEM_USING_BREACH_PASSWORD)), '2faBreachPassword', array($authUser->ID));
						}
						
						$loginNonce = wfWAFUtils::random_bytes(20);
						if ($loginNonce === false) { //Should never happen but is technically possible, allow login
							$requireAdminTwoFactor = false;
						}
						else {
							$loginNonce = bin2hex($loginNonce);
							update_user_meta($userDat->ID, '_wf_twoFactorNonce', $loginNonce);
							update_user_meta($userDat->ID, '_wf_twoFactorNonceTime', time());
							
							if (isset($twoFactorRecord[5])) { //New method TOTP authentication
								if ($twoFactorRecord[5] == 'authenticator') {
									if (self::hasGDLimitLoginsMUPlugin() && function_exists('limit_login_get_address')) {
										$retries = get_option('limit_login_retries', array());
										$ip = limit_login_get_address();
										
										if (!is_array($retries)) {
											$retries = array();
										}
										if (isset($retries[$ip]) && is_int($retries[$ip])) {
											$retries[$ip]--;
										}
										else {
											$retries[$ip] = 0;
										}
										update_option('limit_login_retries', $retries);
									}
									
									$allowSeparatePrompt = ini_get('output_buffering') > 0;
									if (wfConfig::get('loginSec_enableSeparateTwoFactor') && $allowSeparatePrompt) {
										remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
										self::$authError = new WP_Error('twofactor_required', wp_kses(__('<strong>CODE REQUIRED</strong>: Please check your authenticator app for the current code. Enter it below to sign in.', 'wordfence'), array('strong'=>array())) . '<!-- wftwofactornonce:' . $userDat->ID . '/' . $loginNonce . ' -->');
										return self::$authError;
									}
									else {
										remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
										self::$authError = new WP_Error('twofactor_required', wp_kses(__('<strong>CODE REQUIRED</strong>: Please check your authenticator app for the current code. Please sign in again and add a space, the letters <code>wf</code>, and the code to the end of your password (e.g., <code>wf123456</code>).', 'wordfence'), array('strong'=>array(), 'code'=>array())));
										return self::$authError;
									}
								}
								else {
									//Phone TOTP
									$api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion());
									try {
										$codeResult = $api->call('twoFactorTOTP_sms', array(), array('totpid' => $twoFactorRecord[6]));
										if (isset($codeResult['notPaid']) && $codeResult['notPaid']) {
											$requireAdminTwoFactor = false;
											//Let them sign in without two factor if their API key has expired or they're not paid and for some reason they have this set up.
										}
										else {
											if (isset($codeResult['ok']) && $codeResult['ok']) {
												if (self::hasGDLimitLoginsMUPlugin() && function_exists('limit_login_get_address')) {
													$retries = get_option('limit_login_retries', array());
													$ip = limit_login_get_address();
													
													if (!is_array($retries)) {
														$retries = array();
													}
													if (isset($retries[$ip]) && is_int($retries[$ip])) {
														$retries[$ip]--;
													}
													else {
														$retries[$ip] = 0;
													}
													update_option('limit_login_retries', $retries);
												}
												
												$allowSeparatePrompt = ini_get('output_buffering') > 0;
												if (wfConfig::get('loginSec_enableSeparateTwoFactor') && $allowSeparatePrompt) {
													remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
													self::$authError = new WP_Error('twofactor_required', wp_kses(__('<strong>CHECK YOUR PHONE</strong>: A code has been sent to your phone and will arrive within 30 seconds. Enter it below to sign in.', 'wordfence'), array('strong'=>array())) . '<!-- wftwofactornonce:' . $userDat->ID . '/' . $loginNonce . ' -->');
													return self::$authError;
												}
												else {
													remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
													self::$authError = new WP_Error('twofactor_required', wp_kses(__('<strong>CHECK YOUR PHONE</strong>: A code has been sent to your phone and will arrive within 30 seconds. Please sign in again and add a space, the letters <code>wf</code>, and the code to the end of your password (e.g., <code>wf123456</code>).', 'wordfence'), array('strong'=>array(), 'code'=>array())));
													return self::$authError;
												}
											}
											else { //oops, our API returned an error.
												$requireAdminTwoFactor = false;
												//Let them sign in without two factor because the API is broken and we don't want to lock users out of their own systems.
											}
										}
									}
									catch (Exception $e) {
										if (self::isDebugOn()) {
											error_log('TOTP SMS error: ' . $e->getMessage());
										}
										$requireAdminTwoFactor = false;
										// Couldn't connect to noc1, let them sign in since the password was correct.
									}
								}
							}
							else { //Old method phone authentication
								$api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion());
								try {
									$codeResult = $api->call('twoFactor_verification', array(), array('phone' => $twoFactorRecord[1]));
									if (isset($codeResult['notPaid']) && $codeResult['notPaid']) {
										$requireAdminTwoFactor = false;
										//Let them sign in without two factor if their API key has expired or they're not paid and for some reason they have this set up.
									}
									else {
										if (isset($codeResult['ok']) && $codeResult['ok']) {
											$twoFactorRecord[2] = $codeResult['code'];
											$twoFactorRecord[4] = time() + 1800; //30 minutes until code expires
											wfConfig::set_ser('twoFactorUsers', $twoFactorUsers); //save the code the user needs to enter and return an error.
											
											if (self::hasGDLimitLoginsMUPlugin() && function_exists('limit_login_get_address')) {
												$retries = get_option('limit_login_retries', array());
												$ip = limit_login_get_address();
												
												if (!is_array($retries)) {
													$retries = array();
												}
												if (isset($retries[$ip]) && is_int($retries[$ip])) {
													$retries[$ip]--;
												}
												else {
													$retries[$ip] = 0;
												}
												update_option('limit_login_retries', $retries);
											}
											
											$allowSeparatePrompt = ini_get('output_buffering') > 0;
											if (wfConfig::get('loginSec_enableSeparateTwoFactor') && $allowSeparatePrompt) {
												remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
												self::$authError = new WP_Error('twofactor_required', wp_kses(__('<strong>CHECK YOUR PHONE</strong>: A code has been sent to your phone and will arrive within 30 seconds. Enter it below to sign in.', 'wordfence'), array('strong'=>array())) . '<!-- wftwofactornonce:' . $userDat->ID . '/' . $loginNonce . ' -->');
												return self::$authError;
											}
											else {
												remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
												self::$authError = new WP_Error('twofactor_required', wp_kses(__('<strong>CHECK YOUR PHONE</strong>: A code has been sent to your phone and will arrive within 30 seconds. Please sign in again and add a space and the code to the end of your password (e.g., <code>wfABCD</code>).', 'wordfence'), array('strong'=>array(), 'code'=>array())));
												return self::$authError;
											}
										}
										else { //oops, our API returned an error.
											$requireAdminTwoFactor = false;
											//Let them sign in without two factor because the API is broken and we don't want to lock users out of their own systems.
										}
									}
								}
								catch (Exception $e) {
									$requireAdminTwoFactor = false;
									// Couldn't connect to noc1, let them sign in since the password was correct.
								}
							} //end: Old method phone authentication
						}
					}
				}
				else if ($usingBreachedPassword) {
					if (wfCredentialsController::hasPreviousLoginFromIP($authUser, wfUtils::getIP())) {
						wfAdminNoticeQueue::removeAdminNotice(false, '2faBreachPassword', array($authUser->ID));
						wfAdminNoticeQueue::addAdminNotice(wfAdminNotice::SEVERITY_CRITICAL, sprintf(__('<strong>WARNING: </strong>Your login has been allowed because you have previously logged in from the same IP, but you will be blocked if your IP changes. The password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. Please <a href="%1$s">change your password</a>. <a href="%2$s" target="_blank" rel="noopener noreferrer">Learn More<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'), self_admin_url('profile.php'), wfSupportController::esc_supportURL(wfSupportController::ITEM_USING_BREACH_PASSWORD)), 'previousIPBreachPassword', array($authUser->ID));
					}
					else {
						$username = $authUser->user_login;
						self::getLog()->logLogin('loginFailValidUsername', 1, $username);
						$alertCallback = array(new wfBreachLoginAlert($username, wp_lostpassword_url(), wfSupportController::esc_supportURL(wfSupportController::ITEM_USING_BREACH_PASSWORD), wfUtils::getIP()), 'send');

						do_action('wordfence_security_event', 'breachLogin', array(
							'username' => $username,
							'resetPasswordURL' => wp_lostpassword_url(),
							'supportURL' => wfSupportController::esc_supportURL(wfSupportController::ITEM_USING_BREACH_PASSWORD),
							'ip' => wfUtils::getIP(),
						), $alertCallback);
						
						remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
						self::$authError = new WP_Error('breached_password', sprintf(
							/* translators: 1. Reset password URL. 2. Support URL. */
							wp_kses(__('<strong>INSECURE PASSWORD:</strong> Your login attempt has been blocked because the password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. Please <a href="%1$s">reset your password</a> to reactivate your account. <a href="%2$s" target="_blank" rel="noopener noreferrer">Learn More<span style="font-size:0;"> (opens in new tab)</span></a>', 'wordfence'), array('strong'=>array(), 'a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()), 'span'=>array('style'=>array()))), wp_lostpassword_url(), wfSupportController::esc_supportURL(wfSupportController::ITEM_USING_BREACH_PASSWORD)));
						return self::$authError;
					}
				}
				
				if ($requireAdminTwoFactor && wfUtils::isAdmin($authUser)) {
					$username = $authUser->user_login;
					self::getLog()->logLogin('loginFailValidUsername', 1, $username);
					wordfence::alert(__("Admin Login Blocked", 'wordfence'), sprintf(/* translators: WordPress username. */__("A user with username \"%s\" who has administrator access tried to sign in to your WordPress site. Access was denied because all administrator accounts are required to have Cellphone Sign-in enabled but this account does not.", 'wordfence'), $username), wfUtils::getIP());
					self::$authError = new WP_Error('twofactor_disabled_required', wp_kses(__('<strong>Cellphone Sign-in Required</strong>: Cellphone Sign-in is required for all administrator accounts. Please contact the site administrator to enable it for your account.', 'wordfence'), array('strong'=>array())));
					return self::$authError;
				}
				
				//User is not configured for two factor. Sign in without two factor.
			}
		} //End: if ($checkTwoFactor)
		else if ($usingBreachedPassword) {
			if (wfCredentialsController::hasPreviousLoginFromIP($authUser, wfUtils::getIP())) {
				wfAdminNoticeQueue::removeAdminNotice(false, '2faBreachPassword', array($authUser->ID));
				wfAdminNoticeQueue::addAdminNotice(wfAdminNotice::SEVERITY_CRITICAL, sprintf(/* translators: 1. Reset password URL. 2. Support URL. */ __('<strong>WARNING: </strong>Your login has been allowed because you have previously logged in from the same IP, but you will be blocked if your IP changes. The password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. Please <a href="%1$s">change your password</a>. <a href="%2$s" target="_blank" rel="noopener noreferrer">Learn More<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'), self_admin_url('profile.php'), wfSupportController::esc_supportURL(wfSupportController::ITEM_USING_BREACH_PASSWORD)), 'previousIPBreachPassword', array($authUser->ID));
			}
			else {
				$username = $authUser->user_login;
				self::getLog()->logLogin('loginFailValidUsername', 1, $username);
				$alertCallback = array(new wfBreachLoginAlert($username, wp_lostpassword_url(), wfSupportController::esc_supportURL(wfSupportController::ITEM_USING_BREACH_PASSWORD), wfUtils::getIP()), 'send');

				do_action('wordfence_security_event', 'breachLogin', array(
					'username' => $username,
					'resetPasswordURL' => wp_lostpassword_url(),
					'supportURL' => wfSupportController::esc_supportURL(wfSupportController::ITEM_USING_BREACH_PASSWORD),
					'ip' => wfUtils::getIP(),
				), $alertCallback);

				remove_action('login_errors', 'limit_login_fixup_error_messages'); //We're forced to do this because limit-login-attempts does not have any allowances for legitimate error messages
				self::$authError = new WP_Error('breached_password', sprintf(
					/* translators: 1. Reset password URL. 2. Support URL. */
					wp_kses(__('<strong>INSECURE PASSWORD:</strong> Your login attempt has been blocked because the password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. Please <a href="%1$s">reset your password</a> to reactivate your account. <a href="%2$s" target="_blank" rel="noopener noreferrer">Learn More<span style="font-size:0;"> (opens in new tab)</span></a>', 'wordfence'), array('strong'=>array(), 'a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()), 'span'=>array('style'=>array()))), wp_lostpassword_url(), wfSupportController::esc_supportURL(wfSupportController::ITEM_USING_BREACH_PASSWORD)));
				return self::$authError;
			}
		}
		
		return self::processBruteForceAttempt($authUser, $username, $passwd);
	}
	
	public static function checkSecurityNetwork($endpointType = null) {
		if (wfConfig::get('other_WFNet')) {
			$IP = wfUtils::getIP();
			if ($maxBlockTime = self::wfsnIsBlocked($IP, 'brute', $endpointType)) {
				$secsToGo = ($maxBlockTime ? $maxBlockTime : wfBlock::blockDuration());
				$reason = __('Blocked by Wordfence Security Network', 'wordfence');
				wfBlock::createWFSN($reason, $IP, $secsToGo, time(), time(), 1);
				wfActivityReport::logBlockedIP($IP, null, 'brute');
				self::getLog()->tagRequestForBlock($reason, true);
				self::getLog()->getCurrentRequest()->action = 'blocked:wfsn';
				self::getLog()->do503($secsToGo, $reason); //exits
			}
		}
	}
	
	public static function processBruteForceAttempt($authUser, $username, $passwd) {
		$IP = wfUtils::getIP();
		$secEnabled = wfConfig::get('loginSecurityEnabled');
		
		if (wfBlock::isWhitelisted($IP)) {
			return $authUser;
		}
		
		$failureErrorCodes = array('invalid_username', 'invalid_email', 'incorrect_password', 'twofactor_invalid', 'authentication_failed', 'wfls_twofactor_invalid', 'wfls_twofactor_failed', 'wfls_twofactor_blocked');
		if (is_wp_error($authUser) && in_array($authUser->get_error_code(), $failureErrorCodes)) {
			self::checkSecurityNetwork(); //May exit
		}
		
		if($secEnabled){
			if(is_wp_error($authUser) && ($authUser->get_error_code() == 'invalid_username' || $authUser->get_error_code() == 'invalid_email')){
				if($blacklist = wfConfig::get('loginSec_userBlacklist')){
					$users = explode("\n", wfUtils::cleanupOneEntryPerLine($blacklist));
					foreach($users as $user){
						if(strtolower($username) == strtolower($user)){
							$secsToGo = wfBlock::blockDuration();
							$reason = __('Blocked by login security setting', 'wordfence');
							wfBlock::createIP($reason, $IP, $secsToGo, time(), time(), 1, wfBlock::TYPE_IP_AUTOMATIC_TEMPORARY);
							wfActivityReport::logBlockedIP($IP, null, 'brute');
							self::getLog()->tagRequestForBlock($reason);
							self::getLog()->do503($secsToGo, $reason); //exits
						}
					}
				}
				if(wfConfig::get('loginSec_lockInvalidUsers')){
					if(strlen($username) > 0 && preg_match('/[^\r\s\n\t]+/', $username)){
						self::lockOutIP($IP, sprintf(/* translators: WordPress username. */ __("Used an invalid username '%s' to try to sign in", 'wordfence'), $username));
						self::getLog()->logLogin('loginFailInvalidUsername', true, $username);
					}
					$customText = wpautop(wp_strip_all_tags(wfConfig::get('blockCustomText', '')));
					require(dirname(__FILE__) . '/wfLockedOut.php');
				}
			}
			$tKey = self::getLoginFailureCountTransient($IP);
			if(is_wp_error($authUser) && in_array($authUser->get_error_code(), $failureErrorCodes)) {
				$tries = get_transient($tKey);
				if($tries){
					$tries++;
				} else {
					$tries = 1;
				}
				if($tries >= wfConfig::get('loginSec_maxFailures')){
					self::lockOutIP($IP,
						sprintf(
							/* translators: 1. Login attempt limit. 2. WordPress username. */
							__('Exceeded the maximum number of login failures which is: %1$s. The last username they tried to sign in with was: \'%2$s\'', 'wordfence'),
							wfConfig::get('loginSec_maxFailures'),
							$username
						)
					);
					$customText = wpautop(wp_strip_all_tags(wfConfig::get('blockCustomText', '')));
					require(dirname(__FILE__) . '/wfLockedOut.php');
				}
				set_transient($tKey, $tries, wfConfig::get('loginSec_countFailMins') * 60);
			}
		}
		if(is_wp_error($authUser)){
			if($authUser->get_error_code() == 'invalid_username' || $authUser->get_error_code() == 'invalid_email'){
				self::getLog()->logLogin('loginFailInvalidUsername', 1, $username);
			} else {
				self::getLog()->logLogin('loginFailValidUsername', 1, $username);
			}
		}

		if(is_wp_error($authUser) && ($authUser->get_error_code() == 'invalid_username' || $authUser->get_error_code() == 'invalid_email' || $authUser->get_error_code() == 'incorrect_password') && wfConfig::get('loginSec_maskLoginErrors')){
			return new WP_Error( 'incorrect_password', sprintf(
				/* translators: 1. WordPress username. 2. Reset password URL. */
				wp_kses(__( '<strong>ERROR</strong>: The username or password you entered is incorrect. <a href="%2$s" title="Password Lost and Found">Lost your password</a>?', 'wordfence' ), array('strong'=>array(), 'a'=>array('href'=>array(), 'title'=>array()))), $username, wp_lostpassword_url() ) );
		}
		
		return $authUser;
	}
	public static function wfsnBatchReportBlockedAttempts() {
		if (!defined('DONOTCACHEDB')) { define('DONOTCACHEDB', true); }
		$threshold = wfConfig::get('lastBruteForceDataSendTime', 0);;
		
		$wfdb = new wfDB();
		$table_wfHits = wfDB::networkTable('wfHits');
		$rawBlocks = $wfdb->querySelect("SELECT IP, ctime, actionData FROM {$table_wfHits} WHERE ctime > %f AND action = 'blocked:wfsnrepeat' ORDER BY ctime ASC LIMIT 100", sprintf('%.6f', $threshold));
		$totalRows = $wfdb->querySingle("SELECT COUNT(*) FROM {$table_wfHits} WHERE ctime > %f AND action = 'blocked:wfsnrepeat'", sprintf('%.6f', $threshold));
		$ipCounts = array();
		$maxctime = 0;
		foreach ($rawBlocks as $record) {
			$maxctime = max($maxctime, $record['ctime']);
			$endpointType = 0;
			if (!empty($record['actionData'])) {
				$actionData = wfRequestModel::unserializeActionData($record['actionData']);
				if (isset($actionData['type'])) {
					$endpointType = $actionData['type'];
				}
			}
			if (isset($ipCounts[$record['IP']])) {
				$ipCounts[$record['IP']] = array();
			}
			
			if (isset($ipCounts[$record['IP']][$endpointType])) {
				$ipCounts[$record['IP']][$endpointType]++;
			}
			else {
				$ipCounts[$record['IP']][$endpointType] = 1;
			}
		}
		
		$toSend = array();
		foreach ($ipCounts as $IP => $endpoints) {
			foreach ($endpoints as $endpointType => $count) {
				$toSend[] = array('IP' => base64_encode($IP), 'count' => $count, 'blocked' => 1, 'type' => $endpointType);
			}
		}
		
		try {
			$response = wp_remote_post(WORDFENCE_HACKATTEMPT_URL_SEC . 'multipleHackAttempts/?k=' . rawurlencode(wfConfig::get('apiKey')) . '&t=brute', array(
				'timeout' => 2,
				'user-agent' => "Wordfence.com UA " . (defined('WORDFENCE_VERSION') ? WORDFENCE_VERSION : '[Unknown version]'),
				'body' => 'IPs=' . rawurlencode(json_encode($toSend)),
				'headers' => array('Referer' => false),
			));
			
			if (!is_wp_error($response)) {
				if ($totalRows > 100) {
					self::wfsnScheduleBatchReportBlockedAttempts();
				}
				
				wfConfig::set('lastBruteForceDataSendTime', $maxctime);
			}
			else {
				self::wfsnScheduleBatchReportBlockedAttempts();
			}
		} 
		catch (Exception $err) {
			//Do nothing
		}
	}
	private static function wfsnScheduleBatchReportBlockedAttempts($timeToSend = null) {
		if (!defined('DONOTCACHEDB')) { define('DONOTCACHEDB', true); }
		if ($timeToSend === null) {
			$timeToSend = time() + 30;
		}
		$notMainSite = is_multisite() && !is_main_site();
		if ($notMainSite) {
			global $current_site;
			switch_to_blog($current_site->blog_id);
		}
		if (!wp_next_scheduled('wordfence_batchReportBlockedAttempts')) {
			wp_schedule_single_event($timeToSend, 'wordfence_batchReportBlockedAttempts');
		}
		if ($notMainSite) {
			restore_current_blog();
		}
	}
	public static function wfsnReportBlockedAttempt($IP, $type){
		if (!defined('DONOTCACHEDB')) { define('DONOTCACHEDB', true); }
		self::wfsnScheduleBatchReportBlockedAttempts();
		$endpointType = self::wfsnEndpointType();
		self::getLog()->getCurrentRequest()->actionData = wfRequestModel::serializeActionData(array('type' => $endpointType));
	}
	public static function wfsnBatchReportFailedAttempts() {
		if (!defined('DONOTCACHEDB')) { define('DONOTCACHEDB', true); }
		$threshold = time();
		
		$wfdb = new wfDB();
		$table_wfSNIPCache = wfDB::networkTable('wfSNIPCache');
		$rawRecords = $wfdb->querySelect("SELECT id, IP, type, count, 1 AS failed FROM {$table_wfSNIPCache} WHERE count > 0 AND expiration < FROM_UNIXTIME(%d) LIMIT 100", $threshold);
		$toSend = array();
		$toDelete = array();
		if (count($rawRecords)) {
			foreach ($rawRecords as $record) {
				$toDelete[] = $record['id'];
				unset($record['id']);
				$record['IP'] = base64_encode(filter_var($record['IP'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) ? wfUtils::inet_aton($record['IP']) : wfUtils::inet_pton($record['IP']));
				
				$key = $record['IP'] . $record['type']; //Aggregate multiple records if for some reason there are multiple for an IP/type combination
				if (!isset($toSend[$key])) {
					$toSend[$key] = $record;
				}
				else {
					$toSend[$key]['count'] += $record['count'];
				}
			}
			
			$toSend = array_values($toSend);
			
			try {
				$response = wp_remote_post(WORDFENCE_HACKATTEMPT_URL_SEC . 'multipleHackAttempts/?k=' . rawurlencode(wfConfig::get('apiKey')) . '&t=brute', array(
					'timeout' => 2,
					'user-agent' => "Wordfence.com UA " . (defined('WORDFENCE_VERSION') ? WORDFENCE_VERSION : '[Unknown version]'),
					'body' => 'IPs=' . rawurlencode(json_encode($toSend)),
					'headers' => array('Referer' => false),
				));
				
				if (is_wp_error($response)) {
					self::wfsnScheduleBatchReportFailedAttempts();
					return;
				}
			} 
			catch (Exception $err) {
				//Do nothing
			}
		}
		array_unshift($toDelete, $threshold);
		$wfdb->queryWriteIgnoreError("DELETE FROM {$table_wfSNIPCache} WHERE (expiration < FROM_UNIXTIME(%d) AND count = 0)" . (count($toDelete) > 1 ? " OR id IN (" . rtrim(str_repeat('%d, ', count($toDelete) - 1), ', ') . ")" : ""), $toDelete);
		
		$remainingRows = $wfdb->querySingle("SELECT COUNT(*) FROM {$table_wfSNIPCache}");
		if ($remainingRows > 0) {
			self::wfsnScheduleBatchReportFailedAttempts();
		}
	}
	private static function wfsnScheduleBatchReportFailedAttempts($timeToSend = null) {
		if (!defined('DONOTCACHEDB')) { define('DONOTCACHEDB', true); }
		if ($timeToSend === null) {
			$timeToSend = time() + 30;
		}
		$notMainSite = is_multisite() && !is_main_site();
		if ($notMainSite) {
			global $current_site;
			switch_to_blog($current_site->blog_id);
		}
		if (!wp_next_scheduled('wordfence_batchReportFailedAttempts')) {
			wp_schedule_single_event($timeToSend, 'wordfence_batchReportFailedAttempts');
		}
		if ($notMainSite) {
			restore_current_blog();
		}
	}
	public static function wfsnIsBlocked($IP, $hitType, $endpointType = null) {
		if (!defined('DONOTCACHEDB')) { define('DONOTCACHEDB', true); }
		$wfdb = new wfDB();
		if ($endpointType === null) { $endpointType = self::wfsnEndpointType(); }
		$table_wfSNIPCache = wfDB::networkTable('wfSNIPCache');
		$cachedRecord = $wfdb->querySingleRec("SELECT id, body FROM {$table_wfSNIPCache} WHERE IP = '%s' AND type = %d AND expiration > NOW()", $IP, $endpointType);
		if (isset($cachedRecord)) {
			$wfdb->queryWriteIgnoreError("UPDATE {$table_wfSNIPCache} SET count = count + 1 WHERE id = %d", $cachedRecord['id']);
			if (preg_match('/BLOCKED:(\d+)/', $cachedRecord['body'], $matches) && (!wfBlock::isWhitelisted($IP))) {
				return $matches[1];
			}
			return false;
		}
		
		$backoff = get_transient('wfsn_backoff');
		if ($backoff) {
			return false;
		}
		
		try {
			$result = wp_remote_get(WORDFENCE_HACKATTEMPT_URL_SEC . 'hackAttempt/?k=' . rawurlencode(wfConfig::get('apiKey')) . 
																			'&IP=' . rawurlencode(filter_var($IP, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) ? wfUtils::inet_aton($IP) : wfUtils::inet_pton($IP)) . 
																			'&t=' . rawurlencode($hitType) .
																			'&type=' . $endpointType, 
				array(
					'timeout' => 3,
					'user-agent' => "Wordfence.com UA " . (defined('WORDFENCE_VERSION') ? WORDFENCE_VERSION : '[Unknown version]'),
					'headers' => array('Referer' => false),
				));
			if (is_wp_error($result)) {
				set_transient('wfsn_backoff', 1, WORDFENCE_NOC3_FAILED_BACKOFF_TIME);
				return false;
			}
			$wfdb->queryWriteIgnoreError("INSERT INTO {$table_wfSNIPCache} (IP, type, expiration, body) VALUES ('%s', %d, DATE_ADD(NOW(), INTERVAL %d SECOND), '%s')", $IP, $endpointType, 30, $result['body']);
			self::wfsnScheduleBatchReportFailedAttempts();
			if (preg_match('/BLOCKED:(\d+)/', $result['body'], $matches) && (!wfBlock::isWhitelisted($IP))) {
				return $matches[1];
			}
			return false;
		} catch (Exception $err) {
			set_transient('wfsn_backoff', 1, WORDFENCE_NOC3_FAILED_BACKOFF_TIME);
			return false;
		}
	}
	public static function wfsnEndpointType() {
		$type = 0; //Unknown
		if (defined('XMLRPC_REQUEST') && XMLRPC_REQUEST) {
			$type = 2;
		}
		else if (defined('DOING_AJAX') && DOING_AJAX) {
			$type = 3;
			if (isset($_REQUEST['action']) && ($_REQUEST['action'] == 'wordfence_ls_authenticate' || $_REQUEST['action'] == 'nopriv_wordfence_ls_authenticate')) {
				$type = 301;
			}
		}
		else if (strpos($_SERVER['REQUEST_URI'], '/wp-login.php') !== false) {
			$type = 1;
		}
		return $type;
	}
	public static function logoutAction(){
		$userID = self::getLog()->getCurrentRequest()->userID;
		$userDat = get_user_by('id', $userID);
		if(is_object($userDat)){
			self::getLog()->logLogin('logout', 0, $userDat->user_login);
		}
		// Unset the roadblock cookie
		if (!WFWAF_SUBDIRECTORY_INSTALL) {
			wfUtils::setcookie(wfWAF::getInstance()->getAuthCookieName(), ' ', time() - (86400 * 365), '/', null, wfUtils::isFullSSL(), true);
		}
	}
	public static function loginInitAction() {
		$lockout = wfBlock::lockoutForIP(wfUtils::getIP());
		if ($lockout !== false) {
			$lockout->recordBlock();
			$customText = wpautop(wp_strip_all_tags(wfConfig::get('blockCustomText', '')));
			require(dirname(__FILE__) . '/wfLockedOut.php');
		}
		
		self::doEarlyAccessLogging(); //Rate limiting
	}
	public static function authAction(&$username, &$passwd){
		$lockout = wfBlock::lockoutForIP(wfUtils::getIP());
		if ($lockout !== false) {
			$lockout->recordBlock();
			$customText = wpautop(wp_strip_all_tags(wfConfig::get('blockCustomText', '')));
			require(dirname(__FILE__) . '/wfLockedOut.php');
		}
		
		if (isset($_POST['wordfence_twoFactorUser'])) { //Final stage of login -- get and verify 2fa code, make sure we load the appropriate user
			$userID = intval($_POST['wordfence_twoFactorUser']);
			$twoFactorNonce = preg_replace('/[^a-f0-9]/i', '', $_POST['wordfence_twoFactorNonce']);
			if (self::verifyTwoFactorIntermediateValues($userID, $twoFactorNonce)) {
				$user = get_user_by('ID', $userID);
				$username = $user->user_login;
				$passwd = $twoFactorNonce;
				self::$userDat = $user;
				return;
			}
		}
		
		if (is_array($username) || is_array($passwd)) { return; }
		
		//Intermediate stage of login
		if(! $username){ return; }
		$userDat = get_user_by('login', $username);
		if (!$userDat) {
			$userDat = get_user_by('email', $username);
		}
		
		self::$userDat = $userDat;
		if(preg_match(self::$passwordCodePattern, $passwd, $matches)){
			$_POST['wordfence_authFactor'] = $matches[1];
			$passwd = preg_replace('/^(.+)\s+wf([a-z0-9 ]+)$/i', '$1', $passwd);
			$_POST['pwd'] = $passwd;
		}
	}
	public static function authUserAction($user, $password) {
		$lockout = wfBlock::lockoutForIP(wfUtils::getIP());
		if ($lockout !== false) {
			$lockout->recordBlock();
			$customText = wpautop(wp_strip_all_tags(wfConfig::get('blockCustomText', '')));
			require(dirname(__FILE__) . '/wfLockedOut.php');
		}
		return $user;
	}
	public static function getWPFileContent($file, $cType, $cName, $cVersion){
		if ($cType == 'plugin') {
			if (preg_match('#^/?wp-content/plugins/[^/]+/#', $file)) {
				$file = preg_replace('#^/?wp-content/plugins/[^/]+/#', '', $file);
			}
			else {
				//If user is using non-standard wp-content dir, then use /plugins/ in pattern to figure out what to strip off
				$file = preg_replace('#^.*[^/]+/plugins/[^/]+/#', '', $file);
			}
		}
		else if ($cType == 'theme') {
			if (preg_match('#/?wp-content/themes/[^/]+/#', $file)) {
				$file = preg_replace('#/?wp-content/themes/[^/]+/#', '', $file);
			}
			else {
				$file = preg_replace('#^.*[^/]+/themes/[^/]+/#', '', $file);
			}
		}
		else if ($cType == 'core') {
			//No special processing
		}
		else {
			return array('errorMsg' => __('An invalid type was specified to get file.', 'wordfence'));
		}
		
		$api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion());
		try {
			$contResult = $api->binCall('get_wp_file_content', array(
				'v' => wfUtils::getWPVersion(),
				'file' => $file,
				'cType' => $cType,
				'cName' => $cName,
				'cVersion' => $cVersion
				));
			if ($contResult['data']) {
				return array('fileContent' => $contResult['data']);
			}
			
			throw new Exception(__('We could not fetch a core WordPress file from the Wordfence API.', 'wordfence'));
		}
		catch (Exception $e) {
			return array('errorMsg' => wp_kses($e->getMessage(), array()));
		}
	}
	public static function ajax_sendDiagnostic_callback(){
		add_filter('gettext', 'wordfence::_diagnosticsTranslationDisabler', 0, 3);
		$inEmail = true;
		$body = "<style>.screen-reader-text{ display: none !important; }</style>This email is the diagnostic from " . site_url() . ".\nThe IP address that requested this was: " . wfUtils::getIP() . "\nTicket Number/Forum Username: " . $_POST['ticket'];
		$sendingDiagnosticEmail = true;
		ob_start();
		require(dirname(__FILE__) . '/menu_tools_diagnostic.php');
		$body = nl2br($body) . ob_get_clean();
		$findReplace = array(
			'<div class="wf-block-header">' => '<div style="margin:20px 0px 0px;padding:6px 4px;background-color:#222;color:#fff;width:926px;">',
			'<th ' => '<th style="text-align:left;background-color:#222;color:#fff;"',
			'<th>' => '<th style="text-align:left;background-color:#222;color:#fff;">',
			' class="wf-result-success"' => ' style="font-weight:bold;color:#008c10;" class="wf-result-success"',
			' class="wf-result-error"' => ' style="font-weight:bold;color:#d0514c;" class="wf-result-error"',
			' class="wf-result-inactive"' => ' style="font-weight:bold;color:#666666;" class="wf-result-inactive"',
		);
		$body = str_replace(array_keys($findReplace), array_values($findReplace), $body);
		$result = wfUtils::htmlEmail($_POST['email'], '[Wordfence] Diagnostic results (' . $_POST['ticket'] . ')', $body);
		if (function_exists('remove_filter')) { remove_filter('gettext', 'wordfence::_diagnosticsTranslationDisabler', 0); } //Remove for consistency. It's okay if it doesn't pre-4.7.0 since the call exits anyway.
		return compact('result');
	}
	public static function ajax_exportDiagnostics_callback(){
		add_filter('gettext', 'wordfence::_diagnosticsTranslationDisabler', 0, 3);

		$url = site_url();
		$url = preg_replace('/^https?:\/\//i', '', $url);
		$url = preg_replace('/[^a-zA-Z0-9\.]+/', '_', $url);
		$url = preg_replace('/^_+/', '', $url);
		$url = preg_replace('/_+$/', '', $url);

		header('Content-Type: application/octet-stream');
		header('Content-Disposition: attachment; filename="diagnostics_for_' . $url . '.txt"');

		echo wfView::create('diagnostics/text', array(
			'diagnostic' => new wfDiagnostic,
			'plugins' => get_plugins(),
		));
		exit;
	}
	public static function _diagnosticsTranslationDisabler($translation, $text, $domain) {
		return $text;
	}
	public static function ajax_sendTestEmail_callback(){
		$rawEmails = explode(",", $_POST['email']);
		$emails = array();
		foreach ($rawEmails as $e) {
			$e = trim($e);
			if (wfUtils::isValidEmail($e)) {
				$emails[] = $e;
			}
		}
		$result = false;
		if (count($emails)) {
			$result = wp_mail(implode(', ', $emails), __('Wordfence Test Email', 'wordfence'), sprintf(/* translators: 1. Site URL. 2. IP address. */ __("This is a test email from %1\$s.\nThe IP address that requested this was: %2\$s", 'wordfence'), site_url(), wfUtils::getIP()));
		}
		$result = $result ? 'True' : 'False';
		return array('result' => $result);
	}
	public static function ajax_addTwoFactor_callback(){
		if(! wfConfig::get('isPaid')){
			return array('errorMsg' => __('Cellphone Sign-in is only available to paid members. <a href="https://www.wordfence.com/gnl1twoFac3/wordfence-signup/" target="_blank" rel="noopener noreferrer">Click here to upgrade now.<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'));
		}
		$username = sanitize_text_field($_POST['username']);
		$phone = sanitize_text_field($_POST['phone']);
		$mode = sanitize_text_field($_POST['mode']);
		$user = get_user_by('login', $username);
		if(! $user){
			return array('errorMsg' => __("The username you specified does not exist.", 'wordfence'));
		}
		
		$twoFactorUsers = wfConfig::get_ser('twoFactorUsers', array());
		if (!is_array($twoFactorUsers)) {
			$twoFactorUsers = array();
		}
		for ($i = 0; $i < sizeof($twoFactorUsers); $i++) {
			if ($twoFactorUsers[$i][0] == $user->ID) {
				return array('errorMsg' => __("The username you specified is already enabled.", 'wordfence'));
			}
		}
		
		if ($mode != 'phone' && $mode != 'authenticator') {
			return array('errorMsg' => __("Unknown authentication mode.", 'wordfence'));
		}
		
		if ($mode == 'phone') {
			if (!preg_match('/^\+\d[\d\-\(\)\s]+$/', $phone)) {
				return array('errorMsg' => __("The phone number you entered must start with a '+', then country code and then area code and number. For example, a number in the United States with country code '1' would look like this: +1-123-555-1234", 'wordfence'));
			}
			$api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion());
			try {
				$codeResult = $api->call('twoFactorTOTP_register', array(), array('phone' => $phone, 'mode' => $mode));
			}
			catch (Exception $e) {
				return array('errorMsg' => sprintf(__("Could not contact Wordfence servers to generate a verification code: %s", 'wordfence'), wp_kses($e->getMessage(), array())));
			}
			
			$recoveryCodes = preg_replace('/[^a-f0-9]/i', '', $codeResult['recoveryCodes']);
			
			if (isset($codeResult['ok']) && $codeResult['ok']) {
				$secretID = $codeResult['id'];
			}
			else if (isset($codeResult['errorMsg']) && $codeResult['errorMsg']) {
				return array('errorMsg' => wp_kses($codeResult['errorMsg'], array()));
			}
			else {
				wordfence::status(4, 'info', sprintf(__("Could not generate verification code: %s", 'wordfence'), var_export($codeResult, true)));
				return array('errorMsg' => __("We could not generate a verification code.", 'wordfence'));
			}
			self::twoFactorAdd($user->ID, $phone, '', 'phone', $secretID);
			return array(
				'ok' => 1,
				'userID' => $user->ID,
				'username' => $username,
				'homeurl' => preg_replace('#.*?//#', '', get_home_url()),
				'mode' => $mode,
				'phone' => $phone,
				'recoveryCodes' => $recoveryCodes,
			);
		}
		else if ($mode == 'authenticator') {
			$api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion());
			try {
				$codeResult = $api->call('twoFactorTOTP_register', array(), array('mode' => $mode));
			}
			catch (Exception $e) {
				return array('errorMsg' => sprintf(/* translators: Error message. */ __("Could not contact Wordfence servers to generate a verification code: %s", 'wordfence'), wp_kses($e->getMessage(), array())));
			}
			
			/* Expected Fields:
				'ok' => 1,
				'secret' => $secret,
				'base32Secret' => $base32Secret,
				'recoveryCodes' => $codes,
				'uriQueryString' => $uriQueryString,
				'id' => $recordID,
			*/
			
			$secret = preg_replace('/[^a-f0-9]/i', '', $codeResult['secret']);
			$base32Secret = preg_replace('/[^a-z2-7]/i', '', $codeResult['base32Secret']); //Encoded in base32
			$recoveryCodes = preg_replace('/[^a-f0-9]/i', '', $codeResult['recoveryCodes']);
			$uriQueryString = preg_replace('/[^a-z0-9=&]/i', '', $codeResult['uriQueryString']);
			
			if (isset($codeResult['ok']) && $codeResult['ok']) {
				$secretID = $codeResult['id'];
			}
			else if (isset($codeResult['errorMsg']) && $codeResult['errorMsg']) {
				return array('errorMsg' => wp_kses($codeResult['errorMsg'], array()));
			}
			else {
				wordfence::status(4, 'info', sprintf(/* translators: Error message. */ __("Could not generate verification code: %s", 'wordfence'), var_export($codeResult, true)));
				return array('errorMsg' => __("We could not generate a verification code.", 'wordfence'));
			}
			self::twoFactorAdd($user->ID, '', '', 'authenticator', $secretID);
			return array(
				'ok' => 1,
				'userID' => $user->ID,
				'username' => $username,
				'homeurl' => preg_replace('#.*?//#', '', get_home_url()),
				'mode' => $mode,
				'secret' => $secret,
				'base32Secret' => $base32Secret,
				'recoveryCodes' => $recoveryCodes,
				'uriQueryString' => $uriQueryString,
			);
		}
		
		return array('errorMsg' => __("Unknown two-factor authentication mode.", 'wordfence'));
	}
	public static function ajax_twoFacActivate_callback() {
		$userID = sanitize_text_field($_POST['userID']);
		$code = sanitize_text_field($_POST['code']);
		$twoFactorUsers = wfConfig::get_ser('twoFactorUsers', array());
		if (!is_array($twoFactorUsers)) {
			$twoFactorUsers = array();
		}
		$found = false;
		$user = false;
		for ($i = 0; $i < sizeof($twoFactorUsers); $i++) {
			if ($twoFactorUsers[$i][0] == $userID) {
				$mode = 'phone';
				if (isset($twoFactorUsers[$i][5]) && $twoFactorUsers[$i][5] == 'authenticator') {
					$mode = 'authenticator';
				}
				$api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion());
				try {
					$codeResult = $api->call('twoFactorTOTP_verify', array(), array('totpid' => $twoFactorUsers[$i][6], 'code' => $code, 'mode' => $mode));
				}
				catch (Exception $e) {
					return array('errorMsg' => sprintf(/* translators: Error message. */ __("Could not contact Wordfence servers to generate a verification code: %s", 'wordfence'), wp_kses($e->getMessage(), array())));
				}
				
				if (isset($codeResult['ok']) && $codeResult['ok']) {
					$twoFactorUsers[$i][3] = 'activated';
					$twoFactorUsers[$i][4] = 0;
					$found = true;
					$user = $twoFactorUsers[$i];
					break;
				}
				else {
					return array('errorMsg' => __("The code you entered is invalid. Cellphone sign-in will not be enabled for this user until you enter a valid code.", 'wordfence'));
				}
			}
		}
		if(! $found){
			return array('errorMsg' => __("We could not find the user you are trying to activate. They may have been removed from the list of Cellphone Sign-in users. Please reload this page.", 'wordfence'));
		}
		wfConfig::set_ser('twoFactorUsers', $twoFactorUsers);
		$WPuser = get_userdata($userID);
		if ($mode == 'authenticator') {
			return array(
				'ok' => 1,
				'userID' => $userID,
				'username' => $WPuser->user_login,
				'status' => 'activated',
				'mode' => 'authenticator'
			);
		}
		
		return array(
			'ok' => 1,
			'userID' => $userID,
			'username' => $WPuser->user_login,
			'phone' => $user[1],
			'status' => 'activated',
			'mode' => 'phone'
			);
	}
	private static function twoFactorAdd($ID, $phone, $code, $mode, $totpID){
		$twoFactorUsers = wfConfig::get_ser('twoFactorUsers', array());
		if(! is_array($twoFactorUsers)){
			$twoFactorUsers = array();
		}
		for($i = 0; $i < sizeof($twoFactorUsers); $i++){
			if($twoFactorUsers[$i][0] == $ID || (! $twoFactorUsers[$i][0]) ){
				array_splice($twoFactorUsers, $i, 1);
				$i--;
			}
		}
		$twoFactorUsers[] = array($ID, $phone, $code /* deprecated parameter */, 'notActivated', time() + (86400 * 30) /* deprecated parameter */, $mode, $totpID); //expiry of code is 30 days in future
		wfConfig::set_ser('twoFactorUsers', $twoFactorUsers);
	}
	public static function ajax_loadTwoFactor_callback() {
		$users = wfConfig::get_ser('twoFactorUsers', array());
		$ret = array();
		foreach ($users as $user) {
			$WPuser = get_userdata($user[0]);
			if ($user) {
				if (isset($user[5]) && $user[5] == 'authenticator') { 
					$ret[] = array(
						'userID' => $user[0],
						'username' => $WPuser->user_login,
						'status' => $user[3],
						'mode' => 'authenticator'
					);
				}
				else {
					$ret[] = array(
						'userID' => $user[0],
						'username' => $WPuser->user_login,
						'phone' => $user[1],
						'status' => $user[3],
						'mode' => 'phone'
					);
				}
			}
		}
		return array('ok' => 1, 'users' => $ret);
	}
	public static function ajax_twoFacDel_callback(){
		$ID = $_POST['userID'];
		$twoFactorUsers = wfConfig::get_ser('twoFactorUsers', array());
		if(! is_array($twoFactorUsers)){
			$twoFactorUsers = array();
		}
		$deleted = false;
		for($i = 0; $i < sizeof($twoFactorUsers); $i++){
			if($twoFactorUsers[$i][0] == $ID){
				array_splice($twoFactorUsers, $i, 1);
				$deleted = true;
				$i--;
			}
		}
		wfConfig::set_ser('twoFactorUsers', $twoFactorUsers);
		if($deleted){
			return array('ok' => 1, 'userID' => $ID);
		} else {
			return array('errorMsg' => __("That user has already been removed from the list.", 'wordfence'));
		}
	}
	public static function getNextScanStartTimestamp() {
		$nextTime = false;
		$cron = _get_cron_array();
		foreach($cron as $key => $val){
			if(isset($val['wordfence_start_scheduled_scan'])){
				$nextTime = $key;
				break;
			}
		}
		return $nextTime;
	}
	public static function getNextScanStartTime($nextTime = null) {
		if ($nextTime === null) {
			$nextTime = wfScanner::shared()->nextScheduledScanTime();
		}
		
		if (!$nextTime) {
			return __('No scan is scheduled', 'wordfence');
		}
		
		$difference = $nextTime - time();
		if ($difference < 1) {
			return __("Next scan is starting now", 'wordfence');
		}

		return sprintf(/* translators: 1. Time until. 2. Localized date. */ __('Next scan in %1$s (%2$s)', 'wordfence'), wfUtils::makeDuration($difference), date_i18n('M j, Y g:i:s A', $nextTime + (3600 * get_option('gmt_offset'))));
	}
	public static function wordfenceStartScheduledScan($scheduledStartTime) {

		//If scheduled scans are not enabled in the global config option, then don't run a scheduled scan.
		if(wfConfig::get('scheduledScansEnabled') != '1'){
			return;
		}

		$minimumFrequency = (wfScanner::shared()->schedulingMode() == wfScanner::SCAN_SCHEDULING_MODE_MANUAL ? 1800 : 43200);
		$lastScanStart = wfConfig::get('lastScheduledScanStart', 0);
		if($lastScanStart && (time() - $lastScanStart) < $minimumFrequency){
			//A scheduled scan was started in the last 30 mins (manual schedule) or 12 hours (automatic schedule), so skip this one.
			return;
		}
		wfConfig::set('originalScheduledScanStart', $scheduledStartTime);
		wfConfig::set('lastScheduledScanStart', time());
		wordfence::status(1, 'info', sprintf(/* translators: Localized date. */ __("Scheduled Wordfence scan starting at %s", 'wordfence'), date('l jS \of F Y h:i:s A', current_time('timestamp'))) );

		//We call this before the scan actually starts to advance the schedule for the next week.
		//This  ensures that if the scan crashes for some reason, the schedule will hold.
		wfScanner::shared()->scheduleScans();

		try {
			wfScanEngine::startScan();
		}
		catch (wfScanEngineTestCallbackFailedException $e) {
			wfConfig::set('lastScanCompleted', $e->getMessage());
			wfConfig::set('lastScanFailureType', wfIssues::SCAN_FAILED_CALLBACK_TEST_FAILED);
			wfUtils::clearScanLock();
		}
		catch (Exception $e) {
			if ($e->getCode() != wfScanEngine::SCAN_MANUALLY_KILLED) {
				wfConfig::set('lastScanCompleted', $e->getMessage());
				wfConfig::set('lastScanFailureType', wfIssues::SCAN_FAILED_GENERAL);
			}
		}
	}
	public static function ajax_saveCountryBlocking_callback(){
		if(! wfConfig::get('isPaid')){
			return array('errorMsg' => __("Sorry but this feature is only available for paid customers.", 'wordfence'));
		}
		wfConfig::set('cbl_action', $_POST['blockAction']);
		wfConfig::set('cbl_countries', $_POST['codes']);
		wfConfig::set('cbl_redirURL', $_POST['redirURL']);
		wfConfig::set('cbl_loggedInBlocked', $_POST['loggedInBlocked']);
		wfConfig::set('cbl_loginFormBlocked', $_POST['loginFormBlocked']);
		wfConfig::set('cbl_restOfSiteBlocked', $_POST['restOfSiteBlocked']);
		wfConfig::set('cbl_bypassRedirURL', $_POST['bypassRedirURL']);
		wfConfig::set('cbl_bypassRedirDest', $_POST['bypassRedirDest']);
		wfConfig::set('cbl_bypassViewURL', $_POST['bypassViewURL']);
		return array('ok' => 1);
	}
	public static function ajax_sendActivityLog_callback(){
		$content  = sprintf(/* translators: Site URL. */ __('SITE: %s', 'wordfence'), site_url()) . "\n";
		$content .= sprintf(/* translators: Plugin version. */ __('PLUGIN VERSION: %s', 'wordfence'), WORDFENCE_VERSION) . "\n";
		$content .= sprintf(/* translators: WordPress version. */ __('WORDPRESS VERSION: %s', 'wordfence'), wfUtils::getWPVersion()) . "\n";
		$content .= sprintf(/* translators: Wordfence license key. */ __('LICENSE KEY: %s', 'wordfence'), wfConfig::get('apiKey')) . "\n";
		$content .= sprintf(/* translators: Email address. */ __('ADMIN EMAIL: %s', 'wordfence'), get_option('admin_email')) . "\n";
		$content .= __('LOG:', 'wordfence') . "\n\n";

		$wfdb = new wfDB();
		$table_wfStatus = wfDB::networkTable('wfStatus');
		$q = $wfdb->querySelect("select ctime, level, type, msg from {$table_wfStatus} order by ctime desc limit 10000");
		$timeOffset = 3600 * get_option('gmt_offset');
		foreach($q as $r){
			if($r['type'] == 'error'){
				$content .= "\n";
			}
			$content .= date(DATE_RFC822, intval($r['ctime']) + $timeOffset) . '::' . sprintf('%.4f', $r['ctime']) . ':' . $r['level'] . ':' . $r['type'] . '::' . wp_kses_data( (string) $r['msg']) . "\n";
		}
		$content .= "\n\n";
		$content .= str_repeat('-', 80);
		$content .= "\n\n";
		
		$content .= __('# Scan Issues', 'wordfence') . "\n\n";
		$issues = wfIssues::shared()->getIssues(0, 50, 0, 50);
		$issueCounts = array_merge(array('new' => 0, 'ignoreP' => 0, 'ignoreC' => 0), wfIssues::shared()->getIssueCounts());
		$issueTypes = wfIssues::validIssueTypes();
		
		$content .= sprintf(/* translators: Number of scan results. */ __('## New Issues (%d total)', 'wordfence'), $issueCounts['new']) . "\n\n";
		if (isset($issues['new']) && count($issues['new'])) {
			foreach ($issues['new'] as $i) {
				if (!in_array($i['type'], $issueTypes)) {
					continue;
				}
				
				$viewContent = '';
				try {
					$viewContent = wfView::create('scanner/issue-' . $i['type'], array('textOutput' => $i))->render();
				}
				catch (wfViewNotFoundException $e) {
					//Ignore -- should never happen since we validate the type
				}
				
				if (!empty($viewContent)) {
					$content .= $viewContent . "\n\n";
				}
			}
		}
		else {
			$content .= __('No New Issues', 'wordfence') . "\n\n";
		}
		
		$content .= str_repeat('-', 10);
		$content .= "\n\n";
		
		$content .= sprintf(/* translators: Number of scan results. */ __('## Ignored Issues (%d total)', 'wordfence'), $issueCounts['ignoreP'] + $issueCounts['ignoreC']) . "\n\n";
		if (isset($issues['new']) && count($issues['new'])) {
			foreach ($issues['ignored'] as $i) {
				if (!in_array($i['type'], $issueTypes)) {
					continue;
				}
				
				$viewContent = '';
				try {
					$viewContent = wfView::create('scanner/issue-' . $i['type'], array('textOutput' => $i))->render();
				}
				catch (wfViewNotFoundException $e) {
					//Ignore -- should never happen since we validate the type
				}
				
				if (!empty($viewContent)) {
					$content .= $viewContent . "\n\n";
				}
			}
		}
		else {
			$content .= __('No Ignored Issues', 'wordfence') . "\n\n";
		}
		
		$content .= str_repeat('-', 80);
		$content .= "\n\n";

		ob_start();
		if (wfUtils::funcEnabled('phpinfo')) { phpinfo(); } else { echo "\n\n" . __('Unable to output phpinfo content because it is disabled', 'wordfence') . "\n\n"; }
		$phpinfo = ob_get_contents();
		ob_get_clean();

		$content .= $phpinfo;

		$rawEmails = explode(",", $_POST['email']);
		$emails = array();
		foreach ($rawEmails as $e) {
			$e = trim($e);
			if (wfUtils::isValidEmail($e)) {
				$emails[] = $e;
			}
		}
		if (count($emails)) {
			wp_mail(implode(', ', $emails), __('Wordfence Activity Log', 'wordfence'), $content);
		}
		return array('ok' => 1);
	}
	public static function ajax_downgradeLicense_callback(){
		$api = new wfAPI('', wfUtils::getWPVersion());
		try {
			$keyData = $api->call('get_anon_api_key', array(), array('previousLicense' => wfConfig::get('apiKey')));
			if($keyData['ok'] && $keyData['apiKey']){
				wfLicense::current()->downgradeToFree($keyData['apiKey'])->save();
				//When downgrading we must disable all two factor authentication because it can lock an admin out if we don't.
				wfConfig::set_ser('twoFactorUsers', array());
				wfConfig::remove('premiumAutoRenew');
				wfConfig::remove('premiumNextRenew');
				wfConfig::remove('premiumPaymentExpiring');
				wfConfig::remove('premiumPaymentExpired');
				wfConfig::remove('premiumPaymentMissing');
				wfConfig::remove('premiumPaymentHold');
				self::licenseStatusChanged();
				if (method_exists(wfWAF::getInstance()->getStorageEngine(), 'purgeIPBlocks')) {
					wfWAF::getInstance()->getStorageEngine()->purgeIPBlocks(wfWAFStorageInterface::IP_BLOCKS_BLACKLIST);
				}
			} else {
				throw new Exception(__("Could not understand the response we received from the Wordfence servers when applying for a free license key.", 'wordfence'));
			}
		} catch(Exception $e){
			return array('errorMsg' => sprintf(/* translators: Error message. */ __("Could not fetch free license key from Wordfence: %s", 'wordfence'), wp_kses($e->getMessage(), array())));
		}
		return array('ok' => 1);
	}
	public static function ajax_tourClosed_callback() {
		$page = '';
		if (isset($_POST['page'])) {
			$page = $_POST['page'];
		}

		
		$keys = array(wfOnboardingController::TOUR_DASHBOARD, wfOnboardingController::TOUR_FIREWALL, wfOnboardingController::TOUR_SCAN, wfOnboardingController::TOUR_BLOCKING, wfOnboardingController::TOUR_LIVE_TRAFFIC, wfOnboardingController::TOUR_LOGIN_SECURITY);
		if (in_array($page, $keys)) {
			if (wfOnboardingController::shouldShowNewTour($page)) {
				wfConfig::set('needsNewTour_' . $page, 0);
			}
			else if (wfOnboardingController::shouldShowUpgradeTour($page)) {
				wfConfig::set('needsUpgradeTour_' . $page, 0);
			}
		}
		
		return array('ok' => 1);
	}
	public static function ajax_autoUpdateChoice_callback(){
		$choice = $_POST['choice'];
		wfConfig::set('autoUpdateChoice', '1');
		if($choice == 'yes'){
			wfConfig::set('autoUpdate', '1');
		} else {
			wfConfig::set('autoUpdate', '0');
		}
		return array('ok' => 1);
	}
	public static function ajax_misconfiguredHowGetIPsChoice_callback() {
		$choice = $_POST['choice'];
		if ($choice == 'yes') {
			wfConfig::set('howGetIPs', wfConfig::get('detectProxyRecommendation', ''));
			
			if (isset($_POST['issueID'])) {
				$issueID = intval($_POST['issueID']);
				$wfIssues = new wfIssues();
				$wfIssues->updateIssue($issueID, 'delete');
				wfScanEngine::refreshScanNotification($wfIssues);
			}
		}
		else {
			wfConfig::set('misconfiguredHowGetIPsChoice' . WORDFENCE_VERSION, '1');
		}
		return array('ok' => 1);
	}
	public static function ajax_switchLiveTrafficSecurityOnlyChoice_callback() {
		$choice = $_POST['choice'];
		if ($choice == 'yes') {
			wfConfig::set('liveTrafficEnabled', false);
		}
		else {
			wfConfig::set('switchLiveTrafficSecurityOnlyChoice', '1');
		}
		return array('ok' => 1);
	}
	public static function ajax_wordfenceSatisfactionChoice_callback() {
		wfConfig::set('satisfactionPromptDismissed', time());
		$choice = $_POST['choice'];
		if ($choice == 'feedback' && isset($_POST['feedback']) && !empty($_POST['feedback'])) {
			$api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion());
			$result = $api->call('plugin_feedback', array(), array('feedback' => $_POST['feedback']));
		}
		//else -- no additional action for yes/no
		return array('ok' => 1);
	}
	public static function ajax_dismissAdminNotice_callback() {
		if (isset($_POST['id'])) {
			wfAdminNoticeQueue::removeAdminNotice($_POST['id']);
		}
		return array('ok' => 1);
	}
	public static function ajax_hideNoticeForUser_callback() {
		if (isset($_POST['id'])) {
			self::hideNoticeForUser($_POST['id']);
		}
		return array('ok' => 1);
	}
	public static function ajax_updateConfig_callback(){
		$key = $_POST['key'];
		$val = $_POST['val'];
		wfConfig::set($key, $val);
		
		if ($key == 'howGetIPs') {
			wfConfig::set('detectProxyNextCheck', false, wfConfig::DONT_AUTOLOAD);
			$ipAll = wfUtils::getIPPreview();
			$ip = wfUtils::getIP(true);
			return array('ok' => 1, 'ip' => $ip, 'ipAll' => $ipAll);
		}
		
		return array('ok' => 1);
	}
	public static function ajax_checkHtaccess_callback(){
		if(wfUtils::isNginx()){
			return array('nginx' => 1);
		}
		$file = wfCache::getHtaccessPath();
		if(! $file){
			return array('err' => __("We could not find your .htaccess file to modify it.", 'wordfence'));
		}
		$fh = @fopen($file, 'r+');
		if(! $fh){
			$err = error_get_last();
			return array('err' => sprintf(/* translators: Error message. */ __("We found your .htaccess file but could not open it for writing: %s", 'wordfence'), $err['message']));
		}
		return array('ok' => 1);
	}
	public static function ajax_downloadHtaccess_callback(){
		$url = site_url();
		$url = preg_replace('/^https?:\/\//i', '', $url);
		$url = preg_replace('/[^a-zA-Z0-9\.]+/', '_', $url);
		$url = preg_replace('/^_+/', '', $url);
		$url = preg_replace('/_+$/', '', $url);
		header('Content-Type: application/octet-stream');
		header('Content-Disposition: attachment; filename="htaccess_Backup_for_' . $url . '.txt"');
		$file = wfCache::getHtaccessPath();
		readfile($file);
		die();
	}
	public static function ajax_downloadLogFile_callback() {
		if (!isset($_GET['logfile'])) {
			status_header(400);
			nocache_headers();
			exit;
		}
		
		wfErrorLogHandler::outputErrorLog(stripslashes($_GET['logfile'])); //exits
	}
	public static function _blocksAJAXReponse(&$hasCountryBlock = false, $offset = 0, $sortColumn = 'type', $sortDirection = 'ascending', $filter = '') {
		$includeAutomatic = wfConfig::get('displayAutomaticBlocks');
		$types = array(); //Empty array is all
		if (!$includeAutomatic) {
			$types = array(wfBlock::TYPE_IP_MANUAL, wfBlock::TYPE_IP_AUTOMATIC_PERMANENT, wfBlock::TYPE_COUNTRY, wfBlock::TYPE_PATTERN);
		}
		
		if (empty($filter)) {
			$blocks = wfBlock::allBlocks(true, $types, $offset, WORDFENCE_BLOCKED_IPS_PER_PAGE, $sortColumn, $sortDirection);
		}
		else {
			$blocks = wfBlock::filteredBlocks(true, $types, $offset, WORDFENCE_BLOCKED_IPS_PER_PAGE, $sortColumn, $sortDirection, $filter);
		}
		$dateFormat = get_option('date_format') . ' ' . get_option('time_format');
		$hasCountryBlock = wfUtils::array_first(wfBlock::countryBlocks(true));
		if ($hasCountryBlock !== null) {
			$hasCountryBlock = json_encode($hasCountryBlock->editValues());
		}
		else {
			$hasCountryBlock = '';
		}
		
		$response = array();
		foreach ($blocks as $b) {
			$skip = false;
			
			$entry = array();
			$entry['id'] = $b->id;
			$entry['typeSort'] = $b->type;
			$entry['typeDisplay'] = esc_html(wfBlock::nameForType($b->type));
			
			switch ($b->type) {
				case wfBlock::TYPE_IP_MANUAL:
					$entry['editType'] = 'ip-address';
				case wfBlock::TYPE_IP_AUTOMATIC_PERMANENT:
					$entry['detailSort'] = base64_encode(wfUtils::inet_pton($b->ip));
					$entry['detailDisplay'] = esc_html($b->ip);
					break;
				case wfBlock::TYPE_IP_AUTOMATIC_TEMPORARY:
				case wfBlock::TYPE_WFSN_TEMPORARY:
				case wfBlock::TYPE_RATE_BLOCK:
				case wfBlock::TYPE_RATE_THROTTLE:
				case wfBlock::TYPE_LOCKOUT:
					if (!$includeAutomatic) { $skip = true; }
					$entry['detailSort'] = base64_encode(wfUtils::inet_pton($b->ip));
					$entry['detailDisplay'] = esc_html($b->ip);
					break;
				case wfBlock::TYPE_COUNTRY:
					require(WORDFENCE_PATH . 'lib/wfBulkCountries.php'); /** @var array $wfBulkCountries */
					ksort($wfBulkCountries);
					$countries = $b->countries;
					sort($countries);
					$entry['editable'] = 1;
					$entry['editType'] = 'country';
					$entry['editValues'] = json_encode($b->editValues());
					$entry['detailSort'] = $b->blockLogin . '|' . $b->blockSite . '|' . implode('|', $countries);
					$entry['detailDisplay'] = '';
					if ($countries == array_keys($wfBulkCountries)) {
						$entry['detailDisplay'] = __('All Countries', 'wordfence');
					}
					else if (count($countries) == 1) {
						$entry['detailDisplay'] = __('1 Country', 'wordfence');
					}
					else {
						$entry['detailDisplay'] = sprintf(/* translators: Number of countries. */ __('%d Countries', 'wordfence'), count($countries));
					}
					
					if ($b->blockLogin && $b->blockSite) {
						$entry['detailDisplay'] .= ' (' . __('Entire Site', 'wordfence') . ')';
					}
					else if ($b->blockLogin) {
						$entry['detailDisplay'] .= ' (' . __('Login Only', 'wordfence') . ')';
					}
					else if ($b->blockSite) {
						$entry['detailDisplay'] .= ' (' . __('Site Except Login', 'wordfence') . ')';
					}
					
					break;
				case wfBlock::TYPE_PATTERN:
					$entry['editType'] = 'custom-pattern';
					$entry['detailSort'] = base64_encode($b->ipRange . '|' . $b->userAgent . '|' . $b->referrer . '|' . $b->hostname);
					$components = array();
					if (!empty($b->ipRange)) { $components[] = __('IP Range', 'wordfence') . ' - ' . $b->ipRange; }
					if (!empty($b->userAgent)) { $components[] = __('User Agent', 'wordfence') . ' - ' . $b->userAgent; }
					if (!empty($b->referrer)) { $components[] = __('Referrer', 'wordfence') . ' - ' . $b->referrer; }
					if (!empty($b->hostname)) { $components[] = __('Hostname', 'wordfence') . ' - ' . $b->hostname; }
					$entry['detailDisplay'] = esc_html(implode(', ', $components));
					break;
			}
			
			if ($skip) { continue; }
			
			$entry['ruleAdded'] = $b->blockedTime;
			$entry['ruleAddedSort'] = $b->blockedTime;
			$entry['ruleAddedDisplay'] = esc_html(wfUtils::formatLocalTime($dateFormat, $b->blockedTime));
			$entry['reasonSort'] = esc_attr($b->reason);
			$entry['reasonDisplay'] = esc_html($b->reason);
			$entry['expiration'] = $b->expiration;
			$entry['expirationSort'] = $b->expiration;
			$entry['expirationDisplay'] = ($b->expiration == wfBlock::DURATION_FOREVER ? __('Permanent', 'wordfence') : esc_html(wfUtils::formatLocalTime($dateFormat, $b->expiration)));
			$entry['blockCountSort'] = $b->blockedHits;
			$entry['blockCountDisplay'] = $b->blockedHits;
			$entry['lastAttemptSort'] = $b->lastAttempt;
			$entry['lastAttemptDisplay'] = ($b->lastAttempt == 0 ? __('Never', 'wordfence') : esc_html(wfUtils::formatLocalTime($dateFormat, $b->lastAttempt)));
			
			$response[] = $entry;
		}
		return $response;
	}
	public static function ajax_getBlocks_callback() {
		$offset = 0;
		if (isset($_POST['offset'])) {
			$offset = (int) $_POST['offset'];
		}
		
		$sortColumn = 'type';
		if (isset($_POST['sortColumn']) && in_array($_POST['sortColumn'], array('type', 'detail', 'ruleAdded', 'reason', 'expiration', 'blockCount', 'lastAttempt'))) {
			$sortColumn = $_POST['sortColumn'];
		}
		
		$sortDirection = 'ascending';
		if (isset($_POST['sortDirection']) && in_array($_POST['sortDirection'], array('ascending', 'descending'))) {
			$sortDirection = $_POST['sortDirection'];
		}
		
		$filter = '';
		if (isset($_POST['blocksFilter'])) {
			$filter = $_POST['blocksFilter'];
		}
		
		$hasCountryBlock = false;
		$blocks = self::_blocksAJAXReponse($hasCountryBlock, $offset, $sortColumn, $sortDirection, $filter);
		return array('blocks' => $blocks, 'hasCountryBlock' => $hasCountryBlock);
	}
	public static function ajax_createBlock_callback() {
		$offset = 0;
		if (isset($_POST['offset'])) {
			$offset = (int) $_POST['offset'];
		}
		
		$sortColumn = 'type';
		if (isset($_POST['sortColumn']) && in_array($_POST['sortColumn'], array('type', 'detail', 'ruleAdded', 'reason', 'expiration', 'blockCount', 'lastAttempt'))) {
			$sortColumn = $_POST['sortColumn'];
		}
		
		$sortDirection = 'ascending';
		if (isset($_POST['sortDirection']) && in_array($_POST['sortDirection'], array('ascending', 'descending'))) {
			$sortDirection = $_POST['sortDirection'];
		}
		
		$filter = '';
		if (isset($_POST['blocksFilter'])) {
			$filter = $_POST['blocksFilter'];
		}
		
		if (!empty($_POST['payload']) && ($payload = json_decode(stripslashes($_POST['payload']), true)) !== false) {
			try {
				$error = wfBlock::validate($payload);
				if ($error !== true) {
					return array(
						'error' => $error,
					);
				}
				
				wfBlock::create($payload);
				$hasCountryBlock = false;
				$blocks = self::_blocksAJAXReponse($hasCountryBlock, $offset, $sortColumn, $sortDirection, $filter);
				return array('success' => true, 'blocks' => $blocks, 'hasCountryBlock' => $hasCountryBlock);
			}
			catch (Exception $e) {
				return array(
					'error' => __('An error occurred while creating the block.', 'wordfence'),
				);
			}
		}
		
		return array(
			'error' => __('No block parameters were provided.', 'wordfence'),
		);
	}
	public static function ajax_deleteBlocks_callback() {
		$offset = 0;
		if (isset($_POST['offset'])) {
			$offset = (int) $_POST['offset'];
		}
		
		$sortColumn = 'type';
		if (isset($_POST['sortColumn']) && in_array($_POST['sortColumn'], array('type', 'detail', 'ruleAdded', 'reason', 'expiration', 'blockCount', 'lastAttempt'))) {
			$sortColumn = $_POST['sortColumn'];
		}
		
		$sortDirection = 'ascending';
		if (isset($_POST['sortDirection']) && in_array($_POST['sortDirection'], array('ascending', 'descending'))) {
			$sortDirection = $_POST['sortDirection'];
		}
		
		$filter = '';
		if (isset($_POST['blocksFilter'])) {
			$filter = $_POST['blocksFilter'];
		}
		
		if (!empty($_POST['blocks']) && ($blocks = json_decode(stripslashes($_POST['blocks']), true)) !== false && is_array($blocks)) {
			$removed = wfBlock::removeBlockIDs($blocks, true); //wfBlock::removeBlockIDs sanitizes the array
			if($removed!==false) {
				foreach($removed as $block) {
					self::clearLockoutCounters(wfUtils::inet_ntop($block->IP));
				}
			}
			$hasCountryBlock = false;
			$blocks = self::_blocksAJAXReponse($hasCountryBlock, $offset, $sortColumn, $sortDirection, $filter);
			return array('success' => true, 'blocks' => $blocks, 'hasCountryBlock' => $hasCountryBlock);
		}
		
		return array(
			'error' => __('No blocks were provided.', 'wordfence'),
		);
	}
	public static function ajax_makePermanentBlocks_callback() {
		$offset = 0;
		if (isset($_POST['offset'])) {
			$offset = (int) $_POST['offset'];
		}
		
		$sortColumn = 'type';
		if (isset($_POST['sortColumn']) && in_array($_POST['sortColumn'], array('type', 'detail', 'ruleAdded', 'reason', 'expiration', 'blockCount', 'lastAttempt'))) {
			$sortColumn = $_POST['sortColumn'];
		}
		
		$sortDirection = 'ascending';
		if (isset($_POST['sortDirection']) && in_array($_POST['sortDirection'], array('ascending', 'descending'))) {
			$sortDirection = $_POST['sortDirection'];
		}
		
		$filter = '';
		if (isset($_POST['blocksFilter'])) {
			$filter = $_POST['blocksFilter'];
		}
		
		if (!empty($_POST['updates']) && ($updates = json_decode(stripslashes($_POST['updates']), true)) !== false && is_array($updates)) {
			wfBlock::makePermanentBlockIDs($updates); //wfBlock::makePermanentBlockIDs sanitizes the array
			$hasCountryBlock = false;
			$blocks = self::_blocksAJAXReponse($hasCountryBlock, $offset, $sortColumn, $sortDirection, $filter);
			return array('success' => true, 'blocks' => $blocks, 'hasCountryBlock' => $hasCountryBlock);
		}
		
		return array(
			'error' => __('No blocks were provided.', 'wordfence'),
		);
	}
	public static function ajax_installLicense_callback() {
		if (!empty($_POST['license'])) {
			$statusChange = array_key_exists('status_change', $_POST) ? filter_var($_POST['status_change'], FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE) : null;
			$license = strtolower(trim($_POST['license']));
			if (!preg_match('/^[a-fA-F0-9]+$/', $license)) {
				return array(
					'error' => __('The license key entered is not in a valid format. It must contain only numbers and the letters A-F.', 'wordfence'),
				);
			}
			
			$existingLicense = strtolower(wfConfig::get('apiKey', ''));
			if ($existingLicense != $license) { //Key changed, try activating
				$api = new wfAPI($license, wfUtils::getWPVersion());
				try {
					$parameters = array();
					if (!empty($existingLicense))
						$parameters['previousLicense'] = $existingLicense;
					$res = $api->call('check_api_key', array(), $parameters);
					if ($res['ok'] && isset($res['isPaid'])) {
						$isPaid = wfUtils::truthyToBoolean($res['isPaid']);
						wfConfig::set('apiKey', $license);
						wfConfig::set('isPaid', $isPaid); //res['isPaid'] is boolean coming back as JSON and turned back into PHP struct. Assuming JSON to PHP handles bools.
						if ($statusChange !== false) {
							self::licenseStatusChanged();
						}
						if (!$isPaid) {
							wfConfig::set('keyType', wfLicense::KEY_TYPE_FREE);
						}
						self::scheduleCrons();
						return array(
							'success' => 1,
							'isPaid' => wfConfig::get('isPaid') ? 1 : 0,
							'type' => wfLicense::current()->getType()
						);
					}
					else if (isset($res['_hasKeyConflict']) && $res['_hasKeyConflict']) {
						return array(
							'error' => __('The license provided is already in use on another site.', 'wordfence'),
						);
					}
					else {
						return array(
							'error' => __('The Wordfence activation server returned an unexpected response. Please try again.', 'wordfence'),
						);
					}
				}
				catch (Exception $e) {
					return array(
						'error' => __('We received an error while trying to activate the license with the Wordfence servers: ', 'wordfence') . wp_kses($e->getMessage(), array())
					);
				}
			}
			else {
				if ($statusChange === true) {
					self::licenseStatusChanged();
				}
				return array(
					'success' => 1,
					'isPaid' => wfConfig::get('isPaid') ? 1 : 0,
					'type' => wfLicense::current()->getType()
				);
			}
		}
		
		return array(
			'error' => __('No license was provided to install.', 'wordfence'),
		);
	}
	public static function ajax_recordTOUPP_callback() {
		$api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion());
		$result = $api->call('record_toupp', array(), array());
		wfConfig::set('touppBypassNextCheck', 1); //In case this call kicks off the cron that checks, this avoids the race condition of that setting the prompt as being needed at the same time we've just recorded it as accepted
		wfConfig::set('touppPromptNeeded', 0);
		return array(
			'success' => 1,
		);
	}
	public static function ajax_mailingSignup_callback() {
		if (isset($_POST['emails'])) {
			$emails = @json_decode(stripslashes($_POST['emails']), true);
			if (is_array($emails) && count($emails)) {
				$api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion());
				$result = $api->call('mailing_signup', array(), array('signup' => json_encode(array('emails' => $emails)), 'ip' => wfUtils::getIP()));
			}
		}
		
		return array(
			'success' => 1,
		);
	}
	public static function ajax_enableAllOptionsPage_callback() {
		wfConfig::set('displayTopLevelOptions', 1);
		$n = wfNotification::getNotificationForCategory('wfplugin_devalloptions');
		if ($n !== null) {
			$n->markAsRead();
		}
		
		$response = array('success' => true);
		if (function_exists('network_admin_url') && is_multisite()) {
			$response['redirect'] = network_admin_url('admin.php?page=WordfenceOptions');
		}
		else {
			$response['redirect'] = admin_url('admin.php?page=WordfenceOptions');
		}
		
		return $response;
	}
	public static function ajax_restoreDefaults_callback() {
		if (!empty($_POST['section'])) {
			if (wfConfig::restoreDefaults($_POST['section'])) {
				return array(
					'success' => true,
				);
			}
			else {
				return array(
					'error' => __('An unknown configuration section was provided.', 'wordfence'),
				);
			}
		}
		
		return array(
			'error' => __('No configuration section was provided.', 'wordfence'),
		);
	}
	public static function ajax_saveOptions_callback() {
		if (!empty($_POST['changes']) && ($changes = json_decode(stripslashes($_POST['changes']), true)) !== false) {
			try {
				$errors = wfConfig::validate($changes);
				if ($errors !== true) {
					if (count($errors) == 1) {
						return array(
							'error' => sprintf(/* translators: Error message. */ __('An error occurred while saving the configuration: %s', 'wordfence'), $errors[0]['error']),
						);
					}
					else if (count($errors) > 1) {
						$compoundMessage = array();
						foreach ($errors as $e) {
							$compoundMessage[] = $e['error'];
						}
						return array(
							'error' => sprintf(/* translators: Error message. */ __('Errors occurred while saving the configuration: %s', 'wordfence'), implode(', ', $compoundMessage)),
						);
					}
					
					return array(
						'error' => __('Errors occurred while saving the configuration.', 'wordfence'),
					);
				}
				
				wfConfig::save(wfConfig::clean($changes));
				
				$response = array('success' => true);
				if (!empty($_POST['page']) && preg_match('/^Wordfence/i', $_POST['page'])) {
					if ($_POST['page'] == 'WordfenceOptions' && isset($changes['displayTopLevelOptions']) && !wfUtils::truthyToBoolean($changes['displayTopLevelOptions'])) {
						if (function_exists('network_admin_url') && is_multisite()) {
							$response['redirect'] = network_admin_url('admin.php?page=Wordfence');
						}
						else {
							$response['redirect'] = admin_url('admin.php?page=Wordfence');
						}
					}
				}
				
				return $response;
			}
			catch (wfWAFStorageFileException $e) {
				return array(
					'error' => __('An error occurred while saving the configuration.', 'wordfence'),
				);
			}
			catch (wfWAFStorageEngineMySQLiException $e) {
				return array(
					'error' => __('An error occurred while saving the configuration.', 'wordfence'),
				);
			}
			catch (Exception $e) {
				return array(
					'error' => $e->getMessage(),
				);
			}
		}
		
		return array(
			'error' => __('No configuration changes were provided to save.', 'wordfence'),
		);
	}

	public static function ajax_setDeactivationOption_callback() {
		$key = array_key_exists('option', $_POST) ? $_POST['option'] : null;
		$option = wfDeactivationOption::forKey($key);
		if ($option === null) {
			return array(
				'error' => __('Invalid option specified', 'wordfence')
			);
		}
		wfConfig::set('deleteTablesOnDeact', $option->deletesMain());
		\WordfenceLS\Controller_Settings::shared()->set('delete-deactivation', $option->deletesLoginSecurity());
		return array(
			'success' => true
		);
	}
	
	public static function ajax_updateIPPreview_callback() {
		$howGet = $_POST['howGetIPs'];
		
		$validIPs = array();
		$invalidIPs = array();
		$testIPs = preg_split('/[\r\n,]+/', $_POST['howGetIPs_trusted_proxies']);
		foreach ($testIPs as $val) {
			if (strlen($val) > 0) {
				if (wfUtils::isValidIP($val) || wfUtils::isValidCIDRRange($val)) {
					$validIPs[] = $val;
				}
				else {
					$invalidIPs[] = $val;
				}
			}
		}
		$trustedProxies = $validIPs;
		
		$preset = $_POST['howGetIPs_trusted_proxy_preset'];
		$presets = wfConfig::getJSON('ipResolutionList', array());
		if (is_array($presets) && isset($presets[$preset])) {
			$testIPs = array_merge($presets[$preset]['ipv4'], $presets[$preset]['ipv6']);
			foreach ($testIPs as $val) {
				if (strlen($val) > 0) {
					if (wfUtils::isValidIP($val) || wfUtils::isValidCIDRRange($val)) {
						$trustedProxies[] = $val;
					}
				}
			}
		}
		
		$ipAll = wfUtils::getIPPreview($howGet, $trustedProxies);
		$ip = wfUtils::getIPForField($howGet, $trustedProxies);
		return array('ok' => 1, 'ip' => $ip, 'ipAll' => $ipAll, 'resolvedProxies' => $trustedProxies);
	}

	public static function ajax_hideFileHtaccess_callback(){
		$issues = new wfIssues();
		$issue  = $issues->getIssueByID((int) $_POST['issueID']);
		if (!$issue) {
			return array('errorMsg' => __("We could not find that issue in our database.", 'wordfence'));
		}
		
		if (!function_exists('get_home_path')) {
			include_once(ABSPATH . 'wp-admin/includes/file.php');
		}
		
		$homeURL = get_home_url();
		$components = parse_url($homeURL);
		if ($components === false) {
			return array('errorMsg' => __("An error occurred while trying to hide the file.", 'wordfence'));
		}
		
		$sitePath = '';
		if (isset($components['path'])) {
			$sitePath = trim($components['path'], '/');
		}
		
		$homePath = wfUtils::getHomePath();
		$file = $issue['data']['file'];
		$localFile = ABSPATH . '/' . $file; //The scanner uses ABSPATH as its base rather than get_home_path()
		$localFile = realpath($localFile);
		if (strpos($localFile, $homePath) !== 0) {
			return array('errorMsg' => __("An invalid file was requested for hiding.", 'wordfence'));
		}
		$localFile = substr($localFile, strlen($homePath));
		$absoluteURIPath = trim($sitePath . '/' . $localFile, '/');
		$regexLocalFile = preg_replace('#/#', '/+', preg_quote($absoluteURIPath));
		$filename = basename($localFile);
		
		$htaccessContent = <<<HTACCESS
<IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{REQUEST_URI} ^/?{$regexLocalFile}$
        RewriteRule .* - [F,L,NC]
</IfModule>
<IfModule !mod_rewrite.c>
	<Files "{$filename}">
	<IfModule mod_authz_core.c>
		Require all denied
	</IfModule>
	<IfModule !mod_authz_core.c>
		Order deny,allow
		Deny from all
	</IfModule>
	</Files>
</IfModule>
HTACCESS;

		if (!wfUtils::htaccessPrepend($htaccessContent)) {
			return array('errorMsg' => __("You don't have permission to repair .htaccess. You need to either fix the file manually using FTP or change the file permissions and ownership so that your web server has write access to repair the file.", 'wordfence'));
		}
		$issues->updateIssue((int) $_POST['issueID'], 'delete');
		wfScanEngine::refreshScanNotification($issues);
		$counts = $issues->getIssueCounts();
		return array(
			'ok' => 1,
			'issueCounts' => $counts,
		);
	}
	public static function ajax_unlockOutIP_callback(){
		$IP = $_POST['IP'];
		wfBlock::unlockOutIP($IP);
		self::clearLockoutCounters($IP);
		return array('ok' => 1);
	}
	public static function ajax_unblockIP_callback(){
		$IP = $_POST['IP'];
		wfBlock::unblockIP($IP);
		self::clearLockoutCounters($IP);
		return array('ok' => 1);
	}
	public static function ajax_permBlockIP_callback(){
		$IP = $_POST['IP'];
		wfBlock::createIP(__('Manual permanent block by admin', 'wordfence'), $IP, wfBlock::DURATION_FOREVER, time(), false, 0, wfBlock::TYPE_IP_MANUAL);
		return array('ok' => 1);
	}
	public static function ajax_unblockRange_callback(){
		$id = trim($_POST['id']);
		wfBlock::removeBlockIDs(array($id));
		return array('ok' => 1);
	}
	
	public static function ajax_whois_callback(){
		$val = trim($_POST['val']);
		$val = preg_replace('/[^a-zA-Z0-9\.\-:]+/', '', $val);
		$api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion());
		try {
			$result = $api->call('whois', array(), array(
				'val' => $val,
				));
			return array('ok' => 1, 'result' => $result['result']);
		}
		catch (wfAPICallErrorResponseException $e) {
			return array('ok' => 0);
		}
	}
	public static function ajax_recentTraffic_callback(){
		$ip = trim($_POST['ip']);
		try {
			$response = self::IPTraf($ip);
			$reverseLookup = $response['reverseLookup'];
			$results = $response['results'];
			ob_start();
			require(dirname(__FILE__) . '/IPTrafList.php');
			$content = ob_get_clean();
			return array('ok' => 1, 'result' => $content);
		} catch (InvalidArgumentException $e) {
			return array('errorMsg' => $e->getMessage());
		}
	}
	public static function ajax_blockIP_callback() {
		$IP = trim($_POST['IP']);
		$perm = (isset($_POST['perm']) && $_POST['perm'] == '1') ? wfBlock::DURATION_FOREVER : wfConfig::getInt('blockedTime');
		if (!wfUtils::isValidIP($IP)) {
			return array('err' => 1, 'errorMsg' => __("Please enter a valid IP address to block.", 'wordfence'));
		}
		if ($IP == wfUtils::getIP()) {
			return array('err' => 1, 'errorMsg' => __("You can't block your own IP address.", 'wordfence'));
		}
		$forcedWhitelistEntry = false;
		if (wfBlock::isWhitelisted($IP, $forcedWhitelistEntry)) {
			$message = sprintf(/* translators: IP address. */ __("The IP address %s is allowlisted and can't be blocked. You can remove this IP from the allowlist on the Wordfence options page.", 'wordfence'), wp_kses($IP, array()));
			if ($forcedWhitelistEntry) {
				$message = sprintf(/* translators: IP address. */ __("The IP address %s is in a range of IP addresses that Wordfence does not block. The IP range may be internal or belong to a service safe to allow access for.", 'wordfence'), wp_kses($IP, array()));
			}
			return array('err' => 1, 'errorMsg' => $message);
		}
		if (wfConfig::get('neverBlockBG') != 'treatAsOtherCrawlers') { //Either neverBlockVerified or neverBlockUA is selected which means the user doesn't want to block google
			if (wfCrawl::isVerifiedGoogleCrawler($IP)) {
				return array('err' => 1, 'errorMsg' => __("The IP address you're trying to block belongs to Google. Your options are currently set to not block these crawlers. Change this in Wordfence options if you want to manually block Google.", 'wordfence'));
			}
		}
		wfBlock::createIP($_POST['reason'], $IP, $perm);
		wfActivityReport::logBlockedIP($IP, null, 'manual');
		return array('ok' => 1);
	}
	public static function ajax_avatarLookup_callback() {
		$ids = explode(',', $_POST['ids']);
		$res = array();
		foreach ($ids as $id) {
			$avatar = get_avatar($id, 16);
			if ($avatar) {
				$res[$id] = $avatar;
			}
		}
		return array('ok' => 1, 'avatars' => $res);
	}
	public static function ajax_reverseLookup_callback(){
		$ips = explode(',', $_POST['ips']);
		$res = array();
		foreach($ips as $ip){
			$res[$ip] = wfUtils::reverseLookup($ip);
		}
		return array('ok' => 1, 'ips' => $res);
	}
	public static function ajax_deleteIssue_callback(){
		$wfIssues = new wfIssues();
		$issueID = $_POST['id'];
		$wfIssues->deleteIssue($issueID);
		wfScanEngine::refreshScanNotification($wfIssues);
		return array('ok' => 1);
	}
	public static function ajax_updateAllIssues_callback(){
		$op = $_POST['op'];
		$i = new wfIssues();
		if($op == 'deleteIgnored'){
			$i->deleteIgnored();
		} else if($op == 'deleteNew'){
			$i->deleteNew();
		} else if($op == 'ignoreAllNew'){
			$i->ignoreAllNew();
		} else {
			return array('errorMsg' => __("An invalid operation was called.", 'wordfence'));
		}
		wfScanEngine::refreshScanNotification($i);
		return array('ok' => 1);
	}
	public static function ajax_updateIssueStatus_callback(){
		$wfIssues = new wfIssues();
		$status = $_POST['status'];
		$issueID = $_POST['id'];
		if(! preg_match('/^(?:new|delete|ignoreP|ignoreC)$/', $status)){
			return array('errorMsg' => __("An invalid status was specified when trying to update that issue.", 'wordfence'));
		}
		$wfIssues->updateIssue($issueID, $status);
		wfScanEngine::refreshScanNotification($wfIssues);
		
		$counts = $wfIssues->getIssueCounts();
		return array(
			'ok' => 1,
			'issueCounts' => $counts,
			);
	}
	public static function ajax_killScan_callback(){
		wordfence::status(1, 'info', __("Scan stop request received.", 'wordfence'));
		wordfence::status(10, 'info', 'SUM_KILLED:' . __("A request was received to stop the previous scan.", 'wordfence'));
		wfUtils::clearScanLock(); //Clear the lock now because there may not be a scan running to pick up the kill request and clear the lock
		wfScanEngine::requestKill();
		wfConfig::remove('scanStartAttempt');
		wfConfig::set('lastScanFailureType', false);
		return array(
			'ok' => 1,
			);
	}
	public static function ajax_loadIssues_callback(){
		$offset = isset($_POST['offset']) ? intval($_POST['offset']) : 0;
		$limit = isset($_POST['limit']) ? intval($_POST['limit']) : WORDFENCE_SCAN_ISSUES_PER_PAGE;
		$ignoredOffset = isset($_POST['ignoredOffset']) ? intval($_POST['ignoredOffset']) : 0;
		$ignoredLimit = isset($_POST['ignoredLimit']) ? intval($_POST['ignoredLimit']) : WORDFENCE_SCAN_ISSUES_PER_PAGE;
		
		$issues = wfIssues::shared()->getIssues($offset, $limit, $ignoredOffset, $ignoredLimit);
		$issueCounts = array_merge(array('new' => 0, 'ignoreP' => 0, 'ignoreC' => 0), wfIssues::shared()->getIssueCounts());
		
		return array(
			'issues' => $issues,
			'issueCounts' => $issueCounts,
			);
	}
	public static function ajax_ticker_callback() {
		$wfdb = new wfDB();
		$table_wfStatus = wfDB::networkTable('wfStatus');
		$serverTime = $wfdb->querySingle("select unix_timestamp()");
		$jsonData = array(
			'serverTime' => $serverTime,
			'serverMicrotime' => microtime(true),
			'msg' => wp_kses_data((string) $wfdb->querySingle("SELECT msg FROM {$table_wfStatus} WHERE level < 3 AND ctime > (UNIX_TIMESTAMP() - 3600) ORDER BY ctime DESC LIMIT 1")),
			);
		$events = array();
		if (get_site_option('wordfence_syncAttackDataAttempts') > 10) {
			self::syncAttackData(false);
		}
		$results = self::ajax_loadLiveTraffic_callback();
		$events = $results['data'];
		if (isset($results['sql'])) {
			$jsonData['sql'] = $results['sql'];
		}
		
		$jsonData['events'] = $events;
		return $jsonData;
	}
	public static function ajax_activityLogUpdate_callback() {
		global $wpdb;
		$statusTable = wfDB::networkTable('wfStatus');
		$row = $wpdb->get_row("SELECT ctime, msg FROM {$statusTable} WHERE level < 3 AND ctime > (UNIX_TIMESTAMP() - 3600) ORDER BY ctime DESC LIMIT 1", ARRAY_A);
		$lastMessage = __('Idle', 'wordfence');
		
		$lastScanCompleted = wfConfig::get('lastScanCompleted');
		if ($row) {
			$lastMessage = '[' . strtoupper(wfUtils::formatLocalTime('M d H:i:s', $row['ctime'])) . '] ' . wp_kses_data($row['msg']);
		}
		else if ($lastScanCompleted == 'ok') {
			$scanLastCompletion = (int) wfScanner::shared()->lastScanTime();
			if ($scanLastCompletion) {
				$lastMessage = sprintf(/* translators: Localized date. */ __('Scan completed on %s', 'wordfence'), wfUtils::formatLocalTime(get_option('date_format') . ' ' . get_option('time_format'), $scanLastCompletion));
			}
		}
		else if ($lastScanCompleted === false || empty($lastScanCompleted)) {
			//Do nothing
		}
		else {
			$lastMessage = __('Last scan failed', 'wordfence');
		}
		
		$issues = wfIssues::shared();
		$scanFailed = $issues->hasScanFailed();
		
		$scanner = wfScanner::shared();
		$stages = $scanner->stageStatus();
		foreach ($stages as $key => &$value) {
			switch ($value) {
				case wfScanner::STATUS_PENDING:
					$value = 'wf-scan-step';
					break;
				case wfScanner::STATUS_RUNNING:
				case wfScanner::STATUS_RUNNING_WARNING:
					if ($scanFailed) {
						$value = 'wf-scan-step';
						break;
					}
					$value = 'wf-scan-step wf-scan-step-running';
					break;
				case wfScanner::STATUS_COMPLETE_SUCCESS:
					$value = 'wf-scan-step wf-scan-step-complete-success';
					break;
				case wfScanner::STATUS_COMPLETE_WARNING:
					$value = 'wf-scan-step wf-scan-step-complete-warning';
					break;
				case wfScanner::STATUS_PREMIUM:
					$value = 'wf-scan-step wf-scan-step-premium';
					break;
				case wfScanner::STATUS_DISABLED:
					$value = 'wf-scan-step wf-scan-step-disabled';
					break;
			}
		}
		
		$stats = array(
			'wf-scan-results-stats-postscommentsfiles' => $scanner->getSummaryItem(wfScanner::SUMMARY_SCANNED_POSTS, 0) + $scanner->getSummaryItem(wfScanner::SUMMARY_SCANNED_COMMENTS, 0) + $scanner->getSummaryItem(wfScanner::SUMMARY_SCANNED_FILES, 0),
			'wf-scan-results-stats-themesplugins' => $scanner->getSummaryItem(wfScanner::SUMMARY_SCANNED_PLUGINS, 0) + $scanner->getSummaryItem(wfScanner::SUMMARY_SCANNED_THEMES, 0),
			'wf-scan-results-stats-users' => $scanner->getSummaryItem(wfScanner::SUMMARY_SCANNED_USERS, 0),
			'wf-scan-results-stats-urls' => $scanner->getSummaryItem(wfScanner::SUMMARY_SCANNED_URLS, 0),
			'wf-scan-results-stats-issues' => $issues->getIssueCount(),
		);
		
		$lastIssueUpdateTimestamp = wfIssues::shared()->getLastIssueUpdateTimestamp();
		$issues = 0;
		$issueCounts = array_merge(array('new' => 0, 'ignoreP' => 0, 'ignoreC' => 0), wfIssues::shared()->getIssueCounts());
		if ($lastIssueUpdateTimestamp > $_POST['lastissuetime']) {
			$issues = wfIssues::shared()->getIssues(0, WORDFENCE_SCAN_ISSUES_PER_PAGE, 0, WORDFENCE_SCAN_ISSUES_PER_PAGE);
		}
		
		$timeLimit = intval(wfConfig::get('scan_maxDuration'));
		if ($timeLimit < 1) {
			$timeLimit = WORDFENCE_DEFAULT_MAX_SCAN_TIME;
		}
		
		$scanFailedHTML = '';
		switch ($scanFailed) {
			case wfIssues::SCAN_FAILED_TIMEOUT:
				$scanFailedSeconds = time() - wfIssues::lastScanStatusUpdate();
				$scanFailedTiming = wfUtils::makeTimeAgo($scanFailedSeconds);
				
				if ($scanFailedSeconds > $timeLimit) {
					$scanFailedTiming = sprintf(/* translators: Time until. */ __('more than %s', 'wordfence'), wfUtils::makeTimeAgo($timeLimit));
				}
				
				$scanFailedHTML = wfView::create('scanner/scan-failed', array(
					'messageHTML' => sprintf(/* translators: Localized date. */ __('The current scan looks like it has failed. Its last status update was <span id="wf-scan-failed-time-ago">%s</span> ago. You may continue to wait in case it resumes or stop and restart the scan. Some sites may need adjustments to run scans reliably.', 'wordfence'), $scanFailedTiming) . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_FAILS) . '" target="_blank" rel="noopener noreferrer">' . __('Click here for steps you can try.', 'wordfence') . '<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>',
					'buttonTitle' => __('Cancel Scan', 'wordfence'), 
				))->render();
				
				break;
			case wfIssues::SCAN_FAILED_FORK_FAILED:
			case wfIssues::SCAN_FAILED_GENERAL:
				$scanFailedHTML = wfView::create('scanner/scan-failed', array(
					'messageHTML' => __('The previous scan has failed. Some sites may need adjustments to run scans reliably.', 'wordfence') . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_FAILS) . '" target="_blank" rel="noopener noreferrer">' . __('Click here for steps you can try.', 'wordfence') . '<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>',
					'buttonTitle' => __('Close', 'wordfence'),
				))->render();
				break;
			case wfIssues::SCAN_FAILED_DURATION_REACHED:
				$scanFailedHTML = wfView::create('scanner/scan-failed', array(
					'messageHTML' => sprintf(/* translators: Time limit (number). */ __('The previous scan has terminated because the time limit of %s was reached. This limit can be customized on the options page.', 'wordfence'), wfUtils::makeDuration($timeLimit)) . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_OPTION_OVERALL_TIME_LIMIT) . '" target="_blank" rel="noopener noreferrer" class="wf-inline-help"><i class="wf-fa wf-fa-question-circle-o" aria-hidden="true"></i><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>',
					'buttonTitle' => __('Close', 'wordfence'),
				))->render();
				break;
			case wfIssues::SCAN_FAILED_VERSION_CHANGE:
				$scanFailedHTML = wfView::create('scanner/scan-failed', array(
					'messageHTML' => esc_html__('The previous scan has terminated because we detected an update occurring during the scan.', 'wordfence'),
					'buttonTitle' => __('Close', 'wordfence'),
				))->render();
				break;
			case wfIssues::SCAN_FAILED_START_TIMEOUT:
			case wfIssues::SCAN_FAILED_CALLBACK_TEST_FAILED:
				$resumeAttempts = wfScanMonitor::getConfiguredResumeAttempts();
				if ($resumeAttempts > 0) {
					if ($resumeAttempts === 1)
						$resumeMessage = __('Wordfence will make one attempt to resume each failed scan stage. This scan may recover if this attempt is successful.', 'wordfence');
					else
						$resumeMessage = sprintf(__('Wordfence will make up to %d attempts to resume each failed scan stage. This scan may recover if one of these attempts is successful.', 'wordfence'), $resumeAttempts);
					$resumeMessage = " {$resumeMessage} ";
				}
				else {
					$resumeMessage = '';
				}
				$scanFailedHTML = wfView::create('scanner/scan-failed', array(
					'messageTitle' => __('Scan Stage Failed', 'wordfence'),
					'messageHTML' => __('A scan stage has failed to start. This is often because the site either cannot make outbound requests or is blocked from connecting to itself.', 'wordfence') . $resumeMessage . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_FAILED_START) . '" target="_blank" rel="noopener noreferrer">' . __('Click here for steps you can try.', 'wordfence') . '<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>',
					'buttonTitle' => __('Close', 'wordfence'),
				))->render();
				break;
			case wfIssues::SCAN_FAILED_API_SSL_UNAVAILABLE:
				$scanFailedHTML = wfView::create('scanner/scan-failed', array(
					'messageHTML' => esc_html__('Scans are not functional because SSL is unavailable.', 'wordfence'),
					'buttonTitle' => __('Close', 'wordfence'),
				))->render();
				break;
			case wfIssues::SCAN_FAILED_API_CALL_FAILED:
				$scanFailedHTML = wfView::create('scanner/scan-failed', array(
					'messageHTML' => __('The scan has failed because we were unable to contact the Wordfence servers. Some sites may need adjustments to run scans reliably.', 'wordfence') . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_FAILS) . '" target="_blank" rel="noopener noreferrer">' . __('Click here for steps you can try.', 'wordfence') . '<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>',
					'rawErrorHTML' => esc_html(wfConfig::get('lastScanCompleted', '')),
					'buttonTitle' => __('Close', 'wordfence'),
				))->render();
				break;
			case wfIssues::SCAN_FAILED_API_INVALID_RESPONSE:
			case wfIssues::SCAN_FAILED_API_ERROR_RESPONSE:
				$scanFailedHTML = wfView::create('scanner/scan-failed', array(
					'messageHTML' => __('The scan has failed because we received an unexpected response from the Wordfence servers. This may be a temporary error, though some sites may need adjustments to run scans reliably.', 'wordfence') . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_FAILS) . '" target="_blank" rel="noopener noreferrer">' . __('Click here for steps you can try.', 'wordfence') . '<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>',
					'rawErrorHTML' => esc_html(wfConfig::get('lastScanCompleted'), ''),
					'buttonTitle' => __('Close', 'wordfence'),
				))->render();
				break;
		}
		
		wfUtils::doNotCache();
		return array(
			'ok'                  => 1,
			'lastMessage'		  => $lastMessage,
			'items'               => self::getLog()->getStatusEvents($_POST['lastctime']),
			'currentScanID'       => wfScanner::shared()->lastScanTime(),
			'signatureUpdateTime' => wfConfig::get('signatureUpdateTime'),
			'scanFailedHTML' 	  => $scanFailedHTML,
			'scanStalled'		  => ($scanFailed == wfIssues::SCAN_FAILED_TIMEOUT || $scanFailed == wfIssues::SCAN_FAILED_START_TIMEOUT ? 1 : 0),
			'scanRunning'		  => wfScanner::shared()->isRunning() ? 1 : 0,
			'scanStages'		  => $stages,
			'scanStats'			  => $stats,
			'issues'			  => $issues,
			'issueCounts'		  => $issueCounts,
			'issueUpdateTimestamp'=> $lastIssueUpdateTimestamp,
		);
	}
	public static function ajax_updateAlertEmail_callback(){
		$email = trim($_POST['email']);
		if(! preg_match('/[^\@]+\@[^\.]+\.[^\.]+/', $email) || in_array(hash('sha256', $email), wfConfig::alertEmailBlacklist())){
			return array( 'err' => __("Invalid email address given.", 'wordfence'));
		}
		wfConfig::set('alertEmails', $email);
		return array('ok' => 1, 'email' => $email);
	}
	private static function resolveLocalFile($issue) {
		$data = $issue['data'];
		if (array_key_exists('realFile', $data)) {
			return $data['realFile'];
		}
		else {
			$file = $issue['data']['file'];
			$localFile = ABSPATH . '/' . $file;
			$localFile = realpath($localFile);
			if (strpos($localFile, ABSPATH) !== 0) {
				return null;
			}
			return $localFile;
		}
	}
	public static function ajax_bulkOperation_callback() {
		$op = sanitize_text_field($_POST['op']);
		if ($op == 'del' || $op == 'repair') {
			$idsRemoved = array();
			$filesWorkedOn = 0;
			$errors = array();
			$wfIssues = new wfIssues();
			$issueCount = $wfIssues->getIssueCount();
			for ($offset = floor($issueCount / 100) * 100; $offset >= 0; $offset -= 100) {
				$issues = $wfIssues->getIssues($offset, 100, 0, 0);
				foreach ($issues['new'] as $i) {
					if ($op == 'del' && @$i['data']['canDelete']) {
						$file = $i['data']['file'];
						$localFile = self::resolveLocalFile($i);
						if ($localFile === null)
							continue;
						if ($localFile === ABSPATH . 'wp-config.php') {
							$errors[] = esc_html__('Deleting an infected wp-config.php file must be done outside of Wordfence. The wp-config.php file contains your database credentials, which you will need to restore normal site operations. Your site will NOT function once the wp-config.php file has been deleted.', 'wordfence');
						}
						else if (@unlink($localFile)) {
							$wfIssues->updateIssue($i['id'], 'delete');
							$idsRemoved[] = $i['id'];
							$filesWorkedOn++;
						}
						else {
							$err = error_get_last();
							$errors[] = esc_html(sprintf(/* translators: 1. File path. 2. Error message. */ __('Could not delete file %1$s. Error was: %2$s', 'wordfence'), wp_kses($file, array()), wp_kses(str_replace(ABSPATH, '{WordPress Root}/', $err['message']), array())));
						}
					}
					else if ($op == 'repair' && @$i['data']['canFix']) {
						$file = $i['data']['file'];
						$localFile = self::resolveLocalFile($i);
						if ($localFile === null)
							continue;
						$result = array();
						if (isset($i['data']) && is_array($i['data']) && isset($i['data']['file']) && isset($i['data']['cType']) && ( //Basics
								$i['data']['cType'] == 'core' || //Core file
								($i['data']['cType'] == 'plugin' || $i['data']['cType'] == 'theme') && isset($i['data']['cName']) && isset($i['data']['cVersion']) //Plugin or Theme file
							)) {
							$result = self::getWPFileContent($i['data']['file'], $i['data']['cType'], isset($i['data']['cName']) ? $i['data']['cName'] : null, isset($i['data']['cVersion']) ? $i['data']['cVersion'] : null);
						}
						
						if (is_array($result) && isset($result['errorMsg'])) {
							$errors[] = esc_html($result['errorMsg']);
							continue;
						}
						else if (!is_array($result) || !isset($result['fileContent'])) {
							$errors[] = esc_html(sprintf(/* translators: File path. */ __('We could not retrieve the original file of %s to do a repair.', 'wordfence'), wp_kses($file, array())));
							continue;
						}
						
						if (preg_match('/\.\./', $file)) {
							$errors[] = sprintf(/* translators: File path. */ __('An invalid file %s was specified for repair.', 'wordfence'), wp_kses($file, array()));
							continue;
						}
						
						$fh = fopen($localFile, 'w');
						if (!$fh) {
							$err = error_get_last();
							if (preg_match('/Permission denied/i', $err['message'])) {
								$errMsg = esc_html(sprintf(/* translators: File path. */ __('You don\'t have permission to repair %s. You need to either fix the file manually using FTP or change the file permissions and ownership so that your web server has write access to repair the file.', 'wordfence'), wp_kses($file, array())));
							}
							else {
								$errMsg = esc_html(sprintf(/* translators: 1. File path. 2. Error message. */ __('We could not write to %1$s. The error was: %2$s', 'wordfence'), wp_kses($file, array()),  $err['message']));
							}
							$errors[] = $errMsg;
							continue;
						}
						
						flock($fh, LOCK_EX);
						$bytes = fwrite($fh, $result['fileContent']);
						flock($fh, LOCK_UN);
						fclose($fh);
						if ($bytes < 1) {
							$errors[] = esc_html(sprintf(/* translators: 1. File path. 2. Number of bytes. */ __('We could not write to %1$s. (%2$d bytes written) You may not have permission to modify files on your WordPress server.', 'wordfence'), wp_kses($file, array()), $bytes));
							continue;
						}
						
						$filesWorkedOn++;
						$wfIssues->updateIssue($i['id'], 'delete');
						$idsRemoved[] = $i['id'];
					}
				}
			}
			
			if ($filesWorkedOn > 0 && count($errors) > 0) {
				$headMsg = esc_html($op == 'del' ? __('Deleted some files with errors', 'wordfence') : __('Repaired some files with errors', 'wordfence'));
				$bodyMsg = sprintf(esc_html($op == 'del' ?
					/* translators: 1. Number of files. 2. Error message. */
					__('Deleted %1$d files but we encountered the following errors with other files: %2$s', 'wordfence') :
					/* translators: 1. Number of files. 2. Error message. */
					__('Repaired %1$d files but we encountered the following errors with other files: %2$s', 'wordfence')),
					$filesWorkedOn, implode('<br>', $errors));
			}
			else if ($filesWorkedOn > 0) {
				$headMsg = sprintf(esc_html($op == 'del' ? /* translators: Number of files. */ __('Deleted %d files successfully', 'wordfence') : /* translators: Number of files. */ __('Repaired %d files successfully', 'wordfence')), $filesWorkedOn);
				$bodyMsg = sprintf(esc_html($op == 'del' ? /* translators: Number of files. */ __('Deleted %d files successfully. No errors were encountered.', 'wordfence') : /* translators: Number of files. */ __('Repaired %d files successfully. No errors were encountered.', 'wordfence')), $filesWorkedOn);
			}
			else if (count($errors) > 0) {
				$headMsg = esc_html($op == 'del' ? __('Could not delete files', 'wordfence') : __('Could not repair files', 'wordfence'));
				$bodyMsg = sprintf(esc_html($op == 'del' ?
					/* translators: Error message. */
					__('We could not delete any of the files you selected. We encountered the following errors: %s', 'wordfence') :
					/* translators: Error message. */
					__('We could not repair any of the files you selected. We encountered the following errors: %s', 'wordfence')),  implode('<br>', $errors));
			}
			else {
				$headMsg = esc_html__('Nothing done', 'wordfence');
				$bodyMsg = esc_html($op == 'del' ? __('We didn\'t delete anything and no errors were found.', 'wordfence') : __('We didn\'t repair anything and no errors were found.', 'wordfence'));
			}
			
			wfScanEngine::refreshScanNotification($wfIssues);
			$counts = $wfIssues->getIssueCounts();
			return array('ok' => 1, 'bulkHeading' => $headMsg, 'bulkBody' => $bodyMsg, 'idsRemoved' => $idsRemoved, 'issueCounts' => $counts);
		}
		else {
			return array('errorMsg' => esc_html__('Invalid bulk operation selected', 'wordfence'));
		}
	}
	public static function ajax_deleteFile_callback($issueID = null){
		if ($issueID === null) {
			$issueID = intval($_POST['issueID']);
		}
		$wfIssues = new wfIssues();
		$issue = $wfIssues->getIssueByID($issueID);
		if(! $issue){
			return array('errorMsg' => __('Could not delete file because we could not find that issue.', 'wordfence'));
		}
		if(! $issue['data']['file']){
			return array('errorMsg' => __('Could not delete file because that issue does not appear to be a file related issue.', 'wordfence'));
		}
		$file = $issue['data']['file'];
		$localFile = self::resolveLocalFile($issue);
		if($localFile === null){
			return array('errorMsg' => __('An invalid file was requested for deletion.', 'wordfence'));
		}
		if ($file === 'wp-config.php') {
			return array(
				'errorMsg' => __('Deleting an infected wp-config.php file must be done outside of Wordfence. The wp-config.php file contains your database credentials, which you will need to restore normal site operations. Your site will NOT function once the wp-config.php file has been deleted.', 'wordfence')
			);
		}

		/** @var WP_Filesystem_Base $wp_filesystem */
		global $wp_filesystem;

		$adminURL = network_admin_url('admin.php?' . http_build_query(array(
				'page'               => 'WordfenceScan',
				'subpage'       	 => 'scan_credentials',
				'action'			 => 'deleteFile',
				'issueID'            => $issueID,
				'nonce'              => wp_create_nonce('wp-ajax'),
			)));

		if (!self::requestFilesystemCredentials($adminURL, null, true, false)) {
			return array(
				'ok'               => 1,
				'needsCredentials' => 1,
				'redirect'         => $adminURL,
			);
		}

		if ($wp_filesystem->delete($localFile)) {
			$wfIssues->updateIssue($issueID, 'delete');
			$counts = $wfIssues->getIssueCounts();
			wfScanEngine::refreshScanNotification($wfIssues);
			return array(
				'ok' => 1,
				'localFile' => $localFile,
				'file' => $file,
				'issueCounts' => $counts,
			);
		}
		
		$err = error_get_last();
		return array(
			'errorMsg' => sprintf(
				/* translators: 1. File path. 2. Error message. */
				__('Could not delete file %1$s. The error was: %2$s', 'wordfence'),
				wp_kses($file, array()),
				wp_kses(str_replace(ABSPATH, '{WordPress Root}/', $err['message']), array())
			)
		);
	}
	public static function ajax_deleteDatabaseOption_callback(){
		/** @var wpdb $wpdb */
		global $wpdb;
		$issueID = intval($_POST['issueID']);
		$wfIssues = new wfIssues();
		$issue = $wfIssues->getIssueByID($issueID);
		if (!$issue) {
			return array('errorMsg' => __("Could not remove the option because we could not find that issue.", 'wordfence'));
		}
		if (empty($issue['data']['option_name'])) {
			return array('errorMsg' => __("Could not remove the option because that issue does not appear to be a database related issue.", 'wordfence'));
		}
		$table_options = wfDB::blogTable('options', $issue['data']['site_id']);
		if ($wpdb->query($wpdb->prepare("DELETE FROM {$table_options} WHERE option_name = %s", $issue['data']['option_name']))) {
			$wfIssues->updateIssue($issueID, 'delete');
			wfScanEngine::refreshScanNotification($wfIssues);
			return array(
				'ok'          => 1,
				'option_name' => $issue['data']['option_name'],
			);
		} else {
			return array('errorMsg' => sprintf(
				/* translators: 1. WordPress option. 2. Error message. */
				__('Could not remove the option %1$s. The error was: %2$s', 'wordfence'),
				esc_html($issue['data']['option_name']),
				esc_html($wpdb->last_error)
			));
		}
	}
	public static function ajax_fixFPD_callback(){
		$issues = new wfIssues();
		$issue  = $issues->getIssueByID($_POST['issueID']);
		if (!$issue) {
			return array('cerrorMsg' => __("We could not find that issue in our database.", 'wordfence'));
		}

		$htaccess = ABSPATH . '/.htaccess';
		$change   = "<IfModule mod_php5.c>\n\tphp_value display_errors 0\n</IfModule>\n<IfModule mod_php7.c>\n\tphp_value display_errors 0\n</IfModule>\n<IfModule mod_php.c>\n\tphp_value display_errors 0\n</IfModule>";
		$content  = "";
		if (file_exists($htaccess)) {
			$content = file_get_contents($htaccess);
		}

		if (@file_put_contents($htaccess, trim($content . "\n" . $change), LOCK_EX) === false) {
			return array('cerrorMsg' => __("You don't have permission to repair .htaccess. You need to either fix the file manually using FTP or change the file permissions and ownership so that your web server has write access to repair the file.", 'wordfence'));
		}
		if (wfScanEngine::testForFullPathDisclosure()) {
			// Didn't fix it, so revert the changes and return an error
			file_put_contents($htaccess, $content, LOCK_EX);
			return array(
				'cerrorMsg' => __("Modifying the .htaccess file did not resolve the issue, so the original .htaccess file was restored. You can fix this manually by setting <code>display_errors</code> to <code>Off</code> in your php.ini if your site is on a VPS or dedicated server that you control.", 'wordfence'),
			);
		}
		$issues->updateIssue($_POST['issueID'], 'delete');
		wfScanEngine::refreshScanNotification($issues);
		return array('ok' => 1);
	}
	public static function ajax_restoreFile_callback($issueID = null){
		if ($issueID === null) {
			$issueID = intval($_POST['issueID']);
		}
		$wfIssues = new wfIssues();
		$issue = $wfIssues->getIssueByID($issueID);
		if(! $issue){
			return array('cerrorMsg' => __("We could not find that issue in our database.", 'wordfence'));
		}

		/** @var WP_Filesystem_Base $wp_filesystem */
		global $wp_filesystem;
		
		$adminURL = network_admin_url('admin.php?' . http_build_query(array(
				'page'               => 'WordfenceScan',
				'subpage'       	 => 'scan_credentials',
				'action'			 => 'restoreFile',
				'issueID'            => $issueID,
				'nonce'              => wp_create_nonce('wp-ajax'),
			)));

		if (!self::requestFilesystemCredentials($adminURL, null, true, false)) {
			return array(
				'ok'               => 1,
				'needsCredentials' => true,
				'redirect'         => $adminURL,
			);
		}

		$dat = $issue['data'];
		$result = self::getWPFileContent($dat['file'], $dat['cType'], (isset($dat['cName']) ? $dat['cName'] : ''), (isset($dat['cVersion']) ? $dat['cVersion'] : ''));
		$file = $dat['file'];
		if(isset($result['errorMsg']) && $result['errorMsg']){
			return $result;
		} else if(! $result['fileContent']){
			return array('errorMsg' => __("We could not get the original file to do a repair.", 'wordfence'));
		}

		if(preg_match('/\.\./', $file)){
			return array('errorMsg' => __("An invalid file was specified for repair.", 'wordfence'));
		}
		if (array_key_exists('realFile', $dat)) {
			$localFile = $dat['realFile'];
		}
		else {
			$localFile = rtrim(ABSPATH, '/') . '/' . preg_replace('/^[\.\/]+/', '', $file);
		}
		if ($wp_filesystem->put_contents($localFile, $result['fileContent'])) {
			$wfIssues->updateIssue($issueID, 'delete');
			$counts = $wfIssues->getIssueCounts();
			wfScanEngine::refreshScanNotification($wfIssues);
			return array(
				'ok'   => 1,
				'localFile' => $localFile,
				'file' => $file,
				'issueCounts' => $counts,
			);
		}
		return array(
			'errorMsg' => __("We could not write to that file. You may not have permission to modify files on your WordPress server.", 'wordfence'),
		);
	}
	public static function ajax_scan_callback(){
		self::status(4, 'info', __("Ajax request received to start scan.", 'wordfence'));
		$err = wfScanEngine::startScan();
		if ($err) {
			return array('errorMsg' => wp_kses($err, array()));
		}
		else {
			$issueCounts = array_merge(array('new' => 0, 'ignoreP' => 0, 'ignoreC' => 0), wfIssues::shared()->getIssueCounts());
			return array("ok" => 1, 'issueCounts' => $issueCounts);
		}
	}
	public static function ajax_exportSettings_callback() {
		$result = wfImportExportController::shared()->export();
		return $result;
	}
	public static function ajax_importSettings_callback(){
		$token = $_POST['token'];
		return self::importSettings($token);
	}
	public static function importSettings($token) { //Documented call for external interfacing.
		return wfImportExportController::shared()->import($token);
	}
	public static function ajax_dismissNotification_callback() {
		$id = $_POST['id'];
		$n = wfNotification::getNotificationForID($id);
		if ($n !== null) {
			$n->markAsRead();
		}
		return array(
			'ok' => 1,
		);
	}
	public static function ajax_utilityScanForBlacklisted_callback() {
		if (wfScanner::shared()->isRunning()) {
			return array('wait' => 2); //Can't run while a scan is running since the URL hoover is currently implemented like a singleton
		}
		
		$pageURL = stripslashes($_POST['url']);
		$source = stripslashes($_POST['source']);
		$apiKey = wfConfig::get('apiKey');
		$wp_version = wfUtils::getWPVersion();
		$h = new wordfenceURLHoover($apiKey, $wp_version);
		$h->hoover(1, $source);
		$hooverResults = $h->getBaddies();
		if ($h->errorMsg) {
			$h->cleanup();
			return array('wait' => 3, 'errorMsg' => $h->errorMsg); //Unable to contact noc1 to verify
		} 
		$h->cleanup();
		if (sizeof($hooverResults) > 0 && isset($hooverResults[1])) {
			$hresults = $hooverResults[1];
			$count = count($hresults);
			if ($count > 0) {
				new wfNotification(
					null,
					wfNotification::PRIORITY_HIGH_WARNING,
					sprintf(/* translators: Number of URLs. */ _n("Page contains %d malware URL: ", "Page contains %d malware URLs: ", $count, 'wordfence') . esc_html($pageURL)),
					'wfplugin_malwareurl_' . md5($pageURL),
					null,
					array(array('link' => wfUtils::wpAdminURL('admin.php?page=WordfenceScan'), 'label' => __('Run a Scan', 'wordfence'))));
				return array('bad' => $count);
			}
		}
		return array('ok' => 1);
	}
	public static function ajax_dashboardShowMore_callback() {
		$grouping = $_POST['grouping'];
		$period = $_POST['period'];
		
		$dashboard = new wfDashboard();
		if ($grouping == 'ips') {
			$data = null;
			if ($period == '24h') { $data = $dashboard->ips24h; }
			else if ($period == '7d') { $data = $dashboard->ips7d; }
			else if ($period == '30d') { $data = $dashboard->ips30d; }
			
			if ($data !== null) {
				foreach ($data as &$d) {
					$d['IP'] = esc_html(wfUtils::inet_ntop($d['IP']));
					$d['blockCount'] = esc_html(number_format_i18n($d['blockCount']));
					$d['countryFlag'] = esc_attr('wf-flag-' . strtolower($d['countryCode']));
					$d['countryName'] = esc_html($d['countryName']);
				}
				return array('ok' => 1, 'data' => $data);
			}
		}
		else if ($grouping == 'logins') {
			$data = null;
			if ($period == 'success') { $data = $dashboard->loginsSuccess; }
			else if ($period == 'fail') { $data = $dashboard->loginsFail; }
			
			if ($data !== null) {
				$data = array_slice($data, 0, 100);
				foreach ($data as &$d) {
					$d['ip'] = esc_html($d['ip']);
					$d['name'] = esc_html($d['name']);
					if (time() - $d['t'] < 86400) {
						$d['t'] = esc_html(wfUtils::makeTimeAgo(time() - $d['t']) . ' ago');
					}
					else {
						$d['t'] = esc_html(wfUtils::formatLocalTime(get_option('date_format') . ' ' . get_option('time_format'), (int) $d['t']));
					}
				}
				return array('ok' => 1, 'data' => $data);
			}
		}
		
		return array('error' => __('Unknown dashboard data set.', 'wordfence'));
	}
	public static function startScan(){
		wfScanEngine::startScan();
	}
	public static function templateRedir(){
		if (!empty($_GET['wordfence_lh'])) {
			self::ajax_lh_callback();
			exit;
		}
		if (!empty($_GET['wfcentral_admin_redirect'])) {
			wp_safe_redirect(remove_query_arg('wfcentral_admin_redirect', network_admin_url('admin.php?page=Wordfence' . rawurlencode(ucwords(preg_replace('/\W/', '', $_GET['wfcentral_admin_redirect']))) . '&' . $_SERVER['QUERY_STRING'])));
			exit;
		}

		$wfFunc = !empty($_GET['_wfsf']) && is_string($_GET['_wfsf']) ? $_GET['_wfsf'] : '';

		//Logging
		self::doEarlyAccessLogging();
		//End logging


		if(! ($wfFunc == 'diff' || $wfFunc == 'view' || $wfFunc == 'viewOption' || $wfFunc == 'sysinfo' || $wfFunc == 'IPTraf' || $wfFunc == 'viewActivityLog' || $wfFunc == 'testmem' || $wfFunc == 'testtime' || $wfFunc == 'download' || $wfFunc == 'blockedIPs' || ($wfFunc == 'debugWAF' && WFWAF_DEBUG))){
			return;
		}
		if(! wfUtils::isAdmin()){
			return;
		}

		$nonce = $_GET['nonce'];
		if(! wp_verify_nonce($nonce, 'wp-ajax')){
			_e("Bad security token. It may have been more than 12 hours since you reloaded the page you came from. Try reloading the page you came from. If that doesn't work, please sign out and sign-in again.", 'wordfence');
			exit(0);
		}
		if($wfFunc == 'diff'){
			self::wfFunc_diff();
		} else if($wfFunc == 'view'){
			self::wfFunc_view();
		} else if($wfFunc == 'viewOption'){
			self::wfFunc_viewOption();
		} else if($wfFunc == 'sysinfo') {
			require(dirname(__FILE__) . '/sysinfo.php' );
		} else if($wfFunc == 'IPTraf'){
			self::wfFunc_IPTraf();
		} else if($wfFunc == 'viewActivityLog'){
			self::wfFunc_viewActivityLog();
		} else if($wfFunc == 'testmem'){
			self::wfFunc_testmem();
		} else if($wfFunc == 'testtime'){
			self::wfFunc_testtime();
		} else if($wfFunc == 'download'){
			self::wfFunc_download();
		} else if($wfFunc == 'blockedIPs'){
			self::wfFunc_blockedIPs();
		} else if($wfFunc == 'debugWAF' && WFWAF_DEBUG){
			self::wfFunc_debugWAF();
		}
		exit(0);
	}
	public static function memtest_error_handler($errno, $errstr, $errfile, $errline){
		echo "Error received: $errstr\n";
	}
	private static function wfFunc_testtime(){
		header('Content-Type: text/plain');
		@error_reporting(E_ALL);
		wfUtils::iniSet('display_errors','On');
		set_error_handler('wordfence::memtest_error_handler', E_ALL);

		echo "Wordfence process duration benchmarking utility version " . WORDFENCE_VERSION . ".\n";
		echo "This utility tests how long your WordPress host allows a process to run.\n\n--Starting test--\n";
		echo "Starting timed test. This will take at least three minutes. Seconds elapsed are printed below.\nAn error after this line is not unusual. Read it and the elapsed seconds to determine max process running time on your host.\n";
		for($i = 1; $i <= 180; $i++){
			echo "\n$i:";
			for($j = 0; $j < 1000; $j++){
				echo '.';
			}
			flush();
			sleep(1);
		}
		echo "\n--Test complete.--\n\nCongratulations, your web host allows your PHP processes to run at least 3 minutes.\n";
		exit();
	}
	private static function wfFunc_testmem(){
		header('Content-Type: text/plain');
		@error_reporting(E_ALL);
		wfUtils::iniSet('display_errors','On');
		set_error_handler('wordfence::memtest_error_handler', E_ALL);
		
		$maxMemory = ini_get('memory_limit');
		$last = strtolower(substr($maxMemory, -1));
		$maxMemory = (int) $maxMemory;
		
		$configuredMax = wfConfig::get('maxMem', 0);
		if ($configuredMax <= 0) {
			if ($last == 'g') { $configuredMax = $maxMemory * 1024; }
			else if ($last == 'm') { $configuredMax = $maxMemory; }
			else if ($last == 'k') { $configuredMax = $maxMemory / 1024; }
			$configuredMax = floor($configuredMax);
		}
		
		$stepSize = 5242880; //5 MB

		echo "Wordfence Memory benchmarking utility version " . WORDFENCE_VERSION . ".\n";
		echo "This utility tests if your WordPress host respects the maximum memory configured\nin their php.ini file, or if they are using other methods to limit your access to memory.\n\n--Starting test--\n";
		echo "Current maximum memory configured in php.ini: " . ini_get('memory_limit') . "\n";
		echo "Current memory usage: " . sprintf('%.2f', memory_get_usage(true) / (1024 * 1024)) . "M\n";
		echo "Attempting to set max memory to {$configuredMax}M.\n";
		wfUtils::iniSet('memory_limit', ($configuredMax + 5) . 'M'); //Allow a little extra for testing overhead
		echo "Starting memory benchmark. Seeing an error after this line is not unusual. Read the error carefully\nto determine how much memory your host allows. We have requested {$configuredMax} megabytes.\n";
		
		if (memory_get_usage(true) < 1) {
			echo "Exiting test because memory_get_usage() returned a negative number\n";
			exit();
		}
		if (memory_get_usage(true) > (1024 * 1024 * 1024)) {
			echo "Exiting because current memory usage is greater than a gigabyte.\n";
			exit();
		}
		
		if (!defined('WP_SANDBOX_SCRAPING')) { define('WP_SANDBOX_SCRAPING', true); } //Disables the WP error handler in somewhat of a hacky way
		
		$accumulatedMemory = array_fill(0, ceil($configuredMax / $stepSize), '');
		$currentUsage = memory_get_usage(true);
		$tenMB = 10 * 1024 * 1024;
		$start = ceil($currentUsage / $tenMB) * $tenMB - $currentUsage; //Start at the closest 10 MB increment to the current usage
		$configuredMax = $configuredMax * 1048576; //Bytes
		$testLimit = $configuredMax - memory_get_usage(true);
		$finalUsage = '0';
		$previous = 0;
		$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ012345678900000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111111111111222222222222222222233333333333333334444444444444444444444444555555555555666666666666666666";
		$index = 0;
		while ($start <= $testLimit) {
			$accumulatedMemory[$index] = str_repeat($chars, ($start - $previous) / 256);
			
			$finalUsage = sprintf('%.2f', (memory_get_usage(true) / 1024 / 1024));
			echo "Tested up to " . $finalUsage . " megabytes.\n";
			if ($start == $testLimit) { break; }
			$previous = $start;
			$start = min($start + $stepSize, $testLimit);
			
			if (memory_get_usage(true) > $configuredMax) { break; }
			$index++;
		}
		echo "--Test complete.--\n\nYour web host allows you to use at least {$finalUsage} megabytes of memory for each PHP process hosting your WordPress site.\n";
		exit();
	}
	public static function wfLogHumanHeader(){
		//Final check in case this was added as an action before the request was fully initialized
		if (self::getLog()->getCurrentRequest()->jsRun || !wfConfig::liveTrafficEnabled()) {
			return;
		}
		
		self::$hitID = self::getLog()->logHit();
		if (self::$hitID) {
			$URL = home_url('/?wordfence_lh=1&hid=' . wfUtils::encrypt(self::$hitID));
			$URL = addslashes(preg_replace('/^https?:/i', '', $URL));
			#Load as external script async so we don't slow page down.
			echo <<<HTML
<script type="text/javascript">
(function(url){
	if(/(?:Chrome\/26\.0\.1410\.63 Safari\/537\.31|WordfenceTestMonBot)/.test(navigator.userAgent)){ return; }
	var addEvent = function(evt, handler) {
		if (window.addEventListener) {
			document.addEventListener(evt, handler, false);
		} else if (window.attachEvent) {
			document.attachEvent('on' + evt, handler);
		}
	};
	var removeEvent = function(evt, handler) {
		if (window.removeEventListener) {
			document.removeEventListener(evt, handler, false);
		} else if (window.detachEvent) {
			document.detachEvent('on' + evt, handler);
		}
	};
	var evts = 'contextmenu dblclick drag dragend dragenter dragleave dragover dragstart drop keydown keypress keyup mousedown mousemove mouseout mouseover mouseup mousewheel scroll'.split(' ');
	var logHuman = function() {
		if (window.wfLogHumanRan) { return; }
		window.wfLogHumanRan = true;
		var wfscr = document.createElement('script');
		wfscr.type = 'text/javascript';
		wfscr.async = true;
		wfscr.src = url + '&r=' + Math.random();
		(document.getElementsByTagName('head')[0]||document.getElementsByTagName('body')[0]).appendChild(wfscr);
		for (var i = 0; i < evts.length; i++) {
			removeEvent(evts[i], logHuman);
		}
	};
	for (var i = 0; i < evts.length; i++) {
		addEvent(evts[i], logHuman);
	}
})('$URL');
</script>
HTML;
		}
	}
	public static function shutdownAction(){
	}
	public static function wfFunc_viewActivityLog(){
		require(dirname(__FILE__) . '/viewFullActivityLog.php');
		exit(0);
	}
	public static function wfFunc_IPTraf(){
		$IP = $_GET['IP'];
		try {
			$response = self::IPTraf($IP);
			$reverseLookup = $response['reverseLookup'];
			$results = $response['results'];
			require(dirname(__FILE__) . '/IPTraf.php');
			exit(0);
		} catch (InvalidArgumentException $e) {
			echo $e->getMessage();
			exit;
		}
	}

	private static function IPTraf($ip) {
		if(!wfUtils::isValidIP($ip)){
			throw new InvalidArgumentException(__("An invalid IP address was specified.", 'wordfence'));
		}
		$reverseLookup = wfUtils::reverseLookup($ip);
		$wfLog = wfLog::shared();
		$results = array_merge(
			$wfLog->getHits('hits', '404', 0, 10000, $ip),
			$wfLog->getHits('hits', 'hit', 0, 10000, $ip)
		);
		usort($results, 'wordfence::iptrafsort');
		
		$ids = array();
		foreach ($results as $k => $r) {
			if (isset($ids[$r['id']])) {
				unset($results[$k]);
			}
			else {
				$ids[$r['id']] = 1;
			}
		}
		
		$results = array_values($results);
		
		for ($i = 0; $i < count($results); $i++){
			if(array_key_exists($i + 1, $results)){
				$results[$i]['timeSinceLastHit'] = sprintf('%.4f', $results[$i]['ctime'] - $results[$i + 1]['ctime']);
			} else {
				$results[$i]['timeSinceLastHit'] = '';
			}
		}
		return compact('reverseLookup', 'results');
	}

	public static function iptrafsort($b, $a){
		if($a['ctime'] == $b['ctime']){ return 0; }
		return ($a['ctime'] < $b['ctime']) ? -1 : 1;
	}

	private static function checkRealFileParameters() {
		if (array_key_exists('realFile', $_GET)) {
			$realFile = stripslashes($_GET['realFile']);
			$token = array_key_exists('realFileToken', $_GET) ? $_GET['realFileToken'] : '';
			if (!wfIssues::verifyRealFileToken($token, $realFile)) {
				esc_html_e('This link has expired. Refresh the scan results page and try again.', 'wordfence');
				exit(0);
			}
			return $realFile;
		}
		return null;
	}

	public static function wfFunc_viewOption() {
		/** @var wpdb $wpdb */
		global $wpdb;
		$site_id = !empty($_GET['site_id']) ? absint($_GET['site_id']) : get_current_blog_id();
		$option_name = !empty($_GET['option']) ? $_GET['option'] : false;

		$table_options = wfDB::blogTable('options', $site_id);
		$option_value = $wpdb->get_var($wpdb->prepare("SELECT option_value FROM {$table_options} WHERE option_name = %s", $option_name));

		header('Content-type: text/plain');
		exit($option_value);
	}

	public static function wfFunc_view(){
		wfUtils::doNotCache();
		if (WORDFENCE_DISABLE_FILE_VIEWER) {
			_e("File access blocked. (WORDFENCE_DISABLE_FILE_VIEWER is true)", 'wordfence');
			exit();
		}
		$localFile = self::checkRealFileParameters();
		if ($localFile === null)
			$localFile = ABSPATH . preg_replace('/^(?:\.\.|[\/]+)/', '', sanitize_text_field($_GET['file']));
		if(strpos($localFile, '..') !== false){
			_e("Invalid file requested. (Relative paths not allowed)", 'wordfence');
			exit();
		}
		if(preg_match('/[\'\"<>\!\{\}\(\)\&\@\%\$\*\+\[\]\?]+/', $localFile)){
			_e("File contains illegal characters.", 'wordfence');
			exit();
		}
		$cont = @file_get_contents($localFile);
		$isEmpty = false;
		if(! $cont){
			if(file_exists($localFile) && filesize($localFile) === 0){ //There's a remote possibility that very large files on 32 bit systems will return 0 here, but it's about 1 in 2 billion
				$isEmpty = true;
			} else {
				$err = error_get_last();
				printf(/* translators: Error message. */ __("We could not open the requested file for reading. The error was: %s", 'wordfence'), $err['message']);
				exit(0);
			}
		}
		$fileMTime = @filemtime($localFile);
		$fileMTime = date('l jS \of F Y h:i:s A', $fileMTime);
		try {
			if(wfUtils::fileOver2Gigs($localFile)){
				$fileSize = __("Greater than 2 Gigs", 'wordfence');
			} else {
				$fileSize = @filesize($localFile); //Checked if over 2 gigs above
				$fileSize = number_format($fileSize, 0, '', ',') . ' bytes';
			}
		} catch(Exception $e){ $fileSize = __('Unknown file size.', 'wordfence'); }

		require(dirname(__FILE__) . '/wfViewResult.php');
		exit(0);
	}

	public static function wfFunc_diff(){
		wfUtils::doNotCache();
		if (WORDFENCE_DISABLE_FILE_VIEWER) {
			esc_html_e("File access blocked. (WORDFENCE_DISABLE_FILE_VIEWER is true)", 'wordfence');
			exit();
		}
		if(preg_match('/[\'\"<>\!\{\}\(\)\&\@\%\$\*\+\[\]\?]+/', $_GET['file'])){
			esc_html_e("File contains illegal characters.", 'wordfence');
			exit();
		}

		$result = self::getWPFileContent($_GET['file'], $_GET['cType'], wp_unslash($_GET['cName']), $_GET['cVersion']);
		if( isset( $result['errorMsg'] ) && $result['errorMsg']){
			echo wp_kses($result['errorMsg'], array());
			exit(0);
		} else if(! $result['fileContent']){
			esc_html_e("We could not get the contents of the original file to do a comparison.", 'wordfence');
			exit(0);
		}

		$localFile = self::checkRealFileParameters();
		if ($localFile === null) {
			$localFile = realpath(ABSPATH . '/' . preg_replace('/^[\.\/]+/', '', $_GET['file']));
		}
		if (empty($localFile)) {
			esc_html_e('Empty file path provided', 'wordfence');
			exit(0);
		}
		$localContents = file_get_contents($localFile);
		if ($localContents === false) {
			esc_html_e('Unable to read file contents', 'wordfence');
			exit(0);
		}
		if($localContents == $result['fileContent']){
			$diffResult = '';
		} else {
			$diff = new Diff(
				//Treat DOS and Unix files the same
				preg_split("/(?:\r\n|\n)/", $result['fileContent']),
				preg_split("/(?:\r\n|\n)/", $localContents),
				array()
				);
			$renderer = new Diff_Renderer_Html_SideBySide;
			$diffResult = $diff->Render($renderer);
		}
		require(dirname(__FILE__) . '/diffResult.php');
		exit(0);
	}

	public static function wfFunc_download() {
		wfUtils::doNotCache();
		if (WORDFENCE_DISABLE_FILE_VIEWER) {
			esc_html_e("File access blocked. (WORDFENCE_DISABLE_FILE_VIEWER is true)", 'wordfence');
			exit();
		}
		$localFile = self::checkRealFileParameters();
		if ($localFile === null)
			$localFile = ABSPATH . preg_replace('/^(?:\.\.|[\/]+)/', '', sanitize_text_field($_GET['file']));
		if (strpos($localFile, '..') !== false) {
			esc_html_e("Invalid file requested. (Relative paths not allowed)", 'wordfence');
			exit();
		}
		if (preg_match('/[\'\"<>\!\{\}\(\)\&\@\%\$\*\+\[\]\?]+/', $localFile)) {
			esc_html_e("File contains illegal characters.", 'wordfence');
			exit();
		}
		if (!file_exists($localFile)) {
			_e('File does not exist.', 'wordfence');
			exit();
		}

		$filename = basename($localFile);
		header('Content-Type: application/octet-stream');
		header('Content-Disposition: attachment; filename="' . $filename . '"');
		header('Content-Length: ' . filesize($localFile));
		readfile($localFile);
		exit;
	}
	
	public static function wfFunc_blockedIPs() {
		$blocks = wfBlock::ipBlocks(true);
		
		$output = '';
		if (is_array($blocks)) {
			foreach ($blocks as $entry) {
				$output .= $entry->ip . "\n";
			}
		}		
				
		header('Content-Type: application/octet-stream');
		header('Content-Disposition: attachment; filename="' . get_bloginfo('name', 'raw') . ' - Blocked IPs.txt"');
		header('Content-Length: ' . strlen($output));
		
		echo $output;
		exit;
	}

	/**
	 *
	 */
	public static function wfFunc_debugWAF() {
		$data = array();
		if (!empty($_GET['hitid'])) {
			$data['hit'] = new wfRequestModel($_GET['hitid']);
			if ($data['hit']->actionData) {
				$data['hitData'] = (object) wfRequestModel::unserializeActionData($data['hit']->actionData);
			}
			echo wfView::create('waf/debug', $data);
		}
	}

	public static function isWafFailureLoggingEnabled() {
		return wfConfig::get('other_WFNet', true);
	}

	private static function purgeWafFailures() {
		global $wpdb;
		$table = wfDB::networkTable('wfWafFailures');
		$wpdb->query("DELETE FROM {$table} WHERE `timestamp` < DATE_SUB(NOW(), INTERVAL 1 DAY)");
	}

	private static function capWafFailures() {
		global $wpdb;
		$table = wfDB::networkTable('wfWafFailures');
		$highestDeletableId = $wpdb->get_var("SELECT id FROM {$table} ORDER BY id DESC LIMIT 1 OFFSET 25");
		if ($highestDeletableId === null)
			return;
		$wpdb->query(
			$wpdb->prepare(
				"DELETE FROM {$table} WHERE id <= %d",
				$highestDeletableId
			)
		);
	}

	public static function logWafFailure() {
		global $wf_waf_failure, $wpdb;
		if (!self::isWafFailureLoggingEnabled())
			return;
		if (is_array($wf_waf_failure) && array_key_exists('throwable', $wf_waf_failure)) {
			$throwable = $wf_waf_failure['throwable'];
			if (!($throwable instanceof Throwable || $throwable instanceof Exception))
				return;
			$table = wfDB::networkTable('wfWafFailures');
			$data = [
				'throwable' => (string) $throwable
			];
			if (array_key_exists('rule_id', $wf_waf_failure)) {
				$ruleId = $wf_waf_failure['rule_id'];
				if (is_int($ruleId) || $ruleId >= 0)
					$data['rule_id'] = (int) $ruleId;
			}
			$wpdb->insert($table, $data);
			self::capWafFailures();
			self::scheduleSendAttackData();
		}
	}

	public static function initAction(){
		self::logWafFailure();
		load_plugin_textdomain('wordfence', false, basename(WORDFENCE_PATH) . '/languages');

		$firewall = new wfFirewall();
		define('WFWAF_OPERATIONAL', $firewall->testConfig());
		
		$currentUserID = get_current_user_id();
		$role = wordfence::getCurrentUserRole();
		if (!WFWAF_SUBDIRECTORY_INSTALL) {
			try {
				$authCookie = wfWAF::getInstance()->parseAuthCookie();
				$capabilities = wordfence::getCurrentUserCapabilities();
				if (is_user_logged_in() &&
					(
						!$authCookie ||
						(int) $currentUserID !== (int) $authCookie['userID'] ||
						$role !== $authCookie['role'] ||
						$authCookie['capabilities'] !== $capabilities //Capability ordering is fixed so a direct equality check is valid
					)
				) {
					wfUtils::setcookie(wfWAF::getInstance()->getAuthCookieName(),
						$currentUserID . '|' . $role . '|' . implode(',', $capabilities) . '|' .
						wfWAF::getInstance()->getAuthCookieValue($currentUserID, $role, $capabilities),
						time() + 43200, COOKIEPATH, COOKIE_DOMAIN, wfUtils::isFullSSL(), true);
				}
			} catch (wfWAFStorageFileException $e) {
				error_log($e->getMessage());
			} catch (wfWAFStorageEngineMySQLiException $e) {
				error_log($e->getMessage());
			}
		}

		if (wfConfig::get('other_hideWPVersion')) {

			global $wp_version;
			global $wp_styles;

			if (!($wp_styles instanceof WP_Styles)) {
				$wp_styles = new WP_Styles();
			}
			if ($wp_styles->default_version === $wp_version) {
				$wp_styles->default_version = wp_hash($wp_styles->default_version);
			}

			foreach ($wp_styles->registered as $key => $val) {
				if ($wp_styles->registered[$key]->ver === $wp_version) {
					$wp_styles->registered[$key]->ver = wp_hash($wp_styles->registered[$key]->ver);
				}
			}

			global $wp_scripts;
			if (!($wp_scripts instanceof WP_Scripts)) {
				$wp_scripts = new WP_Scripts();
			}
			if ($wp_scripts->default_version === $wp_version) {
				$wp_scripts->default_version = wp_hash($wp_scripts->default_version);
			}

			foreach ($wp_scripts->registered as $key => $val) {
				if ($wp_scripts->registered[$key]->ver === $wp_version) {
					$wp_scripts->registered[$key]->ver = wp_hash($wp_scripts->registered[$key]->ver);
				}
			}
		}
	}
	public static function admin_init(){
		if(! wfUtils::isAdmin()){ return; }

		wfOnboardingController::initialize();
		
		if (is_admin() && isset($_GET['page'])) {
			switch ($_GET['page']) {
				case 'WordfenceBlocking':
					wp_redirect(network_admin_url('admin.php?page=WordfenceWAF#top#blocking'));
					die;

				case 'WordfenceLiveTraffic':
					wp_redirect(network_admin_url('admin.php?page=WordfenceTools&subpage=livetraffic'));
					die;

				case 'WordfenceTools':
					if (wfOnboardingController::shouldShowAttempt3() && !array_key_exists('subpage', $_GET)) {
						wp_redirect(add_query_arg('subpage', 'diagnostics'));
						die;
					}
			}
		}
		

		
		if (wfConfig::get('touppBypassNextCheck')) {
			wfConfig::set('touppBypassNextCheck', 0);
			wfConfig::set('touppPromptNeeded', 0);
		}
		
		foreach(array(
			'activate', 'scan', 'updateAlertEmail', 'sendActivityLog', 'restoreFile',
			'exportSettings', 'importSettings', 'bulkOperation', 'deleteFile', 'deleteDatabaseOption', 'removeExclusion',
			'activityLogUpdate', 'ticker', 'loadIssues', 'updateIssueStatus', 'deleteIssue', 'updateAllIssues',
			'avatarLookup', 'reverseLookup', 'unlockOutIP', 'unblockRange', 'whois', 'recentTraffic', 'unblockIP',
			'blockIP', 'permBlockIP', 'loadStaticPanel', 'updateIPPreview', 'downloadHtaccess', 'downloadLogFile', 'checkHtaccess',
			'updateConfig', 'autoUpdateChoice', 'misconfiguredHowGetIPsChoice', 'switchLiveTrafficSecurityOnlyChoice', 'dismissAdminNotice', 'wordfenceSatisfactionChoice',
			'killScan', 'saveCountryBlocking', 'tourClosed',
			'downgradeLicense', 'addTwoFactor', 'twoFacActivate', 'twoFacDel',
			'loadTwoFactor', 'sendTestEmail',
			'email_summary_email_address_debug', 'unblockNetwork',
			'sendDiagnostic', 'saveDisclosureState', 'saveWAFConfig', 'updateWAFRules', 'loadLiveTraffic', 'whitelistWAFParamKey',
			'disableDirectoryListing', 'fixFPD', 'deleteAdminUser', 'revokeAdminUser', 'acknowledgeAdminUser',
			'hideFileHtaccess', 'saveDebuggingConfig',
			'whitelistBulkDelete', 'whitelistBulkEnable', 'whitelistBulkDisable',
			'dismissNotification', 'utilityScanForBlacklisted', 'dashboardShowMore',
			'saveOptions', 'restoreDefaults', 'enableAllOptionsPage', 'createBlock', 'deleteBlocks', 'makePermanentBlocks', 'getBlocks',
			'installAutoPrepend', 'uninstallAutoPrepend',
			'installLicense', 'recordTOUPP', 'mailingSignup',
			'switchTo2FANew', 'switchTo2FAOld',
			'wfcentral_step1', 'wfcentral_step2', 'wfcentral_step3', 'wfcentral_step4', 'wfcentral_step5', 'wfcentral_step6', 'wfcentral_disconnect',
			'exportDiagnostics',
			'hideNoticeForUser',
			'setDeactivationOption'
		) as $func){
			add_action('wp_ajax_wordfence_' . $func, 'wordfence::ajaxReceiver');
		}
		
		wp_register_script('chart-js', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/chart.umd.js'), array('jquery'), '4.2.1');
		wp_register_script('wordfence-select2-js', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/wfselect2.min.js'), array('jquery', 'jquery-ui-tooltip'), WORDFENCE_VERSION);
		wp_register_style('wordfence-select2-css', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wfselect2.min.css'), array(), WORDFENCE_VERSION);
		wp_register_style('wordfence-font-awesome-style', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wf-font-awesome.css'), '', WORDFENCE_VERSION);

		if (self::isWordfencePage()) {
			wp_enqueue_style('wp-pointer');
			wp_enqueue_script('wp-pointer');
			wp_enqueue_style('wordfence-font', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wf-roboto-font.css'), '', WORDFENCE_VERSION);
			wp_enqueue_style('wordfence-font-awesome-style');
			wp_enqueue_style('wordfence-main-style', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/main.css'), '', WORDFENCE_VERSION);
			wp_enqueue_style('wordfence-ionicons-style', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wf-ionicons.css'), '', WORDFENCE_VERSION);
			wp_enqueue_style('wordfence-colorbox-style', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wf-colorbox.css'), '', WORDFENCE_VERSION);
			wp_enqueue_style('wordfence-license-style', wfLicense::current()->getStylesheet());

			wp_enqueue_script('json2');
			wp_enqueue_script('jquery-ui-core');
			wp_enqueue_script('jquery-ui-menu');
			wp_enqueue_script('jquery.wftmpl', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/jquery.tmpl.min.js'), array('jquery'), WORDFENCE_VERSION);
			wp_enqueue_script('jquery.wfcolorbox', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/jquery.colorbox-min.js'), array('jquery'), WORDFENCE_VERSION);
			wp_enqueue_script('jquery.qrcode', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/jquery.qrcode.min.js'), array('jquery'), WORDFENCE_VERSION);
			wp_enqueue_script('wfi18njs', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/wfi18n.js'), array(), WORDFENCE_VERSION);
			wp_enqueue_script('wordfenceAdminExtjs', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/wfglobal.js'), array('jquery'), WORDFENCE_VERSION);
			wp_enqueue_script('wordfenceAdminjs', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/admin.js'), array('jquery', 'jquery-ui-core', 'jquery-ui-menu'), WORDFENCE_VERSION);
			wp_enqueue_script('wordfenceDropdownjs', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/wfdropdown.js'), array('jquery'), WORDFENCE_VERSION);
			self::setupAdminVars();
			
			if (wfConfig::get('touppPromptNeeded')) {
				add_filter('admin_body_class', 'wordfence::showTOUPPOverlay', 99, 1);
			}
		} else {
			wp_enqueue_style('wp-pointer');
			wp_enqueue_script('wp-pointer');
			wp_enqueue_script('wfi18njs', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/wfi18n.js'), array(), WORDFENCE_VERSION);
			wp_enqueue_script('wordfenceAdminExtjs', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/wfglobal.js'), array('jquery'), WORDFENCE_VERSION);
			wp_enqueue_style('wordfence-font-awesome-style');
			wp_enqueue_style('wordfence-global-style', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wf-global.css'), '', WORDFENCE_VERSION);
			self::setupAdminVars();
		}
		
		if (is_admin()) { //Back end only
			if (wfOnboardingController::shouldShowAnyAttempt()) {
				wp_enqueue_script('wordfenceOnboardingjs', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/wfonboarding.js'), array('jquery', 'wordfenceAdminExtjs'), WORDFENCE_VERSION);
			}
			if (preg_match('/\/wp-admin(\/network)?\/plugins.php$/', parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH))) {
				wp_enqueue_style('wordfence-colorbox-style', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wf-colorbox.css'), '', WORDFENCE_VERSION);
				wp_enqueue_script('jquery.wfcolorbox', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/jquery.colorbox-min.js'), array('jquery'), WORDFENCE_VERSION);
			}

			wfUtils::refreshCachedHomeURL();
			wfUtils::refreshCachedSiteURL();
		}

		if (self::isWordfenceInstallPage())
			return;
		
		//Early WAF configuration actions
		if (wfOnboardingController::shouldShowAttempt3(!self::isWordfencePage(false))) {
			add_action(is_multisite() ? 'network_admin_notices' : 'admin_notices', 'wordfence::showOnboardingBanner');
		}
		elseif ((!WFWAF_AUTO_PREPEND || WFWAF_SUBDIRECTORY_INSTALL) && empty($_GET['wafAction']) && !wfConfig::get('dismissAutoPrependNotice') && !wfConfig::get('touppPromptNeeded')) {
			if (is_multisite()) {
				add_action('network_admin_notices', 'wordfence::wafAutoPrependNotice');
			} else {
				add_action('admin_notices', 'wordfence::wafAutoPrependNotice');
			}
		}

		if (wfConfig::get('wordfenceCentralConfigurationIssue')) {
			add_action(is_multisite() ? 'network_admin_notices' : 'admin_notices', 'wordfence::showCentralConfigurationIssueNotice');
		}
		
		if (isset($_GET['page']) && $_GET['page'] == 'WordfenceWAF' && isset($_GET['subpage']) && $_GET['subpage'] == 'waf_options') {
			if (!WFWAF_AUTO_PREPEND || WFWAF_SUBDIRECTORY_INSTALL) { //Not yet installed
				if (isset($_GET['action']) && $_GET['action'] == 'configureAutoPrepend') {
					check_admin_referer('wfWAFAutoPrepend', 'wfnonce');
					if (isset($_GET['serverConfiguration']) && wfWAFAutoPrependHelper::isValidServerConfig($_GET['serverConfiguration'])) {
						$helper = new wfWAFAutoPrependHelper($_GET['serverConfiguration']);
						if (isset($_GET['downloadBackup'])) {
							$helper->downloadBackups(isset($_GET['backupIndex']) ? absint($_GET['backupIndex']) : 0);
						}
					}
				}
			}
			else { //Already installed
				if (isset($_GET['action']) && $_GET['action'] == 'removeAutoPrepend') {
					check_admin_referer('wfWAFRemoveAutoPrepend', 'wfnonce');
					if (isset($_GET['serverConfiguration']) && wfWAFAutoPrependHelper::isValidServerConfig($_GET['serverConfiguration'])) {
						$helper = new wfWAFAutoPrependHelper($_GET['serverConfiguration']);
						if (isset($_GET['downloadBackup'])) {
							$helper->downloadBackups(isset($_GET['backupIndex']) ? absint($_GET['backupIndex']) : 0);
						}
					}
				}
			}
		}
	}
	private static function setupAdminVars(){
		$updateInt = max(absint(wfConfig::getInt('actUpdateInterval', 2)), 2) * 1000; //ms

		wp_localize_script('wordfenceAdminExtjs', 'WordfenceAdminVars', array(
			'ajaxURL' => admin_url('admin-ajax.php'),
			'firstNonce' => wp_create_nonce('wp-ajax'),
			'siteBaseURL' => wfUtils::getSiteBaseURL(),
			'debugOn' => wfConfig::get('debugOn', 0),
			'actUpdateInterval' => $updateInt,
			'cacheType' => wfConfig::get('cacheType'),
			'liveTrafficEnabled' => wfConfig::liveTrafficEnabled(),
			'scanIssuesPerPage' => WORDFENCE_SCAN_ISSUES_PER_PAGE,
			'allowsPausing' => wfConfig::get('liveActivityPauseEnabled'),
			'scanRunning' => wfScanner::shared()->isRunning() ? '1' : '0',
			'modalTemplate' => wfView::create('common/modal-prompt', array('title' => '${title}', 'message' => '${message}', 'primaryButton' => array('id' => 'wf-generic-modal-close', 'label' => __('Close', 'wordfence'), 'link' => '#')))->render(),
			'tokenInvalidTemplate' => wfView::create('common/modal-prompt', array('title' => '${title}', 'message' => '${message}', 'primaryButton' => array('id' => 'wf-token-invalid-modal-reload', 'label' => __('Reload', 'wordfence'), 'link' => '#')))->render(),
			'modalHTMLTemplate' => wfView::create('common/modal-prompt', array('title' => '${title}', 'message' => '{{html message}}', 'primaryButton' => array('id' => 'wf-generic-modal-close', 'label' => __('Close', 'wordfence'), 'link' => '#')))->render(),
			'alertEmailBlacklist' => wfConfig::alertEmailBlacklist(),
			'supportURLs' => array(
				'scan-result-repair-modified-files' => esc_url_raw(wfSupportController::supportURL(wfSupportController::ITEM_SCAN_RESULT_REPAIR_MODIFIED_FILES)),
			),
		));
		self::setupI18nJSStrings();
	}

	private static function setupI18nJSStrings() {
		static $called;
		if ($called) {
			return;
		}
		$called = true;
		wp_localize_script('wfi18njs', 'WordfenceI18nStrings', array(
			'${totalIPs} addresses in this network' => __('${totalIPs} addresses in this network', 'wordfence'),
			'%s in POST body: %s' => /* translators: 1. Description of firewall action. 2. Description of input parameters. */ __('%s in POST body: %s', 'wordfence'),
			'%s in cookie: %s' => /* translators: 1. Description of firewall action. 2. Description of input parameters. */ __('%s in cookie: %s', 'wordfence'),
			'%s in file: %s' => /* translators: 1. Description of firewall action. 2. Description of input parameters. */ __('%s in file: %s', 'wordfence'),
			'%s in query string: %s' => /* translators: 1. Description of firewall action. 2. Description of input parameters. */ __('%s in query string: %s', 'wordfence'),
			'%s is not valid hostname' => /* translators: Domain name. */ __('%s is not valid hostname', 'wordfence'),
			'.htaccess Updated' => __('.htaccess Updated', 'wordfence'),
			'.htaccess change' => __('.htaccess change', 'wordfence'),
			'404 Not Found' => __('404 Not Found', 'wordfence'),
			'Activity Log Sent' => __('Activity Log Sent', 'wordfence'),
			'Add action to allowlist' => __('Add action to allowlist', 'wordfence'),
			'Add code to .htaccess' => __('Add code to .htaccess', 'wordfence'),
			'All Hits' => __('All Hits', 'wordfence'),
			'All capabilties of admin user %s were successfully revoked.' => /* translators: WordPress username. */ __('All capabilties of admin user %s were successfully revoked.', 'wordfence'),
			'An error occurred' => __('An error occurred', 'wordfence'),
			'An error occurred when adding the request to the allowlist.' => __('An error occurred when adding the request to the allowlist.', 'wordfence'),
			'Are you sure you want to allowlist this action?' => __('Are you sure you want to allowlist this action?', 'wordfence'),
			'Authentication Code' => __('Authentication Code', 'wordfence'),
			'Background Request Blocked' => __('Background Request Blocked', 'wordfence'),
			'Block This Network' => __('Block This Network', 'wordfence'),
			'Blocked' => __('Blocked', 'wordfence'),
			'Blocked By Firewall' => __('Blocked By Firewall', 'wordfence'),
			'Blocked WAF' => __('Blocked WAF', 'wordfence'),
			'Blocked by Wordfence' => __('Blocked by Wordfence', 'wordfence'),
			'Blocked by Wordfence plugin settings' => __('Blocked by Wordfence plugin settings', 'wordfence'),
			'Blocked by the Wordfence Application Firewall and plugin settings' => __('Blocked by the Wordfence Application Firewall and plugin settings', 'wordfence'),
			'Blocked by the Wordfence Security Network' => __('Blocked by the Wordfence Security Network', 'wordfence'),
			'Blocked by the Wordfence Web Application Firewall' => __('Blocked by the Wordfence Web Application Firewall', 'wordfence'),
			'Bot' => __('Bot', 'wordfence'),
			'Cancel Changes' => __('Cancel Changes', 'wordfence'),
			'Cellphone Sign-In Recovery Codes' => __('Cellphone Sign-In Recovery Codes', 'wordfence'),
			'Cellphone Sign-in activated for user.' => __('Cellphone Sign-in activated for user.', 'wordfence'),
			'Click here to download a backup copy of this file now' => __('Click here to download a backup copy of this file now', 'wordfence'),
			'Click here to download a backup copy of your .htaccess file now' => __('Click here to download a backup copy of your .htaccess file now', 'wordfence'),
			'Click to fix .htaccess' => __('Click to fix .htaccess', 'wordfence'),
			'Close' => __('Close', 'wordfence'),
			'Crawlers' => __('Crawlers', 'wordfence'),
			'Diagnostic report has been sent successfully.' => __('Diagnostic report has been sent successfully.', 'wordfence'),
			'Directory Listing Disabled' => __('Directory Listing Disabled', 'wordfence'),
			'Directory listing has been disabled on your server.' => __('Directory listing has been disabled on your server.', 'wordfence'),
			'Disabled' => __('Disabled', 'wordfence'),
			'Dismiss' => __('Dismiss', 'wordfence'),
			'Don\'t ask again' => __('Don\'t ask again', 'wordfence'),
			'Download' => __('Download', 'wordfence'),
			'Download Backup File' => __('Download Backup File', 'wordfence'),
			'Each line of 16 letters and numbers is a single recovery code, with optional spaces for readability. When typing your password, enter "wf" followed by the entire code like "mypassword wf1234 5678 90AB CDEF". If your site shows a separate prompt for entering a code after entering only your username and password, enter only the code like "1234 5678 90AB CDEF". Your recovery codes are:' => __('Each line of 16 letters and numbers is a single recovery code, with optional spaces for readability. When typing your password, enter "wf" followed by the entire code like "mypassword wf1234 5678 90AB CDEF". If your site shows a separate prompt for entering a code after entering only your username and password, enter only the code like "1234 5678 90AB CDEF". Your recovery codes are:', 'wordfence'),
			'Email Diagnostic Report' => __('Email Diagnostic Report', 'wordfence'),
			'Email Wordfence Activity Log' => __('Email Wordfence Activity Log', 'wordfence'),
			'Enter a valid IP or domain' => __('Enter a valid IP or domain', 'wordfence'),
			'Enter the email address you would like to send the Wordfence activity log to. Note that the activity log may contain thousands of lines of data. This log is usually only sent to a member of the Wordfence support team. It also contains your PHP configuration from the phpinfo() function for diagnostic data.' => __('Enter the email address you would like to send the Wordfence activity log to. Note that the activity log may contain thousands of lines of data. This log is usually only sent to a member of the Wordfence support team. It also contains your PHP configuration from the phpinfo() function for diagnostic data.', 'wordfence'),
			'Error' => __('Error', 'wordfence'),
			'Error Enabling All Options Page' => __('Error Enabling All Options Page', 'wordfence'),
			'Error Restoring Defaults' => __('Error Restoring Defaults', 'wordfence'),
			'Error Saving Option' => __('Error Saving Option', 'wordfence'),
			'Error Saving Options' => __('Error Saving Options', 'wordfence'),
			'Failed Login' => __('Failed Login', 'wordfence'),
			'Failed Login: Invalid Username' => __('Failed Login: Invalid Username', 'wordfence'),
			'Failed Login: Valid Username' => __('Failed Login: Valid Username', 'wordfence'),
			'File hidden successfully' => __('File hidden successfully', 'wordfence'),
			'File restored OK' => __('File restored OK', 'wordfence'),
			'Filter Traffic' => __('Filter Traffic', 'wordfence'),
			'Firewall Response' => __('Firewall Response', 'wordfence'),
			'Full Path Disclosure' => __('Full Path Disclosure', 'wordfence'),
			'Google Bot' => __('Google Bot', 'wordfence'),
			'Google Crawlers' => __('Google Crawlers', 'wordfence'),
			'HTTP Response Code' => __('HTTP Response Code', 'wordfence'),
			'Human' => __('Human', 'wordfence'),
			'Humans' => __('Humans', 'wordfence'),
			'IP' => __('IP', 'wordfence'),
			'Key:' => __('Key:', 'wordfence'),
			'Last Updated: %s' => /* translators: Localized date. */ __('Last Updated: %s', 'wordfence'),
			'Learn more about repairing modified files.' => __('Learn more about repairing modified files.', 'wordfence'),
			'Loading...' => __('Loading...', 'wordfence'),
			'Locked Out' => __('Locked Out', 'wordfence'),
			'Locked out from logging in' => __('Locked out from logging in', 'wordfence'),
			'Logged In' => __('Logged In', 'wordfence'),
			'Logins' => __('Logins', 'wordfence'),
			'Logins and Logouts' => __('Logins and Logouts', 'wordfence'),
			'Look up IP or Domain' => __('Look up IP or Domain', 'wordfence'),
			'Manual block by administrator' => __('Manual block by administrator', 'wordfence'),
			'Next Update Check: %s' => /* translators: Localized date. */ __('Next Update Check: %s', 'wordfence'),
			'No activity to report yet. Please complete your first scan.' => __('No activity to report yet. Please complete your first scan.', 'wordfence'),
			'No issues have been ignored.' => __('No issues have been ignored.', 'wordfence'),
			'No new issues have been found.' => __('No new issues have been found.', 'wordfence'),
			'No rules were updated. Please verify you have permissions to write to the /wp-content/wflogs directory.' => __('No rules were updated. Please verify you have permissions to write to the /wp-content/wflogs directory.', 'wordfence'),
			'No rules were updated. Please verify your website can reach the Wordfence servers.' => __('No rules were updated. Please verify your website can reach the Wordfence servers.', 'wordfence'),
			'No rules were updated. Your website has reached the maximum number of rule update requests. Please try again later.' => __('No rules were updated. Your website has reached the maximum number of rule update requests. Please try again later.', 'wordfence'),
			'Note: Status will update when changes are saved' => __('Note: Status will update when changes are saved', 'wordfence'),
			'OK' => __('OK', 'wordfence'),
			'Pages Not Found' => __('Pages Not Found', 'wordfence'),
			'Paid Members Only' => __('Paid Members Only', 'wordfence'),
			'Please enter a valid IP address or domain name for your whois lookup.' => __('Please enter a valid IP address or domain name for your whois lookup.', 'wordfence'),
			'Please enter a valid email address.' => __('Please enter a valid email address.', 'wordfence'),
			'Please include your support ticket number or forum username.' => __('Please include your support ticket number or forum username.', 'wordfence'),
			'Please make a backup of this file before proceeding. If you need to restore this backup file, you can copy it to the following path from your site\'s root:' => __('Please make a backup of this file before proceeding. If you need to restore this backup file, you can copy it to the following path from your site\'s root:', 'wordfence'),
			'Please specify a reason' => __('Please specify a reason', 'wordfence'),
			'Please specify a valid IP address range in the form of "1.2.3.4 - 1.2.3.5" without quotes. Make sure the dash between the IP addresses in a normal dash (a minus sign on your keyboard) and not another character that looks like a dash.' => __('Please specify a valid IP address range in the form of "1.2.3.4 - 1.2.3.5" without quotes. Make sure the dash between the IP addresses in a normal dash (a minus sign on your keyboard) and not another character that looks like a dash.', 'wordfence'),
			'Please specify either an IP address range, Hostname or a web browser pattern to match.' => __('Please specify either an IP address range, Hostname or a web browser pattern to match.', 'wordfence'),
			'Recent Activity' => __('Recent Activity', 'wordfence'),
			'Recovery Codes' => __('Recovery Codes', 'wordfence'),
			'Redirected' => __('Redirected', 'wordfence'),
			'Redirected by Country Blocking bypass URL' => __('Redirected by Country Blocking bypass URL', 'wordfence'),
			'Referer' => __('Referer', 'wordfence'),
			'Registered Users' => __('Registered Users', 'wordfence'),
			'Restore Defaults' => __('Restore Defaults', 'wordfence'),
			'Rule Update Failed' => __('Rule Update Failed', 'wordfence'),
			'Rules Updated' => __('Rules Updated', 'wordfence'),
			'Save Changes' => __('Save Changes', 'wordfence'),
			'Scan Complete.' => __('Scan Complete.', 'wordfence'),
			'Scan the code below with your authenticator app to add this account. Some authenticator apps also allow you to type in the text version instead.' => __('Scan the code below with your authenticator app to add this account. Some authenticator apps also allow you to type in the text version instead.', 'wordfence'),
			'Security Event' => __('Security Event', 'wordfence'),
			'Send' => __('Send', 'wordfence'),
			'Sorry, but no data for that IP or domain was found.' => __('Sorry, but no data for that IP or domain was found.', 'wordfence'),
			'Specify a valid IP range' => __('Specify a valid IP range', 'wordfence'),
			'Specify a valid hostname' => __('Specify a valid hostname', 'wordfence'),
			'Specify an IP range, Hostname or Browser pattern' => __('Specify an IP range, Hostname or Browser pattern', 'wordfence'),
			'Success deleting file' => __('Success deleting file', 'wordfence'),
			'Success removing option' => __('Success removing option', 'wordfence'),
			'Success restoring file' => __('Success restoring file', 'wordfence'),
			'Success updating option' => __('Success updating option', 'wordfence'),
			'Successfully deleted admin' => __('Successfully deleted admin', 'wordfence'),
			'Successfully revoked admin' => __('Successfully revoked admin', 'wordfence'),
			'Test Email Sent' => __('Test Email Sent', 'wordfence'),
			'The \'How does Wordfence get IPs\' option was successfully updated to the recommended value.' => __('The \'How does Wordfence get IPs\' option was successfully updated to the recommended value.', 'wordfence'),
			'The Full Path disclosure issue has been fixed' => __('The Full Path disclosure issue has been fixed', 'wordfence'),
			'The admin user %s was successfully deleted.' => /* translators: WordPress username. */ __('The admin user %s was successfully deleted.', 'wordfence'),
			'The file %s was successfully deleted.' => /* translators: File path. */ __('The file %s was successfully deleted.', 'wordfence'),
			'The file %s was successfully hidden from public view.' => /* translators: File path. */ __('The file %s was successfully hidden from public view.', 'wordfence'),
			'The file %s was successfully restored.' => /* translators: File path. */ __('The file %s was successfully restored.', 'wordfence'),
			'The option %s was successfully removed.' => /* translators: WordPress option. */ __('The option %s was successfully removed.', 'wordfence'),
			'The request has been allowlisted. Please try it again.' => __('The request has been allowlisted. Please try it again.', 'wordfence'),
			'There was an error while sending the email.' => __('There was an error while sending the email.', 'wordfence'),
			'This will be shown only once. Keep these codes somewhere safe.' => __('This will be shown only once. Keep these codes somewhere safe.', 'wordfence'),
			'Throttled' => __('Throttled', 'wordfence'),
			'Two Factor Status' => __('Two Factor Status', 'wordfence'),
			'Type' => __('Type', 'wordfence'),
			'Type: %s' => /* translators: HTTP client type. */ __('Type: %s', 'wordfence'),
			'URL' => __('URL', 'wordfence'),
			'Unable to automatically hide file' => __('Unable to automatically hide file', 'wordfence'),
			'Use one of these %s codes to log in if you are unable to access your phone. Codes are 16 characters long, plus optional spaces. Each one may be used only once.' => /* translators: 2FA backup codes. */ __('Use one of these %s codes to log in if you are unable to access your phone. Codes are 16 characters long, plus optional spaces. Each one may be used only once.', 'wordfence'),
			'Use one of these %s codes to log in if you lose access to your authenticator device. Codes are 16 characters long, plus optional spaces. Each one may be used only once.' => /* translators: 2FA backup codes. */ __('Use one of these %s codes to log in if you lose access to your authenticator device. Codes are 16 characters long, plus optional spaces. Each one may be used only once.', 'wordfence'),
			'User Agent' => __('User Agent', 'wordfence'),
			'User ID' => __('User ID', 'wordfence'),
			'Username' => __('Username', 'wordfence'),
			'WHOIS LOOKUP' => __('WHOIS LOOKUP', 'wordfence'),
			'We are about to change your <em>.htaccess</em> file. Please make a backup of this file before proceeding.' => __('We are about to change your <em>.htaccess</em> file. Please make a backup of this file before proceeding.', 'wordfence'),
			'We can\'t modify your .htaccess file for you because: %s' => /* translators: Error message. */ __('We can\'t modify your .htaccess file for you because: %s', 'wordfence'),
			'We encountered a problem' => __('We encountered a problem', 'wordfence'),
			'Wordfence Firewall blocked a background request to WordPress for the URL %s. If this occurred as a result of an intentional action, you may consider allowlisting the request to allow it in the future.' => /* translators: URL. */ __('Wordfence Firewall blocked a background request to WordPress for the URL %s. If this occurred as a result of an intentional action, you may consider allowlisting the request to allow it in the future.', 'wordfence'),
			'Wordfence is working...' => __('Wordfence is working...', 'wordfence'),
			'You are using Nginx as your web server. You\'ll need to disable autoindexing in your nginx.conf. See the <a target=\'_blank\'  rel=\'noopener noreferrer\' href=\'https://nginx.org/en/docs/http/ngx_http_autoindex_module.html\'>Nginx docs for more info</a> on how to do this.' => __('You are using Nginx as your web server. You\'ll need to disable autoindexing in your nginx.conf. See the <a target=\'_blank\'  rel=\'noopener noreferrer\' href=\'https://nginx.org/en/docs/http/ngx_http_autoindex_module.html\'>Nginx docs for more info</a> on how to do this.', 'wordfence'),
			'You are using an Nginx web server and using a FastCGI processor like PHP5-FPM. You will need to manually delete or hide those files.' => __('You are using an Nginx web server and using a FastCGI processor like PHP5-FPM. You will need to manually delete or hide those files.', 'wordfence'),
			'You are using an Nginx web server and using a FastCGI processor like PHP5-FPM. You will need to manually modify your php.ini to disable <em>display_error</em>' => __('You are using an Nginx web server and using a FastCGI processor like PHP5-FPM. You will need to manually modify your php.ini to disable <em>display_error</em>', 'wordfence'),
			'You forgot to include a reason you\'re blocking this IP range. We ask you to include this for your own record keeping.' => __('You forgot to include a reason you\'re blocking this IP range. We ask you to include this for your own record keeping.', 'wordfence'),
			'You have unsaved changes to your options. If you leave this page, those changes will be lost.' => __('You have unsaved changes to your options. If you leave this page, those changes will be lost.', 'wordfence'),
			'Your .htaccess has been updated successfully. Please verify your site is functioning normally.' => __('Your .htaccess has been updated successfully. Please verify your site is functioning normally.', 'wordfence'),
			'Your Wordfence activity log was sent to %s' => /* translators: Email address. */ __('Your Wordfence activity log was sent to %s', 'wordfence'),
			'Your rules have been updated successfully.' => __('Your rules have been updated successfully.', 'wordfence'),
			'Your rules have been updated successfully. You are currently using the free version of Wordfence. Upgrade to Wordfence premium to have your rules updated automatically as new threats emerge. <a href="https://www.wordfence.com/wafUpdateRules1/wordfence-signup/">Click here to purchase a premium license</a>. <em>Note: Your rules will still update every 30 days as a free user.</em>' => __('Your rules have been updated successfully. You are currently using the free version of Wordfence. Upgrade to Wordfence premium to have your rules updated automatically as new threats emerge. <a href="https://www.wordfence.com/wafUpdateRules1/wordfence-signup/">Click here to purchase a premium license</a>. <em>Note: Your rules will still update every 30 days as a free user.</em>', 'wordfence'),
			'Your test email was sent to the requested email address. The result we received from the WordPress wp_mail() function was: %s<br /><br />A \'True\' result means WordPress thinks the mail was sent without errors. A \'False\' result means that WordPress encountered an error sending your mail. Note that it\'s possible to get a \'True\' response with an error elsewhere in your mail system that may cause emails to not be delivered.' => /* translators: wp_mail() return value. */ __('Your test email was sent to the requested email address. The result we received from the WordPress wp_mail() function was: %s<br /><br />A \'True\' result means WordPress thinks the mail was sent without errors. A \'False\' result means that WordPress encountered an error sending your mail. Note that it\'s possible to get a \'True\' response with an error elsewhere in your mail system that may cause emails to not be delivered.', 'wordfence'),
			'blocked by firewall' => __('blocked by firewall', 'wordfence'),
			'blocked by firewall for %s' => /* translators: Reason for firewall action. */ __('blocked by firewall for %s', 'wordfence'),
			'blocked by real-time IP blocklist' => __('blocked by real-time IP blocklist', 'wordfence'),
			'blocked by the Wordfence Security Network' => __('blocked by the Wordfence Security Network', 'wordfence'),
			'blocked for %s' => /* translators: Reason for firewall action. */ __('blocked for %s', 'wordfence'),
			'locked out from logging in' => __('locked out from logging in', 'wordfence'),
		));
	}
	public static function showTOUPPOverlay($classList) {
		return trim($classList . ' wf-toupp-required');
	}
	public static function activation_warning(){
		$activationError = get_option('wf_plugin_act_error', '');
		if(strlen($activationError) > 400){
			$activationError = substr($activationError, 0, 400) . '...[output truncated]';
		}
		if($activationError){
			echo '<div id="wordfenceConfigWarning" class="updated fade"><p><strong>' .
				__('Wordfence generated an error on activation. The output we received during activation was:', 'wordfence')
				. '</strong> ' . wp_kses($activationError, array()) . '</p></div>';
		}
		delete_option('wf_plugin_act_error');
	}
	public static function noKeyError(){
		echo '<div id="wordfenceConfigWarning" class="fade error"><p>' .
			sprintf('<strong>%s</strong> ', __("Wordfence's license key is missing.", 'wordfence')) .
			wp_kses(sprintf(__("This could be caused by a database problem. You may need to repair your \"wfconfig\" database table or fix your database user's privileges if they have changed recently, or you may need to reinstall Wordfence. Please <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">contact Wordfence support<span class=\"screen-reader-text\"> (" . esc_html__('opens in new tab', 'wordfence') . ")</span></a> if you need help.", 'wordfence'), wfSupportController::esc_supportURL()), array('a' => array('href' => array(), 'target' => array(), 'rel' => array()), 'span' => array('class' => array())))
			. '</p></div>';
	}
	public static function wafConfigInaccessibleNotice() {
		if (function_exists('network_admin_url') && is_multisite()) {
			$wafMenuURL = network_admin_url('admin.php?page=WordfenceWAF&wafconfigrebuild=1');
		}
		else {
			$wafMenuURL = admin_url('admin.php?page=WordfenceWAF&wafconfigrebuild=1');
		}
		$wafMenuURL = add_query_arg(array(
			'waf-nonce' => wp_create_nonce('wafconfigrebuild'),
		), $wafMenuURL);
		
		echo '<div id="wafConfigInaccessibleNotice" class="fade error"><p><strong>' . __('The Wordfence Web Application Firewall cannot run.', 'wordfence') . '</strong> ' .
			sprintf(
				/* translators: 1. WordPress admin panel URL. 2. Support URL. */
				__('The configuration files are corrupt or inaccessible by the web server, which is preventing the WAF from functioning. Please verify the web server has permission to access the configuration files. You may also try to rebuild the configuration file by <a href="%1$s">clicking here</a>. It will automatically resume normal operation when it is fixed. <a class="wfhelp" target="_blank" rel="noopener noreferrer" href="%2$s"><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'),
				$wafMenuURL,
				wfSupportController::esc_supportURL(wfSupportController::ITEM_NOTICE_WAF_INACCESSIBLE_CONFIG)
			) . '</p></div>';
	}
	public static function wafStorageEngineFallbackNotice() {
		echo '<div class="notice notice-warning"><p>'.__('The WAF storage engine is currently set to mysqli, but Wordfence is unable to use the database. The WAF will fall back to using local file system storage instead.', 'wordfence').'</p></div>';
	}
	public static function wafConfigNeedsUpdate_mod_php() {
		if (function_exists('network_admin_url') && is_multisite()) {
			$wafMenuURL = network_admin_url('admin.php?page=WordfenceWAF&wafconfigfixmodphp=1');
		}
		else {
			$wafMenuURL = admin_url('admin.php?page=WordfenceWAF&wafconfigfixmodphp=1');
		}
		$wafMenuURL = add_query_arg(array(
			'waf-nonce' => wp_create_nonce('wafconfigfixmodphp'),
		), $wafMenuURL);
		
		echo '<div id="wafConfigNeedsUpdateNotice" class="fade error"><p><strong>' . __('The Wordfence Web Application Firewall needs a configuration update.', 'wordfence') . '</strong> ' .
			sprintf(
				/* translators: 1. WordPress admin panel URL. 2. Support URL. */
				__('It is currently configured to use an older version of PHP and may become deactivated if PHP is updated. You may perform the configuration update automatically by <a href="%1$s">clicking here</a>. <a class="wfhelp" target="_blank" rel="noopener noreferrer" href="%2$s"><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'),
				$wafMenuURL,
				wfSupportController::esc_supportURL(wfSupportController::ITEM_NOTICE_WAF_MOD_PHP_FIX)
			) . '</p></div>';
	}
	public static function wafConfigNeedsFixed_mod_php() {
		if (function_exists('network_admin_url') && is_multisite()) {
			$wafMenuURL = network_admin_url('admin.php?page=WordfenceWAF&wafconfigfixmodphp=1');
		}
		else {
			$wafMenuURL = admin_url('admin.php?page=WordfenceWAF&wafconfigfixmodphp=1');
		}
		$wafMenuURL = add_query_arg(array(
			'waf-nonce' => wp_create_nonce('wafconfigfixmodphp'),
		), $wafMenuURL);
		
		echo '<div id="wafConfigNeedsFixedNotice" class="fade error"><p><strong>' . __('The Wordfence Web Application Firewall needs a configuration update.', 'wordfence') . '</strong> ' .
			sprintf(
				/* translators: 1. WordPress admin panel URL. 2. Support URL. */
				__('It is not currently in extended protection mode but was configured to use an older version of PHP and may have become deactivated when PHP was updated. You may perform the configuration update automatically by <a href="%1$s">clicking here</a> or use the "Optimize the Wordfence Firewall" button on the Firewall Options page. <a class="wfhelp" target="_blank" rel="noopener noreferrer" href="%2$s"><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'),
				$wafMenuURL,
				wfSupportController::esc_supportURL(wfSupportController::ITEM_NOTICE_WAF_MOD_PHP_FIX)
			) . '</p></div>';
	}
	public static function wafReadOnlyNotice() {
		echo '<div id="wordfenceWAFReadOnlyNotice" class="fade error"><p><strong>' . __('The Wordfence Web Application Firewall is in read-only mode.', 'wordfence') . '</strong> ' . sprintf('PHP is currently running as a command line user and to avoid file permission issues, the WAF is running in read-only mode. It will automatically resume normal operation when run normally by a web server. <a class="wfhelp" target="_blank" rel="noopener noreferrer" href="%s"><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', wfSupportController::esc_supportURL(wfSupportController::ITEM_NOTICE_WAF_READ_ONLY_WARNING)) . '</p></div>';
	}
	public static function misconfiguredHowGetIPsNotice() {
		$url = network_admin_url('admin.php?page=Wordfence&subpage=global_options');
		$existing = wfConfig::get('howGetIPs', '');
		$recommendation = wfConfig::get('detectProxyRecommendation', '');
		
		$existingMsg = '';
		if ($existing == 'REMOTE_ADDR') {
			$existingMsg = __('This site is currently using PHP\'s built in REMOTE_ADDR.', 'wordfence');
		}
		else if ($existing == 'HTTP_X_FORWARDED_FOR') {
			$existingMsg = __('This site is currently using the X-Forwarded-For HTTP header, which should only be used when the site is behind a front-end proxy that outputs this header.', 'wordfence');
		}
		else if ($existing == 'HTTP_X_REAL_IP') {
			$existingMsg = __('This site is currently using the X-Real-IP HTTP header, which should only be used when the site is behind a front-end proxy that outputs this header.', 'wordfence');
		}
		else if ($existing == 'HTTP_CF_CONNECTING_IP') {
			$existingMsg = __('This site is currently using the Cloudflare "CF-Connecting-IP" HTTP header, which should only be used when the site is behind Cloudflare.', 'wordfence');
		}
		
		$recommendationMsg = '';
		if ($recommendation == 'REMOTE_ADDR') {
			$recommendationMsg = __('For maximum security use PHP\'s built in REMOTE_ADDR.', 'wordfence');
		}
		else if ($recommendation == 'HTTP_X_FORWARDED_FOR') {
			$recommendationMsg = __('This site appears to be behind a front-end proxy, so using the X-Forwarded-For HTTP header will resolve to the correct IPs.', 'wordfence');
		}
		else if ($recommendation == 'HTTP_X_REAL_IP') {
			$recommendationMsg = __('This site appears to be behind a front-end proxy, so using the X-Real-IP HTTP header will resolve to the correct IPs.', 'wordfence');
		}
		else if ($recommendation == 'HTTP_CF_CONNECTING_IP') {
			$recommendationMsg = __('This site appears to be behind Cloudflare, so using the Cloudflare "CF-Connecting-IP" HTTP header will resolve to the correct IPs.', 'wordfence');
		}
		echo '<div id="wordfenceMisconfiguredHowGetIPsNotice" class="fade error"><p><strong>' .
			__('Your \'How does Wordfence get IPs\' setting is misconfigured.', 'wordfence')
			. '</strong> ' . $existingMsg . ' ' . $recommendationMsg . ' <a href="#" onclick="wordfenceExt.misconfiguredHowGetIPsChoice(\'yes\'); return false;" role="button">' .
			__('Click here to use the recommended setting', 'wordfence')
			. '</a> ' .
			__('or', 'wordfence')
			. ' <a href="' . $url . '">' .
			__('visit the options page', 'wordfence')
			. '</a> ' .
			__('to manually update it.', 'wordfence')
			. '</p><p>
		<a class="wf-btn wf-btn-default wf-btn-sm wf-dismiss-link" href="#" onclick="wordfenceExt.misconfiguredHowGetIPsChoice(\'no\'); return false;" role="button">' .
			__('Dismiss', 'wordfence')
			. '</a> <a class="wfhelp" target="_blank" rel="noopener noreferrer" href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_NOTICE_MISCONFIGURED_HOW_GET_IPS) . '"><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a></p></div>';
	}
	public static function autoUpdateNotice(){
		echo '<div id="wordfenceAutoUpdateChoice" class="fade error"><p><strong>' .
			__('Do you want Wordfence to stay up-to-date automatically?', 'wordfence')
			. '</strong>&nbsp;&nbsp;&nbsp;<a href="#" onclick="wordfenceExt.autoUpdateChoice(\'yes\'); return false;" role="button">'.
			__('Yes, enable auto-update.', 'wordfence')
			. '</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href="#" onclick="wordfenceExt.autoUpdateChoice(\'no\'); return false;" role="button">' .
			__('No thanks.', 'wordfence')
			. '</a></p></div>';
	}
	private static function getNoticeHideKey($id) {
		return "wordfence_dismiss_$id";
	}
	private static function hideNoticeForUser($id) {
		$user = get_current_user_id();
		if ($user !== 0)
			update_user_meta($user, self::getNoticeHideKey($id), true);
	}
	private static function hasHiddenNotice($id) {
		$user = get_current_user_id();
		if ($user !== 0)
			return get_user_meta($user, self::getNoticeHideKey($id), true);
		return false;
	}
	public static function showUnitedStatesBlockedNotice() {
		$id = "wordfenceUnitedStatesBlocked";
		if (self::hasHiddenNotice($id))
			return;
?>
		<div id="<?php echo esc_attr($id) ?>" class="notice notice-warning">
			<p>
				<?php esc_html_e('Wordfence country blocking is currently set to block the United States. We recommend allowing access from the United States for Google and other benign crawlers, unless you choose to only block the login page.', 'wordfence') ?>
				<a target="_blank" rel="noopener noreferrer" href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_BLOCKING_FULL_SITE) ?>"><?php esc_html_e('Learn More', 'wordfence') ?></a>
				<a class="wf-btn wf-btn-default wf-btn-sm wf-dismiss-link" href="#" onclick="<?php echo esc_attr('wordfenceExt.hideNoticeForUser(' . json_encode($id) . '); return false;') ?>"><?php esc_html_e('Dismiss', 'wordfence') ?></a>
			</p>
		</div>
<?php
	}
	public static function isWordfenceAdminPage() {
		if (isset($_GET['page']) && is_string($_GET['page'])) {
			foreach (array('Wordfence', 'WFLS') as $prefix) {
				if (strpos($_GET['page'], $prefix) === 0)
					return true;
			}
		}
		return false;
	}
	public static function getDashboardNotificationCountIcon() {
		$notificationCount = count(wfNotification::notifications());
		$updatingNotifications = get_site_transient('wordfence_updating_notifications');
		$hidden = ($notificationCount == 0 || $updatingNotifications ? ' wf-hidden' : '');
		$formattedCount = number_format_i18n($notificationCount);
		return " <span class=\"update-plugins wf-menu-badge wf-notification-count-container{$hidden}\" title=\"" . esc_attr($formattedCount) . '"><span class="update-count wf-notification-count-value">' . esc_html($formattedCount) . '</span></span>';
	}

	public static function isWordfenceInstallPage() {
		return self::isPage('WordfenceInstall');
	}

	public static function isWordfenceSupportPage() {
		return self::isPage('WordfenceSupport');
	}

	public static function admin_menus(){
		if(! wfUtils::isAdmin()){ return; }
		$warningAdded = self::isWordfenceInstallPage();
		if(get_option('wf_plugin_act_error', false)){
			if(wfUtils::isAdminPageMU()){
				add_action('network_admin_notices', 'wordfence::activation_warning');
			} else {
				add_action('admin_notices', 'wordfence::activation_warning');
			}
			$warningAdded = true;
		}
		if(!wfConfig::get('apiKey') && !wfOnboardingController::shouldShowAnyAttempt()){
			if(wfUtils::isAdminPageMU()){
				add_action('network_admin_notices', 'wordfence::noKeyError');
			} else {
				add_action('admin_notices', 'wordfence::noKeyError');
			}
			$warningAdded = true;
		}
		
		$firewall = new wfFirewall();
		if (!empty($_GET['page']) && preg_match('/^Wordfence/i', $_GET['page'])) {
			if (!$firewall->testConfig()) {
				$warningAdded = true;
				if (wfUtils::isAdminPageMU()) {
					add_action('network_admin_notices', 'wordfence::wafConfigInaccessibleNotice');
				}
				else {
					add_action('admin_notices', 'wordfence::wafConfigInaccessibleNotice');
				}
			}
			else if (!$warningAdded && method_exists('wfWAF', 'hasFallbackStorageEngine') && wfWAF::hasFallbackStorageEngine()) {
				$warningAdded = true;
				add_action(wfUtils::isAdminPageMU()?'network_admin_notices':'admin_notices', 'wordfence::wafStorageEngineFallbackNotice');
			}
		}
		
		if (!$warningAdded && !WFWAF_SUBDIRECTORY_INSTALL && !wfWAFAutoPrependHelper::verifyHtaccessMod_php()) {
			if (WFWAF_AUTO_PREPEND) { //Active, running PHP 5 only mod_php block
				$warningAdded = true;
				if (wfUtils::isAdminPageMU()) {
					add_action('network_admin_notices', 'wordfence::wafConfigNeedsUpdate_mod_php');
				}
				else {
					add_action('admin_notices', 'wordfence::wafConfigNeedsUpdate_mod_php');
				}
			}
			else if (PHP_MAJOR_VERSION > 5) { //Inactive, probably deactivated by updating from PHP 5 -> 7 due to no PHP 7 mod_php block
				$warningAdded = true;
				if (wfUtils::isAdminPageMU()) {
					add_action('network_admin_notices', 'wordfence::wafConfigNeedsFixed_mod_php');
				}
				else {
					add_action('admin_notices', 'wordfence::wafConfigNeedsFixed_mod_php');
				}
			}
		}
		
		if (wfOnboardingController::shouldShowAttempt3() || wfConfig::get('touppPromptNeeded')) { //Both top banners
			$warningAdded = true;
		}
		
		//Check WAF rules status
		$firewall = new wfFirewall();
		if ($firewall->firewallMode() != wfFirewall::FIREWALL_MODE_DISABLED) {
			try {
				$lastChecked = (int) wfWAF::getInstance()->getStorageEngine()->getConfig('lastRuleUpdateCheck', null, 'transient');
				$lastUpdated = (int) wfWAF::getInstance()->getStorageEngine()->getConfig('rulesLastUpdated', null, 'transient');
				$threshold = time() - (86400 * (wfConfig::get('isPaid') ? 2.5 : 9)); //Refresh rate + 2 days
				if ($lastChecked > 0 && $lastUpdated > 0 && $lastChecked < $threshold) {
					$nextUpdate = PHP_INT_MAX;
					$cron = (array) wfWAF::getInstance()->getStorageEngine()->getConfig('cron', null, 'livewaf');
					if (is_array($cron)) {
						/** @var wfWAFCronEvent $event */
						foreach ($cron as $index => $event) {
							if ($event instanceof wfWAFCronFetchRulesEvent) {
								$event->setWaf(wfWAF::getInstance());
								if (!$event->isInPast()) {
									$nextUpdate = min($nextUpdate, $event->getFireTime());
								}
							}
						}
					}
					
					$message = sprintf(
						/* translators: Localized date. */
						__('The last rules update for the Wordfence Web Application Firewall was unsuccessful. The last successful update check was %s, so this site may be missing new rules added since then.', 'wordfence'),
						wfUtils::formatLocalTime(get_option('date_format') . ' ' . get_option('time_format'), $lastChecked)
					);
					
					if (!$firewall->isSubDirectoryInstallation()) {
						if ($nextUpdate < PHP_INT_MAX) {
							$message .= ' ' . sprintf(
								/* translators: 1. Localized date. 2. WordPress admin panel URL. */
								__('You may wait for the next automatic attempt at %1$s or try to <a href="%2$s">Manually Update</a> by clicking the "Manually Refresh Rules" button below the Rules list.', 'wordfence'),
								wfUtils::formatLocalTime(get_option('date_format') . ' ' . get_option('time_format'), $nextUpdate),
								esc_url(network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options#wf-option-wafRules'))
								);
						}
						else {
							$message .= ' ' . sprintf(/* translators: WordPress admin panel URL. */ __('You may wait for the next automatic attempt or try to <a href="%s">Manually Update</a> by clicking the "Manually Refresh Rules" button below the Rules list.', 'wordfence'), esc_url(network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options#waf-rules-next-update')));
						}
					}
					else {
						if ($nextUpdate < PHP_INT_MAX) {
							$message .= ' ' . sprintf(/* translators: WordPress admin panel URL. */ __('You may wait for the next automatic attempt at %s or log into the parent site to manually update by clicking the "Manually Refresh Rules" button below the Rules list.', 'wordfence'), wfUtils::formatLocalTime(get_option('date_format') . ' ' . get_option('time_format'), $nextUpdate));
						}
						else {
							$message .= ' ' . __('You may wait for the next automatic attempt or log into the parent site to manually update by clicking the "Manually Refresh Rules" button below the Rules list.', 'wordfence');
						}
					}
					
					wfAdminNoticeQueue::addAdminNotice(wfAdminNotice::SEVERITY_CRITICAL, $message, 'waf-rules-failed');
				}
				else {
					wfAdminNoticeQueue::removeAdminNotice(false, 'waf-rules-failed');
				}
			}
			catch (wfWAFStorageFileException $e) {
				error_log($e->getMessage());
			}
		}
		else {
			wfAdminNoticeQueue::removeAdminNotice(false, 'waf-rules-failed');
		}
		
		if (wfAdminNoticeQueue::enqueueAdminNotices()) {
			$warningAdded = true;
		}
		
		if (!$warningAdded && self::isWordfencePage() && wfCentral::isCentralSiteUrlMismatched() && !wfUtils::truthyToBoolean(wfConfig::get('centralUrlMismatchChoice'))) {
			$warningAdded = true;
			if (wfUtils::isAdminPageMU()) {
				add_action('network_admin_notices', 'wfCentral::mismatchedCentralUrlNotice');
			}
			else {
				add_action('admin_notices', 'wfCentral::mismatchedCentralUrlNotice');
			}
		}
		
		$existing = wfConfig::get('howGetIPs', '');
		$recommendation = wfConfig::get('detectProxyRecommendation', '');
		$canDisplayMisconfiguredHowGetIPs = true;
		if (empty($existing) || empty($recommendation) || $recommendation == 'UNKNOWN' || $recommendation == 'DEFERRED' || $existing == $recommendation) {
			$canDisplayMisconfiguredHowGetIPs = false;
		}
		if (!$warningAdded && $canDisplayMisconfiguredHowGetIPs && !wfUtils::truthyToBoolean(wfConfig::get('misconfiguredHowGetIPsChoice' . WORDFENCE_VERSION)) && !(defined('WORDFENCE_DISABLE_MISCONFIGURED_HOWGETIPS') && WORDFENCE_DISABLE_MISCONFIGURED_HOWGETIPS)) {
			$warningAdded = true;
			if (wfUtils::isAdminPageMU()) {
				add_action('network_admin_notices', 'wordfence::misconfiguredHowGetIPsNotice');
			}
			else {
				add_action('admin_notices', 'wordfence::misconfiguredHowGetIPsNotice');
			}
		}
		if (!$warningAdded && method_exists(wfWAF::getInstance(), 'isReadOnly') && wfWAF::getInstance()->isReadOnly()) {
			$warningAdded = true;
			if (wfUtils::isAdminPageMU()) {
				add_action('network_admin_notices', 'wordfence::wafReadOnlyNotice');
			}
			else {
				add_action('admin_notices', 'wordfence::wafReadOnlyNotice');
			}
		}
		if(! $warningAdded){
			if (!wfConfig::get('autoUpdate') && !wfConfig::get('autoUpdateChoice')) {
				$warningAdded = true;
				if (wfUtils::isAdminPageMU()) {
					add_action('network_admin_notices', 'wordfence::autoUpdateNotice');
				} else {
					add_action('admin_notices', 'wordfence::autoUpdateNotice');
				}
			}
		}

		if (!empty($_GET['page']) && $_GET['page'] === 'WordfenceWAF' && !empty($_GET['wafconfigrebuild']) && !WFWAF_SUBDIRECTORY_INSTALL) {
			check_admin_referer('wafconfigrebuild', 'waf-nonce');
			
			wfWAF::getInstance()->uninstall();
			if (function_exists('network_admin_url') && is_multisite()) {
				$wafMenuURL = network_admin_url('admin.php?page=WordfenceWAF');
			} else {
				$wafMenuURL = admin_url('admin.php?page=WordfenceWAF');
			}
			wp_redirect($wafMenuURL);
			exit;
		}
		
		if (!empty($_GET['page']) && $_GET['page'] === 'WordfenceWAF' && !empty($_GET['wafconfigfixmodphp']) && !WFWAF_SUBDIRECTORY_INSTALL) {
			check_admin_referer('wafconfigfixmodphp', 'waf-nonce');
			
			wfWAFAutoPrependHelper::fixHtaccessMod_php();
			if (function_exists('network_admin_url') && is_multisite()) {
				$wafMenuURL = network_admin_url('admin.php?page=WordfenceWAF');
			} else {
				$wafMenuURL = admin_url('admin.php?page=WordfenceWAF');
			}
			wp_redirect($wafMenuURL);
			exit;
		}

		if (!$warningAdded) {
			foreach (wfBlock::countryBlocks() as $block) {
				if ($block->parameters['blockSite']) {
					foreach ($block->parameters['countries'] as $country) {
						if (strtoupper($country) === 'US') {
							add_action(wfUtils::isAdminPageMU() ? 'network_admin_notices' : 'admin_notices', 'wordfence::showUnitedStatesBlockedNotice');
							break 2;
						}
					}
				}
			}
		}
		
		if (!$warningAdded && wfSupportController::shouldShowSatisfactionPrompt()) {
			if (is_multisite()) {
				add_action('network_admin_notices', 'wfSupportController::satisfactionPromptNotice');
			}
			else {
				add_action('admin_notices', 'wfSupportController::satisfactionPromptNotice');
			}
		}

		if (self::isWordfenceAdminPage()) {
			$dashboardExtra = '';
		}
		else {
			$dashboardExtra = self::getDashboardNotificationCountIcon();
		}
		add_menu_page('Wordfence', "Wordfence{$dashboardExtra}", 'activate_plugins', 'Wordfence', 'wordfence::menu_dashboard', 'none');
	}
	
	//These are split to allow our module plugins to insert their menu item(s) at any point in the hierarchy
	public static function admin_menus_20() {
		$dashboardExtra = self::getDashboardNotificationCountIcon();
		add_submenu_page("Wordfence", __("Wordfence Dashboard", 'wordfence'), __("Dashboard", 'wordfence') . $dashboardExtra, "activate_plugins", "Wordfence", 'wordfence::menu_dashboard');
	}
	
	public static function admin_menus_30() {
		add_submenu_page("Wordfence", __("Firewall", 'wordfence'), __("Firewall", 'wordfence'), "activate_plugins", "WordfenceWAF", 'wordfence::menu_firewall');
		if (wfConfig::get('displayTopLevelBlocking')) {
			add_submenu_page("Wordfence", __("Blocking", 'wordfence'), __("Blocking", 'wordfence'), "activate_plugins", "WordfenceBlocking", 'wordfence::menu_blocking');
		}
	}
	
	public static function admin_menus_40() {
		add_submenu_page("Wordfence", __("Scan", 'wordfence'), __("Scan", 'wordfence'), "activate_plugins", "WordfenceScan", 'wordfence::menu_scan');
	}
	
	public static function admin_menus_50() {
		add_submenu_page('Wordfence', __('Tools', 'wordfence'), __('Tools', 'wordfence'), 'activate_plugins', 'WordfenceTools', 'wordfence::menu_tools');
		if (wfConfig::get('displayTopLevelLiveTraffic')) {
			add_submenu_page("Wordfence", __("Live Traffic", 'wordfence'), __("Live Traffic", 'wordfence'), "activate_plugins", "WordfenceLiveTraffic", 'wordfence::menu_tools');
		}
	}
	
	public static function admin_menus_60() {
		if (wfConfig::get('displayTopLevelOptions')) {
			add_submenu_page("Wordfence", __("All Options", 'wordfence'), __("All Options", 'wordfence'), "activate_plugins", "WordfenceOptions", 'wordfence::menu_options');
		}
	}
	
	public static function admin_menus_70() {
		add_submenu_page('Wordfence', __('Help', 'wordfence'), __('Help', 'wordfence'), 'activate_plugins', 'WordfenceSupport', 'wordfence::menu_support');
	}
	
	public static function admin_menus_80() {
		if (wfCentral::isSupported() && self::isPage('WordfenceCentral')) {
			add_submenu_page('Wordfence', __('Wordfence Central', 'wordfence'), __('Wordfence Central', 'wordfence'), 'activate_plugins', 'WordfenceCentral', 'wordfence::menu_wordfence_central');
		}
	}

	public static function admin_menus_85() {
		if (wfOnboardingController::shouldShowAnyAttempt() || self::isWordfenceInstallPage()) {
			add_submenu_page('Wordfence', __('Install Wordfence', 'wordfence'), __('Install', 'wordfence'), 'activate_plugins', 'WordfenceInstall', 'wordfence::menu_install');
		}
	}

	public static function admin_menus_90() {
		switch (wfLicense::current()->getType()) {
		case wfLicense::TYPE_FREE:
			$message = __('Upgrade to Premium', 'wordfence');
			$slug = 'WordfenceUpgradeToPremium';
			break;
		case wfLicense::TYPE_PREMIUM:
			$message = __('Upgrade to Care', 'wordfence');
			$slug = 'WordfenceUpgradeToCare';
			break;
		case wfLicense::TYPE_CARE:
			$message = __('Upgrade to Response', 'wordfence');
			$slug = 'WordfenceUpgradeToResponse';
			break;
		default:
			$message = __('Protect More Sites', 'wordfence');
			$slug = 'WordfenceProtectMoreSites';
			break;
		}
		add_submenu_page("Wordfence", $message, "<strong id=\"wfMenuCallout\" style=\"color: #FCB214;\">" . $message . "</strong>", "activate_plugins", $slug, 'wordfence::_menu_noop');
		add_filter('clean_url', 'wordfence::_patchWordfenceSubmenuCallout', 10, 3);
	}

	private static function isPage($page) {
		return array_key_exists('page', $_GET) && $_GET['page'] === $page;
	}
	
	public static function _patchWordfenceSubmenuCallout($url, $original_url, $_context){
		if (preg_match('/(?:WordfenceUpgradeTo(Premium|Care|Response))$/i', $url, $matches)) {
			remove_filter('clean_url', 'wordfence::_patchWordfenceSubmenuCallout', 10);
			return wfLicense::current()->getUpgradeUrl("menuUpgrade$matches[1]");
		}
		else if (preg_match('/(?:WordfenceProtectMoreSites)$/i', $url)) {
			remove_filter('clean_url', 'wordfence::_patchWordfenceSubmenuCallout', 10);
			return 'https://www.wordfence.com/zz10/licenses?purchase';
		}
		return $url;
	}
	public static function _menu_noop() {
		//Do nothing
	}
	public static function _retargetWordfenceSubmenuCallout() {
		echo <<<JQUERY
<script type="text/javascript">
jQuery(document).ready(function($) {
	$('#wfMenuCallout').closest('a').attr('target', '_blank').attr('rel', 'noopener noreferrer');
});
</script>
JQUERY;

	}
	public static function admin_bar_menu() {
		global $wp_admin_bar;
		
		if (wfUtils::isAdmin() && wfConfig::get('showAdminBarMenu')) {
			$title = '<div id="wf-adminbar-icon" class="ab-item"></div>';
			$count = count(wfNotification::notifications());
			$sinceCount = count(wfNotification::notifications((int) get_user_meta(get_current_user_id(), 'wordfence-notifications', true)));
			if ($sinceCount > 0) {
				$counter = '<span id="wf-notification-popover" data-toggle="popover" data-trigger="focus" data-content="' .
					esc_attr(/* translators: Number of notifications. */ _n('You have %d new Wordfence notification.', 'You have %d new Wordfence notifications.', $sinceCount, 'wordfence'))
					. '" data-container="body" data-placement="wf-bottom">&nbsp;</span>';
				update_user_meta(get_current_user_id(), 'wordfence-notifications', time());
			}
			else {
				$counter = ' ';
			}
			$badge = '<div class="wp-core-ui wp-ui-notification wf-notification-counter wf-notification-count-container' . ($count == 0 ? ' wf-hidden' : '') . '"><span class="wf-count wf-notification-count-value">' . $count . '</span></div>';
			$counter .= $badge;
			
			$wp_admin_bar->add_menu( array(
				'id'    => 'wordfence-menu',
				'title' => $title . $counter,
				'href'  => network_admin_url('admin.php?page=Wordfence'),
			));
			$wp_admin_bar->add_menu( array(
				'parent' => 'wordfence-menu',
				'id'     => 'wordfence-notifications',
				'title'  => '<div id="wordfence-notifications-display" class="wf-adminbar-submenu-title">' . __('Notifications', 'wordfence') . '</div>' . $badge,
				'href'   => network_admin_url('admin.php?page=Wordfence'),
			));
			$wp_admin_bar->add_menu( array(
				'parent' => 'wordfence-menu',
				'id'     => 'wordfence-javascripterror',
				'title'  => '<div id="wordfence-javascripterror-display" class="wf-adminbar-submenu-title">' . __('JavaScript Errors', 'wordfence') . '</div><div class="wf-adminbar-status wf-adminbar-status-good">&bullet;</div>',
				'href'   => 'javascript:void(0)',
			));
			$wp_admin_bar->add_menu( array(
				'parent' => 'wordfence-menu',
				'id'     => 'wordfence-malwareurl',
				'title'  => '<div id="wordfence-malwareurl-display' . (is_admin() ? '-skip' : '') . '" class="wf-adminbar-submenu-title">' . __('Malware URLs', 'wordfence') . '</div><div class="wf-adminbar-status wf-adminbar-status-neutral">&bullet;</div>',
				'href'   => network_admin_url('admin.php?page=WordfenceScan'),
			));
		}
	}
	public static function menu_tools() {
		wp_enqueue_style('wordfence-select2-css');
		wp_enqueue_script('wordfence-select2-js');

		$subpage = filter_input(INPUT_GET, 'subpage');
		switch ($subpage) {
			case 'livetraffic':
				$content = self::_menu_tools_livetraffic();
				break;

			case 'whois':
				$content = self::_menu_tools_whois();
				break;

			case 'diagnostics':
				$content = self::_menu_tools_diagnostics();
				break;

			case 'importexport':
				$content = self::_menu_tools_importexport();
				break;

			// case 'twofactor':
			default:
				if (wfCredentialsController::allowLegacy2FA()) {
					$subpage = 'twofactor';
					$content = self::_menu_tools_twofactor();
				}
				else {
					$subpage = 'livetraffic';
					$content = self::_menu_tools_livetraffic();
				}
		}
		require(dirname(__FILE__) . '/menu_tools.php');
	}
	
	private static function _menu_tools_livetraffic() {
		wp_enqueue_style('wordfence-jquery-ui-css', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/jquery-ui.min.css'), array(), WORDFENCE_VERSION);
		wp_enqueue_style('wordfence-jquery-ui-structure-css', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/jquery-ui.structure.min.css'), array(), WORDFENCE_VERSION);
		wp_enqueue_style('wordfence-jquery-ui-theme-css', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/jquery-ui.theme.min.css'), array(), WORDFENCE_VERSION);
		wp_enqueue_style('wordfence-jquery-ui-timepicker-css', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/jquery-ui-timepicker-addon.css'), array(), WORDFENCE_VERSION);
		
		wp_enqueue_script('wordfence-timepicker-js', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/jquery-ui-timepicker-addon.js'), array('jquery', 'jquery-ui-datepicker', 'jquery-ui-slider'), WORDFENCE_VERSION);
		wp_enqueue_script('wordfence-knockout-js', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/knockout-3.5.1.js'), array(), WORDFENCE_VERSION);
		wp_enqueue_script('wordfence-live-traffic-js', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/admin.liveTraffic.js'), array('jquery', 'jquery-ui-tooltip'), WORDFENCE_VERSION);
		
		ob_start();
		require(dirname(__FILE__) . '/menu_tools_livetraffic.php');
		$content = ob_get_clean();
		return $content;
	}
	
	private static function _menu_tools_whois() {
		ob_start();
		require(dirname(__FILE__) . '/menu_tools_whois.php');
		$content = ob_get_clean();
		return $content;
	}
	
	private static function _menu_tools_diagnostics() {
		$emailForm = true;
		$inEmail = false;
		ob_start();
		require(dirname(__FILE__) . '/menu_tools_diagnostic.php');
		$content = ob_get_clean();
		return $content;
	}
	
	private static function _menu_tools_importexport() {
		ob_start();
		require(dirname(__FILE__) . '/menu_tools_importExport.php');
		$content = ob_get_clean();
		return $content;
	}
	
	private static function _menu_tools_twofactor() {
		ob_start();
		require(dirname(__FILE__) . '/menu_tools_twoFactor.php');
		$content = ob_get_clean();
		return $content;
	}
	
	public static function menu_options() {
		wp_enqueue_style('wordfence-jquery-ui-css', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/jquery-ui.min.css'), array(), WORDFENCE_VERSION);
		wp_enqueue_style('wordfence-jquery-ui-structure-css', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/jquery-ui.structure.min.css'), array(), WORDFENCE_VERSION);
		wp_enqueue_style('wordfence-jquery-ui-theme-css', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/jquery-ui.theme.min.css'), array(), WORDFENCE_VERSION);
		wp_enqueue_style('wordfence-jquery-ui-timepicker-css', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/jquery-ui-timepicker-addon.css'), array(), WORDFENCE_VERSION);
		wp_enqueue_style('wordfence-select2-css');
		
		wp_enqueue_script('wordfence-timepicker-js', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/jquery-ui-timepicker-addon.js'), array('jquery', 'jquery-ui-datepicker', 'jquery-ui-slider'), WORDFENCE_VERSION);
		wp_enqueue_script('wordfence-select2-js');
		
		try {
			$wafData = self::_getWAFData();
		}
		catch (wfWAFStorageFileConfigException $e) {
			// We don't have anywhere to write files in this scenario. Let's notify the user to update the permissions.
			$wafData = array(
				'learningMode' => false,
				'rules' => array(),
				'whitelistedURLParams' => array(),
				'disabledRules' => array(),
				'isPaid' => (bool) wfConfig::get('isPaid', 0),
			);
			$logPath = str_replace(ABSPATH, '~/', WFWAF_LOG_PATH);
			if (function_exists('network_admin_url') && is_multisite()) {
				$wafMenuURL = network_admin_url('admin.php?page=WordfenceWAF&wafconfigrebuild=1');
			} else {
				$wafMenuURL = admin_url('admin.php?page=WordfenceWAF&wafconfigrebuild=1');
			}
			$wafMenuURL = add_query_arg(array(
				'waf-nonce' => wp_create_nonce('wafconfigrebuild'),
			), $wafMenuURL);
			$storageExceptionMessage = $e->getMessage() . ' ' . sprintf(__('<a href="%s">Click here</a> to rebuild the configuration file.', 'wordfence'), esc_url($wafMenuURL));
		} catch (wfWAFStorageFileException $e) {
			// We don't have anywhere to write files in this scenario. Let's notify the user to update the permissions.
			$wafData = array(
				'learningMode' => false,
				'rules' => array(),
				'whitelistedURLParams' => array(),
				'disabledRules' => array(),
				'isPaid' => (bool) wfConfig::get('isPaid', 0),
			);
			$logPath = str_replace(ABSPATH, '~/', WFWAF_LOG_PATH);
			$storageExceptionMessage = sprintf(/* translators: File path. */ __('We were unable to write to %s which the WAF uses for storage. Please update permissions on the parent directory so the web server can write to it.', 'wordfence'), $logPath);
		} catch (wfWAFStorageEngineMySQLiException $e) {
			$wafData = array(
				'learningMode' => false,
				'rules' => array(),
				'whitelistedURLParams' => array(),
				'disabledRules' => array(),
				'isPaid' => (bool) wfConfig::get('isPaid', 0),
			);
			$logPath = null;
			$storageExceptionMessage = __('An error occured when fetching the WAF configuration from the database.', 'wordfence') . ' <pre>' . esc_html($e->getMessage()) . '</pre>';
		}
		
		require(dirname(__FILE__) . '/menu_options.php');
	}
	
	public static function menu_blocking() {
		// Do nothing -- this action is forwarded in admin_init
	}

	public static function menu_firewall() {
		wp_enqueue_style('wordfence-jquery-ui-css', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/jquery-ui.min.css'), array(), WORDFENCE_VERSION);
		wp_enqueue_style('wordfence-jquery-ui-structure-css', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/jquery-ui.structure.min.css'), array(), WORDFENCE_VERSION);
		wp_enqueue_style('wordfence-jquery-ui-theme-css', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/jquery-ui.theme.min.css'), array(), WORDFENCE_VERSION);
		wp_enqueue_style('wordfence-jquery-ui-timepicker-css', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/jquery-ui-timepicker-addon.css'), array(), WORDFENCE_VERSION);
		wp_enqueue_style('wordfence-select2-css');

		wp_enqueue_script('wordfence-timepicker-js', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/jquery-ui-timepicker-addon.js'), array('jquery', 'jquery-ui-datepicker', 'jquery-ui-slider'), WORDFENCE_VERSION);
		wp_enqueue_script('wordfence-select2-js');
		wp_enqueue_script('chart-js');

		try {
			$wafData = self::_getWAFData();
		} catch (wfWAFStorageFileConfigException $e) {
			// We don't have anywhere to write files in this scenario. Let's notify the user to update the permissions.
			$wafData = array(
				'learningMode' => false,
				'rules' => array(),
				'whitelistedURLParams' => array(),
				'disabledRules' => array(),
				'isPaid' => (bool) wfConfig::get('isPaid', 0),
			);
			
			$logPath = str_replace(ABSPATH, '~/', WFWAF_LOG_PATH);
			if (function_exists('network_admin_url') && is_multisite()) {
				$wafMenuURL = network_admin_url('admin.php?page=WordfenceWAF&wafconfigrebuild=1');
			} else {
				$wafMenuURL = admin_url('admin.php?page=WordfenceWAF&wafconfigrebuild=1');
			}
			$wafMenuURL = add_query_arg(array(
				'waf-nonce' => wp_create_nonce('wafconfigrebuild'),
			), $wafMenuURL);
			$storageExceptionMessage = $e->getMessage() . ' ' . sprintf(/* translators: WordPress admin panel URL. */ __('<a href="%s">Click here</a> to rebuild the configuration file.', 'wordfence'), esc_url($wafMenuURL));
		} catch (wfWAFStorageFileException $e) {
			// We don't have anywhere to write files in this scenario. Let's notify the user to update the permissions.
			$wafData = array(
				'learningMode' => false,
				'rules' => array(),
				'whitelistedURLParams' => array(),
				'disabledRules' => array(),
				'isPaid' => (bool) wfConfig::get('isPaid', 0),
			);
			$logPath = str_replace(ABSPATH, '~/', WFWAF_LOG_PATH);
			$storageExceptionMessage = sprintf(/* translators: File path. */ __('We were unable to write to %s which the WAF uses for storage. Please update permissions on the parent directory so the web server can write to it.', 'wordfence'), $logPath);
		} catch (wfWAFStorageEngineMySQLiException $e) {
			$wafData = array(
				'learningMode' => false,
				'rules' => array(),
				'whitelistedURLParams' => array(),
				'disabledRules' => array(),
				'isPaid' => (bool) wfConfig::get('isPaid', 0),
			);
			$logPath = null;
			$storageExceptionMessage = __('An error occured when fetching the WAF configuration from the database.', 'wordfence') . ' <pre>' . esc_html($e->getMessage()) . '</pre>';
		}
		
		if (isset($_GET['subpage']) && $_GET['subpage'] == 'waf_options') {
			require(dirname(__FILE__) . '/menu_firewall_waf_options.php');
		}
		else if (isset($_GET['subpage']) && $_GET['subpage'] == 'blocking_options') {
			require(dirname(__FILE__) . '/menu_firewall_blocking_options.php');
		}
		else {
			require(dirname(__FILE__) . '/menu_firewall.php');
		}
	}

	public static function liveTrafficW3TCWarning() {
		echo self::cachingWarning("W3 Total Cache");
	}
	public static function liveTrafficSuperCacheWarning(){
		echo self::cachingWarning("WP Super Cache");
	}
	public static function cachingWarning($plugin){
		return '<div id="wordfenceConfigWarning" class="error fade"><p><strong>' .
			sprintf(/* translators: Plugin name. */ __('The Wordfence Live Traffic feature has been disabled because you have %s active which is not compatible with Wordfence Live Traffic.', 'wordfence'), $plugin)
			. '</strong> ' .
			sprintf(/* translators: 1. Plugin name. */ __('If you want to reenable Wordfence Live Traffic, you need to deactivate %1$s and then go to the Wordfence options page and reenable Live Traffic there. Wordfence does work with %1$s, however Live Traffic will be disabled and the Wordfence firewall will also count less hits per visitor because of the %1$s caching function. All other functions should work correctly.', 'wordfence'), $plugin)
			. '</p></div>';
	}
	public static function menu_dashboard() {
		wp_enqueue_style('wordfence-select2-css');
		wp_enqueue_script('wordfence-select2-js');
		wp_enqueue_script('chart-js');
		
		if (wfConfig::get('keyType') == wfLicense::KEY_TYPE_PAID_EXPIRED || (wfConfig::get('keyType') == wfLicense::KEY_TYPE_PAID_CURRENT && wfConfig::get('keyExpDays') < 30)) {
			$api = new wfAPI(wfConfig::get('apiKey', ''), wfUtils::getWPVersion());
			try {
				$api->call('check_api_key', array(), array(), false, 2);
			}
			catch (Exception $e) {
				//Do nothing
			}
		}
		
		if (isset($_GET['subpage']) && $_GET['subpage'] == 'global_options') {
			require(dirname(__FILE__) . '/menu_dashboard_options.php');
			return;
		}
		
		require(dirname(__FILE__) . '/menu_dashboard.php');
	}
	public static function menu_scan() {
		wp_enqueue_style('wordfence-select2-css');
		wp_enqueue_script('wordfence-select2-js');
		
		if (isset($_GET['subpage']) && $_GET['subpage'] == 'scan_options') {
			require(dirname(__FILE__) . '/menu_scanner_options.php');
			return;
		}
		else if (isset($_GET['subpage']) && $_GET['subpage'] == 'scan_credentials') {
			require(dirname(__FILE__) . '/menu_scanner_credentials.php');
			return;
		}

		require(dirname(__FILE__) . '/menu_scanner.php');
	}
	
	public static function menu_support() {
		wp_enqueue_style('wordfence-select2-css');
		wp_enqueue_script('wordfence-select2-js');
		
		require(dirname(__FILE__) . '/menu_support.php');
	}

	public static function menu_wordfence_central() {
		wfConfig::set('showWfCentralUI', 1);

		wp_enqueue_style('wordfence-select2-css');
		wp_enqueue_script('wordfence-select2-js');

		require(dirname(__FILE__) . '/menu_wordfence_central.php');
	}

	public static function menu_install() {
		$token = array_key_exists('token', $_GET) ? $_GET['token'] : null;
		$payload = array_key_exists('payload', $_GET) ? $_GET['payload'] : null;
		$invalidLink = false;
		$payloadException = null;
		$email = null;
		$license = null;
		if ($shouldShowOnboarding = wfOnboardingController::shouldShowAnyAttempt()) {
			if (!empty($token) && !empty($payload)) {
				if (wfLicense::validateRegistrationToken($token)) {
					$wfWebsite = wfWebsite::getInstance();
					try {
						$data = $wfWebsite->retrievePayload($payload, $expiredPayload);
						$data = json_decode($data, true);
						if (is_array($data) && array_key_exists('email', $data) && array_key_exists('license', $data)) {
							$email = (string) $data['email'];
							$license = (string) $data['license'];
						}
					}
					catch (wfWebsiteEphemeralPayloadRetrievalException $e) {
						$payloadException = $e;
						$invalidLink = true;
					}
				}
				else {
					$invalidLink = true;
				}
			}
		}
		require(__DIR__ . '/menu_install.php');
	}

	public static function fsActionRestoreFileCallback() {
		$issueID = filter_input(INPUT_GET, 'issueID', FILTER_SANITIZE_NUMBER_INT);
		$response = self::ajax_restoreFile_callback($issueID);
		if (!empty($response['ok'])) {
			$result = sprintf('<p>' . /* translators: File path. */ __('The file <code>%s</code> was restored successfully.', 'wordfence') . '</p>',
				esc_html(strpos($response['file'], ABSPATH) === 0 ? substr($response['file'], strlen(ABSPATH) + 1) : $response['file']));
		} else if (!empty($response['cerrorMessage'])) {
			$result = sprintf('<div class="wfSummaryErr">%s</div>', esc_html($response['cerrorMessage']));
		} else {
			$result = '<div class="wfSummaryErr">' . __('There was an error restoring the file.', 'wordfence') . '</div>';
		}
		printf(<<<HTML
<br>
%s
<p><a href="%s">%s</a></p>
HTML
			,
			$result,
			esc_url(network_admin_url('admin.php?page=WordfenceScan')),
			__('Return to scan results', 'wordfence')
		);
		wfScanEngine::refreshScanNotification();
	}

	public static function fsActionDeleteFileCallback() {
		$issueID = filter_input(INPUT_GET, 'issueID', FILTER_SANITIZE_NUMBER_INT);
		$response = self::ajax_deleteFile_callback($issueID);
		if (!empty($response['ok'])) {
			$result = sprintf('<p>' . /* translators: File path. */ __('The file <code>%s</code> was deleted successfully.', 'wordfence') . '</p>', esc_html($response['file']));
		} else if (!empty($response['errorMessage'])) {
			$result = sprintf('<div class="wfSummaryErr">%s</div>', esc_html($response['errorMessage']));
		} else {
			$result = '<div class="wfSummaryErr">' . __('There was an error deleting the file.', 'wordfence') . '</div>';
		}
		printf(<<<HTML
<br>
%s
<p><a href="%s">%s</a></p>
HTML
			,
			$result,
			esc_url(network_admin_url('admin.php?page=WordfenceScan')),
			__('Return to scan results', 'wordfence')
		);
		wfScanEngine::refreshScanNotification();
	}

	public static function status($level /* 1 has highest visibility */, $type /* info|error */, $msg){
		if($level > 3 && $level < 10 && (! self::isDebugOn())){ //level 10 and higher is for summary messages
			return false;
		}
		if($type != 'info' && $type != 'error'){ error_log("Invalid status type: $type"); return; }
		if(self::$printStatus){
			echo "STATUS: $level : $type : ".esc_html($msg)."\n";
		} else {
			self::getLog()->addStatus($level, $type, $msg);
		}
	}
	public static function profileUpdateAction($userID, $newDat = false){
		if(! $newDat){ return; }
		if(wfConfig::get('other_pwStrengthOnUpdate')){
			$oldDat = get_userdata($userID);
			if($newDat->user_pass != $oldDat->user_pass){
				$wf = new wfScanEngine();
				$wf->scanUserPassword($userID);
				$wf->emailNewIssues();
			}
		}
	}

	public static function replaceVersion($url) {
		if (is_string($url))
			return preg_replace_callback("/([&;\?]ver)=(.+?)(&|$)/", "wordfence::replaceVersionCallback", $url);
		return $url;
	}

	public static function replaceVersionCallback($matches) {
		global $wp_version;
		return $matches[1] . '=' . ($wp_version === $matches[2] ? wp_hash($matches[2]) : $matches[2]) . $matches[3];
	}

	public static function genFilter($gen, $type){
		if(wfConfig::get('other_hideWPVersion')){
			return '';
		} else {
			return $gen;
		}
	}
	public static function getMyHomeURL(){
		return wfUtils::wpAdminURL('admin.php?page=Wordfence');
	}
	public static function getMyOptionsURL(){
		return wfUtils::wpAdminURL('admin.php?page=Wordfence&subpage=global_options');
	}

	public static function alert($subject, $alertMsg, $IP) {
		wfConfig::inc('totalAlertsSent');
		$emails = wfConfig::getAlertEmails();
		if (sizeof($emails) < 1) { return false; }

		$IPMsg = "";
		if ($IP) {
			$IPMsg = sprintf(/* translators: IP address. */ __("User IP: %s\n", 'wordfence'), $IP);
			$reverse = wfUtils::reverseLookup($IP);
			if ($reverse) {
				$IPMsg .= sprintf(/* translators: Domain name. */ __("User hostname: %s\n", 'wordfence'), $reverse);
			}
			$userLoc = wfUtils::getIPGeo($IP);
			if ($userLoc) {
				$IPMsg .= __('User location: ', 'wordfence');
				if ($userLoc['city']) {
					$IPMsg .= $userLoc['city'] . ', ';
				}
				if ($userLoc['region'] && wfUtils::shouldDisplayRegion($userLoc['countryName'])) {
					$IPMsg .= $userLoc['region'] . ', ';
				}
				$IPMsg .= $userLoc['countryName'] . "\n";
			}
		}
		
		$content = wfUtils::tmpl('email_genericAlert.php', array(
			'isPaid' => wfConfig::get('isPaid'),
			'subject' => $subject,
			'blogName' => get_bloginfo('name', 'raw'),
			'adminURL' => get_admin_url(),
			'alertMsg' => $alertMsg,
			'IPMsg' => $IPMsg,
			'date' => wfUtils::localHumanDate(),
			'myHomeURL' => self::getMyHomeURL(),
			'myOptionsURL' => self::getMyOptionsURL()
			));
		$shortSiteURL = preg_replace('/^https?:\/\//i', '', site_url());
		$subject = "[Wordfence Alert] $shortSiteURL " . $subject;

		$sendMax = wfConfig::get('alert_maxHourly', 0);
		if($sendMax > 0){
			$sendArr = wfConfig::get_ser('alertFreqTrack', array());
			if(! is_array($sendArr)){
				$sendArr = array();
			}
			$minuteTime = floor(time() / 60);
			$totalSent = 0;
			for($i = $minuteTime; $i > $minuteTime - 60; $i--){
				$totalSent += isset($sendArr[$i]) ? $sendArr[$i] : 0;
			}
			if($totalSent >= $sendMax){
				return false;
			}
			$sendArr[$minuteTime] = isset($sendArr[$minuteTime]) ? $sendArr[$minuteTime] + 1 : 1;
			wfConfig::set_ser('alertFreqTrack', $sendArr);
		}
		//Prevent duplicate emails within 1 hour:
		$hash = md5(implode(',', $emails) . ':' . $subject . ':' . $alertMsg . ':' . $IP); //Hex
		$lastHash = wfConfig::get('lastEmailHash', false);
		if($lastHash){
			$lastHashDat = explode(':', $lastHash); //[time, hash]
			if(time() - $lastHashDat[0] < 3600){
				if($lastHashDat[1] == $hash){
					return false; //Don't send because this email is identical to the previous email which was sent within the last hour.
				}
			}
		}
		wfConfig::set('lastEmailHash', time() . ':' . $hash);
		foreach ($emails as $email) {
			$uniqueContent = $content . "\n\n" . sprintf(/* translators: WordPress admin panel URL. */ __('No longer an administrator for this site? Click here to stop receiving security alerts: %s', 'wordfence'), wfUtils::getSiteBaseURL() . '?_wfsf=removeAlertEmail&jwt=' . wfUtils::generateJWT(array('email' => $email)));
			wp_mail($email, $subject, $uniqueContent);
		}
		return true;
	}
	public static function getLog(){
		if(! self::$wfLog){
			$wfLog = wfLog::shared();
			self::$wfLog = $wfLog;
		}
		return self::$wfLog;
	}
	public static function wfSchemaExists(){
		global $wpdb;
		$exists = $wpdb->get_col($wpdb->prepare(<<<SQL
SELECT TABLE_NAME FROM information_schema.TABLES
WHERE TABLE_SCHEMA=DATABASE()
AND TABLE_NAME=%s
SQL
			, wfDB::networkTable('wfConfig')));
		return $exists ? true : false;
	}
	public static function isDebugOn(){
		if(is_null(self::$debugOn)){
			if(wfConfig::get('debugOn')){
				self::$debugOn = true;
			} else {
				self::$debugOn = false;
			}
		}
		return self::$debugOn;
	}
	//PUBLIC API
	public static function doNotCache(){ //Call this to prevent Wordfence from caching the current page.
		wfCache::doNotCache();
		return true;
	}
	public static function whitelistIP($IP){ //IP as a string in dotted quad notation e.g. '10.11.12.13'
		$IP = trim($IP);
		$user_range = new wfUserIPRange($IP);
		if (!$user_range->isValidRange()) {
			throw new Exception(__("The IP you provided must be in dotted quad notation or use ranges with square brackets. e.g. 10.11.12.13 or 10.11.12.[1-50]", 'wordfence'));
		}
		$whites = wfConfig::get('whitelisted', '');
		$arr = explode(',', $whites);
		$arr2 = array();
		foreach($arr as $e){
			if($e == $IP){
				return false;
			}
			$arr2[] = trim($e);
		}
		$arr2[] = $IP;
		wfConfig::set('whitelisted', implode(',', $arr2));
		return true;
	}

	public static function ajax_email_summary_email_address_debug_callback() {
		$email = !empty($_REQUEST['email']) ? $_REQUEST['email'] : null;
		if (!wfUtils::isValidEmail($email)) {
			return array('result' => __('Invalid email address provided', 'wordfence'));
		}
		
		$report = new wfActivityReport();
		return $report->sendReportViaEmail($email) ?
			array('ok' => 1, 'result' => __('Test email sent successfully', 'wordfence')) :
			array('result' => __("Test email failed to send", 'wordfence'));
	}

	public static function addDashboardWidget() {
		if (wfUtils::isAdmin() && (is_network_admin() || !is_multisite()) && wfConfig::get('email_summary_dashboard_widget_enabled')) {
			wp_enqueue_style('wordfence-activity-report-widget', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/activity-report-widget.css'), '', WORDFENCE_VERSION);
			$report_date_range = 'week';
			switch (wfConfig::get('email_summary_interval')) {
				case 'daily':
					$report_date_range = 'day';
					break;

				case 'monthly':
					$report_date_range = 'month';
					break;
			}
			wp_add_dashboard_widget(
				'wordfence_activity_report_widget',
				sprintf(/* translators: Localized date range. */ __('Wordfence activity in the past %s', 'wordfence'), $report_date_range),
				array('wfActivityReport', 'outputDashboardWidget')
			);
		}
	}

	/**
	 * @return bool
	 */
	public static function hasGDLimitLoginsMUPlugin() {
		return defined('GD_SYSTEM_PLUGIN_DIR') && file_exists(GD_SYSTEM_PLUGIN_DIR . 'limit-login-attempts/limit-login-attempts.php')
			&& defined('LIMIT_LOGIN_DIRECT_ADDR');
	}

	/**
	 * @param string $content
	 * @return string
	 */
	public static function fixGDLimitLoginsErrors($content) {
		if (self::$authError) {
			$content = str_replace(wp_kses(__('<strong>ERROR</strong>: Incorrect username or password.', 'limit-login-attempts'), array('strong'=>array())) . "<br />\n", '', $content);
			$content .= '<br />' . self::$authError->get_error_message();
		}
		return $content;
	}

	/**
	 * @return array
	 */
	public static function ajax_deleteAdminUser_callback() {
		/** @var wpdb $wpdb */
		global $wpdb;
		$issueID = absint(!empty($_POST['issueID']) ? $_POST['issueID'] : 0);
		$wfIssues = new wfIssues();
		$issue = $wfIssues->getIssueByID($issueID);
		if (!$issue) {
			return array('errorMsg' => __("We could not find that issue in our database.", 'wordfence'));
		}
		$data = $issue['data'];
		if (empty($data['userID'])) {
			return array('errorMsg' => __("We could not find that user in the database.", 'wordfence'));
		}
		$user = new WP_User($data['userID']);
		if (!$user->exists()) {
			return array('errorMsg' => __("We could not find that user in the database.", 'wordfence'));
		}
		$userLogin = $user->user_login;
		if (is_multisite() && strcasecmp($user->user_email, get_site_option('admin_email')) === 0) {
			return array('errorMsg' => __("This user's email is the network admin email. It will need to be changed before deleting this user.", 'wordfence'));
		}
		if (is_multisite()) {
			revoke_super_admin($data['userID']);
		}
		wp_delete_user($data['userID']);
		if (is_multisite()) {
			$wpdb->delete($wpdb->users, array('ID' => $data['userID']));
		}
		$wfIssues->deleteIssue($issueID);
		wfScanEngine::refreshScanNotification($wfIssues);

		return array(
			'ok'         => 1,
			'user_login' => $userLogin,
		);
	}

	public static function ajax_revokeAdminUser_callback() {
		$issueID = absint(!empty($_POST['issueID']) ? $_POST['issueID'] : 0);
		$wfIssues = new wfIssues();
		$issue = $wfIssues->getIssueByID($issueID);
		if (!$issue) {
			return array('errorMsg' => __("We could not find that issue in our database.", 'wordfence'));
		}
		$data = $issue['data'];
		if (empty($data['userID'])) {
			return array('errorMsg' => __("We could not find that user in the database.", 'wordfence'));
		}
		$user = new WP_User($data['userID']);
		$userLogin = $user->user_login;
		wp_revoke_user($data['userID']);
		if (is_multisite()) {
			revoke_super_admin($data['userID']);
		}

		$wfIssues->deleteIssue($issueID);
		wfScanEngine::refreshScanNotification($wfIssues);

		return array(
			'ok'         => 1,
			'user_login' => $userLogin,
		);
	}
	
	public static function ajax_acknowledgeAdminUser_callback() {
		$issueID = absint(!empty($_POST['issueID']) ? $_POST['issueID'] : 0);
		$wfIssues = new wfIssues();
		$issue = $wfIssues->getIssueByID($issueID);
		if (!$issue) {
			return array('errorMsg' => __("We could not find that issue in the database.", 'wordfence'));
		}
		$data = $issue['data'];
		if (empty($data['userID'])) {
			return array('errorMsg' => __("We could not find that user in the database.", 'wordfence'));
		}
		$user = new WP_User($data['userID']);
		if (!$user->exists()) {
			return array('errorMsg' => __("We could not find that user in the database.", 'wordfence'));
		}
		$userLogin = $user->user_login;
		
		$adminUsers = new wfAdminUserMonitor();
		$adminUsers->addAdmin($data['userID']);
		
		$wfIssues->deleteIssue($issueID);
		wfScanEngine::refreshScanNotification($wfIssues);

		return array(
			'ok'         => 1,
			'user_login' => $userLogin,
		);
	}

	/**
	 *
	 */
	public static function ajax_disableDirectoryListing_callback() {
		$issueID = absint($_POST['issueID']);
		$wfIssues = new wfIssues();
		$issue = $wfIssues->getIssueByID($issueID);
		if (!$issue) {
			return array(
				'err'      => 1,
				'errorMsg' => __("We could not find that issue in our database.", 'wordfence'),
			);
		}
		$wfIssues->deleteIssue($issueID);

		$htaccessPath = wfCache::getHtaccessPath();
		if (!$htaccessPath) {
			return array(
				'err'      => 1,
				'errorMsg' => __("Wordfence could not find your .htaccess file.", 'wordfence'),
			);
		}

		$fileContents = file_get_contents($htaccessPath);
		if (file_put_contents($htaccessPath, "# Added by Wordfence " . date('r') . "\nOptions -Indexes\n\n" . $fileContents, LOCK_EX)) {
			$uploadPaths = wp_upload_dir();
			if (!wfScanEngine::isDirectoryListingEnabled($uploadPaths['baseurl'])) {
				return array(
					'ok' => 1,
				);
			} else {
				// Revert any changes done to .htaccess
				file_put_contents($htaccessPath, $fileContents, LOCK_EX);
				return array(
					'err'      => 1,
					'errorMsg' => __("Updating the .htaccess did not fix the issue. You may need to add <code>Options -Indexes</code> to your httpd.conf if using Apache, or find documentation on how to disable directory listing for your web server.", 'wordfence'),
				);
			}
		}
		return array(
			'err'      => 1,
			'errorMsg' => __("There was an error writing to your .htaccess file.", 'wordfence'),
		);
	}

	/**
	 * Modify the query to prevent username enumeration.
	 *
	 * @param array $query_vars
	 * @return array
	 */
	public static function preventAuthorNScans($query_vars) {
		if (wfConfig::get('loginSec_disableAuthorScan') && !is_admin() &&
			!empty($query_vars['author']) && (is_array($query_vars['author']) || is_numeric(preg_replace('/[^0-9]/', '', $query_vars['author']))) &&
			(
				(isset($_GET['author']) && (is_array($_GET['author']) || is_numeric(preg_replace('/[^0-9]/', '', $_GET['author'])))) ||
				(isset($_POST['author']) && (is_array($_POST['author']) || is_numeric(preg_replace('/[^0-9]/', '', $_POST['author']))))
			)
		) {
			global $wp_query;
			$wp_query->set_404();
			status_header(404);
			nocache_headers();
			
			$template = get_404_template();
			if ($template && file_exists($template)) {
				include($template);
			}
			
			exit;
		}
		return $query_vars;
	}

	/**
	 * @param WP_Upgrader $updater
	 * @param array $hook_extra
	 */
	public static function hideReadme($updater, $hook_extra = null) {
		if (wfConfig::get('other_hideWPVersion')) {
			wfUtils::hideReadme();
		}
	}
	
	public static function ajax_saveDisclosureState_callback() {
		if (isset($_POST['name']) && isset($_POST['state'])) {
			$name = preg_replace('/[^a-zA-Z0-9_\-]/', '', $_POST['name']);
			$state = wfUtils::truthyToBoolean($_POST['state']);
			if (!empty($name)) {
				$disclosureStates = wfConfig::get_ser('disclosureStates', array());
				$disclosureStates[$name] = $state;
				wfConfig::set_ser('disclosureStates', $disclosureStates);
				return array('ok' => 1);
			}
		}
		else if (isset($_POST['names']) && isset($_POST['state'])) {
			$rawNames = $_POST['names'];
			if (is_array($rawNames)) {
				$filteredNames = array();
				foreach ($rawNames as $name) {
					$name = preg_replace('/[^a-zA-Z0-9_\-]/', '', $name);
					if (!empty($name)) {
						$filteredNames[] = $name;
					}
				}
				
				$state = wfUtils::truthyToBoolean($_POST['state']);
				if (!empty($filteredNames)) {
					$disclosureStates = wfConfig::get_ser('disclosureStates', array());
					foreach ($filteredNames as $name) {
						$disclosureStates[$name] = $state;
					}
					wfConfig::set_ser('disclosureStates', $disclosureStates);
					return array('ok' => 1);
				}
			}
		}
		
		return array(
			'err'      => 1,
			'errorMsg' => __("Required parameters not sent.", 'wordfence'),
		);
	}

	public static function ajax_saveWAFConfig_callback() {
		if (isset($_POST['wafConfigAction'])) {
			$waf = wfWAF::getInstance();
			if (method_exists($waf, 'isReadOnly') && $waf->isReadOnly()) {
				return array(
					'err'      => 1,
					'errorMsg' => __("The WAF is currently in read-only mode and will not save any configuration changes.", 'wordfence'),
				);
			}
			
			switch ($_POST['wafConfigAction']) {
				case 'config':
					if (!empty($_POST['wafStatus']) && in_array($_POST['wafStatus'], array(wfFirewall::FIREWALL_MODE_DISABLED, wfFirewall::FIREWALL_MODE_LEARNING, wfFirewall::FIREWALL_MODE_ENABLED))) {
						if ($_POST['wafStatus'] == 'learning-mode' && !empty($_POST['learningModeGracePeriodEnabled'])) {
							$gracePeriodEnd = strtotime(isset($_POST['learningModeGracePeriod']) ? $_POST['learningModeGracePeriod'] : '');
							if ($gracePeriodEnd > time()) {
								wfWAF::getInstance()->getStorageEngine()->setConfig('learningModeGracePeriodEnabled', 1);
								wfWAF::getInstance()->getStorageEngine()->setConfig('learningModeGracePeriod', $gracePeriodEnd);
							} else {
								return array(
									'err'      => 1,
									'errorMsg' => __("The grace period end time must be in the future.", 'wordfence'),
								);
							}
						} else {
							wfWAF::getInstance()->getStorageEngine()->setConfig('learningModeGracePeriodEnabled', 0);
							wfWAF::getInstance()->getStorageEngine()->unsetConfig('learningModeGracePeriod');
						}
						wfWAF::getInstance()->getStorageEngine()->setConfig('wafStatus', $_POST['wafStatus']);
						$firewall = new wfFirewall();
						$firewall->syncStatus(true);
					}

					break;

				case 'addWhitelist':
					if (isset($_POST['whitelistedPath']) && isset($_POST['whitelistedParam'])) {
						$path = stripslashes($_POST['whitelistedPath']);
						$paramKey = stripslashes($_POST['whitelistedParam']);
						if (!$path || !$paramKey) {
							break;
						}
						$data = array(
							'timestamp'   => time(),
							'description' => __('Allowlisted via Firewall Options page', 'wordfence'),
							'ip'          => wfUtils::getIP(),
							'disabled'    => empty($_POST['whitelistedEnabled']),
						);
						if (function_exists('get_current_user_id')) {
							$data['userID'] = get_current_user_id();
						}
						wfWAF::getInstance()->whitelistRuleForParam($path, $paramKey, 'all', $data);
					}
					break;

				case 'replaceWhitelist':
					if (
						!empty($_POST['oldWhitelistedPath']) && !empty($_POST['oldWhitelistedParam']) &&
						!empty($_POST['newWhitelistedPath']) && !empty($_POST['newWhitelistedParam'])
					) {
						$oldWhitelistedPath = stripslashes($_POST['oldWhitelistedPath']);
						$oldWhitelistedParam = stripslashes($_POST['oldWhitelistedParam']);

						$newWhitelistedPath = stripslashes($_POST['newWhitelistedPath']);
						$newWhitelistedParam = stripslashes($_POST['newWhitelistedParam']);

						$savedWhitelistedURLParams = (array) wfWAF::getInstance()->getStorageEngine()->getConfig('whitelistedURLParams', null, 'livewaf');
						// These are already base64'd
						$oldKey = $oldWhitelistedPath . '|' . $oldWhitelistedParam;
						$newKey = base64_encode($newWhitelistedPath) . '|' . base64_encode($newWhitelistedParam);
						try {
							$savedWhitelistedURLParams = wfUtils::arrayReplaceKey($savedWhitelistedURLParams, $oldKey, $newKey);
						} catch (Exception $e) {
							error_log("Caught exception from 'wfUtils::arrayReplaceKey' with message: " . $e->getMessage());
						}
						wfWAF::getInstance()->getStorageEngine()->setConfig('whitelistedURLParams', $savedWhitelistedURLParams, 'livewaf');
					}
					break;

				case 'deleteWhitelist':
					if (
						isset($_POST['deletedWhitelistedPath']) && is_string($_POST['deletedWhitelistedPath']) &&
						isset($_POST['deletedWhitelistedParam']) && is_string($_POST['deletedWhitelistedParam'])
					) {
						$deletedWhitelistedPath = stripslashes($_POST['deletedWhitelistedPath']);
						$deletedWhitelistedParam = stripslashes($_POST['deletedWhitelistedParam']);
						$savedWhitelistedURLParams = (array) wfWAF::getInstance()->getStorageEngine()->getConfig('whitelistedURLParams', null, 'livewaf');
						$key = $deletedWhitelistedPath . '|' . $deletedWhitelistedParam;
						unset($savedWhitelistedURLParams[$key]);
						wfWAF::getInstance()->getStorageEngine()->setConfig('whitelistedURLParams', $savedWhitelistedURLParams, 'livewaf');
					}
					break;

				case 'enableWhitelist':
					if (isset($_POST['whitelistedPath']) && isset($_POST['whitelistedParam'])) {
						$path = stripslashes($_POST['whitelistedPath']);
						$paramKey = stripslashes($_POST['whitelistedParam']);
						if (!$path || !$paramKey) {
							break;
						}
						$enabled = !empty($_POST['whitelistedEnabled']);

						$savedWhitelistedURLParams = (array) wfWAF::getInstance()->getStorageEngine()->getConfig('whitelistedURLParams', null, 'livewaf');
						$key = $path . '|' . $paramKey;
						if (array_key_exists($key, $savedWhitelistedURLParams) && is_array($savedWhitelistedURLParams[$key])) {
							foreach ($savedWhitelistedURLParams[$key] as $ruleID => $data) {
								$savedWhitelistedURLParams[$key][$ruleID]['disabled'] = !$enabled;
							}
						}
						wfWAF::getInstance()->getStorageEngine()->setConfig('whitelistedURLParams', $savedWhitelistedURLParams, 'livewaf');
					}
					break;

				case 'enableRule':
					$ruleEnabled = !empty($_POST['ruleEnabled']);
					$ruleID = !empty($_POST['ruleID']) ? (int) $_POST['ruleID'] : false;
					if ($ruleID) {
						$disabledRules = (array) wfWAF::getInstance()->getStorageEngine()->getConfig('disabledRules');
						if ($ruleEnabled) {
							unset($disabledRules[$ruleID]);
						} else {
							$disabledRules[$ruleID] = true;
						}
						wfWAF::getInstance()->getStorageEngine()->setConfig('disabledRules', $disabledRules);
					}
					break;
				case 'disableWAFBlacklistBlocking':
					if (isset($_POST['disableWAFBlacklistBlocking'])) {
						$disableWAFBlacklistBlocking = (int) $_POST['disableWAFBlacklistBlocking'];
						wfWAF::getInstance()->getStorageEngine()->setConfig('disableWAFBlacklistBlocking', $disableWAFBlacklistBlocking);
						if (method_exists(wfWAF::getInstance()->getStorageEngine(), 'purgeIPBlocks')) {
							wfWAF::getInstance()->getStorageEngine()->purgeIPBlocks(wfWAFStorageInterface::IP_BLOCKS_BLACKLIST);
						}
					}
					break;
			}
		}

		return array(
			'success' => true,
			'data'    => self::_getWAFData(),
		);
	}

	public static function ajax_updateWAFRules_callback() {
		try {
			$event = new wfWAFCronFetchRulesEvent(time() - 2, true);
			$event->setWaf(wfWAF::getInstance());
			$success = $event->fire();
			$failureReason = false;
			if (!$success && method_exists($event, 'getResponse')) {
				$response = $event->getResponse();
				if ($response === false) {
					$failureReason = wfFirewall::UPDATE_FAILURE_UNREACHABLE;
				}
				else {
					$jsonData = @json_decode($response->getBody(), true);
					if (isset($jsonData['errorMessage']) && strpos($jsonData['errorMessage'], 'rate limit') !== false) {
						$failureReason = wfFirewall::UPDATE_FAILURE_RATELIMIT;
					}
					else if (isset($jsonData['data']['signature'])) {
						$failureReason = wfFirewall::UPDATE_FAILURE_FILESYSTEM;
					}
				}
			}
			
			return self::_getWAFData($success, $failureReason);
		}
		catch (Exception $e) {
			$wafData = array(
				'learningMode' => false,
				'rules' => array(),
				'whitelistedURLParams' => array(),
				'disabledRules' => array(),
				'isPaid' => (bool) wfConfig::get('isPaid', 0),
			);
			
			return $wafData;
		}
	}

	public static function ajax_loadLiveTraffic_callback() {
		$return = array();

		$filters = new wfLiveTrafficQueryFilterCollection();
		$query = new wfLiveTrafficQuery(self::getLog());
		$query->setFilters($filters);
		if (array_key_exists('groupby', $_REQUEST)) {
			$param = $_REQUEST['groupby'];
			if ($param === 'type') {
				$param = 'jsRun';
			}
			$query->setGroupBy(new wfLiveTrafficQueryGroupBy($query, $param));
		}
		$query->setLimit(isset($_REQUEST['limit']) ? absint($_REQUEST['limit']) : 20);
		$query->setOffset(isset($_REQUEST['offset']) ? absint($_REQUEST['offset']) : 0);

		if (!empty($_REQUEST['since'])) {
			$query->setStartDate($_REQUEST['since']);
		} else if (!empty($_REQUEST['startDate'])) {
			$query->setStartDate(is_numeric($_REQUEST['startDate']) ? $_REQUEST['startDate'] : strtotime($_REQUEST['startDate']));
		}

		if (!empty($_REQUEST['endDate'])) {
			$query->setEndDate(is_numeric($_REQUEST['endDate']) ? $_REQUEST['endDate'] : strtotime($_REQUEST['endDate']));
		}

		if (
			array_key_exists('param', $_REQUEST) && is_array($_REQUEST['param']) &&
			array_key_exists('operator', $_REQUEST) && is_array($_REQUEST['operator']) &&
			array_key_exists('value', $_REQUEST) && is_array($_REQUEST['value'])
		) {
			for ($i = 0; $i < count($_REQUEST['param']); $i++) {
				if (
					array_key_exists($i, $_REQUEST['param']) &&
					array_key_exists($i, $_REQUEST['operator']) &&
					array_key_exists($i, $_REQUEST['value'])
				) {
					$param = $_REQUEST['param'][$i];
					$operator = $_REQUEST['operator'][$i];
					$value = $_REQUEST['value'][$i];

					switch (strtolower($param)) {
						case 'type':
							$param = 'jsRun';
							$value = strtolower($value) === 'human' ? 1 : 0;
							break;
						case 'ip':
							$ip = $value;
							
							if (strpos($ip, '*') !== false) { //If the IP contains a *, treat it as a wildcard for that segment and silently adjust the rule
								if (preg_match('/^(?:(?:\d{1,3}|\*)(?:\.|$)){2,4}/', $ip)) { //IPv4
									$value = array('00', '00', '00', '00', '00', '00', '00', '00', '00', '00', 'FF', 'FF');
									$octets = explode('.', $ip);
									foreach ($octets as $o)
									{
										if (strpos($o, '*') !== false) {
											$value[] = '..';
										}
										else {
											$value[] = strtoupper(str_pad(dechex($o), 2, '0', STR_PAD_LEFT));
										}
									}
									$value = '^' . implode('', array_pad($value, 16, '..')) . '$';
									$operator = ($operator == '!=' ? 'hnotregexp' : 'hregexp');
								}
								else if (!empty($ip) && preg_match('/^((?:[\da-f*]{1,4}(?::|)){0,8})(::)?((?:[\da-f*]{1,4}(?::|)){0,8})$/i', $ip)) { //IPv6
									if ($ip === '::') {
										$value = '^' . str_repeat('00', 16) . '$';
									}
									else {
										$colon_count = substr_count($ip, ':');
										$dbl_colon_pos = strpos($ip, '::');
										if ($dbl_colon_pos !== false) {
											$ip = str_replace('::', str_repeat(':0000', (($dbl_colon_pos === 0 || $dbl_colon_pos === strlen($ip) - 2) ? 9 : 8) - $colon_count) . ':', $ip);
											$ip = trim($ip, ':');
										}

										$ip_groups = explode(':', $ip);
										$value = array();
										foreach ($ip_groups as $ip_group) {
											if (strpos($ip_group, '*') !== false) {
												$value[] = '..';
												$value[] = '..';
											}
											else {
												$ip_group = strtoupper(str_pad($ip_group, 4, '0', STR_PAD_LEFT));
												$value[] = substr($ip_group, 0, 2);
												$value[] = substr($ip_group, -2);
											}
										}

										$value = '^' . implode('', array_pad($value, 16, '..')) . '$';
									}
									$operator = ($operator == '=' ? 'hregexp' : 'hnotregexp');
								}
								else if (preg_match('/^((?:0{1,4}(?::|)){0,5})(::)?ffff:((?:\d{1,3}(?:\.|$)){4})$/i', $ip, $matches)) { //IPv4 mapped IPv6
									$value = array('00', '00', '00', '00', '00', '00', '00', '00', '00', '00', 'FF', 'FF');
									$octets = explode('.', $matches[3]);
									foreach ($octets as $o)
									{
										if (strpos($o, '*') !== false) {
											$value[] = '..';
										}
										else {
											$value[] = strtoupper(str_pad(dechex($o), 2, '0', STR_PAD_LEFT));
										}
									}
									$value = '^' . implode('', array_pad($value, 16, '.')) . '$';
									$operator = ($operator == '=' ? 'hregexp' : 'hnotregexp');
								}
								else {
									$value = false;
								}
							}
							else {
								$value = wfUtils::inet_pton($ip);
							}
							break;
						case 'userid':
							$value = absint($value);
							break;
					}
					if ($operator === 'match' && $param !== 'ip') {
						$value = str_replace('*', '%', $value);
					}
					$filters->addFilter(new wfLiveTrafficQueryFilter($query, $param, $operator, $value));
				}
			}
		}

		try {
			$return['data'] = $query->execute();
			/*if (defined('WP_DEBUG') && WP_DEBUG) {
				$return['sql'] = $query->buildQuery();
			}*/
		} catch (wfLiveTrafficQueryException $e) {
			$return['data'] = array();
			$return['sql'] = $e->getMessage();
		}

		$return['success'] = true;

		return $return;
	}

	public static function ajax_whitelistWAFParamKey_callback() {
		if (class_exists('wfWAF') && $waf = wfWAF::getInstance()) {
			if (isset($_POST['path']) && isset($_POST['paramKey']) && isset($_POST['failedRules'])) {
				$data = array(
					'timestamp'   => time(),
					'description' => __('Allowlisted via Live Traffic', 'wordfence'),
					'source'	  => 'live-traffic',
					'ip'          => wfUtils::getIP(),
				);
				if (function_exists('get_current_user_id')) {
					$data['userID'] = get_current_user_id();
				}
				$waf->whitelistRuleForParam(base64_decode($_POST['path']), base64_decode($_POST['paramKey']),
					$_POST['failedRules'], $data);

				return array(
					'success' => true,
				);
			}
		}
		return false;
	}

	public static function ajax_whitelistBulkDelete_callback() {
		if (class_exists('wfWAF') && $waf = wfWAF::getInstance()) {
			if (!empty($_POST['items']) && ($items = json_decode(stripslashes($_POST['items']), true)) !== false) {
				$whitelist = (array) $waf->getStorageEngine()->getConfig('whitelistedURLParams', null, 'livewaf');
				if (!is_array($whitelist)) {
					$whitelist = array();
				}
				foreach ($items as $key) {
					list($path, $paramKey, ) = $key;
					$whitelistKey = $path . '|' . $paramKey;
					if (array_key_exists($whitelistKey, $whitelist)) {
						unset($whitelist[$whitelistKey]);
					}
				}
				$waf->getStorageEngine()->setConfig('whitelistedURLParams', $whitelist, 'livewaf');
				return array(
					'data'    => self::_getWAFData(),
					'success' => true,
				);
			}
		}
		return false;
	}

	public static function ajax_whitelistBulkEnable_callback() {
		if (class_exists('wfWAF') && $waf = wfWAF::getInstance()) {
			if (!empty($_POST['items']) && ($items = json_decode(stripslashes($_POST['items']), true)) !== false) {
				self::_whitelistBulkToggle($items, true);
				return array(
					'data'    => self::_getWAFData(),
					'success' => true,
				);
			}
		}
		return false;
	}

	public static function ajax_whitelistBulkDisable_callback() {
		if (class_exists('wfWAF') && $waf = wfWAF::getInstance()) {
			if (!empty($_POST['items']) && ($items = json_decode(stripslashes($_POST['items']), true)) !== false) {
				self::_whitelistBulkToggle($items, false);
				return array(
					'data'    => self::_getWAFData(),
					'success' => true,
				);
			}
		}
		return false;
	}

	private static function _whitelistBulkToggle($items, $enabled) {
		$waf = wfWAF::getInstance();
		$whitelist = (array) $waf->getStorageEngine()->getConfig('whitelistedURLParams', null, 'livewaf');
		if (!is_array($whitelist)) {
			$whitelist = array();
		}
		foreach ($items as $key) {
			list($path, $paramKey, ) = $key;
			$whitelistKey = $path . '|' . $paramKey;
			if (array_key_exists($whitelistKey, $whitelist) && is_array($whitelist[$whitelistKey])) {
				foreach ($whitelist[$whitelistKey] as $ruleID => $data) {
					$whitelist[$whitelistKey][$ruleID]['disabled'] = !$enabled;
				}
			}
		}
		$waf->getStorageEngine()->setConfig('whitelistedURLParams', $whitelist, 'livewaf');
	}

	private static function _getWAFData($updated = null, $failureReason = false) {
		$data['learningMode'] = wfWAF::getInstance()->isInLearningMode();
		$data['rules'] = wfWAF::getInstance()->getRules();
		/** @var wfWAFRule $rule */
		foreach ($data['rules'] as $ruleID => $rule) {
			$data['rules'][$ruleID] = $rule->toArray();
		}

		$whitelistedURLParams = (array) wfWAF::getInstance()->getStorageEngine()->getConfig('whitelistedURLParams', array(), 'livewaf');
		$data['whitelistedURLParams'] = array();
		if (is_array($whitelistedURLParams)) {
			foreach ($whitelistedURLParams as $urlParamKey => $rules) {
				list($path, $paramKey) = explode('|', $urlParamKey);
				$whitelistData = null;
				foreach ($rules as $ruleID => $whitelistedData) {
					if ($whitelistData === null) {
						$whitelistData = $whitelistedData;
						continue;
					}
					if ($ruleID === 'all') {
						$whitelistData = $whitelistedData;
						break;
					}
				}

				if (is_array($whitelistData) && array_key_exists('userID', $whitelistData) && function_exists('get_user_by')) {
					$user = get_user_by('id', $whitelistData['userID']);
					if ($user) {
						$whitelistData['username'] = $user->user_login;
					}
				}

				$data['whitelistedURLParams'][] = array(
					'path'     => $path,
					'paramKey' => $paramKey,
					'ruleID'   => array_keys($rules),
					'data'     => $whitelistData,
				);
			}
		}

		$data['disabledRules'] = (array) wfWAF::getInstance()->getStorageEngine()->getConfig('disabledRules');
		if ($lastUpdated = wfWAF::getInstance()->getStorageEngine()->getConfig('rulesLastUpdated', null, 'transient')) {
			$data['rulesLastUpdated'] = $lastUpdated;
		}
		$data['isPaid'] = (bool) wfConfig::get('isPaid', 0);
		if ($updated !== null) {
			$data['updated'] = (bool) $updated;
			if (!$updated) {
				$data['failure'] = $failureReason;
			}
		}
		return $data;
	}
	
	public static function ajax_wafStatus_callback() {
		if (!empty($_REQUEST['nonce']) && hash_equals($_REQUEST['nonce'], wfConfig::get('wafStatusCallbackNonce', ''))) {
			wfConfig::set('wafStatusCallbackNonce', '');
			wfUtils::send_json(array('active' => WFWAF_AUTO_PREPEND, 'subdirectory' => WFWAF_SUBDIRECTORY_INSTALL));
		}
		wfUtils::send_json(false);
	}
	
	public static function ajax_installAutoPrepend_callback() {
		global $wp_filesystem;
		
		$currentAutoPrependFile = ini_get('auto_prepend_file');
		$currentAutoPrepend = null;
		if (isset($_POST['currentAutoPrepend']) && !WF_IS_WP_ENGINE && !WF_IS_PRESSABLE && !WF_IS_FLYWHEEL) {
			$currentAutoPrepend = $_POST['currentAutoPrepend'];
		}
		
		$serverConfiguration = null;
		if (isset($_POST['serverConfiguration']) && wfWAFAutoPrependHelper::isValidServerConfig($_POST['serverConfiguration'])) {
			$serverConfiguration = $_POST['serverConfiguration'];
		}
		
		if ($serverConfiguration === null) {
			return array('errorMsg' => __('A valid server configuration was not provided.', 'wordfence'));
		}
		
		$helper = new wfWAFAutoPrependHelper($serverConfiguration, $currentAutoPrepend === 'override' ? null : $currentAutoPrependFile);
		
		ob_start();
		$ajaxURL = admin_url('admin-ajax.php');
		$allow_relaxed_file_ownership = true;
		if (false === ($credentials = request_filesystem_credentials($ajaxURL, '', false, ABSPATH, array('version', 'locale', 'action', 'serverConfiguration', 'currentAutoPrepend'), $allow_relaxed_file_ownership))) {
			$credentialsContent = ob_get_clean();
			$html = wfView::create('waf/waf-modal-wrapper', array(
				'title' => __('Filesystem Credentials Required', 'wordfence'),
				'html' => $credentialsContent,
				'helpHTML' => wp_kses(sprintf(/* translators: Support URL. */ __('If you cannot complete the setup process, <a target="_blank" rel="noopener noreferrer" href="%s">click here for help<span class="screen-reader-text"> (opens in new tab)</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_INSTALL_MANUALLY)), array('a' => array('href' => array(), 'target' => array(), 'rel' => array()), 'span' => array('class' => array()))),
				'footerHTML' => esc_html__('Once you have entered credentials, click Continue to complete the setup.', 'wordfence'),
			))->render();
			return array('needsCredentials' => 1, 'html' => $html);
		}
		ob_end_clean();
		
		if (!WP_Filesystem($credentials, ABSPATH, $allow_relaxed_file_ownership) && $wp_filesystem->errors->get_error_code()) {
			$credentialsError = '';
			foreach ($wp_filesystem->errors->get_error_messages() as $message) {
				if (is_wp_error($message)) {
					if ($message->get_error_data() && is_string($message->get_error_data())) {
						$message = $message->get_error_message() . ': ' . $message->get_error_data();
					}
					else {
						$message = $message->get_error_message();
					}
				}
				$credentialsError .= "<p>$message</p>\n";
			}
				
			$html = wfView::create('waf/waf-modal-wrapper', array(
				'title' => __('Filesystem Permission Error', 'wordfence'),
				'html' => $credentialsError,
				'helpHTML' => wp_kses(sprintf(/* translators: Support URL. */ __('If you cannot complete the setup process, <a target="_blank" rel="noopener noreferrer" href="%s">click here for help<span class="screen-reader-text"> (opens in new tab)</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_INSTALL_MANUALLY)), array('a' => array('href' => array(), 'target' => array(), 'rel' => array()), 'span' => array('class' => array()))),
				'footerButtonTitle' => __('Cancel', 'wordfence'),
			))->render();
			return array('credentialsFailed' => 1, 'html' => $html);
		}
		
		try {
			$helper->performInstallation($wp_filesystem);
			
			$nonce = bin2hex(wfWAFUtils::random_bytes(32));
			wfConfig::set('wafStatusCallbackNonce', $nonce);
			$verifyURL = add_query_arg(array('action' => 'wordfence_wafStatus', 'nonce' => $nonce), $ajaxURL);
			$response = wp_remote_get($verifyURL, array('headers' => array('Referer' => false/*, 'Cookie' => 'XDEBUG_SESSION=1'*/)));
			
			$active = false;
			if (!is_wp_error($response)) {
				$wafStatus = @json_decode(wp_remote_retrieve_body($response), true);
				if (isset($wafStatus['active']) && isset($wafStatus['subdirectory'])) {
					$active = $wafStatus['active'] && !$wafStatus['subdirectory'];
				}
			}
			
			if ($serverConfiguration == 'manual') {
				$html = wfView::create('waf/waf-modal-wrapper', array(
					'title' => __('Manual Installation Instructions', 'wordfence'),
					'html' => wfView::create('waf/waf-install-manual')->render(),
					'footerButtonTitle' => __('Close', 'wordfence'),
				))->render();
			}
			else {
				$html = wfView::create('waf/waf-modal-wrapper', array(
					'title' => __('Installation Successful', 'wordfence'),
					'html' => wfView::create('waf/waf-install-success', array('active' => $active))->render(),
					'footerButtonTitle' => __('Close', 'wordfence'),
				))->render();
			}
			
			return array('ok' => 1, 'html' => $html);
		}
		catch (wfWAFAutoPrependHelperException $e) {
			$installError = "<p>" . $e->getMessage() . "</p>";
			$html = wfView::create('waf/waf-modal-wrapper', array(
				'title' => __('Installation Failed', 'wordfence'),
				'html' => $installError,
				'helpHTML' => wp_kses(sprintf(/* translators: Support URL. */ __('If you cannot complete the setup process, <a target="_blank" rel="noopener noreferrer" href="%s">click here for help<span class="screen-reader-text"> (opens in new tab)</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_INSTALL_MANUALLY)), array('a' => array('href' => array(), 'target' => array(), 'rel' => array()), 'span' => array('class' => array()))),
				'footerButtonTitle' => __('Cancel', 'wordfence'),
			))->render();
			return array('installationFailed' => 1, 'html' => $html);
		}
	}
	
	public static function ajax_uninstallAutoPrepend_callback() {
		global $wp_filesystem;
		
		$serverConfiguration = null;
		if (isset($_POST['serverConfiguration']) && wfWAFAutoPrependHelper::isValidServerConfig($_POST['serverConfiguration'])) {
			$serverConfiguration = $_POST['serverConfiguration'];
		}
		
		if ($serverConfiguration === null) {
			return array('errorMsg' => __('A valid server configuration was not provided.', 'wordfence'));
		}
		
		$helper = new wfWAFAutoPrependHelper($serverConfiguration, null);
		
		if (isset($_POST['credentials']) && isset($_POST['credentialsSignature'])) {
			$salt = wp_salt('logged_in');
			$expectedSignature = hash_hmac('sha256', $_POST['credentials'], $salt);
			if (hash_equals($expectedSignature, $_POST['credentialsSignature'])) {
				$decrypted = wfUtils::decrypt($_POST['credentials']);
				$credentials = @json_decode($decrypted, true);
			}
		}
		
		$ajaxURL = admin_url('admin-ajax.php');
		if (!isset($credentials)) {
			$allow_relaxed_file_ownership = true;
			ob_start();
			if (false === ($credentials = request_filesystem_credentials($ajaxURL, '', false, ABSPATH, array('version', 'locale', 'action', 'serverConfiguration', 'iniModified'), $allow_relaxed_file_ownership))) {
				$credentialsContent = ob_get_clean();
				$html = wfView::create('waf/waf-modal-wrapper', array(
					'title' => __('Filesystem Credentials Required', 'wordfence'),
					'html' => $credentialsContent,
					'helpHTML' => wp_kses(sprintf(/* translators: Support URL. */ __('If you cannot complete the uninstall process, <a target="_blank" rel="noopener noreferrer" href="%s">click here for help<span class="screen-reader-text"> (opens in new tab)</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_REMOVE_MANUALLY)), array('a' => array('href' => array(), 'target' => array(), 'rel' => array()), 'span' => array('class' => array()))),
					'footerHTML' => esc_html__('Once you have entered credentials, click Continue to complete uninstallation.', 'wordfence'),
				))->render();
				return array('needsCredentials' => 1, 'html' => $html);
			}
			ob_end_clean();
		}
		
		if (!WP_Filesystem($credentials, ABSPATH, $allow_relaxed_file_ownership) && $wp_filesystem->errors->get_error_code()) {
			$credentialsError = '';
			foreach ($wp_filesystem->errors->get_error_messages() as $message) {
				if (is_wp_error($message)) {
					if ($message->get_error_data() && is_string($message->get_error_data())) {
						$message = $message->get_error_message() . ': ' . $message->get_error_data();
					}
					else {
						$message = $message->get_error_message();
					}
				}
				$credentialsError .= "<p>$message</p>\n";
			}
			
			$html = wfView::create('waf/waf-modal-wrapper', array(
				'title' => __('Filesystem Permission Error', 'wordfence'),
				'html' => $credentialsError,
				'helpHTML' => wp_kses(sprintf(/* translators: Support URL. */ __('If you cannot complete the uninstall process, <a target="_blank" rel="noopener noreferrer" href="%s">click here for help<span class="screen-reader-text"> (opens in new tab)</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_REMOVE_MANUALLY)), array('a' => array('href' => array(), 'target' => array(), 'rel' => array()), 'span' => array('class' => array()))),
				'footerButtonTitle' => __('Cancel', 'wordfence'),
			))->render();
			return array('credentialsFailed' => 1, 'html' => $html);
		}
		
		try {
			if ((!isset($_POST['iniModified']) || (isset($_POST['iniModified']) && !$_POST['iniModified'])) && !WF_IS_PRESSABLE) { //Uses .user.ini but not yet modified
				$hasPreviousAutoPrepend = $helper->performIniRemoval($wp_filesystem);
				
				$iniTTL = intval(ini_get('user_ini.cache_ttl'));
				if ($iniTTL == 0) {
					$iniTTL = 300; //The PHP default
				}
				if (!$helper->usesUserIni()) {
					$iniTTL = 0; //.htaccess
				}
				$timeout = max(30, $iniTTL);
				$timeoutString = wfUtils::makeDuration($timeout);
				
				$waitingResponse = '<p>' . __('The <code>auto_prepend_file</code> setting has been successfully removed from <code>.htaccess</code> and <code>.user.ini</code>. Once this change takes effect, Extended Protection Mode will be disabled.', 'wordfence') . '</p>';
				if ($hasPreviousAutoPrepend) {
					$waitingResponse .= '<p>' . __('Any previous value for <code>auto_prepend_file</code> will need to be re-enabled manually if still needed.', 'wordfence') . '</p>';
				}
				
				$spinner = wfView::create('common/indeterminate-progress', array('size' => 32))->render();
				$waitingResponse .= '<ul class="wf-flex-horizontal"><li>' . $spinner . '</li><li class="wf-padding-add-left">' . sprintf(/* translators: Time until. */ __('Waiting for it to take effect. This may take up to %s.', 'wordfence'), $timeoutString) . '</li></ul>';
				
				$html = wfView::create('waf/waf-modal-wrapper', array(
					'title' => __('Waiting for Changes', 'wordfence'),
					'html' => $waitingResponse,
					'helpHTML' => wp_kses(sprintf(/* translators: Support URL. */ __('If you cannot complete the uninstall process, <a target="_blank" rel="noopener noreferrer" href="%s">click here for help<span class="screen-reader-text"> (opens in new tab)</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_REMOVE_MANUALLY)), array('a' => array('href' => array(), 'target' => array(), 'rel' => array()), 'span' => array('class' => array()))),
					'footerButtonTitle' => __('Close', 'wordfence'),
					'noX' => true,
				))->render();
				
				$response = array('uninstallationWaiting' => 1, 'html' => $html, 'timeout' => $timeout, 'serverConfiguration' => $_POST['serverConfiguration']);
				if (isset($credentials) && is_array($credentials)) {
					$salt = wp_salt('logged_in');
					$json = json_encode($credentials);
					$encrypted = wfUtils::encrypt($json);
					$signature = hash_hmac('sha256', $encrypted, $salt);
					$response['credentials'] = $encrypted;
					$response['credentialsSignature'] = $signature;
				}
				return $response;
			}
			else { //.user.ini and .htaccess modified if applicable and waiting period elapsed or otherwise ready to advance to next step
				if (WFWAF_AUTO_PREPEND && !WFWAF_SUBDIRECTORY_INSTALL && !WF_IS_WP_ENGINE && !WF_IS_PRESSABLE) { //.user.ini modified, but the WAF is still enabled
					$retryAttempted = (isset($_POST['retryAttempted']) && $_POST['retryAttempted']);
					$userIniError = '<p class="wf-error">';
					$userIniError .= __('Extended Protection Mode has not been disabled. This may be because <code>auto_prepend_file</code> is configured somewhere else or the value is still cached by PHP.', 'wordfence');
					if ($retryAttempted) {
						$userIniError .= ' <strong>' . __('Retrying Failed.', 'wordfence') . '</strong>';
					}
					$userIniError .= ' <a href="#" class="wf-waf-uninstall-try-again" role="button">' . __('Try Again', 'wordfence') . '</a>';
					$userIniError .= '</p>';
					$html = wfView::create('waf/waf-modal-wrapper', array(
						'title' => __('Unable to Uninstall', 'wordfence'),
						'html' => $userIniError,
						'helpHTML' => wp_kses(sprintf(/* translators: Support URL. */ __('If you cannot complete the uninstall process, <a target="_blank" rel="noopener noreferrer" href="%s">click here for help<span class="screen-reader-text"> (opens in new tab)</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_REMOVE_MANUALLY)), array('a' => array('href' => array(), 'target' => array(), 'rel' => array()), 'span' => array('class' => array()))),
						'footerButtonTitle' => __('Cancel', 'wordfence'),
					))->render();
					
					$response = array('uninstallationFailed' => 1, 'html' => $html, 'serverConfiguration' => $_POST['serverConfiguration']);
					if (isset($credentials) && is_array($credentials)) {
						$salt = wp_salt('logged_in');
						$json = json_encode($credentials);
						$encrypted = wfUtils::encrypt($json);
						$signature = hash_hmac('sha256', $encrypted, $salt);
						$response['credentials'] = $encrypted;
						$response['credentialsSignature'] = $signature;
					}
					return $response;
				}
				
				$helper->performAutoPrependFileRemoval($wp_filesystem);
				
				$nonce = bin2hex(wfWAFUtils::random_bytes(32));
				wfConfig::set('wafStatusCallbackNonce', $nonce);
				$verifyURL = add_query_arg(array('action' => 'wordfence_wafStatus', 'nonce' => $nonce), $ajaxURL);
				$response = wp_remote_get($verifyURL, array('headers' => array('Referer' => false/*, 'Cookie' => 'XDEBUG_SESSION=1'*/)));
				
				$active = true;
				$subdirectory = WFWAF_SUBDIRECTORY_INSTALL;
				if (!is_wp_error($response)) {
					$wafStatus = @json_decode(wp_remote_retrieve_body($response), true);
					if (isset($wafStatus['active']) && isset($wafStatus['subdirectory'])) {
						$active = $wafStatus['active'] && !$wafStatus['subdirectory'];
						$subdirectory = $wafStatus['subdirectory'];
					}
				}
				
				$html = wfView::create('waf/waf-modal-wrapper', array(
					'title' => __('Uninstallation Complete', 'wordfence'),
					'html' => wfView::create('waf/waf-uninstall-success', array('active' => $active, 'subdirectory' => $subdirectory))->render(),
					'footerButtonTitle' => __('Close', 'wordfence'),
				))->render();
				return array('ok' => 1, 'html' => $html);
			}
		}
		catch (wfWAFAutoPrependHelperException $e) {
			$installError = "<p>" . $e->getMessage() . "</p>";
			$html = wfView::create('waf/waf-modal-wrapper', array(
				'title' => __('Uninstallation Failed', 'wordfence'),
				'html' => $installError,
				'helpHTML' => wp_kses(sprintf(/* translators: Support URL. */ __('If you cannot complete the uninstall process, <a target="_blank" rel="noopener noreferrer" href="%s">click here for help<span class="screen-reader-text"> (opens in new tab)</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_REMOVE_MANUALLY)), array('a' => array('href' => array(), 'target' => array(), 'rel' => array()), 'span' => array('class' => array()))),
				'footerButtonTitle' => __('Cancel', 'wordfence'),
			))->render();
			return array('uninstallationFailed' => 1, 'html' => $html);
		}
	}

	public static function actionUserRegistration($user_id) {
		if (wfUtils::isAdmin($user_id) && ($request = self::getLog()->getCurrentRequest())) {
			//self::getLog()->canLogHit = true;
			$request->action = 'user:adminCreate';
			$request->save();
		}
	}

	public static function actionPasswordReset($user = null, $new_pass = null) {
		if ($request = self::getLog()->getCurrentRequest()) {
			//self::getLog()->canLogHit = true;
			$request->action = 'user:passwordReset';
			$request->save();
		}
	}

	public static function trimWfHits($force = false) {
		if(!$force && self::isApiDelayed())
			return;
		$wfdb = new wfDB();
		$lastAggregation = wfConfig::get('lastBlockAggregation', 0);
		$table_wfHits = wfDB::networkTable('wfHits');
		$count = $wfdb->querySingle("select count(*) as cnt from {$table_wfHits}");
		$liveTrafficMaxRows = absint(wfConfig::get('liveTraf_maxRows', 2000));
		if ($count > $liveTrafficMaxRows * 10) {
			self::_aggregateBlockStats($lastAggregation);
			$wfdb->truncate($table_wfHits); //So we don't slow down sites that have very large wfHits tables
		}
		else if ($count > $liveTrafficMaxRows) {
			self::_aggregateBlockStats($lastAggregation);
			$wfdb->queryWrite("delete from {$table_wfHits} order by id asc limit %d", ($count - $liveTrafficMaxRows) + ($liveTrafficMaxRows * .2));
		}
		else if ($lastAggregation < (time() - 86400)) {
			self::_aggregateBlockStats($lastAggregation);
		}
		
		$maxAge = wfConfig::get('liveTraf_maxAge', 30);
		if ($maxAge <= 0 || $maxAge > 30) {
			$maxAge = 30;
		}
		$wfdb->queryWrite("DELETE FROM {$table_wfHits} WHERE ctime < %d", time() - ($maxAge * 86400));
	}
	
	private static function _aggregateBlockStats($since = false) {
		global $wpdb;
		
		if (!wfConfig::get('other_WFNet', true)) {
			return;
		}
		
		if ($since === false) {
			$since = wfConfig::get('lastBlockAggregation', 0);
		}
		
		$hitsTable = wfDB::networkTable('wfHits');
		$query = $wpdb->prepare("SELECT COUNT(*) AS cnt, CASE WHEN (jsRun = 1 OR userID > 0) THEN 1 ELSE 0 END AS isHuman, statusCode FROM {$hitsTable} WHERE ctime > %d GROUP BY isHuman, statusCode", $since);
		$rows = $wpdb->get_results($query, ARRAY_A);
		if (count($rows)) {
			try {
				$api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion());
				$api->call('aggregate_stats', array(), array('stats' => json_encode($rows)));
			}
			catch (Exception $e) {
				// Do nothing
			}
		}
		
		wfConfig::set('lastBlockAggregation', time());
	}

	private static function isApiDelayed() {
		return wfConfig::get('apiDelayedUntil', 0) > time();
	}

	private static function delaySendAttackData($until) {
		wfConfig::set('apiDelayedUntil', $until);
		self::scheduleSendAttackData($until);
	}

	private static function scheduleSendAttackData($timeToSend = null) {
		if ($timeToSend === null) {
			$timeToSend = time() + (60 * 5);
		}
		$notMainSite = is_multisite() && !is_main_site();
		if ($notMainSite) {
			global $current_site;
			switch_to_blog($current_site->blog_id);
		}
		if (!wp_next_scheduled('wordfence_processAttackData')) {
			wp_schedule_single_event($timeToSend, 'wordfence_processAttackData');
		}
		if ($notMainSite) {
			restore_current_blog();
		}
	}

	private static function truncateWafFailures() {
		wfDB::shared()->truncate(wfDB::networkTable('wfWafFailures'));
	}

	private static function loadWafFailures(&$purgeCallable = null) {
		global $wpdb;
		$table = wfDB::networkTable('wfWafFailures');
		$query = <<<SQL
			SELECT
				id,
				failures.rule_id,
				throwable AS latest_throwable,
				UNIX_TIMESTAMP(latest_occurrence) AS latest_occurrence,
				occurrences
			FROM
				{$table} failures
				JOIN (
					SELECT
						rule_id,
						MAX(id) AS max_id,
						MAX(timestamp) AS latest_occurrence,
						COUNT(*) AS occurrences
					FROM
						{$table}
					GROUP BY
						rule_id
				) aggregate ON failures.id = aggregate.max_id
SQL;
		$results = $wpdb->get_results($query);
		$maxId = null;
		foreach ($results as $row) {
			if ($maxId === null) {
				$maxId = $row->id;
			}
			else {
				$maxId = max($maxId, $row->id);
			}
		}
		if ($maxId === null) {
			$purgeCallable = function() { /* Nothing to delete */ };
		}
		else {
			$purgeCallable = function() use ($table, $maxId, $wpdb) {
				$wpdb->query(
					$wpdb->prepare(
						"DELETE FROM {$table} WHERE id <= %d",
						$maxId
					)
				);
			};
		}
		return $results;
	}

	/**
	 *
	 */
	public static function processAttackData() {
		global $wpdb;
		$table_wfHits = wfDB::networkTable('wfHits');
		if (!defined('DONOTCACHEDB')) { define('DONOTCACHEDB', true); }
		
		$waf = wfWAF::getInstance();
		if ($waf->getStorageEngine()->getConfig('attackDataKey', false) === false) {
			$waf->getStorageEngine()->setConfig('attackDataKey', mt_rand(0, 0xfff));
		}
		
		//Send alert email if needed
		if (wfConfig::get('wafAlertOnAttacks')) {
			$alertInterval = wfConfig::get('wafAlertInterval', 0);
			$cutoffTime = max(time() - $alertInterval, wfConfig::get('wafAlertLastSendTime'));
			$wafAlertWhitelist = wfConfig::get('wafAlertWhitelist', '');
			$wafAlertWhitelist = preg_split("/[,\r\n]+/", $wafAlertWhitelist);
			foreach ($wafAlertWhitelist as $index => &$entry) {
				$entry = trim($entry);
				if (empty($entry) || (!preg_match('/^(?:\d{1,3}(?:\.|$)){4}/', $entry) && !preg_match('/^((?:[\da-f]{1,4}(?::|)){0,8})(::)?((?:[\da-f]{1,4}(?::|)){0,8})$/i', $entry))) {
					unset($wafAlertWhitelist[$index]);
					continue;
				}
				
				$packed = @wfUtils::inet_pton($entry);
				if ($packed === false) {
					unset($wafAlertWhitelist[$index]);
					continue;
				}
				$entry = bin2hex($packed);
			}
			$wafAlertWhitelist = array_filter($wafAlertWhitelist);
			$attackDataQuery = $wpdb->prepare(
				"SELECT * FROM {$table_wfHits}
				WHERE action = 'blocked:waf' " .
				(count($wafAlertWhitelist) ? "AND HEX(IP) NOT IN (" . implode(", ", array_fill(0, count($wafAlertWhitelist), '%s')) . ")" : "")
				. " AND attackLogTime > %f
				ORDER BY attackLogTime DESC
				LIMIT 10",
			array_merge($wafAlertWhitelist, array(sprintf('%.6f', $cutoffTime))));
			$attackDataCountQuery = str_replace(
				array(
					"SELECT * FROM",
					"ORDER BY attackLogTime DESC",
					"LIMIT 10",
				),
				array( "SELECT COUNT(*) FROM", "", "" ), $attackDataQuery
			);
			$attackData = $wpdb->get_results($attackDataQuery);
			$attackCount = $wpdb->get_var($attackDataCountQuery);
			unset( $attackDataQuery, $attackDataCountQuery );
			$threshold = (int) wfConfig::get('wafAlertThreshold');
			if ($threshold < 1) {
				$threshold = 100;
			}
			if ($attackCount >= $threshold) {
				$durationMessage = wfUtils::makeDuration($alertInterval);
				$message = sprintf(
					/* translators: 1. Number of attacks/blocks. 2. Time since. */
					__('The Wordfence Web Application Firewall has blocked %1$d attacks over the last %2$s.', 'wordfence'),
					$attackCount,
					$durationMessage
				);
				$message .= "\n\n";
				$message .= __('Wordfence is blocking these attacks, and we\'re sending this notice to make you aware that there is a higher volume of the attacks than usual. Additionally, the Wordfence Real-Time IP Blocklist can block known attackers\' IP addresses automatically for Premium users, including any probing requests that may not be malicious on their own. All Wordfence users can also opt to block the attacking IPs manually if desired. As always, be sure to watch your scan results and keep your plugins, themes and WordPress core version updated.', 'wordfence');
				$message .= "\n\n";
				$message .= __('Below is a sample of these recent attacks:', 'wordfence');
				$attackTable = array();
				$dateMax = $ipMax = $countryMax = 0;
				foreach ($attackData as $row) {
					$actionData = json_decode($row->actionData, true);
					if (!is_array($actionData) || !isset($actionData['paramKey']) || !isset($actionData['paramValue'])) {
						continue;
					}
					
					if (isset($actionData['failedRules']) && $actionData['failedRules'] == 'blocked') {
						$row->longDescription = __("Blocked because the IP is blocklisted", 'wordfence');
					}
					else {
						$row->longDescription = sprintf(/* translators: Reason for firewall action. */ __("Blocked for %s", 'wordfence'), $row->actionDescription);
					}
					
					$paramKey = base64_decode($actionData['paramKey']);
					$paramValue = base64_decode($actionData['paramValue']);
					if (strlen($paramValue) > 100) {
						$paramValue = substr($paramValue, 0, 100) . '...';
					}
					
					if (preg_match('/([a-z0-9_]+\.[a-z0-9_]+)(?:\[(.+?)\](.*))?/i', $paramKey, $matches)) {
						switch ($matches[1]) {
							case 'request.queryString':
								$row->longDescription = sprintf(
									/* translators: 1. Reason for firewall action. 2. Input parameter. 2. Input parameter value. */
									__('Blocked for %1$s in query string: %2$s = %3$s', 'wordfence'), $row->actionDescription, $matches[2], $paramValue);
								break;
							case 'request.body':
								$row->longDescription = sprintf(
									/* translators: 1. Reason for firewall action. 2. Input parameter. 2. Input parameter value. */
									__('Blocked for %1$s in POST body: %2$s = %3$s', 'wordfence'), $row->actionDescription, $matches[2], $paramValue);
								break;
							case 'request.cookie':
								$row->longDescription = sprintf(
									/* translators: 1. Reason for firewall action. 2. Input parameter. 2. Input parameter value. */
									__('Blocked for %1$s in cookie: %2$s = %3$s', 'wordfence'), $row->actionDescription, $matches[2], $paramValue);
								break;
							case 'request.fileNames':
								$row->longDescription = sprintf(
									/* translators: 1. Reason for firewall action. 2. Input parameter. 2. Input parameter value. */
									__('Blocked for %1$s in file: %2$s = %3$s', 'wordfence'), $row->actionDescription, $matches[2], $paramValue);
								break;
						}
					}
					
					$date = date_i18n('F j, Y g:ia', floor($row->attackLogTime)); $dateMax = max(strlen($date), $dateMax);
					$ip = wfUtils::inet_ntop($row->IP); $ipMax = max(strlen($ip), $ipMax);
					$country = wfUtils::countryCode2Name(wfUtils::IP2Country($ip)); $country = (empty($country) ? 'Unknown' : $country); $countryMax = max(strlen($country), $countryMax); 
					$attackTable[] = array('date' => $date, 'IP' => $ip, 'country' => $country, 'message' => $row->longDescription);
				}
				
				foreach ($attackTable as $row) {
					$date = str_pad($row['date'], $dateMax + 2);
					$ip = str_pad($row['IP'] . " ({$row['country']})", $ipMax + $countryMax + 8);
					$attackMessage = $row['message'];
					$message .= "\n" . $date . $ip . $attackMessage;
				}

				$alertCallback = array(new wfIncreasedAttackRateAlert($message), 'send');
				do_action('wordfence_security_event', 'increasedAttackRate', array(
					'attackCount' => $attackCount,
					'attackTable' => $attackTable,
					'duration' => $alertInterval,
					'ip' => wfUtils::getIP(),
				), $alertCallback);

				wfConfig::set('wafAlertLastSendTime', time());
			}
		}

		if (wfConfig::get('other_WFNet', true)) {
			$response = wp_remote_get(sprintf(WFWAF_API_URL_SEC . "waf-rules/%d.txt", $waf->getStorageEngine()->getConfig('attackDataKey')), array('headers' => array('Referer' => false)));
			if (!is_wp_error($response)) {
				$okToSendBody = wp_remote_retrieve_body($response);
				if ($okToSendBody === 'ok') {
					//Send attack data
					$limit = 500;
					$lastSendTime = wfConfig::get('lastAttackDataSendTime');
					$lastSendId = wfConfig::get('lastAttackDataSendId');
					if($lastSendId===false){
						$query=$wpdb->prepare("SELECT * FROM {$table_wfHits}
						WHERE action in ('blocked:waf', 'learned:waf', 'logged:waf', 'blocked:waf-always')
						AND attackLogTime > %f
						LIMIT %d", sprintf('%.6f', $lastSendTime), $limit);

						$count_query = str_replace(
							array(
								"SELECT * FROM",
								"LIMIT " . $limit,
							),
							array( "SELECT COUNT(*) FROM", "" ), $query
						);
					}
					else{
						$query=$wpdb->prepare("SELECT * FROM {$table_wfHits}
						WHERE action in ('blocked:waf', 'learned:waf', 'logged:waf', 'blocked:waf-always')
						AND id > %d
						ORDER BY id LIMIT %d", $lastSendId, $limit);

						$count_query = str_replace(
							array(
								"SELECT * FROM",
								"ORDER BY id LIMIT " . $limit,
							),
							array( "SELECT COUNT(*) FROM", "" ), $query
						);
					}

					$params[]=$limit;
					$attackData = $wpdb->get_results($query);
					$totalRows = $wpdb->get_var($count_query);

					if ($attackData) { // Build JSON to send
						$dataToSend = array();
						$attackDataToUpdate = array();
						foreach ($attackData as $attackDataRow) {
							$actionData = (array) wfRequestModel::unserializeActionData($attackDataRow->actionData);
							$dataToSend[] = array(
								$attackDataRow->attackLogTime,
								$attackDataRow->ctime,
								wfUtils::inet_ntop($attackDataRow->IP),
								(array_key_exists('learningMode', $actionData) ? $actionData['learningMode'] : 0),
								(array_key_exists('paramKey', $actionData) ? base64_encode($actionData['paramKey']) : false),
								(array_key_exists('paramValue', $actionData) ? base64_encode($actionData['paramValue']) : false),
								(array_key_exists('failedRules', $actionData) ? $actionData['failedRules'] : ''),
								strpos($attackDataRow->URL, 'https') === 0 ? 1 : 0,
								(array_key_exists('fullRequest', $actionData) ? $actionData['fullRequest'] : ''),
							);
							if (array_key_exists('fullRequest', $actionData)) {
								unset($actionData['fullRequest']);
								$attackDataToUpdate[$attackDataRow->id] = array(
									'actionData' => wfRequestModel::serializeActionData($actionData),
								);
							}
							if ($attackDataRow->attackLogTime > $lastSendTime) {
								$lastSendTime = $attackDataRow->attackLogTime;
							}
						}

						$bodyLimit=self::ATTACK_DATA_BODY_LIMIT;
						$response=null;
						do {
							$bodyData=null;
							do {
								if($bodyData!==null)
									array_splice($dataToSend, floor(count($dataToSend)/2));
								$bodyData=json_encode($dataToSend);
							} while(strlen($bodyData)>$bodyLimit&&count($dataToSend)>1);
							
							$homeurl = wfUtils::wpHomeURL();
							$siteurl = wfUtils::wpSiteURL();
							$installType = wfUtils::wafInstallationType();
							$response = wp_remote_post(WFWAF_API_URL_SEC . "?" . http_build_query(array(
									'action' => 'send_waf_attack_data',
									'k'      => $waf->getStorageEngine()->getConfig('apiKey', null, 'synced'),
									's'      => $siteurl,
									'h'		 => $homeurl,
									't'		 => microtime(true),
									'c'		 => $installType,
									'lang'   => get_site_option('WPLANG'),
								), '', '&'),
								array(
									'body'    => $bodyData,
									'headers' => array(
										'Content-Type' => 'application/json',
										'Referer' => false,
									),
									'timeout' => 30,
								));
								$bodyLimit/=2;
						} while(wp_remote_retrieve_response_code($response)===413&&count($dataToSend)>1);

						if (!is_wp_error($response) && ($body = wp_remote_retrieve_body($response))) {
							$jsonData = json_decode($body, true);
							if (is_array($jsonData) && array_key_exists('success', $jsonData)) {
								wfConfig::set('lastAttackDataSendTime', $lastSendTime);
								$lastSendIndex=count($dataToSend)-1;
								if($lastSendIndex>=0){
									$lastSendId = $attackData[$lastSendIndex]->id;
									wfConfig::set('lastAttackDataSendId', $lastSendId);
									// Successfully sent data, remove the full request from the table to reduce storage size
									foreach ($attackDataToUpdate as $hitID => $dataToUpdate) {
										if ($hitID <= $lastSendId) {
											$wpdb->update($table_wfHits, $dataToUpdate, array(
												'id' => $hitID,
											));
										}
									}
								}
								if (count($dataToSend) < $totalRows) {
									self::scheduleSendAttackData();
								}
								
								if (array_key_exists('data', $jsonData) && array_key_exists('watchedIPList', $jsonData['data'])) {
									$waf->getStorageEngine()->setConfig('watchedIPs', $jsonData['data']['watchedIPList'], 'transient');
								}
							}
						}
						else{
							//Delay interactions for 30 minutes if an error occurs
							self::delaySendAttackData(time() + 30*60);
						}
					}
					
					//Send false positives and WAF failures
					$lastSendTime = wfConfig::get('lastFalsePositiveSendTime');
					$whitelistedURLParams = (array) wfWAF::getInstance()->getStorageEngine()->getConfig('whitelistedURLParams', array(), 'livewaf');
					$wafFailures = self::loadWafFailures($purgeWafFailures);
					if (count($whitelistedURLParams) || !empty($wafFailures)) {
						$falsePositives = array();
						$mostRecentWhitelisting = $lastSendTime;
						foreach ($whitelistedURLParams as $urlParamKey => $rules) {
							list($path, $paramKey) = explode('|', $urlParamKey);
							$ruleData = array();
							foreach ($rules as $ruleID => $whitelistedData) {
								if ($whitelistedData['timestamp'] > $lastSendTime && (!isset($whitelistedData['disabled']) || !$whitelistedData['disabled'])) {
									if (isset($whitelistedData['source'])) {
										$source = $whitelistedData['source'];
									}
									else if ($whitelistedData['description'] == 'Allowlisted via false positive dialog') {
										$source = 'false-positive';
									}
									else if ($whitelistedData['description'] == 'Allowlisted via Live Traffic') {
										$source = 'live-traffic';
									}
									else if ($whitelistedData['description'] == 'Allowlisted while in Learning Mode.') {
										$source = 'learning-mode';
									}
									else { //A user-entered description or Whitelisted via Firewall Options page
										$source = 'waf-options';
									}
									
									$ruleData[] = array(
										$ruleID,
										$whitelistedData['timestamp'],
										$source,
										$whitelistedData['description'],
										$whitelistedData['ip'],
										isset($whitelistedData['userID']) ? $whitelistedData['userID'] : 0,
									);
									
									if ($whitelistedData['timestamp'] > $mostRecentWhitelisting) {
										$mostRecentWhitelisting = $whitelistedData['timestamp'];
									}
								}
							}
							
							if (count($ruleData)) {
								$falsePositives[] = array(
									base64_decode($path),
									base64_decode($paramKey),
									$ruleData,
								);
							}
						}

						$data = [];
						if (!empty($wafFailures))
							$data['waf_failures'] = $wafFailures;
						if (!empty($falsePositives))
							$data['false_positives'] = $falsePositives;
						
						if (count($data)) {
							$homeurl = wfUtils::wpHomeURL();
							$siteurl = wfUtils::wpSiteURL();
							$installType = wfUtils::wafInstallationType();
							$response = wp_remote_post(WFWAF_API_URL_SEC . "?" . http_build_query(array(
									'action' => 'send_waf_false_positives',
									'k'      => $waf->getStorageEngine()->getConfig('apiKey', null, 'synced'),
									's'      => $siteurl,
									'h'		 => $homeurl,
									't'		 => microtime(true),
									'c'		 => $installType,
									'lang'   => get_site_option('WPLANG'),
								), '', '&'),
								array(
									'body'    => json_encode($data),
									'headers' => array(
										'Content-Type' => 'application/json',
										'Referer' => false,
									),
									'timeout' => 30,
								));
							
							if (!is_wp_error($response) && ($body = wp_remote_retrieve_body($response))) {
								$jsonData = json_decode($body, true);
								if (is_array($jsonData) && array_key_exists('success', $jsonData)) {
									$purgeWafFailures();
									wfConfig::set('lastFalsePositiveSendTime', $mostRecentWhitelisting);
								}
							}
						}
					}
				}
				else if (is_string($okToSendBody) && preg_match('/next check in: ([0-9]+)/', $okToSendBody, $matches)) {
					self::delaySendAttackData(time() + $matches[1]);
				}
			}
			else { // Could be that the server is down, so hold off on sending data for a little while
				self::delaySendAttackData(time() + 7200);
			}
		}
		else if (!wfConfig::get('other_WFNet', true)) {
			wfConfig::set('lastAttackDataSendTime', time());
			wfConfig::set('lastFalsePositiveSendTime', time());
			self::truncateWafFailures();
		}

		self::trimWfHits();
	}

	public static function syncAttackData($exit = true) {
		global $wpdb;
		if (!defined('DONOTCACHEDB')) { define('DONOTCACHEDB', true); }
		$log = self::getLog();
		$waf = wfWAF::getInstance();
		$table_wfHits = wfDB::networkTable('wfHits');
		if ($waf->getStorageEngine() instanceof wfWAFStorageMySQL) {
			$lastAttackMicroseconds = floatval($waf->getStorageEngine()->getConfig('lastAttackDataTruncateTime'));
		} else {
			$lastAttackMicroseconds = $wpdb->get_var("SELECT MAX(attackLogTime) FROM {$table_wfHits}");
		}

		if ($waf->getStorageEngine()->hasNewerAttackData($lastAttackMicroseconds)) {
			$attackData = $waf->getStorageEngine()->getNewestAttackDataArray($lastAttackMicroseconds);
			if ($attackData) {
				foreach ($attackData as $request) {
					if (count($request) !== 9 && count($request) !== 10 /* with metadata */ && count($request) !== 11) {
						continue;
					}

					list($logTimeMicroseconds, $requestTime, $ip, $learningMode, $paramKey, $paramValue, $failedRules, $ssl, $requestString) = $request;
					$metadata = null;
					$recordID = null;
					if (array_key_exists(9, $request)) {
						$metadata = $request[9];
					}
					if (array_key_exists(10, $request)) {
						$recordID = $request[10];
					}

					// Skip old entries and hits in learning mode, since they'll get picked up anyways.
					if ($logTimeMicroseconds <= $lastAttackMicroseconds || $learningMode) {
						continue;
					}
					
					$statusCode = 403;

					$hit = new wfRequestModel();
					if (is_numeric($recordID)) {
						$hit->id = $recordID;
					}

					$hit->attackLogTime = $logTimeMicroseconds;
					$hit->ctime = $requestTime;
					$hit->IP = wfUtils::inet_pton($ip);

					if (preg_match('/user\-agent:(.*?)\n/i', $requestString, $matches)) {
						$hit->UA = trim($matches[1]);
						$hit->isGoogle = wfCrawl::isGoogleCrawler($hit->UA);
					}

					if (preg_match('/Referer:(.*?)\n/i', $requestString, $matches)) {
						$hit->referer = trim($matches[1]);
					}

					if (preg_match('/^[a-z]+\s+(.*?)\s+/i', $requestString, $uriMatches) && preg_match('/Host:(.*?)\n/i', $requestString, $hostMatches)) {
						$hit->URL = 'http' . ($ssl ? 's' : '') . '://' . trim($hostMatches[1]) . trim($uriMatches[1]);
					}
					
					$hit->jsRun = (int) wfLog::isHumanRequest($ip, $hit->UA);
					$isHuman = !!$hit->jsRun;
					
					if (preg_match('/cookie:(.*?)\n/i', $requestString, $matches)) {
						$authCookieName = $waf->getAuthCookieName();
						$hasLoginCookie = strpos($matches[1], $authCookieName) !== false;
						if ($hasLoginCookie && preg_match('/' . preg_quote($authCookieName) . '=(.*?);/', $matches[1], $cookieMatches)) {
							$authCookie = rawurldecode($cookieMatches[1]);
							$decodedAuthCookie = $waf->parseAuthCookie($authCookie);
							if ($decodedAuthCookie !== false) {
								$hit->userID = $decodedAuthCookie['userID'];
								$isHuman = true;
							}
						}
					}

					$path = '/';
					if (preg_match('/^[A-Z]+ (.*?) HTTP\\/1\\.1/', $requestString, $matches)) {
						if (($pos = strpos($matches[1], '?')) !== false) {
							$path = substr($matches[1], 0, $pos);
						} else {
							$path = $matches[1];
						}
					}
					
					$metadata = ($metadata != null ? (array) $metadata : array());
					if (isset($metadata['finalAction']) && $metadata['finalAction']) { // The request was blocked/redirected because of its IP based on the plugin's blocking settings. WAF blocks should be reported but not shown in live traffic with that as a reason.
						$action = $metadata['finalAction']['action'];
						$actionDescription = $action;
						if (class_exists('wfWAFIPBlocksController')) {
							if ($action == wfWAFIPBlocksController::WFWAF_BLOCK_UAREFIPRANGE) {
								wfActivityReport::logBlockedIP($ip, null, 'advanced');
							}
							else if ($action == wfWAFIPBlocksController::WFWAF_BLOCK_COUNTRY_BYPASS_REDIR) {
								/* Handled below */
							}
							else if ($action == wfWAFIPBlocksController::WFWAF_BLOCK_COUNTRY_REDIR) {
								$actionDescription .= ' (' . wfConfig::get('cbl_redirURL') . ')';
								wfConfig::inc('totalCountryBlocked');
								wfActivityReport::logBlockedIP($ip, null, 'country');
							}
							else if ($action == wfWAFIPBlocksController::WFWAF_BLOCK_COUNTRY) {
								wfConfig::inc('totalCountryBlocked');
								wfActivityReport::logBlockedIP($ip, null, 'country');
							}
							else if ($action == wfWAFIPBlocksController::WFWAF_BLOCK_WFSN) {
								wordfence::wfsnReportBlockedAttempt($ip, 'login');
								wfActivityReport::logBlockedIP($ip, null, 'brute');
							}
							else if (defined('wfWAFIPBlocksController::WFWAF_BLOCK_BADPOST') && $action == wfWAFIPBlocksController::WFWAF_BLOCK_BADPOST) {
								wfActivityReport::logBlockedIP($ip, null, 'badpost');
							}
							else if (defined('wfWAFIPBlocksController::WFWAF_BLOCK_BANNEDURL') && $action == wfWAFIPBlocksController::WFWAF_BLOCK_BANNEDURL) {
								wfActivityReport::logBlockedIP($ip, null, 'bannedurl');
							}
							else if (defined('wfWAFIPBlocksController::WFWAF_BLOCK_FAKEGOOGLE') && $action == wfWAFIPBlocksController::WFWAF_BLOCK_FAKEGOOGLE) {
								wfActivityReport::logBlockedIP($ip, null, 'fakegoogle');
							}
							else if ((defined('wfWAFIPBlocksController::WFWAF_BLOCK_LOGINSEC') && $action == wfWAFIPBlocksController::WFWAF_BLOCK_LOGINSEC) ||
									(defined('wfWAFIPBlocksController::WFWAF_BLOCK_LOGINSEC_FORGOTPASSWD') && strpos($action, wfWAFIPBlocksController::WFWAF_BLOCK_LOGINSEC_FORGOTPASSWD) === 0) ||
									(defined('wfWAFIPBlocksController::WFWAF_BLOCK_LOGINSEC_FAILURES') && strpos($action, wfWAFIPBlocksController::WFWAF_BLOCK_LOGINSEC_FAILURES) === 0)) {
								wfActivityReport::logBlockedIP($ip, null, 'brute');
							}
							else if ((defined('wfWAFIPBlocksController::WFWAF_BLOCK_THROTTLEGLOBAL') && $action == wfWAFIPBlocksController::WFWAF_BLOCK_THROTTLEGLOBAL) ||
									(defined('wfWAFIPBlocksController::WFWAF_BLOCK_THROTTLESCAN') && $action == wfWAFIPBlocksController::WFWAF_BLOCK_THROTTLESCAN) ||
									(defined('wfWAFIPBlocksController::WFWAF_BLOCK_THROTTLECRAWLER') && $action == wfWAFIPBlocksController::WFWAF_BLOCK_THROTTLECRAWLER) ||
									(defined('wfWAFIPBlocksController::WFWAF_BLOCK_THROTTLECRAWLERNOTFOUND') && $action == wfWAFIPBlocksController::WFWAF_BLOCK_THROTTLECRAWLERNOTFOUND) ||
									(defined('wfWAFIPBlocksController::WFWAF_BLOCK_THROTTLEHUMAN') && $action == wfWAFIPBlocksController::WFWAF_BLOCK_THROTTLEHUMAN) ||
									(defined('wfWAFIPBlocksController::WFWAF_BLOCK_THROTTLEHUMANNOTFOUND') && $action == wfWAFIPBlocksController::WFWAF_BLOCK_THROTTLEHUMANNOTFOUND)
							) {
								wfConfig::inc('totalIPsThrottled');
								wfActivityReport::logBlockedIP($ip, null, 'throttle');
							}
							else { //Manual block
								wfActivityReport::logBlockedIP($ip, null, 'manual');
							}
							
							if (isset($metadata['finalAction']['id']) && $action != wfWAFIPBlocksController::WFWAF_BLOCK_COUNTRY_BYPASS_REDIR) {
								$id = $metadata['finalAction']['id'];
								$block = new wfBlock($id);
								$block->recordBlock(1, (int) $requestTime);
							}
						}
						
						if (strlen($actionDescription) == 0) {
							$actionDescription = 'Blocked by Wordfence';
						}
						
						if (empty($failedRules)) { // Just a plugin block
							$statusCode = 503;
							$hit->action = 'blocked:wordfence';
							if (class_exists('wfWAFIPBlocksController')) {
								if ($action == wfWAFIPBlocksController::WFWAF_BLOCK_COUNTRY_BYPASS_REDIR) {
									$statusCode = 302;
									$hit->action = 'cbl:redirect';
								}
								else if ($action == wfWAFIPBlocksController::WFWAF_BLOCK_WFSN) {
									$hit->action = 'blocked:wfsnrepeat';
									wordfence::wfsnReportBlockedAttempt($ip, 'waf');
								}
								else if (isset($metadata['finalAction']['lockout'])) {
									$hit->action = 'lockedOut';
								}
								else if (isset($metadata['finalAction']['block'])) {
									//Do nothing
								}
							}
							$hit->actionDescription = $actionDescription;
						}
						else if (preg_match('/\blogged\b/i', $failedRules)) {
							$statusCode = 200;
							$hit->action = 'logged:waf';
						}
						else { // Blocked by the WAF but would've been blocked anyway by the plugin settings so that message takes priority
							$hit->action = 'blocked:waf-always';
							$hit->actionDescription = $actionDescription;
						}
					}
					else {
						if (preg_match('/\blogged\b/i', $failedRules)) {
							$statusCode = 200;
							$hit->action = 'logged:waf';
						}
						else {
							$hit->action = 'blocked:waf';
							
							$type = null;
							if ($failedRules == 'blocked') {
								$type = 'blacklist';
							}
							else if (is_numeric($failedRules)) {
								$type = 'waf';
							}
							wfActivityReport::logBlockedIP($hit->IP, null, $type);
						}
					}

					/** @var wfWAFRule $rule */
					$ruleIDs = explode('|', $failedRules);
					$actionData = array(
						'learningMode' => $learningMode,
						'failedRules'  => $failedRules,
						'paramKey'     => $paramKey,
						'paramValue'   => $paramValue,
						'path'         => $path,
					);
					if ($ruleIDs && $ruleIDs[0]) {
						$rule = $waf->getRule($ruleIDs[0]);
						if ($rule) {
							if ($hit->action == 'logged:waf' || $hit->action == 'blocked:waf') { $hit->actionDescription = $rule->getDescription(); }
							$actionData['category'] = $rule->getCategory();
							$actionData['ssl'] = $ssl;
							$actionData['fullRequest'] = base64_encode($requestString);
						}
						else if ($ruleIDs[0] == 'logged' && isset($ruleIDs[1]) && ($rule = $waf->getRule($ruleIDs[1]))) {
							if ($hit->action == 'logged:waf' || $hit->action == 'blocked:waf') { $hit->actionDescription = $rule->getDescription(); }
							$actionData['category'] = $rule->getCategory();
							$actionData['ssl'] = $ssl;
							$actionData['fullRequest'] = base64_encode($requestString);
						}
						else if ($ruleIDs[0] == 'logged') {
							if ($hit->action == 'logged:waf' || $hit->action == 'blocked:waf') { $hit->actionDescription = 'Watched IP Traffic: ' . $ip; } 
							$actionData['category'] = 'logged';
							$actionData['ssl'] = $ssl;
							$actionData['fullRequest'] = base64_encode($requestString);
						}
						else if ($ruleIDs[0] == 'blocked') {
							$actionData['category'] = 'blocked';
							$actionData['ssl'] = $ssl;
							$actionData['fullRequest'] = base64_encode($requestString);
						}
					}

					$hit->actionData = wfRequestModel::serializeActionData($actionData, array('fullRequest', 'ssl', 'category', 'learningMode', 'paramValue'));
					$hit->statusCode = $statusCode;
					$hit->save();

					self::scheduleSendAttackData();
				}
			}
			$waf->getStorageEngine()->truncateAttackData();
		}
		update_site_option('wordfence_syncingAttackData', 0);
		update_site_option('wordfence_syncAttackDataAttempts', 0);
		update_site_option('wordfence_lastSyncAttackData', time());
		if ($exit) {
			exit;
		}
	}

	public static function addSyncAttackDataAjax() {
		$URL = home_url('/?wordfence_syncAttackData=' . microtime(true));
		$URL = esc_url(preg_replace('/^https?:/i', '', $URL));
		// Load as external script async so we don't slow page down.
		echo "<script type=\"text/javascript\" src=\"$URL\" async></script>";
	}

	/**
	 * This is the only hook I see to tie into WP's core update process.
	 * Since we hide the readme.html to prevent the WordPress version from being discovered, it breaks the upgrade
	 * process because it cannot copy the previous readme.html.
	 *
	 * @param string $string
	 * @return string
	 */
	public static function restoreReadmeForUpgrade($string) {
		static $didRun;
		if (!isset($didRun)) {
			$didRun = true;
			wfUtils::showReadme();
			register_shutdown_function('wfUtils::hideReadme');
		}

		return $string;
	}

	public static function showOnboardingBanner() {
		wfOnboardingController::enqueue_assets();
		if (self::isWordfencePage(false) && !self::isWordfenceInstallPage() && !self::isWordfenceSupportPage() && !self::isWordfenceSubpage('tools', 'diagnostics')) {
			echo wfView::create('onboarding/disabled-overlay')->render();
		}
		echo wfView::create('onboarding/banner', array('dismissable' => !self::isWordfencePage(false)))->render();
	}

	public static function showCentralConfigurationIssueNotice() {	
?>
		<div class="fade error">
			<p><?php echo wp_kses(sprintf(__('An error was detected with this site\'s configuration that is preventing a successful connection to Wordfence Central. Disconnecting from Central <a href="%s">on the Wordfence Dashboard</a> and reconnecting may resolve it. If the issue persists, please contact Wordfence support.', 'wordfence'), network_admin_url('admin.php?page=Wordfence#wf-central-status')), array('a' => array('href' => array()))) ?></p>
		</div>
<?php
	}

	public static function wafAutoPrependNotice() {
		$url = network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options#configureAutoPrepend');
		echo '<div class="update-nag" id="wf-extended-protection-notice">' . __('To make your site as secure as possible, take a moment to optimize the Wordfence Web Application Firewall:', 'wordfence') . ' &nbsp;<a class="wf-btn wf-btn-default wf-btn-sm" href="' . esc_url($url) . '">' . __('Click here to configure', 'wordfence') . '</a>
		<a class="wf-btn wf-btn-default wf-btn-sm wf-dismiss-link" href="#"  onclick="wordfenceExt.setOption(\'dismissAutoPrependNotice\', 1); jQuery(\'#wf-extended-protection-notice\').fadeOut(); return false;" role="button">' . __('Dismiss', 'wordfence') . '</a>
		<br>
		<em style="font-size: 85%;">' . wp_kses(sprintf(/* translators: Support URL. */ __('If you cannot complete the setup process, <a target="_blank" rel="noopener noreferrer" href="%s">click here for help<span class="screen-reader-text"> (opens in new tab)</span></a>.', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_INSTALL_MANUALLY)), array('a' => array('href' => array(), 'target' => array(), 'rel' => array()), 'span' => array('class' => array()))) . '</em>
		</div>';
	}

	public static function wafAutoPrependVerify() {
		if (WFWAF_AUTO_PREPEND && !WFWAF_SUBDIRECTORY_INSTALL) {
			echo '<div class="updated is-dismissible"><p>' . __('Nice work! The firewall is now optimized.', 'wordfence') . '</p></div>';
		} else {
			echo '<div class="notice notice-error"><p>' . __('The changes have not yet taken effect. If you are using LiteSpeed or IIS as your web server or CGI/FastCGI interface, you may need to wait a few minutes for the changes to take effect since the configuration files are sometimes cached. You also may need to select a different server configuration in order to complete this step, but wait for a few minutes before trying. You can try refreshing this page.', 'wordfence') . '</p></div>';
		}
	}
	
	public static function wafAutoPrependRemoved() {
		if (!WFWAF_AUTO_PREPEND) {
			echo '<div class="updated is-dismissible"><p>' . __('Uninstallation was successful!', 'wordfence') . '</p></div>';
		}
		else if (WFWAF_SUBDIRECTORY_INSTALL) {
			echo '<div class="notice notice-warning"><p>' . __('Uninstallation from this site was successful! The Wordfence Firewall is still active because it is installed in another WordPress installation.', 'wordfence') . '</p></div>';
		}
		else {
			echo '<div class="notice notice-error"><p>' . __('The changes have not yet taken effect. If you are using LiteSpeed or IIS as your web server or CGI/FastCGI interface, you may need to wait a few minutes for the changes to take effect since the configuration files are sometimes cached. You also may need to select a different server configuration in order to complete this step, but wait for a few minutes before trying. You can try refreshing this page.', 'wordfence') . '</p></div>';
		}
	}
	
	public static function wafUpdateSuccessful() {
		echo '<div class="updated is-dismissible"><p>' . __('The update was successful!', 'wordfence') . '</p></div>';
	}

	public static function getWAFBootstrapPath() {
		if (WF_IS_PRESSABLE || WF_IS_FLYWHEEL) {
			return WP_CONTENT_DIR . '/wordfence-waf.php';
		}
		return ABSPATH . 'wordfence-waf.php';
	}

	public static function getWAFBootstrapContent($currentAutoPrependedFile = null) {
		$bootstrapPath = dirname(self::getWAFBootstrapPath());
		$currentAutoPrepend = '';
		if ($currentAutoPrependedFile && is_file($currentAutoPrependedFile) && !WFWAF_SUBDIRECTORY_INSTALL) {
			$currentAutoPrepend = sprintf('
// This file was the current value of auto_prepend_file during the Wordfence WAF installation (%2$s)
if (file_exists(%1$s)) {
	include_once %1$s;
}', var_export($currentAutoPrependedFile, true), date('r'));
		}
		return sprintf('<?php
// Before removing this file, please verify the PHP ini setting `auto_prepend_file` does not point to this.
%3$s
if (file_exists(__DIR__.%1$s)) {
	define("WFWAF_LOG_PATH", __DIR__.%2$s);
	include_once __DIR__.%1$s;
}',
			var_export(wfUtils::relativePath(WORDFENCE_PATH . 'waf/bootstrap.php', $bootstrapPath, true), true),
			var_export(wfUtils::relativePath((WFWAF_SUBDIRECTORY_INSTALL ? WP_CONTENT_DIR . '/wflogs/' : WFWAF_LOG_PATH), $bootstrapPath, true), true),
			$currentAutoPrepend);
	}

	private static function isCurrentUserAdmin() {
		return self::getCurrentUserRole() === 'administrator';
	}

	/**
	 * @return bool|string
	 */
	private static function getCurrentUserRole() {
		if (current_user_can('administrator') || is_super_admin()) {
			return 'administrator';
		}
		$roles = array('editor', 'author', 'contributor', 'subscriber');
		foreach ($roles as $role) {
			if (current_user_can($role)) {
				return $role;
			}
		}
		return 'other';
	}

	private static function getCurrentUserCapabilities() {
		$capabilities = array(
			'manage_options',
			'unfiltered_html',
			'edit_others_posts',
			'upload_files',
			'publish_posts',
			'edit_posts',
			'read',
			'manage_network'
		);
		foreach ($capabilities as $index=>$capability) {
			if (!current_user_can($capability)) {
				unset($capabilities[$index]);
			}
		}
		return array_values($capabilities);
	}

	public static function licenseStatusChanged() {
		$event = new wfWAFCronFetchRulesEvent(time() - 2);
		$event->setWaf(wfWAF::getInstance());
		$event->fire();
		
		//Update the WAF cron
		$cron = (array) wfWAF::getInstance()->getStorageEngine()->getConfig('cron', null, 'livewaf');
		if (is_array($cron)) {
			/** @var wfWAFCronEvent $event */
			foreach ($cron as $index => $event) {
				$event->setWaf(wfWAF::getInstance());
				if (!$event->isInPast()) {
					$newEvent = $event->reschedule();
					if ($newEvent instanceof wfWAFCronEvent && $newEvent !== $event) {
						$cron[$index] = $newEvent;
					} else {
						unset($cron[$index]);
					}
				}
			}
		}
		wfWAF::getInstance()->getStorageEngine()->setConfig('cron', $cron, 'livewaf');
	}

	/**
	 * @param string $adminURL
	 * @param string $homePath
	 * @param bool $relaxedFileOwnership
	 * @param bool $output Whether or not to output the credentials collection form. If false, this function only returns the status.
	 * @return bool Returns true if the path is writable, otherwise false.
	 */
	public static function requestFilesystemCredentials($adminURL, $homePath = null, $relaxedFileOwnership = true, $output = true) {
		if ($homePath === null) {
			$homePath = wfUtils::getHomePath();
		}

		if (!$output) { ob_start(); }
		if (false === ($credentials = request_filesystem_credentials($adminURL, '', false, $homePath, array('version', 'locale'), $relaxedFileOwnership))) {
			if (!$output) { ob_end_clean(); }
			return false;
		}

		if (!WP_Filesystem($credentials, $homePath, $relaxedFileOwnership)) { // Failed to connect, Error and request again
			request_filesystem_credentials($adminURL, '', true, ABSPATH, array('version', 'locale'), $relaxedFileOwnership);
			if (!$output) { ob_end_clean(); }
			return false;
		}
		
		global $wp_filesystem;
		if ($wp_filesystem->errors->get_error_code()) {
			if (!$output) { ob_end_clean(); }
			return false;
		}
		
		if (!$output) { ob_end_clean(); }
		return true;
	}

	public static function initRestAPI() {
		if (wfCentral::isSupported()) {
			$auth = new wfRESTAuthenticationController();
			$auth->registerRoutes();

			$config = new wfRESTConfigController();
			$config->registerRoutes();

			$scan = new wfRESTScanController();
			$scan->registerRoutes();
		}
	}

	public static function ajax_wfcentral_step1_callback() {
		// Step 1: Makes GET request to `/central/api/site/access-token` endpoint authenticated with the auth grant supplied by the user.
		// - Receives site GUID, public key, short lived JWT.

		$authGrant = isset($_REQUEST['auth-grant']) ? $_REQUEST['auth-grant'] : null;
		if (!$authGrant) {
			return array(
				'err'      => 1,
				'errorMsg' => __("Auth grant is invalid.", 'wordfence'),
			);
		}

		$request = new wfCentralAPIRequest('/site/access-token', 'GET', $authGrant);
		try {
			$response = $request->execute();
		}
		catch (Exception $e) {
			wfCentralAPIRequest::handleInternalCentralAPIError($e);
		}
		catch (Throwable $t) {
			wfCentralAPIRequest::handleInternalCentralAPIError($t);
		}

		if (!isset($response)) {
			return array(
				'err'      => 1,
				'errorMsg' => __('Internal error when connecting to Wordfence Central (see server error log)', 'wordfence'),
			);
		}
		else if ($response->isError()) {
			return $response->returnErrorArray();
		}

		$body = $response->getJSONBody();
		if (!is_array($body) || !isset($body['data']['attributes'])) {
			return array(
				'err'      => 1,
				'errorMsg' => sprintf(/* translators: Error message. */ __("Invalid response from Wordfence Central: %s", 'wordfence'), $response->getBody()),
			);
		}
		if (!array_key_exists('id', $body['data'])) {
			return array(
				'err'      => 1,
				'errorMsg' => sprintf(/* translators: JSON property. */ __("Invalid response from Wordfence Central. Parameter %s not found in response.", 'wordfence'), 'id'),
			);
		}

		$data = $body['data']['attributes'];
		$expected = array(
			'public-key',
			'access-token',
		);
		foreach ($expected as $key) {
			if (!array_key_exists($key, $data)) {
				return array(
					'err'      => 1,
					'errorMsg' => sprintf(/* translators: JSON property. */ __("Invalid response from Wordfence Central. Parameter %s not found in response.", 'wordfence'), $key),
				);
			}
		}

		wfConfig::set('wordfenceCentralSiteID', $body['data']['id']);
		wfConfig::set('wordfenceCentralPK', pack("H*", $data['public-key']));
		wfConfig::set('wordfenceCentralAccessToken', $data['access-token']);
		wfConfig::set('wordfenceCentralCurrentStep', 2);

		wfConfig::set('wordfenceCentralDisconnected', false);
		wfConfig::set('wordfenceCentralDisconnectTime', null);
		wfConfig::set('wordfenceCentralDisconnectEmail', null);

		return array(
			'success' => 1,
		);
	}

	public static function ajax_wfcentral_step2_callback() {
		// Step 2: Makes POST request to `/central/api/wf/site/<guid>` endpoint passing in the new public key.
		// Uses JWT from auth grant endpoint as auth.

		require_once(WORDFENCE_PATH . '/lib/sodium_compat_fast.php');

		$accessToken = wfConfig::get('wordfenceCentralAccessToken');
		if (!$accessToken) {
			return array(
				'err'      => 1,
				'errorMsg' => __("Access token not found.", 'wordfence'),
			);
		}

		$keypair = ParagonIE_Sodium_Compat::crypto_sign_keypair();
		$publicKey = ParagonIE_Sodium_Compat::crypto_sign_publickey($keypair);
		$secretKey = ParagonIE_Sodium_Compat::crypto_sign_secretkey($keypair);
		wfConfig::set('wordfenceCentralSecretKey', $secretKey);

		$request = new wfCentralAPIRequest('/site/' . wfConfig::get('wordfenceCentralSiteID'), 'POST',
			$accessToken, array(
				'data' => array(
					'attributes' => array(
						'public-key' => ParagonIE_Sodium_Compat::bin2hex($publicKey),
					),
				),
			));
		try {
			$response = $request->execute();
		}
		catch (Exception $e) {
			wfCentralAPIRequest::handleInternalCentralAPIError($e);
		}
		catch (Throwable $t) {
			wfCentralAPIRequest::handleInternalCentralAPIError($t);
		}
		
		if (!isset($response)) {
			return array(
				'err'      => 1,
				'errorMsg' => __('Internal error when connecting to Wordfence Central (see server error log)', 'wordfence'),
			);
		}
		else if ($response->isError()) {
			return $response->returnErrorArray();
		}

		wfConfig::set('wordfenceCentralCurrentStep', 3);

		return array(
			'success' => 1,
		);
	}

	public static function ajax_wfcentral_step3_callback() {
		// Step 3: Makes GET request to `/central/api/wf/site/<guid>` endpoint signed using Wordfence plugin private key.
		// - Expects 200 response with site data.

		try {
			$request = new wfCentralAuthenticatedAPIRequest('/site/' . wfConfig::get('wordfenceCentralSiteID'));
			$response = $request->execute();
			if ($response->isError()) {
				return $response->returnErrorArray();
			}

			$body = $response->getJSONBody();
			if (!is_array($body) || !isset($body['data']['attributes'])) {
				return array(
					'error' => 1,
					'errorMsg' => __('Invalid response from Wordfence Central.', 'wordfence'),
				);
			}
			wfConfig::set('wordfenceCentralSiteData', json_encode($body['data']['attributes']));
			wfConfig::set('wordfenceCentralCurrentStep', 4);

			return array(
				'success' => 1,
			);

		}
		catch (wfCentralAPIException $e) {
			return array(
				'error' => 1,
				'errorMsg' => $e->getMessage(),
			);
		}
		catch (Exception $e) {
			wfCentralAPIRequest::handleInternalCentralAPIError($e);
			return array(
				'error' => 1,
				'errorMsg' => $e->getMessage(),
			);
		}
		catch (Throwable $t) {
			wfCentralAPIRequest::handleInternalCentralAPIError($t);
			return array(
				'error' => 1,
				'errorMsg' => $t->getMessage(),
			);
		}
	}

	public static function ajax_wfcentral_step4_callback() {
		// Step 4: Poll for PUT request at `/wp-json/wp/v2/wordfence-auth-grant/` endpoint signed using Wordfence Central private key with short lived JWT.
		// - Expects verifiable signature of incoming request from Wordfence Central.
		// - Stores auth grant JWT.

		$wfCentralAuthGrant = wfConfig::get('wordfenceCentralUserSiteAuthGrant');
		if ($wfCentralAuthGrant) {
			wfConfig::set('wordfenceCentralCurrentStep', 5);
			return array(
				'success' => 1,
			);
		}
		return array(
			'success' => 0,
		);
	}

	public static function ajax_wfcentral_step5_callback() {
		// Step 5: Makes POST request to `/central/api/site/<guid>/access-token` endpoint signed using Wordfence plugin private key with auth grant JWT.
		// - Expects 200 response with access token.

		$wfCentralAuthGrant = wfConfig::get('wordfenceCentralUserSiteAuthGrant');
		if (!$wfCentralAuthGrant) {
			return array(
				'error' => 1,
				'errorMsg' => __('Auth grant not found.', 'wordfence'),
			);
		}

		try {
			$request = new wfCentralAuthenticatedAPIRequest(
				sprintf('/site/%s/access-token', wfConfig::get('wordfenceCentralSiteID')),
				'POST',
				array(
					'data' => array(
						'attributes' => array(
							'auth-grant' => $wfCentralAuthGrant,
						),
					),
				));
			$response = $request->execute();
			if ($response->isError()) {
				return $response->returnErrorArray();
			}

			$body = $response->getJSONBody();
			if (!is_array($body) || !isset($body['access-token'])) {
				return array(
					'error' => 1,
					'errorMsg' => __('Invalid response from Wordfence Central.', 'wordfence'),
				);
			}
			wfConfig::set('wordfenceCentralUserSiteAccessToken', $body['access-token']);
			wfConfig::set('wordfenceCentralCurrentStep', 6);

			return array(
				'success' => 1,
				'access-token' => $body['access-token'],
				'redirect-url' => sprintf(WORDFENCE_CENTRAL_URL_SEC . '/sites/%s?access-token=%s',
					rawurlencode(wfConfig::get('wordfenceCentralSiteID')), rawurlencode($body['access-token'])),
			);

		}
		catch (wfCentralAPIException $e) {
			return array(
				'error' => 1,
				'errorMsg' => $e->getMessage(),
			);
		}
		catch (Exception $e) {
			wfCentralAPIRequest::handleInternalCentralAPIError($e);
			return array(
				'error' => 1,
				'errorMsg' => $e->getMessage(),
			);
		}
		catch (Throwable $t) {
			wfCentralAPIRequest::handleInternalCentralAPIError($t);
			return array(
				'error' => 1,
				'errorMsg' => $t->getMessage(),
			);
		}
	}
	public static function ajax_wfcentral_step6_callback() {
		$wfCentralUserSiteAccessToken = wfConfig::get('wordfenceCentralUserSiteAccessToken');
		if (!$wfCentralUserSiteAccessToken) {
			return array(
				'error' => 1,
				'errorMsg' => __('Access token not found.', 'wordfence'),
			);
		}

		$status = wfConfig::get('scanStageStatuses');
		wfCentral::updateScanStatus($status);

		wfConfig::set('wordfenceCentralConnectTime', time());
		wfConfig::set('wordfenceCentralConnectEmail', wp_get_current_user()->user_email);

		return array(
			'success' => 1,
			'access-token' => $wfCentralUserSiteAccessToken,
			'redirect-url' => sprintf(WORDFENCE_CENTRAL_URL_SEC . '/sites/%s?access-token=%s',
				rawurlencode(wfConfig::get('wordfenceCentralSiteID')), rawurlencode($wfCentralUserSiteAccessToken)),
		);
	}

	public static function ajax_wfcentral_disconnect_callback() {
		$dismiss = array_key_exists('dismiss', $_POST) && wfUtils::truthyToBoolean($_POST['dismiss']);
		if ($dismiss) {
			wfConfig::set('centralUrlMismatchChoice', '1');
			return array(
				'success' => true,
			);
		}
		
		$force = array_key_exists('force', $_POST) && $_POST['force'] === 'true';
		$localOnly = array_key_exists('local', $_POST) && $_POST['local'] === 'true';
		$message = null;
		if (!$localOnly) {
			try {
				if ($force || !wfCentral::isCentralSiteUrlMismatched()) {
					$request = new wfCentralAuthenticatedAPIRequest(
						sprintf('/site/%s', wfConfig::get('wordfenceCentralSiteID')),
						'DELETE');
					$response = $request->execute();
					if ($response->isError()) {
						return $response->returnErrorArray();
					}
				}
				else {
					$message = sprintf(__('The current site URL does not match the Wordfence Central connection information. Local connection information has been removed, but %s is still registered in Wordfence Central.', 'wordfence'), wfCentral::getCentralSiteUrl());
				}
			}
			catch (wfCentralAPIException $e) {
				return array(
					'success' => false,
					'errorMsg' => __('Unable to communicate with Wordfence Central', 'wordfence')
				);
			}
			catch (Exception $e) {
				wfCentralAPIRequest::handleInternalCentralAPIError($e);
			}
			catch (Throwable $t) {
				wfCentralAPIRequest::handleInternalCentralAPIError($t);
			}
		}

		wfRESTConfigController::disconnectConfig();

		return array(
			'success' => true,
			'message' => $message,
			'title' => __('Disconnected from Wordfence Central')
		);
	}

	public static function queueCentralConfigurationSync($key, $value) {
		static $hasRun;
		if ($hasRun) {
			return;
		}
		
		$ignored = array(
			\WordfenceLS\Controller_Settings::OPTION_USE_NTP,
			\WordfenceLS\Controller_Settings::OPTION_NTP_OFFSET,
			\WordfenceLS\Controller_Settings::OPTION_ALLOW_DISABLING_NTP,
			\WordfenceLS\Controller_Settings::OPTION_NTP_FAILURE_COUNT,
			\WordfenceLS\Controller_Settings::OPTION_CAPTCHA_STATS,
		);
		if (in_array($key, $ignored)) {
			return;
		}
		
		$hasRun = true;
		add_action('shutdown', 'wfCentral::requestConfigurationSync');
	}

	public static function hasWoocommerce() {
		return class_exists('woocommerce');
	}
}


class wfWAFAutoPrependHelper {

	private $serverConfig;
	/**
	 * @var string
	 */
	private $currentAutoPrependedFile;
	
	public static function helper($serverConfig = null, $currentAutoPrependedFile = null) {
		return new wfWAFAutoPrependHelper($serverConfig, $currentAutoPrependedFile);
	}
	
	public static function isValidServerConfig($serverConfig) {
		$validValues = array(
			"apache-mod_php",
			"apache-suphp",
			"cgi",
			"litespeed",
			"nginx",
			"iis",
			'manual',
		);
		return in_array($serverConfig, $validValues);
	}
	
	/**
	 * Verifies the .htaccess block for mod_php if present, returning true if no changes need to happen, false
	 * if something needs to update.
	 * 
	 * @return bool
	 */
	public static function verifyHtaccessMod_php() {
		if (WFWAF_AUTO_PREPEND && PHP_MAJOR_VERSION > 5) {
			return true;
		}
		
		$serverInfo = wfWebServerInfo::createFromEnvironment();
		if (!$serverInfo->isApacheModPHP()) {
			return true;
		}
		
		$htaccessPath = wfUtils::getHomePath() . '.htaccess';
		if (file_exists($htaccessPath)) {
			$htaccessContent = file_get_contents($htaccessPath);
			$regex = '/# Wordfence WAF.*?# END Wordfence WAF/is';
			if (preg_match($regex, $htaccessContent, $matches)) {
				$wafBlock = $matches[0];
				$hasPHP5 = preg_match('/<IfModule mod_php5\.c>\s*php_value auto_prepend_file \'.*?\'\s*<\/IfModule>/is', $wafBlock);
				$hasPHP7 = preg_match('/<IfModule mod_php7\.c>\s*php_value auto_prepend_file \'.*?\'\s*<\/IfModule>/is', $wafBlock);
				$hasPHP8 = preg_match('/<IfModule mod_php\.c>\s*php_value auto_prepend_file \'.*?\'\s*<\/IfModule>/is', $wafBlock);
				if ($hasPHP5 && (!$hasPHP7 || !$hasPHP8)) { //Check if PHP 5 is configured, but not 7 or 8.
					return false;
				}
			}
		}
		
		return true;
	}
	
	/**
	 * Updates the mod_php block of the .htaccess if needed to include PHP 7. Returns whether or not this was performed successfully.
	 * 
	 * @return bool
	 */
	public static function fixHtaccessMod_php() {
		$htaccessPath = wfUtils::getHomePath() . '.htaccess';
		if (file_exists($htaccessPath)) {
			$htaccessContent = file_get_contents($htaccessPath);
			$regex = '/# Wordfence WAF.*?# END Wordfence WAF/is';
			if (preg_match($regex, $htaccessContent, $matches, PREG_OFFSET_CAPTURE)) {
				$wafBlock = $matches[0][0];
				$hasPHP5 = preg_match('/<IfModule mod_php5\.c>\s*php_value auto_prepend_file \'(.*?)\'\s*<\/IfModule>/is', $wafBlock, $php5Matches, PREG_OFFSET_CAPTURE);
				$hasPHP7 = preg_match('/<IfModule mod_php7\.c>\s*php_value auto_prepend_file \'.*?\'\s*<\/IfModule>/is', $wafBlock, $php7Matches, PREG_OFFSET_CAPTURE);
				$hasPHP8 = preg_match('/<IfModule mod_php\.c>\s*php_value auto_prepend_file \'.*?\'\s*<\/IfModule>/is', $wafBlock);
				if ($hasPHP5 && !$hasPHP7) {
					$beforeWAFBlock = substr($htaccessContent, 0, $matches[0][1]);
					$afterWAFBlock = substr($htaccessContent, $matches[0][1] + strlen($wafBlock));
					$beforeMod_php = substr($wafBlock, 0, $php5Matches[0][1]);
					$afterMod_php = substr($wafBlock, $php5Matches[0][1] + strlen($php5Matches[0][0]));
					$updatedHtaccessContent = $beforeWAFBlock . $beforeMod_php . $php5Matches[0][0] . "\n" . sprintf("<IfModule mod_php7.c>\n\tphp_value auto_prepend_file '%1\$s'\n</IfModule>\n<IfModule mod_php.c>\n\tphp_value auto_prepend_file '%1\$s'\n</IfModule>", $php5Matches[1][0] /* already escaped */) . $afterMod_php . $afterWAFBlock;
					return file_put_contents($htaccessPath, $updatedHtaccessContent) !== false;
				}
				if ($hasPHP5 && $hasPHP7 && !$hasPHP8) {
					$beforeWAFBlock = substr($htaccessContent, 0, $matches[0][1]);
					$afterWAFBlock = substr($htaccessContent, $matches[0][1] + strlen($wafBlock));
					$beforeMod_php = substr($wafBlock, 0, $php5Matches[0][1]);
					$afterMod_php = substr($wafBlock, $php7Matches[0][1] + strlen($php7Matches[0][0]));
					$updatedHtaccessContent = $beforeWAFBlock . $beforeMod_php . $php5Matches[0][0] . "\n" . $php7Matches[0][0] . "\n" . sprintf("<IfModule mod_php.c>\n\tphp_value auto_prepend_file '%s'\n</IfModule>", $php5Matches[1][0] /* already escaped */) . $afterMod_php . $afterWAFBlock;
					return file_put_contents($htaccessPath, $updatedHtaccessContent) !== false;
				}
			}
		}
		return false;
	}

	/**
	 * @param string|null $serverConfig
	 * @param string|null $currentAutoPrependedFile
	 */
	public function __construct($serverConfig = null, $currentAutoPrependedFile = null) {
		$this->serverConfig = $serverConfig;
		$this->currentAutoPrependedFile = $currentAutoPrependedFile;
	}

	public function getFilesNeededForBackup() {
		$backups = array();
		$htaccess = wfWAFAutoPrependHelper::getHtaccessPath();
		switch ($this->getServerConfig()) {
			case 'apache-mod_php':
			case 'apache-suphp':
			case 'litespeed':
			case 'cgi':
				if (file_exists($htaccess)) {
					$backups[] = $htaccess;
				}
				break;
		}
		if ($userIni = ini_get('user_ini.filename')) {
			$userIniPath = wfWAFAutoPrependHelper::getUserIniPath();
			switch ($this->getServerConfig()) {
				case 'cgi':
				case 'apache-suphp':
				case 'nginx':
				case 'litespeed':
				case 'iis':
					if (file_exists($userIniPath)) {
						$backups[] = $userIniPath;
					}
					break;
			}
		}
		return $backups;
	}

	public function downloadBackups($index = 0) {
		$backups = $this->getFilesNeededForBackup();
		if ($backups && array_key_exists($index, $backups)) {
			$url = site_url();
			$url = preg_replace('/^https?:\/\//i', '', $url);
			$url = preg_replace('/[^a-zA-Z0-9\.]+/', '_', $url);
			$url = preg_replace('/^_+/', '', $url);
			$url = preg_replace('/_+$/', '', $url);
			header('Content-Type: application/octet-stream');
			$backupFileName = ltrim(basename($backups[$index]), '.');
			header('Content-Disposition: attachment; filename="' . $backupFileName . '_Backup_for_' . $url . '.txt"');
			readfile($backups[$index]);
			die();
		}
	}

	/**
	 * @return mixed
	 */
	public function getServerConfig() {
		return $this->serverConfig;
	}

	/**
	 * @param mixed $serverConfig
	 */
	public function setServerConfig($serverConfig) {
		$this->serverConfig = $serverConfig;
	}

	/**
	 * @param WP_Filesystem_Base $wp_filesystem
	 * @throws wfWAFAutoPrependHelperException
	 */
	public function performInstallation($wp_filesystem) {
		$bootstrapPath = wordfence::getWAFBootstrapPath();
		if (!$wp_filesystem->put_contents($bootstrapPath, wordfence::getWAFBootstrapContent($this->currentAutoPrependedFile))) {
			throw new wfWAFAutoPrependHelperException(__('We were unable to create the <code>wordfence-waf.php</code> file in the root of the WordPress installation. It\'s possible WordPress cannot write to the <code>wordfence-waf.php</code> file because of file permissions. Please verify the permissions are correct and retry the installation.', 'wordfence'));
		}

		$serverConfig = $this->getServerConfig();

		$htaccessPath = wfWAFAutoPrependHelper::getHtaccessPath();
		$homePath = dirname($htaccessPath);

		$userIniPath = wfWAFAutoPrependHelper::getUserIniPath();
		$userIni = ini_get('user_ini.filename');

		$userIniHtaccessDirectives = '';
		if ($userIni) {
			$userIniHtaccessDirectives = sprintf('<Files "%s">
<IfModule mod_authz_core.c>
	Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
	Order deny,allow
	Deny from all
</IfModule>
</Files>
', addcslashes($userIni, '"'));
		}


		// .htaccess configuration
		switch ($serverConfig) {
			case 'apache-mod_php':
				$autoPrependDirective = sprintf("# Wordfence WAF
<IfModule mod_php5.c>
	php_value auto_prepend_file '%1\$s'
</IfModule>
<IfModule mod_php7.c>
	php_value auto_prepend_file '%1\$s'
</IfModule>
<IfModule mod_php.c>
	php_value auto_prepend_file '%1\$s'
</IfModule>
$userIniHtaccessDirectives
# END Wordfence WAF
", addcslashes($bootstrapPath, "'"));
				break;

			case 'litespeed':
				$escapedBootstrapPath = addcslashes($bootstrapPath, "'");
				$autoPrependDirective = sprintf("# Wordfence WAF
<IfModule LiteSpeed>
php_value auto_prepend_file '%s'
</IfModule>
<IfModule lsapi_module>
php_value auto_prepend_file '%s'
</IfModule>
$userIniHtaccessDirectives
# END Wordfence WAF
", $escapedBootstrapPath, $escapedBootstrapPath);
				break;

			case 'apache-suphp':
				$autoPrependDirective = sprintf("# Wordfence WAF
$userIniHtaccessDirectives
# END Wordfence WAF
", addcslashes($homePath, "'"));
				break;

			case 'cgi':
				if ($userIniHtaccessDirectives) {
					$autoPrependDirective = sprintf("# Wordfence WAF
$userIniHtaccessDirectives
# END Wordfence WAF
", addcslashes($homePath, "'"));
				}
				break;

		}

		if (!empty($autoPrependDirective)) {
			// Modify .htaccess
			$htaccessContent = $wp_filesystem->get_contents($htaccessPath);

			if ($htaccessContent) {
				$regex = '/# Wordfence WAF.*?# END Wordfence WAF/is';
				if (preg_match($regex, $htaccessContent, $matches)) {
					$htaccessContent = preg_replace($regex, $autoPrependDirective, $htaccessContent);
				} else {
					$htaccessContent .= "\n\n" . $autoPrependDirective;
				}
			} else {
				$htaccessContent = $autoPrependDirective;
			}

			if (!$wp_filesystem->put_contents($htaccessPath, $htaccessContent)) {
				throw new wfWAFAutoPrependHelperException(__('We were unable to make changes to the .htaccess file. It\'s possible WordPress cannot write to the .htaccess file because of file permissions, which may have been set by another security plugin, or you may have set them manually. Please verify the permissions allow the web server to write to the file, and retry the installation.', 'wordfence'));
			}
			if ($serverConfig == 'litespeed') {
				// sleep(2);
				$wp_filesystem->touch($htaccessPath);
			}

		}
		if ($userIni) {
			// .user.ini configuration
			switch ($serverConfig) {
				case 'cgi':
				case 'nginx':
				case 'apache-suphp':
				case 'litespeed':
				case 'iis':
					$autoPrependIni = sprintf("; Wordfence WAF
auto_prepend_file = '%s'
; END Wordfence WAF
", addcslashes($bootstrapPath, "'"));

					break;
			}

			if (!empty($autoPrependIni)) {

				// Modify .user.ini
				$userIniContent = $wp_filesystem->get_contents($userIniPath);
				if (is_string($userIniContent)) {
					$userIniContent = str_replace('auto_prepend_file', ';auto_prepend_file', $userIniContent);
					$regex = '/; Wordfence WAF.*?; END Wordfence WAF/is';
					if (preg_match($regex, $userIniContent, $matches)) {
						$userIniContent = preg_replace($regex, $autoPrependIni, $userIniContent);
					} else {
						$userIniContent .= "\n\n" . $autoPrependIni;
					}
				} else {
					$userIniContent = $autoPrependIni;
				}

				if (!$wp_filesystem->put_contents($userIniPath, $userIniContent)) {
					throw new wfWAFAutoPrependHelperException(sprintf(/* translators: File path. */ __('We were unable to make changes to the %1$s file. It\'s possible WordPress cannot write to the %1$s file because of file permissions. Please verify the permissions are correct and retry the installation.', 'wordfence'), basename($userIniPath)));
				}
			}
		}
	}
	
	/**
	 * @param WP_Filesystem_Base $wp_filesystem
	 * @throws wfWAFAutoPrependHelperException
	 * 
	 * @return bool Whether or not the .user.ini still has a commented-out auto_prepend_file setting
	 */
	public function performIniRemoval($wp_filesystem) {
		$serverConfig = $this->getServerConfig();
		
		$htaccessPath = wfWAFAutoPrependHelper::getHtaccessPath();
		
		$userIniPath = wfWAFAutoPrependHelper::getUserIniPath();
		$userIni = ini_get('user_ini.filename');
		
		// Modify .htaccess
		$htaccessContent = $wp_filesystem->get_contents($htaccessPath);
		
		if (is_string($htaccessContent)) {
			$htaccessContent = preg_replace('/# Wordfence WAF.*?# END Wordfence WAF/is', '', $htaccessContent);
		} else {
			$htaccessContent = '';
		}
		
		if (!$wp_filesystem->put_contents($htaccessPath, $htaccessContent)) {
			throw new wfWAFAutoPrependHelperException(__('We were unable to make changes to the .htaccess file. It\'s possible WordPress cannot write to the .htaccess file because of file permissions, which may have been set by another security plugin, or you may have set them manually. Please verify the permissions allow the web server to write to the file, and retry the installation.', 'wordfence'));
		}
		if ($serverConfig == 'litespeed') {
			// sleep(2);
			$wp_filesystem->touch($htaccessPath);
		}
	
		if ($userIni) {
			// Modify .user.ini
			$userIniContent = $wp_filesystem->get_contents($userIniPath);
			if (is_string($userIniContent)) {
				$userIniContent = preg_replace('/; Wordfence WAF.*?; END Wordfence WAF/is', '', $userIniContent);
				$userIniContent = str_replace('auto_prepend_file', ';auto_prepend_file', $userIniContent);
			} else {
				$userIniContent = '';
			}
			
			if (!$wp_filesystem->put_contents($userIniPath, $userIniContent)) {
				throw new wfWAFAutoPrependHelperException(sprintf(/* translators: File path. */ __('We were unable to make changes to the %1$s file. It\'s possible WordPress cannot write to the %1$s file because of file permissions. Please verify the permissions are correct and retry the installation.', 'wordfence'), basename($userIniPath)));
			}
			
			return strpos($userIniContent, 'auto_prepend_file') !== false;
		}
		
		return false;
	}
	
	/**
	 * @param WP_Filesystem_Base $wp_filesystem
	 * @throws wfWAFAutoPrependHelperException
	 */
	public function performAutoPrependFileRemoval($wp_filesystem) {
		$bootstrapPath = wordfence::getWAFBootstrapPath();
		if (!$wp_filesystem->delete($bootstrapPath)) {
			throw new wfWAFAutoPrependHelperException(__('We were unable to remove the <code>wordfence-waf.php</code> file in the root of the WordPress installation. It\'s possible WordPress cannot remove the <code>wordfence-waf.php</code> file because of file permissions. Please verify the permissions are correct and retry the removal.', 'wordfence'));
		}
	}
	
	public static function getHtaccessPath() {
		return wfUtils::getHomePath() . '.htaccess';
	}
	
	public static function getUserIniPath() {
		$userIni = ini_get('user_ini.filename');
		if ($userIni) {
			return wfUtils::getHomePath() . $userIni;
		}
		return false;
	}
	
	/**
	 * Extracts the WAF section from the .htaccess content and returns it (inclusive of the section markers). If not 
	 * present, returns false.
	 * 
	 * @param string $htaccessContent
	 * @return false|string
	 */
	public static function getHtaccessSectionContent($htaccessContent) {
		$regex = '/# Wordfence WAF.*?# END Wordfence WAF/is';
		if (preg_match($regex, $htaccessContent, $matches)) {
			return $matches[0];
		}
		return false;
	}
	
	/**
	 * Extracts the WAF section from the .user.ini content and returns it (inclusive of the section markers). If not 
	 * present, returns false.
	 *
	 * @param string $userIniContent
	 * @return false|string
	 */
	public static function getUserIniSectionContent($userIniContent) {
		$regex = '/; Wordfence WAF.*?; END Wordfence WAF/is';
		if (preg_match($regex, $userIniContent, $matches)) {
			return $matches[0];
		}
		return false;
	}
	
	public function usesUserIni() {
		$userIni = ini_get('user_ini.filename');
		if (!$userIni) {
			return false;
		}
		switch ($this->getServerConfig()) {
			case 'cgi':
			case 'apache-suphp':
			case 'nginx':
			case 'litespeed':
			case 'iis':
				return true;
		}
		return false;
	}

	public function uninstall() {
		/** @var WP_Filesystem_Base $wp_filesystem */
		global $wp_filesystem;

		$htaccessPath = wfWAFAutoPrependHelper::getHtaccessPath();
		$userIniPath = wfWAFAutoPrependHelper::getUserIniPath();

		$adminURL = admin_url('/');
		$allow_relaxed_file_ownership = true;
		$homePath = dirname($htaccessPath);

		ob_start();
		if (false === ($credentials = request_filesystem_credentials($adminURL, '', false, $homePath,
				array('version', 'locale'), $allow_relaxed_file_ownership))
		) {
			ob_end_clean();
			return false;
		}

		if (!WP_Filesystem($credentials, $homePath, $allow_relaxed_file_ownership)) {
			// Failed to connect, Error and request again
			request_filesystem_credentials($adminURL, '', true, ABSPATH, array('version', 'locale'),
				$allow_relaxed_file_ownership);
			ob_end_clean();
			return false;
		}

		if ($wp_filesystem->errors->get_error_code()) {
			ob_end_clean();
			return false;
		}
		ob_end_clean();

		if ($wp_filesystem->is_file($htaccessPath)) {
			$htaccessContent = $wp_filesystem->get_contents($htaccessPath);
			$regex = '/# Wordfence WAF.*?# END Wordfence WAF/is';
			if (preg_match($regex, $htaccessContent, $matches)) {
				$htaccessContent = preg_replace($regex, '', $htaccessContent);
				if (!$wp_filesystem->put_contents($htaccessPath, $htaccessContent)) {
					return false;
				}
			}
		}

		if ($wp_filesystem->is_file($userIniPath)) {
			$userIniContent = $wp_filesystem->get_contents($userIniPath);
			$regex = '/; Wordfence WAF.*?; END Wordfence WAF/is';
			if (preg_match($regex, $userIniContent, $matches)) {
				$userIniContent = preg_replace($regex, '', $userIniContent);
				if (!$wp_filesystem->put_contents($userIniPath, $userIniContent)) {
					return false;
				}
			}
		}

		$bootstrapPath = wordfence::getWAFBootstrapPath();
		if ($wp_filesystem->is_file($bootstrapPath)) {
			$wp_filesystem->delete($bootstrapPath);
		}
		return true;
	}
}

class wfWAFAutoPrependHelperException extends Exception {
}lib/viewFullActivityLog.php000064400000002735150755146450012022 0ustar00<?php if (!defined('WORDFENCE_VERSION')) { exit; } ?>
<?php if(! wfUtils::isAdmin()){ exit(); } ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"  dir="ltr" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel='stylesheet' id='wordfence-main-style-css'  href='<?php echo wfUtils::getBaseURL() . wfUtils::versionedAsset('css/fullLog.css'); ?>?ver=<?php echo WORDFENCE_VERSION; ?>' type='text/css' media='all' />
<style type="text/css">

</style>
</head>
<body>
<h1><?php esc_html_e('Wordfence Full Activity Log', 'wordfence') ?></h1>
<?php
$db = new wfDB();
global $wpdb;
$debugOn = wfConfig::get('debugOn', 0);
$table = wfDB::networkTable('wfStatus');
$offset = 0;
$timeOffset = 3600 * get_option('gmt_offset');
$q = $db->querySelect("SELECT ctime, level, type, msg FROM {$table} ORDER BY ctime DESC LIMIT %d, 100", $offset);
while (is_array($q) && count($q) > 0) {
	foreach($q as $r){
		if($r['level'] < 4 || $debugOn){
			echo '<div' . ($r['type'] == 'error' ? ' class="error"' : '') . '>[' . date('M d H:i:s', (int) $r['ctime'] + $timeOffset) . ':' . $r['ctime'] . ':' . $r['level'] . ':' . $r['type'] . ']&nbsp;' . esc_html($r['msg']) . "</div>\n";
		}
	}
	$offset += count($q);
	$q = $db->querySelect("SELECT ctime, level, type, msg FROM {$table} ORDER BY ctime DESC LIMIT %d, 100", $offset);
}
?>
</body>
</html>
<?php exit(0); ?>lib/noc1.key000064400000003223150755146450006700 0ustar00-----BEGIN CERTIFICATE-----
MIIErTCCAxWgAwIBAgIJAOj4d3hU6MEPMA0GCSqGSIb3DQEBCwUAMG0xCzAJBgNV
BAYTAlVTMRMwEQYDVQQIDApXYXNoaW5ndG9uMRAwDgYDVQQHDAdTZWF0dGxlMRIw
EAYDVQQKDAlXb3JkZmVuY2UxCzAJBgNVBAsMAklUMRYwFAYDVQQDDA13b3JkZmVu
Y2UuY29tMB4XDTE5MDEwOTE5MDQzMloXDTM5MDEwNDE5MDQzMlowbTELMAkGA1UE
BhMCVVMxEzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxEjAQ
BgNVBAoMCVdvcmRmZW5jZTELMAkGA1UECwwCSVQxFjAUBgNVBAMMDXdvcmRmZW5j
ZS5jb20wggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDBkaEjT0/Gmxi7
tl7qaX2/TiHXdP4SgqQepP/gIgKTdj71oBZzVvZPztlStQEUO1u0m6eZT3BHQPV7
inzsjz5SpCjChjH6se/DwnAJNaU7c2WUWhVATvwSX0gwDYCCbcS2IG0KUllvtWh9
8JOGG46X/51vxwR3wiJoVvziZJIs8A4n9/qYBWxL7IKAl//EGwm4SacrUVJNxAXo
h3MaIJ5TlEi1xO8NQ/mUzFOJcKhNq94wcco1sffDoe4ctWxydhlpS5GCW/uGveOX
ZLpwiOXVaG1HQx2YoI3Y9RK8y9eXM3IbdKwKSbV7l0TEQBuh20PLk/8DNG4Ba3Gg
yFEMzPjQnyp5OzohLdm4WphRHiA631UcX7ZSrDDfET7a+YsYX2EDcnZRmO/KLkuk
+yXYXRF/1bfuR5sI8l9nPakKXRlG6KbPHKdP//J0ZKVAJyZOhEXfB+X3zFyowUyh
2hjgSZuwS9DYAidNXq/hSMQLALEnwB9YFdxpxSs3sWdbKkDQGHMCAwEAAaNQME4w
HQYDVR0OBBYEFNHk65/wXrYwxPt2wapRH9XU4rRjMB8GA1UdIwQYMBaAFNHk65/w
XrYwxPt2wapRH9XU4rRjMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggGB
AGU/5CxUCxFrVY9qoTRwsx24Prphu8H9Y/je7G+HoZJPj70Qv+8EuzxTmsAeNgG4
xcLIO1WWgAgsvb6XilEaYGO5GOCHctIMjnbauegcmkM4NMTNfzStu+v1mjV/cw/9
bzEM9Rr1Jc+mQXq8K6zXTaBXo7GU+WqTAadHhbUCWD5afQ9Kq8OCKaM4NBf2guQl
PU2HQts8reYn7VeqWz063RLuRAAwf59vZbi3foqTBYSiDHjAykDe4LsvUWtS1y7t
Dxyz+YSATCxpnkDWEoad+kKZ1qpgqiewp/tLnDR1LOIDmWu9KongslEHUAmAN/T1
otTWmQOeg/cnT1W/yqapxzpOmvLb28f9shMbGvmQpvle/JNVeoQyM3NF7t1rCbGT
aqCI9kjWOoLd7t4svtGyR6IOKUbXqT5U9q1bMXIWH+ty8KmxzsvEBHXmYF6+jYr+
tWlXyhcN+OyPcBDHaNlFtQi+eKzjTUhSVvxJaKo3R6q4j8SVR613aa4AxunY2jdi
zQ==
-----END CERTIFICATE-----lib/wfSupportController.php000064400000057750150755146450012132 0ustar00<?php

class wfSupportController {
	const ITEM_INDEX = 'index';
	const ITEM_FREE = 'free';
	const ITEM_PREMIUM = 'premium';
	
	const ITEM_CHANGELOG = 'changelog';
	
	const ITEM_NOTICE_WAF_INACCESSIBLE_CONFIG = 'notice-waf-inaccessible-config';
	const ITEM_NOTICE_WAF_MOD_PHP_FIX = 'notice-waf-mod-php-fix';
	const ITEM_NOTICE_WAF_READ_ONLY_WARNING = 'notice-waf-read-only-warning';
	const ITEM_NOTICE_MISCONFIGURED_HOW_GET_IPS = 'notice-misconfigured-how-get-ips';
	const ITEM_NOTICE_SWITCH_LIVE_TRAFFIC = 'notice-switch-live-traffic';
	
	const ITEM_LOCKED_OUT = 'locked-out';
	const ITEM_AJAX_BLOCKED = 'ajax-blocked';
	const ITEM_USING_BREACH_PASSWORD = 'using-breach-password';
	
	const ITEM_WIDGET_LOCAL_ATTACKS = 'widget-local-attacks';
	
	const ITEM_VERSION_WORDPRESS = 'version-wordpress';
	const ITEM_VERSION_PHP = 'version-php';
	const ITEM_VERSION_OPENSSL = 'version-ssl';
	
	const ITEM_GDPR = 'gdpr';
	const ITEM_GDPR_DPA = 'gdpr-dpa';

	const ITEM_GENERAL_REMOTE_IP_LOOKUP = 'general-remote-ip-lookup';
	
	const ITEM_DASHBOARD = 'dashboard';
	const ITEM_DASHBOARD_STATUS_FIREWALL = 'dashboard-status-firewall';
	const ITEM_DASHBOARD_STATUS_SCAN = 'dashboard-status-scan';
	const ITEM_DASHBOARD_OPTIONS = 'dashboard-options';
	const ITEM_DASHBOARD_OPTION_API_KEY = 'dashboard-option-api-key';
	const ITEM_DASHBOARD_OPTION_HOW_GET_IPS = 'dashboard-option-how-get-ips';
	const ITEM_DASHBOARD_OPTION_AUTOMATIC_UPDATE = 'dashboard-option-automatic-update';
	const ITEM_DASHBOARD_OPTION_ALERT_EMAILS = 'dashboard-option-alert-emails';
	const ITEM_DASHBOARD_OPTION_HIDE_VERSION = 'dashboard-option-hide-version';
	const ITEM_DASHBOARD_OPTION_DISABLE_UPLOADS_EXECUTION = 'dashboard-option-disable-uploads-execution';
	const ITEM_DASHBOARD_OPTION_DISABLE_COOKIES = 'dashboard-option-disable-cookies';
	const ITEM_DASHBOARD_OPTION_PAUSE_LIVE_UPDATES = 'dashboard-option-pause-live-updates';
	const ITEM_DASHBOARD_OPTION_UPDATE_INTERVAL = 'dashboard-option-refresh-period';
	const ITEM_DASHBOARD_OPTION_LITESPEED_WARNING = 'dashboard-litespeed-warning';
	const ITEM_DASHBOARD_OPTION_BYPASS_LITESPEED_CHECK = 'dashboard-option-bypass-litespeed-check';
	const ITEM_DASHBOARD_OPTION_DELETE_DEACTIVATION = 'dashboard-option-delete-deactivation';
	const ITEM_DASHBOARD_OPTION_EXPORT = 'dashboard-option-export';
	const ITEM_DASHBOARD_OPTION_IMPORT = 'dashboard-option-import';
	
	const ITEM_FIREWALL_WAF = 'firewall-waf';
	const ITEM_FIREWALL_WAF_STATUS_OVERALL = 'firewall-waf-status-overall';
	const ITEM_FIREWALL_WAF_STATUS_RULES = 'firewall-waf-status-rules';
	const ITEM_FIREWALL_WAF_STATUS_BLACKLIST = 'firewall-waf-status-blacklist';
	const ITEM_FIREWALL_WAF_STATUS_BRUTE_FORCE = 'firewall-waf-status-brute-force';
	const ITEM_FIREWALL_WAF_INSTALL_MANUALLY = 'firewall-waf-install-manually';
	const ITEM_FIREWALL_WAF_INSTALL_NGINX = 'firewall-waf-install-nginx';
	const ITEM_FIREWALL_WAF_REMOVE_MANUALLY = 'firewall-waf-remove-manually';
	const ITEM_FIREWALL_WAF_LEARNING_MODE = 'firewall-waf-learning-mode';
	const ITEM_FIREWALL_WAF_RULES = 'firewall-waf-rules';
	const ITEM_FIREWALL_WAF_WHITELIST = 'firewall-waf-whitelist';
	const ITEM_FIREWALL_WAF_OPTION_DELAY_BLOCKING = 'firewall-waf-option-delay-blocking';
	const ITEM_FIREWALL_WAF_OPTION_WHITELISTED_IPS = 'firewall-waf-option-whitelisted-ips';
	const ITEM_FIREWALL_WAF_OPTION_WHITELISTED_SERVICES = 'firewall-waf-option-whitelisted-services';
	const ITEM_FIREWALL_WAF_IGNORED_ALERT_IPS = 'firewall-waf-option-ignored-alert-ips';
	const ITEM_FIREWALL_WAF_OPTION_IMMEDIATELY_BLOCK_URLS = 'firewall-waf-option-immediately-block-urls';
	const ITEM_FIREWALL_WAF_OPTION_ENABLE_LOGIN_SECURITY = 'firewall-waf-option-enable-login-security';
	const ITEM_FIREWALL_WAF_OPTION_LOCK_OUT_FAILURE_COUNT = 'firewall-waf-option-lock-out-failure-count';
	const ITEM_FIREWALL_WAF_OPTION_LOCK_OUT_FORGOT_PASSWORD_COUNT = 'firewall-waf-option-lock-out-forgot-password-count';
	const ITEM_FIREWALL_WAF_OPTION_COUNT_TIME_PERIOD = 'firewall-waf-option-count-time-period';
	const ITEM_FIREWALL_WAF_OPTION_LOCKOUT_DURATION = 'firewall-waf-option-lockout-duration';
	const ITEM_FIREWALL_WAF_OPTION_IMMEDIATELY_LOCK_OUT_INVALID_USERS = 'firewall-waf-option-immediately-lock-out-invalid-users';
	const ITEM_FIREWALL_WAF_OPTION_IMMEDIATELY_BLOCK_USERS = 'firewall-waf-option-immediately-block-users';
	const ITEM_FIREWALL_WAF_OPTION_ENFORCE_STRONG_PASSWORDS = 'firewall-waf-option-enforce-strong-passwords';
	const ITEM_FIREWALL_WAF_OPTION_PREVENT_BREACH_PASSWORDS = 'firewall-waf-option-prevent-breach-passwords';
	const ITEM_FIREWALL_WAF_OPTION_MASK_LOGIN_ERRORS = 'firewall-waf-option-mask-login-errors';
	const ITEM_FIREWALL_WAF_OPTION_PREVENT_ADMIN_REGISTRATION = 'firewall-waf-option-prevent-admin-registration';
	const ITEM_FIREWALL_WAF_OPTION_PREVENT_AUTHOR_SCAN = 'firewall-waf-option-prevent-author-scan';
	const ITEM_FIREWALL_WAF_OPTION_DISABLE_APPLICATION_PASSWORDS = 'firewall-waf-option-disable-application-passwords';
	const ITEM_FIREWALL_WAF_OPTION_BLOCK_BAD_POST = 'firewall-waf-option-block-bad-post';
	const ITEM_FIREWALL_WAF_OPTION_CUSTOM_BLOCK_TEXT = 'firewall-waf-option-custom-block-text';
	const ITEM_FIREWALL_WAF_OPTION_CHECK_PASSWORD = 'firewall-waf-option-check-password';
	const ITEM_FIREWALL_WAF_OPTION_PARTICIPATE_WFSN = 'firewall-waf-option-participate-wfsn';
	const ITEM_FIREWALL_WAF_OPTION_ENABLE_ADVANCED_BLOCKING = 'firewall-waf-option-enable-advanced-blocking';
	const ITEM_FIREWALL_WAF_OPTION_IMMEDIATELY_BLOCK_FAKE_GOOGLE = 'firewall-waf-option-immediately-block-fake-google';
	const ITEM_FIREWALL_WAF_OPTION_GOOGLE_ACTION = 'firewall-waf-option-google-action';
	const ITEM_FIREWALL_WAF_OPTION_RATE_LIMIT_ANY = 'firewall-waf-option-rate-limit-any';
	const ITEM_FIREWALL_WAF_OPTION_RATE_LIMIT_CRAWLER = 'firewall-waf-option-rate-limit-crawler';
	const ITEM_FIREWALL_WAF_OPTION_RATE_LIMIT_CRAWLER_404 = 'firewall-waf-option-rate-limit-crawler-404';
	const ITEM_FIREWALL_WAF_OPTION_RATE_LIMIT_HUMAN = 'firewall-waf-option-rate-limit-human';
	const ITEM_FIREWALL_WAF_OPTION_RATE_LIMIT_HUMAN_404 = 'firewall-waf-option-rate-limit-human-404';
	const ITEM_FIREWALL_WAF_OPTION_RATE_LIMIT_ANY_404 = 'firewall-waf-option-rate-limit-any-404';
	const ITEM_FIREWALL_WAF_OPTION_AUTOMATIC_BLOCK_DURATION = 'firewall-waf-option-automatic-block-duration';
	const ITEM_FIREWALL_WAF_OPTION_WHITELISTED_404 = 'firewall-waf-option-whitelisted-404';
	const ITEM_FIREWALL_WAF_OPTION_MONITOR_AJAX = 'firewall-waf-option-monitor-ajax';
	
	const ITEM_FIREWALL_BLOCKING = 'firewall-blocking';
	const ITEM_FIREWALL_BLOCKING_FILTER = 'firewall-blocking-filter';
	const ITEM_FIREWALL_BLOCKING_OPTION_WHAT_TO_DO = 'firewall-blocking-option-what-to-do';
	const ITEM_FIREWALL_BLOCKING_OPTION_REDIRECT = 'firewall-blocking-option-redirect';
	const ITEM_FIREWALL_BLOCKING_OPTION_BLOCK_LOGGED_IN = 'firewall-blocking-option-block-logged-in';
	const ITEM_FIREWALL_BLOCKING_BYPASS_COOKIE = 'firewall-blocking-bypass-cookie';
	const ITEM_FIREWALL_BLOCKING_BYPASS_REDIRECT = 'firewall-blocking-bypass-redirect';
	const ITEM_FIREWALL_BLOCKING_FULL_SITE = 'firewall-blocking-full-site';

	const ITEM_FIREWALL_REMOVE_OPTIMIZATION = 'firewall-remove-optimization';
	
	const ITEM_SCAN = 'scan';
	const ITEM_SCAN_STATUS_OVERALL = 'scan-status-overall';
	const ITEM_SCAN_STATUS_MALWARE = 'scan-status-malware';
	const ITEM_SCAN_STATUS_REPUTATION = 'scan-status-reputation';
	const ITEM_SCAN_OPTION_CHECK_SITE_BLACKLISTED = 'scan-option-check-site-blacklisted';
	const ITEM_SCAN_OPTION_CHECK_SITE_SPAMVERTIZED = 'scan-option-check-site-spamvertized';
	const ITEM_SCAN_OPTION_CHECK_IP_SPAMMING = 'scan-option-ip-spamming';
	const ITEM_SCAN_OPTION_CHECK_MISCONFIGURED_HOW_GET_IPS = 'scan-option-misconfigured-how-get-ips';
	const ITEM_SCAN_OPTION_PUBLIC_CONFIG = 'scan-option-public-config';
	const ITEM_SCAN_OPTION_PUBLIC_QUARANTINED = 'scan-option-public-quarantined';
	const ITEM_SCAN_OPTION_CORE_CHANGES = 'scan-option-core-changes';
	const ITEM_SCAN_OPTION_THEME_CHANGES = 'scan-option-theme-changes';
	const ITEM_SCAN_OPTION_PLUGIN_CHANGES = 'scan-option-plugin-changes';
	const ITEM_SCAN_OPTION_UNKNOWN_CORE = 'scan-option-unknown-core';
	const ITEM_SCAN_OPTION_MALWARE_HASHES = 'scan-option-malware-hashes';
	const ITEM_SCAN_OPTION_MALWARE_SIGNATURES = 'scan-option-malware-signatures';
	const ITEM_SCAN_OPTION_MALWARE_URLS = 'scan-option-malware-urls';
	const ITEM_SCAN_OPTION_POST_URLS = 'scan-option-post-urls';
	const ITEM_SCAN_OPTION_COMMENT_URLS = 'scan-option-comment-urls';
	const ITEM_SCAN_OPTION_MALWARE_OPTIONS = 'scan-option-malware-options';
	const ITEM_SCAN_OPTION_UPDATES = 'scan-option-updates';
	const ITEM_SCAN_OPTION_UNKNOWN_ADMINS = 'scan-option-unknown-admins';
	const ITEM_SCAN_OPTION_PASSWORD_STRENGTH = 'scan-option-password-strength';
	const ITEM_SCAN_OPTION_DISK_SPACE = 'scan-option-disk-space';
	const ITEM_SCAN_OPTION_WAF_STATUS = 'scan-option-waf-status';
	const ITEM_SCAN_OPTION_OUTSIDE_WORDPRESS = 'scan-option-outside-wordpress';
	const ITEM_SCAN_OPTION_IMAGES_EXECUTABLE = 'scan-option-images-executable';
	const ITEM_SCAN_OPTION_HIGH_SENSITIVITY = 'scan-option-high-sensitivity';
	const ITEM_SCAN_OPTION_LOW_RESOURCE = 'scan-option-low-resource';
	const ITEM_SCAN_OPTION_LIMIT_ISSUES = 'scan-option-limit-issues';
	const ITEM_SCAN_OPTION_OVERALL_TIME_LIMIT = 'scan-option-overall-time-limit';
	const ITEM_SCAN_OPTION_MEMORY_LIMIT = 'scan-option-memory-limit';
	const ITEM_SCAN_OPTION_STAGE_TIME_LIMIT = 'scan-option-stage-time-limit';
	const ITEM_SCAN_OPTION_EXCLUDE_PATTERNS = 'scan-option-exclude-patterns';
	const ITEM_SCAN_OPTION_CUSTOM_MALWARE_SIGNATURES = 'scan-option-custom-malware-signatures';
	const ITEM_SCAN_OPTION_MAX_RESUME_ATTEMPTS = 'scan-option-max-resume-attempts';
	const ITEM_SCAN_OPTION_USE_ONLY_IPV4 = 'scan-option-use-only-ipv4';
	const ITEM_SCAN_TIME_LIMIT = 'scan-time-limit';
	const ITEM_SCAN_FAILS = 'scan-fails';
	const ITEM_SCAN_FAILED_START = 'scan-failed-start';
	const ITEM_SCAN_BULK_DELETE_WARNING = 'scan-bulk-delete-warning';
	const ITEM_SCAN_SCHEDULING = 'scan-scheduling';
	const ITEM_SCAN_RESULT_PUBLIC_CONFIG = 'scan-result-public-config';
	const ITEM_SCAN_RESULT_PLUGIN_ABANDONED = 'scan-result-plugin-abandoned';
	const ITEM_SCAN_RESULT_PLUGIN_REMOVED = 'scan-result-plugin-removed';
	const ITEM_SCAN_RESULT_UPDATE_CHECK_FAILED = 'scan-result-update-check-failed';
	const ITEM_SCAN_RESULT_OPTION_MALWARE_URL = 'scan-result-option-malware-url';
	const ITEM_SCAN_RESULT_GEOIP_UPDATE = 'scan-result-geoip-update';
	const ITEM_SCAN_RESULT_WAF_DISABLED = 'scan-result-waf-disabled';
	const ITEM_SCAN_RESULT_UNKNOWN_FILE_CORE = 'scan-result-unknown-file-in-wordpress-core';
	const ITEM_SCAN_RESULT_SKIPPED_PATHS = 'scan-result-skipped-paths';
	const ITEM_SCAN_RESULT_REPAIR_MODIFIED_FILES = 'scan-result-repair-modified-files';
	const ITEM_SCAN_RESULT_MODIFIED_PLUGIN = 'scan-result-modified-plugin';
	const ITEM_SCAN_RESULT_MODIFIED_THEME = 'scan-result-modified-theme';
	const ITEM_SCAN_RESULT_PLUGIN_VULNERABLE = 'scan-result-plugin-vulnerable';
	const ITEM_SCAN_RESULT_CORE_UPGRADE = 'scan-result-core-upgrade';

	const ITEM_TOOLS_TWO_FACTOR = 'tools-two-factor';
	const ITEM_TOOLS_LIVE_TRAFFIC = 'tools-live-traffic';
	const ITEM_TOOLS_LIVE_TRAFFIC_OPTION_ENABLE = 'tools-live-traffic-option-enable';
	const ITEM_TOOLS_WHOIS_LOOKUP = 'tools-whois-lookup';
	const ITEM_TOOLS_IMPORT_EXPORT = 'tools-import-export';
	
	const ITEM_DIAGNOSTICS = 'diagnostics';
	const ITEM_DIAGNOSTICS_SYSTEM_CONFIGURATION = 'diagnostics-system-configuration';
	const ITEM_DIAGNOSTICS_TEST_MEMORY = 'diagnostics-test-memory';
	const ITEM_DIAGNOSTICS_TEST_EMAIL = 'diagnostics-test-email';
	const ITEM_DIAGNOSTICS_TEST_ACTIVITY_REPORT = 'diagnostics-test-activity-report';
	const ITEM_DIAGNOSTICS_REMOVE_CENTRAL_DATA = 'diagnostics-remove-central-data';
	const ITEM_DIAGNOSTICS_OPTION_DEBUGGING_MODE = 'diagnostics-option-debugging-mode';
	const ITEM_DIAGNOSTICS_OPTION_REMOTE_SCANS = 'diagnostics-option-remote-scans';
	const ITEM_DIAGNOSTICS_OPTION_SSL_VERIFICATION = 'diagnostics-option-ssl-verification';
	const ITEM_DIAGNOSTICS_OPTION_DISABLE_PHP_INPUT = 'diagnostics-option-disable-php-input';
	const ITEM_DIAGNOSTICS_OPTION_BETA_TDF = 'diagnostics-option-beta-tdf';
	const ITEM_DIAGNOSTICS_OPTION_WORDFENCE_TRANSLATIONS = 'diagnostics-option-wordfence-translations';
	const ITEM_DIAGNOSTICS_IPV6 = 'diagnostics-ipv6';
	const ITEM_DIAGNOSTICS_CLOUDFLARE_BLOCK = 'compatibility-cloudflare';

	const ITEM_MODULE_LOGIN_SECURITY = 'module-login-security';
	const ITEM_MODULE_LOGIN_SECURITY_2FA = 'module-login-security-2fa';
	const ITEM_MODULE_LOGIN_SECURITY_CAPTCHA = 'module-login-security-captcha';
	
	public static function esc_supportURL($item = self::ITEM_INDEX) {
		return esc_url(self::supportURL($item));
	}
	
	public static function supportURL($item = self::ITEM_INDEX) {
		$base = 'https://www.wordfence.com/help/';
		switch ($item) {
			case self::ITEM_INDEX:
				return 'https://www.wordfence.com/help/';
			case self::ITEM_FREE:
				return 'https://wordpress.org/support/plugin/wordfence/';
			case self::ITEM_PREMIUM:
				return 'https://support.wordfence.com/';
			
			//These all fall through to the query format
				
			case self::ITEM_NOTICE_WAF_INACCESSIBLE_CONFIG:
			case self::ITEM_NOTICE_WAF_MOD_PHP_FIX:
			case self::ITEM_NOTICE_WAF_READ_ONLY_WARNING:
			case self::ITEM_NOTICE_MISCONFIGURED_HOW_GET_IPS:
			case self::ITEM_NOTICE_SWITCH_LIVE_TRAFFIC:
				
			case self::ITEM_LOCKED_OUT:
			case self::ITEM_AJAX_BLOCKED:
			case self::ITEM_USING_BREACH_PASSWORD:
				
			case self::ITEM_WIDGET_LOCAL_ATTACKS:
				
			case self::ITEM_VERSION_WORDPRESS:
			case self::ITEM_VERSION_PHP:
			case self::ITEM_VERSION_OPENSSL:
				
			case self::ITEM_GDPR:
			case self::ITEM_GDPR_DPA:

			case self::ITEM_GENERAL_REMOTE_IP_LOOKUP:
				
			case self::ITEM_DASHBOARD:
			case self::ITEM_DASHBOARD_STATUS_FIREWALL:
			case self::ITEM_DASHBOARD_STATUS_SCAN:
			case self::ITEM_DASHBOARD_OPTIONS:
			case self::ITEM_DASHBOARD_OPTION_API_KEY:
			case self::ITEM_DASHBOARD_OPTION_HOW_GET_IPS:
			case self::ITEM_DASHBOARD_OPTION_AUTOMATIC_UPDATE:
			case self::ITEM_DASHBOARD_OPTION_ALERT_EMAILS:
			case self::ITEM_DASHBOARD_OPTION_HIDE_VERSION:
			case self::ITEM_DASHBOARD_OPTION_DISABLE_UPLOADS_EXECUTION:
			case self::ITEM_DASHBOARD_OPTION_DISABLE_COOKIES:
			case self::ITEM_DASHBOARD_OPTION_PAUSE_LIVE_UPDATES:
			case self::ITEM_DASHBOARD_OPTION_UPDATE_INTERVAL:
			case self::ITEM_DASHBOARD_OPTION_LITESPEED_WARNING:
			case self::ITEM_DASHBOARD_OPTION_BYPASS_LITESPEED_CHECK:
			case self::ITEM_DASHBOARD_OPTION_DELETE_DEACTIVATION:
			case self::ITEM_DASHBOARD_OPTION_EXPORT:
			case self::ITEM_DASHBOARD_OPTION_IMPORT:

			case self::ITEM_FIREWALL_WAF:
			case self::ITEM_FIREWALL_WAF_STATUS_OVERALL:
			case self::ITEM_FIREWALL_WAF_STATUS_RULES:
			case self::ITEM_FIREWALL_WAF_STATUS_BLACKLIST:
			case self::ITEM_FIREWALL_WAF_STATUS_BRUTE_FORCE:
			case self::ITEM_FIREWALL_WAF_INSTALL_MANUALLY:
			case self::ITEM_FIREWALL_WAF_INSTALL_NGINX:
			case self::ITEM_FIREWALL_WAF_REMOVE_MANUALLY:
			case self::ITEM_FIREWALL_WAF_LEARNING_MODE:
			case self::ITEM_FIREWALL_WAF_RULES:
			case self::ITEM_FIREWALL_WAF_WHITELIST:
			case self::ITEM_FIREWALL_WAF_OPTION_DELAY_BLOCKING:
			case self::ITEM_FIREWALL_WAF_OPTION_WHITELISTED_IPS:
			case self::ITEM_FIREWALL_WAF_OPTION_WHITELISTED_SERVICES:
			case self::ITEM_FIREWALL_WAF_IGNORED_ALERT_IPS:
			case self::ITEM_FIREWALL_WAF_OPTION_IMMEDIATELY_BLOCK_URLS:
			case self::ITEM_FIREWALL_WAF_OPTION_ENABLE_LOGIN_SECURITY:
			case self::ITEM_FIREWALL_WAF_OPTION_LOCK_OUT_FAILURE_COUNT:
			case self::ITEM_FIREWALL_WAF_OPTION_LOCK_OUT_FORGOT_PASSWORD_COUNT:
			case self::ITEM_FIREWALL_WAF_OPTION_COUNT_TIME_PERIOD:
			case self::ITEM_FIREWALL_WAF_OPTION_LOCKOUT_DURATION:
			case self::ITEM_FIREWALL_WAF_OPTION_IMMEDIATELY_LOCK_OUT_INVALID_USERS:
			case self::ITEM_FIREWALL_WAF_OPTION_IMMEDIATELY_BLOCK_USERS:
			case self::ITEM_FIREWALL_WAF_OPTION_ENFORCE_STRONG_PASSWORDS:
			case self::ITEM_FIREWALL_WAF_OPTION_PREVENT_BREACH_PASSWORDS:
			case self::ITEM_FIREWALL_WAF_OPTION_MASK_LOGIN_ERRORS:
			case self::ITEM_FIREWALL_WAF_OPTION_PREVENT_ADMIN_REGISTRATION:
			case self::ITEM_FIREWALL_WAF_OPTION_PREVENT_AUTHOR_SCAN:
			case self::ITEM_FIREWALL_WAF_OPTION_DISABLE_APPLICATION_PASSWORDS:
			case self::ITEM_FIREWALL_WAF_OPTION_BLOCK_BAD_POST:
			case self::ITEM_FIREWALL_WAF_OPTION_CUSTOM_BLOCK_TEXT:
			case self::ITEM_FIREWALL_WAF_OPTION_CHECK_PASSWORD:
			case self::ITEM_FIREWALL_WAF_OPTION_PARTICIPATE_WFSN:
			case self::ITEM_FIREWALL_WAF_OPTION_ENABLE_ADVANCED_BLOCKING:
			case self::ITEM_FIREWALL_WAF_OPTION_IMMEDIATELY_BLOCK_FAKE_GOOGLE:
			case self::ITEM_FIREWALL_WAF_OPTION_GOOGLE_ACTION:
			case self::ITEM_FIREWALL_WAF_OPTION_RATE_LIMIT_ANY:
			case self::ITEM_FIREWALL_WAF_OPTION_RATE_LIMIT_CRAWLER:
			case self::ITEM_FIREWALL_WAF_OPTION_RATE_LIMIT_CRAWLER_404:
			case self::ITEM_FIREWALL_WAF_OPTION_RATE_LIMIT_HUMAN:
			case self::ITEM_FIREWALL_WAF_OPTION_RATE_LIMIT_HUMAN_404:
			case self::ITEM_FIREWALL_WAF_OPTION_RATE_LIMIT_ANY_404:
			case self::ITEM_FIREWALL_WAF_OPTION_AUTOMATIC_BLOCK_DURATION:
			case self::ITEM_FIREWALL_WAF_OPTION_WHITELISTED_404:
			case self::ITEM_FIREWALL_WAF_OPTION_MONITOR_AJAX:
				
			case self::ITEM_FIREWALL_BLOCKING:
			case self::ITEM_FIREWALL_BLOCKING_FILTER:
			case self::ITEM_FIREWALL_BLOCKING_OPTION_WHAT_TO_DO:
			case self::ITEM_FIREWALL_BLOCKING_OPTION_REDIRECT:
			case self::ITEM_FIREWALL_BLOCKING_OPTION_BLOCK_LOGGED_IN:
			case self::ITEM_FIREWALL_BLOCKING_BYPASS_COOKIE:
			case self::ITEM_FIREWALL_BLOCKING_BYPASS_REDIRECT:
			case self::ITEM_FIREWALL_BLOCKING_FULL_SITE:

			case self::ITEM_FIREWALL_REMOVE_OPTIMIZATION:
				
			case self::ITEM_SCAN:
			case self::ITEM_SCAN_STATUS_OVERALL:
			case self::ITEM_SCAN_STATUS_MALWARE:
			case self::ITEM_SCAN_STATUS_REPUTATION:
			case self::ITEM_SCAN_TIME_LIMIT:
			case self::ITEM_SCAN_FAILS:
			case self::ITEM_SCAN_FAILED_START:
			case self::ITEM_SCAN_BULK_DELETE_WARNING:
			case self::ITEM_SCAN_SCHEDULING:
			case self::ITEM_SCAN_OPTION_CHECK_SITE_BLACKLISTED:
			case self::ITEM_SCAN_OPTION_CHECK_SITE_SPAMVERTIZED:
			case self::ITEM_SCAN_OPTION_CHECK_IP_SPAMMING:
			case self::ITEM_SCAN_OPTION_CHECK_MISCONFIGURED_HOW_GET_IPS:
			case self::ITEM_SCAN_OPTION_PUBLIC_CONFIG:
			case self::ITEM_SCAN_OPTION_PUBLIC_QUARANTINED:
			case self::ITEM_SCAN_OPTION_CORE_CHANGES:
			case self::ITEM_SCAN_OPTION_THEME_CHANGES:
			case self::ITEM_SCAN_OPTION_PLUGIN_CHANGES:
			case self::ITEM_SCAN_OPTION_UNKNOWN_CORE:
			case self::ITEM_SCAN_OPTION_MALWARE_HASHES:
			case self::ITEM_SCAN_OPTION_MALWARE_SIGNATURES:
			case self::ITEM_SCAN_OPTION_MALWARE_URLS:
			case self::ITEM_SCAN_OPTION_POST_URLS:
			case self::ITEM_SCAN_OPTION_COMMENT_URLS:
			case self::ITEM_SCAN_OPTION_MALWARE_OPTIONS:
			case self::ITEM_SCAN_OPTION_UPDATES:
			case self::ITEM_SCAN_OPTION_UNKNOWN_ADMINS:
			case self::ITEM_SCAN_OPTION_PASSWORD_STRENGTH:
			case self::ITEM_SCAN_OPTION_DISK_SPACE:
			case self::ITEM_SCAN_OPTION_WAF_STATUS:
			case self::ITEM_SCAN_OPTION_OUTSIDE_WORDPRESS:
			case self::ITEM_SCAN_OPTION_IMAGES_EXECUTABLE:
			case self::ITEM_SCAN_OPTION_HIGH_SENSITIVITY:
			case self::ITEM_SCAN_OPTION_LOW_RESOURCE:
			case self::ITEM_SCAN_OPTION_LIMIT_ISSUES:
			case self::ITEM_SCAN_OPTION_OVERALL_TIME_LIMIT:
			case self::ITEM_SCAN_OPTION_MEMORY_LIMIT:
			case self::ITEM_SCAN_OPTION_STAGE_TIME_LIMIT:
			case self::ITEM_SCAN_OPTION_EXCLUDE_PATTERNS:
			case self::ITEM_SCAN_OPTION_CUSTOM_MALWARE_SIGNATURES:
			case self::ITEM_SCAN_OPTION_MAX_RESUME_ATTEMPTS:
			case self::ITEM_SCAN_OPTION_USE_ONLY_IPV4:
			case self::ITEM_SCAN_RESULT_PUBLIC_CONFIG:
			case self::ITEM_SCAN_RESULT_PLUGIN_ABANDONED:
			case self::ITEM_SCAN_RESULT_PLUGIN_REMOVED:
			case self::ITEM_SCAN_RESULT_UPDATE_CHECK_FAILED:
			case self::ITEM_SCAN_RESULT_OPTION_MALWARE_URL:
			case self::ITEM_SCAN_RESULT_GEOIP_UPDATE:
			case self::ITEM_SCAN_RESULT_WAF_DISABLED:
			case self::ITEM_SCAN_RESULT_UNKNOWN_FILE_CORE:
			case self::ITEM_SCAN_RESULT_SKIPPED_PATHS:
			case self::ITEM_SCAN_RESULT_REPAIR_MODIFIED_FILES:
			case self::ITEM_SCAN_RESULT_MODIFIED_PLUGIN:
			case self::ITEM_SCAN_RESULT_MODIFIED_THEME:
			case self::ITEM_SCAN_RESULT_PLUGIN_VULNERABLE:
			case self::ITEM_SCAN_RESULT_CORE_UPGRADE:

			case self::ITEM_TOOLS_TWO_FACTOR:
			case self::ITEM_TOOLS_LIVE_TRAFFIC:
			case self::ITEM_TOOLS_LIVE_TRAFFIC_OPTION_ENABLE:
			case self::ITEM_TOOLS_WHOIS_LOOKUP:
			case self::ITEM_TOOLS_IMPORT_EXPORT:
				
			case self::ITEM_DIAGNOSTICS:
			case self::ITEM_DIAGNOSTICS_SYSTEM_CONFIGURATION:
			case self::ITEM_DIAGNOSTICS_TEST_MEMORY:
			case self::ITEM_DIAGNOSTICS_TEST_EMAIL:
			case self::ITEM_DIAGNOSTICS_TEST_ACTIVITY_REPORT:
			case self::ITEM_DIAGNOSTICS_REMOVE_CENTRAL_DATA:
			case self::ITEM_DIAGNOSTICS_OPTION_DEBUGGING_MODE:
			case self::ITEM_DIAGNOSTICS_OPTION_REMOTE_SCANS:
			case self::ITEM_DIAGNOSTICS_OPTION_SSL_VERIFICATION:
			case self::ITEM_DIAGNOSTICS_OPTION_DISABLE_PHP_INPUT:
			case self::ITEM_DIAGNOSTICS_OPTION_BETA_TDF:
			case self::ITEM_DIAGNOSTICS_OPTION_WORDFENCE_TRANSLATIONS:
			case self::ITEM_DIAGNOSTICS_IPV6:
			case self::ITEM_DIAGNOSTICS_CLOUDFLARE_BLOCK:

			case self::ITEM_MODULE_LOGIN_SECURITY:
			case self::ITEM_MODULE_LOGIN_SECURITY_2FA:
			case self::ITEM_MODULE_LOGIN_SECURITY_CAPTCHA:
				return $base . '?query=' . $item;
		}
		
		return '';
	}
	
	public static function shouldShowSatisfactionPrompt() {
		//Don't show if overridden
		if (!wfConfig::getBool('satisfactionPromptOverride')) {
			return false;
		}
		
		//Only show on our pages
		if (!isset($_REQUEST['page'])) {
			return false;
		}
		
		if (!preg_match('/^Wordfence/', $_REQUEST['page'])) {
			return false;
		}
		
		//Only show until dismissed
		if (wfConfig::get('satisfactionPromptDismissed') > 0) {
			return false;
		}
		
		//Only show to users installing after the release date of the version this was introduced
		if (WORDFENCE_FEEDBACK_EPOCH > wfConfig::get('satisfactionPromptInstallDate')) {
			return false;
		}
		
		//Don't show for at least 7 days post-install
		if ((time() - wfConfig::get('satisfactionPromptInstallDate')) < 86400 * 7) {
			return false;
		}
		
		return true;
	}
	
	public static function satisfactionPromptNotice() {
?>
		<div id="wordfenceSatisfactionPrompt" class="fade notice notice-info">
			<p id="wordfenceSatisfactionPrompt-initial"><strong><?php printf(__('Are you enjoying using Wordfence Security?', 'wordfence')); ?></strong>&nbsp;&nbsp;&nbsp;<a href="#" onclick="WFAD.wordfenceSatisfactionChoice('yes'); return false;" class="wf-btn wf-btn-default wf-btn-sm" role="button"><?php printf(__('Yes', 'wordfence')); ?></a>&nbsp;&nbsp;&nbsp;<a href="#" onclick="WFAD.wordfenceSatisfactionChoice('no'); return false;" class="wf-btn wf-btn-default wf-btn-sm" role="button"><?php printf(__('No', 'wordfence')); ?></a></p>
			<div id="wordfenceSatisfactionPrompt-yes" style="display: none;">
				<p><?php printf(__('Please consider leaving us a 5-star review on wordpress.org. Your review helps other members of the WordPress community find plugins that fit their needs.', 'wordfence')); ?></p>
				<p><a href="https://wordpress.org/support/plugin/wordfence/reviews/" class="wf-btn wf-btn-default wf-btn-sm" role="button" target="_blank" rel="noopener noreferrer"><?php printf(__('Leave Review', 'wordfence')); ?></a></p>
			</div>
			<div id="wordfenceSatisfactionPrompt-no" style="display: none;">
				<p><?php printf(__('What can we do to improve Wordfence Security?', 'wordfence')); ?></p>
				<p><textarea rows="6" cols="50" id="wordfenceSatisfactionPrompt-feedback"></textarea></p>
				<p><a href="#" onclick="WFAD.wordfenceSatisfactionChoice('feedback'); return false;" class="wf-btn wf-btn-default wf-btn-sm" role="button" target="_blank" rel="noopener noreferrer"><?php printf(__('Submit Feedback', 'wordfence')); ?></a>&nbsp;&nbsp;&nbsp;<a href="#" onclick="WFAD.wordfenceSatisfactionChoice('dismiss'); return false;" class="wf-btn wf-btn-default wf-btn-sm" role="button"><?php printf(__('Dismiss', 'wordfence')); ?></a></p>
			</div>
			<p id="wordfenceSatisfactionPrompt-complete" style="display: none;"><?php printf(__('Thank you for providing your feedback on Wordfence Security', 'wordfence')); ?></p>
			<button type="button" class="notice-dismiss" onclick="WFAD.wordfenceSatisfactionChoice('dismiss'); return false;"><span class="screen-reader-text">Dismiss this notice.</span></button>
		</div>
<?php
	}
}lib/wfBrowscap.php000064400000007634150755146450010166 0ustar00<?php
class wfBrowscap {
	protected $_cacheLoaded = false;
	protected $_userAgents = array();
	protected $_browsers = array();
	protected $_patterns = array();
	protected $_properties = array();
	protected $resultCache = array();
	const COMPRESSION_PATTERN_START = '@';
	const COMPRESSION_PATTERN_DELIMITER = '|';
	const REGEX_DELIMITER = '@';
	
	public static function shared() {
		static $_browscap = null;
		if ($_browscap === null) {
			$_browscap = new wfBrowscap();
		}
		return $_browscap;
	}

    public function getBrowser($user_agent){
        if (!$this->_cacheLoaded) {
                if (!$this->_loadCache(dirname(__FILE__) . '/wfBrowscapCache.php')) {
                    throw new Exception('Cannot load this cache version - the cache format is not compatible.');
                }
            }

        $browser = array();
        foreach ($this->_patterns as $pattern => $pattern_data) {
            if (preg_match($pattern . 'i', $user_agent, $matches)) {
                if (1 == count($matches)) {
                    $key = $pattern_data;

                    $simple_match = true;
                } else {
                    $pattern_data = unserialize($pattern_data);

                    array_shift($matches);

                    $match_string = self::COMPRESSION_PATTERN_START
                        . implode(self::COMPRESSION_PATTERN_DELIMITER, $matches);

                    if (!isset($pattern_data[$match_string])) {
                        continue;
                    }

                    $key = $pattern_data[$match_string];

                    $simple_match = false;
                }

                $browser = array(
                    $user_agent,
                    trim(strtolower($pattern), self::REGEX_DELIMITER),
                    $this->_pregUnQuote($pattern, $simple_match ? false : $matches)
                );

                $browser = $value = $browser + unserialize($this->_browsers[$key]);

                while (array_key_exists(3, $value)) {
                    $value = unserialize($this->_browsers[$value[3]]);
                    $browser += $value;
                }

                if (!empty($browser[3])) {
                    $browser[3] = $this->_userAgents[$browser[3]];
                }

                break;
            }
        }

        $array = array();
        foreach ($browser as $key => $value) {
            if ($value === 'true') {
                $value = true;
            } elseif ($value === 'false') {
                $value = false;
            }
            $array[$this->_properties[$key]] = $value;
        }

        return $array;
    }
    protected function _loadCache($cache_file){
        $cache_version  = null;
        $browsers       = array();
        $userAgents     = array();
        $patterns       = array();
        $properties     = array();

        $this->_cacheLoaded = false;

        require $cache_file;

        $this->_browsers       = $browsers;
        $this->_userAgents     = $userAgents;
        $this->_patterns       = $patterns;
        $this->_properties     = $properties;

        $this->_cacheLoaded = true;

        return true;
    }
    protected function _pregUnQuote($pattern, $matches){
        $search  = array(
            '\\' . self::REGEX_DELIMITER, '\\.', '\\\\', '\\+', '\\[', '\\^', '\\]', '\\$', '\\(', '\\)', '\\{', '\\}',
            '\\=', '\\!', '\\<', '\\>', '\\|', '\\:', '\\-', '.*', '.', '\\?'
        );
        $replace = array(
            self::REGEX_DELIMITER, '\\?', '\\', '+', '[', '^', ']', '$', '(', ')', '{', '}', '=', '!', '<', '>', '|',
            ':', '-', '*', '?', '.'
        );

        $result = substr(str_replace($search, $replace, $pattern), 2, -2);

        if ($matches) {
            foreach ($matches as $one_match) {
                $num_pos = strpos($result, '(\d)');
                $result  = substr_replace($result, $one_match, $num_pos, 4);
            }
        }

        return $result;
    }
}lib/wfAlerts.php000064400000016575150755146450007644 0ustar00<?php

abstract class wfBaseAlert {

	public abstract function send();
}

class wfBlockAlert extends wfBaseAlert {

	private $IP;
	private $reason;
	private $secsToGo;


	/**
	 * wfBlockAlert constructor.
	 * @param $IP
	 * @param $reason
	 * @param $secsToGo
	 */
	public function __construct($IP, $reason, $secsToGo) {
		$this->IP = $IP;
		$this->reason = $reason;
		$this->secsToGo = $secsToGo;
	}

	public function send() {
		if (wfConfig::get('alertOn_block')) {
			$message = sprintf(/* translators: IP address. */ __('Wordfence has blocked IP address %s.', 'wordfence'), $this->IP) . "\n";
			$message .= sprintf(/* translators: Description of firewall action. */ __('The reason is: "%s".', 'wordfence'), $this->reason);
			if ($this->secsToGo > 0) {
				$message .= "\n" . sprintf(/* translators: Time until. */ __('The duration of the block is %s.', 'wordfence'), wfUtils::makeDuration($this->secsToGo, true));
			}
			wordfence::alert(sprintf(/* translators: IP address. */__('Blocking IP %s', 'wordfence'), $this->IP), $message, $this->IP);
		}
	}

}

class wfAutoUpdatedAlert extends wfBaseAlert {

	private $version;

	/**
	 * @param $version
	 */
	public function __construct($version) {
		$this->version = $version;
	}

	public function send() {
		if (wfConfig::get('alertOn_update') == '1' && $this->version) {
			wordfence::alert(sprintf(/* translators: Software version. */ __("Wordfence Upgraded to version %s", 'wordfence'), $this->version), sprintf(/* translators: Software version. */ __("Your Wordfence installation has been upgraded to version %s", 'wordfence'), $this->version), false);
		}
	}

}

class wfWafDeactivatedAlert extends wfBaseAlert {

	private $username;
	private $IP;

	/**
	 * @param $username
	 * @param $IP
	 */
	public function __construct($username, $IP) {
		$this->username = $username;
		$this->IP = $IP;
	}

	public function send() {
		if (wfConfig::get('alertOn_wafDeactivated')) {
			wordfence::alert(__('Wordfence WAF Deactivated', 'wordfence'), sprintf(/* translators: WP username. */__('A user with username "%s" deactivated the Wordfence Web Application Firewall on your WordPress site.', 'wordfence'), $this->username), $this->IP);
		}
	}

}

class wfWordfenceDeactivatedAlert extends wfBaseAlert {
	private $username;
	private $IP;

	/**
	 * @param $username
	 * @param $IP
	 */
	public function __construct($username, $IP) {
		$this->username = $username;
		$this->IP = $IP;
	}

	public function send() {
		if (wfConfig::get('alertOn_wordfenceDeactivated')) {
			wordfence::alert(__("Wordfence Deactivated", 'wordfence'), sprintf(/* translators: WP username. */ __("A user with username \"%s\" deactivated Wordfence on your WordPress site.", 'wordfence'), $this->username), $this->IP);
		}
	}

}

class wfLostPasswdFormAlert extends wfBaseAlert {

	private $user;
	private $IP;

	/**
	 * @param $user
	 * @param $IP
	 */
	public function __construct($user, $IP) {
		$this->user = $user;
		$this->IP = $IP;
	}

	public function send() {
		if (wfConfig::get('alertOn_lostPasswdForm')) {
			wordfence::alert(__("Password recovery attempted", 'wordfence'), sprintf(/* translators: Email address. */__("Someone tried to recover the password for user with email address: %s", 'wordfence'), wp_kses($this->user->user_email, array())), $this->IP);
		}
	}

}

class wfLoginLockoutAlert extends wfBaseAlert {

	private $IP;
	private $reason;

	/**
	 * @param $IP
	 * @param $reason
	 */
	public function __construct($IP, $reason) {
		$this->IP = $IP;
		$this->reason = $reason;
	}

	public function send() {
		if (wfConfig::get('alertOn_loginLockout')) {
			$message = sprintf(
				/* translators: 1. IP address. 2. Description of firewall action. */
				__('A user with IP address %1$s has been locked out from signing in or using the password recovery form for the following reason: %2$s.', 'wordfence'), $this->IP, $this->reason);
			if (wfBlock::lockoutDuration() > 0) {
				$message .= "\n" . sprintf(/* translators: Time until. */ __('The duration of the lockout is %s.', 'wordfence'), wfUtils::makeDuration(wfBlock::lockoutDuration(), true));
			}
			wordfence::alert(__('User locked out from signing in', 'wordfence'), $message, $this->IP);
		}
	}
}

class wfAdminLoginAlert extends wfBaseAlert {

	private $cookieName;
	private $username;
	private $IP;
	private $cookieValue;

	/**
	 * @param $cookieName
	 * @param $cookieValue
	 * @param $username
	 * @param $IP
	 */
	public function __construct($cookieName, $cookieValue, $username, $IP) {
		$this->cookieName = $cookieName;
		$this->cookieValue = $cookieValue;
		$this->username = $username;
		$this->IP = $IP;
	}

	public function send() {
		if (wfConfig::get('alertOn_adminLogin')) {
			$shouldAlert = true;
			if (wfConfig::get('alertOn_firstAdminLoginOnly') && isset($_COOKIE[$this->cookieName])) {
				$shouldAlert = !hash_equals($this->cookieValue, $_COOKIE[$this->cookieName]);
			}

			if ($shouldAlert) {
				wordfence::alert(__("Admin Login", 'wordfence'), sprintf(/* translators: WP username. */ __("A user with username \"%s\" who has administrator access signed in to your WordPress site.", 'wordfence'), $this->username), $this->IP);
			}
		}
	}
}

class wfNonAdminLoginAlert extends wfBaseAlert {

	private $cookieName;
	private $username;
	private $IP;
	private $cookieValue;

	/**
	 * @param $cookieName
	 * @param $cookieValue
	 * @param $username
	 * @param $IP
	 */
	public function __construct($cookieName, $cookieValue, $username, $IP) {
		$this->cookieName = $cookieName;
		$this->cookieValue = $cookieValue;
		$this->username = $username;
		$this->IP = $IP;
	}

	public function send() {
		if (wfConfig::get('alertOn_nonAdminLogin')) {
			$shouldAlert = true;
			if (wfConfig::get('alertOn_firstNonAdminLoginOnly') && isset($_COOKIE[$this->cookieName])) {
				$shouldAlert = !hash_equals($this->cookieValue, $_COOKIE[$this->cookieName]);
			}

			if ($shouldAlert) {
				wordfence::alert(__("User login", 'wordfence'), sprintf(/* translators: WP username. */ __("A non-admin user with username \"%s\" signed in to your WordPress site.", 'wordfence'), $this->username), $this->IP);
			}
		}
	}
}

class wfBreachLoginAlert extends wfBaseAlert {

	private $username;
	private $lostPasswordUrl;
	private $supportUrl;
	private $IP;

	/**
	 * @param $username
	 * @param $lostPasswordUrl
	 * @param $supportUrl
	 * @param $IP
	 */
	public function __construct($username, $lostPasswordUrl, $supportUrl, $IP) {
		$this->username = $username;
		$this->lostPasswordUrl = $lostPasswordUrl;
		$this->supportUrl = $supportUrl;
		$this->IP = $IP;
	}

	public function send() {
		if (wfConfig::get('alertOn_breachLogin')) {
			wordfence::alert(__('User login blocked for insecure password', 'wordfence'), sprintf(
				/* translators: 1. WP username. 2. Reset password URL. 3. Support URL. */
				__('A user with username "%1$s" tried to sign in to your WordPress site. Access was denied because the password being used exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. Please change or reset the password (%2$s) to reactivate this account. Learn More: %3$s', 'wordfence'), $this->username, $this->lostPasswordUrl, $this->supportUrl), $this->IP);
		}
	}
}

class wfIncreasedAttackRateAlert extends wfBaseAlert {

	private $message;

	/**
	 * @param $message
	 */
	public function __construct($message) {
		$this->message = $message;
	}

	public function send() {
		wordfence::alert(__('Increased Attack Rate', 'wordfence'), $this->message, false);
	}
}
lib/wfScanFileListItem.php000064400000000630150755146450011532 0ustar00<?php

require_once __DIR__ . '/wfScanFile.php';

class wfScanFileListItem extends wfScanFile {

	private $id;
	private $next;

	public function __construct($id, $realPath, $wordpressPath, $next = null) {
		parent::__construct($realPath, $wordpressPath);
		$this->id = $id;
		$this->next = $next;
	}

	public function getId() {
		return $this->id;
	}

	public function getNext() {
		return $this->next;
	}

}lib/wfDeactivationOption.php000064400000004210150755146450012174 0ustar00<?php

class wfDeactivationOption {

	const RETAIN = 'retain';
	const DELETE_MAIN = 'delete-main';
	const DELETE_LOGIN_SECURITY = 'delete-wfls';
	const DELETE_ALL = 'delete-all';

	private static $options = array();

	private $key;
	private $label;
	private $deleteMain, $deleteLoginSecurity;

	private function __construct($key, $label, $deleteMain, $deleteLoginSecurity) {
		$this->key = $key;
		$this->label = $label;
		$this->deleteMain = $deleteMain;
		$this->deleteLoginSecurity = $deleteLoginSecurity;
	}

	public function getKey() {
		return $this->key;
	}

	public function getLabel() {
		return $this->label;
	}

	public function deletesMain() {
		return $this->deleteMain;
	}

	public function deletesLoginSecurity() {
		return $this->deleteLoginSecurity;
	}

	public function matchesState($deleteMain, $deleteLoginSecurity) {
		return $deleteMain === $this->deleteMain && $deleteLoginSecurity === $this->deleteLoginSecurity;
	}

	private static function registerOption($option) {
		self::$options[$option->getKey()] = $option;
	}

	private static function initializeOptions() {
		if (empty(self::$options)) {
			$options = array(
				new self(self::RETAIN, __('Keep all Wordfence tables and data', 'wordfence'), false, false),
				new self(self::DELETE_MAIN, __('Delete Wordfence tables and data, but keep Login Security tables and 2FA codes', 'wordfence'), true, false),
				new self(self::DELETE_LOGIN_SECURITY, __('Delete Login Security tables and 2FA codes, but keep Wordfence tables and data', 'wordfence'), false, true),
				new self(self::DELETE_ALL, __('Delete all Wordfence tables and data', 'wordfence'), true, true)
			);
			foreach ($options as $option)
				self::registerOption($option);
		}
	}

	public static function getAll() {
		self::initializeOptions();
		return self::$options;
	}

	public static function forKey($key) {
		self::initializeOptions();
		return array_key_exists($key, self::$options) ? self::$options[$key] : null;
	}

	public static function forState($deleteMain, $deleteLoginSecurity) {
		foreach (self::getAll() as $option) {
			if ($option->matchesState($deleteMain, $deleteLoginSecurity))
				return $option;
		}
		return null;
	}

}lib/menu_dashboard_options.php000064400000036331150755146450012573 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
$dashboardURL = network_admin_url('admin.php?page=Wordfence');
$firewall = new wfFirewall();
$scanner = wfScanner::shared();
$d = new wfDashboard();
?>
<script type="application/javascript">
	(function($) {
		$(function() {
			document.title = "<?php esc_attr_e('Wordfence Global Options', 'wordfence'); ?>" + " \u2039 " + WFAD.basePageName;

			//Hash-based option block linking
			if (window.location.hash) {
				var hashes = WFAD.parseHashes();
				var hash = hashes[hashes.length - 1];
				var block = $('.wf-block[data-persistence-key="' + hash + '"]');
				if (block) {
					if (!block.hasClass('wf-active')) {
						block.find('.wf-block-content').slideDown({
							always: function() {
								block.addClass('wf-active');
								$('html, body').animate({
									scrollTop: block.offset().top - 100
								}, 1000);
							}
						});

						WFAD.ajax('wordfence_saveDisclosureState', {name: block.data('persistenceKey'), state: true}, function() {});
					}
					else {
						$('html, body').animate({
							scrollTop: block.offset().top - 100
						}, 1000);
					}
					history.replaceState('', document.title, window.location.pathname + window.location.search);
				}
			}
		});
	})(jQuery);
</script>
<div class="wf-options-controls">
	<div class="wf-row">
		<div class="wf-col-xs-12">
			<?php
			echo wfView::create('options/block-controls', array(
				'backLink' => $dashboardURL,
				'backLabelHTML' => wp_kses(__('Back<span class="wf-hidden-xs"> to Dashboard</span>', 'wordfence'), array('span'=>array('class'=>array()))),
				'restoreDefaultsSection' => wfConfig::OPTIONS_TYPE_GLOBAL,
				'restoreDefaultsMessage' => __('Are you sure you want to restore the default global settings? This will undo any custom changes you have made to the options on this page. Your configured license key and alert emails will not be changed.', 'wordfence'),
			))->render();
			?>
		</div>
	</div>
</div>
<div class="wf-options-controls-spacer"></div>
<?php
if (!wfOnboardingController::shouldShowAttempt3() && wfConfig::get('touppPromptNeeded')) {
	echo wfView::create('gdpr/disabled-overlay')->render();
	echo wfView::create('gdpr/banner')->render();
}
?>
<div class="wrap wordfence" id="wf-global-options">
	<div class="wf-container-fluid">
		<div class="wf-row">
			<div class="wf-col-xs-12">
				<div class="wp-header-end"></div>
			</div>
		</div>
		<div class="wf-row">
			<div class="<?php echo wfStyle::contentClasses(); ?>">
				<div id="waf-options" class="wf-fixed-tab-content">
					<?php
					echo wfView::create('common/section-title', array(
						'title' => __('Wordfence Global Options', 'wordfence'),
						'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_DASHBOARD_OPTIONS),
						'helpLabelHTML' => wp_kses(__('Learn more<span class="wf-hidden-xs"> about Global Options</span>', 'wordfence'), array('span'=>array('class'=>array()))),
						'showIcon' => true,
					))->render();
					?>
					<div class="wf-row">
						<div class="wf-col-xs-12">
							<div class="wf-block wf-active">
								<div class="wf-block-content">
									<ul class="wf-block-list">
										<li>
											<ul class="wf-block-list wf-block-list-horizontal wf-block-list-nowrap wf-waf-coverage">
												<li>
													<?php
													echo wfView::create('common/status-detail', array(
														'id' => 'waf-coverage',
														'percentage' => $firewall->overallStatus(),
														'activeColor' => ($firewall->firewallMode() == wfFirewall::FIREWALL_MODE_LEARNING ? '#ececec' : null /* automatic */),
														'title' => __('Firewall', 'wordfence'),
														'subtitle' => ($firewall->firewallMode() == wfFirewall::FIREWALL_MODE_LEARNING ? __('WAF Currently in Learning Mode', 'wordfence') : __('Protection from known and emerging threats', 'wordfence')),
														'link' => wfPage::pageURL(wfPage::PAGE_FIREWALL_OPTIONS, wfPage::PAGE_DASHBOARD_OPTIONS),
														'linkLabel' => __('Manage Firewall', 'wordfence'),
														'statusTitle' => __('Firewall Status', 'wordfence'),
														'statusList' => $firewall->statusList(),
														'statusExtra' => ($firewall->firewallMode() == wfFirewall::FIREWALL_MODE_LEARNING ? wfView::create('waf/status-tooltip-learning-mode')->render() : ''),
														'helpLink' => __('https://www.wordfence.com/help/dashboard/#dashboard-status', 'wordfence'),
													))->render();
													?>
												</li>
												<li>
													<?php
													echo wfView::create('common/status-detail', array(
														'id' => 'wf-scanner-type',
														'percentage' => $scanner->scanTypeStatus(),
														'activeColor' => (!$scanner->isEnabled() ? '#ececec' : null /* automatic */),
														'title' => __('Scan', 'wordfence'),
														'subtitle' => __('Detection of security issues', 'wordfence'),
														'link' => wfPage::pageURL(wfPage::PAGE_SCAN_OPTIONS, wfPage::PAGE_DASHBOARD_OPTIONS),
														'linkLabel' => __('Manage Scan', 'wordfence'),
														'statusTitle' => __('Scan Status', 'wordfence'),
														'statusList' => $scanner->scanTypeStatusList(),
														'helpLink' => __('https://www.wordfence.com/help/dashboard/#dashboard-status', 'wordfence'),
													))->render();
													?>
												</li>
												<li>
													<?php if (wfConfig::get('hasKeyConflict')): ?>
														<?php
														echo wfView::create('common/status-critical', array(
															'id' => 'wf-premium-alert',
															'title' => __('Premium License Conflict', 'wordfence'),
															'subtitle' => __('License already in use', 'wordfence'),
															'link' => 'https://www.wordfence.com/gnl1manageConflict/manage-wordfence-api-keys/',
															'linkLabel' => __('Reset License', 'wordfence'),
															'linkNewWindow' => true,
														))->render();
														?>
													<?php elseif (wfConfig::get('keyType') == wfLicense::KEY_TYPE_PAID_EXPIRED): ?>
														<?php
														echo wfView::create('common/status-critical', array(
															'id' => 'wf-premium-alert',
															'title' => __('Premium Protection Disabled', 'wordfence'),
															'subtitle' => __('License is expired', 'wordfence'),
															'link' => 'https://www.wordfence.com/gnl1renewExpired/manage-wordfence-api-keys/',
															'linkLabel' => __('Renew License', 'wordfence'),
															'linkNewWindow' => true,
														))->render();
														?>
													<?php elseif (wfConfig::get('keyType') == wfLicense::KEY_TYPE_PAID_DELETED): ?>
														<?php
														echo wfView::create('common/status-critical', array(
															'id' => 'wf-premium-alert',
															'title' => __('Premium Protection Disabled', 'wordfence'),
															'subtitleHtml' => wp_kses(__('The license you were using has been removed from your account. Please reach out to <a href="mailto:billing@wordfence.com">billing@wordfence.com</a> or create a Premium support case at <a href="https://support.wordfence.com/support/tickets" target="_blank">https://support.wordfence.com/support/tickets<span class="screen-reader-text"> (opens in new tab)</span></a> for more information. Our staff is happy to help.', 'wordfence'), array('a'=>array('href'=>array(), 'target'=>array()), 'span'=>array('class'=>array()))),
															'link' => null,
															'linkLabel' => null
														))->render();
														?>
													<?php elseif (wfConfig::get('keyType') == wfLicense::KEY_TYPE_FREE || wfConfig::get('keyType') === false): ?>
														<div>
															<p><h3><?php esc_html_e('Premium Protection Disabled', 'wordfence'); ?></h3></p>
															<p><?php esc_html_e('As a free Wordfence user, you are currently using the Community version of the Threat Defense Feed. Premium users are protected by additional firewall rules and malware signatures. Upgrade to Premium today to improve your protection.', 'wordfence'); ?></p>
															<p><a class="wf-btn wf-btn-primary wf-btn-callout-subtle" href="https://www.wordfence.com/gnl1dashboardOptionsUpgrade/products/wordfence-premium/" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Upgrade to Premium', 'wordfence'); ?></a>&nbsp;&nbsp;<a class="wf-btn wf-btn-callout-subtle wf-btn-default" href="https://www.wordfence.com/gnl1dashboardOptionsLearn/products/pricing/" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Learn More', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></p>
														</div>
													<?php elseif (wfConfig::get('keyExpDays') < 30 && (wfConfig::get('premiumAutoRenew', null) === '0' || wfConfig::get('premiumAutoRenew', null) === 0)): ?>
														<?php
														echo wfView::create('common/status-critical', array(
															'id' => 'wf-premium-alert',
															'title' => __('Premium License Expiring', 'wordfence'),
															'subtitle' => __('Auto-renew is disabled', 'wordfence'),
															'link' => 'https://www.wordfence.com/gnl1renewExpiring/manage-wordfence-api-keys/',
															'linkLabel' => __('Renew License', 'wordfence'),
															'linkNewWindow' => true,
														))->render();
														?>
													<?php elseif (wfConfig::get('keyExpDays') < 30): ?>
														<?php
														if (wfConfig::get('premiumPaymentExpiring')) {
															$title = __('Payment Method Expiring', 'wordfence');
														}
														else if (wfConfig::get('premiumPaymentExpired')) {
															$title = __('Payment Method Expired', 'wordfence');
														}
														else if (wfConfig::get('premiumPaymentMissing')) {
															$title = __('Payment Method Missing', 'wordfence');
														}
														else if (wfConfig::get('premiumPaymentHold')) {
															$title = __('Payment Method Invalid', 'wordfence');
														}
														
														if (isset($title)) {
															$days = floor(((int) wfConfig::get('premiumNextRenew') - time()) / 86400);
															if ($days <= 0) {
																$days = __('today', 'wordfence');
															}
															else if ($days == 1) {
																$days = __('tomorrow', 'wordfence');
															}
															else {
																$days = sprintf(/* translators: Number of days */ __('in %d days', 'wordfence'), $days);
															}
															
															echo wfView::create('dashboard/status-payment-expiring', array(
																'id' => 'wf-premium-alert',
																'title' => $title,
																'subtitle' => sprintf(__('License renews %s', 'wordfence'), $days),
																'link' => 'https://www.wordfence.com/gnl1renewExpiring/manage-wordfence-api-keys/',
																'linkLabel' => __('Update Payment Method', 'wordfence'),
																'linkNewWindow' => true,
															))->render();
														}
														else {
															$days = floor(((int) wfConfig::get('premiumNextRenew') - time()) / 86400);
															if ($days == 0) {
																$days = __('today', 'wordfence');
															}
															else if ($days == 1) {
																$days = __('in 1 day', 'wordfence');
															}
															else {
																$days = sprintf(__('in %d days', 'wordfence'), $days);
															}
															
															echo wfView::create('dashboard/status-renewing', array(
																'id' => 'wf-premium-alert',
																'title' => __('Premium License Expiring', 'wordfence'),
																'subtitle' => sprintf(__('License renews %s', 'wordfence'), $days),
																'link' => 'https://www.wordfence.com/gnl1reviewExpiring/manage-wordfence-api-keys/',
																'linkLabel' => __('Review Payment Method', 'wordfence'),
																'linkNewWindow' => true,
															))->render();
														}
														?>
													<?php elseif (wfConfig::get('keyType') == wfLicense::KEY_TYPE_PAID_CURRENT): ?>
														<div class="wf-block-labeled-value wf-protection-status wf-protection-status-<?php echo esc_attr($firewall->ruleMode()); ?>">
															<div class="wf-block-labeled-value-value"><i class="wf-fa wf-fa-check" aria-hidden="true"></i></div>
															<div class="wf-block-labeled-value-label"><?php echo esc_html(sprintf(__('%s Enabled', 'wordfence'), wfLicense::current()->getPrefixedTypeLabel())); ?></div>
															<?php if (wfLicense::current()->isBelowResponse()): ?>
																<p>
																<?php if (wfLicense::current()->isBelowCare()): ?>
																	<a href="https://www.wordfence.com/gnl1dashboardLearnCareResponse/products/pricing/"><?php esc_html_e('Learn about Wordfence Care and Wordfence Response', 'wordfence') ?></a>
																<?php else: ?>
																	<a href="https://www.wordfence.com/gnl1dashboardLearnResponse/products/wordfence-response/"><?php esc_html_e('Learn about Wordfence Response', 'wordfence') ?></a>
																<?php endif ?>
																</p>
															<?php endif ?>
														</div>
													<?php endif; ?>
												</li>
											</ul>
										</li>
									</ul>
								</div>
							</div>
						</div>
					</div>
					<?php
					echo wfView::create('dashboard/options-group-license', array(
						'stateKey' => 'global-options-license',
					))->render();
					
					echo wfView::create('dashboard/options-group-view-customization', array(
						'stateKey' => 'global-options-view-customization',
					))->render();
					
					echo wfView::create('dashboard/options-group-general', array(
						'stateKey' => 'global-options-general',
					))->render();
					
					echo wfView::create('dashboard/options-group-dashboard', array(
						'stateKey' => 'global-options-dashboard',
					))->render();
					
					echo wfView::create('dashboard/options-group-alert', array(
						'stateKey' => 'global-options-alert',
					))->render();
					
					echo wfView::create('dashboard/options-group-email-summary', array(
						'stateKey' => 'global-options-email-summary',
					))->render();
					?>
					<div class="wf-row">
						<div class="wf-col-xs-12">
							<div class="wf-block wf-always-active">
								<div class="wf-block-header">
									<div class="wf-block-header-content">
										<div class="wf-block-title">
											<strong><?php esc_html_e('Import/Export Options', 'wordfence'); ?></strong>
										</div>
									</div>
								</div>
								<div class="wf-block-content">
									<ul class="wf-block-list">
										<li>
											<ul class="wf-flex-horizontal wf-flex-vertical-xs wf-flex-full-width wf-add-top wf-add-bottom">
												<li><?php esc_html_e('Importing and exporting of options has moved to the Tools page', 'wordfence'); ?></li>
												<li class="wf-right wf-left-xs wf-padding-add-top-xs-small">
													<a href="<?php echo esc_url(network_admin_url('admin.php?page=WordfenceTools&subpage=importexport')); ?>" class="wf-btn wf-btn-primary wf-btn-callout-subtle" id="wf-export-options"><?php esc_html_e('Import/Export Options', 'wordfence'); ?></a>
												</li>
											</ul>
										</li>
									</ul>
								</div>
							</div>
						</div>
					</div> <!-- end import options -->
				</div> <!-- end options block -->
			</div> <!-- end content block -->
		</div> <!-- end row -->
	</div> <!-- end container -->
</div>lib/flags.php000064400000015173150755146450007142 0ustar00<?php
$flags = array (
  '__' => '-0px -0px',
  'ad' => '-16px -0px',
  'ae' => '-32px -0px',
  'af' => '-48px -0px',
  'ag' => '-64px -0px',
  'ai' => '-80px -0px',
  'al' => '-96px -0px',
  'am' => '-112px -0px',
  'an' => '-128px -0px',
  'ao' => '-144px -0px',
  'ap' => '-160px -0px',
  'aq' => '-176px -0px',
  'ar' => '-0px -11px',
  'as' => '-16px -11px',
  'at' => '-32px -11px',
  'au' => '-48px -11px',
  'aw' => '-64px -11px',
  'ax' => '-80px -11px',
  'az' => '-96px -11px',
  'ba' => '-112px -11px',
  'bb' => '-128px -11px',
  'bd' => '-144px -11px',
  'be' => '-160px -11px',
  'bf' => '-176px -11px',
  'bg' => '-0px -22px',
  'bh' => '-16px -22px',
  'bi' => '-32px -22px',
  'bj' => '-48px -22px',
  'bl' => '-64px -22px',
  'bm' => '-80px -22px',
  'bn' => '-96px -22px',
  'bo' => '-112px -22px',
  'bq' => '-128px -22px',
  'br' => '-144px -22px',
  'bs' => '-160px -22px',
  'bt' => '-176px -22px',
  'bv' => '-0px -33px',
  'bw' => '-16px -33px',
  'by' => '-32px -33px',
  'bz' => '-48px -33px',
  'ca' => '-64px -33px',
  'cc' => '-80px -33px',
  'cd' => '-96px -33px',
  'cf' => '-112px -33px',
  'cg' => '-128px -33px',
  'ch' => '-144px -33px',
  'ci' => '-160px -33px',
  'ck' => '-176px -33px',
  'cl' => '-0px -44px',
  'cm' => '-16px -44px',
  'cn' => '-32px -44px',
  'co' => '-48px -44px',
  'cr' => '-64px -44px',
  'cs' => '-80px -44px',
  'cu' => '-96px -44px',
  'cv' => '-112px -44px',
  'cw' => '-128px -44px',
  'cx' => '-144px -44px',
  'cy' => '-160px -44px',
  'cz' => '-176px -44px',
  'de' => '-0px -55px',
  'dj' => '-16px -55px',
  'dk' => '-32px -55px',
  'dm' => '-48px -55px',
  'do' => '-64px -55px',
  'dz' => '-80px -55px',
  'ec' => '-96px -55px',
  'ee' => '-112px -55px',
  'eg' => '-128px -55px',
  'eh' => '-144px -55px',
  'england' => '-160px -55px',
  'er' => '-176px -55px',
  'es' => '-0px -66px',
  'et' => '-16px -66px',
  'eu' => '-32px -66px',
  'fam' => '-48px -66px',
  'fi' => '-64px -66px',
  'fj' => '-80px -66px',
  'fk' => '-96px -66px',
  'fm' => '-112px -66px',
  'fo' => '-128px -66px',
  'fr' => '-144px -66px',
  'ga' => '-160px -66px',
  'gb' => '-176px -66px',
  'gd' => '-0px -77px',
  'ge' => '-16px -77px',
  'gf' => '-32px -77px',
  'gg' => '-48px -77px',
  'gh' => '-64px -77px',
  'gi' => '-80px -77px',
  'gl' => '-96px -77px',
  'gm' => '-112px -77px',
  'gn' => '-128px -77px',
  'gp' => '-144px -77px',
  'gq' => '-160px -77px',
  'gr' => '-176px -77px',
  'gs' => '-0px -88px',
  'gt' => '-16px -88px',
  'gu' => '-32px -88px',
  'gw' => '-48px -88px',
  'gy' => '-64px -88px',
  'hk' => '-80px -88px',
  'hm' => '-96px -88px',
  'hn' => '-112px -88px',
  'hr' => '-128px -88px',
  'ht' => '-144px -88px',
  'hu' => '-160px -88px',
  'id' => '-176px -88px',
  'ie' => '-0px -99px',
  'il' => '-16px -99px',
  'im' => '-32px -99px',
  'in' => '-48px -99px',
  'io' => '-64px -99px',
  'iq' => '-80px -99px',
  'ir' => '-96px -99px',
  'is' => '-112px -99px',
  'it' => '-128px -99px',
  'je' => '-144px -99px',
  'jm' => '-160px -99px',
  'jo' => '-176px -99px',
  'jp' => '-0px -110px',
  'ke' => '-16px -110px',
  'kg' => '-32px -110px',
  'kh' => '-48px -110px',
  'ki' => '-64px -110px',
  'km' => '-80px -110px',
  'kn' => '-96px -110px',
  'kp' => '-112px -110px',
  'kr' => '-128px -110px',
  'kw' => '-144px -110px',
  'ky' => '-160px -110px',
  'kz' => '-176px -110px',
  'la' => '-0px -121px',
  'lb' => '-16px -121px',
  'lc' => '-32px -121px',
  'li' => '-48px -121px',
  'lk' => '-64px -121px',
  'lr' => '-80px -121px',
  'ls' => '-96px -121px',
  'lt' => '-112px -121px',
  'lu' => '-128px -121px',
  'lv' => '-144px -121px',
  'ly' => '-160px -121px',
  'ma' => '-176px -121px',
  'mc' => '-0px -132px',
  'md' => '-16px -132px',
  'me' => '-32px -132px',
  'mf' => '-48px -132px',
  'mg' => '-64px -132px',
  'mh' => '-80px -132px',
  'mk' => '-96px -132px',
  'ml' => '-112px -132px',
  'mm' => '-128px -132px',
  'mn' => '-144px -132px',
  'mo' => '-160px -132px',
  'mp' => '-176px -132px',
  'mq' => '-0px -143px',
  'mr' => '-16px -143px',
  'ms' => '-32px -143px',
  'mt' => '-48px -143px',
  'mu' => '-64px -143px',
  'mv' => '-80px -143px',
  'mw' => '-96px -143px',
  'mx' => '-112px -143px',
  'my' => '-128px -143px',
  'mz' => '-144px -143px',
  'na' => '-160px -143px',
  'nc' => '-176px -143px',
  'ne' => '-0px -154px',
  'nf' => '-16px -154px',
  'ng' => '-32px -154px',
  'ni' => '-48px -154px',
  'nl' => '-64px -154px',
  'no' => '-80px -154px',
  'np' => '-96px -154px',
  'nr' => '-112px -154px',
  'nu' => '-128px -154px',
  'nz' => '-144px -154px',
  'om' => '-160px -154px',
  'pa' => '-176px -154px',
  'pe' => '-0px -165px',
  'pf' => '-16px -165px',
  'pg' => '-32px -165px',
  'ph' => '-48px -165px',
  'pk' => '-64px -165px',
  'pl' => '-80px -165px',
  'pm' => '-96px -165px',
  'pn' => '-112px -165px',
  'pr' => '-128px -165px',
  'ps' => '-144px -165px',
  'pt' => '-160px -165px',
  'pw' => '-176px -165px',
  'py' => '-0px -176px',
  'qa' => '-16px -176px',
  're' => '-32px -176px',
  'ro' => '-48px -176px',
  'rs' => '-64px -176px',
  'ru' => '-80px -176px',
  'rw' => '-96px -176px',
  'sa' => '-112px -176px',
  'sb' => '-128px -176px',
  'sc' => '-144px -176px',
  'scotland' => '-160px -176px',
  'sd' => '-176px -176px',
  'se' => '-0px -187px',
  'sg' => '-16px -187px',
  'sh' => '-32px -187px',
  'si' => '-48px -187px',
  'sj' => '-64px -187px',
  'sk' => '-80px -187px',
  'sl' => '-96px -187px',
  'sm' => '-112px -187px',
  'sn' => '-128px -187px',
  'so' => '-144px -187px',
  'sr' => '-160px -187px',
  'ss' => '-176px -187px',
  'st' => '-0px -198px',
  'sv' => '-16px -198px',
  'sx' => '-32px -198px',
  'sy' => '-48px -198px',
  'sz' => '-64px -198px',
  'tc' => '-80px -198px',
  'td' => '-96px -198px',
  'tf' => '-112px -198px',
  'tg' => '-128px -198px',
  'th' => '-144px -198px',
  'tj' => '-160px -198px',
  'tk' => '-176px -198px',
  'tl' => '-0px -209px',
  'tm' => '-16px -209px',
  'tn' => '-32px -209px',
  'to' => '-48px -209px',
  'tr' => '-64px -209px',
  'tt' => '-80px -209px',
  'tv' => '-96px -209px',
  'tw' => '-112px -209px',
  'tz' => '-128px -209px',
  'ua' => '-144px -209px',
  'ug' => '-160px -209px',
  'uk' => '-176px -209px',
  'um' => '-0px -220px',
  'un' => '-16px -220px',
  'us' => '-32px -220px',
  'uy' => '-48px -220px',
  'uz' => '-64px -220px',
  'va' => '-80px -220px',
  'vc' => '-96px -220px',
  've' => '-112px -220px',
  'vg' => '-128px -220px',
  'vi' => '-144px -220px',
  'vn' => '-160px -220px',
  'vu' => '-176px -220px',
  'wales' => '-0px -231px',
  'wf' => '-16px -231px',
  'ws' => '-32px -231px',
  'xk' => '-48px -231px',
  'ye' => '-64px -231px',
  'yt' => '-80px -231px',
  'za' => '-96px -231px',
  'zm' => '-112px -231px',
  'zw' => '-128px -231px',
);lib/wfNotification.php000064400000014644150755146450011033 0ustar00<?php
class wfNotification {
	const PRIORITY_LOW = 1500;
	const PRIORITY_DEFAULT = 1000;
	const PRIORITY_HIGH = 500;
	const PRIORITY_HIGH_CRITICAL = 501;
	const PRIORITY_HIGH_WARNING = 502;
	
	protected $_id;
	protected $_category;
	protected $_priority;
	protected $_ctime;
	protected $_html;
	protected $_links;
	
	public static function notifications($since = 0) {
		global $wpdb;
		$table_wfNotifications = wfDB::networkTable('wfNotifications');
		$rawNotifications = $wpdb->get_results($wpdb->prepare("SELECT * FROM {$table_wfNotifications} WHERE `new` = 1 AND `ctime` > %d ORDER BY `priority` ASC, `ctime` DESC", $since), ARRAY_A);
		$notifications = array();
		foreach ($rawNotifications as $raw) {
			$notifications[] = new wfNotification($raw['id'], $raw['priority'], $raw['html'], $raw['category'], $raw['ctime'], json_decode($raw['links'], true), true);
		}
		return $notifications;
	}
	
	public static function getNotificationForID($id) {
		global $wpdb;
		$table_wfNotifications = wfDB::networkTable('wfNotifications');
		$rawNotifications = $wpdb->get_results($wpdb->prepare("SELECT * FROM {$table_wfNotifications} WHERE `id` = %s ORDER BY `priority` ASC, `ctime` DESC", $id), ARRAY_A);
		if (count($rawNotifications) == 1) {
			$raw = $rawNotifications[0];
			return new wfNotification($raw['id'], $raw['priority'], $raw['html'], $raw['category'], $raw['ctime'], json_decode($raw['links'], true), true);
		}
		return null;
	}
	
	public static function getNotificationForCategory($category, $requireNew = true) {
		global $wpdb;
		$table_wfNotifications = wfDB::networkTable('wfNotifications');
		$rawNotifications = $wpdb->get_results($wpdb->prepare("SELECT * FROM {$table_wfNotifications} WHERE " . ($requireNew ? '`new` = 1 AND ' : '') . "`category` = %s ORDER BY `priority` ASC, `ctime` DESC LIMIT 1", $category), ARRAY_A);
		if (count($rawNotifications) == 1) {
			$raw = $rawNotifications[0];
			return new wfNotification($raw['id'], $raw['priority'], $raw['html'], $raw['category'], $raw['ctime'], json_decode($raw['links'], true), true);
		}
		return null;
	}
	
	public static function reconcileNotificationsWithOptions() {
		$notification_updatesNeeded = wfConfig::get('notification_updatesNeeded');
		$notification_securityAlerts = wfConfig::get('notification_securityAlerts') || !wfConfig::p();
		$notification_promotions = wfConfig::get('notification_promotions') || !wfConfig::p();
		$notification_blogHighlights = wfConfig::get('notification_blogHighlights') || !wfConfig::p();
		$notification_productUpdates = wfConfig::get('notification_productUpdates') || !wfConfig::p();
		$notification_scanStatus = wfConfig::get('notification_scanStatus');
		
		$notifications = self::notifications();
		foreach ($notifications as $n) {
			$category = $n->category;
			
			if (preg_match('/^release/i', $category) && !$notification_productUpdates) { $n->markAsRead(); }
			if (preg_match('/^digest/i', $category) && !$notification_blogHighlights) { $n->markAsRead(); }
			if (preg_match('/^alert/i', $category) && !$notification_securityAlerts) { $n->markAsRead(); }
			if (preg_match('/^promo/i', $category) && !$notification_promotions) { $n->markAsRead(); }
			
			switch ($category) {
				case 'wfplugin_scan':
					if (!$notification_scanStatus) { $n->markAsRead(); }
					break;
				case 'wfplugin_updates':
					if (!$notification_updatesNeeded) { $n->markAsRead(); }
					break;
				case 'wfplugin_keyconflict':
				default:
					//Allow it
					break;
			}
		}
	}
	
	public function __construct($id, $priority, $html, $category = null, $ctime = null, $links = null, $memoryOnly = false) {
		if ($id === null) {
			$id = 'site-' . wfUtils::base32_encode(pack('I', wfConfig::atomicInc('lastNotificationID')));
		}
		
		if ($category === null) {
			$category = '';
		}
		
		if ($ctime === null) {
			$ctime = time();
		} 
		
		if (!is_array($links)) {
			$links = array();
		}
		
		$this->_id = $id;
		$this->_category = $category;
		$this->_priority = $priority;
		$this->_ctime = $ctime;
		$this->_html = $html;
		$this->_links = $links;
		
		global $wpdb;
		if (!$memoryOnly) {
			$linksJSON = json_encode($links);
			
			$notification_updatesNeeded = wfConfig::get('notification_updatesNeeded');
			$notification_securityAlerts = wfConfig::get('notification_securityAlerts') || !wfConfig::p();
			$notification_promotions = wfConfig::get('notification_promotions') || !wfConfig::p();
			$notification_blogHighlights = wfConfig::get('notification_blogHighlights') || !wfConfig::p();
			$notification_productUpdates = wfConfig::get('notification_productUpdates') || !wfConfig::p();
			$notification_scanStatus = wfConfig::get('notification_scanStatus');
			
			if (preg_match('/^release/i', $category) && !$notification_productUpdates) { return; }
			if (preg_match('/^digest/i', $category) && !$notification_blogHighlights) { return; }
			if (preg_match('/^alert/i', $category) && !$notification_securityAlerts) { return; }
			if (preg_match('/^promo/i', $category) && !$notification_promotions) { return; }
			
			switch ($category) {
				case 'wfplugin_scan':
					if (!$notification_scanStatus) { return; }
					break;
				case 'wfplugin_updates':
					if (!$notification_updatesNeeded) { return; }
					break;
				case 'wfplugin_keyconflict':
				default:
					//Allow it
					break;
			}
			
			$table_wfNotifications = wfDB::networkTable('wfNotifications');
			if (!empty($category)) {
				$existing = self::getNotificationForCategory($category);
				if ($existing) {
					$wpdb->query($wpdb->prepare("UPDATE {$table_wfNotifications} SET priority = %d, ctime = %d, html = %s, links = %s WHERE id = %s", $priority, $ctime, $html, $linksJSON, $existing->id));
					return;
				}
			}
			
			$wpdb->query($wpdb->prepare("INSERT IGNORE INTO {$table_wfNotifications} (id, category, priority, ctime, html, links) VALUES (%s, %s, %d, %d, %s, %s)", $id, $category, $priority, $ctime, $html, $linksJSON));
		}
	}
	
	public function __get($key){
		if ($key == 'id') { return $this->_id; }
		else if ($key == 'category') { return $this->_category; }
		else if ($key == 'priority') { return $this->_priority; }
		else if ($key == 'ctime') { return $this->_ctime; }
		else if ($key == 'html') { return $this->_html; }
		else if ($key == 'links') { return $this->_links; }
		throw new InvalidArgumentException();
	}
	
	public function markAsRead() {
		global $wpdb;
		$table_wfNotifications = wfDB::networkTable('wfNotifications');
		$wpdb->query($wpdb->prepare("UPDATE {$table_wfNotifications} SET `new` = 0 WHERE `id` = %s", $this->_id));
	}
}
lib/email_genericAlert.php000064400000002616150755146450011617 0ustar00<?php if (!defined('WORDFENCE_VERSION')) { exit; } ?>
<?php printf(
/* translators: 1. Blog name/title. 2. Date. */
		__('This email was sent from your website "%1$s" by the Wordfence plugin at %2$s', 'wordfence'), $blogName, $date); ?>

<?php printf(
/* translators: URL to the WordPress admin panel. */
		__('The Wordfence administrative URL for this site is: %s', 'wordfence'), wfUtils::wpAdminURL('admin.php?page=Wordfence')); ?>

<?php echo $alertMsg; ?>
<?php if($IPMsg){ echo "\n$IPMsg\n"; } ?>

<?php if(! $isPaid){ ?>
	<?php esc_html_e('NOTE: You are using the free version of Wordfence. Upgrade today:
 - Receive real-time Firewall and Scan engine rule updates for protection as threats emerge
 - Real-time IP Blocklist blocks the most malicious IPs from accessing your site
 - Country blocking
 - IP reputation monitoring
 - Schedule scans to run more frequently and at optimal times
 - Access to Premium Support
 - Discounts for multi-year and multi-license purchases

Click here to upgrade to Wordfence Premium:
https://www.wordfence.com/zz1/wordfence-signup/', 'wordfence'); ?>
<?php } ?>

--
<?php printf(
/* translators: URL to the WordPress admin panel. */
		__("To change your alert options for Wordfence, visit:\n%s", 'wordfence'), $myOptionsURL); ?>

<?php printf(
/* translators: URL to the WordPress admin panel. */
		__("To see current Wordfence alerts, visit:\n%s", 'wordfence'), $myHomeURL); ?>


lib/wfModuleController.php000064400000001362150755146450011667 0ustar00<?php

class wfModuleController {
	private $_optionIndexes;
	private $_optionBlocks;
	
	public static function shared() {
		static $_shared = false;
		if ($_shared === false) {
			$_shared = new wfModuleController();
		}
		return $_shared;
	}
	
	public function __construct() {
		$this->_optionIndexes = array();
		$this->_optionBlocks = array();
	}
	
	public function __get($key) {
		switch ($key) {
			case 'optionIndexes':
				return $this->_optionIndexes;
			case 'optionBlocks':
				return $this->_optionBlocks;
		}
		
		throw new OutOfBoundsException('Invalid key');
	}
	
	public function addOptionIndex($target, $text) {
		$this->_optionIndexes[$target] = $text;
	}
	
	public function addOptionBlock($html) {
		$this->_optionBlocks[] = $html;
	}
}lib/wordfenceURLHoover.php000064400000044564150755146450011576 0ustar00<?php
require_once(dirname(__FILE__) . '/wfAPI.php');
require_once(dirname(__FILE__) . '/wfArray.php');
class wordfenceURLHoover {
	private $debug = false;
	public $errorMsg = false;
	private $hostsToAdd = false;
	private $table = '';
	private $apiKey = false;
	private $wordpressVersion = false;
	private $useDB = true;
	private $hostKeys = array();
	private $hostList = array();
	public $currentHooverID = false;
	private $_foundSome = false;
	private $_excludedHosts = array();
	private $api = false;
	private $db = false;
	
	public static function standardExcludedHosts() {
		static $standardExcludedHosts = null;
		if ($standardExcludedHosts !== null) {
			return $standardExcludedHosts;
		}
		
		global $wpdb;
		$excludedHosts = array();
		if (is_multisite()) {
			$blogIDs = $wpdb->get_col("SELECT blog_id FROM {$wpdb->blogs}"); //Can't use wp_get_sites or get_sites because they return empty at 10k sites
			foreach ($blogIDs as $id) {
				$homeURL = get_home_url($id);
				$host = parse_url($homeURL, PHP_URL_HOST);
				if ($host) {
					$excludedHosts[$host] = 1;
				}
				$siteURL = get_site_url($id);
				$host = parse_url($siteURL, PHP_URL_HOST);
				if ($host) {
					$excludedHosts[$host] = 1;
				}
			}
		}
		else {
			$homeURL = wfUtils::wpHomeURL();
			$host = parse_url($homeURL, PHP_URL_HOST);
			if ($host) {
				$excludedHosts[$host] = 1;
			}
			$siteURL = wfUtils::wpSiteURL();
			$host = parse_url($siteURL, PHP_URL_HOST);
			if ($host) {
				$excludedHosts[$host] = 1;
			}
		}
		
		$standardExcludedHosts = array_keys($excludedHosts);
		return $standardExcludedHosts;
	}
	
	public function __sleep() {
		$this->writeHosts();	
		return array('debug', 'errorMsg', 'table', 'apiKey', 'wordpressVersion');
	}
	
	public function __wakeup() {
		$this->hostsToAdd = new wfArray(array('owner', 'host', 'path', 'hostKey'));
		$this->api = new wfAPI($this->apiKey, $this->wordpressVersion);
		$this->db = new wfDB();
	}
	
	public function __construct($apiKey, $wordpressVersion, $db = false, $continuation = false) {
		$this->hostsToAdd = new wfArray(array('owner', 'host', 'path', 'hostKey'));
		$this->apiKey = $apiKey;
		$this->wordpressVersion = $wordpressVersion;
		$this->api = new wfAPI($apiKey, $wordpressVersion);
		if($db){
			$this->db = $db;
		} else {
			$this->db = new wfDB();
		}
		global $wpdb;
		if(isset($wpdb)){
			$this->table = wfDB::networkTable('wfHoover');
		} else {
			$this->table = 'wp_wfHoover';
		}
		
		if (!$continuation) {
			$this->cleanup();
		}
	}
	
	public function cleanup() {
		$this->db->truncate($this->table);
	}
	
	public function hoover($id, $data, $excludedHosts = array()) {
		$this->currentHooverID = $id;
		$this->_foundSome = 0;
		$this->_excludedHosts = $excludedHosts;
		@preg_replace_callback('_((?:(?://)(?:\S+(?::\S*)?@)?(?:(?:(?:[a-z\xa1-\xff0-9.-]+)(?:\.(?:(?:xn--[a-z\xa1-\xff0-9-]+)|[a-z\xa1-\xff]{2,}))))(?::\d{2,5})?)(?:/[a-z0-9\-\_\.~\!\*\(\);\:@&\=\+\$,\?#\[\]%]*)*)_iS', array($this, 'captureURL'), $data);
		$this->writeHosts();
		return $this->_foundSome;
	}
	
	private function dbg($msg) { 
		if ($this->debug) { wordfence::status(4, 'info', $msg); } 
	}
	
	public function captureURL($matches) {
		$id = $this->currentHooverID;
		$url = 'http:' . $matches[0];
		if (!filter_var($url, FILTER_VALIDATE_URL)) {
			return;
		}
		
		$components = parse_url($url);
		if (preg_match('/\.(xn--(?:[a-z0-9-]*)[a-z0-9]+|[a-z\xa1-\xff0-9]{2,})$/i', $components['host'], $tld)) {
			$tld = strtolower($tld[1]);
			if (strpos(wfConfig::get('tldlist', ''), '|' . $tld . '|') === false) {
				return;
			}
		}
		else {
			return;
		}
		
		foreach ($this->_excludedHosts as $h) {
			if (strcasecmp($h, $components['host']) === 0) {
				return;
			}
		}
		
		$this->_foundSome++;
		
		$host = (isset($components['host']) ? $components['host'] : '');
		$path = (isset($components['path']) && !empty($components['path']) ? $components['path'] : '/');
		$hashes = $this->_generateHashes($url);
		foreach ($hashes as $h) {
			$this->hostsToAdd->push(array('owner' => $id, 'host' => $host, 'path' => $path, 'hostKey' => wfUtils::substr($h, 0, 4)));
		}
		
		if($this->hostsToAdd->size() > 1000){ $this->writeHosts(); }
	}
	
	private function writeHosts() {
		if ($this->hostsToAdd->size() < 1) { return; }
		if ($this->useDB) {
			$sql = "INSERT INTO " . $this->table . " (owner, host, path, hostKey) VALUES ";
			while ($elem = $this->hostsToAdd->shift()) {
				//This may be an issue for hyperDB or other abstraction layers, but leaving it for now.
				$sql .= sprintf("('%s', '%s', '%s', '%s'),", 
						$this->db->realEscape($elem['owner']),
						$this->db->realEscape($elem['host']),
						$this->db->realEscape($elem['path']),
						$this->db->realEscape($elem['hostKey'])
								);
			}
			$sql = rtrim($sql, ',');
			$this->db->queryWrite($sql);
			$this->hostsToAdd->collectGarbage();
		}
		else {
			while ($elem = $this->hostsToAdd->shift()) {
				$keys = str_split($elem['hostKey'], 4);
				foreach ($keys as $k) {
					$this->hostKeys[] = $k;
				}
				$this->hostList[] = array(
					'owner' => $elem['owner'],
					'host' => $elem['host'],
					'path' => $elem['path'],
					'hostKey' => $elem['hostKey']
					);
			}
			$this->hostsToAdd->collectGarbage();
		}
	}
	public function getBaddies() {
		wordfence::status(4, 'info', __("Gathering host keys.", 'wordfence'));
		$allHostKeys = '';
		if ($this->useDB) {
			global $wpdb;
			$dbh = $wpdb->dbh;
			$useMySQLi = wfUtils::useMySQLi();
			if ($useMySQLi) { //If direct-access MySQLi is available, we use it to minimize the memory footprint instead of letting it fetch everything into an array first
				wordfence::status(4, 'info', __("Using MySQLi directly.", 'wordfence'));
				$result = $dbh->query("SELECT DISTINCT hostKey FROM {$this->table} ORDER BY hostKey ASC LIMIT 100000"); /* We limit to 100,000 prefixes since more than that cannot be reliably checked within the default max_execution_time */
				if (!is_object($result)) {
					$this->errorMsg = "Unable to query database";
					$this->dbg($this->errorMsg);
					return false;
				}
				while ($row = $result->fetch_assoc()) {
					$allHostKeys .= $row['hostKey'];
				}
			}
			else {
				$q1 = $this->db->querySelect("SELECT DISTINCT hostKey FROM {$this->table} ORDER BY hostKey ASC LIMIT 100000"); /* We limit to 100,000 prefixes since more than that cannot be reliably checked within the default max_execution_time */
				foreach ($q1 as $hRec) {
					$allHostKeys .= $hRec['hostKey'];
				}
			}
		}
		else {
			$allHostKeys = implode('', array_values(array_unique($this->hostKeys)));
		}
		
		/**
		 * Check hash prefixes first. Each one is a 4-byte binary prefix of a SHA-256 hash of the URL. The response will
		 * be a binary list of 4-byte indices; The full URL for each index should be sent in the secondary query to
		 * find the true good/bad status.
		 */
		
		$allCount = wfUtils::strlen($allHostKeys) / 4;
		if ($allCount > 0) {
			if ($this->debug) {
				$this->dbg("Checking {$allCount} hostkeys");
				for ($i = 0; $i < $allCount; $i++) {
					$key = wfUtils::substr($allHostKeys, $i * 4, 4);
					$this->dbg("Checking hostkey: " . bin2hex($key));
				}
			}
			
			wordfence::status(2, 'info', sprintf(/* translators: Number of domains. */ __("Checking %d host keys against Wordfence scanning servers.", 'wordfence'), $allCount));
			$resp = $this->api->binCall('check_host_keys', $allHostKeys);
			wordfence::status(2, 'info', __("Done host key check.", 'wordfence'));
			$this->dbg("Done host key check");

			$badHostKeys = '';
			if ($resp['code'] >= 200 && $resp['code'] <= 299) {
				$this->dbg("Host key response: " . bin2hex($resp['data']));
				$dataLen = wfUtils::strlen($resp['data']);
				if ($dataLen > 0 && $dataLen % 2 == 0) {
					$this->dbg("Checking response indexes");
					for ($i = 0; $i < $dataLen; $i += 2) {
						$idx = wfUtils::array_first(unpack('n', wfUtils::substr($resp['data'], $i, 2)));
						$this->dbg("Checking index {$idx}");
						if ($idx < $allCount) {
							$prefix = wfUtils::substr($allHostKeys, $idx * 4, 4);
							$badHostKeys .= $prefix;
							$this->dbg("Got bad hostkey for record: " . bin2hex($prefix));
						}
						else {
							$this->dbg("Bad allHostKeys index: {$idx}");
							$this->errorMsg = "Bad allHostKeys index: {$idx}";
							return false;
						}
					}
				}
				else if ($dataLen > 0) {
					$this->errorMsg = "Invalid data length received from Wordfence server: " . $dataLen;
					$this->dbg($this->errorMsg);
					return false;
				}
			}
			else {
				$this->errorMsg = "Wordfence server responded with an error. HTTP code " . $resp['code'] . " and data: " . $resp['data'];
				return false;
			}
			
			$badCount = wfUtils::strlen($badHostKeys) / 4;
			if ($badCount > 0) {
				$urlsToCheck = array();
				$totalURLs = 0;
				
				//Reconcile flagged prefixes with their corresponding URLs
				for ($i = 0; $i < $badCount; $i++) {
					$prefix = wfUtils::substr($badHostKeys, $i * 4, 4);
					
					if ($this->useDB) {
						/**
						 * Putting a 10000 limit in here for sites that have a huge number of items with the same URL 
						 * that repeats. This is an edge case. But if the URLs are malicious then presumably the admin 
						 * will fix the malicious URLs and on subsequent scans the items (owners) that are above the 
						 * 10000 limit will appear.
						 */
						$q1 = $this->db->querySelect("SELECT DISTINCT owner, host, path FROM {$this->table} WHERE hostKey = %s LIMIT 10000", $prefix);
						foreach ($q1 as $rec) {
							$url = 'http://' . $rec['host'] . $rec['path'];
							if (!isset($urlsToCheck[$rec['owner']])) {
								$urlsToCheck[$rec['owner']] = array();
							}
							if (!in_array($url, $urlsToCheck[$rec['owner']])) {
								$urlsToCheck[$rec['owner']][] = $url;
								$totalURLs++;
							}
						}
					}
					else {
						foreach ($this->hostList as $rec) {
							$pos = wfUtils::strpos($rec['hostKey'], $prefix);
							if ($pos !== false && $pos % 4 == 0) {
								$url = 'http://' . $rec['host'] . $rec['path'];
								if (!isset($urlsToCheck[$rec['owner']])) {
									$urlsToCheck[$rec['owner']] = array();
								}
								if (!in_array($url, $urlsToCheck[$rec['owner']])) {
									$urlsToCheck[$rec['owner']][] = $url;
									$totalURLs++;
								}
							}
						}
					}
					if ($totalURLs > 10000) { break; }
				}

				if (count($urlsToCheck) > 0) {
					wordfence::status(2, 'info', sprintf(
						/* translators: 1. Number of URLs. 2. Number of files. */
						__('Checking %1$d URLs from %2$d sources.', 'wordfence'),
						$totalURLs,
						sizeof($urlsToCheck)
					));
					$badURLs = $this->api->call('check_bad_urls', array(), array('toCheck' => json_encode($urlsToCheck)));
					wordfence::status(2, 'info', __("Done URL check.", 'wordfence'));
					$this->dbg("Done URL check");
					if (is_array($badURLs) && count($badURLs) > 0) {
						$finalResults = array();
						foreach ($badURLs as $file => $badSiteList) {
							if (!isset($finalResults[$file])) {
								$finalResults[$file] = array();
							}
							foreach ($badSiteList as $badSite) {
								$finalResults[$file][] = array(
									'URL' => $badSite[0],
									'badList' => $badSite[1]
									);
							}
						}
						$this->dbg("Confirmed " . count($badURLs) . " bad URLs");
						return $finalResults;
					}
				}
			}
		}
		
		return array();
	}
	
	protected function _generateHashes($url) {
		//The GSB specification requires generating and sending hash prefixes for a number of additional similar URLs. See: https://developers.google.com/safe-browsing/v4/urls-hashing#suffixprefix-expressions
		
		$canonicalURL = $this->_canonicalizeURL($url);
		
		//Extract the scheme
		$scheme = 'http';
		if (preg_match('~^([a-z]+[a-z0-9+\.\-]*)://(.*)$~i', $canonicalURL, $matches)) {
			$scheme = strtolower($matches[1]);
			$canonicalURL = $matches[2];
		}
		
		//Separate URL and query string
		$query = '';
		if (preg_match('/^([^?]+)(\??.*)/', $canonicalURL, $matches)) {
			$canonicalURL = $matches[1];
			$query = $matches[2];
		}
		
		//Separate host and path
		$path = '';
		preg_match('~^(.*?)(?:(/.*)|$)~', $canonicalURL, $matches);
		$host = $matches[1];
		if (isset($matches[2])) {
			$path = $matches[2];
		}
		
		//Clean host
		$host = $this->_normalizeHost($host);
		
		//Generate hosts list
		$hosts = array();
		if (filter_var(trim($host, '[]'), FILTER_VALIDATE_IP)) {
			$hosts[] = $host;
		}
		else {
			$hostComponents = explode('.', $host);
			
			$numComponents = count($hostComponents) - 7;
			if ($numComponents < 1) {
				$numComponents = 1;
			}
			
			$hosts[] = $host;
			for ($i = $numComponents; $i < count($hostComponents) - 1; $i++) {
				$hosts[] = implode('.', array_slice($hostComponents, $i));
			}
		}
		
		//Generate paths list
		$paths = array('/');
		$pathComponents = array_filter(explode('/', $path));
		
		$numComponents = min(count($pathComponents), 4);
		for ($i = 1; $i < $numComponents; $i++) {
			$paths[] = '/' . implode('/', array_slice($pathComponents, 0, $i)) . '/';
		}
		if ($path != '/') {
			$paths[] = $path;
		}
		if (strlen($query) > 0) {
			$paths[] = $path . '?' . $query;
		}
		$paths = array_reverse($paths); //So we start at the most specific and move to most generic
		
		//Generate hashes
		$hashes = array();
		foreach ($hosts as $h) {
			$hashes[$h] = hash('sha256', $h, true); //WFSB compatibility -- it uses hashes without the path
			foreach ($paths as $p) {
				$key = $h . $p;
				$hashes[$key] = hash('sha256', $key, true);
				break; //We no longer have any use for the extra path variants, so just include the primary one and exit the loop after
			}
		}
		
		return $hashes;
	}
	
	protected function _canonicalizeURL($url) { //Based on https://developers.google.com/safe-browsing/v4/urls-hashing#canonicalization and Google's reference implementation https://github.com/google/safebrowsing/blob/master/urls.go
		//Strip fragment
		$url = $this->_array_first(explode('#', $url));
		
		//Trim space
		$url = trim($url);
		
		//Remove tabs, CR, LF
		$url = preg_replace('/[\t\n\r]/', '', $url);
		
		//Normalize escapes
		$url = $this->_normalizeEscape($url);
		if ($url === false) { return false; }
		
		//Extract the scheme
		$scheme = 'http';
		if (preg_match('~^([a-z]+[a-z0-9+\.\-]*)://(.*)$~i', $url, $matches)) {
			$scheme = strtolower($matches[1]);
			$url = $matches[2];
		}
		
		//Separate URL and query string
		$query = '';
		if (preg_match('/^([^?]+)(\??.*)/', $url, $matches)) {
			$url = $matches[1];
			$query = $matches[2];
		}
		$endsWithSlash = substr($url, -1) == '/';
		
		//Separate host and path
		$path = '';
		preg_match('~^(.*?)(?:(/.*)|$)~', $url, $matches);
		$host = $matches[1];
		if (isset($matches[2])) {
			$path = $matches[2];
		}
		
		//Clean host
		$host = $this->_normalizeHost($host);
		if ($host === false) { return false; }
		
		//Clean path
		$path = preg_replace('~//+~', '/', $path); //Multiple slashes -> single slash
		$path = preg_replace('~(?:^|/)\.(?:$|/)~', '/', $path); //. path components removed
		while (preg_match('~/(?!\.\./)[^/]+/\.\.(?:$|/)~', $path)) { //Resolve ..
			$path = preg_replace('~/(?!\.\./)[^/]+/\.\.(?:$|/)~', '/', $path, 1);
		}
		$path = preg_replace('~(?:^|/)\.\.(?:$|/)~', '/', $path); //Eliminate .. at the beginning
		$path = trim($path, '.');
		$path = preg_replace('/\.\.+/', '.', $path);
		
		if ($path == '.' || $path == '') {
			$path = '/';
		}
		else if ($endsWithSlash && substr($path, -1) != '/') {
			$path .= '/';
		}
		
		return $scheme . '://' . $host . $path . $query;
	}
	
	protected function _normalizeEscape($url) {
		$maxDepth = 1024;
		$i = 0;
		while (preg_match('/%([0-9a-f]{2})/i', $url)) {
			$url = preg_replace_callback('/%([0-9a-f]{2})/i', array($this, '_hex2binCallback'), $url);
			$i++;
			
			if ($i > $maxDepth) {
				return false;
			}
		}
		
		return preg_replace_callback('/[\x00-\x20\x7f-\xff#%]/', array($this, '_bin2hexCallback'), $url);
	}
	
	protected function _hex2binCallback($matches) {
		return wfUtils::hex2bin($matches[1]);
	}

	protected function _bin2hexCallback($matches) {
		return '%' . bin2hex($matches[0]);	
	}
	
	protected function _normalizeHost($host) {
		//Strip username:password
		$host = $this->_array_last(explode('@', $host));
		
		//IPv6 literal
		if (substr($host, 0, 1) == '[') {
			if (strpos($host, ']') === false) { //No closing bracket
				return false;
			}
		}
		
		//Strip port
		$host = preg_replace('/:\d+$/', '', $host);
		
		//Unicode to IDNA
		$u = rawurldecode($host);
		if (preg_match('/[\x81-\xff]/', $u)) { //0x80 is technically Unicode, but the GSB canonicalization doesn't consider it one
			if (function_exists('idn_to_ascii')) { //Some PHP versions don't have this and we don't have a polyfill
				$host = idn_to_ascii($u);
			}
		}
		
		//Remove extra dots
		$host = trim($host, '.');
		$host = preg_replace('/\.\.+/', '.', $host);
		
		//Canonicalize IP addresses
		if ($iphost = $this->_parseIP($host)) {
			return $iphost;
		}
		
		return strtolower($host);
	}
	
	protected function _parseIP($host) {
		// The Windows resolver allows a 4-part dotted decimal IP address to have a
		// space followed by any old rubbish, so long as the total length of the
		// string doesn't get above 15 characters. So, "10.192.95.89 xy" is
		// resolved to 10.192.95.89. If the string length is greater than 15
		// characters, e.g. "10.192.95.89 xy.wildcard.example.com", it will be
		// resolved through DNS.
		if (strlen($host) <= 15) {
			$host = $this->_array_first(explode(' ', $host));
		}
		
		if (!preg_match('/^((?:0x[0-9a-f]+|[0-9\.])+)$/i', $host)) {
			return false;
		}
		
		$parts = explode('.', $host);
		if (count($parts) > 4) {
			return false;
		}
		
		$strings = array();
		foreach ($parts as $i => $p) {
			if ($i == count($parts) - 1) {
				$strings[] = $this->_canonicalNum($p, 5 - count($parts));
			}
			else {
				$strings[] = $this->_canonicalNum($p, 1);
			}
			
			if ($strings[$i] == '') {
				return '';
			}
		}
		
		return implode('.', $strings);
	}
	
	protected function _canonicalNum($part, $n) {
		if ($n <= 0 || $n > 4) {
			return '';
		}
		
		if (preg_match('/^0x(\d+)$/i', $part, $matches)) { //hex
			$part = hexdec($matches[1]);
		}
		else if (preg_match('/^0(\d+)$/i', $part, $matches)) { //octal
			$part = octdec($matches[1]);
		}
		else {
			$part = (int) $part;
		}
		
		$strings = array_fill(0, $n, '');
		for ($i = $n - 1; $i >= 0; $i--) {
			$strings[$i] = (string) ($part & 0xff);
			$part = $part >> 8;
		}
		return implode('.', $strings);
	}
	
	protected function _array_first($array) {
		if (empty($array)) {
			return null;
		}
		
		return $array[0];
	}
	
	protected function _array_last($array) {
		if (empty($array)) {
			return null;
		}
		
		return $array[count($array) - 1];
	}
}lib/wfArray.php000064400000003430150755146450007452 0ustar00<?php
class wfArray {
	private $data = "";
	private $size = 0;
	private $shiftPtr = 0;
	private $keys;
	public function __construct($keys){
		$this->keys = $keys;
	}
	public function push($val){ //associative array with keys that match those given to constructor
		foreach($this->keys as $key){
			$this->data .= pack('N', wfUtils::strlen($val[$key])) . $val[$key];
		}
		$this->size++;
	}
	public function shift(){ //If you alternately call push and shift you must periodically call collectGarbage() or ->data will keep growing
		$arr = array();
		if(wfUtils::strlen($this->data) < 1){ return null; }
		if($this->shiftPtr == wfUtils::strlen($this->data)){ return null; }
		foreach($this->keys as $key){
			$len = unpack('N', wfUtils::substr($this->data, $this->shiftPtr, 4));
			$len = $len[1];
			$arr[$key] = wfUtils::substr($this->data, $this->shiftPtr + 4, $len);
			$this->shiftPtr += 4 + $len;
		}
		if($this->shiftPtr == wfUtils::strlen($this->data)){ //garbage collection
			$this->data = ""; //we don't shorten with substr() because the assignment doubles peak mem
			$this->shiftPtr = 0;
		}
		$this->size--;
		return $arr;
	}
	public function collectGarbage(){ //only call collectGarbage if you're alternating between pushes and shifts and never emptying the array. 
					//If you don't collect garbage then the data that is shifted is never freed
		$this->data = wfUtils::substr($this->data, $this->shiftPtr); //at this point memory usage doubles because of the = assignment (string copy is made), so try not to call collect garbage unless you have to.
		$this->shiftPtr = 0;
	}
	public function zero(){ //Rather call this instead of collect garbage because it's way more mem efficient.
		$this->data = "";
		$this->shiftPtr = 0;
		$this->size = 0;
	}
	public function size(){
		return $this->size;
	}
}lib/wfDB.php000064400000026764150755146450006700 0ustar00<?php
class wfDB {
	public $errorMsg = false;
	
	public static function shared() {
		static $_shared = null;
		if ($_shared === null) {
			$_shared = new wfDB();
		}
		return $_shared;
	}
  
  /**
   * Returns the table prefix for the main site on multisites and the site itself on single site installations.
   *
   * @return string
   */
	public static function networkPrefix() {
		global $wpdb;
		return $wpdb->base_prefix;
	}
  
  /**
   * Returns the table with the site (single site installations) or network (multisite) prefix added.
   *
   * @param string $table
   * @param bool $applyCaseConversion Whether or not to convert the table case to what is actually in use.
   * @return string
   */
	public static function networkTable($table, $applyCaseConversion = true) {
		if (wfSchema::usingLowercase() && $applyCaseConversion) {
			$table = strtolower($table);
		}
		return self::networkPrefix() . $table;
	}
  
  /**
   * Returns the table prefix for the given blog ID. On single site installations, this will be equivalent to wfDB::networkPrefix().
   *
   * @param int $blogID
   * @return string
   */
	public static function blogPrefix($blogID) {
	  global $wpdb;
	  return $wpdb->get_blog_prefix($blogID);
	}
  
  /**
   * Returns the table with the site (single site installations) or blog-specific (multisite) prefix added.
   *
   * @param string $table
   * @param bool $applyCaseConversion Whether or not to convert the table case to what is actually in use.
   * @return string
   */
	public static function blogTable($table, $blogID, $applyCaseConversion = true) {
		if (wfSchema::usingLowercase() && $applyCaseConversion) {
			$table = strtolower($table);
		}
	  	return self::blogPrefix($blogID) . $table;
	}
	
	/**
	 * Converts the given value into a MySQL hex string. This is needed because WordPress will run an unnecessary `SHOW
	 * FULL COLUMNS` on every hit where we use non-ASCII data (e.g., packed binary-encoded IP addresses) in queries.
	 * 
	 * @param string $binary
	 * @return string
	 */
	public static function binaryValueToSQLHex($binary) {
		return sprintf("X'%s'", bin2hex($binary));
	}
	
	public function querySingle(){
		global $wpdb;
		if(func_num_args() > 1){
			$args = func_get_args();
			return $wpdb->get_var(call_user_func_array(array($wpdb, 'prepare'), $args));
		} else {
			return $wpdb->get_var(func_get_arg(0));
		}
	}
	public function querySingleRec(){ //queryInSprintfFormat, arg1, arg2, ... :: Returns a single assoc-array or null if nothing found.
		global $wpdb;
		if(func_num_args() > 1){
			$args = func_get_args();
			return $wpdb->get_row(call_user_func_array(array($wpdb, 'prepare'), $args), ARRAY_A);
		} else {
			return $wpdb->get_row(func_get_arg(0), ARRAY_A);
		}
	}
	public function queryWrite(){
		global $wpdb;
		if(func_num_args() > 1){
			$args = func_get_args();
			return $wpdb->query(call_user_func_array(array($wpdb, 'prepare'), $args));
		} else {
			return $wpdb->query(func_get_arg(0));
		}
	}
	public function queryWriteArray($query, $array) {
		global $wpdb;
		return $wpdb->query($wpdb->prepare($query, $array));
	}
	public function flush(){ //Clear cache
		global $wpdb;
		$wpdb->flush();
	}
	public function querySelect(){ //sprintfString, arguments :: always returns array() and will be empty if no results.
		global $wpdb;
		if(func_num_args() > 1){
			$args = func_get_args();
			return $wpdb->get_results(call_user_func_array(array($wpdb, 'prepare'), $args), ARRAY_A);
		} else {
			return $wpdb->get_results(func_get_arg(0), ARRAY_A);
		}
	}
	public function queryWriteIgnoreError(){ //sprintfString, arguments
		global $wpdb;
		$oldSuppress = $wpdb->suppress_errors(true);
		$args = func_get_args();
		call_user_func_array(array($this, 'queryWrite'), $args);
		$wpdb->suppress_errors($oldSuppress);
	}
	public function columnExists($table, $col){
		$table = wfDB::networkTable($table);
		$q = $this->querySelect("desc $table");
		foreach($q as $row){
			if($row['Field'] == $col){
				return true;
			}
		}
		return false;
	}
	public function dropColumn($table, $col){
		$table = wfDB::networkTable($table);
		$this->queryWrite("alter table $table drop column $col");
	}
	public function createKeyIfNotExists($table, $col, $keyName){
		$table = wfDB::networkTable($table);
		
		$exists = $this->querySingle(<<<SQL
SELECT TABLE_NAME FROM information_schema.TABLES
WHERE TABLE_SCHEMA=DATABASE()
AND TABLE_NAME='%s'
SQL
			, $table);
		$keyFound = false;
		if($exists){
			$q = $this->querySelect("show keys from $table");
			foreach($q as $row){
				if($row['Key_name'] == $keyName){
					$keyFound = true;
				}
			}
		}
		if(! $keyFound){
			$this->queryWrite("alter table $table add KEY $keyName($col)");
		}
	}
	public function getMaxAllowedPacketBytes(){
		$rec = $this->querySingleRec("show variables like 'max_allowed_packet'");
		return intval($rec['Value']);
	}
	public function getMaxLongDataSizeBytes() {
		$rec = $this->querySingleRec("show variables like 'max_long_data_size'");
		return $rec['Value'];
	}
	public function truncate($table){ //Ensures everything is deleted if user is using MySQL >= 5.1.16 and does not have "drop" privileges
		$this->queryWrite("truncate table $table");
		$this->queryWrite("delete from $table");
	}
	public function getLastError(){
		global $wpdb;
		return $wpdb->last_error;
	}
	public function realEscape($str){
		global $wpdb;
		return $wpdb->_real_escape($str);
	}
	public function insert($table, $columns, $rows, $updateOnDuplicate) {
		global $wpdb;
		$rowCount = count($rows);
		if ($rowCount === 0)
			return;
		$columnClause = implode(',', array_keys($columns));
		$valuesClause = ltrim(str_repeat(',(' . implode(',', $columns) . ')', $rowCount), ',');
		if ($updateOnDuplicate) {
			$duplicateClause = ' ON DUPLICATE KEY UPDATE ' . implode(',', array_map(function($column) {
				return "{$column} = VALUES({$column})";
			}, $updateOnDuplicate));
		}
		else {
			$duplicateClause = null;
		}
		$parameters = [];
		foreach ($rows as $row) {
			foreach ($row as $value) {
				$parameters[] = $value;
			}
		}
		$query = $wpdb->prepare("INSERT INTO {$table} ({$columnClause}) VALUES {$valuesClause}{$duplicateClause}", $parameters);
		$result = $wpdb->query($query);
		if ($result === false)
			throw new RuntimeException("Insert query failed: {$query}");
	}
	private static function getBindingType($value, $override = null) {
		if ($override !== null)
			return $override;
		if (is_int($value)) {
			return '%d';
		}
		else {
			return '%s';
		}
	}
	private static function buildWhereClause($conditions, $bindingOverrides, &$parameters) {
		$whereExpressions = [];
		foreach ($conditions as $column => $value) {
			$override = array_key_exists($column, $bindingOverrides) ? $bindingOverrides[$column] : null;
			if ($override === null) {
				$getBinding = [self::class, 'getBindingType'];
			}
			else {
				$getBinding = function($value) use ($override) { return $override; };
			}
			if (is_array($value)) {
				$whereExpressions[] = "{$column} IN (" . implode(',', array_map($getBinding, $value)) . ')';
				$parameters = array_merge($parameters, $value);
			}
			else {
				$whereExpressions[] = "{$column} = " . $getBinding($value);
				$parameters[] = $value;
			}
		}
		return implode(' AND ', $whereExpressions);
	}
	public function update($table, $set, $conditions, $bindingOverrides = []) {
		global $wpdb;
		$setExpressions = [];
		$parameters = [];
		foreach ($set as $column => $value) {
			if (is_array($value)) {
				$parameters[] = $value[1];
				$value = $value[0];
			}
			$setExpressions[] = "{$column} = {$value}";
		}
		$whereClause = self::buildWhereClause($conditions, $bindingOverrides, $parameters);
		$setClause = implode(',', $setExpressions);
		$query = $wpdb->prepare("UPDATE {$table} SET {$setClause} WHERE {$whereClause}", $parameters);
		$result = $wpdb->query($query);
		if ($result === false)
			throw new RuntimeException("UPDATE query failed: {$query}");
	}
	public function select($table, $columns, $conditions, $bindingOverrides = [], $limit = 500) {
		global $wpdb;
		$parameters = [];
		$selectClause = implode(',', $columns);
		$whereClause = Self::buildWhereClause($conditions, $bindingOverrides, $parameters);
		$limitClause = $limit === null ? '' : " LIMIT {$limit}";
		$query = $wpdb->prepare("SELECT {$selectClause} FROM {$table} WHERE {$whereClause}{$limitClause}", $parameters);
		if (count($columns) == 1) {
			$result = $wpdb->get_col($query);
		}
		else {
			$result = $wpdb->get_results($query, ARRAY_N);
		}
		if (!is_array($result))
			throw new RuntimeException("SELECT query failed: {$query}");
		return $result;
	}
	public function selectAll($table, $columns, $conditions, $bindingOverrides = []) {
		return $this->select($table, $columns, $conditions, $bindingOverrides, null);
	}
}

abstract class wfModel {

	private $data;
	private $db;
	private $dirty = false;

	/**
	 * Column name of the primary key field.
	 *
	 * @return string
	 */
	abstract public function getIDColumn();

	/**
	 * Table name.
	 *
	 * @return mixed
	 */
	abstract public function getTable();

	/**
	 * Checks if this is a valid column in the table before setting data on the model.
	 *
	 * @param string $column
	 * @return boolean
	 */
	abstract public function hasColumn($column);

	/**
	 * wfModel constructor.
	 * @param array|int|string $data
	 */
	public function __construct($data = array()) {
		if (is_array($data) || is_object($data)) {
			$this->setData($data);
		} else if (is_numeric($data)) {
			$this->fetchByID($data);
		}
	}

	public function fetchByID($id) {
		$id = absint($id);
		$data = $this->getDB()->get_row($this->getDB()->prepare('SELECT * FROM ' . $this->getTable() .
				' WHERE ' . $this->getIDColumn() . ' = %d', $id));
		if ($data) {
			$this->setData($data);
			return true;
		}
		return false;
	}

	/**
	 * @return bool
	 */
	public function save() {
		if (!$this->dirty) {
			return false;
		}
		$this->dirty = ($this->getPrimaryKey() ? $this->update() : $this->insert()) === false;
		return !$this->dirty;
	}

	/**
	 * @return false|int
	 */
	public function insert() {
		$data = $this->getData();
		unset($data[$this->getPrimaryKey()]);
		$rowsAffected = $this->getDB()->insert($this->getTable(), $data);
		$this->setPrimaryKey($this->getDB()->insert_id);
		return $rowsAffected;
	}

	/**
	 * @return false|int
	 */
	public function update() {
		return $this->getDB()->update($this->getTable(), $this->getData(), array(
			$this->getIDColumn() => $this->getPrimaryKey(),
		));
	}

	/**
	 * @param $name string
	 * @return mixed
	 */
	public function __get($name) {
		if (!$this->hasColumn($name)) {
			return null;
		}
		return array_key_exists($name, $this->data) ? $this->data[$name] : null;
	}

	/**
	 * @param $name string
	 * @param $value mixed
	 */
	public function __set($name, $value) {
		if (!$this->hasColumn($name)) {
			return;
		}
		$this->data[$name] = $value;
		$this->dirty = true;
	}

	/**
	 * @return array
	 */
	public function getData() {
		return $this->data;
	}

	/**
	 * @param array $data
	 * @param bool $flagDirty
	 */
	public function setData($data, $flagDirty = true) {
		$this->data = array();
		foreach ($data as $column => $value) {
			if ($this->hasColumn($column)) {
				$this->data[$column] = $value;
				$this->dirty = (bool) $flagDirty;
			}
		}
	}

	/**
	 * @return wpdb
	 */
	public function getDB() {
		if ($this->db === null) {
			global $wpdb;
			$this->db = $wpdb;
		}
		return $this->db;
	}

	/**
	 * @param wpdb $db
	 */
	public function setDB($db) {
		$this->db = $db;
	}

	/**
	 * @return int
	 */
	public function getPrimaryKey() {
		return $this->{$this->getIDColumn()};
	}

	/**
	 * @param int $value
	 */
	public function setPrimaryKey($value) {
		$this->{$this->getIDColumn()} = $value;
	}
}lib/wfStyle.php000064400000000435150755146450007476 0ustar00<?php
class wfStyle {
	/**
	 * Returns the classes for the main content body of the page, adjusting for the paid status.
	 * 
	 * @return string
	 */
	public static function contentClasses() {
		if (wfConfig::get('isPaid')) {
			return 'wf-col-xs-12';
		}
		return 'wf-col-xs-12';
	}
}lib/wfBrowscapCache.php000064400001001522150755146450011101 0ustar00<?php
$source_version='6000030';
$cache_version='2.0b';
$properties=array(
	'browser_name',
	'browser_name_regex',
	'browser_name_pattern',
	'Parent',
	'Comment',
	'Browser',
	'Version',
	'Platform',
	'isMobileDevice',
	'isTablet',
	'Device_Type'
);
$browsers=array(
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3118;}',
	'a:1:{i:3;i:3112;}',
	'a:1:{i:3;i:3110;}',
	'a:2:{i:3;i:3117;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3114;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3064;i:10;s:12:"Mobile Phone";}',
	'a:1:{i:3;i:3096;}',
	'a:2:{i:3;i:3175;i:7;s:5:"Win32";}',
	'a:3:{i:3;i:3281;i:7;s:10:"Xbox OS 10";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3280;i:7;s:10:"Xbox OS 10";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3275;i:7;s:10:"Xbox OS 10";i:10;s:9:"TV Device";}',
	'a:1:{i:3;i:3114;}',
	'a:3:{i:3;i:3274;i:7;s:10:"Xbox OS 10";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3283;i:7;s:10:"Xbox OS 10";i:10;s:9:"TV Device";}',
	'a:1:{i:3;i:3117;}',
	'a:3:{i:3;i:3175;i:7;s:10:"Xbox OS 10";i:10;s:9:"TV Device";}',
	'a:1:{i:3;i:3064;}',
	'a:1:{i:3;i:3096;}',
	'a:2:{i:3;i:3247;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3226;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3248;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3223;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3231;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3229;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3242;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3269;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3235;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3252;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3251;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3237;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3254;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3270;i:10;s:12:"Mobile Phone";}',
	'a:3:{i:3;i:3077;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:2:{i:3;i:3285;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3279;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3277;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3282;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3276;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3278;i:10;s:12:"Mobile Phone";}',
	'a:1:{i:3;i:3096;}',
	'a:1:{i:3;i:3242;}',
	'a:1:{i:3;i:3269;}',
	'a:1:{i:3;i:3270;}',
	'a:1:{i:3;i:3223;}',
	'a:1:{i:3;i:3248;}',
	'a:1:{i:3;i:3247;}',
	'a:1:{i:3;i:3251;}',
	'a:1:{i:3;i:3254;}',
	'a:1:{i:3;i:3252;}',
	'a:1:{i:3;i:3237;}',
	'a:1:{i:3;i:3226;}',
	'a:1:{i:3;i:3231;}',
	'a:1:{i:3;i:3235;}',
	'a:1:{i:3;i:3229;}',
	'a:1:{i:3;i:3096;}',
	'a:1:{i:3;i:3279;}',
	'a:1:{i:3;i:3277;}',
	'a:1:{i:3;i:3282;}',
	'a:1:{i:3;i:3276;}',
	'a:1:{i:3;i:3278;}',
	'a:1:{i:3;i:3285;}',
	'a:2:{i:3;i:3293;i:10;s:12:"Mobile Phone";}',
	'a:4:{i:3;i:3121;i:7;s:24:"Xbox OS 10 (Mobile View)";i:8;s:5:"false";i:10;s:9:"TV Device";}',
	'a:4:{i:3;i:3122;i:7;s:24:"Xbox OS 10 (Mobile View)";i:8;s:5:"false";i:10;s:9:"TV Device";}',
	'a:4:{i:3;i:3124;i:7;s:24:"Xbox OS 10 (Mobile View)";i:8;s:5:"false";i:10;s:9:"TV Device";}',
	'a:4:{i:3;i:3127;i:7;s:24:"Xbox OS 10 (Mobile View)";i:8;s:5:"false";i:10;s:9:"TV Device";}',
	'a:4:{i:3;i:3126;i:7;s:24:"Xbox OS 10 (Mobile View)";i:8;s:5:"false";i:10;s:9:"TV Device";}',
	'a:2:{i:3;i:3095;i:6;s:3:"5.2";}',
	'a:1:{i:3;i:3096;}',
	'a:3:{i:3;i:3096;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:1:{i:3;i:3095;}',
	'a:1:{i:3;i:3254;}',
	'a:1:{i:3;i:3231;}',
	'a:1:{i:3;i:3237;}',
	'a:1:{i:3;i:3293;}',
	'a:1:{i:3;i:3270;}',
	'a:1:{i:3;i:3248;}',
	'a:1:{i:3;i:3235;}',
	'a:1:{i:3;i:3223;}',
	'a:1:{i:3;i:3242;}',
	'a:1:{i:3;i:3226;}',
	'a:1:{i:3;i:3229;}',
	'a:1:{i:3;i:3252;}',
	'a:1:{i:3;i:3251;}',
	'a:1:{i:3;i:3269;}',
	'a:1:{i:3;i:3247;}',
	'a:3:{i:3;i:3096;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:1:{i:3;i:3278;}',
	'a:1:{i:3;i:3276;}',
	'a:1:{i:3;i:3282;}',
	'a:1:{i:3;i:3277;}',
	'a:1:{i:3;i:3279;}',
	'a:1:{i:3;i:3285;}',
	'a:1:{i:3;i:3096;}',
	'a:1:{i:3;i:3096;}',
	'a:4:{i:3;i:3092;i:7;s:24:"Xbox OS 10 (Mobile View)";i:8;s:5:"false";i:10;s:9:"TV Device";}',
	'a:1:{i:3;i:3077;}',
	'a:1:{i:3;i:3096;}',
	'a:2:{i:3;i:3104;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3108;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3106;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3102;i:7;s:5:"Win10";}',
	'a:1:{i:3;i:3127;}',
	'a:1:{i:3;i:3126;}',
	'a:1:{i:3;i:3122;}',
	'a:1:{i:3;i:3121;}',
	'a:1:{i:3;i:3077;}',
	'a:1:{i:3;i:3124;}',
	'a:1:{i:3;i:3293;}',
	'a:3:{i:3;i:3231;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3229;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:2:{i:3;i:3115;i:10;s:12:"Mobile Phone";}',
	'a:3:{i:3;i:3270;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3242;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:2:{i:3;i:3113;i:10;s:12:"Mobile Phone";}',
	'a:3:{i:3;i:3248;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3252;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3235;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3223;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3254;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3237;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3247;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3226;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:2:{i:3;i:3116;i:10;s:12:"Mobile Phone";}',
	'a:3:{i:3;i:3269;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3251;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:2:{i:3;i:3111;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3102;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3102;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3102;i:7;s:6:"Win8.1";}',
	'a:1:{i:3;i:3077;}',
	'a:2:{i:3;i:3078;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3088;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3085;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3080;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3098;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3089;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3101;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3079;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3076;i:10;s:12:"Mobile Phone";}',
	'a:3:{i:3;i:3278;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3279;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:1:{i:3;i:3106;}',
	'a:2:{i:3;i:3081;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3094;i:10;s:12:"Mobile Phone";}',
	'a:1:{i:3;i:3108;}',
	'a:3:{i:3;i:3285;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3276;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3282;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3277;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:1:{i:3;i:3104;}',
	'a:2:{i:3;i:3091;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3090;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3074;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3097;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3082;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3072;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3083;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3070;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3086;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3069;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3100;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3071;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3084;i:10;s:12:"Mobile Phone";}',
	'a:1:{i:3;i:3122;}',
	'a:1:{i:3;i:3126;}',
	'a:1:{i:3;i:3121;}',
	'a:1:{i:3;i:3123;}',
	'a:1:{i:3;i:3127;}',
	'a:1:{i:3;i:3124;}',
	'a:1:{i:3;i:3111;}',
	'a:1:{i:3;i:3115;}',
	'a:1:{i:3;i:3113;}',
	'a:1:{i:3;i:3116;}',
	'a:2:{i:3;i:3027;i:10;s:12:"Mobile Phone";}',
	'a:1:{i:3;i:3123;}',
	'a:1:{i:3;i:3072;}',
	'a:1:{i:3;i:3086;}',
	'a:1:{i:3;i:3069;}',
	'a:1:{i:3;i:3090;}',
	'a:1:{i:3;i:3084;}',
	'a:1:{i:3;i:3071;}',
	'a:1:{i:3;i:3082;}',
	'a:1:{i:3;i:3070;}',
	'a:1:{i:3;i:3088;}',
	'a:1:{i:3;i:3098;}',
	'a:1:{i:3;i:3089;}',
	'a:1:{i:3;i:3078;}',
	'a:1:{i:3;i:3081;}',
	'a:1:{i:3;i:3101;}',
	'a:1:{i:3;i:3085;}',
	'a:1:{i:3;i:3076;}',
	'a:1:{i:3;i:3080;}',
	'a:1:{i:3;i:3079;}',
	'a:1:{i:3;i:3083;}',
	'a:1:{i:3;i:3097;}',
	'a:1:{i:3;i:3074;}',
	'a:1:{i:3;i:3094;}',
	'a:1:{i:3;i:3100;}',
	'a:1:{i:3;i:3091;}',
	'a:2:{i:3;i:3033;i:10;s:12:"Mobile Phone";}',
	'a:3:{i:3;i:3293;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:1:{i:3;i:3235;}',
	'a:1:{i:3;i:3231;}',
	'a:1:{i:3;i:3229;}',
	'a:1:{i:3;i:3223;}',
	'a:1:{i:3;i:3226;}',
	'a:1:{i:3;i:3237;}',
	'a:1:{i:3;i:3251;}',
	'a:1:{i:3;i:3252;}',
	'a:1:{i:3;i:3248;}',
	'a:1:{i:3;i:3254;}',
	'a:1:{i:3;i:3270;}',
	'a:1:{i:3;i:3247;}',
	'a:1:{i:3;i:3269;}',
	'a:1:{i:3;i:3242;}',
	'a:1:{i:3;i:3085;}',
	'a:1:{i:3;i:3083;}',
	'a:1:{i:3;i:3088;}',
	'a:1:{i:3;i:3071;}',
	'a:1:{i:3;i:3069;}',
	'a:1:{i:3;i:3076;}',
	'a:1:{i:3;i:3094;}',
	'a:1:{i:3;i:3086;}',
	'a:1:{i:3;i:3027;}',
	'a:1:{i:3;i:3079;}',
	'a:1:{i:3;i:3070;}',
	'a:1:{i:3;i:3082;}',
	'a:1:{i:3;i:3101;}',
	'a:1:{i:3;i:3074;}',
	'a:1:{i:3;i:3078;}',
	'a:1:{i:3;i:3123;}',
	'a:1:{i:3;i:3091;}',
	'a:1:{i:3;i:3084;}',
	'a:1:{i:3;i:3090;}',
	'a:1:{i:3;i:3080;}',
	'a:1:{i:3;i:3097;}',
	'a:1:{i:3;i:3089;}',
	'a:1:{i:3;i:3100;}',
	'a:1:{i:3;i:3081;}',
	'a:1:{i:3;i:3072;}',
	'a:1:{i:3;i:3098;}',
	'a:1:{i:3;i:3278;}',
	'a:1:{i:3;i:3276;}',
	'a:1:{i:3;i:3279;}',
	'a:1:{i:3;i:3106;}',
	'a:1:{i:3;i:3108;}',
	'a:1:{i:3;i:3285;}',
	'a:1:{i:3;i:3104;}',
	'a:1:{i:3;i:3277;}',
	'a:1:{i:3;i:3282;}',
	'a:1:{i:3;i:3033;}',
	'a:3:{i:3;i:3288;i:4;s:35:"IE 8.0 in IE 7.0 Compatibility Mode";i:7;s:8:"WinVista";}',
	'a:3:{i:3;i:3288;i:4;s:35:"IE 8.0 in IE 7.0 Compatibility Mode";i:7;s:4:"Win7";}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3113;}',
	'a:1:{i:3;i:3115;}',
	'a:1:{i:3;i:3111;}',
	'a:1:{i:3;i:3116;}',
	'a:1:{i:3;i:3144;}',
	'a:3:{i:3;i:3288;i:4;s:35:"IE 8.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:1:{i:3;i:3036;}',
	'a:1:{i:3;i:3095;}',
	'a:1:{i:3;i:3031;}',
	'a:1:{i:3;i:3051;}',
	'a:1:{i:3;i:3063;}',
	'a:1:{i:3;i:3050;}',
	'a:1:{i:3;i:3060;}',
	'a:1:{i:3;i:3054;}',
	'a:1:{i:3;i:3053;}',
	'a:1:{i:3;i:3055;}',
	'a:1:{i:3;i:3067;}',
	'a:1:{i:3;i:3038;}',
	'a:1:{i:3;i:3066;}',
	'a:1:{i:3;i:3037;}',
	'a:1:{i:3;i:3056;}',
	'a:1:{i:3;i:3061;}',
	'a:1:{i:3;i:3049;}',
	'a:1:{i:3;i:3039;}',
	'a:1:{i:3;i:3052;}',
	'a:1:{i:3;i:3062;}',
	'a:1:{i:3;i:3040;}',
	'a:1:{i:3;i:3057;}',
	'a:1:{i:3;i:3059;}',
	'a:1:{i:3;i:3041;}',
	'a:1:{i:3;i:3042;}',
	'a:1:{i:3;i:3043;}',
	'a:1:{i:3;i:3047;}',
	'a:1:{i:3;i:3046;}',
	'a:1:{i:3;i:3045;}',
	'a:1:{i:3;i:3058;}',
	'a:1:{i:3;i:3048;}',
	'a:1:{i:3;i:3044;}',
	'a:2:{i:3;i:3102;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3219;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3213;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3205;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3206;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3203;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3197;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3222;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3214;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3195;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3196;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3216;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3201;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3209;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3208;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3198;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3199;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3215;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3211;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3212;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3207;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3210;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3204;i:7;s:5:"Win10";}',
	'a:1:{i:3;i:3293;}',
	'a:3:{i:3;i:3130;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3288;i:4;s:35:"IE 8.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:2:{i:3;i:3197;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3196;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3213;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3197;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3197;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3196;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3213;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3214;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3197;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3214;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3198;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3216;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3216;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3216;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3198;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3216;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3198;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3198;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3213;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3213;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3214;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3214;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3204;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3209;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3209;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3209;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3199;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3199;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3199;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3199;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3209;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3210;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3208;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3208;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3208;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3210;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3210;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3210;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3215;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3215;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3212;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3212;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3211;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3211;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3211;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3211;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3212;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3212;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3215;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3215;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3201;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3201;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3201;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3201;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3208;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3207;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3203;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3222;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3203;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3203;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3195;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3203;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3222;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3222;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3206;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3196;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3206;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3206;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3222;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3206;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3195;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3195;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3204;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3204;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3204;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3207;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3207;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3207;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3205;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3205;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3219;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3195;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3219;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3219;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3205;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3205;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3196;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3219;i:7;s:5:"Win10";}',
	'a:1:{i:3;i:3110;}',
	'a:1:{i:3;i:3112;}',
	'a:1:{i:3;i:3118;}',
	'a:1:{i:3;i:3124;}',
	'a:1:{i:3;i:3127;}',
	'a:1:{i:3;i:3121;}',
	'a:1:{i:3;i:3122;}',
	'a:1:{i:3;i:3126;}',
	'a:1:{i:3;i:3027;}',
	'a:3:{i:3;i:3106;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:1:{i:3;i:3033;}',
	'a:3:{i:3;i:3108;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3104;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:1:{i:3;i:3077;}',
	'a:3:{i:3;i:3077;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:1:{i:3;i:2918;}',
	'a:3:{i:3;i:3111;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3115;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3116;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3113;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3123;}',
	'a:3:{i:3;i:3074;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3094;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3091;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3100;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3097;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3088;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3101;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3098;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3083;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3082;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3071;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3069;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3086;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3089;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3078;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3076;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3072;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3084;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3079;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3085;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3080;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3081;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3090;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3070;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:2:{i:3;i:3033;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3211;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3216;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3212;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3205;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3213;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3203;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3198;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3219;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3206;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3201;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3215;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3208;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3207;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3196;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3204;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3210;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3197;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3214;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3199;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3209;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3222;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3195;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3139;i:10;s:9:"TV Device";}',
	'a:2:{i:3;i:3142;i:10;s:9:"TV Device";}',
	'a:2:{i:3;i:3140;i:10;s:9:"TV Device";}',
	'a:2:{i:3;i:3136;i:10;s:9:"TV Device";}',
	'a:2:{i:3;i:3143;i:10;s:9:"TV Device";}',
	'a:2:{i:3;i:3148;i:10;s:9:"TV Device";}',
	'a:2:{i:3;i:3146;i:10;s:9:"TV Device";}',
	'a:2:{i:3;i:3145;i:10;s:9:"TV Device";}',
	'a:2:{i:3;i:3151;i:10;s:9:"TV Device";}',
	'a:2:{i:3;i:3135;i:10;s:9:"TV Device";}',
	'a:2:{i:3;i:3134;i:10;s:9:"TV Device";}',
	'a:2:{i:3;i:3153;i:10;s:9:"TV Device";}',
	'a:2:{i:3;i:3150;i:10;s:9:"TV Device";}',
	'a:2:{i:3;i:3133;i:10;s:9:"TV Device";}',
	'a:2:{i:3;i:3281;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3147;i:10;s:9:"TV Device";}',
	'a:2:{i:3;i:3138;i:10;s:9:"TV Device";}',
	'a:2:{i:3;i:3283;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3141;i:10;s:9:"TV Device";}',
	'a:2:{i:3;i:3132;i:10;s:9:"TV Device";}',
	'a:2:{i:3;i:3152;i:10;s:9:"TV Device";}',
	'a:2:{i:3;i:3137;i:10;s:9:"TV Device";}',
	'a:2:{i:3;i:3280;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3157;i:10;s:9:"TV Device";}',
	'a:2:{i:3;i:3158;i:10;s:9:"TV Device";}',
	'a:2:{i:3;i:3154;i:10;s:9:"TV Device";}',
	'a:2:{i:3;i:3274;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3149;i:10;s:9:"TV Device";}',
	'a:2:{i:3;i:3156;i:10;s:9:"TV Device";}',
	'a:2:{i:3;i:3155;i:10;s:9:"TV Device";}',
	'a:2:{i:3;i:3130;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3275;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3159;i:10;s:9:"TV Device";}',
	'a:2:{i:3;i:3033;i:10;s:12:"Mobile Phone";}',
	'a:3:{i:3;i:3288;i:4;s:35:"IE 8.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3214;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3201;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3201;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3201;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3201;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3215;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3215;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3215;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3215;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3212;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3214;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3204;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3212;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3211;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3211;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3211;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3207;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3205;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3211;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3212;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3212;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3216;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3216;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3207;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3204;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3216;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3216;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3214;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3199;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3196;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3197;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3197;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3207;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3197;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3197;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3210;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3196;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3208;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3208;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3208;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3196;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3208;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3196;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3205;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3209;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3207;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3199;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3199;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3199;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3204;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3209;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3209;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3210;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3210;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3210;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3204;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3209;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3214;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3219;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3198;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3205;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3198;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3198;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3195;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3222;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3195;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3198;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3203;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3222;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3205;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3222;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3203;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3222;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3203;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3203;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3195;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3195;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3219;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3213;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3213;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3213;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3206;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3206;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3206;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3219;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3213;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3206;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3219;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3284;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3130;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3280;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3130;i:7;s:5:"Win10";}',
	'a:1:{i:3;i:3092;}',
	'a:2:{i:3;i:3130;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3275;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3274;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3283;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3281;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3130;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3130;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3021;i:10;s:12:"Mobile Phone";}',
	'a:1:{i:3;i:3081;}',
	'a:1:{i:3;i:3079;}',
	'a:1:{i:3;i:3085;}',
	'a:1:{i:3;i:3100;}',
	'a:1:{i:3;i:3094;}',
	'a:1:{i:3;i:3072;}',
	'a:1:{i:3;i:3074;}',
	'a:1:{i:3;i:3090;}',
	'a:1:{i:3;i:3084;}',
	'a:1:{i:3;i:3097;}',
	'a:1:{i:3;i:3080;}',
	'a:1:{i:3;i:3076;}',
	'a:1:{i:3;i:3078;}',
	'a:3:{i:3;i:3027;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:1:{i:3;i:3082;}',
	'a:1:{i:3;i:3086;}',
	'a:1:{i:3;i:3070;}',
	'a:1:{i:3;i:3069;}',
	'a:1:{i:3;i:3083;}',
	'a:1:{i:3;i:3088;}',
	'a:1:{i:3;i:3089;}',
	'a:1:{i:3;i:3091;}',
	'a:1:{i:3;i:3098;}',
	'a:1:{i:3;i:3101;}',
	'a:1:{i:3;i:3071;}',
	'a:1:{i:3;i:3108;}',
	'a:1:{i:3;i:3106;}',
	'a:1:{i:3;i:3104;}',
	'a:3:{i:3;i:3033;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:1:{i:3;i:3033;}',
	'a:1:{i:3;i:3008;}',
	'a:1:{i:3;i:2994;}',
	'a:1:{i:3;i:2995;}',
	'a:1:{i:3;i:2993;}',
	'a:1:{i:3;i:2996;}',
	'a:1:{i:3;i:3011;}',
	'a:1:{i:3;i:3002;}',
	'a:1:{i:3;i:3009;}',
	'a:1:{i:3;i:3004;}',
	'a:1:{i:3;i:3005;}',
	'a:1:{i:3;i:3003;}',
	'a:1:{i:3;i:3006;}',
	'a:1:{i:3;i:3007;}',
	'a:1:{i:3;i:3015;}',
	'a:1:{i:3;i:3020;}',
	'a:1:{i:3;i:2992;}',
	'a:1:{i:3;i:3016;}',
	'a:1:{i:3;i:3013;}',
	'a:1:{i:3;i:3010;}',
	'a:1:{i:3;i:2998;}',
	'a:1:{i:3;i:3014;}',
	'a:1:{i:3;i:3012;}',
	'a:1:{i:3;i:3023;}',
	'a:1:{i:3;i:3022;}',
	'a:1:{i:3;i:3019;}',
	'a:1:{i:3;i:3017;}',
	'a:1:{i:3;i:3018;}',
	'a:1:{i:3;i:3000;}',
	'a:1:{i:3;i:2997;}',
	'a:2:{i:3;i:3284;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3266;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3265;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3250;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3262;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3267;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3261;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3258;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3246;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3253;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3228;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3243;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3234;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3273;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3255;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3236;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3225;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3241;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3240;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3245;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3272;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3233;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3230;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3227;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3224;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3268;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3239;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3264;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3271;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3238;i:7;s:5:"Win10";}',
	'a:1:{i:3;i:3033;}',
	'a:1:{i:3;i:3046;}',
	'a:1:{i:3;i:3115;}',
	'a:1:{i:3;i:3047;}',
	'a:1:{i:3;i:3048;}',
	'a:1:{i:3;i:3113;}',
	'a:1:{i:3;i:3061;}',
	'a:1:{i:3;i:3067;}',
	'a:1:{i:3;i:3050;}',
	'a:1:{i:3;i:3049;}',
	'a:1:{i:3;i:3054;}',
	'a:1:{i:3;i:3060;}',
	'a:1:{i:3;i:3116;}',
	'a:1:{i:3;i:3066;}',
	'a:1:{i:3;i:3044;}',
	'a:1:{i:3;i:3063;}',
	'a:1:{i:3;i:3045;}',
	'a:1:{i:3;i:3058;}',
	'a:1:{i:3;i:3057;}',
	'a:1:{i:3;i:3042;}',
	'a:1:{i:3;i:3051;}',
	'a:1:{i:3;i:3043;}',
	'a:1:{i:3;i:3111;}',
	'a:1:{i:3;i:3059;}',
	'a:1:{i:3;i:3055;}',
	'a:1:{i:3;i:3038;}',
	'a:1:{i:3;i:3052;}',
	'a:1:{i:3;i:3041;}',
	'a:1:{i:3;i:3056;}',
	'a:1:{i:3;i:3039;}',
	'a:1:{i:3;i:3040;}',
	'a:1:{i:3;i:3053;}',
	'a:1:{i:3;i:3062;}',
	'a:1:{i:3;i:3037;}',
	'a:2:{i:3;i:3175;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3233;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3230;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3233;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3230;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3238;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3233;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3238;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3273;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3273;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3238;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3230;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3273;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3272;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3272;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3233;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3272;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3238;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3264;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3236;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3262;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3225;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3225;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3236;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3236;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3241;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3241;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3264;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3240;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3240;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3245;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3245;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3264;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3245;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3264;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3240;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3225;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3264;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3230;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3267;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3241;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3268;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3268;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3268;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3228;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3228;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3267;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3267;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3228;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3268;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3253;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3246;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3246;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3246;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3246;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3246;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3253;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3253;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3253;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3253;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3239;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3261;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3239;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3266;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3266;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3234;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3234;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3266;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3238;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3234;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3234;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3239;i:7;s:6:"Win8.1";}',
	'a:1:{i:3;i:3021;}',
	'a:2:{i:3;i:3261;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3267;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3261;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3239;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3239;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3265;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3265;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3265;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3262;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3262;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3243;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3243;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3255;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3243;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3224;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3258;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3258;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3227;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3255;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3255;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3250;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3250;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3271;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3250;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3271;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3227;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3224;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3271;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3224;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3227;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3258;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3130;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3175;i:7;s:5:"Win10";}',
	'a:1:{i:3;i:3077;}',
	'a:2:{i:3;i:3290;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3130;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3130;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3130;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3130;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3130;i:7;s:8:"WinVista";}',
	'a:3:{i:3;i:3228;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3265;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:1:{i:3;i:3027;}',
	'a:3:{i:3;i:3233;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3268;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3267;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3240;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3255;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3272;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3227;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3236;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3266;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3224;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3273;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3258;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3271;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3225;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3243;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3234;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3261;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3241;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3262;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3250;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3245;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3230;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:1:{i:3;i:3033;}',
	'a:1:{i:3;i:2906;}',
	'a:1:{i:3;i:3125;}',
	'a:1:{i:3;i:3033;}',
	'a:1:{i:3;i:3001;}',
	'a:3:{i:3;i:2906;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:2906;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:2:{i:3;i:3209;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3205;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3216;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3211;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3210;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3197;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3222;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3212;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3206;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3213;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3204;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3203;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3215;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3207;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3198;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3195;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3196;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3219;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3201;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3208;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3214;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3199;i:7;s:5:"Win10";}',
	'a:3:{i:3;i:3238;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3271;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3230;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3262;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:1:{i:3;i:3021;}',
	'a:3:{i:3;i:3245;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3234;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3239;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3241;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3266;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3228;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3268;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3265;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3233;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3261;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3227;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3267;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3250;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3243;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:1:{i:3;i:3001;}',
	'a:3:{i:3;i:3246;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3273;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3255;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3224;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3272;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3253;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3258;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3240;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3225;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3264;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3236;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:1:{i:3;i:3001;}',
	'a:1:{i:3;i:3001;}',
	'a:2:{i:3;i:3196;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3198;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3201;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3198;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3198;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3219;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3195;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3201;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3203;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3204;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3204;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3204;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3206;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3206;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3201;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3210;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3201;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3204;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3203;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3214;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3197;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3208;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3219;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3215;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3207;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3219;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3197;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3207;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3207;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3195;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3208;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3215;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3195;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3214;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3210;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3210;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3214;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3214;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3207;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3215;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3215;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3219;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3198;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3196;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3205;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3211;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3211;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3216;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3211;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3211;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3195;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3222;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3206;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3196;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3216;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3216;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3205;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3209;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3199;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3209;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3199;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3199;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3205;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3205;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3199;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3210;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3213;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3222;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3197;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3212;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3212;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3208;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3203;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3203;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3209;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3206;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3208;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3216;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3212;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3213;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3213;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3222;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3212;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3209;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3196;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3197;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3213;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3222;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3130;i:7;s:5:"Win32";}',
	'a:1:{i:3;i:3148;}',
	'a:1:{i:3;i:3154;}',
	'a:1:{i:3;i:3155;}',
	'a:1:{i:3;i:3143;}',
	'a:1:{i:3;i:3149;}',
	'a:1:{i:3;i:3150;}',
	'a:1:{i:3;i:3153;}',
	'a:1:{i:3;i:3147;}',
	'a:1:{i:3;i:3158;}',
	'a:1:{i:3;i:3157;}',
	'a:1:{i:3;i:3152;}',
	'a:1:{i:3;i:3146;}',
	'a:1:{i:3;i:3159;}',
	'a:1:{i:3;i:3156;}',
	'a:1:{i:3;i:3001;}',
	'a:1:{i:3;i:3151;}',
	'a:1:{i:3;i:3145;}',
	'a:1:{i:3;i:3132;}',
	'a:1:{i:3;i:3135;}',
	'a:1:{i:3;i:3139;}',
	'a:1:{i:3;i:3136;}',
	'a:1:{i:3;i:3142;}',
	'a:1:{i:3;i:3140;}',
	'a:1:{i:3;i:3133;}',
	'a:1:{i:3;i:3134;}',
	'a:1:{i:3;i:3138;}',
	'a:1:{i:3;i:3141;}',
	'a:1:{i:3;i:3137;}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:3:{i:3;i:2906;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:3:{i:3;i:3011;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:2996;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3015;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3022;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:2993;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3020;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3002;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3009;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3008;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3023;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:2995;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:2994;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3018;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3010;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:2998;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3000;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:2997;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:2992;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3016;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3017;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3007;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3012;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3014;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3019;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3013;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3003;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3005;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3006;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3004;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:2:{i:3;i:3228;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3224;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3239;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3255;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3271;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3227;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3267;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3261;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3266;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3225;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3238;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3233;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3241;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3246;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3273;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3230;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3236;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3264;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3265;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3268;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3240;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3234;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3245;i:7;s:6:"MacOSX";}',
	'a:1:{i:3;i:3087;}',
	'a:2:{i:3;i:3243;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3250;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3253;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3272;i:7;s:6:"MacOSX";}',
	'a:1:{i:3;i:3075;}',
	'a:2:{i:3;i:3258;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3262;i:7;s:6:"MacOSX";}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:3:{i:3;i:2906;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:1:{i:3;i:3110;}',
	'a:1:{i:3;i:3118;}',
	'a:3:{i:3;i:2913;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:1:{i:3;i:3112;}',
	'a:1:{i:3;i:3087;}',
	'a:1:{i:3;i:3077;}',
	'a:1:{i:3;i:3075;}',
	'a:3:{i:3;i:3033;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:2906;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:2906;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:2906;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:2906;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:3:{i:3;i:3077;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:1:{i:3;i:3221;}',
	'a:1:{i:3;i:3202;}',
	'a:1:{i:3;i:3220;}',
	'a:1:{i:3;i:3218;}',
	'a:1:{i:3;i:3200;}',
	'a:1:{i:3;i:3217;}',
	'a:2:{i:3;i:3130;i:7;s:5:"Win10";}',
	'a:1:{i:3;i:3087;}',
	'a:1:{i:3;i:3099;}',
	'a:1:{i:3;i:3096;}',
	'a:1:{i:3;i:3073;}',
	'a:3:{i:3;i:3077;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:1:{i:3;i:3075;}',
	'a:3:{i:3;i:3021;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:2:{i:3;i:3290;i:7;s:5:"Win32";}',
	'a:1:{i:3;i:3260;}',
	'a:2:{i:3;i:3131;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3244;i:7;s:6:"MacOSX";}',
	'a:1:{i:3;i:3259;}',
	'a:2:{i:3;i:3130;i:7;s:5:"Win32";}',
	'a:1:{i:3;i:3263;}',
	'a:1:{i:3;i:3249;}',
	'a:1:{i:3;i:3232;}',
	'a:1:{i:3;i:3077;}',
	'a:2:{i:3;i:3131;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3131;i:7;s:4:"Win8";}',
	'a:1:{i:3;i:3256;}',
	'a:2:{i:3;i:3257;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3131;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3253;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3272;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3234;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3236;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3240;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3130;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3238;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3255;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3243;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3241;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3262;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3268;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3273;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3245;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3258;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3228;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3225;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3261;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3227;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3267;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3266;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3246;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3224;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3265;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3264;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3271;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3233;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3239;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3250;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3130;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3130;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3130;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3130;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3230;i:7;s:5:"Linux";}',
	'a:3:{i:3;i:3290;i:7;s:7:"Xbox OS";i:10;s:9:"TV Device";}',
	'a:1:{i:3;i:3128;}',
	'a:3:{i:3;i:2906;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:3093;i:7;s:7:"Xbox OS";i:10;s:9:"TV Device";}',
	'a:1:{i:3;i:3144;}',
	'a:2:{i:3;i:3207;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3199;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3215;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3209;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3204;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3198;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3197;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3196;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3195;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3212;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3222;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3214;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3216;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3203;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3213;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3201;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3211;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3206;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3219;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3205;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3208;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3210;i:7;s:6:"MacOSX";}',
	'a:1:{i:3;i:3077;}',
	'a:1:{i:3;i:2991;}',
	'a:1:{i:3;i:3033;}',
	'a:1:{i:3;i:3021;}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:2:{i:3;i:3130;i:7;s:6:"MacOSX";}',
	'a:1:{i:3;i:2906;}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:2:{i:3;i:3198;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3216;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3197;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3211;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3205;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3195;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3222;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3210;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3214;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3201;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3204;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3199;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3212;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3215;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3213;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3208;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3196;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3207;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3209;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3203;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3219;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3206;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3130;i:7;s:5:"Linux";}',
	'a:1:{i:3;i:3087;}',
	'a:1:{i:3;i:3077;}',
	'a:2:{i:3;i:3093;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3130;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3131;i:7;s:6:"MacOSX";}',
	'a:1:{i:3;i:3077;}',
	'a:2:{i:3;i:3130;i:7;s:5:"Win32";}',
	'a:3:{i:3;i:3109;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:5:"Win10";}',
	'a:3:{i:3;i:3109;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:5:"Win10";}',
	'a:1:{i:3;i:3202;}',
	'a:1:{i:3;i:3200;}',
	'a:1:{i:3;i:3220;}',
	'a:1:{i:3;i:3221;}',
	'a:2:{i:3;i:3130;i:7;s:5:"Win10";}',
	'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win10";}',
	'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win10";}',
	'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win10";}',
	'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win10";}',
	'a:3:{i:3;i:3109;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:6:"Win8.1";}',
	'a:3:{i:3;i:3109;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:6:"Win8.1";}',
	'a:3:{i:3;i:3109;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:5:"Win10";}',
	'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win10";}',
	'a:3:{i:3;i:3109;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3186;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3172;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3177;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3171;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3190;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3189;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3172;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3172;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3186;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3164;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3178;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3164;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3167;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3189;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3190;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3177;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3164;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3163;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3167;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3167;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3183;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3185;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3185;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3185;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3161;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3168;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3183;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3183;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3161;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3171;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3191;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3189;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3171;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3191;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3191;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3161;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3177;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3190;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3178;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3174;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3186;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3180;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3168;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3193;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3174;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3193;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3163;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3174;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3173;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3179;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3194;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3173;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3179;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3180;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3173;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3178;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3193;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3181;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3187;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3181;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3187;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3184;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3184;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3168;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3187;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3184;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3162;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3166;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3162;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3162;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3166;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3181;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3166;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3179;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3180;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3165;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3170;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3170;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3165;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3165;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3192;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3192;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3169;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3169;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3160;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3160;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3160;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3176;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3176;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3169;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3176;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3192;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3170;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3188;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3182;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3194;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3188;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3188;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3182;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3194;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3163;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3182;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3130;i:7;s:5:"Linux";}',
	'a:1:{i:3;i:3260;}',
	'a:1:{i:3;i:3232;}',
	'a:1:{i:3;i:3259;}',
	'a:1:{i:3;i:3263;}',
	'a:1:{i:3;i:3249;}',
	'a:2:{i:3;i:3257;i:7;s:6:"MacOSX";}',
	'a:1:{i:3;i:3256;}',
	'a:2:{i:3;i:3244;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3130;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3130;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3130;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3130;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3130;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3131;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3130;i:7;s:5:"Linux";}',
	'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:6:"Win8.1";}',
	'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win10";}',
	'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:6:"Win8.1";}',
	'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:6:"Win8.1";}',
	'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:6:"Win8.1";}',
	'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win10";}',
	'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win10";}',
	'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win10";}',
	'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:6:"Win8.1";}',
	'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win10";}',
	'a:3:{i:3;i:3109;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3109;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:2904;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:1:{i:3;i:2904;}',
	'a:3:{i:3;i:3290;i:7;s:8:"Xbox 360";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3289;i:7;s:8:"Xbox 360";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:2:{i:3;i:3130;i:7;s:5:"Linux";}',
	'a:4:{i:3;i:3065;i:4;s:10:"Safari 1.3";i:6;s:3:"1.3";i:7;s:6:"MacOSX";}',
	'a:4:{i:3;i:3065;i:4;s:10:"Safari 2.0";i:6;s:3:"2.0";i:7;s:6:"MacOSX";}',
	'a:4:{i:3;i:3065;i:4;s:10:"Safari 2.0";i:6;s:3:"2.0";i:7;s:6:"MacOSX";}',
	'a:4:{i:3;i:3065;i:4;s:10:"Safari 1.3";i:6;s:3:"1.3";i:7;s:6:"MacOSX";}',
	'a:4:{i:3;i:3065;i:4;s:10:"Safari 2.0";i:6;s:3:"2.0";i:7;s:6:"MacOSX";}',
	'a:4:{i:3;i:3065;i:4;s:10:"Safari 1.3";i:6;s:3:"1.3";i:7;s:6:"MacOSX";}',
	'a:4:{i:3;i:3065;i:4;s:10:"Safari 1.3";i:6;s:3:"1.3";i:7;s:6:"MacOSX";}',
	'a:4:{i:3;i:3065;i:4;s:10:"Safari 1.1";i:6;s:3:"1.1";i:7;s:6:"MacOSX";}',
	'a:4:{i:3;i:3065;i:4;s:10:"Safari 1.2";i:6;s:3:"1.2";i:7;s:6:"MacOSX";}',
	'a:1:{i:3;i:2906;}',
	'a:2:{i:3;i:3187;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3167;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3171;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3190;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3164;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3174;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3191;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3172;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3185;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3166;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3192;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3182;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3188;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3179;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3165;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3189;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3176;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3169;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3170;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3160;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3186;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3177;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3161;i:7;s:8:"WinVista";}',
	'a:3:{i:3;i:3109;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3109;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:4:{i:3;i:3065;i:4;s:10:"Safari 1.0";i:6;s:3:"1.0";i:7;s:6:"MacOSX";}',
	'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:2:{i:3;i:3129;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3129;i:7;s:4:"Win7";}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:3:{i:3;i:3102;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3129;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3131;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3093;i:7;s:4:"Win7";}',
	'a:3:{i:3;i:3102;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:6:"Win8.1";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win10";}',
	'a:3:{i:3;i:3102;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:4:"Win7";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win10";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win10";}',
	'a:3:{i:3;i:3102;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:5:"Win10";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win10";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3130;i:7;s:6:"MacOSX";}',
	'a:3:{i:3;i:3102;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:5:"Win10";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:6:"Win8.1";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:4:"Win7";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:6:"Win8.1";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win10";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:4:"Win7";}',
	'a:3:{i:3;i:3289;i:4;s:35:"IE 9.0 in IE 7.0 Compatibility Mode";i:7;s:4:"Win7";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win10";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win10";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:6:"Win8.1";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win10";}',
	'a:3:{i:3;i:3289;i:4;s:35:"IE 9.0 in IE 7.0 Compatibility Mode";i:7;s:8:"WinVista";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:6:"Win8.1";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win10";}',
	'a:3:{i:3;i:3289;i:4;s:35:"IE 9.0 in IE 8.0 Compatibility Mode";i:7;s:4:"Win7";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:4:"Win7";}',
	'a:3:{i:3;i:3289;i:4;s:35:"IE 9.0 in IE 8.0 Compatibility Mode";i:7;s:8:"WinVista";}',
	'a:3:{i:3;i:3289;i:4;s:35:"IE 9.0 in IE 7.0 Compatibility Mode";i:7;s:4:"Win7";}',
	'a:3:{i:3;i:3289;i:4;s:35:"IE 9.0 in IE 8.0 Compatibility Mode";i:7;s:4:"Win7";}',
	'a:3:{i:3;i:3289;i:4;s:35:"IE 9.0 in IE 7.0 Compatibility Mode";i:7;s:8:"WinVista";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:6:"Win8.1";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:4:"Win7";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:4:"Win7";}',
	'a:3:{i:3;i:3289;i:4;s:35:"IE 9.0 in IE 8.0 Compatibility Mode";i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3192;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3194;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3186;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3177;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3169;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3189;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3187;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3187;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3183;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3176;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3160;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3165;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3190;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3178;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3181;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3166;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3188;i:7;s:4:"Win7";}',
	'a:3:{i:3;i:3109;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3185;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3180;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3182;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3193;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3163;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3166;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3172;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3191;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3179;i:7;s:4:"Win8";}',
	'a:3:{i:3;i:3109;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3179;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3162;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3164;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3161;i:7;s:4:"Win7";}',
	'a:3:{i:3;i:3102;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:2:{i:3;i:3173;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3168;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3170;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3184;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3171;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3174;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3167;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3174;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3179;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3188;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3193;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3170;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3174;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3192;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3183;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3162;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3173;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3180;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3165;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3166;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3182;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3194;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3177;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3190;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3164;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3169;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3172;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3181;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3168;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3187;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3163;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3161;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3171;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3167;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3189;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3184;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3185;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3176;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3191;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3186;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3160;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3178;i:7;s:5:"Win32";}',
	'a:1:{i:3;i:3144;}',
	'a:2:{i:3;i:3131;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3130;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3130;i:7;s:5:"Win32";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win10";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win10";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win10";}',
	'a:3:{i:3;i:3102;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:6:"Win8.1";}',
	'a:3:{i:3;i:3102;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:4:"Win7";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win10";}',
	'a:3:{i:3;i:3102;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:5:"Win10";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win10";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3289;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3289;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3093;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3288;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3288;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3288;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3093;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3289;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3288;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3289;i:7;s:4:"Win7";}',
	'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win32";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win32";}',
	'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win32";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3289;i:4;s:35:"IE 9.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win32";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3289;i:4;s:35:"IE 9.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3289;i:4;s:35:"IE 9.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3289;i:4;s:35:"IE 9.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3109;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win32";}',
	'a:1:{i:3;i:3144;}',
	'a:1:{i:3;i:3144;}',
	'a:3:{i:3;i:3288;i:4;s:35:"IE 8.0 in IE 7.0 Compatibility Mode";i:7;s:4:"Win7";}',
	'a:3:{i:3;i:3288;i:4;s:35:"IE 8.0 in IE 7.0 Compatibility Mode";i:7;s:8:"WinVista";}',
	'a:3:{i:3;i:3288;i:4;s:35:"IE 8.0 in IE 7.0 Compatibility Mode";i:7;s:4:"Win7";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:6:"Win8.1";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:6:"Win8.1";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win10";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:6:"Win8.1";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:4:"Win7";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win10";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:4:"Win7";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:6:"Win8.1";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win10";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:4:"Win7";}',
	'a:3:{i:3;i:3288;i:4;s:35:"IE 8.0 in IE 7.0 Compatibility Mode";i:7;s:8:"WinVista";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:4:"Win7";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:6:"Win8.1";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win10";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:6:"Win8.1";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win10";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:4:"Win7";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win10";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:4:"Win7";}',
	'a:3:{i:3;i:3102;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3102;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:2:{i:3;i:3130;i:7;s:5:"Linux";}',
	'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 8.0 Compatibility Mode";i:7;s:4:"Win8";}',
	'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 8.0 Compatibility Mode";i:7;s:4:"Win7";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3288;i:4;s:35:"IE 8.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 8.0 Compatibility Mode";i:7;s:4:"Win7";}',
	'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 8.0 Compatibility Mode";i:7;s:4:"Win8";}',
	'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 7.0 Compatibility Mode";i:7;s:4:"Win7";}',
	'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 7.0 Compatibility Mode";i:7;s:4:"Win7";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 7.0 Compatibility Mode";i:7;s:4:"Win8";}',
	'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 7.0 Compatibility Mode";i:7;s:4:"Win8";}',
	'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 9.0 Compatibility Mode";i:7;s:4:"Win8";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 9.0 Compatibility Mode";i:7;s:4:"Win7";}',
	'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 9.0 Compatibility Mode";i:7;s:4:"Win7";}',
	'a:3:{i:3;i:3288;i:4;s:35:"IE 8.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 9.0 Compatibility Mode";i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3192;i:7;s:5:"Win32";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:2:{i:3;i:3165;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3190;i:7;s:5:"Win32";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:2:{i:3;i:3167;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3160;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3186;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3176;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3170;i:7;s:5:"Win32";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:2:{i:3;i:3169;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3171;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3174;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3166;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3187;i:7;s:5:"Win32";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:2:{i:3;i:3184;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3161;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3181;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3178;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3188;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3189;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3164;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3168;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3177;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3183;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3180;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3193;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3162;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3173;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3179;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3194;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3163;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3182;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3191;i:7;s:5:"Win32";}',
	'a:3:{i:3;i:3289;i:4;s:35:"IE 9.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:2:{i:3;i:3185;i:7;s:5:"Win32";}',
	'a:3:{i:3;i:3289;i:4;s:35:"IE 9.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:2:{i:3;i:3172;i:7;s:5:"Win32";}',
	'a:3:{i:3;i:3289;i:4;s:35:"IE 9.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3289;i:4;s:35:"IE 9.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:2913;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3102;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:2:{i:3;i:3129;i:7;s:5:"Win32";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3288;i:4;s:35:"IE 8.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3288;i:4;s:35:"IE 8.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:2:{i:3;i:3129;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3093;i:7;s:5:"Win32";}',
	'a:3:{i:3;i:3102;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:5:"Win32";}',
	'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win64";}',
	'a:3:{i:3;i:3289;i:4;s:35:"IE 9.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win32";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win32";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win32";}',
	'a:3:{i:3;i:3289;i:4;s:35:"IE 9.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win32";}',
	'a:3:{i:3;i:3289;i:4;s:35:"IE 9.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win32";}',
	'a:3:{i:3;i:2913;i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win32";}',
	'a:3:{i:3;i:3289;i:4;s:35:"IE 9.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win32";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win32";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3187;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3183;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3178;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3168;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3170;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3174;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3177;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3179;i:7;s:5:"Win32";}',
	'a:3:{i:3;i:3129;i:6;s:3:"3.6";i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3169;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3164;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3192;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3188;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3189;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3165;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3181;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3185;i:7;s:5:"Win32";}',
	'a:3:{i:3;i:3129;i:6;s:3:"3.6";i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3161;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3171;i:7;s:5:"Win32";}',
	'a:3:{i:3;i:3129;i:6;s:3:"3.6";i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3186;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3191;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3167;i:7;s:5:"Win32";}',
	'a:3:{i:3;i:3129;i:6;s:3:"3.5";i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3162;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3182;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3172;i:7;s:5:"Win32";}',
	'a:3:{i:3;i:3129;i:6;s:3:"3.5";i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3180;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3190;i:7;s:5:"Win32";}',
	'a:3:{i:3;i:3129;i:6;s:3:"3.5";i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3176;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3163;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3160;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3166;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3173;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3184;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3194;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3193;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3109;i:7;s:5:"Win10";}',
	'a:3:{i:3;i:3102;i:4;s:37:"IE 11.0 in IE 10.0 Compatibility Mode";i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3288;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3288;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3093;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3289;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3289;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3109;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3109;i:7;s:5:"Win10";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win32";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win32";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win32";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win32";}',
	'a:3:{i:3;i:3288;i:4;s:35:"IE 8.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win32";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win32";}',
	'a:3:{i:3;i:3102;i:4;s:36:"IE 11.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win32";}',
	'a:3:{i:3;i:3288;i:4;s:35:"IE 8.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3102;i:7;s:5:"Win10";}',
	'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win32";}',
	'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 8.0 Compatibility Mode";i:7;s:5:"Win32";}',
	'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win32";}',
	'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win32";}',
	'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 7.0 Compatibility Mode";i:7;s:5:"Win32";}',
	'a:3:{i:3;i:3093;i:4;s:36:"IE 10.0 in IE 9.0 Compatibility Mode";i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3102;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3102;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3102;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3289;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3289;i:7;s:4:"Win7";}',
	'a:1:{i:3;i:3173;}',
	'a:1:{i:3;i:3166;}',
	'a:1:{i:3;i:3193;}',
	'a:1:{i:3;i:3174;}',
	'a:1:{i:3;i:3162;}',
	'a:1:{i:3;i:3180;}',
	'a:1:{i:3;i:3177;}',
	'a:1:{i:3;i:3183;}',
	'a:1:{i:3;i:3164;}',
	'a:1:{i:3;i:3181;}',
	'a:1:{i:3;i:3188;}',
	'a:1:{i:3;i:3161;}',
	'a:1:{i:3;i:3178;}',
	'a:1:{i:3;i:3179;}',
	'a:1:{i:3;i:3189;}',
	'a:1:{i:3;i:3168;}',
	'a:1:{i:3;i:3194;}',
	'a:1:{i:3;i:3172;}',
	'a:1:{i:3;i:3165;}',
	'a:1:{i:3;i:3182;}',
	'a:1:{i:3;i:3187;}',
	'a:1:{i:3;i:3192;}',
	'a:1:{i:3;i:3171;}',
	'a:1:{i:3;i:3163;}',
	'a:1:{i:3;i:3185;}',
	'a:1:{i:3;i:3169;}',
	'a:1:{i:3;i:3170;}',
	'a:1:{i:3;i:3176;}',
	'a:1:{i:3;i:3186;}',
	'a:1:{i:3;i:3160;}',
	'a:1:{i:3;i:3184;}',
	'a:1:{i:3;i:3191;}',
	'a:1:{i:3;i:3190;}',
	'a:1:{i:3;i:3167;}',
	'a:2:{i:3;i:3287;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3129;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3093;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3093;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3093;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3093;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3290;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3102;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3290;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3288;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3288;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3288;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3288;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3289;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3289;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3289;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3289;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3173;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3171;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3174;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3194;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3164;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3171;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3183;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3179;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3187;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3173;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3194;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3187;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3176;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3172;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3180;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3180;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3160;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3186;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3164;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3186;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3190;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3190;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3167;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3183;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3174;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3167;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3193;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3160;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3172;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3176;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3166;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3191;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3192;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3161;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3165;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3168;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3168;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3163;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3161;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3182;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3182;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3189;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3184;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3189;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3185;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3185;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3165;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3163;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3178;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3177;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3188;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3178;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3184;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3169;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3191;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3177;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3166;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3188;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3170;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3170;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3192;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3181;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3181;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3169;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3179;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3162;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3162;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3193;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3021;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3129;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3186;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3186;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3186;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3186;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3186;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3186;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3187;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3185;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3187;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3187;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3186;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3186;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3184;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3184;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3184;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3184;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3190;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3184;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3186;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3184;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3184;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3184;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3187;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3187;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3160;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3160;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3160;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3160;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3176;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3185;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3176;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3176;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3176;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3176;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3160;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3160;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3187;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3187;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3187;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3160;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3187;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3187;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3160;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3160;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3160;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3190;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3190;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3171;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3171;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3168;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3168;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3171;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3171;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3167;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3167;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3167;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3171;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3168;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3168;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3168;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3171;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3171;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3171;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3168;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3168;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3185;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3171;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3171;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3168;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3167;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3167;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3190;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3190;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3167;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3163;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3190;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3190;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3185;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3190;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3166;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3190;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3163;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3163;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3163;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3163;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3167;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3167;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3163;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3163;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3163;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3167;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3167;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3190;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3166;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3192;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3165;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3179;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3179;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3192;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3192;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3192;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3192;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3192;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3192;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3179;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3179;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3179;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3179;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3165;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3165;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3179;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3179;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3179;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3165;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3165;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3179;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3192;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3192;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3188;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3188;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3188;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3188;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3188;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3188;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3188;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3188;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3188;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3188;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3193;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3182;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3182;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3182;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3182;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3192;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3182;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3182;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3182;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3182;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3182;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3182;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3165;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3165;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3169;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3169;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3169;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3176;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3169;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3169;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3169;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3169;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3169;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3169;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3176;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3176;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3176;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3166;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3185;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3166;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3166;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3166;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3176;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3166;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3166;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3166;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3169;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3174;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3170;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3170;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3170;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3170;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3170;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3170;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3165;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3165;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3165;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3170;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3170;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3170;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3174;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3174;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3174;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3174;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3174;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3174;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3170;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3174;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3174;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3174;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3166;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3186;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3189;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3194;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3194;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3194;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3189;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3189;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3162;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3162;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3189;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3194;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3189;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3161;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3161;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3161;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3161;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3194;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3194;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3194;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3194;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3162;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3189;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3183;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3183;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3183;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3164;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3183;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3164;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3164;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3164;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3164;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3183;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3183;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3189;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3189;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3189;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3189;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3164;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3183;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3183;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3162;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3161;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3162;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3180;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3180;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3180;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3180;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3180;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3177;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3177;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3177;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3177;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3180;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3180;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3193;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3193;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3193;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3193;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3193;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3180;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3193;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3193;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3177;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3177;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3161;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3161;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3173;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3173;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3161;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3161;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3161;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3162;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3162;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3173;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3173;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3177;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3177;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3177;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3177;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3173;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3173;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3173;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3173;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3164;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3162;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3181;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3191;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3178;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3178;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3191;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3191;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3178;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3172;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3178;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3172;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3181;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3181;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3191;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3178;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3178;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3178;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3172;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3178;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3172;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3172;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3191;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3181;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3172;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3172;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3191;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3164;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3191;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3181;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3185;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3181;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3164;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3185;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3191;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3185;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3185;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3164;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3181;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3181;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3172;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3185;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3172;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3191;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3172;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3191;i:7;s:4:"Win8";}',
	'a:3:{i:3;i:2951;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:1:{i:3;i:2951;}',
	'a:1:{i:3;i:2941;}',
	'a:1:{i:3;i:2940;}',
	'a:3:{i:3;i:2930;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:2957;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3129;i:7;s:5:"Win10";}',
	'a:3:{i:3;i:2939;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:3:{i:3;i:2964;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:1:{i:3;i:2930;}',
	'a:1:{i:3;i:2955;}',
	'a:1:{i:3;i:2959;}',
	'a:3:{i:3;i:2959;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:3:{i:3;i:2940;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:1:{i:3;i:2942;}',
	'a:1:{i:3;i:2954;}',
	'a:3:{i:3;i:2942;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:3:{i:3;i:2956;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:1:{i:3;i:2968;}',
	'a:1:{i:3;i:2939;}',
	'a:3:{i:3;i:2941;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:3:{i:3;i:2954;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:3:{i:3;i:2932;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:1:{i:3;i:2935;}',
	'a:3:{i:3;i:2935;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:2937;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:1:{i:3;i:2936;}',
	'a:3:{i:3;i:2925;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:1:{i:3;i:2925;}',
	'a:3:{i:3;i:2921;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:1:{i:3;i:2937;}',
	'a:1:{i:3;i:2926;}',
	'a:3:{i:3;i:2926;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:2936;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:1:{i:3;i:2946;}',
	'a:3:{i:3;i:2948;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:1:{i:3;i:2948;}',
	'a:3:{i:3;i:2950;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:1:{i:3;i:2950;}',
	'a:1:{i:3;i:2947;}',
	'a:3:{i:3;i:2947;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:3:{i:3;i:2946;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:1:{i:3;i:2945;}',
	'a:3:{i:3;i:2945;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:1:{i:3;i:2921;}',
	'a:3:{i:3;i:2922;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:1:{i:3;i:2958;}',
	'a:2:{i:3;i:3129;i:7;s:4:"Win8";}',
	'a:1:{i:3;i:2934;}',
	'a:3:{i:3;i:2934;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:1:{i:3;i:2932;}',
	'a:3:{i:3;i:2952;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:2931;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:2:{i:3;i:3129;i:7;s:6:"Win8.1";}',
	'a:1:{i:3;i:2952;}',
	'a:2:{i:3;i:3129;i:7;s:4:"Win7";}',
	'a:1:{i:3;i:2933;}',
	'a:1:{i:3;i:2927;}',
	'a:3:{i:3;i:2927;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:1:{i:3;i:2964;}',
	'a:1:{i:3;i:2922;}',
	'a:1:{i:3;i:2956;}',
	'a:3:{i:3;i:2928;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:2933;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:2:{i:3;i:3129;i:7;s:8:"WinVista";}',
	'a:1:{i:3;i:2928;}',
	'a:1:{i:3;i:2931;}',
	'a:3:{i:3;i:2938;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:3:{i:3;i:2929;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:3:{i:3;i:2944;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:1:{i:3;i:2969;}',
	'a:1:{i:3;i:2967;}',
	'a:1:{i:3;i:2973;}',
	'a:1:{i:3;i:2976;}',
	'a:3:{i:3;i:2973;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:1:{i:3;i:2929;}',
	'a:3:{i:3;i:2962;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:3:{i:3;i:2967;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:3:{i:3;i:2968;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:3:{i:3;i:2943;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:3:{i:3;i:2923;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:3:{i:3;i:2972;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:1:{i:3;i:2965;}',
	'a:3:{i:3;i:2978;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:3:{i:3;i:2963;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:2974;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:1:{i:3;i:2977;}',
	'a:1:{i:3;i:2963;}',
	'a:1:{i:3;i:2943;}',
	'a:3:{i:3;i:2975;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:1:{i:3;i:2975;}',
	'a:1:{i:3;i:2978;}',
	'a:1:{i:3;i:2919;}',
	'a:3:{i:3;i:2965;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:1:{i:3;i:2944;}',
	'a:3:{i:3;i:2976;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:1:{i:3;i:2974;}',
	'a:1:{i:3;i:2971;}',
	'a:3:{i:3;i:2977;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:3:{i:3;i:2971;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:3:{i:3;i:2969;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:1:{i:3;i:2972;}',
	'a:1:{i:3;i:2957;}',
	'a:3:{i:3;i:2970;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:1:{i:3;i:2924;}',
	'a:3:{i:3;i:2958;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:1:{i:3;i:2961;}',
	'a:1:{i:3;i:2970;}',
	'a:3:{i:3;i:2924;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:1:{i:3;i:2923;}',
	'a:1:{i:3;i:2938;}',
	'a:3:{i:3;i:2919;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:3:{i:3;i:2955;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:1:{i:3;i:2949;}',
	'a:3:{i:3;i:2949;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:3:{i:3;i:2961;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:1:{i:3;i:2962;}',
	'a:1:{i:3;i:3129;}',
	'a:2:{i:3;i:3102;i:7;s:5:"Win10";}',
	'a:1:{i:3;i:3021;}',
	'a:3:{i:3;i:3021;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:1:{i:3;i:2988;}',
	'a:3:{i:3;i:2982;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:3:{i:3;i:2990;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:3:{i:3;i:2983;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:1:{i:3;i:2984;}',
	'a:3:{i:3;i:2987;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:1:{i:3;i:2990;}',
	'a:1:{i:3;i:2987;}',
	'a:1:{i:3;i:2999;}',
	'a:3:{i:3;i:2984;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:1:{i:3;i:2983;}',
	'a:3:{i:3;i:2988;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:3:{i:3;i:2999;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:1:{i:3;i:2981;}',
	'a:3:{i:3;i:2986;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:1:{i:3;i:2982;}',
	'a:3:{i:3;i:2985;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:1:{i:3;i:2985;}',
	'a:3:{i:3;i:2989;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:1:{i:3;i:2986;}',
	'a:3:{i:3;i:2981;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:1:{i:3;i:2989;}',
	'a:2:{i:3;i:3109;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3102;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3102;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3102;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3129;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3129;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3102;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3289;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3129;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3129;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3129;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3129;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3129;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3129;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3129;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3287;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3129;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3129;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3129;i:7;s:8:"WinVista";}',
	'a:1:{i:3;i:2904;}',
	'a:3:{i:3;i:2904;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3093;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3093;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3290;i:7;s:5:"Win32";}',
	'a:1:{i:3;i:3021;}',
	'a:2:{i:3;i:3102;i:7;s:5:"Win10";}',
	'a:1:{i:3;i:2904;}',
	'a:3:{i:3;i:2904;i:9;s:5:"false";i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3290;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3105;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3105;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3289;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3289;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3288;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3288;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3173;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3164;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3186;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3183;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3186;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3184;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3172;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3184;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3160;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3183;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3102;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3102;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3160;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3187;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3164;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3187;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3102;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3190;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3178;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3181;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3168;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3171;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3168;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3181;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3171;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3185;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3167;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3191;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3163;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3190;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3172;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3178;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3163;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3167;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3191;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3189;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3176;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3177;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3179;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3180;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3165;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3177;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3185;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3165;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3179;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3192;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3188;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3193;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3188;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3182;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3182;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3180;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3192;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3170;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3161;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3194;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3166;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3189;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3166;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3194;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3162;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3176;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3169;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3169;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3173;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3174;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3170;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3174;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3161;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3162;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3193;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3165;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3190;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3172;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3186;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3191;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3167;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3171;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3185;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3160;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3164;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3161;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3177;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3192;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3170;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3169;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3176;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3189;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3182;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3188;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3178;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3194;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3183;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3166;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3181;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3180;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3162;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3174;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3163;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3187;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3173;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3184;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3193;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3168;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3179;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3021;i:10;s:12:"Mobile Phone";}',
	'a:2:{i:3;i:3102;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3102;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3179;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3164;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3162;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3194;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3174;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3190;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3179;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3162;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3162;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3174;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3177;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3184;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3164;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3182;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3164;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3177;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3174;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3174;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3174;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3173;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3189;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3194;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3194;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3173;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3190;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3190;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3194;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3193;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3187;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3172;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3172;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3173;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3190;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3192;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3172;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3192;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3192;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3192;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3190;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3192;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3176;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3172;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3165;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3166;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3166;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3160;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3161;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3160;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3166;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3170;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3160;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3166;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3166;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3160;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3161;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3169;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3169;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3169;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3160;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3169;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3169;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3161;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3161;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3163;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3161;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3170;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3170;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3177;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3173;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3177;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3162;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3163;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3165;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3165;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3165;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3165;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3182;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3184;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3184;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3180;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3180;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3170;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3170;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3180;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3180;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3184;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3187;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3187;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3187;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3177;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3164;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3167;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3167;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3167;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3167;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3182;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3191;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3191;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3191;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3191;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3191;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3167;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3186;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3183;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3163;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3183;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3188;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3186;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3187;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3186;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3186;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3186;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3181;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3189;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3185;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3189;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3178;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3189;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3185;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3185;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3185;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3163;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3185;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3181;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3181;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3171;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3171;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3181;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3178;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3171;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3171;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3178;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3178;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3171;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3188;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3189;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3168;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3168;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3168;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3179;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3183;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3183;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3172;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3193;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3176;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3168;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3164;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3179;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3176;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3193;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3188;i:7;s:8:"WinVista";}',
	'a:2:{i:3;i:3179;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3188;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3193;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3176;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3176;i:7;s:4:"Win7";}',
	'a:2:{i:3;i:3188;i:7;s:4:"Win8";}',
	'a:2:{i:3;i:3182;i:7;s:6:"Win8.1";}',
	'a:2:{i:3;i:3182;i:7;s:5:"Win10";}',
	'a:2:{i:3;i:3174;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3173;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3183;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3189;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3167;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3191;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3162;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3186;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3174;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3181;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3169;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3102;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3181;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3184;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3185;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3183;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3191;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3192;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3166;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3177;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3163;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3185;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3169;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3192;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3163;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3160;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3176;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3184;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3177;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3172;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3173;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3194;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3164;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3188;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3171;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3170;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3178;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3182;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3182;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3176;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3179;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3160;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3165;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3187;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3165;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3178;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3186;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3187;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3172;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3190;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3190;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3180;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3161;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3194;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3189;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3164;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3162;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3179;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3180;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3168;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3161;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3188;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3193;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3193;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3170;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3168;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3167;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3171;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3166;i:7;s:5:"Linux";}',
	'a:3:{i:3;i:3021;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:1:{i:3;i:3021;}',
	'a:2:{i:3;i:3129;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3129;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3102;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3129;i:7;s:5:"Linux";}',
	'a:2:{i:3;i:3129;i:7;s:5:"Linux";}',
	'a:1:{i:3;i:3021;}',
	'a:2:{i:3;i:3193;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3172;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3182;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3179;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3176;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3189;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3186;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3164;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3178;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3171;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3181;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3191;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3187;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3188;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3167;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3168;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3161;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3184;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3173;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3194;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3192;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3170;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3169;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3166;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3185;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3162;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3180;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3165;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3190;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3183;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3174;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3177;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3163;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3160;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3163;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3194;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3164;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3184;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3186;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3160;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3165;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3190;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3162;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3193;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3182;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3192;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3189;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3170;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3177;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3174;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3179;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3168;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3171;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3178;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3185;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3181;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3191;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3188;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3183;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3167;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3180;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3172;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3161;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3169;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3173;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3176;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3187;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3166;i:7;s:6:"MacOSX";}',
	'a:2:{i:3;i:3102;i:7;s:5:"Win32";}',
	'a:2:{i:3;i:3129;i:7;s:5:"Win32";}',
	'a:1:{i:3;i:3248;}',
	'a:1:{i:3;i:3229;}',
	'a:1:{i:3;i:3223;}',
	'a:1:{i:3;i:3254;}',
	'a:1:{i:3;i:3231;}',
	'a:1:{i:3;i:3242;}',
	'a:1:{i:3;i:3252;}',
	'a:1:{i:3;i:3235;}',
	'a:1:{i:3;i:3237;}',
	'a:1:{i:3;i:3226;}',
	'a:1:{i:3;i:3247;}',
	'a:1:{i:3;i:3251;}',
	'a:1:{i:3;i:3269;}',
	'a:1:{i:3;i:3270;}',
	'a:1:{i:3;i:3278;}',
	'a:1:{i:3;i:3285;}',
	'a:1:{i:3;i:3276;}',
	'a:1:{i:3;i:3277;}',
	'a:1:{i:3;i:3282;}',
	'a:1:{i:3;i:3279;}',
	'a:7:{i:3;i:3119;i:4;s:15:"Firefox Generic";i:5;s:7:"Firefox";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:1:{i:3;i:3293;}',
	'a:6:{i:3;i:3119;i:4;s:14:"Chrome Generic";i:5;s:6:"Chrome";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:1:{i:3;i:3033;}',
	'a:1:{i:3;i:3029;}',
	'a:1:{i:3;i:3030;}',
	'a:1:{i:3;i:3028;}',
	'a:1:{i:3;i:3026;}',
	'a:1:{i:3;i:3034;}',
	'a:5:{i:3;i:3119;i:4;s:14:"Safari Generic";i:5;s:6:"Safari";i:7;s:6:"MacOSX";i:10;s:7:"Desktop";}',
	'a:1:{i:3;i:3105;}',
	'a:1:{i:3;i:3105;}',
	'a:1:{i:3;i:3032;}',
	'a:1:{i:3;i:3035;}',
	'a:6:{i:3;i:3119;i:4;s:24:"Edge Generic for Android";i:5;s:4:"Edge";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:12:"Firefox 47.0";i:5;s:7:"Firefox";i:6;s:4:"47.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:6:{i:3;i:3119;i:4;s:10:"Safari 7.1";i:5;s:6:"Safari";i:6;s:3:"7.1";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:12:"Firefox 53.0";i:5;s:7:"Firefox";i:6;s:4:"53.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:12:"Firefox 54.0";i:5;s:7:"Firefox";i:6;s:4:"54.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:8:{i:3;i:3119;i:4;s:12:"Firefox 11.0";i:5;s:7:"Firefox";i:6;s:4:"11.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:8:{i:3;i:3119;i:4;s:12:"Firefox 10.0";i:5;s:7:"Firefox";i:6;s:4:"10.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:7:{i:3;i:3119;i:4;s:12:"Firefox 51.0";i:5;s:7:"Firefox";i:6;s:4:"51.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:12:"Firefox 52.0";i:5;s:7:"Firefox";i:6;s:4:"52.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:12:"Firefox 55.0";i:5;s:7:"Firefox";i:6;s:4:"55.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:12:"Firefox 56.0";i:5;s:7:"Firefox";i:6;s:4:"56.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:8:{i:3;i:3119;i:4;s:12:"Firefox 12.0";i:5;s:7:"Firefox";i:6;s:4:"12.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:7:{i:3;i:3119;i:4;s:12:"Firefox 62.0";i:5;s:7:"Firefox";i:6;s:4:"62.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:12:"Firefox 61.0";i:5;s:7:"Firefox";i:6;s:4:"61.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:12:"Firefox 59.0";i:5;s:7:"Firefox";i:6;s:4:"59.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:12:"Firefox 57.0";i:5;s:7:"Firefox";i:6;s:4:"57.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:12:"Firefox 58.0";i:5;s:7:"Firefox";i:6;s:4:"58.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:12:"Firefox 50.1";i:5;s:7:"Firefox";i:6;s:4:"50.1";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:12:"Firefox 50.0";i:5;s:7:"Firefox";i:6;s:4:"50.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:8:{i:3;i:3119;i:4;s:12:"Firefox 25.0";i:5;s:7:"Firefox";i:6;s:4:"25.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:8:{i:3;i:3119;i:4;s:12:"Firefox 20.0";i:5;s:7:"Firefox";i:6;s:4:"20.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:8:{i:3;i:3119;i:4;s:12:"Firefox 24.0";i:5;s:7:"Firefox";i:6;s:4:"24.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:8:{i:3;i:3119;i:4;s:12:"Firefox 21.0";i:5;s:7:"Firefox";i:6;s:4:"21.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:8:{i:3;i:3119;i:4;s:12:"Firefox 22.0";i:5;s:7:"Firefox";i:6;s:4:"22.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:8:{i:3;i:3119;i:4;s:12:"Firefox 23.0";i:5;s:7:"Firefox";i:6;s:4:"23.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:8:{i:3;i:3119;i:4;s:12:"Firefox 26.0";i:5;s:7:"Firefox";i:6;s:4:"26.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:8:{i:3;i:3119;i:4;s:12:"Firefox 27.0";i:5;s:7:"Firefox";i:6;s:4:"27.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:7:{i:3;i:3119;i:4;s:12:"Firefox 48.0";i:5;s:7:"Firefox";i:6;s:4:"48.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:12:"Firefox 49.0";i:5;s:7:"Firefox";i:6;s:4:"49.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:8:{i:3;i:3119;i:4;s:12:"Firefox 31.0";i:5;s:7:"Firefox";i:6;s:4:"31.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:8:{i:3;i:3119;i:4;s:12:"Firefox 30.0";i:5;s:7:"Firefox";i:6;s:4:"30.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:8:{i:3;i:3119;i:4;s:12:"Firefox 28.0";i:5;s:7:"Firefox";i:6;s:4:"28.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:8:{i:3;i:3119;i:4;s:12:"Firefox 29.0";i:5;s:7:"Firefox";i:6;s:4:"29.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:7:{i:3;i:3119;i:4;s:12:"Firefox 63.0";i:5;s:7:"Firefox";i:6;s:4:"63.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:12:"Firefox 60.0";i:5;s:7:"Firefox";i:6;s:4:"60.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:6:{i:3;i:3119;i:4;s:10:"Safari 6.1";i:5;s:6:"Safari";i:6;s:3:"6.1";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:8:{i:3;i:3119;i:4;s:12:"Firefox 36.0";i:5;s:7:"Firefox";i:6;s:4:"36.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:8:{i:3;i:3119;i:4;s:12:"Firefox 18.0";i:5;s:7:"Firefox";i:6;s:4:"18.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:8:{i:3;i:3119;i:4;s:12:"Firefox 37.0";i:5;s:7:"Firefox";i:6;s:4:"37.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:8:{i:3;i:3119;i:4;s:12:"Firefox 17.0";i:5;s:7:"Firefox";i:6;s:4:"17.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:8:{i:3;i:3119;i:4;s:12:"Firefox 39.0";i:5;s:7:"Firefox";i:6;s:4:"39.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:8:{i:3;i:3119;i:4;s:12:"Firefox 38.0";i:5;s:7:"Firefox";i:6;s:4:"38.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:6:{i:3;i:3119;i:4;s:10:"Safari 6.2";i:5;s:6:"Safari";i:6;s:3:"6.2";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:8:{i:3;i:3119;i:4;s:12:"Firefox 35.0";i:5;s:7:"Firefox";i:6;s:4:"35.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:8:{i:3;i:3119;i:4;s:12:"Firefox 33.0";i:5;s:7:"Firefox";i:6;s:4:"33.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:7:{i:3;i:3119;i:4;s:12:"Firefox 46.0";i:5;s:7:"Firefox";i:6;s:4:"46.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:8:{i:3;i:3119;i:4;s:12:"Firefox 32.0";i:5;s:7:"Firefox";i:6;s:4:"32.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:8:{i:3;i:3119;i:4;s:12:"Firefox 33.1";i:5;s:7:"Firefox";i:6;s:4:"33.1";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:6:{i:3;i:3119;i:4;s:10:"Safari 7.0";i:5;s:6:"Safari";i:6;s:3:"7.0";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:8:{i:3;i:3119;i:4;s:12:"Firefox 34.0";i:5;s:7:"Firefox";i:6;s:4:"34.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:8:{i:3;i:3119;i:4;s:12:"Firefox 19.0";i:5;s:7:"Firefox";i:6;s:4:"19.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:8:{i:3;i:3119;i:4;s:12:"Firefox 16.0";i:5;s:7:"Firefox";i:6;s:4:"16.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:8:{i:3;i:3119;i:4;s:12:"Firefox 40.0";i:5;s:7:"Firefox";i:6;s:4:"40.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:8:{i:3;i:3119;i:4;s:12:"Firefox 43.0";i:5;s:7:"Firefox";i:6;s:4:"43.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:8:{i:3;i:3119;i:4;s:12:"Firefox 41.0";i:5;s:7:"Firefox";i:6;s:4:"41.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:8:{i:3;i:3119;i:4;s:12:"Firefox 42.0";i:5;s:7:"Firefox";i:6;s:4:"42.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:8:{i:3;i:3119;i:4;s:12:"Firefox 14.0";i:5;s:7:"Firefox";i:6;s:4:"14.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:8:{i:3;i:3119;i:4;s:12:"Firefox 44.0";i:5;s:7:"Firefox";i:6;s:4:"44.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:8:{i:3;i:3119;i:4;s:12:"Firefox 13.0";i:5;s:7:"Firefox";i:6;s:4:"13.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:8:{i:3;i:3119;i:4;s:12:"Firefox 45.0";i:5;s:7:"Firefox";i:6;s:4:"45.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:8:{i:3;i:3119;i:4;s:12:"Firefox 15.0";i:5;s:7:"Firefox";i:6;s:4:"15.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:1:{i:3;i:3287;}',
	'a:1:{i:3;i:3287;}',
	'a:8:{i:3;i:3119;i:4;s:11:"Firefox 5.0";i:5;s:7:"Firefox";i:6;s:3:"5.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:8:{i:3;i:3119;i:4;s:11:"Firefox 8.0";i:5;s:7:"Firefox";i:6;s:3:"8.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:8:{i:3;i:3119;i:4;s:11:"Firefox 1.1";i:5;s:7:"Firefox";i:6;s:3:"1.1";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:8:{i:3;i:3119;i:4;s:11:"Firefox 1.0";i:5;s:7:"Firefox";i:6;s:3:"1.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:8:{i:3;i:3119;i:4;s:11:"Firefox 4.0";i:5;s:7:"Firefox";i:6;s:3:"4.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:8:{i:3;i:3119;i:4;s:11:"Firefox 2.3";i:5;s:7:"Firefox";i:6;s:3:"2.3";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:8:{i:3;i:3119;i:4;s:11:"Firefox 6.0";i:5;s:7:"Firefox";i:6;s:3:"6.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:8:{i:3;i:3119;i:4;s:11:"Firefox 2.0";i:5;s:7:"Firefox";i:6;s:3:"2.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:8:{i:3;i:3119;i:4;s:11:"Firefox 2.1";i:5;s:7:"Firefox";i:6;s:3:"2.1";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:8:{i:3;i:3119;i:4;s:11:"Firefox 9.0";i:5;s:7:"Firefox";i:6;s:3:"9.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:6:{i:3;i:3119;i:4;s:23:"Android Browser Generic";i:5;s:7:"Android";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 66.0";i:5;s:6:"Chrome";i:6;s:4:"66.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 53.0";i:5;s:6:"Chrome";i:6;s:4:"53.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 52.0";i:5;s:6:"Chrome";i:6;s:4:"52.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 51.0";i:5;s:6:"Chrome";i:6;s:4:"51.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 54.0";i:5;s:6:"Chrome";i:6;s:4:"54.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 71.0";i:5;s:6:"Chrome";i:6;s:4:"71.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 69.0";i:5;s:6:"Chrome";i:6;s:4:"69.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:8:{i:3;i:3119;i:4;s:11:"Firefox 7.0";i:5;s:7:"Firefox";i:6;s:3:"7.0";i:7;s:7:"Android";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 70.0";i:5;s:6:"Chrome";i:6;s:4:"70.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:6:{i:3;i:3119;i:4;s:23:"Android WebView Generic";i:5;s:15:"Android WebView";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 50.0";i:5;s:6:"Chrome";i:6;s:4:"50.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 45.0";i:5;s:6:"Chrome";i:6;s:4:"45.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 44.0";i:5;s:6:"Chrome";i:6;s:4:"44.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 43.0";i:5;s:6:"Chrome";i:6;s:4:"43.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 46.0";i:5;s:6:"Chrome";i:6;s:4:"46.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 47.0";i:5;s:6:"Chrome";i:6;s:4:"47.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 49.0";i:5;s:6:"Chrome";i:6;s:4:"49.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 48.0";i:5;s:6:"Chrome";i:6;s:4:"48.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 68.0";i:5;s:6:"Chrome";i:6;s:4:"68.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 55.0";i:5;s:6:"Chrome";i:6;s:4:"55.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 63.0";i:5;s:6:"Chrome";i:6;s:4:"63.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 67.0";i:5;s:6:"Chrome";i:6;s:4:"67.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 64.0";i:5;s:6:"Chrome";i:6;s:4:"64.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 56.0";i:5;s:6:"Chrome";i:6;s:4:"56.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 65.0";i:5;s:6:"Chrome";i:6;s:4:"65.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 61.0";i:5;s:6:"Chrome";i:6;s:4:"61.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 62.0";i:5;s:6:"Chrome";i:6;s:4:"62.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 60.0";i:5;s:6:"Chrome";i:6;s:4:"60.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 57.0";i:5;s:6:"Chrome";i:6;s:4:"57.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:6:{i:3;i:3119;i:4;s:23:"Mobile Safari UIWebView";i:5;s:23:"Mobile Safari UIWebView";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 58.0";i:5;s:6:"Chrome";i:6;s:4:"58.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 59.0";i:5;s:6:"Chrome";i:6;s:4:"59.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:1:{i:3;i:3290;}',
	'a:1:{i:3;i:3290;}',
	'a:6:{i:3;i:3119;i:4;s:11:"Safari 11.0";i:5;s:6:"Safari";i:6;s:4:"11.0";i:7;s:6:"MacOSX";i:10;s:7:"Desktop";}',
	'a:6:{i:3;i:3119;i:4;s:14:"Chrome Generic";i:5;s:6:"Chrome";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:6:{i:3;i:3119;i:4;s:11:"Safari 10.0";i:5;s:6:"Safari";i:6;s:4:"10.0";i:7;s:6:"MacOSX";i:10;s:7:"Desktop";}',
	'a:6:{i:3;i:3119;i:4;s:10:"Safari 8.0";i:5;s:6:"Safari";i:6;s:3:"8.0";i:7;s:6:"MacOSX";i:10;s:7:"Desktop";}',
	'a:6:{i:3;i:3119;i:4;s:10:"Safari 9.1";i:5;s:6:"Safari";i:6;s:3:"9.1";i:7;s:6:"MacOSX";i:10;s:7:"Desktop";}',
	'a:7:{i:3;i:3119;i:4;s:9:"Edge 41.0";i:5;s:4:"Edge";i:6;s:4:"41.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:6:{i:3;i:3119;i:4;s:10:"Safari 6.0";i:5;s:6:"Safari";i:6;s:3:"6.0";i:7;s:6:"MacOSX";i:10;s:7:"Desktop";}',
	'a:6:{i:3;i:3119;i:4;s:21:"Mobile Safari Generic";i:5;s:6:"Safari";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:6:{i:3;i:3119;i:4;s:10:"Safari 9.0";i:5;s:6:"Safari";i:6;s:3:"9.0";i:7;s:6:"MacOSX";i:10;s:7:"Desktop";}',
	'a:6:{i:3;i:3119;i:4;s:10:"Safari 7.0";i:5;s:6:"Safari";i:6;s:3:"7.0";i:7;s:6:"MacOSX";i:10;s:7:"Desktop";}',
	'a:7:{i:3;i:3119;i:4;s:9:"Edge 42.0";i:5;s:4:"Edge";i:6;s:4:"42.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 67.0";i:5;s:15:"Android WebView";i:6;s:4:"67.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 66.0";i:5;s:15:"Android WebView";i:6;s:4:"66.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 53.0";i:5;s:15:"Android WebView";i:6;s:4:"53.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 55.0";i:5;s:15:"Android WebView";i:6;s:4:"55.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 56.0";i:5;s:15:"Android WebView";i:6;s:4:"56.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 57.0";i:5;s:15:"Android WebView";i:6;s:4:"57.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 52.0";i:5;s:15:"Android WebView";i:6;s:4:"52.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 51.0";i:5;s:15:"Android WebView";i:6;s:4:"51.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 47.0";i:5;s:15:"Android WebView";i:6;s:4:"47.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 48.0";i:5;s:15:"Android WebView";i:6;s:4:"48.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 49.0";i:5;s:15:"Android WebView";i:6;s:4:"49.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 50.0";i:5;s:15:"Android WebView";i:6;s:4:"50.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 71.0";i:5;s:15:"Android WebView";i:6;s:4:"71.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 70.0";i:5;s:15:"Android WebView";i:6;s:4:"70.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 62.0";i:5;s:15:"Android WebView";i:6;s:4:"62.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 63.0";i:5;s:15:"Android WebView";i:6;s:4:"63.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 64.0";i:5;s:15:"Android WebView";i:6;s:4:"64.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 65.0";i:5;s:15:"Android WebView";i:6;s:4:"65.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 61.0";i:5;s:15:"Android WebView";i:6;s:4:"61.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 68.0";i:5;s:15:"Android WebView";i:6;s:4:"68.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 58.0";i:5;s:15:"Android WebView";i:6;s:4:"58.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 59.0";i:5;s:15:"Android WebView";i:6;s:4:"59.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 60.0";i:5;s:15:"Android WebView";i:6;s:4:"60.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 69.0";i:5;s:15:"Android WebView";i:6;s:4:"69.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 46.0";i:5;s:15:"Android WebView";i:6;s:4:"46.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 54.0";i:5;s:15:"Android WebView";i:6;s:4:"54.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 45.0";i:5;s:15:"Android WebView";i:6;s:4:"45.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:6:{i:3;i:3119;i:4;s:20:"Edge Generic for iOS";i:5;s:4:"Edge";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:4:{i:3;i:3119;i:4;s:6:"Safari";i:5;s:6:"Safari";i:10;s:7:"Desktop";}',
	'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 44.0";i:5;s:15:"Android WebView";i:6;s:4:"44.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:20:"Android WebView 43.0";i:5;s:15:"Android WebView";i:6;s:4:"43.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:1:{i:3;i:2913;}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 70.0";i:5;s:6:"Chrome";i:6;s:4:"70.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 69.0";i:5;s:6:"Chrome";i:6;s:4:"69.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 71.0";i:5;s:6:"Chrome";i:6;s:4:"71.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 55.0";i:5;s:6:"Chrome";i:6;s:4:"55.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:7:{i:3;i:3119;i:4;s:19:"Android Browser 4.3";i:5;s:7:"Android";i:6;s:3:"4.3";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 49.0";i:5;s:6:"Chrome";i:6;s:4:"49.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:7:{i:3;i:3119;i:4;s:19:"Android Browser 4.2";i:5;s:7:"Android";i:6;s:3:"4.2";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 56.0";i:5;s:6:"Chrome";i:6;s:4:"56.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:7:{i:3;i:3119;i:4;s:19:"Android Browser 4.0";i:5;s:7:"Android";i:6;s:3:"4.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 61.0";i:5;s:6:"Chrome";i:6;s:4:"61.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 57.0";i:5;s:6:"Chrome";i:6;s:4:"57.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 60.0";i:5;s:6:"Chrome";i:6;s:4:"60.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 59.0";i:5;s:6:"Chrome";i:6;s:4:"59.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 67.0";i:5;s:6:"Chrome";i:6;s:4:"67.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 66.0";i:5;s:6:"Chrome";i:6;s:4:"66.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 53.0";i:5;s:6:"Chrome";i:6;s:4:"53.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 58.0";i:5;s:6:"Chrome";i:6;s:4:"58.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 68.0";i:5;s:6:"Chrome";i:6;s:4:"68.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:7:{i:3;i:3119;i:4;s:19:"Android Browser 4.1";i:5;s:7:"Android";i:6;s:3:"4.1";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 65.0";i:5;s:6:"Chrome";i:6;s:4:"65.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 62.0";i:5;s:6:"Chrome";i:6;s:4:"62.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 52.0";i:5;s:6:"Chrome";i:6;s:4:"52.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 51.0";i:5;s:6:"Chrome";i:6;s:4:"51.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:6:{i:3;i:3119;i:4;s:19:"Edge Mobile Generic";i:5;s:11:"Edge Mobile";i:7;s:10:"WinPhone10";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:5:{i:3;i:3119;i:4;s:7:"IE 10.0";i:5;s:2:"IE";i:6;s:4:"10.0";i:10;s:7:"Desktop";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 48.0";i:5;s:6:"Chrome";i:6;s:4:"48.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:7:{i:3;i:3119;i:4;s:19:"Android Browser 5.1";i:5;s:7:"Android";i:6;s:3:"5.1";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:19:"Android Browser 5.0";i:5;s:7:"Android";i:6;s:3:"5.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 54.0";i:5;s:6:"Chrome";i:6;s:4:"54.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 63.0";i:5;s:6:"Chrome";i:6;s:4:"63.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:7:{i:3;i:3119;i:4;s:19:"Android Browser 4.4";i:5;s:7:"Android";i:6;s:3:"4.4";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 50.0";i:5;s:6:"Chrome";i:6;s:4:"50.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:7:{i:3;i:3119;i:4;s:11:"Chrome 64.0";i:5;s:6:"Chrome";i:6;s:4:"64.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:5:{i:3;i:3119;i:4;s:7:"IE 11.0";i:5;s:2:"IE";i:6;s:4:"11.0";i:10;s:7:"Desktop";}',
	'a:7:{i:3;i:3119;i:4;s:7:"IE 11.0";i:5;s:2:"IE";i:6;s:4:"11.0";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:7:{i:3;i:3119;i:4;s:18:"Mobile Safari 12.0";i:5;s:6:"Safari";i:6;s:4:"12.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:5:{i:3;i:3119;i:4;s:6:"IE 6.0";i:5;s:2:"IE";i:6;s:3:"6.0";i:10;s:7:"Desktop";}',
	'a:7:{i:3;i:3119;i:4;s:18:"Mobile Safari 11.0";i:5;s:6:"Safari";i:6;s:4:"11.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:7:{i:3;i:3119;i:4;s:7:"IE 10.0";i:5;s:2:"IE";i:6;s:4:"10.0";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:7:{i:3;i:3119;i:4;s:18:"Mobile Safari 10.0";i:5;s:6:"Safari";i:6;s:4:"10.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:7:{i:3;i:3119;i:4;s:7:"IE 11.0";i:5;s:2:"IE";i:6;s:4:"11.0";i:8;s:4:"true";i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:6:{i:3;i:3119;i:4;s:17:"Seraphic Sraf 3.5";i:5;s:4:"Sraf";i:6;s:3:"3.5";i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:7:{i:3;i:3119;i:4;s:17:"Mobile Safari 9.0";i:5;s:6:"Safari";i:6;s:3:"9.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:6:{i:3;i:3119;i:4;s:17:"Seraphic Sraf 3.0";i:5;s:4:"Sraf";i:6;s:3:"3.0";i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:7:{i:3;i:3119;i:4;s:17:"Mobile Safari 8.0";i:5;s:6:"Safari";i:6;s:3:"8.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:7:{i:3;i:3119;i:4;s:9:"Edge 42.0";i:5;s:4:"Edge";i:6;s:4:"42.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:7:{i:3;i:3119;i:4;s:17:"Mobile Safari 7.0";i:5;s:6:"Safari";i:6;s:3:"7.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:7:{i:3;i:3119;i:4;s:17:"Mobile Safari 6.0";i:5;s:6:"Safari";i:6;s:3:"6.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:7:{i:3;i:3119;i:4;s:9:"Edge 41.0";i:5;s:4:"Edge";i:6;s:4:"41.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:6:{i:3;i:3119;i:4;s:17:"Seraphic Sraf 3.9";i:5;s:4:"Sraf";i:6;s:3:"3.9";i:7;s:5:"Linux";i:10;s:9:"TV Device";}',
	'a:7:{i:4;s:17:"DefaultProperties";i:5;s:17:"DefaultProperties";i:6;s:3:"0.0";i:7;s:7:"unknown";i:8;s:5:"false";i:9;s:5:"false";i:10;s:7:"unknown";}',
	'a:6:{i:3;i:3119;i:4;s:6:"IE 6.0";i:5;s:2:"IE";i:6;s:3:"6.0";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:16:"Edge Mobile 15.0";i:5;s:11:"Edge Mobile";i:6;s:4:"15.0";i:7;s:10:"WinPhone10";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:16:"Edge Mobile 17.0";i:5;s:11:"Edge Mobile";i:6;s:4:"17.0";i:7;s:10:"WinPhone10";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:16:"Edge Mobile 12.0";i:5;s:11:"Edge Mobile";i:6;s:4:"12.0";i:7;s:10:"WinPhone10";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:16:"Edge Mobile 13.0";i:5;s:11:"Edge Mobile";i:6;s:4:"13.0";i:7;s:10:"WinPhone10";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:16:"YOLO Browser 1.0";i:5;s:12:"YOLO Browser";i:6;s:3:"1.0";i:7;s:7:"Android";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:16:"Edge Mobile 16.0";i:5;s:11:"Edge Mobile";i:6;s:4:"16.0";i:7;s:10:"WinPhone10";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:7:{i:3;i:3119;i:4;s:16:"Edge Mobile 14.0";i:5;s:11:"Edge Mobile";i:6;s:4:"14.0";i:7;s:10:"WinPhone10";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:5:{i:3;i:3119;i:4;s:15:"Headless Chrome";i:5;s:15:"Headless Chrome";i:7;s:5:"Linux";i:10;s:7:"Desktop";}',
	'a:4:{i:3;i:3119;i:4;s:15:"Firefox Generic";i:5;s:7:"Firefox";i:10;s:7:"Desktop";}',
	'a:4:{i:3;i:3119;i:4;s:14:"Chrome Generic";i:5;s:6:"Chrome";i:10;s:7:"Desktop";}',
	'a:4:{i:3;i:3119;i:4;s:14:"Safari Generic";i:5;s:6:"Safari";i:10;s:7:"Desktop";}',
	'a:6:{i:3;i:3119;i:4;s:13:"Chromium 69.0";i:5;s:8:"Chromium";i:6;s:4:"69.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}',
	'a:6:{i:3;i:3119;i:4;s:13:"Chromium 71.0";i:5;s:8:"Chromium";i:6;s:4:"71.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}',
	'a:6:{i:3;i:3119;i:4;s:13:"Chromium 66.0";i:5;s:8:"Chromium";i:6;s:4:"66.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}',
	'a:6:{i:3;i:3119;i:4;s:13:"Chromium 65.0";i:5;s:8:"Chromium";i:6;s:4:"65.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}',
	'a:6:{i:3;i:3119;i:4;s:13:"Chromium 64.0";i:5;s:8:"Chromium";i:6;s:4:"64.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}',
	'a:6:{i:3;i:3119;i:4;s:13:"Chromium 67.0";i:5;s:8:"Chromium";i:6;s:4:"67.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}',
	'a:6:{i:3;i:3119;i:4;s:13:"Chromium 70.0";i:5;s:8:"Chromium";i:6;s:4:"70.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}',
	'a:6:{i:3;i:3119;i:4;s:13:"Chromium 61.0";i:5;s:8:"Chromium";i:6;s:4:"61.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}',
	'a:6:{i:3;i:3119;i:4;s:13:"Chromium 63.0";i:5;s:8:"Chromium";i:6;s:4:"63.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}',
	'a:6:{i:3;i:3119;i:4;s:13:"Chromium 68.0";i:5;s:8:"Chromium";i:6;s:4:"68.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}',
	'a:6:{i:3;i:3119;i:4;s:13:"Chromium 62.0";i:5;s:8:"Chromium";i:6;s:4:"62.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}',
	'a:6:{i:3;i:3119;i:4;s:13:"Chromium 60.0";i:5;s:8:"Chromium";i:6;s:4:"60.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}',
	'a:7:{i:3;i:3119;i:4;s:13:"IEMobile 11.0";i:5;s:8:"IEMobile";i:6;s:4:"11.0";i:7;s:11:"WinPhone8.1";i:8;s:4:"true";i:10;s:12:"Mobile Phone";}',
	'a:6:{i:3;i:3119;i:4;s:13:"Chromium 57.0";i:5;s:8:"Chromium";i:6;s:4:"57.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}',
	'a:6:{i:3;i:3119;i:4;s:13:"Chromium 56.0";i:5;s:8:"Chromium";i:6;s:4:"56.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}',
	'a:6:{i:3;i:3119;i:4;s:13:"Chromium 46.0";i:5;s:8:"Chromium";i:6;s:4:"46.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}',
	'a:6:{i:3;i:3119;i:4;s:13:"Chromium 59.0";i:5;s:8:"Chromium";i:6;s:4:"59.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}',
	'a:6:{i:3;i:3119;i:4;s:13:"Chromium 48.0";i:5;s:8:"Chromium";i:6;s:4:"48.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}',
	'a:6:{i:3;i:3119;i:4;s:13:"Chromium 47.0";i:5;s:8:"Chromium";i:6;s:4:"47.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}',
	'a:6:{i:3;i:3119;i:4;s:13:"Chromium 58.0";i:5;s:8:"Chromium";i:6;s:4:"58.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}',
	'a:6:{i:3;i:3119;i:4;s:13:"Chromium 55.0";i:5;s:8:"Chromium";i:6;s:4:"55.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}',
	'a:6:{i:3;i:3119;i:4;s:13:"Chromium 45.0";i:5;s:8:"Chromium";i:6;s:4:"45.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}',
	'a:6:{i:3;i:3119;i:4;s:13:"Chromium 50.0";i:5;s:8:"Chromium";i:6;s:4:"50.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}',
	'a:6:{i:3;i:3119;i:4;s:13:"Chromium 49.0";i:5;s:8:"Chromium";i:6;s:4:"49.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}',
	'a:6:{i:3;i:3119;i:4;s:13:"Chromium 53.0";i:5;s:8:"Chromium";i:6;s:4:"53.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}',
	'a:6:{i:3;i:3119;i:4;s:13:"Chromium 52.0";i:5;s:8:"Chromium";i:6;s:4:"52.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}',
	'a:6:{i:3;i:3119;i:4;s:13:"Chromium 51.0";i:5;s:8:"Chromium";i:6;s:4:"51.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}',
	'a:6:{i:3;i:3119;i:4;s:13:"Chromium 54.0";i:5;s:8:"Chromium";i:6;s:4:"54.0";i:7;s:5:"Linux";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:12:"Firefox 41.0";i:5;s:7:"Firefox";i:6;s:4:"41.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:12:"Firefox 31.0";i:5;s:7:"Firefox";i:6;s:4:"31.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:12:"Firefox 63.0";i:5;s:7:"Firefox";i:6;s:4:"63.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:12:"Firefox 54.0";i:5;s:7:"Firefox";i:6;s:4:"54.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:12:"Firefox 33.0";i:5;s:7:"Firefox";i:6;s:4:"33.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:12:"Firefox 45.0";i:5;s:7:"Firefox";i:6;s:4:"45.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:12:"Firefox 51.0";i:5;s:7:"Firefox";i:6;s:4:"51.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:12:"Firefox 38.0";i:5;s:7:"Firefox";i:6;s:4:"38.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:12:"Firefox 55.0";i:5;s:7:"Firefox";i:6;s:4:"55.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:12:"Firefox 43.0";i:5;s:7:"Firefox";i:6;s:4:"43.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:12:"Firefox 44.0";i:5;s:7:"Firefox";i:6;s:4:"44.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:12:"Firefox 37.0";i:5;s:7:"Firefox";i:6;s:4:"37.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:12:"Firefox 34.0";i:5;s:7:"Firefox";i:6;s:4:"34.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:12:"Firefox 60.0";i:5;s:7:"Firefox";i:6;s:4:"60.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:12:"Firefox 50.0";i:5;s:7:"Firefox";i:6;s:4:"50.0";i:10;s:7:"Desktop";}',
	'a:4:{i:3;i:3119;i:4;s:12:"Edge Generic";i:5;s:4:"Edge";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:12:"Firefox 42.0";i:5;s:7:"Firefox";i:6;s:4:"42.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:12:"Firefox 30.0";i:5;s:7:"Firefox";i:6;s:4:"30.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:12:"Firefox 57.0";i:5;s:7:"Firefox";i:6;s:4:"57.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:12:"Firefox 49.0";i:5;s:7:"Firefox";i:6;s:4:"49.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:12:"Firefox 61.0";i:5;s:7:"Firefox";i:6;s:4:"61.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:12:"Firefox 56.0";i:5;s:7:"Firefox";i:6;s:4:"56.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:12:"Firefox 47.0";i:5;s:7:"Firefox";i:6;s:4:"47.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:12:"Firefox 58.0";i:5;s:7:"Firefox";i:6;s:4:"58.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:12:"Firefox 53.0";i:5;s:7:"Firefox";i:6;s:4:"53.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:12:"Firefox 36.0";i:5;s:7:"Firefox";i:6;s:4:"36.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:12:"Firefox 40.0";i:5;s:7:"Firefox";i:6;s:4:"40.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:12:"Firefox 52.0";i:5;s:7:"Firefox";i:6;s:4:"52.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:12:"Firefox 48.0";i:5;s:7:"Firefox";i:6;s:4:"48.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:12:"Firefox 32.0";i:5;s:7:"Firefox";i:6;s:4:"32.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:12:"Firefox 39.0";i:5;s:7:"Firefox";i:6;s:4:"39.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:12:"Firefox 35.0";i:5;s:7:"Firefox";i:6;s:4:"35.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:12:"Firefox 46.0";i:5;s:7:"Firefox";i:6;s:4:"46.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:12:"Firefox 62.0";i:5;s:7:"Firefox";i:6;s:4:"62.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:12:"Firefox 59.0";i:5;s:7:"Firefox";i:6;s:4:"59.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:11:"Chrome 62.0";i:5;s:6:"Chrome";i:6;s:4:"62.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:11:"Chrome 66.0";i:5;s:6:"Chrome";i:6;s:4:"66.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:11:"Chrome 67.0";i:5;s:6:"Chrome";i:6;s:4:"67.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:11:"Chrome 71.0";i:5;s:6:"Chrome";i:6;s:4:"71.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:11:"Chrome 54.0";i:5;s:6:"Chrome";i:6;s:4:"54.0";i:10;s:7:"Desktop";}',
	'a:6:{i:3;i:3119;i:4;s:11:"Safari 10.0";i:5;s:6:"Safari";i:6;s:4:"10.0";i:7;s:6:"MacOSX";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:11:"Chrome 52.0";i:5;s:6:"Chrome";i:6;s:4:"52.0";i:10;s:7:"Desktop";}',
	'a:6:{i:3;i:3119;i:4;s:11:"Safari 10.1";i:5;s:6:"Safari";i:6;s:4:"10.1";i:7;s:6:"MacOSX";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:11:"Chrome 63.0";i:5;s:6:"Chrome";i:6;s:4:"63.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:11:"Chrome 59.0";i:5;s:6:"Chrome";i:6;s:4:"59.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:11:"Chrome 60.0";i:5;s:6:"Chrome";i:6;s:4:"60.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:11:"Chrome 65.0";i:5;s:6:"Chrome";i:6;s:4:"65.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:11:"Chrome 58.0";i:5;s:6:"Chrome";i:6;s:4:"58.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:11:"Chrome 57.0";i:5;s:6:"Chrome";i:6;s:4:"57.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:11:"Chrome 55.0";i:5;s:6:"Chrome";i:6;s:4:"55.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:11:"Chrome 56.0";i:5;s:6:"Chrome";i:6;s:4:"56.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:11:"Chrome 50.0";i:5;s:6:"Chrome";i:6;s:4:"50.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:11:"Chrome 51.0";i:5;s:6:"Chrome";i:6;s:4:"51.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:11:"Chrome 70.0";i:5;s:6:"Chrome";i:6;s:4:"70.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:11:"Chrome 68.0";i:5;s:6:"Chrome";i:6;s:4:"68.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:11:"Chrome 53.0";i:5;s:6:"Chrome";i:6;s:4:"53.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:11:"Chrome 69.0";i:5;s:6:"Chrome";i:6;s:4:"69.0";i:10;s:7:"Desktop";}',
	'a:6:{i:3;i:3119;i:4;s:11:"Safari 12.0";i:5;s:6:"Safari";i:6;s:4:"12.0";i:7;s:6:"MacOSX";i:10;s:7:"Desktop";}',
	'a:6:{i:3;i:3119;i:4;s:11:"Safari 11.1";i:5;s:6:"Safari";i:6;s:4:"11.1";i:7;s:6:"MacOSX";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:11:"Chrome 61.0";i:5;s:6:"Chrome";i:6;s:4:"61.0";i:10;s:7:"Desktop";}',
	'a:6:{i:3;i:3119;i:4;s:11:"Safari 11.0";i:5;s:6:"Safari";i:6;s:4:"11.0";i:7;s:6:"MacOSX";i:10;s:7:"Desktop";}',
	'a:6:{i:3;i:3119;i:4;s:11:"Safari 10.2";i:5;s:6:"Safari";i:6;s:4:"10.2";i:7;s:6:"MacOSX";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:11:"Chrome 64.0";i:5;s:6:"Chrome";i:6;s:4:"64.0";i:10;s:7:"Desktop";}',
	'a:7:{i:3;i:3119;i:4;s:10:"Coast 3.01";i:5;s:5:"Coast";i:6;s:4:"3.01";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:5:{i:3;i:3119;i:4;s:10:"Opera 39.0";i:5;s:5:"Opera";i:6;s:4:"39.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:10:"Opera 37.0";i:5;s:5:"Opera";i:6;s:4:"37.0";i:10;s:7:"Desktop";}',
	'a:7:{i:3;i:3119;i:4;s:10:"Coast 4.01";i:5;s:5:"Coast";i:6;s:4:"4.01";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:5:{i:3;i:3119;i:4;s:10:"Opera 38.0";i:5;s:5:"Opera";i:6;s:4:"38.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:10:"Opera 55.0";i:5;s:5:"Opera";i:6;s:4:"55.0";i:10;s:7:"Desktop";}',
	'a:7:{i:3;i:3119;i:4;s:10:"Coast 3.02";i:5;s:5:"Coast";i:6;s:4:"3.02";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:5:{i:3;i:3119;i:4;s:10:"Opera 36.0";i:5;s:5:"Opera";i:6;s:4:"36.0";i:10;s:7:"Desktop";}',
	'a:7:{i:3;i:3119;i:4;s:10:"Coast 3.21";i:5;s:5:"Coast";i:6;s:4:"3.21";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:6:{i:3;i:3119;i:4;s:10:"Safari 6.0";i:5;s:6:"Safari";i:6;s:3:"6.0";i:7;s:6:"MacOSX";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:10:"Opera 35.0";i:5;s:5:"Opera";i:6;s:4:"35.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:10:"Opera 34.0";i:5;s:5:"Opera";i:6;s:4:"34.0";i:10;s:7:"Desktop";}',
	'a:7:{i:3;i:3119;i:4;s:10:"Coast 4.02";i:5;s:5:"Coast";i:6;s:4:"4.02";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:5:{i:3;i:3119;i:4;s:10:"Opera 46.0";i:5;s:5:"Opera";i:6;s:4:"46.0";i:10;s:7:"Desktop";}',
	'a:7:{i:3;i:3119;i:4;s:10:"Coast 4.21";i:5;s:5:"Coast";i:6;s:4:"4.21";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:5:{i:3;i:3119;i:4;s:10:"Opera 30.0";i:5;s:5:"Opera";i:6;s:4:"30.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:10:"Opera 29.0";i:5;s:5:"Opera";i:6;s:4:"29.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:10:"Opera 47.0";i:5;s:5:"Opera";i:6;s:4:"47.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:10:"Opera 45.0";i:5;s:5:"Opera";i:6;s:4:"45.0";i:10;s:7:"Desktop";}',
	'a:7:{i:3;i:3119;i:4;s:10:"Coast 5.03";i:5;s:5:"Coast";i:6;s:4:"5.03";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:5:{i:3;i:3119;i:4;s:10:"Opera 42.0";i:5;s:5:"Opera";i:6;s:4:"42.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:10:"Safari 8.0";i:5;s:6:"Safari";i:6;s:3:"8.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:10:"Opera 48.0";i:5;s:5:"Opera";i:6;s:4:"48.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:10:"Opera 28.0";i:5;s:5:"Opera";i:6;s:4:"28.0";i:10;s:7:"Desktop";}',
	'a:7:{i:3;i:3119;i:4;s:10:"Coast 4.30";i:5;s:5:"Coast";i:6;s:4:"4.30";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:7:{i:3;i:3119;i:4;s:10:"Coast 4.51";i:5;s:5:"Coast";i:6;s:4:"4.51";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:6:{i:3;i:3119;i:4;s:10:"Safari 9.0";i:5;s:6:"Safari";i:6;s:3:"9.0";i:7;s:6:"MacOSX";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:10:"Opera 43.0";i:5;s:5:"Opera";i:6;s:4:"43.0";i:10;s:7:"Desktop";}',
	'a:7:{i:3;i:3119;i:4;s:10:"Coast 5.01";i:5;s:5:"Coast";i:6;s:4:"5.01";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:7:{i:3;i:3119;i:4;s:10:"Coast 5.02";i:5;s:5:"Coast";i:6;s:4:"5.02";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:5:{i:3;i:3119;i:4;s:10:"Opera 27.0";i:5;s:5:"Opera";i:6;s:4:"27.0";i:10;s:7:"Desktop";}',
	'a:7:{i:3;i:3119;i:4;s:10:"Coast 4.31";i:5;s:5:"Coast";i:6;s:4:"4.31";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:5:{i:3;i:3119;i:4;s:10:"Opera 44.0";i:5;s:5:"Opera";i:6;s:4:"44.0";i:10;s:7:"Desktop";}',
	'a:6:{i:3;i:3119;i:4;s:10:"Safari 9.1";i:5;s:6:"Safari";i:6;s:3:"9.1";i:7;s:6:"MacOSX";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:10:"Safari 7.1";i:5;s:6:"Safari";i:6;s:3:"7.1";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:10:"Opera 41.0";i:5;s:5:"Opera";i:6;s:4:"41.0";i:10;s:7:"Desktop";}',
	'a:6:{i:3;i:3119;i:4;s:10:"Safari 6.2";i:5;s:6:"Safari";i:6;s:3:"6.2";i:7;s:6:"MacOSX";i:10;s:7:"Desktop";}',
	'a:6:{i:3;i:3119;i:4;s:10:"Safari 7.0";i:5;s:6:"Safari";i:6;s:3:"7.0";i:7;s:6:"MacOSX";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:10:"Opera 54.0";i:5;s:5:"Opera";i:6;s:4:"54.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:10:"Opera 51.0";i:5;s:5:"Opera";i:6;s:4:"51.0";i:10;s:7:"Desktop";}',
	'a:6:{i:3;i:3119;i:4;s:10:"Safari 6.1";i:5;s:6:"Safari";i:6;s:3:"6.1";i:7;s:6:"MacOSX";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:10:"Opera 31.0";i:5;s:5:"Opera";i:6;s:4:"31.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:10:"Opera 53.0";i:5;s:5:"Opera";i:6;s:4:"53.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:10:"Opera 52.0";i:5;s:5:"Opera";i:6;s:4:"52.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:10:"Opera 33.0";i:5;s:5:"Opera";i:6;s:4:"33.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:10:"Opera 32.0";i:5;s:5:"Opera";i:6;s:4:"32.0";i:10;s:7:"Desktop";}',
	'a:7:{i:3;i:3119;i:4;s:10:"Coast 4.03";i:5;s:5:"Coast";i:6;s:4:"4.03";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:7:{i:3;i:3119;i:4;s:10:"Coast 5.04";i:5;s:5:"Coast";i:6;s:4:"5.04";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:5:{i:3;i:3119;i:4;s:10:"Opera 40.0";i:5;s:5:"Opera";i:6;s:4:"40.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:10:"Opera 49.0";i:5;s:5:"Opera";i:6;s:4:"49.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:10:"Opera 50.0";i:5;s:5:"Opera";i:6;s:4:"50.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:9:"Edge 15.0";i:5;s:4:"Edge";i:6;s:4:"15.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:9:"Edge 13.0";i:5;s:4:"Edge";i:6;s:4:"13.0";i:10;s:7:"Desktop";}',
	'a:7:{i:3;i:3119;i:4;s:9:"Coast 3.0";i:5;s:5:"Coast";i:6;s:3:"3.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:7:{i:3;i:3119;i:4;s:9:"Coast 4.1";i:5;s:5:"Coast";i:6;s:3:"4.1";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:7:{i:3;i:3119;i:4;s:9:"Coast 3.1";i:5;s:5:"Coast";i:6;s:3:"3.1";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:7:{i:3;i:3119;i:4;s:9:"Coast 4.5";i:5;s:5:"Coast";i:6;s:3:"4.5";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:5:{i:3;i:3119;i:4;s:9:"Edge 14.0";i:5;s:4:"Edge";i:6;s:4:"14.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:9:"Edge 16.0";i:5;s:4:"Edge";i:6;s:4:"16.0";i:10;s:7:"Desktop";}',
	'a:7:{i:3;i:3119;i:4;s:9:"Coast 4.0";i:5;s:5:"Coast";i:6;s:3:"4.0";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:5:{i:3;i:3119;i:4;s:9:"Edge 17.0";i:5;s:4:"Edge";i:6;s:4:"17.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:9:"Edge 12.0";i:5;s:4:"Edge";i:6;s:4:"12.0";i:10;s:7:"Desktop";}',
	'a:7:{i:3;i:3119;i:4;s:9:"Coast 4.4";i:5;s:5:"Coast";i:6;s:3:"4.4";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:2:{i:3;i:3021;i:10;s:12:"Mobile Phone";}',
	'a:5:{i:3;i:3119;i:4;s:7:"IE 7.0b";i:5;s:2:"IE";i:6;s:4:"7.0b";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:6:"IE 8.0";i:5;s:2:"IE";i:6;s:3:"8.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:6:"IE 9.0";i:5;s:2:"IE";i:6;s:3:"9.0";i:10;s:7:"Desktop";}',
	'a:5:{i:3;i:3119;i:4;s:6:"IE 7.0";i:5;s:2:"IE";i:6;s:3:"7.0";i:10;s:7:"Desktop";}',
	'a:1:{i:3;i:3021;}',
	'a:3:{i:3;i:3021;i:9;s:4:"true";i:10;s:6:"Tablet";}',
	'a:6:{i:3;i:3119;i:4;s:5:"Coast";i:5;s:5:"Coast";i:7;s:3:"iOS";i:8;s:4:"true";i:10;s:13:"Mobile Device";}',
	'a:3:{i:3;i:3119;i:4;s:15:"Default Browser";i:5;s:15:"Default Browser";}'
);
$userAgents=array(
	3144=>'IEMobile 11.0',
	3118=>'Seraphic Sraf 3.9',
	3112=>'Seraphic Sraf 3.0',
	3110=>'Seraphic Sraf 3.5',
	3117=>'Edge 41.0 for iOS',
	3114=>'Edge 42.0 for iOS',
	3064=>'Edge Generic for iOS',
	3096=>'Android Browser 5.0',
	3175=>'Edge Generic',
	3281=>'Edge 16.0',
	3280=>'Edge 14.0',
	3275=>'Edge 13.0',
	3274=>'Edge 15.0',
	3283=>'Edge 17.0',
	3247=>'Coast 4.30',
	3226=>'Coast 4.01',
	3248=>'Coast 4.51',
	3223=>'Coast 3.01',
	3231=>'Coast 3.21',
	3229=>'Coast 3.02',
	3242=>'Coast 5.03',
	3269=>'Coast 4.03',
	3235=>'Coast 4.02',
	3252=>'Coast 5.02',
	3251=>'Coast 5.01',
	3237=>'Coast 4.21',
	3254=>'Coast 4.31',
	3270=>'Coast 5.04',
	3077=>'Android Browser 4.0',
	3285=>'Coast 4.4',
	3279=>'Coast 4.5',
	3277=>'Coast 4.1',
	3282=>'Coast 4.0',
	3276=>'Coast 3.0',
	3278=>'Coast 3.1',
	3293=>'Coast',
	3121=>'Edge Mobile 15.0',
	3122=>'Edge Mobile 17.0',
	3124=>'Edge Mobile 13.0',
	3127=>'Edge Mobile 14.0',
	3126=>'Edge Mobile 16.0',
	3095=>'Android Browser 5.1',
	3092=>'Edge Mobile Generic',
	3104=>'Mobile Safari 12.0',
	3108=>'Mobile Safari 10.0',
	3106=>'Mobile Safari 11.0',
	3102=>'IE 11.0 for Desktop',
	3115=>'Mobile Safari 7.0',
	3113=>'Mobile Safari 8.0',
	3116=>'Mobile Safari 6.0',
	3111=>'Mobile Safari 9.0',
	3078=>'Chrome 61.0 for iOS',
	3088=>'Chrome 65.0 for iOS',
	3085=>'Chrome 58.0 for iOS',
	3080=>'Chrome 60.0 for iOS',
	3098=>'Chrome 63.0 for iOS',
	3089=>'Chrome 62.0 for iOS',
	3101=>'Chrome 64.0 for iOS',
	3079=>'Chrome 57.0 for iOS',
	3076=>'Chrome 56.0 for iOS',
	3081=>'Chrome 59.0 for iOS',
	3094=>'Chrome 48.0 for iOS',
	3091=>'Chrome 51.0 for iOS',
	3090=>'Chrome 52.0 for iOS',
	3074=>'Chrome 49.0 for iOS',
	3097=>'Chrome 54.0 for iOS',
	3082=>'Chrome 67.0 for iOS',
	3072=>'Chrome 55.0 for iOS',
	3083=>'Chrome 66.0 for iOS',
	3070=>'Chrome 69.0 for iOS',
	3086=>'Chrome 68.0 for iOS',
	3069=>'Chrome 70.0 for iOS',
	3100=>'Chrome 50.0 for iOS',
	3071=>'Chrome 71.0 for iOS',
	3084=>'Chrome 53.0 for iOS',
	3123=>'Edge Mobile 12.0',
	3027=>'Chrome Generic for iOS',
	3033=>'Mobile Safari Generic',
	3288=>'IE 8.0',
	3036=>'Edge 42.0 for Android',
	3031=>'Edge 41.0 for Android',
	3051=>'Android WebView 62.0',
	3063=>'Android WebView 45.0',
	3050=>'Android WebView 70.0',
	3060=>'Android WebView 69.0',
	3054=>'Android WebView 65.0',
	3053=>'Android WebView 64.0',
	3055=>'Android WebView 61.0',
	3067=>'Android WebView 43.0',
	3038=>'Android WebView 66.0',
	3066=>'Android WebView 44.0',
	3037=>'Android WebView 67.0',
	3056=>'Android WebView 68.0',
	3061=>'Android WebView 46.0',
	3049=>'Android WebView 71.0',
	3039=>'Android WebView 53.0',
	3052=>'Android WebView 63.0',
	3062=>'Android WebView 54.0',
	3040=>'Android WebView 55.0',
	3057=>'Android WebView 58.0',
	3059=>'Android WebView 60.0',
	3041=>'Android WebView 56.0',
	3042=>'Android WebView 57.0',
	3043=>'Android WebView 52.0',
	3047=>'Android WebView 49.0',
	3046=>'Android WebView 48.0',
	3045=>'Android WebView 47.0',
	3058=>'Android WebView 59.0',
	3048=>'Android WebView 50.0',
	3044=>'Android WebView 51.0',
	3219=>'Chrome 61.0',
	3213=>'Chrome 70.0',
	3205=>'Chrome 60.0',
	3206=>'Chrome 65.0',
	3203=>'Chrome 63.0',
	3197=>'Chrome 67.0',
	3222=>'Chrome 64.0',
	3214=>'Chrome 68.0',
	3195=>'Chrome 62.0',
	3196=>'Chrome 66.0',
	3216=>'Chrome 69.0',
	3201=>'Chrome 52.0',
	3209=>'Chrome 55.0',
	3208=>'Chrome 57.0',
	3198=>'Chrome 71.0',
	3199=>'Chrome 54.0',
	3215=>'Chrome 53.0',
	3211=>'Chrome 50.0',
	3212=>'Chrome 51.0',
	3207=>'Chrome 58.0',
	3210=>'Chrome 56.0',
	3204=>'Chrome 59.0',
	3130=>'Chrome Generic',
	2918=>'Edge Generic for Android',
	3139=>'Chromium 61.0',
	3142=>'Chromium 62.0',
	3140=>'Chromium 63.0',
	3136=>'Chromium 64.0',
	3143=>'Chromium 60.0',
	3148=>'Chromium 59.0',
	3146=>'Chromium 56.0',
	3145=>'Chromium 57.0',
	3151=>'Chromium 58.0',
	3135=>'Chromium 65.0',
	3134=>'Chromium 66.0',
	3153=>'Chromium 45.0',
	3150=>'Chromium 47.0',
	3133=>'Chromium 71.0',
	3147=>'Chromium 46.0',
	3138=>'Chromium 70.0',
	3141=>'Chromium 68.0',
	3132=>'Chromium 69.0',
	3152=>'Chromium 55.0',
	3137=>'Chromium 67.0',
	3157=>'Chromium 52.0',
	3158=>'Chromium 51.0',
	3154=>'Chromium 50.0',
	3149=>'Chromium 48.0',
	3156=>'Chromium 53.0',
	3155=>'Chromium 49.0',
	3159=>'Chromium 54.0',
	3284=>'Edge 12.0',
	3021=>'Mobile Safari UIWebView',
	3008=>'Chrome 49.0 for Android',
	2994=>'Chrome 52.0 for Android',
	2995=>'Chrome 51.0 for Android',
	2993=>'Chrome 53.0 for Android',
	2996=>'Chrome 54.0 for Android',
	3011=>'Chrome 55.0 for Android',
	3002=>'Chrome 50.0 for Android',
	3009=>'Chrome 48.0 for Android',
	3004=>'Chrome 44.0 for Android',
	3005=>'Chrome 43.0 for Android',
	3003=>'Chrome 45.0 for Android',
	3006=>'Chrome 46.0 for Android',
	3007=>'Chrome 47.0 for Android',
	3015=>'Chrome 56.0 for Android',
	3020=>'Chrome 57.0 for Android',
	2992=>'Chrome 66.0 for Android',
	3016=>'Chrome 65.0 for Android',
	3013=>'Chrome 67.0 for Android',
	3010=>'Chrome 68.0 for Android',
	2998=>'Chrome 69.0 for Android',
	3014=>'Chrome 64.0 for Android',
	3012=>'Chrome 63.0 for Android',
	3023=>'Chrome 59.0 for Android',
	3022=>'Chrome 58.0 for Android',
	3019=>'Chrome 60.0 for Android',
	3017=>'Chrome 61.0 for Android',
	3018=>'Chrome 62.0 for Android',
	3000=>'Chrome 70.0 for Android',
	2997=>'Chrome 71.0 for Android',
	3266=>'Opera 52.0',
	3265=>'Opera 53.0',
	3250=>'Opera 43.0',
	3262=>'Opera 51.0',
	3267=>'Opera 33.0',
	3261=>'Opera 54.0',
	3258=>'Opera 41.0',
	3246=>'Opera 28.0',
	3253=>'Opera 27.0',
	3228=>'Opera 55.0',
	3243=>'Opera 42.0',
	3234=>'Opera 34.0',
	3273=>'Opera 50.0',
	3255=>'Opera 44.0',
	3236=>'Opera 46.0',
	3225=>'Opera 37.0',
	3241=>'Opera 45.0',
	3240=>'Opera 47.0',
	3245=>'Opera 48.0',
	3272=>'Opera 49.0',
	3233=>'Opera 35.0',
	3230=>'Opera 36.0',
	3227=>'Opera 38.0',
	3224=>'Opera 39.0',
	3268=>'Opera 32.0',
	3239=>'Opera 29.0',
	3264=>'Opera 31.0',
	3271=>'Opera 40.0',
	3238=>'Opera 30.0',
	3290=>'IE 7.0',
	2906=>'Chrome Generic for Android',
	3125=>'YOLO Browser 1.0',
	3001=>'Android WebView Generic',
	3087=>'Android Browser 4.1',
	3075=>'Android Browser 4.2',
	2913=>'Safari Generic for Darwin',
	3221=>'Safari 10.2',
	3202=>'Safari 10.1',
	3220=>'Safari 11.0',
	3218=>'Safari 11.1',
	3200=>'Safari 10.0',
	3217=>'Safari 12.0',
	3099=>'Android Browser 4.4',
	3073=>'Android Browser 4.3',
	3260=>'Safari 7.0',
	3131=>'Safari Generic',
	3244=>'Safari 8.0',
	3259=>'Safari 6.2',
	3263=>'Safari 6.1',
	3249=>'Safari 9.0',
	3232=>'Safari 6.0',
	3256=>'Safari 9.1',
	3257=>'Safari 7.1',
	3128=>'Headless Chrome',
	3093=>'IE 10.0 for Desktop',
	2991=>'Android Browser Generic',
	3109=>'IE 11.0 for Tablet',
	3186=>'Firefox 40.0',
	3172=>'Firefox 34.0',
	3177=>'Firefox 30.0',
	3171=>'Firefox 37.0',
	3190=>'Firefox 39.0',
	3189=>'Firefox 32.0',
	3164=>'Firefox 33.0',
	3178=>'Firefox 57.0',
	3167=>'Firefox 38.0',
	3163=>'Firefox 54.0',
	3183=>'Firefox 58.0',
	3185=>'Firefox 36.0',
	3161=>'Firefox 31.0',
	3168=>'Firefox 55.0',
	3191=>'Firefox 35.0',
	3174=>'Firefox 50.0',
	3180=>'Firefox 61.0',
	3193=>'Firefox 62.0',
	3173=>'Firefox 60.0',
	3179=>'Firefox 49.0',
	3194=>'Firefox 59.0',
	3181=>'Firefox 56.0',
	3187=>'Firefox 52.0',
	3184=>'Firefox 53.0',
	3162=>'Firefox 63.0',
	3166=>'Firefox 51.0',
	3165=>'Firefox 45.0',
	3170=>'Firefox 44.0',
	3192=>'Firefox 46.0',
	3169=>'Firefox 43.0',
	3160=>'Firefox 41.0',
	3176=>'Firefox 42.0',
	3188=>'Firefox 48.0',
	3182=>'Firefox 47.0',
	2904=>'Firefox Generic for Android',
	3289=>'IE 9.0',
	3065=>'Safari Generic Older',
	3129=>'Firefox Generic',
	3287=>'IE 7.0b',
	2951=>'Firefox 63.0 for Android',
	2941=>'Firefox 22.0 for Android',
	2940=>'Firefox 21.0 for Android',
	2930=>'Firefox 62.0 for Android',
	2957=>'Firefox 17.0 for Android',
	2939=>'Firefox 24.0 for Android',
	2964=>'Firefox 32.0 for Android',
	2955=>'Firefox 18.0 for Android',
	2959=>'Firefox 38.0 for Android',
	2942=>'Firefox 23.0 for Android',
	2954=>'Firefox 36.0 for Android',
	2956=>'Firefox 37.0 for Android',
	2968=>'Firefox 19.0 for Android',
	2932=>'Firefox 59.0 for Android',
	2935=>'Firefox 50.1 for Android',
	2937=>'Firefox 25.0 for Android',
	2936=>'Firefox 50.0 for Android',
	2925=>'Firefox 51.0 for Android',
	2921=>'Firefox 53.0 for Android',
	2926=>'Firefox 52.0 for Android',
	2946=>'Firefox 49.0 for Android',
	2948=>'Firefox 30.0 for Android',
	2950=>'Firefox 29.0 for Android',
	2947=>'Firefox 31.0 for Android',
	2945=>'Firefox 48.0 for Android',
	2922=>'Firefox 54.0 for Android',
	2958=>'Firefox 39.0 for Android',
	2934=>'Firefox 58.0 for Android',
	2952=>'Firefox 60.0 for Android',
	2931=>'Firefox 61.0 for Android',
	2933=>'Firefox 57.0 for Android',
	2927=>'Firefox 55.0 for Android',
	2928=>'Firefox 56.0 for Android',
	2938=>'Firefox 20.0 for Android',
	2929=>'Firefox 12.0 for Android',
	2944=>'Firefox 27.0 for Android',
	2969=>'Firefox 16.0 for Android',
	2967=>'Firefox 34.0 for Android',
	2973=>'Firefox 42.0 for Android',
	2976=>'Firefox 13.0 for Android',
	2962=>'Firefox 33.0 for Android',
	2943=>'Firefox 26.0 for Android',
	2923=>'Firefox 11.0 for Android',
	2972=>'Firefox 41.0 for Android',
	2965=>'Firefox 33.1 for Android',
	2978=>'Firefox 15.0 for Android',
	2963=>'Firefox 46.0 for Android',
	2974=>'Firefox 14.0 for Android',
	2977=>'Firefox 45.0 for Android',
	2975=>'Firefox 44.0 for Android',
	2919=>'Firefox 47.0 for Android',
	2971=>'Firefox 43.0 for Android',
	2970=>'Firefox 40.0 for Android',
	2924=>'Firefox 10.0 for Android',
	2961=>'Firefox 35.0 for Android',
	2949=>'Firefox 28.0 for Android',
	2988=>'Firefox 2.0 for Android',
	2982=>'Firefox 8.0 for Android',
	2990=>'Firefox 9.0 for Android',
	2983=>'Firefox 1.1 for Android',
	2984=>'Firefox 1.0 for Android',
	2987=>'Firefox 6.0 for Android',
	2999=>'Firefox 7.0 for Android',
	2981=>'Firefox 5.0 for Android',
	2986=>'Firefox 2.3 for Android',
	2985=>'Firefox 4.0 for Android',
	2989=>'Firefox 2.1 for Android',
	3105=>'IE 6.0 for Desktop',
	3119=>'DefaultProperties',
	3029=>'Safari 8.0 for Darwin',
	3030=>'Safari 9.1 for Darwin',
	3028=>'Safari 10.0 for Darwin',
	3026=>'Safari 11.0 for Darwin',
	3034=>'Safari 9.0 for Darwin',
	3032=>'Safari 6.0 for Darwin',
	3035=>'Safari 7.0 for Darwin'
);
$patterns=array(
	'@^Mozilla/5\.0.*\(.*Windows Phone 8\.1.*Trident/(\d)\.0.*rv\:11.*IEMobile.11\.0\) like Android .*; compatible\) like iPhone OS .* Mac OS X WebKit/537\.36 \(.*khtml.*like.*gecko.*\) Chrome.*Safari.*$@'=>'a:2:{s:2:"@7";i:0;s:2:"@8";i:1;}',
	'@^Mozilla/5\.0 \(Linux; Linux mips\) applewebkit.* \(.*khtml.*like.*gecko.*\).*Chromium/.* Safari/.*\) SRAF/3\.(\d).* \(\+TRICKMODE; NEXUS; Nexus_AN01.*$@'=>'a:3:{s:2:"@9";i:2;s:2:"@0";i:3;s:2:"@5";i:4;}',
	'@^Mozilla/5\.0 \(iPhone.*CPU iPhone OS .* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/.* EdgiOS/4(\d)\..* Mobile/.* Safari/.*$@'=>'a:2:{s:2:"@1";i:5;s:2:"@2";i:6;}',
	'@^Mozilla/5\.0 \(iPhone.*CPU iPhone OS .* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/.* EdgiOS/.* Mobile/.* Safari/.*$@'=>7,
	'@^Mozilla/5\.0 \(Macintosh; .*Mac OS X.*; HTC_SensationXL_Beats_X315e; .*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/5\.0.*Safari.*$@'=>8,
	'@^Mozilla/5\.0 \(.*Windows.* Anonymisiert durch AlMiSoft Browser\-.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.* Safari/.* Edge/.*$@'=>9,
	'@^Mozilla/5\.0 \(.*Windows NT 10\.0.*Win64. x64.* Xbox; Xbox One\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.* Safari/.* Edge/1(\d)\..*$@'=>'a:5:{s:2:"@6";i:10;s:2:"@4";i:11;s:2:"@3";i:12;s:2:"@5";i:14;s:2:"@7";i:15;}',
	'@^Mozilla/5\.0 \(.*CPU iPhone OS .* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/.* EdgiOS/4(\d)\..* Mobile/.* Safari/.*$@'=>'a:2:{s:2:"@2";i:13;s:2:"@1";i:16;}',
	'@^Mozilla/5\.0 \(.*Windows NT 10\.0.*Win64. x64.* Xbox; Xbox One\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.* Safari/.* Edge/.*$@'=>17,
	'@^Mozilla/5\.0 \(.*CPU iPhone OS .* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/.* EdgiOS/.* Mobile/.* Safari/.*$@'=>18,
	'@^Mozilla/5\.0 \(Macintosh; .*Mac OS X.*; HTC_IncredibleS_S710e; .*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/5\.0.*Safari.*$@'=>19,
	'@^Mozilla/5\.0 \(iPhone.*CPU iPhone OS .* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Coast/(\d)\.(\d)(\d).* Mobile/.* Safari/.*$@'=>'a:14:{s:6:"@4|3|0";i:20;s:6:"@4|0|1";i:21;s:6:"@4|5|1";i:22;s:6:"@3|0|1";i:23;s:6:"@3|2|1";i:24;s:6:"@3|0|2";i:25;s:6:"@5|0|3";i:26;s:6:"@4|0|3";i:27;s:6:"@4|0|2";i:28;s:6:"@5|0|2";i:29;s:6:"@5|0|1";i:30;s:6:"@4|2|1";i:31;s:6:"@4|3|1";i:32;s:6:"@5|0|4";i:33;}',
	'@^Mozilla/5\.0 \(Macintosh; .*Mac OS X.*; HTC_Flyer_P510e Build/.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/4\.0.*Safari.*$@'=>34,
	'@^Mozilla/5\.0 \(iPhone.*CPU iPhone OS .* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Coast/(\d)\.(\d).* Mobile/.* Safari/.*$@'=>'a:6:{s:4:"@4|4";i:35;s:4:"@4|5";i:36;s:4:"@4|1";i:37;s:4:"@4|0";i:38;s:4:"@3|0";i:39;s:4:"@3|1";i:40;}',
	'@^Mozilla/5\.0 \(Macintosh; .*Mac OS X.*; HTC_Sensation_Z710e; .*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/5\.0.*Safari.*$@'=>41,
	'@^Mozilla/5\.0 \(iPod.*CPU iPhone OS .* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Coast/(\d)\.(\d)(\d).* Mobile/.* Safari/.*$@'=>'a:14:{s:6:"@5|0|3";i:42;s:6:"@4|0|3";i:43;s:6:"@5|0|4";i:44;s:6:"@3|0|1";i:45;s:6:"@4|5|1";i:46;s:6:"@4|3|0";i:47;s:6:"@5|0|1";i:48;s:6:"@4|3|1";i:49;s:6:"@5|0|2";i:50;s:6:"@4|2|1";i:51;s:6:"@4|0|1";i:52;s:6:"@3|2|1";i:53;s:6:"@4|0|2";i:54;s:6:"@3|0|2";i:55;}',
	'@^Mozilla/5\.0 \(Macintosh; .*Mac OS X.*; HTC_DesireHD_A9191; .*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/5\.0.*Safari.*$@'=>56,
	'@^Mozilla/5\.0 \(iPod.*CPU iPhone OS .* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Coast/(\d)\.(\d).* Mobile/.* Safari/.*$@'=>'a:6:{s:4:"@4|5";i:57;s:4:"@4|1";i:58;s:4:"@4|0";i:59;s:4:"@3|0";i:60;s:4:"@3|1";i:61;s:4:"@4|4";i:62;}',
	'@^Mozilla/5\.0 \(iPhone.*CPU iPhone OS .* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Coast/.* Mobile/.* Safari/.*$@'=>63,
	'@^Mozilla/5\.0 \(.*Windows Phone 10\.0.*Xbox; Xbox One\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.* Safari/.* Edge/1(\d)\..*$@'=>'a:5:{s:2:"@5";i:64;s:2:"@7";i:65;s:2:"@3";i:66;s:2:"@4";i:67;s:2:"@6";i:68;}',
	'@^Mozilla/5\.(\d) \(Macintosh; .*Mac OS X.*; HTC_EVO3D_X515m; .*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/5\.(\d).*Safari.*$@'=>'a:3:{s:4:"@2|2";i:69;s:4:"@0|0";i:70;s:4:"@0|1";i:72;}',
	'@^Mozilla/5\.0 \(Macintosh; .*Mac OS X.*; HTC_Flyer_P510e; .*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/5\.0.*Safari.*$@'=>71,
	'@^Mozilla/5\.0 \(.*CPU iPhone OS .* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Coast/(\d)\.(\d)(\d).* Mobile/.* Safari/.*$@'=>'a:14:{s:6:"@4|3|1";i:73;s:6:"@3|2|1";i:74;s:6:"@4|2|1";i:75;s:6:"@5|0|4";i:77;s:6:"@4|5|1";i:78;s:6:"@4|0|2";i:79;s:6:"@3|0|1";i:80;s:6:"@5|0|3";i:81;s:6:"@4|0|1";i:82;s:6:"@3|0|2";i:83;s:6:"@5|0|2";i:84;s:6:"@5|0|1";i:85;s:6:"@4|0|3";i:86;s:6:"@4|3|0";i:87;}',
	'@^Mozilla/5\.0 \(iPod.*CPU iPhone OS .* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Coast/.* Mobile/.* Safari/.*$@'=>76,
	'@^Mozilla/5\.0 \(Macintosh; .*Mac OS X.*; HTC_Flyer_P512; .*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/5\.0.*Safari.*$@'=>88,
	'@^Mozilla/5\.0 \(.*CPU iPhone OS .* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Coast/(\d)\.(\d).* Mobile/.* Safari/.*$@'=>'a:6:{s:4:"@3|1";i:89;s:4:"@3|0";i:90;s:4:"@4|0";i:91;s:4:"@4|1";i:92;s:4:"@4|5";i:93;s:4:"@4|4";i:94;}',
	'@^Mozilla/5\.0 \(Macintosh; .*Mac OS X.*; HTC_Runnymede; .*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/5\.0.*Safari.*$@'=>95,
	'@^Mozilla/5\.0 \(Macintosh; .*Mac OS X.*; HTC_Sensation; .*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/5\.0.*Safari.*$@'=>96,
	'@^Mozilla/5\.0 \(.*Windows Phone 10\.0.*Xbox; Xbox One\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.* Safari/.* Edge/.*$@'=>97,
	'@^Mozilla/5\.0 \(Macintosh; .*Mac OS X.*; HTC/WildfireS/.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/4\.0.*Safari.*$@'=>98,
	'@^Mozilla/5\.0 \(Macintosh; .*Mac OS X.*; HTC/Sensation/.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/5\.0.*Safari.*$@'=>99,
	'@^Mozilla/5\.0 \(iPhone.*CPU iPhone OS .* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/1(\d)\.0.*Safari/.*$@'=>'a:3:{s:2:"@2";i:100;s:2:"@0";i:101;s:2:"@1";i:102;}',
	'@^Mozilla/5\.0 \(.*Windows NT 10\.0.*Trident/8\.0; rv\:550\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/7\.0 Safari/.*$@'=>103,
	'@^Mozilla/5\.0 \(.*Windows Phone 10\.0.*Lumia 930\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.* Safari/.* Edge/1(\d)\..*$@'=>'a:5:{s:2:"@4";i:104;s:2:"@6";i:105;s:2:"@7";i:106;s:2:"@5";i:107;s:2:"@3";i:109;}',
	'@^Mozilla/5\.0 \(Macintosh; .*Mac OS X.*; HTC/DesireHD/.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/4\.0.*Safari.*$@'=>108,
	'@^Mozilla/5\.0 \(.*CPU iPhone OS .* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Coast/.* Mobile/.* Safari/.*$@'=>110,
	'@^Mozilla/5\.0 \(iPad.*CPU.*OS.* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Coast/(\d)\.(\d)(\d).* Mobile/.* Safari/.*$@'=>'a:14:{s:6:"@3|2|1";i:111;s:6:"@3|0|2";i:112;s:6:"@5|0|4";i:114;s:6:"@5|0|3";i:115;s:6:"@4|5|1";i:117;s:6:"@5|0|2";i:118;s:6:"@4|0|2";i:119;s:6:"@3|0|1";i:120;s:6:"@4|3|1";i:121;s:6:"@4|2|1";i:122;s:6:"@4|3|0";i:123;s:6:"@4|0|1";i:124;s:6:"@4|0|3";i:126;s:6:"@5|0|1";i:127;}',
	'@^Mozilla/5\.0 \(iPhone.*CPU iPhone OS .* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/(\d)\.0.*Safari/.*$@'=>'a:4:{s:2:"@7";i:113;s:2:"@8";i:116;s:2:"@6";i:125;s:2:"@9";i:128;}',
	'@^Mozilla/5\.0 \(.*Windows NT 6\.(\d).*Trident/8\.0; rv\:550\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/7\.0 Safari/.*$@'=>'a:3:{s:2:"@4";i:129;s:2:"@1";i:130;s:2:"@3";i:131;}',
	'@^Mozilla/5\.0 \(Macintosh; .*Mac OS X.*; HTC/DesireS/.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/4\.0.*Safari.*$@'=>132,
	'@^Mozilla/5\.0 \(iPhone.*CPU iPhone OS .* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*CriOS/(\d)(\d)\.0.*Safari/.*$@'=>'a:24:{s:4:"@6|1";i:133;s:4:"@6|5";i:134;s:4:"@5|8";i:135;s:4:"@6|0";i:136;s:4:"@6|3";i:137;s:4:"@6|2";i:138;s:4:"@6|4";i:139;s:4:"@5|7";i:140;s:4:"@5|6";i:141;s:4:"@5|9";i:145;s:4:"@4|8";i:146;s:4:"@5|1";i:153;s:4:"@5|2";i:154;s:4:"@4|9";i:155;s:4:"@5|4";i:156;s:4:"@6|7";i:157;s:4:"@5|5";i:158;s:4:"@6|6";i:159;s:4:"@6|9";i:160;s:4:"@6|8";i:161;s:4:"@7|0";i:162;s:4:"@5|0";i:163;s:4:"@7|1";i:164;s:4:"@5|3";i:165;}',
	'@^Mozilla/5\.0 \(iPad.*CPU.*OS.* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Coast/(\d)\.(\d).* Mobile/.* Safari/.*$@'=>'a:6:{s:4:"@3|1";i:142;s:4:"@4|5";i:143;s:4:"@4|4";i:148;s:4:"@3|0";i:149;s:4:"@4|0";i:150;s:4:"@4|1";i:151;}',
	'@^Mozilla/5\.0 \(iPod.*CPU iPhone OS .* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/1(\d)\.0.*Safari/.*$@'=>'a:3:{s:2:"@1";i:144;s:2:"@0";i:147;s:2:"@2";i:152;}',
	'@^Mozilla/5\.0 \(.*Windows Phone 10\.0.*RM\-1010\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.* Safari/.* Edge/1(\d)\..*$@'=>'a:5:{s:2:"@7";i:166;s:2:"@6";i:167;s:2:"@5";i:168;s:2:"@4";i:170;s:2:"@3";i:171;}',
	'@^Mozilla/5\.0 \(.*Windows Phone 10\.0.*Lumia 930\) applewebkit.*\(.*khtml.*like.*gecko.*\) Chrome/.* Safari/.* Edge/12.*$@'=>169,
	'@^Mozilla/5\.0 \(iPod.*CPU iPhone OS .* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/(\d)\.0.*Safari/.*$@'=>'a:4:{s:2:"@9";i:172;s:2:"@7";i:173;s:2:"@8";i:174;s:2:"@6";i:175;}',
	'@^Mozilla/5\.0 \(iPhone.*CPU iPhone OS .* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) .*CriOS/.*Safari/.*$@'=>176,
	'@^Mozilla/5\.0 \(.*Windows Phone 10\.0.*RM\-1104.*\) applewebkit.*\(.*khtml.*like.*gecko.*\) Chrome/.* Safari/.* Edge/12.*$@'=>177,
	'@^Mozilla/5\.0 \(iPod.*CPU iPhone OS .* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*CriOS/(\d)(\d)\.0.*Safari/.*$@'=>'a:24:{s:4:"@5|5";i:178;s:4:"@6|8";i:179;s:4:"@7|0";i:180;s:4:"@5|2";i:181;s:4:"@5|3";i:182;s:4:"@7|1";i:183;s:4:"@6|7";i:184;s:4:"@6|9";i:185;s:4:"@6|5";i:186;s:4:"@6|3";i:187;s:4:"@6|2";i:188;s:4:"@6|1";i:189;s:4:"@5|9";i:190;s:4:"@6|4";i:191;s:4:"@5|8";i:192;s:4:"@5|6";i:193;s:4:"@6|0";i:194;s:4:"@5|7";i:195;s:4:"@6|6";i:196;s:4:"@5|4";i:197;s:4:"@4|9";i:198;s:4:"@4|8";i:199;s:4:"@5|0";i:200;s:4:"@5|1";i:201;}',
	'@^Mozilla/5\.0.*\(iPhone.*CPU iPhone OS .* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/.*Safari/.*$@'=>202,
	'@^Mozilla/5\.0 \(iPad.*CPU.*OS.* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Coast/.* Mobile/.* Safari/.*$@'=>203,
	'@^Mozilla/5\.0 \(.*CPU.*OS.* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Coast/(\d)\.(\d)(\d).* Mobile/.* Safari/.*$@'=>'a:14:{s:6:"@4|0|2";i:204;s:6:"@3|2|1";i:205;s:6:"@3|0|2";i:206;s:6:"@3|0|1";i:207;s:6:"@4|0|1";i:208;s:6:"@4|2|1";i:209;s:6:"@5|0|1";i:210;s:6:"@5|0|2";i:211;s:6:"@4|5|1";i:212;s:6:"@4|3|1";i:213;s:6:"@5|0|4";i:214;s:6:"@4|3|0";i:215;s:6:"@4|0|3";i:216;s:6:"@5|0|3";i:217;}',
	'@^Mozilla/5\.0 \(.*CPU iPhone OS .* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) .*CriOS/(\d)(\d)\.0.*Safari/.*$@'=>'a:24:{s:4:"@5|8";i:218;s:4:"@6|6";i:219;s:4:"@6|5";i:220;s:4:"@7|1";i:221;s:4:"@7|0";i:222;s:4:"@5|6";i:223;s:4:"@4|8";i:224;s:4:"@6|8";i:225;s:4:"@5|7";i:227;s:4:"@6|9";i:228;s:4:"@6|7";i:229;s:4:"@6|4";i:230;s:4:"@4|9";i:231;s:4:"@6|1";i:232;s:4:"@5|1";i:234;s:4:"@5|3";i:235;s:4:"@5|2";i:236;s:4:"@6|0";i:237;s:4:"@5|4";i:238;s:4:"@6|2";i:239;s:4:"@5|0";i:240;s:4:"@5|9";i:241;s:4:"@5|5";i:242;s:4:"@6|3";i:243;}',
	'@^Mozilla/5\.0 \(iPod.*CPU iPhone OS .* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) .*CriOS/.*Safari/.*$@'=>226,
	'@^Mozilla/5\.0 \(.*Windows Phone 10\.0.*id336.*\) applewebkit.*\(.*khtml.*like.*gecko.*\) Chrome/.* Safari/.* Edge/12.*$@'=>233,
	'@^Mozilla/5\.0 \(.*CPU.*OS.* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Coast/(\d)\.(\d).* Mobile/.* Safari/.*$@'=>'a:6:{s:4:"@3|1";i:244;s:4:"@3|0";i:245;s:4:"@4|5";i:246;s:4:"@4|4";i:249;s:4:"@4|1";i:251;s:4:"@4|0";i:252;}',
	'@^Mozilla/5\.0 \(.*CPU iPhone OS .* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/1(\d)\.0.*Safari/.*$@'=>'a:3:{s:2:"@1";i:247;s:2:"@0";i:248;s:2:"@2";i:250;}',
	'@^Mozilla/5\.0.*\(iPod.*CPU iPhone OS .* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/.*Safari/.*$@'=>253,
	'@^Mozilla/4\.0 \(compatible.*; MSIE 7\.0; .*Windows NT 6\.(\d).*Trident/4\.0.*Mozilla/4\.0 \(compatible.*; MSIE 6\.0.*$@'=>'a:2:{s:2:"@0";i:254;s:2:"@1";i:255;}',
	'@^.*Mozilla/5\.0.*\(.*Windows Phone 8\.1.*Trident/8\.0.*rv\:11.*IEMobile.11\.0; Microsoft; Lumia 950 XL Dual SIM.*$@'=>256,
	'@^Mozilla/5\.0 \(.*CPU iPhone OS .* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/(\d)\.0.*Safari/.*$@'=>'a:4:{s:2:"@8";i:257;s:2:"@7";i:258;s:2:"@9";i:259;s:2:"@6";i:260;}',
	'@^Mozilla/5\.0.*\(.*Windows Phone 8\.1.*Trident/8\.0.*rv\:11.*IEMobile.11\.0; Microsoft; Lumia 950 XL Dual SIM.*$@'=>261,
	'@^Mozilla/4\.0 \(compatible.*; MSIE 7\.0; .*Windows.*WOW64.*Trident/4\.0.*Mozilla/4\.0 \(compatible.*; MSIE 6\.0.*$@'=>262,
	'@^Mozilla/5\.0 \(.*Linux.*Android.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.* Mobile Safari/.* EdgA/4(\d)\..*$@'=>'a:2:{s:2:"@2";i:263;s:2:"@1";i:265;}',
	'@^Mozilla/5\.0 \(.*Linux.*Android.* Build/.* applewebkit.* \(.*khtml.*like.*gecko.*\) Version/5\.1.* Mobile Safari.*$@'=>264,
	'@^Mozilla/5\.0 \(.*Linux.*Android.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/.*Chrome/(\d)(\d)\.0.*Mobile.*Safari.*$@'=>'a:29:{s:4:"@6|2";i:266;s:4:"@4|5";i:267;s:4:"@7|0";i:268;s:4:"@6|9";i:269;s:4:"@6|5";i:270;s:4:"@6|4";i:271;s:4:"@6|1";i:272;s:4:"@4|3";i:273;s:4:"@6|6";i:274;s:4:"@4|4";i:275;s:4:"@6|7";i:276;s:4:"@6|8";i:277;s:4:"@4|6";i:278;s:4:"@7|1";i:279;s:4:"@5|3";i:280;s:4:"@6|3";i:281;s:4:"@5|4";i:282;s:4:"@5|5";i:283;s:4:"@5|8";i:284;s:4:"@6|0";i:285;s:4:"@5|6";i:286;s:4:"@5|7";i:287;s:4:"@5|2";i:288;s:4:"@4|9";i:289;s:4:"@4|8";i:290;s:4:"@4|7";i:291;s:4:"@5|9";i:292;s:4:"@5|0";i:293;s:4:"@5|1";i:294;}',
	'@^Mozilla/5\.0 \(.*Windows.*Trident/8\.0; rv\:550\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/7\.0 Safari/.*$@'=>295,
	'@^Mozilla/5\.0 \(.*Windows NT 10\.0.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/(\d)(\d)\.0.*Anonymisiert durch.*$@'=>'a:22:{s:4:"@6|1";i:296;s:4:"@7|0";i:297;s:4:"@6|0";i:298;s:4:"@6|5";i:299;s:4:"@6|3";i:300;s:4:"@6|7";i:301;s:4:"@6|4";i:302;s:4:"@6|8";i:303;s:4:"@6|2";i:304;s:4:"@6|6";i:305;s:4:"@6|9";i:306;s:4:"@5|2";i:307;s:4:"@5|5";i:308;s:4:"@5|7";i:309;s:4:"@7|1";i:310;s:4:"@5|4";i:311;s:4:"@5|3";i:312;s:4:"@5|0";i:313;s:4:"@5|1";i:314;s:4:"@5|8";i:315;s:4:"@5|6";i:316;s:4:"@5|9";i:317;}',
	'@^Mozilla/5\.0 \(.*CPU.*OS.* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Coast/.* Mobile/.* Safari/.*$@'=>318,
	'@^Mozilla/5\.0 \(.*Linux.*\).*applewebkit.* \(.*khtml.*like.*gecko.*\).*Chrome/.* Large Screen Safari/.* GoogleTV/.*$@'=>319,
	'@^Mozilla/4\.0 \(compatible.*; MSIE 7\.0; .*Windows.*x64.*Trident/4\.0.*Mozilla/4\.0 \(compatible.*; MSIE 6\.0.*$@'=>320,
	'@^Mozilla/5\.0 \(.*Windows NT 6\.(\d).*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/(\d)(\d)\.0.*Anonymisiert durch.*$@'=>'a:88:{s:6:"@4|6|7";i:321;s:6:"@3|6|6";i:322;s:6:"@3|7|0";i:323;s:6:"@3|6|7";i:324;s:6:"@1|6|7";i:325;s:6:"@4|6|6";i:326;s:6:"@4|7|0";i:327;s:6:"@1|6|8";i:328;s:6:"@2|6|7";i:329;s:6:"@3|6|8";i:330;s:6:"@2|7|1";i:331;s:6:"@2|6|9";i:332;s:6:"@3|6|9";i:333;s:6:"@4|6|9";i:334;s:6:"@3|7|1";i:335;s:6:"@1|6|9";i:336;s:6:"@1|7|1";i:337;s:6:"@4|7|1";i:338;s:6:"@2|7|0";i:339;s:6:"@1|7|0";i:340;s:6:"@4|6|8";i:341;s:6:"@2|6|8";i:342;s:6:"@2|5|9";i:343;s:6:"@1|5|5";i:344;s:6:"@2|5|5";i:345;s:6:"@3|5|5";i:346;s:6:"@4|5|4";i:347;s:6:"@3|5|4";i:348;s:6:"@1|5|4";i:349;s:6:"@2|5|4";i:350;s:6:"@4|5|5";i:351;s:6:"@1|5|6";i:352;s:6:"@2|5|7";i:353;s:6:"@3|5|7";i:354;s:6:"@1|5|7";i:355;s:6:"@4|5|6";i:356;s:6:"@2|5|6";i:357;s:6:"@3|5|6";i:358;s:6:"@4|5|3";i:359;s:6:"@3|5|3";i:360;s:6:"@1|5|1";i:361;s:6:"@2|5|1";i:362;s:6:"@4|5|0";i:363;s:6:"@3|5|0";i:364;s:6:"@1|5|0";i:365;s:6:"@2|5|0";i:366;s:6:"@3|5|1";i:367;s:6:"@4|5|1";i:368;s:6:"@1|5|3";i:369;s:6:"@2|5|3";i:370;s:6:"@4|5|2";i:371;s:6:"@3|5|2";i:372;s:6:"@1|5|2";i:373;s:6:"@2|5|2";i:374;s:6:"@4|5|7";i:375;s:6:"@1|5|8";i:376;s:6:"@4|6|3";i:377;s:6:"@1|6|4";i:378;s:6:"@3|6|3";i:379;s:6:"@2|6|3";i:380;s:6:"@4|6|2";i:381;s:6:"@1|6|3";i:382;s:6:"@2|6|4";i:383;s:6:"@3|6|4";i:384;s:6:"@4|6|5";i:385;s:6:"@1|6|6";i:386;s:6:"@3|6|5";i:387;s:6:"@2|6|5";i:388;s:6:"@4|6|4";i:389;s:6:"@1|6|5";i:390;s:6:"@3|6|2";i:391;s:6:"@2|6|2";i:392;s:6:"@3|5|9";i:393;s:6:"@4|5|9";i:394;s:6:"@1|5|9";i:395;s:6:"@4|5|8";i:396;s:6:"@2|5|8";i:397;s:6:"@3|5|8";i:398;s:6:"@1|6|0";i:399;s:6:"@2|6|0";i:400;s:6:"@3|6|1";i:401;s:6:"@1|6|2";i:402;s:6:"@2|6|1";i:403;s:6:"@1|6|1";i:404;s:6:"@3|6|0";i:405;s:6:"@4|6|0";i:406;s:6:"@2|6|6";i:407;s:6:"@4|6|1";i:408;}',
	'@^Mozilla/5\.0 \(Linux; Linux mips\) applewebkit.* \(.*khtml.*like.*gecko.*\).*Chromium/.* Safari/.*\) SRAF/3\.(\d).*$@'=>'a:3:{s:2:"@5";i:409;s:2:"@0";i:410;s:2:"@9";i:411;}',
	'@^Mozilla/5\.0 \(.*Windows Phone 10\.0.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.* Safari/.* Edge/1(\d)\..*$@'=>'a:5:{s:2:"@3";i:412;s:2:"@4";i:413;s:2:"@5";i:414;s:2:"@7";i:415;s:2:"@6";i:416;}',
	'@^Mozilla/5\.0 \(.*CPU iPhone OS .* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) .*CriOS/.*Safari/.*$@'=>417,
	'@^Mozilla/5\.0 \(iPad.*CPU.*OS.* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/1(\d)\.0.*Safari/.*$@'=>'a:3:{s:2:"@1";i:418;s:2:"@0";i:420;s:2:"@2";i:421;}',
	'@^Mozilla/5\.0.*\(.*CPU iPhone OS .* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/.*Safari/.*$@'=>419,
	'@^Mozilla/5\.0 \(Linux.*; Android Eclair.*Build/.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/.*Safari.*$@'=>422,
	'@^Mozilla/5\.0 \(.*Linux.*Velocitymicro/T408.*\) applewebkit.*\(.*khtml.*like.*gecko.*\) .*Version/4\.0.*Safari/.*$@'=>423,
	'@^Mozilla/5\.0 \(.*Linux.*Android.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.* Mobile Safari/.* EdgA/.*$@'=>424,
	'@^Mozilla/5\.0 \(iPad.*CPU.*OS.* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/(\d)\.0.*Safari/.*$@'=>'a:4:{s:2:"@9";i:425;s:2:"@7";i:426;s:2:"@6";i:427;s:2:"@8";i:428;}',
	'@^Mozilla/5\.0.*\(.*Windows Phone 8\.1.*Trident/7\.0.*rv\:11.*IEMobile.11\.0; Microsoft;Lumia 535 Dual SIM.*$@'=>429,
	'@^Mozilla/5\.0 \(.*Windows Phone 10\.0.*\) applewebkit.*\(.*khtml.*like.*gecko.*\) Chrome/.* Safari/.* Edge/12.*$@'=>430,
	'@^Mozilla/5\.0 \(iPad.*CPU.*OS.* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*CriOS/(\d)(\d)\.0.*Safari/.*$@'=>'a:24:{s:4:"@4|9";i:431;s:4:"@4|8";i:432;s:4:"@5|1";i:433;s:4:"@5|0";i:434;s:4:"@5|4";i:435;s:4:"@6|5";i:436;s:4:"@6|4";i:437;s:4:"@6|3";i:438;s:4:"@6|6";i:439;s:4:"@6|7";i:440;s:4:"@7|1";i:441;s:4:"@7|0";i:442;s:4:"@6|8";i:443;s:4:"@6|2";i:444;s:4:"@6|1";i:445;s:4:"@5|6";i:446;s:4:"@5|5";i:447;s:4:"@5|3";i:448;s:4:"@5|7";i:449;s:4:"@5|8";i:450;s:4:"@6|0";i:451;s:4:"@5|9";i:452;s:4:"@5|2";i:453;s:4:"@6|9";i:454;}',
	'@^Mozilla/5\.0.*\(iPhone.*CPU.*OS.* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/.*Safari/.*$@'=>455,
	'@^Mozilla/5\.0 \(.*Windows NT 10\.0.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/(\d)(\d)\.0.* anonymized by.*$@'=>'a:22:{s:4:"@5|0";i:456;s:4:"@6|9";i:457;s:4:"@5|1";i:458;s:4:"@6|0";i:459;s:4:"@7|0";i:460;s:4:"@6|3";i:461;s:4:"@7|1";i:462;s:4:"@6|1";i:463;s:4:"@6|5";i:464;s:4:"@5|2";i:465;s:4:"@5|3";i:466;s:4:"@5|7";i:467;s:4:"@5|8";i:468;s:4:"@6|6";i:469;s:4:"@5|9";i:470;s:4:"@5|6";i:471;s:4:"@6|7";i:472;s:4:"@6|8";i:473;s:4:"@5|4";i:474;s:4:"@5|5";i:475;s:4:"@6|4";i:476;s:4:"@6|2";i:477;}',
	'@^Mozilla/5\.0 \(SMART\-TV.*Linux.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chromium/(\d)(\d)\..*Chrome/.*Safari/.*$@'=>'a:27:{s:4:"@6|1";i:478;s:4:"@6|2";i:479;s:4:"@6|3";i:480;s:4:"@6|4";i:481;s:4:"@6|0";i:482;s:4:"@5|9";i:483;s:4:"@5|6";i:484;s:4:"@5|7";i:485;s:4:"@5|8";i:486;s:4:"@6|5";i:487;s:4:"@6|6";i:488;s:4:"@4|5";i:489;s:4:"@4|7";i:490;s:4:"@7|1";i:491;s:4:"@4|6";i:493;s:4:"@7|0";i:494;s:4:"@6|8";i:496;s:4:"@6|9";i:497;s:4:"@5|5";i:498;s:4:"@6|7";i:499;s:4:"@5|2";i:501;s:4:"@5|1";i:502;s:4:"@5|0";i:503;s:4:"@4|8";i:505;s:4:"@5|3";i:506;s:4:"@4|9";i:507;s:4:"@5|4";i:510;}',
	'@^Mozilla/5\.0 \(.*Windows NT 10\.0.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.* Safari/.* Edge/1(\d)\..*$@'=>'a:5:{s:2:"@6";i:492;s:2:"@7";i:495;s:2:"@4";i:500;s:2:"@5";i:504;s:2:"@3";i:509;}',
	'@^Mozilla/5\.0 \(.*Windows NT 10\.0.*\).*applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.*Anonymisiert durch.*$@'=>508,
	'@^Mozilla/5\.0.*\(iPhone.*CPU iPhone OS .* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Safari/.*$@'=>511,
	'@^Mozilla/4\.0 \(compatible.*; MSIE 7\.0; .*Windows.*Trident/4\.0.*Mozilla/4\.0 \(compatible.*; MSIE 6\.0.*$@'=>512,
	'@^Mozilla/5\.0 \(.*Windows NT 6\.(\d).*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/(\d)(\d)\.0.* anonymized by.*$@'=>'a:88:{s:6:"@3|6|8";i:513;s:6:"@3|5|2";i:514;s:6:"@2|5|2";i:515;s:6:"@1|5|2";i:516;s:6:"@4|5|2";i:517;s:6:"@1|5|3";i:518;s:6:"@3|5|3";i:519;s:6:"@4|5|3";i:520;s:6:"@2|5|3";i:521;s:6:"@4|5|1";i:522;s:6:"@4|6|8";i:523;s:6:"@3|5|9";i:524;s:6:"@3|5|1";i:525;s:6:"@3|5|0";i:526;s:6:"@4|5|0";i:527;s:6:"@2|5|0";i:528;s:6:"@4|5|8";i:529;s:6:"@1|6|0";i:530;s:6:"@1|5|0";i:531;s:6:"@1|5|1";i:532;s:6:"@2|5|1";i:533;s:6:"@2|6|9";i:534;s:6:"@1|6|9";i:535;s:6:"@2|5|8";i:536;s:6:"@4|5|9";i:537;s:6:"@4|6|9";i:538;s:6:"@3|6|9";i:539;s:6:"@2|6|8";i:540;s:6:"@2|5|4";i:541;s:6:"@2|6|6";i:542;s:6:"@1|6|7";i:543;s:6:"@2|6|7";i:544;s:6:"@1|5|8";i:545;s:6:"@4|6|7";i:546;s:6:"@3|6|7";i:547;s:6:"@4|5|6";i:548;s:6:"@3|6|6";i:549;s:6:"@4|5|7";i:550;s:6:"@3|5|7";i:551;s:6:"@2|5|7";i:552;s:6:"@4|6|6";i:553;s:6:"@1|5|7";i:554;s:6:"@1|6|6";i:555;s:6:"@3|6|0";i:556;s:6:"@1|5|5";i:557;s:6:"@3|5|8";i:558;s:6:"@4|5|4";i:559;s:6:"@3|5|4";i:560;s:6:"@1|5|4";i:561;s:6:"@1|5|9";i:562;s:6:"@2|5|5";i:563;s:6:"@3|5|5";i:564;s:6:"@2|5|6";i:565;s:6:"@3|5|6";i:566;s:6:"@1|5|6";i:567;s:6:"@2|5|9";i:568;s:6:"@4|5|5";i:569;s:6:"@1|6|8";i:570;s:6:"@4|6|1";i:571;s:6:"@2|7|1";i:572;s:6:"@2|6|0";i:573;s:6:"@3|7|1";i:574;s:6:"@1|7|1";i:575;s:6:"@4|6|2";i:576;s:6:"@4|6|4";i:577;s:6:"@3|6|2";i:578;s:6:"@4|7|1";i:579;s:6:"@1|6|3";i:580;s:6:"@1|6|4";i:581;s:6:"@4|6|0";i:582;s:6:"@2|6|4";i:583;s:6:"@4|6|3";i:584;s:6:"@3|6|4";i:585;s:6:"@2|6|3";i:586;s:6:"@3|6|3";i:587;s:6:"@1|6|2";i:588;s:6:"@2|6|2";i:589;s:6:"@3|6|1";i:590;s:6:"@2|7|0";i:591;s:6:"@4|7|0";i:592;s:6:"@3|7|0";i:593;s:6:"@4|6|5";i:594;s:6:"@3|6|5";i:595;s:6:"@1|6|5";i:596;s:6:"@1|6|1";i:597;s:6:"@1|7|0";i:598;s:6:"@2|6|5";i:599;s:6:"@2|6|1";i:600;}',
	'@^Mozilla/5\.0 \(.*Windows NT 10\.0.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.* Safari/.* Edge/12.*$@'=>601,
	'@^Mozilla/5\.0 \(.*Windows NT 6\.(\d).*\).*applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.*Anonymisiert durch.*$@'=>'a:5:{s:2:"@3";i:602;s:2:"@4";i:604;s:2:"@1";i:606;s:2:"@2";i:611;s:2:"@0";i:612;}',
	'@^Mozilla/5\.0 \(.*Windows NT 6\.4.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.* Safari/.* Edge/1(\d)\..*$@'=>'a:5:{s:2:"@4";i:603;s:2:"@3";i:607;s:2:"@5";i:608;s:2:"@7";i:609;s:2:"@6";i:610;}',
	'@^Mozilla/5\.0 \(.*Windows Phone 10\.0.*\) applewebkit.*\(.*khtml.*like.*gecko.*\) Chrome/.* Safari/.* Edge/.*$@'=>605,
	'@^Mozilla/5\.0 \(iPhone.*CPU iPhone OS .* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Mobile.*$@'=>613,
	'@^Mozilla/5\.0 \(.*CPU.*OS.* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) .*CriOS/(\d)(\d)\.0.*Safari/.*$@'=>'a:24:{s:4:"@5|9";i:614;s:4:"@5|7";i:615;s:4:"@5|8";i:616;s:4:"@5|0";i:617;s:4:"@4|8";i:618;s:4:"@5|5";i:619;s:4:"@4|9";i:620;s:4:"@5|2";i:621;s:4:"@5|3";i:622;s:4:"@5|4";i:623;s:4:"@6|0";i:624;s:4:"@5|6";i:625;s:4:"@6|1";i:626;s:4:"@6|7";i:628;s:4:"@6|8";i:629;s:4:"@6|9";i:630;s:4:"@7|0";i:631;s:4:"@6|6";i:632;s:4:"@6|5";i:633;s:4:"@6|2";i:634;s:4:"@5|1";i:635;s:4:"@6|3";i:636;s:4:"@6|4";i:637;s:4:"@7|1";i:638;}',
	'@^Mozilla/5\.0 \(iPad.*CPU.*OS.* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) .*CriOS/.*Safari/.*$@'=>627,
	'@^Mozilla/5\.0 \(.*CPU.*OS.* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/1(\d)\.0.*Safari/.*$@'=>'a:3:{s:2:"@0";i:639;s:2:"@1";i:640;s:2:"@2";i:641;}',
	'@^Mozilla/5\.0.*\(iPad.*CPU.*OS.* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/.*Safari/.*$@'=>642,
	'@^Mozilla/5\.0.*\(iPod.*CPU.*OS.* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/.*Safari/.*$@'=>643,
	'@^Mozilla/5\.0 \(.*Linux.*Android.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/(\d)(\d)\.0.*Mobile Safari/.*$@'=>'a:29:{s:4:"@4|9";i:644;s:4:"@5|2";i:645;s:4:"@5|1";i:646;s:4:"@5|3";i:647;s:4:"@5|4";i:648;s:4:"@5|5";i:649;s:4:"@5|0";i:650;s:4:"@4|8";i:651;s:4:"@4|4";i:652;s:4:"@4|3";i:653;s:4:"@4|5";i:654;s:4:"@4|6";i:655;s:4:"@4|7";i:656;s:4:"@5|6";i:657;s:4:"@5|7";i:658;s:4:"@6|6";i:659;s:4:"@6|5";i:660;s:4:"@6|7";i:661;s:4:"@6|8";i:662;s:4:"@6|9";i:663;s:4:"@6|4";i:664;s:4:"@6|3";i:665;s:4:"@5|9";i:666;s:4:"@5|8";i:667;s:4:"@6|0";i:668;s:4:"@6|1";i:669;s:4:"@6|2";i:670;s:4:"@7|0";i:671;s:4:"@7|1";i:672;}',
	'@^Mozilla/5\.0 \(.*Windows NT 6\.4.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.* Safari/.* Edge/12.*$@'=>673,
	'@^Mozilla/5\.0 \(.*Windows NT 10\.0.*\) applewebkit.* \(.*khtml.*like.*gecko.*\).*Chrome/.*Safari/.*OPR/(\d)(\d)\.0.*$@'=>'a:29:{s:4:"@5|2";i:674;s:4:"@5|3";i:675;s:4:"@4|3";i:676;s:4:"@5|1";i:677;s:4:"@3|3";i:678;s:4:"@5|4";i:679;s:4:"@4|1";i:680;s:4:"@2|8";i:681;s:4:"@2|7";i:682;s:4:"@5|5";i:683;s:4:"@4|2";i:684;s:4:"@3|4";i:685;s:4:"@5|0";i:686;s:4:"@4|4";i:687;s:4:"@4|6";i:688;s:4:"@3|7";i:689;s:4:"@4|5";i:690;s:4:"@4|7";i:691;s:4:"@4|8";i:692;s:4:"@4|9";i:693;s:4:"@3|5";i:694;s:4:"@3|6";i:695;s:4:"@3|8";i:696;s:4:"@3|9";i:697;s:4:"@3|2";i:698;s:4:"@2|9";i:699;s:4:"@3|1";i:700;s:4:"@4|0";i:701;s:4:"@3|0";i:702;}',
	'@^Mozilla/5\.0.*\(iPod.*CPU iPhone OS .* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Safari/.*$@'=>703,
	'@^Mozilla/5\.0 \(.*Linux.*Android.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/.*Chrome/(\d)(\d)\.0.*Safari.*$@'=>'a:29:{s:4:"@4|8";i:704;s:4:"@4|9";i:706;s:4:"@5|0";i:707;s:4:"@4|6";i:709;s:4:"@4|3";i:710;s:4:"@7|0";i:711;s:4:"@7|1";i:712;s:4:"@6|5";i:713;s:4:"@6|9";i:714;s:4:"@4|4";i:716;s:4:"@5|1";i:717;s:4:"@4|5";i:718;s:4:"@4|7";i:719;s:4:"@5|9";i:720;s:4:"@5|8";i:721;s:4:"@5|7";i:722;s:4:"@6|2";i:723;s:4:"@5|2";i:724;s:4:"@6|0";i:726;s:4:"@6|1";i:727;s:4:"@6|6";i:728;s:4:"@6|3";i:729;s:4:"@5|6";i:730;s:4:"@6|8";i:731;s:4:"@5|3";i:732;s:4:"@5|5";i:733;s:4:"@6|4";i:734;s:4:"@5|4";i:735;s:4:"@6|7";i:736;}',
	'@^Mozilla/5\.0 \(.*CPU.*OS.* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/(\d)\.0.*Safari/.*$@'=>'a:4:{s:2:"@7";i:705;s:2:"@8";i:708;s:2:"@6";i:715;s:2:"@9";i:725;}',
	'@^Mozilla/5\.0 \(.*Windows NT 10\.0.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.* Safari/.* Edge/.*$@'=>737,
	'@^Mozilla/5\.0 \(.*Windows NT 6\.(\d).*\) applewebkit.* \(.*khtml.*like.*gecko.*\).*Chrome/.*Safari/.*OPR/(\d)(\d)\.0.*$@'=>'a:102:{s:6:"@2|3|5";i:738;s:6:"@0|3|6";i:739;s:6:"@1|3|5";i:740;s:6:"@1|3|6";i:741;s:6:"@4|3|0";i:742;s:6:"@3|3|5";i:743;s:6:"@2|3|0";i:744;s:6:"@2|5|0";i:745;s:6:"@3|5|0";i:746;s:6:"@1|3|0";i:747;s:6:"@2|3|6";i:748;s:6:"@1|5|0";i:749;s:6:"@3|4|9";i:750;s:6:"@1|4|9";i:751;s:6:"@0|3|5";i:752;s:6:"@2|4|9";i:753;s:6:"@3|3|0";i:754;s:6:"@3|3|1";i:755;s:6:"@3|4|6";i:756;s:6:"@2|5|1";i:757;s:6:"@3|3|7";i:758;s:6:"@2|3|7";i:759;s:6:"@2|4|6";i:760;s:6:"@1|4|6";i:761;s:6:"@2|4|5";i:762;s:6:"@3|4|5";i:763;s:6:"@4|3|1";i:764;s:6:"@1|4|7";i:765;s:6:"@2|4|7";i:766;s:6:"@2|4|8";i:767;s:6:"@3|4|8";i:768;s:6:"@0|3|1";i:769;s:6:"@1|4|8";i:770;s:6:"@1|3|1";i:771;s:6:"@3|4|7";i:772;s:6:"@1|3|7";i:773;s:6:"@2|3|1";i:774;s:6:"@3|3|6";i:775;s:6:"@3|3|3";i:776;s:6:"@1|4|5";i:777;s:6:"@3|3|2";i:778;s:6:"@2|3|2";i:779;s:6:"@1|3|2";i:780;s:6:"@3|5|5";i:781;s:6:"@2|5|5";i:782;s:6:"@1|3|3";i:783;s:6:"@0|3|3";i:784;s:6:"@1|5|5";i:785;s:6:"@0|3|2";i:786;s:6:"@0|2|7";i:787;s:6:"@1|2|8";i:788;s:6:"@2|2|8";i:789;s:6:"@3|2|8";i:790;s:6:"@4|2|8";i:791;s:6:"@0|2|8";i:792;s:6:"@4|2|7";i:793;s:6:"@1|2|7";i:794;s:6:"@2|2|7";i:795;s:6:"@3|2|7";i:796;s:6:"@0|2|9";i:797;s:6:"@3|5|4";i:798;s:6:"@4|2|9";i:799;s:6:"@2|5|2";i:800;s:6:"@3|5|2";i:801;s:6:"@0|3|4";i:802;s:6:"@1|3|4";i:803;s:6:"@1|5|2";i:804;s:6:"@0|3|0";i:805;s:6:"@3|3|4";i:806;s:6:"@2|3|4";i:807;s:6:"@3|2|9";i:808;s:6:"@1|5|4";i:810;s:6:"@2|3|3";i:811;s:6:"@2|5|4";i:812;s:6:"@1|2|9";i:813;s:6:"@2|2|9";i:814;s:6:"@1|5|3";i:815;s:6:"@2|5|3";i:816;s:6:"@3|5|3";i:817;s:6:"@3|5|1";i:818;s:6:"@1|5|1";i:819;s:6:"@2|4|2";i:820;s:6:"@3|4|2";i:821;s:6:"@3|4|4";i:822;s:6:"@1|4|2";i:823;s:6:"@2|3|9";i:824;s:6:"@2|4|1";i:825;s:6:"@3|4|1";i:826;s:6:"@1|3|8";i:827;s:6:"@2|4|4";i:828;s:6:"@1|4|4";i:829;s:6:"@2|4|3";i:830;s:6:"@3|4|3";i:831;s:6:"@3|4|0";i:832;s:6:"@1|4|3";i:833;s:6:"@2|4|0";i:834;s:6:"@3|3|8";i:835;s:6:"@1|3|9";i:836;s:6:"@1|4|0";i:837;s:6:"@3|3|9";i:838;s:6:"@2|3|8";i:839;s:6:"@1|4|1";i:840;}',
	'@^Mozilla/5\.0 \(iPod.*CPU iPhone OS .* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Mobile.*$@'=>809,
	'@^Mozilla/5\.0 \(.*Windows NT 10\.0.*\).*applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.* anonymized by.*$@'=>841,
	'@^Mozilla/5\.0 \(.*Windows NT 6\.4.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.* Safari/.* Edge/.*$@'=>842,
	'@^Mozilla/5\.0 \(.*Linux.*Android.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/4\.0.*Mobile.*Safari.*$@'=>843,
	'@^Mozilla/4\.0 \(compatible.*; MSIE 7\.0.*; .*Windows NT 6\.0.*Mozilla/4\.0 \(compatible.*; MSIE 6\.0.*$@'=>844,
	'@^Mozilla/5\.0 \(.*Windows NT 6\.(\d).*\).*applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.* anonymized by.*$@'=>'a:5:{s:2:"@1";i:845;s:2:"@4";i:846;s:2:"@3";i:847;s:2:"@2";i:848;s:2:"@0";i:849;}',
	'@^Mozilla/5\.0 \(.*Linux.*\) applewebkit.* \(.*khtml.*like.*gecko.*\).*Chrome/.*Safari/.*OPR/(\d)(\d)\.0.*HbbTV/.*$@'=>'a:24:{s:4:"@5|5";i:850;s:4:"@5|3";i:851;s:4:"@3|5";i:853;s:4:"@3|2";i:854;s:4:"@3|3";i:855;s:4:"@4|7";i:856;s:4:"@4|4";i:857;s:4:"@4|9";i:858;s:4:"@3|8";i:859;s:4:"@4|6";i:860;s:4:"@5|2";i:861;s:4:"@3|9";i:862;s:4:"@5|0";i:863;s:4:"@4|1";i:864;s:4:"@4|0";i:865;s:4:"@3|7";i:866;s:4:"@4|2";i:867;s:4:"@3|4";i:868;s:4:"@5|4";i:869;s:4:"@4|5";i:870;s:4:"@5|1";i:871;s:4:"@4|3";i:872;s:4:"@4|8";i:873;s:4:"@3|6";i:874;}',
	'@^Mozilla/5\.0 \(.*CPU.*OS.* like Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) .*CriOS/.*Safari/.*$@'=>852,
	'@^Mozilla/5\.0.*\(.*CPU.*OS.* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/.*Safari/.*$@'=>875,
	'@^Mozilla/5\.0 \(.*Linux.*Android.*\) applewebkit.*\(.*khtml.*like.*gecko.*\) .*Chrome/.*Mobile Safari/.*$@'=>876,
	'@^Mozilla/5\.0 \(.*Linux.*Android.*\) applewebkit.* \(.*khtml.*like.*gecko.*\).*YoloBrowser/1\.0.*Safari.*$@'=>877,
	'@^Mozilla/5\.0.*\(.*CPU iPhone OS .* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Safari/.*$@'=>878,
	'@^Mozilla/5\.0 \(.*Linux.*Android.*\) applewebkit.* \(.*khmtl.*like.*gecko.*\).*Version/.*Chrome.*Safari.*$@'=>879,
	'@^ELEMENT10 1 Mozilla/5\.0 \(X11; Linux x86_64\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.*$@'=>880,
	'@^Tablet\-PC\-4 Mozilla/5\.0 \(X11; Linux x86_64\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.*$@'=>881,
	'@^Mozilla/5\.0 \(.*Windows NT 10\.0.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/(\d)(\d)\.0.*Safari/.*$@'=>'a:22:{s:4:"@5|5";i:882;s:4:"@6|0";i:883;s:4:"@6|9";i:884;s:4:"@5|0";i:885;s:4:"@5|6";i:886;s:4:"@6|7";i:887;s:4:"@6|4";i:888;s:4:"@5|1";i:889;s:4:"@6|5";i:890;s:4:"@7|0";i:891;s:4:"@5|9";i:892;s:4:"@6|3";i:893;s:4:"@5|3";i:894;s:4:"@5|8";i:895;s:4:"@7|1";i:896;s:4:"@6|2";i:897;s:4:"@6|6";i:898;s:4:"@6|1";i:899;s:4:"@5|2";i:900;s:4:"@5|7";i:901;s:4:"@6|8";i:902;s:4:"@5|4";i:903;}',
	'@^Mozilla/5\.0 \(.*Linux.*\) applewebkit.* \(.*khtml.*like.*gecko.*\).*Chrome/.*Safari/.*OPR/(\d)(\d)\.0.*OMI/.*$@'=>'a:29:{s:4:"@3|0";i:904;s:4:"@4|0";i:905;s:4:"@3|6";i:906;s:4:"@5|1";i:907;s:4:"@4|8";i:909;s:4:"@3|4";i:910;s:4:"@2|9";i:911;s:4:"@4|5";i:912;s:4:"@5|2";i:913;s:4:"@5|5";i:914;s:4:"@3|2";i:915;s:4:"@5|3";i:916;s:4:"@3|5";i:917;s:4:"@5|4";i:918;s:4:"@3|8";i:919;s:4:"@3|3";i:920;s:4:"@4|3";i:921;s:4:"@4|2";i:922;s:4:"@2|8";i:924;s:4:"@5|0";i:925;s:4:"@4|4";i:926;s:4:"@3|9";i:927;s:4:"@4|9";i:928;s:4:"@2|7";i:929;s:4:"@4|1";i:930;s:4:"@4|7";i:931;s:4:"@3|7";i:932;s:4:"@3|1";i:933;s:4:"@4|6";i:934;}',
	'@^Mozilla/5\.0.*\(.*CPU iPhone OS .* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Mobile.*$@'=>908,
	'@^Mozilla/5\.0 \(.*Linux.*Android.*\) applewebkit.*\(.*kthml.*like.*gecko.*\).*Version/.*Chrome.*Safari.*$@'=>923,
	'@^Mozilla/5\.0 \(.*Linux.*Android.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/.*Safari.*Chrome.*$@'=>935,
	'@^Mozilla/5\.0 \(.*Linux.*Android.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/.*Chrome.*Safari.*$@'=>936,
	'@^Mozilla/5\.0 \(.*Windows NT 6\.(\d).*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/(\d)(\d)\.0.*Safari/.*$@'=>'a:88:{s:6:"@4|6|6";i:937;s:6:"@2|7|1";i:938;s:6:"@4|5|2";i:939;s:6:"@3|7|1";i:940;s:6:"@1|7|1";i:941;s:6:"@1|6|1";i:942;s:6:"@2|6|2";i:943;s:6:"@2|5|2";i:944;s:6:"@3|6|3";i:945;s:6:"@2|5|9";i:946;s:6:"@3|5|9";i:947;s:6:"@4|5|9";i:948;s:6:"@2|6|5";i:949;s:6:"@1|6|5";i:950;s:6:"@3|5|2";i:951;s:6:"@2|5|6";i:952;s:6:"@1|5|2";i:953;s:6:"@1|5|9";i:954;s:6:"@4|6|3";i:955;s:6:"@4|6|8";i:956;s:6:"@1|6|7";i:957;s:6:"@4|5|7";i:958;s:6:"@3|6|1";i:959;s:6:"@4|5|3";i:960;s:6:"@3|5|8";i:961;s:6:"@4|6|1";i:962;s:6:"@2|6|7";i:963;s:6:"@1|5|8";i:964;s:6:"@2|5|8";i:965;s:6:"@1|6|2";i:966;s:6:"@3|5|7";i:967;s:6:"@3|5|3";i:968;s:6:"@4|6|2";i:969;s:6:"@3|6|8";i:970;s:6:"@3|5|6";i:971;s:6:"@1|5|6";i:972;s:6:"@2|6|8";i:973;s:6:"@1|6|8";i:974;s:6:"@4|5|8";i:975;s:6:"@2|5|3";i:976;s:6:"@1|5|3";i:977;s:6:"@2|6|1";i:978;s:6:"@4|7|1";i:979;s:6:"@1|6|6";i:980;s:6:"@1|6|0";i:981;s:6:"@2|5|0";i:982;s:6:"@1|5|0";i:983;s:6:"@2|6|9";i:984;s:6:"@3|5|0";i:985;s:6:"@4|5|0";i:986;s:6:"@3|6|2";i:987;s:6:"@2|6|4";i:988;s:6:"@4|6|5";i:989;s:6:"@3|6|6";i:990;s:6:"@3|6|9";i:991;s:6:"@4|6|9";i:992;s:6:"@2|6|0";i:993;s:6:"@3|5|5";i:994;s:6:"@1|5|4";i:995;s:6:"@2|5|5";i:996;s:6:"@2|5|4";i:997;s:6:"@3|5|4";i:998;s:6:"@4|6|0";i:999;s:6:"@3|6|0";i:1000;s:6:"@4|5|4";i:1001;s:6:"@4|5|6";i:1002;s:6:"@1|7|0";i:1003;s:6:"@4|6|4";i:1004;s:6:"@4|6|7";i:1005;s:6:"@4|5|1";i:1006;s:6:"@3|5|1";i:1007;s:6:"@1|5|7";i:1008;s:6:"@1|6|3";i:1009;s:6:"@2|6|3";i:1010;s:6:"@1|5|5";i:1011;s:6:"@3|6|5";i:1012;s:6:"@2|5|7";i:1013;s:6:"@1|6|9";i:1014;s:6:"@2|5|1";i:1015;s:6:"@3|7|0";i:1016;s:6:"@2|7|0";i:1017;s:6:"@3|6|4";i:1018;s:6:"@1|5|1";i:1019;s:6:"@4|5|5";i:1020;s:6:"@2|6|6";i:1021;s:6:"@3|6|7";i:1022;s:6:"@4|7|0";i:1023;s:6:"@1|6|4";i:1024;}',
	'@^Mozilla/5\.0 \(.*Windows.*\).*applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.*Anonymisiert durch.*$@'=>1025,
	'@^Mozilla/5\.0 \(.*Linux.*\) applewebkit.* \(.*khtml.*like.*gecko.*\).*Chromium/(\d)(\d)\..*Chrome/.*Safari/.*$@'=>'a:27:{s:4:"@5|9";i:1026;s:4:"@5|0";i:1027;s:4:"@4|9";i:1028;s:4:"@6|0";i:1029;s:4:"@4|8";i:1030;s:4:"@4|7";i:1031;s:4:"@4|5";i:1032;s:4:"@4|6";i:1033;s:4:"@5|1";i:1034;s:4:"@5|2";i:1035;s:4:"@5|5";i:1036;s:4:"@5|6";i:1037;s:4:"@5|4";i:1038;s:4:"@5|3";i:1039;s:4:"@5|8";i:1041;s:4:"@5|7";i:1042;s:4:"@6|9";i:1043;s:4:"@6|5";i:1044;s:4:"@6|1";i:1045;s:4:"@6|4";i:1046;s:4:"@6|2";i:1047;s:4:"@6|3";i:1048;s:4:"@7|1";i:1049;s:4:"@6|6";i:1050;s:4:"@7|0";i:1051;s:4:"@6|8";i:1052;s:4:"@6|7";i:1053;}',
	'@^.*Mozilla/5\.0 \(.*Linux.*Android.*\) applewebkit.*khtml.*like.*gecko.*\) Version/.*Chrome.*Safari.*$@'=>1040,
	'@^Mozilla/5\.0 \(Windows NT 6\.2; ARM; Trident/(\d)\.0.*rv\:11\.0; WPDesktop; NOKIA; Lumia 1(\d)20.*$@'=>'a:4:{s:4:"@8|5";i:1054;s:4:"@7|5";i:1055;s:4:"@7|3";i:1056;s:4:"@8|3";i:1057;}',
	'@^TERRA_101 Mozilla/5\.0 \(X11; Linux x86_64\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.*$@'=>1058,
	'@^Mozilla/5\.0.*\(.*Windows Phone 8\.1.*Trident/7\.0.*rv\:11.*IEMobile.11\.0; Microsoft; RM\-1(\d)(\d)(\d).*$@'=>'a:5:{s:6:"@0|7|4";i:1059;s:6:"@0|8|9";i:1060;s:6:"@0|3|1";i:1061;s:6:"@0|9|0";i:1062;s:6:"@1|1|3";i:1063;}',
	'@^Mozilla/5\.0 \(.*Linux.*Android.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/(\d)(\d)\.0.*Safari/.*$@'=>'a:29:{s:4:"@5|5";i:1064;s:4:"@5|4";i:1065;s:4:"@5|6";i:1066;s:4:"@5|8";i:1067;s:4:"@5|3";i:1068;s:4:"@5|7";i:1069;s:4:"@5|0";i:1070;s:4:"@4|8";i:1071;s:4:"@4|9";i:1072;s:4:"@5|9";i:1073;s:4:"@5|1";i:1074;s:4:"@5|2";i:1075;s:4:"@6|2";i:1076;s:4:"@6|8";i:1077;s:4:"@6|9";i:1078;s:4:"@7|0";i:1079;s:4:"@7|1";i:1080;s:4:"@6|6";i:1081;s:4:"@6|5";i:1082;s:4:"@6|1";i:1083;s:4:"@4|7";i:1084;s:4:"@6|3";i:1085;s:4:"@6|4";i:1086;s:4:"@6|0";i:1087;s:4:"@6|7";i:1088;s:4:"@4|5";i:1089;s:4:"@4|3";i:1090;s:4:"@4|6";i:1091;s:4:"@4|4";i:1092;}',
	'@^Mozilla/5\.0 \(.*Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\).*Chrome/.*Safari/.*OPR/(\d)(\d)\.0.*$@'=>'a:29:{s:4:"@5|5";i:1093;s:4:"@3|9";i:1094;s:4:"@2|9";i:1095;s:4:"@4|4";i:1096;s:4:"@4|0";i:1097;s:4:"@3|8";i:1098;s:4:"@3|3";i:1099;s:4:"@5|4";i:1100;s:4:"@5|2";i:1101;s:4:"@3|7";i:1102;s:4:"@3|0";i:1103;s:4:"@3|5";i:1104;s:4:"@4|5";i:1105;s:4:"@2|8";i:1106;s:4:"@5|0";i:1107;s:4:"@3|6";i:1108;s:4:"@4|6";i:1109;s:4:"@3|1";i:1110;s:4:"@5|3";i:1111;s:4:"@3|2";i:1112;s:4:"@4|7";i:1113;s:4:"@3|4";i:1114;s:4:"@4|8";i:1115;s:4:"@4|2";i:1117;s:4:"@4|3";i:1118;s:4:"@2|7";i:1119;s:4:"@4|9";i:1120;s:4:"@4|1";i:1122;s:4:"@5|1";i:1123;}',
	'@^.*Mozilla/5\.0 \(.*Linux.*Android.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/4\.(\d).*Safari.*$@'=>'a:2:{s:2:"@1";i:1116;s:2:"@2";i:1121;}',
	'@^Mozilla/5\.0 \(Windows NT 6\.2; ARM; Trident/(\d)\.0.*rv\:11\.0; WPDesktop; NOKIA; Lumia (\d)(\d)(\d).*$@'=>'a:16:{s:8:"@7|9|2|5";i:1124;s:8:"@7|6|3|0";i:1125;s:8:"@7|5|2|0";i:1126;s:8:"@7|6|2|5";i:1127;s:8:"@7|6|3|5";i:1128;s:8:"@7|7|2|0";i:1129;s:8:"@7|8|2|0";i:1130;s:8:"@7|9|2|0";i:1131;s:8:"@8|9|2|5";i:1132;s:8:"@8|9|2|0";i:1133;s:8:"@8|5|2|0";i:1134;s:8:"@8|8|2|0";i:1135;s:8:"@8|7|2|0";i:1136;s:8:"@8|6|3|0";i:1137;s:8:"@8|6|3|5";i:1138;s:8:"@8|6|2|5";i:1139;}',
	'@^TBDC1093 Mozilla/5\.0 \(X11; Linux x86_64\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.*$@'=>1140,
	'@^Mozilla/5\.0 \(Linux;.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.* Safari/.* SRAF/3\.(\d).*$@'=>'a:3:{s:2:"@5";i:1141;s:2:"@9";i:1142;s:2:"@0";i:1144;}',
	'@^Mozilla/5\.0 \(.*Linux.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) .*ASTON;XenaHd Twin Connect.*$@'=>1143,
	'@^Mozilla/5\.0 \(.*Linux.*Android.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Version/4\.(\d).*Safari.*$@'=>'a:2:{s:2:"@1";i:1145;s:2:"@2";i:1147;}',
	'@^Mozilla/5\.0 \(.*Linux.*Android.*\) applewebkit.* \(.*khmtl.*like.*gecko.*\) Version/4\.0.*Safari.*$@'=>1146,
	'@^Mozilla/5\.0.*\(iPad.*CPU.*OS.* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Safari/.*$@'=>1148,
	'@^TBD1083 Mozilla/5\.0 \(X11; Linux x86_64\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.*$@'=>1149,
	'@^TBDG773 Mozilla/5\.0 \(X11; Linux x86_64\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.*$@'=>1150,
	'@^DINO762 Mozilla/5\.0 \(X11; Linux x86_64\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.*$@'=>1151,
	'@^TBDB863 Mozilla/5\.0 \(X11; Linux x86_64\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.*$@'=>1152,
	'@^Mozilla/5\.0.*\(.*Windows Phone 8\.1.*Trident/(\d)\.0.*rv\:11.*IEMobile.11\.0; NOKIA; Lumia (\d)(\d)(\d).*$@'=>'a:24:{s:8:"@7|7|3|0";i:1153;s:8:"@7|6|3|5";i:1154;s:8:"@8|6|2|5";i:1155;s:8:"@7|8|2|0";i:1156;s:8:"@7|9|2|5";i:1157;s:8:"@7|9|3|0";i:1158;s:8:"@7|9|2|8";i:1159;s:8:"@7|6|3|0";i:1160;s:8:"@7|6|2|5";i:1161;s:8:"@8|6|3|5";i:1162;s:8:"@8|9|2|0";i:1163;s:8:"@8|7|3|0";i:1164;s:8:"@7|5|2|0";i:1165;s:8:"@8|6|3|0";i:1166;s:8:"@7|6|2|0";i:1167;s:8:"@7|5|3|0";i:1168;s:8:"@8|8|2|0";i:1169;s:8:"@7|9|2|0";i:1170;s:8:"@8|9|2|5";i:1171;s:8:"@8|9|2|8";i:1172;s:8:"@8|6|2|0";i:1173;s:8:"@8|5|3|0";i:1174;s:8:"@8|5|2|0";i:1175;s:8:"@8|9|3|0";i:1176;}',
	'@^Mozilla/5\.0 \(.*Linux.*Android.*\) applewebkit.*\(.*kthml.*like.*gecko.*\) Version/4\.0.*Safari.*$@'=>1177,
	'@^Mozilla/5\.0 \(.*Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) .*Version/1(\d)\.(\d).* Safari/.*$@'=>'a:6:{s:4:"@0|2";i:1178;s:4:"@0|1";i:1179;s:4:"@1|0";i:1180;s:4:"@1|1";i:1181;s:4:"@0|0";i:1182;s:4:"@2|0";i:1183;}',
	'@^Mozilla/5\.0 \(.*Windows NT 10\.0.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Chrome/.* Safari/.*$@'=>1184,
	'@^Mozilla/5\.0 \(.*Linux.*Android.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/(\d)\.(\d).*Safari.*$@'=>'a:6:{s:4:"@4|1";i:1185;s:4:"@4|4";i:1186;s:4:"@5|0";i:1187;s:4:"@4|3";i:1188;s:4:"@4|0";i:1189;s:4:"@4|2";i:1190;}',
	'@^Mozilla/5\.0 \(iPad.*CPU.*OS.* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Mobile.*$@'=>1191,
	'@^Mozilla/4\.0 \(compatible.*; MSIE 7\.0.*; .*Windows.*Mozilla/4\.0 \(compatible.*; MSIE 6\.0.*$@'=>1192,
	'@^Mozilla/5\.0 \(.*Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) .*Version/(\d)\.(\d).* Safari/.*$@'=>'a:8:{s:4:"@7|0";i:1193;s:4:"@8|0";i:1195;s:4:"@6|2";i:1196;s:4:"@6|1";i:1198;s:4:"@9|0";i:1199;s:4:"@6|0";i:1200;s:4:"@9|1";i:1204;s:4:"@7|1";i:1205;}',
	'@^Mozilla/5\.0 \(.*Windows NT 6\.(\d).*\) applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/.*Safari/.*$@'=>'a:4:{s:2:"@3";i:1194;s:2:"@0";i:1202;s:2:"@2";i:1203;s:2:"@1";i:1206;}',
	'@^Mozilla/5\.0 \(.*Windows.*\).*applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.* anonymized by.*$@'=>1197,
	'@^Mozilla/5\.0\(.*Linux.*Android.*\) applewebkit.*\(.*khtml.*like.*gecko.*\) Version/4\.0.*Safari.*$@'=>1201,
	'@^Mozilla/5\.0 \(.*Linux.*\) applewebkit.* \(.*khtml.*like.*gecko.*\).*Chrome/.*Safari/.*OPR/(\d)(\d)\.0.*$@'=>'a:29:{s:4:"@2|7";i:1207;s:4:"@4|9";i:1208;s:4:"@3|4";i:1209;s:4:"@4|6";i:1210;s:4:"@4|7";i:1211;s:4:"@3|0";i:1213;s:4:"@4|4";i:1214;s:4:"@4|2";i:1215;s:4:"@4|5";i:1216;s:4:"@5|1";i:1217;s:4:"@3|2";i:1218;s:4:"@5|0";i:1219;s:4:"@4|8";i:1220;s:4:"@4|1";i:1221;s:4:"@5|5";i:1222;s:4:"@3|7";i:1223;s:4:"@5|4";i:1224;s:4:"@3|8";i:1225;s:4:"@3|3";i:1226;s:4:"@5|2";i:1227;s:4:"@2|8";i:1228;s:4:"@3|9";i:1229;s:4:"@5|3";i:1230;s:4:"@3|1";i:1231;s:4:"@4|0";i:1232;s:4:"@3|5";i:1233;s:4:"@2|9";i:1234;s:4:"@4|3";i:1235;s:4:"@3|6";i:1240;}',
	'@^Mozilla/5\.0 \(.*Windows NT 6\.(\d).*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Chrome/.* Safari/.*$@'=>'a:5:{s:2:"@4";i:1212;s:2:"@1";i:1236;s:2:"@0";i:1237;s:2:"@2";i:1238;s:2:"@3";i:1239;}',
	'@^Mozilla/4\.0 \(compatible; MSIE 7\.0.*; .*Windows NT 6\.2.*Trident/3\.1; Xbox; Xbox One.*$@'=>1241,
	'@^Mozilla/5\.0 \(.*Linux.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) HeadlessChrome.* Safari/.*$@'=>1242,
	'@^Mozilla/5\.0 \(.*Linux.*Android.*\) applewebkit.*\(.*khtml.*like.*gecko.*\) .*Chrome/.*Safari/.*$@'=>1243,
	'@^Mozilla/5\.0 \(compatible; MSIE 10\.0.*Windows NT 6\.2.*Trident/6\.0.*Xbox; Xbox One.*\).*$@'=>1244,
	'@^Mozilla/5\.0.*\(.*Windows Phone 8\.1.*Trident/7\.0.*rv\:11.*IEMobile.11\.0; NOKIA; RM\-994.*$@'=>1245,
	'@^Mozilla/5\.0 \(.*Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/(\d)(\d)\.0.*Safari/.*$@'=>'a:22:{s:4:"@5|8";i:1246;s:4:"@5|4";i:1247;s:4:"@5|3";i:1248;s:4:"@5|5";i:1249;s:4:"@5|9";i:1250;s:4:"@7|1";i:1251;s:4:"@6|7";i:1252;s:4:"@6|6";i:1253;s:4:"@6|2";i:1254;s:4:"@5|1";i:1255;s:4:"@6|4";i:1256;s:4:"@6|8";i:1257;s:4:"@6|9";i:1258;s:4:"@6|3";i:1259;s:4:"@7|0";i:1260;s:4:"@5|2";i:1261;s:4:"@5|0";i:1262;s:4:"@6|5";i:1263;s:4:"@6|1";i:1264;s:4:"@6|0";i:1265;s:4:"@5|7";i:1266;s:4:"@5|6";i:1267;}',
	'@^Mozilla/5\.0\(.*Linux.*Android.*\)applewebkit.*\(.*khtml.*like.*gecko.*\)Version/4\.0.*Safari.*$@'=>1268,
	'@^Mozilla/5\.0 \(.*Linux.*Android.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/.*Safari.*$@'=>1269,
	'@^Mozilla/5\.0.*\(.*CPU.*OS.* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Safari/.*$@'=>1270,
	'@^Mozilla/5\.0.*\(.*CPU.*OS.* like Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Mobile.*$@'=>1271,
	'@^Mozilla/5\.0 \(Windows NT 6\.2; ARM; Trident/(\d)\.0.*rv\:11\.0; WPDesktop; NOKIA; 909.*$@'=>'a:2:{s:2:"@8";i:1272;s:2:"@7";i:1273;}',
	'@^Mozilla/5\.0 \(.*Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) .*Chrome/.* Safari/.*$@'=>1274,
	'@^.* Mozilla/5\.0 \(X11; Linux x86_64\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.*$@'=>1275,
	'@^Mozilla/5\.0.*\(.*Windows Phone 8\.1.*Trident/(\d)\.0.*rv\:11.*IEMobile.11\.0; NOKIA; 909.*$@'=>'a:2:{s:2:"@7";i:1276;s:2:"@8";i:1277;}',
	'@^Mozilla/5\.0 \(.*Linux.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/(\d)(\d)\.0.*Safari/.*$@'=>'a:22:{s:4:"@7|1";i:1278;s:4:"@6|9";i:1279;s:4:"@6|7";i:1280;s:4:"@5|0";i:1281;s:4:"@6|0";i:1282;s:4:"@6|2";i:1283;s:4:"@6|4";i:1284;s:4:"@5|6";i:1285;s:4:"@6|8";i:1286;s:4:"@5|2";i:1287;s:4:"@5|9";i:1288;s:4:"@5|4";i:1289;s:4:"@5|1";i:1290;s:4:"@5|3";i:1291;s:4:"@7|0";i:1292;s:4:"@5|7";i:1293;s:4:"@6|6";i:1294;s:4:"@5|8";i:1295;s:4:"@5|5";i:1296;s:4:"@6|3";i:1297;s:4:"@6|1";i:1298;s:4:"@6|5";i:1299;}',
	'@^Mozilla/5\.0 Slackware.* \(.*Linux.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) .*Chrome/.*$@'=>1300,
	'@^Mozilla/5\.0 \(.*Linux.*\) applewebkit.*\(.*khtml.*like.*gecko.*\) .*Version/4\.(\d).*Safari/.*$@'=>'a:2:{s:2:"@1";i:1301;s:2:"@0";i:1302;}',
	'@^Mozilla/5\.0 \(compatible; MSIE 10\.0; Windows 95; Anonymisiert.*Trident/6\.0.*\).*$@'=>1303,
	'@^Mozilla/5\.0 ArchLinux \(.*Linux.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) .*Chrome/.*$@'=>1304,
	'@^Mozilla/5\.0 \(.*Mac OS X.*\) applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/.*Safari/.*$@'=>1305,
	'@^Mozilla/5\.0 \(.*Linux.*Android.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/4\.0.*$@'=>1306,
	'@^Mozilla/5\.0 \(.*Windows.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Chrome/.* Safari/.*$@'=>1307,
	'@^Mozilla/5\.0 \(compatible; MSIE 10\.0; .*Windows NT 10\.0.*Trident/(\d)\.0.*Touch.*\).*$@'=>'a:2:{s:2:"@7";i:1308;s:2:"@8";i:1309;}',
	'@^Mozilla/5\.0 \(.*Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) .*Version/1(\d)\.(\d).*$@'=>'a:4:{s:4:"@0|1";i:1310;s:4:"@0|0";i:1311;s:4:"@1|0";i:1312;s:4:"@0|2";i:1313;}',
	'@^Mozilla/5\.0 \(.*Windows NT 10\.0.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Chrome/.*$@'=>1314,
	'@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\.0; .*Windows NT 10\.0.*Trident/(\d)\.0.*Touch.*\).*$@'=>'a:5:{s:6:"@4|7|8";i:1315;s:6:"@4|8|7";i:1316;s:6:"@4|7|7";i:1317;s:6:"@4|9|7";i:1318;s:6:"@5|9|7";i:1322;}',
	'@^Mozilla/5\.0 \(compatible; MSIE 10\.0; .*Windows NT 6\.(\d).*Trident/(\d)\.0.*Touch.*\).*$@'=>'a:4:{s:4:"@3|8";i:1319;s:4:"@3|7";i:1320;s:4:"@4|8";i:1321;s:4:"@4|7";i:1323;}',
	'@^Mozilla/5\.0 \(.*Windows NT 6\.(\d).*; rv\:(\d)(\d).*\) Gecko.* Firefox/(\d)(\d).*anonymized by .*$@'=>'a:102:{s:10:"@1|4|0|4|0";i:1324;s:10:"@2|3|4|3|4";i:1325;s:10:"@2|3|0|3|0";i:1326;s:10:"@2|3|7|3|7";i:1327;s:10:"@1|3|9|3|9";i:1328;s:10:"@1|3|2|3|2";i:1329;s:10:"@1|3|4|3|4";i:1330;s:10:"@0|3|4|3|4";i:1331;s:10:"@0|4|0|4|0";i:1332;s:10:"@1|3|3|3|3";i:1333;s:10:"@2|5|7|5|7";i:1334;s:10:"@0|3|3|3|3";i:1335;s:10:"@0|3|8|3|8";i:1336;s:10:"@2|3|2|3|2";i:1337;s:10:"@2|3|9|3|9";i:1338;s:10:"@0|3|0|3|0";i:1339;s:10:"@2|3|3|3|3";i:1340;s:10:"@2|5|4|5|4";i:1341;s:10:"@2|3|8|3|8";i:1342;s:10:"@1|3|8|3|8";i:1343;s:10:"@2|5|8|5|8";i:1344;s:10:"@0|3|6|3|6";i:1345;s:10:"@1|3|6|3|6";i:1346;s:10:"@2|3|6|3|6";i:1347;s:10:"@0|3|1|3|1";i:1348;s:10:"@0|5|5|5|5";i:1349;s:10:"@0|5|8|5|8";i:1350;s:10:"@1|5|8|5|8";i:1351;s:10:"@1|3|1|3|1";i:1352;s:10:"@1|3|7|3|7";i:1353;s:10:"@0|3|5|3|5";i:1354;s:10:"@0|3|2|3|2";i:1355;s:10:"@0|3|7|3|7";i:1356;s:10:"@1|3|5|3|5";i:1357;s:10:"@2|3|5|3|5";i:1358;s:10:"@2|3|1|3|1";i:1359;s:10:"@1|3|0|3|0";i:1360;s:10:"@0|3|9|3|9";i:1361;s:10:"@1|5|7|5|7";i:1362;s:10:"@1|5|0|5|0";i:1363;s:10:"@2|4|0|4|0";i:1364;s:10:"@1|6|1|6|1";i:1365;s:10:"@1|5|5|5|5";i:1366;s:10:"@0|6|2|6|2";i:1367;s:10:"@2|5|0|5|0";i:1368;s:10:"@1|6|2|6|2";i:1369;s:10:"@0|5|4|5|4";i:1370;s:10:"@0|5|0|5|0";i:1371;s:10:"@0|6|0|6|0";i:1372;s:10:"@1|4|9|4|9";i:1373;s:10:"@2|5|9|5|9";i:1374;s:10:"@1|6|0|6|0";i:1375;s:10:"@2|4|9|4|9";i:1376;s:10:"@0|6|1|6|1";i:1377;s:10:"@2|6|0|6|0";i:1378;s:10:"@0|5|7|5|7";i:1379;s:10:"@2|6|2|6|2";i:1380;s:10:"@0|5|6|5|6";i:1381;s:10:"@1|5|2|5|2";i:1382;s:10:"@1|5|6|5|6";i:1383;s:10:"@2|5|2|5|2";i:1384;s:10:"@0|5|3|5|3";i:1385;s:10:"@1|5|3|5|3";i:1386;s:10:"@2|5|5|5|5";i:1387;s:10:"@0|5|2|5|2";i:1388;s:10:"@2|5|3|5|3";i:1389;s:10:"@1|6|3|6|3";i:1390;s:10:"@0|5|1|5|1";i:1391;s:10:"@0|6|3|6|3";i:1392;s:10:"@2|6|3|6|3";i:1393;s:10:"@1|5|1|5|1";i:1394;s:10:"@2|5|6|5|6";i:1395;s:10:"@2|5|1|5|1";i:1396;s:10:"@0|4|9|4|9";i:1397;s:10:"@2|6|1|6|1";i:1398;s:10:"@0|4|5|4|5";i:1399;s:10:"@2|4|4|4|4";i:1400;s:10:"@1|4|4|4|4";i:1401;s:10:"@1|4|5|4|5";i:1402;s:10:"@2|4|5|4|5";i:1403;s:10:"@1|4|6|4|6";i:1404;s:10:"@0|4|6|4|6";i:1405;s:10:"@2|4|3|4|3";i:1406;s:10:"@1|4|3|4|3";i:1407;s:10:"@2|4|1|4|1";i:1408;s:10:"@1|4|1|4|1";i:1409;s:10:"@0|4|1|4|1";i:1410;s:10:"@0|4|2|4|2";i:1411;s:10:"@1|4|2|4|2";i:1412;s:10:"@0|4|3|4|3";i:1413;s:10:"@2|4|2|4|2";i:1414;s:10:"@2|4|6|4|6";i:1415;s:10:"@0|4|4|4|4";i:1416;s:10:"@2|4|8|4|8";i:1417;s:10:"@0|4|7|4|7";i:1418;s:10:"@0|5|9|5|9";i:1419;s:10:"@0|4|8|4|8";i:1420;s:10:"@1|4|8|4|8";i:1421;s:10:"@1|4|7|4|7";i:1422;s:10:"@1|5|9|5|9";i:1423;s:10:"@1|5|4|5|4";i:1424;s:10:"@2|4|7|4|7";i:1425;}',
	'@^Mozilla/5\.0 \(.*Linux.*\).*applewebkit.* \(.*khtml.*like.*gecko.*\) Sabayon Chrome/.*$@'=>1426,
	'@^Mozilla/5\.0 \(.*Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) .*Version/(\d)\.(\d).*$@'=>'a:8:{s:4:"@7|0";i:1427;s:4:"@6|0";i:1428;s:4:"@6|2";i:1429;s:4:"@6|1";i:1430;s:4:"@9|0";i:1431;s:4:"@7|1";i:1432;s:4:"@9|1";i:1433;s:4:"@8|0";i:1434;}',
	'@^Mozilla/5\.0 \(.*Windows NT 6\.(\d).*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Chrome/.*$@'=>'a:5:{s:2:"@1";i:1435;s:2:"@4";i:1436;s:2:"@2";i:1437;s:2:"@0";i:1438;s:2:"@3";i:1439;}',
	'@^Mozilla/5\.0 \(.*Linux.*\) applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/.*Safari/.*$@'=>1440,
	'@^Mozilla/5\.0 \(.*Linux.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Chrome/.* Safari/.*$@'=>1441,
	'@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\.0; .*Windows NT 6\.(\d).*Trident/(\d)\.0.*Touch.*\).*$@'=>'a:10:{s:8:"@4|7|3|8";i:1442;s:8:"@4|7|4|8";i:1443;s:8:"@4|9|3|7";i:1444;s:8:"@4|8|3|7";i:1445;s:8:"@4|7|3|7";i:1446;s:8:"@4|7|4|7";i:1447;s:8:"@4|8|4|7";i:1448;s:8:"@5|9|4|7";i:1449;s:8:"@5|9|3|7";i:1450;s:8:"@4|9|4|7";i:1451;}',
	'@^Mozilla/5\.0 \(compatible; MSIE 10\.0; .*Windows.*WOW64.*Trident/(\d)\.0.*Touch.*\).*$@'=>'a:2:{s:2:"@8";i:1452;s:2:"@7";i:1453;}',
	'@^Mozilla/5\.0 \(.*Android.*Mobile.*\).*Gecko.*Firefox/.* anonymized by Abelssoft.*$@'=>1454,
	'@^Mozilla/5\.0 \(.*Android.*Tablet.*\).*Gecko.*Firefox/.* anonymized by Abelssoft.*$@'=>1455,
	'@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\.0.*; .*Windows NT 6\.1.*Trident/(\d)\.(\d); Xbox.*$@'=>'a:2:{s:8:"@4|7|3|1";i:1456;s:8:"@5|9|5|0";i:1457;}',
	'@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\.0; .*Windows.*WOW64.*Trident/(\d)\.0.*Touch.*\).*$@'=>'a:5:{s:6:"@4|9|7";i:1458;s:6:"@4|7|8";i:1459;s:6:"@5|9|7";i:1460;s:6:"@4|8|7";i:1461;s:6:"@4|7|7";i:1462;}',
	'@^Mozilla/5\.0 \(X11; \) applewebkit.* \(.*khtml.*like.*gecko.*\) Chrome/.*Safari/.*$@'=>1463,
	'@^Mozilla/5\.0 \(.*Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Safari/(\d)(\d)(\d).*$@'=>'a:9:{s:6:"@1|6|2";i:1464;s:6:"@4|1|2";i:1465;s:6:"@4|1|9";i:1466;s:6:"@1|5|8";i:1467;s:6:"@4|1|7";i:1468;s:6:"@3|1|2";i:1469;s:6:"@1|4|6";i:1470;s:6:"@1|0|0";i:1471;s:6:"@1|2|5";i:1472;}',
	'@^Mozilla/5\.0 \(.*Linux.*Android.*\) applewebkit.* \(.*khtml.*like.*gecko.*\).*CrMo/.*$@'=>1473,
	'@^Mozilla/5\.0 \(.*Windows NT 6\.0.*; rv\:(\d)(\d).*\) Gecko.* Firefox anonymized by .*$@'=>'a:23:{s:4:"@5|2";i:1474;s:4:"@3|8";i:1475;s:4:"@3|7";i:1476;s:4:"@3|9";i:1477;s:4:"@3|3";i:1478;s:4:"@5|0";i:1479;s:4:"@3|5";i:1480;s:4:"@3|4";i:1481;s:4:"@3|6";i:1482;s:4:"@5|1";i:1483;s:4:"@4|6";i:1484;s:4:"@4|7";i:1485;s:4:"@4|8";i:1486;s:4:"@4|9";i:1487;s:4:"@4|5";i:1488;s:4:"@3|2";i:1489;s:4:"@4|2";i:1490;s:4:"@4|3";i:1491;s:4:"@4|4";i:1492;s:4:"@4|1";i:1493;s:4:"@4|0";i:1494;s:4:"@3|0";i:1495;s:4:"@3|1";i:1496;}',
	'@^Mozilla/5\.0 \(compatible; MSIE 10\.0; .*Windows.*x64.*Trident/(\d)\.0.*Touch.*\).*$@'=>'a:2:{s:2:"@8";i:1497;s:2:"@7";i:1498;}',
	'@^Mozilla/5\.0 \(.*Mac OS X.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) Safari/85.*$@'=>1499,
	'@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\.0; .*Windows.*x64.*Trident/(\d)\.0.*Touch.*\).*$@'=>'a:5:{s:6:"@4|8|7";i:1500;s:6:"@5|9|7";i:1501;s:6:"@4|9|7";i:1502;s:6:"@4|7|8";i:1503;s:6:"@4|7|7";i:1504;}',
	'@^Mozilla/5\.0 \(.*Windows NT 6\.(\d).*; rv\:.*\) Gecko.* Firefox/.*anonymized by .*$@'=>'a:2:{s:2:"@0";i:1505;s:2:"@1";i:1506;}',
	'@^Mozilla/5\.0 \(Windows NT 6\.2; ARM; Trident/(\d)\.0.*rv\:11\.0; WPDesktop; .*$@'=>'a:2:{s:2:"@8";i:1507;s:2:"@7";i:1508;}',
	'@^Mozilla/5\.0 \(compatible; MSIE 10\.0; .*Windows NT 10\.0.*Trident/8\.0.*\).*$@'=>1509,
	'@^Mozilla/5\.0 \(.*Windows NT 6\.0.*; rv\:.*\) Gecko.* Firefox anonymized by .*$@'=>1510,
	'@^Mozilla/5\.0 \(.*Mac OS X.*\) applewebkit.*\(.*khtml.*like.*gecko.*\).*Version/.*$@'=>1511,
	'@^Mozilla/5\.0 \(compatible; MSIE 10\.0.*; Trident/6\.0; .*Windows NT 6\.1.*$@'=>1512,
	'@^Mozilla/5\.0 \(compatible; MSIE 10\.0; .*Windows NT 6\.(\d).*Trident/8\.0.*\).*$@'=>'a:3:{s:2:"@3";i:1513;s:2:"@1";i:1515;s:2:"@4";i:1518;}',
	'@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\.0; .*Windows NT 10\.0.*Trident/8\.0.*\).*$@'=>'a:5:{s:4:"@5|7";i:1514;s:4:"@4|8";i:1516;s:4:"@4|9";i:1517;s:4:"@4|7";i:1519;s:4:"@5|9";i:1520;}',
	'@^Mozilla/5\.0 \(.*Mac OS X.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Chrome/.*$@'=>1521,
	'@^Mozilla/5\.0 \(compatible; MSIE 10\.0; .*Windows NT 10\.0.*Trident/7\.0.*$@'=>1522,
	'@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\.0; .*Windows NT 6\.(\d).*Trident/(\d)\.0.*\).*$@'=>'a:23:{s:8:"@4|9|3|8";i:1523;s:8:"@5|9|1|8";i:1524;s:8:"@5|9|3|8";i:1525;s:8:"@4|8|4|8";i:1526;s:8:"@4|8|1|8";i:1527;s:8:"@4|7|1|5";i:1528;s:8:"@5|9|4|8";i:1529;s:8:"@4|9|4|8";i:1530;s:8:"@4|8|3|8";i:1531;s:8:"@5|7|4|8";i:1532;s:8:"@5|7|0|5";i:1533;s:8:"@4|7|3|8";i:1534;s:8:"@4|7|4|8";i:1535;s:8:"@4|8|1|5";i:1536;s:8:"@4|9|1|8";i:1537;s:8:"@4|8|0|5";i:1538;s:8:"@5|7|1|5";i:1539;s:8:"@5|8|1|5";i:1540;s:8:"@4|7|0|5";i:1541;s:8:"@5|7|3|8";i:1542;s:8:"@5|7|1|8";i:1543;s:8:"@4|7|1|8";i:1544;s:8:"@5|8|0|5";i:1545;}',
	'@^Mozilla/5\.0 \(.*Windows NT 6\.(\d).*\) Gecko.* Firefox/(\d)(\d)\.0.* Anonymisiert.*$@'=>'a:38:{s:6:"@1|4|6";i:1546;s:6:"@1|5|9";i:1547;s:6:"@1|4|0";i:1548;s:6:"@1|3|0";i:1549;s:6:"@1|4|3";i:1550;s:6:"@1|3|2";i:1551;s:6:"@1|5|2";i:1552;s:6:"@2|5|2";i:1553;s:6:"@1|5|8";i:1554;s:6:"@1|4|2";i:1555;s:6:"@1|4|1";i:1556;s:6:"@1|4|5";i:1557;s:6:"@1|3|9";i:1558;s:6:"@1|5|7";i:1559;s:6:"@1|5|6";i:1560;s:6:"@1|5|1";i:1561;s:6:"@1|4|8";i:1562;s:6:"@1|3|6";i:1564;s:6:"@1|6|1";i:1565;s:6:"@1|4|7";i:1566;s:6:"@1|6|2";i:1567;s:6:"@1|5|4";i:1568;s:6:"@2|5|1";i:1569;s:6:"@1|3|4";i:1570;s:6:"@1|3|5";i:1571;s:6:"@2|4|9";i:1572;s:6:"@1|4|9";i:1574;s:6:"@1|6|3";i:1575;s:6:"@1|3|3";i:1576;s:6:"@1|3|1";i:1577;s:6:"@1|6|0";i:1579;s:6:"@1|5|5";i:1580;s:6:"@1|4|4";i:1581;s:6:"@1|5|3";i:1582;s:6:"@1|3|7";i:1583;s:6:"@2|5|0";i:1584;s:6:"@1|3|8";i:1585;s:6:"@1|5|0";i:1586;}',
	'@^Mozilla/5\.0 \(compatible; MSIE 10\.0; .*Windows.*Trident/(\d)\.0.*Touch.*\).*$@'=>'a:2:{s:2:"@8";i:1563;s:2:"@7";i:1573;}',
	'@^Mozilla/5\.0 \(compatible; MSIE 10\.0; .*Windows.*WOW64.*Trident/8\.0.*\).*$@'=>1578,
	'@^Mozilla/5\.0 \(.*Windows.*; rv\:(\d)(\d).*\) Gecko.* Firefox/(\d)(\d).*anonymized by .*$@'=>'a:34:{s:8:"@4|9|4|9";i:1587;s:8:"@4|8|4|8";i:1588;s:8:"@6|2|6|2";i:1589;s:8:"@4|4|4|4";i:1590;s:8:"@5|0|5|0";i:1591;s:8:"@4|6|4|6";i:1592;s:8:"@5|8|5|8";i:1593;s:8:"@6|3|6|3";i:1594;s:8:"@6|0|6|0";i:1595;s:8:"@6|1|6|1";i:1596;s:8:"@4|5|4|5";i:1597;s:8:"@5|1|5|1";i:1598;s:8:"@4|7|4|7";i:1599;s:8:"@5|9|5|9";i:1600;s:8:"@3|0|3|0";i:1601;s:8:"@3|9|3|9";i:1602;s:8:"@3|3|3|3";i:1603;s:8:"@4|3|4|3";i:1604;s:8:"@3|4|3|4";i:1605;s:8:"@5|6|5|6";i:1606;s:8:"@5|5|5|5";i:1607;s:8:"@5|2|5|2";i:1608;s:8:"@5|4|5|4";i:1609;s:8:"@3|1|3|1";i:1610;s:8:"@3|7|3|7";i:1611;s:8:"@3|8|3|8";i:1612;s:8:"@3|2|3|2";i:1613;s:8:"@5|3|5|3";i:1614;s:8:"@3|6|3|6";i:1615;s:8:"@4|2|4|2";i:1616;s:8:"@3|5|3|5";i:1617;s:8:"@4|0|4|0";i:1618;s:8:"@4|1|4|1";i:1619;s:8:"@5|7|5|7";i:1620;}',
	'@^.*Mozilla/5\.0.*\(.*Windows Phone 8\.1.*Trident/8\.0.*rv\:11.*IEMobile.11\.0.*$@'=>1621,
	'@^Mozilla/5\.0 \(.*Mac OS X.*\) applewebkit.*\(.*khtml.*like.*gecko.*\).*Safari.*$@'=>1622,
	'@^Mozilla/(\d)\.0 \(.*Windows.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Chrome/.*$@'=>'a:2:{s:2:"@4";i:1623;s:2:"@5";i:1624;}',
	'@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\.0; .*Windows NT 10\.0.*Trident/7\.0.*$@'=>'a:6:{s:4:"@5|8";i:1625;s:4:"@4|7";i:1626;s:4:"@4|9";i:1627;s:4:"@5|7";i:1630;s:4:"@4|8";i:1632;s:4:"@5|9";i:1633;}',
	'@^Mozilla/5\.0 \(compatible; MSIE 10\.0; .*Windows NT 6\.(\d).*Trident/7\.0.*$@'=>'a:3:{s:2:"@3";i:1628;s:2:"@1";i:1629;s:2:"@4";i:1631;}',
	'@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\.0.*; .*Windows NT 6\.(\d).*Trident/(\d)\.0.*$@'=>'a:8:{s:8:"@5|9|1|5";i:1634;s:8:"@5|9|0|5";i:1635;s:8:"@4|8|1|4";i:1637;s:8:"@4|8|0|4";i:1638;s:8:"@5|8|0|4";i:1639;s:8:"@4|9|0|5";i:1641;s:8:"@5|8|1|4";i:1642;s:8:"@4|9|1|5";i:1643;}',
	'@^Mozilla/5\.0 \(compatible; MSIE 10\.0.*Windows NT 6\.(\d).*Trident/6\.0.*\).*$@'=>'a:2:{s:2:"@1";i:1636;s:2:"@2";i:1640;}',
	'@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\.0; .*Windows.*Trident/(\d)\.0.*Touch.*\).*$@'=>'a:5:{s:6:"@4|8|7";i:1644;s:6:"@4|9|7";i:1646;s:6:"@5|9|7";i:1647;s:6:"@4|7|7";i:1651;s:6:"@4|7|8";i:1657;}',
	'@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\.0; .*Windows.*WOW64.*Trident/(\d)\.0.*\).*$@'=>'a:9:{s:6:"@5|7|8";i:1645;s:6:"@4|8|8";i:1648;s:6:"@4|7|8";i:1649;s:6:"@4|7|5";i:1650;s:6:"@4|9|8";i:1652;s:6:"@4|8|5";i:1653;s:6:"@5|8|5";i:1654;s:6:"@5|7|5";i:1655;s:6:"@5|9|8";i:1656;}',
	'@^Mozilla/5\.0.*\(.*Windows Phone 8\.1.*Trident/(\d)\.0.*rv\:11.*IEMobile.11\.0.*$@'=>'a:2:{s:2:"@7";i:1658;s:2:"@8";i:1659;}',
	'@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\.0; .*Windows NT 6\.(\d).*Trident/(\d)\.0.*$@'=>'a:22:{s:8:"@5|7|1|4";i:1660;s:8:"@4|7|0|4";i:1661;s:8:"@4|7|1|4";i:1662;s:8:"@4|8|3|7";i:1663;s:8:"@5|9|3|7";i:1664;s:8:"@5|9|4|7";i:1665;s:8:"@5|8|3|7";i:1666;s:8:"@5|9|1|7";i:1667;s:8:"@4|9|4|7";i:1668;s:8:"@4|9|1|7";i:1669;s:8:"@4|9|3|7";i:1670;s:8:"@5|8|4|7";i:1671;s:8:"@4|8|1|7";i:1672;s:8:"@5|7|0|4";i:1673;s:8:"@4|7|1|7";i:1674;s:8:"@4|7|3|7";i:1675;s:8:"@5|7|4|7";i:1676;s:8:"@5|7|3|7";i:1677;s:8:"@4|8|4|7";i:1678;s:8:"@5|7|1|7";i:1679;s:8:"@4|7|4|7";i:1680;s:8:"@5|8|1|7";i:1681;}',
	'@^Mozilla/5\.0 \(compatible; MSIE 10\.0; .*Windows.*WOW64.*Trident/7\.0.*$@'=>1682,
	'@^Mozilla/5\.0 \(compatible; MSIE 10\.0; .*Windows.*x64.*Trident/8\.0.*\).*$@'=>1683,
	'@^Mozilla/5\.0 \(.*Linux.*\).*applewebkit.*\(.*khtml.*like.*gecko.*\).*Chrome/.*$@'=>1684,
	'@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\..*Windows NT 6\.(\d).*Trident/6\.0.*\).*$@'=>'a:12:{s:6:"@5|8|2";i:1685;s:6:"@4|8|1";i:1686;s:6:"@5|8|1";i:1690;s:6:"@4|8|2";i:1691;s:6:"@4|7|1";i:1692;s:6:"@5|7|1";i:1693;s:6:"@5|7|2";i:1696;s:6:"@4|7|2";i:1697;s:6:"@4|9|2";i:1698;s:6:"@4|9|1";i:1700;s:6:"@5|9|1";i:1701;s:6:"@5|9|2";i:1704;}',
	'@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\.0; .*Windows.*WOW64.*Trident/(\d)\.0.*$@'=>'a:8:{s:6:"@5|7|7";i:1687;s:6:"@4|7|4";i:1688;s:6:"@5|9|7";i:1689;s:6:"@4|9|7";i:1694;s:6:"@5|8|7";i:1695;s:6:"@4|8|7";i:1699;s:6:"@5|7|4";i:1702;s:6:"@4|7|7";i:1703;}',
	'@^Mozilla/5\.0 \(.*Windows.*; rv\:(\d)(\d).*\) Gecko.* Firefox anonymized by .*$@'=>'a:34:{s:4:"@4|6";i:1705;s:4:"@4|5";i:1707;s:4:"@3|9";i:1708;s:4:"@3|8";i:1711;s:4:"@4|1";i:1712;s:4:"@4|0";i:1713;s:4:"@4|2";i:1714;s:4:"@4|4";i:1715;s:4:"@4|3";i:1717;s:4:"@3|7";i:1718;s:4:"@5|0";i:1719;s:4:"@5|1";i:1720;s:4:"@5|2";i:1721;s:4:"@5|3";i:1723;s:4:"@3|1";i:1724;s:4:"@5|6";i:1725;s:4:"@5|7";i:1726;s:4:"@4|8";i:1727;s:4:"@3|2";i:1728;s:4:"@3|3";i:1729;s:4:"@5|5";i:1730;s:4:"@3|0";i:1731;s:4:"@5|8";i:1732;s:4:"@6|1";i:1733;s:4:"@6|2";i:1734;s:4:"@6|3";i:1735;s:4:"@6|0";i:1736;s:4:"@4|9";i:1737;s:4:"@5|9";i:1738;s:4:"@5|4";i:1739;s:4:"@4|7";i:1740;s:4:"@3|5";i:1741;s:4:"@3|6";i:1743;s:4:"@3|4";i:1745;}',
	'@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\.0; .*Windows.*x64.*Trident/(\d)\.0.*\).*$@'=>'a:9:{s:6:"@4|9|8";i:1706;s:6:"@5|9|8";i:1709;s:6:"@4|8|8";i:1710;s:6:"@4|7|8";i:1716;s:6:"@5|7|8";i:1722;s:6:"@4|7|5";i:1742;s:6:"@4|8|5";i:1744;s:6:"@5|7|5";i:1746;s:6:"@5|8|5";i:1747;}',
	'@^Mozilla/5\.0 \(.*Linux.*\) applewebkit.* \(.*khtml.*like.*gecko.*\) HbbTV.*$@'=>1748,
	'@^Mozilla/5\.0 \(compatible; MSIE 10\.0; .*Windows.*x64.*Trident/7\.0.*$@'=>1749,
	'@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\..*Windows.*WOW64.*Trident/6\.0.*\).*$@'=>'a:6:{s:4:"@4|9";i:1750;s:4:"@5|9";i:1751;s:4:"@5|8";i:1752;s:4:"@4|8";i:1753;s:4:"@5|7";i:1754;s:4:"@4|7";i:1755;}',
	'@^Mozilla/5\.0 \(.*Windows.*; rv\:.*\) Gecko.* Firefox/.*anonymized by .*$@'=>1756,
	'@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\.0; .*Windows.*x64.*Trident/(\d)\.0.*$@'=>'a:8:{s:6:"@5|8|7";i:1757;s:6:"@4|9|7";i:1758;s:6:"@5|7|4";i:1759;s:6:"@4|7|4";i:1760;s:6:"@5|9|7";i:1761;s:6:"@4|8|7";i:1762;s:6:"@4|7|7";i:1763;s:6:"@5|7|7";i:1764;}',
	'@^Mozilla/5\.0 \(.*Windows.*; rv\:.*\) Gecko.* Firefox anonymized by .*$@'=>1765,
	'@^Mozilla/5\.0 \(compatible; MSIE 10\.0.*; Trident/6\.0; .*Windows.*$@'=>1766,
	'@^Mozilla/5\.0 \(compatible; MSIE 10\.0; .*Windows.*Trident/8\.0.*\).*$@'=>1767,
	'@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\..*Windows.*x64.*Trident/6\.0.*\).*$@'=>'a:6:{s:4:"@5|9";i:1768;s:4:"@4|8";i:1769;s:4:"@4|9";i:1770;s:4:"@4|7";i:1771;s:4:"@5|7";i:1772;s:4:"@5|8";i:1773;}',
	'@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\.0; .*Windows.*Trident/(\d)\.0.*\).*$@'=>'a:9:{s:6:"@5|8|5";i:1774;s:6:"@5|7|8";i:1775;s:6:"@4|9|8";i:1776;s:6:"@5|7|5";i:1777;s:6:"@4|7|5";i:1778;s:6:"@4|8|8";i:1780;s:6:"@4|8|5";i:1781;s:6:"@4|7|8";i:1782;s:6:"@5|9|8";i:1783;}',
	'@^Mozilla/5\.0 \(.*Linux.*\) applewebkit.*THOMSON; Thomson THS845.*$@'=>1779,
	'@^Mozilla/5\.0 \(.*Windows.*\) Gecko.* Firefox/(\d)(\d)\.0.* Anonymisiert.*$@'=>'a:34:{s:4:"@5|2";i:1784;s:4:"@5|8";i:1785;s:4:"@5|7";i:1786;s:4:"@5|5";i:1787;s:4:"@4|4";i:1788;s:4:"@5|0";i:1789;s:4:"@3|0";i:1790;s:4:"@4|9";i:1791;s:4:"@4|3";i:1793;s:4:"@3|3";i:1794;s:4:"@4|6";i:1795;s:4:"@4|8";i:1796;s:4:"@3|2";i:1797;s:4:"@4|5";i:1798;s:4:"@5|6";i:1799;s:4:"@3|6";i:1800;s:4:"@3|1";i:1802;s:4:"@3|7";i:1803;s:4:"@4|0";i:1805;s:4:"@3|5";i:1806;s:4:"@3|8";i:1807;s:4:"@6|3";i:1809;s:4:"@4|7";i:1810;s:4:"@3|4";i:1811;s:4:"@6|1";i:1813;s:4:"@3|9";i:1814;s:4:"@4|2";i:1816;s:4:"@5|4";i:1817;s:4:"@4|1";i:1818;s:4:"@5|1";i:1819;s:4:"@6|0";i:1820;s:4:"@5|3";i:1821;s:4:"@5|9";i:1822;s:4:"@6|2";i:1823;}',
	'@^Mozilla/5\.0 \(.*Windows NT 6\.(\d).*; rv\:1\.9\.(\d).*\) Gecko.* Firefox .*$@'=>'a:6:{s:4:"@2|2";i:1792;s:4:"@0|2";i:1801;s:4:"@1|2";i:1804;s:4:"@1|1";i:1808;s:4:"@0|1";i:1812;s:4:"@2|1";i:1815;}',
	'@^Mozilla/5\.0 \(.*Windows NT 10\.0.*Trident/7\.0.*Touch.*rv\:11\.0.*\).*$@'=>1824,
	'@^Mozilla/5\.0 \(compatible; MSIE 10\.0; .*Windows.*Trident/7\.0.*$@'=>1825,
	'@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\.0.*; .*Windows.*Trident/(\d)\.0.*$@'=>'a:4:{s:6:"@5|8|4";i:1826;s:6:"@4|8|4";i:1827;s:6:"@5|9|5";i:1829;s:6:"@4|9|5";i:1830;}',
	'@^Mozilla/5\.0 \(compatible; MSIE 10\.0.*Windows.*Trident/6\.0.*\).*$@'=>1828,
	'@^Mozilla/5\.0 \(.*Windows NT 6\.(\d).*Trident/7\.0.*Touch.*rv\:11\.0.*\).*$@'=>'a:2:{s:2:"@3";i:1831;s:2:"@4";i:1832;}',
	'@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\.0; .*Windows.*Trident/(\d)\.0.*$@'=>'a:8:{s:6:"@4|8|7";i:1833;s:6:"@5|9|7";i:1834;s:6:"@5|7|7";i:1835;s:6:"@4|9|7";i:1836;s:6:"@4|7|4";i:1837;s:6:"@5|8|7";i:1838;s:6:"@4|7|7";i:1839;s:6:"@5|7|4";i:1840;}',
	'@^Mozilla/5\.0; TOB.* \(.*Windows NT 10\.0.*Trident/7\.0.*rv\:11\.0.*$@'=>1841,
	'@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\..*Windows.*Trident/6\.0.*\).*$@'=>'a:6:{s:4:"@4|8";i:1842;s:4:"@5|8";i:1843;s:4:"@4|9";i:1844;s:4:"@4|7";i:1845;s:4:"@5|7";i:1846;s:4:"@5|9";i:1847;}',
	'@^Mozilla/5\.0; TOB.* \(.*Windows NT 6\.(\d).*Trident/7\.0.*rv\:11\.0.*$@'=>'a:3:{s:2:"@4";i:1848;s:2:"@3";i:1849;s:2:"@1";i:1850;}',
	'@^Mozilla/5\.0 \(.*MSIE 9\.0.*; .*Windows NT 6\.(\d).*Trident/5\.0.*\).*$@'=>'a:2:{s:2:"@0";i:1851;s:2:"@1";i:1852;}',
	'@^Mozilla/5\.0 \(masking\-agent; rv\:.*\) Gecko.* Firefox/(\d)(\d)\.0.*$@'=>'a:34:{s:4:"@6|0";i:1853;s:4:"@5|1";i:1854;s:4:"@6|2";i:1855;s:4:"@5|0";i:1856;s:4:"@6|3";i:1857;s:4:"@6|1";i:1858;s:4:"@3|0";i:1859;s:4:"@5|8";i:1860;s:4:"@3|3";i:1861;s:4:"@5|6";i:1862;s:4:"@4|8";i:1863;s:4:"@3|1";i:1864;s:4:"@5|7";i:1865;s:4:"@4|9";i:1866;s:4:"@3|2";i:1867;s:4:"@5|5";i:1868;s:4:"@5|9";i:1869;s:4:"@3|4";i:1870;s:4:"@4|5";i:1871;s:4:"@4|7";i:1872;s:4:"@5|2";i:1873;s:4:"@4|6";i:1874;s:4:"@3|7";i:1875;s:4:"@5|4";i:1876;s:4:"@3|6";i:1877;s:4:"@4|3";i:1878;s:4:"@4|4";i:1879;s:4:"@4|2";i:1880;s:4:"@4|0";i:1881;s:4:"@4|1";i:1882;s:4:"@5|3";i:1883;s:4:"@3|5";i:1884;s:4:"@3|9";i:1885;s:4:"@3|8";i:1886;}',
	'@^Mozilla/4\.0 \(compatible.*; MSIE 7\.0b.*; .*Windows NT 6\.0.*$@'=>1887,
	'@^Mozilla/5\.0 \(.*Windows.*\) Gecko.* Firefox/.* Anonymisiert.*$@'=>1888,
	'@^Mozilla/(\d)\.0 \(compatible; MSIE 10\.0.*; .*Windows NT 6\.(\d).*$@'=>'a:4:{s:4:"@4|1";i:1889;s:4:"@4|2";i:1890;s:4:"@5|2";i:1891;s:4:"@5|1";i:1892;}',
	'@^Mozilla/4\.0 \(compatible.*; MSIE 7\.0.*; .*Windows NT 6\.0.*$@'=>1893,
	'@^Mozilla/5\.0 \(Windows 95; Anonymisiert.*; Trident/7\.0.*$@'=>1894,
	'@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\.0.*; .*Windows NT 6\.(\d).*$@'=>'a:9:{s:6:"@5|7|0";i:1895;s:6:"@5|8|0";i:1896;s:6:"@5|8|1";i:1897;s:6:"@4|8|1";i:1898;s:6:"@4|8|0";i:1899;s:6:"@5|9|0";i:1900;s:6:"@4|9|1";i:1901;s:6:"@5|9|1";i:1902;s:6:"@4|9|0";i:1903;}',
	'@^Mozilla/(\d)\.0 \(.*Windows NT 10\.0.*\) Gecko.* Firefox/(\d)(\d)\.0.*$@'=>'a:68:{s:6:"@4|6|0";i:1904;s:6:"@5|3|7";i:1905;s:6:"@5|5|0";i:1906;s:6:"@5|5|9";i:1907;s:6:"@4|3|3";i:1908;s:6:"@4|3|7";i:1909;s:6:"@5|5|8";i:1910;s:6:"@5|4|9";i:1911;s:6:"@5|5|2";i:1912;s:6:"@5|6|0";i:1913;s:6:"@4|5|9";i:1914;s:6:"@4|5|2";i:1915;s:6:"@4|4|2";i:1916;s:6:"@4|3|4";i:1917;s:6:"@5|6|1";i:1918;s:6:"@4|6|1";i:1919;s:6:"@4|4|1";i:1920;s:6:"@4|4|0";i:1921;s:6:"@5|3|3";i:1922;s:6:"@5|4|0";i:1923;s:6:"@5|3|9";i:1924;s:6:"@4|3|9";i:1925;s:6:"@4|3|8";i:1926;s:6:"@4|5|8";i:1927;s:6:"@4|5|0";i:1928;s:6:"@5|3|8";i:1929;s:6:"@4|6|2";i:1930;s:6:"@5|4|1";i:1931;s:6:"@5|3|4";i:1932;s:6:"@5|4|2";i:1933;s:6:"@5|5|1";i:1934;s:6:"@5|3|5";i:1935;s:6:"@4|4|6";i:1936;s:6:"@4|3|1";i:1937;s:6:"@5|4|5";i:1938;s:6:"@4|5|5";i:1939;s:6:"@5|5|5";i:1940;s:6:"@5|5|4";i:1941;s:6:"@5|3|1";i:1942;s:6:"@5|4|7";i:1943;s:6:"@4|4|7";i:1944;s:6:"@4|3|2";i:1945;s:6:"@4|5|3";i:1946;s:6:"@5|3|2";i:1947;s:6:"@5|3|6";i:1948;s:6:"@4|3|6";i:1949;s:6:"@4|4|5";i:1950;s:6:"@4|5|4";i:1951;s:6:"@4|5|7";i:1952;s:6:"@4|3|0";i:1953;s:6:"@5|4|8";i:1954;s:6:"@5|5|7";i:1955;s:6:"@5|5|3";i:1956;s:6:"@5|4|3";i:1957;s:6:"@4|3|5";i:1958;s:6:"@5|3|0";i:1959;s:6:"@4|5|1";i:1960;s:6:"@4|4|8";i:1961;s:6:"@5|4|4";i:1962;s:6:"@4|4|4";i:1963;s:6:"@5|4|6";i:1964;s:6:"@5|5|6";i:1965;s:6:"@4|5|6";i:1966;s:6:"@4|4|3";i:1967;s:6:"@4|4|9";i:1968;s:6:"@5|6|3";i:1969;s:6:"@4|6|3";i:1970;s:6:"@5|6|2";i:1971;}',
	'@^Mozilla/5\.0 \(iPhone.*CPU iPhone OS .* like Mac OS X.*\).*$@'=>1972,
	'@^Mozilla/5\.0 \(.*Windows NT 10\.0.*\) Gecko.*/.*Mozilla/5\.0.*$@'=>1973,
	'@^Mozilla/(\d)\.0 \(.*Windows NT 6\.(\d).*\) Gecko.* Firefox/(\d)(\d)\.0.*$@'=>'a:318:{s:8:"@5|1|4|0";i:1974;s:8:"@5|0|4|0";i:1975;s:8:"@4|4|4|0";i:1976;s:8:"@4|3|4|0";i:1977;s:8:"@5|2|4|0";i:1978;s:8:"@5|3|4|0";i:1979;s:8:"@5|2|5|2";i:1980;s:8:"@5|2|3|6";i:1981;s:8:"@5|3|5|2";i:1982;s:8:"@5|4|5|2";i:1983;s:8:"@4|2|4|0";i:1984;s:8:"@4|1|4|0";i:1985;s:8:"@5|1|5|3";i:1986;s:8:"@5|2|5|3";i:1987;s:8:"@5|3|5|3";i:1988;s:8:"@5|4|5|3";i:1989;s:8:"@5|4|3|9";i:1990;s:8:"@4|4|5|3";i:1991;s:8:"@4|0|4|0";i:1992;s:8:"@4|1|5|3";i:1993;s:8:"@4|2|5|3";i:1994;s:8:"@4|3|5|3";i:1995;s:8:"@5|1|5|2";i:1996;s:8:"@5|0|5|2";i:1997;s:8:"@5|4|4|1";i:1998;s:8:"@5|3|4|1";i:1999;s:8:"@5|2|4|1";i:2000;s:8:"@5|1|4|1";i:2001;s:8:"@4|0|4|2";i:2002;s:8:"@5|1|3|6";i:2003;s:8:"@4|4|4|2";i:2004;s:8:"@4|3|4|2";i:2005;s:8:"@4|2|4|2";i:2006;s:8:"@4|1|4|2";i:2007;s:8:"@5|0|4|1";i:2008;s:8:"@4|4|4|1";i:2009;s:8:"@4|2|5|2";i:2010;s:8:"@4|3|5|2";i:2011;s:8:"@4|4|5|2";i:2012;s:8:"@4|0|4|1";i:2013;s:8:"@4|1|5|2";i:2014;s:8:"@4|0|5|2";i:2015;s:8:"@4|3|4|1";i:2016;s:8:"@4|2|4|1";i:2017;s:8:"@4|1|4|1";i:2018;s:8:"@5|3|3|9";i:2019;s:8:"@5|1|3|9";i:2020;s:8:"@5|1|3|7";i:2021;s:8:"@5|0|3|7";i:2022;s:8:"@4|1|5|5";i:2023;s:8:"@4|2|5|5";i:2024;s:8:"@5|2|3|7";i:2025;s:8:"@5|3|3|7";i:2026;s:8:"@4|2|3|8";i:2027;s:8:"@4|1|3|8";i:2028;s:8:"@4|0|3|8";i:2029;s:8:"@5|4|3|7";i:2030;s:8:"@4|3|5|5";i:2031;s:8:"@4|4|5|5";i:2032;s:8:"@5|4|5|5";i:2033;s:8:"@4|2|3|7";i:2034;s:8:"@4|1|3|7";i:2035;s:8:"@4|0|3|7";i:2036;s:8:"@5|3|5|5";i:2037;s:8:"@5|2|5|5";i:2038;s:8:"@5|3|3|6";i:2039;s:8:"@4|4|3|7";i:2040;s:8:"@4|3|3|7";i:2041;s:8:"@5|1|5|5";i:2042;s:8:"@4|3|3|8";i:2043;s:8:"@4|4|3|8";i:2044;s:8:"@4|1|3|9";i:2045;s:8:"@4|0|3|9";i:2046;s:8:"@5|4|3|8";i:2047;s:8:"@4|1|5|4";i:2048;s:8:"@4|2|3|9";i:2049;s:8:"@4|3|3|9";i:2050;s:8:"@5|4|3|6";i:2051;s:8:"@5|0|3|9";i:2052;s:8:"@5|4|5|1";i:2053;s:8:"@4|4|3|9";i:2054;s:8:"@4|2|5|4";i:2055;s:8:"@4|3|5|4";i:2056;s:8:"@5|3|5|4";i:2057;s:8:"@5|4|5|4";i:2058;s:8:"@5|1|3|8";i:2059;s:8:"@5|0|3|8";i:2060;s:8:"@5|2|5|4";i:2061;s:8:"@5|1|5|4";i:2062;s:8:"@4|4|5|4";i:2063;s:8:"@5|3|3|8";i:2064;s:8:"@5|2|3|8";i:2065;s:8:"@5|2|3|9";i:2066;s:8:"@5|1|5|1";i:2067;s:8:"@4|0|4|6";i:2068;s:8:"@5|4|4|5";i:2069;s:8:"@4|0|4|9";i:2070;s:8:"@4|1|4|9";i:2071;s:8:"@4|1|4|6";i:2072;s:8:"@4|2|4|6";i:2073;s:8:"@5|1|4|6";i:2074;s:8:"@5|0|4|6";i:2075;s:8:"@4|4|4|6";i:2076;s:8:"@4|3|4|6";i:2077;s:8:"@4|2|4|9";i:2078;s:8:"@4|3|4|9";i:2079;s:8:"@5|3|4|9";i:2080;s:8:"@5|4|4|9";i:2081;s:8:"@5|1|4|5";i:2082;s:8:"@5|0|4|5";i:2083;s:8:"@5|2|4|9";i:2084;s:8:"@5|1|4|9";i:2085;s:8:"@4|4|4|9";i:2086;s:8:"@5|3|4|5";i:2087;s:8:"@5|2|4|5";i:2088;s:8:"@5|0|4|9";i:2089;s:8:"@5|2|4|6";i:2090;s:8:"@5|3|4|6";i:2091;s:8:"@4|3|4|8";i:2092;s:8:"@4|2|4|8";i:2093;s:8:"@4|1|4|8";i:2094;s:8:"@4|0|4|8";i:2095;s:8:"@4|4|4|8";i:2096;s:8:"@5|0|4|8";i:2097;s:8:"@5|4|4|8";i:2098;s:8:"@5|3|4|8";i:2099;s:8:"@5|2|4|8";i:2100;s:8:"@5|1|4|8";i:2101;s:8:"@5|1|6|2";i:2102;s:8:"@5|4|4|7";i:2103;s:8:"@4|2|4|7";i:2104;s:8:"@4|1|4|7";i:2105;s:8:"@4|0|4|7";i:2106;s:8:"@5|4|4|6";i:2107;s:8:"@4|3|4|7";i:2108;s:8:"@4|4|4|7";i:2109;s:8:"@5|3|4|7";i:2110;s:8:"@5|2|4|7";i:2111;s:8:"@5|1|4|7";i:2112;s:8:"@5|0|4|7";i:2113;s:8:"@4|4|4|5";i:2114;s:8:"@4|3|4|5";i:2115;s:8:"@4|2|4|3";i:2116;s:8:"@4|1|4|3";i:2117;s:8:"@4|0|4|3";i:2118;s:8:"@5|4|4|2";i:2119;s:8:"@4|3|4|3";i:2120;s:8:"@4|4|4|3";i:2121;s:8:"@5|3|4|3";i:2122;s:8:"@5|2|4|3";i:2123;s:8:"@5|1|4|3";i:2124;s:8:"@5|0|4|3";i:2125;s:8:"@5|3|4|2";i:2126;s:8:"@5|2|4|2";i:2127;s:8:"@5|0|4|2";i:2128;s:8:"@5|0|5|1";i:2129;s:8:"@5|0|3|6";i:2130;s:8:"@5|2|5|1";i:2131;s:8:"@4|4|5|1";i:2132;s:8:"@4|3|5|1";i:2133;s:8:"@5|1|4|2";i:2134;s:8:"@4|0|5|1";i:2135;s:8:"@4|1|5|1";i:2136;s:8:"@4|2|5|1";i:2137;s:8:"@5|4|4|3";i:2138;s:8:"@5|4|5|0";i:2139;s:8:"@5|1|4|4";i:2140;s:8:"@5|0|4|4";i:2141;s:8:"@4|4|4|4";i:2142;s:8:"@4|3|4|4";i:2143;s:8:"@5|2|4|4";i:2144;s:8:"@5|3|4|4";i:2145;s:8:"@4|2|4|5";i:2146;s:8:"@4|1|4|5";i:2147;s:8:"@4|0|4|5";i:2148;s:8:"@5|4|4|4";i:2149;s:8:"@4|2|4|4";i:2150;s:8:"@4|1|4|4";i:2151;s:8:"@5|0|5|0";i:2152;s:8:"@5|1|5|0";i:2153;s:8:"@5|2|5|0";i:2154;s:8:"@5|3|5|0";i:2155;s:8:"@4|4|5|0";i:2156;s:8:"@4|3|5|0";i:2157;s:8:"@4|0|4|4";i:2158;s:8:"@4|0|5|0";i:2159;s:8:"@4|1|5|0";i:2160;s:8:"@4|2|5|0";i:2161;s:8:"@5|3|5|1";i:2162;s:8:"@5|4|4|0";i:2163;s:8:"@4|1|3|2";i:2164;s:8:"@4|1|5|9";i:2165;s:8:"@4|2|5|9";i:2166;s:8:"@4|3|5|9";i:2167;s:8:"@4|2|3|2";i:2168;s:8:"@4|3|3|2";i:2169;s:8:"@5|2|6|3";i:2170;s:8:"@5|1|6|3";i:2171;s:8:"@4|4|3|2";i:2172;s:8:"@4|4|5|9";i:2173;s:8:"@4|0|3|2";i:2174;s:8:"@5|3|3|1";i:2175;s:8:"@5|2|3|1";i:2176;s:8:"@5|1|3|1";i:2177;s:8:"@5|4|3|1";i:2178;s:8:"@5|4|5|9";i:2179;s:8:"@5|1|5|9";i:2180;s:8:"@5|2|5|9";i:2181;s:8:"@5|3|5|9";i:2182;s:8:"@5|3|6|3";i:2183;s:8:"@5|0|3|2";i:2184;s:8:"@4|2|5|8";i:2185;s:8:"@4|3|5|8";i:2186;s:8:"@4|4|5|8";i:2187;s:8:"@4|1|3|3";i:2188;s:8:"@4|1|5|8";i:2189;s:8:"@4|2|3|3";i:2190;s:8:"@5|0|3|3";i:2191;s:8:"@4|4|3|3";i:2192;s:8:"@4|3|3|3";i:2193;s:8:"@5|1|5|8";i:2194;s:8:"@5|2|5|8";i:2195;s:8:"@5|3|3|2";i:2196;s:8:"@5|2|3|2";i:2197;s:8:"@5|1|3|2";i:2198;s:8:"@5|4|3|2";i:2199;s:8:"@4|0|3|3";i:2200;s:8:"@5|3|5|8";i:2201;s:8:"@5|4|5|8";i:2202;s:8:"@5|4|6|3";i:2203;s:8:"@5|0|3|1";i:2204;s:8:"@4|3|6|3";i:2205;s:8:"@4|2|6|1";i:2206;s:8:"@4|3|6|1";i:2207;s:8:"@4|4|6|1";i:2208;s:8:"@5|1|6|1";i:2209;s:8:"@4|1|6|1";i:2210;s:8:"@4|0|3|0";i:2211;s:8:"@4|3|3|0";i:2212;s:8:"@4|2|3|0";i:2213;s:8:"@4|1|3|0";i:2214;s:8:"@5|2|6|1";i:2215;s:8:"@5|3|6|1";i:2216;s:8:"@4|3|6|2";i:2217;s:8:"@4|4|6|2";i:2218;s:8:"@5|2|6|2";i:2219;s:8:"@4|2|6|2";i:2220;s:8:"@4|1|6|2";i:2221;s:8:"@5|4|6|1";i:2222;s:8:"@5|4|6|2";i:2223;s:8:"@5|3|6|2";i:2224;s:8:"@4|4|3|0";i:2225;s:8:"@5|0|3|0";i:2226;s:8:"@4|1|3|1";i:2227;s:8:"@4|0|3|1";i:2228;s:8:"@4|1|6|0";i:2229;s:8:"@4|2|6|0";i:2230;s:8:"@4|2|3|1";i:2231;s:8:"@4|3|3|1";i:2232;s:8:"@4|4|3|1";i:2233;s:8:"@4|2|6|3";i:2234;s:8:"@4|1|6|3";i:2235;s:8:"@4|3|6|0";i:2236;s:8:"@4|4|6|0";i:2237;s:8:"@5|3|3|0";i:2238;s:8:"@5|2|3|0";i:2239;s:8:"@5|1|3|0";i:2240;s:8:"@5|4|3|0";i:2241;s:8:"@5|4|6|0";i:2242;s:8:"@5|1|6|0";i:2243;s:8:"@5|2|6|0";i:2244;s:8:"@5|3|6|0";i:2245;s:8:"@5|1|3|3";i:2246;s:8:"@4|4|6|3";i:2247;s:8:"@4|3|5|6";i:2248;s:8:"@4|3|3|5";i:2249;s:8:"@5|2|5|7";i:2250;s:8:"@5|1|5|7";i:2251;s:8:"@4|2|3|5";i:2252;s:8:"@4|4|3|5";i:2253;s:8:"@5|3|5|7";i:2254;s:8:"@4|4|3|4";i:2255;s:8:"@5|4|5|7";i:2256;s:8:"@5|2|3|4";i:2257;s:8:"@4|4|5|6";i:2258;s:8:"@4|2|5|6";i:2259;s:8:"@4|1|3|5";i:2260;s:8:"@4|3|5|7";i:2261;s:8:"@4|2|5|7";i:2262;s:8:"@4|1|5|7";i:2263;s:8:"@5|1|3|4";i:2264;s:8:"@4|4|5|7";i:2265;s:8:"@5|3|3|4";i:2266;s:8:"@5|0|3|4";i:2267;s:8:"@4|0|3|5";i:2268;s:8:"@4|1|5|6";i:2269;s:8:"@5|4|3|4";i:2270;s:8:"@4|3|3|4";i:2271;s:8:"@5|0|3|5";i:2272;s:8:"@5|4|3|3";i:2273;s:8:"@5|3|3|5";i:2274;s:8:"@5|3|5|6";i:2275;s:8:"@4|1|3|6";i:2276;s:8:"@5|2|5|6";i:2277;s:8:"@5|3|3|3";i:2278;s:8:"@4|2|3|6";i:2279;s:8:"@5|4|3|5";i:2280;s:8:"@4|3|3|6";i:2281;s:8:"@4|4|3|6";i:2282;s:8:"@5|2|3|3";i:2283;s:8:"@5|1|5|6";i:2284;s:8:"@5|4|5|6";i:2285;s:8:"@4|2|3|4";i:2286;s:8:"@4|0|3|6";i:2287;s:8:"@4|0|3|4";i:2288;s:8:"@5|1|3|5";i:2289;s:8:"@4|1|3|4";i:2290;s:8:"@5|2|3|5";i:2291;}',
	'@^Mozilla/5\.0 \(.*Android.*Tablet.*\) Gecko.* Firefox/(\d)(\d)\.(\d).*$@'=>'a:56:{s:6:"@6|3|0";i:2292;s:6:"@2|2|0";i:2294;s:6:"@2|1|0";i:2295;s:6:"@6|2|0";i:2296;s:6:"@1|8|0";i:2302;s:6:"@3|8|0";i:2303;s:6:"@2|3|0";i:2306;s:6:"@3|6|0";i:2307;s:6:"@1|9|0";i:2310;s:6:"@2|4|0";i:2311;s:6:"@5|9|0";i:2314;s:6:"@5|0|1";i:2316;s:6:"@5|1|0";i:2319;s:6:"@5|3|0";i:2321;s:6:"@2|5|0";i:2322;s:6:"@5|2|0";i:2324;s:6:"@5|0|0";i:2325;s:6:"@3|0|0";i:2328;s:6:"@2|9|0";i:2330;s:6:"@3|1|0";i:2331;s:6:"@4|9|0";i:2333;s:6:"@4|8|0";i:2335;s:6:"@5|4|0";i:2337;s:6:"@3|9|0";i:2338;s:6:"@5|8|0";i:2341;s:6:"@6|0|0";i:2343;s:6:"@6|1|0";i:2344;s:6:"@5|5|0";i:2350;s:6:"@3|2|0";i:2351;s:6:"@3|7|0";i:2353;s:6:"@5|6|0";i:2354;s:6:"@5|7|0";i:2355;s:6:"@1|6|0";i:2362;s:6:"@3|4|0";i:2363;s:6:"@4|2|0";i:2364;s:6:"@1|3|0";i:2365;s:6:"@1|2|0";i:2367;s:6:"@3|3|1";i:2374;s:6:"@4|6|0";i:2376;s:6:"@4|5|0";i:2378;s:6:"@2|6|0";i:2380;s:6:"@4|4|0";i:2382;s:6:"@1|5|0";i:2383;s:6:"@2|7|0";i:2386;s:6:"@1|4|0";i:2388;s:6:"@4|3|0";i:2389;s:6:"@4|1|0";i:2393;s:6:"@1|7|0";i:2394;s:6:"@1|0|0";i:2396;s:6:"@3|5|0";i:2398;s:6:"@4|0|0";i:2399;s:6:"@1|1|0";i:2401;s:6:"@2|0|0";i:2402;s:6:"@4|7|0";i:2403;s:6:"@2|8|0";i:2405;s:6:"@3|3|0";i:2408;}',
	'@^Mozilla/5\.0 \(.*Android.*Mobile.*\) Gecko.* Firefox/(\d)(\d)\.(\d).*$@'=>'a:56:{s:6:"@6|3|0";i:2293;s:6:"@1|7|0";i:2297;s:6:"@2|4|0";i:2299;s:6:"@3|2|0";i:2300;s:6:"@6|2|0";i:2301;s:6:"@3|8|0";i:2304;s:6:"@2|1|0";i:2305;s:6:"@2|3|0";i:2308;s:6:"@3|7|0";i:2309;s:6:"@2|2|0";i:2312;s:6:"@3|6|0";i:2313;s:6:"@5|0|1";i:2315;s:6:"@2|5|0";i:2317;s:6:"@5|0|0";i:2318;s:6:"@5|1|0";i:2320;s:6:"@5|2|0";i:2323;s:6:"@4|9|0";i:2326;s:6:"@3|0|0";i:2327;s:6:"@2|9|0";i:2329;s:6:"@3|1|0";i:2332;s:6:"@4|8|0";i:2334;s:6:"@5|3|0";i:2336;s:6:"@5|8|0";i:2340;s:6:"@5|9|0";i:2342;s:6:"@6|0|0";i:2346;s:6:"@5|7|0";i:2348;s:6:"@5|5|0";i:2349;s:6:"@5|4|0";i:2352;s:6:"@5|6|0";i:2357;s:6:"@6|1|0";i:2358;s:6:"@2|0|0";i:2359;s:6:"@1|2|0";i:2360;s:6:"@2|7|0";i:2361;s:6:"@4|2|0";i:2366;s:6:"@3|3|0";i:2368;s:6:"@3|4|0";i:2369;s:6:"@1|9|0";i:2370;s:6:"@2|6|0";i:2371;s:6:"@1|1|0";i:2372;s:6:"@4|1|0";i:2373;s:6:"@1|5|0";i:2375;s:6:"@1|4|0";i:2377;s:6:"@4|6|0";i:2379;s:6:"@4|4|0";i:2381;s:6:"@4|7|0";i:2384;s:6:"@3|3|1";i:2385;s:6:"@1|3|0";i:2387;s:6:"@4|5|0";i:2390;s:6:"@4|3|0";i:2391;s:6:"@1|6|0";i:2392;s:6:"@4|0|0";i:2395;s:6:"@3|9|0";i:2397;s:6:"@1|0|0";i:2400;s:6:"@1|8|0";i:2404;s:6:"@2|8|0";i:2406;s:6:"@3|5|0";i:2407;}',
	'@^Mozilla/5\.0 \(.*Windows NT 6\.(\d).*\) Gecko.*/.*Mozilla/5\.0.*$@'=>'a:5:{s:2:"@4";i:2298;s:2:"@2";i:2339;s:2:"@3";i:2345;s:2:"@1";i:2347;s:2:"@0";i:2356;}',
	'@^Mozilla/5\.0 \(masking\-agent; rv\:.*\) Gecko.* Firefox/.*$@'=>2409,
	'@^Mozilla/5\.0 \(.*Windows NT 10\.0.*Trident/7\.0.*rv\:11\.0.*$@'=>2410,
	'@^Mozilla/5\.0 \(iPod.*CPU iPhone OS .* like Mac OS X.*\).*$@'=>2411,
	'@^Mozilla/5\.0 \(iPad.*CPU iPhone OS .* like Mac OS X.*\).*$@'=>2412,
	'@^Mozilla/5\.0 \(.*Android.*Tablet.*\) Gecko.* Firefox/(\d)\.(\d).*$@'=>'a:11:{s:4:"@2|0";i:2413;s:4:"@1|0";i:2417;s:4:"@9|0";i:2419;s:4:"@6|0";i:2420;s:4:"@7|0";i:2421;s:4:"@1|1";i:2423;s:4:"@5|0";i:2426;s:4:"@8|0";i:2428;s:4:"@4|0";i:2430;s:4:"@2|3";i:2432;s:4:"@2|1";i:2434;}',
	'@^Mozilla/5\.0 \(.*Android.*Mobile.*\) Gecko.* Firefox/(\d)\.(\d).*$@'=>'a:11:{s:4:"@8|0";i:2414;s:4:"@9|0";i:2415;s:4:"@1|1";i:2416;s:4:"@6|0";i:2418;s:4:"@1|0";i:2422;s:4:"@2|0";i:2424;s:4:"@7|0";i:2425;s:4:"@2|3";i:2427;s:4:"@4|0";i:2429;s:4:"@2|1";i:2431;s:4:"@5|0";i:2433;}',
	'@^Mozilla/5\.0 \(.*Windows.*Trident/7\.0.*Touch.*rv\:11\.0.*\).*$@'=>2435,
	'@^Mozilla/5\.0 \(.*Windows NT 6\.(\d).*Trident/7\.0.*rv\:11\.0.*$@'=>'a:3:{s:2:"@3";i:2436;s:2:"@4";i:2437;s:2:"@1";i:2438;}',
	'@^Mozilla/(\d)\.0 \(.*Windows NT 10\.0.*\) Gecko.* Firefox/.*$@'=>'a:2:{s:2:"@5";i:2439;s:2:"@4";i:2440;}',
	'@^Mozilla/5\.0; TOB.* \(.*Windows.*Trident/7\.0.*rv\:11\.0.*$@'=>2441,
	'@^Mozilla/5\.0 \(.*MSIE 9\.0.*; .*Windows.*Trident/5\.0.*\).*$@'=>2442,
	'@^Mozilla/(\d)\.0 \(.*Windows NT 6\.(\d).*\) Gecko.* Firefox/.*$@'=>'a:10:{s:4:"@4|1";i:2443;s:4:"@4|0";i:2444;s:4:"@5|3";i:2445;s:4:"@4|3";i:2446;s:4:"@4|4";i:2447;s:4:"@5|4";i:2448;s:4:"@4|2";i:2449;s:4:"@5|1";i:2451;s:4:"@5|2";i:2452;s:4:"@5|0";i:2453;}',
	'@^Mozilla/4\.0 \(compatible.*; MSIE 7\.0b.*; .*Windows.*$@'=>2450,
	'@^Mozilla/5\.0 \(.*Android.*Tablet.*\) Gecko.* Firefox/.*$@'=>2454,
	'@^Mozilla/5\.0 \(.*Android.*Mobile.*\) Gecko.* Firefox/.*$@'=>2455,
	'@^Mozilla/(\d)\.0 \(compatible; MSIE 10\.0.*; .*Windows.*$@'=>'a:2:{s:2:"@5";i:2456;s:2:"@4";i:2457;}',
	'@^Mozilla/4\.0 \(compatible.*; MSIE 7\.0.*; .*Windows.*$@'=>2458,
	'@^Mozilla/5\.0 \(.*CPU iPhone OS .* like Mac OS X.*\).*$@'=>2459,
	'@^Mozilla/5\.0 \(.*Windows NT 10\.0.*; Trident/8\.0.*\).*$@'=>2460,
	'@^Mozilla/5\.0 \(.*Android.*Tablet.*\).*Gecko.*Firefox/.*$@'=>2461,
	'@^Mozilla/5\.0 \(.*Android.*Mobile.*\).*Gecko.*Firefox/.*$@'=>2462,
	'@^Mozilla/(\d)\.0 \(compatible; MSIE (\d)\.0.*; .*Windows.*$@'=>'a:7:{s:4:"@5|7";i:2463;s:4:"@4|6";i:2464;s:4:"@5|6";i:2465;s:4:"@5|9";i:2466;s:4:"@4|9";i:2467;s:4:"@5|8";i:2468;s:4:"@4|8";i:2469;}',
	'@^Mozilla/(\d)\.0 \(.*Mac OS X.*\) Gecko.* Firefox/(\d)(\d)\.0.*$@'=>'a:68:{s:6:"@5|6|0";i:2470;s:6:"@5|3|3";i:2471;s:6:"@5|4|0";i:2472;s:6:"@4|5|8";i:2473;s:6:"@4|4|0";i:2474;s:6:"@4|5|3";i:2475;s:6:"@4|3|4";i:2476;s:6:"@5|5|3";i:2477;s:6:"@4|4|1";i:2478;s:6:"@5|5|8";i:2479;s:6:"@5|4|1";i:2482;s:6:"@4|5|2";i:2483;s:6:"@4|3|3";i:2484;s:6:"@5|5|2";i:2485;s:6:"@5|3|9";i:2487;s:6:"@5|5|7";i:2488;s:6:"@5|5|6";i:2489;s:6:"@4|5|5";i:2490;s:6:"@5|3|7";i:2491;s:6:"@5|5|5";i:2492;s:6:"@4|5|6";i:2493;s:6:"@4|3|7";i:2494;s:6:"@4|3|6";i:2495;s:6:"@4|3|8";i:2496;s:6:"@5|3|5";i:2497;s:6:"@4|5|4";i:2498;s:6:"@4|3|9";i:2499;s:6:"@5|3|4";i:2500;s:6:"@4|5|7";i:2501;s:6:"@5|5|4";i:2502;s:6:"@5|3|8";i:2503;s:6:"@4|3|5";i:2504;s:6:"@5|3|2";i:2505;s:6:"@4|4|2";i:2506;s:6:"@4|3|0";i:2507;s:6:"@5|4|9";i:2508;s:6:"@4|6|1";i:2509;s:6:"@5|4|5";i:2510;s:6:"@5|3|0";i:2511;s:6:"@5|3|6";i:2512;s:6:"@4|4|5";i:2513;s:6:"@4|4|9";i:2514;s:6:"@4|4|6";i:2515;s:6:"@4|4|8";i:2516;s:6:"@4|6|2";i:2517;s:6:"@5|4|8";i:2518;s:6:"@5|4|7";i:2519;s:6:"@4|4|7";i:2520;s:6:"@5|6|1";i:2521;s:6:"@5|4|6";i:2522;s:6:"@5|4|4";i:2523;s:6:"@4|3|1";i:2524;s:6:"@5|5|9";i:2525;s:6:"@4|5|1";i:2526;s:6:"@4|3|2";i:2527;s:6:"@5|5|1";i:2528;s:6:"@4|5|9";i:2529;s:6:"@5|6|3";i:2530;s:6:"@5|4|2";i:2531;s:6:"@4|4|3";i:2532;s:6:"@5|4|3";i:2533;s:6:"@4|6|0";i:2534;s:6:"@4|5|0";i:2535;s:6:"@4|4|4";i:2536;s:6:"@5|5|0";i:2537;s:6:"@5|3|1";i:2538;s:6:"@4|6|3";i:2539;s:6:"@5|6|2";i:2540;}',
	'@^Mozilla/5\.0 \(.*Windows NT 6\.(\d).*; Trident/8\.0.*\).*$@'=>'a:3:{s:2:"@3";i:2480;s:2:"@4";i:2481;s:2:"@1";i:2486;}',
	'@^Mozilla/5\.0 \(.*Windows NT 10\.0.*\) Gecko.*/(\d)(\d)\.0.*$@'=>'a:34:{s:4:"@4|5";i:2541;s:4:"@3|9";i:2542;s:4:"@3|4";i:2543;s:4:"@4|0";i:2544;s:4:"@3|5";i:2545;s:4:"@3|8";i:2546;s:4:"@3|7";i:2547;s:4:"@3|6";i:2548;s:4:"@4|1";i:2549;s:4:"@3|3";i:2550;s:4:"@3|1";i:2551;s:4:"@3|0";i:2552;s:4:"@4|6";i:2553;s:4:"@4|4";i:2554;s:4:"@4|3";i:2555;s:4:"@4|2";i:2556;s:4:"@3|2";i:2557;s:4:"@4|7";i:2558;s:4:"@4|8";i:2559;s:4:"@5|7";i:2560;s:4:"@5|9";i:2561;s:4:"@5|8";i:2562;s:4:"@5|1";i:2563;s:4:"@5|6";i:2564;s:4:"@6|1";i:2565;s:4:"@6|3";i:2566;s:4:"@5|0";i:2567;s:4:"@5|4";i:2568;s:4:"@5|2";i:2569;s:4:"@6|0";i:2570;s:4:"@5|3";i:2571;s:4:"@6|2";i:2572;s:4:"@5|5";i:2573;s:4:"@4|9";i:2574;}',
	'@^Mozilla/5\.0 \(iPhone.*CPU.*OS.* like Mac OS X.*\).*$@'=>2575,
	'@^Mozilla/5\.0 \(.*Windows NT 6\.(\d).*; Trident/7\.0.*$@'=>'a:2:{s:2:"@3";i:2576;s:2:"@1";i:2577;}',
	'@^Mozilla/5\.0 \(.*Windows NT 6\.(\d).*\) Gecko.*/(\d)(\d)\.0.*$@'=>'a:159:{s:6:"@3|4|9";i:2578;s:6:"@1|3|3";i:2579;s:6:"@3|6|3";i:2580;s:6:"@4|5|9";i:2581;s:6:"@0|5|0";i:2582;s:6:"@4|3|9";i:2583;s:6:"@4|4|9";i:2584;s:6:"@1|6|3";i:2585;s:6:"@2|6|3";i:2586;s:6:"@1|5|0";i:2587;s:6:"@1|3|0";i:2588;s:6:"@4|5|3";i:2589;s:6:"@3|3|3";i:2590;s:6:"@0|4|7";i:2591;s:6:"@2|3|3";i:2592;s:6:"@0|3|0";i:2593;s:6:"@2|5|0";i:2594;s:6:"@3|5|0";i:2595;s:6:"@4|5|0";i:2596;s:6:"@3|6|0";i:2597;s:6:"@2|3|2";i:2598;s:6:"@3|5|9";i:2599;s:6:"@2|5|9";i:2600;s:6:"@1|6|0";i:2601;s:6:"@0|3|9";i:2602;s:6:"@1|3|9";i:2603;s:6:"@1|5|9";i:2604;s:6:"@1|6|2";i:2605;s:6:"@3|5|2";i:2606;s:6:"@1|3|4";i:2607;s:6:"@2|3|4";i:2608;s:6:"@2|6|0";i:2609;s:6:"@2|3|9";i:2610;s:6:"@1|4|6";i:2611;s:6:"@3|3|4";i:2612;s:6:"@0|4|6";i:2613;s:6:"@2|4|6";i:2614;s:6:"@3|4|6";i:2615;s:6:"@3|3|9";i:2616;s:6:"@4|4|6";i:2617;s:6:"@4|4|2";i:2618;s:6:"@0|3|4";i:2619;s:6:"@1|4|5";i:2620;s:6:"@3|5|1";i:2621;s:6:"@4|5|1";i:2622;s:6:"@2|4|1";i:2623;s:6:"@0|3|1";i:2624;s:6:"@1|4|1";i:2625;s:6:"@2|5|1";i:2626;s:6:"@0|4|4";i:2627;s:6:"@0|4|1";i:2628;s:6:"@0|5|1";i:2629;s:6:"@1|5|1";i:2630;s:6:"@3|4|1";i:2631;s:6:"@1|3|1";i:2632;s:6:"@2|4|3";i:2633;s:6:"@1|4|3";i:2634;s:6:"@0|4|3";i:2635;s:6:"@4|4|1";i:2636;s:6:"@3|4|3";i:2637;s:6:"@4|4|3";i:2638;s:6:"@2|3|1";i:2639;s:6:"@3|3|1";i:2640;s:6:"@3|5|4";i:2641;s:6:"@4|3|1";i:2642;s:6:"@1|4|4";i:2643;s:6:"@2|4|4";i:2644;s:6:"@3|3|0";i:2645;s:6:"@4|6|0";i:2646;s:6:"@4|3|0";i:2647;s:6:"@4|6|3";i:2648;s:6:"@2|5|4";i:2649;s:6:"@0|4|5";i:2650;s:6:"@4|4|5";i:2651;s:6:"@3|4|5";i:2652;s:6:"@2|4|5";i:2653;s:6:"@1|4|7";i:2654;s:6:"@3|5|3";i:2655;s:6:"@2|5|3";i:2656;s:6:"@2|6|1";i:2657;s:6:"@1|6|1";i:2658;s:6:"@4|4|4";i:2659;s:6:"@3|4|4";i:2660;s:6:"@3|6|1";i:2661;s:6:"@4|6|1";i:2662;s:6:"@1|5|3";i:2663;s:6:"@2|5|2";i:2664;s:6:"@1|5|2";i:2665;s:6:"@0|5|2";i:2666;s:6:"@2|3|0";i:2667;s:6:"@0|3|3";i:2668;s:6:"@0|3|8";i:2669;s:6:"@1|3|8";i:2670;s:6:"@2|3|8";i:2671;s:6:"@3|3|8";i:2672;s:6:"@2|4|7";i:2673;s:6:"@0|3|5";i:2674;s:6:"@4|3|5";i:2675;s:6:"@3|3|5";i:2676;s:6:"@2|3|5";i:2677;s:6:"@1|3|5";i:2678;s:6:"@4|3|8";i:2679;s:6:"@0|4|0";i:2680;s:6:"@1|5|8";i:2681;s:6:"@4|5|4";i:2682;s:6:"@2|5|8";i:2683;s:6:"@4|4|8";i:2684;s:6:"@4|4|0";i:2685;s:6:"@4|5|2";i:2686;s:6:"@1|4|0";i:2687;s:6:"@2|4|0";i:2688;s:6:"@3|4|0";i:2689;s:6:"@1|5|6";i:2690;s:6:"@3|3|2";i:2691;s:6:"@0|3|6";i:2692;s:6:"@1|3|2";i:2693;s:6:"@1|5|7";i:2694;s:6:"@0|3|2";i:2695;s:6:"@1|3|6";i:2696;s:6:"@2|3|6";i:2697;s:6:"@4|3|6";i:2698;s:6:"@1|5|4";i:2699;s:6:"@3|3|6";i:2700;s:6:"@4|5|6";i:2701;s:6:"@3|5|6";i:2702;s:6:"@3|3|7";i:2703;s:6:"@4|3|7";i:2704;s:6:"@2|5|6";i:2705;s:6:"@4|5|7";i:2706;s:6:"@2|3|7";i:2707;s:6:"@1|3|7";i:2708;s:6:"@2|5|7";i:2709;s:6:"@3|5|7";i:2710;s:6:"@0|3|7";i:2711;s:6:"@3|4|8";i:2712;s:6:"@4|3|2";i:2713;s:6:"@3|5|5";i:2714;s:6:"@2|5|5";i:2715;s:6:"@4|5|5";i:2716;s:6:"@1|4|9";i:2717;s:6:"@3|5|8";i:2718;s:6:"@4|5|8";i:2719;s:6:"@4|3|4";i:2720;s:6:"@4|6|2";i:2721;s:6:"@2|4|2";i:2722;s:6:"@1|5|5";i:2723;s:6:"@4|3|3";i:2724;s:6:"@0|4|9";i:2725;s:6:"@0|4|2";i:2726;s:6:"@2|6|2";i:2727;s:6:"@0|4|8";i:2728;s:6:"@2|4|9";i:2729;s:6:"@1|4|8";i:2730;s:6:"@3|6|2";i:2731;s:6:"@3|4|2";i:2732;s:6:"@1|4|2";i:2733;s:6:"@2|4|8";i:2734;s:6:"@3|4|7";i:2735;s:6:"@4|4|7";i:2736;}',
	'@^Mozilla/(\d)\.0 \(.*Linux.*\) Gecko.* Firefox/(\d)(\d)\.0.*$@'=>'a:68:{s:6:"@5|5|0";i:2737;s:6:"@5|6|0";i:2738;s:6:"@4|5|8";i:2739;s:6:"@4|3|2";i:2740;s:6:"@5|3|8";i:2741;s:6:"@4|3|5";i:2742;s:6:"@4|6|3";i:2743;s:6:"@5|4|0";i:2744;s:6:"@4|5|0";i:2745;s:6:"@4|5|6";i:2746;s:6:"@5|4|3";i:2747;s:6:"@5|5|6";i:2749;s:6:"@5|5|3";i:2750;s:6:"@4|3|6";i:2751;s:6:"@5|5|8";i:2752;s:6:"@5|3|5";i:2753;s:6:"@5|4|6";i:2754;s:6:"@4|5|1";i:2755;s:6:"@5|3|0";i:2756;s:6:"@4|5|4";i:2757;s:6:"@5|3|6";i:2758;s:6:"@4|4|3";i:2759;s:6:"@4|4|6";i:2760;s:6:"@5|5|4";i:2761;s:6:"@4|4|1";i:2762;s:6:"@4|4|2";i:2763;s:6:"@4|5|3";i:2764;s:6:"@4|3|0";i:2765;s:6:"@4|3|4";i:2766;s:6:"@4|6|0";i:2767;s:6:"@5|5|9";i:2768;s:6:"@5|3|3";i:2769;s:6:"@4|4|8";i:2770;s:6:"@5|3|7";i:2771;s:6:"@5|4|4";i:2772;s:6:"@4|5|7";i:2773;s:6:"@4|4|7";i:2774;s:6:"@5|4|7";i:2775;s:6:"@5|4|2";i:2776;s:6:"@4|4|9";i:2777;s:6:"@5|4|1";i:2778;s:6:"@4|4|5";i:2779;s:6:"@5|5|2";i:2780;s:6:"@5|4|5";i:2781;s:6:"@5|5|7";i:2782;s:6:"@4|4|0";i:2783;s:6:"@4|5|2";i:2784;s:6:"@5|3|4";i:2785;s:6:"@5|3|9";i:2786;s:6:"@4|3|9";i:2787;s:6:"@5|6|1";i:2788;s:6:"@5|3|1";i:2789;s:6:"@4|5|9";i:2790;s:6:"@5|3|2";i:2791;s:6:"@4|3|3";i:2792;s:6:"@5|6|3";i:2793;s:6:"@5|4|9";i:2794;s:6:"@4|6|1";i:2795;s:6:"@5|5|5";i:2796;s:6:"@4|3|1";i:2797;s:6:"@5|4|8";i:2798;s:6:"@5|6|2";i:2799;s:6:"@4|6|2";i:2800;s:6:"@4|4|4";i:2801;s:6:"@4|5|5";i:2802;s:6:"@4|3|8";i:2803;s:6:"@4|3|7";i:2804;s:6:"@5|5|1";i:2805;}',
	'@^Mozilla/5\.0 \(.*Windows.*Trident/7\.0.*rv\:11\.0.*$@'=>2748,
	'@^Mozilla/5\.0 \(iPad.*CPU.*OS.* like Mac OS X.*\).*$@'=>2806,
	'@^Mozilla/5\.0 \(iPod.*CPU.*OS.* like Mac OS X.*\).*$@'=>2807,
	'@^Mozilla/(\d)\.0 \(.*Mac OS X.*\) Gecko.* Firefox/.*$@'=>'a:2:{s:2:"@4";i:2808;s:2:"@5";i:2809;}',
	'@^Mozilla/5\.0 \(.*Windows.*; Trident/8\.0.*\).*$@'=>2810,
	'@^Mozilla/(\d)\.0 \(.*Linux.*\) Gecko.* Firefox/.*$@'=>'a:2:{s:2:"@4";i:2811;s:2:"@5";i:2812;}',
	'@^Mozilla/5\.0 \(.*CPU.*OS.* like Mac OS X.*\).*$@'=>2813,
	'@^Firefox/(\d)(\d)\.0.*anonymized by Abelssoft.*$@'=>'a:34:{s:4:"@6|2";i:2814;s:4:"@3|4";i:2815;s:4:"@4|7";i:2816;s:4:"@4|9";i:2817;s:4:"@4|2";i:2818;s:4:"@3|2";i:2819;s:4:"@4|0";i:2820;s:4:"@3|3";i:2821;s:4:"@5|7";i:2822;s:4:"@3|7";i:2823;s:4:"@5|6";i:2824;s:4:"@3|5";i:2825;s:4:"@5|2";i:2826;s:4:"@4|8";i:2827;s:4:"@3|8";i:2828;s:4:"@5|5";i:2829;s:4:"@3|1";i:2830;s:4:"@5|3";i:2831;s:4:"@6|0";i:2832;s:4:"@5|9";i:2833;s:4:"@4|6";i:2834;s:4:"@4|4";i:2835;s:4:"@4|3";i:2836;s:4:"@5|1";i:2837;s:4:"@3|6";i:2838;s:4:"@6|3";i:2839;s:4:"@6|1";i:2840;s:4:"@4|5";i:2841;s:4:"@3|9";i:2842;s:4:"@5|8";i:2843;s:4:"@5|0";i:2844;s:4:"@3|0";i:2845;s:4:"@5|4";i:2846;s:4:"@4|1";i:2847;}',
	'@^Mozilla/5\.0 \(.*Mac OS X.*\) Gecko.*/(\d)(\d)\.0.*$@'=>'a:34:{s:4:"@5|4";i:2848;s:4:"@5|9";i:2849;s:4:"@3|3";i:2850;s:4:"@5|3";i:2851;s:4:"@4|0";i:2852;s:4:"@4|1";i:2853;s:4:"@4|5";i:2854;s:4:"@3|9";i:2855;s:4:"@6|3";i:2856;s:4:"@6|2";i:2857;s:4:"@4|7";i:2858;s:4:"@4|6";i:2859;s:4:"@3|2";i:2860;s:4:"@4|4";i:2861;s:4:"@3|0";i:2862;s:4:"@5|0";i:2863;s:4:"@4|9";i:2864;s:4:"@5|5";i:2865;s:4:"@3|7";i:2866;s:4:"@5|7";i:2867;s:4:"@3|6";i:2868;s:4:"@5|6";i:2869;s:4:"@3|5";i:2870;s:4:"@4|8";i:2871;s:4:"@5|8";i:2872;s:4:"@3|8";i:2873;s:4:"@6|1";i:2874;s:4:"@3|4";i:2875;s:4:"@3|1";i:2876;s:4:"@4|3";i:2877;s:4:"@6|0";i:2878;s:4:"@4|2";i:2879;s:4:"@5|2";i:2880;s:4:"@5|1";i:2881;}',
	'@^Mozilla/5\.0 \(.*Windows.*; Trident/7\.0.*$@'=>2882,
	'@^Firefox/.*anonymized by Abelssoft.*$@'=>2883,
	'@^Opera%20Coast/(\d)\.(\d)(\d).* CFNetwork/.*$@'=>'a:14:{s:6:"@4|5|1";i:2884;s:6:"@3|0|2";i:2885;s:6:"@3|0|1";i:2886;s:6:"@4|3|1";i:2887;s:6:"@3|2|1";i:2888;s:6:"@5|0|3";i:2889;s:6:"@5|0|2";i:2890;s:6:"@4|0|2";i:2891;s:6:"@4|2|1";i:2892;s:6:"@4|0|1";i:2893;s:6:"@4|3|0";i:2894;s:6:"@5|0|1";i:2895;s:6:"@4|0|3";i:2896;s:6:"@5|0|4";i:2897;}',
	'@^Opera%20Coast/(\d)\.(\d).* CFNetwork/.*$@'=>'a:6:{s:4:"@3|1";i:2898;s:4:"@4|4";i:2899;s:4:"@3|0";i:2900;s:4:"@4|1";i:2901;s:4:"@4|0";i:2902;s:4:"@4|5";i:2903;}',
	'@^Opera%20Coast/.* CFNetwork/.*$@'=>2905,
	'@^MobileSafari/.* CFNetwork/.*$@'=>2907,
	'@^Safari/10600\..* CFNetwork/.*$@'=>2908,
	'@^Safari/1(\d)6..\..* CFNetwork/.*$@'=>'a:4:{s:2:"@1";i:2909;s:2:"@2";i:2910;s:2:"@3";i:2911;s:2:"@0";i:2912;}',
	'@^Mozilla/(\d)\.0 \(.*MSIE 6\.0.*\).*$@'=>'a:2:{s:2:"@5";i:2914;s:2:"@4";i:2915;}',
	'@^Safari/(\d)5..\..* CFNetwork/.*$@'=>'a:2:{s:2:"@8";i:2916;s:2:"@9";i:2917;}',
	'@^Mozilla/(\d)\.0 \(.*MSIE 7\.0b.*$@'=>'a:2:{s:2:"@4";i:2979;s:2:"@5";i:2980;}',
	'@^Mozilla/(\d)\.0 \(.*MSIE 7\.0.*$@'=>'a:2:{s:2:"@5";i:3024;s:2:"@4";i:3025;}',
	'@^Safari/.* CFNetwork/.*$@'=>3068,
	'@^.*iPhone.*$@'=>3286,
	'@^.*iPod.*$@'=>3291,
	'@^.*iPad.*$@'=>3292,
	'@^.*$@'=>3294
);
lib/wf503.php000064400000023204150755146450006704 0ustar00<?php if (!defined('WORDFENCE_VERSION')) { exit; } ?>
<!DOCTYPE html>
<html>
	<head>
		<title><?php esc_html_e('Your access to this site has been limited', 'wordfence'); ?></title>
		<style>
			html {
				font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
				font-size: 0.875rem;
				line-height: 1.42857143;
				color: #333;
				background-color: #fff;
				padding: 0;
				margin: 0;
			}

			body {
				padding: 0;
				margin: 0;
			}

			a {
				color:#00709e;
			}

			h1, h2, h3, h4, h5, h6 {
				font-weight: 200;
				line-height: 1.1;
			}

			h1, .h1 { font-size: 3rem; }
			h2, .h2 { font-size: 2.5rem; }
			h3, .h3 { font-size: 1.5rem; }
			h4, .h4 { font-size: 1rem; }
			h5, .h5 { font-size: 0.875rem; }
			h6, .h6 { font-size: 0.75rem; }

			h1, h2, h3 {
				margin-top: 20px;
				margin-bottom: 10px;
			}
			h4, h5, h6 {
				margin-top: 10px;
				margin-bottom: 10px;
			}

			.wf-btn {
				display: inline-block;
				margin-bottom: 0;
				font-weight: normal;
				text-align: center;
				vertical-align: middle;
				touch-action: manipulation;
				cursor: pointer;
				background-image: none;
				border: 1px solid transparent;
				white-space: nowrap;
				text-transform: uppercase;
				padding: .4rem 1rem;
				font-size: .875rem;
				line-height: 1.3125rem;
				border-radius: 4px;
				-webkit-user-select: none;
				-moz-user-select: none;
				-ms-user-select: none;
				user-select: none
			}

			@media (min-width: 768px) {
				.wf-btn {
					padding: .5rem 1.25rem;
					font-size: .875rem;
					line-height: 1.3125rem;
					border-radius: 4px
				}
			}

			.wf-btn:focus,
			.wf-btn.wf-focus,
			.wf-btn:active:focus,
			.wf-btn:active.wf-focus,
			.wf-btn.wf-active:focus,
			.wf-btn.wf-active.wf-focus {
				outline: 5px auto -webkit-focus-ring-color;
				outline-offset: -2px
			}

			.wf-btn:hover,
			.wf-btn:focus,
			.wf-btn.wf-focus {
				color: #00709e;
				text-decoration: none
			}

			.wf-btn:active,
			.wf-btn.wf-active {
				outline: 0;
				background-image: none;
				-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
				box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125)
			}

			.wf-btn.wf-disabled,
			.wf-btn[disabled],
			.wf-btn[readonly],
			fieldset[disabled] .wf-btn {
				cursor: not-allowed;
				-webkit-box-shadow: none;
				box-shadow: none
			}

			a.wf-btn {
				text-decoration: none
			}

			a.wf-btn.wf-disabled,
			fieldset[disabled] a.wf-btn {
				cursor: not-allowed;
				pointer-events: none
			}

			.wf-btn-default {
				color: #00709e;
				background-color: #fff;
				border-color: #00709e
			}

			.wf-btn-default:focus,
			.wf-btn-default.focus {
				color: #00709e;
				background-color: #e6e6e6;
				border-color: #00161f
			}

			.wf-btn-default:hover {
				color: #00709e;
				background-color: #e6e6e6;
				border-color: #004561
			}

			.wf-btn-default:active,
			.wf-btn-default.active {
				color: #00709e;
				background-color: #e6e6e6;
				border-color: #004561
			}

			.wf-btn-default:active:hover,
			.wf-btn-default:active:focus,
			.wf-btn-default:active.focus,
			.wf-btn-default.active:hover,
			.wf-btn-default.active:focus,
			.wf-btn-default.active.focus {
				color: #00709e;
				background-color: #d4d4d4;
				border-color: #00161f
			}

			.wf-btn-default:active,
			.wf-btn-default.wf-active {
				background-image: none
			}

			.wf-btn-default.wf-disabled,
			.wf-btn-default[disabled],
			.wf-btn-default[readonly],
			fieldset[disabled] .wf-btn-default {
				color: #777;
				background-color: #fff;
				border-color: #e2e2e2;
				cursor: not-allowed
			}

			.wf-btn-default.wf-disabled:hover,
			.wf-btn-default.wf-disabled:focus,
			.wf-btn-default.wf-disabled.wf-focus,
			.wf-btn-default[disabled]:hover,
			.wf-btn-default[disabled]:focus,
			.wf-btn-default[disabled].wf-focus,
			.wf-btn-default[readonly]:hover,
			.wf-btn-default[readonly]:focus,
			.wf-btn-default[readonly].wf-focus,
			fieldset[disabled] .wf-btn-default:hover,
			fieldset[disabled] .wf-btn-default:focus,
			fieldset[disabled] .wf-btn-default.wf-focus {
				background-color: #fff;
				border-color: #00709e
			}

			input[type="text"], input.wf-input-text {
				text-align: left;
				max-width: 200px;
				height: 30px;
				border-radius: 0;
				border: 0;
				background-color: #ffffff;
				box-shadow: 0px 0px 0px 1px rgba(215,215,215,0.65);
				padding: 0.25rem;
			}

			hr {
				margin-top: 1rem;
				margin-bottom: 1rem;
				border: 0;
				border-top: 4px solid #eee
			}

			p {
				font-size: 1.4rem;
				font-weight: 300;
			}

			p.medium, div.medium p {
				font-size: 1.1rem;
			}

			p.small, div.small p {
				font-size: 1rem;
			}

			.container {
				max-width: 900px;
				padding: 0 1rem;
				margin: 0 auto;
			}

			.top-accent {
				height: 25px;
				background-color: #00709e;
			}

			.block-data {
				width: 100%;
				border-top: 6px solid #00709e;
			}

			.block-data tr:nth-child(odd) th, .block-data tr:nth-child(odd) td {
				background-color: #eeeeee;
			}

			.block-data th, .block-data td {
				text-align: left;
				padding: 1rem;
				font-size: 1.1rem;
			}

			.block-data th.reason, .block-data td.reason {
				color: #930000;
			}

			.block-data th {
				font-weight: 300;
			}

			.block-data td {
				font-weight: 500;
			}

			.about {
				margin-top: 2rem;
				display: flex;
				flex-direction: row;
				align-items: stretch;
			}

			.about .badge {
				flex-basis: 116px;
				flex-grow: 0;
				flex-shrink: 0;
				display: flex;
				align-items: center;
				justify-content: flex-start;
			}

			.about svg {
				width: 100px;
				height: 100px;

			}

			.about-text {
				background-color: #00709e;
				color: #ffffff;
				padding: 1rem;
			}

			.about-text .h4 {
				font-weight: 500;
				margin-top: 0;
				margin-bottom: 0.25rem;
				font-size: 0.875rem;
			}

			.about-text p {
				font-size: 0.875rem;
				font-weight: 200;
				margin-top: 0.3rem;
				margin-bottom: 0.3rem;
			}

			.about-text p:first-of-type {
				margin-top: 0;
			}

			.about-text p:last-of-type {
				margin-bottom: 0;
			}

			.st0{fill:#00709e;}
			.st1{fill:#FFFFFF;}

			.generated {
				color: #999999;
				margin-top: 2rem;
			}

			/* Text meant only for screen readers. */
			.screen-reader-text {
			  border: 0;
			  clip: rect(1px, 1px, 1px, 1px);
			  clip-path: inset(50%);
			  height: 1px;
			  margin: -1px;
			  overflow: hidden;
			  padding: 0;
			  position: absolute;
			  width: 1px;
			  word-wrap: normal !important;
			}
			.screen-reader-text:focus {
			  background-color: #eee;
			  clip: auto !important;
			  clip-path: none;
			  color: #444;
			  display: block;
			  font-size: 1em;
			  height: auto;
			  left: 5px;
			  line-height: normal;
			  padding: 15px 23px 14px;
			  text-decoration: none;
			  top: 5px;
			  width: auto;
			  z-index: 100000; /* Above WP toolbar. */
			}
		</style>
	</head>
	<body>
	<div class="top-accent"></div>
	<div class="container">
		<h1><?php esc_html_e('Your access to this site has been limited by the site owner', 'wordfence'); ?></h1>
		<p><?php esc_html_e('Your access to this service has been limited. (HTTP response code 503)', 'wordfence'); ?></p>
		<p><?php esc_html_e('If you think you have been blocked in error, contact the owner of this site for assistance.', 'wordfence'); ?></p>
		<?php if (!empty($customText)): ?>
			<hr>
			<div class="medium"><?php echo $customText; ?></div>
		<?php endif; ?>
		<hr>
		<?php require(dirname(__FILE__) . '/wfUnlockMsg.php'); ?>

		<h2 class="h3"><?php esc_html_e('Block Technical Data', 'wordfence') ?></h2>
		<table border="0" cellspacing="0" cellpadding="0" class="block-data">
			<tr>
				<th class="reason"><?php esc_html_e('Block Reason', 'wordfence'); ?>:</th>
				<td class="reason"><?php echo htmlspecialchars($reason); ?></td>
			</tr>
			<tr>
				<th class="time"><?php esc_html_e('Time', 'wordfence'); ?>:</th>
				<td class="time"><?php echo htmlspecialchars(gmdate('D, j M Y G:i:s T', wfWAFUtils::normalizedTime())); ?></td>
			</tr>
		</table>

		<div class="about">
			<div class="badge">
				<?php
				$contents = file_get_contents(WORDFENCE_PATH . '/images/wf-error-badge.svg');
				$contents = preg_replace('/^<\?xml.+?\?>\s*/i', '', $contents);
				$contents = preg_replace('/^<!DOCTYPE.+?>\s*/i', '', $contents);
				$contents = preg_replace('/<svg\s+xmlns="[^"]*"/i', '<svg', $contents);
				echo $contents;
				?>
			</div>
			<div class="about-text">
				<h3 class="h4"><?php esc_html_e('About Wordfence', 'wordfence'); ?></h3>
				<p><?php esc_html_e('Wordfence is a security plugin installed on over 5 million WordPress sites. The owner of this site is using Wordfence to manage access to their site.', 'wordfence'); ?></p>
				<p><?php esc_html_e('You can also read the documentation to learn about Wordfence\'s blocking tools, or visit wordfence.com to learn more about Wordfence.', 'wordfence'); ?></p>
			</div>
		</div>

		<p class="documentation small"><?php echo wp_kses(sprintf(/* translators: Support URL. */ __('Click here to learn more: <a href="%s" target="_blank" rel="noopener noreferrer">Documentation<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_LOCKED_OUT)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()), 'span'=>array('class'=>array()))); ?></p>
		<p class="generated small"><em><?php echo wp_kses(sprintf(/* translators: Localized date. */ __('Generated by Wordfence at %s', 'wordfence'), gmdate('D, j M Y G:i:s T', wfWAFUtils::normalizedTime())), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()))); ?>.<br><?php esc_html_e('Your computer\'s time:', 'wordfence'); ?> <script type="application/javascript">document.write(new Date().toUTCString());</script>.</em></p>
	</div>
	</body>
</html>lib/wfScanFile.php000064400000002015150755146450010056 0ustar00<?php

require_once __DIR__ . '/wfFileUtils.php';
require_once __DIR__ . '/wfScanFileProperties.php';

class wfScanFile {

	private $realPath = null;
	private $wordpressPath = null;

	public function __construct($realPath, $wordpressPath) {
		$this->realPath = $realPath;
		$this->wordpressPath = $wordpressPath;
	}

	public function getRealPath() {
		return $this->realPath;
	}

	public function getWordpressPath() {
		return $this->wordpressPath;
	}

	public function getDisplayPath() {
		if (wfFileUtils::matchPaths($this->realPath, $this->wordpressPath)) {
			return '~/' . $this->getWordpressPath();
		}
		return $this->realPath;
	}

	public function createChild($childPath) {
		return new self(
			wfFileUtils::realPath(wfFileUtils::joinPaths($this->realPath, $childPath)),
			wfFileUtils::joinPaths($this->wordpressPath, $childPath)
		);
	}

	public function __toString() {
		return $this->getRealPath();
	}

	public function initializeProperties() {
		return new wfScanFileProperties($this->realPath, $this->wordpressPath);
	}

}lib/wfImportExportController.php000064400000006352150755146450013122 0ustar00<?php

class wfImportExportController {
	/**
	 * Returns the singleton wfImportExportController.
	 *
	 * @return wfImportExportController
	 */
	public static function shared() {
		static $_shared = null;
		if ($_shared === null) {
			$_shared = new wfImportExportController();
		}
		return $_shared;
	}
	
	public function export() {
		$export = array();
		
		//Basic Options
		$keys = wfConfig::getExportableOptionsKeys();
		foreach ($keys as $key) {
			$export[$key] = wfConfig::get($key, '');
		}
		
		//Serialized Options
		$export['scanSched'] = wfConfig::get_ser('scanSched', array());
		
		//Table-based Options
		$export['blocks'] = wfBlock::exportBlocks();
		
		//Make the API call
		try {
			$api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion());
			$res = $api->call('export_options', array(), array('export' => json_encode($export)));
			if ($res['ok'] && $res['token']) {
				return array(
					'ok' => 1,
					'token' => $res['token'],
				);
			}
			else if ($res['err']) {
				return array('err' => __("An error occurred: ", 'wordfence') . $res['err']);
			}
			else {
				throw new Exception(__("Invalid response: ", 'wordfence') . var_export($res, true));
			}
		}
		catch (Exception $e) {
			return array('err' => __("An error occurred: ", 'wordfence') . $e->getMessage());
		}
	}
	
	public function import($token) {
		try {
			$api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion());
			$res = $api->call('import_options', array(), array('token' => $token));
			if ($res['ok'] && $res['export']) {
				$totalSet = 0;
				$import = @json_decode($res['export'], true);
				if (!is_array($import)) {
					return array('err' => __("An error occurred: Invalid options format received.", 'wordfence'));
				}
				
				//Basic Options
				$keys = wfConfig::getExportableOptionsKeys();
				$toSet = array();
				foreach ($keys as $key) {
					if (isset($import[$key])) {
						$toSet[$key] = $import[$key];
					}
				}
				
				if (count($toSet)) {
					$validation = wfConfig::validate($toSet);
					$skipped = array();
					if ($validation !== true) {
						foreach ($validation as $error) {
							$skipped[$error['option']] = $error['error'];
							unset($toSet[$error['option']]);
						}
					}
					
					$totalSet += count($toSet);
					wfConfig::save(wfConfig::clean($toSet));
				}
				
				//Serialized Options
				if (isset($import['scanSched']) && is_array($import['scanSched'])) {
					wfConfig::set_ser('scanSched', $import['scanSched']);
					wfScanner::shared()->scheduleScans();
					$totalSet++;
				}
				
				//Table-based Options
				if (isset($import['blocks']) && is_array($import['blocks'])) {
					wfBlock::importBlocks($import['blocks']);
					$totalSet += count($import['blocks']);
				}
				
				return array(
					'ok' => 1,
					'totalSet' => $totalSet,
				);
			}
			else if ($res['err']) {
				return array('err' => sprintf(/* translators: Error message. */ __("An error occurred: %s", 'wordfence'), $res['err']));
			}
			else {
				throw new Exception(sprintf(/* translators: Error message. */ __("Invalid response: %s", 'wordfence'), var_export($res, true)));
			}
		}
		catch (Exception $e) {
			return array('err' => sprintf(/* translators: Error message. */ __("An error occurred: %s", 'wordfence'), $e->getMessage()));
		}
	}
}
lib/wfLockedOut.php000064400000023347150755146450010276 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
wfUtils::doNotCache();
header('HTTP/1.1 503 Service Temporarily Unavailable');
header('Status: 503 Service Temporarily Unavailable');
?>
<!DOCTYPE html>
<html>
<head>
	<title><?php esc_html_e('You are temporarily locked out', 'wordfence'); ?></title>
	<style>
		html {
			font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
			font-size: 0.875rem;
			line-height: 1.42857143;
			color: #333;
			background-color: #fff;
			padding: 0;
			margin: 0;
		}

		body {
			padding: 0;
			margin: 0;
		}

		a {
			color:#00709e;
		}

		h1, h2, h3, h4, h5, h6 {
			font-weight: 200;
			line-height: 1.1;
		}

		h1, .h1 { font-size: 3rem; }
		h2, .h2 { font-size: 2.5rem; }
		h3, .h3 { font-size: 1.5rem; }
		h4, .h4 { font-size: 1rem; }
		h5, .h5 { font-size: 0.875rem; }
		h6, .h6 { font-size: 0.75rem; }

		h1, h2, h3 {
			margin-top: 20px;
			margin-bottom: 10px;
		}
		h4, h5, h6 {
			margin-top: 10px;
			margin-bottom: 10px;
		}

		.wf-btn {
			display: inline-block;
			margin-bottom: 0;
			font-weight: normal;
			text-align: center;
			vertical-align: middle;
			touch-action: manipulation;
			cursor: pointer;
			background-image: none;
			border: 1px solid transparent;
			white-space: nowrap;
			text-transform: uppercase;
			padding: .4rem 1rem;
			font-size: .875rem;
			line-height: 1.3125rem;
			border-radius: 4px;
			-webkit-user-select: none;
			-moz-user-select: none;
			-ms-user-select: none;
			user-select: none
		}

		@media (min-width: 768px) {
			.wf-btn {
				padding: .5rem 1.25rem;
				font-size: .875rem;
				line-height: 1.3125rem;
				border-radius: 4px
			}
		}

		.wf-btn:focus,
		.wf-btn.wf-focus,
		.wf-btn:active:focus,
		.wf-btn:active.wf-focus,
		.wf-btn.wf-active:focus,
		.wf-btn.wf-active.wf-focus {
			outline: 5px auto -webkit-focus-ring-color;
			outline-offset: -2px
		}

		.wf-btn:hover,
		.wf-btn:focus,
		.wf-btn.wf-focus {
			color: #00709e;
			text-decoration: none
		}

		.wf-btn:active,
		.wf-btn.wf-active {
			outline: 0;
			background-image: none;
			-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
			box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125)
		}

		.wf-btn.wf-disabled,
		.wf-btn[disabled],
		.wf-btn[readonly],
		fieldset[disabled] .wf-btn {
			cursor: not-allowed;
			-webkit-box-shadow: none;
			box-shadow: none
		}

		a.wf-btn {
			text-decoration: none
		}

		a.wf-btn.wf-disabled,
		fieldset[disabled] a.wf-btn {
			cursor: not-allowed;
			pointer-events: none
		}

		.wf-btn-default {
			color: #00709e;
			background-color: #fff;
			border-color: #00709e
		}

		.wf-btn-default:focus,
		.wf-btn-default.focus {
			color: #00709e;
			background-color: #e6e6e6;
			border-color: #00161f
		}

		.wf-btn-default:hover {
			color: #00709e;
			background-color: #e6e6e6;
			border-color: #004561
		}

		.wf-btn-default:active,
		.wf-btn-default.active {
			color: #00709e;
			background-color: #e6e6e6;
			border-color: #004561
		}

		.wf-btn-default:active:hover,
		.wf-btn-default:active:focus,
		.wf-btn-default:active.focus,
		.wf-btn-default.active:hover,
		.wf-btn-default.active:focus,
		.wf-btn-default.active.focus {
			color: #00709e;
			background-color: #d4d4d4;
			border-color: #00161f
		}

		.wf-btn-default:active,
		.wf-btn-default.wf-active {
			background-image: none
		}

		.wf-btn-default.wf-disabled,
		.wf-btn-default[disabled],
		.wf-btn-default[readonly],
		fieldset[disabled] .wf-btn-default {
			color: #777;
			background-color: #fff;
			border-color: #e2e2e2;
			cursor: not-allowed
		}

		.wf-btn-default.wf-disabled:hover,
		.wf-btn-default.wf-disabled:focus,
		.wf-btn-default.wf-disabled.wf-focus,
		.wf-btn-default[disabled]:hover,
		.wf-btn-default[disabled]:focus,
		.wf-btn-default[disabled].wf-focus,
		.wf-btn-default[readonly]:hover,
		.wf-btn-default[readonly]:focus,
		.wf-btn-default[readonly].wf-focus,
		fieldset[disabled] .wf-btn-default:hover,
		fieldset[disabled] .wf-btn-default:focus,
		fieldset[disabled] .wf-btn-default.wf-focus {
			background-color: #fff;
			border-color: #00709e
		}

		input[type="text"], input.wf-input-text {
			text-align: left;
			max-width: 200px;
			height: 30px;
			border-radius: 0;
			border: 0;
			background-color: #ffffff;
			box-shadow: 0px 0px 0px 1px rgba(215,215,215,0.65);
			padding: 0.25rem;
		}

		hr {
			margin-top: 1rem;
			margin-bottom: 1rem;
			border: 0;
			border-top: 4px solid #eee
		}

		p {
			font-size: 1.4rem;
			font-weight: 300;
		}

		p.medium, div.medium p {
			font-size: 1.1rem;
		}

		p.small, div.small p {
			font-size: 1rem;
		}

		.container {
			max-width: 900px;
			padding: 0 1rem;
			margin: 0 auto;
		}

		.top-accent {
			height: 25px;
			background-color: #00709e;
		}

		.block-data {
			width: 100%;
			border-top: 6px solid #00709e;
		}

		.block-data tr:nth-child(odd) th, .block-data tr:nth-child(odd) td {
			background-color: #eeeeee;
		}

		.block-data th, .block-data td {
			text-align: left;
			padding: 1rem;
			font-size: 1.1rem;
		}

		.block-data th.reason, .block-data td.reason {
			color: #930000;
		}

		.block-data th {
			font-weight: 300;
		}

		.block-data td {
			font-weight: 500;
		}

		.about {
			margin-top: 2rem;
			display: flex;
			flex-direction: row;
			align-items: stretch;
		}

		.about .badge {
			flex-basis: 116px;
			flex-grow: 0;
			flex-shrink: 0;
			display: flex;
			align-items: center;
			justify-content: flex-start;
		}

		.about svg {
			width: 100px;
			height: 100px;

		}

		.about-text {
			background-color: #00709e;
			color: #ffffff;
			padding: 1rem;
		}

		.about-text .h4 {
			font-weight: 500;
			margin-top: 0;
			margin-bottom: 0.25rem;
			font-size: 0.875rem;
		}

		.about-text p {
			font-size: 0.875rem;
			font-weight: 200;
			margin-top: 0.3rem;
			margin-bottom: 0.3rem;
		}

		.about-text p:first-of-type {
			margin-top: 0;
		}

		.about-text p:last-of-type {
			margin-bottom: 0;
		}

		.st0{fill:#00709e;}
		.st1{fill:#FFFFFF;}

		.generated {
			color: #999999;
			margin-top: 2rem;
		}

		/* Text meant only for screen readers. */
		.screen-reader-text {
		  border: 0;
		  clip: rect(1px, 1px, 1px, 1px);
		  clip-path: inset(50%);
		  height: 1px;
		  margin: -1px;
		  overflow: hidden;
		  padding: 0;
		  position: absolute;
		  width: 1px;
		  word-wrap: normal !important;
		}
		.screen-reader-text:focus {
		  background-color: #eee;
		  clip: auto !important;
		  clip-path: none;
		  color: #444;
		  display: block;
		  font-size: 1em;
		  height: auto;
		  left: 5px;
		  line-height: normal;
		  padding: 15px 23px 14px;
		  text-decoration: none;
		  top: 5px;
		  width: auto;
		  z-index: 100000; /* Above WP toolbar. */
		}
	</style>
</head>
<body>
<div class="top-accent"></div>
<div class="container">
	<h1><?php esc_html_e('Your access to this site has been temporarily limited by the site owner', 'wordfence'); ?></h1>
	<p><?php esc_html_e('Your access to this service has been temporarily limited. Please try again in a few minutes. (HTTP response code 503)', 'wordfence'); ?></p>
	<p><?php esc_html_e('If you think you have been blocked in error, contact the owner of this site for assistance.', 'wordfence'); ?></p>
	<?php if (!empty($customText)): ?>
		<hr>
		<div class="medium"><?php echo $customText; ?></div>
	<?php endif; ?>
	<hr>
	<ul>
		<li><a href="<?php echo esc_url(site_url()); ?>"><?php esc_html_e('Return to the site home page', 'wordfence'); ?></a></li>
		<li><a href="<?php echo esc_url(admin_url()); ?>"><?php esc_html_e('Attempt to return to the admin login page (you may still be locked out)', 'wordfence'); ?></a></li>
	</ul>
	<?php require(dirname(__FILE__) . '/wfUnlockMsg.php'); ?>

	<h2 class="h3"><?php esc_html_e('Block Technical Data', 'wordfence'); ?></h2>
	<table border="0" cellspacing="0" cellpadding="0" class="block-data">
		<tr>
			<th class="reason"><?php esc_html_e('Block Reason:', 'wordfence'); ?></th>
			<td class="reason"><?php esc_html_e('You have been temporarily locked out of this system. This means that you will not be able to log in for a while.', 'wordfence'); ?></td>
		</tr>
		<tr>
			<th class="time"><?php esc_html_e('Time:', 'wordfence'); ?></th>
			<td class="time"><?php echo htmlspecialchars(gmdate('D, j M Y G:i:s T', wfWAFUtils::normalizedTime())); ?></td>
		</tr>
	</table>

	<div class="about">
		<div class="badge">
			<?php
			$contents = file_get_contents(WORDFENCE_PATH . '/images/wf-error-badge.svg');
			$contents = preg_replace('/^<\?xml.+?\?>\s*/i', '', $contents);
			$contents = preg_replace('/^<!DOCTYPE.+?>\s*/i', '', $contents);
			$contents = preg_replace('/<svg\s+xmlns="[^"]*"/i', '<svg', $contents);
			echo $contents;
			?>
		</div>
		<div class="about-text">
			<h3 class="h4"><?php esc_html_e('About Wordfence', 'wordfence'); ?></h3>
			<p><?php esc_html_e('Wordfence is a security plugin installed on over 5 million WordPress sites. The owner of this site is using Wordfence to manage access to their site.', 'wordfence'); ?></p>
			<p><?php esc_html_e('You can also read the documentation to learn about Wordfence\'s blocking tools, or visit wordfence.com to learn more about Wordfence.', 'wordfence'); ?></p>
		</div>
	</div>

	<p class="documentation small"><?php echo wp_kses(sprintf(__('Click here to learn more: <a href="%s" target="_blank" rel="noopener noreferrer">Documentation<span class="screen-reader-text"> (opens in new tab)</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_LOCKED_OUT)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()), 'span'=>array('class'=>array()))); ?></p>
	<p class="generated small"><em><?php esc_html(printf(__('Generated by Wordfence at %s', 'wordfence'), gmdate('D, j M Y G:i:s T', wfWAFUtils::normalizedTime()))); ?>.<br><?php esc_html_e('Your computer\'s time:', 'wordfence'); ?> <script type="application/javascript">document.write(new Date().toUTCString());</script>.</em></p>
</div>
</body>
</html>
<?php exit(); ?>lib/live_activity.php000064400000001104150755146450010706 0ustar00<?php if (!defined('WORDFENCE_VERSION')) { exit; } ?>
<div class="wf-live-activity" data-mode="auto">
	<div class="wf-live-activity-inner">
		<div class="wf-live-activity-content">
			<div class="wf-live-activity-title"><?php esc_html_e('Wordfence Live Activity:', 'wordfence') ?></div>
			<div class="wf-live-activity-message"></div>
		</div>
		<?php if (wfConfig::get('liveActivityPauseEnabled')): ?>
		<div class="wf-live-activity-state"><p><?php esc_html_e('Live Updates Paused &mdash; Click inside window to resume', 'wordfence') ?></p></div>
		<?php endif; ?>
	</div>
</div>lib/wfSchema.php000064400000024770150755146450007606 0ustar00<?php
require_once(dirname(__FILE__) . '/wfDB.php');
class wfSchema {
	const TABLE_CASE_OPTION = 'wordfence_case'; //false is camel case, true is lower
	
	private static $_usingLowercase = null;
	private static $deprecatedTables = array(
		'wfBlocks',
		'wfBlocksAdv',
		'wfLockedOut',
		'wfThrottleLog',
		'wfNet404s',
		'wfBlockedCommentLog',
		'wfVulnScanners',
		'wfBadLeechers',
		'wfLeechers',
		'wfScanners',
	);
	
	private static $tables = array(
"wfSecurityEvents" => "(
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `type` varchar(255) NOT NULL DEFAULT '',
  `data` text NOT NULL,
  `event_time` double(14,4) NOT NULL,
  `state` enum('new','sending','sent') NOT NULL DEFAULT 'new',
  `state_timestamp` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8",
"wfBlocks7" => "(
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `type` int(10) unsigned NOT NULL DEFAULT '0',
  `IP` binary(16) NOT NULL DEFAULT '\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0',
  `blockedTime` bigint(20) NOT NULL,
  `reason` varchar(255) NOT NULL,
  `lastAttempt` int(10) unsigned DEFAULT '0',
  `blockedHits` int(10) unsigned DEFAULT '0',
  `expiration` bigint(20) unsigned NOT NULL DEFAULT '0',
  `parameters` text,
  PRIMARY KEY (`id`),
  KEY `type` (`type`),
  KEY `IP` (`IP`),
  KEY `expiration` (`expiration`)
) DEFAULT CHARSET=utf8",
"wfConfig" => "(
  `name` varchar(100) NOT NULL,
  `val` longblob,
  `autoload` enum('no','yes') NOT NULL DEFAULT 'yes',
  PRIMARY KEY (`name`)
) DEFAULT CHARSET=utf8",
"wfCrawlers" => "(
  `IP` binary(16) NOT NULL DEFAULT '\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0',
  `patternSig` binary(16) NOT NULL,
  `status` char(8) NOT NULL,
  `lastUpdate` int(10) unsigned NOT NULL,
  `PTR` varchar(255) DEFAULT '',
  PRIMARY KEY (`IP`,`patternSig`)
) DEFAULT CHARSET=utf8",
"wfFileChanges" => "(
  `filenameHash` char(64) NOT NULL,
  `file` varchar(1000) NOT NULL,
  `md5` char(32) NOT NULL,
  PRIMARY KEY (`filenameHash`)
) CHARSET=utf8",
"wfHits" => "(
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `attackLogTime` double(17,6) unsigned NOT NULL,
  `ctime` double(17,6) unsigned NOT NULL,
  `IP` binary(16) DEFAULT NULL,
  `jsRun` tinyint(4) DEFAULT '0',
  `statusCode` int(11) NOT NULL DEFAULT '200',
  `isGoogle` tinyint(4) NOT NULL,
  `userID` int(10) unsigned NOT NULL,
  `newVisit` tinyint(3) unsigned NOT NULL,
  `URL` text,
  `referer` text,
  `UA` text,
  `action` varchar(64) NOT NULL DEFAULT '',
  `actionDescription` text,
  `actionData` text,
  PRIMARY KEY (`id`),
  KEY `k1` (`ctime`),
  KEY `k2` (`IP`,`ctime`),
  KEY `attackLogTime` (`attackLogTime`)
) DEFAULT CHARSET=utf8",
"wfIssues" => "(
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `time` int(10) unsigned NOT NULL,
  `lastUpdated` int(10) unsigned NOT NULL,
  `status` varchar(10) NOT NULL,
  `type` varchar(20) NOT NULL,
  `severity` tinyint(3) unsigned NOT NULL,
  `ignoreP` char(32) NOT NULL,
  `ignoreC` char(32) NOT NULL,
  `shortMsg` varchar(255) NOT NULL,
  `longMsg` text,
  `data` text,
  PRIMARY KEY (`id`),
  KEY `lastUpdated` (`lastUpdated`),
  KEY `status` (`status`),
  KEY `ignoreP` (`ignoreP`),
  KEY `ignoreC` (`ignoreC`)
) DEFAULT CHARSET=utf8",
"wfPendingIssues" => "(
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `time` int(10) unsigned NOT NULL,
  `lastUpdated` int(10) unsigned NOT NULL,
  `status` varchar(10) NOT NULL,
  `type` varchar(20) NOT NULL,
  `severity` tinyint(3) unsigned NOT NULL,
  `ignoreP` char(32) NOT NULL,
  `ignoreC` char(32) NOT NULL,
  `shortMsg` varchar(255) NOT NULL,
  `longMsg` text,
  `data` text,
  PRIMARY KEY (`id`),
  KEY `lastUpdated` (`lastUpdated`),
  KEY `status` (`status`),
  KEY `ignoreP` (`ignoreP`),
  KEY `ignoreC` (`ignoreC`)
) DEFAULT CHARSET=utf8",
"wfTrafficRates" => "(
  `eMin` int(10) unsigned NOT NULL,
  `IP` binary(16) NOT NULL DEFAULT '\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0',
  `hitType` enum('hit','404') NOT NULL DEFAULT 'hit',
  `hits` int(10) unsigned NOT NULL,
  PRIMARY KEY (`eMin`,`IP`,`hitType`)
) DEFAULT CHARSET=utf8",
"wfLocs" => "(
  `IP` binary(16) NOT NULL DEFAULT '\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0',
  `ctime` int(10) unsigned NOT NULL,
  `failed` tinyint(3) unsigned NOT NULL,
  `city` varchar(255) DEFAULT '',
  `region` varchar(255) DEFAULT '',
  `countryName` varchar(255) DEFAULT '',
  `countryCode` char(2) DEFAULT '',
  `lat` float(10,7) DEFAULT '0.0000000',
  `lon` float(10,7) DEFAULT '0.0000000',
  PRIMARY KEY (`IP`)
) DEFAULT CHARSET=utf8",
"wfLogins" => "(
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `hitID` int(11) DEFAULT NULL,
  `ctime` double(17,6) unsigned NOT NULL,
  `fail` tinyint(3) unsigned NOT NULL,
  `action` varchar(40) NOT NULL,
  `username` varchar(255) NOT NULL,
  `userID` int(10) unsigned NOT NULL,
  `IP` binary(16) DEFAULT NULL,
  `UA` text,
  PRIMARY KEY (`id`),
  KEY `k1` (`IP`,`fail`),
  KEY `hitID` (`hitID`)
) DEFAULT CHARSET=utf8",
"wfReverseCache" => "(
  `IP` binary(16) NOT NULL DEFAULT '\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0',
  `host` varchar(255) NOT NULL,
  `lastUpdate` int(10) unsigned NOT NULL,
  PRIMARY KEY (`IP`)
) DEFAULT CHARSET=utf8",
"wfStatus" => "(
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `ctime` double(17,6) unsigned NOT NULL,
  `level` tinyint(3) unsigned NOT NULL,
  `type` char(5) NOT NULL,
  `msg` varchar(1000) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `k1` (`ctime`),
  KEY `k2` (`type`)
) DEFAULT CHARSET=utf8",
'wfHoover' => "(
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `owner` text,
  `host` text,
  `path` text,
  `hostKey` varbinary(124) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `k2` (`hostKey`)
) DEFAULT CHARSET=utf8",
'wfFileMods' => "(
  `filenameMD5` binary(16) NOT NULL,
  `filename` varchar(1000) NOT NULL,
  `knownFile` tinyint(3) unsigned NOT NULL,
  `oldMD5` binary(16) NOT NULL DEFAULT '',
  `newMD5` binary(16) NOT NULL,
  `SHAC` binary(32) NOT NULL DEFAULT '\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0',
  `stoppedOnSignature` varchar(255) NOT NULL DEFAULT '',
  `stoppedOnPosition` int(10) unsigned NOT NULL DEFAULT '0',
  `isSafeFile` varchar(1) NOT NULL DEFAULT '?',
  PRIMARY KEY (`filenameMD5`)
) DEFAULT CHARSET=utf8",
'wfBlockedIPLog' => "(
  `IP` binary(16) NOT NULL DEFAULT '\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0',
  `countryCode` varchar(2) NOT NULL,
  `blockCount` int(10) unsigned NOT NULL DEFAULT '0',
  `unixday` int(10) unsigned NOT NULL,
  `blockType` varchar(50) NOT NULL DEFAULT 'generic',
  PRIMARY KEY (`IP`,`unixday`,`blockType`)
) DEFAULT CHARSET=utf8",
'wfSNIPCache' => "(
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `IP` varchar(45) NOT NULL DEFAULT '',
  `expiration` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `body` varchar(255) NOT NULL DEFAULT '',
  `count` int(10) unsigned NOT NULL DEFAULT '0',
  `type` int(10) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `expiration` (`expiration`),
  KEY `IP` (`IP`),
  KEY `type` (`type`)
) DEFAULT CHARSET=utf8",
'wfKnownFileList' => "(
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `path` text NOT NULL,
  PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8",
'wfNotifications' => "(
  `id` varchar(32) NOT NULL DEFAULT '',
  `new` tinyint(3) unsigned NOT NULL DEFAULT '1',
  `category` varchar(255) NOT NULL,
  `priority` int(11) NOT NULL DEFAULT '1000',
  `ctime` int(10) unsigned NOT NULL,
  `html` text NOT NULL,
  `links` text NOT NULL,
  PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8;",
'wfLiveTrafficHuman' => "(
  `IP` binary(16) NOT NULL DEFAULT '\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0',
  `identifier` binary(32) NOT NULL DEFAULT '\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0',
  `expiration` int(10) unsigned NOT NULL,
  PRIMARY KEY (`IP`,`identifier`),
  KEY `expiration` (`expiration`)
) DEFAULT CHARSET=utf8;",
'wfWafFailures' => "(
  `id` INT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  `throwable` TEXT NOT NULL,
  `rule_id` INT(10) UNSIGNED,
  `timestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
) DEFAULT CHARSET=utf8"
);
	private $db = false;
	public function __construct($dbhost = false, $dbuser = false, $dbpassword = false, $dbname = false){
		$this->db = new wfDB();
	}
	public function dropAll(){
		foreach(self::$tables as $table => $def) {
			$originalTable = wfDB::networkPrefix() . $table;
			$convertedTable = wfDB::networkPrefix() . strtolower($table);
			
			$this->db->queryWrite("DROP TABLE IF EXISTS {$convertedTable}");
			$this->db->queryWrite("DROP TABLE IF EXISTS {$originalTable}");
		}
		
		foreach (self::$deprecatedTables as $table) {
			$originalTable = wfDB::networkTable($table, false);
			$convertedTable = wfDB::networkTable($table);
			
			$this->db->queryWrite("DROP TABLE IF EXISTS {$convertedTable}");
			if ($originalTable !== $convertedTable) {
				$this->db->queryWrite("DROP TABLE IF EXISTS {$originalTable}");
			}
		}
	}
	public function createAll() {
		foreach(self::$tables as $table => $def){
			$this->db->queryWrite("CREATE TABLE IF NOT EXISTS " . wfDB::networkTable($table) . " " . $def);
		}
	}
	public function create($table) {
		$this->db->queryWrite("CREATE TABLE IF NOT EXISTS " . wfDB::networkTable($table) . " " . self::$tables[$table]);
	}
	public function drop($table) {
		$originalTable = wfDB::networkTable($table, false);
		$convertedTable = wfDB::networkTable($table);
		
		$this->db->queryWrite("DROP TABLE IF EXISTS {$convertedTable}");
		if ($originalTable !== $convertedTable) {
			$this->db->queryWrite("DROP TABLE IF EXISTS {$originalTable}");
		}
	}
	
	public static function tableList() {
		return array_keys(self::$tables);
	}
	
	public static function updateTableCase() {
		global $wpdb;
		$hasCamelCaseTable = !!$wpdb->get_var($wpdb->prepare('SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME=%s', wfDB::networkTable('wfConfig', false)));
		if (is_multisite() && function_exists('update_network_option')) {
			update_network_option(null, self::TABLE_CASE_OPTION, !$hasCamelCaseTable);
			self::$_usingLowercase = !$hasCamelCaseTable;
		}
		else {
			update_option(self::TABLE_CASE_OPTION, !$hasCamelCaseTable);
			self::$_usingLowercase = !$hasCamelCaseTable;
		}
	}
	
	public static function usingLowercase() {
		if (self::$_usingLowercase === null) {
			if (is_multisite() && function_exists('update_network_option')) {
				self::$_usingLowercase = !!get_network_option(null, self::TABLE_CASE_OPTION);
			}
			else {
				self::$_usingLowercase = !!get_option(self::TABLE_CASE_OPTION);
			}
		}
		return self::$_usingLowercase;
	}
}lib/wfCredentialsController.php000064400000012244150755146450012700 0ustar00<?php

class wfCredentialsController {
	const UNCACHED = 'uncached';
	const NOT_LEAKED = 'not-leaked';
	const LEAKED = 'leaked';
	
	const ALLOW_LEGACY_2FA_OPTION = 'allowLegacy2FA';
	const DISABLE_LEGACY_2FA_OPTION = 'disableLegacy2FA';
	
	public static function allowLegacy2FA() {
		return wfConfig::get(self::ALLOW_LEGACY_2FA_OPTION, false);
	}
	
	public static function useLegacy2FA() {
		if (!self::allowLegacy2FA()) {
			return false;
		}
		return !wfConfig::get(self::DISABLE_LEGACY_2FA_OPTION, false);
	}
	
	public static function hasOld2FARecords() {
		$twoFactorUsers = wfConfig::get_ser('twoFactorUsers', array());
		if (is_array($twoFactorUsers) && !empty($twoFactorUsers)) {
			foreach ($twoFactorUsers as &$t) {
				if ($t[3] == 'activated') {
					$user = new WP_User($t[0]);
					if ($user instanceof WP_User && $user->exists()) {
						return true;
					}
				}
			}
		}
		return false;
	}
	
	public static function hasNew2FARecords() {
		if (version_compare(phpversion(), '5.3', '>=') && class_exists('\WordfenceLS\Controller_DB')) {
			global $wpdb;
			$table = WFLSPHP52Compatability::secrets_table();
			return !!intval($wpdb->get_var("SELECT COUNT(*) FROM `{$table}`"));
		}
		return false;
	}
	
	/**
	 * Queries the API and returns whether or not the password exists in the breach database.
	 * 
	 * @param string $login
	 * @param string $password
	 * @return bool
	 */
	public static function isLeakedPassword($login, $password) {
		$sha1 = strtoupper(hash('sha1', $password));
		$prefix = substr($sha1, 0, 5);
		
		$ssl_verify = (bool) wfConfig::get('ssl_verify');
		$args = array(
			'timeout'    => 5,
			'user-agent' => "Wordfence.com UA " . (defined('WORDFENCE_VERSION') ? WORDFENCE_VERSION : '[Unknown version]'),
			'sslverify'  => $ssl_verify,
			'headers'	 => array('Referer' => false),
		);
		
		if (!$ssl_verify) { // Some versions of cURL will complain that SSL verification is disabled but the CA bundle was supplied.
			$args['sslcertificates'] = false;
		}
		
		$response = wp_remote_get(sprintf(WORDFENCE_BREACH_URL_BASE_SEC . "%s.txt", $prefix), $args);
		
		if (!is_wp_error($response)) {
			$data = wp_remote_retrieve_body($response);
			$lines = explode("\n", $data);
			foreach ($lines as $l) {
				$components = explode(":", $l);
				$teshSHA1 = $prefix . strtoupper($components[0]);
				if (hash_equals($sha1, $teshSHA1)) {
					return true;
				}
			}
		}
		
		return false;
	}
	
	/**
	 * Returns the transient key for the given user.
	 * 
	 * @param WP_User $user
	 * @return string
	 */
	protected static function _cachedCredentialStatusKey($user) {
		$key = 'wfcredentialstatus_' . $user->ID;
		return $key;
	}
	
	/**
	 * Returns the cached credential status for the given user: self::UNCACHED, self::NOT_LEAKED, or self::LEAKED.
	 * 
	 * @param WP_User $user
	 * @return string
	 */
	public static function cachedCredentialStatus($user) {
		$key = self::_cachedCredentialStatusKey($user);
		$value = get_transient($key);
		if ($value === false) {
			return self::UNCACHED;
		}
		
		$status = substr($value, 0, 1);
		if (strlen($value) > 1) {
			if (!hash_equals(substr($value, 1), hash('sha256', $user->user_pass))) { //Different hash but our clear function wasn't called so treat it as uncached
				return self::UNCACHED;
			}
		}
		
		if ($status) {
			return self::LEAKED;
		}
		return self::NOT_LEAKED;
	}
	
	/**
	 * Stores a cached leak value for the given user.
	 * 
	 * @param WP_User $user
	 * @param bool $isLeaked
	 */
	public static function setCachedCredentialStatus($user, $isLeaked) {
		$key = self::_cachedCredentialStatusKey($user);
		set_transient($key, ($isLeaked ? '1' : '0') . hash('sha256', $user->user_pass), 3600);
	}
	
	/**
	 * Clears the cache for the given user.
	 * 
	 * @param WP_User $user
	 */
	public static function clearCachedCredentialStatus($user) {
		$key = self::_cachedCredentialStatusKey($user);
		delete_transient($key);
	}
	
	/**
	 * Returns whether or not we've seen a successful login from $ip for the given user.
	 * 
	 * @param WP_User $user
	 * @param string $ip
	 * @return bool
	 */
	public static function hasPreviousLoginFromIP($user, $ip) {
		global $wpdb;
		$table_wfLogins = wfDB::networkTable('wfLogins');
		
		$id = property_exists($user, 'ID') ? $user->ID : 0;
		if ($id == 0) {
			return false;
		}
		
		$ipHex = wfDB::binaryValueToSQLHex(wfUtils::inet_pton($ip));
		$result = $wpdb->get_row($wpdb->prepare("SELECT id FROM {$table_wfLogins} WHERE action = 'loginOK' AND userID = %d AND IP = {$ipHex} LIMIT 0,1", $id), ARRAY_A);
		if (is_array($result)) {
			return true;
		}
		
		$lastAdminLogin = wfConfig::get_ser('lastAdminLogin');
		if (is_array($lastAdminLogin) && isset($lastAdminLogin['userID']) && isset($lastAdminLogin['IP'])) {
			if ($lastAdminLogin['userID'] == $id && wfUtils::inet_pton($lastAdminLogin['IP']) == wfUtils::inet_pton($ip)) {
				return true;
			}
			return false;
		}
		
		//Final check -- if the IP recorded at plugin activation matches, let it through. This is __only__ checked when we don't have any other record of an admin login.
		$activatingIP = wfConfig::get('activatingIP');
		if (wfUtils::isValidIP($activatingIP)) {
			if (wfUtils::inet_pton($activatingIP) == wfUtils::inet_pton($ip)) {
				return true;
			}
		}
		
		return false;
	}
}lib/wfScanEngine.php000064400000412003150755146450010406 0ustar00<?php
require_once(__DIR__ . '/wordfenceClass.php');
require_once(__DIR__ . '/wordfenceHash.php');
require_once(__DIR__ . '/wfAPI.php');
require_once(__DIR__ . '/wordfenceScanner.php');
require_once(__DIR__ . '/wfIssues.php');
require_once(__DIR__ . '/wfDB.php');
require_once(__DIR__ . '/wfUtils.php');
require_once(__DIR__ . '/wfFileUtils.php');
require_once(__DIR__ . '/wfScanPath.php');
require_once(__DIR__ . '/wfScanFile.php');
require_once(__DIR__ . '/wfScanFileListItem.php');
require_once(__DIR__ . '/wfScanEntrypoint.php');
require_once(__DIR__ . '/wfCurlInterceptor.php');

class wfScanEngine {
	const SCAN_MANUALLY_KILLED = -999;
	const SCAN_CHECK_INTERVAL = 10; //Seconds
	
	private static $scanIsRunning = false; //Indicates that the scan is running in this specific process

	public $api = false;
	private $dictWords = array();
	private $forkRequested = false;
	private $lastCheck = 0;

	//Beginning of serialized properties on sleep
	/** @var wordfenceHash */
	private $hasher = false;
	private $jobList = array();
	private $i = false;
	private $wp_version = false;
	private $apiKey = false;
	private $startTime = 0;
	public $maxExecTime = false; //If more than $maxExecTime has elapsed since last check, fork a new scan process and continue
	private $publicScanEnabled = false;
	private $fileContentsResults = false;
	/**
	 * @var bool|wordfenceScanner
	 */
	private $scanner = false;
	private $scanQueue = array();
	/**
	 * @var bool|wordfenceURLHoover
	 */
	private $hoover = false;
	private $scanData = array();
	private $statusIDX = array(
		'core'    => false,
		'plugin'  => false,
		'theme'   => false,
		'unknown' => false
	);
	private $userPasswdQueue = "";
	private $passwdHasIssues = wfIssues::STATUS_SECURE;
	private $suspectedFiles = false; //Files found with the ".suspected" extension
	private $gsbMultisiteBlogOffset = 0;
	private $updateCheck = false;
	private $pluginRepoStatus = array();
	private $malwarePrefixesHash;
	private $coreHashesHash;
	private $scanMode = wfScanner::SCAN_TYPE_STANDARD;
	private $pluginsCounted = false;
	private $themesCounted = false;
	private $cycleStartTime;

	/**
	 * @var wfScanner
	 */
	private $scanController; //Not serialized

	/**
	 * @var wordfenceDBScanner
	 */
	private $dbScanner;

	/**
	 * @var wfScanKnownFilesLoader
	 */
	private $knownFilesLoader;

	private $metrics = array();

	private $checkHowGetIPsRequestTime = 0;
	
	/**
	 * Returns whether or not the Wordfence scan is running. When $inThisProcessOnly is true, it returns true only
	 * if the scan is running in this process. Otherwise it returns true if the scan is running at all.
	 * 
	 * @param bool $inThisProcessOnly
	 * @return bool
	 */
	public static function isScanRunning($inThisProcessOnly = true) {
		if ($inThisProcessOnly) {
			return self::$scanIsRunning;
		}
		
		return wfScanner::shared()->isRunning();
	}

	public static function testForFullPathDisclosure($url = null, $filePath = null) {
		if ($url === null && $filePath === null) {
			$url = includes_url('rss-functions.php');
			$filePath = ABSPATH . WPINC . '/rss-functions.php';
		}

		$response = wp_remote_get($url);
		$html = wp_remote_retrieve_body($response);
		return preg_match("/" . preg_quote(realpath($filePath), "/") . "/i", $html);
	}

	public static function isDirectoryListingEnabled($url = null) {
		if ($url === null) {
			$uploadPaths = wp_upload_dir();
			$url = $uploadPaths['baseurl'];
		}

		$response = wp_remote_get($url);
		return !is_wp_error($response) && ($responseBody = wp_remote_retrieve_body($response)) &&
			stripos($responseBody, '<title>Index of') !== false;
	}

	public static function refreshScanNotification($issuesInstance = null) {
		if ($issuesInstance === null) {
			$issuesInstance = new wfIssues();
		}

		$message = wfConfig::get('lastScanCompleted', false);
		if ($message === false || empty($message)) {
			$n = wfNotification::getNotificationForCategory('wfplugin_scan');
			if ($n !== null) {
				$n->markAsRead();
			}
		} else if ($message == 'ok') {
			$issueCount = $issuesInstance->getIssueCount();
			if ($issueCount) {
				new wfNotification(null, wfNotification::PRIORITY_HIGH_WARNING, "<a href=\"" . wfUtils::wpAdminURL('admin.php?page=WordfenceScan') . "\">" .
					/* translators: Number of scan results. */
					sprintf(_n('%d issue found in most recent scan', '%d issues found in most recent scan', $issueCount, 'wordfence'), $issueCount)
					. '</a>', 'wfplugin_scan');
			} else {
				$n = wfNotification::getNotificationForCategory('wfplugin_scan');
				if ($n !== null) {
					$n->markAsRead();
				}
			}
		} else {
			$failureType = wfConfig::get('lastScanFailureType');
			if ($failureType == 'duration') {
				new wfNotification(null, wfNotification::PRIORITY_HIGH_WARNING, '<a href="' . wfUtils::wpAdminURL('admin.php?page=WordfenceScan') . '">Scan aborted due to duration limit</a>', 'wfplugin_scan');
			} else if ($failureType == 'versionchange') {
				//No need to create a notification
			} else {
				$trimmedError = substr($message, 0, 100) . (strlen($message) > 100 ? '...' : '');
				new wfNotification(null, wfNotification::PRIORITY_HIGH_WARNING, '<a href="' . wfUtils::wpAdminURL('admin.php?page=WordfenceScan') . '">Scan failed: ' . esc_html($trimmedError) . '</a>', 'wfplugin_scan');
			}
		}
	}

	public function __sleep() { //Same order here as above for properties that are included in serialization
		return array('hasher', 'jobList', 'i', 'wp_version', 'apiKey', 'startTime', 'maxExecTime', 'publicScanEnabled', 'fileContentsResults', 'scanner', 'scanQueue', 'hoover', 'scanData', 'statusIDX', 'userPasswdQueue', 'passwdHasIssues', 'suspectedFiles', 'dbScanner', 'knownFilesLoader', 'metrics', 'checkHowGetIPsRequestTime', 'gsbMultisiteBlogOffset', 'updateCheck', 'pluginRepoStatus', 'malwarePrefixesHash', 'coreHashesHash', 'scanMode', 'pluginsCounted', 'themesCounted');
	}

	public function __construct($malwarePrefixesHash = '', $coreHashesHash = '', $scanMode = wfScanner::SCAN_TYPE_STANDARD) {
		$this->startTime = time();
		$this->recordMetric('scan', 'start', $this->startTime);
		$this->maxExecTime = self::getMaxExecutionTime();
		$this->i = new wfIssues();
		$this->cycleStartTime = time();
		$this->wp_version = wfUtils::getWPVersion();
		$this->apiKey = wfConfig::get('apiKey');
		$this->api = new wfAPI($this->apiKey, $this->wp_version);
		$this->malwarePrefixesHash = $malwarePrefixesHash;
		$this->coreHashesHash = $coreHashesHash;
		include(dirname(__FILE__) . '/wfDict.php'); //$dictWords
		$this->dictWords = $dictWords;
		$this->scanMode = $scanMode;

		$this->scanController = new wfScanner($scanMode);
		$jobs = $this->scanController->jobs();
		foreach ($jobs as $job) {
			if (method_exists($this, 'scan_' . $job . '_init')) {
				foreach (array('init', 'main', 'finish') as $op) {
					$this->jobList[] = $job . '_' . $op;
				}
			} else if (method_exists($this, 'scan_' . $job)) {
				$this->jobList[] = $job;
			}
		}
	}

	public function scanController() {
		return $this->scanController;
	}

	/**
	 * Deletes all new issues. To only delete specific types, provide an array of issue types.
	 *
	 * @param null|array $types
	 */
	public function deleteNewIssues($types = null) {
		$this->i->deleteNew($types);
	}

	public function __wakeup() {
		$this->cycleStartTime = time();
		$this->api = new wfAPI($this->apiKey, $this->wp_version);
		include(dirname(__FILE__) . '/wfDict.php'); //$dictWords
		$this->dictWords = $dictWords;
		$this->scanController = new wfScanner($this->scanMode);
	}

	public function isFullScan() {
		return $this->scanMode != wfScanner::SCAN_TYPE_QUICK;
	}

	public function go() {
		self::$scanIsRunning = true;
		try {
			self::checkForKill();
			$this->doScan();
			wfConfig::set('lastScanCompleted', 'ok');
			wfConfig::set('lastScanFailureType', false);
			self::checkForKill();
			//updating this scan ID will trigger the scan page to load/reload the results.
			$this->scanController->recordLastScanTime();
			//scan ID only incremented at end of scan to make UI load new results
			$this->emailNewIssues();
			if ($this->isFullScan()) {
				$this->recordMetric('scan', 'duration', (time() - $this->startTime));
				$this->recordMetric('scan', 'memory', wfConfig::get('wfPeakMemory', 0, false));
				$this->submitMetrics();
			}

			wfScanEngine::refreshScanNotification($this->i);

			if (wfCentral::isConnected()) {
				wfCentral::updateScanStatus();
			}
			self::$scanIsRunning = false;
		} catch (wfScanEngineDurationLimitException $e) {
			wfConfig::set('lastScanCompleted', $e->getMessage());
			wfConfig::set('lastScanFailureType', wfIssues::SCAN_FAILED_DURATION_REACHED);
			$this->scanController->recordLastScanTime();

			$this->emailNewIssues(true);
			$this->recordMetric('scan', 'duration', (time() - $this->startTime));
			$this->recordMetric('scan', 'memory', wfConfig::get('wfPeakMemory', 0, false));
			$this->submitMetrics();

			wfScanEngine::refreshScanNotification($this->i);
			self::$scanIsRunning = false;
			throw $e;
		} catch (wfScanEngineCoreVersionChangeException $e) {
			wfConfig::set('lastScanCompleted', $e->getMessage());
			wfConfig::set('lastScanFailureType', wfIssues::SCAN_FAILED_VERSION_CHANGE);
			$this->scanController->recordLastScanTime();

			$this->recordMetric('scan', 'duration', (time() - $this->startTime));
			$this->recordMetric('scan', 'memory', wfConfig::get('wfPeakMemory', 0, false));
			$this->submitMetrics();

			$this->deleteNewIssues();

			wfScanEngine::refreshScanNotification($this->i);
			self::$scanIsRunning = false;
			throw $e;
		} catch (wfScanEngineTestCallbackFailedException $e) {
			wfConfig::set('lastScanCompleted', $e->getMessage());
			wfConfig::set('lastScanFailureType', wfIssues::SCAN_FAILED_CALLBACK_TEST_FAILED);
			$this->scanController->recordLastScanTime();

			$this->recordMetric('scan', 'duration', (time() - $this->startTime));
			$this->recordMetric('scan', 'memory', wfConfig::get('wfPeakMemory', 0, false));
			$this->recordMetric('scan', 'failure', $e->getMessage());
			$this->submitMetrics();

			wfScanEngine::refreshScanNotification($this->i);
			self::$scanIsRunning = false;
			throw $e;
		} catch (Exception $e) {
			if ($e->getCode() != wfScanEngine::SCAN_MANUALLY_KILLED) {
				wfConfig::set('lastScanCompleted', $e->getMessage());
				wfConfig::set('lastScanFailureType', wfIssues::SCAN_FAILED_GENERAL);
			}

			$this->recordMetric('scan', 'duration', (time() - $this->startTime));
			$this->recordMetric('scan', 'memory', wfConfig::get('wfPeakMemory', 0, false));
			$this->recordMetric('scan', 'failure', $e->getMessage());
			$this->submitMetrics();

			wfScanEngine::refreshScanNotification($this->i);
			self::$scanIsRunning = false;
			throw $e;
		}
	}

	public function checkForDurationLimit() {
		static $timeLimit = false;
		if ($timeLimit === false) {
			$timeLimit = intval(wfConfig::get('scan_maxDuration'));
			if ($timeLimit < 1) {
				$timeLimit = WORDFENCE_DEFAULT_MAX_SCAN_TIME;
			}
		}

		if ((time() - $this->startTime) > $timeLimit) {
			$error = sprintf(
			/* translators: 1. Time duration. 2. Support URL. */
				__('The scan time limit of %1$s has been exceeded and the scan will be terminated. This limit can be customized on the options page. <a href="%2$s" target="_blank" rel="noopener noreferrer">Get More Information<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'),
				wfUtils::makeDuration($timeLimit),
				wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_TIME_LIMIT)
			);
			$this->addIssue('timelimit', wfIssues::SEVERITY_HIGH, md5($this->startTime), md5($this->startTime), __('Scan Time Limit Exceeded', 'wordfence'), $error, array());

			$this->status(1, 'info', '-------------------');
			$this->status(1, 'info', sprintf(
			/* translators: 1. Number of files. 2. Number of plugins. 3. Number of themes. 4. Number of posts. 5. Number of comments. 6. Number of URLs. 7. Time duration. */
				__('Scan interrupted. Scanned %1$d files, %2$d plugins, %3$d themes, %4$d posts, %5$d comments and %6$d URLs in %7$s.', 'wordfence'),
				$this->scanController->getSummaryItem(wfScanner::SUMMARY_SCANNED_FILES, 0),
				$this->scanController->getSummaryItem(wfScanner::SUMMARY_SCANNED_PLUGINS, 0),
				$this->scanController->getSummaryItem(wfScanner::SUMMARY_SCANNED_THEMES, 0),
				$this->scanController->getSummaryItem(wfScanner::SUMMARY_SCANNED_POSTS, 0),
				$this->scanController->getSummaryItem(wfScanner::SUMMARY_SCANNED_COMMENTS, 0),
				$this->scanController->getSummaryItem(wfScanner::SUMMARY_SCANNED_URLS, 0),
				wfUtils::makeDuration(time() - $this->startTime, true)
			));
			if ($this->i->totalIssues > 0) {
				$this->status(10, 'info', "SUM_FINAL:" . sprintf(
					/* translators: Number of scan results. */
						_n(
							"Scan interrupted. You have %d new issue to fix. See below.",
							"Scan interrupted. You have %d new issues to fix. See below.",
							$this->i->totalIssues,
							'wordfence'),
						$this->i->totalIssues
					)
				);
			} else {
				$this->status(10, 'info', "SUM_FINAL:" . __('Scan interrupted. No problems found prior to stopping.', 'wordfence'));
			}
			throw new wfScanEngineDurationLimitException($error);
		}
	}

	public function checkForCoreVersionChange() {
		$startVersion = wfConfig::get('wfScanStartVersion');
		$currentVersion = wfUtils::getWPVersion(true);
		if (version_compare($startVersion, $currentVersion) != 0) {
			throw new wfScanEngineCoreVersionChangeException(sprintf(
			/* translators: 1. Software version. 2. Software version. */
				__('Aborting scan because WordPress updated from version %1$s to %2$s. The scan will be reattempted later.', 'wordfence'), $startVersion, $currentVersion));
		}
	}

	private function checkScanStatus() {
		wfIssues::updateScanStillRunning();
		$this->checkForCoreVersionChange();
		self::checkForKill();
		$this->checkForDurationLimit();
	}

	public function shouldFork() {
		$timestamp = time();

		if ($timestamp - $this->cycleStartTime > $this->maxExecTime) {
			$this->checkScanStatus();
			return true;
		}

		if ($this->lastCheck > $timestamp - $this->maxExecTime) {
			return false;
		}

		if ($timestamp - $this->lastCheck > self::SCAN_CHECK_INTERVAL)
			$this->checkScanStatus();

		$this->lastCheck = $timestamp;

		return false;
	}

	public function forkIfNeeded() {
		if ($this->shouldFork()) {
			wordfence::status(4, 'info', __("Forking during malware scan to ensure continuity.", 'wordfence'));
			$this->fork();
		}
	}

	public function fork() {
		wordfence::status(4, 'info', __("Entered fork()", 'wordfence'));
		if (wfConfig::set_ser('wfsd_engine', $this, true, wfConfig::DONT_AUTOLOAD)) {
			$this->scanController->flushSummaryItems();
			wordfence::status(4, 'info', __("Calling startScan(true)", 'wordfence'));
			self::startScan(true, $this->scanMode);
		} //Otherwise there was an error so don't start another scan.
		exit(0);
	}

	public function emailNewIssues($timeLimitReached = false) {
		if (!wfCentral::pluginAlertingDisabled()) {
			$this->i->emailNewIssues($timeLimitReached, $this->scanController);
		}
	}

	public function submitMetrics() {
		if (wfConfig::get('other_WFNet', true)) {
			//Trim down the malware matches if needed to allow the report call to succeed
			if (isset($this->metrics['malwareSignature'])) {
				//Get count
				$count = 0;
				$extra_count = 0;
				$rules_with_extras = 0;
				foreach ($this->metrics['malwareSignature'] as $rule => $payloads) {
					$count += count($payloads);
					$extra_count += (count($payloads) - 1);
					if (count($payloads) > 1) {
						$rules_with_extras++;
					}
				}

				//Trim additional matches
				$overage = $extra_count - WORDFENCE_SCAN_ISSUES_MAX_REPORT;
				if ($overage > 0) {
					foreach ($this->metrics['malwareSignature'] as $rule => $payloads) {
						$percent = min(1, (count($payloads) - 1) / $extra_count); //Percentage of the overage this rule is responsible for 
						$to_remove = min(count($payloads) - 1, ceil($percent * $overage)); //Remove the lesser of (all but one, the percentage of the overage)
						$sliced = array_slice($this->metrics['malwareSignature'][$rule], 0, max(1, count($payloads) - $to_remove));
						$count -= (count($this->metrics['malwareSignature'][$rule]) - count($sliced));
						$this->metrics['malwareSignature'][$rule] = $sliced;
					}
				}

				//Trim single matches
				if ($count > WORDFENCE_SCAN_ISSUES_MAX_REPORT) {
					$sliced = array_slice($this->metrics['malwareSignature'], 0, WORDFENCE_SCAN_ISSUES_MAX_REPORT, true);
					$this->metrics['malwareSignature'] = $sliced;
				}
			}

			$this->api->call('record_scan_metrics', array(), array('metrics' => $this->metrics));
		}
	}

	private function doScan() {
		if ($this->scanController->useLowResourceScanning()) {
			$isFork = ($_GET['isFork'] == '1' ? true : false);
			wfConfig::set('lowResourceScanWaitStep', !wfConfig::get('lowResourceScanWaitStep'));
			if ($isFork && wfConfig::get('lowResourceScanWaitStep')) {
				sleep((int) round($this->maxExecTime / 2));
				$this->fork(); //exits
			}
		}

		while (sizeof($this->jobList) > 0) {
			self::checkForKill();
			$jobName = $this->jobList[0];
			$callback = array($this, 'scan_' . $jobName);
			if (is_callable($callback)) {
				call_user_func($callback);
			}
			array_shift($this->jobList); //only shift once we're done because we may pause halfway through a job and need to pick up where we left off
			self::checkForKill();
			if ($this->forkRequested) {
				$this->fork();
			} else {
				$this->forkIfNeeded();
			}
		}

		$this->status(1, 'info', '-------------------');

		$peakMemory = wfScan::logPeakMemory();
		$this->status(2, 'info', sprintf(
		/* translators: 1. Memory in bytes. 2. Memory in bytes. */
			__('Wordfence used %1$s of memory for scan. Server peak memory usage was: %2$s', 'wordfence'),
			wfUtils::formatBytes($peakMemory - wfScan::$peakMemAtStart),
			wfUtils::formatBytes($peakMemory)
		));

		wfScanMonitor::endMonitoring();

		if ($this->isFullScan()) {
			$this->status(1, 'info', sprintf(
			/* translators: 1. Number of files. 2. Number of plugins. 3. Number of themes. 4. Number of posts. 5. Number of comments. 6. Number of URLs. 7. Time duration. */
				__('Scan Complete. Scanned %1$d files, %2$d plugins, %3$d themes, %4$d posts, %5$d comments and %6$d URLs in %7$s.', 'wordfence'),
				$this->scanController->getSummaryItem(wfScanner::SUMMARY_SCANNED_FILES, 0),
				$this->scanController->getSummaryItem(wfScanner::SUMMARY_SCANNED_PLUGINS, 0),
				$this->scanController->getSummaryItem(wfScanner::SUMMARY_SCANNED_THEMES, 0),
				$this->scanController->getSummaryItem(wfScanner::SUMMARY_SCANNED_POSTS, 0),
				$this->scanController->getSummaryItem(wfScanner::SUMMARY_SCANNED_COMMENTS, 0),
				$this->scanController->getSummaryItem(wfScanner::SUMMARY_SCANNED_URLS, 0),
				wfUtils::makeDuration(time() - $this->startTime, true)
			));
		} else {
			$this->status(1, 'info', sprintf(
			/* translators: 1. Time duration. */
				__("Quick Scan Complete. Scanned in %s.", 'wordfence'),
				wfUtils::makeDuration(time() - $this->startTime, true)
			));
		}

		$ignoredText = '';
		if ($this->i->totalIgnoredIssues > 0) {
			$ignoredText = ' ' . sprintf(
				/* translators: Number of scan results. */
					_n(
						'%d ignored issue was also detected.',
						'%d ignored issues were also detected.',
						$this->i->totalIgnoredIssues,
						'wordfence'
					), $this->i->totalIgnoredIssues);
		}

		if ($this->i->totalIssues > 0) {
			$this->status(10, 'info', "SUM_FINAL:" . sprintf(
				/* translators: Number of scan results. */
					_n(
						"Scan complete. You have %d new issue to fix.",
						"Scan complete. You have %d new issues to fix.",
						$this->i->totalIssues,
						'wordfence'),
					$this->i->totalIssues
				) .
				$ignoredText . ' ' .
				__('See below.', 'wordfence')
			);
		} else {
			$this->status(10, 'info', "SUM_FINAL:" . __('Scan complete. Congratulations, no new problems found.', 'wordfence') . $ignoredText);
		}
		return;
	}

	public function getCurrentJob() {
		return $this->jobList[0];
	}

	private function scan_checkSpamIP() {
		if ($this->scanController->isPremiumScan()) {
			$this->statusIDX['checkSpamIP'] = wfIssues::statusStart(__("Checking if your site IP is generating spam", 'wordfence'));
			$this->scanController->startStage(wfScanner::STAGE_SPAM_CHECK);
			$result = $this->api->call('check_spam_ip', array(), array(
				'siteURL' => site_url()
			));
			$haveIssues = wfIssues::STATUS_SECURE;
			if (!empty($result['haveIssues']) && is_array($result['issues'])) {
				foreach ($result['issues'] as $issue) {
					$added = $this->addIssue($issue['type'], wfIssues::SEVERITY_HIGH, $issue['ignoreP'], $issue['ignoreC'], $issue['shortMsg'], $issue['longMsg'], $issue['data']);
					if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) {
						$haveIssues = wfIssues::STATUS_PROBLEM;
					} else if ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC) {
						$haveIssues = wfIssues::STATUS_IGNORED;
					}
				}
			}
			wfIssues::statusEnd($this->statusIDX['checkSpamIP'], $haveIssues);
			$this->scanController->completeStage(wfScanner::STAGE_SPAM_CHECK, $haveIssues);
		} else {
			wfIssues::statusPaidOnly(__("Checking if your IP is generating spam is for paid members only", 'wordfence'));
			sleep(2);
		}
	}

	private function scan_checkGSB_init() {
		if ($this->scanController->isPremiumScan()) {
			$this->statusIDX['checkGSB'] = wfIssues::statusStart(__("Checking if your site is on a domain blocklist", 'wordfence'));
			$this->scanController->startStage(wfScanner::STAGE_BLACKLIST_CHECK);
			$h = new wordfenceURLHoover($this->apiKey, $this->wp_version);
			$h->cleanup();
		} else {
			wfIssues::statusPaidOnly(__("Checking if your site is on a domain blocklist is for paid members only", 'wordfence'));
			sleep(2);
		}
	}

	private function scan_checkGSB_main() {
		if ($this->scanController->isPremiumScan()) {
			if (is_multisite()) {
				global $wpdb;
				$h = new wordfenceURLHoover($this->apiKey, $this->wp_version, false, true);
				$blogIDs = $wpdb->get_col($wpdb->prepare("SELECT blog_id FROM {$wpdb->blogs} WHERE blog_id > %d ORDER BY blog_id ASC", $this->gsbMultisiteBlogOffset)); //Can't use wp_get_sites or get_sites because they return empty at 10k sites
				foreach ($blogIDs as $id) {
					$homeURL = get_home_url($id);
					$h->hoover($id, $homeURL);
					$this->scanController->incrementSummaryItem(wfScanner::SUMMARY_SCANNED_URLS);
					$siteURL = get_site_url($id);
					if ($homeURL != $siteURL) {
						$h->hoover($id, $siteURL);
						$this->scanController->incrementSummaryItem(wfScanner::SUMMARY_SCANNED_URLS);
					}

					if ($this->shouldFork()) {
						$this->gsbMultisiteBlogOffset = $id;
						$this->forkIfNeeded();
					}
				}
			}
		}
	}

	private function scan_checkGSB_finish() {
		if ($this->scanController->isPremiumScan()) {
			if (is_multisite()) {
				$h = new wordfenceURLHoover($this->apiKey, $this->wp_version, false, true);
				$badURLs = $h->getBaddies();
				if ($h->errorMsg) {
					$this->status(4, 'info', sprintf(/* translators: Error message. */ __("Error checking domain blocklists: %s", 'wordfence'), $h->errorMsg));
					wfIssues::statusEnd($this->statusIDX['checkGSB'], wfIssues::STATUS_FAILED);
					$this->scanController->completeStage(wfScanner::STAGE_BLACKLIST_CHECK, wfIssues::STATUS_FAILED);
					return;
				}
				$h->cleanup();
			} else {
				$urlsToCheck = array(array(wfUtils::wpHomeURL(), wfUtils::wpSiteURL()));
				$badURLs = $this->api->call('check_bad_urls', array(), array('toCheck' => json_encode($urlsToCheck))); //Skipping the separate prefix check since there are just two URLs
				$finalResults = array();
				foreach ($badURLs as $file => $badSiteList) {
					if (!isset($finalResults[$file])) {
						$finalResults[$file] = array();
					}
					foreach ($badSiteList as $badSite) {
						$finalResults[$file][] = array(
							'URL'     => $badSite[0],
							'badList' => $badSite[1]
						);
					}
				}
				$badURLs = $finalResults;
			}

			$haveIssues = wfIssues::STATUS_SECURE;
			if (is_array($badURLs) && count($badURLs) > 0) {
				foreach ($badURLs as $id => $badSiteList) {
					foreach ($badSiteList as $badSite) {
						$url = $badSite['URL'];
						$badList = $badSite['badList'];
						$data = array('badURL' => $url);

						if ($badList == 'goog-malware-shavar') {
							if (is_multisite()) {
								$shortMsg = sprintf(/* translators: WordPress site ID. */ __('The multisite blog with ID %d is listed on Google\'s Safe Browsing malware list.', 'wordfence'), intval($id));
								$data['multisite'] = intval($id);
							} else {
								$shortMsg = __('Your site is listed on Google\'s Safe Browsing malware list.', 'wordfence');
							}
							$longMsg = sprintf(
							/* translators: 1. URL. 2. URL. */
								__('The URL %1$s is on the malware list. More info available at <a href="http://safebrowsing.clients.google.com/safebrowsing/diagnostic?site=%2$s&client=googlechrome&hl=en-US" target="_blank" rel="noopener noreferrer">Google Safe Browsing diagnostic page<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>.', 'wordfence'), esc_html($url), urlencode($url));
							$data['gsb'] = $badList;
						} else if ($badList == 'googpub-phish-shavar') {
							if (is_multisite()) {
								$shortMsg = sprintf(
								/* translators: WordPress site ID. */
									__('The multisite blog with ID %d is listed on Google\'s Safe Browsing phishing list.', 'wordfence'), intval($id));
								$data['multisite'] = intval($id);
							} else {
								$shortMsg = __('Your site is listed on Google\'s Safe Browsing phishing list.', 'wordfence');
							}
							$longMsg = sprintf(
							/* translators: 1. URL. 2. URL. */
								__('The URL %1$s is on the phishing list. More info available at <a href="http://safebrowsing.clients.google.com/safebrowsing/diagnostic?site=%2$s&client=googlechrome&hl=en-US" target="_blank" rel="noopener noreferrer">Google Safe Browsing diagnostic page<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>.', 'wordfence'), esc_html($url), urlencode($url));
							$data['gsb'] = $badList;
						} else if ($badList == 'wordfence-dbl') {
							if (is_multisite()) {
								$shortMsg = sprintf(
								/* translators: WordPress site ID. */
									__('The multisite blog with ID %d is listed on the Wordfence domain blocklist.', 'wordfence'), intval($id));
								$data['multisite'] = intval($id);
							} else {
								$shortMsg = __('Your site is listed on the Wordfence domain blocklist.', 'wordfence');
							}
							$longMsg = sprintf(
							/* translators: URL. */
								__("The URL %s is on the blocklist.", 'wordfence'), esc_html($url));
							$data['gsb'] = $badList;
						} else {
							if (is_multisite()) {
								$shortMsg = sprintf(
								/* translators: WordPress site ID. */
									__('The multisite blog with ID %d is listed on a domain blocklist.', 'wordfence'), intval($id));
								$data['multisite'] = intval($id);
							} else {
								$shortMsg = __('Your site is listed on a domain blocklist.', 'wordfence');
							}
							$longMsg = sprintf(/* translators: URL. */ __("The URL is: %s", 'wordfence'), esc_html($url));
							$data['gsb'] = 'unknown';
						}

						$added = $this->addIssue('checkGSB', wfIssues::SEVERITY_CRITICAL, 'checkGSB', 'checkGSB' . $url, $shortMsg, $longMsg, $data);
						if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) {
							$haveIssues = wfIssues::STATUS_PROBLEM;
						} else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) {
							$haveIssues = wfIssues::STATUS_IGNORED;
						}
					}
				}
			}

			wfIssues::statusEnd($this->statusIDX['checkGSB'], $haveIssues);
			$this->scanController->completeStage(wfScanner::STAGE_BLACKLIST_CHECK, $haveIssues);
		}
	}

	private function scan_checkHowGetIPs_init() {
		$this->statusIDX['checkHowGetIPs'] = wfIssues::statusStart(__("Checking for the most secure way to get IPs", 'wordfence'));
		$this->scanController->startStage(wfScanner::STAGE_SERVER_STATE);
		$this->checkHowGetIPsRequestTime = time();
		wfUtils::requestDetectProxyCallback();
	}

	private function scan_checkHowGetIPs_main() {
		if (!defined('WORDFENCE_CHECKHOWGETIPS_TIMEOUT')) {
			define('WORDFENCE_CHECKHOWGETIPS_TIMEOUT', 30);
		}

		$haveIssues = wfIssues::STATUS_SECURE;
		$existing = wfConfig::get('howGetIPs', '');
		$recommendation = wfConfig::get('detectProxyRecommendation', '');
		while (empty($recommendation) && (time() - $this->checkHowGetIPsRequestTime) < WORDFENCE_CHECKHOWGETIPS_TIMEOUT) {
			sleep(1);
			$this->forkIfNeeded();
			$recommendation = wfConfig::get('detectProxyRecommendation', '');
		}

		if ($recommendation == 'DEFERRED') {
			//Do nothing
			$haveIssues = wfIssues::STATUS_SKIPPED;
		} else if (empty($recommendation)) {
			$haveIssues = wfIssues::STATUS_FAILED;
		} else if ($recommendation == 'UNKNOWN') {
			$added = $this->addIssue('checkHowGetIPs', wfIssues::SEVERITY_HIGH, 'checkHowGetIPs', 'checkHowGetIPs' . $recommendation . WORDFENCE_VERSION,
				__("Unable to accurately detect IPs", 'wordfence'),
				sprintf(/* translators: Support URL. */ __('Wordfence was unable to validate a test request to your website. This can happen if your website is behind a proxy that does not use one of the standard ways to convey the IP of the request or it is unreachable publicly. IP blocking and live traffic information may not be accurate. <a href="%s" target="_blank" rel="noopener noreferrer">Get More Information<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_NOTICE_MISCONFIGURED_HOW_GET_IPS))
				, array());
			if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) {
				$haveIssues = wfIssues::STATUS_PROBLEM;
			} else if ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC) {
				$haveIssues = wfIssues::STATUS_IGNORED;
			}
		} else if (!empty($existing) && $existing != $recommendation) {
			$extraMsg = '';
			if ($recommendation == 'REMOTE_ADDR') {
				$extraMsg = ' ' . __('For maximum security use PHP\'s built in REMOTE_ADDR.', 'wordfence');
			} else if ($recommendation == 'HTTP_X_FORWARDED_FOR') {
				$extraMsg = ' ' . __('This site appears to be behind a front-end proxy, so using the X-Forwarded-For HTTP header will resolve to the correct IPs.', 'wordfence');
			} else if ($recommendation == 'HTTP_X_REAL_IP') {
				$extraMsg = ' ' . __('This site appears to be behind a front-end proxy, so using the X-Real-IP HTTP header will resolve to the correct IPs.', 'wordfence');
			} else if ($recommendation == 'HTTP_CF_CONNECTING_IP') {
				$extraMsg = ' ' . __('This site appears to be behind Cloudflare, so using the Cloudflare "CF-Connecting-IP" HTTP header will resolve to the correct IPs.', 'wordfence');
			}

			$added = $this->addIssue('checkHowGetIPs', wfIssues::SEVERITY_HIGH, 'checkHowGetIPs', 'checkHowGetIPs' . $recommendation . WORDFENCE_VERSION,
				__("'How does Wordfence get IPs' is misconfigured", 'wordfence'),
				sprintf(
				/* translators: Support URL. */
					__('A test request to this website was detected on a different value for this setting. IP blocking and live traffic information may not be accurate. <a href="%s" target="_blank" rel="noopener noreferrer">Get More Information<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'),
					wfSupportController::esc_supportURL(wfSupportController::ITEM_NOTICE_MISCONFIGURED_HOW_GET_IPS)
				) . $extraMsg,
				array('recommendation' => $recommendation));
			if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) {
				$haveIssues = wfIssues::STATUS_PROBLEM;
			} else if ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC) {
				$haveIssues = wfIssues::STATUS_IGNORED;
			}
		}

		wfIssues::statusEnd($this->statusIDX['checkHowGetIPs'], $haveIssues);
		$this->scanController->completeStage(wfScanner::STAGE_SERVER_STATE, $haveIssues);
	}

	private function scan_checkHowGetIPs_finish() {
		/* Do nothing */
	}

	private function scan_checkReadableConfig() {
		$haveIssues = wfIssues::STATUS_SECURE;
		$status = wfIssues::statusStart(__("Check for publicly accessible configuration files, backup files and logs", 'wordfence'));
		$this->scanController->startStage(wfScanner::STAGE_PUBLIC_FILES);

		$backupFileTests = array(
			wfCommonBackupFileTest::createFromRootPath('.env'),
			wfCommonBackupFileTest::createFromRootPath('.user.ini'),
//			wfCommonBackupFileTest::createFromRootPath('.htaccess'),
			wfCommonBackupFileTest::createFromRootPath('wp-config.php.bak'),
			wfCommonBackupFileTest::createFromRootPath('wp-config.php.bak.a2'),
			wfCommonBackupFileTest::createFromRootPath('wp-config.php.swo'),
			wfCommonBackupFileTest::createFromRootPath('wp-config.php.save'),
			new wfCommonBackupFileTest(home_url('%23wp-config.php%23'), ABSPATH . '#wp-config.php#'),
			wfCommonBackupFileTest::createFromRootPath('wp-config.php~'),
			wfCommonBackupFileTest::createFromRootPath('wp-config.old'),
			wfCommonBackupFileTest::createFromRootPath('.wp-config.php.swp'),
			wfCommonBackupFileTest::createFromRootPath('wp-config.bak'),
			wfCommonBackupFileTest::createFromRootPath('wp-config.save'),
			wfCommonBackupFileTest::createFromRootPath('wp-config.php_bak'),
			wfCommonBackupFileTest::createFromRootPath('wp-config.php.swp'),
			wfCommonBackupFileTest::createFromRootPath('wp-config.php.old'),
			wfCommonBackupFileTest::createFromRootPath('wp-config.php.original'),
			wfCommonBackupFileTest::createFromRootPath('wp-config.php.orig'),
			wfCommonBackupFileTest::createFromRootPath('wp-config.txt'),
			wfCommonBackupFileTest::createFromRootPath('wp-config.original'),
			wfCommonBackupFileTest::createFromRootPath('wp-config.orig'),
			new wfCommonBackupFileTest(content_url('/debug.log'), WP_CONTENT_DIR . '/debug.log', array(
				'headers' => array(
					'Range' => 'bytes=0-700',
				),
			)),
		);
		$backupFileTests = array_merge($backupFileTests, wfCommonBackupFileTest::createAllForFile('searchreplacedb2.php', wfCommonBackupFileTest::MATCH_REGEX, '/<title>Search and replace DB/i'));

		$userIniFilename = ini_get('user_ini.filename');
		if ($userIniFilename && $userIniFilename !== '.user.ini') {
			$backupFileTests[] = wfCommonBackupFileTest::createFromRootPath($userIniFilename);
		}


		/** @var wfCommonBackupFileTest $test */
		foreach ($backupFileTests as $test) {
			$pathFromRoot = (strpos($test->getPath(), ABSPATH) === 0) ? substr($test->getPath(), strlen(ABSPATH)) : $test->getPath();
			wordfence::status(4, 'info', "Testing {$pathFromRoot}");
			if ($test->fileExists() && $test->isPubliclyAccessible()) {
				$key = "configReadable" . bin2hex($test->getUrl());
				$added = $this->addIssue(
					'configReadable',
					wfIssues::SEVERITY_CRITICAL,
					$key,
					$key,
					sprintf(
					/* translators: File path. */
						__('Publicly accessible config, backup, or log file found: %s', 'wordfence'), esc_html($pathFromRoot)),
					sprintf(
					/* translators: 1. URL to publicly accessible file. 2. Support URL. */
						__('<a href="%1$s" target="_blank" rel="noopener noreferrer">%1$s</a> is publicly accessible and may expose source code or sensitive information about your site. Files such as this one are commonly checked for by scanners and should be made inaccessible. Alternately, some can be removed if you are certain your site does not need them. Sites using the nginx web server may need manual configuration changes to protect such files. <a href="%2$s" target="_blank" rel="noopener noreferrer">Learn more<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'),
						$test->getUrl(),
						wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_RESULT_PUBLIC_CONFIG)
					),
					array(
						'url'       => $test->getUrl(),
						'file'      => $pathFromRoot,
						'realFile'	=> $test->getPath(),
						'canDelete' => true,
					)
				);
				if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) {
					$haveIssues = wfIssues::STATUS_PROBLEM;
				} else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) {
					$haveIssues = wfIssues::STATUS_IGNORED;
				}
			}
		}

		wfIssues::statusEnd($status, $haveIssues);
		$this->scanController->completeStage(wfScanner::STAGE_PUBLIC_FILES, $haveIssues);
	}

	private function scan_wpscan_fullPathDisclosure() {
		$file = realpath(ABSPATH . WPINC . "/rss-functions.php");
		if (!$file) {
			return;
		}

		$haveIssues = wfIssues::STATUS_SECURE;
		$status = wfIssues::statusStart(__("Checking if your server discloses the path to the document root", 'wordfence'));
		$testPage = includes_url() . basename($file);

		if (self::testForFullPathDisclosure($testPage, $file)) {
			$key = 'wpscan_fullPathDisclosure' . $testPage;
			$added = $this->addIssue(
				'wpscan_fullPathDisclosure',
				wfIssues::SEVERITY_HIGH,
				$key,
				$key,
				__('Web server exposes the document root', 'wordfence'),
				__('Full Path Disclosure (FPD) vulnerabilities enable the attacker to see the path to the webroot/file. e.g.: /home/user/htdocs/file/. Certain vulnerabilities, such as using the load_file() (within a SQL Injection) query to view the page source, require the attacker to have the full path to the file they wish to view.', 'wordfence'),
				array('url' => $testPage)
			);
			if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) {
				$haveIssues = wfIssues::STATUS_PROBLEM;
			} else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) {
				$haveIssues = wfIssues::STATUS_IGNORED;
			}
		}

		wfIssues::statusEnd($status, $haveIssues);
	}

	private function scan_wpscan_directoryListingEnabled() {
		$this->statusIDX['wpscan_directoryListingEnabled'] = wfIssues::statusStart("Checking to see if directory listing is enabled");

		$uploadPaths = wp_upload_dir();
		$enabled = self::isDirectoryListingEnabled($uploadPaths['baseurl']);

		$haveIssues = wfIssues::STATUS_SECURE;
		if ($enabled) {
			$added = $this->addIssue(
				'wpscan_directoryListingEnabled',
				wfIssues::SEVERITY_HIGH,
				'wpscan_directoryListingEnabled',
				'wpscan_directoryListingEnabled',
				__("Directory listing is enabled", 'wordfence'),
				__("Directory listing provides an attacker with the complete index of all the resources located inside of the directory. The specific risks and consequences vary depending on which files are listed and accessible, but it is recommended that you disable it unless it is needed.", 'wordfence'),
				array(
					'url' => $uploadPaths['baseurl'],
				)
			);
			if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) {
				$haveIssues = wfIssues::STATUS_PROBLEM;
			} else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) {
				$haveIssues = wfIssues::STATUS_IGNORED;
			}
		}
		wfIssues::statusEnd($this->statusIDX['wpscan_directoryListingEnabled'], $haveIssues);
	}

	private function scan_checkSpamvertized() {
		if ($this->scanController->isPremiumScan()) {
			$this->statusIDX['spamvertizeCheck'] = wfIssues::statusStart(__("Checking if your site is being Spamvertised", 'wordfence'));
			$this->scanController->startStage(wfScanner::STAGE_SPAMVERTISING_CHECKS);
			$result = $this->api->call('spamvertize_check', array(), array(
				'siteURL' => site_url()
			));
			$haveIssues = wfIssues::STATUS_SECURE;
			if ($result['haveIssues'] && is_array($result['issues'])) {
				foreach ($result['issues'] as $issue) {
					$added = $this->addIssue($issue['type'], wfIssues::SEVERITY_CRITICAL, $issue['ignoreP'], $issue['ignoreC'], $issue['shortMsg'], $issue['longMsg'], $issue['data']);
					if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) {
						$haveIssues = wfIssues::STATUS_PROBLEM;
					} else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) {
						$haveIssues = wfIssues::STATUS_IGNORED;
					}
				}
			}
			wfIssues::statusEnd($this->statusIDX['spamvertizeCheck'], $haveIssues);
			$this->scanController->completeStage(wfScanner::STAGE_SPAMVERTISING_CHECKS, $haveIssues);
		} else {
			wfIssues::statusPaidOnly(__("Check if your site is being Spamvertized is for paid members only", 'wordfence'));
			sleep(2);
		}
	}

	private function _scannedSkippedPaths() {
		static $_cache = null;
		if ($_cache === null) {
			$scanPaths = array();
			$directoryConstants = array(
				'WP_PLUGIN_DIR' => '/wp-content/plugins',
				'UPLOADS' => '/wp-content/uploads',
				'WP_CONTENT_DIR' => '/wp-content',
			);
			foreach ($directoryConstants as $constant => $wordpressPath) {
				if (!defined($constant))
					continue;
				$path = constant($constant);
				if (!empty($path)) {
					if ($constant === 'UPLOADS')
						$path = ABSPATH . $path;
					try {
						$scanPaths[] = new wfScanPath(
							ABSPATH,
							$path,
							$wordpressPath
						);
					}
					catch (wfInvalidPathException $e) {
						//Ignore invalid scan paths
						wordfence::status(4, 'info', sprintf(__("Ignoring invalid scan path: %s", 'wordfence'), $e->getPath()));
					}
				}
			}
			$scanPaths[] = new wfScanPath(
				ABSPATH,
				ABSPATH,
				'/',
				array('.htaccess', 'index.php', 'license.txt', 'readme.html', 'wp-activate.php', 'wp-admin', 'wp-app.php', 'wp-blog-header.php', 'wp-comments-post.php', 'wp-config-sample.php', 'wp-content', 'wp-cron.php', 'wp-includes', 'wp-links-opml.php', 'wp-load.php', 'wp-login.php', 'wp-mail.php', 'wp-pass.php', 'wp-register.php', 'wp-settings.php', 'wp-signup.php', 'wp-trackback.php', 'xmlrpc.php', '.well-known', 'cgi-bin')
			);
			if (WF_IS_FLYWHEEL && !empty($_SERVER['DOCUMENT_ROOT'])) {
				$scanPaths[] = new wfScanPath(
					ABSPATH,
					$_SERVER['DOCUMENT_ROOT'],
					'/../'
				);
			}
			$scanOutside = $this->scanController->scanOutsideWordPress();
			$entrypoints = array();
			foreach ($scanPaths as $scanPath) {
				if (!$scanOutside && $scanPath->hasExpectedFiles()) {
					try {
						foreach ($scanPath->getContents() as $fileName) {
							try {
								$file = $scanPath->createScanFile($fileName);
								if (wfUtils::fileTooBig($file->getRealPath()))
									continue;
								$entrypoint = new wfScanEntrypoint($file);
								if ($scanPath->expectsFile($fileName) || wfFileUtils::isReadableFile($file->getRealPath())) {
									$entrypoint->setIncluded();
								}
								$entrypoint->addTo($entrypoints);
							}
							catch (wfInvalidPathException $e) {
								wordfence::status(4, 'info', sprintf(__("Ignoring invalid expected scan file: %s", 'wordfence'), $e->getPath()));
							}
						}
					}
					catch (wfInaccessibleDirectoryException $e) {
						throw new Exception(__("Wordfence could not read the content of your WordPress directory. This usually indicates your permissions are so strict that your web server can't read your WordPress directory.", 'wordfence'));
					}
				}
				else {
					try {
						$entrypoint = new wfScanEntrypoint($scanPath->createScanFile('/'), true);
						$entrypoint->addTo($entrypoints);
					}
					catch (wfInvalidPathException $e) {
						wordfence::status(4, 'info', sprintf(__("Ignoring invalid base scan file: %s", 'wordfence'), $e->getPath()));
					}
				}
			}
			$_cache = wfScanEntrypoint::getScannedSkippedFiles($entrypoints);
		}
		return $_cache;
	}

	private function scan_checkSkippedFiles() {
		$haveIssues = wfIssues::STATUS_SECURE;
		$status = wfIssues::statusStart(__("Checking for paths skipped due to scan settings", 'wordfence'));
		$this->scanController->startStage(wfScanner::STAGE_SERVER_STATE);

		$paths = $this->_scannedSkippedPaths();
		if (!empty($paths['skipped'])) {
			$skippedList = '';
			foreach ($paths['skipped'] as $index => $file) {
				$path = esc_html($file->getDisplayPath());

				if ($index >= 10) {
					$skippedList .= sprintf(/* translators: Number of paths skipped in scan. */ __(', and %d more.', 'wordfence'), count($paths['skipped']) - 10);
					break;
				}

				if (!empty($skippedList)) {
					if (count($paths['skipped']) == 2) {
						$skippedList .= ' and ';
					} else if ($index == count($paths['skipped']) - 1) {
						$skippedList .= ', and ';
					} else {
						$skippedList .= ', ';
					}
				}

				$skippedList .= $path;
			}

			$c = count($paths['skipped']);
			$key = "skippedPaths";
			$added = $this->addIssue(
				'skippedPaths',
				wfIssues::SEVERITY_LOW,
				$key,
				$key,
				sprintf(/* translators: Number of paths skipped in scan. */ _n('%d path was skipped for the malware scan due to scan settings', '%d paths were skipped for the malware scan due to scan settings', $c, 'wordfence'), $c),
				sprintf(
				/* translators: 1. Number of paths skipped in scan. 2. Support URL. 3. List of skipped paths. */
					_n(
						'The option "Scan files outside your WordPress installation" is off by default, which means %1$d path and its file(s) will not be scanned for malware or unauthorized changes. To continue skipping this path, you may ignore this issue. Or to start scanning it, enable the option and subsequent scans will include it. Some paths may not be necessary to scan, so this is optional. <a href="%2$s" target="_blank" rel="noopener noreferrer">Learn More<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a><br><br>The path skipped is %3$s',
						'The option "Scan files outside your WordPress installation" is off by default, which means %1$d paths and their file(s) will not be scanned for malware or unauthorized changes. To continue skipping these paths, you may ignore this issue. Or to start scanning them, enable the option and subsequent scans will include them. Some paths may not be necessary to scan, so this is optional. <a href="%2$s" target="_blank" rel="noopener noreferrer">Learn More<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a><br><br>The paths skipped are %3$s',
						$c,
						'wordfence'
					),
					$c,
					wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_RESULT_SKIPPED_PATHS),
					$skippedList
				),
				array()
			);

			if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) {
				$haveIssues = wfIssues::STATUS_PROBLEM;
			} else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) {
				$haveIssues = wfIssues::STATUS_IGNORED;
			}
		}

		wfIssues::statusEnd($status, $haveIssues);
		$this->scanController->completeStage(wfScanner::STAGE_SERVER_STATE, $haveIssues);
	}

	private function scan_knownFiles_init() {
		$paths = $this->_scannedSkippedPaths();
		$includeInKnownFilesScan = $paths['scanned'];
		if ($this->scanController->scanOutsideWordPress()) {
			wordfence::status(2, 'info', __("Including files that are outside the WordPress installation in the scan.", 'wordfence'));
		}

		$this->status(2, 'info', __("Getting plugin list from WordPress", 'wordfence'));
		$knownFilesPlugins = $this->getPlugins();
		$this->status(2, 'info', sprintf(/* translators: Number of plugins. */ _n("Found %d plugin", "Found %d plugins", sizeof($knownFilesPlugins), 'wordfence'), sizeof($knownFilesPlugins)));

		$this->status(2, 'info', __("Getting theme list from WordPress", 'wordfence'));
		$knownFilesThemes = $this->getThemes();
		$this->status(2, 'info', sprintf(/* translators: Number of themes. */ _n("Found %d theme", "Found %d themes", sizeof($knownFilesThemes), 'wordfence'), sizeof($knownFilesThemes)));

		$this->hasher = new wordfenceHash($includeInKnownFilesScan, $this, wfUtils::hex2bin($this->malwarePrefixesHash), $this->coreHashesHash, $this->scanMode);
	}

	private function scan_knownFiles_main() {
		$this->hasher->run($this); //Include this so we can call addIssue and ->api->
		$this->suspectedFiles = $this->hasher->getSuspectedFiles();
		$this->hasher = false;
	}

	private function scan_knownFiles_finish() {
	}

	private function scan_fileContents_init() {
		$options = $this->scanController->scanOptions();
		if ($options['scansEnabled_fileContents']) {
			$this->statusIDX['infect'] = wfIssues::statusStart(__('Scanning file contents for infections and vulnerabilities', 'wordfence'));
			//This stage is marked as started earlier in the hasher rather than here
		} else {
			wfIssues::statusDisabled(__("Skipping scan of file contents for infections and vulnerabilities", 'wordfence'));
		}

		if ($options['scansEnabled_fileContentsGSB']) {
			$this->statusIDX['GSB'] = wfIssues::statusStart(__('Scanning file contents for URLs on a domain blocklist', 'wordfence'));
			//This stage is marked as started earlier in the hasher rather than here
		} else {
			wfIssues::statusDisabled(__("Skipping scan of file contents for URLs on a domain blocklist", 'wordfence'));
		}

		if ($options['scansEnabled_fileContents'] || $options['scansEnabled_fileContentsGSB']) {
			$this->scanner = new wordfenceScanner($this->apiKey, $this->wp_version, ABSPATH, $this);
			$this->status(2, 'info', __("Starting scan of file contents", 'wordfence'));
		} else {
			$this->scanner = false;
		}
	}

	private function scan_fileContents_main() {
		$options = $this->scanController->scanOptions();
		if ($options['scansEnabled_fileContents'] || $options['scansEnabled_fileContentsGSB']) {
			$this->fileContentsResults = $this->scanner->scan($this);
		}
	}

	private function scan_fileContents_finish() {
		$options = $this->scanController->scanOptions();
		if ($options['scansEnabled_fileContents'] || $options['scansEnabled_fileContentsGSB']) {
			$this->status(2, 'info', __("Done file contents scan", 'wordfence'));
			if ($this->scanner->errorMsg) {
				throw new Exception($this->scanner->errorMsg);
			}
			$this->scanner = null;
			$haveIssues = wfIssues::STATUS_SECURE;
			$haveIssuesGSB = wfIssues::STATUS_SECURE;
			foreach ($this->fileContentsResults as $issue) {
				$this->status(2, 'info', sprintf(/* translators: Scan result description. */ __("Adding issue: %s", 'wordfence'), $issue['shortMsg']));
				$added = $this->addIssue($issue['type'], $issue['severity'], $issue['ignoreP'], $issue['ignoreC'], $issue['shortMsg'], $issue['longMsg'], $issue['data']);

				if (isset($issue['data']['gsb'])) {
					if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) {
						$haveIssuesGSB = wfIssues::STATUS_PROBLEM;
					} else if ($haveIssuesGSB != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) {
						$haveIssuesGSB = wfIssues::STATUS_IGNORED;
					}
				} else {
					if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) {
						$haveIssues = wfIssues::STATUS_PROBLEM;
					} else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) {
						$haveIssues = wfIssues::STATUS_IGNORED;
					}
				}
			}
			$this->fileContentsResults = null;

			if ($options['scansEnabled_fileContents']) {
				wfIssues::statusEnd($this->statusIDX['infect'], $haveIssues);
				$this->scanController->completeStage(wfScanner::STAGE_MALWARE_SCAN, $haveIssues);
			}

			if ($options['scansEnabled_fileContentsGSB']) {
				wfIssues::statusEnd($this->statusIDX['GSB'], $haveIssuesGSB);
				$this->scanController->completeStage(wfScanner::STAGE_CONTENT_SAFETY, $haveIssuesGSB);
			}
		}
	}

	private function scan_suspectedFiles() {
		$haveIssues = wfIssues::STATUS_SECURE;
		$status = wfIssues::statusStart(__("Scanning for publicly accessible quarantined files", 'wordfence'));
		$this->scanController->startStage(wfScanner::STAGE_PUBLIC_FILES);

		if (is_array($this->suspectedFiles) && count($this->suspectedFiles) > 0) {
			foreach ($this->suspectedFiles as $file) {
				wordfence::status(4, 'info', sprintf(/* translators: File path. */ __("Testing accessibility of: %s", 'wordfence'), $file));
				$test = wfPubliclyAccessibleFileTest::createFromRootPath($file);
				if ($test->fileExists() && $test->isPubliclyAccessible()) {
					$key = "publiclyAccessible" . bin2hex($test->getUrl());
					$added = $this->addIssue(
						'publiclyAccessible',
						wfIssues::SEVERITY_HIGH,
						$key,
						$key,
						sprintf(/* translators: File path. */ __('Publicly accessible quarantined file found: %s', 'wordfence'), esc_html($file)),
						sprintf(
						/* translators: URL to publicly accessible file. */
							__('<a href="%1$s" target="_blank" rel="noopener noreferrer">%1$s<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a> is publicly accessible and may expose source code or sensitive information about your site. Files such as this one are commonly checked for by scanners and should be removed or made inaccessible.', 'wordfence'),
							$test->getUrl()
						),
						array(
							'url'       => $test->getUrl(),
							'file'      => $file,
							'canDelete' => true,
						)
					);

					if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) {
						$haveIssues = wfIssues::STATUS_PROBLEM;
					} else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) {
						$haveIssues = wfIssues::STATUS_IGNORED;
					}
				}
			}
		}

		wfIssues::statusEnd($status, $haveIssues);
		$this->scanController->completeStage(wfScanner::STAGE_PUBLIC_FILES, $haveIssues);
	}

	private function scan_posts_init() {
		$this->statusIDX['posts'] = wfIssues::statusStart(__('Scanning posts for URLs on a domain blocklist', 'wordfence'));
		$this->scanController->startStage(wfScanner::STAGE_CONTENT_SAFETY);
		$blogsToScan = self::getBlogsToScan('posts');
		$this->scanQueue = '';
		$wfdb = new wfDB();
		$this->hoover = new wordfenceURLHoover($this->apiKey, $this->wp_version);
		foreach ($blogsToScan as $blog) {
			$q1 = $wfdb->querySelect("select ID from " . $blog['table'] . " where post_type IN ('page', 'post') and post_status = 'publish'");
			foreach ($q1 as $idRow) {
				$this->scanQueue .= pack('LL', $blog['blog_id'], $idRow['ID']);
			}
		}
	}

	private function scan_posts_main() {
		global $wpdb;
		$wfdb = new wfDB();
		while (strlen($this->scanQueue) > 0) {
			$segment = substr($this->scanQueue, 0, 8);
			$this->scanQueue = substr($this->scanQueue, 8);
			$elem = unpack('Lblog/Lpost', $segment);
			$queueSize = strlen($this->scanQueue) / 8;
			if ($queueSize > 0 && $queueSize % 1000 == 0) {
				wordfence::status(2, 'info', sprintf(/* translators: Number of posts left to scan. */ __("Scanning posts with %d left to scan.", 'wordfence'), $queueSize));
			}

			$this->scanController->incrementSummaryItem(wfScanner::SUMMARY_SCANNED_POSTS);

			$blogID = $elem['blog'];
			$postID = $elem['post'];

			$blogs = self::getBlogsToScan('posts', $blogID);
			$blog = array_shift($blogs);

			$table = wfDB::blogTable('posts', $blogID);

			$row = $wfdb->querySingleRec("select ID, post_title, post_type, post_date, post_content from {$table} where ID = %d", $postID);
			$found = $this->hoover->hoover($blogID . '-' . $row['ID'], $row['post_title'] . ' ' . $row['post_content'], wordfenceURLHoover::standardExcludedHosts());
			$this->scanController->incrementSummaryItem(wfScanner::SUMMARY_SCANNED_URLS, $found);
			if (preg_match('/(?:<[\s\n\r\t]*script[\r\s\n\t]+.*>|<[\s\n\r\t]*meta.*refresh)/i', $row['post_title'])) {
				$this->addIssue(
					'postBadTitle',
					wfIssues::SEVERITY_HIGH,
					$row['ID'],
					md5($row['post_title']),
					__("Post title contains suspicious code", 'wordfence'),
					__("This post contains code that is suspicious. Please check the title of the post and confirm that the code in the title is not malicious.", 'wordfence'),
					array(
						'postID'       => $postID,
						'postTitle'    => $row['post_title'],
						'permalink'    => get_permalink($postID),
						'editPostLink' => get_edit_post_link($postID),
						'type'         => $row['post_type'],
						'postDate'     => $row['post_date'],
						'isMultisite'  => $blog['isMultisite'],
						'domain'       => $blog['domain'],
						'path'         => $blog['path'],
						'blog_id'      => $blog['blog_id']
					)
				);
			}

			$this->forkIfNeeded();
		}
	}

	private function scan_posts_finish() {
		global $wpdb;
		$wfdb = new wfDB();
		$this->status(2, 'info', __("Examining URLs found in posts we scanned for dangerous websites", 'wordfence'));
		$hooverResults = $this->hoover->getBaddies();
		$this->status(2, 'info', __("Done examining URLs", 'wordfence'));
		if ($this->hoover->errorMsg) {
			wfIssues::statusEndErr();
			throw new Exception($this->hoover->errorMsg);
		}
		$this->hoover->cleanup();
		$haveIssues = wfIssues::STATUS_SECURE;
		foreach ($hooverResults as $idString => $hresults) {
			$arr = explode('-', $idString);
			$blogID = $arr[0];
			$postID = $arr[1];
			$table = wfDB::blogTable('posts', $blogID);
			$blog = null;
			$post = null;
			foreach ($hresults as $result) {
				if ($result['badList'] != 'goog-malware-shavar' && $result['badList'] != 'googpub-phish-shavar' && $result['badList'] != 'wordfence-dbl') {
					continue; //A list type that may be new and the plugin has not been upgraded yet.
				}

				if ($blog === null) {
					$blogs = self::getBlogsToScan('posts', $blogID);
					$blog = array_shift($blogs);
				}

				if ($post === null) {
					$post = $wfdb->querySingleRec("select ID, post_title, post_type, post_date, post_content from {$table} where ID = %d", $postID);
					$type = $post['post_type'] ? $post['post_type'] : 'comment';
					$uctype = ucfirst($type);
					$postDate = $post['post_date'];
					$title = $post['post_title'];
					$contentMD5 = md5($post['post_content']);
				}

				if ($result['badList'] == 'goog-malware-shavar') {
					$shortMsg = sprintf(
					/* translators: 1. WordPress Post type. 2. URL. */
						__('%1$s contains a suspected malware URL: %2$s', 'wordfence'),
						$uctype,
						esc_html($title)
					);
					$longMsg = sprintf(
					/* translators: 1. WordPress Post type. 2. URL. 3. URL. */
						__('This %1$s contains a suspected malware URL listed on Google\'s list of malware sites. The URL is: %2$s - More info available at <a href="http://safebrowsing.clients.google.com/safebrowsing/diagnostic?site=%3$s&client=googlechrome&hl=en-US" target="_blank" rel="noopener noreferrer">Google Safe Browsing diagnostic page<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>.', 'wordfence'),
						esc_html($type),
						esc_html($result['URL']),
						urlencode($result['URL'])
					);
				} else if ($result['badList'] == 'googpub-phish-shavar') {
					$shortMsg = sprintf(/* translators: 1. WordPress Post type. 2. URL. */ __('%1$s contains a suspected phishing site URL: %2$s', 'wordfence'), $uctype, esc_html($title));
					$longMsg = sprintf(
					/* translators: 1. WordPress Post type. 2. URL. */
						__('This %1$s contains a URL that is a suspected phishing site that is currently listed on Google\'s list of known phishing sites. The URL is: %2$s', 'wordfence'),
						esc_html($type),
						esc_html($result['URL'])
					);
				} else if ($result['badList'] == 'wordfence-dbl') {
					$shortMsg = sprintf(/* translators: 1. WordPress Post type. 2. URL. */ __('%1$s contains a suspected malware URL: %2$s', 'wordfence'), $uctype, esc_html($title));
					$longMsg = sprintf(
					/* translators: 1. WordPress Post type. 2. URL. */
						__('This %1$s contains a URL that is currently listed on Wordfence\'s domain blocklist. The URL is: %2$s', 'wordfence'),
						esc_html($type),
						esc_html($result['URL'])
					);
				} else {
					//A list type that may be new and the plugin has not been upgraded yet.
					continue;
				}

				$this->status(2, 'info', sprintf(/* translators: Scan result description. */ __('Adding issue: %1$s', 'wordfence'), $shortMsg));
				if (is_multisite()) {
					switch_to_blog($blogID);
				}
				$ignoreP = $idString;
				$ignoreC = $idString . $contentMD5;
				$added = $this->addIssue('postBadURL', wfIssues::SEVERITY_HIGH, $ignoreP, $ignoreC, $shortMsg, $longMsg, array(
					'postID'       => $postID,
					'badURL'       => $result['URL'],
					'postTitle'    => $title,
					'type'         => $type,
					'uctype'       => $uctype,
					'permalink'    => get_permalink($postID),
					'editPostLink' => get_edit_post_link($postID),
					'postDate'     => $postDate,
					'isMultisite'  => $blog['isMultisite'],
					'domain'       => $blog['domain'],
					'path'         => $blog['path'],
					'blog_id'      => $blogID
				));
				if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) {
					$haveIssues = wfIssues::STATUS_PROBLEM;
				} else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) {
					$haveIssues = wfIssues::STATUS_IGNORED;
				}
				if (is_multisite()) {
					restore_current_blog();
				}
			}
		}
		wfIssues::statusEnd($this->statusIDX['posts'], $haveIssues);
		$this->scanController->completeStage(wfScanner::STAGE_CONTENT_SAFETY, $haveIssues);
		$this->scanQueue = '';
	}

	private function scan_comments_init() {
		$this->statusIDX['comments'] = wfIssues::statusStart(__('Scanning comments for URLs on a domain blocklist', 'wordfence'));
		$this->scanController->startStage(wfScanner::STAGE_CONTENT_SAFETY);
		$this->scanData = array();
		$this->scanQueue = '';
		$this->hoover = new wordfenceURLHoover($this->apiKey, $this->wp_version);
		$blogsToScan = self::getBlogsToScan('comments');
		$wfdb = new wfDB();
		foreach ($blogsToScan as $blog) {
			$q1 = $wfdb->querySelect("select comment_ID from " . $blog['table'] . " where comment_approved=1 and not comment_type = 'order_note'");
			foreach ($q1 as $idRow) {
				$this->scanQueue .= pack('LL', $blog['blog_id'], $idRow['comment_ID']);
			}
		}
	}

	private function scan_comments_main() {
		global $wpdb;
		$wfdb = new wfDB();
		while (strlen($this->scanQueue) > 0) {
			$segment = substr($this->scanQueue, 0, 8);
			$this->scanQueue = substr($this->scanQueue, 8);
			$elem = unpack('Lblog/Lcomment', $segment);
			$queueSize = strlen($this->scanQueue) / 8;
			if ($queueSize > 0 && $queueSize % 1000 == 0) {
				wordfence::status(2, 'info', sprintf(/* translators: Number of comments left to scan. */ __("Scanning comments with %d left to scan.", 'wordfence'), $queueSize));
			}

			$this->scanController->incrementSummaryItem(wfScanner::SUMMARY_SCANNED_COMMENTS);

			$blogID = $elem['blog'];
			$commentID = $elem['comment'];

			$table = wfDB::blogTable('comments', $blogID);

			$row = $wfdb->querySingleRec("select comment_ID, comment_date, comment_type, comment_author, comment_author_url, comment_content from {$table} where comment_ID=%d", $commentID);
			$found = $this->hoover->hoover($blogID . '-' . $row['comment_ID'], $row['comment_author_url'] . ' ' . $row['comment_author'] . ' ' . $row['comment_content'], wordfenceURLHoover::standardExcludedHosts());
			$this->scanController->incrementSummaryItem(wfScanner::SUMMARY_SCANNED_URLS, $found);
			$this->forkIfNeeded();
		}
	}

	private function scan_comments_finish() {
		$wfdb = new wfDB();
		$hooverResults = $this->hoover->getBaddies();
		if ($this->hoover->errorMsg) {
			wfIssues::statusEndErr();
			throw new Exception($this->hoover->errorMsg);
		}
		$this->hoover->cleanup();
		$haveIssues = wfIssues::STATUS_SECURE;
		foreach ($hooverResults as $idString => $hresults) {
			$arr = explode('-', $idString);
			$blogID = $arr[0];
			$commentID = $arr[1];
			$blog = null;
			$comment = null;
			foreach ($hresults as $result) {
				if ($result['badList'] != 'goog-malware-shavar' && $result['badList'] != 'googpub-phish-shavar' && $result['badList'] != 'wordfence-dbl') {
					continue; //A list type that may be new and the plugin has not been upgraded yet.
				}

				if ($blog === null) {
					$blogs = self::getBlogsToScan('comments', $blogID);
					$blog = array_shift($blogs);
				}

				if ($comment === null) {
					$comment = $wfdb->querySingleRec("select comment_ID, comment_date, comment_type, comment_author, comment_author_url, comment_content from " . $blog['table'] . " where comment_ID=%d", $commentID);
					$type = $comment['comment_type'] ? $comment['comment_type'] : 'comment';
					$uctype = ucfirst($type);
					$author = $comment['comment_author'];
					$date = $comment['comment_date'];
					$contentMD5 = md5($comment['comment_content'] . $comment['comment_author'] . $comment['comment_author_url']);
				}

				if ($result['badList'] == 'goog-malware-shavar') {
					$shortMsg = sprintf(
					/* translators: 1. WordPress post type. 2. WordPress author username. */
						__('%1$s with author %2$s contains a suspected malware URL.', 'wordfence'), $uctype, esc_html($author));
					$longMsg = sprintf(
					/* translators: 1. WordPress post type. 2. URL. 3. URL. */
						__('This %1$s contains a suspected malware URL listed on Google\'s list of malware sites. The URL is: %2$s - More info available at <a href="http://safebrowsing.clients.google.com/safebrowsing/diagnostic?site=%3$s&client=googlechrome&hl=en-US" target="_blank" rel="noopener noreferrer">Google Safe Browsing diagnostic page<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>.', 'wordfence'),
						esc_html($type),
						esc_html($result['URL']),
						urlencode($result['URL'])
					);
				} else if ($result['badList'] == 'googpub-phish-shavar') {
					$shortMsg = sprintf(/* translators: WordPress post type. */ __("%s contains a suspected phishing site URL.", 'wordfence'), $uctype);
					$longMsg = sprintf(
					/* translators: 1. WordPress post type. 2. URL. */
						__('This %1$s contains a URL that is a suspected phishing site that is currently listed on Google\'s list of known phishing sites. The URL is: %2$s', 'wordfence'),
						esc_html($type),
						esc_html($result['URL'])
					);
				} else if ($result['badList'] == 'wordfence-dbl') {
					$shortMsg = sprintf(/* translators: URL. */ __("%s contains a suspected malware URL.", 'wordfence'), $uctype);
					$longMsg = sprintf(
					/* translators: 1. WordPress post type. 2. URL. */
						__('This %1$s contains a URL that is currently listed on Wordfence\'s domain blocklist. The URL is: %2$s', 'wordfence'),
						esc_html($type),
						esc_html($result['URL'])
					);
				}

				if (is_multisite()) {
					switch_to_blog($blogID);
				}

				$ignoreP = $idString;
				$ignoreC = $idString . '-' . $contentMD5;
				$added = $this->addIssue('commentBadURL', wfIssues::SEVERITY_LOW, $ignoreP, $ignoreC, $shortMsg, $longMsg, array(
					'commentID'       => $commentID,
					'badURL'          => $result['URL'],
					'author'          => $author,
					'type'            => $type,
					'uctype'          => $uctype,
					'editCommentLink' => get_edit_comment_link($commentID),
					'commentDate'     => $date,
					'isMultisite'     => $blog['isMultisite'],
					'domain'          => $blog['domain'],
					'path'            => $blog['path'],
					'blog_id'         => $blogID
				));
				if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) {
					$haveIssues = wfIssues::STATUS_PROBLEM;
				} else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) {
					$haveIssues = wfIssues::STATUS_IGNORED;
				}

				if (is_multisite()) {
					restore_current_blog();
				}
			}
		}
		wfIssues::statusEnd($this->statusIDX['comments'], $haveIssues);
		$this->scanController->completeStage(wfScanner::STAGE_CONTENT_SAFETY, $haveIssues);
		$this->scanQueue = '';
	}

	public function isBadComment($author, $email, $url, $IP, $content) {
		$content = $author . ' ' . $email . ' ' . $url . ' ' . $IP . ' ' . $content;
		$cDesc = '';
		if ($author) {
			$cDesc = sprintf(/* translators: WordPress username. */ __("Author: %s", 'wordfence'), $author) . ' ';
		}
		if ($email) {
			$cDesc .= sprintf(/* translators: Email address. */ __("Email: %s", 'wordfence'), $email) . ' ';
		}
		$cDesc .= sprintf(/* translators: IP address. */ __("Source IP: %s", 'wordfence'), $IP) . ' ';
		$this->status(2, 'info', sprintf(/* translators: Comment description. */ __("Scanning comment with %s", 'wordfence'), $cDesc));

		$h = new wordfenceURLHoover($this->apiKey, $this->wp_version);
		$h->hoover(1, $content, wordfenceURLHoover::standardExcludedHosts());
		$hooverResults = $h->getBaddies();
		if ($h->errorMsg) {
			return false;
		}
		$h->cleanup();
		if (sizeof($hooverResults) > 0 && isset($hooverResults[1])) {
			$hresults = $hooverResults[1];
			foreach ($hresults as $result) {
				if ($result['badList'] == 'goog-malware-shavar') {
					$this->status(2, 'info', sprintf(/* translators: Comment description. */ __("Marking comment as spam for containing a malware URL. Comment has %s", 'wordfence'), $cDesc));
					return true;
				} else if ($result['badList'] == 'googpub-phish-shavar') {
					$this->status(2, 'info', sprintf(/* translators: Comment description. */ __("Marking comment as spam for containing a phishing URL. Comment has %s", 'wordfence'), $cDesc));
					return true;
				} else if ($result['badList'] == 'wordfence-dbl') {
					$this->status(2, 'info', sprintf(/* translators: Comment description. */ __("Marking comment as spam for containing a malware URL. Comment has %s", 'wordfence'), $cDesc));
				} else {
					//A list type that may be new and the plugin has not been upgraded yet.
					continue;
				}
			}
		}
		$this->status(2, 'info', sprintf(/* translators: Comment description. */ __("Scanned comment with %s", 'wordfence'), $cDesc));
		return false;
	}

	public static function getBlogsToScan($table, $withID = null) {
		$wfdb = new wfDB();
		global $wpdb;
		$blogsToScan = array();
		if (is_multisite()) {
			if ($withID === null) {
				$q1 = $wfdb->querySelect("select blog_id, domain, path from {$wpdb->blogs} where deleted=0 order by blog_id asc");
			} else {
				$q1 = $wfdb->querySelect("select blog_id, domain, path from {$wpdb->blogs} where deleted=0 and blog_id = %d", $withID);
			}

			foreach ($q1 as $row) {
				$row['isMultisite'] = true;
				$row['table'] = wfDB::blogTable($table, $row['blog_id']);
				$blogsToScan[] = $row;
			}
		} else {
			$blogsToScan[] = array(
				'isMultisite' => false,
				'table'       => wfDB::networkTable($table),
				'blog_id'     => '1',
				'domain'      => '',
				'path'        => '',
			);
		}
		return $blogsToScan;
	}

	private function highestCap($caps) {
		foreach (array('administrator', 'editor', 'author', 'contributor', 'subscriber') as $cap) {
			if (empty($caps[$cap]) === false && $caps[$cap]) {
				return $cap;
			}
		}
		return '';
	}

	private function isEditor($caps) {
		foreach (array('contributor', 'author', 'editor', 'administrator') as $cap) {
			if (empty($caps[$cap]) === false && $caps[$cap]) {
				return true;
			}
		}
		return false;
	}

	private function scan_passwds_init() {
		$this->statusIDX['passwds'] = wfIssues::statusStart(__('Scanning for weak passwords', 'wordfence'));
		$this->scanController->startStage(wfScanner::STAGE_PASSWORD_STRENGTH);
		global $wpdb;
		$counter = 0;
		$query = "select ID from " . $wpdb->users;
		$dbh = $wpdb->dbh;
		$useMySQLi = wfUtils::useMySQLi();
		if ($useMySQLi) { //If direct-access MySQLi is available, we use it to minimize the memory footprint instead of letting it fetch everything into an array first
			$result = $dbh->query($query);
			if (!is_object($result)) {
				return array(
					'errorMsg' => __("We were unable to generate the user list for your password check.", 'wordfence'),
				);
			}
			while ($rec = $result->fetch_assoc()) {
				$this->userPasswdQueue .= pack('N', $rec['ID']);
				$counter++;
			}
		} else {
			$res1 = $wpdb->get_results($query, ARRAY_A);
			foreach ($res1 as $rec) {
				$this->userPasswdQueue .= pack('N', $rec['ID']);
				$counter++;
			}
		}
		wordfence::status(2, 'info', sprintf(
		/* translators: Number of users. */
			_n("Starting password strength check on %d user.", "Starting password strength check on %d users.", $counter, 'wordfence'), $counter));
	}

	private function scan_passwds_main() {
		while (strlen($this->userPasswdQueue) > 3) {
			$usersLeft = strlen($this->userPasswdQueue) / 4; //4 byte ints
			if ($usersLeft % 100 == 0) {
				wordfence::status(2, 'info', sprintf(
				/* translators: Number of users. */
					_n(
						"Total of %d users left to process in password strength check.",
						"Total of %d users left to process in password strength check.",
						$usersLeft,
						'wordfence'),
					$usersLeft
				));
			}
			$userID = unpack('N', substr($this->userPasswdQueue, 0, 4));
			$userID = $userID[1];
			$this->userPasswdQueue = substr($this->userPasswdQueue, 4);
			$state = $this->scanUserPassword($userID);
			$this->scanController->incrementSummaryItem(wfScanner::SUMMARY_SCANNED_USERS);
			if ($state == wfIssues::STATUS_PROBLEM) {
				$this->passwdHasIssues = wfIssues::STATUS_PROBLEM;
			} else if ($this->passwdHasIssues != wfIssues::STATUS_PROBLEM && $state == wfIssues::STATUS_IGNORED) {
				$this->passwdHasIssues = wfIssues::STATUS_IGNORED;
			}

			$this->forkIfNeeded();
		}
	}

	private function scan_passwds_finish() {
		wfIssues::statusEnd($this->statusIDX['passwds'], $this->passwdHasIssues);
		$this->scanController->completeStage(wfScanner::STAGE_PASSWORD_STRENGTH, $this->passwdHasIssues);
	}

	public function scanUserPassword($userID) {
		$suspended = wp_suspend_cache_addition();
		wp_suspend_cache_addition(true);
		require_once(ABSPATH . 'wp-includes/class-phpass.php');
		$passwdHasher = new PasswordHash(8, TRUE);
		$userDat = get_userdata($userID);
		if ($userDat === false) {
			wordfence::status(2, 'error', sprintf(/* translators: WordPress user ID. */ __("Could not get username for user with ID %d when checking password strength.", 'wordfence'), $userID));
			return false;
		}
		//user_login
		$this->status(4, 'info', sprintf(
			/* translators: 1. WordPress username. 2. WordPress user ID. */
				__('Checking password strength of user \'%1$s\' with ID %2$d', 'wordfence'),
				$userDat->user_login,
				$userID
			) . (function_exists('memory_get_usage') ? " (Mem:" . sprintf('%.1f', memory_get_usage(true) / (1024 * 1024)) . "M)" : ""));
		$highCap = $this->highestCap($userDat->wp_capabilities);
		if ($this->isEditor($userDat->wp_capabilities)) {
			$shortMsg = sprintf(
			/* translators: 1. WordPress username. 2. WordPress capability. */
				__('User "%1$s" with "%2$s" access has an easy password.', 'wordfence'),
				esc_html($userDat->user_login),
				esc_html($highCap)
			);
			$longMsg = sprintf(
			/* translators: WordPress capability. */
				__("A user with the a role of '%s' has a password that is easy to guess. Please change this password yourself or ask the user to change it.", 'wordfence'),
				esc_html($highCap)
			);
			$level = wfIssues::SEVERITY_CRITICAL;
			$words = $this->dictWords;
		} else {
			$shortMsg = sprintf(
			/* translators: WordPress username. */
				__("User \"%s\" with 'subscriber' access has a very easy password.", 'wordfence'), esc_html($userDat->user_login));
			$longMsg = __("A user with 'subscriber' access has a password that is very easy to guess. Please either change it or ask the user to change their password.", 'wordfence');
			$level = wfIssues::SEVERITY_HIGH;
			$words = array($userDat->user_login);
		}
		$haveIssues = wfIssues::STATUS_SECURE;
		for ($i = 0; $i < sizeof($words); $i++) {
			if ($passwdHasher->CheckPassword($words[$i], $userDat->user_pass)) {
				$this->status(2, 'info', sprintf(/* translators: Scan result description. */ __('Adding issue %s', 'wordfence'), $shortMsg));
				$added = $this->addIssue('easyPassword', $level, $userDat->ID, $userDat->ID . '-' . $userDat->user_pass, $shortMsg, $longMsg, array(
					'ID'           => $userDat->ID,
					'user_login'   => $userDat->user_login,
					'user_email'   => $userDat->user_email,
					'first_name'   => $userDat->first_name,
					'last_name'    => $userDat->last_name,
					'editUserLink' => wfUtils::editUserLink($userDat->ID)
				));
				if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) {
					$haveIssues = wfIssues::STATUS_PROBLEM;
				} else if ($haveIssues != wfIssues::STATUS_SECURE && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) {
					$haveIssues = wfIssues::STATUS_IGNORED;
				}
				break;
			}
		}
		$this->status(4, 'info', sprintf(/* translators: WordPress username. */ __("Completed checking password strength of user '%s'", 'wordfence'), $userDat->user_login));
		wp_suspend_cache_addition($suspended);
		return $haveIssues;
	}

	/*
	private function scan_sitePages(){
		if(is_multisite()){ return; } //Multisite not supported by this function yet
		$this->statusIDX['sitePages'] = wordfence::statusStart("Scanning externally for malware");
		$resp = wp_remote_get(site_url());
		if(is_array($resp) && isset($resp['body']) && strlen($rep['body']) > 0){
			$this->hoover = new wordfenceURLHoover($this->apiKey, $this->wp_version);
			$this->hoover->hoover(1, $rep['body']);
			$hooverResults = $this->hoover->getBaddies();
			if($this->hoover->errorMsg){
				wordfence::statusEndErr();
				throw new Exception($this->hoover->errorMsg);
			}
			$badURLs = array();
			foreach($hooverResults as $idString => $hresults){
				foreach($hresults as $result){
					if(! in_array($result['URL'], $badURLs)){
						$badURLs[] = $result['URL'];
					}
				}
			}
			if(sizeof($badURLs) > 0){
				$this->addIssue('badSitePage', 1, 'badSitePage1', 'badSitePage1', "Your home page contains a malware URL");
			}
		}
	}
	*/
	private function scan_diskSpace() {
		$this->statusIDX['diskSpace'] = wfIssues::statusStart(__('Scanning to check available disk space', 'wordfence'));
		$this->scanController->startStage(wfScanner::STAGE_SERVER_STATE);
		wfUtils::errorsOff();
		$total = function_exists('disk_total_space')?@disk_total_space('.'):false;
		$free = function_exists('disk_free_space')?@disk_free_space('.'):false; //Normally false if unreadable but can return 0 on some hosts even when there's space available
		wfUtils::errorsOn();
		if (!$total || !$free) {
			$this->status(2, 'info', __('Unable to access available disk space information', 'wordfence'));
			wfIssues::statusEnd($this->statusIDX['diskSpace'], wfIssues::STATUS_SECURE);
			$this->scanController->completeStage(wfScanner::STAGE_SERVER_STATE, wfIssues::STATUS_SECURE);
			return;
		}


		$this->status(2, 'info', sprintf(
		/* translators: 1. Number of bytes. 2. Number of bytes. */
			__('Total disk space: %1$s -- Free disk space: %2$s', 'wordfence'),
			wfUtils::formatBytes($total),
			wfUtils::formatBytes($free)
		));
		$freeMegs = round($free / 1024 / 1024, 2);
		$this->status(2, 'info', sprintf(/* translators: Number of bytes. */ __('The disk has %s MB available', 'wordfence'), $freeMegs));
		if ($freeMegs < 5) {
			$level = wfIssues::SEVERITY_CRITICAL;
		} else if ($freeMegs < 20) {
			$level = wfIssues::SEVERITY_HIGH;
		} else {
			wfIssues::statusEnd($this->statusIDX['diskSpace'], wfIssues::STATUS_SECURE);
			$this->scanController->completeStage(wfScanner::STAGE_SERVER_STATE, wfIssues::STATUS_SECURE);
			return;
		}
		$haveIssues = wfIssues::STATUS_SECURE;
		$added = $this->addIssue('diskSpace',
			$level,
			'diskSpace',
			'diskSpace' . $level,
			sprintf(/* translators: Number of bytes. */ __('You have %s disk space remaining', 'wordfence'), wfUtils::formatBytes($free)),
			sprintf(/* translators: Number of bytes. */ __('You only have %s of your disk space remaining. Please free up disk space or your website may stop serving requests.', 'wordfence'), wfUtils::formatBytes($free)),
			array('spaceLeft' => wfUtils::formatBytes($free))
		);
		if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) {
			$haveIssues = wfIssues::STATUS_PROBLEM;
		} else if ($haveIssues != wfIssues::STATUS_SECURE && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) {
			$haveIssues = wfIssues::STATUS_IGNORED;
		}
		wfIssues::statusEnd($this->statusIDX['diskSpace'], $haveIssues);
		$this->scanController->completeStage(wfScanner::STAGE_SERVER_STATE, $haveIssues);
	}

	private function scan_wafStatus() {
		$this->statusIDX['wafStatus'] = wfIssues::statusStart(__('Checking Web Application Firewall status', 'wordfence'));
		$this->scanController->startStage(wfScanner::STAGE_SERVER_STATE);

		$haveIssues = wfIssues::STATUS_SECURE;
		$added = false;
		$firewall = new wfFirewall();
		if (wfConfig::get('waf_status') !== $firewall->firewallMode() && $firewall->firewallMode() == wfFirewall::FIREWALL_MODE_DISABLED) {
			$added = $this->addIssue('wafStatus',
				wfIssues::SEVERITY_CRITICAL,
				'wafStatus',
				'wafStatus' . $firewall->firewallMode(),
				__('Web Application Firewall is disabled', 'wordfence'),
				sprintf(/* translators: Support URL. */ __('Wordfence\'s Web Application Firewall has been unexpectedly disabled. If you see a notice at the top of the Wordfence admin pages that says "The Wordfence Web Application Firewall cannot run," click the link in that message to rebuild the configuration. If this does not work, you may need to fix file permissions. <a href="%s" target="_blank" rel="noopener noreferrer">More Details<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_RESULT_WAF_DISABLED)),
				array('wafStatus' => $firewall->firewallMode(), 'wafStatusDisplay' => $firewall->displayText())
			);
		}

		if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) {
			$haveIssues = wfIssues::STATUS_PROBLEM;
		} else if ($haveIssues != wfIssues::STATUS_SECURE && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) {
			$haveIssues = wfIssues::STATUS_IGNORED;
		}
		wfIssues::statusEnd($this->statusIDX['wafStatus'], $haveIssues);
		$this->scanController->completeStage(wfScanner::STAGE_SERVER_STATE, $haveIssues);
	}

	private function scan_oldVersions_init() {
		$this->statusIDX['oldVersions'] = wfIssues::statusStart(__("Scanning for old themes, plugins and core files", 'wordfence'));
		$this->scanController->startStage(wfScanner::STAGE_VULNERABILITY_SCAN);

		$this->updateCheck = new wfUpdateCheck();
		$this->updateCheck->checkCoreVulnerabilities();
		$this->updateCheck->checkPluginVulnerabilities();
		$this->updateCheck->checkThemeVulnerabilities();
		$this->updateCheck->checkAllUpdates(!$this->isFullScan());

		foreach ($this->updateCheck->getPluginSlugs() as $slug) {
			$this->pluginRepoStatus[$slug] = false;
		}

		//Strip plugins that have a pending update
		if (count($this->updateCheck->getPluginUpdates()) > 0) {
			foreach ($this->updateCheck->getPluginUpdates() as $plugin) {
				if (!empty($plugin['slug'])) {
					unset($this->pluginRepoStatus[$plugin['slug']]);
				}
			}
		}
	}

	private function scan_oldVersions_main() {
		if (!$this->isFullScan()) {
			return;
		}

		if (!function_exists('plugins_api')) {
			require_once(ABSPATH . 'wp-admin/includes/plugin-install.php');
		}

		foreach ($this->pluginRepoStatus as $slug => $status) {
			if ($status === false) {
				try {
					$result = plugins_api('plugin_information', array(
						'slug'   => $slug,
						'fields' => array(
							'short_description' => false,
							'description'       => false,
							'sections'          => false,
							'tested'            => true,
							'requires'          => true,
							'rating'            => false,
							'ratings'           => false,
							'downloaded'        => false,
							'downloadlink'      => false,
							'last_updated'      => true,
							'added'             => false,
							'tags'              => false,
							'compatibility'     => true,
							'homepage'          => true,
							'versions'          => false,
							'donate_link'       => false,
							'reviews'           => false,
							'banners'           => false,
							'icons'             => false,
							'active_installs'   => false,
							'group'             => false,
							'contributors'      => false,
						),
					));
					unset($result->versions);
					unset($result->screenshots);
					$this->pluginRepoStatus[$slug] = $result;
				}
				catch (Exception $e) {
					error_log(sprintf('Caught exception while attempting to refresh update status for slug %s: %s', $slug, $e->getMessage()));
					$this->pluginRepoStatus[$slug] = false;
					wfConfig::set(wfUpdateCheck::LAST_UPDATE_CHECK_ERROR_KEY, sprintf('%s [%s]', $e->getMessage(), $slug), false);
					wfConfig::set(wfUpdateCheck::LAST_UPDATE_CHECK_ERROR_SLUG_KEY, $slug, false);
				}
				catch (Throwable $t) {
					error_log(sprintf('Caught error while attempting to refresh update status for slug %s: %s', $slug, $t->getMessage()));
					$this->pluginRepoStatus[$slug] = false;
					wfConfig::set(wfUpdateCheck::LAST_UPDATE_CHECK_ERROR_KEY, sprintf('%s [%s]', $t->getMessage(), $slug), false);
					wfConfig::set(wfUpdateCheck::LAST_UPDATE_CHECK_ERROR_SLUG_KEY, $slug, false);
				}

				$this->forkIfNeeded();
			}
		}
	}

	private function scan_oldVersions_finish() {
		$haveIssues = wfIssues::STATUS_SECURE;

		if (!$this->isFullScan()) {
			$this->deleteNewIssues(array('wfUpgradeError', 'wfUpgrade', 'wfPluginUpgrade', 'wfThemeUpgrade'));
		}
		
		if ($lastError = wfConfig::get(wfUpdateCheck::LAST_UPDATE_CHECK_ERROR_KEY)) {
			$lastSlug = wfConfig::get(wfUpdateCheck::LAST_UPDATE_CHECK_ERROR_SLUG_KEY);
			$longMsg = sprintf(/* translators: error message. */ __("The update check performed during the scan encountered an error: %s", 'wordfence'), esc_html($lastError));
			if ($lastSlug === false) {
				$longMsg .= ' ' . __('Wordfence cannot detect if the installed plugins and themes are up to date. This might be caused by a PHP compatibility issue in one or more plugins/themes.', 'wordfence');
			}
			else {
				$longMsg .= ' ' . __('Wordfence cannot detect if this plugin/theme is up to date. This might be caused by a PHP compatibility issue in the plugin.', 'wordfence');
			}
			$longMsg .= ' ' . sprintf(
				/* translators: Support URL. */
					__('<a href="%s" target="_blank" rel="noopener noreferrer">Get more information.<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_RESULT_UPDATE_CHECK_FAILED));
			
			$ignoreKey = ($lastSlug === false ? 'wfUpgradeErrorGeneral' : sprintf('wfUpgradeError-%s', $lastSlug));
			
			$added = $this->addIssue(
				'wfUpgradeError',
				wfIssues::SEVERITY_MEDIUM,
				$ignoreKey,
				$ignoreKey,
				($lastSlug === false ? __("Update Check Encountered Error", 'wordfence') : sprintf(/* translators: plugin/theme slug. */ __("Update Check Encountered Error on '%s'", 'wordfence'), esc_html($lastSlug))),
				$longMsg,
				array()
			);
			if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) {
				$haveIssues = wfIssues::STATUS_PROBLEM;
			}
			else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) {
				$haveIssues = wfIssues::STATUS_IGNORED;
			}
		}

		// WordPress core updates needed
		if ($this->updateCheck->needsCoreUpdate()) {
			$updateVersion = $this->updateCheck->getCoreUpdateVersion();
			$severity = wfIssues::SEVERITY_HIGH;
			$shortMsg = __("Your WordPress version is out of date", 'wordfence');
			$longMsg = sprintf(/* translators: Software version. */ __("WordPress version %s is now available. Please upgrade immediately to get the latest security updates from WordPress.", 'wordfence'), esc_html($updateVersion));
			
			$currentVulnerable = $this->updateCheck->isCoreVulnerable('current');
			$edgeVulnerable = $this->updateCheck->isCoreVulnerable('edge');
			if ($this->updateCheck->coreUpdatePatchAvailable()) { //Non-edge branch with available backported update
				$updateVersion = $this->updateCheck->getCoreUpdatePatchVersion();
				$patchVulnerable = $this->updateCheck->isCoreVulnerable('patch');
				if (!$currentVulnerable && !$patchVulnerable) { //Non-edge branch, neither the current version or patch version have a known vulnerability
					$severity = wfIssues::SEVERITY_MEDIUM;
					$longMsg = sprintf(/* translators: Software version. */ __("WordPress version %s is now available for your site's current branch. Please upgrade immediately to get the latest fixes and compatibility updates from WordPress.", 'wordfence'), esc_html($updateVersion));
				}
				else if ($currentVulnerable && !$patchVulnerable) { //Non-edge branch, current version is vulnerable but patch version is not
					$longMsg = sprintf(/* translators: Software version. */ __("WordPress version %s is now available for your site's current branch. Please upgrade immediately to get the latest security updates from WordPress.", 'wordfence'), esc_html($updateVersion));
					//keep existing $severity already set
				}
				else { //Non-edge branch, unpatched vulnerability -- shift recommendation from patch update to edge update
					$updateVersion = $this->updateCheck->getCoreUpdateVersion();
					//keep existing $severity and $longMsg already set
				}
			}
			else { //Edge branch or newest version of an older branch
				if (!$currentVulnerable && !$edgeVulnerable) { //Neither the current version or edge version have a known vulnerability
					if ($this->updateCheck->getCoreEarlierBranch()) { //Update available on the edge branch, but the older branch in current use is up-to-date for its patches
						$severity = wfIssues::SEVERITY_LOW;
					}
					else {
						$severity = wfIssues::SEVERITY_MEDIUM;
					}
					$longMsg = sprintf(/* translators: Software version. */ __("WordPress version %s is now available. Please upgrade immediately to get the latest fixes and compatibility updates from WordPress.", 'wordfence'), esc_html($updateVersion));
				}
				//else vulnerability fixed or unpatched vulnerability, keep the existing values already set
			}
			
			$longMsg .= ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_RESULT_CORE_UPGRADE) . '" target="_blank" rel="noopener noreferrer">' . esc_html__('Learn more', 'wordfence') . '<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>';
			
			if ($updateVersion) {
				$added = $this->addIssue(
					'wfUpgrade',
					$severity,
					'wfUpgrade' . $updateVersion,
					'wfUpgrade' . $updateVersion,
					$shortMsg,
					$longMsg,
					array(
						'currentVersion' => $this->wp_version,
						'newVersion'     => $updateVersion,
					)
				);
				
				if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) {
					$haveIssues = wfIssues::STATUS_PROBLEM;
				} else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) {
					$haveIssues = wfIssues::STATUS_IGNORED;
				}
			}
		}

		$allPlugins = $this->updateCheck->getAllPlugins();

		// Plugin updates needed
		if (count($this->updateCheck->getPluginUpdates()) > 0) {
			foreach ($this->updateCheck->getPluginUpdates() as $plugin) {
				$severity = wfIssues::SEVERITY_CRITICAL;
				if (isset($plugin['vulnerable'])) {
					if (!$plugin['vulnerable']) {
						$severity = wfIssues::SEVERITY_MEDIUM;
					}
				}
				$key = 'wfPluginUpgrade' . ' ' . $plugin['pluginFile'] . ' ' . $plugin['newVersion'] . ' ' . $plugin['Version'];
				$shortMsg = sprintf(
				/* translators: 1. Plugin name. 2. Software version. 3. Software version. */
					__('The Plugin "%1$s" needs an upgrade (%2$s -> %3$s).', 'wordfence'),
					empty($plugin['Name']) ? $plugin['pluginFile'] : $plugin['Name'],
					$plugin['Version'],
					$plugin['newVersion']
				);
				$added = $this->addIssue('wfPluginUpgrade', $severity, $key, $key, $shortMsg,
					sprintf(
						__("You need to upgrade \"%s\" to the newest version to ensure you have any security fixes the developer has released.", 'wordfence'),
						empty($plugin['Name']) ? $plugin['pluginFile'] : $plugin['Name']
					), $plugin);
				if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) {
					$haveIssues = wfIssues::STATUS_PROBLEM;
				} else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) {
					$haveIssues = wfIssues::STATUS_IGNORED;
				}

				if (isset($plugin['slug'])) {
					unset($allPlugins[$plugin['slug']]);
				}
			}
		}

		// Theme updates needed
		if (count($this->updateCheck->getThemeUpdates()) > 0) {
			foreach ($this->updateCheck->getThemeUpdates() as $theme) {
				$severity = wfIssues::SEVERITY_CRITICAL;
				if (isset($theme['vulnerable'])) {
					if (!$theme['vulnerable']) {
						$severity = wfIssues::SEVERITY_MEDIUM;
					}
				}
				$key = 'wfThemeUpgrade' . ' ' . $theme['Name'] . ' ' . $theme['version'] . ' ' . $theme['newVersion'];
				$shortMsg = sprintf(
				/* translators: 1. Theme name. 2. Software version. 3. Software version. */
					__('The Theme "%1$s" needs an upgrade (%2$s -> %3$s).', 'wordfence'),
					$theme['Name'],
					$theme['version'],
					$theme['newVersion']
				);
				$added = $this->addIssue('wfThemeUpgrade', $severity, $key, $key, $shortMsg, sprintf(
				/* translators: Theme name. */
					__("You need to upgrade \"%s\" to the newest version to ensure you have any security fixes the developer has released.", 'wordfence'),
					esc_html($theme['Name'])
				), $theme);
				if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) {
					$haveIssues = wfIssues::STATUS_PROBLEM;
				} else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) {
					$haveIssues = wfIssues::STATUS_IGNORED;
				}
			}
		}

		if ($this->isFullScan()) {
			//Abandoned plugins
			foreach ($this->pluginRepoStatus as $slug => $status) {
				if ($status !== false && !is_wp_error($status) && ((is_object($status) && property_exists($status, 'last_updated')) || (is_array($status) && array_key_exists('last_updated', $status)))) {
					$statusArray = (array) $status;
					$hasVersion = array_key_exists('version', $statusArray);
					if (!$hasVersion) {
						$statusArray['version'] = null;
						wordfence::status(3, 'error', "Unable to determine version for plugin $slug");
					}
					
					if (array_key_exists('last_updated', $statusArray) && 
						is_string($statusArray['last_updated']) && 
						($lastUpdateTimestamp = strtotime($statusArray['last_updated'])) && 
						(time() - $lastUpdateTimestamp) > 63072000 /* ~2 years */) {
						
						try {
							$statusArray['dateUpdated'] = wfUtils::formatLocalTime(get_option('date_format'), $lastUpdateTimestamp);
						}
						catch (Exception $e) { //DateMalformedStringException in PHP >= 8.3, Exception previously
							wordfence::status(3, 'error', sprintf(
							/* translators: 1. Plugin slug. 2. Malformed date string. */
								__('Encountered bad date string for plugin "%s" in abandoned plugin check: %s', 'wordfence'), 
								$slug, 
								$statusArray['last_updated']));
							continue;
						}
						$severity = wfIssues::SEVERITY_MEDIUM;
						$statusArray['abandoned'] = true;
						$statusArray['vulnerable'] = false;
						$vulnerable = $hasVersion && $this->updateCheck->isPluginVulnerable($slug, $statusArray['version']);
						if ($vulnerable) {
							$severity = wfIssues::SEVERITY_CRITICAL;
							$statusArray['vulnerable'] = true;
							if (is_array($vulnerable) && isset($vulnerable['vulnerabilityLink'])) { $statusArray['vulnerabilityLink'] = $vulnerable['vulnerabilityLink']; }
							if (is_array($vulnerable) && isset($vulnerable['cvssScore'])) { $statusArray['cvssScore'] = $vulnerable['cvssScore']; }
							if (is_array($vulnerable) && isset($vulnerable['cvssVector'])) { $statusArray['cvssVector'] = $vulnerable['cvssVector']; }
						}

						if (isset($allPlugins[$slug]) && isset($allPlugins[$slug]['wpURL'])) {
							$statusArray['wpURL'] = $allPlugins[$slug]['wpURL'];
						}

						$key = "wfPluginAbandoned {$slug} {$statusArray['version']}";
						if (isset($statusArray['tested'])) {
							$shortMsg = sprintf(
							/* translators: 1. Plugin name. 2. Software version. 3. Software version.  */
								__('The Plugin "%1$s" appears to be abandoned (updated %2$s, tested to WP %3$s).', 'wordfence'),
								(empty($statusArray['name']) ? $slug : $statusArray['name']),
								$statusArray['dateUpdated'],
								$statusArray['tested']
							);
							$longMsg = sprintf(
							/* translators: 1. Plugin name. 2. Software version. */
								__('It was last updated %1$s ago and tested up to WordPress %2$s.', 'wordfence'),
								wfUtils::makeTimeAgo(time() - $lastUpdateTimestamp),
								esc_html($statusArray['tested'])
							);
						} else {
							$shortMsg = sprintf(
							/* translators: 1. Plugin name. 2. Software version. */
								__('The Plugin "%1$s" appears to be abandoned (updated %2$s).', 'wordfence'),
								(empty($statusArray['name']) ? $slug : $statusArray['name']),
								$statusArray['dateUpdated']
							);
							$longMsg = sprintf(
							/* translators: Time duration. */
								__('It was last updated %s ago.', 'wordfence'),
								wfUtils::makeTimeAgo(time() - $lastUpdateTimestamp)
							);
						}

						if ($statusArray['vulnerable']) {
							$longMsg .= ' ' . __('It has unpatched security issues and may have compatibility problems with the current version of WordPress.', 'wordfence');
						} else {
							$longMsg .= ' ' . __('It may have compatibility problems with the current version of WordPress or unknown security issues.', 'wordfence');
						}
						$longMsg .= ' ' . sprintf(
							/* translators: Support URL. */
								__('<a href="%s" target="_blank" rel="noopener noreferrer">Get more information.<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_RESULT_PLUGIN_ABANDONED));
						$added = $this->addIssue('wfPluginAbandoned', $severity, $key, $key, $shortMsg, $longMsg, $statusArray);
						if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) {
							$haveIssues = wfIssues::STATUS_PROBLEM;
						} else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) {
							$haveIssues = wfIssues::STATUS_IGNORED;
						}

						unset($allPlugins[$slug]);
					}
				} else if ($status !== false && is_wp_error($status) && isset($status->errors['plugins_api_failed'])) { //The plugin does not exist in the wp.org repo
					$knownFiles = $this->getKnownFilesLoader()->getKnownFiles();
					if (isset($knownFiles['status']) && is_array($knownFiles['status']) && isset($knownFiles['status']['plugins']) && is_array($knownFiles['status']['plugins'])) {
						$requestedPlugins = $this->getPlugins();
						foreach ($requestedPlugins as $key => $data) {
							if ($data['ShortDir'] == $slug && isset($knownFiles['status']['plugins'][$slug]) && $knownFiles['status']['plugins'][$slug] == 'r') { //It existed in the repo at some point and was removed
								$pluginFile = wfUtils::getPluginBaseDir() . $key;
								$pluginData = get_plugin_data($pluginFile);
								$pluginData['wpRemoved'] = true;
								$pluginData['vulnerable'] = false;
								$vulnerable = $this->updateCheck->isPluginVulnerable($slug, $pluginData['Version']);
								if ($vulnerable) {
									$pluginData['vulnerable'] = true;
									if (is_array($vulnerable) && isset($vulnerable['vulnerabilityLink'])) { $statusArray['vulnerabilityLink'] = $vulnerable['vulnerabilityLink']; }
									if (is_array($vulnerable) && isset($vulnerable['cvssScore'])) { $statusArray['cvssScore'] = $vulnerable['cvssScore']; }
									if (is_array($vulnerable) && isset($vulnerable['cvssVector'])) { $statusArray['cvssVector'] = $vulnerable['cvssVector']; }
								}

								$key = "wfPluginRemoved {$slug} {$pluginData['Version']}";
								$shortMsg = sprintf(
								/* translators: Plugin name. */
									__('The Plugin "%s" has been removed from wordpress.org but is still installed on your site.', 'wordfence'), (empty($pluginData['Name']) ? $slug : $pluginData['Name']));
								if ($pluginData['vulnerable']) {
									$longMsg = __('It has unpatched security issues and may have compatibility problems with the current version of WordPress.', 'wordfence');
								} else {
									$longMsg = __('Your site is still using this plugin, but it is not currently available on wordpress.org. Plugins can be removed from wordpress.org for various reasons. This can include benign issues like a plugin author discontinuing development or moving the plugin distribution to their own site, but some might also be due to security issues. In any case, future updates may or may not be available, so it is worth investigating the cause and deciding whether to temporarily or permanently replace or remove the plugin.', 'wordfence');
								}
								$longMsg .= ' ' . sprintf(
									/* translators: Support URL. */
										__('<a href="%s" target="_blank" rel="noopener noreferrer">Get more information.<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_RESULT_PLUGIN_REMOVED));
								$added = $this->addIssue('wfPluginRemoved', wfIssues::SEVERITY_CRITICAL, $key, $key, $shortMsg, $longMsg, $pluginData);
								if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) {
									$haveIssues = wfIssues::STATUS_PROBLEM;
								} else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) {
									$haveIssues = wfIssues::STATUS_IGNORED;
								}

								unset($allPlugins[$slug]);
							}
						}
					}
				}
			}

			//Handle plugins that either do not exist in the repo or do not have updates available
			foreach ($allPlugins as $slug => $plugin) {
				if ($plugin['vulnerable']) {
					$key = implode(' ', array('wfPluginVulnerable', $plugin['pluginFile'], $plugin['Version']));
					$shortMsg = sprintf(__('The Plugin "%s" has a security vulnerability.', 'wordfence'), $plugin['Name']);
					$longMsg = sprintf(
						wp_kses(
							__('To protect your site from this vulnerability, the safest option is to deactivate and completely remove "%s" until a patched version is available. <a href="%s" target="_blank" rel="noopener noreferrer">Get more information.<span class="screen-reader-text"> (opens in new tab)</span></a>', 'wordfence'),
							array(
								'a' => array(
									'href' => array(),
									'target' => array(),
									'rel' => array(),
								),
								'span' => array(
									'class' => array()
								)
							)
						),
						$plugin['Name'],
						wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_RESULT_PLUGIN_VULNERABLE)
					);
					if (is_array($plugin['vulnerable']) && isset($plugin['vulnerable']['vulnerabilityLink'])) { $statusArray['vulnerabilityLink'] = $plugin['vulnerable']['vulnerabilityLink']; }
					if (is_array($plugin['vulnerable']) && isset($plugin['vulnerable']['cvssScore'])) { $statusArray['cvssScore'] = $plugin['vulnerable']['cvssScore']; }
					if (is_array($plugin['vulnerable']) && isset($plugin['vulnerable']['cvssVector'])) { $statusArray['cvssVector'] = $plugin['vulnerable']['cvssVector']; }
					$plugin['updatedAvailable'] = false;
					$added = $this->addIssue('wfPluginVulnerable', wfIssues::SEVERITY_CRITICAL, $key, $key, $shortMsg, $longMsg, $plugin);
					if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) { $haveIssues = wfIssues::STATUS_PROBLEM; }
					else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) { $haveIssues = wfIssues::STATUS_IGNORED; }
					
					unset($allPlugins[$slug]);
				}
			}
		}

		$this->updateCheck = false;
		$this->pluginRepoStatus = array();

		wfIssues::statusEnd($this->statusIDX['oldVersions'], $haveIssues);
		$this->scanController->completeStage(wfScanner::STAGE_VULNERABILITY_SCAN, $haveIssues);
	}

	public function scan_suspiciousAdminUsers() {
		$this->statusIDX['suspiciousAdminUsers'] = wfIssues::statusStart(__("Scanning for admin users not created through WordPress", 'wordfence'));
		$this->scanController->startStage(wfScanner::STAGE_OPTIONS_AUDIT);
		$haveIssues = wfIssues::STATUS_SECURE;

		$adminUsers = new wfAdminUserMonitor();
		if ($adminUsers->isEnabled()) {
			try {
				$response = $this->api->call('suspicious_admin_usernames');
				if (is_array($response) && isset($response['ok']) && wfUtils::truthyToBoolean($response['ok']) && !empty($response['patterns'])) {
					wfConfig::set_ser('suspiciousAdminUsernames', $response['patterns']);
				}
			} catch (Exception $e) {
				// Let the rest of the scan continue
			}

			$suspiciousAdmins = $adminUsers->checkNewAdmins();
			if (is_array($suspiciousAdmins)) {
				foreach ($suspiciousAdmins as $userID) {
					$this->scanController->incrementSummaryItem(wfScanner::SUMMARY_SCANNED_USERS);
					$user = new WP_User($userID);
					$key = 'suspiciousAdminUsers' . $userID;
					$added = $this->addIssue('suspiciousAdminUsers', wfIssues::SEVERITY_HIGH, $key, $key,
						sprintf(/* translators: WordPress username. */ __("An admin user with the username %s was created outside of WordPress.", 'wordfence'), esc_html($user->user_login)),
						sprintf(/* translators: WordPress username. */ __("An admin user with the username %s was created outside of WordPress. It's possible a plugin could have created the account, but if you do not recognize the user, we suggest you remove it.", 'wordfence'), esc_html($user->user_login)),
						array(
							'userID' => $userID,
						));
					if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) {
						$haveIssues = wfIssues::STATUS_PROBLEM;
					} else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) {
						$haveIssues = wfIssues::STATUS_IGNORED;
					}
				}
			}

			$admins = $adminUsers->getCurrentAdmins();
			/**
			 * @var WP_User $adminUser
			 */
			foreach ($admins as $userID => $adminUser) {
				$added = false;
				$key = 'suspiciousAdminUsers' . $userID;

				// Check against user name list here.
				$suspiciousAdminUsernames = wfConfig::get_ser('suspiciousAdminUsernames');
				if (is_array($suspiciousAdminUsernames)) {
					foreach ($suspiciousAdminUsernames as $usernamePattern) {
						if (preg_match($usernamePattern, $adminUser->user_login)) {
							$added = $this->addIssue('suspiciousAdminUsers', wfIssues::SEVERITY_HIGH, $key, $key,
								sprintf(/* translators: WordPress username. */ __("An admin user with a suspicious username %s was found.", 'wordfence'), esc_html($adminUser->user_login)),
								sprintf(/* translators: WordPress username. */ __("An admin user with a suspicious username %s was found. Administrators accounts with usernames similar to this are commonly seen created by hackers. It's possible a plugin could have created the account, but if you do not recognize the user, we suggest you remove it.", 'wordfence'), esc_html($adminUser->user_login)),
								array(
									'userID' => $userID,
								));
						}
					}
				}

				if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) {
					$haveIssues = wfIssues::STATUS_PROBLEM;
				} else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) {
					$haveIssues = wfIssues::STATUS_IGNORED;
				}
			}
		}

		wfIssues::statusEnd($this->statusIDX['suspiciousAdminUsers'], $haveIssues);
		$this->scanController->completeStage(wfScanner::STAGE_OPTIONS_AUDIT, $haveIssues);
	}

	public function scan_suspiciousOptions() {
		$this->statusIDX['suspiciousOptions'] = wfIssues::statusStart(__("Scanning for suspicious site options", 'wordfence'));
		$this->scanController->startStage(wfScanner::STAGE_OPTIONS_AUDIT);
		$haveIssues = wfIssues::STATUS_SECURE;

		$blogsToScan = self::getBlogsToScan('options');
		$wfdb = new wfDB();

		$this->hoover = new wordfenceURLHoover($this->apiKey, $this->wp_version);
		foreach ($blogsToScan as $blog) {
			$excludedHosts = array();
			$homeURL = get_home_url($blog['blog_id']);
			$host = parse_url($homeURL, PHP_URL_HOST);
			if ($host) {
				$excludedHosts[$host] = 1;
			}
			$siteURL = get_site_url($blog['blog_id']);
			$host = parse_url($siteURL, PHP_URL_HOST);
			if ($host) {
				$excludedHosts[$host] = 1;
			}
			$excludedHosts = array_keys($excludedHosts);

			//Newspaper Theme
			if (defined('TD_THEME_OPTIONS_NAME')) {
				$q = $wfdb->querySelect("SELECT option_name, option_value FROM " . $blog['table'] . " WHERE option_name REGEXP '^td_[0-9]+$' OR option_name = '%s'", TD_THEME_OPTIONS_NAME);
			} else {
				$q = $wfdb->querySelect("SELECT option_name, option_value FROM " . $blog['table'] . " WHERE option_name REGEXP '^td_[0-9]+$'");
			}
			foreach ($q as $row) {
				$found = $this->hoover->hoover($blog['blog_id'] . '-' . $row['option_name'], $row['option_value'], $excludedHosts);
				$this->scanController->incrementSummaryItem(wfScanner::SUMMARY_SCANNED_URLS, $found);
			}
		}


		$this->status(2, 'info', __("Examining URLs found in the options we scanned for dangerous websites", 'wordfence'));
		$hooverResults = $this->hoover->getBaddies();
		$this->status(2, 'info', __("Done examining URLs", 'wordfence'));
		if ($this->hoover->errorMsg) {
			wfIssues::statusEndErr();
			throw new Exception($this->hoover->errorMsg);
		}
		$this->hoover->cleanup();
		foreach ($hooverResults as $idString => $hresults) {
			$arr = explode('-', $idString);
			$blogID = $arr[0];
			$optionKey = $arr[1];
			$blog = null;
			foreach ($hresults as $result) {
				if ($result['badList'] != 'goog-malware-shavar' && $result['badList'] != 'googpub-phish-shavar' && $result['badList'] != 'wordfence-dbl') {
					continue; //A list type that may be new and the plugin has not been upgraded yet.
				}

				if ($blog === null) {
					$blogs = self::getBlogsToScan('options', $blogID);
					$blog = array_shift($blogs);
				}

				if ($result['badList'] == 'goog-malware-shavar') {
					$shortMsg = sprintf(/* translators: URL. */ __("Option contains a suspected malware URL: %s", 'wordfence'), esc_html($optionKey));
					$longMsg = sprintf(/* translators: URL. */ __("This option contains a suspected malware URL listed on Google's list of malware sites. It may indicate your site is infected with malware. The URL is: %s", 'wordfence'), esc_html($result['URL']));
				} else if ($result['badList'] == 'googpub-phish-shavar') {
					$shortMsg = sprintf(/* translators: URL. */ __("Option contains a suspected phishing site URL: %s", 'wordfence'), esc_html($optionKey));
					$longMsg = sprintf(/* translators: URL. */ __("This option contains a URL that is a suspected phishing site that is currently listed on Google's list of known phishing sites. It may indicate your site is infected with malware. The URL is: %s", 'wordfence'), esc_html($result['URL']));
				} else if ($result['badList'] == 'wordfence-dbl') {
					$shortMsg = sprintf(/* translators: URL. */ __("Option contains a suspected malware URL: %s", 'wordfence'), esc_html($optionKey));
					$longMsg = sprintf(/* translators: URL. */ __("This option contains a URL that is currently listed on Wordfence's domain blocklist. It may indicate your site is infected with malware. The URL is: %s", 'wordfence'), esc_html($result['URL']));
				} else {
					//A list type that may be new and the plugin has not been upgraded yet.
					continue;
				}

				$longMsg .= ' - ' . sprintf(/* translators: Support URL. */ __('<a href="%s" target="_blank" rel="noopener noreferrer">Get more information.<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_RESULT_OPTION_MALWARE_URL));

				$this->status(2, 'info', sprintf(/* translators: Scan result description. */ __("Adding issue: %s", 'wordfence'), $shortMsg));

				if (is_multisite()) {
					switch_to_blog($blogID);
				}

				$ignoreP = $idString;
				$ignoreC = $idString . md5(serialize(get_option($optionKey, '')));
				$added = $this->addIssue('optionBadURL', wfIssues::SEVERITY_HIGH, $ignoreP, $ignoreC, $shortMsg, $longMsg, array(
					'optionKey'   => $optionKey,
					'badURL'      => $result['URL'],
					'isMultisite' => $blog['isMultisite'],
					'domain'      => $blog['domain'],
					'path'        => $blog['path'],
					'blog_id'     => $blogID
				));
				if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) {
					$haveIssues = wfIssues::STATUS_PROBLEM;
				} else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) {
					$haveIssues = wfIssues::STATUS_IGNORED;
				}
				if (is_multisite()) {
					restore_current_blog();
				}
			}
		}

		wfIssues::statusEnd($this->statusIDX['suspiciousOptions'], $haveIssues);
		$this->scanController->completeStage(wfScanner::STAGE_OPTIONS_AUDIT, $haveIssues);
	}

	public function scan_geoipSupport() {
		$this->statusIDX['geoipSupport'] = wfIssues::statusStart(__("Checking for future GeoIP support", 'wordfence'));
		$this->scanController->startStage(wfScanner::STAGE_SERVER_STATE);
		$haveIssues = wfIssues::STATUS_SECURE;

		if (version_compare(phpversion(), '5.4') < 0 && wfConfig::get('isPaid') && wfBlock::hasCountryBlock()) {
			$shortMsg = __('PHP Update Needed for Country Blocking', 'wordfence');
			$longMsg = sprintf(/* translators: Software version. */ __('The GeoIP database that is required for country blocking has been updated to a new format. This new format requires sites to run PHP 5.4 or newer, and this site is on PHP %s. To ensure country blocking continues functioning, please update PHP.', 'wordfence'), wfUtils::cleanPHPVersion());

			$longMsg .= ' ' . sprintf(/* translators: Support URL. */ __('<a href="%s" target="_blank" rel="noopener noreferrer">Get more information.<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_RESULT_GEOIP_UPDATE));

			$this->status(2, 'info', sprintf(/* translators: Scan result description. */ __("Adding issue: %s", 'wordfence'), $shortMsg));

			$ignoreP = 'geoIPPHPDiscontinuing';
			$ignoreC = $ignoreP;
			$added = $this->addIssue('geoipSupport', wfIssues::SEVERITY_MEDIUM, $ignoreP, $ignoreC, $shortMsg, $longMsg, array());
			if ($added == wfIssues::ISSUE_ADDED || $added == wfIssues::ISSUE_UPDATED) {
				$haveIssues = wfIssues::STATUS_PROBLEM;
			} else if ($haveIssues != wfIssues::STATUS_PROBLEM && ($added == wfIssues::ISSUE_IGNOREP || $added == wfIssues::ISSUE_IGNOREC)) {
				$haveIssues = wfIssues::STATUS_IGNORED;
			}
		}

		wfIssues::statusEnd($this->statusIDX['geoipSupport'], $haveIssues);
		$this->scanController->completeStage(wfScanner::STAGE_SERVER_STATE, $haveIssues);
	}

	public function status($level, $type, $msg) {
		wordfence::status($level, $type, $msg);
	}

	public function addIssue($type, $severity, $ignoreP, $ignoreC, $shortMsg, $longMsg, $templateData, $alreadyHashed = false) {
		wfIssues::updateScanStillRunning();
		return $this->i->addIssue($type, $severity, $ignoreP, $ignoreC, $shortMsg, $longMsg, $templateData, $alreadyHashed);
	}

	public function addPendingIssue($type, $severity, $ignoreP, $ignoreC, $shortMsg, $longMsg, $templateData) {
		wfIssues::updateScanStillRunning();
		return $this->i->addPendingIssue($type, $severity, $ignoreP, $ignoreC, $shortMsg, $longMsg, $templateData);
	}

	public function getPendingIssueCount() {
		return $this->i->getPendingIssueCount();
	}

	public function getPendingIssues($offset = 0, $limit = 100) {
		return $this->i->getPendingIssues($offset, $limit);
	}

	public static function requestKill() {
		wfScanMonitor::endMonitoring();
		wfConfig::set('wfKillRequested', time(), wfConfig::DONT_AUTOLOAD);
	}

	public static function checkForKill() {
		$kill = wfConfig::get('wfKillRequested', 0);
		if ($kill && time() - $kill < 600) { //Kill lasts for 10 minutes
			wordfence::status(10, 'info', "SUM_KILLED:" . __('Previous scan was stopped successfully.', 'wordfence'));
			throw new Exception(__("Scan was stopped on administrator request.", 'wordfence'), wfScanEngine::SCAN_MANUALLY_KILLED);
		}
	}

	public static function startScan($isFork = false, $scanMode = false, $isResume = false) {
		if (!defined('DONOTCACHEDB')) {
			define('DONOTCACHEDB', true);
		}

		if ($scanMode === false) {
			$scanMode = wfScanner::shared()->scanType();
		}

		if (!$isFork) { //beginning of scan
			wfConfig::inc('totalScansRun');
			wfConfig::set('wfKillRequested', 0, wfConfig::DONT_AUTOLOAD);
			wordfence::status(4, 'info', __("Entering start scan routine", 'wordfence'));
			if (wfScanner::shared()->isRunning()) {
				return __("A scan is already running. Use the stop scan button if you would like to terminate the current scan.", 'wordfence');
			}
			wfConfig::set('currentCronKey', ''); //Ensure the cron key is cleared
			if (!$isResume)
				wfScanMonitor::handleScanStart($scanMode);
		}
		wfScanMonitor::logLastAttempt($isFork);
		$timeout = self::getMaxExecutionTime() - 2; //2 seconds shorter than max execution time which ensures that only 2 HTTP processes are ever occupied
		$testURL = admin_url('admin-ajax.php?action=wordfence_testAjax');
		$forceIpv4 = wfConfig::get('scan_force_ipv4_start');
		$interceptor = new wfCurlInterceptor($forceIpv4);
		if ($forceIpv4)
			$interceptor->setOption(CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
		if (!wfConfig::get('startScansRemotely', false)) {
			if ($isFork) {
				$testSuccessful = (bool) wfConfig::get('scanAjaxTestSuccessful');
				wordfence::status(4, 'info', sprintf(__("Cached result for scan start test: %s", 'wordfence'), var_export($testSuccessful, true)));
			}
			else {
				try {
					$testResult = $interceptor->intercept(function () use ($testURL, $timeout) {
						return wp_remote_post($testURL, array(
							'timeout'   => $timeout,
							'blocking'  => true,
							'sslverify' => false,
							'headers'   => array()
						));
					});
				} catch (Exception $e) {
					//Fall through to the remote start test below
				}

				wordfence::status(4, 'info', sprintf(/* translators: Scan start test result data. */ __("Test result of scan start URL fetch: %s", 'wordfence'), var_export($testResult, true)));

				$testSuccessful = !is_wp_error($testResult) && (is_array($testResult) || $testResult instanceof ArrayAccess) && strstr($testResult['body'], 'WFSCANTESTOK') !== false;
				wfConfig::set('scanAjaxTestSuccessful', $testSuccessful);
			}
		}

		$cronKey = wfUtils::bigRandomHex();
		wfConfig::set('currentCronKey', time() . ',' . $cronKey);
		if ((!wfConfig::get('startScansRemotely', false)) && $testSuccessful) {
			//ajax requests can be sent by the server to itself
			$cronURL = self::_localStartURL($isFork, $scanMode, $cronKey);
			$headers = array('Referer' => false/*, 'Cookie' => 'XDEBUG_SESSION=1'*/);
			wordfence::status(4, 'info', sprintf(/* translators: WordPress admin panel URL. */ __("Starting cron with normal ajax at URL %s", 'wordfence'), $cronURL));

			try {
				wfConfig::set('scanStartAttempt', time());
				$response = $interceptor->intercept(function () use ($cronURL, $headers) {
					return wp_remote_get($cronURL, array(
						'timeout'   => 0.01,
						'blocking'  => false,
						'sslverify' => false,
						'headers'   => $headers
					));
				});
				if (wfCentral::isConnected()) {
					wfCentral::updateScanStatus();
				}
			} catch (Exception $e) {
				wfConfig::set('lastScanCompleted', $e->getMessage());
				wfConfig::set('lastScanFailureType', wfIssues::SCAN_FAILED_CALLBACK_TEST_FAILED);
				return false;
			}

			if (is_wp_error($response)) {
				$error_message = $response->get_error_message();
				if ($error_message) {
					$lastScanCompletedMessage = sprintf(/* translators: Error message. */ __("There was an error starting the scan: %s.", 'wordfence'), $error_message);
				} else {
					$lastScanCompletedMessage = __("There was an unknown error starting the scan.", 'wordfence');
				}

				wfConfig::set('lastScanCompleted', $lastScanCompletedMessage);
				wfConfig::set('lastScanFailureType', wfIssues::SCAN_FAILED_CALLBACK_TEST_FAILED);
			}

			wordfence::status(4, 'info', __("Scan process ended after forking.", 'wordfence'));
		} else {
			$cronURL = self::_remoteStartURL($isFork, $scanMode, $cronKey);
			$headers = array();
			wordfence::status(4, 'info', sprintf(/* translators: WordPress admin panel URL. */ __("Starting cron via proxy at URL %s", 'wordfence'), $cronURL));

			try {
				wfConfig::set('scanStartAttempt', time());
				$response = wp_remote_get($cronURL, array(
					'timeout'   => 0.01,
					'blocking'  => false,
					'sslverify' => false,
					'headers'   => $headers
				));
				if (wfCentral::isConnected()) {
					wfCentral::updateScanStatus();
				}
			} catch (Exception $e) {
				wfConfig::set('lastScanCompleted', $e->getMessage());
				wfConfig::set('lastScanFailureType', wfIssues::SCAN_FAILED_CALLBACK_TEST_FAILED);
				return false;
			}

			if (is_wp_error($response)) {
				$error_message = $response->get_error_message();
				if ($error_message) {
					$lastScanCompletedMessage = sprintf(/* translators: WordPress admin panel URL. */ __("There was an error starting the scan: %s.", 'wordfence'), $error_message);
				} else {
					$lastScanCompletedMessage = __("There was an unknown error starting the scan.", 'wordfence');
				}
				wfConfig::set('lastScanCompleted', $lastScanCompletedMessage);
				wfConfig::set('lastScanFailureType', wfIssues::SCAN_FAILED_CALLBACK_TEST_FAILED);
			}

			wordfence::status(4, 'info', __("Scan process ended after forking.", 'wordfence'));
		}
		return false; //No error
	}

	public static function verifyStartSignature($signature, $isFork, $scanMode, $cronKey, $remote) {
		$url = self::_baseStartURL($isFork, $scanMode, $cronKey);
		if ($remote) {
			$url = self::_remoteStartURL($isFork, $scanMode, $cronKey);
			$url = remove_query_arg('signature', $url);
		}
		$test = self::_signStartURL($url);
		return hash_equals($signature, $test);
	}

	protected static function _baseStartURL($isFork, $scanMode, $cronKey) {
		$url = admin_url('admin-ajax.php');
		$url .= '?action=wordfence_doScan&isFork=' . ($isFork ? '1' : '0') . '&scanMode=' . urlencode($scanMode) . '&cronKey=' . urlencode($cronKey);
		return $url;
	}

	protected static function _localStartURL($isFork, $scanMode, $cronKey) {
		$url = self::_baseStartURL($isFork, $scanMode, $cronKey);
		return add_query_arg('signature', self::_signStartURL($url), $url);
	}

	protected static function _remoteStartURL($isFork, $scanMode, $cronKey) {
		$url = self::_baseStartURL($isFork, $scanMode, $cronKey);
		$url = preg_replace('/^https?:\/\//i', (wfAPI::SSLEnabled() ? WORDFENCE_API_URL_SEC : WORDFENCE_API_URL_NONSEC) . 'scanp/', $url);
		$url = add_query_arg('k', wfConfig::get('apiKey'), $url);
		$url = add_query_arg('ssl', wfUtils::isFullSSL() ? '1' : '0', $url);
		return add_query_arg('signature', self::_signStartURL($url), $url);
	}

	protected static function _signStartURL($url) {
		$payload = preg_replace('~^https?://[^/]+~i', '', $url);
		return wfCrypt::local_sign($payload);
	}

	public function processResponse($result) {
		return false;
	}

	public static function getMaxExecutionTime($staySilent = false) {
		$config = wfConfig::get('maxExecutionTime');
		if (!$staySilent) {
			wordfence::status(4, 'info', sprintf(/* translators: Time in seconds. */ __("Got value from wf config maxExecutionTime: %s", 'wordfence'), $config));
		}
		if (is_numeric($config) && $config >= WORDFENCE_SCAN_MIN_EXECUTION_TIME) {
			if (!$staySilent) {
				wordfence::status(4, 'info', sprintf(/* translators: Time in seconds. */ __("getMaxExecutionTime() returning config value: %s", 'wordfence'), $config));
			}
			return $config;
		}

		$ini = @ini_get('max_execution_time');
		if (!$staySilent) {
			wordfence::status(4, 'info', sprintf(/* translators: PHP ini value. */ __("Got max_execution_time value from ini: %s", 'wordfence'), $ini));
		}
		if (is_numeric($ini) && $ini >= WORDFENCE_SCAN_MIN_EXECUTION_TIME) {
			if ($ini > WORDFENCE_SCAN_MAX_INI_EXECUTION_TIME) {
				if (!$staySilent) {
					wordfence::status(4, 'info', sprintf(
					/* translators: 1. PHP ini setting. 2. Time in seconds. */
						__('ini value of %1$d is higher than value for WORDFENCE_SCAN_MAX_INI_EXECUTION_TIME (%2$d), reducing', 'wordfence'),
						$ini,
						WORDFENCE_SCAN_MAX_INI_EXECUTION_TIME
					));
				}
				$ini = WORDFENCE_SCAN_MAX_INI_EXECUTION_TIME;
			}

			$ini = floor($ini / 2);
			if (!$staySilent) {
				wordfence::status(4, 'info', sprintf(/* translators: PHP ini setting. */ __("getMaxExecutionTime() returning half ini value: %d", 'wordfence'), $ini));
			}
			return $ini;
		}

		if (!$staySilent) {
			wordfence::status(4, 'info', __("getMaxExecutionTime() returning default of: 15", 'wordfence'));
		}
		return 15;
	}

	/**
	 * @return wfScanKnownFilesLoader
	 */
	public function getKnownFilesLoader() {
		if ($this->knownFilesLoader === null) {
			$this->knownFilesLoader = new wfScanKnownFilesLoader($this->api, $this->getPlugins(), $this->getThemes());
		}
		return $this->knownFilesLoader;
	}

	/**
	 * @return array
	 */
	public function getPlugins() {
		static $plugins = null;
		if ($plugins !== null) {
			return $plugins;
		}

		if (!function_exists('get_plugins')) {
			require_once(ABSPATH . '/wp-admin/includes/plugin.php');
		}
		$pluginData = get_plugins();
		$plugins = array();
		foreach ($pluginData as $key => $data) {
			if (preg_match('/^([^\/]+)\//', $key, $matches)) {
				$pluginDir = $matches[1];
				$pluginFullDir = "wp-content/plugins/" . $pluginDir;
				$plugins[$key] = array(
					'Name'     => $data['Name'],
					'Version'  => $data['Version'],
					'ShortDir' => $pluginDir,
					'FullDir'  => $pluginFullDir
				);
			}
			if (!$this->pluginsCounted) {
				$this->scanController->incrementSummaryItem(wfScanner::SUMMARY_SCANNED_PLUGINS);
			}
		}

		$this->pluginsCounted = true;
		return $plugins;
	}

	/**
	 * @return array
	 */
	public function getThemes() {
		static $themes = null;
		if ($themes !== null) {
			return $themes;
		}

		if (!function_exists('wp_get_themes')) {
			require_once(ABSPATH . '/wp-includes/theme.php');
		}
		$themeData = wp_get_themes();
		$themes = array();
		foreach ($themeData as $themeName => $themeVal) {
			if (preg_match('/\/([^\/]+)$/', $themeVal['Stylesheet Dir'], $matches)) {
				$shortDir = $matches[1]; //e.g. evo4cms
				$fullDir = "wp-content/themes/{$shortDir}"; //e.g. wp-content/themes/evo4cms
				$themes[$themeName] = array(
					'Name'     => $themeVal['Name'],
					'Version'  => $themeVal['Version'],
					'ShortDir' => $shortDir,
					'FullDir'  => $fullDir
				);
			}
			if (!$this->themesCounted) {
				$this->scanController->incrementSummaryItem(wfScanner::SUMMARY_SCANNED_THEMES);
			}
		}

		$this->themesCounted = true;
		return $themes;
	}

	public function recordMetric($type, $key, $value, $singular = true) {
		if (!isset($this->metrics[$type])) {
			$this->metrics[$type] = array();
		}

		if (!isset($this->metrics[$type][$key])) {
			$this->metrics[$type][$key] = array();
		}

		if ($singular) {
			$this->metrics[$type][$key] = $value;
		} else {
			$this->metrics[$type][$key][] = $value;
		}
	}

	/**
	 * Queries the is_safe_file endpoint. If provided an array, it does a bulk check and returns an array containing the
	 * hashes that were marked as safe. If provided a string, it returns a boolean to indicate the safeness of the file.
	 *
	 * @param string|array $shac
	 * @return array|bool
	 */
	public function isSafeFile($shac) {
		if (is_array($shac)) {
			$result = $this->api->call('is_safe_file', array(), array('multipleSHAC' => json_encode($shac)));
			if (isset($result['isSafe'])) {
				return $result['isSafe'];
			}
			return array();
		}
		$result = $this->api->call('is_safe_file', array(), array('shac' => strtoupper($shac)));
		return isset($result['isSafe']) && $result['isSafe'] == 1;
	}
}

class wfScanKnownFilesLoader {
	/**
	 * @var array
	 */
	private $plugins;

	/**
	 * @var array
	 */
	private $themes;

	/**
	 * @var array
	 */
	private $knownFiles = array();

	/**
	 * @var wfAPI
	 */
	private $api;


	/**
	 * @param wfAPI $api
	 * @param array $plugins
	 * @param array $themes
	 */
	public function __construct($api, $plugins = null, $themes = null) {
		$this->api = $api;
		$this->plugins = $plugins;
		$this->themes = $themes;
	}

	/**
	 * @return bool
	 */
	public function isLoaded() {
		return is_array($this->knownFiles) && count($this->knownFiles) > 0;
	}

	/**
	 * @param $file
	 * @return bool
	 * @throws wfScanKnownFilesException
	 */
	public function isKnownFile($file) {
		if (!$this->isLoaded()) {
			$this->fetchKnownFiles();
		}

		return isset($this->knownFiles['core'][$file]) ||
			isset($this->knownFiles['plugins'][$file]) ||
			isset($this->knownFiles['themes'][$file]);
	}

	/**
	 * @param $file
	 * @return bool
	 * @throws wfScanKnownFilesException
	 */
	public function isKnownCoreFile($file) {
		if (!$this->isLoaded()) {
			$this->fetchKnownFiles();
		}
		return isset($this->knownFiles['core'][$file]);
	}

	/**
	 * @param $file
	 * @return bool
	 * @throws wfScanKnownFilesException
	 */
	public function isKnownPluginFile($file) {
		if (!$this->isLoaded()) {
			$this->fetchKnownFiles();
		}
		return isset($this->knownFiles['plugins'][$file]);
	}

	/**
	 * @param $file
	 * @return bool
	 * @throws wfScanKnownFilesException
	 */
	public function isKnownThemeFile($file) {
		if (!$this->isLoaded()) {
			$this->fetchKnownFiles();
		}
		return isset($this->knownFiles['themes'][$file]);
	}

	/**
	 * @throws wfScanKnownFilesException
	 */
	public function fetchKnownFiles() {
		try {
			$dataArr = $this->api->binCall('get_known_files', json_encode(array(
				'plugins' => $this->plugins,
				'themes'  => $this->themes
			)));

			if ($dataArr['code'] != 200) {
				throw new wfScanKnownFilesException(sprintf(/* translators: 1. HTTP status code. */ __("Got error response from Wordfence servers: %s", 'wordfence'), $dataArr['code']), $dataArr['code']);
			}
			$this->knownFiles = @json_decode($dataArr['data'], true);
			if (!is_array($this->knownFiles)) {
				throw new wfScanKnownFilesException(__("Invalid response from Wordfence servers.", 'wordfence'));
			}
		} catch (Exception $e) {
			throw new wfScanKnownFilesException($e->getMessage(), $e->getCode(), $e);
		}
	}

	public function getKnownPluginData($file) {
		if ($this->isKnownPluginFile($file)) {
			return $this->knownFiles['plugins'][$file];
		}
		return null;
	}

	public function getKnownThemeData($file) {
		if ($this->isKnownThemeFile($file)) {
			return $this->knownFiles['themes'][$file];
		}
		return null;
	}

	/**
	 * @return array
	 */
	public function getPlugins() {
		return $this->plugins;
	}

	/**
	 * @param array $plugins
	 */
	public function setPlugins($plugins) {
		$this->plugins = $plugins;
	}

	/**
	 * @return array
	 */
	public function getThemes() {
		return $this->themes;
	}

	/**
	 * @param array $themes
	 */
	public function setThemes($themes) {
		$this->themes = $themes;
	}

	/**
	 * @return array
	 * @throws wfScanKnownFilesException
	 */
	public function getKnownFiles() {
		if (!$this->isLoaded()) {
			$this->fetchKnownFiles();
		}
		return $this->knownFiles;
	}

	/**
	 * @param array $knownFiles
	 */
	public function setKnownFiles($knownFiles) {
		$this->knownFiles = $knownFiles;
	}

	/**
	 * @return wfAPI
	 */
	public function getAPI() {
		return $this->api;
	}

	/**
	 * @param wfAPI $api
	 */
	public function setAPI($api) {
		$this->api = $api;
	}
}

class wfScanKnownFilesException extends Exception {

}

class wfCommonBackupFileTest {
	const MATCH_EXACT = 'exact';
	const MATCH_REGEX = 'regex';

	/**
	 * @param string $path
	 * @param string $mode
	 * @param bool|string $matcher If $mode is MATCH_REGEX, this will be the regex pattern.
	 * @return wfCommonBackupFileTest
	 */
	public static function createFromRootPath($path, $mode = self::MATCH_EXACT, $matcher = false) {
		return new self(site_url($path), ABSPATH . $path, array(), $mode, $matcher);
	}

	/**
	 * Identical to createFromRootPath except it returns an entry for each file in the index that matches $name
	 *
	 * @param $name
	 * @param string $mode
	 * @param bool|string $matcher
	 * @return array
	 */
	public static function createAllForFile($file, $mode = self::MATCH_EXACT, $matcher = false) {
		global $wpdb;
		$escapedFile = esc_sql(preg_quote($file));
		$table_wfKnownFileList = wfDB::networkTable('wfKnownFileList');
		$files = $wpdb->get_col("SELECT path FROM {$table_wfKnownFileList} WHERE path REGEXP '(^|/){$escapedFile}$'");
		$tests = array();
		foreach ($files as $f) {
			$tests[] = new self(site_url($f), ABSPATH . $f, array(), $mode, $matcher);
		}

		return $tests;
	}

	private $url;
	private $path;
	/**
	 * @var array
	 */
	private $requestArgs;
	private $mode;
	private $matcher;
	private $response;


	/**
	 * @param string $url
	 * @param string $path
	 * @param array $requestArgs
	 */
	public function __construct($url, $path, $requestArgs = array(), $mode = self::MATCH_EXACT, $matcher = false) {
		$this->url = $url;
		$this->path = $path;
		$this->mode = $mode;
		$this->matcher = $matcher;
		$this->requestArgs = $requestArgs;
	}

	/**
	 * @return bool
	 */
	public function fileExists() {
		return file_exists($this->path);
	}

	/**
	 * @return bool
	 */
	public function isPubliclyAccessible() {
		$this->response = wp_remote_get($this->url, $this->requestArgs);
		if ((int) floor(((int) wp_remote_retrieve_response_code($this->response) / 100)) === 2) {
			$handle = @fopen($this->path, 'r');
			if ($handle) {
				$contents = fread($handle, 700);
				fclose($handle);
				$remoteContents = substr(wp_remote_retrieve_body($this->response), 0, 700);
				if ($this->mode == self::MATCH_REGEX) {
					return preg_match($this->matcher, $remoteContents);
				}
				//else MATCH_EXACT
				return $contents === $remoteContents;
			}
		}
		return false;
	}

	/**
	 * @return string
	 */
	public function getUrl() {
		return $this->url;
	}

	/**
	 * @param string $url
	 */
	public function setUrl($url) {
		$this->url = $url;
	}

	/**
	 * @return string
	 */
	public function getPath() {
		return $this->path;
	}

	/**
	 * @param string $path
	 */
	public function setPath($path) {
		$this->path = $path;
	}

	/**
	 * @return array
	 */
	public function getRequestArgs() {
		return $this->requestArgs;
	}

	/**
	 * @param array $requestArgs
	 */
	public function setRequestArgs($requestArgs) {
		$this->requestArgs = $requestArgs;
	}

	/**
	 * @return mixed
	 */
	public function getResponse() {
		return $this->response;
	}
}

class wfPubliclyAccessibleFileTest extends wfCommonBackupFileTest {

}

class wfScanEngineDurationLimitException extends Exception {
}

class wfScanEngineCoreVersionChangeException extends Exception {
}

class wfScanEngineTestCallbackFailedException extends Exception {
}lib/wfPersistenceController.php000064400000001436150755146450012730 0ustar00<?php

class wfPersistenceController {
	private $_disclosureStates;
	
	public static function shared() {
		static $_shared = false;
		if ($_shared === false) {
			$_shared = new wfPersistenceController();
		}
		return $_shared;
	}
	
	public function __construct() {
		$this->_disclosureStates = wfConfig::get_ser('disclosureStates', array());
	}
	
	/**
	 * Returns whether the options block is in an active state. 
	 * 
	 * @param $key
	 * @return bool
	 */
	public function isActive($key) {
		if (!isset($this->_disclosureStates[$key])) {
			return false;
		}
		return !!$this->_disclosureStates[$key];
	}
	
	/**
	 * Returns whether the options block has been set.
	 *
	 * @param $key
	 * @return bool
	 */
	public function isConfigured($key) {
		return isset($this->_disclosureStates[$key]);
	}
}lib/diffResult.php000064400000005465150755146450010160 0ustar00<?php if (!defined('WORDFENCE_VERSION')) { exit; } ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"  dir="ltr" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel='stylesheet' id='wordfence-main-style-css'  href='<?php echo wfUtils::getBaseURL() . wfUtils::versionedAsset('css/diff.css'); ?>?ver=<?php echo WORDFENCE_VERSION; ?>' type='text/css' media='all' />
</head>
<body>
<h1><?php esc_html_e('Wordfence: Viewing File Differences', 'wordfence') ?></h1>
<p style="width: 800px; font-size: 16px; font-family: Verdana;">
	<?php esc_html_e('The two panels below show a before and after view of a file on your system that has been modified. The left panel shows the original file before modification. The right panel shows your version of the file that has been modified. Use this view to determine if a file has been modified by an attacker or if this is a change that you or another trusted person made. If you are happy with the modifications you see here, then you should choose to ignore this file the next time Wordfence scans your system.', 'wordfence') ?>
</p>
<table border="0" style="margin: 0 0 20px 0;" class="summary">
<tr><td><?php esc_html_e('Filename:', 'wordfence') ?></td><td><?php echo wp_kses($_GET['file'], array()); ?></td></tr>
<tr><td><?php esc_html_e('File type:', 'wordfence') ?></td><td><?php
	$cType = $_GET['cType'];
	if($cType == 'core'){
		esc_html_e('WordPress Core File', 'wordfence') . "</td></tr>";
	} else if($cType == 'theme'){
		echo esc_html__('Theme File', 'wordfence') . "</td></tr><tr><td>" .
			esc_html__('Theme Name:', 'wordfence')
			. "</td><td>" . wp_kses($_GET['cName'], array()) . "</td></tr><tr><td>" .
			esc_html__('Theme Version:', 'wordfence') . "</td><td>" . wp_kses($_GET['cVersion'], array()) . "</td></tr>";
	} else if($cType == 'plugin'){
		echo esc_html__('Plugin File', 'wordfence') . "</td></tr><tr><td>" .
			esc_html__('Plugin Name:', 'wordfence') . "</td><td>" . wp_kses($_GET['cName'], array()) . "</td></tr><tr><td>" .
			esc_html__('Plugin Version:', 'wordfence') . "</td><td>" . wp_kses($_GET['cVersion'], array()) . "</td></tr>";
	} else {
		echo esc_html__('Unknown Type', 'wordfence') . "</td></tr>";
	}
	?>
</table>

<?php 
	if($diffResult){
		echo $diffResult; 
	} else {
		echo "<br />" . esc_html__('There are no differences between the original file and the file in the repository.', 'wordfence');
	}

?>


<div class="diffFooter"><?php echo wp_kses(sprintf(__('&copy;&nbsp;%1$d to %2$d Wordfence &mdash; Visit <a href="http://wordfence.com/">Wordfence.com</a> for help, security updates and more.', 'wordfence'), date_i18n('Y', WORDFENCE_EPOCH), date_i18n('Y')), array('a'=>array('href'=>array()))) ?></div>
</body>
</html>lib/wfHelperString.php000064400000004204150755146450011002 0ustar00<?php


class wfHelperString {

	/**
	 * cycle through arguments
	 *
	 * @return mixed
	 */
	public static function cycle() {
		static $counter = 0;
		$args = func_get_args();
		if (empty($args)) {
			$counter = 0;
			return null;
		}
		$return_val = $args[$counter % count($args)];
		$counter++;
		return $return_val;
	}

	public static function plainTextTable($table, $maxColumnWidth = 60) {
		if (count($table) === 0) {
			return '';
		}
		
		$colLengths = array();
		for ($row = 0; $row < count($table); $row++) {
			if (is_string($table[$row])) { //Special handling to show a sub-header/divider
				continue;
			}
			
			for ($col = 0; $col < count($table[$row]); $col++) {
				$table[$row][$col] = wordwrap(str_replace("\t", "    ", $table[$row][$col]), $maxColumnWidth, "\n", true);
				
				foreach (explode("\n", $table[$row][$col]) as $colText) {
					if (!isset($colLengths[$col])) {
						$colLengths[$col] = strlen($colText);
						continue;
					}
					$len = strlen($colText);
					if ($len > $colLengths[$col]) {
						$colLengths[$col] = $len;
					}
				}
			}
		}
		$totalWidth = array_sum($colLengths) + (count($colLengths) * 3) + 1;
		$hr = str_repeat('-', $totalWidth);
		$output = $hr . "\n";
		for ($row = 0; $row < count($table); $row++) {
			if (is_string($table[$row])) { //Special handling to show a sub-header/divider
				if ($row > 1) { $output .= $hr . "\n"; }
				$output .= '| ' . str_pad($table[$row], $totalWidth - 4, ' ', STR_PAD_BOTH) . ' ' . "|\n";
				$output .= $hr . "\n";
				continue;
			}
			
			$colHeight = 0;
			for ($col = 0; $col < count($table[$row]); $col++) {
				$height = substr_count($table[$row][$col], "\n");
				if ($height > $colHeight) {
					$colHeight = $height;
				}
			}
			for ($colRow = 0; $colRow <= $colHeight; $colRow++) {
				for ($col = 0; $col < count($table[$row]); $col++) {
					$colRows = explode("\n", $table[$row][$col]);
					$output .= '| ' . str_pad(isset($colRows[$colRow]) ? $colRows[$colRow] : '', $colLengths[$col], ' ', STR_PAD_RIGHT) . ' ';
				}
				$output .= "|\n";
			}
			if ($row === 0) {
				$output .= $hr . "\n";
			}
		}
		return trim($output . (count($table) > 1 ? $hr : ''));
	}
}lib/wfLog.php000064400000162034150755146450007123 0ustar00<?php
require_once(dirname(__FILE__) . '/wfDB.php');
require_once(dirname(__FILE__) . '/wfUtils.php');
require_once(dirname(__FILE__) . '/wfBrowscap.php');
class wfLog {
	public $canLogHit = true;
	private $effectiveUserID = 0;
	private $hitsTable = '';
	private $apiKey = '';
	private $wp_version = '';
	private $db = false;
	private $googlePattern = '/\.(?:googlebot\.com|google\.[a-z]{2,3}|google\.[a-z]{2}\.[a-z]{2}|1e100\.net)$/i';
	private $loginsTable, $statusTable;
	private static $gbSafeCache = array();

	/**
	 * @var wfRequestModel
	 */
	private $currentRequest;
	
	public static function shared() {
		static $_shared = null;
		if ($_shared === null) {
			$_shared = new wfLog(wfConfig::get('apiKey'), wfUtils::getWPVersion());
		}
		return $_shared;
	}
	
	/**
	 * Returns whether or not we have a cached record identifying the visitor as human. This is used both by certain
	 * rate limiting features and by Live Traffic.
	 * 
	 * @param bool|string $IP
	 * @param bool|string $UA
	 * @return bool
	 */
	public static function isHumanRequest($IP = false, $UA = false) {
		global $wpdb;
		
		if ($IP === false) {
			$IP = wfUtils::getIP();
		}
		
		if ($UA === false || $UA === null) {
			$UA = (isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '');
		}
		
		$ipHex = wfDB::binaryValueToSQLHex(wfUtils::inet_pton($IP));
		$table = wfDB::networkTable('wfLiveTrafficHuman');
		if ($wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM {$table} WHERE IP = {$ipHex} AND identifier = %s AND expiration >= UNIX_TIMESTAMP()", hash('sha256', $UA, true)))) {
			return true;
		}
		return false;
	}
	
	/**
	 * Creates a cache record for the requester to tag it as human.
	 * 
	 * @param bool|string $IP
	 * @param bool|string $UA
	 * @return bool
	 */
	public static function cacheHumanRequester($IP = false, $UA = false) {
		global $wpdb;
		
		if ($IP === false) {
			$IP = wfUtils::getIP();
		}
		
		if ($UA === false) {
			$UA = (isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '');
		}
		
		$ipHex = wfDB::binaryValueToSQLHex(wfUtils::inet_pton($IP));
		$table = wfDB::networkTable('wfLiveTrafficHuman');
		if ($wpdb->get_var($wpdb->prepare("INSERT IGNORE INTO {$table} (IP, identifier, expiration) VALUES ({$ipHex}, %s, UNIX_TIMESTAMP() + 86400)", hash('sha256', $UA, true)))) {
			return true;
		}
	}
	
	/**
	 * Prunes any expired records from the human cache.
	 */
	public static function trimHumanCache() {
		global $wpdb;
		$table = wfDB::networkTable('wfLiveTrafficHuman');
		$wpdb->query("DELETE FROM {$table} WHERE `expiration` < UNIX_TIMESTAMP()");
	}

	public function __construct($apiKey, $wp_version){
		$this->apiKey = $apiKey;
		$this->wp_version = $wp_version;
		$this->hitsTable = wfDB::networkTable('wfHits');
		$this->loginsTable = wfDB::networkTable('wfLogins');
		$this->statusTable = wfDB::networkTable('wfStatus');
		
		add_filter('determine_current_user', array($this, '_userIDDetermined'), 99, 1);
	}
	
	public function _userIDDetermined($userID) {
		//Needed because the REST API will clear the authenticated user if it fails a nonce check on the request
		$this->effectiveUserID = (int) $userID;
		return $userID;
	}

	public function initLogRequest() {
		if ($this->currentRequest === null) {
			$this->currentRequest = new wfRequestModel();

			$this->currentRequest->ctime = sprintf('%.6f', microtime(true));
			$this->currentRequest->statusCode = 200;
			$this->currentRequest->isGoogle = (wfCrawl::isGoogleCrawler() ? 1 : 0);
			$this->currentRequest->IP = wfUtils::inet_pton(wfUtils::getIP());
			$this->currentRequest->userID = $this->getCurrentUserID();
			$this->currentRequest->URL = wfUtils::getRequestedURL();
			$this->currentRequest->referer = (isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '');
			$this->currentRequest->UA = (isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '');
			$this->currentRequest->jsRun = 0;
			
			add_action('wp_loaded', array($this, 'actionSetRequestJSEnabled'));
			add_action('init', array($this, 'actionSetRequestOnInit'), 9999);

			if (function_exists('register_shutdown_function')) {
				register_shutdown_function(array($this, 'logHit'));
			}
		}
	}

	public function actionSetRequestJSEnabled() {
		if (get_current_user_id() > 0) {
			$this->currentRequest->jsRun = true;
			return;
		}
		
		$IP = wfUtils::getIP();
		$UA = $this->currentRequest->UA;
		$this->currentRequest->jsRun = wfLog::isHumanRequest($IP, $UA);
	}

	/**
	 * CloudFlare's plugin changes $_SERVER['REMOTE_ADDR'] on init.
	 */
	public function actionSetRequestOnInit() {
		$this->currentRequest->IP = wfUtils::inet_pton(wfUtils::getIP());
		$this->currentRequest->userID = $this->getCurrentUserID();
	}

	/**
	 * @return wfRequestModel
	 */
	public function getCurrentRequest() {
		return $this->currentRequest;
	}
	
	public function logLogin($action, $fail, $username){
		if(! $username){
			return;
		}
		$user = get_user_by('login', $username);
		$userID = 0;
		if($user){
			$userID = $user->ID;
			if(! $userID){
				return;
			}
		}
		else {
			$user = get_user_by('email', $username);
			if ($user) {
				$userID = $user->ID;
				if (!$userID) {
					return;
				}
			}
		}
		// change the action flag here if the user does not exist.
		if ($action == 'loginFailValidUsername' && $userID == 0) {
			$action = 'loginFailInvalidUsername';
		}

		$hitID = 0;
		if ($this->currentRequest !== null) {
			$this->currentRequest->userID = $userID;
			$this->currentRequest->action = $action;
			$this->currentRequest->save();
			$hitID = $this->currentRequest->getPrimaryKey();
		}

		//Else userID stays 0 but we do log this even though the user doesn't exist.
		$ipHex = wfDB::binaryValueToSQLHex(wfUtils::inet_pton(wfUtils::getIP()));
		$this->getDB()->queryWrite("insert into " . $this->loginsTable . " (hitID, ctime, fail, action, username, userID, IP, UA) values (%d, %f, %d, '%s', '%s', %s, {$ipHex}, '%s')",
			$hitID,
			sprintf('%.6f', microtime(true)),
			$fail,
			$action,
			$username,
			$userID,
			(isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '')
			);
	}
	private function getCurrentUserID(){
		if (!function_exists('get_current_user_id') || !defined('AUTH_COOKIE')) { //If pluggable.php is loaded early by some other plugin on a multisite installation, it leads to an error because AUTH_COOKIE is undefined and WP doesn't check for it first
			return 0;
		}
		$id = get_current_user_id();
		return $id ? $id : 0;
	}
	public function logLeechAndBlock($type) { //404 or hit
		if (!wfRateLimit::mightRateLimit($type)) {
			return;
		}
		
		wfRateLimit::countHit($type, wfUtils::getIP());
		
		if (wfRateLimit::globalRateLimit()->shouldEnforce($type)) {
			$this->takeBlockingAction('maxGlobalRequests', __("Exceeded the maximum global requests per minute for crawlers or humans.", 'wordfence'));
		}
		else if (wfRateLimit::crawlerViewsRateLimit()->shouldEnforce($type)) {
			$this->takeBlockingAction('maxRequestsCrawlers', __("Exceeded the maximum number of requests per minute for crawlers.", 'wordfence')); //may not exit
		}
		else if (wfRateLimit::crawler404sRateLimit()->shouldEnforce($type)) {
			$this->takeBlockingAction('max404Crawlers', __("Exceeded the maximum number of page not found errors per minute for a crawler.", 'wordfence'));
		}
		else if (wfRateLimit::humanViewsRateLimit()->shouldEnforce($type)) {
			$this->takeBlockingAction('maxRequestsHumans', __("Exceeded the maximum number of page requests per minute for humans.", 'wordfence'));
		}
		else if (wfRateLimit::human404sRateLimit()->shouldEnforce($type)) {
			$this->takeBlockingAction('max404Humans', __("Exceeded the maximum number of page not found errors per minute for humans.", 'wordfence'));
		}
	}
	
	public function tagRequestForBlock($reason, $wfsn = false) {
		if ($this->currentRequest !== null) {
			$this->currentRequest->statusCode = 403;
			$this->currentRequest->action = 'blocked:' . ($wfsn ? 'wfsn' : 'wordfence');
			$this->currentRequest->actionDescription = $reason;
		}
	}
	
	public function tagRequestForLockout($reason) {
		if ($this->currentRequest !== null) {
			$this->currentRequest->statusCode = 503;
			$this->currentRequest->action = 'lockedOut';
			$this->currentRequest->actionDescription = $reason;
		}
	}

	/**
	 * @return bool|int
	 */
	public function logHit() {
		$liveTrafficEnabled = wfConfig::liveTrafficEnabled();
		$action = $this->currentRequest->action;
		$logHitOK = $this->logHitOK();
		if (!$logHitOK) {
			return false;
		}
		if (!$liveTrafficEnabled && !$action) {
			return false;
		}
		if ($this->currentRequest !== null) {
			if ($this->currentRequest->save()) {
				return $this->currentRequest->getPrimaryKey();
			}
		}
		return false;
	}
	
	public function getHits($hitType /* 'hits' or 'logins' */, $type, $afterTime, $limit = 50, $IP = false){
		global $wpdb;
		$IPSQL = "";
		if($IP){
			$ipHex = wfDB::binaryValueToSQLHex(wfUtils::inet_pton($IP));
			$IPSQL = " and IP={$ipHex} ";
			$sqlArgs = array($afterTime, $limit);
		} else {
			$sqlArgs = array($afterTime, $limit);
		}
		if($hitType == 'hits'){
			$securityOnly = !wfConfig::liveTrafficEnabled();
			$delayedHumanBotFiltering = false;
			
			if($type == 'hit'){
				$typeSQL = " ";
			} else if($type == 'crawler'){
				if ($securityOnly) {
					$typeSQL = " ";
					$delayedHumanBotFiltering = true;
				}
				else {
					$now = time();
					$typeSQL = " and jsRun = 0 and {$now} - ctime > 30 ";
				}
			} else if($type == 'gCrawler'){
				$typeSQL = " and isGoogle = 1 ";
			} else if($type == '404'){
				$typeSQL = " and statusCode = 404 ";
			} else if($type == 'human'){
				if ($securityOnly) {
					$typeSQL = " ";
					$delayedHumanBotFiltering = true;
				}
				else {
					$typeSQL = " and jsRun = 1 ";
				}
			} else if($type == 'ruser'){
				$typeSQL = " and userID > 0 ";
			} else {
				wordfence::status(1, 'error', sprintf(/* translators: Error message. */ __("Invalid log type to wfLog: %s", 'wordfence'), $type));
				return false;
			}
			array_unshift($sqlArgs, "select h.*, u.display_name from {$this->hitsTable} h
				LEFT JOIN {$wpdb->users} u on h.userID = u.ID
				where ctime > %f $IPSQL $typeSQL order by ctime desc limit %d");
			$results = call_user_func_array(array($this->getDB(), 'querySelect'), $sqlArgs);
			
			if ($delayedHumanBotFiltering) {
				$browscap = wfBrowscap::shared();
				foreach ($results as $index => $res) {
					if ($res['UA']) {
						$b = $browscap->getBrowser($res['UA']);
						if ($b && $b['Parent'] != 'DefaultProperties') {
							$jsRun = wfUtils::truthyToBoolean($res['jsRun']);
							if (!wfConfig::liveTrafficEnabled() && !$jsRun) {
								$jsRun = !(isset($b['Crawler']) && $b['Crawler']);
							}
							
							if ($type == 'crawler' && $jsRun || $type == 'human' && !$jsRun) {
								unset($results[$index]);
							}
						}
					}
				}
			}

		} else if($hitType == 'logins'){
			array_unshift($sqlArgs, "select l.*, u.display_name from {$this->loginsTable} l
				LEFT JOIN {$wpdb->users} u on l.userID = u.ID
				where ctime > %f $IPSQL order by ctime desc limit %d");
			$results = call_user_func_array(array($this->getDB(), 'querySelect'), $sqlArgs ); 

		} else {
			wordfence::status(1, 'error', sprintf(/* translators: Error message. */ __("getHits got invalid hitType: %s", 'wordfence'), $hitType));
			return false;
		}
		$this->processGetHitsResults($type, $results);
		return $results;
	}

	private function processActionDescription($description) {
		switch ($description) {
		case wfWAFIPBlocksController::WFWAF_BLOCK_UAREFIPRANGE:
			return __('UA/Hostname/Referrer/IP Range not allowed', 'wordfence');
		default:
			return $description;
		}
	}

	/**
	 * @param string $type
	 * @param array $results
	 * @throws Exception
	 */
	public function processGetHitsResults($type, &$results) {
		$serverTime = $this->getDB()->querySingle("select unix_timestamp()");

		$this->resolveIPs($results);
		$ourURL = parse_url(site_url());
		$ourHost = strtolower($ourURL['host']);
		$ourHost = preg_replace('/^www\./i', '', $ourHost);
		$browscap = wfBrowscap::shared();

		$patternBlocks = wfBlock::patternBlocks(true);

		foreach($results as &$res){
			$res['type'] = $type;
			$res['IP'] = wfUtils::inet_ntop($res['IP']);
			$res['timeAgo'] = wfUtils::makeTimeAgo($serverTime - $res['ctime']);
			$res['blocked'] = false;
			$res['rangeBlocked'] = false;
			$res['ipRangeID'] = -1;
			if (array_key_exists('actionDescription', $res))
				$res['actionDescription'] = $this->processActionDescription($res['actionDescription']);
			
			$ipBlock = wfBlock::findIPBlock($res['IP']);
			if ($ipBlock !== false) {
				$res['blocked'] = true;
				$res['blockID'] = $ipBlock->id;
			}
			
			foreach ($patternBlocks as $b) {
				if (empty($b->ipRange)) { continue; }
				$range = new wfUserIPRange($b->ipRange);
				if ($range->isIPInRange($res['IP'])) {
					$res['rangeBlocked'] = true;
					$res['ipRangeID'] = $b->id;
					break;
				}
			}
			
			$res['extReferer'] = false;
			if(isset( $res['referer'] ) && $res['referer']){
				if(wfUtils::hasXSS($res['referer'] )){ //filtering out XSS
					$res['referer'] = '';
				}
			}
			if( isset( $res['referer'] ) && $res['referer']){
				$refURL = parse_url($res['referer']);
				if(is_array($refURL) && isset($refURL['host']) && $refURL['host']){
					$refHost = strtolower(preg_replace('/^www\./i', '', $refURL['host']));
					if($refHost != $ourHost){
						$res['extReferer'] = true;
						//now extract search terms
						$q = false;
						if(preg_match('/(?:google|bing|alltheweb|aol|ask)\./i', $refURL['host'])){
							$q = 'q';
						} else if(stristr($refURL['host'], 'yahoo.')){
							$q = 'p';
						} else if(stristr($refURL['host'], 'baidu.')){
							$q = 'wd';
						}
						if($q){
							$queryVars = array();
							if( isset( $refURL['query'] ) ) {
								parse_str($refURL['query'], $queryVars);
								if(isset($queryVars[$q])){
									$res['searchTerms'] = urlencode($queryVars[$q]);
								}
							}
						}
					}
				}
				if($res['extReferer']){
					if ( isset( $referringPage ) && stristr( $referringPage['host'], 'google.' ) )
					{
						parse_str( $referringPage['query'], $queryVars );
						// echo $queryVars['q']; // This is the search term used
					}
				}
			}
			$res['browser'] = false;
			if($res['UA']){
				$b = $browscap->getBrowser($res['UA']);
				if($b && $b['Parent'] != 'DefaultProperties'){
					$res['browser'] = array(
						'browser'   => !empty($b['Browser']) ? $b['Browser'] : "",
						'version'   => !empty($b['Version']) ? $b['Version'] : "",
						'platform'  => !empty($b['Platform']) ? $b['Platform'] : "",
						'isMobile'  => !empty($b['isMobileDevice']) ? $b['isMobileDevice'] : "",
						'isCrawler' => !empty($b['Crawler']) ? $b['Crawler'] : "",
					);
					
					if (isset($res['jsRun']) && !wfConfig::liveTrafficEnabled() && !wfUtils::truthyToBoolean($res['jsRun'])) {
						$res['jsRun'] = !(isset($b['Crawler']) && $b['Crawler']) ? '1' : '0';
					}
				}
				else {
					$IP = wfUtils::getIP();
					$res['browser'] = array(
						'isCrawler' => !wfLog::isHumanRequest($IP, $res['UA']) ? 'true' : ''
					);
				}
			}


			if($res['userID']){
				$ud = get_userdata($res['userID']);
				if($ud){
					$res['user'] = array(
						'editLink' => wfUtils::editUserLink($res['userID']),
						'display_name' => $res['display_name'],
						'ID' => $res['userID']
					);
				}
			} else {
				$res['user'] = false;
			}
		}
	}

	public function resolveIPs(&$results){
		if(sizeof($results) < 1){ return; }
		$IPs = array();
		foreach($results as &$res){
			if($res['IP']){ //Can also be zero in case of non IP events
				$IPs[] = $res['IP'];
			}
		}
		$IPLocs = wfUtils::getIPsGeo($IPs); //Creates an array with IP as key and data as value

		foreach($results as &$res){
			$ip_printable = wfUtils::inet_ntop($res['IP']);
			if(isset($IPLocs[$ip_printable])){
				$res['loc'] = $IPLocs[$ip_printable];
			} else {
				$res['loc'] = false;
			}
		}
	}
	public function logHitOK(){
		if (!$this->canLogHit) {
			return false;
		}
		if (is_admin()) { return false; } //Don't log admin pageviews
		if (isset($_SERVER['HTTP_USER_AGENT'])) {
			if (preg_match('/WordPress\/' . $this->wp_version . '/i', $_SERVER['HTTP_USER_AGENT'])) { return false; } //Ignore regular requests generated by WP UA.
		}
		$userID = get_current_user_id();
		if (!$userID) {
			$userID = $this->effectiveUserID;
		}
		if ($userID) {
			$user = new WP_User($userID);
			if ($user && $user->exists()) {
				if (wfConfig::get('liveTraf_ignorePublishers') && ($user->has_cap('publish_posts') || $user->has_cap('publish_pages'))) {
					return false;
				}
				
				if (wfConfig::get('liveTraf_ignoreUsers')) {
					$ignored = explode(',', wfConfig::get('liveTraf_ignoreUsers'));
					foreach ($ignored as $entry) {
						if($user->user_login == $entry){
							return false;
						}
					}
				}
			}
		}
		if(wfConfig::get('liveTraf_ignoreIPs')){
			$IPs = explode(',', wfConfig::get('liveTraf_ignoreIPs'));
			$IP = wfUtils::getIP();
			foreach($IPs as $ignoreIP){
				if($ignoreIP == $IP){
					return false;
				}
			}
		}
		if( isset($_SERVER['HTTP_USER_AGENT']) && wfConfig::get('liveTraf_ignoreUA') ){
			if($_SERVER['HTTP_USER_AGENT'] == wfConfig::get('liveTraf_ignoreUA')){
				return false;
			}
		}

		return true;
	}
	private function getDB(){
		if(! $this->db){
			$this->db = new wfDB();
		}
		return $this->db;
	}
	public function firewallBadIPs() {
		$IP = wfUtils::getIP();
		if (wfBlock::isWhitelisted($IP)) {
			return;
		}

		//Range and UA pattern blocking
		$patternBlocks = wfBlock::patternBlocks(true);
		$userAgent = !empty($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '';
		$referrer = !empty($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
		foreach ($patternBlocks as $b) {
			if ($b->matchRequest($IP, $userAgent, $referrer) !== wfBlock::MATCH_NONE) {
				$b->recordBlock();
				wfActivityReport::logBlockedIP($IP, null, 'advanced');
				$this->currentRequest->actionDescription = __('UA/Referrer/IP Range not allowed', 'wordfence');
				$this->do503(3600, __("Advanced blocking in effect.", 'wordfence')); //exits
			}
		}

		// Country blocking
		$countryBlocks = wfBlock::countryBlocks(true);
		foreach ($countryBlocks as $b) {
			$match = $b->matchRequest($IP, false, false);
			if ($match === wfBlock::MATCH_COUNTRY_REDIR_BYPASS) {
				$bypassRedirDest = wfConfig::get('cbl_bypassRedirDest', '');
				
				$this->initLogRequest();
				$this->getCurrentRequest()->actionDescription = __('redirected to bypass URL', 'wordfence');
				$this->getCurrentRequest()->statusCode = 302;
				$this->currentRequest->action = 'cbl:redirect';
				$this->logHit();
				
				wfUtils::doNotCache();
				wp_redirect($bypassRedirDest, 302);
				exit();
			}
			else if ($match === wfBlock::MATCH_COUNTRY_REDIR) {
				$b->recordBlock();
				wfConfig::inc('totalCountryBlocked');
				
				$this->initLogRequest();
				$this->getCurrentRequest()->actionDescription = sprintf(/* translators: URL */ __('blocked access via country blocking and redirected to URL (%s)', 'wordfence'), wfConfig::get('cbl_redirURL'));
				$this->getCurrentRequest()->statusCode = 503;
				if (!$this->getCurrentRequest()->action) {
					$this->currentRequest->action = 'blocked:wordfence';
				}
				$this->logHit();
				
				wfActivityReport::logBlockedIP($IP, null, 'country');
				
				wfUtils::doNotCache();
				wp_redirect(wfConfig::get('cbl_redirURL'), 302);
				exit();
			}
			else if ($match !== wfBlock::MATCH_NONE) {
				$b->recordBlock();
				$this->currentRequest->actionDescription = __('blocked access via country blocking', 'wordfence');
				wfConfig::inc('totalCountryBlocked');
				wfActivityReport::logBlockedIP($IP, null, 'country');
				$this->do503(3600, __('Access from your area has been temporarily limited for security reasons', 'wordfence'));
			}
		}

		//Specific IP blocks
		$ipBlock = wfBlock::findIPBlock($IP);
		if ($ipBlock !== false) {
			$ipBlock->recordBlock();
			$secsToGo = max(0, $ipBlock->expiration - time());
			if (wfConfig::get('other_WFNet') && self::isAuthRequest()) { //It's an auth request and this IP has been blocked
				$this->getCurrentRequest()->action = 'blocked:wfsnrepeat';
				wordfence::wfsnReportBlockedAttempt($IP, 'login');
			}
			$reason = $ipBlock->reason;
			if ($ipBlock->type == wfBlock::TYPE_IP_MANUAL || $ipBlock->type == wfBlock::TYPE_IP_AUTOMATIC_PERMANENT) {
				$reason = __('Manual block by administrator', 'wordfence');
			}
			$this->do503($secsToGo, $reason); //exits
		}
	}

	private function takeBlockingAction($configVar, $reason) {
		if ($this->googleSafetyCheckOK()) {
			$action = wfConfig::get($configVar . '_action');
			if (!$action) {
				return;
			}
			
			$IP = wfUtils::getIP();
			$secsToGo = 0;
			if ($action == 'block') { //Rate limited - block temporarily
				$secsToGo = wfBlock::blockDuration();
				wfBlock::createRateBlock($reason, $IP, $secsToGo);
				wfActivityReport::logBlockedIP($IP, null, 'throttle');
				$this->tagRequestForBlock($reason);

				$alertCallback = array(new wfBlockAlert($IP, $reason, $secsToGo), 'send');

				do_action('wordfence_security_event', 'block', array(
					'ip' => $IP,
					'reason' => $reason,
					'duration' => $secsToGo,
				), $alertCallback);
				wordfence::status(2, 'info', sprintf(/* translators: 1. IP address. 2. Description of firewall action. */ __('Blocking IP %1$s. %2$s', 'wordfence'), $IP, $reason));
			}
			else if ($action == 'throttle') { //Rate limited - throttle
				$secsToGo = wfBlock::rateLimitThrottleDuration();
				wfBlock::createRateThrottle($reason, $IP, $secsToGo);
				wfActivityReport::logBlockedIP($IP, null, 'throttle');

				do_action('wordfence_security_event', 'throttle', array(
					'ip' => $IP,
					'reason' => $reason,
					'duration' => $secsToGo,
				));
				wordfence::status(2, 'info', sprintf(/* translators: 1. IP address. 2. Description of firewall action. */ __('Throttling IP %1$s. %2$s', 'wordfence'), $IP, $reason));
				wfConfig::inc('totalIPsThrottled');
			}
			$this->do503($secsToGo, $reason, false);
		}
		
		return;
	}
	
	/**
	 * Test if the current request is for wp-login.php or xmlrpc.php
	 *
	 * @return boolean
	 */
	private static function isAuthRequest() {
		if ((strpos($_SERVER['REQUEST_URI'], '/wp-login.php') !== false)) {
			return true;
		}
		return false;
	}
	
	public function do503($secsToGo, $reason, $sendEventToCentral = true){
		$this->initLogRequest();

		if ($sendEventToCentral) {
			do_action('wordfence_security_event', 'block', array(
				'ip' => wfUtils::inet_ntop($this->currentRequest->IP),
				'reason' => $this->currentRequest->actionDescription ? $this->currentRequest->actionDescription : $reason,
				'duration' => $secsToGo,
			));
		}

		$this->currentRequest->statusCode = 503;
		if (!$this->currentRequest->action) {
			$this->currentRequest->action = 'blocked:wordfence';
		}
		if (!$this->currentRequest->actionDescription) {
			$this->currentRequest->actionDescription = "blocked: " . $reason;
		}
		
		$this->logHit();

		wfConfig::inc('total503s');
		wfUtils::doNotCache();
		header('HTTP/1.1 503 Service Temporarily Unavailable');
		header('Status: 503 Service Temporarily Unavailable');
		if($secsToGo){
			header('Retry-After: ' . $secsToGo);
		}
		$customText = wpautop(wp_strip_all_tags(wfConfig::get('blockCustomText', '')));
		require_once(dirname(__FILE__) . '/wf503.php');
		exit();
	}
	private function redirect($URL){
		wfUtils::doNotCache();
		wp_redirect($URL, 302);
		exit();
	}
	private function googleSafetyCheckOK(){ //returns true if OK to block. Returns false if we must not block.
		$cacheKey = md5( (isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '') . ' ' . wfUtils::getIP());
		//Cache so we can call this multiple times in one request
		if(! isset(self::$gbSafeCache[$cacheKey])){
			$nb = wfConfig::get('neverBlockBG');
			if($nb == 'treatAsOtherCrawlers'){
				self::$gbSafeCache[$cacheKey] = true; //OK to block because we're treating google like everyone else
			} else if($nb == 'neverBlockUA' || $nb == 'neverBlockVerified'){
				if(wfCrawl::isGoogleCrawler()){ //Check the UA using regex
					if($nb == 'neverBlockVerified'){
						if(wfCrawl::isVerifiedGoogleCrawler(wfUtils::getIP())){ //UA check passed, now verify using PTR if configured to
							self::$gbSafeCache[$cacheKey] = false; //This is a verified Google crawler, so no we can't block it
						} else {
							self::$gbSafeCache[$cacheKey] = true; //This is a crawler claiming to be Google but it did not verify
						}
					} else { //neverBlockUA
						self::$gbSafeCache[$cacheKey] = false; //User configured us to only do a UA check and this claims to be google so don't block
					}
				} else {
					self::$gbSafeCache[$cacheKey] = true; //This isn't a Google UA, so it's OK to block
				}
			} else {
				//error_log("Wordfence error: neverBlockBG option is not set.");
				self::$gbSafeCache[$cacheKey] = false; //Oops the config option is not set. This should never happen because it's set on install. So we return false to indicate it's not OK to block just for safety.
			}
		}
		if(! isset(self::$gbSafeCache[$cacheKey])){
			//error_log("Wordfence assertion fail in googleSafetyCheckOK: cached value is not set.");
			return false; //for safety
		}
		return self::$gbSafeCache[$cacheKey]; //return cached value
	}
	public function addStatus($level, $type, $msg){
		//$msg = '[' . sprintf('%.2f', memory_get_usage(true) / (1024 * 1024)) . '] ' . $msg;
		$this->getDB()->queryWrite("insert into " . $this->statusTable . " (ctime, level, type, msg) values (%s, %d, '%s', '%s')", sprintf('%.6f', microtime(true)), $level, $type, $msg);
	}
	public function getStatusEvents($lastCtime){
		if($lastCtime < 1){
			$lastCtime = $this->getDB()->querySingle("select ctime from " . $this->statusTable . " order by ctime desc limit 1000,1");
			if(! $lastCtime){
				$lastCtime = 0;
			}
		}
		$results = $this->getDB()->querySelect("select ctime, level, type, msg from " . $this->statusTable . " where ctime > %f order by ctime asc", $lastCtime);
		$timeOffset = 3600 * get_option('gmt_offset');
		foreach($results as &$rec){
			//$rec['timeAgo'] = wfUtils::makeTimeAgo(time() - $rec['ctime']);
			$rec['date'] = date('M d H:i:s', (int) $rec['ctime'] + $timeOffset);
			$rec['msg'] = wp_kses_data( (string) $rec['msg']);
		}
		return $results;
	}
	public function getSummaryEvents(){
		$results = $this->getDB()->querySelect("select ctime, level, type, msg from " . $this->statusTable . " where level = 10 order by ctime desc limit 100");
		$timeOffset = 3600 * get_option('gmt_offset');
		foreach($results as &$rec){
			$rec['date'] = date('M d H:i:s', (int) $rec['ctime'] + $timeOffset);
			if(strpos($rec['msg'], 'SUM_PREP:') === 0){
				break;
			}
		}
		return array_reverse($results);
	}

	/**
	 * @return string
	 */
	public function getGooglePattern() {
		return $this->googlePattern;
	}

}

/**
 *
 */
class wfUserIPRange {

	/**
	 * @var string|null
	 */
	private $ip_string;

	/**
	 * @param string|null $ip_string
	 */
	public function __construct($ip_string = null) {
		$this->setIPString($ip_string);
	}

	/**
	 * Check if the supplied IP address is within the user supplied range.
	 *
	 * @param string $ip
	 * @return bool
	 */
	public function isIPInRange($ip) {
		$ip_string = $this->getIPString();
		
		if (strpos($ip_string, '/') !== false) { //CIDR range -- 127.0.0.1/24
			return wfUtils::subnetContainsIP($ip_string, $ip);
		}
		else if (strpos($ip_string, '[') !== false) //Bracketed range -- 127.0.0.[1-100]
		{
			// IPv4 range
			if (strpos($ip_string, '.') !== false && strpos($ip, '.') !== false) {
				// IPv4-mapped-IPv6
				if (preg_match('/:ffff:([^:]+)$/i', $ip_string, $matches)) {
					$ip_string = $matches[1];
				}
				if (preg_match('/:ffff:([^:]+)$/i', $ip, $matches)) {
					$ip = $matches[1];
				}
				
				// Range check
				if (preg_match('/\[\d+\-\d+\]/', $ip_string)) {
					$IPparts = explode('.', $ip);
					$whiteParts = explode('.', $ip_string);
					$mismatch = false;
					if (count($whiteParts) != 4 || count($IPparts) != 4) {
						return false;
					}
					
					for ($i = 0; $i <= 3; $i++) {
						if (preg_match('/^\[(\d+)\-(\d+)\]$/', $whiteParts[$i], $m)) {
							if ($IPparts[$i] < $m[1] || $IPparts[$i] > $m[2]) {
								$mismatch = true;
							}
						}
						else if ($whiteParts[$i] != $IPparts[$i]) {
							$mismatch = true;
						}
					}
					if ($mismatch === false) {
						return true; // Is whitelisted because we did not get a mismatch
					}
				}
				else if ($ip_string == $ip) {
					return true;
				}
				
				// IPv6 range
			}
			else if (strpos($ip_string, ':') !== false && strpos($ip, ':') !== false) {
				$ip = strtolower(wfUtils::expandIPv6Address($ip));
				$ip_string = strtolower(self::expandIPv6Range($ip_string));
				if (preg_match('/\[[a-f0-9]+\-[a-f0-9]+\]/i', $ip_string)) {
					$IPparts = explode(':', $ip);
					$whiteParts = explode(':', $ip_string);
					$mismatch = false;
					if (count($whiteParts) != 8 || count($IPparts) != 8) {
						return false;
					}
					
					for ($i = 0; $i <= 7; $i++) {
						if (preg_match('/^\[([a-f0-9]+)\-([a-f0-9]+)\]$/i', $whiteParts[$i], $m)) {
							$ip_group = hexdec($IPparts[$i]);
							$range_group_from = hexdec($m[1]);
							$range_group_to = hexdec($m[2]);
							if ($ip_group < $range_group_from || $ip_group > $range_group_to) {
								$mismatch = true;
								break;
							}
						}
						else if ($whiteParts[$i] != $IPparts[$i]) {
							$mismatch = true;
							break;
						}
					}
					if ($mismatch === false) {
						return true; // Is whitelisted because we did not get a mismatch
					}
				}
				else if ($ip_string == $ip) {
					return true;
				}
			}
		}
		else if (strpos($ip_string, '-') !== false) { //Linear range -- 127.0.0.1 - 127.0.1.100
			list($ip1, $ip2) = explode('-', $ip_string);
			$ip1N = wfUtils::inet_pton($ip1);
			$ip2N = wfUtils::inet_pton($ip2);
			$ipN = wfUtils::inet_pton($ip);
			return (strcmp($ip1N, $ipN) <= 0 && strcmp($ip2N, $ipN) >= 0);
		}
		else { //Treat as a literal IP
			$ip1 = @wfUtils::inet_pton($ip_string);
			$ip2 = @wfUtils::inet_pton($ip);
			if ($ip1 !== false && $ip1 == $ip2) {
				return true;
			}
		}
		
		return false;
	}

	private static function repeatString($string, $count) {
		if ($count <= 0)
			return '';
		return str_repeat($string, $count);
	}

	/**
	 * Expand a compressed printable range representation of an IPv6 address.
	 *
	 * @todo Hook up exceptions for better error handling.
	 * @todo Allow IPv4 mapped IPv6 addresses (::ffff:192.168.1.1).
	 * @param string $ip_range
	 * @return string
	 */
	public static function expandIPv6Range($ip_range) {
		$colon_count = substr_count($ip_range, ':');
		$dbl_colon_count = substr_count($ip_range, '::');
		if ($dbl_colon_count > 1) {
			return false;
		}
		$dbl_colon_pos = strpos($ip_range, '::');
		if ($dbl_colon_pos !== false) {
			$ip_range = str_replace('::', self::repeatString(':0000',
					(($dbl_colon_pos === 0 || $dbl_colon_pos === strlen($ip_range) - 2) ? 9 : 8) - $colon_count) . ':', $ip_range);
			$ip_range = trim($ip_range, ':');
		}
		$colon_count = substr_count($ip_range, ':');
		if ($colon_count != 7) {
			return false;
		}

		$groups = explode(':', $ip_range);
		$expanded = '';
		foreach ($groups as $group) {
			if (preg_match('/\[([a-f0-9]{1,4})\-([a-f0-9]{1,4})\]/i', $group, $matches)) {
				$expanded .= sprintf('[%s-%s]', str_pad(strtolower($matches[1]), 4, '0', STR_PAD_LEFT), str_pad(strtolower($matches[2]), 4, '0', STR_PAD_LEFT)) . ':';
			} else if (preg_match('/[a-f0-9]{1,4}/i', $group)) {
				$expanded .= str_pad(strtolower($group), 4, '0', STR_PAD_LEFT) . ':';
			} else {
				return false;
			}
		}
		return trim($expanded, ':');
	}

	/**
	 * @return bool
	 */
	public function isValidRange() {
		return $this->isValidCIDRRange() || $this->isValidBracketedRange() || $this->isValidLinearRange() || wfUtils::isValidIP($this->getIPString());
	}
	
	public function isValidCIDRRange() { //e.g., 192.0.2.1/24
		$ip_string = $this->getIPString();
		if (preg_match('/[^0-9a-f:\/\.]/i', $ip_string)) { return false; }
		return wfUtils::isValidCIDRRange($ip_string);
	}
	
	public function isValidBracketedRange() { //e.g., 192.0.2.[1-10]
		$ip_string = $this->getIPString();
		if (preg_match('/[^0-9a-f:\.\[\]\-]/i', $ip_string)) { return false; }
		if (strpos($ip_string, '.') !== false) { //IPv4
			if (preg_match_all('/(\d+)/', $ip_string, $matches) > 0) {
				foreach ($matches[1] as $match) {
					$group = (int) $match;
					if ($group > 255 || $group < 0) {
						return false;
					}
				}
			}
			
			$group_regex = '([0-9]{1,3}|\[[0-9]{1,3}\-[0-9]{1,3}\])';
			return preg_match('/^' . str_repeat("{$group_regex}\\.", 3) . $group_regex . '$/i', $ip_string) > 0;
		}
		
		//IPv6
		if (strpos($ip_string, '::') !== false) {
			$ip_string = self::expandIPv6Range($ip_string);
		}
		if (!$ip_string) {
			return false;
		}
		$group_regex = '([a-f0-9]{1,4}|\[[a-f0-9]{1,4}\-[a-f0-9]{1,4}\])';
		return preg_match('/^' . str_repeat("$group_regex:", 7) . $group_regex . '$/i', $ip_string) > 0;
	}
	
	public function isValidLinearRange() { //e.g., 192.0.2.1-192.0.2.100
		$ip_string = $this->getIPString();
		if (preg_match('/[^0-9a-f:\.\-]/i', $ip_string)) { return false; }
		list($ip1, $ip2) = explode("-", $ip_string);
		$ip1N = @wfUtils::inet_pton($ip1);
		$ip2N = @wfUtils::inet_pton($ip2);
		
		if ($ip1N === false || !wfUtils::isValidIP($ip1) || $ip2N === false || !wfUtils::isValidIP($ip2)) {
			return false;
		}
		
		return strcmp($ip1N, $ip2N) <= 0;
	}
	
	public function isMixedRange() { //e.g., 192.0.2.1-2001:db8::ffff
		$ip_string = $this->getIPString();
		if (preg_match('/[^0-9a-f:\.\-]/i', $ip_string)) { return false; }
		list($ip1, $ip2) = explode("-", $ip_string);
		
		$ipv4Count = 0;
		$ipv4Count += filter_var($ip1, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) !== false ? 1 : 0;
		$ipv4Count += filter_var($ip2, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) !== false ? 1 : 0;
		
		$ipv6Count = 0;
		$ipv6Count += filter_var($ip1, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) !== false ? 1 : 0;
		$ipv6Count += filter_var($ip2, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) !== false ? 1 : 0;
		
		if ($ipv4Count != 2 && $ipv6Count != 2) { 
			return true;
		}
		
		return false;
	}

	protected function _sanitizeIPRange($ip_string) {
		if (!is_string($ip_string))
			return null;
		$ip_string = preg_replace('/\s/', '', $ip_string); //Strip whitespace
		$ip_string = preg_replace('/[\\x{2013}-\\x{2015}]/u', '-', $ip_string); //Non-hyphen dashes to hyphen
		$ip_string = strtolower($ip_string);
		
		if (preg_match('/^\d+-\d+$/', $ip_string)) { //v5 32 bit int style format
			list($start, $end) = explode('-', $ip_string);
			$start = long2ip($start);
			$end = long2ip($end);
			$ip_string = "{$start}-{$end}";
		}
		
		return $ip_string;
	}

	/**
	 * @return string|null
	 */
	public function getIPString() {
		return $this->ip_string;
	}

	/**
	 * @param string|null $ip_string
	 */
	public function setIPString($ip_string) {
		$this->ip_string = $this->_sanitizeIPRange($ip_string);
	}
}

/**
 * The function of this class is to detect admin users created via direct access to the database (in other words, not
 * through WordPress).
 */
class wfAdminUserMonitor {

	protected $currentAdminList = array();

	public function isEnabled() {
		$options = wfScanner::shared()->scanOptions();
		$enabled = $options['scansEnabled_suspiciousAdminUsers'];
		if ($enabled && is_multisite()) {
			if (!function_exists('wp_is_large_network')) {
				require_once(ABSPATH . WPINC . '/ms-functions.php');
			}
			$enabled = !wp_is_large_network('sites') && !wp_is_large_network('users');
		}
		return $enabled;
	}

	/**
	 *
	 */
	public function createInitialList() {
		$admins = $this->getCurrentAdmins();
		$adminUserList = array();
		foreach ($admins as $id => $user) {
			$adminUserList[$id] = 1;
		}
		wfConfig::set_ser('adminUserList', $adminUserList);
	}

	/**
	 * @param int $userID
	 */
	public function grantSuperAdmin($userID = null) {
		if ($userID) {
			$this->addAdmin($userID);
		}
	}

	/**
	 * @param int $userID
	 */
	public function revokeSuperAdmin($userID = null) {
		if ($userID) {
			$this->removeAdmin($userID);
		}
	}

	/**
	 * @param int $ID
	 * @param mixed $role
	 * @param mixed $old_roles
	 */
	public function updateToUserRole($ID = null, $role = null, $old_roles = null) {
		$admins = $this->getLoggedAdmins();
		if ($role !== 'administrator' && array_key_exists($ID, $admins)) {
			$this->removeAdmin($ID);
		} else if ($role === 'administrator') {
			$this->addAdmin($ID);
		}
	}

	/**
	 * @return array|bool
	 */
	public function checkNewAdmins() {
		$loggedAdmins = $this->getLoggedAdmins();
		$admins = $this->getCurrentAdmins();
		$suspiciousAdmins = array();
		foreach ($admins as $adminID => $v) {
			if (!array_key_exists($adminID, $loggedAdmins)) {
				$suspiciousAdmins[] = $adminID;
			}
		}
		return $suspiciousAdmins ? $suspiciousAdmins : false;
	}

	/**
	 * Checks if the supplied user ID is suspicious.
	 *
	 * @param int $userID
	 * @return bool
	 */
	public function isAdminUserLogged($userID) {
		$loggedAdmins = $this->getLoggedAdmins();
		return array_key_exists($userID, $loggedAdmins);
	}

	/**
	 * @param bool $forceReload
	 * @return array
	 */
	public function getCurrentAdmins($forceReload = false) {
		if (empty($this->currentAdminList) || $forceReload) {
			require_once(ABSPATH . WPINC . '/user.php');
			if (is_multisite()) {
				if (function_exists("get_sites")) {
					$sites = get_sites(array(
						'network_id' => null,
					));
				}
				else {
					$sites = wp_get_sites(array(
						'network_id' => null,
					));
				}
			} else {
				$sites = array(array(
					'blog_id' => get_current_blog_id(),
				));
			}

			// not very efficient, but the WordPress API doesn't provide a good way to do this.
			$this->currentAdminList = array();
			foreach ($sites as $siteRow) {
				$siteRowArray = (array) $siteRow;
				$user_query = new WP_User_Query(array(
					'blog_id' => $siteRowArray['blog_id'],
					'role'    => 'administrator',
				));
				$users = $user_query->get_results();
				if (is_array($users)) {
					/** @var WP_User $user */
					foreach ($users as $user) {
						$this->currentAdminList[$user->ID] = $user;
					}
				}
			}

			// Add any super admins that aren't also admins on a network
			$superAdmins = get_super_admins();
			foreach ($superAdmins as $userLogin) {
				$user = get_user_by('login', $userLogin);
				if ($user) {
					$this->currentAdminList[$user->ID] = $user;
				}
			}
		}

		return $this->currentAdminList;
	}

	public function getLoggedAdmins() {
		$loggedAdmins = wfConfig::get_ser('adminUserList', false);
		if (!is_array($loggedAdmins)) {
			$this->createInitialList();
			$loggedAdmins = wfConfig::get_ser('adminUserList', false);
		}
		if (!is_array($loggedAdmins)) {
			$loggedAdmins = array();
		}
		return $loggedAdmins;
	}

	/**
	 * @param int $userID
	 */
	public function addAdmin($userID) {
		$loggedAdmins = $this->getLoggedAdmins();
		if (!array_key_exists($userID, $loggedAdmins)) {
			$loggedAdmins[$userID] = 1;
			wfConfig::set_ser('adminUserList', $loggedAdmins);
		}
	}

	/**
	 * @param int $userID
	 */
	public function removeAdmin($userID) {
		$loggedAdmins = $this->getLoggedAdmins();
		if (array_key_exists($userID, $loggedAdmins) && !array_key_exists($userID, $this->getCurrentAdmins())) {
			unset($loggedAdmins[$userID]);
			wfConfig::set_ser('adminUserList', $loggedAdmins);
		}
	}
}

/**
 * Represents a request record
 * 
 * @property int $id
 * @property float $attackLogTime
 * @property float $ctime
 * @property string $IP
 * @property bool $jsRun
 * @property int $statusCode
 * @property bool $isGoogle
 * @property int $userID
 * @property string $URL
 * @property string $referer
 * @property string $UA
 * @property string $action
 * @property string $actionDescription
 * @property string $actionData
 */
class wfRequestModel extends wfModel {

	private static $actionDataEncodedParams = array(
		'paramKey',
		'paramValue',
		'path',
	);

	/**
	 * @param $actionData
	 * @return mixed|string|void
	 */
	public static function serializeActionData($actionData, $optionalKeys = array(), $maxLength = 65535) {
		if (is_array($actionData)) {
			foreach (self::$actionDataEncodedParams as $key) {
				if (array_key_exists($key, $actionData)) {
					$actionData[$key] = base64_encode($actionData[$key]);
				}
			}
		}
		do {
			$serialized = json_encode($actionData, JSON_UNESCAPED_SLASHES);
			$length = strlen($serialized);
			if ($length <= $maxLength)
				return $serialized;
			$excess = $length - $maxLength;
			$truncated = false;
			foreach ($optionalKeys as $key) {
				if (array_key_exists($key, $actionData)) {
					$fieldValue = $actionData[$key];
					$fieldLength = strlen($fieldValue);
					$truncatedLength = min($fieldLength, $excess);
					$truncated = true;
					if ($truncatedLength > 0) {
						$actionData[$key] = substr($fieldValue, 0, -$truncatedLength);
						$excess -= $truncatedLength;
					}
					else {
						unset($actionData[$key]);
						break;
					}
				}
			}
		} while ($truncated);
		return null;
	}

	/**
	 * @param $actionDataJSON
	 * @return mixed|string|void
	 */
	public static function unserializeActionData($actionDataJSON) {
		$actionData = json_decode($actionDataJSON, true);
		if (is_array($actionData)) {
			foreach (self::$actionDataEncodedParams as $key) {
				if (array_key_exists($key, $actionData)) {
					$actionData[$key] = base64_decode($actionData[$key]);
				}
			}
		}
		else {
			$actionData = array();
		}
		return $actionData;
	}

	private $columns = array(
		'id',
		'attackLogTime',
		'ctime',
		'IP',
		'jsRun',
		'statusCode',
		'isGoogle',
		'userID',
		'URL',
		'referer',
		'UA',
		'action',
		'actionDescription',
		'actionData',
	);

	public function getIDColumn() {
		return 'id';
	}

	public function getTable() {
		return wfDB::networkTable('wfHits');
	}

	public function hasColumn($column) {
		return in_array($column, $this->columns);
	}
	
	public function save() {
		$sapi = @php_sapi_name();
		if ($sapi == "cli") {
			return false;
		}
		
		return parent::save();
	}
}


class wfLiveTrafficQuery {

	protected $validParams = array(
		'id' => 'h.id',
		'ctime' => 'h.ctime',
		'ip' => 'h.ip',
		'jsrun' => 'h.jsrun',
		'statuscode' => 'h.statuscode',
		'isgoogle' => 'h.isgoogle',
		'userid' => 'h.userid',
		'url' => 'h.url',
		'referer' => 'h.referer',
		'ua' => 'h.ua',
		'action' => 'h.action',
		'actiondescription' => 'h.actiondescription',
		'actiondata' => 'h.actiondata',

		// wfLogins
		'user_login' => 'u.user_login',
		'username' => 'l.username',
	);

	/** @var wfLiveTrafficQueryFilterCollection */
	private $filters = array();

	/** @var wfLiveTrafficQueryGroupBy */
	private $groupBy;
	/**
	 * @var float|null
	 */
	private $startDate;
	/**
	 * @var float|null
	 */
	private $endDate;
	/**
	 * @var int
	 */
	private $limit;
	/**
	 * @var int
	 */
	private $offset;

	private $tableName;

	/** @var wfLog */
	private $wfLog;

	/**
	 * wfLiveTrafficQuery constructor.
	 *
	 * @param wfLog $wfLog
	 * @param wfLiveTrafficQueryFilterCollection $filters
	 * @param wfLiveTrafficQueryGroupBy $groupBy
	 * @param float $startDate
	 * @param float $endDate
	 * @param int $limit
	 * @param int $offset
	 */
	public function __construct($wfLog, $filters = null, $groupBy = null, $startDate = null, $endDate = null, $limit = 20, $offset = 0) {
		$this->wfLog = $wfLog;
		$this->filters = $filters;
		$this->groupBy = $groupBy;
		$this->startDate = $startDate;
		$this->endDate = $endDate;
		$this->limit = $limit;
		$this->offset = $offset;
	}

	/**
	 * @return array|null|object
	 */
	public function execute() {
		global $wpdb;
		$delayedHumanBotFiltering = false;
		$humanOnly = false;
		$sql = $this->buildQuery($delayedHumanBotFiltering, $humanOnly);
		$results = $wpdb->get_results($sql, ARRAY_A);
		
		if ($delayedHumanBotFiltering) {
			$browscap = wfBrowscap::shared();
			foreach ($results as $index => $res) {
				if ($res['UA']) {
					$b = $browscap->getBrowser($res['UA']);
					$jsRun = wfUtils::truthyToBoolean($res['jsRun']);
					if ($b && $b['Parent'] != 'DefaultProperties') {
						$jsRun = wfUtils::truthyToBoolean($res['jsRun']);
						if (!wfConfig::liveTrafficEnabled() && !$jsRun) {
							$jsRun = !(isset($b['Crawler']) && $b['Crawler']);
						}
					}
					
					if (!$humanOnly && $jsRun || $humanOnly && !$jsRun) {
						unset($results[$index]);
					}
				}
			}
		}
		
		$this->getWFLog()->processGetHitsResults('', $results);
		
		$verifyCrawlers = false;
		if ($this->filters !== null && count($this->filters->getFilters()) > 0) {
			$filters = $this->filters->getFilters();
			foreach ($filters as $f) {
				if (strtolower($f->getParam()) == "isgoogle") {
					$verifyCrawlers = true;
					break;
				}
			}
		}
		
		foreach ($results as $key => &$row) {
			if ($row['isGoogle'] && $verifyCrawlers) {
				if (!wfCrawl::isVerifiedGoogleCrawler($row['IP'], $row['UA'])) {
					unset($results[$key]); //foreach copies $results and iterates on the copy, so it is safe to mutate $results within the loop
					continue;
				}
			}

			$row['actionData'] = $row['actionData'] === null ? array() : (array) json_decode($row['actionData'], true);
		}
		return array_values($results);
	}

	/**
	 * @param mixed $delayedHumanBotFiltering Whether or not human/bot filtering should be applied in PHP rather than SQL.
	 * @param mixed $humanOnly When using delayed filtering, whether to show only humans or only bots.
	 * 
	 * @return string
	 * @throws wfLiveTrafficQueryException
	 */
	public function buildQuery(&$delayedHumanBotFiltering, &$humanOnly) {
		global $wpdb;
		$filters = $this->getFilters();
		$groupBy = $this->getGroupBy();
		$startDate = $this->getStartDate();
		$endDate = $this->getEndDate();
		$limit = absint($this->getLimit());
		$offset = absint($this->getOffset());

		$wheres = array("h.action != 'logged:waf'", "h.action != 'scan:detectproxy'");
		if ($startDate) {
			$wheres[] = $wpdb->prepare('h.ctime > %f', $startDate);
		}
		if ($endDate) {
			$wheres[] = $wpdb->prepare('h.ctime < %f', $endDate);
		}

		if ($filters instanceof wfLiveTrafficQueryFilterCollection) {
			if (!wfConfig::liveTrafficEnabled()) {
				$individualFilters = $filters->getFilters();
				foreach ($individualFilters as $index => $f) {
					if ($f->getParam() == 'jsRun' && $delayedHumanBotFiltering !== null && $humanOnly !== null) {
						$humanOnly = wfUtils::truthyToBoolean($f->getValue());
						if ($f->getOperator() == '!=') {
							$humanOnly = !$humanOnly;
						}
						$delayedHumanBotFiltering = true;
						unset($individualFilters[$index]);
					}
				}
				$filters->setFilters($individualFilters);
			}
			
			$filtersSQL = $filters->toSQL();
			if ($filtersSQL) {
				$wheres[] = $filtersSQL;
			}
		}

		$orderBy = 'ORDER BY h.ctime DESC';
		$select = ', l.username';
		$groupBySQL = '';
		if ($groupBy && $groupBy->validate()) {
			$groupBySQL = "GROUP BY {$groupBy->getParam()}";
			$orderBy = 'ORDER BY hitCount DESC';
			$select .= ', COUNT(h.id) as hitCount, MAX(h.ctime) AS lastHit, u.user_login AS username';
			
			if ($groupBy->getParam() == 'user_login') {
				$wheres[] = 'user_login IS NOT NULL';
			}
			else if ($groupBy->getParam() == 'action') {
				$wheres[] = '(statusCode = 403 OR statusCode = 503)';
			}
		}
		
		$where = join(' AND ', $wheres);
		if ($where) {
			$where = 'WHERE ' . $where;
		}
		if (!$limit || $limit > 1000) {
			$limit = 20;
		}
		$limitSQL = $wpdb->prepare('LIMIT %d, %d', $offset, $limit);
		
		$table_wfLogins = wfDB::networkTable('wfLogins');
		$sql = <<<SQL
SELECT h.*, u.display_name{$select} FROM {$this->getTableName()} h
LEFT JOIN {$wpdb->users} u on h.userID = u.ID
LEFT JOIN {$table_wfLogins} l on h.id = l.hitID
$where
$groupBySQL
$orderBy
$limitSQL
SQL;

		return $sql;
	}

	/**
	 * @param $param
	 * @return bool
	 */
	public function isValidParam($param) {
		return array_key_exists(strtolower($param), $this->validParams);
	}

	/**
	 * @param $getParam
	 * @return bool|string
	 */
	public function getColumnFromParam($getParam) {
		$getParam = strtolower($getParam);
		if (array_key_exists($getParam, $this->validParams)) {
			return $this->validParams[$getParam];
		}
		return false;
	}

	/**
	 * @return wfLiveTrafficQueryFilterCollection
	 */
	public function getFilters() {
		return $this->filters;
	}

	/**
	 * @param wfLiveTrafficQueryFilterCollection $filters
	 */
	public function setFilters($filters) {
		$this->filters = $filters;
	}

	/**
	 * @return float|null
	 */
	public function getStartDate() {
		return $this->startDate;
	}

	/**
	 * @param float|null $startDate
	 */
	public function setStartDate($startDate) {
		$this->startDate = $startDate;
	}

	/**
	 * @return float|null
	 */
	public function getEndDate() {
		return $this->endDate;
	}

	/**
	 * @param float|null $endDate
	 */
	public function setEndDate($endDate) {
		$this->endDate = $endDate;
	}

	/**
	 * @return wfLiveTrafficQueryGroupBy
	 */
	public function getGroupBy() {
		return $this->groupBy;
	}

	/**
	 * @param wfLiveTrafficQueryGroupBy $groupBy
	 */
	public function setGroupBy($groupBy) {
		$this->groupBy = $groupBy;
	}

	/**
	 * @return int
	 */
	public function getLimit() {
		return $this->limit;
	}

	/**
	 * @param int $limit
	 */
	public function setLimit($limit) {
		$this->limit = $limit;
	}

	/**
	 * @return int
	 */
	public function getOffset() {
		return $this->offset;
	}

	/**
	 * @param int $offset
	 */
	public function setOffset($offset) {
		$this->offset = $offset;
	}

	/**
	 * @return string
	 */
	public function getTableName() {
		if ($this->tableName === null) {
			$this->tableName = wfDB::networkTable('wfHits');
		}
		return $this->tableName;
	}

	/**
	 * @param string $tableName
	 */
	public function setTableName($tableName) {
		$this->tableName = $tableName;
	}

	/**
	 * @return wfLog
	 */
	public function getWFLog() {
		return $this->wfLog;
	}

	/**
	 * @param wfLog $wfLog
	 */
	public function setWFLog($wfLog) {
		$this->wfLog = $wfLog;
	}
}

class wfLiveTrafficQueryFilterCollection {

	private $filters = array();

	/**
	 * wfLiveTrafficQueryFilterCollection constructor.
	 *
	 * @param array $filters
	 */
	public function __construct($filters = array()) {
		$this->filters = $filters;
	}

	public function toSQL() {
		$params = array();
		$sql = '';
		$filters = $this->getFilters();
		if ($filters) {
			/** @var wfLiveTrafficQueryFilter $filter */
			foreach ($filters as $filter) {
				$params[$filter->getParam()][] = $filter;
			}
		}

		foreach ($params as $param => $filters) {
			// $sql .= '(';
			$filtersSQL = '';
			foreach ($filters as $filter) {
				$filterSQL = $filter->toSQL();
				if ($filterSQL) {
					$filtersSQL .= $filterSQL . ' OR ';
				}
			}
			if ($filtersSQL) {
				$sql .= '(' . substr($filtersSQL, 0, -4) . ') AND ';
			}
		}
		if ($sql) {
			$sql = substr($sql, 0, -5);
		}
		return $sql;
	}

	public function addFilter($filter) {
		$this->filters[] = $filter;
	}

	/**
	 * @return array
	 */
	public function getFilters() {
		return $this->filters;
	}

	/**
	 * @param array $filters
	 */
	public function setFilters($filters) {
		$this->filters = $filters;
	}
}

class wfLiveTrafficQueryFilter {

	private $param;
	private $operator;
	private $value;

	protected $validOperators = array(
		'=',
		'!=',
		'contains',
		'match',
		'hregexp',
		'hnotregexp',
	);

	/**
	 * @var wfLiveTrafficQuery
	 */
	private $query;

	/**
	 * wfLiveTrafficQueryFilter constructor.
	 *
	 * @param wfLiveTrafficQuery $query
	 * @param string $param
	 * @param string $operator
	 * @param string $value
	 */
	public function __construct($query, $param, $operator, $value) {
		$this->query = $query;
		$this->param = $param;
		$this->operator = $operator;
		$this->value = $value;
	}

	/**
	 * @return string|void
	 */
	public function toSQL() {
		$sql = '';
		if ($this->validate()) {
			/** @var wpdb $wpdb */
			global $wpdb;
			$operator = $this->getOperator();
			$param = $this->getQuery()->getColumnFromParam($this->getParam());
			if (!$param) {
				return $sql;
			}
			$value = $this->getValue();
			switch ($operator) {
				case 'contains':
					$like = addcslashes($value, '_%\\');
					$sql = $wpdb->prepare("$param LIKE %s", "%$like%");
					break;

				case 'match':
					$sql = $wpdb->prepare("$param LIKE %s", $value);
					break;
				
				case 'hregexp':
					$sql = $wpdb->prepare("HEX($param) REGEXP %s", $value);
					break;
				
				case 'hnotregexp':
					$sql = $wpdb->prepare("HEX($param) NOT REGEXP %s", $value);
					break;

				default:
					$sql = $wpdb->prepare("$param $operator %s", $value);
					break;
			}
		}
		return $sql;
	}

	/**
	 * @return bool
	 */
	public function validate() {
		$valid = $this->isValidParam($this->getParam()) && $this->isValidOperator($this->getOperator());
		if (defined('WP_DEBUG') && WP_DEBUG) {
			if (!$valid) {
				throw new wfLiveTrafficQueryException("Invalid param/operator [{$this->getParam()}]/[{$this->getOperator()}] passed to " . get_class($this));
			}
			return true;
		}
		return $valid;
	}

	/**
	 * @param string $param
	 * @return bool
	 */
	public function isValidParam($param) {
		return $this->getQuery() && $this->getQuery()->isValidParam($param);
	}

	/**
	 * @param string $operator
	 * @return bool
	 */
	public function isValidOperator($operator) {
		return in_array($operator, $this->validOperators);
	}

	/**
	 * @return mixed
	 */
	public function getParam() {
		return $this->param;
	}

	/**
	 * @param mixed $param
	 */
	public function setParam($param) {
		$this->param = $param;
	}

	/**
	 * @return mixed
	 */
	public function getOperator() {
		return $this->operator;
	}

	/**
	 * @param mixed $operator
	 */
	public function setOperator($operator) {
		$this->operator = $operator;
	}

	/**
	 * @return mixed
	 */
	public function getValue() {
		return $this->value;
	}

	/**
	 * @param mixed $value
	 */
	public function setValue($value) {
		$this->value = $value;
	}

	/**
	 * @return wfLiveTrafficQuery
	 */
	public function getQuery() {
		return $this->query;
	}

	/**
	 * @param wfLiveTrafficQuery $query
	 */
	public function setQuery($query) {
		$this->query = $query;
	}
}

class wfLiveTrafficQueryGroupBy {

	private $param;

	/**
	 * @var wfLiveTrafficQuery
	 */
	private $query;

	/**
	 * wfLiveTrafficQueryGroupBy constructor.
	 *
	 * @param wfLiveTrafficQuery $query
	 * @param string $param
	 */
	public function __construct($query, $param) {
		$this->query = $query;
		$this->param = $param;
	}

	/**
	 * @return bool
	 * @throws wfLiveTrafficQueryException
	 */
	public function validate() {
		$valid = $this->isValidParam($this->getParam());
		if (defined('WP_DEBUG') && WP_DEBUG) {
			if (!$valid) {
				throw new wfLiveTrafficQueryException("Invalid param [{$this->getParam()}] passed to " . get_class($this));
			}
			return true;
		}
		return $valid;
	}

	/**
	 * @param string $param
	 * @return bool
	 */
	public function isValidParam($param) {
		return $this->getQuery() && $this->getQuery()->isValidParam($param);
	}

	/**
	 * @return wfLiveTrafficQuery
	 */
	public function getQuery() {
		return $this->query;
	}

	/**
	 * @param wfLiveTrafficQuery $query
	 */
	public function setQuery($query) {
		$this->query = $query;
	}

	/**
	 * @return mixed
	 */
	public function getParam() {
		return $this->param;
	}

	/**
	 * @param mixed $param
	 */
	public function setParam($param) {
		$this->param = $param;
	}

}


class wfLiveTrafficQueryException extends Exception {

}

class wfErrorLogHandler {
	public static function getErrorLogs($deepSearch = false) {
		static $errorLogs = null;
		
		if ($errorLogs === null) {
			$searchPaths = array(ABSPATH, ABSPATH . 'wp-admin', ABSPATH . 'wp-content');
			
			$homePath = wfUtils::getHomePath();
			if (!in_array($homePath, $searchPaths)) {
				$searchPaths[] = $homePath;
			}
			
			$errorLogPath = ini_get('error_log');
			if (!empty($errorLogPath) && !in_array($errorLogPath, $searchPaths)) {
				$searchPaths[] = $errorLogPath;
			}
			
			$errorLogs = array();
			foreach ($searchPaths as $s) {
				$errorLogs = array_merge($errorLogs, self::_scanForLogs($s, $deepSearch));
			}
		}
		return $errorLogs;
	}
	
	private static function _scanForLogs($path, $deepSearch = false) {
		static $processedFolders = array(); //Protection for endless loops caused by symlinks
		if (is_file($path)) {
			$file = basename($path);
			if (preg_match('#(?:^php_errorlog$|error_log(\-\d+)?$|\.log$)#i', $file)) {
				return array($path => is_readable($path));
			}
			return array();
		}
		
		$path = untrailingslashit($path);
		$contents = @scandir($path);
		if (!is_array($contents)) {
			return array();
		}
		
		$processedFolders[$path] = true;
		$errorLogs = array();
		foreach ($contents as $name) {
			if ($name == '.' || $name == '..') { continue; }
			$testPath = $path . DIRECTORY_SEPARATOR . $name;
			if (!array_key_exists($testPath, $processedFolders)) {
				if ((is_dir($testPath) && $deepSearch) || !is_dir($testPath)) {
					$errorLogs = array_merge($errorLogs, self::_scanForLogs($testPath, $deepSearch));
				}
			}
		}
		return $errorLogs;
	}
	
	public static function outputErrorLog($path) {
		$errorLogs = self::getErrorLogs();
		if (!isset($errorLogs[$path])) { //Only allow error logs we've identified
			global $wp_query;
			$wp_query->set_404();
			status_header(404);
			nocache_headers();
			
			$template = get_404_template();
			if ($template && file_exists($template)) {
				include($template);
			}
			exit;
		}
		
		$fh = @fopen($path, 'r');
		if (!$fh) {
			status_header(503);
			nocache_headers();
			echo "503 Service Unavailable";
			exit;
		}
		
		$headersOutputted = false;
		while (!feof($fh)) {
			$data = fread($fh, 1 * 1024 * 1024); //read 1 megs max per chunk
			if ($data === false) { //Handle the error where the file was reported readable but we can't actually read it
				status_header(503);
				nocache_headers();
				echo "503 Service Unavailable";
				exit;
			}
		
			if (!$headersOutputted) {
				header('Content-Type: text/plain');
				header('Content-Disposition: attachment; filename="' . basename($path));
				$headersOutputted = true;
			}
			echo $data;
		}
		exit;
	}
}lib/IPTrafList.php000064400000005756150755146450010035 0ustar00<?php if (!defined('WORDFENCE_VERSION')) { exit; } ?>
<?php
if (!wfUtils::isAdmin()) {
	exit();
}
/**
 * @var array $results
 */
?>
<table border="0" cellpadding="2" cellspacing="0" class="wf-recent-traffic-table">
	<?php foreach ($results as $key => $v) { ?>
		<tr>
			<th><?php esc_html_e('Time:', 'wordfence') ?></th>
			<td><?php esc_html_e(sprintf(
				/* translators: 1. Time ago, example: 2 hours, 40 seconds. 2. Localized date. 3. Unix timestamp.  */
					__('%1$s ago -- %2$s -- %3$s in Unixtime', 'wordfence'), $v['timeAgo'], date(DATE_RFC822, (int) $v['ctime']), $v['ctime'])) ?></td>
		</tr>
		<?php if ($v['timeSinceLastHit']) {
			echo '<th>' . esc_html__('Seconds since last hit:', 'wordfence') . '</th><td>' . $v['timeSinceLastHit'] . '</td></tr>';
		} ?>
		<tr>
			<th><?php esc_html_e('URL:', 'wordfence') ?></th>
			<td>
				<a href="<?php echo esc_url($v['URL']) ?>" target="_blank" rel="noopener noreferrer"><?php echo esc_html($v['URL']); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>
			</td>
		</tr>
		<tr>
			<th>Type:</th>
			<td><?php
				if ($v['statusCode'] == '404') {
					echo '<span style="color: #F00;">' . esc_html__('Page not found', 'wordfence') . '</span>';
				}
				else if ($v['type'] == 'hit') {
					esc_html_e('Normal request', 'wordfence');
				} ?></td>
		</tr>
		<?php if ($v['referer']) { ?>
			<tr>
			<th><?php esc_html_e('Referrer:', 'wordfence') ?></th>
			<td>
				<a href="<?php echo esc_url($v['referer']); ?>" target="_blank" rel="noopener noreferrer"><?php echo esc_html($v['referer']); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>
			</td></tr><?php } ?>
		<tr>
			<th><?php esc_html_e('Full Browser ID:', 'wordfence') ?></th>
			<td><?php echo esc_html($v['UA']); ?></td>
		</tr>
		<?php if ($v['user']) { ?>
			<tr>
				<th><?php esc_html_e('User:', 'wordfence') ?></th>
				<td>
					<a href="<?php echo esc_url($v['user']['editLink']); ?>" target="_blank" rel="noopener noreferrer"><span data-userid="<?php echo esc_attr($v['user']['ID']); ?>" class="wfAvatar"></span><?php echo esc_html($v['user']['display_name']); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>
				</td>
			</tr>
		<?php } ?>
		<?php if ($v['loc']) { ?>
			<tr>
				<th><?php esc_html_e('Location:', 'wordfence') ?></th>
				<td>
					<span class="wf-flag <?php echo esc_attr('wf-flag-' . strtolower($v['loc']['countryCode'])); ?>" title="<?php echo esc_attr($v['loc']['countryName']); ?>"></span>
					<?php if ($v['loc']['city']) {
						echo esc_html($v['loc']['city']) . ', ';
					} ?>
					<?php 
					if ($v['loc']['region'] && wfUtils::shouldDisplayRegion($v['loc']['countryName'])) {
						echo esc_html($v['loc']['region']) . ', ';
					} ?>
					<?php echo esc_html($v['loc']['countryName']); ?>
				</td>
			</tr>
		<?php } ?>
		<tr class="wf-recent-traffic-table-row-border">
			<td colspan="2"><div></div></td>
		</tr>
	<?php } ?>

</table>lib/wfScanFileLink.php000064400000000623150755146450010677 0ustar00<?php

require_once __DIR__ . '/wfScanFile.php';

class wfScanFileLink extends wfScanFile {

	private $linkPath;

	public function __construct($linkPath, $realPath, $wordpressPath) {
		parent::__construct($realPath, $wordpressPath);
		$this->linkPath = $linkPath;
	}

	public function getLinkPath() {
		return $this->linkPath;
	}

	public function getDisplayPath() {
		return $this->getLinkPath();
	}

}lib/wfConfig.php000064400000261203150755146450007605 0ustar00<?php
class wfConfig {
	const TABLE_EXISTS_OPTION = 'wordfence_installed'; //Also exists in bootstrap.php
	
	const AUTOLOAD = 'yes';
	const DONT_AUTOLOAD = 'no';
	
	const TYPE_BOOL = 'boolean';
	const TYPE_INT = 'integer';
	const TYPE_FLOAT = 'double';
	const TYPE_DOUBLE = 'double';
	const TYPE_STRING = 'string';
	const TYPE_ARRAY = 'array';
	const TYPE_JSON = 'json';
	
	const OPTIONS_TYPE_GLOBAL = 'global';
	const OPTIONS_TYPE_FIREWALL = 'firewall';
	const OPTIONS_TYPE_BLOCKING = 'blocking';
	const OPTIONS_TYPE_SCANNER = 'scanner';
	const OPTIONS_TYPE_TWO_FACTOR = 'twofactor';
	const OPTIONS_TYPE_LIVE_TRAFFIC = 'livetraffic';
	const OPTIONS_TYPE_DIAGNOSTICS = 'diagnostics';
	const OPTIONS_TYPE_ALL = 'all';
	
	public static $diskCache = array();
	private static $diskCacheDisabled = false; //enables if we detect a write fail so we don't keep calling stat()
	private static $cacheDisableCheckDone = false;
	private static $tableExists = true;
	private static $cache = array();
	private static $DB = false;
	private static $tmpFileHeader = "<?php\n/* Wordfence temporary file security header */\necho \"Nothing to see here!\\n\"; exit(0);\n?>";
	private static $tmpDirCache = false;
	public static $defaultConfig = array(
		//All exportable boolean options
		"checkboxes" => array(
			"alertOn_update" => array('value' => false, 'autoload' => self::AUTOLOAD),
			"alertOn_scanIssues" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"alertOn_throttle" => array('value' => false, 'autoload' => self::AUTOLOAD),
			"alertOn_block" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"alertOn_loginLockout" => array('value' => true, 'autoload' => self::AUTOLOAD),
			'alertOn_breachLogin' => array('value' => true, 'autoload' => self::AUTOLOAD),
			"alertOn_lostPasswdForm" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"alertOn_adminLogin" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"alertOn_firstAdminLoginOnly" => array('value' => false, 'autoload' => self::AUTOLOAD),
			"alertOn_nonAdminLogin" => array('value' => false, 'autoload' => self::AUTOLOAD),
			"alertOn_firstNonAdminLoginOnly" => array('value' => false, 'autoload' => self::AUTOLOAD),
			"alertOn_wordfenceDeactivated" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"alertOn_wafDeactivated" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"liveTrafficEnabled" => array('value' => false, 'autoload' => self::AUTOLOAD),
			"advancedCommentScanning" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"checkSpamIP" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"spamvertizeCheck" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"liveTraf_ignorePublishers" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"liveTraf_displayExpandedRecords" => array('value' => false, 'autoload' => self::DONT_AUTOLOAD),
			"scheduledScansEnabled" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"lowResourceScansEnabled" => array('value' => false, 'autoload' => self::AUTOLOAD),
			"scansEnabled_checkGSB" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"scansEnabled_checkHowGetIPs" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"scansEnabled_core" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"scansEnabled_themes" => array('value' => false, 'autoload' => self::AUTOLOAD),
			"scansEnabled_plugins" => array('value' => false, 'autoload' => self::AUTOLOAD),
			"scansEnabled_coreUnknown" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"scansEnabled_malware" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"scansEnabled_fileContents" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"scansEnabled_fileContentsGSB" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"scansEnabled_checkReadableConfig" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"scansEnabled_suspectedFiles" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"scansEnabled_posts" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"scansEnabled_comments" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"scansEnabled_suspiciousOptions" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"scansEnabled_passwds" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"scansEnabled_diskSpace" => array('value' => true, 'autoload' => self::AUTOLOAD),
			'scansEnabled_wafStatus' => array('value' => true, 'autoload' => self::AUTOLOAD),
			"scansEnabled_options" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"scansEnabled_wpscan_fullPathDisclosure" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"scansEnabled_wpscan_directoryListingEnabled" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"scansEnabled_scanImages" => array('value' => false, 'autoload' => self::AUTOLOAD),
			"scansEnabled_highSense" => array('value' => false, 'autoload' => self::AUTOLOAD),
			"scansEnabled_oldVersions" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"scansEnabled_suspiciousAdminUsers" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"scan_force_ipv4_start" => array('value' => false, 'autoload' => self::AUTOLOAD),
			"liveActivityPauseEnabled" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"firewallEnabled" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"autoBlockScanners" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"loginSecurityEnabled" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"loginSec_strongPasswds_enabled" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"loginSec_breachPasswds_enabled" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"loginSec_lockInvalidUsers" => array('value' => false, 'autoload' => self::AUTOLOAD),
			"loginSec_maskLoginErrors" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"loginSec_blockAdminReg" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"loginSec_disableAuthorScan" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"loginSec_disableApplicationPasswords" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"loginSec_disableOEmbedAuthor" => array('value' => false, 'autoload' => self::AUTOLOAD),
			'loginSec_requireAdminTwoFactor' => array('value' => false, 'autoload' => self::AUTOLOAD),
			"notification_updatesNeeded" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"notification_securityAlerts" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"notification_promotions" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"notification_blogHighlights" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"notification_productUpdates" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"notification_scanStatus" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"enableRemoteIpLookup" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"other_hideWPVersion" => array('value' => false, 'autoload' => self::AUTOLOAD),
			"other_blockBadPOST" => array('value' => false, 'autoload' => self::AUTOLOAD),
			"other_scanComments" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"other_pwStrengthOnUpdate" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"other_WFNet" => array('value' => true, 'autoload' => self::AUTOLOAD),
			"other_scanOutside" => array('value' => false, 'autoload' => self::AUTOLOAD),
			"other_bypassLitespeedNoabort" => array('value' => false, 'autoload' => self::AUTOLOAD),
			"deleteTablesOnDeact" => array('value' => false, 'autoload' => self::AUTOLOAD),
			"autoUpdate" => array('value' => false, 'autoload' => self::AUTOLOAD),
			"startScansRemotely" => array('value' => false, 'autoload' => self::AUTOLOAD),
			"disableConfigCaching" => array('value' => false, 'autoload' => self::AUTOLOAD),
			"addCacheComment" => array('value' => false, 'autoload' => self::AUTOLOAD),
			"disableCodeExecutionUploads" => array('value' => false, 'autoload' => self::AUTOLOAD),
			"allowHTTPSCaching" => array('value' => false, 'autoload' => self::AUTOLOAD),
			"debugOn" => array('value' => false, 'autoload' => self::AUTOLOAD),
			'email_summary_enabled' => array('value' => true, 'autoload' => self::AUTOLOAD),
			'email_summary_dashboard_widget_enabled' => array('value' => true, 'autoload' => self::AUTOLOAD),
			'ssl_verify' => array('value' => true, 'autoload' => self::AUTOLOAD),
			'ajaxWatcherDisabled_front' => array('value' => false, 'autoload' => self::AUTOLOAD),
			'ajaxWatcherDisabled_admin' => array('value' => false, 'autoload' => self::AUTOLOAD),
			'wafAlertOnAttacks' => array('value' => true, 'autoload' => self::AUTOLOAD),
			'disableWAFIPBlocking' => array('value' => false, 'autoload' => self::AUTOLOAD),
			'showAdminBarMenu' => array('value' => true, 'autoload' => self::AUTOLOAD),
			'displayTopLevelOptions' => array('value' => true, 'autoload' => self::AUTOLOAD),
			'displayTopLevelBlocking' => array('value' => false, 'autoload' => self::AUTOLOAD),
			'displayTopLevelLiveTraffic' => array('value' => false, 'autoload' => self::AUTOLOAD),
			'displayAutomaticBlocks' => array('value' => true, 'autoload' => self::AUTOLOAD),
			'allowLegacy2FA' => array('value' => false, 'autoload' => self::AUTOLOAD),
			'wordfenceI18n' => array('value' => true, 'autoload' => self::AUTOLOAD),
		),
		//All exportable variable type options
		"otherParams" => array(
			"scan_include_extra" => array('value' => "", 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
			"alertEmails" => array('value' => "", 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 
			"liveTraf_ignoreUsers" => array('value' => "", 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 
			"liveTraf_ignoreIPs" => array('value' => "", 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 
			"liveTraf_ignoreUA" => array('value' => "", 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),   
			"maxMem" => array('value' => 256, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)), 
			'scan_exclude' => array('value' => '', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 
			'scan_maxIssues' => array('value' => 1000, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)), 
			'scan_maxDuration' => array('value' => '', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 
			"scan_max_resume_attempts" => array('value' => wfScanMonitor::DEFAULT_RESUME_ATTEMPTS, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)),
			'whitelisted' => array('value' => '', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
			'whitelistedServices' => array('value' => '{}', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_JSON)),
			'bannedURLs' => array('value' => '', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 
			'maxExecutionTime' => array('value' => 0, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)), 
			'howGetIPs' => array('value' => '', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)), 
			'actUpdateInterval' => array('value' => 2, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)), 
			'alert_maxHourly' => array('value' => 0, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)), 
			'loginSec_userBlacklist' => array('value' => '', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
			'liveTraf_maxRows' => array('value' => 2000, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)),
			'liveTraf_maxAge' => array('value' => 30, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)),
			"neverBlockBG" => array('value' => "neverBlockVerified", 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
			"loginSec_countFailMins" => array('value' => 240, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)),
			"loginSec_lockoutMins" => array('value' => 240, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)),
			'loginSec_strongPasswds' => array('value' => 'pubs', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
			'loginSec_breachPasswds' => array('value' => 'admins', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
			'loginSec_maxFailures' => array('value' => 20, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)),
			'loginSec_maxForgotPasswd' => array('value' => 20, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)),
			'maxGlobalRequests' => array('value' => 'DISABLED', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
			'maxGlobalRequests_action' => array('value' => "throttle", 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
			'maxRequestsCrawlers' => array('value' => 'DISABLED', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
			'maxRequestsCrawlers_action' => array('value' => "throttle", 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
			'maxRequestsHumans' => array('value' => 'DISABLED', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
			'maxRequestsHumans_action' => array('value' => "throttle", 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
			'max404Crawlers' => array('value' => 'DISABLED', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
			'max404Crawlers_action' => array('value' => "throttle", 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
			'max404Humans' => array('value' => 'DISABLED', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
			'max404Humans_action' => array('value' => "throttle", 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
			'blockedTime' => array('value' => 300, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)),
			'email_summary_interval' => array('value' => 'weekly', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
			'email_summary_excluded_directories' => array('value' => 'wp-content/cache,wp-content/wflogs', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
			'allowed404s' => array('value' => "/favicon.ico\n/apple-touch-icon*.png\n/*@2x.png\n/browserconfig.xml", 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
			'wafAlertWhitelist' => array('value' => '', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
			'wafAlertInterval' => array('value' => 600, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)),
			'wafAlertThreshold' => array('value' => 100, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)),
			'howGetIPs_trusted_proxies' => array('value' => '', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
			'howGetIPs_trusted_proxy_preset' => array('value' => '', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
			'scanType' => array('value' => wfScanner::SCAN_TYPE_STANDARD, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
			'manualScanType' => array('value' => wfScanner::MANUAL_SCHEDULING_ONCE_DAILY, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
			'schedStartHour' => array('value' => -1, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)),
			'schedMode' => array('value' => wfScanner::SCAN_SCHEDULING_MODE_AUTOMATIC, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
			'cbl_loggedInBlocked' => array('value' => false, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)),
			'cbl_action' => array('value' => 'block', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
			'cbl_redirURL' => array('value' => '', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
			'cbl_bypassRedirURL' => array('value' => '', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
			'cbl_bypassRedirDest' => array('value' => '', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
			'cbl_bypassViewURL' => array('value' => '', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
			'loginSec_enableSeparateTwoFactor' => array('value' => false, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)),
			'blockCustomText' => array('value' => '', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
			'alertOn_severityLevel' => array('value' => wfIssues::SEVERITY_LOW, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)),
		),
		//Set as default only, not included automatically in the settings import/export or options page saving
		'defaultsOnly' => array(
			"apiKey" => array('value' => "", 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
			'keyType' => array('value' => wfLicense::KEY_TYPE_FREE, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
			'isPaid' => array('value' => false, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)),
			'hasKeyConflict' => array('value' => false, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)),
			'timeoffset_wf_updated' => array('value' => 0, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)),
			'cacheType' => array('value' => 'disabled', 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
			'detectProxyRecommendation' => array('value' => '', 'autoload' => self::DONT_AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
			'dismissAutoPrependNotice' => array('value' => false, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)),
			'onboardingAttempt1' => array('value' => '', 'autoload' => self::DONT_AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
			'onboardingAttempt2' => array('value' => '', 'autoload' => self::DONT_AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
			'onboardingAttempt3' => array('value' => '', 'autoload' => self::DONT_AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
			'onboardingAttempt3Initial' => array('value' => false, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)),
			'onboardingDelayedAt' => array('value' => false, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)),
			'needsNewTour_dashboard' => array('value' => true, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)),
			'needsNewTour_firewall' => array('value' => true, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)),
			'needsNewTour_scan' => array('value' => true, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)),
			'needsNewTour_blocking' => array('value' => true, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)),
			'needsNewTour_livetraffic' => array('value' => true, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)),
			'needsNewTour_loginsecurity' => array('value' => true, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)),
			'needsUpgradeTour_dashboard' => array('value' => false, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)),
			'needsUpgradeTour_firewall' => array('value' => false, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)),
			'needsUpgradeTour_scan' => array('value' => false, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)),
			'needsUpgradeTour_blocking' => array('value' => false, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)),
			'needsUpgradeTour_livetraffic' => array('value' => false, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)),
			'needsUpgradeTour_loginsecurity' => array('value' => false, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)),
			'supportContent' => array('value' => '{}', 'autoload' => self::DONT_AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
			'supportHash' => array('value' => '', 'autoload' => self::DONT_AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
			'whitelistPresets' => array('value' => '{}', 'autoload' => self::DONT_AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
			'whitelistHash' => array('value' => '', 'autoload' => self::DONT_AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
			'touppPromptNeeded' => array('value' => false, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)),
			'touppBypassNextCheck' => array('value' => false, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)),
			'autoUpdateAttempts' => array('value' => 0, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)),
			'lastPermissionsTemplateCheck' => array('value' => 0, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)),
			'previousWflogsFileList' => array('value' => '[]', 'autoload' => self::DONT_AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
			'diagnosticsWflogsRemovalHistory' => array('value' => '[]', 'autoload' => self::DONT_AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
			'satisfactionPromptDismissed' => array('value' => 0, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)),
			'satisfactionPromptInstallDate' => array('value' => 0, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)),
			'satisfactionPromptOverride' => array('value' => true, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)),
		),
	);
	public static $serializedOptions = array('lastAdminLogin', 'scanSched', 'emailedIssuesList', 'wf_summaryItems', 'adminUserList', 'twoFactorUsers', 'alertFreqTrack', 'wfStatusStartMsgs', 'vulnerabilities_core', 'vulnerabilities_plugin', 'vulnerabilities_theme', 'dashboardData', 'malwarePrefixes', 'coreHashes', 'noc1ScanSchedule', 'allScansScheduled', 'disclosureStates', 'scanStageStatuses', 'adminNoticeQueue', 'suspiciousAdminUsernames', 'wordpressPluginVersions', 'wordpressThemeVersions');
	// Configuration keypairs that can be set from Central.
	private static $wfCentralInternalConfig = array(
		'wordfenceCentralUserSiteAuthGrant',
		'wordfenceCentralConnected',
		'wordfenceCentralPluginAlertingDisabled',
	);

	public static function setDefaults() {
		foreach (self::$defaultConfig['checkboxes'] as $key => $config) {
			$val = $config['value'];
			$autoload = $config['autoload'];
			if (self::get($key) === false) {
				self::set($key, $val ? '1' : '0', $autoload);
			}
		}
		foreach (self::$defaultConfig['otherParams'] as $key => $config) {
			$val = $config['value'];
			$autoload = $config['autoload'];
			if (self::get($key) === false) {
				self::set($key, $val, $autoload);
			}
		}
		foreach (self::$defaultConfig['defaultsOnly'] as $key => $config) {
			$val = $config['value'];
			$autoload = $config['autoload'];
			if (self::get($key) === false) {
				if ($val === false) {
					self::set($key, '0', $autoload);
				}
				else if ($val === true) {
					self::set($key, '1', $autoload);
				}
				else {
					self::set($key, $val, $autoload);
				}
			}
		}
		self::set('encKey', substr(wfUtils::bigRandomHex(), 0, 16));
		self::set('longEncKey', bin2hex(wfWAFUtils::random_bytes(32)));
		if (self::get('maxMem', false) === false) {
			self::set('maxMem', '256');
		}
		if (self::get('other_scanOutside', false) === false) {
			self::set('other_scanOutside', 0);
		}

		if (self::get('email_summary_enabled')) {
			wfActivityReport::scheduleCronJob();
		} else {
			wfActivityReport::disableCronJob();
		}
	}
	public static function loadAllOptions() {
		global $wpdb;
		
		$options = wp_cache_get('alloptions', 'wordfence');
		if (!$options) {
			$table = self::table();
			self::updateTableExists();
			$suppress = $wpdb->suppress_errors();
			if (!($rawOptions = $wpdb->get_results("SELECT name, val FROM {$table} WHERE autoload = 'yes'"))) {
				$rawOptions = $wpdb->get_results("SELECT name, val FROM {$table}");
			}
			$wpdb->suppress_errors($suppress);
			$options = array();
			foreach ((array) $rawOptions as $o) {
				if (in_array($o->name, self::$serializedOptions)) {
					$val = maybe_unserialize($o->val);
					if ($val) {
						$options[$o->name] = $val;
					}
				}
				else {
					$options[$o->name] = $o->val;
				}
			}
			
			wp_cache_add_non_persistent_groups('wordfence');
			wp_cache_add('alloptions', $options, 'wordfence');
		}
		
		return $options;
	}
	
	/**
	 * Bases the table's existence on the option specified by wfConfig::TABLE_EXISTS_OPTION for performance. We only
	 * set that option just prior to deletion in the uninstall handler and after table creation in the install handler.
	 */
	public static function updateTableExists($change = null) {
		if ($change !== null) {
			self::$tableExists = !!$change;
			if (is_multisite() && function_exists('update_network_option')) {
				update_network_option(null, wfConfig::TABLE_EXISTS_OPTION, self::$tableExists);
			}
			else {
				update_option(wfConfig::TABLE_EXISTS_OPTION, self::$tableExists);
			}
			return;
		}
		
		self::$tableExists = true;
		if (is_multisite() && function_exists('get_network_option')) {
			$optionValue = get_network_option(null, wfConfig::TABLE_EXISTS_OPTION, null);
		}
		else {
			$optionValue = get_option(wfConfig::TABLE_EXISTS_OPTION, null);
		}
		
		if ($optionValue === null) { //No value, set an initial one
			global $wpdb;
			self::updateTableExists(!!$wpdb->get_col($wpdb->prepare('SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME=%s', self::table())));
			return;
		}
		if (!$optionValue) {
			self::$tableExists = false;
		}
	}
	
	public static function tableExists() {
		return self::$tableExists;
	}
	
	private static function updateCachedOption($name, $val) {
		$options = self::loadAllOptions();
		$options[$name] = $val;
		wp_cache_set('alloptions', $options, 'wordfence');
	}
	private static function removeCachedOption($name) {
		$options = self::loadAllOptions();
		if (isset($options[$name])) {
			unset($options[$name]);
			wp_cache_set('alloptions', $options, 'wordfence');
		}
	}
	private static function getCachedOption($name) {
		$options = self::loadAllOptions();
		if (isset($options[$name])) {
			return $options[$name];
		}
		
		$table = self::table();
		$val = self::getDB()->querySingle("SELECT val FROM {$table} WHERE name='%s'", $name);
		if ($val !== null) {
			$options[$name] = $val;
			wp_cache_set('alloptions', $options, 'wordfence');
		}
		return $val;
	}
	public static function hasCachedOption($name) {
		$options = self::loadAllOptions();
		return isset($options[$name]);
	}
	
	/**
	 * Returns an array of all option keys that are eligible for export with the exception of serialized options.
	 * 
	 * @return array
	 */
	public static function getExportableOptionsKeys() {
		$ret = array();
		foreach (self::$defaultConfig['checkboxes'] as $key => $val) {
			$ret[] = $key;
		}
		foreach (self::$defaultConfig['otherParams'] as $key => $val) {
			$ret[] = $key;
		}
		return $ret;
	}
	public static function parseOptions($excludeOmitted = false) {
		$ret = array();
		foreach (self::$defaultConfig['checkboxes'] as $key => $val) { //value is not used. We just need the keys for validation
			if ($excludeOmitted && isset($_POST[$key])) {
				$ret[$key] = (int) $_POST[$key];
			}
			else if (!$excludeOmitted || isset($_POST[$key])) {
				$ret[$key] = isset($_POST[$key]) ? '1' : '0';
			}
		}
		foreach (self::$defaultConfig['otherParams'] as $key => $val) {
			if (!$excludeOmitted || isset($_POST[$key])) {
				if (isset($_POST[$key])) {
					$ret[$key] = stripslashes($_POST[$key]);
				}
				else {
					error_log("Missing options param \"$key\" when parsing parameters.");
				}
			}
		}
		/* for debugging only:
		foreach($_POST as $key => $val){
			if($key != 'action' && $key != 'nonce' && (! array_key_exists($key, self::$checkboxes)) && (! array_key_exists($key, self::$otherParams)) ){
				error_log("Unrecognized option: $key");
			}
		}
		*/
		return $ret;
	}
	public static function setArray($arr){
		foreach($arr as $key => $val){
			self::set($key, $val);
		}
	}
	public static function getHTML($key){
		return esc_html(self::get($key));
	}
	public static function inc($key){
		$val = self::get($key, false);
		if(! $val){
			$val = 0;
		}
		self::set($key, $val + 1);
		return $val + 1;
	}
	public static function atomicInc($key) {
		if (!self::$tableExists) {
			return false;
		}
		
		global $wpdb;
		$old_suppress_errors = $wpdb->suppress_errors(true);
		$table = self::table();
		$rowExists = false;
		$successful = false;
		$attempts = 0;
		do {
			if (!$rowExists && $wpdb->query($wpdb->prepare("INSERT INTO {$table} (name, val, autoload) values (%s, %s, %s)", $key, 1, self::DONT_AUTOLOAD))) {
				$val = 1;
				$successful = true;
			}
			else {
				$rowExists = true;
				$val = self::get($key, 1);
				if ($wpdb->query($wpdb->prepare("UPDATE {$table} SET val = %s WHERE name = %s AND val = %s", $val + 1, $key, $val))) {
					$val++;
					$successful = true;
				}
			}
			$attempts++;
		} while (!$successful && $attempts < 100);
		$wpdb->suppress_errors($old_suppress_errors);
		return $val;
	}
	public static function remove($key) {
		global $wpdb;
		
		if (!self::$tableExists) {
			return;
		}
		
		$table = self::table();
		$wpdb->query($wpdb->prepare("DELETE FROM {$table} WHERE name = %s", $key));
		self::removeCachedOption($key);
		
		if (!WFWAF_SUBDIRECTORY_INSTALL && class_exists('wfWAFIPBlocksController') && (substr($key, 0, 4) == 'cbl_' || $key == 'blockedTime' || $key == 'disableWAFIPBlocking')) {
			wfWAFIPBlocksController::setNeedsSynchronizeConfigSettings();
		}
	}
	public static function set($key, $val, $autoload = self::AUTOLOAD) {
		global $wpdb;
		
		if (is_array($val)) {
			$msg = sprintf(
				/* translators: 1. Key in key-value store. 2. Value in key-value store. */
				__('wfConfig::set() got an array as second param with key: %1$s and value: %2$s', 'wordfence'), $key, var_export($val, true));
			wordfence::status(1, 'error', $msg);
			return;
		}

		if (($key == 'apiKey' || $key == 'isPaid' || $key == 'other_WFNet') && wfWAF::getInstance() && !WFWAF_SUBDIRECTORY_INSTALL) {
			if ($key == 'isPaid' || $key == 'other_WFNet') {
				$val = !!$val;
			}
			
			try {
				wfWAF::getInstance()->getStorageEngine()->setConfig($key, $val, 'synced');
			} catch (wfWAFStorageFileException $e) {
				error_log($e->getMessage());
			} catch (wfWAFStorageEngineMySQLiException $e) {
				error_log($e->getMessage());
			}
		}
		
		if (!self::$tableExists) {
			return;
		
		}
		$table = self::table();
		if ($wpdb->query($wpdb->prepare("INSERT INTO {$table} (name, val, autoload) values (%s, %s, %s) ON DUPLICATE KEY UPDATE val = %s, autoload = %s", $key, $val, $autoload, $val, $autoload)) !== false && $autoload != self::DONT_AUTOLOAD) {
			self::updateCachedOption($key, $val);
		}
		
		if (!WFWAF_SUBDIRECTORY_INSTALL && class_exists('wfWAFIPBlocksController') && (substr($key, 0, 4) == 'cbl_' || $key == 'blockedTime' || $key == 'disableWAFIPBlocking')) {
			wfWAFIPBlocksController::setNeedsSynchronizeConfigSettings();
		} 
	}
	public static function setJSON($key, $val, $autoload = self::AUTOLOAD) {
		self::set($key, @json_encode($val), $autoload);
	}
	public static function setBool($key, $val, $autoload = self::AUTOLOAD) {
		self::set($key, wfUtils::truthyToBoolean($val) ? 1 : 0, $autoload);
	}
	public static function setOrRemove($key, $value, $autoload = self::AUTOLOAD) {
		if ($value === null) {
			self::remove($key);
		}
		else {
			self::set($key, $value, $autoload);
		}
	}
	public static function get($key, $default = false, $allowCached = true, &$isDefault = false) {
		global $wpdb;
		
		if ($allowCached && self::hasCachedOption($key)) {
			return self::getCachedOption($key);
		}
		
		if (!self::$tableExists) {
			$isDefault = true;
			return $default;
		}
		
		$table = self::table();
		if (!($option = $wpdb->get_row($wpdb->prepare("SELECT name, val, autoload FROM {$table} WHERE name = %s", $key)))) {
			$isDefault = true;
			return $default;
		}
		
		if ($option->autoload != self::DONT_AUTOLOAD) {
			self::updateCachedOption($key, $option->val);
		}
		return $option->val;
	}
	
	public static function getInt($key, $default = 0, $allowCached = true) {
		return (int) self::get($key, $default, $allowCached);
	}
	
	public static function getJSON($key, $default = false, $allowCached = true) {
		$json = self::get($key, $default, $allowCached, $isDefault);
		if ($isDefault)
			return $json;
		$decoded = @json_decode($json, true);
		if ($decoded === null) {
			return $default;
		}
		return $decoded;
	}
	
	public static function getBool($key, $default = false, $allowCached = true) {
		return wfUtils::truthyToBoolean(self::get($key, $default, $allowCached));
	}
	
	/**
	 * Runs a test against the database to verify set_ser is working via MySQLi.
	 * 
	 * @return bool
	 */
	public static function testDB() {
		$nonce = bin2hex(wfWAFUtils::random_bytes(32));
		$payload = array('nonce' => $nonce);
		$allow = wfConfig::get('allowMySQLi', true);
		wfConfig::set('allowMySQLi', true);
		wfConfig::set_ser('dbTest', $payload, false, wfConfig::DONT_AUTOLOAD);
		
		$stored = wfConfig::get_ser('dbTest', false, false);
		wfConfig::set('allowMySQLi', $allow);
		$result = false;
		if (is_array($stored) && isset($stored['nonce']) && hash_equals($nonce, $stored['nonce'])) {
			$result = true;
		}
		
		wfConfig::delete_ser_chunked('dbTest');
		return $result;
	}
	
	private static function canCompressValue() {
		if (!function_exists('gzencode') || !function_exists('gzdecode')) {
			return false;
		}
		$disabled = explode(',', ini_get('disable_functions'));
		if (in_array('gzencode', $disabled) || in_array('gzdecode', $disabled)) {
			return false;
		}
		return true;
	}
	
	private static function isCompressedValue($data) {
		//Based on http://www.ietf.org/rfc/rfc1952.txt
		if (strlen($data) < 2) {
			return false;
		}
		
		$magicBytes = substr($data, 0, 2);
		if ($magicBytes !== (chr(0x1f) . chr(0x8b))) {
			return false;
		}
		
		//Small chance of false positives here -- can check the header CRC if it turns out it's needed
		return true;
	}
	
	private static function ser_chunked_key($key) {
		return 'wordfence_chunked_' . $key . '_';
	}
	
	public static function get_ser($key, $default = false, $cache = true) {
		if (self::hasCachedOption($key)) {
			return self::getCachedOption($key);
		}
		
		if (!self::$tableExists) {
			return $default;
		}
		
		//Check for a chunked value first
		$chunkedValueKey = self::ser_chunked_key($key);
		$header = self::getDB()->querySingle("select val from " . self::table() . " where name=%s", $chunkedValueKey . 'header');
		if ($header) {
			$header = unserialize($header);
			$count = $header['count'];
			$path = tempnam(sys_get_temp_dir(), $key); //Writing to a file like this saves some of PHP's in-memory copying when just appending each chunk to a string
			$fh = fopen($path, 'r+');
			$length = 0;
			for ($i = 0; $i < $count; $i++) {
				$chunk = self::getDB()->querySingle("select val from " . self::table() . " where name=%s", $chunkedValueKey . $i);
				self::getDB()->flush(); //clear cache
				if (!$chunk) {
					wordfence::status(2, 'error', sprintf(/* translators: Key in key-value store. */ __("Error reassembling value for %s", 'wordfence'), $key));
					return $default;
				}
				fwrite($fh, $chunk);
				$length += strlen($chunk);
				unset($chunk);
			}
			
			fseek($fh, 0);
			$serialized = fread($fh, $length);
			fclose($fh);
			unlink($path);
			
			if (self::canCompressValue() && self::isCompressedValue($serialized)) {
				$inflated = @gzdecode($serialized);
				if ($inflated !== false) {
					unset($serialized);
					if ($cache) {
						self::updateCachedOption($key, unserialize($inflated));
						return self::getCachedOption($key);
					}
					return unserialize($inflated);
				}
			}
			if ($cache) {
				self::updateCachedOption($key, unserialize($serialized));
				return self::getCachedOption($key);
			}
			return unserialize($serialized);
		}
		else {
			$serialized = self::getDB()->querySingle("select val from " . self::table() . " where name=%s", $key);
			self::getDB()->flush(); //clear cache
			if ($serialized) {
				if (self::canCompressValue() && self::isCompressedValue($serialized)) {
					$inflated = @gzdecode($serialized);
					if ($inflated !== false) {
						unset($serialized);
						return unserialize($inflated);
					}
				}
				if ($cache) {
					self::updateCachedOption($key, unserialize($serialized));
					return self::getCachedOption($key);
				}
				return unserialize($serialized);
			}
		}
		
		return $default;
	}
	
	public static function set_ser($key, $val, $allowCompression = false, $autoload = self::AUTOLOAD) {
		/*
		 * Because of the small default value for `max_allowed_packet` and `max_long_data_size`, we're stuck splitting
		 * large values into multiple chunks. To minimize memory use, the MySQLi driver is used directly when possible.
		 */
		
		global $wpdb;
		$dbh = $wpdb->dbh;
		$useMySQLi = wfUtils::useMySQLi();
		
		if (!self::$tableExists) {
			return;
		}
		
		self::delete_ser_chunked($key); //Ensure any old values for a chunked value are deleted first
		
		if (self::canCompressValue() && $allowCompression) {
			$data = gzencode(serialize($val));
		}
		else {
			$data = serialize($val);
		}
		
		if (!$useMySQLi) {
			$data = bin2hex($data);
		}
		
		$dataLength = strlen($data);
		$maxAllowedPacketBytes = self::getDB()->getMaxAllowedPacketBytes();
		$chunkSize = intval((($maxAllowedPacketBytes < 1024 /* MySQL minimum, probably failure to fetch it */ ? 1024 * 1024 /* MySQL default */ : $maxAllowedPacketBytes) - 50) / 1.2); //Based on max_allowed_packet + 20% for escaping and SQL
		$chunkSize = $chunkSize - ($chunkSize % 2); //Ensure it's even
		$chunkedValueKey = self::ser_chunked_key($key);
		if ($dataLength > $chunkSize) {
			$chunks = 0;
			while (($chunks * $chunkSize) < $dataLength) {
				$dataChunk = substr($data, $chunks * $chunkSize, $chunkSize);
				if ($useMySQLi) {
					$chunkKey = $chunkedValueKey . $chunks;
					$stmt = $dbh->prepare("INSERT IGNORE INTO " . self::table() . " (name, val, autoload) VALUES (?, ?, 'no')");
					if ($stmt === false) {
						wordfence::status(2, 'error', sprintf(
						/* translators: 1. Key in key-value store. 2. MySQL error number. 3. MySQL error message. */
							__('Error writing value chunk for %1$s (MySQLi error: [%2$s] %3$s)', 'wordfence'), $key, $dbh->errno, $dbh->error));
						return false;
					}
					$null = NULL;
					$stmt->bind_param("sb", $chunkKey, $null);
					
					if (!$stmt->send_long_data(1, $dataChunk)) {
						wordfence::status(2, 'error', sprintf(
						/* translators: 1. Key in key-value store. 2. MySQL error number. 3. MySQL error message. */
							__('Error writing value chunk for %1$s (MySQLi error: [%2$s] %3$s)', 'wordfence'), $key, $dbh->errno, $dbh->error));
						return false;
					}
					
					if (!$stmt->execute()) {
						wordfence::status(2, 'error', sprintf(
						/* translators: 1. Key in key-value store. 2. MySQL error number. 3. MySQL error message. */
							__('Error writing value chunk for %1$s (MySQLi error: [%2$s] %3$s)', 'wordfence'), $key, $dbh->errno, $dbh->error));
						return false;
					}
				}
				else {
					if (!self::getDB()->queryWrite(sprintf("insert ignore into " . self::table() . " (name, val, autoload) values (%%s, X'%s', 'no')", $dataChunk), $chunkedValueKey . $chunks)) {
						if ($useMySQLi) {
							$errno = mysqli_errno($wpdb->dbh);
							wordfence::status(2, 'error', sprintf(
							/* translators: 1. Key in key-value store. 2. MySQL error number. 3. MySQL error message. */
								__('Error writing value chunk for %1$s (MySQLi error: [%2$s] %3$s)', 'wordfence'), $key, $errno, $wpdb->last_error));
						}
						else if (function_exists('mysql_errno')) {
							// phpcs:ignore PHPCompatibility.Extensions.RemovedExtensions.mysql_DeprecatedRemoved
							$errno = mysql_errno($wpdb->dbh);
							wordfence::status(2, 'error', sprintf(
							/* translators: 1. Key in key-value store. 2. MySQL error number. 3. MySQL error message. */
								__('Error writing value chunk for %1$s (MySQLi error: [%2$s] %3$s)', 'wordfence'), $key, $errno, $wpdb->last_error));
						}
						
						return false;
					}
				}
				$chunks++;
			}
			
			if (!self::getDB()->queryWrite(sprintf("insert ignore into " . self::table() . " (name, val, autoload) values (%%s, X'%s', 'no')", bin2hex(serialize(array('count' => $chunks)))), $chunkedValueKey . 'header')) {
				wordfence::status(2, 'error', sprintf(
				/* translators: Key in key-value store. */
					__("Error writing value header for %s", 'wordfence'), $key));
				return false;
			}
		}
		else {
			$exists = self::getDB()->querySingle("select name from " . self::table() . " where name='%s'", $key);
			
			if ($useMySQLi) {
				if ($exists) {
					$stmt = $dbh->prepare("UPDATE " . self::table() . " SET val=?, autoload=? WHERE name=?");
					if ($stmt === false) {
						wordfence::status(2, 'error', sprintf(
						/* translators: 1. Key in key-value store. 2. MySQL error number. 3. MySQL error message. */
							__('Error writing value for %1$s (MySQLi error: [%2$s] %3$s)', 'wordfence'), $key, $dbh->errno, $dbh->error));
						return false;
					}
					$null = NULL;
					$stmt->bind_param("bss", $null, $autoload, $key);
				}
				else {
					$stmt = $dbh->prepare("INSERT IGNORE INTO " . self::table() . " (val, name, autoload) VALUES (?, ?, ?)");
					if ($stmt === false) {
						wordfence::status(2, 'error', sprintf(
						/* translators: 1. Key in key-value store. 2. MySQL error number. 3. MySQL error message. */
							__('Error writing value for %1$s (MySQLi error: [%2$s] %3$s)', 'wordfence'), $key, $dbh->errno, $dbh->error));
						return false;
					}
					$null = NULL;
					$stmt->bind_param("bss", $null, $key, $autoload);
				}
				
				if (!$stmt->send_long_data(0, $data)) {
					wordfence::status(2, 'error', sprintf(
					/* translators: 1. Key in key-value store. 2. MySQL error number. 3. MySQL error message. */
						__('Error writing value for %1$s (MySQLi error: [%2$s] %3$s)', 'wordfence'), $key, $dbh->errno, $dbh->error));
					return false;
				}
				
				if (!$stmt->execute()) {
					wordfence::status(2, 'error', sprintf(
					/* translators: 1. Key in key-value store. 2. MySQL error number. 3. MySQL error message. */
					__('Error finishing writing value for %1$s (MySQLi error: [%2$s] %3$s)', 'wordfence'), $key, $dbh->errno, $dbh->error));
					return false;
				}
			}
			else {
				if ($exists) {
					self::getDB()->queryWrite(sprintf("update " . self::table() . " set val=X'%s', autoload=%%s where name=%%s", $data), $autoload, $key);
				}
				else {
					self::getDB()->queryWrite(sprintf("insert ignore into " . self::table() . " (name, val, autoload) values (%%s, X'%s', %%s)", $data), $key, $autoload);
				}
			}
		}
		self::getDB()->flush();
		
		if ($autoload != self::DONT_AUTOLOAD) {
			self::updateCachedOption($key, $val);
		}
		return true;
	}
	
	private static function delete_ser_chunked($key) {
		if (!self::$tableExists) {
			return;
		}
		
		self::removeCachedOption($key);
		
		$chunkedValueKey = self::ser_chunked_key($key);
		$header = self::getDB()->querySingle("select val from " . self::table() . " where name=%s", $chunkedValueKey . 'header');
		if (!$header) {
			return;
		}
		
		$header = unserialize($header);
		$count = $header['count'];
		for ($i = 0; $i < $count; $i++) {
			self::getDB()->queryWrite("delete from " . self::table() . " where name='%s'", $chunkedValueKey . $i);
		}
		self::getDB()->queryWrite("delete from " . self::table() . " where name='%s'", $chunkedValueKey . 'header');
	}
	public static function f($key){
		echo esc_attr(self::get($key));
	}
	public static function p() {
		return self::get('isPaid');
	}
	public static function cbp($key){
		if(self::get('isPaid') && self::get($key)){
			echo ' checked ';
		}
	}
	public static function cb($key){
		if(self::get($key)){
			echo ' checked ';
		}
	}
	public static function sel($key, $val, $isDefault = false){
		if((! self::get($key)) && $isDefault){ echo ' selected '; }
		if(self::get($key) == $val){ echo ' selected '; }
	}
	private static function getDB(){
		if(! self::$DB){ 
			self::$DB = new wfDB();
		}
		return self::$DB;
	}
	private static function table(){
		return wfDB::networkTable('wfConfig');
	}
	public static function haveAlertEmails(){
		$emails = self::getAlertEmails();
		return sizeof($emails) > 0 ? true : false;
	}
	public static function alertEmailBlacklist() {
		return array('3c4aa9bd643bd9bb9873014227151a85b24ab8d72fe02cc5799b0edc56eabb67', 'aa06081e3962a3c17a85a06ddf9e418ca1ba8fead3f9b7a20beaf51848a1fd75', 'a25a360bded101e25ebabe5643161ddbb6c3fa33838bbe9a123c2ec0cda8d370', '36e8407dfa80d64cfe42ede4d9d5ce2d4840a5e4781b5f8a7b3b8eacec86fcad', '50cf95aec25369583efdfeff9f0818b4b9266f10e140ea2b648e30202450c21b', '72a09e746cb90ff2646ba1f1d0c0f5ffed6b380642bbbf826d273fffa6ef673b');
	}
	public static function getAlertEmails() {
		$blacklist = self::alertEmailBlacklist();
		$dat = explode(',', self::get('alertEmails'));
		$emails = array();
		foreach ($dat as $email) {
			$email = strtolower(trim($email));
			if (preg_match('/\@/', $email)) {
				$hash = hash('sha256', $email);
				if (!in_array($hash, $blacklist)) {
					$emails[] = $email;
				}
			}
		}
		return $emails;
	}
	public static function getAlertLevel(){
		if (self::get('alertOn_scanIssues')) {
			return self::get('alertOn_severityLevel', 0);
		}
		return 0;
	}
	public static function liveTrafficEnabled(&$overriden = null){
		$enabled = self::get('liveTrafficEnabled');
		if (WORDFENCE_DISABLE_LIVE_TRAFFIC || WF_IS_WP_ENGINE) {
			$enabled = false;
			if ($overriden !== null) {
				$overriden = true;
			}
		}
		return $enabled;
	}
	public static function enableAutoUpdate(){
		wfConfig::set('autoUpdate', '1');
		wp_clear_scheduled_hook('wordfence_daily_autoUpdate');
		if (is_main_site()) {
			wp_schedule_event(time(), 'daily', 'wordfence_daily_autoUpdate');
		}
	}
	public static function disableAutoUpdate(){
		wfConfig::set('autoUpdate', '0');	
		wp_clear_scheduled_hook('wordfence_daily_autoUpdate');
	}
	public static function createLock($name, $timeout = null) { //Our own version of WP_Upgrader::create_lock that uses our table instead
		global $wpdb;
		
		if (!$timeout) {
			$timeout = 3600;
		}
		
		$table = self::table();
		
		$lock_option = $name . '.lock';
		$lock_result = $wpdb->query($wpdb->prepare("INSERT IGNORE INTO `$table` (`name`, `val`, `autoload`) VALUES (%s, %s, 'no')", $lock_option, time()));
		
		if (!$lock_result) {
			$lock_result = self::get($lock_option, false, false);
			if (!$lock_result) {
				return false;
			}
			
			if ($lock_result > (time() - $timeout)) {
				return false;
			}
			
			self::releaseLock($name);
			return self::createLock($name, $timeout);
		}
		
		return true;
	}
	public static function releaseLock($name) {
		self::remove($name . '.lock');
	}
	public static function autoUpdate(){
		require(dirname(__FILE__) . '/wfVersionSupport.php');
		/**
		 * @var string $wfPHPDeprecatingVersion
		 * @var string $wfPHPMinimumVersion
		 */
		if (version_compare(PHP_VERSION, $wfPHPMinimumVersion, '<')) {
			return;
		}

		// Prevent WF auto-update if the user has enabled auto-update through the plugins page.
		if (version_compare(wfUtils::getWPVersion(), '5.5-x', '>=')) {
			$autoUpdatePlugins = get_site_option('auto_update_plugins');
			if (is_array($autoUpdatePlugins) && in_array(WORDFENCE_BASENAME, $autoUpdatePlugins)) {
				return;
			}
		}

		if (!wfConfig::get('other_bypassLitespeedNoabort', false) && getenv('noabort') != '1' && stristr($_SERVER['SERVER_SOFTWARE'], 'litespeed') !== false) {
			$lastEmail = self::get('lastLiteSpdEmail', false);
			if( (! $lastEmail) || (time() - (int)$lastEmail > (86400 * 30))){
				self::set('lastLiteSpdEmail', time());
				wordfence::alert(
				/* translators: Support URL. */
				__("Wordfence Upgrade not run. Please modify your .htaccess", 'wordfence'), sprintf(__("To preserve the integrity of your website we are not running Wordfence auto-update.\n" .
					"You are running the LiteSpeed web server which has been known to cause a problem with Wordfence auto-update.\n" .
					"Please go to your website now and make a minor change to your .htaccess to fix this.\n" .
					"You can find out how to make this change at:\n" .
					"%s\n" .
					"\nAlternatively you can disable auto-update on your website to stop receiving this message and upgrade Wordfence manually.\n", 'wordfence'), wfSupportController::supportURL(wfSupportController::ITEM_DASHBOARD_OPTION_LITESPEED_WARNING)),
					false
				);
			}
			return;
		}
		
		$runUpdate = false;
		wp_update_plugins();
		$update_plugins = get_site_transient('update_plugins');
		if ($update_plugins && is_array($update_plugins->response) && isset($update_plugins->response[WORDFENCE_BASENAME])) {
			$status = $update_plugins->response[WORDFENCE_BASENAME];
			if (is_object($status) && property_exists($status, 'new_version')) {
				$runUpdate = (version_compare($status->new_version, WORDFENCE_VERSION) > 0);
			}
		}
		
		if ($runUpdate) {
			try {
				$api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion());
				$response = $api->call('should_auto_update', array(), array('currentVersion' => WORDFENCE_VERSION));
				if (!(is_array($response) && isset($response['ok']) && wfUtils::truthyToBoolean($response['ok']))) {
					$runUpdate = false;
				}
			}
			catch (Exception $e) {
				wfConfig::inc('autoUpdateAttempts');
				$runUpdate = false;
			}
		}
		
		if (!$runUpdate && wfConfig::get('autoUpdateAttempts') < 7) {
			return;
		}
		
		try {
			require_once(ABSPATH . 'wp-admin/includes/class-wp-upgrader.php');
			require_once(ABSPATH . 'wp-admin/includes/misc.php');
			/* We were creating show_message here so that WP did not write to STDOUT. This had the strange effect of throwing an error about redeclaring show_message function, but only when a crawler hit the site and triggered the cron job. Not a human. So we're now just require'ing misc.php which does generate output, but that's OK because it is a loopback cron request.  
			if(! function_exists('show_message')){ 
				function show_message($msg = 'null'){}
			}
			*/
			if(! defined('FS_METHOD')){ 
				define('FS_METHOD', 'direct'); //May be defined already and might not be 'direct' so this could cause problems. But we were getting reports of a warning that this is already defined, so this check added. 
			}
			require_once(ABSPATH . 'wp-includes/update.php');
			require_once(ABSPATH . 'wp-admin/includes/file.php');
			
			if (!self::createLock('wfAutoUpdate')) {
				return;
			}
			
			ob_start();
			$upgrader = new Plugin_Upgrader();
			$upret = $upgrader->upgrade(WORDFENCE_BASENAME);
			if($upret){
				$cont = file_get_contents(WORDFENCE_FCPATH);
				preg_match('/Version: (\d+\.\d+\.\d+)/', $cont, $matches);
				$version = !empty($matches) ? $matches[1] : null;
				$alertCallback = array(new wfAutoUpdatedAlert($version), 'send');
				do_action('wordfence_security_event', 'autoUpdate', array(
					'version' => $version,
				), $alertCallback);

				wfConfig::set('autoUpdateAttempts', 0);
			}
			$output = @ob_get_contents();
			@ob_end_clean();
		} catch(Exception $e){}
		
		self::releaseLock('wfAutoUpdate');
	}
	
	/**
	 * .htaccess file contents to disable all script execution in a given directory.
	 */
	private static $_disable_scripts_htaccess = '# BEGIN Wordfence code execution protection
<IfModule mod_php5.c>
php_flag engine 0
</IfModule>
<IfModule mod_php7.c>
php_flag engine 0
</IfModule>
<IfModule mod_php.c>
php_flag engine 0
</IfModule>

AddHandler cgi-script .php .phtml .php3 .pl .py .jsp .asp .htm .shtml .sh .cgi
Options -ExecCGI
# END Wordfence code execution protection
';
	private static $_disable_scripts_regex = '/# BEGIN Wordfence code execution protection.+?# END Wordfence code execution protection/s';
	
	private static function _uploadsHtaccessFilePath() {
		$upload_dir = wp_upload_dir();
		return $upload_dir['basedir'] . '/.htaccess';
	}

	/**
	 * Add/Merge .htaccess file in the uploads directory to prevent code execution.
	 *
	 * @return bool
	 * @throws wfConfigException
	 */
	public static function disableCodeExecutionForUploads() {
		$uploads_htaccess_file_path = self::_uploadsHtaccessFilePath();
		$uploads_htaccess_has_content = false;
		if (file_exists($uploads_htaccess_file_path)) {
			$htaccess_contents = file_get_contents($uploads_htaccess_file_path);
			
			// htaccess exists and contains our htaccess code to disable script execution, nothing more to do
			if (strpos($htaccess_contents, self::$_disable_scripts_htaccess) !== false) {
				return true;
			}
			$uploads_htaccess_has_content = strlen(trim($htaccess_contents)) > 0;
		}
		if (@file_put_contents($uploads_htaccess_file_path, ($uploads_htaccess_has_content ? "\n\n" : "") . self::$_disable_scripts_htaccess, FILE_APPEND | LOCK_EX) === false) {
			throw new wfConfigException(__("Unable to save the .htaccess file needed to disable script execution in the uploads directory. Please check your permissions on that directory.", 'wordfence'));
		}
		self::set('disableCodeExecutionUploadsPHP7Migrated', true);
		return true;
	}
	
	public static function migrateCodeExecutionForUploadsPHP7() {
		if (self::get('disableCodeExecutionUploads')) {
			if (!self::get('disableCodeExecutionUploadsPHP7Migrated')) {
				$uploads_htaccess_file_path = self::_uploadsHtaccessFilePath();
				if (file_exists($uploads_htaccess_file_path)) {
					$htaccess_contents = file_get_contents($uploads_htaccess_file_path);
					if (preg_match(self::$_disable_scripts_regex, $htaccess_contents)) {
						$htaccess_contents = preg_replace(self::$_disable_scripts_regex, self::$_disable_scripts_htaccess, $htaccess_contents); 
						@file_put_contents($uploads_htaccess_file_path, $htaccess_contents);
						self::set('disableCodeExecutionUploadsPHP7Migrated', true);
					}
				}
			}
		}
	}

	/**
	 * Remove script execution protections for our the .htaccess file in the uploads directory.
	 *
	 * @return bool
	 * @throws wfConfigException
	 */
	public static function removeCodeExecutionProtectionForUploads() {
		$uploads_htaccess_file_path = self::_uploadsHtaccessFilePath();
		if (file_exists($uploads_htaccess_file_path)) {
			$htaccess_contents = file_get_contents($uploads_htaccess_file_path);

			// Check that it is in the file
			if (preg_match(self::$_disable_scripts_regex, $htaccess_contents)) {
				$htaccess_contents = preg_replace(self::$_disable_scripts_regex, '', $htaccess_contents);

				$error_message = __("Unable to remove code execution protections applied to the .htaccess file in the uploads directory. Please check your permissions on that file.", 'wordfence');
				if (strlen(trim($htaccess_contents)) === 0) {
					// empty file, remove it
					if (!@unlink($uploads_htaccess_file_path)) {
						throw new wfConfigException($error_message);
					}

				} elseif (@file_put_contents($uploads_htaccess_file_path, $htaccess_contents, LOCK_EX) === false) {
					throw new wfConfigException($error_message);
				}
			}
		}
		return true;
	}
	
	/**
	 * Validates the array of configuration changes without applying any. All bounds checks must be performed here.
	 *
	 * @param array $changes
	 * @return bool|array Returns true if valid, otherwise a displayable error message per error encountered.
	 * @throws wfWAFStorageFileException
	 */
	public static function validate($changes) {
		$errors = array();
		$waf = wfWAF::getInstance();
		$wafConfig = $waf->getStorageEngine();
		
		foreach ($changes as $key => $value) {
			$checked = false;
			switch ($key) {
				//============ WAF
				case 'learningModeGracePeriod':
				{
					//If currently in or will be in learning mode, restrict the grace period to be in the future
					$wafStatus = (isset($changes['wafStatus']) ? $changes['wafStatus'] : $wafConfig->getConfig('wafStatus'));
					$gracePeriodEnd = strtotime($value);
					if ($wafStatus == wfFirewall::FIREWALL_MODE_LEARNING && $gracePeriodEnd <= time()) {
						$errors[] = array('option' => $key, 'error' => __('The grace period end time must be in the future.', 'wordfence'));
					}
					
					$checked = true;
					break;
				}
				case 'wafStatus':
				{
					if ($value != wfFirewall::FIREWALL_MODE_ENABLED && $value != wfFirewall::FIREWALL_MODE_LEARNING && $value != wfFirewall::FIREWALL_MODE_DISABLED) {
						$errors[] = array('option' => $key, 'error' => __('Unknown firewall mode.', 'wordfence'));
					}
					
					$checked = true;
					break;
				}
				
				//============ Plugin
				case 'alertEmails':
				{
					$dirtyEmails = explode(',', preg_replace('/[\r\n\s\t]+/', '', $value));
					$dirtyEmails = array_filter($dirtyEmails);
					$badEmails = array();
					foreach ($dirtyEmails as $email) {
						if (!wfUtils::isValidEmail($email)) {
							$badEmails[] = $email;
						}
					}
					if (count($badEmails) > 0) {
						$errors[] = array('option' => $key, 'error' => __('The following emails are invalid: ', 'wordfence') . esc_html(implode(', ', $badEmails), array()));
					}
					
					$checked = true;
					break;
				}
				case 'scan_include_extra':
				{
					$dirtyRegexes = explode("\n", $value);
					foreach ($dirtyRegexes as $regex) {
						if (@preg_match("/$regex/", "") === false) {
							$errors[] = array('option' => $key, 'error' => sprintf(
							/* translators: Regular expression. */
								__('"%s" is not a valid regular expression.', 'wordfence'), esc_html($regex)));
						}
					}
					$checked = true;
					break;
				}
				case 'whitelisted':
				{
					$dirtyWhitelisted = explode(',', preg_replace('/[\r\n\s\t]+/', ',', $value));
					$dirtyWhitelisted = array_filter($dirtyWhitelisted);
					$badWhiteIPs = array();
					$range = new wfUserIPRange();
					foreach ($dirtyWhitelisted as $whiteIP) {
						$range->setIPString($whiteIP);
						if (!$range->isValidRange()) {
							$badWhiteIPs[] = $whiteIP;
						}
					}
					if (count($badWhiteIPs) > 0) {
						$errors[] = array('option' => $key, 'error' => __('Please make sure you separate your IP addresses with commas. The following allowlisted IP addresses are invalid: ', 'wordfence') . esc_html(implode(', ', $badWhiteIPs), array()));
					}
					
					$checked = true;
					break;
				}
				case 'liveTraf_ignoreUsers':
				{
					$dirtyUsers = explode(',', $value);
					$invalidUsers = array();
					foreach ($dirtyUsers as $val) {
						$val = trim($val);
						if (strlen($val) > 0) {
							if (!get_user_by('login', $val)) {
								$invalidUsers[] = $val;
							}
						}
					}
					if (count($invalidUsers) > 0) {
						$errors[] = array('option' => $key, 'error' => __('The following users you selected to ignore in live traffic reports are not valid on this system: ', 'wordfence') . esc_html(implode(', ', $invalidUsers), array()));
					}
					
					$checked = true;
					break;
				}
				case 'liveTraf_ignoreIPs':
				{
					$dirtyIPs = explode(',', preg_replace('/[\r\n\s\t]+/', '', $value));
					$dirtyIPs = array_filter($dirtyIPs);
					$invalidIPs = array();
					foreach ($dirtyIPs as $val) {
						if (!wfUtils::isValidIP($val)) {
							$invalidIPs[] = $val;
						}
					}
					if (count($invalidIPs) > 0) {
						$errors[] = array('option' => $key, 'error' => __('The following IPs you selected to ignore in live traffic reports are not valid: ', 'wordfence') . esc_html(implode(', ', $invalidIPs), array()));
					}
					
					$checked = true;
					break;
				}
				case 'howGetIPs_trusted_proxies':
				{
					$dirtyIPs = preg_split('/[\r\n,]+/', $value);
					$dirtyIPs = array_filter($dirtyIPs);
					$invalidIPs = array();
					foreach ($dirtyIPs as $val) {
						if (!(wfUtils::isValidIP($val) || wfUtils::isValidCIDRRange($val))) {
							$invalidIPs[] = $val;
						}
					}
					if (count($invalidIPs) > 0) {
						$errors[] = array('option' => $key, 'error' => __('The following IPs/ranges you selected to trust as proxies are not valid: ', 'wordfence') . esc_html(implode(', ', $invalidIPs), array()));
					}
					
					$checked = true;
					break;
				}
				case 'howGetIPs_trusted_proxy_preset':
				{
					$presets = wfConfig::getJSON('ipResolutionList', array());
					if (!is_array($presets)) {
						$presets = array();
					}
					
					if (!(empty($value) /* "None" */ || isset($presets[$value]))) {
						$errors[] = array('option' => $key, 'error' => __('The selected trusted proxy preset is not valid: ', 'wordfence') . esc_html($value));
					}
					
					$checked = true;
					
					break;
				}
				case 'apiKey':
				{
					$value = trim($value);
					if (empty($value)) {
						$errors[] = array('option' => $key, 'error' => __('An empty license key was entered.', 'wordfence'));
					}
					else if ($value && !preg_match('/^[a-fA-F0-9]+$/', $value)) {
						$errors[] = array('option' => $key, 'error' => __('The license key entered is not in a valid format. It must contain only numbers and the letters A-F.', 'wordfence'));
					}
					
					$checked = true;
					break;
				}
				case 'scan_exclude':
				{
					$exclusionList = explode("\n", trim($value));
					foreach ($exclusionList as $exclusion) {
						$exclusion = trim($exclusion);
						if ($exclusion === '*') {
							$errors[] = array('option' => $key, 'error' => __('A wildcard cannot be used to exclude all files from the scan.', 'wordfence'));
						}
					}
					$checked = true;
					break;
				}
				case 'scan_max_resume_attempts':
				{
					$value = (int) $value;
					wfScanMonitor::validateResumeAttempts($value, $valid);
					if (!$valid)
						$errors[] = array('option' => $key, 'error' => sprintf(__('Invalid number of scan resume attempts specified: %d', 'wordfence'), $value));
					break;
				}
			}
		}
		
		if (empty($errors)) {
			return true;
		}
		return $errors;
	}
	
	public static function clean($changes) {
		$cleaned = array();
		foreach ($changes as $key => $value) {
			if (preg_match('/^whitelistedServices\.([a-z0-9]+)$/i', $key, $matches)) {
				if (!isset($cleaned['whitelistedServices']) || !is_array($cleaned['whitelistedServices'])) {
					$cleaned['whitelistedServices'] = wfConfig::getJSON('whitelistedServices', array());
				}
				
				$cleaned['whitelistedServices'][$matches[1]] = wfUtils::truthyToBoolean($value);
			}
			else {
				$cleaned[$key] = $value;
			}
		}
		return $cleaned;
	}
	
	/**
	 * Saves the array of configuration changes in the correct place. This may currently be the wfConfig table, the WAF's config file, or both. The
	 * validation function will handle all bounds checks and this will be limited to normalizing the values as needed.
	 * 
	 * @param array $changes
	 * @throws wfConfigException
	 * @throws wfWAFStorageFileException
	 */
	public static function save($changes) {
		$waf = wfWAF::getInstance();
		$wafConfig = $waf->getStorageEngine();
		
		$apiKey = false;
		if (isset($changes['apiKey'])) { //Defer to end
			$apiKey = $changes['apiKey'];
			unset($changes['apiKey']);
		}
		
		foreach ($changes as $key => $value) {
			$saved = false;
			switch ($key) {
				//============ WAF
				case 'learningModeGracePeriod':
				{
					$wafStatus = (isset($changes['wafStatus']) ? $changes['wafStatus'] : $wafConfig->getConfig('wafStatus'));
					if ($wafStatus == wfFirewall::FIREWALL_MODE_LEARNING) {
						$dt = wfUtils::parseLocalTime($value);
						$gracePeriodEnd = $dt->format('U');
						$wafConfig->setConfig($key, $gracePeriodEnd);
					}
					
					$saved = true;
					break;
				}
				case 'learningModeGracePeriodEnabled':
				{
					$wafStatus = (isset($changes['wafStatus']) ? $changes['wafStatus'] : $wafConfig->getConfig('wafStatus'));
					if ($wafStatus == wfFirewall::FIREWALL_MODE_LEARNING) {
						$wafConfig->setConfig($key, wfUtils::truthyToInt($value));
					}
					
					$saved = true;
					break;
				}
				case 'wafStatus':
				{
					$wafConfig->setConfig($key, $value);
					if ($value != wfFirewall::FIREWALL_MODE_LEARNING) {
						$wafConfig->setConfig('learningModeGracePeriodEnabled', 0);
						$wafConfig->unsetConfig('learningModeGracePeriod');
					}
					
					$firewall = new wfFirewall();
					$firewall->syncStatus(true);
					
					if ($value == wfFirewall::FIREWALL_MODE_DISABLED) {
						$currentUser = wp_get_current_user();
						$username = $currentUser->user_login;

						$alertCallback = array(new wfWafDeactivatedAlert($username, wfUtils::getIP()), 'send');
						do_action('wordfence_security_event', 'wafDeactivated', array(
							'username' => $username,
							'ip' => wfUtils::getIP(),
						), $alertCallback);
					}
					
					$saved = true;
					break;
				}
				case 'wafRules':
				{
					$disabledRules = (array) $wafConfig->getConfig('disabledRules');
					foreach ($value as $ruleID => $ruleEnabled) {
						$ruleID = (int) $ruleID;
						if ($ruleEnabled) {
							unset($disabledRules[$ruleID]);
						} else {
							$disabledRules[$ruleID] = true;
						}
					}
					$wafConfig->setConfig('disabledRules', $disabledRules);
					
					$saved = true;
					break;
				}
				case 'whitelistedURLParams':
				{
					$whitelistedURLParams = (array) $wafConfig->getConfig('whitelistedURLParams', null, 'livewaf');
					if (isset($value['delete'])) {
						foreach ($value['delete'] as $whitelistKey => $unused) {
							unset($whitelistedURLParams[$whitelistKey]);
						}
					}
					if (isset($value['enabled'])) {
						foreach ($value['enabled'] as $whitelistKey => $enabled) {
							if (array_key_exists($whitelistKey, $whitelistedURLParams) && is_array($whitelistedURLParams[$whitelistKey])) {
								foreach ($whitelistedURLParams[$whitelistKey] as $ruleID => $data) {
									$whitelistedURLParams[$whitelistKey][$ruleID]['disabled'] = !$enabled;
								}
							}
						}
					}
					$wafConfig->setConfig('whitelistedURLParams', $whitelistedURLParams, 'livewaf');
					
					if (isset($value['add'])) {
						foreach ($value['add'] as $entry) {
							$path = @base64_decode($entry['path']);
							$paramKey = @base64_decode($entry['paramKey']);
							if (!$path || !$paramKey) {
								continue;
							}
							$data = array(
								'timestamp'   => (int) $entry['data']['timestamp'],
								'description' => $entry['data']['description'],
								'ip'          => wfUtils::getIP(),
								'disabled'    => !!$entry['data']['disabled'],
							);
							if (function_exists('get_current_user_id')) {
								$data['userID'] = get_current_user_id();
							}
							$waf->whitelistRuleForParam($path, $paramKey, 'all', $data);
						}
					}
					
					$saved = true;
					break;
				}
				case 'disableWAFBlacklistBlocking':
				{
					$wafConfig->setConfig($key, wfUtils::truthyToInt($value));
					if (method_exists(wfWAF::getInstance()->getStorageEngine(), 'purgeIPBlocks')) {
						wfWAF::getInstance()->getStorageEngine()->purgeIPBlocks(wfWAFStorageInterface::IP_BLOCKS_BLACKLIST);
					}
					if ($value) {
						$cron = wfWAF::getInstance()->getStorageEngine()->getConfig('cron', array(), 'livewaf');
						if (!is_array($cron)) {
							$cron = array();
						}
						foreach ($cron as $cronKey => $cronJob) {
							if ($cronJob instanceof wfWAFCronFetchBlacklistPrefixesEvent) {
								unset($cron[$cronKey]);
							}
						}
						$cron[] = new wfWAFCronFetchBlacklistPrefixesEvent(time() - 1);
						wfWAF::getInstance()->getStorageEngine()->setConfig('cron', $cron, 'livewaf');
					}

					$saved = true;
					break;
				}
				case 'avoid_php_input':
				{
					$wafConfig->setConfig($key, wfUtils::truthyToInt($value));
					$saved = true;
					break;
				}
				
				//============ Plugin (specialty treatment)
				case 'alertEmails':
				{
					$emails = explode(',', preg_replace('/[\r\n\s\t]+/', '', $value));
					$emails = array_filter($emails); //Already validated above
					if (count($emails) > 0) {
						wfConfig::set($key, implode(',', $emails));
					}
					else {
						wfConfig::set($key, '');
					}
					
					$saved = true;
					break;
				}
				case 'loginSec_userBlacklist':
				case 'scan_exclude':
				case 'email_summary_excluded_directories':
				{
					if (is_array($value)) {
						$value = implode("\n", $value);
					}
					
					wfConfig::set($key, wfUtils::cleanupOneEntryPerLine($value));
					$saved = true;
					break;
				}
				case 'whitelisted':
				{
					$whiteIPs = explode(',', preg_replace('/[\r\n\s\t]+/', ',', $value));
					$whiteIPs = array_filter($whiteIPs); //Already validated above
					if (count($whiteIPs) > 0) {
						wfConfig::set($key, implode(',', $whiteIPs));
					}
					else {
						wfConfig::set($key, '');
					}
					
					if (method_exists(wfWAF::getInstance()->getStorageEngine(), 'purgeIPBlocks')) {
						wfWAF::getInstance()->getStorageEngine()->purgeIPBlocks(wfWAFStorageInterface::IP_BLOCKS_BLACKLIST);
					}
					
					$saved = true;
					break;
				}
				case 'whitelistedServices':
				{
					if (is_string($value)) { //Already JSON (import/export settings)
						wfConfig::set($key, $value);
					}
					else {
						wfConfig::setJSON($key, (array) $value);
					}
					
					$wafConfig->setConfig('whitelistedServiceIPs', @json_encode(wfUtils::whitelistedServiceIPs()), 'synced');
					
					if (method_exists(wfWAF::getInstance()->getStorageEngine(), 'purgeIPBlocks')) {
						wfWAF::getInstance()->getStorageEngine()->purgeIPBlocks(wfWAFStorageInterface::IP_BLOCKS_BLACKLIST);
					}
					
					$saved = true;
					break;
				}
				case 'liveTraf_ignoreUsers':
				{
					$dirtyUsers = explode(',', $value);
					$validUsers = array();
					foreach ($dirtyUsers as $val) {
						$val = trim($val);
						if (strlen($val) > 0) {
							$validUsers[] = $val; //Already validated above
						}
					}
					if (count($validUsers) > 0) {
						wfConfig::set($key, implode(',', $validUsers));
					}
					else {
						wfConfig::set($key, '');
					}
					
					$saved = true;
					break;
				}
				case 'liveTraf_ignoreIPs':
				{
					$validIPs = explode(',', preg_replace('/[\r\n\s\t]+/', '', $value));
					$validIPs = array_filter($validIPs); //Already validated above
					if (count($validIPs) > 0) {
						wfConfig::set($key, implode(',', $validIPs));
					}
					else {
						wfConfig::set($key, '');
					}
					
					$saved = true;
					break;
				}
				case 'liveTraf_ignoreUA':
				{
					if (preg_match('/[a-zA-Z0-9\d]+/', $value)) {
						wfConfig::set($key, trim($value));
					}
					else {
						wfConfig::set($key, '');
					}
					$saved = true;
					break;
				}
				case 'howGetIPs_trusted_proxies':
				{
					$validIPs = preg_split('/[\r\n,]+/', $value);
					$validIPs = array_filter($validIPs); //Already validated above
					if (count($validIPs) > 0) {
						wfConfig::set($key, implode("\n", $validIPs));
					}
					else {
						wfConfig::set($key, '');
					}
					
					$saved = true;
					break;
				}
				case 'other_WFNet':
				{
					$value = wfUtils::truthyToBoolean($value);
					wfConfig::set($key, $value);
					if (!$value) {
						wfBlock::removeTemporaryWFSNBlocks();
					}
					$saved = true;
					break;
				}
				case 'howGetIPs':
				{
					wfConfig::set($key, $value);
					wfConfig::set('detectProxyNextCheck', false, wfConfig::DONT_AUTOLOAD);
					$saved = true;
					break;
				}
				case 'bannedURLs':
				{
					wfConfig::set($key, preg_replace('/[\n\r]+/', ',', $value));
					$saved = true;
					break;
				}
				case 'autoUpdate':
				{
					if (wfUtils::truthyToBoolean($value)) {
						wfConfig::enableAutoUpdate(); //Also sets the option
					}
					else {
						wfConfig::disableAutoUpdate();
					}
					$saved = true;
					break;
				}
				case 'disableCodeExecutionUploads':
				{
					$value = wfUtils::truthyToBoolean($value);
					wfConfig::set($key, $value);
					if ($value) {
						wfConfig::disableCodeExecutionForUploads(); //Can throw wfConfigException
					}
					else {
						wfConfig::removeCodeExecutionProtectionForUploads();
					}
					$saved = true;
					break;
				}
				case 'email_summary_interval':
				{
					wfConfig::set($key, $value);
					wfActivityReport::scheduleCronJob();
					$saved = true;
					break;
				}
				case 'email_summary_enabled':
				{
					$value = wfUtils::truthyToBoolean($value);
					wfConfig::set($key, $value);
					if ($value) {
						wfActivityReport::scheduleCronJob();
					}
					else {
						wfActivityReport::disableCronJob();
					}
					$saved = true;
					break;
				}
				case 'other_hideWPVersion':
				{
					$value = wfUtils::truthyToBoolean($value);
					wfConfig::set($key, $value);
					if ($value) {
						wfUtils::hideReadme();
					}
					else {
						wfUtils::showReadme();
					}
					$saved = true;
					break;
				}
				case 'liveTraf_maxAge':
				{
					$value = max(1, $value);
					break;
				}
				
				//Scan scheduling
				case 'scanSched':
				case 'schedStartHour':
				case 'manualScanType':
				case 'schedMode':
				case 'scheduledScansEnabled':
				{
					wfScanner::setNeedsRescheduling();
					//Letting these fall through to the default save handler
					break;
				}
			}
			
			//============ Plugin (default treatment)
			if (!$saved) {
				if (isset(self::$defaultConfig['checkboxes'][$key]) ||
					(isset(self::$defaultConfig['otherParams'][$key]) && self::$defaultConfig['otherParams'][$key]['validation']['type'] == self::TYPE_BOOL) ||
					(isset(self::$defaultConfig['defaultsOnly'][$key]) && self::$defaultConfig['defaultsOnly'][$key]['validation']['type'] == self::TYPE_BOOL)) { //Boolean
					wfConfig::set($key, wfUtils::truthyToInt($value));
				}
				else if ((isset(self::$defaultConfig['otherParams'][$key]) && self::$defaultConfig['otherParams'][$key]['validation']['type'] == self::TYPE_INT) ||
						 (isset(self::$defaultConfig['defaultsOnly'][$key]) && self::$defaultConfig['defaultsOnly'][$key]['validation']['type'] == self::TYPE_INT)) {
					wfConfig::set($key, (int) $value);
				}
				else if ((isset(self::$defaultConfig['otherParams'][$key]) && (self::$defaultConfig['otherParams'][$key]['validation']['type'] == self::TYPE_FLOAT || self::$defaultConfig['otherParams'][$key]['validation']['type'] == self::TYPE_DOUBLE)) ||
						 (isset(self::$defaultConfig['defaultsOnly'][$key]) && (self::$defaultConfig['defaultsOnly'][$key]['validation']['type'] == self::TYPE_FLOAT || self::$defaultConfig['defaultsOnly'][$key]['validation']['type'] == self::TYPE_DOUBLE))) {
					wfConfig::set($key, (double) $value);
				}
				else if ((isset(self::$defaultConfig['otherParams'][$key]) && self::$defaultConfig['otherParams'][$key]['validation']['type'] == self::TYPE_STRING) ||
						 (isset(self::$defaultConfig['defaultsOnly'][$key]) && self::$defaultConfig['defaultsOnly'][$key]['validation']['type'] == self::TYPE_STRING)) {
					wfConfig::set($key, (string) $value);
				}
				else if (in_array($key, self::$serializedOptions)) {
					wfConfig::set_ser($key, $value);
				}
				else if (in_array($key, self::$wfCentralInternalConfig)) {
					wfConfig::set($key, $value);
				}
				else if (WFWAF_DEBUG) {
					error_log("*** DEBUG: Config option '{$key}' missing save handler.");
				}
			}
		}
	
		if ($apiKey !== false) {
			$existingAPIKey = wfConfig::get('apiKey', '');
			$apiKey = strtolower(trim($apiKey)); //Already validated above
			$ping = false;
			if (empty($apiKey)) { //Empty, try getting a free key
				$api = new wfAPI('', wfUtils::getWPVersion());
				try {
					$keyData = $api->call('get_anon_api_key');
					if ($keyData['ok'] && $keyData['apiKey']) {
						wfConfig::set('apiKey', $keyData['apiKey']);
						wfConfig::set('isPaid', false);
						wfConfig::set('keyType', wfLicense::KEY_TYPE_FREE);
						wordfence::licenseStatusChanged();
						wfConfig::set('touppPromptNeeded', true);
					}
					else {
						throw new Exception(__("The Wordfence server's response did not contain the expected elements.", 'wordfence'));
					}
				}
				catch (Exception $e) {
					throw new wfConfigException(__('Your options have been saved, but you left your license key blank, so we tried to get you a free license key from the Wordfence servers. There was a problem fetching the free key: ', 'wordfence') . wp_kses($e->getMessage(), array()));
				}
			}
			else if ($existingAPIKey != $apiKey) { //Key changed, try activating
				$api = new wfAPI($apiKey, wfUtils::getWPVersion());
				try {
					$res = $api->call('check_api_key', array(), array('previousLicense' => $existingAPIKey));
					if ($res['ok'] && isset($res['isPaid'])) {
						$isPaid = wfUtils::truthyToBoolean($res['isPaid']);
						wfConfig::set('apiKey', $apiKey);
						wfConfig::set('isPaid', $isPaid); //res['isPaid'] is boolean coming back as JSON and turned back into PHP struct. Assuming JSON to PHP handles bools.
						wordfence::licenseStatusChanged();
						if (!$isPaid) {
							wfConfig::set('keyType', wfLicense::KEY_TYPE_FREE);
						}
						$ping = true;
					}
					else {
						throw new Exception(__("The Wordfence server's response did not contain the expected elements.", 'wordfence'));
					}
				}
				catch (Exception $e) {
					throw new wfConfigException(__('Your options have been saved. However we noticed you changed your license key, and we tried to verify it with the Wordfence servers but received an error: ', 'wordfence') . wp_kses($e->getMessage(), array()));
				}
			}
			else { //Key unchanged, just ping it
				$ping = true;
			}
			
			if ($ping) {
				$api = new wfAPI($apiKey, wfUtils::getWPVersion());
				try {
					$keyType = wfLicense::KEY_TYPE_FREE;
					$keyData = $api->call('ping_api_key', array(), array('supportHash' => wfConfig::get('supportHash', ''), 'whitelistHash' => wfConfig::get('whitelistHash', ''), 'tldlistHash' => wfConfig::get('tldlistHash', ''), 'ipResolutionListHash' => wfConfig::get('ipResolutionListHash', '')));
					if (isset($keyData['_isPaidKey'])) {
						$keyType = wfConfig::get('keyType');
					}
					if (isset($keyData['dashboard'])) {
						wfConfig::set('lastDashboardCheck', time());
						wfDashboard::processDashboardResponse($keyData['dashboard']);
					}
					if (isset($keyData['support']) && isset($keyData['supportHash'])) {
						wfConfig::set('supportContent', $keyData['support'], wfConfig::DONT_AUTOLOAD);
						wfConfig::set('supportHash', $keyData['supportHash']);
					}
					if (isset($keyData['_whitelist']) && isset($keyData['_whitelistHash'])) {
						wfConfig::setJSON('whitelistPresets', $keyData['_whitelist']);
						wfConfig::set('whitelistHash', $keyData['_whitelistHash']);
					}
					if (isset($keyData['_tldlist']) && isset($keyData['_tldlistHash'])) {
						wfConfig::set('tldlist', $keyData['_tldlist'], wfConfig::DONT_AUTOLOAD);
						wfConfig::set('tldlistHash', $keyData['_tldlistHash']);
					}
					if (isset($keyData['_ipResolutionList']) && isset($keyData['_ipResolutionListHash'])) {
						wfConfig::setJSON('ipResolutionList', $keyData['_ipResolutionList']);
						wfConfig::set('ipResolutionListHash', $keyData['_ipResolutionListHash']);
					}
					if (isset($keyData['scanSchedule']) && is_array($keyData['scanSchedule'])) {
						wfConfig::set_ser('noc1ScanSchedule', $keyData['scanSchedule']);
						if (wfScanner::shared()->schedulingMode() == wfScanner::SCAN_SCHEDULING_MODE_AUTOMATIC) {
							wfScanner::shared()->scheduleScans();
						}
					}
					if (isset($keyData['showWfCentralUI'])) {
						wfConfig::set('showWfCentralUI', (int) $keyData['showWfCentralUI']);
					}

					wfConfig::set('keyType', $keyType);
				}
				catch (Exception $e){
					throw new wfConfigException(__('Your options have been saved. However we tried to verify your license key with the Wordfence servers and received an error: ', 'wordfence') . wp_kses($e->getMessage(), array()));
				}
			}
		}
		
		wfNotification::reconcileNotificationsWithOptions();
		wfCentral::requestConfigurationSync();
	}
	
	public static function restoreDefaults($section) {
		switch ($section) {
			case self::OPTIONS_TYPE_GLOBAL:
				$options = array(
					'alertOn_critical',
					'alertOn_update',
					'alertOn_warnings',
					'alertOn_throttle',
					'alertOn_block',
					'alertOn_loginLockout',
					'alertOn_breachLogin',
					'alertOn_lostPasswdForm',
					'alertOn_adminLogin',
					'alertOn_firstAdminLoginOnly',
					'alertOn_nonAdminLogin',
					'alertOn_firstNonAdminLoginOnly',
					'alertOn_wordfenceDeactivated',
					'liveActivityPauseEnabled',
					'notification_updatesNeeded',
					'notification_securityAlerts',
					'notification_promotions',
					'notification_blogHighlights',
					'notification_productUpdates',
					'notification_scanStatus',
					'enableRemoteIpLookup',
					'other_hideWPVersion',
					'other_bypassLitespeedNoabort',
					'deleteTablesOnDeact',
					'autoUpdate',
					'disableCodeExecutionUploads',
					'email_summary_enabled',
					'email_summary_dashboard_widget_enabled',
					'howGetIPs',
					'actUpdateInterval',
					'alert_maxHourly',
					'email_summary_interval',
					'email_summary_excluded_directories',
					'howGetIPs_trusted_proxies',
					'howGetIPs_trusted_proxy_preset',
					'displayTopLevelOptions',
				);
				break;
			case self::OPTIONS_TYPE_FIREWALL:
				$options = array(
					'firewallEnabled',
					'autoBlockScanners',
					'loginSecurityEnabled',
					'loginSec_strongPasswds_enabled',
					'loginSec_breachPasswds_enabled',
					'loginSec_lockInvalidUsers',
					'loginSec_maskLoginErrors',
					'loginSec_blockAdminReg',
					'loginSec_disableAuthorScan',
					'loginSec_disableOEmbedAuthor',
					'other_blockBadPOST',
					'other_pwStrengthOnUpdate',
					'other_WFNet',
					'ajaxWatcherDisabled_front',
					'ajaxWatcherDisabled_admin',
					'wafAlertOnAttacks',
					'disableWAFIPBlocking',
					'whitelisted',
					'whitelistedServices',
					'bannedURLs',
					'loginSec_userBlacklist',
					'neverBlockBG',
					'loginSec_countFailMins',
					'loginSec_lockoutMins',
					'loginSec_strongPasswds',
					'loginSec_breachPasswds',
					'loginSec_maxFailures',
					'loginSec_maxForgotPasswd',
					'maxGlobalRequests',
					'maxGlobalRequests_action',
					'maxRequestsCrawlers',
					'maxRequestsCrawlers_action',
					'maxRequestsHumans',
					'maxRequestsHumans_action',
					'max404Crawlers',
					'max404Crawlers_action',
					'max404Humans',
					'max404Humans_action',
					'blockedTime',
					'allowed404s',
					'wafAlertWhitelist',
					'wafAlertInterval',
					'wafAlertThreshold',
					'dismissAutoPrependNotice',
				);
				break;
			case self::OPTIONS_TYPE_BLOCKING:
				$options = array(
					'displayTopLevelBlocking',
					'cbl_loggedInBlocked',
					'cbl_action',
					'cbl_redirURL',
					'cbl_bypassRedirURL',
					'cbl_bypassRedirDest',
					'cbl_bypassViewURL',
				);
				break;
			case self::OPTIONS_TYPE_SCANNER:
				$options = array(
					'checkSpamIP',
					'spamvertizeCheck',
					'scheduledScansEnabled',
					'lowResourceScansEnabled',
					'scansEnabled_checkGSB',
					'scansEnabled_checkHowGetIPs',
					'scansEnabled_core',
					'scansEnabled_themes',
					'scansEnabled_plugins',
					'scansEnabled_coreUnknown',
					'scansEnabled_malware',
					'scansEnabled_fileContents',
					'scansEnabled_fileContentsGSB',
					'scansEnabled_checkReadableConfig',
					'scansEnabled_suspectedFiles',
					'scansEnabled_posts',
					'scansEnabled_comments',
					'scansEnabled_suspiciousOptions',
					'scansEnabled_passwds',
					'scansEnabled_diskSpace',
					'scansEnabled_wafStatus',
					'scansEnabled_options',
					'scansEnabled_wpscan_fullPathDisclosure',
					'scansEnabled_wpscan_directoryListingEnabled',
					'scansEnabled_scanImages',
					'scansEnabled_highSense',
					'scansEnabled_oldVersions',
					'scansEnabled_suspiciousAdminUsers',
					'scan_include_extra',
					'maxMem',
					'scan_exclude',
					'scan_maxIssues',
					'scan_maxDuration',
					'maxExecutionTime',
					'scanType',
					'manualScanType',
					'schedMode',
				);
				break;
			case self::OPTIONS_TYPE_TWO_FACTOR:
				$options = array(
					'loginSec_requireAdminTwoFactor',
					'loginSec_enableSeparateTwoFactor',
				);
				break;
			case self::OPTIONS_TYPE_LIVE_TRAFFIC:
				$options = array(
					'liveTrafficEnabled',
					'liveTraf_ignorePublishers',
					'liveTraf_displayExpandedRecords',
					'liveTraf_ignoreUsers',
					'liveTraf_ignoreIPs',
					'liveTraf_ignoreUA',
					'liveTraf_maxRows',
					'liveTraf_maxAge',
					'displayTopLevelLiveTraffic',
				);
				break;
			case self::OPTIONS_TYPE_DIAGNOSTICS:
				$options = array(
					'debugOn',
					'startScansRemotely',
					'ssl_verify',
					'wordfenceI18n',
				);
				break;
			case self::OPTIONS_TYPE_ALL:
				$options = array(
					'alertOn_critical',
					'alertOn_update',
					'alertOn_warnings',
					'alertOn_throttle',
					'alertOn_block',
					'alertOn_loginLockout',
					'alertOn_breachLogin',
					'alertOn_lostPasswdForm',
					'alertOn_adminLogin',
					'alertOn_firstAdminLoginOnly',
					'alertOn_nonAdminLogin',
					'alertOn_firstNonAdminLoginOnly',
					'alertOn_wordfenceDeactivated',
					'liveActivityPauseEnabled',
					'notification_updatesNeeded',
					'notification_securityAlerts',
					'notification_promotions',
					'notification_blogHighlights',
					'notification_productUpdates',
					'notification_scanStatus',
					'other_hideWPVersion',
					'other_bypassLitespeedNoabort',
					'deleteTablesOnDeact',
					'autoUpdate',
					'disableCodeExecutionUploads',
					'email_summary_enabled',
					'email_summary_dashboard_widget_enabled',
					'howGetIPs',
					'actUpdateInterval',
					'alert_maxHourly',
					'email_summary_interval',
					'email_summary_excluded_directories',
					'howGetIPs_trusted_proxies',
					'howGetIPs_trusted_proxy_preset',
					'firewallEnabled',
					'autoBlockScanners',
					'loginSecurityEnabled',
					'loginSec_strongPasswds_enabled',
					'loginSec_breachPasswds_enabled',
					'loginSec_lockInvalidUsers',
					'loginSec_maskLoginErrors',
					'loginSec_blockAdminReg',
					'loginSec_disableAuthorScan',
					'loginSec_disableOEmbedAuthor',
					'other_blockBadPOST',
					'other_pwStrengthOnUpdate',
					'other_WFNet',
					'ajaxWatcherDisabled_front',
					'ajaxWatcherDisabled_admin',
					'wafAlertOnAttacks',
					'disableWAFIPBlocking',
					'whitelisted',
					'whitelistedServices',
					'bannedURLs',
					'loginSec_userBlacklist',
					'neverBlockBG',
					'loginSec_countFailMins',
					'loginSec_lockoutMins',
					'loginSec_strongPasswds',
					'loginSec_breachPasswds',
					'loginSec_maxFailures',
					'loginSec_maxForgotPasswd',
					'maxGlobalRequests',
					'maxGlobalRequests_action',
					'maxRequestsCrawlers',
					'maxRequestsCrawlers_action',
					'maxRequestsHumans',
					'maxRequestsHumans_action',
					'max404Crawlers',
					'max404Crawlers_action',
					'max404Humans',
					'max404Humans_action',
					'blockedTime',
					'allowed404s',
					'wafAlertWhitelist',
					'wafAlertInterval',
					'wafAlertThreshold',
					'dismissAutoPrependNotice',
					'displayTopLevelBlocking',
					'cbl_loggedInBlocked',
					'cbl_action',
					'cbl_redirURL',
					'cbl_bypassRedirURL',
					'cbl_bypassRedirDest',
					'cbl_bypassViewURL',
					'checkSpamIP',
					'spamvertizeCheck',
					'scheduledScansEnabled',
					'lowResourceScansEnabled',
					'scansEnabled_checkGSB',
					'scansEnabled_checkHowGetIPs',
					'scansEnabled_core',
					'scansEnabled_themes',
					'scansEnabled_plugins',
					'scansEnabled_coreUnknown',
					'scansEnabled_malware',
					'scansEnabled_fileContents',
					'scansEnabled_fileContentsGSB',
					'scansEnabled_checkReadableConfig',
					'scansEnabled_suspectedFiles',
					'scansEnabled_posts',
					'scansEnabled_comments',
					'scansEnabled_suspiciousOptions',
					'scansEnabled_passwds',
					'scansEnabled_diskSpace',
					'scansEnabled_wafStatus',
					'scansEnabled_options',
					'scansEnabled_wpscan_fullPathDisclosure',
					'scansEnabled_wpscan_directoryListingEnabled',
					'scansEnabled_scanImages',
					'scansEnabled_highSense',
					'scansEnabled_oldVersions',
					'scansEnabled_suspiciousAdminUsers',
					'scan_include_extra',
					'maxMem',
					'scan_exclude',
					'scan_maxIssues',
					'scan_maxDuration',
					'maxExecutionTime',
					'scanType',
					'manualScanType',
					'schedMode',
					'loginSec_requireAdminTwoFactor',
					'loginSec_enableSeparateTwoFactor',
					'liveTrafficEnabled',
					'liveTraf_ignorePublishers',
					'liveTraf_displayExpandedRecords',
					'liveTraf_ignoreUsers',
					'liveTraf_ignoreIPs',
					'liveTraf_ignoreUA',
					'liveTraf_maxRows',
					'liveTraf_maxAge',
					'displayTopLevelLiveTraffic',
					'other_scanComments',
					'advancedCommentScanning',
				);
				break;
		}
		
		if (isset($options)) {
			$changes = array();
			foreach ($options as $key) {
				if (isset(self::$defaultConfig['checkboxes'][$key])) {
					$changes[$key] = self::$defaultConfig['checkboxes'][$key]['value'];
				}
				else if (isset(self::$defaultConfig['otherParams'][$key])) {
					$changes[$key] = self::$defaultConfig['otherParams'][$key]['value'];
				}
				else if (isset(self::$defaultConfig['defaultsOnly'][$key])) {
					$changes[$key] = self::$defaultConfig['defaultsOnly'][$key]['value'];
				}
			}
			
			try {
				self::save($changes);
				return true;
			}
			catch (Exception $e) {
				//Do nothing
			}
		}
		
		return false;
	}
}

class wfConfigException extends Exception {}lib/menu_firewall_blocking.php000064400000024377150755146450012555 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
?>
<div class="wf-row">
	<div class="wf-col-xs-12">
		<div class="wf-block wf-block-no-header wf-active">
			<div class="wf-block-content">
				<ul class="wf-block-list">
					<li>
						<?php
						echo wfView::create('blocking/blocking-status', array(
						))->render();
						?>
					</li>
				</ul>
			</div>
		</div>
	</div>
</div>
<div class="wf-row">
	<div class="wf-col-xs-12">
		<div class="wf-block wf-always-active">
			<?php if (!wfConfig::get('firewallEnabled')): ?>
			<ul class="wf-block-banner">
				<li><?php echo wp_kses(__('<strong>Note:</strong> Blocking is disabled when the option "Enable Rate Limiting and Advanced Blocking" is off.', 'wordfence'), array('strong'=>array())); ?></li>
				<li><a href="#" class="wf-btn wf-btn-default" id="wf-blocking-enable" role="button"><?php esc_html_e('Turn On', 'wordfence'); ?></a></li>
			</ul>
			<?php endif; ?>
			<?php if (version_compare(phpversion(), '5.4') < 0 && wfConfig::get('isPaid') && wfBlock::hasCountryBlock()): ?>
				<ul class="wf-block-banner">
					<li><?php echo esc_html(sprintf(
							/* translators: PHP version. */
							__('<strong>Note:</strong> The GeoIP database that is required for country blocking has been updated to a new format. This new format requires sites to run PHP 5.4 or newer, and this site is on PHP %s. To ensure country blocking continues functioning, please update PHP.', 'wordfence'), wfUtils::cleanPHPVersion())); ?></li>
					<li><a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_RESULT_GEOIP_UPDATE); ?>" class="wf-btn wf-btn-default" target="_blank" rel="noopener noreferrer"><?php esc_html_e('More Information', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></li>
				</ul>
			<?php endif; ?>
			<div class="wf-block-header">
				<div class="wf-block-header-content">
					<div class="wf-block-title">
						<strong id="wf-block-parameters-title" data-new-title="<?php esc_attr_e('Create a Blocking Rule', 'wordfence'); ?>" data-edit-title="<?php esc_attr_e('Edit Blocking Rule', 'wordfence'); ?>"><?php esc_html_e('Create a Blocking Rule', 'wordfence'); ?></strong>
					</div>
				</div>
			</div>
			<div class="wf-block-content">
				<?php
				echo wfView::create('blocking/blocking-create', array(
				))->render();
				?>
			</div>
		</div>
	</div>
</div> <!-- end firewall status -->
<?php
echo wfView::create('blocking/block-list', array(
))->render();
?>
<div id="wf-overlay-wrapper" style="display: none">
	<div class="wf-overlay">
		<div class="wf-overlay-header"></div>
		<div class="wf-overlay-body"></div>
		<span class="wf-overlay-close wf-ion-android-close"></span>
	</div>
</div>
<script type="application/javascript">
	(function($) {
		$(function() {
			$('#wf-blocking-enable').on('click', function(e) {
				e.preventDefault();
				e.stopPropagation();

				WFAD.setOption('firewallEnabled', 1, function() {
					window.location.reload(true);
				});
			});
		});
	})(jQuery);
</script>
<?php if (wfOnboardingController::willShowNewTour(wfOnboardingController::TOUR_BLOCKING)): ?>
	<script type="application/javascript">
		(function($) {
			$(function() {
				WFAD.setUpBlockingTour = function() {
					WFAD.tour1 = function () {
						WFAD.tour('wfBlockingNewTour1', 'wf-section-blocking', 'top', 'left', null, WFAD.tour2);
					};
					WFAD.tour2 = function () {
						WFAD.tour('wfBlockingNewTour2', 'wf-create-block', 'top', 'top', WFAD.tour1, WFAD.tour3);
					};
					WFAD.tour3 = function () {
						WFAD.tour('wfBlockingNewTour3', 'wf-blocks-wrapper', 'bottom', 'bottom', WFAD.tour2, WFAD.tourComplete);
					};
					WFAD.tourComplete = function () {
						WFAD.tourFinish('<?php echo esc_attr(wfOnboardingController::TOUR_BLOCKING); ?>');
					};
				}

				WFAD.blockingTourShown = false;
				<?php if (wfOnboardingController::shouldShowNewTour(wfOnboardingController::TOUR_BLOCKING)): ?>
				$(window).on('wfTabChange', function(e, tab) {
					if (tab == 'blocking' && !WFAD.blockingTourShown) {
						WFAD.blockingTourShown = true;
						WFAD.setUpBlockingTour();
						if (!WFAD.isSmallScreen) { WFAD.tour1(); }
					}
				});

				if ($('#blocking').hasClass('wf-active')) {
					WFAD.blockingTourShown = true;
					WFAD.setUpBlockingTour();
					if (!WFAD.isSmallScreen) { WFAD.tour1(); }
				}
				<?php endif; ?>
			});
		})(jQuery);
	</script>

	<script type="text/x-jquery-template" id="wfBlockingNewTour1">
		<div>
			<h3><?php esc_html_e('Blocking', 'wordfence'); ?></h3>
			<p><?php esc_html_e('Wordfence lets you take control of protecting your site with powerful blocking features. Block traffic based on IP, IP range, hostname, browser, or referrer. Country blocking is available for Premium customers.', 'wordfence'); ?></p>
			<div class="wf-pointer-footer">
				<ul class="wf-tour-pagination">
					<li class="wf-active">&bullet;</li>
					<li>&bullet;</li>
					<li>&bullet;</li>
				</ul>
				<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Next', 'wordfence'); ?></a></div>
			</div>
			<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
		</div>
	</script>
	<script type="text/x-jquery-template" id="wfBlockingNewTour2">
		<div>
			<h3><?php esc_html_e('Blocking Builder', 'wordfence'); ?></h3>
			<p><?php esc_html_e('All of your blocking rules are in one central location. Choose the Block Type, then enter the details for the rule. Once it has been added, you\'ll see it saved as a rule for your site.', 'wordfence'); ?></p>
			<div class="wf-pointer-footer">
				<ul class="wf-tour-pagination">
					<li>&bullet;</li>
					<li class="wf-active">&bullet;</li>
					<li>&bullet;</li>
				</ul>
				<div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default" role="button"><?php esc_html_e('Previous', 'wordfence'); ?></a></div>
				<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Next', 'wordfence'); ?></a></div>
			</div>
			<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
		</div>
	</script>
	<script type="text/x-jquery-template" id="wfBlockingNewTour3">
		<div>
			<h3><?php esc_html_e('Manage Blocking Rules', 'wordfence'); ?></h3>
			<p><?php esc_html_e('Here\'s where you\'ll see all the blocking rules you\'ve created. You can also manage them as well as remove or modify them from this table.', 'wordfence'); ?></p>
			<div class="wf-pointer-footer">
				<ul class="wf-tour-pagination">
					<li>&bullet;</li>
					<li>&bullet;</li>
					<li class="wf-active">&bullet;</li>
				</ul>
				<div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default" role="button"><?php esc_html_e('Previous', 'wordfence'); ?></a></div>
				<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Got it', 'wordfence'); ?></a></div>
			</div>
			<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
		</div>
	</script>
<?php endif; ?>

<?php if (wfOnboardingController::willShowUpgradeTour(wfOnboardingController::TOUR_BLOCKING)): ?>
	<script type="application/javascript">
		(function($) {
			$(function() {
				WFAD.setUpBlockingTour = function() {
					WFAD.tour1 = function () {
						WFAD.tour('wfBlockingUpgradeTour1', 'wf-create-block', 'top', 'top', null, WFAD.tour2);
					};
					WFAD.tour2 = function () {
						WFAD.tour('wfBlockingUpgradeTour2', 'wf-blocks-wrapper', 'bottom', 'bottom', WFAD.tour1, WFAD.tourComplete);
					};
					WFAD.tourComplete = function () {
						WFAD.tourFinish('<?php echo esc_attr(wfOnboardingController::TOUR_BLOCKING); ?>');
					};
				};

				WFAD.blockingTourShown = false;
				<?php if (wfOnboardingController::shouldShowUpgradeTour(wfOnboardingController::TOUR_BLOCKING)): ?>
				$(window).on('wfTabChange', function(e, tab) {
					if (tab == 'blocking' && !WFAD.blockingTourShown) {
						WFAD.blockingTourShown = true;
						WFAD.setUpBlockingTour();
						if (!WFAD.isSmallScreen) { WFAD.tour1(); }
					}
				});

				if ($('#blocking').hasClass('wf-active')) {
					WFAD.blockingTourShown = true;
					WFAD.setUpBlockingTour();
					if (!WFAD.isSmallScreen) { WFAD.tour1(); }
				}
				<?php endif; ?>
			});
		})(jQuery);
	</script>

	<script type="text/x-jquery-template" id="wfBlockingUpgradeTour1">
		<div>
			<h3><?php esc_html_e('Blocking Builder', 'wordfence'); ?></h3>
			<p><?php echo wp_kses(__('All of the blocking rules you create are now in one central location. Simply choose the block type and enter the details for the rule you want to create. Premium users have access to advanced country blocking options, found via the <strong>Options</strong> link.', 'wordfence'), array('strong'=>array())); ?></p>
			<div class="wf-pointer-footer">
				<ul class="wf-tour-pagination">
					<li class="wf-active">&bullet;</li>
					<li>&bullet;</li>
				</ul>
				<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Next', 'wordfence'); ?></a></div>
			</div>
			<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
		</div>
	</script>
	<script type="text/x-jquery-template" id="wfBlockingUpgradeTour2">
		<div>
			<h3><?php esc_html_e('Manage Blocking Rules', 'wordfence'); ?></h3>
			<p><?php esc_html_e('All blocking rules you create will show here. You can manage them as well as remove or modify them from the same location.', 'wordfence'); ?></p>
			<div class="wf-pointer-footer">
				<ul class="wf-tour-pagination">
					<li>&bullet;</li>
					<li class="wf-active">&bullet;</li>
				</ul>
				<div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default" role="button"><?php esc_html_e('Previous', 'wordfence'); ?></a></div>
				<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Got it', 'wordfence'); ?></a></div>
			</div>
			<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
		</div>
	</script>
<?php endif; ?>lib/wfViewResult.php000064400000002652150755146450010512 0ustar00<?php if (!defined('WORDFENCE_VERSION')) { exit; } ?>
<?php if(! wfUtils::isAdmin()){ exit(); } ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"  dir="ltr" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel='stylesheet' id='wordfence-main-style-css'  href='<?php echo wfUtils::getBaseURL() . wfUtils::versionedAsset('css/diff.css'); ?>?ver=<?php echo WORDFENCE_VERSION; ?>' type='text/css' media='all' />
<body>
<h1><?php esc_html_e('Wordfence: File Viewer', 'wordfence') ?></h1>
<table border="0" style="margin: 0 0 20px 0;" class="summary">
<tr><td><?php esc_html_e('Filename:', 'wordfence') ?></td><td><?php echo wp_kses($localFile, array()); ?></td></tr>
<tr><td><?php esc_html_e('File Size:', 'wordfence') ?></td><td><?php echo $fileSize; ?></td></tr>
<tr><td><?php esc_html_e('File last modified:', 'wordfence') ?></td><td><?php echo $fileMTime; ?></td></tr>
</table>

<?php 
	if($isEmpty){
		echo "File is empty.";
	} else {
		highlight_string($cont);
	}
?>



<div class="diffFooter"><?php echo wp_kses(sprintf(__('&copy;&nbsp;%d to %d Wordfence &mdash; Visit <a href="http://wordfence.com/">Wordfence.com</a> for help, security updates and more.', 'wordfence'), date_i18n('Y', WORDFENCE_EPOCH), date_i18n('Y')), array('a'=>array('href'=>array()))); ?></div>
</body>
</html>lib/Diff/SequenceMatcher.php000064400000042720150755146450011770 0ustar00<?php
/**
 * Sequence matcher for Diff
 *
 * PHP version 5
 *
 * Copyright (c) 2009 Chris Boulton <chris.boulton@interspire.com>
 *
 * 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 the Chris Boulton 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 THE COPYRIGHT OWNER OR CONTRIBUTORS 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.
 *
 * @package Diff
 * @author Chris Boulton <chris.boulton@interspire.com>
 * @copyright (c) 2009 Chris Boulton
 * @license New BSD License http://www.opensource.org/licenses/bsd-license.php
 * @version 1.1
 * @link http://github.com/chrisboulton/php-diff
 */

class Diff_SequenceMatcher
{
	/**
	 * @var string|array Either a string or an array containing a callback function to determine if a line is "junk" or not.
	 */
	private $junkCallback = null;

	/**
	 * @var array The first sequence to compare against.
	 */
	private $a = null;

	/**
	 * @var array The second sequence.
	 */
	private $b = null;

	/**
	 * @var array Array of characters that are considered junk from the second sequence. Characters are the array key.
	 */
	private $junkDict = array();

	/**
	 * @var array Array of indices that do not contain junk elements.
	 */
	private $b2j = array();

	private $options = array();

	private $defaultOptions = array(
		'ignoreNewLines' => false,
		'ignoreWhitespace' => false,
		'ignoreCase' => false
	);
	
	private $matchingBlocks = null;
	private $opCodes = null;
	private $fullBCount = null;

	/**
	 * The constructor. With the sequences being passed, they'll be set for the
	 * sequence matcher and it will perform a basic cleanup & calculate junk
	 * elements.
	 *
	 * @param string|array $a A string or array containing the lines to compare against.
	 * @param string|array $b A string or array containing the lines to compare.
	 * @param string|array $junkCallback Either an array or string that references a callback function (if there is one) to determine 'junk' characters.
	 */
	public function __construct($a, $b, $junkCallback=null, $options=array())
	{
		$this->a = null;
		$this->b = null;
		$this->junkCallback = $junkCallback;
		$this->setOptions($options);
		$this->setSequences($a, $b);
	}

	public function setOptions($options)
	{
		$this->options = array_merge($this->defaultOptions, $options);
	}

	/**
	 * Set the first and second sequences to use with the sequence matcher.
	 *
	 * @param string|array $a A string or array containing the lines to compare against.
	 * @param string|array $b A string or array containing the lines to compare.
	 */
	public function setSequences($a, $b)
	{
		$this->setSeq1($a);
		$this->setSeq2($b);
	}

	/**
	 * Set the first sequence ($a) and reset any internal caches to indicate that
	 * when calling the calculation methods, we need to recalculate them.
	 *
	 * @param string|array $a The sequence to set as the first sequence.
	 */
	public function setSeq1($a)
	{
		if(!is_array($a)) {
			$a = str_split($a);
		}
		if($a == $this->a) {
			return;
		}

		$this->a= $a;
		$this->matchingBlocks = null;
		$this->opCodes = null;
	}

	/**
	 * Set the second sequence ($b) and reset any internal caches to indicate that
	 * when calling the calculation methods, we need to recalculate them.
	 *
	 * @param string|array $b The sequence to set as the second sequence.
	 */
	public function setSeq2($b)
	{
		if(!is_array($b)) {
			$b = str_split($b);
		}
		if($b == $this->b) {
			return;
		}

		$this->b = $b;
		$this->matchingBlocks = null;
		$this->opCodes = null;
		$this->fullBCount = null;
		$this->chainB();
	}

	/**
	 * Generate the internal arrays containing the list of junk and non-junk
	 * characters for the second ($b) sequence.
	 */
	private function chainB()
	{
		$length = count ($this->b);
		$this->b2j = array();
		$popularDict = array();

		for($i = 0; $i < $length; ++$i) {
			$char = $this->b[$i];
			if(isset($this->b2j[$char])) {
				if($length >= 200 && count($this->b2j[$char]) * 100 > $length) {
					$popularDict[$char] = 1;
					unset($this->b2j[$char]);
				}
				else {
					$this->b2j[$char][] = $i;
				}
			}
			else {
				$this->b2j[$char] = array(
					$i
				);
			}
		}

		// Remove leftovers
		foreach(array_keys($popularDict) as $char) {
			unset($this->b2j[$char]);
		}

		$this->junkDict = array();
		if(is_callable($this->junkCallback)) {
			foreach(array_keys($popularDict) as $char) {
				if(call_user_func($this->junkCallback, $char)) {
					$this->junkDict[$char] = 1;
					unset($popularDict[$char]);
				}
			}

			foreach(array_keys($this->b2j) as $char) {
				if(call_user_func($this->junkCallback, $char)) {
					$this->junkDict[$char] = 1;
					unset($this->b2j[$char]);
				}
			}
		}
	}

	/**
	 * Checks if a particular character is in the junk dictionary
	 * for the list of junk characters.
	 *
	 * @return boolean $b True if the character is considered junk. False if not.
	 */
	private function isBJunk($b)
	{
		if(isset($this->juncDict[$b])) {
			return true;
		}

		return false;
	}

	/**
	 * Find the longest matching block in the two sequences, as defined by the
	 * lower and upper constraints for each sequence. (for the first sequence,
	 * $alo - $ahi and for the second sequence, $blo - $bhi)
	 *
	 * Essentially, of all of the maximal matching blocks, return the one that
	 * startest earliest in $a, and all of those maximal matching blocks that
	 * start earliest in $a, return the one that starts earliest in $b.
	 *
	 * If the junk callback is defined, do the above but with the restriction
	 * that the junk element appears in the block. Extend it as far as possible
	 * by matching only junk elements in both $a and $b.
	 *
	 * @param int $alo The lower constraint for the first sequence.
	 * @param int $ahi The upper constraint for the first sequence.
	 * @param int $blo The lower constraint for the second sequence.
	 * @param int $bhi The upper constraint for the second sequence.
	 * @return array Array containing the longest match that includes the starting position in $a, start in $b and the length/size.
	 */
	public function findLongestMatch($alo, $ahi, $blo, $bhi)
	{
		$a = $this->a;
		$b = $this->b;

		$bestI = $alo;
		$bestJ = $blo;
		$bestSize = 0;

		$j2Len = array();
		$nothing = array();

		for($i = $alo; $i < $ahi; ++$i) {
			$newJ2Len = array();
			$jDict = $this->arrayGetDefault($this->b2j, $a[$i], $nothing);
			foreach($jDict as $jKey => $j) {
				if($j < $blo) {
					continue;
				}
				else if($j >= $bhi) {
					break;
				}

				$k = $this->arrayGetDefault($j2Len, $j -1, 0) + 1;
				$newJ2Len[$j] = $k;
				if($k > $bestSize) {
					$bestI = $i - $k + 1;
					$bestJ = $j - $k + 1;
					$bestSize = $k;
				}
			}

			$j2Len = $newJ2Len;
		}

		while($bestI > $alo && $bestJ > $blo && !$this->isBJunk($b[$bestJ - 1]) &&
			!$this->linesAreDifferent($bestI - 1, $bestJ - 1)) {
				--$bestI;
				--$bestJ;
				++$bestSize;
		}

		while($bestI + $bestSize < $ahi && ($bestJ + $bestSize) < $bhi &&
			!$this->isBJunk($b[$bestJ + $bestSize]) && !$this->linesAreDifferent($bestI + $bestSize, $bestJ + $bestSize)) {
				++$bestSize;
		}

		while($bestI > $alo && $bestJ > $blo && $this->isBJunk($b[$bestJ - 1]) &&
			!$this->isLineDifferent($bestI - 1, $bestJ - 1)) {
				--$bestI;
				--$bestJ;
				++$bestSize;
		}

		while($bestI + $bestSize < $ahi && $bestJ + $bestSize < $bhi &&
			$this->isBJunk($b[$bestJ + $bestSize]) && !$this->linesAreDifferent($bestI + $bestSize, $bestJ + $bestSize)) {
					++$bestSize;
		}

		return array(
			$bestI,
			$bestJ,
			$bestSize
		);
	}

	/**
	 * Check if the two lines at the given indexes are different or not.
	 *
	 * @param int $aIndex Line number to check against in a.
	 * @param int $bIndex Line number to check against in b.
	 * @return boolean True if the lines are different and false if not.
	 */
	public function linesAreDifferent($aIndex, $bIndex)
	{
		$lineA = $this->a[$aIndex];
		$lineB = $this->b[$bIndex];

		if($this->options['ignoreWhitespace']) {
			$replace = array("\t", ' ');
			$lineA = str_replace($replace, '', $lineA);
			$lineB = str_replace($replace, '', $lineB);
		}

		if($this->options['ignoreCase']) {
			$lineA = strtolower($lineA);
			$lineB = strtolower($lineB);
		}

		if($lineA != $lineB) {
			return true;
		}

		return false;
	}

	/**
	 * Return a nested set of arrays for all of the matching sub-sequences
	 * in the strings $a and $b.
	 *
	 * Each block contains the lower constraint of the block in $a, the lower
	 * constraint of the block in $b and finally the number of lines that the
	 * block continues for.
	 *
	 * @return array Nested array of the matching blocks, as described by the function.
	 */
	public function getMatchingBlocks()
	{
		if(!empty($this->matchingBlocks)) {
			return $this->matchingBlocks;
		}

		$aLength = count($this->a);
		$bLength = count($this->b);

		$queue = array(
			array(
				0,
				$aLength,
				0,
				$bLength
			)
		);

		$matchingBlocks = array();
		while(!empty($queue)) {
			list($alo, $ahi, $blo, $bhi) = array_pop($queue);
			$x = $this->findLongestMatch($alo, $ahi, $blo, $bhi);
			list($i, $j, $k) = $x;
			if($k) {
				$matchingBlocks[] = $x;
				if($alo < $i && $blo < $j) {
					$queue[] = array(
						$alo,
						$i,
						$blo,
						$j
					);
				}

				if($i + $k < $ahi && $j + $k < $bhi) {
					$queue[] = array(
						$i + $k,
						$ahi,
						$j + $k,
						$bhi
					);
				}
			}
		}

		usort($matchingBlocks, array($this, 'tupleSort'));

		$i1 = 0;
		$j1 = 0;
		$k1 = 0;
		$nonAdjacent = array();
		foreach($matchingBlocks as $block) {
			list($i2, $j2, $k2) = $block;
			if($i1 + $k1 == $i2 && $j1 + $k1 == $j2) {
				$k1 += $k2;
			}
			else {
				if($k1) {
					$nonAdjacent[] = array(
						$i1,
						$j1,
						$k1
					);
				}

				$i1 = $i2;
				$j1 = $j2;
				$k1 = $k2;
			}
		}

		if($k1) {
			$nonAdjacent[] = array(
				$i1,
				$j1,
				$k1
			);
		}

		$nonAdjacent[] = array(
			$aLength,
			$bLength,
			0
		);

		$this->matchingBlocks = $nonAdjacent;
		return $this->matchingBlocks;
	}

	/**
	 * Return a list of all of the opcodes for the differences between the
	 * two strings.
	 *
	 * The nested array returned contains an array describing the opcode
	 * which includes:
	 * 0 - The type of tag (as described below) for the opcode.
	 * 1 - The beginning line in the first sequence.
	 * 2 - The end line in the first sequence.
	 * 3 - The beginning line in the second sequence.
	 * 4 - The end line in the second sequence.
	 *
	 * The different types of tags include:
	 * replace - The string from $i1 to $i2 in $a should be replaced by
	 *           the string in $b from $j1 to $j2.
	 * delete -  The string in $a from $i1 to $j2 should be deleted.
	 * insert -  The string in $b from $j1 to $j2 should be inserted at
	 *           $i1 in $a.
	 * equal  -  The two strings with the specified ranges are equal.
	 *
	 * @return array Array of the opcodes describing the differences between the strings.
	 */
	public function getOpCodes()
	{
		if(!empty($this->opCodes)) {
			return $this->opCodes;
		}

		$i = 0;
		$j = 0;
		$this->opCodes = array();

		$blocks = $this->getMatchingBlocks();
		foreach($blocks as $block) {
			list($ai, $bj, $size) = $block;
			$tag = '';
			if($i < $ai && $j < $bj) {
				$tag = 'replace';
			}
			else if($i < $ai) {
				$tag = 'delete';
			}
			else if($j < $bj) {
				$tag = 'insert';
			}

			if($tag) {
				$this->opCodes[] = array(
					$tag,
					$i,
					$ai,
					$j,
					$bj
				);
			}

			$i = $ai + $size;
			$j = $bj + $size;

			if($size) {
				$this->opCodes[] = array(
					'equal',
					$ai,
					$i,
					$bj,
					$j
				);
			}
		}
		return $this->opCodes;
	}

	/**
	 * Return a series of nested arrays containing different groups of generated
	 * opcodes for the differences between the strings with up to $context lines
	 * of surrounding content.
	 *
	 * Essentially what happens here is any big equal blocks of strings are stripped
	 * out, the smaller subsets of changes are then arranged in to their groups.
	 * This means that the sequence matcher and diffs do not need to include the full
	 * content of the different files but can still provide context as to where the
	 * changes are.
	 *
	 * @param int $context The number of lines of context to provide around the groups.
	 * @return array Nested array of all of the grouped opcodes.
	 */
	public function getGroupedOpcodes($context=3)
	{
		$opCodes = $this->getOpCodes();
		if(empty($opCodes)) {
			$opCodes = array(
				array(
					'equal',
					0,
					1,
					0,
					1
				)
			);
		}

		if($opCodes[0][0] == 'equal') {
			$opCodes[0] = array(
				$opCodes[0][0],
				max($opCodes[0][1], $opCodes[0][2] - $context),
				$opCodes[0][2],
				max($opCodes[0][3], $opCodes[0][4] - $context),
				$opCodes[0][4]
			);
		}

		$lastItem = count($opCodes) - 1;
		if($opCodes[$lastItem][0] == 'equal') {
			list($tag, $i1, $i2, $j1, $j2) = $opCodes[$lastItem];
			$opCodes[$lastItem] = array(
				$tag,
				$i1,
				min($i2, $i1 + $context),
				$j1,
				min($j2, $j1 + $context)
			);
		}

		$maxRange = $context * 2;
		$groups = array();
		$group = array();
		foreach($opCodes as $code) {
			list($tag, $i1, $i2, $j1, $j2) = $code;
			if($tag == 'equal' && $i2 - $i1 > $maxRange) {
				$group[] = array(
					$tag,
					$i1,
					min($i2, $i1 + $context),
					$j1,
					min($j2, $j1 + $context)
				);
				$groups[] = $group;
				$group = array();
				$i1 = max($i1, $i2 - $context);
				$j1 = max($j1, $j2 - $context);
			}
			$group[] = array(
				$tag,
				$i1,
				$i2,
				$j1,
				$j2
			);
		}

		if(!empty($group) && !(count($group) == 1 && $group[0][0] == 'equal')) {
			$groups[] = $group;
		}

		return $groups;
	}

	/**
	 * Return a measure of the similarity between the two sequences.
	 * This will be a float value between 0 and 1.
	 *
	 * Out of all of the ratio calculation functions, this is the most
	 * expensive to call if getMatchingBlocks or getOpCodes is yet to be
	 * called. The other calculation methods (quickRatio and realquickRatio)
	 * can be used to perform quicker calculations but may be less accurate.
	 *
	 * The ratio is calculated as (2 * number of matches) / total number of
	 * elements in both sequences.
	 *
	 * @return float The calculated ratio.
	 */
	public function Ratio()
	{
		$matches = array_reduce($this->getMatchingBlocks(), array($this, 'ratioReduce'), 0);
		return $this->calculateRatio($matches, count ($this->a) + count ($this->b));
	}

	/**
	 * Helper function to calculate the number of matches for Ratio().
	 *
	 * @param int $sum The running total for the number of matches.
	 * @param array $triple Array containing the matching block triple to add to the running total.
	 * @return int The new running total for the number of matches.
	 */
	private function ratioReduce($sum, $triple)
	{
		return $sum + ($triple[count($triple) - 1]);
	}


	/**
	 * Helper function for calculating the ratio to measure similarity for the strings.
	 * The ratio is defined as being 2 * (number of matches / total length)
	 *
	 * @param int $matches The number of matches in the two strings.
	 * @param int $length The length of the two strings.
	 * @return float The calculated ratio.
	 */
	private function calculateRatio($matches, $length=0)
	{
		if($length) {
			return 2 * ($matches / $length);
		}
		else {
			return 1;
		}
	}

	/**
	 * Helper function that provides the ability to return the value for a key
	 * in an array of it exists, or if it doesn't then return a default value.
	 * Essentially cleaner than doing a series of if(isset()) {} else {} calls.
	 *
	 * @param array $array The array to search.
	 * @param string $key The key to check that exists.
	 * @param mixed $default The value to return as the default value if the key doesn't exist.
	 * @return mixed The value from the array if the key exists or otherwise the default.
	 */
	private function arrayGetDefault($array, $key, $default)
	{
		if(isset($array[$key])) {
			return $array[$key];
		}
		else {
			return $default;
		}
	}

	/**
	 * Sort an array by the nested arrays it contains. Helper function for getMatchingBlocks
	 *
	 * @param array $a First array to compare.
	 * @param array $b Second array to compare.
	 * @return int -1, 0 or 1, as expected by the usort function.
	 */
	private function tupleSort($a, $b)
	{
		$max = max(count($a), count($b));
		for($i = 0; $i < $max; ++$i) {
			if($a[$i] < $b[$i]) {
				return -1;
			}
			else if($a[$i] > $b[$i]) {
				return 1;
			}
		}

		if(count($a) == count($b)) {
			return 0;
		}
		else if(count($a) < count($b)) {
			return -1;
		}
		else {
			return 1;
		}
	}
}
lib/Diff/Renderer/Abstract.php000064400000005752150755146450012231 0ustar00<?php
/**
 * Abstract class for diff renderers in PHP DiffLib.
 *
 * PHP version 5
 *
 * Copyright (c) 2009 Chris Boulton <chris.boulton@interspire.com>
 * 
 * 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 the Chris Boulton 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 THE COPYRIGHT OWNER OR CONTRIBUTORS 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.
 *
 * @package DiffLib
 * @author Chris Boulton <chris.boulton@interspire.com>
 * @copyright (c) 2009 Chris Boulton
 * @license New BSD License http://www.opensource.org/licenses/bsd-license.php
 * @version 1.1
 * @link http://github.com/chrisboulton/php-diff
 */

abstract class Diff_Renderer_Abstract
{
	/**
	 * @var object Instance of the diff class that this renderer is generating the rendered diff for.
	 */
	public $diff;

	/**
	 * @var array Array of the default options that apply to this renderer.
	 */
	protected $defaultOptions = array();

	/**
	 * @var array Array containing the user applied and merged default options for the renderer.
	 */
	protected $options = array();

	/**
	 * The constructor. Instantiates the rendering engine and if options are passed,
	 * sets the options for the renderer.
	 *
	 * @param array $options Optionally, an array of the options for the renderer.
	 */
	public function __construct(array $options = array())
	{
		$this->setOptions($options);
	}

	/**
	 * Set the options of the renderer to those supplied in the passed in array.
	 * Options are merged with the default to ensure that there aren't any missing
	 * options.
	 *
	 * @param array $options Array of options to set.
	 */
	public function setOptions(array $options)
	{
		$this->options = array_merge($this->defaultOptions, $options);
	}
}lib/Diff/Renderer/Html/SideBySide.php000064400000013660150755146450013353 0ustar00<?php
/**
 * Side by Side HTML diff generator for PHP DiffLib.
 *
 * PHP version 5
 *
 * Copyright (c) 2009 Chris Boulton <chris.boulton@interspire.com>
 * 
 * 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 the Chris Boulton 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 THE COPYRIGHT OWNER OR CONTRIBUTORS 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.
 *
 * @package DiffLib
 * @author Chris Boulton <chris.boulton@interspire.com>
 * @copyright (c) 2009 Chris Boulton
 * @license New BSD License http://www.opensource.org/licenses/bsd-license.php
 * @version 1.1
 * @link http://github.com/chrisboulton/php-diff
 */

require_once(dirname(__FILE__) . '/Array.php');

class Diff_Renderer_Html_SideBySide extends Diff_Renderer_Html_Array
{
	/**
	 * Render a and return diff with changes between the two sequences
	 * displayed side by side.
	 *
	 * @return string The generated side by side diff.
	 */
	public function render()
	{
		$changes = parent::render();

		$html = '';
		if(empty($changes)) {
			return $html;
		}

		$html .= '<table class="Differences DifferencesSideBySide">';
		$html .= '<thead>';
		$html .= '<tr>';
		$html .= '<th colspan="2" width="50%">The Original Version of the file</th>';
		$html .= '<th colspan="2" width="50%">The Modified Version on your WordPress system</th>';
		$html .= '</tr>';
		$html .= '</thead>';
		foreach($changes as $i => $blocks) {
			if($i > 0) {
				$html .= '<tbody class="Skipped">';
				$html .= '<th>&hellip;</th><td>&nbsp;</td>';
				$html .= '<th>&hellip;</th><td>&nbsp;</td>';
				$html .= '</tbody>';
			}

			foreach($blocks as $change) {
				$html .= '<tbody class="Change'.ucfirst($change['tag']).'">';
				// Equal changes should be shown on both sides of the diff
				if($change['tag'] == 'equal') {
					foreach($change['base']['lines'] as $no => $line) {
						$fromLine = $change['base']['offset'] + $no + 1;
						$toLine = $change['changed']['offset'] + $no + 1;
						$html .= '<tr>';
						$html .= '<th>'.$fromLine.'</th>';
						$html .= '<td class="Left"><span>'.$line.'</span>&nbsp;</span></td>';
						$html .= '<th>'.$toLine.'</th>';
						$html .= '<td class="Right"><span>'.$line.'</span>&nbsp;</span></td>';
						$html .= '</tr>';
					}
				}
				// Added lines only on the right side
				else if($change['tag'] == 'insert') {
					foreach($change['changed']['lines'] as $no => $line) {
						$toLine = $change['changed']['offset'] + $no + 1;
						$html .= '<tr>';
						$html .= '<th>&nbsp;</th>';
						$html .= '<td class="Left">&nbsp;</td>';
						$html .= '<th>'.$toLine.'</th>';
						$html .= '<td class="Right"><ins>'.$line.'</ins>&nbsp;</td>';
						$html .= '</tr>';
					}
				}
				// Show deleted lines only on the left side
				else if($change['tag'] == 'delete') {
					foreach($change['base']['lines'] as $no => $line) {
						$fromLine = $change['base']['offset'] + $no + 1;
						$html .= '<tr>';
						$html .= '<th>'.$fromLine.'</th>';
						$html .= '<td class="Left"><del>'.$line.'</del>&nbsp;</td>';
						$html .= '<th>&nbsp;</th>';
						$html .= '<td class="Right">&nbsp;</td>';
						$html .= '</tr>';
					}
				}
				// Show modified lines on both sides
				else if($change['tag'] == 'replace') {
					if(count($change['base']['lines']) >= count($change['changed']['lines'])) {
						foreach($change['base']['lines'] as $no => $line) {
							$fromLine = $change['base']['offset'] + $no + 1;
							$html .= '<tr>';
							$html .= '<th>'.$fromLine.'</th>';
							$html .= '<td class="Left"><span>'.$line.'</span>&nbsp;</td>';
							if(!isset($change['changed']['lines'][$no])) {
								$toLine = '&nbsp;';
								$changedLine = '&nbsp;';
							}
							else {
								$toLine = $change['base']['offset'] + $no + 1;
								$changedLine = '<span>'.$change['changed']['lines'][$no].'</span>';
							}
							$html .= '<th>'.$toLine.'</th>';
							$html .= '<td class="Right">'.$changedLine.'</td>';
							$html .= '</tr>';
						}
					}
					else {
						foreach($change['changed']['lines'] as $no => $changedLine) {
							if(!isset($change['base']['lines'][$no])) {
								$fromLine = '&nbsp;';
								$line = '&nbsp;';
							}
							else {
								$fromLine = $change['base']['offset'] + $no + 1;
								$line = '<span>'.$change['base']['lines'][$no].'</span>';
							}
							$html .= '<tr>';
							$html .= '<th>'.$fromLine.'</th>';
							$html .= '<td class="Left"><span>'.$line.'</span>&nbsp;</td>';
							$toLine = $change['changed']['offset'] + $no + 1;
							$html .= '<th>'.$toLine.'</th>';
							$html .= '<td class="Right">'.$changedLine.'</td>';
							$html .= '</tr>';
						}
					}
				}
				$html .= '</tbody>';
			}
		}
		$html .= '</table>';
		return $html;
	}
}
lib/Diff/Renderer/Html/Array.php000064400000017023150755146450012442 0ustar00<?php
/**
 * Base renderer for rendering HTML based diffs for PHP DiffLib.
 *
 * PHP version 5
 *
 * Copyright (c) 2009 Chris Boulton <chris.boulton@interspire.com>
 * 
 * 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 the Chris Boulton 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 THE COPYRIGHT OWNER OR CONTRIBUTORS 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.
 *
 * @package DiffLib
 * @author Chris Boulton <chris.boulton@interspire.com>
 * @copyright (c) 2009 Chris Boulton
 * @license New BSD License http://www.opensource.org/licenses/bsd-license.php
 * @version 1.1
 * @link http://github.com/chrisboulton/php-diff
 */

require_once(dirname(__FILE__) . '/../Abstract.php');

class Diff_Renderer_Html_Array extends Diff_Renderer_Abstract
{
	/**
	 * @var array Array of the default options that apply to this renderer.
	 */
	protected $defaultOptions = array(
		'tabSize' => 4
	);

	/**
	 * Render and return an array structure suitable for generating HTML
	 * based differences. Generally called by subclasses that generate a
	 * HTML based diff and return an array of the changes to show in the diff.
	 *
	 * @return array An array of the generated chances, suitable for presentation in HTML.
	 */
	public function render()
	{
		// As we'll be modifying a & b to include our change markers,
		// we need to get the contents and store them here. That way
		// we're not going to destroy the original data
		$a = $this->diff->getA();
		$b = $this->diff->getB();

		$changes = array();
		$opCodes = $this->diff->getGroupedOpcodes();
		foreach($opCodes as $group) {
			$blocks = array();
			$lastTag = null;
			$lastBlock = 0;
			foreach($group as $code) {
				list($tag, $i1, $i2, $j1, $j2) = $code;

				if($tag == 'replace' && $i2 - $i1 == $j2 - $j1) {
					for($i = 0; $i < ($i2 - $i1); ++$i) {
						$fromLine = $a[$i1 + $i];
						$toLine = $b[$j1 + $i];

						list($start, $end) = $this->getChangeExtent($fromLine, $toLine);
						if($start != 0 || $end != 0) {
							$last = $end + strlen($fromLine);
							$fromLine = substr_replace($fromLine, "\0", $start, 0);
							$fromLine = substr_replace($fromLine, "\1", $last + 1, 0);
							$last = $end + strlen($toLine);
							$toLine = substr_replace($toLine, "\0", $start, 0);
							$toLine = substr_replace($toLine, "\1", $last + 1, 0);
							$a[$i1 + $i] = $fromLine;
							$b[$j1 + $i] = $toLine;
						}
					}
				}

				if($tag != $lastTag) {
					$blocks[] = array(
						'tag' => $tag,
						'base' => array(
							'offset' => $i1,
							'lines' => array()
						),
						'changed' => array(
							'offset' => $j1,
							'lines' => array()
						)
					);
					$lastBlock = count($blocks)-1;
				}

				$lastTag = $tag;

				if($tag == 'equal') {
					$lines = array_slice($a, $i1, ($i2 - $i1));
					$blocks[$lastBlock]['base']['lines'] += $this->formatLines($lines);
					$lines = array_slice($b, $j1, ($j2 - $j1));
					$blocks[$lastBlock]['changed']['lines'] +=  $this->formatLines($lines);
				}
				else {
					if($tag == 'replace' || $tag == 'delete') {
						$lines = array_slice($a, $i1, ($i2 - $i1));
						$lines = $this->formatLines($lines);
						$lines = str_replace(array("\0", "\1"), array('<del>', '</del>'), $lines);
						$blocks[$lastBlock]['base']['lines'] += $lines;
					}

					if($tag == 'replace' || $tag == 'insert') {
						$lines = array_slice($b, $j1, ($j2 - $j1));
						$lines =  $this->formatLines($lines);
						$lines = str_replace(array("\0", "\1"), array('<ins>', '</ins>'), $lines);
						$blocks[$lastBlock]['changed']['lines'] += $lines;
					}
				}
			}
			$changes[] = $blocks;
		}
		return $changes;
	}

	/**
	 * Given two strings, determine where the changes in the two strings
	 * begin, and where the changes in the two strings end.
	 *
	 * @param string $fromLine The first string.
	 * @param string $toLine The second string.
	 * @return array Array containing the starting position (0 by default) and the ending position (-1 by default)
	 */
	private function getChangeExtent($fromLine, $toLine)
	{
		$start = 0;
		$limit = min(strlen($fromLine), strlen($toLine));
		while($start < $limit && $fromLine[$start] == $toLine[$start]) {
			++$start;
		}
		$end = -1;
		$limit = $limit - $start;
		while(-$end <= $limit && substr($fromLine, $end, 1) == substr($toLine, $end, 1)) {
			--$end;
		}
		return array(
			$start,
			$end + 1
		);
	}

	/**
	 * Format a series of lines suitable for output in a HTML rendered diff.
	 * This involves replacing tab characters with spaces, making the HTML safe
	 * for output, ensuring that double spaces are replaced with &nbsp; etc.
	 *
	 * @param array $lines Array of lines to format.
	 * @return array Array of the formatted lines.
	 */
	private function formatLines($lines)
	{
		$lines = array_map(array($this, 'ExpandTabs'), $lines);
		$lines = array_map(array($this, 'HtmlSafe'), $lines);
		foreach($lines as &$line) {
			$line = preg_replace_callback('# ( +)|^ #', array($this, 'fixSpacesCallback'), $line);
		}
		return $lines;
	}

	/**
	 * Using a callback here instead of the /e modifier in preg_replace (now deprecated).
	 *
	 * @param $matches
	 * @return string
	 */
	private function fixSpacesCallback($matches)
	{
		$spaces = (isset($matches[1]) ? $matches[1] : '');
		return $this->fixSpaces($spaces);
	}

	/**
	 * Replace a string containing spaces with a HTML representation using &nbsp;.
	 *
	 * @param string $spaces The string of spaces.
	 * @return string The HTML representation of the string.
	 */
	function fixSpaces($spaces='')
	{
		$count = strlen($spaces);
		if($count == 0) {
			return '';
		}

		$div = floor($count / 2);
		$mod = $count % 2;
		return str_repeat('&nbsp; ', $div).str_repeat('&nbsp;', $mod);
	}

	/**
	 * Replace tabs in a single line with a number of spaces as defined by the tabSize option.
	 *
	 * @param string $line The containing tabs to convert.
	 * @return string The line with the tabs converted to spaces.
	 */
	private function expandTabs($line)
	{
		return str_replace("\t", str_repeat(' ', $this->options['tabSize']), $line);
	}

	/**
	 * Make a string containing HTML safe for output on a page.
	 *
	 * @param string $string The string.
	 * @return string The string with the HTML characters replaced by entities.
	 */
	private function htmlSafe($string)
	{
		return @htmlspecialchars($string, ENT_NOQUOTES, 'UTF-8');
	}
}
lib/wfLicense.php000064400000024672150755146450007771 0ustar00<?php

require_once __DIR__ . '/wfWebsite.php';

class wfLicense {

	const TYPE_FREE = 'free';
	const TYPE_PREMIUM = 'premium';
	const TYPE_CARE = 'care';
	const TYPE_RESPONSE = 'response';

	const KEY_TYPE_FREE = 'free';
	const KEY_TYPE_PAID_CURRENT = 'paid-current';
	const KEY_TYPE_PAID_EXPIRED = 'paid-expired';
	const KEY_TYPE_PAID_DELETED = 'paid-deleted';

	const CONFIG_API_KEY = 'apiKey';
	const CONFIG_REMAINING_DAYS = 'keyExpDays';
	const CONFIG_PAID = 'isPaid';
	const CONFIG_KEY_TYPE = 'keyType';
	const CONFIG_HAS_KEY_CONFLICT = 'hasKeyConflict';
	const CONFIG_TYPE = 'licenseType';

	const REGISTRATION_PAYLOAD_VERSION = 1;

	private static $TYPES = array(
		self::TYPE_FREE,
		self::TYPE_PREMIUM,
		self::TYPE_CARE,
		self::TYPE_RESPONSE
	);

	private static $reflectionClass = null;
	private static $current = null;

	private $apiKey;
	private $paid;
	private $type;
	private $remainingDays;
	private $conflicting;
	private $deleted;
	private $keyType;

	/**
	 * @param string $apiKey
	 * @param bool $paid whether or not this is a paid license
	 * @param ?string $type the license type (@see self::$TYPES)
	 * @param int $remainingDays the number of days remaining before the license expires
	 *	(may be negative if already expired)
	 * @param bool $conflicting whether or not there is a conflict with this license
	 * @param bool $deleted whether or not the key was deleted
	 */
	private function __construct($apiKey = null, $paid = null, $type = null, $remainingDays = null, $conflicting = false, $deleted = false, $keyType = null) {
		$this->apiKey = $apiKey;
		$this->paid = $paid;
		$this->setType($type);
		$this->remainingDays = $remainingDays;
		$this->conflicting = $conflicting;
		$this->deleted = $deleted;
		$this->keyType = $keyType;
	}

	public function setApiKey($apiKey) {
		$this->apiKey = $apiKey;
		return $this;
	}

	public function getApiKey() {
		return $this->apiKey;
	}

	public function setPaid($paid) {
		$this->paid = $paid;
		return $this;
	}

	public function isPaid() {
		return $this->paid;
	}

	public function setType($type) {
		$this->type = $type !== null && self::isValidType($type) ? (string) $type : ($this->isPaid() ? self::TYPE_PREMIUM : self::TYPE_FREE);
		return $this;
	}

	public function getType() {
		return $this->type === null ? self::TYPE_FREE : $this->type;
	}

	public function is($type, $orGreater = false) {
		return $this->type === $type || ($orGreater && $this->isAtLeast($type));
	}

	public function setRemainingDays($days) {
		$this->remainingDays = (int) $days;
		return $this;
	}

	public function getRemainingDays() {
		return $this->remainingDays;
	}

	public function setConflicting($conflicting = true) {
		$this->conflicting = $conflicting;
		return $this;
	}

	public function hasConflict() {
		return $this->conflicting;
	}

	public function setDeleted($deleted = true) {
		$this->deleted = $deleted;
		return $this;
	}

	public function isExpired() {
		return $this->getKeyType() === self::KEY_TYPE_PAID_EXPIRED;
	}

	public function isValid() {
		return !$this->isExpired();
	}

	public function isPaidAndCurrent() {
		return $this->getKeyType() === self::KEY_TYPE_PAID_CURRENT;
	}

	private function resolveKeyType() {
		if ($this->deleted)
			return self::KEY_TYPE_PAID_DELETED;
		if ($this->paid) {
			if ($this->remainingDays >= 0)
				return self::KEY_TYPE_PAID_CURRENT;
			else 
				return self::KEY_TYPE_PAID_EXPIRED;
		}
		return self::KEY_TYPE_FREE;
	}

	public function getKeyType() {
		if (!$this->keyType)
			$this->keyType = $this->resolveKeyType();
		return $this->keyType;
	}

	private function clearCache() {
		$this->keyType = null;
	}

	private function compareTiers($a, $b, $inclusive = true) {
		if ($a === $b)
			return $inclusive;
		foreach (self::$TYPES as $tier) {
			if ($tier === $a)
				return true;
			if ($tier === $b)
				return false;
		}
		return false;
	}

	/**
	 * Check if the license type is at or above the given tier
	 */
	public function isAtLeast($type) {
		if ($type !== self::TYPE_FREE && !$this->isValid())
			return false;
		return $this->compareTiers($type, $this->getType());
	}

	public function isBelow($type) {
		if ($type !== self::TYPE_FREE && !$this->isValid())
			return true;
		return $this->compareTiers($this->getType(), $type, false);
	}

	public function isPremium($orGreater = false) {
		return $this->is(self::TYPE_PREMIUM, $orGreater);
	}

	public function isAtLeastPremium() {
		return $this->isPremium(true);
	}

	public function isBelowPremium() {
		return $this->isBelow(self::TYPE_PREMIUM);
	}

	public function isCare($orGreater = false) {
		return $this->is(self::TYPE_CARE, $orGreater);
	}

	public function isAtLeastCare() {
		return $this->isCare(true);
	}

	public function isBelowCare() {
		return $this->isBelow(self::TYPE_CARE);
	}

	public function isResponse($orGreater = false) {
		return $this->is(self::TYPE_RESPONSE, $orGreater);
	}

	public function isAtLeastResponse() {
		return $this->isResponse(true);
	}

	public function isBelowResponse() {
		return $this->isBelow(self::TYPE_RESPONSE);
	}

	public function getShieldLogo() {
		$type = $this->getType();
		return wfUtils::getBaseURL() . "images/logos/shield-{$type}.svg";
	}

	public function getStylesheet($global = false) {
		$type = $this->getType();
		$suffix = $global ? '-global' : '';
		return wfUtils::getBaseURL() . wfUtils::versionedAsset("css/license/{$type}{$suffix}.css", '', WORDFENCE_VERSION);
	}

	public function getGlobalStylesheet() {
		return $this->getStylesheet(true);
	}

	public function getTypeLabel($requireCurrent = true, $includePrefix = null) {
		$paidKeyTypes = array(self::KEY_TYPE_PAID_CURRENT);
		if (!$requireCurrent) {
			$paidKeyTypes[] = self::KEY_TYPE_PAID_EXPIRED;
			$paidKeyTypes[] = self::KEY_TYPE_PAID_DELETED;
		}
		if (in_array($this->getKeyType(), $paidKeyTypes)) {
			switch ($this->type) {
			case self::TYPE_CARE:
				return $includePrefix || $includePrefix === null ? __('Wordfence Care', 'wordfence') : __('Care', 'wordfence');
			case self::TYPE_RESPONSE:
				return $includePrefix || $includePrefix === null ? __('Wordfence Response', 'wordfence') : __('Response', 'wordfence');
			case self::TYPE_PREMIUM:
			default:
				return $includePrefix ? __('Wordfence Premium', 'wordfence') : __('Premium', 'wordfence');
			}
		}
		return $includePrefix ? __('Wordfence Free', 'wordfence') : __('Free', 'wordfence');
	}

	public function getPrefixedTypeLabel($requireCurrent = true) {
		return $this->getTypeLabel($requireCurrent, true);
	}

	private function generateLicenseUrl($path, $query = array(), $campaign = null) {
		if ($campaign !== null)
			$campaign = "gnl1{$campaign}";
		$url = implode(
			'/',
			array_filter(array(
				'https://www.wordfence.com',
				$campaign,
				$path
			))
		);
		return $url . (empty($query) ? '' : ('?' . http_build_query($query)));
	}

	public function getSupportUrl($campaign = null) {
		return $this->generateLicenseUrl(
			'get-help',
			array(
				'license' => $this->apiKey
			),
			$campaign
		);
	}

	public function getUpgradeUrl($campaign = null) {
		if ($this->isAtLeastPremium()) {
			return $this->generateLicenseUrl(
				'licenses',
				array(
					'upgrade' => $this->apiKey
				),
				$campaign
			);
		}
		else {
			return $this->generateLicenseUrl(
				'products/pricing/',
				array(),
				$campaign
			);
		}
	}

	private function writeConfig($hasError = false) {
		$this->clearCache();
		$keyType = $this->getKeyType();
		wfConfig::set(self::CONFIG_API_KEY, $this->apiKey);
		wfConfig::set(self::CONFIG_TYPE, $this->type);
		wfConfig::set(self::CONFIG_REMAINING_DAYS, $this->remainingDays);
		wfConfig::set(self::CONFIG_PAID, $keyType === self::KEY_TYPE_PAID_CURRENT);
		wfConfig::setOrRemove(self::CONFIG_HAS_KEY_CONFLICT, $this->conflicting ? 1 : null);
		if (!$hasError) { //Only save a limited subset of the config if an API error occurred
			wfConfig::set(self::CONFIG_KEY_TYPE, $keyType);
		}
	}

	/**
	 * @param bool $hasError whether or not an error occurred while retrieving the current license data
	 */
	public function save($hasError = false) {
		$this->writeConfig($hasError);
	}

	public function downgradeToFree($apiKey) {
		$this->apiKey = $apiKey;
		$this->type = self::TYPE_FREE;
		$this->paid = false;
		$this->keyType = self::KEY_TYPE_FREE;
		$this->conflicting = false;
		$this->deleted = false;
		$this->remainingDays = -1;
		return $this;
	}

	public static function isValidType($type) {
		return in_array($type, self::$TYPES);
	}

	private static function fromConfig() {
		$remainingDays = wfConfig::get(self::CONFIG_REMAINING_DAYS, null);
		if ($remainingDays !== null)
			$remainingDays = (int) $remainingDays;
		$keyType = wfConfig::get(self::CONFIG_KEY_TYPE, null);
		return new self(
			(string) wfConfig::get(self::CONFIG_API_KEY),
			(bool) wfConfig::get(self::CONFIG_PAID),
			(string) wfConfig::get(self::CONFIG_TYPE, self::TYPE_FREE),
			$remainingDays,
			(bool) wfConfig::get(self::CONFIG_HAS_KEY_CONFLICT, false),
			$keyType === self::KEY_TYPE_PAID_DELETED,
			$keyType
		);
	}

	public static function current() {
		if (self::$current === null) {
			self::$current = self::fromConfig();
		}
		return self::$current;
	}

	const REGISTRATION_TOKEN_TTL = 86400; //24 hours
	const REGISTRATION_TOKEN_KEY = 'wfRegistrationToken';
	const REGISTRATION_TOKEN_LENGTH = 32;

	public static function getRegistrationToken($refreshTtl = false) {
		$token = get_transient(self::REGISTRATION_TOKEN_KEY);
		if ($token === false) {
			$token = openssl_random_pseudo_bytes(self::REGISTRATION_TOKEN_LENGTH);
			if ($token === false)
				throw new Exception('Unable to generate registration token');
			$token = wfUtils::base64url_encode($token);
			$refreshTtl = true;
		}
		if ($refreshTtl)
			set_transient(self::REGISTRATION_TOKEN_KEY, $token, self::REGISTRATION_TOKEN_TTL);
		return $token;
	}

	public static function validateRegistrationToken($token) {
		$expected = self::getRegistrationToken();
		//Note that the length of $expected is publicly known since it's in the plugin source, so differening lengths immediately triggering a false return is not a cause for concern
		return hash_equals($expected, $token);
	}

	public static function generateRegistrationLink() {
		$wfWebsite = wfWebsite::getInstance();
		$stats = wfAPI::generateSiteStats();
		$token = self::getRegistrationToken(true);
		$returnUrl = network_admin_url('admin.php?page=WordfenceInstall');
		$payload = array(
			self::REGISTRATION_PAYLOAD_VERSION,
			$stats,
			$token,
			$returnUrl,
		);
		$payload = implode(';', $payload);
		$payload = wfUtils::base64url_encode($payload);
		return $wfWebsite->getUrl("plugin/registration/{$payload}");
	}

}lib/wfOnboardingController.php000064400000020345150755146450012526 0ustar00<?php

class wfOnboardingController {
	const ONBOARDING_EMAILS = 'emails'; //New install, part 1 completed
	const ONBOARDING_LICENSE = 'license'; //New install, part 2 completed
	const ONBOARDING_SKIPPED = 'skipped'; //New install, onboarding attempt was skipped
	
	const TOUR_DASHBOARD = 'dashboard';
	const TOUR_FIREWALL = 'firewall';
	const TOUR_SCAN = 'scan';
	const TOUR_BLOCKING = 'blocking';
	const TOUR_LIVE_TRAFFIC = 'livetraffic';
	const TOUR_LOGIN_SECURITY = 'loginsecurity';
	
	/**
	 * Sets the appropriate initial settings for an existing install so it's not forced through onboarding.
	 */
	public static function migrateOnboarding() {
		$alertEmails = wfConfig::getAlertEmails();
		$onboardingAttempt1 = wfConfig::get('onboardingAttempt1');
		if (!empty($alertEmails) && empty($onboardingAttempt1)) {
			wfConfig::set('onboardingAttempt1', self::ONBOARDING_LICENSE); //Mark onboarding as done
			
			$keys = array(self::TOUR_DASHBOARD, self::TOUR_FIREWALL, self::TOUR_SCAN, self::TOUR_BLOCKING, self::TOUR_LIVE_TRAFFIC);
			foreach ($keys as $k) {
				wfConfig::set('needsNewTour_' . $k, 0);
				wfConfig::set('needsUpgradeTour_' . $k, 1);
			}
		}
	}
	
	/**
	 * Initializes the onboarding hooks.
	 * 
	 * Only called if (is_admin() && wfUtils::isAdmin()) is true.
	 */
	public static function initialize() {
		$willShowAnyTour = (self::shouldShowNewTour(self::TOUR_DASHBOARD) || self::shouldShowUpgradeTour(self::TOUR_DASHBOARD) ||
							self::shouldShowNewTour(self::TOUR_FIREWALL) || self::shouldShowUpgradeTour(self::TOUR_FIREWALL) ||
							self::shouldShowNewTour(self::TOUR_SCAN) || self::shouldShowUpgradeTour(self::TOUR_SCAN) ||
							self::shouldShowNewTour(self::TOUR_BLOCKING) || self::shouldShowUpgradeTour(self::TOUR_BLOCKING) ||
							self::shouldShowNewTour(self::TOUR_LIVE_TRAFFIC) || self::shouldShowUpgradeTour(self::TOUR_LIVE_TRAFFIC) ||
							self::shouldShowNewTour(self::TOUR_LOGIN_SECURITY) || self::shouldShowUpgradeTour(self::TOUR_LOGIN_SECURITY));
		if (!self::shouldShowAnyAttempt() && !$willShowAnyTour) {
			return;
		}
		
		add_action('in_admin_header', 'wfOnboardingController::_admin_header'); //Called immediately after <div id="wpcontent">
		add_action('pre_current_active_plugins', 'wfOnboardingController::_pre_plugins'); //Called immediately after <hr class="wp-header-end">
		add_action('admin_enqueue_scripts', 'wfOnboardingController::_enqueue_scripts');
	}
	
	/**
	 * Enqueues the scripts and styles we need globally on the backend for onboarding.
	 */
	public static function _enqueue_scripts() {
		$willShowAnyPluginOnboarding = (self::shouldShowAttempt1() || self::shouldShowAttempt2());
		$willShowAnyTour = (self::shouldShowNewTour(self::TOUR_DASHBOARD) || self::shouldShowUpgradeTour(self::TOUR_DASHBOARD) ||
			self::shouldShowNewTour(self::TOUR_FIREWALL) || self::shouldShowUpgradeTour(self::TOUR_FIREWALL) ||
			self::shouldShowNewTour(self::TOUR_SCAN) || self::shouldShowUpgradeTour(self::TOUR_SCAN) ||
			self::shouldShowNewTour(self::TOUR_BLOCKING) || self::shouldShowUpgradeTour(self::TOUR_BLOCKING) ||
			self::shouldShowNewTour(self::TOUR_LIVE_TRAFFIC) || self::shouldShowUpgradeTour(self::TOUR_LIVE_TRAFFIC) ||
			self::shouldShowNewTour(self::TOUR_LOGIN_SECURITY) || self::shouldShowUpgradeTour(self::TOUR_LOGIN_SECURITY));
		
		if (wfUtils::isAdmin() && 
			(($willShowAnyPluginOnboarding && preg_match('~(?:^|/)wp-admin(?:/network)?/plugins\.php~i', $_SERVER['REQUEST_URI'])) || 
				(isset($_GET['page']) && 
					(preg_match('/^Wordfence/', @$_GET['page']) || preg_match('/^WFLS/', @$_GET['page']))
				)
			)
		) {
			self::enqueue_assets();
		}
	}

	public static function enqueue_assets() {
		wp_enqueue_style('wordfence-font', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wf-roboto-font.css'), '', WORDFENCE_VERSION);
		wp_enqueue_style('wordfence-ionicons-style', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wf-ionicons.css'), '', WORDFENCE_VERSION);
		wp_enqueue_style('wordfenceOnboardingCSS', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wf-onboarding.css'), '', WORDFENCE_VERSION);
		wp_enqueue_style('wordfence-colorbox-style', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wf-colorbox.css'), '', WORDFENCE_VERSION);
		wp_enqueue_script('jquery.wfcolorbox', wfUtils::getBaseURL() . wfUtils::versionedAsset('js/jquery.colorbox-min.js'), array('jquery'), WORDFENCE_VERSION);
	}
	
	/**
	 * Outputs the onboarding overlay if it needs to be shown on the plugins page.
	 */
	public static function _admin_header() {
		$willShowAnyTour = (self::shouldShowNewTour(self::TOUR_DASHBOARD) || self::shouldShowUpgradeTour(self::TOUR_DASHBOARD) ||
							self::shouldShowNewTour(self::TOUR_FIREWALL) || self::shouldShowUpgradeTour(self::TOUR_FIREWALL) ||
							self::shouldShowNewTour(self::TOUR_SCAN) || self::shouldShowUpgradeTour(self::TOUR_SCAN) ||
							self::shouldShowNewTour(self::TOUR_BLOCKING) || self::shouldShowUpgradeTour(self::TOUR_BLOCKING) ||
							self::shouldShowNewTour(self::TOUR_LIVE_TRAFFIC) || self::shouldShowUpgradeTour(self::TOUR_LIVE_TRAFFIC) ||
							self::shouldShowNewTour(self::TOUR_LOGIN_SECURITY) || self::shouldShowUpgradeTour(self::TOUR_LOGIN_SECURITY));
		
		$screen = get_current_screen();
		if ($screen->base == 'plugins' && self::shouldShowAttempt1()) {
			register_shutdown_function('wfOnboardingController::_markAttempt1Shown');
			$freshInstall = wfView::create('onboarding/fresh-install')->render(); 
			
			echo wfView::create('onboarding/overlay', array(
				'contentHTML' => $freshInstall,
			))->render();
		}
		else if (preg_match('/wordfence/i', $screen->base) && $willShowAnyTour) {
			echo wfView::create('onboarding/tour-overlay')->render();
		}
	}
	
	public static function _markAttempt1Shown() {
		wfConfig::set('onboardingAttempt1', self::ONBOARDING_SKIPPED); //Only show it once, default to skipped after outputting the first time
	}
	
	public static function shouldShowAttempt1() { //Overlay on plugin page
		if (wfConfig::get('onboardingAttempt3') == self::ONBOARDING_LICENSE) {
			return false;
		}
		
		switch (wfConfig::get('onboardingAttempt1')) {
			case self::ONBOARDING_LICENSE:
			case self::ONBOARDING_SKIPPED:
				return false;
		}
		return true;
	}
	
	public static function _pre_plugins() {
		if (self::shouldShowAttempt2()) {
			echo wfView::create('onboarding/plugin-header')->render();
		}
	}

	private static function needsApiKey() {
		$key = wfConfig::get('apiKey');
		return empty($key);
	}
	
	public static function shouldShowAttempt2() { //Header on plugin page
		if (wfConfig::get('onboardingAttempt3') == self::ONBOARDING_LICENSE) {
			return false;
		}
		
		return !wfConfig::get('onboardingAttempt2') && self::needsApiKey();
	}
	
	public static function shouldShowAttempt3($dismissable = false) {
		if (self::needsApiKey()) {
			if (!$dismissable)
				return true;
			$delayedAt = (int) wfConfig::get('onboardingDelayedAt', 0);
			if (time() - $delayedAt > 43200 /*12 hours in seconds*/)
				return true;
		}
		return false;
	}
	
	/**
	 * Whether or not to pop up attempt 3 at page load or wait for user interaction.
	 * 
	 * @return bool
	 */
	public static function shouldShowAttempt3Automatically() {
		static $_shouldShowAttempt3Automatically = null;
		if ($_shouldShowAttempt3Automatically !== null) { //We cache this so the answer remains the same for the whole request
			return $_shouldShowAttempt3Automatically;
		}
		
		if (!self::shouldShowAttempt3()) {
			$_shouldShowAttempt3Automatically = false;
			return false;
		}
		
		return $_shouldShowAttempt3Automatically = self::shouldShowAttempt3();
	}
	
	public static function willShowNewTour($page) {
		$key = 'needsNewTour_' . $page;
		return wfConfig::get($key);
	}
	
	public static function shouldShowNewTour($page) {
		$key = 'needsNewTour_' . $page;
		return (!self::shouldShowAttempt3Automatically() && !wfConfig::get('touppPromptNeeded') && wfConfig::get($key));
	}
	
	public static function willShowUpgradeTour($page) {
		$key = 'needsUpgradeTour_' . $page;
		return wfConfig::get($key);
	}
	
	public static function shouldShowUpgradeTour($page) {
		$key = 'needsUpgradeTour_' . $page;
		return (!self::shouldShowAttempt3Automatically() && !wfConfig::get('touppPromptNeeded') && wfConfig::get($key));
	}

	public static function shouldShowAnyAttempt() {
		return self::shouldShowAttempt1() || self::shouldShowAttempt2() || self::shouldShowAttempt3();
	}

}lib/wfScanFileProperties.php000064400000002107150755146450012135 0ustar00<?php

class wfScanFileProperties {

	public $realPath;
	public $wordpressPath;
	public $wordpressPathMd5;
	public $md5;
	public $shac;
	public $content;
	public $known;
	public $handle;
	public $safe;

	public function __construct($realPath, $wordpressPath) {
		$this->realPath = $realPath;
		$this->wordpressPath = $wordpressPath;
		$this->wordpressPathMd5 = md5($wordpressPath);
	}

	public function freeContent() {
		$this->content = null;
	}

	public function resetHandle() {
		if (!$this->handle)
			return false;
		if (fseek($this->handle, 0, SEEK_SET) !== 0)
			return false;
		return true;
	}

	public function releaseHandle() {
		if ($this->handle) {
			fclose($this->handle);
			$this->handle = null;
		}
	}

	public function loadContent() {
		if (!$this->resetHandle())
			return false;
		$content = fread($this->handle, WORDFENCE_MAX_FILE_SIZE_TO_PROCESS);
		if ($content === false)
			return false;
		$this->content = $content;
		return true;
	}

	public function free() {
		$this->freeContent();
		$this->releaseHandle();
	}

	public function __destruct() {
		$this->free();
	}

}lib/menu_support.php000064400000043422150755146450010604 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
if (!wfOnboardingController::shouldShowAttempt3() && wfConfig::get('touppPromptNeeded')) {
	echo wfView::create('gdpr/banner')->render();
}

$support = @json_decode(wfConfig::get('supportContent'), true);
?>
	<div class="wrap wordfence">
		<div class="wf-container-fluid">
			<div class="wf-row">
				<div class="wf-col-xs-12">
					<div class="wp-header-end"></div>
					<?php
					echo wfView::create('common/section-title', array(
						'title' => __('Help', 'wordfence'),
						'showIcon' => true,
					))->render();
					?>
				</div>
				<div class="wf-col-xs-12">
					<div class="wf-block wf-active">
						<div class="wf-block-content">
							<ul class="wf-block-list">
								<li>
									<ul class="wf-block-list wf-block-list-horizontal">
										<li class="wf-flex-vertical">
										<?php if (wfLicense::current()->isPaidAndCurrent()): ?>
											<h3><?php esc_html_e('Premium Support', 'wordfence'); ?></h3>
											<p class="wf-center">
												<?php if (wfLicense::current()->isResponse()): ?>
													<?php esc_html_e('As a Wordfence Response customer you are entitled to hands-on priority support 24 hours a day 365 days a year. Our incident response team is available out of hours to handle urgent issues and security incidents. Our customer support team is available during business hours (Monday to Friday, 6am to 5pm Pacific and 9am to 8pm Eastern time) for product assistance. Both teams can sign-in to your site to assist, on request.', 'wordfence'); ?>
												<?php elseif (wfLicense::current()->isCare()): ?>
													<?php esc_html_e('As a Wordfence Care customer you are entitled to hands-on priority support and have access to our incident response team. Our senior support engineers and incident response team respond to requests quickly within business hours (Monday to Friday, 6am to 5pm Pacific and 9am to 8pm Eastern time) and can sign-in to your site on request to assist with complex issues.', 'wordfence'); ?>
												<?php else: ?>
													<?php esc_html_e('As a Wordfence Premium customer you\'re entitled to paid support via our ticketing system. Our senior support engineers respond to Premium tickets during regular business hours (Monday to Friday, 6am to 5pm Pacific and 9am to 8pm Eastern time) and have a direct line to our QA and development teams.', 'wordfence') ?>
												<?php endif ?>
											</p>
											<p>
												<a href="<?php echo esc_attr(wfLicense::current()->getSupportUrl('helpPageSupport')) ?>" target="_blank" rel="noopener noreferrer" class="wf-btn wf-btn-primary wf-btn-callout-subtle"><?php esc_html_e('Get Help', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>
												<div>
												<?php if (wfLicense::current()->isBelowCare()): ?>
													<a href="https://www.wordfence.com/gnl1helpPageCare/products/wordfence-care/" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Upgrade to hands-on support with Wordfence Care', 'wordfence') ?></a>
												<?php elseif (wfLicense::current()->isBelowResponse()): ?>
													<a href="https://www.wordfence.com/gnl1helpPageResponse/products/wordfence-response/" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Upgrade to a 24/7 1-hour response time with Wordfence Response', 'wordfence') ?></a>
												<?php endif ?>
												</div>
											</p>
										<?php else: ?>
											<h3><?php esc_html_e('Upgrade Now to Access Premium Support', 'wordfence'); ?></h3>
											<p class="wf-center"><?php echo wp_kses(__('Our senior support engineers <strong>respond to Premium tickets within a few hours</strong> on average and have a direct line to our QA and development teams.', 'wordfence'), array('strong'=>array())); ?></p>
											<p><a href="https://www.wordfence.com/gnl1supportUpgrade/wordfence-signup/" target="_blank" rel="noopener noreferrer" class="wf-btn wf-btn-primary wf-btn-callout-subtle"><?php esc_html_e('Upgrade to Premium', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></p>
										<?php endif; ?>
										</li>
										<li class="wf-flex-vertical">
											<h3><?php esc_html_e('Free Support', 'wordfence'); ?></h3>
											<p class="wf-center"><?php echo wp_kses(__('Support for free customers is available via our forums page on wordpress.org. The majority of requests <strong>receive an answer within a few days.</strong>', 'wordfence'), array('strong'=>array())); ?></p>
											<p><a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_FREE); ?>" target="_blank" rel="noopener noreferrer" class="wf-btn wf-btn-default wf-btn-callout-subtle"><?php esc_html_e('Go to Support Forums', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></p>
										</li>
									</ul>
								</li>
							</ul>
						</div>
					</div>
				</div>
			</div>
			<div class="wf-row">
				<div class="wf-col-xs-12">
					<div class="wf-block<?php echo (wfPersistenceController::shared()->isActive('support-gdpr') ? ' wf-active' : ''); ?>" data-persistence-key="support-gdpr">
						<div class="wf-block-header">
							<div class="wf-block-header-content">
								<div class="wf-block-title">
									<strong><?php esc_html_e('GDPR Information', 'wordfence'); ?></strong>
								</div>
								<div class="wf-block-header-action"><div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive('support-gdpr') ? 'true' : 'false'); ?>" tabindex="0"></div></div>
							</div>
						</div>
						<div class="wf-block-content">
							<ul class="wf-block-list">
								<li>
									<ul class="wf-option wf-option-static">
										<li class="wf-option-title">
											<ul class="wf-flex-vertical wf-flex-align-left">
												<li><?php esc_html_e('General Data Protection Regulation', 'wordfence'); ?> <a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_GDPR); ?>" target="_blank" rel="noopener noreferrer" class="wf-inline-help"><i class="wf-fa wf-fa-question-circle-o" aria-hidden="true"></i><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></li>
												<li class="wf-option-subtitle"><?php esc_html_e('The GDPR is a set of rules that provides more control over EU personal data. Defiant has updated its terms of service, privacy policies, and software, as well as made available standard contractual clauses to meet GDPR compliance.', 'wordfence'); ?></li>
											</ul>
										</li>
									</ul>
								</li>
								<li>
									<ul class="wf-option wf-option-static">
										<li class="wf-option-title">
											<ul class="wf-flex-vertical wf-flex-align-left">
												<li><?php esc_html_e('Agreement to New Terms and Privacy Policies', 'wordfence'); ?></li>
												<li class="wf-option-subtitle"><?php esc_html_e('To continue using Defiant products and services including the Wordfence plugin, all customers must review and agree to the updated terms and privacy policies. These changes reflect our commitment to follow data protection best practices and regulations. The Wordfence interface will remain disabled until these terms are agreed to.', 'wordfence'); ?></li>
											</ul>
										</li>
									</ul>
								</li>
							</ul>
						</div>
					</div>
				</div>
			</div> <!-- end GDPR -->
			<?php if (isset($support['all'])): ?>
			<div class="wf-row">
				<div class="wf-col-xs-12 wf-col-sm-9 wf-col-sm-half-padding-right wf-add-top">
					<h3 class="wf-no-top"><?php esc_html_e('All Documentation', 'wordfence'); ?></h3>
				</div>
			</div>
			<div class="wf-row">
				<div class="wf-col-xs-12 wf-col-sm-3 wf-col-sm-push-9 wf-col-sm-half-padding-left"> 
					<div class="wf-block wf-active">
						<div class="wf-block-content">
							<div class="wf-support-top-block">
								<h4><?php esc_html_e('Top Topics and Questions', 'wordfence'); ?></h4> 
								<ol>
								<?php
								if (isset($support['top'])):
									foreach ($support['top'] as $entry):
								?>
									<li><a href="<?php echo esc_url($entry['permalink']); ?>" target="_blank" rel="noopener noreferrer"><?php echo esc_html($entry['title']); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></li>
								<?php
									endforeach;
								endif;
								?>
								</ol>
							</div>
						</div>
					</div>
				</div>
				<div class="wf-col-xs-12 wf-col-sm-9 wf-col-sm-pull-3 wf-col-sm-half-padding-right">
				<?php
				if (isset($support['all'])):
					foreach ($support['all'] as $entry):
				?>
					<div class="wf-block wf-active wf-add-bottom">
						<div class="wf-block-content">
							<div class="wf-support-block">
								<h4><a href="<?php echo esc_url($entry['permalink']); ?>" target="_blank" rel="noopener noreferrer"><?php echo esc_html($entry['title']); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></h4>
								<p><?php echo esc_html($entry['excerpt']); ?></p>
								<?php if (isset($entry['children'])): ?>
								<ul>
								<?php foreach ($entry['children'] as $child): ?>
									<li><a href="<?php echo esc_url($child['permalink']); ?>" target="_blank" rel="noopener noreferrer"><?php echo esc_html($child['title']); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></li>
								<?php endforeach; ?>
								</ul>
								<?php endif; ?>
							</div>
						</div>
					</div>
				<?php
					endforeach;
				endif;
				?>
				</div>
			</div>
			<?php else: ?>
			<div class="wf-row">
				<div class="wf-col-xs-12">
					<div class="wf-block wf-active">
						<div class="wf-block-content">
							<div class="wf-support-missing-block">
								<h4><?php esc_html_e('Documentation', 'wordfence'); ?></h4>
								<p><?php echo wp_kses(__('Documentation about Wordfence may be found on our website by clicking the button below or by clicking the <i class="wf-fa wf-fa-question-circle-o" aria-hidden="true"></i> links on any of the plugin\'s pages.', 'wordfence'), array('i'=>array('class'=>array(), 'aria-hidden'=>array()))); ?></p>
								<p class="wf-no-bottom"><a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_INDEX); ?>" target="_blank" rel="noopener noreferrer" class="wf-btn wf-btn-default wf-btn-callout-subtle"><?php esc_html_e('View Documentation', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></p>
							</div>
						</div>
					</div>
				</div>
			</div>
			<?php endif; ?>
		</div> <!-- end container -->
	</div>
<?php if (wfOnboardingController::shouldShowAttempt3()): ?>
	<?php wfConfig::set('onboardingAttempt3Initial', true); ?>
	<script type="text/x-jquery-template" id="wfTmpl_onboardingFinal">
		<?php echo wfView::create('onboarding/modal-final-attempt')->render(); ?>
	</script>
	<script type="application/javascript">
		(function($) {
			$(function() {
				var prompt = $('#wfTmpl_onboardingFinal').tmpl();
				var promptHTML = $("<div />").append(prompt).html();
				WFAD.colorboxHTML('800px', promptHTML, {overlayClose: false, closeButton: false, className: 'wf-modal', onComplete: function() {
					setTimeout(function() {
						$('#wf-onboarding-subscribe-controls > p').show();
						$.wfcolorbox.resize();
					}, 30000);

					$('#wf-onboarding-subscribe .wf-switch > li').each(function(index, element) {
						$(element).on('click', function(e) {
							e.preventDefault();
							e.stopPropagation();

							var control = $(this).closest('.wf-switch');
							control.find('li').removeClass('wf-active');
							$(this).addClass('wf-active');

							$('#wf-onboarding-continue').toggleClass('wf-disabled', wordfenceExt.parseEmails($('#wf-onboarding-alerts').val()).length == 0 || !($('#wf-onboarding-agree').is(':checked')) || $('#wf-onboarding-subscribe .wf-switch > li.wf-active').length == 0);
						});
					});
					
					$('#wf-onboarding-agree').on('change', function() {
						$('#wf-onboarding-continue').toggleClass('wf-disabled', wordfenceExt.parseEmails($('#wf-onboarding-alerts').val()).length == 0 || !($('#wf-onboarding-agree').is(':checked')) || $('#wf-onboarding-subscribe .wf-switch > li.wf-active').length == 0);
					});

					$('#wf-onboarding-alerts').on('change paste keyup', function() {
						setTimeout(function() {
							$('#wf-onboarding-continue').toggleClass('wf-disabled', wordfenceExt.parseEmails($('#wf-onboarding-alerts').val()).length == 0 || !($('#wf-onboarding-agree').is(':checked')) || $('#wf-onboarding-subscribe .wf-switch > li.wf-active').length == 0);
						}, 100);
					}).trigger('change');

					$('#wf-onboarding-continue').on('click', function(e) {
						e.preventDefault();
						e.stopPropagation();

						var touppAgreed = !!$('#wf-onboarding-agree').is(':checked');
						if (!touppAgreed) {
							return;
						}

						var emails = wordfenceExt.parseEmails($('#wf-onboarding-alerts').val());
						if (emails.length > 0) {
							var subscribe = !!parseInt($('#wf-onboarding-subscribe .wf-switch > li.wf-active').data('optionValue'));
							wordfenceExt.onboardingProcessEmails(emails, subscribe, touppAgreed);
							
							<?php if (wfConfig::get('isPaid')): ?>
							wordfenceExt.setOption('onboardingAttempt3', '<?php echo esc_attr(wfOnboardingController::ONBOARDING_LICENSE); ?>');
							$('#wf-onboarding-banner').slideUp();
							WFAD.colorboxClose();
							if (WFAD.tour1) { setTimeout(function() { WFAD.tour1(); }, 500); }
							<?php else: ?>
							wordfenceExt.setOption('onboardingAttempt3', '<?php echo esc_attr(wfOnboardingController::ONBOARDING_EMAILS); ?>');

							$('#wf-onboarding-final-attempt-1, .wf-modal-footer').fadeOut(400, function() {
								$('#wf-onboarding-final-attempt-2').fadeIn();
								$.wfcolorbox.resize();
							});
							<?php endif; ?>
						}
					});

					$('#wf-onboarding-license input').on('change paste keyup', function() {
						setTimeout(function() {
							$('#wf-onboarding-license-install').toggleClass('wf-disabled', $('#wf-onboarding-license input').val().length == 0);
						}, 100);
					}).trigger('change');

					$('#wf-onboarding-license-install').on('click', function(e) {
						e.preventDefault();
						e.stopPropagation();

						$('#wf-onboarding-license-status').fadeOut();

						var license = $('#wf-onboarding-license input').val();
						wordfenceExt.onboardingInstallLicense(license,
							function(res) { //Success
								if (res.isPaid) {
									wordfenceExt.setOption('onboardingAttempt3', '<?php echo esc_attr(wfOnboardingController::ONBOARDING_LICENSE); ?>');
									//$('#wf-onboarding-license-status').addClass('wf-green-dark').removeClass('wf-yellow-dark wf-red-dark').text('You have successfully installed a premium license.').fadeIn();
									//$('#wf-onboarding-license-install').text('Installed').addClass('wf-disabled');
									//$('#wf-onboarding-license input').attr('disabled', true);
									$('#wf-onboarding-banner').slideUp();
									$('#wf-onboarding-final-attempt .wf-modal-header-action-close').off('click');
									/*$('#wf-onboarding-premium-cta, #wf-onboarding-license-footer, #wf-onboarding-or').fadeOut(400, function() {
									 $('#wf-onboarding-license-finished').fadeIn();
									 $.wfcolorbox.resize();
									 });*/

									var html = '<div class="wf-modal wf-modal-success"><div class="wf-model-success-wrapper"><div class="wf-modal-header"><div class="wf-modal-header-content"><div class="wf-modal-title"><?php esc_html_e('Premium License Installed', 'wordfence'); ?></div></div></div><div class="wf-modal-content"><?php esc_html_e('Congratulations! Wordfence Premium is now active on your website. Please note that some Premium features are not enabled by default.', 'wordfence'); ?></div></div><div class="wf-modal-footer"><ul class="wf-onboarding-flex-horizontal wf-onboarding-flex-align-right wf-onboarding-full-width"><li><a href="<?php echo esc_url(network_admin_url('admin.php?page=Wordfence')); ?>" class="wf-onboarding-btn wf-onboarding-btn-primary"><?php esc_html_e('Continue', 'wordfence'); ?></a></li></ul></div></div>';
									$.wfcolorbox({
										width: (wordfenceExt.isSmallScreen ? '300px' : '500px'),
										html: html,
										overlayClose: true,
										closeButton: false,
										className: 'wf-modal'
									});
									<?php
									//Congratulations! Wordfence Premium is now active on your website. Please note that some Premium features are not enabled by default. Read this brief article to learn more about <a href="#todo" target="_blank" rel="noopener noreferrer">getting the most out of Wordfence Premium</a>.
									?>
								}
								else { //Unlikely to happen but possible
									$('#wf-onboarding-license-status').addClass('wf-yellow-dark').removeClass('wf-green-dark wf-red-dark').text('You have successfully installed a free license.').fadeIn();
									$.wfcolorbox.resize();
								}
							},
							function(error) { //Error
								$('#wf-onboarding-license-status').addClass('wf-red-dark').removeClass('wf-green-dark wf-yellow-dark').text(error || <?php echo json_encode(__('An unknown error occurred.', 'wordfence')) ?>).fadeIn();
								$.wfcolorbox.resize();
							});
					});

					$('#wf-onboarding-no-thanks, #wf-onboarding-final-attempt .wf-modal-header-action-close').on('click', function(e) {
						e.preventDefault();
						e.stopPropagation();

						if ($('#wf-onboarding-final-attempt-2').is(':visible')) {
							wordfenceExt.setOption('onboardingAttempt3', '<?php echo esc_attr(wfOnboardingController::ONBOARDING_LICENSE); ?>');
							$('#wf-onboarding-banner').slideUp();
						}

						WFAD.colorboxClose();
						if (WFAD.tour1) { setTimeout(function() { WFAD.tour1(); }, 500); }
					});
				}});
			});
		})(jQuery);
	</script>
<?php endif; ?>lib/rest-api/wfRESTConfigController.php000064400000032047150755146450014075 0ustar00<?php

use WordfenceLS\Controller_Settings;

require_once(dirname(__FILE__) . '/wfRESTBaseController.php');

class wfRESTConfigController extends wfRESTBaseController {

	public static function disconnectConfig($adminEmail = null) {
		global $wpdb;
		delete_transient('wordfenceCentralJWT' . wfConfig::get('wordfenceCentralSiteID'));

		if (is_null($adminEmail)) {
			$adminEmail = wfConfig::get('wordfenceCentralConnectEmail');
		}

		$result = $wpdb->query('DELETE FROM ' . wfDB::networkTable('wfConfig') . " WHERE name LIKE 'wordfenceCentral%'");

		wfConfig::set('wordfenceCentralDisconnected', true);
		wfConfig::set('wordfenceCentralDisconnectTime', time());
		wfConfig::set('wordfenceCentralDisconnectEmail', $adminEmail);
		wfConfig::set('wordfenceCentralConfigurationIssue', false);

		return !!$result;
	}

	public function registerRoutes() {
		register_rest_route('wordfence/v1', '/config', array(
			'methods'             => WP_REST_Server::READABLE,
			'callback'            => array($this, 'getConfig'),
			'permission_callback' => array($this, 'verifyToken'),
			'fields'              => array(
				'description' => __('Specific config options to return.', 'wordfence'),
				'type'        => 'array',
				'required'    => false,
			),
		));
		register_rest_route('wordfence/v1', '/config', array(
			'methods'             => WP_REST_Server::EDITABLE,
			'callback'            => array($this, 'setConfig'),
			'permission_callback' => array($this, 'verifyToken'),
			'fields'              => array(
				'description' => __('Specific config options to set.', 'wordfence'),
				'type'        => 'array',
				'required'    => true,
			),
		));
		register_rest_route('wordfence/v1', '/disconnect', array(
			'methods'             => WP_REST_Server::EDITABLE,
			'callback'            => array($this, 'disconnect'),
			'permission_callback' => array($this, 'verifyToken'),
		));
		register_rest_route('wordfence/v1', '/premium-connect', array(
			'methods'             => WP_REST_Server::EDITABLE,
			'callback'            => array($this, 'premiumConnect'),
			'permission_callback' => array($this, 'verifyTokenPremium'),
		));
	}

	/**
	 * @param WP_REST_Request $request
	 * @return mixed|WP_REST_Response
	 */
	public function getConfig($request) {
		$fields = (array) $request['fields'];

		$config = array();

		$firewall = new wfFirewall();
		$wafFields = array(
			'autoPrepend'                    => $firewall->protectionMode() === wfFirewall::PROTECTION_MODE_EXTENDED,
			'avoid_php_input'                => wfWAF::getInstance()->getStorageEngine()->getConfig('avoid_php_input', false) ? 1 : 0,
			'disabledRules'                  => array_keys((array) wfWAF::getInstance()->getStorageEngine()->getConfig('disabledRules')),
			'ruleCount'                      => count((array) wfWAF::getInstance()->getRules()),
			'disableWAFBlacklistBlocking'    => wfWAF::getInstance()->getStorageEngine()->getConfig('disableWAFBlacklistBlocking'),
			'enabled'                        => $firewall->wafStatus() !== wfFirewall::FIREWALL_MODE_DISABLED,
            'firewallMode'                   => $firewall->firewallMode(),
			'learningModeGracePeriod'        => wfWAF::getInstance()->getStorageEngine()->getConfig('learningModeGracePeriod'),
			'learningModeGracePeriodEnabled' => wfWAF::getInstance()->getStorageEngine()->getConfig('learningModeGracePeriodEnabled'),
			'subdirectoryInstall'            => $firewall->isSubDirectoryInstallation(),
			'wafStatus'                      => $firewall->wafStatus(),
		);
		$lsFields = array(
			Controller_Settings::OPTION_XMLRPC_ENABLED                   => Controller_Settings::shared()->get(Controller_Settings::OPTION_XMLRPC_ENABLED),
			Controller_Settings::OPTION_2FA_WHITELISTED                  => Controller_Settings::shared()->get(Controller_Settings::OPTION_2FA_WHITELISTED),
			Controller_Settings::OPTION_IP_SOURCE                        => Controller_Settings::shared()->get(Controller_Settings::OPTION_IP_SOURCE),
			Controller_Settings::OPTION_IP_TRUSTED_PROXIES               => Controller_Settings::shared()->get(Controller_Settings::OPTION_IP_TRUSTED_PROXIES),
			Controller_Settings::OPTION_REQUIRE_2FA_ADMIN                => Controller_Settings::shared()->get(Controller_Settings::OPTION_REQUIRE_2FA_ADMIN),
			Controller_Settings::OPTION_REQUIRE_2FA_GRACE_PERIOD_ENABLED => Controller_Settings::shared()->get(Controller_Settings::OPTION_REQUIRE_2FA_GRACE_PERIOD_ENABLED),
			Controller_Settings::OPTION_GLOBAL_NOTICES                   => Controller_Settings::shared()->get(Controller_Settings::OPTION_GLOBAL_NOTICES),
			Controller_Settings::OPTION_REMEMBER_DEVICE_ENABLED          => Controller_Settings::shared()->get(Controller_Settings::OPTION_REMEMBER_DEVICE_ENABLED),
			Controller_Settings::OPTION_REMEMBER_DEVICE_DURATION         => Controller_Settings::shared()->get(Controller_Settings::OPTION_REMEMBER_DEVICE_DURATION),
			Controller_Settings::OPTION_ALLOW_XML_RPC                    => Controller_Settings::shared()->get(Controller_Settings::OPTION_ALLOW_XML_RPC),
			Controller_Settings::OPTION_ENABLE_AUTH_CAPTCHA              => Controller_Settings::shared()->get(Controller_Settings::OPTION_ENABLE_AUTH_CAPTCHA),
			Controller_Settings::OPTION_RECAPTCHA_THRESHOLD              => Controller_Settings::shared()->get(Controller_Settings::OPTION_RECAPTCHA_THRESHOLD),
			Controller_Settings::OPTION_LAST_SECRET_REFRESH              => Controller_Settings::shared()->get(Controller_Settings::OPTION_LAST_SECRET_REFRESH),
		);
		// Convert the database strings to typed values.
		foreach ($lsFields as $lsField => $value) {
			$lsFields[$lsField] = Controller_Settings::shared()->clean($lsField, $value);
		}

		if (!$fields) {
			foreach (wfConfig::$defaultConfig as $group => $groupOptions) {
				foreach ($groupOptions as $field => $values) {
					$fields[] = $field;
				}
			}
			foreach ($wafFields as $wafField => $value) {
				$fields[] = 'waf.' . $wafField;
			}
			foreach ($lsFields as $lsField => $value) {
				$fields[] = 'wfls_settings_' . $lsField;
			}
		}

		foreach ($fields as $field) {
			if (strpos($field, 'waf.') === 0) {
				$wafField = substr($field, 4);
				if (array_key_exists($wafField, $wafFields)) {
					$config['waf'][$wafField] = $wafFields[$wafField];
				}
				continue;
			}

			if (strpos($field, 'wfls_settings_') === 0) {
				$lsField = substr($field, 14);
				if (array_key_exists($lsField, $lsFields)) {
					$config['wfls_settings_' . $lsField] = $lsFields[$lsField];
				}
				continue;
			}

			if (array_key_exists($field, wfConfig::$defaultConfig['checkboxes'])) {
				$config[$field] = (bool) wfConfig::get($field);

			} else if (array_key_exists($field, wfConfig::$defaultConfig['otherParams']) ||
				array_key_exists($field, wfConfig::$defaultConfig['defaultsOnly'])) {

				$configConfig = !empty(wfConfig::$defaultConfig['otherParams'][$field]) ?
					wfConfig::$defaultConfig['otherParams'][$field] : wfConfig::$defaultConfig['defaultsOnly'][$field];

				if (!empty($configConfig['validation']['type'])) {
					switch ($configConfig['validation']['type']) {
						case wfConfig::TYPE_INT:
							$config[$field] = wfConfig::getInt($field);
							break;

						case wfConfig::TYPE_DOUBLE:
						case wfConfig::TYPE_FLOAT:
							$config[$field] = floatval(wfConfig::get($field));
							break;

						case wfConfig::TYPE_BOOL:
							$config[$field] = (bool) wfConfig::get($field);
							break;

						case wfConfig::TYPE_ARRAY:
							$config[$field] = wfConfig::get_ser($field);
							break;

						case wfConfig::TYPE_STRING:
						default:
							$config[$field] = wfConfig::get($field);
							break;
					}
				} else {
					$config[$field] = wfConfig::get($field);
				}

			} else if (in_array($field, wfConfig::$serializedOptions)) {
				$config[$field] = wfConfig::get_ser($field);
			}
		}

		$api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion());
		parse_str($api->makeAPIQueryString(), $qs);
		$systemInfo = json_decode(wfUtils::base64url_decode($qs['s']), true);
		$systemInfo['output_buffering'] = ini_get('output_buffering');
		$systemInfo['ip'] = wfUtils::getIPAndServerVariable();
		$systemInfo['detected_ips'] = wfUtils::getAllServerVariableIPs();
		$systemInfo['admin_url'] = network_admin_url();

		$response = rest_ensure_response(array(
			'config' => $config,
			'info'   => $systemInfo,
		));
		return $response;
	}

	/**
	 * @param WP_REST_Request $request
	 * @return mixed|WP_REST_Response
	 */
	public function setConfig($request) {
		wfCentral::preventConfigurationSync();

		$fields = $request['fields'];
		if (is_array($fields) && $fields) {
			$loginSecurityConfig = array();
			foreach ($fields as $key => $value) {
				if (strpos($key, 'wfls_settings_') === 0) {
					$lsField = substr($key, 14);
					$loginSecurityConfig[$lsField] = $value;
				}
			}

			if ($loginSecurityConfig) {
				$errors = Controller_Settings::shared()->validate_multiple($loginSecurityConfig);

				if ($errors !== true) {
					if (count($errors) == 1) {
						return new WP_Error('rest_set_config_error',
							sprintf(
								/* translators: Error message. */
								__('An error occurred while saving the configuration: %s', 'wordfence'), $errors[0]['error']),
							array('status' => 422));

					} else if (count($errors) > 1) {
						$compoundMessage = array();
						foreach ($errors as $e) {
							$compoundMessage[] = $e['error'];
						}
						return new WP_Error('rest_set_config_error',
							sprintf(
								/* translators: Error message. */
								__('Errors occurred while saving the configuration: %s', 'wordfence'), implode(', ', $compoundMessage)),
							array('status' => 422));
					}

					return new WP_Error('rest_set_config_error',
						__('Errors occurred while saving the configuration.', 'wordfence'),
						array('status' => 422));
				}

				try {
					Controller_Settings::shared()->set_multiple($loginSecurityConfig);
					foreach ($fields as $key => $value) {
						if (strpos($key, 'wfls_settings_') === 0) {
							unset($fields[$key]);
						}
					}

				} catch (Exception $e) {
					return new WP_Error('rest_save_config_error',
						sprintf(
						/* translators: Error message. */
							__('A server error occurred while saving the configuration: %s', 'wordfence'), $e->getMessage()),
						array('status' => 500));
				}
			}

			$errors = wfConfig::validate($fields);
			if ($errors !== true) {
				if (count($errors) == 1) {
					return new WP_Error('rest_set_config_error',
						sprintf(
						/* translators: Error message. */
							__('An error occurred while saving the configuration: %s', 'wordfence'), $errors[0]['error']),
						array('status' => 422));

				} else if (count($errors) > 1) {
					$compoundMessage = array();
					foreach ($errors as $e) {
						$compoundMessage[] = $e['error'];
					}
					return new WP_Error('rest_set_config_error',
						sprintf(
						/* translators: Error message. */
							__('Errors occurred while saving the configuration: %s', 'wordfence'), implode(', ', $compoundMessage)),
						array('status' => 422));
				}

				return new WP_Error('rest_set_config_error',
					__('Errors occurred while saving the configuration.', 'wordfence'),
					array('status' => 422));
			}

			try {
				wfConfig::save($fields);
				return rest_ensure_response(array(
					'success' => true,
				));

			} catch (Exception $e) {
				return new WP_Error('rest_save_config_error',
					sprintf(
					/* translators: Error message. */
						__('A server error occurred while saving the configuration: %s', 'wordfence'), $e->getMessage()),
					array('status' => 500));
			}
		}
		return new WP_Error('rest_save_config_error',
			__("Validation error: 'fields' parameter is empty or not an array.", 'wordfence'),
			array('status' => 422));

	}

	/**
	 * @param WP_REST_Request $request
	 * @return mixed|WP_REST_Response
	 */
	public function disconnect($request) {
		self::disconnectConfig();
		return rest_ensure_response(array(
			'success' => true,
		));
	}

	/**
	 * @param WP_REST_Request $request
	 * @return mixed|WP_REST_Response
	 */
	public function premiumConnect($request) {
		require_once(WORDFENCE_PATH . '/lib/sodium_compat_fast.php');

		// Store values sent by Central.
		$wordfenceCentralPK = $request['public-key'];
		$wordfenceCentralSiteData = $request['site-data'];
		$wordfenceCentralSiteID = $request['site-id'];

		$keypair = ParagonIE_Sodium_Compat::crypto_sign_keypair();
		$publicKey = ParagonIE_Sodium_Compat::crypto_sign_publickey($keypair);
		$secretKey = ParagonIE_Sodium_Compat::crypto_sign_secretkey($keypair);
		wfConfig::set('wordfenceCentralSecretKey', $secretKey);

		wfConfig::set('wordfenceCentralConnected', 1);
		wfConfig::set('wordfenceCentralCurrentStep', 6);
		wfConfig::set('wordfenceCentralPK', pack("H*", $wordfenceCentralPK));
		wfConfig::set('wordfenceCentralSiteData', json_encode($wordfenceCentralSiteData));
		wfConfig::set('wordfenceCentralSiteID', $wordfenceCentralSiteID);
		wfConfig::set('wordfenceCentralConnectTime', time());
		wfConfig::set('wordfenceCentralConnectEmail', !empty($this->tokenData['adminEmail']) ? $this->tokenData['adminEmail'] : null);

		// Return values created by Wordfence.
		return rest_ensure_response(array(
			'success'    => true,
			'public-key' => ParagonIE_Sodium_Compat::bin2hex($publicKey),
		));
	}
}lib/rest-api/wfRESTAuthenticationController.php000064400000013610150755146450015642 0ustar00<?php

class wfRESTAuthenticationController {

	const NONCE_AGE = 600;

	public static function generateNonce($tickOffset = 0) {
		add_filter('nonce_life', 'wfRESTAuthenticationController::nonceAge');

		$i = wp_nonce_tick();
		$salt = wp_salt('nonce');
		$nonce = hash_hmac('sha256', ($i + $tickOffset) . '|wordfence-rest-api-auth', $salt);

		remove_filter('nonce_life', 'wfRESTAuthenticationController::nonceAge');

		return $nonce;
	}

	public static function generateToken() {
		return new wfJWT(wfConfig::get('wordfenceCentralSiteID'));
	}

	public static function nonceAge() {
		return self::NONCE_AGE;
	}

	public function registerRoutes() {
		register_rest_route('wordfence/v1', '/authenticate', array(
			'methods'  => WP_REST_Server::READABLE,
			'callback' => array($this, 'nonce'),
			'permission_callback' => '__return_true',
		));
		register_rest_route('wordfence/v1', '/authenticate', array(
			'methods'  => WP_REST_Server::CREATABLE,
			'callback' => array($this, 'authenticate'),
			'permission_callback' => '__return_true',
		));
		register_rest_route('wordfence/v1', '/authenticate-premium', array(
			'methods'  => WP_REST_Server::CREATABLE,
			'callback' => array($this, 'authenticatePremium'),
			'permission_callback' => '__return_true',
		));
	}

	/**
	 * @param WP_REST_Request $request
	 * @return mixed|WP_REST_Response
	 */
	public function nonce($request) {
		$response = rest_ensure_response(array(
			'nonce' => self::generateNonce(),
			'admin_url' => network_admin_url(),
		));
		return $response;
	}

	/**
	 * @param WP_REST_Request $request
	 * @return mixed|WP_REST_Response
	 */
	public function authenticate($request) {
		require_once(WORDFENCE_PATH . '/lib/sodium_compat_fast.php');

		$siteID = wfConfig::get('wordfenceCentralSiteID');
		if (!$siteID) {
			return new WP_Error('rest_forbidden_context',
				__('Site is not connected to Wordfence Central.', 'wordfence'),
				array('status' => rest_authorization_required_code()));
		}

		// verify signature.
		$data = $request->get_param('data');
		$dataChunks = explode('|', $data, 2);
		if (count($dataChunks) !== 2) {
			return new WP_Error('rest_forbidden_context',
				__('Data is invalid.', 'wordfence'),
				array('status' => rest_authorization_required_code()));
		}
		if (!preg_match('/[0-9a-f]{64}/i', $dataChunks[0])) {
			return new WP_Error('rest_forbidden_context',
				__('Nonce format is invalid.', 'wordfence'),
				array('status' => rest_authorization_required_code()));
		}
		if (!preg_match('/[0-9a-f\-]{36}/i', $dataChunks[1])) {
			return new WP_Error('rest_forbidden_context',
				__('Site ID is invalid.', 'wordfence'),
				array('status' => rest_authorization_required_code()));
		}
		if (!hash_equals($siteID, $dataChunks[1])) {
			return new WP_Error('rest_forbidden_context',
				__('Site ID is invalid.', 'wordfence'),
				array('status' => rest_authorization_required_code()));
		}

		$signature = $request->get_param('signature');
		$nonce1 = self::generateNonce();
		$nonce2 = self::generateNonce(-1);
		$verfiedNonce = hash_equals($nonce1, $dataChunks[0]) || hash_equals($nonce2, $dataChunks[0]);

		if (!$verfiedNonce) {
			return new WP_Error('rest_forbidden_context',
				__('Nonce is invalid.', 'wordfence'),
				array('status' => rest_authorization_required_code()));
		}
		$signature = pack('H*', $signature);
		if (!ParagonIE_Sodium_Compat::crypto_sign_verify_detached($signature, $data, wfConfig::get('wordfenceCentralPK'))) {
			return new WP_Error('rest_forbidden_context',
				__('Signature is invalid.', 'wordfence'),
				array('status' => rest_authorization_required_code()));
		}

		$response = rest_ensure_response(array(
			'token' => (string) self::generateToken(),
		));
		return $response;
	}

	/**
	 * @param WP_REST_Request $request
	 * @return mixed|WP_REST_Response
	 */
	public function authenticatePremium($request) {
		require_once(WORDFENCE_PATH . '/lib/sodium_compat_fast.php');

		// verify signature.
		$data = $request->get_param('data');
		$dataChunks = explode('|', $data, 2);
		if (count($dataChunks) !== 2) {
			return new WP_Error('rest_forbidden_context',
				__('Data is invalid.', 'wordfence'),
				array('status' => rest_authorization_required_code()));
		}
		if (!preg_match('/[0-9a-f]{64}/i', $dataChunks[0])) {
			return new WP_Error('rest_forbidden_context',
				__('Nonce format is invalid.', 'wordfence'),
				array('status' => rest_authorization_required_code()));
		}
		if (!is_email($dataChunks[1])) {
			return new WP_Error('rest_forbidden_context',
				__('Email address is invalid.', 'wordfence'),
				array('status' => rest_authorization_required_code()));
		}

		$adminEmail = $dataChunks[1];

		$signature = $request->get_param('signature');
		$nonce1 = self::generateNonce();
		$nonce2 = self::generateNonce(-1);
		$verfiedNonce = hash_equals($nonce1, $dataChunks[0]) || hash_equals($nonce2, $dataChunks[0]);

		if (!$verfiedNonce) {
			return new WP_Error('rest_forbidden_context',
				__('Nonce is invalid.', 'wordfence'),
				array('status' => rest_authorization_required_code()));
		}
		$signature = pack('H*', $signature);
		if (!ParagonIE_Sodium_Compat::crypto_sign_verify_detached($signature, $data, WORDFENCE_CENTRAL_PUBLIC_KEY)) {
			return new WP_Error('rest_forbidden_context',
				__('Signature is invalid.', 'wordfence'),
				array('status' => rest_authorization_required_code()));
		}

		$user_query = new WP_User_Query(array(
			'role'           => 'administrator',
			'search'         => $adminEmail,
			'search_columns' => array('user_email')
		));
		$users = $user_query->get_results();
		if (is_array($users) && count($users) === 1) {
			$jwt = new wfJWT('wordfence-central-premium');
			$jwt->addClaims(array('email' => $adminEmail));
			$response = rest_ensure_response(array(
				'token' => (string) $jwt,
			));
			return $response;
		}

		return new WP_Error('rest_forbidden_context',
			__('Admin user with this email address not found.', 'wordfence'),
			array('status' => rest_authorization_required_code()));
	}

}lib/rest-api/wfRESTScanController.php000064400000012106150755146450013546 0ustar00<?php

require_once(dirname(__FILE__) . '/wfRESTBaseController.php');

class wfRESTScanController extends wfRESTBaseController {

	/**
	 * @todo Setup routes to modify scan results.
	 */
	public function registerRoutes() {
		register_rest_route('wordfence/v1', '/scan/issues', array(
			'methods'             => WP_REST_Server::READABLE,
			'callback'            => array($this, 'getIssuesList'),
			'permission_callback' => array($this, 'verifyToken'),
			'group'               => array(
				'description' => __('Scan result group or all results.', 'wordfence'),
				'type'        => 'string',
				'required'    => false,
			),
			'offset'              => array(
				'description' => __('Offset of scan results to return.', 'wordfence'),
				'type'        => 'int',
				'required'    => false,
			),
			'limit'               => array(
				'description' => __('Number of scan results to return.', 'wordfence'),
				'type'        => 'int',
				'required'    => false,
			),
		));
		register_rest_route('wordfence/v1', '/scan', array(
			'methods'             => WP_REST_Server::CREATABLE,
			'callback'            => array($this, 'startScan'),
			'permission_callback' => array($this, 'verifyToken'),
		));
		register_rest_route('wordfence/v1', '/scan', array(
			'methods'             => WP_REST_Server::DELETABLE,
			'callback'            => array($this, 'stopScan'),
			'permission_callback' => array($this, 'verifyToken'),
		));
		register_rest_route('wordfence/v1', '/scan/issue', array(
			'methods'             => WP_REST_Server::EDITABLE,
			'callback'            => array($this, 'updateIssue'),
			'permission_callback' => array($this, 'verifyToken'),
		));
	}

	/**
	 * @param WP_REST_Request $request
	 * @return mixed|WP_REST_Response
	 */
	public function getIssuesList($request) {
		$group = $request['group'] ? $request['group'] : 'all';
		$offset = absint($request['offset']);
		$limit = absint($request['limit']);
		if ($limit === 0) {
			$limit = 100;
		}
		switch ($group) {
			case 'pending':
				$count = wfIssues::shared()->getPendingIssueCount();
				$issues = wfIssues::shared()->getPendingIssues($offset, $limit);
				break;

			default: // Return all issues.
				$count = wfIssues::shared()->getIssueCount();
				$issues = wfIssues::shared()->getIssues($offset, $limit);
				break;
		}

		$response = rest_ensure_response(array(
			'count'          => $count,
			'last-scan-time' => wfConfig::get('scanTime'),
			'issues'         => $issues,
		));
		return $response;
	}

	/**
	 * @param WP_REST_Request $request
	 * @return mixed|WP_REST_Response
	 */
	public function startScan($request) {
		wordfence::status(1, 'info', sprintf(/* translators: Localized date. */ __('Wordfence scan starting at %s from Wordfence Central', 'wordfence'),
			date('l jS \of F Y h:i:s A', current_time('timestamp'))));

		try {
			wfScanEngine::startScan();

		} catch (wfScanEngineTestCallbackFailedException $e) {
			wfConfig::set('lastScanCompleted', $e->getMessage());
			wfConfig::set('lastScanFailureType', wfIssues::SCAN_FAILED_CALLBACK_TEST_FAILED);
			wfUtils::clearScanLock();
			$response = rest_ensure_response(array(
				'success'    => false,
				'error-code' => $e->getCode(),
				'error'      => $e->getMessage(),
			));
			return $response;

		} catch (Exception $e) {
			if ($e->getCode() != wfScanEngine::SCAN_MANUALLY_KILLED) {
				wfConfig::set('lastScanCompleted', $e->getMessage());
				wfConfig::set('lastScanFailureType', wfIssues::SCAN_FAILED_GENERAL);

				$response = rest_ensure_response(array(
					'success'    => false,
					'error-code' => $e->getCode(),
					'error'      => $e->getMessage(),
				));
				return $response;
			}
		}

		$response = rest_ensure_response(array(
			'success' => true,
		));
		return $response;

	}

	/**
	 * @param WP_REST_Request $request
	 * @return mixed|WP_REST_Response
	 */
	public function stopScan($request) {
		wordfence::status(1, 'info', __('Scan stop request received from Wordfence Central.', 'wordfence'));
		wordfence::status(10, 'info', __('SUM_KILLED:A request was received to stop the previous scan from Wordfence Central.', 'wordfence'));
		wfUtils::clearScanLock(); //Clear the lock now because there may not be a scan running to pick up the kill request and clear the lock
		wfScanEngine::requestKill();
		wfConfig::remove('scanStartAttempt');
		wfConfig::set('lastScanFailureType', false);
		$response = rest_ensure_response(array(
			'success' => true,
		));
		return $response;
	}

	/**
	 * @param WP_REST_Request $request
	 * @return mixed|WP_REST_Response
	 */
	public function updateIssue($request) {
		$issue = $request['issue'];
		$id = is_array($issue) && array_key_exists('id', $issue) ? $issue['id'] : null;
		$status = is_array($issue) && array_key_exists('status', $issue) ? $issue['status'] : null;

		if ($id) {
			$wfdb = new wfDB();
			$wfdb->queryWrite("update " . wfDB::networkTable('wfIssues') . " set status='%s' where id=%d", $status, $id);
			$response = rest_ensure_response(array(
				'success' => true,
			));
			return $response;
		}
		$response = rest_ensure_response(array(
			'success'    => false,
			'error'      => 'Issue not found.',
		));
		return $response;

	}
}lib/rest-api/wfRESTBaseController.php000064400000004056150755146450013541 0ustar00<?php

abstract class wfRESTBaseController {

	protected $tokenData;

	/**
	 * @param WP_REST_Request $request
	 * @return WP_Error|bool
	 */
	public function verifyToken($request) {
		$validToken = $this->isTokenValid($request);

		if ($validToken &&
			!is_wp_error($validToken) &&
			$this->tokenData['body']['sub'] === wfConfig::get('wordfenceCentralSiteID')
		) {
			return true;
		}

		if (is_wp_error($validToken)) {
			return $validToken;
		}

		return new WP_Error('rest_forbidden_context',
			__('Token is invalid.', 'wordfence'),
			array('status' => rest_authorization_required_code()));
	}

	/**
	 * @param WP_REST_Request $request
	 * @return WP_Error|bool
	 */
	public function verifyTokenPremium($request) {
		$validToken = $this->isTokenValid($request);

		if ($validToken &&
			!is_wp_error($validToken) &&
			$this->tokenData['body']['sub'] === 'wordfence-central-premium'
		) {
			return true;
		}

		if (is_wp_error($validToken)) {
			return $validToken;
		}

		return new WP_Error('rest_forbidden_context',
			__('Token is invalid.', 'wordfence'),
			array('status' => rest_authorization_required_code()));
	}

	/**
	 * @param WP_REST_Request $request
	 * @return bool|WP_Error
	 */
	public function isTokenValid($request) {
		$authHeader = $request->get_header('Authorization');
		if (!$authHeader) {
			$authHeader = $request->get_header('X-Authorization');
		}
		if (stripos($authHeader, 'bearer ') !== 0) {
			return new WP_Error('rest_forbidden_context',
				__('Authorization header format is invalid.', 'wordfence'),
				array('status' => rest_authorization_required_code()));
		}

		$token = trim(substr($authHeader, 7));
		$jwt = new wfJWT();

		try {
			$this->tokenData = $jwt->decode($token);

		} catch (wfJWTException $e) {
			return new WP_Error('rest_forbidden_context',
				$e->getMessage(),
				array('status' => rest_authorization_required_code()));

		} catch (Exception $e) {
			return new WP_Error('rest_forbidden_context',
				__('Token is invalid.', 'wordfence'),
				array('status' => rest_authorization_required_code()));
		}

		return true;
	}
}lib/menu_tools_twoFactor.php000064400000047146150755146450012267 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }

$helpLink = wfSupportController::supportURL(wfSupportController::ITEM_TOOLS_TWO_FACTOR);

if (function_exists('network_admin_url') && is_multisite()) {
	$lsModuleURL = network_admin_url('admin.php?page=WFLS');
}
else {
	$lsModuleURL = admin_url('admin.php?page=WFLS');
}

echo wfView::create('common/section-title', array(
	'title'     => __('Two-Factor Authentication', 'wordfence'),
	'helpLink'  => $helpLink,
	'helpLabelHTML' => wp_kses(__('Learn more<span class="wf-hidden-xs"> about Two-Factor Authentication</span>', 'wordfence'), array('span'=>array('class'=>array()))),
))->render();
?>

<script type="application/javascript">
	(function($) {
		$(function() {
			document.title = "<?php esc_attr_e('Two-Factor Authentication', 'wordfence'); ?>" + " \u2039 " + WFAD.basePageName;
		});
	})(jQuery);
</script>

<div id="wordfenceMode_twoFactor"></div>

<div id="wf-tools-two-factor">
<?php if (wfCredentialsController::useLegacy2FA()): ?>
	<div class="wf-row">
		<div class="wf-col-xs-12">
			<div id="wordfenceTwoFactorLegacy">
				<p><strong><?php esc_html_e('2FA Mode: Legacy', 'wordfence') ?>.</strong> <?php esc_html_e('Two-factor authentication is using legacy support, which enables SMS-based codes but is less compatible. An improved interface and use by non-administrators is available by activating the new login security module.', 'wordfence'); ?></p>
				<p><a id="wf-migrate2fanew-start" class="wf-btn wf-btn-default wf-btn-sm wf-dismiss-link" href="#" role="button"><?php esc_html_e('Switch to New 2FA', 'wordfence'); ?></a></p>
			</div>
		</div>
	</div>
	<?php if (!wfConfig::get('isPaid')): ?>
		<div class="wf-premium-callout wf-add-bottom">
			<h3><?php esc_html_e("Take Login Security to the next level with Two-Factor Authentication", 'wordfence') ?></h3>
			<p><?php echo wp_kses(__('Used by banks, government agencies, and military worldwide, two-factor authentication is one of the most secure forms of remote system authentication available. With it enabled, an attacker needs to know your username, password, <em>and</em> have control of your phone to log into your site. Upgrade to Premium now to enable this powerful feature.', 'wordfence'), array('em'=>array())) ?></p>

			<p class="wf-nowrap">
				<img id="wf-two-factor-img1" src="<?php echo wfUtils::getBaseURL() . 'images/2fa1.svg' ?>" alt="">
				<img id="wf-two-factor-img2" src="<?php echo wfUtils::getBaseURL() . 'images/2fa2.svg' ?>" alt="">
			</p>

			<p class="center">
				<a class="wf-btn wf-btn-primary wf-btn-callout" href="https://www.wordfence.com/gnl1twoFac1/wordfence-signup/" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Upgrade to Premium', 'wordfence') ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>
			</p>
		</div>

	<?php else: ?>
		<div class="wf-row">
			<div class="wf-col-xs-12 wf-flex-row">
				<div class="wf-flex-row-1">
					<p><?php echo wp_kses(__('With Two-Factor Authentication enabled, an attacker needs to know your username, password <em>and</em> have control of your phone to log in to your site. We recommend you enable Two-Factor Authentication for all Administrator level accounts.', 'wordfence'), array('em'=>array())) ?></p>
				</div>
				<div class="wf-flex-row-0 wf-padding-add-left">
					<?php
					echo wfView::create('options/block-controls', array(
						'suppressLogo' => true,
						'restoreDefaultsSection' => wfConfig::OPTIONS_TYPE_TWO_FACTOR,
						'restoreDefaultsMessage' => __('Are you sure you want to restore the default Two-Factor Authentication settings? This will undo any custom changes you have made to the options on this page. If you have configured any users to use two-factor authentication, they will not be changed.', 'wordfence'),
					))->render();
					?>
				</div>
			</div>
		</div>

		<div class="wf-row">
			<div class="wf-col-xs-12">
				<div class="wf-block wf-active">
					<?php if (!wfConfig::get('loginSecurityEnabled')): ?>
						<ul class="wf-block-banner">
							<li><?php echo wp_kses(__('<strong>Note:</strong> Two-Factor Authentication is disabled when the option "Enable Brute Force Protection" is off.', 'wordfence'), array('strong'=>array())); ?></li>
							<li><a href="#" class="wf-btn wf-btn-default" id="wf-2fa-enable" role="button"><?php esc_html_e('Turn On', 'wordfence'); ?></a></li>
						</ul>
					<?php endif; ?>
					<div class="wf-block-header">
						<div class="wf-block-header-content">
							<div class="wf-block-title">
								<strong><?php esc_html_e('Enable Two-Factor Authentication', 'wordfence') ?></strong>
							</div>
						</div>
					</div>
					<div class="wf-block-content">
						<ul class="wf-block-list">
							<li>
								<ul class="wf-form-field">
									<li style="width: 450px;" class="wf-option-text">
										<input placeholder="<?php echo esc_attr(__('Enter username to enable Two-Factor Authentication for', 'wordfence')) ?>" type="text" id="wfUsername" class="wf-form-control" value="">
									</li>
								</ul>
							</li>
							<li>
								<ul class="wf-form-field">
									<li>
										<input class="wf-option-radio" type="radio" name="wf2faMode" id="wf2faMode-authenticator" value="authenticator" checked>
										<label for="wf2faMode-authenticator">&nbsp;&nbsp;</label>
									</li>
									<li class="wf-option-title"><?php esc_html_e('Use authenticator app', 'wordfence') ?></li>
								</ul>
							</li>
							<li>
								<ul class="wf-form-field">
									<li>
										<input class="wf-option-radio" type="radio" name="wf2faMode" id="wf2faMode-phone" value="phone">
										<label for="wf2faMode-phone">&nbsp;&nbsp;</label>
									</li>
									<li class="wf-option-title"><?php esc_html_e('Send code to a phone number:', 'wordfence') ?>&nbsp;&nbsp;</li>
									<li class="wf-option-text">
										<input class="wf-form-control" type="text" value="" id="wfPhone" placeholder="<?php echo esc_attr(__('+1 (000) 000 0000', 'wordfence')) ?>">
									</li>
								</ul>

							</li>
							<li>
								<p>
									<input type="button" class="wf-btn wf-btn-primary pull-right" value="Enable User" onclick="WFAD.addTwoFactor(jQuery('#wfUsername').val(), jQuery('#wfPhone').val(), jQuery('input[name=wf2faMode]:checked').val());">
								</p>
							</li>

						</ul>

					</div>
				</div>
			</div>
		</div>
		<div class="wf-row">
			<div class="wf-col-xs-12">
				<h2><?php esc_html_e('Two-Factor Authentication Users', 'wordfence') ?></h2>

				<div id="wfTwoFacUsers"></div>
			</div>
		</div>
		<?php
		echo wfView::create('tools/options-group-2fa', array(
			'stateKey' => 'wf-2fa-options',
		))->render();
		?>

		<script type="text/javascript">
			jQuery('.twoFactorOption').on('click', function() {
				WFAD.updateConfig(jQuery(this).attr('name'), jQuery(this).is(':checked') ? 1 : 0, function() {

				});
			});

			jQuery('input[name=wf2faMode]').on('change', function() {
				var selectedMode = jQuery('input[name=wf2faMode]:checked').val();
				jQuery('#wfPhone').prop('disabled', selectedMode != 'phone');
			}).triggerHandler('change');

			(function($) {
				$(function() {
					$('#wf-2fa-enable').on('click', function(e) {
						e.preventDefault();
						e.stopPropagation();

						WFAD.setOption('loginSecurityEnabled', 1, function() {
							window.location.reload(true);
						});
					});
				});
			})(jQuery);
		</script>

		<script type="text/x-jquery-template" id="wfTwoFacUserTmpl">
			<table class="wf-striped-table wf-table-twofactor">
				<thead>
				<tr>
					<th><?php esc_html_e('User', 'wordfence') ?></th>
					<th><?php esc_html_e('Mode', 'wordfence') ?></th>
					<th><?php esc_html_e('Status', 'wordfence') ?></th>
					<th class="wf-center"><?php esc_html_e('Delete', 'wordfence') ?></th>
				</tr>
				</thead>
				<tbody>
				{{each(idx, user) users}}
				<tr id="twoFactorUser-${user.userID}">
					<td style="white-space: nowrap;">${user.username}</td>
					{{if user.mode == 'phone'}}
					<td style="white-space: nowrap;"><?php echo esc_html(sprintf(/* translators: Phone number. */ __('Phone (%s)', 'wordfence'), '${user.phone}')) ?></td>
					{{else}}
					<td style="white-space: nowrap;"><?php esc_html_e('Authenticator', 'wordfence') ?></td>
					{{/if}}
					<td style="white-space: nowrap;">
						{{if user.status == 'activated'}}
						<span style="color: #0A0;"><?php esc_html_e('Cellphone Sign-in Enabled', 'wordfence') ?></span>
						{{else}}
						<div class="wf-form-inline">
							<div class="wf-form-group">
								<label class="wf-plain wf-hidden-xs" style="margin: 0;" for="wfActivate-${user.userID}"><?php esc_html_e('Enter activation code:', 'wordfence') ?></label>
								<input class="wf-form-control" type="text" id="wfActivate-${user.userID}" size="6" placeholder="<?php esc_attr_e('Code', 'wordfence') ?>">
							</div>
							<input class="wf-btn wf-btn-default" type="button" value="<?php esc_attr_e('Activate', 'wordfence') ?>" onclick="WFAD.twoFacActivate('${user.userID}', jQuery('#wfActivate-${user.userID}').val());">
						</div>
						{{/if}}
					</td>
					<td style="white-space: nowrap; text-align: center;" class="wf-twofactor-delete">
						<a href="#" onclick="WFAD.delTwoFac('${user.userID}'); return false;" role="button"><i class="wf-ion-ios-trash-outline"></i></a>
					</td>
				</tr>
				{{/each}}
				{{if (users.length == 0)}}
				<tr id="twoFactorUser-none">
					<td colspan="4"><?php esc_html_e('No users currently have cellphone sign-in enabled.', 'wordfence') ?></td>
				</tr>
				{{/if}}
				</tbody>
			</table>
		</script>
	<?php endif; ?>
<?php else: ?>
	<div class="wf-row">
		<div class="wf-col-xs-12">
			<div id="wordfenceTwoFactorModern">
				<p><strong><?php esc_html_e('2FA Mode: Normal', 'wordfence') ?>.</strong> <?php esc_html_e('Legacy support for SMS-based two-factor authentication is being phased out, as it is less secure than using a modern authenticator app.', 'wordfence') ?></p>
				<p><?php esc_html_e('If you have a conflict with the new 2FA method, you can temporarily switch back to the Legacy version.', 'wordfence'); ?></p>
				<p><a id="wf-migrate2faold-start" class="wf-btn wf-btn-default wf-btn-sm wf-dismiss-link" href="#" role="button"><?php esc_html_e('Revert to Legacy 2FA', 'wordfence'); ?></a></p>
			</div>
		</div>
	</div>
<?php endif; ?>
</div>
<script type="text/x-jquery-template" id="wfTmpl_migrate2FANew">
	<?php
	echo wfView::create('common/modal-prompt', array(
		'title' => __('Migrate or switch to new two-factor authentication?', 'wordfence'),
		'message' => __('Use the buttons below to migrate to the new two-factor authentication system or switch without migration. Migration will copy all existing authenticator-based user activations over to the new system while switching will use only users already set up in the new system. Existing SMS-based two-factor authentication activations must be disabled prior to migration.', 'wordfence'),
		'primaryButton' => array('id' => 'wf-migrate2fanew-prompt-confirm', 'label' => __('Migrate', 'wordfence'), 'link' => '#'),
		'secondaryButtons' => array(array('id' => 'wf-migrate2fanew-prompt-switch', 'label' => __('Switch', 'wordfence'), 'link' => '#'), array('id' => 'wf-migrate2fanew-prompt-cancel', 'label' => __('Cancel', 'wordfence'), 'link' => '#')),
		'progressIndicator' => 'wf-migrate2fanew-progress',
	))->render();
	?>
</script>
<script type="text/x-jquery-template" id="wfTmpl_migrate2FANewComplete">
	<?php
	echo wfView::create('common/modal-prompt', array(
		'title' => __('New Two-Factor Authentication Active', 'wordfence'),
		'message' => __('Your site is now using the new login security module and two-factor authentication. Before logging out, we recommend testing your login in a different browser or a private/incognito window. If any plugins or your theme cause conflicts with logging in, you can revert to the old 2FA method.', 'wordfence'),
		'primaryButton' => array('id' => 'wf-migrate2fanewcomplete-prompt-navigate', 'label' => __('Go To New 2FA', 'wordfence'), 'link' => $lsModuleURL),
		'secondaryButtons' => array(array('id' => 'wf-migrate2fanewcomplete-prompt-close', 'label' => __('Close', 'wordfence'), 'link' => '#')),
	))->render();
	?>
</script>
<script type="text/x-jquery-template" id="wfTmpl_migrate2FASMSActive">
	<?php
	echo wfView::create('common/modal-prompt', array(
		'title' => __('Migration Cannot Proceed', 'wordfence'),
		'message' => __('One or more users with two-factor authentication active are using SMS, which is unsupported in the new login security module. Please either deactivate two-factor authentication for those users or change them to use an authenticator app prior to migration.', 'wordfence'),
		'primaryButton' => array('id' => 'wf-migrate2fasmsactive-prompt-close', 'label' => __('Close', 'wordfence'), 'link' => '#'),
	))->render();
	?>
</script>
<script type="text/x-jquery-template" id="wfTmpl_migrate2FANewFail">
	<?php
	echo wfView::create('common/modal-prompt', array(
		'title' => __('Migration Failed', 'wordfence'),
		'message' => __('Automatic migration of the 2FA-enabled accounts failed. Please verify that your server is reachable via the internet and try again.', 'wordfence'),
		'primaryButton' => array('id' => 'wf-migrate2fanewfail-prompt-close', 'label' => __('Close', 'wordfence'), 'link' => '#'),
	))->render();
	?>
</script>
<script type="text/x-jquery-template" id="wfTmpl_migrate2FAOld">
	<?php
	echo wfView::create('common/modal-prompt', array(
		'title' => __('Revert back to legacy two-factor authentication?', 'wordfence'),
		'message' => __('All two-factor authentication settings and users\' codes will revert to your older settings. If any users had set up two-factor authentication after the update, they will no longer have 2FA enabled until you switch to the new version again.', 'wordfence'),
		'primaryButton' => array('id' => 'wf-migrate2faold-prompt-cancel', 'label' => __('Cancel', 'wordfence'), 'link' => '#'),
		'secondaryButtons' => array(array('id' => 'wf-migrate2faold-prompt-switch', 'label' => __('Revert', 'wordfence'), 'link' => '#')),
		'progressIndicator' => 'wf-migrate2faold-progress',
	))->render();
	?>
</script>
<script type="text/x-jquery-template" id="wfTmpl_migrate2FAOldComplete">
	<?php
	echo wfView::create('common/modal-prompt', array(
		'title' => __('Legacy Two-Factor Authentication Active', 'wordfence'),
		'message' => __('Your site is now using the legacy two-factor authentication system.', 'wordfence'),
		'primaryButton' => array('id' => 'wf-migrate2faoldcomplete-prompt-close', 'label' => __('Close', 'wordfence'), 'link' => '#'),
	))->render();
	?>
</script>
<script type="application/javascript">
	(function($) {
		$(function() {
			$('#wf-migrate2fanew-start').on('click', function(e) {
				e.preventDefault();
				e.stopPropagation();

				var prompt = $('#wfTmpl_migrate2FANew').tmpl();
				var promptHTML = $("<div />").append(prompt).html();
				WFAD.colorboxHTML((WFAD.isSmallScreen ? '300px' : '500px'), promptHTML, {overlayClose: false, closeButton: false, className: 'wf-modal', onComplete: function() {
					$('#wf-migrate2fanew-prompt-cancel').on('click', function(e) {
						e.preventDefault();
						e.stopPropagation();

						WFAD.colorboxClose();
					});

					$('#wf-migrate2fanew-prompt-switch').on('click', function(e) {
						e.preventDefault();
						e.stopPropagation();

						$('#wf-migrate2fanew-progress').show();
						$('#wf-migrate2fanew-prompt-cancel, #wf-migrate2fanew-prompt-confirm').addClass('wf-disabled');

						WFAD.ajax('wordfence_switchTo2FANew', {migrate: false}, function(res) {
							var prompt = $('#wfTmpl_migrate2FANewComplete').tmpl();
							var promptHTML = $("<div />").append(prompt).html();
							WFAD.colorboxClose();
							setTimeout(function() {
								WFAD.colorboxHTML((WFAD.isSmallScreen ? '300px' : '500px'), promptHTML, {overlayClose: false, closeButton: false, className: 'wf-modal', onComplete: function() {
									$('#wf-migrate2fanewcomplete-prompt-close').on('click', function(e) {
										e.preventDefault();
										e.stopPropagation();

										window.location.reload();
										WFAD.colorboxClose();
									});
								}});
							}, 500);
						});
					});

					$('#wf-migrate2fanew-prompt-confirm').on('click', function(e) {
						e.preventDefault();
						e.stopPropagation();
						
						$('#wf-migrate2fanew-progress').show();
						$('#wf-migrate2fanew-prompt-cancel, #wf-migrate2fanew-prompt-confirm').addClass('wf-disabled');

						WFAD.ajax('wordfence_switchTo2FANew', {migrate: true}, function(res) {
							if (res.ok) {
								var prompt = $('#wfTmpl_migrate2FANewComplete').tmpl(res);
								var promptHTML = $("<div />").append(prompt).html();
								WFAD.colorboxClose();
								setTimeout(function() {
									WFAD.colorboxHTML((WFAD.isSmallScreen ? '300px' : '500px'), promptHTML, {overlayClose: false, closeButton: false, className: 'wf-modal', onComplete: function() {
										$('#wf-migrate2fanewcomplete-prompt-close').on('click', function(e) {
											e.preventDefault();
											e.stopPropagation();
	
											WFAD.colorboxClose();
										});
									}});
								}, 500);
							}
							else if (res.smsActive) {
								var prompt = $('#wfTmpl_migrate2FASMSActive').tmpl();
								var promptHTML = $("<div />").append(prompt).html();
								WFAD.colorboxClose();
								setTimeout(function() {
									WFAD.colorboxHTML((WFAD.isSmallScreen ? '300px' : '500px'), promptHTML, {overlayClose: false, closeButton: false, className: 'wf-modal', onComplete: function() {
										$('#wf-migrate2fasmsactive-prompt-close').on('click', function(e) {
											e.preventDefault();
											e.stopPropagation();

											WFAD.colorboxClose();
										});
									}});
								}, 500);
							}
							else {
								var prompt = $('#wfTmpl_migrate2FANewFail').tmpl();
								var promptHTML = $("<div />").append(prompt).html();
								WFAD.colorboxClose();
								setTimeout(function() {
									WFAD.colorboxHTML((WFAD.isSmallScreen ? '300px' : '500px'), promptHTML, {overlayClose: false, closeButton: false, className: 'wf-modal', onComplete: function() {
										$('#wf-migrate2fanewfail-prompt-close').on('click', function(e) {
											e.preventDefault();
											e.stopPropagation();

											WFAD.colorboxClose();
										});
									}});
								}, 500);
							}
						});
					});
				}});
			});

			$('#wf-migrate2faold-start').on('click', function(e) {
				e.preventDefault();
				e.stopPropagation();

				var prompt = $('#wfTmpl_migrate2FAOld').tmpl();
				var promptHTML = $("<div />").append(prompt).html();
				WFAD.colorboxHTML((WFAD.isSmallScreen ? '300px' : '500px'), promptHTML, {overlayClose: false, closeButton: false, className: 'wf-modal', onComplete: function() {
					$('#wf-migrate2faold-prompt-cancel').on('click', function(e) {
						e.preventDefault();
						e.stopPropagation();

						WFAD.colorboxClose();
					});

					$('#wf-migrate2faold-prompt-switch').on('click', function(e) {
						e.preventDefault();
						e.stopPropagation();

						$('#wf-migrate2faold-progress').show();
						$('#wf-migrate2faold-prompt-cancel, #wf-migrate2faold-prompt-switch').addClass('wf-disabled');

						WFAD.ajax('wordfence_switchTo2FAOld', {migrate: false}, function(res) {
							var prompt = $('#wfTmpl_migrate2FAOldComplete').tmpl();
							var promptHTML = $("<div />").append(prompt).html();
							WFAD.colorboxClose();
							setTimeout(function() {
								WFAD.colorboxHTML((WFAD.isSmallScreen ? '300px' : '500px'), promptHTML, {overlayClose: false, closeButton: false, className: 'wf-modal', onComplete: function() {
									$('#wf-migrate2faoldcomplete-prompt-close').on('click', function(e) {
										e.preventDefault();
										e.stopPropagation();

										window.location.reload();
										WFAD.colorboxClose();
									});
								}});
							}, 500);
						});
					});
				}});
			});
		});
	})(jQuery);
</script>lib/wfVersionCheckController.php000064400000046421150755146450013032 0ustar00<?php

class wfVersionCheckController {
	const VERSION_COMPATIBLE = 'compatible';
	const VERSION_DEPRECATED = 'deprecated';
	const VERSION_UNSUPPORTED = 'unsupported';
	
	const OPENSSL_DEV = 0;
	//Betas are 1-14
	const OPENSSL_RELEASE = 15;
	
	public static function shared() {
		static $_shared = false;
		if ($_shared === false) {
			$_shared = new wfVersionCheckController();
		}
		return $_shared;
	}
	
	/**
	 * Returns whether or not all version checks are successful. If any check returns a value other than VERSION_COMPATIBLE, this returns false.
	 * 
	 * @return bool
	 */
	public function checkVersions() {
		return ($this->checkPHPVersion() == self::VERSION_COMPATIBLE) && ($this->checkOpenSSLVersion() == self::VERSION_COMPATIBLE) && ($this->checkWordPressVersion() == self::VERSION_COMPATIBLE);
	}
	
	/**
	 * Does the same thing as checkVersions but also triggers display of the corresponding warnings.
	 * 
	 * @return bool
	 */
	public function checkVersionsAndWarn() {
		require(dirname(__FILE__) . '/wfVersionSupport.php');
		/**
		 * @var string $wfPHPDeprecatingVersion
		 * @var string $wfPHPMinimumVersion
		 * @var string $wfOpenSSLDeprecatingVersion
		 * @var string $wfOpenSSLMinimumVersion
		 * @var string $wfWordPressDeprecatingVersion
		 * @var string $wfWordPressMinimumVersion
		 */
		
		//PHP
		$php = $this->checkPHPVersion();
		if ($php == self::VERSION_DEPRECATED) {
			$this->_alertEmail(
				'phpVersionCheckDeprecationEmail_' . $wfPHPDeprecatingVersion,
				__('PHP version too old', 'wordfence'),
				sprintf(
					/* translators: 1. PHP version. 2. PHP version. */
					__('Your site is using a PHP version (%1$s) that will no longer be supported by Wordfence in an upcoming release and needs to be updated. We recommend using the newest version of PHP available but will currently support PHP versions as old as %2$s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later.', 'wordfence'),
					phpversion(),
					$wfPHPDeprecatingVersion
				)
				. ' ' .
				sprintf(__('Learn More: %s', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_VERSION_PHP))
			);
			
			$this->_adminNotice(
				'phpVersionCheckDeprecationNotice_' . $wfPHPDeprecatingVersion,
				'phpVersionCheck',
				wp_kses(sprintf(
					/* translators: 1. PHP version. 2. PHP version. */
					__('<strong>WARNING: </strong> Your site is using a PHP version (%1$s) that will no longer be supported by Wordfence in an upcoming release and needs to be updated. We recommend using the newest version of PHP available but will currently support PHP versions as old as %2$s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later.', 'wordfence'),
					phpversion(),
					$wfPHPDeprecatingVersion
				), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()))) . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_VERSION_PHP) . '" target="_blank" rel="noopener noreferrer">' . esc_html__('Learn More', 'wordfence') . '<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>'
			);
		}
		else if ($php == self::VERSION_UNSUPPORTED) {
			$this->_alertEmail(
				'phpVersionCheckUnsupportedEmail_' . $wfPHPMinimumVersion,
				__('PHP version too old', 'wordfence'),
				sprintf(
					/* translators: 1. PHP version. 2. PHP version. */
					__('Your site is using a PHP version (%1$s) that is no longer supported by Wordfence and needs to be updated. We recommend using the newest version of PHP available but will currently support PHP versions as old as %2$s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later.', 'wordfence'),
					phpversion(),
					$wfPHPDeprecatingVersion
				) . ' ' . sprintf(/* translators: Support URL. */ __('Learn More: %s', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_VERSION_PHP))
			);
			
			$this->_adminNotice(
				'phpVersionCheckUnsupportedNotice_' . $wfPHPMinimumVersion,
				'phpVersionCheck',
				wp_kses(sprintf(
					/* translators: 1. PHP version. 2. PHP version. */
					__('<strong>WARNING: </strong> Your site is using a PHP version (%1$s) that is no longer supported by Wordfence and needs to be updated. We recommend using the newest version of PHP available but will currently support PHP versions as old as %2$s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later.', 'wordfence'),
					phpversion(),
					$wfPHPDeprecatingVersion
				), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()))) . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_VERSION_PHP) . '" target="_blank" rel="noopener noreferrer">' . esc_html__('Learn More', 'wordfence') . '<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>'
			);
		}
		else {
			wfAdminNoticeQueue::removeAdminNotice(false, 'phpVersionCheck');
		}
		
		if (wfAdminNoticeQueue::hasNotice('phpVersionCheck')) {
			return false;
		}
		
		//OpenSSL
		wfAdminNoticeQueue::removeAdminNotice(false, 'opensslVersionCheck');
		/*$openssl = $this->checkOpenSSLVersion();
		if ($openssl == self::VERSION_DEPRECATED) {
			$this->_alertEmail(
				'opensslVersionCheckDeprecationEmail_' . $wfOpenSSLDeprecatingVersion,
				__('OpenSSL version too old', 'wordfence'),
				sprintf(__('Your site is using an OpenSSL version (%s) that will no longer be supported by Wordfence in an upcoming release and needs to be updated. We recommend using the newest version of OpenSSL but will currently support OpenSSL versions as old as %s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later.', 'wordfence'), self::openssl_make_text_version(), $wfOpenSSLDeprecatingVersion) . ' ' . sprintf(__('Learn More: %s', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_VERSION_OPENSSL))
			);
			
			$this->_adminNotice(
				'opensslVersionCheckDeprecationNotice_' . $wfOpenSSLDeprecatingVersion,
				'opensslVersionCheck',
				sprintf(__('<strong>WARNING: </strong> Your site is using an OpenSSL version (%s) that will no longer be supported by Wordfence in an upcoming release and needs to be updated. We recommend using the newest version of OpenSSL but will currently support OpenSSL versions as old as %s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later.', 'wordfence'), self::openssl_make_text_version(), $wfOpenSSLDeprecatingVersion) . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_VERSION_OPENSSL) . '" target="_blank" rel="noopener noreferrer">' . __('Learn More', 'wordfence') . '<span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>'
			);
			
			return false;
		}
		else if ($openssl == self::VERSION_UNSUPPORTED) {
			$this->_alertEmail(
				'opensslVersionCheckUnsupportedEmail_' . $wfOpenSSLMinimumVersion,
				__('OpenSSL version too old', 'wordfence'),
				sprintf(__('Your site is using an OpenSSL version (%s) that is no longer supported by Wordfence and needs to be updated. We recommend using the newest version of OpenSSL but will currently support OpenSSL versions as old as %s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later.', 'wordfence'), self::openssl_make_text_version(), $wfOpenSSLDeprecatingVersion) . ' ' . sprintf(__('Learn More: %s', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_VERSION_OPENSSL))
			);
			
			$this->_adminNotice(
				'opensslVersionCheckUnsupportedNotice_' . $wfOpenSSLMinimumVersion,
				'opensslVersionCheck',
				sprintf(__('<strong>WARNING: </strong> Your site is using an OpenSSL version (%s) that is no longer supported by Wordfence and needs to be updated. We recommend using the newest version of OpenSSL but will currently support OpenSSL versions as old as %s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later.', 'wordfence'), self::openssl_make_text_version(), $wfOpenSSLDeprecatingVersion) . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_VERSION_OPENSSL) . '" target="_blank" rel="noopener noreferrer">' . __('Learn More', 'wordfence') . '<span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>'
			);
			
			return false;
		}
		else {
			wfAdminNoticeQueue::removeAdminNotice(false, 'opensslVersionCheck');
		}
		
		if (wfAdminNoticeQueue::hasNotice('opensslVersionCheck')) {
			return false;
		}*/
		
		//WordPress
		$wordpress = $this->checkWordPressVersion();
		if ($wordpress == self::VERSION_DEPRECATED) {
			require(ABSPATH . 'wp-includes/version.php'); /** @var string $wp_version */
			
			$this->_alertEmail(
				'wordpressVersionCheckDeprecationEmail_' . $wfWordPressDeprecatingVersion,
				__('WordPress version too old', 'wordfence'),
				sprintf(
					/* translators: 1. WordPress version. 2. WordPress version. */
					__('Your site is using a WordPress version (%1$s) that will no longer be supported by Wordfence in an upcoming release and needs to be updated. We recommend using the newest version of WordPress but will currently support WordPress versions as old as %2$s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later.', 'wordfence'),
					$wp_version,
					$wfWordPressDeprecatingVersion
				) . ' ' . sprintf(__('Learn More: %s', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_VERSION_WORDPRESS))
			);
			
			$this->_adminNotice(
				'wordpressVersionCheckDeprecationNotice_' . $wfWordPressDeprecatingVersion,
				'wordpressVersionCheck',
				wp_kses(sprintf(
					/* translators: 1. WordPress version. 2. WordPress version. */
					__('<strong>WARNING: </strong> Your site is using a WordPress version (%1$s) that will no longer be supported by Wordfence in an upcoming release and needs to be updated. We recommend using the newest version of WordPress but will currently support WordPress versions as old as %2$s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later.', 'wordfence'),
					$wp_version,
					$wfWordPressDeprecatingVersion
				), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()))) . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_VERSION_WORDPRESS) . '" target="_blank" rel="noopener noreferrer">' . esc_html__('Learn More', 'wordfence') . '<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>'
			);
		}
		else if ($wordpress == self::VERSION_UNSUPPORTED) {
			require(ABSPATH . 'wp-includes/version.php'); /** @var string $wp_version */
			
			$this->_alertEmail(
				'wordpressVersionCheckUnsupportedEmail_' . $wfWordPressMinimumVersion,
				__('WordPress version too old', 'wordfence'),
				sprintf(
					/* translators: 1. WordPress version. 2. WordPress version. */
					__('Your site is using a WordPress version (%1$s) that is no longer supported by Wordfence and needs to be updated. We recommend using the newest version of WordPress but will currently support WordPress versions as old as %2$s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later.', 'wordfence'), $wp_version, $wfWordPressDeprecatingVersion) . ' ' . sprintf(__('Learn More: %s', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_VERSION_WORDPRESS))
			);
			
			$this->_adminNotice(
				'wordpressVersionCheckUnsupportedNotice_' . $wfWordPressMinimumVersion,
				'wordpressVersionCheck',
				wp_kses(sprintf(
					/* translators: 1. WordPress version. 2. WordPress version. */
					__('<strong>WARNING: </strong> Your site is using a WordPress version (%1$s) that is no longer supported by Wordfence and needs to be updated. We recommend using the newest version of WordPress but will currently support WordPress versions as old as %2$s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later.', 'wordfence'), $wp_version, $wfWordPressDeprecatingVersion), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()))) . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_VERSION_WORDPRESS) . '" target="_blank" rel="noopener noreferrer">' . esc_html__('Learn More', 'wordfence') . '<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>'
			);
		}
		else {
			wfAdminNoticeQueue::removeAdminNotice(false, 'wordpressVersionCheck');
		}
		
		if (wfAdminNoticeQueue::hasNotice('wordpressVersionCheck')) {
			return false;
		}
		
		return true;
	}
	
	private function _alertEmail($checkKey, $title, $body) {
		if (!wfConfig::get($checkKey)) {
			wordfence::alert($title, $body, wfUtils::getIP());
			wfConfig::set($checkKey, true);
		}
	}
	
	private function _adminNotice($checkKey, $noticeKey, $message) {
		if (!wfConfig::get($checkKey)) {
			wfAdminNoticeQueue::addAdminNotice(wfAdminNotice::SEVERITY_CRITICAL, $message, $noticeKey);
			wfConfig::set($checkKey, true);
		}
	}
	
	/**
	 * Returns whether or not the PHP version meets our minimum requirement or is a version being deprecated.
	 * 
	 * @return string One of the VERSION_ constants.
	 */
	public function checkPHPVersion() {
		require(dirname(__FILE__) . '/wfVersionSupport.php');
		/**
		 * @var string $wfPHPDeprecatingVersion
		 * @var string $wfPHPMinimumVersion
		 */
		
		if (version_compare(phpversion(), $wfPHPDeprecatingVersion, '>=')) {
			return self::VERSION_COMPATIBLE;
		}
		
		if ($wfPHPDeprecatingVersion != $wfPHPMinimumVersion && version_compare(phpversion(), $wfPHPMinimumVersion, '>=')) {
			return self::VERSION_DEPRECATED;
		}
		
		return self::VERSION_UNSUPPORTED;
	}
	
	/**
	 * Returns whether or not the OpenSSL version meets our minimum requirement or is a version being deprecated.
	 *
	 * @return string One of the VERSION_ constants.
	 */
	public function checkOpenSSLVersion() {
		require(dirname(__FILE__) . '/wfVersionSupport.php');
		/**
		 * @var string $wfOpenSSLDeprecatingVersion
		 * @var string $wfOpenSSLMinimumVersion
		 */
		
		if (self::openssl_version_compare($wfOpenSSLDeprecatingVersion) <= 0) {
			return self::VERSION_COMPATIBLE;
		}
		
		if ($wfOpenSSLDeprecatingVersion != $wfOpenSSLMinimumVersion && self::openssl_version_compare($wfOpenSSLMinimumVersion) <= 0) {
			return self::VERSION_DEPRECATED;
		}
		
		return self::VERSION_UNSUPPORTED;
	}
	
	/**
	 * Returns whether or not the WordPress version meets our minimum requirement or is a version being deprecated.
	 *
	 * @return string One of the VERSION_ constants.
	 */
	public function checkWordPressVersion() {
		require(ABSPATH . 'wp-includes/version.php'); /** @var string $wp_version */
		
		require(dirname(__FILE__) . '/wfVersionSupport.php');
		/**
		 * @var string $wfWordPressDeprecatingVersion
		 * @var string $wfWordPressMinimumVersion
		 */
		
		if (version_compare($wp_version, $wfWordPressDeprecatingVersion, '>=')) {
			return self::VERSION_COMPATIBLE;
		}
		
		if ($wfWordPressDeprecatingVersion != $wfWordPressMinimumVersion && version_compare($wp_version, $wfWordPressMinimumVersion, '>=')) {
			return self::VERSION_DEPRECATED;
		}
		
		return self::VERSION_UNSUPPORTED;
	}
	
	/**
	 * Utility Functions
	 */
	
	/**
	 * Returns whether or not the OpenSSL version is before, after, or equal to the equivalent text version string.
	 *
	 * @param string $compareVersion
	 * @param int $openSSLVersion A version number in the format OpenSSL uses.
	 * @param bool $allowDevBeta If true, dev and beta versions of $compareVersion are treated as equivalent to release versions despite having a lower version number.
	 * @return bool|int Returns -1 if $compareVersion is earlier, 0 if equal, 1 if later, and false if not a valid version string.
	 */
	public static function openssl_version_compare($compareVersion, $openSSLVersion = OPENSSL_VERSION_NUMBER, $allowDevBeta = true) {
		if (preg_match('/^(\d+)\.(\d+)\.(\d+)([a-z]*)((?:-dev|-beta\d\d?)?)/i', $compareVersion, $matches)) {
			$primary = 0; $major = 0; $minor = 0; $fixLetterIndexes = 0; $patch = self::OPENSSL_RELEASE;
			if (isset($matches[1])) { $primary = (int) $matches[1]; }
			if (isset($matches[2])) { $major = (int) $matches[2]; }
			if (isset($matches[3])) { $minor = (int) $matches[3]; }
			if (isset($matches[4]) && !empty($matches[4])) {
				$letters = str_split($matches[4]);
				foreach ($letters as $l) {
					$fixLetterIndexes += strpos('abcdefghijklmnopqrstuvwxyz', strtolower($l)) + 1;
				}
			}
			if (isset($matches[5]) && !empty($matches[5])) {
				if (preg_match('/^-beta(\d+)$/i', $matches[5], $betaMatches)) {
					$patch = (int) $betaMatches[1];
				}
				else {
					$patch = self::OPENSSL_DEV;
				}
			}
			
			$compareOpenSSLVersion = self::openssl_make_number_version($primary, $major, $minor, $fixLetterIndexes, $patch);
			if ($allowDevBeta) {
				$compareOpenSSLVersion = $compareOpenSSLVersion >> 4;
				$openSSLVersion = $openSSLVersion >> 4;
			}
			
			if ($compareOpenSSLVersion < $openSSLVersion) { return -1; }
			else if ($compareOpenSSLVersion == $openSSLVersion) { return 0; }
			return 1;
		}
		
		return false;
	}
	
	/**
	 * Builds a number that can be compared to OPENSSL_VERSION_NUMBER from the parameters given. This is a modified
	 * version of the macro in the OpenSSL source.
	 *
	 * @param int $primary The '1' in 1.0.2g.
	 * @param int $major The '0' in 1.0.2g.
	 * @param int $minor The '2' in 1.0.2g.
	 * @param int $fixLetterIndexes The 'g' in 1.0.2g. This can potentially be multiple letters, in which case, all of the indexes are added.
	 * @param int $patch
	 * @return int
	 */
	public static function openssl_make_number_version($primary, $major, $minor, $fixLetterIndexes = 0, $patch = 0) {
		return ((($primary & 0xff) << 28) + (($major & 0xff) << 20) + (($minor & 0xff) << 12) + (($fixLetterIndexes & 0xff) << 4) + $patch);
	}
	
	/**
	 * Builds a text version of the OpenSSL version from a number-formatted one.
	 * 
	 * @param int $number
	 * @return string
	 */
	public static function openssl_make_text_version($number = OPENSSL_VERSION_NUMBER) {
		$primary = (($number >> 28) & 0xff);
		$major = (($number >> 20) & 0xff);
		$minor = (($number >> 12) & 0xff);
		$fix = (($number >> 4) & 0xff);
		$patch = ($number & 0xf); //0 is dev, 1-14 are betas, 15 is release
		
		$alphabet = str_split('abcdefghijklmnopqrstuvwxyz');
		$fixLetters = '';
		while ($fix > 26) {
			$fixLetters .= 'z';
			$fix -= 26;
		}
		if (array_key_exists($fix - 1, $alphabet)) {
			$fixLetters .= $alphabet[$fix - 1];
		}
		
		$version = "{$primary}.{$major}.{$minor}{$fixLetters}";
		
		if ($patch == self::OPENSSL_DEV) {
			$version .= '-dev';
		}
		else if ($patch == self::OPENSSL_RELEASE) {
			//Do nothing
		}
		else {
			$version .= '-beta' . $patch;
		}
		
		return $version;
	}
}lib/wfIPWhitelist.php000064400000003074150755146450010605 0ustar00<?php
/**
 * Addresses should be in human readable format as a single IP (e.g. 1.2.3.4) or CIDR (e.g. 1.2.3.4/32)
 */
$wfIPWhitelist = array(
	'private' => array(
		//We've modified this and removed some addresses which may be routable on the Net and cause auto-whitelisting.
		//'0.0.0.0/8',			#Broadcast addr
		'10.0.0.0/8',			#Private addrs
		//'100.64.0.0/10',		#carrier-grade-nat for comms between ISP and subscribers
		'127.0.0.0/8',			#loopback
		//'169.254.0.0/16',		#link-local when DHCP fails e.g. os x
		'172.16.0.0/12',		#private addrs
		'192.0.0.0/29',			#used for NAT with IPv6, so basically a private addr
		//'192.0.2.0/24',		#Only for use in docs and examples, not for public use
		//'192.88.99.0/24',		#Used by 6to4 anycast relays
		'192.168.0.0/16',		#Used for local communications within a private network
		//'198.18.0.0/15',		#Used for testing of inter-network communications between two separate subnets
		//'198.51.100.0/24',	#Assigned as "TEST-NET-2" in RFC 5737 for use solely in documentation and example source code and should not be used publicly.
		//'203.0.113.0/24',		#Assigned as "TEST-NET-3" in RFC 5737 for use solely in documentation and example source code and should not be used publicly.
		//'224.0.0.0/4',		#Reserved for multicast assignments as specified in RFC 5771
		//'240.0.0.0/4',		#Reserved for future use, as specified by RFC 6890
		//'255.255.255.255/32',	#Reserved for the "limited broadcast" destination address, as specified by RFC 6890
	),
	'wordfence' => array(
		'54.68.32.247', // Central @ AWS
		'44.235.211.232',
		'54.71.203.174'
	),
);
lib/compat.php000064400000000651150755146450007324 0ustar00<?php if (!defined('WORDFENCE_VERSION')) { exit; }

if (!function_exists('str_getcsv')) {

	function str_getcsv($input, $delimiter = ',', $enclosure = '"', $escape = null, $eol = null) {
		$temp = fopen("php://memory", "rw");
		fwrite($temp, $input);
		fseek($temp, 0);
		$r = array();
		while (($data = fgetcsv($temp, 0, $delimiter, $enclosure, $escape)) !== false) {
			$r[] = $data;
		}
		fclose($temp);
		return $r;
	}

}lib/wfCache.php000064400000014026150755146450007402 0ustar00<?php
class wfCache {
	private static $cacheStats = array();
	private static $cacheClearedThisRequest = false;
	private static $lastRecursiveDeleteError = false;
	
	public static function removeCaching() {
		$cacheType = wfConfig::get('cacheType', false);
		if ($cacheType === 'disabled') {
			return;
		}
		
		if ($cacheType == 'falcon') {
			self::addHtaccessCode('remove');
			self::updateBlockedIPs('remove');
		}
		
		wfConfig::set('cacheType', 'disabled');
		
		$cacheDir = WP_CONTENT_DIR . '/wfcache/';
		if (file_exists($cacheDir . '.htaccess')) {
			unlink($cacheDir . '.htaccess');
		}
		
		self::clearPageCacheSafe();
	}
	public static function clearPageCacheSafe(){
		if(self::$cacheClearedThisRequest){ return; }
		self::$cacheClearedThisRequest = true;
		self::clearPageCache();
	}
	public static function clearPageCache(){ //If a clear is in progress this does nothing. 
		self::$cacheStats = array(
			'dirsDeleted' => 0,
			'filesDeleted' => 0,
			'totalData' => 0,
			'totalErrors' => 0,
			'error' => '',
			);
		
		$cacheDir = WP_CONTENT_DIR . '/wfcache/';
		if (!file_exists($cacheDir)) {
			return self::$cacheStats;
		}
		
		$cacheClearLock = WP_CONTENT_DIR . '/wfcache/clear.lock';
		if(! is_file($cacheClearLock)){
			if(! touch($cacheClearLock)){
				self::$cacheStats['error'] = "Could not create a lock file $cacheClearLock to clear the cache.";
				self::$cacheStats['totalErrors']++;
				return self::$cacheStats;
			}
		}
		$fp = fopen($cacheClearLock, 'w');
		if(! $fp){ 
			self::$cacheStats['error'] = "Could not open the lock file $cacheClearLock to clear the cache. Please make sure the directory is writable by your web server.";
			self::$cacheStats['totalErrors']++;
			return self::$cacheStats;
		}
		if(flock($fp, LOCK_EX | LOCK_NB)){ //non blocking exclusive flock attempt. If we get a lock then it continues and returns true. If we don't lock, then return false, don't block and don't clear the cache. 
					// This logic means that if a cache clear is currently in progress we don't try to clear the cache.
					// This prevents web server children from being queued up waiting to be able to also clear the cache. 
			self::$lastRecursiveDeleteError = false;
			self::recursiveDelete(WP_CONTENT_DIR . '/wfcache/');
			if(self::$lastRecursiveDeleteError){
				self::$cacheStats['error'] = self::$lastRecursiveDeleteError;
				self::$cacheStats['totalErrors']++;
			}
			flock($fp, LOCK_UN);
			@unlink($cacheClearLock);
			@rmdir($cacheDir);
		}
		fclose($fp);

		return self::$cacheStats;
	}
	private static function recursiveDelete($dir) {
		$files = array_diff(scandir($dir), array('.','..')); 
		foreach ($files as $file) { 
			if(is_dir($dir . '/' . $file)){
				if(! self::recursiveDelete($dir . '/' . $file)){
					return false;
				}
			} else {
				if($file == 'clear.lock'){ continue; } //Don't delete our lock file
				$size = filesize($dir . '/' . $file);
				if($size){
					self::$cacheStats['totalData'] += round($size / 1024);
				}
				if(strpos($dir, 'wfcache/') === false){
					self::$lastRecursiveDeleteError = "Not deleting file in directory $dir because it appears to be in the wrong path.";
					self::$cacheStats['totalErrors']++;
					return false; //Safety check that we're in a subdir of the cache
				}
				if(@unlink($dir . '/' . $file)){
					self::$cacheStats['filesDeleted']++;
				} else {
					self::$lastRecursiveDeleteError = "Could not delete file " . $dir . "/" . $file . " : " . wfUtils::getLastError();
					self::$cacheStats['totalErrors']++;
					return false;
				}
			}
		} 
		if($dir != WP_CONTENT_DIR . '/wfcache/'){
			if(strpos($dir, 'wfcache/') === false){
				self::$lastRecursiveDeleteError = "Not deleting directory $dir because it appears to be in the wrong path.";
				self::$cacheStats['totalErrors']++;
				return false; //Safety check that we're in a subdir of the cache
			}
			if(@rmdir($dir)){
				self::$cacheStats['dirsDeleted']++;
			} else {
				self::$lastRecursiveDeleteError = "Could not delete directory $dir : " . wfUtils::getLastError();
				self::$cacheStats['totalErrors']++;
				return false;
			}
			return true;
		} else {
			return true;
		}
	}
	public static function addHtaccessCode($action){
		if($action != 'remove'){
			die("Error: addHtaccessCode must be called with 'remove' as param");
		}
		$htaccessPath = self::getHtaccessPath();
		if(! $htaccessPath){
			return "Wordfence could not find your .htaccess file.";
		}
		$fh = @fopen($htaccessPath, 'r+');
		if(! $fh){
			$err = error_get_last();
			return $err['message'];
		}
		flock($fh, LOCK_EX);
		fseek($fh, 0, SEEK_SET); //start of file
		clearstatcache();
		$contents = fread($fh, filesize($htaccessPath));
		if(! $contents){
			fclose($fh);
			return "Could not read from $htaccessPath";
		}
		$contents = preg_replace('/#WFCACHECODE.*WFCACHECODE[\r\s\n\t]*/s', '', $contents);
		ftruncate($fh, 0);
		fflush($fh);
		fseek($fh, 0, SEEK_SET);
		fwrite($fh, $contents);
		flock($fh, LOCK_UN);
		fclose($fh);
		return false;
	}

	/**
	 * @param $action
	 * @return bool|string|void
	 */
	public static function updateBlockedIPs($action){ //'add' or 'remove'
		$htaccessPath = self::getHtaccessPath();
		if(! $htaccessPath){
			return "Wordfence could not find your .htaccess file.";
		}
		if($action == 'remove'){
			$fh = @fopen($htaccessPath, 'r+');
			if(! $fh){
				$err = error_get_last();
				return $err['message'];
			}
			flock($fh, LOCK_EX);
			fseek($fh, 0, SEEK_SET); //start of file
			clearstatcache();
			$contents = @fread($fh, filesize($htaccessPath));
			if(! $contents){
				fclose($fh);
				return "Could not read from $htaccessPath";
			}

			$contents = preg_replace('/#WFIPBLOCKS.*WFIPBLOCKS[\r\s\n\t]*/s', '', $contents);

			ftruncate($fh, 0);
			fflush($fh);
			fseek($fh, 0, SEEK_SET);
			@fwrite($fh, $contents);
			flock($fh, LOCK_UN);
			fclose($fh);
			return false;
		}
		return false;
	}
	public static function getHtaccessPath(){

		$homePath = wfUtils::getHomePath();
		$htaccessFile = $homePath.'.htaccess';
		return $htaccessFile;
	}
	public static function doNotCache(){
		if(! defined('WFDONOTCACHE')){
			define('WFDONOTCACHE', true);
		}
	}
}lib/wfScanEntrypoint.php000064400000002056150755146450011357 0ustar00<?php

class wfScanEntrypoint {

	private $file;
	private $included;

	public function __construct($file, $included = false) {
		$this->file = $file;
		$this->included = $included;
	}

	public function getKey() {
		return $this->file->getRealPath();
	}

	public function setIncluded($included = true) {
		$this->included = $included;
		return $this;
	}

	public function isIncluded() {
		return $this->included;
	}

	public function getFile() {
		return $this->file;
	}

	public function addTo(&$entrypoints) {
		$key = $this->getKey();
		if (array_key_exists($key, $entrypoints)) {
			if ($this->isIncluded())
				$entrypoints[$key]->setIncluded();
		}
		else {
			$entrypoints[$key] = $this;
		}
	}

	public static function getScannedSkippedFiles($entrypoints) {
		$scanned = array();
		$skipped = array();
		foreach ($entrypoints as $entrypoint) {
			if ($entrypoint->isIncluded()) {
				$scanned[] = $entrypoint->getFile();
			}
			else {
				$skipped[] = $entrypoint->getFile();
			}
		}
		return array(
			'scanned' => $scanned,
			'skipped' => $skipped
		);
	}

}lib/menu_wordfence_central.php000064400000023241150755146450012551 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) {
	exit;
}
/**
 * @var string $subpage
 */

$stepContent = array(
	1 => __('Testing initial communication with Wordfence Central.', 'wordfence'),
	2 => __('Passing public key to Wordfence Central.', 'wordfence'),
	3 => __('Testing public key authentication with Wordfence Central.', 'wordfence'),
	4 => __('Testing that Wordfence Central is able to communicate with this site.', 'wordfence'),
	5 => __('Retrieving access token using authorization grant.', 'wordfence'),
	6 => __('Redirecting back to Wordfence Central.', 'wordfence'),
);
$connected = wfCentral::isConnected();
$partialConnection = wfCentral::isPartialConnection();

?>
<?php
if (!wfOnboardingController::shouldShowAttempt3() && wfConfig::get('touppPromptNeeded')) {
	echo wfView::create('gdpr/disabled-overlay')->render();
	echo wfView::create('gdpr/banner')->render();
}

if (function_exists('network_admin_url') && is_multisite()) {
	$wordfenceURL = network_admin_url('admin.php?page=Wordfence');
}
else {
	$wordfenceURL = admin_url('admin.php?page=Wordfence');
}
?>
<div class="wrap wordfence">
	<div class="wf-container-fluid">
		<div class="wf-row">
			<div class="wf-col-xs-12">
				<div class="wp-header-end"></div>
				<?php
				echo wfView::create('common/section-title', array(
					'title'    => __('Wordfence Central', 'wordfence'),
					'showIcon' => true,
				))->render();
				?>
			</div>

			<?php if ($connected): ?>
				<div class="wf-col-xs-12 wf-central-connected">
					<div class="wf-flex-row wf-flex-grow-all">
						<div class="wf-flex-row-1 wf-block wf-active">
							<div class="wf-central-dashboard">
								<img class="wf-central-dashboard-logo" src="<?php echo wfUtils::getBaseURL() ?>images/wf-central-logo.svg" alt="Wordfence Central">
								<div class="wf-central-dashboard-copy">
									<p><strong><?php esc_html_e('Wordfence Central', 'wordfence') ?></strong></p>
									<p><?php esc_html_e('Wordfence Central allows you to manage Wordfence on multiple sites from one location. It makes security monitoring and configuring Wordfence easier.', 'wordfence') ?></p>
									<p class="wf-right-lg"><a href="https://www.wordfence.com/central" target="_blank" rel="noopener noreferrer"><strong><?php esc_html_e('Visit Wordfence Central', 'wordfence') ?></strong><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></p>
								</div>
							</div>
						</div>
						<div class="wf-flex-row-1 wf-block wf-active">
							<p><strong><?php esc_html_e('Wordfence Central Status', 'wordfence') ?></strong></p>
							<p><?php echo esc_html(sprintf(
									/* translators: 1. Email address. 2. Localized date. */
									__('Activated - connected by %1$s on %2$s', 'wordfence'), wfConfig::get('wordfenceCentralConnectEmail'), date_i18n('F j, Y', (int) wfConfig::get('wordfenceCentralConnectTime')))) ?></p>
							<p class="wf-right-lg"><a href="<?php echo esc_url($wordfenceURL); ?>"><strong><?php esc_html_e('Disconnect This Site', 'wordfence') ?></strong></a></p>
						</div>
					</div>
				</div>
			<?php elseif (isset($_GET['grant'])): ?>
				<div class="wf-col-xs-12">
					<div class="wf-block wf-active">
						<div class="wf-block-header">
							<div class="wf-block-header-content">
								<strong><?php esc_html_e('Wordfence Central Installation Process', 'wordfence') ?></strong>
							</div>
						</div>
						<div class="wf-block-content">
							<ul class="wf-block-list" id="wf-central-progress">
								<?php for ($i = 1; $i <= 6; $i++): ?>
									<li id="wf-central-progress-step<?php echo $i ?>" class="pending">
										<div class="wf-central-progress-icon">
											<div class="wf-step-pending"></div>
											<div class="wf-step-running">
												<?php
												echo wfView::create('common/indeterminate-progress', array(
													'size' => 50,
												))->render();
												?>
											</div>
											<div class="wf-step-complete-success"></div>
											<div class="wf-step-complete-warning"></div>
										</div>
										<div class="wf-central-progress-content">
											<p><?php echo esc_html($stepContent[$i]) ?></p>
										</div>
									</li>
								<?php endfor ?>
							</ul>
						</div>
					</div>
				</div>
			<?php elseif ($partialConnection): ?>
				<div class="wf-center-lg">
					<p><?php esc_html_e('It looks like you\'ve tried to connect this site to Wordfence Central, but the installation did not finish.', 'wordfence') ?></p>
					<p>
						<a href="<?php echo WORDFENCE_CENTRAL_URL_SEC ?>/sites/connection-issues?complete-setup=<?php echo esc_attr(wfConfig::get('wordfenceCentralSiteID')) ?>"
								class="wf-btn wf-btn-primary"
						><?php esc_html_e('Resume Installation', 'wordfence') ?></a>
						<a href="<?php echo esc_url($wordfenceURL); ?>" class="wf-btn wf-btn-warning"><?php esc_html_e('Disconnect Site', 'wordfence') ?></a>
					</p>
				</div>
			<?php else: ?>
				<div class="wf-center-lg">
					<p><?php esc_html_e('Wordfence Central allows you to manage Wordfence on multiple sites from one location. It makes security monitoring and configuring Wordfence easier.', 'wordfence') ?></p>
					<p><?php esc_html_e('To connect your site your site to Wordfence Central, use the link below:', 'wordfence') ?></p>
					<p class="wf-center">
						<a href="<?php echo WORDFENCE_CENTRAL_URL_SEC ?>?newsite=<?php echo esc_attr(home_url()) ?>" class="wf-btn wf-btn-primary"><?php esc_html_e('Connect Site', 'wordfence') ?></a>
					</p>
				</div>
			<?php endif ?>
		</div>
	</div>
</div>

<script>
	(function($) {
		var authGrant = '<?php echo esc_js(isset($_GET['grant']) ? $_GET['grant'] : '') ?>';
		var currentStep = <?php echo json_encode(wfConfig::getInt('wordfenceCentralCurrentStep', 1)) ?>;
		var connected = <?php echo json_encode($connected) ?>;

		function wfConnectError(error) {
			WFAD.colorboxError(error);
		}

		function wfCentralStepAjax(step, action, data, cb, cbErr, noLoading) {
			var el = $('#wf-central-progress-' + step);
			el.removeClass('pending')
			.addClass('running');

			WFAD.ajax(action, data, function(response) {
				if (response && response.success) {
					el.removeClass('running')
					.addClass('complete-success');
					cb && cb(response);
				} else if (response && response.err) {
					el.removeClass('running')
					.addClass('complete-warning');
				}
			}, function(response) {
				el.removeClass('running')
				.addClass('complete-warning');
				cbErr && cbErr(response);
			}, noLoading);
		}

		var WFCentralInstaller = {};
		window.WFCentralInstaller = WFCentralInstaller;

		// Step 1: Makes GET request to `/central/api/site/access-token` endpoint authenticated with the auth grant supplied by the user.
		// - Receives site GUID, public key, short lived JWT.

		WFCentralInstaller.step1 = function() {
			wfCentralStepAjax('step1', 'wordfence_wfcentral_step1', {
				'auth-grant': authGrant
			}, function(response) {
				$(window).trigger('step2', response);
			}, wfConnectError);
		};

		// Step 2: Makes PATCH request to `/central/api/wf/site/<guid>` endpoint passing in the new public key.
		// Uses JWT from auth grant endpoint as auth.
		WFCentralInstaller.step2 = function() {
			wfCentralStepAjax('step2', 'wordfence_wfcentral_step2', {}, function(response) {
				$(window).trigger('step3', response);
			}, wfConnectError);
		};

		$(window).on('step2', WFCentralInstaller.step2);

		// Step 3: Makes GET request to `/central/api/wf/site/<guid>` endpoint signed using Wordfence plugin private key.
		// - Expects 200 response with site data.
		WFCentralInstaller.step3 = function() {
			wfCentralStepAjax('step3', 'wordfence_wfcentral_step3', {}, function(response) {
				var callback = function() {
					$(window).trigger('step4')
				};
				var interval = setInterval(callback, 4000);
				$(window).on('step3-clearInterval', function() {
					clearInterval(interval);
				});
				callback();
			}, wfConnectError);
		};

		$(window).on('step3', WFCentralInstaller.step3);

		// Step 4: Poll for PUT request at `/wp-json/wp/v2/wordfence-auth-grant/` endpoint signed using Wordfence Central private key with short lived JWT.
		// - Expects verifiable signature of incoming request from Wordfence Central.
		// - Stores auth grant JWT.
		WFCentralInstaller.step4 = function() {
			wfCentralStepAjax('step4', 'wordfence_wfcentral_step4', {}, function(response) {
				if (response && response.success) {
					$(window).trigger('step3-clearInterval');
					$(window).trigger('step5');
				}
			}, wfConnectError);
		};

		$(window).on('step4', WFCentralInstaller.step4);

		// Step 5: Makes GET request to `/central/api/site/<guid>/access-token` endpoint signed using Wordfence plugin private key with auth grant JWT.
		// - Expects 200 response with access token.
		WFCentralInstaller.step5 = function() {
			wfCentralStepAjax('step5', 'wordfence_wfcentral_step5', {
				'auth-grant': authGrant
			}, function(response) {
				$(window).trigger('step6', response);
			}, wfConnectError);
		};

		$(window).on('step5', WFCentralInstaller.step5);

		// Step 6: Installation complete. Redirect user back to Wordfence Central with access token.
		WFCentralInstaller.step6 = function(response) {
			wfCentralStepAjax('step6', 'wordfence_wfcentral_step6', {}, function(response) {
				document.location.href = response['redirect-url'];
			}, wfConnectError);
		};

		$(window).on('step6', WFCentralInstaller.step6);

		var self = this;

		$(function() {
//			if (!authGrant) {
//				wfConnectError('Auth grant not found.');
//				return;
//			}

			if (!connected && authGrant) {
				for (var i = 0; i < currentStep; i++) {
					var el = $('#wf-central-progress-step' + i);
					el.removeClass('pending')
					.addClass('complete-success');
				}

				WFCentralInstaller['step' + currentStep]();
			}
		});

	})(jQuery);
</script>lib/menu_tools_livetraffic.php000064400000116675150755146450012621 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
$w = new wfConfig();
?>
<script type="application/javascript">
	(function($) {
		$(function() {
			document.title = "<?php esc_attr_e('Live Traffic', 'wordfence'); ?>" + " \u2039 " + WFAD.basePageName;

			//Hash-based option block linking
			if (window.location.hash) {
				var hashes = WFAD.parseHashes();
				var hash = hashes[hashes.length - 1];
				var block = $('.wf-block[data-persistence-key="' + hash + '"]');
				if (block.length) {
					if (!block.hasClass('wf-active')) {
						block.find('.wf-block-content').slideDown({
							always: function() {
								block.addClass('wf-active');
								$('html, body').animate({
									scrollTop: block.offset().top - 100
								}, 1000);
							}
						});

						WFAD.ajax('wordfence_saveDisclosureState', {name: block.data('persistenceKey'), state: true}, function() {});
					}
					else {
						$('html, body').animate({
							scrollTop: block.offset().top - 100
						}, 1000);
					}

					history.replaceState('', document.title, window.location.pathname + window.location.search);
				}
			}
		});
	})(jQuery);
</script>
<div class="wf-section-title">
	<h2><?php esc_html_e('Live Traffic', 'wordfence') ?></h2>
	<span><?php echo wp_kses(sprintf(
		/* translators: URL to support page. */
			__('<a href="%s" target="_blank" rel="noopener noreferrer" class="wf-help-link">Learn more<span class="wf-hidden-xs"> about Live Traffic</span><span class="screen-reader-text"> (opens in new tab)</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_TOOLS_LIVE_TRAFFIC)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array(), 'class'=>array()), 'span'=>array('class'=>array()))); ?>
		<i class="wf-fa wf-fa-external-link" aria-hidden="true"></i></span>
</div>

<?php if (wfConfig::liveTrafficEnabled() && wfConfig::get('liveActivityPauseEnabled')): ?>
	<div id="wfLiveTrafficOverlayAnchor"></div>
	<div id="wfLiveTrafficDisabledMessage">
		<h2><?php esc_html_e('Live Updates Paused', 'wordfence') ?><br/>
			<small><?php esc_html_e('Click inside window to resume', 'wordfence') ?></small>
		</h2>
	</div>
<?php endif ?>

<p><?php esc_html_e("Wordfence Live Traffic shows you what is happening on your site in real-time, including user logins, hack attempts, and requests that were blocked by the Wordfence Firewall. You can choose to log security-related traffic only or all traffic. Traffic is logged directly on the server, which means it includes visits that don't execute JavaScript. Google and other JavaScript-based analytics packages typically only show visits from browsers that are operated by a human, while Live Traffic can show visits from crawlers like Google and Bing.", 'wordfence') ?></p>

<div class="wordfenceModeElem" id="wordfenceMode_liveTraffic"></div>

<?php
echo wfView::create('tools/options-group-live-traffic', array(
	'stateKey' => 'live-traffic-options',
	'showControls' => true,
))->render();
?>

<?php
$overridden = false;
if (!wfConfig::liveTrafficEnabled($overridden)):
	?>
	<div id="wordfenceLiveActivitySecurityOnly"><p>
			<strong><?php esc_html_e('Traffic logging mode: Security-related traffic only', 'wordfence') ?><?php
				if ($overridden) {
					echo wp_kses(sprintf(
					/* translators: URL to support page. */
							__(' (host setting <a href="%s" class="wfhelp" target="_blank" rel="noopener noreferrer"><span class="screen-reader-text"> (opens in new tab)</span></a>)', 'wordfence'), wfSupportController::supportURL(wfSupportController::ITEM_TOOLS_LIVE_TRAFFIC_OPTION_ENABLE)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array(), 'class'=>array()), 'span'=>array('class'=>array())));
				} ?>.</strong> <?php esc_html_e('Login and firewall activity will appear below.', 'wordfence') ?></p>
	</div>
<?php else: ?>
	<div id="wordfenceLiveActivityAll"><p>
			<strong><?php esc_html_e('Traffic logging mode: All traffic', 'wordfence') ?><?php
				if ($overridden) {
					echo wp_kses(sprintf(
					/* translators: URL to support page. */
							__(' (host setting <a href="%s" class="wfhelp" target="_blank" rel="noopener noreferrer"><span class="screen-reader-text"> (opens in new tab)</span></a>)', 'wordfence'), wfSupportController::supportURL(wfSupportController::ITEM_TOOLS_LIVE_TRAFFIC_OPTION_ENABLE)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array(), 'class'=>array()), 'span'=>array('class'=>array())));
				} ?>.</strong> <?php esc_html_e('Regular traffic and security-related traffic will appear below.', 'wordfence') ?></p>
	</div>
<?php endif; ?>

<div id="wf-live-traffic" class="wf-row<?php echo wfConfig::get('liveTraf_displayExpandedRecords') ? ' wf-live-traffic-display-expanded' : '' ?>">
	<div class="wf-col-xs-12">
		<div class="wf-block wf-active">
			<div class="wf-block-content">
				<div class="wf-container-fluid">
					<div class="wf-row">
						<div class="<?php echo wfStyle::contentClasses(); ?>">
							<div id="wf-live-traffic-legend">
								<ul>
									<li class="wfHuman"><?php esc_html_e('Human', 'wordfence') ?></li>
									<li class="wfBot"><?php esc_html_e('Bot', 'wordfence') ?></li>
									<li class="wfNotice"><?php esc_html_e('Warning', 'wordfence') ?></li>
									<li class="wfBlocked"><?php esc_html_e('Blocked', 'wordfence') ?></li>
								</ul>
							</div>
							<div class="wf-row wf-add-bottom-small">
								<div class="wf-col-xs-12" id="wf-live-traffic-legend-wrapper">

									<form data-bind="submit: reloadListings">

										<ul class="wf-live-traffic-controls">
											<li class="wf-live-traffic-filter">
												<div class="wf-padding-no-left"><select id="wf-lt-preset-filters" data-bind="options: presetFiltersOptions, optionsText: presetFiltersOptionsText, value: selectedPresetFilter"></select></div>
												&nbsp;&nbsp;
												<input id="wf-live-traffic-filter-show-advanced" class="wf-option-checkbox" data-bind="checked: showAdvancedFilters" type="checkbox">
												<label for="wf-live-traffic-filter-show-advanced">
													<?php esc_html_e('Show Advanced Filters', 'wordfence') ?>
												</label>
											</li>
											<li class="wf-live-traffic-show-expanded">
												<ul class="wf-option wf-option-toggled-boolean-switch wf-option-no-spacing" data-option="liveTraf_displayExpandedRecords" data-enabled-value="1" data-disabled-value="0" data-original-value="<?php echo wfConfig::get('liveTraf_displayExpandedRecords') ? 1 : 0; ?>">
													<li class="wf-boolean-switch<?php echo wfConfig::get('liveTraf_displayExpandedRecords') ? ' wf-active' : ''; ?>"><a href="#" class="wf-boolean-switch-handle"></a></li>
													<li class="wf-option-title wf-padding-add-left wf-no-right wf-padding-no-right">
														<?php esc_html_e('Expand All Results', 'wordfence'); ?>
													</li>
												</ul>
											</li>
										</ul>

										<div data-bind="visible: showAdvancedFilters" id="wf-lt-advanced-filters">
											<div class="wf-live-traffic-filter-detail">
												<div>
													<div data-bind="foreach: filters">
														<div class="wf-live-traffic-filter-item">
															<div class="wf-live-traffic-filter-item-parameters">
																<div>
																	<select name="param[]" class="wf-lt-advanced-filters-param" data-bind="options: filterParamOptions, optionsText: filterParamOptionsText, value: selectedFilterParamOptionValue, optionsCaption: 'Filter...'"></select>
																</div>
																<div data-bind="visible: selectedFilterParamOptionValue() && selectedFilterParamOptionValue().type() != 'bool'">
																	<select name="operator[]" class="wf-lt-advanced-filters-operator" data-bind="options: filterOperatorOptions, optionsText: filterOperatorOptionsText, value: selectedFilterOperatorOptionValue"></select>
																</div>
																<div data-bind="attr: {colSpan: (selectedFilterParamOptionValue() && selectedFilterParamOptionValue().type() == 'bool' ? 2 : 1)}" class="wf-lt-advanced-filters-value-cell">
																	<span data-bind="if: selectedFilterParamOptionValue() && selectedFilterParamOptionValue().type() == 'enum'">
																		<select data-bind="options: selectedFilterParamOptionValue().values, optionsText: selectedFilterParamOptionValue().optionsText, value: value"></select>
																	</span>

																	<span data-bind="if: selectedFilterParamOptionValue() && selectedFilterParamOptionValue().type() == 'text'">
																		<input data-bind="value: value" type="text">
																	</span>

																	<span data-bind="if: selectedFilterParamOptionValue() && selectedFilterParamOptionValue().type() == 'bool'">
																		<label><?php esc_html_e('Yes', 'wordfence') ?> <input data-bind="checked: value" type="radio" value="1"></label>
																		<label><?php esc_html_e('No', 'wordfence') ?> <input data-bind="checked: value" type="radio" value="0"></label>
																	</span>
																</div>
															</div>
															<div>
																<!--<button data-bind="click: $root.removeFilter" type="button" class="wf-btn wf-btn-default">Remove</button> -->
																<a href="#" data-bind="click: $root.removeFilter" class="wf-live-traffic-filter-remove" role="button"><i class="wf-ion-trash-a"></i></a>
															</div>
														</div>
													</div>
													<div>
														<div class="wf-pad-small">
															<button type="button" class="wf-btn wf-btn-default" data-bind="click: addFilter">
																<?php esc_html_e('Add Filter', 'wordfence') ?>
															</button>
														</div>
													</div>
												</div>
												<div class="wf-form wf-form-horizontal">
													<div class="wf-form-group">
														<label for="wf-live-traffic-from" class="wf-col-sm-2"><?php esc_html_e('From:', 'wordfence') ?>&nbsp;</label>
														<div class="wf-col-sm-10">
															<input placeholder="Start date" id="wf-live-traffic-from" type="text" class="wf-datetime" data-bind="value: startDate, datetimepicker: null, datepickerOptions: { timeFormat: 'hh:mm tt z' }">
															<button data-bind="click: startDate('')" class="wf-btn wf-btn-default wf-btn-sm" type="button"><?php esc_html_e('Clear', 'wordfence') ?></button>
														</div>
													</div>
													<div class="wf-form-group">
														<label for="wf-live-traffic-to" class="wf-col-sm-2"><?php esc_html_e('To:', 'wordfence')?>&nbsp;</label>
														<div class="wf-col-sm-10">
															<input placeholder="End date" id="wf-live-traffic-to" type="text" class="wf-datetime" data-bind="value: endDate, datetimepicker: null, datepickerOptions: { timeFormat: 'hh:mm tt z' }">
															<button data-bind="click: endDate('')" class="wf-btn wf-btn-default wf-btn-sm" type="button"><?php esc_html_e('Clear', 'wordfence') ?></button>
														</div>
													</div>
													<div class="wf-form-group">
														<label for="wf-live-traffic-group-by" class="wf-col-sm-2"><?php esc_html_e('Group By:', 'wordfence') ?>&nbsp;</label>
														<div class="wf-col-sm-10">
															<select id="wf-live-traffic-group-by" name="groupby" class="wf-lt-advanced-filters-groupby" data-bind="options: filterGroupByOptions, optionsText: filterGroupByOptionsText, value: groupBy, optionsCaption: 'None'"></select>
														</div>
													</div>
												</div>
											</div>
										</div>
									</form>
								</div>
							</div>
							<div class="wf-row">
								<div class="wf-col-xs-12">
									<div id="wf-live-traffic-group-by" class="wf-block" data-bind="if: groupBy(), visible: groupBy()">
										<ul class="wf-filtered-traffic wf-block-list" data-bind="foreach: listings">
											<li class="wf-flex-row wf-padding-add-top wf-padding-add-bottom">
												<div class="wf-flex-row-1">
													<!-- ko if: $root.groupBy().param() == 'ip' -->
													<div data-bind="if: loc()">
														<span data-bind="attr: { class: 'wf-flag wf-flag-' + loc().countryCode.toLowerCase(), title: loc().countryName }"></span>
														<a data-bind="text: (loc().city ? loc().city + ', ' : '') + (loc().region ? loc().region + ', ' : '') + loc().countryName,
																	attr: { href: 'http://maps.google.com/maps?q=' + loc().lat + ',' + loc().lon + '&z=6' }"
																target="_blank" rel="noopener noreferrer"><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>
													</div>
													<div data-bind="if: !loc()">
														<?php esc_html_e('An unknown location at IP', 'wordfence') ?>
														<span data-bind="text: IP" target="_blank" rel="noopener noreferrer"></span>
													</div>

													<div>
														<strong><?php esc_html_e('IP:', 'wordfence') ?></strong>
														<span data-bind="text: IP" target="_blank" rel="noopener noreferrer"></span>
													</div>
													<div>
														<span class="wfReverseLookup"><span data-bind="text: IP" style="display:none;"></span></span>
													</div>
													<!-- /ko -->
													<!-- ko if: $root.groupBy().param() == 'type' -->
													<div>
														<strong><?php esc_html_e('Type:', 'wordfence') ?></strong>
														<span data-bind="if: jsRun() == '1'"><?php esc_html_e('Human', 'wordfence') ?></span>
														<span data-bind="if: jsRun() == '0'"><?php esc_html_e('Bot', 'wordfence') ?></span>
													</div>
													<!-- /ko -->
													<!-- ko if: $root.groupBy().param() == 'user_login' -->
													<div>
														<strong><?php esc_html_e('Username:', 'wordfence') ?></strong>
														<span data-bind="text: username()"></span>
													</div>
													<!-- /ko -->
													<!-- ko if: $root.groupBy().param() == 'statusCode' -->
													<div>
														<strong><?php esc_html_e('HTTP Response Code:', 'wordfence') ?></strong>
														<span data-bind="text: statusCode()"></span>
													</div>
													<!-- /ko -->
													<!-- ko if: $root.groupBy().param() == 'action' -->
													<div>
														<strong><?php esc_html_e('Firewall Response:', 'wordfence') ?></strong>
														<span data-bind="text: firewallAction()"></span>
													</div>
													<!-- /ko -->
													<!-- ko if: $root.groupBy().param() == 'url' -->
													<div>
														<strong><?php esc_html_e('URL:', 'wordfence') ?></strong>
														<span data-bind="text: displayURL()"></span>
													</div>
													<!-- /ko -->
													<div>
														<strong><?php esc_html_e('Last Hit:', 'wordfence') ?></strong> <span
																data-bind="attr: { 'data-timestamp': ctime, text: <?php echo esc_attr(sprintf(json_encode(/* translators: Time ago. */ __('Last hit was %s ago.', 'wordfence')), '"+ ctime() + "')) ?> }"
																class="wfTimeAgo wfTimeAgo-timestamp"></span>
													</div>
													<!-- ko if: $root.groupBy().param() == 'ip' -->
													<div class="wf-add-top-small">
														<span data-bind="if: blocked()">
															<a class="wf-btn wf-btn-default wf-btn-sm" data-bind="click: unblockIP"><?php esc_html_e('Unblock IP', 'wordfence') ?></a>
														</span>
														<span data-bind="if: rangeBlocked()">
															<a class="wf-btn wf-btn-default wf-btn-sm" data-bind="click: unblockNetwork"><?php esc_html_e('Unblock range', 'wordfence') ?></a>
														</span>
														<span data-bind="if: !blocked() && !rangeBlocked()">
															<a class="wf-btn wf-btn-default wf-btn-sm" data-bind="click: blockIP"><?php esc_html_e('Block IP', 'wordfence') ?></a>
														</span>
													</div>
													<!-- /ko -->
												</div>
												<div class="wf-flex-row-0 wf-padding-add-left">
													<?php echo sprintf(/* translators: Number of HTTP requests. */ esc_html__('%s hits', 'wordfence'), '<span class="wf-filtered-traffic-hits" data-bind="text: hitCount"></span>') ?>
												</div>
											</li>

										</ul>
									</div>

									<div id="wf-live-traffic-no-group-by" data-bind="if: !groupBy()">
										<table class="wf-striped-table">
											<thead>
											<tr>
												<th><?php esc_html_e('Type', 'wordfence') ?></th>
												<th><?php esc_html_e('Location', 'wordfence') ?></th>
												<th><?php esc_html_e('Page Visited', 'wordfence') ?></th>
												<th><?php esc_html_e('Time', 'wordfence') ?></th>
												<th><?php esc_html_e('IP Address', 'wordfence') ?></th>
												<th><?php esc_html_e('Hostname', 'wordfence') ?></th>
												<th><?php esc_html_e('Response', 'wordfence') ?></th>
												<th><?php esc_html_e('View', 'wordfence') ?></th>
											</tr>
											</thead>
											<tbody id="wf-lt-listings" class="wf-filtered-traffic" data-bind="foreach: listings">
											<tr data-bind="click: toggleDetails, css: { odd: ($index() % 2 == 1), even: ($index() % 2 == 0), 'wf-details-open': showDetails, highlighted: highlighted }" class="wf-summary-row">
												<td class="wf-center">
													<span data-bind="attr: { 'class': cssClasses }"></span>
												</td>
												<td>
													<span class="wf-flex-horizontal" data-bind="if: loc()">
														<span data-bind="attr: { class: 'wf-flag wf-flag-' + loc().countryCode.toLowerCase(), title: loc().countryName }"></span>
														<span class="wf-padding-add-left-small" data-bind="text: (loc().city ? loc().city + ', ' : '') + (loc().region ? loc().region + ', ' : '') + loc().countryName"></span>
													</span>
													<span class="wf-flex-horizontal" data-bind="if: !loc()">
														<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 64.22 64.37" class="wf-flag wf-flag-unspecified"><path d="M64,28.21a30.32,30.32,0,0,0-5.8-14.73A31.6,31.6,0,0,0,37.43.56C35.7.26,33.94.18,32.2,0h-.35C30.22.18,28.58.3,27,.55A32.14,32.14,0,0,0,.2,35.61,31.4,31.4,0,0,0,10.4,55.87a31.24,31.24,0,0,0,25,8.33,30.5,30.5,0,0,0,18.94-8.79C62,47.94,65.15,38.8,64,28.21ZM57.21,44.68a23.94,23.94,0,0,1-2.3-5.08c-.66-2.45-2.27-.08-2.4,1.52s-1.2,2.8-3.33.4-2.54-1.87-3.2-1.87-1.87,1.6-1.6,9.07c.19,5.33,2.29,6.18,3.67,6.56a27.16,27.16,0,0,1-8.78,4A27.55,27.55,0,0,1,7.85,45.13C2.27,34.4,5,22.26,10.67,15.57c.15,1.21.3,2.29.43,3.37a27.63,27.63,0,0,1-.52,8.79,4.39,4.39,0,0,0,.08,1.94,1.3,1.3,0,0,0,.94.76c.27,0,.75-.41.86-.73a8.27,8.27,0,0,0,.27-1.86c0-.44,0-.89.07-1.58a10.67,10.67,0,0,1,1.06.86c.7.7,1.4,1.4,2,2.15a2.11,2.11,0,0,1,.56,1.21,3.44,3.44,0,0,0,.83,2.13,12.21,12.21,0,0,1,1.07,2.57c.14.37.17.78.33,1.13a2,2,0,0,0,1.8,1.32c1,.07,1.32.44,1.46,1.43l-.74.08c-1.17.11-1.75.65-1.71,1.83a8.43,8.43,0,0,0,2.69,6c.48.45,1,.87,1.46,1.33a3.35,3.35,0,0,1,.92,3.75,12.18,12.18,0,0,0-.69,2.09,6,6,0,0,0,.06,2.23c.18.75.1,2.37.86,2.24,1.36-.24,2.14,0,2.25-1.49a1.22,1.22,0,0,0-.08-.6c-.4-1.42,1.42-5.47,2.52-6.2a27.11,27.11,0,0,0,2.73-2,3.6,3.6,0,0,0,1.26-4,3.22,3.22,0,0,1,1.14-3.59,4.54,4.54,0,0,0,1.71-3.65c-.08-1.53-1.07-2.63-2.37-2.47a9.21,9.21,0,0,0-1.87.59,20.62,20.62,0,0,1-2.72.9c-1.31.23-2.11-.62-2.69-1.66-.47-.83-.63-.9-1.44-.38s-1.37.89-2.08,1.28S22,35.58,21.45,35a5.79,5.79,0,0,0-1.24-.88c-.31-.19-.73-.24-1-.48s-.8-.8-.75-1.15a1.69,1.69,0,0,1,.95-1.1,14.36,14.36,0,0,1,2.29-.51,7.33,7.33,0,0,0,1.22-.33c.52-.21.5-.56.1-.89a3.26,3.26,0,0,0-.69-.37l-3.52-1.39a4.74,4.74,0,0,1-.84-.43c-.74-.49-.83-1-.16-1.61,2.64-2.33,5.72-3,8.45.08.84,1,1.42,2.16,2.22,3.16a12.5,12.5,0,0,0,2.15,2.15,1.62,1.62,0,0,0,1.44.09,1.15,1.15,0,0,0,.29-1.56,8.43,8.43,0,0,0-.86-1.41,5.16,5.16,0,0,1,1.59-7.52,4.38,4.38,0,0,0,2.53-2.58c-.58.16-1,.26-1.42.39-2.3.71-.7-1,.36-1.31.65-.18-.58-.67-.58-.67s.82-.28,1.69-.65a6.85,6.85,0,0,0,1.7-.94,3.79,3.79,0,0,0,.66-1.17l-.16-.18-1.83.24c-1,.11-1.27-.09-1.37-1.14a1,1,0,0,0-1.48-.73c-.45.25-.85.61-1.29.9-1,.66-1.78.39-2.19-.75-.23-.68-.57-.81-1.19-.42-.31.18-.58.47-.89.64a11.53,11.53,0,0,1-1.62.79c-.55.19-1.21.33-1.58-.27a1.25,1.25,0,0,1,.46-1.68A14.78,14.78,0,0,1,27,10c1-.56,2.07-1,3-1.65a1.78,1.78,0,0,0,.79-2.07.88.88,0,0,0-1.37-.65c-.56.28-1.06.72-1.63,1a2.81,2.81,0,0,1-1.41.08c-.17,0-.35-.49-.35-.76s.31-.43.51-.46c1.4-.22,2.81-.41,4.22-.57a.76.76,0,0,1,.58.25,6.84,6.84,0,0,0,3.6,2.15c1.15.34,1.31.18,1.47-1,1.48-.34,3-1,4.46-.09A14.4,14.4,0,0,1,43.14,8c.18.17.07.7,0,1s-.36.87-.48,1.33a1.2,1.2,0,0,0,1.26,1.56c.29,0,.57-.07.86-.08.85,0,1.14.28,1.07,1.13-.11,1.21.09,1.35,1.31,1.15a2.07,2.07,0,0,1,1.67.64c1.14.86,2,.54,2.33-.86,0-.16,0-.32.06-.47.14-.63.49-.79.92-.35.9,1,1.74,2,2.66,3a3,3,0,0,0-.8,3.07,5.19,5.19,0,0,1-.55,3.27A24.63,24.63,0,0,0,52.2,25.5c-.45,1.57.06,2.3,1.66,2.65s1.78.64,1.84,2.14a4.85,4.85,0,0,0,2.92,4.35c.4.19.82.34,1.23.51a25.22,25.22,0,0,1-2.64,9.53Z"/></svg> <span class="wf-padding-add-left-small"><?php esc_html_e('Unspecified', 'wordfence') ?></span>
													</span>
												</td>
												<td>
													<span class="wf-lt-url wf-split-word-xs"
															data-bind="text: displayURLShort, attr: { title: URL }"></span>
												</td>
												<td class="wf-nowrap" data-bind="text: timestamp"></td>
												<td>
													<span data-bind="attr: { title: IP }, text: $root.trimIP(IP())"></span>
												</td>
												<td>
													<span class="wfReverseLookup" data-reverse-lookup-template="wf-live-traffic-hostname-template">
														<span data-bind="text: IP" style="display:none;"></span>
													</span>
												</td>
												<td data-bind="text: statusCode"></td>
												<td class="wf-live-traffic-show-details">
													<span class="wf-ion-eye"></span>
													<span class="wf-ion-eye-disabled"></span>
												</td>
											</tr>
											<tr data-bind="css: {
												'wf-details-visible': showDetails,
												'wf-details-hidden': !(showDetails()),
												highlighted: highlighted,
												odd: ($index() % 2 == 1), even: ($index() % 2 == 0) }" class="wf-details-row">
												<td colspan="8" data-bind="attr: { id: ('wfActEvent_' + id()) }" class="wf-live-traffic-details">
													<div class="wf-live-traffic-activity-detail-wrapper">
														<div class="wf-live-traffic-activity-type">
															<div data-bind="attr: { 'class': typeIconClass }"></div>
															<div data-bind="text: typeText"></div>
														</div>
														<div class="wf-live-traffic-activity-detail">
															<h2><?php esc_html_e('Activity Detail', 'wordfence') ?></h2>
															<div>
																<span data-bind="if: action() != 'loginOK' && action() != 'loginFailValidUsername' && action() != 'loginFailInvalidUsername' && user()">
																	<span data-bind="attr: {'data-userid': user().ID}" class="wfAvatar"></span>
																	<a data-bind="attr: { href: user().editLink }, text: user().display_name"
																			target="_blank" rel="noopener noreferrer"><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>
																</span>
																<span data-bind="if: loc()">
																	<span data-bind="if: action() != 'loginOK' && action() != 'loginFailValidUsername' && action() != 'loginFailInvalidUsername' && user()"> in</span>
																	<span data-bind="attr: { class: 'wf-flag wf-flag-' + loc().countryCode.toLowerCase(), title: loc().countryName }"></span>
																	<a data-bind="text: (loc().city ? loc().city + ', ' : '') + (loc().region ? loc().region + ', ' : '') + loc().countryName,
																		attr: { href: 'http://maps.google.com/maps?q=' + loc().lat + ',' + loc().lon + '&z=6' }"
																			target="_blank" rel="noopener noreferrer"><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>
																</span>
																<span data-bind="if: !loc()">
																	<span data-bind="if: action() != 'loginOK' && action() != 'loginFailValidUsername' && action() != 'loginFailInvalidUsername' && user()">
																		<?php echo wp_kses(sprintf(
																		/* translators: 1. User agent. 2. IP address  */
																				__('%1$s at an unknown location at IP %2$s', 'wordfence'), '', '<a data-bind="text: IP, attr: { href: WFAD.makeIPTrafLink(IP()) }" target="_blank" rel="noopener noreferrer"><span class="screen-reader-text"> (opens in new tab)</span></a>'), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array(), 'data-bind'=>array()), 'span'=>array('class'=>array()))) ?>
																	</span>
																	<span data-bind="if: !(action() != 'loginOK' && action() != 'loginFailValidUsername' && action() != 'loginFailInvalidUsername' && user())">
																		<?php echo wp_kses(sprintf(
																		/* translators: IP address  */
																				__('An unknown location at IP %s', 'wordfence'), '<a data-bind="text: IP, attr: { href: WFAD.makeIPTrafLink(IP()) }" target="_blank" rel="noopener noreferrer"><span class="screen-reader-text"> (opens in new tab)</span></a>'), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array(), 'data-bind'=>array()), 'span'=>array('class'=>array()))) ?>
																	</span>
																</span>
																<span data-bind="if: referer()">
																	<span data-bind="if: extReferer()">
																		<?php echo wp_kses(sprintf(
																		/* translators: 1. User agent. 2. HTTP referer. 3. Server response. */
																				__('%1$s arrived from %2$s and %3$s', 'wordfence'), '', '<a data-bind="text: LiveTrafficViewModel.truncateText(referer(), 100), attr: { title: referer, href: referer }" target="_blank" rel="noopener noreferrer" class="wf-split-word-xs"><span class="screen-reader-text"> (opens in new tab)</span></a>', ''), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array(), 'class'=>array(), 'data-bind'=>array()), 'span'=>array('class'=>array()))) ?>
																	</span>
																	<span data-bind="if: !extReferer()">
																		<?php echo wp_kses(sprintf(
																		/* translators: 1. User agent. 2. HTTP referer. 3. Server response. */
																				__('%1$s left %2$s and %3$s', 'wordfence'), '', '<a data-bind="text: LiveTrafficViewModel.truncateText(referer(), 100), attr: { title: referer, href: referer }" target="_blank" rel="noopener noreferrer" class="wf-split-word-xs"><span class="screen-reader-text"> (opens in new tab)</span></a>', ''), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array(), 'class'=>array(), 'data-bind'=>array()), 'span'=>array('class'=>array()))) ?>
																	</span>
																</span>
																<span data-bind="if: statusCode() == 404">
																	<?php echo wp_kses(sprintf(
																	/* translators: User agent. */
																			__('%s tried to access a <span style="color: #F00;">non-existent page</span>', 'wordfence'), ''), array('span'=>array('style'=>array()))) ?>
																</span>

																<span data-bind="if: statusCode() == 200 && !action()">
																	<?php echo esc_html(sprintf(
																	/* translators: 1. User agent. 2. URL of page visited. */
																			__('%1$s visited %2$s', 'wordfence'), '', '')) ?>
																</span>
																<span data-bind="if: (statusCode() == 301 || statusCode() == 302) && !action()">
																	<?php echo esc_html(sprintf(
																	/* translators: 1. User agent. 2. URL of page visited. */
																			__('%1$s was redirected when visiting %2$s', 'wordfence'), '', '')) ?>
																</span>
																<span data-bind="if: (statusCode() == 301 || statusCode() == 302) && action() && firewallAction()">
																	<?php echo wp_kses(sprintf(
																	/* translators: 1. User agent. 2. Firewall action (blocked, rate limited, etc). 3. Time ago. */
																			__('%1$s was %2$s at %3$s', 'wordfence'), '', '<span data-bind="text: firewallAction"></span>', ''), array('span'=>array('data-bind'=>array()))) ?>
																</span>
																<span data-bind="if: ((statusCode() == 403 || statusCode() == 503) && action() != 'loginFailValidUsername' && action() != 'loginFailInvalidUsername')">
																	<?php printf(
																	/* translators: 1. User agent. 2. Firewall action (blocked, rate limited, etc). 3. Time ago. */
																			esc_html(__('%1$s was %2$s at %3$s', 'wordfence')), '', '<span data-bind="text: firewallAction" style="color: #F00;"></span>', '') ?>
																</span>

																<span data-bind="if: action() == 'loginOK'">
																	<?php echo wp_kses(sprintf(
																	/* translators: 1. User agent. 2. WordPress username. */
																			__('%1$s logged in successfully as "%2$s".', 'wordfence'), '', '<strong data-bind="text: username"></strong>'), array('strong'=>array('data-bind'=>array()))) ?>
																</span>
																<span data-bind="if: action() == 'logout'">
																	<?php echo esc_html(sprintf(/* translators: WordPress username. */ __('%s logged out successfully.', 'wordfence'), '')) ?>
																</span>
																<span data-bind="if: action() == 'lostPassword'">
																	<?php echo esc_html(sprintf(/* translators: WordPress username. */__('%s requested a password reset.', 'wordfence'), '')) ?>
																</span>
																<span data-bind="if: action() == 'loginFailValidUsername'">
																	<?php echo wp_kses(sprintf(/* translators: 1. User agent. 2. WordPress username. */ __('%1$s attempted a <span style="color: #F00;">failed login</span> as "%2$s".', 'wordfence'), '', '<strong data-bind="text: username"></strong>'), array('span'=>array('style'=>array()), 'strong'=>array('data-bind'=>array()))) ?>
																</span>
																<span data-bind="if: action() == 'loginFailInvalidUsername'">
																	<?php echo wp_kses(sprintf(/* translators: 1. User agent. 2. WordPress username. */ __('%1$s attempted a <span style="color: #F00;">failed login</span> using an invalid username "%2$s".', 'wordfence'), '', '<strong data-bind="text: username"></strong>'), array('span'=>array('style'=>array()), 'strong'=>array('data-bind'=>array()))) ?>
																</span>
																<span data-bind="if: action() == 'user:passwordReset'">
																	<?php echo esc_html(sprintf(/* translators: WordPress username. */ __('%s changed their password.', 'wordfence'), '')) ?>
																</span>
																<a class="wf-lt-url wf-split-word-xs"
																		data-bind="text: displayURL, attr: { href: URL, title: URL }"
																		target="_blank" rel="noopener noreferrer"><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>
															</div>
															<div>
																<span data-bind="text: timeAgo, attr: { 'data-timestamp': ctime }"
																		class="wfTimeAgo-timestamp"></span>&nbsp;&nbsp;
															</div>
															<div>
																<strong><?php esc_html_e('IP:', 'wordfence') ?></strong> <span data-bind="text: IP"></span>
																<span class="wfReverseLookup">
																	<span data-bind="text: IP" style="display:none;"></span>
																</span>
																<span data-bind="if: blocked()">
																	<a class="wf-btn wf-btn-default wf-btn-sm wf-block-ip-btn"
																			data-bind="click: unblockIP">
																		<?php esc_html_e('Unblock IP', 'wordfence') ?>
																	</a>
																</span>
																<span data-bind="if: rangeBlocked()">
																	<a class="wf-btn wf-btn-default wf-btn-sm wf-block-ip-btn"
																			data-bind="click: unblockNetwork"><?php esc_html_e('Unblock range', 'wordfence') ?>
																	</a>
																</span>
																<span data-bind="if: !blocked() && !rangeBlocked()">
																	<a class="wf-btn wf-btn-default wf-btn-sm wf-block-ip-btn"
																			data-bind="click: blockIP">
																		<?php esc_html_e('Block IP', 'wordfence') ?>
																	</a>
																</span>
															</div>
															<div data-bind="visible: (jQuery.inArray(parseInt(statusCode(), 10), [403, 503, 404]) !== -1 || action() == 'loginFailValidUsername' || action() == 'loginFailInvalidUsername')">
																<strong><?php esc_html_e('Human/Bot:', 'wordfence') ?></strong> <span data-bind="text: (jsRun() === '1' ? <?php echo esc_attr(json_encode(__('Human', 'wordfence'))) ?> : <?php echo esc_attr(json_encode(__('Bot', 'wordfence'))) ?>)"></span>
															</div>
															<div class="wf-split-word" data-bind="text: UA"></div> 
															<div class="wf-live-traffic-actions">
																<span data-bind="if: blocked()">
																	<a class="wf-btn wf-btn-default wf-btn-sm"
																			data-bind="click: unblockIP">
																		<?php esc_html_e('Unblock IP', 'wordfence') ?>
																	</a>
																</span>
																<span data-bind="if: rangeBlocked()">
																	<a class="wf-btn wf-btn-default wf-btn-sm"
																			data-bind="click: unblockNetwork">
																		<?php esc_html_e('Unblock range', 'wordfence') ?>
																	</a>
																</span>
																<span data-bind="if: !blocked() && !rangeBlocked()">
																	<a class="wf-btn wf-btn-default wf-btn-sm"
																			data-bind="click: blockIP">
																		<?php esc_html_e('Block IP', 'wordfence') ?>
																	</a>
																</span>
																<a class="wf-btn wf-btn-default wf-btn-sm" data-bind="click: showWhoisOverlay"
																		target="_blank" rel="noopener noreferrer"><?php esc_html_e('Run Whois', 'wordfence') ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>
																<a class="wf-btn wf-btn-default wf-btn-sm"
																		data-bind="click: showRecentTraffic" target="_blank" rel="noopener noreferrer">
																	<span class="wf-hidden-xs"><?php esc_html_e('See recent traffic', 'wordfence'); ?></span><span class="wf-visible-xs"><?php esc_html_e('Recent', 'wordfence'); ?></span>
																</a>
																<span data-bind="if: action() == 'blocked:waf' && actionData().path && actionData().paramKey && actionData().failedRules">
																	<a class="wf-btn wf-btn-default wf-btn-sm"
																			data-bind="click: function () { $root.whitelistWAFParamKey(actionData().path, actionData().paramKey, actionData().failedRules) }"
																			title="<?php esc_attr_e('If this is a false positive, you can exclude this parameter from being filtered by the firewall', 'wordfence') ?>">
																		<?php esc_html_e('Add Param to Firewall Allowlist', 'wordfence') ?>
																	</a>
																	<?php if (WFWAF_DEBUG): ?>
																		<a class="wf-btn wf-btn-default wf-btn-sm"
																				data-bind="attr: { href: '<?php echo esc_js(home_url()) ?>?_wfsf=debugWAF&nonce=' + WFAD.nonce + '&hitid=' + id() }" target="_blank" rel="noopener noreferrer">
																			Debug this Request
																		</a>
																	<?php endif ?>
															</span>
															</div>
														</div>
													</div>
												</td>
											</tr>
											</tbody>
										</table>
									</div>
									<div class="wf-live-traffic-none" data-bind="if: listings().length == 0">
										<?php esc_html_e('No requests to report yet.', 'wordfence') ?>
									</div>
								</div>
							</div>
						</div>
					</div>
				</div>
			</div>
		</div>
	</div>
</div>

<script type="application/javascript">
	(function($) {
		$(function() {
			$('.wf-option.wf-option-toggled-boolean-switch[data-option="liveTraf_displayExpandedRecords"]').on('change', function() {
				delete WFAD.pendingChanges['liveTraf_displayExpandedRecords'];
				var isOn = $(this).find('.wf-boolean-switch').hasClass('wf-active');
				WFAD.setOption($(this).data('option'), (isOn ? $(this).data('enabledValue') : $(this).data('disabledValue')), function() {
					$('#wf-live-traffic').toggleClass('wf-live-traffic-display-expanded', isOn);
				});
			});
			
			$(document).on('heartbeat-tick', function(heartbeat) {
				WFAD.serverMicrotime = heartbeat.timeStamp / 1000;
				WFAD.updateTimeAgo();
			})
		});
	})(jQuery);
</script>

<div id="wf-live-traffic-util-overlay-wrapper" style="display: none">
	<div class="wf-live-traffic-util-overlay">
		<div class="wf-live-traffic-util-overlay-header"></div>
		<div class="wf-live-traffic-util-overlay-body"></div>
		<span class="wf-live-traffic-util-overlay-close wf-ion-android-close"></span>
	</div>
</div>

<div id="wfrawhtml"></div>

<script type="text/x-jquery-template" id="wf-live-traffic-hostname-template">
	<span title="${ip}">${(ip && ip.length > 22) ? '...' + ip.substring(ip.length - 22) : ip}</span>
</script>

<?php if (wfOnboardingController::willShowNewTour(wfOnboardingController::TOUR_LIVE_TRAFFIC)): ?>
	<script type="application/javascript">
		(function($) {
			$(function() {
				WFAD.tour1 = function() {
					WFAD.tour('wfNewTour1', 'wf-live-traffic', 'bottom', 'bottom', null, WFAD.tourComplete);
				};
				WFAD.tourComplete = function() { WFAD.tourFinish('<?php echo esc_attr(wfOnboardingController::TOUR_LIVE_TRAFFIC); ?>'); };
				
				<?php if (wfOnboardingController::shouldShowNewTour(wfOnboardingController::TOUR_LIVE_TRAFFIC)): ?>
				if (!WFAD.isSmallScreen) { WFAD.tour1(); }
				<?php endif; ?>
			});
		})(jQuery);
	</script>

	<script type="text/x-jquery-template" id="wfNewTour1">
		<div>
			<h3><?php esc_html_e('Live Traffic', 'wordfence'); ?></h3>
			<p><?php echo wp_kses(__('Live traffic defaults to a summary view of all security-related traffic. Details are viewable by clicking anywhere within the summary record. To switch to the expanded view, click the <strong>Expand All Records</strong> switch.', 'wordfence'), array('strong'=>array())); ?></p>
			<div class="wf-pointer-footer">
				<ul class="wf-tour-pagination">
					<li class="wf-active">&bullet;</li>
				</ul>
				<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Got it', 'wordfence'); ?></a></div>
			</div>
			<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
		</div>
	</script>
<?php endif; ?>

<?php if (wfOnboardingController::willShowUpgradeTour(wfOnboardingController::TOUR_LIVE_TRAFFIC)): ?>
	<script type="application/javascript">
		(function($) {
			$(function() {
				WFAD.tour1 = function() {
					WFAD.tour('wfUpgradeTour1', 'wf-live-traffic', 'bottom', 'bottom', null, WFAD.tourComplete);
				};
				WFAD.tourComplete = function() { WFAD.tourFinish('<?php echo esc_attr(wfOnboardingController::TOUR_LIVE_TRAFFIC); ?>'); };
				
				<?php if (wfOnboardingController::shouldShowUpgradeTour(wfOnboardingController::TOUR_LIVE_TRAFFIC)): ?>
				if (!WFAD.isSmallScreen) { WFAD.tour1(); }
				<?php endif; ?>
			});
		})(jQuery);
	</script>

	<script type="text/x-jquery-template" id="wfUpgradeTour1">
		<div>
			<h3><?php esc_html_e('Live Traffic', 'wordfence'); ?></h3>
			<p><?php echo wp_kses(__('Live traffic now defaults to a summary view. Details are viewable by clicking anywhere within the summary record. To switch to the expanded view, click the <strong>Expand All Records</strong> switch. New installations will only log security-related traffic by default, though your previous setting has been preserved.', 'wordfence'), array('strong'=>array())); ?></p>
			<div class="wf-pointer-footer">
				<ul class="wf-tour-pagination">
					<li class="wf-active">&bullet;</li>
				</ul>
				<div id="wf-tour-continue"><a href="#" role="button" class="wf-onboarding-btn wf-onboarding-btn-primary"><?php esc_html_e('Got it', 'wordfence'); ?></a></div>
			</div>
			<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
		</div>
	</script>
<?php endif; ?>lib/menu_scanner_options.php000064400000020647150755146450012300 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
$scanner = wfScanner::shared();
$scanOptions = $scanner->scanOptions();

$backPage = new wfPage(wfPage::PAGE_SCAN);
if (isset($_GET['source']) && wfPage::isValidPage($_GET['source'])) {
	$backPage = new wfPage($_GET['source']);
}
?>
<script type="application/javascript">
	(function($) {
		$(function() {
			document.title = "<?php esc_attr_e('Scanner Options', 'wordfence'); ?>" + " \u2039 " + WFAD.basePageName;
			
			//Hash-based option block linking
			if (window.location.hash) {
				var hashes = WFAD.parseHashes();
				var hash = hashes[hashes.length - 1];
				var block = $('.wf-block[data-persistence-key="' + hash + '"]');
				if (block && block.length) {
					if (!block.hasClass('wf-active')) {
						block.find('.wf-block-content').slideDown({
							always: function() {
								block.addClass('wf-active');
								
								if (hashes.length > 1 && $('#' + hashes[hashes.length - 2]).hasClass('wf-option')) {
									$('html, body').animate({
										scrollTop: $('#' + hashes[hashes.length - 2]).offset().top - 100
									}, 1000);
								}
								else {
									$('html, body').animate({
										scrollTop: block.offset().top - 100
									}, 1000);
								}
							}
						});

						WFAD.ajax('wordfence_saveDisclosureState', {name: block.data('persistenceKey'), state: true}, function() {});
					}
					else {
						if (hashes.length > 1 && $('#' + hashes[hashes.length - 2]).hasClass('wf-option')) {
							$('html, body').animate({
								scrollTop: $('#' + hashes[hashes.length - 2]).offset().top - 100
							}, 1000);
						}
						else {
							$('html, body').animate({
								scrollTop: block.offset().top - 100
							}, 1000);
						}
					}
					history.replaceState('', document.title, window.location.pathname + window.location.search);
				}
			}
		});
	})(jQuery);
</script>
<div class="wf-options-controls">
	<div class="wf-row">
		<div class="wf-col-xs-12">
			<?php
			echo wfView::create('options/block-controls', array(
				'backLink' => $backPage->url(),
				'backLabelHTML' => wp_kses(sprintf(__('<span class="wf-hidden-xs">Back to </span>%s', 'wordfence'), $backPage->label()), array('span'=>array('class'=>array()))),
				'restoreDefaultsSection' => wfConfig::OPTIONS_TYPE_SCANNER,
				'restoreDefaultsMessage' => __('Are you sure you want to restore the default Scan settings? This will undo any custom changes you have made to the options on this page.', 'wordfence'),
			))->render();
			?>
		</div>
	</div>
</div>
<div class="wf-options-controls-spacer"></div>
<?php
if (!wfOnboardingController::shouldShowAttempt3() && wfConfig::get('touppPromptNeeded')) {
	echo wfView::create('gdpr/disabled-overlay')->render();
	echo wfView::create('gdpr/banner')->render();
}
?>
<div class="wrap wordfence">
	<div class="wf-container-fluid">
		<div class="wf-row">
			<div class="wf-col-xs-12">
				<div class="wp-header-end"></div>
			</div>
		</div>
		<div class="wf-row">
			<div class="<?php echo wfStyle::contentClasses(); ?>">
				<div id="wf-scan-options" class="wf-fixed-tab-content">
					<?php
					echo wfView::create('common/section-title', array(
						'title' => __('Scan Options and Scheduling', 'wordfence'),
						'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN),
						'helpLabelHTML' => wp_kses(__('Learn more<span class="wf-hidden-xs"> about Scanning</span>', 'wordfence'), array('span'=>array('classes'=>array()))),
						'showIcon' => true,
					))->render();
					?>
					<div class="wf-row">
						<div class="wf-col-xs-12">
							<div class="wf-block wf-active">
								<div class="wf-block-content">
									<ul class="wf-block-list wf-block-list-horizontal wf-block-list-nowrap wf-scanner-coverage">
										<li>
											<?php
											if (function_exists('network_admin_url') && is_multisite()) { $optionsURL = network_admin_url('admin.php?page=WordfenceScan&subpage=scan_options'); }
											else { $optionsURL = admin_url('admin.php?page=WordfenceScan&subpage=scan_options'); }
											echo wfView::create('common/status-detail', array(
												'id' => 'wf-scanner-type',
												'percentage' => $scanner->scanTypeStatus(),
												'activeColor' => (!$scanner->isEnabled() ? '#ececec' : null /* automatic */),
												'title' => __('Scan Type: ', 'wordfence') . wfScanner::displayScanType($scanner->scanType()),
												'subtitle' => wfScanner::displayScanTypeDetail($scanner->scanType()),
												'link' => $optionsURL,
												'linkLabel' => null,
												'statusTitle' => __('Scan Status', 'wordfence'),
												'statusList' => $scanner->scanTypeStatusList(),
												'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_STATUS_OVERALL),
											))->render();
											?>
										</li>
										<li>
											<?php
											echo wfView::create('common/status-detail', array(
												'id' => 'wf-scanner-malware-type',
												'percentage' => $scanner->signatureMode() == wfScanner::SIGNATURE_MODE_PREMIUM ? 1.0 : 0.7,
												'activeColor' => (!$scanner->isEnabled() ? '#ececec' : null /* automatic */),
												'title' => __('Malware Signatures: ', 'wordfence') . ($scanner->signatureMode() == wfScanner::SIGNATURE_MODE_PREMIUM ? __('Premium', 'wordfence') : __('Community', 'wordfence')),
												'subtitle' => ($scanner->signatureMode() == wfScanner::SIGNATURE_MODE_PREMIUM ? __('Signatures updated in real-time', 'wordfence') : __('Signature updates delayed by 30 days', 'wordfence')),
												'link' => 'https://www.wordfence.com/gnl1scanUpgrade/wordfence-signup/',
												'linkLabel' => null,
												'statusTitle' => __('Malware Signatures Status', 'wordfence'),
												'statusList' => $scanner->signatureMode() == wfScanner::SIGNATURE_MODE_PREMIUM ? array() : array(array(
													'percentage' => 0.30,
													'title'      => __('Enable Premium Scan Signatures.', 'wordfence'),
												)),
												'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_STATUS_MALWARE),
											))->render();
											?>
										</li>
										<li>
											<?php
											echo wfView::create('common/status-detail', array(
												'id' => 'wf-scanner-reputation',
												'percentage' => $scanner->reputationStatus(),
												'activeColor' => (!$scanner->isEnabled() ? '#ececec' : null /* automatic */),
												'title' => __('Reputation Checks', 'wordfence'),
												'subtitle' => __('Check spam &amp; spamvertising blocklists', 'wordfence'),
												'link' => $optionsURL . '#wf-scanner-options-general',
												'linkLabel' => null,
												'statusTitle' => __('Reputation Check Status', 'wordfence'),
												'statusList' => $scanner->reputationStatusList(),
												'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_STATUS_REPUTATION),
											))->render();
											?>
										</li>
									</ul>
								</div>
							</div>
						</div>
					</div>
					<?php
					echo wfView::create('scanner/options-group-scan-schedule', array(
						'scanner' => $scanner,
						'stateKey' => 'wf-scanner-options-schedule',
					))->render();
					
					echo wfView::create('scanner/options-group-basic', array(
						'scanner' => $scanner,
						'stateKey' => 'wf-scanner-options-basic',
						'collapseable' => false,
					))->render();
					
					echo wfView::create('scanner/options-group-general', array(
						'scanner' => $scanner,
						'stateKey' => 'wf-scanner-options-general',
					))->render();
					
					echo wfView::create('scanner/options-group-performance', array(
						'scanner' => $scanner,
						'stateKey' => 'wf-scanner-options-performance',
					))->render();
					
					echo wfView::create('scanner/options-group-advanced', array(
						'scanner' => $scanner,
						'stateKey' => 'wf-scanner-options-custom',
					))->render();
					?>
				</div> <!-- end wf-scan-options block -->
			</div> <!-- end content block -->
		</div> <!-- end row -->
	</div> <!-- end container -->
</div>
<script type="application/javascript">
	(function($) {
		$(function() {
			var updatePendingCircles = function() {
				$('#circle-wf-scanner-type, #circle-wf-scanner-reputation').wfCircularProgress({pendingOverlay: Object.keys(WFAD.pendingChanges).length > 0});
			};
			var coalescingUpdateTimer = false;

			$('.wf-option').on('change', function() {
				clearTimeout(coalescingUpdateTimer);
				coalescingUpdateTimer = setTimeout(updatePendingCircles, 100);
			});
		});
	})(jQuery);
</script>lib/wordfenceScanner.php000064400000074740150755146450011341 0ustar00<?php
require_once(dirname(__FILE__) . '/wordfenceConstants.php');
require_once(dirname(__FILE__) . '/wordfenceClass.php');
require_once(dirname(__FILE__) . '/wordfenceURLHoover.php');
class wordfenceScanner {
	/*
	 * Mask to return all patterns in the exclusion list.
	 * @var int
	 */
	const EXCLUSION_PATTERNS_ALL = PHP_INT_MAX;
	/*
	 * Mask for patterns that the user has added.
	 */
	const EXCLUSION_PATTERNS_USER = 0x1;
	/*
	 * Mask for patterns that should be excluded from the known files scan.
	 */
	const EXCLUSION_PATTERNS_KNOWN_FILES = 0x2;
	/*
	 * Mask for patterns that should be excluded from the malware scan.
	 */
	const EXCLUSION_PATTERNS_MALWARE = 0x4;

	//serialized:
	protected $path = '';
	protected $results = []; 
	protected $resultFilesByShac = [];
	public $errorMsg = false;
	protected $apiKey = false;
	protected $wordpressVersion = '';
	protected $totalFilesScanned = 0;
	protected $startTime = false;
	protected $lastStatusTime = false;
	protected $patterns = "";
	protected $api = false;
	protected static $excludePatterns = array();
	protected static $builtinExclusions = array(
											array('pattern' => 'wp\-includes\/version\.php', 'include' => self::EXCLUSION_PATTERNS_KNOWN_FILES), //Excluded from the known files scan because non-en_US installations will have extra content that fails the check, still in malware scan
											array('pattern' => '(?:wp\-includes|wp\-admin)\/(?:[^\/]+\/+)*(?:\.htaccess|\.htpasswd|php_errorlog|error_log|[^\/]+?\.log|\._|\.DS_Store|\.listing|dwsync\.xml)', 'include' => self::EXCLUSION_PATTERNS_KNOWN_FILES),
											);
	/** @var wfScanEngine */
	protected $scanEngine;
	private $urlHoover;

	public function __sleep(){
		return array('path', 'results', 'resultFilesByShac', 'errorMsg', 'apiKey', 'wordpressVersion', 'urlHoover', 'totalFilesScanned',
			'startTime', 'lastStatusTime', 'patterns', 'scanEngine');
	}
	public function __wakeup(){
	}
	public function __construct($apiKey, $wordpressVersion, $path, $scanEngine) {
		$this->apiKey = $apiKey;
		$this->wordpressVersion = $wordpressVersion;
		$this->api = new wfAPI($this->apiKey, $this->wordpressVersion);
		if($path[strlen($path) - 1] != '/'){
			$path .= '/';
		}
		$this->path = $path;
		$this->scanEngine = $scanEngine;
			
		$this->errorMsg = false;
		//First extract hosts or IPs and their URLs into $this->hostsFound and URL's into $this->urlsFound
		$options = $this->scanEngine->scanController()->scanOptions();
		if ($options['scansEnabled_fileContentsGSB']) {
			$this->urlHoover = new wordfenceURLHoover($this->apiKey, $this->wordpressVersion);
		}
		else {
			$this->urlHoover = false;
		}
		
		if ($options['scansEnabled_fileContents']) {
			$this->setupSigs();
		}
		else {
			$this->patterns = array();
		}
	}

	/**
	 * Get scan regexes from noc1 and add any user defined regexes, including descriptions, ID's and time added.
	 * @todo add caching to this.
	 * @throws Exception
	 */
	protected function setupSigs() {
		$sigData = $this->api->call('get_patterns', array(), array());
		if(! (is_array($sigData) && isset($sigData['rules'])) ){
			throw new Exception(__('Wordfence could not get the attack signature patterns from the scanning server.', 'wordfence'));
		}
		
		if (is_array($sigData['rules'])) {
			$wafPatterns = array();
			$wafCommonStringIndexes = array();
			foreach ($sigData['rules'] as $key => $signatureRow) {
				list($id, , $pattern) = $signatureRow;
				if (empty($pattern)) {
					throw new Exception(__('Wordfence received malformed attack signature patterns from the scanning server.', 'wordfence'));
				}
				
				$logOnly = (isset($signatureRow[5]) && !empty($signatureRow[5])) ? $signatureRow[5] : false;
				$commonStringIndexes = (isset($signatureRow[8]) && is_array($signatureRow[8])) ? $signatureRow[8] : array(); 
				if (@preg_match('/' . $pattern . '/iS', '') === false) {
					wordfence::status(1, 'error', sprintf(__('Regex compilation failed for signature %d', 'wordfence'), (int) $id));
					unset($sigData['rules'][$key]);
				}
				else if (!$logOnly) {
					$wafPatterns[] = $pattern;
					$wafCommonStringIndexes[] = $commonStringIndexes;
				}
			}
		}

		$userSignatures = wfScanner::shared()->userScanSignatures();
		foreach ($userSignatures as $s) {
			$sigData['rules'][] = $s;
		}

		$this->patterns = $sigData;
		if (isset($this->patterns['signatureUpdateTime'])) {
			wfConfig::set('signatureUpdateTime', $this->patterns['signatureUpdateTime']);
		}
	}

	/**
	 * Return regular expression to exclude files or false if
	 * there is no pattern
	 *
	 * @param $whichPatterns int Bitmask indicating which patterns to include.
	 * @return array|boolean
	 */
	public static function getExcludeFilePattern($whichPatterns = self::EXCLUSION_PATTERNS_USER) {
		if (isset(self::$excludePatterns[$whichPatterns])) {
			return self::$excludePatterns[$whichPatterns];
		}
		
		$exParts = array();
		if (($whichPatterns & self::EXCLUSION_PATTERNS_USER) > 0)
		{
			$exParts = wfScanner::shared()->userExclusions();
		}
		
		$exParts = array_filter($exParts);
		foreach ($exParts as $key => &$exPart) {
			$exPart = trim($exPart);
			if ($exPart === '*') {
				unset($exParts[$key]);
				continue;
			}
			$exPart = preg_quote($exPart, '/');
			$exPart = preg_replace('/\\\\\*/', '.*', $exPart);
		}

		foreach (self::$builtinExclusions as $pattern) {
			if (($pattern['include'] & $whichPatterns) > 0) {
				$exParts[] = $pattern['pattern'];
			}
		}

		$exParts = array_filter($exParts);
		if (!empty($exParts)) {
			$chunks = array_chunk($exParts, 100);
			self::$excludePatterns[$whichPatterns] = array();
			foreach ($chunks as $parts) {
				self::$excludePatterns[$whichPatterns][] = '/(?:' . implode('|', $parts) . ')$/i';
			}
		}
		else {
			self::$excludePatterns[$whichPatterns] = false;
		}

		return self::$excludePatterns[$whichPatterns];
	}

	/**
	 * @param wfScanEngine $forkObj
	 * @return array
	 */
	public function scan($forkObj){
		$this->scanEngine = $forkObj;
		$loader = $this->scanEngine->getKnownFilesLoader();
		if(! $this->startTime){
			$this->startTime = microtime(true);
		}
		if(! $this->lastStatusTime){
			$this->lastStatusTime = microtime(true);
		}
		
		//The site's own URL is checked in an earlier scan stage so we exclude it here.
		$options = $this->scanEngine->scanController()->scanOptions();
		$hooverExclusions = array();
		if ($options['scansEnabled_fileContentsGSB']) {
			$hooverExclusions = wordfenceURLHoover::standardExcludedHosts();
		}
		
		$backtrackLimit = ini_get('pcre.backtrack_limit');
		if (is_numeric($backtrackLimit)) {
			$backtrackLimit = (int) $backtrackLimit;
			if ($backtrackLimit > 10000000) {
				ini_set('pcre.backtrack_limit', 1000000);
				wordfence::status(4, 'info', sprintf(/* translators: PHP ini setting (number). */ __('Backtrack limit is %d, reducing to 1000000', 'wordfence'), $backtrackLimit));
			}
		}
		else {
			$backtrackLimit = false;
		}
		
		$lastCount = 'whatever';
		$excludePatterns = self::getExcludeFilePattern(self::EXCLUSION_PATTERNS_USER | self::EXCLUSION_PATTERNS_MALWARE); 
		while (true) {
			$thisCount = wordfenceMalwareScanFile::countRemaining();
			if ($thisCount == $lastCount) {
				//count should always be decreasing. If not, we're in an infinite loop so lets catch it early
				wordfence::status(4, 'info', __('Detected loop in malware scan, aborting.', 'wordfence'));
				break;
			}
			$lastCount = $thisCount;
			
			$files = wordfenceMalwareScanFile::files();
			if (count($files) < 1) {
				wordfence::status(4, 'info', __('No files remaining for malware scan.', 'wordfence'));
				break;
			}
			
			$completed = [];
			foreach ($files as $record) {
				$file = $record->filename;
				if ($excludePatterns) {
					foreach ($excludePatterns as $pattern) {
						if (preg_match($pattern, $file)) {
							$completed[] = $record;
							continue 2;
						}
					}
				}
				if (!file_exists($record->realPath)) {
					$completed[] = $record;
					continue;
				}
				$fileSum = $record->newMD5;
				
				$fileExt = '';
				if(preg_match('/\.([a-zA-Z\d\-]{1,7})$/', $file, $matches)){
					$fileExt = strtolower($matches[1]);
				}
				$isPHP = false;
				if(preg_match('/\.(?:php(?:\d+)?|phtml)(\.|$)/i', $file)) {
					$isPHP = true;
				}
				$isHTML = false;
				if(preg_match('/\.(?:html?)(\.|$)/i', $file)) {
					$isHTML = true;
				}
				$isJS = false;
				if(preg_match('/\.(?:js|svg)(\.|$)/i', $file)) {
					$isJS = true;
				}
				$dontScanForURLs = false;
				if (!$options['scansEnabled_highSense'] && (preg_match('/^(?:\.htaccess|wp\-config\.php)$/', $file) || $file === ini_get('user_ini.filename'))) {
					$dontScanForURLs = true;
				}
				
				$isScanImagesFile = false;
				if (!$isPHP && preg_match('/^(?:jpg|jpeg|mp3|avi|m4v|mov|mp4|gif|png|tiff?|svg|sql|js|tbz2?|bz2?|xz|zip|tgz|gz|tar|log|err\d+)$/', $fileExt)) {
					if ($options['scansEnabled_scanImages']) {
						$isScanImagesFile = true;
					}
					else if (!$isJS) {
						$completed[] = $record;
						continue;
					}
				}
				$isHighSensitivityFile = false;
				if (strtolower($fileExt) == 'sql') {
					if ($options['scansEnabled_highSense']) {
						$isHighSensitivityFile = true;
					}
					else {
						$completed[] = $record;
						continue;
					}
				}
				if(wfUtils::fileTooBig($record->realPath, $fsize, $fh)){ //We can't use filesize on 32 bit systems for files > 2 gigs
					//We should not need this check because files > 2 gigs are not hashed and therefore won't be received back as unknowns from the API server
					//But we do it anyway to be safe.
					wordfence::status(2, 'error', sprintf(/* translators: File path. */ __('Encountered file that is too large: %s - Skipping.', 'wordfence'), $file));
					$completed[] = $record;
					continue;
				}

				$fsize = wfUtils::formatBytes($fsize);
				if (function_exists('memory_get_usage')) {
					wordfence::status(4, 'info', sprintf(
						/* translators: 1. File path. 2. File size. 3. Memory in bytes. */
						__('Scanning contents: %1$s (Size: %2$s Mem: %3$s)', 'wordfence'),
						$file,
						$fsize,
						wfUtils::formatBytes(memory_get_usage(true))
					));
				} else {
					wordfence::status(4, 'info', sprintf(
						/* translators: 1. File path. 2. File size. */
						__('Scanning contents: %1$s (Size: %2$s)', 'wordfence'),
						$file,
						$fsize
					));
				}

				$stime = microtime(true);
				if (!$fh) {
					$completed[] = $record;
					continue;
				}
				$totalRead = (int) $record->stoppedOnPosition;
				if ($totalRead > 0) {
					if (@fseek($fh, $totalRead, SEEK_SET) !== 0) {
						$totalRead = 0;
					}
				}
				if ($totalRead === 0 && @fseek($fh, $totalRead, SEEK_SET) !== 0) {
					wordfence::status(2, 'error', sprintf(/* translators: File path. */ __('Seek error occurred in file: %s - Skipping.', 'wordfence'), $file));
					$completed[] = $record;
					continue;
				}

				$dataForFile = $this->dataForFile($file);
				
				$first = true;
				while (!feof($fh)) {
					$data = fread($fh, 1 * 1024 * 1024); //read 1 megs max per chunk
					$readSize = wfUtils::strlen($data);
					$currentPosition = $totalRead;
					$totalRead += $readSize;
					if ($readSize < 1) {
						break;
					}
					
					$extraMsg = '';
					if ($isScanImagesFile) {
						$extraMsg = ' ' . __('This file was detected because you have enabled "Scan images, binary, and other files as if they were executable", which treats non-PHP files as if they were PHP code. This option is more aggressive than the usual scans, and may cause false positives.', 'wordfence');
					}
					else if ($isHighSensitivityFile) {
						$extraMsg = ' ' . __('This file was detected because you have enabled HIGH SENSITIVITY scanning. This option is more aggressive than the usual scans, and may cause false positives.', 'wordfence');
					}
					
					$treatAsBinary = ($isPHP || $isHTML || $options['scansEnabled_scanImages']);
					if ($options['scansEnabled_fileContents']) {
						$allCommonStrings = $this->patterns['commonStrings'];
						$commonStringsFound = array_fill(0, count($allCommonStrings), null); //Lazily looked up below

						$regexMatched = false;
						foreach ($this->patterns['rules'] as $rule) {
							$stoppedOnSignature = $record->stoppedOnSignature;
							if (!empty($stoppedOnSignature)) { //Advance until we find the rule we stopped on last time
								//wordfence::status(4, 'info', "Searching for malware scan resume point (". $stoppedOnSignature . ") at rule " . $rule[0]);
								if ($stoppedOnSignature == $rule[0]) {
									$record->updateStoppedOn('', $currentPosition);
									wordfence::status(4, 'info', sprintf(/* translators: Malware signature rule ID. */ __('Resuming malware scan at rule %s.', 'wordfence'), $rule[0]));
								}
								continue;
							}

							$type = (isset($rule[4]) && !empty($rule[4])) ? $rule[4] : 'server';
							$logOnly = (isset($rule[5]) && !empty($rule[5])) ? $rule[5] : false;
							$commonStringIndexes = (isset($rule[8]) && is_array($rule[8])) ? $rule[8] : array();
							if ($type == 'server' && !$treatAsBinary) { continue; }
							else if (($type == 'both' || $type == 'browser') && $isJS) { $extraMsg = ''; }
							else if (($type == 'both' || $type == 'browser') && !$treatAsBinary) { continue; }

							if (!$first && substr($rule[2], 0, 1) == '^') {
								//wordfence::status(4, 'info', "Skipping malware signature ({$rule[0]}) because it only applies to the file beginning.");
								continue;
							}

							foreach ($commonStringIndexes as $i) {
								if ($commonStringsFound[$i] === null) {
									$s = $allCommonStrings[$i];
									$commonStringsFound[$i] = (preg_match('/' . $s . '/i', $data) == 1);
								}

								if (!$commonStringsFound[$i]) {
									//wordfence::status(4, 'info', "Skipping malware signature ({$rule[0]}) due to short circuit.");
									continue 2;
								}
							}

							/*if (count($commonStringIndexes) > 0) {
								wordfence::status(4, 'info', "Processing malware signature ({$rule[0]}) because short circuit matched.");
							}*/

							if (preg_match('/(' . $rule[2] . ')/iS', $data, $matches, PREG_OFFSET_CAPTURE)) {
								$customMessage = isset($rule[9]) ? $rule[9] : __('This file appears to be installed or modified by a hacker to perform malicious activity. If you know about this file you can choose to ignore it to exclude it from future scans.', 'wordfence');
								$matchString = $matches[1][0];
								$matchOffset = $matches[1][1];
								$beforeString = wfWAFUtils::substr($data, max(0, $matchOffset - 100), $matchOffset - max(0, $matchOffset - 100));
								$afterString = wfWAFUtils::substr($data, $matchOffset + strlen($matchString), 100);
								if (!$logOnly) {
									$this->addResult(array(
										'type' => 'file',
										'severity' => wfIssues::SEVERITY_CRITICAL,
										'ignoreP' => $record->realPath,
										'ignoreC' => $fileSum,
										'shortMsg' => sprintf(__('File appears to be malicious or unsafe: %s', 'wordfence'), esc_html($record->getDisplayPath())),
										'longMsg' => $customMessage . ' ' . sprintf(__('The matched text in this file is: %s', 'wordfence'), '<strong style="color: #F00;" class="wf-split-word">' . wfUtils::potentialBinaryStringToHTML((wfUtils::strlen($matchString) > 200 ? wfUtils::substr($matchString, 0, 200) . '...' : $matchString)) . '</strong>') . ' ' . '<br><br>' . sprintf(/* translators: Scan result type. */ __('The issue type is: %s', 'wordfence'), '<strong>' . esc_html($rule[7]) . '</strong>') . '<br>' . sprintf(/* translators: Scan result description. */ __('Description: %s', 'wordfence'), '<strong>' . esc_html($rule[3]) . '</strong>') . $extraMsg,
										'data' => array_merge(array(
											'file' => $file,
											'realFile' => $record->realPath,
											'shac' => $record->SHAC,
											'highSense' => $options['scansEnabled_highSense']
										), $dataForFile),
									));
								}
								$regexMatched = true;
								$this->scanEngine->recordMetric('malwareSignature', $rule[0], array('file' => substr($file, 0, 255), 'match' => substr($matchString, 0, 65535), 'before' => $beforeString, 'after' => $afterString, 'md5' => $record->newMD5, 'shac' => $record->SHAC), false);
								break;
							}

							if ($forkObj->shouldFork()) {
								$record->updateStoppedOn($rule[0], $currentPosition);
								fclose($fh);

								wordfenceMalwareScanFile::markCompleteBatch($completed);

								wordfence::status(4, 'info', sprintf(/* translators: Malware signature rule ID. */ __('Forking during malware scan (%s) to ensure continuity.', 'wordfence'), $rule[0]));
								$forkObj->fork(); //exits
							}
						}
						if ($regexMatched) { break; }
						if ($treatAsBinary && $options['scansEnabled_highSense']) {
							$badStringFound = false;
							if (strpos($data, $this->patterns['badstrings'][0]) !== false) {
								for ($i = 1; $i < sizeof($this->patterns['badstrings']); $i++) {
									if (wfUtils::strpos($data, $this->patterns['badstrings'][$i]) !== false) {
										$badStringFound = $this->patterns['badstrings'][$i];
										break;
									}
								}
							}
							if ($badStringFound) {
								$this->addResult(array(
									'type' => 'file',
									'severity' => wfIssues::SEVERITY_CRITICAL,
									'ignoreP' => $record->realPath,
									'ignoreC' => $fileSum,
									'shortMsg' => __('This file may contain malicious executable code: ', 'wordfence') . esc_html($record->getDisplayPath()),
									'longMsg' => sprintf(/* translators: Malware signature matched text. */ __('This file is a PHP executable file and contains the word "eval" (without quotes) and the word "%s" (without quotes). The eval() function along with an encoding function like the one mentioned are commonly used by hackers to hide their code. If you know about this file you can choose to ignore it to exclude it from future scans. This file was detected because you have enabled HIGH SENSITIVITY scanning. This option is more aggressive than the usual scans, and may cause false positives.', 'wordfence'), '<span class="wf-split-word">' . esc_html($badStringFound) . '</span>'),
 									'data' => array_merge(array(
										'file' => $file,
										'realFile' => $record->realPath,
										'shac' => $record->SHAC,
										'highSense' => $options['scansEnabled_highSense']
									), $dataForFile),
								));
								break;
							}
						}
					}
					
					if (!$dontScanForURLs && $options['scansEnabled_fileContentsGSB']) {
						$found = $this->urlHoover->hoover($file, $data, $hooverExclusions);
						$this->scanEngine->scanController()->incrementSummaryItem(wfScanner::SUMMARY_SCANNED_URLS, $found);
					}
					
					if ($totalRead > 2 * 1024 * 1024) {
						break;
					}
					
					$first = false;
				}
				fclose($fh);
				$this->totalFilesScanned++;
				if(microtime(true) - $this->lastStatusTime > 1){
					$this->lastStatusTime = microtime(true);
					$this->writeScanningStatus();
				}
				
				$completed[] = $record;
				$shouldFork = $forkObj->shouldFork();
				if ($shouldFork || count($completed) > 100) {
					wordfenceMalwareScanFile::markCompleteBatch($completed);
					$completed = [];
					if ($shouldFork) {
						wordfence::status(4, 'info', __("Forking during malware scan to ensure continuity.", 'wordfence'));
						$forkObj->fork();
					}
				}
			}
			wordfenceMalwareScanFile::markCompleteBatch($completed);
		}
		$this->writeScanningStatus();
		if ($options['scansEnabled_fileContentsGSB']) {
			wordfence::status(2, 'info', __('Asking Wordfence to check URLs against malware list.', 'wordfence'));
			$hooverResults = $this->urlHoover->getBaddies();
			if($this->urlHoover->errorMsg){
				$this->errorMsg = $this->urlHoover->errorMsg;
				if ($backtrackLimit !== false) { ini_set('pcre.backtrack_limit', $backtrackLimit); }
				return false;
			}
			$this->urlHoover->cleanup();
			
			foreach($hooverResults as $file => $hresults){
				$record = wordfenceMalwareScanFile::fileForPath($file);
				$dataForFile = $this->dataForFile($file, $record->realPath);
	
				foreach($hresults as $result){
					if(preg_match('/wfBrowscapCache\.php$/', $file)){
						continue;
					}
					
					if (empty($result['URL'])) {
						continue; 
					}
					
					if ($result['badList'] == 'goog-malware-shavar') {
						$this->addResult(array(
							'type' => 'file',
							'severity' => wfIssues::SEVERITY_CRITICAL,
							'ignoreP' => $record->realPath,
							'ignoreC' => md5_file($record->realPath),
							'shortMsg' => __('File contains suspected malware URL: ', 'wordfence') . esc_html($record->getDisplayPath()),
							'longMsg' => wp_kses(sprintf(
								/* translators: 1. Malware signature matched text. 2. Malicious URL. 3. Malicious URL. */
								__('This file contains a suspected malware URL listed on Google\'s list of malware sites. Wordfence decodes %1$s when scanning files so the URL may not be visible if you view this file. The URL is: %2$s - More info available at <a href="http://safebrowsing.clients.google.com/safebrowsing/diagnostic?site=%3$s&client=googlechrome&hl=en-US" target="_blank" rel="noopener noreferrer">Google Safe Browsing diagnostic page<span class="screen-reader-text"> (opens in new tab)</span></a>.', 'wordfence'),
								esc_html($this->patterns['word3']),
								esc_html($result['URL']),
								urlencode($result['URL'])
							), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()), 'span'=>array('class'))),
							'data' => array_merge(array(
								'file' => $file,
								'realFile' => $record->realPath,
								'shac' => $record->SHAC,
								'badURL' => $result['URL'],
								'gsb' => 'goog-malware-shavar',
								'highSense' => $options['scansEnabled_highSense']
							), $dataForFile),
						));
					}
					else if ($result['badList'] == 'googpub-phish-shavar') {
						$this->addResult(array(
							'type' => 'file',
							'severity' => wfIssues::SEVERITY_CRITICAL,
							'ignoreP' => $record->realPath,
							'ignoreC' => md5_file($record->realPath),
							'shortMsg' => __('File contains suspected phishing URL: ', 'wordfence') . esc_html($record->getDisplayPath()),
							'longMsg' => __('This file contains a URL that is a suspected phishing site that is currently listed on Google\'s list of known phishing sites. The URL is: ', 'wordfence') . esc_html($result['URL']),
							'data' => array_merge(array(
								'file' => $file,
								'realFile' => $record->realPath,
								'shac' => $record->SHAC,
								'badURL' => $result['URL'],
								'gsb' => 'googpub-phish-shavar',
								'highSense' => $options['scansEnabled_highSense']
							), $dataForFile),
						));
					}
					else if ($result['badList'] == 'wordfence-dbl') {
						$this->addResult(array(
							'type' => 'file',
							'severity' => wfIssues::SEVERITY_CRITICAL,
							'ignoreP' => $record->realFile,
							'ignoreC' => md5_file($record->realPath),
							'shortMsg' => __('File contains suspected malware URL: ', 'wordfence') . esc_html($record->getDisplayPath()),
							'longMsg' => __('This file contains a URL that is currently listed on Wordfence\'s domain blocklist. The URL is: ', 'wordfence') . esc_html($result['URL']),
							'data' => array_merge(array(
								'file' => $file,
								'realFile' => $record->realPath,
								'shac' => $record->SHAC,
								'badURL' => $result['URL'],
								'gsb' => 'wordfence-dbl',
								'highSense' => $options['scansEnabled_highSense']
							), $dataForFile),
						));
					}
				}
			}
		}
		wfUtils::afterProcessingFile();
		
		wordfence::status(4, 'info', __('Finalizing malware scan results', 'wordfence'));
		
		if (!empty($this->results)) {
			$safeFiles = $this->scanEngine->isSafeFile(array_keys($this->resultFilesByShac));
			foreach ($safeFiles as $hash) {
				foreach ($this->resultFilesByShac[$hash] as $file)
					unset($this->results[$file]);
			}
		}
		
		if ($backtrackLimit !== false) { ini_set('pcre.backtrack_limit', $backtrackLimit); }
		return $this->results;
	}

	protected function writeScanningStatus() {
		wordfence::status(2, 'info', sprintf(
			/* translators: 1. Number of fils. 2. Seconds in millisecond precision. */
			__('Scanned contents of %1$d additional files at %2$.2f per second', 'wordfence'),
			$this->totalFilesScanned,
			($this->totalFilesScanned / (microtime(true) - $this->startTime))
		));
	}

	protected function addResult($result) {
		if (isset($result['data']['file'])) {
			$file = $result['data']['file'];
			$existing = array_key_exists($file, $this->results) ? $this->results[$file] : null;
			if ($existing === null || $existing['severity'] > $result['severity']) {
				$this->results[$file] = $result;
				if (isset($result['data']['shac'])) {
					$shac = $result['data']['shac'];
					if (!array_key_exists($shac, $this->resultFilesByShac))
						$this->resultFilesByShac[$shac] = [];
					$this->resultFilesByShac[$shac][] = $file;
				}
			}
		}
		else {
			$this->results[] = $result;
		}
	}

	/**
	 * @param string $file
	 * @return array
	 */
	private function dataForFile($file, $fullPath = null) {
		$loader = $this->scanEngine->getKnownFilesLoader();
		$data = array();
		if ($isKnownFile = $loader->isKnownFile($file)) {
			if ($loader->isKnownCoreFile($file)) {
				$data['cType'] = 'core';

			} else if ($loader->isKnownPluginFile($file)) {
				$data['cType'] = 'plugin';
				list($itemName, $itemVersion, $cKey) = $loader->getKnownPluginData($file);
				$data = array_merge($data, array(
					'cName'    => $itemName,
					'cVersion' => $itemVersion,
					'cKey'     => $cKey
				));

			} else if ($loader->isKnownThemeFile($file)) {
				$data['cType'] = 'theme';
				list($itemName, $itemVersion, $cKey) = $loader->getKnownThemeData($file);
				$data = array_merge($data, array(
					'cName'    => $itemName,
					'cVersion' => $itemVersion,
					'cKey'     => $cKey
				));
			}
		}
		
		$suppressDelete = false;
		$canRegenerate = false;
		if ($fullPath !== null) {
			$bootstrapPath = wordfence::getWAFBootstrapPath();
			$htaccessPath = wfUtils::getHomePath() . '.htaccess';
			$userIni = ini_get('user_ini.filename');
			$userIniPath = false;
			if ($userIni) {
				$userIniPath = wfUtils::getHomePath() . $userIni;
			}
			
			if ($fullPath == $htaccessPath) {
				$suppressDelete = true;	
			}
			else if ($userIniPath !== false && $fullPath == $userIniPath) {
				$suppressDelete = true;
			}
			else if ($fullPath == $bootstrapPath) {
				$suppressDelete = true;
				$canRegenerate = true;
			}
		}
		
		$localFile = realpath($this->path . $file);
		$isWPConfig = $localFile === ABSPATH . 'wp-config.php';

		$data['canDiff'] = $isKnownFile;
		$data['canFix'] = $isKnownFile && !$isWPConfig;
		$data['canDelete'] = !$isKnownFile && !$canRegenerate && !$suppressDelete && !$isWPConfig;
		$data['canRegenerate'] = $canRegenerate && !$isWPConfig;
		$data['wpconfig'] = $isWPConfig;

		return $data;
	}
}

/**
 * Convenience class for interfacing with the wfFileMods table.
 * 
 * @property string $filename
 * @property string $filenameMD5
 * @property string $newMD5
 * @property string $SHAC
 * @property string $stoppedOnSignature
 * @property string $stoppedOnPosition
 * @property string $isSafeFile
 */
class wordfenceMalwareScanFile {
	protected $_filename;
	protected $_realPath;
	protected $_filenameMD5;
	protected $_filenameMD5Hex;
	protected $_newMD5;
	protected $_shac;
	protected $_stoppedOnSignature;
	protected $_stoppedOnPosition;
	protected $_isSafeFile;
	
	protected static function getDB() {
		static $db = null;
		if ($db === null) {
			$db = new wfDB();
		}
		return $db;
	}
	
	public static function countRemaining() {
		$db = self::getDB();
		return $db->querySingle("SELECT COUNT(*) FROM " . wfDB::networkTable('wfFileMods') . " WHERE oldMD5 != newMD5 AND knownFile = 0");
	}
	
	public static function files($limit = 500) {
		$db = self::getDB();
		$result = $db->querySelect("SELECT filename, real_path, filenameMD5, HEX(newMD5) AS newMD5, HEX(SHAC) AS SHAC, stoppedOnSignature, stoppedOnPosition, isSafeFile FROM " . wfDB::networkTable('wfFileMods') . " WHERE oldMD5 != newMD5 AND knownFile = 0 AND isSafeFile != '1' LIMIT %d", $limit);
		$files = array();
		foreach ($result as $row) {
			$files[] = new wordfenceMalwareScanFile($row['filename'], $row['real_path'], $row['filenameMD5'], $row['newMD5'], $row['SHAC'], $row['stoppedOnSignature'], $row['stoppedOnPosition'], $row['isSafeFile']);
		}
		return $files;
	}
	
	public static function fileForPath($file) {
		$db = self::getDB();
		$row = $db->querySingleRec("SELECT filename, real_path, filenameMD5, HEX(newMD5) AS newMD5, HEX(SHAC) AS SHAC, stoppedOnSignature, stoppedOnPosition, isSafeFile FROM " . wfDB::networkTable('wfFileMods') . " WHERE filename = '%s'", $file);
		return new wordfenceMalwareScanFile($row['filename'], $row['real_path'], $row['filenameMD5'], $row['newMD5'], $row['SHAC'], $row['stoppedOnSignature'], $row['stoppedOnPosition'], $row['isSafeFile']);
	}
	
	public function __construct($filename, $realPath, $filenameMD5, $newMD5, $shac, $stoppedOnSignature, $stoppedOnPosition, $isSafeFile) {
		$this->_filename = $filename;
		$this->_realPath = $realPath;
		$this->_filenameMD5 = $filenameMD5;
		$this->_filenameMD5Hex = bin2hex($filenameMD5);
		$this->_newMD5 = $newMD5;
		$this->_shac = strtoupper($shac);
		$this->_stoppedOnSignature = $stoppedOnSignature;
		$this->_stoppedOnPosition = $stoppedOnPosition;
		$this->_isSafeFile = $isSafeFile;
	}
	
	public function __get($key) {
		switch ($key) {
			case 'filename':
				return $this->_filename;
			case 'realPath':
				return $this->_realPath;
			case 'filenameMD5':
				return $this->_filenameMD5;
			case 'filenameMD5Hex':
				return $this->_filenameMD5Hex;
			case 'newMD5':
				return $this->_newMD5;
			case 'SHAC':
				return $this->_shac;
			case 'stoppedOnSignature':
				return $this->_stoppedOnSignature;
			case 'stoppedOnPosition':
				return $this->_stoppedOnPosition;
			case 'isSafeFile':
				return $this->_isSafeFile;
		}
	}
	
	public function __toString() {
		return "Record [filename: {$this->filename}, realPath: {$this->realPath}, filenameMD5: {$this->filenameMD5}, newMD5: {$this->newMD5}, stoppedOnSignature: {$this->stoppedOnSignature}, stoppedOnPosition: {$this->stoppedOnPosition}]";
	}

	public static function markCompleteBatch($records) {
		if (empty($records))
			return;
		$db = self::getDB();
		$db->update(
			wfDB::networkTable('wfFileMods'),
			[
				'oldMD5' => 'newMD5'
			],
			[
				'filenameMD5' => array_map(function($record) { return $record->filenameMD5Hex; }, $records)
			],
			[
				'filenameMD5' => 'UNHEX(%s)'
			]
		);
	}
	
	public function updateStoppedOn($signature, $position) {
		$this->_stoppedOnSignature = $signature;
		$this->_stoppedOnPosition = $position;
		$db = self::getDB();
		$db->queryWrite("UPDATE " . wfDB::networkTable('wfFileMods') . " SET stoppedOnSignature = '%s', stoppedOnPosition = %d WHERE filenameMD5 = UNHEX(%s)", $this->stoppedOnSignature, $this->stoppedOnPosition, $this->filenameMD5Hex);
	}
	
	public function getDisplayPath() {
		if (preg_match('#(^|/)..(/|$)#', $this->filename))
			return $this->realPath;
		return $this->filename;
	}

}lib/menu_firewall.php000064400000004167150755146450010700 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
if (!wfOnboardingController::shouldShowAttempt3() && wfConfig::get('touppPromptNeeded')) {
	echo wfView::create('gdpr/disabled-overlay')->render();
	echo wfView::create('gdpr/banner')->render();
}
?>
<?php if (isset($storageExceptionMessage)): ?>
	<div class="notice notice-error"><p><?php echo $storageExceptionMessage; ?></p></div>
<?php endif; ?>
<div class="wrap wordfence">
	<div class="wf-container-fluid">
		<?php
		echo wfView::create('common/page-tabbar', array(
			'tabs' => array(
				new wfTab('waf', 'waf', __('Firewall', 'wordfence'), __('Web Application Firewall', 'wordfence')),
				new wfTab('blocking', 'blocking', __('Blocking', 'wordfence'), __('Blocking', 'wordfence')),
			),
		))->render();
		?>
		<div class="wf-row">
			<div class="<?php echo wfStyle::contentClasses(); ?>">
				<div id="waf" class="wf-tab-content" data-title="Web Application Firewall">
					<?php
					echo wfView::create('common/section-title', array(
						'title' => __('Firewall', 'wordfence'),
						'headerID' => 'wf-section-firewall',
						'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF),
						'helpLabelHTML' => wp_kses(__('Learn more<span class="wf-hidden-xs"> about the Firewall</span>', 'wordfence'), array('span'=>array('class'=>array()))),
					))->render();
					require(dirname(__FILE__) . '/menu_firewall_waf.php');
					?>
				</div> <!-- end waf block -->
				<div id="blocking" class="wf-tab-content" data-title="Blocking">
					<?php
					echo wfView::create('common/section-title', array(
						'title' => __('Blocking', 'wordfence'),
						'headerID' => 'wf-section-blocking',
						'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_BLOCKING),
						'helpLabelHTML' => wp_kses(__('Learn more<span class="wf-hidden-xs"> about Blocking</span>', 'wordfence'), array('span'=>array('class'=>array()))),
					))->render();
					require(dirname(__FILE__) . '/menu_firewall_blocking.php');
					?>
				</div> <!-- end blocking block -->
			</div> <!-- end content block -->
		</div> <!-- end row -->
	</div> <!-- end container -->
</div>lib/wfVersionSupport.php000064400000000677150755146450011430 0ustar00<?php

$wfPHPDeprecatingVersion = '7.0.0'; //When greater than PHP_MINIMUM, will issue a discontinuing warning the first time we check it and find a version less than this (also applies to the other similar constant pairs)
$wfPHPMinimumVersion = '5.5.0'; //The currently supported minimum

$wfOpenSSLDeprecatingVersion = '1.0.1';
$wfOpenSSLMinimumVersion = '1.0.1';

$wfWordPressDeprecatingVersion = '4.7.0';
$wfWordPressMinimumVersion = '3.9.0';
lib/sodium_compat_fast.php000064400000000271150755146450011717 0ustar00<?php

if (!class_exists('ParagonIE_Sodium_Compat')) {
	require_once WORDFENCE_PATH . '/crypto/vendor/paragonie/sodium_compat/autoload.php';
}
ParagonIE_Sodium_Compat::$fastMult = true;lib/menu_tools.php000064400000002636150755146450010232 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * @var string $subpage
 */
?>
<?php
if (!wfOnboardingController::shouldShowAttempt3() && wfConfig::get('touppPromptNeeded')) {
	echo wfView::create('gdpr/disabled-overlay')->render();
	echo wfView::create('gdpr/banner')->render();
}
?>
<div class="wrap wordfence">
	<div class="wf-container-fluid">
		<?php
		$tabsArray = array();
		if (wfCredentialsController::allowLegacy2FA()) {
			$tabsArray[] = array('twofactor', __('Two-Factor Authentication', 'wordfence'));
		}
		$tabsArray[] = array('livetraffic', __('Live Traffic', 'wordfence'));
		$tabsArray[] = array('whois', __('Whois Lookup', 'wordfence'));
		$tabsArray[] = array('importexport', __('Import/Export Options', 'wordfence'));
		$tabsArray[] = array('diagnostics', __('Diagnostics', 'wordfence'));

		$tabs = array();
		foreach ($tabsArray as $tab) {
			list($tabID, $tabLabel) = $tab;
			$tabs[] = new wfTab($tabID,
				network_admin_url('admin.php?page=WordfenceTools&subpage=' . rawurlencode($tabID)),
				$tabLabel, $tabLabel, $subpage === $tabID);
		}

		echo wfView::create('common/page-fixed-tabbar', array(
			'tabs' => $tabs,
		))->render();
		?>
		<div class="wf-row">
			<div class="<?php echo wfStyle::contentClasses(); ?>">
				<div class="wf-tab-content wf-active">
					<?php echo $content ?>
				</div>
			</div> <!-- end content block -->
		</div> <!-- end row -->
	</div> <!-- end container -->
</div>lib/menu_tools_diagnostic.php000064400000142461150755146450012437 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }

/** @var boolean $inEmail */

$diagnostic = new wfDiagnostic;
$plugins = get_plugins();
$activePlugins = array_flip(get_option('active_plugins'));
$activeNetworkPlugins = is_multisite() ? array_flip(wp_get_active_network_plugins()) : array();
$muPlugins = get_mu_plugins();
$themes = wp_get_themes();
$currentTheme = wp_get_theme();
$cols = 3;

$w = new wfConfig();
if (!isset($sendingDiagnosticEmail)) {
	$sendingDiagnosticEmail = false;
}
?>
<?php if (!$sendingDiagnosticEmail): ?>
<script type="application/javascript">
	(function($) {
		$(function() {
			document.title = "<?php esc_attr_e('Diagnostics', 'wordfence'); ?>" + " \u2039 " + WFAD.basePageName;
		});
	})(jQuery);
</script>
<?php endif; ?>
<div id="wf-diagnostics">
	<?php if (!$sendingDiagnosticEmail): ?>
		<div class="wf-diagnostics-wrapper">
			<div class="wf-flex-row">
				<div class="wf-flex-row-1">
					<?php echo wp_kses(sprintf(__('This page shows information that can be used for troubleshooting conflicts, configuration issues, or compatibility with other plugins, themes, or a host\'s environment. Failing tests are not always a sign of something that you need to fix, but can help the Wordfence team when troubleshooting a problem. (<a href="%s" target="_blank" rel="noopener noreferrer">Learn More <span class="screen-reader-text">opens in new tab</span></a>)', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_DIAGNOSTICS)), array('a' => array('href' => array(), 'target' => array(), 'rel' => array()), 'span' => array('class' => array()))) ?>
				</div>
				<div class="wf-flex-row-0 wf-padding-add-left">
					<div id="sendByEmailThanks" class="hidden">
						<h3><?php esc_html_e('Thanks for sending your diagnostic page over email', 'wordfence'); ?></h3>
					</div>
					<div id="sendByEmailDiv" class="wf-add-bottom">
						<span class="wf-nowrap">
							<input class="wf-btn wf-btn-primary wf-btn-sm" type="submit" id="exportDiagnostics" value="Export"/>
							<input class="wf-btn wf-btn-primary wf-btn-sm" type="submit" id="sendByEmail" value="Send Report by Email"/>
							<input class="wf-btn wf-btn-default wf-btn-sm" type="button" id="expandAllDiagnostics" value="Expand All Diagnostics"/>
						</span>
					</div>
				</div>
			</div>
			<div id="sendByEmailForm" class="wf-block wf-active hidden">
				<div class="wf-block-header">
					<div class="wf-block-header-content">
						<div class="wf-block-title">
							<strong><?php esc_html_e('Send Report by Email', 'wordfence') ?></strong>
						</div>
					</div>
				</div>
				<div class="wf-block-content wf-clearfix">
					<ul class="wf-block-list">
						<li>
							<div><?php esc_html_e('Email address:', 'wordfence'); ?></div>
							<div style="width: 40%">
								<p><input class="wf-input-text" type="email" id="_email" value="wftest@wordfence.com"/>
								</p>
							</div>
						</li>
						<li>
							<div><?php esc_html_e('Ticket Number/Forum Username:', 'wordfence'); ?></div>
							<div style="width: 40%">
								<p><input class="wf-input-text" type="text" id="_ticketnumber" required/></p>
							</div>
						</li>
						<li>
							<p>
								<input class="wf-btn wf-btn-primary" type="button" id="doSendEmail" value="Send"/>
							</p>
						</li>
					</ul>
				</div>
			</div>
		</div>
	<?php endif; ?>
	<div class="wf-diagnostics-wrapper">
		<?php foreach ($diagnostic->getResults() as $title => $tests):
			$key = sanitize_key('wf-diagnostics-' . $title);
			$hasFailingTest = false;
			foreach ($tests['results'] as $result) {
				$infoOnly = isset($result['infoOnly']) && $result['infoOnly'];
				if (!$result['test'] && !$infoOnly) {
					$hasFailingTest = true;
					break;
				}
			}

			if ($inEmail): ?>
				<table>
					<thead>
					<tr>
						<th colspan="2"><?php echo esc_html($title) ?></th>
					</tr>
					</thead>
					<tbody>
					<?php foreach ($tests['results'] as $result): ?>
						<?php
						$infoOnly = isset($result['infoOnly']) && $result['infoOnly'];
						?>
						<tr>
							<td style="width: 75%; min-width: 300px"><?php echo (is_array($result['label']) && isset($result['label']['raw']) && $result['label']['raw'] ? $result['label']['value'] : wp_kses($result['label'], array(
									'code'   => array(),
									'strong' => array(),
									'em'     => array(),
									'a'      => array('href' => true),
									'span'	 => array('class' => true)
								))) ?></td>
							<td>
								<?php if ($infoOnly): ?>
									<div class="wf-result-info"><?php echo (is_array($result['message']) && isset($result['message']['escaped']) ? $result['message']['escaped'] : nl2br(esc_html($result['message']))); ?></div>
								<?php elseif ($result['test']): ?>
									<div class="wf-result-success"><?php echo (is_array($result['message']) && isset($result['message']['escaped']) ? $result['message']['escaped'] : nl2br(esc_html($result['message']))); ?></div>
								<?php else: ?>
									<div class="wf-result-error"><?php echo (is_array($result['message']) && isset($result['message']['escaped']) ? $result['message']['escaped'] : nl2br(esc_html($result['message']))); ?></div>
								<?php endif ?>
								<?php if (isset($result['detail']) && !empty($result['detail'])): ?>
									<p><strong><?php esc_html_e('Additional Detail', 'wordfence'); ?></strong><br><?php echo (is_array($result['detail']) && isset($result['detail']['escaped']) ? $result['detail']['escaped'] : nl2br(esc_html($result['detail']))); ?></p>
								<?php endif; ?>
							</td>
						</tr>
					<?php endforeach ?>
					</tbody>
				</table>
			<?php else: ?>
				<div class="wf-block<?php echo (wfPersistenceController::shared()->isActive($key) ? ' wf-active' : '') .
					($hasFailingTest ? ' wf-diagnostic-fail' : '') ?>" data-persistence-key="<?php echo esc_attr($key) ?>">
					<div class="wf-block-header">
						<div class="wf-block-header-content">
							<div class="wf-block-title">
								<strong><?php echo esc_html($title) ?></strong>
								<span class="wf-text-small"><?php echo esc_html($tests['description']) ?></span>
							</div>
							<div class="wf-block-header-action">
								<div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive($key) ? 'true' : 'false'); ?>" tabindex="0"></div>
							</div>
						</div>
					</div>
					<div class="wf-block-content wf-clearfix">
						<ul class="wf-block-list">
							<?php foreach ($tests['results'] as $key => $result): ?>
								<?php
								$infoOnly = isset($result['infoOnly']) && $result['infoOnly'];
								?>
								<li>
									<div style="width: 75%; min-width: 300px;"><?php echo (is_array($result['label']) && isset($result['label']['raw']) && $result['label']['raw'] ? $result['label']['value'] : wp_kses($result['label'], array(
											'code'   => array(),
											'strong' => array(),
											'em'     => array(),
											'a'      => array('href' => true),
										))) ?></div>
									<div class="wf-right">
									<?php if ($infoOnly): ?>
										<div class="wf-result-info"><?php echo (is_array($result['message']) && isset($result['message']['escaped']) ? $result['message']['escaped'] : nl2br(esc_html($result['message']))); ?></div>
									<?php elseif ($result['test']): ?>
										<div class="wf-result-success"><?php echo (is_array($result['message']) && isset($result['message']['escaped']) ? $result['message']['escaped'] : nl2br(esc_html($result['message']))); ?></div>
									<?php else: ?>
										<div class="wf-result-error"><?php echo (is_array($result['message']) && isset($result['message']['escaped']) ? $result['message']['escaped'] : nl2br(esc_html($result['message']))); ?></div>
									<?php endif ?>
									<?php if (isset($result['detail']) && !empty($result['detail'])): ?>
											<p><a href="#" onclick="jQuery('#wf-diagnostics-detail-<?php echo esc_attr($key); ?>').show(); jQuery(this).hide(); return false;" role="button"><?php esc_html_e('View Additional Detail', 'wordfence'); ?></a></p>
											<pre class="wf-pre wf-split-word" id="wf-diagnostics-detail-<?php echo esc_attr($key); ?>" style="max-width: 600px; display: none;"><?php echo (is_array($result['detail']) && isset($result['detail']['escaped']) ? $result['detail']['escaped'] : nl2br(esc_html($result['detail']))); ?></pre>
									<?php endif; ?>
										</div>
								</li>
							<?php endforeach ?>
						</ul>
					</div>
				</div>
			<?php endif ?>

		<?php endforeach ?>
		<?php
		$howGet = wfConfig::get('howGetIPs', false);
		list($currentIP, $currentServerVarForIP) = wfUtils::getIPAndServerVariable();
		$howGetHasErrors = $howGet && (! $currentServerVarForIP || $howGet !== $currentServerVarForIP);
		?>
		<div class="wf-block<?php echo ($howGetHasErrors ? ' wf-diagnostic-fail' : '') . (wfPersistenceController::shared()->isActive('wf-diagnostics-client-ip') ? ' wf-active' : '') ?>" data-persistence-key="<?php echo esc_attr('wf-diagnostics-client-ip') ?>">
			<div class="wf-block-header">
				<div class="wf-block-header-content">
					<div class="wf-block-title">
						<strong><?php esc_html_e('IP Detection', 'wordfence') ?></strong>
						<span class="wf-text-small"><?php esc_html_e('Methods of detecting a visitor\'s IP address.', 'wordfence') ?></span>
					</div>
					<div class="wf-block-header-action">
						<div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive('wf-diagnostics-client-ip') ? 'true' : 'false'); ?>" tabindex="0"></div>
					</div>
				</div>
			</div>
			<div class="wf-block-content wf-clearfix wf-padding-no-left wf-padding-no-right">

				<table class="wf-striped-table"<?php echo !empty($inEmail) ? ' border=1' : '' ?>>
					<tbody class="thead">
					<tr>
						<th><?php esc_html_e('IPs', 'wordfence'); ?></th>
						<th><?php esc_html_e('Value', 'wordfence'); ?></th>
						<th><?php esc_html_e('Used', 'wordfence'); ?></th>
					</tr>
					</tbody>
					<tbody>
					<?php
					$serverVariables = array(
						'REMOTE_ADDR'           => 'REMOTE_ADDR',
						'HTTP_CF_CONNECTING_IP' => 'CF-Connecting-IP',
						'HTTP_X_REAL_IP'        => 'X-Real-IP',
						'HTTP_X_FORWARDED_FOR'  => 'X-Forwarded-For',
					);
					foreach (wfUtils::getAllServerVariableIPs() as $variable => $ip): ?>
						<tr>
							<td><?php echo isset($serverVariables[$variable]) ? $serverVariables[$variable] : $variable ?></td>
							<td><?php
								if (! $ip) {
									_e('(not set)', 'wordfence');
								} elseif (is_array($ip)) {
									$output = array_map('esc_html', $ip);
									echo str_replace($currentIP, "<strong>{$currentIP}</strong>", implode(', ', $output));
								} else {
									echo esc_html($ip);
								}
							?></td>
							<?php if ($currentServerVarForIP && $currentServerVarForIP === $variable): ?>
								<td class="wf-result-success"><?php esc_html_e('In use', 'wordfence'); ?></td>
							<?php elseif ($howGet === $variable): ?>
								<td class="wf-result-error"><?php esc_html_e('Configured but not valid', 'wordfence'); ?></td>
							<?php else: ?>
								<td></td>
							<?php endif ?>
						</tr>
					<?php endforeach ?>
					<tr>
						<td><?php esc_html_e('Trusted Proxies', 'wordfence'); ?></td>
						<td><?php $proxies = wfConfig::get('howGetIPs_trusted_proxies', ''); echo esc_html(implode(', ', explode("\n", empty($proxies) ? __('(not set)', 'wordfence') : $proxies))); ?></td>
						<td></td>
					</tr>
					<tr>
						<td><?php esc_html_e('Trusted Proxy Preset', 'wordfence'); ?></td>
						<td><?php $preset = wfConfig::get('howGetIPs_trusted_proxy_preset'); $presets = wfConfig::getJSON('ipResolutionList', array()); echo esc_html((is_array($presets) && isset($presets[$preset])) ? $presets[$preset]['name'] : __('(not set)', 'wordfence')); ?></td>
						<td></td>
					</tr>
					</tbody>
				</table>

			</div>
		</div>

		<div class="wf-block<?php echo(wfPersistenceController::shared()->isActive('wf-diagnostics-wordpress-constants') ? ' wf-active' : '') ?>" data-persistence-key="<?php echo esc_attr('wf-diagnostics-wordpress-constants') ?>">
			<div class="wf-block-header">
				<div class="wf-block-header-content">
					<div class="wf-block-title">
						<strong><?php esc_html_e('WordPress Settings', 'wordfence') ?></strong>
						<span class="wf-text-small"><?php esc_html_e('WordPress version and internal settings/constants.', 'wordfence') ?></span>
					</div>
					<div class="wf-block-header-action">
						<div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive('wf-diagnostics-wordpress-constants') ? 'true' : 'false'); ?>" tabindex="0"></div>
					</div>
				</div>
			</div>
			<div class="wf-block-content wf-clearfix wf-padding-no-left wf-padding-no-right">
				<table class="wf-striped-table"<?php echo !empty($inEmail) ? ' border=1' : '' ?>>
					<tbody>
					<?php
					foreach (wfDiagnostic::getWordpressValues() as $settingName => $settingData):
						$escapedName = esc_html($settingName);
						$escapedDescription = '';
						$escapedValue = __('(not set)', 'wordfence');
						if (is_array($settingData)) {
							$escapedDescription = esc_html($settingData['description']);
							if (isset($settingData['value'])) {
								$escapedValue = esc_html($settingData['value']);
							}
						} else {
							$escapedDescription = esc_html($settingData);
							if (defined($settingName)) {
								$escapedValue = esc_html(constant($settingName));
							}
						}
						?>
						<tr>
							<td><strong><?php echo $escapedName ?></strong></td>
							<td><?php echo $escapedDescription ?></td>
							<td><?php echo $escapedValue ?></td>
						</tr>
					<?php endforeach ?>
					</tbody>
				</table>
			</div>
		</div>

		<div class="wf-block<?php echo(wfPersistenceController::shared()->isActive('wf-diagnostics-wordpress-plugins') ? ' wf-active' : '') ?>" data-persistence-key="<?php echo esc_attr('wf-diagnostics-wordpress-plugins') ?>">
			<div class="wf-block-header">
				<div class="wf-block-header-content">
					<div class="wf-block-title">
						<strong><?php esc_html_e('WordPress Plugins', 'wordfence') ?></strong>
						<span class="wf-text-small"><?php esc_html_e('Status of installed plugins.', 'wordfence') ?></span>
					</div>
					<div class="wf-block-header-action">
						<div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive('wf-diagnostics-wordpress-plugins') ? 'true' : 'false'); ?>" tabindex="0"></div>
					</div>
				</div>
			</div>
			<div class="wf-block-content wf-clearfix wf-padding-no-left wf-padding-no-right">
				<table class="wf-striped-table"<?php echo !empty($inEmail) ? ' border=1' : '' ?>>
					<tbody>
					<?php foreach ($plugins as $plugin => $pluginData): ?>
						<?php
						$slug = $plugin;
						if (preg_match('/^([^\/]+)\//', $plugin, $matches)) {
							$slug = $matches[1];
						}
						else if (preg_match('/^([^\/.]+)\.php$/', $plugin, $matches)) {
							$slug = $matches[1];
						}
						?>
						<tr>
							<td>
								<strong><?php echo esc_html($pluginData['Name']); ?> (<?php echo esc_html($slug); ?>)</strong>
								<?php if (!empty($pluginData['Version'])): ?>
									- <?php echo esc_html(sprintf(__('Version %s', 'wordfence'), $pluginData['Version'])); ?>
								<?php endif ?>
							</td>
							<?php if (array_key_exists(trailingslashit(WP_PLUGIN_DIR) . $plugin, $activeNetworkPlugins)): ?>
								<td class="wf-result-success"><?php esc_html_e('Network Activated', 'wordfence'); ?></td>
							<?php elseif (array_key_exists($plugin, $activePlugins)): ?>
								<td class="wf-result-success"><?php esc_html_e('Active', 'wordfence'); ?></td>
							<?php else: ?>
								<td class="wf-result-inactive"><?php esc_html_e('Inactive', 'wordfence'); ?></td>
							<?php endif ?>
						</tr>
					<?php endforeach ?>
					</tbody>
				</table>
			</div>
		</div>
		<div class="wf-block<?php echo(wfPersistenceController::shared()->isActive('wf-diagnostics-mu-wordpress-plugins') ? ' wf-active' : '') ?>" data-persistence-key="<?php echo esc_attr('wf-diagnostics-mu-wordpress-plugins') ?>">
			<div class="wf-block-header">
				<div class="wf-block-header-content">
					<div class="wf-block-title">
						<strong><?php esc_html_e('Must-Use WordPress Plugins', 'wordfence') ?></strong>
						<span class="wf-text-small"><?php esc_html_e('WordPress "mu-plugins" that are always active, including those provided by hosts.', 'wordfence') ?></span>
					</div>
					<div class="wf-block-header-action">
						<div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive('wf-diagnostics-mu-wordpress-plugins') ? 'true' : 'false'); ?>" tabindex="0"></div>
					</div>
				</div>
			</div>
			<div class="wf-block-content wf-clearfix wf-padding-no-left wf-padding-no-right">
				<table class="wf-striped-table"<?php echo !empty($inEmail) ? ' border=1' : '' ?>>
					<?php if (!empty($muPlugins)): ?>
						<tbody>
						<?php foreach ($muPlugins as $plugin => $pluginData): ?>
							<?php
							$slug = $plugin;
							if (preg_match('/^([^\/]+)\//', $plugin, $matches)) {
								$slug = $matches[1];
							}
							else if (preg_match('/^([^\/.]+)\.php$/', $plugin, $matches)) {
								$slug = $matches[1];
							}
							?>
							<tr>
								<td>
									<strong><?php echo esc_html($pluginData['Name']) ?> (<?php echo esc_html($slug); ?>)</strong>
									<?php if (!empty($pluginData['Version'])): ?>
										- <?php echo esc_html(sprintf(/* translators: Plugin version. */ __('Version %s', 'wordfence'), $pluginData['Version'])); ?>
									<?php endif ?>
								</td>
								<td class="wf-result-success"><?php esc_html_e('Active', 'wordfence'); ?></td>
							</tr>
						<?php endforeach ?>
						</tbody>
					<?php else: ?>
						<tbody>
						<tr>
							<td><?php esc_html_e('No MU-Plugins', 'wordfence'); ?></td>
						</tr>
						</tbody>

					<?php endif ?>
				</table>
			</div>
		</div>
		<div class="wf-block<?php echo(wfPersistenceController::shared()->isActive('wf-diagnostics-dropin-wordpress-plugins') ? ' wf-active' : '') ?>" data-persistence-key="<?php echo esc_attr('wf-diagnostics-dropin-wordpress-plugins') ?>">
			<div class="wf-block-header">
				<div class="wf-block-header-content">
					<div class="wf-block-title">
						<strong><?php esc_html_e('Drop-In WordPress Plugins', 'wordfence') ?></strong>
						<span class="wf-text-small"><?php esc_html_e('WordPress "drop-in" plugins that are active.', 'wordfence') ?></span>
					</div>
					<div class="wf-block-header-action">
						<div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive('wf-diagnostics-dropin-wordpress-plugins') ? 'true' : 'false'); ?>" tabindex="0"></div>
					</div>
				</div>
			</div>
			<div class="wf-block-content wf-clearfix wf-padding-no-left wf-padding-no-right">
				<table class="wf-striped-table"<?php echo !empty($inEmail) ? ' border=1' : '' ?>>
					<tbody>
					<?php
					//Taken from plugin.php and modified to always show multisite drop-ins
					$dropins = array(
						'advanced-cache.php'	 => array( __( 'Advanced caching plugin', 'wordfence' ), 'WP_CACHE' ), // WP_CACHE
						'db.php'            	 => array( __( 'Custom database class', 'wordfence' ), true ), // auto on load
						'db-error.php'      	 => array( __( 'Custom database error message', 'wordfence' ), true ), // auto on error
						'install.php'       	 => array( __( 'Custom installation script', 'wordfence' ), true ), // auto on installation
						'maintenance.php'   	 => array( __( 'Custom maintenance message', 'wordfence' ), true ), // auto on maintenance
						'object-cache.php'  	 => array( __( 'External object cache', 'wordfence' ), true ), // auto on load
						'php-error.php'          => array( __( 'Custom PHP error message', 'wordfence' ), true ), // auto on error
						'fatal-error-handler.php'=> array( __( 'Custom PHP fatal error handler', 'wordfence' ), true ), // auto on error
					);
					$dropins['sunrise.php'       ] = array( __( 'Executed before Multisite is loaded', 'wordfence' ), is_multisite() && 'SUNRISE' ); // SUNRISE
					$dropins['blog-deleted.php'  ] = array( __( 'Custom site deleted message', 'wordfence' ), is_multisite() ); // auto on deleted blog
					$dropins['blog-inactive.php' ] = array( __( 'Custom site inactive message', 'wordfence' ), is_multisite() ); // auto on inactive blog
					$dropins['blog-suspended.php'] = array( __( 'Custom site suspended message', 'wordfence' ), is_multisite() ); // auto on archived or spammed blog
					?>
					<?php foreach ($dropins as $file => $data): ?>
						<?php
						$active = file_exists(WP_CONTENT_DIR . DIRECTORY_SEPARATOR . $file) && is_readable(WP_CONTENT_DIR . DIRECTORY_SEPARATOR . $file) && $data[1];
						?>
						<tr>
							<td>
								<strong><?php echo esc_html($data[0]) ?> (<?php echo esc_html($file); ?>)</strong>
							</td>
							<?php if ($active): ?>
								<td class="wf-result-success"><?php esc_html_e('Active', 'wordfence'); ?></td>
							<?php else: ?>
								<td class="wf-result-inactive"><?php esc_html_e('Inactive', 'wordfence'); ?></td>
							<?php endif; ?>
						</tr>
					<?php endforeach ?>
					</tbody>
				</table>
			</div>
		</div>
		<div class="wf-block<?php echo(wfPersistenceController::shared()->isActive('wf-diagnostics-wordpress-themes') ? ' wf-active' : '') ?>" data-persistence-key="<?php echo esc_attr('wf-diagnostics-wordpress-themes') ?>">
			<div class="wf-block-header">
				<div class="wf-block-header-content">
					<div class="wf-block-title">
						<strong><?php esc_html_e('Themes', 'wordfence') ?></strong>
						<span class="wf-text-small"><?php esc_html_e('Status of installed themes.', 'wordfence') ?></span>
					</div>
					<div class="wf-block-header-action">
						<div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive('wf-diagnostics-wordpress-themes') ? 'true' : 'false'); ?>" tabindex="0"></div>
					</div>
				</div>
			</div>
			<div class="wf-block-content wf-clearfix wf-padding-no-left wf-padding-no-right">
				<table class="wf-striped-table"<?php echo !empty($inEmail) ? ' border=1' : '' ?>>
					<?php if (!empty($themes)): ?>
						<tbody>
						<?php foreach ($themes as $theme => $themeData): ?>
							<?php
							$slug = $theme;
							if (preg_match('/^([^\/]+)\//', $theme, $matches)) {
								$slug = $matches[1];
							}
							else if (preg_match('/^([^\/.]+)\.php$/', $theme, $matches)) {
								$slug = $matches[1];
							}
							?>
							<tr>
								<td>
									<strong><?php echo esc_html($themeData['Name']) ?> (<?php echo esc_html($slug); ?>)</strong>
									<?php if (!empty($themeData['Version'])): ?>
										- <?php echo esc_html(sprintf(/* translators: Theme version. */ __('Version %s', 'wordfence'), $themeData['Version'])); ?>
									<?php endif ?>
								<?php if ($currentTheme instanceof WP_Theme && $theme === $currentTheme->get_stylesheet()): ?>
									<td class="wf-result-success"><?php esc_html_e('Active', 'wordfence'); ?></td>
								<?php else: ?>
									<td class="wf-result-inactive"><?php esc_html_e('Inactive', 'wordfence'); ?></td>
								<?php endif ?>
							</tr>
						<?php endforeach ?>
						</tbody>
					<?php else: ?>
						<tbody>
						<tr>
							<td><?php esc_html_e('No Themes', 'wordfence'); ?></td>
						</tr>
						</tbody>

					<?php endif ?>
				</table>
			</div>
		</div>
		<div class="wf-block<?php echo(wfPersistenceController::shared()->isActive('wf-diagnostics-wordpress-cron-jobs') ? ' wf-active' : '') ?>" data-persistence-key="<?php echo esc_attr('wf-diagnostics-wordpress-cron-jobs') ?>">
			<div class="wf-block-header">
				<div class="wf-block-header-content">
					<div class="wf-block-title">
						<strong><?php esc_html_e('Cron Jobs', 'wordfence') ?></strong>
						<span class="wf-text-small"><?php esc_html_e('List of WordPress cron jobs scheduled by WordPress, plugins, or themes.', 'wordfence') ?></span>
					</div>
					<div class="wf-block-header-action">
						<div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive('wf-diagnostics-wordpress-cron-jobs') ? 'true' : 'false'); ?>" tabindex="0"></div>
					</div>
				</div>
			</div>
			<div class="wf-block-content wf-clearfix wf-padding-no-left wf-padding-no-right">
				<table class="wf-striped-table"<?php echo !empty($inEmail) ? ' border=1' : '' ?>>
					<tbody>
					<?php
					$cron = _get_cron_array();

					foreach ($cron as $timestamp => $values) {
						if (is_array($values)) {
							foreach ($values as $cron_job => $v) {
								if (is_numeric($timestamp)) {
									$overdue = ((time() - 1800) > $timestamp);
									?>
									<tr<?php echo $overdue ? ' class="wf-overdue-cron"' : ''; ?>>
										<td><?php echo esc_html(date('r', $timestamp)) . ($overdue ? ' <strong>(' . esc_html__('Overdue', 'wordfence') . ')</strong>' : '') ?></td>
										<td><?php echo esc_html($cron_job) ?></td>
									</tr>
									<?php
								}
							}
						}
					}
					?>
					</tbody>
				</table>
			</div>
		</div>

		<?php
		global $wpdb;
		$wfdb = new wfDB();
		//This must be done this way because MySQL with InnoDB tables does a full regeneration of all metadata if we don't. That takes a long time with a large table count.
		$tables = $wfdb->querySelect('SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() ORDER BY TABLE_NAME ASC LIMIT 250');
		$total = $wfdb->querySingle('SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE()');
		foreach ($tables as &$t) {
			$t = "'" . esc_sql($t['TABLE_NAME']) . "'";
		}
		unset($t);
		$q = $wfdb->querySelect("SHOW TABLE STATUS WHERE Name IN (" . implode(',', $tables) . ')');
		if ($q):
			$databaseCols = count($q[0]);
			?>
			<div class="wf-block<?php echo(wfPersistenceController::shared()->isActive('wf-diagnostics-database-tables') ? ' wf-active' : '') ?>" data-persistence-key="<?php echo esc_attr('wf-diagnostics-database-tables') ?>">
				<div class="wf-block-header">
					<div class="wf-block-header-content">
						<div class="wf-block-title">
							<strong><?php esc_html_e('Database Tables', 'wordfence') ?></strong>
							<span class="wf-text-small"><?php esc_html_e('Database table names, sizes, timestamps, and other metadata.', 'wordfence') ?></span>
						</div>
						<div class="wf-block-header-action">
							<div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive('wf-diagnostics-database-tables') ? 'true' : 'false'); ?>" tabindex="0"></div>
						</div>
					</div>
				</div>
				<div class="wf-block-content wf-clearfix wf-padding-no-left wf-padding-no-right">
					<ul class="wf-block-list wf-padding-add-left-large wf-padding-add-right-large">
						<li>
							<div style="width: 75%; min-width: 300px;"><?php esc_html_e('Wordfence Table Check', 'wordfence'); ?></div>
							<div class="wf-right">
								<?php if ($total > 250): ?>
									<div class="wf-result-info"><?php esc_html_e('Unable to verify - table count too high', 'wordfence'); ?></div>
								<?php else:
									$hasAll = true;
									$schemaTables = wfSchema::tableList();
									$existingTables = wfUtils::array_column($q, 'Name');
									if (WFWAF_IS_WINDOWS) { $existingTables = wfUtils::array_strtolower($existingTables); } //Windows MySQL installations are case-insensitive
									$missingTables = array();
									foreach ($schemaTables as $t) {
										$table = wfDB::networkTable($t);
										if (WFWAF_IS_WINDOWS) { $table = strtolower($table); }
										if (!in_array($table, $existingTables)) {
											$hasAll = false;
											$missingTables[] = $t;
										}
									}

									foreach (
										array(
											\WordfenceLS\Controller_DB::TABLE_2FA_SECRETS,
											\WordfenceLS\Controller_DB::TABLE_SETTINGS,
										) as $t) {
										$table = \WordfenceLS\Controller_DB::network_table($t);
										if (!in_array($table, $existingTables)) {
											$hasAll = false;
											$missingTables[] = $t;
										}
									}

									if ($hasAll): ?>
									<div class="wf-result-success"><?php esc_html_e('All Tables Exist', 'wordfence'); ?></div>
									<?php else: ?>
									<div class="wf-result-error"><?php echo esc_html(sprintf(
											/* translators: 1. WordPress table prefix. 2. Wordfence table case. 3. List of database tables. */
											__('Tables missing (prefix %1$s, %2$s): %3$s', 'wordfence'), wfDB::networkPrefix(), wfSchema::usingLowercase() ? __('lowercase', 'wordfence') : __('regular case', 'wordfence'), implode(', ', $missingTables))); ?></div>
									<?php endif; ?>
								<?php endif; ?>
							</div>
						</li>
						<li style="border-bottom: 1px solid #e2e2e2;">
							<div style="width: 75%; min-width: 300px;"><?php esc_html_e('Number of Database Tables', 'wordfence'); ?></div>
							<div class="wf-right">
								<div class="wf-result-info"><?php echo esc_html( $total ); ?></div>
							</div>
						</li>
					</ul>
					<div class="wf-add-top-large" style="max-width: 100%; overflow: auto; padding: 1px;">
						<table class="wf-striped-table"<?php echo !empty($inEmail) ? ' border=1' : '' ?>>
							<tbody class="thead thead-subhead" style="font-size: 85%">
							<?php
							$val = wfUtils::array_first($q);
							$actualKeyOrder = array_keys($val);
							$preferredKeyOrder = array('Name', 'Comment', 'Engine', 'Rows', 'Avg_row_length', 'Data_length', 'Index_length', 'Auto_increment', 'Create_time', 'Row_format', 'Collation', 'Version', 'Max_data_length', 'Data_free', 'Update_time', 'Check_time', 'Checksum', 'Create_options');
							$leftoverKeys = array();
							$displayKeyOrder = array();
							foreach ($preferredKeyOrder as $k) {
								if (in_array($k, $actualKeyOrder)) {
									$displayKeyOrder[] = $k;
								}
							}
							
							$diff = array_diff($actualKeyOrder, $preferredKeyOrder);
							$displayKeyOrder = array_merge($displayKeyOrder, $diff);
							
							?>
							<tr>
								<?php foreach ($displayKeyOrder as $tkey): ?>
									<th><?php echo esc_html($tkey) ?></th>
								<?php endforeach; ?>
							</tr>
							</tbody>
							<tbody style="font-size: 85%">
							<?php
							$count = 0;
							foreach ($q as $val) {
								?>
								<tr>
								<?php foreach ($displayKeyOrder as $tkey): ?>
									<td><?php if (isset($val[$tkey])) { echo esc_html($val[$tkey]); } ?></td>
								<?php endforeach; ?>
								</tr>
								<?php
								$count++;
								if ($count >= 250 && $total > $count) {
									?>
									<tr>
										<td colspan="<?php echo $databaseCols; ?>"><?php echo esc_html(sprintf(/* translators: Row/record count. */ __('and %d more', 'wordfence'), $total - $count)); ?></td>
									</tr>
									<?php
									break;
								}
							}
							?>
							</tbody>

						</table>
					</div>

				</div>
			</div>
		<?php endif ?>
		<div class="wf-block<?php echo(wfPersistenceController::shared()->isActive('wf-diagnostics-log-files') ? ' wf-active' : '') ?>" data-persistence-key="<?php echo esc_attr('wf-diagnostics-log-files') ?>">
			<div class="wf-block-header">
				<div class="wf-block-header-content">
					<div class="wf-block-title">
						<strong><?php esc_html_e('Log Files', 'wordfence') ?></strong>
						<span class="wf-text-small"><?php esc_html_e('PHP error logs generated by your site, if enabled by your host.', 'wordfence') ?></span>
					</div>
					<div class="wf-block-header-action">
						<div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive('wf-diagnostics-log-files') ? 'true' : 'false'); ?>" tabindex="0"></div>
					</div>
				</div>
			</div>
			<div class="wf-block-content wf-clearfix wf-padding-no-left wf-padding-no-right">
				<div style="max-width: 100%; overflow: auto; padding: 1px;">
					<table class="wf-striped-table"<?php echo !empty($inEmail) ? ' border=1' : '' ?>>
						<tbody class="thead thead-subhead" style="font-size: 85%">
						<tr>
							<th><?php esc_html_e('File', 'wordfence'); ?></th>
							<th><?php esc_html_e('Download', 'wordfence'); ?></th>
						</tr>
						</tbody>
						<tbody style="font-size: 85%">
						<?php
						$errorLogs = wfErrorLogHandler::getErrorLogs();
						if (count($errorLogs) < 1): ?>
							<tr>
								<td colspan="2"><em><?php esc_html_e('No log files found.', 'wordfence'); ?></em></td>
							</tr>
						<?php else:
							foreach ($errorLogs as $log => $readable): ?>
								<?php
								$metadata = array();
								if (is_callable('filesize')) {
									$rawSize = @filesize($log);
									if ($rawSize !== false) {
										$metadata[] = wfUtils::formatBytes(filesize($log));
									}
								}
								
								if (is_callable('lstat')) {
									$rawStat = @lstat($log);
									if (is_array($rawStat) && isset($rawStat['mtime'])) {
										$ts = $rawStat['mtime'];
										$utc = new DateTimeZone('UTC');
										$dtStr = gmdate("c", (int) $ts); //Have to do it this way because of PHP 5.2
										$dt = new DateTime($dtStr, $utc);
										$metadata[] = $dt->format('M j, Y G:i:s') . ' ' . __('UTC', 'wordfence');
									}
								}
								
								$shortLog = $log;
								if (strpos($shortLog, ABSPATH) === 0) {
									$shortLog = '~/' . substr($shortLog, strlen(ABSPATH));
								}
								?>
								<tr>
									<td style="width: 100%"><?php echo esc_html($shortLog); if (!empty($metadata)) { echo ' (' . esc_html(implode(', ', $metadata)) . ')'; } ?></td>
									<td style="white-space: nowrap; text-align: right;"><?php echo($readable ? '<a href="#" data-logfile="' . esc_attr($log) . '" class="downloadLogFile" target="_blank" rel="noopener noreferrer" role="button">' . esc_html__('Download', 'wordfence') . '<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>' : '<em>' . esc_html__('Requires downloading from the server directly', 'wordfence') . '</em>'); ?></td>
								</tr>
							<?php endforeach;
						endif; ?>
						</tbody>

					</table>
				</div>
			</div>
		</div>
	</div>
	
	<?php
	if (!empty($inEmail)) {
		echo '<h1>' . esc_html__('Scan Issues', 'wordfence') . "</h1>\n";
		$issues = wfIssues::shared()->getIssues(0, 50, 0, 50);
		$issueCounts = array_merge(array('new' => 0, 'ignoreP' => 0, 'ignoreC' => 0), wfIssues::shared()->getIssueCounts());
		$issueTypes = wfIssues::validIssueTypes();
		
		echo '<h2>' . esc_html(sprintf(/* translators: Number of scan issues. */ __('New Issues (%d total)', 'wordfence'), $issueCounts['new'])) . "</h2>\n";
		if (isset($issues['new']) && count($issues['new'])) {
			foreach ($issues['new'] as $i) {
				if (!in_array($i['type'], $issueTypes)) {
					continue;
				}
				
				$viewContent = '';
				try {
					$viewContent = wfView::create('scanner/issue-' . $i['type'], array('textOutput' => $i))->render();
				}
				catch (wfViewNotFoundException $e) {
					//Ignore -- should never happen since we validate the type
				}
				
				if (!empty($viewContent)) {
					echo nl2br($viewContent) . "<br><br>\n";
				}
			}
		}
		else {
			echo '<h1>' . esc_html__('No New Issues', 'wordfence') . "</h1>\n";
		}
	}
	?>
	
	<?php if (!empty($inEmail)): ?>
	<div class="wf-diagnostics-wrapper">
		<div class="wf-block<?php echo(wfPersistenceController::shared()->isActive('wf-diagnostics-wordfence-settings') ? ' wf-active' : '') ?>" data-persistence-key="<?php echo esc_attr('wf-diagnostics-wordfence-settings') ?>">
			<div class="wf-block-header">
				<div class="wf-block-header-content">
					<div class="wf-block-title">
						<strong><?php esc_html_e('Wordfence Settings', 'wordfence') ?></strong>
						<span class="wf-text-small"><?php esc_html_e('Diagnostic Wordfence settings/constants.', 'wordfence') ?></span>
					</div>
					<div class="wf-block-header-action">
						<div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive('wf-diagnostics-wordfence-settings') ? 'true' : 'false'); ?>" tabindex="0"></div>
					</div>
				</div>
			</div>
			<div class="wf-block-content wf-clearfix wf-padding-no-left wf-padding-no-right">
				<table class="wf-striped-table"<?php echo !empty($inEmail) ? ' border=1' : '' ?>>
					<tbody>
					<?php
					foreach (wfDiagnostic::getWordfenceValues() as $settingName => $settingData):
						if (isset($settingData['subheader'])) {
						?>
							<tr>
								<td colspan="2"><strong><?php echo esc_html($settingData['subheader']) ?></strong></td>
							</tr>
						<?php
							continue;
						}
						
						$escapedDescription = strip_tags($settingData['description']);
						$escapedValue = __('(not set)', 'wordfence');
						if (isset($settingData['value'])) {
							$escapedValue = nl2br(strip_tags($settingData['value']));
						}
						?>
						<tr>
							<td><?php echo $escapedDescription ?></td>
							<td><?php echo $escapedValue ?></td>
						</tr>
					<?php endforeach ?>
					</tbody>
				</table>
			</div>
		</div>
	</div>
	<?php endif ?>
	
	<?php if (!empty($inEmail)): ?>
		<div class="wf-diagnostics-wrapper">
			<div class="wf-block<?php echo(wfPersistenceController::shared()->isActive('wf-diagnostics-wordfence-central') ? ' wf-active' : '') ?>" data-persistence-key="<?php echo esc_attr('wf-diagnostics-wordfence-central') ?>">
				<div class="wf-block-header">
					<div class="wf-block-header-content">
						<div class="wf-block-title">
							<strong><?php esc_html_e('Wordfence Central', 'wordfence') ?></strong>
							<span class="wf-text-small"><?php esc_html_e('Diagnostic connection information for Wordfence Central.', 'wordfence') ?></span>
						</div>
						<div class="wf-block-header-action">
							<div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive('wf-diagnostics-wordfence-central') ? 'true' : 'false'); ?>" tabindex="0"></div>
						</div>
					</div>
				</div>
				<div class="wf-block-content wf-clearfix wf-padding-no-left wf-padding-no-right">
					<table class="wf-striped-table"<?php echo !empty($inEmail) ? ' border=1' : '' ?>>
						<tbody>
						<?php
						foreach (wfDiagnostic::getWordfenceCentralValues() as $settingName => $settingData):
							if (isset($settingData['subheader'])) {
								?>
								<tr>
									<td colspan="2"><strong><?php echo esc_html($settingData['subheader']) ?></strong></td>
								</tr>
								<?php
								continue;
							}
							
							$escapedDescription = strip_tags($settingData['description']);
							$escapedValue = __('(not set)', 'wordfence');
							if (isset($settingData['value'])) {
								$escapedValue = nl2br(strip_tags($settingData['value']));
							}
							?>
							<tr>
								<td><?php echo $escapedDescription ?></td>
								<td><?php echo $escapedValue ?></td>
							</tr>
						<?php endforeach ?>
						</tbody>
					</table>
				</div>
			</div>
		</div>
	<?php endif ?>

	<?php if (!empty($inEmail)): ?>
		<?php if (wfUtils::funcEnabled('phpinfo')) { phpinfo(); } else { echo '<strong>' . esc_html__('Unable to output phpinfo content because it is disabled', 'wordfence') . "</strong>\n"; } ?>
	<?php endif ?>

	<?php if (!empty($emailForm)): ?>
		<div class="wf-diagnostics-wrapper">
			<div id="wf-diagnostics-other-tests" class="wf-block<?php echo(wfPersistenceController::shared()->isActive('wf-diagnostics-other-tests') ? ' wf-active' : '') ?>" data-persistence-key="<?php echo esc_attr('wf-diagnostics-other-tests') ?>">
				<div class="wf-block-header">
					<div class="wf-block-header-content">
						<div class="wf-block-title">
							<strong><?php esc_html_e('Other Tests', 'wordfence') ?></strong>
							<span class="wf-text-small"><?php esc_html_e('System configuration, memory test, send test email from this server.', 'wordfence') ?></span>
						</div>
						<div class="wf-block-header-action">
							<div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive('wf-diagnostics-other-tests') ? 'true' : 'false'); ?>" tabindex="0"></div>
						</div>
					</div>
				</div>
				<div class="wf-block-content wf-clearfix">
					<ul class="wf-block-list">
						<li>
							<span>
								<a href="<?php echo wfUtils::siteURLRelative(); ?>?_wfsf=sysinfo&nonce=<?php echo wp_create_nonce('wp-ajax'); ?>" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Click to view your system\'s configuration in a new window', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>
								<a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_DIAGNOSTICS_SYSTEM_CONFIGURATION); ?>" target="_blank" rel="noopener noreferrer" class="wfhelp wf-inline-help"><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>
							</span>
						</li>
						<li>
							<span>
								<a href="<?php echo wfUtils::siteURLRelative(); ?>?_wfsf=testmem&nonce=<?php echo wp_create_nonce('wp-ajax'); ?>" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Test your WordPress host\'s available memory', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>
							<a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_DIAGNOSTICS_TEST_MEMORY); ?>" target="_blank" rel="noopener noreferrer" class="wfhelp wf-inline-help"><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>
							</span>
						</li>
						<li>
							<span>
								<?php esc_html_e('Send a test email from this WordPress server to an email address:', 'wordfence'); ?> <a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_DIAGNOSTICS_TEST_EMAIL); ?>" target="_blank" rel="noopener noreferrer" class="wfhelp wf-inline-help"><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>
								<input type="text" id="testEmailDest" value="" size="20" maxlength="255" class="wfConfigElem"/>
								<input class="wf-btn wf-btn-default wf-btn-sm" type="button" value="<?php esc_attr_e('Send Test Email', 'wordfence'); ?>" onclick="WFAD.sendTestEmail(jQuery('#testEmailDest').val());"/>
							</span>
						</li>
						<li>
							<span>
								<?php esc_html_e('Send a test activity report email:', 'wordfence'); ?> <a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_DIAGNOSTICS_TEST_ACTIVITY_REPORT); ?>" target="_blank" rel="noopener noreferrer" class="wfhelp wf-inline-help"><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>
								<input type="email" id="email_summary_email_address_debug" value="" size="20" maxlength="255" class="wfConfigElem"/>
								<input class="wf-btn wf-btn-default wf-btn-sm" type="button" value="<?php esc_attr_e('Send Test Activity Report', 'wordfence'); ?>" onclick="WFAD.sendTestActivityReport(jQuery('#email_summary_email_address_debug').val());"/>
							</span>
						</li>
						<li>
							<span>
								<?php esc_html_e('Clear all Wordfence Central connection data', 'wordfence'); ?> <a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_DIAGNOSTICS_REMOVE_CENTRAL_DATA); ?>" target="_blank" rel="noopener noreferrer" class="wfhelp wf-inline-help"><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>
								<input class="wf-btn wf-btn-default wf-btn-sm" type="button" value="<?php esc_attr_e('Clear All Connection Data', 'wordfence'); ?>" onclick="WFAD.ajax('wordfence_wfcentral_disconnect', { force: true }, function() { WFAD.colorboxModal((self.isSmallScreen ? '300px' : '400px'), <?php echo esc_attr(json_encode(__('Successfully removed data', 'wordfence'))) ?>, <?php echo esc_attr(json_encode(__('All associated Wordfence Central connection data has been cleared.', 'wordfence'))) ?>); });"/>
								<input class="wf-btn wf-btn-default wf-btn-sm" type="button" value="<?php esc_attr_e('Clear Local Connection Data', 'wordfence'); ?>" onclick="WFAD.ajax('wordfence_wfcentral_disconnect', { local: true }, function() { WFAD.colorboxModal((self.isSmallScreen ? '300px' : '400px'), <?php echo esc_attr(json_encode(__('Successfully removed data', 'wordfence'))) ?>, <?php echo esc_attr(json_encode(__('All associated Wordfence Central connection data has been removed from the local database.', 'wordfence'))) ?>); });"/>
							</span>
						</li>
					</ul>

				</div>
			</div>

			<div class="wf-block<?php echo(wfPersistenceController::shared()->isActive('wf-diagnostics-debugging-options') ? ' wf-active' : '') ?>" data-persistence-key="<?php echo esc_attr('wf-diagnostics-debugging-options') ?>">
				<div class="wf-block-header">
					<div class="wf-block-header-content">
						<div class="wf-block-title">
							<strong><?php esc_html_e('Debugging Options', 'wordfence') ?></strong>
						</div>
						<div class="wf-block-header-action">
							<div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive('wf-diagnostics-debugging-options') ? 'true' : 'false'); ?>" tabindex="0"></div>
						</div>
					</div>
				</div>
				<div class="wf-block-content wf-clearfix">
					<form action="#" id="wfDebuggingConfigForm">
						<ul class="wf-block-list">
							<li>
								<?php
								echo wfView::create('options/option-toggled', array(
									'optionName'    => 'debugOn',
									'enabledValue'  => 1,
									'disabledValue' => 0,
									'value'         => $w->get('debugOn') ? 1 : 0,
									'title'         => __('Enable debugging mode (increases database load)', 'wordfence'),
									'helpLink'      => wfSupportController::supportURL(wfSupportController::ITEM_DIAGNOSTICS_OPTION_DEBUGGING_MODE),
								))->render();
								?>
							</li>
							<li>
								<?php
								echo wfView::create('options/option-toggled', array(
									'optionName'    => 'startScansRemotely',
									'enabledValue'  => 1,
									'disabledValue' => 0,
									'value'         => $w->get('startScansRemotely') ? 1 : 0,
									'title'         => __('Start all scans remotely (Try this if your scans aren\'t starting and your site is publicly accessible)', 'wordfence'),
									'helpLink'      => wfSupportController::supportURL(wfSupportController::ITEM_DIAGNOSTICS_OPTION_REMOTE_SCANS),
								))->render();
								?>
							</li>
							<li>
								<?php
								echo wfView::create('options/option-toggled', array(
									'optionName'    => 'ssl_verify',
									'enabledValue'  => 1,
									'disabledValue' => 0,
									'value'         => $w->get('ssl_verify') ? 1 : 0,
									'title'         => __('Enable SSL Verification (Disable this if you are consistently unable to connect to the Wordfence servers.)', 'wordfence'),
									'helpLink'      => wfSupportController::supportURL(wfSupportController::ITEM_DIAGNOSTICS_OPTION_SSL_VERIFICATION),
								))->render();
								?>
							</li>
							<li>
								<?php
								echo wfView::create('options/option-toggled', array(
									'optionName'    => 'avoid_php_input',
									'enabledValue'  => 1,
									'disabledValue' => 0,
									'value'         => wfWAF::getInstance()->getStorageEngine()->getConfig('avoid_php_input', false) ? 1 : 0,
									'title'         => __('Disable reading of php://input', 'wordfence'),
									'helpLink'      => wfSupportController::supportURL(wfSupportController::ITEM_DIAGNOSTICS_OPTION_DISABLE_PHP_INPUT),
								))->render();
								?>
							</li>
							<li>
								<?php
								echo wfView::create('options/option-toggled', array(
									'optionName'    => 'wordfenceI18n',
									'enabledValue'  => 1,
									'disabledValue' => 0,
									'value'         => $w->get('wordfenceI18n') ? 1 : 0,
									'title'         => 'Enable Wordfence translations',
									'helpLink'      => wfSupportController::supportURL(wfSupportController::ITEM_DIAGNOSTICS_OPTION_WORDFENCE_TRANSLATIONS),
								))->render();
								?>
							</li>
							<li>
								<p>
									<a id="wf-restore-defaults" class="wf-btn wf-btn-default wf-btn-callout-subtle" href="#" data-restore-defaults-section="<?php echo esc_attr(wfConfig::OPTIONS_TYPE_DIAGNOSTICS); ?>" role="button"><?php esc_html_e('Restore Defaults', 'wordfence'); ?></a>
									<a id="wf-cancel-changes" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-disabled" href="#" role="button"><?php esc_html_e('Cancel Changes', 'wordfence'); ?></a>
									<a id="wf-save-changes" class="wf-btn wf-btn-primary wf-btn-callout-subtle wf-disabled" href="#" role="button"><?php esc_html_e('Save Changes', 'wordfence'); ?></a>
								</p>
							</li>
						</ul>
					</form>
				</div>
			</div>
		</div>

	<?php endif ?>
</div>
<div class="wf-scrollTop">
	<a href="javascript:void(0);"><i class="wf-ionicons wf-ion-chevron-up"></i></a>
</div>
<script type="text/x-jquery-template" id="wfTmpl_restoreDefaultsPrompt">
	<?php
	echo wfView::create('common/modal-prompt', array(
		'title' => __('Confirm Restore Defaults', 'wordfence'),
		'message' => __('Are you sure you want to restore the default Diagnostics settings? This will undo any custom changes you have made to the options on this page.', 'wordfence'),
		'primaryButton' => array('id' => 'wf-restore-defaults-prompt-cancel', 'label' => __('Cancel', 'wordfence'), 'link' => '#'),
		'secondaryButtons' => array(array('id' => 'wf-restore-defaults-prompt-confirm', 'labelHTML' => wp_kses(/* translators: word order may be reversed as long as HTML remains around "Defaults" */ __('Restore<span class="wf-hidden-xs"> Defaults</span>', 'wordfence'), array('span'=>array('class'=>array()))), 'link' => '#')),
	))->render();
	?>
</script>
lib/menu_firewall_waf_options.php000064400000026135150755146450013307 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
$waf = wfWAF::getInstance();
$d = new wfDashboard(); unset($d->countriesNetwork);
$firewall = new wfFirewall();
$config = $waf->getStorageEngine();
$wafURL = wfPage::pageURL(wfPage::PAGE_FIREWALL);
$wafConfigURL = network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options#configureAutoPrepend');
$wafRemoveURL = network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options#removeAutoPrepend');
/** @var array $wafData */

$backPage = new wfPage(wfPage::PAGE_FIREWALL);
if (isset($_GET['source']) && wfPage::isValidPage($_GET['source'])) {
	$backPage = new wfPage($_GET['source']);
}
?>
<script type="application/javascript">
	(function($) {
		WFAD.wafData = <?php echo json_encode($wafData); ?>;
		WFAD.restoreWAFData = JSON.parse(JSON.stringify(WFAD.wafData)); //Copied into wafData when canceling changes

		$(function() {
			document.title = "<?php esc_attr_e('Firewall Options', 'wordfence'); ?>" + " \u2039 " + WFAD.basePageName;
			
			WFAD.wafConfigPageRender();

			//Hash-based option block linking
			if (window.location.hash) {
				var hashes = WFAD.parseHashes();
				var hash = hashes[hashes.length - 1];
				var target = $("#" + hash);
				var block = target.parents('.wf-block');
				if (!block.length) {
					block = $('.wf-block[data-persistence-key="' + hash + '"]');
					target = block;
				}
				if (block.length) {
					if (!block.hasClass('wf-active')) {
						block.find('.wf-block-content').slideDown({
							always: function() {
								block.addClass('wf-active');
								$('html, body').animate({
									scrollTop: target.offset().top - 100
								}, 1000);
							}
						});

						WFAD.ajax('wordfence_saveDisclosureState', {name: block.data('persistenceKey'), state: true}, function() {});
					}
					else {
						$('html, body').animate({
							scrollTop: target.offset().top - 100
						}, 1000);
					}

					history.replaceState('', document.title, window.location.pathname + window.location.search);
				}
			}

			var updatePendingCircles = function() {
				$('#circle-waf-coverage, #circle-waf-rules, #circle-waf-blacklist, #circle-waf-brute').wfCircularProgress({pendingOverlay: Object.keys(WFAD.pendingChanges).length > 0});
			};
			var coalescingUpdateTimer = false;

			$('.wf-option, .wf-rule-toggle').on('change', function() {
				clearTimeout(coalescingUpdateTimer);
				coalescingUpdateTimer = setTimeout(updatePendingCircles, 100);
			});
		});

		$(window).on('wfOptionsReset', function() {
			WFAD.wafData = JSON.parse(JSON.stringify(WFAD.restoreWAFData));
			WFAD.wafConfigPageRender();
		});
	})(jQuery);
</script>
<div class="wf-options-controls">
	<div class="wf-row">
		<div class="wf-col-xs-12">
			<?php
			echo wfView::create('options/block-controls', array(
				'backLink' => $backPage->url(),
				'backLabelHTML' => wp_kses(sprintf(__('<span class="wf-hidden-xs">Back to </span>%s', 'wordfence'), $backPage->label()), array('span'=>array('class'=>array()))),
				'restoreDefaultsSection' => wfConfig::OPTIONS_TYPE_FIREWALL,
				'restoreDefaultsMessage' => __('Are you sure you want to restore the default Firewall settings? This will undo any custom changes you have made to the options on this page. If you have manually disabled any rules or added any custom allowlisted URLs, those changes will not be overwritten.', 'wordfence'),
			))->render();
			?>
		</div>
	</div>
</div>
<div class="wf-options-controls-spacer"></div>
<?php
if (!wfOnboardingController::shouldShowAttempt3() && wfConfig::get('touppPromptNeeded')) {
	echo wfView::create('gdpr/disabled-overlay')->render();
	echo wfView::create('gdpr/banner')->render();
}
?>
<div class="wrap wordfence">
	<div class="wf-container-fluid">
		<?php
		if (function_exists('network_admin_url') && is_multisite()) {
			$firewallURL = network_admin_url('admin.php?page=WordfenceWAF#top#waf');
			$blockingURL = network_admin_url('admin.php?page=WordfenceWAF#top#blocking');
		}
		else {
			$firewallURL = admin_url('admin.php?page=WordfenceWAF#top#waf');
			$blockingURL = admin_url('admin.php?page=WordfenceWAF#top#blocking');
		}
		?>
		<div class="wf-row">
			<div class="wf-col-xs-12">
				<div class="wp-header-end"></div>
				<?php if (isset($storageExceptionMessage)): ?>
				<div class="notice notice-error"><p><?php echo $storageExceptionMessage; ?></p></div>
				<?php endif; ?>
			</div>
		</div>
		<div class="wf-row">
			<div class="<?php echo wfStyle::contentClasses(); ?>">
				<div id="waf-options" class="wf-fixed-tab-content">
					<?php
					echo wfView::create('common/section-title', array(
						'title' => __('Firewall Options', 'wordfence'),
						'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF),
						'helpLabelHTML' => wp_kses(__('Learn more<span class="wf-hidden-xs"> about the Firewall</span>', 'wordfence'), array('span'=>array('class'=>array()))),
						'showIcon' => true,
					))->render();
					?>
					<div class="wf-row">
						<div class="wf-col-xs-12">
							<div class="wf-block wf-active">
								<div class="wf-block-content">
									<ul class="wf-block-list wf-block-list-horizontal wf-block-list-nowrap wf-waf-coverage">
										<li>
											<?php
											if (function_exists('network_admin_url') && is_multisite()) { $optionsURL = network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options'); }
											else { $optionsURL = admin_url('admin.php?page=WordfenceWAF&subpage=waf_options'); }
											echo wfView::create('common/status-detail', array(
												'id' => 'waf-coverage',
												'percentage' => $firewall->wafStatus(),
												'activeColor' => ($firewall->firewallMode() == wfFirewall::FIREWALL_MODE_LEARNING ? '#ececec' : null /* automatic */),
												'title' => __('Web Application Firewall', 'wordfence'),
												'subtitle' => ($firewall->firewallMode() == wfFirewall::FIREWALL_MODE_LEARNING ? __('Currently in Learning Mode', 'wordfence') : __('Stops Complex Attacks', 'wordfence')),
												'link' => $optionsURL,
												'linkLabel' => null,
												'statusTitle' => __('Web Application Firewall Status', 'wordfence'),
												'statusList' => $firewall->wafStatusList(),
												'statusExtra' => ($firewall->firewallMode() == wfFirewall::FIREWALL_MODE_LEARNING ? wfView::create('waf/status-tooltip-learning-mode')->render() : ''),
												'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_STATUS_OVERALL),
											))->render();
											?>
										</li>
										<li>
											<?php
											echo wfView::create('common/status-detail', array(
												'id' => 'waf-rules',
												'percentage' => $firewall->ruleStatus(),
												'activeColor' => ($firewall->firewallMode() == wfFirewall::FIREWALL_MODE_LEARNING ? '#ececec' : null /* automatic */),
												'title' => __('Firewall Rules: ', 'wordfence') . ($firewall->ruleMode() == wfFirewall::RULE_MODE_PREMIUM ? __('Premium', 'wordfence') : __('Community', 'wordfence')),
												'subtitle' => ($firewall->firewallMode() == wfFirewall::FIREWALL_MODE_LEARNING ? __('Currently in Learning Mode', 'wordfence') : ($firewall->ruleMode() == wfFirewall::RULE_MODE_PREMIUM ? __('Rules updated in real-time', 'wordfence') : __('Rule updates delayed by 30 days', 'wordfence'))),
												'link' => 'https://www.wordfence.com/gnl1wafUpgrade/wordfence-signup/',
												'linkLabel' => null,
												'linkNewWindow' => true,
												'statusTitle' => __('Firewall Rules Status', 'wordfence'),
												'statusList' => $firewall->wafStatusList('rules'),
												'statusExtra' => ($firewall->firewallMode() == wfFirewall::FIREWALL_MODE_LEARNING ? wfView::create('waf/status-tooltip-learning-mode')->render() : ''),
												'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_STATUS_RULES),
											))->render();
											?>
										</li>
										<li>
											<?php
											echo wfView::create('common/status-detail', array(
												'id' => 'waf-blacklist',
												'percentage' => $firewall->blacklistStatus(),
												'title' => __('Real-Time IP Blocklist: ', 'wordfence') . ($firewall->blacklistMode() == wfFirewall::BLACKLIST_MODE_ENABLED ? __('Enabled', 'wordfence') : __('Disabled', 'wordfence')),
												'subtitle' => __('Blocks requests from known malicious IPs', 'wordfence'),
												'link' => (($firewall->ruleMode() == wfFirewall::RULE_MODE_PREMIUM && $firewall->blacklistMode() == wfFirewall::BLACKLIST_MODE_DISABLED) ? network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options#waf-options-advanced') : 'https://www.wordfence.com/gnl1wafUpgrade/wordfence-signup/'),
												'linkLabel' => null,
												'linkNewWindow' => !($firewall->ruleMode() == wfFirewall::RULE_MODE_PREMIUM && $firewall->blacklistMode() == wfFirewall::BLACKLIST_MODE_DISABLED),
												'statusTitle' => __('Blocklist Status', 'wordfence'),
												'statusList' => $firewall->wafStatusList('blacklist'),
												'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_STATUS_BLACKLIST),
											))->render();
											?>
										</li>
										<li>
											<?php
											echo wfView::create('common/status-detail', array(
												'id' => 'waf-brute',
												'percentage' => $firewall->bruteForceStatus(),
												'title' => __('Brute Force Protection', 'wordfence') . ($firewall->bruteForceStatus() == 0 ? __(': Disabled', 'wordfence') : ''),
												'subtitle' => __('Stops Password Guessing Attacks', 'wordfence'),
												'link' => network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options#waf-options-bruteforce'),
												'linkLabel' => null,
												'statusTitle' => __('Brute Force Protection Status', 'wordfence'),
												'statusList' => $firewall->bruteForceStatusList(),
												'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_STATUS_BRUTE_FORCE),
											))->render();
											?>
										</li>
									</ul>
								</div>
							</div>
						</div>
					</div>
					<?php
					echo wfView::create('waf/options-group-basic-firewall', array(
						'firewall' => $firewall,
						'waf' => $waf,
						'stateKey' => 'waf-options-basic',
						'collapseable' => false,
					))->render();
					?>
					<?php
					echo wfView::create('waf/options-group-advanced-firewall', array(
						'firewall' => $firewall,
						'waf' => $waf,
						'stateKey' => 'waf-options-advanced',
					))->render();
					?>
					<?php
					echo wfView::create('waf/options-group-brute-force', array(
						'firewall' => $firewall,
						'waf' => $waf,
						'stateKey' => 'waf-options-bruteforce',
					))->render();
					?>
					<?php
					echo wfView::create('waf/options-group-rate-limiting', array(
						'firewall' => $firewall,
						'waf' => $waf,
						'stateKey' => 'waf-options-ratelimiting',
					))->render();
					?>
					<?php
					echo wfView::create('waf/options-group-whitelisted', array(
						'firewall' => $firewall,
						'waf' => $waf,
						'stateKey' => 'waf-options-whitelisted',
					))->render();
					?>
				</div> <!-- end waf options block -->
			</div> <!-- end content block -->
		</div> <!-- end row -->
	</div> <!-- end container -->
</div>lib/email_newIssues.php000064400000021513150755146450011175 0ustar00<?php if (!defined('WORDFENCE_VERSION')) { exit; } ?>
<?php $scanOptions = $scanController->scanOptions(); ?>
<p><?php echo esc_html(sprintf(
	/* translators: URL to the site's homepage. */
		__('This email was sent from your website "%s" by the Wordfence plugin.', 'wordfence'), get_bloginfo('name', 'raw'))); ?></p>

<p><?php

	if (count($previousIssues) > 0) {
		printf(
			/* translators: 1. URL to the site's homepage. 2. Number of scan results. */
			_n('Wordfence found the following new issues on "%1$s" (%2$d existing issue was also found again).',
			'Wordfence found the following new issues on "%1$s" (%2$d existing issues were also found again).',
			count($previousIssues),
			'wordfence'),
			esc_html(get_bloginfo('name', 'raw')),
			count($previousIssues)
		);
	} else {
		echo esc_html(sprintf(
		/* translators: 1. URL to the site's homepage. */
			__('Wordfence found the following new issues on "%1$s".', 'wordfence'),
			get_bloginfo('name', 'raw')
		));
	}


	?></p>

<p><?php echo esc_html(sprintf(
		/* translators: Localized date. */
		__('Alert generated at %s', 'wordfence'), wfUtils::localHumanDate())); ?></p>

<br>

<p><?php echo esc_html(sprintf(
	/* translators: URL to WordPress admin panel. */
		__('See the details of these scan results on your site at: %s', 'wordfence'), wfUtils::wpAdminURL('admin.php?page=WordfenceScan'))); ?></p>

<?php if ($scanOptions['scansEnabled_highSense']): ?>
	<div style="margin: 12px 0;padding: 8px; background-color: #ffffe0; border: 1px solid #ffd975; border-width: 1px 1px 1px 10px;">
		<em><?php esc_html_e('HIGH SENSITIVITY scanning is enabled, it may produce false positives', 'wordfence'); ?></em>
	</div>
<?php endif ?>

<?php if ($timeLimitReached): ?>
	<div style="margin: 12px 0;padding: 8px; background-color: #ffffe0; border: 1px solid #ffd975; border-width: 1px 1px 1px 10px;">
		<em><?php echo wp_kses(sprintf(
			/* translators: 1. URL to WordPress admin panel. 2. URL to WordPress admin panel. 3. URL to Wordfence support page. 4. URL to Wordfence support page. */
				__('The scan was terminated early because it reached the time limit for scans. If you would like to allow your scans to run longer, you can customize the limit on the options page: <a href="%1$s">%2$s</a> or read more about scan options to improve scan speed here: <a href="%3$s">%4$s</a>', 'wordfence'), esc_attr(wfUtils::wpAdminURL('admin.php?page=WordfenceScan&subpage=scan_options#wf-scanner-options-performance')), esc_attr(wfUtils::wpAdminURL('admin.php?page=WordfenceScan&subpage=scan_options')), wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_TIME_LIMIT), esc_html(wfSupportController::supportURL(wfSupportController::ITEM_SCAN_TIME_LIMIT))), array('a'=>array('href'=>array()))); ?></em>
	</div>
<?php endif ?>

<?php
$severitySections = array(
	wfIssues::SEVERITY_CRITICAL => __('Critical Problems:', 'wordfence'),
	wfIssues::SEVERITY_HIGH => __('High Severity Problems:', 'wordfence'),
	wfIssues::SEVERITY_MEDIUM => __('Medium Severity Problems:', 'wordfence'),
	wfIssues::SEVERITY_LOW => __('Low Severity Problems:', 'wordfence'),
);
?>

<?php
foreach ($severitySections as $severityLevel => $severityLabel):
	if ($severityLevel < $level) {
		continue;
	}
	$hasIssuesAtSeverity = false;

	foreach($issues as $i){ if($i['severity'] == $severityLevel){ ?>
<?php if (!$hasIssuesAtSeverity): $hasIssuesAtSeverity = true; ?>
<p><?php echo esc_html($severityLabel) ?></p>
<?php endif ?>
<p>* <?php echo htmlspecialchars($i['shortMsg']) ?></p>
<?php
	if ((isset($i['tmplData']['wpRemoved']) && $i['tmplData']['wpRemoved']) || (isset($i['tmplData']['abandoned']) && $i['tmplData']['abandoned'])) {
		if (isset($i['tmplData']['vulnerable']) && $i['tmplData']['vulnerable']) {
			echo '<p><strong>' . esc_html__('Plugin contains an unpatched security vulnerability.', 'wordfence') . '</strong>';
			if (isset($i['tmplData']['cvssScore'])) {
				echo ' <br>' . esc_html__('Vulnerability Severity', 'wordfence') . ': ' . number_format($i['tmplData']['cvssScore'], 1) . '/10.0 (<span style="color:' . wfUpdateCheck::cvssScoreSeverityHexColor($i['tmplData']['cvssScore']) . '">' . wfUpdateCheck::cvssScoreSeverityLabel($i['tmplData']['cvssScore']) . '</span>)';
			}
			if (isset($i['tmplData']['vulnerabilityLink'])) {
				echo ' <br><a href="' . $i['tmplData']['vulnerabilityLink'] . '" target="_blank" rel="nofollow noreferrer noopener">' . esc_html__('Vulnerability Information', 'wordfence') . '</a>';
			}
			echo '</p>';
		}
	}
	if ($i['type'] == 'coreUnknown') {
		echo '<p>' . esc_html__('The core files scan has not run because this version is not currently indexed by Wordfence. New WordPress versions may take up to a day to be indexed.', 'wordfence') . '</p>';
	}
	else if ($i['type'] == 'wafStatus') {
		echo '<p>' . esc_html__('Firewall issues may be caused by file permission changes or other technical problems.', 'wordfence') . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_RESULT_WAF_DISABLED) . '" target="_blank" rel="nofollow noreferrer noopener">' . esc_html__('More Details and Instructions', 'wordfence') . '</a></p>';
    }
	else if ($i['type'] == 'skippedPaths') {
		echo '<p>' . esc_html__('Scanning additional paths is optional and is not always necessary.', 'wordfence') . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_RESULT_SKIPPED_PATHS) . '" target="_blank" rel="nofollow noreferrer noopener">' . esc_html__('Learn More', 'wordfence') . '</a></p>';
	}

	$showWPParagraph = !empty($i['tmplData']['vulnerable']) || isset($i['tmplData']['wpURL']);
	if ($showWPParagraph) {
		echo '<p>';
	}
	if (!empty($i['tmplData']['vulnerable'])) {
		if (isset($i['tmplData']['updateAvailable']) && $i['tmplData']['updateAvailable'] !== false)
			echo '<strong>' . esc_html__('Update includes security-related fixes.', 'wordfence') . '</strong>';
		if (isset($i['tmplData']['cvssScore'])) {
			echo ' <br>' . esc_html__('Vulnerability Severity', 'wordfence') . ': ' . number_format($i['tmplData']['cvssScore'], 1) . '/10.0 (<span style="color:' . wfUpdateCheck::cvssScoreSeverityHexColor($i['tmplData']['cvssScore']) . '">' . wfUpdateCheck::cvssScoreSeverityLabel($i['tmplData']['cvssScore']) . '</span>)';
		}
		if (isset($i['tmplData']['vulnerabilityLink'])) {
			echo ' <a href="' . $i['tmplData']['vulnerabilityLink'] . '" target="_blank" rel="nofollow noreferrer noopener">' . esc_html__('Vulnerability Information', 'wordfence') . '</a>';
		}
	}
	if (isset($i['tmplData']['wpURL'])) {
		if(!empty($i['tmplData']['vulnerable']))
			echo '<br>';
		echo $i['tmplData']['wpURL'] . '/#developers';
	}
	if ($showWPParagraph) {
		echo '</p>';
	}
	?>

<?php
if (!empty($i['tmplData']['badURL'])):
	$api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion());
	$url = set_url_scheme($api->getTextImageURL($i['tmplData']['badURL']), 'https');
?>
<p><img src="<?php echo esc_url($url) ?>" alt="<?php esc_html_e('The malicious URL matched', 'wordfence') ?>" /></p>
<?php endif ?>

<?php } } ?>
<?php endforeach; ?>

<?php
$sentences = array();
if (count($previousIssues)) {
	$sentences[] = sprintf(/* translators: Number of scan results */_n('%d existing issue was found again and is not shown.', '%d existing issues were found again and are not shown.', count($previousIssues), 'wordfence'), count($previousIssues));
}
if ($issuesNotShown > 0) {
	$sentences[] = sprintf(/* translators: Number of scan results */ _n('%d issue was omitted from this email due to length limits.', '%d issues were omitted from this email due to length limits.', $issuesNotShown, 'wordfence'), $issuesNotShown);
	$sentences[] = esc_html__('View every issue:', 'wordfence') . sprintf(' <a href="%s">%s</a>', esc_attr(wfUtils::wpAdminURL('admin.php?page=WordfenceScan')), esc_html(wfUtils::wpAdminURL('admin.php?page=WordfenceScan')));
}

if (count($sentences)) {
	printf('<p>%s</p>', implode(' ', $sentences));
}
?>

<?php if(! $isPaid){ ?>
	<p><?php esc_html_e('NOTE: You are using the free version of Wordfence. Upgrade today:', 'wordfence'); ?></p>
	
	<ul>
		<li><?php esc_html_e('Receive real-time Firewall and Scan engine rule updates for protection as threats emerge', 'wordfence'); ?></li>
		<li><?php esc_html_e('Real-time IP Blocklist blocks the most malicious IPs from accessing your site', 'wordfence'); ?></li>
		<li><?php esc_html_e('Country blocking', 'wordfence'); ?></li>
		<li><?php esc_html_e('IP reputation monitoring', 'wordfence'); ?></li>
		<li><?php esc_html_e('Schedule scans to run more frequently and at optimal times', 'wordfence'); ?></li>
		<li><?php esc_html_e('Access to Premium Support', 'wordfence'); ?></li>
		<li><?php esc_html_e('Discounts for multi-year and multi-license purchases', 'wordfence'); ?></li>
	</ul>

	<p><?php esc_html_e('Click here to upgrade to Wordfence Premium:', 'wordfence'); ?><br><a href="https://www.wordfence.com/zz2/wordfence-signup/">https://www.wordfence.com/zz2/wordfence-signup/</a></p>
<?php } ?>

<p><!-- ##UNSUBSCRIBE## --></p>lib/wordfenceConstants.php000064400000006220150755146450011710 0ustar00<?php
define('WORDFENCE_EPOCH', 1312156800);
define('WORDFENCE_FEEDBACK_EPOCH', 1704213261);
define('WORDFENCE_API_VERSION', '2.26');
define('WORDFENCE_API_URL_SEC', 'https://noc1.wordfence.com/');
define('WORDFENCE_API_URL_NONSEC', 'http://noc1.wordfence.com/');
define('WORDFENCE_API_URL_BASE_SEC', WORDFENCE_API_URL_SEC . 'v' . WORDFENCE_API_VERSION . '/');
define('WORDFENCE_BREACH_URL_BASE_SEC', WORDFENCE_API_URL_SEC . 'passwords/');
define('WORDFENCE_HACKATTEMPT_URL_SEC', 'https://noc3.wordfence.com/');
if (!defined('WORDFENCE_CENTRAL_URL_SEC')) { define('WORDFENCE_CENTRAL_URL_SEC', 'https://www.wordfence.com/central'); }
if (!defined('WORDFENCE_CENTRAL_API_URL_SEC')) { define('WORDFENCE_CENTRAL_API_URL_SEC', 'https://www.wordfence.com/api/wf'); }
if (!defined('WORDFENCE_CENTRAL_PUBLIC_KEY')) { define('WORDFENCE_CENTRAL_PUBLIC_KEY', "\xb6\x33\x81\x05\xdf\xdf\xec\xcf\xf3\xe3\x36\xc6\xf0\x99\xc6\xf7\xca\x05\x36\xca\x87\x54\x53\x43\x31\xf2\xc6\x0d\xe1\x3d\x55\x0f"); }
define('WORDFENCE_MAX_SCAN_LOCK_TIME', 86400); //Increased this from 10 mins to 1 day because very big scans run for a long time. Users can use kill.
define('WORDFENCE_DEFAULT_MAX_SCAN_TIME', 10800);
if (!defined('WORDFENCE_SCAN_ISSUES_MAX_REPORT')) { define('WORDFENCE_SCAN_ISSUES_MAX_REPORT', 1500); }
define('WORDFENCE_TRANSIENTS_TIMEOUT', 3600); //how long are items cached in seconds e.g. files downloaded for diffing
define('WORDFENCE_MAX_IPLOC_AGE', 86400); //1 day
define('WORDFENCE_CRAWLER_VERIFY_CACHE_TIME', 604800); 
define('WORDFENCE_REVERSE_LOOKUP_CACHE_TIME', 86400);
define('WORDFENCE_MAX_FILE_SIZE_TO_PROCESS', 52428800); //50 megs
define('WORDFENCE_MAX_FILE_SIZE_OFFSET', WORDFENCE_MAX_FILE_SIZE_TO_PROCESS + 1);
define('WORDFENCE_TWO_FACTOR_GRACE_TIME_AUTHENTICATOR', 90);
define('WORDFENCE_TWO_FACTOR_GRACE_TIME_PHONE', 1800);
if (!defined('WORDFENCE_DISABLE_LIVE_TRAFFIC')) { define('WORDFENCE_DISABLE_LIVE_TRAFFIC', false); }
if (!defined('WORDFENCE_SCAN_ISSUES_PER_PAGE')) { define('WORDFENCE_SCAN_ISSUES_PER_PAGE', 100); }
if (!defined('WORDFENCE_BLOCKED_IPS_PER_PAGE')) { define('WORDFENCE_BLOCKED_IPS_PER_PAGE', 100); }
if (!defined('WORDFENCE_DISABLE_FILE_VIEWER')) { define('WORDFENCE_DISABLE_FILE_VIEWER', false); }
if (!defined('WORDFENCE_SCAN_FAILURE_THRESHOLD')) { define('WORDFENCE_SCAN_FAILURE_THRESHOLD', 300); }
if (!defined('WORDFENCE_SCAN_START_FAILURE_THRESHOLD')) { define('WORDFENCE_SCAN_START_FAILURE_THRESHOLD', 15); }
if (!defined('WORDFENCE_PREFER_WP_HOME_FOR_WPML')) { define('WORDFENCE_PREFER_WP_HOME_FOR_WPML', false); } //When determining the unfiltered `home` and `siteurl` with WPML installed, use WP_HOME and WP_SITEURL if set instead of the database values
if (!defined('WORDFENCE_SCAN_MIN_EXECUTION_TIME')) { define('WORDFENCE_SCAN_MIN_EXECUTION_TIME', 8); }
if (!defined('WORDFENCE_SCAN_MAX_INI_EXECUTION_TIME')) { define('WORDFENCE_SCAN_MAX_INI_EXECUTION_TIME', 90); }
if (!defined('WORDFENCE_ALLOW_DIRECT_MYSQLI')) { define('WORDFENCE_ALLOW_DIRECT_MYSQLI', true); }
if (!defined('WORDFENCE_NOC3_FAILED_BACKOFF_TIME')) { define('WORDFENCE_NOC3_FAILED_BACKOFF_TIME', 60); }
if (!defined('WORDFENCE_WWW_BASE_URL'))
	define('WORDFENCE_WWW_BASE_URL', 'https://www.wordfence.com/');lib/WFLSPHP52Compatability.php000064400000002427150755146450012060 0ustar00<?php

/**
 * Class WFLSPHP52Compatability
 * 
 * This class exists solely to contain syntax incompatible with PHP 5.2 into a single file.
 */
class WFLSPHP52Compatability {
	public static function install_plugin() {
		\WordfenceLS\Controller_WordfenceLS::shared()->_install_plugin();
	}
	
	public static function uninstall_plugin() {
		\WordfenceLS\Controller_WordfenceLS::shared()->_uninstall_plugin();
	}
	
	public static function import_2fa($import) {
		$imported = \WordfenceLS\Controller_Users::shared()->import_2fa($import);
		if ($imported && wfConfig::get('loginSec_requireAdminTwoFactor')) {
			\WordfenceLS\Controller_Settings::shared()->set(\WordfenceLS\Controller_Settings::OPTION_REQUIRE_2FA_ADMIN, true);
		}
		return $imported;
	}
	
	public static function secrets_table() {
		return \WordfenceLS\Controller_DB::shared()->secrets;
	}
	
	public static function ntp_time() {
		return \WordfenceLS\Controller_Time::ntp_time();
	}
	
	public static function using_ntp_time() {
		return \WordfenceLS\Controller_Settings::shared()->get_bool(\WordfenceLS\Controller_Settings::OPTION_USE_NTP);
	}
	
	public static function using_wf_time() {
		return !self::using_ntp_time() && defined('WORDFENCE_LS_FROM_CORE') && WORDFENCE_LS_FROM_CORE && ((int) wfConfig::get('timeoffset_wf', false)) != 0;
	}
}lib/menu_scanner_credentials.php000064400000005326150755146450013077 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
$scanner = wfScanner::shared();
$scanURL = network_admin_url('admin.php?page=WordfenceScan');

$action = @$_GET['action'];
if (!in_array($action, array('restoreFile', 'deleteFile'))) { $action = ''; }
$filesystemCredentialsAdminURL = network_admin_url('admin.php?' . http_build_query(array(
		'page'               => 'WordfenceScan',
		'subpage'       	 => 'scan_credentials',
		'action' 			 => $action,
		'issueID'            => (int) @$_GET['issueID'],
		'nonce'              => wp_create_nonce('wp-ajax'),
	)));

switch ($action) {
	case 'restoreFile':
		$callback = array('wordfence', 'fsActionRestoreFileCallback');
		break;
	case 'deleteFile':
		$callback = array('wordfence', 'fsActionDeleteFileCallback');
		break;
}
?>
<div class="wf-options-controls">
	<div class="wf-row">
		<div class="wf-col-xs-12">
			<?php
			echo wfView::create('options/block-controls', array(
				'backLink' => $scanURL,
				'backLabel' => __('Back to Scan', 'wordfence'),
				'suppressControls' => true,
			))->render();
			?>
		</div>
	</div>
</div>
<div class="wf-options-controls-spacer"></div>
<div class="wrap wordfence">
	<div class="wf-container-fluid">
		<div class="wf-row">
			<div class="wf-col-xs-12">
				<div class="wp-header-end"></div>
			</div>
		</div>
		<div class="wf-row">
			<div class="<?php echo wfStyle::contentClasses(); ?>">
				<div id="wf-scan-permissions-prompt" class="wf-fixed-tab-content">
					<?php
					echo wfView::create('common/section-title', array(
						'title' => __('File System Credentials Required', 'wordfence'),
					))->render();
					?>
					<div class="wf-row">
						<div class="wf-col-xs-12">
							<div class="wf-block wf-active">
								<div class="wf-block-content wf-padding-add-top wf-padding-add-bottom">
									<?php
									if (isset($_GET['nonce']) && wp_verify_nonce($_GET['nonce'], 'wp-ajax')) {
										if (wordfence::requestFilesystemCredentials($filesystemCredentialsAdminURL, wfUtils::getHomePath(), true, true)) {
											call_user_func_array($callback, isset($callbackArgs) && is_array($callbackArgs) ? $callbackArgs : array());
										}
										//else - outputs credentials form
									}
									else {
										echo '<p>' . wp_kses(sprintf(
											/* translators: URL to the WordPress admin panel. */
												__('Security token has expired. Click <a href="%s">here</a> to return to the scan page.', 'wordfence'), esc_url($scanURL)), array('a'=>array('href'=>array()))) . '</p>';
									}
									?>
								</div>
							</div>
						</div>
					</div> <!-- end permissions -->
				</div> <!-- end wf-scan-permissions-prompt block -->
			</div> <!-- end content block -->
		</div> <!-- end row -->
	</div> <!-- end container -->
</div>lib/wfView.php000064400000004335150755146450007313 0ustar00<?php

class wfView {

	/**
	 * @var string
	 */
	protected $view_path;

	/**
	 * @var string
	 */
	protected $view_file_extension = '.php';

	/**
	 * @var string
	 */
	protected $view;

	/**
	 * @var array
	 */
	protected $data;

	/**
	 * @param string $view
	 * @param array  $data
	 * @return wfView
	 */
	public static function create($view, $data = array()) {
		return new self($view, $data);
	}

	/**
	 * @param string $view
	 * @param array  $data
	 */
	public function __construct($view, $data = array()) {
		$this->view_path = WORDFENCE_PATH . 'views';
		$this->view = $view;
		$this->data = $data;
	}

	/**
	 * @return string
	 * @throws wfViewNotFoundException
	 */
	public function render() {
		$view = preg_replace('/\.{2,}/', '.', $this->view);
		$view_path = $this->view_path . '/' . $view . $this->view_file_extension;
		if (!file_exists($view_path)) {
			throw new wfViewNotFoundException(sprintf(/* translators: File path. */ __('The view %s does not exist or is not readable.', 'wordfence'), $view_path));
		}

		extract($this->data, EXTR_SKIP);

		ob_start();
		/** @noinspection PhpIncludeInspection */
		include $view_path;
		return ob_get_clean();
	}

	/**
	 * @return string
	 */
	public function __toString() {
		try {
			return $this->render();
		} catch (wfViewNotFoundException $e) {
			return defined('WP_DEBUG') && WP_DEBUG ? esc_html($e->getMessage()) : esc_html__('The view could not be loaded.', 'wordfence');
		}
	}

	/**
	 * @param $data
	 * @return $this
	 */
	public function addData($data) {
		$this->data = array_merge($data, $this->data);
		return $this;
	}

	/**
	 * @return array
	 */
	public function getData() {
		return $this->data;
	}

	/**
	 * @param array $data
	 * @return $this
	 */
	public function setData($data) {
		$this->data = $data;
		return $this;
	}

	/**
	 * @return string
	 */
	public function getView() {
		return $this->view;
	}

	/**
	 * @param string $view
	 * @return $this
	 */
	public function setView($view) {
		$this->view = $view;
		return $this;
	}

	/**
	 * Prevent POP
	 */
	public function __wakeup() {
		$this->view_path = WORDFENCE_PATH . 'views';
		$this->view = null;
		$this->data = array();
		$this->view_file_extension = '.php';
	}
}

class wfViewNotFoundException extends Exception {
}index.php000064400000000037150755146450006400 0ustar00<?php
// Silence is golden.
?>
fonts/roboto-KFOmCnqEu92Fr1Mu7GxMKTU1Kvnz.woff000064400000023710150755146450014700 0ustar00wOFF'�@�GDEFD5@YGPOS|&�&KGSUB��N�K�OS/2$O`u�hcmapt��ǚt�gasppglyf|,>}"'�head"�66�j�zhhea"�$
��hmtx"��;�R8loca$����(maxp&�  )	name&��tU9post'� �mdx���@�y���YJ �{t�eϺ��e��t��#^��u1L��&,}�]xڜ��%V��fmF7f�FԸqݮm#�msm۶mk<g����&���S�S���^C�zvVܮg�N�;�׻�b�!Q@�S��]��JKmE(��3
Z��:���
�h��:9��**:�6����Pk-ݬ%��9�r��lr 5��b�lHY��4��u�T��#Iɕ<e�h�R�Ru��T<�.9�r"�s:�s��]da�f��|w��̜�_Zh�9�r��_�˷�39_f�k�ϲ,�h������9�żDr�C��{��d��[B�iEe���H��+yJ�=AS�*x���6�j��:ꤳ.�ꦻzꥷ>��o��l����c�����o��'�������#�4�hc�5�xL2�4-��r+���zm��6���.���!Gs�I��q�9%J�)W�R��^(�.l`^��u�NX��(/]���;�Z��YV�э��M����P+T�S2n��g\��z9؇׷t�J�{/n������2�"c����B�T��ndCXk&�b�G�%NB̹z����<��x�=�RE����A���<�n�m{_��4JO?J�8�?26��q��P��ց�õ�c����@���D�֩��v�sӓ:Շ�b$�'�*SX�!$
5�b�P�J_���D�|�>|��8��V7x�c`fic�����:�՘��QB3_dHcb``b(P``�Ap��wgp`dP����!�}P
�|��� d�
�x�Ũ�^Q��w�VP��
j����4�۠�16ñ�*j����;�}�ho�;�Ms��azX&�JWO��6�&�T�em�Y�e�^�g��e[�}0���n=�VzG����qy�Jƕ��W7����!6̦�4�c�l��Z�e�;!�*u¯n#t�
o���2.w\��j�5���~���ɚq~���@u�2������G��<�	��l�_x?�-X�������9��SYD2K��5�s���"�l���r�#�
)b9+h��V�h��RI#�;������fZ�B0����`�` C␤uX���nu��"u�C�:Mf��9�8�.rX�.�U�Uu����ke3��n���ru��j�$�j�$�j���j�d)j��:�}+�S�Գ��,�֨�R�S?8�P�o M�#>p����@�:JF��B�
�!�VW�Jॺ_��O�x�~���[���E�sV�QK>���j��Qj�41�l�����x�dY\T���fl%��q���)���{m�c����`�K��͠+��[��o,�eϼ;�s����K�=���DF"T�2�@T�()AJ���t`�P]nLOX�k�%�P�1��,e|�IR�t�ӇΕ�ҡ�t(!�T$D��դ!8[&��U� '�8Ek'�:'�.��gK�JwZ�� s��o�	>T��
�}����Vo0胨F��k
����*���cg�C���PV�[.)6�ʩ}[wU��Ϝ0��ρy'�����t�yŞ�?�yK!D<��'BL>�`�W��Z�1�Z,fjL��Ǡj"$�['���{�⦔�������~���s���|?J@��V�G����y��%D�u��Mv�K	��wF=�QT����?/����:�.�#��R8����H !�P#AU��R� �Z=�Q���E'����g�cv��x�9Vv/�4<Ȟ����i��	�|nt�	/n�����s޲����v[<�IE<��/�̈́g�T$W�ɡ�rQ�aR���N�ч��9�o��&����O@,��<ޡ���_�2XL��O�x��ʭ�sV,�
R��㕂{g"V�.'��%�&���(�i�}�����t�ѝ�ԧ���5�6+�,	5�5i�	t�kMn<��KU�oKR�������
��9�,(��w�`�'�E�#�ɉ�Y��E+E����N��~�8ҙ�s7�c	%��RQ����S��/}5�2�X�X��&]�>d��w��G(����e_>r�p͑u^�)7Ynr
|wq�Uh�+�eߠ ����n��=��2���ҟU��zS���W�A�l��
F�f�����^}/�S���-���.�~)��ȼ`9�}�|����릣�i0X��|@�Fo�Ti�D|����l�}�?�;��/�M޸6�/�b�bZ��q�c�v����<?o�="t@�a?��1�̂��o��5�$v�3�rp����٬�����䛀�V#g�8�G���ZD��(
1������۳m�n)�t�}*C�>�	�{���+��W������'?���j���q�Pe;���(�%���Z-;�ζ����W��“O��j����?Co��m|@
�Lt��b9��z��v��i��G���?p��x�P\
|'�p�*����ǯ'��E�x!�g�\������*�?
�����wB�d�—bWR�TG�5yrK�,3��V+�U���T�д諠i��e�-ڿ���3��Z�5���#�E+�o�~=K�Y�粃�R��1ct���G~b�6�/�f`�{������up�J�p��R��ǽ��
��m:*�H�4�䔻�9�V̡�����f�%sI
F �	�"�_~.G$e���T�uyB��DZ4���F-Z�6NXA��PGj��SG_9�e��G
��bj�DfF���:�r���*DŽ!H��Yù����î��F��-�
�Tj��`�]��������##M�"٭�q��r�H��M�b/��e���-�_�vD�Z���2����Uʑ���ۼ��hS���}�c���S�ES>^�����9i��9�~ϊ]�޳O�rH�Z��:\�{t��踕CB�?��$���Wy��c�Gm�VS���+�ڄ��~�Ƈ�48�a;��-�û�d�s��y@ %<9^0[��UA��p��Mj�p�M��:M�lܘPw6��8>�Gh]���M�j���Ğ61W17m�g�X��Uqv`g|c���%����j��K +%>#�M�Ț�p��� �y��cKU�5l�f����੏�bgW�߯¸���N�"CZ�W3�B͘�A�!Ҝ��=��g�h�cB����Y��r�!sW��:�-�kѼ�3����d�f�K1���p��V:4R����t���k�#	Ja�3#�Ҥ���E��A<>n�D�Qw�g���?��V��9e��djLd+�EV2���]E��=��n��7jG�%yV�HiRt@�5j�8 J�Vbԛe"�D����#8�#��P���7pF,PbE��س���g>�Z4r��	�I�ܱ��4��j��ةW��3��'�XL�)�۵jݴ�~���>dr�gQw�+5��F��FI`>z����-�4��&|�ɓRs�)JѢE�X�ؕ41
KG"�wP�e0�
L �0�ꓮ�>�3��:2&.8{���m�%~�S8�!�5�Yg*��s���I�x�NƲ�n�Ne�pmp������)�Ĺ����sy�s��h�h1�p�}�:ź���o<t|P
6?J����o�d��y��.�?z�~��-2��y����|@0��B��Kx|��������7��جVx3����s��i���7Z������N?8�ԕ�ӭR@�#Ļ��•�{�AEX>�o&����J�V�o�6�Tb��(u�~�GV1W�qĴ��z�k]�ܺ�&D�O�}y�!�%�S�	�~�5���	S��r�U������L �`�RF�a�_�\z��ZkvX�T!5
�-�Zo3x�L��?�_�ݝ�%���]���X��/�nƌ]����j�����K�4�o����Y���˰���#,ԛ5Bd(Vb%-qE5絘@��T�+5���R����ϠkT�G����.6��x<)8�������њ����ޟ2n��̿���n�g���ru��
1��5Opm��d��	B�|h�e���m���gbؔ~Q{��֏�_����9/����ҫ���kU��h��A�0�d*�g�d���T^��yt���j�0j�����`ݸ��G_p��~MۯL��ci����0ɫj�\��r�
��s�v<����P�ܽ�m�`���"h� ^���Ń����_0QL;�v���quM*�x񊳞��8փd��s�=U�==�O��yj�t9�T<���.[�k{<ӻ����."�ڵ.›��� v���y�l�8#�|���,|����'�_�{�+{bV� Xs�5��/�3�!�
y�?�5�u V@y������Pm����fyg�|	�zG�/��5#j��y���(��M���;kRBBֺuY˜&aM���f��p�v�I�K��Q*���ވ����Z�Z�Hل��)㣜�廩��v�g,�;q�8��z�w�ϗ��i��+j�^0���yn&MڌD�-W�F��@=m�s����O���%�����u݃�[Q��*
מ�G�G5R�l���zk���{R�i�����$_�Z5���A�᝖Zm�YM��|#F������
o��ݹ�I����PFoa/�R�v]����,5P�R>�d����}�eJ�vP����u�G���ܺ_�*�d�̰Zc���%oj\�r��v����04�%�v9Y�a����b�ܤ���b���s:����,�����a1����H��ػ
��ٟ��IbG��K�(�d�9OK���F_�i��K���M�މ@!���,�?������l�]V��2ē�x*�ٮy��IkV%���L���"�����)���Ċ䶣��|O7������h�"�X'��tu3F$�=o�u����Q|E��+%��+@���S�_*-��Z�'�7~[h�R�T:zk���hݺ���@��:�uI����OB���v��D�7&�1�q���������c�h�s >T*��=fR��IPm�ݰ��T�u���P��:W|L�Kne�ͤ����[�4g��'�{
��p�"��M�/)�HU������v�7?�;wh�M��蘹m�um��}���q���:X�-���d�x�Uݱ���t���`I�����
�c[5�ߺU����~�f���C�z�[�lӖK̺���!)ë��+Z�@��ֵ��dہ�.�3�o���j��;`SCO�qKh*='Z�u�g��L��BӰ�5��U�FH��!���M�����LZ�ߴd�ꉫ�C|[�AY����ڨI��=u�`�t�%�O�����]�z�
���&�
�AR�w*Z�������Ğ?�c���;t��ܶ~}}��ێޮ퐡m�X5�L@*�b1������˦PR��Щ�N�
��v��F�rWㄱ}�t/��5dۙ�{6��Th���8o?Wh�y����_�S#Z�Z0b�Q�o�q-�V'h�^�)��]�S!�gq{���c����_���,E�^p���A��E�/�&"2�����N�q8"�H<�����NO���5���<8j�è�L]5�,z��}�g�ld�-��@��v��F#�yv�u�3�>'���ı��xKE�EE�嘘��C�g���$���1��h�̀J�V0q��X�t�
�Ao�m��G�?;}���^�Ge�9G�Z�|)&�z�ÿP����sT��q�=n-u�I���H\�+V�b~UP��pr��_�O,$������C�y�$���;�^��lz��?��hTI/��Y�\��_�g�}�?sl��;���W���T}&�6��~vgOи��Z:,��	��e��p�U�;�*�#~�-w\y��m)��zU�>GO�w�%��^PJ�ٌw���SZ`#7+�RR��ziVz���~q�
4�6t�n1$7����k��SX%�5���]���贊�����!J��}q7*I�5�ҁ�V�G0�z��9�?Zn��ւ_z��D�Z��d����
�d'��;�%���P�>�f�T{pm�;8ljO��rX��r��E���]�|_��#Hg�M1<	y�}�֍�}w^=�_�Lj-���ԯ�;���/������|�'+�w"��_��:�4*���5���`<|��>�<]�ާw��9N�;+����?�ҁ��B7��{ƾ��Q(E�s��*C���u��b�F=I��%6������	ю�D�@}�!Lӱ5,�� U��4O��v�$T��Ag	Ul�c*��}����m�e���f_�-�|�ǿ����^�y{r�
~��%����^���V�����8��?x����+�œ��ӽݶ���`p�A���(�J(.}�B��Ki8]e��I�؜NQM'�g?Ј�or����˝�G�o=jD�����ꕔ����߶#�vh7�vp����I��bU��ժ�.�V�5����j�kTh��.�	�E�'�g彃	��#?�o'�'#�;����w�����Ë�\t��.��nb�~�?1�~�#�o��S�ۿ7�pI�ѡ�o6�Μq8ū��7�v�U���^zio���mQ���ϲo���3��:+���:!�EN����T�9�|��߻/���/
�`��0Yv�ϛS��=��ĸݞ���j ��=��@���j���y��_�W=�<�>9
M�K���U���"����<�y����,�ܸ�(���3�af\33�-�㔙�������
3�2C���JO���p�珤�==������l2:�d3�7W_��������u+ˮY^��&����������>�d��O�^5��ѡ�u�F�J��=����M���a�M��l{nq��aٸ|����mv;�J�t5��G�Lj��<Is���y�P>?N��Ňe�b��ͬ�ϴ6x����O�S=qk��6�i��x��z���xTFm��5V���?>ؤ��͡�8�9v�1���94� c���N�רn����X���)>�G�?��Cdt(2��.#Νt�2�d�.?^����M��TD�x�NArQJ��>g�'�rفYF&ɨ�K�|�^븍юj�F4ӥ_��_.}��n*��qx�ڄC�e��K�^͎c@2��YSdۘ5�����v{��	$v���
��������R�����τoyoB�ʝ&i?����5��w!s]���k-�-�H�Q�wp�-�RJ}L�]v׼6x���5R�c�?5�xy�/��`��=�pNi���G��÷����|L�J��:݌�Z�y'|�G[D����t�5��/:�O�(Z���W�!�I��A_?֟�=X[^���w�]���B�"��Oߓ��~�N�8_���2��� ���>j��n4��ƺ�<�A�q&Ҽ��ѯ�?k���4�ދʸ��y}Ç4/q�?��5����|F�擢�&=?���۳�V���fj����f�<Q����O��s��L@�X��̩��o`��;�fN�=e�O#��7'�O�r�󎨦I���<�~����|^�J�/@c�*����q�!�E���9�+|����֓
2v�@�$7�Ab��
���?@�C�t(��N�cp}j���̘y+ѧ���G֏j��x�͑QM����V��s�'�i���Wc��5�ɉp���]k�D둣����Dy�8=��(>
vTa�e�ݛ�&2v4Τt�O��ƯT�4_=c�ʝY�͏��&Ao�<�I�Ú����H6qUNB�����w�w���ҭ����Q����i8V�a��y�������4�ِ�H�M�+��9�@�oͻ���c;�I�4������=gH�zb'i{���o'�^��xT����ߨ����?��r���
>8}O�r��q��9O�N��v���ͪ�)|��!�c�������E�g�
6Ͼœ��礪5Vf/U�V���ݧ�X=jUʞ�=n�s�od��q]/!��
���}���f?/�b���A3a��
��p�ƛ����Jw��2~�[�������/ �S?A/���d�l.��D{Uo���ּ��an!��Ѽ��_�9�<T���7ƭ��yǸߞ���}��;�*����;��?��G彇�hO�=t�"�:Qeu�P	�A�8ه:�]{E��@�R���u�D��7?yS<��?3:ݼ�ɛ�4϶3zΜ�v����MƏv��m��ү��?,�1��~�`}�5�H�
��g|�o���1|�/ANj�t�i?��)���:A)�t��@kPm��>��>�Z��+\��^��l���?t�`��yZ���s< ����#�_<���.�R���	0s	x�c`d``�����K���P�pwaxڌ�C�QF���ɵ�n�mn�dۮM�m۶m�˷˶9�?����}g�D��s>�+K6W�>�
�d���������:S�=ҙRN���?�N����'��#Ԕ�sE��,3��2��<��B��4�������T����tdb�I��舤�|��d�	�9e*M�.�\�0�H!�Z
�sd��hh�ήg����=���^껄Ǩ.ci"gh��=���|�A��<n��i�g��143���n0�d:M�T&�+��'Yg'1�vf����D?���4�g����/�\VV�$�G�p*k��f�{��0�ŐS�_z��U���ANcijg3����K\3����fgE���*>j?�c|��\fZh�sb�~����kO�P�'�-�����u�E��E��s]8�=6�I�f��h�ޗe>���<(�~�%�3��)���ک��?�9��'�d�P�I���z�7O�B�UגJu]�T���_ޫ��SU?���_��_���?��W����?��B��mB0u��r��x�-��@��;�o۶m۶m۶m۶m۶�(�����JGe��I9��j45��O���TG������*h]����v]{�'���u�3#4ō&Fc�q�xg����d.0����oE��Yլy�O;��ޞa/��w�/N��Sۙ�tm7����.ww�������r{
���Lo�w����p��%H4�'��a�0WX"��w���IR�l�)Gj���#Y@�Q�4�KSҬ� -Ck�&��M���t>]Mo��,5��
���&k�:��l$����l';�.���%��-�yt����yq^���yw>���r����u����D$O�YEAQV�MEG�W�S��F�G�yq[<��)��&�t2�,&+�z���*�1r�\"7�=�r@�u�9t��0��bX��\�{�
�����0f�|X
�a#l��pN�y�
��!<�w�%~�`G�b�|���T$x�]�rD_�^�uT�:6��m]&��1曻�6I�XY��0�W�'8�W9$;����s���&�t�!^z�P�L�*R��s�=��I�1P��ȓPe�H�ke_�%縧W�a��&�Ҕ�s�N���.Ӕ
�D�����P�8ļ�^��2xY��Z� TI�wn$��\kR��4M�*Q%�i��z	��H�n�b�?�x䯆��}.|3�x�c`f��Y)X*�fonts/ionicons.woff000064400000204500150755146450010416 0ustar00wOFF	@
��FFTM	$m�	�OS/2�J`A9a�cmap\��mncvt ,Dgasp	��glyf
���p�"&head0.6k��hhea`$��hmtx�o~A
Iloca0�”�)�maxp�  <�name�x[���npost��Fʙ���x�c`d``bU9�x~���L pa����� ��,
��	sx�c`d``<��IF�tQs��r@.x�c`a�a����������2H2�0001�13�������p�#��`�c<��fDR���}
�xڍV;r1m����ĜB!E�!�8���@E@Q.n@2�B�[d��֧%=���]~�^I-��uk�'=��wMd62��H&�6�XdJsn/�=�#��y�;L�
�E�K�Yv`ژƵ`!�'�u�d�l�=g2r<B9?�Mg��[�)��u^G�{��-�<�f��߻	���+c�'g;���%�3D�_Z�d�~1�<1n�slA��B��)��ƸD{M����k���nJ�8�yA���c��
f2����smj�vz/B��>�e�=��I�'ͽ��նϑ�^�$@�ۚ�+�+w�f�i��}�
1]꺇u'�o!g�{*_�Y?���T��Z/���n���|_�ev"p��J�`�z���ך��'�=ox>��܄M�.��]_��+��x
5~�=��l�w�|.�t.�{����k���X*�L�=�*d��[��2,�ꭂ�`?���B���~{�����I�8��6�'|d������J��A���>���\k��%����f����_�S����_�g�7#��m2�h3|+
=Nj3�<H�'o;�_�(7;�������8Z�H�m�9���54�{�q�С�Tڬ|��<��V�#x�c```f�`F��1��,7����%����G��ޟj?�t���O�>]�t���O>=���ӛO>���3�g���e�|�����#�Gˏ��?��4��>����.~�����5PϗO>�~���l��??3??�?�@>+>s>3>S>}>]>->
>5>%>E>9>i>	>A>>>>N�P7�������agV�D***Rd���� HXv������Hf��$r��:Z��
Z���.Pr�$R���	&	�	�	�	�
X
�
�
t���$n�
f
�
�"6|�.J��Bf�(`����d����6r��0�h���&V��(Bp��(Z�\�X��N�6v�h� 2 � � �!8!~"@"�#$#J$$�%%R%�&0&�'J'�'�((�(�))n)�)�)�**R*�*�+"+R+�+�+�,,Z,�,�-&-V-l-�-�-�-�-�..$.X.z.�/�/�0,0�11~1�1�2b2�2�2�4`4t4�4�55l5�6626�6�77�7�8T99�9�::z:�:�:�;0;X;�;�<*<|<�==�>>??�?�@Z@�ADAtA�A�BB�C<CxD.DTD�E�F�F�G�I�I�JJ2JbJ�J�J�KK4K�K�K�L&LLL�L�L�MMM:MJM�M�M�NN^N�ONO�P*P>P�P�QbR&R�S"SfS�S�T0T�T�URU�VVhV~V�WW>W�W�X2X�Y0Y�Y�ZRZ�Z�\.\�\�]$]�]�]�^^6^T^�^�^�^�^�^�___$_0_D_z_�_�`H`^`�`�a$aha�a�a�bb:bfb�b�b�c.cNc�c�c�dd dJdhd�d�d�d�eeZe|e�e�ff�f�gg2glg�g�hhhlh�h�h�iiFini�i�j,jVjrj�j�j�j�k$kBkjk�k�k�llLltl�l�m:mjm�m�m�nnFn`npn�n�oo&oJo�pp�p�p�qlq�rDr�s2s�s�s�tbt�uhu�u�u�vvv*vNvrv�v�v�w�x�x�x�y�z�{T{�||V|�}R}p}�}�~~p~�~�
J����>������T����2�Z�t�΃��@�`�����̃��2�X����B���چ���·�6�.�ĉ\��6�r���Ћ(�z���ʋ��6�V�p������X�v������@���ҏ�\�����V�r�|�ȓ����ܕP���d�ڗ���b���ʘ��\�������8�j���֛ �8�f����ڝN����,�Z�������0���Ҡ�,�x����J�|�����ơ��>�b���Ԣ��*�N�f��l���ޤ��
������,���J�6���H��v������,���̭���.�N�x���د�J�|����f����h�����Ҳ�2�^��:�Z�l��p���Ĵ��v��N�p����������ĸ�
� �v����R�ܻ(���Լ&�Z�콎�̾���ֿ$�d�������@�^�������L���2������4İ����JŮ�N����>Ƕ����B����F���l����<��.�N���2�xϞ� А����8xڬ�	�dGu&�"�oߗ��efef�K��KUe����Ԫ�Z�v�Z�AK ��V #c84�SgFX�l�0cS6�l��2�Z�9�=�c[�x<�Ǔ�o�ˬ�j�g���x�XnD��7"9�9����9��~
qs�?M���Ŀ�iC��O/��򧉄�m����t�N��T��_���3jBj<�8}�s�p\5$R�T�׺^�y�JЅ/�mI��-�(H�YtE���e4"�DC7+J�s��.@z��^����+#U��z�o����k�z��C1}���&Z�$.�n��n�(��y�VP�4E��v��zsk}um���+|���4�#��
�O��o.O��kk���e�Y�v���~��5�`�&q\3�es������5DKt�j�V�Yj��oa	J��*A��q�WG������R������E��
�F���@�!�F�G]}�ܣ��r��攆��J�}�9E9��]e�[��ߚW��%�mw�fP	6�y�_�Q���v�PVǧ��Zk}4)��cZ>t3�������5t��ףe�$�KS(������ޯd\ea�\PP�FKu1L��VIں��wJ���](h���ELsN�ge7�/)kD[IeZOH�E��������A���%e��JPiWX1Y�/�UȎvE �
�퉖vS�^�/x]ZK���*ז���������`���n�֡D&Ի^��з��A>��?�l%ypp;
�f�Io~�lt;�V�@�������{���b�:;�_;�ؘ�*mg,��L�M��?�j�ϧ
�R�ND��Xf*��-"����Zʲu-
���x��4�0�t\�����mŐ$Q@Hl�2TE�<B�H��c��Ss�Wr���?�P��OQS����2�������tb����N��ҡ�(���ʕ�BF�n��ʚ����J2�TY�L��
��D�S
imp\y%�٦����z��*K|��!kP�s{Wm�^�;ڔ�G�6;5�ֹ	=���nε7YXAq���ѣM�j�N�3�S]Ӆ�:�c<�e�q��[^B-�Nyh�<�WU�I�UUћԪ
�_9��=��S���v�W�w�է^����P��J۩F�)��JAi	5�ghb�GY–�
���Rdi���x3�Y������Ji4���L���e:/�d�.M�%�ƒ܇ ����?�?Cң�${1�� ��9n/w���"Z(�.M��3*��T���pM"�� �:m:x�A؁x�+�!��"���"�E�!Q&��4�D�p�6��z�N<_PU�"����ª�@�)A�O��x���e��^��EB�*x����^%�,�������-r�KYT"��p$�m���6ƽh6:���@�sJΛs.t���#��_���|-�^�ܼ��@=׌i�
f�yYF�	;��$�_@܋�l�
6@f�@v�qӴoВ0~L˵QTЈ"��i�ʒ�i���c�aћM�7����b�6ԉ���tNt�%���މ��h�3�J����5u�/�'����'�m�_��'��W�&�V&o�\Xp@�Ee�ڵ���KA��� e�}X�m��0

�u�i�������Ckp��&�u;�}_��_�Z�g۱m��sI;�����\.�E7��)�&ПgQ�4�=����c$�P��4�g���H8?Q����$�����.�|��]����\v���X�~���"'�P�2lM�MМ�v�u�jkK�_�n R�sY�2)��T��`ܑ�2W�����G�[���2�SI?�������3�]4��i��F@P�GLHA�$bٯH?��ϝy䑏?RBXO2/#T=�C�D���^w;��L�+b��o�A�Hy~tI^"ǗH���$�����T
d>��z�P��55��	rhu�Q��;�D����"^Z��ȝ9�x��X���������do2��.�u���t��)�[:����t����91�c�`�S��CZ
�Hr>p�(lt��GხA��x�^=
P�iH���y���p`�B�pE�!�`14y�K\���곈�󰈼z4#��Y-�BQK������%���!���rY/��q"Ǝ��1��M��n@���@=��#�K�/��w��-aAZ�2x]
⾿)���F.ؒt�!m��o�%����D�$ZP'��,e������QY.����Ƞ|/~��YLѺ�,�3;�"�I��[��i�/~q�4��6I���4
�lgK�(�d�\I9x�2�K��A����Fs�����]R��rTg�����ٴ��.�q'�̅���R��z�o6Z-h
'��'�E�p
�\a��g����c�l-�����mkO���8�QM��R4�*�?~c�o}�%�D+�Y/�ERZ�倁?��݀0e��N���&���g0F����v3#c����`<AK�����(,���5
'������1�| I'N``O.��C�٧�����cO?�db|�8�B_ܥg��ô�(W�D�&�!z���G�r����ia������݉��]ei3HD�O�c�T���h&]��� J£�Ұ&�=�L�<{lIЅ�@��.<�6U��6xUUޖ�;4^e�xcG��w��I�0@�*�ϗ����.g�R����e�X��:�œ�I�zx��Eh=ހ�m�ӺВB�E$��
&�z��z�a�ݢ��~�g>j�?���~%~BS����t�؍
c��	:�W�M�P�X��r�،p���N���%�Ϯ�ٳ�窱Lf,��z�'�<r��#����9��w���7��;��p(�v�A.N<���L��j�n�S>�`�u����;W�#�z����
�+��lH��O���<���7��y�q�?���s��@�$��4U����7�*|�Q^9?y��m�--^�%Aw#�kT@��P"ˢ%��5��{�r�2�y+�x�U�V�U�	B�&������A>����=K�8��8�b��%_d�����}t�*��ր���z�@�As��8�;_y��z����n��w@!��q>C��4�rK�RU�u��F�h��T�I*���
8"RDu&O;]P��,cO屨|���y�#����-�,��ɶ�O�!*������,H*�j�7��DIP�o���π��'�4ɟ(�O7Sы�1y�
&�m,�lL��%���u(y#2�JyחѰ�vPaz4m6i�Uf��c��c����������7�&h@ӅB�C�Ys���b��_v�u:��.!a�8]T�f���W�Q�^@yT��.p�J����0-"���+��)��\����|���f�h)j.gJ%�Pd|L+<��L�ƉM3��cu��ҭQZ���Q��{%"]t����D1x��6z����W���4����@``,Θ�1��5�C��wl/|Ƹ�E�끬�Yj}�ji�Yr(��.B�G<E�T]m�>�n�x���n�K��i�<zs��x���a4��	��>�vfZcݸ1�K�ݙ�X�v��֮�,���P�d	��t�WC@��p���tNN�[���/>0�3[0~68���i�ݭ��m57��"�9_�о�
hJSZ��ը�S�
T�U:A:ª��.#��:�Z���%M��w[����"DR�g����T�uCȕu�+:�$�,4�ٺ�*&��k[��ݙ�?�
��SԒ4�G��h��Lj�N��V��
�6�a�����n��Z9�VB;<��2_S�j�(�\J	��Z*W�Ŀ_ݻwu�w��r.]��jURk��Z9m9�b���TN��/�����A_�H��u��v�N��Z��nvX�mu#F���OKZ�)���ԉ5iz
�['�O��|���S>���<?��2���	D|�Dք�T21ATx�n��Pe�gR�Dʵ����������|�4f������3=� �Y�ux���:I";�O�WX�G�����$�N�&�D�n@St@���.�cĥ:�	�
:z�����k�db� �y�[�L�8�*Ü�aA3� �@��l���B	�I<o��b9��M"c�剆]����n=_�=5WR���)b����A�#��"HE�,'���q
KU����}^�}�h�^թ,�SQ���'zs���O�˅W����V���	A�r��# �;)�]$f�JLהJA��m�"j%��`�F����n�z:U�y�A)�2�3��:K��Z����q�w9^�s
o!��P�uA�,#'��Ȋ9���
���8x�c�3�;���Ma)���YiQD���f�2�V�S��%�d�`��4Mt�ʤ-r�t~v�`����΢��Ō�6u[�%q�WS�(�c������~�(3�����(>W�ȧ� ��E��kkk���|�	�����[������1rZpB�n2��`�����sc;60T���@�o�M��J\"�[9��c�г�#���"�п=)�}�!m������	@���@����DGE,@>��v``��p4ꊀL+s�L��݊�uZ+6�~U5���D��(@���!"�_@���t>���U�Eת����'ҝ���S���%��:���E-d*�����F�:��&�W�@)8vT�ЊH����`*
ZY'�~�,Z��t����Q���'�A�(���H�iS�)Cx�7�f�s�����k�3sT�j�7�m;��.'��h:��ڠ���u��:kV�~��g-�ʖ؟��m:�X��,�s��I���&
6��kQ|Zk5|��#�3�;�jx+-˲TM&�'8��ɱ
�`�*}f��f��q��/��<�Ț:|��r�M���
�`x:%00lw������@��S��WޖSD��g����^���dJ2��A��Gy�H��6�@�.��⼁Mb��4C�6�<����h��N�y�j;h�(�!�˲�]��P��j���޶�s��`Lap��4Gw��A�W�D-;˺�k���it�ON�|������x�� ut(�7&�3?�:`�ƃ�P�A�Yc���qJ���!�5�h��S��ո���\��Wϡ3�E���sϵE��4�o�P�+�-�[ǡG�T��L���
Z�tڳ�*�)YPI0iGn�cY�_��;�Ӳ8��\�gZS�پ�0
\�O��0��Cg|��g�T�U�����dU�$�=;?���Ø�U�4�D$N&;�v��T�BԈ���`B�Ζ�CT�n������\�|3$�y�Nyؼ
�R�u:�JM�0?W�Ks��H̔(�S:r���%�O�L.d����f���=��W�/D{��Y�-�gKh��F�q)\YZ��,ѫC_
��t�If�fU�TX�T
Ћu��G�P1���,/�a��t~��e�dz��P����7�t�Ȣ�X,R�+�
��NB~��w�e���B>�%�`uA9��."uM�&�	UR��VTZ���Bd��L��,�D�!�'�s�~~���D�B���>��h�eQ���i��Xs���F?
z�l���;��OL��0���tC�Vo��C	�W%`Wik��� ��m�A�����~]�;�����(�=���j}�#����p�����Ja&��|���4`�;����s�2n�d`B��:��6C�o���	#a�H����p`<��ͨL<�v�@hìN�!h
I=��iR!���nR������3��&��n�>?�@�L�w�]G�uT�*hu�E�.a�G	�%�.^�E$�"�!���}�����%��(iXƼ������j4�PWT��
<(�+*(��W$'�o����[5�"��2����mj"X|��y=�����^�~�1,B�0�q"c]�HD��P����kH�UUM���~C�S�=�m�؟%R��L\;}T@����mm�̲f�Ks+�n뼂���e3������������b�u�{e]���֏/\��g����Eʣ�[�/Ayb� w���(����"B
?0�ʭʐw6�ɝ9���
�M��I���A%�5�ǘ�e���|A�ሠ�,ߧ��6�D���#$ %�8 ��}�gSEÒx��(B�K�QLeF�/�$��o�a�Nu t��i%m������M�%�%��I�Jb�cd���(���p��O��8B�0W���ɰp啅p����®�'m��j`Y_{�`��>
T+٢OW���B��6��n1Y�
熒�A�P
�����g
�A�Z)�gқr�*�nk���(b�H���Դ��O���
��� ���k��[��"���N0h~fB�
=+����n�u\,��x�d>?�`$�����g����`�0xA�p6e�s�a��W1t�P
��`�s���U�B!XB��<�Е���� ;�ݬ�}}aNPA����̶��v�����m��t|�f���EnЄ4��P�
�
��.�Q��5f�e&
Z�a�E�/�#6֨����m��QW*8�׈��D��RQ)���y�ڦ/����:Ny�����hn�{5�qܱo��(�� ��~;�����^��8���x��h�u���0k��HN�k�>?O���a�I�I'��v�F^��K2��2*��ɐ�":m��0;�RH?����k�ل�����+u'�]��
O�4
��2]	�a�J�a���3���Q�֣�����m'j�#"����H/�A(��.s�;G5#�b��,�\����jmVX�ZAwJ;��2z�Z���?@?��,B|&���	H��c��<�#/"���/�,WmTUzWO� 0/#��t���
�y����*%"�W��y��� L��Z�	
"�U���@@��ݴ��U/-�l`P7��=�ĺb�r�Sm�n,�]��k�PW�'n��	ⶣ<�9h��̳Qq��IN�C�k��<(5��	��UBR�G�t��-8����|Vt|G����,?~,�T�];�m(_		8w�瑱��]i{�<*��M�^b���>w|U#���=I��Y���_�u]'�<��o�F�3��h(g�����ۢ�<=�t.6q������~$<���:�l��$���
�q�
b*�66z[4��)w���C��$�#�~+]�zp���0n�/��+��w�_	�{�~���9�Y����ӧ��<�&�Չ� ��o嶣ϔ��̖�Qws ]0���_�xT*�㲼���a��#����B��O����G������^���E�:?߳��=�>#~7P2a Q��Ԏ`S��LJmA�z`�ޜEk�
�����P܅:�%KR��.�2�)�G'ܢ&Z���x��>~�=Y��Hg�{,�` d�s�ma|���X;?�;~��8+M�>��G'4���9�8�۫��ϛ���9	��n�"�������@��]���y�����qSKKAx�z�O_�����s�$��!_�����ֵ�Eq�W�wV��;��M@#/�L�K�m_��E
���)^�ӵ���򶛃��|��!�<&����o>89�kl��۞7��ߣ���.��1˼	�`%�30�e�N����d�{�Da�_,(�n�����������o|`|���ӕ�kk�(.�q��v��&&&?����2�.��#Bu*��Z$"z�R�S��
��j�Xr�05����y�1#�ӍB�ԩ���斛���?�:���,p��I�q��秼���s�	�s��|��V��>8w�T�-���T��3:T_P�Ml��@Qd�U����yQR_�%���ׁ.,~.�5��Gx�����k>���� ���|���M�Ю��5����V����z�Z~�%򟧙Щk����Tp���f3�o׀�E���U�:��p��~�{�b�<ڇ�&����ıgZ�g�P
<v����6c\�1S_@��\�I����e~nMj �,ԛ��F����2O�܁
8��6�'B�fʶ���c�8���
�DY0}3�#۶]߄x��a���P�(��TT7�yQ��>f/���-�x8"�ٌ!�/��j�r˲Z<��x��7XM���lR`Ӻᄼ&�k)S]��T|��$X� "E����.{�4	�1YU�0LE�{�
�}�Y�o��n�H"�;#t�)%]�[�LM�QzĮ���~oK˙*"	��Z?��߰��1�-��t&!�Y�p�H��@
�Ũ�j�ʶ��lW{'�C�g�^�d�Gx]����i�@�׹ˡ�]#�Lؔx2�F1�_�el��@��c#2��K��S)3
�&c*YO�KP(�G��B�2R��ڞ�B1"���}S��i�f��B��5c,����V4T(�jP��f4uZr4YĮ��B���Q(�\�6��3��J�9�l!ru߮;��z�_��v�|��岩��f=.�E��Pzb�L�vj��%U�X��2�0�y���Js�w-w�czŰ�=�.���Q�V��+�a�BU�G���	sVc.��3���I���@�z
�����w�l�p=+I�
p�Qx�S�Ԍ�����7�0^G��2{�x����;|��q���O�*JN��a?���|O�)DZ�����>���o?�쇇�oSB�:��Ô�u�a���W^������%��/Y��^�N�~���B���B͂:�FA��zGA��Do��y<��)����BQ��`�R���6���x���R����^{�뭪"��=a�p�����!^�$)��{h�}ׇ?���<5S-|���gOo}�&4w�#7&m;���7���Xy{f��;DR�����H�*4�p�ֻs�D�7���7���w��d{���`�8�n��VS`�w��*�0�D�z��5�P�F@'�0�$�r-j0VE�ҋ�hx~�<]Ҷ7�_"���NX�;陷����#�Ӣ"	�O
�SŌ�
�.���y��א����j�pE��&����[��i���f��`l�FO��U'�r���:*ER��K�T�2��e.�_�b���Pt�5��|�'� d:�[�Kyu�����[ny��4��i1*y��N�����K�#m��x��^AR|E�I:;[)�u{���q�p��r�g��H
�m���f�c�y+��$ؓm�J�������k��(ͬ�t]�E�^D�:u�$�6�	R�	���n3�A(k�����֙��<����;{ֻ�ֵ�N���Up�u�u-z�+V�d{���f��!�W�}�|�`{�;=�8�
W�&���N����G�@!��2ș�+��C>�=��|��2{���^�|�!ݿ>�J��y�M��B�UI�c
*I�g��j�6��0xQ@�]��ޓ����\X,{ڤ0�(Z���-�P���z����ɩ�n������kW��ؾx�޶�%��d�2Mnԇvd�)���d@M�26�ԩC��W��"�'%��^��s��%�9�v�+��T�Z}�^��,�]:I/T�5J�8���+��L�/$3�M�H�0��ʙ�@��{"U�r��/G��F����iӠ�6T$e=SքC׾�w��X�4�Z������m���z|<���+��`_}�Հ�<A�)g�Yx	^'�Mbm����G:�r�4�,��S����s��K��rF�\\ען���w��H�Q��D#q���sx�6g]�q��Jm��Qu_D�m!�t��+e�BI
&�8W��7���
l�I;�߶�ONǟ��Ǎ���A{���z��C���_x9Y�K���lh���χ!djx�0�<\�;j����L�2ͣ��=�ö�k�>���[:�	�usb��F�Z��;鮮��U�Z�d)�b�Vή�,�R����\��B�=��Sn��F*�o��>�{�{��h�&�{��u�ZÅ��*o룽��G��i�"��h��͝:>oYֱ��'�	��T����m��z�i�M���S���H��tmz�X��ɓ�����u���-��=��	�I�&�R��A��$"?�Ig5��ds��3�l�\�_ʧN�O�b,�;�㠒S��&��Y�֨�?������qv�ևWn}�ȑ�O��z�Ԃ/�VP��+�z��{3���4���O�~��_d�ŕ���X��l�Q#�1`\"M�2.q�b�*pF����������*ݜ/�n�3���4|�DK��g2�n8��;a�z/��=�ʽ�1�_0|�@����~x�K��/$8����^I�A
v֝�%�bң�R�y�
͖I9�t��Ur��Ų�C�2�|�/
��窵\��T���2��eA�-r'����7s�s\���\ga�'�vge�F��F���\��*Y����=�h5D
��BD��G�,1�Y��b���A/�u
	(]���^�^̢�^}�kQ�0nt���=�f2��9�:�6}��%rL�xQ<�A��`�/�ZFQ�$	t�ة�K"n_y�m��}��ט��)�����|�HM�o�q��EST����QE�����ej��y%_3����ܚ.��l�'�����B$��i��DyA��$U����%e�\}RqMW�^�
zj�[��6��������-�P}���!��ĢM'���bB���$��: �z2iMN�Mi�Y�Ї)]}�����4��i9tYxb��|�69 �jѥ�j��e<7���J��1!F�v�)��d|�nϩ�pAw���E�yL����-�e��������$�Uvj�P�-��v�	�0Zm�i
1p�-C�U�d��P���Q.ai���8��S�=�_][}���C���cg��}{��w_!�K��7�gϮ���|�=�kc��\���C����'^�w�<=��sŃҵ%���YnI.���?G�ܥ����~j]a�p0���lLc���[�Fk}d�zC_KxH2�6�����`�:+��8�	>Hf��"�{�S����VLSSl�8%�<?=�se]��BF
O�'h�ӹ�v!f-G�D�z��t��*D֭Т>�B!����_�Z���
+4�A!j��>���BU���T�u5ݲ���p�
��j��4=�1�b�s<������{\Oe3�K��hj��(���ȂH�F%�����fۊ+���bĔ���3��aE.�9��SY���&�h��I��A�惥$I\���!k�!����m4��(U��58q�:4�of}���L�E�%�鮕+���kjf
��L���S����e@�f޿�d��+v��Ц�D@��I$P�E[Q5MQ$QVl�MCUD��	MWh�Aʊc[��j�u��#�
�Ѐ4��>�B9�g��J����J�nN=Zv�Y��R�lFa>H����diymM�5�`:�C���XP
�u��2/�v�?`�"Q�nV��{��G���5E��J^U[(>�Җ%���,J��5�I]~���\)_�$CL�M�k��+!Ɯ� 3Z{`j�a	�M����D�D:du�$��;+Ȥ0*E�
��(H�:[B���>�;�,�:��[x��V��v���j�f�pʸ��xu���b	)H���(PX�Rt)�.�U�X�X�u�.-�Z�>SɖB29�Ԝ�|��s�~�3�xU�X���\;�*kb�(z�OC�C�!hc)3_���y����t$�AQP��r�N��
���.���$T�q��{gn﷡K���`��vgI�>[���(��+�F��[&�mNA=d#�$KU��=L�+�D�h���&�~[���Q)Ǻ��\ՊD�W9����+g-]r�H$Y��ۼ��1��5�,��"�TE[��	vɼb�Й��x$��#Y�u
�*+�.hbFWm�Q�T��(����ə�qI��z�*��w�W�q��nKۆ*
RmJ��!�)����ى��;NEN�ON!�f��EGDO���_PyL�H4��͌E� �
�'v��-5���w���!}���(ܡ�tvH1�2zŮ.�S4s@,70ǃ=vy��vmXKQd��^�Gw}��H�,�J����:���
���꒨��dp�/�ne��.~��'����~�K��u���>�}�7�O~�[�	�7��ˆ]g�W�t+4mH��mh��
>�@��[�����ˀ���&�[�Fu	���>%���hWn�t��T�*Qw@m�9�00�6�o���M=[Y=�u������P��9�^v(�onb�
��Uu��u!"�YA���QG��WU�w���o�6Nߎ�T~�Z��ko��RKwg�D���8�dB�=�&���麤�K�O���g�~T�l�лG�Q9��VuH�2a{.�����ջ�N
HP/Kԡ4"�Sh�(b�b[N�붒I�PK�����A��_z��ɞ)��
�z�i8˾#;��P�(J���3��eQ�ss�ܨ��ދ\Ic	�<z#�ڶdT�듪=��ЁJy��"W�2@�x�o
�r���NJ}��f���m�����Y�.	@'i�C�!���!�^ѹ�%�J���N��^�jd)7���^�m�Q��3����acC��}Q�>�� ����%�F��vIʻS�#是�i��>hV��C�R��Gt�<܇�:�^6���;��R��wC���ⅹ
�2`�q�!EQ�C�I�	�ݽ�i��E��M�O�<z�k��)��*�U�n=
qa�x�+����5!-�촛�.�!��#�lw��y>��ʝN�S���+G��|�o�t��Xݲt��e�qw1-�ح��C���L�>z�����?�����ν����?��}�֨н
�:��ACE�?�}�;�?��V�w_<���O?�ۇj���C����Qg\z����s{v��o4@��d�>(.��U�.�5[ti_�ﱲ�H��䋶�>�v����ڸ��I<��]�����ʲ_�s+H����ɃA�z��H���p�c�zcR��@�b���AbG�P͉�Q�N��m��*��_� ��8��� ⶟A�횕�	H�^6�Y<����
�f-�;|@=�u+ oT�z k�ˆ!#�!^Vn�;,��u�FW�����k�#^�o��1����y�
/���_c>b�;�f���P[3c���0�(K�g�FxI��'�`�hY����?�n��0��~"�I��qI������4{H��>
+�LM�" qP�j�xYl���C�Hܥ�֗�¡�����&�[oUv��L�նl��7��|�l���-�
[z�H�p��������:u��ۥ�j~uu��K�L)WVO�^�d�Fc�?��A�z�tE��ߢΌ56a���1$���ڇ�U<��(��⧳��r��@;�AX����\]�`��3J�'�L����M+�gGl�"H�����Ro�nT����y����w�}뢟��r05̋�ʊ�w����ͮ�T�g_y���{�Y�x��U�?��8��u,�K�����$����!��<G�~T�FRHJ5�ΰ<ܮ��b��

 �na�%6��j�t��J}��	��57w�t��=MD�~��(��&_�;3GO��}
��w��h�� ��!��!��l{�T@���x�b��m��[c6�q^�O̳���+um�xf]���?ގo98yE@7^�뮀d]6'��Ʊ��B�8y�L�jl�ٜp���/ I�y�D�-\������V�Y������/s�+F;q�e�F������U�U��<��QE�kjIQ�ύ�JI�WN�R[�^,T���Fk�U��iE=�*r�"�5����RU�W�o/~��ТJ���@�iRu6��+�`Y��\Ф.8�jZ�M�3o�B��l>��Nٖjۓ3$���XX���B��n�Ե��ES�-I��5U0�/��j�y�d�	��O}9WP��$$�ҎV��v�|��Xo�r9z87�G���N|doP���� QH)Zz�'������һί��}g�<i��*�\��(^��>��Ro��}�~�]K���<H���Gяzds-��(�mcD�^�Q�ԛm��nD��\��X[;�ʵ�W���H�>��>����qs��|(�������.<4wv���A}���N��	���dy^^��~�)�]�����᫈[��{�vog3�y���v�KZ ����~5��\��Ϗ��s�;���;ّ��^]G���V��*u9��m�֡�h=9>,�֠���!Y_=�����te
Е��v��jtMuc����:�Z�nP�j�ʄN[��������o����Xm�2�ejJT������|�p�e�G�)�W�-恍2f�b�VˠfJ��̼��Z�O��<�u�C��,�{�p_�xO��nn9��4�����Uf0����]���911�R0GA�j\N$��>�XÁ�,0�AJ����\�����Bն`�����7"&���:c��ߠK��i�c�E�sv��;���G'L|}Q��"�N(	x�(���@Q����^D�i��&k��tp�$�.�IUl1%���"^�-�r��D�I�FSУ@�\�!פˣ�[�ŵ�Z��j���:��7Mۮe�o_�=^��h�H�+q�Ħ�.�@�@2�k��d���0�)A�h�ɖ$�5AU��r��D���r�1� Z�Zak�t7�_�}j��d�=Y!Vi��<݁�Y���&�cyqQ��sk�{�`���Cw�I�K3�(��Ch�����p:�l���z��������F��0�b��@��E>��uX.�\P�!��P�l��m=j��Y���q+�e�>�
E���
~'`����ѼmC��1���ΎI�}�Bv
4�
��p;ŵa�7��"���������nLD��gv�Є��Ftk���,J�<bJZD(a�!fP��S��#&N��H��=��jV΂ȊQ5vl���'����͉�T�t혈��A��������-�y��C���"�W��;2���B�)��B�M��w�TAJ�=���d���lGȩ��"��R�W4M4Ŋb*8j��y�$��J�Cr0��^A�+�&���U%�+���0}��(�@}ēcr��I}�_�"�΀5��_�����e��<�;��Ea�;)�M��9��e�\|��vd�ݟ�J1����8o~`_�E�M��� ��(`�$~Gl���AT3tASC�ߩ�� '�w��u��s�����OH���(:�d��L��ʀ�4|B��M�����@��X���Za��Ę�ھ��n?F�q|\Vla�7���!s/�#S�d�
C��X�-�ٺ���ld��|��eT*3l�z�bǕ�g2,L��3~��e�=[�x���G���Pm�c��
����m�2��n���Sz�࿷���E�_�����2��g��ϟ_�w!�:���ǥ�{���O�^�ڝ. j�n�m�2�%X�%�������L�VDyT@@K�ԪK�<�\!�����h�}y��<]
�!$��@'	�jf�D��,��@��f��Ш������\pIj�<Tf+H�ڊ:u���QNw;� ���$�]�d������Dw���~�%�K�Բ6OŲ,b�5š�������#��3A�E%��:E�DL¶$t7
���€�H�%(&�@X�LMD�� M���!:i/�.��P�gJ�R��&������@��|	;
gԿG�eWR �Dr��:��0\8h��<�%�J��|$�$��%�h(��T�%�y_�k���|ćF
㿼F�)$�ܥ#�
O�3���ӑ�e��"�$�]�GR�Ȃ*H��0�2 ����!䨘2K"2)�p
�%C@H��`�vN�����)�+���Ch��!x|��s���^ ��uT���tؿ�ܫ^��W����p�s7�0St��v�
΢��\m`<��ѿ���{�w�;87wp�Ç�C��i�s�pi�^޵�M����t��c��c#1؆����^]U��w�N#li�y���T�,#�����h��_�}޽��Gد��2��w�8��"�U%�*���f�`�Σ��
F-p��d�*J�"[���Z�m���@]���BS΄]}ٰ����%љ�j��!ME=�T�F�o�6O��DlK�"Jv��c�ID:n�X�;0t��^IjI���L�F:-i�(F4nV�\�Vj5B[�EE��ܕL�}u���w��tﭗ��_I�Tr���Q$i�ROL���$�bm�����n�@��/u�([	ᄊ�!{�ݪ{���\]\\]4[���x�w��w�W|9�
.<�H��౥^�xe�MS�-��Q��u�AFخ�c
��>F���.��K��x:VL�r������jʖn;�	#\$H��i��W�-�[\��m7��h��wݥ���I�1�
����{���m|7�`S`���UcoV�v��^�Ҿ���Ek|��&>���eۯ��;��3��6|:Ѓۭ9����
@��h6F���<u��e���"��Ŵ-`_]�9���;㋋�9;�	���eƸ�I`o�+CL$"��S�3�x�?����Y�EwLfk�a5��XU�1��P�����鮫�g���ah����A�+�B�8>0��~P��A������Ω�ά�Ʀ�YV�8�����<����PsB5VC��ZV�����5۾FS�N/��׀���15��ΐ�����y:�;��f[j#��&@)z�U���Ĩ�k%�K�pa��X���ډ-���ö�fM)�ȼs���3t��I2��7x,K����m<�����	�8�TD^�qpc�:���ee���5�+Ш��X�{K�*�:��i��BD:f1�6�H|V��h���_�1��ҡ���K� ���a��
�@6�+�?�{v����֞��}�d����绽�8�4�]��3�o-7\.K�]>;�Q�W�-���k���:��f���Hq�ϊ̲p����h��C%�*�h��2���B����!���P��΋� �f>8��%��O�Y��$�+���v������3�m�Mj�����w�����:�p��K�a�B���/�%�l�T�~63�Yw�b&�U`e?�*c��1ӵtA$]���vȂ�E$M��t�\���R>q'���H@�@�1�3S�R��A�����
�ϗ�@WhOգ�X�j�&���c?�T�w$���E��l�i�BD��=͕ ��FA޶;]���L*4x
�s��J�J��Zk7�r	��)�F���tf��V��0f��~d���-�	
�?��~��y4���s;7)��[ut޶Wm�"
VW���Z�<l�g;��qٴ
޺�)S'
nݎ}Ô�u��{;�3��Q��'	@pp;�0ȉ���g��a�m�1#��Wn�Ft���?�
�ԩq�\ryl�F7"T���Se3�H��ŴYN=����Vx�Y����EP����j��Zq+������l��a�Q�i&;�PZ��ԣ��by�x�"�y�ℼx�*h�W�1IyF��+�Z����7#�m����}M��BT4��f��;��
�<��
ȌD\�(��3�A�=���"�$	t7��ߜb\v�2C��n`�Q�l�:�GS�e�)-�6���1
����ށ�q`�{���v� v��z����n�iwJ_�:�Ҕ>�D#t�Ȑ�Hpg�n����rx��u��=�W6��ĉ�O�@���=G��c�W��鵻O��ZC�JW7��_9��U��A�Nm
�}>��
}г��Q;��L�C�:��!z���y���@<��f�Y��[������'�l��ܤ�{��G���n�L�9 �ʉ���n��u�Ӯ�I�!���ލ�kkk-+���*�\k��o��u�tUky}���<^�g��n����X�Y�Ws/�[��'u����Ɔ�<���7B����3��'9s�&��y�_xo�������g�-Hof�$����i�N��u���ħ�*晻���S���R�1�5�U�e�&U�M\��V
��EE��X2^'�"u�S��,�ΐ�3G�3�z��~+��0U�9��g������]��p�w�
�U��.R9�Y��2��)�l6�K~[�3\��0W%���+�D{�%���E�Z:y�L_=��
��"��� -�^y�uhY2��A=͐r70��������J8O��V<�+bi�>tU�5p�
h��tMvP��"(V���p�Y�n��Z;s�B��A��d��n�#6��k*��ko'�Uމֹ��ߺ��]K��U]Uj-�rK�e-�-Y-ٖ�ll0�f�v�l0€!�@'C�$�	a�$���!���(�����2$$a��}�ު�n��_ޓ�nݺ˹�l����]l���m7��ݷ��<$��YОE�#F�b��!�i�U�@�Uk�hf�=$h晱A~�gd�����~�lQ��\�Gc��%
o�[rR��D$��b0�q�>�8��+Ї�f�u����j]�P�9�8��.}f��ϵMF��!6|!2�yz�FV��@���YJF3��*�/LI�KS�n{�gyĽ)BTz�Y��N`�)G���݁�E��JZ�T��I)!����F���h���iBdV%sF�$}�S��k��%�C?iI/�J������x=JZ*w�vp�D�7��
���Nwc�B�L�Ra�������m�h|�2M+�k�fH���d}�8�s}}��������U����H�RJ&!U�\W��%��J�⻗'��p�W�R�Hs<�7�.Ѽ��*��);S���(-�r
A�\�O��=`�h�E��:O���9���xs?C��& L����=��ة��jQU�[5\ݸ�����</����4�cQγp-n%�9��#�`�'�cY)�6
#6�R}!C:J*R�a��VY�Ų��4�j%�&��y�Wڛ�Q�Ρj��U�c�\�$VVLG)��d�
'sd���>Yl�#`A���o6�ѠL},�h�-��Ş�}x�r� X~��8�P�(Z��,Fp턨��m��v׏d�0�c�G�I
Bc5ӬQ?2��G�h练��R�3����W�9j���CK2�P��DC4f&���T�J¨�:��yU�d˗D�1�l�\/���2���)ȴf��82��I�2�&J����<����d���#�c�#�9��i<��q��
���)�0B���$;f��t����v:�y�B��Ϛ��ru~�w��7�p�Ț.�lY1lY�Hl�C�}׎-��p%F��]�u�ζm��̅�	��~�b�|�jZ#-$�df�ڧ$�!l��
�%'I�Y����U�E�أu��_5����Ash*6��G�|��XYJ��oB3*��3'~�zd�=&�o���.D��u!�
/��g�e�v��1$+��U��|}njnʜ+ͬY\>�q���L������X��>`�ɢgȩ��$�lVg�O�A`#������Xڼbr����!Q���oޝ��i�ͻ���|<��vA%<|S)��Y�X^<�2#�,axs��T��w�����$9�$���{��@.X�����O����*Njj�l�ye�QJ)��I���D:}�����
�
�^P�u��V��=��~��B��+��Z�.��z�ED�n'4[u�{��6;�P�0I��V�g��D�4IUyM�grR�D3MV6]�U4�=W��#�q��Ȳ�ˈ��Ԅ�r]M4ױ$&n����i䈲;ӽ���0���U����.�y�#��.�g	Od�JY!>Fgr�ݹ���0�e�D�Te�U�f+��J1�;ܤ�b��Wq����?�M�j��~
�C�]R�<�����ǒ�#ᏸ�pR��$���u�A�G�Ԝ����L��ƨ_��Y�P���L󦈯G�2�0����Js�� :�"i��e��D�tN�/bA��k�i�U������[�`�WŻ�-�k��r{����譣1Ͱ��/F�����	�-ImGC��M�p�׼4�FyMC�t=����-�Z�1+�,����4�E�
l[���.F7u1�����Uh����7J��uRq��)r�;�:6��s�x�s�t�Rpt�!yy9�u��Sx�z�+�W��ӎ[MY��:ƛ�+xΙ�Bݍ"���vc���;ћAIB�,u(�@�#�:ʎ�$h�5���:�v�n��!�ZhΗ0�v>��ˈ�nQU��Nd�"&�2H�,f��8�S�%&�0�Wjh��S�r&��YK%B�N�
���"Y���$m��n(��4�8(9���^N�/�%�;Ge�}�+@Av�D����F�f.vE�t���
����A�|�8@7i��Z��y���)�dN��A��n+��#P}t��9ުz�I�5^��9��*�OK�*J�'8F^�J�R�p�=�B�(�����}��R\Px�j���g	'T���ϳ���l���hL���p�}�
K�ȩ�Xk%�LfN7�L�s2Bb|i|f�����f��|S��.�)~=%I)Xź�n3ԙ�!۰��'�v�PC
C#T�b��:�sN~�cج�˨�굌�5�O5�Մ��t��W�9�%Ʋ�������;��w>�2ޮ]J��q��0���c��4.��(:M�}\��_Mn��&D�� ��0�45&���������jyt�A�,�
�^���$�C�.#�e��Ҋ+Ϟ���ھI��
k�b��E�d�F�j�
�,\L�R���G�|.�>�{
�U&�ծ�I�̃������j���"�V*nb��JS̟�-I4-��ij&g��0��(���(��½�(Xҗé����<��
�)J-�ϙ�+:\�W
��T,p€��6���)�XC�x�E�@$o�����2Q�o�VRr���^C���_T9E���S��0�m�Oئ�f����-���iH���
0��L7U	3��{�^�A+�wK3���B7��+:[�����Y���
�4�8����:�~�w6x�d����n���Њ�X'#k17V��;���oǾ�.�,�!]
�j����x�x���;�>���h/ -U�������p�FM���/UK�S	3��,�"�Ͱ�c�n�3[�[Bh�
��D�=���Q�8�Us�nX��s8��	p���j�Z�'�N�?���U�I�<��o�{�L��%�o@�[L	��1˝kN��������H<�'�� ��		*�H
o��T�17;��&�H�H�+/0�yk��_�YFo|��3lJ7�kZuCT;_O���$U�����-Z��T�j�l�/�V��|>�蕖� !#B��"��b�d1�-���V��W�נS�p�2�	��l.�ub�H.¦rJ@�
�)��<�L�p���(/ߚ�Z��v�"
j��~ƒ5�Re,����0�b�����3��4�q:�!PK'͋9�\��bcWŎ�^
x����n�mi^ˣ`Y��M�ڽ$�k��έ�r���({~	S�q)�фkb9���b�|9l�tC��ıd+�����ߍ��h�����NL��e�B�&dڕI�5F�,�
(g����s���$�<+�IC>�.����|�B�-����n%��j[��kn�QLb���p����-��l��!iH�xI3$�m��r�7Gu��CkWXWq��+�͵�e��/��\��|��ޭ���wa@__������g\EC�F/��(�KT�S�a(�� ���GVr?r��$�3!P$�A'\���]��UͰTc���Pg@����U���,��&�i ������H�?Z\��0�e�x���.(����$��'&Y�0�,�� ���e��5L��c
�	 ���A��9]Bά;3i�13Ǎ��BP���:\�a4Q-3��d�'�3{|͆�꫞�+W0���[��sE�a��l��(�C8�b�	S�\�d�*��dEƵY�xݒ4V�4A/��6K����c��G~�&
����T|���u�3yUm+#
�U3�2��(���%�F��S�9	�:�L�X�a)��GF%���j��w��j�u�6?���F�S�L�j,:Э���Q%'���$Ѣ���[@W[��	�q+s�0�:kTQ�>�<+
yĿIJ|S�R��5��{w�b0�Nf�м��8t"�va��ȱu`�F+>
����R�x�P��ŕ
�&�7X$mP0��8ҡE>�1<�t����bkqUc�S��Aw'-�(���n��袌>D@80-p
���F�䞗*�D�4�#(
�	�`����a�� �1bM��^c�@�*�mCJsR+�U8
S{V�tF�L)$���#2��Z�$q�)���0֘,<Cd�8
f�G����I!��&�Q�&̨@�6��D�f�ѓS�!LFœ��a���)�fO����<��/
�B�H<�{(9�0%r#NE����̊0'm	XT
&�e�Y�D��8	�\V)�i�I�NE*ʩR=�f��P�����l����49W3X��,_�0�)�脬�%��A�ɋBn�h���IC�T�Qm��ŗ5yQ�DX8&+�آ��dZ�B[3�Nt
�0�%D�K-�	�|�ha�ȁ0�Z�I�/�:��Ι��i�/�$��`T�nj�0��	VbfmS�%�>G�^�i��')B��e�I�b�c+[�o���x�����#�S�X*D=WD�b3`�T?[+֊�)%�?禕�b�����Cמ��@��C�*n���ւ]���/<43� _�OV�=�T����J�ǯ�=�t��oO�߹��c���j�[*`�q����#���k$�D��?��Dc�p��������x��D��ҷ�5��&C�ϣ��C0�eB�
�G�4�=��䣲�s�l�YѨ�����{��&��Ԙ�9m{K�b�����Ż�` Q�ƒ��/~�g
�'�.-�]zɃ�ӎw����4�y�sC�Z1�d����~
��9#��u�+���p���>�$��s���s�~�j����	bOQ̉П����׾67�#ݑ#}�9{1GI�����D�^T����t���Ǐ�{�ŋM�3���ju���q<��r&䴍�n,���a��meͻ�i�k�;ROw)��׊�r�O��bv����+��m��w�_O�L���ޯ������&\�H�廔=���z~����7d���H�w�3{2sp��d.��il2��	;:�1����y���3�q���{�d��G�q��_3��=��3��ԕw�qDZ��E���^ۃ��(�ۧ'?m�Rv�)ܒ�F�,�}�N�y���.X�Q?�u�(<߮UI<�t��l��nG-)�i&p�CޑN�榻�=��攸Ǖ�3z�c����m�g�QU�a,o��_K'�tJ�
��W㒪����T�3��>��~?��o��W�x���Ķ�\3桗��kދ�5��CM��5��S�!�G&�S��W�Ww����b�����ZF�S��0|�l_Ϳ/R}b��ꁉ��`�_���O�z�k�g��ߞ��#X����o#;y�H��SC����?;u��k^3��Q�n㡷�A�<!�C��
����5>_[^�YX����z=�T������҉���ͥ��}G̩8��A�x��{D7mͳ�ِDB��]�V���|�g�vR�����w&�훼fH�O]��I/��a��������'hK��BDd��@���[|�Xo�9yr���%�'v�>��{���B��}�]��]���0�!�w@��Ӥ͓��sd�ݓ���1
�'�:���frԎNRW��1�`~hJ�P�
Կ�в����� ��
�$'u���ȧ�s0���M��4!3�O��ߖxzꋋSS��O��*`5l�+I]��9�*�/��d�?�g�X��X��F��%�PD��Ƌ^R�K�<3��ԩA�����XW��#.a�o(����w�[<z�U�Mo�V���a�_��%`tG=ق�#g>�X���p��v�x��3�?s�Y����}�2��b��x�gȹFck�۠>�Y��LW���K����૆�f������XJ&Kɏ�3���q/S�������f����:]�g�,QJ$Jvq�����b����S�nΌ�Ǧ�z����ͻNm_��q�ᇾ7�͐Z�(�L7འ���40�� �1Tq�qrfv!�uj��͉�U��{�v���ߵ�|..I�d+�*m��򊒋J& ���)o6�������5���iٌ��g�vg�S�$ZD�y!m�;��
3���2G�ia>p��k��}��
��w�/��n�F8'��`���]��#���<0���qO�(/gf�����r�d�yY1EV��'�=̷�
�#9/_$O�ehO�W�^�۷Nǥ`��ˆ*�0�:�*��Fݲ�o��9�p5Q�T�@�eh�JN��!*��!�je�c`_�=����՘�0g0d^�pbG���1%6	��fZ�
x�V3piBCʔ��1�.b�gz�v�	gfU5(	e��Bd-�/E.������x�����_T3�:���T���t��N��Y�ų�*s|���?��4��M����������Lv���5b~"8/��b�I�^:]O��B$�@UN�ֈ�%4(�g=81ۊ��U�5	>ju4�
�'��P�F�}�*v�A�|�Q��)
ݹ�9}�
f4�J��NMQ'Z����zbWvRO�Rꍓ.��Kĝ��Mk�KW�w��"�t�x�ȾCW�f��W�r�&�`)�ߟ��9�w:�YU�\"�zB�t	JO%id�G��$��2�H;|,�nP��e�n5�*�Dh����p�QG��Įw���pq��5���O`�;p�"���qb���,~�]��d�q�#+��o�)*d�@�� LcN6?{׮��]w}��^�wee��.���.\(|L����!�6h�O!6���]�!vg�Ո�80Xа.�)��.^�$}�̡�D���0D>���C��]d<r�y�0���0��|�$n�%&���0�|�0s�!��.ꚰ���[P��C&%I���l����4����\��'s\�*oo�6�Ɨt�
C
$m�g�^|��<sVw˂/���.I�0�uu��p�Ę#�a���HK��K*X�K|�)�����4�:�]�W� ��/���eԀÄl2��@'Vi��b�bw��={s��0�B�:�-��iFը�.�s�Z󔨢X<�y%Tq���~[�.��v-Xm�2��^�hR�O-�3�B��*��"(�X����.o���̟r����
��-9V�8�a0|�j��gi��q�$
��Y�\�zk���L��=�}��1���1"1��}l�b�ꫫ��r���+Pá��������#,ϣ��G:Bʨ.�!D��2�ꪗ��kʇ,���&.E��b�
�Y���U[��1#���N�wx`���1�A�<Ю��Wb�g9�=vNύ��cwտQ��rgۮ3�چ
�UTM�xh
7��'���;z��؜�@�Bgl�X
����
�k~��&���7AL'�:�ʒ�|l�O�4�h��E?���� �`�Bi����g:�@������3��y�SLg?�0��1�3�`�3��iU�gt	����Èx�$D�]&g	��4$�zB�X�s���i�q@����Ȝ%����b��"�ȹAg	A�����<K�Tь��]2��N�@�xɾ����"0��\m���U�T�טo�&g�����2'�t#3�%Z:����V��*ǎ'�*7�~j���NWȱ>�3L��j��B ��U�Q(&�-�4Y:�)ʸ�(���l�'�׏�4��WW��)���g<�z�xK{��}�؂_���W߭��w�ֻ��lQS�zj�XIK�I;��O�~CW��f��lut��)��\g!��=��2@Q~�����[��*N�y���P�l�QH��y}o��WCE�)Z�fg���{����E���ACd�T.����*�kg�Q�^�M���&0굋��5���7"��4V£���v�j7ފw�
�z��|�@��.�星/�r'�0.�JR�q�ݻQ��es�$=�R�5)�)$�6,m��'�����y&OpIEQ5,����.�{�#&��ۉ�a�萱W�M1%��������1��4�}���?�2N4hg��0��:(7->q#h�����a��E��ȫ��A�-�څ�Q�{��[>JL,�x=���4Ym���j��hH���E4���zIR�#L�Y+�#j�|��N��El�b��>
,������+�#E����o��´�h=�&�@.�.r,ѯ��@���?9�3���O0��:���:%�@�\Ab�o��2n�zm��#t�X�N��o�^X��nWW�Ց8�'��_so�����4�m4���h㓙����+�[ԜF�R"B��D�!�\@eft���4�n�irb�כ�+�5)p�H� 4k��{wjR�%$�l,���%���s��1/&�g�|�N&�9�9J��y��&2�׍�#V�l<��.�|<B���
&Q͆a�[:W;����\�	g�p�S	'����"��P=���<&��r��*q���w��bg��'�ߨ�sV��#�K�O�W��'������̝�8��+��e{�Y��=��	"?��\�����M8ٿ��>��y�˱ݑ/4�mz��΢�0�"��Kb�CTh�;��E8�W���j�����p��`\�N���dЯ?u�x��| �j`��3�0gmE,���1�0�a%J�5I�.�QL�f�b�"��h�%��|���,7�Ƀ��WH�5���px���887��.�`��<�Jú��������+]����0�J��`g�с�m���Y��1+��4��Z���b-aG����X˽���N.Vz�?�N�������
б�H�u�E6V�4+|���V��6��!�z/�]��q�#��Y����$�r%(�v�OSy�>�䚥Fc�L�\mԧ�~��G�irG�^~���3��;�R��O}1B���O��(�PH��S�G�̐PU4H�����%Yd�U�dS�-V���ˌ9�{�dd��$�m�%A�%�a�r3a��-�,�$Dk�5�x�u�t2&p��	Y�L�39��&5A��̌c�at�`YMd�ؠ��}��b�ة�MTsm2���0<9Ϡ��~6��|	iOe_��
�~k�I��D!�M�3�#rJ؝N�ds�s�b1pM��e���L�����U(�hA�M��?�9y^w�Dm��]�`2%z59f���
zNSU/���[bE�l&���Q�o+�g�$?��\���s�
"#�"YX��J/���/�"�I�k~
�
#�M�*�\Ј2jz:T9����pY@;OWl�W�ځ��0�1އ�C2��@'�4��i)�e_�ڦ�[^���/	�k@\tn7��S
#1�QI�q"VZT�QI&qh�%Ƃز�Rf�Eh�כ�^ K^�����	�z/�[��Nɺ�Kܘ#K�	�k��5a�@c��J�}�n�"�����G�O�ђ��IrN�|�0�ck�=b�\��9$�FOceB$ᄤ8�:C6엝�eM�z�˟x�-���a��Uc�9�X%��kH���� ��f�7�q~�r������Ń�t�����+�xS�v$�T���x3��=�h��]��ȸyل��d����Ldw
�l�~tG��\�Q���dsl�$״yC�7�k�;�rkn����_�v��z]��N�-LJ�2V��g��E@'/�!j,\�0x�2�y�P��Y�ۊH�����d\R�k��6����;[(.͘�Q�~�#0�q7�%P6�]S|�G7�Ҭ�LC���,bmh�/�k��S�咂��N�᭾*�U ЬPXn��l�Xü�P��]ۀRk�nd���_�j�$�5=W~�0{ޱ�t��kdž�Gu�P�n�
�o�(�[ꕠ=��br��@�a�^�p5<��R(���{h;��4�J��F�b������V��Zy�i�״�i��e�%<;�cZ�?�+�B��>�
n<�]���5Iԕ'M^04WTOql�Sd�
���aT�Ӂ��TΏ�ȕ�a��dA�yN� �^"�J��}S�,�e-�*�J��+ڄ�uYq��T�8�v��CWVXV�-	T��$-�m���8A��St��C�g$�J�����Y�����f3m��*���;xV��U8����	m-�u�g�rY-���Rp�~A�t�Ҭ4�p�.��f�K��� ����~�M�qUVdT�	�[K������ϣ���VB�dM�@~�=8�_M�:�eA��M�p�][F��#�620��C��?އ�D�m#C��_��E[�����G^��Gl�9��4�g�(�@�7qҭ�)��K)[y������R%�d	�{A~��h�؈;��D�4�>ɣO�6t�(P�uW!|�2}���[��	��z��^����Fܿ�l�t�{ظ����õ�q��ql����  �3��_��7JA0U�{���	y�a��*�J��i1��i�L��ǧ�sI%!"Z��
3cbBM�'���˖_�NέH����,os+s���
ڐ%�p`�Z��hOak���ų�l
��N�Ϩ��$+����|�s�g}�_>��s����̉3��_�r��b�I��D���$�>s.|j����h<�q�B��`柧��9L�g�y8N�{=	��O���Q��DG[^2#�2|��#{V&VV&�y���_Y	e����b���A��[�G|���p�x��ݚ�u����=�x��+O'�'~y3��Sk\[��_�^�w���Qߕ(s(�D���~j���3(�G6�3'\9��=iN��_��9�-^z\��r}�K�˰�//ߏ�e���o�	����v��kS�e`o�fKrO���a﵄���H���2ϮnFuyju`]'�@�.��_RN,�=ŠM6��I|P� ����;]���/@A;��"	V��H����ETVWw�c"�����'������=�m�W��㿝��n٦n�������Q��߄��0�0�-%D�x��E�z2�_.\y��V~&W�������s�Xn6���/�:�.=8���k�9U�D��n���������d��Olr�c�넝��ż9�I��5�'6����"P�M�@�u��s;.!�˸�n�خ�j�S3s���>W>K�Z���c�v�.uj�N��s�w�����NO�V�zF�R��*#�P�����{c%h�=X�j����RgD\WMe�ʮ�
�,pW��&��oηX�Q�)�g�Z=;UU�m��Zmf�ZmL��O���k�o�7�x۲jgˏK���٩v;eߦ��%>>991A���ǯ�?/�c)�O,+=�*P����vMD�GV��E�V���9c%F��b�X&��A�5�B�P0�=T
]�⡂������]����ճ⩣O窹��Ts����ֳe���o�H|W}WZq���Q��t�wz�\X�����#�;����[2�*�!gi���E���0a����6�<ܛa�;М��r�6,��4/�&���1���U!~�na�~%]����W���x�5V�Uyz�%w����|���DkǮ�G�������ȡa|=��%�,m1kV�Qɞ�Q�Z�V&'��me����O��$�����6�B��ۍ���#���T����mP'�}��V�N�U� �H��ԙ�V�E��В�]2/��Q5�~����$�?2A��Ȗ8��/r˄&	��`��qO�Z��%=5�n^�AJNQ���v�3�]b�?H�.ڗ��.t����ߧ��2���)�/:��x��rY��K���}{�(������Am|�c��&��m�뽌O�K��h������W�o��ض5���p����bP��L�׳��D8�V��B<q孷>v�z����
�M� ��[��"�w�7�CcV�	�<צa�蛟��Se��h��=\�X����G��N�����?Lz��7�ϡ��‘=IB��n1�J3ȠΕ2�"��VR�t���T��(����6���}��&���o˽|*������tn[��˖���}�K��%��d�7Sݭk��Y�,7��Lo�2���5|��xI��Kɯ��4z��Q~�A����O����n������+Ɏ���֤�$ݾad���q�Ԣ�������&%,��6��+���;|׆tf�-�A?癦g��#�|�b�z�ԟ�x�G��۞9�̨�c?i��:�}����}�r����Ǐ����֏������(Q��XF6]����e�p���2`�d-s4W-�e�p�	I5�؀A(�X�r@
���������9�`K�|"e0�&	�*���P���&>6��Nw��"0��k��B���H\��s�G}�-��a��p,�M`h �ϭ����?�15� ��r�4#'aO��������[�o}}���rgTx O��?�����oܛ��|8fg�?N��y
n|໅��<Px�w�} �Mf4����p��d3�����O?��_�:9�����کS�4�b��'V��E�p�@-z��t���]�{��ЪIt���]x����Sd��)\.3�*TJrQP*W����EpH�n�݂Im�Q���N��g�(�
ۉt�&&�3]2�X����r�3{���B���%So�&2�Df�Ԩgn�d��/�e���tc�`;;�45��L�9Qn��b�<�,��$i[��F��7��٭G-��*3z
�b���T1��@��̎��؟�u�$�F�n��_����&�����ɕ��S��Ov�14�	J�1A{&Q*�\l���&�Mn���1K0�j��Ϫ�7��DyX#�7*р�*0�.���'���2)�|]h����!��co�Z��Ef�*��q��j�5_��:��{��?���iUk~ β��c�m`��`��F�c��(`Ae�
3�D:�N�8~�9���,k���;h6�Xfb~��e��&`X�#<Q��gȊb�	���xD$>�SQ�!0
Ϡ�P0ǵ1�h�q^'��K�h��3��3D�edSS8��t!��YKt��ON�g��/W��������Ƴ��Q�
�Y�1���"�:�,��^�D,�9tYX_�X[R\u����
�~b��DlG�����_w>y狏^}�//���y�iο���o���'����3�
�0��l���h>b���8�Pa�?�rU?N9N�0�^sxA���ҏ��z�;c��[+G�!�j�r���6n[|����V1G�zl4�x@�,b�V�	�F�À�`x��,�>zE�����h�\���(���5+��m��Va�i������N�Q�}��o��g��M��q�QI��&
+���8C����;�O5�۽{��	C1.TZ�J�.oω=�.$�Ĺ��1"�c鳭p@{�뿑������R�m<}T����v%����^�`�5��F_����ޝ���uL/���'Q�����t�?�5$��@��t�����ӛ��gb�ݓC�����_�9��U*A
���6�]�j�<[��Z��Y��A��ݽ{w)qK1K#��򩂮e�ߜx�[y�"o�5~6�6O�n�늉[\��	��B�Q������u�%�-I�;?S�d2P��y/��{ќ�gc;�4��	"ѯU��^xl�/�[z��D3i�=ȩ�|���0��h����1pï[��0����f�gn�ȳO����U�5���H�q���^�Z7ăs�o�'�DiJ���䩒���io��>�(%�a^\{��H���rlA�;��^=��	ߟx��ժ��?��b�;���jr*q��K@d�O�ֺ�_��v�w��R��/����?7n�O�ʳ�k�XI�&����Ws��{n�����C��}��0|Rw�f��߆G�VgX�[�7�-~1�>;$`�`��Ԑz��OoL�q�OO>��LNm����.zD�R�0��p�PD��L��.���1T:X��!����X^��76F΄y,��5��͟��<�L�L(�EaR�0`�3�8*��Nc�Z��%�ƒ@>�4��pG�"�k޴n8�w@��MU�N!��w:>,�[�#=)ڷ�4��I�\-r�ڕ>p�#@_0^a�Z��jO6����6�e�:;J��V!�����m@%��H�5�K.��d3a��Dwlr���G����Wq���DrN��t��frD*q�O#ד�K��6����&����o~���z]��k��"�8{���3b����+��3�����i�50^~M�i"��$ ��������k�W��Ͽ�Q��8C^q׈o�|��ce�oT�х�[���߼�BS�>~������u��Fe�� �p�|�6�"��
i�O��}�V�9�e��_�V"�1ܫd�j�����4�t�^�0q���n�{��w^}x~�}������{g��ۅ���=��n�6�?��=7��
�?8Կ��{>�_�`T�b����ɟ_)>�{��nhv*��䓽�^��2��x��'��}��XL����P�Q^���:���`Z�ο��}b�c~�$?���(g��	�^8�~��]������0l���:���Ā�Z�
�^7��VRI�=��U���]pj,%Hgl8h�V�T5�Q�3[y��Xh�bP�с̒�d��ɻ�-�!���x�}ȕ���D$�α��6#0N��;��^�<���.[lZr�M��k_�=�f4��2�\�¨l�g�C�;��Q��9ò�?�ѳ����ta2�E��5r��z.?����d��V�t9xpu��`����B+�h�e���y�D���Bx�py"����F�cw�l"�>�����7�3����*�WR�ȣ�3J��d�f#�^O���6�s��+@������Y�9�ц����Z.�o�w��/�f��f���k�ehK�1�4
W�'b���+���
��P��#g꟢�|=�OC>F�M铿E��H��o���{��o�O�Zk���H��[��^��:��OE�o9ã3b��q���?�*m
�����P.h�wJ%�_�.���$�s�:�K��$���%��'�U�h�����़�⤄�����X�nu�Z���q����S��M$�$���X�e�'�����6�=��RzѶ���h����n�4�q�S�k.��nw����(��Y�;�;�(O���H��f�-��:%ߘ <�Jd7['�i�Wv&
�o���.**ӊs�{�֕�7��^x�L�WbG�j9�Q�Xx��Z�{�N�f���V��/}��q��	c0�,:�s0*��Zhs�.�a���ګu�[�6�׎�_�ɮ6}�����������V%Ε�h�b� && e�Ӥ	�/~��h�����Fc�|�ga�]�y�b1P����
�x���n��p�g��8t�����W5ps�x�'��ǘ�J��n�������EӍ�M�����,C].Y{~bRT��'���9v6>�;.�� �E=�sM]!���WȄ���<muUwɄ�jV`�s�8��a��1��ƛ����󲲨�'ߕ���Lk}�
�3����B��#��>Tc��И�Sz6Q������.y�×���m�#�m{��x�c۪2�3�A~_n�F��`BX�.�����<�A��0�݇���aV�� ���R�Qt�\$��V�=�g��ay���^�v��E?_�R�l�Nk>�95��1��+��1�����%����$�`Eb��ψV�'�*���7�/-�^�uf)_�y��1!�D^�ؙ]��[�-�"��nlB.1"�������N���RB��|b�PN�(��6/<_h4�1�V���N��m�IHŻ[���-$�D7(w�VPF�Y-XVղ�����g>d�����Fams�y�����ŋ���d���_.�2��a66�Q�^iy��V�0�v8}B]m���x���Cp�I�z��H��rL+��6	�Mtjdu������Y�!q+`�/�$���FGWa9����d�����MY�d&!�՚q�eX�6��E�6������K�Df$NBrV <�-�2� f%A��	�+Ĺ�D`%ˆ��G
O,>!��0�INF�[�;�	T�5�GɃ@sg�h�xTK�}i5�d+�>�(�.\���x���F�<�q���O�<��g���Z�*�L�p*�1̙v�-�eX�i��2�eފ�|��(i;�2��+;����6�Sn��`�-Ŗc7�~�8\0�/�y�U�d'z��xS���#&	�#�Th�CC+@H��d�T]�i�y�����/���5���~�{q�K��	����x�����)2K`�	\3��_�;?�W/TϪy�赬v�x�
��S���Z����	l*#Ȉ1��B<�/���Gp3l�0O��>N�,
m���!��0�Z
��x��r�!:Gff�Y���
��V��P˜b�0,ZW�T��K)�#�R�^2D"'s�����aL�����m`#Q=��7Ao#���ص��4���F�"��D�L�CD�IK��ƃ.pS��*�*d�";��.�bh�[���cZy�С��66� w���Mvԉ���sj'��K3���Qw3r�͘$-�Q�d�s��*�����\17�L��M*�sK��@�-6�3��1ZF���C�,�hm=e|g9Kn��0RuBΜ��uP�XmE��J�؅ZU��V��.���+�V�W ���^s#X���*��v�F*��pr��J6�~�N�H�4��	\Ϳ�
/�j��ݛ[7�Fn�&׻����v��{s,��+�fX�>�	�B��q�ySc�9BPL�0e�����S뒣���1U�����<41�[�=��Oj�4�!��ݗѲ��'�U�<28J��o��hp��o�Ӷć���f]�{���]�"<�pV��?T,�2GC;Ġ��SW]��`(�a�/�>�m�eM�l���s��~�mG���'.��;�'�/�h�o��-9O�b����������5�IA�C��r��1��==).P����4��BSTћT�$u�Z^4,�X,W�v�R�c�+��`�J��x�'율���d]�E�Z%JCb8a�Ŝ%&�T
�;J
w�X�'�ǢY���7I��9i�)�*4IpXFb�hQ/CA�,S����i�l���x�����Ǩ���4�P��Q|g]��a�!���0�(�
yy��8by�fsT?�lk�l<|��h���yɹ�?��ɭ�O�61�.?
���
9�V��b�+ @��p�u7z��������D���E���N�ݍ
�m��?����kP��
��*������zl�5|���SOA	�����Gm�&t��� ���4:�!�@�3/ij��뻝/0�i��`�XG�a�E�a������_�u��rh��G
�I�	R��r�ݶ���X,ͷ��0��,�B�R�H��DKd��z�&��1���
�������}a�-��\����U���E[x�6�@g�{�\{M�}ԛcw9(��@=<}��3&c�p�q�<�kC<��-4��ܫ�y��:#y;/��ˊ�j�c���k���V:�O�K�$�J�#KzJRDA&Y-��)��SEo	N�EM�S�
�Id��i*��8��l�߬��9t� ���aJ"KxXJ�18E�ć���_m/�3�4Y�5a���LAQt��)��>�Hf\�U��"��cDN�5��͸���,�F�
v¶D��I�
����<͌#+�
�aI/��۲|�w$}w_��w?M�!9*G]�uY�����O�}�Λ$��5&�|a�U�aUMŬW���W<X:���	�SlE��AH 2�Y�o[@��5��r�*�/@��&]�0eYRM��ģ�!N���A��.1�$�X��"߯��(2���d�r.9�?-�&��H�D0�	�I�&Ø#qކ[XQ���0���i�f�q͕A���gz~"�&
]A�1gy�5�T�D�>��x����0eY.��c=�)z��P�o�7���X�]��|)4�����j��#�e��G�}�ڰ��.�O��/^����X@R��Fc�B����7�ܖ�����Ű�-��67a��OT�U�O��"�rI��J�}�<H��0�EP�5�[�����e nm(߀?Z�
�V�bu�@p��!��͔1Cu���
�i���
��t�՘�����x�Ւ��ڋPn�x�,oˮb�i���XL'�����Ϯ��c�|�`JO��Vm-n���"�"'��7�n�t_6%�7u#0\�55_��b�Oqd�&1.å���oB	�&O>��
��N�<�"���\}���{�Q=�
Q�4]�-S3
ՑmD�g=��</ZK�%��Y�#_^Ń�x6�0G�i�pi>)����v�k覝�,)�H�,1L��Eٕ���=�@4%eĞj�NƞpAs�	B!k��6�P��F�9��u�6�~6�v(�z]����~�QB�U��on�����[^y��k$O��-B�����j#�	���K�N�N�k�
��l���:�lv���i���+�@�9��F�H�I:��LhN�r��=�$�X��k�~`e�>��_E
��î1uZY���*�
�z
����b;���2cIЫ��U�qy�E'E[vT�ƅ5E�D��G�$�c�6�_�e_T!�Sߒ-[x������-��5��H:��f�s��t�A�]�ҥ�kUQ�M���b�uh��xd�~������Zk	�0���G��o>�hW���;;^�ZR��>+���~�L���1g׵���P��o�v=uwd_9�М�t�]�j���fgH]�3~�g�}����G����,wȜ��q��*�y�|�nR-&�j�u��JiK;m�׎���whd1��C��S(S�*�"j��R�E��y�{�*9�߭z݃���zy_�[��@_��М�7��+�w��%�r^��͈���0�ة��)jQ��{xIKMqp+�sk�)������t���k{׌�����8Y��K)Ff�j�(V��n�[<"�ڏ�0����	AqQ�TԚ'��0;$��Թ�,���:L���Y��y����K&�̙LŖ�W�1w1��
U�aM�u��x�~��`�U��S�ܕ� �:Z�oI:Nl�?�8��[1��{��<�#��m8M��k��=�=���Q��q�cA$]181C��v�&���@hz�`.�xQ��(c5e��$L̇�c �0�B��y�L�x��I����2�׼��
���+*S�F���@X��s��|kX
F��Y^VU�Y�g�R�D��Ih�/�8�령L�꓏+6Q��$��[�8�	g����.�qSD��s�������ܛ�IrT���o����K핵f�V]KWU���5�F�IS�F��QK��%0F 
�`���X�l��6�����m|�3��b�>����|�l3,��[�ʼn�Z�gF����o�+�Ȉ'"#O�9�w�T��t���x��c���<\h���o~,�yd
���<��&�����I�����e-,"bvq��[H��`���uWWuL-+�\H���N"	��9t� V��ɭ��N�3�b��Y)`�tfpS
M�Sx�Ğ(�M5���YE����T���끍2y��g!����O�߭<�}�h��5C�nPnW��[[�i3K4	�+X�Y��u�l��(5��+\����&_��8�_���2h�X��QbG�[l�4�i�T���L���Ҵ�D	��fg���l6�A�+~WC�\
�e����3�6��v��i���G����>�:���g���A�g�v�ee�Y�l�ߓO#��A?,J2o���DԂ�hd��@<ފ�*�&-������}�,�y]z�.	�#GIr��[��%�7N�.�7����?�QSC�P�'QK�uOh<���	��O��aa��e�/��/��yԹx5�
��ۇv��8]G�m���_r��k5���5a��������<��१]��a����(�2����y@*Z����X�
�7Њ�wu�9����x�H�}�Y��}�е�ٳ������C��_C|���K+x9��+�<ΐ�a!gY��Xw�~oW�&ȡU��#�M��1|&4	�,��B`?�g(k��jͭ��Ԍ��ُܮ!
��]L��׾3�kht���77��t����������4��ૄ�Xuʅ)Sc5�����zϝ$a(�%6Ν�}��A�02[bT	�/�\�7�y��g�;8!`ab�Ou���Ժ[�O�?#�DA�\��=T�#��g�Q����d���V�:�f�����<{��=õ�����L��{��`/l�?��n�� �k6��$�m��g����r�]p����E��}F�8�Z��O
�]��*�U���5R�Vg'����[[�=�EԨ"߆��ZmbW;{��$#b��?[[����Zێ��eW3��F�@ˏR6t�?��V�U<��a�”��z]�b�3�u�qϣ�`�ݽPx�_���hر-br@���2�|�|&�P�ɓ�����d�s��s�?䵌�]ϲ��Σ�P�I�2�mf����c��DB�w����%� Z�+�e�c>�7М`Hx����?=�lh��95�s�"��"7��Ѣf�L� /}�g�u�T��-,&K�A��ƁF�=S�x$r1�&�Y0^��?aU��J�ʓ�ܯD�@^��Y�#�����"��ۇrpA|�t��g��؂�ۏ���oV���ļu�N�9fjX���pB�ܹ�"33+�s��T��Y��A*L[�Gn�����{�tEО�3{fR�ٹ<�l��E>5�D�7\���e���վ[�ݢV3�V9��
�k:-}u
���P��H�z�7�͵յM�.mlt:��B�8�N������N��m�7�ݑ�%�S�A�#!�Z��`R�FrC����+��i��33�L[���"�黓Xn
yxN'���h�|��x�#?ԛqi��_�l٠F�#b3�w͎r�F���SK�r������+ �$m#Z܁�\�n�5D�)�~��W/V
���
&�<��8�C��.�o�������D��tL~jz�1,*o��#S�7�
O���}����Cm���I��n���3o5�0o,b>�3�'���%|�m`��&�y�:����|��?\̏����Ti���1\�N��O�񻑇�fs�������V����_FV�g�~O?2�)Q�}���8���ԣG�ȝ8�Ns��(��8T�rO�҃�?��'&3��85x�?�2��lÙ����	r���S�<�;q1�q�@O�~��C@�
�/A�|��!�E��A�e_e�R��G;zG=|�;��Z����T�K�wM��!^ó�8�$'9����R+�ds��j;����öz�S�_ӽvŜZ�$4<��#�̬�PJ�IV����F��!� ^&}����}����1�V�`�JH���;��'��^��)��%ɝ_/\�q�zJ�è��".��WN]�YH��Z!�h�116&�tY
��L-z���dG0�J���
�ڔ@���r�4j���FM��*���/ަv
ڴ�0��/(�+�]�F!_׽�id�!��+TbYܪ��<�Sq�����6ym�P�r�]�5���?I���l��ݽ���U$
O�	EOo-M��K��E�M3�/�|�����@ �(i��8h|�/�b	�9��Ι\�C|�^8�pš+�7h&�oH�##-*+���4��kkD��4/&��䇭l*ZE���b���);�۶PK�<��E�S��f)�⯮�鲒�d�Y��嶗�M�n�V�=^P�(R�Bn:fF+���X$��T��t��I��deկCa$������+�"�k2B�rE��d���j��
�e���1�v"
�������|@�*�2(i���-r���:7G6@��y~y۲u��0��W�>�6�=���b���^E~aT�G�Y��-�ෂ�Y4a�^L+�5�&����1�ن�x�]�4�r�xl���bS����1I5/F��̥-Mt���f��c5E
tZ-
Q�Uش�J���iN�����R	�u��F#\*��+
�k
\J�8����drF�K����E!��'R�u�E�Vu���&V��M��ܛS9�N}F�������Wq9&�	�:Y�R��d׎��PM��p22��BR�̉��ò2�G�<��	���e��Pʳ�4O�YW����WlK�R��{?�<�r�\9;SŤ�;����9@f�K'TԷu�Q��Z ����'|c�����T��;U�(�_k�&M��3W��~���KN��R����oJǼ��)j�Z��-Խ#�*��H޴a��t��Gfu^#��Dɇ?��A�%W��1�%<���a���j���
+:xW��޲�,�d8�9��[\C��!]7X���g��˙
��Q��������h����b%�A� �.W���{��ݲ�W���w�|qjeq��1>J�bKVqC͠jD5BU���yM_�9@%�5�E]�~���cN�@�N���bx������r������`����7�!��"�A�`��.��Q�p�
�Sl��g�bx�<��ψ�u��0�g �;fcO����&l�ͣ����1�ь賂�!(7p�ɜ��9NX���<R
����!�$���h}s~n	�M�(�c�6- ���}D�_�:_S�V�u�Wy��i5UI+���4�~��#���'*�?�T^k�w໧SJ�gS`��>�)���h t&J'�6;>Z2x�<EJ����3�Eo�ߎ.�
^ļ���Q�{�u��S�O�-��'b����d-�����Xc��O栚>�c��|J���9�S�fY�RT^�ݳ�9�}�-������n)G ��
"�q!�6�P@��Ϲ�0ʻ��Y���/n�s��;-��ż���)�V��n�>��X[؂����Y��4�c%��rf�3����b<m�x�13̽�];rY��hQS�t��S�D���D
�C�0U[�$�#�ˎl��6'Ф@�>�y� ��"��6�el��#��a�L�8L�i���e8	׀iTv�&ϗE´$貭�P��L�L�U�RMW�֌�Fk�.�	j�	����TljԯV�U�"��W�lt{�õs̍�=�F���}x��5ԫ
N�H������-17�/EV�#�Hԉ̠H�!�ܮ�q��õ��]�uQo��z8?����no�ڰD⼃ ����C0�0u��{�{�6裮��j�ܳgq���.�O'ȍ��ς]��2�Mp9�9�&0b�J�q����p�
]���ܵ��lZ9t�h9�MA�-����:4��Jp��|<�&B�?3�xV:��g�qxP�|��L0czQ�a�j�*��ï���o;���
�	�����	������Gj�#�W�a�k^������J�F�~~*��r-"��9=1��	��?<1|����SD&���kT�DC��jd��-C�d| �Lyb��l3��p�vi)�R-�z#R�wy��R�V?~|��Z۞^(\�%J��A���%���T�h"����y��b<����Z��OLųg���ٰ�0��A7f4��q�Q}���w�_��7�Y�"���m"�5�'�qh�Q�dN���j	G�rf��w���W'o;��{Q�
��ɳ<Y�6I��(GҬ�4��cS9�d����]���0¯����(f5��=s��Bsgk������ X�w�������ĝ�O�I�?�OP���m@+!���7�:�&șa	�����3g�:Ž.���V�Ez�z�:}�*�P�*�T�F�\�?Ҳ
�L��P��.t��`�����+��{g�Z�;�"u��:��z�T/J!w�Խ4mk�~�|�|}Ĕΐ�7n�4�)#S,4B�o��l��V~t=�v�����ӕB��{&Y�)H�2�Y�IJ���;�<�!�!F
	�~��hF����dIx;�Fz���B�ŋ�P)C�d�� f�n�	�2�L4���	�`��F&��4=���^�*r����ކb9W�W����j�z=����UE��*����z�#W���j�]UY��^��va{��5�3�W�x3S��MQt�ժ$��g2�I�}����bd�d�[��wP��zXɆ@�9(a��]�|���/g$&_����%�h��NbCΠ<Ġ�<Y�l��V���
�QB*̠ԭ��p}�-�N *��0��7���LϾP��'�I��&	��v,Y*��ؗߨOBWgظ��bұe݊|�}B���G�#��~�!MQUA�Ccu?.}�*S�D_�L��`M�S'�o�6T���r�Q��To��EA�^0TiߓOVn]_#��#�|��+�f��lAPUE{�ɪ��!ݏ�_��>�11��Z��^K=A���E��g�ߦ��u�;�_R�H��(�����:�^��B�o5;r��}7O&��i���Pw�^�Ė��� !}G���6�g�>Ļ��Ny�\!/�ao������x���!�w�Dc@Ho��<}�ž�^���mܩ��^CO5	�!�T���+(�L�1A��,�B��.m��5
a� �v�u_(Ch��M��i���Y����K�J�����QD�y���F������"M7�����%2�^�t&1�ltw�AӋ����f�B�f'�� Ql1�sׯϸ�S�Τ,;F{�#�g�����mwf>)B�݃���9�oW"�2{��
Gs|� ���]ؤ#
N 1
�/dz�A4JZp#B#��^e�U51"QN�!r�c�zL��;9C��y�Z����WK<L���#1YE��}:����p*3�
��+�$�զ�*�ՈsbUN��^'�"�_))�\x*EpW��Oh<�I,EٹD���𯑘c�K��k�=��m��[̲�n�������l�ȉ��Wb�zL(��=�!
��FC��f�	Eg��?�3Z����I���1@{[CD­%�a�h������8�����xEds}<��Ǹ">c9�(II�|Q=$�A�-�bUJI��^Ք�u�v*	QfǣJ�T��7$�2�f�ED��L�5^�G�۩WQ����~��87�R�,ިp�!�a8�Ɩ�o@A�L�v�^_x;�����_t��967�;�wn�����*/M�/K���(s��#H��mo��X|�������b�ǧp�%��%=��o���O�c:2�>黡�'�˶���%�&�"!|���#ʃ��AW}<o]�,�CEܛ~���e�kq��I��D�A���	?���&:�d�h��:�X������k8ĶP4.w>��B�"�B�`Mkʚ,84����i�~HN�'�D�A���S�U���zr�ԅCM�h�+���3�]h��<NM��Y�gBkD!zN�)�G��
z3$����<��!R.�ܣ5���-j�ڏߐ��~l�n�nv���7l��0�_�,�i9�`9͎S��ca�9i�X!|X9/0x���Wu��f�y���m���vG���_}�2��u4,�wv^�|�M�LT��i��0���5g��Gf�Ez��s��z��Cs(Y��~Ξ����o޹<�5*�u��swl�9�����sh�Yu��ty~�5T�
��� &�'Y,G^����kzԯ�'/X��+�HP�������J��FwSWR7�%�13���%T��XɦQ=y��1��6�{o������5\��9�%\�8��C�u�Q���l��+���T��B9�Z�{�T_��Y�Da����Jy�[��V�E8�[��N$���}�x�{|yo˯�X�u!�-� �����o���JD�%Ѕ7ا��J�� �<�cp]3"r�������V
RO��erU}�^7��+0AM��u�Q��Y�p�}�$����~qd��z��`�����+���!|h6��p���@t���p�3�����N��H���u�1�忞�x��Fy!>uw�v�љ8Y=⹡����S	�\��EVы	�I*,������"O�rH�m;�[�ض��d�ǤL�l�t�/��&���(11I�-0ҍ{��p��|�I_6�oEd8Y�qe��ei����9�O��J���L�OV��1�)�z�K�{��1�#�-���K���O�h����Q��He�'�aH�E�U�[ׇ�O�F���x�^����6�ʺx��'2 �����
=�x�Ra<5�?�<ޛ�#������}U�������'С+d�/c16MJX�!v��	������95bZ���T�eF��ܸ�,U�E���§qWݯ^�FNz�,&�1'����Q��X
�`�1,t�bHؖIQ��46(��bY���/n�	�~�x��d�иr��j<qc�4�?���������t�S��/�*��?�c�	�h��{J��$��'��W�#�?3�d���M�].$\Hݺ��U���K'�ssݹ�%ۯ�X�]5M,�㱼�K�JU͔ⱓs$	���džt�,/����c�m���A�[@���˸�a��kkkz__v}�4:�N���|Q
�8.�j�B��NA�z��"Eb4��pV�Lv}(_�Ɨ``�nj�D���Q`�EX���J�ad��Z����������;6-������VvG8��Ψ$�Æ_NjZr9n�$E�by�u��E����4�n1�P���/���ԟ�ɘ=��8a�q�NK�۱��r�)EI�ݡm���"�]�d�=���X�@S<���t�0�����aM�59��(��ј���D�Z����r"bV�^NǓ��0n�g��dKa�l��/$��D��jM��L<�u�a6��wi��*{����[�r����r �~��L���(�	��1)��>b�xzَ�#�rH˓�.�D>ʒ�^~��Z�@z4�[{��������j�O���
�s�Sݮ�^�l�v�׼�9���ޯ��=j|u.4�oKl-c"��([��z�Y�ՙa���P�	�C�@���S|l]2b//\BO�3/��َc��Lh���^_�W�u|׿�����T�1�v��mOkS��yW]7����K���0A�g��Lu.�3�1-��dM/�|}���g��
��_Er�X6�y�4�E�4��r&\�쬐�"�E��}��*��|b�k��T�œ�\&���Ly���+'
���V��}:>G ��||sdA�M"��e��D���jǘ|`�`R���0P%�
��p��M�@�چɃ{	���T�u�~�c{۲�Y	� ����D�b
#m>�L��a=�(�.�7��hG{��Y�T1DBSn�KŲW4���F��I��W.��O���*��}��F7w�⫨��3����M�"�8�g��a-��Wy�!��W��R��y)?'P���?�D�q���6��٬�Z�k?6���fKpl���f��,�ڶk�b5����K��*�*��vM>�T�����il'{��������!�w�f!�]�p�E����D	jR]��T�3:	b���k8���yd�u��ƭ�=��p?��񝀻C������d�O����
�o}~t
Wg�˜lP�w�JO��w�'��b�B̕(��o�!�L���%�n���E�+�5�m�/
�:�/Atx�!7�b�~Tt2׿��:���)V�xVg�n$�f#�n�:z��[]]Eѩ鲐m"T�i�驝�]�sb�X���z��������\�lD�@�=lOvT�q��Q-:i�
�׈9�V��] �
h>���~�ۇߘ��O� n�)���
1N���~�"�?�V5�����
�����5p�G�W��s��J�����G����B~!�Mj�I|1?��Hap��v�oK��D�_e6v��*�:/���:���s�p��bQ��^Klbf+�d%�Nj�=�#��qro�����4��eo�f��IH5H{(c���*�0����O�u������bKCL/}�Upl��۸=[^n�"$.6��-m�ij��`��)#��p'�<w��������fs�gϮZL�儘�q��`~��o:Y��c~Z�a�:�a�K\�PV�{p\�Wp�)i
.�òh
�e�~_%����
�p���X:��nG���JQ�N�(����������d�8q]�w�n�(˱�Е4f���|��&o�'���O��9����N��$�><?B��8�K(N�),����ВgT�#��U��Zr�s�QT��u���C���7��ieCi���)M@�vՃ�bm������\Ǡ�կB�	����">
~�2/��3����t`0�x�k��v���~_�}��!v��������������x��G1V�2/P���q���g��^�n�"�`��*k��{�H���ʛ�^��d�C�u���>`;��K��~���@x0���@.j�"J��|+�LRa	_3��{AJ|�џvo�r�[hY'e�ܟ$�O��<F0xd���/��@����}�a�DL���UB1�sx$���U֗��ٕ\��#����W4D��%l�q�s��ࣵ�kO�.�{�^��T>�p{�X1���F�7�UtuCs��
��ED��d����F�u��juo�]����E�5Rnڃ����R�J
6��W�dt�D>
2ɹX�%�������ʀ��y��*Ը�Y��|伹q�B~�9kr.����2�>��Tܰ�Ө������:{�=
F�B$�������g�栆6;\G��"5��7~6z��P��=�>�˹�M����6j��:ڤ?�1t���B�C`e�ɗY���������ҝ;TN���̮�eaj_�[RhZ��\�c�mC���v‡e]���3??O�#���Q�[�P�m3��3���_"�%�!7L���ɟ�p#�E���1I�y�ᇲ��$���|$� ��ğ�_5j=���M�G$�5+��H5�
�
Zt����D�4�	��І�h���h�"Q��$y��#`OX"�(Υ��q-�2'�muPWV��RTa�mce��6��p$�q�(�D��b��?��?èc�:���
e>��#zd�P[Ų�#p���}�7�{���|V7�����ՠ\��X��վGC4@?�Eнp��5b��:<�L[�EVU �хhXTi�0r�1F���!H���ʝz��4���`i�/a<���P�Sf�\�ժ�,��h�A���"��l.*G4�j���8N9�q
!L�$ +6�j/��  V`iD�x���EC@�^)rwG.�5f��o�!].U�b��Q���mEh�`��;��_I��"+�..P1ytEpq���x�S��ͫs�l�۳�1�#��"�P+h�4�t#NO�y�pw���;$��I�^�ҏo8)*�����}ΐ
̖��NH5�}K�*W\N�%�HK�"����I���J�N����0A0��C*7���b��n�Öɏ@B����K!��%��Y���;����=xBh��>�^����<�Mzÿ��'��&��[N`D9D��(��Q;wn���r�I��NfA�A�	�ǫķA��V�!��O�O����u�`��j��_W�5�34��*	�C�o}���?�կ6��$��ܭD�^��y44!�����B=����K��}�O��Ev��*��9�L�7���
�9�;/Տy�ݾO��Ǚ ��#%�$8��IO�9&��KS���,\���.X���sȗ�
�в|�l���o%�F���I�/P�۷�����"A��\�ۈ�b�D��	�+��s�!NG~Ԓ�V�wȃ�;i3r�#d�`˪�$�zܯuܣk�
u
u;��A�S�9���׉�[{�NN�J�&�X�e��<�)�����
tKġ�x�3��l
��+#
yc�'F߰f�J��v�	�0�xTn���:D�?N��n70ՠ���吘
�BD��tX�ê�g��N����?e9"����0/��x�	�̀�Z��,�a�!�7�g�ˆM�0-��C�!FI���H\�x���.���V4c���n�Q�1oC!#�4�H(�0��eB��hq��%�
����Dc�8���Y�T�ͱ����X4���L�(��iF5c�>TIc�ϔ���B�;�hQ/���=��i*ÈH�IX5-�y����Z�����#�bT�A�Pة�KX��S����4��騂P����~�ó� 6�y�������"���֞��௷7X��.�"���-\.M������8����
����vS��>M�!���qW�Sх-�<�ˎ_]'`K�U���:����
|y�o��cN�=�$�~����X�:��1��c�&R`��c�M$@�F&�M$&�3�]��r&ǝr;x�!����F�I;-ߐd�0���C�Â���ٻh�n��-30SټՊ��-){1,�,���
��h�9�×&@#|�_WUH~Yb��cB
KLx�qjN�"�c�e#�h��?�24/��+!]��x'�t�*�D%9����SE�ъH3\�*��Sq�l2�a�!�1�{q�E$r�V� @q,˰
����E*�ƓCL���SL�`�42D\
.�Ē��AB��v1*H��F��E�!d#6lG�&BvT����H�l	�H�e\QWR�w�ł�"(6~58UC��
�bI�Գ4	�Ǫ��`p�8�2x�E�!W������i�t�U�$X%���LSx�=���!��jUu�RC��:^�����M��nLn0C��ڪ���b��0mH�$�Ǽ7�h������X�^K}���»�5	���iܿq��K���lc��pɝ-����<��d�u��h�ԅ�����kf{����_�>�����p�Z��.���F�3����5
�=)<gx�w٤I�3��B�$\
�!@e�����u%�\�G��W�L��ZA���L�iåe���$��[ӂ�ş9�&��,�Fqr��>�Z_o�.��Bp��Z�UT��DЖ�D�ƽ��,+��p���03���<�d��TZ�C2��"D�d8�#�j��߿|�t]��S�誼α
��SS�i$�	\�#%�М�Ӽ�IDA����<#xGs�~��%U�R��U�=8V�qa)YV�.�1�4��pnC�Bh�����f@ʥ���W4X���R(�Z��;�w�
���_�ԍk��yPt<^��ہ�vڽ��^vo�ٙ�tn��/�om��!�q���)�4����z����K�4�;@k5�շ���"��>
����ޱ_���;�?2�5~(��Q�L�)�A���!p�o7R@*K�"]ka�n"J���F��W,,�Ë�W;u�����Z����ӿ�e�X���o��\4��K��B���ΩO����Ѻ�i_Qv������p�x`��5v�+��9̘�s��%��l5���W���J��!�� ��|�E:�)a�(��܀���@���0XL�t�P�
�n�O�J��/�ܗ8�f�S
�A$HX���%ѡ>��5o)[{BQE�����-�W�C�r6�l��K6���:W��g�u.²�^����r,#��/��\rM^�̟B��\���D#/��?y��)�
���X|A:
��@�^����ii���t2�裑������1@��wL��&�_9	�lU}|��z;LtR�1V�
� 䡑*�d;|o�1�Yb�b�8�<�
�c� 1�Z�ZG�鷝{ۯ�sVY_l�#���
ν
U�2z�
�[�D�H���0�&ζ84#��=��B�4cp�AV�&�S[b�
c�AGM�Ep��Kt�<|a���Ĺ��w���{��G�O��b��|����^]�{�uk����!���X�56�D���^3M��Q-l0�8����喝�FP)&��_q���Tb��$s�6ƺQ�r~��=���v�*�sװ4�#W�
��ڋT
�.�˧�M@�Y'��5�8�ՌG1�gC�1�ol���p�Y���-:Z-+��9\b�Dp�4��OS���pin�Ks��lȌj�cb$�>���;#x7p���}��L�r~>�����$�(	��\F��j�Ԧ��
FE!�9DŽ��\bU�^�cbL���?������**Z�-��6x���r����~o#V[ʝ(u��uߪbO;;h��٦�՛��#���
hB�;�<Ln�.��;/>�%��Yц��.�K-B�h`��K;����`�Bs<�}C�F���a5�OӠ	Vw��MU�f�eE�Z��7:^j�S-�,#�q;�1�\ɝ�i<��f->��H,�6U{=
M����y�{gY��+Y��C�ͣ�l	�Bt���c��N��JR�����:�u�_��˩�ˠ:X���>W#��q��"� ��C��GC�����D�o�v����v��t[O�~ܹ�ݾ�Ww�C$T�!b���cT�s|��/�r��B���u�ԁ�
$��,�{�'�����z\���6,��k>Q�"�k����f���)��!B��7�;��{
l��ȂA�Z$�A'��i,�7��Woܺ�Q����S{���^q�ﭹ�l���+{6�.�Ҳ������}��{����2�-~�m�WA����4�Ç[��s++7������..�㕹����}���q�ͦ�n��D��?���h��?��PO~�[�@�1�:�5�B��}�MB��j��P{�E
]\���ohK�Atq�Z�ל�]��hw|�������t`�Լ����{h׭�j޹�[C��^Kڿ_Z8t�����bm=�N�����Y�m����e��q
�SM�k�W`�i�1�du�F�1��V����){Yvj!�G�d„;����!k[���s�7��)a	O��a��7�Qܪ��F��v��l&K���XgB�Xx��[�I�2��*���d6�q1��G8��&��
�{�0���3������������N�����D��f����O�jDJ�Fí�5K�c��$u>�Op�P��D<�Cg�{n����x�u��N��-y�c��H=�X�:��Ƈ�'���%2���A�Z�V��~ֻ�}���X�biw���߷B��K�FD�h~xS*�@׼0��<�u�M\){m��%�]�ƅ9Ö��ڂ�H��󍼘8��#�y/�lg��!����<�����z,S5>�T�b���*�*r\�_��hqg��>|��d!6�t��4�)�&�٪c9!�
9V���v�3���\\XI�|L��|�
1�0���p*����F�2�
>���s�p����YZM�a����b�\v,�#x�;��3k�EC�t����&���~pX��z�&�qLn~�NzB�#'�#��>���ŭ�b�����ʍ7>~�‰N��^����o\�}S���[�
A4���3
�7�
G}���3�gގ�^o��8�n��S���{�;�P�gS�%0�ʁE�U�ba�zL,����u�����7���o`�����+���bn,���sm�`�)^�c�����'e�<q�z3��LS5<Dz�
�=ӿ�z��!������������m�kP��>�����opkd�2�ap�`��4�f��N�u�:��:<ˡ!�?�m��ŷH4��F���8K�m�S }f�5��c:XH�d�:��E?0/���ej%3��/*�2Ӆf�d�s;K���;�fo��w����|&�,Lg�9A��Dg�,Y���p�5b�ӹb36?zml�]���ܖ�6��Պ�a�Vl��c,�9\��O�1��j-�~�A/�[�CGj �P�ep�PQM����|�$�*�b��u��(����LuY>���ė���)n;���i�E��J����i��VD/�q���`[�����zA�X?w�Au�6����ͭ�����&��,�^��������|��y���w
6��u���S���������yxj��B�D!�����y�"�4�#�Q��\\<���Y�?�����S��Զ��y�'G��4xL�����-����x���*�?�,3�������m{�[AC"�FHt�ɢ�]p .$h-4�hOd��?�9Yy$	#������i��Qhʩ�.��ʇ�{@SbKZdX!-��"�={��H�wHHO<�p{�!^
���.~^���i�T�ݐ���'Q`#���D[+^�)P�L�D1G˜�)�E=*�۪a��E��ӊ�� ��� db�	~p��21��>����8A�9q���j��܏�g�r	���4H����E�%I�<�ϩ�Y��� A~k8m��(N=0�
$�'~�EZ�e�)�����*�E<��]���d��P2��M�^��gɤ������{��R
��+*�k�)ߤ��ĭG��H�t*���>���[-W�+�L�d��r����e2�����:������TE��xph�ʍxT��RǨ5�5a�	&�e����X�u��n�+��ǒ��@����3p�I�1�v�R�x��E�
�iܥa��M:��K��d�!:��HӬ���f��k����1%n�5�yXZ��i�6�;�N��N�c-���ݟ޽� #	�^y0����J8�M:;w:�l^ϻ���G����!\���n^��+�1e�
-���ݮ��v9��{���#;d�g2�=z����n�ia����������槞�T������x�;�y�w���w<{��_y���D���$����'��r�oCNm���������N~�ç����y�sr&�=5as^�;F���R|n�v�azE>�:��̎���5�Ս�?�p�3�H������IΔ-�<}�]/�o�b�K:��\q�C]}��D����r��ᢒ]q���x׉�\~�s��`�4�O�P
�^�`�BW�}o�ai4_��_���71��ɢ���C�ͭ>y�~ݏx:F������.~{(�/�q��`c���j�y5�ٜ��B^�����مZ�P+��'�wCb��}'r��YHysR~���)T]=��X,��l\�n��h��y+~�>�I��?a*on����|P���瑏d`�ML}U\�2�	k^{�0�Ϩ��-�'�RXWCL;mJHb�� M:D�J5̲i=��1���kHV�0�srҝ�ε����)j]��w/�R
��dm]`�(	�H���0����j�6Ba
_d�(*��;�*!Y��w͹nY�wt̓�͑�[�K%}��)�`D(���c�N!����B���Uƃ�6�q��y��]�AZ$>#4>״n)W@�7�aQ�{0�{o�	���
ן��7�n��T;����RW�`��Z�`7�~_�u/w�x�^�$5�za|�PӰv�r���1)u�(��:&��n�y@:By�
�|�-//|q�Nټ����W��P��N^�>}�ؐ���o��S�t�{��T�'��Cu�'9N����:Z�4���C���)t��0�]s����a|�`���nH/��`{,�`M̓-��LY+
1JvS���j�vg��Eҕ�K��m�#C��Bb��j�S�5�]HH$��i�n{���\�ndrQB?�r��T��θ��=�V���D���5m�ԇG:0a�y�_W��rwu�zI�;ĀZt�F�����{#س�W��C:,����2��Xf��貦��2��Ƈ7�`�?8��;�)�Z��
����<ǕX�)Kh�d3����!�G'��3�>>���ȩ�wο��a�(��EqE�XU�Fn�JSE§��;�R7b���D�0|c!��<���ow�aY'gxÍ��٪�����h9~�(m!my��Ϥ��q��"K\���x"��I�����(��&rR_bK���S(XZǩ�a~�'
.�6f�Ϻ�1#�t��y�J䯁�6���? ��.���Vl�W��u���{���Y�Nu��Em��yǫ2mE�f���:�|_`?����x���2i<��c�JF�%u��:�����B���-��@�I����#���~��mm��	�Ö��X�%�K��
\��f��="^7�pe��hƶ���a�9���������w7��`��D��x�6E�kGzk�W'�|�+^�T׃5T_��|\�}Uo���D���&��5A��>v�8Y��'|ͤRj���|Q���a�^�`�̉4����)�s����Oh���d^'h'�g.z'����`-�D�j�J�N֊�tÑ�~E�<�2PY�IO��:JnΒ�L��ҧf�P���_Ƙv�~>�{�U'�DV�	�Q�q��E^ගD�(�l�DG(t
N�Ãi,��S�Ĭ^D=�F�C;�=�|�	�3|��C��;MAGƒ祝��
a�&��
~��?O���|pH[�r+� ��5�W��Wߧf� ��]�VS�˵�&D|)(}��/	2G�HC��!�*U\�ര�ӗ͢7U�ظy��#�x��{�{�=7�ˈ"P������-��=��:�m9o�nk&[p�>��vo��@ M`����9������ �P�xAna��gG�F��+�ud���P)�������ݵ-%�F��]⣽-&�<
ⷎc�1}&bM��>?��D>�DL�f�GpH'!������kHT �N�EC]�]�ύ�U��Xƶ7���M��在�=Ͷ�(�o��;�Eݨ�Ͳ�&��/�$|AP�w�6Z���͍b���F�/��X�D�(u��Y^�3���?8�#z$�t����+��==�y^EK�5�ظ��<p`'��|j��%{�=y�>E����:x���bo��\xC����N���w�vzDO�'h�Ʒ�
�.���db���Mv	h�{�z+��p�]7!��%��g�8���`��BȖ~�AǕ��,�E;��Mʒ�O{��=I+�,:%�-9�l(��ݐ�K��b4�D�����wV!�\)\��S��,�K�WS�S7S�SwS�ZD�}�a�+zD+X5�`���O���
ۖ��$�S.����#m�,l��6c;ɁdrL-�'Fr�\r�\D/�bE/!�+o��t���|3S��%
��<��#9�)����B���(E��t�ԇ[e��Wi���g��Xj|v�WV˼F�N���u�/W[1Rۣ�B�U-4Γ�B�f�<Ab�Z��	������G�Hjm𝊚��]��`�0�qϱ
T��k��K�7P�ai�~���V.G��P�0���Zm_���Xe��E���XD��¿�œQ<2D߈���#���y�WE�T��A�=�vd�H�O$r��^n���;�]�B["Ub��b�����B��e붖2�o��#�i�>ʔRw����Q��q�t�i���7���L5��ۏn��p��U���!a�V�W͋ṝ�$O���x{e���^U�}�='*EtЪJr��՝sa��Ȉ�-��{�yA���,U���o���aD
�I�~ab
�3Dj7|�c������p�mS �)<(ʶo�pԄ�����j�zƒ��ĩnwm}
�`6�'�Xʼ��?q��ѓGL�8�E�U�x��C�saM7�g�PX�$��!���cclL$V‰�!1��)q$���X���o|�w�aY�؎z���V����ǁ�?9
�j(B("��.�����h�l�q!�ьJ��l��9Q2DU�MA1pzC8��W�Vz��&����>��?D���N�T	l�d;܍qKA�Fu��6���
j;�S;%���Uj����`�8-��������O�톸�*z��R�?�I;���|U�|}�6��Y_������Eѝ��?� :�Tl2a�w���o<�̃�{s�B!�G&lf
�|��#+�[���m��.���2*�f��P'��C��|t�e��A�!N��f��K<#�c���d˒�1���Ԑ�9{m
w��_�B+rњ��yNd��D��w·?f�*��fCR�`�>�x�Q���
��?�g�Y����]+��Iæ�j��຃]��E+�s�c8� ��kz�_�~��/lV�׫h1y*Y���Ө��z{Wopnu��Ql�w�7��z o����)ȶ��f��[���A�8�J��ƍ7ns�|'�E ؏��ǟk�̆���
=F`Gy�AB�<���ނ�6oh����A�:�[��oܰ�m(��ձ�8to�7��I�W�5;5U����K���{��7�*e��5�3�r�b�b 7���y�E�&���(K��ܱ�V�NLn�o1�x}�P���W�2~��W��1��-|�ru�!�w'��r�V�T5�t��n����^�<r*‚s�g�X9-��$�<�d���Z�v~}��2B�i#�0l{*�A=�dN�쐮�n���q������g�-�j���đm��XaD��v���$��?}۰V�	A4��Dɺ�E�K��N�bV����,g�\��;s#dE����t<X�L�c�[�+dD����_���Ǭx�ȅ���5N�I�ֆ�l�k#��9�N,OY68�Z��*�=-��c�z�a�)��$�U�	�&�=��&/���'�&K���T��	|�;
����G��2w<�0~�yD�x�8H���O�Ly�,Z�
���,g=���D�2�����Bc���a����ü:�����~��8;��x�eʷ2bf)�9֔͠�@��v�4k/7��I�W�E���
O��	�z���0����Y��C��0	?d���ţ���!<z}<<����J�\�A�;�jl�ͭ��c�c0�
�>�a���ϼ�������]����3����;��ޙ����5EZ�DC��ef!�6�����)	"�`	�0����
6��x�� �"�L9�,�^u��R}��3=5�o��u�{U�}��|~�q�|�Ń�om��僿<��ch��,�I��	��	���lDrB�K���t�i���y�#���Χ�Y}��\_C]�H�BЃ�%>\�AJ �2�z�d�AJ�]�A��Z�zCI"<+t4~��`��+n���2xa;�g�N������W�(�[��m�Vd[�����P��2�
-/�9���LkS�s�	�鴖�����z8���>s͏i��8�L�^��
��q�s����c
��λ�ÓzU�o�~r��{W}���*� �?0n�ᑾB��:bn.���z�3�S�x���]v�~�5e"�g
�}�~}���l^̀7*?��~XQ'EE��d�YIؓ~i��2���W�;RI�8ӯdϧ���ޢ�}s@�zF�,b������f�t�	�{��;�T~4j�ۈ��H�����Z�_nO<�c�R���z�ƜZ�v�w�Q�ڷ�0hu2��v��zAV�%���4�no{t�I�1��ݏg��So��d�G�qH�R=}�'?y��Uڣ�F<j&�c�^԰m�k���&�n4�ض���/��������Fnh�v7�\��mc����P����9��c�{����/�xW�)5���ʃY_��3�,�gW�r�]�~zr}�$�zn��:��&x(��ݽ�?���q�x�|���	B�����!��[x�!D> i�#��0'|�L�,���#���I�"��<��if<n?b����fL�
J3"�oP
�?��<�H�x��|u�2)�i�y"�Y�YI"�,o����+we*��&��B�$r��+D��Hj�0?���Q����o��‹+Ы˒g��>��9��$�@;	�i�Q{$����5���?:D1P*d�y�r_�g��p	/�#���`�Y'b������EZ�k���e�����������G=E3��^Cnr���sLM遪am�ƫkQ�״,K|z�a�����-�5�h���K�Si90�Z
?4-�4,ۃ�/��\OZ�拌Jh�d��V�~jh׳�tBQ<d�vv��� 1E*rwf-�
���Tn9�� 3�
�
�����P�G�iQ�4��,����8�����������<?3���=۹5�������}��zQ��0�*���$�do���6&�7D+�|�y� u�
1k[6Y-�V!�C�������طV���X��X��t5��z���>�=���Q�|Ax_�+��o	��5��6�wj�QU!B�NE�O�`��*����g���B�p��e�<O�b�x2%�L�d
���
����5a��J�cy��(e�T���:�1�A��T��.�pd(ao�jN
�M�*r�TJ̐��)�����V�P�ܖ���huݵO�;m�;ݽte4T�Ļ�6����J��5ո��)�N1��(�DJ5E����$�[-�:(����O�x��p��Q�}R���_T�O�2�1��d��j��ɒ4�ڠ�X�D,JN$�MEw���*DI�N�hy*S�8�r'�V�C����k�-�ِ`lђ͚��66�fW&�.׉.�*SsƦ�6c"�TL�k
�O�N5�-�V��
���}2���F#&���!�>���F��p_���0�l�p�
��&\�vHXb%��4��S#Nϖ���8��̊���Y�8[*'�����cRFέT��2O�a�C����a��R��a��z˨f=��z��zK<�3��CG��R&�qC�)�����97�dRF���&um�0�(DP��Жjf��dGj
��@��lȶK��_s�T��L]��z�w�!�%&��!թ��;r#et"�=`�ؚc�pw��l݆$Q�G���P��H���x&��P6|��D1�`��W��.���}Y%��b����'��_��˜�SM$PC�rCu�'<B���uKCp �H}}�	wk��X�s�PÂ��{6��}�MK�$�*��)a��b��R�&�����|�xlIh�ky�6>��r�AX��� �}A���ZC�,0��ܚ�=n�0]{#��ݖ=�7���4[�;���iV���Z{�q��/vh��b�Ɍ?�g_z��9���WA�C�`4��q��w�o��'��]Z�w'�' �?��X�ɝ{�K��8�CJ�V��QQ廾p.��;N�vE�h}+�c���{n��r�$Y�-p�\	�8WW!p�$9T*�k�EUFq�0�08Tfb���F�#It���He���O)��3��1�x�(��֭�E��j���ЅIzJx�$S��D�J�90�80���)K�V=R_(��v6-��@�I��s��o~��4�1;}�8�),�U�e��y����xt�lSBA+�����'G���`~�]��P[���k� =acH��pf�E�����6��a��>T�5��ģ0�yA���Pk↲�F�VK�M4�I$�pL_��Jh�����lY�C�[�	̑,�A�"6�\p��.��ٟ�\�t��)뵍7��x�:���M���� ��M:�d�u&�~�����<x𝚻9p�����R_���%���Q�UL���@���pW���+|����x���*�y�Q�����<SԾM�Wu�EU��3F"���^�\��E�p�.�6F�ηB~�څ�.��W{���a��[T�w�2�J��p6�v�x��Esa��g}�>c��^t{靗Ȥ�gQ��ώ+�t8L�������m��� ��(���݉��a�꠳�
�8^��(4�Bx�՝nH��a�hV�ų(̦���(�6�`�|�P�G�{>�U�,���e�;Զ�u����+�ȭ�Xlv���b'�ʘ��~u}ͫ�w��?�7A�A�1M�W</���A�I�&�G��8q�`�>Cl�װr&X�Zs���}x����.	�܇�8�p0t�
����*�fQ���r����X�7ϟ��?�uʊ+���{�6����]E��?�I��{�N�y��3^,�;��&��z��u�?Hd���!�����K�@��)�r1��%���EF�@�d���F6��Om:ʌ��Jz�ow�]to���Z�+ɣ��Ñ,u;s��;�7��&���G����xA�'�}��>��W�)g��x�}�=N�@��� !�#lA
o֖+wIPD����N,%vdo�����	8������ A�v�7�7�.�����t�n��>-7q�L-��u�,��s�,w����i�1�����Ao�8LJ�&n�e�E��r�y�ܡ��1
hD0<c,p�9$GؐF�G�֬W�=R��H���U,�d]���b��pmb�����W�d&�j�W��БѱX�0�6bTD�Z�>5+1�33ɋ��T��2f	դRe��L�L�A)n�XRȳ�6�H���)v|f:Nw��r��;�\x�s�)�џ��g.1p=����ޜ�Ji]�e��`��2�3��'�R��7�p�x�m�c���F��j��J���~׳Uoֶ�)S�HR۶�Զm�ƽ�3�n~���o��>cα�����{�A���?��nnac��6�
�qm<�&�	m"��&�Im2�ܦ�)m*�ڦ�im�Mg��6��d3�,6�
��lv��洹ln���l~[���l�U�X��j5�[Ú��-b��b��-aKZ��ֱ���oK�Ҷ�-k��򶂭h+�ʶ��j��궆�ik�ڶ��k����mh�ƶ�mj��涅mi[��6Զ�mm;�ކ����d;�.��
��lw����lo����l;����`;����p;Ž���ha#m�c��qv��`'�Iv��b��iv��ag�Yv��c��yv�]`�Ev�]b��ev�]aW�Uv�]c��uv��`7�Mv��b��mv��aw�]v��c��^����A{��G�Q{��'�I{ʞ�g�Y{Ξ��E{�^�W�U{�^�7�M{�޶w�]{�޷�C��>�O�S��>�/�K�ʾ�o�[�ξ��G��~�_�W��~�?�O������w��q|����>�O���>�O��>�O�S��>�O�|:��g�}&��g�Y}���>���s�<>������/�C�����U�y���}_���}	_�[��w��}_ʗ�e|Y_Η�|E_�W�U|U_�W�5|M_��u|]_��
|C��7�M|S��7�-|K�ʷ����o���>�w�}'��w�]}�������{�>����~���!~��~��G��?֏��?�O�?�O��?���?������/���/��
�ү��֯����o���o�������}~�?��C��?�c��?�O�S��?��s����/�K����k����o�[�����{����G���g���_�W����w����?�O����o�����_�w���b�'Ƹ1^�Ą1QL�Ĥ1YLSĔ1UL�Ĵ1(���c��1f��c��5�l1{�s�\1w���|1,�B1$*Q"CQ�Zԣ�X8�Ec�X<��%���D7zя�b�X&���b�X!V��b�X%V��b�X#֌�b�X'֍�b�� 6��b��$6��b��"���b��Ķ�]l�b��1v��c��5��n�{�{�^�w���~��Aqp��aqxG�Qqt���1*��c�8>N��89N�S�8=Έ3�8;Ήs�8?.�㢸8.�K㲸<��+㪸:��k㺸>n�㦸9n�[㶸=�;㮸;��qo����`<�#�h<���d<O�3�l<���b�/�+�j����f�5p����ʐ!<+<��)�U�5�u�
�M�-�m��]�=�������������������~�_��~�_��~�_��~�_��	?�'����~�O�	7�&���pGpGpG�W|/�~�~����c~���{�=������V�[ao���V�[ao���V�[ao���V�[ao���V�[ao���V�[ao���V�[ao���V�[ao���V�[ao���V�[ao���V�[ao���V�[ao���V�[ao���V�[ao%᳻��J�O�찰��;,찰��;,�/�첰��.�,�����W�W�W�W�W�W�W�W�W�W�W�W�W�W�W�W�������������������������������������������������������������7yO��4yO��4yO��4yO��4Ǽ����{��-�G����{��-�-�-�-�-�-�-�-�-�-�-�m�m�m�m�m�m�m�m�m�m�m�m8m8888888�������]>���]>��s]~�.���{�=>��s=�^���n}�~�������Їׇ��y���'�O<�x>�z���߉�'�N���;�w���߉�o%�J��x+�V��[��o%�J��x+�V��[��o%�J��x+�V��[��o%�J��x+�V��[��o%�J��x+�V��[��o%�J��x+�V��[��o%�J��x+�V��[��o%�J��x+�V��[Y�_�߀߀߀߀߀߀߀߀߀߀߀߀߀߀߀߀߄߄߄߄߄�o�&�M|��6�m��ķ�o�&�M|��6�m��ķ�o�&�M|��6�m��ķ�o�&�M|��6�m��ķ�o�&�M|��6�m�������É�'N<�x8�pv�����ˉ��������'O<�x<����z���م߅߅����g~>=Hz�=�=�=�=��"{��Fҍ���'ه߇߇Og��$�I:�t&�[��%�[���p�$w��[��"�q���EtKtK�-�nw���虸[��"�&�q���EtOtOtOtOtOtOtOtOtOtOtO�-�nw��[��"�q���E�-�nw��[��"�q���E�-�nw��[��"�q���E�-�nw��[��"�q���E�-��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������x�c```d�3��΃�ˌ'A�)K��fonts/roboto-KFOkCnqEu92Fr1Mu51xIIzQXKMny.woff000064400000036614150755146450014706 0ustar00wOFF=�X`GDEFDGd��GPOS������hGSUBP�7b�OS/2`R`tq#gcmap��L���gasp
dglyf
p-x=���head7�66���ehhea8 "$�{hmtx8Dk��1<�loca:���E>4�maxp<|  name<���:�post=t �adx�
�1P���PB
�U=l@B)�w�暮���Y�e�u�m�C�s���x�h�~R�R��2xڌ��[��#N�϶m۶m۶m۶mfm���SP��NuM��9]��=�U��!Ʋ[�����w��|މ����^p��H�����;��)�������;�EoDo��E�E�D���`�0GG�aA�H�V�Mx\xA���/�d3�Eb_�J��R�^v�׸����\^ob}�z�k�x)v$f$�O)+�2��*����y}6`C6b6cs��lͮ���;���!������<��|§|��|��|��|÷|���o���I%�4�LSI�&C�6��!`�{��c��\�J(�2�C���V�A��?�M<nG������v��m;�R�C��aj�H�ӵ=�{�>�:���}i_Y�׬���:���o�&k�KY�2��6k���i]��{,�p}��/��
�VO3�o]�fJ����R-TZ��;���RN��&V���C��3�?�
����&�ŭz�s&�D��أ�r,�I�Е�t�R��a$k��Mm��Y�U��+b�%kQ��mg��v��ks��{���=l
�5Z�5[���
��b���v��i
�hM�l-��>��8�bF��k)K[Ʋ�f#(�
�؃��=f~/�mj��ʭ�Ʊ˰��c���=�z��i�X��,Hz"���>��$���,��?�u%d7����׺������Y�ʒs��}���;��:So�������}�/�
�����;nw��p�>�0�Q,�"̝s�R:W)f��+wϨ&�ԩ���c�$M���:��>]�������^e����O��x����wI�v��h���*_;~�3��Ӑѿ*�1{5�Sh�AD��e5EʨG�Ì�&i��ջm�s�X�z�bJ��M��J�Zӵ?܇�TZ��}V��n}Q�;���/�>�ZɵET�:n󌺔M��2y�o[2�GS*�d�(�0Qw��3�kV=%̟"C7�p��4�B抿d�$�_�h�<��6��u�VS�r��ߣbf��й�/I�u�{��h"�ȣ`�?3w�nգM¡�э��F�:H�=w�NΦRi}�v�FK[yD�WY8wP��ų]۶ۨ��N�Qm�v�ڶ9���W��볢���ߐ:I���%�*�N�(&�as�2�tg��b��fk��z�f�V�3�]2�Ü`�dgy�X>�u�e�2����I���*=,!C�;C��0	.	�H���c�4�(���4)0]�̐̔n̒2�%�)1O�̗���Ҟ-��F"�J��R��J�m�a�=s�{^����^���zrV�q��+R�*7Hp�{��YK�'�$�+i�Z��|��/*�`��`�+.X�"Mw��c�CFJ�v-���2U���u���5\��j%W˹Z���K��H�R�K�.�N6H�M�p�t�jiW+�CB�H�^	8�!��XqǺ;Vܱ�u�H����`�̹`J���]�v1?�C�����x�M�R�a��_�5�
�9ȶm��
��m
;M��/�����yeu��.ό�38�?��X�����E��-�A�����,��"���LfEv�̚�r�u5��*�	h2����O�¦obr�����^�Ɔ�IQ3M͢����@%����@�����[Rq!�6���
��N:Km]���P�!��?��?͉�Tq�.S�*A�Uڰ�0O��!�Czd��.�+��)5�|�p�3N��+��ᖻ
�g�Y�x�'�y�U
/����>*x�5š�0�OBZ���0�@���aVa!���j�L�rK�?�����q�����ݢ"�Pu�P���
gxڅ�Ȟm���E�mN��4+���f+Ͷm{�r
a�m۶�go������t"�/#���Ȧj�� �_���<-��v\�@�*���ޞ>�>�����H(���sXX�$?	�̷�b�p�
se�X�?¿!�Dz��R*y�\�w���&��9�s�%���|���ҋ}/����b���/6�X�b�OΏ��AE4򭭲�k���+��n{��@��w�A�6�Gu�q'�4�0�]q�5��0�7�r�w�tϏ��
(	�~�d�Y�E�c>�9EV`16�6bVa{dv�6�`d%�8v�Nb N���<.`0.���zd(n�A�<��#<�e��K�+��M���D�G�\d�Z9�1���Xҧ#�H���'���'&����s
b*�Hd�Dd&�ZNu�"Ԉ�!t��%,�̣�Z7����xڌz\�I����t��.
���((ȮR��y�)g��t� �I(�������uv_�g�q}����~3���3�<�0
�^���X[���ݰ=���A����i-���VO�"�^�y�Y��i(��%�'�IK�$�c���!�5J?���*GQ�]6W��a@gI���8����P��O 	`��{�U4�a ��j5�(�p�gF,��?	�f�1_�^^��G@�؉�����kt~����~�!i�{VjЩ�%�O��:AE٪5Me�לv���ӟū���|��p�2�n�S�c]���@ d�L��
����zxxz�}:?I��4Z�Q�DaDQ�4:���R����b�~p���<W�/Ze{�l洨B+�P��K�����*��햵�q�w��a�I�7���~�?OVb�16u~�ک;o8��駣Ye&�z�S��pX3|t �a�`x��zXƀ����~<�Y'囉��iI��D�C}�~=�N�4�z��7�}��Ǿ��H,d/�C�>�?�*������T5U8K�3��� hWzς�4s�d���6dB3F�ߒ��}r��#��=4sD�z�`�눿�Y�� ��,a4�w�%�P洚sV��g?QRk<9�J%�v��V봌M[����h�fV�m^Rcf~��M�z�����\o|
�sJ�^���fݝ�̵G��,f]=d��-�	ڹpW~8�ZRn�w�R�űp{�Ԭyy����>3G��9:	@����e"��+W��!CW�i)������I��
ЩE��
���n ��\�0͝�i�>3d�?�u�xj]��|��	���g���q�!�~���s9<(" y2���S�R(�Fs�*\�o$\�,H����_��>��>9��i�ᰱùh2^.����Ÿ����'̠?��*��O����)�Ⱥ���P������~�����!`5�J�%��&�1V�qD;�rW�0�n�w���a뽴+��V��~��	�S�#�|V�K�}������K�0�-�+�Eu�-*|Eݝ�ȵ�����#�	�`n�yt�n����r�����^�I�,�Z�K@��~~��4�@`����{��̉��CL��8{e��Z�M~w��2o���;zH�����
'V�n��^�g�vw ��
x	u�W ��<x��������PI���ޏH���k�o�C@d�W�t�~苺oh�+riC.-�9�֨`8~Zp���E��J!Ȅ(s�u�a*�"�Za9#�Fy�z���گm�/}A;���"�:�
B6��9W#0���ĭ���^W�s���gԾ�k۩���?�2��_ȿ{�
��k��#�F�W������ۘ�L�nfG����oV+&Fg찲\����	��-��"r�v�n�wǞ����`�2B�f&d����,d�䞛��nL)ǟv>X�Ou�m�6��5�Z��t���5wG�:0j��D�0���)�22���0<�T���A�8��F.Ȩ=�P���|#VKɳ2���$���;it/���k��=���ck�0ֹ�?����_a?P�����U�F��<�.�A�9�;���i��'Ö��lj�@��隭�[?X
�ٰ��
�ޢC�������@)���ч"y���0.�G��	}F�Z;
��'�p�*�V2�E�j�����g�Ro����'�2�A/&o-�j�>l��"f�?s�C#�d�+?zOڛ/��jfK]h�kk�6{�`3(�s�>�J�N���J�H�	�����rn�r<owm��/_�hoZ}�v�#O��\UJ�ƅ�+)�nӗT;+�U��EJ�S'Y7Y��F:��
	��zm;O���x��
�:*�j������9k�]z�z�����P�M�v�&s���Z�1l(B�w��Eȫ�s���4[� /ސ�IG�o'�����a�`^��l&�2I+^ 1/��cC9�s���D�og����Ç�pY�uP��w�{��ۡ}=LY
�/s-��؀�2�HF/���Q�7.�k����7�Ol�P�q|���0u�Z��
5�l�h�� ��٫���[��̲�@;�����xN�s��4Ɂ1����2od�����Y����~�ƾ>9\�/�܂a��O \S3�D�x����-_!riK�Y�K�	��@� �8}i�X.�:�W�����e
v���"�M�1�¢�ɏ9�G;��L	�����-끔l�������FZY��]�";�B+����<��Gs��2[�`S��?�Oע���>w����	qs'���]u+�l��݅Q]�F8|�3�7z;/�"mB�JL(mI_��'� 7n��n܆��}o��.=�ja�N,�[·.P��Ȱ��٠,�$1�6�1����<Vo�m��O��`*]����%�0������x&�|U��.5F���5Pw�p�F�wx�9����B�'K��,�����½�����#��;p}���3�P��\�����E�s�	@kxJ��P̺��b.KP)����m��.���@�/�)K{��H�֏���*Q��-��+����+ⅿ�5,�)��'��		�^s��o�b7@2�_�>��H)Q�X��j_ǹ�d�%�0RmёΡ�[�=rzv�X��1��ӯN�'i��hZ���Ù�{	�2�}���`����+&�s.�iz���3MC�͕B�:���mf�̍23�:���l��y.�c�H��O�l�$�O�����"���Pp���pO��$9p]�iIH_�&�\X�k.�iԲ`a���oZ}35�vA����3~/K�%�}&/n./"}B_9�̷H��W�0d
y��q��,�"�
q��q
�����FF�d�F������ �`y�$��z���b��?����3Jޗ,:�װ���ʉV����);�BMӛ+��}:1�M�&lF��-ɸ@?5��ף*���_�Px�:�:N]>��>�����%%0r9�A%Z�ҼU�X��bZ!2e�J�Ǡ+�%a���
��}�����<!�A�p�D61k�5œ�����l�~�sڍ9:�V���Ӎ�:d~���i*a�W���kq�-�i��gjB�h��H�F�\#W\��ޛb+��ڜ�eM��6bIQ��%
,��j|��xS����cc	���M�O�6��3�	)�ן�:}���t`����}(�u�����	S����W�
��K�%�洽]N݆�g���~���X���@1�`!9�g�VK���=i���(c����+�Aˮňb�u���^���U�l�l�L	Y~�����Q/�`�?�p"l16��E�T��l���}c�0��,,A'�B�O��,[���c���4��h7��Ѩ�u?����W����C�Y{�E���?�(�O�.��_c�~�k2��8�x�
�ʔ�j}P;�4���ӔŸ"�m3[��-��j�@�*-V��t��yb���E��8\,[:Z����q��`��m�	�h��g���G�O�9�-�.��f���0��B�h
Y�1�δȜ���!�J�?��.���x���X�W�d�׆�Tp���X���h�J����������f�|e�u��BM��c�����f�5{��o��k3;7̔�!�����v[��3��oG�q
���T���J��/Ǟ{��H_x`}�E�����tҁv�}~Y��l[��{oG�N�b��Vk���2y��~h-�~�??�I)���u�p�w�{!��<z�Λ���v�w3~��S���1��K�t�y��g���~�\1Z��ytc/?�.MM�����iYY��$�+e�
��3�,8C$7膖�MG��*�F
��$�I��
Yh��c*7�o��UB͛���d��E� ���{a$�H��� f�;�L\�e0�ƶ�qހ�������U���}���C�4��*�i#55�8���R����D�7.�w�2�=����d$h�Qn�:cn��O���XՒ���Q��$�J�x[�3���F+�ɓ'��ՙ/�4����s� �q\y7�e;��Ƿr龜�}ٻ��câ�<N.�ș*��:��J4n�p��!�9N�'��U��r����)1ڱ֘��&(a��Z��Cޅ�ӓݷA����V���Ϛ[72h˜����V�:��t�Or�TϠѫ�	�C?�BHΟ�O
/�S2�q�4
�X&82�Ȍ��<��i�m��9K�?���W�T���r�Y*J��E(n2��}F�^�[�z!w��,��;ٲg߸�����v�c����1��*��Ԣ����gy��j�f���[�
%�%\��ͪL�nn��Z,�$���+	y|<P��I[�"���d��3��0	��+ϞY򉜑��h̖E�{wL���'
���Qֶc�X��+�oX:���ۺ b�@`�G^��L�9ԫ�g�W)�<<_��*�]�6��B��`:��۩�hP���W���	���تh9mv��0U�.��l��xP�w�gT}1ٗZ������c
�'��(ƯO�sLgJ6<u�$/�?�I���/'7Li��`+�ӥ�f�o�<��a��ţ:�g��7&������B&˓��]}#�i�"V���r�b�g�Jtȯ$�
�Y$��s^�Dz���
Dc��Hr��w��P_� 
�E[sj�v�r�.a̹.Vb����H���H��5�πX��5����z��)pR
 p
��D&��}�)���N��=ef��Jc�\�����[��{۹{g���
�+�NLS�5R������� ���P��HK� /Ce���茫�zrr6D����-{�\HW��yN$�B��l�L�oF���>>-j9��۴8�hkP���(�32R	��~93߹�ꦵ	Y��\?u�:�.�zbx��e�
$0���	��rc��;:��k)Fg껠s���k~A�ɋ�*Ǩ�(0%�i�����V���!/�@ȥ�����(٢�Wˎ�w����/�]aQ�,�~��@�KON�Eʒ�򖜚`m[��I�H�>�l���`�<}�i5�
�%�u�<�
�-��
��{�g�N>�E���?:�$�-�����{F&�d2h���{׈_:,���0-���9��3��B������uK���o&)�����g\�S@�mN�@:���iua'r����O)���>�xh��6�|0|Ѯ�:I�tű����&~R�e
d8Y��"�=:�
��g��^��䰂�G�U�[d��s�m�d8i�jtb̞iٵ
{�c*�q�ye���Cz)�e�����##����}��&D�'$wT~*-j�]���϶͗�A4��I}{XXg����sQ�����S�{��nԱ�C՗��3��
��բ����%�1:SC�q��կ�H�ɽ�"�~�:I԰3�i�{�iq:
#i��ΦW�y�oq�[�I���'�T
�(U�r�2�C�Ae:֚���W�s��I��;
���ty�2�6N��'�,�m�97��o��z}���bvh:�`-��`��s��0����qp�Y�B2({�y/��y��_O���4�0nwo���t�6_!�w0g��4;�	��������>���W��pհ���SXD硎Ȇ��B��_�n[�n�����U0�>=�;��i�{�7B{�I����оD c&�
��+À!��84Ź�XV3^t�.N����ݚ���n�;�=x�� ����j3�a��E,��는.�)��n�';����m�LL\�ϡ����ڥ�R�U??��M�����ǹIC�:z���ޟ��F��_�2A���6��_�1N�JZ�戁ܺ$��a�t�b��C6��<Cbo{�����&�+�ŝ*
�΢`Wh{���-i��]�د�C��D�����'KJ�]��fq˚
��=�)�J<P03�x�"n)j��Z�gsjezJЀ�K;�U؝�M�7�o���آ�6‘}�6w��:�?^0 ß�n$Í�Z����h���s`K�1�7`J o��]M��}BHH�΁p�F,�K��5�\�y��XLQG
wgr=	_�U:�r�����'a��UǤ�	�j;e�+;kq�"s[���uCn�����a���s��tȫ�~	Y&\��U���LQ��49Ci��k0T�$x���st�U�c�>Q��78W�����O��K����k��h��53qe��ޕJ���"���I&dsfS%@@a�Q�%2=�d�dO�S�i�1
��5�5$�%(�r��c_-������r�����u
�F�nc�95&������]eg3pݼ��
���� g̸�W��(����Յ��Ч�%Qt���~J̕$�*�xlxC�3�T-Ϗ�~���j+�P�U�l+Ȟ�5v�U�k+�L���-Q��sږTz�Nݒ��1���mY�d�)���5���o�[\G�����z�Vޣ6d�pt=�nJ���h�}��=x������ݓ{x�N.�I�͙�6��Y֊=}�Y��Vs��#�r��1��,'!%��C��f�S����m�Ck�v��f�/D���,''�Cǧ̬�s	��_�1� �N�74b�G�/�g��:o�OgD~<�^BP���G��J]}J�2�E��x�C~�#Yvf�mN�Q{���w>j�o�>��`�a���Ό��w�,�
�p�7�U8'��!����^Qm���M!�)<=�KZ��
�DD<y��9Z�j�����ʼr1_�7a��VI����;1���C9���Fz�.T�N:���9����
���<4�t!�mo���"8&�U�֚��t��U��`ڱ�	�]���v���t��t�9HN�PέS�Ƹ�
x��/j�rq�*Ԕz2�Le��/�WQ.B��ѳ�pt[�9FҘn�l+,k�R�-�����.?�e&h��AcS�bR��:
ǰK7�)N�[{����:/o>�Jq>�r���n90PA&L�gp�k��q�:}n+�	��F@@��,[�[���L��[�qi�e
A‡�w�j��a���E�ZY�5�2��B�B��)�r�}^��*�rz=tTi�y1��k���˳!\Q,�#��CK��r1�ֹoQ�����ƯD7�l?N���D+/rN�κ��]�z*��XV�Ѭ���Bft��a��\{ڻ���ݏdB�/�G�#�p����,/�ǨQ���<Ǎ�:/�̨�"�1�����3�����J��hLjb���q�P�F���GV0
��e�n�����6����7�?�u0̉n赹]����j��	{ᱥ4�+��M�e�/P9z*jk�GX��
m�u�S�ZI��{��Yk�'#q�`V��4LA屰��A���q���HI�[xv����B�<Sk�4J���d�����6�7��DI�lUa�>-=O���P��P\�;�g�d�;�̀(Xۥ���I8>,��WfD&B��|u=�g�S�������᭹���"�w4��rvwc�y�h�Y�ܖWp�^,V
[QװI�iɈ�!!�����X�ݚ��,G�i�A)쐳�>yZ��A~F�=o>t�)��:6#3�
�����#8O��Y0�{>.E��`��=a�.�z�o��B(ķK����`��+`�i�N�n�c&�{J�V;�Y�޺V93��<qz+1��t��5���(%v���v�]'8͑�2�ے(�A'�n�"�gН��Mhh�Fk�zI�9�b��ᑶ�f����ΐ3k�o=Oȹ�O����� =k��N����ᱸ�y�
F�*�d��?��'�f�m+���k%�flE5:!�8�V$�+*�S�_9����,�+ֱ+�Fy�JyE5n�)�A*�p�&��d�iR+�sYuFr�٭�S��X}6;,��z���l�A�}�����
m�:Чs �fq�z��i�11�EM��.ra롽3�Þ�c҉G�����Dy�`���fP#[���nJ�P�6���›���=P���|���5<8�Q����OJ���Dt@�{�B�*�TC5���a
mʀ"L�N�B1����pGD�pX��5�p���ưY�~-���`�%�\B�К�H*�\�e�r�)�*�f3öƥ�6�`����^��*����f��t
rEg�V�5wl�?!�������۫Ɉ��;����	�$y��&WӾ���>�0�3�r� �_^����
k^@�m
��v���&�bcݪq�s�w�[���o�~���m}���Ϟ̜�I{��x��~��Eg�B���G�Y��Gx���AG��d��r�d݋�}#�ߍ�&[�Y{L4i�k�MV������сs�����t���ЭWw3�!#g/u$�r��Ad��WCt󊢂6�4p�`4ul��%	=�B'��Gp�*&��FF1lt��i����.����E���Va�ʏzА-s�-$2�_5�eu������j�Y�욏ίj����=������֙�&T�_����^�Z�O��v�#�\���&�9L���
��YI��,�A�;]MP����}{�M�(�gYb1�7:h�Ǖ���|G|����E/�"ύX��4�'jS��Y?��4�I���v�|����f���k#Ȝ�����ݒ�Ϻ�(8��͈\X�*(�m������*��\JHDݚ�y�c�Vv[�h�^�.���+��	��}A5�&�r���t���Vgl1b�wĦY����.�GxH��Y���C��]�� =x�>�A�nH&�a�M�����)7Q,���Ѿܙ�dkQ����H�L�����g,΍����Am�����Yy�î��o���]���U�.:��,EHS/�^�����]���B����O?D���z怑�����q��7�0Q��m���b���m��9Y��vcxT���!rBp�Fy���I����A~!O�CF��@�L�&_��ޑbO�	���~��چZ�	�ц_��,?R�v�CJ�S
����~R��4
o�r���o��W�}����r�M��x��E_�n#4m�����{q�,�������*� ���fB���	[�{���5lXV)׉����#����@0�?�3���{��L��u���l	JO:�vZ� {�~��h7eWAp�s1��w��ncDŽ٩R"B��Z"!f��/�d��-:H3�z&�b���������2���Wo��&�Qޛb;(���C!}��p�^5.3���R����w��j�O�<�s��$&�i�Q5k�j��Uo�v� ��Yi�Q!�8�<;Ѵ��rT�Q�Q1�itL8�zyg9j�Bbhz���c�{��=�K����π#��!y#��|[#���J���n�k�U�Dg�9]�Ƕ�E�z��x��`%�鹿Q,�oC+H1n>�!�{�ȿ��1~�̘ѓ���tA����j�s���E:;T���V��D���| y�h���x'�~e;�T�<+�!��2�#�	�~|�V�㤨�����3�.ã�t�!�LPh�!����+&*�K�"+�}����
�^�ol?�U�^ɬX��[xΘ۲umOzcpi�Ί?K�-�Y��}rD�%�*�r�dA�o�Ǝ��Ĩ	�f"�����w��`��Kw�_L�o2\��tp��#)p�0'�5h4���E�FiX�O{�`hr�i0��y%e�w�$���"��؇ki�#M�el)4�"�I�
�u�'T��Q�����T��A,�1���i��,e����`l<BH:?ކR��C4�b�i��d�=9U�Nx�[���]-v��������Ι��7LVѕN0��?1�����0uY��Ψ��v]8���a������o��v�^hE)��s� O�Z�s���q�2���Ъ�-��8'���iǨ��Z��*ԭ������C�&#�qZ�ȓql�GL3A.���U�Ȍ5�x�؈��>3pj���!�'��m�x
���"&�0`섅ێ"��m{�8Tq���d��p��4jd	�O/e*������`6g��Y6-��X��'&�I[��Z|[U[EӪHs��ؤ�'�+�@s&%M�w!�r?�����Ʉ2>k>>�|��5��r/���RE��y��U�C����b���u�־�����a���p�M�q�Z0s�܃_"�j���0M�O6!û�/@1��tn�M����W��}�;�=5cG�ƹ��J2U]�k�V�?P&v�<�>���
�y�-⪯�meZY+w/�̴�Q��J�f�r�d��VJ+rpM�ÄԮ��quI���B,���5^�DܖGR��~����\vd�C�ㇻ����w�������zmkZl
�o�����ע��H�LUPӚsNŰ�g��M7�%��L�z2~s��ҧ���	��{~&�dŭ��#z�5{��s`��.�1��eL��Ѩ�A���<�/4�
9ӑ��i����a�M��AA֖t�s�X��y����淾�L���q��]���a�p^�z�ke�K��hd�S�wd����7��F�����hڧ�
,
���4����4ʆaf��r��Z�:����=����#�*�.�@�*B	�J�]vZ�
#��y����Ȃ���048j``����
�͞��P��E׳���\�?���? �5����(��K�c�{�$O&O�<2aO�07Y�.Z�mIT�p�zI��#��0t��.��gϼ����+��.���i���m��A@��im۶m۶�[k��?Z�F��sm������?yqNn�z�;���i�
8?[��X'�;!���W�U왵_�n)�b���`��m눐�R��UF��2�-a���B�K��|�uL�)�0̆��9�-��9��|��:�e�%ڊF��NjO�Х��yP�L{���f%��Բ5�U��%9w;͎hiCyz=n�����՚O���|:�T~�)�܏�M"y������	*��\l�9��kn-�H>���©��^Y��!���)x����晕� ��z��)_ݝ��E�(�����4O�sU>3�w=�!��*]?u�S?|���T����r-�F>����t,�yY�~,��"ns�1؏��H�۱��;x�|����%�_�1X���~�o.�$�^�
�ۻ{�6��fVͧ�x�zކ��H���Z�?Ք�o�e5#�k3�)���*�ÿ6�v���ւ�k�̢����H����B��錽�Z�U:Q�^���Ŕn���ʮk:�|D���{Y5���%�1|yI�]/}��%�J�:__yy�x����6�VJ�]��6�^V3b D3�'A3˝7=}
�p�s�R�>XN_N��J�SJD=�'�!f��]#�#b�#b_<���.�R�8��	Ls	x�c`d``����)���_��fd�}�8x�m�� 1�N�g�l۶m۶m۶m۶m۶��e�����44�ϥ�y�!QX�	��J�����-w�K5�*�m�^;�4Bk�2j���!����&��-�'E�,�P'�@s� MQ��Z����~�aY�2[��C��ˮ����DG'!rKg������LBn�%�B�s�ώ���M��.~�9�\��e5V8��\~a���幽"��B���:��&'���˔@y3��pA
#�4E|��b�
�%��=��"_�Az��F1?���ݽ�x�O|鎢��^�|K�U��tz2
KE�6g�ι��=b�٥|�e���Uv�S-�;�QJp����\O$����.g�]��� 6�PS�a��
�|��B�#�~�:�N��Uio����#`��fO�=3�Z��y�t�c��8����I�ܷ�9d9��Y����@i��2�>P_�Σ�xDCq�QE׋�2�q�I��nL�Tӱ�F��v�>�m�<��mv�^�Nn��P���h�s>���������	]�U��#���).���G�x��BS6����������J�3�N~D��S��/�l��-�|s3�W���`y���s/���O`̎�ٱK��L�x�b``ЄC�$@C�9��֕ټm۶m۶m۶m۶m[3��<�JQ��u����t}�3=�>@_bX�ӒY�<c~���i�"v{��ɾ�2p+�#<�����
��@	�<BY��0B8%|s���
�Q�
�Q
T�G��h4�C��tOJ!5�fH�eE�(���{�׊�J%���Uy�&U��U����j	��Z-m�6O����A�������ml7���N�`�%X�JVk�u�zo�v";�]�jO�ٛ�#�u�;K�K�(6,vޥ܊�Hw�{�+�U�x˼
�.���Ӿ���V~�?Ϳ�?
� 0<8��0w�-�GfT3�͉�F��с�dt�[��p*�
��p-�w��(<
/���.|_��+�
X0C2���T�F�z��s`l��p��Cx?	O,BHr���#�H5Ґ�%=ɐIх'��Vx�b``�`Hc`f`d����fd�� l& ;��ReP6��A�a���e���+�(��P~3����m��;Y�ӧ�k��J�k.l�0b��N��f%��3P�eI�(s�P�l�Pƀ�t�Q��M�]�^���0�F�R7�N�S�b��`É?�3�e�߲/.švᄀ�k�����2���D��v
d���D]�}�q�"8x�c`f`����R�_��fonts/roboto-KFOmCnqEu92Fr1Mu4mxMKTU1Kg.woff000064400000033244150755146450014357 0ustar00wOFF6�Q�GDEFDGd��GPOS������hGSUBP�7b�OS/2`R`tq#�cmap��L���gasp
dglyf
p&�6B=�M�head1 66�j�zhhea1X$
��hmtx1x]���Vlloca3���I�;�maxp5�  	name5��tU9post6� �mdx�
�1P���PB
�U=l@B)�w�暮���Y�e�u�m�C�s���x�h�~R�R��2xڌ��[��#N�϶m۶m۶m۶mfm���SP��NuM��9]��=�U��!Ʋ[�����w��|މ����^p��H�����;��)�������;�EoDo��E�E�D���`�0GG�aA�H�V�Mx\xA���/�d3�Eb_�J��R�^v�׸����\^ob}�z�k�x)v$f$�O)+�2��*����y}6`C6b6cs��lͮ���;���!������<��|§|��|��|��|÷|���o���I%�4�LSI�&C�6��!`�{��c��\�J(�2�C���V�A��?�M<nG������v��m;�R�C��aj�H�ӵ=�{�>�:���}i_Y�׬���:���o�&k�KY�2��6k���i]��{,�p}��/��
�VO3�o]�fJ����R-TZ��;���RN��&V���C��3�?�
����&�ŭz�s&�D��أ�r,�I�Е�t�R��a$k��Mm��Y�U��+b�%kQ��mg��v��ks��{���=l
�5Z�5[���
��b���v��i
�hM�l-��>��8�bF��k)K[Ʋ�f#(�
�؃��=f~/�mj��ʭ�Ʊ˰��c���=�z��i�X��,Hz"���>��$���,��?�u%d7����׺������Y�ʒs��}���;��:So�������}�/�
�����;nw��p�>�0�Q,�"̝s�R:W)f��+wϨ&�ԩ���c�$M���:��>]�������^e����O��x����wI�v��h���*_;~�3��Ӑѿ*�1{5�Sh�AD��e5EʨG�Ì�&i��ջm�s�X�z�bJ��M��J�Zӵ?܇�TZ��}V��n}Q�;���/�>�ZɵET�:n󌺔M��2y�o[2�GS*�d�(�0Qw��3�kV=%̟"C7�p��4�B抿d�$�_�h�<��6��u�VS�r��ߣbf��й�/I�u�{��h"�ȣ`�?3w�nգM¡�э��F�:H�=w�NΦRi}�v�FK[yD�WY8wP��ų]۶ۨ��N�Qm�v�ڶ9���W��볢���ߐ:I���%�*�N�(&�as�2�tg��b��fk��z�f�V�3�]2�Ü`�dgy�X>�u�e�2����I���*=,!C�;C��0	.	�H���c�4�(���4)0]�̐̔n̒2�%�)1O�̗���Ҟ-��F"�J��R��J�m�a�=s�{^����^���zrV�q��+R�*7Hp�{��YK�'�$�+i�Z��|��/*�`��`�+.X�"Mw��c�CFJ�v-���2U���u���5\��j%W˹Z���K��H�R�K�.�N6H�M�p�t�jiW+�CB�H�^	8�!��XqǺ;Vܱ�u�H����`�̹`J���]�v1?�C�����x�M�R�a��_�5�
�9ȶm��
��m
;M��/�����yeu��.ό�38�?��X�����E��-�A�����,��"���LfEv�̚�r�u5��*�	h2����O�¦obr�����^�Ɔ�IQ3M͢����@%����@�����[Rq!�6���
��N:Km]���P�!��?��?͉�Tq�.S�*A�Uڰ�0O��!�Czd��.�+��)5�|�p�3N��+��ᖻ
�g�Y�x�'�y�U
/����>*x�c`fic�����:�՘��QB3_dHcb``b(h``PR�0����;����?�4�YL
��Ar,V����a
�xڅ�Ȟm���E�mN��4+���f+Ͷm{�r
a�m۶�go������t"�/#���Ȧj�� �_���<-��v\�@�*���ޞ>�>�����H(���sXX�$?	�̷�b�p�
se�X�?¿!�Dz��R*y�\�w���&��9�s�%���|���ҋ}/����b���/6�X�b�OΏ��AE4򭭲�k���+��n{��@��w�A�6�Gu�q'�4�0�]q�5��0�7�r�w�tϏ��
(	�~�d�Y�E�c>�9EV`16�6bVa{dv�6�`d%�8v�Nb N���<.`0.���zd(n�A�<��#<�e��K�+��M���D�G�\d�Z9�1���Xҧ#�H���'���'&����s
b*�Hd�Dd&�ZNu�"Ԉ�!t��%,�̣�Z7����xڬz@G�ٽ;�\�)g�r�{��[TT$*M)@:�R)VT�{`ņ%��X���؈�G��7� �+G��μ6���d�3��e���9�)ׂ㬬�V�@	�؁��8���ӷ��>#<�@�FY���2�1��U+��qYIp�k��@�q��u�����Lnm�r���ⰼO���.�<�c����]��)��9N@*8�5*����y{����]�O���H��v���ۈ�
�wX�j����
_:��t����*1���'����B���S��Ԅ��^�|R=9!���au�mQ�8��{���(�B4��nem/A)��uClz������Ngnaa���h���f�0�+�5vx[gf����go���9��O�{�����\=�Tt۰%<4��Z�zs��[f+�U���t	X��{Cu����Ř��xN��od��\3�5g��>����l-�����N-b���� %����X6ܐh�iA��qOΆ���َ�g�L�I��|_�aW�̜5v��p%�\��м���a991��K�;��ej����}1�Cssb䓖.��8�y��߇	���̗�V	��ʸ���Ӊ4:�($JQ2
�G�(����(�uo�v���h\�zϢae�R��x�È9��V.r��w���kh�U�Vk_����:A�k�j߄�{Ol��<u
ɪ��g�ȧ�<!����M�s��i�f
>ǃ�Z�⌢�q*�bF�
�,�L����v%�rwN�h75uP�	�h��P+l�dc�/l��@܌�6�Ȥ��
�G��z����>�s�r<��
Br� �!
����NO���Ԕ8��5L�����X�
{�GF�@��{�z�¯��-p������<��hnK�3Pכ�N2��Nj�J��Zp��zBO����KOz�bP��`�����0��Z�6���,�y�Dn���sM���[)5J���dB
u+�n�R�7+�z�V����=��k��Њ�n&w] [B+DŽ��l^Z��:��9���f�xI:�2�	�|��̦�0gn ��w���}�2�W�A��:��P���38�t���Sf��G8ԧƨO���9hI4ք�ki��5UiEmQ(E�vWV�z,T����7��o
!Q1Qy���2���0����b�7�߭�����y�p�q�/;��JXi�2�N:r����v�ͨ}�p�|TҠf���;���V��f���������U�.א�I�uY3��d�^y�ݡ��tù�����m�ᵔ��[	�"�eGɃ0lZ
�DŽ�����o�t����-JY�i{boK½���:������+���Otl�H�r�C&���:�~Q<}Ё�R����]I���`�R�A������/)���݆��w�CMP���H���Aǣ�Y ��H����Hw��K�P���@��!1+,`do��ͧ>���O�����u��[�!|…!���C�g���5rA�	ggג���I�׋��d}��3�t��?oܤ50��Z��ag@p�f١�0�ǝ'�7j
[ Wf��9�h����3��	��#6�0�:��#sj��{�1OʾH�P=�����[�~_:��ó���āl��*���k��e��ȳ�����􏩉�!I�������^�O��~���޽򖟼w�fǚmi�7��#VyDEUƢt�kk��"��8E�LBJ�Lc�:�	m��>��pZ[��q-��ZHt�>������13`MR<Y?rzГ�-���i�ʞ΢��‹����?+ޚ\���r�h�+����q�m�o��wA�0�k���ʰ%���<�Fpe*3;0�FĻ��f�����2v�i�?�A�*$������?����;�%�/�+�+�q"<�����Ϭ�#����[���7��O����4N�O�i/�CLC���N����%�@~<~���cK�r�m~��#�p�[>o祫�
�OI���¹��T��a�P7��a8؛2Dj^��)ge-��T`��b�#*SS��)�Eg�b�˛�;Vlg�i��E�Y�)�'�U�^�r5��W��M�&����c:
���iڴ��}�տ5�2{�GG��g����o���^^�|R��ƻ/���v�F���&�v�hm�@��x��Υ	��\�����|�-��ڡM(��R>:f<ݘu�t�Gz\0N�w�!��a�7��&�x��hK�bl�`��Ni�������߬:YI>�**~~���7����``x:}JK�zmjl<}&+,+q��feX_�����Y�mk�����C[�'+ct�\�XrJ;=*F�&�t�T���'o)�W6C゗�UN�ɛg緅/���c��~5>?���R�3}��(���"�҄3�8L���Dc��hs!�t̂,z��vy�߯��
���+�o��DfZf�3ރ�p �%���ܼ��?6F�G5K�Dc�Gvk2d���{ݎ/q���CS���1��7�#KH�1��m�kנD*deL��S3-�J$Z�!V'���K�p��U�t`�,:�����K���v���<�����`,���V�WZ�'��W_�]�L�H��$�M��:Y�R�uI	�,E>�
���7�>��IW��g���~k���R�:)��MJ�o��$*�/d��nVU^�M�����$�q#�!m#����'��@͐�^�[cp��:i��]2�����ᚸ��wT�T)�2!:�
��v@T|(1�։T�*Ar�v��;��B�1�x�5Hń�	�0�d�)-%?�Wg�ޭ���|k�d&x^J�b1#uG��\��V�n⩙:�L���D���/�&	g�->~��m(�Ɠܻ�t_.��z���ҳ����˽�>��:m.c���6�ϘXh�lQk�%��;hA����œm�w���M�+w�gl�
��3�XQ�X&G��9k�r�L�I�ߨ�D�!<�Pz}��O"%����߄U������0��E-��O͸�HK\�C.��g��lBbC��<�9!gi^)<�LCa�
�J����H���Y�㻑�Ɣ��uRPDp�MF���X4E&���c�S��z2��'��Hy��t��MY��~}	�z�BQ���JۙB�F���ɪka��s]w{���򺰭AwW#���I��a%>�]���gi�Ef���4W�"ey�ʔ���S(�9-����(�<���w�9spǮ����cK�)���&��`&�P��Q�q:��\G���e|�g|~�V8�q�d�~�çv���r����v˝Ъs���4���Q���]WK��k���>N:yxT?� �E�7�lU�R񿎄���T�?��hڏp���!����њ�1^&���3Ÿ����[�B�ڸ�6� ߑ�5�'��W���k��In�
s������׼���HB2�][�e�D�^�?*��ٳ4d/?��)N�U���#y.&�΅ĩPV��6�gB/C�A��t&������׿�&��5C�}�L�;�Ѽ3���:�/��{cK�u�1�dxd,J�Y�'��2�	�\�#��,J�k6�%V񯅉X_c�le�e�i��SM"&=j���\L	5�,�ܲ�#��^]�$���o���6��]���_e95�XLn�E>Σ���.�M�'�n7wL�Y�9��Zi�45�Z1�r����J���+��
��J�{��<!��aKԉ�3�nL"���`9g<C�R���<�=���S��`e���5G�,�K\hlD��2hIR���h���I�mT�(�5.}[�����A\�̿"t��Z�).G�"�_�jTk���٪�b
���"Ja��3�<���~6��N��?2��|�/C��#�*��'�̈́_��b���pG���2,P>%�VR�X�Xa�L��U��6�~m�G�G�"�}�4SҾQ�X�f��O_S����;ɗ�Jl���c�*��K���b��VHa܋����!�i7w�|~��3�����53�Nt&��ي�XϿC]��:HM!&
�I8�.��a���������G�z��yS�Q0uF^���b����y�GbZ�`����Y�6�Yn,��(o%��u�,���'�kxf�p��ic0�'Ri�ю\[��4��(���L��ʤ�!���e)M�A���0�#�g�8�#+��_�����I��g����-��������Яz,�l��h�4�:t,B�_h��4��e8H�h����<����}�3��ɹ��~�L��imǷ��2��rv=����ߠfh_'}�d�k��d~�?N�?��r�[�בM�^n�����D#��H�*��eF[r�*��Џ��9�WJ�?:�]n:Š�O�#��C��#��â5�C�cuW�<���C�#P<�RA�����͍��G�Y4�ޠ�2�c�����G�?z ��$�!���L�L�;��OK/xrM����Ѱ=r��i�3��oz+���,}@?
'�$��ns̲��N�ܠ���,����F荊�^26�5{gx&���.V|�!�?�iTtg1���N�$�6���zr�$�k��C
G�y9�m�$E���ofY8�2Ÿ�F�w���<���v�W�/�bϤ''�mX���
�O{i��e��x����
��j�Ɠg�Ư�=z��A3fm.�j��3�8T[Efʆ0�J�D���`�|�"���Z�;2h��!�c�q�СMS�R�IV<����W��D�˶�i�aN���c`�|g���}ݕ��8�L^U}�Vi�E��!��_��iG�OW�/Jډ=�m��׉I[�R��o
�B
�P˥Ћ'��I��W_�5ׄ~5w�����(ǽ,�P1#�y�E�߿ܣ����Ǐ��
�y�@���$Sw�!j�ׂ��qoi/�h�vjVw�5鄥���\��е�Ђ�V݁��7K�/])�df#�#��	��Cf����H���P�v�B2��/�\�N������gq@��lě����#w#67sr�t���S�~�۷'��|�ӟ��3��
��0�W@�R̗�HN�����b�0����Z�/��*Ugn��V���8v�͡�p�α��и���B��>�O��m����S[�
[�w���W3�I��*��"D����8j�\Ǯ��83>�pH��y��vI���Cv4&�r���i�"L�<�J�Ҩ��e�;oߧ��_]%_�gM�j�Y��~�49!(ASq��Y��	��b�����C�����C欽��kkh[�������R���o��+�!�V
L��l�h'�g���M(m4�<��:ےF{�M��|���:�LVVl���a���Q���9��-��dpAn���	���*ٓV����;hD�V�^�Zf�bYl	��n~���31$1�|YVrX�J���'���e^^<��|<�B"#⶗�ؕ����m�ղ��HxgM��5����e�Qw,��U�S���i���f��S0��*��`�t�=�I5�
�D���=��[�+�q���,�E��bbQQZ��������R��R�s#�6I-l�Sl�>u�{��R�%48H�=鄩��]-�F(9��<�2*���Ƚ�n/�|�hhR�þ�M;�D@�\�~�'s�Mg��v�8=
N����R��^�IH�j�9��zy�{���{/?���x�䡓�,ڐ�E�ґ�&��4[:r�
v�K�_�[��5�f@u�G��/K%U��ҧl�Q���i5����'Y�V	���<(�u�;��b���J5�g���%��u�a�̌�gӳ�oY8o�����o�lP�0�Τ?�ȦUY>�0փc�Qz��z�8��u���+o�N^2#:��?z�Ұ���޽�iX��y�0��%����w���N��[�TwB���
{VW0���XUHE;+��T>~�_H��A#'���q[k���춞��Rk��A_{��#�uM���e��vn�	�`مK�#5�?RԬtQK9�ց��d��?Sd��4�	�\��s��9V@zV��>���6�T�T_l3�6���6Z�N�h��|P��;�,#�V���80ۚ�~
(77�[�n3{�s4��/2��d����Oz��8�v��6-;�N�z2�~�@�r�̂�)�S?3�{�H��"��__B���&�ŧ��C�D��"$�mYb�2הZ{GG{�qㄒe��]�RR,F��7n�rGi��
�#��O�N�iR]r`h�i~8?3�.��TȨn����0�N�eŢ/as���IjA�H�1��2`��h��}z!ē����ed��z'�[��}����
a�/���G^��F^Z
�Lw3xT�q��������7s��Qc��\���O�eq`�2�y��Ļ�u�1`�΋ �@�i+��br2�1�#Y��l����[���]a٘�TJ�)L��W]T�c2?/q
��ƈ]��x��>ci7�0�j��U�y3+%	�����H#z��ڏ�qm"q�~,�"T�柉���g�/�u���㰺F��(���t�vM�f�+&���R�f�"/w��ݻ��s��K��]]�A�T���e܃%�xns��_�q��b}ԺN���s�5����*����Z4}��EӦ8aI�ҽ�Y���;{�,���{�"N��4ޟ?�g���m7�]��T�Yv��r{k�4�̀/�F�"��WL�W�\�a+��J��o/��?ˊŽ��\ޖcX�q�I:r4���1�B�E6�
��\�Yl�#&vL�d<tq:ل�Z�l ON���^1�n�C����-]�i��׼׮9P�5qDOޣ;�r����g��jS6���T�H%���W̪�ka�v�)�ɟ0N0#�'-H�����,Ya�j���#vbs��#a	�iUj�p�'�`,���'�я����d�H�o�0���Ӿ��pNS�Y�%�E�#��i �J!��Jf�f%Q��Z�h�(�.ڔp�5d�&}�Ej�/&z���Y�����^�����Mc���=���?�H��6;Z?D����8a>ʨ��'��J��9���?N�N����o���|Sv6���C�skϽ����pce�`*�53V�nrS��XK׻s��ļ�y!9	�OH�D	#���~ܩ�W�O9fӭw������Y1�f?f}��HV�Ց��	��wo�n�}�T�Sb�9�L_�N2�N���	��,2K��aЦ!��v����q�4�!(ZH�L`���ȡO�rN��臕�\cO�V�Sh;��뭗�Ί��I_ɬ1�i�lu�?�'YIZ�����@j��+���M�6i�}�Sxv|�ȀG����i��a���ײټ�;�N�P�b���	�چ��Ld���Z)����X}/<�"��
�z�=[v�ﻂ�c����6��Y�UfN�ӯ�g6<O|�}>.iI��Y�1�k~�3p�ٜز�'��Fs��Bǣ.��������7�GMk�'c���w2�$���A5�}鉎Q̦�`w��k���OH�d|J���t].�:�6/�I��c�\�=NX6�1��a�4&zq�E�;��ƅ1�k�m�$�Fi��&��9r����ɭ�t�����s���P�[C+�0^�CC�m,���\:�	�:FEEb?fY���8��0��Βh�zS��	��V��/
�����;i,�НAy�(6Td��X/���#��S�E>��e��3�5m��Z<��^��)XT[��P�-�^ʒ�[ԫ�Z4�ou�S�E7E]8����F[���S��QF\<�Rx}oȎ����S�$ł4�"�l���Ň�Y�wa��0O�%^Ћ�����������:8E��	�x��'�<q;���oMI����q^^Sh��*@8J���m���n�t2�X�V�
��U`��@zlx�^#���&[?k��5kf~9b�④81������.�L�=-gP�W],�ֶK�����>N���*���
j6���=֬���v�!+�Q\�}n��!,�m&1�+ҵ0��e��$��J�P-V�z{h�6�?�H��.1r��e���`���?�Ȓ˷���O�"�bLHBB��%��#}��c�=��:�7,��Ǯ��뼴)Y&�&ňՆKą
.��1x�`A��^Ojʮ'�"G�m��%VF
p՟#x��E���1Q[
���"~��dTE5��r����h���y�\0߃fy���i�J��HGR��
�&�a*p�y0���)?�c�s[�%��)�4S{ q�>h�
��0l�ni.�S�9�����7��?FU46A<��ϭ��d��&��޵�\Z��=و��cV�s)�`sU�.u�p�\��l��Y�_�\}�^!��^8�g�����{���0�5�v��E��X��������;�:�=t��AQ� �vj��
�b�#1��S����$&	b3e��8/h��&�ϔ��s�3�C����GdlQN�:V>p������撤��
�YH�Pi�F�ʼ�U|���_�0��Cɡ��� [bv� <�'~dOv18r[���'����F�R���
H�H��s��4POa����y�D���"v������[��
�?GZǗ�&��'F�A�c	'����|ޒ����^�O����;�\z&�̾>��\�'�@\R���";)9Ѳ��9k䒌�����F2�7
1a��yp��]�g(J�9w��fk��S���^���/���CD_g��
2��=�F�!`
�A	�Brs]��Z�U[�u���ۦ�)DECm��5<��i�t��P����9�������8�?`�3,�]T@��K��1hB7�h&B���C�u��Vl�84<z��!����o߈������ku���8�oJN��j��Tݷ�dtewK��3&�g��I�=Hy��dݵ��ĝG����LBZ��$Tl�+�Ѥb
�hx�PS��!/}2�b�b��/َC�R�צFM4x���c�<��u���6lQ߯}}i?}�~z�~���^=��ʁ����$��"vD�%�2o)S���km�0��F.��۵!j;O}R�t�4��xG24zm@�������-�m��\Q�s����m۶m{Q=�ݠvP��n��k�=���;���˙����ֵ���OmT{}T��8��s�I��Z�J�a�1-#D��Ή��F�u5'����h����*��BNi�9e姒$D"�[<ە�g���W�n�K��jʯ�7bR_���>�ş����vmW+��/�+�å��w�_�I�D�.�Bՠ�ru�F���)|��Aʍ�*�Ô�m
���S1�A�Y<-�����	���/q��]�kû�?�b�^g� m���9t�u�%�B}}x7�0����1�B�Q�I�G��N�'��s�Eh),�O�>��>H\Z�7��?�[Y<�_Y=H_b���0}�v���3>�ˢl�ֺߺ���)|��A�u�?�s�;Է��#�'���n$+f��fq?�}5��5�iژC�b�k<D?�����nn�C����:b_Cz}��c�$�x
���q�Q_���CAw��x��_��ni�j�)eE�{����{Y
�����|w��qF�L�֎uBX��^Q|?���H�O�	���2�����5�iژC;��ܢ�Ѻ�l����K����uQ�F5���z�n�l�Qﺟ��ar��#6�@_<���.�R���	0s	x�c`d``�����K���P�pkUx�m��AD{g��m۶m�ַm;�m۶�B\�m�?�lթޱ��QH��O���X�& ^��OB�jބ�|�hc4��^Ĩ�(�=QH�Ř�ª6J����;!�{��d0Bj��$�t&�d����&���h'�0S� V�@G[U8��8�'�2k��l�U2�8��@s+V���!��m
�`���m�7��kfJIy��r��8���0�̋B��h�1��<��i�QE1Y�C9fz���\�
`���X��A�����	4b�0��X����,��k�HG����)��b���,Ɯ���x}�-�����S����>͌W��iz ��I2�w�ͭ̚�j<�����h�=�)��a��"����� R�`�z����D��c�~��*����@����go�6�Y��ƽ��~{)��?��d7��a$Y��E6"T&�-�(s1��9�E����p}���8��fXl5�Dc��j��RWa�n��:��H4`�gҟ�h�ԡCe2V�+�JYWSI;G �r�%IҀt%���ۖ�1�4Ö���_�n��v�~md> �~z�7t�wR��7��%;�;��o�y�әȞ���
��dw��;s�px�b``ЄC�X@C�d9tc�g&��ζm۶m۶m�.�m���z/nY�C.'7�����pI��g��U���$~1�O|��0FX �-�lb)���I\.IR&��4C: ]�^�T�+�����	�F���[�F�X�rM��rjn���Q��RW���s�u��F��Zm�vK��g�k���V�����Fc���xa���Y��g�1皛���3��j��Y۬��gg�gٻ�)��tZ:g�k�o�v���ݑ�*��{�}�����jz���	�Y,S�vlz읟�o�/��׈@��d69@N��	�AR�NZ�֧��`:�.����)0��A�`{p#x�aɰy8)<^a2+�*���kͺ��lX�q�;î��
���A"�E�ԁ���K`�p���:R̄��V�F�{���q9n�}x
/�|�_0S#=
�L�yr���T$x�]�rD_�^�uT�:6��m]&��1曻�6I�XY��0�W�'8�W9$;����s���&�t�!^z�P�L�*R��s�=��I�1P��ȓPe�H�ke_�%縧W�a��&�Ҕ�s�N���.Ӕ
�D�����P�8ļ�^��2xY��Z� TI�wn$��\kR��4M�*Q%�i��z	��H�n�b�?�x䯆��}.|3�x�c`f��Y)X*�fonts/roboto-KFOkCnqEu92Fr1Mu51xGIzQXKMnyrYk.woff000064400000025744150755146450015374 0ustar00wOFF+�EHGDEFD5@YGPOS|&�&KGSUB��N�K�OS/2$O`u�cmapt��ǚt�gasppglyf| 0���head&�66���ehhea&�"$��hmtx&��%/loca(���e�q�maxp*�  )name*���:�post+� �adx���@�y���YJ �{t�eϺ��e��t��#^��u1L��&,}�]xڜ��%V��fmF7f�FԸqݮm#�msm۶mk<g����&���S�S���^C�zvVܮg�N�;�׻�b�!Q@�S��]��JKmE(��3
Z��:���
�h��:9��**:�6����Pk-ݬ%��9�r��lr 5��b�lHY��4��u�T��#Iɕ<e�h�R�Ru��T<�.9�r"�s:�s��]da�f��|w��̜�_Zh�9�r��_�˷�39_f�k�ϲ,�h������9�żDr�C��{��d��[B�iEe���H��+yJ�=AS�*x���6�j��:ꤳ.�ꦻzꥷ>��o��l����c�����o��'�������#�4�hc�5�xL2�4-��r+���zm��6���.���!Gs�I��q�9%J�)W�R��^(�.l`^��u�NX��(/]���;�Z��YV�э��M����P+T�S2n��g\��z9؇׷t�J�{/n������2�"c����B�T��ndCXk&�b�G�%NB̹z����<��x�=�RE����A���<�n�m{_��4JO?J�8�?26��q��P��ց�õ�c����@���D�֩��v�sӓ:Շ�b$�'�*SX�!$
5�b�P�J_���D�|�>|��8��V7x�c`f�g�����:�՘��QB3_dHcb``b(P``�Ap��wg`ddP����!�}P
�|��� dۚ
Ux�Ũ�^Q��w�VP��
j����4�۠�16ñ�*j����;�}�ho�;�Ms��azX&�JWO��6�&�T�em�Y�e�^�g��e[�}0���n=�VzG����qy�Jƕ��W7����!6̦�4�c�l��Z�e�;!�*u¯n#t�
o���2.w\��j�5���~���ɚq~���@u�2������G��<�	��l�_x?�-X�������9��SYD2K��5�s���"�l���r�#�
)b9+h��V�h��RI#�;������fZ�B0����`�` C␤uX���nu��"u�C�:Mf��9�8�.rX�.�U�Uu����ke3��n���ru��j�$�j�$�j���j�d)j��:�}+�S�Գ��,�֨�R�S?8�P�o M�#>p����@�:JF��B�
�!�VW�Jॺ_��O�x�~���[���E�sV�QK>���j��Qj�41�l�����x�dYXT��gf�R����������b��k�c;E#�`�)`�
X[�h���J����]�ξ��>M���̜�3�(��H,� 	.���)&��	{x6A�p#��`���S�”RU���NQV����(N�F�D�9	Y�v�WA`��`3��k�#�_��]��z���E4������9���k��VI�%YB�G
>F3�XB�'�F�M!�В�O��)7�0�r�rI�*S�l���5ٟ��k�+	/�c]��q���:~��:H�_۳���O����������� Xub8�e$�t�.(6KH�%J�Gf]��ZY���-�43�yn���|7z�.}�W��D��CDm��lg7
�lұ6�kj�pt1��X��j�~h<ڦ����|�Lp���ֹԠ�\u\-�Y��j��JR��x�Q?L�,
7��F��hf‡ ,�z���3)&��}|4���[1x^���)��KK�F:�}��E��$��4�edχLh���㛫6��@�H�Y~�ӠK�SRq~��&&'�ՊM:+YP:Wm9�T-��*��1�F��j��k�	��+����dqe��ξ2+��^��X���G�r��{��̙?Չ�կ�<'�q�lOpJ�׉���V3jp{ e���(��v��L�(T�α��sK�An'+�P~�}�Z����|B:ξz�:���u`�>Q��TK��W�����cKU&�(���u;Խz٦��7��wx�p݁��b�Յ2�������L�|��`�;~k�!���1�b3��0 $K`c敐,s�|t6�ou�<I�}Nޥ�/\�5iB!xH�W��K���^7���כ�a<�<����i)}2j'�*�OH6�����o�� ,�2D
9�int��h0Ȓ$�d3��6�	��‰e*������pQu�~m��g�r�5�e�?U�\�Psj�'��lq�����`�ۈ�����Jd��d���,"�=sj�(�
O3���_�\�ge�թR�kjb�	�����eZJ�<��e������]���S0�yi	�؀PrlF���a�я0̾�sH"�d�؅�-��<\~�Qߗ|O�H'����O>r�K�����T�0o�qU��`O-�1��x�='�W�f_��#�-U�)��M��9��tx+ּ�3A��;w���
Ϙ�"�7+�&�pt�l׶0�Z�o	iB��=�
��va�%������s���&N=���Z�X�����?�Sg�,CK�Dw����������T��+`bOpP@u�?�P�����M$.?�=���ǯ�D��xAV?�y��J�߸�iZe%y!܏��G�*�'4�2��P$߶�V�Rcj��y�%�̀T,A�lT$㌂�\��eG�L�*vI�r��Rϡ"�@�ِ�XR�����rA���?���Bhto��"�;�G��w*��[�:��.og�c���d�kM��e�ibI�<�[g���/b>)�!��>J��˽(v�#��</�
���(�yNx�B��1I�;��.z�J�@�#2���-��͇�Q��H�QFIK�Pi�>��⢱���]�e��Gd\��N�[0�U���P�.pM�d�x#�I%��L�!=ɻ��F�?y�N��x��cxy=C�Zډ�Y6iG%	3E�?<���;�aR�i,���}�'o]99���̂���'��6p��;�۷��
!�~4W�\�ZR��Lh҈�g6~���L�EEb �M]y`����c�>V�>�r���ImK8ZO�|xBF���c���*oC�7
<�bLV�W}����������1�O�,.J��G���F���)���U��EןW��+k�dV���
�yE�%�{��E�V��7Ty�U���7I���.	\�0�G�UX�͸�06��
�٪�������Q�P$���(�yX+9�
gDz�n�u�B-cH
�pE������<=2+���Gt�
M�-��
[��Ƕ�!��.h)���6�
k�P+��?I`��)���v\��3`�/�W�ӥ4U�13a���M��kb���V�"�-�A����5�~���H$W����}u�&��c�
鶌�f\XW{�G{ǧ�����
����Ֆ�R��+1Z:I}]��H��1����ةZ6���t��o�����7؎�+��)[	���a��m��#���XU��瑀%-8��@Gq+Ϗ�D����>�lxm��?��e�	ó'{��LH�`$��Z5Ӑ�H#h�=�A=�6z;t�ٹ��O%���-�-2P��%�K�0e�젃���k��.yvs�%Yē�
e����B��2ƫ�4,��D���Ө7X
6T湪�Z�˂����:*��k�e#N�JR��Y��#Es&�[�3C���ӏ#T�	�&"��n���m�)vBf��7È�h����7�Ql'��Ze3���Ȓ���3+V���u/��H�mR<�w�:�}���gB�v�M�:����5�mNB�� �G0�g��qvj�X���ofte���9EsE,��>���tߔ$B�D%j�fM�������`{-��H
U�D�*���VBuf����փ�#�+p��
��?�P�.�	��V{֬F<�����.�KV���6xq�%e�W����3E2h�"bf{�&�m��Z���O�e|�r����{�
Hx@~�Xܻq�T겞�z�_�?�Ț@��mּ��Z�ATXh+�A�2J#/E�,��1����l#Z#���n���&�9Dp�gze�$�L���0;h�K�H��ߢ�&|0��r���[11O�&tq���,r���}xw�3�}yW���������h�#�o�W?j���������K���ٴq��ġL���b���PW0��d��
�w��d��`�۵����=wQVY���?�p镄��k�z~�e&�QE��b{� ܘ����ǞQ|I�͏��4�>9��œ{i4=�!S��ɢH}v���m_ID�
G��4�e�f�"�粆X���o����̏<ǘ���ؿ�`���dCfƟ�����J�?tw<|�Zϣ^�S�vm?��`wo���K����G���v�ҡ����.�q��O#���"�Mԣ��Nt`��c0xr<AS�
c8{	Z�y��,�*,%.uk�;��}��y�
��2�Z:�&�����2`�e�$�K�lQBjzp,�X!8D�s�d҈��k�˨�n˟i�FNL^3OFj�BW+\V��]GCp � �e�ڤ/j�W+����J��P���u+/���NI�N�C�����I�iD���тƚ~��?�iYь�t���dP&ŪXe+��>���o��%�Z}H�q-]��%Ec[P��ÿ�x�x����5&5�\���F"��)C�Ԑ*�����}��"F$�2>���#�Y�����Ԩu�ZNԺ^�b����GX�9��Hb���2+���ڽQ�Y�$iiv�w�DH� �
�i������Up
��**-b��G��w�<+��T�m������?œ[PI�$����������B��G:ˢ6}��I�
<�Чc��6vU��9e�π��<��qrc���63�m��uҊ̪�s�]uv$��4f,+�1��Z�~(ߖ��o���8VCH`'Ȣ�ڡ8]q,}]�\VD�4N���%�"xU.�V��}�w�([���ߵd&ۯ!����x��_(A�!�̎�ņ3�#BS,����-�Ҋ7��GU�]�}
�s���k[�"I����2�\%?-#�l�B�!<^����"?l��Y�!s�+ɾ}�!�͘X=�{e?�c��X��������N&Q��IB��bE�Z���o���u�,���9�V�	�Y~�W�y����ɞ�^;�h��^��Ǎ�=���ua6�����.��n����&��5��Ø����8�%�������$�V�t!O_��& ���y�
�=|+���S�W�﫶�BH���
���E��_��Nr<��%�q�F�)�b��%#+b
�DM�Y�R�,��v��͖D��r�-�q�ٺmf���(�:I���RF�i�6��`�����
�B����._����g�Y��V�y��}J�v=SED�I\�����2�̴�ıJ���!Zg���zK�$�x!�G�Z��y>�5�>۵��P/-��M_s�_&.�&N?8��!)�o�٠G����2B�^e�R��cR���R�N�kI��I�$$�q/�00�h�	�ԟ1_�c�qv�a�#��3?>X��q-`�Xx�#u-\��&m�>��G��i���1��H�M�i���7+�bR�h���]�����s�|�Ϩ�MYy�Έ!z�nO�d/�����Ԫ�.�_!L��º�C�l�WW�C��ٶ6�#��jX����K5O�IV�P7��x�$h�_�E�#���o�U���ڻ{��`!U8A�IE12��0�懷}8�J�8x�M�/$��s�S��I#i�%�%��o��
h��Х��xw�����z��si<�/P%�k���_�+�eE�5k#���j) r�հ4`U=��1�(ӟm�"H��������ؚ��������F,�3hآ�A�m���v�Ƒ<D��Ahə��y��l�
m�`h�f��t$�z�F8l�����N�8Q�k���h�r�"��a��GJ���/ܺU����/�����3V��<M������,	��5|ZtX�k� f/��=Zq�E%}�Et��,��s����@���������8'w�>�s�QI��Q2	���������90�}��yKv����sؤ�ZR8�4+|n(��sC�)�n�=S��ݝ��!����1��ue�K�u�#�[P�K{l/a��i�W� 8�
I�,��3��2�P�Y�a÷m�����i�:��zv�z?v�gئ�7����=gk���������
����P^.
���\|��D��)�,>��E���;�b!��@��J�� kl;ق�1��,fѪ���P�b�=?�ߠ��ӘA��n���c��E����%տ�}�.��{4>~jU/��ޘM�#�b_Q�دmܸ1����6�i�M
f25Фy��i	ČL&��h���c�Y$��b1��4�p�=�ux	3��qE*|wl��6�(���Sa���RV<�1~�^��>�2V�|��e��3$���sa��Z 8B���I»	旍I�Ӆ�g5�,��6g�+�#�${��7G�!ha/�q�CTt����Ⱦ2n�d|��sǖ�m�~���Ǿ�s��g���6�e���ǻ�S:A�'u�O+��8���|�B��u*���-��6�>�M��C�b_�����_���M���n��ۗ�<�|��t�ŋ,�zh����"�����ZҖ,藜t]D�MB���mE��M�&�7�S[��>�Xy���͛e��>��f}�����:��"D��\���UW�/����;S�p��*�d��dFBD�S��&�8�d�Y�����6��v=�������l�湨���b��-V=�5�>Ƞ(R��ͳFe=�%s������l��O4
�Q�y�Cb�TZ=4p�ID���ͻD��PL��Or�[z��#,��t����jE7Ң��n8E�Q���Ջ(v��#���n�=;�>?CB���"Q	f���]��6E!zW�s�ǃ�c?�� �u�@�*}j���Ǟy�q�������3��VǖƦǖ�V����)8��t[���M�|��l��x	�_>��R?�`�k�����Ȅ���
KPQ`؞4*�3�~[ݣ�OMJ�P���`�p��Ih
1�Kr�����3h7����1��כ���%�/\��E��Po>�����@'�;t����%t7��o��O�C�A��􍧐!��zA&^����S���	��ƴ����F<�����}a|���4uZ���O��f���:K��F�bi���Pי��ZE�4�⋥�'t�8ll�N�ۘ"e-�*����ѝ&���k���'�I�H���e�4����:Ǽ�I��L��{��9of�����sa+��w��w��l6�Ŀd���t�}w���ghSZ��jm����.�@&Wkvh})Ϫ�T�k�Rt�y�?'�w.��_T��A�נ������m�'���g���	[�o�JҮ�_m�]LШ��a�~	+Y��OK�=�9'y<F�=���əVѨ�>��8�v�V �㓾���pZ�v���N��~��r�?OހB���ѐA����$I�0Q�U5Z۶�Z�n�ٶm۶m�
ζ}]y�_f���}�':*+�;��S�L{�݂����t?ο �@�l��,��s~@ٻ�9������<�����o�
N�g�]H�3weD��G����"�'*�Y��)��yMH�:��Lv�N�MKN�L����dM��N>e�l���5�L���t�sv��z)es�J�z>V/���Ӱ�4�D�̯d�?���{��5��b��Y<���U<�WIuO�W���Hk�e�֦�x��z��_x4���'�g���S�C�lz�k��t�g췡v��MK�� ���OT�,�o�m�a�����y<O���[>��"�"2�%BF��<�""��v�5�}�fFZ�B�s�h�X�ޡci*ј l�)S;�&��c�6}��V�㾷���8|45�g��I+���G}zL�9�w�ʪ�ɪUQ���G�'��jS���tؕ��~¤�o�ʥ$v��՜���o�
NG�?X�~����|�'�'6Y�|\t�ts��r.��E�#��y�{vF`�`���|�崌�j^�y~8E�L�zu8Whރ�{�L����s�����Q��S���
|ˋ(����A�W�[x���߄o�F�z���*��q~@u�k�c��?�*���!r��Pj��R\k��8��}˳�a�iQE�!�	B�G��:�g���rkv9(e���NG���\��Y�h��=vq�dM��ãr3�|���f��H��9�wϡ�8��y��t�G;�����&$~��DW�~.����T��zPsW߿���Cۇ]��G�{�S�Qm��p]�1�{�$~
=��]�T����>�q\h�T�C?c-�uD��:?����aQ��������m�b�x.�=�K���;;�AoU���9�K�G����1<Gs�d��;U�7MK�a��y!�����'v���H�|:;�_��װH1a�z���=�f���f�-�{���ԓ�	�{~A�n��'Խ�����Wы�f�>��
��'ؽ\7�{3��
�Lp�������v����՚D�ع|2����f����W�'U?������Y|p�):C�)�����u�~�I7U��W&������E��IeΧ�Ot��2��vy(��Z��Sp���6�q"(2��*v\�I}o�h͑�
Gh�x=�ɥ�cN���$t_�Y<e��M�g�}���[�I�nbW�.�68�L,�����^<7������a��xG.t���N
��Z��?����vǀ��P����}����_��݀�	�~,�b��/�K�z�0��h!���:9u�ǖ�;�<ڻc��!猝�e��):<�}ݯF3��<#�$�&~?���۔�)��-v�{%a#;�*��{/8r�2���D)?�C�>���>8��a��U�:I}>��Y�)��8m�_�_��	v��8����ၚ�;>��sat_h9�u����k��t�Q���>x�?H�?����O����Á����өD���('�*U����^���y���q�RԹ!�ڼg�{�B���E[�7Cy/]H�>�L"S�\?�}z&�b�oT��u�%���3\!�u���'Sw�G�_O�pi����\?9�m���Dݾ+�����WI!
�ԦJ�7�?7ݦ��zU��^���xw���Vw�X�	~��y��߅?���/Ҏ\f#�/g�_<���.�R�8��	Ls	x�c`d``����)���_��fd�~Dxڍ��AD{f�ll۶m��ضm�(ŶY�S�m�����:kt�5�������n�M��6*���l���QA�F=i���·�*xQ��mG��K(/�G�c�M��[����"��3�M�qQj���Gm����D�"�z�"�Ki~!+׽�,͑EF����c|�KPC���}����h��w�.n����G����i�ڎ��@
�r�
�(�R�PXڠ��Ev�9lo��ϩ~���fz��gۣ��Bu;��h���xf�Jcƪ<����ު�z�R:��m������{���=.s��0�{=Q.n������F
I�z��m>��u�|�~b�b�ަ���k� ��G%f�����YEE���"��@�ǜc"�eQ��'���!Y ���Wo�@n{#Q�\Dz��
{�/��O��ԓ��<���<<9�/��t�~��Vm�C:�7�
��A�ZlI��%}��A������Ѡk��^̐�������E�L@Z�A��NW��x�-��H��ٌ;�g۶m۶m۶m۶m۶�$IJ�o>���L:$ݒ���|r=��<F^/W��S�LVv)�TY
�jZ���N}�%�Zj���-]�}���\_��7L#�Q�hgL0�����{��Y�Q�w��5��m��؎�.f����7�Tsf:�]ݍ�w��
�^�b����ӽ�^!��7�{�g���k���ʑ�C�@/(�
�G��(J�2�<�8���I��1��pB���Eq\��]p<ONj�z��d"�HIR�4 mH2�L s�
�� g�
�|�*
�4ME��B��E��N�E��Et�E��K�}E�1�q�%eYV�Ua
Xփ
a���mf��iv�=b��}���S� /�k�#��G�)|>_ͷ��<�͟���h)���b��!��
b�8!�����
�!3��PC{�
�a2̇հ�y�
��Sh�<�&3��~΢�7��Vx�b``�`Hc`f`d����fd�� l& ;��ReP6��A�a���e���+�(��P~3����m��;Y�ӧ�k��J�k.l�0b��N��f%��3P�eI�(s�P�l�Pƀ�t�Q��M�]�^���0�F�R7�N�S�b��`É?�3�e�߲/.švᄀ�k�����2���D��v
d���D]�}�q�"8x�c`f`����R�_��fonts/fontawesome-webfont.woff000064400000277350150755146450012603 0ustar00wOFF~�
��FFTM0k�G�GDEFL �OS/2l>`�2z@cmap�i�
�:gasp��glyf _yL����Mheadb�36��-hheab�$
�hmtxb��
�Ey�locae���\maxpl� ,namemD�㗋�posto`�u�����=���O<0�1h�x�c`d``�b	`b`d`d:$Y�<��x�c`f�d�������b��������ʢb��l��|6F�0#�F��nx�͒�J�q��gje�>�"�D���>�{�E�O >�����,"�u�^�[[[���j�os���_�M��%:0g80������B�.L�s�zðפ 1Y��lKWv�es�t��)Mk^�Zֵ֪�m���׉Θb�k̳�2����6���>'�Y�Җ����jukZۺ�g�m2� ����(�4�-iEk�Жv��}�X�B��Y`���`����c��9�Z�JV��5�e�Y߆6�G΂�`3�|6����[uI�p�n�-�����[pL��0�Lp�;��׸�%���8�o��>F8�	��G8�`�W�ί�����"�E^�_�=(K,F�K�+�y�b�����x���	�TՕ0��o�}{�uuuwUWի�n�njmz-��nv�E�EAAJ!*�(��hD�2c�%F�ʦ�Ebb6���$&�����7�߹�UUW7
��t�w���{�9���8�m�8b�I�	ڃ�����݌7�S�E�G�!�3�����j�㔐=w;�P�^I�A;RR�n��k��LS�.��)�o8G�([��)�9O,,�At�S�
��h
y�u�jZupPGx�N�o��n��{��ho2�A�D�-r��]��u��5��e��^��dM�X�8=���r5ͻ^Q\�~��2��V�0 �o�0kC� qA跍����G<�
�9���v�`�|N�X�W�I�:"�'�a��W޺O=}��k�#�"�7�e	��%Vs�~-�y$ŵ������X��w&'q��.n.�E��K�#��JD�ڝn봽7����=�|�w�L:Ӎ2vmrRv:=0P�@D�ۓ��V�Z7eO��d��7�HM�SY�|�[o��f'B��L}��Ʒҗ�V����^�+�{W�=���uҤ֦='j��,�|;�v�A���o=��0�q8"�I³��8���yZ�6Ǵo9��q<i3���k������1%�&��
���u���k�����{H}��@΁W�—^q�Է��4;gg7���N�y��/��
q���P���OЌL�4��q�,���ԇ�"�Sv�=jL�/U�jC�-w�o���ȍn���j�̮�{�j\��
��vE��k

���z�>p�n=�^=�ajID(����෠���qu��F;э�5֮�s7;QC7�U��[����׈���yZIۘ�ػ�*�!$	�dⵄ��Ŗ�-ˇ?��{��m������f6��po��~�mԽw��o���G6M��oz�a�--�m#]?]?V��k�z��ܥܵ�.�>�)�9NH%�&T/� ��_���I�Ax���O��B��]8(���.v��)�G=���H�P�S�U��P���>f�F�E�-G�G�s|���'?~z�I*���R�|��[`���-V�'ݙG�P3b�'\R��I̞#n�;W��ٟD�T��ѹb8�0�^s6,rȥ��i��������sm15kk��,}��q��Wȝ;�t�s��e�Yq�qC/���0�q��|>��
3������W�/�ը��s�F�"���s��I�oAHI� 8��C�„���w���~�@
����_�(�]h=������r�9���p!�;�H���-[If��w;%=�d��꯵���bmH)��k=o��\���h�E�i�7i:-!mn:`[�G�]���GE,�;��s�yH6�2�ƈs�՗:��I��@�^\�w���OV�õ������<�g?]�Y{?qK�g�H�[��X��&�td�n�[�,�Z�!H�6#�=nݳ����;O��W�U����G4]]�6�ٰp��7��[�aM�5P���B�]?����4�����P呂����7o\�!׺ߜ����ؤ������
��2>8�/p�2�h@�k~ھ��B~�a�[�r��=Pr8�S�e�sc�F�
ӗ�� �S�#P��|0z��'�z��S��)��8aFB�FE	��V�r�J��(E���fDp���U�\���'h4P�� 	�j��<t�$>d3}Cv�f���M�}Zlf���,.��p��j1��t�Y�j�2�lƗ,U������<:�z��t[�%�Y!1v��M�frc:_n�"��7z�w�v��m�
z�ui��dt���O��.3K��<y��d0��3l�Ll؞�Y�ĭ~�bg�#8H7��J�C*gY��_��YKi�n��0�AQ���PiMg-c�����)<�9ܹ��JH�X-��o��w��aX�;�����<z�̳�@)��*��rw��|u�`���l�c����߸m1�:���H2yΡ�ؕ�d��Yנ�E�+�G�Z��Q
k��P*��.�6�O����W�=���n���u��B��d�u��8�<�7�4~c�8�(bK]4�x�~�*x�=��¿���1T��2��Gߡ}S�}����J�X��ùP��@z${P�™��"h^���b�ؙJr����`R_3���@|8~� v:G�E8�c�i�]5&4�t��َS��צ��	#�������5���jQ ��0즰���N`��v�!
�Ry�S(v
]wB}J]�>u��=�.#Cjn(,THu��_Z���	6�q���hh�P�4#J�H�%jt�3�M�)�#��z���z���dt��1Dn~�9�/��ȋ������B��@NV?�p'r��f:�;�b�B�QHb�$h�3�CG|��#v2�y�d�m)�e��sv��w�~٬�fp�~��DG�	�r�0��^Xzˣ����Շ��c���l&
 \�`\�8HHa��IC?������6���:5�H;�l��ވ�4C����&�\�F����jԬ,�|MC�ݔ��/f8��ܮ2���	�.��ҍl
_/��A���kT�V�Νg�~T��΂<`2����Q�&;�X�A�W@��@g��j{��j,�	�s�uuE
����֟���:�A��
8,&���ռ
}|��b0��lFQ$px=��4ddm7��nru"�N:O�u^��x@񝂍��C�G����*�%F�>Tm��?��2.�o��p������ˮ�1�r�\T��١K+L�؜c���n��:8����q�y�N��\Dv�j���[��ܦDy/�*=H	�[0�l�8=���`�D��d&�<����qR�}~��|m?9[�Y
{�H�I��FP��H�p;@���Y�����[D��]j��}�*ÞhJԆ�'v^��6XD��L���V�a@XF�k�<������N����.���pV�e�u���p����+O�;����FG�\E��нb�kfy
z��s��

	X����k��M֊P����Y�_g��#�f��}{���Lh.tMV((���/���4u�X�4u�<�k%�Ņ��s=x�f�Ȍ�ݐ��P��(�.(��q\��+����i}��J�/[��O��k<Ew{W%��҂p�RJ�
˙��$["�H�6#] �F���C�֫C�_c����|=�F�2[�#�\��eyÃ�.�a��nơz�K�9řeN��Ԟe����Uտx��Uw�Ϋ�m>����76�t�O�d�٧�,崅v���2+�׷� TU[�NHN8�W|���fG{�ܘlT�_��Z1 ���8j
�`A����r��㼌��`h�*�b��
���#����ռ��B����j���0s$n�^�7��w�$�Gɡ;�N
.�A>3;M��y��?��zpͥ�Ι��4�aqp҃GF��w�|]��֯�!��ؾ�bv�q8�e�+�)��h.,U~�4]�h.�P4s��)��+k�q�D2�u����ϸu��E3V�⭯�ҟ�f�S��8��/D�]5���ޖ*xWG�j���}�l&k�lnçi��Pv'�6#�������(%��)>q��E��o6U+�6�ŋ�8ۢ��lޏ>���`����M���n'���'��zB-t�/ꬱ����3ik�3
���55��Z	1ao�|+�
őm��
��0$Yə�Oa��1ag�9��up�9Gת+����b��=H߀��Q1h�T��]�Ғ�Q���^��?������s9��ػ��� ��l��B�|4�TN���YBL�,�
g�#�5��A�㉐=!�7~=�/X]W��uw�ZW����避[��Ꞟ�W�d==B��m®�ҏ΋v�?$���
E#
�L�!7���ط��!����T��RR�I4��)���H#��l*�:#��H.���)����pӇ�
źR�M�B���=�ƅ��(ǂ�͵���˥�>A��,�_��2�%�5�p�yn�6/���Mb�t,�L֮���l+�9�Q�Gb]*�D;�
����{PZ!�*��U1���|���s��{�"�3�\�g�������Gχy��G:�-nQg7��`ԏ3�x���Ax�%ÏU���XMZ�&HX9�>o��s�Ga��
��'��!�lü��|�EW-��e�b��bxs��Y0��6E��>�)�V��H��߰}��V=��G~�Yk�h��/;��ۇ��0�{4.c��\h`�5���
F�A��5��Tg�[4��#���S�o3��yuy��=����<'j{�	h�N�k�6�	�@1c/��5-T:��`Y�X]��g~���i��l�p�!��e>�1x06�?�e�oA�s�b���̪fy�b3�@B�߂�Yq�?;�m)�h4s�k�P�����UfW��62��c�>8F�(�t*G�C	ym
s��r�p�?��I��C�Y:ϻ&͜9��9T�Y�-k���%�)�@�|FF�h�9*��(Rt���K��ǻ�T��XM-IP.%�C"���?�,+ˆ�=��	��>�t�����U�gQ���W��w#�Υ7݋���[��P�	��ޮ���'j7��7̗�9Z���I
�S����O4YkDE�͂�B~�`�Ig;�m�����u�֢z�Sg)����r��E܉�=m�K��9�ZD�]�4����~7߉R6Hۂ(��j��i!�BldpӜ^���zz拾�g�F:�qꢝk�Wl�/С��uX2�r��TsB�נ�����ͫڂ�t�}}ƶ��_5�	��k�4���	�A;oH�L�Ϲ�)�z�.�qu���A�z��yx�j�k5�F�-��@�lҙ��c�ڗ�җ\6�=�
���O]9�/�5ڔ�볝�\tO���C�T3�f(i
]�w�P��iQ���w�γ�=J�ߌv�Gޮy���[�[���,��Et&Q��o�c�Â��yb66k���MK|�֋$Y��z%���P��(���^�87D�rK��`��%�5�.�:��	�Ďx=m��n�ً���m]�Ю�&�2G�(-@�Q7xu3%@�p���~н��t���S�]���=�)AG�����A��Vg;��*=�$mz
�-|_E�Z�ˢk�<�5U5�fF�I�j����`�=H}���)0��~�F�,"���N�6�k��"��}�Ṓk���T�"$��mZPc�',�ϛ�tz���Յ��];+�j��+�NG�>K#�h-zp�6\��;y��b�~�9�.m�	�\�=�qrqü�=fS
6�u(����؍��3���#����0����
:�Nz{S�M�]"��`R������.C���r`-��U{낍�z�n�q��	t�x��
�ic+Ԛ:3Y��㳙N��*�a�V��P��
�`�1�Q�b���@fc^X�9�̼���ܶ����jtҜYӂ��hھ����3�	i�js��+\�8Tv��i|�Q<
v��߹c�8�1���-��t�������\1����6���G���I��n�J�:̇�h�X��G��r�+��<�O�|a��l�yxuco���7狿P�'�j{���G�w��s��ʥ���s�����
?��?kL5>4��Hj��v4���l���!���,��c�C�5�4{�ٱ�4d��R��~��p�*;9n����C%d��}�d�A4Q8�i��O�i	���T����gd��ul�U�S���A�q�$.j6U;�MǶ�ۏێ�ۏ���j�9J�D�vAF��b�m�LOI=`�j�f:��>Iǁ�J!�
�6T�xư�qn���̓��S9�ĀM|�!ґ8X)��h�ͅ��ͳ�(����,�ӌ���2����+l�D���3Qɕp�$`�Pt�[��� ���DV��2�op��o%x�Z)�����n�:p4�N)�F Նt�T7M�u`8��P*r
>�(��O^����tX�i(��M4!
t(�>h��cU��<�@��ܦç��$�M'���(��J�׳��Q�܃�<8�Vj��j7P�?Ͼ;�������_��!Q����.h|:B��)Ӓ��xܘs��_���d9��aN=�.WO.�\|�_O&t�k.�".D�p53�͓	6�`8���I�u�����Kj��k/�����wi�U��S��us��U�lr
̥;��ѠMe`�T���B�&��n¦\�	g2pd���[0��O�v�z����I�'m%�4���1}�@�€:įZ���/r
@1m8_.���W�R���lv(F5A�ս���~]*@Qؿ
V�����g��M܊�����:M��ʞQZ�㖵��.
H��f��J�wK�IA��\������f7�z��l��}5�V��z����G����Ɛ�
u̻vߋ�a��ɰ��Z(�S6W�z���7e��k���[j�����#6[���6i���Sڣn��@�d��`�[��}�i�]<{b�N&k��G�[�Q������`E�������k�$|'������GO���R��4:	y��X��1d��hz3T�ʷL-�3��D�G%�Z
��b锥�3�I��陌R�^cy,�3��P!�@�ieNq좀FS'}@4�шÏ~�����*�T(�P���Y+�=�!?�}>�Ю�+�����w*�3�U�����sƽ ��i[�9�a���\��u�We�Y5���	���+����,��iK�\��ʚe�<����z��K�C�&�Hd�bktݩ7<��Gh���
�f�O��fp�+d<�8�Y��X��(�ϴ�s�>!;B�TR@J	vK��U�8�bU�H^Q;O�k�b%�[Q�H���O�9谉����0r�0��}����U��>�ʔV5^����ܵ�����}ecF���mۈr���qLEl��	"�I5��ڦ�fU���2c��W+�O,
���MJ񝁧6���y�?*�0&N�ݚ�xq?�)��>�e�(�	@��qT�Vx��>sjA�i�2W@�W�<K������P
+
�i
���4�(ا����	�
����xA��̓��	1Jz'O����?�<L0,;V|'[�9;j:[��B��خRk�nC�.и�iޱ�T���ݝ&[h��5V�,�R��I��N�{oF|Tn�_|Q�W��>��U����{L�Г�K^A'�96&�E[h8�����J*�X�>�w��yW��+��V���c�*��Y���P����!���3�
��^������%�"��`�ɒ�R������cD@�2�ܵG��5g��L6}*X�l틵�\�"������*����p9������B4M�z�A����65L��.���2�k,0���^�>�G@���@H�ty����Z4iepWt��A�h,8�<{9Ƚ��ǷƶwZ��OY�E�<���Z�)��t#�/�崐�\F7ʔ�B>(���&��6�ld�i��t��/���=�n�>?&s��]@Ν�0Z.3Ĥ�9M�G�6�XI�J�H�Xa�:��C�}��3����6��~>�D��3��U�O>[vZ_�}ס�qN!ʃ�
��-�W� �������
S���Ha)Y���'l�g8=�`z��(bwv�����i:2E�!��`�;x�,����Y ������ߩ����
=��Іj^ǻ��Q�^��_�Yy`���Q����[&aY��Q
u�s0{&m胑*����j)���T�C��$YQ�>*�P����}H��������˥��_�7��!n?Vا(s����O�GRB�X���bG/*󨴉b����E��(��"�lrʔ$Ϋ����dJ�wGp6���
P�/�#j��mtC�R0�}B�j̣R��X�v��I�>(�j=���:E�C�t�V�:O[h[5�"u�E�3W�.
f�[eܫ8�P)�e
�0Rԁ��d.ُ:~}����t<)��/Q
c��O�B��GGp�<��"-G�-b΢�y3�b�#����5�RPCk{d˚� ح6�d��]������L�d�Lu鋶
��LCz�Ӯ��IYs�;�A��@*n�yڢ�����Kˏɩ���E���W���eM����â��x�[�*u����-z��җ�rizH>�������2$�����=�_�����j7�{�!�h7Ύ�|p�fs%9LA�Q,��2��WH�(EEug��&�/�
$̃cm$0^(K_�C]D����i����+�/�TR�hOJ?��N���ޛ j�;�쁳�#��ISm0Q�4W�����Տ��5_��fd���"0�ԏ� ��~D}��R'��k ��GK1(���_/�T��F�Ȥ8��>��Q8����m�.m���s��t�Á��-��`wZ�a���x��x�";ͯ��2�o2�:�h*4X���-hW�3sn���P,ɞ
��"ޗ`7�Nw8ɐ�D\���	�(,f鄝�	��I�M�|؟��ն���k��ÿl�5�n�v�xL/L��M}��ݻ/�Е�um�.�u��m�d>�Nh���&k�Ե-h���#�
+���q����s�}v.��L��8�c|�P=/2�,��T�,��\f��x���P!:*���}��uL�v�yj{C��[��	���^�܋�����lV�͛C���Z��k������9�~�_��+�2_�ʗ����7��%�\~�N�V�w�|�:$^�fH����-œl6��[D���n��i�D�>�=�}4b��=�U{��x�C��u���:����6ݨ�18�=�Z��%�ܓ��&��?i*�V�߻"��z��,K���=�,�5keb �PÒ��}aM)d��Ő".Aǝ�2�An�K%
���%7;��QΤx9:�J'���s�������9��:�(��w��̿s��lt�W�����N�~�+lA�ڏ��m[w�7���7n\����W<9��-N�߹t���i�?��"�;�i�w�[��;L�vP�2�z����r�g�k�cl;#��E�*��b��8�*�<~h!������:�Q�@�qӼek�/��#�@w��ꪫ'���	���r���*2_�2mp�pm��"Oގ�:�wFgR��ۜ����������{z�h?U_3�������m3�ؾ)��[�_�.��/��d��
j�����G�̨�.��+{����7g�|�6w6؟>d��5��;{O"�-��<���+�jaW2�2�����p�����W�a��g��y6&�Bh��I2%��1���S������*�[Ϥ��F��۷�%nwT��	Q��Ķ!=����00!�dP��$O����j!%��l�6bd������[6�,6��`^H�fɖ3V߶[��8|\��M��Q
���lƜYxj�?KO�3��ٲ�%)���)JrGƼQ��̼)���2c�"����^�–�;��@Y5��u�!���'�h��VGTi M9��#�(ן<�4�s�{��������@�e�fQ`�Gy�
�8�L��"KB3�+��fOx����_�c`=C@�d�-T�Oj�+�Jw�]��f1���򉠦J��� ��-�L��[,�Əv�u�&}��z�)Aԫyz�X߶"��M�Ww�P-蒺Mr�k����
4�4L�ZvɎiZcK���U/N��j�a,�a����!"Y<��]�K�����-��������{S��&�,�-��l�5�V�(��DSJZ�������U����+�6��U�Ԥ)�j�ȀMXju5xk�O�x�kC��f���>���v;o�Ău)O[���H<t��_X���4�i�+*�d��Ԓx7)�l��O=��R�|O��h�\��ؼ��E�RD*c R?ʇ�﫯��"��bL�+n�wSB��IZ���^��ģ|��r#R�e���A�>����%��rJ���r�ZN���C�Q�n�?|��x�����_B��*k��gY�n��3:B��4Wͤu�Q�������.�R�M�F�2���>��8�G�3J<ZŠ�r���Vŗ�Y�~P�9��w�;�<
+�iչ+�5�D��D�hp,;ʹ�j���fƼ=䵫9�� �3�Ƒ,�@�('h:���Ƌ&m��TkP�q�8�󨴱�!�ä.���#��Q�{�=����=4��V���#��m���x	�_�)If�C�#y��F��N�������
u����Q�R��PQ��y��Q
�u�:�]�g�*O<�j,0?��g`O�N\Z��\�F�k�rIݝJ%QM	$%G�/-�S_hz��t�>U����֧�c��'��P���fՅԭ���ں�o�>x�,u�����P^��"���������yXdc�i+�Y�_'�z�����6~(+q$��U�;{S<�^x�Gn}���ou�vXt%�&3`�.:gA����'�%��O�0j�@E�w���:���м�jd���q�g��e��<TCB=�nҗ��Cq�+���d������)Ӫ�L�Z��&��ίYْ�bv���sm��������k'm�xl�0�k"���ȓU��\��{ӲY�zY��.T���Yt|�"�������cK����:6�.4L�S��z�D&D��LJa|��+Q����h��_�}�e�Ξ��z�_���
b"	P8^����Џ��>�����4c�&ū��Y3�]��*��tI�*�
r6% ���&A�R�^3��$�p��,a2GÇ�}O>W4�7�6Ո�n7[�Y��Nq����O�e�cu/=�cm:&�4���C�o��<���}��i�A�O6�ă�N�Y�����m�:�̲f3�J�"M��K:�Ek���:e-O��7�
�6��;k�h}x�?�1�/\���g^��y}7�|�4����q���'�7o^�� o.�Uξ&�d�5���v��� ���3�_P� Mp���Ĺ�V�jl�U�	��a^vqǹ�܈\��?虽쪰��:���Oo���b2AL2���9�zXv��Q� VUq��^�k%@���$Ǡ��#�o}��Ts�cFW}�$y��F����$y^2:�����l4�/�m�a���Խ�&�o�L�3Ѥ�N��Iq�!�#��ĺ~������N>�0=�ٞ��bD�A�w�	���O��h��C���Tѡ�
�����֩F�I��.��M[�V�#�Œ�3�z�e�{��EvceR]�
�
�ecsER����n��`{ah��Z]���'3W�0v��Ix�V[mQ�8��f6�4�Sc%�Wr��F.aR�6�a��Lv0�n���=,L	�Z�BU\���]�a�JX��L���7�e銛
ljQƀ�c��H�j\���}MG����ޛ
�[X@"�W�dNS<���+�������#(���;<�"w�~o�myL�'�D���pEb�Y?�~�{{����,o,�RD��(J�bC�>�ܶ�_�dՇw��f�f�s�ܦk3�ގ&��~�L	�=�$&���Cyd�"�le��؄� ��tQRʉ�@*����΋����7����JՄpC��#5-�V�g�o��!G�i
4�&��N�pO���o޴խ�9�k�'y=JS4���/�;�٬����v�Y��3M�iB<�
���(Yuv<�9_�m��@|zU��
_<'�;��^;��#�b})�K�yw���n����o�%���6��,i7�-+v�(�k6i�c"Ym���=t#WRT�����m���R[����na��<���j
X�)G�VX�,��gB���&blц�*�ϸ"^(���^�Bk(tǒD�>f�ʭk��l�W�޼����(�I��d�r�U��U5=^�Df�j}-���:�$r�p(��<M����zM���Ư:|�%7L�>%\�x�+>w�W�؄	O��u���
gq�/�,��W:˺/Ɏ��+�����y+�&��Lo)�	���@�[�@e�x���b�i�u;���:��Ykw�[50��x:��r���s�S&_Xx��f[b�T���:7ak�}���Yx���<5����r'���(>q�-��p�r���o��ɴ2��H��U&�I-K������m�h�ɠ\���YF���Y`��|fM0]63���B�w5�%#�'iH(�8�[*�k�.�Etc&a���Nm�V�JQ�K�T�M��b�X4�?��#4c�왓Q�,<��v�5���?J��	[��J�s'�ڛ�iӒ��Ӈ�C�>�䶵���h��Mz__�m2�7��b�2�HC'���
 j
,J�N؋����
��Luq�M�Z�W7��'./�^L^�DL���%S�	������n��4:O�W���^�o�f߷Rпl�q�{��\�PȖ叙y4*x�Ba�v���� k��x@͗qY’.3�HQ�F����|�:r�Ɣ���9`P_�SRL���
6b�|jAn~<D��N��"�u���0��Q����\�� W��u�ާ��fn6�oH�玤�N	N'�S;���)̓vG�vejO��XJUP��s�p�����s<���׷4�����}��a��m}S�j�T���Y�Cheubm���20�~�t��'r3��:_H7��M�笜�Y���rN:1��!-��z��\�M�a��P}���l��&pq�6�*_U�Y�IG�~O����_KU8��FT{��t��(���av"CBf���_F��;Q��n�qӳ�B$MU*r��g,�^��GD�,I�H:7FD�	�Jl���k6��c'�]�u��;��&��Fb���F��iB�"�&͙Myk�U�����P�\�M���]J��~q��Z JP�$5K���?��1/,#	K:I�)�D�o�Y��:Mg�!'�S��$���M� }��Ê�N��~�$��Ū��3�w��m6�]r׊s���O^�
��ll
6�H�{R�vB����o���Lg(�i��Z�hVd��˂��]�w!��r�<3��H�/����7Cy�Y�N9���Y����@��Lc���eY�֖�Y���$�rz�2�d��k`����8v1�gI1�"0��k�~��,��c�$����ty��h2�^/�sv���骩m{��T���UM~{�W���Ï��ɿm���k�U�ٹ������?��΅s�4a��:���Z�D�g�;�@�V�ם�4����`�gلw]x�/���g�o��L���v�w�'v��ڟ��ڔ��y���K<+<f�>�Ǟ�����~NF�=ΐ7�.'�h��ٖ�}�t�)v�SK4�Yԉ����s]kW��N��-Я��K�`~k��R�-^���"9BF%`%5��S'$��^\o��;��NKM#_5y�<C$(V��*ޖ��Zj�����/��IV�Z��et�M��k,��x�C_m��{�ۏ\�ʶ�k@1�R�+ې�.����臬������t�и�����l���=C;�x�|^c&�a=w���9�9��p�t袋�Š��7���1��R���1@e��a�����<�3�w6��Lj�(
~���n0K��M.��
�E�aR��I��W�1[S���,9p'��Y���P�M>�r��֖
�j����K�g�M�dn7Y
n� Nl��ݮ��m�G��Y��N�̂0�9E&W�K��b�K�|�ĸ������JﱵWr{�ݷ���kQ�cZ\2�R�؛�O����ۡ��_��h]��Ը��y��&܈V��;~��M��/�׭�n�߮>�_���[.��/m�2������A	�q�J���{�>��L���M���8�A��f��]��'�v�HTUO��μ�Ń���̚u\�eA���b�~�u��:�y���nw��������ݥIٸ��$j[Q�����V*b�聇nE�C�*�ZɭE�o?҃�&k=�t��#��=�K��T�rf�W�Q�jJN^yٔ������Q�W/����O��o�^�rr��j��;�N�M4I���`0wϚ� _���ߜ����!Io���uz�#�3�tz�i
��k�j��m��f�L�'��k�
^9�u�Dћ������Vn�Ǽ^����߲r��n_����CSC ���"�6�Gi1#�W���0=p�'��]�@8z}�Q/
F�"�̒��&=�lF�w�d�F3v1��F�uDFY�V�'F���`.bN�u�䡁��V�l�|I׀��ɷ�*�~���)���Z�*�!+��u��Qv���C�M/��vԂ.q��c���Ys��,������wD������iN6� Y���r�L����U߲�[cr�c�q5)V��!�c0�31;�B0ތeG͝Ua�V��NU�e�	�(��;�;��|d���;��_T��A"�?/}�M�i	���;]��w�t7W�Y㰛�n�����Ng��h7���E��B��7_R�E=S�x�V�5P�s���m�`�ržYa�������z�Ra�t��	�k�����_�F�=���dVٿgC��j��߇%��T�}�[��n.�Z$��Uq�:�ۛ*<gg�n�Gh�(U?.b�=Ђ� z��3ek�
4��	v^�QVJR�T����+N�1�E�y���D���;Y�C�+�dN�A݇n$9�M���Ay��hpJ����=^�蹭�%[ҫ{���\r8L^Rڠ����g8�ޥ~�a�d8U=�gP��'�1�.#l�
��=ΑѬzR6��np�~[�E��fn��G�+y��|:���f���E˻�~E׶�M�ʟ�]�����f�}jE�3�qMOϚ���{��d?]u���U?���#�/;��s�~���򹃫ؚǀK��-�6�B��'闘̵�L��gc��g&�=��G��'�
���}�S�唩���VC�I�s�y�����RCM�)�r�d��7&UC͝w�4�N�sc�a7�fl���]t��Tw�ݵFè4�o��u��֍�2�B�>#o7(���J~j�E(�EM���-P<��n}�en�pt^���
�^<���5�fͬ�>3���/rQQ@��Wヌ�����(�Q��Um��)!s���G��7����ꜜZ�4���	��…U��l���ڟ��p�d��:�Cc�e���'s2�E���;�u�*�'����$�]"���c4��}�
v�zyDz�ɨ�n4��bTF�.b4R#�P*��~6��t�jt���ŋd�ۥ�y1W!�ןD}g��lْW_A�4R�/�u|��]���P	�Ǯ~��:t���[�����94{-�.�ǀ���y�A��0�� �x��6-NMv�M$�c50g���hQ6����1���B��n����W_u�s��;B��E���g��}\���"\�a���Q=�#���ͧ���վv����1�ŊS�Y(R.i�[��9��Jd��QӜ<0@B�Nya�)�j0Vh�2쬄�s��O�eP5>I��~���1!���-�A8ag�j�Nq^7�6��e��/�쾇ݳRuԢ�Z&�U�EJ��l�p�Yo�<2�"_���:��97�9f���阎���.�!
hI��4
Rk��Cj�G�Bu+b���tQ�P�u�/А1��TZ5�����V:+�zp��8��j����y\ST��!�zr��u8Y۸$��Յ�F�uFY���Tj
+[k�j`�GŦ��+�yl�֦Y닍�4R����,�+��h"�)=��U�>���yV�˕!��V]�Z�8G_
jW��p��H�� ֬Q6P��8=w�Q9�]W���80��9���{��z$�5��p�+��҃D%ꔒ�-��R`5CbJi��h�EI@����x�Q@��-�J����h�n��א!7���#ם��Y
ѣX�����2��M��n��Ɣ���i&�#i�x2n�B��~��#��}2n)Ͱ�.w��o��B��(��Y�k�"��5n��G
PTF����;�N�Q@�(�奣$���%l7Q?��lR��P�fB!w�ҤJƝa�îG�ٍ�J� �vK�g�WOӬ��L_�$��t���a��[!i&�M�>J�LBf�R����%�ۣ6!�o����"$�,J�{�l2"Qo����#BQ'!"#����H�:�.	o	��<�9*a$
<1ʔ/-
᪠(J&���$�
f^o�ћ�<o���n�!����A���E
fl��5
��H�<�o!ͭ�(�p�N��tH¼բ��.�a.�&3�!"I�:L�fsZ�0A�:�A� RE�E�b"`��\�`qbѦӻEA��lr�Zg0��_
�X0JX�	�Щ��9�1��"BN,�b�q�H/b�I����2&0�6�IM�U��%U��	l�I:D�Y%�Y�K�xí�AЛt�PG$Lx7��0lĤ'vluۏ�x���!"Io#�E�NF.�`�E�b�Uo���˘'�\�y�
����~ّ��$�(�d�Fnd3Haz���I��+F��#�&�z��h$�Yg�u.����X���l��b%��N���[/���*W8����BV���0f�^�@�`^y'/T�z��:h��M�#�$��<E�H,0���A��o�a�,0�(�i"!1”_E�63�;�x���Mr��X�v�uaQ2���C_�yY��#"/輘�X�Hp#9x���1@1@�
6�	Z ����m��݆�Q���D/��.T;O|�`1�e7J:�^G�	:^��&#�a�A��$è
:d�z+
a�(�~�d�D[��i��F�XVX��DX�F�'�
:Cqs�����jӎp�q��2��E5!K(����K�Wk̙�g�ط(����h���P+���R���^Q���-O˻�h�@�&�l�o�%<x��j/ޅ��G6R-V|l��ht��iL�`���xlhY9��U~�S�㨆ӵ(�`*�J�|�u���(��xn\T�"K��L?�
gKl/j����P�[�&�cr�n�l�*�oEŅ��u�̬۝�dU���F�W
5�\�1�v��C@��4P�b�|�M��e�^I�]%�S!W�}�`��*�_��U�<���(�cnu/�Xxh�w���
���)��k�0T�$׻Z3
^�^v����1e�F��g'P��JAR�#F��,+E��Y�@�'��C�K�_}B}�~:@ŏݏ.��g2��K�.�L�KZy��,��ߍ��6:&5Fs��n���-Ț\%��۹I�dn
��[ɸ��@�i��5�]�i��v�$��t��W3�L\�	C^\L�>}��6�,����+�7���
�g��2�.��;����H\Ұf��,-Jǒ��Ew\��B�wjǎ>�fM�.��.kl�Dj�.Xv�}����mW\:5֔j����K�ضV�3�B������S��$l��&�ijD�YdIO�~q��!�rW��)\�3�
H��.iT2�R
˔D��'�i���>-�(*�Q�����o�c��$`������g�#A��ꆘ���0�����ߨn������7.>�x��;w,yc�?�Ơ��3����6I6��1�q���	���($�����,��Njwܴt�r(y��h�2�l{s\p�@5�H?��]�J�Hʽ���<l��n�h��'�1��P�mϣ�So���7i��$��½݇�����a͙�~}�Z}gP��$���6M��h������M_:�~z�{�dZK�e���:s�/޵�bR��+ʤm��.F_�����-m�AE�L��ǭ��s;�;��\�激��q9��:��L0��hֳoȰ�h�mS!��S�b���f�D"N��� (����(�YqG�"�Č��;Ck%�mD��D�͙mvKa�5:p�5��<p��Fi͢=Oӛw�4�->�g�Ihh�h�{�� ���e��f��
�zUs|�+�D�W��xst����-�}�"��<;�p>�#��?���X;$}�u�pȖ�ow/�&�ν'�dޒ���M-�3�g�֛떤������$y���I��E�uR�
;�5�It��Б��f<�n;u->b��{g���-:��6ާ���>�k�0ڹQ��s.A�,1��xB��U\�tBBA=
��)~�3�.{�ҍPa�~�OBP��:s��QS�=��:Uf�s1�K�ɗM
�@����P����s�y���gQ'�)�_�@\l`�|N�1�6f�p�p3��,Y��,w�Z�1��~ט���On���oy�'�Ǘ�lfC��W�?�Ot=��Kz
����(U�QC��dP��n��.<����=y�]��S����d�2�K�Zu���{�d���^�&P�^	q��h��E�AakF�Q���7>�<�~̈^�=Qby��A�s�X� Gr9�A���ժ���`�	����Ε�Mʆ�돱��,����,)���4K���ݑ�Y���Z���?0J�d\;|���h��~��ki��?�e��v��宰�����K��v��2�)i�9J��cj��~�Uivo��	V޴�ʍX�~�eC�k�ˆ���Ɔ�K�ڰZ�n�߹ZX�ko�n�퀭���:�h7Τ�����G�+Ș��}I��]Sfn"u�!�`*��ئ(E3	��M�N�4���j�nRX�M��Gs/Mtb������RS���{i��+�-��v	��a�J���u�3�Z/�WS9ZK��]>�Ɵյ�68N^~�i�>v$�$�&x���;�ό/n�Tu�������
�_�p��d���R7���#ƌ��]��Kqk�^:J�1�)Ǥ5���$�2
;�ʗ$X��[���Z(ޜ�h�J���7*�%2E叙#����z�g��{��hLK,����M�������#�ǤOkdւ�n�n��V����Z��Ħ��پ�[���ȷ����kV���%��ʂ�:�@S>Զ��}��S���~�.��vm[k������l&�ż��V�L��s��H��uvM[2���/z9ն���.�S<#y\�6 n�G����fmȬ@���xʃEӻe���iwX��D��v
[#:b��L�_�hkm[-�Nٌ�E��Z~�emM����%Y��뛮��%���Zbt�h%:���9}6xn��.��^%,uXF>�.1^�x��o��U��Q��O7��������}����\�1�B�,53V̒ׄ���'Ō�z�w6�7Oi�6��o_���rU���qp��,�1���qOi#*�n�;6������F(�Ny�'�+ܣcT��q�<e����LA�"qe���޲Sq�x�LPQ�W��Q�W�y�h�Bf��M���(��[�vL#���ۛ�Q�}�;��Ε��˒-�$�glY�o+�s8q�N�er:��@B���p��&�*АB�y	�����RZhMKy-Gۗ����̮!��>������3��3�3��~x�h�4[� �A�=,O�c⋢�rx{�+=�.z���f�G�A=��SM�ϒk߉�kѥ1|���u�g�<D�k~>�\==j��=$��rR3�,��xٰ�U`B�!��"LQ�� �Jc@(��{˯��F�/�����4��3�i��bM6A�
>A� �0Z��������(�	��zc��d�I
Q&������Z+8L�T�W���&�� ��a�Q<a���"�*F�S)1�^T�}uМ�5`��-q'6nh���־�ڻ�O׬��%��3<h��%r�ܿ�e��	:b��
VY���z�l�N�]6��p�/oyiOc������5x����r�M��{�>_�ؾ��v��5������>9�X�ru�ʓ�3�r0�rd���e��t�|��¶����L�d_���*�5�hct,g�}��W��i��\�<�c�s���p=�i�v6��l��۽�N��8��E�߹�����ٿ}aq̈́�s���+Wߚ
D�ٶ�D^�؉>[DP�jq\j3t��h �d[�)��7r��h����UW]�jiK�97���
X|����/����>g],p�K�4�Y�W_�ځ��/&���-�.S���0����+���0:��A��H4bc���7o��|~۶�F�y�W��ub����^yV{1���
�o�8�����S8#(�緥~���w�޹�jҢ����6��ĉ�"�h0P�T�	u)�� �$�`]+�E:�E��q؎�W7jD����-7�(3�uŲ{�Q�l`Y��$����OC�oɊ���= ��;h�>���E3g^tP��e����N�B*���ʘ��!x�%�	�֙�Y}IK %�ep��H�	�ZR�́�H�+!)�ʵ	*	1B�1ˬ�B`�>� &�)ç��	&��
���)��,~�)|H}��ؚ"����od�A��[�aO:)�禓�G����wLr��(y����ļ��C��g�Q���#[U�N��84��~��c�!yz��ݰ��ҔZ�3�;z�ss��.�F������M�ؾ�1F�SI`A	��4Q�ByE軼a�"�Oi���P��S�b�nByḰ��XK���G�����`SVЍC/|WM�߫ʪkj��v�!�:�|uQ�(�U�Ϝe׷��]N�#h<;�����v�U{�}���f��j�H�%X&?	V�u����~���V~j����6���A'��MY�v�M��!�GP۹re紳�� ����D��k�����/�s�)�k�q8vI8��#x�
���G,�c�?��;_�?��!��sy�ٯ3��ηw�>w`����||����t���u�P~I�����hh�nE/�&�j��y+���ٸ�uT��S6�o�o�O�oh-N�p8ޗU��2$�u�]������v$0$��
c���߂��S��T�6��h�Bڭw�.ci��[����ҙ-:g������<F�=�*ǫT���9� ���r��%@+�2�u!t�ޮՒ�2#��ލn�A7�A���YQ��Ⱥ�U���ax(�Ę�[6��b��œ�8���{`.�92q��+vK��$	2�+���p��*~M�r����Vs\IΤ_!���j)p��j�f�]_^ș�P�G>��*�K���h�q��{F�A��
�lW��?}�'�M��R~<3.(�[v<�QHPC����c
}I�br`\~`8��{�;N\�w��Yu��I-��U'N��y]��9
��Kp;�+��I^����^�V۳dv�9!Ns�߁��_倻l�1p�~�G��� p�F#�:��:ԅ�[���	H��˯�����쀿�":s�-@w��;1n��3�+���U�&���97��ϳJ�:���W���ja�3�,���)���a>�� ��'Tgx4J�A�]ԧ?21:��yA�c4�Qd�8�`��b���4�D�lu�*�l��.]�&'� ��N�Y	�?�_EJ�OG�#�y�n�	^��TA��/UB
{d��Ȏ��U�}xX�1r_i}~8b*��=�^]W*s->��K��d��fgQ�U�(��s,�Ze��M\�����]2�)�1
��$l!?OnG'o~��P]h�꙾V�'���E���6Fo���/�q��+Z����jz�*�S`�O�Ɓ�| M�U�a�����{o���0�3g��}�(骪�5�J8��+�5O�OWU�$#��+�����Z	�J,�2Y��i�n���>Ŗ��X���p�'E!��4�l񺻜��i��	S�(�߁T��R_ʠ�̈́�$^����ŊM����O�wޯ,�cӊф惞�\I�`�T)���&IX��3��W��
Sv$F�ݸ{�e�1�fH�ț�aw�(Q �\�9u�\����O�x���7N�Ѝ�%��hۑ\W���TT۪��˻�Um�ʂ�j���r����S�-���kU-����n�E�*+g]4u�,}���뮻mf��msM����X���9�U�uu�UNGQ>+���U���UG7O���(��Y�A!��9ې�#I�%�y���\��gf<�/
��Z-H��L�HP&O���E�Z�:�3.&0B�}�H������`n�(�.�Y�2�,L�~�]��Da��x�Q�`2�:��6_u>�6��)+���{?�D�C�<���Uk��mb��~�c|T��`�ᾮ����&��
>E�7�"B����1�����;��/��� ʤ�A�$v�Bf�������Ytج�G_))P@	p�7�:�z3hfa2
������:v(�^&��m胍���ɛ�7Mi(�&�+�;��v�v��&����1��S���	{��\ر���%���W��[�7m�nYm}������5q�oqQ��ˊc���^��nBq]�dZ������CG6�\i�9I/�����`��b��}��ޥ7���5!���pa�r�H�ٰ�)
|��\����n���@s�؇Ӂf��s�޿j��Z�V��+m�#~xd���	���Iq�|Y�;$���`k�G^i[ي�F�T�X�
*�Ql�N��+����xD�Ց������-M��L���[J�� ��ϧ����},��i.F,2"B�G�щ�����0��~�Ie�O��Ö��[咛���o���}�T�a>��ľ��/���o���z>�E}ʋ�`v�z%5Q��l��ҥH��+�+��l6g���S�Ô|�B��h�8��ڱ�t}C_Ꮐ֣*�=��d�[™��M{�W�J���fw.a4��4���D�o��*��V��VA�8�sP-��Ҟ�}��A���"�
�@�"Ȥ�����t0���+|�|E�4N��Ł�ݓ1	�9��)*���Y��Ѷ����QoP��@�	�J�2��::b��?2�H���ϴ����3�Y_�n�x[��b¼�Y1-��M�ҧ���i��.�#?<���e���n��g���_�+�w,��1���?�Q�`���tt@��܁�
�w|3OQ�������ozi�/#����@ :�ۨDl���#����w��w
k�h�i��Sy�I����M�@�$�I��g�QC�3I/���Iү�RО��c����}>�\!��Б��c�k3Fʷ�׌8'�חe�d($lٷYS �hC�:Sl��i�,�ɯ�䝂�<d)r�$�S����Ib��T�^K���p�+Vu	i����A�>F�i��$��柌��t���n�_=���Pp��T
�;�(�3V�{I�D{��iEZL�I
��sҢ�c����"3�[*8#��^NG#�c�`4�cCf4q���&������E�:��r�@B��$�=��D���M�RI��'���04	�'yP^�?R���xS^�3�Ԡ��j�"�����!���p��sm�h��g8�����G41$�G>Lx���Ny8���.'R�ԇG@"�L��C�8S1�I�.u�ߣB�G�?>�����sj��6�خ0FƆ�{�1�7qD����X�SJ�Rʳ�R%F�L!sM(�~l^0�������a�v$.��X�V]�Υ��t:�J��t����1�"GЏ�e��C7�aR.#*�f�E�|[r���X�\�p���M�[�\c�3�����`�Z�*�؇q�fPW3f��!�u������6�����1SJ���rm�o��XQ�N[�1�c�_.ʁ6�a<������K�#�QGRs�7�gc7�P߀s���ޝ�to��s02z�r�����{V�{n͕�{6>]y��T�Њ�X����(�|�'��׵�h����%"� ���׫��{�i���`./Md�!����]Ђ�[�x��C9w�<�X�c�pKC�a��bP�#lm�Пur�8�/�^�W`���Mfs��(=TA��{r���\�X݃f��?8��:4�g����d��<�Pm#�4Vo-Y@PV��p	�׆9�1JȺ�C�F?��!i�&0���I��SH��H�o
7A?�U'S��C]�
7�4���O��z�C$���=*E�L��@1NfY�oȒ�:4�����#�}n,�uN���\}Za�gi���~��@S���d�&l�'�Y��p}�@�&:y�0�o�)�@���}H�U��q����Ss��G��|����@S�
��$q�Os�I�#KH�OsY�d�Y/�R�����&5�@�ѩ�Ff����k.�`����G뺦��Ÿ~%�0iB�7}�y����1_��w�lᆬ��q�_�M��R�uŐ���p�t�����{��JH��E�2#�f�,��t��D%Q}�:�0�Z`�1��
b������W6K�+���b�d�
f��e�+7�r�JLZ+S�!�}w�P�3�wi-V�6�u���o�+6�]�
�`W��d�d)���P��L �#,{yi��*�+��ӕђ�����	g,cʺ9^V'��0Y�2����[��g�?��)M�������~0�9?8�21�����^:3y��+�|�W�#�ܻ�oط��
���{^GǼ�?]�M��=p��K�W
B��K�捋fljh9i\��	���ȜE��Κ�Ι�v���ÿ+~긇���}�$���9�3&�E�4ɹDR�u$���c���<�a!�;���Ă��Ȃ!ŕ�1/嗋X�v��`�t�K��e�K@H���2؅�Ѐ�8�6T��jLeˍ4�T�,�	.��7:́�b���x�*GASt�=����I��,�"���G^H�Pu�e��PCn��A�	�G���W�fD#��OR~^�e����*��\�����NY���LW|i��=��<��ѵh�ώ~<�h��o��Btt��U��]Ns5x�O��|�2�lm�6h��ݎ]7;��S���.���i����ZU��\W9�?�[��ڜ���Uj��u��rl��!�.������D߄I����D1
�'�G�W�<�Qf���BŒ��*1S8�)�Z:!
)QH
��I„Zu#��v���Ro�o������ 5��\G��zx��dT�f17e�E�X����\9�ZAm�vP����{�Lj�	
��t8/��Ҩ���9��ӥ��%���}�����	�{��_�<`F��=�2!���1��������ʔ��ۢ�n�|�����o	v&F��H�/�~�_�:$���n��Q��$�ǟ%�~��:���٩2j��2�A���l0�l�Z3�q�єɢGĉ�k&b
����i[���cu<~��x����sE��U@}�Mt��nZ4�01yS�Z��&�l�^}o�_l
Ev�k�����`�oM���M��`�7-�����҈����lXd�m��)\Ԩ�HA�q�j+o	�ƥM�,Zq�O��,�eT-5�ڂ�C���$���(*��9l�R�:��j���j:��+�=����ҟ��F���k�*WE���pIk�� Y�j.8��J�
����
:S�5��G^М��F���m���.䜼����CcT��@��%������kKH.!�%
��ud�)�kAA�T��1��x�7�*�\�y��p���g�
*����5�U�ftL���1���ń��Zm�I���j42`���W�Y��c�D1��_��-����D�w���|㟥lS�2�4�B���a"
�OR��z#2���(Klq�h\X�*I��_-�4V�.��7&޹kxp�����1��*{cG�I�	0��ݻ�
�q���M�e�O>Y��c��
O���*Eu�DmO[,���	�f<�a�#$�K�0w �>�s�	�6�W�X�����6�����b%���֢Bۇ�ߕ"l?Y�k�Z��&��|�l�
��!��\I�8�����
�|��`�&��1���1�P�/��IK)����){@'ZY�hv�&��g�
@6`�	wE�&yI���IJ9D�I=A���b̚�|�/����H���u<��R	禓���̘*���Y.�F�E���vP�ߡ��<�ݓg�Z�E��=tL�T�"&ǣ2=��"��ǾG
GL `D݋g�9��X�F��Me������
8�~ErnE�F�*�Mlu|BWY�Bv���i��J~{��^*/m��*X\�wt��˥e���R,k��T��$�ӈ�� �t�R��6j����<ڭ�'������E6���ZhP��q;��q>D���@&� ��찇��NQz�^�~y�
��@^,,�Q��`q�q__X(.l�{^��/�/T8 �c�#*b�i����&�O���a�S�	�l"y�$�&̲D�s7P�u��
=j\.Qܑ?�҆���|r���z�4�ʻ�}��ǃ��u�fůs���fB�Q���B���Ev^M9�4�$?��8<�"<.��L��3�j��L(L5��FV��w߽wpf.p©��M�n�c^��8(Uν>�n�.K�e���y�@��{SF׆�{�`�|���73���7K��ݒ�pȕHd��Q"�p�(@dY��T
c�T�YKKJ�+�V�O�wd�C$Zѧ�tH��ο����n� ���w��?�&i��G,���
蛙�������|шD�>y��A�-@K��#��L����җ|sĩ�i@3@g�M��/<�X��6t��\��_���e���y�̺�q�*�������+j�/������2�����<y?�1!�Ak(���+����݅b�������	��K�Ev��_��X���V�!���{Q�:�_���׍��u�{Zf��u�>�+&�Z=�9s��{�]	F�l�Ǝp7�@��Ŭ�7G��/Ð"�^9M��4%?�}e�%C�i*�fFi�i�&8{L�?�p���G[m�����Xګ`d�l�'k��&���cb5n����cd`A0g�	-������X
R��Y�<��z�ŽU-���̞w�'�
v�8�
j�BX���V�����>�ג�k5`Y�TT�j���,O�Ƨ.
�f�ء�6;*;��Z�dNywM���"��0ԈKՒ4D=#���eL�p�E�H�6_�-�8��(�u��wʫ���%S���$��#0��z�ޓ���d%NQ��o�c�[:��@~ƹOq���S>P����䬕�}Ǐ�{�"�f+�wm�3;�a�8Z�x����
9�a>�n
���
f�|��}�X���<C�;�>�ϓѸ?G�c�"[yg�����g�Y�Q�@z䛒��K=�"�aU5v�:t��o�p
��I+<I~��}���*���2�E�$�Ď�K��ڿmO�l(4��{��_ծ8��L^�6�i��4��K/���Œm��9]��e`T�%*��������~�?"bH�)Ԣhr9�>���'���	/N����AO٠#HzK/� �]^z� 1Q�8��0�)�]��h"� ��+�_Ta�U8�i�cm<����ǥe�}�d���@ų���Ac`h9�NQ�S&�ݫ�M���XK���X�~�����JЃ͠�X��)��=Pԯu<�u�LU���A���i>M�7�:u��&�e�V�b�{��u+9���de�n���W���jdS���X	6>�A8ozt�+�$�5�Fv��_��iN�&,�����>�V�2��
���7>��#_f�
0Z�Ҭ�`>�&$+H
кe���H�!oڇ����և�h���N�+?����]����¿�0Ck~��\�,���������?0evg�φ����
�cuH��`�s$%��C_�V���@D��b��Q���R���Uͫ�YA��$|E���{Z|u���a�ޡU���_C�Sn�n"�k� ���ǥ�ES��ʇ�8��A<��vQ �#��\�W)WI0���#F`�w�i~m�!F���Q�R^�ȥ��H#�|ap�m� �#���gaH���F�A�>�
2}桫��j����>��M_d���d2���/��?�(�J�t5X�O�wN���n�
���r>-�|<��+��> ��z?=y
W~>����<����W䯀������\0�gj[�y��c~޷��CՀC��C��<�9O�E2VnK+�g�j�2*��j�~�y�\'oޱL+0+1{��iu�W7*�v���o�ܨ��U�j�Fc=��|LƦ�~�߮��e����˴P9i�̫���ˉ�~��d�
9y��r }�u���f�**�?��8��?'a"U�[/�͑zyU�@��ʙ�p��y=�K��.��۳�H+9�ې�3۽��R�NgQ l�]�}g+D�d���3E�
d�٠�C|=����"�猖���D�$����1���K��/%���c�io&5�O���p�F��r���r��re�+��9�Sn*���Y�L�I�D�#�#�@	fq �패����a�#���'��b��}=�I�\̮��'�
Z�h|,=��:=(��T"����)F`E�E��V��j��,���Q��|�FQ��_�/���a��|2�r�K�bIx�X��^��b����I�&��$J�t2(i��]�NE�Wؗ�,�ޥ���x�V��c�m�pF&+a�)
�����z؇d�=�>���>1F_9�=�!��~S��`�����;{�L��|c���pn|U�^;�-�.�߄�m���"��;�aX�(��Ȑ�1|Y�Yz�_-�^U��{����3�u��!��C+Hn9��d>�)Ȯ�˵�U�I�ͧ@E�$*}���*�~�� V���9�_��X��AW6��Я5�D�T��@BlE��M��+��Ք��d0X�v������mRf�Fu%�T��c^�*-q�)tS9岠G�)A�o�jYJ����}A�8�I}J�J�e��<Y�s�����\�����X&Z��?�kUY�Q2�*�?���q�C#�M}�;�x�~Z�T2#�h�n���o	��Q���E�^y =@'��\�]��ce}�溞z�F|�`ė��з)���芛����/�����%�g��@Y@�k�K��ӟ*
�E����{R"��p>�r(��Z`Y~Ir��Ximf�)~�U�(�0�$���(���@z)��p�_\zv�Ow�^�9;]�W��U����5�c(?	z���?ܶ�g��'�h��N�rG]u����a���!z�"�!�`4y��p
�A72E{�\G9 �T2	f��t�B��IQ�
W���sxn�R��P>�#G����\(:�4Q�S�R
��7�~�F��9�����r����@ ��:b�Q&e�P�3��R�N�ZD�%&J ��~�2�{�@1H��r�X��/�SV�18c����Y�Ϸ����w�5��m��4�����y�� �/T�4"9�	|�O��"u(�M�(�֍�nb.e1�"���r%��	�ӆ���ڠg��t� }*�ݶ7�DH��B�lg�]��rt9m72��Z�.��T�6ku��u�N������^�=���Œ�B��a�F�_�l���cY����@2n6J
�Ea� �(z��6���i��d0[\����Ioھ�fЅ�<����j���W��}�q�G��9�aM�\WWr�!���(�^�k���=s��F��-멜�jH ��NQ���k��p�è�],/�?��nM��b=�Z��dy׻�p�Q�/{B5T�)�~�+�������0�c�ы�[�p��kM��[��J%����~uD.7Jwuw��:�l���{��ٻ<��X�rf��qU���bÆ�f��fkL��v�[����R�^U��O
���[>p=�[�amEeĉ�u�B=\��,�UX�簙ŀ�b\CӴq��<�a��23'Z����@�cA��"�H��Qj��H}g{�;k�����*Sp�
g���Y&���3����֚������J��K�V~c}l�w�]�O���h���p�h�}Rm9������x�q��fQ4���j��sD��,/�yQ�e�H@
���ʋ�u_@�WaJ��M9j1�2R_%�F�j$��l�g��P� 1���l#�L�щ��t�JA�8�g��,:�F�ջ����-�
�&
��|Q�5Jp��l兡��Ep�d,��$c� Η��Q~�(�����QOtu��1WJ~ɲ�1��dSʨ�H{�pTWؘ~I~|K,y�x�D��[C�K�.��.y��?ґ
��}� ��i(�v
�h{�R@�[u1)�s�"�>�� 倢#Ҥ��Za����͍�t��a[;Ogxl����Ll��{�]W&�#3�l�����w��G��O܏�z���a�5xs�bV�3�w�g�ug��=N~%8w��o���%q���1c>(G�3��J&�i�J��t�X2�E�4}��	{ѯ���D�VV��"���o�N��`4���~[�b���1BM%�CvL|"0�-��m�}Fq$Y"��;(:j�ш-��P=4]W�	im+�w�ԀvZ9�Z���ی|d涋���]v�8Uz�xc����]�N�n�Sz묝�-'<S����hC5�j<Ҕ������	<��X�*��]����r��j;sjQ��Sp��{�~5�7���������A�ǀf
f��
|�:�54=hGq���A�%�xIl�w�J�`ޔ�Pv�,��K�7�E��oA��������瑽o)�n��6u�,T~x���.��{�>{=��.t������(F������~>WZ�Y��fu3 �����i7�Q�K���T��
�h2
SF}R&�U���*�0����,	6�1*a��p������2Հ���:��:�A/��J\���`�����`�A�I��_/�q�ZΤ��oޒ�W��z������]����aГ�2KV�@o��/��,h�Z�[��8��F�CwЗ�<�����O~��p���z���7Q3�;��{��a��N�
�j�i�Z�C��1�j��v���WqӰ^�@ub��w���+#!δƮ2��_Y��~�t�$ّI�)�s�";�g�Z�A���Ie���ߔ���Z��=F���a�V�;vk��u��v�f��e��[���ϳ��}�{���X�O��V���`^B5�	�����5յvv�NN�y�J���>���)�M�`h�3�ͮ��sw�����׈�sR����7mKWl�Xu���8wN�Y�o����k׬?��޲<�;Y��(6.x&��U�8����ǹՓ��9�G��̯�/��!��?��C#��F�l�ndB]�]�y����u?��y;��x��m/1HB�
D_���A//Q!�;t�B�!�Ll���
1�q]e������e%]���/��+�
�8{k:|�K��V�U�Y�3i�$���a�m�b�A���l�]�V��j�oin���ݮr�.xIA�-��>�9X�h�J����f�3�U��Va�����1s�8�ٗ7R��mD��C�1�/Th��&���Dc5��[O���`�L�o�F�E�
�&_ug�K��y��%�:jz�%!W`׌��O�t�\�hԆMKMgZ"��
H{<ܲh���䂥3BNOsim�M�6W�˂͢oab��x�+@��]�&m
6����b��Z��ؑʩ�������;�G�_^��W�"Z-�F��E�/�.�[X�Ge��#^e�Y3,1h@$N�E `���u�:�i��4jA���y	:�
~�%���|8@�0mLtJ<����,�a �Z��Z�Qx7Y�fK��'�_�6��=�i��V;h�
���vo�8?i�;ZWd��u�.�;9 _�H@���X~��w��+*&�V݄�0����Ƴ�G�3y�&��|�����fsGj�lO��8�vN����_��Z�?��dy1������BK��:��87����+��UZf{R[$��Ґ��&w(T��5!�����=��.M�dnEk2�M�=2�������M��t,u�������E��F�q7�-�_���	���h��᢯��!���ZE�S�Q=��w�"���6�x���o�גyyQ�;�����aZ@dԋ�c�?ڭ%�<�%]C��^�%=Dhtw��2}O�g�����+a����9g�5ԸA~i�j�]���i�Xc�Ǵ�Xm��ŕ�c-��
kU�����¢�HQ���.aQ��i�Ӎ��.�nz
~L�C������}S������Paa��#Tf-��V5K-�=��?����QU�qx������l��#_X��,��U{/�~|<�k��J&-\7+�gC��ۭ��֤IoMN/�t[S7g�q�M�>�i�j�Q����?�iځu��o'?<]�~��d�l���p@����`��K�ys�MI8�p��j���
�2�2 �A8_��;�ͪKp�A�u|Q�_���_�n�Ng���)!(��N��iU~�[�^��T	V�mCg��-V���祯�̌���$e�E�z� �h΁���v@�ba��p�(��[�Ӣ���~^�՘�)��8oy�#�k��m�>-��<n�~�"5
>��
�����`,�g�0�}�`���O��1k(O1�F�N��/�2���+l�ESs����_��*3	��- D��[�H�
|$>�h��^���zN
�R �%� x�N!�+ސ�_SR���C�Ap��4X�e��tf��+XO\7��뮋/F�ä�hZ�,����:o��EJ���R�b[���hX`l�� �@��6�)��?��l�lG���z��0=,�E��l�#;��B�cY�[�7�?�6��s��>��9=����1���,�	���?䟃"z��s��`<�h\������Ȥ��?,�/gyLI��h�k��������h��6�ҋ��;��^׮}|���GioH'a��n��C���ҧvѻ���KN�u�����u9/�m��Br��h��S�����ڱ��t���b9���y�97�e�4��O�1�
�ĺb�.y�p����vY�&�k�[�j��_8��ӟ�籺��\$�����%i�2NC;q��*O��<$����~J>o�Iz�wm"8#�e"���L�
�:R�4p�E�\t�#����)_�����/�9�^�\�-��}�\��_���r9*G��B��pH~}>���jƊO�f/a�A���l�}ع0�3��wW��r�KDoSB﹄E�;N#iQ"�H���������܅ :��3�3#^�b��Z�=.*�t�7
/�l�N3�/]��#�Ԋ�����Yo�������d�/���2'a-�r�a|�ƙ�p�g+�}C��2ٌ,��KK��K<���]`�m�f�k��Z�̱��&ˆ-�NZ��hn�;������]�-_T���Dך�N�jڢ��������n����NO]�eOȽ�P4�]��}i�CS]��I_%VuY[	��4d�oD:9a�*�X����P}	�3��FU�.
����!n��S`9^ik��3XWG	��sJ�Ayx�4͢}}4�WN��Ik{��+B�6c����[���z=k�K���L�w|���c�\k)��[�����#��^�
'�?�'����xP:̚wky�ݺ^t�Z&�gX�^��Z<4�\k�r|�Ur�H�`��4͇��>�pk�lw�*iB�U����
~�u��㪗K�:�_�m-\b��l@jG�C��1`�Y�����*IbQԟ ��X=��G��,�=�i�[:�[Y�3�
fȏ���g��Y����\���.۸����EC铞���|;�� FS[�Z|Q�Ё>	��Y�`�-tSkESI]��S�q
`�k:��/�mդ���7�);p��s�k~&�*�.(�O^ް�o���P�T�Q�1j�}l�~e6�w댂N�è�ZU�@����N�fIb��b0�SB�4��T�V���q5H������`9�;Xed$i�8p3!3@7��f�%�St��3�����w(�<�K0�Pp`�3V
��2���zO�.==��pF�
^���NA�_�@Y�ͨ=C$�QU簰��0�J�Xf'��
2ܪ
ѝ�jg7��]��Y�`B��ّ�o�~��S��+W���cy]ݬ���E��X,�NO����3a���^�����A���P�h�,�|ы�Ζ���b����
�h3�����\�(`	Z����?J/�\rh;v�bz�rX	�+}.��w}��H�7�1��u+���2�"Itҁ(�6F�'Fݲ�,�tnʒT�`u�,.���Zb�z��Z��p�8O��è������{�v�ch���iAs33+Q9�yA���f0�*�!9�*y��`䧮x{�T�h�a|�����)r�(��h.��77���5K�U�?�?+��*x+�1���/�/5�a_Y�>��7f�*ojB�(���%�&�4H��� x*L�T��B<��q����J7����;x��Ē��B1u9�hԏ���0��P7����@š!O��v���)��c?���p��Y"��h��#^��ކV�!ю��@JI�+��h��
X�jȏ3n�A�V�p���Z�C�/��LU�:4�q�aE�aa. `�M���1�8�@���
�a�)�p#`�DIq�hފ�����ո>I��P���!`6���N$Or[�F�Y��-�a�Mz-�J�RƤsjh�6��4��2@ =?��4
y��i�o�O.6��&�@��ƪ��8
g/��"�*,v�h��_�.�@k�u��-X�+v�&��N����8,s{Y����k���UCӂ�����v#���tᬘ�Vf����(:fi �46/9�����-e�h�t�GS&T�#h����*zD��l�B��J@���]���BZG�z���ղ��2Q�\g�9��Fc��6i�,
�2�F���V;䝎�+�	�(��
���S�@�VL)�ݛ�%�NV�
�:a���E���(B�?M�����'8��iѪ�p|G��A����5A{�z�```]wxB���a��U��&$n�unw�/�E��!�l�t�g�6�tF���^���`r��� ΀vM����s��²=j_��/ʷ�NS��\������ֶ���B�rgU��X4��9��m�_C{������3	�Sj�Қ=&�@�
h(6UCZ�E���J�`p��j&=�`�Z��JBsŌ� 	�aLfɤe��e����2�[��4_�6���{�A\�qڊ�
%�	k^�q��TUJ��j����Z��l��pU�Hݖ�ym��ĠWO�Y\jY`��B����x�q�z�0`�4?������1F��Q���K���n�EF��6�Ȏz2zK�����g,z�B�y|�Dk`t���鳲��T�9
v��C�h�
�h��nB��Ӻi~��l/�t�kc�k�6�x֮r(r��X�c�7�L)��D���ElP���{��W(@�*��M1G<n�I��Dz�@y�]E�R���U�l��ct(��,�P��X�
/�� �|���;�a�P_EF�VP�a�ae+!4�n�sE���Zl^���a������BAF\w�ER^PE��֯��x��?Фg=�M׬K�N�9���}h���wO*��%3&w4G�=��#�|%g�������e�pч�߶�C0�7��7�7}�\����B��u�J?z�5)�l��}

���2։����4��~��r�T��s'Gj=��{���!��-�[���;J+T��8�4���a�(�	E�=��n\4���SX&��w��T��6=�ӑ�������Yvo���욲ڢ��?���������y�<��Fs��X�ޫ��p�<o6�,3�>�3Q_\Uܶ��eIsP(���p�[Y�m�\zip�G>�6o|��v��ݫ�ȃx���Hwx�IJ�Q$�*c�|�ZBSʳr����_�	��t���B[��Q́����F��&��F��D�Ǧ���ݵ>�F�F^n�4Ļ���H��dZg03�����LE��-6tmYQ�y��[���n��[uZ�]�k�]������O-�\J�XwP4�Q��g�8�vi"3��b����N��~S��Q��K.���B.S(W�����b�
��d'~L��Y��R4@�lm$�����/����kmȕ�X�_51�
i���sQ�����u ��Pf���������`�>y�It��/�&N��K4���G��K�� �a��t�=��K��2��A≫
���l�6��Q����K'�?���
�ݛ�R:!+<y=C�HIޔ��-}P&��{�&�Z��{�aV� ꒡p(�j��쎒�,7[��K�8K��J�-�UY�̢̧�=���b�WJK��U�3�~�cD�/�fO�~ԉW�aj[A
+8�-$1�,q��'�3�A�#��	�<��a�#��Φ��Χ�ܶDـ��Y~�h��yu���&����a��?�e3(A'A��Z��qP�N��$��n�6Q�#�n������,�t:3��aM�7���,�U��Y�ut�l���������Q��x\��GF�HmI�cԡN��IC|`�a"�3��꟔_~��ק��l�A4_��˗
܎)f���[*,�o��C'o8��q��	�M���}�����ѵ�~�ʿv�
o�8^��q�g������"b�P�`�q)զ]�z0s�o���ؖD�\���3'��`�P������‚�p8���T?�æ����"���n%�����W���bPI��%���b���zB���7%I��/���ĕ㓑5�M��)k�S�h�ˍ
��1)T'���Iu!�؀K��N>t�³�BGw���$Iz�5��08�;6
o��b��-��b!�B�6�� uٳϢ��)
�)�e�g���K�Y@��\͍4�VB���}��f�$��9�z��x+C�#�…{
�i������<�A���ǜ�J=żT�g�յ4�k�B�(g�j�t7Lp�:�d<È��So^�,��齺��S
v�5k�u&sQ����9Q�c��s�F�l��ǜ��-�	�EЈ���`s5�Dr�Yu����o{���wi�g�����a��m��j
`��I���hf܄v�SWzM?�6�YNB�&C�m�
����@S���Y:�h�k�]һ 0��b_c�␾�_]����|Ik�:�dMZ��#�kv:�##^55�ZO]��ƬN�gc�D��#���5XJx��b<VDz/ql��v�:�Nk�(�>[�ZBPCcH�TT� 9F�Xe�*:��~g��b��m�Q(�-��D�6n�]]}�o�
�#�˧�Q������A������?�����W&��M�d8��qW�������а�cۼIS�@�.js�1����/����1����������
��9�l\>�$��6��e��b��/_�S�f��'�{n�,8>;�l�����O��0�0-q�`@�6��m5
zԡ���wգ��2���ӝ�X㬞�V�K�u�y�cRT��9��|�b��$�O�m���k��Ǥ�%�̣��bgD�ܣ/<�/��_ʷ�_}�~P�D�x5�(�߿|��o��m��C�٫��g��ߤ�俾�
�F~VY�C��N$�m�k/4U9�'(h, 6�q�p��i�ĢU,�i8hx�k#��9�dwz-�]�|V�ٲY>��rI�@�ڒ���\0׷�˷�D]�}JNJ9���W.h���,cи���	�H��%,g5<R���آ�t�p���,G-�޽c�5�'��Z���)��>���Px� j��̭�fvU\�hH[��m�\h��5��՘�;;9�i�6_�Q��}֢��c&���;ڢ���1��9-}>�W��Ab�
�.c)�In%�UD���>��,�/h�021�:�AJ1{+��������[�{��q��`�)���~�jo��cG����j��1iL�	�b�*�i�dS!2}���5c�����a2�Z��l��d��iˊ9KqsT��ɴ�;;��afT��U>���%�+k��b���GY���jQ��,VC�j)�[eP�����G<����\�x�՞[�]�jt=�~'}�����6*�#A�8����ϭT�2�
�X���bK��p��D�Z�(�����׷���e�!�?�����x�2�K-_ȥ� �5‚���Ap���~Uj�,{��?���?�Z/���g�o�~�ڒ�����[
"m�'N:����L�a:����h�x�>�,j�Q����
�8�;Ѡ;�_�+B��U�����۴�}���K�Pkj6u���O{�{�i�I=
�?��s~����^�X����@����,h*�*#���Q԰��Q��3aXHp)Brk�$,1J=�$�����_ߥ9���$�t�0��us0�(L�L>��(�U�3'�)˲��X�|bk�{.�$�#��{��b�*��M
3R*���V��.+��r?Q~{���3F���O��]��j\��x�	�_�b}�*JpPh���=�->"�WT������>��#��БZ: a�^�a"�/�9��$����3yɘH�y����❕�;�/)��������a��Pp-��YVt�E�z�����k;K�KC�m�?���9��i�N_u"��iS���"b��Pɦ��˿	��w:�W(x�7��(c�غ��D��d��b
Q�"!�2��4�:��n�H��%Ux;�R<�4�~�:w�C��������r\3��������2;^q���]��9�;�ʉ��4�q���6{��;���������-g����*����{���t�G�w�GUe��{�{�7�f��'3���N���zh�w	 ahb��(Qv,(�Y�ZP��ς����� s���L�t?��?0���}��s�9�eq�r��>��rt<�gn)�Ȼ=!^�?TG/�J�鹠b��{5ق&�:"@�vd_Ү�C���i�I��M��@%����})6��~Z�s��yi��
�&��zåU���C�C��-F����
���uMΜ�|�:��AY���A)j!�ff���íYKl���dD��x��y8��%
�,�̓��Tj1E�xB!�D?A���Ax'�?���ą�h≩}�7��5[���X	����� ^n�T�?��A��M�����JY��δ��
rx5Ͽ9l�R'�5�����Ӹ,�\0���b�<��0J���$�0�6tϥ�Ly���+��@��۷���!�A'���+>A/����;w��S��@ʇ*���]N���r J=�R��ҵ�Ԟg�u�H(-�]�R���R�$l^����}��{���n�"<̩'��T]���Gh=�:6�'cğ0J��1�HC1��T��O�k��0�q�)�}F?H}wÊہ�
�4i؟�q�O�m�'���ێj��%#��=k3:��)%���ї�¾�袺�s�ql&�{��d��ܑ�xMJf�W8�O�
	��
%E��T
��O�'%�_�I�h�N��$t�Ϛ"������58>��s�dO2~�$��3џ�~�烌V�JLL��L�dR��Jj�ˡ\����䰼�N1=f21]8��GЋ���A���R�yã�[f��
��j�S�G����Z3GZ ]����&�D��� �g`6Ko��$XL��	����ZU�}xRy$��f��s�w�,��J���6�ؐ�R(���K |�F��K�dU����X�:4��r��i�8���Je�~Y�h���O!y�΢��R>�z�Vt��UG��V���w�<�����0v��&���7TG����8����Vl����Ƣ!;�^�8O�W/�&H#LD90((ѓ���?
�a��)A�m�!�L<|ئ���%\��ÌL4⏕`n�?`�������V�Wk���h��b�+i�Ś��b�%8t�i���5���@�/th��$�pK�套��s�����G�X����h%��bɻ�b�/u�5K:����`��Ěc�bֈ^�:Mžr�ݹ��׶gY5e�\pA:K#xs"��N�t;�f
d����B�C	3�v���Dk��/���U��1��ղ9GsX-B�����C<��27ǽ�� �M�.E�guL�͋\y��Y6��{�Zbu��y���E�5%���.wA�P3}�S�nc�e����z�5�2�QYͫx`�բ*'/Η���C�i�~��E�'`ciE�*������&9��ҞKA��#��
�\���:+/�c)q!�r�^=�{�p�n7�\ݱdq;������z������kڗ,\�Ր9�N.�N�[�EZ4��w^/<4�z29愘�+GU�=��0R=��9��#}�^�)t�r�����grt:��".����^Q~;���3�ʪr�mNEE�@~��}P�f\t�z���Mբ�I�`/81iS���N��M�PV�v�<_aO�6)��h��N�v�9dy�X�O�JA�1�`S�N�F�0d
���7�����`z�$�
8g0:�a�ї
���Z\f0<\o�����qg�~1�?8`|�l�"�[��nb�1 �Mys���B�'F~���Zb�vGN���u_f�͉�k�E�/���˚�>����6��D٘����HN �T1P>G��O��6g��\��=������WNe��qo�t#u�z�:J�O���'�)�%��A]4Q�WC���MR�&
�$%�j��¢
�7�Hl�%�Gm�P�P�F� ���@9sBM�\���+�,u�`4c�NZ#�,�U̥����.a�L��Q<4I&ũ1��@��aWN�]��P9�h�^^�=T0}�\��$y����'�Ѿ�Y!�aE�D��*��n�Ĉ\n�E���*���e����S���4Op����D��1���K��r�2B��}���qj���1�Ʀ/T���
7�8K�YY&�駵��l�W�S�J9�=�4OG�:�ٝf+\����*Z8�N�ʢ�g^�@��$�|%�-ϦWH�M��VLR:/Q�J�h{8�s*dX�J�5`��j�[p��k��&UY��b���d`l�&��L�S�Tr��@���t�ڞ�)�{i�E���ڲ��Z�w�:��0Th���	&�!̀\��V`)��;^��L1�C�|]ߢ����r.-��8��e�u�J�|�W>R���N��r �8x�A���#��b�+�<���SfL�M�6�e-��
!��d#_��Ԛ�Q&��q����qPB�k����A��(#Zq�Ɨ!���Jp��l"�1ײ�kI�ZV��p@�?-�=6�S��s���,��e:3���eZ5���R9+7�N�9��In�ۇםX��gCSٮ嫳lmu�
��,�3��m�9z��O�PEǰ�B^��r�������F&B^m�c� �r�4�s�ͅj�\�g1H9T1rFBC�Z��0JPh��w����an��]b�յ�P5��ނ�G���n��W��g��k�uʥC��?■�ͮ��|��@�-^%;��x>�@5e�yA�U�9��54mƄ�Wbp�\!,�G��hD"��	3!�
鄛HT\�6H8�`9L�E5t�V�\�)���{`��{����
ꔻ�@`N�����{��9�瞞ݷ�v5�ٛ:W�nY�u?={���%�1�4*ve\{z�?gm��e&��b+hP��9B��{�
O�Q,m��ճ�U[`l�\5zH�ṽu�=���`��zr�������X
~�UӚ
�gv�^5y�#�Q(2'}CW��Ks륊�O6��7�Րo6k��C��D��&PS���<�J�N��,\ՅDe�PZC1$ӡ� *r���1ѽ�c�ȅOQe�4}�TB��%"�9:���v̀��OHn! ˆ�"B]b���	��PIH'h�$tl$gup;0y�\#��0�¸iI�q�Z����!����-z9$Ey�(�WȬi�����*/c�[4��\6����P��u𹚫��H53�g=>㯳�X�N�o�Q�5���\�8<��O�n�����}�թN��h
f ft+x��2�����mS4���8�vו2�
)ѻ����$:(��Z�1��F������bpB�2k��Yc�ÐQ+Ꮏ�n�#�4w��ݩ�/��+�kO�T=�#�ʶN��=;��3��3�Q�
@&.֯ɗ/�oD�{����L��=a���M�M=I�����;�eχ,'���d<�FO�c�J��wy^��@��L�{��i׼���ɥa��r�q�SY��<�.��'\�J2���+��]>(E��5�^B�K�1��g��Հ�bAt������p��7o�C/�Ҳ�j8�Q��Q��ޢ>”�Y�nPj.����$Qlw�����[�Dž@>����|���rF�R�=�v�?$k�sH
�L�k꿿��
�N	�\|D g������C ]<xF�L��_�=�	�g�L/ۅGI��^�TGd�e!�ɐ�2e���Ӻu�}��9�qt�t�;�GT�{����Z�DIA���I�ɓ��'�n���L�S���h��|�	_D_1 ���FO,*������4&0�4�	�aDr
�g�ส����غ��7��eS�pW-���5���_�ԧ���m0�j\�rM+9�3ZG5mj!&\9�m�ޡ�xK�X��E{��W,�����҂*��s��1�\~�m~e�-K�q�ޥsV�7�]�����E��,�/p���ț������g��K��C����S���u߮���׿�{]��^�>�ݭ�~wS$cw��T<б�|�"QDRMc����jI�d*Y�N5����~w��Q�Hպ�A�k�3��`�$0	��t1B�(_�%�Z��U�h*\��Tz�R׋Py��Rя�9�h����`A����s�d�Ӭb ��ဟRX|�
N�j��hZ��; �'���h0{*�A��Z+�ehȦ��`�<����r�����^P����Hm˄V���}��T��WkO��' �#gm��k�O���W.���Q���ZQ����{�p������=4A6
Ҙ‹B�3?��#9���Db%>O�Cxu�'@<�����>W�8���-{�j��>���9أW�9�.Yz&�o����m�C}�s�1��e5�\Z<rI�)u+�Z�ǹ�/���M�7��/o���Թ���}蹡���Ѱn��YV
[3�ܖ����L�����\�����[ 
�/�)UC���2�x���&�#fz�QJŽ�m`ݲ�k燚G�>|犩��]�C�-`���.��*����
�4�5��K��}_.]|[NIw��z�������d��6?rp����%�K끼5�kq��Ag�Z �3�g!B��E	��R�Ǖ�>C�l)I���]{�k�m;���sZ���=-�C��s�[����֯{l���|~󪧭�[�OV�ƀ�#@��I�k�<��I�{wKk�[�V�?Z�����E?��oxtϥ��A�� E?P��R�>
Tk	�l�R"7(�/��C��m�Ue�@$��8��} ��,�	a�[ҳxq�^�Q:�ZRP��j�Vu�t��%n�2�f9��ر]7�~,�U�����n�6c�6:�g���ѫ����+-.?�M�&��fv߱����s#zV�wq:꙱m۫۷��c$_�g)��O&�&�\@�b�d�3�4�n�'B�X̡�<i �!�h%�D�ĩY.�St A��8��Mt���x�+8�����P3��M3�� '�
�F�<�,�o���w���R����dž����Wd)����+L����Ӥ����>����1�R�;�q�"��LN�,`/m�O䔰m�8���F0�V���\6&�������yhM&��t�3J0��`���g�����@���5��zzX�—#�Ն1�o�ԠRڮ�T�}�V*�y���p-����"D$ן2�pԓ1 �8��G����0��7O��y#��xh��(���������>
��M�s�wL��iw��:&m�H����)�yi�*F)�I�$q�����K��wN^�~2��I�����6JU`>�u���<����I{�2��Yp���)\֤M}��$/p��3�7��`r�$����k�㹗8AȬ�UP��L`��}�QLda��~��TW�l�i	�f�Gџ0Q"�쉠
E��oE�V���-ȃ�Ǘ�1I`�|�؁����%Aݶ�����8���C���D�À��H�R��.L4I���f��N�H�Ry����K3�{>0P5m��h��9v��y����ռ��%��M��|Vεz0�cQ[}��У��cvg��-�����3���盲��^Y��)��Vؿ�娢V�ԳV��B��a�\��Α���.ї-�&<���_6��0�¡��0z�̈���B�@�}
��0�g�I=�FS]�+(��]`��\x�����\J��
K<�WRC�Q�4j:�s�ۨ�ۨ�T/�.�Ez����Gq3���h�9�< Fv��Ķ7a&�8�P����3���(���e�ӊ;8�sd���g$�"ٔ�0&FD��2@�l��D�i�az��s�B�x�_�o�:�@	B
Z�IH�\�V��Jf9
�J����\!��2ٙ/��:T��٠Tf6ˤ�v�jUȡ���f3T��F������ �����(��KZN>��R�q�bN3�8��ʔ�ʗ5
f	�j�A3]�֚�@�Z��Oj�M$%��RN
�Y���[�w��z�t��e�r�Z������l�JYV�����9��q*� �N&[��5���L��[2<2?��K����l�*�}*�g?je܏�Id���?r
��`�^1�}/U�߃wyE�|k4~N�T��~��Wr�Z�@
�څ_(�Z���V���T�%��ZZ#�X�>u㲻�^Eo2˽�T����'��v�����	<Ր�*`��c�N-FK�+���P���
��W�A�v4?JScF�'�c�7���3 ���SR��Ӏ�\��Q>j2;�ⱳ�I�ܯ3s:�,([.�edW��=s
~��=; �!F�Kl*`D��ǯ���P 1�I����𿐁�I����
�Ș,a�8���p�c3X)W�W�`:�5KQy��7��j$uE��|p�M�5*`�l�h��$��J�6�R/#�������4*�8B��ݺ�ؖ���WX.m)R3�fa�-�v4�+�JP�<�g(b�v��#l.�؄�+�a���攀��³�eGw_���HXc,�@�u���-���ѫs:�f��p{����(nX8fQ����:����h�o�6���֏E��:�~�D|%�5V'���8��jK�mڿ/�ѐ�K'��oB�vNg!d��K�uK��,`�靿�����|��Zh�����Q��f$�v�,�>��%F������v��ځ���'�C7�8-6��F�
�@���6��a�Y9�_��,G�o���Чͳ%�{#Q�kA6>��oh���ͻ�㥌��d�����͟���_G����蓌���/t�k`�R�Ӎ)
��|:2r	�⯿s<�ʖ����5E躉�]���]Z�m/x�Ɯ�����O�	X�R����\�r��o�yt�X�Q]��$��^����Ӎi���ܠ���*�nR� gf�5�/C�7A5(�1���������G��u@����|,J�$�4
�DI������ID�m��x��8=9��="�zc�����q2���wНv�ȅGZ�5�5��!��_�u��*�Zm�ߴN3^#�7$��Q��LZu%!^AI1)��91�C|G�D�M��߰A7Y݌:֨�n;VB�������NRS�q%y��o|�&5ز��g��t1��cL���0�o�1Cٍe��^w�>����½!6�jf4��K��	Gzi��d�ߴ���L]���/y �r�E��F�~ӛU�Q@�߉��`��1q��Uwb���\L(�bY�����%�)�
Z��Rlҿ��˪��0-Wi�UФ�I�S��+�_!���y���]����+���r�=`�'tv7{�������}��1���{\ǃ��$
��c�ϜZ��;
�;usg,�kv۸U��߻|�oz�r��PQ�w�Gb�����
���"]lɵ\��{h7���{�‡{8ֻo=`����#�vN���_�2}N��$�sSz̙Z	6t6��@f��n:6�i�!�T��$"�W8=�����(}�mZ�x}}5hK�ż�{�8P�޾7�yƾ7�^:�8,B����7l�{�8���O<�Ĥ��lt	�j��C`�)7�a�9��J��l��6C/��?4g�Z�+q�+�Ia���Ʌ��������q&�g����w���.���yE�Z�EW~q7������K&*�/��:�;,w��oܳ����eCk��5�7��n��u��g͵�&շ��7����ڱ�f�}����?��u���P��;�o>r;��N�}�z�t�Pu]C<֘���јs�Uۧ.����
��o bo���?�7�g�W�� ,I�$Z*�!N�|˲f<s&|헪��m�����:�?������^K���g<���CB]DSX�I*᪤�hs�9!?+K��_���_�%9����@�s
Nz��O|��j������ĕ�D�������A���i���������$���ڇ��~�>��z��Qtc���+���k����x>�7n�鸧��H1���L"�b�N65�|#.h��d
�`/�0�뉚�]R�>�[�K�����R;tHdNk�Vrh�*�<;?G��j3� d4���	ьi��1;����^C�g���&c�P��S��V�9y8xqcn���蒳�ѡϷ�]�j<B��Y+��<08Һu��%3\Nk��&�,�5��E���O>^���	�閪�8�����w<:ml튵ݳGV�t*�魏�7Ϛ�q0J����g�!�=B_Sb>7L�S���*�J�&�o#�'����q��&���]+F.O��	s��!����qLCDk�tK���||<Q����~J����%�� U�Z�+P�a�8�<5xz���y�μ���ե�6�d/�6���w�Xi�<t�ۥu��o��[��Z�/w��΢��%E�e��R�?���W�� �h\��z�SWJ�}e�@��Vf7��:xW���$7)�{t�֓�Et�xr�֓�t�ʓ�]d�̪��u�[)�'o���%�C��C��Rnj��_ރoI�rL�=e8�=gLN���;�������h�($Mj��Q��\�������19���z����:�)�t�^�=�QZ�	zpƽ9c����ɶ|Z��b��dY��T� j.��h7DJ���)��2j�F��O^��d8�P��
����7lLč���1I#n��5�peZ�����.PaӤ��f��[[��me��1�+�ًÍ-�'����ŭ���+!���]x���ds�k�J?���{ӻK���բ!ő�b8c�H�d}M-�9zTg4p�ӹdLd���5�,t`V~�O{��Vͺ-yR�%�-�jO�MfsZ��2v|�u,��e4�����O��X|����CGl�����ZA�z��ĿMV$ #C�. ��F��+�&��K����#Z��(Q�T��.�
����D��U�ΐ��?8���X�vP�s�;ֆC��nj��vZ}I�
5C�<wMW�4�ć�!'
�]�qJ!g��]��K�ה�G��J}�VV�>���4c�LzbU�[���)���3K�!w����Y�޶��o������X�q��¾���é���	�[�?�b(\�5�La�乖�/{�s�a��t���q�/�Rˀ�Ɠ���/�=����V�!疕��	�r�R�|��B�DP�xt���|߳eg)����V��A"#�^A����qF��$ڻ"��d���b&B��%�+�ձ�����a�6��U���{�����n�m0�Y�o��M}4�Ғ|�y|*������I{���6�b=�}
��6d1y�ݰ��=���s�/�}q���U�|gF���OS��1�
j~��;q/^��u� 5�eZ�XnK�Dk��c`LSU���xM��֔v)#(���&:�!��PU����Ԥ:��ˮ>�eKqGe��6(ABO3�cC~�QgTh&�*�F&��ak�[:�V#U�J���5.Ugp+*�¢�*���f����=�c(ך��W����1^��4���٠.Q�K�� w�ƐetC��<�(�a,��z�B��0�������V<[M��>CwUc:�y'܃i���9�}��^<� C��08C\�OPE��^1��sZ�R5��Hvn}}n6m����p�b1,	��P	��������؊����������A�1���e�Wv5�wǽ����#
��h�#/����_]�ps3:��������u�8��i�fٟ�>�0��[�v۶�D��Y�4���a�g
�"DR�9K�v���H�R�]�S�Pŷz�Jƛ�3�в
����?X§)�V�F���1�I��o���0O����%�eœh�yw����	x������A�;�2ބ���I�>��g�vz
�_�a�p����^�i5��ҕp}��ϛwJ�9���ˉ�lԔV�4��W5q��H�>.{�C[�|_B�>�N�=�^[��r����9�^5b�U�Ιv��J��ڂ�k�|�߰8��Ng��NJh��J����,�J��A��9���*��r��D��x��0s��{P�6_WF����j��pm8Ϛl#�)k��u?���!K�́�Г��
V�{=��ӓi�3a��3�	`�F�`v�i�n`�n7�<2n���7�un�h�C�"�$T/^B��dG�#�y�Yl޼r�U 5)� ����������嘭���C�/Y�Z��,�[,�r�ͱZ����h��XqE�~D�jŗ�=�k����q�W[Y�$9.��v1r�q�j�3�܈�m7�%���q\���b�r��2:�.�G�!�D�8��<��%r�ըר�i��^��`:�X����+�r:]�<c�r6� ��yi���䜂��?D��E;�x6��@K��Ih�u���϶��aں��q�V-���6u��U;����V�3���V��Z��������G�>E
�;B4�����1zb�_h
{b��#g�¼��p9�t�(��J��8!�RY'�%��saX{�D_�!"8�d����r50�.&ʷӾ�6��ې������9�p:��X�	�q�w�3Ϡ��h��u8�e�D0�7D{ s&B�yf��th�sȤ��'�7VT����
l�L������.�/!�”��.7����5��^����FV�=.H*�^W�R�֮,_�0.�iW�]��ee+�ܸ���&��w��o]M�P��{�(a�W���80�=���p���\�����qZkք�΁���w��3�V]��"�K��f��E����J���ne��*����k��T�7�*��>q{-��ȕ*��Ln�w��WX�r��.� �ҫ�.��z���=���b6���9b��X`-���Q�
�@�w�����?qm��Ep_���|#�KW�W�%eB�3µ{ҷ��e(�K@ږ��˃K{�[@ Ǹys0df		��Q�9��)��8��{!�����p笯k.�U}�>�}�kk�׳v�@�՗.�q٥W�&���o����E�3C^?C�?�G[��۷��={b<}��a��A�� ���ui���������p�(u����iW����2JM�_+��X	���^]��"�~ǡ@�)��<��MN=�B�ó�M-�L!�mL!]�}�c@���ж���\��%��:����%K��o�`���*�*�|3�*]I˰��@��uXK	{��(|I|�~�_� hq���%� A_&A%D̠ڍ��ޠ-hCxB>�Y����3�=��8�:Y�7bzS8?%,���S���/�ҋ^$(3H�ݝ��H�
��$��#�BL�*��f@��p��O ���UF����ٳ\��@ݟ����� ��e
�
E��H����q��uA�o=���S��g���DQ.����b�&.�{���f�׋�w	Z���%��0���.7�s�?��?���~���u�?s�Ȋ�	�'D�;F�F�����El��188:����UgFͯ_6�m�0c��YV7w�U֜��'70�6L6�rh��+F�Z�|T��~����815��5ipM��V���OKZ�۲s6���ž���b����D
��K�읁;���!�f
I5k�%��f�poZNK�$p�܉���7&�x8"~����}���3c@�qL4����GK2m�
<J~))��g�y�8s_�����#���g{�œ`.��ڨ�d����"J�ϐD��1��x1"".@�P��9�~����O����QO�mUP���h��P��O����
*4�V�}]�}���JV����7�l�˸{����B5���寷I�N���].�g����[h���`����/����]�����,�lr�ƨT˛k�2y�dB��H�㍰թ��rё��
j�[�c����	��eЍ�c|��I�O����!��E#�� )����Kx���2��_��$ϳ}�S>L��5��	T�N�y���#4��I���� <1�BD��,5X
a���y���$y�R��c����T��P��YL�єP�����Z�Wfj��z�A�3��*S��Us(�go����.K�Z�!���Jڊ&A� 0���%Έ��-B:�)NゝKg��u\6��߸~��-o��_��wSg�+��g��g�C�.�f�$����]H�x�G�h�c
�n���@d���V�`����2���]z��uܸV�J�h�s��UW���+�w��,W�D���}�n���O���Ӥ т�f�}́R�j5��Nͧ��y�O8�<lH�.�6�N;@{ ��È^x]8!�D�h"=�eN��2�3�x,>
I����$�,>�扵��pB��]41����+�R���KH���)'!G��,�~%!�z��}���< A���
 ��&�d!�t2�B�	��&Jd4�1Q���4y�A�I@6d=c��2��/c����~�{V̢4�������Wwv��Ñ@������|'�]_41�z�J������qKOtT����)��j$4�+���ӎ0�K��Q�1��sm|�~2���k����<L�*3�{ �̟��t<��$E�4�ou�ఇ�.T��k��@�/n�H�9��� ׇ���̙ـ޷�`x-�m�K�.�]g�àD�C���<��'�Ap-:���bxJ��qh-,�
��Z�̀f���h7��,��8�z�	b��ҸorL@p�G�}�`)B����0g�������w�f��h"j2G/��ܓW�KhFI+Oo,WԢ�!H�:��![l�pϠ�5{�Q��i2��m�^S�W\�׀�d���}ﲚ��-%?�I����.�g�+A(�>5�oZ�DnH�����g
1���,��:/X9c^��k4y�UzK<u���L?F�+�MK�k�\*J�bN�	fS����^�)���P+n�J�Ɓ5�j��q΁�� �'$Po��aȤ������@4�3F�0F|K�1s4AsA���H4/)�\�E�%�B}��cĹ�����
y��4O�ő���Zl6�������IQ"��r��c|Ւh�	���%PL6��;I�9!�
��%�6y��d�y�H;c�E�B�N�sw�W1�3C�I�p�oz^�tf&��Ȗ�
0��	�'�p5"���ϔ�M���bĈ+�̹)�i�;�M��~����6N��)yӜ#$���7������+����a���	(���gL&^o2�ypW%���0}��O��f�+љ$�Ȟ;`�P	��G\Nk�F�h\.���qp:u6�hġy�Pm��
J���*TY�V���qz6JU*����pg:�!�Ǥ���L�&���rʥ2�>�q�j�No6�y����u�4vg(�t����N')&]�tjJC!�S�F4�!�H!C3�Ą'$O={�b���j6i���A�9C�N��@������<Rb�l\��8M�*�A�R�2H�Y@ZA��-V=o��V��������C�n�3���,�v�0��56h
���@F�QX���uj�΢�r�*{v��*�=��
�&�G��[|�����-J���̥Vg��n\=ؐ]�m��#-�� �CA�0��
D���\ dz����RӨyx&�����Y�rHa��!�Cx]�9<��!��
)�Q��q-�*A��V�eЩ���s�B@�D�'��K�@Tм"���Bj��J����|]�jN��1|ʔ�JW]��N8�v����.˫����Td����@vqMMAn0n�=�9���nz݋I<�`��v͛���w����V,]��)��}nKu��:�&~�&Z[�ωV�S�c{��V��\�<	=����
��z��h�$¾l�J�4�y�ڪ��@]��!�j��cf�I�	�۱ᚢ |��t��9q�'+�,m.C�]�m+,A�m��3�Ҷ�R�{|$举��AL��1��xs�é	�Q�oxg��A
�FQ|4d2��Z�3���7O@<��q��BF_��x��E�	`P3� �C&��	\���E�����txa4s=&����L��g���TH�^!��B�y��s�'� Ẹ���B�IO��6H8pb�t
�(AD'���h!�Lv�<&Ap;0A�+Q��D�o��@�(��IyD:�h]�9����
��"!�Nl�|X��t��j���Q#��'�cD.������L���&o�n�6]�uɼѭp�B簄,ٲu�#�R�i�xk!���=7�Ⱦ+��Eք�=~�:�r`6�f��YK��>q�z�|jP���8uMn�˦{��n�2�z$aF/�K�17~��;��D�1c��A����2�=��|�ɪ��x��\T�>�m�:��V�����b̗����o�}Y��n��[�7��}_Yj/��c
�������7N\��v�u؆-5\�ƭ�I�~�ĩ�/��,H]>|xq"�v��JϠ��
|�.(D߼��*+��੧R�\���N�?��h�p��;�$�O�UU��Ӂz�Y��������&�7uj^�c`+)��4�������U��3ұ�sX&�:��t�q�{,8�q�d>�I�M�L]��Z��
�E�M��1�V���C9eV�H꙾r�J	XE�E
�֣o_��r�Uxv��|0�'�5�#G�T�O�|x\��.��P������ި�D�K�8�ć���GK��g�d,�Xo�3.A	�5 $@���k3�7_� ��c%ByN�;I�p�M����h��Z��UT�M6��;�$��=��=<�RI��R�5�c��X6IQ��!3�;*��j����
n^��JC��C���Y���z�A�H����El��E�z@.�Y!��ᩡl�I����%�����Y�@Գ2��+���^�����D*��ԿV"���h��2-0�e򽻴2.��tKUr�]�����U��т�@�@]��������b��ҿk�5���ԥ���-�:�TB�����
�nz��҈܄�
�n"������(E�.VX��䫋\I^X�+�PM2q��2$��E��)�2����(O\"�DO}Q���
���:Z��B�"g�[?�kDQ3[]����Ь�,e�R��*��7�jw킗��Ƥ�w��FF�P^A}AA=�pQdrע�ļ�ڲ��3�3<�KZ5(�p���iE�UeR�<�Y�PSy�Emֺ���فl�[�ոD:�F�]��\�%��t��e��=���겒����nEix�ܹ}���v�de"<���j��y��Ԙ'�VB	� +�ͤ��~p���c��2�D`J[����f����^��D�^b������zw'�V[1:k6������Q8�4�W��9ii{�t�s1p΁��WKZ���9�Z��ْZ�]v�>)�w��gys&�p߷W���7�z��0	��D{�s�a�tD�����]3jA��%<A:�'���b��*CS?�s�2��"�7�;��U��Q����_|��fڂ(J�Z��7<�S�^枮���l�_Ε �C�w�0��D��_�	�f�
�ė���q����.�40�:z�89zA�ы��.с� p�&M[Ԇ�4M ��@A�����0��e2e;q��e�e#駄��()	ܭ�e�'h:]9D��.��PNު��R��O:(̺�KW�����׽#gw�j�k7
��'�7^#����~MG]i����ׁVf���P�m�-~r�r�8���5-��rx5��*���l�Y�l�g��֯^@��=q�Mx�$eq��R��d�$p���r�~c���Ӫ�O��
K��\3L�sS
lɾɷ?��o[�^�
 c��R�d�Y��q�Eh?z?�	��M�-P>���������SVW-80�{��Wt�N�B�D���[�����|�D�`��-��
�BU��0�?1�D�ɠ�X�T�Fv�K�R�8�������|dO�2i�M�A�<�xaC<��2FI��ϑ�(����
�^?K�&p�\1m�G��^����^	u�4�98�r�l�P�DŽ�Bڜ�'�����Ȑ ��N����^;��L��h�]�D5#�47�2uպ�'�u}O�����/k�[Z�5�Vk��ֺ�Ys$Ԥ��q���L8�>9
6��ز�4�O�Iw��������I~�y��~4=�:"`h��0*� �6���4`��F��)b�r���#��!�f��"G#jS1�s2�_F8���t�r}������]Fs���u9��b�W�������&S���e!��n�%~����g�!��a�����?F�D��[�&����N��תM8�!�
!P�+�:lb�mV������̯�ֶ�s�Y���[�cD󂼊%t��H�@`������u*	za-�N2T_⾗���+��Z�R���>�Y-�{���=MA�<�ɭ���;�����S�;xށ��>\�23��[�'��4�'��͝y6�d��F�[Ha��,��rTH�*��OQW/J��UZ�<�֋�p�uB�L!�LH����Q�X��P���u�%!�]��D��kա�m["��)���\0$��R.w��`б�s�Z"e�bEVŸ�]�ӭ��(���8�&t���{�+s�^7{lyEN����K�5c�5�*���.J���`s�����Z�ϙmW�'|�������/w��;.��Ѯ�����x�`�m����i3._�#�����,�9�bn�Vw�~�6�(���b#0֟��d�D�0T�پ�0)�H�-^�L��*K��l�D?t�0̹�Ep�|��e,��u��O
�=���k�v�g8b#+�6��B��'G�|b�Lzp�ӓ�ʜ%���?����ϔ�O�����3�<?'����R@�F��;
K�9m�8�T�ȶ��M�bHq�S3��'_b�,l�ಹ��_a�R>��1d�~r������Q�|ϻ~���!*L�G�Z<�C-�%<
2ɴ�x��X�n��W��<{�;dmKQ�U�&!h9W!s�Dߣ7��#�w_@�'��|�Ļ����_�������o����P����F����>�K��*��5D"ђ��b2x8��@������
Yx
�">�!���~�S�&�����J��Z4O���>ˑ�!��ټ��;�֗�� eM�kd�#�+���M�O��#@
*�)���T���=/���9�N��W
�� 	����1ń��A�)����_���$7��"���>s�Z�̔����JS���rm��X�ē��`����;o�]5'�\��G] O�3`T�D����.ķҕ�'13��0#�n�CX��o���a�.&�
��aH%
�&
� )���!i�-{�`D6��P	�f�ӌ���xI��;RRw%cÆŒ�N�^^n[^Y��
��օ+p��[�����0-�XE=J0#�,��!�1@Q����8T���� <��OF��z$����ܗC��5��{<��=d��L�.Bl���9`iĿI��}���?��ӟ%��q���9��?���6Enj�#���z��Lx�C߀;���w��>���#~!�?؄~<!v���C���q�_&`��f}󆂭t~5��d&{ZpNM�Wd]��i�V\WB�Q��F��ID�$��#N�$���5L����]q�PXT�M�jV�DI�h��>�d�]�2t��x�9>��>]��rհ"�0|�f�ڜ�
��;
�۬�n��-{�w*EXP*sǎ�pj9�V�8��j�h�J��G�;�H[K�·���%�';VW9���h��J
���w�TO��oϢ��1�����Ҿ�vi�r�e/g���}}?�\cS[ڲڧ��ѭ�5���^s�Z��1��8x��<�w�L��+����J(?
9ul��^O�r�N�p|b�Z[��z���>3��N�]�3�L�5i�'O�݅���$����#럍�8��\�|�Տ,t�����'
z�������"`�Հ�4,�{K}��;?}͍��^g��e5r[<4�����L�Lu���B�	�Н/�8�ԭ�kG�V�$��ʗ�͒<��p�X֢c\�?SP{��z����mZ��hH���Z�x��*�Rkj�JZ��;o�R%U�YOV�V�*_�_?M��̺�v�vqR��c =8���0���j�Y�3��}B�-�Ӎ��a{��- ���VTD�8h�{�}�
e���9�$!��[N��;��#�g�V�[�eɲ$W�Ȓl�e٘bl��f�馛N���$@BO�@�R)��0�KB
�A�8�4�\��Kli���J�l��}����������̛7o�<Pف��*aOiaZ6�$H4x��ڱ��U���Q\�֭���NEr/��ރ�IKIz'�bA�h��m��X��*
ĺOH��FK�$���*��B���S���[�:�7m���4m��[�s���,.���_㸯;�K�*+}p���Lv%}���-��i45c-B{
����
wÏv_�
_���u|i$���L����u��q�(��?�����q5��D5Ss���r�
�@�A�Q�QG�����ԓ����k�i�]�!�Ll�.�?��1���t�8J�mv?�	�:�����b��k
h�"�MN�'���@@g~΋V8&#c�x�F�2i��&�9�� ��n
�{�I�O�^ø����:�W�NL~1e֟e���{R��h�5p��lJgO듙s���[ �}6�dւmj�ܥ�wo��/�#n������X@�W��BM?W�Fg�oչ�
i���T��+�0Hi�H��E�dW�{���GX ~̺d}�{���Y������gft��u��a��K����(�ǖ��=�<�vG�5���>�D�NO�Ŧt�^��'��`���H�T.M�ҀF���-'�
�=I$��ݨP�Wش�Y0V3V"�ར�����4h=sF�1\�U�	��l�?|�U��'EX^*��Փb�h�V�
|�(��S1�6�mZ�y|�^�v��'�`K�€�,,,�/�_>�_G�_��?���)e�gΌ������1�(�;��	�xϯ��Mϯ��}���Bh�*�����
���!��(�0�zO�ެG��vJJ<{cyK1�qA|��^t��@K9�#����72����e����|�:�?\}c��`�G�0%S	��в��O?���\0�=C}%7�6�
O�uL:{g���p�1`]��L��K��X��c���r��,��w�'c�AL�� �����/?d�$��{mX����3x���9O�C��&~���Ϝ�bϞ/N�	�����W
�{�C�{�m߾�7[5�Ƽs��O�?�ӧ�,\������x�]�!.�g��R�ښY�:*�d���oarrs�3[�{VE�y����>����v�[���ˡo��XM@Z!��
�+V�x���V�4Fx��an�wud<�����,�>8d��7�[���1���j�:pBZ�����<��p	�"�}��C�}���7���~��?��*�LamI�FP$��~��S���jˣ
)UJ�S�T_��塈2���#�<��MͧQ˨��BoDz;��{���1�"X��$G�݀��L=���.������	��[��q���Xi�����ԧ"���o4y^��ȵ�������>�~f�3��B5S��~VrnV
�����n��#��~0,���/�x��聞�?^ԙ�3�e�/�]����wuow�$3��gbj�����4�ר7�!�*�Fyj�gQ�;����9�?�2�~~�hў�������tO:�)��t�=�'݃���=�=��Cu�Y4$�[����:���,	t�BoE�Ԙ����LoHMe@��-5��,B�o;�{���q^̍,f4&��v�p��h�Ȼv)��"<��
�'�*�|�0Nز�0[�JnEE.W����
:��LD�.��D��8�ߵ?O���DP�I1����We�s��烏�8�ba���v���zig��������k6~���[~��΍�����q�D��>M���f��U��^OM8�R����u���6.x~���j��T�A��k����Mg�z�և�:j崉a�U�����3�iP�R��t��LU�xY���`�(��@|R��*���EDzgcg�@�
��'uA`�2+���,vЋ�ć/	D�t�U�wm���Kb��I"��et�'��&�d���{��b���D�r�RINf��$U`�>��[�2ThӌN�Յk��-��z�*�FO<����(��:s��X��v7b2u����Tt�\k�.��7�ǻt(���?���GC�߱7N9�5C�t����%��igC��̉g�S`/�@χ�U0>��`;lc�(��������|0��v0���:Җi#!5�a��
�*:���0,����O <R�|M���YJ���)llj*������S��nE�뇀`�O��Do�k��ͨC�b
��+��z%089�fx���1Æi��a�P��p�_�?�=/!U���z2,l�OZ��t�9���@`������~��m�nC�N�NPf.���l/�I���M���l��LX��\ܗKj)E�u�%u*bN �c� 7��kg1( �;�p{1��-�g1�@�\����2t��	7D�	P4-�oo�'�)%z�2���9�L�5)2<:�B&�)�:O�¤������T�]�E�ݶK����~�M�[�uN�9�\[F_���)6T��V��p�H��tK�u4�ӬV��<k��z^βɎ���tG2��y=���<�H"Go������1o��J($�g��fwd;�Ag��`viI��!����;�oE��q�-��EIc�
�(!"PG����in�Mv/���^;��1�b�Mx�	q���"���3��&�8*�^���|��ҿi�3�շS^W���Yb�iJn*M-��ű���]�o�.e��_����k=e�o:�Z���
��…����2w�����/�����/ץ���y�ԥ��yV��2s����:Q�b���9?͖�VtX�JOq{̿���;τv���yhOÈ�l�,oe�'t�ALAV��qҩ��1��ʳ?��Ϯ�Z���9����eM��*�L^w�©u���,m*3�ql�����U0�2�'�z�>��6_W����ʧU�;�(+��4%ɤfei�^o�H���$S���;�C�!;��竭�>��N�5)D{ʎ!�K�}� �rљ��y�V��Ќ�w�1�H�d�����e�;����N
\��D�FC�hW��vπw�;ty���9rӹ�p��\;�>#�~��`�)��a��h��Z�b��iz�Y�jq�;~���\l��ЛS����+�rjB���k���oPl���
�)^��NA]'ޮ�h�}��f�"�c����.�!��ok岭�o<���PB��{?L�'�Eԗ�
�D��	�=���]*�.�g�����J�Ŷ��}Bo�t��&�&��
e��\��E^׭{��/�NK޽��DX9#^4x�C_
jK"���w���C��j�M{��.��(,����ր���+M�sQD�Q��c�T�P^/4�y5���@^+/��'w��4}
����Zsũ���"�`W%��
�y��GIpC���0��:E?kݺY��Ɏ+	U"���5U�@��Sx�W�����.�0p���Ka����X}����:���]z����I��nN�6����C�̦�߾uQ'�|䘔U��V�є���N���=�?��v7�	9l�&m�O�N�b��{#p���G^]<Mb�H�d�|r!��q��؍1�����a+�n�a�|)�S��Z6�>/��	�SJV������N\�*��T-�@vf���V��O��!h�4Rh�t��LaH\d�,�Ӏ"F�'aKDP��o�(�z�
p�=��c��wd7b]Z�8p`�"2����X��:�"�ŋ��׃�'��H�����-2����s֯�{�/�Ǿh{�ThrĐ��!CT0b����/��b�
����	Ԝ[�9�>�(^��0a�tv�av؀ńQ1�So4�V�x��E
�Nl�n=��˜z�x�ϒ��Œ;�ؼ��Ѥ�$���.	)����_$��1(�}�5$ӊE��P۔��&�~F̩��8���ޫ�`(1���E(ѻ��&�G"�T��¹|���b,i��(��(��1��8��W����0w#BS��GX��K�{_g�S�.�ф6��g?{i�֛��뷛��⥶�v=�vlTRa���dځӖ�Ȕ
��\v��힁���U�U7V͋ ����*5}�$2��uC0w�҇A�å�ήC�v��E���L�SY��>{�4&��<zq�D�ADh������B����>�~�MjF	%ۇt�_��O\�'�,}�%�l)��h�z�%ۺZ���y�I�F��]݂�Շ_�'��7~�U�)�<2N(�;h-��P�q�]�aV%�?y�y�N���M��	��َ��y[�{[�h�1r�#�}B+:>̮�ׅ���N �"
��	ܖ���7A�q0������t�#I�$O*}~�����T��w���D�E�	7^� ���ٝ�#D�(�%�M�*�6X>$�@p^ ���
��")	zA��G���%b�>�>�T�^}��;�
�O��ǘQ��;c-/
^��#7w�Vt	s&��G'*�-#�צ�����Q%��^M'p�c��"��-�W��+*m9z�LԎ�p�������힒�{ɑ]�}}��(�b��0}��;ax]����t�[)��Q��@��]�g�Д����vÉ7g�㮆�'fToJ�fȬ��"�R���ۚ�˫DŽ*
S?u�=95�j�U�!9F�9��j.��4�p|�P�{wΔ���"Nz(m�W`���yخ����`Ű���Kf�?~F��m(ȑX�0���s�r���6��D#�P2	�='����H���BL"�-0j�0d�NG����̏r�F=/�t��u�?�"J�u*���/�^]2Q.U�����ԩ�\��|�O�Y�w�/^���p�9�ߡ�%�Ԟ��v��%���(�-��FʋkB��e�Nk�=vuP37g���,��	�}��Q�įKL����Z��>��:M���N�⏆���/�"[I}II}{R…�w�u
�R�_����Kn��x�RFmX`HS]��}G�ŝ�-g(�K�qA��M�"�����qpn��8o|�5R�g����1:?M
�N���
<�/@����U=��x���oZ�N?䞧���m�Yq���o~Z�7�Z\�Cѝ���-�:�O����4��u����y��	��=Q��W\A�F[%2|���	�BbE�6RM�|u������B)�~]�T� ��u:�L�*|<��YR-fgg}����L�b�u�}�aLW�W�ЈR<v�3A/VK�	�"�������g�Ԥ���7�vDȉ��o�n��GC�#��&����}��?G�p�.�cF���x
v�n�Kp_w�}^������
�8
D�������P�X�@j�%C���H+�O�5�����8}ރ���,�ψ�!��Bp�����=��z����x�Zm�h3����@|ُĉ���7F��^��Qef���^XDŽ7���J|6��ީo.��9�4����O�˲|!�,
E�(�4
a+�[Kp�
^�Ŋ&^�j�Dth)�b!�72A��yc!��$��y��� D�#��4j�oH��Vp�	����ٖ�O'Go���Z�P��T��1;�!�*�7����
��9�t��/��W���ȩ��
Ze���n�ꪞ��vMOL�v��:{\�~K�����n���jj"�)���|o����x\W���a�4�I3rXڍ=1�]�	�f"!
V@��7����cۙ�.��⃴#❍B���8����xq;�[�/6��P���.���]�ĞC�>��1a�%O0�<�;�,�A[w��*�
X�'����!(�=��i��}��&?��#�^$	^�2)�m4��sD��E|g�P�b�2�Dq>�����n.*�?�W̸x��(Ļ8�s�D���SD<\��"�5�3PsA90�7�@�R���F�q1x�od�YХ&���]�b�nʁ�db��zy�a(r�j�~���}@��8��
��	>���>4��J�.]���R��RŨ�2��*F
A�6�r���]��eH}KK۔��J��ҡ�ObƆ�������L�
G�hN'%+Sx�̒jU�,�V/�}�2�D5�NwY8�G���,�Je���A�h*c�幔‚�����wޡ�.���0��{D�x��Sf�Ѣ��2�w�$�F�-�:W�Y\���D,o�Iy�ך��nN�I��	�,i��)�m�#Y�Ǫ��j�U�-3���Y$v�%%3�Z��p��V򒲗.#�cNf.�5��d�$��C}���,�KSצIX�$fX�͊D��M�^uV�J�0R���s0=t�@k�T�o��RZ$��b�X��*e�V�E�W��ϕ�5��T0��T��nk��ޑ
��7&�$2�iy�ThF7�����u�bqe�y�#l�R�*[)I����M��k\���a�#��u[�N^��3Vq�אnL��(v�\���f�T�GQ�I7p��=3?��קw�(sn�Y�IS��M�g''g��aFm�L*1��J�J�2U,��O����}}���]�&k9-��D�����i-%�}jS*0������XX���W��b%��c��R�LR)��$M�����NK�,N����c�إ�Udf��I��$�D�Ģ�*$R�� f�LM�Mu�LձK�7�)lJeh�Z%�V1՛
�ڒS��.u��4e��l�J=�RS�j>��r�l��ڮ��b���4����%ǎ-Y]�#�,E�J����؈�]?��S�gz-K���=��:�b�����+4�A|h��FCR�(��"���F'ch�)���=
Ejj�����R��7�﫧��W*J�o��J����L2�lX����B��a��a��r��:���Z�cůM��?�'�-�V���<C	�^%�y/�ϻ����v�YYL�� �A���iˤI[��&mij�S:{��=ܠ���?�3)���?gՠ��N���%r�|^���E�����$��$����Zo�I�IM���C�ͩ<4ƻx���ij�V[��{
���r�T�Zj��Bu�T���4�+��v4�{Y�X�;�	X����ڸͳ� ��	 ׈�_�l��X�l|��ن
��b��q(:�f��j�M�+g�:R�?�1T�l��J@�׿����+�&�9��s�>��x��n����]m�P��Q�Y��5eS��0� ��Ư_?^�:w.rMP	ToܞL"�ʛ_��b^��GS�7e�ZUd����<Z�i�׈<Ol�k}���VM�PŇ�&�jY
��V�����j��dI|���Q���2��=�`H7��E���R�("*E��z!�Խ���Q-m�*�8���Н�1�QK�OJ"��R0���,�cW"�a!(�赺��L����nb���ޖ�N&�N�3:�\��)��h��Vw&�@ѵ�6���i���l
��,��>
l�X�������>�ͧAGM1	������0�B�ǖ�c(B�0lEguKP��pl
G��»v��h[!A�9�v
qo9����b\����#�}v�@�0�4>���
B4ZQ)�?ݘ�:>�u��X� vn�(��z�HE�~���Jń�s�(�7Pz�Xx��@�?n;����E)҃�4�E�J��ACuJ�yc>,Fu�U��i���Z:^�����{��P?��cY�ոOB�k����3Xt�5�P��T�Er�ׁn�*~)pD�����M�0��;bMA�폨p�[인�ւ��	4��]�Lv�ky��4a.�YB\��UE/5lbK2#M%P��J����vW�θ��n�p�����k����'`�@��ɴ�`iʌP�W��8Ġl�%�t�	%ʌ�SQ~V����pj*���$�w��^#G���1i��6��}��"vw�"��b��<nc?��ͦN��i&�t�~�ؤ���֭��:f~Y�g�m�-Y�`�ΔisV��3mJA�Ų�ɹ���_3��YUj�B�$,8�;DQq�����ܓE�,X�6P�+��բR`_P̋'�4Y�{[�*�e�7-n���w��r���'PŠuw
��?�u��:0S*�{����?E<�y��N�!7�Pղ��A�&��1�6l�'o�5�=���C��oJ�2�����x
^~�	���[���Acb-��~6��?���������u������!X��燚�������G�cD�q��n��-���&�h��ˀ�Hp�����:EG+�n�!�.<����zMh���9�l��b�젮�@�ȑ��p,.��U�i7�e�Q��j.��`)Ƒ�t�;��h��yAP��IظLK�q!���"���zF�Z�c
J�g��4�����F7eV(���`1L^5��B�+�������ڽa�]�-���j�l�ԅ�:�[Ų!�}!b�(����8z)	���_J�|�}dR��*��jq�l�Ͻ���KϽ�Mv��Dg5�Z5��q��.\jm�Ek6��md|v4�MVlq�dvԵ���_<r��&��M�ל`Oy���E�~�vҙL:|�Ư�0��g͂�aG:v��p	(M�S�<�ӆ
?=�&��g���<2��j��z��N�n�߿�V[��0?H�l���nۂ��&U��>�zrMZښ�]�].����?+;�z�����#��#J���z�����~:��vv��ۻ������$���3�1�~e�����ݹ�+t��J�G;�I	���mW�y�ؤ�q�k�*�dƜ^VX_<:7''wtq}aY��a#����TH��3:��#C�y�V��Z�Wj��U֕�?��;A�Y|�.d�7�R]���&�ODh<*z@��	i݉Aw�N�A�%L
@�v�I0�c���*�T����.3����9R[�VJЩ���,��՜�b��M1W�R
�߫�>EƉ�N,�`õ��>U8�z����/{��2�3Y��h�확b��^�āpQ����{�/�RX��_߲d8Ȭ��6e;���зk��	}�B
r�fq� � �Hˠf�ŬD	�ζ��%�,�Ĭ��m
?sx\��j\�W�W�UqC�S�~����m�lY��3M�>�q����s3`ػo���SL�4.\剶�jl��u�[��I��77쵥������������S4�m3�23��ȧ�ꑳ�����lg��@��͢��؏1��W��%`T�;�����ω�
�ExC�t�#�8*g��3�0Gx{�!w>滢x�i$�pl�ɣ�`
;f��7kA��fy���h�3>>��G�U�4V��O-����H�M֌o�K����<'���)m��?����%�{[2p������;��>κ��K���>�e}��}����ڸ�0�D���2`�TIH�nP(�A!6�Ƣ��2�h��k}�U�3��Y��ެș�t#d}s�|����'��s�|�\�P_��ξGփ�$��į8;���Bh�Q�",Ƙ��{5�k'Z�Uָߚ8��~�)��A�^�R�-��-�.fG��W�ԋZ�G�E*�.F��zӘP��������.$-J�}�&��\�V��T�Tnv�������?a�/'�n��-{4�yʐ����`ʡ5���e�9<�4��e�U斕d�T���	U6��?��AX&�튨Řf�5?M��A����6�eb�$�d�`�t��%Q��p3�`��s�b3�N����n�MSp��U�5�G
[�6C�n���q��Ҁ� �0y��"�U�(t�K\�SR�*1�S$AW~��g�S��v���t�QR[������
��%������Z��ԛg��X�o���3c(|�:c�(����s�V�l��`�n����Hz���*_��~�uz�<J9L�,���,3X�ӧ����X �
�,����t�RYP�����%$S׭)]��d��K���nB�d&�n&|���)�ò�{���
����K*�/���~4Y���k�N�_��J�u�q��h�@����kߟm���84@
����"�b-M�/g�.�,��@hL`H���.	�}��k�o�py�\�#4T �3�qЎY��cvh�/a_�I��N��O+�U�i��
S�V1���O�!�D�t%C��ԯP4`��@|��&��8CP_�º�OV*��^��w�v������Y����7�~�E�U������zD���4:
f�b��ʃ��HB��k�s*�DT�6tFY��e-�}e#t�5�}CŹ�Ο��z�B��Zs�����	���#��C��8�3k�؁�0!�\M �z�`E!hЛ=U����~��VФ�U�Ƥ�Ҿ�=Wi���0�t�ն�ş��4���<}�K񬗱���ā�a)*��[k�9��'�n�JG'�������Pٔ�	�0�u
��V�Y��T�J&Y�c���D��$�ϫb�r��<��oVH%��.��T�(�O$��
-ӶD��\ �jK�Z�4R��I5r����cѧ��Tɜ�kt�kI)�CB�u������P�T�`���8�M����.o� �0��$T�	�0a����W>P5���X"�ݫ�~P��]���#jDy���%K�j��$��-v!��F�~3�2ܪQ�5`.|�ap���>nw���/y��#?X�##J�w�5��(
�����Nx�4슩q�V��^�����=~�R�'Ҫe,�ҧX����M�}�j�J-�)T�:�א��w�3r�T�'�����x�}scF�y��7k�
�V0�\���S�M�(�2@��u�:-YzǮS8���W���[4;0���q��Ʒr6�SBIX��qL���t&t�&��#M�
�����G�#�&t
ڠ�4�7�0݆���I���p�X2���M Lu��w��Do2�`
�%\��7߳��g�
^mlm�W�)s�X��7a�o`B���f�b�nQ��1J�)�?F�T�7ѣ���;��C6���XV}EBq��:��ٗ�zh��W���*S/�'��W
I��~F,��앀��Ud�
�A:�ɫ�+�z:�b��4'�Ŵ���؉�szk��ܮ�.08q/8���k�Y��H���E��>��Qv��ŋ����g�O�~aժ��b��x.��쨽���'��T�Y�&7(�w^;�����[�Ս��$�\0w/��6p'�"�>@�'�w.XHZɋ��(���j����X�yc\X��{'Dy�>z-�z�x�y�>xm˔���ۜS��^��O]Ђ���{��E�&`��`�w)�+��ySL��>c���u�a=$+�h)V,��7�R�H�֯a=�U���<��35@f���F��9N��i@6�݅�L�D�Q�s��-�cr�졂z	���
��W^׏�~���чS�2���5�$��Z}�݊#q~��d{VF^�ުԚY��l�&'��Jk~O�� �V���{��W��|šG&�$��d�]���8��/�v�Dj��&���7��x��Ҥ�U떦���ʐ3���{W��(1�O-����T��}2�����k@N�H�:e �i|�}�,N���j��$}^�\�����X��,_+V�r{-���s�v�7d/�zk�ux�C4�9�9/���%���V���<��S���[ƅ����ٷ��_��:<�}3�^;[��l�z��A�)���d���}���-��U�������}�����sQ������H���:�z��3
\D��_�+B��3F�	xh�&��>����ϕ����4�]����j3�=/�#���T�Q��c�ϱͫH��Bw��_��Ee�^f�[�џ�3���76N3�w���\�"�R���1��v�/}}�"�O{<��Z���@!�g�(��E��=
5�uW� ���n��&�iK�$j!�jw%P<��T�<�N=���Q��Z�UA�nŀ82�+�^Ra>?�1	�E>��9�|�.�mV�
�
40
����l�<kO6�ҋP�$K6m�����
�&�w63�dV�k�'�Ո!���o=�t
4H���Je\�r.mOa�z���
*Z�ҩ�W���[.s�ߟV"����k>���K�҇k�|2A?���g��`�f.�}�W<wպ���+�����~�8�U)��-�l}P�ժ����*R3���7�9~�>�F�\���[XQ:�J1�D��~�NN�*(|C^�&�@���G���j��1:�;kN�\�	0�ƅf�Ө��p?���$��0����o�G�G�߽�0���Cは/�������z�����F�4X�~�d�IE���[��.����9љw�I���`� 샧�'�a��b��$~�+�/�m��`��.-�� Q�b��'͛�"+6�XJ̓n+�fA0�����H+�l�_��sʴ��!�-Td�ؿ�O����dɜiL�j�����N�q��J��ɘe���O�;;%G�'o����;"),=�K��
�][��� g<�F�h�.��~�[�?�
u��}r�����f�2h^�3���s�j��ƾ���5��q0f� 8���u�Ĕ�,'���5�D�k��)@?\��a��^�=M��Z_1�&����c���M�Ͳ�k���׏��>��|���M�o<�<
���4/�c遷�<�l�ٛ��,�v�߾={{��5���Y�{~�'��=	,�\k����^&�'0�tX���Dl}�F��G*��QT?���.�ZۂK�
�u-Z���Rhu���0��!$7@d~X��ɢŎ���xx��+x����4����V^�Vu��P��i�f
���w�z��9i�{V<��ї�Kw�#=��`������~ёޏ��_���ф3,1&W->�xj��~����ܱj�a>�t�x�k���la^�3�qn��i�i�З�1M��Ɏ�H�͌�و������
KQ�j�1$a�g2g#��K|�!�y�eD��Q�Lx�X��{i�4�{{V�����N��l�	��Ѩr��|�_I�G�$iu,�N�?TW�߂bt*x�����A��u���t�A�Տ�7���Ѐ�\84�d��ه&��I~�Xsu��l����0eZ�~�rsUJ�kG����
)�2S~�m��Vy��n#�~�c�hV��A+�c%�YY�� Z!���W1������t���A�1y51�+A�E��8��ICo.��V�3��['��1�;��S�v2Q��:p�ؽ{�/f��b/�����vܽ1<I$U�
�PUa�hTRI����ԴV\U��j"��RkMoy���Ӈ�
9* ).�:{f��=�Ͽ���oQ��j�%k�1���y���T�}�[g���h��n4�4�\�5rd���]qۇ�C�<i�̬�𳦅�l\��E�O����C&Z�*ZZv�i�-��w�����*1��t)����S�*%/��R�j��J�5e��y3�֏W��l�S4j˔j0���4�ܮ��ղ"��aDwϘ֯��F8�Oͦ�&��}�6_:-�HŜIE?�2̓���u�q�Cg���b�Za��f�J�j�4T��L�
J�c���X����h:p�{�[`���:�N�6�84�����J&�n�F�ٗ�,-P2d��_
'1@�2�'��r�dD*�Q�����e?<slj��I\��x
�+��ӽ�Đ��vs�.��b	'���YE�UpC�ӥT�)s�N'S��mٱ�9X�x��mS��D��Ž���1�ON������hS����Ve�湕�E�T�:0�Oap��Y���§Ff~��]8,K)���7��BTpK��/��Ue�dm�Az���kT��`��c�o_�e��k*m>��l��^:����f���������y%����6?a2Gy������8�r�mng�ô��0.�ׂ~�X�nj����cpD1�N70%��p{����UWܥ�҄�oS�(آ�	�v-6=�C=s"�n�"^�D�͐8'��ݿ��
�ڊE�BTPAE��U!�DwU�I�O�e��p$�F���Zo��|놪��'܈s!}��q�"T��P��d����(le��+�����
V���W^�Dl�Y��s��:�a����h�I�`�X��k�����Uq&HI�R�&�
����5�R	�	
�r#�F����<oj��25�O	�	�jv�IS��2_'z�"�e�l�+]f(�:�xt䊬��!^G��@��<~�$;%�"#?xmC��}��\x6�4�+��֢}����+��B�6��ԡ{�v�d�d�N�?&s����T����ca��x���i����R�vKf;�7�C�U*�i��U�व�fZ���4j[���o�`@H��2�,W����i�Pr���U���)����L	{�<��\\c�@���sN�D�:�_Z��h8))zo�^�R�A�4����f[G�h�ml[���Yoo�m�
J&��N��s��KŁ���/��e���(���i�lX�J��7x���$*��1�p<�p�iJ��@/F'�Ƴ�v��xD,�)�N!At!f�=��ΣCs�^p�gs��������߯��x�c��b{xT���N��S�@�`%	��I�S���O?©�7�q�^�.�3l�T�Uf�����>�-���M����>/?�}�D��Le��J�����{L��'����:�y��!��=l��g�w��K�sC�8��3�j�wV˩}.�����'v
c���U����Q)I�{W�-Ly�}0W�_훰���S%�����YIV١g�D�7�;���;Z�X�4vh��H��;��n}5���>J1�3��U!�P�3�xd��}�?1mډ��w����E��R`*�A �36��?M~h����Ix�Y=	2��8L��q,�6�h=΅��P�t����{k0f���7?��rF��R�����8`�vG<����ؔkTzgL+V����aL�wp
�#�
��&�ɼS,Y�~>�o~3b��!w�cE.�� k����,��)���O��>�������e �1z<���g�T%5"�<O0��;���J7�Քc� ���vZub�o���9�� 
|DIϧ���\,.�M^��<{vrZ�|���l��	GՀ���RE
h�+�hN���,#O���y��ߛ����~��l�}��������MMGm��@�S��a1\���q���r`}X$b�SRRe�ߎDK!F.��ӌ�ޥ�В�Bݧ��{�b/�Xϐl��b�01�v�.LQ-�c��dX����B��G��������AWZ�S����Xw^�y������Z�$)�퀜`c�Q��f��qوa�����1X�� �^j�e9r$Kf��d9�Lh�p�qը��`#�t��dO�Axm�~ >���<��aIŽRZ�P3C�y(�Q��0SrO��
yI#l�YeRivff�T*M��I$E���F�"}��
Z�2j�,}2x
k:ح����~�(����a��
�/P��{���7w3��߮��l�g������J�-8���h�|���W��yw��?���W�m���x��@�_�~�>���	�V*1���'�_�n��F�BQ���X
�!�I'��P��!q`3�Q���ltS���tb‚�����	���/��<�;ɖ��?��&%�yD,eOp8jb�>��
�@T����ᄊc�η歿Z��y�w~?��z���E���g�Z��sq	�s��n��ݴŖ'��2��;�����͹�����G�z�,>���#Q�Q��?_���bN��Ɇ���Ӎ��i���v��njj��~���w`�GS�^`�=�O3c��M#�!�ȧt�xۄ��~����.k:��D!�,茮�?�:�A���t�$6p9�*�> bi(�[�nϠ�A#�鰺I��h*~��[��Dqt珓�j`���my.� ��7���e5/����6u�_T
BXa
��?��-t:������U��fr�4R�J��J��o��E-���-j��#髳,��*v����>�&�$Q?㰗.;Q��<a�U (�b���t%�ա��G1*l�%�:�ӣ֤��l�&ĩ���d��,�cqku&Kn^��xg#V�i��؜��k1�n�'��6�09�+�l����|4j��cS��]�V��j�e��A[��)��V٤O���Y�Қ��s�]�7gxzM�/�]���K���ҿT�af8g���zYw��b;�I����6@^�ԲzHI4Z����!�D�ћo��l��}!
0��'��\F�ō��2j5�� v��MxK�UM�ܻ�-~���C�g&�
<~L�vU��3
�� �[���|V�\�f��V|�r��9��ܐ�v&��q��o����G<�7���kZ��}�)+Ig�k���ʋ+���ɔeҙ�9s�
�9���h��O�0�Rk�+�_��6�`S(�X������:��G�i|�K��o�_���v�����fs0Ca��&����������<�7(�
ه���H2��*�2b6��4����OR֍��}q��rdK,��WS+c���+��Y���W��:������Ē7lVCn��d���\�O��0�ƢZ|׌�����Z����1.k�?WC�t���E�jt:��dK]իG��>�� ]'��׬=f͚S�'�
��3rx�W�˯�f8�{���)VLo0�床��|`��;&ޱ~Riqì�^OMN�T�u�G��:���I.A���R(��_�M����o�=p��Nt�M�j�7���#�~��s��&#�K(�=<kw�r��M�X�wZ�S� P{����D_i����5��ݦ��v��K�~�eh�*9p=��Į�Χw+zB���=�Ԓ�\��s���V7�ӣ}�i�m5�Uk����	z�G9�r�k�A3�W��'Z܂|�Ȉ�C�'<�FB�o3�>q0:]�p�N�8D�G^>��HY4���׻�]�F�#��
÷,F��h�L��u�O�'zܴ��%���*����cvv�d E��lg���:�1h�r3�5kg��Fa�t�u~��ˆ�����m�>џ�z�9q�L�I)U��<�g�x�
_�ifm����љ�`��.���l��8�s��dg����鶍yX�Wx�6ݴ
�e}�ư_("�/�[0:�ӻ��އ��6:���l�6%��P�,4���
P8�u�,:��N/6�Ƿ�7���.A�ߎ��gd
6{�r0x���؋LF"\b�6(����%D��"`�F��v�p�g!b`	�_��J*eK83|q(�Ԧ�J���>W����R��!&)A��|r�*�2�H�8���%ݠ�Je[|MojP?�C[�8����ra�9�3{c��bqo�5&��0�
4���%�e��ٳw��<<�`��� [�S7�߇�?�����C��Ӟ�̶�{"��yP�����n����)�hAc���W�z���Z*����y�b.u��rܚ�[�%Xq��Ꮳ605����n���'N�y'ND����~^���%s�%��藂]ML��c��B��uJ�D�O��_D~��_�8��;U�\W��#'��s�o���MgC=P���9���NWǐ�u0-�ת׶�Nn�k9tz9M�F̍��(�"���QIS�?�E�@!&O�"��>H@!�����}Z%?
�����?�	��q�x�6r�D.�L0"��*r�8"���GO5E7�9���?Е)A�ֆ��u)�~Q}@l��� Lrz�\�'��I���,�\z�ӷy���M��ڞ�0�`�����V�+����έxFGO�_�C?ҭm��2h0���~����|l��C��l�q槇�L?���d�n��O�u���D��`�mp�t����GD������Vf�롷G3�H��	>F`��h㖋mp��M6�\.f/�ђ�E8��	:|12ؑ92�^
����ԍ5k F?��p�A��
��Иwd�<�	����w=6���J��@l�^�������}SCG�mr�������f��%[ϧg����i��\	�[�x����,�ރ
u��*�Ժ�0:
|W�l�rJ��i���6��}�w
�,�i2�ִ�i&׈��y|�[��I�0�������C�^ym�r򑯎�i���&�"H����m$��ۖOv���y�x��t)�^��F�(  
�buroQ ���i7��c#���R�s��M��a�v���)����)f�DjL�(s�b�&[��s��d�Tb1��s_7�牀��:�U������_��UX�/ϭXqX@	��Й[�F���AQJq��#?����)��ߺ|�V}+-H6���a�Gt��S�x�Yq~�ㅰ�Vjh��W#��r���#1�!���w�48Q{�n/��������i=(
�U�-�z�FnU5�˖g���R�qw`�c���4�����g�e���j+�6C��9e�in�33�Ѭ1[w���c�⭽�ҿ�ˏ^�.L�\�x��K��1m��s��\�rG���U5�^4�Z��!�Oѷz�h3Φ���w��ye��ƹ;�R=}�&��z���(��6�It���}	|����ZieݲNˇdK��ۊ�8�'�slj��	9I�!��R �j�p�%�p�%�H�Z�޶�(���h���ʎ�Ҿ�~ߗX;;�������<���<�4�kA`��6KTV2�^4���"��?K/�A��nyܵE!��JbG��*/����J�Z�X���?��3ҹO�;��OCBp�`����D8o�r[Lf����5��~���V;������>Qq�����J������D>�C\K7���]�A-�a�oy�@]
"
;�v�sHH��'����&����!�zX��X5���g�ԞNpCM�N���14�^4���x��F���~Fe2��1����)�^p?�#fJZRԙ���1]�����顕j3�R�%��i5��!���̐�?�����B{��WJ-�sv���a����{>�Zi�9O?��W�������'+�Ӽ�Q�J0]z�L�BVQ=>�J�}FS*)ƉFZ5�˨Vj�	�p4����]��!n
s��Ds4���3�Q:�pӞ#�
���'��N%;g_��=� �.�2I_Y-,V��H���>{L�Bg6��ep�;k��J���W��"u.#|
��]H�������(Pڰ��������F����t�oQ���,�V�XST�fA�ápuN�\[;o�����l��BME��hZ���ة>g�6	%�ؑY�$h�0g��gyX$�^�T���D�V��Å� �b��$R�rIh���;�,J�>`���i9�� P�*N����J���}�׌���.G��Be���i:㳙���CB0�1�Z[-O�L��|9���uG�̘1G�\~��;�]k�L�C�S�Y��bz�	ɪ�:���Q��R�����n��NH_�X�>�����҇B�B�)�,l}�U�1ƙ[	jV�]Ҥ]/��?�ϝ8i	��~%���I7モ���l�4U��b��5��˨5��Q7Sߣ�;{��ȅ0N��|�v4�-�]�����$����e�q�����2\Ni�%b�d�.�3�]��@�8m@�n�|7��\9+�إ2�9�e�9���?�G-���n@�@��R�H���T�lI[���RV
w=b�C�����A9MVꐗ#�bPƝ����&�b��f.A���@�c5I����ؚ�=����>,�/�eM|ဌ����b7dI~Ќ��Ӧ^���@�5p��|��n��`LZ�A�Ŧ���*�C���}d��.y��<5P��U=kR,��5D��«2+g�/
G�3�2�
�S�}r��.q���nƬ�(^��*p���ٍ���9=\�<����,�Q?"�|��p�)�+F�kr�x���o>.�����|4߅�A��d
)S:�ƦI|*���Έ� q�Gs�6;^O�~+r.�uD� �뻐�%WC���A�QTیu��ր�W�3��e�gչ+��H��D)����)0:&��p�L�N��t��~�N��m���yF�yOs�[
���`\k���y;�h_���e��0�@�.ӿx�9�?f`�/�Z^���}�W�BHR��o7z�`��@�Q�4��Άб�����L��w�l_7�^=t�=�SU���Z7HGq���g�E�G�J}9�R��c�jB<�T��M��B�>=)Ĝl
#=�v�~�����x�q�vwo������D��k(���k��.�	�@���@ºk!��}��!��HZ;wg_8�}V��ܯ�pt��>���׵>x4G�;r�>�p<8"���d4\:~F�B���/�P�Gb�fU�ޓ��J�i8�ۆݹ��uM�5|35��.a��xn�o��X�0f�1K�����4?��szRG|���{G�gjC��B��*���:����m�6H�}�W�u{ˁ�6���֒B��-�yC=�Jۼ�;&[8��ի���4�|r�q^��9������pH�/U�`mP<=�c�x�O����A����X^�kC��]M�I��h'����P?�Lq�A�C�`�S6ħR�_�h fA
��tL2�jX�BZ����`�͘�p��iDl��JA�Lx�f�ˮ����Ѻ�������ԘUА1����3�CO�9�Ka��|�{۾��T���z�%��E"˫T*��7C�xvi2V�d�9'�a=�z�ˣ�VI���x��F���:��x-�
�i
!p����;�m/�Y���p|x(��~���B%��W��~�FA)�1S�~�����?E4���=K�R���0j*^F�R0*9GH�g�PR�
�Ar��X㲁�xkҽ��쯎����[��q���-E%�C!P�L�4"�z��ڲ��\̛���_�L�#e"�ք���D�WT�SҁP)ǥ���
`�Uo~گ�9,O�`g
��^O��&����W��K5�0��<�0�Ħ��������]o�G���p�
���+���
*��H��EL��� �b�5�pd�L�_Rӥ�J`wD��c�C�l��<�lV�s'`a�bpH���������؃���Y��"⺽�~p��.��|�T0�?�(�CҌ��Y��d�T�c���ؙ�kMC�ba�2x�GM�x��ؚ��6�HF"�"���v G�h��]~l�K���$n(L�bn$E�-��ѐ�po��aT��3�'�f��r�I�a�l���4�;�%�Ն���WE��Qj�+i�"\�6�u�2O�����,�G�>n�%-u�'�w8_iJ�qX�����l0kD��>��%����K�>��g���g^Қ�(a
��󬬔���H���΂�l#�*�~������)���e�,�3L]�,�.p��`v:�W62|���]�����ţ��^J+���q�XrJ�Ű�/�a��b�
��`�ݰZ�<��TVb�;o�ßv�����	^���Ї�@�IoCe�W���\�c7
/����-��dǶ�.���}���.GK�w����������e����O?}pr�60�����l�zo���v��>|�t�y�ֵ��B׭�Tup���m_��%�m�z�c���NE�(�O�D}�˹�8%ٛ�	�/V���a�M�r��8NJ
�,�3R,���w_V^�Xk���� ��a���'VZ,��CL{�TpU"2vh{^�scS�*1�b#�O�QCm�xf���.{@(*��Fz孷A6/V����f��p���'�wG��`�)gI�	%[�?�hN�}��Do.�ۇ�̡c��ܴ�m}��J'cy� �
��*2u��=/6�u��X8h��kll��eT��ŏ���P�7h:�xX�hxQƯKh
:����a׈�~RF���%
6�.����x��0����F�s�u.V��l��t���Oa.`Epv�:��V�v����q�dE&�;HpYs�`P�k��3��$7�L�X�ʎ&�x9ݾ��J�R�35�\���zMp�hg�>�0[��Ġ�[����JN�M�y��F�Y�������ԏ�O��
f�N�ȼ��믨Z��w��b!��;;��kԜ�9_]Բ�?R�pD�,�V��]�Z�n�6yA;S�k����Wi`���� ��@]�!t�e�Km&N��̈� tpT�ڄ�?D��!~mR��+�u���&
�Z�9"�O�
 "��FB�M&�A�J&�PD��zP_�N"��ce��`��:P��K�'�`.
c Y�D��D��g��:1�Jj��rQ�U	��yH�"6_zH���7c��aO��2�i�s+�����sz�Dm���^��uK~�
���I�\J��lذ����S�G�8ӧQW}���{��J����ޠ��9Q-r�y�!pF}F�KA
P�}%#��2m�W�2�cMK~??X͈g�f�63F�{��/��C�xU��~hx���_�D���0	D/�(�g�[��~���=�jG�օF�t�Z��.;�NX8�)˞9�3Dk��k��pHα�6���A���#}�w�{{�N��ޚ�@�gDvYv��,[��a�%���ģ5�	�;�nP��s�;sZ(x�pѐ���+�u�G4�߇s�����>=%�s8V�o~��Q:Ot?����5'��f=tg�t�%���_���4�-�9���\��G�p�Oϒ�E��7�s�0H��u�L�c�W��@B�T�]��n�����yK���fm-���1�����V�|���u+�f�Ï��'�����7��6g#�w����v��7��
/������F�)ˇ/��N����w�'�gH��\��Ǩ^_�9]>3�O�P�h4\J��n��x���I���A4�]:2�p97�i4T�z��YS��FMa,�qXK����AJ��9%��+dDF��������ر��DBF�t(LF_2��d���u"�ၝ���E9���*���D\���5����A�5�Ќ���o��a��Zwm�ۛF��^w��L��ꛆ��S��c�X6K+5gff�g��U�ߛ�vK��sn��1Qδ��ƚ*�L'S]�+ �~��)�WOK%W��'�-�3�Y�P-
Vh�U�<�į����V�-"��aO��_����*��}3n���Ƚ�]\�g���=tr�	?|���[s*������Z9��	�7ݶ�wͥ�p|��xb�h�d�}����-��P�*�vsӋ+�I�4d��ʢ�|ciS;<�|��ʊ����}帤�F�9}4d^v
��dy֨��A�����2��
-�d8ߒ�S���80De�D���o�[�Ā=��9i�o4�g�pìi5�߾�����L^�d)�L�X�&�s���7�ts���X��5KI�Ճ�<7s�e���ajE�o��9'��F^1#��L9�����>�k��G��Y�ܝ�f�^L�MR_g����S��du��v�mySgOOg�r[S�FL���������8��J�FQ�x
u6ʆe��z��>z�7Ʊ����1ɰ]5��Cքя�ҡLؤMf)7�&\
Cʓ'ky�D�=X!.�M�Xuutpsر��^o��S�*�qT�8�l{%�zT�
�TOmػ��j:�D.[>*V���Rn�BU~Q����{ڞ�y�&W���(�Z��
ɮ�v�k�:	(R,P���(�����
5�\��T:%�E���5��k2�U�::f�g�R���޳�!Г�d8m�/S�����t=��Z
`���I��;�B��������VUaft��e�������	�0)/p�������!cU����JƧ7ŀ=d���!]�3iu�+*4ƀ��3��s$\�(��R�g��E��������m�p���X7��y���LC�ZQgin^�Rvzi{U{|*����͖:�:�+�w�iEHaW�q9�U���u�O�Q�Q����=>���mLi��\�@���W�icU��u���`��̶��V^eL���?�U��IT�ch|58��rTVRmS�TQ�+Ř�~��cՎ%p����������"�覫!V��S�`D/��\d������߄[�Vy!��UE��d…�[�[F�ص�¨�A�C��V<4����m,�i���)C;�w��f��\�N����r������+�K\ �֊�lm��N�����}W͠�޸��0Ӯr��a�#2u��SǼT���!z�؊�?����n���+�k�s��~�����W�V���_��W�w>ҁɅRS���I?�;�|Tɢqj5"#kU+�+A�14�r�F�t�y+IN�y�����0�MYcX����p���dW>��q++Zb�m�bilˊ]m`A�Z^�L���ޒ�|X�b"ku�~p�t8Bf�x>[�&�cf��0{
����]�����3�̟y~&�H�3P���|m][`7T�GY�rfn��,������k��f�x�/oK�_���
��*{���t����@�����2��#g��=��/���{��Lg�5S?�(�lK?òc��!_0��3�	�γ%��
�
�ɰRO׎��-S������m�r��;�<����ɪ)��1X��ɫ��l�̊%�"a ���	ΘG՞��v'b�X����Z���ȝ�܉�������l� fm�"&�}GPX9{ΰ&ߐ�R��asfW��1�^|���q�4���t��؍�Dӻ'w��'�wTRE�dj���i����}�GU7�c.�.}�!.zs�Em��j��1��ݐ=�0Z�,S��qK�+��J,q����&ʹ�V�
�)A{���0�7�Ы.B�,=�1yd�q޼��΅mIƣ�*�?����	2�|��*�0����V�B'G!�$�h�B��Va{�(�H���e��Rz�q�#.O��b��{�o�2E�+�RGqaaa����l��ZR�J���-[~����[�ٗ��V�-T��l"���C"�,zw0�gѬJƩ7+�f������g<�Džo�����*p��RG�oҟ&���%c^�~[�$��[⑩.wػ�<�G�wą�u	���a���D�Z.n��&E�uF���C~����L_��3��ϐ��v�5䙾��/�\�!���̫zB��kh�y�8!�� ��G��JR�^ό�*�_���4>��S�k6�A��\��6��n�Lz��#��UC�ر-�Ww���a
�HI�I?�� ���2P���j�&����%v�sh1[M	ћ��r����%݈$wH���d��~A���7�ś? Wa�º�G~�*|�M���^��nY�R���o^�zz�j=��#[ۀC^�W��b�H�Ro�0�
sd�y46~ZC��7�{�Ɨ�����sݳǟ�n�8d]�I��U��֝{6N���Jgnys�]���7��,�m�9�F7��	���|s�湟3�i/�峹7���fe6ʏ�z��&1>�+a��K;��i�
c*��k�پ�m۞Ρѕ���s��0���HzBτ	=�gW��V�OR>���#9��~��Vs#�y��nIUM�R��<��}H$���ո��6����K��.^�P�����}M�̓�X�O__,��!�0�r��I���]��^�H@���L�d���\LӤ����)5mb<��O��J����D�F:ya�������/,%�׿���v�#�!�oS���� 
؋��Kn�biBq}���c�׈丣���&�v龖�V�^p���%�Bڹ�L�YL��LH|��F��N�
��F�	;9d��3Y�	o�#A����b玲I$^9J ^�o����Z*E_�|D$�_��k56�����2�Ʃ��Lmȟ�x����m��n_�ɱ;'�.6���~�ģJ�%�E�g�/�E5�E.Ì��sn��8ڗv	�t���Dx�r������礟/j��;�QR�nʋ$�;��O�6�^G ��Ez��Y���g��&��UuB�����W����Y{o���3A����c5�Y�Y"q�.��SF�/��Meg�H����4��N�^��3��\�m:���������.��z��69lP�P�i}���Vi�D����Ty��7`�k�(�\fs9�H�&Rv�Pi�*��@�h^߼N�5�kpW�V>IV-��ZP+�B�3�5p�%��oN�����ਟ�q��o��D�
6q�+���uVh�Y�ᔅ��ё�BVӊ���*��b�K��h�.8���̲�6���_�^�d�dy�ԠԘ]B"ђ)��,��i��37�ܿM:�_�i��~�X�@����,�-�Ѭ��,}�pa���<2����8����<�|{����ޝʰ��~�Ő�;,j^-�@��d.��=���4�cj��
u
V%]��8���})��Ϸ���$'*��K��	�X1��l8HH̛J����41��E!gy��,�U=U�=M5账��z�GV��!�=G�?l�^3�B_n�evM����IY�dkۖg����5�:�ñl�fp�l\Cl���;�>��m���J������_����$�\������?�7��wj=zŊ�q�
}Lx�	{�o�FQ�.j.��ZM]Im�n�vQ{e���W`�el�|cΑJJ�b�L�sI���R���0)���-����
�;U��M*��C�*.T��]��<���
�z��]ʗu��@V��ޗSޕ5����3J'�Grd�)��,���ꁪaWw�iְ]�"Fs�-aאb�J:D�r�1I���'.J	]��-[�|����:�j�6"y�F�vju/��c�Y��x��|�P�/���A�ޡ\(��.�]V��H���!��O6q���r�����q�Gv�X?$K
���q3̘�&����丣߹|d:dnI&�.���B�Zz�b@�&�[1�㹞��~�_��OG�>����բ��h��^��Q�|��w4]���`��]��w`増�s��^toǿL��ψu)VB�l�N��u�x$�V��6����}y�q�c�<$^�G�VM�)$��U�e_y�[��ń�$�`xK)J�_Sn@�6z�D霘�1���-��=F]` P�{����7�>0����!Mz�m��)��?�������7?�y����i
��XyUUê�Vl9�U5Q�y,4(�/��5\}�?o�&,{w�)3�]:�~@}.m�@k��&�^I��'%���ŏ�q���i�%O�(5L��A١���z�j�q� ~������q
U�@�J��X����g[��_�RE�J�rb����r�ֿ�|��v���� �e4L�E�Cލ��f?��_^r9�-R��7~��'�rfna����@S4�S`�@4z��9���Me�`(x$������[vrQ���
�p������
AW�_v����.L��1@!��Cd/;)̡�X��?x��{;T��?V�v�a�vՠ8������m�rqF�ߦt����>��_�A��?���P5(~N{�'\:o_\z���ʬ�c<�%�}[��J�5��<<���_����yR6$��k�j�~F���Lt���ɦq�N���DrÄ{��� ����x!E��:��0���r ��D�8���ҡ��hWaY[�p���q.�p�Qr�Fv:
�:&!=Q�Ί�PXǠ&e":�آ}0���hԺ�A����
oU�{��6���:��+D�޷3�2-m�y���,ͿH[�>�`�P�P���tQ�Z8�f�����	:g�AQ�V�*)�Bȃ��&���1�^o)*���k�V�y,Z��/X��V˸E���J?m��N+���g�jGl����ч|}���kC_��s&`4��l�-�B!�W;�ZmH��5��ƿ�+qJ�(�l�9��@gQY�9O2�]:�jXڠUPRb��Ty�q[T|�,1�%�g2�WZ�B�����bh����u�aI,�{b�A�1٪D�P놜�z�|$X>�t��B�����wʞ�N���j�a��Nn��6~,
��Kڠ��uX�h�}y=HЂ�h$�����A�T��g��wLa엪�͏�1a�x�r�
�J���t�<��&5Q���)`���6/4M��%���go��oj,
Z
cM��Z���p���Lh�֩gGdW��a����75Ł"�֨VFm���:jYh�ڴ�i��6�͛�q4e�Mݰn�1�Bt\�T1U�x�;$��1��H�kh�b�Ą�Џ��H�����1�S�[.�s���Kګ�d:�I����J����,
�~�~=8�p�Ӭٻ�ddx��
&�%b�(�Ns�
�ZF�sE=����X�x�-9��FTx
ʡ�6��u���sJ�n����Ԭ�xO*��(��^��F��fа4JH�۷���}wI�@-m��R�硢��'��,����(1&^�D
+1��/������������J_�i�^F"�����5<�M�ҍ�œ�KѾ���0�5J�@��c�����"f
�j�W.Z�1�mҴ�m^�d�����
oJ��)�m�[_s��E
��}�/�of��+�~��`P��]�q)��H����׾x�Ego��륾ᝁ F�i���� <���]4d+�>�P0�c#ۜ�z�w/��]�=�s@+ܳ�<4���-���#�H�w�4�f�EEi�xk��!���+T�-
m5�_Vq��&[�A)�f�����ӆ�5��,�(���>�,_mW�`
Ђ���v��9t�͛�Eo�s84*O��{����l�ӧo�	��LjF�/x^ý����^��&�S�P8��>��A&���::�ف V�7C3�!D6d���!X�|y:E��_%7���gk]�&Tm�c��VO�#P_�3k�*�"��_�/�o>|�����������1�r�'���X>�ҧ�/��%�H���yӳ�>����Z�j4һ�T@h��n�u����/~�L�y�C�a��aU�4�Wi���@~�d���y��G������Z�qi�$ݥ9p�C�@����&�sr��<>K1�ѿK�;J����D���,~�t���&�<��g��OvL���;^��I�C��J=��^FmB}d�C�,~�P�xG�2�?���XVD~��h"^�?�]n(5����2?�(8w�L�3�1��[H����E��l�7�?���+�G(���6}�[0�)��ư4
�A�k߄b�؝��k�Ŋ��uX��U�#�)V����7Ń��D��e��t�[���ٙ�>�@����84�� �-9����Z�.n}:���Ε�z���#��dh�!��
ǥ����k�O[�:���!�]Y�)�
�t��dO��r�����rv��P2�+�2�*T���EڄUj�PB�wK�Θ
=�����|�Ǥ<��3��n魠*ڿ�fMh�s�X>W�gO����N'$�u7��tAұ�A�����q��h�͌̇��D0��'�*��&4�0<BXFF�V�}�o�q|���߻�Gg�^��ä�kש�G������NrJ��w��s`Ϗ���U�L��:��J���^��	��c�k@�� }ߓ��M�$�?��t�^"�Y���S�N[yļ�+��]p}�L���FY>�HCA���qp��y��M?�x��	MzA���
�>Dm�7�r)y��蒾V�͍������l�1ύ�"wm�_\s	�ɬ�?�=OM�fR��5�U�C��ԫ�{�G�����eHa[�y����
�=sD� R�U�W%Rd1�'�=�uR�(/_� �9�ַܺI��
�"�%����;�0��ݎ����b�+M���G`�p�\�{��?sX΁R�K����V7��M3��y��>��
��s���h�)wd���c���yt�\��̌m��7�x���5~ng��l4mp‰�Ѩ�!k	ԣI�dBG�4CB�s�5C�OYb�jo��۰8=vMa�.��/l�n�����M�q�f���J��,�i��a��s2�`0:�{�Y�),fs~v�A�t��T��1��2?�+E1�V��h���cO=��B@����U�
X��y$c9��h���
����h�ׂU
��ׇL_�CAkHq�>�������yJ-��-?��I'��<��TJ#�2v��$d��1��h0�Y!}=��n�b�J0�d��N݊�T�l_9V9��Jk����m���{\n.ӡ�&GTA�B0��f�s�f�X
|,c�:��k;�u>Cv����F�ގ�sZL��W�T�x�c`d```a<=�|Ed<��Wnv�b|�F�������
��``b�d#�x�c`d``c������8�"Ȁi+{
�x��VKkA�y�<��,�5VIL�,���E����"�E"�'sj�����J��U3U=ߴ��K>�����Փ��g�_��(�ET��u���=O�'{?<c|u�>�Law��]+t�w���^��nD.�}k�zՇ��쯍U}ɩ�o9�:�΋���;��FШ����O��;��XS�B�[x���e#2U�o�ا�C��������??✼	9�Xz{w�>�	O3��E��*��De�[�=픖wE�:s�e�I5o�ÞR݇�G����=SB�P�s�|W�+�Ⱥ�	��}[0��l�]�1V����~�ٴ�F�o���M���r�����;�'�����O^gL���y�h�o����l7��/���ӌr�q3}=vC����C��HF=�ǡv���@�i�lr�.�r�4�C���үV����ldV¬�L�[�e��N���0WԿ�o�ϓ�iosW�wz:�z���Q��Y��Y��3���R�y��K �>?��+#�B����|�J���zj�����6�]@�UD-�P�v�>n໌u�;���W����O���MeFY�г���\�l@���*�!����u?�'�m������
�'�18��>�w��C�Ú\f�M��c}��~5���l���mo,.�}��Y��r�[�K����f\�y���B�G�y���o����C[�����
����|�E�E@
����\}�d<�z��/�
|�x���{T�g����N.��i�B�d�b!���3�i�M��e�$׹4��M�=�'4r���i�!�e������������}Nҿ�1��H6dH��A�T8T*�
�H�GJ%��K�^�
������2	RY����HY��Ryr*УB�Tq"(�*ѯ��T���D�S�Tu�T-�I����z
�jp�E/�N��:�R]ɕW����gKn�l7w��S�G�G�{�o�x���D��J�=é	=���Ż7����,5�w�0@N386C�����&�9^5��;�J-�H~�i	>��j�^+z���O��P�u/�/��w�R+�����=q� �v@G�S�LLgr���<��IR�B��]�<�1���ug���fO|�E���_�P;�ap�K\?��G�������ǁ�\���Ti5��s܇�}8�A�p	�O�?������Ͽ���R� �Kr�Q'�s�?�YO�w���1��IN���0��EQ
�S�9�?�'���0��i�O��do91�1��ٜ�X�Ų�X�b9�s�?��84�Q+����q>�_��:K�ຈ��L����zK�[�w˘Y<����r4/G�
f��+��*�$p�V�{"��r
�kr���Z��u�1	nI��x���c�7�l��Fzmd���f��L�-�ڂ[9�[�L�6�i{�[�G
�w�o:wSo3܇��j?�R镊���:�g&
>��u�:��s�GXK�˟���Qt�����8�;��<O��$�'�|
ON������2�Ltg��k��uo����\�G���|�؋輄���]書竬_×�h�ιȆ�
�o2�[�ݢw� ��q���L�g��<D�#r�=��'�|J~>��S�g�9�^г�o��/��/�
ͯX{]\Fe�l�)�H�X�L��eJ�dJ9�8+eJ{Ȕ�*.-��o�x���2|@6�t�L%7@l�^�@���(��ce�E�T�q>%S��IN-��bυ����!�.�ꎔqeϕ��ʸ�ȸ�xP�!�Fލ��4�I2^	2ެ7%���w�i$��<���_�L+8�;�гu�L�X�-��@��2A<;���@c'8��3�tAC�.3���=P&��p�(ۓ��1�����o���������O��)2�	ye�e0ڇd�eN��d��gF�{u�B��p��o����q�D��>�*3��	�s3������=��6��(���T~G�7�����7��L4���Y�C�ٜ�9��񜋮��z���]�����%�q	���ϖ1�T���e�W�e}�(�=��dr��w���s�oWs�e
\����迎�$�H�}nEc2�pϘ��o�����K�S
}w�o����Z{�/��o?9��w*z�� ��%
އ�a�a/�G�|���<�lO0��!�������r���Q&�<�/P3\�w��D��p����ˆ�
�n��܂�-��?�3u�>w�y��wᘋ��ɀ��u}�є��<��m�󐼇����O�~�p���)>���k�y�g���{ü�,��Ǜ��u���β�<d�-rJ�X�l	�K���l�<ٲN��Xs̖��'[��J���lOY'٪��բe���&ٚ� ]�%R�6��$ʺ˾C|� �ĺ=�m0C֝5�,�w�d=x6�V�\YO�(J��?(�m�,�!��~Sr��������~n S�%�Z�@6m�e�ю��p@~����e��tx�c`d``:�$ɠ�L@��`>(Mx����jAƿݤMk�`�R��AD��ݴ��7�?�Mhb�W�6;I�&�av��k_@��+@���U�o'c�BMH�7g�����<�������d�E	�,p?-QvZ^��S��J��r	/�g��p�}oyw�/��x���G��Y��:w�LƜl�e��>[.�1�[.b�q-��	u�y��זK�輵��mwfy����x�~������b�b�Ї��1BL I���vQ����K^��I��k��&���LŽ���D��0�fb����`0�(JfRMdD��I/��DK1�Z��`*�t�M��Ƭ d.�do<U��ڨ�U�ڴ��Mr�;�g�zpXm�k'�F�}���FUF��]�=j;௲��K��i"���bD�.x�B$�d��y�&��_j����Q�>��º\ՒO���-�9"Z��mW���j��\DI�滎��Sid�IΩ+�Щ�})��dG�»�2']�Z����J�Z��rl�$��;2��V���z���n�M�"�L4�R�+�_�
���e�k=��~^^8����D�9�yW�y�1�E&���ϋ�x�}Wt�ȲuU�b'X��̔ؖ�,O`����ݶ5�-� 0����̏��1�}�̰�����L�s~N�$ݾ�}oW))L��?����nJ]��.uc�ԭ�R��n�4d 9����0����
X	�ư	l
���l	[�ְ
�	���`{�v��`g�v��`w����`o���1����P�	���`8���`8V�L��¡pG��p
��p'��p����p�g��p�
�P��zj4�Fj�-hClX
]p�}p��5�C!D0���·�B�.�K�R�.�+�J�
��k�Z����F�	n�[�V�
n�;�N��{�^���Ax�G�Qx�'�Ix
��g�Yx���Ex	^�W�Ux3��
o���;��.x7������!�0��������	�$|
>
���������"�_�/�W��5�:|�	߂o�w��=�>�~?��O��3�9�~	��_�o���~�?Ÿ����+�
���¿����/��0��b�pX�a�Q\��q�čpc�7��ps��ĭpk�߄��v�=�;�N�3�n�;�{�^�7���c	�XAM��N�~�?��Ax0��p
�qg�P<�#�H<
��c�X<���D<)�:����x��g�x����X����:6��
[��ڸ��`�袇k��C�p�qq-���x^���x^�W�x^���x^�7�xތ��xގw�xލ��xޏ�>���>�O�>���>�/�����f|�߆o�w�;�]�n|�߇����C�a|
?�ŏ����I�~?��������E|��_Ư�W�k�u�~������w�{�}���?Ɵ�O�g�s�������o�
�����?��/�W��������?�_JQ�2���i�
T�a�QZF�i���hcڄ6��hsڂ���hkچ�D��v�=�@;�N�3�B��n�;�A{�^�7�C���S��T!�L��M�~�?@�At0B�h��i�f�P:��#�H:���c�X:����D:�N�S�T:�N�3�L:�Φs�\��ydQ��$E-jS�lZM]r�G}rɣ5�S@!E4G�@���Χ�B��.�K�R��.�+�J����k�Z�����F��n�[�V��n�;�N���{�^����Az��G�Qz��'�Iz���g�Yz����Ez�^�W�����cA�v#(�ot�?��S���tZ~A���y�b:
��n�N/vj������� D���UϝS���۫�|\�QHn��
�v�r��3�o�t��<Ϧj��C��Ҿk5���|����l�I���uw��9�b�a�
G1���0竖��N^�O踍n��X�o��uܾ

s��T��S�M!���ˮ�nS��V\Sh������Kѳ�n���~�mX=�[������ڡ�؍b��ZG��NX���v3��Y�_sT+N�
��_L:��>��WGAh�Ӳ���o�{	N��wG[VCɩ���rs��#_e=�o�N�gy5Y��VS&��u��f���L����D�� T^�n5���iY|��^~�Hˡg<�M��p�\�e|8~}Љgҝ�Z��0��n��A'��DAM�Q��}�,&&��9��#k"�G�8�
�������T?�ሆ%�b`�*ԭ��i��;���4�U�v���#�#�r{���"���g9�r��p���nY��b�)��w�Wy��Fc5���p�@
���~;~=���W���~���o��\��X�l�j�UX�W�;GY�=�W*�{�L��;�b*?!+�,a�^���C�W�~��l_�b���$��C�er�b2�}�N_crߥ�ZL�m�z�H؉z���*�L�d���I�rZ�8�$1%'�r�q�~�͙e΋�ok�o��9l��qB�~�ɽ�b�m3C=�A�&��p�c�'D��˛t�	��p~��l2s6�K)����7��4�R����r�bC����B�e��\܊�dDdE���zG��`$�`�C��!H����Uv��;�ɄV�
�Qy3Cu�V����87�'���F^Z�2���ٺ�8BP#
YJ�O��b��^:��TAΧVg�v�q��~��A����]vx�vg(����PwT��k78�G�������;�����y7�b@q�@�5T�>s�;�'M��I#��I3>+�7�A:p}��=�[|y�-N*��y�.��orJ���qQ�Y�X;�(�C�k�8����>koqD�Wpd5�E=�q�un���k�6�t��$��z�"cÎ��|١(�S	c���J)�0.Geɔq:�-�#�����$�Y=f��
��f��-Y��V�t�y�����XK�h�Q]�ԗ����H�
���e_����`~�(�5�TA��Fֱ<�b���=�.��o�w�š�
��I3љw���f�w3���ł|0˗��8-	��/�Ona�.�%�e�/$��է�����<���0�"/���h܈C����3��e9i�b�į9���;�8�$�"���G�!�H��J�aW�k��dqIf)�H���Ƕ��I�_�({�ڵrv�j(N�2���f-�����i�M����j�&�Pd>Q����ij�hr���&|���`D��C�����	{��nA9���YH��61G&Ύ��m/��%	iź�A�J��c��O��� �wt��C�����ŗ^l�4b�&��ψ8��W�V/��g��|�%�%Y����]%�Ԯ{M��>��ɏ���6�3Y
�����8Tcx��7�V.M�\7r8�G�
6��C����p�WlЋcS�\�Ha/r6��z#��^`����ޑ��5�,�Q�!����������^��ߴ]��&����h�����#���*Z�L�>K�,�G�ҧ��K�����\w>��5�]���-�2�䖠��qRs#?X�b�9�Vq�-ˎJK!	<�=
"��4s�ύ=���q���Wv�����/TK���k���Xe�dI���$9G��M7\�@�&��S��J�5����H��⁚+C%)�R�V��U)&���E}���Uc|��8�L
h�,]M
hR@����d�V�ui��(KQIf���)EU�	)4>&�<и��+RRb\��k�ӵ�J�+	�$���J�+	�$��0���,�� ʂ(����	g�u�!в��1tm�Z&��a�kEX+��V4tV�
!6dZC@��2dȐ���0a
����zh�L@f�ϻ?PUTTPUT��*4US^nHKh���Ą ��EE|Q_T��EE|Q�Ĥ &!��L
b��n�b�܊BLa�)���$EY����U)&����)��K2�!�0��X�Kb	C,a�IIHJ�3bC�`�1�!f0����3bC�`�	_FYeA�!0ʂ��"�� DzC�7DzC�7DzC�7*�0!���!���!���!���!���!���!�� LA��)S,z��.��sK"�!�UAT!�"�!�"�!�"�!�"�!�"�!�"�!�"�!�"�1)��DC"����JU۴41�kƙ"�)қ:�&]�2X�bB
�3�K��o����o����o����o����o����o����o����o����o��f)���Uz���u]�uY�z���RW����zB׃�V�zJ�Ӻ��lROi�)�;�y�4��ҼS�wJ�Ni�)�;�y�4��ҼS�W�Ҵ�ּӚwZ�Nk�i�;�y�5��ּӚwZ�Nk�iͫckI��Ҍ�Ѽ3�WGؒ����;�yg4��Ѽ3�wF��h�Y�;�yg5��ռ��wV�ΊS&5�&�դ��tV��j����	�fonts/roboto-KFOlCnqEu92Fr1MmEU9fBBc-AMP6lQ.woff000064400000033324150755146450014706 0ustar00wOFF6�Q|GDEFDGd��GPOS������GSUB��7b�OS/2�R`t�#�cmap��L���gasp
�glyf
�&�5���N�head1<66���rhhea1t$
��hmtx1�a���MOloca3���C�5rmaxp5�  name5����:post6� �mdx�
�1P���PB
�U=l@B)�w�暮���Y�e�u�m�C�s���x�h�~R�R��2xڍ�pfKGϽߍ�1�c>��`9�ڶm<+;��m�x�NJbg�M�T��O����׷�����l��XU���/{�[_��W���c��_�72� " z�+�F������&�&�`e��T]�.��K=��K2S����q��dƅ��xf�$~i��$?�d��dU�����@R-/LMO-J6���[]��Z�O�C_�"If��d���fS����$d�G>eL`���Tf1������9�c>�`1TR��x/d-�����q��������7����{��.v�����!��1�QG=
4�D3-��F;=�1'�'q�rw���9�e!���Q��f��̡���qV�n�h�V�Z]�B�C[B�V��ݩ�v���o�w�{��w�zRO�i=���_��ڠ�ڬ-ڪmڮ�٩]ڭ=�ݫ[Þ��(1�(�#����O0/�0?�04rLG9����i6��l�|�(o���|$,��{|&|���YJ���x	e8B�#��t;R8�{+����\=�����r?+&Oע�t;X�Z��յ����s�ާ�k�cuZ�
ڨ~߇�\��5Z�U�^o�Z��zm�FM���M\�VJp���&{#i�٢�ڦ�Aq�8�z���N���5W�a=�G��ա�5Z�U�6���>7���ǭ�k�N�A��y-ڪmڮ�A�g��)��~U�X��K��}�w�?-$74a��Ø��wyGg���t��x��9�K���w7_�1M{���z�����@ƣY��5�s[��9�%\����w�ɡ^W��}2t��������C�?|:��W |Zk�����O�����r�ko�]�u/`5m�졜kn�O��_q��.|�t�t���h���H�vɕ����kw]�	��S�Vog�0sXwy�3���ڰ'�}XBi8���W*	�{���Zt�o|:l��)?��7�S�(�c����kl~�����<�5����
��/�
�˹d�W\��j9^��M�ra+V������o���c����šk�o���>,�~"t�:I��'!|U��p@{���=�^�k�^=�N�z����\��[t?�l~�>t�ю��l��]�s�߸dS�e\C8��c��ȓ�b�)��B�tn$�9,rl%�E���Z���1�
�L�ȳ����gewS�dv�L~E#�h������Vbn"SF���b�{['H�D�$)a�DL�fJ.�$��2�$�F)g�0Wr�'��/#Y �,�|I+%�U��jF�dS-	��g]+)�I��-��6)e��C
����?DFp�������L��+��5 f����}d��9~���rL�9�2��a��H6M��L;)L��t�%���X�)��J9$�I3Mbf�nߖ�[��9��\���u��aj&�P�X$Ŭ󢂈*�0)R�����^"6J>�%�-�M:5�;���I��%�V�����9R½R�9�7G��h����d�Ę�����a�dQK#M���H蠛L���m<;x�M�R�a��_�5�
�9ȶm��
��m
;M��/�����yeu��.ό�38�?��X�����E��-�A�����,��"���LfEv�̚�r�u5��*�	h2����O�¦obr�����^�Ɔ�IQ3M͢����@%����@�����[Rq!�6���
��N:Km]���P�!��?��?͉�Tq�.S�*A�Uڰ�0O��!�Czd��.�+��)5�|�p�3N��+��ᖻ
�g�Y�x�'�y�U
/����>*x�c`f��������u�1�<�f�Ȑ����P�����a|ww%!6�i쳘��X�X70(!3(�3xڅ�Ȟm���E�mN��4+���f+Ͷm{�r
a�m۶�go������t"�/#���Ȧj�� �_���<-��v\�@�*���ޞ>�>�����H(���sXX�$?	�̷�b�p�
se�X�?¿!�Dz��R*y�\�w���&��9�s�%���|���ҋ}/����b���/6�X�b�OΏ��AE4򭭲�k���+��n{��@��w�A�6�Gu�q'�4�0�]q�5��0�7�r�w�tϏ��
(	�~�d�Y�E�c>�9EV`16�6bVa{dv�6�`d%�8v�Nb N���<.`0.���zd(n�A�<��#<�e��K�+��M���D�G�\d�Z9�1���Xҧ#�H���'���'&����s
b*�Hd�Dd&�ZNu�"Ԉ�!t��%,�̣�Z7����xڤz@S��=s�Mt�Z�D�]$$QV]���� 
vA�4�JG��(�
AQ콂�a�EW�v]�dm�;�37���ߕ�3�9��axf"ð�R�e$LCƄi�0��2kV ��`Ͷz�r
~���#�bH�ҚM�T�E�2)�Ec��X�A̒�j�(Rl�0� 45��;��&�J��L���)����S��EgNb�A���'�
���O`�X���'>�"�t�D���G�J-���J
3��Z|�X}X(�y6S�+�|��<�I�������N���)��t��ɰ6z�zH�\>��z@OB��Xׅ���2��G;;���Q�U�,,--�v
���%�1�
���Zen�rа��~_,Y��x���!�,���r��l�.~ޜ�>s�]�-7�oW5_�ljЈicOI]tݬ��۳q3�>M�{ɧ�g�N[0JF���5*�X����N-�S��/��'�o�l�J�O(��,*�H�Y<��>>⼑�Դ�B�l[�>���3�Xt.��I**J�Lܺ9S�w������_Mٲ%�caQa:�>b��w?__�<�9��u?©�/gZ1�Lw�K-Q��Վ4jU3��Z)�j�;hAJUǚ˵Z��E���]--�טi�y���n�'C��`,���|�m���Sf������铊�d��v�H��O�7r�m��+�B��ؤ8��7ާ�֯�@��CY=4�Vf�1hԢ����G~M����8����T+� V��T.�C(!�m�}���m�}ʻh4�)�����?��װmL�+�u�N{Bg�cJV1GH�Ԙ��͐R��45��!�?��g��Y��>�mB�|O�%.����� K���*�.�QW)�-�v��&䃭�gU���7���|�-tm��)t����ݽ��Y#��G��`���L��3˹��~��`ma-SȬ��2�18�%^q/Y�x���V� 0/�7�)5�ܥIA�S'�0
������JJ�5D��Ò�*�t�1jXNK�{�a~"�P{uԀ�������0�zz{�@Ǣ�D�����:u�>+�� fZ�KΆ�Uc��4C
Ī���L͔��He��k9�o_�a_�{��͚1��3?l�&�h����	_�W�/��w�8�]{+C��1�8�2^m�Bu�8�h�-��1���3�9��j�-��M�}�5�����
��Pu��3q�T�da�MMX�\^y4�MN$4�,����hI�9�M;cH���rVb��q��ʤ۟c'D�bݝ�݂���R��0g�Թ��g�r�l|I���˟�;9gn���D��D�?�VE�$�%��Z&e7�ۧIѼZa)Ě"i>
�+�?�#P��z�ډ�nMlÌK�5�0g�J���O�);�M���'�_}Z�un�I��Y�Q�c4�:�{or���ş��>#9W��������\��
�D�e
��c��$v8h�ٱAm*����?����6~a0����i�%�.���G�7��W�
�0���B���^Nl�[��%��y$�(�	s�p�+4e��jnr��ht�j�B9c�t"c�ݟo"+�a���w�1nN4�y����������[�v��顇C9��B{��y'�?8v��0�����ӓ�BCb�0.:l���p����Δ�aA�`�xR���,�1�BM,�%��6�ζ����y7���<\�Zq�IU�E��8��Y�|!>�_��p<���^���^�~+/IJ����1���0v�i-�HӺZv��+�i�{%��	;�诙)���&6�(ꓷ5X�
�a���{:;�tT�e0�}�� ��"�I��v,}�&��h\f6����l)55z.d����(���y
g���z������(�H���2:�T*��t��5�Xײ�F�MӡWe��D���~u&�lO�?־���	A�v]�8�1?�{)��KCɂ������0�tHLRJht�jL�rVB�)cm�!�Ĕ���tD;����i;�g
1j�Q&%�L���[��|�i����F8�%ON���)|�_���d���{�ٮ��i�����.,����ֳ���h�tq�63Ij�_k}|�^��%]�Kg��ِV��^�����Io�f��`������3Ӳ�
�Wf�D3�J<B*�mk֚��ʖ	�3�{�����[~�a��ԃ�Q[4���J�K�leI}W%�v�2 ɞ(m�c�J�}4}j���=~�#R���“�~�KϖO\��jW̥*�����?2~���'_|A��5�=�<H�v�J%��N>ƌ����y���]�=��g��św�������߸v3�_H�NŸ�ͺE�^��SJ�(*�u"M#��(�))��`e*��	v��N�6�+g�l>W�.���qyE�+�l1����翇��a@��#�b�X���>���'�K�A~(;_�K+���dFCq��8���_`�	��MVӱ���`���Dm�V��ь!��Z�ɖZ�`��A�����zAK�i��#�\��=���P�jlJ�P_�^0����5�%�	�O2���E9h��|�ȳ��Y/�	Z�G�B_*l@c��dJ���h��0]�^��Ȼ�4��h�/�����x�I?7t2!�g�}xri^Xjķ���Rqm-XX#�fAȄbp�^D���؉p1����4����\���R��*��"Ѹ�wI���j��`f�3�
U�	6���9�kND��č�����|.H��V_h�r�gT^�э\"�nj����dטAԆ�6dϚ�]jV�flő�ӑ�9��3U�mV�W{v��a5��D0���M�Б-[���7�p�6���l�'*�j@���[\��-�!�|3������)lE��SZ�2u�����S/��Pk�!_���x�����,$�^u�B�?
�o�\j+��E��e�ybx�&|�w�R���R��C�ED�+�ڨ���/����?|�᮸Cr�Oԇ���z9�6�D@�L���N��49	�G݅+|��Ϩ��#��Ya	���"�R�������]W��twY�x��s�q��4�����{9��&\!lZ���S�]b/�>�u%n΂�q�C&-(���f����D�Rg��P�,�N���HbG+�QK�;FF5��&�@jb��+��;�o~����+�B;�,�g�4z�V���G�,b4o]_�X�
��9`)��^�Л�[3X�J{����e�"#ɟ�T�O�jqi5~��pi����r�5�9e�-bχ�~�*�����Jh�=�4����6�ah�n@M���
�����:T�
B���u=k4��g���a�[?Ux�~fs��d|&�6�G�iaٟj��;��k{��&ιb=��$|��,uMܒ�R�j�f<r�����I��Q�u��DC��
0������ࣰ�@���**�„b���ş��� c���6�U��ݗ��6�x�ۂU�Ё�b�\�]��UO�>�]u���;w
5����[��"��t��7���ZR��ڶ�S��U�}� ���-li�2�/�63��u�e�7��օ�+���� x�[%����u8�䐇�aΣrG�(�?/!���~��ѕc�:���=�9�w�4���\&vaR�!�:�?s<ؤJ7m�����|g��91����0	#\����'iiiv�*�n��D�VC�V5Ab���PQ��s��?�{̅_{H"B�G�t��\Ę���<p���`l�����m;��%��9��݄i.��*9�ZA5��ԕ�2Jг��*���_���V�u[��lk�[$�X��J��͇����#T��F�cZ���#i	N5aaM; Z��Ś�Ah�S|?����z7ZQ8-��֦��2��`�9(��l�[��`<>%/56(�-Ȍ5�k��Ă1��)��B.%�ZXО����:{JګwTU�){'�-7=�`O�^�|��P�Ǚ�3����3�Rk@�~P��W凂��G<�e�MQ��vW��£��dd��.Bk�V~�0xyrb|�0�a�8��>Nm:��'	#�)�ʊfN�Y�,8=b?��uAc�{�tlyz�ó�k%�h,�����ء�V�;���0�H�$u9��{xy���O[�}���,�R��D$�Z���:}���>v�Q�E=���[v�N6L�6~C
(�F�GuU�u:�D��8���ՙ�@��3��[H�s3�S��o)��g	��4ܒ(n�X����Ӡ��L!3���s��~c�N�=u�4��Ǘ��qN���l9{J�NN	�)�@�OD��rN_�N�7��P;��F��P�nԤ��N�2+�ѱ)���L7xGo2�)ӂZ��F���Oa(zX���{���A�����.�CzVTD&Rԥ�'�\�π�a᱓�6�<&���(���Q���trw���O!�ޯ^���5{^"2�ŕaB{�B�6j$�Gc�8�ʈP�ƣ�*B�?<���&ꂋO?�%�[گ��y��C��;�ςn����ᇍ�������Zq��{U���dd��
;�A�Њs��jB�x��u�̱���?�
4F۩
���i���O��M�<i,��8��<�꼗|��`����~da�ѓk�x������G,��5�/�?Y�A�K4�w�1d4��ZHV2"dPr�D�_;v6���y�y�������rP�I{AJhD�?rN�bl)ob5A�F�Ț��)ݧ۶���qp��2tL�w9�mX{�,H}��MfJ���<����=8��ڳ��f�����#X��f*N���u�٣��W;��A�E�Y�Th�9	��C:�-Y��ۈΥ�Dz��eh�����ϛ����t&
/�;0/F�����d~S�|D��$�����C'�R;w�R��@c��Z���(�6(�SS��pp�P���H@���Vx�:}��,_KW�s�2Io�mǪj�ZC;}������� \ =u��Wj_")!8gV���w2{�y���ʚ��"�pC�4�/,�Ւ�&+���~f9m=�vj5���WYؐg��e)�?Wj����{���Yw�����+u=3U�������#�U�V$rUl7�kj�]��vP9�A45pU�{Ůu�spj�J��enJ7_ִ���S}��%�f�/����p���LEN�����ϸ��.����.�(�����=����J#�'ގ�2f}���Ia8_1�~VJR��Q��Gܙ��TT8��{$
�Ҍd����.�z���V��+���Z����{���X��b�2I��K�IN�P��x��Qc��Y�d��3:�O�*;I�mP���O;jJC�"����/6���\������pj�9��Ľ#uQ{�G)�J-Q�V��V.�ؓ\
�$�jH� p׻�_�d�N]��8����e�W��_�X9�x����cw�����%-M�;s~��憭\���⩼�e(:�rX���aaP_���X�fR�Zԃ���5H�1��B_��
p��p��A(H��d�&]_��9�"�)��a�h���%���ôǏ�j���1{}��(�#�w9Ӎ�M-IZ��j��jeWD-��Oq��E[;%}��q�ʶT\���W����r���"w0{�Lt�"�EB���¥!>�'���un�;8j⡒������q��kU3ֆ�6���~Ep¸��#��^3âU��!~��ͺ�
	����*�
�cȈd�H�5�m���pw�p7�`x���'��w7�}� ]�"s��*5=g�>�[ķuD�6jf�Y�3�5��m>7v'>y�D�ƒ�1#�L��?j4l�Ư7�7y� g0˩ys�!���O���"ߜ
�{g�ܼ*pXZxXxʐ��[���M�ގ��U�E}�ނ��-��h"s���(ϴ��Ci�@�U�'-��c��}A��1�[K&�s�_�3-}m���o�`?t�}h�Q�x�}���%��!�5O�^�GR�x��&�E$+澠xq.ehl��p�4kK�M�=}^Hf� �m�E��;�Dw�[���N���~eiin)�P��BEi4;ň5��~Ԯ`������(�)���%}<�Э���w�CSc�~m=s�����z��>�~��1�7a���0�K�v�&�4Nij;�""_C�L<
3���,�H�-!5xm����u!�}�=���U��U�8�C���3ՓR������~�G�Cy0��saҟ���a��H:Q��x"������/�o���n!Z��8:�.J]�<>��X৸uT�j�I�2y�lJM���"B�ڕ��ZRc����J��!I�>�.�7/\�1uծ%����k�1\h��D�	1Q�"T��϶Sk;N��,�{{bk��/�$�FyXN���x�*����V���Fo�E��t̊�դ�H�ZŚ֞���>�m�	�'bc����
W�2�4�	�?=k�ߨ��L�.F}��J���aq�W��@gt�i�@�_����P��≶U(
֩�>����J]=<[���˧��w��E�/��d����^"�'����iF�w�_Am �f;��41V�V?\�7"�hN]�|g��0h`����ς��Ӄ��L�6�x��k�R�̓8�~?�a�D~�d���B9�u�d�E�8b0�����-�����rɈ�lq�2BO����*�(b�0t���=�W�n�ݪ�)�J@*1FQ����ZRÙ���jG�H����F�Лӗ���hh�Ъ�e�����L��ꅃ�7x�U×��} ���gSz�˒�ԗ��X���������.�����P;�9Z]�
�Z�/���S�`
LAi0��K.�fb3-�@
0z����Z���'|��+�f���>�
.���iu��6�k�VL#"LA��LVi�#�4��� ����,E|Ն��{7%�-+���g��(\����aD*��щ�X>pZ�(��~]S�*�}�%�S��J�4���
���Wi(�jD[�(h�6x����2���L�k]�N�!vY�|�?{}���yg�[,����v�H��K���bol�M���xkƀH"�!I
�_>r�e_K��Cn��ͮ{�xM��~;�č|���x}����.�ξ+ӽ�R6/ke����?-m���}$Z��{)I��:2�(V��|���$@�FNN���
�o�&CK�P-S��.7RJϿ��ĸ��s��3�L<��k�Ü����]��8�u)��v���C��[������(W�凒S^�/�w�����/���q�\���mfS�f
і��3�Z<e&��9�S�)�v���#�%��r����8�qfƃ�ٗ����W1p{��׻�\V��e͘����G<s��yy܃�UOc��槆�ڱ�!52Thnj�c몸��K��ܘ���1�憌�5o���O�Vo���kn^䟛�����=�G�����ԓDF��u8"�g����h�2
=���`���k(<�c��r�A��\6���:u�I`��N��N��t��Yru
>I�6+�d�&o<
�<V�2@(���v��������$��><M�	]p陇���z`�#�F�	�z�f��k�-���0K��B���P�Q��u/�]ě
m�%2�O9	�Iު��"�_WU�?�Dˠ���Bv=�G������m'�6_���i;�f����عUc�G�+G��S����A+��8P-3�ʿ�y����<�!s<��h�������7^~����Z�1��R��̔quuJTDJjdX{x�9웍����.߱���i��;:�것\�԰��[�>��|�|zN��c�$ "�
��jP�ne٫NA�%܋Fyy���h.��B*IGR3�[3I뙵��_@Bl`Pl�̵k7�_�*�]Y}����}W77��|�;��X|��nop��ʞ�:��S����7G;
����^&=�6��=�g7���Q(��vg�1��1>��Ż(��j�.��<ٙZ��
�%-D��bO��@���HZH^��x��SqL�0t��R�Qh.�3����1��gL��09��ߌ�HJ����a2�10~�䀫���zCV�cV��{�s�3Ǡ��|��1�~%��x�>���:�Yӯ��y='������Gr�'����]8<}�D������¿��iH���;L�n$*Ӣ&N���2!
�츨��c#�Pn2����rc�2��\�u���P�ә�b���U@����ikPs<R� ���%�Zƙ�(��Z�"��Ǐl�o���X*b��l^I=R�y1��J�+^�(�K�d�Br)VP��������WX1,��CCH*���`��8O�1gƸV�	u��`���%�����j����Q�ۭ+Z�����:h���MY	djS����~�
��Qh9a�"=��dM9Ӳ��"J6�`8�a����|:m�A�sfN��DSt:r���M��AA��H�"�cgB�"_"m�y����U^U�#Do��w�k�����t�̾�0�(�
B�=���NX�'��U��o-`��m����m��.ο�d|/�������QL���������oV4HX/2]Q왈ȻY+�3Y�_�L��c"ێk&�4�������ޣb�Z�/���AIv�kQq����˖�?6����A����u;J�M�
����TD(��wgp�֝!FM�>�Z|�MH"�x�P���q���kB�1��ppZ�qc|ƶՖ�܏��la�I(�ZQ(U�F����%�n��#1sc�t����ꦆx��^�2e~䚤	Cc{����@hbm3�V������
WE��ò��!a�[SVl{{7��k�x�;k�f����G�)��~��N�nY?�<B�">��o�
����a���(>�a�/{hƴ��UێZ#:
C�o�h#^D�g'��8sS���s�#��K����rU`w�2O�;!x~THBo�i���=�h{��*��秴�'r����6�+R��++��0��5Jc[H�����R��m@U�̖DM�puT��Mό��M[V�r���ݱ����Zw-�Q*�")SHt�#��?�G��kW�xf�s_�Qm۶m۶m[aԶ͛Fu�FPc;�?�&��/_&�Y���=";�������N���N��rR�lt5�!~�'��
�
�׉�16	JOB�;Q�/���ͽx�Yr���.<u��G���m��޾|�Y��L�F-��_��_����5Y����7�)ޝ��V���q|��
����E�W���n��'�~��
�ȃ���v���O���8z�R���ץ7\-���ϫ�/����UL�B�׉x3r�E�v��i���r��%>��/�����!?�7r�-��)�����QX�2n�+s��=����y^T}%=��`P�N�Wr�M��x��ԗ�ύ�`zGr�龄�����s���(��qS��y��7S
���l��I�I�k�
zFe�[��vb�7p'�N�0�Fn�[�b|���a-� �:x��=L�K���K�u��Df���r��c���_��屡�\Ql��ݎcMZGkҎEq�Q�q�9J�㸝��lګ";ҕY5��i2p��N�b}7���xf� �:xr���DF7���ԃ$յ�?�*�N#��_<���.�R�$��	\s	x�c`d``������K�#gP�w�x�m�M{g��o3�m۶m۶m۶�Bl�I!�/�g�����`j���!L���ԑ�Tmw���P֫HI����(��"Ir{;�l���d��M��
��J	���Z顴Q�(��*&=�[$�?�&!	�n�����Tr����h���.#���RG�-i�1��d�� ��I�K3�;Oۖ*}��`V���v��rN����KŸ�Hr�;	�2������[�gۈ4v2֌&�����$���V
Qʜ$������D��H͟�{�}[�A�R,8n��a�2�^Z��>�_���#���Ϛ%�2��R�H�mLT�Jj���)T��佦�<���C_n���W)'M�,�c���nR�j�)��tf�e#���]
5��D��y�ӱU�a*�Q�W�zz�9���*�)�z�@�2Zn�߷��2�z2�\ҟb2��&"þ[M��2R���wXI{{��.S|���m����T�ARڿil#��~OJ���n.MK���{N��I�T�^L���/�I�]��stW
ϣ}�bJ%m�>o(���X�t�ς>}�+��G�-��_���m��u�S�N�7�$yȡO1�����NY�/Qw>%�?��i�xx�b``ЄC7�8�)W5+;�0� 8� ���񷚉m۶m;)Ķm۶m۶m;��|�<)��E*%U��HS���o9�\^$O�o)DI��S
)ՔV�\�UӨ
���V���D��e�
hu�n�0m��O����k���%��a���Fc��1˜f�0�'�&7���9�9��*i5��[K���C[�3��|����'�S�i�r8'���o7�[���.r{�������>��\~)��Ϳ��Ճf��`f�.8��0
����a�pIx,IJ�:�NEa�?�-�6G�HR�t&�����#�S��iZ�6�h?:�������g��Nv����xaޖ��k�S�E"�ZdyE1Q^���-���b��-����x-��
!ćԐ
Cy�
͡=��0��j���<܆g�����`̍Ű"��{�p���p%nŃxo�c|����*��N0x�b``�`Hc`f`d����fd�� l&>�
(�I���ʠ��e���@�@�!�U�CvDл���ؘĶ�Q���}j�zf9��5�WSQ5TX�d9(��M%�sm�5�����@2%�h�8��B*��a�p-U5#-�UI���E)v���-,X�j������]��k�b0X��H������nS-���p�.�r�б������(5�x�c`f��Y)X*�fonts/roboto-KFOlCnqEu92Fr1MmWUlfChc-AMP6lbBP.woff000064400000023620150755146450015323 0ustar00wOFF'�@�GDEFD5@YGPOS|&�%�?GSUB��N�K�OS/2$O`v@�icmapt��ǚt�gasppglyf|�,0��c�head"P66���\hhea"�$&�hmtx"�
�P�;�loca$���˩�maxp&�  )name&��~�9�post'| �mdx���@�y���YJ �{t�eϺ��e��t��#^��u1L��&,}�]xڜ�3�^I��ج^��v�z�j����ڌm۪c۶�b;�ޱgP޳^R��~W�7�7T\�y��~ղ�b%!Q@�A�捕�jIIE(R��
j*�R����RK�4pT�9��h���X������@�f���Q ���mY�s9Y���'�Q��]r �<���$�jz���P9{�ڜ~�Yr�}�@v��9��23{��R�9�3;�2X5ճ {r
�2��ʾK����?�0QU�Lϼ�B�<MN=�Vs4���U"�=���[l��Q��,�5ȟ9�.�0��q�g}v��nW�W|���VG]���@C�4�DS�4�BK���V;��~��_��_�t�MO����@�
5�p#�4�hc�5�xL4�T��4�\�-��R˭��Z묷�F�l��V���v�Q�w�I��vF�+�],�.l`^��u�NX��(/]���;�Z��YV�э��M����P+T�S2n��g\��z9؇׷t�J�{/n������2�"c����B�T��ndCXk&�b�G�%NB̹z�����vx�=�RE����A���<�n�m{_��4JO?J�8�?26��q��P��ց�õ�c����@���D�֩��v�sӓ:Շ�b$�'�*SX�!$
5�b�P�J_���D�|�>|��8��V7x�M�7�@E�z �0����DY"D���f�X`VZt�1�t@�9��?�Y�"2�,��BG�Z3�z��
�x�Ũ�^Q��w�VP��
j����4�۠�16ñ�*j����;�}�ho�;�Ms��azX&�JWO��6�&�T�em�Y�e�^�g��e[�}0���n=�VzG����qy�Jƕ��W7����!6̦�4�c�l��Z�e�;!�*u¯n#t�
o���2.w\��j�5���~���ɚq~���@u�2������G��<�	��l�_x?�-X�������9��SYD2K��5�s���"�l���r�#�
)b9+h��V�h��RI#�;������fZ�B0����`�` C␤uX���nu��"u�C�:Mf��9�8�.rX�.�U�Uu����ke3��n���ru��j�$�j�$�j���j�d)j��:�}+�S�Գ��,�֨�R�S?8�P�o M�#>p����@�:JF��B�
�!�VW�Jॺ_��O�x�~���[���E�sV�QK>���j��Qj�41�l�����x�|YXS��s����X�!.M!$Y��
R�b�],(��]�޻6tE��������[W�w]Q���{��\b���rf�̜j8���q|1��9W�+�U�8�N��U*�u`_Gj@N��K���'<�@$I��^TJ�HZ���K�I��Iw�#���Į�QɹpR�@�����(�w��G�[�hjCF�H-���\�s�D<��
N�ɩL!�k�9���G�Pj���`�E����}L/�=v�Bm�f��d1��bf�<xF_CDw*�&?��ogO�~w���&LcN�8�JX��p�Q�*k4j"(ycn
��O�#G��M�����;�<z���@8dyx-��S��F��ZN�\�K�Yo��_D�4!itt����npR����L��~j�wK鸻���6�ww<	�ē��ޫ61�F��b�Ig҉�5�u�!zo%Y���C���wuf��,ؖ�9��A��5d����7�>.��n�F��t�"�.2
>��zj����$�i��/�$�H�Ɏ��)�(ۅ����x��w�d-�
�n��g"���ُ(��ν:���f^M~v}H�ԡN9���<�*e,�Б���0
����+IT.��$�ER�����Cj-&���q��/�+(�^1߹r\Y˜����@*$��Ѓ�]���%�Ϗ�`�^r\h ��#��)��|��9 5{��R{�����G�jM�#a��h$W�/W����b�2�����
VBuH��+��˖���+���^��Aӂ���|�v��<x��^�w/�}B�+YC-��g�y
�B	��z��j#5�@�IS ��L��IcS2��Fz&�?,X|:L�s�ˌ�7 �i��350���S��lvw��d�Qx��Q3�|�u�f>%�����+W��Am�G=w&pO��׹�|�!�0�}�~A����tqJ���b��􍻿��1�f'0,�>�����N8G#��F	9¡��¡7L�d��s*5�������M%\�W��@��I��	��>��9{�S��?�x�EN�Ɂ��܌«�Gт/h=~'_QX/��؊�hF��\=AY�@�2�d`���C]��^���hޓ̳��^�J|��F�52�d����r��GrY
"���
o�������q�7����I�ܻw��1)�o@�G�^��&�3CD$ZF!�#��A����Y��ҫӕ^�F��x� ��R*��䮺�ܵW����F��Eɶ�g����Ib���B�!4eשּׂ{�QL��v��rv�[�Ru�~��KT���	����k�+�{������A쐠V}	T��cӷ��ZL���7��Վ�ì����G�}t�ݠ�<6-`�!wA���U8�-��1X��4$�rdT�	�N�^��5q��G��o��<�
�?��ȍ���$��I�kr�@�5\M��	
TY�ѹ3�Z��Gՙ||H����G�n9����7u�~+�Ð����UC�75���T�H<1cm�|zr��� vJ3�A��S�s>�d�8c���"�J��$~VD���ٝ}ʃb���iwC'&�5���ŠK0�~褁i��ݿ�霂a=b�3�$�&A����M}�t�-�F"�**8�O�FO��P���AO���6�>-B8� Ő�n�z�
&�P��!>B��:�~�������-4􅄘;-�$�B��v��#ڵCJG6���HY�s�}�3�P7��1����m’�E��]�U��Ҿ0n8j�Y��#K����߂���Lw�΁t����EA3�P�d6�OY
�s����2_�x!��<hQ/���'�}��/;�ĕ����[魨.�����4�B��Ќ�6\�(ő�]ۏ������x!�b�G�*'w�W�����Ƿ�f��
�q�ϝ����]��Dd��|S�P�����]��j�L2R̥^1�Ɋ��D�S�O��.9qPj��Đm���}��- eV��ޱt����P��'L�V ���Ѳ�2	+��~e�K
��I�+ շ��H�-�Cm��/��]��a�c��L�
J��8z�=j�>�U�_[<�g�/L����Nmۃ��a����=��Q�c�0���.-����;�Mc&���9�-Frj�#�F��]D��{�*�ɨ�������nߙ^V�Y#F�w6�~��j`$�m�"{Z���<���'��ô&��f%�[�Ђ�~5l���lsBKN!5�h�Q�v�
=��KsE�9���__�PL��v��+�Iv��"��!TjE�
��1�g��J��!Ƅ?fW�WQ�p�6��^tX`9�.�os������ȣ�<�k�8@T�� ��|�'O�I��j��΢
�2�ɷ�|N��o�(6vl\A�а��*�7E�b�na
���sE%r�&���:K�d����4�9��3�9���g
��c���p�S2dy+e8�Mt*�ĺQ9�iL-eh��&nj�[K��d&����X�����?@=��:^m��J#6�<�2����"���JdpI=�T�8�K�NW?��Љ��\�٢I|�i�W��T��z�����Z�Jw�"-��b�Ғ��J��S��{k�=�g�80}��c�����Q�u[��Y�}7��qX��gm��;E�¶&��6|vO\:H�R��i<�c�l�J�5`yƠ�{b�aB���أ�z�=�)Z�<X��­�3�\��ڟor[ǵ過*^.L�Z�[nfJܔ����}AɆ�=����:�������^���vh�а�~x�:y�g��o���]�o�������޿T�}�pj�mg�q�M�9�	N~�E���=�}��G���@�
��'�ao�QgP��j�-\L�c`��ȶB'���e#�Ho]�?ž�1w��ޙ�Ur�4��#���9]
��8s>+�v�Zc��L�±�F,�CyV<�Θa_��@�"va��\Cc�qvC�G ��h=Z�
�� �uG��$Z�
g��<d��Pm��Ǐ��{9�#�MB�猳�e)!�ٱ,pƑ�s���N�T�'��P:f��0�&	�t,��K�p;�RB��/�k�F)w�J��_�~��=ӧ�??���F�J1��ч�}�*��X����9�h�T�9u7֕���7����HcDOf�ϙ��2�����筭#\M�>Z��h�����u����Լ͎m�=�/dg'b��b���%~�U*��tb�v8�+>�5���ab$K�˶���y��Q�<���'��V�b
j�N�aV4�B&��I�J�t�I�*��E��M���ax�1�����c��U̵���
xV�����N����#�AM�5" )���>mKe)#W
�!n�Ӎ�{�E����<wg�Z���MC*�s0E8�-C�YN��l�G�ƇW�1>8;�\9ظg��/��C�S=(�2�_j���˒ΨC+���+_����̦f��XI���[���ܓy�M�����4���T��Ls�6���f�	z�UX���9
8��h�"�3xU�4�t��Y���;��=Zy�>-�*���lC�=se͌�U�1�59��y��r�l�P��)�)��;�iDLFlf���Ŵ�>z�������ç����t����hC���u����4��h����*�u9�4{�W���uU0�b�q�ƑGc���g����
�wDž���3���9r�4_h�R�~����5j�BM`���Xq��
��ϟ_	Ը��p��y�Ũ=��P��=-�҂��ȹ��#�^w.��;&���&����8L���B|7m}Ό�͚5���5X#>��R����\��l�,�Uk�Q\zllz��iB_b?���ܜ��oQ��w�H�ܭ딉=z��74�w��!-�c��Զ���6�+8����̑�2���ӟ�h��[3�k�	E��M����{o�Ǽ\����Y��&
L"+�j�����A�Szx�����ۤ�o+�_U1�|P �Q_(��!'�t���i�d4���ol���1Z�t�C��8���'~�����Т����[%&�~M��i�W����=���������Z�����z&0��Lo�-��H����(n)��.��l6c`���&H��3iG���_*5IٹyT�N:>m� �U+�&g!S<.�gtZ��e)��d�0#����Z�V���+hDf���ErV�	�/�^�;	��v��>@�Zc���+g�[;l��sO�i߹wϹk�q���0'T�jqzΧ4Sj�l	��%��O��E��e�|�Bz������P���p�N�٧%�R�7�r��>��o�*����'999��^fc\H��=d���(��L�����ϓ/E��A����3�g��.��a��R����[�0019e�`��t?��l�XA����w�}GO�0���&;��鍧���Q�f3�l�Vb�l��0���x��V�l9�׹�w`��E\�/=��/����V���LzyX�Dz釛?W�0=�|O�O�#ݖ�ʋ��W$��5��/��55KjD���o��W�9u�T�Y�'���)�*�q�4���Zf�(��O����t-�<�A��X^@�ЏB���s�`��Xv�\����V���v).�_�����J�k0����
A�f@,z�P�7�PB7���.a���Xh��7��@)��F�KXN@�$��j��e�Y��Y���MU�[@��tN+��r�лk�J��t
j@��,x(>�_	t=kZ�=�~�?��b_]���6�Wa|��$�ǩ�z�+��/>�A� oo��2�8Д6��2�u�k*�Tf�ԅ��uޒ���X�
���
���$5��0�<~5<=�N]��1,FF���P9;�sn��>rn�x��C*#s��>�;ؕuD�Rn.�+�Σ��7ߨ'�&}���ۜ��>��Q`D��Pv-W��9~�w6���@'�g:~ =Fm����Io�Z��1�����cǎ��}C�ޘ���Xh|s�$`I�hn,Wi
(�#��Ѽ��▣&h�M�g�L>�o򹟌�Y��ie��<�#)P�w�ԉz���"}�{rJ�v�F$t9"$�^����K��&��<$�'8���`<q�
[�r�*��k�f�,'pZ*��S�L��w'�V=G�|��O�݌�߯-rӫX@a�e���7���w�߻c�
2�JҾ�pD&���~�������rPp���5��9;2��/�8ď�H8b�z$'�ff~5%���"dq�	�>��^j�~���i�^�Br#/�P�����+wq��g)5��
[_B�gl����未\Q�:圫���+����d����w@�E��	rl�����ۡ0���3��ѵ�1o۱y�l۶m۶m۶1n�?�n�N�Ϸ���>�A�?+Ewͱ�_��P��U�A��b����)߻�>��+�^�v���l�a;�
2I���\EbL��V��q�Q���c�]bY��JS�D�b�Ɇ6���u���%TO����Xl��w���tK{��ݽ��������b�[�W��D=*F�B<!&j��y�4�x.Q�����M۵l'ĵb^����+�f�1z3����:SimШ���r�`m�p_P.
o�E~s�B�[��::D�i�}\G#�u4J�젌�8= �^�v��خ`;!�	����?�6���Jd�C]6����,+� �1�|>#7���𥈐�O��O��b�rTu���Eb!\\	&�-҇��ܘ^��]tq��>p��"�y43�
�)�J#�J�.I��/xcS��<�Vgwm�kY��(즪�]�v��I����ۧ�Z��1��u�-�Ro�'7�l��f�<�{y��6QNWi�|<hм��c�)���G:�_��2/���OW�9j���
���~Ӽ��"����h~��-���S���]j}�!��2~P�~\�`�QO����K՟�ρr�I����5!M�r���(K�"M��\;AQ�0\ϸ�b�ky��2��rV�e�{B�G���*xc�
�I��'�:_����}��L��0��c�h�ͻ������˱&��|�����+B��Tj�|'tLp��c��P�7��o{ʋ5_%}���Lyਟ��#��ើ ��Ñ߲�	�Q�s��d}��[���{�>�w�)��u|����;`�Y�"�6��M�d}�Ŷԯc?Fk3���;�tuuV��6��ȯ�����{����x;#��S5Uʧ���'%j�^�v�Pb���b9ۋ<��#r#�F������N���[N7Y_�f7�����|雤��fn�ױ��Q���?��1b�����n��n.��D�8>���Mtfߧ�!�e��s�v����ز��m��Wk���ľ=�+��O�ž��x�ݘэ�nb���e��05�窜"/мKr���4/��^�g�o`�vy2Ɨ��[�N/�0�
�؏ѹ見�f�4q}����=�*��Cw�D��I͋���*e�_�]N�gط�]>���8},j�^�v�@b�t�g��87e�+`����~
�sE5W��)���[��-�R�l�ڵ����~$�d,��r@}c�>Z&�;��eҵߌ�Tj��Z���*h�iht��������G�+�<k8n���'�J��5�����8o$����-�5d|즁?��c�#;�_b��i��et9l�A�A�^<�)��:>���R�b'є�u�'HQo��؏�y�|�EE�� Lմ�5t���9�@�5��JBsd���W�.?Gh��ۤy��EjS�1"��6ƚLj:�8�Y�
���_&nN��;��3B�e��l�mu��\�}�󂘪Ƽ��P�������Ur�G
��;C�'v%_���H�]��Σө��R�j�mq�"��ht5)=���R��Y=���'����X���U�ϡSӾ'y�1�Tyn�6�ܷ�<j��:��t��_�j�������|�u�fg=[��z'>kp�g}��&�~�u�<��#�p\���U#|��p_<���.�R�0��	�s	x�c`d``�������)g;P�}o�xڍ��a�ϛ��>�m۶m۶yU۶m�Qm�am�ۙ�>s�ɷ�9�Z�����`:�ߔA3SN� �	N3��&8�)��0IdS8�I�m����e�kT��r�
�8ld�O ����\���Z��yP��2�Q����Ѓң/%��p5�q���ϣѓ��D�e=-J�~��9�0��D�eG;&l�M�JY���2.�u����Q�˜E*/���!-
B:��xJ��fj�K��Y���>���A��w��Σ�5�(=��V��h��P�J�3���e���9\��x�;�t��O�o�"+�@>��f(���(�wE��!��M~�^l_��h��B;Ьb��9���p����i�qQ��.b�&85{jj壟�j�-�Y�
�i�"��c����Ha�UO$�E���h�>�f��o�S������\�K]�LuN�𱁏	�Cu&Nj��Ux>B����_����n�x��F�:�~���hȵ�r/�p��g�O��r,
W�w�?����cK�x�,��@��;�o۶m۶m۶m۶m۶�(�����Je��E9��j,5�ZTm�vQ���էZ���P�-�h����;=�^[��ԿQ�LF
��1��b\5]3�Y��e�4w���Vd+���*eu�v�Q��p{��׾mw"8Y�Nwg�sӍ�s{�K�}�%��gzQ�^e��7������Z�L��9H�
f��oa�0wX2��w��N���$?)M��F�-�Kޒ�ԧi��f�hiZ�6��i/:�N�s�Jz��a)Xf���b�XC֖�dC�D6��d[�Av��dO�G��G��yj����ymޜw�h>�/��n~�_�k�]8D,�TdyD	QE4mD1DL��r�Y���5�H���dDW��YeAYV֔Me�G���<�Jn���9�!�RP
B[�	Ca"̅����O�jH0
&�4�cy��ͱ3���8�z܍��>�_�"� �#&��`��N2x�M���`���R$@jU��$*�j�e�٦�=MOуu�9���q/P�F�B��p�G�Ej<�h.�B�����&{~�	�x��r'�b@��d�$�\|m+.tES|�b�����1O�+]%!g9�g��4�YYz@=�=��A�>CFL0���N��})b�-���>��8�Bb\l|<e�T�Y�b΂
;��L��5Tx�c`f��Y)X*�fonts/roboto-KFOlCnqEu92Fr1MmWUlfBBc-AMP6lQ.woff000064400000033320150755146450015007 0ustar00wOFF6�Q�GDEFDGd��GPOS������GSUB��7b�OS/2�P`u�#�cmap��L���gasp
�glyf
�&�6h�T�head1H66���\hhea1�$&�hmtx1�d�έE#loca4��W�ISmaxp5�  name5��~�9�post6� �mdx�
�1P���PB
�U=l@B)�w�暮���Y�e�u�m�C�s���x�h�~R�R��2xڍ�pfKGϽߍ�1�c>��`9�ڶm<+;��m�x�NJbg�M�T��O����׷�����l��XU���/{�[_��W���c��_�72� " z�+�F������&�&�`e��T]�.��K=��K2S����q��dƅ��xf�$~i��$?�d��dU�����@R-/LMO-J6���[]��Z�O�C_�"If��d���fS����$d�G>eL`���Tf1������9�c>�`1TR��x/d-�����q��������7����{��.v�����!��1�QG=
4�D3-��F;=�1'�'q�rw���9�e!���Q��f��̡���qV�n�h�V�Z]�B�C[B�V��ݩ�v���o�w�{��w�zRO�i=���_��ڠ�ڬ-ڪmڮ�٩]ڭ=�ݫ[Þ��(1�(�#����O0/�0?�04rLG9����i6��l�|�(o���|$,��{|&|���YJ���x	e8B�#��t;R8�{+����\=�����r?+&Oע�t;X�Z��յ����s�ާ�k�cuZ�
ڨ~߇�\��5Z�U�^o�Z��zm�FM���M\�VJp���&{#i�٢�ڦ�Aq�8�z���N���5W�a=�G��ա�5Z�U�6���>7���ǭ�k�N�A��y-ڪmڮ�A�g��)��~U�X��K��}�w�?-$74a��Ø��wyGg���t��x��9�K���w7_�1M{���z�����@ƣY��5�s[��9�%\����w�ɡ^W��}2t��������C�?|:��W |Zk�����O�����r�ko�]�u/`5m�졜kn�O��_q��.|�t�t���h���H�vɕ����kw]�	��S�Vog�0sXwy�3���ڰ'�}XBi8���W*	�{���Zt�o|:l��)?��7�S�(�c����kl~�����<�5����
��/�
�˹d�W\��j9^��M�ra+V������o���c����šk�o���>,�~"t�:I��'!|U��p@{���=�^�k�^=�N�z����\��[t?�l~�>t�ю��l��]�s�߸dS�e\C8��c��ȓ�b�)��B�tn$�9,rl%�E���Z���1�
�L�ȳ����gewS�dv�L~E#�h������Vbn"SF���b�{['H�D�$)a�DL�fJ.�$��2�$�F)g�0Wr�'��/#Y �,�|I+%�U��jF�dS-	��g]+)�I��-��6)e��C
����?DFp�������L��+��5 f����}d��9~���rL�9�2��a��H6M��L;)L��t�%���X�)��J9$�I3Mbf�nߖ�[��9��\���u��aj&�P�X$Ŭ󢂈*�0)R�����^"6J>�%�-�M:5�;���I��%�V�����9R½R�9�7G��h����d�Ę�����a�dQK#M���H蠛L���m<;x�M�R�a��_�5�
�9ȶm��
��m
;M��/�����yeu��.ό�38�?��X�����E��-�A�����,��"���LfEv�̚�r�u5��*�	h2����O�¦obr�����^�Ɔ�IQ3M͢����@%����@�����[Rq!�6���
��N:Km]���P�!��?��?͉�Tq�.S�*A�Uڰ�0O��!�Czd��.�+��)5�|�p�3N��+��ᖻ
�g�Y�x�'�y�U
/����>*x�%űE0�����i��*��0�94J�,a!O�kN��pK�=
Tm9>ր�b��D1/�,�5?/���zL�,�M
�xڅ�Ȟm���E�mN��4+���f+Ͷm{�r
a�m۶�go������t"�/#���Ȧj�� �_���<-��v\�@�*���ޞ>�>�����H(���sXX�$?	�̷�b�p�
se�X�?¿!�Dz��R*y�\�w���&��9�s�%���|���ҋ}/����b���/6�X�b�OΏ��AE4򭭲�k���+��n{��@��w�A�6�Gu�q'�4�0�]q�5��0�7�r�w�tϏ��
(	�~�d�Y�E�c>�9EV`16�6bVa{dv�6�`d%�8v�Nb N���<.`0.���zd(n�A�<��#<�e��K�+��M���D�G�\d�Z9�1���Xҧ#�H���'���'&����s
b*�Hd�Dd&�ZNu�"Ԉ�!t��%,�̣�Z7����xڤ�\TY8z�s�Y���]We�q��a�$D�0�QA��.�&�W];]�
�]׆9����������s��s9���8��X�񜌫�5�p�J�P�
�*Ђ�o��LN9��4|@xJ��b�Q��@ҫd�~0<��8�e־�c��6��w��0��X�;9��W���=8��-8��U���zLĝ���������F���o�w���΋i4���fo[�K� �f\K	����V%�4���,l���ِ�%n��8>��~�����x��-q<�h4��?�:�����4��8V����-��������Y��XXZZ���m�e�-dRna���ת�-5�μe�뒻�ܳa�9z{���!A/W�w,;���.��モa�a}��Gl�iz��ߞ�>�3l�¬Эefg�X�/M�Ρ���V���\#����u�83'g
�� [�����Y�5P�\Br�%�"�A9�hނ��y�w�3�gO]o�P<w���ws�{To=�G��V�(�8�-�`�\Ygw���=�{�\�ޘ��m��M��w�ggw�no=�O5��l%��~���:��s���Y�1�+Uj$���Qr�%o��9;K��K^�ã|���Qծ�I�{�&������E�HE��k;���af������^?��h�/�;u.}P���/��gϘ����){�H�p�?��ٖѲ����2qM$j��I;�B�N�h65�)eDaab������bN��yK:�|�)�at�&�v�W[�+�e��.��%3;i��� �9!r����ք�u���J2lʛ9��;ά�ΓN��`z���8
�Zh�RV��4��Ռt�s�bɏ�t"��픢�����Oϸ���9��J�_]��z�D�	N׌?L�%�-}�Ƞt�-��\��R|y��G���tă�3����D��=64&q���u���2١嶽��$���c\Ɲs#�1�IPMr��g�*��/%�~®eվ���í3Z�Ȭ�������Ч��?����v*�'�
Ni��i�Y;�0�thU
�90!6քW��Z���IV#WH��t��^��z���G����K�LH�J���ACp���,��}��u�wlچt���ݜL�~��Në�mZHB[
!	�n2^���#߳5Zpv6�����șT�{�P>,<"4"�VL|�s�㨙tI9���62;i��n�N����3�ݑ7
Bm�?�����"�%B�]XP����UI�qa�F���oM�d㆏Ϡ��I��j|H̘W+���Р�P��}ѷNDnn׶x쉧����'JT��AYחlc$�5��@���m��Fd���BO3b�������TBTHuR��c�53SY�x���eʵW�,-?�"���;��Ƥ�^�^�|ڽ���7"("~ܨ��?��ȃ*zVG��y��'����79s�3*�p���G<�Yr6H���L&���)�N��:�oan�Ǐ���˦����w�#�p��z�7�YJL��T���Lq}U1��$�
b�C�YЫ�;-������J�r&��b-�З���I�V�Ɵ^g�r���䬥��YSV�گ��iH��;:M���3��B�eƅ�}�^����Ò�Nh2�7$� Xh_�ٓq�����n�UsxHJ���$�LdP`|<�T@�k�-Rc��p��!Z�U�*-L8Q����� ��$����%�'ܙ��N&�eto��7�Q�G� }GB��^N_H_%�%thc�sӤ��������&�o��8{δ���^�k�N4��j���AI�X2�:s���G���-&.5�|8�?OÈJA3nfB'A��@)�
1E�� ���g�yZ�^��r3�ۂ��N� G���d�E��9��bP2��j��Q>M%�8uE񰸡��r|bҔ~X�Ch�}��xZA��Z��s��g����˖��r�:n	p�f�a��a^�]hi��@V� ���UvG��i���t
5���)�S*y��L9��@�S�%ڴ�-135�E�7�3�/����`��x����s���i��:�e��4�XB�50���:hO�.��а�h���z_
�{k�k���!�yk�O�'������g�f�l�?��W^�~�.B��	v-W�r��
�a��r:�Λ6+��ht�#L'b�X����vxH��E�:���`IT�D_��--�BqiIT�>������,��Q��ꂜ*��j;�<l��z`�1j2}��O�L�W��yU,�x*!�ǭ��$dM�
>Ǘ	��2[@�fu�Neł,�T�K�˜1>*�Y�czl	������A��eKɂUsfՇ���k����}}�f���{I�N�ά�q�rӀ��xA�a�E9���m
??o-��[����e�X���\�u��*�H�ӣ^��@�f����B��t�/a�ݝ��qUb�t�q�3�'�j=-�����A�l�L0�feb�qv2�Q�Z������l"�7���W��8<�6����rm��F_�.�K�.e��n[�WNH}t?��S��[F^D/��jц���2hK��5J�P,��&޸c)n+����J�*��Um%���H\��_�I)�g�?�B��a�bq�ɜ�����F�ý
q�\�A*�X��O�ѐ��&�t5q�L�"5���>����F��n%&��Ȅ�@h[�*0\�e�z�70�OR� f�k-h�%:���;�է0��>)t��)��H�5�"�p7{�QR�%Ն?Z�Y���b}���hµ�j�:UZ���9}m�b���}�X
� �����X^���9PN-.�^W�ʡ�Ν��
x���~��=����oIz4�8�6G�UUv��b��"ZF:|�A��z��O�I��׊�coͻ��Q�	���GkD�R�Z�\����GԷ�6�1zA����o�Z��-�O�x%�I�xY�c;`��\tِ�/���@����J�R�ur昌*b�&?���~Gc���Q1iLo}0��!7j�Q�m�Ɣ[�Z*c��ZB�?f,=�a���k�dӲ���q����{��V.�v`�0��C�f�O;�|ij��p�~C[{=�z�|��yU��#��,��e��'-�nB�p���p�_Fa*R���s�m85�f�5S���T_������h^=^ҧи��P�m�T�ϟg0X�w����AրxS���r�8�ߧK�A�m�63)%��Fxu
��#�����*=mN��P 4�4��T㈞�N��[�F�A��I�R���O�#�A0���뭁RB*�U�@P2/�w�-n?�����5��Vda�P�+b�o`8�q�:�$ײr�����m�w��л��Xh��v�v,�AZ��Ir��E�j�|:��cKo˫�*�v*�m�d
&05Jo����Ft1@0cz�(lA1�`�l݇&�e\Ӗ���%�c#6p����
m
yTG�?1<Pۂ_�q��D�k�����'��ʤ+�YE��i%�
��yCo�
������	�Y5��3
K��Kc��7�$����m^��j�� �A�vjٴsϠ��y���h�j�1���t�ҷ��
���6�|�;u8�L�ܗ����"eM�f�NN-g��z��r�A�B׊��q�h
�"��ܥ�ccf;i��mkA�h
��=Z��Co�b��d�2�'r�s�;�
�>#]՘2f9�K�0 �@H+�|L�@���ZE"F�D_rO:j�>A�����llQ��Q��Rߘk*�	��c��$H�ܩ@=�^ִ�q��c��*>j��y�b���i��'nt6�{�"/�%3�n��l�5g���b0��a!�Q�2�Y���%2����ϒ�Z�O�y��������Hs����|�9� �i�2և��cS�C�P�6��Y�8�F�Ee�RT��ZX���hn�_;�N���|tY���w�,�Y�4���5�،��̹Θ���:)k��C�"Y���wo��Oצ�s���j���U�J����erl:���EW?�5iH����.��PS/�p8���Q���D�I�Yc�r�d$R��5������mP�f�}�#<8��V�d;���a�Hc]��6�h��4��GV��4���ף���ͥ�a;�lȢ �h�Z6FS�umB��=�{;��*�J ���9�xXo��^���E��mb��Bil�{aw,�/�jv�A�E?K������F$��W�%x3݂��S����dY�F���r�x;�p���G�x�-�d�۸��ދ����Ov
����������R���!�^���	���.҄E���a�b�"0zL/�ЈMM̤��)��䒥�=3���,L}J��'�JM�KKK�O%�ܚ���#�����ݪ��]�7m�b	*tA�Ml0g���V�M,��/)�B97���\��=S��y��}��R(��Ϣ8b�-/��}$��!7f��֮A�_�9�����3J+"�J�j���:�i�ID]��'�}2���:/�E��E�I���Kz#�]�h�F�w��:���|7R�Yp�����1�*����_�J�T�^k���q�4�eɥ����7=��3��S!>x�?��vi�~aɉ�]}{j:��i�wyɁa["�vct֯�$��ކ���glPy:p��=:����e�։��2���N�~
�W�%�E�7\���1���0���#E�V���_%M9WBN�l�&���f2�q��XK���=͡�4��0�G�f�,֋%��Xu�𼍡�q>(i����*Z	�yg��,���٢\��T�X��3ko`�m(ZY�����Az��8=����L�C/��M��I+b����~�'��{t�?�ԫ���z�諴��A+Inu�Nef��K��ax ��!��� ���&�Ԕ��I1��t�ׁ� Sd]X[�l6Z�؜����r��[*�]��Hػ���7ٳG\NWDA��k�ϖ|��q���B��=ubw���y�P�@VЯeG�5�JE\X5+Y;���jY���Rc�����+�����h�wt��ʲ{AA�\y�)��/�g/_���
Gh�.��]��A�W�~Ւ5K�@8}(�c⦾.n�yO���ڟ����N�#�ɡ{�W�{r��D�)��㙾�4(r�YH�Z�B%���
�PL&֘�v�f�D��
���=�2�2�I
a��p��UL����>w���s�	}E"}��!��Eך?}���Y�	�Vw�6���Y�A�y�0�=�OJ'RJs9S'N3��6��ReA�d]ɼ�[anb�*���e���@ߞ��@K���^Ue����w���D�_�b�o�C��P�������r5��I��I�D������%��+
���.��</;r��y�W��/��$!b����c#��%&9�hb�Ĭig�9�[n��E��,Y�|���5���inj���~>5�<��g7�K��c1�R3�P�;Љ���+z���K�H/��G����q����E�)X��I.H�}
�$;d�1Bb�&�@k�oV�?G�1������q��-ɥ&�v�S��=���,�.R
��vR[��zWaM^6}���һ��4qT�d�s04o&|��=�PG'�	)'���Y104
���>��썋<�������
�9����	޽�="�V�n=�O�V�~���
�,��C�2�ns��K���ݥ��g��U_W�������;9�{h����x�뿇<��?��
�����Yk�Dlmp�hb��hS;cgm��;��#����X�a�!�i}����\���V|zy��$��(=p������Ȼ�7��ƥCe'���1}4�V���N�n��r�,�t�7���9A�g�=|#�������,?��Ba�442�	�/��L��yGtj�;gf���nh��,�3��4�i���DM�Ʊ�N����N��~&tv�ٳ7����*u�]6�^
�TCA_��q��X�TrN?��i l�/�m��đsE���ؾ��a0������ƞ�1j��m����V�z�����.���Z7�cH��y�oDx��ҝ��YY���Y�[ib���׌�N}]y�,��Ί>���!zo�[�2���7�U�_}��d��D����2+/i��#�DۧO���P����h��z��N���n%���(b�l�p��K�Th>���/z�|�ѩ�勪�H���O5Ϙtd5�'��0�4f6N_��*�O�Zvt��zi[��\��%0���
����s���}SG�LHJ�l��3d�kXrcM��c���;9�v-�2uѶ�e���~��Sg�0!9Ȧu������Z7qz����&�I5
{�(c/���W�왌�Gs�R����JC�dl�Z��_�T�_Y��h7V#�e�Ǒ��3���Q7�O���GIgq�J��Ƣ�JAfxD�C�GК|Go\���N�璖p����IZ4*qn��}�B�A<M���&D�prVE�D�fR� �����z�o)wi�8iR�o���K6j�D��$��(1�����?��`v�Fv�m�'�����cPw”v����v�ѝ��C!��;\���Mn�O��#��
�4"��#�s��.~5������ϱ��8NL�rjnSmY��k�%���B��~��X̮po�
[YJ�te#o"��q��h#l�qi�ޓcX6s��j������7�S*U��C� �*���Y��� �����|�W(y}�z��a�j�ƚc��%nm׆�/�����"���X� .��ݑ�&�^T*̤̋�x�{��ƴg!����[��;jnB�;��)x�=bq%][I� ��ʷW�ӎ�v5�(�=@CK�Bp�JKA��^�����6���L�ҳ���Y0υ��Z������y�Zn��7�`�#��nM	R���`�j�h�`���N�dv��9�g�	r�c�	8�%�ԭo��|㔹��'!���̼��pݞL�vyv_\�o��aR;�ㄵ(�F���{� �\�Ml���æGy/'�g�^����)G���-�,�q�H�⏆�3��X"�4� �dJ����� ��nx��Q��#k�Lo�w쟄.A����k�����gತ���E���g�%y�x�X��UӇN�����l�>�����TY�+�'@�N\g6�Q˾��91�:+�<�0�j��<h	l胋���s��N8t�ÿ�}�A��߯�f�+{��l0g���@/����!#}y��� +�<����ܵۡ�g@?'��G�F�����qV�t�^����u�؋����hi>����~��F05��g�+�؞U�L`Xc�u��Z޷���Y�h�K3��^��$���m^�{�$�3N��~�c=���'ޝ�4�\�<.e���N�i#R�v��N�`�:&�n�D�����!f����W߅^�5��u���?��'q}V����5�Ooi�b�J
�>Ι#���y�Ѿ�9�Ճ��?�9MD��͍9G�>��sT?�`�&>���r-ZťIc���-��pP�Ò���2ś�7޸"e��M�\&�d��dܷ�og�B7�WD�Odޙ;l\1��y�a\�Ly���d�'�(_^M{H���V(�|�2�߄Z[)��x��l�5�a����_NE�Z�o�����.�(��+��`Q<��O�!��%$�:~p쨠ePh�
�@��Xf�'������wЋſ"�����7G�w�"�oM��}3�3���q�W�3wF��w���1�3�����d�lڞ�⒜����o�0���(��9K�J+�%OP�;��c�Rh�w��sw�,((HI�aXJj��7�.��T�4|��U��A���ㆋ��9�-]�$Z��d��+�ә[K��)�aS'
�5�%��5�Ul�>&�?5mP�n�ڶ�&MR�w�h�V�x���K�ۂH�=m��kl�f6��i��{��&y��c#��G�i��С=f��O(�s}�
�9���,�� ~�U�S������Eh
�d��J��ur�3��q2k��s�
��ֹ�U�a��������e�"�*��[V�\e�tz&s�V�e�3����e��%�6_BJF	My��s9�T��)���U䞌��4f�/�8�0a;L�9�U|Y����	�`��E��X�찿�}�,.�8��M��D��F�5�4�"��b'���q�	��ʌj3!3�Q3���8~BjL��?�H��)_,u	��ҕ_c�9��x�:DC�C�!M�f�\��e~��,�ƌ�Д>>�����3��`,d+[p#��
�L����]�#�͒H����)��j\\�\�-��NG?�m�86<��˙SI{+^�,�K�Y�o�9�~���mٲe���,n���P��x�j�9KZ�n�jVd��e������/����_:��5������O�,���|b�l81�rd�b;�\�nvI�Į�_'�,p���o�\_6W�i��Ҕ�9‹Fxl^P�\Q��{x�*/��q�rD+D������z��:�A�=GH�\����L���W'�D�8�:b#�V�5b#��s�:z�	��V��b�P�-<��BhE@�S��+�����F�Rτ,��XQ���L�_S6�2�M�ݪ�[���վ%�[#i�h���C5�5�!Bv��,�@
-.�-~��s��yUᦜ��n_YoY�i��Y���������E�u�2b�S�A�����M
!�]����_�
/�C�%;�G�v��fƻ�uq^���L�<���b�n}���:g�^rI��u��i`E^v�i�Ư��7YӥY}��/B=��qf�Z�ԁ���39J,�œ��IH��c����k|lS���6��X���6i�ߟѾ��:g֠�8ԏ�!��Hm�n��&x� 2������8���GSC�u�fc1ַ�NCǾ1zȆ���-,����?ө�ϝ���I����'%fd$Nvu;6����mծ$��{!ǽjߐ"�f.ݑ"���6ZB�ِZ*�V���p#�z�����M��~v�:ula�J��M{�#�ܳ���m۶m�NJ��_!�!�m�F)vJ�Sw^O�T��x���w}{��>�Z���]���+%��[G�S�U]k�n����(�����a�=Zڢ\�ϣ��R�u�2�H�'����Zd 9�Ew�-�$� �o�WD����r�纂��6;�~�~<r���e/�'��P̚�L�����N��n��[�*e�}���&�<N\3�·y-����3����ay?�_��:5T��y��&%:5ռ
�+���Ǣ����B��`V�ga��3�F�*�|9�����a
)}o��dm��i��cd7�n�SS��퇚U��Zz�ED]�lj�F���0����a�3���w����i�����q��}�3�3���+�Ԋ�|~\�S��m�qq3���_uV�a
4��Y�t
M���p���tj��z;}���3��t�4�u
D+ݾ�������uLkT�@��.���4��s����+�*ף�K�dI�|-�J�:��D���9�����
���K��o�8���x:��k��d}�:f����4a�>�J0y��lp<bV����J�O��3�;��U�2�D�t�#C��|_<���.�R�0��	�s	x�c`d``�������)g;P�}c�x�m��\Q�=�j۶m}k�m�m۶�5㤶Զ�gP�%+�Z�j*��L��	��,t�b�����p7y����s��V�Ǣ��
j��ȥ ����2>Nln��h'2D����%'�
�%і�b"��@�M�5��ND>]	�ug��V�#E�� Vo�h
�<������`t>���b��o`�[��c��k炾����eP�_��*<���ȿ���j6L���.<
y�N<Z��n�
ϒ�#��!�J[V��<�x*c�����6o����=�EA�.�"�.*�}�0C�ߋ֢9�&���92�	#y1����d�9
c�·hu��B�4LR�9íu&lT�0�}A��N4�
H᧘�Û20�j#Q�'���/sC�a��l@���k�q �zb���˜`��,F0�D7+���E-0>���k� �Ch3��觋b�Q	9��H7]BG�8�n�\�:���`�~�q4ٔ	5U�<m$�sd��|U����'���h.�W�&Z9ڝe
w�F�
7����lͱ5�:��Ě���|Y��;
���K�;Ķ����d�w�LIn���=C�������2��g~�&�CA}�o�x�=��A���ݙ�m۶m۶m���*Ķm�v�K��0L���<�
���ǎeװ�؏�Υ�rr�:�Xn>w����|
~��,$2��*B���N���U\!�_��R9���S�!��J7e[. ���˷�w��dP*(�Q�e��[9��U^)?ՂjGu�zP���ZM��6Mۦ]��閞So�O�w�
��nT3Z��U�!�ɚ���ld�5ט7�dVy���պb�;�}�S��9���,g�sй�vE�����n��;���������[�K~%����������Jp/x�	�0m�3,6��%��pox,�Q��q�0�}#2�AZ�d-�N^�4�mL�Ю�N'Й��c��G_�o�� ��*��@`��u��9����C
#L�ٰ �Ś�;`o��p.����9��O�=���؋�Ǚ�|	F�� ��N2x�M���`���R$@jU��$*�j�e�٦�=MOуu�9���q/P�F�B��p�G�Ej<�h.�B�����&{~�	�x��r'�b@��d�$�\|m+.tES|�b�����1O�+]%!g9�g��4�YYz@=�=��A�>CFL0���N��})b�-���>��8�Bb\l|<e�T�Y�b΂
;��L��5Tx�c`f��Y)X*�fonts/roboto-KFOlCnqEu92Fr1MmEU9fChc-AMP6lbBP.woff000064400000023634150755146450015223 0ustar00wOFF'�@xGDEFD5@YGPOS|&�%�?GSUB��N�K�OS/2$O`ux�zcmapt��ǚt�gasppglyf|�+�?nvhead"P66���rhhea"�$
��hmtx"��GSFmloca$���^�Dmaxp&�  )name&����:post'� �mdx���@�y���YJ �{t�eϺ��e��t��#^��u1L��&,}�]xڜ�3�^I��ج^��v�z�j����ڌm۪c۶�b;�ޱgP޳^R��~W�7�7T\�y��~ղ�b%!Q@�A�捕�jIIE(R��
j*�R����RK�4pT�9��h���X������@�f���Q ���mY�s9Y���'�Q��]r �<���$�jz���P9{�ڜ~�Yr�}�@v��9��23{��R�9�3;�2X5ճ {r
�2��ʾK����?�0QU�Lϼ�B�<MN=�Vs4���U"�=���[l��Q��,�5ȟ9�.�0��q�g}v��nW�W|���VG]���@C�4�DS�4�BK���V;��~��_��_�t�MO����@�
5�p#�4�hc�5�xL4�T��4�\�-��R˭��Z묷�F�l��V���v�Q�w�I��vF�+�],�.l`^��u�NX��(/]���;�Z��YV�э��M����P+T�S2n��g\��z9؇׷t�J�{/n������2�"c����B�T��ndCXk&�b�G�%NB̹z�����vx�=�RE����A���<�n�m{_��4JO?J�8�?26��q��P��ց�õ�c����@���D�֩��v�sӓ:Շ�b$�'�*SX�!$
5�b�P�J_���D�|�>|��8��V7x�c`f��������u�1�<�f�Ȑ����P�����,������Ƞ����C�,&�� 9+�

@�9!x�Ũ�^Q��w�VP��
j����4�۠�16ñ�*j����;�}�ho�;�Ms��azX&�JWO��6�&�T�em�Y�e�^�g��e[�}0���n=�VzG����qy�Jƕ��W7����!6̦�4�c�l��Z�e�;!�*u¯n#t�
o���2.w\��j�5���~���ɚq~���@u�2������G��<�	��l�_x?�-X�������9��SYD2K��5�s���"�l���r�#�
)b9+h��V�h��RI#�;������fZ�B0����`�` C␤uX���nu��"u�C�:Mf��9�8�.rX�.�U�Uu����ke3��n���ru��j�$�j�$�j���j�d)j��:�}+�S�Գ��,�֨�R�S?8�P�o M�#>p����@�:JF��B�
�!�VW�Jॺ_��O�x�~���[���E�sV�QK>���j��Qj�41�l�����x�tY@SW~�Q�qk�$*.ŭ�!�ٺ�buX[TDqoeY���T$
8��[��f�q����K���#/�q�ι�Dn*��mD�s�¹r
8N�S�x5�x�AǷ��������R�S
D�EK�nQ%'�8�������d<�΍�ľ�Q���8�ց	t��ʗgӷ��1�7�f�{��,�3��$c9�W?�E\s��8�Wkb4���6�qZ�����TO�_@��Г�z{��^ϧ���s04�����s�ؕ��?ݧ�=���+�I��nY����Go�nf��q�p���i8Τ�	n���6��ip�[�ٽ�^-޻��mr�H��E�ï��B����!��8Px
Pxq�V�8o�B�$9�0��<�'+i��r�~��E
�B�\��|B��I-odk����3�G���=r��VOt�5�L~�j�Y'<D�9I�7���Z�E�7���������[�Mnd�^0_�	��g������m$4/�Z���СN��	���Fvy�,�Uv�LN-�Nt1p��d�e�	����Տ�R|���56�M���䞝����tdd篿*�痳��Ֆ�oT��@��H�Y^
��'�E��.fe� ��,��\�m'�`@Zm�li�
$��\�w~.���{�B���A�
wa7�P{c:�8��`�-����d�Va��D[����gl����V��ml���5[��a1,�@�5d^��0n%�iU�D�E�s3�-��㣇�Í��a*�g�|r���$g����������
!Y���b%Z���g�
�W�X�Uٝ�OIL9�����#��r�pvp[3B�s��/YL__��h��NJ�Y�Q��Θ������[��0�Ck���i����<�4���;�k���Q�e�WO���-��"
>�2�����N�woZ��&F��I�d)�qu�̅1�N[�oƉ�g]Y1oy,� ܏���nXh[h���a�5J/�D�.W5�Uj,�c�h�V���U�'{�zh��f�G�C��e�_�?��?��1&ʜ��n=��Lb��m�RI�2+���[%�U
����g��n����Ԡcထ��F��ZhL(9b���F�W�~0�_�D��f�Mi ��k+"�e�eI�n������|u��Xf�����˧���'��u�")�����J�ס�i�1�l�@�������R\f2+�B����j�ƛ9�y���w]x�>~��������rXR�E˖�k�pfE����
�=��Y�Q�uvH��㇇cB�/Qr3�c�M�t���ϡ�ZU�t/�	�Kf�E_A��o�R�7v�H:3pZ�t0�5����o-Ya�^�0�s��?���g�#�,�Ռ��{�c�w]?9��К4+��~��*�O�Uq3�_��K�Jr��0�Z5�0�1v̊q���'㩕$�֙
2������_��=�m����Ϗ���U��:3=@_�bg�ZZN�䥛�%N�巭Nt���2���+�h̵~�y��"��h��M}\t:����qu�b�����y�+��N
}?5~	�C����*n��28eɢ��Y��ծ��pwn�C���Sr"�ԊU8�z����q'`�h�4>%�j�V�YrrfƸd�
IP�D�Z/�����~����VJC��-��q������#U�qK�ʕ�T2�d4+;�&��g[����	��������®Z܀� �:��p�c�u�@k�)��
���&q��`�!�`���O�:��,����LO@?��B�N�*Y഍�r׫�6�I���<���lb5,ZV1/��U�|�޽翕���ȉ���&�b~���Tcu�Ϭ����xU|!������!��
4Q6���)K�����pMX��(�ZIbM���o��K�~u=�[�QF[W�Z�&!n51n�^A��w�n_	��e_n�����}�c��	�@�?9�ٴ/�zO��ߋ[g��LJX��D`&� �A��V��?K>�,X�=Y��c�;��Ĺ�֨ყ���U-���#1~�ĩ`���f��g6���߳K�^#�H9>q�����Qb��Gd�؇�`�c���J:h$=�q�٤���|�^�|�}����}{L��3��Y-�ɴc�Bq��k!�y��� ra��w�-��~s���,f��B�+�\I�]l癍t�����
�<Cw�`:���x�^�E����_O� ��v�Tȍ� �9��Ѻ���6`�: ,�X�Xľ�<:屹wDZ���b�`,���E����
'���P��!�?Pa�mO!�r?�ܹm���'����ˈ8j��Z,���=��7;8xv?��x��O
�u����EW����`C����-�ne;������A�Ї�G��O?�}�~�j�R�ot4�г^��U}CC����D�^ѩ]��
��+�S�P�@76M��Gwv��a�߀�=E���sԤ�\�A6V=����!=(Z�iT1
�H��GW���'��B|svUF�>Рf��R\U��;Q��F�T,/l���^<���8R�nľ�-`�W#�a�E��S���f+"�I!D��
����Y���W�Aa�Ug�L���t�>aՏ���`�ş��0�(97�p��J���i���p��K&`���ryu�;K-��ϟ0r��r�o�-�x������=�C�ۿ
Zޡ(*~�3%�!}��-��9��{��%���X�5�ko�ާ��\'B�"+�Z|>����a��Q0��YkVê-9���4_+;1#C7L/º3nt؆�W����SW,=.A���J
�Zwm-�*�"�jl�L&y��K'�Sp�:wc̓���V`ь�n6iL�7
G�`�p�f�f�׿Cu᢭�sP1t��\�־���%�bƝ��
���eP�c�a�/�HJ©�>o��{Y%��`#���2��<���I�jp%�j�w��E��u�&�;���g���`hO'�i��
At0Xd�|�q�b(�:���Q)����;<`�Kr��G���ʯJ�2c��d8j����;i���f]���'�S�rc��SJ'�+�_O#Df�\f]���^D��!��k4W^h��$���<���z�W��b��H�`�Χ�$d�N���H7��E�㐳�����t�7.zC�)#��
��s���c��H���\��I�4�z&��(*�Q�:g�5�q;�]������آЫC��'���V�\�L��`·lv7bb�X�y�ޥ��5��6���,?A��e2���Ng<`"��������at=[H�o����t>jV]J#�MԬ��W�V���0�QU�1�ŗ��h�
v�߳���c�m�K�R��R�����K�M�}���ɲ`$�#S��5��1�J�c����	�P{Bl�
��9!��9h@N¼�|�M�����)q�Eɻ����I�}�E˙�9�~�/g���q���=Gbi�+͝����E�V��EU��;���13��N�ڜu��c_n�c>�zH�;�@���s�'���۰v�n��;.��8/�R�$����h�r�6�v�I5��G$B�=��Wk�rU���ҿ�:�X-�א
���ti`����#������I��;�Oe���j���+�H���ۼ�>xນ��߹.Ф=�Mp#���A^�]�އF.�r�p���r����Vl�f> 6��r"bq�|���������`v�.�Ú{a�`�G�CC�!!��xa
1I�pKc�&���Th{�^� q��$uߎ����Kj773>>s�N}zw�دJkK����r&�@K����#����	;��]�k׶�t�qf�9���%;]&�#�DE:?"i��k�O�9=iB����)��];�4ctWe�
����j�W�X{f�$�	}U������jz:��2����<� V}-�lS�������cb�FO����A��I��I��O�u��պsg�B9�$%�n�H�Tx�4�Ux�Ձo�	�)b3}�ܨ���}���4کz�%��9�����p������C�C�7�#v�}Z���ZD�����Hor
lC�>d�va�F�
2�02R�^�f��q�G%%.��	ܐ�~GɃ�NM�N�ڱ>�nH��"6��u�F�Fpb�o�_x㳈�Y&��^2�D��7񲣰6�y��F>�����$���ዷo�N��	��R
<���q�F:?�f�
+B�тu�$��FpA5�~j�^2�2tb�|�%[�`�-�Ѭ�|ۄ������]��@V/�N�QPѷ4��W]ͥU?���X�q�V����b�hQlb�|���/����G����?��;���V1��c��?w��}��Kf�?o�۸�
u;��������&{�O��x�ĝV��E�4�&���t����S$���K�.;�%�-�QN)���kS}�5C+s�f_$	���C8�F�CV�d��1��<�+|G�C�O��Wb;O�ȏ'E�C򈳷1���ڠ	Z�����1���(���x����~pG>��н4���?�rA��y����Bfҋ��\�\��o�=l;�,_���=q	�kv���Y/��qez���P�@���hb��3����O�%~=�^��ʃ<c��\n��|�����6bډ=�j���dȦqN|}��M�zCXܱz-)c��J���N��jLC�0�d��GbW���^�GH����2ną+F\ݾ}q��G�6b�;�B;6���ӓs���8:�)�^�����w�+,�i�<�ʃ𛕏iKS�S�O��1$�����3�3|�s��D4�֞���O-�੫JW�t�7�<�?�"�C+��-��4:,_�f-����.�;r�v��s>�'�Xˣ��WG�h�X��PK�$/�/��M|1w�qgXI��xߚɱ�<�l!�2��!���R:>5Pb]��?�Ζ�LO�t��
���������~�ׁS�}���o__o�ɤ`l4�|��J*��.0,�E��G�ϰO�-]2�N��1r�)Sfs�G�͵���&��ǧ#99�ӫl�w��.#�3ɜ��u�j�S~�e��-��)q\#�^��юsf!�W�:X+,�V�\�tM���n]�s��yAQ֬|_���j�y�pӠ����	�	����e˙(\u�l�6n?��Ǹ�9�m۶m۶m��d��t��=w����[u*8IN�x�I�*���TH��S_!�*��r���W˵��Ւ�.W?�z	w��"S1��s�u�0��*6p=�1:j�ɞF��t�TR���@w�2_�&�#��G���5B���BU�[�
';\u�@����Ɏ'����:�r9��\�����2������i�]���x��ìP��m�+���R�ٗ�Ӟ����K�Gr_>��9��2�+1ze"��ˌ��zBF��D�/~)�W���Z:*�G
]˗��e:~���;P�f����f������Q�9FM<�	�vt�Q�0��.��O�/O�0|���<���c�s�hVT��B��-��Bv$�{]�[���v4���Ү1�߶��m��]w�l�)�P��ʘ�{��
��`m+�iU�a4��n`�5�������GR�<����p���/��ί̨p!�u�!}2G�$O�d=���`~}K�k�ط�3�n�=���̚���.�w,ta��)t-_�k��������-|���\.�ь��F����򹿏��:��}�׻s�����t��[C_�����c�=�o�>��C��F����OГ��շ}��N�KF��K_Л�|�F_������L����O�|B˿N�J�h=�t�+dԳ�����Į�>�������z�`Y~/S�6QQ�>(h
}��+Ҝ���
oj�i�Ml��8]��o�>V��Go�~L�Ro!�x��}��ǪG������4�ƧÉ���}��{�q�Z_�:�J�i�uTh���tď���Ut�я4�?I���է2~-?^z��_$��-]��Tw����_ �}�׋D�/i{G@�:~S�jyZ����#?'|�Ê�o��&��j�EэQ�иm����_S_��g	k�p�����t�G����?
�#~��+�?�~%���g�|�l޺Qn7�t���*������7�Th�+��t?'|�C�i&��	�G�=l�����94|.d3��3(�s�/�c*x�p&h5�ސz�Edi5ͺh���H�b��oM�:>Lo��7�;}�:��l�tq���x�K��Q��(����ޢ�u،>���(�:V-�ey��W�<��D�p~Ms���Td��d3<9�$>?�et��H��+�t��.��裑��5\����@W���zBm$��]��F�A;}"�O~/���|R/�2���?U��<�?k�Wҫ�Z��(�]��z�Ф�y�޳W���M��=�I�~8{�9������|>%�O[�TE����^�^�{��g��c��f'�����������w�K�fx��mc��
}�;0�;�_�X��t��@��th܌��ÿ�@�7�7t��{	�E�Zޜ��m�N���9��tFE|�wh���\�t�Q'��w�C��=����d��ѧ�,��}��-VF�����k��{-*����{��D�<�{I5�| �x~!��'�;}j��Ȩ�O+Ɛd{�b{�:�,ء�\��sݹ� �#J{�ͱ����2���⩝�V�{O�W��Xy6T���4�>\EWQj�T��V���a�,�[YB���=�Uw�:z�gI���
(~��+�pΕ��g�=;��p2ݷ�p�烂�RO:Mo�5�v'�m�h�z{�Z�N�V/�}�7�VC�������r���Q+{vWŨ5�~^7���#�I��_<���.�R�$��	\s	x�c`d``������K�#gP�w�xڍ��QE��7��m۶m۶m۶m'�+�m��I��~stƸ��Y��� ��@r[�my���2��J;�������P�&��-���c�e���$�n�>?��e0�E��|M�FZ�brM{.�&<S�h���\�7�`y�S\H��?��#0��	]��lh@����c �y��젹��N�!6�����3��9��<W��M�Qd��X�k��{";5A6�K�dJ�v.��5������Y�߉I�c(�{ʼ�Js��D���F�1�!����&��@L�U�9#�Bg(�9g�ַ+�����od����幝������9,���&���������4;���4�h)�h��R����D�Ӝc���]DK���Su��w�/�	�
/�i$79'đ����h�����9�l��6,��-�G�yD�w���.D�:�~�]V=Tgb�?o���:|꯺W����n{��F�:�~���h�x/��g�O�|,�K�@����Y)�ix�-��A��o1;��Bl۶m۶m۶m���y��(1�+(����!冪�Y�H���J��Q7�O5_��5цh����E�Rϥ���[�W�n�0�m���J���4�f+s���<f�1�X�E�X����j�;�3�!���֡N��3���|sc�z�w���=�>t�zċ�y��	�jo�������A��g�*��i�=�6��{Û�obN��h���"��Ir�<$/��ZhvC��ҴmD�Ҟt(�D����`�eeQ,+����
��	l[�������W����<��x9^�7�x?>�O�:���]����?@Y �@	�
�
t��0f�2���\�G�>�_a!r�8QP�5Dc�^���d1_��PG�Y1
�`	��
�
��!8g�r܌��4^��?��J��d�,$��Z���$��Qr�\(7ʽ�*ʗI� �D��N0x�b``�`Hc`f`d����fd�� l&>�
(�I���ʠ��e���@�@�!�U�CvDл���ؘĶ�Q���}j�zf9��5�WSQ5TX�d9(��M%�sm�5�����@2%�h�8��B*��a�p-U5#-�UI���E)v���-,X�j������]��k�b0X��H������nS-���p�.�r�б������(5�x�c`f��Y)X*�fonts/roboto-KFOlCnqEu92Fr1MmSU5fBBc-AMP6lQ.woff000064400000033544150755146450014724 0ustar00wOFF7dRLGDEFDGd��GPOS������hGSUBP�7b�OS/2`R`t
#�cmap��L���gasp
dglyf
p']7?p/�head1�66�Y�ihhea2$
�vhmtx2(k��\]loca4���d5U�maxp6\  \name6|�|9�post7P �mdx�
�1P���PB
�U=l@B)�w�暮���Y�e�u�m�C�s���x�h�~R�R��2xڌ��[��#N�϶m۶m۶m۶mfm���SP��NuM��9]��=�U��!Ʋ[�����w��|މ����^p��H�����;��)�������;�EoDo��E�E�D���`�0GG�aA�H�V�Mx\xA���/�d3�Eb_�J��R�^v�׸����\^ob}�z�k�x)v$f$�O)+�2��*����y}6`C6b6cs��lͮ���;���!������<��|§|��|��|��|÷|���o���I%�4�LSI�&C�6��!`�{��c��\�J(�2�C���V�A��?�M<nG������v��m;�R�C��aj�H�ӵ=�{�>�:���}i_Y�׬���:���o�&k�KY�2��6k���i]��{,�p}��/��
�VO3�o]�fJ����R-TZ��;���RN��&V���C��3�?�
����&�ŭz�s&�D��أ�r,�I�Е�t�R��a$k��Mm��Y�U��+b�%kQ��mg��v��ks��{���=l
�5Z�5[���
��b���v��i
�hM�l-��>��8�bF��k)K[Ʋ�f#(�
�؃��=f~/�mj��ʭ�Ʊ˰��c���=�z��i�X��,Hz"���>��$���,��?�u%d7����׺������Y�ʒs��}���;��:So�������}�/�
�����;nw��p�>�0�Q,�"̝s�R:W)f��+wϨ&�ԩ���c�$M���:��>]�������^e����O��x����wI�v��h���*_;~�3��Ӑѿ*�1{5�Sh�AD��e5EʨG�Ì�&i��ջm�s�X�z�bJ��M��J�Zӵ?܇�TZ��}V��n}Q�;���/�>�ZɵET�:n󌺔M��2y�o[2�GS*�d�(�0Qw��3�kV=%̟"C7�p��4�B抿d�$�_�h�<��6��u�VS�r��ߣbf��й�/I�u�{��h"�ȣ`�?3w�nգM¡�э��F�:H�=w�NΦRi}�v�FK[yD�WY8wP��ų]۶ۨ��N�Qm�v�ڶ9���W��볢���ߐ:I���%�*�N�(&�as�2�tg��b��fk��z�f�V�3�]2�Ü`�dgy�X>�u�e�2����I���*=,!C�;C��0	.	�H���c�4�(���4)0]�̐̔n̒2�%�)1O�̗���Ҟ-��F"�J��R��J�m�a�=s�{^����^���zrV�q��+R�*7Hp�{��YK�'�$�+i�Z��|��/*�`��`�+.X�"Mw��c�CFJ�v-���2U���u���5\��j%W˹Z���K��H�R�K�.�N6H�M�p�t�jiW+�CB�H�^	8�!��XqǺ;Vܱ�u�H����`�̹`J���]�v1?�C�����x�M�R�a��_�5�
�9ȶm��
��m
;M��/�����yeu��.ό�38�?��X�����E��-�A�����,��"���LfEv�̚�r�u5��*�	h2����O�¦obr�����^�Ɔ�IQ3M͢����@%����@�����[Rq!�6���
��N:Km]���P�!��?��?͉�Tq�.S�*A�Uڰ�0O��!�Czd��.�+��)5�|�p�3N��+��ᖻ
�g�Y�x�'�y�U
/����>*x�c`f�g�a`e``��j��(��/2�11001400�)g���ߝ���AI���C�,&� 9+�

@��z
Bxڅ�Ȟm���E�mN��4+���f+Ͷm{�r
a�m۶�go������t"�/#���Ȧj�� �_���<-��v\�@�*���ޞ>�>�����H(���sXX�$?	�̷�b�p�
se�X�?¿!�Dz��R*y�\�w���&��9�s�%���|���ҋ}/����b���/6�X�b�OΏ��AE4򭭲�k���+��n{��@��w�A�6�Gu�q'�4�0�]q�5��0�7�r�w�tϏ��
(	�~�d�Y�E�c>�9EV`16�6bVa{dv�6�`d%�8v�Nb N���<.`0.���zd(n�A�<��#<�e��K�+��M���D�G�\d�Z9�1���Xҧ#�H���'���'&����s
b*�Hd�Dd&�ZNu�"Ԉ�!t��%,�̣�Z7����xڬz@T���Y���Q��Pc2v
a�P�i��FE$�$����Z׸v���}���{��2u�ޫ�Z���Z��p>�7�l�xN�U�jru8��Zn���[�=X����q��5��R z�dky�D��M"+�D�O�'��G��ߡ�H�ǁ�W�v--̥Mm��TiTR�m�n
K��K��k�ԺM6/M�
�'���4S+��'��7�n�DI=	'R�?�nC>
�&���*�ͬ���Km��^��*�@�\&�T��p�7�p��
]]}\�}^I߹�܃���	XI�`�8��YT|yQ�qx��A\he{^/]ȵ�v�*[[{;G{�������V�Tjan)X2UeJ{��6�Twt���>)=��o��܅���a�:��%���iJsSK��žN�V垭}��˓k�,���G�,	�;]��Z�X�m9�TH�k�|�	\���-g�uB+��E~ʦ��
����A0�/w$*P�d�^�͛�?z�o���$*�k.�y����?jD��LN:��mܘ���0I6N3�kน��y����-A2^3�{�WxĤ���q̓+�%ǹ�\��$I��_&��L�TI���xfA%c����!s�k��M�Y�h�Ԙ���]/�^�<{͆1���m����kX��w_?p�ۊ��Q���hی��7�L�~}{Ё��.Np��2ki�:���|��S
	�怋zsO��$���ګ��=%~�Pz�/�)�%	�zq��Ʀ���ڄX���*d���L�ը�<���}͹B߁U0r�[�����i4�=�e0�e�k��AZr�aN�L�`jjoG����Ԕ��syxyy5��1�t�Gi���`��.�\h��ŅSF���B���?�9J0��)$f2�WA �a���j�ך�<y��H�e��f��9���NO�@/wgT��t��P�����Z��c���$��~3��>�<�FÓip�w������5T�Ǜ�:����{�Y��f_b4;��Ą��x��Ԉ	���d�/�������q��-�S.n3�mۡm(;t����ƕ�䕈�B	���<[چ#���
�
}��:&Dٔ�rSuGS3�������#��ɽ[��wo=4��s�HQv�z �9z:C+���ы���������;ǑR�NN���K웩I����{s�Uƴ�8"��Q�a�=�����RX�t��S�WNj��ȩ�cO=��E��~,qH�랔���L蕝~wR{�鍺}F�S��{$��x1�	���(��nk3SJ43�h˞ƅ%�|>7�v����U���j�z�OY�>~�>�[�������i����-떥�D��Am���5DoB���c-�����'9��)��=\���`Z_^�k�ˬU�qn���O���(��AP���('.�'rK��_s��Ӌ��C�i��m_92�?yEʦR����ڡ%+�ve�i�e��ԫI�q���Y(�8ޡ�r���M�f<�0Z�w�M+�5�n{C�T6�2-p�;���)�7K������1�ۍԧs��{
��fA�2>���E�D/vA��@����̑����$Hw�? �\�D2ȏC
B��K��|V\k[�LFXA�ʒ������[�q{`����^��O��7ļv�^9�wݪ���$%�o:O/i��p�w�Gmղd���tK�l�����fd�Ƭ^���¿AI�
��Ø�ƒ[��';�m�f��F��^�F�zr���t+-��� Z�9�|Ϛ��-$g�̓��Ģ͞� �ձ��|yV\𰲒��1�Zpĝ������=�
�3����*��_��4��}�']�e���٭;�w%i�Z4h'¬h��/��&_�6���aSw���^|� }Eҋ�^��g�>�μ���d@;-]0��E!���yg�O]�>=�*�T�/�_�A1ہ�t+��$.R�A"ɝ�M'��ǷRٶic�j����M�1;-1<���M��'�ۍI�Ӯ��΁��j
��c�,��9��)g�T �T`?l�l�������`
,v͘�DzG�y��Y�S�L�D
q	sQ�p�]Q݌���t��k��ݱۻ5�|.��./�Y�>�|��
����ǽM�1SsȨ��{���ʴV���b>\�%��*�������CmՏ��%l~}��Q�	�$B�m�4[���16d\
C�j"���O^:��‰*FWN�{��`z8�_�E�n�!�Z
�N-����`���ֻ���G��9�~<��0}�m�i]Y�e=/�zd����G��M��7e�ů���R�8�b1.�j7d� ������WP(�uS"�M�]8T���2�G$T濂:�Qm骲�ώ9����s�šG�u��!��[�b��^۳�#�.P�?8�&�)fYD���v�j7,+������{�[0��G��������<�S�5t!��
*��-���ݢ���ӏ���"�8�WRD��Ѫ���U3X�]]���G��辐R�wgcϰ�mrmҔ�1�ؠM�Ilm��MD�spd�&\�E�m�_�:y���
.��g���u3�Й�l����v0������)�2��uk�5z'j�R&���»(�a������l�� �8�*N��yq��h��8'�w�:l���4|רw��=��/K�B$[up�냓k��^k�ʞ2�7���;�ՒW��k�����7�����5�[U�x�%A;1{���\��
@�WQ��
�Wu�F�f�3��1�i����2A���^^!����"I�:�R?G?�8|f���&�M>ku�������M%[+����f�1\��vX`֔y�����Y�	Ń�›dJ�*i�B 0 ��s��.�"���<��'A�>��:f2hI���˩�^�V�G�W�����1��=Xl63����Zx����i*���߷��7��֗g�?ذ|Y	A:3/^���R�Z&����rv|�P�.�ˌ�>��62��SU(�d���Kg>��p�
I�DϺ��ȃ6'r�y��)�]����߉z�BFEd�C@�X�[�#
n�
Ҽ$�������Fד���'gSn��/�ENnMY����;�E0j��}6*�`Q��r�c����~��	f7?��:���l;$��o���q��6\���8m*�<�v��%��)�C�B6]�R�r;;�ء6�q��`xf�ZZZ[�8��8��.G��ʱ-�F%�h��r������d�����8�Nx���N���R�ӯ	�{,?o�pa]M�V�g�O"�O�h�DЕ5�Aw��v6qt���̓m��T���d�49��6���4%��:T\��TP�B-�X(ƅ#��R�b��j
+3hc��I��t�He�H����1���'O��]g�g��N8uH���?���|}]����Sp�'��a�AG�r{�bX��c+^�^������q«@w�KO�[i�h}U����Z
������v3k����%�2C+�'^ᒭ?��{Rp6P��<A��ΫW�1��I߈y�MtUgՖ��i��aS�IrS߂���U��c|$,#��K����%��t�Pm�Ґ'����p>��'�!�i���5�m��tP%�>
���BL�R1Et2��<���^�NK���y�e�eޚV�hu��L��g�Gq���ڰ�O�{`g���9*l�?d��1�{�%�r�Om��*�b15U�09��t�I�dZ�G�j�f��|�Y@L��fa��ӯ�F��
����Ch�s�P���9�����fnO�
y�%�טn�i=�H*�q ���i�S���Z�`NNI���i�r�B�r����m����U�ŗa���(u}���@��d�@K,�8����G�FN��>�lf������]VHT:h��L(�!X'���设E��H�:J�`�&aI�AZ��QPC&hk,��I�fފ>�B������y>}�ǜ$J
�>-k��<�~���b���.�񺲂Z���]z��I-���^-�^2�9ئ����hY߮�;v�4��-���r�����u�9f��_CI��d��c��r��2k�Qe����i�NM?ߵϜ-K��{��2��m�v*3�[WWܻ��wĀ���$dA�J��we�- �-J������*ʕ��f]w�o�H�7uc��H>vb���.�����})'�pvDj��i�%xc��j4
�G�tƔ�o۶�\N��^r�[�\QMQK{���J�9@�E)jҺ�n�֭U��Z	]*�-]k6��ya$1R}�qUZ��R͟�����$j4�a�2j�҈�|:I��Ẑe��>��dMS)ǵ��Rv})��|\
+��h+���`�T������m��u9ce�&��^CsL�Qi�.[��������������#W�������y�1^�u��нt�/� t����" ��+�R���D'�,����HC�zμ�rjμ��&��9��szl��3����dz��ޚ�hW^���Q�W�e�B�"�oh�fi��"y��AD�Ti����5�OY۲UVȲ"YV�oI��L��
�� _��q����_�7������ݝ!����y��̢�7�ڬ\�At���r[b�����w����w�����-��F�d�m�i��#�Ʉ+��d�#���.��:�ر�53�ƒ���GUz,*�ۤ�G�\n켫Y73"-��|���Y��+��#�������E�G�y1"1oWJ`�䧨|CJ\����D�"�*r��џ����s�N;yR�J_{��y���%�+�`�T���g�#L��T�������#��n�A"�A�	K\s�9�w�go�u*�8`��oùR�k�G�-���4H��_RQ�7
x'9�_Mq\U.b�K.�δ.~
��	?��V-�Ώ�iq��n��3�e�g�n�1�#���?2x6�t1�YH��s!�.^Hba����6��DE�p�u�Vi��dKT
L&�'�6�v�뱷U��bkOb7��;��=I::K�L��(���[~��m&���y3__w^��#��`�Rڝ�?���}G���G�H'�⿩��.�����{��w|��>�@�l���z�ׁ.��{n�J?��� ��/�(=�w�#�	^ff�v���$21Q[4����'�ȑ�7�x����w�G��}+�C����g{Ҋ��'ٙ
�缙(;sܶ�9�̐�����f��w���`P��>^��D��cv��i��@�a=��!�R�
� 1����Li��!�TYT����ߦ�Ԉ��EV��?��r�U��гaI����-��-�Z�|�fϵ�{5�NI�iD���&O�)���6@��w���jc6�8��K�3.`f)c�vptP�E�oA�5TȬNz��u
���I������SzU�t�����N���bπ�Z�
�hz���m��V����3��bVKo�d*GD
G���Jᨐ��B�o(4cuR*Lrj����F���+Y�6��0j�Y��*��}3�QL�J�Ql���kGe�k���RR7�o���fQ�h�Mz���.)�]B�;�*��Ybu�06��&u $�N��t%�ѕZ���ՙ�H&w�u���;�}��y�w��:�_�����4
���:=�|�Q~T.L@[;p�~���y��X'f�i���������&~S��Q	�!c&�n��@sq[�~Ytm�GxШ�@�?��9��~o���p�G8e�;m��Ͱ�'ٺ}ʔ�Ý:�8GVoI��2~�����B�v)��Ǟ�Oߕ�:~p��ZaýwjX+t�wD'�$QbC�JN ���?���~~�ri(5|J��
d۶VU�h���-�*�=�s��=�Ĕӊ�\���$��Y҆u�l�X��J�������<zm�nh�?�VPLtpP��h.�@ӂ|z�`#��5r8Cڷ��,;Aw��	�s���,����Q��1r�"fm��vlu�v谭�^*>�'O�3'h���Z�!%�;�݉���n���Q��*��JS�1��tt|�����n����D�ק��C��}N��R��L��}�x�R�ش����n�Z�GsX��r�|/~
�5��E�Z}+Y&�B����|�F?�o
�a'p~hُ���v亲�i2+���מ�l���-J[����*���v�J�N��YJ6X������χ��@2�.ЩZu��Ξ�w��*&��<I/�O��s۶�����~�6z�-���z�Y�Wab��1ḧ~#T=�'�,�٭��_B&KzN��5��U��
�l�R�����C"R}|����P���F���S8��v!#ÿ��{�~������_
�p/��{�Q�8��̩��No���ݏ�R?(��%v
�d�dg)��tƘ9�k�Jz����V��J�
g�2e`O����Q~��/3ZN$�$#-[VI���f�ӧ*�P*�QnF�
�
\�>���yss�G�wa�0���cР.^Q�N�������mp�T�?x�>WuW�J�E���/�9bn��Pe3����K��B���+iBd��w��Z?Ǟ�0�T��,����;Hc8������Qh�y^N���>��O�jaד�W�es�\x+V13��r[��kkr^پ}�v�X��@DZ�Tm0��ࠎ_k�_� �>ڣQ/��c����إu�98'���K�-�T��K�R�K�[�mY�����v��+�E����
����3�mM��<=`RhةP!xšCkǯ8x`�dƂ��	�q	�,jC����MY�i5�q��$RR̩���/d9~�K�Z��#��Z��{�w���8Rƭ�A�#^I��s��E�Ǹr��
�ǝ��G.�V�������Hf{b�aϬMT��~�ۂ��T�!W6n?�6RF�R�-ڈ��c禤��8�y�x��~�jDq�ɑy�n�z�<v]X$��/��eMt�M��鼗~����w�'�7�ZJ��X���?���b�;'�#>|���#�)XƁ-r�Q0ڕ��+]IW�@�Js�7��
�4��.�Y(�<;9-��i,�8ڊ�i�$�4��(@l.4�S��U�q����>ʜ�d�j�"��Cg?�3��O^a�YO̺�Fd�roJ����ZZ���J�ҫ�:�he����8aڨ�x^a`+�4�3�Z2�UA;�vm�竴X���k�Z&�J/���y,��}�>u#��(����u���Z<�WADmba�_UUJ�%��"��PGshÊC
��
?�q-oDi��V����klt�o���vQR����w
HMtM���ʷ�]�w���]��I/0�Y�F:s�V��x�Av?]����ᄎ�U��m�rk<V��-?�p�C��nݞ&�jω���w��mͻ;���8�iOr�����kS�%n�����;̈6�<d�wpѢ5%����y����3���F���=�gl/h=+�|�4~���&+KX�-�Dڒk�l�fh��~�)�Ԗe��z���*[c��Lɷ�G:�L�kQ�N�l�ڲ�B��ǂ�j<\O�.�\�p�DQN���\��+��v�SQ�<0&������u�;���ǿėU_ynwEh+d���>F��mu���#D4���a0��z)��PD*�aB��m��
��EL�V����(@Ԯ"(�
z`�c�ϐ�>�f�K	�:~�ϔH�~�<&��ٻ'��wT�i���>�܀W֫u	-��:��|��|�Vg��/�{���91'�dR�?� �ND���&�VW�"H˵�-�Ȳ�y��X��9�|�Y	]~֣�4��꣯e���
���b�U.�X?;�C����rd�u;�Z�9�,��:n�Ě���Y1;.,"��#xb�	�6@�M`�����⺵�������_�dzz��	F�5זs���1,~F���Yg��Z�a�̻I��zt�}�^([y%�.�sƒ.��b�雦,'��Iz�LX;o��)$m������j��S䰤EQ�X=��ׯǾ�eg�5N߃��^����b�B��`�&g���3X�\c׮Z�h�pa7|�v�>�������|–-|�P�S���ءo�v�HB�N�2�58صc�?�����	��H�r��'04&bD�1}��ŝ��վo��-�)9�>�G'~��i˦�;�o)ys�?�u�|��M�%�x͉˪��ϯ��-L���G(�Y��|���T�3m��Cp����I�8'O>Bp���+�b-*�q:�<��1�8f���j��nj�J�KL�I�D���r��e�v���L��rx=S�ɕ��/�4����R�@�q6|2�|�x'w^��N��;�\�Y������D��r������N���#~�G����>]��yy�1	�+���j��M��La��!���.�+/�sX��/�<��U iE�@kZ6n"���,p$����
��Ƙ�8�I̦�L�UҀE��
	���A3�Ӗ(MW̵J%�,�A3�`�!b���x��%.8�K�e�;��9߁��]�W#l���A���jL)�	�t����Ǧ��-Hx�yBmh�$D���gr\O������,��d�<)�C��zZ�#̹���#!�`�E.Ow�ؿqA����oz=��`Wb��C]��iev%~��b����64�"Q������?
���ش2�G�$�����4��6w/g=qg���l����N�J�r����>9/
=;���T-`���nJ���"oQ	�ɷ���Q
�/�!�ߙ¦�hD=y�Gƿ2M�-F
�:�|�I
U^�[1̱��>I�w�Q�v�����=�7f��1�NB^��zFdRU���]�Pw�'I��c������[=ݷ@�¢��E9[����~���!�ܐ^2��sr����agyR�[��D$�����D$q�3'�N`�T�M��}߾ޤ��BLG��ԁsV=)c��<�(�L�.��ƽ�G�/�])�y����9�cCX	c��&��J���S�2�ʌY�)/�q��s�V����YV��s��	=V�96,yiT\��:��w��7�ƤE���K�u�O�tm�~�W�	��1��-~y�d��Sa
m@F�[��d�ˁ\Q�\
��m���=2�xv�C�~��н�ȵ�qkG8u�x�6}D@������Σ<r'����[R_�ƿ�O�zc��DD�=]���;p0l�2عk7�A�*Ε?HJb&Z� ��e�G��3�X��t���nV|�z�̠y~�	�n.'��GF�&+?���0���^45��u4YH�$�]��ro�#�n��[v%���i0sDA��m�{�m۶m[A�Qm�{W�Amۈj�Am���v�����K��嗹��c�:�=,�Q֚�Q��4�g���},��f%������ܘIr��ՆY	��zA�𻇖>�VD�g�����A��{Se�B!4�5f�5�K�8�8)Y�}�R�/R�(	%蓭�ʩ�8uQ�*���<�xn��� n�^?J<�:���s���Lz)�I��Rs�&�eț�����8�K�Z������3���N�����F^��AǤ{.zj�w�H���}��`�>U�c�0�%�"�Ы�R�B|���yq<͋�� �:�����rD��u�߆�^��S4�"�@\s��)���ހ�٬j�SF����OB|���w ��K�,�4��m�ު)U�D�6Oނ����֋�%8h<mx�xB|��w`���m߽����}	��)�_�߈�C܂q�P����Y�����sF.���o�@�ʫ�R��m=����@��S7��,��x�Aj�K�6���0�߇������͸��4�$n��],�3��i�y������X#!	�<_<���.�R� ��	s	x�c`d``����i�K�+�P�m-x�b�aHa��OPh��� �t�3/�m�vֶ�m۶m[���1vr�iQk�A���V�A��H�5`���0#�r,S[�PǢ�̃��}�:?�Z�E=��Dg(��h0�9�JIk��Lc%�Hu�
�zi�iz|ln-i�.��0��K��f�V��qI5�K���Y���q�ͺ����'�=٬��rr]�A�#�P��}���Ԑ�2~a�n�|C��U���/����J}���FR�_F�;ی�Xo�Lۤe~�U���6����~0L��YĪ5�κM�=�Y%�_F�
��W�0ĸ�3|�4�`5��I0&����y�
Pø���qz4[�H�K�]��T	�4+��IX�-�U_���p!{5�d�po�?��N�X>Co�B����c�2���a�>��#*J�f��
\�S�h����,��
��i��!�d�� L��.5�T$�ݰ�j���0DQ?#-U�U"�(O~o��!�H�H�����<+oY����wk'���A�dO�iEP?r'g�3��4�"���sF�3ri�aF������l��l���aZ*}��U�T~��bn���#f(?�^�G��N�_ҵ���䗑4H�k�x�b``ЄCW�X�iW5��72��a �[m��f۶m۶m۶m۶m����y\".W���
�p���|,�$?����b	ɄLB1���NX*1��T�&o�凜R���B,M��H�d^N*7�'�g�
��R@��tSF+�5�>�r_y��Vk���M�SM�
iM�~�R�vN���zu}��E�`hFj��Q�j,1��M��͜f����|d%�*X���+����nO�:���)�tt�;[���;�wc�i�jn#��;ĝ�u�zԫ�
���I��d�V`4�,
����D%IJ����*iH��id�EΓ��Y?LV{�[�Q%��EC�E�y�ӈ֢c�T:�.��Nz����2�@ >���P�Cmh��?�����n8��>���(���19f�X�ccl��q8N����a<���~b1��(K�ұ\����V����~��Yrx�M��
�@E�+�X[Neg�
A+A,T,���	��~���y�!��μ�q�D�\��@���"
��K�x9�Z|W�:n���K̛�W��t�I�9V
�1,�8�&��a�u��O*'<�����lXfժ=9��C=��Z"����q׈�ڹY�3�#���8�'e}�,	��!7�|"t��aɂ)3Vl��n�*F5x�c`f��Y)X*�fonts/roboto-KFOlCnqEu92Fr1MmSU5fChc-AMP6lbBP.woff000064400000024140150755146450015226 0ustar00wOFF(`A�GDEFD5@YGPOS|&�&KGSUB��N�K�OS/2$O`t��Qcmapt��ǚt�gasppglyf|�,���Yhead#66�Y�ihhea#P$
��hmtx#p
�-�Z�loca%���*�wmaxp'X  )\name'x�|9�post(L �mdx���@�y���YJ �{t�eϺ��e��t��#^��u1L��&,}�]xڜ��%V��fmF7f�FԸqݮm#�msm۶mk<g����&���S�S���^C�zvVܮg�N�;�׻�b�!Q@�S��]��JKmE(��3
Z��:���
�h��:9��**:�6����Pk-ݬ%��9�r��lr 5��b�lHY��4��u�T��#Iɕ<e�h�R�Ru��T<�.9�r"�s:�s��]da�f��|w��̜�_Zh�9�r��_�˷�39_f�k�ϲ,�h������9�żDr�C��{��d��[B�iEe���H��+yJ�=AS�*x���6�j��:ꤳ.�ꦻzꥷ>��o��l����c�����o��'�������#�4�hc�5�xL2�4-��r+���zm��6���.���!Gs�I��q�9%J�)W�R��^(�.l`^��u�NX��(/]���;�Z��YV�э��M����P+T�S2n��g\��z9؇׷t�J�{/n������2�"c����B�T��ndCXk&�b�G�%NB̹z����<��x�=�RE����A���<�n�m{_��4JO?J�8�?26��q��P��ց�õ�c����@���D�֩��v�sӓ:Շ�b$�'�*SX�!$
5�b�P�J_���D�|�>|��8��V7x�c`f�g�a`e``��j��(��/2�11001(00� ����3802(�ec����>�	��q>H�Ŋu�2�-
0x�Ũ�^Q��w�VP��
j����4�۠�16ñ�*j����;�}�ho�;�Ms��azX&�JWO��6�&�T�em�Y�e�^�g��e[�}0���n=�VzG����qy�Jƕ��W7����!6̦�4�c�l��Z�e�;!�*u¯n#t�
o���2.w\��j�5���~���ɚq~���@u�2������G��<�	��l�_x?�-X�������9��SYD2K��5�s���"�l���r�#�
)b9+h��V�h��RI#�;������fZ�B0����`�` C␤uX���nu��"u�C�:Mf��9�8�.rX�.�U�Uu����ke3��n���ru��j�$�j�$�j���j�d)j��:�}+�S�Գ��,�֨�R�S?8�P�o M�#>p����@�:JF��B�
�!�VW�Jॺ_��O�x�~���[���E�sV�QK>���j��Qj�41�l�����x�dX\S�׾�&.�!u"�B�E�{ok+ U �7��(2�u(bQq�J��j�\��$��;�
Pm����3�s�s.'r�9�o"fr<��r5�Z�ժ��
@����H�$ۗ��ǡ�c�S
D����TQ)�"�V1K�Ȱ�d��!�	qE%W��p��-�W�qk����k+%=�XO�q��:8�[PV"����x�tnDo�q�5xѺ������kNס�ϓ?/��e;���KL�1������y�>��>y<S��0�ޢ�6�۱c(�Q��$�V�Ss�A���jg"��9�ч��u���-��q����}�@�L���[|�槊ݭZh
�\+�T^���&h9u��ߑ��l3�E��$������_�3��U����J�~��I#��6�
�MB��M�8Ν٤1ڤ6�e&����6qq1x�|M*�Q+t����Wxy�u-���r_N)��:�WcEȞ�a��y�(���O.o�A�ѿ3v��yk=�^��+�FZ�%4�Axc;c��bP�nb�4������OFm�~�׽��?�W�(0���O��م9�o���o�-;�-�G�L�}�wq�֣[*vVnO��7t��f��������\�>��W�J2�n���q��vb�4�ɳ�	G����0�eM��J����	�0��!�R-դGå��P�R�("(�ɲR�P&͑��<��e������{��DL�-Z�gu3�Z�>�lz�D�F���`n]��]G��6�W��J�S�^FsV�q��e��7���("��鯩0|�^Îdz�|mPB3�;}��J�4���a�섬��Qނ�Y�5�����C�%�h`�.E�2����6�/{?�A�I�b棫q7�Jk��̸
���P��o|<�=�>�
�..j.�@�	x��0Y�X��n���n&=�����s�^	�/n�e�,OO�aQ+����vc�%˚�k̓��M�6!�׉9s7X����6��!�"�z5u�КB�ؽ��=G%�t)8J��T5	
�W!�\\}�*!��{J���|��8i����{|�M�jn�'ӯ"1�9�����J`)낗	�'A�V��M�ϤY��ޙ4n6�>�%���XЗ�%&ZW��%ߋWUpE\���@F��x�Ez�����ڦKwHc>G��v<��F@Eկ���|��8/<�'�("GB�F~*DZq?Ֆ�O	
�7c�琥�߀�7@քG��!�h���B?��M�zF��C���@��/�S�r֨�1(�:s*��Ql~¦��,��;+�z����V1�l~��%�у�.�r�2}�� �w�p2�6�����/ɜIC�̶�p�\��ϖ60���W�Q�!�Y��i�ԓ��<�F܁gU�UI��|���G�C����>.�mϜME����x\�@�ad��8'!
�]�W���0�Tl���5-r�8�'Q;��駿��"z4�C��r����2��y���u�p��Qb
�����Q.-��ڞ�4
pS(�F�~���[�/<��
����p�Zr̙Ċ����[�|Si}W�Ys�C��ߞ�m9i����t ��R���T��&y#S�X�H�&w�)&]�r�m�9������c�Sp�-��R�fn�޹�>tp�M�7/��ebޫ�>�zc$W��k�P��k�����w7DBԢI�4������-���I��gJ�p*ʾg�a>��L��z�8+�<��l^���˫���ߺ�l٥E�������3jp.8WVS�ҨrbQi_h��k �-��==�͛~֮k�8�r�&�el�.-�r-�(5*�I.�9�l�[�Q#�K څt���5��u���fb:C�q�
�U��k1,Do����q�����Q(�_Z	�
��&����V���|ށjf��xJ��,�e��:�.�Z��Iq$e��C��Λ#��*|�{9�����)�˚���c�#�t�"�Tp�Uj1��$��8b���A㋸��WP�ݸ[P#�Ί?�;����;�m�B�6�.�7J�l�.���U�}�����>�z�.%Y��c��J|hp
I�h>y�6r��݀�M9+R�#�e�q`���ل�������
;p�+E��`kߛi��2o���	m7��{�d�Y��x�p
߮�ԁs�&�1x``��3Ǧ���1�Ӕ���b���u*9^4�*�)Ït�Ӱ��r�e�ŋbZ<RjPm�*a9�	j\e=J}�Z���*Hm���%~�{��R����n�|����ӫ�98�=f��8��W�/��V�o@���C/��"�*��X>�4���]��g�����d|���|f�,8_�bE�����~��7�Ǜ���&xi��>�Z�ͅ��CƮZ3/A���5��(��mI��N���eL �(VlL�p���#td�ʫX{8C��,NǠvӶh�Z~��hOދ��ڃ���2Nl?�I�E(��.x�Mz���s�n$�	�0fPʨ��Eo�Xcǖ��)CtP�
߯��ϳ���*�l$sIG֟�@
������-O%e<]�O�C�^�W:R��*�Ct��"���Iɐ�c�瑟�JŇ�c�iC�+u&������9��5 �lw=���֎/

��B¶��qc�,[�hb�<}�
5@J�sw��Q��������-�3_��18EA�M7X�p(�e%�h���IƖ[e��5i�.��!�%�ª��Jg�.�Y~������w�A�9���,̚��������T�LƱ�-������*�b3��~��CNIJ�yˆ���7����xh���S�������ptp�p1�_���ц�({`�t��p����8���$[Х<9ɦ�Y�dU��� ��@LSSG�6zXx���=1�{WX�{�+�N��.?n�,�V�r{��n�-m��j���'�j��mn�Z}LV{[���\;C�!�4�g]70ڹ"�hP�� ��k�	�1г�>r�mtc
�;W�ɨ�ۿ�v��6p�q>��N2�f�H��$$wM���II�bc�{�غ�lg��!V�)��@?z�IS��؅��_e�r5����q>���׷׿�ب��pb%u%���5�-�QWx ��~ǡ,G�%d��]-�ݦ�h�٭�@��붬�[c��#�FHI�d�w�7I�y�%�[��}�I���|V׃͇���nC���H>�H�?L{����W��Qy�$&'���|���c�N�\��!���sg�(<�6��W�L{�\�>��2ؿ\O�SY4�T�����=�}��^Bf����	Z�h��R����Բ�$��&O����p�4tZ�BͬaP�0�*e@��RVu�Q��4r�pr�A���S���c�JDWd1j�fEWN����ܔz_-ޱ�zoG��#���SBS��u�>}��1���Iɡ�m�m�0�";C5hn^L�ҳ1��h���~���Mv�t���_)�x2����Wm �'�1�t�9t(p��=jyu���e�C�G�]��#d
B2e��uY���R4@��+�^c��S��X0BJ�w��X�K����%�7vҜ��藿�F��{��^�)9�6f��`]�i��5�nW��\G�@��m�^���lQ���S�e��EA}�D���c��M?D^N�~�J�v;�IT�-X��q�~/L�곝ל�"��w�b����iu�V���c�&���u,��dc�	���$��ma��*[P���E�}M�F����21�Qmacj�h���X��4*�C��L��+@�m�ߚ��	�yB�A��W�$ۄ"rU�(w�jf[��@�Nڕ6�e�}�#G�pT�p��_ˣL5��ؙ1��ǒqb�s5��q�2����LS��% ����6*s��?-~�����3;�5�x�e
';�g���)��V�7C8
���j����<Lvw�ޞ1e@��wN��ɻu�n-[w�
�8q@���{w�h0v��v���`����u��+&����V�~�b�D���8��9�^���N]�_eqmH�|�)��$}۲}Є[u�o״EG�ZȌ�ߵ��n��:�a(6��U�2���TX���HT"-��}6A,C���7p�f����Qg̍��t�UvSl��> `�О�v�i�A���߿Q�&�\�5�@� ��
�@�k��W6�I^F�������<��g)��������{�w��W�X6�yG��;RH�{����B��t�eN�ո(�4 ��z�?�����{��|���D
m�F�bR9uB�:��{,���vެ�
C7)`ܝ�7(<�aX�AӃn^zQ���o��h�8��W�k��(�\O�rM��jă�Tv��k����#�*�_�E�,7�g�����v-�w�/Ԧ�h����n��ʰ�0�^a^���#�Ж���}��%>?��⭘��4A)��^`g(Wy̘�
�W'���H�^��&/�s�a~`�(�С��[_4!��	?��=jZLg�ٚ��++���(Kpo�u[M���#�f2�yb+��18k�<�H�F��r_�'|�Vd>�M:�Ɲ��A�W�{�����6h���������ڻ~��00��i����I�ŋ��܏^/כ_OGR��W�)]6Y����PB���J�I}v��
cO��v�.�Q��sFF��ݾ��݈Z̖�[=����3�#L�e�%�����G�S�͑�>��N�#!
{��+4��I�'��PZ���엂�."|e;
�q�v��]���Qv�Z�1��Ђ�1��E�]A��"����gR�(��E��j��SE�O���9���"�}|�ЌЏ���6k�}�[xf4)�$i��r���ò4�)�[�C�0G����ޤE�u&-����xV��櫫P/�BJ�!G鸖4V��?P�>*3b�)ˁ�	����*1���Y��?�;4d����0�f�-��M�������XFm���ğ�-��/N�D�vT#�3���gC4=>#<9|F���B�i,c�ao�א�r��G�G�*�ojs&���Y�Ȉ���C����4���B�w�
�^��b����.�:� ��2a�.��.�i�/�~�q�ڛC-�M�s���o+�K`2M��{ϜH�����#ք�O��r�)}��L�Qe�����'k�(��L����,���Cڟ���^�w��dJ��h�7��e��8�O���/��TVf�/ʖ�..�ة㐀��x�뼽��(����~(��!߹��v�|p�uBtS4e��I�P2{����%������%ٵ0�wual�����g���w�l�]۶m۶mc&7�'��{�p�o�R�RU��	'��t�#LB�&��
��)B�)Nab�w�DV�Wo�%�[�VOsϯ\��ܻ��;C�+s��&���牘�(�eHv���~q��Tm�ת�)^)��οr���:�x���|%��t_,8�
�3����ƍ��}b��{����\�$�fu�A
��;�
��d������S����-�����\<j�<��Ν�%�m:�M O��<�`mW��ÇZN��#9?�X�Y�/���-?�:K�����k<G�W�[~:%�T����
�����d��arX�Nob��fY�)6M�2R�U&9�_�'�ꖦ��8P-��z�A����:���^;�z�;u�z�e~ي����?\��m��e��:%��e8r���>��k�OѪ��s~H����]�,�_`�fm�
��Ӥy_�WI��?y�"S��

�}=Fȯ�0d�@��&n��� ���,�g
G\n��>럝rv4@��ϋ�~���G�'�o?ˇ�|�o�>x#!U-H����z�Xg/�_���,ȶ���O�͹=�O��4s�J�*�ӌev�?���iܲ���e�ؾ,= ��F/R�r�L�.��*[��PI$�c��یQ�cl�c�&����a���e��thA���������B�jz�@�����(�-��ڝ�wQ��]l�y�r����Q�S)��Z?J�uD�
�
^���g�[��/�[
���K�g���b�����O����fAP����E�'�[��^�5MT�"��!�~�{�j�jTa����q�#��p�����8ח�,�ṳ-��F-OQ5	
6|4�~
<e��A�h�N7W��y�������r]�_�k�N�?C��kr���kl��xj�u��^h��D~"dx�*�A��O���4��q|�O�{�_�R?ޡ�q�%�R�m�q͋�k2�J"o��I|4���}[/t~cH�-��:築���e���dnL�?,�����/���ϳU2���[>ܶ?C�4��9���U����/�^��O�l|��7��{�n�FÑ��	;��Q��
?Ý8+���g�x��_"~=�pJ|-~=}�:`������\ݼ�P�I��k�W�x?��K��Y����K�'j��?C�4ݎ�D���r~H�5�������zs=z����^D�D�ݗ��u��l��2��K�F�%�U*N�
���Z�����>�?E|�G���7���i�JoVIo��-W%���~��_���J���)�ӭ��~���������|p�3�h��i����F>yJ�"i�W��]+�@���5x!��6|��Q�~,�,����������<G�W�~"%���5�g����J�w�@�j��y?N:]�ů�o����e�2���]�����t��V_�g�i$�~�f+�ۭĪ�Ļ~5��Z��m�������Wf�S�+*N|�����s�����;�`���`l`7f-���p$����N�p��3��]Bxvrw�8*�^ܭ37���*���f}�!y?�!~���9⯆��i߄��a�����7�z�i�^�7���֑�F�5���k8C��J�9���8)5��k���Y�'���7����|f�5|D��EװB��ڐ��h�����<)3��N�7��݇�gOן�p\�@A;���N����Wd���U����W$8�>H=�<�~6��P�~N�w���A�"�u������,�냧h���ů�ky���e,��tƜT���|&�2��KRD��
ݪ��M��Z[��V�Y��u-��g�"g
N/��ů��#�/�.�Vm�W�p�'y?��7w#��m*_<���.�R� ��	s	x�c`d``����i�K�+�P�m9xڌ�CQE�|L�m�ɶ�ٶm۶m۶k��az/�Fg<��=v<�<��E����K��M�u0�}o��5�6���ZQ�Ǖ�E�>�kem������)
��,���R�,)������\5��4t]i�2S�u6g~p���h�}���������]?�-�x�0SI!�f�1)c/��ޥ���ۖ1�,��ߛƨF"���85\w���H�f���RW�d&��\v��V�9�7�~:�]_�r�ffף�3�mE&�&����n���@Iۏ����td�� kc7��a�����!;�$���y~Y�C
�4��h�3�%x@ۘf9������䆂f'㌯hV���9��ҝ�I{�Os��_�⏔�'�):���	o
w_	O�9�s�[�p4��Bf�'������/�%�����VJӄ�����v�3]��v�.�LuN��̆�9L=Tg���y���{I���k�Ku]�T��ͯދ�?SU?u����ht�@a�g�<��=�
�0u���-�}x�-���0�65��۶m۶m۶m۶m۶m܌�(I"T:)s���i�U�)�"j}��:A]��E*���h!ځ΢[腖L����6iou�S��zO}�~ɰ�xF5��1��o<4��1�df�����oŵ�X��#���	�vg{�}��du�93�#�=��q��n
��;�]�w�x�W���.���&�j�N���A��o0:��Q�2,v�������p}�;|���R�n���x(����x>�O��1~O��t }�2��'��vr��'��s����41MOs���K[Үt Kgҥt#�KOҫ�!}K2�I��dYYAV��dMYG֗�dS�B���dG�Ev��d_��)����<7/�+����q|_�7�}����w���D$O���1G�[�~qZ\��{P��HRA6(�4�N�F�4X�`�Kp^�7iI.cɤ2�,(�ʚ���8����Yrx�M��
�@E�+�X[Neg�
A+A,T,���	��~���y�!��μ�q�D�\��@���"
��K�x9�Z|W�:n���K̛�W��t�I�9V
�1,�8�&��a�u��O*'<�����lXfժ=9��C=��Z"����q׈�ڹY�3�#���8�'e}�,	��!7�|"t��aɂ)3Vl��n�*F5x�c`f��Y)X*�license.txt000064400000104515150755146450006751 0ustar00                    GNU GENERAL PUBLIC LICENSE
                       Version 3, 29 June 2007

 Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                            Preamble

  The GNU General Public License is a free, copyleft license for
software and other kinds of works.

  The licenses for most software and other practical works are designed
to take away your freedom to share and change the works.  By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users.  We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors.  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.

  To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights.  Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received.  You must make sure that they, too, receive
or can get the source code.  And you must show them these terms so they
know their rights.

  Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.

  For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software.  For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.

  Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so.  This is fundamentally incompatible with the aim of
protecting users' freedom to change the software.  The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable.  Therefore, we
have designed this version of the GPL to prohibit the practice for those
products.  If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.

  Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary.  To prevent this, the GPL assures that
patents cannot be used to render the program non-free.

  The precise terms and conditions for copying, distribution and
modification follow.

                       TERMS AND CONDITIONS

  0. Definitions.

  "This License" refers to version 3 of the GNU General Public License.

  "Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.

  "The Program" refers to any copyrightable work licensed under this
License.  Each licensee is addressed as "you".  "Licensees" and
"recipients" may be individuals or organizations.

  To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy.  The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.

  A "covered work" means either the unmodified Program or a work based
on the Program.

  To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy.  Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.

  To "convey" a work means any kind of propagation that enables other
parties to make or receive copies.  Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.

  An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License.  If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.

  1. Source Code.

  The "source code" for a work means the preferred form of the work
for making modifications to it.  "Object code" means any non-source
form of a work.

  A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.

  The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form.  A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.

  The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities.  However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work.  For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.

  The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.

  The Corresponding Source for a work in source code form is that
same work.

  2. Basic Permissions.

  All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met.  This License explicitly affirms your unlimited
permission to run the unmodified Program.  The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work.  This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.

  You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force.  You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright.  Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.

  Conveying under any other circumstances is permitted solely under
the conditions stated below.  Sublicensing is not allowed; section 10
makes it unnecessary.

  3. Protecting Users' Legal Rights From Anti-Circumvention Law.

  No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.

  When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.

  4. Conveying Verbatim Copies.

  You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.

  You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.

  5. Conveying Modified Source Versions.

  You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:

    a) The work must carry prominent notices stating that you modified
    it, and giving a relevant date.

    b) The work must carry prominent notices stating that it is
    released under this License and any conditions added under section
    7.  This requirement modifies the requirement in section 4 to
    "keep intact all notices".

    c) You must license the entire work, as a whole, under this
    License to anyone who comes into possession of a copy.  This
    License will therefore apply, along with any applicable section 7
    additional terms, to the whole of the work, and all its parts,
    regardless of how they are packaged.  This License gives no
    permission to license the work in any other way, but it does not
    invalidate such permission if you have separately received it.

    d) If the work has interactive user interfaces, each must display
    Appropriate Legal Notices; however, if the Program has interactive
    interfaces that do not display Appropriate Legal Notices, your
    work need not make them do so.

  A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit.  Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.

  6. Conveying Non-Source Forms.

  You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:

    a) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by the
    Corresponding Source fixed on a durable physical medium
    customarily used for software interchange.

    b) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by a
    written offer, valid for at least three years and valid for as
    long as you offer spare parts or customer support for that product
    model, to give anyone who possesses the object code either (1) a
    copy of the Corresponding Source for all the software in the
    product that is covered by this License, on a durable physical
    medium customarily used for software interchange, for a price no
    more than your reasonable cost of physically performing this
    conveying of source, or (2) access to copy the
    Corresponding Source from a network server at no charge.

    c) Convey individual copies of the object code with a copy of the
    written offer to provide the Corresponding Source.  This
    alternative is allowed only occasionally and noncommercially, and
    only if you received the object code with such an offer, in accord
    with subsection 6b.

    d) Convey the object code by offering access from a designated
    place (gratis or for a charge), and offer equivalent access to the
    Corresponding Source in the same way through the same place at no
    further charge.  You need not require recipients to copy the
    Corresponding Source along with the object code.  If the place to
    copy the object code is a network server, the Corresponding Source
    may be on a different server (operated by you or a third party)
    that supports equivalent copying facilities, provided you maintain
    clear directions next to the object code saying where to find the
    Corresponding Source.  Regardless of what server hosts the
    Corresponding Source, you remain obligated to ensure that it is
    available for as long as needed to satisfy these requirements.

    e) Convey the object code using peer-to-peer transmission, provided
    you inform other peers where the object code and Corresponding
    Source of the work are being offered to the general public at no
    charge under subsection 6d.

  A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.

  A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling.  In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage.  For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product.  A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.

  "Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source.  The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.

  If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information.  But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).

  The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed.  Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.

  Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.

  7. Additional Terms.

  "Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law.  If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.

  When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it.  (Additional permissions may be written to require their own
removal in certain cases when you modify the work.)  You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.

  Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:

    a) Disclaiming warranty or limiting liability differently from the
    terms of sections 15 and 16 of this License; or

    b) Requiring preservation of specified reasonable legal notices or
    author attributions in that material or in the Appropriate Legal
    Notices displayed by works containing it; or

    c) Prohibiting misrepresentation of the origin of that material, or
    requiring that modified versions of such material be marked in
    reasonable ways as different from the original version; or

    d) Limiting the use for publicity purposes of names of licensors or
    authors of the material; or

    e) Declining to grant rights under trademark law for use of some
    trade names, trademarks, or service marks; or

    f) Requiring indemnification of licensors and authors of that
    material by anyone who conveys the material (or modified versions of
    it) with contractual assumptions of liability to the recipient, for
    any liability that these contractual assumptions directly impose on
    those licensors and authors.

  All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10.  If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term.  If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.

  If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.

  Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.

  8. Termination.

  You may not propagate or modify a covered work except as expressly
provided under this License.  Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).

  However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.

  Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.

  Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License.  If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.

  9. Acceptance Not Required for Having Copies.

  You are not required to accept this License in order to receive or
run a copy of the Program.  Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance.  However,
nothing other than this License grants you permission to propagate or
modify any covered work.  These actions infringe copyright if you do
not accept this License.  Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.

  10. Automatic Licensing of Downstream Recipients.

  Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License.  You are not responsible
for enforcing compliance by third parties with this License.

  An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations.  If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.

  You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License.  For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.

  11. Patents.

  A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based.  The
work thus licensed is called the contributor's "contributor version".

  A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version.  For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.

  Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.

  In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement).  To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.

  If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients.  "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.

  If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.

  A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License.  You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.

  Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.

  12. No Surrender of Others' Freedom.

  If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all.  For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.

  13. Use with the GNU Affero General Public License.

  Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work.  The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.

  14. Revised Versions of this License.

  The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

  Each version is given a distinguishing version number.  If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation.  If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.

  If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.

  Later license versions may give you additional or different
permissions.  However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.

  15. Disclaimer of Warranty.

  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

  16. Limitation of Liability.

  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.

  17. Interpretation of Sections 15 and 16.

  If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.

                     END OF TERMS AND CONDITIONS

            How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This program 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.

    This program 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 this program.  If not, see <https://www.gnu.org/licenses/>.

Also add information on how to contact you by electronic and paper mail.

  If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:

    <program>  Copyright (C) <year>  <name of author>
    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License.  Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".

  You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<https://www.gnu.org/licenses/>.

  The GNU General Public License does not permit incorporating your program
into proprietary programs.  If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library.  If this is what you want to do, use the GNU Lesser General
Public License instead of this License.  But first, please read
<https://www.gnu.org/licenses/why-not-lgpl.html>.
languages/wordfence.pot000064400001536660150755146450011247 0ustar00# Copyright (C) 2024 Wordfence
# This file is distributed under the same license as the Wordfence Security plugin.
msgid ""
msgstr ""
"Project-Id-Version: Wordfence Security 7.11.7\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wordfence-zip-gOW9zptBF\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2024-07-29T11:10:17-04:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"X-Generator: WP-CLI 2.4.0\n"
"X-Domain: wordfence\n"

#. Plugin Name of the plugin
msgid "Wordfence Security"
msgstr ""

#. Plugin URI of the plugin
#. Author URI of the plugin
msgid "https://www.wordfence.com/"
msgstr ""

#. Description of the plugin
msgid "Wordfence Security - Anti-virus, Firewall and Malware Scan"
msgstr ""

#. Author of the plugin
msgid "Wordfence"
msgstr ""

#. translators: word order may be reversed as long as HTML remains around "Block"
#: lib/dashboard/widget_content_countries.php:6
#: lib/dashboard/widget_content_ips.php:7
#: lib/dashboard/widget_ips.php:116
#: views/blocking/blocking-create.php:14
#: views/reports/activity-report-email-inline.php:147
#: views/reports/activity-report-email-inline.php:201
#: views/reports/activity-report.php:17
#: views/reports/activity-report.php:61
msgid "Country"
msgstr ""

#: lib/dashboard/widget_content_countries.php:7
#: lib/dashboard/widget_content_ips.php:8
#: lib/dashboard/widget_ips.php:117
#: views/blocking/block-list.php:73
#: views/reports/activity-report-email-inline.php:148
#: views/reports/activity-report-email-inline.php:203
#: views/reports/activity-report.php:18
#: views/reports/activity-report.php:63
msgid "Block Count"
msgstr ""

#: lib/dashboard/widget_content_ips.php:6
#: lib/dashboard/widget_content_logins.php:7
#: lib/dashboard/widget_ips.php:115
#: lib/dashboard/widget_logins.php:96
#: lib/wordfenceClass.php:6329
#: views/reports/activity-report-email-inline.php:146
#: views/reports/activity-report.php:16
#: views/waf/option-whitelist.php:110
#: views/waf/options-group-whitelisted.php:87
#: views/waf/options-group-whitelisted.php:100
msgid "IP"
msgstr ""

#: lib/dashboard/widget_content_logins.php:6
#: lib/dashboard/widget_logins.php:95
#: lib/wordfenceClass.php:6404
#: views/reports/activity-report-email-inline.php:256
#: views/reports/activity-report.php:106
msgid "Username"
msgstr ""

#: lib/dashboard/widget_content_logins.php:8
#: lib/dashboard/widget_logins.php:97
msgid "Date"
msgstr ""

#: lib/dashboard/widget_countries.php:9
msgid "Top Countries by Number of Attacks - Last 7 Days"
msgstr ""

#: lib/dashboard/widget_countries.php:16
#: lib/dashboard/widget_ips.php:21
#: lib/dashboard/widget_localattacks.php:17
msgid "No Data Available During Learning Mode"
msgstr ""

#: lib/dashboard/widget_countries.php:25
#: lib/dashboard/widget_networkattacks.php:8
#: lib/wfDiagnostic.php:989
msgid "Wordfence Network"
msgstr ""

#: lib/dashboard/widget_countries.php:31
#: lib/dashboard/widget_countries.php:38
#: lib/dashboard/widget_ips.php:35
#: lib/dashboard/widget_ips.php:45
#: lib/dashboard/widget_ips.php:55
#: lib/dashboard/widget_localattacks.php:32
msgid "No blocks have been recorded."
msgstr ""

#: lib/dashboard/widget_ips.php:14
msgid "Top IPs Blocked"
msgstr ""

#: lib/dashboard/widget_ips.php:28
#: lib/dashboard/widget_networkattacks.php:22
msgid "24 Hours"
msgstr ""

#: lib/dashboard/widget_ips.php:29
msgid "7 Days"
msgstr ""

#: lib/dashboard/widget_ips.php:30
#: lib/dashboard/widget_networkattacks.php:23
msgid "30 Days"
msgstr ""

#: lib/dashboard/widget_ips.php:39
#: lib/dashboard/widget_ips.php:49
#: lib/dashboard/widget_ips.php:59
#: lib/dashboard/widget_logins.php:30
#: lib/dashboard/widget_logins.php:40
msgid "Show more"
msgstr ""

#. translators: WordPress username.
#: lib/dashboard/widget_ips.php:96
#: lib/dashboard/widget_logins.php:77
#: lib/wordfenceClass.php:6275
msgid "An error occurred"
msgstr ""

#: lib/dashboard/widget_ips.php:96
#: lib/dashboard/widget_logins.php:77
msgid "We encountered an error trying load more data."
msgstr ""

#: lib/dashboard/widget_localattacks.php:8
msgid "Firewall Summary:"
msgstr ""

#. translators: The site's domain name.
#: lib/dashboard/widget_localattacks.php:10
msgid "Attacks Blocked for %s"
msgstr ""

#: lib/dashboard/widget_localattacks.php:37
#: views/blocking/blocking-create.php:10
msgid "<span class=\"wf-hidden-xs\">Block </span>Type"
msgstr ""

#: lib/dashboard/widget_localattacks.php:44
#: modules/login-security/views/settings/user-stats.php:59
msgid "Total"
msgstr ""

#: lib/dashboard/widget_localattacks.php:49
msgid "Today"
msgstr ""

#: lib/dashboard/widget_localattacks.php:49
msgid "Week"
msgstr ""

#: lib/dashboard/widget_localattacks.php:49
msgid "Month"
msgstr ""

#: lib/dashboard/widget_localattacks.php:64
#: lib/menu_firewall_waf.php:52
#: lib/menu_firewall_waf_options.php:159
#: lib/menu_scanner.php:73
#: lib/menu_scanner_options.php:128
#: lib/wfLicense.php:243
msgid "Premium"
msgstr ""

#: lib/dashboard/widget_localattacks.php:70
msgid "How are these categorized?"
msgstr ""

#. translators: URL to WordPress admin panel.
#. translators: Support URL.
#. translators: 1. Time duration. 2. Support URL.
#. translators: 1. URL. 2. URL.
#. translators: 1. URL to publicly accessible file. 2. Support URL.
#. translators: URL to publicly accessible file.
#. translators: 1. WordPress Post type. 2. URL. 3. URL.
#. translators: 1. WordPress post type. 2. URL. 3. URL.
#. translators: 1. WordPress version. 2. WordPress version.
#. translators: 1. WordPress admin panel URL. 2. Support URL.
#. translators: 1. Reset password URL. 2. Support URL.
#. translators: Localized date.
#. translators: Time limit (number).
#. translators: 1. Plugin name. 2. Plugin version. 3. Support URL.
#. translators: Number of files.
#. translators: word order may be altered as long as HTML remains around "full"
#: lib/dashboard/widget_localattacks.php:70
#: lib/dashboard/widget_notifications.php:19
#: lib/dashboard/widget_notifications.php:69
#: lib/email_unsubscribeRequest.php:14
#: lib/IPTrafList.php:24
#: lib/IPTrafList.php:41
#: lib/IPTrafList.php:51
#: lib/menu_dashboard.php:114
#: lib/menu_dashboard_options.php:158
#: lib/menu_firewall_blocking.php:34
#: lib/menu_support.php:40
#: lib/menu_support.php:52
#: lib/menu_support.php:58
#: lib/menu_support.php:84
#: lib/menu_support.php:122
#: lib/menu_support.php:140
#: lib/menu_support.php:145
#: lib/menu_support.php:166
#: lib/menu_tools_diagnostic.php:717
#: lib/menu_tools_diagnostic.php:876
#: lib/menu_tools_diagnostic.php:877
#: lib/menu_tools_diagnostic.php:882
#: lib/menu_tools_diagnostic.php:883
#: lib/menu_tools_diagnostic.php:888
#: lib/menu_tools_diagnostic.php:895
#: lib/menu_tools_diagnostic.php:902
#: lib/menu_tools_livetraffic.php:209
#: lib/menu_tools_livetraffic.php:346
#: lib/menu_tools_livetraffic.php:353
#: lib/menu_tools_livetraffic.php:428
#: lib/menu_tools_livetraffic.php:481
#: lib/menu_tools_twoFactor.php:51
#: lib/menu_wordfence_central.php:56
#: lib/wf503.php:390
#: lib/wfCentralAPI.php:906
#: lib/wfScanEngine.php:310
#: lib/wfScanEngine.php:648
#: lib/wfScanEngine.php:661
#: lib/wfScanEngine.php:733
#: lib/wfScanEngine.php:756
#: lib/wfScanEngine.php:832
#: lib/wfScanEngine.php:1062
#: lib/wfScanEngine.php:1063
#: lib/wfScanEngine.php:1204
#: lib/wfScanEngine.php:1341
#: lib/wfScanEngine.php:1484
#: lib/wfScanEngine.php:1848
#: lib/wfScanEngine.php:1965
#: lib/wfScanEngine.php:2024
#: lib/wfScanEngine.php:2193
#: lib/wfScanEngine.php:2232
#: lib/wfScanEngine.php:2433
#: lib/wfScanEngine.php:2475
#: lib/wfVersionCheckController.php:69
#: lib/wfVersionCheckController.php:92
#: lib/wfVersionCheckController.php:168
#: lib/wfVersionCheckController.php:187
#: lib/wordfenceClass.php:1427
#: lib/wordfenceClass.php:2804
#: lib/wordfenceClass.php:2940
#: lib/wordfenceClass.php:3095
#: lib/wordfenceClass.php:3131
#: lib/wordfenceClass.php:3629
#: lib/wordfenceClass.php:5011
#: lib/wordfenceClass.php:5019
#: lib/wordfenceClass.php:5025
#: lib/wordfenceClass.php:5050
#: lib/wordfenceClass.php:5062
#: lib/wordfenceClass.php:5070
#: lib/wordfenceClass.php:6447
#: lib/wordfenceClass.php:6464
#: lib/wordfenceClass.php:6486
#: lib/wordfenceClass.php:6505
#: lib/wordfenceClass.php:6511
#: lib/wordfenceClass.php:6558
#: lib/wordfenceHash.php:540
#: lib/wordfenceHash.php:587
#: lib/wordfenceHash.php:661
#: lib/wordfenceHash.php:895
#: views/blocking/block-list.php:35
#: views/blocking/blocking-create.php:179
#: views/blocking/blocking-status.php:27
#: views/blocking/option-bypass-cookie.php:8
#: views/blocking/option-bypass-redirect.php:8
#: views/blocking/options-group-advanced-country.php:85
#: views/common/page-help.php:2
#: views/common/page-title.php:29
#: views/common/section-subtitle.php:27
#: views/common/section-title.php:27
#: views/common/status-critical.php:17
#: views/common/status-detail.php:37
#: views/common/status-tooltip.php:19
#: views/common/status-tooltip.php:30
#: views/common/status-warning.php:17
#: views/dashboard/option-howgetips.php:21
#: views/dashboard/options-group-dashboard.php:107
#: views/dashboard/options-group-general.php:36
#: views/dashboard/options-group-import.php:31
#: views/dashboard/options-group-import.php:44
#: views/dashboard/options-group-license.php:35
#: views/dashboard/options-group-license.php:65
#: views/dashboard/options-group-license.php:67
#: views/dashboard/options-group-license.php:72
#: views/dashboard/status-payment-expiring.php:31
#: views/dashboard/status-renewing.php:17
#: views/gdpr/banner.php:55
#: views/onboarding/modal-final-attempt.php:29
#: views/onboarding/modal-final-attempt.php:30
#: views/options/option-label.php:28
#: views/options/option-select.php:22
#: views/options/option-switch.php:34
#: views/options/option-text.php:30
#: views/options/option-textarea.php:37
#: views/options/option-toggled-boolean-switch.php:32
#: views/options/option-toggled-multiple.php:29
#: views/options/option-toggled-segmented.php:21
#: views/options/option-toggled-select.php:27
#: views/options/option-toggled-sub.php:44
#: views/options/option-toggled-sub.php:52
#: views/options/option-toggled-textarea.php:24
#: views/options/option-toggled.php:36
#: views/options/option-token.php:25
#: views/scanner/issue-configReadable.php:12
#: views/scanner/issue-configReadable.php:17
#: views/scanner/issue-coreUnknown.php:13
#: views/scanner/issue-database.php:18
#: views/scanner/issue-file.php:19
#: views/scanner/issue-file.php:20
#: views/scanner/issue-knownfile.php:19
#: views/scanner/issue-knownfile.php:20
#: views/scanner/issue-publiclyAccessible.php:12
#: views/scanner/issue-publiclyAccessible.php:17
#: views/scanner/issue-wfPluginAbandoned.php:18
#: views/scanner/issue-wfPluginAbandoned.php:19
#: views/scanner/issue-wfPluginAbandoned.php:20
#: views/scanner/issue-wfPluginRemoved.php:17
#: views/scanner/issue-wfPluginRemoved.php:18
#: views/scanner/issue-wfPluginUpgrade.php:18
#: views/scanner/issue-wfPluginUpgrade.php:19
#: views/scanner/issue-wfPluginUpgrade.php:20
#: views/scanner/issue-wfPluginVulnerable.php:17
#: views/scanner/issue-wfPluginVulnerable.php:18
#: views/scanner/issue-wfThemeUpgrade.php:18
#: views/scanner/issue-wfThemeUpgrade.php:19
#: views/scanner/issue-wfUpgrade.php:17
#: views/scanner/issue-wpscan_directoryList.php:12
#: views/scanner/issue-wpscan_directoryList.php:17
#: views/scanner/issue-wpscan_fullPathDiscl.php:12
#: views/scanner/issue-wpscan_fullPathDiscl.php:17
#: views/scanner/option-scan-signatures.php:22
#: views/scanner/scan-progress-detailed.php:16
#: views/scanner/scan-progress-element.php:59
#: views/scanner/scan-scheduling.php:38
#: views/scanner/scanner-status.php:38
#: views/scanner/scanner-status.php:67
#: views/scanner/site-cleaning-beta-sigs.php:16
#: views/scanner/site-cleaning-bottom.php:18
#: views/scanner/site-cleaning-bottom.php:19
#: views/scanner/site-cleaning-bottom.php:21
#: views/scanner/site-cleaning-high-sense.php:16
#: views/scanner/site-cleaning.php:19
#: views/scanner/site-cleaning.php:21
#: views/tools/options-group-2fa.php:40
#: views/tours/login-security.php:30
#: views/tours/login-security.php:62
#: views/waf/firewall-status.php:38
#: views/waf/firewall-status.php:70
#: views/waf/firewall-status.php:80
#: views/waf/option-rate-limit.php:27
#: views/waf/option-rules.php:5
#: views/waf/option-whitelist.php:5
#: views/waf/options-group-basic-firewall.php:471
#: views/waf/waf-install.php:13
msgid "opens in new tab"
msgstr ""

#: lib/dashboard/widget_logins.php:9
#: views/reports/activity-report-email-inline.php:257
#: views/reports/activity-report.php:107
msgid "Login Attempts"
msgstr ""

#: lib/dashboard/widget_logins.php:20
msgid "Successful"
msgstr ""

#: lib/dashboard/widget_logins.php:21
msgid "Failed"
msgstr ""

#: lib/dashboard/widget_logins.php:26
msgid "No successful logins have been recorded."
msgstr ""

#: lib/dashboard/widget_logins.php:36
msgid "No failed logins have been recorded."
msgstr ""

#: lib/dashboard/widget_networkattacks.php:8
msgid "Total Attacks Blocked:"
msgstr ""

#: lib/dashboard/widget_networkattacks.php:17
msgid "Blocked attack counts not available yet."
msgstr ""

#: lib/dashboard/widget_networkattacks.php:32
msgid "Total Attacks"
msgstr ""

#. translators: Time since. Example: 1 minute, 2 seconds
#: lib/dashboard/widget_networkattacks.php:208
msgid "Last Updated: %s ago"
msgstr ""

#: lib/dashboard/widget_notifications.php:8
#: lib/wordfenceClass.php:6978
msgid "Notifications"
msgstr ""

#: lib/dashboard/widget_notifications.php:25
msgid "No notifications received"
msgstr ""

#: lib/dashboard/widget_notifications.php:37
#: lib/menu_wordfence_central.php:61
msgid "Wordfence Central Status"
msgstr ""

#. translators: 1. Email address. 2. Localized date.
#: lib/dashboard/widget_notifications.php:42
msgid "Connected by %1$s on %2$s"
msgstr ""

#. translators: 1. Email address. 2. Localized date.
#: lib/dashboard/widget_notifications.php:46
msgid "Disconnected by %1$s on %2$s"
msgstr ""

#: lib/dashboard/widget_notifications.php:48
#: lib/menu_wordfence_central.php:104
msgid "It looks like you've tried to connect this site to Wordfence Central, but the installation did not finish."
msgstr ""

#: lib/dashboard/widget_notifications.php:50
#: lib/menu_wordfence_central.php:55
#: lib/menu_wordfence_central.php:114
msgid "Wordfence Central allows you to manage Wordfence on multiple sites from one location. It makes security monitoring and configuring Wordfence easier."
msgstr ""

#: lib/dashboard/widget_notifications.php:58
#: lib/menu_wordfence_central.php:108
#: views/onboarding/banner.php:13
#: views/onboarding/disabled-overlay.php:8
msgid "Resume Installation"
msgstr ""

#: lib/dashboard/widget_notifications.php:59
#: lib/dashboard/widget_notifications.php:64
#: lib/menu_wordfence_central.php:65
#: lib/wfCentralAPI.php:898
msgid "Disconnect This Site"
msgstr ""

#: lib/dashboard/widget_notifications.php:66
msgid "Reconnect This Site"
msgstr ""

#: lib/dashboard/widget_notifications.php:66
msgid "Connect This Site"
msgstr ""

#: lib/dashboard/widget_notifications.php:69
#: lib/menu_wordfence_central.php:56
msgid "Visit Wordfence Central"
msgstr ""

#: lib/dashboard/widget_notifications.php:146
msgid "Confirm Disconnect"
msgstr ""

#: lib/dashboard/widget_notifications.php:147
msgid "Are you sure you want to disconnect your site from Wordfence Central?"
msgstr ""

#. translators: Support URL.
#: lib/dashboard/widget_notifications.php:148
#: lib/menu_scanner.php:207
#: lib/menu_scanner.php:218
#: lib/menu_tools_diagnostic.php:1009
#: lib/menu_tools_twoFactor.php:235
#: lib/menu_tools_twoFactor.php:273
#: lib/wordfenceClass.php:8332
#: lib/wordfenceClass.php:8376
#: lib/wordfenceClass.php:8440
#: lib/wordfenceClass.php:8500
#: lib/wordfenceClass.php:8546
#: modules/login-security/views/manage/deactivate.php:31
#: modules/login-security/views/manage/regenerate.php:26
#: views/blocking/block-list.php:501
#: views/blocking/blocking-create.php:212
#: views/blocking/blocking-create.php:529
#: views/dashboard/options-group-license.php:165
#: views/offboarding/deactivation-prompt.php:30
#: views/offboarding/deactivation-prompt.php:46
#: views/offboarding/deactivation-prompt.php:59
#: views/options/block-all-options-controls.php:164
#: views/options/block-controls.php:79
msgid "Cancel"
msgstr ""

#: lib/dashboard/widget_notifications.php:149
msgid "Disconnect"
msgstr ""

#: lib/diffResult.php:9
msgid "Wordfence: Viewing File Differences"
msgstr ""

#: lib/diffResult.php:11
msgid "The two panels below show a before and after view of a file on your system that has been modified. The left panel shows the original file before modification. The right panel shows your version of the file that has been modified. Use this view to determine if a file has been modified by an attacker or if this is a change that you or another trusted person made. If you are happy with the modifications you see here, then you should choose to ignore this file the next time Wordfence scans your system."
msgstr ""

#: lib/diffResult.php:14
#: lib/wfViewResult.php:10
msgid "Filename:"
msgstr ""

#: lib/diffResult.php:15
msgid "File type:"
msgstr ""

#: lib/diffResult.php:18
msgid "WordPress Core File"
msgstr ""

#: lib/diffResult.php:20
msgid "Theme File"
msgstr ""

#: lib/diffResult.php:21
msgid "Theme Name:"
msgstr ""

#: lib/diffResult.php:23
msgid "Theme Version:"
msgstr ""

#: lib/diffResult.php:25
msgid "Plugin File"
msgstr ""

#: lib/diffResult.php:26
msgid "Plugin Name:"
msgstr ""

#: lib/diffResult.php:27
msgid "Plugin Version:"
msgstr ""

#: lib/diffResult.php:29
msgid "Unknown Type"
msgstr ""

#: lib/diffResult.php:38
msgid "There are no differences between the original file and the file in the repository."
msgstr ""

#: lib/diffResult.php:44
msgid "&copy;&nbsp;%1$d to %2$d Wordfence &mdash; Visit <a href=\"http://wordfence.com/\">Wordfence.com</a> for help, security updates and more."
msgstr ""

#. translators: 1. Blog name/title. 2. Date.
#: lib/email_genericAlert.php:4
msgid "This email was sent from your website \"%1$s\" by the Wordfence plugin at %2$s"
msgstr ""

#. translators: URL to the WordPress admin panel.
#: lib/email_genericAlert.php:8
msgid "The Wordfence administrative URL for this site is: %s"
msgstr ""

#: lib/email_genericAlert.php:14
msgid ""
"NOTE: You are using the free version of Wordfence. Upgrade today:\n"
" - Receive real-time Firewall and Scan engine rule updates for protection as threats emerge\n"
" - Real-time IP Blocklist blocks the most malicious IPs from accessing your site\n"
" - Country blocking\n"
" - IP reputation monitoring\n"
" - Schedule scans to run more frequently and at optimal times\n"
" - Access to Premium Support\n"
" - Discounts for multi-year and multi-license purchases\n"
"\n"
"Click here to upgrade to Wordfence Premium:\n"
"https://www.wordfence.com/zz1/wordfence-signup/"
msgstr ""

#. translators: URL to the WordPress admin panel.
#: lib/email_genericAlert.php:30
msgid ""
"To change your alert options for Wordfence, visit:\n"
"%s"
msgstr ""

#. translators: URL to the WordPress admin panel.
#: lib/email_genericAlert.php:34
msgid ""
"To see current Wordfence alerts, visit:\n"
"%s"
msgstr ""

#. translators: URL to the site's homepage.
#: lib/email_newIssues.php:5
msgid "This email was sent from your website \"%s\" by the Wordfence plugin."
msgstr ""

#. translators: 1. URL to the site's homepage. 2. Number of scan results.
#: lib/email_newIssues.php:12
msgid "Wordfence found the following new issues on \"%1$s\" (%2$d existing issue was also found again)."
msgid_plural "Wordfence found the following new issues on \"%1$s\" (%2$d existing issues were also found again)."
msgstr[0] ""
msgstr[1] ""

#. translators: 1. URL to the site's homepage.
#: lib/email_newIssues.php:22
msgid "Wordfence found the following new issues on \"%1$s\"."
msgstr ""

#. translators: Localized date.
#: lib/email_newIssues.php:32
msgid "Alert generated at %s"
msgstr ""

#. translators: URL to WordPress admin panel.
#: lib/email_newIssues.php:38
msgid "See the details of these scan results on your site at: %s"
msgstr ""

#: lib/email_newIssues.php:42
msgid "HIGH SENSITIVITY scanning is enabled, it may produce false positives"
msgstr ""

#. translators: 1. URL to WordPress admin panel. 2. URL to WordPress admin panel. 3. URL to Wordfence support page. 4. URL to Wordfence support page.
#: lib/email_newIssues.php:50
msgid "The scan was terminated early because it reached the time limit for scans. If you would like to allow your scans to run longer, you can customize the limit on the options page: <a href=\"%1$s\">%2$s</a> or read more about scan options to improve scan speed here: <a href=\"%3$s\">%4$s</a>"
msgstr ""

#: lib/email_newIssues.php:56
msgid "Critical Problems:"
msgstr ""

#: lib/email_newIssues.php:57
msgid "High Severity Problems:"
msgstr ""

#: lib/email_newIssues.php:58
msgid "Medium Severity Problems:"
msgstr ""

#: lib/email_newIssues.php:59
msgid "Low Severity Problems:"
msgstr ""

#: lib/email_newIssues.php:78
msgid "Plugin contains an unpatched security vulnerability."
msgstr ""

#: lib/email_newIssues.php:80
#: lib/email_newIssues.php:106
#: views/scanner/issue-wfPluginAbandoned.php:21
#: views/scanner/issue-wfPluginAbandoned.php:39
#: views/scanner/issue-wfPluginRemoved.php:19
#: views/scanner/issue-wfPluginRemoved.php:34
#: views/scanner/issue-wfPluginUpgrade.php:21
#: views/scanner/issue-wfPluginUpgrade.php:39
#: views/scanner/issue-wfPluginVulnerable.php:19
#: views/scanner/issue-wfPluginVulnerable.php:33
#: views/scanner/issue-wfThemeUpgrade.php:20
#: views/scanner/issue-wfThemeUpgrade.php:37
#: views/scanner/issue-wfUpgrade.php:18
#: views/scanner/issue-wfUpgrade.php:33
msgid "Vulnerability Severity"
msgstr ""

#: lib/email_newIssues.php:83
#: lib/email_newIssues.php:109
#: views/scanner/issue-wfPluginAbandoned.php:20
#: views/scanner/issue-wfPluginAbandoned.php:38
#: views/scanner/issue-wfPluginRemoved.php:18
#: views/scanner/issue-wfPluginRemoved.php:33
#: views/scanner/issue-wfPluginUpgrade.php:20
#: views/scanner/issue-wfPluginUpgrade.php:38
#: views/scanner/issue-wfPluginVulnerable.php:18
#: views/scanner/issue-wfPluginVulnerable.php:32
#: views/scanner/issue-wfThemeUpgrade.php:19
#: views/scanner/issue-wfThemeUpgrade.php:36
#: views/scanner/issue-wfUpgrade.php:17
#: views/scanner/issue-wfUpgrade.php:32
msgid "Vulnerability Information"
msgstr ""

#: lib/email_newIssues.php:89
msgid "The core files scan has not run because this version is not currently indexed by Wordfence. New WordPress versions may take up to a day to be indexed."
msgstr ""

#: lib/email_newIssues.php:92
msgid "Firewall issues may be caused by file permission changes or other technical problems."
msgstr ""

#: lib/email_newIssues.php:92
msgid "More Details and Instructions"
msgstr ""

#: lib/email_newIssues.php:95
msgid "Scanning additional paths is optional and is not always necessary."
msgstr ""

#. translators: 1. WordPress version. 2. WordPress version.
#: lib/email_newIssues.php:95
#: lib/email_unlockRequest.php:14
#: lib/menu_dashboard.php:114
#: lib/menu_dashboard.php:483
#: lib/menu_dashboard_options.php:158
#: lib/wfVersionCheckController.php:69
#: lib/wfVersionCheckController.php:92
#: lib/wfVersionCheckController.php:168
#: lib/wfVersionCheckController.php:187
#: lib/wordfenceClass.php:6591
#: modules/login-security/classes/controller/wordfencels.php:494
#: modules/login-security/classes/controller/wordfencels.php:506
#: modules/login-security/views/options/option-roles.php:62
#: views/blocking/blocking-create.php:528
#: views/blocking/blocking-status.php:27
#: views/dashboard/options-group-dashboard.php:107
#: views/gdpr/banner.php:55
#: views/offboarding/deactivation-prompt.php:42
#: views/onboarding/modal-final-attempt.php:30
#: views/scanner/scanner-status.php:67
#: views/tours/login-security.php:30
#: views/tours/login-security.php:62
#: views/waf/firewall-status.php:70
#: views/waf/firewall-status.php:80
#: views/waf/options-group-basic-firewall.php:471
msgid "Learn More"
msgstr ""

#: lib/email_newIssues.php:104
#: views/scanner/issue-wfPluginUpgrade.php:16
#: views/scanner/issue-wfPluginUpgrade.php:34
#: views/scanner/issue-wfThemeUpgrade.php:16
#: views/scanner/issue-wfThemeUpgrade.php:33
#: views/scanner/issue-wfUpgrade.php:15
#: views/scanner/issue-wfUpgrade.php:30
msgid "Update includes security-related fixes."
msgstr ""

#: lib/email_newIssues.php:127
msgid "The malicious URL matched"
msgstr ""

#. translators: Number of scan results
#: lib/email_newIssues.php:136
msgid "%d existing issue was found again and is not shown."
msgid_plural "%d existing issues were found again and are not shown."
msgstr[0] ""
msgstr[1] ""

#. translators: Number of scan results
#: lib/email_newIssues.php:139
msgid "%d issue was omitted from this email due to length limits."
msgid_plural "%d issues were omitted from this email due to length limits."
msgstr[0] ""
msgstr[1] ""

#. translators: Number of scan results
#: lib/email_newIssues.php:140
msgid "View every issue:"
msgstr ""

#: lib/email_newIssues.php:149
msgid "NOTE: You are using the free version of Wordfence. Upgrade today:"
msgstr ""

#: lib/email_newIssues.php:152
msgid "Receive real-time Firewall and Scan engine rule updates for protection as threats emerge"
msgstr ""

#: lib/email_newIssues.php:153
msgid "Real-time IP Blocklist blocks the most malicious IPs from accessing your site"
msgstr ""

#: lib/email_newIssues.php:154
msgid "Country blocking"
msgstr ""

#: lib/email_newIssues.php:155
msgid "IP reputation monitoring"
msgstr ""

#: lib/email_newIssues.php:156
msgid "Schedule scans to run more frequently and at optimal times"
msgstr ""

#: lib/email_newIssues.php:157
msgid "Access to Premium Support"
msgstr ""

#: lib/email_newIssues.php:158
msgid "Discounts for multi-year and multi-license purchases"
msgstr ""

#: lib/email_newIssues.php:161
msgid "Click here to upgrade to Wordfence Premium:"
msgstr ""

#. translators: 1. IP address. 2. Site URL. 3. Site name.
#: lib/email_unlockRequest.php:4
msgid "Either you or someone else at IP address <b>%1$s</b> requested instructions to regain access to the website <a href=\"%2$s\"><b>%3$s</b></a>."
msgstr ""

#. translators: Localized date.
#: lib/email_unlockRequest.php:8
#: lib/email_unsubscribeRequest.php:8
msgid "Request was generated at: %s"
msgstr ""

#: lib/email_unlockRequest.php:10
msgid "If you did not request these instructions then you can safely ignore them."
msgstr ""

#: lib/email_unlockRequest.php:11
msgid "These instructions <b>will be valid for 30 minutes</b> from the time they were sent."
msgstr ""

#: lib/email_unlockRequest.php:14
msgid "Click here to unlock your ability to sign-in and to access to the site."
msgstr ""

#: lib/email_unlockRequest.php:14
msgid "Do this if you simply need to regain access because you were accidentally locked out. If you received an \"Insecure Password\" message before getting locked out, you may also need to reset your password."
msgstr ""

#: lib/email_unlockRequest.php:17
msgid "Click here to unblock all IP addresses."
msgstr ""

#: lib/email_unlockRequest.php:17
msgid "Do this if you still can't regain access using the link above. It causes everyone who is blocked or locked out to be able to access your site again."
msgstr ""

#: lib/email_unlockRequest.php:20
msgid "Click here to unlock all IP addresses and disable the Wordfence Firewall and Wordfence login security for all users"
msgstr ""

#: lib/email_unlockRequest.php:20
msgid "Do this if you keep getting locked out or blocked and can't access your site. You can re-enable login security and the firewall once you sign-in to the site by visiting the Wordfence Firewall menu, clicking and then turning on the firewall and login security options. If you use country blocking, you will also need to choose which countries to block."
msgstr ""

#. translators: 1. IP address. 2. Site URL. 3. Site name.
#: lib/email_unsubscribeRequest.php:4
msgid "Either you or someone at IP address <b>%1$s</b> requested an alert unsubscribe link for the website <a href=\"%2$s\"><b>%3$s</b></a>."
msgstr ""

#: lib/email_unsubscribeRequest.php:10
msgid "If you did not request this, you can safely ignore it."
msgstr ""

#. translators: URL to WordPress admin panel.
#: lib/email_unsubscribeRequest.php:14
msgid "<a href=\"%s\" target=\"_blank\">Click here<span class=\"screen-reader-text\"> ("
msgstr ""

#. translators: IP address.
#: lib/IPTraf.php:11
msgid "Wordfence: All recent hits for IP address %s"
msgstr ""

#. translators: 1. year (2011). 2. year (2020)
#: lib/IPTraf.php:14
#: lib/sysinfo.php:20
#: lib/wfViewResult.php:25
msgid "&copy;&nbsp;%d to %d Wordfence &mdash; Visit <a href=\"http://wordfence.com/\">Wordfence.com</a> for help, security updates and more."
msgstr ""

#: lib/IPTrafList.php:13
#: lib/wfLockedOut.php:377
msgid "Time:"
msgstr ""

#. translators: 1. Time ago, example: 2 hours, 40 seconds. 2. Localized date. 3. Unix timestamp.
#: lib/IPTrafList.php:16
msgid "%1$s ago -- %2$s -- %3$s in Unixtime"
msgstr ""

#: lib/IPTrafList.php:19
msgid "Seconds since last hit:"
msgstr ""

#: lib/IPTrafList.php:22
#: lib/menu_tools_livetraffic.php:251
msgid "URL:"
msgstr ""

#: lib/IPTrafList.php:31
msgid "Page not found"
msgstr ""

#: lib/IPTrafList.php:34
msgid "Normal request"
msgstr ""

#: lib/IPTrafList.php:39
msgid "Referrer:"
msgstr ""

#: lib/IPTrafList.php:44
msgid "Full Browser ID:"
msgstr ""

#: lib/IPTrafList.php:49
msgid "User:"
msgstr ""

#: lib/IPTrafList.php:57
msgid "Location:"
msgstr ""

#: lib/live_activity.php:5
msgid "Wordfence Live Activity:"
msgstr ""

#: lib/live_activity.php:9
msgid "Live Updates Paused &mdash; Click inside window to resume"
msgstr ""

#: lib/menu_dashboard.php:20
#: lib/wordfenceClass.php:6857
msgid "Wordfence Dashboard"
msgstr ""

#: lib/menu_dashboard.php:22
msgid "Learn more<span class=\"wf-hidden-xs\"> about the Dashboard</span>"
msgstr ""

#: lib/menu_dashboard.php:50
#: lib/menu_dashboard_options.php:94
#: lib/menu_firewall.php:16
#: lib/menu_firewall.php:26
#: lib/wordfenceClass.php:6861
#: models/page/wfPage.php:105
msgid "Firewall"
msgstr ""

#: lib/menu_dashboard.php:51
#: lib/menu_dashboard_options.php:95
msgid "WAF Currently in Learning Mode"
msgstr ""

#: lib/menu_dashboard.php:51
#: lib/menu_dashboard_options.php:95
msgid "Protection from known and emerging threats"
msgstr ""

#: lib/menu_dashboard.php:53
#: lib/menu_dashboard_options.php:97
#: views/waf/firewall-status.php:70
msgid "Manage Firewall"
msgstr ""

#: lib/menu_dashboard.php:54
#: lib/menu_dashboard_options.php:98
msgid "Firewall Status"
msgstr ""

#: lib/menu_dashboard.php:57
#: lib/menu_dashboard.php:73
#: lib/menu_dashboard_options.php:101
#: lib/menu_dashboard_options.php:117
msgid "https://www.wordfence.com/help/dashboard/#dashboard-status"
msgstr ""

#: lib/menu_dashboard.php:67
#: lib/menu_dashboard_options.php:111
#: lib/menu_scanner.php:27
#: lib/menu_scanner.php:296
#: lib/wordfenceClass.php:6868
#: models/page/wfPage.php:113
msgid "Scan"
msgstr ""

#: lib/menu_dashboard.php:68
#: lib/menu_dashboard_options.php:112
msgid "Detection of security issues"
msgstr ""

#: lib/menu_dashboard.php:70
#: lib/menu_dashboard_options.php:114
#: lib/menu_scanner.php:60
msgid "Manage Scan"
msgstr ""

#: lib/menu_dashboard.php:71
#: lib/menu_dashboard_options.php:115
#: lib/menu_options.php:88
#: lib/menu_scanner.php:61
#: lib/menu_scanner_options.php:116
#: views/dashboard/options-group-dashboard.php:97
msgid "Scan Status"
msgstr ""

#: lib/menu_dashboard.php:82
#: lib/menu_dashboard_options.php:126
msgid "Premium License Conflict"
msgstr ""

#: lib/menu_dashboard.php:83
#: lib/menu_dashboard_options.php:127
#: views/dashboard/options-group-license.php:47
msgid "License already in use"
msgstr ""

#: lib/menu_dashboard.php:85
#: lib/menu_dashboard_options.php:129
#: views/dashboard/options-group-license.php:65
msgid "Reset License"
msgstr ""

#: lib/menu_dashboard.php:93
#: lib/menu_dashboard.php:104
#: lib/menu_dashboard.php:112
#: lib/menu_dashboard_options.php:137
#: lib/menu_dashboard_options.php:148
#: lib/menu_dashboard_options.php:156
#: views/scanner/scanner-status.php:65
#: views/waf/firewall-status.php:78
msgid "Premium Protection Disabled"
msgstr ""

#: lib/menu_dashboard.php:94
#: lib/menu_dashboard_options.php:138
msgid "License is expired"
msgstr ""

#: lib/menu_dashboard.php:96
#: lib/menu_dashboard.php:123
#: lib/menu_dashboard_options.php:140
#: lib/menu_dashboard_options.php:167
msgid "Renew License"
msgstr ""

#: lib/menu_dashboard.php:105
#: lib/menu_dashboard_options.php:149
msgid "The license you were using has been removed from your account. Please reach out to <a href=\"mailto:billing@wordfence.com\">billing@wordfence.com</a> or create a Premium support case at <a href=\"https://support.wordfence.com/support/tickets\" target=\"_blank\">https://support.wordfence.com/support/tickets<span class=\"screen-reader-text\"> (opens in new tab)</span></a> for more information. Our staff is happy to help."
msgstr ""

#: lib/menu_dashboard.php:113
#: lib/menu_dashboard_options.php:157
#: views/waf/firewall-status.php:79
msgid "As a free Wordfence user, you are currently using the Community version of the Threat Defense Feed. Premium users are protected by additional firewall rules and malware signatures. Upgrade to Premium today to improve your protection."
msgstr ""

#: lib/menu_dashboard.php:114
#: lib/menu_dashboard_options.php:158
#: lib/menu_firewall_waf.php:55
#: lib/menu_firewall_waf.php:72
#: lib/menu_scanner.php:76
#: lib/menu_support.php:52
#: lib/menu_tools_twoFactor.php:51
#: lib/wordfenceClass.php:6903
#: views/blocking/blocking-create.php:179
#: views/blocking/blocking-status.php:23
#: views/blocking/blocking-status.php:27
#: views/blocking/options-group-advanced-country.php:85
#: views/dashboard/options-group-dashboard.php:107
#: views/dashboard/options-group-license.php:72
#: views/onboarding/modal-final-attempt.php:29
#: views/scanner/scanner-status.php:67
#: views/tools/options-group-2fa.php:40
#: views/waf/firewall-status.php:80
#: views/waf/options-group-basic-firewall.php:471
msgid "Upgrade to Premium"
msgstr ""

#: lib/menu_dashboard.php:120
#: lib/menu_dashboard.php:179
#: lib/menu_dashboard_options.php:164
#: lib/menu_dashboard_options.php:221
msgid "Premium License Expiring"
msgstr ""

#: lib/menu_dashboard.php:121
#: lib/menu_dashboard_options.php:165
msgid "Auto-renew is disabled"
msgstr ""

#: lib/menu_dashboard.php:130
#: lib/menu_dashboard_options.php:174
msgid "Payment Method Expiring"
msgstr ""

#: lib/menu_dashboard.php:133
#: lib/menu_dashboard_options.php:177
msgid "Payment Method Expired"
msgstr ""

#: lib/menu_dashboard.php:136
#: lib/menu_dashboard_options.php:180
msgid "Payment Method Missing"
msgstr ""

#: lib/menu_dashboard.php:139
#: lib/menu_dashboard_options.php:183
msgid "Payment Method Invalid"
msgstr ""

#: lib/menu_dashboard.php:145
#: lib/menu_dashboard.php:168
msgid "License renews today"
msgstr ""

#: lib/menu_dashboard.php:148
msgid "License renews tomorrow"
msgstr ""

#. translators: Number of days
#: lib/menu_dashboard.php:153
#: lib/menu_dashboard.php:174
msgid "License renews in %d days"
msgstr ""

#: lib/menu_dashboard.php:161
#: lib/menu_dashboard_options.php:203
msgid "Update Payment Method"
msgstr ""

#: lib/menu_dashboard.php:171
msgid "License renews in 1 day"
msgstr ""

#: lib/menu_dashboard.php:182
#: lib/menu_dashboard_options.php:224
msgid "Review Payment Method"
msgstr ""

#: lib/menu_dashboard.php:190
#: lib/menu_dashboard_options.php:232
msgid "%s Enabled"
msgstr ""

#: lib/menu_dashboard.php:194
#: lib/menu_dashboard_options.php:236
msgid "Learn about Wordfence Care and Wordfence Response"
msgstr ""

#: lib/menu_dashboard.php:196
#: lib/menu_dashboard_options.php:238
msgid "Learn about Wordfence Response"
msgstr ""

#: lib/menu_dashboard.php:225
#: lib/wordfenceClass.php:6872
msgid "Tools"
msgstr ""

#: lib/menu_dashboard.php:226
msgid "Live Traffic, Whois Lookup, Import/Export, and Diagnostics"
msgstr ""

#: lib/menu_dashboard.php:236
#: lib/menu_firewall_waf.php:157
#: lib/menu_scanner.php:129
#: lib/menu_support.php:16
#: lib/wordfenceClass.php:6885
msgid "Help"
msgstr ""

#: lib/menu_dashboard.php:237
#: lib/menu_firewall_waf.php:158
#: lib/menu_scanner.php:130
msgid "Find the documentation and help you need"
msgstr ""

#: lib/menu_dashboard.php:247
#: models/page/wfPage.php:103
msgid "Global Options"
msgstr ""

#: lib/menu_dashboard.php:248
msgid "Manage global options for Wordfence such as alerts, premium status, and more"
msgstr ""

#: lib/menu_dashboard.php:299
msgid "This is your Dashboard"
msgstr ""

#: lib/menu_dashboard.php:300
msgid "The Wordfence Dashboard provides valuable insights into the current state of your site's security. You'll find useful data summarized here as well as important status updates and notifications."
msgstr ""

#: lib/menu_dashboard.php:307
#: lib/menu_dashboard.php:323
#: lib/menu_dashboard.php:386
#: lib/menu_dashboard.php:403
#: lib/menu_dashboard.php:421
#: lib/menu_firewall_blocking.php:127
#: lib/menu_firewall_blocking.php:143
#: lib/menu_firewall_blocking.php:211
#: lib/menu_firewall_waf.php:255
#: lib/menu_firewall_waf.php:272
#: lib/menu_firewall_waf.php:289
#: lib/menu_scanner.php:304
#: lib/menu_scanner.php:321
#: lib/menu_scanner.php:373
#: views/tours/login-security.php:37
#: views/tours/login-security.php:53
msgid "Next"
msgstr ""

#: lib/menu_dashboard.php:314
msgid "Easily Monitor Your Wordfence Protection"
msgstr ""

#: lib/menu_dashboard.php:315
msgid "Each feature contains a status that reminds you what's enabled, disabled or needs attention. The Notifications section will highlight actions you need to take."
msgstr ""

#: lib/menu_dashboard.php:322
#: lib/menu_dashboard.php:339
#: lib/menu_dashboard.php:402
#: lib/menu_dashboard.php:420
#: lib/menu_dashboard.php:437
#: lib/menu_firewall_blocking.php:142
#: lib/menu_firewall_blocking.php:158
#: lib/menu_firewall_blocking.php:225
#: lib/menu_firewall_waf.php:271
#: lib/menu_firewall_waf.php:288
#: lib/menu_firewall_waf.php:306
#: lib/menu_scanner.php:320
#: lib/menu_scanner.php:336
#: lib/menu_scanner.php:387
#: views/tours/login-security.php:52
#: views/tours/login-security.php:69
msgid "Previous"
msgstr ""

#: lib/menu_dashboard.php:330
#: lib/menu_dashboard.php:410
msgid "Global Wordfence Options"
msgstr ""

#: lib/menu_dashboard.php:332
msgid "You'll find this icon throughout the plugin. Clicking it will show you the options and features for each section of Wordfence. From the dashboard, you can find the <strong>Global Options</strong> for Wordfence such as alerts, automatic updates, and managing your site's Premium License."
msgstr ""

#: lib/menu_dashboard.php:340
#: lib/menu_dashboard.php:438
#: lib/menu_firewall_blocking.php:159
#: lib/menu_firewall_blocking.php:226
#: lib/menu_firewall_waf.php:307
#: lib/menu_firewall_waf.php:354
#: lib/menu_scanner.php:337
#: lib/menu_scanner.php:388
#: lib/menu_tools_livetraffic.php:577
#: lib/menu_tools_livetraffic.php:608
msgid "Got it"
msgstr ""

#. translators: Wordfence version.
#: lib/menu_dashboard.php:376
msgid "You have successfully updated to Wordfence %s"
msgstr ""

#: lib/menu_dashboard.php:377
msgid "This update includes a number of significant interface changes. We'd like to walk you through  some of them, but you can bypass the tour for a section at any time by closing the dialogs."
msgstr ""

#: lib/menu_dashboard.php:378
msgid "We welcome your feedback and comments at <a href=\"mailto:feedback@wordfence.com\">feedback@wordfence.com</a>. For a deeper dive on all of the changes, <a href=\"https://www.wordfence.com/blog/2018/01/introducing-wordfence-7/\" target=\"_blank\" rel=\"noopener noreferrer\">click here<span class=\"screen-reader-text\"> (opens in new tab)</span></a>."
msgstr ""

#: lib/menu_dashboard.php:393
msgid "Monitor Your Wordfence Protection"
msgstr ""

#: lib/menu_dashboard.php:394
msgid "Each feature contains a status percentage reminding you at a high level of what's enabled, disabled, or needing your attention. The Notifications section highlights actions you need to take."
msgstr ""

#: lib/menu_dashboard.php:412
msgid "Manage your Wordfence license, see alerts and automatic plugin updates, and import/export your settings."
msgstr ""

#: lib/menu_dashboard.php:428
msgid "Updated Navigation"
msgstr ""

#: lib/menu_dashboard.php:429
msgid "The main navigation no longer includes an <strong>Options</strong> link. Options are now accessed via the <strong>Options</strong> link on each feature's main page. Live Traffic is now located in the Tools section, and blocking is found under the Firewall. Shortcuts to add a <strong>Blocking</strong> link back to the main navigation are available under Blocking options."
msgstr ""

#: lib/menu_dashboard.php:478
msgid "Recommended Settings Change"
msgstr ""

#: lib/menu_dashboard.php:479
msgid "Greetings! The default configuration for Wordfence Live Traffic has changed. The new default saves only logins and blocked requests, while this site is currently recording all traffic. Would you like to change to the new default?"
msgstr ""

#: lib/menu_dashboard.php:479
msgid "Rate limiting based on type of request (human vs crawler) may be less accurate because this prevents loading the extra JavaScript used for that identification."
msgstr ""

#: lib/menu_dashboard.php:480
msgid "Yes Please"
msgstr ""

#: lib/menu_dashboard.php:482
#: views/onboarding/modal-final-attempt.php:31
msgid "No Thanks"
msgstr ""

#: lib/menu_dashboard_options.php:11
#: lib/menu_dashboard_options.php:75
#: lib/menu_options.php:271
msgid "Wordfence Global Options"
msgstr ""

#: lib/menu_dashboard_options.php:48
msgid "Back<span class=\"wf-hidden-xs\"> to Dashboard</span>"
msgstr ""

#: lib/menu_dashboard_options.php:50
msgid "Are you sure you want to restore the default global settings? This will undo any custom changes you have made to the options on this page. Your configured license key and alert emails will not be changed."
msgstr ""

#: lib/menu_dashboard_options.php:77
msgid "Learn more<span class=\"wf-hidden-xs\"> about Global Options</span>"
msgstr ""

#: lib/menu_dashboard_options.php:189
#: lib/menu_dashboard_options.php:210
msgid "today"
msgstr ""

#: lib/menu_dashboard_options.php:192
msgid "tomorrow"
msgstr ""

#. translators: Number of days
#: lib/menu_dashboard_options.php:195
#: lib/menu_dashboard_options.php:216
msgid "in %d days"
msgstr ""

#: lib/menu_dashboard_options.php:201
#: lib/menu_dashboard_options.php:222
msgid "License renews %s"
msgstr ""

#: lib/menu_dashboard_options.php:213
msgid "in 1 day"
msgstr ""

#: lib/menu_dashboard_options.php:283
#: lib/menu_dashboard_options.php:293
#: lib/menu_options.php:404
#: lib/menu_options.php:414
#: lib/menu_tools.php:22
#: lib/menu_tools_importExport.php:7
#: lib/menu_tools_importExport.php:13
#: models/page/wfPage.php:121
#: views/dashboard/options-group-import.php:22
msgid "Import/Export Options"
msgstr ""

#: lib/menu_dashboard_options.php:291
msgid "Importing and exporting of options has moved to the Tools page"
msgstr ""

#: lib/menu_firewall.php:16
#: lib/menu_firewall_waf.php:35
#: lib/menu_firewall_waf_options.php:142
msgid "Web Application Firewall"
msgstr ""

#: lib/menu_firewall.php:17
#: lib/menu_firewall.php:37
#: lib/menu_firewall_blocking.php:119
#: lib/menu_firewall_waf.php:142
#: lib/wordfenceClass.php:6863
#: models/page/wfPage.php:109
msgid "Blocking"
msgstr ""

#: lib/menu_firewall.php:29
#: lib/menu_firewall_waf_options.php:125
msgid "Learn more<span class=\"wf-hidden-xs\"> about the Firewall</span>"
msgstr ""

#: lib/menu_firewall.php:40
#: lib/menu_firewall_blocking_options.php:90
msgid "Learn more<span class=\"wf-hidden-xs\"> about Blocking</span>"
msgstr ""

#: lib/menu_firewall_blocking.php:25
msgid "<strong>Note:</strong> Blocking is disabled when the option \"Enable Rate Limiting and Advanced Blocking\" is off."
msgstr ""

#: lib/menu_firewall_blocking.php:26
#: lib/menu_tools_twoFactor.php:79
msgid "Turn On"
msgstr ""

#. translators: PHP version.
#: lib/menu_firewall_blocking.php:33
msgid "<strong>Note:</strong> The GeoIP database that is required for country blocking has been updated to a new format. This new format requires sites to run PHP 5.4 or newer, and this site is on PHP %s. To ensure country blocking continues functioning, please update PHP."
msgstr ""

#: lib/menu_firewall_blocking.php:34
msgid "More Information"
msgstr ""

#: lib/menu_firewall_blocking.php:40
msgid "Create a Blocking Rule"
msgstr ""

#: lib/menu_firewall_blocking.php:40
msgid "Edit Blocking Rule"
msgstr ""

#: lib/menu_firewall_blocking.php:120
msgid "Wordfence lets you take control of protecting your site with powerful blocking features. Block traffic based on IP, IP range, hostname, browser, or referrer. Country blocking is available for Premium customers."
msgstr ""

#: lib/menu_firewall_blocking.php:134
#: lib/menu_firewall_blocking.php:204
msgid "Blocking Builder"
msgstr ""

#: lib/menu_firewall_blocking.php:135
msgid "All of your blocking rules are in one central location. Choose the Block Type, then enter the details for the rule. Once it has been added, you'll see it saved as a rule for your site."
msgstr ""

#: lib/menu_firewall_blocking.php:150
#: lib/menu_firewall_blocking.php:218
msgid "Manage Blocking Rules"
msgstr ""

#: lib/menu_firewall_blocking.php:151
msgid "Here's where you'll see all the blocking rules you've created. You can also manage them as well as remove or modify them from this table."
msgstr ""

#: lib/menu_firewall_blocking.php:205
msgid "All of the blocking rules you create are now in one central location. Simply choose the block type and enter the details for the rule you want to create. Premium users have access to advanced country blocking options, found via the <strong>Options</strong> link."
msgstr ""

#: lib/menu_firewall_blocking.php:219
msgid "All blocking rules you create will show here. You can manage them as well as remove or modify them from the same location."
msgstr ""

#: lib/menu_firewall_blocking_options.php:12
#: lib/menu_firewall_blocking_options.php:88
#: lib/menu_options.php:339
#: models/page/wfPage.php:111
#: views/blocking/blocking-status.php:14
msgid "Blocking Options"
msgstr ""

#. translators: Page title/label.
#: lib/menu_firewall_blocking_options.php:51
#: lib/menu_firewall_waf_options.php:83
#: lib/menu_scanner_options.php:66
msgid "<span class=\"wf-hidden-xs\">Back to </span>%s"
msgstr ""

#: lib/menu_firewall_blocking_options.php:53
msgid "Are you sure you want to restore the default Blocking settings? This will undo any custom changes you have made to the options on this page. Any existing blocks will be preserved."
msgstr ""

#: lib/menu_firewall_blocking_options.php:100
#: modules/login-security/views/settings/options.php:203
msgid "General"
msgstr ""

#: lib/menu_firewall_blocking_options.php:114
msgid "Display Blocking menu option"
msgstr ""

#: lib/menu_firewall_waf.php:36
#: lib/menu_firewall_waf.php:53
#: lib/menu_firewall_waf_options.php:143
#: lib/menu_firewall_waf_options.php:160
msgid "Currently in Learning Mode"
msgstr ""

#: lib/menu_firewall_waf.php:36
#: lib/menu_firewall_waf_options.php:143
msgid "Stops Complex Attacks"
msgstr ""

#: lib/menu_firewall_waf.php:38
msgid "Manage WAF"
msgstr ""

#: lib/menu_firewall_waf.php:39
#: lib/menu_firewall_waf_options.php:146
#: lib/menu_options.php:105
#: views/waf/options-group-basic-firewall.php:34
msgid "Web Application Firewall Status"
msgstr ""

#: lib/menu_firewall_waf.php:42
#: lib/menu_firewall_waf.php:60
#: lib/menu_firewall_waf.php:76
#: lib/menu_firewall_waf.php:108
msgid "https://www.wordfence.com/help/firewall/#firewall-status"
msgstr ""

#: lib/menu_firewall_waf.php:52
#: lib/menu_firewall_waf_options.php:159
msgid "Firewall Rules: "
msgstr ""

#: lib/menu_firewall_waf.php:52
#: lib/menu_firewall_waf_options.php:159
#: lib/menu_scanner.php:73
#: lib/menu_scanner_options.php:128
msgid "Community"
msgstr ""

#: lib/menu_firewall_waf.php:53
#: lib/menu_firewall_waf_options.php:160
msgid "Rules updated in real-time"
msgstr ""

#: lib/menu_firewall_waf.php:53
#: lib/menu_firewall_waf_options.php:160
msgid "Rule updates delayed by 30 days"
msgstr ""

#: lib/menu_firewall_waf.php:55
msgid "Manage Firewall Rules"
msgstr ""

#: lib/menu_firewall_waf.php:57
#: lib/menu_firewall_waf_options.php:164
msgid "Firewall Rules Status"
msgstr ""

#: lib/menu_firewall_waf.php:69
#: lib/menu_firewall_waf_options.php:176
msgid "Real-Time IP Blocklist: "
msgstr ""

#: lib/menu_firewall_waf.php:69
#: lib/menu_firewall_waf_options.php:176
#: lib/wfDiagnostic.php:962
#: lib/wfDiagnostic.php:1056
#: lib/wfDiagnostic.php:1061
#: lib/wfDiagnostic.php:1065
#: lib/wfDiagnostic.php:1125
#: lib/wfDiagnostic.php:1126
#: lib/wfDiagnostic.php:1127
#: lib/wfDiagnostic.php:1128
#: lib/wfDiagnostic.php:1129
#: lib/wfDiagnostic.php:1130
#: lib/wfDiagnostic.php:1131
#: lib/wfDiagnostic.php:1132
#: lib/wfDiagnostic.php:1133
#: lib/wfDiagnostic.php:1134
#: lib/wfDiagnostic.php:1135
#: lib/wfDiagnostic.php:1136
#: lib/wfDiagnostic.php:1137
#: lib/wfDiagnostic.php:1138
#: lib/wfDiagnostic.php:1139
#: lib/wfDiagnostic.php:1140
#: lib/wfDiagnostic.php:1141
#: lib/wfDiagnostic.php:1142
#: lib/wfDiagnostic.php:1143
#: lib/wfDiagnostic.php:1144
#: lib/wfDiagnostic.php:1145
#: lib/wfDiagnostic.php:1146
#: lib/wfDiagnostic.php:1147
#: lib/wfDiagnostic.php:1148
#: lib/wfDiagnostic.php:1155
#: lib/wfDiagnostic.php:1159
#: lib/wfDiagnostic.php:1160
#: lib/wfDiagnostic.php:1161
#: lib/wfDiagnostic.php:1162
#: lib/wfDiagnostic.php:1163
#: lib/wfDiagnostic.php:1166
#: lib/wfDiagnostic.php:1171
#: lib/wfDiagnostic.php:1173
#: lib/wfDiagnostic.php:1174
#: lib/wfDiagnostic.php:1175
#: lib/wfDiagnostic.php:1176
#: lib/wfDiagnostic.php:1177
#: lib/wfDiagnostic.php:1178
#: lib/wfDiagnostic.php:1179
#: lib/wfDiagnostic.php:1181
#: lib/wfDiagnostic.php:1182
#: lib/wfDiagnostic.php:1185
#: lib/wfDiagnostic.php:1210
#: models/firewall/wfFirewall.php:35
#: views/scanner/scan-scheduling.php:15
#: views/waf/options-group-basic-firewall.php:481
#: views/waf/options-group-whitelisted.php:81
#: views/waf/options-group-whitelisted.php:94
msgid "Enabled"
msgstr ""

#: lib/menu_firewall_waf.php:69
#: lib/menu_firewall_waf_options.php:176
#: lib/wfDiagnostic.php:1056
#: lib/wfDiagnostic.php:1061
#: lib/wfDiagnostic.php:1065
#: lib/wfDiagnostic.php:1125
#: lib/wfDiagnostic.php:1126
#: lib/wfDiagnostic.php:1127
#: lib/wfDiagnostic.php:1128
#: lib/wfDiagnostic.php:1129
#: lib/wfDiagnostic.php:1130
#: lib/wfDiagnostic.php:1131
#: lib/wfDiagnostic.php:1132
#: lib/wfDiagnostic.php:1133
#: lib/wfDiagnostic.php:1134
#: lib/wfDiagnostic.php:1135
#: lib/wfDiagnostic.php:1136
#: lib/wfDiagnostic.php:1137
#: lib/wfDiagnostic.php:1138
#: lib/wfDiagnostic.php:1139
#: lib/wfDiagnostic.php:1140
#: lib/wfDiagnostic.php:1141
#: lib/wfDiagnostic.php:1142
#: lib/wfDiagnostic.php:1143
#: lib/wfDiagnostic.php:1144
#: lib/wfDiagnostic.php:1145
#: lib/wfDiagnostic.php:1146
#: lib/wfDiagnostic.php:1147
#: lib/wfDiagnostic.php:1148
#: lib/wfDiagnostic.php:1155
#: lib/wfDiagnostic.php:1159
#: lib/wfDiagnostic.php:1160
#: lib/wfDiagnostic.php:1161
#: lib/wfDiagnostic.php:1162
#: lib/wfDiagnostic.php:1163
#: lib/wfDiagnostic.php:1166
#: lib/wfDiagnostic.php:1171
#: lib/wfDiagnostic.php:1173
#: lib/wfDiagnostic.php:1174
#: lib/wfDiagnostic.php:1175
#: lib/wfDiagnostic.php:1176
#: lib/wfDiagnostic.php:1177
#: lib/wfDiagnostic.php:1178
#: lib/wfDiagnostic.php:1179
#: lib/wfDiagnostic.php:1181
#: lib/wfDiagnostic.php:1182
#: lib/wfDiagnostic.php:1185
#: lib/wfDiagnostic.php:1210
#: lib/wordfenceClass.php:6301
#: models/firewall/wfFirewall.php:41
#: modules/login-security/classes/controller/wordfencels.php:506
#: modules/login-security/views/options/option-roles.php:8
#: views/scanner/scan-scheduling.php:14
#: views/user/disabled-application-passwords.php:12
#: views/waf/options-group-basic-firewall.php:48
#: views/waf/options-group-basic-firewall.php:480
msgid "Disabled"
msgstr ""

#: lib/menu_firewall_waf.php:70
#: lib/menu_firewall_waf_options.php:177
msgid "Blocks requests from known malicious IPs"
msgstr ""

#: lib/menu_firewall_waf.php:72
msgid "Manage Real-Time IP Blocklist"
msgstr ""

#: lib/menu_firewall_waf.php:72
#: views/waf/option-whitelist.php:102
msgid "Enable"
msgstr ""

#: lib/menu_firewall_waf.php:74
#: lib/menu_firewall_waf_options.php:181
msgid "Blocklist Status"
msgstr ""

#: lib/menu_firewall_waf.php:102
#: lib/menu_firewall_waf.php:279
#: lib/menu_firewall_waf_options.php:192
#: lib/wfDiagnostic.php:1165
#: views/waf/options-group-brute-force.php:26
msgid "Brute Force Protection"
msgstr ""

#: lib/menu_firewall_waf.php:102
#: lib/menu_firewall_waf_options.php:192
msgid ": Disabled"
msgstr ""

#: lib/menu_firewall_waf.php:103
#: lib/menu_firewall_waf_options.php:193
msgid "Stops Password Guessing Attacks"
msgstr ""

#: lib/menu_firewall_waf.php:105
msgid "Manage Brute Force Protection"
msgstr ""

#: lib/menu_firewall_waf.php:106
#: lib/menu_firewall_waf_options.php:196
msgid "Brute Force Protection Status"
msgstr ""

#: lib/menu_firewall_waf.php:131
#: lib/wfDiagnostic.php:1184
#: views/waf/options-group-rate-limiting.php:26
msgid "Rate Limiting"
msgstr ""

#: lib/menu_firewall_waf.php:132
msgid "Block crawlers that are using too many resources or stealing content"
msgstr ""

#: lib/menu_firewall_waf.php:143
msgid "Block traffic by country, IP, IP range, user agent, referrer, or hostname"
msgstr ""

#: lib/menu_firewall_waf.php:168
msgid "All Firewall Options"
msgstr ""

#: lib/menu_firewall_waf.php:169
msgid "Manage global and advanced firewall options"
msgstr ""

#: lib/menu_firewall_waf.php:246
msgid "The Wordfence firewall protects your sites from attackers"
msgstr ""

#: lib/menu_firewall_waf.php:247
msgid "This is where you can monitor the work Wordfence is doing to protect your site and also where you can manage the options to optimize the firewall's configuration."
msgstr ""

#: lib/menu_firewall_waf.php:262
msgid "Web Application Firewall (WAF)"
msgstr ""

#: lib/menu_firewall_waf.php:263
msgid "The Wordfence Web Application Firewall blocks known and emerging attacks using firewall rules. When you first install the WAF, it will be in learning mode. This allows Wordfence to learn about your site so that we can understand how to protect it and how to allow normal visitors through the firewall. We recommend you let Wordfence learn for a week before you enable the firewall."
msgstr ""

#: lib/menu_firewall_waf.php:280
msgid "Wordfence protects your site from password-guessing attacks by locking out attackers and helping you avoid weak passwords."
msgstr ""

#: lib/menu_firewall_waf.php:296
#: lib/menu_firewall_waf.php:347
#: lib/menu_firewall_waf_options.php:23
#: lib/menu_firewall_waf_options.php:123
#: lib/menu_options.php:302
#: models/page/wfPage.php:107
msgid "Firewall Options"
msgstr ""

#: lib/menu_firewall_waf.php:298
msgid "Set up the way you want the firewall to protect your site including the web application firewall, brute force protection, rate limiting, and blocking."
msgstr ""

#: lib/menu_firewall_waf.php:349
msgid "All of the Firewall settings are now located here. This includes configuration options for the web application firewall, brute force protection, rate limiting, allowlisted URLs, and blocking."
msgstr ""

#: lib/menu_firewall_waf_options.php:85
msgid "Are you sure you want to restore the default Firewall settings? This will undo any custom changes you have made to the options on this page. If you have manually disabled any rules or added any custom allowlisted URLs, those changes will not be overwritten."
msgstr ""

#: lib/menu_install.php:5
msgid "Wordfence is already installed on this site. If you need to replace the current license, you may do so by visiting the \"All Options\" page of the Wordfence menu."
msgstr ""

#: lib/menu_install.php:9
msgid "Too many installation requests have been made from your IP address. Please try again later."
msgstr ""

#: lib/menu_install.php:12
msgid "The link you used to access this page has expired, has already been used, or is otherwise invalid."
msgstr ""

#: lib/menu_install.php:15
msgid "An error occurred while retrieving your license information from the Wordfence servers. Please ensure that your server can reach www.wordfence.com on port 443."
msgstr ""

#: lib/menu_install.php:26
#: lib/wordfenceClass.php:6896
msgid "Install Wordfence"
msgstr ""

#: lib/menu_options.php:24
#: lib/menu_options.php:261
#: lib/wordfenceClass.php:6880
msgid "All Options"
msgstr ""

#: lib/menu_options.php:68
#: views/dashboard/options-group-license.php:35
#: views/onboarding/registration-prompt.php:44
msgid "License Key"
msgstr ""

#: lib/menu_options.php:69
msgid "Display All Options menu item"
msgstr ""

#: lib/menu_options.php:70
msgid "Display Blocking menu item"
msgstr ""

#: lib/menu_options.php:71
msgid "Display Live Traffic menu item"
msgstr ""

#: lib/menu_options.php:72
#: views/dashboard/options-group-general.php:44
msgid "Update Wordfence automatically when a new version is released?"
msgstr ""

#: lib/menu_options.php:73
#: views/dashboard/options-group-general.php:55
msgid "Where to email alerts"
msgstr ""

#: lib/menu_options.php:74
#: views/dashboard/option-howgetips.php:21
msgid "How does Wordfence get IPs"
msgstr ""

#: lib/menu_options.php:75
#: lib/menu_tools_diagnostic.php:236
#: modules/login-security/views/options/option-ip-source.php:47
#: views/dashboard/option-howgetips.php:50
#: views/diagnostics/text.php:124
msgid "Trusted Proxies"
msgstr ""

#: lib/menu_options.php:76
#: views/dashboard/options-group-general.php:73
msgid "Look up visitor IP locations via Wordfence servers"
msgstr ""

#: lib/menu_options.php:77
#: views/dashboard/options-group-general.php:86
msgid "Hide WordPress version"
msgstr ""

#: lib/menu_options.php:78
#: views/dashboard/options-group-general.php:98
msgid "Disable Code Execution for Uploads directory"
msgstr ""

#: lib/menu_options.php:79
#: views/dashboard/options-group-general.php:110
msgid "Pause live updates when window loses focus"
msgstr ""

#: lib/menu_options.php:80
#: views/dashboard/options-group-general.php:120
msgid "Update interval in seconds"
msgstr ""

#: lib/menu_options.php:81
#: views/dashboard/options-group-general.php:133
msgid "Bypass the LiteSpeed \"noabort\" check"
msgstr ""

#: lib/menu_options.php:82
#: views/dashboard/options-group-general.php:145
msgid "Delete Wordfence tables and data on deactivation"
msgstr ""

#: lib/menu_options.php:83
#: views/dashboard/options-group-dashboard.php:36
msgid "Updates Needed (Plugin, Theme, or Core)"
msgstr ""

#: lib/menu_options.php:84
#: views/dashboard/options-group-dashboard.php:48
msgid "Security Alerts"
msgstr ""

#: lib/menu_options.php:85
#: views/dashboard/options-group-dashboard.php:60
msgid "Promotions"
msgstr ""

#: lib/menu_options.php:86
#: views/dashboard/options-group-dashboard.php:72
msgid "Blog Highlights"
msgstr ""

#: lib/menu_options.php:87
#: views/dashboard/options-group-dashboard.php:84
msgid "Product Updates"
msgstr ""

#: lib/menu_options.php:89
#: views/dashboard/options-group-alert.php:36
msgid "Email me when Wordfence is automatically updated"
msgstr ""

#: lib/menu_options.php:90
#: views/dashboard/options-group-alert.php:48
msgid "Email me if Wordfence is deactivated"
msgstr ""

#: lib/menu_options.php:91
#: views/dashboard/options-group-alert.php:59
msgid "Email me if the Wordfence Web Application Firewall is turned off"
msgstr ""

#: lib/menu_options.php:92
msgid "Alert me with scan results of this severity level or greater"
msgstr ""

#: lib/menu_options.php:93
#: views/dashboard/options-group-alert.php:90
msgid "Alert when an IP address is blocked"
msgstr ""

#: lib/menu_options.php:94
#: views/dashboard/options-group-alert.php:101
msgid "Alert when someone is locked out from login"
msgstr ""

#: lib/menu_options.php:95
#: views/dashboard/options-group-alert.php:123
msgid "Alert when the \"lost password\" form is used for a valid user"
msgstr ""

#: lib/menu_options.php:96
#: views/dashboard/options-group-alert.php:134
msgid "Alert me when someone with administrator access signs in"
msgstr ""

#: lib/menu_options.php:97
#: views/dashboard/options-group-alert.php:140
msgid "Only alert me when that administrator signs in from a new device"
msgstr ""

#: lib/menu_options.php:98
#: views/dashboard/options-group-alert.php:151
msgid "Alert me when a non-admin user signs in"
msgstr ""

#: lib/menu_options.php:99
#: views/dashboard/options-group-alert.php:157
msgid "Only alert me when that user signs in from a new device"
msgstr ""

#: lib/menu_options.php:100
#: views/dashboard/options-group-alert.php:168
msgid "Alert me when there's a large increase in attacks detected on my site"
msgstr ""

#: lib/menu_options.php:101
#: views/dashboard/options-group-alert.php:177
msgid "Maximum email alerts to send per hour"
msgstr ""

#: lib/menu_options.php:102
#: views/dashboard/options-group-email-summary.php:43
msgid "Enable email summary"
msgstr ""

#: lib/menu_options.php:103
#: views/dashboard/options-group-email-summary.php:52
msgid "List of directories to exclude from recently modified file list"
msgstr ""

#: lib/menu_options.php:104
#: views/dashboard/options-group-email-summary.php:63
msgid "Enable activity report widget on the WordPress dashboard"
msgstr ""

#: lib/menu_options.php:106
msgid "Web Application Firewall Protection Level"
msgstr ""

#: lib/menu_options.php:107
#: views/waf/options-group-basic-firewall.php:468
msgid "Real-Time IP Blocklist"
msgstr ""

#: lib/menu_options.php:108
#: views/waf/options-group-advanced-firewall.php:40
msgid "Delay IP and Country blocking until after WordPress and plugins have loaded (only process firewall rules early)"
msgstr ""

#: lib/menu_options.php:109
#: views/waf/options-group-advanced-firewall.php:52
msgid "Allowlisted IP addresses that bypass all rules"
msgstr ""

#: lib/menu_options.php:110
#: views/waf/options-group-advanced-firewall.php:88
msgid "Allowlisted services"
msgstr ""

#: lib/menu_options.php:111
#: views/waf/options-group-advanced-firewall.php:99
msgid "Immediately block IPs that access these URLs"
msgstr ""

#: lib/menu_options.php:112
#: views/waf/options-group-advanced-firewall.php:112
msgid "Ignored IP addresses for Wordfence Web Application Firewall alerting"
msgstr ""

#: lib/menu_options.php:113
msgid "Web Application Firewall Rules"
msgstr ""

#: lib/menu_options.php:114
#: lib/wfDiagnostic.php:1166
#: views/waf/options-group-brute-force.php:38
msgid "Enable brute force protection"
msgstr ""

#: lib/menu_options.php:115
#: lib/wfDiagnostic.php:1167
#: views/waf/options-group-brute-force.php:61
msgid "Lock out after how many login failures"
msgstr ""

#: lib/menu_options.php:116
#: lib/wfDiagnostic.php:1168
#: views/waf/options-group-brute-force.php:77
msgid "Lock out after how many forgot password attempts"
msgstr ""

#: lib/menu_options.php:117
#: lib/wfDiagnostic.php:1169
#: views/waf/options-group-brute-force.php:93
msgid "Count failures over what time period"
msgstr ""

#: lib/menu_options.php:118
#: lib/wfDiagnostic.php:1170
#: views/waf/options-group-brute-force.php:109
msgid "Amount of time a user is locked out"
msgstr ""

#: lib/menu_options.php:119
#: lib/wfDiagnostic.php:1171
#: views/waf/options-group-brute-force.php:121
msgid "Immediately lock out invalid usernames"
msgstr ""

#: lib/menu_options.php:120
#: lib/wfDiagnostic.php:1172
#: views/waf/options-group-brute-force.php:139
msgid "Immediately block the IP of users who try to sign in as these usernames"
msgstr ""

#: lib/menu_options.php:121
#: lib/wfDiagnostic.php:1174
#: views/waf/options-group-brute-force.php:178
msgid "Enforce strong passwords"
msgstr ""

#: lib/menu_options.php:122
#: lib/wfDiagnostic.php:1173
#: views/waf/options-group-brute-force.php:155
msgid "Prevent the use of passwords leaked in data breaches"
msgstr ""

#: lib/menu_options.php:123
#: lib/wfDiagnostic.php:1175
#: views/waf/options-group-brute-force.php:190
msgid "Don't let WordPress reveal valid users in login errors"
msgstr ""

#: lib/menu_options.php:124
msgid "Prevent users registering \"admin\" username if it doesn't exist"
msgstr ""

#: lib/menu_options.php:125
msgid "Prevent discovery of usernames through \"/?author=N\" scans, the oEmbed API, the WordPress REST API, and WordPress XML Sitemaps"
msgstr ""

#: lib/menu_options.php:126
#: lib/wfDiagnostic.php:1178
#: views/waf/options-group-brute-force.php:226
msgid "Disable WordPress application passwords"
msgstr ""

#: lib/menu_options.php:127
#: lib/wfDiagnostic.php:1179
#: views/waf/options-group-brute-force.php:238
msgid "Block IPs who send POST requests with blank User-Agent and Referer"
msgstr ""

#: lib/menu_options.php:128
#: lib/wfDiagnostic.php:1180
#: views/waf/options-group-brute-force.php:249
msgid "Custom text shown on block pages"
msgstr ""

#: lib/menu_options.php:129
#: lib/wfDiagnostic.php:1181
#: views/waf/options-group-brute-force.php:264
msgid "Check password strength on profile update"
msgstr ""

#: lib/menu_options.php:130
#: lib/wfDiagnostic.php:1182
#: views/waf/options-group-brute-force.php:276
msgid "Participate in the Real-Time Wordfence Security Network"
msgstr ""

#: lib/menu_options.php:131
#: lib/wfDiagnostic.php:1185
#: views/waf/options-group-rate-limiting.php:38
msgid "Enable Rate Limiting and Advanced Blocking"
msgstr ""

#: lib/menu_options.php:132
#: lib/wfDiagnostic.php:1186
#: views/waf/options-group-rate-limiting.php:60
msgid "How should we treat Google's crawlers"
msgstr ""

#: lib/menu_options.php:133
#: lib/wfDiagnostic.php:1188
#: views/waf/options-group-rate-limiting.php:100
msgid "If anyone's requests exceed"
msgstr ""

#: lib/menu_options.php:134
#: lib/wfDiagnostic.php:1191
#: views/waf/options-group-rate-limiting.php:117
msgid "If a crawler's page views exceed"
msgstr ""

#: lib/menu_options.php:135
#: lib/wfDiagnostic.php:1194
#: views/waf/options-group-rate-limiting.php:134
msgid "If a crawler's pages not found (404s) exceed"
msgstr ""

#: lib/menu_options.php:136
#: lib/wfDiagnostic.php:1197
#: views/waf/options-group-rate-limiting.php:151
msgid "If a human's page views exceed"
msgstr ""

#: lib/menu_options.php:137
#: lib/wfDiagnostic.php:1200
#: views/waf/options-group-rate-limiting.php:168
msgid "If a human's pages not found (404s) exceed"
msgstr ""

#: lib/menu_options.php:138
#: lib/wfDiagnostic.php:1203
#: views/waf/options-group-rate-limiting.php:184
msgid "How long is an IP address blocked when it breaks a rule"
msgstr ""

#: lib/menu_options.php:139
#: lib/wfDiagnostic.php:1204
#: views/waf/options-group-rate-limiting.php:194
msgid "Allowlisted 404 URLs"
msgstr ""

#: lib/menu_options.php:140
msgid "Web Application Firewall Allowlisted URLs"
msgstr ""

#: lib/menu_options.php:141
msgid "Monitor background requests from an administrator's web browser for false positives (Front-end Website)"
msgstr ""

#: lib/menu_options.php:142
msgid "Monitor background requests from an administrator's web browser for false positives (Admin Panel)"
msgstr ""

#: lib/menu_options.php:143
msgid "What to do when we block someone visiting from a blocked country"
msgstr ""

#: lib/menu_options.php:144
msgid "URL to redirect blocked countries to"
msgstr ""

#: lib/menu_options.php:145
#: lib/wfDiagnostic.php:1210
#: views/blocking/options-group-advanced-country.php:62
msgid "Block countries even if they are logged in"
msgstr ""

#: lib/menu_options.php:146
msgid "If user from a blocked country hits the relative URL ____ then redirect that user to ____ and set a cookie that will bypass all country blocking"
msgstr ""

#: lib/menu_options.php:147
msgid "If user who is allowed to access the site views the relative URL ____ then set a cookie that will bypass country blocking in future in case that user hits the site from a blocked country"
msgstr ""

#: lib/menu_options.php:148
#: views/scanner/scan-scheduling.php:12
msgid "Schedule Wordfence Scans"
msgstr ""

#: lib/menu_options.php:149
#: lib/wfDiagnostic.php:1124
msgid "Scan Type"
msgstr ""

#: lib/menu_options.php:150
#: lib/wfDiagnostic.php:1125
#: views/scanner/options-group-general.php:32
msgid "Check if this website is on a domain blocklist"
msgstr ""

#: lib/menu_options.php:151
msgid "Check if this website is being &quot;Spamvertised&quot;"
msgstr ""

#: lib/menu_options.php:152
#: lib/wfDiagnostic.php:1127
#: views/scanner/options-group-general.php:34
msgid "Check if this website IP is generating spam"
msgstr ""

#: lib/menu_options.php:153
#: lib/wfDiagnostic.php:1128
#: views/scanner/options-group-general.php:35
msgid "Scan for misconfigured How does Wordfence get IPs"
msgstr ""

#: lib/menu_options.php:154
#: lib/wfDiagnostic.php:1129
#: views/scanner/options-group-general.php:36
msgid "Scan for publicly accessible configuration, backup, or log files"
msgstr ""

#: lib/menu_options.php:155
#: lib/wfDiagnostic.php:1130
#: views/scanner/options-group-general.php:37
msgid "Scan for publicly accessible quarantined files"
msgstr ""

#: lib/menu_options.php:156
#: lib/wfDiagnostic.php:1131
#: views/scanner/options-group-general.php:38
msgid "Scan core files against repository versions for changes"
msgstr ""

#: lib/menu_options.php:157
#: lib/wfDiagnostic.php:1132
#: views/scanner/options-group-general.php:39
msgid "Scan theme files against repository versions for changes"
msgstr ""

#: lib/menu_options.php:158
#: lib/wfDiagnostic.php:1133
#: views/scanner/options-group-general.php:40
msgid "Scan plugin files against repository versions for changes"
msgstr ""

#: lib/menu_options.php:159
#: lib/wfDiagnostic.php:1134
#: views/scanner/options-group-general.php:41
msgid "Scan wp-admin and wp-includes for files not bundled with WordPress"
msgstr ""

#: lib/menu_options.php:160
#: lib/wfDiagnostic.php:1135
#: views/scanner/options-group-general.php:42
msgid "Scan for signatures of known malicious files"
msgstr ""

#: lib/menu_options.php:161
#: lib/wfDiagnostic.php:1136
#: views/scanner/options-group-general.php:43
msgid "Scan file contents for backdoors, trojans and suspicious code"
msgstr ""

#: lib/menu_options.php:162
#: lib/wfDiagnostic.php:1137
#: views/scanner/options-group-general.php:44
msgid "Scan file contents for malicious URLs"
msgstr ""

#: lib/menu_options.php:163
#: lib/wfDiagnostic.php:1138
#: views/scanner/options-group-general.php:45
msgid "Scan posts for known dangerous URLs and suspicious content"
msgstr ""

#: lib/menu_options.php:164
#: lib/wfDiagnostic.php:1139
#: views/scanner/options-group-general.php:46
msgid "Scan comments for known dangerous URLs and suspicious content"
msgstr ""

#: lib/menu_options.php:165
#: lib/wfDiagnostic.php:1140
#: views/scanner/options-group-general.php:47
msgid "Scan WordPress core, plugin, and theme options for known dangerous URLs and suspicious content"
msgstr ""

#: lib/menu_options.php:166
#: lib/wfDiagnostic.php:1141
#: views/scanner/options-group-general.php:48
msgid "Scan for out of date, abandoned, and vulnerable plugins, themes, and WordPress versions"
msgstr ""

#: lib/menu_options.php:167
#: lib/wfDiagnostic.php:1142
#: views/scanner/options-group-general.php:49
msgid "Scan for suspicious admin users created outside of WordPress"
msgstr ""

#: lib/menu_options.php:168
#: lib/wfDiagnostic.php:1143
#: views/scanner/options-group-general.php:50
msgid "Check the strength of passwords"
msgstr ""

#: lib/menu_options.php:169
#: lib/wfDiagnostic.php:1144
#: views/scanner/options-group-general.php:51
msgid "Monitor disk space"
msgstr ""

#: lib/menu_options.php:170
#: lib/wfDiagnostic.php:1145
#: views/scanner/options-group-general.php:52
msgid "Monitor Web Application Firewall status"
msgstr ""

#: lib/menu_options.php:171
#: lib/wfDiagnostic.php:1146
#: views/scanner/options-group-general.php:53
msgid "Scan files outside your WordPress installation"
msgstr ""

#: lib/menu_options.php:172
#: lib/wfDiagnostic.php:1147
#: views/scanner/options-group-general.php:54
msgid "Scan images, binary, and other files as if they were executable"
msgstr ""

#: lib/menu_options.php:173
#: lib/wfDiagnostic.php:1148
#: views/scanner/options-group-performance.php:32
msgid "Use low resource scanning (reduces server load by lengthening the scan duration)"
msgstr ""

#: lib/menu_options.php:174
#: lib/wfDiagnostic.php:1149
#: views/scanner/options-group-performance.php:33
msgid "Limit the number of issues sent in the scan results email"
msgstr ""

#: lib/menu_options.php:175
#: lib/wfDiagnostic.php:1150
#: views/scanner/options-group-performance.php:34
msgid "Time limit that a scan can run in seconds"
msgstr ""

#. translators: Time until.
#: lib/menu_options.php:176
#: lib/wfDiagnostic.php:1151
#: views/scanner/options-group-performance.php:35
msgid "How much memory should Wordfence request when scanning"
msgstr ""

#: lib/menu_options.php:177
msgid "Maximum execution time for each scan stage"
msgstr ""

#: lib/menu_options.php:178
msgid "Exclude files from scan that match these wildcard patterns"
msgstr ""

#: lib/menu_options.php:179
msgid "Additional scan signatures"
msgstr ""

#: lib/menu_options.php:180
#: lib/wfDiagnostic.php:1155
#: views/scanner/options-group-advanced.php:59
msgid "Use only IPv4 to start scans"
msgstr ""

#: lib/menu_options.php:181
#: lib/wfDiagnostic.php:1156
#: views/scanner/options-group-advanced.php:77
msgid "Maximum number of attempts to resume each scan stage"
msgstr ""

#: lib/menu_options.php:182
msgid "Traffic logging mode (Live Traffic)"
msgstr ""

#: lib/menu_options.php:183
#: views/tools/options-group-live-traffic.php:78
msgid "Don't log signed-in users with publishing access"
msgstr ""

#: lib/menu_options.php:184
#: views/tools/options-group-live-traffic.php:87
msgid "List of comma separated usernames to ignore"
msgstr ""

#: lib/menu_options.php:185
#: views/tools/options-group-live-traffic.php:96
msgid "List of comma separated IP addresses to ignore"
msgstr ""

#: lib/menu_options.php:186
#: views/tools/options-group-live-traffic.php:105
msgid "Browser user-agent to ignore"
msgstr ""

#: lib/menu_options.php:187
#: views/tools/options-group-live-traffic.php:114
msgid "Amount of Live Traffic data to store (number of rows)"
msgstr ""

#: lib/menu_options.php:188
msgid "Maximum days to keep Live Traffic data"
msgstr ""

#: lib/menu_options.php:189
#: views/dashboard/options-group-import.php:31
msgid "Export this site's Wordfence options for import on another site"
msgstr ""

#: lib/menu_options.php:190
#: views/dashboard/options-group-import.php:44
msgid "Import Wordfence options from another site using a token"
msgstr ""

#: lib/menu_options.php:194
msgid "Require Cellphone Sign-in for all Administrators"
msgstr ""

#: lib/menu_options.php:195
msgid "Enable Separate Prompt for Two Factor Code"
msgstr ""

#: lib/menu_options.php:204
msgid "Are you sure you want to restore the default settings? This will undo any custom changes you have made to the options on this page. If you have manually disabled any rules or added any custom allowlisted URLs, those changes will not be overwritten."
msgstr ""

#: lib/menu_options.php:267
msgid "These options are also available throughout the plugin pages, in the relevant sections. This page is provided for easier setup for experienced Wordfence users."
msgstr ""

#: lib/menu_options.php:350
#: models/page/wfPage.php:115
msgid "Scan Options"
msgstr ""

#: lib/menu_options.php:382
msgid "Tool Options"
msgstr ""

#: lib/menu_options.php:412
msgid "Importing and exporting of options is available on the Tools page"
msgstr ""

#: lib/menu_scanner.php:10
msgid "Status Updates Paused<br /><small>Click inside window to resume</small>"
msgstr ""

#: lib/menu_scanner.php:30
msgid "Learn more<span class=\"wf-hidden-xs\"> about the Scanner</span>"
msgstr ""

#: lib/menu_scanner.php:57
#: lib/menu_scanner_options.php:112
msgid "Scan Type: "
msgstr ""

#: lib/menu_scanner.php:63
#: lib/menu_scanner.php:83
#: lib/menu_scanner.php:99
msgid "https://www.wordfence.com/help/scan/#scan-status"
msgstr ""

#: lib/menu_scanner.php:73
#: lib/menu_scanner_options.php:128
msgid "Malware Signatures: "
msgstr ""

#: lib/menu_scanner.php:74
#: lib/menu_scanner_options.php:129
msgid "Signatures updated in real-time"
msgstr ""

#: lib/menu_scanner.php:74
#: lib/menu_scanner_options.php:129
msgid "Signature updates delayed by 30 days"
msgstr ""

#: lib/menu_scanner.php:76
#: lib/wordfenceClass.php:6915
msgid "Protect More Sites"
msgstr ""

#: lib/menu_scanner.php:78
#: lib/menu_scanner_options.php:132
msgid "Malware Signatures Status"
msgstr ""

#: lib/menu_scanner.php:81
#: lib/menu_scanner_options.php:135
#: models/scanner/wfScanner.php:869
msgid "Enable Premium Scan Signatures."
msgstr ""

#: lib/menu_scanner.php:93
#: lib/menu_scanner_options.php:147
msgid "Reputation Checks"
msgstr ""

#: lib/menu_scanner.php:94
#: lib/menu_scanner_options.php:148
msgid "Check spam &amp; spamvertising blocklists"
msgstr ""

#: lib/menu_scanner.php:96
msgid "Manage Options"
msgstr ""

#: lib/menu_scanner.php:97
#: lib/menu_scanner_options.php:151
msgid "Reputation Check Status"
msgstr ""

#: lib/menu_scanner.php:140
#: lib/menu_scanner_options.php:93
msgid "Scan Options and Scheduling"
msgstr ""

#: lib/menu_scanner.php:141
msgid "Manage scan options including scheduling"
msgstr ""

#: lib/menu_scanner.php:202
msgid "Are you sure you want to delete?"
msgstr ""

#: lib/menu_scanner.php:203
msgid "<strong>WARNING:</strong> If you delete the wrong file, it could cause your WordPress website to stop functioning, and you will probably have to restore from a backup."
msgstr ""

#. translators: Support URL.
#: lib/menu_scanner.php:206
msgid "Do not delete files on your system unless you're ABSOLUTELY sure you know what you're doing. If you delete the wrong file it could cause your WordPress website to stop functioning and you will probably have to restore from backups. If you're unsure, Cancel and work with your hosting provider to clean your system of infected files. If you'd like to learn more, <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">click here for our help article<span class=\"screen-reader-text\"> (opens in new tab)</span></a>."
msgstr ""

#: lib/menu_scanner.php:208
msgid "Delete Files"
msgstr ""

#: lib/menu_scanner.php:216
msgid "Are you sure you want to repair?"
msgstr ""

#: lib/menu_scanner.php:217
msgid "Do not repair files on your system unless you're ABSOLUTELY sure you know what you're doing. If you repair the wrong file it could cause your WordPress website to stop functioning and you will probably have to restore from backups. If you're unsure, Cancel and work with your hosting provider to clean your system of infected files."
msgstr ""

#: lib/menu_scanner.php:219
msgid "Repair Files"
msgstr ""

#. translators: Time limit (number).
#. translators: Support URL.
#: lib/menu_scanner.php:229
#: lib/menu_tools_twoFactor.php:246
#: lib/menu_tools_twoFactor.php:255
#: lib/menu_tools_twoFactor.php:264
#: lib/menu_tools_twoFactor.php:284
#: lib/wordfenceClass.php:5020
#: lib/wordfenceClass.php:5026
#: lib/wordfenceClass.php:5032
#: lib/wordfenceClass.php:5051
#: lib/wordfenceClass.php:5057
#: lib/wordfenceClass.php:5064
#: lib/wordfenceClass.php:5072
#: lib/wordfenceClass.php:6243
#: lib/wordfenceClass.php:6245
#: lib/wordfenceClass.php:6296
#: lib/wordfenceClass.php:8357
#: lib/wordfenceClass.php:8364
#: lib/wordfenceClass.php:8471
#: lib/wordfenceClass.php:8535
#: modules/login-security/classes/controller/wordfencels.php:373
#: modules/login-security/classes/controller/wordfencels.php:376
#: views/dashboard/options-group-import.php:147
#: views/dashboard/options-group-import.php:157
#: views/dashboard/options-group-import.php:177
#: views/offboarding/deactivation-prompt.php:70
#: views/onboarding/modal-final-attempt.php:36
msgid "Close"
msgstr ""

#: lib/menu_scanner.php:297
msgid "A Wordfence scan looks for malware, malicious URLs, and patterns of infections by examining all of the files, posts, and comments on your WordPress website. It also checks your server and monitors your site's online reputation."
msgstr ""

#: lib/menu_scanner.php:311
msgid "Manage Scan Settings"
msgstr ""

#: lib/menu_scanner.php:313
msgid "Set up the way you want the scan to monitor your site security including custom scan configurations and scheduling."
msgstr ""

#: lib/menu_scanner.php:328
msgid "Start Your First Scan"
msgstr ""

#: lib/menu_scanner.php:329
msgid "By default, Wordfence will scan your site daily. Start your first scan now to see if your site has any security issues that need to be addressed. From here you can run manual scans any time you like."
msgstr ""

#: lib/menu_scanner.php:365
msgid "Scan Options &amp; Settings"
msgstr ""

#: lib/menu_scanner.php:367
msgid "All of your scan options, including scheduling, are now located here."
msgstr ""

#: lib/menu_scanner.php:380
msgid "Scan Progress and Activity"
msgstr ""

#: lib/menu_scanner.php:381
msgid "Track each scan stage as Wordfence scans your entire site. Along the way you can see the activity log one line at a time or expand the activity log for a more detailed view. Clicking on scan results will reveal detailed scan findings."
msgstr ""

#: lib/menu_scanner_credentials.php:31
msgid "Back to Scan"
msgstr ""

#: lib/menu_scanner_credentials.php:51
msgid "File System Credentials Required"
msgstr ""

#. translators: URL to the WordPress admin panel.
#: lib/menu_scanner_credentials.php:68
msgid "Security token has expired. Click <a href=\"%s\">here</a> to return to the scan page."
msgstr ""

#: lib/menu_scanner_options.php:14
msgid "Scanner Options"
msgstr ""

#: lib/menu_scanner_options.php:68
msgid "Are you sure you want to restore the default Scan settings? This will undo any custom changes you have made to the options on this page."
msgstr ""

#: lib/menu_scanner_options.php:95
msgid "Learn more<span class=\"wf-hidden-xs\"> about Scanning</span>"
msgstr ""

#: lib/menu_support.php:29
msgid "Premium Support"
msgstr ""

#: lib/menu_support.php:32
msgid "As a Wordfence Response customer you are entitled to hands-on priority support 24 hours a day 365 days a year. Our incident response team is available out of hours to handle urgent issues and security incidents. Our customer support team is available during business hours (Monday to Friday, 6am to 5pm Pacific and 9am to 8pm Eastern time) for product assistance. Both teams can sign-in to your site to assist, on request."
msgstr ""

#: lib/menu_support.php:34
msgid "As a Wordfence Care customer you are entitled to hands-on priority support and have access to our incident response team. Our senior support engineers and incident response team respond to requests quickly within business hours (Monday to Friday, 6am to 5pm Pacific and 9am to 8pm Eastern time) and can sign-in to your site on request to assist with complex issues."
msgstr ""

#: lib/menu_support.php:36
msgid "As a Wordfence Premium customer you're entitled to paid support via our ticketing system. Our senior support engineers respond to Premium tickets during regular business hours (Monday to Friday, 6am to 5pm Pacific and 9am to 8pm Eastern time) and have a direct line to our QA and development teams."
msgstr ""

#: lib/menu_support.php:40
#: views/scanner/site-cleaning-beta-sigs.php:16
#: views/scanner/site-cleaning-bottom.php:21
#: views/scanner/site-cleaning-high-sense.php:16
#: views/scanner/site-cleaning.php:19
msgid "Get Help"
msgstr ""

#: lib/menu_support.php:43
msgid "Upgrade to hands-on support with Wordfence Care"
msgstr ""

#: lib/menu_support.php:45
msgid "Upgrade to a 24/7 1-hour response time with Wordfence Response"
msgstr ""

#: lib/menu_support.php:50
msgid "Upgrade Now to Access Premium Support"
msgstr ""

#: lib/menu_support.php:51
msgid "Our senior support engineers <strong>respond to Premium tickets within a few hours</strong> on average and have a direct line to our QA and development teams."
msgstr ""

#: lib/menu_support.php:56
msgid "Free Support"
msgstr ""

#: lib/menu_support.php:57
msgid "Support for free customers is available via our forums page on wordpress.org. The majority of requests <strong>receive an answer within a few days.</strong>"
msgstr ""

#: lib/menu_support.php:58
msgid "Go to Support Forums"
msgstr ""

#: lib/menu_support.php:73
msgid "GDPR Information"
msgstr ""

#: lib/menu_support.php:84
msgid "General Data Protection Regulation"
msgstr ""

#: lib/menu_support.php:85
msgid "The GDPR is a set of rules that provides more control over EU personal data. Defiant has updated its terms of service, privacy policies, and software, as well as made available standard contractual clauses to meet GDPR compliance."
msgstr ""

#: lib/menu_support.php:94
msgid "Agreement to New Terms and Privacy Policies"
msgstr ""

#: lib/menu_support.php:95
msgid "To continue using Defiant products and services including the Wordfence plugin, all customers must review and agree to the updated terms and privacy policies. These changes reflect our commitment to follow data protection best practices and regulations. The Wordfence interface will remain disabled until these terms are agreed to."
msgstr ""

#: lib/menu_support.php:108
msgid "All Documentation"
msgstr ""

#: lib/menu_support.php:116
msgid "Top Topics and Questions"
msgstr ""

#: lib/menu_support.php:164
msgid "Documentation"
msgstr ""

#: lib/menu_support.php:165
msgid "Documentation about Wordfence may be found on our website by clicking the button below or by clicking the <i class=\"wf-fa wf-fa-question-circle-o\" aria-hidden=\"true\"></i> links on any of the plugin's pages."
msgstr ""

#: lib/menu_support.php:166
msgid "View Documentation"
msgstr ""

#: lib/menu_support.php:271
#: views/onboarding/registration-prompt.php:78
msgid "Premium License Installed"
msgstr ""

#: lib/menu_support.php:271
#: views/onboarding/registration-prompt.php:79
msgid "Congratulations! Wordfence Premium is now active on your website. Please note that some Premium features are not enabled by default."
msgstr ""

#: lib/menu_support.php:271
#: views/blocking/blocking-create.php:530
#: views/waf/waf-install.php:106
#: views/waf/waf-modal-wrapper.php:17
#: views/waf/waf-uninstall.php:108
msgid "Continue"
msgstr ""

#: lib/menu_support.php:289
msgid "An unknown error occurred."
msgstr ""

#: lib/menu_tools.php:18
#: lib/menu_tools_twoFactor.php:14
#: lib/menu_tools_twoFactor.php:23
#: models/page/wfPage.php:117
#: modules/login-security/classes/controller/wordfencels.php:902
#: modules/login-security/classes/controller/wordfencels.php:903
msgid "Two-Factor Authentication"
msgstr ""

#: lib/menu_tools.php:20
#: lib/menu_tools_livetraffic.php:8
#: lib/menu_tools_livetraffic.php:41
#: lib/menu_tools_livetraffic.php:571
#: lib/menu_tools_livetraffic.php:602
#: lib/wordfenceClass.php:6874
#: models/page/wfPage.php:119
msgid "Live Traffic"
msgstr ""

#: lib/menu_tools.php:21
#: lib/menu_tools_whois.php:7
#: lib/menu_tools_whois.php:16
#: lib/menu_tools_whois.php:75
#: models/page/wfPage.php:123
msgid "Whois Lookup"
msgstr ""

#: lib/menu_tools.php:23
#: lib/menu_tools_diagnostic.php:24
#: lib/wfDiagnostic.php:1158
#: models/page/wfPage.php:125
msgid "Diagnostics"
msgstr ""

#: lib/menu_tools_diagnostic.php:34
msgid "This page shows information that can be used for troubleshooting conflicts, configuration issues, or compatibility with other plugins, themes, or a host's environment. Failing tests are not always a sign of something that you need to fix, but can help the Wordfence team when troubleshooting a problem. (<a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More <span class=\"screen-reader-text\">opens in new tab</span></a>)"
msgstr ""

#: lib/menu_tools_diagnostic.php:38
msgid "Thanks for sending your diagnostic page over email"
msgstr ""

#: lib/menu_tools_diagnostic.php:53
msgid "Send Report by Email"
msgstr ""

#: lib/menu_tools_diagnostic.php:60
msgid "Email address:"
msgstr ""

#: lib/menu_tools_diagnostic.php:67
msgid "Ticket Number/Forum Username:"
msgstr ""

#: lib/menu_tools_diagnostic.php:123
msgid "Additional Detail"
msgstr ""

#: lib/menu_tools_diagnostic.php:166
msgid "View Additional Detail"
msgstr ""

#: lib/menu_tools_diagnostic.php:187
#: views/diagnostics/text.php:75
#: views/scanner/issue-checkHowGetIPs.php:8
msgid "IP Detection"
msgstr ""

#: lib/menu_tools_diagnostic.php:188
#: views/diagnostics/text.php:75
msgid "Methods of detecting a visitor's IP address."
msgstr ""

#: lib/menu_tools_diagnostic.php:200
#: views/diagnostics/text.php:84
msgid "IPs"
msgstr ""

#: lib/menu_tools_diagnostic.php:201
#: views/diagnostics/text.php:85
#: views/diagnostics/text.php:148
#: views/diagnostics/text.php:558
#: views/diagnostics/text.php:589
msgid "Value"
msgstr ""

#: lib/menu_tools_diagnostic.php:202
#: views/diagnostics/text.php:86
msgid "Used"
msgstr ""

#. translators: WordPress theme template directory.
#. translators: WordPress theme stylesheet directory.
#. translators: WordPress custom user table.
#. translators: WordPress custom user meta table.
#: lib/menu_tools_diagnostic.php:218
#: lib/menu_tools_diagnostic.php:237
#: lib/menu_tools_diagnostic.php:242
#: lib/menu_tools_diagnostic.php:270
#: lib/menu_tools_diagnostic.php:791
#: lib/menu_tools_diagnostic.php:837
#: lib/wfDiagnostic.php:381
#: lib/wfDiagnostic.php:417
#: lib/wfDiagnostic.php:459
#: lib/wfDiagnostic.php:1029
#: lib/wfDiagnostic.php:1030
#: lib/wfDiagnostic.php:1043
#: lib/wfDiagnostic.php:1044
#: lib/wfDiagnostic.php:1057
#: lib/wfDiagnostic.php:1058
#: lib/wfDiagnostic.php:1059
#: lib/wfDiagnostic.php:1060
#: lib/wfDiagnostic.php:1074
#: lib/wfDiagnostic.php:1075
#: lib/wfDiagnostic.php:1076
#: lib/wfDiagnostic.php:1078
#: lib/wfDiagnostic.php:1079
#: lib/wfDiagnostic.php:1080
#: lib/wfDiagnostic.php:1085
#: lib/wfDiagnostic.php:1219
#: lib/wfDiagnostic.php:1222
#: views/diagnostics/text.php:101
#: views/diagnostics/text.php:125
#: views/diagnostics/text.php:133
#: views/diagnostics/text.php:155
#: views/diagnostics/text.php:569
#: views/diagnostics/text.php:600
msgid "(not set)"
msgstr ""

#: lib/menu_tools_diagnostic.php:227
#: views/diagnostics/text.php:111
msgid "In use"
msgstr ""

#: lib/menu_tools_diagnostic.php:229
#: views/diagnostics/text.php:113
msgid "Configured but not valid"
msgstr ""

#: lib/menu_tools_diagnostic.php:241
#: views/dashboard/option-howgetips.php:68
#: views/diagnostics/text.php:132
msgid "Trusted Proxy Preset"
msgstr ""

#: lib/menu_tools_diagnostic.php:255
#: views/diagnostics/text.php:141
msgid "WordPress Settings"
msgstr ""

#: lib/menu_tools_diagnostic.php:256
#: views/diagnostics/text.php:141
msgid "WordPress version and internal settings/constants."
msgstr ""

#: lib/menu_tools_diagnostic.php:298
#: views/diagnostics/text.php:179
msgid "WordPress Plugins"
msgstr ""

#: lib/menu_tools_diagnostic.php:299
#: views/diagnostics/text.php:179
msgid "Status of installed plugins."
msgstr ""

#. translators: Plugin version.
#. translators: Theme version.
#: lib/menu_tools_diagnostic.php:323
#: lib/menu_tools_diagnostic.php:369
#: lib/menu_tools_diagnostic.php:468
#: views/diagnostics/text.php:197
#: views/diagnostics/text.php:236
#: views/diagnostics/text.php:310
msgid "Version %s"
msgstr ""

#: lib/menu_tools_diagnostic.php:327
#: views/diagnostics/text.php:201
msgid "Network Activated"
msgstr ""

#: lib/menu_tools_diagnostic.php:329
#: lib/menu_tools_diagnostic.php:372
#: lib/menu_tools_diagnostic.php:428
#: lib/menu_tools_diagnostic.php:471
#: modules/login-security/classes/controller/users.php:542
#: modules/login-security/classes/controller/wordfencels.php:490
#: views/diagnostics/text.php:203
#: views/diagnostics/text.php:241
#: views/diagnostics/text.php:283
#: views/diagnostics/text.php:314
msgid "Active"
msgstr ""

#: lib/menu_tools_diagnostic.php:331
#: lib/menu_tools_diagnostic.php:430
#: lib/menu_tools_diagnostic.php:473
#: modules/login-security/classes/controller/users.php:551
#: modules/login-security/classes/controller/wordfencels.php:490
#: views/diagnostics/text.php:205
#: views/diagnostics/text.php:283
#: views/diagnostics/text.php:316
msgid "Inactive"
msgstr ""

#: lib/menu_tools_diagnostic.php:343
#: views/diagnostics/text.php:217
msgid "Must-Use WordPress Plugins"
msgstr ""

#: lib/menu_tools_diagnostic.php:344
#: views/diagnostics/text.php:217
msgid "WordPress \"mu-plugins\" that are always active, including those provided by hosts."
msgstr ""

#: lib/menu_tools_diagnostic.php:379
#: views/diagnostics/text.php:246
msgid "No MU-Plugins"
msgstr ""

#: lib/menu_tools_diagnostic.php:391
#: views/diagnostics/text.php:255
msgid "Drop-In WordPress Plugins"
msgstr ""

#: lib/menu_tools_diagnostic.php:392
#: views/diagnostics/text.php:255
msgid "WordPress \"drop-in\" plugins that are active."
msgstr ""

#: lib/menu_tools_diagnostic.php:405
#: views/diagnostics/text.php:261
msgid "Advanced caching plugin"
msgstr ""

#: lib/menu_tools_diagnostic.php:406
#: views/diagnostics/text.php:262
msgid "Custom database class"
msgstr ""

#: lib/menu_tools_diagnostic.php:407
#: views/diagnostics/text.php:263
msgid "Custom database error message"
msgstr ""

#: lib/menu_tools_diagnostic.php:408
#: views/diagnostics/text.php:264
msgid "Custom installation script"
msgstr ""

#: lib/menu_tools_diagnostic.php:409
#: views/diagnostics/text.php:265
msgid "Custom maintenance message"
msgstr ""

#: lib/menu_tools_diagnostic.php:410
#: views/diagnostics/text.php:266
msgid "External object cache"
msgstr ""

#: lib/menu_tools_diagnostic.php:411
#: views/diagnostics/text.php:267
msgid "Custom PHP error message"
msgstr ""

#: lib/menu_tools_diagnostic.php:412
#: views/diagnostics/text.php:268
msgid "Custom PHP fatal error handler"
msgstr ""

#: lib/menu_tools_diagnostic.php:414
#: views/diagnostics/text.php:270
msgid "Executed before Multisite is loaded"
msgstr ""

#: lib/menu_tools_diagnostic.php:415
#: views/diagnostics/text.php:271
msgid "Custom site deleted message"
msgstr ""

#: lib/menu_tools_diagnostic.php:416
#: views/diagnostics/text.php:272
msgid "Custom site inactive message"
msgstr ""

#: lib/menu_tools_diagnostic.php:417
#: views/diagnostics/text.php:273
msgid "Custom site suspended message"
msgstr ""

#: lib/menu_tools_diagnostic.php:442
#: views/diagnostics/text.php:291
#: views/reports/activity-report-email-inline.php:392
#: views/reports/activity-report.php:191
msgid "Themes"
msgstr ""

#: lib/menu_tools_diagnostic.php:443
#: views/diagnostics/text.php:291
msgid "Status of installed themes."
msgstr ""

#: lib/menu_tools_diagnostic.php:481
#: views/diagnostics/text.php:325
msgid "No Themes"
msgstr ""

#: lib/menu_tools_diagnostic.php:493
#: views/diagnostics/text.php:334
msgid "Cron Jobs"
msgstr ""

#: lib/menu_tools_diagnostic.php:494
#: views/diagnostics/text.php:334
msgid "List of WordPress cron jobs scheduled by WordPress, plugins, or themes."
msgstr ""

#: lib/menu_tools_diagnostic.php:514
#: views/diagnostics/text.php:349
msgid "Overdue"
msgstr ""

#: lib/menu_tools_diagnostic.php:546
#: views/diagnostics/text.php:361
msgid "Database Tables"
msgstr ""

#: lib/menu_tools_diagnostic.php:547
#: views/diagnostics/text.php:361
msgid "Database table names, sizes, timestamps, and other metadata."
msgstr ""

#: lib/menu_tools_diagnostic.php:557
msgid "Wordfence Table Check"
msgstr ""

#: lib/menu_tools_diagnostic.php:560
#: views/diagnostics/text.php:379
msgid "Unable to verify - table count too high"
msgstr ""

#: lib/menu_tools_diagnostic.php:589
#: views/diagnostics/text.php:412
msgid "All Tables Exist"
msgstr ""

#. translators: 1. WordPress table prefix. 2. Wordfence table case. 3. List of database tables.
#: lib/menu_tools_diagnostic.php:593
#: views/diagnostics/text.php:414
msgid "Tables missing (prefix %1$s, %2$s): %3$s"
msgstr ""

#. translators: 1. WordPress table prefix. 2. Wordfence table case. 3. List of database tables.
#: lib/menu_tools_diagnostic.php:593
#: views/diagnostics/text.php:414
msgid "lowercase"
msgstr ""

#. translators: 1. WordPress table prefix. 2. Wordfence table case. 3. List of database tables.
#: lib/menu_tools_diagnostic.php:593
#: views/diagnostics/text.php:414
msgid "regular case"
msgstr ""

#: lib/menu_tools_diagnostic.php:599
msgid "Number of Database Tables"
msgstr ""

#. translators: Row/record count.
#: lib/menu_tools_diagnostic.php:645
#: views/diagnostics/text.php:451
msgid "and %d more"
msgstr ""

#: lib/menu_tools_diagnostic.php:664
#: views/diagnostics/text.php:462
msgid "Log Files"
msgstr ""

#: lib/menu_tools_diagnostic.php:665
#: views/diagnostics/text.php:462
msgid "PHP error logs generated by your site, if enabled by your host."
msgstr ""

#: lib/menu_tools_diagnostic.php:677
#: views/diagnostics/text.php:468
#: views/reports/activity-report-email-inline.php:341
#: views/scanner/issue-file.php:8
#: views/scanner/issue-knownfile.php:8
msgid "File"
msgstr ""

#: lib/menu_tools_diagnostic.php:678
#: lib/menu_tools_diagnostic.php:717
#: lib/wordfenceClass.php:6304
#: modules/login-security/views/manage/activate.php:32
#: modules/login-security/views/manage/activate.php:133
#: modules/login-security/views/manage/regenerate.php:77
msgid "Download"
msgstr ""

#: lib/menu_tools_diagnostic.php:686
#: views/diagnostics/text.php:475
msgid "No log files found."
msgstr ""

#: lib/menu_tools_diagnostic.php:706
#: views/diagnostics/text.php:494
msgid "UTC"
msgstr ""

#: lib/menu_tools_diagnostic.php:717
msgid "Requires downloading from the server directly"
msgstr ""

#: lib/menu_tools_diagnostic.php:731
#: views/diagnostics/text.php:515
msgid "Scan Issues"
msgstr ""

#. translators: Number of scan issues.
#: lib/menu_tools_diagnostic.php:736
#: views/diagnostics/text.php:523
msgid "New Issues (%d total)"
msgstr ""

#: lib/menu_tools_diagnostic.php:757
#: lib/wordfenceClass.php:3984
#: views/diagnostics/text.php:546
msgid "No New Issues"
msgstr ""

#: lib/menu_tools_diagnostic.php:768
#: views/diagnostics/text.php:552
msgid "Wordfence Settings"
msgstr ""

#: lib/menu_tools_diagnostic.php:769
#: views/diagnostics/text.php:552
msgid "Diagnostic Wordfence settings/constants."
msgstr ""

#: lib/menu_tools_diagnostic.php:814
#: lib/menu_wordfence_central.php:41
#: lib/menu_wordfence_central.php:54
#: lib/wordfenceClass.php:6890
#: views/diagnostics/text.php:583
msgid "Wordfence Central"
msgstr ""

#: lib/menu_tools_diagnostic.php:815
#: views/diagnostics/text.php:583
msgid "Diagnostic connection information for Wordfence Central."
msgstr ""

#: lib/menu_tools_diagnostic.php:855
#: lib/sysinfo.php:11
#: lib/wordfenceClass.php:4018
#: views/diagnostics/text.php:618
msgid "Unable to output phpinfo content because it is disabled"
msgstr ""

#: lib/menu_tools_diagnostic.php:864
msgid "Other Tests"
msgstr ""

#: lib/menu_tools_diagnostic.php:865
msgid "System configuration, memory test, send test email from this server."
msgstr ""

#: lib/menu_tools_diagnostic.php:876
msgid "Click to view your system's configuration in a new window"
msgstr ""

#: lib/menu_tools_diagnostic.php:882
msgid "Test your WordPress host's available memory"
msgstr ""

#: lib/menu_tools_diagnostic.php:888
msgid "Send a test email from this WordPress server to an email address:"
msgstr ""

#: lib/menu_tools_diagnostic.php:890
msgid "Send Test Email"
msgstr ""

#: lib/menu_tools_diagnostic.php:895
msgid "Send a test activity report email:"
msgstr ""

#: lib/menu_tools_diagnostic.php:897
msgid "Send Test Activity Report"
msgstr ""

#: lib/menu_tools_diagnostic.php:902
msgid "Clear all Wordfence Central connection data"
msgstr ""

#: lib/menu_tools_diagnostic.php:903
msgid "Clear All Connection Data"
msgstr ""

#: lib/menu_tools_diagnostic.php:903
#: lib/menu_tools_diagnostic.php:904
msgid "Successfully removed data"
msgstr ""

#: lib/menu_tools_diagnostic.php:903
msgid "All associated Wordfence Central connection data has been cleared."
msgstr ""

#: lib/menu_tools_diagnostic.php:904
msgid "Clear Local Connection Data"
msgstr ""

#: lib/menu_tools_diagnostic.php:904
msgid "All associated Wordfence Central connection data has been removed from the local database."
msgstr ""

#: lib/menu_tools_diagnostic.php:916
msgid "Debugging Options"
msgstr ""

#: lib/menu_tools_diagnostic.php:933
#: lib/wfDiagnostic.php:1159
msgid "Enable debugging mode (increases database load)"
msgstr ""

#: lib/menu_tools_diagnostic.php:945
#: lib/wfDiagnostic.php:1160
msgid "Start all scans remotely (Try this if your scans aren't starting and your site is publicly accessible)"
msgstr ""

#: lib/menu_tools_diagnostic.php:957
#: lib/wfDiagnostic.php:1161
msgid "Enable SSL Verification (Disable this if you are consistently unable to connect to the Wordfence servers.)"
msgstr ""

#: lib/menu_tools_diagnostic.php:969
#: lib/wfDiagnostic.php:1162
msgid "Disable reading of php://input"
msgstr ""

#: lib/menu_tools_diagnostic.php:988
#: lib/wordfenceClass.php:6365
msgid "Restore Defaults"
msgstr ""

#: lib/menu_tools_diagnostic.php:989
#: lib/wordfenceClass.php:6290
msgid "Cancel Changes"
msgstr ""

#: lib/menu_tools_diagnostic.php:990
#: lib/wordfenceClass.php:6368
msgid "Save Changes"
msgstr ""

#: lib/menu_tools_diagnostic.php:1007
#: views/options/block-all-options-controls.php:162
#: views/options/block-controls.php:77
msgid "Confirm Restore Defaults"
msgstr ""

#: lib/menu_tools_diagnostic.php:1008
msgid "Are you sure you want to restore the default Diagnostics settings? This will undo any custom changes you have made to the options on this page."
msgstr ""

#. translators: word order may be reversed as long as HTML remains around "Defaults"
#. translators: word order may be reversed as long as HTML remains around "Restore"
#: lib/menu_tools_diagnostic.php:1010
#: views/options/block-all-options-controls.php:165
#: views/options/block-controls.php:80
msgid "Restore<span class=\"wf-hidden-xs\"> Defaults</span>"
msgstr ""

#. translators: URL to support page.
#: lib/menu_tools_importExport.php:16
msgid "<a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"wf-help-link\">Learn more<span class=\"wf-hidden-xs\"> about importing and exporting options</span><span class=\"screen-reader-text\"> (opens in new tab)</span></a>"
msgstr ""

#: lib/menu_tools_importExport.php:20
msgid "To clone one site's configuration to another, use the import/export tools below."
msgstr ""

#. translators: URL to support page.
#: lib/menu_tools_livetraffic.php:44
msgid "<a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"wf-help-link\">Learn more<span class=\"wf-hidden-xs\"> about Live Traffic</span><span class=\"screen-reader-text\"> (opens in new tab)</span></a>"
msgstr ""

#: lib/menu_tools_livetraffic.php:51
msgid "Live Updates Paused"
msgstr ""

#: lib/menu_tools_livetraffic.php:52
msgid "Click inside window to resume"
msgstr ""

#: lib/menu_tools_livetraffic.php:57
msgid "Wordfence Live Traffic shows you what is happening on your site in real-time, including user logins, hack attempts, and requests that were blocked by the Wordfence Firewall. You can choose to log security-related traffic only or all traffic. Traffic is logged directly on the server, which means it includes visits that don't execute JavaScript. Google and other JavaScript-based analytics packages typically only show visits from browsers that are operated by a human, while Live Traffic can show visits from crawlers like Google and Bing."
msgstr ""

#: lib/menu_tools_livetraffic.php:73
msgid "Traffic logging mode: Security-related traffic only"
msgstr ""

#. translators: URL to support page.
#: lib/menu_tools_livetraffic.php:77
#: lib/menu_tools_livetraffic.php:86
msgid " (host setting <a href=\"%s\" class=\"wfhelp\" target=\"_blank\" rel=\"noopener noreferrer\"><span class=\"screen-reader-text\"> (opens in new tab)</span></a>)"
msgstr ""

#: lib/menu_tools_livetraffic.php:78
msgid "Login and firewall activity will appear below."
msgstr ""

#: lib/menu_tools_livetraffic.php:82
msgid "Traffic logging mode: All traffic"
msgstr ""

#: lib/menu_tools_livetraffic.php:87
msgid "Regular traffic and security-related traffic will appear below."
msgstr ""

#: lib/menu_tools_livetraffic.php:100
#: lib/menu_tools_livetraffic.php:227
#: lib/menu_tools_livetraffic.php:458
#: lib/wordfenceClass.php:6327
msgid "Human"
msgstr ""

#: lib/menu_tools_livetraffic.php:101
#: lib/menu_tools_livetraffic.php:228
#: lib/menu_tools_livetraffic.php:458
#: lib/wordfenceClass.php:6289
msgid "Bot"
msgstr ""

#: lib/menu_tools_livetraffic.php:102
msgid "Warning"
msgstr ""

#: lib/menu_tools_livetraffic.php:103
#: lib/wfDiagnostic.php:926
#: lib/wordfenceClass.php:6281
msgid "Blocked"
msgstr ""

#: lib/menu_tools_livetraffic.php:117
msgid "Show Advanced Filters"
msgstr ""

#: lib/menu_tools_livetraffic.php:124
msgid "Expand All Results"
msgstr ""

#. translators: WordPress plugins directory.
#: lib/menu_tools_livetraffic.php:152
#: lib/wfDiagnostic.php:367
#: lib/wfDiagnostic.php:471
#: lib/wfDiagnostic.php:529
#: lib/wfDiagnostic.php:1026
#: lib/wfDiagnostic.php:1037
#: lib/wfDiagnostic.php:1039
#: lib/wfDiagnostic.php:1040
#: lib/wfDiagnostic.php:1053
#: lib/wfDiagnostic.php:1066
#: lib/wfDiagnostic.php:1067
#: lib/wfDiagnostic.php:1068
#: lib/wfDiagnostic.php:1069
#: lib/wfDiagnostic.php:1070
#: lib/wfDiagnostic.php:1071
#: lib/wfDiagnostic.php:1076
#: lib/wfDiagnostic.php:1077
#: lib/wfDiagnostic.php:1078
#: lib/wfDiagnostic.php:1079
#: lib/wfDiagnostic.php:1080
#: lib/wfDiagnostic.php:1084
#: lib/wfSupportController.php:425
#: views/onboarding/registration-prompt.php:51
#: views/reports/activity-report-email-inline.php:270
#: views/reports/activity-report.php:117
msgid "Yes"
msgstr ""

#: lib/menu_tools_livetraffic.php:153
#: lib/wfDiagnostic.php:367
#: lib/wfDiagnostic.php:471
#: lib/wfDiagnostic.php:529
#: lib/wfDiagnostic.php:1026
#: lib/wfDiagnostic.php:1053
#: lib/wfDiagnostic.php:1066
#: lib/wfDiagnostic.php:1067
#: lib/wfDiagnostic.php:1068
#: lib/wfDiagnostic.php:1069
#: lib/wfDiagnostic.php:1070
#: lib/wfDiagnostic.php:1071
#: lib/wfDiagnostic.php:1076
#: lib/wfDiagnostic.php:1077
#: lib/wfDiagnostic.php:1079
#: lib/wfDiagnostic.php:1080
#: lib/wfDiagnostic.php:1084
#: lib/wfSupportController.php:425
#: views/onboarding/registration-prompt.php:52
#: views/reports/activity-report-email-inline.php:270
#: views/reports/activity-report.php:117
msgid "No"
msgstr ""

#: lib/menu_tools_livetraffic.php:166
msgid "Add Filter"
msgstr ""

#: lib/menu_tools_livetraffic.php:173
msgid "From:"
msgstr ""

#: lib/menu_tools_livetraffic.php:176
#: lib/menu_tools_livetraffic.php:183
msgid "Clear"
msgstr ""

#: lib/menu_tools_livetraffic.php:180
msgid "To:"
msgstr ""

#: lib/menu_tools_livetraffic.php:187
msgid "Group By:"
msgstr ""

#: lib/menu_tools_livetraffic.php:212
msgid "An unknown location at IP"
msgstr ""

#: lib/menu_tools_livetraffic.php:217
#: lib/menu_tools_livetraffic.php:435
#: modules/login-security/views/email/login-verification.php:13
msgid "IP:"
msgstr ""

#: lib/menu_tools_livetraffic.php:226
#: views/scanner/issue-base.php:29
#: views/scanner/issue-base.php:39
msgid "Type:"
msgstr ""

#: lib/menu_tools_livetraffic.php:233
msgid "Username:"
msgstr ""

#: lib/menu_tools_livetraffic.php:239
msgid "HTTP Response Code:"
msgstr ""

#: lib/menu_tools_livetraffic.php:245
msgid "Firewall Response:"
msgstr ""

#: lib/menu_tools_livetraffic.php:256
msgid "Last Hit:"
msgstr ""

#. translators: Time ago.
#: lib/menu_tools_livetraffic.php:257
msgid "Last hit was %s ago."
msgstr ""

#: lib/menu_tools_livetraffic.php:263
#: lib/menu_tools_livetraffic.php:442
#: lib/menu_tools_livetraffic.php:465
msgid "Unblock IP"
msgstr ""

#: lib/menu_tools_livetraffic.php:266
#: lib/menu_tools_livetraffic.php:447
#: lib/menu_tools_livetraffic.php:471
msgid "Unblock range"
msgstr ""

#: lib/menu_tools_livetraffic.php:269
#: lib/menu_tools_livetraffic.php:453
#: lib/menu_tools_livetraffic.php:477
msgid "Block IP"
msgstr ""

#. translators: Number of HTTP requests.
#: lib/menu_tools_livetraffic.php:275
msgid "%s hits"
msgstr ""

#: lib/menu_tools_livetraffic.php:286
#: lib/wordfenceClass.php:6396
msgid "Type"
msgstr ""

#: lib/menu_tools_livetraffic.php:287
msgid "Location"
msgstr ""

#: lib/menu_tools_livetraffic.php:288
msgid "Page Visited"
msgstr ""

#: lib/menu_tools_livetraffic.php:289
#: lib/wf503.php:368
#: views/reports/activity-report-email-inline.php:294
msgid "Time"
msgstr ""

#: lib/menu_tools_livetraffic.php:290
msgid "IP Address"
msgstr ""

#: lib/menu_tools_livetraffic.php:291
#: lib/wordfenceClass.php:4276
#: views/blocking/blocking-create.php:193
msgid "Hostname"
msgstr ""

#: lib/menu_tools_livetraffic.php:292
#: lib/wfLicense.php:240
msgid "Response"
msgstr ""

#: lib/menu_tools_livetraffic.php:293
#: views/scanner/issue-wfPluginAbandoned.php:18
#: views/scanner/issue-wfPluginAbandoned.php:19
#: views/scanner/issue-wfPluginAbandoned.php:20
#: views/scanner/issue-wfPluginRemoved.php:17
#: views/scanner/issue-wfPluginRemoved.php:18
#: views/scanner/issue-wfPluginUpgrade.php:18
#: views/scanner/issue-wfPluginUpgrade.php:19
#: views/scanner/issue-wfPluginUpgrade.php:20
#: views/scanner/issue-wfPluginVulnerable.php:17
#: views/scanner/issue-wfPluginVulnerable.php:18
#: views/scanner/issue-wfThemeUpgrade.php:18
#: views/scanner/issue-wfThemeUpgrade.php:19
#: views/scanner/issue-wfUpgrade.php:17
msgid "View"
msgstr ""

#: lib/menu_tools_livetraffic.php:307
msgid "Unspecified"
msgstr ""

#: lib/menu_tools_livetraffic.php:341
msgid "Activity Detail"
msgstr ""

#. translators: 1. User agent. 2. IP address
#: lib/menu_tools_livetraffic.php:359
msgid "%1$s at an unknown location at IP %2$s"
msgstr ""

#. translators: IP address
#: lib/menu_tools_livetraffic.php:364
msgid "An unknown location at IP %s"
msgstr ""

#. translators: 1. User agent. 2. HTTP referer. 3. Server response.
#: lib/menu_tools_livetraffic.php:371
msgid "%1$s arrived from %2$s and %3$s"
msgstr ""

#. translators: 1. User agent. 2. HTTP referer. 3. Server response.
#: lib/menu_tools_livetraffic.php:376
msgid "%1$s left %2$s and %3$s"
msgstr ""

#. translators: User agent.
#: lib/menu_tools_livetraffic.php:382
msgid "%s tried to access a <span style=\"color: #F00;\">non-existent page</span>"
msgstr ""

#. translators: 1. User agent. 2. URL of page visited.
#: lib/menu_tools_livetraffic.php:388
msgid "%1$s visited %2$s"
msgstr ""

#. translators: 1. User agent. 2. URL of page visited.
#: lib/menu_tools_livetraffic.php:393
msgid "%1$s was redirected when visiting %2$s"
msgstr ""

#. translators: 1. User agent. 2. Firewall action (blocked, rate limited, etc). 3. Time ago.
#: lib/menu_tools_livetraffic.php:398
#: lib/menu_tools_livetraffic.php:403
msgid "%1$s was %2$s at %3$s"
msgstr ""

#. translators: 1. User agent. 2. WordPress username.
#: lib/menu_tools_livetraffic.php:409
msgid "%1$s logged in successfully as \"%2$s\"."
msgstr ""

#. translators: WordPress username.
#: lib/menu_tools_livetraffic.php:412
msgid "%s logged out successfully."
msgstr ""

#. translators: WordPress username.
#: lib/menu_tools_livetraffic.php:415
msgid "%s requested a password reset."
msgstr ""

#. translators: 1. User agent. 2. WordPress username.
#: lib/menu_tools_livetraffic.php:418
msgid "%1$s attempted a <span style=\"color: #F00;\">failed login</span> as \"%2$s\"."
msgstr ""

#. translators: 1. User agent. 2. WordPress username.
#: lib/menu_tools_livetraffic.php:421
msgid "%1$s attempted a <span style=\"color: #F00;\">failed login</span> using an invalid username \"%2$s\"."
msgstr ""

#. translators: WordPress username.
#: lib/menu_tools_livetraffic.php:424
msgid "%s changed their password."
msgstr ""

#: lib/menu_tools_livetraffic.php:458
msgid "Human/Bot:"
msgstr ""

#: lib/menu_tools_livetraffic.php:481
msgid "Run Whois"
msgstr ""

#: lib/menu_tools_livetraffic.php:484
msgid "See recent traffic"
msgstr ""

#: lib/menu_tools_livetraffic.php:484
msgid "Recent"
msgstr ""

#: lib/menu_tools_livetraffic.php:489
msgid "If this is a false positive, you can exclude this parameter from being filtered by the firewall"
msgstr ""

#: lib/menu_tools_livetraffic.php:490
msgid "Add Param to Firewall Allowlist"
msgstr ""

#: lib/menu_tools_livetraffic.php:508
msgid "No requests to report yet."
msgstr ""

#: lib/menu_tools_livetraffic.php:572
msgid "Live traffic defaults to a summary view of all security-related traffic. Details are viewable by clicking anywhere within the summary record. To switch to the expanded view, click the <strong>Expand All Records</strong> switch."
msgstr ""

#: lib/menu_tools_livetraffic.php:603
msgid "Live traffic now defaults to a summary view. Details are viewable by clicking anywhere within the summary record. To switch to the expanded view, click the <strong>Expand All Records</strong> switch. New installations will only log security-related traffic by default, though your previous setting has been preserved."
msgstr ""

#: lib/menu_tools_twoFactor.php:16
msgid "Learn more<span class=\"wf-hidden-xs\"> about Two-Factor Authentication</span>"
msgstr ""

#: lib/menu_tools_twoFactor.php:35
msgid "2FA Mode: Legacy"
msgstr ""

#: lib/menu_tools_twoFactor.php:35
msgid "Two-factor authentication is using legacy support, which enables SMS-based codes but is less compatible. An improved interface and use by non-administrators is available by activating the new login security module."
msgstr ""

#: lib/menu_tools_twoFactor.php:36
msgid "Switch to New 2FA"
msgstr ""

#: lib/menu_tools_twoFactor.php:42
#: views/tools/options-group-2fa.php:31
msgid "Take Login Security to the next level with Two-Factor Authentication"
msgstr ""

#: lib/menu_tools_twoFactor.php:43
#: views/tools/options-group-2fa.php:32
msgid "Used by banks, government agencies, and military worldwide, two-factor authentication is one of the most secure forms of remote system authentication available. With it enabled, an attacker needs to know your username, password, <em>and</em> have control of your phone to log into your site. Upgrade to Premium now to enable this powerful feature."
msgstr ""

#: lib/menu_tools_twoFactor.php:59
msgid "With Two-Factor Authentication enabled, an attacker needs to know your username, password <em>and</em> have control of your phone to log in to your site. We recommend you enable Two-Factor Authentication for all Administrator level accounts."
msgstr ""

#: lib/menu_tools_twoFactor.php:66
msgid "Are you sure you want to restore the default Two-Factor Authentication settings? This will undo any custom changes you have made to the options on this page. If you have configured any users to use two-factor authentication, they will not be changed."
msgstr ""

#: lib/menu_tools_twoFactor.php:78
msgid "<strong>Note:</strong> Two-Factor Authentication is disabled when the option \"Enable Brute Force Protection\" is off."
msgstr ""

#: lib/menu_tools_twoFactor.php:85
msgid "Enable Two-Factor Authentication"
msgstr ""

#: lib/menu_tools_twoFactor.php:94
msgid "Enter username to enable Two-Factor Authentication for"
msgstr ""

#: lib/menu_tools_twoFactor.php:104
msgid "Use authenticator app"
msgstr ""

#: lib/menu_tools_twoFactor.php:113
msgid "Send code to a phone number:"
msgstr ""

#: lib/menu_tools_twoFactor.php:115
msgid "+1 (000) 000 0000"
msgstr ""

#: lib/menu_tools_twoFactor.php:134
msgid "Two-Factor Authentication Users"
msgstr ""

#: lib/menu_tools_twoFactor.php:175
#: views/waf/option-whitelist.php:109
#: views/waf/options-group-whitelisted.php:86
#: views/waf/options-group-whitelisted.php:99
msgid "User"
msgstr ""

#: lib/menu_tools_twoFactor.php:176
msgid "Mode"
msgstr ""

#: lib/menu_tools_twoFactor.php:177
#: views/diagnostics/text.php:184
#: views/diagnostics/text.php:222
#: views/diagnostics/text.php:276
#: views/diagnostics/text.php:296
#: views/scanner/issue-base.php:52
#: views/scanner/issue-wafStatus.php:12
#: views/scanner/issue-wafStatus.php:21
msgid "Status"
msgstr ""

#: lib/menu_tools_twoFactor.php:178
#: views/waf/option-whitelist.php:102
msgid "Delete"
msgstr ""

#. translators: Phone number.
#: lib/menu_tools_twoFactor.php:186
msgid "Phone (%s)"
msgstr ""

#: lib/menu_tools_twoFactor.php:188
msgid "Authenticator"
msgstr ""

#: lib/menu_tools_twoFactor.php:192
msgid "Cellphone Sign-in Enabled"
msgstr ""

#: lib/menu_tools_twoFactor.php:196
msgid "Enter activation code:"
msgstr ""

#: lib/menu_tools_twoFactor.php:197
msgid "Code"
msgstr ""

#: lib/menu_tools_twoFactor.php:199
#: modules/login-security/views/manage/activate.php:44
msgid "Activate"
msgstr ""

#: lib/menu_tools_twoFactor.php:210
msgid "No users currently have cellphone sign-in enabled."
msgstr ""

#: lib/menu_tools_twoFactor.php:221
msgid "2FA Mode: Normal"
msgstr ""

#: lib/menu_tools_twoFactor.php:221
msgid "Legacy support for SMS-based two-factor authentication is being phased out, as it is less secure than using a modern authenticator app."
msgstr ""

#: lib/menu_tools_twoFactor.php:222
msgid "If you have a conflict with the new 2FA method, you can temporarily switch back to the Legacy version."
msgstr ""

#: lib/menu_tools_twoFactor.php:223
msgid "Revert to Legacy 2FA"
msgstr ""

#: lib/menu_tools_twoFactor.php:232
msgid "Migrate or switch to new two-factor authentication?"
msgstr ""

#: lib/menu_tools_twoFactor.php:233
msgid "Use the buttons below to migrate to the new two-factor authentication system or switch without migration. Migration will copy all existing authenticator-based user activations over to the new system while switching will use only users already set up in the new system. Existing SMS-based two-factor authentication activations must be disabled prior to migration."
msgstr ""

#: lib/menu_tools_twoFactor.php:234
msgid "Migrate"
msgstr ""

#: lib/menu_tools_twoFactor.php:235
msgid "Switch"
msgstr ""

#: lib/menu_tools_twoFactor.php:243
msgid "New Two-Factor Authentication Active"
msgstr ""

#: lib/menu_tools_twoFactor.php:244
msgid "Your site is now using the new login security module and two-factor authentication. Before logging out, we recommend testing your login in a different browser or a private/incognito window. If any plugins or your theme cause conflicts with logging in, you can revert to the old 2FA method."
msgstr ""

#: lib/menu_tools_twoFactor.php:245
msgid "Go To New 2FA"
msgstr ""

#: lib/menu_tools_twoFactor.php:253
msgid "Migration Cannot Proceed"
msgstr ""

#: lib/menu_tools_twoFactor.php:254
msgid "One or more users with two-factor authentication active are using SMS, which is unsupported in the new login security module. Please either deactivate two-factor authentication for those users or change them to use an authenticator app prior to migration."
msgstr ""

#: lib/menu_tools_twoFactor.php:262
msgid "Migration Failed"
msgstr ""

#: lib/menu_tools_twoFactor.php:263
msgid "Automatic migration of the 2FA-enabled accounts failed. Please verify that your server is reachable via the internet and try again."
msgstr ""

#: lib/menu_tools_twoFactor.php:271
msgid "Revert back to legacy two-factor authentication?"
msgstr ""

#: lib/menu_tools_twoFactor.php:272
msgid "All two-factor authentication settings and users' codes will revert to your older settings. If any users had set up two-factor authentication after the update, they will no longer have 2FA enabled until you switch to the new version again."
msgstr ""

#: lib/menu_tools_twoFactor.php:274
msgid "Revert"
msgstr ""

#: lib/menu_tools_twoFactor.php:282
msgid "Legacy Two-Factor Authentication Active"
msgstr ""

#: lib/menu_tools_twoFactor.php:283
msgid "Your site is now using the legacy two-factor authentication system."
msgstr ""

#. translators: URL to support page.
#: lib/menu_tools_whois.php:19
msgid "<a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"wf-help-link\">Learn more<span class=\"wf-hidden-xs\"> about Whois Lookup</span><span class=\"screen-reader-text\"> (opens in new tab)</span></a>"
msgstr ""

#: lib/menu_tools_whois.php:23
msgid "The whois service gives you a way to look up who owns an IP address or domain name that is visiting your website or is engaging in malicious activity on your website."
msgstr ""

#: lib/menu_tools_whois.php:36
msgid "How to block a network"
msgstr ""

#. translators: Hostname or IP address.
#: lib/menu_tools_whois.php:40
msgid "You've chosen to block the network that <span style=\"color: #F00;\">%s</span> is part of. We've marked the networks we found that this IP address belongs to in red below. Make sure you read all the WHOIS information so that you see all networks this IP belongs to. We recommend blocking the network with the lowest number of addresses. You may find this is listed at the end as part of the 'rWHOIS' query which contacts the local WHOIS server that is run by the network administrator."
msgstr ""

#: lib/menu_tools_whois.php:95
#: lib/wordfenceClass.php:6309
msgid "Enter a valid IP or domain"
msgstr ""

#: lib/menu_tools_whois.php:95
#: lib/wordfenceClass.php:6352
msgid "Please enter a valid IP address or domain name for your whois lookup."
msgstr ""

#: lib/menu_tools_whois.php:99
#: lib/wordfenceClass.php:6333
msgid "Loading..."
msgstr ""

#: lib/menu_tools_whois.php:104
#: lib/wordfenceClass.php:6339
msgid "Look up IP or Domain"
msgstr ""

#: lib/menu_wordfence_central.php:10
msgid "Testing initial communication with Wordfence Central."
msgstr ""

#: lib/menu_wordfence_central.php:11
msgid "Passing public key to Wordfence Central."
msgstr ""

#: lib/menu_wordfence_central.php:12
msgid "Testing public key authentication with Wordfence Central."
msgstr ""

#: lib/menu_wordfence_central.php:13
msgid "Testing that Wordfence Central is able to communicate with this site."
msgstr ""

#: lib/menu_wordfence_central.php:14
msgid "Retrieving access token using authorization grant."
msgstr ""

#: lib/menu_wordfence_central.php:15
msgid "Redirecting back to Wordfence Central."
msgstr ""

#. translators: 1. Email address. 2. Localized date.
#: lib/menu_wordfence_central.php:64
msgid "Activated - connected by %1$s on %2$s"
msgstr ""

#: lib/menu_wordfence_central.php:74
msgid "Wordfence Central Installation Process"
msgstr ""

#: lib/menu_wordfence_central.php:109
msgid "Disconnect Site"
msgstr ""

#: lib/menu_wordfence_central.php:115
msgid "To connect your site your site to Wordfence Central, use the link below:"
msgstr ""

#: lib/menu_wordfence_central.php:117
msgid "Connect Site"
msgstr ""

#: lib/rest-api/wfRESTAuthenticationController.php:67
msgid "Site is not connected to Wordfence Central."
msgstr ""

#: lib/rest-api/wfRESTAuthenticationController.php:76
#: lib/rest-api/wfRESTAuthenticationController.php:130
msgid "Data is invalid."
msgstr ""

#: lib/rest-api/wfRESTAuthenticationController.php:81
#: lib/rest-api/wfRESTAuthenticationController.php:135
msgid "Nonce format is invalid."
msgstr ""

#: lib/rest-api/wfRESTAuthenticationController.php:86
#: lib/rest-api/wfRESTAuthenticationController.php:91
msgid "Site ID is invalid."
msgstr ""

#: lib/rest-api/wfRESTAuthenticationController.php:102
#: lib/rest-api/wfRESTAuthenticationController.php:153
msgid "Nonce is invalid."
msgstr ""

#: lib/rest-api/wfRESTAuthenticationController.php:108
#: lib/rest-api/wfRESTAuthenticationController.php:159
msgid "Signature is invalid."
msgstr ""

#: lib/rest-api/wfRESTAuthenticationController.php:140
msgid "Email address is invalid."
msgstr ""

#: lib/rest-api/wfRESTAuthenticationController.php:179
msgid "Admin user with this email address not found."
msgstr ""

#: lib/rest-api/wfRESTBaseController.php:26
#: lib/rest-api/wfRESTBaseController.php:49
#: lib/rest-api/wfRESTBaseController.php:81
msgid "Token is invalid."
msgstr ""

#: lib/rest-api/wfRESTBaseController.php:64
msgid "Authorization header format is invalid."
msgstr ""

#: lib/rest-api/wfRESTConfigController.php:33
msgid "Specific config options to return."
msgstr ""

#: lib/rest-api/wfRESTConfigController.php:43
msgid "Specific config options to set."
msgstr ""

#. translators: Error message.
#: lib/rest-api/wfRESTConfigController.php:216
#: lib/rest-api/wfRESTConfigController.php:259
#: lib/wordfenceClass.php:4572
#: modules/login-security/classes/controller/ajax.php:393
msgid "An error occurred while saving the configuration: %s"
msgstr ""

#. translators: Error message.
#: lib/rest-api/wfRESTConfigController.php:227
#: lib/rest-api/wfRESTConfigController.php:270
#: lib/wordfenceClass.php:4581
#: modules/login-security/classes/controller/ajax.php:401
msgid "Errors occurred while saving the configuration: %s"
msgstr ""

#: lib/rest-api/wfRESTConfigController.php:232
#: lib/rest-api/wfRESTConfigController.php:275
#: lib/wordfenceClass.php:4586
#: modules/login-security/classes/controller/ajax.php:407
msgid "Errors occurred while saving the configuration."
msgstr ""

#. translators: Error message.
#: lib/rest-api/wfRESTConfigController.php:248
#: lib/rest-api/wfRESTConfigController.php:289
msgid "A server error occurred while saving the configuration: %s"
msgstr ""

#: lib/rest-api/wfRESTConfigController.php:294
msgid "Validation error: 'fields' parameter is empty or not an array."
msgstr ""

#: lib/rest-api/wfRESTScanController.php:16
msgid "Scan result group or all results."
msgstr ""

#: lib/rest-api/wfRESTScanController.php:21
msgid "Offset of scan results to return."
msgstr ""

#: lib/rest-api/wfRESTScanController.php:26
msgid "Number of scan results to return."
msgstr ""

#. translators: Localized date.
#: lib/rest-api/wfRESTScanController.php:84
msgid "Wordfence scan starting at %s from Wordfence Central"
msgstr ""

#: lib/rest-api/wfRESTScanController.php:127
msgid "Scan stop request received from Wordfence Central."
msgstr ""

#: lib/rest-api/wfRESTScanController.php:128
msgid "SUM_KILLED:A request was received to stop the previous scan from Wordfence Central."
msgstr ""

#: lib/sysinfo.php:5
msgid "Wordfence System Info"
msgstr ""

#: lib/viewFullActivityLog.php:12
msgid "Wordfence Full Activity Log"
msgstr ""

#: lib/wf503.php:5
msgid "Your access to this site has been limited"
msgstr ""

#: lib/wf503.php:351
msgid "Your access to this site has been limited by the site owner"
msgstr ""

#: lib/wf503.php:352
msgid "Your access to this service has been limited. (HTTP response code 503)"
msgstr ""

#: lib/wf503.php:353
#: lib/wfLockedOut.php:358
msgid "If you think you have been blocked in error, contact the owner of this site for assistance."
msgstr ""

#: lib/wf503.php:361
#: lib/wfLockedOut.php:370
msgid "Block Technical Data"
msgstr ""

#: lib/wf503.php:364
msgid "Block Reason"
msgstr ""

#: lib/wf503.php:384
#: lib/wfLockedOut.php:393
msgid "About Wordfence"
msgstr ""

#: lib/wf503.php:385
#: lib/wfLockedOut.php:394
msgid "Wordfence is a security plugin installed on over 5 million WordPress sites. The owner of this site is using Wordfence to manage access to their site."
msgstr ""

#: lib/wf503.php:386
#: lib/wfLockedOut.php:395
msgid "You can also read the documentation to learn about Wordfence's blocking tools, or visit wordfence.com to learn more about Wordfence."
msgstr ""

#. translators: Support URL.
#: lib/wf503.php:390
msgid "Click here to learn more: <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Documentation<span class=\"screen-reader-text\"> ("
msgstr ""

#. translators: Localized date.
#: lib/wf503.php:391
#: lib/wfLockedOut.php:400
msgid "Generated by Wordfence at %s"
msgstr ""

#. translators: Localized date.
#: lib/wf503.php:391
#: lib/wfLockedOut.php:400
msgid "Your computer's time:"
msgstr ""

#. translators: URL to the WordPress admin panel.
#: lib/wfActivityReport.php:508
#: lib/wfIssues.php:496
msgid "No longer an administrator for this site? <a href=\"%s\" target=\"_blank\">Click here</a> to stop receiving security alerts."
msgstr ""

#. translators: 1. Site URL. 2. Localized date.
#: lib/wfActivityReport.php:509
msgid "Wordfence activity for %1$s on %2$s"
msgstr ""

#: lib/wfActivityReport.php:585
#: lib/wordfenceClass.php:8780
msgid "Blocked because the IP is blocklisted"
msgstr ""

#. translators: Reason for firewall action.
#: lib/wfActivityReport.php:588
#: lib/wordfenceClass.php:8783
msgid "Blocked for %s"
msgstr ""

#. translators: 1. Reason for firewall action. 2. Input parameter. 2. Input parameter value.
#: lib/wfActivityReport.php:600
#: lib/wordfenceClass.php:8797
msgid "Blocked for %1$s in query string: %2$s = %3$s"
msgstr ""

#. translators: 1. Reason for firewall action. 2. Input parameter. 2. Input parameter value.
#: lib/wfActivityReport.php:603
#: lib/wordfenceClass.php:8802
msgid "Blocked for %1$s in POST body: %2$s = %3$s"
msgstr ""

#. translators: 1. Reason for firewall action. 2. Input parameter. 2. Input parameter value.
#: lib/wfActivityReport.php:606
#: lib/wordfenceClass.php:8807
msgid "Blocked for %1$s in cookie: %2$s = %3$s"
msgstr ""

#. translators: 1. Reason for firewall action. 2. Input parameter. 2. Input parameter value.
#: lib/wfActivityReport.php:609
#: lib/wordfenceClass.php:8812
msgid "Blocked for %1$s in file: %2$s = %3$s"
msgstr ""

#: lib/wfActivityReport.php:753
#: lib/wfDiagnostic.php:583
#: models/block/wfBlock.php:95
msgid "Unknown"
msgstr ""

#: lib/wfAdminNoticeQueue.php:193
#: lib/wfCentralAPI.php:904
#: lib/wfSupportController.php:433
#: lib/wordfenceClass.php:6302
#: lib/wordfenceClass.php:6557
#: lib/wordfenceClass.php:6592
#: lib/wordfenceClass.php:9377
msgid "Dismiss"
msgstr ""

#. translators: IP address.
#: lib/wfAlerts.php:29
msgid "Wordfence has blocked IP address %s."
msgstr ""

#. translators: Description of firewall action.
#: lib/wfAlerts.php:30
msgid "The reason is: \"%s\"."
msgstr ""

#. translators: Time until.
#: lib/wfAlerts.php:32
msgid "The duration of the block is %s."
msgstr ""

#. translators: IP address.
#: lib/wfAlerts.php:34
msgid "Blocking IP %s"
msgstr ""

#. translators: Software version.
#: lib/wfAlerts.php:53
msgid "Wordfence Upgraded to version %s"
msgstr ""

#. translators: Software version.
#: lib/wfAlerts.php:53
msgid "Your Wordfence installation has been upgraded to version %s"
msgstr ""

#: lib/wfAlerts.php:75
msgid "Wordfence WAF Deactivated"
msgstr ""

#. translators: WP username.
#: lib/wfAlerts.php:75
msgid "A user with username \"%s\" deactivated the Wordfence Web Application Firewall on your WordPress site."
msgstr ""

#: lib/wfAlerts.php:96
msgid "Wordfence Deactivated"
msgstr ""

#. translators: WP username.
#: lib/wfAlerts.php:96
msgid "A user with username \"%s\" deactivated Wordfence on your WordPress site."
msgstr ""

#: lib/wfAlerts.php:118
msgid "Password recovery attempted"
msgstr ""

#. translators: Email address.
#: lib/wfAlerts.php:118
msgid "Someone tried to recover the password for user with email address: %s"
msgstr ""

#. translators: 1. IP address. 2. Description of firewall action.
#: lib/wfAlerts.php:142
msgid "A user with IP address %1$s has been locked out from signing in or using the password recovery form for the following reason: %2$s."
msgstr ""

#. translators: Time until.
#: lib/wfAlerts.php:144
msgid "The duration of the lockout is %s."
msgstr ""

#: lib/wfAlerts.php:146
msgid "User locked out from signing in"
msgstr ""

#: lib/wfAlerts.php:179
msgid "Admin Login"
msgstr ""

#. translators: WP username.
#: lib/wfAlerts.php:179
msgid "A user with username \"%s\" who has administrator access signed in to your WordPress site."
msgstr ""

#: lib/wfAlerts.php:213
msgid "User login"
msgstr ""

#. translators: WP username.
#: lib/wfAlerts.php:213
msgid "A non-admin user with username \"%s\" signed in to your WordPress site."
msgstr ""

#: lib/wfAlerts.php:241
msgid "User login blocked for insecure password"
msgstr ""

#. translators: 1. WP username. 2. Reset password URL. 3. Support URL.
#: lib/wfAlerts.php:243
msgid "A user with username \"%1$s\" tried to sign in to your WordPress site. Access was denied because the password being used exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. Please change or reset the password (%2$s) to reactivate this account. Learn More: %3$s"
msgstr ""

#: lib/wfAlerts.php:260
msgid "Increased Attack Rate"
msgstr ""

#: lib/wfAPI.php:28
msgid "SSL is not supported by your web server and is required to use this function. Please ask your hosting provider or site admin to install cURL with openSSL to use this feature."
msgstr ""

#. translators: API call/action/endpoint.
#: lib/wfAPI.php:36
msgid "We received an empty data response from the Wordfence scanning servers when calling the '%s' function."
msgstr ""

#. translators: API call/action/endpoint.
#: lib/wfAPI.php:42
msgid "We received a data structure that is not the expected array when contacting the Wordfence scanning servers and calling the '%s' function."
msgstr ""

#: lib/wfAPI.php:80
msgid "The Wordfence license you're using does not match this site's address. Premium features are disabled."
msgstr ""

#. translators: API version.
#: lib/wfAPI.php:100
msgid "Calling Wordfence API v%s:"
msgstr ""

#. translators: Error message.
#: lib/wfAPI.php:126
msgid "There was an error connecting to the Wordfence scanning servers: %s"
msgstr ""

#: lib/wfAPI.php:128
msgid "There was an unknown error connecting to the Wordfence scanning servers."
msgstr ""

#. translators: HTTP status code.
#: lib/wfAPI.php:153
msgid "The Wordfence scanning servers are currently unavailable. This may be for maintenance or a temporary outage. If this still occurs in an hour, please contact support. [%s]"
msgstr ""

#: lib/wfBulkCountries.php:5
msgid "Andorra"
msgstr ""

#: lib/wfBulkCountries.php:6
msgid "United Arab Emirates"
msgstr ""

#: lib/wfBulkCountries.php:7
msgid "Afghanistan"
msgstr ""

#: lib/wfBulkCountries.php:8
msgid "Antigua and Barbuda"
msgstr ""

#: lib/wfBulkCountries.php:9
msgid "Anguilla"
msgstr ""

#: lib/wfBulkCountries.php:10
msgid "Albania"
msgstr ""

#: lib/wfBulkCountries.php:11
msgid "Armenia"
msgstr ""

#: lib/wfBulkCountries.php:12
msgid "Angola"
msgstr ""

#: lib/wfBulkCountries.php:13
msgid "Antarctica"
msgstr ""

#: lib/wfBulkCountries.php:14
msgid "Argentina"
msgstr ""

#: lib/wfBulkCountries.php:15
msgid "American Samoa"
msgstr ""

#: lib/wfBulkCountries.php:16
msgid "Austria"
msgstr ""

#: lib/wfBulkCountries.php:17
msgid "Australia"
msgstr ""

#: lib/wfBulkCountries.php:18
msgid "Aruba"
msgstr ""

#: lib/wfBulkCountries.php:19
msgid "Aland Islands"
msgstr ""

#: lib/wfBulkCountries.php:20
msgid "Azerbaijan"
msgstr ""

#: lib/wfBulkCountries.php:21
msgid "Bosnia and Herzegovina"
msgstr ""

#: lib/wfBulkCountries.php:22
msgid "Barbados"
msgstr ""

#: lib/wfBulkCountries.php:23
msgid "Bangladesh"
msgstr ""

#: lib/wfBulkCountries.php:24
msgid "Belgium"
msgstr ""

#: lib/wfBulkCountries.php:25
msgid "Burkina Faso"
msgstr ""

#: lib/wfBulkCountries.php:26
msgid "Bulgaria"
msgstr ""

#: lib/wfBulkCountries.php:27
msgid "Bahrain"
msgstr ""

#: lib/wfBulkCountries.php:28
msgid "Burundi"
msgstr ""

#: lib/wfBulkCountries.php:29
msgid "Benin"
msgstr ""

#: lib/wfBulkCountries.php:30
msgid "Saint Bartelemey"
msgstr ""

#: lib/wfBulkCountries.php:31
msgid "Bermuda"
msgstr ""

#: lib/wfBulkCountries.php:32
msgid "Brunei Darussalam"
msgstr ""

#: lib/wfBulkCountries.php:33
msgid "Bolivia"
msgstr ""

#: lib/wfBulkCountries.php:34
msgid "Bonaire, Saint Eustatius and Saba"
msgstr ""

#: lib/wfBulkCountries.php:35
msgid "Brazil"
msgstr ""

#: lib/wfBulkCountries.php:36
msgid "Bahamas"
msgstr ""

#: lib/wfBulkCountries.php:37
msgid "Bhutan"
msgstr ""

#: lib/wfBulkCountries.php:38
msgid "Bouvet Island"
msgstr ""

#: lib/wfBulkCountries.php:39
msgid "Botswana"
msgstr ""

#: lib/wfBulkCountries.php:40
msgid "Belarus"
msgstr ""

#: lib/wfBulkCountries.php:41
msgid "Belize"
msgstr ""

#: lib/wfBulkCountries.php:42
msgid "Canada"
msgstr ""

#: lib/wfBulkCountries.php:43
msgid "Cocos (Keeling) Islands"
msgstr ""

#: lib/wfBulkCountries.php:44
msgid "Congo, The Democratic Republic of the"
msgstr ""

#: lib/wfBulkCountries.php:45
msgid "Central African Republic"
msgstr ""

#: lib/wfBulkCountries.php:46
msgid "Congo"
msgstr ""

#: lib/wfBulkCountries.php:47
msgid "Switzerland"
msgstr ""

#: lib/wfBulkCountries.php:48
msgid "Cote dIvoire"
msgstr ""

#: lib/wfBulkCountries.php:49
msgid "Cook Islands"
msgstr ""

#: lib/wfBulkCountries.php:50
msgid "Chile"
msgstr ""

#: lib/wfBulkCountries.php:51
msgid "Cameroon"
msgstr ""

#: lib/wfBulkCountries.php:52
msgid "China"
msgstr ""

#: lib/wfBulkCountries.php:53
msgid "Colombia"
msgstr ""

#: lib/wfBulkCountries.php:54
msgid "Costa Rica"
msgstr ""

#: lib/wfBulkCountries.php:55
msgid "Cuba"
msgstr ""

#: lib/wfBulkCountries.php:56
msgid "Cape Verde"
msgstr ""

#: lib/wfBulkCountries.php:57
msgid "Curacao"
msgstr ""

#: lib/wfBulkCountries.php:58
msgid "Christmas Island"
msgstr ""

#: lib/wfBulkCountries.php:59
msgid "Cyprus"
msgstr ""

#: lib/wfBulkCountries.php:60
msgid "Czech Republic"
msgstr ""

#: lib/wfBulkCountries.php:61
msgid "Germany"
msgstr ""

#: lib/wfBulkCountries.php:62
msgid "Djibouti"
msgstr ""

#: lib/wfBulkCountries.php:63
msgid "Denmark"
msgstr ""

#: lib/wfBulkCountries.php:64
msgid "Dominica"
msgstr ""

#: lib/wfBulkCountries.php:65
msgid "Dominican Republic"
msgstr ""

#: lib/wfBulkCountries.php:66
msgid "Algeria"
msgstr ""

#: lib/wfBulkCountries.php:67
msgid "Ecuador"
msgstr ""

#: lib/wfBulkCountries.php:68
msgid "Estonia"
msgstr ""

#: lib/wfBulkCountries.php:69
msgid "Egypt"
msgstr ""

#: lib/wfBulkCountries.php:70
msgid "Western Sahara"
msgstr ""

#: lib/wfBulkCountries.php:71
msgid "Eritrea"
msgstr ""

#: lib/wfBulkCountries.php:72
msgid "Spain"
msgstr ""

#: lib/wfBulkCountries.php:73
msgid "Ethiopia"
msgstr ""

#: lib/wfBulkCountries.php:74
msgid "Europe"
msgstr ""

#: lib/wfBulkCountries.php:75
msgid "Finland"
msgstr ""

#: lib/wfBulkCountries.php:76
msgid "Fiji"
msgstr ""

#: lib/wfBulkCountries.php:77
msgid "Falkland Islands (Malvinas)"
msgstr ""

#: lib/wfBulkCountries.php:78
msgid "Micronesia, Federated States of"
msgstr ""

#: lib/wfBulkCountries.php:79
msgid "Faroe Islands"
msgstr ""

#: lib/wfBulkCountries.php:80
msgid "France"
msgstr ""

#: lib/wfBulkCountries.php:81
msgid "Gabon"
msgstr ""

#: lib/wfBulkCountries.php:82
msgid "United Kingdom"
msgstr ""

#: lib/wfBulkCountries.php:83
msgid "Grenada"
msgstr ""

#: lib/wfBulkCountries.php:84
msgid "Georgia"
msgstr ""

#: lib/wfBulkCountries.php:85
msgid "French Guiana"
msgstr ""

#: lib/wfBulkCountries.php:86
msgid "Guernsey"
msgstr ""

#: lib/wfBulkCountries.php:87
msgid "Ghana"
msgstr ""

#: lib/wfBulkCountries.php:88
msgid "Gibraltar"
msgstr ""

#: lib/wfBulkCountries.php:89
msgid "Greenland"
msgstr ""

#: lib/wfBulkCountries.php:90
msgid "Gambia"
msgstr ""

#: lib/wfBulkCountries.php:91
msgid "Guinea"
msgstr ""

#: lib/wfBulkCountries.php:92
msgid "Guadeloupe"
msgstr ""

#: lib/wfBulkCountries.php:93
msgid "Equatorial Guinea"
msgstr ""

#: lib/wfBulkCountries.php:94
msgid "Greece"
msgstr ""

#: lib/wfBulkCountries.php:95
msgid "South Georgia and the South Sandwich Islands"
msgstr ""

#: lib/wfBulkCountries.php:96
msgid "Guatemala"
msgstr ""

#: lib/wfBulkCountries.php:97
msgid "Guam"
msgstr ""

#: lib/wfBulkCountries.php:98
msgid "Guinea-Bissau"
msgstr ""

#: lib/wfBulkCountries.php:99
msgid "Guyana"
msgstr ""

#: lib/wfBulkCountries.php:100
msgid "Hong Kong"
msgstr ""

#: lib/wfBulkCountries.php:101
msgid "Heard Island and McDonald Islands"
msgstr ""

#: lib/wfBulkCountries.php:102
msgid "Honduras"
msgstr ""

#: lib/wfBulkCountries.php:103
msgid "Croatia"
msgstr ""

#: lib/wfBulkCountries.php:104
msgid "Haiti"
msgstr ""

#: lib/wfBulkCountries.php:105
msgid "Hungary"
msgstr ""

#: lib/wfBulkCountries.php:106
msgid "Indonesia"
msgstr ""

#: lib/wfBulkCountries.php:107
msgid "Ireland"
msgstr ""

#: lib/wfBulkCountries.php:108
msgid "Israel"
msgstr ""

#: lib/wfBulkCountries.php:109
msgid "Isle of Man"
msgstr ""

#: lib/wfBulkCountries.php:110
msgid "India"
msgstr ""

#: lib/wfBulkCountries.php:111
msgid "British Indian Ocean Territory"
msgstr ""

#: lib/wfBulkCountries.php:112
msgid "Iraq"
msgstr ""

#: lib/wfBulkCountries.php:113
msgid "Iran, Islamic Republic of"
msgstr ""

#: lib/wfBulkCountries.php:114
msgid "Iceland"
msgstr ""

#: lib/wfBulkCountries.php:115
msgid "Italy"
msgstr ""

#: lib/wfBulkCountries.php:116
msgid "Jersey"
msgstr ""

#: lib/wfBulkCountries.php:117
msgid "Jamaica"
msgstr ""

#: lib/wfBulkCountries.php:118
msgid "Jordan"
msgstr ""

#: lib/wfBulkCountries.php:119
msgid "Japan"
msgstr ""

#: lib/wfBulkCountries.php:120
msgid "Kenya"
msgstr ""

#: lib/wfBulkCountries.php:121
msgid "Kyrgyzstan"
msgstr ""

#: lib/wfBulkCountries.php:122
msgid "Cambodia"
msgstr ""

#: lib/wfBulkCountries.php:123
msgid "Kiribati"
msgstr ""

#: lib/wfBulkCountries.php:124
msgid "Comoros"
msgstr ""

#: lib/wfBulkCountries.php:125
msgid "Saint Kitts and Nevis"
msgstr ""

#: lib/wfBulkCountries.php:126
msgid "North Korea"
msgstr ""

#: lib/wfBulkCountries.php:127
msgid "South Korea"
msgstr ""

#: lib/wfBulkCountries.php:128
msgid "Kuwait"
msgstr ""

#: lib/wfBulkCountries.php:129
msgid "Cayman Islands"
msgstr ""

#: lib/wfBulkCountries.php:130
msgid "Kazakhstan"
msgstr ""

#: lib/wfBulkCountries.php:131
msgid "Lao Peoples Democratic Republic"
msgstr ""

#: lib/wfBulkCountries.php:132
msgid "Lebanon"
msgstr ""

#: lib/wfBulkCountries.php:133
msgid "Saint Lucia"
msgstr ""

#: lib/wfBulkCountries.php:134
msgid "Liechtenstein"
msgstr ""

#: lib/wfBulkCountries.php:135
msgid "Sri Lanka"
msgstr ""

#: lib/wfBulkCountries.php:136
msgid "Liberia"
msgstr ""

#: lib/wfBulkCountries.php:137
msgid "Lesotho"
msgstr ""

#: lib/wfBulkCountries.php:138
msgid "Lithuania"
msgstr ""

#: lib/wfBulkCountries.php:139
msgid "Luxembourg"
msgstr ""

#: lib/wfBulkCountries.php:140
msgid "Latvia"
msgstr ""

#: lib/wfBulkCountries.php:141
msgid "Libyan Arab Jamahiriya"
msgstr ""

#: lib/wfBulkCountries.php:142
msgid "Morocco"
msgstr ""

#: lib/wfBulkCountries.php:143
msgid "Monaco"
msgstr ""

#: lib/wfBulkCountries.php:144
msgid "Moldova, Republic of"
msgstr ""

#: lib/wfBulkCountries.php:145
msgid "Montenegro"
msgstr ""

#: lib/wfBulkCountries.php:146
msgid "Saint Martin"
msgstr ""

#: lib/wfBulkCountries.php:147
msgid "Madagascar"
msgstr ""

#: lib/wfBulkCountries.php:148
msgid "Marshall Islands"
msgstr ""

#: lib/wfBulkCountries.php:149
msgid "North Macedonia, Republic of"
msgstr ""

#: lib/wfBulkCountries.php:150
msgid "Mali"
msgstr ""

#: lib/wfBulkCountries.php:151
msgid "Myanmar"
msgstr ""

#: lib/wfBulkCountries.php:152
msgid "Mongolia"
msgstr ""

#: lib/wfBulkCountries.php:153
msgid "Macao"
msgstr ""

#: lib/wfBulkCountries.php:154
msgid "Northern Mariana Islands"
msgstr ""

#: lib/wfBulkCountries.php:155
msgid "Martinique"
msgstr ""

#: lib/wfBulkCountries.php:156
msgid "Mauritania"
msgstr ""

#: lib/wfBulkCountries.php:157
msgid "Montserrat"
msgstr ""

#: lib/wfBulkCountries.php:158
msgid "Malta"
msgstr ""

#: lib/wfBulkCountries.php:159
msgid "Mauritius"
msgstr ""

#: lib/wfBulkCountries.php:160
msgid "Maldives"
msgstr ""

#: lib/wfBulkCountries.php:161
msgid "Malawi"
msgstr ""

#: lib/wfBulkCountries.php:162
msgid "Mexico"
msgstr ""

#: lib/wfBulkCountries.php:163
msgid "Malaysia"
msgstr ""

#: lib/wfBulkCountries.php:164
msgid "Mozambique"
msgstr ""

#: lib/wfBulkCountries.php:165
msgid "Namibia"
msgstr ""

#: lib/wfBulkCountries.php:166
msgid "New Caledonia"
msgstr ""

#: lib/wfBulkCountries.php:167
msgid "Niger"
msgstr ""

#: lib/wfBulkCountries.php:168
msgid "Norfolk Island"
msgstr ""

#: lib/wfBulkCountries.php:169
msgid "Nigeria"
msgstr ""

#: lib/wfBulkCountries.php:170
msgid "Nicaragua"
msgstr ""

#: lib/wfBulkCountries.php:171
msgid "Netherlands"
msgstr ""

#: lib/wfBulkCountries.php:172
msgid "Norway"
msgstr ""

#: lib/wfBulkCountries.php:173
msgid "Nepal"
msgstr ""

#: lib/wfBulkCountries.php:174
msgid "Nauru"
msgstr ""

#: lib/wfBulkCountries.php:175
msgid "Niue"
msgstr ""

#: lib/wfBulkCountries.php:176
msgid "New Zealand"
msgstr ""

#: lib/wfBulkCountries.php:177
msgid "Oman"
msgstr ""

#: lib/wfBulkCountries.php:178
msgid "Panama"
msgstr ""

#: lib/wfBulkCountries.php:179
msgid "Peru"
msgstr ""

#: lib/wfBulkCountries.php:180
msgid "French Polynesia"
msgstr ""

#: lib/wfBulkCountries.php:181
msgid "Papua New Guinea"
msgstr ""

#: lib/wfBulkCountries.php:182
msgid "Philippines"
msgstr ""

#: lib/wfBulkCountries.php:183
msgid "Pakistan"
msgstr ""

#: lib/wfBulkCountries.php:184
msgid "Poland"
msgstr ""

#: lib/wfBulkCountries.php:185
msgid "Saint Pierre and Miquelon"
msgstr ""

#: lib/wfBulkCountries.php:186
msgid "Pitcairn"
msgstr ""

#: lib/wfBulkCountries.php:187
msgid "Puerto Rico"
msgstr ""

#: lib/wfBulkCountries.php:188
msgid "Palestinian Territory"
msgstr ""

#: lib/wfBulkCountries.php:189
msgid "Portugal"
msgstr ""

#: lib/wfBulkCountries.php:190
msgid "Palau"
msgstr ""

#: lib/wfBulkCountries.php:191
msgid "Paraguay"
msgstr ""

#: lib/wfBulkCountries.php:192
msgid "Qatar"
msgstr ""

#: lib/wfBulkCountries.php:193
msgid "Reunion"
msgstr ""

#: lib/wfBulkCountries.php:194
msgid "Romania"
msgstr ""

#: lib/wfBulkCountries.php:195
msgid "Serbia"
msgstr ""

#: lib/wfBulkCountries.php:196
msgid "Russian Federation"
msgstr ""

#: lib/wfBulkCountries.php:197
msgid "Rwanda"
msgstr ""

#: lib/wfBulkCountries.php:198
msgid "Saudi Arabia"
msgstr ""

#: lib/wfBulkCountries.php:199
msgid "Solomon Islands"
msgstr ""

#: lib/wfBulkCountries.php:200
msgid "Seychelles"
msgstr ""

#: lib/wfBulkCountries.php:201
msgid "Sudan"
msgstr ""

#: lib/wfBulkCountries.php:202
msgid "Sweden"
msgstr ""

#: lib/wfBulkCountries.php:203
msgid "Singapore"
msgstr ""

#: lib/wfBulkCountries.php:204
msgid "Saint Helena"
msgstr ""

#: lib/wfBulkCountries.php:205
msgid "Slovenia"
msgstr ""

#: lib/wfBulkCountries.php:206
msgid "Svalbard and Jan Mayen"
msgstr ""

#: lib/wfBulkCountries.php:207
msgid "Slovakia"
msgstr ""

#: lib/wfBulkCountries.php:208
msgid "Sierra Leone"
msgstr ""

#: lib/wfBulkCountries.php:209
msgid "San Marino"
msgstr ""

#: lib/wfBulkCountries.php:210
msgid "Senegal"
msgstr ""

#: lib/wfBulkCountries.php:211
msgid "Somalia"
msgstr ""

#: lib/wfBulkCountries.php:212
msgid "Suriname"
msgstr ""

#: lib/wfBulkCountries.php:213
msgid "Sao Tome and Principe"
msgstr ""

#: lib/wfBulkCountries.php:214
msgid "El Salvador"
msgstr ""

#: lib/wfBulkCountries.php:215
msgid "Sint Maarten"
msgstr ""

#: lib/wfBulkCountries.php:216
msgid "Syrian Arab Republic"
msgstr ""

#: lib/wfBulkCountries.php:217
msgid "Swaziland"
msgstr ""

#: lib/wfBulkCountries.php:218
msgid "Turks and Caicos Islands"
msgstr ""

#: lib/wfBulkCountries.php:219
msgid "Chad"
msgstr ""

#: lib/wfBulkCountries.php:220
msgid "French Southern Territories"
msgstr ""

#: lib/wfBulkCountries.php:221
msgid "Togo"
msgstr ""

#: lib/wfBulkCountries.php:222
msgid "Thailand"
msgstr ""

#: lib/wfBulkCountries.php:223
msgid "Tajikistan"
msgstr ""

#: lib/wfBulkCountries.php:224
msgid "Tokelau"
msgstr ""

#: lib/wfBulkCountries.php:225
msgid "Timor-Leste"
msgstr ""

#: lib/wfBulkCountries.php:226
msgid "Turkmenistan"
msgstr ""

#: lib/wfBulkCountries.php:227
msgid "Tunisia"
msgstr ""

#: lib/wfBulkCountries.php:228
msgid "Tonga"
msgstr ""

#: lib/wfBulkCountries.php:229
msgid "Turkey"
msgstr ""

#: lib/wfBulkCountries.php:230
msgid "Trinidad and Tobago"
msgstr ""

#: lib/wfBulkCountries.php:231
msgid "Tuvalu"
msgstr ""

#: lib/wfBulkCountries.php:232
msgid "Taiwan"
msgstr ""

#: lib/wfBulkCountries.php:233
msgid "Tanzania, United Republic of"
msgstr ""

#: lib/wfBulkCountries.php:234
msgid "Ukraine"
msgstr ""

#: lib/wfBulkCountries.php:235
msgid "Uganda"
msgstr ""

#: lib/wfBulkCountries.php:236
msgid "United States Minor Outlying Islands"
msgstr ""

#: lib/wfBulkCountries.php:237
msgid "United States"
msgstr ""

#: lib/wfBulkCountries.php:238
msgid "Uruguay"
msgstr ""

#: lib/wfBulkCountries.php:239
msgid "Uzbekistan"
msgstr ""

#: lib/wfBulkCountries.php:240
msgid "Holy See (Vatican City State)"
msgstr ""

#: lib/wfBulkCountries.php:241
msgid "Saint Vincent and the Grenadines"
msgstr ""

#: lib/wfBulkCountries.php:242
msgid "Venezuela"
msgstr ""

#: lib/wfBulkCountries.php:243
msgid "Virgin Islands, British"
msgstr ""

#: lib/wfBulkCountries.php:244
msgid "Virgin Islands, U.S."
msgstr ""

#: lib/wfBulkCountries.php:245
msgid "Vietnam"
msgstr ""

#: lib/wfBulkCountries.php:246
msgid "Vanuatu"
msgstr ""

#: lib/wfBulkCountries.php:247
msgid "Wallis and Futuna"
msgstr ""

#: lib/wfBulkCountries.php:248
msgid "Samoa"
msgstr ""

#: lib/wfBulkCountries.php:249
msgid "Kosovo"
msgstr ""

#: lib/wfBulkCountries.php:250
msgid "Yemen"
msgstr ""

#: lib/wfBulkCountries.php:251
msgid "Mayotte"
msgstr ""

#: lib/wfBulkCountries.php:252
msgid "South Africa"
msgstr ""

#: lib/wfBulkCountries.php:253
msgid "Zambia"
msgstr ""

#: lib/wfBulkCountries.php:254
msgid "Zimbabwe"
msgstr ""

#. translators: 1. HTTP status code. 2. Error message.
#: lib/wfCentralAPI.php:212
msgid "HTTP %1$d received from Wordfence Central: %2$s"
msgstr ""

#: lib/wfCentralAPI.php:268
msgid "Fetching token for Wordfence Central authentication due to configuration issue."
msgstr ""

#: lib/wfCentralAPI.php:277
#: lib/wfCentralAPI.php:339
msgid "Unable to authenticate with Wordfence Central."
msgstr ""

#: lib/wfCentralAPI.php:297
msgid "Wordfence Central site ID has not been created yet."
msgstr ""

#: lib/wfCentralAPI.php:301
msgid "Wordfence Central secret key has not been created yet."
msgstr ""

#: lib/wfCentralAPI.php:313
msgid "Invalid response received from Wordfence Central when fetching nonce."
msgstr ""

#: lib/wfCentralAPI.php:336
msgid "Invalid response received from Wordfence Central when fetching token."
msgstr ""

#: lib/wfCentralAPI.php:891
msgid "Your site is currently linked to Wordfence Central under a different site URL."
msgstr ""

#: lib/wfCentralAPI.php:893
msgid "This may cause duplicated scan issues if both sites are currently active and reporting and is generally caused by duplicating the database from one site to another (e.g., from a production site to staging). We recommend disconnecting this site only, which will leave the matching site still connected."
msgstr ""

#: lib/wfCentralAPI.php:895
msgid "If this is a single site with multiple domains or subdomains, you can dismiss this message."
msgstr ""

#: lib/wfCentralAPI.php:901
msgid "Disconnect All"
msgstr ""

#. translators: 1. Key in key-value store. 2. Value in key-value store.
#: lib/wfConfig.php:500
msgid "wfConfig::set() got an array as second param with key: %1$s and value: %2$s"
msgstr ""

#. translators: Key in key-value store.
#: lib/wfConfig.php:664
msgid "Error reassembling value for %s"
msgstr ""

#. translators: 1. Key in key-value store. 2. MySQL error number. 3. MySQL error message.
#: lib/wfConfig.php:758
#: lib/wfConfig.php:767
#: lib/wfConfig.php:774
#: lib/wfConfig.php:784
#: lib/wfConfig.php:791
msgid "Error writing value chunk for %1$s (MySQLi error: [%2$s] %3$s)"
msgstr ""

#. translators: Key in key-value store.
#: lib/wfConfig.php:803
msgid "Error writing value header for %s"
msgstr ""

#. translators: 1. Key in key-value store. 2. MySQL error number. 3. MySQL error message.
#: lib/wfConfig.php:816
#: lib/wfConfig.php:827
#: lib/wfConfig.php:837
msgid "Error writing value for %1$s (MySQLi error: [%2$s] %3$s)"
msgstr ""

#. translators: 1. Key in key-value store. 2. MySQL error number. 3. MySQL error message.
#: lib/wfConfig.php:844
msgid "Error finishing writing value for %1$s (MySQLi error: [%2$s] %3$s)"
msgstr ""

#. translators: Support URL.
#: lib/wfConfig.php:1018
msgid "Wordfence Upgrade not run. Please modify your .htaccess"
msgstr ""

#. translators: Support URL.
#: lib/wfConfig.php:1018
msgid ""
"To preserve the integrity of your website we are not running Wordfence auto-update.\n"
"You are running the LiteSpeed web server which has been known to cause a problem with Wordfence auto-update.\n"
"Please go to your website now and make a minor change to your .htaccess to fix this.\n"
"You can find out how to make this change at:\n"
"%s\n"
"\n"
"Alternatively you can disable auto-update on your website to stop receiving this message and upgrade Wordfence manually.\n"
""
msgstr ""

#: lib/wfConfig.php:1141
msgid "Unable to save the .htaccess file needed to disable script execution in the uploads directory. Please check your permissions on that directory."
msgstr ""

#: lib/wfConfig.php:1178
msgid "Unable to remove code execution protections applied to the .htaccess file in the uploads directory. Please check your permissions on that file."
msgstr ""

#: lib/wfConfig.php:1215
#: lib/wordfenceClass.php:7820
#: modules/login-security/classes/controller/settings.php:214
msgid "The grace period end time must be in the future."
msgstr ""

#: lib/wfConfig.php:1224
msgid "Unknown firewall mode."
msgstr ""

#: lib/wfConfig.php:1243
msgid "The following emails are invalid: "
msgstr ""

#. translators: Regular expression.
#: lib/wfConfig.php:1256
msgid "\"%s\" is not a valid regular expression."
msgstr ""

#: lib/wfConfig.php:1275
msgid "Please make sure you separate your IP addresses with commas. The following allowlisted IP addresses are invalid: "
msgstr ""

#: lib/wfConfig.php:1294
msgid "The following users you selected to ignore in live traffic reports are not valid on this system: "
msgstr ""

#: lib/wfConfig.php:1311
msgid "The following IPs you selected to ignore in live traffic reports are not valid: "
msgstr ""

#: lib/wfConfig.php:1328
msgid "The following IPs/ranges you selected to trust as proxies are not valid: "
msgstr ""

#: lib/wfConfig.php:1342
msgid "The selected trusted proxy preset is not valid: "
msgstr ""

#: lib/wfConfig.php:1353
msgid "An empty license key was entered."
msgstr ""

#: lib/wfConfig.php:1356
#: lib/wordfenceClass.php:4446
msgid "The license key entered is not in a valid format. It must contain only numbers and the letters A-F."
msgstr ""

#: lib/wfConfig.php:1368
msgid "A wildcard cannot be used to exclude all files from the scan."
msgstr ""

#: lib/wfConfig.php:1379
msgid "Invalid number of scan resume attempts specified: %d"
msgstr ""

#: lib/wfConfig.php:1833
#: lib/wfConfig.php:1855
msgid "The Wordfence server's response did not contain the expected elements."
msgstr ""

#: lib/wfConfig.php:1837
msgid "Your options have been saved, but you left your license key blank, so we tried to get you a free license key from the Wordfence servers. There was a problem fetching the free key: "
msgstr ""

#: lib/wfConfig.php:1859
msgid "Your options have been saved. However we noticed you changed your license key, and we tried to verify it with the Wordfence servers but received an error: "
msgstr ""

#: lib/wfConfig.php:1907
msgid "Your options have been saved. However we tried to verify your license key with the Wordfence servers and received an error: "
msgstr ""

#: lib/wfDashboard.php:184
msgid "Complex"
msgstr ""

#: lib/wfDashboard.php:189
msgid "Brute Force"
msgstr ""

#: lib/wfDashboard.php:194
msgid "Blocklist"
msgstr ""

#: lib/wfDeactivationOption.php:50
msgid "Keep all Wordfence tables and data"
msgstr ""

#: lib/wfDeactivationOption.php:51
msgid "Delete Wordfence tables and data, but keep Login Security tables and 2FA codes"
msgstr ""

#: lib/wfDeactivationOption.php:52
msgid "Delete Login Security tables and 2FA codes, but keep Wordfence tables and data"
msgstr ""

#: lib/wfDeactivationOption.php:53
msgid "Delete all Wordfence tables and data"
msgstr ""

#: lib/wfDiagnostic.php:61
msgid "General information about the Wordfence installation."
msgstr ""

#: lib/wfDiagnostic.php:63
msgid "Wordfence Version"
msgstr ""

#: lib/wfDiagnostic.php:64
msgid "GeoIP Version"
msgstr ""

#: lib/wfDiagnostic.php:65
msgid "Cron Status"
msgstr ""

#: lib/wfDiagnostic.php:69
msgid "Ability to read/write various files."
msgstr ""

#: lib/wfDiagnostic.php:71
msgid "Checking if web server can read from <code>~/plugins/wordfence</code>"
msgstr ""

#: lib/wfDiagnostic.php:72
msgid "Checking if web server can write to <code>~/plugins/wordfence</code>"
msgstr ""

#: lib/wfDiagnostic.php:73
msgid "Checking if web server can read from <code>~/wp-content/wflogs</code>"
msgstr ""

#: lib/wfDiagnostic.php:74
msgid "Checking if web server can write to <code>~/wp-content/wflogs</code>"
msgstr ""

#: lib/wfDiagnostic.php:78
msgid "Ability to save Wordfence settings to the database."
msgstr ""

#: lib/wfDiagnostic.php:80
msgid "Checking basic config reading/writing"
msgstr ""

#: lib/wfDiagnostic.php:81
msgid "Checking serialized config reading/writing"
msgstr ""

#: lib/wfDiagnostic.php:85
msgid "Current WAF configuration."
msgstr ""

#: lib/wfDiagnostic.php:87
msgid "WAF auto prepend active"
msgstr ""

#: lib/wfDiagnostic.php:88
msgid "Configured WAF storage engine (WFWAF_STORAGE_ENGINE)"
msgstr ""

#: lib/wfDiagnostic.php:89
msgid "Active WAF storage engine"
msgstr ""

#: lib/wfDiagnostic.php:90
msgid "WAF log path"
msgstr ""

#: lib/wfDiagnostic.php:91
msgid "WAF subdirectory installation"
msgstr ""

#: lib/wfDiagnostic.php:92
msgid "wordfence-waf.php path"
msgstr ""

#: lib/wfDiagnostic.php:93
msgid "WAF File Permissions"
msgstr ""

#: lib/wfDiagnostic.php:94
msgid "Recently removed wflogs files"
msgstr ""

#: lib/wfDiagnostic.php:95
msgid "WAF Loaded Successfully"
msgstr ""

#: lib/wfDiagnostic.php:96
msgid "WAF .htaccess contents"
msgstr ""

#: lib/wfDiagnostic.php:97
msgid "WAF .user.ini contents"
msgstr ""

#: lib/wfDiagnostic.php:98
msgid ".htaccess other auto prepend"
msgstr ""

#: lib/wfDiagnostic.php:99
msgid ".user.ini other auto prepend"
msgstr ""

#: lib/wfDiagnostic.php:103
msgid "Database version and privileges."
msgstr ""

#: lib/wfDiagnostic.php:105
msgid "Database Version"
msgstr ""

#: lib/wfDiagnostic.php:106
msgid "Checking if MySQL user has <code>DELETE</code> privilege"
msgstr ""

#: lib/wfDiagnostic.php:107
msgid "Checking if MySQL user has <code>INSERT</code> privilege"
msgstr ""

#: lib/wfDiagnostic.php:108
msgid "Checking if MySQL user has <code>UPDATE</code> privilege"
msgstr ""

#: lib/wfDiagnostic.php:109
msgid "Checking if MySQL user has <code>SELECT</code> privilege"
msgstr ""

#: lib/wfDiagnostic.php:110
msgid "Checking if MySQL user has <code>CREATE TABLE</code> privilege"
msgstr ""

#: lib/wfDiagnostic.php:111
msgid "Checking if MySQL user has <code>ALTER TABLE</code> privilege"
msgstr ""

#: lib/wfDiagnostic.php:112
msgid "Checking if MySQL user has <code>DROP</code> privilege"
msgstr ""

#: lib/wfDiagnostic.php:113
msgid "Checking if MySQL user has <code>TRUNCATE</code> privilege"
msgstr ""

#: lib/wfDiagnostic.php:117
msgid "PHP version, important PHP extensions."
msgstr ""

#. translators: Support URL.
#: lib/wfDiagnostic.php:119
msgid "PHP version >= PHP 5.6.20<br><em> (<a href=\"https://wordpress.org/about/requirements/\" target=\"_blank\" rel=\"noopener noreferrer\">Minimum version required by WordPress</a>)</em> <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"wfhelp\"><span class=\"screen-reader-text\"> (opens in new tab)</span></a>"
msgstr ""

#. translators: Support URL.
#: lib/wfDiagnostic.php:120
msgid "Process Owner"
msgstr ""

#: lib/wfDiagnostic.php:121
msgid "Checking for OpenSSL support"
msgstr ""

#: lib/wfDiagnostic.php:122
msgid "Checking OpenSSL version"
msgstr ""

#: lib/wfDiagnostic.php:123
msgid "Checking for cURL support"
msgstr ""

#: lib/wfDiagnostic.php:124
msgid "cURL Features Code"
msgstr ""

#: lib/wfDiagnostic.php:125
msgid "cURL Host"
msgstr ""

#: lib/wfDiagnostic.php:126
msgid "cURL Support Protocols"
msgstr ""

#: lib/wfDiagnostic.php:127
msgid "cURL SSL Version"
msgstr ""

#: lib/wfDiagnostic.php:128
msgid "cURL libz Version"
msgstr ""

#: lib/wfDiagnostic.php:129
msgid "Checking <code>display_errors</code><br><em> (<a href=\"http://php.net/manual/en/errorfunc.configuration.php#ini.display-errors\" target=\"_blank\" rel=\"noopener noreferrer\">Should be disabled on production servers<span class=\"screen-reader-text\"> (opens in new tab)</span></a>)</em>"
msgstr ""

#: lib/wfDiagnostic.php:133
msgid "Ability to connect to the Wordfence servers and your own site."
msgstr ""

#: lib/wfDiagnostic.php:135
msgid "Connecting to Wordfence servers (https)"
msgstr ""

#: lib/wfDiagnostic.php:136
msgid "Connecting back to this site"
msgstr ""

#: lib/wfDiagnostic.php:137
msgid "Connecting back to this site via IPv6 (not required; failure to connect may not be an issue on some sites) <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"wfhelp\"><span class=\"screen-reader-text\"> (opens in new tab)</span></a>"
msgstr ""

#: lib/wfDiagnostic.php:138
msgid "IP(s) used by this server"
msgstr ""

#: lib/wfDiagnostic.php:142
msgid "Server time accuracy and applied offsets."
msgstr ""

#: lib/wfDiagnostic.php:144
msgid "Wordfence Network Time"
msgstr ""

#: lib/wfDiagnostic.php:145
#: lib/wfDiagnostic.php:996
msgid "Server Time"
msgstr ""

#: lib/wfDiagnostic.php:146
msgid "Wordfence Network Time Offset"
msgstr ""

#: lib/wfDiagnostic.php:147
msgid "NTP Time Offset"
msgstr ""

#: lib/wfDiagnostic.php:148
msgid "NTP Status"
msgstr ""

#: lib/wfDiagnostic.php:149
msgid "TOTP Time Source"
msgstr ""

#: lib/wfDiagnostic.php:150
msgid "WordPress Time Zone"
msgstr ""

#. translators: Number of jobs.
#: lib/wfDiagnostic.php:207
msgid "%d Job Overdue"
msgid_plural "%d Jobs Overdue"
msgstr[0] ""
msgstr[1] ""

#. translators: Number of jobs.
#: lib/wfDiagnostic.php:207
msgid "Normal"
msgstr ""

#: lib/wfDiagnostic.php:212
#: lib/wfDiagnostic.php:446
#: lib/wfDiagnostic.php:507
#: lib/wfDiagnostic.php:1046
#: lib/wfDiagnostic.php:1073
#: lib/wfUpdateCheck.php:120
#: views/dashboard/option-howgetips.php:81
#: views/scanner/issue-base.php:118
msgid "None"
msgstr ""

#: lib/wfDiagnostic.php:226
#: lib/wfDiagnostic.php:229
msgid "No files readable"
msgstr ""

#. translators: File name.
#: lib/wfDiagnostic.php:241
#: lib/wfDiagnostic.php:277
msgid "File \"%s\" does not exist"
msgstr ""

#. translators: File path.
#: lib/wfDiagnostic.php:244
msgid "File \"%s\" is unreadable"
msgstr ""

#: lib/wfDiagnostic.php:262
#: lib/wfDiagnostic.php:265
msgid "No files writable"
msgstr ""

#. translators: File name.
#: lib/wfDiagnostic.php:280
msgid "File \"%s\" is unwritable"
msgstr ""

#: lib/wfDiagnostic.php:350
msgid "Basic config writing"
msgstr ""

#: lib/wfDiagnostic.php:362
msgid "Serialized config writing"
msgstr ""

#: lib/wfDiagnostic.php:372
#: lib/wfDiagnostic.php:390
msgid "(.htaccess not present)"
msgstr ""

#: lib/wfDiagnostic.php:375
#: lib/wfDiagnostic.php:393
msgid "(.htaccess not readable)"
msgstr ""

#: lib/wfDiagnostic.php:403
#: lib/wfDiagnostic.php:439
msgid "(not present)"
msgstr ""

#: lib/wfDiagnostic.php:408
#: lib/wfDiagnostic.php:426
msgid "(.user.ini not present)"
msgstr ""

#: lib/wfDiagnostic.php:411
#: lib/wfDiagnostic.php:429
msgid "(.user.ini not readable)"
msgstr ""

#: lib/wfDiagnostic.php:442
msgid "(default)"
msgstr ""

#: lib/wfDiagnostic.php:452
msgid "Unknown (mixed plugin version)"
msgstr ""

#. translators: Unix file permissions in octal (example 0777).
#: lib/wfDiagnostic.php:484
msgid "%s - using constant"
msgstr ""

#. translators: Unix file permissions in octal (example 0777).
#: lib/wfDiagnostic.php:497
msgid "%s - using template"
msgstr ""

#: lib/wfDiagnostic.php:501
msgid "0660 - using default"
msgstr ""

#: lib/wfDiagnostic.php:544
msgid "Unavailable"
msgstr ""

#: lib/wfDiagnostic.php:681
#: lib/wfDiagnostic.php:1028
#: lib/wfDiagnostic.php:1031
#: lib/wfDiagnostic.php:1032
#: views/waf/options-group-brute-force.php:42
#: views/waf/options-group-rate-limiting.php:42
msgid "On"
msgstr ""

#: lib/wfDiagnostic.php:681
#: lib/wfDiagnostic.php:1028
#: lib/wfDiagnostic.php:1031
#: lib/wfDiagnostic.php:1032
#: views/waf/options-group-brute-force.php:41
#: views/waf/options-group-rate-limiting.php:41
msgid "Off"
msgstr ""

#: lib/wfDiagnostic.php:708
#: lib/wfDiagnostic.php:711
msgid "wp_remote_post() test to noc1.wordfence.com failed! Response was: "
msgstr ""

#: lib/wfDiagnostic.php:712
msgid "This likely means that your hosting provider is blocking requests to noc1.wordfence.com or has set up a proxy that is not behaving itself."
msgstr ""

#: lib/wfDiagnostic.php:747
#: lib/wfDiagnostic.php:748
#: lib/wfDiagnostic.php:751
#: lib/wfDiagnostic.php:752
msgid "wp_remote_post() test back to this server failed! Response was: "
msgstr ""

#: lib/wfDiagnostic.php:754
#: lib/wfDiagnostic.php:755
msgid "Cloudflare appears to be blocking your site from connecting to itself."
msgstr ""

#: lib/wfDiagnostic.php:754
#: lib/wfDiagnostic.php:755
msgid "Get help with Cloudflare compatibility"
msgstr ""

#: lib/wfDiagnostic.php:757
#: lib/wfDiagnostic.php:758
msgid "This additional info may help you diagnose the issue. The response headers we received were:"
msgstr ""

#. translators: error message from failed request
#: lib/wfDiagnostic.php:786
#: lib/wfDiagnostic.php:788
msgid "This likely indicates that the server either does not support IPv6 or does not have an IPv6 address assigned or associated with the domain. Original error message: %s"
msgstr ""

#: lib/wfDiagnostic.php:793
msgid "IPv6 DNS resolution failed"
msgstr ""

#: lib/wfDiagnostic.php:803
msgid "This diagnostic is unavailable as cURL appears to be supported, but was not used by WordPress for this request"
msgstr ""

#: lib/wfDiagnostic.php:809
msgid "This diagnostic requires cURL"
msgstr ""

#. translators: PHP super global key.
#: lib/wfDiagnostic.php:857
msgid "We cannot read $_SERVER[%s]"
msgstr ""

#: lib/wfDiagnostic.php:869
msgid "Should be: "
msgstr ""

#: lib/wfDiagnostic.php:950
msgid "Disabled "
msgstr ""

#: lib/wfDiagnostic.php:952
msgid "(WORDFENCE_LS_DISABLE_NTP)"
msgstr ""

#: lib/wfDiagnostic.php:955
msgid "(failures exceeded limit)"
msgstr ""

#: lib/wfDiagnostic.php:958
msgid "(settings)"
msgstr ""

#: lib/wfDiagnostic.php:965
msgid " (%d of %d attempts remaining)"
msgstr ""

#: lib/wfDiagnostic.php:982
#: modules/login-security/views/options/option-ntp.php:8
msgid "NTP"
msgstr ""

#: lib/wfDiagnostic.php:1026
msgid "Return value of is_multisite()"
msgstr ""

#: lib/wfDiagnostic.php:1027
msgid "WordPress base path"
msgstr ""

#: lib/wfDiagnostic.php:1028
msgid "WordPress debug mode"
msgstr ""

#: lib/wfDiagnostic.php:1029
msgid "WordPress error logging override"
msgstr ""

#: lib/wfDiagnostic.php:1030
msgid "WordPress error display override"
msgstr ""

#: lib/wfDiagnostic.php:1031
msgid "WordPress script debug mode"
msgstr ""

#: lib/wfDiagnostic.php:1032
msgid "WordPress query debug mode"
msgstr ""

#: lib/wfDiagnostic.php:1033
msgid "Database character set"
msgstr ""

#: lib/wfDiagnostic.php:1034
msgid "Database collation"
msgstr ""

#: lib/wfDiagnostic.php:1035
msgid "Explicitly set site URL"
msgstr ""

#: lib/wfDiagnostic.php:1036
msgid "Explicitly set blog URL"
msgstr ""

#: lib/wfDiagnostic.php:1037
msgid "\"wp-content\" folder is in default location"
msgstr ""

#. translators: WordPress content directory.
#. translators: WordPress plugins directory.
#. translators: WordPress languages directory.
#: lib/wfDiagnostic.php:1037
#: lib/wfDiagnostic.php:1039
#: lib/wfDiagnostic.php:1040
msgid "No: %s"
msgstr ""

#. translators: WordPress content directory.
#: lib/wfDiagnostic.php:1038
msgid "URL to the \"wp-content\" folder"
msgstr ""

#: lib/wfDiagnostic.php:1039
msgid "\"plugins\" folder is in default location"
msgstr ""

#. translators: WordPress plugins directory.
#: lib/wfDiagnostic.php:1040
msgid "\"languages\" folder is in default location"
msgstr ""

#. translators: WordPress languages directory.
#: lib/wfDiagnostic.php:1041
msgid "Language choice"
msgstr ""

#: lib/wfDiagnostic.php:1042
msgid "Custom upload folder location"
msgstr ""

#: lib/wfDiagnostic.php:1043
msgid "Theme template folder override"
msgstr ""

#. translators: WordPress theme template directory.
#. translators: WordPress theme stylesheet directory.
#: lib/wfDiagnostic.php:1043
#: lib/wfDiagnostic.php:1044
msgid "Overridden: %s"
msgstr ""

#. translators: WordPress theme template directory.
#: lib/wfDiagnostic.php:1044
msgid "Theme stylesheet folder override"
msgstr ""

#. translators: WordPress theme stylesheet directory.
#: lib/wfDiagnostic.php:1045
msgid "Post editing automatic saving interval"
msgstr ""

#: lib/wfDiagnostic.php:1046
msgid "Post revisions saved by WordPress"
msgstr ""

#: lib/wfDiagnostic.php:1046
#: lib/wfDiagnostic.php:1092
#: views/waf/options-group-rate-limiting.php:67
msgid "Unlimited"
msgstr ""

#: lib/wfDiagnostic.php:1047
msgid "WordPress cookie domain"
msgstr ""

#: lib/wfDiagnostic.php:1048
msgid "WordPress cookie path"
msgstr ""

#: lib/wfDiagnostic.php:1049
msgid "WordPress site cookie path"
msgstr ""

#: lib/wfDiagnostic.php:1050
msgid "WordPress admin cookie path"
msgstr ""

#: lib/wfDiagnostic.php:1051
msgid "WordPress plugins cookie path"
msgstr ""

#: lib/wfDiagnostic.php:1052
msgid "URL redirected to if the visitor tries to access a nonexistent blog"
msgstr ""

#: lib/wfDiagnostic.php:1053
msgid "Concatenate JavaScript files"
msgstr ""

#: lib/wfDiagnostic.php:1054
msgid "WordPress memory limit"
msgstr ""

#: lib/wfDiagnostic.php:1055
msgid "Administrative memory limit"
msgstr ""

#: lib/wfDiagnostic.php:1056
msgid "Built-in caching"
msgstr ""

#: lib/wfDiagnostic.php:1057
msgid "Custom \"users\" table"
msgstr ""

#. translators: WordPress custom user table.
#. translators: WordPress custom user meta table.
#: lib/wfDiagnostic.php:1057
#: lib/wfDiagnostic.php:1058
msgid "Set: %s"
msgstr ""

#. translators: WordPress custom user table.
#: lib/wfDiagnostic.php:1058
msgid "Custom \"usermeta\" table"
msgstr ""

#. translators: WordPress custom user meta table.
#: lib/wfDiagnostic.php:1059
msgid "Overridden permissions for a new folder"
msgstr ""

#: lib/wfDiagnostic.php:1060
msgid "Overridden permissions for a new file"
msgstr ""

#: lib/wfDiagnostic.php:1061
msgid "Alternate WP cron"
msgstr ""

#: lib/wfDiagnostic.php:1062
msgid "WP cron status"
msgstr ""

#: lib/wfDiagnostic.php:1062
msgid "Cron is disabled"
msgstr ""

#: lib/wfDiagnostic.php:1062
msgid "Cron is enabled"
msgstr ""

#: lib/wfDiagnostic.php:1063
msgid "Cron running frequency lock"
msgstr ""

#: lib/wfDiagnostic.php:1064
msgid "Interval the trash is automatically emptied at in days"
msgstr ""

#: lib/wfDiagnostic.php:1064
#: lib/wordfenceClass.php:4294
msgid "Never"
msgstr ""

#: lib/wfDiagnostic.php:1065
msgid "Automatic database repair"
msgstr ""

#: lib/wfDiagnostic.php:1066
msgid "Do not upgrade global tables"
msgstr ""

#: lib/wfDiagnostic.php:1067
msgid "Disallow plugin/theme editing"
msgstr ""

#: lib/wfDiagnostic.php:1068
msgid "Disallow plugin/theme update and installation"
msgstr ""

#: lib/wfDiagnostic.php:1069
msgid "Overwrite image edits when restoring the original"
msgstr ""

#: lib/wfDiagnostic.php:1070
msgid "Force SSL for administrative logins"
msgstr ""

#: lib/wfDiagnostic.php:1071
msgid "Block external URL requests"
msgstr ""

#: lib/wfDiagnostic.php:1072
msgid "Allowlisted hosts"
msgstr ""

#: lib/wfDiagnostic.php:1073
msgid "Automatic WP Core updates"
msgstr ""

#: lib/wfDiagnostic.php:1073
msgid "Everything"
msgstr ""

#: lib/wfDiagnostic.php:1073
msgid "Default"
msgstr ""

#: lib/wfDiagnostic.php:1074
msgid "Hostname for a proxy server"
msgstr ""

#: lib/wfDiagnostic.php:1075
msgid "Port for a proxy server"
msgstr ""

#: lib/wfDiagnostic.php:1076
msgid "Multisite enabled"
msgstr ""

#: lib/wfDiagnostic.php:1077
msgid "Multisite/network ability enabled"
msgstr ""

#: lib/wfDiagnostic.php:1078
msgid "Multisite enabled, WordPress will load the /wp-content/sunrise.php file"
msgstr ""

#: lib/wfDiagnostic.php:1079
msgid "Multisite enabled, subdomain installation constant"
msgstr ""

#: lib/wfDiagnostic.php:1080
msgid "Multisite enabled, Older subdomain installation constant"
msgstr ""

#: lib/wfDiagnostic.php:1081
msgid "Defines the multisite domain for the current site"
msgstr ""

#: lib/wfDiagnostic.php:1082
msgid "Defines the multisite path for the current site"
msgstr ""

#: lib/wfDiagnostic.php:1083
msgid "Defines the multisite database ID for the current site"
msgstr ""

#: lib/wfDiagnostic.php:1084
msgid "Disable the fatal error handler"
msgstr ""

#: lib/wfDiagnostic.php:1085
msgid "Disables automatic updates"
msgstr ""

#: lib/wfDiagnostic.php:1085
msgid "Automatic updates disabled"
msgstr ""

#: lib/wfDiagnostic.php:1085
msgid "Automatic updates enabled"
msgstr ""

#. translators: Number of HTTP requests.
#: lib/wfDiagnostic.php:1093
#: lib/wfDiagnostic.php:1094
#: lib/wfDiagnostic.php:1095
#: lib/wfDiagnostic.php:1096
#: lib/wfDiagnostic.php:1097
#: lib/wfDiagnostic.php:1098
#: lib/wfDiagnostic.php:1099
#: lib/wfDiagnostic.php:1100
#: lib/wfDiagnostic.php:1101
#: lib/wfDiagnostic.php:1102
#: lib/wfDiagnostic.php:1103
#: lib/wfDiagnostic.php:1104
#: lib/wfDiagnostic.php:1105
#: lib/wfDiagnostic.php:1106
#: views/waf/options-group-rate-limiting.php:68
#: views/waf/options-group-rate-limiting.php:69
#: views/waf/options-group-rate-limiting.php:70
#: views/waf/options-group-rate-limiting.php:71
#: views/waf/options-group-rate-limiting.php:72
#: views/waf/options-group-rate-limiting.php:73
#: views/waf/options-group-rate-limiting.php:74
#: views/waf/options-group-rate-limiting.php:75
#: views/waf/options-group-rate-limiting.php:76
#: views/waf/options-group-rate-limiting.php:77
#: views/waf/options-group-rate-limiting.php:78
#: views/waf/options-group-rate-limiting.php:79
#: views/waf/options-group-rate-limiting.php:80
#: views/waf/options-group-rate-limiting.php:81
msgid "%d per minute"
msgstr ""

#: lib/wfDiagnostic.php:1109
#: views/waf/options-group-rate-limiting.php:84
msgid "throttle it"
msgstr ""

#: lib/wfDiagnostic.php:1110
#: views/waf/options-group-rate-limiting.php:85
msgid "block it"
msgstr ""

#: lib/wfDiagnostic.php:1123
msgid "Scanner"
msgstr ""

#: lib/wfDiagnostic.php:1126
#: views/scanner/options-group-general.php:33
msgid "Check if this website is being \"Spamvertised\""
msgstr ""

#: lib/wfDiagnostic.php:1152
#: views/scanner/options-group-performance.php:36
msgid "Maximum execution time for each scan stage "
msgstr ""

#: lib/wfDiagnostic.php:1153
#: views/scanner/options-group-advanced.php:35
msgid "Exclude files from scan that match these wildcard patterns (one per line)"
msgstr ""

#: lib/wfDiagnostic.php:1153
#: lib/wfDiagnostic.php:1154
#: lib/wfDiagnostic.php:1172
#: lib/wfDiagnostic.php:1180
#: lib/wfDiagnostic.php:1209
#: lib/wfDiagnostic.php:1211
#: lib/wfDiagnostic.php:1212
#: lib/wfDiagnostic.php:1220
msgid "(empty)"
msgstr ""

#: lib/wfDiagnostic.php:1154
#: views/scanner/options-group-advanced.php:46
msgid "Additional scan signatures (one per line)"
msgstr ""

#: lib/wfDiagnostic.php:1163
msgid "Enable Wordfence translations"
msgstr ""

#: lib/wfDiagnostic.php:1173
#: views/waf/options-group-brute-force.php:153
msgid "For admins only"
msgstr ""

#: lib/wfDiagnostic.php:1173
#: views/waf/options-group-brute-force.php:153
msgid "For all users with \"publish posts\" capability"
msgstr ""

#: lib/wfDiagnostic.php:1173
#: lib/wfDiagnostic.php:1174
#: lib/wfDiagnostic.php:1187
#: lib/wfDiagnostic.php:1189
#: lib/wfDiagnostic.php:1190
#: lib/wfDiagnostic.php:1192
#: lib/wfDiagnostic.php:1193
#: lib/wfDiagnostic.php:1195
#: lib/wfDiagnostic.php:1196
#: lib/wfDiagnostic.php:1198
#: lib/wfDiagnostic.php:1199
#: lib/wfDiagnostic.php:1201
#: lib/wfDiagnostic.php:1202
#: lib/wfDiagnostic.php:1208
msgid "(unknown)"
msgstr ""

#: lib/wfDiagnostic.php:1174
#: views/waf/options-group-brute-force.php:176
msgid "Force admins and publishers to use strong passwords (recommended)"
msgstr ""

#: lib/wfDiagnostic.php:1174
#: views/waf/options-group-brute-force.php:176
msgid "Force all members to use strong passwords"
msgstr ""

#: lib/wfDiagnostic.php:1176
#: views/waf/options-group-brute-force.php:202
msgid "Prevent users registering 'admin' username if it doesn't exist"
msgstr ""

#: lib/wfDiagnostic.php:1177
#: views/waf/options-group-brute-force.php:214
msgid "Prevent discovery of usernames through '/?author=N' scans, the oEmbed API, the WordPress REST API, and WordPress XML Sitemaps"
msgstr ""

#: lib/wfDiagnostic.php:1187
#: views/waf/options-group-rate-limiting.php:55
msgid "Verified Google crawlers will not be rate-limited"
msgstr ""

#: lib/wfDiagnostic.php:1187
#: views/waf/options-group-rate-limiting.php:56
msgid "Anyone claiming to be Google will not be rate-limited"
msgstr ""

#: lib/wfDiagnostic.php:1187
#: views/waf/options-group-rate-limiting.php:57
msgid "Treat Google like any other Crawler"
msgstr ""

#: lib/wfDiagnostic.php:1206
#: views/blocking/blocking-create.php:66
msgid "Country Blocking"
msgstr ""

#: lib/wfDiagnostic.php:1207
#: views/blocking/options-group-advanced-country.php:39
msgid "What to do when we block someone"
msgstr ""

#: lib/wfDiagnostic.php:1208
msgid "Show the standard Wordfence blocked message"
msgstr ""

#: lib/wfDiagnostic.php:1208
msgid "Redirect to the URL below"
msgstr ""

#: lib/wfDiagnostic.php:1209
#: views/blocking/options-group-advanced-country.php:49
msgid "URL to redirect blocked users to"
msgstr ""

#: lib/wfDiagnostic.php:1211
#: views/blocking/option-bypass-redirect.php:8
msgid "Bypass Redirect"
msgstr ""

#: lib/wfDiagnostic.php:1212
#: views/blocking/option-bypass-cookie.php:8
msgid "Bypass Cookie"
msgstr ""

#: lib/wfDiagnostic.php:1218
msgid "Connected"
msgstr ""

#: lib/wfDiagnostic.php:1218
#: lib/wfDiagnostic.php:1221
#: lib/wfDiagnostic.php:1223
#: lib/wfDiagnostic.php:1224
msgid "true"
msgstr ""

#: lib/wfDiagnostic.php:1218
#: lib/wfDiagnostic.php:1221
#: lib/wfDiagnostic.php:1223
#: lib/wfDiagnostic.php:1224
msgid "false"
msgstr ""

#: lib/wfDiagnostic.php:1219
msgid "Connect Timestamp"
msgstr ""

#: lib/wfDiagnostic.php:1220
msgid "Site ID"
msgstr ""

#: lib/wfDiagnostic.php:1221
msgid "Disconnected"
msgstr ""

#: lib/wfDiagnostic.php:1222
msgid "Disconnect Timestamp"
msgstr ""

#: lib/wfDiagnostic.php:1223
msgid "Configuration Issue"
msgstr ""

#: lib/wfDiagnostic.php:1224
msgid "Plugin Alerting Disabled"
msgstr ""

#: lib/wfImportExportController.php:43
#: lib/wfImportExportController.php:50
msgid "An error occurred: "
msgstr ""

#: lib/wfImportExportController.php:46
msgid "Invalid response: "
msgstr ""

#: lib/wfImportExportController.php:62
msgid "An error occurred: Invalid options format received."
msgstr ""

#. translators: Error message.
#: lib/wfImportExportController.php:107
#: lib/wfImportExportController.php:114
msgid "An error occurred: %s"
msgstr ""

#. translators: Error message.
#: lib/wfImportExportController.php:110
msgid "Invalid response: %s"
msgstr ""

#: lib/wfLicense.php:238
msgid "Wordfence Care"
msgstr ""

#: lib/wfLicense.php:238
msgid "Care"
msgstr ""

#: lib/wfLicense.php:240
msgid "Wordfence Response"
msgstr ""

#: lib/wfLicense.php:243
msgid "Wordfence Premium"
msgstr ""

#: lib/wfLicense.php:246
msgid "Wordfence Free"
msgstr ""

#: lib/wfLicense.php:246
msgid "Free"
msgstr ""

#: lib/wfLockedOut.php:10
msgid "You are temporarily locked out"
msgstr ""

#: lib/wfLockedOut.php:356
msgid "Your access to this site has been temporarily limited by the site owner"
msgstr ""

#: lib/wfLockedOut.php:357
msgid "Your access to this service has been temporarily limited. Please try again in a few minutes. (HTTP response code 503)"
msgstr ""

#: lib/wfLockedOut.php:365
msgid "Return to the site home page"
msgstr ""

#: lib/wfLockedOut.php:366
msgid "Attempt to return to the admin login page (you may still be locked out)"
msgstr ""

#: lib/wfLockedOut.php:373
msgid "Block Reason:"
msgstr ""

#: lib/wfLockedOut.php:374
msgid "You have been temporarily locked out of this system. This means that you will not be able to log in for a while."
msgstr ""

#: lib/wfLockedOut.php:399
msgid "Click here to learn more: <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Documentation<span class=\"screen-reader-text\"> (opens in new tab)</span></a>"
msgstr ""

#: lib/wfLog.php:216
msgid "Exceeded the maximum global requests per minute for crawlers or humans."
msgstr ""

#: lib/wfLog.php:219
msgid "Exceeded the maximum number of requests per minute for crawlers."
msgstr ""

#: lib/wfLog.php:222
msgid "Exceeded the maximum number of page not found errors per minute for a crawler."
msgstr ""

#: lib/wfLog.php:225
msgid "Exceeded the maximum number of page requests per minute for humans."
msgstr ""

#: lib/wfLog.php:228
msgid "Exceeded the maximum number of page not found errors per minute for humans."
msgstr ""

#. translators: Error message.
#: lib/wfLog.php:309
msgid "Invalid log type to wfLog: %s"
msgstr ""

#. translators: Error message.
#: lib/wfLog.php:343
msgid "getHits got invalid hitType: %s"
msgstr ""

#: lib/wfLog.php:353
msgid "UA/Hostname/Referrer/IP Range not allowed"
msgstr ""

#: lib/wfLog.php:566
msgid "UA/Referrer/IP Range not allowed"
msgstr ""

#: lib/wfLog.php:567
msgid "Advanced blocking in effect."
msgstr ""

#: lib/wfLog.php:579
msgid "redirected to bypass URL"
msgstr ""

#. translators: URL
#: lib/wfLog.php:593
msgid "blocked access via country blocking and redirected to URL (%s)"
msgstr ""

#: lib/wfLog.php:608
#: models/block/wfBlock.php:1452
msgid "blocked access via country blocking"
msgstr ""

#: lib/wfLog.php:611
#: models/block/wfBlock.php:1455
#: waf/wfWAFIPBlocksController.php:76
msgid "Access from your area has been temporarily limited for security reasons"
msgstr ""

#: lib/wfLog.php:626
#: lib/wordfenceClass.php:6340
#: waf/wfWAFIPBlocksController.php:102
msgid "Manual block by administrator"
msgstr ""

#. translators: 1. IP address. 2. Description of firewall action.
#: lib/wfLog.php:654
msgid "Blocking IP %1$s. %2$s"
msgstr ""

#. translators: 1. IP address. 2. Description of firewall action.
#: lib/wfLog.php:666
msgid "Throttling IP %1$s. %2$s"
msgstr ""

#. translators: Error message.
#: lib/wfScan.php:42
msgid "Could not connect to database to start scan: %s"
msgstr ""

#: lib/wfScan.php:45
msgid "Looks like the Wordfence database tables have been deleted. You can fix this by de-activating and re-activating the Wordfence plugin from your Plugins menu."
msgstr ""

#: lib/wfScan.php:49
msgid "Cron test received and message printed"
msgstr ""

#: lib/wfScan.php:53
msgid "Scan engine received request."
msgstr ""

#: lib/wfScan.php:56
msgid "Verifying start request signature."
msgstr ""

#: lib/wfScan.php:58
msgid "The signature on the request to start a scan is invalid. Please try again."
msgstr ""

#: lib/wfScan.php:62
msgid "Fetching stored cronkey for comparison."
msgstr ""

#: lib/wfScan.php:65
msgid "[invalid]"
msgstr ""

#: lib/wfScan.php:65
#: lib/wfScan.php:66
msgid "[none]"
msgstr ""

#. translators: 1. WordPress nonce. 2. WordPress nonce.
#: lib/wfScan.php:67
msgid "Checking cronkey: %1$s (expecting %2$s)"
msgstr ""

#: lib/wfScan.php:69
msgid "Wordfence scan script accessed directly, or WF did not receive a cronkey."
msgstr ""

#. translators: 1. Unix timestamp. 2. WordPress nonce. 3. Unix timestamp.
#: lib/wfScan.php:77
msgid "The key used to start a scan expired. The value is: %1$s and split is: %2$s and time is: %3$d"
msgstr ""

#: lib/wfScan.php:81
msgid "Wordfence could not find a saved cron key to start the scan so assuming it started and exiting."
msgstr ""

#: lib/wfScan.php:85
msgid "Checking saved cronkey against cronkey param"
msgstr ""

#. translators: 1. WordPress nonce (used for debugging). 2. WordPress nonce (used for debugging). 3. WordPress nonce (used for debugging).
#: lib/wfScan.php:90
msgid "Wordfence could not start a scan because the cron key does not match the saved key. Saved: %1$s Sent: %2$s Current unexploded: %3$s"
msgstr ""

#: lib/wfScan.php:114
msgid "Checking if scan is already running"
msgstr ""

#: lib/wfScan.php:116
msgid "There is already a scan running."
msgstr ""

#: lib/wfScan.php:125
msgid "Using low resource scanning"
msgstr ""

#: lib/wfScan.php:128
msgid "Requesting max memory"
msgstr ""

#: lib/wfScan.php:130
msgid "Setting up error handling environment"
msgstr ""

#: lib/wfScan.php:138
msgid "Setting up scanRunning and starting scan"
msgstr ""

#. translators: Error message (used for debugging).
#: lib/wfScan.php:143
msgid "Got a true deserialized value back from 'wfsd_engine' with type: %s"
msgstr ""

#. translators: Error message (used for debugging).
#: lib/wfScan.php:147
msgid "Scan can't continue - stored data not found after a fork. Got type: %s"
msgstr ""

#: lib/wfScan.php:149
#: lib/wfScan.php:152
msgid "Scan can't continue - stored data not found after a fork."
msgstr ""

#. translators: Error message.
#: lib/wfScan.php:153
#: lib/wfScan.php:319
msgid "Previous scan terminated with an error. See below."
msgstr ""

#: lib/wfScan.php:176
msgid "Contacting Wordfence to initiate scan"
msgstr ""

#. translators: Time until.
#: lib/wfScan.php:185
msgid "Deferring scheduled scan by %s"
msgstr ""

#: lib/wfScan.php:206
msgid "Initiating quick scan"
msgstr ""

#. translators: 1. Bytes of memory. 2. Bytes of memory.
#. translators: 1. Memory in bytes. 2. Memory in bytes.
#: lib/wfScan.php:217
#: lib/wfScan.php:229
#: lib/wfScan.php:252
#: lib/wfScan.php:267
#: lib/wfScan.php:282
#: lib/wfScan.php:297
#: lib/wfScanEngine.php:476
msgid "Wordfence used %1$s of memory for scan. Server peak memory usage was: %2$s"
msgstr ""

#. translators: Error message.
#: lib/wfScan.php:221
#: lib/wfScan.php:233
#: lib/wfScan.php:256
#: lib/wfScan.php:271
#: lib/wfScan.php:286
#: lib/wfScan.php:301
#: lib/wfScan.php:318
msgid "Scan terminated with error: %s"
msgstr ""

#: lib/wfScan.php:304
msgid "Wordfence scan failed because of license site URL conflict"
msgstr ""

#. translators: Error message.
#: lib/wfScan.php:356
msgid "Scan Engine Error: %s"
msgstr ""

#. translators: Number of scan results.
#: lib/wfScanEngine.php:139
msgid "%d issue found in most recent scan"
msgid_plural "%d issues found in most recent scan"
msgstr[0] ""
msgstr[1] ""

#. translators: 1. Time duration. 2. Support URL.
#: lib/wfScanEngine.php:310
msgid "The scan time limit of %1$s has been exceeded and the scan will be terminated. This limit can be customized on the options page. <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">Get More Information<span class=\"screen-reader-text\"> ("
msgstr ""

#: lib/wfScanEngine.php:314
msgid "Scan Time Limit Exceeded"
msgstr ""

#. translators: 1. Number of files. 2. Number of plugins. 3. Number of themes. 4. Number of posts. 5. Number of comments. 6. Number of URLs. 7. Time duration.
#: lib/wfScanEngine.php:319
msgid "Scan interrupted. Scanned %1$d files, %2$d plugins, %3$d themes, %4$d posts, %5$d comments and %6$d URLs in %7$s."
msgstr ""

#. translators: Number of scan results.
#: lib/wfScanEngine.php:331
msgid "Scan interrupted. You have %d new issue to fix. See below."
msgid_plural "Scan interrupted. You have %d new issues to fix. See below."
msgstr[0] ""
msgstr[1] ""

#: lib/wfScanEngine.php:340
msgid "Scan interrupted. No problems found prior to stopping."
msgstr ""

#. translators: 1. Software version. 2. Software version.
#: lib/wfScanEngine.php:352
msgid "Aborting scan because WordPress updated from version %1$s to %2$s. The scan will be reattempted later."
msgstr ""

#: lib/wfScanEngine.php:385
#: lib/wordfenceScanner.php:481
msgid "Forking during malware scan to ensure continuity."
msgstr ""

#: lib/wfScanEngine.php:391
msgid "Entered fork()"
msgstr ""

#: lib/wfScanEngine.php:394
msgid "Calling startScan(true)"
msgstr ""

#. translators: 1. Number of files. 2. Number of plugins. 3. Number of themes. 4. Number of posts. 5. Number of comments. 6. Number of URLs. 7. Time duration.
#: lib/wfScanEngine.php:486
msgid "Scan Complete. Scanned %1$d files, %2$d plugins, %3$d themes, %4$d posts, %5$d comments and %6$d URLs in %7$s."
msgstr ""

#. translators: 1. Time duration.
#: lib/wfScanEngine.php:498
msgid "Quick Scan Complete. Scanned in %s."
msgstr ""

#. translators: Number of scan results.
#: lib/wfScanEngine.php:507
msgid "%d ignored issue was also detected."
msgid_plural "%d ignored issues were also detected."
msgstr[0] ""
msgstr[1] ""

#. translators: Number of scan results.
#: lib/wfScanEngine.php:518
msgid "Scan complete. You have %d new issue to fix."
msgid_plural "Scan complete. You have %d new issues to fix."
msgstr[0] ""
msgstr[1] ""

#: lib/wfScanEngine.php:526
msgid "See below."
msgstr ""

#: lib/wfScanEngine.php:529
msgid "Scan complete. Congratulations, no new problems found."
msgstr ""

#: lib/wfScanEngine.php:540
msgid "Checking if your site IP is generating spam"
msgstr ""

#: lib/wfScanEngine.php:559
msgid "Checking if your IP is generating spam is for paid members only"
msgstr ""

#: lib/wfScanEngine.php:566
msgid "Checking if your site is on a domain blocklist"
msgstr ""

#: lib/wfScanEngine.php:571
msgid "Checking if your site is on a domain blocklist is for paid members only"
msgstr ""

#. translators: Error message.
#: lib/wfScanEngine.php:607
msgid "Error checking domain blocklists: %s"
msgstr ""

#. translators: WordPress site ID.
#: lib/wfScanEngine.php:641
msgid "The multisite blog with ID %d is listed on Google's Safe Browsing malware list."
msgstr ""

#: lib/wfScanEngine.php:644
msgid "Your site is listed on Google's Safe Browsing malware list."
msgstr ""

#. translators: 1. URL. 2. URL.
#: lib/wfScanEngine.php:648
msgid "The URL %1$s is on the malware list. More info available at <a href=\"http://safebrowsing.clients.google.com/safebrowsing/diagnostic?site=%2$s&client=googlechrome&hl=en-US\" target=\"_blank\" rel=\"noopener noreferrer\">Google Safe Browsing diagnostic page<span class=\"screen-reader-text\"> ("
msgstr ""

#. translators: WordPress site ID.
#: lib/wfScanEngine.php:654
msgid "The multisite blog with ID %d is listed on Google's Safe Browsing phishing list."
msgstr ""

#: lib/wfScanEngine.php:657
msgid "Your site is listed on Google's Safe Browsing phishing list."
msgstr ""

#. translators: 1. URL. 2. URL.
#: lib/wfScanEngine.php:661
msgid "The URL %1$s is on the phishing list. More info available at <a href=\"http://safebrowsing.clients.google.com/safebrowsing/diagnostic?site=%2$s&client=googlechrome&hl=en-US\" target=\"_blank\" rel=\"noopener noreferrer\">Google Safe Browsing diagnostic page<span class=\"screen-reader-text\"> ("
msgstr ""

#. translators: WordPress site ID.
#: lib/wfScanEngine.php:667
msgid "The multisite blog with ID %d is listed on the Wordfence domain blocklist."
msgstr ""

#: lib/wfScanEngine.php:670
msgid "Your site is listed on the Wordfence domain blocklist."
msgstr ""

#. translators: URL.
#: lib/wfScanEngine.php:674
msgid "The URL %s is on the blocklist."
msgstr ""

#. translators: WordPress site ID.
#: lib/wfScanEngine.php:680
msgid "The multisite blog with ID %d is listed on a domain blocklist."
msgstr ""

#: lib/wfScanEngine.php:683
msgid "Your site is listed on a domain blocklist."
msgstr ""

#. translators: URL.
#: lib/wfScanEngine.php:685
msgid "The URL is: %s"
msgstr ""

#: lib/wfScanEngine.php:705
msgid "Checking for the most secure way to get IPs"
msgstr ""

#: lib/wfScanEngine.php:732
msgid "Unable to accurately detect IPs"
msgstr ""

#. translators: Support URL.
#: lib/wfScanEngine.php:733
msgid "Wordfence was unable to validate a test request to your website. This can happen if your website is behind a proxy that does not use one of the standard ways to convey the IP of the request or it is unreachable publicly. IP blocking and live traffic information may not be accurate. <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Get More Information<span class=\"screen-reader-text\"> ("
msgstr ""

#: lib/wfScanEngine.php:743
#: lib/wordfenceClass.php:6534
msgid "For maximum security use PHP's built in REMOTE_ADDR."
msgstr ""

#: lib/wfScanEngine.php:745
#: lib/wordfenceClass.php:6537
msgid "This site appears to be behind a front-end proxy, so using the X-Forwarded-For HTTP header will resolve to the correct IPs."
msgstr ""

#: lib/wfScanEngine.php:747
#: lib/wordfenceClass.php:6540
msgid "This site appears to be behind a front-end proxy, so using the X-Real-IP HTTP header will resolve to the correct IPs."
msgstr ""

#: lib/wfScanEngine.php:749
#: lib/wordfenceClass.php:6543
msgid "This site appears to be behind Cloudflare, so using the Cloudflare \"CF-Connecting-IP\" HTTP header will resolve to the correct IPs."
msgstr ""

#: lib/wfScanEngine.php:753
msgid "'How does Wordfence get IPs' is misconfigured"
msgstr ""

#. translators: Support URL.
#: lib/wfScanEngine.php:756
msgid "A test request to this website was detected on a different value for this setting. IP blocking and live traffic information may not be accurate. <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Get More Information<span class=\"screen-reader-text\"> ("
msgstr ""

#: lib/wfScanEngine.php:777
msgid "Check for publicly accessible configuration files, backup files and logs"
msgstr ""

#. translators: File path.
#: lib/wfScanEngine.php:829
msgid "Publicly accessible config, backup, or log file found: %s"
msgstr ""

#. translators: 1. URL to publicly accessible file. 2. Support URL.
#: lib/wfScanEngine.php:832
msgid "<a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">%1$s</a> is publicly accessible and may expose source code or sensitive information about your site. Files such as this one are commonly checked for by scanners and should be made inaccessible. Alternately, some can be removed if you are certain your site does not need them. Sites using the nginx web server may need manual configuration changes to protect such files. <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn more<span class=\"screen-reader-text\"> ("
msgstr ""

#: lib/wfScanEngine.php:862
msgid "Checking if your server discloses the path to the document root"
msgstr ""

#: lib/wfScanEngine.php:872
msgid "Web server exposes the document root"
msgstr ""

#: lib/wfScanEngine.php:873
msgid "Full Path Disclosure (FPD) vulnerabilities enable the attacker to see the path to the webroot/file. e.g.: /home/user/htdocs/file/. Certain vulnerabilities, such as using the load_file() (within a SQL Injection) query to view the page source, require the attacker to have the full path to the file they wish to view."
msgstr ""

#: lib/wfScanEngine.php:899
msgid "Directory listing is enabled"
msgstr ""

#: lib/wfScanEngine.php:900
msgid "Directory listing provides an attacker with the complete index of all the resources located inside of the directory. The specific risks and consequences vary depending on which files are listed and accessible, but it is recommended that you disable it unless it is needed."
msgstr ""

#: lib/wfScanEngine.php:916
msgid "Checking if your site is being Spamvertised"
msgstr ""

#: lib/wfScanEngine.php:935
msgid "Check if your site is being Spamvertized is for paid members only"
msgstr ""

#: lib/wfScanEngine.php:965
msgid "Ignoring invalid scan path: %s"
msgstr ""

#: lib/wfScanEngine.php:999
msgid "Ignoring invalid expected scan file: %s"
msgstr ""

#: lib/wfScanEngine.php:1004
msgid "Wordfence could not read the content of your WordPress directory. This usually indicates your permissions are so strict that your web server can't read your WordPress directory."
msgstr ""

#: lib/wfScanEngine.php:1013
msgid "Ignoring invalid base scan file: %s"
msgstr ""

#: lib/wfScanEngine.php:1024
msgid "Checking for paths skipped due to scan settings"
msgstr ""

#. translators: Number of paths skipped in scan.
#: lib/wfScanEngine.php:1034
msgid ", and %d more."
msgstr ""

#. translators: Number of paths skipped in scan.
#: lib/wfScanEngine.php:1058
msgid "%d path was skipped for the malware scan due to scan settings"
msgid_plural "%d paths were skipped for the malware scan due to scan settings"
msgstr[0] ""
msgstr[1] ""

#. translators: 1. Number of paths skipped in scan. 2. Support URL. 3. List of skipped paths.
#: lib/wfScanEngine.php:1061
msgid "The option \"Scan files outside your WordPress installation\" is off by default, which means %1$d path and its file(s) will not be scanned for malware or unauthorized changes. To continue skipping this path, you may ignore this issue. Or to start scanning it, enable the option and subsequent scans will include it. Some paths may not be necessary to scan, so this is optional. <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More<span class=\"screen-reader-text\"> ("
msgid_plural "The option \"Scan files outside your WordPress installation\" is off by default, which means %1$d paths and their file(s) will not be scanned for malware or unauthorized changes. To continue skipping these paths, you may ignore this issue. Or to start scanning them, enable the option and subsequent scans will include them. Some paths may not be necessary to scan, so this is optional. <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More<span class=\"screen-reader-text\"> ("
msgstr[0] ""
msgstr[1] ""

#: lib/wfScanEngine.php:1089
msgid "Including files that are outside the WordPress installation in the scan."
msgstr ""

#: lib/wfScanEngine.php:1092
msgid "Getting plugin list from WordPress"
msgstr ""

#. translators: Number of plugins.
#: lib/wfScanEngine.php:1094
msgid "Found %d plugin"
msgid_plural "Found %d plugins"
msgstr[0] ""
msgstr[1] ""

#: lib/wfScanEngine.php:1096
msgid "Getting theme list from WordPress"
msgstr ""

#. translators: Number of themes.
#: lib/wfScanEngine.php:1098
msgid "Found %d theme"
msgid_plural "Found %d themes"
msgstr[0] ""
msgstr[1] ""

#: lib/wfScanEngine.php:1115
msgid "Scanning file contents for infections and vulnerabilities"
msgstr ""

#: lib/wfScanEngine.php:1118
msgid "Skipping scan of file contents for infections and vulnerabilities"
msgstr ""

#: lib/wfScanEngine.php:1122
msgid "Scanning file contents for URLs on a domain blocklist"
msgstr ""

#: lib/wfScanEngine.php:1125
msgid "Skipping scan of file contents for URLs on a domain blocklist"
msgstr ""

#: lib/wfScanEngine.php:1130
msgid "Starting scan of file contents"
msgstr ""

#: lib/wfScanEngine.php:1146
msgid "Done file contents scan"
msgstr ""

#. translators: Scan result description.
#: lib/wfScanEngine.php:1154
#: lib/wfScanEngine.php:2435
#: lib/wfScanEngine.php:2477
msgid "Adding issue: %s"
msgstr ""

#: lib/wfScanEngine.php:1187
msgid "Scanning for publicly accessible quarantined files"
msgstr ""

#. translators: File path.
#: lib/wfScanEngine.php:1192
msgid "Testing accessibility of: %s"
msgstr ""

#. translators: File path.
#: lib/wfScanEngine.php:1201
msgid "Publicly accessible quarantined file found: %s"
msgstr ""

#. translators: URL to publicly accessible file.
#: lib/wfScanEngine.php:1204
msgid "<a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">%1$s<span class=\"screen-reader-text\"> ("
msgstr ""

#: lib/wfScanEngine.php:1228
msgid "Scanning posts for URLs on a domain blocklist"
msgstr ""

#. translators: Number of posts left to scan.
#: lib/wfScanEngine.php:1251
msgid "Scanning posts with %d left to scan."
msgstr ""

#: lib/wfScanEngine.php:1273
msgid "Post title contains suspicious code"
msgstr ""

#: lib/wfScanEngine.php:1274
msgid "This post contains code that is suspicious. Please check the title of the post and confirm that the code in the title is not malicious."
msgstr ""

#: lib/wfScanEngine.php:1297
msgid "Examining URLs found in posts we scanned for dangerous websites"
msgstr ""

#: lib/wfScanEngine.php:1299
#: lib/wfScanEngine.php:2398
msgid "Done examining URLs"
msgstr ""

#. translators: 1. WordPress Post type. 2. URL.
#: lib/wfScanEngine.php:1335
#: lib/wfScanEngine.php:1355
msgid "%1$s contains a suspected malware URL: %2$s"
msgstr ""

#. translators: 1. WordPress Post type. 2. URL. 3. URL.
#. translators: 1. WordPress post type. 2. URL. 3. URL.
#: lib/wfScanEngine.php:1341
#: lib/wfScanEngine.php:1484
msgid "This %1$s contains a suspected malware URL listed on Google's list of malware sites. The URL is: %2$s - More info available at <a href=\"http://safebrowsing.clients.google.com/safebrowsing/diagnostic?site=%3$s&client=googlechrome&hl=en-US\" target=\"_blank\" rel=\"noopener noreferrer\">Google Safe Browsing diagnostic page<span class=\"screen-reader-text\"> ("
msgstr ""

#. translators: 1. WordPress Post type. 2. URL.
#: lib/wfScanEngine.php:1347
msgid "%1$s contains a suspected phishing site URL: %2$s"
msgstr ""

#. translators: 1. WordPress Post type. 2. URL.
#. translators: 1. WordPress post type. 2. URL.
#: lib/wfScanEngine.php:1350
#: lib/wfScanEngine.php:1493
msgid "This %1$s contains a URL that is a suspected phishing site that is currently listed on Google's list of known phishing sites. The URL is: %2$s"
msgstr ""

#. translators: 1. WordPress Post type. 2. URL.
#. translators: 1. WordPress post type. 2. URL.
#: lib/wfScanEngine.php:1358
#: lib/wfScanEngine.php:1501
msgid "This %1$s contains a URL that is currently listed on Wordfence's domain blocklist. The URL is: %2$s"
msgstr ""

#. translators: Scan result description.
#: lib/wfScanEngine.php:1367
msgid "Adding issue: %1$s"
msgstr ""

#: lib/wfScanEngine.php:1403
msgid "Scanning comments for URLs on a domain blocklist"
msgstr ""

#. translators: Number of comments left to scan.
#: lib/wfScanEngine.php:1427
msgid "Scanning comments with %d left to scan."
msgstr ""

#. translators: 1. WordPress post type. 2. WordPress author username.
#: lib/wfScanEngine.php:1481
msgid "%1$s with author %2$s contains a suspected malware URL."
msgstr ""

#. translators: WordPress post type.
#: lib/wfScanEngine.php:1490
msgid "%s contains a suspected phishing site URL."
msgstr ""

#. translators: URL.
#: lib/wfScanEngine.php:1498
msgid "%s contains a suspected malware URL."
msgstr ""

#. translators: WordPress username.
#: lib/wfScanEngine.php:1546
msgid "Author: %s"
msgstr ""

#. translators: Email address.
#: lib/wfScanEngine.php:1549
msgid "Email: %s"
msgstr ""

#. translators: IP address.
#: lib/wfScanEngine.php:1551
msgid "Source IP: %s"
msgstr ""

#. translators: Comment description.
#: lib/wfScanEngine.php:1552
msgid "Scanning comment with %s"
msgstr ""

#. translators: Comment description.
#: lib/wfScanEngine.php:1565
#: lib/wfScanEngine.php:1571
msgid "Marking comment as spam for containing a malware URL. Comment has %s"
msgstr ""

#. translators: Comment description.
#: lib/wfScanEngine.php:1568
msgid "Marking comment as spam for containing a phishing URL. Comment has %s"
msgstr ""

#. translators: Comment description.
#: lib/wfScanEngine.php:1578
msgid "Scanned comment with %s"
msgstr ""

#: lib/wfScanEngine.php:1629
msgid "Scanning for weak passwords"
msgstr ""

#: lib/wfScanEngine.php:1640
msgid "We were unable to generate the user list for your password check."
msgstr ""

#. translators: Number of users.
#: lib/wfScanEngine.php:1656
msgid "Starting password strength check on %d user."
msgid_plural "Starting password strength check on %d users."
msgstr[0] ""
msgstr[1] ""

#. translators: Number of users.
#: lib/wfScanEngine.php:1665
msgid "Total of %d users left to process in password strength check."
msgid_plural "Total of %d users left to process in password strength check."
msgstr[0] ""
msgstr[1] ""

#. translators: WordPress user ID.
#: lib/wfScanEngine.php:1700
msgid "Could not get username for user with ID %d when checking password strength."
msgstr ""

#. translators: 1. WordPress username. 2. WordPress user ID.
#: lib/wfScanEngine.php:1706
msgid "Checking password strength of user '%1$s' with ID %2$d"
msgstr ""

#. translators: 1. WordPress username. 2. WordPress capability.
#: lib/wfScanEngine.php:1714
msgid "User \"%1$s\" with \"%2$s\" access has an easy password."
msgstr ""

#. translators: WordPress capability.
#: lib/wfScanEngine.php:1720
msgid "A user with the a role of '%s' has a password that is easy to guess. Please change this password yourself or ask the user to change it."
msgstr ""

#. translators: WordPress username.
#: lib/wfScanEngine.php:1728
msgid "User \"%s\" with 'subscriber' access has a very easy password."
msgstr ""

#: lib/wfScanEngine.php:1729
msgid "A user with 'subscriber' access has a password that is very easy to guess. Please either change it or ask the user to change their password."
msgstr ""

#. translators: Scan result description.
#: lib/wfScanEngine.php:1736
msgid "Adding issue %s"
msgstr ""

#. translators: WordPress username.
#: lib/wfScanEngine.php:1753
msgid "Completed checking password strength of user '%s'"
msgstr ""

#: lib/wfScanEngine.php:1786
msgid "Scanning to check available disk space"
msgstr ""

#: lib/wfScanEngine.php:1793
msgid "Unable to access available disk space information"
msgstr ""

#. translators: 1. Number of bytes. 2. Number of bytes.
#: lib/wfScanEngine.php:1802
msgid "Total disk space: %1$s -- Free disk space: %2$s"
msgstr ""

#. translators: Number of bytes.
#: lib/wfScanEngine.php:1807
msgid "The disk has %s MB available"
msgstr ""

#. translators: Number of bytes.
#: lib/wfScanEngine.php:1822
msgid "You have %s disk space remaining"
msgstr ""

#. translators: Number of bytes.
#: lib/wfScanEngine.php:1823
msgid "You only have %s of your disk space remaining. Please free up disk space or your website may stop serving requests."
msgstr ""

#: lib/wfScanEngine.php:1836
msgid "Checking Web Application Firewall status"
msgstr ""

#: lib/wfScanEngine.php:1847
msgid "Web Application Firewall is disabled"
msgstr ""

#. translators: Support URL.
#: lib/wfScanEngine.php:1848
msgid "Wordfence's Web Application Firewall has been unexpectedly disabled. If you see a notice at the top of the Wordfence admin pages that says \"The Wordfence Web Application Firewall cannot run,\" click the link in that message to rebuild the configuration. If this does not work, you may need to fix file permissions. <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">More Details<span class=\"screen-reader-text\"> ("
msgstr ""

#: lib/wfScanEngine.php:1863
msgid "Scanning for old themes, plugins and core files"
msgstr ""

#. translators: error message.
#: lib/wfScanEngine.php:1956
msgid "The update check performed during the scan encountered an error: %s"
msgstr ""

#: lib/wfScanEngine.php:1958
msgid "Wordfence cannot detect if the installed plugins and themes are up to date. This might be caused by a PHP compatibility issue in one or more plugins/themes."
msgstr ""

#: lib/wfScanEngine.php:1961
msgid "Wordfence cannot detect if this plugin/theme is up to date. This might be caused by a PHP compatibility issue in the plugin."
msgstr ""

#. translators: Support URL.
#: lib/wfScanEngine.php:1965
#: lib/wfScanEngine.php:2193
#: lib/wfScanEngine.php:2232
#: lib/wfScanEngine.php:2433
#: lib/wfScanEngine.php:2475
msgid "<a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Get more information.<span class=\"screen-reader-text\"> ("
msgstr ""

#: lib/wfScanEngine.php:1974
msgid "Update Check Encountered Error"
msgstr ""

#. translators: plugin/theme slug.
#: lib/wfScanEngine.php:1974
msgid "Update Check Encountered Error on '%s'"
msgstr ""

#: lib/wfScanEngine.php:1990
msgid "Your WordPress version is out of date"
msgstr ""

#. translators: Software version.
#: lib/wfScanEngine.php:1991
msgid "WordPress version %s is now available. Please upgrade immediately to get the latest security updates from WordPress."
msgstr ""

#. translators: Software version.
#: lib/wfScanEngine.php:2000
msgid "WordPress version %s is now available for your site's current branch. Please upgrade immediately to get the latest fixes and compatibility updates from WordPress."
msgstr ""

#. translators: Software version.
#: lib/wfScanEngine.php:2003
msgid "WordPress version %s is now available for your site's current branch. Please upgrade immediately to get the latest security updates from WordPress."
msgstr ""

#. translators: Software version.
#: lib/wfScanEngine.php:2019
msgid "WordPress version %s is now available. Please upgrade immediately to get the latest fixes and compatibility updates from WordPress."
msgstr ""

#: lib/wfScanEngine.php:2024
msgid "Learn more"
msgstr ""

#. translators: 1. Plugin name. 2. Software version. 3. Software version.
#: lib/wfScanEngine.php:2062
msgid "The Plugin \"%1$s\" needs an upgrade (%2$s -> %3$s)."
msgstr ""

#. translators: Theme name.
#: lib/wfScanEngine.php:2069
#: lib/wfScanEngine.php:2103
msgid "You need to upgrade \"%s\" to the newest version to ensure you have any security fixes the developer has released."
msgstr ""

#. translators: 1. Theme name. 2. Software version. 3. Software version.
#: lib/wfScanEngine.php:2096
msgid "The Theme \"%1$s\" needs an upgrade (%2$s -> %3$s)."
msgstr ""

#. translators: 1. Plugin slug. 2. Malformed date string.
#: lib/wfScanEngine.php:2136
msgid "Encountered bad date string for plugin \"%s\" in abandoned plugin check: %s"
msgstr ""

#. translators: 1. Plugin name. 2. Software version. 3. Software version.
#: lib/wfScanEngine.php:2161
msgid "The Plugin \"%1$s\" appears to be abandoned (updated %2$s, tested to WP %3$s)."
msgstr ""

#. translators: 1. Plugin name. 2. Software version.
#: lib/wfScanEngine.php:2168
msgid "It was last updated %1$s ago and tested up to WordPress %2$s."
msgstr ""

#. translators: 1. Plugin name. 2. Software version.
#: lib/wfScanEngine.php:2175
msgid "The Plugin \"%1$s\" appears to be abandoned (updated %2$s)."
msgstr ""

#. translators: Time duration.
#: lib/wfScanEngine.php:2181
msgid "It was last updated %s ago."
msgstr ""

#: lib/wfScanEngine.php:2187
#: lib/wfScanEngine.php:2226
msgid "It has unpatched security issues and may have compatibility problems with the current version of WordPress."
msgstr ""

#: lib/wfScanEngine.php:2189
msgid "It may have compatibility problems with the current version of WordPress or unknown security issues."
msgstr ""

#. translators: Plugin name.
#: lib/wfScanEngine.php:2224
msgid "The Plugin \"%s\" has been removed from wordpress.org but is still installed on your site."
msgstr ""

#: lib/wfScanEngine.php:2228
msgid "Your site is still using this plugin, but it is not currently available on wordpress.org. Plugins can be removed from wordpress.org for various reasons. This can include benign issues like a plugin author discontinuing development or moving the plugin distribution to their own site, but some might also be due to security issues. In any case, future updates may or may not be available, so it is worth investigating the cause and deciding whether to temporarily or permanently replace or remove the plugin."
msgstr ""

#: lib/wfScanEngine.php:2251
msgid "The Plugin \"%s\" has a security vulnerability."
msgstr ""

#: lib/wfScanEngine.php:2254
msgid "To protect your site from this vulnerability, the safest option is to deactivate and completely remove \"%s\" until a patched version is available. <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Get more information.<span class=\"screen-reader-text\"> (opens in new tab)</span></a>"
msgstr ""

#: lib/wfScanEngine.php:2290
msgid "Scanning for admin users not created through WordPress"
msgstr ""

#. translators: WordPress username.
#: lib/wfScanEngine.php:2312
msgid "An admin user with the username %s was created outside of WordPress."
msgstr ""

#. translators: WordPress username.
#: lib/wfScanEngine.php:2313
msgid "An admin user with the username %s was created outside of WordPress. It's possible a plugin could have created the account, but if you do not recognize the user, we suggest you remove it."
msgstr ""

#. translators: WordPress username.
#: lib/wfScanEngine.php:2339
msgid "An admin user with a suspicious username %s was found."
msgstr ""

#. translators: WordPress username.
#: lib/wfScanEngine.php:2340
msgid "An admin user with a suspicious username %s was found. Administrators accounts with usernames similar to this are commonly seen created by hackers. It's possible a plugin could have created the account, but if you do not recognize the user, we suggest you remove it."
msgstr ""

#: lib/wfScanEngine.php:2361
msgid "Scanning for suspicious site options"
msgstr ""

#: lib/wfScanEngine.php:2396
msgid "Examining URLs found in the options we scanned for dangerous websites"
msgstr ""

#. translators: URL.
#: lib/wfScanEngine.php:2420
#: lib/wfScanEngine.php:2426
msgid "Option contains a suspected malware URL: %s"
msgstr ""

#. translators: URL.
#: lib/wfScanEngine.php:2421
msgid "This option contains a suspected malware URL listed on Google's list of malware sites. It may indicate your site is infected with malware. The URL is: %s"
msgstr ""

#. translators: URL.
#: lib/wfScanEngine.php:2423
msgid "Option contains a suspected phishing site URL: %s"
msgstr ""

#. translators: URL.
#: lib/wfScanEngine.php:2424
msgid "This option contains a URL that is a suspected phishing site that is currently listed on Google's list of known phishing sites. It may indicate your site is infected with malware. The URL is: %s"
msgstr ""

#. translators: URL.
#: lib/wfScanEngine.php:2427
msgid "This option contains a URL that is currently listed on Wordfence's domain blocklist. It may indicate your site is infected with malware. The URL is: %s"
msgstr ""

#: lib/wfScanEngine.php:2467
msgid "Checking for future GeoIP support"
msgstr ""

#: lib/wfScanEngine.php:2472
msgid "PHP Update Needed for Country Blocking"
msgstr ""

#. translators: Software version.
#: lib/wfScanEngine.php:2473
msgid "The GeoIP database that is required for country blocking has been updated to a new format. This new format requires sites to run PHP 5.4 or newer, and this site is on PHP %s. To ensure country blocking continues functioning, please update PHP."
msgstr ""

#: lib/wfScanEngine.php:2523
msgid "Previous scan was stopped successfully."
msgstr ""

#: lib/wfScanEngine.php:2524
msgid "Scan was stopped on administrator request."
msgstr ""

#: lib/wfScanEngine.php:2540
msgid "Entering start scan routine"
msgstr ""

#: lib/wfScanEngine.php:2542
msgid "A scan is already running. Use the stop scan button if you would like to terminate the current scan."
msgstr ""

#: lib/wfScanEngine.php:2558
msgid "Cached result for scan start test: %s"
msgstr ""

#. translators: Scan start test result data.
#: lib/wfScanEngine.php:2574
msgid "Test result of scan start URL fetch: %s"
msgstr ""

#. translators: WordPress admin panel URL.
#: lib/wfScanEngine.php:2587
msgid "Starting cron with normal ajax at URL %s"
msgstr ""

#. translators: Error message.
#. translators: WordPress admin panel URL.
#: lib/wfScanEngine.php:2611
#: lib/wfScanEngine.php:2646
msgid "There was an error starting the scan: %s."
msgstr ""

#: lib/wfScanEngine.php:2613
#: lib/wfScanEngine.php:2648
msgid "There was an unknown error starting the scan."
msgstr ""

#: lib/wfScanEngine.php:2620
#: lib/wfScanEngine.php:2654
msgid "Scan process ended after forking."
msgstr ""

#. translators: WordPress admin panel URL.
#: lib/wfScanEngine.php:2624
msgid "Starting cron via proxy at URL %s"
msgstr ""

#. translators: Time in seconds.
#: lib/wfScanEngine.php:2700
msgid "Got value from wf config maxExecutionTime: %s"
msgstr ""

#. translators: Time in seconds.
#: lib/wfScanEngine.php:2704
msgid "getMaxExecutionTime() returning config value: %s"
msgstr ""

#. translators: PHP ini value.
#: lib/wfScanEngine.php:2711
msgid "Got max_execution_time value from ini: %s"
msgstr ""

#. translators: 1. PHP ini setting. 2. Time in seconds.
#: lib/wfScanEngine.php:2718
msgid "ini value of %1$d is higher than value for WORDFENCE_SCAN_MAX_INI_EXECUTION_TIME (%2$d), reducing"
msgstr ""

#. translators: PHP ini setting.
#: lib/wfScanEngine.php:2728
msgid "getMaxExecutionTime() returning half ini value: %d"
msgstr ""

#: lib/wfScanEngine.php:2734
msgid "getMaxExecutionTime() returning default of: 15"
msgstr ""

#. translators: 1. HTTP status code.
#: lib/wfScanEngine.php:2955
msgid "Got error response from Wordfence servers: %s"
msgstr ""

#: lib/wfScanEngine.php:2959
msgid "Invalid response from Wordfence servers."
msgstr ""

#: lib/wfScanMonitor.php:78
msgid "Attempting to resume scan stage (%d attempt(s) remaining)..."
msgstr ""

#: lib/wfSupportController.php:425
msgid "Are you enjoying using Wordfence Security?"
msgstr ""

#: lib/wfSupportController.php:427
msgid "Please consider leaving us a 5-star review on wordpress.org. Your review helps other members of the WordPress community find plugins that fit their needs."
msgstr ""

#: lib/wfSupportController.php:428
msgid "Leave Review"
msgstr ""

#: lib/wfSupportController.php:431
msgid "What can we do to improve Wordfence Security?"
msgstr ""

#: lib/wfSupportController.php:433
msgid "Submit Feedback"
msgstr ""

#: lib/wfSupportController.php:435
msgid "Thank you for providing your feedback on Wordfence Security"
msgstr ""

#: lib/wfUnlockMsg.php:2
msgid "If you are a WordPress user with administrative privileges on this site please enter your email in the box below and click &quot;Send&quot;. You will then receive an email that helps you regain access."
msgstr ""

#: lib/wfUnlockMsg.php:6
msgid "Send Unlock Email"
msgstr ""

#. translators: 1. Plugin slug.
#: lib/wfUpdateCheck.php:50
msgid "Outdated plugin scan adjusted invalid return value in plugins_api filter for %s"
msgstr ""

#: lib/wfUpdateCheck.php:112
#: views/dashboard/options-group-alert.php:73
#: views/scanner/issue-base.php:32
#: views/scanner/issue-base.php:41
#: views/scanner/issue-base.php:106
msgid "Critical"
msgstr ""

#: lib/wfUpdateCheck.php:114
#: views/dashboard/options-group-alert.php:74
#: views/scanner/issue-base.php:33
#: views/scanner/issue-base.php:42
#: views/scanner/issue-base.php:109
msgid "High"
msgstr ""

#: lib/wfUpdateCheck.php:116
#: views/dashboard/options-group-alert.php:75
#: views/scanner/issue-base.php:34
#: views/scanner/issue-base.php:43
#: views/scanner/issue-base.php:112
msgid "Medium"
msgstr ""

#: lib/wfUpdateCheck.php:118
#: views/dashboard/options-group-alert.php:76
#: views/scanner/issue-base.php:35
#: views/scanner/issue-base.php:44
#: views/scanner/issue-base.php:115
msgid "Low"
msgstr ""

#: lib/wfUpdateCheck.php:701
msgid "Failed obtaining core vulnerability data, skipping check."
msgstr ""

#: lib/wfUpdateCheck.php:735
msgid "Failed obtaining vulnerability data, skipping check."
msgstr ""

#: lib/wfUtils.php:32
msgid "a moment"
msgstr ""

#: lib/wfUtils.php:67
msgid "year"
msgid_plural "years"
msgstr[0] ""
msgstr[1] ""

#: lib/wfUtils.php:68
#: lib/wfUtils.php:71
#: lib/wfUtils.php:102
msgid "month"
msgid_plural "months"
msgstr[0] ""
msgstr[1] ""

#: lib/wfUtils.php:72
#: lib/wfUtils.php:75
#: lib/wfUtils.php:108
msgid "day"
msgid_plural "days"
msgstr[0] ""
msgstr[1] ""

#: lib/wfUtils.php:76
#: lib/wfUtils.php:79
#: lib/wfUtils.php:114
msgid "hour"
msgid_plural "hours"
msgstr[0] ""
msgstr[1] ""

#: lib/wfUtils.php:80
#: lib/wfUtils.php:83
#: lib/wfUtils.php:120
msgid "minute"
msgid_plural "minutes"
msgstr[0] ""
msgstr[1] ""

#: lib/wfUtils.php:87
msgid "less than a minute"
msgstr ""

#. translators: Number of seconds.
#: lib/wfUtils.php:89
msgid "%d seconds"
msgstr ""

#: lib/wfUtils.php:123
msgid "second"
msgid_plural "seconds"
msgstr[0] ""
msgstr[1] ""

#: lib/wfUtils.php:127
msgid "less than 1 second"
msgstr ""

#: lib/wfUtils.php:1233
#: lib/wfUtils.php:1242
msgid "Wordfence error: No encryption key found!"
msgstr ""

#. translators: Error message.
#: lib/wfUtils.php:1533
msgid "Call to Wordfence API to resolve IPs failed: %s"
msgstr ""

#: lib/wfVersionCheckController.php:50
#: lib/wfVersionCheckController.php:75
msgid "PHP version too old"
msgstr ""

#. translators: 1. PHP version. 2. PHP version.
#: lib/wfVersionCheckController.php:53
msgid "Your site is using a PHP version (%1$s) that will no longer be supported by Wordfence in an upcoming release and needs to be updated. We recommend using the newest version of PHP available but will currently support PHP versions as old as %2$s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later."
msgstr ""

#. translators: Support URL.
#. translators: 1. WordPress version. 2. WordPress version.
#: lib/wfVersionCheckController.php:58
#: lib/wfVersionCheckController.php:81
#: lib/wfVersionCheckController.php:157
#: lib/wfVersionCheckController.php:179
msgid "Learn More: %s"
msgstr ""

#. translators: 1. PHP version. 2. PHP version.
#: lib/wfVersionCheckController.php:66
msgid "<strong>WARNING: </strong> Your site is using a PHP version (%1$s) that will no longer be supported by Wordfence in an upcoming release and needs to be updated. We recommend using the newest version of PHP available but will currently support PHP versions as old as %2$s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later."
msgstr ""

#. translators: 1. PHP version. 2. PHP version.
#: lib/wfVersionCheckController.php:78
msgid "Your site is using a PHP version (%1$s) that is no longer supported by Wordfence and needs to be updated. We recommend using the newest version of PHP available but will currently support PHP versions as old as %2$s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later."
msgstr ""

#. translators: 1. PHP version. 2. PHP version.
#: lib/wfVersionCheckController.php:89
msgid "<strong>WARNING: </strong> Your site is using a PHP version (%1$s) that is no longer supported by Wordfence and needs to be updated. We recommend using the newest version of PHP available but will currently support PHP versions as old as %2$s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later."
msgstr ""

#: lib/wfVersionCheckController.php:151
#: lib/wfVersionCheckController.php:176
msgid "WordPress version too old"
msgstr ""

#. translators: 1. WordPress version. 2. WordPress version.
#: lib/wfVersionCheckController.php:154
msgid "Your site is using a WordPress version (%1$s) that will no longer be supported by Wordfence in an upcoming release and needs to be updated. We recommend using the newest version of WordPress but will currently support WordPress versions as old as %2$s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later."
msgstr ""

#. translators: 1. WordPress version. 2. WordPress version.
#: lib/wfVersionCheckController.php:165
msgid "<strong>WARNING: </strong> Your site is using a WordPress version (%1$s) that will no longer be supported by Wordfence in an upcoming release and needs to be updated. We recommend using the newest version of WordPress but will currently support WordPress versions as old as %2$s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later."
msgstr ""

#. translators: 1. WordPress version. 2. WordPress version.
#: lib/wfVersionCheckController.php:179
msgid "Your site is using a WordPress version (%1$s) that is no longer supported by Wordfence and needs to be updated. We recommend using the newest version of WordPress but will currently support WordPress versions as old as %2$s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later."
msgstr ""

#. translators: 1. WordPress version. 2. WordPress version.
#: lib/wfVersionCheckController.php:187
msgid "<strong>WARNING: </strong> Your site is using a WordPress version (%1$s) that is no longer supported by Wordfence and needs to be updated. We recommend using the newest version of WordPress but will currently support WordPress versions as old as %2$s. Version checks are run regularly, so if you have successfully updated, you can dismiss this notice or check that the update has taken effect later."
msgstr ""

#. translators: File path.
#: lib/wfView.php:52
msgid "The view %s does not exist or is not readable."
msgstr ""

#: lib/wfView.php:70
msgid "The view could not be loaded."
msgstr ""

#: lib/wfViewResult.php:8
msgid "Wordfence: File Viewer"
msgstr ""

#: lib/wfViewResult.php:11
msgid "File Size:"
msgstr ""

#: lib/wfViewResult.php:12
msgid "File last modified:"
msgstr ""

#: lib/wordfenceClass.php:192
msgid ""
"To ensure uninterrupted Premium Wordfence protection on your site,\n"
"please renew your license by visiting http://www.wordfence.com/ Sign in, go to your dashboard,\n"
"select the license about to expire and click the button to renew that license."
msgstr ""

#: lib/wordfenceClass.php:218
msgid "Your Premium Wordfence License is set to auto-renew in 10 days."
msgstr ""

#: lib/wordfenceClass.php:219
msgid "To update your license settings please visit http://www.wordfence.com/zz9/dashboard"
msgstr ""

#: lib/wordfenceClass.php:231
msgid "Your Premium Wordfence License expires in less than 2 weeks."
msgstr ""

#: lib/wordfenceClass.php:234
msgid "Your Premium Wordfence License expires in less than a week."
msgstr ""

#: lib/wordfenceClass.php:237
msgid "Your Premium Wordfence License expires in 2 days."
msgstr ""

#: lib/wordfenceClass.php:240
msgid "Your Premium Wordfence License expires in 1 day."
msgstr ""

#: lib/wordfenceClass.php:244
msgid "Your Wordfence Premium License has Expired!"
msgstr ""

#: lib/wordfenceClass.php:280
msgid "The Wordfence Premium License in use on this site has been removed from your account."
msgstr ""

#: lib/wordfenceClass.php:280
msgid "The license you were using has been removed from your account. Please reach out to billing@wordfence.com or create a Premium support case at https://support.wordfence.com/support/tickets for more information. Our staff is happy to help."
msgstr ""

#. translators: Wordfence license key.
#: lib/wordfenceClass.php:290
msgid "Could not verify Wordfence License: %s"
msgstr ""

#. translators: WordPress version.
#: lib/wordfenceClass.php:383
msgid "WordPress (v%s)"
msgstr ""

#. translators: Number of plugins.
#: lib/wordfenceClass.php:387
msgid "%d plugin"
msgid_plural "%d plugins"
msgstr[0] ""
msgstr[1] ""

#. translators: Number of themes.
#: lib/wordfenceClass.php:392
msgid "%d theme"
msgid_plural "%d themes"
msgstr[0] ""
msgstr[1] ""

#: lib/wordfenceClass.php:396
msgid "An update is available for "
msgid_plural "Updates are available for "
msgstr[0] ""
msgstr[1] ""

#: lib/wordfenceClass.php:401
msgid "and "
msgstr ""

#. translators: Wordfence version.
#: lib/wordfenceClass.php:449
msgid "`runInstall` called with previous version = %s"
msgstr ""

#: lib/wordfenceClass.php:846
msgid "Automatically generated from previous country blocking settings"
msgstr ""

#: lib/wordfenceClass.php:1292
#: views/user/disabled-application-passwords.php:15
msgid "Application passwords have been disabled by Wordfence."
msgstr ""

#: lib/wordfenceClass.php:1427
msgid "Upgrade To Premium"
msgstr ""

#: lib/wordfenceClass.php:1440
msgid "wp_mail from address is incomplete, attempting to fix"
msgstr ""

#. translators: Email address.
#: lib/wordfenceClass.php:1450
msgid "Fixing wp_mail from address: %s"
msgstr ""

#: lib/wordfenceClass.php:1553
msgid "You appear to have logged out or you are not an admin. Please sign-out and sign-in again."
msgstr ""

#: lib/wordfenceClass.php:1558
msgid "Your browser sent an invalid security token to Wordfence. Please try reloading this page or signing out and in again."
msgstr ""

#: lib/wordfenceClass.php:1564
msgid "Wordfence encountered an internal error executing that request."
msgstr ""

#. translators: Error message.
#: lib/wordfenceClass.php:1670
msgid "2FA Migration Error: %s"
msgstr ""

#: lib/wordfenceClass.php:1710
msgid ""
"<strong>ERROR</strong>: The password could not be changed. Please choose a stronger password and try again. A strong password will follow these guidelines: <ul class=\"wf-password-requirements\">\n"
"\t\t\t\t\t<li>At least 12 characters</li>\n"
"\t\t\t\t\t<li>Uppercase and lowercase letters</li>\n"
"\t\t\t\t\t<li>At least one symbol</li>\n"
"\t\t\t\t\t<li>At least one number</li>\n"
"\t\t\t\t\t<li>Avoid common words or sequences of letters/numbers</li>\n"
"\t\t\t\t</ul>"
msgstr ""

#: lib/wordfenceClass.php:1722
msgid "Passwords containing a space followed by \"wf\" without quotes are not allowed."
msgstr ""

#. translators: Support URL.
#: lib/wordfenceClass.php:1737
msgid "Please choose a different password. The password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. <a href=\"%s\">Learn More</a>"
msgstr ""

#. translators: 1. Password reset limit (number). 2. WordPress username.
#: lib/wordfenceClass.php:1859
msgid "Exceeded the maximum number of tries to recover their password which is set at: %1$s. The last username or email they entered before getting locked out was: '%2$s'"
msgstr ""

#: lib/wordfenceClass.php:1911
#: lib/wordfenceClass.php:2094
msgid "Sorry but your browser sent an invalid security token when trying to use this form."
msgstr ""

#: lib/wordfenceClass.php:1916
msgid "Please wait 3 minutes and try again"
msgstr ""

#: lib/wordfenceClass.php:1917
msgid "You have used this form too much. Please wait 3 minutes and try again."
msgstr ""

#: lib/wordfenceClass.php:1956
msgid "Unlock email requested"
msgstr ""

#: lib/wordfenceClass.php:1958
msgid "Your request was received"
msgstr ""

#. translators: Email address.
#: lib/wordfenceClass.php:1959
msgid "We received a request to email \"%s\" instructions to unlock their access. If that is the email address of a site administrator or someone on the Wordfence alert list, they have been emailed instructions on how to regain access to this system. The instructions we sent will expire 30 minutes from now."
msgstr ""

#: lib/wordfenceClass.php:1965
msgid "Invalid key provided for authentication."
msgstr ""

#: lib/wordfenceClass.php:1976
msgid "Request received via unlock email link to unblock all IPs."
msgstr ""

#: lib/wordfenceClass.php:1985
msgid "Request received via unlock email link to unblock all IPs via disabling firewall rules."
msgstr ""

#: lib/wordfenceClass.php:1993
msgid "Invalid function specified. Please check the link we emailed you and make sure it was not cut-off by your email reader."
msgstr ""

#: lib/wordfenceClass.php:2038
msgid "Unsubscribe Requested"
msgstr ""

#: lib/wordfenceClass.php:2100
msgid "An error occurred while saving the license."
msgstr ""

#. translators: Error message.
#: lib/wordfenceClass.php:2102
#: lib/wordfenceClass.php:2122
msgid "An error occurred while saving the license: %s"
msgstr ""

#: lib/wordfenceClass.php:2138
msgid "Rescheduled missing daily cron"
msgstr ""

#: lib/wordfenceClass.php:2143
msgid "Rescheduled missing hourly cron"
msgstr ""

#: lib/wordfenceClass.php:2447
#: lib/wordfenceClass.php:2451
msgid "Accessed a banned URL"
msgstr ""

#: lib/wordfenceClass.php:2458
#: lib/wordfenceClass.php:2462
msgid "POST received with blank user-agent and referer"
msgstr ""

#: lib/wordfenceClass.php:2596
msgid "<strong>ERROR</strong>: You can't register using that username"
msgstr ""

#: lib/wordfenceClass.php:2636
msgid "Sorry, you are not allowed to list users."
msgstr ""

#: lib/wordfenceClass.php:2643
msgid "Invalid user ID."
msgstr ""

#: lib/wordfenceClass.php:2787
msgid "<strong>VERIFICATION FAILED</strong>: Two-factor authentication verification failed. Please try again."
msgstr ""

#. translators: 1. WordPress username. 2. Password reset URL.
#. translators: 1. WordPress username. 2. Reset password URL.
#: lib/wordfenceClass.php:2794
#: lib/wordfenceClass.php:3242
msgid "<strong>ERROR</strong>: The username or password you entered is incorrect. <a href=\"%2$s\" title=\"Password Lost and Found\">Lost your password</a>?"
msgstr ""

#. translators: 1. WordPress admin panel URL. 2. Support URL.
#: lib/wordfenceClass.php:2804
#: lib/wordfenceClass.php:2940
msgid "<strong>WARNING: </strong>The password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. Please <a href=\"%1$s\">change your password</a>. <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More<span class=\"screen-reader-text\"> ("
msgstr ""

#: lib/wordfenceClass.php:2828
msgid "<strong>INVALID CODE</strong>: Please sign in again and add a space, the letters <code>wf</code>, and the code from your authenticator app to the end of your password (e.g., <code>wf123456</code>)."
msgstr ""

#: lib/wordfenceClass.php:2832
msgid "<strong>INVALID CODE</strong>: Please sign in again and add a space, the letters <code>wf</code>, and the code sent to your phone to the end of your password (e.g., <code>wf123456</code>)."
msgstr ""

#: lib/wordfenceClass.php:2839
#: lib/wordfenceClass.php:2890
#: lib/wordfenceClass.php:2913
msgid "<strong>AUTHENTICATION FAILURE</strong>: A temporary failure was encountered while trying to log in. Please try again."
msgstr ""

#: lib/wordfenceClass.php:2849
msgid "<strong>INVALID CODE</strong>: You need to enter the code generated by your authenticator app. The code should be a six digit number (e.g., 123456)."
msgstr ""

#: lib/wordfenceClass.php:2853
msgid "<strong>INVALID CODE</strong>: You need to enter the code generated sent to your phone. The code should be a six digit number (e.g., 123456)."
msgstr ""

#: lib/wordfenceClass.php:2899
msgid "<strong>CODE EXPIRED. CHECK YOUR PHONE:</strong> The code you entered has expired. Codes are only valid for 30 minutes for security reasons. We have sent you a new code. Please sign in using your username, password, and the new code we sent you."
msgstr ""

#: lib/wordfenceClass.php:2922
msgid "<strong>INVALID CODE</strong>: You need to enter your password and the code we sent to your phone. The code should start with 'wf' and should be four characters (e.g., wfAB12)."
msgstr ""

#: lib/wordfenceClass.php:2973
msgid "<strong>CODE REQUIRED</strong>: Please check your authenticator app for the current code. Enter it below to sign in."
msgstr ""

#: lib/wordfenceClass.php:2978
msgid "<strong>CODE REQUIRED</strong>: Please check your authenticator app for the current code. Please sign in again and add a space, the letters <code>wf</code>, and the code to the end of your password (e.g., <code>wf123456</code>)."
msgstr ""

#: lib/wordfenceClass.php:3012
#: lib/wordfenceClass.php:3069
msgid "<strong>CHECK YOUR PHONE</strong>: A code has been sent to your phone and will arrive within 30 seconds. Enter it below to sign in."
msgstr ""

#: lib/wordfenceClass.php:3017
msgid "<strong>CHECK YOUR PHONE</strong>: A code has been sent to your phone and will arrive within 30 seconds. Please sign in again and add a space, the letters <code>wf</code>, and the code to the end of your password (e.g., <code>wf123456</code>)."
msgstr ""

#: lib/wordfenceClass.php:3074
msgid "<strong>CHECK YOUR PHONE</strong>: A code has been sent to your phone and will arrive within 30 seconds. Please sign in again and add a space and the code to the end of your password (e.g., <code>wfABCD</code>)."
msgstr ""

#. translators: 1. Reset password URL. 2. Support URL.
#: lib/wordfenceClass.php:3095
#: lib/wordfenceClass.php:3131
msgid "<strong>WARNING: </strong>Your login has been allowed because you have previously logged in from the same IP, but you will be blocked if your IP changes. The password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. Please <a href=\"%1$s\">change your password</a>. <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More<span class=\"screen-reader-text\"> ("
msgstr ""

#. translators: 1. Reset password URL. 2. Support URL.
#: lib/wordfenceClass.php:3112
#: lib/wordfenceClass.php:3148
msgid "<strong>INSECURE PASSWORD:</strong> Your login attempt has been blocked because the password you are using exists on lists of passwords leaked in data breaches. Attackers use such lists to break into sites and install malicious code. Please <a href=\"%1$s\">reset your password</a> to reactivate your account. <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More<span style=\"font-size:0;\"> (opens in new tab)</span></a>"
msgstr ""

#: lib/wordfenceClass.php:3120
msgid "Admin Login Blocked"
msgstr ""

#. translators: WordPress username.
#: lib/wordfenceClass.php:3120
msgid "A user with username \"%s\" who has administrator access tried to sign in to your WordPress site. Access was denied because all administrator accounts are required to have Cellphone Sign-in enabled but this account does not."
msgstr ""

#. translators: WordPress username.
#: lib/wordfenceClass.php:3121
msgid "<strong>Cellphone Sign-in Required</strong>: Cellphone Sign-in is required for all administrator accounts. Please contact the site administrator to enable it for your account."
msgstr ""

#: lib/wordfenceClass.php:3161
msgid "Blocked by Wordfence Security Network"
msgstr ""

#: lib/wordfenceClass.php:3191
msgid "Blocked by login security setting"
msgstr ""

#. translators: WordPress username.
#: lib/wordfenceClass.php:3201
msgid "Used an invalid username '%s' to try to sign in"
msgstr ""

#. translators: 1. Login attempt limit. 2. WordPress username.
#: lib/wordfenceClass.php:3220
msgid "Exceeded the maximum number of login failures which is: %1$s. The last username they tried to sign in with was: '%2$s'"
msgstr ""

#: lib/wordfenceClass.php:3547
msgid "An invalid type was specified to get file."
msgstr ""

#: lib/wordfenceClass.php:3563
msgid "We could not fetch a core WordPress file from the Wordfence API."
msgstr ""

#: lib/wordfenceClass.php:3622
msgid "Wordfence Test Email"
msgstr ""

#. translators: 1. Site URL. 2. IP address.
#: lib/wordfenceClass.php:3622
msgid ""
"This is a test email from %1$s.\n"
"The IP address that requested this was: %2$s"
msgstr ""

#: lib/wordfenceClass.php:3629
msgid "Cellphone Sign-in is only available to paid members. <a href=\"https://www.wordfence.com/gnl1twoFac3/wordfence-signup/\" target=\"_blank\" rel=\"noopener noreferrer\">Click here to upgrade now.<span class=\"screen-reader-text\"> ("
msgstr ""

#: lib/wordfenceClass.php:3636
msgid "The username you specified does not exist."
msgstr ""

#: lib/wordfenceClass.php:3645
msgid "The username you specified is already enabled."
msgstr ""

#: lib/wordfenceClass.php:3650
msgid "Unknown authentication mode."
msgstr ""

#: lib/wordfenceClass.php:3655
msgid "The phone number you entered must start with a '+', then country code and then area code and number. For example, a number in the United States with country code '1' would look like this: +1-123-555-1234"
msgstr ""

#. translators: Error message.
#: lib/wordfenceClass.php:3662
#: lib/wordfenceClass.php:3694
#: lib/wordfenceClass.php:3757
msgid "Could not contact Wordfence servers to generate a verification code: %s"
msgstr ""

#. translators: Error message.
#: lib/wordfenceClass.php:3674
#: lib/wordfenceClass.php:3718
msgid "Could not generate verification code: %s"
msgstr ""

#. translators: Error message.
#: lib/wordfenceClass.php:3675
#: lib/wordfenceClass.php:3719
msgid "We could not generate a verification code."
msgstr ""

#: lib/wordfenceClass.php:3735
msgid "Unknown two-factor authentication mode."
msgstr ""

#: lib/wordfenceClass.php:3768
msgid "The code you entered is invalid. Cellphone sign-in will not be enabled for this user until you enter a valid code."
msgstr ""

#: lib/wordfenceClass.php:3773
msgid "We could not find the user you are trying to activate. They may have been removed from the list of Cellphone Sign-in users. Please reload this page."
msgstr ""

#: lib/wordfenceClass.php:3855
msgid "That user has already been removed from the list."
msgstr ""

#: lib/wordfenceClass.php:3875
msgid "No scan is scheduled"
msgstr ""

#: lib/wordfenceClass.php:3880
msgid "Next scan is starting now"
msgstr ""

#. translators: 1. Time until. 2. Localized date.
#: lib/wordfenceClass.php:3883
msgid "Next scan in %1$s (%2$s)"
msgstr ""

#. translators: Localized date.
#: lib/wordfenceClass.php:3900
msgid "Scheduled Wordfence scan starting at %s"
msgstr ""

#: lib/wordfenceClass.php:3923
msgid "Sorry but this feature is only available for paid customers."
msgstr ""

#. translators: Site URL.
#: lib/wordfenceClass.php:3937
msgid "SITE: %s"
msgstr ""

#. translators: Plugin version.
#: lib/wordfenceClass.php:3938
msgid "PLUGIN VERSION: %s"
msgstr ""

#. translators: WordPress version.
#: lib/wordfenceClass.php:3939
msgid "WORDPRESS VERSION: %s"
msgstr ""

#. translators: Wordfence license key.
#: lib/wordfenceClass.php:3940
msgid "LICENSE KEY: %s"
msgstr ""

#. translators: Email address.
#: lib/wordfenceClass.php:3941
msgid "ADMIN EMAIL: %s"
msgstr ""

#. translators: Email address.
#: lib/wordfenceClass.php:3942
msgid "LOG:"
msgstr ""

#: lib/wordfenceClass.php:3958
msgid "# Scan Issues"
msgstr ""

#. translators: Number of scan results.
#: lib/wordfenceClass.php:3963
msgid "## New Issues (%d total)"
msgstr ""

#. translators: Number of scan results.
#: lib/wordfenceClass.php:3990
msgid "## Ignored Issues (%d total)"
msgstr ""

#: lib/wordfenceClass.php:4011
msgid "No Ignored Issues"
msgstr ""

#: lib/wordfenceClass.php:4033
msgid "Wordfence Activity Log"
msgstr ""

#: lib/wordfenceClass.php:4056
msgid "Could not understand the response we received from the Wordfence servers when applying for a free license key."
msgstr ""

#. translators: Error message.
#: lib/wordfenceClass.php:4059
msgid "Could not fetch free license key from Wordfence: %s"
msgstr ""

#: lib/wordfenceClass.php:4161
msgid "We could not find your .htaccess file to modify it."
msgstr ""

#. translators: Error message.
#: lib/wordfenceClass.php:4166
msgid "We found your .htaccess file but could not open it for writing: %s"
msgstr ""

#: lib/wordfenceClass.php:4249
msgid "All Countries"
msgstr ""

#: lib/wordfenceClass.php:4252
msgid "1 Country"
msgstr ""

#. translators: Number of countries.
#: lib/wordfenceClass.php:4255
msgid "%d Countries"
msgstr ""

#: lib/wordfenceClass.php:4259
msgid "Entire Site"
msgstr ""

#: lib/wordfenceClass.php:4262
msgid "Login Only"
msgstr ""

#: lib/wordfenceClass.php:4265
msgid "Site Except Login"
msgstr ""

#: lib/wordfenceClass.php:4273
msgid "IP Range"
msgstr ""

#. translators: 2FA backup codes.
#: lib/wordfenceClass.php:4274
#: lib/wordfenceClass.php:6402
msgid "User Agent"
msgstr ""

#: lib/wordfenceClass.php:4275
#: views/blocking/blocking-create.php:201
msgid "Referrer"
msgstr ""

#: lib/wordfenceClass.php:4290
msgid "Permanent"
msgstr ""

#: lib/wordfenceClass.php:4362
msgid "An error occurred while creating the block."
msgstr ""

#: lib/wordfenceClass.php:4368
msgid "No block parameters were provided."
msgstr ""

#: lib/wordfenceClass.php:4405
#: lib/wordfenceClass.php:4437
msgid "No blocks were provided."
msgstr ""

#: lib/wordfenceClass.php:4477
msgid "The license provided is already in use on another site."
msgstr ""

#: lib/wordfenceClass.php:4482
msgid "The Wordfence activation server returned an unexpected response. Please try again."
msgstr ""

#: lib/wordfenceClass.php:4488
msgid "We received an error while trying to activate the license with the Wordfence servers: "
msgstr ""

#: lib/wordfenceClass.php:4505
msgid "No license was provided to install."
msgstr ""

#: lib/wordfenceClass.php:4556
msgid "An unknown configuration section was provided."
msgstr ""

#: lib/wordfenceClass.php:4562
msgid "No configuration section was provided."
msgstr ""

#: lib/wordfenceClass.php:4608
#: lib/wordfenceClass.php:4613
msgid "An error occurred while saving the configuration."
msgstr ""

#: lib/wordfenceClass.php:4624
#: modules/login-security/classes/controller/ajax.php:427
msgid "No configuration changes were provided to save."
msgstr ""

#: lib/wordfenceClass.php:4633
msgid "Invalid option specified"
msgstr ""

#: lib/wordfenceClass.php:4683
#: lib/wordfenceClass.php:5333
#: lib/wordfenceClass.php:5364
#: lib/wordfenceClass.php:7589
#: lib/wordfenceClass.php:7624
#: lib/wordfenceClass.php:7685
msgid "We could not find that issue in our database."
msgstr ""

#: lib/wordfenceClass.php:4693
msgid "An error occurred while trying to hide the file."
msgstr ""

#: lib/wordfenceClass.php:4706
msgid "An invalid file was requested for hiding."
msgstr ""

#: lib/wordfenceClass.php:4733
#: lib/wordfenceClass.php:5344
msgid "You don't have permission to repair .htaccess. You need to either fix the file manually using FTP or change the file permissions and ownership so that your web server has write access to repair the file."
msgstr ""

#: lib/wordfenceClass.php:4757
msgid "Manual permanent block by admin"
msgstr ""

#: lib/wordfenceClass.php:4798
msgid "Please enter a valid IP address to block."
msgstr ""

#: lib/wordfenceClass.php:4801
msgid "You can't block your own IP address."
msgstr ""

#. translators: IP address.
#: lib/wordfenceClass.php:4805
msgid "The IP address %s is allowlisted and can't be blocked. You can remove this IP from the allowlist on the Wordfence options page."
msgstr ""

#. translators: IP address.
#: lib/wordfenceClass.php:4807
msgid "The IP address %s is in a range of IP addresses that Wordfence does not block. The IP range may be internal or belong to a service safe to allow access for."
msgstr ""

#: lib/wordfenceClass.php:4813
msgid "The IP address you're trying to block belongs to Google. Your options are currently set to not block these crawlers. Change this in Wordfence options if you want to manually block Google."
msgstr ""

#: lib/wordfenceClass.php:4856
msgid "An invalid operation was called."
msgstr ""

#: lib/wordfenceClass.php:4866
msgid "An invalid status was specified when trying to update that issue."
msgstr ""

#: lib/wordfenceClass.php:4878
msgid "Scan stop request received."
msgstr ""

#: lib/wordfenceClass.php:4879
msgid "A request was received to stop the previous scan."
msgstr ""

#: lib/wordfenceClass.php:4928
msgid "Idle"
msgstr ""

#. translators: Localized date.
#: lib/wordfenceClass.php:4937
msgid "Scan completed on %s"
msgstr ""

#: lib/wordfenceClass.php:4944
msgid "Last scan failed"
msgstr ""

#. translators: Time until.
#: lib/wordfenceClass.php:5007
msgid "more than %s"
msgstr ""

#. translators: Localized date.
#: lib/wordfenceClass.php:5011
msgid "The current scan looks like it has failed. Its last status update was <span id=\"wf-scan-failed-time-ago\">%s</span> ago. You may continue to wait in case it resumes or stop and restart the scan. Some sites may need adjustments to run scans reliably."
msgstr ""

#. translators: Localized date.
#: lib/wordfenceClass.php:5011
#: lib/wordfenceClass.php:5019
#: lib/wordfenceClass.php:5050
#: lib/wordfenceClass.php:5062
#: lib/wordfenceClass.php:5070
msgid "Click here for steps you can try."
msgstr ""

#. translators: Localized date.
#: lib/wordfenceClass.php:5012
msgid "Cancel Scan"
msgstr ""

#: lib/wordfenceClass.php:5019
msgid "The previous scan has failed. Some sites may need adjustments to run scans reliably."
msgstr ""

#. translators: Time limit (number).
#: lib/wordfenceClass.php:5025
msgid "The previous scan has terminated because the time limit of %s was reached. This limit can be customized on the options page."
msgstr ""

#: lib/wordfenceClass.php:5031
msgid "The previous scan has terminated because we detected an update occurring during the scan."
msgstr ""

#: lib/wordfenceClass.php:5040
msgid "Wordfence will make one attempt to resume each failed scan stage. This scan may recover if this attempt is successful."
msgstr ""

#: lib/wordfenceClass.php:5042
msgid "Wordfence will make up to %d attempts to resume each failed scan stage. This scan may recover if one of these attempts is successful."
msgstr ""

#: lib/wordfenceClass.php:5049
msgid "Scan Stage Failed"
msgstr ""

#: lib/wordfenceClass.php:5050
msgid "A scan stage has failed to start. This is often because the site either cannot make outbound requests or is blocked from connecting to itself."
msgstr ""

#: lib/wordfenceClass.php:5056
msgid "Scans are not functional because SSL is unavailable."
msgstr ""

#: lib/wordfenceClass.php:5062
msgid "The scan has failed because we were unable to contact the Wordfence servers. Some sites may need adjustments to run scans reliably."
msgstr ""

#: lib/wordfenceClass.php:5070
msgid "The scan has failed because we received an unexpected response from the Wordfence servers. This may be a temporary error, though some sites may need adjustments to run scans reliably."
msgstr ""

#: lib/wordfenceClass.php:5097
msgid "Invalid email address given."
msgstr ""

#: lib/wordfenceClass.php:5134
#: lib/wordfenceClass.php:5255
msgid "Deleting an infected wp-config.php file must be done outside of Wordfence. The wp-config.php file contains your database credentials, which you will need to restore normal site operations. Your site will NOT function once the wp-config.php file has been deleted."
msgstr ""

#. translators: 1. File path. 2. Error message.
#: lib/wordfenceClass.php:5143
msgid "Could not delete file %1$s. Error was: %2$s"
msgstr ""

#. translators: File path.
#: lib/wordfenceClass.php:5164
msgid "We could not retrieve the original file of %s to do a repair."
msgstr ""

#. translators: File path.
#: lib/wordfenceClass.php:5169
msgid "An invalid file %s was specified for repair."
msgstr ""

#. translators: File path.
#: lib/wordfenceClass.php:5177
msgid "You don't have permission to repair %s. You need to either fix the file manually using FTP or change the file permissions and ownership so that your web server has write access to repair the file."
msgstr ""

#. translators: 1. File path. 2. Error message.
#: lib/wordfenceClass.php:5180
msgid "We could not write to %1$s. The error was: %2$s"
msgstr ""

#. translators: 1. File path. 2. Number of bytes.
#: lib/wordfenceClass.php:5191
msgid "We could not write to %1$s. (%2$d bytes written) You may not have permission to modify files on your WordPress server."
msgstr ""

#: lib/wordfenceClass.php:5203
msgid "Deleted some files with errors"
msgstr ""

#: lib/wordfenceClass.php:5203
msgid "Repaired some files with errors"
msgstr ""

#. translators: 1. Number of files. 2. Error message.
#: lib/wordfenceClass.php:5206
msgid "Deleted %1$d files but we encountered the following errors with other files: %2$s"
msgstr ""

#. translators: 1. Number of files. 2. Error message.
#: lib/wordfenceClass.php:5208
msgid "Repaired %1$d files but we encountered the following errors with other files: %2$s"
msgstr ""

#. translators: Number of files.
#: lib/wordfenceClass.php:5212
msgid "Deleted %d files successfully"
msgstr ""

#. translators: Number of files.
#: lib/wordfenceClass.php:5212
msgid "Repaired %d files successfully"
msgstr ""

#. translators: Number of files.
#: lib/wordfenceClass.php:5213
msgid "Deleted %d files successfully. No errors were encountered."
msgstr ""

#. translators: Number of files.
#: lib/wordfenceClass.php:5213
msgid "Repaired %d files successfully. No errors were encountered."
msgstr ""

#: lib/wordfenceClass.php:5216
msgid "Could not delete files"
msgstr ""

#: lib/wordfenceClass.php:5216
msgid "Could not repair files"
msgstr ""

#. translators: Error message.
#: lib/wordfenceClass.php:5219
msgid "We could not delete any of the files you selected. We encountered the following errors: %s"
msgstr ""

#. translators: Error message.
#: lib/wordfenceClass.php:5221
msgid "We could not repair any of the files you selected. We encountered the following errors: %s"
msgstr ""

#: lib/wordfenceClass.php:5224
msgid "Nothing done"
msgstr ""

#: lib/wordfenceClass.php:5225
msgid "We didn't delete anything and no errors were found."
msgstr ""

#: lib/wordfenceClass.php:5225
msgid "We didn't repair anything and no errors were found."
msgstr ""

#: lib/wordfenceClass.php:5233
msgid "Invalid bulk operation selected"
msgstr ""

#: lib/wordfenceClass.php:5243
msgid "Could not delete file because we could not find that issue."
msgstr ""

#: lib/wordfenceClass.php:5246
msgid "Could not delete file because that issue does not appear to be a file related issue."
msgstr ""

#: lib/wordfenceClass.php:5251
msgid "An invalid file was requested for deletion."
msgstr ""

#. translators: 1. File path. 2. Error message.
#: lib/wordfenceClass.php:5294
msgid "Could not delete file %1$s. The error was: %2$s"
msgstr ""

#: lib/wordfenceClass.php:5307
msgid "Could not remove the option because we could not find that issue."
msgstr ""

#: lib/wordfenceClass.php:5310
msgid "Could not remove the option because that issue does not appear to be a database related issue."
msgstr ""

#. translators: 1. WordPress option. 2. Error message.
#: lib/wordfenceClass.php:5323
msgid "Could not remove the option %1$s. The error was: %2$s"
msgstr ""

#: lib/wordfenceClass.php:5350
msgid "Modifying the .htaccess file did not resolve the issue, so the original .htaccess file was restored. You can fix this manually by setting <code>display_errors</code> to <code>Off</code> in your php.ini if your site is on a VPS or dedicated server that you control."
msgstr ""

#: lib/wordfenceClass.php:5392
msgid "We could not get the original file to do a repair."
msgstr ""

#: lib/wordfenceClass.php:5396
msgid "An invalid file was specified for repair."
msgstr ""

#: lib/wordfenceClass.php:5416
msgid "We could not write to that file. You may not have permission to modify files on your WordPress server."
msgstr ""

#: lib/wordfenceClass.php:5420
msgid "Ajax request received to start scan."
msgstr ""

#. translators: Number of URLs.
#: lib/wordfenceClass.php:5475
msgid "Page contains %d malware URL: "
msgid_plural "Page contains %d malware URLs: "
msgstr[0] ""
msgstr[1] ""

#: lib/wordfenceClass.php:5478
msgid "Run a Scan"
msgstr ""

#: lib/wordfenceClass.php:5526
msgid "Unknown dashboard data set."
msgstr ""

#: lib/wordfenceClass.php:5557
msgid "Bad security token. It may have been more than 12 hours since you reloaded the page you came from. Try reloading the page you came from. If that doesn't work, please sign out and sign-in again."
msgstr ""

#: lib/wordfenceClass.php:5744
msgid "An invalid IP address was specified."
msgstr ""

#: lib/wordfenceClass.php:5786
msgid "This link has expired. Refresh the scan results page and try again."
msgstr ""

#: lib/wordfenceClass.php:5810
#: lib/wordfenceClass.php:5853
#: lib/wordfenceClass.php:5902
msgid "File access blocked. (WORDFENCE_DISABLE_FILE_VIEWER is true)"
msgstr ""

#: lib/wordfenceClass.php:5817
#: lib/wordfenceClass.php:5909
msgid "Invalid file requested. (Relative paths not allowed)"
msgstr ""

#: lib/wordfenceClass.php:5821
#: lib/wordfenceClass.php:5857
#: lib/wordfenceClass.php:5913
msgid "File contains illegal characters."
msgstr ""

#. translators: Error message.
#: lib/wordfenceClass.php:5831
msgid "We could not open the requested file for reading. The error was: %s"
msgstr ""

#: lib/wordfenceClass.php:5839
msgid "Greater than 2 Gigs"
msgstr ""

#: lib/wordfenceClass.php:5844
msgid "Unknown file size."
msgstr ""

#: lib/wordfenceClass.php:5866
msgid "We could not get the contents of the original file to do a comparison."
msgstr ""

#: lib/wordfenceClass.php:5875
msgid "Empty file path provided"
msgstr ""

#: lib/wordfenceClass.php:5880
msgid "Unable to read file contents"
msgstr ""

#: lib/wordfenceClass.php:5917
msgid "File does not exist."
msgstr ""

#: lib/wordfenceClass.php:6244
#: modules/login-security/classes/controller/wordfencels.php:375
#: views/dashboard/options-group-import.php:167
msgid "Reload"
msgstr ""

#: lib/wordfenceClass.php:6261
msgid "${totalIPs} addresses in this network"
msgstr ""

#. translators: 1. Description of firewall action. 2. Description of input parameters.
#: lib/wordfenceClass.php:6262
msgid "%s in POST body: %s"
msgstr ""

#. translators: 1. Description of firewall action. 2. Description of input parameters.
#: lib/wordfenceClass.php:6263
msgid "%s in cookie: %s"
msgstr ""

#. translators: 1. Description of firewall action. 2. Description of input parameters.
#: lib/wordfenceClass.php:6264
msgid "%s in file: %s"
msgstr ""

#. translators: 1. Description of firewall action. 2. Description of input parameters.
#: lib/wordfenceClass.php:6265
msgid "%s in query string: %s"
msgstr ""

#. translators: Domain name.
#: lib/wordfenceClass.php:6266
msgid "%s is not valid hostname"
msgstr ""

#. translators: Domain name.
#: lib/wordfenceClass.php:6267
msgid ".htaccess Updated"
msgstr ""

#: lib/wordfenceClass.php:6268
msgid ".htaccess change"
msgstr ""

#: lib/wordfenceClass.php:6269
msgid "404 Not Found"
msgstr ""

#: lib/wordfenceClass.php:6270
msgid "Activity Log Sent"
msgstr ""

#: lib/wordfenceClass.php:6271
msgid "Add action to allowlist"
msgstr ""

#: lib/wordfenceClass.php:6272
msgid "Add code to .htaccess"
msgstr ""

#: lib/wordfenceClass.php:6273
msgid "All Hits"
msgstr ""

#. translators: WordPress username.
#: lib/wordfenceClass.php:6274
msgid "All capabilties of admin user %s were successfully revoked."
msgstr ""

#: lib/wordfenceClass.php:6276
msgid "An error occurred when adding the request to the allowlist."
msgstr ""

#: lib/wordfenceClass.php:6277
msgid "Are you sure you want to allowlist this action?"
msgstr ""

#: lib/wordfenceClass.php:6278
msgid "Authentication Code"
msgstr ""

#: lib/wordfenceClass.php:6279
msgid "Background Request Blocked"
msgstr ""

#: lib/wordfenceClass.php:6280
msgid "Block This Network"
msgstr ""

#: lib/wordfenceClass.php:6282
msgid "Blocked By Firewall"
msgstr ""

#: lib/wordfenceClass.php:6283
msgid "Blocked WAF"
msgstr ""

#: lib/wordfenceClass.php:6284
msgid "Blocked by Wordfence"
msgstr ""

#: lib/wordfenceClass.php:6285
msgid "Blocked by Wordfence plugin settings"
msgstr ""

#: lib/wordfenceClass.php:6286
msgid "Blocked by the Wordfence Application Firewall and plugin settings"
msgstr ""

#: lib/wordfenceClass.php:6287
msgid "Blocked by the Wordfence Security Network"
msgstr ""

#: lib/wordfenceClass.php:6288
msgid "Blocked by the Wordfence Web Application Firewall"
msgstr ""

#: lib/wordfenceClass.php:6291
msgid "Cellphone Sign-In Recovery Codes"
msgstr ""

#: lib/wordfenceClass.php:6292
msgid "Cellphone Sign-in activated for user."
msgstr ""

#: lib/wordfenceClass.php:6293
msgid "Click here to download a backup copy of this file now"
msgstr ""

#: lib/wordfenceClass.php:6294
msgid "Click here to download a backup copy of your .htaccess file now"
msgstr ""

#: lib/wordfenceClass.php:6295
msgid "Click to fix .htaccess"
msgstr ""

#: lib/wordfenceClass.php:6297
msgid "Crawlers"
msgstr ""

#: lib/wordfenceClass.php:6298
msgid "Diagnostic report has been sent successfully."
msgstr ""

#: lib/wordfenceClass.php:6299
msgid "Directory Listing Disabled"
msgstr ""

#: lib/wordfenceClass.php:6300
msgid "Directory listing has been disabled on your server."
msgstr ""

#: lib/wordfenceClass.php:6303
msgid "Don't ask again"
msgstr ""

#: lib/wordfenceClass.php:6305
msgid "Download Backup File"
msgstr ""

#: lib/wordfenceClass.php:6306
msgid "Each line of 16 letters and numbers is a single recovery code, with optional spaces for readability. When typing your password, enter \"wf\" followed by the entire code like \"mypassword wf1234 5678 90AB CDEF\". If your site shows a separate prompt for entering a code after entering only your username and password, enter only the code like \"1234 5678 90AB CDEF\". Your recovery codes are:"
msgstr ""

#: lib/wordfenceClass.php:6307
msgid "Email Diagnostic Report"
msgstr ""

#: lib/wordfenceClass.php:6308
msgid "Email Wordfence Activity Log"
msgstr ""

#: lib/wordfenceClass.php:6310
msgid "Enter the email address you would like to send the Wordfence activity log to. Note that the activity log may contain thousands of lines of data. This log is usually only sent to a member of the Wordfence support team. It also contains your PHP configuration from the phpinfo() function for diagnostic data."
msgstr ""

#: lib/wordfenceClass.php:6311
#: views/offboarding/deactivation-prompt.php:65
#: views/onboarding/banner.php:33
msgid "Error"
msgstr ""

#: lib/wordfenceClass.php:6312
msgid "Error Enabling All Options Page"
msgstr ""

#: lib/wordfenceClass.php:6313
msgid "Error Restoring Defaults"
msgstr ""

#: lib/wordfenceClass.php:6314
msgid "Error Saving Option"
msgstr ""

#: lib/wordfenceClass.php:6315
msgid "Error Saving Options"
msgstr ""

#: lib/wordfenceClass.php:6316
msgid "Failed Login"
msgstr ""

#: lib/wordfenceClass.php:6317
msgid "Failed Login: Invalid Username"
msgstr ""

#: lib/wordfenceClass.php:6318
msgid "Failed Login: Valid Username"
msgstr ""

#: lib/wordfenceClass.php:6319
msgid "File hidden successfully"
msgstr ""

#: lib/wordfenceClass.php:6320
msgid "File restored OK"
msgstr ""

#: lib/wordfenceClass.php:6321
msgid "Filter Traffic"
msgstr ""

#: lib/wordfenceClass.php:6322
msgid "Firewall Response"
msgstr ""

#: lib/wordfenceClass.php:6323
#: views/scanner/issue-wpscan_fullPathDiscl.php:8
msgid "Full Path Disclosure"
msgstr ""

#: lib/wordfenceClass.php:6324
msgid "Google Bot"
msgstr ""

#: lib/wordfenceClass.php:6325
msgid "Google Crawlers"
msgstr ""

#: lib/wordfenceClass.php:6326
msgid "HTTP Response Code"
msgstr ""

#: lib/wordfenceClass.php:6328
msgid "Humans"
msgstr ""

#: lib/wordfenceClass.php:6330
msgid "Key:"
msgstr ""

#. translators: Localized date.
#: lib/wordfenceClass.php:6331
msgid "Last Updated: %s"
msgstr ""

#. translators: Localized date.
#: lib/wordfenceClass.php:6332
msgid "Learn more about repairing modified files."
msgstr ""

#: lib/wordfenceClass.php:6334
#: modules/login-security/classes/controller/wordfencels.php:490
#: modules/login-security/classes/controller/wordfencels.php:869
#: modules/login-security/views/manage/grace-period.php:22
msgid "Locked Out"
msgstr ""

#: lib/wordfenceClass.php:6335
msgid "Locked out from logging in"
msgstr ""

#: lib/wordfenceClass.php:6336
msgid "Logged In"
msgstr ""

#: lib/wordfenceClass.php:6337
msgid "Logins"
msgstr ""

#: lib/wordfenceClass.php:6338
msgid "Logins and Logouts"
msgstr ""

#. translators: Localized date.
#: lib/wordfenceClass.php:6341
msgid "Next Update Check: %s"
msgstr ""

#. translators: Localized date.
#: lib/wordfenceClass.php:6342
msgid "No activity to report yet. Please complete your first scan."
msgstr ""

#: lib/wordfenceClass.php:6343
msgid "No issues have been ignored."
msgstr ""

#: lib/wordfenceClass.php:6344
msgid "No new issues have been found."
msgstr ""

#: lib/wordfenceClass.php:6345
msgid "No rules were updated. Please verify you have permissions to write to the /wp-content/wflogs directory."
msgstr ""

#: lib/wordfenceClass.php:6346
msgid "No rules were updated. Please verify your website can reach the Wordfence servers."
msgstr ""

#: lib/wordfenceClass.php:6347
msgid "No rules were updated. Your website has reached the maximum number of rule update requests. Please try again later."
msgstr ""

#: lib/wordfenceClass.php:6348
msgid "Note: Status will update when changes are saved"
msgstr ""

#: lib/wordfenceClass.php:6349
msgid "OK"
msgstr ""

#: lib/wordfenceClass.php:6350
msgid "Pages Not Found"
msgstr ""

#: lib/wordfenceClass.php:6351
msgid "Paid Members Only"
msgstr ""

#: lib/wordfenceClass.php:6353
msgid "Please enter a valid email address."
msgstr ""

#: lib/wordfenceClass.php:6354
msgid "Please include your support ticket number or forum username."
msgstr ""

#: lib/wordfenceClass.php:6355
msgid "Please make a backup of this file before proceeding. If you need to restore this backup file, you can copy it to the following path from your site's root:"
msgstr ""

#: lib/wordfenceClass.php:6356
msgid "Please specify a reason"
msgstr ""

#: lib/wordfenceClass.php:6357
msgid "Please specify a valid IP address range in the form of \"1.2.3.4 - 1.2.3.5\" without quotes. Make sure the dash between the IP addresses in a normal dash (a minus sign on your keyboard) and not another character that looks like a dash."
msgstr ""

#: lib/wordfenceClass.php:6358
msgid "Please specify either an IP address range, Hostname or a web browser pattern to match."
msgstr ""

#: lib/wordfenceClass.php:6359
msgid "Recent Activity"
msgstr ""

#: lib/wordfenceClass.php:6360
#: modules/login-security/views/manage/regenerate.php:12
msgid "Recovery Codes"
msgstr ""

#: lib/wordfenceClass.php:6361
msgid "Redirected"
msgstr ""

#: lib/wordfenceClass.php:6362
msgid "Redirected by Country Blocking bypass URL"
msgstr ""

#: lib/wordfenceClass.php:6363
msgid "Referer"
msgstr ""

#: lib/wordfenceClass.php:6364
msgid "Registered Users"
msgstr ""

#: lib/wordfenceClass.php:6366
msgid "Rule Update Failed"
msgstr ""

#: lib/wordfenceClass.php:6367
msgid "Rules Updated"
msgstr ""

#: lib/wordfenceClass.php:6369
msgid "Scan Complete."
msgstr ""

#: lib/wordfenceClass.php:6370
#: modules/login-security/views/manage/code.php:16
msgid "Scan the code below with your authenticator app to add this account. Some authenticator apps also allow you to type in the text version instead."
msgstr ""

#: lib/wordfenceClass.php:6371
msgid "Security Event"
msgstr ""

#: lib/wordfenceClass.php:6372
#: modules/login-security/classes/controller/wordfencels.php:341
msgid "Send"
msgstr ""

#: lib/wordfenceClass.php:6373
msgid "Sorry, but no data for that IP or domain was found."
msgstr ""

#: lib/wordfenceClass.php:6374
msgid "Specify a valid IP range"
msgstr ""

#: lib/wordfenceClass.php:6375
msgid "Specify a valid hostname"
msgstr ""

#: lib/wordfenceClass.php:6376
msgid "Specify an IP range, Hostname or Browser pattern"
msgstr ""

#: lib/wordfenceClass.php:6377
msgid "Success deleting file"
msgstr ""

#: lib/wordfenceClass.php:6378
msgid "Success removing option"
msgstr ""

#: lib/wordfenceClass.php:6379
msgid "Success restoring file"
msgstr ""

#: lib/wordfenceClass.php:6380
msgid "Success updating option"
msgstr ""

#: lib/wordfenceClass.php:6381
msgid "Successfully deleted admin"
msgstr ""

#: lib/wordfenceClass.php:6382
msgid "Successfully revoked admin"
msgstr ""

#: lib/wordfenceClass.php:6383
msgid "Test Email Sent"
msgstr ""

#: lib/wordfenceClass.php:6384
msgid "The 'How does Wordfence get IPs' option was successfully updated to the recommended value."
msgstr ""

#: lib/wordfenceClass.php:6385
msgid "The Full Path disclosure issue has been fixed"
msgstr ""

#. translators: WordPress username.
#: lib/wordfenceClass.php:6386
msgid "The admin user %s was successfully deleted."
msgstr ""

#. translators: File path.
#: lib/wordfenceClass.php:6387
msgid "The file %s was successfully deleted."
msgstr ""

#. translators: File path.
#: lib/wordfenceClass.php:6388
msgid "The file %s was successfully hidden from public view."
msgstr ""

#. translators: File path.
#: lib/wordfenceClass.php:6389
msgid "The file %s was successfully restored."
msgstr ""

#. translators: WordPress option.
#: lib/wordfenceClass.php:6390
msgid "The option %s was successfully removed."
msgstr ""

#. translators: WordPress option.
#: lib/wordfenceClass.php:6391
msgid "The request has been allowlisted. Please try it again."
msgstr ""

#: lib/wordfenceClass.php:6392
msgid "There was an error while sending the email."
msgstr ""

#: lib/wordfenceClass.php:6393
msgid "This will be shown only once. Keep these codes somewhere safe."
msgstr ""

#: lib/wordfenceClass.php:6394
msgid "Throttled"
msgstr ""

#: lib/wordfenceClass.php:6395
msgid "Two Factor Status"
msgstr ""

#. translators: HTTP client type.
#: lib/wordfenceClass.php:6397
msgid "Type: %s"
msgstr ""

#. translators: HTTP client type.
#: lib/wordfenceClass.php:6398
#: views/scanner/issue-checkGSB.php:8
#: views/scanner/issue-commentBadURL.php:8
#: views/scanner/issue-configReadable.php:12
#: views/scanner/issue-configReadable.php:23
#: views/scanner/issue-optionBadURL.php:8
#: views/scanner/issue-postBadURL.php:8
#: views/scanner/issue-publiclyAccessible.php:12
#: views/scanner/issue-publiclyAccessible.php:23
#: views/scanner/issue-wpscan_directoryList.php:12
#: views/scanner/issue-wpscan_directoryList.php:23
#: views/scanner/issue-wpscan_fullPathDiscl.php:12
#: views/scanner/issue-wpscan_fullPathDiscl.php:23
#: views/waf/option-whitelist.php:9
#: views/waf/option-whitelist.php:106
#: views/waf/options-group-whitelisted.php:82
#: views/waf/options-group-whitelisted.php:95
msgid "URL"
msgstr ""

#: lib/wordfenceClass.php:6399
msgid "Unable to automatically hide file"
msgstr ""

#. translators: 2FA backup codes.
#: lib/wordfenceClass.php:6400
msgid "Use one of these %s codes to log in if you are unable to access your phone. Codes are 16 characters long, plus optional spaces. Each one may be used only once."
msgstr ""

#. translators: 2FA backup codes.
#: lib/wordfenceClass.php:6401
msgid "Use one of these %s codes to log in if you lose access to your authenticator device. Codes are 16 characters long, plus optional spaces. Each one may be used only once."
msgstr ""

#: lib/wordfenceClass.php:6403
msgid "User ID"
msgstr ""

#: lib/wordfenceClass.php:6405
msgid "WHOIS LOOKUP"
msgstr ""

#: lib/wordfenceClass.php:6406
msgid "We are about to change your <em>.htaccess</em> file. Please make a backup of this file before proceeding."
msgstr ""

#. translators: Error message.
#: lib/wordfenceClass.php:6407
msgid "We can't modify your .htaccess file for you because: %s"
msgstr ""

#. translators: Error message.
#: lib/wordfenceClass.php:6408
msgid "We encountered a problem"
msgstr ""

#. translators: URL.
#: lib/wordfenceClass.php:6409
msgid "Wordfence Firewall blocked a background request to WordPress for the URL %s. If this occurred as a result of an intentional action, you may consider allowlisting the request to allow it in the future."
msgstr ""

#. translators: URL.
#: lib/wordfenceClass.php:6410
msgid "Wordfence is working..."
msgstr ""

#: lib/wordfenceClass.php:6411
msgid "You are using Nginx as your web server. You'll need to disable autoindexing in your nginx.conf. See the <a target='_blank'  rel='noopener noreferrer' href='https://nginx.org/en/docs/http/ngx_http_autoindex_module.html'>Nginx docs for more info</a> on how to do this."
msgstr ""

#: lib/wordfenceClass.php:6412
msgid "You are using an Nginx web server and using a FastCGI processor like PHP5-FPM. You will need to manually delete or hide those files."
msgstr ""

#: lib/wordfenceClass.php:6413
msgid "You are using an Nginx web server and using a FastCGI processor like PHP5-FPM. You will need to manually modify your php.ini to disable <em>display_error</em>"
msgstr ""

#: lib/wordfenceClass.php:6414
msgid "You forgot to include a reason you're blocking this IP range. We ask you to include this for your own record keeping."
msgstr ""

#: lib/wordfenceClass.php:6415
#: modules/login-security/classes/controller/wordfencels.php:400
msgid "You have unsaved changes to your options. If you leave this page, those changes will be lost."
msgstr ""

#: lib/wordfenceClass.php:6416
msgid "Your .htaccess has been updated successfully. Please verify your site is functioning normally."
msgstr ""

#. translators: Email address.
#: lib/wordfenceClass.php:6417
msgid "Your Wordfence activity log was sent to %s"
msgstr ""

#. translators: Email address.
#: lib/wordfenceClass.php:6418
msgid "Your rules have been updated successfully."
msgstr ""

#: lib/wordfenceClass.php:6419
msgid "Your rules have been updated successfully. You are currently using the free version of Wordfence. Upgrade to Wordfence premium to have your rules updated automatically as new threats emerge. <a href=\"https://www.wordfence.com/wafUpdateRules1/wordfence-signup/\">Click here to purchase a premium license</a>. <em>Note: Your rules will still update every 30 days as a free user.</em>"
msgstr ""

#. translators: wp_mail() return value.
#: lib/wordfenceClass.php:6420
msgid "Your test email was sent to the requested email address. The result we received from the WordPress wp_mail() function was: %s<br /><br />A 'True' result means WordPress thinks the mail was sent without errors. A 'False' result means that WordPress encountered an error sending your mail. Note that it's possible to get a 'True' response with an error elsewhere in your mail system that may cause emails to not be delivered."
msgstr ""

#. translators: wp_mail() return value.
#: lib/wordfenceClass.php:6421
msgid "blocked by firewall"
msgstr ""

#. translators: Reason for firewall action.
#: lib/wordfenceClass.php:6422
msgid "blocked by firewall for %s"
msgstr ""

#. translators: Reason for firewall action.
#: lib/wordfenceClass.php:6423
msgid "blocked by real-time IP blocklist"
msgstr ""

#: lib/wordfenceClass.php:6424
msgid "blocked by the Wordfence Security Network"
msgstr ""

#. translators: Reason for firewall action.
#: lib/wordfenceClass.php:6425
msgid "blocked for %s"
msgstr ""

#. translators: Reason for firewall action.
#: lib/wordfenceClass.php:6426
msgid "locked out from logging in"
msgstr ""

#: lib/wordfenceClass.php:6439
msgid "Wordfence generated an error on activation. The output we received during activation was:"
msgstr ""

#: lib/wordfenceClass.php:6446
msgid "Wordfence's license key is missing."
msgstr ""

#: lib/wordfenceClass.php:6447
msgid "This could be caused by a database problem. You may need to repair your \"wfconfig\" database table or fix your database user's privileges if they have changed recently, or you may need to reinstall Wordfence. Please <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">contact Wordfence support<span class=\"screen-reader-text\"> ("
msgstr ""

#: lib/wordfenceClass.php:6461
msgid "The Wordfence Web Application Firewall cannot run."
msgstr ""

#. translators: 1. WordPress admin panel URL. 2. Support URL.
#: lib/wordfenceClass.php:6464
msgid "The configuration files are corrupt or inaccessible by the web server, which is preventing the WAF from functioning. Please verify the web server has permission to access the configuration files. You may also try to rebuild the configuration file by <a href=\"%1$s\">clicking here</a>. It will automatically resume normal operation when it is fixed. <a class=\"wfhelp\" target=\"_blank\" rel=\"noopener noreferrer\" href=\"%2$s\"><span class=\"screen-reader-text\"> ("
msgstr ""

#: lib/wordfenceClass.php:6470
msgid "The WAF storage engine is currently set to mysqli, but Wordfence is unable to use the database. The WAF will fall back to using local file system storage instead."
msgstr ""

#: lib/wordfenceClass.php:6483
#: lib/wordfenceClass.php:6502
msgid "The Wordfence Web Application Firewall needs a configuration update."
msgstr ""

#. translators: 1. WordPress admin panel URL. 2. Support URL.
#: lib/wordfenceClass.php:6486
msgid "It is currently configured to use an older version of PHP and may become deactivated if PHP is updated. You may perform the configuration update automatically by <a href=\"%1$s\">clicking here</a>. <a class=\"wfhelp\" target=\"_blank\" rel=\"noopener noreferrer\" href=\"%2$s\"><span class=\"screen-reader-text\"> ("
msgstr ""

#. translators: 1. WordPress admin panel URL. 2. Support URL.
#: lib/wordfenceClass.php:6505
msgid "It is not currently in extended protection mode but was configured to use an older version of PHP and may have become deactivated when PHP was updated. You may perform the configuration update automatically by <a href=\"%1$s\">clicking here</a> or use the \"Optimize the Wordfence Firewall\" button on the Firewall Options page. <a class=\"wfhelp\" target=\"_blank\" rel=\"noopener noreferrer\" href=\"%2$s\"><span class=\"screen-reader-text\"> ("
msgstr ""

#: lib/wordfenceClass.php:6511
msgid "The Wordfence Web Application Firewall is in read-only mode."
msgstr ""

#: lib/wordfenceClass.php:6520
msgid "This site is currently using PHP's built in REMOTE_ADDR."
msgstr ""

#: lib/wordfenceClass.php:6523
msgid "This site is currently using the X-Forwarded-For HTTP header, which should only be used when the site is behind a front-end proxy that outputs this header."
msgstr ""

#: lib/wordfenceClass.php:6526
msgid "This site is currently using the X-Real-IP HTTP header, which should only be used when the site is behind a front-end proxy that outputs this header."
msgstr ""

#: lib/wordfenceClass.php:6529
msgid "This site is currently using the Cloudflare \"CF-Connecting-IP\" HTTP header, which should only be used when the site is behind Cloudflare."
msgstr ""

#: lib/wordfenceClass.php:6546
msgid "Your 'How does Wordfence get IPs' setting is misconfigured."
msgstr ""

#: lib/wordfenceClass.php:6548
msgid "Click here to use the recommended setting"
msgstr ""

#: lib/wordfenceClass.php:6550
msgid "or"
msgstr ""

#: lib/wordfenceClass.php:6552
msgid "visit the options page"
msgstr ""

#: lib/wordfenceClass.php:6554
msgid "to manually update it."
msgstr ""

#: lib/wordfenceClass.php:6562
msgid "Do you want Wordfence to stay up-to-date automatically?"
msgstr ""

#: lib/wordfenceClass.php:6564
msgid "Yes, enable auto-update."
msgstr ""

#: lib/wordfenceClass.php:6566
msgid "No thanks."
msgstr ""

#: lib/wordfenceClass.php:6590
msgid "Wordfence country blocking is currently set to block the United States. We recommend allowing access from the United States for Google and other benign crawlers, unless you choose to only block the login page."
msgstr ""

#. translators: Localized date.
#: lib/wordfenceClass.php:6708
msgid "The last rules update for the Wordfence Web Application Firewall was unsuccessful. The last successful update check was %s, so this site may be missing new rules added since then."
msgstr ""

#. translators: 1. Localized date. 2. WordPress admin panel URL.
#: lib/wordfenceClass.php:6716
msgid "You may wait for the next automatic attempt at %1$s or try to <a href=\"%2$s\">Manually Update</a> by clicking the \"Manually Refresh Rules\" button below the Rules list."
msgstr ""

#. translators: WordPress admin panel URL.
#: lib/wordfenceClass.php:6722
msgid "You may wait for the next automatic attempt or try to <a href=\"%s\">Manually Update</a> by clicking the \"Manually Refresh Rules\" button below the Rules list."
msgstr ""

#. translators: WordPress admin panel URL.
#: lib/wordfenceClass.php:6727
msgid "You may wait for the next automatic attempt at %s or log into the parent site to manually update by clicking the \"Manually Refresh Rules\" button below the Rules list."
msgstr ""

#: lib/wordfenceClass.php:6730
msgid "You may wait for the next automatic attempt or log into the parent site to manually update by clicking the \"Manually Refresh Rules\" button below the Rules list."
msgstr ""

#: lib/wordfenceClass.php:6857
#: models/page/wfPage.php:101
msgid "Dashboard"
msgstr ""

#: lib/wordfenceClass.php:6896
#: views/onboarding/modal-final-attempt.php:24
msgid "Install"
msgstr ""

#: lib/wordfenceClass.php:6907
msgid "Upgrade to Care"
msgstr ""

#: lib/wordfenceClass.php:6911
msgid "Upgrade to Response"
msgstr ""

#. translators: Number of notifications.
#: lib/wordfenceClass.php:6960
msgid "You have %d new Wordfence notification."
msgid_plural "You have %d new Wordfence notifications."
msgstr[0] ""
msgstr[1] ""

#: lib/wordfenceClass.php:6984
msgid "JavaScript Errors"
msgstr ""

#: lib/wordfenceClass.php:6990
msgid "Malware URLs"
msgstr ""

#. translators: WordPress admin panel URL.
#: lib/wordfenceClass.php:7108
#: lib/wordfenceClass.php:7171
msgid "<a href=\"%s\">Click here</a> to rebuild the configuration file."
msgstr ""

#. translators: File path.
#: lib/wordfenceClass.php:7119
#: lib/wordfenceClass.php:7182
msgid "We were unable to write to %s which the WAF uses for storage. Please update permissions on the parent directory so the web server can write to it."
msgstr ""

#: lib/wordfenceClass.php:7129
#: lib/wordfenceClass.php:7192
msgid "An error occured when fetching the WAF configuration from the database."
msgstr ""

#. translators: Plugin name.
#: lib/wordfenceClass.php:7214
msgid "The Wordfence Live Traffic feature has been disabled because you have %s active which is not compatible with Wordfence Live Traffic."
msgstr ""

#. translators: 1. Plugin name.
#: lib/wordfenceClass.php:7216
msgid "If you want to reenable Wordfence Live Traffic, you need to deactivate %1$s and then go to the Wordfence options page and reenable Live Traffic there. Wordfence does work with %1$s, however Live Traffic will be disabled and the Wordfence firewall will also count less hits per visitor because of the %1$s caching function. All other functions should work correctly."
msgstr ""

#. translators: File path.
#: lib/wordfenceClass.php:7309
msgid "The file <code>%s</code> was restored successfully."
msgstr ""

#: lib/wordfenceClass.php:7314
msgid "There was an error restoring the file."
msgstr ""

#: lib/wordfenceClass.php:7324
#: lib/wordfenceClass.php:7347
msgid "Return to scan results"
msgstr ""

#. translators: File path.
#: lib/wordfenceClass.php:7333
msgid "The file <code>%s</code> was deleted successfully."
msgstr ""

#: lib/wordfenceClass.php:7337
msgid "There was an error deleting the file."
msgstr ""

#. translators: IP address.
#: lib/wordfenceClass.php:7407
msgid ""
"User IP: %s\n"
""
msgstr ""

#. translators: Domain name.
#: lib/wordfenceClass.php:7410
msgid ""
"User hostname: %s\n"
""
msgstr ""

#: lib/wordfenceClass.php:7414
msgid "User location: "
msgstr ""

#. translators: WordPress admin panel URL.
#: lib/wordfenceClass.php:7469
msgid "No longer an administrator for this site? Click here to stop receiving security alerts: %s"
msgstr ""

#: lib/wordfenceClass.php:7510
msgid "The IP you provided must be in dotted quad notation or use ranges with square brackets. e.g. 10.11.12.13 or 10.11.12.[1-50]"
msgstr ""

#: lib/wordfenceClass.php:7529
msgid "Invalid email address provided"
msgstr ""

#: lib/wordfenceClass.php:7534
msgid "Test email sent successfully"
msgstr ""

#: lib/wordfenceClass.php:7535
msgid "Test email failed to send"
msgstr ""

#. translators: Localized date range.
#: lib/wordfenceClass.php:7553
msgid "Wordfence activity in the past %s"
msgstr ""

#: lib/wordfenceClass.php:7593
#: lib/wordfenceClass.php:7597
#: lib/wordfenceClass.php:7628
#: lib/wordfenceClass.php:7655
#: lib/wordfenceClass.php:7659
msgid "We could not find that user in the database."
msgstr ""

#: lib/wordfenceClass.php:7601
msgid "This user's email is the network admin email. It will need to be changed before deleting this user."
msgstr ""

#: lib/wordfenceClass.php:7651
msgid "We could not find that issue in the database."
msgstr ""

#: lib/wordfenceClass.php:7694
msgid "Wordfence could not find your .htaccess file."
msgstr ""

#: lib/wordfenceClass.php:7710
msgid "Updating the .htaccess did not fix the issue. You may need to add <code>Options -Indexes</code> to your httpd.conf if using Apache, or find documentation on how to disable directory listing for your web server."
msgstr ""

#: lib/wordfenceClass.php:7716
msgid "There was an error writing to your .htaccess file."
msgstr ""

#: lib/wordfenceClass.php:7795
msgid "Required parameters not sent."
msgstr ""

#: lib/wordfenceClass.php:7805
msgid "The WAF is currently in read-only mode and will not save any configuration changes."
msgstr ""

#: lib/wordfenceClass.php:7843
#: views/waf/option-whitelist.php:60
msgid "Allowlisted via Firewall Options page"
msgstr ""

#: lib/wordfenceClass.php:8130
msgid "Allowlisted via Live Traffic"
msgstr ""

#: lib/wordfenceClass.php:8294
#: lib/wordfenceClass.php:8391
msgid "A valid server configuration was not provided."
msgstr ""

#: lib/wordfenceClass.php:8305
#: lib/wordfenceClass.php:8412
msgid "Filesystem Credentials Required"
msgstr ""

#. translators: Support URL.
#: lib/wordfenceClass.php:8307
#: lib/wordfenceClass.php:8331
#: lib/wordfenceClass.php:8375
msgid "If you cannot complete the setup process, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"%s\">click here for help<span class=\"screen-reader-text\"> (opens in new tab)</span></a>"
msgstr ""

#. translators: Support URL.
#: lib/wordfenceClass.php:8308
msgid "Once you have entered credentials, click Continue to complete the setup."
msgstr ""

#: lib/wordfenceClass.php:8329
#: lib/wordfenceClass.php:8437
msgid "Filesystem Permission Error"
msgstr ""

#: lib/wordfenceClass.php:8355
msgid "Manual Installation Instructions"
msgstr ""

#: lib/wordfenceClass.php:8362
msgid "Installation Successful"
msgstr ""

#: lib/wordfenceClass.php:8373
msgid "Installation Failed"
msgstr ""

#. translators: Support URL.
#: lib/wordfenceClass.php:8414
#: lib/wordfenceClass.php:8439
#: lib/wordfenceClass.php:8470
#: lib/wordfenceClass.php:8499
#: lib/wordfenceClass.php:8545
#: views/waf/waf-uninstall.php:13
msgid "If you cannot complete the uninstall process, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"%s\">click here for help<span class=\"screen-reader-text\"> (opens in new tab)</span></a>"
msgstr ""

#. translators: Support URL.
#: lib/wordfenceClass.php:8415
msgid "Once you have entered credentials, click Continue to complete uninstallation."
msgstr ""

#: lib/wordfenceClass.php:8459
msgid "The <code>auto_prepend_file</code> setting has been successfully removed from <code>.htaccess</code> and <code>.user.ini</code>. Once this change takes effect, Extended Protection Mode will be disabled."
msgstr ""

#: lib/wordfenceClass.php:8461
msgid "Any previous value for <code>auto_prepend_file</code> will need to be re-enabled manually if still needed."
msgstr ""

#. translators: Time until.
#: lib/wordfenceClass.php:8465
msgid "Waiting for it to take effect. This may take up to %s."
msgstr ""

#: lib/wordfenceClass.php:8468
msgid "Waiting for Changes"
msgstr ""

#: lib/wordfenceClass.php:8490
msgid "Extended Protection Mode has not been disabled. This may be because <code>auto_prepend_file</code> is configured somewhere else or the value is still cached by PHP."
msgstr ""

#: lib/wordfenceClass.php:8492
msgid "Retrying Failed."
msgstr ""

#: lib/wordfenceClass.php:8494
#: modules/login-security/views/settings/user-stats.php:75
msgid "Try Again"
msgstr ""

#: lib/wordfenceClass.php:8497
msgid "Unable to Uninstall"
msgstr ""

#: lib/wordfenceClass.php:8533
msgid "Uninstallation Complete"
msgstr ""

#: lib/wordfenceClass.php:8543
msgid "Uninstallation Failed"
msgstr ""

#. translators: 1. Number of attacks/blocks. 2. Time since.
#: lib/wordfenceClass.php:8763
msgid "The Wordfence Web Application Firewall has blocked %1$d attacks over the last %2$s."
msgstr ""

#: lib/wordfenceClass.php:8768
msgid "Wordfence is blocking these attacks, and we're sending this notice to make you aware that there is a higher volume of the attacks than usual. Additionally, the Wordfence Real-Time IP Blocklist can block known attackers' IP addresses automatically for Premium users, including any probing requests that may not be malicious on their own. All Wordfence users can also opt to block the attacking IPs manually if desired. As always, be sure to watch your scan results and keep your plugins, themes and WordPress core version updated."
msgstr ""

#: lib/wordfenceClass.php:8770
msgid "Below is a sample of these recent attacks:"
msgstr ""

#: lib/wordfenceClass.php:9369
msgid "An error was detected with this site's configuration that is preventing a successful connection to Wordfence Central. Disconnecting from Central <a href=\"%s\">on the Wordfence Dashboard</a> and reconnecting may resolve it. If the issue persists, please contact Wordfence support."
msgstr ""

#: lib/wordfenceClass.php:9376
msgid "To make your site as secure as possible, take a moment to optimize the Wordfence Web Application Firewall:"
msgstr ""

#: lib/wordfenceClass.php:9376
msgid "Click here to configure"
msgstr ""

#. translators: Support URL.
#: lib/wordfenceClass.php:9379
msgid "If you cannot complete the setup process, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"%s\">click here for help<span class=\"screen-reader-text\"> (opens in new tab)</span></a>."
msgstr ""

#: lib/wordfenceClass.php:9385
#: views/waf/waf-install-success.php:14
msgid "Nice work! The firewall is now optimized."
msgstr ""

#: lib/wordfenceClass.php:9387
#: lib/wordfenceClass.php:9399
#: views/waf/waf-install-success.php:16
#: views/waf/waf-uninstall-success.php:19
msgid "The changes have not yet taken effect. If you are using LiteSpeed or IIS as your web server or CGI/FastCGI interface, you may need to wait a few minutes for the changes to take effect since the configuration files are sometimes cached. You also may need to select a different server configuration in order to complete this step, but wait for a few minutes before trying. You can try refreshing this page."
msgstr ""

#: lib/wordfenceClass.php:9393
#: views/waf/waf-uninstall-success.php:15
msgid "Uninstallation was successful!"
msgstr ""

#: lib/wordfenceClass.php:9396
#: views/waf/waf-uninstall-success.php:17
msgid "Uninstallation from this site was successful! The Wordfence Firewall is still active because it is installed in another WordPress installation."
msgstr ""

#: lib/wordfenceClass.php:9404
msgid "The update was successful!"
msgstr ""

#: lib/wordfenceClass.php:9554
msgid "Auth grant is invalid."
msgstr ""

#: lib/wordfenceClass.php:9572
#: lib/wordfenceClass.php:9661
msgid "Internal error when connecting to Wordfence Central (see server error log)"
msgstr ""

#. translators: Error message.
#: lib/wordfenceClass.php:9583
msgid "Invalid response from Wordfence Central: %s"
msgstr ""

#. translators: JSON property.
#: lib/wordfenceClass.php:9589
#: lib/wordfenceClass.php:9602
msgid "Invalid response from Wordfence Central. Parameter %s not found in response."
msgstr ""

#: lib/wordfenceClass.php:9631
#: lib/wordfenceClass.php:9812
msgid "Access token not found."
msgstr ""

#: lib/wordfenceClass.php:9690
#: lib/wordfenceClass.php:9772
msgid "Invalid response from Wordfence Central."
msgstr ""

#: lib/wordfenceClass.php:9748
msgid "Auth grant not found."
msgstr ""

#: lib/wordfenceClass.php:9854
msgid "The current site URL does not match the Wordfence Central connection information. Local connection information has been removed, but %s is still registered in Wordfence Central."
msgstr ""

#: lib/wordfenceClass.php:9860
msgid "Unable to communicate with Wordfence Central"
msgstr ""

#: lib/wordfenceClass.php:10078
msgid "We were unable to create the <code>wordfence-waf.php</code> file in the root of the WordPress installation. It's possible WordPress cannot write to the <code>wordfence-waf.php</code> file because of file permissions. Please verify the permissions are correct and retry the installation."
msgstr ""

#: lib/wordfenceClass.php:10170
#: lib/wordfenceClass.php:10241
msgid "We were unable to make changes to the .htaccess file. It's possible WordPress cannot write to the .htaccess file because of file permissions, which may have been set by another security plugin, or you may have set them manually. Please verify the permissions allow the web server to write to the file, and retry the installation."
msgstr ""

#. translators: File path.
#: lib/wordfenceClass.php:10211
#: lib/wordfenceClass.php:10259
msgid "We were unable to make changes to the %1$s file. It's possible WordPress cannot write to the %1$s file because of file permissions. Please verify the permissions are correct and retry the installation."
msgstr ""

#: lib/wordfenceClass.php:10275
msgid "We were unable to remove the <code>wordfence-waf.php</code> file in the root of the WordPress installation. It's possible WordPress cannot remove the <code>wordfence-waf.php</code> file because of file permissions. Please verify the permissions are correct and retry the removal."
msgstr ""

#: lib/wordfenceHash.php:82
msgid "Fetching core, theme and plugin file signatures from Wordfence"
msgstr ""

#: lib/wordfenceHash.php:91
msgid "Fetching list of known malware files from Wordfence"
msgstr ""

#: lib/wordfenceHash.php:95
msgid "Using cached malware prefixes"
msgstr ""

#: lib/wordfenceHash.php:98
msgid "Fetching fresh malware prefixes"
msgstr ""

#: lib/wordfenceHash.php:103
msgid "Could not fetch malware signatures from Wordfence servers."
msgstr ""

#: lib/wordfenceHash.php:108
msgid "Malware data received from Wordfence servers was not valid."
msgstr ""

#: lib/wordfenceHash.php:120
msgid "Fetching list of known core files from Wordfence"
msgstr ""

#: lib/wordfenceHash.php:124
msgid "Using cached core hashes"
msgstr ""

#: lib/wordfenceHash.php:127
msgid "Fetching fresh core hashes"
msgstr ""

#: lib/wordfenceHash.php:132
msgid "Could not fetch core hashes from Wordfence servers."
msgstr ""

#: lib/wordfenceHash.php:137
msgid "Core hashes data received from Wordfence servers was not valid."
msgstr ""

#: lib/wordfenceHash.php:155
msgid "Comparing core WordPress files against originals in repository"
msgstr ""

#: lib/wordfenceHash.php:155
msgid "Skipping core scan"
msgstr ""

#: lib/wordfenceHash.php:156
msgid "Comparing open source themes against WordPress.org originals"
msgstr ""

#: lib/wordfenceHash.php:156
msgid "Skipping theme scan"
msgstr ""

#: lib/wordfenceHash.php:157
msgid "Comparing plugins against WordPress.org originals"
msgstr ""

#: lib/wordfenceHash.php:157
msgid "Skipping plugin scan"
msgstr ""

#: lib/wordfenceHash.php:158
msgid "Scanning for known malware files"
msgstr ""

#: lib/wordfenceHash.php:158
msgid "Skipping malware scan"
msgstr ""

#: lib/wordfenceHash.php:159
msgid "Scanning for unknown files in wp-admin and wp-includes"
msgstr ""

#: lib/wordfenceHash.php:159
msgid "Skipping unknown core file scan"
msgstr ""

#. translators: WordPress version.
#: lib/wordfenceHash.php:172
msgid "Unknown WordPress core version: %s"
msgstr ""

#. translators: WordPress version.
#: lib/wordfenceHash.php:173
msgid "The core files scan will not be run because this version of WordPress is not currently indexed by Wordfence. This may be due to using a prerelease version or because the servers are still indexing a new release. If you are using an official WordPress release, this issue will automatically dismiss once the version is indexed and another scan is run."
msgstr ""

#. translators: File path.
#: lib/wordfenceHash.php:212
msgid "Wordfence file scanner detected a possible infinite loop. Exiting on file: %s"
msgstr ""

#. translators: Time in seconds.
#: lib/wordfenceHash.php:226
msgid "Index time: %s"
msgstr ""

#: lib/wordfenceHash.php:231
msgid "Beginning file hashing"
msgstr ""

#: lib/wordfenceHash.php:240
msgid "Processing pending issues"
msgstr ""

#. translators: 1. Number of files. 2. Data in bytes.
#: lib/wordfenceHash.php:243
msgid "Analyzed %1$d files containing %2$s of data."
msgstr ""

#: lib/wordfenceHash.php:252
msgid "Invalid response from Wordfence API during check_possible_malware"
msgstr ""

#. translators: File path.
#: lib/wordfenceHash.php:265
msgid "This file is suspected malware: %s"
msgstr ""

#. translators: Malware name/title.
#: lib/wordfenceHash.php:266
msgid "This file's signature matches a known malware file. The title of the malware is '%s'. Immediately inspect this file using the 'View' option below and consider deleting it from your server."
msgstr ""

#: lib/wordfenceHash.php:308
msgid "Ignoring invalid scan file child: %s"
msgstr ""

#. translators: File path.
#: lib/wordfenceHash.php:318
#: lib/wordfenceHash.php:351
msgid "Found .suspected file: %s"
msgstr ""

#. translators: File path.
#: lib/wordfenceHash.php:327
#: lib/wordfenceHash.php:360
msgid "Skipping unneeded hash: %s"
msgstr ""

#. translators: File path.
#: lib/wordfenceHash.php:337
msgid "Skipping inaccessible directory: %s"
msgstr ""

#. translators: Number of files.
#: lib/wordfenceHash.php:388
msgid "%d files indexed"
msgstr ""

#. translators: File path.
#: lib/wordfenceHash.php:417
msgid "Forking during indexing: %s"
msgstr ""

#. translators: PHP max execution time.
#: lib/wordfenceHash.php:420
msgid "Calling fork() from wordfenceHash with maxExecTime: %s"
msgstr ""

#. translators: 1. File path. 2. Memory in bytes.
#: lib/wordfenceHash.php:456
msgid "Scanning: %1$s (Mem:%2$s)"
msgstr ""

#. translators: File path.
#: lib/wordfenceHash.php:461
msgid "Scanning: %s"
msgstr ""

#. translators: File path.
#: lib/wordfenceHash.php:499
msgid "WordPress core file modified: %s"
msgstr ""

#. translators: File path.
#: lib/wordfenceHash.php:500
msgid "This WordPress core file has been modified and differs from the original file distributed with this version of WordPress."
msgstr ""

#. translators: File path.
#: lib/wordfenceHash.php:537
msgid "Modified plugin file: %s"
msgstr ""

#. translators: 1. Plugin name. 2. Plugin version. 3. Support URL.
#: lib/wordfenceHash.php:540
msgid "This file belongs to plugin \"%1$s\" version \"%2$s\" and has been modified from the file that is distributed by WordPress.org for this version. Please use the link to see how the file has changed. If you have modified this file yourself, you can safely ignore this warning. If you see a lot of changed files in a plugin that have been made by the author, then try uninstalling and reinstalling the plugin to force an upgrade. Doing this is a workaround for plugin authors who don't manage their code correctly. <a href=\"%3$s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More<span class=\"screen-reader-text\"> ("
msgstr ""

#. translators: File path.
#: lib/wordfenceHash.php:584
msgid "Modified theme file: %s"
msgstr ""

#. translators: 1. Plugin name. 2. Plugin version. 3. Support URL.
#: lib/wordfenceHash.php:587
msgid "This file belongs to theme \"%1$s\" version \"%2$s\" and has been modified from the original distribution. It is common for site owners to modify their theme files, so if you have modified this file yourself you can safely ignore this warning. <a href=\"%3$s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More<span class=\"screen-reader-text\"> ("
msgstr ""

#. translators: File path.
#: lib/wordfenceHash.php:621
msgid "Old WordPress core file not removed during update: %s"
msgstr ""

#. translators: File path.
#: lib/wordfenceHash.php:622
msgid "This file is in a WordPress core location but is from an older version of WordPress and not used with your current version. Hosting or permissions issues can cause these files to get left behind when WordPress is updated and they should be removed if possible."
msgstr ""

#. translators: File path.
#: lib/wordfenceHash.php:639
#: lib/wordfenceHash.php:660
msgid "Unknown file in WordPress core: %s"
msgstr ""

#. translators: File path.
#: lib/wordfenceHash.php:640
msgid "This file is in a WordPress core location but is not distributed with this version of WordPress. This scan often includes files left over from a previous WordPress version, but it may also find files added by another plugin, files added by your host, or malicious files added by an attacker."
msgstr ""

#. translators: Support URL.
#: lib/wordfenceHash.php:661
msgid "This file is in a WordPress core location but is not distributed with this version of WordPress. This scan often includes files left over from a previous WordPress version, but it may also find files added by another plugin, files added by your host, or malicious files added by an attacker. <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More<span class=\"screen-reader-text\"> ("
msgstr ""

#. translators: File path.
#: lib/wordfenceHash.php:735
msgid "Skipping file larger than max size: %s"
msgstr ""

#. translators: 1. Number of files. 2. Data in bytes.
#: lib/wordfenceHash.php:765
msgid "Analyzed %1$d files containing %2$s of data so far"
msgstr ""

#. translators: Number of scan results.
#: lib/wordfenceHash.php:894
msgid "(+ %d more)"
msgstr ""

#. translators: Number of files.
#: lib/wordfenceHash.php:895
msgid "%d more similar files were found."
msgstr ""

#. translators: Number of files.
#: lib/wordfenceHash.php:895
msgid "1 more similar file was found."
msgstr ""

#. translators: Number of files.
#: lib/wordfenceHash.php:895
msgid "<a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More<span class=\"screen-reader-text\"> ("
msgstr ""

#: lib/wordfenceScanner.php:87
msgid "Wordfence could not get the attack signature patterns from the scanning server."
msgstr ""

#: lib/wordfenceScanner.php:96
msgid "Wordfence received malformed attack signature patterns from the scanning server."
msgstr ""

#: lib/wordfenceScanner.php:102
msgid "Regex compilation failed for signature %d"
msgstr ""

#. translators: PHP ini setting (number).
#: lib/wordfenceScanner.php:199
msgid "Backtrack limit is %d, reducing to 1000000"
msgstr ""

#: lib/wordfenceScanner.php:212
msgid "Detected loop in malware scan, aborting."
msgstr ""

#: lib/wordfenceScanner.php:219
msgid "No files remaining for malware scan."
msgstr ""

#. translators: File path.
#: lib/wordfenceScanner.php:284
msgid "Encountered file that is too large: %s - Skipping."
msgstr ""

#. translators: 1. File path. 2. File size. 3. Memory in bytes.
#: lib/wordfenceScanner.php:293
msgid "Scanning contents: %1$s (Size: %2$s Mem: %3$s)"
msgstr ""

#. translators: 1. File path. 2. File size.
#: lib/wordfenceScanner.php:301
msgid "Scanning contents: %1$s (Size: %2$s)"
msgstr ""

#. translators: File path.
#: lib/wordfenceScanner.php:319
msgid "Seek error occurred in file: %s - Skipping."
msgstr ""

#: lib/wordfenceScanner.php:338
msgid "This file was detected because you have enabled \"Scan images, binary, and other files as if they were executable\", which treats non-PHP files as if they were PHP code. This option is more aggressive than the usual scans, and may cause false positives."
msgstr ""

#: lib/wordfenceScanner.php:341
msgid "This file was detected because you have enabled HIGH SENSITIVITY scanning. This option is more aggressive than the usual scans, and may cause false positives."
msgstr ""

#. translators: Malware signature rule ID.
#: lib/wordfenceScanner.php:356
msgid "Resuming malware scan at rule %s."
msgstr ""

#: lib/wordfenceScanner.php:390
msgid "This file appears to be installed or modified by a hacker to perform malicious activity. If you know about this file you can choose to ignore it to exclude it from future scans."
msgstr ""

#: lib/wordfenceScanner.php:401
msgid "File appears to be malicious or unsafe: %s"
msgstr ""

#: lib/wordfenceScanner.php:402
msgid "The matched text in this file is: %s"
msgstr ""

#. translators: Scan result type.
#: lib/wordfenceScanner.php:402
msgid "The issue type is: %s"
msgstr ""

#. translators: Scan result description.
#: lib/wordfenceScanner.php:402
msgid "Description: %s"
msgstr ""

#. translators: Malware signature rule ID.
#: lib/wordfenceScanner.php:422
msgid "Forking during malware scan (%s) to ensure continuity."
msgstr ""

#: lib/wordfenceScanner.php:443
msgid "This file may contain malicious executable code: "
msgstr ""

#. translators: Malware signature matched text.
#: lib/wordfenceScanner.php:444
msgid "This file is a PHP executable file and contains the word \"eval\" (without quotes) and the word \"%s\" (without quotes). The eval() function along with an encoding function like the one mentioned are commonly used by hackers to hide their code. If you know about this file you can choose to ignore it to exclude it from future scans. This file was detected because you have enabled HIGH SENSITIVITY scanning. This option is more aggressive than the usual scans, and may cause false positives."
msgstr ""

#: lib/wordfenceScanner.php:490
msgid "Asking Wordfence to check URLs against malware list."
msgstr ""

#: lib/wordfenceScanner.php:518
#: lib/wordfenceScanner.php:560
msgid "File contains suspected malware URL: "
msgstr ""

#. translators: 1. Malware signature matched text. 2. Malicious URL. 3. Malicious URL.
#: lib/wordfenceScanner.php:521
msgid "This file contains a suspected malware URL listed on Google's list of malware sites. Wordfence decodes %1$s when scanning files so the URL may not be visible if you view this file. The URL is: %2$s - More info available at <a href=\"http://safebrowsing.clients.google.com/safebrowsing/diagnostic?site=%3$s&client=googlechrome&hl=en-US\" target=\"_blank\" rel=\"noopener noreferrer\">Google Safe Browsing diagnostic page<span class=\"screen-reader-text\"> (opens in new tab)</span></a>."
msgstr ""

#: lib/wordfenceScanner.php:542
msgid "File contains suspected phishing URL: "
msgstr ""

#: lib/wordfenceScanner.php:543
msgid "This file contains a URL that is a suspected phishing site that is currently listed on Google's list of known phishing sites. The URL is: "
msgstr ""

#: lib/wordfenceScanner.php:561
msgid "This file contains a URL that is currently listed on Wordfence's domain blocklist. The URL is: "
msgstr ""

#: lib/wordfenceScanner.php:577
msgid "Finalizing malware scan results"
msgstr ""

#. translators: 1. Number of fils. 2. Seconds in millisecond precision.
#: lib/wordfenceScanner.php:594
msgid "Scanned contents of %1$d additional files at %2$.2f per second"
msgstr ""

#: lib/wordfenceURLHoover.php:180
msgid "Gathering host keys."
msgstr ""

#: lib/wordfenceURLHoover.php:187
msgid "Using MySQLi directly."
msgstr ""

#. translators: Number of domains.
#: lib/wordfenceURLHoover.php:225
msgid "Checking %d host keys against Wordfence scanning servers."
msgstr ""

#: lib/wordfenceURLHoover.php:227
msgid "Done host key check."
msgstr ""

#. translators: 1. Number of URLs. 2. Number of files.
#: lib/wordfenceURLHoover.php:311
msgid "Checking %1$d URLs from %2$d sources."
msgstr ""

#: lib/wordfenceURLHoover.php:316
msgid "Done URL check."
msgstr ""

#: models/block/wfBlock.php:84
msgid "IP Block"
msgstr ""

#: models/block/wfBlock.php:86
msgid "IP Throttled"
msgstr ""

#: models/block/wfBlock.php:88
msgid "Lockout"
msgstr ""

#: models/block/wfBlock.php:90
msgid "Country Block"
msgstr ""

#: models/block/wfBlock.php:92
msgid "Advanced Block"
msgstr ""

#: models/block/wfBlock.php:174
msgid "Invalid block type."
msgstr ""

#: models/block/wfBlock.php:175
msgid "Invalid block duration."
msgstr ""

#: models/block/wfBlock.php:176
msgid "A block reason must be provided."
msgstr ""

#: models/block/wfBlock.php:179
msgid "Invalid IP address."
msgstr ""

#. translators: Support URL
#: models/block/wfBlock.php:180
msgid "This IP address is in a range of addresses that Wordfence does not block. The IP range may be internal or belong to a service that is always allowed. Allowlisting of external services can be disabled. <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More<span class=\"screen-reader-text\"> (opens in new tab)</span></a>"
msgstr ""

#: models/block/wfBlock.php:183
#: models/block/wfBlock.php:184
msgid "Nothing selected to block."
msgstr ""

#: models/block/wfBlock.php:185
msgid "No countries selected."
msgstr ""

#: models/block/wfBlock.php:190
msgid "An invalid country was selected."
msgstr ""

#: models/block/wfBlock.php:200
msgid "Ranges mixing IPv4 and IPv6 addresses are not supported."
msgstr ""

#: models/block/wfBlock.php:206
msgid "Invalid IP range."
msgstr ""

#: models/block/wfBlock.php:214
msgid "Invalid hostname."
msgstr ""

#: models/block/wfBlock.php:219
msgid "No block parameters provided."
msgstr ""

#: models/firewall/wfFirewall.php:38
#: views/waf/options-group-basic-firewall.php:47
msgid "Learning Mode"
msgstr ""

#: models/firewall/wfFirewall.php:46
msgid "Extended Protection"
msgstr ""

#: models/firewall/wfFirewall.php:49
msgid "Basic Protection"
msgstr ""

#: models/firewall/wfFirewall.php:199
#: models/firewall/wfFirewall.php:367
#: models/firewall/wfFirewall.php:404
msgid "Enable firewall."
msgstr ""

#: models/firewall/wfFirewall.php:210
msgid "Enable Premium Rules."
msgstr ""

#: models/firewall/wfFirewall.php:244
msgid "Optimize the Wordfence Firewall."
msgstr ""

#: models/firewall/wfFirewall.php:252
msgid "Enable Rate Limiting and Advanced Blocking."
msgstr ""

#: models/firewall/wfFirewall.php:263
msgid "Repair the Wordfence Firewall configuration."
msgstr ""

#: models/firewall/wfFirewall.php:395
msgid "Re-enable %d firewall rule."
msgid_plural "Re-enable %d firewall rules."
msgstr[0] ""
msgstr[1] ""

#: models/firewall/wfFirewall.php:452
msgid "Enable Firewall."
msgstr ""

#: models/firewall/wfFirewall.php:461
#: models/firewall/wfFirewall.php:470
msgid "Enable Real-Time IP Blocklist."
msgstr ""

#: models/firewall/wfFirewall.php:569
msgid "Enable Real-Time Wordfence Security Network."
msgstr ""

#: models/firewall/wfFirewall.php:575
msgid "Enforce Strong Passwords."
msgstr ""

#: models/firewall/wfFirewall.php:581
msgid "Enable Mask Login Errors."
msgstr ""

#: models/firewall/wfFirewall.php:587
msgid "Enable Block Admin Registration."
msgstr ""

#: models/firewall/wfFirewall.php:593
msgid "Disable Author Scanning."
msgstr ""

#: models/firewall/wfFirewall.php:599
msgid "Enable Brute Force Protection."
msgstr ""

#: models/page/wfPage.php:127
msgid "Support"
msgstr ""

#: models/scanner/wfScanner.php:118
msgid "Quick"
msgstr ""

#: models/scanner/wfScanner.php:120
msgid "Limited"
msgstr ""

#: models/scanner/wfScanner.php:122
#: models/scanner/wfScanner.php:794
#: views/scanner/scan-type.php:32
msgid "High Sensitivity"
msgstr ""

#: models/scanner/wfScanner.php:124
#: views/scanner/scan-scheduling.php:50
msgid "Custom"
msgstr ""

#: models/scanner/wfScanner.php:127
msgid "Standard"
msgstr ""

#: models/scanner/wfScanner.php:141
msgid "Low resource utilization, limited detection capability"
msgstr ""

#: models/scanner/wfScanner.php:143
msgid "Standard detection capability, chance of false positives"
msgstr ""

#: models/scanner/wfScanner.php:145
msgid "Custom scan options selected"
msgstr ""

#: models/scanner/wfScanner.php:148
msgid "Standard detection capability"
msgstr ""

#: models/scanner/wfScanner.php:790
msgid "Quick Scan"
msgstr ""

#: models/scanner/wfScanner.php:792
#: views/scanner/scan-type.php:20
msgid "Limited Scan"
msgstr ""

#: models/scanner/wfScanner.php:796
#: views/scanner/scan-type.php:38
msgid "Custom Scan"
msgstr ""

#: models/scanner/wfScanner.php:799
#: views/scanner/scan-type.php:26
msgid "Standard Scan"
msgstr ""

#: models/scanner/wfScanner.php:878
msgid "Enable Premium Reputation Checks."
msgstr ""

#: models/scanner/wfScanner.php:886
msgid "Enable %d scan option."
msgid_plural "Enable %d scan options."
msgstr[0] ""
msgstr[1] ""

#: models/scanner/wfScanner.php:928
msgid "Enable scan option to check if this website is being \"Spamvertised\"."
msgstr ""

#: models/scanner/wfScanner.php:929
msgid "Enable scan option to check if your website IP is generating spam."
msgstr ""

#: models/scanner/wfScanner.php:930
msgid "Enable scan option to check if your website is on a domain blocklist."
msgstr ""

#: models/scanner/wfScanner.php:1034
msgid "User defined scan pattern"
msgstr ""

#. translators: 1. Day of week. 2. Hour of day. 3. Localized date.
#: models/scanner/wfScanner.php:1312
msgid "Scheduled time for day %s hour %s is: %s"
msgstr ""

#: modules/login-security/classes/controller/ajax.php:60
#: modules/login-security/classes/controller/ajax.php:70
msgid "You do not have permission to change options."
msgstr ""

#: modules/login-security/classes/controller/ajax.php:65
msgid "You do not have permission to send notifications."
msgstr ""

#: modules/login-security/classes/controller/ajax.php:80
msgid "You do not have permission to reset reCAPTCHA statistics."
msgstr ""

#: modules/login-security/classes/controller/ajax.php:85
msgid "You do not have permission to reset the 2FA grace period."
msgstr ""

#: modules/login-security/classes/controller/ajax.php:90
msgid "You do not have permission to revoke the 2FA grace period."
msgstr ""

#: modules/login-security/classes/controller/ajax.php:95
msgid "You do not have permission to reset the NTP failure count."
msgstr ""

#: modules/login-security/classes/controller/ajax.php:100
msgid "You do not have permission to disable NTP."
msgstr ""

#: modules/login-security/classes/controller/ajax.php:105
msgid "You do not have permission to dismiss this notice."
msgstr ""

#: modules/login-security/classes/controller/ajax.php:139
msgid "An unknown action was provided."
msgstr ""

#: modules/login-security/classes/controller/ajax.php:146
msgid "An expected parameter was not provided."
msgstr ""

#: modules/login-security/classes/controller/ajax.php:154
msgid "Your browser sent an invalid security token. Please try reloading this page."
msgstr ""

#: modules/login-security/classes/controller/ajax.php:186
msgid "<strong>ERROR</strong>: A username and password must be provided. <a href=\"%s\" title=\"Password Lost and Found\">Lost your password</a>?"
msgstr ""

#: modules/login-security/classes/controller/ajax.php:210
#: modules/login-security/classes/controller/ajax.php:242
msgid "<strong>ERROR</strong>: The username or password you entered is incorrect. <a href=\"%s\" title=\"Password Lost and Found\">Lost your password</a>?"
msgstr ""

#: modules/login-security/classes/controller/ajax.php:257
#: modules/login-security/classes/controller/ajax.php:268
#: modules/login-security/classes/controller/ajax.php:276
#: modules/login-security/classes/controller/ajax.php:299
msgid "<strong>ERROR</strong>: Unable to send message. Please refresh the page and try again."
msgstr ""

#: modules/login-security/classes/controller/ajax.php:282
msgid "<strong>ERROR</strong>: Unable to send message. You have exceeded the maximum number of messages that may be sent at this time. Please try again later."
msgstr ""

#: modules/login-security/classes/controller/ajax.php:287
msgid "Blocked User Registration Contact Form"
msgstr ""

#: modules/login-security/classes/controller/ajax.php:288
msgid ""
"A visitor blocked from registration sent the following message.\n"
"\n"
"----------------------------------------\n"
"\n"
"IP: %s\n"
"Username: %s\n"
"Email: %s\n"
"reCAPTCHA Score: %f\n"
"\n"
"----------------------------------------\n"
"\n"
"%s"
msgstr ""

#: modules/login-security/classes/controller/ajax.php:293
msgid "<strong>MESSAGE SENT</strong>: Your message was sent to the site owner."
msgstr ""

#: modules/login-security/classes/controller/ajax.php:296
msgid "<strong>ERROR</strong>: An error occurred while sending the message. Please try again."
msgstr ""

#: modules/login-security/classes/controller/ajax.php:307
msgid "You do not have permission to activate the given user."
msgstr ""

#: modules/login-security/classes/controller/ajax.php:312
msgid "The given user does not exist."
msgstr ""

#: modules/login-security/classes/controller/ajax.php:317
msgid "You do not have permission to activate 2FA."
msgstr ""

#: modules/login-security/classes/controller/ajax.php:321
msgid "The given user already has two-factor authentication active."
msgstr ""

#: modules/login-security/classes/controller/ajax.php:326
msgid "The code provided does not match the expected value. Please verify that the time on your authenticator device is correct and that this server's time is correct."
msgstr ""

#: modules/login-security/classes/controller/ajax.php:331
#: modules/login-security/classes/controller/ajax.php:383
#: modules/login-security/views/manage/regenerate.php:17
msgid "%d unused recovery code remains. You may generate a new set by clicking below."
msgstr ""

#: modules/login-security/classes/controller/ajax.php:331
#: modules/login-security/classes/controller/ajax.php:383
#: modules/login-security/views/manage/regenerate.php:17
msgid "%d unused recovery codes remain. You may generate a new set by clicking below."
msgstr ""

#: modules/login-security/classes/controller/ajax.php:339
msgid "You do not have permission to deactivate the given user."
msgstr ""

#: modules/login-security/classes/controller/ajax.php:344
#: modules/login-security/classes/controller/ajax.php:370
msgid "The user does not exist."
msgstr ""

#: modules/login-security/classes/controller/ajax.php:349
msgid "You do not have permission to deactivate 2FA."
msgstr ""

#: modules/login-security/classes/controller/ajax.php:353
#: modules/login-security/classes/controller/ajax.php:379
msgid "The user specified does not have two-factor authentication active."
msgstr ""

#: modules/login-security/classes/controller/ajax.php:365
msgid "You do not have permission to generate new recovery codes for the given user."
msgstr ""

#: modules/login-security/classes/controller/ajax.php:375
msgid "You do not have permission to generate new recovery codes."
msgstr ""

#: modules/login-security/classes/controller/ajax.php:438
msgid "The specified URL is invalid."
msgstr ""

#: modules/login-security/classes/controller/ajax.php:443
msgid "More than %d users exist for the selected role. This notification is not designed to handle large groups of users. In such instances, using a different solution for notifying users of upcoming 2FA requirements is recommended."
msgstr ""

#: modules/login-security/classes/controller/ajax.php:448
msgid "2FA will soon be required on %s"
msgstr ""

#: modules/login-security/classes/controller/ajax.php:458
msgid "<html><body><p>You do not currently have two-factor authentication active on your account, which will be required beginning %s.</p><p><a href=\"%s\">Configure 2FA</a></p></body></html>"
msgstr ""

#: modules/login-security/classes/controller/ajax.php:469
msgid "No users currently exist with the selected role."
msgstr ""

#: modules/login-security/classes/controller/ajax.php:472
msgid "All users with the selected role already have two-factor authentication activated or have been locked out."
msgstr ""

#: modules/login-security/classes/controller/ajax.php:475
msgid "A reminder to activate two-factor authentication was sent to %d user."
msgstr ""

#: modules/login-security/classes/controller/ajax.php:477
msgid "A reminder to activate two-factor authentication was sent to %d users."
msgstr ""

#: modules/login-security/classes/controller/ajax.php:522
#: modules/login-security/classes/controller/ajax.php:536
msgid "Invalid user specified"
msgstr ""

#: modules/login-security/classes/controller/ajax.php:524
msgid "Invalid grace period override"
msgstr ""

#: modules/login-security/classes/controller/ajax.php:529
msgid "Failed to reset grace period"
msgstr ""

#: modules/login-security/classes/controller/ajax.php:555
msgid "Unable to dismiss notice"
msgstr ""

#: modules/login-security/classes/controller/settings.php:202
msgid "The IP/range %s is invalid."
msgstr ""

#: modules/login-security/classes/controller/settings.php:208
msgid "An invalid IP source was provided."
msgstr ""

#: modules/login-security/classes/controller/settings.php:236
msgid "Unable to validate the reCAPTCHA site key. Please check the key and try again."
msgstr ""

#: modules/login-security/classes/controller/settings.php:240
msgid "An error was encountered while validating the reCAPTCHA site key: %s"
msgstr ""

#: modules/login-security/classes/controller/users.php:521
#: modules/login-security/classes/controller/wordfencels.php:486
msgid "2FA Status"
msgstr ""

#: modules/login-security/classes/controller/users.php:525
msgid "Last Login"
msgstr ""

#: modules/login-security/classes/controller/users.php:527
msgid "Last CAPTCHA"
msgstr ""

#: modules/login-security/classes/controller/users.php:537
msgid "Not Allowed"
msgstr ""

#: modules/login-security/classes/controller/users.php:545
msgid "Inactive<small class=\"wfls-sub-status\">(Grace Period)</small>"
msgstr ""

#: modules/login-security/classes/controller/users.php:548
msgid "Locked Out<small class=\"wfls-sub-status\">(Grace Period Disabled)</small>"
msgstr ""

#: modules/login-security/classes/controller/users.php:548
msgid "Locked Out<small class=\"wfls-sub-status\">(Grace Period Exceeded)</small>"
msgstr ""

#: modules/login-security/classes/controller/users.php:653
msgid "Edit two-factor authentication for %s"
msgstr ""

#: modules/login-security/classes/controller/users.php:653
#: modules/login-security/views/settings/options.php:9
msgid "2FA"
msgstr ""

#: modules/login-security/classes/controller/users.php:664
#: modules/login-security/views/settings/user-stats.php:25
msgid "2FA Active"
msgstr ""

#: modules/login-security/classes/controller/users.php:665
#: modules/login-security/views/settings/user-stats.php:26
msgid "2FA Inactive"
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:111
msgid "Login Security: Enable 2FA for these roles"
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:112
msgid "Login Security: Allow remembering device for 30 days"
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:113
msgid "Login Security: Require 2FA for XML-RPC call authentication"
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:114
msgid "Login Security: Disable XML-RPC authentication"
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:115
msgid "Login Security: Allowlisted IP addresses that bypass 2FA and reCAPTCHA"
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:116
msgid "Login Security: Enable reCAPTCHA on the login and user registration pages"
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:118
#: modules/login-security/classes/controller/wordfencels.php:121
msgid "Login Security Options"
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:119
msgid "Login Security options are available on the Login Security options page"
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:191
msgid "XML-RPC authentication is disabled. Jetpack is currently active and requires XML-RPC authentication to work correctly. <a href=\"%s\">Manage Settings</a>"
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:195
msgid "reCAPTCHA test mode is enabled. While enabled, login and registration requests will be checked for their score but will not be blocked if the score is below the minimum score. <a href=\"%s\">Manage Settings</a>"
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:202
msgid "WooCommerce appears to be installed, but the Wordfence Login Security WooCommerce integration is not currently enabled. Without this feature, WooCommerce forms will not support all functionality provided by Wordfence Login Security, including CAPTCHA for the login page and user registration."
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:203
msgid "Manage Settings"
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:340
msgid "Message to Support"
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:342
msgid "An error was encountered while trying to send the message. Please try again."
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:343
msgid "<strong>ERROR</strong>: An error was encountered while trying to send the message. Please try again."
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:344
msgid "Login failed with status code 403. Please contact the site administrator."
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:345
msgid "<strong>ERROR</strong>: Login failed with status code 403. Please contact the site administrator."
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:346
msgid "Login failed with status code 503. Please contact the site administrator."
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:347
msgid "<strong>ERROR</strong>: Login failed with status code 503. Please contact the site administrator."
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:348
msgid "Wordfence 2FA Code"
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:349
msgid "Remember for 30 days"
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:350
msgid "Log In"
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:351
msgid "<strong>ERROR</strong>: An error was encountered while trying to authenticate. Please try again."
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:352
msgid "The Wordfence 2FA Code can be found within the authenticator app you used when first activating two-factor authentication. You may also use one of your recovery codes."
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:483
msgid "Wordfence Login Security"
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:492
#: modules/login-security/views/manage/grace-period.php:44
msgid "Two-factor authentication is required for your account, but has not been configured."
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:492
#: modules/login-security/views/manage/grace-period.php:45
msgid "Two-factor authentication is required for this account, but has not been configured."
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:493
msgid "Wordfence 2FA is active."
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:493
msgid "Wordfence 2FA is inactive."
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:498
msgid "Two-factor authentication must be activated for your account prior to %s to avoid losing access."
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:499
msgid "Two-factor authentication must be activated for this account prior to %s."
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:502
msgid "Manage 2FA"
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:502
msgid "Activate 2FA"
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:506
msgid "Two-factor authentication is not currently enabled for this account type. To enable it, visit the Wordfence 2FA Settings page."
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:523
msgid "Manage 2FA Settings"
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:645
msgid "<strong>CAPTCHA EXPIRED</strong>: The CAPTCHA verification for this login attempt has expired. Please try again."
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:685
msgid "Login Verification Required"
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:690
msgid "<strong>VERIFICATION REQUIRED</strong>: Additional verification is required for login. If there is a valid account for the provided login credentials, please check the email address associated with it for a verification link to continue logging in."
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:706
msgid "<strong>CODE INVALID</strong>: The 2FA code provided is either expired or invalid. Please try again."
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:715
msgid "<strong>CODE REQUIRED</strong>: Please enter your 2FA code immediately after your password in the same field."
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:717
msgid "<strong>CODE REQUIRED</strong>: Please provide your 2FA code when prompted."
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:720
msgid "<strong>LOGIN BLOCKED</strong>: 2FA is required to be active on your account. Please contact the site administrator."
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:723
msgid "You do not currently have two-factor authentication active on your account, which will be required beginning %s. <a href=\"%s\">Configure 2FA</a>"
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:773
msgid "Email verification succeeded. Please continue logging in."
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:776
msgid "Email verification invalid or expired. Please try again."
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:830
#: modules/login-security/classes/controller/wordfencels.php:833
msgid "Login Security"
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:861
#: modules/login-security/views/settings/options.php:23
#: modules/login-security/views/settings/user-stats.php:33
msgid "Super Administrator"
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:865
#: modules/login-security/views/manage/grace-period.php:22
#: modules/login-security/views/options/option-roles.php:57
msgid "Grace Period"
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:884
msgid "Users without 2FA active (%s)"
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:903
msgid "Learn more<span class=\"wfls-hidden-xs\"> about Two-Factor Authentication</span>"
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:912
msgid "Settings"
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:913
msgid "Login Security Settings"
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:913
msgid "Learn more<span class=\"wfls-hidden-xs\"> about Login Security</span>"
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:939
msgid "<strong>REGISTRATION ATTEMPT BLOCKED</strong>: This site requires a security token created when the page loads for all registration attempts. Please ensure JavaScript is enabled and try again."
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:946
msgid "<strong>REGISTRATION ATTEMPT BLOCKED</strong>: The security token for the login attempt was invalid or expired. Please reload the page and try again."
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:959
msgid "<strong>REGISTRATION BLOCKED</strong>: The registration request was blocked because it was flagged as spam. Please try again or <a href=\"#\" class=\"wfls-registration-captcha-contact\" data-token=\"%s\">contact the site owner</a> for help."
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:962
msgid "<strong>REGISTRATION BLOCKED</strong>: The registration request was blocked because it was flagged as spam. Please try again or contact the site owner for help."
msgstr ""

#: modules/login-security/classes/controller/wordfencels.php:1032
msgid "Wordfence 2FA"
msgstr ""

#: modules/login-security/classes/model/notice.php:31
msgid "<a class=\"wfls-btn wfls-btn-default wfls-btn-sm wfls-dismiss-link\" href=\"#\" onclick=\"GWFLS.dismiss_notice('%s'); return false;\">Dismiss</a>"
msgstr ""

#: modules/login-security/views/common/reset-grace-period.php:7
msgid "Unable to Activate Grace Period"
msgstr ""

#: modules/login-security/views/common/reset-grace-period.php:7
msgid "Unable to Reset Grace Period"
msgstr ""

#: modules/login-security/views/common/reset-grace-period.php:11
msgid "Grace Period Override"
msgstr ""

#: modules/login-security/views/common/reset-grace-period.php:13
#: modules/login-security/views/options/option-roles.php:59
msgid "days"
msgstr ""

#: modules/login-security/views/common/reset-grace-period.php:17
msgid "Activate Grace Period"
msgstr ""

#: modules/login-security/views/common/reset-grace-period.php:17
msgid "Reset Grace Period"
msgstr ""

#: modules/login-security/views/common/reset-grace-period.php:48
msgid "An unexpected error occurred while attempting to activate the grace period."
msgstr ""

#: modules/login-security/views/common/reset-grace-period.php:48
msgid "An unexpected error occurred while attempting to reset the grace period."
msgstr ""

#: modules/login-security/views/common/revoke-grace-period.php:4
msgid "Unable to Revoke Grace Period"
msgstr ""

#: modules/login-security/views/common/revoke-grace-period.php:9
msgid "Revoke Grace Period"
msgstr ""

#: modules/login-security/views/common/revoke-grace-period.php:38
msgid "An unexpected error occurred while attempting to revoke the grace period."
msgstr ""

#: modules/login-security/views/email/login-verification.php:10
msgid "Please verify a login attempt for your account on: %s"
msgstr ""

#: modules/login-security/views/email/login-verification.php:12
msgid "Request Time:"
msgstr ""

#: modules/login-security/views/email/login-verification.php:15
msgid "The request was flagged as suspicious, and we need verification that you attempted to log in to allow it to proceed. This verification link <b>will be valid for 15 minutes</b> from the time it was sent. If you did not attempt this login, please change your password immediately."
msgstr ""

#: modules/login-security/views/email/login-verification.php:17
msgid "If you were attempting to log in to this site, <a href=\"%s\"><strong>Verify and Log In</strong></a>"
msgstr ""

#: modules/login-security/views/manage/activate.php:13
msgid "2. Enter Code from Authenticator App"
msgstr ""

#: modules/login-security/views/manage/activate.php:18
#: modules/login-security/views/manage/activate.php:131
msgid "Download Recovery Codes"
msgstr ""

#: modules/login-security/views/manage/activate.php:18
#: modules/login-security/views/options/option-roles.php:9
msgid "Optional"
msgstr ""

#: modules/login-security/views/manage/activate.php:19
#: modules/login-security/views/manage/regenerate.php:66
msgid "Use one of these %d codes to log in if you lose access to your authenticator device. Codes are %d characters long plus optional spaces. Each one may be used only once."
msgstr ""

#: modules/login-security/views/manage/activate.php:22
#: modules/login-security/views/manage/regenerate.php:68
msgid "Two-Factor Authentication Recovery Codes - %s (%s)"
msgstr ""

#: modules/login-security/views/manage/activate.php:23
#: modules/login-security/views/manage/regenerate.php:69
msgid "Each line of %d letters and numbers is a single recovery code, with optional spaces for readability. To use a recovery code, after entering your username and password, enter the code like \"1234 5678 90AB CDEF\" at the 2FA prompt. If your site has a custom login prompt and does not show a 2FA prompt, you can use the single-step method by entering your password and the code together in the Password field, like \"mypassword1234 5678 90AB CDEF\". Your recovery codes are:"
msgstr ""

#: modules/login-security/views/manage/activate.php:36
msgid "Enter the code from your authenticator app below to verify and activate two-factor authentication for this account."
msgstr ""

#: modules/login-security/views/manage/activate.php:42
msgid "For help on setting up an app, visit our help article."
msgstr ""

#: modules/login-security/views/manage/activate.php:89
#: modules/login-security/views/manage/activate.php:120
msgid "Error Activating 2FA"
msgstr ""

#: modules/login-security/views/manage/activate.php:120
msgid "An error was encountered while trying to activate two-factor authentication. Please try again."
msgstr ""

#: modules/login-security/views/manage/activate.php:132
msgid "Reminder: If you lose access to your authenticator device, you can use recovery codes to log in. If you have not saved a copy of your recovery codes, we recommend downloading them now."
msgstr ""

#: modules/login-security/views/manage/activate.php:134
msgid "Skip"
msgstr ""

#: modules/login-security/views/manage/code.php:11
msgid "1. Scan Code or Enter Key"
msgstr ""

#: modules/login-security/views/manage/deactivate.php:17
msgid "Wordfence 2FA Active"
msgstr ""

#: modules/login-security/views/manage/deactivate.php:22
msgid "Wordfence two-factor authentication is currently active on your account. You may deactivate it by clicking the button below."
msgstr ""

#: modules/login-security/views/manage/deactivate.php:22
msgid "Wordfence two-factor authentication is currently active on the account <strong>%s</strong>. You may deactivate it by clicking the button below."
msgstr ""

#: modules/login-security/views/manage/deactivate.php:23
#: modules/login-security/views/manage/deactivate.php:32
#: views/offboarding/deactivation-prompt.php:29
msgid "Deactivate"
msgstr ""

#: modules/login-security/views/manage/deactivate.php:29
msgid "Deactivate 2FA"
msgstr ""

#: modules/login-security/views/manage/deactivate.php:30
msgid "Are you sure you want to deactivate two-factor authentication?"
msgstr ""

#: modules/login-security/views/manage/deactivate.php:66
#: modules/login-security/views/manage/deactivate.php:75
msgid "Error Deactivating 2FA"
msgstr ""

#: modules/login-security/views/manage/deactivate.php:75
msgid "An error was encountered while trying to deactivate two-factor authentication. Please try again."
msgstr ""

#: modules/login-security/views/manage/grace-period.php:31
msgid "Two-factor authentication will be required for your account beginning <strong>%s</strong>"
msgstr ""

#: modules/login-security/views/manage/grace-period.php:32
msgid "Two-factor authentication will be required for user <strong>%s</strong> beginning <strong>%s</strong>."
msgstr ""

#: modules/login-security/views/manage/regenerate.php:18
msgid "Generate New Codes"
msgstr ""

#: modules/login-security/views/manage/regenerate.php:24
msgid "Generate New Recovery Codes"
msgstr ""

#: modules/login-security/views/manage/regenerate.php:25
msgid "Are you sure you want to generate new recovery codes? Any remaining unused codes will be disabled."
msgstr ""

#: modules/login-security/views/manage/regenerate.php:27
msgid "Generate"
msgstr ""

#: modules/login-security/views/manage/regenerate.php:61
#: modules/login-security/views/manage/regenerate.php:92
msgid "Error Generating New Codes"
msgstr ""

#: modules/login-security/views/manage/regenerate.php:80
msgid "New Recovery Codes"
msgstr ""

#: modules/login-security/views/manage/regenerate.php:92
msgid "An error was encountered while trying to generate new recovery codes. Please try again."
msgstr ""

#: modules/login-security/views/onboarding/standalone-header.php:9
msgid "Wordfence Login Security Installed"
msgstr ""

#: modules/login-security/views/onboarding/standalone-header.php:13
msgid "You have just installed the Wordfence Login Security plugin. It contains a subset of the functionality found in the full Wordfence plugin: Two-factor Authentication, XML-RPC Protection and Login Page CAPTCHA."
msgstr ""

#: modules/login-security/views/onboarding/standalone-header.php:14
msgid "If you're looking for a more comprehensive solution, the <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">full Wordfence plugin</a> includes all of the features in this plugin as well as a full-featured WordPress firewall, a security scanner, live traffic, and more. The standard installation includes a robust set of free features that can be upgraded via a Premium license key."
msgstr ""

#: modules/login-security/views/options/option-captcha-threshold.php:7
msgid "1.0 (definitely a human)"
msgstr ""

#: modules/login-security/views/options/option-captcha-threshold.php:8
msgid "0.9"
msgstr ""

#: modules/login-security/views/options/option-captcha-threshold.php:9
msgid "0.8"
msgstr ""

#: modules/login-security/views/options/option-captcha-threshold.php:10
msgid "0.7"
msgstr ""

#: modules/login-security/views/options/option-captcha-threshold.php:11
msgid "0.6"
msgstr ""

#: modules/login-security/views/options/option-captcha-threshold.php:12
msgid "0.5 (probably a human)"
msgstr ""

#: modules/login-security/views/options/option-captcha-threshold.php:13
msgid "0.4"
msgstr ""

#: modules/login-security/views/options/option-captcha-threshold.php:14
msgid "0.3"
msgstr ""

#: modules/login-security/views/options/option-captcha-threshold.php:15
msgid "0.2"
msgstr ""

#: modules/login-security/views/options/option-captcha-threshold.php:16
msgid "0.1 (probably a bot)"
msgstr ""

#: modules/login-security/views/options/option-captcha-threshold.php:27
msgid "reCAPTCHA human/bot threshold score"
msgstr ""

#: modules/login-security/views/options/option-captcha-threshold.php:28
msgid "A reCAPTCHA score equal to or higher than this value will be considered human. Anything lower will be treated as a bot and require additional verification for login and registration."
msgstr ""

#: modules/login-security/views/options/option-captcha-threshold.php:50
msgid "Reset Score Statistics"
msgstr ""

#: modules/login-security/views/options/option-captcha-threshold.php:87
msgid "Requests"
msgstr ""

#: modules/login-security/views/options/option-captcha-threshold.php:105
msgid "reCAPTCHA Score History"
msgstr ""

#: modules/login-security/views/options/option-captcha-threshold.php:112
msgid "Count"
msgstr ""

#: modules/login-security/views/options/option-captcha.php:20
msgid "Enable reCAPTCHA on the login and user registration pages"
msgstr ""

#: modules/login-security/views/options/option-captcha.php:22
msgid "reCAPTCHA v3 does not make users solve puzzles or click a checkbox like previous versions. The only visible part is the reCAPTCHA logo. If a visitor's browser fails the CAPTCHA, Wordfence will send an email to the user's address with a link they can click to verify that they are a user of your site. You can read further details <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">in our documentation</a>."
msgstr ""

#: modules/login-security/views/options/option-captcha.php:33
msgid "reCAPTCHA v3 Site Key"
msgstr ""

#: modules/login-security/views/options/option-captcha.php:37
msgid "reCAPTCHA v3 Secret"
msgstr ""

#: modules/login-security/views/options/option-captcha.php:47
msgid "Note: This feature requires a free site key and secret for the <a href=\"https://www.google.com/recaptcha/about/\" target=\"_blank\" rel=\"noopener noreferrer\">Google reCAPTCHA v3 Service</a>. To set up new reCAPTCHA keys, log into your Google account and go to the <a href=\"https://www.google.com/recaptcha/admin\" target=\"_blank\" rel=\"noopener noreferrer\">reCAPTCHA admin page</a>."
msgstr ""

#: modules/login-security/views/options/option-ip-source.php:8
msgid "Use the most secure method to get visitor IP addresses. Prevents spoofing and works with most sites."
msgstr ""

#: modules/login-security/views/options/option-ip-source.php:8
#: views/dashboard/option-howgetips.php:8
msgid "(Recommended)"
msgstr ""

#: modules/login-security/views/options/option-ip-source.php:9
#: views/dashboard/option-howgetips.php:9
msgid "Use PHP's built in REMOTE_ADDR and don't use anything else. Very secure if this is compatible with your site."
msgstr ""

#: modules/login-security/views/options/option-ip-source.php:10
#: views/dashboard/option-howgetips.php:10
msgid "Use the X-Forwarded-For HTTP header. Only use if you have a front-end proxy or spoofing may result."
msgstr ""

#: modules/login-security/views/options/option-ip-source.php:11
#: views/dashboard/option-howgetips.php:11
msgid "Use the X-Real-IP HTTP header. Only use if you have a front-end proxy or spoofing may result."
msgstr ""

#: modules/login-security/views/options/option-ip-source.php:19
msgid "How to get IPs"
msgstr ""

#: modules/login-security/views/options/option-ip-source.php:48
#: views/dashboard/option-howgetips.php:51
msgid "These IPs (or CIDR ranges) will be ignored when determining the requesting IP via the X-Forwarded-For HTTP header. Enter one IP or CIDR range per line."
msgstr ""

#: modules/login-security/views/options/option-ntp.php:10
msgid "NTP is a protocol that allows for remote time synchronization. Wordfence Login Security uses this protocol to ensure that it has the most accurate time which is necessary for TOTP-based two-factor authentication."
msgstr ""

#: modules/login-security/views/options/option-ntp.php:12
msgid "The constant WORDFENCE_LS_DISABLE_NTP is defined which disables NTP entirely. Remove this constant or set it to a falsy value to enable NTP."
msgstr ""

#: modules/login-security/views/options/option-ntp.php:15
msgid "NTP is currently disabled as %d subsequent attempts have failed."
msgstr ""

#: modules/login-security/views/options/option-ntp.php:17
msgid "NTP was manually disabled."
msgstr ""

#: modules/login-security/views/options/option-ntp.php:19
#: views/dashboard/options-group-license.php:166
msgid "Reset"
msgstr ""

#: modules/login-security/views/options/option-ntp.php:21
msgid "NTP is currently <strong>enabled</strong>."
msgstr ""

#: modules/login-security/views/options/option-ntp.php:25
msgid "NTP updates are currently failing."
msgstr ""

#: modules/login-security/views/options/option-ntp.php:26
msgid "NTP will be automatically disabled after %d more attempts."
msgstr ""

#: modules/login-security/views/options/option-ntp.php:26
msgid "NTP will be automatically disabled after 1 more attempt."
msgstr ""

#: modules/login-security/views/options/option-ntp.php:29
#: views/waf/option-whitelist.php:102
msgid "Disable"
msgstr ""

#: modules/login-security/views/options/option-ntp.php:43
msgid "Error Resetting NTP"
msgstr ""

#: modules/login-security/views/options/option-ntp.php:44
msgid "An error was encountered while trying to reset the NTP state. Please try again."
msgstr ""

#: modules/login-security/views/options/option-ntp.php:68
msgid "Error Disabling NTP"
msgstr ""

#: modules/login-security/views/options/option-ntp.php:69
msgid "An error was encountered while trying to disable NTP. Please try again."
msgstr ""

#: modules/login-security/views/options/option-roles.php:10
#: modules/login-security/views/settings/options.php:65
msgid "Required"
msgstr ""

#: modules/login-security/views/options/option-roles.php:23
msgid "Requiring 2FA for customers is not recommended as some customers may experience difficulties setting up or using two-factor authentication. Instead, using the \"Optional\" mode for users with the customer role is recommended which will allow customers to enable 2FA, but will not require them to do so."
msgstr ""

#: modules/login-security/views/options/option-roles.php:28
msgid "2FA Roles"
msgstr ""

#: modules/login-security/views/options/option-roles.php:53
msgid "In order to use 2FA with the WooCommerce customer role, you must either enable the \"WooCommerce integration\" option or use the \"wordfence_2fa_management\" shortcode to provide customers with access to the 2FA management interface. The default interface is only available through WordPress admin pages which are not accessible to users in the customer role."
msgstr ""

#: modules/login-security/views/options/option-roles.php:61
msgid "Setting the grace period to 0 will prevent users in roles where 2FA is required, including newly created users, from logging in if they have not already enabled two-factor authentication."
msgstr ""

#: modules/login-security/views/options/option-roles.php:64
msgid "For roles that require 2FA, users will have this many days to set up 2FA. Failure to set up 2FA during this period will result in the user losing account access. This grace period will apply to new users from the time of account creation. For existing users, this grace period will apply relative to the time at which the requirement is implemented. This grace period will not automatically apply to admins and must be manually enabled for each admin user."
msgstr ""

#: modules/login-security/views/options/option-roles.php:68
msgid "2FA Notifications"
msgstr ""

#: modules/login-security/views/options/option-roles.php:70
msgid "Send an email to users with the selected role to notify them of the grace period for enabling 2FA. Select the desired role and optionally specify the URL to be sent in the email to setup 2FA. If left blank, the URL defaults to the standard wordpress login and Wordfence’s Two-Factor Authentication plugin page. For example, if using WooCommerce, input the relative URL of the account page."
msgstr ""

#: modules/login-security/views/options/option-roles.php:74
msgid "2FA Role"
msgstr ""

#: modules/login-security/views/options/option-roles.php:82
msgid "2FA Relative URL (optional)"
msgstr ""

#: modules/login-security/views/options/option-roles.php:85
msgid "Notify"
msgstr ""

#: modules/login-security/views/options/option-roles.php:106
msgid "Send Anyway"
msgstr ""

#: modules/login-security/views/options/option-roles.php:110
#: modules/login-security/views/options/option-roles.php:120
msgid "Error Sending Notification"
msgstr ""

#: modules/login-security/views/options/option-roles.php:113
msgid "Notification Sent"
msgstr ""

#: modules/login-security/views/options/option-roles.php:120
msgid "An error was encountered while trying to send the notification. Please try again."
msgstr ""

#: modules/login-security/views/options/option-roles.php:161
msgid "Not Recommended"
msgstr ""

#: modules/login-security/views/options/option-roles.php:165
msgid "Make Optional"
msgstr ""

#: modules/login-security/views/options/option-roles.php:170
msgid "Proceed"
msgstr ""

#: modules/login-security/views/options/option-select.php:22
#: modules/login-security/views/options/option-text.php:30
#: modules/login-security/views/options/option-toggled-boolean-switch.php:32
#: modules/login-security/views/options/option-toggled-segmented.php:21
#: modules/login-security/views/options/option-toggled-select.php:27
#: modules/login-security/views/options/option-toggled-sub.php:44
#: modules/login-security/views/options/option-toggled-sub.php:52
#: modules/login-security/views/options/option-toggled-textarea.php:24
#: modules/login-security/views/options/option-token.php:25
#: views/options/option-select.php:22
#: views/options/option-switch.php:34
#: views/options/option-text.php:30
#: views/options/option-textarea.php:37
#: views/options/option-toggled-boolean-switch.php:32
#: views/options/option-toggled-multiple.php:29
#: views/options/option-toggled-segmented.php:21
#: views/options/option-toggled-select.php:27
#: views/options/option-toggled-sub.php:44
#: views/options/option-toggled-sub.php:52
#: views/options/option-toggled-textarea.php:24
#: views/options/option-toggled.php:36
#: views/options/option-token.php:25
#: views/scanner/scan-scheduling.php:38
#: views/waf/option-rate-limit.php:27
msgid "Premium Feature"
msgstr ""

#: modules/login-security/views/page/manage-embedded.php:26
msgid "Two-Factor Authentication, or 2FA, significantly improves login security for your account. Wordfence 2FA works with a number of TOTP-based apps like Google Authenticator, FreeOTP, and Authy. For a full list of tested TOTP-based apps, <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">click here</a>."
msgstr ""

#: modules/login-security/views/page/manage.php:24
msgid "Two-Factor Authentication, or 2FA, significantly improves login security for your website. Wordfence 2FA works with a number of TOTP-based apps like Google Authenticator, FreeOTP, and Authy. For a full list of tested TOTP-based apps, <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">click here</a>."
msgstr ""

#: modules/login-security/views/page/manage.php:31
msgid "Editing User:&nbsp;&nbsp;%s <span class=\"wfls-text-plain\">%s</span>"
msgstr ""

#: modules/login-security/views/page/manage.php:31
msgid "(you)"
msgstr ""

#: modules/login-security/views/page/manage.php:108
msgid "Server Time:"
msgstr ""

#: modules/login-security/views/page/manage.php:109
msgid "Browser Time:"
msgstr ""

#: modules/login-security/views/page/manage.php:112
msgid "Corrected Time (NTP):"
msgstr ""

#: modules/login-security/views/page/manage.php:115
msgid "Corrected Time (WF):"
msgstr ""

#: modules/login-security/views/page/manage.php:118
msgid "Detected IP:"
msgstr ""

#: modules/login-security/views/page/manage.php:118
msgid "allowlisted"
msgstr ""

#: modules/login-security/views/page/permission-denied.php:6
msgid "Permission Denied"
msgstr ""

#: modules/login-security/views/page/permission-denied.php:7
msgid "You do not have permission to manage 2FA settings for your account."
msgstr ""

#: modules/login-security/views/page/role.php:5
msgid "This page only shows users and roles on the main site of this network"
msgstr ""

#: modules/login-security/views/page/role.php:10
msgid "2FA is not required for the %s role"
msgstr ""

#: modules/login-security/views/page/role.php:16
msgid "No users found in the %s state for the %s role"
msgstr ""

#: modules/login-security/views/page/role.php:18
msgid "Page %d is out of range"
msgstr ""

#: modules/login-security/views/page/role.php:35
msgid "N/A"
msgstr ""

#: modules/login-security/views/page/role.php:46
msgid "Page "
msgstr ""

#. translators: word order may be reversed as long as HTML remains around "Changes"
#: modules/login-security/views/page/settings.php:5
msgid "Cancel<span class=\"wfls-visible-sm-inline\"> Changes</span>"
msgstr ""

#. translators: word order may be reversed as long as HTML remains around "Changes"
#: modules/login-security/views/page/settings.php:5
msgid "Save<span class=\"wfls-visible-sm-inline\"> Changes</span>"
msgstr ""

#: modules/login-security/views/settings/options.php:51
msgid "Allow remembering device for 30 days"
msgstr ""

#: modules/login-security/views/settings/options.php:52
msgid "If enabled, users with 2FA enabled may choose to be prompted for a code only once every 30 days per device."
msgstr ""

#: modules/login-security/views/settings/options.php:61
msgid "Require 2FA for XML-RPC call authentication"
msgstr ""

#: modules/login-security/views/settings/options.php:62
msgid "If enabled, XML-RPC calls that require authentication will also require a valid 2FA code to be appended to the password. You must choose the \"Skipped\" option if you use the WordPress app, the Jetpack plugin, or other services that require XML-RPC."
msgstr ""

#: modules/login-security/views/settings/options.php:64
msgid "Skipped"
msgstr ""

#: modules/login-security/views/settings/options.php:79
msgid "Disable XML-RPC authentication"
msgstr ""

#: modules/login-security/views/settings/options.php:80
msgid "If disabled, XML-RPC requests that attempt authentication will be rejected, whether the user has 2FA enabled or not."
msgstr ""

#: modules/login-security/views/settings/options.php:94
msgid "WooCommerce & Custom Integrations"
msgstr ""

#: modules/login-security/views/settings/options.php:107
msgid "WooCommerce integration"
msgstr ""

#: modules/login-security/views/settings/options.php:108
msgid "When enabled, reCAPTCHA and 2FA prompt support will be added to WooCommerce login and registration forms in addition to the default WordPress forms. Testing WooCommerce forms after enabling this feature is recommended to ensure plugin compatibility."
msgstr ""

#: modules/login-security/views/settings/options.php:119
msgid "Show Wordfence 2FA menu on WooCommerce Account page"
msgstr ""

#: modules/login-security/views/settings/options.php:120
msgid "When enabled, a Wordfence 2FA tab will be added to the WooCommerce account menu which will provide access for users to manage 2FA settings outside of the WordPress admin area. Testing the WooCommerce account interface after enabling this feature is recommended to ensure theme compatibility."
msgstr ""

#: modules/login-security/views/settings/options.php:134
msgid "2FA management shortcode"
msgstr ""

#: modules/login-security/views/settings/options.php:135
msgid "When enabled, the \"wordfence_2fa_management\" shortcode may be used to provide access for users to manage 2FA settings on custom pages."
msgstr ""

#: modules/login-security/views/settings/options.php:147
msgid "Use single-column layout for WooCommerce/shortcode 2FA management interface"
msgstr ""

#: modules/login-security/views/settings/options.php:148
msgid "When enabled, the 2FA management interface embedded through the WooCommerce integration or via a shortcode will use a vertical stacked layout as opposed to horizontal columns. Adjust this setting as appropriate to match your theme. This may be overridden using the \"stacked\" attribute for individual shortcodes."
msgstr ""

#: modules/login-security/views/settings/options.php:163
msgid "reCAPTCHA"
msgstr ""

#: modules/login-security/views/settings/options.php:188
msgid "Run reCAPTCHA in test mode"
msgstr ""

#: modules/login-security/views/settings/options.php:189
msgid "While in test mode, reCAPTCHA will score login and registration requests but not actually block them. The scores will be recorded and can be used to select a human/bot threshold value."
msgstr ""

#: modules/login-security/views/settings/options.php:214
msgid "Allowlisted IP addresses that bypass 2FA and reCAPTCHA"
msgstr ""

#: modules/login-security/views/settings/options.php:216
msgid "Allowlisted IPs must be placed on separate lines. You can specify ranges using the following formats: 127.0.0.1/24, 127.0.0.[1-100], or 127.0.0.1-127.0.1.100."
msgstr ""

#: modules/login-security/views/settings/options.php:242
msgid "Show last login column on WP Users page"
msgstr ""

#: modules/login-security/views/settings/options.php:243
msgid "When enabled, the last login timestamp will be displayed for each user on the WP Users page. When used in conjunction with reCAPTCHA, the most recent score will also be displayed for each user."
msgstr ""

#: modules/login-security/views/settings/options.php:254
msgid "Delete Login Security tables and data on deactivation"
msgstr ""

#: modules/login-security/views/settings/options.php:255
msgid "If enabled, all settings and 2FA records will be deleted on deactivation. If later reactivated, all users that previously had 2FA active will need to set it up again."
msgstr ""

#: modules/login-security/views/settings/user-stats.php:11
msgid "User Summary"
msgstr ""

#: modules/login-security/views/settings/user-stats.php:15
msgid "Manage Users"
msgstr ""

#: modules/login-security/views/settings/user-stats.php:23
msgid "Role"
msgstr ""

#: modules/login-security/views/settings/user-stats.php:24
msgid "Total Users"
msgstr ""

#: modules/login-security/views/settings/user-stats.php:34
msgid "Custom Capabilities / Multiple Roles"
msgstr ""

#: modules/login-security/views/settings/user-stats.php:52
msgid "View users"
msgstr ""

#: modules/login-security/views/settings/user-stats.php:66
msgid "* User counts currently only reflect the main site on multisite installations."
msgstr ""

#: modules/login-security/views/settings/user-stats.php:74
msgid "User counts are hidden by default on sites with large numbers of users in order to improve performance."
msgstr ""

#: modules/login-security/views/settings/user-stats.php:74
msgid "User counts are currently disabled as the most recent attempt to count users failed to complete successfully."
msgstr ""

#: modules/login-security/views/settings/user-stats.php:75
msgid "Show User Counts"
msgstr ""

#: modules/login-security/views/user/grace-period-toggle.php:7
msgid "2FA Grace Period"
msgstr ""

#: modules/login-security/views/user/grace-period-toggle.php:10
msgid "Allow a grace period for this user prior to requiring Wordfence 2FA"
msgstr ""

#. translators: Site URL
#: views/blocking/block-list.php:11
msgid "Current blocks<span class=\"wf-hidden-xs\"> for %s</span>"
msgstr ""

#: views/blocking/block-list.php:17
msgid "Show<span class=\"wf-hidden-xs\"> Wordfence</span> Automatic<span class=\"wf-hidden-xs\"> Blocks</span>"
msgstr ""

#: views/blocking/block-list.php:34
msgid "Filter by Type, Detail, or Reason"
msgstr ""

#: views/blocking/block-list.php:35
#: views/blocking/block-list.php:379
#: views/waf/option-whitelist.php:113
msgid "Filter"
msgstr ""

#: views/blocking/block-list.php:39
#: views/blocking/block-list.php:502
msgid "Unblock"
msgstr ""

#: views/blocking/block-list.php:39
msgid "Make Permanent"
msgstr ""

#. translators: word order may be altered as long as HTML remains around "All IPs"
#: views/blocking/block-list.php:39
msgid "Export<span class=\"wf-hidden-xs\"> All IPs</span>"
msgstr ""

#: views/blocking/block-list.php:68
msgid "Block Type"
msgstr ""

#: views/blocking/block-list.php:69
msgid "Detail"
msgstr ""

#: views/blocking/block-list.php:70
msgid "Rule Added"
msgstr ""

#: views/blocking/block-list.php:71
msgid "Reason"
msgstr ""

#: views/blocking/block-list.php:72
msgid "Expiration"
msgstr ""

#: views/blocking/block-list.php:74
msgid "Last Attempt"
msgstr ""

#: views/blocking/block-list.php:79
msgid "No blocks are currently active."
msgstr ""

#: views/blocking/block-list.php:84
msgid "No blocks match the current filter."
msgstr ""

#: views/blocking/block-list.php:382
msgid "Clear Filter"
msgstr ""

#: views/blocking/block-list.php:385
msgid "Change Filter"
msgstr ""

#: views/blocking/block-list.php:499
msgid "Unblocking"
msgstr ""

#: views/blocking/block-list.php:500
msgid "Are you sure you want to stop blocking the selected IP, range, or country?"
msgstr ""

#: views/blocking/block-list.php:500
msgid "Are you sure you want to stop blocking the ${count} selected IPs, ranges, and countries?"
msgstr ""

#. translators: word order may be altered as long as HTML remains around "this IP Address"
#: views/blocking/blocking-create.php:13
msgid "Block<span class=\"wf-hidden-xs\"> this IP Address</span>"
msgstr ""

#. translators: word order may be altered as long as HTML remains around "Address"
#: views/blocking/blocking-create.php:13
msgid "IP<span class=\"wf-hidden-xs\"> Address</span>"
msgstr ""

#. translators: word order may be altered as long as HTML remains around "the Selected Countries"
#: views/blocking/blocking-create.php:14
msgid "Block<span class=\"wf-hidden-xs\"> the Selected Countries</span>"
msgstr ""

#. translators: word order may be reversed as long as HTML remains around "Block"
#: views/blocking/blocking-create.php:14
msgid "Update<span class=\"wf-hidden-xs\"> Block</span>"
msgstr ""

#. translators: word order may be altered as long as HTML remains around "Visitors Matching this Pattern"
#: views/blocking/blocking-create.php:15
msgid "Block<span class=\"wf-hidden-xs\"> Visitors Matching this Pattern</span>"
msgstr ""

#. translators: word order may be reversed as long as HTML remains around "Custom"
#: views/blocking/blocking-create.php:15
msgid "<span class=\"wf-hidden-xs\">Custom </span>Pattern"
msgstr ""

#: views/blocking/blocking-create.php:113
msgid "Block Duration"
msgstr ""

#: views/blocking/blocking-create.php:115
msgid "Enter a duration (default is forever)"
msgstr ""

#: views/blocking/blocking-create.php:132
msgid "<span class=\"wf-hidden-xs\">What to </span>Block"
msgstr ""

#: views/blocking/blocking-create.php:137
msgid "Login Form"
msgstr ""

#: views/blocking/blocking-create.php:141
msgid "<span class=\"wf-hidden-xs\">Block access to the rest of the site</span><span class=\"wf-visible-xs\">Rest of site</span>"
msgstr ""

#. translators: Support URL
#: views/blocking/blocking-create.php:149
msgid "If you use Google Ads, blocking countries from accessing the entire site is not recommended. <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More<span class=\"screen-reader-text\"> (opens in new tab)</span></a>"
msgstr ""

#. translators: word order may be altered as long as HTML remains around "to Block"
#: views/blocking/blocking-create.php:153
msgid "Countries<span class=\"wf-hidden-xs\"> to Block</span>"
msgstr ""

#. translators: word order may be reversed as long as HTML remains around "from List"
#: views/blocking/blocking-create.php:153
msgid "Pick<span class=\"wf-hidden-xs\"> from List</span>"
msgstr ""

#: views/blocking/blocking-create.php:176
#: views/blocking/options-group-advanced-country.php:82
msgid "Put Geographic Protection In Place With Country Blocking"
msgstr ""

#: views/blocking/blocking-create.php:177
#: views/blocking/options-group-advanced-country.php:83
msgid "Wordfence country blocking is designed to stop an attack, prevent content theft, or end malicious activity that originates from a geographic region in less than 1/300,000th of a second. Blocking countries who are regularly creating failed logins, a large number of page not found errors, and are clearly engaged in malicious activity is an effective way to protect your site during an attack."
msgstr ""

#: views/blocking/blocking-create.php:185
msgid "IP<span class=\"wf-hidden-xs\"> Address to Block</span>"
msgstr ""

#: views/blocking/blocking-create.php:186
msgid "Enter an IP address"
msgstr ""

#: views/blocking/blocking-create.php:189
msgid "IP<span class=\"wf-hidden-xs\"> Address</span> Range"
msgstr ""

#: views/blocking/blocking-create.php:190
msgid "e.g., 192.168.200.200 - 192.168.200.220 or 192.168.200.0/24"
msgstr ""

#: views/blocking/blocking-create.php:194
msgid "e.g., *.amazonaws.com or *.linode.com"
msgstr ""

#: views/blocking/blocking-create.php:197
msgid "<span class=\"wf-hidden-xs\">Browser </span>User Agent"
msgstr ""

#: views/blocking/blocking-create.php:198
msgid "e.g., *badRobot*, *MSIE*, or *browserSuffix"
msgstr ""

#: views/blocking/blocking-create.php:202
msgid "e.g., *badwebsite.example.com*"
msgstr ""

#: views/blocking/blocking-create.php:205
msgid "<span class=\"wf-hidden-xs\">Block </span>Reason"
msgstr ""

#: views/blocking/blocking-create.php:206
msgid "Enter a reason"
msgstr ""

#. translators: word order may be altered as long as HTML remains around "Visitors Matching this"
#: views/blocking/blocking-create.php:212
msgid "Block<span class=\"wf-hidden-xs\"> Visitors Matching this</span> Pattern"
msgstr ""

#: views/blocking/blocking-create.php:512
msgid "Error Saving Block"
msgstr ""

#: views/blocking/blocking-create.php:527
msgid "U.S. Blocked"
msgstr ""

#: views/blocking/blocking-create.php:528
msgid "For most sites, we recommend allowing access from the United States, where Google and other benign crawlers are located. Some well-known crawlers also have locations in Europe, so be careful when blocking other countries, especially if you have not seen significant attacks from them."
msgstr ""

#: views/blocking/blocking-status.php:15
msgid "Manage global blocking options."
msgstr ""

#: views/blocking/blocking-status.php:24
msgid "Enable country blocking by upgrading to Premium."
msgstr ""

#: views/blocking/country-modal.php:24
msgid "Select Countries to Block from List"
msgstr ""

#: views/blocking/country-modal.php:28
msgid "Block All"
msgstr ""

#: views/blocking/country-modal.php:28
msgid "Unblock All"
msgstr ""

#: views/blocking/country-modal.php:75
msgid "Back"
msgstr ""

#: views/blocking/country-modal.php:75
msgid "Save"
msgstr ""

#: views/blocking/option-bypass-cookie.php:12
msgid "If user who is allowed to access the site views the relative URL"
msgstr ""

#: views/blocking/option-bypass-cookie.php:13
msgid "/set-country-bypass/"
msgstr ""

#: views/blocking/option-bypass-cookie.php:16
msgid "then set a cookie that will bypass country blocking in future in case that user hits the site from a blocked country."
msgstr ""

#: views/blocking/option-bypass-redirect.php:12
msgid "If user hits the relative URL"
msgstr ""

#: views/blocking/option-bypass-redirect.php:13
msgid "/bypassurl/"
msgstr ""

#: views/blocking/option-bypass-redirect.php:16
msgid "then redirect that user to"
msgstr ""

#: views/blocking/option-bypass-redirect.php:17
msgid "/page-name/"
msgstr ""

#: views/blocking/option-bypass-redirect.php:21
msgid "and set a cookie that will bypass all country blocking."
msgstr ""

#: views/blocking/options-group-advanced-country.php:22
msgid "Advanced Country Blocking Options"
msgstr ""

#: views/blocking/options-group-advanced-country.php:50
msgid "Enter a full URL (e.g., http://example.com/blocked/)"
msgstr ""

#: views/common/license.php:15
msgid "Wordfence License Installation Successful"
msgstr ""

#: views/common/license.php:18
msgid "Wordfence License Installation Failed"
msgstr ""

#: views/common/license.php:21
msgid "Install Wordfence License"
msgstr ""

#: views/common/license.php:105
msgid "The Wordfence license provided has been installed."
msgstr ""

#. translators: WordPress admin URL
#: views/common/license.php:106
msgid "Return to the <a href=\"%s\">Wordfence Admin Page</a>"
msgstr ""

#: views/common/license.php:108
msgid "The Wordfence license could not be installed."
msgstr ""

#: views/common/license.php:110
msgid "Please enter the license to install."
msgstr ""

#: views/common/license.php:118
#: views/common/unsubscribe.php:127
msgid "Generated by Wordfence at "
msgstr ""

#: views/common/license.php:118
#: views/common/unsubscribe.php:127
msgid "Your computer's time: "
msgstr ""

#: views/common/page-title.php:18
msgid "Go:"
msgstr ""

#: views/common/page-title.php:20
msgid "Go to"
msgstr ""

#: views/common/status-tooltip.php:18
msgid "<strong>Congratulations!</strong> You've optimized configurations for this feature! If you want to learn more about how this score is determined, click the link below."
msgstr ""

#: views/common/status-tooltip.php:19
#: views/common/status-tooltip.php:30
msgid "How does Wordfence determine this?"
msgstr ""

#: views/common/status-tooltip.php:21
msgid "How do I get to 100%?"
msgstr ""

#: views/common/unsubscribe.php:16
msgid "Unsubscribe from Security Alerts"
msgstr ""

#: views/common/unsubscribe.php:19
msgid "Unsubscription Confirmation Sent"
msgstr ""

#: views/common/unsubscribe.php:22
msgid "Unsubscribe Successful"
msgstr ""

#: views/common/unsubscribe.php:25
msgid "Confirm Unsubscribe"
msgstr ""

#: views/common/unsubscribe.php:109
msgid "The email address provided has been unsubscribed from future alert emails."
msgstr ""

#: views/common/unsubscribe.php:111
msgid "If the email address provided was on the alert email list, it has been sent an unsubscribe link."
msgstr ""

#: views/common/unsubscribe.php:113
msgid "Please enter an email address to unsubscribe from alerts. If this email address exists on the alert email list, it will receive a confirmation link to unsubscribe."
msgstr ""

#. translators: Email address.
#: views/common/unsubscribe.php:120
msgid "Please confirm the unsubscribe request for %s."
msgstr ""

#: views/dashboard/global-status.php:16
msgid "Wordfence Protection Activated"
msgstr ""

#: views/dashboard/option-howgetips.php:8
msgid "Let Wordfence use the most secure method to get visitor IP addresses. Prevents spoofing and works with most sites."
msgstr ""

#: views/dashboard/option-howgetips.php:12
msgid "Use the Cloudflare \"CF-Connecting-IP\" HTTP header to get a visitor IP. Only use if you're using Cloudflare."
msgstr ""

#: views/dashboard/option-howgetips.php:32
msgid "Detected IP(s):"
msgstr ""

#: views/dashboard/option-howgetips.php:33
msgid "Your IP with this setting:"
msgstr ""

#: views/dashboard/option-howgetips.php:34
msgid "Edit trusted proxies"
msgstr ""

#: views/dashboard/option-howgetips.php:69
msgid "In addition to the above list, the IPs (or CIDR ranges) in the selected preset will be ignored when determining the requesting IP via the X-Forwarded-For HTTP header."
msgstr ""

#: views/dashboard/options-group-alert.php:22
msgid "Email Alert Preferences"
msgstr ""

#: views/dashboard/options-group-alert.php:37
msgid "If you have automatic updates enabled (see above), you'll get an email when an update occurs."
msgstr ""

#: views/dashboard/options-group-alert.php:79
msgid "Alert me with scan results of this severity level or greater:"
msgstr ""

#: views/dashboard/options-group-alert.php:112
msgid "Alert when someone is blocked from logging in for using a password found in a breach"
msgstr ""

#: views/dashboard/options-group-alert.php:178
msgid "0 means unlimited alerts will be sent."
msgstr ""

#: views/dashboard/options-group-dashboard.php:22
msgid "Dashboard Notification Options"
msgstr ""

#: views/dashboard/options-group-dashboard.php:106
msgid "Dashboard notifications will also be displayed for Security Alerts, Promotions, Blog Highlights, and Product Updates. These notifications can be disabled by upgrading to a premium license."
msgstr ""

#: views/dashboard/options-group-email-summary.php:22
msgid "Activity Report"
msgstr ""

#: views/dashboard/options-group-email-summary.php:38
msgid "Once a day"
msgstr ""

#: views/dashboard/options-group-email-summary.php:39
msgid "Once a week"
msgstr ""

#: views/dashboard/options-group-email-summary.php:40
msgid "Once a month"
msgstr ""

#: views/dashboard/options-group-general.php:22
msgid "General Wordfence Options"
msgstr ""

#: views/dashboard/options-group-general.php:31
msgid "Automatically updates Wordfence to the newest version within 24 hours of a new release."
msgstr ""

#: views/dashboard/options-group-general.php:34
msgid "<span class=\"wf-red-dark\">Warning:</span> You are running the LiteSpeed web server and Wordfence can't determine whether \"noabort\" is set. Please verify that the environmental variable \"noabort\" is set for the local site, or the server's global External Application Abort is set to \"No Abort\"."
msgstr ""

#: views/dashboard/options-group-general.php:36
msgid "Please read this article in our FAQ to make an important change that will ensure your site stability during an update."
msgstr ""

#: views/dashboard/options-group-general.php:56
msgid "Separate multiple addresses with commas"
msgstr ""

#: views/dashboard/options-group-general.php:74
msgid "If this option is disabled, Wordfence can look up countries for visitor IP addresses using a local database, but cannot look up regions or cities"
msgstr ""

#: views/dashboard/options-group-general.php:121
msgid "Setting higher will reduce browser traffic but slow scan starts, live traffic &amp; status updates."
msgstr ""

#: views/dashboard/options-group-general.php:146
msgid "Note: This does not include Login Security settings and tables. An option to delete those must be selected separately on the Login Security settings page."
msgstr ""

#. translators: word order may be altered as long as HTML remains around "Wordfence"
#: views/dashboard/options-group-import.php:33
msgid "Export<span class=\"wf-hidden-xs\"> Wordfence</span> Options"
msgstr ""

#. translators: word order may be altered as long as HTML remains around "Wordfence"
#: views/dashboard/options-group-import.php:56
msgid "Import<span class=\"wf-hidden-xs\"> Wordfence</span> Options"
msgstr ""

#: views/dashboard/options-group-import.php:145
msgid "Export Successful"
msgstr ""

#: views/dashboard/options-group-import.php:146
msgid "We successfully exported your site options. To import your site options on another site, copy and paste the token below into the import text box on the destination site. Keep this token secret &mdash; it is like a password. If anyone else discovers the token it will allow them to import your options excluding your license."
msgstr ""

#: views/dashboard/options-group-import.php:155
msgid "Error during Export"
msgstr ""

#: views/dashboard/options-group-import.php:165
msgid "Import Successful"
msgstr ""

#: views/dashboard/options-group-import.php:166
msgid "We successfully imported the site options."
msgstr ""

#: views/dashboard/options-group-import.php:175
msgid "Error during Import"
msgstr ""

#: views/dashboard/options-group-license.php:22
msgid "Wordfence License"
msgstr ""

#: views/dashboard/options-group-license.php:31
msgid "Your Wordfence License"
msgstr ""

#: views/dashboard/options-group-license.php:44
msgid "License Status:"
msgstr ""

#: views/dashboard/options-group-license.php:50
msgid "%s License Expired"
msgstr ""

#: views/dashboard/options-group-license.php:53
msgid "Premium License Deactivated"
msgstr ""

#: views/dashboard/options-group-license.php:56
msgid "%s License Active"
msgstr ""

#: views/dashboard/options-group-license.php:62
msgid "Reset site to a free license"
msgstr ""

#: views/dashboard/options-group-license.php:67
msgid "Click here to manage your Wordfence licenses"
msgstr ""

#: views/dashboard/options-group-license.php:70
msgid "Remove Invalid License"
msgstr ""

#: views/dashboard/options-group-license.php:74
#: views/onboarding/registration-prompt.php:57
msgid "Install License"
msgstr ""

#: views/dashboard/options-group-license.php:150
msgid "This was a premium license key, but it is no longer valid, so premium features are disabled. You can either remove the invalid key and continue using Wordfence's free features, or enter a new premium key to upgrade. If you have questions, contact <a href=\"mailto:billing@wordfence.com\">billing@wordfence.com</a>."
msgstr ""

#: views/dashboard/options-group-license.php:163
msgid "Confirm Reset"
msgstr ""

#: views/dashboard/options-group-license.php:164
msgid "<p>Are you sure you want to reset this site's Wordfence License? This will disable Premium features and return the site to the free version of Wordfence. Your settings will still be retained when reinstalling a license.</p><p>If autorenew is enabled for the current license, the license will renew at the next expiration date. If you would like to turn renewal off or assign the license to another site, log into wordfence.com to change it.</p>"
msgstr ""

#: views/dashboard/options-group-view-customization.php:22
msgid "View Customization"
msgstr ""

#: views/dashboard/options-group-view-customization.php:36
msgid "Display \"All Options\" menu item"
msgstr ""

#: views/dashboard/options-group-view-customization.php:47
msgid "Display \"Blocking\" menu item"
msgstr ""

#: views/dashboard/options-group-view-customization.php:58
msgid "Display \"Live Traffic\" menu item"
msgstr ""

#: views/diagnostics/text.php:146
msgid "Setting Name"
msgstr ""

#: views/diagnostics/text.php:147
#: views/waf/options-group-advanced-firewall.php:138
msgid "Description"
msgstr ""

#: views/diagnostics/text.php:184
#: views/diagnostics/text.php:222
#: views/diagnostics/text.php:276
#: views/diagnostics/text.php:296
#: views/diagnostics/text.php:588
msgid "Name"
msgstr ""

#: views/diagnostics/text.php:340
msgid "Run Time"
msgstr ""

#: views/diagnostics/text.php:340
msgid "Job"
msgstr ""

#. translators: 1. Number of tables
#: views/diagnostics/text.php:419
msgid "%1$s Table in Database"
msgid_plural "%1$s Tables in Database"
msgstr[0] ""
msgstr[1] ""

#: views/diagnostics/text.php:557
msgid "Setting"
msgstr ""

#: views/gdpr/banner.php:8
msgid "Wordfence's terms of service and privacy policy have changed"
msgstr ""

#: views/gdpr/banner.php:9
#: views/gdpr/disabled-overlay.php:8
msgid "Review"
msgstr ""

#: views/gdpr/banner.php:50
msgid "We have updated our policies. To continue using Wordfence, you will need to read and agree to the <a href=\"https://www.wordfence.com/license-terms-and-conditions/\" target=\"_blank\" rel=\"noopener noreferrer\">Wordfence License Terms and Conditions<span class=\"screen-reader-text\"> (opens in new tab)</span></a>, the <a href=\"https://www.wordfence.com/services-subscription-agreement\" rel=\"noopener noreferrer\" target=\"_blank\">Services Subscription Agreement<span class=\"screen-reader-text\"> (opens in new tab)</span></a>, and <a href=\"https://www.wordfence.com/terms-of-service/\" target=\"_blank\" rel=\"noopener noreferrer\">Terms of Service<span class=\"screen-reader-text\"> (opens in new tab)</span></a>, and read and acknowledge the <a href=\"https://www.wordfence.com/privacy-policy/\" target=\"_blank\" rel=\"noopener noreferrer\">Wordfence Privacy Policy<span class=\"screen-reader-text\"> (opens in new tab)</span></a>."
msgstr ""

#: views/gdpr/banner.php:51
msgid "You can log in to <a href=\"https://www.wordfence.com/\" target=\"_blank\" rel=\"noopener noreferrer\">wordfence.com<span class=\"screen-reader-text\"> (opens in new tab)</span></a> to accept the updated terms and privacy policy for all of your license keys at once."
msgstr ""

#: views/gdpr/banner.php:56
msgid "Agree"
msgstr ""

#: views/gdpr/disabled-overlay.php:7
msgid "We have updated our policies. To continue using Wordfence, you will need to read and agree to the Wordfence License Terms and Conditions, the Services Subscription Agreement, and Terms of Service, and read and acknowledge the Wordfence Privacy Policy by clicking Review."
msgstr ""

#: views/offboarding/deactivation-prompt.php:10
msgid "Deactivate Wordfence"
msgstr ""

#: views/offboarding/deactivation-prompt.php:14
msgid "You are about to deactivate Wordfence. Would you like to delete its data or keep it in place?"
msgstr ""

#: views/offboarding/deactivation-prompt.php:28
#: views/offboarding/deactivation-prompt.php:58
msgid "Deactivate and Delete Data"
msgstr ""

#: views/offboarding/deactivation-prompt.php:37
msgid "Extended Protection Still Enabled"
msgstr ""

#: views/offboarding/deactivation-prompt.php:41
msgid "The Wordfence firewall is still optimized. You should remove the firewall's extended protection before deleting to avoid PHP errors if some firewall files cannot be removed, or if PHP's \"auto_prepend_file\" setting is cached."
msgstr ""

#. translators: Support URL.
#: views/offboarding/deactivation-prompt.php:45
#: views/waf/options-group-basic-firewall.php:169
msgid "Remove Extended Protection"
msgstr ""

#: views/offboarding/deactivation-prompt.php:53
msgid "Delete Wordfence Data?"
msgstr ""

#: views/offboarding/deactivation-prompt.php:56
msgid "Are you sure you want to delete the selected Wordfence data? If you reactivate Wordfence later, deleted settings and history cannot be recovered."
msgstr ""

#: views/offboarding/deactivation-prompt.php:68
msgid "An unexpected error occurred while attempting to configure Wordfence to delete its data on deactivation."
msgstr ""

#: views/onboarding/banner.php:8
msgid "Wordfence installation is incomplete"
msgstr ""

#: views/onboarding/banner.php:11
msgid "Remind Me Later"
msgstr ""

#: views/onboarding/banner.php:20
msgid "Notice Dismissed"
msgstr ""

#: views/onboarding/banner.php:23
msgid "You will be reminded again in 12 hours."
msgstr ""

#: views/onboarding/banner.php:36
msgid "An unexpected error occurred while attempting to dismiss the notice. Please try again."
msgstr ""

#: views/onboarding/disabled-overlay.php:7
msgid "You must install a license to continue using Wordfence."
msgstr ""

#: views/onboarding/fresh-install.php:9
msgid "Wordfence - Securing your WordPress Website"
msgstr ""

#. translators: Wordfence version.
#: views/onboarding/fresh-install.php:10
msgid "You have successfully installed Wordfence %s"
msgstr ""

#: views/onboarding/modal-final-attempt.php:10
#: views/onboarding/plugin-header.php:9
msgid "Please Complete Wordfence Installation"
msgstr ""

#: views/onboarding/modal-final-attempt.php:21
msgid "Activate Premium"
msgstr ""

#: views/onboarding/modal-final-attempt.php:22
msgid "Enter your premium license key to enable real-time protection for your website."
msgstr ""

#: views/onboarding/modal-final-attempt.php:24
msgid "Enter Premium Key"
msgstr ""

#: views/onboarding/modal-final-attempt.php:26
msgid "If you don't have one, you can purchase one now."
msgstr ""

#: views/onboarding/registration-prompt.php:19
msgid "Install your license to finish activating Wordfence."
msgstr ""

#: views/onboarding/registration-prompt.php:21
msgid "Register with Wordfence to secure your site with the latest threat intelligence."
msgstr ""

#: views/onboarding/registration-prompt.php:26
msgid "Get Your Wordfence License"
msgstr ""

#: views/onboarding/registration-prompt.php:29
msgid "Install an existing license"
msgstr ""

#: views/onboarding/registration-prompt.php:39
msgid "Email"
msgstr ""

#: views/onboarding/registration-prompt.php:40
msgid "Please enter a valid email address"
msgstr ""

#: views/onboarding/registration-prompt.php:41
msgid "This is where future security alerts for your website will be sent. This can also be changed in Global Options."
msgstr ""

#: views/onboarding/registration-prompt.php:48
msgid "Would you like WordPress security and vulnerability alerts sent to you via email?"
msgstr ""

#: views/onboarding/registration-prompt.php:54
msgid "You must select either \"Yes\" or \"No\""
msgstr ""

#: views/onboarding/registration-prompt.php:61
msgid "Get a new license"
msgstr ""

#: views/onboarding/registration-prompt.php:70
msgid "Response License Installed"
msgstr ""

#: views/onboarding/registration-prompt.php:71
msgid "Congratulations! Wordfence Response is now active on your website. Please note that some Response features are not enabled by default."
msgstr ""

#: views/onboarding/registration-prompt.php:74
msgid "Care License Installed"
msgstr ""

#: views/onboarding/registration-prompt.php:75
msgid "Congratulations! Wordfence Care is now active on your website. Please note that some Care features are not enabled by default."
msgstr ""

#: views/onboarding/registration-prompt.php:82
msgid "Free License Installed"
msgstr ""

#: views/onboarding/registration-prompt.php:83
msgid "Congratulations! Wordfence Free is now active on your website."
msgstr ""

#: views/onboarding/registration-prompt.php:99
msgid "Go To Dashboard"
msgstr ""

#: views/onboarding/registration-prompt.php:107
msgid "Error Installing License"
msgstr ""

#: views/onboarding/registration-prompt.php:111
msgid "An error occurred while installing your license key."
msgstr ""

#: views/onboarding/registration-prompt.php:112
msgid "Please try again. If the problem persists, please <a href=\"https://www.wordfence.com/help/api-key\" target=\"_blank\" rel=\"noopener noreferrer\">contact Wordfence Support<span class=\"screen-reader-text\">(opens in new tab)</span></a>"
msgstr ""

#. translators: word order may be reversed as long as HTML remains around "Restore"
#: views/options/block-all-options-controls.php:39
#: views/options/block-controls.php:37
msgid "<span class=\"wf-hidden-xs\">Restore </span>Defaults"
msgstr ""

#. translators: word order may be reversed as long as HTML remains around "Changes"
#: views/options/block-all-options-controls.php:39
#: views/options/block-controls.php:37
msgid "Cancel<span class=\"wf-hidden-xs wf-hidden-sm\"> Changes</span>"
msgstr ""

#. translators: word order may be reversed as long as HTML remains around "Changes"
#: views/options/block-all-options-controls.php:39
#: views/options/block-controls.php:37
msgid "Save<span class=\"wf-hidden-xs wf-hidden-sm\"> Changes</span>"
msgstr ""

#: views/options/block-all-options-controls.php:84
#: views/options/block-all-options-controls.php:146
msgid "Search All Options"
msgstr ""

#: views/options/options-title.php:32
msgid "Expand All"
msgstr ""

#: views/options/options-title.php:32
msgid "Collapse All"
msgstr ""

#. translators: 1. Start date. 2. End date.
#: views/reports/activity-report-email-inline.php:13
msgid "Wordfence activity from <br><strong>%1$s</strong> to <strong>%2$s</strong>"
msgstr ""

#. translators: 1. Site URL. 2. Start date. 3. End date.
#: views/reports/activity-report-email-inline.php:130
msgid "This email was sent from your website <a href=\"%1$s\">%1$s</a> and is a summary of security related activity that Wordfence monitors for the period %2$s to %3$s."
msgstr ""

#: views/reports/activity-report-email-inline.php:134
msgid "NOTE: You are using the free version of Wordfence and are missing out on features like real-time firewall rule and malware signature updates, country blocking, and detecting if your site IP is sending spam. <a href=\"http://www.wordfence.com/zz6/\">Click here to upgrade to Wordfence Premium now</a>."
msgstr ""

#: views/reports/activity-report-email-inline.php:138
msgid "Top 10 IPs Blocked"
msgstr ""

#: views/reports/activity-report-email-inline.php:174
#: views/reports/activity-report-email-inline.php:228
#: views/reports/activity-report.php:34
#: views/reports/activity-report.php:78
msgid "(Unknown)"
msgstr ""

#: views/reports/activity-report-email-inline.php:183
#: views/reports/activity-report-email-inline.php:238
msgid "No data currently."
msgstr ""

#: views/reports/activity-report-email-inline.php:191
#: views/reports/activity-report.php:51
msgid "Update Blocked IPs"
msgstr ""

#: views/reports/activity-report-email-inline.php:196
msgid "Top 10 Countries Blocked"
msgstr ""

#: views/reports/activity-report-email-inline.php:202
#: views/reports/activity-report.php:62
msgid "Total IPs Blocked"
msgstr ""

#: views/reports/activity-report-email-inline.php:246
#: views/reports/activity-report.php:96
msgid "Update Blocked Countries"
msgstr ""

#: views/reports/activity-report-email-inline.php:251
msgid "Top 10 Failed Logins"
msgstr ""

#: views/reports/activity-report-email-inline.php:258
#: views/reports/activity-report.php:108
msgid "Existing User"
msgstr ""

#: views/reports/activity-report-email-inline.php:276
#: views/reports/activity-report.php:123
msgid "No failed logins yet."
msgstr ""

#: views/reports/activity-report-email-inline.php:284
#: views/reports/activity-report.php:131
msgid "Update Login Security Options"
msgstr ""

#: views/reports/activity-report-email-inline.php:289
msgid "Recently Blocked Attacks"
msgstr ""

#: views/reports/activity-report-email-inline.php:295
msgid "IP / Action"
msgstr ""

#: views/reports/activity-report-email-inline.php:316
msgid "No blocked attacks yet."
msgstr ""

#: views/reports/activity-report-email-inline.php:326
msgid "and %d additional attacks"
msgstr ""

#: views/reports/activity-report-email-inline.php:330
msgid "View Recent Traffic"
msgstr ""

#: views/reports/activity-report-email-inline.php:335
msgid "Recently Modified Files"
msgstr ""

#: views/reports/activity-report-email-inline.php:340
msgid "Modified"
msgstr ""

#: views/reports/activity-report-email-inline.php:361
msgid "This list may include WordPress core/plugin/theme updates, error logs, cache files, and other normal changes."
msgstr ""

#: views/reports/activity-report-email-inline.php:365
#: views/reports/activity-report.php:164
msgid "Updates Needed"
msgstr ""

#: views/reports/activity-report-email-inline.php:373
#: views/reports/activity-report.php:172
msgid "Core"
msgstr ""

#. translators: WordPress version.
#: views/reports/activity-report-email-inline.php:375
#: views/reports/activity-report.php:174
msgid "A new version of WordPress (v%s) is available."
msgstr ""

#: views/reports/activity-report-email-inline.php:379
#: views/reports/activity-report.php:178
msgid "Plugins"
msgstr ""

#. translators: Plugin name.
#. translators: Plugin version.
#: views/reports/activity-report-email-inline.php:386
#: views/reports/activity-report.php:185
msgid "A new version of the plugin \"%s\" is available."
msgstr ""

#. translators: Plugin name.
#. translators: Theme name.
#: views/reports/activity-report-email-inline.php:386
#: views/reports/activity-report-email-inline.php:399
msgid "<strong>This update includes security-related fixes.</strong>"
msgstr ""

#. translators: Theme name.
#. translators: Theme version.
#: views/reports/activity-report-email-inline.php:399
#: views/reports/activity-report.php:198
msgid "A new version of the theme \"%s\" is available."
msgstr ""

#: views/reports/activity-report-email-inline.php:407
#: views/reports/activity-report.php:205
msgid "Update Now"
msgstr ""

#: views/reports/activity-report-email-inline.php:411
#: views/reports/activity-report.php:207
msgid "No updates are available at this time."
msgstr ""

#. translators: 1. Site URL. 2. WordPress admin panel URL. 3. WordPress admin panel URL.
#: views/reports/activity-report-email-inline.php:418
msgid "If you would like to sign-in to <a href=\"%1$s\">%1$s</a> please <a href=\"%2$s\">click here</a> now. You can change the frequency of this email or turn it on and off by visiting your <a href=\"%3$s\">Wordfence options page</a>."
msgstr ""

#. translators: Number of IPs.
#: views/reports/activity-report.php:9
msgid "Top %d IPs Blocked"
msgstr ""

#: views/reports/activity-report.php:43
msgid "No IPs blocked yet."
msgstr ""

#. translators: Number of countries.
#: views/reports/activity-report.php:56
msgid "Top %d Countries Blocked"
msgstr ""

#: views/reports/activity-report.php:88
msgid "No requests blocked yet."
msgstr ""

#. translators: Number of failed logins.
#: views/reports/activity-report.php:101
msgid "Top %d Failed Logins"
msgstr ""

#. translators: Seconds with millisecond precision.
#: views/reports/activity-report.php:210
msgid "Generated in %.4f seconds"
msgstr ""

#: views/scanner/issue-base.php:31
msgid "Issue Found "
msgstr ""

#: views/scanner/issue-base.php:40
msgid "Found "
msgstr ""

#: views/scanner/issue-base.php:52
msgid "New"
msgstr ""

#: views/scanner/issue-base.php:52
#: views/scanner/issue-base.php:100
msgid "Ignored"
msgstr ""

#: views/scanner/issue-base.php:53
msgid "Issue First Detected"
msgstr ""

#: views/scanner/issue-base.php:53
msgid "ago"
msgstr ""

#. translators: Localized date.
#: views/scanner/issue-base.php:102
msgid "Issue Found: %s"
msgstr ""

#. translators: Severity level.
#: views/scanner/issue-base.php:122
msgid "Severity: %s"
msgstr ""

#: views/scanner/issue-checkGSB.php:10
#: views/scanner/issue-checkHowGetIPs.php:10
#: views/scanner/issue-checkSpamIP.php:10
#: views/scanner/issue-configReadable.php:10
#: views/scanner/issue-control-ignore.php:7
#: views/scanner/issue-diskSpace.php:10
#: views/scanner/issue-geoipSupport.php:10
#: views/scanner/issue-publiclyAccessible.php:10
#: views/scanner/issue-skippedPaths.php:14
#: views/scanner/issue-spamvertizeCheck.php:10
#: views/scanner/issue-suspiciousAdminUsers.php:10
#: views/scanner/issue-timelimit.php:10
#: views/scanner/issue-wafStatus.php:10
#: views/scanner/issue-wfPluginAbandoned.php:10
#: views/scanner/issue-wfPluginRemoved.php:10
#: views/scanner/issue-wfPluginVulnerable.php:10
#: views/scanner/issue-wfUpgrade.php:10
msgid "Ignore"
msgstr ""

#: views/scanner/issue-checkGSB.php:12
#: views/scanner/issue-checkGSB.php:21
#: views/scanner/issue-commentBadURL.php:13
#: views/scanner/issue-commentBadURL.php:28
#: views/scanner/issue-database.php:13
#: views/scanner/issue-database.php:25
#: views/scanner/issue-file.php:14
#: views/scanner/issue-file.php:30
#: views/scanner/issue-knownfile.php:14
#: views/scanner/issue-knownfile.php:29
#: views/scanner/issue-optionBadURL.php:13
#: views/scanner/issue-optionBadURL.php:27
#: views/scanner/issue-postBadURL.php:13
#: views/scanner/issue-postBadURL.php:28
msgid "Bad URL"
msgstr ""

#: views/scanner/issue-checkGSB.php:14
#: views/scanner/issue-checkGSB.php:23
#: views/scanner/issue-checkHowGetIPs.php:12
#: views/scanner/issue-checkHowGetIPs.php:20
#: views/scanner/issue-checkSpamIP.php:12
#: views/scanner/issue-checkSpamIP.php:19
#: views/scanner/issue-commentBadURL.php:16
#: views/scanner/issue-commentBadURL.php:31
#: views/scanner/issue-configReadable.php:14
#: views/scanner/issue-configReadable.php:25
#: views/scanner/issue-control-show-details.php:4
#: views/scanner/issue-coreUnknown.php:11
#: views/scanner/issue-coreUnknown.php:19
#: views/scanner/issue-database.php:15
#: views/scanner/issue-database.php:27
#: views/scanner/issue-diskSpace.php:14
#: views/scanner/issue-diskSpace.php:23
#: views/scanner/issue-easyPassword.php:16
#: views/scanner/issue-easyPassword.php:27
#: views/scanner/issue-file.php:16
#: views/scanner/issue-file.php:32
#: views/scanner/issue-geoipSupport.php:12
#: views/scanner/issue-geoipSupport.php:19
#: views/scanner/issue-knownfile.php:16
#: views/scanner/issue-knownfile.php:31
#: views/scanner/issue-optionBadURL.php:15
#: views/scanner/issue-optionBadURL.php:29
#: views/scanner/issue-postBadTitle.php:15
#: views/scanner/issue-postBadTitle.php:29
#: views/scanner/issue-postBadURL.php:16
#: views/scanner/issue-postBadURL.php:31
#: views/scanner/issue-publiclyAccessible.php:14
#: views/scanner/issue-publiclyAccessible.php:25
#: views/scanner/issue-skippedPaths.php:16
#: views/scanner/issue-skippedPaths.php:24
#: views/scanner/issue-spamvertizeCheck.php:12
#: views/scanner/issue-spamvertizeCheck.php:19
#: views/scanner/issue-suspiciousAdminUsers.php:12
#: views/scanner/issue-suspiciousAdminUsers.php:22
#: views/scanner/issue-timelimit.php:12
#: views/scanner/issue-timelimit.php:19
#: views/scanner/issue-wafStatus.php:14
#: views/scanner/issue-wafStatus.php:23
#: views/scanner/issue-wfPluginAbandoned.php:16
#: views/scanner/issue-wfPluginAbandoned.php:33
#: views/scanner/issue-wfPluginRemoved.php:15
#: views/scanner/issue-wfPluginRemoved.php:30
#: views/scanner/issue-wfPluginUpgrade.php:16
#: views/scanner/issue-wfPluginUpgrade.php:33
#: views/scanner/issue-wfPluginVulnerable.php:15
#: views/scanner/issue-wfPluginVulnerable.php:30
#: views/scanner/issue-wfThemeUpgrade.php:16
#: views/scanner/issue-wfThemeUpgrade.php:32
#: views/scanner/issue-wfUpgrade.php:15
#: views/scanner/issue-wfUpgrade.php:29
#: views/scanner/issue-wfUpgradeError.php:12
#: views/scanner/issue-wfUpgradeError.php:20
#: views/scanner/issue-wpscan_directoryList.php:14
#: views/scanner/issue-wpscan_directoryList.php:25
#: views/scanner/issue-wpscan_fullPathDiscl.php:14
#: views/scanner/issue-wpscan_fullPathDiscl.php:25
msgid "Details"
msgstr ""

#: views/scanner/issue-checkGSB.php:17
#: views/scanner/issue-checkHowGetIPs.php:16
#: views/scanner/issue-checkSpamIP.php:15
#: views/scanner/issue-commentBadURL.php:23
#: views/scanner/issue-configReadable.php:19
#: views/scanner/issue-coreUnknown.php:15
#: views/scanner/issue-database.php:20
#: views/scanner/issue-diskSpace.php:17
#: views/scanner/issue-easyPassword.php:19
#: views/scanner/issue-file.php:22
#: views/scanner/issue-geoipSupport.php:15
#: views/scanner/issue-knownfile.php:22
#: views/scanner/issue-optionBadURL.php:22
#: views/scanner/issue-postBadTitle.php:22
#: views/scanner/issue-postBadURL.php:23
#: views/scanner/issue-publiclyAccessible.php:19
#: views/scanner/issue-skippedPaths.php:20
#: views/scanner/issue-spamvertizeCheck.php:15
#: views/scanner/issue-suspiciousAdminUsers.php:18
#: views/scanner/issue-timelimit.php:15
#: views/scanner/issue-wafStatus.php:17
#: views/scanner/issue-wfPluginAbandoned.php:24
#: views/scanner/issue-wfPluginRemoved.php:22
#: views/scanner/issue-wfPluginUpgrade.php:24
#: views/scanner/issue-wfPluginVulnerable.php:22
#: views/scanner/issue-wfThemeUpgrade.php:23
#: views/scanner/issue-wfUpgrade.php:21
#: views/scanner/issue-wfUpgradeError.php:15
#: views/scanner/issue-wpscan_directoryList.php:19
#: views/scanner/issue-wpscan_fullPathDiscl.php:19
msgid "Mark as Fixed"
msgstr ""

#: views/scanner/issue-checkHowGetIPs.php:15
msgid "Use Recommended Value"
msgstr ""

#: views/scanner/issue-checkSpamIP.php:8
#: views/scanner/issue-spamvertizeCheck.php:8
msgid "Spam"
msgstr ""

#: views/scanner/issue-commentBadURL.php:12
#: views/scanner/issue-commentBadURL.php:27
msgid "Author"
msgstr ""

#: views/scanner/issue-commentBadURL.php:14
#: views/scanner/issue-commentBadURL.php:29
#: views/scanner/issue-postBadTitle.php:13
#: views/scanner/issue-postBadTitle.php:27
#: views/scanner/issue-postBadURL.php:14
#: views/scanner/issue-postBadURL.php:29
msgid "Posted on"
msgstr ""

#: views/scanner/issue-commentBadURL.php:18
#: views/scanner/issue-commentBadURL.php:33
#: views/scanner/issue-optionBadURL.php:17
#: views/scanner/issue-optionBadURL.php:31
#: views/scanner/issue-postBadTitle.php:17
#: views/scanner/issue-postBadTitle.php:31
#: views/scanner/issue-postBadURL.php:18
#: views/scanner/issue-postBadURL.php:33
msgid "Multisite Blog ID"
msgstr ""

#: views/scanner/issue-commentBadURL.php:19
#: views/scanner/issue-commentBadURL.php:34
#: views/scanner/issue-optionBadURL.php:18
#: views/scanner/issue-optionBadURL.php:32
#: views/scanner/issue-postBadTitle.php:18
#: views/scanner/issue-postBadTitle.php:32
#: views/scanner/issue-postBadURL.php:19
#: views/scanner/issue-postBadURL.php:34
msgid "Multisite Blog Domain"
msgstr ""

#: views/scanner/issue-commentBadURL.php:20
#: views/scanner/issue-commentBadURL.php:35
#: views/scanner/issue-optionBadURL.php:19
#: views/scanner/issue-optionBadURL.php:33
#: views/scanner/issue-postBadTitle.php:19
#: views/scanner/issue-postBadTitle.php:33
#: views/scanner/issue-postBadURL.php:20
#: views/scanner/issue-postBadURL.php:35
msgid "Multisite Blog Path"
msgstr ""

#: views/scanner/issue-configReadable.php:8
msgid "Publicly Accessible Config/Backup/Log"
msgstr ""

#: views/scanner/issue-configReadable.php:17
#: views/scanner/issue-coreUnknown.php:13
#: views/scanner/issue-file.php:19
#: views/scanner/issue-knownfile.php:19
#: views/scanner/issue-publiclyAccessible.php:17
#: views/scanner/issue-wpscan_directoryList.php:17
#: views/scanner/issue-wpscan_fullPathDiscl.php:17
msgid "View File"
msgstr ""

#: views/scanner/issue-configReadable.php:18
#: views/scanner/issue-coreUnknown.php:14
#: views/scanner/issue-file.php:21
#: views/scanner/issue-knownfile.php:21
#: views/scanner/issue-publiclyAccessible.php:18
#: views/scanner/issue-wpscan_directoryList.php:18
#: views/scanner/issue-wpscan_fullPathDiscl.php:18
msgid "Delete File"
msgstr ""

#: views/scanner/issue-control-edit-comment.php:4
#: views/scanner/issue-control-edit-post.php:4
#: views/scanner/issue-control-edit-user.php:4
msgid "Edit"
msgstr ""

#: views/scanner/issue-control-hide-file.php:4
msgid "Hide File"
msgstr ""

#: views/scanner/issue-control-ignore.php:7
msgid "Stop Ignoring"
msgstr ""

#: views/scanner/issue-control-repair.php:4
msgid "Repair"
msgstr ""

#: views/scanner/issue-coreUnknown.php:8
msgid "Unknown Core File"
msgstr ""

#: views/scanner/issue-coreUnknown.php:10
msgid "Always Ignore Version"
msgstr ""

#: views/scanner/issue-coreUnknown.php:10
msgid "Ignore Until Version Changes"
msgstr ""

#: views/scanner/issue-database.php:8
msgid "Option"
msgstr ""

#: views/scanner/issue-database.php:10
msgid "Ignore Value"
msgstr ""

#: views/scanner/issue-database.php:10
#: views/scanner/issue-optionBadURL.php:10
msgid "Ignore Option"
msgstr ""

#: views/scanner/issue-database.php:12
#: views/scanner/issue-database.php:24
#: views/scanner/issue-optionBadURL.php:12
#: views/scanner/issue-optionBadURL.php:26
msgid "Option Name"
msgstr ""

#: views/scanner/issue-database.php:18
msgid "View Option"
msgstr ""

#: views/scanner/issue-database.php:19
msgid "Delete Option"
msgstr ""

#: views/scanner/issue-diskSpace.php:8
msgid "Disk Space"
msgstr ""

#: views/scanner/issue-diskSpace.php:12
#: views/scanner/issue-diskSpace.php:21
msgid "Space Remaining"
msgstr ""

#: views/scanner/issue-easyPassword.php:8
msgid "Insecure Password"
msgstr ""

#: views/scanner/issue-easyPassword.php:10
msgid "Ignore All for User"
msgstr ""

#: views/scanner/issue-easyPassword.php:10
msgid "Ignore Only this Password"
msgstr ""

#: views/scanner/issue-easyPassword.php:12
#: views/scanner/issue-easyPassword.php:23
msgid "Login Name"
msgstr ""

#: views/scanner/issue-easyPassword.php:13
#: views/scanner/issue-easyPassword.php:24
msgid "User Email"
msgstr ""

#: views/scanner/issue-easyPassword.php:14
#: views/scanner/issue-easyPassword.php:25
msgid "Full Name"
msgstr ""

#: views/scanner/issue-file.php:10
#: views/scanner/issue-knownfile.php:10
#: views/scanner/issue-postBadTitle.php:10
#: views/scanner/issue-postBadURL.php:10
msgid "Always Ignore"
msgstr ""

#: views/scanner/issue-file.php:10
#: views/scanner/issue-knownfile.php:10
msgid "Ignore Until File Changes"
msgstr ""

#: views/scanner/issue-file.php:12
#: views/scanner/issue-file.php:26
#: views/scanner/issue-knownfile.php:12
#: views/scanner/issue-knownfile.php:26
msgid "Filename"
msgstr ""

#: views/scanner/issue-file.php:13
#: views/scanner/issue-file.php:27
#: views/scanner/issue-file.php:28
#: views/scanner/issue-file.php:29
#: views/scanner/issue-knownfile.php:13
#: views/scanner/issue-knownfile.php:27
#: views/scanner/issue-knownfile.php:28
msgid "File Type"
msgstr ""

#: views/scanner/issue-file.php:13
msgid "WordPress Configuration File"
msgstr ""

#: views/scanner/issue-file.php:13
#: views/scanner/issue-knownfile.php:13
msgid "Not a core, theme, or plugin file from wordpress.org"
msgstr ""

#: views/scanner/issue-file.php:16
msgid "This is your main configuration file and cannot be deleted. It must be cleaned manually."
msgstr ""

#: views/scanner/issue-file.php:20
#: views/scanner/issue-knownfile.php:20
msgid "View Differences"
msgstr ""

#: views/scanner/issue-geoipSupport.php:8
msgid "Server Update"
msgstr ""

#: views/scanner/issue-optionBadURL.php:10
msgid "Ignore URL"
msgstr ""

#: views/scanner/issue-postBadTitle.php:8
msgid "Post"
msgstr ""

#: views/scanner/issue-postBadTitle.php:10
msgid "Ignore Only this Title"
msgstr ""

#: views/scanner/issue-postBadTitle.php:12
#: views/scanner/issue-postBadTitle.php:26
#: views/scanner/issue-postBadURL.php:12
#: views/scanner/issue-postBadURL.php:27
msgid "Title"
msgstr ""

#: views/scanner/issue-postBadURL.php:10
msgid "Ignore this URL"
msgstr ""

#: views/scanner/issue-publiclyAccessible.php:8
msgid "Quarantined File"
msgstr ""

#: views/scanner/issue-skippedPaths.php:12
msgid "Skipped Paths"
msgstr ""

#: views/scanner/issue-skippedPaths.php:19
msgid "Go To Option"
msgstr ""

#: views/scanner/issue-suspiciousAdminUsers.php:8
msgid "Unknown Administrator"
msgstr ""

#: views/scanner/issue-suspiciousAdminUsers.php:15
msgid "Delete User"
msgstr ""

#: views/scanner/issue-suspiciousAdminUsers.php:16
msgid "Revoke Capabilities"
msgstr ""

#: views/scanner/issue-suspiciousAdminUsers.php:17
msgid "Acknowledge User"
msgstr ""

#: views/scanner/issue-timelimit.php:8
msgid "Time Limit"
msgstr ""

#: views/scanner/issue-wafStatus.php:8
msgid "WAF Status"
msgstr ""

#: views/scanner/issue-wfPluginAbandoned.php:8
msgid "Plugin Abandoned"
msgstr ""

#: views/scanner/issue-wfPluginAbandoned.php:12
#: views/scanner/issue-wfPluginAbandoned.php:29
#: views/scanner/issue-wfPluginRemoved.php:12
#: views/scanner/issue-wfPluginRemoved.php:27
#: views/scanner/issue-wfPluginUpgrade.php:12
#: views/scanner/issue-wfPluginUpgrade.php:29
#: views/scanner/issue-wfPluginVulnerable.php:12
#: views/scanner/issue-wfPluginVulnerable.php:27
msgid "Plugin Name"
msgstr ""

#: views/scanner/issue-wfPluginAbandoned.php:13
#: views/scanner/issue-wfPluginAbandoned.php:30
#: views/scanner/issue-wfPluginRemoved.php:13
#: views/scanner/issue-wfPluginRemoved.php:28
#: views/scanner/issue-wfPluginUpgrade.php:13
#: views/scanner/issue-wfPluginUpgrade.php:30
#: views/scanner/issue-wfPluginVulnerable.php:13
#: views/scanner/issue-wfPluginVulnerable.php:28
msgid "Current Plugin Version"
msgstr ""

#: views/scanner/issue-wfPluginAbandoned.php:14
#: views/scanner/issue-wfPluginAbandoned.php:31
msgid "Last Updated"
msgstr ""

#: views/scanner/issue-wfPluginAbandoned.php:16
#: views/scanner/issue-wfPluginAbandoned.php:34
msgid "Plugin has unpatched security issues."
msgstr ""

#: views/scanner/issue-wfPluginAbandoned.php:18
#: views/scanner/issue-wfPluginAbandoned.php:36
#: views/scanner/issue-wfPluginRemoved.php:17
#: views/scanner/issue-wfPluginRemoved.php:32
#: views/scanner/issue-wfPluginUpgrade.php:18
#: views/scanner/issue-wfPluginUpgrade.php:36
msgid "Plugin URL"
msgstr ""

#: views/scanner/issue-wfPluginAbandoned.php:19
#: views/scanner/issue-wfPluginAbandoned.php:37
#: views/scanner/issue-wfPluginUpgrade.php:37
#: views/scanner/issue-wfPluginVulnerable.php:17
msgid "Repository URL"
msgstr ""

#: views/scanner/issue-wfPluginAbandoned.php:25
#: views/scanner/issue-wfPluginRemoved.php:23
#: views/scanner/issue-wfPluginVulnerable.php:23
msgid "Manage Plugins"
msgstr ""

#: views/scanner/issue-wfPluginAbandoned.php:34
#: views/scanner/issue-wfPluginUpgrade.php:34
#: views/scanner/issue-wfThemeUpgrade.php:33
#: views/scanner/issue-wfUpgrade.php:30
msgid "Vulnerability Status"
msgstr ""

#: views/scanner/issue-wfPluginRemoved.php:8
msgid "Plugin Removed"
msgstr ""

#: views/scanner/issue-wfPluginUpgrade.php:8
msgid "Plugin Upgrade"
msgstr ""

#: views/scanner/issue-wfPluginUpgrade.php:10
#: views/scanner/issue-wfUpgradeError.php:10
msgid "Ignore Update"
msgstr ""

#: views/scanner/issue-wfPluginUpgrade.php:14
#: views/scanner/issue-wfPluginUpgrade.php:31
msgid "New Plugin Version"
msgstr ""

#: views/scanner/issue-wfPluginUpgrade.php:16
#: views/scanner/issue-wfThemeUpgrade.php:16
#: views/scanner/issue-wfUpgrade.php:15
msgid "Click here to update now"
msgstr ""

#: views/scanner/issue-wfPluginUpgrade.php:19
msgid "Changelog"
msgstr ""

#: views/scanner/issue-wfPluginUpgrade.php:25
#: views/scanner/issue-wfThemeUpgrade.php:24
#: views/scanner/issue-wfUpgrade.php:22
#: views/scanner/issue-wfUpgradeError.php:16
msgid "View Updates"
msgstr ""

#: views/scanner/issue-wfPluginVulnerable.php:8
msgid "Plugin Vulnerable"
msgstr ""

#: views/scanner/issue-wfThemeUpgrade.php:8
msgid "Theme Upgrade"
msgstr ""

#: views/scanner/issue-wfThemeUpgrade.php:10
msgid "Ignore "
msgstr ""

#: views/scanner/issue-wfThemeUpgrade.php:12
#: views/scanner/issue-wfThemeUpgrade.php:28
msgid "Theme Name"
msgstr ""

#: views/scanner/issue-wfThemeUpgrade.php:13
#: views/scanner/issue-wfThemeUpgrade.php:29
msgid "Current Theme Version"
msgstr ""

#: views/scanner/issue-wfThemeUpgrade.php:14
#: views/scanner/issue-wfThemeUpgrade.php:30
msgid "New Theme Version"
msgstr ""

#: views/scanner/issue-wfThemeUpgrade.php:18
#: views/scanner/issue-wfThemeUpgrade.php:35
msgid "Theme URL"
msgstr ""

#: views/scanner/issue-wfUpgrade.php:8
msgid "Core Upgrade"
msgstr ""

#: views/scanner/issue-wfUpgrade.php:12
#: views/scanner/issue-wfUpgrade.php:26
msgid "Current WordPress Version"
msgstr ""

#: views/scanner/issue-wfUpgrade.php:13
#: views/scanner/issue-wfUpgrade.php:27
msgid "New WordPress Version"
msgstr ""

#: views/scanner/issue-wfUpgradeError.php:8
msgid "Update Check Error"
msgstr ""

#: views/scanner/issue-wpscan_directoryList.php:8
msgid "Directory Listing Enabled"
msgstr ""

#: views/scanner/option-scan-signatures.php:27
msgid "Add Additional Signatures"
msgstr ""

#: views/scanner/options-group-advanced.php:23
msgid "Advanced Scan Options"
msgstr ""

#: views/scanner/options-group-advanced.php:60
msgid "This option requires cURL. (This may have no effect on some old PHP or cURL versions.)"
msgstr ""

#: views/scanner/options-group-basic.php:23
msgid "Basic Scan Type Options"
msgstr ""

#: views/scanner/options-group-general.php:23
msgid "General Options"
msgstr ""

#: views/scanner/options-group-general.php:32
#: views/scanner/options-group-general.php:33
#: views/scanner/options-group-general.php:34
msgid "<em>Reputation check</em>"
msgstr ""

#: views/scanner/options-group-performance.php:23
msgid "Performance Options"
msgstr ""

#: views/scanner/options-group-performance.php:33
msgid "0 or empty means unlimited issues will be sent"
msgstr ""

#. translators: Time until.
#: views/scanner/options-group-performance.php:34
msgid "0 or empty means the default of %s will be used"
msgstr ""

#. translators: Time until.
#: views/scanner/options-group-performance.php:35
msgid "Memory size in megabytes"
msgstr ""

#. translators: PHP max execution time (number).
#: views/scanner/options-group-performance.php:36
msgid "0 for default. Must be %d or greater and 10-20 or higher is recommended for most servers"
msgstr ""

#: views/scanner/options-group-scan-schedule.php:23
msgid "Scan Scheduling"
msgstr ""

#: views/scanner/scan-failed.php:15
msgid "Scan Failed"
msgstr ""

#: views/scanner/scan-failed.php:26
msgid "The error returned was:"
msgstr ""

#. translators: word order may be altered as long as HTML remains around "activity"
#: views/scanner/scan-progress-detailed.php:16
msgid "Email<span class=\"wf-hidden-xs\"> activity</span> log"
msgstr ""

#. translators: word order may be altered as long as HTML remains around "full"
#: views/scanner/scan-progress-detailed.php:16
msgid "View<span class=\"wf-hidden-xs\"> full</span> log"
msgstr ""

#. translators: word order may be altered as long as HTML remains around "full"
#: views/scanner/scan-progress-detailed.php:16
msgid "Hide log"
msgstr ""

#. translators: word order may be altered as long as HTML remains around "full"
#: views/scanner/scan-progress-detailed.php:16
msgid "Show log"
msgstr ""

#: views/scanner/scan-progress-element.php:59
msgid "Upgrade"
msgstr ""

#: views/scanner/scan-progress.php:18
msgid "Spamvertising Checks"
msgstr ""

#: views/scanner/scan-progress.php:25
msgid "Spam Check"
msgstr ""

#: views/scanner/scan-progress.php:32
msgid "Blocklist Check"
msgstr ""

#: views/scanner/scan-progress.php:39
msgid "Server State"
msgstr ""

#: views/scanner/scan-progress.php:46
msgid "File Changes"
msgstr ""

#: views/scanner/scan-progress.php:53
msgid "Malware Scan"
msgstr ""

#: views/scanner/scan-progress.php:60
msgid "Content Safety"
msgstr ""

#: views/scanner/scan-progress.php:67
msgid "Public Files"
msgstr ""

#: views/scanner/scan-progress.php:74
msgid "Password Strength"
msgstr ""

#: views/scanner/scan-progress.php:81
msgid "Vulnerability Scan"
msgstr ""

#: views/scanner/scan-progress.php:88
msgid "User & Option Audit"
msgstr ""

#: views/scanner/scan-results.php:16
msgid "Results<span class=\"wf-hidden-xs\"> Found</span>"
msgstr ""

#: views/scanner/scan-results.php:17
msgid "Ignored<span class=\"wf-hidden-xs\"> Results</span>"
msgstr ""

#: views/scanner/scan-results.php:30
msgid "Delete All Deletable Files"
msgstr ""

#: views/scanner/scan-results.php:30
msgid "Repair All Repairable Files"
msgstr ""

#: views/scanner/scan-results.php:39
#: views/scanner/scan-results.php:71
msgid "Posts, Comments, &amp; Files"
msgstr ""

#: views/scanner/scan-results.php:45
#: views/scanner/scan-results.php:77
msgid "Themes &amp; Plugins"
msgstr ""

#: views/scanner/scan-results.php:51
#: views/scanner/scan-results.php:83
msgid "Users Checked"
msgstr ""

#: views/scanner/scan-results.php:57
#: views/scanner/scan-results.php:89
msgid "URLs Checked"
msgstr ""

#: views/scanner/scan-results.php:63
#: views/scanner/scan-results.php:95
msgid "Results Found"
msgstr ""

#: views/scanner/scan-scheduling.php:29
msgid "Let Wordfence choose when to scan my site (recommended)"
msgstr ""

#: views/scanner/scan-scheduling.php:38
msgid "Manually schedule scans"
msgstr ""

#: views/scanner/scan-scheduling.php:44
msgid "Once Daily"
msgstr ""

#: views/scanner/scan-scheduling.php:45
msgid "Twice Daily"
msgstr ""

#: views/scanner/scan-scheduling.php:46
msgid "Every Other Day"
msgstr ""

#: views/scanner/scan-scheduling.php:47
msgid "Weekdays"
msgstr ""

#: views/scanner/scan-scheduling.php:48
msgid "Weekends"
msgstr ""

#: views/scanner/scan-scheduling.php:49
msgid "Odd Days & Weekends"
msgstr ""

#: views/scanner/scan-scheduling.php:190
msgid "Use preferred start time"
msgstr ""

#: views/scanner/scan-scheduling.php:190
msgid "Start time"
msgstr ""

#: views/scanner/scan-scheduling.php:202
#: views/scanner/scan-scheduling.php:242
msgid "AM"
msgstr ""

#: views/scanner/scan-scheduling.php:205
#: views/scanner/scan-scheduling.php:253
msgid "PM"
msgstr ""

#: views/scanner/scan-scheduling.php:223
msgid "Monday"
msgstr ""

#: views/scanner/scan-scheduling.php:224
msgid "Tuesday"
msgstr ""

#: views/scanner/scan-scheduling.php:225
msgid "Wednesday"
msgstr ""

#: views/scanner/scan-scheduling.php:226
msgid "Thursday"
msgstr ""

#: views/scanner/scan-scheduling.php:227
msgid "Friday"
msgstr ""

#: views/scanner/scan-scheduling.php:228
msgid "Saturday"
msgstr ""

#: views/scanner/scan-scheduling.php:229
msgid "Sunday"
msgstr ""

#: views/scanner/scan-starter.php:13
msgid "Start New Scan"
msgstr ""

#: views/scanner/scan-starter.php:14
msgid "Stop Scan"
msgstr ""

#: views/scanner/scan-starter.php:29
msgid "Scan Stopping"
msgstr ""

#: views/scanner/scan-starter.php:29
msgid "Stop Failed"
msgstr ""

#: views/scanner/scan-starter.php:29
msgid "A termination request has been sent to stop any running scans."
msgstr ""

#: views/scanner/scan-starter.php:29
msgid "We failed to send a termination request."
msgstr ""

#: views/scanner/scan-type.php:21
msgid "For entry-level hosting plans. Provides limited detection capability with very low resource utilization."
msgstr ""

#: views/scanner/scan-type.php:27
msgid "Our recommendation for all websites. Provides the best detection capability in the industry."
msgstr ""

#: views/scanner/scan-type.php:33
msgid "For site owners who think they may have been hacked. More thorough but may produce false positives."
msgstr ""

#: views/scanner/scan-type.php:39
msgid "Selected automatically when General Options have been customized for this website."
msgstr ""

#: views/scanner/scanner-status.php:19
msgid "Wordfence Scan &amp; Response License Enabled"
msgstr ""

#: views/scanner/scanner-status.php:22
msgid "Wordfence Scan &amp; Care License Enabled"
msgstr ""

#: views/scanner/scanner-status.php:25
msgid "Wordfence Scan &amp; Premium Enabled"
msgstr ""

#: views/scanner/scanner-status.php:35
msgid "Wordfence Scan Deactivated"
msgstr ""

#: views/scanner/scanner-status.php:36
msgid "A Wordfence scan examines all files, posts, pages, and comments on your WordPress website looking for malware, known malicious URLs, and known patterns of infections. It also does several other reputation and server checks."
msgstr ""

#: views/scanner/scanner-status.php:38
msgid "Enable Automatic Scans"
msgstr ""

#: views/scanner/scanner-status.php:58
msgid "Wordfence Scan Enabled"
msgstr ""

#: views/scanner/scanner-status.php:66
msgid "As a free Wordfence user, you are currently using the Community version of the Threat Defense Feed. Premium users are protected by additional firewall rules and malware signatures as well as the Wordfence real-time IP blocklist. Upgrade to Premium today to improve your protection."
msgstr ""

#: views/scanner/scanner-status.php:72
#: views/waf/firewall-status.php:85
msgid "Premium Protection Enabled"
msgstr ""

#: views/scanner/site-cleaning-beta-sigs.php:13
#: views/scanner/site-cleaning-high-sense.php:13
msgid "The results of your scan may indicate that you could benefit from Wordfence Site Cleaning"
msgstr ""

#: views/scanner/site-cleaning-beta-sigs.php:14
msgid "Since you have the beta threat defense feed enabled, there is a high likelihood that your results could include false positives. If you think you have indeed been hacked, our team of security experts can help."
msgstr ""

#: views/scanner/site-cleaning-bottom.php:12
msgid "Need help from the WordPress security experts?"
msgstr ""

#: views/scanner/site-cleaning-bottom.php:14
msgid "Sign up for Wordfence Care today and get expert help with any security issue. Wordfence Care is for business owners who put a premium on their time. With Wordfence Care, we take care of it, so that you can focus on your customers. Check out Wordfence Response for mission-critical WordPress websites."
msgstr ""

#: views/scanner/site-cleaning-bottom.php:18
#: views/scanner/site-cleaning.php:21
msgid "Learn More About Wordfence Care"
msgstr ""

#: views/scanner/site-cleaning-bottom.php:19
msgid "Learn More About Wordfence Response"
msgstr ""

#: views/scanner/site-cleaning-high-sense.php:14
msgid "Since you have High Sensitivity scanning enabled, there is a very high likelihood that your results will include false positives. If you think you have indeed been hacked, our team of security experts can help."
msgstr ""

#: views/scanner/site-cleaning.php:13
msgid "Need help with a security issue?"
msgstr ""

#: views/scanner/site-cleaning.php:15
msgid "Sign up for Wordfence Care and we’ll take care of it. Our security experts will clean your site, resolve the infection, and perform a security audit. Get hands-on support with any security issue including help installing, configuring and optimizing Wordfence."
msgstr ""

#: views/tools/options-group-2fa.php:24
msgid "Two-Factor Authentication Options"
msgstr ""

#. translators: Support URL.
#: views/tools/options-group-2fa.php:51
msgid "<strong>Require Cellphone Sign-in for all Administrators<a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"wfhelp wf-inline-help\"><span class=\"screen-reader-text\"> (opens in new tab)</span></a></strong><br><em>Note:</em> This setting requires at least one administrator to have Cellphone Sign-in enabled. On multisite, this option applies only to super admins."
msgstr ""

#. translators: Support URL.
#: views/tools/options-group-2fa.php:63
msgid "<strong>Enable Separate Prompt for Two-Factor Code<a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"wfhelp wf-inline-help\"><span class=\"screen-reader-text\"> (opens in new tab)</span></a></strong><br><em>Note:</em> This setting changes the behavior for obtaining the two-factor authentication code from using the password field to showing a separate prompt. If your theme overrides the default login page, you may not be able to use this option."
msgstr ""

#. translators: Support URL.
#: views/tools/options-group-2fa.php:64
msgid "<br><strong>This setting will be ignored because the PHP configuration option <code>output_buffering</code> is off.</strong>"
msgstr ""

#: views/tools/options-group-live-traffic.php:32
msgid "Live Traffic Options"
msgstr ""

#: views/tools/options-group-live-traffic.php:40
msgid "These options let you choose which traffic to log and to ignore certain types of visitors, based on their level of access, usernames, IP address, or browser type. If you run a high-traffic website where it is not feasible to see your visitors in real-time, simply change the <strong>Traffic logging mode</strong> to \"Security Only.\""
msgstr ""

#: views/tools/options-group-live-traffic.php:49
msgid "Are you sure you want to restore the default Live Traffic settings? This will undo any custom changes you have made to the options on this page."
msgstr ""

#: views/tools/options-group-live-traffic.php:61
msgid "Traffic logging mode"
msgstr ""

#: views/tools/options-group-live-traffic.php:63
msgid "Security Only"
msgstr ""

#: views/tools/options-group-live-traffic.php:64
msgid "All Traffic"
msgstr ""

#: views/tools/options-group-live-traffic.php:123
msgid "Maximum days to keep Live Traffic data (1-30 days)"
msgstr ""

#: views/tools/options-group-live-traffic.php:135
msgid "Display Live Traffic menu option"
msgstr ""

#: views/tours/login-security.php:28
msgid "Introducing the New Wordfence 2FA"
msgstr ""

#: views/tours/login-security.php:29
msgid "We are excited to announce the release of a completely rebuilt two-factor authentication (2FA) feature within Wordfence. 2FA is an important layer of security that protects you from password guessing and credential stuffing attacks. Previously a Premium-only feature, it is now available for sites running the free version of Wordfence. You are now able to enable 2FA for any role, we’ve added a number of important security features, and we’ve significantly improved the admin interface."
msgstr ""

#: views/tours/login-security.php:44
msgid "Individual Allowlisting"
msgstr ""

#: views/tours/login-security.php:45
msgid "Two-factor authentication now has its own IP allowlist. If necessary, you can allow specific IP addresses or ranges to skip 2FA when logging in."
msgstr ""

#: views/tours/login-security.php:60
msgid "New Login Page Captcha Feature"
msgstr ""

#: views/tours/login-security.php:61
msgid "Wordfence now includes the option to enable Google reCaptcha v3 on your WordPress login and registration pages. This adds a powerful new layer of protection against password guessing and credential stuffing attacks from bots without slowing down real users."
msgstr ""

#: views/tours/login-security.php:70
msgid "Done"
msgstr ""

#. translators: 1. PHP version. 2. Wordfence version. 3. Minimum PHP version.
#: views/unsupported-php/admin-message.php:17
msgid "You are running PHP version %1$s that is not supported by Wordfence %2$s. Wordfence features will not be available until PHP has been upgraded. We recommend using PHP version 8.1, but Wordfence will run on PHP version %3$s at a minimum."
msgstr ""

#: views/user/disabled-application-passwords.php:9
msgid "Application Passwords"
msgstr ""

#: views/user/disabled-application-passwords.php:17
msgid "The site admin can change this option."
msgstr ""

#: views/user/disabled-application-passwords.php:24
msgid "Edit Wordfence Options"
msgstr ""

#: views/waf/firewall-status.php:19
msgid "Wordfence Firewall &amp; Response License Enabled"
msgstr ""

#: views/waf/firewall-status.php:22
msgid "Wordfence Firewall &amp; Care License Enabled"
msgstr ""

#: views/waf/firewall-status.php:25
msgid "Wordfence Firewall &amp; Premium Enabled"
msgstr ""

#: views/waf/firewall-status.php:35
msgid "Wordfence Firewall Deactivated"
msgstr ""

#: views/waf/firewall-status.php:36
msgid "The Wordfence Web Application Firewall is a PHP-based, application-level firewall that filters out malicious requests to your site. It is designed to run at the beginning of WordPress' initialization to filter any attacks before plugins or themes can run any potentially vulnerable code."
msgstr ""

#: views/waf/firewall-status.php:38
msgid "Enable Firewall"
msgstr ""

#: views/waf/firewall-status.php:59
msgid "Wordfence Firewall Activated"
msgstr ""

#: views/waf/firewall-status.php:68
msgid "Learning Mode Enabled"
msgstr ""

#. translators: Localized date.
#: views/waf/firewall-status.php:68
msgid "Learning Mode Until %s"
msgstr ""

#. translators: Localized date.
#: views/waf/firewall-status.php:69
msgid "<i class=\"wf-fa wf-fa-lightbulb-o wf-tip\" aria-hidden=\"true\"></i> When you first install the Wordfence Web Application Firewall, it will be in learning mode. This allows Wordfence to learn about your site so that we can understand how to protect it and how to allow normal visitors through the firewall. We recommend you let Wordfence learn for a week before you enable the firewall."
msgstr ""

#: views/waf/option-rate-limit.php:34
msgid "then"
msgstr ""

#: views/waf/option-rules.php:5
msgid "Rules"
msgstr ""

#: views/waf/option-rules.php:6
msgid "You are currently running the WAF from another WordPress installation. These rules can be disabled or enabled once you configure the firewall to run correctly on this site."
msgstr ""

#: views/waf/option-rules.php:11
msgid "Manually Refresh Rules"
msgstr ""

#: views/waf/option-whitelist.php:5
msgid "Add Allowlisted URL/Param"
msgstr ""

#: views/waf/option-whitelist.php:5
msgid "The URL/parameters in this table will not be tested by the firewall. They are typically added while the firewall is in Learning Mode or by an admin who identifies a particular action/request is a false positive."
msgstr ""

#: views/waf/option-whitelist.php:13
msgid "POST Body"
msgstr ""

#: views/waf/option-whitelist.php:14
msgid "Cookie"
msgstr ""

#: views/waf/option-whitelist.php:15
msgid "File Name"
msgstr ""

#: views/waf/option-whitelist.php:16
msgid "Header"
msgstr ""

#: views/waf/option-whitelist.php:17
msgid "Query String"
msgstr ""

#: views/waf/option-whitelist.php:21
msgid "Param Name"
msgstr ""

#: views/waf/option-whitelist.php:23
msgid "Add"
msgstr ""

#: views/waf/option-whitelist.php:53
msgid "Allowlist Entry Exists"
msgstr ""

#: views/waf/option-whitelist.php:53
msgid "An allowlist entry for this URL and parameter already exists."
msgstr ""

#: views/waf/option-whitelist.php:107
#: views/waf/options-group-whitelisted.php:83
#: views/waf/options-group-whitelisted.php:96
msgid "Param"
msgstr ""

#: views/waf/option-whitelist.php:108
#: views/waf/options-group-whitelisted.php:85
#: views/waf/options-group-whitelisted.php:98
msgid "Source"
msgstr ""

#: views/waf/option-whitelist.php:112
msgid "Filter Value"
msgstr ""

#: views/waf/options-group-advanced-firewall.php:26
msgid "Advanced Firewall Options"
msgstr ""

#: views/waf/options-group-advanced-firewall.php:41
msgid "You are currently running the WAF from another WordPress installation. This option can be changed once you configure the firewall to run correctly on this site."
msgstr ""

#: views/waf/options-group-advanced-firewall.php:54
msgid "Allowlisted IPs must be separated by commas or placed on separate lines. You can specify ranges using the following formats: 127.0.0.1/24, 127.0.0.[1-100], or 127.0.0.1-127.0.1.100<br/>Wordfence automatically allowlists <a href=\"http://en.wikipedia.org/wiki/Private_network\" target=\"_blank\" rel=\"noopener noreferrer\">private networks<span class=\"screen-reader-text\"> (opens in new tab)</span></a> because these are not routable on the public Internet."
msgstr ""

#: views/waf/options-group-advanced-firewall.php:101
msgid "Separate multiple URLs with commas or place them on separate lines. Asterisks are wildcards, but use with care. If you see an attacker repeatedly probing your site for a known vulnerability you can use this to immediately block them. All URLs must start with a \"/\" without quotes and must be relative. e.g. /badURLone/, /bannedPage.html, /dont-access/this/URL/, /starts/with-*"
msgstr ""

#: views/waf/options-group-advanced-firewall.php:114
msgid "Ignored IPs must be separated by commas or placed on separate lines. These addresses will be ignored from any alerts about increased attacks and can be used to ignore things like standalone website security scanners."
msgstr ""

#: views/waf/options-group-advanced-firewall.php:137
msgid "Category"
msgstr ""

#: views/waf/options-group-advanced-firewall.php:153
msgid "No rules currently set."
msgstr ""

#: views/waf/options-group-advanced-firewall.php:153
msgid "<a href=\"#\" onclick=\"WFAD.wafUpdateRules();return false;\" role=\"button\">Click here</a> to pull down the latest from the Wordfence servers."
msgstr ""

#: views/waf/options-group-advanced-firewall.php:161
msgid "SHOW ALL RULES"
msgstr ""

#: views/waf/options-group-basic-firewall.php:26
msgid "Basic Firewall Options"
msgstr ""

#. translators: WordPress admin URL.
#: views/waf/options-group-basic-firewall.php:36
#: views/waf/options-group-basic-firewall.php:473
#: views/waf/options-group-whitelisted.php:35
msgid "You are currently running the Wordfence Web Application Firewall from another WordPress installation. Please <a href=\"%s\">click here</a> to configure the Firewall to run correctly on this site."
msgstr ""

#: views/waf/options-group-basic-firewall.php:40
msgid "Enabled and Protecting:"
msgstr ""

#: views/waf/options-group-basic-firewall.php:40
msgid "In this mode, the Wordfence Web Application Firewall is actively blocking requests matching known attack patterns and is actively protecting your site from attackers."
msgstr ""

#: views/waf/options-group-basic-firewall.php:41
msgid "Learning Mode:"
msgstr ""

#. translators: Support URL.
#: views/waf/options-group-basic-firewall.php:41
msgid "When you first install the Wordfence Web Application Firewall, it will be in learning mode. This allows Wordfence to learn about your site so that we can understand how to protect it and how to allow normal visitors through the firewall. We recommend you let Wordfence learn for a week before you enable the firewall. <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More<span class=\"screen-reader-text\"> (opens in new tab)</span></a>"
msgstr ""

#. translators: Support URL.
#: views/waf/options-group-basic-firewall.php:42
msgid "Disabled:"
msgstr ""

#. translators: Support URL.
#: views/waf/options-group-basic-firewall.php:42
msgid "In this mode, the Wordfence Web Application Firewall is functionally turned off and does not run any of its rules or analyze the request in any way."
msgstr ""

#: views/waf/options-group-basic-firewall.php:46
msgid "Enabled and Protecting"
msgstr ""

#: views/waf/options-group-basic-firewall.php:161
msgid "Automatically enable on"
msgstr ""

#: views/waf/options-group-basic-firewall.php:165
msgid "Protection Level"
msgstr ""

#: views/waf/options-group-basic-firewall.php:167
msgid "Extended Protection:"
msgstr ""

#: views/waf/options-group-basic-firewall.php:167
msgid "All PHP requests will be processed by the firewall prior to running."
msgstr ""

#. translators: Support URL.
#: views/waf/options-group-basic-firewall.php:168
msgid "If you're moving to a new host or a new installation location, you may need to temporarily disable extended protection to avoid any file not found errors. Use this action to remove the configuration changes that enable extended protection mode or you can <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">remove them manually<span class=\"screen-reader-text\"> (opens in new tab)</span></a>."
msgstr ""

#: views/waf/options-group-basic-firewall.php:171
msgid "Existing WAF Installation Detected:"
msgstr ""

#: views/waf/options-group-basic-firewall.php:171
msgid "You are currently running the Wordfence Web Application Firewall from another WordPress installation. Please configure the firewall to run correctly on this site."
msgstr ""

#: views/waf/options-group-basic-firewall.php:172
#: views/waf/options-group-basic-firewall.php:175
msgid "Optimize the Wordfence Firewall"
msgstr ""

#: views/waf/options-group-basic-firewall.php:174
msgid "Basic WordPress Protection:"
msgstr ""

#: views/waf/options-group-basic-firewall.php:174
msgid "The plugin will load as a regular plugin after WordPress has been loaded, and while it can block many malicious requests, some vulnerable plugins or WordPress itself may run vulnerable code before all plugins are loaded."
msgstr ""

#: views/waf/options-group-basic-firewall.php:296
msgid "Error During Setup"
msgstr ""

#: views/waf/options-group-basic-firewall.php:470
msgid "Premium Feature:"
msgstr ""

#: views/waf/options-group-basic-firewall.php:470
#: views/waf/options-group-basic-firewall.php:475
msgid "This feature blocks all traffic from IPs with a high volume of recent malicious activity using Wordfence's real-time blocklist."
msgstr ""

#: views/waf/options-group-brute-force.php:39
msgid "This option enables all \"Brute Force Protection\" options, including strong password enforcement and invalid login throttling. You can modify individual options below."
msgstr ""

#: views/waf/options-group-brute-force.php:140
msgid "Hit enter to add a username"
msgstr ""

#: views/waf/options-group-brute-force.php:163
msgid "Additional Options"
msgstr ""

#: views/waf/options-group-brute-force.php:239
msgid "If you use external services that may send POST requests without these headers, do not use this option, as they will be blocked."
msgstr ""

#: views/waf/options-group-brute-force.php:251
msgid "HTML tags will be stripped prior to output and line breaks will be converted into the appropriate tags."
msgstr ""

#: views/waf/options-group-rate-limiting.php:39
msgid "NOTE: This checkbox enables ALL blocking/throttling functions including IP, country and advanced blocking, and the \"Rate Limiting Rules\" below."
msgstr ""

#: views/waf/options-group-rate-limiting.php:195
msgid "These URL patterns will be excluded from the throttling rules used to limit crawlers."
msgstr ""

#: views/waf/options-group-whitelisted.php:26
msgid "Allowlisted URLs"
msgstr ""

#: views/waf/options-group-whitelisted.php:53
msgid "Front-end Website"
msgstr ""

#: views/waf/options-group-whitelisted.php:60
msgid "Admin Panel"
msgstr ""

#: views/waf/options-group-whitelisted.php:64
msgid "Monitor background requests from an administrator's web browser for false positives"
msgstr ""

#: views/waf/options-group-whitelisted.php:80
#: views/waf/options-group-whitelisted.php:93
msgid "Select/deselect all"
msgstr ""

#: views/waf/options-group-whitelisted.php:84
#: views/waf/options-group-whitelisted.php:97
msgid "Created"
msgstr ""

#: views/waf/options-group-whitelisted.php:107
msgid "Select row ${idx}"
msgstr ""

#: views/waf/options-group-whitelisted.php:108
msgid "Toggle row ${idx}"
msgstr ""

#: views/waf/options-group-whitelisted.php:157
msgid "No allowlisted URLs currently set."
msgstr ""

#. translators: Support URL.
#: views/waf/status-tooltip-learning-mode.php:6
msgid "The Web Application Firewall is currently in Learning Mode. <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">Learn More<span class=\"screen-reader-text\"> (opens in new tab)</span></a>"
msgstr ""

#: views/waf/waf-install-manual.php:10
msgid "The required file has been created. You'll need to insert the following code into your <code>php.ini</code> to finish installation:"
msgstr ""

#. translators: Support URL.
#: views/waf/waf-install-manual.php:12
msgid "You can find more details on alternative setup steps, including installation on SiteGround or for multiple sites sharing a single php.ini, <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"%s\">in our documentation<span class=\"screen-reader-text\"> (opens in new tab)</span></a>."
msgstr ""

#: views/waf/waf-install.php:9
msgid "Optimize Wordfence Firewall"
msgstr ""

#: views/waf/waf-install.php:13
msgid "If you cannot complete the setup process, "
msgstr ""

#: views/waf/waf-install.php:13
msgid "click here for help"
msgstr ""

#: views/waf/waf-install.php:22
msgid "To make your site as secure as possible, the Wordfence Web Application Firewall is designed to run via a PHP setting called <code>auto_prepend_file</code>, which ensures it runs before any potentially vulnerable code runs."
msgstr ""

#: views/waf/waf-install.php:24
msgid "To make your site as secure as possible, the Wordfence Web Application Firewall is designed to run via a PHP setting called <code>auto_prepend_file</code>, which ensures it runs before any potentially vulnerable code runs. This PHP setting is currently in use, and is including this file:"
msgstr ""

#: views/waf/waf-install.php:26
msgid "If you don't recognize this file, please <a href=\"https://wordpress.org/support/plugin/wordfence\" target=\"_blank\" rel=\"noopener noreferrer\">contact us on the WordPress support forums<span class=\"screen-reader-text\"> (opens in new tab)</span></a> before proceeding."
msgstr ""

#: views/waf/waf-install.php:27
msgid "You can proceed with the installation and we will include this from within our <code>wordfence-waf.php</code> file which should maintain compatibility with your site, or you can opt to override the existing PHP setting."
msgstr ""

#: views/waf/waf-install.php:28
msgid "Include"
msgstr ""

#: views/waf/waf-install.php:28
msgid "Override"
msgstr ""

#: views/waf/waf-install.php:30
msgid "NOTE:"
msgstr ""

#: views/waf/waf-install.php:30
msgid "If you have separate WordPress installations with Wordfence installed within a subdirectory of this site, it is recommended that you perform the Firewall installation procedure on those sites before this one."
msgstr ""

#: views/waf/waf-install.php:34
#: views/waf/waf-uninstall.php:40
msgid "Apache + mod_php"
msgstr ""

#: views/waf/waf-install.php:35
#: views/waf/waf-uninstall.php:41
msgid "Apache + suPHP"
msgstr ""

#: views/waf/waf-install.php:36
#: views/waf/waf-uninstall.php:42
msgid "Apache + CGI/FastCGI"
msgstr ""

#: views/waf/waf-install.php:37
#: views/waf/waf-uninstall.php:43
msgid "LiteSpeed/lsapi"
msgstr ""

#: views/waf/waf-install.php:38
#: views/waf/waf-uninstall.php:44
msgid "NGINX"
msgstr ""

#: views/waf/waf-install.php:39
#: views/waf/waf-uninstall.php:45
msgid "Windows (IIS)"
msgstr ""

#: views/waf/waf-install.php:40
msgid "Manual Configuration"
msgstr ""

#: views/waf/waf-install.php:56
#: views/waf/waf-uninstall.php:61
msgid "If you know your web server's configuration, please select it from the list below."
msgstr ""

#: views/waf/waf-install.php:58
msgid "We've preselected your server configuration based on our tests, but if you know your web server's configuration, please select it now. You can also choose \"Manual Configuration\" for alternate installation details."
msgstr ""

#. translators: 1. PHP ini setting. 2. Support URL.
#: views/waf/waf-install.php:63
msgid "Part of the Firewall configuration procedure for NGINX depends on creating a <code>%1$s</code> file in the root of your WordPress installation. This file can contain sensitive information and public access to it should be restricted. We have <a href=\"%2$s\" target=\"_blank\" rel=\"noreferrer noopener\">instructions on our documentation site<span class=\"screen-reader-text\"> (opens in new tab)</span></a> on what directives to put in your nginx.conf to fix this."
msgstr ""

#: views/waf/waf-install.php:65
msgid "If you are using a web server not listed in the dropdown or if file permissions prevent the installer from completing successfully, you will need to perform the change manually. Click Continue below to create the required file and view manual installation instructions."
msgstr ""

#: views/waf/waf-install.php:86
#: views/waf/waf-uninstall.php:87
msgid "Please download a backup of the following files before we make the necessary changes:"
msgstr ""

#. translators: File path.
#: views/waf/waf-install.php:96
#: views/waf/waf-uninstall.php:97
msgid "Download %s"
msgstr ""

#: views/waf/waf-install.php:105
msgid "Once you have downloaded the files, click Continue to complete the setup."
msgstr ""

#: views/waf/waf-uninstall.php:9
msgid "Uninstall Wordfence Firewall"
msgstr ""

#: views/waf/waf-uninstall.php:26
msgid "Extended Protection Mode of the Wordfence Web Application Firewall uses the PHP ini setting called <code>auto_prepend_file</code> in order to ensure it runs before any potentially vulnerable code runs. This PHP setting currently refers to the Wordfence file at:"
msgstr ""

#. translators: Support URL.
#: views/waf/waf-uninstall.php:34
msgid "Automatic uninstallation cannot be completed, but you may still be able to <a href=\"%s\" target=\"_blank\" rel=\"noopener noreferrer\">manually uninstall extended protection<span class=\"screen-reader-text\"> (opens in new tab)</span></a>."
msgstr ""

#: views/waf/waf-uninstall.php:36
msgid "Before this file can be deleted, the configuration for the <code>auto_prepend_file</code> setting needs to be removed."
msgstr ""

#: views/waf/waf-uninstall.php:63
msgid "We've preselected your server configuration based on our tests, but if you know your web server's configuration, please select it now."
msgstr ""

#: views/waf/waf-uninstall.php:107
msgid "Once you have downloaded the files, click Continue to complete uninstallation."
msgstr ""
languages/wordfence.mo000064400000000727150755146450011045 0ustar00��$,,�-Project-Id-Version: Wordfence Security 7.9.2
Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wordfence
Last-Translator: FULL NAME <EMAIL@ADDRESS>
Language-Team: LANGUAGE <LL@li.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
POT-Creation-Date: 2023-03-27T16:18:24+00:00
PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE
Language: 
X-Generator: WP-CLI 2.7.1
X-Domain: wordfence
views/scanner/issue-wfPluginAbandoned.php000064400000007526150755146450014606 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents an issue template.
 */
echo wfView::create('scanner/issue-base', array(
	'internalType' => 'wfPluginAbandoned',
	'displayType' => __('Plugin Abandoned', 'wordfence'),
	'iconSVG' => '<svg viewBox="0 0 20 20"><g><path d="M13.11 4.36L9.87 7.6 8 5.73l3.24-3.24c.35-.34 1.05-.2 1.56.32.52.51.66 1.21.31 1.55zm-8 1.77l.91-1.12 9.01 9.01-1.19.84c-.71.71-2.63 1.16-3.82 1.16H6.14L4.9 17.26c-.59.59-1.54.59-2.12 0-.59-.58-.59-1.53 0-2.12l1.24-1.24v-3.88c0-1.13.4-3.19 1.09-3.89zm7.26 3.97l3.24-3.24c.34-.35 1.04-.21 1.55.31.52.51.66 1.21.31 1.55l-3.24 3.25z"/></g></svg>',
	'summaryControls' => array(wfView::create('scanner/issue-control-ignore', array('ignoreC' => __('Ignore', 'wordfence'))), wfView::create('scanner/issue-control-show-details')),
	'detailPairs' => array(
		__('Plugin Name', 'wordfence') => '${data.name}',
		__('Current Plugin Version', 'wordfence') => '${data.version}',
		__('Last Updated', 'wordfence') => '${data.dateUpdated}',
		null,
		__('Details', 'wordfence') => '{{if data.vulnerable}}<strong>' . esc_html__('Plugin has unpatched security issues.', 'wordfence') . '</strong><br>{{/if}}{{html longMsg}}',
		null,
		__('Plugin URL', 'wordfence') => array('data.homepage', '<a href="${data.homepage}" target="_blank" rel="noopener noreferrer"><span class="wf-hidden-xs wf-split-word">${data.homepage}</span><span class="wf-visible-xs">' . __('View', 'wordfence') . '</span><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>'),
		__('Repository URL', 'wordfence') => array('data.wpURL', '<a href="${data.wpURL}" target="_blank" rel="noopener noreferrer"><span class="wf-hidden-xs wf-split-word">${data.wpURL}</span><span class="wf-visible-xs">' . __('View', 'wordfence') . '</span><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>'),
		__('Vulnerability Information', 'wordfence') => array('data.vulnerabilityLink', '<a href="${data.vulnerabilityLink}" target="_blank" rel="noopener noreferrer"><span class="wf-hidden-xs wf-split-word">${data.vulnerabilityLink}</span><span class="wf-visible-xs">' . __('View', 'wordfence') . '</span><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>'),
		__('Vulnerability Severity', 'wordfence') => array('data.cvssScore', '${data.cvssScore}/10.0 (<span class="${data.severityClass}" data-tooltip="test" title="This is the severity of the vulnerability itself, which can differ from the scan result severity. Some lower-severity vulnerabilities may still be important to address depending on your site\'s configuration and user base, so they are still important for you to review.">${data.severityLabel}</span>)'),
	),
	'detailControls' => array(
		'<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-issue-control-mark-fixed" role="button">' . __('Mark as Fixed', 'wordfence') . '</a>',
		'<a href="' . esc_url(wfUtils::wpAdminURL('plugins.php')) . '" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-issue-control-manage-plugins">' . __('Manage Plugins', 'wordfence') . '</a>',
	),
	'textOutput' => (isset($textOutput) ? $textOutput : null),
	'textOutputDetailPairs' => array(
		__('Plugin Name', 'wordfence') => '$data.name',
		__('Current Plugin Version', 'wordfence') => '$data.version',
		__('Last Updated', 'wordfence') => '$data.dateUpdated',
		null,
		__('Details', 'wordfence') => '$longMsg',
		__('Vulnerability Status', 'wordfence') => array('$data.vulnerable', __('Plugin has unpatched security issues.', 'wordfence')),
		null,
		__('Plugin URL', 'wordfence') => '$data.homepage',
		__('Repository URL', 'wordfence') => '$data.wpURL',
		__('Vulnerability Information', 'wordfence') => '$data.vulnerabilityLink',
		__('Vulnerability Severity', 'wordfence') => '${data.cvssScore}/10.0 (${data.severityLabel})',
	),
))->render();views/scanner/options-group-general.php000064400000017567150755146450014337 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents the General Options group.
 *
 * Expects $scanner and $stateKey.
 *
 * @var wfScanner $scanner
 * @var string $stateKey The key under which the collapse state is stored.
 * @var bool $collapseable If defined, specifies whether or not this grouping can be collapsed. Defaults to true.
 */

if (!isset($collapseable)) {
	$collapseable = true;
}
?>
<div class="wf-row">
	<div class="wf-col-xs-12">
		<div class="wf-block<?php if (!$collapseable) { echo ' wf-always-active'; } else { echo (wfPersistenceController::shared()->isActive($stateKey) ? ' wf-active' : ''); } ?>" data-persistence-key="<?php echo esc_attr($stateKey); ?>">
			<div class="wf-block-header">
				<div class="wf-block-header-content">
					<div class="wf-block-title">
						<strong><?php esc_html_e('General Options', 'wordfence'); ?></strong>
					</div>
					<?php if ($collapseable): ?><div class="wf-block-header-action"><div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive($stateKey) ? 'true' : 'false'); ?>" tabindex="0"></div></div><?php endif; ?>
				</div>
			</div>
			<div class="wf-block-content">
				<ul class="wf-block-list">
					<?php
					$options = array(
						array('key' => 'scansEnabled_checkGSB', 'label' => __('Check if this website is on a domain blocklist', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_OPTION_CHECK_SITE_BLACKLISTED), 'premium' => true, 'subtitleHTML' => wp_kses(__('<em>Reputation check</em>', 'wordfence'), array('em'=>array()))),
						array('key' => 'spamvertizeCheck', 'label' => __('Check if this website is being "Spamvertised"', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_OPTION_CHECK_SITE_SPAMVERTIZED), 'premium' => true, 'subtitleHTML' => wp_kses(__('<em>Reputation check</em>', 'wordfence'), array('em'=>array()))),
						array('key' => 'checkSpamIP', 'label' => __('Check if this website IP is generating spam', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_OPTION_CHECK_IP_SPAMMING), 'premium' => true, 'subtitleHTML' => wp_kses(__('<em>Reputation check</em>', 'wordfence'), array('em'=>array()))),
						array('key' => 'scansEnabled_checkHowGetIPs', 'label' => __('Scan for misconfigured How does Wordfence get IPs', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_OPTION_CHECK_MISCONFIGURED_HOW_GET_IPS)),
						array('key' => 'scansEnabled_checkReadableConfig', 'label' => __('Scan for publicly accessible configuration, backup, or log files', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_OPTION_PUBLIC_CONFIG)),
						array('key' => 'scansEnabled_suspectedFiles', 'label' => __('Scan for publicly accessible quarantined files', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_OPTION_PUBLIC_QUARANTINED)),
						array('key' => 'scansEnabled_core', 'label' => __('Scan core files against repository versions for changes', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_OPTION_CORE_CHANGES)),
						array('key' => 'scansEnabled_themes', 'label' => __('Scan theme files against repository versions for changes', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_OPTION_THEME_CHANGES)),
						array('key' => 'scansEnabled_plugins', 'label' => __('Scan plugin files against repository versions for changes', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_OPTION_PLUGIN_CHANGES)),
						array('key' => 'scansEnabled_coreUnknown', 'label' => __('Scan wp-admin and wp-includes for files not bundled with WordPress', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_OPTION_UNKNOWN_CORE)),
						array('key' => 'scansEnabled_malware', 'label' => __('Scan for signatures of known malicious files', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_OPTION_MALWARE_HASHES)),
						array('key' => 'scansEnabled_fileContents', 'label' => __('Scan file contents for backdoors, trojans and suspicious code', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_OPTION_MALWARE_SIGNATURES)),
						array('key' => 'scansEnabled_fileContentsGSB', 'label' => __('Scan file contents for malicious URLs', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_OPTION_MALWARE_URLS)),
						array('key' => 'scansEnabled_posts', 'label' => __('Scan posts for known dangerous URLs and suspicious content', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_OPTION_POST_URLS)),
						array('key' => 'scansEnabled_comments', 'label' => __('Scan comments for known dangerous URLs and suspicious content', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_OPTION_COMMENT_URLS)),
						array('key' => 'scansEnabled_suspiciousOptions', 'label' => __('Scan WordPress core, plugin, and theme options for known dangerous URLs and suspicious content', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_OPTION_MALWARE_OPTIONS)),
						array('key' => 'scansEnabled_oldVersions', 'label' => __('Scan for out of date, abandoned, and vulnerable plugins, themes, and WordPress versions', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_OPTION_UPDATES)),
						array('key' => 'scansEnabled_suspiciousAdminUsers', 'label' => __('Scan for suspicious admin users created outside of WordPress', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_OPTION_UNKNOWN_ADMINS)),
						array('key' => 'scansEnabled_passwds', 'label' => __('Check the strength of passwords', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_OPTION_PASSWORD_STRENGTH)),
						array('key' => 'scansEnabled_diskSpace', 'label' => __('Monitor disk space', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_OPTION_DISK_SPACE)),
						array('key' => 'scansEnabled_wafStatus', 'label' => __('Monitor Web Application Firewall status', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_OPTION_WAF_STATUS)),
						array('key' => 'other_scanOutside', 'label' => __('Scan files outside your WordPress installation', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_OPTION_OUTSIDE_WORDPRESS)),
						array('key' => 'scansEnabled_scanImages', 'label' => __('Scan images, binary, and other files as if they were executable', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_OPTION_IMAGES_EXECUTABLE)),
					);
					foreach ($options as $o):
						?>
						<li>
							<?php
							if (isset($o['view'])) {
								echo wfView::create($o['view'], array(
									'optionName' => $o['key'],
									'value' => wfConfig::get($o['key']) ? 1 : 0,
									'title' => $o['label'],
									'helpLink' => $o['helpLink'],
									'premium' => isset($o['premium']) && $o['premium'],
								))->render();
							}
							else {
								echo wfView::create('options/option-toggled', array(
									'optionName' => $o['key'],
									'enabledValue' => 1,
									'disabledValue' => 0,
									'value' => wfConfig::get($o['key']) ? 1 : 0,
									'title' => $o['label'],
									'subtitleHTML' => isset($o['subtitleHTML']) ? $o['subtitleHTML'] : null,
									'helpLink' => $o['helpLink'],
									'premium' => isset($o['premium']) && $o['premium'],
								))->render();
							}
							?>
						</li>
					<?php endforeach; ?>
				</ul>
			</div>
		</div>
	</div>
</div> <!-- end general options -->views/scanner/issue-timelimit.php000064400000003474150755146450013212 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents an issue template.
 */
echo wfView::create('scanner/issue-base', array(
	'internalType' => 'timelimit',
	'displayType' => __('Time Limit', 'wordfence'),
	'iconSVG' => '<svg viewBox="0 0 116.8 91.77"><path d="M112.17,35.72A57.35,57.35,0,0,0,81.08,4.63a57.88,57.88,0,0,0-45.36,0A57.38,57.38,0,0,0,4.63,35.72,58.26,58.26,0,0,0,9.19,89.88a4,4,0,0,0,3.52,1.89h91.38a4,4,0,0,0,3.52-1.89,58.25,58.25,0,0,0,4.56-54.16ZM52.5,10.79a8.34,8.34,0,0,1,14.24,5.9,8,8,0,0,1-2.44,5.9,8.34,8.34,0,0,1-11.8,0,8,8,0,0,1-2.44-5.9,8,8,0,0,1,2.44-5.9ZM22.59,64.3a8,8,0,0,1-5.9,2.45,8,8,0,0,1-5.9-2.45,8.34,8.34,0,0,1,0-11.8,8,8,0,0,1,5.9-2.45,8,8,0,0,1,5.9,2.45,8.35,8.35,0,0,1,0,11.8ZM35.1,35.1a8.34,8.34,0,0,1-11.8,0,8.34,8.34,0,0,1,0-11.8,8.35,8.35,0,0,1,11.8,0,8.34,8.34,0,0,1,0,11.8ZM72,35.65l-6.59,24.9a12.39,12.39,0,0,1,4.7,5.93,12.54,12.54,0,0,1-5.41,15.25A12.2,12.2,0,0,1,55.21,83a12,12,0,0,1-7.63-5.8,12.49,12.49,0,0,1,2.8-15.94,12.42,12.42,0,0,1,7-2.84l6.59-24.9a4.1,4.1,0,0,1,2-2.57A3.88,3.88,0,0,1,69,30.57a4.27,4.27,0,0,1,3,5.08Zm9.68-.56a8.34,8.34,0,0,1,0-11.8,8.34,8.34,0,0,1,14.24,5.9A8.34,8.34,0,0,1,81.7,35.1ZM106,64.3a8.34,8.34,0,1,1-11.8-11.8A8.34,8.34,0,1,1,106,64.3Zm0,0"/></svg>',
	'summaryControls' => array(wfView::create('scanner/issue-control-ignore', array('ignoreP' => __('Ignore', 'wordfence'))), wfView::create('scanner/issue-control-show-details')),
	'detailPairs' => array(
		__('Details', 'wordfence') => '{{html longMsg}}',
	),
	'detailControls' => array(
		'<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-issue-control-mark-fixed" role="button">' . __('Mark as Fixed', 'wordfence') . '</a>',
	),
	'textOutput' => (isset($textOutput) ? $textOutput : null),
	'textOutputDetailPairs' => array(
		__('Details', 'wordfence') => '$longMsg',
	),
))->render();views/scanner/scan-progress-element.php000064400000004022150755146450014272 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents an individual element in the scan progress indicator.
 *
 * Expects $id, $title, and $scanner. $premiumOnly and $status may also be defined.
 *
 * @var string $id The element ID.
 * @var string $title The element title.
 * @var wfScanner $scanner The scanner state.
 * @var string $status One of the wfScanner::STATUS_ constants.
 */

if (!isset($premiumOnly)) { $premiumOnly = false; }

$class = '';
switch ($status) {
	case wfScanner::STATUS_PENDING:
		//No class
		break;
	case wfScanner::STATUS_RUNNING:
	case wfScanner::STATUS_RUNNING_WARNING:
		$class = 'wf-scan-step-running';
		break;
	case wfScanner::STATUS_COMPLETE_SUCCESS:
		$class = 'wf-scan-step-complete-success';
		break;
	case wfScanner::STATUS_COMPLETE_WARNING:
		$class = 'wf-scan-step-complete-warning';
		break;
	case wfScanner::STATUS_PREMIUM:
		$class = 'wf-scan-step-premium';
		break;
	case wfScanner::STATUS_DISABLED:
		$class = 'wf-scan-step-disabled';
		break;
}

?>
<li id="<?php echo esc_attr($id); ?>" class="wf-scan-step<?php if ($class) { echo " {$class}"; } ?>">
	<div class="wf-scan-step-icon">
		<?php if ($status == wfScanner::STATUS_PREMIUM): ?>
			<div class="wf-scan-step-premium"></div>
		<?php endif; ?>
		<div class="wf-scan-step-pending"></div>
		<div class="wf-scan-step-running">
			<?php
			echo wfView::create('common/indeterminate-progress', array(
				'size' => 50,
			))->render();
			?>
		</div>
		<div class="wf-scan-step-complete-success"></div>
		<div class="wf-scan-step-complete-warning"></div>
		<div class="wf-scan-step-disabled"></div>
	</div>
	<div class="wf-scan-step-title"><?php echo esc_html($title); ?></div>
	<?php if ($status == wfScanner::STATUS_PREMIUM): ?>
		<div class="wf-scan-step-subtitle"><a href="https://www.wordfence.com/gnl1scanUpgrade/wordfence-signup/" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Upgrade', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></div>
	<?php endif; ?>
</li>views/scanner/issue-wfPluginRemoved.php000064400000006114150755146450014324 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents an issue template.
 */
echo wfView::create('scanner/issue-base', array(
	'internalType' => 'wfPluginRemoved',
	'displayType' => __('Plugin Removed', 'wordfence'),
	'iconSVG' => '<svg viewBox="0 0 20 20"><g><path d="M13.11 4.36L9.87 7.6 8 5.73l3.24-3.24c.35-.34 1.05-.2 1.56.32.52.51.66 1.21.31 1.55zm-8 1.77l.91-1.12 9.01 9.01-1.19.84c-.71.71-2.63 1.16-3.82 1.16H6.14L4.9 17.26c-.59.59-1.54.59-2.12 0-.59-.58-.59-1.53 0-2.12l1.24-1.24v-3.88c0-1.13.4-3.19 1.09-3.89zm7.26 3.97l3.24-3.24c.34-.35 1.04-.21 1.55.31.52.51.66 1.21.31 1.55l-3.24 3.25z"/></g></svg>',
	'summaryControls' => array(wfView::create('scanner/issue-control-ignore', array('ignoreC' => __('Ignore', 'wordfence'))), wfView::create('scanner/issue-control-show-details')),
	'detailPairs' => array(
		__('Plugin Name', 'wordfence') => '${data.Name}',
		__('Current Plugin Version', 'wordfence') => '${data.Version}',
		null,
		__('Details', 'wordfence') => '{{html longMsg}}',
		null,
		__('Plugin URL', 'wordfence') => array('data.PluginURI', '<a href="${data.PluginURI}" target="_blank" rel="noopener noreferrer"><span class="wf-hidden-xs wf-split-word">${data.PluginURI}</span><span class="wf-visible-xs">' . __('View', 'wordfence') . '</span><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>'),
		__('Vulnerability Information', 'wordfence') => array('data.vulnerabilityLink', '<a href="${data.vulnerabilityLink}" target="_blank" rel="noopener noreferrer"><span class="wf-hidden-xs wf-split-word">${data.vulnerabilityLink}</span><span class="wf-visible-xs">' . __('View', 'wordfence') . '</span><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>'),
		__('Vulnerability Severity', 'wordfence') => array('data.cvssScore', '${data.cvssScore}/10.0 (<span class="${data.severityClass}" data-tooltip="test" title="This is the severity of the vulnerability itself, which can differ from the scan result severity. Some lower-severity vulnerabilities may still be important to address depending on your site\'s configuration and user base, so they are still important for you to review.">${data.severityLabel}</span>)'),
	),
	'detailControls' => array(
		'<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-issue-control-mark-fixed" role="button">' . __('Mark as Fixed', 'wordfence') . '</a>',
		'<a href="' . esc_url(wfUtils::wpAdminURL('plugins.php')) . '" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-issue-control-manage-plugins">' . __('Manage Plugins', 'wordfence') . '</a>',
	),
	'textOutput' => (isset($textOutput) ? $textOutput : null),
	'textOutputDetailPairs' => array(
		__('Plugin Name', 'wordfence') => '$data.Name',
		__('Current Plugin Version', 'wordfence') => '$data.Version',
		null,
		__('Details', 'wordfence') => '$longMsg',
		null,
		__('Plugin URL', 'wordfence') => '$data.PluginURI',
		__('Vulnerability Information', 'wordfence') => '$data.vulnerabilityLink',
		__('Vulnerability Severity', 'wordfence') => '${data.cvssScore}/10.0 (${data.severityLabel})',
	),
))->render(); views/scanner/options-group-performance.php000064400000010175150755146450015207 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents the Performance Options group.
 *
 * Expects $scanner and $stateKey.
 *
 * @var wfScanner $scanner
 * @var string $stateKey The key under which the collapse state is stored.
 * @var bool $collapseable If defined, specifies whether or not this grouping can be collapsed. Defaults to true.
 */

if (!isset($collapseable)) {
	$collapseable = true;
}
?>
<div class="wf-row">
	<div class="wf-col-xs-12">
		<div class="wf-block<?php if (!$collapseable) { echo ' wf-always-active'; } else { echo (wfPersistenceController::shared()->isActive($stateKey) ? ' wf-active' : ''); } ?>" data-persistence-key="<?php echo esc_attr($stateKey); ?>">
			<div class="wf-block-header">
				<div class="wf-block-header-content">
					<div class="wf-block-title">
						<strong><?php esc_html_e('Performance Options', 'wordfence'); ?></strong>
					</div>
					<?php if ($collapseable): ?><div class="wf-block-header-action"><div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive($stateKey) ? 'true' : 'false'); ?>" tabindex="0"></div></div><?php endif; ?>
				</div>
			</div>
			<div class="wf-block-content">
				<ul class="wf-block-list">
					<?php
					$options = array(
						array('key' => 'lowResourceScansEnabled', 'label' => __('Use low resource scanning (reduces server load by lengthening the scan duration)', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_OPTION_LOW_RESOURCE)),
						array('key' => 'scan_maxIssues', 'label' => __('Limit the number of issues sent in the scan results email', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_OPTION_LIMIT_ISSUES), 'view' => 'options/option-text', 'parameters' => array('subtitle' => __('0 or empty means unlimited issues will be sent', 'wordfence'))),
						array('key' => 'scan_maxDuration', 'label' => __('Time limit that a scan can run in seconds', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_OPTION_OVERALL_TIME_LIMIT), 'view' => 'options/option-text', 'parameters' => array('subtitle' => sprintf(/* translators: Time until. */ __('0 or empty means the default of %s will be used', 'wordfence'), wfUtils::makeDuration(WORDFENCE_DEFAULT_MAX_SCAN_TIME)))),
						array('key' => 'maxMem', 'label' => __('How much memory should Wordfence request when scanning', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_OPTION_MEMORY_LIMIT), 'view' => 'options/option-text', 'parameters' => array('subtitle' => __('Memory size in megabytes', 'wordfence'))),
						array('key' => 'maxExecutionTime', 'label' => __('Maximum execution time for each scan stage ', 'wordfence'), 'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_OPTION_STAGE_TIME_LIMIT), 'view' => 'options/option-text', 'parameters' => array('subtitle' => sprintf(/* translators: PHP max execution time (number). */ __('0 for default. Must be %d or greater and 10-20 or higher is recommended for most servers', 'wordfence'), intval(WORDFENCE_SCAN_MIN_EXECUTION_TIME)))),
					);
					foreach ($options as $o):
						?>
						<li>
							<?php
							if (isset($o['view']) && $o['view'] == 'options/option-text') {
								if (!isset($o['parameters'])) { $o['parameters'] = array(); }
								echo wfView::create($o['view'], array_merge(array(
									'textOptionName' => $o['key'],
									'textValue' => wfConfig::get($o['key']),
									'title' => $o['label'],
									'helpLink' => $o['helpLink'],
								), $o['parameters']))->render();
							}
							else {
								echo wfView::create('options/option-toggled', array(
									'optionName' => $o['key'],
									'enabledValue' => 1,
									'disabledValue' => 0,
									'value' => wfConfig::get($o['key']) ? 1 : 0,
									'title' => $o['label'],
									'helpLink' => $o['helpLink'],
									'disabled' => isset($o['disabled']) ? $o['disabled'] : false,
								))->render();
							}
							?>
						</li>
					<?php endforeach; ?>
				</ul>
			</div>
		</div>
	</div>
</div> <!-- end performance options -->views/scanner/issue-control-edit-comment.php000064400000000674150755146450015257 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
?>
<a href="${data.editCommentLink}" class="wf-issue-control wf-issue-control-edit-comment"><svg class="wf-issue-control-icon" viewBox="0 0 20 20"><rect x="0" fill="none" width="20" height="20"/><g><path d="M5 2h9c1.1 0 2 .9 2 2v7c0 1.1-.9 2-2 2h-2l-5 5v-5H5c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2z"/></g></svg><span class="wf-issue-control-label"><?php esc_html_e('Edit', 'wordfence'); ?></span></a>views/scanner/issue-checkSpamIP.php000064400000002475150755146450013344 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents an issue template.
 */
echo wfView::create('scanner/issue-base', array(
	'internalType' => 'checkSpamIP',
	'displayType' => __('Spam', 'wordfence'),
	'iconSVG' => '<svg viewBox="0 0 20 20"><g><path d="M18 13h1c.55 0 1 .45 1 1.01v2.98c0 .56-.45 1.01-1 1.01h-4c-.55 0-1-.45-1-1.01v-2.98c0-.56.45-1.01 1-1.01h1v-2h-5v2h1c.55 0 1 .45 1 1.01v2.98c0 .56-.45 1.01-1 1.01H8c-.55 0-1-.45-1-1.01v-2.98c0-.56.45-1.01 1-1.01h1v-2H4v2h1c.55 0 1 .45 1 1.01v2.98C6 17.55 5.55 18 5 18H1c-.55 0-1-.45-1-1.01v-2.98C0 13.45.45 13 1 13h1v-2c0-1.1.9-2 2-2h5V7H8c-.55 0-1-.45-1-1.01V3.01C7 2.45 7.45 2 8 2h4c.55 0 1 .45 1 1.01v2.98C13 6.55 12.55 7 12 7h-1v2h5c1.1 0 2 .9 2 2v2z"/></g></svg>',
	'summaryControls' => array(wfView::create('scanner/issue-control-ignore', array('ignoreP' => __('Ignore', 'wordfence'))), wfView::create('scanner/issue-control-show-details')),
	'detailPairs' => array(
		__('Details', 'wordfence') => '{{html longMsg}}',
	),
	'detailControls' => array(
		'<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-issue-control-mark-fixed" role="button">' . __('Mark as Fixed', 'wordfence') . '</a>',
	),
	'textOutput' => (isset($textOutput) ? $textOutput : null),
	'textOutputDetailPairs' => array(
		__('Details', 'wordfence') => '$longMsg',
	),
))->render();views/scanner/issue-wfUpgradeError.php000064400000002636150755146450014152 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents an issue template.
 */
echo wfView::create('scanner/issue-base', array(
	'internalType' => 'wfUpgradeError',
	'displayType' => __('Update Check Error', 'wordfence'),
	'iconSVG' => '<svg viewBox="0 0 20 20"><g><path d="M13.11 4.36L9.87 7.6 8 5.73l3.24-3.24c.35-.34 1.05-.2 1.56.32.52.51.66 1.21.31 1.55zm-8 1.77l.91-1.12 9.01 9.01-1.19.84c-.71.71-2.63 1.16-3.82 1.16H6.14L4.9 17.26c-.59.59-1.54.59-2.12 0-.59-.58-.59-1.53 0-2.12l1.24-1.24v-3.88c0-1.13.4-3.19 1.09-3.89zm7.26 3.97l3.24-3.24c.34-.35 1.04-.21 1.55.31.52.51.66 1.21.31 1.55l-3.24 3.25z"/></g></svg>',
	'summaryControls' => array(wfView::create('scanner/issue-control-ignore', array('ignoreC' => __('Ignore Update', 'wordfence'))), wfView::create('scanner/issue-control-show-details')),
	'detailPairs' => array(
		__('Details', 'wordfence') => '{{html longMsg}}',
	),
	'detailControls' => array(
		'<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-issue-control-mark-fixed" role="button">' . __('Mark as Fixed', 'wordfence') . '</a>',
		'<a href="' . esc_url(wfUtils::wpAdminURL('update-core.php')) . '" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-issue-control-view-updates">' . __('View Updates', 'wordfence') . '</a>',
	),
	'textOutput' => (isset($textOutput) ? $textOutput : null),
	'textOutputDetailPairs' => array(
		__('Details', 'wordfence') => '$longMsg',
	),
))->render(); views/scanner/issue-configReadable.php000064400000004042150755146450014072 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents an issue template.
 */
echo wfView::create('scanner/issue-base', array(
	'internalType' => 'configReadable',
	'displayType' => __('Publicly Accessible Config/Backup/Log', 'wordfence'),
	'iconSVG' => '<svg viewBox="0 0 20 20"><g><path d="M18 16V4c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h13c.55 0 1-.45 1-1zM8 11h1c.55 0 1 .45 1 1s-.45 1-1 1H8v1.5c0 .28-.22.5-.5.5s-.5-.22-.5-.5V13H6c-.55 0-1-.45-1-1s.45-1 1-1h1V5.5c0-.28.22-.5.5-.5s.5.22.5.5V11zm5-2h-1c-.55 0-1-.45-1-1s.45-1 1-1h1V5.5c0-.28.22-.5.5-.5s.5.22.5.5V7h1c.55 0 1 .45 1 1s-.45 1-1 1h-1v5.5c0 .28-.22.5-.5.5s-.5-.22-.5-.5V9z"/></g></svg>',
	'summaryControls' => array(wfView::create('scanner/issue-control-hide-file'), wfView::create('scanner/issue-control-ignore', array('ignoreC' => __('Ignore', 'wordfence'))), wfView::create('scanner/issue-control-show-details')),
	'detailPairs' => array(
		__('URL', 'wordfence') => '<a href="${data.url}" target="_blank" rel="noopener noreferrer">${data.url}<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>',
		null,
		__('Details', 'wordfence') => '{{html longMsg}}'
	),
	'detailControls' => array(
		'{{if data.fileExists}}<a target="_blank" class="wf-btn wf-btn-default wf-btn-callout-subtle" rel="noopener noreferrer" href="${WFAD.makeViewFileLink(data)}">' . __('View File', 'wordfence') . '<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>{{/if}}',
		'{{if data.canDelete}}<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-issue-control-delete-file" role="button">' . __('Delete File', 'wordfence') . '</a>{{/if}}',
		'<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-issue-control-mark-fixed" role="button">' . __('Mark as Fixed', 'wordfence') . '</a>',
	),
	'textOutput' => (isset($textOutput) ? $textOutput : null),
	'textOutputDetailPairs' => array(
		__('URL', 'wordfence') => '$data.url',
		null,
		__('Details', 'wordfence') => '$longMsg',
	),
))->render();views/scanner/options-group-scan-schedule.php000064400000002655150755146450015430 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents the Scan Scheduling group.
 *
 * Expects $scanner and $stateKey.
 *
 * @var wfScanner $scanner
 * @var string $stateKey The key under which the collapse state is stored.
 * @var bool $collapseable If defined, specifies whether or not this grouping can be collapsed. Defaults to true.
 */

if (!isset($collapseable)) {
	$collapseable = true;
}
?>
<div class="wf-row">
	<div class="wf-col-xs-12">
		<div class="wf-block<?php if (!$collapseable) { echo ' wf-always-active'; } else { echo (wfPersistenceController::shared()->isActive($stateKey) ? ' wf-active' : ''); } ?>" data-persistence-key="<?php echo esc_attr($stateKey); ?>">
			<div class="wf-block-header">
				<div class="wf-block-header-content">
					<div class="wf-block-title">
						<strong><?php esc_html_e('Scan Scheduling', 'wordfence'); ?></strong>
					</div>
					<?php if ($collapseable): ?><div class="wf-block-header-action"><div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive($stateKey) ? 'true' : 'false'); ?>" tabindex="0"></div></div><?php endif; ?>
				</div>
			</div>
			<div class="wf-block-content">
				<ul class="wf-block-list">
					<?php
					echo wfView::create('scanner/scan-scheduling', array(
						'scanner' => $scanner,
					))->render();
					?>
				</ul>
			</div>
		</div>
	</div>
</div> <!-- end scan schedule -->views/scanner/options-group-advanced.php000064400000007201150755146450014447 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents the Advanced Scan Options group.
 *
 * Expects $scanner and $stateKey.
 *
 * @var wfScanner $scanner
 * @var string $stateKey The key under which the collapse state is stored.
 * @var bool $collapseable If defined, specifies whether or not this grouping can be collapsed. Defaults to true.
 */

if (!isset($collapseable)) {
	$collapseable = true;
}
?>
<div class="wf-row">
	<div class="wf-col-xs-12">
		<div class="wf-block<?php if (!$collapseable) { echo ' wf-always-active'; } else { echo (wfPersistenceController::shared()->isActive($stateKey) ? ' wf-active' : ''); } ?>" data-persistence-key="<?php echo esc_attr($stateKey); ?>">
			<div class="wf-block-header">
				<div class="wf-block-header-content">
					<div class="wf-block-title">
						<strong><?php esc_html_e('Advanced Scan Options', 'wordfence'); ?></strong>
					</div>
					<?php if ($collapseable): ?><div class="wf-block-header-action"><div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive($stateKey) ? 'true' : 'false'); ?>" tabindex="0"></div></div><?php endif; ?>
				</div>
			</div>
			<div class="wf-block-content">
				<ul class="wf-block-list">
					<li>
						<?php
						echo wfView::create('options/option-textarea', array(
							'textOptionName' => 'scan_exclude',
							'textValue' => wfUtils::cleanupOneEntryPerLine(wfConfig::get('scan_exclude')),
							'title' => __('Exclude files from scan that match these wildcard patterns (one per line)', 'wordfence'),
							'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_OPTION_EXCLUDE_PATTERNS),
							'noSpacer' => true,
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-textarea', array(
							'textOptionName' => 'scan_include_extra',
							'textValue' => wfConfig::get('scan_include_extra'),
							'title' => __('Additional scan signatures (one per line)', 'wordfence'),
							'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_OPTION_CUSTOM_MALWARE_SIGNATURES),
							'noSpacer' => true,
						))->render();
						?>
					</li>
					<li>
						<?php
							echo wfView::create('options/option-toggled', array(
								'optionName' => 'scan_force_ipv4_start',
								'enabledValue' => 1,
								'disabledValue' => 0,
								'value' => wfConfig::get('scan_force_ipv4_start') ? 1 : 0,
								'title' => __('Use only IPv4 to start scans', 'wordfence'),
								'subtitle' =>  __('This option requires cURL. (This may have no effect on some old PHP or cURL versions.)', 'wordfence'),
								'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_OPTION_USE_ONLY_IPV4),
								'premium' => false,
								'disabled' => !wfUtils::isCurlSupported()
							))->render();
						?>
					</li>
					<li>
						<?php
						$options = array();
						foreach (range(0, wfScanMonitor::MAX_RESUME_ATTEMPTS) as $number) {
							$options[] = array('value' => $number, 'label' => $number > 0 ? $number : '0 (Disabled)');
						}
						echo wfView::create('options/option-select', array(
							'selectOptionName' => 'scan_max_resume_attempts',
							'selectOptions' => $options,
							'selectValue' => wfConfig::get('scan_max_resume_attempts', wfScanMonitor::DEFAULT_RESUME_ATTEMPTS),
							'title' => __('Maximum number of attempts to resume each scan stage', 'wordfence'),
							'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_OPTION_MAX_RESUME_ATTEMPTS),
						))->render();
						?>
					</li>
				</ul>
			</div>
		</div>
	</div>
</div> <!-- end custom scan options -->views/scanner/scan-failed.php000064400000003412150755146450012225 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }

/**
 * Presents a scan failed error message.
 *
 * Expects $messageHTML and $buttonTitle.
 *
 * @var string $messageTitle The title for the message (optional, defaults to 'Scan Failed')
 * @var string $messageHTML The message to show.
 * @var string $buttonTitle The title of the kill/reset button.
 */

if (!isset($messageTitle))
	$messageTitle = __('Scan Failed', 'wordfence');

?>
<ul class="wf-flex-horizontal wf-flex-full-width wf-no-top">
	<li>
		<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 116.93 108.46"><path d="M115.82,96.14,65.76,4.37a8.33,8.33,0,0,0-3.06-3.2,8.24,8.24,0,0,0-8.47,0,8.34,8.34,0,0,0-3.07,3.2L1.11,96.14a7.78,7.78,0,0,0,.13,8.21,8.16,8.16,0,0,0,3,3,8.13,8.13,0,0,0,4.14,1.11H108.52a8.36,8.36,0,0,0,7.17-4.11,7.78,7.78,0,0,0,.13-8.21Zm-49-6.52a2.09,2.09,0,0,1-.62,1.53,2,2,0,0,1-1.46.62H52.21a2,2,0,0,1-1.46-.62,2.08,2.08,0,0,1-.62-1.53V77.24a2.08,2.08,0,0,1,.62-1.53,2,2,0,0,1,1.46-.62H64.72a2,2,0,0,1,1.47.62,2.09,2.09,0,0,1,.62,1.53V89.62Zm-.13-24.37A1.45,1.45,0,0,1,66,66.32a2.66,2.66,0,0,1-1.53.42H52.4a2.81,2.81,0,0,1-1.56-.42,1.25,1.25,0,0,1-.65-1.08L49.08,35.46a1.56,1.56,0,0,1,.65-1.37,2.52,2.52,0,0,1,1.56-.72H65.64a2.51,2.51,0,0,1,1.57.72,1.43,1.43,0,0,1,.65,1.24Zm0,0"/></svg>
	</li>
	<li>
		<h4><?php echo esc_html($messageTitle); ?></h4>
		<p><?php echo $messageHTML; ?></p>
		<?php if (isset($rawErrorHTML) && !empty($rawErrorHTML)): ?>
		<p class="wf-add-top"><?php esc_html_e('The error returned was:', 'wordfence'); ?></p>
		<pre><?php echo $rawErrorHTML; ?></pre>
		<?php endif; ?>
	</li>
	<li class="wf-right wf-padding-add-left">
		<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle" onclick="WFAD.killScan(); return false;" role="button"><?php echo $buttonTitle; ?></a>
	</li>
</ul>views/scanner/no-issues.php000064400000002156150755146450012010 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * No issues found template view.
 *
 * Expects $internalType, $displayType, $iconSVG, and $controls.
 *
 * @var string $internalType The internal issue type used to select the correct template.
 * @var string $displayType A human-readable string for displaying the issue type.
 * @var string $iconSVG The SVG HTML for the issue's icon.
 * @var array $summaryControls An array of summary controls for the issue type.
 * @var array $detailPairs An array of label/value pairs for the issue's detail data. If the entry should only be conditionally shown, the value may be an array of the format array(conditional, displayValue).
 * @var array $detailControls An array of detail controls for the issue type.
 */
?>
<script type="text/x-jquery-template" id="issueTmpl_noneFound">
	<ul class="wf-issue wf-issue-severity-good" data-issue-id="${id}">
		<li class="wf-issue-summary"> 
			<ul>
				<li class="wf-issue-short"><div class="wf-issue-message">${shortMsg}</div></li>
				<li class="wf-issue-stats"></li>
				<li class="wf-issue-controls"></li>
			</ul>
		</li>
	</ul>
</script>
views/scanner/issue-wfUpgrade.php000064400000007027150755146450013137 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents an issue template.
 */
echo wfView::create('scanner/issue-base', array(
	'internalType' => 'wfUpgrade',
	'displayType' => __('Core Upgrade', 'wordfence'),
	'iconSVG' => '<svg viewBox="0 0 20 20"><g><path d="M20 10c0-5.51-4.49-10-10-10C4.48 0 0 4.49 0 10c0 5.52 4.48 10 10 10 5.51 0 10-4.48 10-10zM7.78 15.37L4.37 6.22c.55-.02 1.17-.08 1.17-.08.5-.06.44-1.13-.06-1.11 0 0-1.45.11-2.37.11-.18 0-.37 0-.58-.01C4.12 2.69 6.87 1.11 10 1.11c2.33 0 4.45.87 6.05 2.34-.68-.11-1.65.39-1.65 1.58 0 .74.45 1.36.9 2.1.35.61.55 1.36.55 2.46 0 1.49-1.4 5-1.4 5l-3.03-8.37c.54-.02.82-.17.82-.17.5-.05.44-1.25-.06-1.22 0 0-1.44.12-2.38.12-.87 0-2.33-.12-2.33-.12-.5-.03-.56 1.2-.06 1.22l.92.08 1.26 3.41zM17.41 10c.24-.64.74-1.87.43-4.25.7 1.29 1.05 2.71 1.05 4.25 0 3.29-1.73 6.24-4.4 7.78.97-2.59 1.94-5.2 2.92-7.78zM6.1 18.09C3.12 16.65 1.11 13.53 1.11 10c0-1.3.23-2.48.72-3.59C3.25 10.3 4.67 14.2 6.1 18.09zm4.03-6.63l2.58 6.98c-.86.29-1.76.45-2.71.45-.79 0-1.57-.11-2.29-.33.81-2.38 1.62-4.74 2.42-7.1z"/></g></svg>',
	'summaryControls' => array(wfView::create('scanner/issue-control-ignore', array('ignoreC' => __('Ignore', 'wordfence'))), wfView::create('scanner/issue-control-show-details')),
	'detailPairs' => array(
		__('Current WordPress Version', 'wordfence') => '${data.currentVersion}',
		__('New WordPress Version', 'wordfence') => '${data.newVersion}',
		null,
		__('Details', 'wordfence') => '{{if data.vulnerable}}<strong>' . esc_html__('Update includes security-related fixes.', 'wordfence') . '</strong><br>{{/if}}{{html longMsg}}<br><a href="' . get_admin_url() . 'update-core.php' . '">' . esc_html__('Click here to update now', 'wordfence') . '</a>.',
		null,
		__('Vulnerability Information', 'wordfence') => array('data.vulnerabilityLink', '<a href="${data.vulnerabilityLink}" target="_blank" rel="noopener noreferrer"><span class="wf-hidden-xs wf-split-word">${data.vulnerabilityLink}</span><span class="wf-visible-xs">' . __('View', 'wordfence') . '</span><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>'),
		__('Vulnerability Severity', 'wordfence') => array('data.cvssScore', '${data.cvssScore}/10.0 (<span class="${data.severityClass}" data-tooltip="test" title="This is the severity of the vulnerability itself, which can differ from the scan result severity. Some lower-severity vulnerabilities may still be important to address depending on your site\'s configuration and user base, so they are still important for you to review.">${data.severityLabel}</span>)'),
	),
	'detailControls' => array(
		'<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-issue-control-mark-fixed" role="button">' . __('Mark as Fixed', 'wordfence') . '</a>',
		'<a href="' . esc_url(wfUtils::wpAdminURL('update-core.php')) . '" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-issue-control-view-updates">' . __('View Updates', 'wordfence') . '</a>',
	),
	'textOutput' => (isset($textOutput) ? $textOutput : null),
	'textOutputDetailPairs' => array(
		__('Current WordPress Version', 'wordfence') => '$data.currentVersion',
		__('New WordPress Version', 'wordfence') => '$data.newVersion',
		null,
		__('Details', 'wordfence') => '$longMsg',
		__('Vulnerability Status', 'wordfence') => array('$data.vulnerable', __('Update includes security-related fixes.', 'wordfence')),
		null,
		__('Vulnerability Information', 'wordfence') => '$data.vulnerabilityLink',
		__('Vulnerability Severity', 'wordfence') => '${data.cvssScore}/10.0 (${data.severityLabel})',
	),
))->render();views/scanner/issue-control-hide-file.php000064400000005334150755146450014516 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
?>
<a href="#" class="wf-issue-control wf-issue-control-hide-file" role="button"><svg class="wf-issue-control-icon" viewBox="0 0 46 55" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"><path d="M43.557,13.609l-11.214,-11.175c-1.303,-1.246 -2.962,-2.058 -4.747,-2.324l0,18.223l18.294,0c-0.269,-1.777 -1.084,-3.427 -2.333,-4.724l0,0Z" style="fill-rule:nonzero;"/><path d="M45.994,22.921l0,28.645c0.001,0.006 0.001,0.011 0.001,0.017c0,1.877 -1.551,3.423 -3.435,3.423c-0.004,0 -0.008,0 -0.012,-0.001l-39.102,0c-0.919,0.018 -1.804,-0.347 -2.443,-1.005c-0.658,-0.637 -1.022,-1.519 -1.003,-2.434l0,-48.127c-0.019,-0.914 0.345,-1.797 1.003,-2.434c0.64,-0.659 1.528,-1.024 2.449,-1.005l19.562,0l0,19.482c0,0.005 0,0.011 0,0.016c0,1.878 1.55,3.423 3.435,3.423l0.016,0l19.529,0Zm-15.947,6.153c0.015,-0.05 0.02,-0.103 0.016,-0.155c0.002,-0.191 -0.099,-0.369 -0.264,-0.464l-0.335,-0.198c-0.195,-0.107 -0.378,-0.213 -0.551,-0.316c-0.171,-0.103 -0.361,-0.208 -0.567,-0.317c-0.205,-0.108 -0.382,-0.197 -0.527,-0.263c-0.097,-0.055 -0.203,-0.092 -0.314,-0.108c-0.197,-0.01 -0.383,0.092 -0.482,0.263l-0.928,1.68c-1.02,-0.193 -2.055,-0.291 -3.092,-0.293c-3.002,-0.022 -5.952,0.786 -8.524,2.336c-2.638,1.594 -4.872,3.776 -6.53,6.374c-0.458,0.723 -0.458,1.65 0,2.373c0.998,1.562 2.204,2.981 3.583,4.218c1.35,1.213 2.877,2.213 4.529,2.964c-0.504,0.859 -0.756,1.357 -0.756,1.494c-0.01,0.198 0.092,0.384 0.263,0.483c1.406,0.801 2.174,1.202 2.304,1.202c0.197,0.009 0.382,-0.093 0.48,-0.264l0.854,-1.539c1.215,-2.166 3.025,-5.417 5.431,-9.755c2.406,-4.337 4.21,-7.576 5.41,-9.715Zm8.009,8.539c-0.7,-1.149 -1.533,-2.21 -2.483,-3.163c-0.954,-0.982 -2.004,-1.865 -3.135,-2.636l-1.083,1.924c1.938,1.345 3.586,3.067 4.845,5.062c-1.337,2.102 -3.102,3.898 -5.18,5.273c-2.013,1.344 -4.335,2.154 -6.747,2.354l-1.273,2.267c2.495,0.011 4.961,-0.547 7.208,-1.632c2.284,-1.103 4.316,-2.665 5.971,-4.587c0.69,-0.779 1.316,-1.612 1.872,-2.491c0.458,-0.723 0.458,-1.65 0,-2.373l0.005,0.002Zm-20.911,7.633c-2.988,-1.341 -5.434,-3.489 -7.337,-6.444c1.598,-2.571 3.859,-4.666 6.546,-6.063c-1.319,2.252 -1.397,5.03 -0.206,7.353c0.548,1.084 1.35,2.021 2.336,2.731l-1.339,2.423Zm12.198,-4.284c0.895,-1.277 1.37,-2.802 1.358,-4.361c-0.004,-0.483 -0.05,-0.964 -0.137,-1.439l-4.812,8.621c1.459,-0.548 2.713,-1.534 3.591,-2.821Zm-5.755,-8.173c-0.153,0.158 -0.365,0.245 -0.585,0.24c-1.959,0.003 -3.571,1.613 -3.575,3.572c0,0.453 -0.373,0.825 -0.825,0.825c-0.453,0 -0.826,-0.372 -0.826,-0.825c-0.019,-1.389 0.537,-2.726 1.537,-3.691c0.965,-1 2.302,-1.557 3.691,-1.537c0.454,0 0.828,0.374 0.828,0.828c0,0.221 -0.088,0.433 -0.245,0.588l0,0Z"></svg><span class="wf-issue-control-label"><?php esc_html_e('Hide File', 'wordfence'); ?></span></a>views/scanner/issue-geoipSupport.php000064400000003502150755146450013705 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents an issue template.
 */
echo wfView::create('scanner/issue-base', array(
	'internalType' => 'geoipSupport',
	'displayType' => __('Server Update', 'wordfence'),
	'iconSVG' => '<svg viewBox="0 0 116.8 91.77"><path d="M112.17,35.72A57.35,57.35,0,0,0,81.08,4.63a57.88,57.88,0,0,0-45.36,0A57.38,57.38,0,0,0,4.63,35.72,58.26,58.26,0,0,0,9.19,89.88a4,4,0,0,0,3.52,1.89h91.38a4,4,0,0,0,3.52-1.89,58.25,58.25,0,0,0,4.56-54.16ZM52.5,10.79a8.34,8.34,0,0,1,14.24,5.9,8,8,0,0,1-2.44,5.9,8.34,8.34,0,0,1-11.8,0,8,8,0,0,1-2.44-5.9,8,8,0,0,1,2.44-5.9ZM22.59,64.3a8,8,0,0,1-5.9,2.45,8,8,0,0,1-5.9-2.45,8.34,8.34,0,0,1,0-11.8,8,8,0,0,1,5.9-2.45,8,8,0,0,1,5.9,2.45,8.35,8.35,0,0,1,0,11.8ZM35.1,35.1a8.34,8.34,0,0,1-11.8,0,8.34,8.34,0,0,1,0-11.8,8.35,8.35,0,0,1,11.8,0,8.34,8.34,0,0,1,0,11.8ZM72,35.65l-6.59,24.9a12.39,12.39,0,0,1,4.7,5.93,12.54,12.54,0,0,1-5.41,15.25A12.2,12.2,0,0,1,55.21,83a12,12,0,0,1-7.63-5.8,12.49,12.49,0,0,1,2.8-15.94,12.42,12.42,0,0,1,7-2.84l6.59-24.9a4.1,4.1,0,0,1,2-2.57A3.88,3.88,0,0,1,69,30.57a4.27,4.27,0,0,1,3,5.08Zm9.68-.56a8.34,8.34,0,0,1,0-11.8,8.34,8.34,0,0,1,14.24,5.9A8.34,8.34,0,0,1,81.7,35.1ZM106,64.3a8.34,8.34,0,1,1-11.8-11.8A8.34,8.34,0,1,1,106,64.3Zm0,0"/></svg>',
	'summaryControls' => array(wfView::create('scanner/issue-control-ignore', array('ignoreP' => __('Ignore', 'wordfence'))), wfView::create('scanner/issue-control-show-details')),
	'detailPairs' => array(
		__('Details', 'wordfence') => '{{html longMsg}}',
	),
	'detailControls' => array(
		'<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-issue-control-mark-fixed" role="button">' . __('Mark as Fixed', 'wordfence') . '</a>',
	),
	'textOutput' => (isset($textOutput) ? $textOutput : null),
	'textOutputDetailPairs' => array(
		__('Details', 'wordfence') => '$longMsg',
	),
))->render();views/scanner/issue-diskSpace.php000064400000003704150755146450013117 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents an issue template.
 */
echo wfView::create('scanner/issue-base', array(
	'internalType' => 'diskSpace',
	'displayType' => __('Disk Space', 'wordfence'),
	'iconSVG' => '<svg viewBox="0 0 116.8 91.77"><path d="M112.17,35.72A57.35,57.35,0,0,0,81.08,4.63a57.88,57.88,0,0,0-45.36,0A57.38,57.38,0,0,0,4.63,35.72,58.26,58.26,0,0,0,9.19,89.88a4,4,0,0,0,3.52,1.89h91.38a4,4,0,0,0,3.52-1.89,58.25,58.25,0,0,0,4.56-54.16ZM52.5,10.79a8.34,8.34,0,0,1,14.24,5.9,8,8,0,0,1-2.44,5.9,8.34,8.34,0,0,1-11.8,0,8,8,0,0,1-2.44-5.9,8,8,0,0,1,2.44-5.9ZM22.59,64.3a8,8,0,0,1-5.9,2.45,8,8,0,0,1-5.9-2.45,8.34,8.34,0,0,1,0-11.8,8,8,0,0,1,5.9-2.45,8,8,0,0,1,5.9,2.45,8.35,8.35,0,0,1,0,11.8ZM35.1,35.1a8.34,8.34,0,0,1-11.8,0,8.34,8.34,0,0,1,0-11.8,8.35,8.35,0,0,1,11.8,0,8.34,8.34,0,0,1,0,11.8ZM72,35.65l-6.59,24.9a12.39,12.39,0,0,1,4.7,5.93,12.54,12.54,0,0,1-5.41,15.25A12.2,12.2,0,0,1,55.21,83a12,12,0,0,1-7.63-5.8,12.49,12.49,0,0,1,2.8-15.94,12.42,12.42,0,0,1,7-2.84l6.59-24.9a4.1,4.1,0,0,1,2-2.57A3.88,3.88,0,0,1,69,30.57a4.27,4.27,0,0,1,3,5.08Zm9.68-.56a8.34,8.34,0,0,1,0-11.8,8.34,8.34,0,0,1,14.24,5.9A8.34,8.34,0,0,1,81.7,35.1ZM106,64.3a8.34,8.34,0,1,1-11.8-11.8A8.34,8.34,0,1,1,106,64.3Zm0,0"/></svg>',
	'summaryControls' => array(wfView::create('scanner/issue-control-ignore', array('ignoreP' => __('Ignore', 'wordfence'))), wfView::create('scanner/issue-control-show-details')),
	'detailPairs' => array(
		__('Space Remaining', 'wordfence') => '${data.spaceLeft}',
		null,
		__('Details', 'wordfence') => '{{html longMsg}}',
	),
	'detailControls' => array(
		'<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-issue-control-mark-fixed" role="button">' . __('Mark as Fixed', 'wordfence') . '</a>',
	),
	'textOutput' => (isset($textOutput) ? $textOutput : null),
	'textOutputDetailPairs' => array(
		__('Space Remaining', 'wordfence') => '$data.spaceLeft',
		null,
		__('Details', 'wordfence') => '$longMsg',
	),
))->render();views/scanner/scan-scheduling.php000064400000043264150755146450013137 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Displays the scan scheduling controls.
 */
?>
<li>
	<?php
	echo wfView::create('options/option-switch', array(
		'optionName' => 'scheduledScansEnabled',
		'value' => wfConfig::get('scheduledScansEnabled') ? '1': '0',
		'title' => __('Schedule Wordfence Scans', 'wordfence'),
		'states' => array(
			array('value' => '0', 'label' => __('Disabled', 'wordfence')),
			array('value' => '1', 'label' => __('Enabled', 'wordfence')),
		),
		'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_SCAN_SCHEDULING),
	))->render();
	?>
</li>
<li>
<ul class="wf-scan-scheduling" data-option="schedMode" data-original-value="<?php echo esc_attr($scanner->schedulingMode()); ?>">
	<li>
		<ul class="wf-option wf-option-scan-schedule-mode<?php if (!$scanner->isEnabled()) { echo ' wf-disabled'; } ?>" data-option-value="<?php echo esc_attr(wfScanner::SCAN_SCHEDULING_MODE_AUTOMATIC); ?>">
			<li class="wf-option-radio-container" role="radiogroup">
				<input class="wf-option-radio" type="radio" name="wf-scheduling-mode" id="wf-scheduling-mode-automatic" value="<?php echo esc_attr(wfScanner::SCAN_SCHEDULING_MODE_AUTOMATIC); ?>" <?php echo ($scanner->schedulingMode() == wfScanner::SCAN_SCHEDULING_MODE_AUTOMATIC ? ' checked' : ''); ?><?php if (!$scanner->isEnabled()) { echo ' disabled'; } ?> aria-labelledby="wf-scheduling-mode-automatic-label">
				<label for="wf-scheduling-mode-automatic"></label>
			</li>
			<li id="wf-scheduling-mode-automatic-label" class="wf-option-title"><?php esc_html_e('Let Wordfence choose when to scan my site (recommended)', 'wordfence'); ?></li>
		</ul>
	</li>
	<li>
		<ul class="wf-option wf-option-scan-schedule-mode<?php if (!wfConfig::p()) { echo ' wf-option-premium'; } ?><?php if (!$scanner->isEnabled()) { echo ' wf-disabled'; } ?>" data-option-value="<?php echo esc_attr(wfScanner::SCAN_SCHEDULING_MODE_MANUAL); ?>" data-show=".wf-scan-scheduling-manual">
			<li class="wf-option-radio-container">
				<input class="wf-option-radio" type="radio" name="wf-scheduling-mode" id="wf-scheduling-mode-manual" value="<?php echo esc_attr(wfScanner::SCAN_SCHEDULING_MODE_MANUAL); ?>" <?php echo ($scanner->schedulingMode() == wfScanner::SCAN_SCHEDULING_MODE_MANUAL ? ' checked' : ''); ?><?php if (!wfConfig::p() || !$scanner->isEnabled()) { echo ' disabled'; } ?> aria-labelledby="wf-scheduling-mode-manual-label">
				<label for="wf-scheduling-mode-manual"></label>
			</li>
			<li id="wf-scheduling-mode-manual-label" class="wf-option-title"><?php esc_html_e('Manually schedule scans', 'wordfence'); ?><?php if (!wfConfig::p()) { ?>&nbsp;&nbsp;<a href="https://www.wordfence.com/gnl1optionUpgrade/wordfence-signup/" target="_blank" rel="noopener noreferrer" class="wf-premium-link"><?php esc_html_e('Premium Feature', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a><?php } ?></li>
		</ul>
		<ul class="wf-scan-scheduling-manual<?php echo ($scanner->schedulingMode() == wfScanner::SCAN_SCHEDULING_MODE_MANUAL ? ' wf-active' : ''); ?>">
			<li>
				<strong class="wf-scan-scheduling-manual-presets-label">Shortcuts</strong> 
				<ul class="wf-scan-scheduling-manual-presets wf-overflow-x-auto-xs" data-option-name="manualScanType" data-original-value="<?php echo esc_attr(wfConfig::get('manualScanType')); ?>" role="radiogroup">
					<li class="wf-nowrap <?php echo ($scanner->manualSchedulingType() == wfScanner::MANUAL_SCHEDULING_ONCE_DAILY ? 'wf-active' : ''); ?>" data-option-value="<?php echo esc_attr(wfScanner::MANUAL_SCHEDULING_ONCE_DAILY); ?>" data-show=".wf-scan-scheduling-manual-preset-options" data-hide=".wf-scan-scheduling-manual-custom-options" role="radio" aria-checked="<?php echo ($scanner->manualSchedulingType() == wfScanner::MANUAL_SCHEDULING_ONCE_DAILY ? 'true' : 'false'); ?>" tabindex="0"><?php esc_html_e('Once Daily', 'wordfence'); ?></li>
					<li class="wf-nowrap <?php echo ($scanner->manualSchedulingType() == wfScanner::MANUAL_SCHEDULING_TWICE_DAILY ? 'wf-active' : ''); ?>" data-option-value="<?php echo esc_attr(wfScanner::MANUAL_SCHEDULING_TWICE_DAILY); ?>" data-show=".wf-scan-scheduling-manual-preset-options" data-hide=".wf-scan-scheduling-manual-custom-options" role="radio" aria-checked="<?php echo ($scanner->manualSchedulingType() == wfScanner::MANUAL_SCHEDULING_TWICE_DAILY ? 'true' : 'false'); ?>" tabindex="0"><?php esc_html_e('Twice Daily', 'wordfence'); ?></li>
					<li class="wf-nowrap <?php echo ($scanner->manualSchedulingType() == wfScanner::MANUAL_SCHEDULING_EVERY_OTHER_DAY ? 'wf-active' : ''); ?>" data-option-value="<?php echo esc_attr(wfScanner::MANUAL_SCHEDULING_EVERY_OTHER_DAY); ?>" data-show=".wf-scan-scheduling-manual-preset-options" data-hide=".wf-scan-scheduling-manual-custom-options" role="radio" aria-checked="<?php echo ($scanner->manualSchedulingType() == wfScanner::MANUAL_SCHEDULING_EVERY_OTHER_DAY ? 'true' : 'false'); ?>" tabindex="0"><?php esc_html_e('Every Other Day', 'wordfence'); ?></li>
					<li class="wf-nowrap <?php echo ($scanner->manualSchedulingType() == wfScanner::MANUAL_SCHEDULING_WEEKDAYS ? 'wf-active' : ''); ?>" data-option-value="<?php echo esc_attr(wfScanner::MANUAL_SCHEDULING_WEEKDAYS); ?>" data-show=".wf-scan-scheduling-manual-preset-options" data-hide=".wf-scan-scheduling-manual-custom-options" role="radio" aria-checked="<?php echo ($scanner->manualSchedulingType() == wfScanner::MANUAL_SCHEDULING_WEEKDAYS ? 'true' : 'false'); ?>" tabindex="0"><?php esc_html_e('Weekdays', 'wordfence'); ?></li>
					<li class="wf-nowrap <?php echo ($scanner->manualSchedulingType() == wfScanner::MANUAL_SCHEDULING_WEEKENDS ? 'wf-active' : ''); ?>" data-option-value="<?php echo esc_attr(wfScanner::MANUAL_SCHEDULING_WEEKENDS); ?>" data-show=".wf-scan-scheduling-manual-preset-options" data-hide=".wf-scan-scheduling-manual-custom-options" role="radio" aria-checked="<?php echo ($scanner->manualSchedulingType() == wfScanner::MANUAL_SCHEDULING_WEEKENDS ? 'true' : 'false'); ?>" tabindex="0"><?php esc_html_e('Weekends', 'wordfence'); ?></li>
					<li class="wf-nowrap <?php echo ($scanner->manualSchedulingType() == wfScanner::MANUAL_SCHEDULING_ODD_DAYS_WEEKENDS ? 'wf-active' : ''); ?>" data-option-value="<?php echo esc_attr(wfScanner::MANUAL_SCHEDULING_ODD_DAYS_WEEKENDS); ?>" data-show=".wf-scan-scheduling-manual-preset-options" data-hide=".wf-scan-scheduling-manual-custom-options" role="radio" aria-checked="<?php echo ($scanner->manualSchedulingType() == wfScanner::MANUAL_SCHEDULING_ODD_DAYS_WEEKENDS ? 'true' : 'false'); ?>" tabindex="0"><?php esc_html_e('Odd Days & Weekends', 'wordfence'); ?></li>
					<li class="wf-nowrap <?php echo ($scanner->manualSchedulingType() == wfScanner::MANUAL_SCHEDULING_CUSTOM ? 'wf-active' : ''); ?>" data-option-value="<?php echo esc_attr(wfScanner::MANUAL_SCHEDULING_CUSTOM); ?>" data-show=".wf-scan-scheduling-manual-custom-options" data-hide=".wf-scan-scheduling-manual-preset-options" role="radio" aria-checked="<?php echo ($scanner->manualSchedulingType() == wfScanner::MANUAL_SCHEDULING_CUSTOM ? 'true' : 'false'); ?>" tabindex="0"><?php esc_html_e('Custom', 'wordfence'); ?></li>
				</ul>
				<script type="application/javascript">
					(function($) {
						$(function() {
							$('.wf-option-scan-schedule-mode').each(function() {
								$(this).find('.wf-option-radio').on('keydown', function(e) {
									if (e.keyCode == 32) {
										e.preventDefault();
										e.stopPropagation();

										$(this).trigger('click');
									}
								});
								
								$(this).find('.wf-option-radio').on('click', function(e) {
									var optionElement = $(this).closest('.wf-option');
									if (optionElement.hasClass('wf-option-premium') || optionElement.hasClass('wf-disabled')) {
										return;
									}

									var groupElement = $(this).closest('.wf-scan-scheduling');
									var option = groupElement.data('option');
									var value = false;
									var isActive = $(this).is(':checked');
									if (isActive) {
										groupElement.find('.wf-option-scan-schedule-mode').each(function() {
											var toHide = $(this).data('show');
											if (toHide) {
												$(toHide).removeClass('wf-active');
											}
										});
										
										value = optionElement.data('optionValue');
										var toShow = optionElement.data('show');
										if (toShow) {
											$(toShow).addClass('wf-active');
										}
									}

									var originalValue = groupElement.data('originalValue');
									if (originalValue == value) {
										delete WFAD.pendingChanges[option];
									}
									else {
										WFAD.pendingChanges[option] = value;
									}

									WFAD.updatePendingChanges();
								});
							});
							
							$('.wf-scan-scheduling-manual-presets > li').each(function(index, element) {
								$(element).on('keydown', function(e) {
									if (e.keyCode == 32) {
										e.preventDefault();
										e.stopPropagation();

										$(this).trigger('click');
									}
								});
								
								$(element).on('click', function(e) {
									e.preventDefault();
									e.stopPropagation();

									var control = $(this).closest('ul');
									var optionName = control.data('optionName');
									var originalValue = control.data('originalValue');
									var value = $(this).data('optionValue');

									control.find('li').each(function() {
										$(this).toggleClass('wf-active', value == $(this).data('optionValue')).attr('aria-checked', value == $(this).data('optionValue') ? 'true' : 'false');
									});

									var toShow = $(this).data('show');
									if (toShow) {
										$(toShow).addClass('wf-active');
									}

									var toHide = $(this).data('hide'); 
									if (toHide) {
										$(toHide).removeClass('wf-active');
									}

									if (originalValue == value) {
										delete WFAD.pendingChanges[optionName];
									}
									else {
										WFAD.pendingChanges[optionName] = value;
									}

									WFAD.updatePendingChanges();
								});
							});

							$('.wf-option[data-option-name="scheduledScansEnabled"]').on('change', function() {
								var scheduledScansEnabled = !!$('.wf-option[data-option-name="scheduledScansEnabled"] .wf-switch li.wf-active').data('optionValue');
								$('.wf-option-scan-schedule-mode').toggleClass('wf-disabled', !scheduledScansEnabled);
								$('.wf-option-scan-schedule-mode .wf-option-radio').prop('disabled', !scheduledScansEnabled);
							});

							$(window).on('wfOptionsReset', function() {
								$('.wf-option-scan-schedule-mode').each(function() {
									var groupElement = $(this).closest('.wf-scan-scheduling');
									var originalValue = groupElement.data('originalValue');
									var option = groupElement.data('option');
									var value = $(this).data('optionValue');
									
									$(this).find('.wf-option-radio').prop('checked', value == originalValue);
									var toHideShow = $(this).data('show');
									if (toHideShow) {
										$(toHideShow).toggleClass('wf-active', value == originalValue);
									}
								});
								
								$('.wf-scan-scheduling-manual-presets').each(function() {
									var originalValue = $(this).data('originalValue');
									$(this).find('li').each(function() {
										$(this).toggleClass('wf-active', originalValue == $(this).data('optionValue')).attr('aria-checked', originalValue == $(this).data('optionValue') ? 'true' : 'false');
										if (originalValue == $(this).data('optionValue')) {
											var toShow = $(this).data('show');
											if (toShow) {
												$(toShow).addClass('wf-active');
											}

											var toHide = $(this).data('hide'); 
											if (toHide) {
												$(toHide).removeClass('wf-active');
											}
										}
									});
								});
							});
						});
					})(jQuery);
				</script>
			</li>
			<li class="wf-scan-scheduling-manual-preset-options<?php echo ($scanner->manualSchedulingType() != wfScanner::MANUAL_SCHEDULING_CUSTOM ? ' wf-active' : ''); ?>">
				<ul class="wf-option wf-option-select" data-select-option="schedStartHour" data-original-select-value="<?php echo esc_attr($scanner->manualSchedulingStartHour()); ?>">
					<li class="wf-option-title"><span class="wf-hidden-xs"><?php esc_html_e('Use preferred start time', 'wordfence'); ?></span><span class="wf-visible-xs"><?php esc_html_e('Start time', 'wordfence'); ?></span></li>
					<li class="wf-option-select">
						<select<?php echo (!(!wfConfig::p() && isset($premium) && $premium) ? '' : ' disabled'); ?> data-preferred-width="100px"> 
							<?php
							$selectOptions = array();
							for ($i = 1; $i <= 24; $i++) {
								$label = $i . ':00 ';
								if ($i > 12) {
									$label = ($i - 12) . ':00 ';
								}
								
								if ($i < 12 || $i > 23) {
									$label .= __('AM', 'wordfence');
								}
								else {
									$label .= __('PM', 'wordfence');
								}
								
								$selectOptions[] = array('label' => $label, 'value' => $i);
							}
							
							foreach ($selectOptions as $o):
							?>
								<option class="wf-option-select-option" value="<?php echo esc_attr($o['value']); ?>"<?php if ($o['value'] == $scanner->manualSchedulingStartHour()) { echo ' selected'; } ?>><?php echo esc_html($o['label']); ?></option>
							<?php endforeach; ?>
						</select>
					</li>
				</ul>
			</li>
			<li class="wf-scan-scheduling-manual-custom-options wf-overflow-x-auto-xs<?php echo ($scanner->manualSchedulingType() == wfScanner::MANUAL_SCHEDULING_CUSTOM ? ' wf-active' : ''); ?>">
				<table class="wf-scan-schedule" data-original-value="<?php echo esc_attr(@json_encode($scanner->customSchedule(), JSON_FORCE_OBJECT)); ?>">
				<?php
				$daysOfWeek = array(
					array(1, __('Monday', 'wordfence')),
					array(2, __('Tuesday', 'wordfence')),
					array(3, __('Wednesday', 'wordfence')),
					array(4, __('Thursday', 'wordfence')),
					array(5, __('Friday', 'wordfence')),
					array(6, __('Saturday', 'wordfence')),
					array(0, __('Sunday', 'wordfence')),
				);
				$sched = $scanner->customSchedule();
				foreach ($daysOfWeek as $d) :
					list($dayNumber, $dayName) = $d;
				?>
					<tr class="wf-visible-xs">
						<th><?php echo esc_html($dayName); ?></th>
					</tr>
					<tr class="wf-schedule-day" data-day="<?php echo $dayNumber; ?>">
						<th class="wf-hidden-xs"><?php echo $dayName; ?></th>
						<td>
							<div class="wf-schedule-times-wrapper">
								<div class="wf-schedule-period"><?php esc_html_e('AM', 'wordfence'); ?></div>
								<ul class="wf-schedule-times">
									<?php
									for ($h = 0; $h < 12; $h++) {
										$active = (isset($sched[$dayNumber]) && $sched[$dayNumber][$h] ? ' wf-active' : '');
										echo '<li class="wf-schedule-time' . $active . '" data-hour="' . $h . '" role="checkbox" aria-checked="' . (empty($active) ? 'false' : 'true') . '" tabindex="0">' . str_pad($h, 2, '0', STR_PAD_LEFT) . '</li>';
									}
									?>
								</ul>
							</div>
							<div class="wf-schedule-times-wrapper">
								<div class="wf-schedule-period"><?php esc_html_e('PM', 'wordfence'); ?></div>
								<ul class="wf-schedule-times">
									<?php
									for ($i = 0; $i < 12; $i++) {
										$h = $i;
										if ($h == 0) { $h = 12; }
										$active = (isset($sched[$dayNumber]) && $sched[$dayNumber][$i + 12] ? ' wf-active' : '');
										echo '<li class="wf-schedule-time' . $active . '" data-hour="' . ($i + 12) . '" role="checkbox" aria-checked="' . (empty($active) ? 'false' : 'true') . '" tabindex="0">' . str_pad($h, 2, '0', STR_PAD_LEFT) . '</li>';
									}
									?>
								</ul>
							</div>
						</td>
					</tr>
				<?php endforeach; ?>
				</table>
				<script type="application/javascript">
					(function($) {
						$(function() {
							$('.wf-schedule-time').on('keydown', function(e) {
								if (e.keyCode == 32) {
									e.preventDefault();
									e.stopPropagation();

									$(this).trigger('click');
								}
							});
							
							$('.wf-schedule-time').on('click', function(e) {
								e.preventDefault();
								e.stopPropagation();
								
								var isActive = $(this).hasClass('wf-active');
								$(this).toggleClass('wf-active', !isActive).attr('aria-checked', !isActive ? 'true' : 'false');
								var originalValue = $('.wf-scan-schedule').data('originalValue');
								var customSchedule = WFAD.pendingChanges['scanSched'];
								if (!customSchedule) {
									customSchedule = JSON.parse(JSON.stringify(originalValue));
								}
								
								var day = $(this).closest('.wf-schedule-day').data('day');
								var hour = $(this).data('hour');
								customSchedule[day][hour] = isActive ? 0 : 1;
								
								var isOriginal = true;
								var dayKeys = Object.keys(originalValue);
								scheduleEqualityCheck:
								for (var i = 0; i < dayKeys.length; i++) {
									var d = dayKeys[i];
									var originalDay = originalValue[d];
									var currentDay = customSchedule[d];
									var hourKeys = Object.keys(originalDay);
									for (var n = 0; n < hourKeys.length; n++) {
										var h = hourKeys[n];
										if (originalDay[h] != currentDay[h]) {
											isOriginal = false;
											break scheduleEqualityCheck;
										}
									}
								}

								if (isOriginal) {
									delete WFAD.pendingChanges['scanSched'];
								}
								else {
									WFAD.pendingChanges['scanSched'] = customSchedule;
								}

								WFAD.updatePendingChanges();
							});

							$(window).on('wfOptionsReset', function() {
								var originalValue = $('.wf-scan-schedule').data('originalValue');
								$('.wf-schedule-time').each(function() {
									var day = $(this).closest('.wf-schedule-day').data('day');
									var hour = $(this).data('hour');
									$(this).toggleClass('wf-active', !!originalValue[day][hour]).attr('aria-checked', !!originalValue[day][hour] ? 'true' : 'false');
								});
							});
						});
					})(jQuery);
				</script>
			</li>
		</ul>
	</li>
</ul>
</li>views/scanner/site-cleaning-high-sense.php000064400000021133150755146450014631 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Displays the Site Cleaning prompt.
 */
?>
<script type="text/x-jquery-template" id="siteCleaningHighSenseTmpl">
	<ul class="wf-issue-site-cleaning">
		<li class="wf-issue-summary">
			<ul>
				<li class="wf-issue-icon-colored"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 140.65 149.02"><defs><style>.a{fill:none;}.b{fill:#2d2d2d;}.c{fill:#525455;}.d{clip-path:url(#a);}.e{fill:#fcb316;}.f{fill:#fed10c;}</style><clipPath id="a" transform="translate(0)"><rect class="a" y="0.03" width="139.84" height="149.01"/></clipPath></defs><title>Site Cleaning</title><path class="b" d="M105.39,109.26l-1.28.72,1.13-.94Zm.43-1.68-1.25-.92,1.07,1.12Zm2.45-3-1.45,2.68.24.12Zm-.9,3.33,3.42-.53-3.45.27Zm-1.31.59c.35,2.61,3.43,4.65,2.38,7.42a7.71,7.71,0,0,1-1.58,2.14l-1.14-.88-1.1,1.43a9.68,9.68,0,1,0,3.12,2.46l1.13-1.46-1.36-1.05.3-.35a6.2,6.2,0,0,0,1.6-2.69c.7-2.71-2.21-4.58-2.54-7.07C106.8,108,106,108,106.07,108.52Z" transform="translate(0)"/><path class="c" d="M100.32,137.15a9.87,9.87,0,1,1,4.26-18.77l1.12-1.46,1.15.89.29-.33a5.2,5.2,0,0,0,1.13-1.61c.59-1.57-.21-2.89-1.07-4.29a8.12,8.12,0,0,1-1.33-3h0a.54.54,0,0,1,.49-.62.6.6,0,0,1,.7.52,7.45,7.45,0,0,0,1.29,2.83c.83,1.31,1.68,2.66,1.25,4.32a6.41,6.41,0,0,1-1.64,2.77l-.16.18,1.36,1L108,121.08a9.87,9.87,0,0,1-7,16Zm0-19.35-.68,0a9.48,9.48,0,1,0,8,3.38l-.1-.12,1.11-1.43-1.37-1.05.12-.15c.09-.12.2-.24.31-.36a6.06,6.06,0,0,0,1.55-2.61c.39-1.5-.38-2.72-1.2-4a7.71,7.71,0,0,1-1.34-3,.22.22,0,0,0-.26-.18.16.16,0,0,0-.15.19,7.87,7.87,0,0,0,1.28,2.89c.86,1.42,1.75,2.88,1.1,4.63a5.58,5.58,0,0,1-1.21,1.74l-.41.46-.12.14-1.13-.87-1.08,1.4-.14-.07A9.49,9.49,0,0,0,100.32,117.81Zm3.88-7.66-.22-.32,1.29-1.08.39.57Zm3-2-.06-.5-.6-.29,1.55-2.85.35.17-1.22,2.81,3.55-.28,0,.38Zm-1.56-.09-1.22-1.28.25-.29,1.42,1Z" transform="translate(0)"/><path class="b" d="M136.76,95.75,133,99.36a9.84,9.84,0,0,0-7.74-.79l-.29-1a1.83,1.83,0,1,0-3.52,1l.51,1.75-.11.1L119.4,97.9a1.83,1.83,0,0,0-2.65,2.53l2.74,2.87a9.83,9.83,0,0,0-1,2.72l-4.17-.1a1.83,1.83,0,0,0-.08,3.66l4.18.1a9.82,9.82,0,0,0,.89,2.74l-.3.28a1.83,1.83,0,0,0,2.52,2.65,9.86,9.86,0,0,0,5.46,2.51l1.24,4.31a1.83,1.83,0,1,0,3.52-1l-1-3.56a9.83,9.83,0,0,0,1.79-.67l1.18,1.24a1.83,1.83,0,1,0,2.65-2.53l-.87-.92a9.86,9.86,0,0,0,2.39-4.6l.91,0a1.83,1.83,0,1,0,.08-3.66l-.9,0a9.86,9.86,0,0,0-2.15-4.75l3.47-3.32a1.83,1.83,0,0,0-2.53-2.65Zm-4.29,10.59a4.6,4.6,0,0,1-4.07,6.29h-.32a4.58,4.58,0,0,1-2.7-1l-.23-.18a4.62,4.62,0,0,1-1.22-1.69,4.57,4.57,0,0,1-.35-1.48c0-.13,0-.27,0-.41s0-.21,0-.32a4.62,4.62,0,0,1,4.69-4.18l.4,0a4.65,4.65,0,0,1,3.78,2.89Z" transform="translate(0)"/><g class="d"><path class="e" d="M130.25,2.76,95.39,70.35l.6.18a26,26,0,0,1,4.14,1.73,21.92,21.92,0,0,1,4.23,2.89L139.29,7.42a5.09,5.09,0,0,0-9-4.66Zm0,0" transform="translate(0)"/><path class="e" d="M15.07,128.11A79,79,0,0,0,35.3,141.06,105.25,105.25,0,0,0,60.8,149h0a3.36,3.36,0,0,0,.47,0h.11c14-.46,24.91-5.12,32.43-13.86,9.89-11.49,13.46-28.77,12.77-43.62a18.16,18.16,0,0,0-4.69-11.69c-.22-.23-.45-.46-.69-.67a16.71,16.71,0,0,0-3.45-2.4,20.79,20.79,0,0,0-3.37-1.41A11.3,11.3,0,0,0,91,74.83c-4.91,0-9.61,3.08-13.21,6.23s-7.48,6.8-11.67,9.58c-4.6,3-9.64,4.58-14.89,6.07a127.82,127.82,0,0,1-20.77,4,169.19,169.19,0,0,1-18.84,1.11q-3.75,0-7.48-.2l-.43,0H3.45a3.46,3.46,0,0,0-3.27,4.58,52.56,52.56,0,0,0,14.88,22Zm-4.84-19.45h1.09a180.24,180.24,0,0,0,20.13-1.13c16.83-1.92,30.55-6,40.94-12.2a1.87,1.87,0,0,1,1-.26,1.9,1.9,0,0,1,.91.23c6,3.32,15.42,8.23,22.11,10.62a1.89,1.89,0,0,1,1.24,2c-.8,7-3.06,15.86-9,22.77-6.1,7.07-15.1,10.9-26.78,11.4H61.7a2.53,2.53,0,0,1-.45,0c-1.18-.21-4.08-.77-8-1.84,1.11-.49,2.26-1.08,3.42-1.73s2.09-1.23,3.12-1.9c3.21-2.07,6.32-4.42,8.73-6.35a.61.61,0,0,0-.63-1,83.68,83.68,0,0,1-18.08,4.68c-1.9.31-3.73.56-5.42.77-2,.25-3.77.44-5.26.58L38,134.7a81.9,81.9,0,0,1-9.4-5,37.24,37.24,0,0,0,3.94-.6c1.23-.25,2.47-.55,3.69-.88a96.5,96.5,0,0,0,9.35-3.12.41.41,0,0,0-.19-.79c-4.25.41-10.15.45-15.19.37-1.65,0-3.21-.06-4.58-.1-1.81-.05-3.31-.11-4.29-.15q-.87-.72-1.69-1.47-1.07-1-2.06-2c1-.1,2.09-.27,3.16-.47s2-.42,3-.68a93.34,93.34,0,0,0,10.52-3.42.41.41,0,0,0-.19-.79c-4,.38-9.44.44-14.26.39l-3.42-.06-3.31-.09A44.75,44.75,0,0,1,9.41,110a.93.93,0,0,1,.82-1.36Zm0,0" transform="translate(0)"/></g><path class="f" d="M9.24,108.65h1.1a184.19,184.19,0,0,0,20.42-1.14c17.07-1.93,31-6,41.52-12.28a1.91,1.91,0,0,1,1-.26,1.93,1.93,0,0,1,.92.24c6.12,3.34,15.64,8.29,22.42,10.69a1.9,1.9,0,0,1,1.26,2c-.81,7-3.11,16-9.15,22.91-6.18,7.11-15.32,11-27.15,11.47h-.11a2.59,2.59,0,0,1-.46,0c-1.19-.21-4.14-.77-8.08-1.85,1.13-.49,2.29-1.08,3.47-1.74s2.12-1.23,3.17-1.91c3.25-2.08,6.41-4.45,8.86-6.39a.62.62,0,0,0-.63-1.05C62.4,131.54,55.55,133,49.42,134c-1.93.31-3.78.57-5.49.78-2,.25-3.82.44-5.33.59l-1.19-.53a83.27,83.27,0,0,1-9.53-5.08,38,38,0,0,0,4-.6c1.24-.25,2.5-.56,3.74-.89a98.4,98.4,0,0,0,9.48-3.14.41.41,0,0,0-.19-.8c-4.31.41-10.3.45-15.41.38-1.67,0-3.25-.06-4.65-.1-1.84-.05-3.36-.11-4.36-.15q-.88-.73-1.72-1.48-1.08-1-2.09-2c1-.1,2.11-.27,3.21-.48s2.06-.43,3.09-.68a95.18,95.18,0,0,0,10.66-3.44.41.41,0,0,0-.19-.8c-4.05.39-9.57.44-14.46.39l-3.47-.06-3.36-.09A45,45,0,0,1,8.41,110a.94.94,0,0,1,.83-1.37Z" transform="translate(0)"/><path class="f" d="M61.44,143.29a3.56,3.56,0,0,1-.63-.06c-1.11-.19-4.13-.77-8.17-1.87l-2.73-.75,2.59-1.13c1-.46,2.18-1,3.38-1.7,1-.55,2-1.18,3.12-1.88,2.12-1.36,4.38-3,6.75-4.76A93.87,93.87,0,0,1,49.58,135c-1.79.29-3.65.55-5.53.78s-3.58.42-5.36.59l-.26,0-.24-.1-1.2-.53a84.56,84.56,0,0,1-9.65-5.14L24.83,129l3-.27a36.93,36.93,0,0,0,3.9-.59c1.15-.23,2.39-.53,3.67-.87,1.94-.52,3.83-1.12,5.51-1.7-3.13.13-6.94.17-11.39.11-1.68,0-3.26-.06-4.66-.1-1.84-.05-3.37-.11-4.37-.15h-.34l-.26-.22q-.89-.74-1.75-1.5c-.7-.63-1.42-1.31-2.13-2l-1.5-1.49,2.1-.21c1-.1,2-.25,3.12-.46s2-.41,3-.67c2.35-.59,4.66-1.31,6.69-2-2.9.13-6.39.17-10.44.12l-3.48-.06-3.37-.09h-.48l-.29-.38a46.1,46.1,0,0,1-3.84-6,1.91,1.91,0,0,1,0-1.9,1.93,1.93,0,0,1,1.67-.95h1.1a184.49,184.49,0,0,0,20.31-1.13c16.88-1.91,30.72-6,41.12-12.15a3,3,0,0,1,2.88,0c6.53,3.56,15.7,8.3,22.28,10.63A2.89,2.89,0,0,1,98.85,108c-.77,6.66-3,16.13-9.39,23.45s-15.75,11.3-27.87,11.82Zm-5.66-3.18c2.63.65,4.55,1,5.38,1.15l.28,0C73.06,140.8,82,137.06,88,130.16s8.17-16,8.91-22.37a.9.9,0,0,0-.6-1c-6.7-2.37-16-7.16-22.57-10.75a1,1,0,0,0-.91,0C62.14,102.4,48,106.57,30.88,108.51a186.66,186.66,0,0,1-20.53,1.14h-1a49.4,49.4,0,0,0,3.38,5.22l2.87.07L19,115c6.14.07,11-.06,14.35-.38a1.41,1.41,0,0,1,.64,2.72,95.67,95.67,0,0,1-10.78,3.48c-1.08.27-2.13.5-3.14.7l-1.21.21.57.52q.7.63,1.43,1.24l4,.14c1.39,0,3,.08,4.64.1a150.22,150.22,0,0,0,15.3-.37,1.41,1.41,0,0,1,.65,2.72,99.72,99.72,0,0,1-9.58,3.17c-1.33.36-2.6.66-3.8.9l-1.23.23c2.21,1.26,4.54,2.45,7,3.56l.94.42c1.68-.16,3.37-.35,5-.56,1.85-.23,3.69-.49,5.46-.77a82.57,82.57,0,0,0,18.11-4.64A1.62,1.62,0,0,1,69,131.14a109.57,109.57,0,0,1-8.94,6.45c-1.12.72-2.2,1.37-3.22,1.94ZM9.24,108.65v1h0Z" transform="translate(0)"/><path class="b" d="M126.45,127.44c-1.95-2.46-6.17-2.35-9.44.24s-4.34,6.67-2.39,9.13a5.18,5.18,0,0,0,4.58,1.75,2.47,2.47,0,0,0,3,1.09,1.33,1.33,0,0,0,1.83.18l3.22-2.55a1.33,1.33,0,0,0,.25-1.82,2.48,2.48,0,0,0-.38-3.16A5.18,5.18,0,0,0,126.45,127.44Zm-6.58,9.14a2.75,2.75,0,1,1,.45-3.86A2.75,2.75,0,0,1,119.87,136.57Zm4.68-.53c-.12.19-.5.17-.91,0,.08.45,0,.82-.2.89s-.63-.31-.83-.89-.15-1.06.08-1.19.68-.11,1.18.2S124.7,135.81,124.55,136Zm.48-3.56a2.75,2.75,0,1,1,.45-3.86A2.75,2.75,0,0,1,125,132.49Z" transform="translate(0)"/><path class="b" d="M132,138.94a1.34,1.34,0,0,0,.13.31l-4.54,1.21-.51.14-4.54,1.21a1.34,1.34,0,1,0-1.66,1.32,1.21,1.21,0,1,0,2.19.34v0l4.46-1.18.51-.14,4.46-1.18v0a1.21,1.21,0,1,0,1.73-1.38,1.34,1.34,0,1,0-2.22-.63Z" transform="translate(0)"/><path class="b" d="M124.54,144.87a1.34,1.34,0,0,1,.27.19l2.21-4.15.25-.47,2.21-4.15a1.34,1.34,0,1,1,1.66-1.31,1.21,1.21,0,1,1-.17,2.21h0l-2.17,4.07-.25.47-2.17,4.07h0a1.21,1.21,0,1,1-1.74,1.37,1.34,1.34,0,1,1-.1-2.3Z" transform="translate(0)"/></svg></li>
				<li class="wf-issue-short">
					<p><strong><?php esc_html_e('The results of your scan may indicate that you could benefit from Wordfence Site Cleaning', 'wordfence'); ?></strong></p>
					<p><?php esc_html_e('Since you have High Sensitivity scanning enabled, there is a very high likelihood that your results will include false positives. If you think you have indeed been hacked, our team of security experts can help.', 'wordfence'); ?></p>
				</li>
				<li class="wf-issue-controls"><a class="wf-btn wf-btn-primary wf-btn-callout-subtle" href="https://www.wordfence.com/gnl1scanGetHelpHS/wordfence-site-cleanings/" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Get Help', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></li>
			</ul>
		</li>
	</ul>
</script>
views/scanner/issue-coreUnknown.php000064400000004000150755146450013507 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents an issue template.
 */
echo wfView::create('scanner/issue-base', array(
	'internalType' => 'coreUnknown',
	'displayType' => __('Unknown Core File', 'wordfence'),
	'iconSVG' => '<svg viewBox="0 0 46 55" ><path d="M43.557,13.609l-11.214,-11.175c-1.303,-1.246 -2.962,-2.058 -4.747,-2.324l0,18.223l18.294,0c-0.269,-1.777 -1.084,-3.427 -2.333,-4.724l0,0Z" fill="#9e9e9e"/><path d="M26.465,22.921c-0.005,0 -0.011,0 -0.016,0c-1.885,0 -3.435,-1.545 -3.435,-3.423c0,-0.005 0,-0.011 0,-0.016l0,-19.482l-19.562,0c-0.921,-0.019 -1.809,0.346 -2.449,1.005c-0.658,0.637 -1.022,1.52 -1.003,2.434l0,48.127c-0.019,0.915 0.345,1.797 1.003,2.434c0.639,0.658 1.524,1.023 2.443,1.005l39.102,0c0.004,0.001 0.008,0.001 0.012,0.001c1.884,0 3.435,-1.546 3.435,-3.423c0,-0.006 0,-0.011 -0.001,-0.017l0,-28.645l-19.529,0Z" fill="#9e9e9e"/></svg>',
	'summaryControls' => array(wfView::create('scanner/issue-control-ignore', array('ignoreP' => __('Always Ignore Version', 'wordfence'), 'ignoreC' => __('Ignore Until Version Changes', 'wordfence'))), wfView::create('scanner/issue-control-show-details')),
	'detailPairs' => array(__('Details', 'wordfence') => '{{html longMsg}}'),
	'detailControls' => array(
		'{{if data.fileExists}}<a target="_blank" class="wf-btn wf-btn-default wf-btn-callout-subtle" rel="noopener noreferrer" href="${WFAD.makeViewFileLink(data)}">' . __('View File', 'wordfence') . '<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>{{/if}}',
		'{{if data.canDelete}}<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-issue-control-delete-file" role="button">' . __('Delete File', 'wordfence') . '</a>{{/if}}',
		'<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-issue-control-mark-fixed" role="button">' . __('Mark as Fixed', 'wordfence') . '</a>',
	),
	'textOutput' => (isset($textOutput) ? $textOutput : null),
	'textOutputDetailPairs' => array(
		__('Details', 'wordfence') => '$longMsg',
	),
))->render();views/scanner/issue-postBadURL.php000064400000006277150755146450013200 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents an issue template.
 */
echo wfView::create('scanner/issue-base', array(
	'internalType' => 'postBadURL',
	'displayType' => __('URL', 'wordfence'),
	'iconSVG' => '<svg viewBox="0 0 106.37 106.37"><path d="M100.89,64.92,87.34,51.36a18.89,18.89,0,0,0-26.85.26l-5.74-5.73a18.34,18.34,0,0,0,5.74-13.62A18,18,0,0,0,55.07,19L41.65,5.54A17.86,17.86,0,0,0,28.35,0,18,18,0,0,0,15.12,5.41L5.54,14.93A17.79,17.79,0,0,0,0,28.16a18.09,18.09,0,0,0,5.48,13.3L19,55a18.12,18.12,0,0,0,13.3,5.48,18.27,18.27,0,0,0,13.56-5.74l5.73,5.74a18.32,18.32,0,0,0-5.73,13.62A18,18,0,0,0,51.3,87.34l13.43,13.49a18.81,18.81,0,0,0,26.53.13l9.58-9.52a17.79,17.79,0,0,0,5.54-13.23,18.1,18.1,0,0,0-5.48-13.3ZM45.89,37l-1.21-1.24c-.67-.7-1.14-1.16-1.4-1.4s-.68-.56-1.24-1a5.26,5.26,0,0,0-1.66-.85,6.64,6.64,0,0,0-1.79-.23,6.24,6.24,0,0,0-6.26,6.26,6.6,6.6,0,0,0,.23,1.79A5.19,5.19,0,0,0,33.41,42a14.48,14.48,0,0,0,1,1.24c.24.26.71.73,1.4,1.4L37,45.89a6.3,6.3,0,0,1-4.7,2,6,6,0,0,1-4.43-1.76L14.34,32.59a6,6,0,0,1-1.82-4.43,5.94,5.94,0,0,1,1.82-4.36l9.58-9.52a6.3,6.3,0,0,1,4.43-1.76,6,6,0,0,1,4.43,1.83L46.21,27.83A6,6,0,0,1,48,32.26,6.33,6.33,0,0,1,45.89,37ZM92,82.58,82.45,92.1A6.28,6.28,0,0,1,78,93.79,6,6,0,0,1,73.59,92L60.16,78.54a6,6,0,0,1-1.82-4.43,6.33,6.33,0,0,1,2.15-4.76l1.21,1.24c.67.69,1.14,1.16,1.4,1.4a15,15,0,0,0,1.24,1,5.18,5.18,0,0,0,1.66.85,6.6,6.6,0,0,0,1.79.23A6.23,6.23,0,0,0,74,67.79,6.76,6.76,0,0,0,73.82,66,5.34,5.34,0,0,0,73,64.33c-.41-.56-.74-1-1-1.24s-.71-.73-1.4-1.4l-1.24-1.2A6.2,6.2,0,0,1,74,58.4a6,6,0,0,1,4.43,1.82L92,73.78a6,6,0,0,1,1.83,4.43A6,6,0,0,1,92,82.58Zm0,0"/></svg>',
	'summaryControls' => array(wfView::create('scanner/issue-control-edit-post'), wfView::create('scanner/issue-control-ignore', array('ignoreP' => __('Always Ignore', 'wordfence'), 'ignoreC' => __('Ignore this URL', 'wordfence'))), wfView::create('scanner/issue-control-show-details')),
	'detailPairs' => array(
		__('Title', 'wordfence') => '${data.postTitle}',
		__('Bad URL', 'wordfence') => '<strong class="wfWarn wf-split-word">${data.badURL}</strong>',
		__('Posted on', 'wordfence') => '${data.postDate}',
		null,
		__('Details', 'wordfence') => '{{html longMsg}}',
		null,
		__('Multisite Blog ID', 'wordfence') => array('data.isMultisite', '${data.blog_id}'),
		__('Multisite Blog Domain', 'wordfence') => array('data.isMultisite', '${data.domain}'),
		__('Multisite Blog Path', 'wordfence') => array('data.isMultisite', '${data.path}'),
	),
	'detailControls' => array(
		'<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-issue-control-mark-fixed" role="button">' . __('Mark as Fixed', 'wordfence') . '</a>',
	),
	'textOutput' => (isset($textOutput) ? $textOutput : null),
	'textOutputDetailPairs' => array(
		__('Title', 'wordfence') => '$data.postTitle',
		__('Bad URL', 'wordfence') => '$data.badURL',
		__('Posted on', 'wordfence') => '$data.postDate',
		null,
		__('Details', 'wordfence') => '$longMsg',
		null,
		__('Multisite Blog ID', 'wordfence') => array('$data.isMultisite', '$data.blog_id'),
		__('Multisite Blog Domain', 'wordfence') => array('$data.isMultisite', '$data.domain'),
		__('Multisite Blog Path', 'wordfence') => array('$data.isMultisite', '$data.path'),
	),
))->render();views/scanner/issue-wpscan_fullPathDiscl.php000064400000004335150755146450015323 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents an issue template.
 */
echo wfView::create('scanner/issue-base', array(
	'internalType' => 'wpscan_fullPathDiscl',
	'displayType' => __('Full Path Disclosure', 'wordfence'),
	'iconSVG' => '<svg viewBox="0 0 46 55" ><path d="M43.557,13.609l-11.214,-11.175c-1.303,-1.246 -2.962,-2.058 -4.747,-2.324l0,18.223l18.294,0c-0.269,-1.777 -1.084,-3.427 -2.333,-4.724l0,0Z" fill="#9e9e9e"/><path d="M26.465,22.921c-0.005,0 -0.011,0 -0.016,0c-1.885,0 -3.435,-1.545 -3.435,-3.423c0,-0.005 0,-0.011 0,-0.016l0,-19.482l-19.562,0c-0.921,-0.019 -1.809,0.346 -2.449,1.005c-0.658,0.637 -1.022,1.52 -1.003,2.434l0,48.127c-0.019,0.915 0.345,1.797 1.003,2.434c0.639,0.658 1.524,1.023 2.443,1.005l39.102,0c0.004,0.001 0.008,0.001 0.012,0.001c1.884,0 3.435,-1.546 3.435,-3.423c0,-0.006 0,-0.011 -0.001,-0.017l0,-28.645l-19.529,0Z" fill="#9e9e9e"/></svg>',
	'summaryControls' => array(wfView::create('scanner/issue-control-ignore'), wfView::create('scanner/issue-control-show-details')),
	'detailPairs' => array(
		__('URL', 'wordfence') => '<a href="${data.url}" target="_blank" rel="noopener noreferrer">${data.url}<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>',
		null,
		__('Details', 'wordfence') => '{{html longMsg}}'
	),
	'detailControls' => array(
		'{{if data.fileExists}}<a target="_blank" class="wf-btn wf-btn-default wf-btn-callout-subtle" rel="noopener noreferrer" href="${WFAD.makeViewFileLink(data)}">' . __('View File', 'wordfence') . '<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>{{/if}}',
		'{{if data.canDelete}}<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle" onclick="WFAD.deleteFile(\'${id}\'); return false;" role="button">' . __('Delete File', 'wordfence') . '</a>{{/if}}',
		'<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle" onclick="WFAD.updateIssueStatus(\'${id}\', \'delete\'); return false;" role="button">' . __('Mark as Fixed', 'wordfence') . '</a>',
	),
	'textOutput' => (isset($textOutput) ? $textOutput : null),
	'textOutputDetailPairs' => array(
		__('URL', 'wordfence') => '$data.url',
		null,
		__('Details', 'wordfence') => '$longMsg',
	),
))->render();views/scanner/issue-suspiciousAdminUsers.php000064400000004366150755146450015417 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents an issue template.
 */
echo wfView::create('scanner/issue-base', array(
	'internalType' => 'suspiciousAdminUsers',
	'displayType' => __('Unknown Administrator', 'wordfence'),
	'iconSVG' => '<svg viewBox="0 0 91.77 100.11"><path d="M45.89,50.06a24.1,24.1,0,0,0,17.69-7.34A24.1,24.1,0,0,0,70.91,25a24.11,24.11,0,0,0-7.33-17.7A24.12,24.12,0,0,0,45.89,0a24.12,24.12,0,0,0-17.7,7.33A24.11,24.11,0,0,0,20.86,25a24.1,24.1,0,0,0,7.33,17.7,24.11,24.11,0,0,0,17.7,7.34Zm0,0"/><path d="M91.54,76.49a66.22,66.22,0,0,0-.91-7.1,54.55,54.55,0,0,0-1.73-7.07A33.35,33.35,0,0,0,86.1,56a22.92,22.92,0,0,0-4-5.28,17,17,0,0,0-5.57-3.49,19.61,19.61,0,0,0-7.27-1.3,8,8,0,0,0-2.74,1.4q-2.15,1.41-4.86,3.13a30.77,30.77,0,0,1-7,3.13,27.68,27.68,0,0,1-17.4,0,30.59,30.59,0,0,1-7-3.13q-2.71-1.72-4.86-3.13a8,8,0,0,0-2.74-1.4,19.6,19.6,0,0,0-7.27,1.3,17,17,0,0,0-5.57,3.49,22.9,22.9,0,0,0-4,5.28,33.29,33.29,0,0,0-2.8,6.35,55.38,55.38,0,0,0-1.73,7.07,66.22,66.22,0,0,0-.91,7.1Q0,79.78,0,83.24q0,7.82,4.76,12.35t12.64,4.53h57q7.89,0,12.65-4.53t4.76-12.35q0-3.46-.23-6.75Zm0,0"/></svg>',
	'summaryControls' => array(wfView::create('scanner/issue-control-ignore', array('ignoreP' => __('Ignore', 'wordfence'))), wfView::create('scanner/issue-control-show-details')),
	'detailPairs' => array(
		__('Details', 'wordfence') => '{{html longMsg}}',
	),
	'detailControls' => array(
		'<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle" onclick="WFAD.deleteAdminUser(\'${id}\'); return false;" role="button">' . __('Delete User', 'wordfence') . '</a>',
		'<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle" onclick="WFAD.revokeAdminUser(\'${id}\'); return false;" role="button">' . __('Revoke Capabilities', 'wordfence') . '</a>',
		'<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle" onclick="WFAD.acknowledgeAdminUser(\'${id}\'); return false;" role="button">' . __('Acknowledge User', 'wordfence') . '</a>',
		'<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-issue-control-mark-fixed" role="button">' . __('Mark as Fixed', 'wordfence') . '</a>',
	),
	'textOutput' => (isset($textOutput) ? $textOutput : null),
	'textOutputDetailPairs' => array(
		__('Details', 'wordfence') => '$longMsg',
	),
))->render();views/scanner/issue-skippedPaths.php000064400000003311150755146450013642 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents an issue template.
 */

if (function_exists('network_admin_url') && is_multisite()) { $optionsURL = network_admin_url('admin.php?page=WordfenceScan&subpage=scan_options#wf-option-other-scanOutside#wf-scanner-options-general'); }
else { $optionsURL = admin_url('admin.php?page=WordfenceScan&subpage=scan_options#wf-option-other-scanOutside#wf-scanner-options-general'); }

echo wfView::create('scanner/issue-base', array(
	'internalType' => 'skippedPaths',
	'displayType' => __('Skipped Paths', 'wordfence'),
	'iconSVG' => '<svg viewBox="0 0 20 20"><g><path d="M18 16V4c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h13c.55 0 1-.45 1-1zM8 11h1c.55 0 1 .45 1 1s-.45 1-1 1H8v1.5c0 .28-.22.5-.5.5s-.5-.22-.5-.5V13H6c-.55 0-1-.45-1-1s.45-1 1-1h1V5.5c0-.28.22-.5.5-.5s.5.22.5.5V11zm5-2h-1c-.55 0-1-.45-1-1s.45-1 1-1h1V5.5c0-.28.22-.5.5-.5s.5.22.5.5V7h1c.55 0 1 .45 1 1s-.45 1-1 1h-1v5.5c0 .28-.22.5-.5.5s-.5-.22-.5-.5V9z"/></g></svg>',
	'summaryControls' => array(wfView::create('scanner/issue-control-ignore', array('ignoreP' => __('Ignore', 'wordfence'))), wfView::create('scanner/issue-control-show-details')),
	'detailPairs' => array(
		__('Details', 'wordfence') => '{{html longMsg}}',
	),
	'detailControls' => array(
		'<a href="' . $optionsURL . '" class="wf-btn wf-btn-default wf-btn-callout-subtle">' . __('Go To Option', 'wordfence') . '</a>',
		'<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-issue-control-mark-fixed" role="button">' . __('Mark as Fixed', 'wordfence') . '</a>',
	),
	'textOutput' => (isset($textOutput) ? $textOutput : null),
	'textOutputDetailPairs' => array(
		__('Details', 'wordfence') => '$longMsg',
	),
))->render();views/scanner/issue-postBadTitle.php000064400000004105150755146450013603 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents an issue template.
 */
echo wfView::create('scanner/issue-base', array(
	'internalType' => 'postBadTitle',
	'displayType' => __('Post', 'wordfence'),
	'iconSVG' => '<svg viewBox="0 0 20 20"><rect x="0" fill="none" width="20" height="20"/><g><path d="M10.44 3.02l1.82-1.82 6.36 6.35-1.83 1.82c-1.05-.68-2.48-.57-3.41.36l-.75.75c-.92.93-1.04 2.35-.35 3.41l-1.83 1.82-2.41-2.41-2.8 2.79c-.42.42-3.38 2.71-3.8 2.29s1.86-3.39 2.28-3.81l2.79-2.79L4.1 9.36l1.83-1.82c1.05.69 2.48.57 3.4-.36l.75-.75c.93-.92 1.05-2.35.36-3.41z"/></g></svg>',
	'summaryControls' => array(wfView::create('scanner/issue-control-edit-post'), wfView::create('scanner/issue-control-ignore', array('ignoreP' => __('Always Ignore', 'wordfence'), 'ignoreC' => __('Ignore Only this Title', 'wordfence'))), wfView::create('scanner/issue-control-show-details')),
	'detailPairs' => array(
		__('Title', 'wordfence') => '<strong class="wfWarn">${data.postTitle}</strong>',
		__('Posted on', 'wordfence') => '${data.postDate}',
		null,
		__('Details', 'wordfence') => '{{html longMsg}}',
		null,
		__('Multisite Blog ID', 'wordfence') => array('data.isMultisite', '${data.blog_id}'),
		__('Multisite Blog Domain', 'wordfence') => array('data.isMultisite', '${data.domain}'),
		__('Multisite Blog Path', 'wordfence') => array('data.isMultisite', '${data.path}'),
	),
	'detailControls' => array(
		'<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-issue-control-mark-fixed" role="button">' . __('Mark as Fixed', 'wordfence') . '</a>',
	),
	'textOutput' => (isset($textOutput) ? $textOutput : null),
	'textOutputDetailPairs' => array(
		__('Title', 'wordfence') => '$data.postTitle',
		__('Posted on', 'wordfence') => '$data.postDate',
		null,
		__('Details', 'wordfence') => '$longMsg',
		null,
		__('Multisite Blog ID', 'wordfence') => array('$data.isMultisite', '$data.blog_id'),
		__('Multisite Blog Domain', 'wordfence') => array('$data.isMultisite', '$data.domain'),
		__('Multisite Blog Path', 'wordfence') => array('$data.isMultisite', '$data.path'),
	),
))->render();views/scanner/issue-wafStatus.php000064400000003700150755146450013166 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents an issue template.
 */
echo wfView::create('scanner/issue-base', array(
	'internalType' => 'wafStatus',
	'displayType' => __('WAF Status', 'wordfence'),
	'iconSVG' => '<svg viewBox="0 0 116.8 91.77"><path d="M112.17,35.72A57.35,57.35,0,0,0,81.08,4.63a57.88,57.88,0,0,0-45.36,0A57.38,57.38,0,0,0,4.63,35.72,58.26,58.26,0,0,0,9.19,89.88a4,4,0,0,0,3.52,1.89h91.38a4,4,0,0,0,3.52-1.89,58.25,58.25,0,0,0,4.56-54.16ZM52.5,10.79a8.34,8.34,0,0,1,14.24,5.9,8,8,0,0,1-2.44,5.9,8.34,8.34,0,0,1-11.8,0,8,8,0,0,1-2.44-5.9,8,8,0,0,1,2.44-5.9ZM22.59,64.3a8,8,0,0,1-5.9,2.45,8,8,0,0,1-5.9-2.45,8.34,8.34,0,0,1,0-11.8,8,8,0,0,1,5.9-2.45,8,8,0,0,1,5.9,2.45,8.35,8.35,0,0,1,0,11.8ZM35.1,35.1a8.34,8.34,0,0,1-11.8,0,8.34,8.34,0,0,1,0-11.8,8.35,8.35,0,0,1,11.8,0,8.34,8.34,0,0,1,0,11.8ZM72,35.65l-6.59,24.9a12.39,12.39,0,0,1,4.7,5.93,12.54,12.54,0,0,1-5.41,15.25A12.2,12.2,0,0,1,55.21,83a12,12,0,0,1-7.63-5.8,12.49,12.49,0,0,1,2.8-15.94,12.42,12.42,0,0,1,7-2.84l6.59-24.9a4.1,4.1,0,0,1,2-2.57A3.88,3.88,0,0,1,69,30.57a4.27,4.27,0,0,1,3,5.08Zm9.68-.56a8.34,8.34,0,0,1,0-11.8,8.34,8.34,0,0,1,14.24,5.9A8.34,8.34,0,0,1,81.7,35.1ZM106,64.3a8.34,8.34,0,1,1-11.8-11.8A8.34,8.34,0,1,1,106,64.3Zm0,0"/></svg>',
	'summaryControls' => array(wfView::create('scanner/issue-control-ignore', array('ignoreP' => __('Ignore', 'wordfence'))), wfView::create('scanner/issue-control-show-details')),
	'detailPairs' => array(
		__('Status', 'wordfence') => '${data.wafStatusDisplay}',
		null,
		__('Details', 'wordfence') => '{{html longMsg}}',
	),
	'detailControls' => array(
		'<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-issue-control-mark-fixed" role="button">' . __('Mark as Fixed', 'wordfence') . '</a>',
	),
	'textOutput' => (isset($textOutput) ? $textOutput : null),
	'textOutputDetailPairs' => array(
		__('Status', 'wordfence') => '$data.wafStatusDisplay',
		null,
		__('Details', 'wordfence') => '$longMsg',
	),
))->render();views/scanner/issue-database.php000064400000004167150755146450012761 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents an issue template.
 */
echo wfView::create('scanner/issue-base', array(
	'internalType' => 'database',
	'displayType' => __('Option', 'wordfence'),
	'iconSVG' => '<svg viewBox="0 0 20 20"><g><path d="M18 16V4c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h13c.55 0 1-.45 1-1zM8 11h1c.55 0 1 .45 1 1s-.45 1-1 1H8v1.5c0 .28-.22.5-.5.5s-.5-.22-.5-.5V13H6c-.55 0-1-.45-1-1s.45-1 1-1h1V5.5c0-.28.22-.5.5-.5s.5.22.5.5V11zm5-2h-1c-.55 0-1-.45-1-1s.45-1 1-1h1V5.5c0-.28.22-.5.5-.5s.5.22.5.5V7h1c.55 0 1 .45 1 1s-.45 1-1 1h-1v5.5c0 .28-.22.5-.5.5s-.5-.22-.5-.5V9z"/></g></svg>',
	'summaryControls' => array(wfView::create('scanner/issue-control-ignore', array('ignoreC' => __('Ignore Value', 'wordfence'), 'ignoreP' => __('Ignore Option', 'wordfence'))), wfView::create('scanner/issue-control-show-details')),
	'detailPairs' => array(
		__('Option Name', 'wordfence') => '${data.option_name}',
		__('Bad URL', 'wordfence') => array('(typeof data.badURL !== \'undefined\') && data.badURL', '<strong class="wfWarn wf-split-word">${data.badURL}</strong>'),
		null,
		__('Details', 'wordfence') => '{{html longMsg}}',
	),
	'detailControls' => array(
		'{{if data.optionExists}}<a href="${WFAD.makeViewOptionLink(data.option_name, data.site_id)}" class="wf-btn wf-btn-default wf-btn-callout-subtle" target="_blank">' . __('View Option', 'wordfence') . '<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>{{/if}}',
		'{{if data.canDelete}}<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle" onclick="WFAD.deleteDatabaseOption(\'${id}\'); return false;" role="button">' . __('Delete Option', 'wordfence') . '</a>{{/if}}',
		'<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-issue-control-mark-fixed" role="button">' . __('Mark as Fixed', 'wordfence') . '</a>',
	),
	'textOutput' => (isset($textOutput) ? $textOutput : null),
	'textOutputDetailPairs' => array(
		__('Option Name', 'wordfence') => '$data.option_name',
		__('Bad URL', 'wordfence') => '$data.badURL',
		null,
		__('Details', 'wordfence') => '$longMsg',
	),
))->render();views/scanner/issue-commentBadURL.php000064400000006140150755146450013642 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents an issue template.
 */
echo wfView::create('scanner/issue-base', array(
	'internalType' => 'commentBadURL',
	'displayType' => __('URL', 'wordfence'),
	'iconSVG' => '<svg viewBox="0 0 106.37 106.37"><path d="M100.89,64.92,87.34,51.36a18.89,18.89,0,0,0-26.85.26l-5.74-5.73a18.34,18.34,0,0,0,5.74-13.62A18,18,0,0,0,55.07,19L41.65,5.54A17.86,17.86,0,0,0,28.35,0,18,18,0,0,0,15.12,5.41L5.54,14.93A17.79,17.79,0,0,0,0,28.16a18.09,18.09,0,0,0,5.48,13.3L19,55a18.12,18.12,0,0,0,13.3,5.48,18.27,18.27,0,0,0,13.56-5.74l5.73,5.74a18.32,18.32,0,0,0-5.73,13.62A18,18,0,0,0,51.3,87.34l13.43,13.49a18.81,18.81,0,0,0,26.53.13l9.58-9.52a17.79,17.79,0,0,0,5.54-13.23,18.1,18.1,0,0,0-5.48-13.3ZM45.89,37l-1.21-1.24c-.67-.7-1.14-1.16-1.4-1.4s-.68-.56-1.24-1a5.26,5.26,0,0,0-1.66-.85,6.64,6.64,0,0,0-1.79-.23,6.24,6.24,0,0,0-6.26,6.26,6.6,6.6,0,0,0,.23,1.79A5.19,5.19,0,0,0,33.41,42a14.48,14.48,0,0,0,1,1.24c.24.26.71.73,1.4,1.4L37,45.89a6.3,6.3,0,0,1-4.7,2,6,6,0,0,1-4.43-1.76L14.34,32.59a6,6,0,0,1-1.82-4.43,5.94,5.94,0,0,1,1.82-4.36l9.58-9.52a6.3,6.3,0,0,1,4.43-1.76,6,6,0,0,1,4.43,1.83L46.21,27.83A6,6,0,0,1,48,32.26,6.33,6.33,0,0,1,45.89,37ZM92,82.58,82.45,92.1A6.28,6.28,0,0,1,78,93.79,6,6,0,0,1,73.59,92L60.16,78.54a6,6,0,0,1-1.82-4.43,6.33,6.33,0,0,1,2.15-4.76l1.21,1.24c.67.69,1.14,1.16,1.4,1.4a15,15,0,0,0,1.24,1,5.18,5.18,0,0,0,1.66.85,6.6,6.6,0,0,0,1.79.23A6.23,6.23,0,0,0,74,67.79,6.76,6.76,0,0,0,73.82,66,5.34,5.34,0,0,0,73,64.33c-.41-.56-.74-1-1-1.24s-.71-.73-1.4-1.4l-1.24-1.2A6.2,6.2,0,0,1,74,58.4a6,6,0,0,1,4.43,1.82L92,73.78a6,6,0,0,1,1.83,4.43A6,6,0,0,1,92,82.58Zm0,0"/></svg>',
	'summaryControls' => array(wfView::create('scanner/issue-control-edit-comment'), wfView::create('scanner/issue-control-ignore'), wfView::create('scanner/issue-control-show-details')),
	'detailPairs' => array(
		__('Author', 'wordfence') => '${data.author}',
		__('Bad URL', 'wordfence') => '<strong class="wfWarn wf-split-word">${data.badURL}</strong>',
		__('Posted on', 'wordfence') => '${data.commentDate}',
		null,
		__('Details', 'wordfence') => '{{html longMsg}}',
		null,
		__('Multisite Blog ID', 'wordfence') => array('data.isMultisite', '${data.blog_id}'),
		__('Multisite Blog Domain', 'wordfence') => array('data.isMultisite', '${data.domain}'),
		__('Multisite Blog Path', 'wordfence') => array('data.isMultisite', '${data.path}'),
	),
	'detailControls' => array(
		'<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-issue-control-mark-fixed" role="button">' . __('Mark as Fixed', 'wordfence') . '</a>',
	),
	'textOutput' => (isset($textOutput) ? $textOutput : null),
	'textOutputDetailPairs' => array(
		__('Author', 'wordfence') => '$data.author',
		__('Bad URL', 'wordfence') => '$data.badURL',
		__('Posted on', 'wordfence') => '$data.commentDate',
		null,
		__('Details', 'wordfence') => '$longMsg',
		null,
		__('Multisite Blog ID', 'wordfence') => array('$data.isMultisite', '$data.blog_id'),
		__('Multisite Blog Domain', 'wordfence') => array('$data.isMultisite', '$data.domain'),
		__('Multisite Blog Path', 'wordfence') => array('$data.isMultisite', '$data.path'),
	),
))->render();views/scanner/issue-file.php000064400000006446150755146450012136 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents an issue template.
 */
echo wfView::create('scanner/issue-base', array(
	'internalType' => 'file',
	'displayType' => __('File', 'wordfence'),
	'iconSVG' => '<svg viewBox="0 0 46 55" ><path d="M43.557,13.609l-11.214,-11.175c-1.303,-1.246 -2.962,-2.058 -4.747,-2.324l0,18.223l18.294,0c-0.269,-1.777 -1.084,-3.427 -2.333,-4.724l0,0Z" fill="#9e9e9e"/><path d="M26.465,22.921c-0.005,0 -0.011,0 -0.016,0c-1.885,0 -3.435,-1.545 -3.435,-3.423c0,-0.005 0,-0.011 0,-0.016l0,-19.482l-19.562,0c-0.921,-0.019 -1.809,0.346 -2.449,1.005c-0.658,0.637 -1.022,1.52 -1.003,2.434l0,48.127c-0.019,0.915 0.345,1.797 1.003,2.434c0.639,0.658 1.524,1.023 2.443,1.005l39.102,0c0.004,0.001 0.008,0.001 0.012,0.001c1.884,0 3.435,-1.546 3.435,-3.423c0,-0.006 0,-0.011 -0.001,-0.017l0,-28.645l-19.529,0Z" fill="#9e9e9e"/></svg>',
	'summaryControls' => array(wfView::create('scanner/issue-control-repair'), wfView::create('scanner/issue-control-ignore', array('ignoreP' => __('Always Ignore', 'wordfence'), 'ignoreC' => __('Ignore Until File Changes', 'wordfence'))), wfView::create('scanner/issue-control-show-details')),
	'detailPairs' => array(
		__('Filename', 'wordfence') => '<span class="wf-split-word-xs">${data.realFile}</span>',
		__('File Type', 'wordfence') => '{{if data.cType}}${WFAD.ucfirst(data.cType)}{{else data.wpconfig}}' . __('WordPress Configuration File', 'wordfence') . '{{else}}' . __('Not a core, theme, or plugin file from wordpress.org', 'wordfence') . '.{{/if}}',
		__('Bad URL', 'wordfence') => array('(typeof data.badURL !== \'undefined\') && data.badURL', '${data.badURL}'),
		null,
		__('Details', 'wordfence') => '{{html longMsg}}<br><br>{{if data.wpconfig}}<strong>' . esc_html__('This is your main configuration file and cannot be deleted. It must be cleaned manually.', 'wordfence') . '</strong>{{/if}}',
	),
	'detailControls' => array(
		'{{if data.fileExists}}<a target="_blank" class="wf-btn wf-btn-default wf-btn-callout-subtle" rel="noopener noreferrer" href="${WFAD.makeViewFileLink(data)}">' . __('View File', 'wordfence') . '<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>{{/if}}',
		'{{if data.canDiff}}<a target="_blank" class="wf-btn wf-btn-default wf-btn-callout-subtle" rel="noopener noreferrer" href="${WFAD.makeDiffLink(data)}">' . __('View Differences', 'wordfence') . '<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>{{/if}}',
		'{{if data.canDelete}}<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-issue-control-delete-file" role="button">' . __('Delete File', 'wordfence') . '</a>{{/if}}',
		'<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-issue-control-mark-fixed" role="button">' . __('Mark as Fixed', 'wordfence') . '</a>',
	),
	'textOutput' => (isset($textOutput) ? $textOutput : null),
	'textOutputDetailPairs' => array(
		__('Filename', 'wordfence') => '$data.realFile',
		__('File Type', 'wordfence') => '$data.ucType',
		__('File Type', 'wordfence') => '$data.wpconfig',
		__('File Type', 'wordfence') => array(array('!$data.ucType', '!$data.wpconfig'), 'Not a core, theme, or plugin file from wordpress.org'),
		__('Bad URL', 'wordfence') => '$data.badURL',
		null,
		__('Details', 'wordfence') => '$longMsg',
	),
))->render();views/scanner/site-cleaning.php000064400000022170150755146450012603 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Displays the Site Cleaning prompt.
 */
?>
<script type="text/x-jquery-template" id="siteCleaningTmpl">
	<ul class="wf-issue-site-cleaning">
		<li class="wf-issue-summary">
			<ul>
				<li class="wf-issue-icon-colored"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 140.65 149.02"><defs><style>.a{fill:none;}.b{fill:#2d2d2d;}.c{fill:#525455;}.d{clip-path:url(#a);}.e{fill:#fcb316;}.f{fill:#fed10c;}</style><clipPath id="a" transform="translate(0)"><rect class="a" y="0.03" width="139.84" height="149.01"/></clipPath></defs><title>Site Cleaning</title><path class="b" d="M105.39,109.26l-1.28.72,1.13-.94Zm.43-1.68-1.25-.92,1.07,1.12Zm2.45-3-1.45,2.68.24.12Zm-.9,3.33,3.42-.53-3.45.27Zm-1.31.59c.35,2.61,3.43,4.65,2.38,7.42a7.71,7.71,0,0,1-1.58,2.14l-1.14-.88-1.1,1.43a9.68,9.68,0,1,0,3.12,2.46l1.13-1.46-1.36-1.05.3-.35a6.2,6.2,0,0,0,1.6-2.69c.7-2.71-2.21-4.58-2.54-7.07C106.8,108,106,108,106.07,108.52Z" transform="translate(0)"/><path class="c" d="M100.32,137.15a9.87,9.87,0,1,1,4.26-18.77l1.12-1.46,1.15.89.29-.33a5.2,5.2,0,0,0,1.13-1.61c.59-1.57-.21-2.89-1.07-4.29a8.12,8.12,0,0,1-1.33-3h0a.54.54,0,0,1,.49-.62.6.6,0,0,1,.7.52,7.45,7.45,0,0,0,1.29,2.83c.83,1.31,1.68,2.66,1.25,4.32a6.41,6.41,0,0,1-1.64,2.77l-.16.18,1.36,1L108,121.08a9.87,9.87,0,0,1-7,16Zm0-19.35-.68,0a9.48,9.48,0,1,0,8,3.38l-.1-.12,1.11-1.43-1.37-1.05.12-.15c.09-.12.2-.24.31-.36a6.06,6.06,0,0,0,1.55-2.61c.39-1.5-.38-2.72-1.2-4a7.71,7.71,0,0,1-1.34-3,.22.22,0,0,0-.26-.18.16.16,0,0,0-.15.19,7.87,7.87,0,0,0,1.28,2.89c.86,1.42,1.75,2.88,1.1,4.63a5.58,5.58,0,0,1-1.21,1.74l-.41.46-.12.14-1.13-.87-1.08,1.4-.14-.07A9.49,9.49,0,0,0,100.32,117.81Zm3.88-7.66-.22-.32,1.29-1.08.39.57Zm3-2-.06-.5-.6-.29,1.55-2.85.35.17-1.22,2.81,3.55-.28,0,.38Zm-1.56-.09-1.22-1.28.25-.29,1.42,1Z" transform="translate(0)"/><path class="b" d="M136.76,95.75,133,99.36a9.84,9.84,0,0,0-7.74-.79l-.29-1a1.83,1.83,0,1,0-3.52,1l.51,1.75-.11.1L119.4,97.9a1.83,1.83,0,0,0-2.65,2.53l2.74,2.87a9.83,9.83,0,0,0-1,2.72l-4.17-.1a1.83,1.83,0,0,0-.08,3.66l4.18.1a9.82,9.82,0,0,0,.89,2.74l-.3.28a1.83,1.83,0,0,0,2.52,2.65,9.86,9.86,0,0,0,5.46,2.51l1.24,4.31a1.83,1.83,0,1,0,3.52-1l-1-3.56a9.83,9.83,0,0,0,1.79-.67l1.18,1.24a1.83,1.83,0,1,0,2.65-2.53l-.87-.92a9.86,9.86,0,0,0,2.39-4.6l.91,0a1.83,1.83,0,1,0,.08-3.66l-.9,0a9.86,9.86,0,0,0-2.15-4.75l3.47-3.32a1.83,1.83,0,0,0-2.53-2.65Zm-4.29,10.59a4.6,4.6,0,0,1-4.07,6.29h-.32a4.58,4.58,0,0,1-2.7-1l-.23-.18a4.62,4.62,0,0,1-1.22-1.69,4.57,4.57,0,0,1-.35-1.48c0-.13,0-.27,0-.41s0-.21,0-.32a4.62,4.62,0,0,1,4.69-4.18l.4,0a4.65,4.65,0,0,1,3.78,2.89Z" transform="translate(0)"/><g class="d"><path class="e" d="M130.25,2.76,95.39,70.35l.6.18a26,26,0,0,1,4.14,1.73,21.92,21.92,0,0,1,4.23,2.89L139.29,7.42a5.09,5.09,0,0,0-9-4.66Zm0,0" transform="translate(0)"/><path class="e" d="M15.07,128.11A79,79,0,0,0,35.3,141.06,105.25,105.25,0,0,0,60.8,149h0a3.36,3.36,0,0,0,.47,0h.11c14-.46,24.91-5.12,32.43-13.86,9.89-11.49,13.46-28.77,12.77-43.62a18.16,18.16,0,0,0-4.69-11.69c-.22-.23-.45-.46-.69-.67a16.71,16.71,0,0,0-3.45-2.4,20.79,20.79,0,0,0-3.37-1.41A11.3,11.3,0,0,0,91,74.83c-4.91,0-9.61,3.08-13.21,6.23s-7.48,6.8-11.67,9.58c-4.6,3-9.64,4.58-14.89,6.07a127.82,127.82,0,0,1-20.77,4,169.19,169.19,0,0,1-18.84,1.11q-3.75,0-7.48-.2l-.43,0H3.45a3.46,3.46,0,0,0-3.27,4.58,52.56,52.56,0,0,0,14.88,22Zm-4.84-19.45h1.09a180.24,180.24,0,0,0,20.13-1.13c16.83-1.92,30.55-6,40.94-12.2a1.87,1.87,0,0,1,1-.26,1.9,1.9,0,0,1,.91.23c6,3.32,15.42,8.23,22.11,10.62a1.89,1.89,0,0,1,1.24,2c-.8,7-3.06,15.86-9,22.77-6.1,7.07-15.1,10.9-26.78,11.4H61.7a2.53,2.53,0,0,1-.45,0c-1.18-.21-4.08-.77-8-1.84,1.11-.49,2.26-1.08,3.42-1.73s2.09-1.23,3.12-1.9c3.21-2.07,6.32-4.42,8.73-6.35a.61.61,0,0,0-.63-1,83.68,83.68,0,0,1-18.08,4.68c-1.9.31-3.73.56-5.42.77-2,.25-3.77.44-5.26.58L38,134.7a81.9,81.9,0,0,1-9.4-5,37.24,37.24,0,0,0,3.94-.6c1.23-.25,2.47-.55,3.69-.88a96.5,96.5,0,0,0,9.35-3.12.41.41,0,0,0-.19-.79c-4.25.41-10.15.45-15.19.37-1.65,0-3.21-.06-4.58-.1-1.81-.05-3.31-.11-4.29-.15q-.87-.72-1.69-1.47-1.07-1-2.06-2c1-.1,2.09-.27,3.16-.47s2-.42,3-.68a93.34,93.34,0,0,0,10.52-3.42.41.41,0,0,0-.19-.79c-4,.38-9.44.44-14.26.39l-3.42-.06-3.31-.09A44.75,44.75,0,0,1,9.41,110a.93.93,0,0,1,.82-1.36Zm0,0" transform="translate(0)"/></g><path class="f" d="M9.24,108.65h1.1a184.19,184.19,0,0,0,20.42-1.14c17.07-1.93,31-6,41.52-12.28a1.91,1.91,0,0,1,1-.26,1.93,1.93,0,0,1,.92.24c6.12,3.34,15.64,8.29,22.42,10.69a1.9,1.9,0,0,1,1.26,2c-.81,7-3.11,16-9.15,22.91-6.18,7.11-15.32,11-27.15,11.47h-.11a2.59,2.59,0,0,1-.46,0c-1.19-.21-4.14-.77-8.08-1.85,1.13-.49,2.29-1.08,3.47-1.74s2.12-1.23,3.17-1.91c3.25-2.08,6.41-4.45,8.86-6.39a.62.62,0,0,0-.63-1.05C62.4,131.54,55.55,133,49.42,134c-1.93.31-3.78.57-5.49.78-2,.25-3.82.44-5.33.59l-1.19-.53a83.27,83.27,0,0,1-9.53-5.08,38,38,0,0,0,4-.6c1.24-.25,2.5-.56,3.74-.89a98.4,98.4,0,0,0,9.48-3.14.41.41,0,0,0-.19-.8c-4.31.41-10.3.45-15.41.38-1.67,0-3.25-.06-4.65-.1-1.84-.05-3.36-.11-4.36-.15q-.88-.73-1.72-1.48-1.08-1-2.09-2c1-.1,2.11-.27,3.21-.48s2.06-.43,3.09-.68a95.18,95.18,0,0,0,10.66-3.44.41.41,0,0,0-.19-.8c-4.05.39-9.57.44-14.46.39l-3.47-.06-3.36-.09A45,45,0,0,1,8.41,110a.94.94,0,0,1,.83-1.37Z" transform="translate(0)"/><path class="f" d="M61.44,143.29a3.56,3.56,0,0,1-.63-.06c-1.11-.19-4.13-.77-8.17-1.87l-2.73-.75,2.59-1.13c1-.46,2.18-1,3.38-1.7,1-.55,2-1.18,3.12-1.88,2.12-1.36,4.38-3,6.75-4.76A93.87,93.87,0,0,1,49.58,135c-1.79.29-3.65.55-5.53.78s-3.58.42-5.36.59l-.26,0-.24-.1-1.2-.53a84.56,84.56,0,0,1-9.65-5.14L24.83,129l3-.27a36.93,36.93,0,0,0,3.9-.59c1.15-.23,2.39-.53,3.67-.87,1.94-.52,3.83-1.12,5.51-1.7-3.13.13-6.94.17-11.39.11-1.68,0-3.26-.06-4.66-.1-1.84-.05-3.37-.11-4.37-.15h-.34l-.26-.22q-.89-.74-1.75-1.5c-.7-.63-1.42-1.31-2.13-2l-1.5-1.49,2.1-.21c1-.1,2-.25,3.12-.46s2-.41,3-.67c2.35-.59,4.66-1.31,6.69-2-2.9.13-6.39.17-10.44.12l-3.48-.06-3.37-.09h-.48l-.29-.38a46.1,46.1,0,0,1-3.84-6,1.91,1.91,0,0,1,0-1.9,1.93,1.93,0,0,1,1.67-.95h1.1a184.49,184.49,0,0,0,20.31-1.13c16.88-1.91,30.72-6,41.12-12.15a3,3,0,0,1,2.88,0c6.53,3.56,15.7,8.3,22.28,10.63A2.89,2.89,0,0,1,98.85,108c-.77,6.66-3,16.13-9.39,23.45s-15.75,11.3-27.87,11.82Zm-5.66-3.18c2.63.65,4.55,1,5.38,1.15l.28,0C73.06,140.8,82,137.06,88,130.16s8.17-16,8.91-22.37a.9.9,0,0,0-.6-1c-6.7-2.37-16-7.16-22.57-10.75a1,1,0,0,0-.91,0C62.14,102.4,48,106.57,30.88,108.51a186.66,186.66,0,0,1-20.53,1.14h-1a49.4,49.4,0,0,0,3.38,5.22l2.87.07L19,115c6.14.07,11-.06,14.35-.38a1.41,1.41,0,0,1,.64,2.72,95.67,95.67,0,0,1-10.78,3.48c-1.08.27-2.13.5-3.14.7l-1.21.21.57.52q.7.63,1.43,1.24l4,.14c1.39,0,3,.08,4.64.1a150.22,150.22,0,0,0,15.3-.37,1.41,1.41,0,0,1,.65,2.72,99.72,99.72,0,0,1-9.58,3.17c-1.33.36-2.6.66-3.8.9l-1.23.23c2.21,1.26,4.54,2.45,7,3.56l.94.42c1.68-.16,3.37-.35,5-.56,1.85-.23,3.69-.49,5.46-.77a82.57,82.57,0,0,0,18.11-4.64A1.62,1.62,0,0,1,69,131.14a109.57,109.57,0,0,1-8.94,6.45c-1.12.72-2.2,1.37-3.22,1.94ZM9.24,108.65v1h0Z" transform="translate(0)"/><path class="b" d="M126.45,127.44c-1.95-2.46-6.17-2.35-9.44.24s-4.34,6.67-2.39,9.13a5.18,5.18,0,0,0,4.58,1.75,2.47,2.47,0,0,0,3,1.09,1.33,1.33,0,0,0,1.83.18l3.22-2.55a1.33,1.33,0,0,0,.25-1.82,2.48,2.48,0,0,0-.38-3.16A5.18,5.18,0,0,0,126.45,127.44Zm-6.58,9.14a2.75,2.75,0,1,1,.45-3.86A2.75,2.75,0,0,1,119.87,136.57Zm4.68-.53c-.12.19-.5.17-.91,0,.08.45,0,.82-.2.89s-.63-.31-.83-.89-.15-1.06.08-1.19.68-.11,1.18.2S124.7,135.81,124.55,136Zm.48-3.56a2.75,2.75,0,1,1,.45-3.86A2.75,2.75,0,0,1,125,132.49Z" transform="translate(0)"/><path class="b" d="M132,138.94a1.34,1.34,0,0,0,.13.31l-4.54,1.21-.51.14-4.54,1.21a1.34,1.34,0,1,0-1.66,1.32,1.21,1.21,0,1,0,2.19.34v0l4.46-1.18.51-.14,4.46-1.18v0a1.21,1.21,0,1,0,1.73-1.38,1.34,1.34,0,1,0-2.22-.63Z" transform="translate(0)"/><path class="b" d="M124.54,144.87a1.34,1.34,0,0,1,.27.19l2.21-4.15.25-.47,2.21-4.15a1.34,1.34,0,1,1,1.66-1.31,1.21,1.21,0,1,1-.17,2.21h0l-2.17,4.07-.25.47-2.17,4.07h0a1.21,1.21,0,1,1-1.74,1.37,1.34,1.34,0,1,1-.1-2.3Z" transform="translate(0)"/></svg></li>
				<li class="wf-issue-short">
					<p><strong><?php esc_html_e('Need help with a security issue?', 'wordfence'); ?></strong></p>
					<?php if (wfLicense::current()->isBelowCare()): ?>
						<p><?php esc_html_e('Sign up for Wordfence Care and we’ll take care of it. Our security experts will clean your site, resolve the infection, and perform a security audit. Get hands-on support with any security issue including help installing, configuring and optimizing Wordfence.', 'wordfence'); ?></p>
					<?php endif ?>
				</li>
				<?php if (wfLicense::current()->isAtLeastCare()): ?>
					<li class="wf-issue-controls"><a class="wf-btn wf-btn-primary wf-btn-callout-subtle" href="<?php echo esc_attr(wfLicense::current()->getSupportUrl('scanGetHelp')) ?>" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Get Help', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></li>
				<?php else: ?>
					<li class="wf-issue-controls"><a class="wf-btn wf-btn-primary wf-btn-callout-subtle" href="https://www.wordfence.com/gnl1scanGetHelp/products/wordfence-care/" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Learn More About Wordfence Care', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></li>
				<?php endif ?>
			</ul>
		</li>
	</ul>
</script>views/scanner/issue-base.php000064400000020767150755146450012133 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Shared parent view of all scan issues.
 * 
 * Expects $internalType, $displayType, $iconSVG, and $controls.
 * 
 * @var string $internalType The internal issue type used to select the correct template.
 * @var string $displayType A human-readable string for displaying the issue type.
 * @var string $iconSVG The SVG HTML for the issue's icon.
 * @var array $summaryControls An array of summary controls for the issue type.
 * @var array $detailPairs An array of label/value pairs for the issue's detail data. If the entry should only be conditionally shown, the value may be an array of the format array(conditional, displayValue).
 * @var array $detailControls An array of detail controls for the issue type.
 * @var array $textOutput If provided, used the content of the array to output plain text rather than the HTML template.
 * @var array $textOutputDetailPairs An array of label/value pairs for the issue's detail data if outputting via text. If the entry should only be conditionally shown, the value may be an array of the format array(conditional, displayValue) where conditional is one or more keypaths that must all be truthy. It is preprocessed lightly for output: all values prefixed with $ will be treated as keypaths in the $textOutput array. If that is prefixed with ! for the conditional, its value will be inverted.
 */

if (!isset($textOutput) || !is_array($textOutput)):
?>
<script type="text/x-jquery-template" id="issueTmpl_<?php echo $internalType; ?>">
<ul class="wf-issue wf-issue-<?php echo $internalType; ?>
	{{if severity == <?php echo wfIssues::SEVERITY_CRITICAL ?>}}wf-issue-severity-critical{{/if}}
	{{if severity == <?php echo wfIssues::SEVERITY_HIGH ?>}}wf-issue-severity-high{{/if}}
	{{if severity == <?php echo wfIssues::SEVERITY_MEDIUM ?>}}wf-issue-severity-medium{{/if}}
	{{if severity == <?php echo wfIssues::SEVERITY_LOW ?>}}wf-issue-severity-low{{/if}}" data-issue-id="${id}" data-issue-type="<?php echo $internalType; ?>" data-issue-severity="${severity}" data-high-sensitivity="{{if (data.highSense == '1')}}1{{else}}0{{/if}}">
	<li class="wf-issue-summary">
		<ul>
			<li class="wf-issue-icon"><?php echo $iconSVG; ?></li>
			<li class="wf-issue-short wf-hidden-xs"><div class="wf-issue-message">${shortMsg}</div><div class="wf-issue-type"><?php echo __('Type:', 'wordfence') . ' ' . $displayType; ?></div></li>
			<li class="wf-issue-stats wf-hidden-xs">
				<div class="wf-issue-time"><?php esc_html_e('Issue Found ', 'wordfence'); ?> ${displayTime}</div>
				{{if severity == <?php echo wfIssues::SEVERITY_CRITICAL ?>}}<div class="wf-issue-severity-critical"><?php echo esc_html__('Critical', 'wordfence'); ?></div>{{/if}}
				{{if severity == <?php echo wfIssues::SEVERITY_HIGH ?>}}<div class="wf-issue-severity-high"><?php echo esc_html__('High', 'wordfence'); ?></div>{{/if}}
				{{if severity == <?php echo wfIssues::SEVERITY_MEDIUM ?>}}<div class="wf-issue-severity-medium"><?php echo esc_html__('Medium', 'wordfence'); ?></div>{{/if}}
				{{if severity == <?php echo wfIssues::SEVERITY_LOW ?>}}<div class="wf-issue-severity-low"><?php echo esc_html__('Low', 'wordfence'); ?></div>{{/if}}
			</li>
			<li class="wf-issue-short-stats wf-hidden-sm wf-hidden-md wf-hidden-lg">
				<div class="wf-issue-message wf-split-word-xs">${shortMsg}</div>
				<div class="wf-issue-type"><?php echo esc_html__('Type:', 'wordfence') . ' ' . $displayType; ?></div>
				<div class="wf-issue-time"><?php esc_html_e('Found ', 'wordfence'); ?> ${displayTime}</div>
				{{if severity == <?php echo wfIssues::SEVERITY_CRITICAL ?>}}<div class="wf-issue-severity-critical"><?php echo esc_html__('Critical', 'wordfence'); ?></div>{{/if}}
				{{if severity == <?php echo wfIssues::SEVERITY_HIGH ?>}}<div class="wf-issue-severity-high"><?php echo esc_html__('High', 'wordfence'); ?></div>{{/if}}
				{{if severity == <?php echo wfIssues::SEVERITY_MEDIUM ?>}}<div class="wf-issue-severity-medium"><?php echo esc_html__('Medium', 'wordfence'); ?></div>{{/if}}
				{{if severity == <?php echo wfIssues::SEVERITY_LOW ?>}}<div class="wf-issue-severity-low"><?php echo esc_html__('Low', 'wordfence'); ?></div>{{/if}}
				<div class="wf-issue-controls"><?php echo implode("\n", $summaryControls); ?></div>
			</li>
			<li class="wf-issue-controls wf-hidden-xs"><?php echo implode("\n", $summaryControls); ?></li>
		</ul>
	</li>
	<li class="wf-issue-detail">
		<ul>
			<!--<li><strong><?php esc_html_e('Status', 'wordfence'); ?>: </strong>{{if status == 'new' }}<?php esc_html_e('New', 'wordfence'); ?>{{/if}}{{if status == 'ignoreP' || status == 'ignoreC' }}<?php esc_html_e('Ignored', 'wordfence'); ?>{{/if}}</li>
			<li><strong><?php esc_html_e('Issue First Detected', 'wordfence'); ?>: </strong>${timeAgo} <?php esc_html_e('ago', 'wordfence'); ?>.</li>-->
		<?php
		foreach ($detailPairs as $label => $value):
			if ($value === null) {
				echo '<li class="wf-issue-detail-spacer"></li>';
				continue;
			}
			
			unset($conditional);
			if (is_array($value)) {
				$conditional = $value[0];
				$value = $value[1];
			}
			
			if (isset($conditional)) { echo '{{if (' . $conditional . ')}}'; }
		?>
			<li><strong><?php echo esc_html($label); ?>: </strong><?php echo wp_kses($value, array(
				'a' => array(
					'href'=>array(),
					'target'=>array(),
					'rel'=>array(),
					'class'=>array()
				),
				'strong' => array(
					'class'=>array()
				),
				'br' => array(
				),
				'span' => array(
					'class'=>array(),
					'data-tooltip'=>array(),
					'title'=>array(),
				)
			)); ?></li>
		<?php
			if (isset($conditional)) { echo '{{/if}}'; }
		endforeach;
		?>
		<?php if (count($detailControls)): ?>
			<li class="wf-issue-detail-controls"><?php echo implode("\n", $detailControls); ?></li>
		<?php endif; ?>
		</ul>
	</li>
</ul>
</script>
<?php else: ?>
<?php
echo '[' . $displayType . ($textOutput['status'] == 'ignoreP' || $textOutput['status'] == 'ignoreP' ? ', ' . __('Ignored', 'wordfence') : '') . ']' . "\n";
echo $textOutput['shortMsg'] . "\n";
echo sprintf(/* translators: Localized date. */ __('Issue Found: %s', 'wordfence'), $textOutput['displayTime']) . "\n";
$severity = null;
switch ($textOutput['severity']) {
	case wfIssues::SEVERITY_CRITICAL:
		$severity = __('Critical', 'wordfence');
		break;
	case wfIssues::SEVERITY_HIGH:
		$severity = __('High', 'wordfence');
		break;
	case wfIssues::SEVERITY_MEDIUM:
		$severity = __('Medium', 'wordfence');
		break;
	case wfIssues::SEVERITY_LOW:
		$severity = __('Low', 'wordfence');
		break;
	default:
		$severity = __('None', 'wordfence');
		break;
}
if ($severity) {
	echo sprintf(/* translators: Severity level. */ __('Severity: %s', 'wordfence'), $severity) . "\n";
}

foreach ($textOutputDetailPairs as $label => $value) {
	if ($value === null) {
		echo "\n";
		continue;
	}
	
	unset($conditional);
	if (is_array($value)) {
		$conditional = $value[0];
		if (!is_array($conditional)) {
			$conditional = array($conditional);
		}
		$value = $value[1];
	}
	
	$allow = true;
	if (isset($conditional)) {
		foreach ($conditional as $test) {
			if (!$allow) {
				break;
			}
			
			if (preg_match('/^!?\$(\S+)/', $test, $matches)) {
				$invert = (strpos($test, '!') === 0);
				$components = explode('.', $matches[1]);
				$tier = $textOutput;
				foreach ($components as $index => $c) {
					if (is_array($tier) && !isset($tier[$c])) {
						if (!$invert) {
							$allow = false;
						}
						break;
					}
					
					if ($index == count($components) - 1 && is_array($tier)) {
						if ((!$tier[$c] && !$invert) || ($tier[$c] && $invert)) {
							$allow = false;
						}
						break;
					}
					else if (!is_array($tier)) {
						$allow = false;
						break;
					}
					
					$tier = $tier[$c];
				}
			}
		}
	}
	
	if (!$allow) {
		continue;
	}
	
	if (preg_match_all('/(?<=^|\s)\$(\S+)(?=$|\s)/', $value, $matches, PREG_OFFSET_CAPTURE)) {
		array_shift($matches);
		$matches = $matches[0];
		$matches = array_reverse($matches);
		foreach ($matches as $m) {
			$resolvedKeyPath = '';
			$components = explode('.', $m[0]);
			$tier = $textOutput;
			foreach ($components as $index => $c) {
				if (is_array($tier) && !isset($tier[$c])) {
					$allow = false;
					break 2;
				}
				
				if ($index == count($components) - 1 && is_array($tier)) {
					$resolvedKeyPath = (string) $tier[$c];
					break;
				}
				else if (!is_array($tier)) {
					$allow = false;
					break 2;
				}
				
				$tier = $tier[$c];
			}
			
			$value = substr($value, 0, $m[1] - 1) . strip_tags($resolvedKeyPath) . substr($value, $m[1] + strlen($m[0]));
		}
	}
	
	if (!$allow) {
		continue;
	}
	
	echo $label . ': ' . $value . "\n";
}
?>
<?php endif; ?>views/scanner/site-cleaning-bottom.php000064400000004043150755146450014104 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Displays the Site Cleaning lower prompt.
 */
?>
<div id="wf-site-cleaning-bottom" class="wf-block wf-add-top-small wf-active">
	<div class="wf-block-content">
		<ul class="wf-block-list">
			<li>
				<div class="wf-flex-vertical">
					<h3 class="wf-center"><?php esc_html_e('Need help from the WordPress security experts?', 'wordfence'); ?></h3>
					<?php if (wfLicense::current()->isBelowCare()): ?>
						<p class="wf-center wf-no-top"><?php esc_html_e('Sign up for Wordfence Care today and get expert help with any security issue. Wordfence Care is for business owners who put a premium on their time. With Wordfence Care, we take care of it, so that you can focus on your customers. Check out Wordfence Response for mission-critical WordPress websites.', 'wordfence'); ?></p>
					<?php endif ?>
					<p class="wf-center wf-add-bottom">
						<?php if (wfLicense::current()->isBelowCare()): ?>
							<a class="wf-btn wf-btn-primary wf-btn-callout-subtle" href="https://www.wordfence.com/gnl1scanLowerAd/products/wordfence-care/" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Learn More About Wordfence Care', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>
							<a class="wf-btn wf-btn-primary wf-btn-callout-subtle" href="https://www.wordfence.com/gnl1scanLowerAd/products/wordfence-response/" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Learn More About Wordfence Response', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>
						<?php else: ?>
							<a class="wf-btn wf-btn-primary wf-btn-callout-subtle" href="<?php echo esc_attr(wfLicense::current()->getSupportUrl('scanLowerAd')) ?>" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Get Help', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>
						<?php endif ?>
					</p>
				</div>
			</li>
		</ul>
	</div>
</div>views/scanner/issue-wpscan_directoryList.php000064400000004342150755146450015423 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents an issue template.
 */
echo wfView::create('scanner/issue-base', array(
	'internalType' => 'wpscan_fullPathDiscl',
	'displayType' => __('Directory Listing Enabled', 'wordfence'),
	'iconSVG' => '<svg viewBox="0 0 46 55" ><path d="M43.557,13.609l-11.214,-11.175c-1.303,-1.246 -2.962,-2.058 -4.747,-2.324l0,18.223l18.294,0c-0.269,-1.777 -1.084,-3.427 -2.333,-4.724l0,0Z" fill="#9e9e9e"/><path d="M26.465,22.921c-0.005,0 -0.011,0 -0.016,0c-1.885,0 -3.435,-1.545 -3.435,-3.423c0,-0.005 0,-0.011 0,-0.016l0,-19.482l-19.562,0c-0.921,-0.019 -1.809,0.346 -2.449,1.005c-0.658,0.637 -1.022,1.52 -1.003,2.434l0,48.127c-0.019,0.915 0.345,1.797 1.003,2.434c0.639,0.658 1.524,1.023 2.443,1.005l39.102,0c0.004,0.001 0.008,0.001 0.012,0.001c1.884,0 3.435,-1.546 3.435,-3.423c0,-0.006 0,-0.011 -0.001,-0.017l0,-28.645l-19.529,0Z" fill="#9e9e9e"/></svg>',
	'summaryControls' => array(wfView::create('scanner/issue-control-ignore'), wfView::create('scanner/issue-control-show-details')),
	'detailPairs' => array(
		__('URL', 'wordfence') => '<a href="${data.url}" target="_blank" rel="noopener noreferrer">${data.url}<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>',
		null,
		__('Details', 'wordfence') => '{{html longMsg}}'
	),
	'detailControls' => array(
		'{{if data.fileExists}}<a target="_blank" class="wf-btn wf-btn-default wf-btn-callout-subtle" rel="noopener noreferrer" href="${WFAD.makeViewFileLink(data)}">' . __('View File', 'wordfence') . '<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>{{/if}}',
		'{{if data.canDelete}}<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle" onclick="WFAD.deleteFile(\'${id}\'); return false;" role="button">' . __('Delete File', 'wordfence') . '</a>{{/if}}',
		'<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle" onclick="WFAD.updateIssueStatus(\'${id}\', \'delete\'); return false;" role="button">' . __('Mark as Fixed', 'wordfence') . '</a>',
	),
	'textOutput' => (isset($textOutput) ? $textOutput : null),
	'textOutputDetailPairs' => array(
		__('URL', 'wordfence') => '$data.url',
		null,
		__('Details', 'wordfence') => '$longMsg',
	),
))->render();views/scanner/issue-publiclyAccessible.php000064400000004021150755146450015003 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents an issue template.
 */
echo wfView::create('scanner/issue-base', array(
	'internalType' => 'publiclyAccessible',
	'displayType' => __('Quarantined File', 'wordfence'),
	'iconSVG' => '<svg viewBox="0 0 20 20"><g><path d="M18 16V4c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h13c.55 0 1-.45 1-1zM8 11h1c.55 0 1 .45 1 1s-.45 1-1 1H8v1.5c0 .28-.22.5-.5.5s-.5-.22-.5-.5V13H6c-.55 0-1-.45-1-1s.45-1 1-1h1V5.5c0-.28.22-.5.5-.5s.5.22.5.5V11zm5-2h-1c-.55 0-1-.45-1-1s.45-1 1-1h1V5.5c0-.28.22-.5.5-.5s.5.22.5.5V7h1c.55 0 1 .45 1 1s-.45 1-1 1h-1v5.5c0 .28-.22.5-.5.5s-.5-.22-.5-.5V9z"/></g></svg>',
	'summaryControls' => array(wfView::create('scanner/issue-control-hide-file'), wfView::create('scanner/issue-control-ignore', array('ignoreC' => __('Ignore', 'wordfence'))), wfView::create('scanner/issue-control-show-details')),
	'detailPairs' => array(
		__('URL', 'wordfence') => '<a href="${data.url}" target="_blank" rel="noopener noreferrer">${data.url}<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>',
		null,
		__('Details', 'wordfence') => '{{html longMsg}}'
	),
	'detailControls' => array(
		'{{if data.fileExists}}<a target="_blank" class="wf-btn wf-btn-default wf-btn-callout-subtle" rel="noopener noreferrer" href="${WFAD.makeViewFileLink(data)}">' . __('View File', 'wordfence') . '<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>{{/if}}',
		'{{if data.canDelete}}<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-issue-control-delete-file" role="button">' . __('Delete File', 'wordfence') . '</a>{{/if}}',
		'<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-issue-control-mark-fixed" role="button">' . __('Mark as Fixed', 'wordfence') . '</a>',
	),
	'textOutput' => (isset($textOutput) ? $textOutput : null),
	'textOutputDetailPairs' => array(
		__('URL', 'wordfence') => '$data.url',
		null,
		__('Details', 'wordfence') => '$longMsg',
	),
))->render();views/scanner/site-cleaning-beta-sigs.php000064400000021131150755146450014453 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Displays the Site Cleaning prompt.
 */
?>
<script type="text/x-jquery-template" id="siteCleaningBetaSigsTmpl">
	<ul class="wf-issue-site-cleaning">
		<li class="wf-issue-summary">
			<ul>
				<li class="wf-issue-icon-colored"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 140.65 149.02"><defs><style>.a{fill:none;}.b{fill:#2d2d2d;}.c{fill:#525455;}.d{clip-path:url(#a);}.e{fill:#fcb316;}.f{fill:#fed10c;}</style><clipPath id="a" transform="translate(0)"><rect class="a" y="0.03" width="139.84" height="149.01"/></clipPath></defs><title>Site Cleaning</title><path class="b" d="M105.39,109.26l-1.28.72,1.13-.94Zm.43-1.68-1.25-.92,1.07,1.12Zm2.45-3-1.45,2.68.24.12Zm-.9,3.33,3.42-.53-3.45.27Zm-1.31.59c.35,2.61,3.43,4.65,2.38,7.42a7.71,7.71,0,0,1-1.58,2.14l-1.14-.88-1.1,1.43a9.68,9.68,0,1,0,3.12,2.46l1.13-1.46-1.36-1.05.3-.35a6.2,6.2,0,0,0,1.6-2.69c.7-2.71-2.21-4.58-2.54-7.07C106.8,108,106,108,106.07,108.52Z" transform="translate(0)"/><path class="c" d="M100.32,137.15a9.87,9.87,0,1,1,4.26-18.77l1.12-1.46,1.15.89.29-.33a5.2,5.2,0,0,0,1.13-1.61c.59-1.57-.21-2.89-1.07-4.29a8.12,8.12,0,0,1-1.33-3h0a.54.54,0,0,1,.49-.62.6.6,0,0,1,.7.52,7.45,7.45,0,0,0,1.29,2.83c.83,1.31,1.68,2.66,1.25,4.32a6.41,6.41,0,0,1-1.64,2.77l-.16.18,1.36,1L108,121.08a9.87,9.87,0,0,1-7,16Zm0-19.35-.68,0a9.48,9.48,0,1,0,8,3.38l-.1-.12,1.11-1.43-1.37-1.05.12-.15c.09-.12.2-.24.31-.36a6.06,6.06,0,0,0,1.55-2.61c.39-1.5-.38-2.72-1.2-4a7.71,7.71,0,0,1-1.34-3,.22.22,0,0,0-.26-.18.16.16,0,0,0-.15.19,7.87,7.87,0,0,0,1.28,2.89c.86,1.42,1.75,2.88,1.1,4.63a5.58,5.58,0,0,1-1.21,1.74l-.41.46-.12.14-1.13-.87-1.08,1.4-.14-.07A9.49,9.49,0,0,0,100.32,117.81Zm3.88-7.66-.22-.32,1.29-1.08.39.57Zm3-2-.06-.5-.6-.29,1.55-2.85.35.17-1.22,2.81,3.55-.28,0,.38Zm-1.56-.09-1.22-1.28.25-.29,1.42,1Z" transform="translate(0)"/><path class="b" d="M136.76,95.75,133,99.36a9.84,9.84,0,0,0-7.74-.79l-.29-1a1.83,1.83,0,1,0-3.52,1l.51,1.75-.11.1L119.4,97.9a1.83,1.83,0,0,0-2.65,2.53l2.74,2.87a9.83,9.83,0,0,0-1,2.72l-4.17-.1a1.83,1.83,0,0,0-.08,3.66l4.18.1a9.82,9.82,0,0,0,.89,2.74l-.3.28a1.83,1.83,0,0,0,2.52,2.65,9.86,9.86,0,0,0,5.46,2.51l1.24,4.31a1.83,1.83,0,1,0,3.52-1l-1-3.56a9.83,9.83,0,0,0,1.79-.67l1.18,1.24a1.83,1.83,0,1,0,2.65-2.53l-.87-.92a9.86,9.86,0,0,0,2.39-4.6l.91,0a1.83,1.83,0,1,0,.08-3.66l-.9,0a9.86,9.86,0,0,0-2.15-4.75l3.47-3.32a1.83,1.83,0,0,0-2.53-2.65Zm-4.29,10.59a4.6,4.6,0,0,1-4.07,6.29h-.32a4.58,4.58,0,0,1-2.7-1l-.23-.18a4.62,4.62,0,0,1-1.22-1.69,4.57,4.57,0,0,1-.35-1.48c0-.13,0-.27,0-.41s0-.21,0-.32a4.62,4.62,0,0,1,4.69-4.18l.4,0a4.65,4.65,0,0,1,3.78,2.89Z" transform="translate(0)"/><g class="d"><path class="e" d="M130.25,2.76,95.39,70.35l.6.18a26,26,0,0,1,4.14,1.73,21.92,21.92,0,0,1,4.23,2.89L139.29,7.42a5.09,5.09,0,0,0-9-4.66Zm0,0" transform="translate(0)"/><path class="e" d="M15.07,128.11A79,79,0,0,0,35.3,141.06,105.25,105.25,0,0,0,60.8,149h0a3.36,3.36,0,0,0,.47,0h.11c14-.46,24.91-5.12,32.43-13.86,9.89-11.49,13.46-28.77,12.77-43.62a18.16,18.16,0,0,0-4.69-11.69c-.22-.23-.45-.46-.69-.67a16.71,16.71,0,0,0-3.45-2.4,20.79,20.79,0,0,0-3.37-1.41A11.3,11.3,0,0,0,91,74.83c-4.91,0-9.61,3.08-13.21,6.23s-7.48,6.8-11.67,9.58c-4.6,3-9.64,4.58-14.89,6.07a127.82,127.82,0,0,1-20.77,4,169.19,169.19,0,0,1-18.84,1.11q-3.75,0-7.48-.2l-.43,0H3.45a3.46,3.46,0,0,0-3.27,4.58,52.56,52.56,0,0,0,14.88,22Zm-4.84-19.45h1.09a180.24,180.24,0,0,0,20.13-1.13c16.83-1.92,30.55-6,40.94-12.2a1.87,1.87,0,0,1,1-.26,1.9,1.9,0,0,1,.91.23c6,3.32,15.42,8.23,22.11,10.62a1.89,1.89,0,0,1,1.24,2c-.8,7-3.06,15.86-9,22.77-6.1,7.07-15.1,10.9-26.78,11.4H61.7a2.53,2.53,0,0,1-.45,0c-1.18-.21-4.08-.77-8-1.84,1.11-.49,2.26-1.08,3.42-1.73s2.09-1.23,3.12-1.9c3.21-2.07,6.32-4.42,8.73-6.35a.61.61,0,0,0-.63-1,83.68,83.68,0,0,1-18.08,4.68c-1.9.31-3.73.56-5.42.77-2,.25-3.77.44-5.26.58L38,134.7a81.9,81.9,0,0,1-9.4-5,37.24,37.24,0,0,0,3.94-.6c1.23-.25,2.47-.55,3.69-.88a96.5,96.5,0,0,0,9.35-3.12.41.41,0,0,0-.19-.79c-4.25.41-10.15.45-15.19.37-1.65,0-3.21-.06-4.58-.1-1.81-.05-3.31-.11-4.29-.15q-.87-.72-1.69-1.47-1.07-1-2.06-2c1-.1,2.09-.27,3.16-.47s2-.42,3-.68a93.34,93.34,0,0,0,10.52-3.42.41.41,0,0,0-.19-.79c-4,.38-9.44.44-14.26.39l-3.42-.06-3.31-.09A44.75,44.75,0,0,1,9.41,110a.93.93,0,0,1,.82-1.36Zm0,0" transform="translate(0)"/></g><path class="f" d="M9.24,108.65h1.1a184.19,184.19,0,0,0,20.42-1.14c17.07-1.93,31-6,41.52-12.28a1.91,1.91,0,0,1,1-.26,1.93,1.93,0,0,1,.92.24c6.12,3.34,15.64,8.29,22.42,10.69a1.9,1.9,0,0,1,1.26,2c-.81,7-3.11,16-9.15,22.91-6.18,7.11-15.32,11-27.15,11.47h-.11a2.59,2.59,0,0,1-.46,0c-1.19-.21-4.14-.77-8.08-1.85,1.13-.49,2.29-1.08,3.47-1.74s2.12-1.23,3.17-1.91c3.25-2.08,6.41-4.45,8.86-6.39a.62.62,0,0,0-.63-1.05C62.4,131.54,55.55,133,49.42,134c-1.93.31-3.78.57-5.49.78-2,.25-3.82.44-5.33.59l-1.19-.53a83.27,83.27,0,0,1-9.53-5.08,38,38,0,0,0,4-.6c1.24-.25,2.5-.56,3.74-.89a98.4,98.4,0,0,0,9.48-3.14.41.41,0,0,0-.19-.8c-4.31.41-10.3.45-15.41.38-1.67,0-3.25-.06-4.65-.1-1.84-.05-3.36-.11-4.36-.15q-.88-.73-1.72-1.48-1.08-1-2.09-2c1-.1,2.11-.27,3.21-.48s2.06-.43,3.09-.68a95.18,95.18,0,0,0,10.66-3.44.41.41,0,0,0-.19-.8c-4.05.39-9.57.44-14.46.39l-3.47-.06-3.36-.09A45,45,0,0,1,8.41,110a.94.94,0,0,1,.83-1.37Z" transform="translate(0)"/><path class="f" d="M61.44,143.29a3.56,3.56,0,0,1-.63-.06c-1.11-.19-4.13-.77-8.17-1.87l-2.73-.75,2.59-1.13c1-.46,2.18-1,3.38-1.7,1-.55,2-1.18,3.12-1.88,2.12-1.36,4.38-3,6.75-4.76A93.87,93.87,0,0,1,49.58,135c-1.79.29-3.65.55-5.53.78s-3.58.42-5.36.59l-.26,0-.24-.1-1.2-.53a84.56,84.56,0,0,1-9.65-5.14L24.83,129l3-.27a36.93,36.93,0,0,0,3.9-.59c1.15-.23,2.39-.53,3.67-.87,1.94-.52,3.83-1.12,5.51-1.7-3.13.13-6.94.17-11.39.11-1.68,0-3.26-.06-4.66-.1-1.84-.05-3.37-.11-4.37-.15h-.34l-.26-.22q-.89-.74-1.75-1.5c-.7-.63-1.42-1.31-2.13-2l-1.5-1.49,2.1-.21c1-.1,2-.25,3.12-.46s2-.41,3-.67c2.35-.59,4.66-1.31,6.69-2-2.9.13-6.39.17-10.44.12l-3.48-.06-3.37-.09h-.48l-.29-.38a46.1,46.1,0,0,1-3.84-6,1.91,1.91,0,0,1,0-1.9,1.93,1.93,0,0,1,1.67-.95h1.1a184.49,184.49,0,0,0,20.31-1.13c16.88-1.91,30.72-6,41.12-12.15a3,3,0,0,1,2.88,0c6.53,3.56,15.7,8.3,22.28,10.63A2.89,2.89,0,0,1,98.85,108c-.77,6.66-3,16.13-9.39,23.45s-15.75,11.3-27.87,11.82Zm-5.66-3.18c2.63.65,4.55,1,5.38,1.15l.28,0C73.06,140.8,82,137.06,88,130.16s8.17-16,8.91-22.37a.9.9,0,0,0-.6-1c-6.7-2.37-16-7.16-22.57-10.75a1,1,0,0,0-.91,0C62.14,102.4,48,106.57,30.88,108.51a186.66,186.66,0,0,1-20.53,1.14h-1a49.4,49.4,0,0,0,3.38,5.22l2.87.07L19,115c6.14.07,11-.06,14.35-.38a1.41,1.41,0,0,1,.64,2.72,95.67,95.67,0,0,1-10.78,3.48c-1.08.27-2.13.5-3.14.7l-1.21.21.57.52q.7.63,1.43,1.24l4,.14c1.39,0,3,.08,4.64.1a150.22,150.22,0,0,0,15.3-.37,1.41,1.41,0,0,1,.65,2.72,99.72,99.72,0,0,1-9.58,3.17c-1.33.36-2.6.66-3.8.9l-1.23.23c2.21,1.26,4.54,2.45,7,3.56l.94.42c1.68-.16,3.37-.35,5-.56,1.85-.23,3.69-.49,5.46-.77a82.57,82.57,0,0,0,18.11-4.64A1.62,1.62,0,0,1,69,131.14a109.57,109.57,0,0,1-8.94,6.45c-1.12.72-2.2,1.37-3.22,1.94ZM9.24,108.65v1h0Z" transform="translate(0)"/><path class="b" d="M126.45,127.44c-1.95-2.46-6.17-2.35-9.44.24s-4.34,6.67-2.39,9.13a5.18,5.18,0,0,0,4.58,1.75,2.47,2.47,0,0,0,3,1.09,1.33,1.33,0,0,0,1.83.18l3.22-2.55a1.33,1.33,0,0,0,.25-1.82,2.48,2.48,0,0,0-.38-3.16A5.18,5.18,0,0,0,126.45,127.44Zm-6.58,9.14a2.75,2.75,0,1,1,.45-3.86A2.75,2.75,0,0,1,119.87,136.57Zm4.68-.53c-.12.19-.5.17-.91,0,.08.45,0,.82-.2.89s-.63-.31-.83-.89-.15-1.06.08-1.19.68-.11,1.18.2S124.7,135.81,124.55,136Zm.48-3.56a2.75,2.75,0,1,1,.45-3.86A2.75,2.75,0,0,1,125,132.49Z" transform="translate(0)"/><path class="b" d="M132,138.94a1.34,1.34,0,0,0,.13.31l-4.54,1.21-.51.14-4.54,1.21a1.34,1.34,0,1,0-1.66,1.32,1.21,1.21,0,1,0,2.19.34v0l4.46-1.18.51-.14,4.46-1.18v0a1.21,1.21,0,1,0,1.73-1.38,1.34,1.34,0,1,0-2.22-.63Z" transform="translate(0)"/><path class="b" d="M124.54,144.87a1.34,1.34,0,0,1,.27.19l2.21-4.15.25-.47,2.21-4.15a1.34,1.34,0,1,1,1.66-1.31,1.21,1.21,0,1,1-.17,2.21h0l-2.17,4.07-.25.47-2.17,4.07h0a1.21,1.21,0,1,1-1.74,1.37,1.34,1.34,0,1,1-.1-2.3Z" transform="translate(0)"/></svg></li>
				<li class="wf-issue-short">
					<p><strong><?php esc_html_e('The results of your scan may indicate that you could benefit from Wordfence Site Cleaning', 'wordfence'); ?></strong></p>
					<p><?php esc_html_e('Since you have the beta threat defense feed enabled, there is a high likelihood that your results could include false positives. If you think you have indeed been hacked, our team of security experts can help.', 'wordfence'); ?></p>
				</li>
				<li class="wf-issue-controls"><a class="wf-btn wf-btn-primary wf-btn-callout-subtle" href="https://www.wordfence.com/gnl1scanGetHelpHS/wordfence-site-cleanings/" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Get Help', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></li>
			</ul>
		</li>
	</ul>
</script>
views/scanner/issue-control-show-details.php000064400000003705150755146450015273 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
?>
<a href="#" class="wf-issue-control wf-issue-control-show-details" role="button"><svg class="wf-issue-control-icon-inactive" viewBox="0 0 108.46 108.46"><path d="M106,94.25,83.69,71.89a44.66,44.66,0,0,0,8.08-26,45.12,45.12,0,0,0-3.62-17.83A45,45,0,0,0,63.71,3.62a45.74,45.74,0,0,0-35.66,0A45,45,0,0,0,3.62,28.06a45.74,45.74,0,0,0,0,35.65A44.94,44.94,0,0,0,28.06,88.16a45.12,45.12,0,0,0,17.83,3.62,44.62,44.62,0,0,0,26-8.09L94.25,106a7.74,7.74,0,0,0,5.86,2.48A8.34,8.34,0,0,0,106,94.25ZM66.52,66.52a28.12,28.12,0,0,1-20.63,8.57,28.13,28.13,0,0,1-20.63-8.57,28.12,28.12,0,0,1-8.57-20.63,28.11,28.11,0,0,1,8.57-20.63,28.12,28.12,0,0,1,20.63-8.57,28.12,28.12,0,0,1,20.63,8.57,28.12,28.12,0,0,1,8.57,20.63,28.13,28.13,0,0,1-8.57,20.63Zm0,0"/><path d="M64.66,41.72H50.06V27.11A2.12,2.12,0,0,0,48,25H43.8a2.11,2.11,0,0,0-2.08,2.09v14.6H27.12A2.11,2.11,0,0,0,25,43.8V48a2.12,2.12,0,0,0,2.09,2.09h14.6v14.6a2.11,2.11,0,0,0,2.08,2.09H48a2.11,2.11,0,0,0,2.09-2.09V50.06h14.6A2.12,2.12,0,0,0,66.74,48V43.8a2.11,2.11,0,0,0-2.08-2.09Zm0,0"/></svg><svg class="wf-issue-control-icon-active" viewBox="0 0 108.46 108.46"><path d="M106,94.25,83.69,71.89a44.66,44.66,0,0,0,8.08-26,45.12,45.12,0,0,0-3.62-17.83A45,45,0,0,0,63.71,3.62a45.74,45.74,0,0,0-35.66,0A45,45,0,0,0,3.62,28.06a45.74,45.74,0,0,0,0,35.65A44.94,44.94,0,0,0,28.06,88.16a45.12,45.12,0,0,0,17.83,3.62,44.62,44.62,0,0,0,26-8.09L94.25,106a7.74,7.74,0,0,0,5.86,2.48A8.34,8.34,0,0,0,106,94.25ZM66.52,66.52a28.12,28.12,0,0,1-20.63,8.57,28.13,28.13,0,0,1-20.63-8.57,28.12,28.12,0,0,1-8.57-20.63,28.11,28.11,0,0,1,8.57-20.63,28.12,28.12,0,0,1,20.63-8.57,28.12,28.12,0,0,1,20.63,8.57,28.12,28.12,0,0,1,8.57,20.63,28.13,28.13,0,0,1-8.57,20.63Zm0,0"/><path d="M64.66,41.72H27.12A2.11,2.11,0,0,0,25,43.8V48a2.12,2.12,0,0,0,2.09,2.09H64.66A2.12,2.12,0,0,0,66.74,48V43.8a2.11,2.11,0,0,0-2.08-2.09Zm0,0"/></svg><span class="wf-issue-control-label"><?php esc_html_e('Details', 'wordfence'); ?></span></a>views/scanner/issue-easyPassword.php000064400000004256150755146450013700 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents an issue template.
 */
echo wfView::create('scanner/issue-base', array(
	'internalType' => 'easyPassword',
	'displayType' => __('Insecure Password', 'wordfence'),
	'iconSVG' => '<svg viewBox="0 0 91.77 100.11"><path d="M45.89,50.06a24.1,24.1,0,0,0,17.69-7.34A24.1,24.1,0,0,0,70.91,25a24.11,24.11,0,0,0-7.33-17.7A24.12,24.12,0,0,0,45.89,0a24.12,24.12,0,0,0-17.7,7.33A24.11,24.11,0,0,0,20.86,25a24.1,24.1,0,0,0,7.33,17.7,24.11,24.11,0,0,0,17.7,7.34Zm0,0"/><path d="M91.54,76.49a66.22,66.22,0,0,0-.91-7.1,54.55,54.55,0,0,0-1.73-7.07A33.35,33.35,0,0,0,86.1,56a22.92,22.92,0,0,0-4-5.28,17,17,0,0,0-5.57-3.49,19.61,19.61,0,0,0-7.27-1.3,8,8,0,0,0-2.74,1.4q-2.15,1.41-4.86,3.13a30.77,30.77,0,0,1-7,3.13,27.68,27.68,0,0,1-17.4,0,30.59,30.59,0,0,1-7-3.13q-2.71-1.72-4.86-3.13a8,8,0,0,0-2.74-1.4,19.6,19.6,0,0,0-7.27,1.3,17,17,0,0,0-5.57,3.49,22.9,22.9,0,0,0-4,5.28,33.29,33.29,0,0,0-2.8,6.35,55.38,55.38,0,0,0-1.73,7.07,66.22,66.22,0,0,0-.91,7.1Q0,79.78,0,83.24q0,7.82,4.76,12.35t12.64,4.53h57q7.89,0,12.65-4.53t4.76-12.35q0-3.46-.23-6.75Zm0,0"/></svg>',
	'summaryControls' => array(wfView::create('scanner/issue-control-edit-user'), wfView::create('scanner/issue-control-ignore', array('ignoreP' => __('Ignore All for User', 'wordfence'), 'ignoreC' => __('Ignore Only this Password', 'wordfence'))), wfView::create('scanner/issue-control-show-details')),
	'detailPairs' => array(
		__('Login Name', 'wordfence') => '${data.user_login}',
		__('User Email', 'wordfence') => '${data.user_email}',
		__('Full Name', 'wordfence') => '${data.first_name} ${data.last_name}',
		null,
		__('Details', 'wordfence') => '{{html longMsg}}',
	),
	'detailControls' => array(
		'<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-issue-control-mark-fixed" role="button">' . __('Mark as Fixed', 'wordfence') . '</a>',
	),
	'textOutput' => (isset($textOutput) ? $textOutput : null),
	'textOutputDetailPairs' => array(
		__('Login Name', 'wordfence') => '$data.user_login',
		__('User Email', 'wordfence') => '$data.user_email',
		__('Full Name', 'wordfence') => '$data.first_name $data.last_name',
		null,
		__('Details', 'wordfence') => '$longMsg',
	),
))->render();views/scanner/issue-control-edit-user.php000064400000002140150755146450014561 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
?>
<a href="${data.editUserLink}" class="wf-issue-control wf-issue-control-edit-user"><svg class="wf-issue-control-icon" viewBox="0 0 91.77 100.11"><path d="M45.89,50.06a24.1,24.1,0,0,0,17.69-7.34A24.1,24.1,0,0,0,70.91,25a24.11,24.11,0,0,0-7.33-17.7A24.12,24.12,0,0,0,45.89,0a24.12,24.12,0,0,0-17.7,7.33A24.11,24.11,0,0,0,20.86,25a24.1,24.1,0,0,0,7.33,17.7,24.11,24.11,0,0,0,17.7,7.34Zm0,0"/><path d="M91.54,76.49a66.22,66.22,0,0,0-.91-7.1,54.55,54.55,0,0,0-1.73-7.07A33.35,33.35,0,0,0,86.1,56a22.92,22.92,0,0,0-4-5.28,17,17,0,0,0-5.57-3.49,19.61,19.61,0,0,0-7.27-1.3,8,8,0,0,0-2.74,1.4q-2.15,1.41-4.86,3.13a30.77,30.77,0,0,1-7,3.13,27.68,27.68,0,0,1-17.4,0,30.59,30.59,0,0,1-7-3.13q-2.71-1.72-4.86-3.13a8,8,0,0,0-2.74-1.4,19.6,19.6,0,0,0-7.27,1.3,17,17,0,0,0-5.57,3.49,22.9,22.9,0,0,0-4,5.28,33.29,33.29,0,0,0-2.8,6.35,55.38,55.38,0,0,0-1.73,7.07,66.22,66.22,0,0,0-.91,7.1Q0,79.78,0,83.24q0,7.82,4.76,12.35t12.64,4.53h57q7.89,0,12.65-4.53t4.76-12.35q0-3.46-.23-6.75Zm0,0"/></svg><span class="wf-issue-control-label"><?php esc_html_e('Edit', 'wordfence'); ?></span></a>views/scanner/scan-progress-detailed.php000064400000005636150755146450014430 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents the scan activity log and its controls.
 *
 * Expects $scanner.
 *
 * @var wfScanner $scanner The scanner state.
 */
?>
<div class="wf-alert wf-alert-danger" id="wf-scan-failed" style="display: none;">
	
</div>
<ul class="wf-flex-horizontal wf-flex-vertical-xs wf-flex-full-width wf-no-top wf-no-bottom">
	<li id="wf-scan-last-status"></li>
	<li id="wf-scan-activity-log-controls"><a href="#" id="wf-scan-email-activity-log" role="button"><?php echo wp_kses(/* translators: word order may be altered as long as HTML remains around "activity" */ __('Email<span class="wf-hidden-xs"> activity</span> log', 'wordfence'), array('span'=>array('class'=>array()))); ?></a>&nbsp;&nbsp;&nbsp;&nbsp;<a href="<?php echo esc_attr(wfUtils::getSiteBaseURL()); ?>?_wfsf=viewActivityLog&amp;nonce=<?php echo esc_attr(wp_create_nonce('wp-ajax')); ?>" id="wf-scan-full-activity-log" target="_blank"><?php echo wp_kses(/* translators: word order may be altered as long as HTML remains around "full" */ __('View<span class="wf-hidden-xs"> full</span> log', 'wordfence'), array('span'=>array('class'=>array()))); ?></a>&nbsp;&nbsp;&nbsp;&nbsp;<a href="#" id="wf-scan-toggle-activity-log" class="<?php echo (wfPersistenceController::shared()->isActive('wf-scan-activity-log') ? 'wf-active' : '') ?>" role="button"><span class="wf-scan-activity-log-visible"><?php esc_html_e('Hide log', 'wordfence'); ?></span><span class="wf-scan-activity-log-hidden"><?php esc_html_e('Show log', 'wordfence'); ?></span><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></li>
</ul>
<div id="wf-scan-running-bar" style="<?php if (!$scanner->isRunning()) { echo 'display: none;'; } ?>"><div id="wf-scan-running-bar-pill"></div></div>
<ul id="wf-scan-activity-log" class="<?php echo (wfPersistenceController::shared()->isActive('wf-scan-activity-log') ? ' wf-active' : '') ?>"></ul>
<script type="application/javascript">
	(function($) {
		$(function() {
			$('#wf-scan-email-activity-log').on('click', function(e) {
				e.preventDefault();
				e.stopPropagation();

				WFAD.emailActivityLog();
			});

			$('#wf-scan-toggle-activity-log').on('click', function(e) {
				e.preventDefault();
				e.stopPropagation();

				var isActive = $('#wf-scan-activity-log').hasClass('wf-active');
				if (isActive) {
					$('#wf-scan-activity-log').slideUp({
						always: function() {
							$('#wf-scan-activity-log').removeClass('wf-active');
							$('#wf-scan-toggle-activity-log').removeClass('wf-active');
						}
					});
				}
				else {
					$('#wf-scan-activity-log').slideDown({
						always: function() {
							$('#wf-scan-activity-log').addClass('wf-active');
							$('#wf-scan-toggle-activity-log').addClass('wf-active');
						}
					});
				}

				WFAD.ajax('wordfence_saveDisclosureState', {name: 'wf-scan-activity-log', state: !isActive}, function() {});
			});
		});
	})(jQuery);
</script>views/scanner/issue-control-repair.php000064400000001624150755146450014150 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
?>
{{if data.canFix}}<a href="#" class="wf-issue-control wf-issue-control-repair" data-file="${data.file}" role="button"><svg class="wf-issue-control-icon" viewBox="0 0 106.7 106.7"><path d="M104.94,18.77a4,4,0,0,0-1.17-2.93L90.86,2.93a4.25,4.25,0,0,0-5.87,0L1.17,86.75a4.25,4.25,0,0,0,0,5.86l12.91,12.91A4,4,0,0,0,17,106.7a4,4,0,0,0,2.93-1.17L103.77,21.7a4,4,0,0,0,1.17-2.93ZM75.8,37.87l-7-7,19.1-19.1,7,7Zm0,0"/><path d="M14.93,16.68l2-6.39,6.39-2-6.39-2L14.93,0,13,6.39l-6.39,2,6.39,2Zm0,0"/><path d="M31.87,24.77l3.91,12.77L39.7,24.77l12.77-3.91L39.7,16.95,35.78,4.17,31.87,16.95,19.1,20.86Zm0,0"/><path d="M100.31,48.1l-2-6.39-2,6.39-6.39,2,6.39,2,2,6.39,2-6.39,6.39-2Zm0,0"/><path d="M56.64,16.68l2-6.39,6.39-2-6.39-2L56.64,0l-2,6.39-6.39,2,6.39,2Zm0,0"/></svg><span class="wf-issue-control-label"><?php esc_html_e('Repair', 'wordfence'); ?></span></a>{{/if}}views/scanner/issue-checkGSB.php000064400000004643150755146450012625 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents an issue template.
 */
echo wfView::create('scanner/issue-base', array(
	'internalType' => 'checkGSB',
	'displayType' => __('URL', 'wordfence'),
	'iconSVG' => '<svg viewBox="0 0 106.37 106.37"><path d="M100.89,64.92,87.34,51.36a18.89,18.89,0,0,0-26.85.26l-5.74-5.73a18.34,18.34,0,0,0,5.74-13.62A18,18,0,0,0,55.07,19L41.65,5.54A17.86,17.86,0,0,0,28.35,0,18,18,0,0,0,15.12,5.41L5.54,14.93A17.79,17.79,0,0,0,0,28.16a18.09,18.09,0,0,0,5.48,13.3L19,55a18.12,18.12,0,0,0,13.3,5.48,18.27,18.27,0,0,0,13.56-5.74l5.73,5.74a18.32,18.32,0,0,0-5.73,13.62A18,18,0,0,0,51.3,87.34l13.43,13.49a18.81,18.81,0,0,0,26.53.13l9.58-9.52a17.79,17.79,0,0,0,5.54-13.23,18.1,18.1,0,0,0-5.48-13.3ZM45.89,37l-1.21-1.24c-.67-.7-1.14-1.16-1.4-1.4s-.68-.56-1.24-1a5.26,5.26,0,0,0-1.66-.85,6.64,6.64,0,0,0-1.79-.23,6.24,6.24,0,0,0-6.26,6.26,6.6,6.6,0,0,0,.23,1.79A5.19,5.19,0,0,0,33.41,42a14.48,14.48,0,0,0,1,1.24c.24.26.71.73,1.4,1.4L37,45.89a6.3,6.3,0,0,1-4.7,2,6,6,0,0,1-4.43-1.76L14.34,32.59a6,6,0,0,1-1.82-4.43,5.94,5.94,0,0,1,1.82-4.36l9.58-9.52a6.3,6.3,0,0,1,4.43-1.76,6,6,0,0,1,4.43,1.83L46.21,27.83A6,6,0,0,1,48,32.26,6.33,6.33,0,0,1,45.89,37ZM92,82.58,82.45,92.1A6.28,6.28,0,0,1,78,93.79,6,6,0,0,1,73.59,92L60.16,78.54a6,6,0,0,1-1.82-4.43,6.33,6.33,0,0,1,2.15-4.76l1.21,1.24c.67.69,1.14,1.16,1.4,1.4a15,15,0,0,0,1.24,1,5.18,5.18,0,0,0,1.66.85,6.6,6.6,0,0,0,1.79.23A6.23,6.23,0,0,0,74,67.79,6.76,6.76,0,0,0,73.82,66,5.34,5.34,0,0,0,73,64.33c-.41-.56-.74-1-1-1.24s-.71-.73-1.4-1.4l-1.24-1.2A6.2,6.2,0,0,1,74,58.4a6,6,0,0,1,4.43,1.82L92,73.78a6,6,0,0,1,1.83,4.43A6,6,0,0,1,92,82.58Zm0,0"/></svg>',
	'summaryControls' => array(wfView::create('scanner/issue-control-ignore', array('ignoreP' => __('Ignore', 'wordfence'))), wfView::create('scanner/issue-control-show-details')),
	'detailPairs' => array(
		__('Bad URL', 'wordfence') => array('(typeof data.badURL !== \'undefined\') && data.badURL', '<strong class="wfWarn wf-split-word">${data.badURL}</strong>'),
		null,
		__('Details', 'wordfence') => '{{html longMsg}}',
	),
	'detailControls' => array(
		'<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-issue-control-mark-fixed" role="button">' . __('Mark as Fixed', 'wordfence') . '</a>',
	),
	'textOutput' => (isset($textOutput) ? $textOutput : null),
	'textOutputDetailPairs' => array(
		__('Bad URL', 'wordfence') => '$data.badURL',
		null,
		__('Details', 'wordfence') => '$longMsg',
	),
))->render();views/scanner/issue-checkHowGetIPs.php000064400000003021150755146450014010 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents an issue template.
 */
echo wfView::create('scanner/issue-base', array(
	'internalType' => 'checkHowGetIPs',
	'displayType' => __('IP Detection', 'wordfence'),
	'iconSVG' => '<svg viewBox="0 0 20 20"><g><path d="M18 13h1c.55 0 1 .45 1 1.01v2.98c0 .56-.45 1.01-1 1.01h-4c-.55 0-1-.45-1-1.01v-2.98c0-.56.45-1.01 1-1.01h1v-2h-5v2h1c.55 0 1 .45 1 1.01v2.98c0 .56-.45 1.01-1 1.01H8c-.55 0-1-.45-1-1.01v-2.98c0-.56.45-1.01 1-1.01h1v-2H4v2h1c.55 0 1 .45 1 1.01v2.98C6 17.55 5.55 18 5 18H1c-.55 0-1-.45-1-1.01v-2.98C0 13.45.45 13 1 13h1v-2c0-1.1.9-2 2-2h5V7H8c-.55 0-1-.45-1-1.01V3.01C7 2.45 7.45 2 8 2h4c.55 0 1 .45 1 1.01v2.98C13 6.55 12.55 7 12 7h-1v2h5c1.1 0 2 .9 2 2v2z"/></g></svg>',
	'summaryControls' => array(wfView::create('scanner/issue-control-ignore', array('ignoreP' => __('Ignore', 'wordfence'))), wfView::create('scanner/issue-control-show-details')),
	'detailPairs' => array(
		__('Details', 'wordfence') => '{{html longMsg}}',
	),
	'detailControls' => array(
		'<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle" onclick="WFAD.useRecommendedHowGetIPs(\'${id}\'); return false;" role="button">' . __('Use Recommended Value', 'wordfence') . '</a>',
		'<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-issue-control-mark-fixed" role="button">' . __('Mark as Fixed', 'wordfence') . '</a>',
	),
	'textOutput' => (isset($textOutput) ? $textOutput : null),
	'textOutputDetailPairs' => array(
		__('Details', 'wordfence') => '$longMsg',
	),
))->render();views/scanner/issue-control-edit-post.php000064400000001156150755146450014576 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
?>
<a href="${data.editPostLink}" class="wf-issue-control wf-issue-control-edit-post"><svg class="wf-issue-control-icon" viewBox="0 0 20 20"><rect x="0" fill="none" width="20" height="20"/><g><path d="M10.44 3.02l1.82-1.82 6.36 6.35-1.83 1.82c-1.05-.68-2.48-.57-3.41.36l-.75.75c-.92.93-1.04 2.35-.35 3.41l-1.83 1.82-2.41-2.41-2.8 2.79c-.42.42-3.38 2.71-3.8 2.29s1.86-3.39 2.28-3.81l2.79-2.79L4.1 9.36l1.83-1.82c1.05.69 2.48.57 3.4-.36l.75-.75c.93-.92 1.05-2.35.36-3.41z"/></g></svg><span class="wf-issue-control-label"><?php esc_html_e('Edit', 'wordfence'); ?></span></a>views/scanner/issue-wfThemeUpgrade.php000064400000007122150755146450014116 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents an issue template.
 */
echo wfView::create('scanner/issue-base', array(
	'internalType' => 'wfThemeUpgrade',
	'displayType' => __('Theme Upgrade', 'wordfence'),
	'iconSVG' => '<svg viewBox="0 0 20 20"><g><path d="M14.48 11.06L7.41 3.99l1.5-1.5c.5-.56 2.3-.47 3.51.32 1.21.8 1.43 1.28 2.91 2.1 1.18.64 2.45 1.26 4.45.85zm-.71.71L6.7 4.7 4.93 6.47c-.39.39-.39 1.02 0 1.41l1.06 1.06c.39.39.39 1.03 0 1.42-.6.6-1.43 1.11-2.21 1.69-.35.26-.7.53-1.01.84C1.43 14.23.4 16.08 1.4 17.07c.99 1 2.84-.03 4.18-1.36.31-.31.58-.66.85-1.02.57-.78 1.08-1.61 1.69-2.21.39-.39 1.02-.39 1.41 0l1.06 1.06c.39.39 1.02.39 1.41 0z"/></g></svg>',
	'summaryControls' => array(wfView::create('scanner/issue-control-ignore', array('ignoreC' => __('Ignore ', 'wordfence'))), wfView::create('scanner/issue-control-show-details')),
	'detailPairs' => array(
		__('Theme Name', 'wordfence') => '${data.name}',
		__('Current Theme Version', 'wordfence') => '${data.version}',
		__('New Theme Version', 'wordfence') => '${data.newVersion}',
		null,
		__('Details', 'wordfence') => '{{if data.vulnerable}}<strong>' . esc_html__('Update includes security-related fixes.', 'wordfence') . '</strong><br>{{/if}}{{html longMsg}}<br><a href="' . get_admin_url() . 'update-core.php' . '">' . esc_html__('Click here to update now', 'wordfence') . '</a>.',
		null,
		__('Theme URL', 'wordfence') => '<a href="${data.URL}" target="_blank" rel="noopener noreferrer"><span class="wf-hidden-xs wf-split-word">${data.URL}</span><span class="wf-visible-xs">' . __('View', 'wordfence') . '</span><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>',
		__('Vulnerability Information', 'wordfence') => array('data.vulnerabilityLink', '<a href="${data.vulnerabilityLink}" target="_blank" rel="noopener noreferrer"><span class="wf-hidden-xs wf-split-word">${data.vulnerabilityLink}</span><span class="wf-visible-xs">' . __('View', 'wordfence') . '</span><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>'),
		__('Vulnerability Severity', 'wordfence') => array('data.cvssScore', '${data.cvssScore}/10.0 (<span class="${data.severityClass}" data-tooltip="test" title="This is the severity of the vulnerability itself, which can differ from the scan result severity. Some lower-severity vulnerabilities may still be important to address depending on your site\'s configuration and user base, so they are still important for you to review.">${data.severityLabel}</span>)'),
		),
	'detailControls' => array(
		'<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-issue-control-mark-fixed" role="button">' . __('Mark as Fixed', 'wordfence') . '</a>',
		'<a href="' . esc_url(wfUtils::wpAdminURL('update-core.php')) . '" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-issue-control-view-updates">' . __('View Updates', 'wordfence') . '</a>',
	),
	'textOutput' => (isset($textOutput) ? $textOutput : null),
	'textOutputDetailPairs' => array(
		__('Theme Name', 'wordfence') => '$data.name',
		__('Current Theme Version', 'wordfence') => '$data.version',
		__('New Theme Version', 'wordfence') => '$data.newVersion',
		null,
		__('Details', 'wordfence') => '$longMsg',
		__('Vulnerability Status', 'wordfence') => array('$data.vulnerable', __('Update includes security-related fixes.', 'wordfence')),
		null,
		__('Theme URL', 'wordfence') => '$data.URL',
		__('Vulnerability Information', 'wordfence') => '$data.vulnerabilityLink',
		__('Vulnerability Severity', 'wordfence') => '${data.cvssScore}/10.0 (${data.severityLabel})',
	),
))->render();views/scanner/issue-control-ignore.php000064400000004211150755146450014144 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * One or both of $ignoreC and $ignoreP will be defined. If only one is defined, the ignore button will default to that. If both are defined, the user will be presented with a choice.
 */
?>
<a href="#" class="wf-issue-control wf-issue-control-ignore" data-ignore-action="{{if status == 'new'}}<?php if (isset($ignoreC) && isset($ignoreP)) { echo 'choice'; } else { echo isset($ignoreC) ? 'ignoreC' : 'ignoreP'; } ?>{{else}}new{{/if}}" role="button"><svg class="wf-issue-control-icon" viewBox="0 0 116.8 87.6"><path d="M82.45,52A28.43,28.43,0,0,0,87.6,35.46,31.39,31.39,0,0,0,87.08,30L68.83,62.7A28.69,28.69,0,0,0,82.45,52Zm0,0"/><path d="M85.12,6.91a1.64,1.64,0,0,0,.06-.59,2,2,0,0,0-1-1.76l-1.27-.75Q81.8,3.2,80.82,2.61c-.65-.39-1.37-.79-2.15-1.2s-1.45-.75-2-1A3.5,3.5,0,0,0,75.48,0a2,2,0,0,0-1.83,1L70.13,7.37A63.82,63.82,0,0,0,58.4,6.26a61.76,61.76,0,0,0-32.33,8.86A76,76,0,0,0,1.3,39.3a8.4,8.4,0,0,0,0,9,77.76,77.76,0,0,0,13.59,16A67.46,67.46,0,0,0,32.07,75.54q-2.87,4.89-2.87,5.67a2,2,0,0,0,1,1.83q8,4.56,8.74,4.56a2,2,0,0,0,1.82-1L44,80.76q6.91-12.32,20.6-37T85.12,6.91ZM36.18,68.25q-17-7.63-27.83-24.44a64,64,0,0,1,24.83-23,29,29,0,0,0-.78,27.89,28.73,28.73,0,0,0,8.86,10.36ZM60.62,21a3,3,0,0,1-2.22.91A13.58,13.58,0,0,0,44.84,35.46a3.13,3.13,0,1,1-6.26,0,19.07,19.07,0,0,1,5.83-14,19.07,19.07,0,0,1,14-5.83A3.14,3.14,0,0,1,60.62,21Zm0,0"/><path d="M115.5,39.3a64.55,64.55,0,0,0-9.42-12,77.27,77.27,0,0,0-11.89-10l-4.11,7.3A66.76,66.76,0,0,1,108.46,43.8a67.26,67.26,0,0,1-19.65,20,54.11,54.11,0,0,1-25.59,8.93l-4.83,8.6a62.26,62.26,0,0,0,27.34-6.19,70.17,70.17,0,0,0,22.65-17.4,73,73,0,0,0,7.1-9.45,8.4,8.4,0,0,0,0-9Zm0,0"/></svg><span class="wf-issue-control-label">{{if status == 'new'}}<?php esc_html_e('Ignore', 'wordfence'); ?>{{else}}<?php esc_html_e('Stop Ignoring', 'wordfence'); ?>{{/if}}</span></a>
<?php if (isset($ignoreC) && isset($ignoreP)): ?>
<ul class="wf-issue-control-ignore-menu">
	<li class="wf-issue-control-ignore-menu-ignorec"><div><?php echo esc_html($ignoreC); ?></div></li>
	<li class="wf-issue-control-ignore-menu-ignorep"><div><?php echo esc_html($ignoreP); ?></div></li>
</ul>
<?php endif; ?>views/scanner/scan-type.php000064400000022166150755146450011771 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Displays the scan type selector and automatic scan toggle.
 */

function _wfAllowOnlyBoolean($value) {
	return ($value === false || $value === true);
}

$limitedOptions = array_filter(wfScanner::limitedScanTypeOptions(), '_wfAllowOnlyBoolean');
$standardOptions = array_filter(wfScanner::standardScanTypeOptions(), '_wfAllowOnlyBoolean');
$highSensitivityOptions = array_filter(wfScanner::highSensitivityScanTypeOptions(), '_wfAllowOnlyBoolean');
?>
<ul id="wf-option-scanType" class="wf-scan-type-controls">
	<li class="wf-scan-type-selector wf-overflow-x-auto-xs">
		<ul class="wf-scan-type" data-option-name="scanType" data-original-value="<?php echo esc_attr($scanner->scanType()); ?>" role="radiogroup">
			<li>
				<ul class="wf-scan-type-option<?php if ($scanner->scanType() == wfScanner::SCAN_TYPE_LIMITED) { echo ' wf-active'; } ?>" data-option-value="<?php echo esc_attr(wfScanner::SCAN_TYPE_LIMITED); ?>" data-selected-options="<?php echo esc_attr(json_encode($limitedOptions)); ?>">
					<li class="wf-scan-type-option-name"><div class="wf-option-checkbox" role="radio" aria-checked="<?php echo ($scanner->scanType() == wfScanner::SCAN_TYPE_LIMITED ? 'true' : 'false'); ?>" tabindex="0"><i class="wf-ion-ios-checkmark-empty" aria-hidden="true"></i></div><span><?php esc_html_e('Limited Scan', 'wordfence'); ?></span></li>
					<li class="wf-scan-type-option-description"><?php esc_html_e('For entry-level hosting plans. Provides limited detection capability with very low resource utilization.', 'wordfence'); ?></li>
				</ul>
			</li>
			<li>
				<ul class="wf-scan-type-option<?php if ($scanner->scanType() == wfScanner::SCAN_TYPE_STANDARD) { echo ' wf-active'; } ?>" data-option-value="<?php echo esc_attr(wfScanner::SCAN_TYPE_STANDARD); ?>" data-selected-options="<?php echo esc_attr(json_encode($standardOptions)); ?>">
					<li class="wf-scan-type-option-name"><div class="wf-option-checkbox" role="radio" aria-checked="<?php echo ($scanner->scanType() == wfScanner::SCAN_TYPE_STANDARD ? 'true' : 'false'); ?>" tabindex="0"><i class="wf-ion-ios-checkmark-empty" aria-hidden="true"></i></div><span><?php esc_html_e('Standard Scan', 'wordfence'); ?></span></li>
					<li class="wf-scan-type-option-description"><?php esc_html_e('Our recommendation for all websites. Provides the best detection capability in the industry.', 'wordfence'); ?></li>
				</ul>
			</li>
			<li>
				<ul class="wf-scan-type-option<?php if ($scanner->scanType() == wfScanner::SCAN_TYPE_HIGH_SENSITIVITY) { echo ' wf-active'; } ?>" data-option-value="<?php echo esc_attr(wfScanner::SCAN_TYPE_HIGH_SENSITIVITY); ?>" data-selected-options="<?php echo esc_attr(json_encode($highSensitivityOptions)); ?>">
					<li class="wf-scan-type-option-name"><div class="wf-option-checkbox" role="radio" aria-checked="<?php echo ($scanner->scanType() == wfScanner::SCAN_TYPE_HIGH_SENSITIVITY? 'true' : 'false'); ?>" tabindex="0"><i class="wf-ion-ios-checkmark-empty" aria-hidden="true"></i></div><span><?php esc_html_e('High Sensitivity', 'wordfence'); ?></span></li>
					<li class="wf-scan-type-option-description"><?php esc_html_e('For site owners who think they may have been hacked. More thorough but may produce false positives.', 'wordfence'); ?></li>
				</ul>
			</li>
			<li>
				<ul class="wf-scan-type-option wf-scan-type-option-custom<?php if ($scanner->scanType() == wfScanner::SCAN_TYPE_CUSTOM) { echo ' wf-active'; } ?>" data-option-value="<?php echo esc_attr(wfScanner::SCAN_TYPE_CUSTOM); ?>">
					<li class="wf-scan-type-option-name"><span><?php esc_html_e('Custom Scan', 'wordfence'); ?></span></li>
					<li class="wf-scan-type-option-description"><?php esc_html_e('Selected automatically when General Options have been customized for this website.', 'wordfence'); ?></li>
				</ul>
			</li>
		</ul>
		<script type="application/javascript">
			(function($) {
				$(function() {
					//Set initial state
					var currentScanType = $('.wf-scan-type-option.wf-active');
					if (!currentScanType.hasClass('wf-scan-type-option-custom')) {
						var selectedOptions = currentScanType.data('selectedOptions');
						var keys = Object.keys(selectedOptions);
						for (var i = 0; i < keys.length; i++) {
							$('.wf-option.wf-option-toggled[data-option="' + keys[i] + '"]').find('.wf-option-checkbox').toggleClass('wf-checked', selectedOptions[keys[i]]); //Currently all checkboxes
						}
					}
					
					$('.wf-scan-type-option').each(function(index, element) {
						$(element).on('keydown', function(e) {
							if (e.keyCode == 32) {
								e.preventDefault();
								e.stopPropagation();

								$(this).trigger('click');
							}
						});
						
						$(element).on('click', function(e) {
							if ($(element).hasClass('wf-scan-type-option-custom')) {
								return;
							}
							
							e.preventDefault();
							e.stopPropagation();

							var control = $(this).closest('.wf-scan-type');
							var optionName = control.data('optionName');
							var originalValue = control.data('originalValue');
							var value = $(this).data('optionValue');

							control.find('.wf-scan-type-option').each(function() {
								$(this).toggleClass('wf-active', value == $(this).data('optionValue')).find('.wf-option-checkbox').attr('aria-checked', value == $(this).data('optionValue') ? 'true' : 'false');
							});

							if (originalValue == value) {
								delete WFAD.pendingChanges[optionName];
							}
							else {
								WFAD.pendingChanges[optionName] = value;
							}
							
							var selectedOptions = $(this).data('selectedOptions');
							var keys = Object.keys(selectedOptions);
							for (var i = 0; i < keys.length; i++) {
								var el = $('.wf-option.wf-option-toggled[data-option="' + keys[i] + '"]');
								el.find('.wf-option-checkbox').toggleClass('wf-checked', selectedOptions[keys[i]]).attr('aria-checked', selectedOptions[keys[i]] ? 'true' : 'false'); //Currently all checkboxes

								originalValue = el.attr('data-original-value');
								if (originalValue !== undefined &&
									typeof selectedOptions[keys[i]] === 'boolean' &&
									originalValue != selectedOptions[keys[i]]
								) {
									WFAD.pendingChanges[keys[i]] = selectedOptions[keys[i]];
								}
							}

							WFAD.updatePendingChanges();
						});
					});

					$(window).on('wfOptionsReset', function() {
						$('.wf-scan-type').each(function() {
							var originalValue = $(this).data('originalValue');
							$(this).find('.wf-scan-type-option').each(function() {
								var isSelected = (originalValue == $(this).data('optionValue'));
								$(this).toggleClass('wf-active', isSelected).find('.wf-option-checkbox').attr('aria-checked', isSelected ? 'true' : 'false');
								if (!$(this).hasClass('wf-scan-type-option-custom') && isSelected) {
									var selectedOptions = $(this).data('selectedOptions');
									var keys = Object.keys(selectedOptions);
									for (var i = 0; i < keys.length; i++) {
										$('.wf-option.wf-option-toggled[data-option="' + keys[i] + '"]').find('.wf-option-checkbox').toggleClass('wf-checked', selectedOptions[keys[i]]).attr('aria-checked', selectedOptions[keys[i]] ? 'true' : 'false'); //Currently all checkboxes
									}
								}
							});
						});
					});

					//Hook up change events on individual checkboxes
					var availableOptions = <?php echo json_encode(array_keys($highSensitivityOptions)); ?>;
					for (var i = 0; i < availableOptions.length; i++) {
						$('.wf-option.wf-option-toggled[data-option="' + availableOptions[i] + '"]').on('change', function(e, isReset) { //Currently all checkboxes
							if (isReset) {
								return;
							}
							
							var currentScanType = $('.wf-scan-type-option.wf-active');
							if (!currentScanType.hasClass('wf-scan-type-option-custom')) {
								currentScanType.removeClass('wf-active').find('.wf-option-checkbox').attr('aria-checked', 'false');
								$('.wf-scan-type-option.wf-scan-type-option-custom').addClass('wf-active');

								if ($('.wf-scan-type').data('originalValue') == '<?php echo esc_attr(wfScanner::SCAN_TYPE_CUSTOM); ?>') {
									delete WFAD.pendingChanges['scanType'];
								}
								else {
									WFAD.pendingChanges['scanType'] = '<?php echo esc_attr(wfScanner::SCAN_TYPE_CUSTOM); ?>';
								}

								var selectedOptions = currentScanType.data('selectedOptions');
								var keys = Object.keys(selectedOptions);
								for (var i = 0; i < keys.length; i++) {
									if (keys[i] == $(this).data('option')) {
										continue;
									}
									
									var option = $('.wf-option.wf-option-toggled[data-option="' + keys[i] + '"]'); 
									option.find('.wf-option-checkbox').toggleClass('wf-checked', selectedOptions[keys[i]]).attr('aria-checked', selectedOptions[keys[i]] ? 'true' : 'false'); //Currently all checkboxes
									var value = (selectedOptions[keys[i]] ? option.data('enabledValue') : option.data('disabledValue'));
									var originalValue = option.data('originalValue');
									if (originalValue == value) {
										delete WFAD.pendingChanges[keys[i]];
									}
									else {
										WFAD.pendingChanges[keys[i]] = value;
									}
								}
								WFAD.updatePendingChanges();
							}
						});
					}
				});
			})(jQuery);
		</script>
	</li>
</ul>
views/scanner/issue-wfPluginUpgrade.php000064400000007771150755146450014324 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents an issue template.
 */
echo wfView::create('scanner/issue-base', array(
	'internalType' => 'wfPluginUpgrade',
	'displayType' => __('Plugin Upgrade', 'wordfence'),
	'iconSVG' => '<svg viewBox="0 0 20 20"><g><path d="M13.11 4.36L9.87 7.6 8 5.73l3.24-3.24c.35-.34 1.05-.2 1.56.32.52.51.66 1.21.31 1.55zm-8 1.77l.91-1.12 9.01 9.01-1.19.84c-.71.71-2.63 1.16-3.82 1.16H6.14L4.9 17.26c-.59.59-1.54.59-2.12 0-.59-.58-.59-1.53 0-2.12l1.24-1.24v-3.88c0-1.13.4-3.19 1.09-3.89zm7.26 3.97l3.24-3.24c.34-.35 1.04-.21 1.55.31.52.51.66 1.21.31 1.55l-3.24 3.25z"/></g></svg>',
	'summaryControls' => array(wfView::create('scanner/issue-control-ignore', array('ignoreC' => __('Ignore Update', 'wordfence'))), wfView::create('scanner/issue-control-show-details')),
	'detailPairs' => array(
		__('Plugin Name', 'wordfence') => '${data.Name}',
		__('Current Plugin Version', 'wordfence') => '${data.Version}',
		__('New Plugin Version', 'wordfence') => '${data.newVersion}',
		null,
		__('Details', 'wordfence') => '{{if data.vulnerable}}<strong>' . esc_html__('Update includes security-related fixes.', 'wordfence') . '</strong><br>{{/if}}{{html longMsg}}<br><a href="' . get_admin_url() . 'update-core.php' . '">' . esc_html__('Click here to update now', 'wordfence') . '</a>.',
		null,
		__('Plugin URL', 'wordfence') => array('data.PluginURI', '<a href="${data.PluginURI}" target="_blank" rel="noopener noreferrer"><span class="wf-hidden-xs wf-split-word">${data.PluginURI}</span><span class="wf-visible-xs">' . __('View', 'wordfence') . '</span><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>'),
		__('Changelog', 'wordfence') => array('data.wpURL', '<a href="${data.wpURL}/#developers" target="_blank" rel="noopener noreferrer"><span class="wf-hidden-xs wf-split-word">${data.wpURL}/#developers</span><span class="wf-visible-xs">' . __('View', 'wordfence') . '</span><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>'),
		__('Vulnerability Information', 'wordfence') => array('data.vulnerabilityLink', '<a href="${data.vulnerabilityLink}" target="_blank" rel="noopener noreferrer"><span class="wf-hidden-xs wf-split-word">${data.vulnerabilityLink}</span><span class="wf-visible-xs">' . __('View', 'wordfence') . '</span><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>'),
		__('Vulnerability Severity', 'wordfence') => array('data.cvssScore', '${data.cvssScore}/10.0 (<span class="${data.severityClass}" data-tooltip="test" title="This is the severity of the vulnerability itself, which can differ from the scan result severity. Some lower-severity vulnerabilities may still be important to address depending on your site\'s configuration and user base, so they are still important for you to review.">${data.severityLabel}</span>)'),
	),
	'detailControls' => array(
		'<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-issue-control-mark-fixed" role="button">' . __('Mark as Fixed', 'wordfence') . '</a>',
		'<a href="' . esc_url(wfUtils::wpAdminURL('update-core.php')) . '" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-issue-control-view-updates">' . __('View Updates', 'wordfence') . '</a>',
	),
	'textOutput' => (isset($textOutput) ? $textOutput : null),
	'textOutputDetailPairs' => array(
		__('Plugin Name', 'wordfence') => '$data.Name',
		__('Current Plugin Version', 'wordfence') => '$data.Version',
		__('New Plugin Version', 'wordfence') => '$data.newVersion',
		null,
		__('Details', 'wordfence') => '$longMsg',
		__('Vulnerability Status', 'wordfence') => array('$data.vulnerable', __('Update includes security-related fixes.', 'wordfence')),
		null,
		__('Plugin URL', 'wordfence') => '$data.PluginURI',
		__('Repository URL', 'wordfence') => '$data.wpURL',
		__('Vulnerability Information', 'wordfence') => '$data.vulnerabilityLink',
		__('Vulnerability Severity', 'wordfence') => '${data.cvssScore}/10.0 (${data.severityLabel})',
	),
))->render(); views/scanner/issue-spamvertizeCheck.php000064400000002502150755146450014513 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents an issue template.
 */
echo wfView::create('scanner/issue-base', array(
	'internalType' => 'spamvertizeCheck',
	'displayType' => __('Spam', 'wordfence'),
	'iconSVG' => '<svg viewBox="0 0 20 20"><g><path d="M18 13h1c.55 0 1 .45 1 1.01v2.98c0 .56-.45 1.01-1 1.01h-4c-.55 0-1-.45-1-1.01v-2.98c0-.56.45-1.01 1-1.01h1v-2h-5v2h1c.55 0 1 .45 1 1.01v2.98c0 .56-.45 1.01-1 1.01H8c-.55 0-1-.45-1-1.01v-2.98c0-.56.45-1.01 1-1.01h1v-2H4v2h1c.55 0 1 .45 1 1.01v2.98C6 17.55 5.55 18 5 18H1c-.55 0-1-.45-1-1.01v-2.98C0 13.45.45 13 1 13h1v-2c0-1.1.9-2 2-2h5V7H8c-.55 0-1-.45-1-1.01V3.01C7 2.45 7.45 2 8 2h4c.55 0 1 .45 1 1.01v2.98C13 6.55 12.55 7 12 7h-1v2h5c1.1 0 2 .9 2 2v2z"/></g></svg>',
	'summaryControls' => array(wfView::create('scanner/issue-control-ignore', array('ignoreP' => __('Ignore', 'wordfence'))), wfView::create('scanner/issue-control-show-details')),
	'detailPairs' => array(
		__('Details', 'wordfence') => '{{html longMsg}}',
	),
	'detailControls' => array(
		'<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-issue-control-mark-fixed" role="button">' . __('Mark as Fixed', 'wordfence') . '</a>',
	),
	'textOutput' => (isset($textOutput) ? $textOutput : null),
	'textOutputDetailPairs' => array(
		__('Details', 'wordfence') => '$longMsg',
	),
))->render();views/scanner/scan-results.php000064400000020437150755146450012510 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents the scan results.
 *
 * Expects $scanner and $issues.
 *
 * @var wfScanner $scanner The scanner state.
 * @var wfIssues $issues The issues state.
 */

$hasDeleteableIssue = !!$issues->getDeleteableIssueCount();
$hasRepairableIssue = !!$issues->getFixableIssueCount();

$tabs = array(
  new wfTab('new', 'new', __('Results<span class="wf-hidden-xs"> Found</span>', 'wordfence'), ''),
  new wfTab('ignored', 'ignored', __('Ignored<span class="wf-hidden-xs"> Results</span>', 'wordfence'), ''),
)
?>
<ul class="wf-scan-tabs" role="tablist">
  <?php foreach ($tabs as $index => $t): ?> 
	<?php
	$a = $t->a;
	if (!preg_match('/^https?:\/\//i', $a)) {
	  $a = '#' . urlencode($a);
	}
	?>
	<li class="wf-tab<?php if ($index == 0) { echo ' wf-active'; } ?>" id="wf-scan-tab-<?php echo esc_attr($t->id); ?>" data-target="<?php echo esc_attr($t->id); ?>" data-tab-title="<?php echo esc_attr($t->tabTitle); ?>"><a href="<?php echo esc_attr($a); ?>" aria-selected="<?php echo json_encode($index == 0) ?>" role="tab"><?php echo $t->tabTitle; ?></a></li>
  <?php endforeach; ?>
	<li id="wf-scan-bulk-buttons"><span class="wf-hidden-xs"><a href="#" id="wf-scan-bulk-buttons-delete" class="wf-btn wf-btn-default wf-btn-callout-subtle<?php echo ($hasDeleteableIssue ? '' : ' wf-disabled'); ?>" role="button"><?php esc_html_e('Delete All Deletable Files', 'wordfence'); ?></a>&nbsp;&nbsp;&nbsp;<a href="#" id="wf-scan-bulk-buttons-repair" class="wf-btn wf-btn-default wf-btn-callout-subtle<?php echo ($hasRepairableIssue ? '' : ' wf-disabled'); ?>" role="button"><?php esc_html_e('Repair All Repairable Files', 'wordfence'); ?></a></span></li>
</ul>
<ul class="wf-scan-results">
	<li class="wf-scan-results-stats">
		<div class="wf-block wf-active">
			<div class="wf-block-content">
				<ul class="wf-block-list wf-block-list-horizontal wf-block-list-horizontal-5 wf-block-list-equal wf-hidden-xs">
					<li>
						<ul class="wf-flex-horizontal wf-flex-full-width">
							<li><?php esc_html_e('Posts, Comments, &amp; Files', 'wordfence'); ?></li>
							<li class="wf-scan-results-stats-postscommentsfiles"><?php echo $scanner->getSummaryItem(wfScanner::SUMMARY_SCANNED_POSTS, 0) + $scanner->getSummaryItem(wfScanner::SUMMARY_SCANNED_COMMENTS, 0) + $scanner->getSummaryItem(wfScanner::SUMMARY_SCANNED_FILES, 0); ?></li>
						</ul>
					</li>
					<li>
						<ul class="wf-flex-horizontal wf-flex-full-width">
							<li><?php esc_html_e('Themes &amp; Plugins', 'wordfence'); ?></li>
							<li class="wf-scan-results-stats-themesplugins"><?php echo $scanner->getSummaryItem(wfScanner::SUMMARY_SCANNED_PLUGINS, 0) + $scanner->getSummaryItem(wfScanner::SUMMARY_SCANNED_THEMES, 0); ?></li>
						</ul>
					</li>
					<li>
						<ul class="wf-flex-horizontal wf-flex-full-width">
							<li><?php esc_html_e('Users Checked', 'wordfence'); ?></li>
							<li class="wf-scan-results-stats-users"><?php echo $scanner->getSummaryItem(wfScanner::SUMMARY_SCANNED_USERS, 0); ?></li>
						</ul>
					</li>
					<li>
						<ul class="wf-flex-horizontal wf-flex-full-width">
							<li><?php esc_html_e('URLs Checked', 'wordfence'); ?></li>
							<li class="wf-scan-results-stats-urls"><?php echo $scanner->getSummaryItem(wfScanner::SUMMARY_SCANNED_URLS, 0); ?></li>
						</ul>
					</li>
					<li>
						<ul class="wf-flex-horizontal wf-flex-full-width">
							<li><?php esc_html_e('Results Found', 'wordfence'); ?></li>
							<li class="wf-scan-results-stats-issues"><?php echo $issues->getIssueCount(); ?></li>
						</ul>
					</li>
				</ul>
				<ul class="wf-block-list wf-hidden-sm wf-hidden-md wf-hidden-lg">
					<li>
						<ul class="wf-flex-horizontal wf-flex-full-width">
							<li><?php esc_html_e('Posts, Comments, &amp; Files', 'wordfence'); ?></li>
							<li class="wf-scan-results-stats-postscommentsfiles"><?php echo $scanner->getSummaryItem(wfScanner::SUMMARY_SCANNED_POSTS, 0) + $scanner->getSummaryItem(wfScanner::SUMMARY_SCANNED_COMMENTS, 0) + $scanner->getSummaryItem(wfScanner::SUMMARY_SCANNED_FILES, 0); ?></li>
						</ul>
					</li>
					<li>
						<ul class="wf-flex-horizontal wf-flex-full-width">
							<li><?php esc_html_e('Themes &amp; Plugins', 'wordfence'); ?></li>
							<li class="wf-scan-results-stats-themesplugins"><?php echo $scanner->getSummaryItem(wfScanner::SUMMARY_SCANNED_PLUGINS, 0) + $scanner->getSummaryItem(wfScanner::SUMMARY_SCANNED_THEMES, 0); ?></li>
						</ul>
					</li>
					<li>
						<ul class="wf-flex-horizontal wf-flex-full-width">
							<li><?php esc_html_e('Users Checked', 'wordfence'); ?></li>
							<li class="wf-scan-results-stats-users"><?php echo $scanner->getSummaryItem(wfScanner::SUMMARY_SCANNED_USERS, 0); ?></li>
						</ul>
					</li>
					<li>
						<ul class="wf-flex-horizontal wf-flex-full-width">
							<li><?php esc_html_e('URLs Checked', 'wordfence'); ?></li>
							<li class="wf-scan-results-stats-urls"><?php echo $scanner->getSummaryItem(wfScanner::SUMMARY_SCANNED_URLS, 0); ?></li>
						</ul>
					</li>
					<li>
						<ul class="wf-flex-horizontal wf-flex-full-width">
							<li><?php esc_html_e('Results Found', 'wordfence'); ?></li>
							<li class="wf-scan-results-stats-issues"><?php echo $issues->getIssueCount(); ?></li>
						</ul>
					</li>
				</ul>
			</div>
	</li>
	<li class="wf-scan-results-issues wf-active" id="wf-scan-results-new" data-issue-type="new"></li>
	<li class="wf-scan-results-issues" id="wf-scan-results-ignored" data-issue-type="ignored"></li>
</ul>
<script type="application/javascript">
	(function($) {
		WFAD.scanIssuesOffset = 0;
		
		var issuesWrapper = $('.wf-scan-results');
		var hasScrolled = false;
		$(window).on('scroll', function() {
			var win = $(this);
			// console.log(win.scrollTop() + window.innerHeight, liveTrafficWrapper.outerHeight() + liveTrafficWrapper.offset().top);
			var currentScrollBottom = win.scrollTop() + window.innerHeight;
			var scrollThreshold = issuesWrapper.outerHeight() + issuesWrapper.offset().top;
			if (hasScrolled && !WFAD.loadingIssues && currentScrollBottom >= scrollThreshold) {
				// console.log('infinite scroll');

				WFAD.loadingIssues = true;
				hasScrolled = false;
				WFAD.loadMoreIssues(function() {
					WFAD.loadingIssues = false;
				}, WFAD.scanIssuesOffset, null, WFAD.scanIssuesIgnoredOffset);
			}
			else if (currentScrollBottom < scrollThreshold) {
				hasScrolled = true;
				// console.log('no infinite scroll');
			}
		});
		
		$(function() {
			$('.wf-scan-tabs .wf-tab a').on('click', function(e) {
				e.preventDefault();
				e.stopPropagation();

				$('.wf-scan-tabs').find('.wf-tab').removeClass('wf-active').find('a').attr('aria-selected', false);
				$('.wf-scan-results-issues').removeClass('wf-active');

				var tab = $(this).closest('.wf-tab');
				tab.addClass('wf-active');
				tab.find('a').attr('aria-selected', 'true');
				var content = $('#wf-scan-results-' + tab.data('target'));
				content.addClass('wf-active');
			});
			
			$('#wf-scan-bulk-buttons-delete').on('click', function(e) {
				e.preventDefault();
				e.stopPropagation();

				var prompt = $('#wfTmpl_scannerDelete').tmpl();
				var promptHTML = $("<div />").append(prompt).html();
				WFAD.colorboxHTML((WFAD.isSmallScreen ? '300px' : '700px'), promptHTML, {overlayClose: false, closeButton: false, className: 'wf-modal', onComplete: function() {
					$('#wf-scanner-prompt-cancel').on('click', function(e) { 
						e.preventDefault();
						e.stopPropagation();

						WFAD.colorboxClose();
					});

					$('#wf-scanner-prompt-confirm').on('click', function(e) {
						e.preventDefault();
						e.stopPropagation();

						WFAD.bulkOperationConfirmed('del');
					});
				}});
			});

			$('#wf-scan-bulk-buttons-repair').on('click', function(e) {
				e.preventDefault();
				e.stopPropagation();

				var prompt = $('#wfTmpl_scannerRepair').tmpl();
				var promptHTML = $("<div />").append(prompt).html();
				WFAD.colorboxHTML((WFAD.isSmallScreen ? '300px' : '700px'), promptHTML, {overlayClose: false, closeButton: false, className: 'wf-modal', onComplete: function() {
					$('#wf-scanner-prompt-cancel').on('click', function(e) {
						e.preventDefault();
						e.stopPropagation();

						WFAD.colorboxClose();
					});

					$('#wf-scanner-prompt-confirm').on('click', function(e) {
						e.preventDefault();
						e.stopPropagation();

						WFAD.bulkOperationConfirmed('repair');
					});
				}});
			});
		});
	})(jQuery);
</script>views/scanner/scan-starter.php000064400000003526150755146450012473 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents a block list element specifically for the start scan button.
 *
 * Expects $running.
 *
 * @var bool $running Whether or not the scan is currently running.
 */
?>
<div id="wf-scan-starter" class="wf-block-navigation-option">
	<div class="wf-block-navigation-option-content">
		<a href="#" class="wf-btn wf-btn-primary wf-btn-callout-subtle wf-scan-starter-idle" style="<?php if ($running) { echo 'display: none;'; } ?>" role="button"><?php esc_html_e('Start New Scan', 'wordfence'); ?></a>
		<a href="#" class="wf-btn wf-btn-primary wf-btn-callout-subtle wf-scan-starter-running" style="<?php if (!$running) { echo 'display: none;'; } ?>;" role="button"><?php esc_html_e('Stop Scan', 'wordfence'); ?></a> 
	</div>
</div>
<script type="application/javascript">
	(function($) {
		$('#wf-scan-starter a').on('click', function(e) {
			e.preventDefault();
			e.stopPropagation();

			if ($(this).hasClass('wf-scan-starter-idle')) {
				WFAD.startScan();
				$('#wf-scan-running-bar').show();
			}
			else {
				WFAD.killScan(function(success) {
					WFAD.colorboxModal((WFAD.isSmallScreen ? '300px' : '400px'), success ? '<?php esc_attr_e('Scan Stopping', 'wordfence'); ?>' : '<?php esc_attr_e('Stop Failed', 'wordfence'); ?>', success ? '<?php esc_attr_e('A termination request has been sent to stop any running scans.', 'wordfence'); ?>' : '<?php esc_attr_e('We failed to send a termination request.', 'wordfence'); ?>');
				});
				$('#wf-scan-running-bar').hide();
			}
		});
		
		$(window).on('wfScanUpdateButtons', function() {
			if (WFAD.scanRunning) {
				$('.wf-scan-starter-idle').hide();
				$('.wf-scan-starter-running').show();
			}
			else {
				$('.wf-scan-starter-idle').show().toggleClass('wf-disabled', WFAD.scanStalled);
				$('.wf-scan-starter-running').hide();
			}
		})
	})(jQuery);
</script>views/scanner/scan-progress.php000064400000005540150755146450012651 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents a block list element specifically for the scan progress indicator.
 *
 * Expects $scanner.
 *
 * @var wfScanner $scanner The scanner state.
 */

$status = $scanner->stageStatus();
?>
<ul class="wf-scanner-progress">
	<?php
	echo wfView::create('scanner/scan-progress-element', array(
		'scanner' => $scanner,
		'id' => 'wf-scan-spamvertising',
		'title' => __('Spamvertising Checks', 'wordfence'),
		'status' => $status[wfScanner::STAGE_SPAMVERTISING_CHECKS],
	))->render();
	
	echo wfView::create('scanner/scan-progress-element', array(
		'scanner' => $scanner,
		'id' => 'wf-scan-spam',
		'title' => __('Spam Check', 'wordfence'),
		'status' => $status[wfScanner::STAGE_SPAM_CHECK],
	))->render();
	
	echo wfView::create('scanner/scan-progress-element', array(
		'scanner' => $scanner,
		'id' => 'wf-scan-blacklist',
		'title' => __('Blocklist Check', 'wordfence'),
		'status' => $status[wfScanner::STAGE_BLACKLIST_CHECK],
	))->render();
	
	echo wfView::create('scanner/scan-progress-element', array(
		'scanner' => $scanner,
		'id' => 'wf-scan-server',
		'title' => __('Server State', 'wordfence'),
		'status' => $status[wfScanner::STAGE_SERVER_STATE],
	))->render();
	
	echo wfView::create('scanner/scan-progress-element', array(
		'scanner' => $scanner,
		'id' => 'wf-scan-changes',
		'title' => __('File Changes', 'wordfence'),
		'status' => $status[wfScanner::STAGE_FILE_CHANGES],
	))->render();
	
	echo wfView::create('scanner/scan-progress-element', array(
		'scanner' => $scanner,
		'id' => 'wf-scan-malware',
		'title' => __('Malware Scan', 'wordfence'),
		'status' => $status[wfScanner::STAGE_MALWARE_SCAN],
	))->render();
	
	echo wfView::create('scanner/scan-progress-element', array(
		'scanner' => $scanner,
		'id' => 'wf-scan-content',
		'title' => __('Content Safety', 'wordfence'),
		'status' => $status[wfScanner::STAGE_CONTENT_SAFETY],
	))->render();
	
	echo wfView::create('scanner/scan-progress-element', array(
		'scanner' => $scanner,
		'id' => 'wf-scan-public',
		'title' => __('Public Files', 'wordfence'),
		'status' => $status[wfScanner::STAGE_PUBLIC_FILES],
	))->render();
	
	echo wfView::create('scanner/scan-progress-element', array(
		'scanner' => $scanner,
		'id' => 'wf-scan-password',
		'title' => __('Password Strength', 'wordfence'),
		'status' => $status[wfScanner::STAGE_PASSWORD_STRENGTH],
	))->render();
	
	echo wfView::create('scanner/scan-progress-element', array(
		'scanner' => $scanner,
		'id' => 'wf-scan-vulnerability',
		'title' => __('Vulnerability Scan', 'wordfence'),
		'status' => $status[wfScanner::STAGE_VULNERABILITY_SCAN],
	))->render();
	
	echo wfView::create('scanner/scan-progress-element', array(
		'scanner' => $scanner,
		'id' => 'wf-scan-options',
		'title' => __('User & Option Audit', 'wordfence'),
		'status' => $status[wfScanner::STAGE_OPTIONS_AUDIT],
	))->render();
	?>
</ul>
views/scanner/issue-knownfile.php000064400000005741150755146450013210 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents an issue template.
 */
echo wfView::create('scanner/issue-base', array(
	'internalType' => 'knownfile',
	'displayType' => __('File', 'wordfence'),
	'iconSVG' => '<svg viewBox="0 0 46 55" ><path d="M43.557,13.609l-11.214,-11.175c-1.303,-1.246 -2.962,-2.058 -4.747,-2.324l0,18.223l18.294,0c-0.269,-1.777 -1.084,-3.427 -2.333,-4.724l0,0Z" fill="#9e9e9e"/><path d="M26.465,22.921c-0.005,0 -0.011,0 -0.016,0c-1.885,0 -3.435,-1.545 -3.435,-3.423c0,-0.005 0,-0.011 0,-0.016l0,-19.482l-19.562,0c-0.921,-0.019 -1.809,0.346 -2.449,1.005c-0.658,0.637 -1.022,1.52 -1.003,2.434l0,48.127c-0.019,0.915 0.345,1.797 1.003,2.434c0.639,0.658 1.524,1.023 2.443,1.005l39.102,0c0.004,0.001 0.008,0.001 0.012,0.001c1.884,0 3.435,-1.546 3.435,-3.423c0,-0.006 0,-0.011 -0.001,-0.017l0,-28.645l-19.529,0Z" fill="#9e9e9e"/></svg>',
	'summaryControls' => array(wfView::create('scanner/issue-control-repair'), wfView::create('scanner/issue-control-ignore', array('ignoreP' => __('Always Ignore', 'wordfence'), 'ignoreC' => __('Ignore Until File Changes', 'wordfence'))), wfView::create('scanner/issue-control-show-details')),
	'detailPairs' => array(
		__('Filename', 'wordfence') => '<span class="wf-split-word-xs">${data.realFile}</span>',
		__('File Type', 'wordfence') => '{{if data.cType}}${WFAD.ucfirst(data.cType)}{{else}}' . __('Not a core, theme, or plugin file from wordpress.org', 'wordfence') . '.{{/if}}',
		__('Bad URL', 'wordfence') => array('(typeof data.badURL !== \'undefined\') && data.badURL', '${data.badURL}'),
		null,
		__('Details', 'wordfence') => '{{html longMsg}}',
	),
	'detailControls' => array(
		'{{if data.fileExists}}<a target="_blank" class="wf-btn wf-btn-default wf-btn-callout-subtle" rel="noopener noreferrer" href="${WFAD.makeViewFileLink(data)}">' . __('View File', 'wordfence') . '<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>{{/if}}',
		'{{if data.canDiff}}<a target="_blank" class="wf-btn wf-btn-default wf-btn-callout-subtle" rel="noopener noreferrer" href="${WFAD.makeDiffLink(data)}">' . __('View Differences', 'wordfence') . '<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>{{/if}}',
		'{{if data.canDelete}}<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-issue-control-delete-file" role="button">' . __('Delete File', 'wordfence') . '</a>{{/if}}',
		'<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-issue-control-mark-fixed" role="button">' . __('Mark as Fixed', 'wordfence') . '</a>',
	),
	'textOutput' => (isset($textOutput) ? $textOutput : null),
	'textOutputDetailPairs' => array(
		__('Filename', 'wordfence') => '$data.realFile',
		__('File Type', 'wordfence') => '$data.ucType',
		__('File Type', 'wordfence') => array('!$data.ucType', 'Not a core, theme, or plugin file from wordpress.org'),
		__('Bad URL', 'wordfence') => '$data.badURL',
		null,
		__('Details', 'wordfence') => '$longMsg',
	),
))->render();views/scanner/option-scan-signatures.php000064400000013546150755146450014504 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents the scan option scansEnabled_fileContents with a boolean on/off toggle checkbox and text area (hidden by default) for custom scan signatures.
 *
 * Expects $toggleOptionName, $enabledToggleValue, $disabledToggleValue, $toggleValue, $textAreaOptionName, $textAreaValue, and $title to be defined. $helpLink may also be defined.
 *
 * @var string $toggleOptionName The option name for the toggle portion.
 * @var string $enabledToggleValue The value to save in $toggleOption if the toggle is enabled.
 * @var string $disabledToggleValue The value to save in $toggleOption if the toggle is disabled.
 * @var string $toggleValue The current value of $toggleOptionName.
 * @var string $textAreaOptionName The option name for the text area portion.
 * @var string $textAreaValue The current value of $textAreaOptionName.
 * @var string $title The title shown for the option.
 * @var string $helpLink If defined, the link to the corresponding external help page.
 */
?>
<ul class="wf-flex-vertical wf-flex-full-width">
	<li>
		<ul id="wf-option-scansEnabled-fileContents" class="wf-option wf-option-scan-signatures" data-toggle-option="scansEnabled_fileContents" data-enabled-toggle-value="1" data-disabled-toggle-value="0" data-original-toggle-value="<?php echo wfConfig::get('scansEnabled_fileContents') ? 1 : 0; ?>" data-text-area-option="scan_include_extra" data-original-text-area-value="<?php echo esc_attr(wfConfig::get('scan_include_extra')); ?>">
			<li class="wf-option-checkbox<?php echo (wfConfig::get('scansEnabled_fileContents') ? ' wf-checked' : ''); ?>" role="checkbox" aria-checked="<?php echo ($value == $enabledValue ? 'true' : 'false'); ?>" tabindex="0" aria-labelledby="wf-option-scansEnabled-fileContents-label"><i class="wf-ion-ios-checkmark-empty" aria-hidden="true"></i></li>
			<li class="wf-option-title"><span id="wf-option-scansEnabled-fileContents-label"><?php echo esc_html($title); ?></span> <a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_SCAN_OPTION_MALWARE_SIGNATURES); ?>"  target="_blank" rel="noopener noreferrer" class="wf-inline-help"><i class="wf-fa wf-fa-question-circle-o" aria-hidden="true"></i><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></li>
			<li class="wf-option-disclosure"><svg width="12px" height="12px" viewBox="0 0 12 12"><path id="disclosure-closed" d="M 6 0 l 6 6 -6 6 0 -12" fill="#777"/></svg></li>
		</ul>
	</li>
	<li id="wf-scan-additional-signatures">
		<h4 id="wf-scan-additional-signatures-label"><?php esc_html_e('Add Additional Signatures', 'wordfence') ?></h4>
		<textarea id="wf-option-scan-include-extra" spellcheck="false" autocapitalize="none" autocomplete="off" aria-labelledby="wf-scan-additional-signatures-label"><?php echo esc_html(wfConfig::get('scan_include_extra')); ?></textarea>
	</li>
</ul>
<script type="application/javascript">
	(function($) {
		$(function() {
			$('.wf-option.wf-option-scan-signatures .wf-option-checkbox').each(function() {
				$(this).on('click', function(e) {
					e.preventDefault();
					e.stopPropagation();

					var optionElement = $(this).closest('.wf-option');
					var option = optionElement.data('toggleOption');
					var value = false;
					var isActive = $(this).hasClass('wf-checked');
					if (isActive) {
						$(this).removeClass('wf-checked').attr('aria-checked', 'false');
						value = optionElement.data('disabledToggleValue');
					}
					else {
						$(this).addClass('wf-checked').attr('aria-checked', 'true');
						value = optionElement.data('enabledToggleValue');
					}

					var originalValue = optionElement.data('originalToggleValue');
					if (originalValue == value) {
						delete WFAD.pendingChanges[option];
					}
					else {
						WFAD.pendingChanges[option] = value;
					}

					WFAD.updatePendingChanges();
				});
			});

			$('#wf-scan-additional-signatures textarea').on('change paste keyup', function() {
				var e = this;
				
				setTimeout(function() {
					var optionElement = $(e).closest('ul').find('.wf-option.wf-option-scan-signatures');
					var option = optionElement.data('textAreaOption');
					var value = $(e).val();
	
					var originalValue = optionElement.data('originalTextAreaValue');
					if (originalValue == value) {
						delete WFAD.pendingChanges[option];
					}
					else {
						WFAD.pendingChanges[option] = value;
					}
	
					WFAD.updatePendingChanges();
				}, 4);
			});

			$(window).on('wfOptionsReset', function() {
				$('.wf-option.wf-option-scan-signatures .wf-option-checkbox').each(function() {
					var optionElement = $(this).closest('.wf-option');
					$(this).toggleClass('wf-checked', !!parseInt(optionElement.data('originalToggleValue')));
				});

				$('#wf-scan-additional-signatures textarea').each(function() {
					var optionElement = $(this).closest('ul').find('.wf-option.wf-option-scan-signatures');
					var originalValue = optionElement.data('originalTextAreaValue');
					$(this).val(originalValue);
				});
			});
			
			$('.wf-option.wf-option-scan-signatures .wf-option-disclosure').each(function() {
				var disclosure = $(this).find('svg');
				
				$(this).closest('.wf-option').css('cursor', 'pointer');
				$(this).closest('.wf-option').on('click', function(e) {
					e.preventDefault();
					e.stopPropagation();
		
					var isActive = $('#wf-scan-additional-signatures').hasClass('wf-active');
					if (isActive) {
						disclosure.css('transform', 'rotate(0deg)');
						$('#wf-scan-additional-signatures').slideUp({
							always: function() {
								$('#wf-scan-additional-signatures').removeClass('wf-active');
							}
						});
					}
					else {
						disclosure.css('transform', 'rotate(90deg)');
						$('#wf-scan-additional-signatures').slideDown({
							always: function() {
								$('#wf-scan-additional-signatures').addClass('wf-active');
							}
						});
					}
				});
			});
		});
	})(jQuery);
</script> views/scanner/issue-wfPluginVulnerable.php000064400000006023150755146450015021 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents an issue template.
 */
echo wfView::create('scanner/issue-base', array(
	'internalType' => 'wfPluginVulnerable',
	'displayType' => __('Plugin Vulnerable', 'wordfence'),
	'iconSVG' => '<svg viewBox="0 0 20 20"><g><path d="M13.11 4.36L9.87 7.6 8 5.73l3.24-3.24c.35-.34 1.05-.2 1.56.32.52.51.66 1.21.31 1.55zm-8 1.77l.91-1.12 9.01 9.01-1.19.84c-.71.71-2.63 1.16-3.82 1.16H6.14L4.9 17.26c-.59.59-1.54.59-2.12 0-.59-.58-.59-1.53 0-2.12l1.24-1.24v-3.88c0-1.13.4-3.19 1.09-3.89zm7.26 3.97l3.24-3.24c.34-.35 1.04-.21 1.55.31.52.51.66 1.21.31 1.55l-3.24 3.25z"/></g></svg>',
	'summaryControls' => array(wfView::create('scanner/issue-control-ignore', array('ignoreC' => __('Ignore', 'wordfence'))), wfView::create('scanner/issue-control-show-details')),
	'detailPairs' => array(
		__('Plugin Name', 'wordfence') => '${data.Name}',
		__('Current Plugin Version', 'wordfence') => '${data.Version}',
		null,
		__('Details', 'wordfence') => '{{html longMsg}}',
		null,
		__('Repository URL', 'wordfence') => array('data.wpURL', '<a href="${data.wpURL}" target="_blank" rel="noopener noreferrer"><span class="wf-hidden-xs wf-split-word">${data.wpURL}</span><span class="wf-visible-xs">' . __('View', 'wordfence') . '</span><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>'),
		__('Vulnerability Information', 'wordfence') => array('data.vulnerabilityLink', '<a href="${data.vulnerabilityLink}" target="_blank" rel="noopener noreferrer"><span class="wf-hidden-xs wf-split-word">${data.vulnerabilityLink}</span><span class="wf-visible-xs">' . __('View', 'wordfence') . '</span><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>'),
		__('Vulnerability Severity', 'wordfence') => array('data.cvssScore', '${data.cvssScore}/10.0 (<span class="${data.severityClass}" data-tooltip="test" title="This is the severity of the vulnerability itself, which can differ from the scan result severity. Some lower-severity vulnerabilities may still be important to address depending on your site\'s configuration and user base, so they are still important for you to review.">${data.severityLabel}</span>)'),
	),
	'detailControls' => array(
		'<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-issue-control-mark-fixed" role="button">' . __('Mark as Fixed', 'wordfence') . '</a>',
		'<a href="' . esc_url(wfUtils::wpAdminURL('plugins.php')) . '" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-issue-control-manage-plugins">' . __('Manage Plugins', 'wordfence') . '</a>',
	),
	'textOutput' => (isset($textOutput) ? $textOutput : null),
	'textOutputDetailPairs' => array(
		__('Plugin Name', 'wordfence') => '$data.Name',
		__('Current Plugin Version', 'wordfence') => '$data.Version',
		null,
		__('Details', 'wordfence') => '$longMsg',
		null,
		__('Vulnerability Information', 'wordfence') => '$data.vulnerabilityLink',
		__('Vulnerability Severity', 'wordfence') => '${data.cvssScore}/10.0 (${data.severityLabel})',
	),
))->render();views/scanner/options-group-basic.php000064400000002605150755146450013766 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents the Basic Scan Type Options group.
 *
 * Expects $scanner and $stateKey.
 *
 * @var wfScanner $scanner
 * @var string $stateKey The key under which the collapse state is stored.
 * @var bool $collapseable If defined, specifies whether or not this grouping can be collapsed. Defaults to true.
 */

if (!isset($collapseable)) {
	$collapseable = true;
}
?>
<div class="wf-row">
	<div class="wf-col-xs-12">
		<div class="wf-block<?php if (!$collapseable) { echo ' wf-always-active'; } else { echo (wfPersistenceController::shared()->isActive($stateKey) ? ' wf-active' : ''); } ?>" data-persistence-key="<?php echo esc_attr($stateKey); ?>">
			<div class="wf-block-header">
				<div class="wf-block-header-content">
					<div class="wf-block-title">
						<strong><?php esc_html_e('Basic Scan Type Options', 'wordfence'); ?></strong>
					</div>
					<?php if ($collapseable): ?><div class="wf-block-header-action"><div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive($stateKey) ? 'true' : 'false'); ?>" tabindex="0"></div></div><?php endif; ?>
				</div>
			</div>
			<div class="wf-block-content">
				<?php
				echo wfView::create('scanner/scan-type', array(
					'scanner' => $scanner,
				))->render();
				?>
			</div>
		</div>
	</div>
</div> <!-- end scan type -->views/scanner/issue-optionBadURL.php000064400000004103150755146450013505 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents an issue template.
 */
echo wfView::create('scanner/issue-base', array(
	'internalType' => 'optionBadURL',
	'displayType' => __('URL', 'wordfence'),
	'iconSVG' => '<svg viewBox="0 0 20 20"><g><path d="M18 16V4c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h13c.55 0 1-.45 1-1zM8 11h1c.55 0 1 .45 1 1s-.45 1-1 1H8v1.5c0 .28-.22.5-.5.5s-.5-.22-.5-.5V13H6c-.55 0-1-.45-1-1s.45-1 1-1h1V5.5c0-.28.22-.5.5-.5s.5.22.5.5V11zm5-2h-1c-.55 0-1-.45-1-1s.45-1 1-1h1V5.5c0-.28.22-.5.5-.5s.5.22.5.5V7h1c.55 0 1 .45 1 1s-.45 1-1 1h-1v5.5c0 .28-.22.5-.5.5s-.5-.22-.5-.5V9z"/></g></svg>',
	'summaryControls' => array(wfView::create('scanner/issue-control-ignore', array('ignoreC' => __('Ignore URL', 'wordfence'), 'ignoreP' => __('Ignore Option', 'wordfence'))), wfView::create('scanner/issue-control-show-details')),
	'detailPairs' => array(
		__('Option Name', 'wordfence') => '${data.optionKey}',
		__('Bad URL', 'wordfence') => '<strong class="wfWarn wf-split-word">${data.badURL}</strong>',
		null,
		__('Details', 'wordfence') => '{{html longMsg}}',
		null,
		__('Multisite Blog ID', 'wordfence') => array('data.isMultisite', '${data.blog_id}'),
		__('Multisite Blog Domain', 'wordfence') => array('data.isMultisite', '${data.domain}'),
		__('Multisite Blog Path', 'wordfence') => array('data.isMultisite', '${data.path}'),
	),
	'detailControls' => array(
		'<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-issue-control-mark-fixed" role="button">' . __('Mark as Fixed', 'wordfence') . '</a>',
	),
	'textOutput' => (isset($textOutput) ? $textOutput : null),
	'textOutputDetailPairs' => array(
		__('Option Name', 'wordfence') => '$data.optionKey',
		__('Bad URL', 'wordfence') => '$data.badURL',
		null,
		__('Details', 'wordfence') => '$longMsg',
		null,
		__('Multisite Blog ID', 'wordfence') => array('$data.isMultisite', '$data.blog_id'),
		__('Multisite Blog Domain', 'wordfence') => array('$data.isMultisite', '$data.domain'),
		__('Multisite Blog Path', 'wordfence') => array('$data.isMultisite', '$data.path'),
	),
))->render();views/scanner/scanner-status.php000064400000007757150755146450013051 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents the scanner status.
 *
 * Expects $scanner to be defined.
 *
 * @var wfScanner $scanner The scanner state.
 * @var wfDashboard $dashboard Dashboard statistics.
 */
?>
<ul class="wf-block-list wf-block-list-horizontal">
	<?php if ($scanner->isEnabled() == 'enabled' && $scanner->signatureMode() == wfScanner::SIGNATURE_MODE_PREMIUM): ?>
		<li>
			<div class="wf-block-labeled-value wf-scan-status wf-scan-status-full-enabled">
				<div class="wf-block-labeled-value-label"><?php
					switch (wfLicense::current()->getType()) {
					case wfLicense::TYPE_RESPONSE:
						esc_html_e('Wordfence Scan &amp; Response License Enabled', 'wordfence');
						break;
					case wfLicense::TYPE_CARE:
						esc_html_e('Wordfence Scan &amp; Care License Enabled', 'wordfence');
						break;
					default:
						esc_html_e('Wordfence Scan &amp; Premium Enabled', 'wordfence');
						break;
					}
				?></div>
			</div>
		</li>
	<?php else: ?>
		<li>
			<?php if (!$scanner->isEnabled()): ?>
				<div class="wf-scan-status-disabled">
					<p><h3><?php esc_html_e('Wordfence Scan Deactivated', 'wordfence'); ?></h3></p>
					<p><?php esc_html_e('A Wordfence scan examines all files, posts, pages, and comments on your WordPress website looking for malware, known malicious URLs, and known patterns of infections. It also does several other reputation and server checks.', 'wordfence'); ?></p>
					<p>
						<a class="wf-btn wf-btn-primary wf-btn-callout-subtle" href="#" target="_blank" rel="noopener noreferrer" id="wf-scan-top-enable-scans" role="button"><?php esc_html_e('Enable Automatic Scans', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>
						<script type="application/javascript">
							(function($) {
								$(function() {
									$('#wf-scan-top-enable-scans').on('click', function(e) {
										e.preventDefault();
										e.stopPropagation();

										WFAD.setOption('scheduledScansEnabled', 1, function() {
											window.location.reload(true);
										});
									});
								});
							})(jQuery);
						</script>
					</p>
				</div>
			<?php else: ?>
				<div class="wf-block-labeled-value wf-scan-status wf-scan-status-enabled">
					<div class="wf-block-labeled-value-value"><i class="wf-fa wf-fa-check" aria-hidden="true"></i></div>
					<div class="wf-block-labeled-value-label"><?php esc_html_e('Wordfence Scan Enabled', 'wordfence'); ?></div>
				</div>
			<?php endif; ?>
		</li>
		<li>
			<?php if ($scanner->signatureMode() == wfScanner::SIGNATURE_MODE_COMMUNITY): ?>
				<div>
					<p><h3><?php esc_html_e('Premium Protection Disabled', 'wordfence'); ?></h3></p>
					<p><?php esc_html_e('As a free Wordfence user, you are currently using the Community version of the Threat Defense Feed. Premium users are protected by additional firewall rules and malware signatures as well as the Wordfence real-time IP blocklist. Upgrade to Premium today to improve your protection.', 'wordfence'); ?></p>
					<p><a class="wf-btn wf-btn-primary wf-btn-callout-subtle" href="https://www.wordfence.com/gnl1scanUpgrade/wordfence-signup/#premium-order-form" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Upgrade to Premium', 'wordfence'); ?></a>&nbsp;&nbsp;<a class="wf-btn wf-btn-callout-subtle wf-btn-default" href="https://www.wordfence.com/gnl1scanLearn/wordfence-signup/" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Learn More', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></p>
				</div>
			<?php else: ?>
				<div class="wf-block-labeled-value wf-protection-status wf-protection-status-<?php echo esc_attr($scanner->signatureMode()); ?>">
					<div class="wf-block-labeled-value-value"><i class="wf-fa wf-fa-check" aria-hidden="true"></i></div>
					<div class="wf-block-labeled-value-label"><?php esc_html_e('Premium Protection Enabled', 'wordfence'); ?></div>
				</div>
			<?php endif; ?>
		</li>
	<?php endif; ?>
</ul>views/onboarding/banner.php000064400000004313150755146450012016 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents the persistent banner.
 */
?>
<ul id="wf-onboarding-banner">
	<li><?php esc_html_e('Wordfence installation is incomplete', 'wordfence'); ?></li>
	<li>
		<?php if (isset($dismissable) && $dismissable): ?>
			<a href="#" class="wf-onboarding-btn wf-onboarding-btn-default" id="wf-onboarding-delay" data-timestamp="<?php echo time(); ?>"><?php esc_html_e('Remind Me Later', 'wordfence'); ?></a>
		<?php endif ?>
		<a href="<?php echo esc_attr(network_admin_url('admin.php?page=WordfenceSupport')); ?>" class="wf-onboarding-btn wf-onboarding-btn-default" id="wf-onboarding-resume"><?php esc_html_e('Resume Installation', 'wordfence'); ?></a>
	</li>
</ul>
<div style="display: none;">
	<div class="wf-modal" id="wf-onboarding-registration-delayed-template">
		<div class="wf-modal-header">
			<div class="wf-modal-header-content">
				<div class="wf-modal-title"><strong><?php esc_html_e('Notice Dismissed', 'wordfence') ?></strong></div>
			</div>
		</div>
		<div class="wf-modal-content"><span class="message"><?php esc_html_e('You will be reminded again in 12 hours.', 'wordfence') ?></span></div>
		<div class="wf-modal-footer">
			<ul class="wf-onboarding-flex-horizontal wf-onboarding-flex-align-right wf-onboarding-full-width">
				<li><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" onclick="jQuery.wfcolorbox.close(); return false;" role="button">Close</a></li>
			</ul>
		</div>
	</div>
	<div class="wf-modal" id="wf-onboarding-registration-delayed-error-template">
		<div class="wf-modal-header">
			<div class="wf-modal-header-content">
				<div class="wf-modal-title"><strong><?php esc_html_e('Error', 'wordfence') ?></strong></div>
			</div>
		</div>
		<div class="wf-modal-content"><span class="message"><?php esc_html_e('An unexpected error occurred while attempting to dismiss the notice. Please try again.', 'wordfence') ?></span></div>
		<div class="wf-modal-footer">
			<ul class="wf-onboarding-flex-horizontal wf-onboarding-flex-align-right wf-onboarding-full-width">
				<li><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" onclick="jQuery.wfcolorbox.close(); return false;" role="button">Close</a></li>
			</ul>
		</div>
	</div>
</div>views/onboarding/tour-overlay.php000064400000000235150755146450013220 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents the overlay.
 */
?>
<div id="wf-onboarding-tour-overlay" style="display: none;">
	
</div>
views/onboarding/plugin-header.php000064400000002623150755146450013277 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents the fresh install plugin header.
 */
?>
<div id="wf-onboarding-plugin-header">
	<div id="wf-onboarding-plugin-header-header">
		<div id="wf-onboarding-plugin-header-title"><?php esc_html_e('Please Complete Wordfence Installation', 'wordfence'); ?></div>
		<div id="wf-onboarding-plugin-header-accessory"><a href="#" id="wf-onboarding-plugin-header-dismiss" role="button">&times;</a></div>
	</div>
	<div id="wf-onboarding-plugin-header-content">
		<ul>
			<li id="wf-onboarding-plugin-header-stage-content">
				<div id="wf-onboarding-plugin-header-stage-content-1">
					<?php echo wfView::create('onboarding/registration-prompt', array('attempt' => 2)) ?>
				</div>
			</li>
			<li id="wf-onboarding-plugin-header-stage-image"></li>
		</ul>
	</div>
</div>
<script type="application/javascript">
	(function($) {
		$(function() {
			$('#wf-onboarding-plugin-header-dismiss').on('click', function(e) {
				e.preventDefault();
				e.stopPropagation();

				$(window).trigger('wfOnboardingDismiss2');
				$('#wf-onboarding-plugin-header').slideUp(400, function() {
					$('#wf-onboarding-plugin-overlay').remove();
				});

				if ($('#wf-onboarding-plugin-header-stage-content-1').is(':visible')) {
					wordfenceExt.setOption('onboardingAttempt2', '<?php echo esc_attr(wfOnboardingController::ONBOARDING_SKIPPED); ?>');
				}
			});
		});
	})(jQuery);
</script>views/onboarding/fresh-install.php000064400000002216150755146450013324 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents the fresh install modal.
 */
?>
<div id="wf-onboarding-fresh-install" class="wf-onboarding-modal">
	<div id="wf-onboarding-fresh-install-1" class="wf-onboarding-modal-content">
		<div class="wf-onboarding-logo"><img src="<?php echo esc_attr(wfUtils::getBaseURL() . 'images/wf-horizontal.svg'); ?>" alt="<?php esc_html_e('Wordfence - Securing your WordPress Website', 'wordfence'); ?>"></div>
		<h3><?php printf(/* translators: Wordfence version. */ esc_html__('You have successfully installed Wordfence %s', 'wordfence'), WORDFENCE_VERSION); ?></h3>
		<?php echo wfView::create('onboarding/registration-prompt', array('attempt' => 1)) ?>
	</div>
</div>
<script type="application/javascript">
	(function($) {
		$(function() {	
			$('#wf-onboarding-fresh-install').on('click', function(e) {
				e.stopPropagation();
			});

			$(window).on('wfOnboardingDismiss', function() {
				if ($('#wf-onboarding-fresh-install-1').is(':visible')) {
					wordfenceExt.setOption('onboardingAttempt1', '<?php echo esc_attr(wfOnboardingController::ONBOARDING_SKIPPED); ?>');
				}
			});
		});
	})(jQuery);
</script>views/onboarding/modal-final-attempt.php000064400000006154150755146450014415 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents the final onboarding attempt modal.
 */
?>
<div class="wf-modal" id="wf-onboarding-final-attempt">
	<div class="wf-modal-header">
		<div class="wf-modal-header-content">
			<div class="wf-modal-title"><?php esc_html_e('Please Complete Wordfence Installation', 'wordfence'); ?></div>
		</div>
		<div class="wf-modal-header-action">
			<div class="wf-padding-add-left-small wf-modal-header-action-close"><a href="<?php echo esc_attr(network_admin_url('admin.php?page=Wordfence')); ?>"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
		</div>
	</div>
	<div class="wf-modal-content">
		<div id="wf-onboarding-final-attempt-1" class="wf-onboarding-modal-content"<?php if (wfConfig::get('onboardingAttempt3') == wfOnboardingController::ONBOARDING_EMAILS) { echo ' style="display: none;"'; } ?>>
			<?php echo wfView::create('onboarding/registration-prompt', array('attempt' => 3)) ?>
		</div>
		<div id="wf-onboarding-final-attempt-2" class="wf-onboarding-modal-content"<?php if (wfConfig::get('onboardingAttempt3') != wfOnboardingController::ONBOARDING_EMAILS) { echo ' style="display: none;"'; } ?>>
			<h3><?php esc_html_e('Activate Premium', 'wordfence'); ?></h3>
			<p><?php esc_html_e('Enter your premium license key to enable real-time protection for your website.', 'wordfence'); ?></p>
			<div id="wf-onboarding-license-status" style="display: none;"></div>
			<div id="wf-onboarding-license"><input type="text" placeholder="<?php esc_html_e('Enter Premium Key', 'wordfence'); ?>"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary wf-disabled" id="wf-onboarding-license-install" role="button"><?php esc_html_e('Install', 'wordfence'); ?></a></div>
			<div id="wf-onboarding-or"><span>or</span></div>
			<p id="wf-onboarding-premium-cta"><?php esc_html_e('If you don\'t have one, you can purchase one now.', 'wordfence'); ?></p>
			<div id="wf-onboarding-license-footer">
				<ul>
					<li><a href="https://www.wordfence.com/gnl1onboardingFinalGet/wordfence-signup/#premium-order-form" class="wf-onboarding-btn wf-onboarding-btn-primary" id="wf-onboarding-get" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Upgrade to Premium', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></li>
					<li><a href="https://www.wordfence.com/gnl1onboardingFinalLearn/wordfence-signup/" class="wf-onboarding-btn wf-onboarding-btn-default" id="wf-onboarding-learn" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Learn More', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></li>
					<li><a href="#" id="wf-onboarding-no-thanks" role="button"><?php esc_html_e('No Thanks', 'wordfence'); ?></a></li>
				</ul>
			</div>
			<div id="wf-onboarding-license-finished" style="display: none;">
				<ul>
					<li><a href="<?php echo esc_attr(network_admin_url('admin.php?page=Wordfence')); ?>" class="wf-onboarding-btn wf-onboarding-btn-primary"><?php esc_html_e('Close', 'wordfence'); ?></a></li>
				</ul>
			</div>
		</div>
	</div>
</div>views/onboarding/disabled-overlay.php000064400000000774150755146450014006 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
?>
<div id="wf-toupp-required-overlay"></div>
<div id="wf-toupp-required-message">
	<div id="wf-toupp-required-message-inner">
		<p><?php esc_html_e('You must install a license to continue using Wordfence.', 'wordfence'); ?></p>
		<p><a href="#" class="wf-btn wf-btn-default" onclick="window.location = jQuery('#wf-onboarding-resume').attr('href'); return false;" role="button"><?php esc_html_e('Resume Installation', 'wordfence'); ?></a></p>
	</div>
</div>views/onboarding/registration-prompt.php000064400000015124150755146450014604 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Prompts the user for a license key, directing to wordfence.com to register for a free license key
 */

if (!isset($existing))
	$existing = false;
if (!isset($email))
	$email = null;
if (!isset($license))
	$license = null;
$registrationLink = wfLicense::generateRegistrationLink();
$populated = $existing && $email && $license;
?>
<div class="wf-onboarding-registration-prompt">
	<p>
		<?php if ($existing): ?>
			<?php esc_html_e('Install your license to finish activating Wordfence.', 'wordfence') ?>
		<?php else: ?>
			<?php esc_html_e('Register with Wordfence to secure your site with the latest threat intelligence.', 'wordfence') ?>
		<?php endif ?>
	</p>
	<div class="wf-onboarding-install-new wf-onboarding-install-type"<?php if ($existing): ?> style="display: none;"<?php endif ?>>
		<div>
			<a class="wf-btn wf-btn-primary wf-onboardng-register" href="<?php esc_attr_e($registrationLink) ?>" target="_blank"><?php esc_html_e('Get Your Wordfence License', 'wordfence') ?></a>	
		</div>
		<div>
			<a class="wf-onboarding-install-type-toggle" href="#"><?php esc_html_e('Install an existing license', 'wordfence') ?></a>
		</div>
	</div>
	<div class="wf-onboarding-install-existing wf-onboarding-install-type" data-attempt="<?php echo esc_attr($attempt) ?>"
			data-option-value-emails="<?php esc_attr_e(wfOnboardingController::ONBOARDING_EMAILS) ?>"
			data-option-value-license="<?php esc_attr_e(wfOnboardingController::ONBOARDING_LICENSE) ?>"
			<?php if (!$existing): ?>style="display: none;"<?php endif ?>
			>
		<form class="wf-onboarding-form">
			<div class="wf-onboarding-form-group">
				<label for="wf-onboarding-email-input"><?php esc_html_e('Email', 'wordfence') ?></label>
				<input id="wf-onboarding-email-input" type="email" value="<?php echo esc_attr((string) $email) ?>" pattern="^[^@\s]+@[^@\s]+\.[^@\s]+$" title="<?php esc_html_e('Please enter a valid email address', 'wordfence') ?>" required>
				<small><?php esc_html_e('This is where future security alerts for your website will be sent. This can also be changed in Global Options.', 'wordfence') ?></small>
			</div>
			<div class="wf-onboarding-form-group">
				<label for="wf-onboarding-license-input"><?php esc_html_e('License Key', 'wordfence') ?></label>
				<textarea id="wf-onboarding-license-input" rows="3" required><?php echo esc_html((string) $license) ?></textarea>
			</div>
			<div class="wf-onboarding-form-group wf-onboarding-consent-group"<?php if ($populated): ?> style="display: none;"<?php endif ?>>
				<label id="wf-onboarding-subscription-options-label"><?php esc_html_e('Would you like WordPress security and vulnerability alerts sent to you via email?', 'wordfence') ?></label>
				<div class="wf-onboarding-subscription-options" role="radiogroup" aria-labelledby="wf-onboarding-subscription-options-label">
					<ul class="wf-switch">
						<li data-value="1" role="radio" tabindex="0"><?php esc_html_e('Yes', 'wordfence') ?></li>
						<li data-value="0" role="radio" tabindex="0"><?php esc_html_e('No', 'wordfence') ?></li>
					</ul>
					<small class="wf-onboarding-subscription-option-required" style="display: none;"><?php esc_html_e('You must select either "Yes" or "No"', 'wordfence') ?></small>
				</div>
			</div>
			<button class="wf-btn wf-btn-primary wf-onboarding-install-license" type="submit"><?php esc_html_e('Install License', 'wordfence') ?></button>
		</form>
		<?php if (!$populated): ?>
			<div>
				<a class="wf-onboarding-link" href="<?php esc_attr_e($registrationLink) ?>" target="_blank"><?php esc_html_e('Get a new license', 'wordfence') ?></a>
			</div>
		<?php endif ?>
	</div>
</div>
<div style="display: none;">
	<?php
		$licenseTypeModals = array(
			'response' => array(
				'title' => __('Response License Installed', 'wordfence'),
				'content' => __('Congratulations! Wordfence Response is now active on your website. Please note that some Response features are not enabled by default.', 'wordfence')
			),
			'care' => array(
				'title' => __('Care License Installed', 'wordfence'),
				'content' => __('Congratulations! Wordfence Care is now active on your website. Please note that some Care features are not enabled by default.', 'wordfence')
			),
			'premium' => array(
				'title' => __('Premium License Installed', 'wordfence'),
				'content' => __('Congratulations! Wordfence Premium is now active on your website. Please note that some Premium features are not enabled by default.', 'wordfence')
			),
			'free' => array(
				'title' => __('Free License Installed', 'wordfence'),
				'content' => __('Congratulations! Wordfence Free is now active on your website.', 'wordfence')
			),
		);
	?>
	<?php foreach ($licenseTypeModals as $key => $modal): ?>
		<div class="wf-modal wf-modal-success" id="<?php echo esc_attr("wf-onboarding-registration-success-$key-template") ?>">
			<div class="wf-model-success-wrapper">
				<div class="wf-modal-header">
					<div class="wf-modal-header-content">
						<div class="wf-modal-title"><?php echo esc_html($modal['title']) ?></div>
					</div>
				</div>
				<div class="wf-modal-content"><?php echo esc_html($modal['content']) ?></div>
			</div>
			<div class="wf-modal-footer">
				<ul class="wf-onboarding-flex-horizontal wf-onboarding-flex-align-right wf-onboarding-full-width">
					<li><a href="<?php echo esc_url(network_admin_url('admin.php?page=Wordfence')); ?>" class="wf-onboarding-btn wf-onboarding-btn-primary"><?php esc_html_e('Go To Dashboard', 'wordfence'); ?></a></li>
				</ul>
			</div>
		</div>
	<?php endforeach ?>
	<div class="wf-modal" id="wf-onboarding-registration-error-template">
		<div class="wf-modal-header">
			<div class="wf-modal-header-content">
				<div class="wf-modal-title"><strong><?php esc_html_e('Error Installing License', 'wordfence') ?></strong></div>
			</div>
		</div>
		<div class="wf-modal-content">
			<p class="message"><?php esc_html_e('An error occurred while installing your license key.', 'wordfence') ?></p>
			<p><?php echo wp_kses(__('Please try again. If the problem persists, please <a href="https://www.wordfence.com/help/api-key" target="_blank" rel="noopener noreferrer">contact Wordfence Support<span class="screen-reader-text">(opens in new tab)</span></a>', 'wordfence'), array('a' => array('href' => array(), 'target' => array(), 'rel' => array()), 'span' => array('class' => array()))) ?>
		</div>
		<div class="wf-modal-footer">
			<ul class="wf-onboarding-flex-horizontal wf-onboarding-flex-align-right wf-onboarding-full-width">
				<li><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" onclick="jQuery.wfcolorbox.close(); return false;" role="button">Close</a></li>
			</ul>
		</div>
	</div>
</div>views/onboarding/overlay.php000064400000001622150755146450012232 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents the overlay.
 *
 * Expects $contentHTML to be defined.
 *
 * @var string $contentHTML The HTML content to show on the overlay.
 */
?>
<div id="wf-onboarding-plugin-overlay">
	<a href="#" id="wf-onboarding-dismiss" role="button">&times;</a>
	<?php echo $contentHTML; ?>
	<script type="application/javascript">
		(function($) {
			$(function() {
				$('#wf-onboarding-dismiss, #wf-onboarding-plugin-overlay').on('click', function(e) {
					e.preventDefault();
					e.stopPropagation();
					
					$(window).trigger('wfOnboardingDismiss');
					$('#wf-onboarding-plugin-overlay').fadeOut(400, function() {
						$('#wf-onboarding-plugin-overlay').remove();
					});
				});

				$(document).keyup(function(e) {
					if (e.keyCode == 27) { //esc
						$('#wf-onboarding-dismiss').trigger('click');
					}
				});
			});
		})(jQuery);
	</script>
</div>views/options/option-toggled-segmented.php000064400000005726150755146450015037 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents a boolean option with a checkbox toggle control.
 *
 * Expects $optionName, $enabledValue, $disabledValue, $value, and $title to be defined. $helpLink may also be defined.
 *
 * @var string $optionName The option name.
 * @var string $enabledValue The value to save in $option if the toggle is enabled.
 * @var string $disabledValue The value to save in $option if the toggle is disabled.
 * @var string $value The current value of $optionName.
 * @var string $title The title shown for the option.
 * @var string $htmlTitle The unescaped title shown for the option.
 * @var string $helpLink If defined, the link to the corresponding external help page.
 * @var bool $premium If defined, the option will be tagged as premium only and not allow its value to change for free users.
 */

$id = 'wf-option-' . preg_replace('/[^a-z0-9]/i', '-', $optionName);
?>
<ul id="<?php echo esc_attr($id); ?>" class="wf-option wf-option-toggled-segmented<?php if (!wfConfig::p() && isset($premium) && $premium) { echo ' wf-option-premium'; } ?>" data-option="<?php echo esc_attr($optionName); ?>" data-enabled-value="<?php echo esc_attr($enabledValue); ?>" data-disabled-value="<?php echo esc_attr($disabledValue); ?>" data-original-value="<?php echo esc_attr($value == $enabledValue ? $enabledValue : $disabledValue); ?>">
	<li class="wf-option-title"><?php echo (!empty($title)) ? esc_html($title) : ''; echo (!empty($htmlTitle)) ? wp_kses($htmlTitle, 'post') : ''; ?><?php if (!wfConfig::p() && isset($premium) && $premium) { echo ' <a href="https://www.wordfence.com/gnl1optionUpgrade/wordfence-signup/" target="_blank" rel="noopener noreferrer" class="wf-premium-link">' . esc_html__('Premium Feature', 'wordfence') . '</a>'; } ?><?php if (isset($helpLink)) { echo ' <a href="' . esc_attr($helpLink) . '"  target="_blank" rel="noopener noreferrer" class="wf-inline-help"><i class="wf-fa wf-fa-question-circle-o" aria-hidden="true"></i><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>'; } ?></li>
	<li class="wf-option-segments">
		<?php
		$onId = sanitize_key('wf-segment-' . $optionName . '-on');
		$offId = sanitize_key('wf-segment-' . $optionName . '-off');
		?>
		<input id="<?php echo esc_attr($onId) ?>" type="radio" name="<?php echo esc_attr($optionName) ?>" value="<?php echo esc_attr($enabledValue) ?>"<?php echo ($value == $enabledValue ? ' checked' : ''); ?><?php echo (!(!wfConfig::p() && isset($premium) && $premium) ? '' : ' disabled'); ?>>
		<label class="wf-segment-first" for="<?php echo esc_attr($onId) ?>">On</label>

		<input id="<?php echo esc_attr($offId) ?>" type="radio" name="<?php echo esc_attr($optionName) ?>" value="<?php echo esc_attr($disabledValue) ?>"<?php echo ($value == $disabledValue ? ' checked' : ''); ?><?php echo (!(!wfConfig::p() && isset($premium) && $premium) ? '' : ' disabled'); ?>>
		<label class="wf-segment-last" for="<?php echo esc_attr($offId) ?>">Off</label>
	</li>
</ul>views/options/option-toggled-textarea.php000064400000006537150755146450014702 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents an option with a boolean on/off toggle checkbox and text area for detailed value entry.
 *
 * Expects $toggleOptionName, $enabledToggleValue, $disabledToggleValue, $toggleValue, $textAreaOptionName, $textAreaValue, and $title to be defined. $helpLink may also be defined.
 *
 * @var string $toggleOptionName The option name for the toggle portion.
 * @var string $enabledToggleValue The value to save in $toggleOption if the toggle is enabled.
 * @var string $disabledToggleValue The value to save in $toggleOption if the toggle is disabled.
 * @var string $toggleValue The current value of $toggleOptionName.
 * @var string $textAreaOptionName The option name for the text area portion.
 * @var string $textAreaValue The current value of $textAreaOptionName.
 * @var string $title The title shown for the option.
 * @var string $helpLink If defined, the link to the corresponding external help page.
 * @var bool $premium If defined, the option will be tagged as premium only and not allow its value to change for free users.
 */

$toggleID = 'wf-option-' . preg_replace('/[^a-z0-9]/i', '-', $toggleOptionName);
$textAreaID = 'wf-option-' . preg_replace('/[^a-z0-9]/i', '-', $textAreaOptionName);
?>
<ul class="wf-option wf-option-toggled-textarea<?php if (!wfConfig::p() && isset($premium) && $premium) { echo ' wf-option-premium'; } ?>" data-toggle-option="<?php echo esc_attr($toggleOptionName); ?>" data-enabled-toggle-value="<?php echo esc_attr($enabledToggleValue); ?>" data-disabled-toggle-value="<?php echo esc_attr($disabledToggleValue); ?>" data-original-toggle-value="<?php echo esc_attr($toggleValue == $enabledToggleValue ? $enabledToggleValue : $disabledToggleValue); ?>" data-text-area-option="<?php echo esc_attr($textAreaOptionName); ?>" data-original-text-area-value="<?php echo esc_attr($textAreaValue); ?>">
	<li id="<?php echo esc_attr($toggleID); ?>" class="wf-option-checkbox<?php echo ($toggleValue == $enabledToggleValue ? ' wf-checked' : ''); ?>" role="checkbox" aria-checked="<?php echo ($toggleValue == $enabledToggleValue ? 'true' : 'false'); ?>" tabindex="0"><i class="wf-ion-ios-checkmark-empty" aria-hidden="true" aria-labelledby="<?php echo esc_attr($toggleID); ?>-label"></i></li>
	<li class="wf-option-title"><span id="<?php echo esc_attr($toggleID); ?>-label"><?php echo esc_html($title); ?></span><?php if (!wfConfig::p() && isset($premium) && $premium) { echo ' <a href="https://www.wordfence.com/gnl1optionUpgrade/wordfence-signup/" target="_blank" rel="noopener noreferrer" class="wf-premium-link">' . esc_html__('Premium Feature', 'wordfence') . '</a>'; } ?><?php if (isset($helpLink)) { echo ' <a href="' . esc_attr($helpLink) . '"  target="_blank" rel="noopener noreferrer" class="wf-inline-help"><i class="wf-fa wf-fa-question-circle-o" aria-hidden="true"></i><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>'; } ?></li>
	<li id="<?php echo esc_attr($textAreaID); ?>" class="wf-option-textarea">
		<select<?php echo ($toggleValue == $enabledToggleValue && !(!wfConfig::p() && isset($premium) && $premium) ? '' : ' disabled'); ?> aria-labelledby="<?php echo esc_attr($toggleID); ?>-label">
			<textarea<?php echo (!(!wfConfig::p() && isset($premium) && $premium) ? '' : ' disabled'); ?>><?php echo esc_html($textAreaValue); ?></textarea>
		</select>
	</li>
</ul>views/options/option-label.php000064400000002474150755146450012515 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents an option-styled text value.
 *
 * Expects $title (or $titleHTML) to be defined. $helpLink may also be defined.
 *
 * @var string $title The title shown for the option.
 * @var string $titleHTML The raw HTML title shown for the option. This supersedes $title.
 * @var string $helpLink If defined, the link to the corresponding external help page.
 */

if (!isset($titleHTML)) {
	$titleHTML = esc_html($title);
}
?>
<ul class="wf-option wf-option-label">
	<?php if (!isset($noSpacer) || !$noSpacer): ?>
		<li class="wf-option-spacer"></li>
	<?php endif; ?>
	<li class="wf-option-content">
		<ul>
			<li class="wf-option-title">
				<?php if (isset($subtitle)): ?>
				<ul class="wf-flex-vertical wf-flex-align-left">
					<li>
						<?php endif; ?>
						<?php echo $titleHTML; ?><?php if (isset($helpLink)) { echo ' <a href="' . esc_attr($helpLink) . '"  target="_blank" rel="noopener noreferrer" class="wf-inline-help"><i class="wf-fa wf-fa-question-circle-o" aria-hidden="true"></i><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>'; } ?>
						<?php if (isset($subtitle)): ?>
					</li>
					<li class="wf-option-subtitle"><?php echo esc_html($subtitle); ?></li>
				</ul>
			<?php endif; ?>
			</li>
		</ul>
	</li>
</ul>views/options/option-toggled-select.php000064400000007260150755146450014336 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents an option with a boolean on/off toggle checkbox and popup menu for detailed value selection.
 * 
 * Expects $toggleOptionName, $enabledToggleValue, $disabledToggleValue, $toggleValue, $selectOptionName, $selectOptions, $selectValue, and $title to be defined. $helpLink may also be defined.
 * 
 * @var string $toggleOptionName The option name for the toggle portion.
 * @var string $enabledToggleValue The value to save in $toggleOption if the toggle is enabled.
 * @var string $disabledToggleValue The value to save in $toggleOption if the toggle is disabled.
 * @var string $toggleValue The current value of $toggleOptionName.
 * @var string $selectOptionName The option name for the select portion.
 * @var array $selectOptions An array of the possible values for $selectOptionName. The array is of the format array(array('value' => <the internal value>, 'label' => <a display label>), ...)
 * @var string $selectValue The current value of $selectOptionName.
 * @var string $title The title shown for the option.
 * @var string $helpLink If defined, the link to the corresponding external help page.
 * @var bool $premium If defined, the option will be tagged as premium only and not allow its value to change for free users.
 */

$toggleID = 'wf-option-' . preg_replace('/[^a-z0-9]/i', '-', $toggleOptionName);
$selectID = 'wf-option-' . preg_replace('/[^a-z0-9]/i', '-', $selectOptionName);
?>
<ul class="wf-option wf-option-toggled-select<?php if (!wfConfig::p() && isset($premium) && $premium) { echo ' wf-option-premium'; } ?>" data-toggle-option="<?php echo esc_attr($toggleOptionName); ?>" data-enabled-toggle-value="<?php echo esc_attr($enabledToggleValue); ?>" data-disabled-toggle-value="<?php echo esc_attr($disabledToggleValue); ?>" data-original-toggle-value="<?php echo esc_attr($toggleValue == $enabledToggleValue ? $enabledToggleValue : $disabledToggleValue); ?>" data-select-option="<?php echo esc_attr($selectOptionName); ?>" data-original-select-value="<?php echo esc_attr($selectValue); ?>">
	<li id="<?php echo esc_attr($toggleID); ?>" class="wf-option-checkbox<?php echo ($toggleValue == $enabledToggleValue ? ' wf-checked' : ''); ?>"  role="checkbox" aria-checked="<?php echo ($toggleValue == $enabledToggleValue ? 'true' : 'false'); ?>" tabindex="0"><i class="wf-ion-ios-checkmark-empty" aria-hidden="true"></i></li>
	<li class="wf-option-content">
		<ul id="<?php echo esc_attr($selectID); ?>">
			<li class="wf-option-title"><span id="<?php echo esc_attr($selectID); ?>-label"><?php echo esc_html($title); ?></span><?php if (!wfConfig::p() && isset($premium) && $premium) { echo ' <a href="https://www.wordfence.com/gnl1optionUpgrade/wordfence-signup/" target="_blank" rel="noopener noreferrer" class="wf-premium-link">' . esc_html__('Premium Feature', 'wordfence') . '</a>'; } ?><?php if (isset($helpLink)) { echo ' <a href="' . esc_attr($helpLink) . '"  target="_blank" rel="noopener noreferrer" class="wf-inline-help"><i class="wf-fa wf-fa-question-circle-o" aria-hidden="true"></i><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>'; } ?></li>
			<li class="wf-option-select wf-padding-add-top-xs-small">
				<select<?php echo ($toggleValue == $enabledToggleValue && !(!wfConfig::p() && isset($premium) && $premium) ? '' : ' disabled'); ?> aria-labelledby="<?php echo esc_attr($selectID); ?>-label">
				<?php foreach ($selectOptions as $o): ?>
					<option class="wf-option-select-option" value="<?php echo esc_attr($o['value']); ?>"<?php if ($o['value'] == $selectValue) { echo ' selected'; } ?>><?php echo esc_html($o['label']); ?></option>
				<?php endforeach; ?>
				</select>
			</li>
		</ul>
	</li>
</ul>views/options/option-text.php000064400000004650150755146450012420 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents a text field option.
 *
 * Expects $textOptionName, $textValue, and $title to be defined. $placeholder and $helpLink may also be defined.
 *
 * @var string $textOptionName The option name for the text field.
 * @var string $textValue The current value of $textOptionName.
 * @var string $title The title shown for the option.
 * @var string $placeholder If defined, the placeholder for the text field.
 * @var string $helpLink If defined, the link to the corresponding external help page.
 * @var bool $premium If defined, the option will be tagged as premium only and not allow its value to change for free users.
 */

if (!isset($placeholder)) {
	$placeholder = '';
}
$id = 'wf-option-' . preg_replace('/[^a-z0-9]/i', '-', $textOptionName);
?>
<ul id="<?php echo esc_attr($id); ?>" class="wf-option wf-option-text<?php if (!wfConfig::p() && isset($premium) && $premium) { echo ' wf-option-premium'; } ?>" data-text-option="<?php echo esc_attr($textOptionName); ?>" data-original-text-value="<?php echo esc_attr($textValue); ?>">
	<li class="wf-option-spacer"></li>
	<li class="wf-option-content">
		<ul>
			<li class="wf-option-title">
				<?php if (isset($subtitle)): ?>
				<ul class="wf-flex-vertical wf-flex-align-left">
					<li>
						<?php endif; ?>
						<span id="<?php echo esc_attr($id); ?>-label"><?php echo esc_html($title); ?></span><?php if (!wfConfig::p() && isset($premium) && $premium) { echo ' <a href="https://www.wordfence.com/gnl1optionUpgrade/wordfence-signup/" target="_blank" rel="noopener noreferrer" class="wf-premium-link">' . esc_html__('Premium Feature', 'wordfence') . '</a>'; } ?><?php if (isset($helpLink)) { echo ' <a href="' . esc_attr($helpLink) . '"  target="_blank" rel="noopener noreferrer" class="wf-inline-help"><i class="wf-fa wf-fa-question-circle-o" aria-hidden="true"></i><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>'; } ?>
						<?php if (isset($subtitle)): ?>
					</li>
					<li class="wf-option-subtitle"><?php echo esc_html($subtitle); ?></li>
				</ul>
			<?php endif; ?>
			</li>
			<li class="wf-option-text">
				<input type="text" value="<?php echo esc_attr($textValue); ?>" placeholder="<?php echo esc_attr($placeholder); ?>"<?php echo (!(!wfConfig::p() && isset($premium) && $premium) ? '' : ' disabled'); ?> aria-labelledby="<?php echo esc_attr($id); ?>-label">
			</li>
		</ul>
	</li>
</ul>views/options/option-select.php000064400000004733150755146450012715 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents an option with a popup menu for detailed value selection.
 *
 * Expects $selectOptionName, $selectOptions, $selectValue, and $title to be defined. $helpLink may also be defined.
 *
 * @var string $selectOptionName The option name for the select portion.
 * @var array $selectOptions An array of the possible values for $selectOptionName. The array is of the format array(array('value' => <the internal value>, 'label' => <a display label>), ...)
 * @var string $selectValue The current value of $selectOptionName.
 * @var string $title The title shown for the option.
 * @var string $helpLink If defined, the link to the corresponding external help page.
 * @var bool $premium If defined, the option will be tagged as premium only and not allow its value to change for free users.
 */

$id = 'wf-option-' . preg_replace('/[^a-z0-9]/i', '-', $selectOptionName);
?>
<ul id="<?php echo esc_attr($id); ?>" class="wf-option wf-option-select<?php if (!wfConfig::p() && isset($premium) && $premium) { echo ' wf-option-premium'; } ?>" data-select-option="<?php echo esc_attr($selectOptionName); ?>" data-original-select-value="<?php echo esc_attr($selectValue); ?>">
	<li class="wf-option-spacer"></li>
	<li class="wf-option-content">
		<ul>
			<li class="wf-option-title"><span id="<?php echo esc_attr($id); ?>-label"><?php echo esc_html($title); ?></span><?php if (!wfConfig::p() && isset($premium) && $premium) { echo ' <a href="https://www.wordfence.com/gnl1optionUpgrade/wordfence-signup/" target="_blank" rel="noopener noreferrer" class="wf-premium-link">' . esc_html__('Premium Feature', 'wordfence') . '</a>'; } ?><?php if (isset($helpLink)) { echo ' <a href="' . esc_attr($helpLink) . '"  target="_blank" rel="noopener noreferrer" class="wf-inline-help"><i class="wf-fa wf-fa-question-circle-o" aria-hidden="true"></i><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>'; } ?></li>
			<li class="wf-option-select wf-padding-add-top-xs-small">
				<select<?php echo (!(!wfConfig::p() && isset($premium) && $premium) ? '' : ' disabled'); ?> aria-labelledby="<?php echo esc_attr($id); ?>-label">
					<?php foreach ($selectOptions as $o): ?>
						<option class="wf-option-select-option" value="<?php echo esc_attr($o['value']); ?>"<?php if ($o['value'] == $selectValue) { echo ' selected'; } ?>><?php echo esc_html($o['label']); ?></option>
					<?php endforeach; ?>
				</select>
			</li>
		</ul>
	</li>
</ul>views/options/option-toggled.php000064400000006042150755146450013056 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents a boolean option with a checkbox toggle control.
 * 
 * Expects $optionName, $enabledValue, $disabledValue, $value, and $title to be defined. $helpLink may also be defined.
 * 
 * @var string $optionName The option name.
 * @var string $enabledValue The value to save in $option if the toggle is enabled.
 * @var string $disabledValue The value to save in $option if the toggle is disabled.
 * @var string $value The current value of $optionName.
 * @var string $title The title shown for the option.
 * @var string $htmlTitle The unescaped title shown for the option.
 * @var string $helpLink If defined, the link to the corresponding external help page.
 * @var bool $premium If defined, the option will be tagged as premium only and not allow its value to change for free users.
 * @var bool $disabled If defined and truthy, the option will start out disabled.
 */

if (isset($subtitle) && !isset($subtitleHTML)) {
	$subtitleHTML = esc_html($subtitle);
}

$id = 'wf-option-' . preg_replace('/[^a-z0-9]/i', '-', $optionName);
?>
<ul id="<?php echo esc_attr($id); ?>" class="wf-option wf-option-toggled<?php if (!wfConfig::p() && isset($premium) && $premium) { echo ' wf-option-premium'; } ?><?php if (isset($disabled) && $disabled) { echo ' wf-disabled'; } ?>" data-option="<?php echo esc_attr($optionName); ?>" data-enabled-value="<?php echo esc_attr($enabledValue); ?>" data-disabled-value="<?php echo esc_attr($disabledValue); ?>" data-original-value="<?php echo esc_attr($value == $enabledValue ? $enabledValue : $disabledValue); ?>">
	<?php if (!wfConfig::p() && isset($premium) && $premium): ?>
	<li class="wf-option-premium-lock"></li>
	<?php else: ?>
	<li class="wf-option-checkbox<?php echo ($value == $enabledValue ? ' wf-checked' : ''); ?>" role="checkbox" aria-checked="<?php echo ($value == $enabledValue ? 'true' : 'false'); ?>" tabindex="0" aria-labelledby="<?php echo esc_attr($id); ?>-label"><i class="wf-ion-ios-checkmark-empty" aria-hidden="true"></i></li>
	<?php endif; ?>
	<li class="wf-option-title">
	<?php if (isset($subtitleHTML)): ?>
		<ul class="wf-flex-vertical wf-flex-align-left">
			<li>
	<?php endif; ?>
				<span id="<?php echo esc_attr($id); ?>-label"><?php echo (!empty($title)) ? esc_html($title) : ''; echo (!empty($htmlTitle)) ? wp_kses($htmlTitle, 'post') : ''; ?></span><?php if (!wfConfig::p() && isset($premium) && $premium) { echo ' <a href="https://www.wordfence.com/gnl1optionUpgrade/wordfence-signup/" target="_blank" rel="noopener noreferrer" class="wf-premium-link">' . esc_html__('Premium Feature', 'wordfence') . '</a>'; } ?><?php if (isset($helpLink)) { echo ' <a href="' . esc_attr($helpLink) . '"  target="_blank" rel="noopener noreferrer" class="wf-inline-help"><i class="wf-fa wf-fa-question-circle-o" aria-hidden="true"></i><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>'; } ?>
	<?php if (isset($subtitleHTML)): ?>
			</li>
			<li class="wf-option-subtitle"><?php echo $subtitleHTML; ?></li>
		</ul>
	<?php endif; ?>
	</li>
</ul>views/options/block-all-options-controls.php000064400000016320150755146450015315 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents the top controls on the All Options page.
 *
 * Expects $indexOptions. $suppressControls may be defined to hide the options-saving controls. If not truthy, $restoreDefaultsSection and $restoreDefaultsMessage must also be defined.
 *
 * @var array $indexOptions An array of the index options to allow searching. The key should be the element ID to scroll to and the value is the name of the option.
 * @var string $restoreDefaultsMessage The message shown in the restore defaults prompt
 */

if (isset($backLabel) && !isset($backLabelHTML)) {
	$backLabelHTML = esc_html($backLabel);
}
?>
<div class="wf-block wf-block-transparent wf-active">
	<div class="wf-block-content">
		<ul class="wf-block-left-right wf-block-left-right-nowrap wf-hidden-xs">
			<li class="wf-left">
				<ul class="wf-flex-horizontal">
					<?php if (isset($showIcon) && $showIcon): ?>
					<li><div class="wordfence-lock-icon wordfence-icon32 wf-no-top wf-no-right wf-hidden-xs"></div></li>
					<?php endif; ?>
					<li id="wf-all-options-search"<?php if (isset($showIcon) && $showIcon): ?> class="wf-padding-add-left"<?php endif; ?>>
						<select class="wf-options-searcher" multiple>
						<?php
						foreach ($indexOptions as $element => $label):
						?>
							<option value="<?php echo esc_attr($element); ?>"><?php echo esc_html($label); ?></option>
						<?php
						endforeach;
						?>
						</select>
					</li>
				</ul>
			</li>
			<?php if (!isset($suppressControls) || !$suppressControls): ?>
				<li class="wf-right">
					<a id="wf-restore-defaults" class="wf-btn wf-btn-default wf-btn-callout-subtle" href="#" data-restore-defaults-section="<?php echo esc_attr($restoreDefaultsSection); ?>" role="button"><?php echo wp_kses(/* translators: word order may be reversed as long as HTML remains around "Restore" */ __('<span class="wf-hidden-xs">Restore </span>Defaults', 'wordfence'), array('span'=>array('class'=>array()))); ?></a>&nbsp;&nbsp;<a id="wf-cancel-changes" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-disabled" href="#" role="button"><?php echo wp_kses(/* translators: word order may be reversed as long as HTML remains around "Changes" */ __('Cancel<span class="wf-hidden-xs wf-hidden-sm"> Changes</span>', 'wordfence'), array('span'=>array('class'=>array()))); ?></a>&nbsp;&nbsp;<a id="wf-save-changes" class="wf-btn wf-btn-primary wf-btn-callout-subtle wf-disabled" href="#" role="button"><?php echo wp_kses(/* translators: word order may be reversed as long as HTML remains around "Changes" */ __('Save<span class="wf-hidden-xs wf-hidden-sm"> Changes</span>', 'wordfence'), array('span'=>array('class'=>array()))); ?></a>
				</li>
			<?php endif; ?>
		</ul>
		<ul class="wf-block-left-center-right wf-hidden-sm wf-hidden-md wf-hidden-lg">
			<li class="wf-left">
				<?php if (!isset($suppressLogo) || !$suppressLogo): ?>
					<div class="wordfence-lock-icon wordfence-icon32"></div>
				<?php endif; ?>
			</li>
			<li class="wf-center">
				<select class="wf-options-searcher" multiple>
					<?php
					foreach ($indexOptions as $element => $label):
						?>
						<option value="<?php echo esc_attr($element); ?>"><?php echo esc_html($label); ?></option>
						<?php
					endforeach;
					?>
				</select>
			</li>
			<?php if (!isset($suppressControls) || !$suppressControls): ?>
				<li class="wf-right">
					<a id="wf-mobile-controls" href="#" data-restore-defaults-section="<?php echo esc_attr($restoreDefaultsSection); ?>" role="button">&bullet;&bullet;&bullet;</a>
				</li>
			<?php endif; ?>
		</ul>
	</div>
</div>
<?php if (!isset($suppressControls) || !$suppressControls): ?>
	<script type="application/javascript">
		(function($) {
			$('.wf-options-searcher').css('display', 'none');
			
			$(function() {
				var initialTop = parseInt($('.wf-options-controls').css('top'));
				$(window).bind("scroll", function() {
					if (window.matchMedia("only screen and (max-width: 615px)").matches) {
						$(this).scrollTop() > initialTop ? $('.wf-options-controls').css('top', '0px').css('position', 'fixed').css('left', '0px') : $('.wf-options-controls').css('top', initialTop + 'px').css('position', 'absolute').css('left', '-10px');
					}
				});

				$('.wf-options-searcher').wfselect2({
					tags: true,
					tokenSeparators: [','],
					placeholder: <?php echo json_encode(__('Search All Options', 'wordfence')) ?>,
					minimumResultsForSearch: -1,
					minimumInputLength: 2,
					selectOnClose: false,
					width: (WFAD.screenSize(WFAD.SCREEN_MD) ? '250px' : '500px'),  
					createTag: function (params) {
						return null; //No custom tags
					}
				}).on('change', function () {
					var selection = $(this).val();
					if (Array.isArray(selection)) {
						if (selection.length > 0) {
							selection = selection[0];
						}
						else {
							selection = false;
						}
					}
					else if (typeof selection !== 'string') {
						selection = false;
					}
					
					if (selection !== false) {
						var el = $('#' + selection);
						if (el.is(':visible')) {
							$('html, body').animate({
								scrollTop: el.offset().top - 100
							}, 750);
						}
						else if (el.is('input[type="hidden"]')) {
							$('html, body').animate({
								scrollTop: el.parent().offset().top - 100
							}, 750);
						}
						else {
							var block = el.closest('.wf-block[data-persistence-key]');
							if (!block.hasClass('wf-active') && !block.hasClass('wf-always-active')) {
								block.find('.wf-block-content').slideDown({
									always: function() {
										block.addClass('wf-active');
										$('html, body').animate({
											scrollTop: el.offset().top - 100
										}, 750);
									}
								});

								WFAD.ajax('wordfence_saveDisclosureState', {name: block.data('persistenceKey'), state: true}, function() {}, function() {}, true);
							}
						}

						$('.wf-options-searcher').val('').change();
					}
				});

				if ($('.wf-options-searcher').length > 0) {
					$('.wf-options-searcher').data('wfselect2').$container.addClass('wf-select2-placeholder-fix wf-select2-hide-tags');
				}
				
				$(window).on('resize', function(e) {
					$('.wf-options-searcher').wfselect2({
						tags: true,
						tokenSeparators: [','],
						placeholder: <?php echo json_encode(__('Search All Options', 'wordfence')) ?>,
						minimumResultsForSearch: -1,
						minimumInputLength: 2,
						selectOnClose: false,
						width: (WFAD.screenSize(WFAD.SCREEN_MD) ? '250px' : '500px'),
						createTag: function (params) {
							return null; //No custom tags
						}
					});
				});
			});
		})(jQuery);
	</script>
	<script type="text/x-jquery-template" id="wfTmpl_restoreDefaultsPrompt">
		<?php
		echo wfView::create('common/modal-prompt', array(
			'title' => __('Confirm Restore Defaults', 'wordfence'),
			'message' => $restoreDefaultsMessage,
			'primaryButton' => array('id' => 'wf-restore-defaults-prompt-cancel', 'label' => __('Cancel', 'wordfence'), 'link' => '#'),
			'secondaryButtons' => array(array('id' => 'wf-restore-defaults-prompt-confirm', 'labelHTML' => wp_kses(/* translators: word order may be reversed as long as HTML remains around "Defaults" */ __('Restore<span class="wf-hidden-xs"> Defaults</span>', 'wordfence'), array('span'=>array('class'=>array()))), 'link' => '#')),
		))->render();
		?>
	</script>
<?php endif; ?>views/options/option-toggled-boolean-switch.php000064400000005633150755146450015777 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents a boolean option with a switch toggle control.
 *
 * Expects $optionName, $enabledValue, $disabledValue, $value, and $title to be defined. $helpLink may also be defined.
 *
 * @var string $optionName The option name.
 * @var string $enabledValue The value to save in $option if the toggle is enabled.
 * @var string $disabledValue The value to save in $option if the toggle is disabled.
 * @var string $value The current value of $optionName.
 * @var string $title The title shown for the option.
 * @var string $htmlTitle The unescaped title shown for the option.
 * @var string $helpLink If defined, the link to the corresponding external help page.
 * @var bool $premium If defined, the option will be tagged as premium only and not allow its value to change for free users.
 * @var bool $disabled If defined and truthy, the option will start out disabled.
 */

if (isset($subtitle) && !isset($subtitleHTML)) {
	$subtitleHTML = esc_html($subtitle);
}

$id = 'wf-option-' . preg_replace('/[^a-z0-9]/i', '-', $optionName);
?>
<ul id="<?php echo esc_attr($id); ?>" class="wf-option wf-option-toggled-boolean-switch<?php if (!wfConfig::p() && isset($premium) && $premium) { echo ' wf-option-premium'; } ?><?php if (isset($disabled) && $disabled) { echo ' wf-disabled'; } ?>" data-option="<?php echo esc_attr($optionName); ?>" data-enabled-value="<?php echo esc_attr($enabledValue); ?>" data-disabled-value="<?php echo esc_attr($disabledValue); ?>" data-original-value="<?php echo esc_attr($value == $enabledValue ? $enabledValue : $disabledValue); ?>">
	<li class="wf-boolean-switch<?php echo ($value == $enabledValue ? ' wf-active' : ''); ?>" role="checkbox" aria-checked="<?php echo ($value == $enabledValue ? 'true' : 'false'); ?>" tabindex="0" aria-labelledby="<?php echo esc_attr($id); ?>-label"><a href="#" class="wf-boolean-switch-handle"></a></li>
	<li class="wf-option-title">
		<?php if (isset($subtitleHTML)): ?>
		<ul class="wf-flex-vertical wf-flex-align-left">
			<li>
		<?php endif; ?>
				<span id="<?php echo esc_attr($id); ?>-label"><?php echo (!empty($title)) ? esc_html($title) : ''; echo (!empty($htmlTitle)) ? wp_kses($htmlTitle, 'post') : ''; ?></span><?php if (!wfConfig::p() && isset($premium) && $premium) { echo ' <a href="https://www.wordfence.com/gnl1optionUpgrade/wordfence-signup/" target="_blank" rel="noopener noreferrer" class="wf-premium-link">' . esc_html__('Premium Feature', 'wordfence') . '</a>'; } ?><?php if (isset($helpLink)) { echo ' <a href="' . esc_attr($helpLink) . '"  target="_blank" rel="noopener noreferrer" class="wf-inline-help"><i class="wf-fa wf-fa-question-circle-o" aria-hidden="true"></i><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>'; } ?>
				<?php if (isset($subtitleHTML)): ?>
			</li>
			<li class="wf-option-subtitle"><?php echo $subtitleHTML; ?></li>
		</ul>
	<?php endif; ?>
	</li>
</ul>views/options/option-switch.php000064400000005716150755146450012741 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents a switch option.
 *
 * Expects $optionName, $value, $states, and $title (or $titleHTML) to be defined. $helpLink may also be defined.
 *
 * @var string $optionName The option name for the switch.
 * @var string $value The current value of $optionName.
 * @var string $title The title shown for the option.
 * @var string $titleHTML The raw HTML title shown for the option. This supersedes $title.
 * @var array $states An array of the possible states for the switch. The array matches the format array('value' => <value>, 'label' => <label>)
 * @var string $helpLink If defined, the link to the corresponding external help page.
 * @var bool $premium If defined, the option will be tagged as premium only and not allow its value to change for free users.
 */

if (!isset($titleHTML)) {
	$titleHTML = esc_html($title);
}

$id = 'wf-option-' . preg_replace('/[^a-z0-9]/i', '-', $optionName);
?>
<ul id="<?php echo esc_attr($id); ?>" class="wf-option wf-option-switch<?php if (!wfConfig::p() && isset($premium) && $premium) { echo ' wf-option-premium'; } ?>" data-option-name="<?php echo esc_attr($optionName); ?>" data-original-value="<?php echo esc_attr($value); ?>">
	<?php if (!isset($noSpacer) || !$noSpacer): ?>
	<li class="wf-option-spacer"></li>
	<?php endif; ?>
	<li class="wf-option-content">
		<ul>
			<li class="wf-option-title">
			<?php if (isset($subtitle)): ?>
				<ul class="wf-flex-vertical wf-flex-align-left">
					<li>
			<?php endif; ?>
						<span id="<?php echo esc_attr($id); ?>-label"><?php echo $titleHTML; ?></span><?php if (!wfConfig::p() && isset($premium) && $premium) { echo ' <a href="https://www.wordfence.com/gnl1optionUpgrade/wordfence-signup/" target="_blank" rel="noopener noreferrer" class="wf-premium-link">' . esc_html__('Premium Feature', 'wordfence') . '</a>'; } ?><?php if (isset($helpLink)) { echo ' <a href="' . esc_attr($helpLink) . '"  target="_blank" rel="noopener noreferrer" class="wf-inline-help"><i class="wf-fa wf-fa-question-circle-o" aria-hidden="true"></i><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>'; } ?>
			<?php if (isset($subtitle)): ?>
					</li>
					<li class="wf-option-subtitle"><?php echo esc_html($subtitle); ?></li>
				</ul>
			<?php endif; ?>
			</li>
			<li class="wf-option-switch<?php if (isset($alignment)) { echo ' ' . $alignment; } ?> wf-padding-add-top-xs-small">
				<ul class="wf-switch<?php echo (!(!wfConfig::p() && isset($premium) && $premium) ? '' : ' wf-disabled'); ?>" role="radiogroup" aria-labelledby="<?php echo esc_attr($id); ?>-label">
				<?php foreach ($states as $s): ?>
					<li<?php if ($s['value'] == $value) { echo ' class="wf-active"'; } ?> data-option-value="<?php echo esc_attr($s['value']); ?>" role="radio" aria-checked="<?php echo ($s['value'] == $value ? 'true' : 'false'); ?>" tabindex="0"><?php echo esc_html($s['label']); ?></li>
				<?php endforeach; ?>
				</ul>
			</li>
		</ul>
	</li>
</ul>views/options/option-toggled-multiple.php000064400000005706150755146450014715 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents multiple boolean options under a single heading with a checkbox toggle control for each.
 *
 * Expects $options and $title to be defined. $options is an array of 
 * 	array(
 * 		'name' => <option name>, 
 * 		'enabledValue' => <value saved if the toggle is enabled>, 
 * 		'disabledValue' => <value saved if the toggle is disabled>,
 * 		'value' => <current value of the option>,
 * 		'title' => <title displayed to label the checkbox>
 * 	)
 * 
 * $helpLink may also be defined.
 *
 * @var array $options The options shown. The structure is defined above.
 * @var string $title The overall title shown for the options.
 * @var string $helpLink If defined, the link to the corresponding external help page.
 * @var bool $premium If defined, the options will be tagged as premium only and not allow its values to change for free users.
 */
?>
<ul<?php if (isset($id)) { echo ' id="' . esc_attr($id) . '"'; } ?> class="wf-option wf-option-toggled-multiple<?php if (!wfConfig::p() && isset($premium) && $premium) { echo ' wf-option-premium'; } ?>">
	<?php if (!isset($noSpacer) || !$noSpacer): ?>
	<li class="wf-option-spacer"></li>
	<?php endif; ?>
	<li class="wf-option-content">
		<ul>
			<li class="wf-option-title"><?php echo (!empty($title)) ? esc_html($title) : ''; echo (!empty($htmlTitle)) ? wp_kses($htmlTitle, 'post') : ''; ?><?php if (!wfConfig::p() && isset($premium) && $premium) { echo ' <a href="https://www.wordfence.com/gnl1optionUpgrade/wordfence-signup/" target="_blank" rel="noopener noreferrer" class="wf-premium-link">' . esc_html__('Premium Feature', 'wordfence') . '</a>'; } ?><?php if (isset($helpLink)) { echo ' <a href="' . esc_attr($helpLink) . '"  target="_blank" rel="noopener noreferrer" class="wf-inline-help"><i class="wf-fa wf-fa-question-circle-o" aria-hidden="true"></i><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>'; } ?></li>
			<li class="wf-option-checkboxes">
				<?php
				foreach ($options as $o):
					$id = 'wf-option-' . preg_replace('/[^a-z0-9]/i', '-', $o['name']);
					?>
					<ul id="<?php echo esc_attr($id); ?>" data-option="<?php echo esc_attr($o['name']); ?>" data-enabled-value="<?php echo esc_attr($o['enabledValue']); ?>" data-disabled-value="<?php echo esc_attr($o['disabledValue']); ?>" data-original-value="<?php echo esc_attr($o['value'] == $o['enabledValue'] ? $o['enabledValue'] : $o['disabledValue']); ?>">
						<li class="wf-option-checkbox<?php echo ($o['value'] == $o['enabledValue'] ? ' wf-checked' : ''); ?>" role="checkbox" aria-checked="<?php echo ($o['value'] == $o['enabledValue'] ? 'true' : 'false'); ?>" tabindex="0" aria-labelledby="<?php echo esc_attr($id); ?>-label"><i class="wf-ion-ios-checkmark-empty" aria-hidden="true"></i></li>
						<li id="<?php echo esc_attr($id); ?>-label" class="wf-option-title"><?php echo esc_html($o['title']); ?></li>
					</ul>
				<?php endforeach; ?>
			</li>
		</ul>
	</li>
</ul>views/options/option-textarea.php000064400000006255150755146450013254 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents a text area option.
 *
 * Expects $textOptionName, $textValue, and $title to be defined. $helpLink, $premium, and $noSpacer may also be defined.
 *
 * @var string $textOptionName The option name for the text field.
 * @var string $textValue The current value of $textOptionName.
 * @var string $title The title shown for the option.
 * @var string $helpLink If defined, the link to the corresponding external help page.
 * @var bool $premium If defined, the option will be tagged as premium only and not allow its value to change for free users.
 * @var bool $noSpacer If defined and truthy, the spacer will be omitted.
 */

if (!isset($subtitleHTML) && isset($subtitle)) {
	$subtitleHTML = esc_html($subtitle);
}

if (!isset($subtitlePosition)) { //May be 'title' to appear below the title or 'value' to appear below the field
	$subtitlePosition = 'title';
}

$id = 'wf-option-' . preg_replace('/[^a-z0-9]/i', '-', $textOptionName);
?>
<ul id="<?php echo esc_attr($id); ?>" class="wf-option wf-option-textarea<?php if (!wfConfig::p() && isset($premium) && $premium) { echo ' wf-option-premium'; } ?>" data-text-option="<?php echo esc_attr($textOptionName); ?>" data-original-text-value="<?php echo esc_attr($textValue); ?>">
	<?php if (!isset($noSpacer) || !$noSpacer): ?>
	<li class="wf-option-spacer"></li>
	<?php endif; ?>
	<li class="wf-option-content">
		<ul>
			<li class="wf-option-title<?php if (isset($alignTitle)) { echo $alignTitle == 'top' ? ' wf-option-title-top' : ($alignTitle == 'bottom' ? 'wf-option-title-bottom' : ''); } ?>">
				<?php if (isset($subtitleHTML) && $subtitlePosition == 'title'): ?>
				<ul class="wf-flex-vertical wf-flex-align-left">
					<li>
				<?php endif; ?>
						<span id="<?php echo esc_attr($id); ?>-label"><?php echo esc_html($title); ?></span><?php if (!wfConfig::p() && isset($premium) && $premium) { echo ' <a href="https://www.wordfence.com/gnl1optionUpgrade/wordfence-signup/" target="_blank" rel="noopener noreferrer" class="wf-premium-link">' . esc_html__('Premium Feature', 'wordfence') . '</a>'; } ?><?php if (isset($helpLink)) { echo ' <a href="' . esc_attr($helpLink) . '"  target="_blank" rel="noopener noreferrer" class="wf-inline-help"><i class="wf-fa wf-fa-question-circle-o" aria-hidden="true"></i><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>'; } ?>
				<?php if (isset($subtitleHTML) && $subtitlePosition == 'title'): ?>
					</li>
					<li class="wf-option-subtitle"><?php echo $subtitleHTML; ?></li>
				</ul>
				<?php endif; ?>
			</li>
			<li class="wf-option-textarea">
				<?php if (isset($subtitleHTML) && $subtitlePosition == 'value'): ?>
				<ul class="wf-flex-vertical wf-flex-align-left wf-flex-full-width">
					<li>
				<?php endif; ?>
				<textarea<?php echo (!(!wfConfig::p() && isset($premium) && $premium) ? '' : ' disabled'); ?> aria-labelledby="<?php echo esc_attr($id); ?>-label"><?php echo esc_html($textValue); ?></textarea>
				<?php if (isset($subtitleHTML) && $subtitlePosition == 'value'): ?>
					</li>
					<li class="wf-option-subtitle"><?php echo $subtitleHTML; ?></li>
				</ul>
				<?php endif; ?>
			</li>
		</ul>
	</li>
</ul>views/options/option-token.php000064400000004637150755146450012561 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents an option with a token field for value entry.
 *
 * Expects $tokenOptionName, $tokenValue, and $title to be defined. $helpLink may also be defined.
 *
 * @var string $tokenOptionName The option name.
 * @var array $tokenValue The current value of $tokenOptionName. It will be JSON-encoded as an array of strings.
 * @var string $title The title shown for the option.
 * @var string $helpLink If defined, the link to the corresponding external help page.
 * @var bool $premium If defined, the option will be tagged as premium only and not allow its value to change for free users.
 */

$id = 'wf-option-' . preg_replace('/[^a-z0-9]/i', '-', $tokenOptionName);
?>
<ul id="<?php echo esc_attr($id); ?>" class="wf-option wf-option-token<?php if (!wfConfig::p() && isset($premium) && $premium) { echo ' wf-option-premium'; } ?>" data-token-option="<?php echo esc_attr($tokenOptionName); ?>" data-original-token-value="<?php echo esc_attr(json_encode($tokenValue)); ?>">
	<li class="wf-option-spacer"></li>
	<li class="wf-flex-vertical wf-flex-align-left">
		<div class="wf-option-title">
		<?php if (isset($subtitle)): ?>
			<ul class="wf-flex-vertical wf-flex-align-left">
				<li>
		<?php endif; ?>
					<span id="<?php echo esc_attr($id); ?>-label"><?php echo esc_html($title); ?></span><?php if (!wfConfig::p() && isset($premium) && $premium) { echo ' <a href="https://www.wordfence.com/gnl1optionUpgrade/wordfence-signup/" target="_blank" rel="noopener noreferrer" class="wf-premium-link">' . esc_html__('Premium Feature', 'wordfence') . '</a>'; } ?><?php if (isset($helpLink)) { echo ' <a href="' . esc_attr($helpLink) . '"  target="_blank" rel="noopener noreferrer" class="wf-inline-help"><i class="wf-fa wf-fa-question-circle-o" aria-hidden="true"></i><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>'; } ?>
		<?php if (isset($subtitle)): ?>
				</li>
				<li class="wf-option-subtitle"><?php echo esc_html($subtitle); ?></li>
			</ul>
		<?php endif; ?>
		</div>
		<select multiple<?php echo (!(!wfConfig::p() && isset($premium) && $premium) ? '' : ' disabled'); ?> aria-labelledby="<?php echo esc_attr($id); ?>-label">
		<?php foreach ($tokenValue as $o): ?>
			<option value="<?php echo esc_attr($o); ?>" selected><?php echo esc_html($o); ?></option>
		<?php endforeach; ?>
		</select>
		<div class="wf-option-token-tags"></div>
	</li>
</ul>views/options/options-title.php000064400000005445150755146450012743 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Expects $title (or $titleHTML) and $stateKeys to be defined.
 *
 * @var string $title The page title.
 * @var string $titleHTML The page title as raw HTML
 * @var string[] $stateKeys An array of state keys that will be controlled by the expand/collapse all button
 */

if (isset($title) && !isset($titleHTML)) {
	$titleHTML = esc_html($title);
}

if (isset($helpLabel) && !isset($helpLabelHTML)) {
	$helpLabelHTML = esc_html($helpLabel);
}

$expanded = true;
foreach ($stateKeys as $k) {
	if (!wfPersistenceController::shared()->isActive($k)) {
		$expanded = false;
		break;
	}
}
?>
<div class="wf-section-title">
	<?php if (isset($showIcon) && $showIcon): ?>
		<div class="wordfence-lock-icon wordfence-icon32 wf-hidden-xs"></div>
	<?php endif; ?>
	<h2<?php echo (isset($headerID) ? ' id="' . $headerID . '"' : ''); ?>><?php echo $titleHTML; ?></h2>
	<div><a href="#" class="wf-toggle-all-sections wf-btn wf-btn-callout-subtle wf-btn-default" data-collapsed-title="<?php esc_attr_e('Expand All', 'wordfence'); ?>" data-expanded-title="<?php esc_attr_e('Collapse All', 'wordfence'); ?>" data-expanded="<?php echo wfUtils::truthyToInt($expanded); ?>" role="button"></a></div>
</div>
<script type="application/javascript">
	(function($) {
		$('.wf-toggle-all-sections').text($('.wf-toggle-all-sections').data('expanded') == 1 ? $('.wf-toggle-all-sections').data('expandedTitle') : $('.wf-toggle-all-sections').data('collapsedTitle'));
		
		$(function() {
			$('.wf-toggle-all-sections').on('click', function(e) {
				e.preventDefault();
				e.stopPropagation();
				
				if ($(this).data('expanded') == 1) {
					$('.wf-block[data-persistence-key]').each(function() {
						var block = $(this);
						if (block.hasClass('wf-active')) {
							block.find('.wf-block-content').slideUp({
								always: function() {
									block.removeClass('wf-active');
								}
							});
						}
					});

					WFAD.ajax('wordfence_saveDisclosureState', {names: <?php echo json_encode($stateKeys) ?>, state: false}, function() {}, function() {}, true);
					
					$(this).data('expanded', 0);
					$('.wf-toggle-all-sections').text($('.wf-toggle-all-sections').data('collapsedTitle'));
				}
				else {
					$('.wf-block[data-persistence-key]').each(function() {
						var block = $(this);
						if (!block.hasClass('wf-active')) {
							block.find('.wf-block-content').slideDown({
								always: function() {
									block.addClass('wf-active');
								}
							});
						}
					});

					WFAD.ajax('wordfence_saveDisclosureState', {names: <?php echo json_encode($stateKeys) ?>, state: true}, function() {}, function() {}, true);
					
					$(this).data('expanded', 1);
					$('.wf-toggle-all-sections').text($('.wf-toggle-all-sections').data('expandedTitle'));
				}
			});
		});
	})(jQuery);
</script> views/options/option-toggled-sub.php000064400000012061150755146450013643 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents a boolean option with a checkbox toggle control and a sub-option toggle.
 *
 * Expects $optionName, $enabledValue, $disabledValue, $value, and $title to be defined for the primary option. $helpLink may also be defined.
 * Expects $subOptionName, $subEnabledValue, $subDisabledValue, $subValue, and $subTitle to be defined for the sub-option. $subHelpLink may also be defined.
 *
 * @var string $optionName The option name.
 * @var string $enabledValue The value to save in $optionName if the toggle is enabled.
 * @var string $disabledValue The value to save in $optionName if the toggle is disabled.
 * @var string $value The current value of $optionName.
 * @var string $title The title shown for the option.
 * @var string $htmlTitle The unescaped title shown for the option.
 * @var string $helpLink If defined, the link to the corresponding external help page.
 * @var bool $premium If defined, the option will be tagged as premium only and not allow its value to change for free users.
 * 
 * @var string $subOptionName The sub-option name.
 * @var string $subEnabledValue The value to save in $subOptionName if the toggle is enabled.
 * @var string $subDisabledValue The value to save in $subOptionName if the toggle is disabled.
 * @var string $subValue The current value of $subOptionName.
 * @var string $subTitle The title shown for the sub-option.
 * @var string $subHtmlTitle The unescaped title shown for the sub-option.
 * @var string $subHelpLink If defined, the link to the corresponding external help page for the sub-option.
 * @var bool $subPremium If defined, the sub-option will be tagged as premium only and not allow its value to change for free users.
 */

if (isset($title) && !isset($htmlTitle)) {
	$htmlTitle = esc_html($title);
}

if (isset($subTitle) && !isset($subHtmlTitle)) {
	$subHtmlTitle = esc_html($subTitle);
}

$id = 'wf-option-' . preg_replace('/[^a-z0-9]/i', '-', $optionName);
$subID = 'wf-option-' . preg_replace('/[^a-z0-9]/i', '-', $subOptionName);
?>
<ul class="wf-flex-vertical wf-flex-full-width">
	<li>
		<ul id="<?php echo esc_attr($id); ?>" class="wf-option wf-option-toggled<?php if (!wfConfig::p() && isset($premium) && $premium) { echo ' wf-option-premium'; } ?>" data-option="<?php echo esc_attr($optionName); ?>" data-enabled-value="<?php echo esc_attr($enabledValue); ?>" data-disabled-value="<?php echo esc_attr($disabledValue); ?>" data-original-value="<?php echo esc_attr($value == $enabledValue ? $enabledValue : $disabledValue); ?>">
			<li class="wf-option-checkbox<?php echo ($value == $enabledValue ? ' wf-checked' : ''); ?>" role="checkbox" aria-checked="<?php echo ($value == $enabledValue ? 'true' : 'false'); ?>" tabindex="0" aria-labelledby="<?php echo esc_attr($id); ?>-label"><i class="wf-ion-ios-checkmark-empty" aria-hidden="true"></i></li>
			<li class="wf-option-title">
				<span id="<?php echo esc_attr($id); ?>-label"><?php echo $htmlTitle; ?></span><?php if (!wfConfig::p() && isset($premium) && $premium) { echo ' <a href="https://www.wordfence.com/gnl1optionUpgrade/wordfence-signup/" target="_blank" rel="noopener noreferrer" class="wf-premium-link">' . esc_html__('Premium Feature', 'wordfence') . '</a>'; } ?><?php if (isset($helpLink)) { echo ' <a href="' . esc_attr($helpLink) . '"  target="_blank" rel="noopener noreferrer" class="wf-inline-help"><i class="wf-fa wf-fa-question-circle-o" aria-hidden="true"></i><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>'; } ?>
			</li>
		</ul>
	</li>
	<li class="wf-option-sub">
		<ul id="<?php echo esc_attr($subID); ?>" class="wf-option wf-option-toggled<?php if (!wfConfig::p() && isset($subPremium) && $subPremium) { echo ' wf-option-premium'; } ?>" data-option="<?php echo esc_attr($subOptionName); ?>" data-enabled-value="<?php echo esc_attr($subEnabledValue); ?>" data-disabled-value="<?php echo esc_attr($subDisabledValue); ?>" data-original-value="<?php echo esc_attr($subValue == $subEnabledValue ? $subEnabledValue : $subDisabledValue); ?>">
			<li class="wf-option-checkbox<?php echo ($subValue == $subEnabledValue ? ' wf-checked' : ''); ?>" role="checkbox" aria-checked="<?php echo ($subValue == $subEnabledValue ? 'true' : 'false'); ?>" tabindex="0" aria-labelledby="<?php echo esc_attr($subID); ?>-label"><i class="wf-ion-ios-checkmark-empty" aria-hidden="true"></i></li>
			<li class="wf-option-title">
				<span id="<?php echo esc_attr($subID); ?>-label"><?php echo $subHtmlTitle; ?></span><?php if (!wfConfig::p() && isset($subPremium) && $subPremium) { echo ' <a href="https://www.wordfence.com/gnl1optionUpgrade/wordfence-signup/" target="_blank" rel="noopener noreferrer" class="wf-premium-link">' . esc_html__('Premium Feature', 'wordfence') . '</a>'; } ?><?php if (isset($subHelpLink)) { echo ' <a href="' . esc_attr($subHelpLink) . '"  target="_blank" rel="noopener noreferrer" class="wf-inline-help"><i class="wf-fa wf-fa-question-circle-o" aria-hidden="true"></i><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>'; } ?>
			</li>
		</ul>
	</li>
</ul>views/options/block-controls.php000064400000012526150755146450013062 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents the top controls on an options page.
 *
 * Expects $backLink and $backLabel (or $backLabelHTML) or alternately just $backLinkBreadcrumbs. $suppressControls may be defined to hide the options-saving controls. If not truthy, $restoreDefaultsSection and $restoreDefaultsMessage must also be defined.
 *
 * @var string $backLink The link for the back button.
 * @var string $backLabel The label for the back button.
 * @var string $backLabelHTML The label for the back button as raw HTML.
 * @var wfPage[] $backLinkBreadcrumbs An array of wfPage instances of the page's breadcrumbs. The last entry in the array is expected to be a page and will not generate a link.
 * @var string $restoreDefaultsMessage The message shown in the restore defaults prompt
 */

if (isset($backLabel) && !isset($backLabelHTML)) {
	$backLabelHTML = esc_html($backLabel);
}
?>
<div class="wf-block wf-block-transparent wf-active">
	<div class="wf-block-content">
		<ul class="wf-block-left-right wf-hidden-xs">
			<li class="wf-left">
			<?php if (isset($backLinkBreadcrumbs)): ?>
				<?php foreach ($backLinkBreadcrumbs as $index => $page): ?>
					<a href="<?php echo esc_attr($page->url()); ?>" class="wf-back-link-chevron"><i class="wf-ion-chevron-left wf-back-icon" aria-hidden="true"></i></a>
					<?php if ($index < count($backLinkBreadcrumbs) - 1): ?><a href="<?php echo esc_attr($page->url()); ?>" class="wf-back-link"><?php endif; ?><?php echo esc_html($page->label()); ?><?php if ($index < count($backLinkBreadcrumbs) - 1): ?></a><?php endif; ?>
				<?php endforeach; ?>
			<?php else: ?>
				<?php if (!empty($backLink)): ?>
					<a href="<?php echo esc_attr($backLink); ?>" class="wf-back-link-chevron"><i class="wf-ion-chevron-left wf-back-icon" aria-hidden="true"></i></a>
					<a href="<?php echo esc_attr($backLink); ?>" class="wf-back-link"><?php echo $backLabelHTML; ?></a>
				<?php endif; ?>
			<?php endif; ?>
			</li>
			<?php if (!isset($suppressControls) || !$suppressControls): ?>
			<li class="wf-right">
				<a id="wf-restore-defaults" class="wf-btn wf-btn-default wf-btn-callout-subtle" href="#" data-restore-defaults-section="<?php echo esc_attr($restoreDefaultsSection); ?>" role="button"><?php echo wp_kses(/* translators: word order may be reversed as long as HTML remains around "Restore" */ __('<span class="wf-hidden-xs">Restore </span>Defaults', 'wordfence'), array('span'=>array('class'=>array()))); ?></a>&nbsp;&nbsp;<a id="wf-cancel-changes" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-disabled" href="#" role="button"><?php echo wp_kses(/* translators: word order may be reversed as long as HTML remains around "Changes" */ __('Cancel<span class="wf-hidden-xs wf-hidden-sm"> Changes</span>', 'wordfence'), array('span'=>array('class'=>array()))); ?></a>&nbsp;&nbsp;<a id="wf-save-changes" class="wf-btn wf-btn-primary wf-btn-callout-subtle wf-disabled" href="#" role="button"><?php echo wp_kses(/* translators: word order may be reversed as long as HTML remains around "Changes" */ __('Save<span class="wf-hidden-xs wf-hidden-sm"> Changes</span>', 'wordfence'), array('span'=>array('class'=>array()))); ?></a>
			</li>
			<?php endif; ?>
		</ul>
		<ul class="wf-block-left-center-right wf-hidden-sm wf-hidden-md wf-hidden-lg">
			<li class="wf-left">
				<?php if (!empty($backLink)): ?>
					<a href="<?php echo esc_attr($backLink); ?>" class="wf-back-link-chevron"><i class="wf-ion-chevron-left wf-back-icon" aria-hidden="true"></i></a>
					<a href="<?php echo esc_attr($backLink); ?>" class="wf-back-link"><?php echo $backLabelHTML; ?></a>
				<?php endif ?>
			</li>
			<li class="wf-center">
				<?php if (!isset($suppressLogo) || !$suppressLogo): ?>
				<div class="wordfence-lock-icon wordfence-icon32"></div>
				<?php endif; ?>
			</li>
			<?php if (!isset($suppressControls) || !$suppressControls): ?>
			<li class="wf-right">
				<a id="wf-mobile-controls" href="#" data-restore-defaults-section="<?php echo esc_attr($restoreDefaultsSection); ?>" role="button">&bullet;&bullet;&bullet;</a>
			</li>
			<?php endif; ?>
		</ul>
	</div>
</div>
<?php if (!isset($suppressControls) || !$suppressControls): ?>
<script type="application/javascript">
	(function($) {
		$(function() {
			var initialTop = parseInt($('.wf-options-controls').css('top'));
			$(window).bind("scroll", function() {
				if (window.matchMedia("only screen and (max-width: 615px)").matches) {
					$(this).scrollTop() > initialTop ? $('.wf-options-controls').css('top', '0px').css('position', 'fixed').css('left', '0px') : $('.wf-options-controls').css('top', initialTop + 'px').css('position', 'absolute').css('left', '-10px');
				}
			});
		});
	})(jQuery);
</script>
<script type="text/x-jquery-template" id="wfTmpl_restoreDefaultsPrompt">
	<?php
	echo wfView::create('common/modal-prompt', array(
		'title' => __('Confirm Restore Defaults', 'wordfence'),
		'message' => $restoreDefaultsMessage,
		'primaryButton' => array('id' => 'wf-restore-defaults-prompt-cancel', 'label' => __('Cancel', 'wordfence'), 'link' => '#'),
		'secondaryButtons' => array(array('id' => 'wf-restore-defaults-prompt-confirm', 'labelHTML' => wp_kses(/* translators: word order may be reversed as long as HTML remains around "Restore" */ __('Restore<span class="wf-hidden-xs"> Defaults</span>', 'wordfence'), array('span'=>array('class'=>array()))), 'link' => '#')),
	))->render();
	?>
</script>
<?php endif; ?>views/tools/options-group-live-traffic.php000064400000013125150755146450014766 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents the Live Traffic Options group.
 *
 * Expects $stateKey.
 *
 * @var string $stateKey The key under which the collapse state is stored.
 * @var bool $collapseable If defined, specifies whether or not this grouping can be collapsed. Defaults to true.
 * @var bool $showControls If defined, specifies whether or not the save/cancel/restore controls are shown. Defaults to false.
 * @var bool $hideShowMenuItem If defined, specifies whether or not the show menu item option is shown. Defaults to false.
 */

if (!isset($collapseable)) {
	$collapseable = true;
}

if (!isset($showControls)) {
	$showControls = false;
}

if (!isset($hideShowMenuItem)) {
	$hideShowMenuItem = false;
}
?>
<div id="wf-live-traffic-options" class="wf-row">
	<div class="wf-col-xs-12">
		<div class="wf-block<?php if (!$collapseable) { echo ' wf-always-active'; } else { echo (wfPersistenceController::shared()->isActive($stateKey) ? ' wf-active' : ''); } ?>" data-persistence-key="<?php echo esc_attr($stateKey); ?>">
			<div class="wf-block-header">
				<div class="wf-block-header-content">
					<div class="wf-block-title">
						<strong><?php esc_html_e('Live Traffic Options', 'wordfence'); ?></strong>
					</div>
					<?php if ($collapseable): ?><div class="wf-block-header-action"><div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive($stateKey) ? 'true' : 'false'); ?>" tabindex="0"></div></div><?php endif; ?>
				</div>
			</div>
			<div class="wf-block-content wf-clearfix">
				<?php if ($showControls): ?>
				<p>
					<?php echo wp_kses(__('These options let you choose which traffic to log and to ignore certain types of visitors, based on their level of access, usernames, IP address, or browser type. If you run a high-traffic website where it is not feasible to see your visitors in real-time, simply change the <strong>Traffic logging mode</strong> to "Security Only."', 'wordfence'), array('strong'=>array())); ?>
				</p>
				
				<div class="wf-row">
					<div class="wf-col-xs-12">
						<?php
						echo wfView::create('options/block-controls', array(
							'suppressLogo' => true,
							'restoreDefaultsSection' => wfConfig::OPTIONS_TYPE_LIVE_TRAFFIC,
							'restoreDefaultsMessage' => __('Are you sure you want to restore the default Live Traffic settings? This will undo any custom changes you have made to the options on this page.', 'wordfence'),
						))->render();
						?>
					</div>
				</div>
				<?php endif; ?>
				<ul class="wf-block-list">
					<li>
						<?php
						echo wfView::create('options/option-switch', array(
							'optionName' => 'liveTrafficEnabled',
							'value' => wfConfig::get('liveTrafficEnabled') ? '1': '0',
							'title' => __('Traffic logging mode', 'wordfence'),
							'states' => array(
								array('value' => '0', 'label' => __('Security Only', 'wordfence')),
								array('value' => '1', 'label' => __('All Traffic', 'wordfence')),
							),
							'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_TOOLS_LIVE_TRAFFIC_OPTION_ENABLE),
							'alignment' => 'wf-right',
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-toggled', array(
							'optionName'    => 'liveTraf_ignorePublishers',
							'enabledValue'  => 1,
							'disabledValue' => 0,
							'value'         => wfConfig::get('liveTraf_ignorePublishers') ? 1 : 0,
							'title'         => __("Don't log signed-in users with publishing access", 'wordfence'),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-text', array(
							'textOptionName' => 'liveTraf_ignoreUsers',
							'textValue'      => wfConfig::get('liveTraf_ignoreUsers'),
							'title'          => __('List of comma separated usernames to ignore', 'wordfence'),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-text', array(
							'textOptionName' => 'liveTraf_ignoreIPs',
							'textValue'      => wfConfig::get('liveTraf_ignoreIPs'),
							'title'          => __('List of comma separated IP addresses to ignore', 'wordfence'),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-text', array(
							'textOptionName' => 'liveTraf_ignoreUA',
							'textValue'      => wfConfig::get('liveTraf_ignoreUA'),
							'title'          => __('Browser user-agent to ignore', 'wordfence'),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-text', array(
							'textOptionName' => 'liveTraf_maxRows',
							'textValue'      => wfConfig::get('liveTraf_maxRows'),
							'title'          => __('Amount of Live Traffic data to store (number of rows)', 'wordfence'),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-text', array(
							'textOptionName' => 'liveTraf_maxAge',
							'textValue'      => wfConfig::get('liveTraf_maxAge'),
							'title'          => __('Maximum days to keep Live Traffic data (1-30 days)', 'wordfence'),
						))->render();
						?>
					</li>
					<?php if (!$hideShowMenuItem): ?>
					<li>
						<?php
						echo wfView::create('options/option-toggled', array(
							'optionName' => 'displayTopLevelLiveTraffic',
							'enabledValue' => 1,
							'disabledValue' => 0,
							'value' => wfConfig::get('displayTopLevelLiveTraffic') ? 1 : 0,
							'title' => __('Display Live Traffic menu option', 'wordfence'),
						))->render();
						?>
					</li>
					<?php endif; ?>
				</ul>
			</div>
		</div>
	</div>
</div>views/tools/options-group-2fa.php000064400000011553150755146450013066 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents the Two Factor Authentication Options group.
 *
 * Expects $stateKey.
 *
 * @var string $stateKey The key under which the collapse state is stored.
 * @var bool $collapseable If defined, specifies whether or not this grouping can be collapsed. Defaults to true.
 */

if (!isset($collapseable)) {
	$collapseable = true;
}

$helpLink = wfSupportController::supportURL(wfSupportController::ITEM_TOOLS_TWO_FACTOR);
?>
<div class="wf-row">
	<div class="wf-col-xs-12">
		<div class="wf-block<?php if (!$collapseable) { echo ' wf-always-active'; } else { echo (wfPersistenceController::shared()->isActive($stateKey) ? ' wf-active' : ''); } ?>" data-persistence-key="<?php echo esc_attr($stateKey); ?>">
			<div class="wf-block-header">
				<div class="wf-block-header-content">
					<div class="wf-block-title">
						<strong><?php esc_html_e('Two-Factor Authentication Options', 'wordfence') ?></strong>
					</div>
					<?php if ($collapseable): ?><div class="wf-block-header-action"><div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive($stateKey) ? 'true' : 'false'); ?>" tabindex="0"></div></div><?php endif; ?>
				</div>
			</div>
			<div class="wf-block-content">
				<?php if (!wfConfig::get('isPaid')): ?>
				<h3><?php esc_html_e("Take Login Security to the next level with Two-Factor Authentication", 'wordfence') ?></h3>
				<p><?php echo wp_kses(__('Used by banks, government agencies, and military worldwide, two-factor authentication is one of the most secure forms of remote system authentication available. With it enabled, an attacker needs to know your username, password, <em>and</em> have control of your phone to log into your site. Upgrade to Premium now to enable this powerful feature.', 'wordfence'), array('em'=>array())) ?></p>

				<p class="wf-nowrap wf-center">
					<img id="wf-two-factor-img1" src="<?php echo wfUtils::getBaseURL() . 'images/2fa1.svg' ?>" alt="">
					<img id="wf-two-factor-img2" src="<?php echo wfUtils::getBaseURL() . 'images/2fa2.svg' ?>" alt="">
				</p>

				<p class="wf-center wf-padding-add-bottom">
					<a class="wf-btn wf-btn-primary wf-btn-callout" href="https://www.wordfence.com/gnl1twoFac1/wordfence-signup/" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Upgrade to Premium', 'wordfence') ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>
				</p>
				<?php else: ?>
				<ul class="wf-block-list">
					<li>
						<?php
						echo wfView::create('options/option-toggled', array(
							'optionName'    => 'loginSec_requireAdminTwoFactor',
							'enabledValue'  => 1,
							'disabledValue' => 0,
							'value'         => wfConfig::get('loginSec_requireAdminTwoFactor') ? 1 : 0,
							'htmlTitle'     => wp_kses(sprintf(/* translators: Support URL. */ __('<strong>Require Cellphone Sign-in for all Administrators<a href="%s" target="_blank" rel="noopener noreferrer" class="wfhelp wf-inline-help"><span class="screen-reader-text"> (opens in new tab)</span></a></strong><br><em>Note:</em> This setting requires at least one administrator to have Cellphone Sign-in enabled. On multisite, this option applies only to super admins.', 'wordfence'), esc_url($helpLink)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array(), 'class'=>array()), 'strong'=>array(), 'br'=>array(), 'em'=>array(), 'span'=>array('class'=>array()))),
						))->render();
						?>
					</li>
					<li>
						<?php
						$allowSeparatePrompt = ini_get('output_buffering') > 0;
						echo wfView::create('options/option-toggled', array(
							'optionName'    => 'loginSec_enableSeparateTwoFactor',
							'enabledValue'  => 1,
							'disabledValue' => 0,
							'value'         => wfConfig::get('loginSec_enableSeparateTwoFactor') ? 1 : 0,
							'htmlTitle'     => wp_kses(sprintf(/* translators: Support URL. */ __('<strong>Enable Separate Prompt for Two-Factor Code<a href="%s" target="_blank" rel="noopener noreferrer" class="wfhelp wf-inline-help"><span class="screen-reader-text"> (opens in new tab)</span></a></strong><br><em>Note:</em> This setting changes the behavior for obtaining the two-factor authentication code from using the password field to showing a separate prompt. If your theme overrides the default login page, you may not be able to use this option.', 'wordfence'), $helpLink), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array(), 'class'=>array()), 'strong'=>array(), 'br'=>array(), 'em'=>array(), 'span'=>array('class'=>array()))) .
								($allowSeparatePrompt ? '' : wp_kses(__('<br><strong>This setting will be ignored because the PHP configuration option <code>output_buffering</code> is off.</strong>', 'wordfence'), array('strong'=>array(), 'br'=>array()))),
						))->render();
						?>
					</li>
				</ul>
				<?php endif; ?>
			</div>
		</div>
	</div>
</div>views/gdpr/banner.php000064400000007204150755146450010632 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents the persistent banner.
 */
?>
<ul id="wf-gdpr-banner">
	<li><?php esc_html_e('Wordfence\'s terms of service and privacy policy have changed', 'wordfence'); ?></li>
	<li><a href="#" class="wf-btn wf-btn-default" id="wf-gdpr-review" role="button"><?php esc_html_e('Review', 'wordfence'); ?></a></li>
</ul>

<script type="application/javascript">
	(function($) {
		$(function() {
			$('#wf-gdpr-review').on('click', function(e) {
				e.preventDefault();
				e.stopPropagation();

				var prompt = $('#wfTmpl_touppChangedModal').tmpl();
				var promptHTML = $("<div />").append(prompt).html();
				WFAD.colorboxHTML(WFAD.isSmallScreen ? '300px' : '800px', promptHTML, {overlayClose: false, closeButton: false, className: 'wf-modal', onComplete: function() {
					$('#wf-toupp-changed-cancel').on('click', function(e) {
						e.preventDefault();
						e.stopPropagation();

						WFAD.colorboxClose();
					});

					$('#wf-toupp-changed-agree').on('click', function(e) {
						e.preventDefault();
						e.stopPropagation();

						$('#wf-gdpr-banner').slideUp();
						$('.wf-toupp-required').removeClass('wf-toupp-required');
						WFAD.ajax('wordfence_recordTOUPP', {}, function(res) {
							//Do nothing
						});

						WFAD.colorboxClose();
					});
				}});
			});
		});
	})(jQuery);
</script>

<script type="text/x-jquery-template" id="wfTmpl_touppChangedModal">
<div class="wf-modal" id="wf-toupp-changed-modal">
	<div class="wf-modal-content">
		<p><?php echo wp_kses(__('We have updated our policies. To continue using Wordfence, you will need to read and agree to the <a href="https://www.wordfence.com/license-terms-and-conditions/" target="_blank" rel="noopener noreferrer">Wordfence License Terms and Conditions<span class="screen-reader-text"> (opens in new tab)</span></a>, the <a href="https://www.wordfence.com/services-subscription-agreement" rel="noopener noreferrer" target="_blank">Services Subscription Agreement<span class="screen-reader-text"> (opens in new tab)</span></a>, and <a href="https://www.wordfence.com/terms-of-service/" target="_blank" rel="noopener noreferrer">Terms of Service<span class="screen-reader-text"> (opens in new tab)</span></a>, and read and acknowledge the <a href="https://www.wordfence.com/privacy-policy/" target="_blank" rel="noopener noreferrer">Wordfence Privacy Policy<span class="screen-reader-text"> (opens in new tab)</span></a>.', 'wordfence'), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()), 'span'=>array('class'=>array()))); ?></p>
		<?php if (wfConfig::get('isPaid')): ?><p><?php echo wp_kses(__('You can log in to <a href="https://www.wordfence.com/" target="_blank" rel="noopener noreferrer">wordfence.com<span class="screen-reader-text"> (opens in new tab)</span></a> to accept the updated terms and privacy policy for all of your license keys at once.', 'wordfence'), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()), 'span'=>array('class'=>array()))); ?></p><?php endif; ?>
	</div>
	<div class="wf-modal-footer">
		<ul class="wf-flex-horizontal wf-full-width wf-flex-align-right">
			<li class="wf-padding-add-right"><a href="https://www.wordfence.com/help/general-data-protection-regulation/#agreement-to-new-terms-and-privacy-policies" class="wf-btn wf-btn-default" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Learn More', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></li>
			<li><a href="#" class="wf-btn wf-btn-primary" id="wf-toupp-changed-agree" role="button"><?php esc_html_e('Agree', 'wordfence'); ?></a></li>
		</ul>
	</div>
</div>
</script>views/gdpr/disabled-overlay.php000064400000001262150755146450012611 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
?>
<div id="wf-toupp-required-overlay"></div>
<div id="wf-toupp-required-message">
	<div id="wf-toupp-required-message-inner">
		<p><?php esc_html_e('We have updated our policies. To continue using Wordfence, you will need to read and agree to the Wordfence License Terms and Conditions, the Services Subscription Agreement, and Terms of Service, and read and acknowledge the Wordfence Privacy Policy by clicking Review.', 'wordfence'); ?></p>
		<p><a href="#" class="wf-btn wf-btn-default" onclick="jQuery('#wf-gdpr-review').trigger('click'); return false;" role="button"><?php esc_html_e('Review', 'wordfence'); ?></a></p>
	</div>
</div>views/blocking/block-list.php000064400000055350150755146450012271 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents the list of blocks.
 *
 */
?>
<div class="wf-row">
	<div class="wf-col-xs-12">
		<div class="wf-flex-horizontal wf-flex-full-width wf-add-bottom-small">
			<h3 class="wf-no-top wf-no-bottom"><?php echo wp_kses(sprintf(/* translators: Site URL */ __('Current blocks<span class="wf-hidden-xs"> for %s</span>', 'wordfence'), preg_replace('/^https?:\/\//i', '', wfUtils::wpSiteURL())), array('span'=>array('class'=>array()))); ?></h3>
			<div class="wf-right">
				<div class="wf-inline-block">
				<ul class="wf-option wf-option-toggled-boolean-switch wf-option-no-spacing" data-option="displayAutomaticBlocks" data-enabled-value="1" data-disabled-value="0" data-original-value="<?php echo wfConfig::get('displayAutomaticBlocks') ? 1 : 0; ?>">
					<li class="wf-boolean-switch<?php echo wfConfig::get('displayAutomaticBlocks') ? ' wf-active' : ''; ?>"><a href="#" class="wf-boolean-switch-handle"></a></li>
					<li class="wf-option-title wf-padding-add-left wf-no-right wf-padding-no-right">
						<?php echo wp_kses(__('Show<span class="wf-hidden-xs"> Wordfence</span> Automatic<span class="wf-hidden-xs"> Blocks</span>', 'wordfence'), array('span'=>array('class'=>array()))); ?>
					</li>
				</ul>
				</div>
			</div>
		</div>
	</div>
</div>
<div class="wf-row">
	<div class="wf-col-xs-12">
		<div class="wf-row">
			<div class="wf-col-xs-12">
				<div class="wf-block wf-block-no-header wf-active">
					<div class="wf-block-content wf-padding-add-top-large wf-padding-add-bottom-large">
						<ul class="wf-flex-horizontal wf-flex-vertical-xs wf-flex-full-width wf-flex-grow-all wf-no-top">
							<li class="wf-padding-add-bottom-xs">
								<ul class="wf-flex-horizontal wf-flex-full-width wf-flex-grow-first wf-no-top">
									<li><input type="text" placeholder="<?php esc_attr_e('Filter by Type, Detail, or Reason', 'wordfence'); ?>" id="wf-blocks-filter-field" class="wf-input-text"></li>
									<li class="wf-padding-add-left-medium"><a href="#" id="wf-blocks-apply-filter" class="wf-btn wf-btn-callout wf-btn-default" role="button"><?php esc_html_e('Filter', 'wordfence'); ?></a>&nbsp;&nbsp;<a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_BLOCKING_FILTER); ?>" target="_blank" rel="noopener noreferrer" class="wf-inline-help"><i class="wf-fa wf-fa-question-circle-o" aria-hidden="true"></i><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></li>
								</ul>
							</li>
							<li class="wf-right wf-flex-vertical-xs">
								<a href="#" id="blocks-bulk-unblock" class="wf-btn wf-btn-callout wf-btn-default" role="button"><?php esc_html_e('Unblock', 'wordfence'); ?></a>&nbsp;&nbsp;<a href="#" id="blocks-bulk-make-permanent" class="wf-btn wf-btn-callout wf-btn-default"><?php esc_html_e('Make Permanent', 'wordfence'); ?></a>&nbsp;&nbsp;<a href="<?php echo wfUtils::siteURLRelative(); ?>?_wfsf=blockedIPs&amp;nonce=<?php echo wp_create_nonce('wp-ajax'); ?>" id="blocks-export-ips" class="wf-btn wf-btn-callout wf-btn-default"><?php echo wp_kses(/* translators: word order may be altered as long as HTML remains around "All IPs" */ __('Export<span class="wf-hidden-xs"> All IPs</span>', 'wordfence'), array('span'=>array('class'=>array()))); ?></a>
							</li>
						</ul>
						<div class="wf-block wf-block-no-padding wf-block-no-header wf-active wf-no-bottom wf-overflow-y-auto-xs">
							<div class="wf-block-content">
								<div id="wf-blocks-wrapper"></div>
							</div>
						</div>
					</div>
				</div>
			</div>
		</div>
	</div>
</div> <!-- end block list -->
<script type="text/x-jquery-template" id="wf-blocks-tmpl">
	<div class="wf-blocks-table-container">
		<table class="wf-striped-table wf-blocks-table">
			<thead>
			</thead>
			<tbody>
			</tbody>
			<tfoot>
			</tfoot>
		</table>
	</div>
</script>
<script type="text/x-jquery-template" id="wf-blocks-columns-tmpl">
	<tr class="wf-blocks-columns">
		<th style="width: 2%;text-align: center"><div class="wf-blocks-bulk-select wf-option-checkbox"><i class="wf-ion-ios-checkmark-empty" aria-hidden="true"></i></div></th>
		<th data-column="type" class="wf-sortable wf-unsorted"><?php esc_html_e('Block Type', 'wordfence'); ?> <i class="wf-sorted-ascending wf-ion-android-arrow-dropup" aria-hidden="true"></i><i class="wf-sorted-descending wf-ion-android-arrow-dropdown" aria-hidden="true"></i></th>
		<th data-column="detail" class="wf-sortable wf-unsorted"><?php esc_html_e('Detail', 'wordfence'); ?> <i class="wf-sorted-ascending wf-ion-android-arrow-dropup" aria-hidden="true"></i><i class="wf-sorted-descending wf-ion-android-arrow-dropdown" aria-hidden="true"></i></th>
		<th data-column="ruleAdded" class="wf-sortable wf-unsorted"><?php esc_html_e('Rule Added', 'wordfence'); ?> <i class="wf-sorted-ascending wf-ion-android-arrow-dropup" aria-hidden="true"></i><i class="wf-sorted-descending wf-ion-android-arrow-dropdown" aria-hidden="true"></i></th>
		<th data-column="reason" class="wf-sortable wf-unsorted"><?php esc_html_e('Reason', 'wordfence'); ?> <i class="wf-sorted-ascending wf-ion-android-arrow-dropup" aria-hidden="true"></i><i class="wf-sorted-descending wf-ion-android-arrow-dropdown" aria-hidden="true"></i></th>
		<th data-column="expiration" class="wf-sortable wf-unsorted"><?php esc_html_e('Expiration', 'wordfence'); ?> <i class="wf-sorted-ascending wf-ion-android-arrow-dropup" aria-hidden="true"></i><i class="wf-sorted-descending wf-ion-android-arrow-dropdown" aria-hidden="true"></i></th>
		<th data-column="blockCount" class="wf-sortable wf-unsorted"><?php esc_html_e('Block Count', 'wordfence'); ?> <i class="wf-sorted-ascending wf-ion-android-arrow-dropup" aria-hidden="true"></i><i class="wf-sorted-descending wf-ion-android-arrow-dropdown" aria-hidden="true"></i></th>
		<th data-column="lastAttempt" class="wf-sortable wf-unsorted"><?php esc_html_e('Last Attempt', 'wordfence'); ?> <i class="wf-sorted-ascending wf-ion-android-arrow-dropup" aria-hidden="true"></i><i class="wf-sorted-descending wf-ion-android-arrow-dropdown" aria-hidden="true"></i></th>
	</tr>
</script>
<script type="text/x-jquery-template" id="wf-no-blocks-tmpl">
	<tr id="wf-no-blocks">
		<td colspan="8"><?php esc_html_e('No blocks are currently active.', 'wordfence'); ?></td>
	</tr>
</script>
<script type="text/x-jquery-template" id="wf-no-filtered-blocks-tmpl">
	<tr id="wf-no-blocks">
		<td colspan="8"><?php esc_html_e('No blocks match the current filter.', 'wordfence'); ?></td>
	</tr>
</script>
<script type="text/x-jquery-template" id="wf-blocks-loading-tmpl">
	<tr id="wf-blocks-loading">
		<td colspan="8" class="wf-center wf-padding-add-top wf-padding-add-bottom">
			<?php
			echo wfView::create('common/indeterminate-progress', array(
				'size' => 50,
			))->render();
			?>
		</td>
	</tr>
</script>
<script type="text/x-jquery-template" id="wf-block-row-tmpl">
	<tr class="wf-block-record" data-id="${id}" data-expiration="${expiration}">
		<td style="text-align: center;"><div class="wf-blocks-table-bulk-checkbox wf-option-checkbox"><i class="wf-ion-ios-checkmark-empty" aria-hidden="true"></i></div></td>
		<td data-column="type" data-sort="${typeSort}">${typeDisplay}</td>
		<td data-column="detail" data-sort="${detailSort}">${detailDisplay}{{if (editable)}}&nbsp;<a href="#" class="wf-block-edit" data-edit-type="${editType}" data-edit-values="${editValues}" role="button"><i class="wf-ion-edit" aria-hidden="true"></i></a>{{/if}}</td>
		<td data-column="ruleAdded" data-sort="${ruleAddedSort}">${ruleAddedDisplay}</td>
		<td data-column="reason" data-sort="${reasonSort}">${reasonDisplay}</td>
		<td data-column="expiration" data-sort="${expirationSort}">${expirationDisplay}</td>
		<td data-column="blockCount" data-sort="${blockCountSort}">${blockCountDisplay}</td>
		<td data-column="lastAttempt" data-sort="${lastAttemptSort}">${lastAttemptDisplay}</td>
	</tr>
</script>
<script type="application/javascript">
	(function($) {
		WFAD.blockHeaderCheckboxAction = function(checkbox) { //Top-level checkboxes
			$('.wf-blocks-bulk-select.wf-option-checkbox').toggleClass('wf-checked');
			var checked = $(checkbox).hasClass('wf-checked');
			$('.wf-blocks-table-bulk-checkbox.wf-option-checkbox').toggleClass('wf-checked', checked);
			$(window).trigger('wordfenceUpdateBlockButtons');
		};
		
		
		$(window).on('wordfenceRefreshBlockList', function(e, payload, append) {
			if (!payload.hasOwnProperty('loading')) {
				payload['loading'] = false;
			}
			
			//Create table if needed
			var table = $(".wf-blocks-table-container");
			if (table.length == 0) {
				var wrapperTemplate = $('#wf-blocks-tmpl').tmpl();
				$('#wf-blocks-wrapper').append(wrapperTemplate);
				table = $(".wf-blocks-table-container");
			}
			
			if (!append) {
				table.find('.wf-block-record').remove();
			}
			
			//Create header if needed
			if (table.find('thead > .wf-blocks-columns').length == 0) {
				table.find('thead').append($('#wf-blocks-columns-tmpl').tmpl());
				table.find('thead .wf-blocks-bulk-select.wf-option-checkbox').on('click', function(e) {
					e.preventDefault();
					e.stopPropagation();
					WFAD.blockHeaderCheckboxAction($(this));
				});
				table.find('thead > .wf-blocks-columns > .wf-sortable').on('click', function(e, initialState) {
					e.preventDefault();
					e.stopPropagation();

					var column = $(this).data('column');
					if ($(this).hasClass('wf-sorted-ascending')) {
						table.find('.wf-blocks-columns > .wf-sortable.wf-sorted-ascending').each(function() {
							$(this).removeClass('wf-sorted-ascending');
							$(this).addClass('wf-sorted-descending');
						});
						if (!initialState) {
							WFAD.sortColumn = column;
							WFAD.sortDirection = 'descending';
							$(window).trigger('wordfenceLoadBlocks', [true]);
						}
					}
					else if ($(this).hasClass('wf-sorted-descending')) {
						table.find('.wf-blocks-columns > .wf-sortable.wf-sorted-descending').each(function() {
							$(this).removeClass('wf-sorted-descending');
							$(this).addClass('wf-sorted-ascending');
						});
						if (!initialState) {
							WFAD.sortColumn = column;
							WFAD.sortDirection = 'ascending';
							$(window).trigger('wordfenceLoadBlocks', [true]);
						}
					}
					else {
						table.find('.wf-blocks-columns > .wf-sortable').removeClass('wf-sorted-descending').removeClass('wf-sorted-ascending').addClass('wf-unsorted');
						var column = $(this).data('column');
						$(this).removeClass('wf-unsorted').addClass('wf-sorted-ascending');
						table.find('tfoot > .wf-blocks-columns > .wf-sortable[data-column="' + column + '"]').removeClass('wf-unsorted').addClass('wf-sorted-ascending');
						if (!initialState) {
							WFAD.sortColumn = column;
							WFAD.sortDirection = 'ascending';
							$(window).trigger('wordfenceLoadBlocks', [true]);
						}
					}
				});
			}
			
			//Create or remove footer if needed
			var loadedBlockCount = $('.wf-block-record').length + payload['blocks'].length;
			if (loadedBlockCount > 5 && table.find('tfoot > .wf-blocks-columns').length == 0) {
				table.find('tfoot').append($('#wf-blocks-columns-tmpl').tmpl());
				table.find('tfoot .wf-blocks-bulk-select.wf-option-checkbox').on('click', function(e) {
					e.preventDefault();
					e.stopPropagation();
					WFAD.blockHeaderCheckboxAction($(this));
				});
				table.find('tfoot > .wf-blocks-columns > .wf-sortable').on('click', function(e, initialState) {
					e.preventDefault();
					e.stopPropagation();

					var column = $(this).data('column');
					if ($(this).hasClass('wf-sorted-ascending')) {
						table.find('.wf-blocks-columns > .wf-sortable.wf-sorted-ascending').each(function() {
							$(this).removeClass('wf-sorted-ascending');
							$(this).addClass('wf-sorted-descending');
						});
						if (!initialState) {
							WFAD.sortColumn = column;
							WFAD.sortDirection = 'descending';
							$(window).trigger('wordfenceLoadBlocks', [true]);
						}
					}
					else if ($(this).hasClass('wf-sorted-descending')) {
						table.find('.wf-blocks-columns > .wf-sortable.wf-sorted-descending').each(function() {
							$(this).removeClass('wf-sorted-descending');
							$(this).addClass('wf-sorted-ascending');
						});
						if (!initialState) {
							WFAD.sortColumn = column;
							WFAD.sortDirection = 'ascending';
							$(window).trigger('wordfenceLoadBlocks', [true]);
						}
					}
					else {
						table.find('.wf-blocks-columns > .wf-sortable').removeClass('wf-sorted-descending').removeClass('wf-sorted-ascending').addClass('wf-unsorted');
						$(this).removeClass('wf-unsorted').addClass('wf-sorted-ascending');
						table.find('thead > .wf-blocks-columns > .wf-sortable[data-column="' + column + '"]').removeClass('wf-unsorted').addClass('wf-sorted-ascending');
						if (!initialState) {
							WFAD.sortColumn = column;
							WFAD.sortDirection = 'ascending';
							$(window).trigger('wordfenceLoadBlocks', [true]);
						}
					}
				});
			}
			else if (loadedBlockCount > 5) {
				//Do nothing
			}
			else {
				table.find('tfoot > .wf-blocks-columns').remove();
			}
			
			//Add row(s)
			$('#wf-blocks-loading').remove();
			if (!append && payload['blocks'].length == 0) {
				if (!payload['loading'] && $('#wf-no-blocks').length == 0) {
					if (!!WFAD.blocksFilter) {
						table.find('tbody').append($('#wf-no-filtered-blocks-tmpl').tmpl());
					}
					else {
						table.find('tbody').append($('#wf-no-blocks-tmpl').tmpl());
					}
				}
			}
			else {
				$('#wf-no-blocks').remove();
				for (var i = 0; i < payload['blocks'].length; i++) {
					var row = $('#wf-block-row-tmpl').tmpl(payload['blocks'][i]);

					row.find('.wf-blocks-table-bulk-checkbox.wf-option-checkbox').on('click', function() { //Individual checkboxes
						e.preventDefault();
						e.stopPropagation();

						$(this).toggleClass('wf-checked');
						$(window).trigger('wordfenceUpdateBulkSelect');
						$(window).trigger('wordfenceUpdateBlockButtons');
					});

					row.find('.wf-block-edit').on('click', function(e) {
						e.preventDefault();
						e.stopPropagation();

						var editType = $(this).data('editType');
						$('#wf-block-type > li > a[data-value="' + editType + '"]').trigger('click');
						if ($('#wf-block-parameters-title').offset().top < $(window).scrollTop()) {
							$("body,html").animate({
								scrollTop: $('#wf-block-parameters-title').offset().top
							}, 800);
						}
					});
					
					var reasonDisplayChunks = payload['blocks'][i]['reasonDisplay'].split(/\s+/);
					for (var n = 0; n < reasonDisplayChunks.length; n++) {
						if (reasonDisplayChunks[n].length >= 50) {
							row.find('[data-column="reason"]').addClass('wf-split-word');
							break;
						}
					}
					
					var existing = table.find('tbody tr[data-id="' + payload['blocks'][i]['id'] + '"]');
					if (existing.length > 0) {
						existing.replaceWith(row);
					}
					else {
						table.find('tbody').append(row);
					}
				}
			}
			
			try {
				$('#wf-blocks-wrapper').data('hasCountryBlock', JSON.parse(payload.hasCountryBlock));
			}
			catch (e) {
				$('#wf-blocks-wrapper').data('hasCountryBlock', '');
			}
			
			if (table.find('.wf-blocks-columns > .wf-sortable.wf-sorted-ascending, .wf-blocks-columns > .wf-sortable.wf-sorted-descending').length == 0) {
				table.find('thead > .wf-blocks-columns > .wf-sortable[data-column="ruleAdded"]').addClass('wf-sorted-ascending').trigger('click', [true]);
			}

			$(window).trigger('wordfenceUpdateBlockButtons');
		});

		$(window).on('wordfenceUpdateBlockButtons', function() {
			var totalCount = $('.wf-blocks-table-bulk-checkbox.wf-option-checkbox').length;
			var checked = $('.wf-blocks-table-bulk-checkbox.wf-option-checkbox.wf-checked');
			var allowUnblock = false;
			var allowMakeForever = false;
			for (var i = 0; i < checked.length; i++) {
				var tr = $(checked[i]).closest('tr');
				if (tr.is(':visible')) {
					allowUnblock = true;
					if (tr.data('expiration') > 0) {
						allowMakeForever = true;
					}
				}
			}
			
			$('#blocks-bulk-unblock').toggleClass('wf-disabled', !allowUnblock);
			$('#blocks-bulk-make-permanent').toggleClass('wf-disabled', !allowMakeForever);
			$('#blocks-export-ips').toggleClass('wf-disabled', (totalCount == 0));
		});

		$(window).on('wordfenceUpdateBulkSelect', function() {
			var totalCount = $('.wf-blocks-table-bulk-checkbox.wf-option-checkbox:visible').length;
			var checkedCount = $('.wf-blocks-table-bulk-checkbox.wf-option-checkbox.wf-checked:visible').length;
			$('.wf-blocks-bulk-select.wf-option-checkbox:visible').toggleClass('wf-checked', (totalCount > 0 && checkedCount == totalCount));
		});

		$(window).on('wordfenceLoadBlocks', function(e, reload) {
			var offset = reload ? 0 : $('.wf-block-record').length;
			
			WFAD.loadingBlocks = true;
			WFAD.ajax('wordfence_getBlocks', {offset: offset, sortColumn: WFAD.sortColumn, sortDirection: WFAD.sortDirection, blocksFilter: WFAD.blocksFilter}, function(res) {
				$(window).trigger('wordfenceRefreshBlockList', [res, !reload]);
				WFAD.loadingBlocks = false;
			});
		});
		
		$(function() {
			WFAD.sortColumn = 'ruleAdded';
			WFAD.sortDirection = 'descending';
			
			$(window).trigger('wordfenceRefreshBlockList', [{blocks: [], loading: true}, false]);
			$(window).trigger('wordfenceLoadBlocks', [true]);

			var issuesWrapper = $('#wf-blocks-wrapper');
			var hasScrolled = false;
			$(window).on('scroll', function() {
				var win = $(this);
				var currentScrollBottom = win.scrollTop() + window.innerHeight;
				var scrollThreshold = issuesWrapper.outerHeight() + issuesWrapper.offset().top;
				if (hasScrolled && !WFAD.loadingBlocks && currentScrollBottom >= scrollThreshold) {
					hasScrolled = false;
					$(window).trigger('wordfenceLoadBlocks', [false]);
				}
				else if (currentScrollBottom < scrollThreshold) {
					hasScrolled = true;
				}
			});

			$('#wf-blocks-filter-field').on('keypress', function(e) {
				if (e.which == 13) {
					$('#wf-blocks-apply-filter').trigger('click');
					return false;
				}
			}).on('change paste keyup', function() {
				setTimeout(function() {
					var currentValue = $('#wf-blocks-filter-field').val() || '';
					if (!WFAD.blocksFilter) {
						$('#wf-blocks-apply-filter').text('<?php esc_html_e('Filter', 'wordfence'); ?>').data('filterMode', '');
					}
					else if (currentValue == '' || currentValue == WFAD.blocksFilter) {
						$('#wf-blocks-apply-filter').text('<?php esc_html_e('Clear Filter', 'wordfence'); ?>').data('filterMode', 'filtered');
					}
					else {
						$('#wf-blocks-apply-filter').text('<?php esc_html_e('Change Filter', 'wordfence'); ?>').data('filterMode', 'pendingChange');
					}
				}, 4);
			});
			
			$('#wf-blocks-apply-filter').on('click', function(e) {
				e.preventDefault();
				e.stopPropagation();
				
				var mode = $('#wf-blocks-apply-filter').data('filterMode') || '';
				if (mode != 'filtered') {
					WFAD.blocksFilter = $('#wf-blocks-filter-field').val() || '';
				}
				else {
					WFAD.blocksFilter = '';
					$('#wf-blocks-filter-field').val('')
				}

				$('#wf-blocks-filter-field').trigger('keyup');
				$(window).trigger('wordfenceLoadBlocks', [true]);
			});
			
			$('#blocks-bulk-unblock').on('click', function(e) {
				e.preventDefault();
				e.stopPropagation();

				var totalCount = $('.wf-blocks-table-bulk-checkbox.wf-option-checkbox:visible').length;
				var checked = $('.wf-blocks-table-bulk-checkbox.wf-option-checkbox.wf-checked:visible');
				var checkedCount = checked.length;
				var removingCountryBlock = false;
				var blockIDs = [];
				var rows = [];
				for (var i = 0; i < checked.length; i++) {
					var tr = $(checked[i]).closest('tr');
					rows.push(tr);
					blockIDs.push(tr.data('id'));
					
					if (tr.find('td[data-column="type"]').data('sort') == <?php echo (int) wfBlock::TYPE_COUNTRY; ?>) {
						removingCountryBlock = true;
					}
				}

				var prompt = $('#wfTmpl_unblockPrompt').tmpl({count: checkedCount});
				var promptHTML = $("<div />").append(prompt).html();
				WFAD.colorboxHTML('400px', promptHTML, {overlayClose: false, closeButton: false, className: 'wf-modal', onComplete: function() {
					$('#wf-blocking-prompt-cancel').on('click', function(e) {
						e.preventDefault();
						e.stopPropagation();
						
						WFAD.colorboxClose();
					});

					$('#wf-blocking-prompt-unblock').on('click', function(e) {
						e.preventDefault();
						e.stopPropagation();

						WFAD.loadingBlocks = true;
						WFAD.ajax('wordfence_deleteBlocks', {blocks: JSON.stringify(blockIDs), sortColumn: WFAD.sortColumn, sortDirection: WFAD.sortDirection, blocksFilter: WFAD.blocksFilter}, function(res) {
							WFAD.loadingBlocks = false;
							if (totalCount == checkedCount) {
								$(window).trigger('wordfenceRefreshBlockList', [res, false]); //Everything deleted, just reload it
							}
							else {
								for (var i = 0; i < rows.length; i++) {
									$(rows[i]).remove();
								}
								
								if (removingCountryBlock) {
									$('#wf-blocks-wrapper').data('hasCountryBlock', '');
								}
								
								$(window).trigger('wordfenceUpdateBulkSelect');
								$(window).trigger('wordfenceUpdateBlockButtons');
							}

							WFAD.colorboxClose();
						});
					});
				}});
			});
			
			$('#blocks-bulk-make-permanent').on('click', function(e) {
				e.preventDefault();
				e.stopPropagation();

				var checked = $('.wf-blocks-table-bulk-checkbox.wf-option-checkbox.wf-checked:visible');
				var updateIDs = [];
				for (var i = 0; i < checked.length; i++) {
					var tr = $(checked[i]).closest('tr');
					if (tr.is(':visible')) {
						updateIDs.push(tr.data('id'));
					}
				}

				WFAD.loadingBlocks = true;
				WFAD.ajax('wordfence_makePermanentBlocks', {updates: JSON.stringify(updateIDs), sortColumn: WFAD.sortColumn, sortDirection: WFAD.sortDirection, blocksFilter: WFAD.blocksFilter}, function(res) {
					WFAD.loadingBlocks = false;
					$(window).trigger('wordfenceRefreshBlockList', [res, false]);
				});
			});

			$('.wf-option.wf-option-toggled-boolean-switch[data-option="displayAutomaticBlocks"]').on('change', function() {
				delete WFAD.pendingChanges['displayAutomaticBlocks'];
				var isOn = $(this).find('.wf-boolean-switch').hasClass('wf-active');
				WFAD.setOption($(this).data('option'), (isOn ? $(this).data('enabledValue') : $(this).data('disabledValue')), function() {
					$(window).trigger('wordfenceLoadBlocks', [true]);
				});
			});
		});
	})(jQuery);
</script>
<script type="text/x-jquery-template" id="wfTmpl_unblockPrompt">
<?php
echo wfView::create('common/modal-prompt', array(
	'title' => __('Unblocking', 'wordfence'),
	'message' => '{{if count == 1}}' . __('Are you sure you want to stop blocking the selected IP, range, or country?', 'wordfence') . ' {{else}}' . __('Are you sure you want to stop blocking the ${count} selected IPs, ranges, and countries?', 'wordfence') . '{{/if}}',
	'primaryButton' => array('id' => 'wf-blocking-prompt-cancel', 'label' => __('Cancel', 'wordfence'), 'link' => '#'),
	'secondaryButtons' => array(array('id' => 'wf-blocking-prompt-unblock', 'label' => __('Unblock', 'wordfence'), 'link' => '#')),
))->render();
?>
</script>views/blocking/country-modal.php000064400000005552150755146450013022 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents the country selection modal.
 */

require(WORDFENCE_PATH . 'lib/wfBulkCountries.php'); /** @var array $wfBulkCountries */
asort($wfBulkCountries);
$letters = '';
foreach ($wfBulkCountries as $name) {
	$l = strtoupper(substr($name, 0, 1));
	$test = strtoupper(substr($letters, -1));
	if ($l != $test) {
		$letters .= $l;
	}
}
$letters = str_split($letters);
?>
<script type="text/x-jquery-template" id="wfTmpl_countrySelector">
	<div class="wf-modal" id="wf-country-selector">
		<div class="wf-modal-header">
			<div class="wf-modal-header-content">
				<div class="wf-modal-title">
					<?php esc_html_e('Select Countries to Block from List', 'wordfence'); ?>
				</div>
			</div>
			<div class="wf-modal-header-action">
				<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-countries-shortcut" id="wf-country-selector-block-all" data-shortcut="select" role="button"><?php esc_html_e('Block All', 'wordfence'); ?></a>&nbsp;&nbsp;<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-countries-shortcut" id="wf-country-selector-unblock-all" data-shortcut="deselect"><?php esc_html_e('Unblock All', 'wordfence'); ?></a>
			</div>
		</div>
		<div class="wf-modal-content">
			<ul class="wf-country-selector-controls">
				<li>
					<ul class="wf-country-selector-section-options"> 
						<?php
						foreach ($letters as $l) {
							echo '<li><a href="#" data-letter="' . esc_attr($l) . '" role="button">' . esc_html($l) . '</a></li>';
						}
						?>
					</ul>
				</li>
			</ul>
			<div class="wf-country-selector-outer-wrapper">
				<div class="wf-country-selector-inner-wrapper">
					<div class="wf-country-selector-options">
					<?php
					$current = '';
					foreach ($wfBulkCountries as $code => $name) {
						$test = strtoupper(substr($name, 0, 1));
						if ($test != $current) {
							if ($current != '') {
								echo '</ul>';
							}
							$current = $test;
					?>
						<ul class="wf-blocked-countries" data-letter="<?php echo esc_attr($current); ?>">
						<?php
						}
						?>
							<li id="wf-country-option-<?php echo esc_attr(strtolower($code)); ?>" data-country="<?php echo esc_attr($code); ?>"><a href="#" role="button"><?php echo esc_html($name); ?></a></li>
					<?php
					}
							
					if ($current != '') {
						echo '</ul>';
					}
					?>
					</div>
				</div>
			</div>
		</div>
		<div class="wf-modal-footer">
			<ul class="wf-flex-horizontal wf-flex-full-width">
				<li id="wf-country-selector-count"></li>
				<li class="wf-right"><a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle" id="wf-country-selector-cancel" role="button"><?php esc_html_e('Back', 'wordfence'); ?></a>&nbsp;&nbsp;<a href="#" class="wf-btn wf-btn-primary wf-btn-callout-subtle" id="wf-country-selector-confirm"><?php esc_html_e('Save', 'wordfence'); ?></a></li>
			</ul>
		</div>
	</div>
</script>views/blocking/country-block-map.php000064400001276560150755146450013605 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 782.61 393.57" class="wf-country-block-map"><path d="M292.84,264.13l0,.06.05.08,0,.09.08,0,.08-.12v-.15h-.15ZM211,126.63l0,.07.05,0,.06,0v-.06l-.05-.13v-.12l.06-.11v-.08l-.08,0H211l-.13.11.07.12Zm2.45,1.61.05.06.41.07.22.08.23.14.2.09.17,0,.14.07.09.09.23.11,0,.06,0,0h.05l.45-.29h.13v0l-.23.18h-.12l-.12.08v0h.06l.07,0,.06.06.11,0,.16-.1.15-.16.22-.33v0h-.18l0,0,.06-.07,0-.07,0-.06h0l-.09.07-.06.11-.08.2h0l-.06-.12v-.09l0-.1,0-.06-.07,0,0-.05v-.08l0-.06-.06-.05h-.1l-.14.05-.12.08-.08.12h-.07l0-.14-.06-.06-.07,0,0,0V128l-.08,0-.14,0-.09,0,0,0h0l0,0h-.07l-.08.06,0,.05,0,.07v0l.08,0v0l0,.06h-.05l-.05-.09,0,0,0,0h0l0-.05H214l-.09,0-.06,0v-.06l0,0-.06,0V128l0-.1-.05,0-.12,0-.09,0,0,0h-.07l-.07,0h-.08l-.06,0h-.05l0-.07-.05,0,0,0,0,0,0,.08.12.08Zm2.26,1,0,0v0l0,0h.06l.13-.08,0-.06,0,0Zm-3.12-1.19.11,0,.14-.16v0l-.05-.05-.09,0h-.1l-.1.06-.06.06,0,.07,0,.07Zm-.93-.46h0v.1l.09.06.18,0,.3,0,.14,0,.06-.08v-.06l-.06,0-.09-.16,0,0-.16,0,0,0,0,.07v0l-.06,0-.13.06h-.1Zm7.23,3.62.08.08v0l0-.1,0,0-.09,0-.05,0v0Zm-11-8.34h.52l0,0-.09-.07-.25-.09H208l-.12,0-.1,0-.05,0,0,0Zm3.42,4.28.11.19.09.05h.05l.05,0,0-.08,0,0,0,0,.05,0,0-.12,0-.11-.14-.09-.16-.06-.18,0-.08.05,0,.13Zm-7.05-7.36,0,0,0,0,.09,0h.14v-.06l-.07-.12-.07,0h-.06l0,0,0,0,0,.09Zm-6.52,4.38,0,0v0l-.05-.06h0l0,0v0Zm104.7,127.28v-.19l-.09-.26-.06-.82-.18-.45-.06-.56-.14-.73-.27-.68-.17-.19-.14-.08-.88-.23-.38,0-.46,0h-.43l-.32-.12-.22-.19-.19-.08-.45-.08-.23-.43-.65-.31-.33-.41-.49-.42-.42-.59-.17-.16-.21-.35-.43-.16-.41-.35-.23-.25-.67-.45-.32-.17-.19-.16-.32-.17-.39-.29L292,242l-.49-.08-.84.09-.67,0-.26.09-.33-.07-.33-.1-.16-.16-.31-.15-.26.1-.52-.07-.69-.32-.16-.16-.31-.15-.21-.15-.6-.21-.3-.05-.12.07-.06.18h-.57l-.29.14-.14,0-.18.11-.4.31-.06-.11.08-.11.18-.2,0-.08v-.13l-.15-.06h-.1l-.17.12-.19.41-.15.41-.41.37-.22.12V242l.23-.77L283,241l.06-.21.06-.09.09-.08,0-.16.29-.06v-.2l-.08-.21-.18,0-.13.07-.19.28-.07-.11-.11-.12.11,0,.1,0,.1-.14.08-.08.1-.12v-.22l-.08-.22-.11-.2-.15.08h-.12l.13-.12-.14,0-.07-.12-.18-.18-.21-.17-.09-.11-.23.07-.14.24-.1.13-.1,0,0-.32-.19-.44-.2-.07-.18,0-.27-.22-.39-.16-.13-.19-.2,0-.16-.05v-.14h-.21l-.2,0-.19-.08-.21-.07-.05-.12-.25-.18-.07-.13h-.17l-.1-.08h-.17l-.21,0-.14-.14-.14-.09-.26-.06-.09,0-.05.07.05.09,0,.09-.1-.05-.17-.17-.2.08h-.08l-.09,0-.08-.07-.07,0-.16,0-.17.15-.14-.15h-.08l-.1,0,0,.11-.16.06-.15.13-.11.12v.17l-.32.19.08.18-.16.18v.15l0,.09.21.11-.21.06-.05.19-.13-.11-.13-.17-.23,0-.64.66-.34.07-.13.07-.47.85-.13.32-.15.18-.12.06-.13,0,.09-.14.11-.13.13-.48.11-.18.17-.44.21-.47-.58.23-.29.1-.37-.15-.2-.09-.24,0-.13.07-.18,0-.31.17-.35-.37-.11-.07-.1-.13,0-.13v-.11l-.19-.33-.05-.24v-.13l0-.18-.1-.14,0-.1.18-.14v-.08l-.1-.14-.21.08-.08.09-.38.19-.21.16-.5.23-.25.07-.66.34-.52.07-.22-.18-.73-.07.23-.06.7-.26.42.1.09,0,.11-.09,0-.29.23-.11.22-.19,0-.33.05-.19.34-.41.13-.08.21-.22.25-.42.05-.19.39-.08.3-.31.12-.06h.2l.13-.09.4-.38.28-.42.26-.22.12-.16.49-.33,0-.08.24-.12.09-.08v-.22l.08-.31-.12-.5-.19-.16-.27-.14-.24,0-.31-.09-.15-.21-.07-.15,0-.23-.1-.06-.12,0,.09-.08V230l-.09-.35-.1-.21,0-.2v-.17l-.28-.9-.08-.43V227l-.23-.89-.2-.29-.26-.2h-.18l0,.15-.22.34V226l0-.09v-.18l-.06-.13-.14-.6-.07-.13h-.11l-.1.22,0,.18-.06.07-.11.09v-.07l.05-.09.05-.17-.08-.28-.09-.15-.31-.33-.23.18.09-.21v-.14l-.33-.19-.6-.57-.26-.33-.75-.31-.38-.07-.77-.51H265l-.16.19-.24.52-.15.1.18-.28.09-.22,0-.22,0-.19-.17-.11-.44-.14-1-.24-.65-.07-.48.05-.55-.11-.38,0-.18.13v.2l0,.2-.07-.2-.6-.24-.47-.14-1-.2-.19.1-.12.22-.08.18,0,.19-.11.23,0,0,0,0,.13-.66V221l-.07-.17-.22-.21-.4-.16-.12-.25-.36-.34-.37-.41-.17-.09-.21,0-.26-.12-.24,0-.2.23-.16.21-.07.36-.18.11.14-.22,0-.4.07-.3.24-.38.06-.6-.06-.15-.22-.33-.14-.13-.21-.29-.75-.76-.54-.42-.38-.25-.15-.05v.09h0l-.16-.08-.28-.35-.07,0-.3-.17-.35,0-.14,0-.17.12-.65-.15-.14,0-.37.15-.33,0-.24.15-.27-.23-.17-.09-.18-.12.77.05.17-.24.13-.24.06-.2,0-.05.09-.13v-.13l.07-.12.12-.11.28-.08.12-.2-.16-.2-.27-.24-.45-.12-.15-.08-.39-.48-.15-.11-.09.16-.29,0v.12l0,.11,0,.15,0-.1-.09-.06-.05-.06v-.11l-.13-.19-.22-.19-.12,0-.08,0h-.08v.06l-.06.15,0,.12h0l0,0-.06-.09-.09.13,0,.05h-.08l-.15-.29-.19-.55-.07-.06-.1,0,0,.11v.1l-.11.08-.19,0,.1-.08.09-.2,0-.2,0-.09-.15-.15h-.06l-.06-.05V211l-.14-.06.46,0,.65.08.32-.16h.4l.25,0,.1-.12-.76,0-.95-.18-.51.05-.18,0h-.33l-.64.09-.78-.1h-.69l-.19,0,.09.2.19-.06.61.09.26.13-.1.06-.12,0-.73-.08-1.44.64h-.19l-.17,0h-.22l-.38-.14-.35-.11-.33-.17L241,211l-.45-.48v-.1l0-.12-.28-.14-1.55-.08-.3.06-.94,0-.61.06-.55-.09-.18-.17-.11-.26,0-.25.12-.14-.1-.15,0-.22-.1-.24-.42-.34-.42-.29-.47-.09-.36-.15h-.61l-.09,0h-.13l-.15-.19-.09-.24-.07-.34,0-.33,0-.13-.11-.13-.17-.15-.25.07-.17.06-.11.19-.1.24.11.34v.1l0,.12.59-.05H233l.08.28-.08.14-.17.05-.33-.21-.1,0-.14.17-.16.11-.67.18-.58.07-1,.36-.43,0v.27l-.18.1,0,.33,0,.19,0,.14.13.43.23.27.1.28.23.4,0,.26-.09.4,0,.34-.27.24-.08.12-.13.06-.5.13h-.17l-.14-.07-.1-.13-.07-.25.06-.17-.08-.11-.14-.1-.19-.28,0-.18-.22-.38.37-.58.16-.12.21-.29.29-.24.18-.44v-.14l-.17-.24-.06-.34h.11l.08,0-.29-.28-.08-.12-.2-.48v-.33l.11-.07.09,0,.8-.12.16-.07.14-.11.07-.09.09-.11.32-.25,0-.25-.19-.37-.47-.24-.21,0h-.25l-.44.2,0,.08-.08.06h-.18l-.18.09-.08.26-.25.34-.37.15-.59.14-1.29.77H225l-.24,0-.23-.09-.31-.09-.18,0-.12.1-.07.33-.19.31-.13.28-.11.09-.12-.06-.1-.16.06-.15.17-.05h.12l.05,0h-.26l-.78-.31-.17.1-.45.35-.27.16-.08.11-.36.22-.11.17-.16.4-.27.25-.08.11.14,0,.18-.12,0,.07-.13.15,0,.28-.11.32-.11.21.08.16.05.25-.09.17-.25.06-.3-.06-.27.12-.24.19-.33.55-.91.54-.24.09-.18,0-.08.09.09.14.11.1.07.33v.64l-.1.14-.17,0-.06-.05-.05-.08,0-.12.09-.06,0-.05-.08-.08-.09-.05-.1-.22-.26-.34-.26-.21-.14-.31-.06,0-.63-.53-.25-.39-.5-.39-.84-.42-.4-.09-.49,0-.08-.06-.08-.12-.19-.07h-.21l-.29-.1-.46-.1-.16.07-.16.16-.29.18-.13,0-.13,0-.33.25-.89.2-.28.1-.36.25-.47.12-.3,0h-.31l-.39-.13-.32-.42-.17-.13-.08-.1-.1,0,0,.06.13.15.09.19-.09,0-.14,0h-.39l-.1-.1-.23-.12,0-.23.08-.05,0,0,0-.05-.15,0-.13,0-.06-.27,0-.09V210l-.26-.21-.12-.12-.09-.09-.34-.14-.06-.14-.11-.08-.3-.49-.19-.12-.41-.6-.19-.33-.22-.58V207l-.05-.14,0-.09-.14,0-.11-.17-.11-.26,0-.36,0-.11.07-.15.13-.15.07-.12.21-.14v-.18l-.07-.21h-.1l-.08,0-.07-.06,0-.07.1-.07v-.09l0-.17h.1l0,.06,0,0,.06-.43,0-.12,0-.1-.09-.16-.06-.2.08-.1.08,0,.12-.08.08-.21,0,.1,0,.18-.08.13,0,.12.06.13.06,0,.12,0v-.22l0-.17.11-.72-.05-.8.23-.86.21-.53.14-.11.16-.19.16-.23.06-.15-.17-.88-.08,0h-.07l-.07-.13.06-.09.1-.06.07,0v.18l0,0,.16-.24.06,0,.07-.07-.14-.12-.12-.09-.14-.35-.55-.31h-.07l.25.17.1.16h-.08l-.1-.1h-.18l-.09.08h-.1l-.07-.15-.13-.14-.11-.1-.18-.06-.07,0H204l0-.06v-.14l.06,0h.23l.41.27v-.07l-.94-.88-.53-.15.05.06.14.05,0,0-.11,0-.14,0-.16-.19-.66-.27-.16,0-.25.1h-.67l-.6-.27-.42-.08.07.05,0,.11-.29.08-.23,0-.38.18-.26-.06-.57,0-.32,0-.77-.22h-.19l-.24.05-.11-.09-.14-.18h-.17l-.37,0-.06,0-.23.15-.1,0-.16.13-.2-.08-.72-.52v0l0,.06.07.11-.15.17-.21-.11-.18-.13-.09,0-.11-.06,0-.13.08-.13.42-.45.28-.07.23-.29.13-.1.21-.29.16-.69,0-.49,0-.25.06-.17.15-.25-.12-.21.12-.29,0-.2.27-.57,0-.22-.08-.27-.24,0-.1,0-.11,0,.13-.23,0-.09.19-.26v-.16l.15-.1.12-.13h.09l0,.24-.13.43,0,.08.16.11.13.37h.06l.12-.18.1-.18.09-.44.2-.29.16-.52.23-.5v-.06l-.09,0-.16.14-.06,0v-.2l.06-.06.14-.06h.11l.06,0,.11-.11,0-.18h-.09l-.09,0h-.16l-.12,0-.09-.09v-.09l.24-.29.17-.09h.08l.06-.07,0-.08-.06-.22,0-.22.11-.27.46-.56.36-.23.3-.32.15-.2.12-.25.11-.3-.06-.11,0-.08,0-.4-.18-.1-.23-.3-.19-.08-.19.07h-.12l-.19,0,0,.05.18.07h.09l.09,0h0l0,.07-.05.08-.07,0-.07,0-.47-.1-.42-.17-.18,0-.47-.15-.26,0-.08,0v0l0,0-.13,0-.45,0-.25,0-.35.17-.28.05-2,.15-.15,0-.63.23-.37.21-.22.53-.05.09-.08.33,0,.38,0,.33,0,.43,0,.17,0,.07-.31.22-.1.14-.16.79-.48.39-.22.1-.17.12-.65.26,0,.06,0,.06h.05l.22-.12,0,.05-.08.14,0,.07h.1l.05.12v.21l-.36.14-.21.17H189l-.42-.08-.22-.15-.05-.07.13-.07v-.08l-.18-.18H188l-.23,0h-.57l-.48.08,0,.08-.09.1-.25.1-.51.05-.21-.06-.67,0-.45.12-.24.09-.67.19-.43,0H183l-.17,0-.26-.39-.21-.37-.44-.16-.32-.3-.79-.1-.27-.14h0l.13.11.15.08h-.1l-.39-.16-.2-.16v-.07l.24.12h.07l-.27-.21-.12-.35-.17-.12-.09-.21-.32-.33,0-.28-.09-.21-.13-.66-.47-.72-.79-1-.11-.23v-.18l-.28-.68-.25-.65v-.07l0-.11-.1-.07-.06-.06L177,182l-.17-.92.29.59.25.35.15.11v.09l-.09.12,0,.23,0,.18.06-.21.11-.13.07-.27-.08-.12-.25-.21-.19-.24-.32-.67v-.37l-.08-.51v-.1l0-.15.11-.32.14-.23,0-.12,0-.79.15-.92,0-.06,0-.06.05-.41.18-.89.43-1.33.21-.47.48-.74.15-.36.1-.6,0-.08h-.13l-.33-.76-.06-.2,0-.46-.05-.15,0-.33-.05-.14.09-.18.1-.14v-.26l-.42-.15-.13-.39.17.16.31.2h.09l.09,0,.14-.19.23-.54-.27-.39.06,0,.07,0,.25.06.17,0,.22-.21.1-.24-.23.06,0-.1v-.09l.12,0h.17l.11,0,.07-.07,0,.09.06.06.11-.07.07-.05,0-.22.06-.23.19.2.24,0,.16-.07.15-.11-.11,0-.1,0-.21-.51.07,0,.07,0,0,.07.06.09.15.13.16-.07v0l.2,0,.33.09h.21l-.26.14-.22.14.11,0,.35-.16.35-.09.27-.14.16-.06.58-.3.25-.13.27-.24.05-.2.26-.18.29-.23-.08-.21-.11-.16,0-.39.09,0,.1.08.08,0,.13-.17.19,0,0,.21-.13.23.09,0,.27-.06.16.06-.49.26,0,.07.4-.19,1-.34h.43l0-.08-.11-.21.25-.36.09,0,.05.06v.08l-.09.14-.09.06-.07,0,0,.12.07.08.13,0,.15,0,.64,0h.22l.22,0,.45.18.32.21.24.1.85.16.37,0,.06-.05-.11-.13,0-.07.13-.13.14-.08.26-.06.13.2.31,0,.2.33.09.12.38.13.12-.11h.06l0,.13,0,.12.16.25v.07l-.18,0h-.1l0,.07.58.26.51.18.16,0,.21-.25.18-.05.25,0,.16.1.09.28.07.07.16-.06.08-.1,0-.12,0-.13.05-.08V166L194,166l-.08,0,0-.06v-.07l.57.22.12.11,0,.08v.11l.15.05h.09l.11,0,.08.09.11.05.15.13.1.21.07.09-.06.19.09,0,.22-.17.07.07.08.09,0-.07.06-.11.19-.08,0-.14-.1,0-.1-.07-.12-.21h-.13l-.54-.24L195,166l-.19-.13-.08-.19.07-.06,0-.06.05,0,.08,0,.13,0-.06-.07.13-.1h.16l.22-.06,0-.05,0-.18-.08-.13,0-.08,0-.08-.19,0-.15.11-.07.2H195l-.23-.07-.13-.19.08-.08.14-.06.1-.08v-.06l-.14-.08-.09.08-.08,0-.17,0-.22.14-.38,0-.22-.09-.25-.19.19-.3.24-.21.2,0,.17.05.17.2.74.29.31-.1.28-.26h.12l.08,0,.36-.06.31-.08h.07l.11,0,.25.14h.72l.2,0h.24l0-.1.1-.34.12-.25,0,0,.12.16,0,.15,0,.25.05.09.08,0,.08.14,0,.13-.24,0h-.17l-.05.05h.8l.25-.22.14-.05v.07l-.13.11.05,0,.42-.07.07-.12.14-.12.05-.19h.11l.09.09.09-.11.07,0,.06.16-.06.15-.29.06-.08,0-.09.08.49,0,.6,0,.16,0,.18-.08.16-.05.15,0h.24l.19.08.05.06,0,.08-.23-.07-.45,0,.57.2.64.31.12.11.08,0,0-.08v-.1l.14-.06h.15l-.08.11-.06.1.1.1,0,.07-.11,0,.33.36.3.25.08.18,0,.09,0,0-.09-.11-.05-.13,0,.17.07.17.12,0,.28,0h.32l.13-.05.18-.06.18,0,.54-.24.2,0,.15,0,.05,0,0-.13,0-.1.1-.07.56,0,.7.45.75,1.13,1,1,.22.38v.17l0,.1-.07.63-.23.54-.26.85.06.16.06.1.06.06.07,0,.11,0,.07-.05,0-.07,0-.21-.08-.06-.07-.16.08,0,.12.06.1.19.05,0,.11-.07.08.09v.06l-.07.14-.2.19-.27.33H209l-.06,0,.11.12.06.11.32.78.16.29.12.16.09.05.13,0,0-.07,0-.14.19-.05.17,0-.13.15-.05.41.05.34.07,0,.08,0,.11-.17.09-.07.11,0-.15.18-.15.23.05,0,.13.08.07.65.17.37.29.23.41.16,0,.22.22.35.2.49.11.07.16.07.07.11-.06.09-.26-.23h-.08l-.05.09,0,.08.11.21.2,0,.32-.07.26.06.38-.14.15,0,.26-.2.1-.2.08-.42.2-.26.14-.29h0v.07l0,0,.09-.66.22-.95,0-.52,0-.42-.06-.2-.19-.29-.71-2.23-.06-.21-.11-.25,0-.41-.05-.17,0-.27h.06l.08.06,0,.11,0,.12.13.08,0,.05-.09.13,0,.12.06.27.06-.06,0-.17.06-.15h.05l-.07.44v.32l.19.56.09.08-.13-.38-.07-.26v-.2l0-.21,0-.13.11-.13-.07-.16-.61-1.16-.36-.94-.24-.78-.12-.79-.08-.3-.08-.85-.08-.21,0-.16v-.16l.05-.09.07-.21.06-.18v-.09l0-.16.06,0,.09,0,.18-.2-.08-.12-.1-.05v0l.18,0,.09-.14.09-.08.1-.13,0,0-.06,0-.07,0,0-.07.15-.08,0-.07,0-.06,0-.08.08-.09H213l.07-.07v-.06L213,162l0-.08.06,0h.08l.26-.11.13-.18,0-.09.08-.1h.12l.07,0,.15-.15v-.07l-.07-.05-.06-.09,0-.15v-.19l.18.27.05,0,0-.07.07,0,0,.16,0,.08.06,0,.14-.07.06-.06,0-.16-.11-.13-.21-.1.14,0,.23.05.2.06.2-.07.08-.08.11,0,.12,0,.21-.06.18-.09.11-.14-.07-.19.26.07L216,160l.27-.17.07-.21.19,0,.17,0,.31-.19.11-.11-.09-.3.13-.2v.1l0,.11.08.17.14-.37.5-.54.18-.14.57-.3.36-.08.82.08.1-.18.07-.4,0,.22,0,.19v.12l.1-.25.07-.22.26-.3.12-.1.1-.05.29-.2.3-.15,0-.07,0-.09,0-.32,0,.09,0,.18.13.05.09,0,.26-.19.17,0h.66l.06-.1.19,0H223l.17-.14.18-.21-.18-.13-.61.06-.31-.09-.15-.14-.18-.32.41.39.17,0,.32-.17,0-.07,0-.11.1-.14.12-.12-.08-.09-.08-.06-.76-.36-.13-.17.31.17.3.1.22,0,.06-.18h.07l.09.06,0,.18.05.09h.09l.12,0,.23.09.21.05.15-.05.31-.27.42-.3.08-.27v-.18l0-.14-.07-.13-.09,0-.27.13-.08.4-.09.07h-.08l0-.22.05-.21v-.22l-.28-.07-.13.05h-.2l-.3,0h-.22l-.24,0,0-.17,0-.24,0-.22,0,.19.06.18.24.16.17,0,.12-.09.1-.14h.12l.19.06-.07-.18.1.06.14.07,0-.17v-.15l.18.12.22.08.13.09.12.16-.07-.37-.1-.29-.1-.11,0-.11.08-.22,0-.07,0-.09,0-.05.05.07,0,.16.12.71.14.4.26.57.09.13,0-.14-.35-.86-.2-1-.08-.27,0-.23-.06-.12-.29-.07L224,151l-.33.13-.18,0,0-.15-.26-.22-.05-.31-.19,0-.33-.12-.15-.12-.4-.09-.06,0,0,0,.5.07.61.28h.15l.05.2.18.18.09.1.12.11.13,0,.12-.09,0-.14,0-.1-.14-.16-.2-.09-.22-.2-.24-.32,0-.07v-.07l.42.5.17.1.13-.05,0-.08,0-.13.28.09,0-.17,0-.15-.2-.1.14-.09-.36-.17-.13-.1-.13-.22-.19-.14-.25-.33-.14-.24-.36-.34h.09l.25.19.21.34.07.06.57.66.12,0h.19l.09-.11,0-.17.07-.12v-.11l-.18-.18-.23-.13-.15-.21-.19-.11-.53-.19-.26-.41-.13,0-.26.05-.08,0-.08-.12.09-.31.06-.16.21-.17.16-.09.11-.13,0-.27v.27l-.09.17-.18.12-.2.25-.05.1v.21l.16,0,.17-.1h.16l0,.12.07.12.11.14.06-.1v-.13l.18.32.35.11.28.15.1.13.12.1,0-.13L224,148l-.08-.17-.44-.49,0-.2V147l0,.08,0,.1.14.26.12.09.14.11H224l0-.13-.08-.14-.08-.14,0-.51,0-.1,0-.13v-.14l.07-.11-.05-.14-.07-.15h0l.14.1.12-.09v-.13l-.13-.09-.15-.24v0l.3.13,0-.06v-.12l.11-.05,0-.09v-.06l0,0,.1.2,0-.07,0-.2,0,.05v.09l.16,0,.1-.07,0-.08v-.14l.05-.08H225l.1,0,0,.19h.21l-.09.1h-.09l-.11.11.13,0,.13.07H225l-.21,0-.17.12-.19.28V146l.19-.13,0,.1-.12.21-.12,0h-.14l0,.13v.11l.19-.07.1.07,0,.16-.17.06h-.11l-.1.25.07,0,.07-.12.13,0,.07.13.23.22h.08l0,.06-.23,0-.17-.06-.14,0-.09.24,0,.15.1.19.19.12.13.1.07,0,0-.07,0,0,0,.1.07,0,.11-.1h.06l0,.1v.14l-.05.11-.1.1.08.06.07,0,.11.14-.08.12-.05.14.24,0,.15.06-.15.3-.16.14-.23.31-.22.51-.07.32,0,.12.09.15.2-.33.11-.29.1-.11.15-.09.14,0,.1,0v-.18l.58-1,.14-.14.16-.26.14,0,0-.1,0-.2,0-.06.06,0,0,0v.11l.05,0,0-.1,0-.18-.06-.19-.07-.06h-.16l.13-.09.11-.21v-.13l-.2-.11-.23-.38-.14-.31v-.46l-.2-.31-.1-.19,0-.18,0-.09v-.12l.19-.17.1-.15.14-.11.17-.07.31-.05.22-.2-.07.12-.11.14-.43.07-.14.08-.12.18-.13.26v.27l.32.39.25.15.18.2h.18l.15.06.15.12-.06.23-.09.23.06,0,.28-.13.34-.47.1-.09v-.11l0,0,.14-.06h.08l.11-.1.05-.16,0-.07,0-.15.16,0,.17-.17.18-.26.17-.5.05-.09.07,0-.08.39v.1l.08-.32.08-.36.06-.23.09-.19,0-.19,0-.17,0-.13-.11,0-.39-.09,0-.18.1-.19.09-.09.07-.05.08,0,.11-.07.09-.09.23-.37.06-.19v-.34l-.09-.29.09.08.08.13v.28l-.1.34-.1.18-.1.2.09-.05.08-.09.13,0,.15-.1.25-.2.19-.12.86-.31.33-.08.22-.15.16.06.76,0,.24-.08.21.07.41,0,.3,0,.33.05.52-.07.17-.17.07-.44.15-.16,0-.24.06,0,.06.07,0,.1.08.11.2-.14h.06l-.13.25v.3l0,.07.2-.1h.22l.59-.37.07,0v.25l0,.12,0,.07.37-.09.17-.1.73-.07h.15l.08,0,0-.08v-.24l0-.38-.25-.32-.1-.05-.09,0-.08,0v.05l.07.1.06-.07.12.09,0,.13.15.28v.11l-.29.12-.34.08-.27-.1-.17-.12,0-.34-.21-.14,0-.08.06,0-.21-.49-.16-.1-.37-.12-.09-.08.26-.23.13-.15.09-.13.17,0,.2-.1h.1l0-.07,0-.05-.07,0-.09,0-.07,0-.09-.13,0-.14,0-.13.13-.28.12-.31.09-.09.11-.06.29-.51.36-.31.35-.33-.06-.09-.06,0,.2-.22.26-.15.2,0,0,.09v.08l.1,0,.12-.05.06.08.06,0,0-.08v-.15l0-.11,0,0v.1l.07,0,.08-.26.11-.09,0,.12v.17h.07l.09-.23,0,.05,0,.16h.09l.1-.12.2-.1.24.06.19-.11.16-.14,0-.19.26-.43v-.21l.25-.11.11-.16.08,0v.16l-.08.13,0,0,.09,0,0,0-.19.13,0,.11H241l.23.09.07.11.08,0,0-.11v-.2l.1-.16.07-.15.06.11.09.06.12-.06.09-.08h.16l.1,0,.07,0,0,.13.07.15.09,0,.07,0,.05-.11.11,0,.17-.3.1,0,.13.06.15,0,.12,0,.1-.17h.2l.21-.09.35.08.45-.35v-.06l0-.05-.19-.06v-.15l.07-.1,0-.26-.05-.13,0-.08.08.07.22,0,.12,0v.13l.07.08h.34l.42-.13.14.14.19-.08.22-.13.23-.08.08-.07-.14-.21.2-.09.06-.06.08,0-.09.14-.1.1.3.26h.15l.72-.23.58-.31.48-.14.34-.18.25,0,.42-.41-.08-.27,0-.08.18.22.1.16.17,0h.18l-.08.13-.1.07-.37.3-.58.34-.2.25.08.05.08,0,.18.08.14-.14.18-.05.54.09h.52l.37.11h.61l.5.11-.2.1-.6,0-.73.18-.2.16.07.32-.18-.24-.25-.08v-.13l0-.13,0-.07,0-.1-.24-.1.08.09-.1.12-.64.15-.33.12-1.63.79-.08.06-.08.09.3-.05.18-.07,0,.07-.21.11-.14.07h-.2l-.3.06-.23.12-.15.13-.08.08-.05.08.45-.31.15,0-.52.48-.23.54v.16l.08.68.17.2.08-.09.06-.09.18.07.1.16.17.45.15.08.2,0,.17.11h.06l.06-.09h.09l.08,0,0-.29.21-.14h.13l.18,0,.49-.32.09-.15.29-.21.26-.28.24-.09L250,135l.09,0,.13-.1-.06-.21-.05-.08.13-.25.25-.08.12.26.13-.13v-.11l.1-.14.15.12.06.15.14.1.11.07.32,0,.09-.08,0-.07v-.17l-.08-.19.12.08.17,0h.16l.16,0,.32-.15.14,0h.12l.56-.13.54-.11.53-.19.51-.11.5-.19.15,0,.16-.08.17,0h.15l.23-.06.22-.11.26,0,.12.07.08,0,.08-.1-.07-.1-.08-.05-.73-.11.19-.1.2-.06,0-.09-.14-.26-.14-.2-.13-.11-.35.09-.24-.06-.2-.16,0-.23,0-.13-.06-.05-.57.31-.44.14-.06,0-.07.05-.21-.12h-.34l.07-.1.05-.13-.43-.13-.41,0-.23,0h-.16l0-.07-.08-.09-.3-.19H252l-.29,0-.33-.29-.37-.19.49-.18-.08-.11-.08-.06-.47-.1-.14-.08L250,130v-.18l-.18-.13,0-.18-.08-.23,0-.42-.19-.08-.11-.34,0-.17.09-.17.1-.26-.23-.09-.2,0-.32.08-.14-.07-.12-.09.51-.3.39-.33.17-.51.2-.26.14-.12-.34-.22h-.36l.1-.14-.47.06-.25.09-.31.19-.26,0-.11-.08-.16-.44-.18-.15-.73-.26-.3-.22-.14,0-.43.11-.15,0,.55-.21.25.07.16,0,.35.07.15-.11.19-.09.34.23.56.25.23.07h.21l.48-.18.17-.13.3-.07.12-.08.14-.21.16-.12.6-.11.23-.32,0-.37-.32-.33-.2-.11.29,0,.33.11v-.18l-.08-.14-.6-.53-.54-.27-1.15-.28-.26,0-.75,0-.61,0-.89.17-1.11.34-.94.22-.71.27-.75.22-.41.2-.27.2-.42.18-.14,0-.38.21-.71.55-.35.18-.26.36-.5.48-.48.36-.12.24-.33.2-.39.42-.29.2-1,.39-.33.06-.24.15-.38.06-.49.14h-.48l-.45.18-.17.09-.12.17-.27.08-.28.11-.53.4-.54.16-.37.21-.23.36-.26.25-.22.31,0,.11-.1.32-.09.08-.43.05-.62.34-.47.1-.64.32-.3.08.76-.46.56-.26.27,0,0-.23-.5-.19-.13-.11.57.12.3-.14.22-.21.19-.13.49,0,.44-.39.24-.3.08-.1.26-.12.11-.22.29-.11.35,0,.91-.44.13-.18.37-.1.33-.18.24.05.28,0,.76-.2.35-.3.31-.19.58-.31L238,126l.32-.18.68-.57.21-.23.16-.3.16-.38-.17-.2-.21-.11-.36-.13-.71-.35-.35,0-.35-.06-.16-.16-.19-.1,1.3.33.54.28.23,0,.3.19.18,0h.18l.27-.12.39-.33.34-.47.67-.62.57-.25.1-.18.18-.11.28-.1.25,0,.16-.08-.12-.13.48-.12,1.07-.12h.16l.21,0,.25-.25.09-.4.69-1,.43-.16.26-.22h.15l.12-.13H247l.09,0,.26,0,.24.07.37-.22.39.13,1-.09.18.08.64.11.75,0,.7.17.32-.07h.34l.25,0,.29.15.72.1.23-.12.38,0h.49l.36.08.37.05.4.13.5.06.17.11.21.26.92-.19.23,0h.46l.32-.1.41.11.35,0h.75l.41-.13.17-.26.44-.17.52-.46.47-.24.25-.25.92-.73.06-.17.05,0,.18-.1h.14l.36,0h.38l.14,0,.37-.18.17-.06.65-.07h.34l.42.13h.16l.09,0,.93-.54.58-.28.57-.32.72-.52.05-.14,0-.14-.19-.12-.09-.09-.35-.2v-.06l.24.08.24,0,.14-.07,0-.1-.07-.13-.18-.11-.44-.11-.36,0-.2,0,.07-.07h.26l.67-.08.1,0,0-.09-.1-.17,0-.25.07-.14-.11-.35.21-.36,0-.22,0-.09-.07-.12v-.08l0-.08-.1-.14-.1-.24-.27-.35-.33-.06-.17-.08-.17-.28,0-.13h-.48l-.3,0-.37.16-.47.37-.24.15-.09-.27-.07-.06-.22-.07v0l.08,0,.53-.2.19-.1,0-.09,0-.16-.08-.23-.4-.7-.41-.11-1.19-.2-.25,0-.1.08v.05l.08.12.29,0,.23,0,.28.09,0,0-.31,0-.5.06-.69.16-.58.24-.47.34-.42.25-.38.16-.26.09-.44.06-.11.06-.24.22-.35.22-.39.08v0l0,0,.16-.07,0-.07-.11-.06,0-.08.29-.14.13-.1-.12-.13-.41-.25-.05-.13.27.14.24.06.06,0,0-.07.05-.18.06-.09.1-.07.3-.11.11-.07h.15l.2,0,.32,0,.64-.22.34-.07.06,0,.08-.08.12-.06.17,0,.25,0,.18,0,.17-.14.28-.33.16-.06.3-.07.13-.09,0-.08.56,0,.39,0,.29-.13.18-.21.18-.14v0l-.16-.16-.29,0-.2-.08-.2-.14-.2-.17,0-.3-.19,0-.29,0-.07.15-.37.08-.21,0-.57-.21-.19-.34-.13-.3-.06-.28-.18-.11-.35-.08-.15.13-.16.19-.08.07-.7.43-.2.19.06-.15.17-.2.57-.49.11-.13-.16-.07-.19,0-.16-.08v-.2l-.12-.13-.22,0-.15.1-.59,0-.28.1-.47.32H260l.22-.18.16-.19,0-.12.18-.34.3-.2.08-.1-.23-.24-.08-.17-.1-.11.1-.17.07-.21-.15,0-.13-.06-.2.21,0-.26-.08,0-.2-.2v-.16l-.18-.06-.14.12-.22.13-.2,0-.06-.06,0-.13-.1-.08-.34-.08-.19-.08v-.07l.31-.05,0-.09,0-.41-.11,0-.29,0-.32-.09,0-.17.44-.08.16-.08-.18-.1-.37,0-.5-.12-.14-.1.24-.13H258l0,0-.15-.15-.08,0-.28,0-.25-.25-.56-.23-.19-.22.08,0,.18,0,.16,0-.19.12,0,.06.61.25,1.09.21.34,0,0-.27,0-.23.11-.2.05-.26-.58-.55-.18-.05h-.17l-.12,0-.17-.1-.06-.07.08-.07.13-.21.08-.06v0l-.14-.13-.34-.12-.22,0-.22,0-.2,0-.11-.06-.08-.08.24,0H257l.19-.12h.18l.18-.06.25-.13.09-.16-.11-.31.06-.1.12-.05,0-.11-.11-.16-.32-.18-.18,0-.21-.07-.33-.57-.21,0-.48,0-.35.08-.52.23-.08,0,.24-.19.2-.12.54-.17.31-.34.2-.45,0-.07h-.27l-.21,0-.51.15h-.12l0-.09,0-.06-.14,0-.18.07-.39.3h-.14l.22-.19.12-.15.37-.17.24-.06.51-.35-.09-.29-.15-.28-.08-.08-.28,0-.2,0,.13-.12,0,0-.12-.24-.05-.07v0l.17,0-.05,0-.15,0h-.16l-.35.07-.47,0-.31,0-.06-.08.13,0,.32,0,.23,0,.3-.08.21-.23-.23-.44-.2,0-.25.17h-.05l.05-.12,0-.1-.34-.12,0-.09.25-.1.23-.18-.18-.2-.16-.23-.07-.17v-.17L254,92.2l-.2.08-.17.15.14-.32v-.39l-.19-.29-.25,0-.32,0-.37.11-.07,0,.12-.07.39-.15.25-.22,0-.17-.12-.13-.42-.25h-.23l-.06.07-.1.06-.09.09-.34.57-.08.2-.16.25,0,.13,0,.11.09.1.17.11-.06.05-.31-.2-.16,0h-.14l-.11,0-.06.05-.11.26,0,.12,0,.1.12.25.12.1.17.06.18.11.2.17.06.08-.08,0-.39-.29-.15-.06H251l0,.07.14.37v0l-.2-.12-.08.09-.08.22-.07.09-.11-.06h-.06l0,0,.05.19,0,.08.07.06.22.07.23.12,0,.06h-.26l0,.07-.3-.09-.06,0v.07l0,.1-.18,0h-.1l-.18.17v.06l.16.12,0,0h-.23l-.17,0,0,.1,0,.17.13.26,0,.12v.12l0,.11-.17.3h0v-.41l0-.12-.08-.17-.15-.21-.13-.15L249.1,95H249l-.25.16-.08.1-.11.18-.12.25-.25.15-.38.06-.25.07-.31.17-.47.17-.41.23-.06.08-.06.13,0,.19-.12.24,0,0,0-.29v-.1l0-.31L246,96l0-.06-.11.11-.06.16-.07.11-.35.33-.11,0,.34-.36.06-.08v-.1l-.17-.41-.07-.08-.19,0-.15.21-.29.65-.15.25-.14.11-.18.1-.6.06-.55.18v-.07l.2-.11.26-.08.48-.07.27-.1.26-.24.1-.18.2-.5,0-.26v-.13l0-.09-.14-.13-.08-.45-.06-.12-.12-.14-.17-.14-.15-.09-.12-.05h-.51l-.25,0h-.23l-.2,0-.24.09-.58.32-.3.1-.18,0-.31-.17-.25-.07v-.09l.39,0,.24-.1.06-.07,0-.07V94l0,0,.06,0L242,94l.14.34,0,0,.09,0,.17-.11.07-.14.08-.24.06-.14.06-.06,0,0-.08-.21,0-.08.23-.28,0-.08-.11-.11-.58-.06-.05-.16.06-.29.09-.22.13-.17.06-.16v-.14l-.06-.31-.08-.16-.11-.15-.15-.1L241,90.74l-.29,0-.31-.07-.07-.13.3,0,1.13.08h.35l.27-.12.1-.13,0-.07v-.24l-.15-.21,0-.15,0-.17v-.16l0-.15.08-.24.19-.37.15-.15.19-.1.12-.1.07-.1,0-.11,0-.12-.1-.29-.06-.1-.1-.06-.15,0-.06.1-.07.2-.07.1h-.2l-.23.13h-.18l-.2-.09-.1-.14,0-.18,0-.13-.06-.07-.18-.1h-.22l-.33,0-.37-.07-.63-.27-.29-.09-.35,0-.16-.05-.25-.19-.37-.41,0-.11.19-.07v0l-.3,0-.12-.07,0-.08.19-.18.21-.06.09-.06,0-.06-.06-.09-.46-.26-.12,0-.09.12-.13.07-.41,0-.06-.06.35-.09.09-.07v0l-.07-.16-.09-.08-.1-.16-.09-.11-.26-.2-.29-.13-.15,0-.19.12-.15.07h-.09l.25-.35.09-.22v-.08l0-.08,0-.12,0,0-.1,0h-.3l-.22-.2-.11-.06-.29-.28-.2-.16-.26-.16-.39-.31-.15-.07h-.13l-.24.09-.37.18-.34.13-.47.12-.47.16-.1.08.15.2,0,0-.54-.41-.23-.13-.19,0-.46-.17h-.14l-.17.06-.65.29,0,0,.3-.16-.28-.23-1.62-.61-.53-.23-.67-.13-.34-.1-.49.09-.64.29-.37.2-.09.11-.06.11,0,.23v.33l.08.59.09.3.14.23.11.11.15.12.22.24.36.25-.29.22L226,85l0,.13v.59l-.08.15-.16.22-.23.23-.5.44-.06.09.12,0h.26l.26.12.56-.08,0,0L226,87l-.17.28-.06,0-.07.11.14.21.16,0,.25,0,0,.07-.2.1-.19.23,0,.2.35.7,0,0-.24.08,0,0,.08.09.48.09,0,.07-.2.28v.13l.08.16,0,.11-.32.23,0,.09.14.24.12.1-.1,0-.38-.37h-.28l-.05,0,0,.24,0,.06-.25.24,0,.1.13.11,0,.09-.19.22-.31.15-.18.13-.16.16-.24.31-.42.37-.06.08-.06.13-.06.18-.05.26,0,.1.07.15.23.08.66.6.25.17.4.21.27.17.12.14.65.58.48.82.15.31,0,.18.22.67.08.32,0,.28,0,.85,0,.54-.06.61-.07.41-.16.45-.11.26-.26.3-.39.35-.31.29-.21.26-.35.28-.83.55-.17.14-.25.14-.51.2-.38.21-.37.14-.79.23-.14.06-1.61.41-.1.06v.05l.09,0,.08.06.06.08.14.32.07.29.08.17.14.22.11.14.16.1.14.06,0,0-.09.11-.14,0,.35.16.11.09,0,.06-.17.13V107l.08.16.17.12v0l-.11,0-.08,0-.11.21-.07.06,0,.18.09.27.08.43,0,.58.06.46.08.19.22.24,0,.12-.08.11,0,.15,0,.29,0,.08.24.28.08.12,0,.26v.25l0,0,.13.1h-.1l-.1.1-.13.2-.25.27-.27.17-.11.13-.05.19-.09.12-.11.06v.11l.38.49.07.11v.08l-.22.17-.07.12-.1.3,0,.19-.06-.16-.07-.35,0-.11-.06-.11-.1-.12-.12-.07-.15,0-.08,0-.05-.2-.08,0-.35.13-.07.09-.05.11-.08.11-.13.1-.11.17-.09.25,0,.18v.1l0,.09.15.2.35.38.13.24.05.2-.2-.32-.37-.39-.35-.48-.25-.19-.28-.15-.33-.12-.21,0-.23,0-.44.29-.26.14h-.12l.4-.35L218,114l.12-.12v-.12l-.08-.26-.16-.4-.13-.26-.09-.12-.51-.52-.31-.22-.32-.15-.22-.16-.13-.18-.17-.11-.2,0-.35,0,0,0,.12-.07.25-.09.1-.08.1-.11,0-.18-.27-.39-.22-.26-.3-.47-.17-.2-.18-.14-.11-.12-.05-.19V109l.09-.26.09-.13.14-.14.05-.28,0-.42v-.28l.12-.35,0-.22,0-.19-.12-.46-.05-.09-.24-.32,0-.19,0-.31.13-.35.39-.92v-.12l-.14-.42-.16-.21-.36-.26-.23-.07h-.23l-.14,0-.15-.19-.08,0h-.48l-.72-.19-.2,0-.5-.18h-.12l-.11,0h-.18l-.23,0h-.29l-.34,0-.39,0-.44-.1-.29,0-.14,0-.19.11-.34.39v0l.35-.55V102l-.13-.11-.24-.15-.14-.14-.15-.2-.23-.2-.31-.18-.31-.14-.32-.09-.48-.19-1.09-.5L205,99.9l-.39-.17-.16-.11-.59-.88-.38-.4-.39-.23-.35-.24-.45-.38-.29-.28-.24-.13-.54-.14-.26-.11-.92-.27-.57-.25-.54-.33-.49-.26-.63-.15-.44,0L195.4,96l-.5.13-.23.09,0,0,.17-.12V96h-.32l-.11,0-.31.17-.16.06-.15,0v0l.14-.06.14-.1.13-.13.16-.2.16-.27.1-.2,0-.13,0-.19-.06-.26-.37-1-.06-.2-.16-.71-.14-.45-.3-.82,0-.23,0-.4,0-.09-.2-.11-.2,0-.23,0-.6-.13h-.58l-.14.06-.2.32-.19.73-.15.23v-.12l.18-1v-.17l-.26-.11-.23-.33-.07-.07-.1,0h-.1l-.08-.11,0-.22-.06-.14-.14-.1-.22-.08.18,0,.12-.18.09-.35.08-.64.09-1.45.13-.47.2-.58.07-.35,0-.12-.07-.08-.11-.07.18-.11h.23l.14-.18.2-.38.28-.42.36-.45.21-.34,0-.23V82.9l0-.12,0,0,.25.05.12-.11v-.06l-.09-.26.07-.11.45-.35.63-.28.15-.09.09-.08v0l-.23-.12-.12-.12-.06-.09-.1-.23.43.08h.08l.13-.08,0-.07-.14-.11,0,0,.38,0,.2-.07.13-.09,0-.06-.08-.07v-.06l.35-.19V80l-.14-.14-.39-.24-.05-.05h.11l.58.24.26.17.17.18.14.11.1,0,0-.11-.16-.25-.14-.17-.13-.08v-.1l.14-.11.24-.15.08-.1,0-.14.12,0,.2,0h.16l.12-.07.13,0,.25.15.15,0,.14-.1,0,0,0-.17-.39-.1-.19-.07-.12-.1-.08-.08L196,78.4v-.09l.06-.06h.34l.09,0,.1-.06h.16l.33.12.86.17.21,0,.52-.29.22,0h.29l.2-.07.11-.14.07-.15,0-.15V77l-.06-.16-.44-.34-.27-.12-.46-.14-.32-.21-.38-.35-.32-.14-.24,0-.26.1-.46.21H196v0l.55-.24.11-.11-.08,0-.29-.12-.38-.11-1.29-.56-.17-.1-.26-.09,0,0,0,.14.1.1.12.07v0l-.3,0-.29-.11-.2-.26,0-.11.12-.09,0-.12-.19-.36.53.43.93.37.84.42.43.17.29.06h.21l.13-.08.11,0,.11,0,0,0-.08,0v0l.05.06.52.09.28.07.86.42.33.13.28,0,.22,0,.16-.08.09-.12h.13l.17.11.16,0,.26,0,.2-.15.32-.35v-.08l-.08-.16-.2-.35H201l.45.16.14,0V74.9l-.17-.35-.06-.07-.19-.11.09,0,.49-.1,0,.05,0,.23.06.08.23.17.13.06h.11l.08,0,.12,0,.38.21.17.07.05,0-.18-.42,0,0,.28.28.19.1.3.08.34,0,.59-.22.59-.26.24-.18.09-.19.18-.31,1.37-1.31.22-.32.36-.43.07-.15,0-.3-.16-.1-.58-.17-1.11-.15-.56,0-1.59-.36-.3-.18-.23-.19-.69-.74-.36-.33-.27-.17-.25-.1-.23,0-.89-.32-.79-.18-.18,0,0,0,.05.2-.48-.26-.28-.21,0,0h.22l.61,0,.38.07.35.11.29,0,.41,0,.4.18.24,0,.23.06h.09l-.18-.22H202l.29,0,.32.12.34.19.66.47.28.14.28.06.13.06.14.23.17.1L205,70l.53.45.3.18.61.09.46,0,.34,0,.21-.08.25-.17.29-.28.56-.44L210,68.7l.07-.08.13-.24v-.12l-.06-.11-.23-.15-.38-.18-.57-.23-.2-.15-.11-.2,0,0,.08,0,0,0-.09-.19.07,0h.16l1.17.13h.57l.4-.09.32.13.26.35.22.26.19.17.37.21.57.27.3.12,0,0,.15-.24.16-.1h.06l.57.26.21.08h.08l.15-.07,0-.18-.25-.47-.24-.39-.11-.22,0-.21-.07-.12-.19-.12-.52-.54,0-.07-.07-.1-.2-.12-.24-.05-.09.05-.18.14-.09,0-.18-.08v-.06l.17-.16.42-.22.32.07.3.18,0,0,.12.12.31.25.07.09-.19,0v0l.08.11.23.17.11,0h.22l.1.05.15.18.33.52.17.19,0,.08.06.26.14.08h.24l.23-.06.22-.12.55-.37.64-.07.19-.1.4-.28.24-.08.14-.08.19-.19.25-.32.18-.17.11,0,.31,0,.2,0,.36-.2,0-.08.14-.32.23-.58.09-.35,0-.13L220,64l-.15-.16-.43-.34-.31-.31-.2-.22-.16-.25-.07-.22v-.1l0-.12.19-.42v-.07h0l-.1,0-.16.13h-.08l-.07,0-.31-.52-.06,0v0l.08-.11,0-.07-.1-.1-.17-.24,0-.08.1,0,.21,0,.4-.07.21,0,.2.14.19,0,.18-.09.41-.1.24-.1.54-.32.05-.12,0-.18v-.14l-.13-.18-.1-.08-.19-.07-.43-.09-.56-.06,0-.09.41-.14L220,59l.62-.38,0-.06-.11-.18-.06-.05-.65-.27-.45-.1-.42.07-.16,0,0-.06.09-.11,0-.13-.15-.29-.67-.23-.22-.15L218,57l.28,0,.24-.23,0-.15-.49-.21-.27,0h-.51l-1.16-.16h-.23l-.51-.21-.65-.38-.16-.05-.67-.07-.4,0-.39.08-.33,0-.25-.14-.23-.06h-.19l-.06,0,.08.07.09.15v.11l-.15.35,0,.12.1.14,0,.13-.06.09v.12l0,.13v.1l0,0,0,.21v.13l.06.32.21.23.07,0h.26l.45.3.05.07-.08.19v.11l0,.09-.2,0-.16.13-.06.13V59l.48.23v.06l-.85.05-.13,0-.17-.11h-.19l-.11.14-.17.09-.11.09-.1.14,0,.18,0,.23,0,.25-.15.41-.41.88-.07.09-.86.71-.06.08-.19.3-.07.21-.11.47-.06.11-.11.1-.16.09-.14,0h-.13l-.24.14-.36.28-.4.26-.12,0-.08,0-.06,0-.05-.09-.08-.39-.05-.11-.95-1-.38-.53-.19-.66,0-.14.06-.63-.06-.34,0-.09.25-.17.05,0,.11.26.07.06.25,0h.2l.09-.06.06-.11,0-.16,0-.21,0-.16-.07-.11-.07-.32-.07-.52-.13-.38-.35-.4-.18-.15-.64-.43-.34-.31-.27-.33-.2-.18-.29,0-.17,0-.16.09-.46.49-.25.23-.14.29-.09.42-.09.27-.24.38,0,.11,0,.26,0,.11-.25.31-.24.19-.1.11,0,.13-.07,0-.09-.05-.07-.09,0-.14-.09-.07-.11-.18-.21-.15-.08-.15.14-.48.05-.28,0-.35v-.12l.16-.15V58l-.21-.26-.28-.59-1-.73,0-.06h.15l.19,0,.07,0-.06.07.09.07.23,0,.15-.07.07-.2.11-.16.14-.12.17,0,.19,0,.21,0-.07-.07-.21-.12-.23-.06h-.24l-.34,0-.7-.15-.31,0,0-.05.26-.13.29-.12,0-.06-.11,0-.37-.05-.32.11-.42.22-.39,0-.6-.31-.09-.12.06-.07-.16-.08-.37-.07-.32.07H197l-.11,0-.06-.06.29-.14,1-.58.47-.3.21-.19-.16-.13-.14-.06-.66,0-.13-.09.13-.16.2-.17.1-.13h.07l.15.17.18.12.25.12.28.06.51,0,.09,0,0-.06-.17-.22-.11-.25-.08-.11-.12-.07-.12,0-.11.13-.12,0-.13-.08-.05-.06.09-.18,0-.08-.31-.41-.18-.44-.08-.11-.06-.06-.36-.19-.14-.11-.27-.32-.36-.17,0-.06.13-.12.05-.11.09-.57v-.2l-.08-.53-.06-.15-.09-.14-.43-.51-.3-.25-.33-.21-.37-.3,0-.14.08-.15,0-.1-.13-.1-.57-.07-.18,0-.28-.05-.33-.34v-.26l-.12-.25-.11,0h-.26l-.32.05-.67.18-.68.43-.24.33-.49.3-.08.09.07.18.12.06.2,0,.48,0,.07.05-.09.12-.28.44-.15.06-.19-.05-.25-.14-.14-.14-.14-.07-.14,0-.16.06-.3.19-.29.23-.1.12,0,.24-.06.06-.13,0,0,.06.09.22-.06.25-.16.41,0,.31.36.51.2.15.15,0,.59-.18.05,0-.24.27v.09l.2.18-.35-.09h-.15l-.22.05-.16.1-.09.15-.48.5,0,.3v.13l.09.32.43.53.18.26.1.2.13.16.17.12.23.08.29.05.24.1.19.15.4.22.95.4.07,0,.18-.22.07,0,.09,0,.23.26.18.26.16.17.13.08.22.05.31,0,.21,0,.26-.13.3-.06.24.16v.11l-.06.16v.09l.22,0-.05.07-.26.19-.39.23-.14-.11,0-.1.43-.41v0l-.5.11-.64.08-.21.08,0,.14,0,.12,0,.33.07.06.29,0v.05l-.33.24-.53.29-.19.15-.11.38,0,.1.22.14.55,0,.32-.06.16-.12.13-.24.11-.33,0-.05h.06l.08,0,.09.09.09.15.06.16,0,.18v.19l-.07.35.06.2.07,0,.33,0-.08.06-.36.18-.6.2-.37.23-.35.34-.29.23-.22.11-.57.38-.25.09-.19,0-.35-.14-.23.07h-.31l-.09,0-.08.07-.47,1,0,.12.33.36L191,62l.16.56.05.35-.16.37-.12.59-.1.1-.2.08h-.28l-.71-.18-.13,0,0,0,.05.19.47.54.05.12-.11.25h0l0-.26-.13-.19-.92-.93-.11-.17v0l0,0h.11l.26.27.25,0,.16-.07.14,0,.18.13.19.06h.33l.1,0,.13,0,.09,0,.09-.08,0-.15,0-.2V63.3l-.22-.21,0,0h-.15l-.32.07v0l.21-.35,0-.07-.34,0-.28.07-.27,0,0-.07v-.3l0-.1-.3-.4v-.15l.33-.42.07-.13.09-.39.37-1.13.16-.31-.22,0-.78.25-.05.05-.08.17-.09.07-.12.05h-.28v-.08l.56-.6.11-.16v-.08l-.42.19-.72-.08,0,0-.13-.25-.12-.17-.25-.29-.14-.1-.15-.07h-.14l-.15.06-.19,0-.37-.21-.21,0,0,0,0,.22.23.24-.63.1-.27.08-.5-.27h-.11l-.09,0h-.18l0,.12.26.4.08.09.12.25v.06l-.24-.08v0l.11.2.48.54.16.08.42-.14.37-.06.39.09.42.24.26.19.09.12,0,.09,0,.15V61l-.09.09-.17.1-.39.14-.31-.07-.65-.33-.09-.11-.17-.12-.67-.83-.24-.22-.18-.11-.13,0-.07.08v.14l0,.13.18.2.28.22.09.11v.07l-.09,0-.51,0-.25.11-.23,0h-.23l-.24,0-.3-.1-.35-.17-.62-.16-.91-.15-.5,0-.14.06-.2,0-.27,0-.23,0-.36.09h-.15l-1,.17-.27-.08-.39-.16-.36-.06-.32,0-.23,0-.14-.1-.61-.22-.3-.17-.35-.34-.59-.48-.3-.21-.39.13-.52.06h-.6l-.33-.06-.27-.1-.28-.23-.06-.1.07-.23,0-.06-.24-.09h-.22l-.07,0,0-.19,0,0h-.07l-.11.06-.12-.05-.18-.13-.36-.32-.09-.17,0-.43-.13-.52-.12-.24-.16-.17-.22-.15-.44-.19-.3-.07-.34,0-.83.22-.24,0-1.29.33-.7.09-1.14.05-.07,0-.67.73-.19.28.06.08.64.4.08.09.13,0,.33,0,.16,0h.61l.12-.1-.1-.18v-.12l.27-.14.25,0,.41.13h.31l.23-.14.21-.08.19,0h.15l.35.14.1-.11.07-.25.19-.18.47-.18.45-.14.2,0,.32.12.05.07-.09.23-.17.17-.16.1-.23.11-.2.05h-.29l-.3.21-.06.1v.31h-.07l-.16-.06-.27,0-.09,0-.18.21-.1,0-.19,0h-.14l-.28,0-.21,0-.27.1-.2,0-.13,0-.53.05-.07,0v.09l.11.2-.09.17-.27.16L165,59l-.06.3,0,.12.17.23.22.2.19.28,0,.13,0,.16v.15l.13.4.15.27.33.28.06.09-.14.15,0,.12.13.17.17.34h-.09l-.25-.19-.15-.06,0,0h-.06l-.1,0-.25-.25-.21,0,0,.07,0,.51v.16l0,.1.27.44.54.71,0,.1L166,64l-.16-.13-.21-.21-.43-.53-.1-.17-.38-.37-.08-.13-.1-.1-.1-.07-.11-.12-.11-.17-.46-.46-.07-.11h.07l.23.14.26,0,.27-.05.21-.07.14-.1.05-.12,0-.14-.11-.2-.7-.57-.28-.3-.18-.39,0,0-.14,0-.08.08-.24.49-.08.05-.08-.07-.11-.2,0-.14,0-.37-.08-.19-.08-.08-.29-.09-.84-.08-.11-.07-.14-.25-.13-.18-.15,0L161,58.4l-.2-.33L160.7,58h-.06l-.25.11-.32,0-.93.36-.39.11h-.21l-.13,0-.08-.09h-.2l-.34.11-.27.05-.28,0-.81,0-.28,0-.17,0-.26.1h-.14l-.78-.05-.4-.06-.29-.08-1-.06-.43-.06-.33-.1-.25,0h-.19l-.33-.09-.48-.2-.39-.09h-.32l-.25-.07-.31-.21-.29-.13,0-.07.48-.23.08-.06,0-.24,0-.07.11-.09.58-.18.2-.25,1,.16.38,0,.09,0,.08-.08.14-.32-.05-.06h-.13l-.08-.08,0-.15-.2-.28-.38-.42-.4-.34-.75-.43-.5-.19-.4-.21-.39-.14-.36-.08-.15,0-.12.1-.48-.1h-.15l0,.06.35.4V54l-.34-.06-.22-.11-.19,0-.26,0-1-.21-.22,0-.2,0-.17-.09-1.06-.32-.53-.2-.43-.21-.35-.21-.52-.37-.25-.1-2-.47-.59-.18-.3-.17-1-.8-.29-.18-.75-.36-.4-.16-.43-.11-.67-.12-.66,0-.66-.09-.17,0-.35-.06-.14,0-.12.09-.08.16-.1.38-.17.32-.08.07-.24.07-.23.26-.15.1-.17,0-.91-.06-.13,0-.47,0-.18-.07-.09-.08v-.1l.06-.1.13-.13.58-.54,0-.13-.45-.2-.11-.13-.09-.56,0-.24.07-.28v-.18l-.11-.13-.11,0-.18,0L131,48l-.09.13-.44.11-.08,0,0,.05.09,0h.11l.19.07-.05.07-.21.11-.18.14-.14.17-.11.09H130l-.18-.06-.07.26v.09l-.28.23,0,.13.18.24.17.32,0,.19-.47.25-.28,0-.42-.13-.36-.17-.31-.2-.36-.32-.7-.73-.14-.18-.13-.29-.12-.4-.17-.39-.39-.69-.16-.23-.29-.29-.74-.61-.22-.13-.26-.12-.1,0L124,46l-.1.15,0,.23.09.09.27.14-.13.12,0,0,.12.1.59.16-.18.13-.7.17-.4.17-.2.43-.06.09-.71.5-.32.19-.26.13-.17,0-.09-.06-.07-.13,0-.19,0-.11.43-.12.05-.07.09-.25h0l-.19.1-.11.1-.16.07-.33.08-.65.05-1.16.3-.51.2-.36.29-.32.29-.49.56-.09.12-.14.26v-.16l0-.4,0-.24-.09-.09-.11,0h-.1l-.1.07-.2.24H117l.06-.19-.08-.08-.45-.13h-.14l-.33.07-.08.11.08.05,0,.06-.1.12-.19.15-.47.17-.17.11-.31.1-.39.06-.38.2-.09.13,0,.1v.14l0,.19.07.1.33,0,0,.06-.1.09-.28.1-1.23-.21-.07,0,0,.06.25.18.11.11-.12,0-.31-.13-.05-.08-.08-.2.1-.15.33-.26.31-.2.27-.24.34-.36.29-.17h.43l.32-.11.29-.18.15-.13.33-.39.11-.06.16,0,.81,0,.35,0,.21-.05.52,0,.27-.05.27-.11.54-.3,1.74-.67.25-.26v-.12l-.16-.24-.1-.1h-.11l-.37.28-.11,0-.2,0h-.27l-.21-.06-.24-.13L119,47l-.35,0-.56.24-.14.11-.1.14-.24.25h-.16l-.21-.1H117l-.3.1-.76.42-.49.14-.14,0-.2-.18-.33,0-.1,0-.08.07v0l.18,0,.13.08,0,.06-.11,0h-.15L114,48.4l-.16.06-.27.42-.13.13-.17.12-.28.06h-.38l-.46.09-.55.21-.48.14,0-.1.33-.37.16-.14.16-.27,0-.08-.36-.14-.11-.11-.1-.2-.1-.12-.34-.07-.1,0,0,.12-.06.22v.09l0,.26-.08,0-.74-.13-.6,0-.13.06-.07.08-.08.37-.08,0-.42-.14-.25.15-.16-.09-.51.69.12.11.22.14.18.08.15,0,0,.07h-.22l-.37,0-.11,0,0,.06.07.18,0,0,.49.13.41.21.05.05.33.51-.06,0-.21-.06-1-.57-.52-.21-.77-.12h-.46l-.71-.27-.39-.08-1.23-.56-.52-.26-.32-.27-.8-.41-1-.8-1.62-.52h-.89l-.94-.19-.29-.08-.16,0L96.47,47l-.1.06-.15,0L96,46.76l-.34-.23-1.21-.46-.24-.27-.56-.4-1-.38-.12.07h-.17L91.88,45l-.37,0-.68.12H90.1l-.44.18-1.19-.2L88.4,45,88,44.9l-.76-.46-.49,0-.45-.15-1-.1-.67,0-1.32-.28-.17-.09L83,43.58l-.35-.07-.2-.17-.22,0-.27.14-.22,0-.41-.4L81,43l-.86-.35-.29,0-.27-.11-.68,0-.6.2-.26,0-.26-.06-.28-.19-.24-.1-.67.12-.31,0-.21.1-1.48-.24.27-.2,0-.09L75,42l-.84,0L74,41.89l0-.17-.27,0-.14-.13.09-.29.45-.26L74,40.85l-.38-.16-.37-.07-.24,0-.92-.28-.56.11-.42,0-.45,0-.6.24-.4-.17-.42-.07-.37-.2.13-.12.12-.21-.28-.25-.25-.15-.46-.1-.13.05-.19.24-.59.41-.28.12-.34.06-.21,0L66.25,40,66,39.92l.73-.19.37-.23.14-.21-.12-.24-.34,0-1.34-.5-.19-.2.16-.13.22-.05-.16,0-.67.28-.42.31-.5.48-.28.18-.62.32-.65.25-.19,0-1-.06-.06.08-.23.06-.78-.07-.17.09-.37.06-.11,0L59.38,40l.17-.11.17-.06v-.1l-.08-.07-.17,0-.78.28-.88.5.25,0,.42.42.74.08-.63.13-.26-.09-.07.16,0,.23,0,.24,0,.17-.07-.21-.39,0,.22-.41-.2-.11.32-.33-.17-.08-.14,0L56.6,41l0,.1-.76.37-1.35.15-.28.12-.48.08h-.16l.07-.05.28-.08.2-.15.13,0,0-.08-.06,0L54,41.22l-.22.14-.21.21L53,42,51.6,43.15l-.33.52-.12.56-.09.23-.05,0,0-.05-.11.16-.64.59-.73.43-.6.22-.33.07-1.22,0L47,46l-1,0-1.44-.18,0,.32-.27.79-.25.51-.14.11-.27.09-.15-.06.22-.16-.21,0-.3.15.42.17.34.07.35.14.54.47,1.16.49,2.49,1.74.35.48.24.74.14.28.37.35,1.07.35h.51l.36.09.38-.27v.15L52,53l.89,0,.5.14.19.16-.24.17L53,53.8l0,.36.35.22.21.2.35.16.75-.29.39,0,.44.26.59,0,.19.16.06.22,0,.3-.88.1-.27-.06-.52-.35L54.43,55l-.38,0-.53.09-.64-.4-.26-.39.1-.4-.23-.07-.22-.43-.22-.11-.25,0-.27.1.1.32.14.25.31,0,.26.16.57.74-.08.27.17.15.6-.07.86.31.09.15.05.36-.14-.18-.2,0L54,55.79l-.22-.13-.22.09-.59.63H52.7l-.58-.14h-.77l-.28,0-.33-.16-.6,0L49.06,56l-.67-.5.15-.13.16-.09v-.32l.26-.37,0-.13-.12-.11-.11-.06h.16l.36,0-.17-.15-.69,0h-.83l-.46.08-.84.34-.27,0-.53.07-.7.25-.09.1-.07.15.56.31-.06.07-.09,0-.2,0-.59-.08-.1,0-.31-.17-.39.06-.31.13-.44.13-.33.29-.22.17-.17.08h-.69l-.39.32-.71.21,0-.12v-.11l-.17.08-.18.2.09.21L40,57l1.17.58,1.5.4.12,0,.85.23.07.07.07.09-.32-.07-.37.06-.18.3-.49,0-.19-.06-.1-.06h0l.2.22.53.53.28.11,0,.33-.15.08,0,.24.3.36.36.17L45,61l.62.21.33.07h.17l.09-.06.07-.1.13-.05.08,0,.07.05.82-.19,1.23.08.46.17.43.28.25.19.09-.17.12-.13-.25-.07-.14-.11L49.48,61l.22-.13.64.5.11.48h.2l.18-.23.66-.48.36-.19.64-.17.25-.23.25.1.35,0,.61-.38h.12l.13.08.18.23.16.16.05.14,0,.25-.14.22-.09.1-.25.13-.31,0-.45-.07-.19.29h.22l.34.17.44.52.12.73.1.33.1.39-.12.28-.22.21-.39.3-.36.18-.5.05-1,0-.16-.07-.1-.21-.17,0-.19,0-.18.23-.59.57-.4.16-.31.27-.24.1-.48.07H49l-.12-.14-.17-.08-.31.14-.19.11,0,0,.05-.06.14-.06.06-.06.05-.11-.23-.24-.42-.21-.34-.07-.63.1-.12.09-.15.18.3.26,0,.07-.09,0-.52,0-.19.14-.09.17-.12.37,0,.4,0,.17.23-.15.22-.09,0,.07-.21.24-.33.06.08.23.08,0,0,0-.23-.13-.22-.07-.24.05-.18.11-.56.5-.59.6-.1.28,0,.17,0,.1.18.2-.47.07-.32,0L43,69.6l.1.19.43.19-.06,0-.56.07-.06,0-.08,0v.33l.11.13.29-.11.24.06.08.15-.25.26.08.22.35.14.1.43.11.2.17,0,.21,0,0-.19v-.14l.13-.16.13,0,.06,0-.15.11-.08.09.13.1.15.07.12-.1.05,0,0,.2.12.12.29,0,.15,0,0,.07-.26.12-.39.21.12.12.1,0,.65,0,.63.24.93.09.53-.29.18.11.14.13-.15.06-.37,0-.15.08.58.14.22.09.18.14-.25.27-.43.2-.17-.25-.13-.26-.09,0-.13,0-.29.21-.39.24-.13,0,.12-.16.13-.23-.1-.15-.1-.09L46,72.94l-.34-.19-.25-.09-.2,0L45,73.1l-.75.56.27.08h.23l.17.09,0,.11,0,.16.27.22.24.14.29,0L46,75l.66.54,0,.13v.16l.46.31.47.06,1-.06L49.2,76l.32-.19.34,0,.08-.14.1-.27,0-.23,0-.1-.27-.14.18-.07.3-.28.47-.59.14-.11.14-.15h.37l0,0L50.9,74l-.34.47-.32.51.34.35.17.63.41.85.14.4,0,.22-.11.26-.11.18-.24.23.06.42.17.23.21-.08.31,0-.32.26,0,.2v.16l.09.32-.29.21-.33.07-.29.1.8.16.83-.11.09-.21.09,0,.09-.11h.07l.62-.17.22,0,.35-.22.3-.14.33-.11.2.26.2.22.46.29.19,0,.2-.16.15,0L56,80l.19.23.51.8.26.22.34-.09.05-.23-.14-.61.07-.23.16-.31-.06-.22.1.08.16.07.21-.16.17-.24.19,0,.41.19.27.2-.22,0-.25-.11h-.24l-.12.18-.07.26.11.21.1.12.16.33.22.1.36,0,.76-.27,1.12-.3.39-.31.36-.42-.28.5L61,80.4l.06.09.07,0-.55.24-.51.38-.15.24,0,.21,0,.29.19.07h.12l.29.15-.52,0-.24.08-.14.26-.06.46-.16.44,0,.19,0,.12.14.12.07.19.07.05.12,0,0,0-.15,0-.23-.06,0,0,0-.08-.08,0-.23,0L59,84l-.34.28-.19.11-.19.06-.21.11-.34.27-.25.23-.18.21,0,.12,0,.15v.35l0,.09-.07,0L57,86l-.23-.07,0-.1v-.1l-.15.05-.37.24-.28.22-1.06.29-.57.32-.23.1-.33.21-.18.2-.19.29-.13.22-.06.15v.12l.09.09.34.23.07.1,0,.08H53.5l-.19-.06-.12-.07-.06-.08-.14,0h-.22l-.11,0v.24l0,0h-.09l-.09-.06-.3-.35V88.2l.23-.07.06-.08,0-.07-.15,0-.37,0-.1,0L51.72,88l.1-.1-.07,0-1,.26-.51.2-.48.26-.43.33-.37.39-.32.26-.28.14-.16.11,0,.1-.08.06-.12,0h-.1l-.07-.06-.14,0-.36.18-.06.07v.1l0,.15,0,.17-.11.2v.1l.1,0,.14-.07.2-.13.08-.16,0-.18,0-.08.25.07.25.28.09,0,.32-.11.12-.11,0-.09,0-.43,0-.08.18,0,.09.11.13.19,0,.11-.08,0,0,0,.06.06.08,0h.11l.13,0,.14-.13.1-.06.19,0,.21-.15.54-.52,0-.08.1-.3.06-.1.13-.07L51,89l.12,0,.21.06.21.11.08.06,0,0-.23-.06h-.12l-.09,0-.07.06-.08.14,0,.19,0,0,.17,0,.42,0,.17,0,.16-.09.16-.14.12,0,.26.11.09,0,.1-.11.13,0,.14.06h.11l.08,0,.13-.15.08-.06.27,0,.43-.26.18-.08.1,0,.09,0,.14-.09h.14l.13.07,0,.09,0,.43,0,.06.11-.07.1-.12.07-.15.05-.17.2-.08,1.36-.32.19-.15.18-.31.08-.08h.08l0,0,0,.28,0,0,.07,0,.1-.1.34-.22,0,0,0-.15-.05-.08-.09-.07-.16-.06-.15,0,0,0,0-.07.28-.27.13,0,.34,0,.14-.06.11,0,.19,0,.11,0v0l-.1,0-.2,0,.11-.11.34-.13H59l.19.07.14,0h.06l.12-.11.1-.24.11-.08.1,0H60l.13,0h.14l.14,0,.16-.09.17-.14.14-.08H61l.1-.06.1-.1.14,0,.18,0,.09-.15.19-.06.06,0,.17-.28,0-.11-.08-.16-.06-.06v0l.1-.08.42-.24.18,0,.13.07h.08l0-.23.08,0h.39l.08,0,.11-.17.22-.12.08-.08,0-.09.13-.07.24,0,.22-.08.36-.19.1-.09.22-.29.88,0,0-.16,0,0,.34-.06.26,0,.08,0,0-.23.07-.15-.15,0v0l.43-.15.07-.09v-.14l.1-.14.34-.26.09,0,.26,0,.18-.07.39-.28.17-.19.07-.1,0-.08,0-.07-.15-.17-.47-.28L67.84,80l-.23,0-.46-.16-.1-.12.11-.25.17-.28,0-.08.59-.29.14-.1.09-.1.2-.15,0,0-.12-.07,0,0,.37-.2.14,0,.1,0v0l-.06.15,0,0h.27l.3-.09.1-.06L69.6,78l0,0-.35-.13.06,0,.16,0,.53,0,.2-.06.23-.22.08-.13v-.13L70.42,77l-.17-.17L70,76.6l-.27-.17v0l.21,0,.25.16.15,0h.15l.24-.06.37-.19.18-.13.07-.08L71.24,76V76l.08-.17.61-.43.28-.14h.17l.08,0L72.41,75l0-.08.11-.16.3-.19.29-.09.38-.05.28-.12.19-.17.26-.15.72-.27h.09l.07,0,.12.14.75,0,.28,0,.07,0,.17-.23.11-.12.28-.16.15,0h.4l.21,0-.57.2-.3.15-.21.16-.12.13,0,.1-.07,0-.2,0-.08.07.17.17.75.46.27.11.64.14.14.17v0l-.2,0-.94-.3-.46-.07-.3.07-.24,0-.18-.08-.15-.11-.13-.12-.2,0-.72.28-.38.2-.79.25-.07.06,0,.19,0,.34v.27l-.21.58L73,77l-.36.31-.27.3-.12.2-.18.41.06.2.11.07.51.19h.12l.1,0,.68-.34.07,0,0,0-.33.39-.16.15-.3.19-.24.08-.38,0-.34.15-.08.05-.11.13-.08.17,0,.06.09,0,.33.25.24,0,.31-.11.23,0,.16.06.14,0,.11,0,0-.06-.07-.1,0,0,.24.08.2.13.06,0,.08-.15.11-.11.38-.24.13-.15,0-.17,0-.08h.06l.1.09.09,0,.31-.12h.09l.07,0,.13,0,.51-.34,0-.07-.1-.2,0,0,.08,0,.33.16,0,0,0-.25,0-.07.19-.18.05.08.09.34,0,.06h0l.13-.37L77,78l.07-.1.06-.3h0l.17.29.07.06.31-.09.1.11L78,78l.33.11.19,0h.22l.15,0,.07,0H79l.08,0,.07,0,.24-.39.09-.07h.1l.06,0,0,0,0-.31,0-.17,0-.13.06-.08.11-.06.17,0,.13-.06.06-.1,0-.12-.13-.15-.14,0-.15.08-.23,0-.3,0-.23,0-.16.08h0l.1-.1.19-.12h.09l.26,0,.08,0,0-.08.08-.2,0-.07-.15-.09-.11,0-.31-.24v-.08h.18l.16,0,.11-.06.13-.26.19-.27,0,0-.13,0-.23.07,0,0,0-.07.11-.07.15-.05h.13l.1,0h.23l.13-.06.31-.23.16-.09h.05l-.51.59-.08.15,0,.07.19.2.17,0,.32,0,.07-.07.08-.13,0,0,.09.09.18.07.08.11h.06l.09,0,.08-.06.07-.1.13,0h.18l.15,0,.11.07.22-.07L83,75l.29-.14h.41l.2.09-.67.14-.09.18,0,.3.06.08.14.11.29.11-.23.15-.11,0,0,0,.13.1.33-.09.2,0,.14.05,0,.07v.07l0,.1,1,.1,0,.09-.15.18-.12.1-.19.13.1,0,.27,0,.31.1.37.19.27.05.19-.09.15-.11.25-.24.26-.18.3-.17h.08l-.22.24-.09.15-.1.23-.11.38.09.13.23.09.14.08,0,.08.23.08.4.07.3.15.18.22v.06l-.16,0,0,.09.34,0h.37l.62-.08,1.18,0,.82.1.9.24.89.26.3,0,.17-.07.09-.06,0-.14v-.07l0,0,.09,0,.06.08.06.25v.07l-.25.22.15.1,1,.46.4.11.47.07h.42l.64-.2.15-.06.53-.4.2-.12.18,0,.06,0,.3.36.51.21-.12,0L98.3,80l-.09,0-.06.12,0,.11,0,.25,0,.12,0,0,0-.39L98,80l0-.09-.23-.26-.07,0-.06,0-.09,0,0,.07,0,.09V80l0,.18.1.2,0,.09-.22.25-.13.06-.2,0-.07.06,0,.06.11.08.28.15.47.3.91.49.36.18.39.1,0,0-.09.06,0,0,.18,0,.2.08.22.14.42.35.12.17.05.14.13.19.22.26.17.15.13.06.06.06v.11l0,0,.94.63.41.22.33.23.19.08h0l.27-.23h.69l.1,0,.06,0v-.21l-.08-.16-.23-.31-.19-.09h-.34l.18-.17v-.07l-.24-.14,0,0,0-.1-.09-.08-.25-.14-.28-.12-.17,0-.16,0,0,0,.16-.15.08,0v-.1l-.09-.17,0,0L103,83l.53.17.11.11.06.14,0,.06.14.07.16.13.15.08h.08l.09,0,0-.09,0-.13v-.09l-.06-.17,0-.3,0,0,.06.13.08.33.07.06.18-.07.22,0-.47.2v.09l.28.53,0,.14-.1.33,0,.2,0,0h.63l.25.13.16.25.11.13.33.1.11,0,.07-.1,0-.08,0-.1-.15-.53,0-.24,0-.25-.08-.32-.13-.42-.07-.54-.21-.37H106l0-.1-.13-.22H106l0-.11.1-.19,0,0,0,.25,0,.27.19.51.12.72.11.15.18.11,0,.07,0,.29.3.61.22.22.36.08.31.23.14.18.09,0,.18-.13.22-.39.21-.23.08,0H109l0,0-.1.09-.27.52-.06.23V86l0,.18.27.25.14.18.14.26,0,0,.14,0,.07,0,.15-.19h.13l.62.19,0,0-.62-.09-.06,0V87l0,.17.16.16.62.52,0,0-.4-.25-.42-.23h-.11l0,0,0,.09.21.28.16.66-.1.48,1.12.46h.18l0,0-.07.23v.09l0,.11.19.23.13.09.3.11v.34l.08,0,.16,0,0,.07v.13l0,.12.09.09.14.21.1.07.22.08.11.17.06.16.08.09.09,0,.6.12-.4.1h-.22l-.39.64-.19.24-.15.16-.11.07,0,.09.11.36.07.1.27.12.09,0,.17-.26.1-.24.07-.09v0l0-.15,0-.05.07-.06.32-.14.74-.17.55-.18-.1.12-.15.12,0,.11.28.45.1.23.06.37v.17l0,.26,0,.31,0,.07.17,0v.06l-.49.11-.15.18v.06l.12.29.07.32.14.42.48.09.08.06.08.07.4-.16.33-.35V95.6l.12-.21.31-.44v-.13l0-.2-.1-.33,0-.18v-.2l0-.18.07-.17.08-.16.12-.14v0l-.1.19-.07.17,0,.16v.38l.06.27.09.34,0,.27-.14.18-.09.25.08.15.14-.15.25-.38.1-.19.07-.27,0-.34,0-.07,0,.18.06.12.06.06H117l.08,0,.15,0-.5.48-.25.32-.14.23-.38.52-.08.18-.18.25-.19.07-.1.12,0,.1,0,.23,0,.17-.09.16.06.2.2.25.41.28.39-.1h.22l.35,0-.36.16-.53.05-.05.08-.07.36-.33.28-.24.39.13.2.38.25.33.1.15.4.27.24.23.25.23-.25.38-.1.06-.06,0-.17,0-.27.06-.18.35-.36.09,0,.12-.11h0l0,.06.08,0,.4-.22h.11l.23.19-.06,0-.19,0-.14,0-.07.07,0,.09,0,.11,0,.14.13.31.15.15.17.09.09,0,.21,0,.34,0,.18.12.32.35,0,.16-.29-.29-.1-.14-.32-.14-.14,0-.26.12-.13,0-.58-.4-.15,0,.14-.29v-.11l-.16,0-.19,0-.2.12-.14.3.07.26.08.22.43.14.43.27.24.31.1.74.17.16.55-.18h.11l-.13.14,0,.14-.18.5-.2.5v.2h.06l.13-.1.33-.31.2,0h0l-.17.14-.07.1,0,.07,0,.24,0,.06-.7.39.3.47.15.59.25-.43.24-.53.16-.27.1-.1.17-.06.32,0,.09,0,.91-.68.09-.05.07-.08.05-.1,0-.1v-.24h0l.08.17,0,.09v.09l-.1.16-.43.31,0,.1,0,.12.06.18.06.07.38.2.07.12v.11l.27.34.07.15,0,0-.17-.18-.13-.18-.11-.2-.1-.1-.34-.1-.12-.23-.41.08-.25.14-.26.1-.27.15-.12.28,0,.27h.27l-.24.3L120,105l0,.12,0,.28,0,.2.13.18,0,.1,0,0,.09,0h0l.08-.09.08-.13.3-.29.22-.07.64,0,.7.09-.09,0-.49,0h-.65l-.14,0-.16.08-.48.46-.13.22-.07.2v.32l.23.19.29.29.16.13.18.1.43.16h.09l.11-.06h.69l.15-.12.12-.24,0,.26-.09.25.06.08.15,0,.09,0,0,.07-.17.1-.1.11v.12l0,0,.25,0,.82-.06.15,0v.06l-.35,0-.37.08-.37,0-.07.05v.1l.09.06.35,0,.29.09h.14l.12,0,.27,0,.14,0,0,.09.09,0h.12l.07,0,.07-.24.07-.16,0,0v.31l0,.08.06,0,.54.1.33-.08.16-.2.11-.19,0-.14,0-.13,0-.12.16-.16,0,.13,0,.29v.14l0,.08-.18.26-.27.3,0,.15.11,0,.1.16v.11l.27.52v.14l.15.18.42.44.14.09.27,0,.3,0,.18-.15.16,0,0,0,0-.21,0-.06.21-.2v-.08l-.16-.23h0l.11.05.11.08.07.11v0l-.09.12-.14.06,0,.09,0,.5,0,.16.11.14.1.09h.12l.26,0-.07.06-.27.15h-.16l-.06-.14-.14-.23-.07,0h-.07l-.07.06-.07.13,0,.16.15.19.11.12.07,0,.66.28h.05l.16-.12.07,0,.14,0,0-.15,0-.08,0-.08.31-.25,0,0,0,.08-.08.13-.08.39-.05.14-.05,0v0l0,0h.21l.32.09h.11l.19-.17-.08.19-.08.08-.25,0-.24,0-.1,0,.07.11,0,.19,0,.06.06,0h.15v0l-.07.09,0,.07,0,.17v0h0l0,0,0-.12.06,0,.08,0h.08l.19.14.08.1.1.38.07.16.06.09h.11l0,0h0l0,0,0,.25,0,.3,0,0v.09l-.1,0-.17,0-.07,0,0,.06,0,.05,0,0,.12,0,.08.06.1.1.15.23v.06l-.13,0-.12.07,0,.07,0,.11,0,.08.2.14v0l-.06-.23,0,0,.06,0,.06.15.06.09.11.11,0,.09-.18.19,0,.09-.14.19,0,.09,0,.09v.09l0,.1,0,.06.06.07,0,.07,0,.19,0,.36v.06l-.15.14-.1,0h-.1l-.06,0-.16.28,0,0-.16.08h-.06l-.16-.1-.21,0-.24,0,.09-.08.08-.18.09-.11.19-.11,0,0,0,.27,0,0,.11-.22,0,0,.12.1.09,0L130,118l.08-.28v-.16l0-.17-.17-.23h0l.07,0,0,0,0-.21,0,0,.2-.13,0-.12,0-.27-.11,0,0,0v.15l-.05.05-.24.18-.09.15-.13.1-.21.12-.16.12-.15.19,0,.07,0,.14h.1l.22,0,0,0-.23.11h-.16l-.06,0v-.08l0-.13.19-.29.52-.59,0,0v.13h0l.28-.35,0-.14-.11-.22,0-.17v-.12l0,0-.18.11-.1,0h-.14l-.1,0-.19-.19-.08,0-.19.07h-.09l-1.41-.24-.24-.1-.15-.12-.52-.2-.4-.23-.16,0,0,.25-.07.35,0,.47.07.19.31.34.15.34.09.67.19.53,0,.32v.19l0,.16.06-.11v-.09l.15,0,.1.13.3.08-.58.21.06.31.23.11.13.14-.07.33L127,120l-.13-.24,0-.22,0,.29v.31l-.08.23.24,0,.13.09.43-.05.08.09.38,0,.12.14.21.15h.09l.06,0h-.21l-.16,0-.12-.15-.12,0-.32.08-.49,0-.1-.12h-.06l0,.11,0,.1-.08.76v.68l-.09.26,0,.19-.36,1.56v.33l-.07.32,0,.25-.13.22-.12.69-.1.91-.09.1-.13.27-.13.32.12-.06.07,0-.17.13h-.09l-.06.06-.29.8-.11.18-.11.3.18.37.06.22-.07.5v.19l.08.46.27.36v.24l-.09.24.15.19.08.24.06.41v.18l-.2.55,0,.46-.16.34,0,.08v0h.07l0,.06,0,.12-.06,0,0-.05,0,0-.07.06-.1.27-.12.25v.3l0,.29.42.42.42.6.09.21.07.39v.25l-.12.35.16.63v.49l.53.6.25.36.34.23.13.36.12.08.14.2,0,.18-.19-.26v.31l-.08.18V141l.15-.15.11.08.22.21.16.12.19.08.13.12.11,0,0-.27.06-.37.19-.07.11,0,.26.17.11,0,.27-.11h.07l.12.09.11,0h.27l.14,0,.12,0,.2.09h-.1l-.13,0-.17.05-.76-.1h-.27l-.21.07-.16.1,0,.09.06.07.06.26.14.15.11.26.06.2.05.06,0,.1-.1,0-.1-.05-.12-.16-.13-.07-.14-.17,0-.2,0-.11-.12,0-.15.05v.29l0,.26.16.42v.39l.44.55.58.17.14.22v.28l-.11.17-.19.19v.32l0,.25.41.45.37.56.05.16.17.18.11.28.28.18.22.32.25.15.07.14-.07.21,0,.15.3.15.09.09,0,.11-.08.29.06.33,0,.14v.19l-.06.2.17.1.15.18.18,0h.47l.24,0,.4.17.29.05.23,0,.38.22.29.21.05.22.18.14.63.25h.48l.19.06.21.38-.06.26.24.1.07-.11.21,0,.16.08.25.25.33.22.62.61.27.47.09.38v.15l0,.15,0,.33.13-.05.08.1v.27l.1.44.06.09.23.27.1.46.45.37,0,.21-.06,0-.1,0-.05,0,.11.09v.31l.1.15.29.34.22.38,0,.17v.36l.46.42,0,.22,0,.32,0,.35.27.14.08.14,0,.49-.06.28.12.06.12.42.21.19.5.37.28.26.35.12.12.08.11.17.41.45.67.87.32.3.17.42-.13.45-.23.45-.18.16,0,.06h.2v.11l0,.08.07.24.12.12h-.14l-.19-.12-.13-.14,0-.13,0-.08-.16.06-.16.08h-.26l-.51-.14-.44-.06v.09l.07.15.27.19.27.29.35.27.07.13,0,.2.06.15.22.16.27.05.18.1.22.28h.12l.2.06.15.22.1.19.2.17.38-.14.31,0,.15-.14.12-.19v.35l0,.17.18.3.7.65.27.12.3.15.37.7.09.33,0,.29,0,.11.05,0v.19l-.07.35-.15.61v.24l.08.21.43.41,0,.08v.13l0,.07.11,0h.14l.19.26.31.28.76.55.27.31.25.23.26.32.53.33.14.2.08.24.12.16.13.74.15.26.17,0,.21-.06.21-.12.22-.19.29-.15.09-.12.12-.4V176l-.16-.27-.34-.16,0-.31-.13-.15-.06-.16-.15-.22-.18-.18-.07-.15-.47-.41h-.08l0,.07v.1l0,.14-.06.12-.1.08-.09-.08,0-.07,0,0-.26-.09-.21-.3-.11-.55,0-.18.13-.24v-.18l-.12-.29-.26-.35-.2-.62,0-.23-.23-.12-.26-.5-.06-.32,0-.43-.13-.31v-.19l-.09-.14v-.22l-.14-.17,0-.29-.44-.41-.06,0v.24l.07.16.15.24-.05,0-.07,0-.2-.25,0-.36-.24-.3v-.09l0-.15-.18-.17-.19-.1-.16-.37-.07-.4-.43-.33-.35-.4,0-.17,0-.21-.1-.23,0-.25-.13-.2v-.3l-.18-.08-.15,0-.12-.1-.18-.65-.11-.06h-.13l0-.07,0-.07-.1-.17-.25,0-.06-.22V163l-.39-.62-.14-.18-.46-.42-.22-.29-.38-.25-.05-.15-.29-.31-.14-.31,0-.19.08-.6-.09-.27v-.33l-.09-.44-.15-.29-.06-.18.13-.86.14-.24-.07-.35-.11-.13-.07-.12.38.25.09.07.18.05.12.07.56.46.23.12h.14l.16,0,.07-.15.07-.08.37.19.12.09.13.14v.27l.29.14.5.13.09,0,.21.08.07.07v.21l-.06.06-.07-.05,0,.07,0,.05,0,.2-.08.33.09.33.19.33.23.49.11.41v.32l.08.16.08.11.14.35.3.43,0,.18,0,.09,0,.16.15.07.16.13,0,.35.05.22.22.3.2.18.05.06v.1l.14.24.16.2.12.22.42.23.35.63.3.35.28.11.13.1.15,0h.19l.46.16-.11.14-.1.31,0,.24,0,.22.07.13.08.16.19.22.2.17.67.24,0,.11v.11l.05.22.11.26.14.16.16,0h.4l.4.43.05.19v.1l.05.11.13.12,0,.12-.08,0-.08-.11-.16.13-.19.21-.16.23,0,.67.15.22.1.06.12.05.23,0,.16,0,.16-.09.11-.09v.08l-.2.22-.21.07v.07l.06.09.29-.05.11-.06.12,0,0,.26.11.1.45.29.18.17.57.27.08.06,0,.07-.1,0h-.12l-.11,0-.1-.1-.07,0,.13.25.37.45v.19l.1.18.27.19.22,0,.07.05.14,0,.12,0,.07,0,0,.15,0,.11-.07,0-.4-.28h-.08l1.33,1.1.29.32.38.62.31.37.3.58.33.31.4.54.15.13.29.34.25.68-.06.73.22.38.12.33.05.12.44.31-.07.23v.28l0,.28L161,182l-.21.2-.14.16-.12.07,0,.07.15,0,.19.06.14.19v.08l0,.11-.25.13h-.35l-.22.12-.06.1.1.16.08.19.05.34.09.22.36.6.35.34.11.26.2.3.67.39.4.17.25.19.46.25.26.19.41.45.22.34.27.36.85.36.64.31.31.07.67.23h.46l.16,0,.14.09.17.18.3.43.23.1.19.23.47.29.29.27.3.19.85.35.37.2.45.17.65.48.71.17.7.23.19.09.3.05.46.52.78.27.75.57,1.17.21.76.45.6.2.22-.05h.4l.95-.34.65-.13.72-.37.39,0,.31,0,0,0-.12,0-.36-.1v-.06l.2-.14.07-.07h.09l.13.13,0,.08v.08h.08l.22-.11h.07l.06.07-.22.17,0,.06.4.06.94.43,0-.09-.33-.2-.11-.06H183l-.13-.07-.12-.07.05-.13h.07l.12.11.15.08.32.15.32.22.35.38.38.32.73.7.27.31.21.17.21.22.53.68.5.61.06,0,.81.73.35.27.53.3.47.18,1.11.07.26.08.77.41.25.13.33.29.57.15.51.1.82.47.71.27.07,0-.2-.12-.15,0-.06-.05h.2l.35.17.48.15h.52l.12-.08.12-.12,0-.21.06,0,.09.06.12,0,.22,0,.23.09v.09l0,.07.07.13.08.19.16.11,0,.22v.06l-.11.05h-.07l-.14-.14-.09-.12-.09,0-.18.15V202l.41.34.52.56.12.17.54.43.18.21.18.38.34.53,1,.93.26.3.15.24v.09l0,.12-.29.11-.05,0,.15.11.24.14.09.1,0,.14V207l-.1.15-.29.32-.05.21.08.34.21.38.11.13.63.24.3.42.08.09.08,0,0-.14.13,0,.26-.23,0-.14-.11-.11-.39-.21-.14-.19,0-.32.05,0,.07.1.35.19.6.5.14.24-.08.17,0,.12.15.18.2.1.53.18.2.19.44.24.31.29.19.25,0,.16,0,.33-.07.15-.21.22.25.3.12.08.18,0,.16.06.17,0,0-.12v-.09l-.24-.25-.09-.19h.17l.21.13.24.18.06.17,0,.32.16.15.18.23.12.24.06,0v-.31l.18-.1.22,0,.3.1.34,0,.28,0v.17l.12.08.14-.05.25,0,.23.12.27.08.06.14,0,.12.31.63.27.12.2.12.1,0,.06-.1.05-.28.06-.1.13,0,.07,0,0,.39.2.59v.33l.1.12.37,0,.48-.06.15-.1.06-.12.13-.07H211l.09,0,.13-.09-.05-.21-.06-.14-.36-.41-.19-.32-.08-.08-.1-.1V213l0-.15.12-.1.08,0,.35,0,.16-.06.82-.45-.13-.1.14-.14.06-.13.1-.15.25-.09.05,0,.1-.08.14-.07h.4l.33.08.27.15.2.21.16.07.11.13.09,0,.09.07.21.19.06.38.07.1,0,.1h.07l0-.09,0-.09v-.13l.05,0,0,.07.2,0v.07l.06.06.07,0,.06-.07.14-.08.07.21.08.16.31.25.18.19-.15-.05-.23-.18-.19-.13-.12-.21-.06,0-.08.11-.23.16,0,.23-.08.09-.06,0h-.22l.07.34.37.77.45.63.06.06.18.21.23.38.06.19.08.08.14.31.18,0,.12.24v.15l-.12.47h-.08l-.07,0v.23l.23.39.16.46-.17.2-.46.26.26.27.05.19v.23l0,.28,0,.49.06.12,0,.13-.08.26-.05.24-.06.16-.14.09-.07.09-.15.08,0,.09.24,0v.1l-.07.13v.15l.13.25.18-.22.06,0-.06.3.11.06.09,0,.09-.08h.1l-.39.65-.19.21-.09.26h-.12l-.13.21-.12.15-.09.16-.16,0h-.13l0,.07.05.18v.09l-.24.17-.07.08v.06l-.13,0-.06.05-.08.14-.12.12-.09,0-.08.06-.12,0L214,225l-.1.09-.15-.06-.1,0-.16.08-.13.13-.06.1-.06.51.14.29-.08.3-.43-.19-.36.18-.16.25.27.22,0,.15,0,.33-.17.17-.7.16-.49,0-.32.16-.27,0-.12.11-.23.11-.28,0-.12.1,0,.4,0,.38-.08.52-.21.31-.23.21-.18.09-.37.39,0,.14.15.32.21.09h-.16l-.2-.1-.12.2-.12.33-.16.09-.46.12-.14.2.14.44,0,.2-.11.51.12.4v.23l0,.29-.21.12-.2.08v.1l0,.07.19.18.31.12.45.51.14.1.19.09.07-.08v-.07l.27-.19.18-.27.1-.07-.08.42.08.05.14-.05.11-.25,0-.58.12-.15v.09l0,.12v.39l.14.27,0,.2-.23.39-.25.63-.1.13-.14.14-.16.08-.13.09-.31.08,0,0-.39.2-.33.27-.32.16-.22.3-.76.67-.12.17-.17.71.09.19.17.26.16.32-.1.15-.05.13.42.67.1.34,0,.25-.11.16-.13,0-.2-.12-.16.12-.05.13.06.24.17.17.48.35,1.4.87.22.27.16.29.27.36.27.5,0,.25.37.9.12.19.28.28.29.36.15.41.31.47V248l.15.49.15.39.24.47.14.6.14.34.14.59.16.37.66,1.25.11.4,0,.36v.2l.63.56.16.28.09.56v.28l.18.11,0,.14.08.11.31.29.13.39.22.44.15.21.08.34.14.28.38.57.06.31-.2.59-.13,0-.13.08.15.19v.39l.22.21.07.2.24.39.12.3.39.35.4.27.25.43.24.2.15.31.17.21,1.09.69.35.31.46.2.63.56.19.12.66.27.27.2.61.33.33.22.66.25.21.16.17.23.31.29.29.16.19.2.18.11.49.24.19.17.07.12,0,.43,0,.13.55.46.23.14.24.27.64.53.14.16.11.12,0,.42,0,.49.05.95.1.48v.27l.07.2v.22l-.06.9-.15.64,0,.41.14,1.15v.23l0,.29-.11.31-.09.48-.08.23-.13.46-.12.78-.2.62-.14.25-.14.13-.24,0,0,.25-.06.18v.24l.14.26.18.12.05.08-.05.2-.18.26-.06.22,0,.18v.35l-.12.43-.11.68v.29l.17.88,0,.17-.1.27-.2.23-.13.12-.2.51v.17l.11.3-.09.51v.23l-.1.19-.07.39-.24.52,0,.24-.21.51-.06.26,0,.44,0,.18-.05.06-.24.23-.08.19-.19.54-.12.69-.19.28-.11.36-.18.22-.24.15-.06.16,0,.61.25.36,0,.22,0,.46-.11.63-.15.46-.59.38-.13.67,0,.29.07.52,0,.42.12.75,0,.71,0,.92.16.42-.11.34v.28l-.34.69-.1.11-.24.15.06.45,0,.32.11.22-.09.3-.37.36-.06.16-.17.28-.19.33v.29l-.1.3-.09.44-.32.69-.12.4-.36.31-.16.22-.12.24-.13.13-.14.18,0,.41-.22.26-.22.22-.27.95-.22.34-.1.24-.24.08-.06.26,0,.18-.08.42-.11.26-.12.08-.22,0-.46-.12L217,311l-.08.2.1.34-.15.25v.26l.26.52.08.32,0,.21-.17.56V314l.06.28.42,1.48-.09.47-.4.86-.16.15-.41.23,0,.29-.19.43-.12.49-.36,1-.15.24v.35l.15.51v.31l.08.18.2.16.18,0v.08l-.14.05-.08.13,0,.12.22.1.21.07H217l.15-.07.37-.47.13-.06h.15l.15.08.26.31.14.07.12,0,.24-.09.17-.31.09,0-.12.36-.27.16-.36,0-.19.13-.09.11-.1.14.08.14.08.09.24.06.26-.06,0,.57.06.45,0,.11-.21-.45-.16-.16-.16,0-.15.08,0,.11.12.28.16.26H218l-.25,0-.18.39,0,.34.14.27v.21l0,.11h-.25l-.09.2-.07.19-.3.26-.08.33.18.45-.19.57-.33.06-.07.42-.07.26.25.19.27.16.34.29.34.13-.07.39-.15.35-.74.41-.37.08-.23,0-.11.3-.11.34.45.08.31.29.18.1.07.07v.09h-.1l-.44-.28-.13,0L216,331l-.38.23-.37,0-.13.37,0,.2.19.08.13.13,0,.32-.09.21-.08.44,0,.14v.22l-.14.29-.13.21-.17.16h-.2v-.1l0-.08.28-.3.28-.77,0-.27,0-.27-.08-.13H215l-.14.07-.15.51-.1.26-.26.15-.26,0h-.33l0-.08h.07l.59-.17.14-.18-.06-.29.14-.12.09-.15.22-.66.09-.17,0-.14-.19-.11-.07,0-.17,0-.14.09-.06.09,0,.28,0,.11v.08l0,.1-.13.12-.31.07h-.14l-.2.06h-.35l-.27-.08-.64.09,0,.33.14.25.14.17-.33.17-.38.32-.28.13-.14.13-.48.29-.12.24,0,.18.13.24.28.22h.14l.06-.07,0-.11-.1-.3-.17,0-.07-.05.06-.07.13-.09h.3l.4-.09.28-.21h.07l-.16.28,0,.18,0,.12.4.19.23.18.37.09h.07l0,0,0-.08v-.1l.07-.07.29.08.2.26.1.25-.14.27.08.26-.12.06-.42.28-.18.25.31.29.16.09.11,0,.11.07-.05.09-.19.12-.17-.05-.15-.18-.13-.07-.14,0-.12.13-.15.2.08.16.08,0,.28.1.11.08,0,.16,0,.15.25.08h.3l.3-.05.21-.15.16-.32.09-.2h.06l.12.6v.17l0,.14.08.07.13.24.22.12v.08l-.3,0-.64-.47-.83-.05-.3-.11-.38-.07,0,.43v.3l.14.24,0,.27.26.1.16-.09.21-.06.33.16-.11.06h-.15l-.09,0-.11.05-.25.19-.13.52-.05.67,0,.81,0,.13,0,.07.09.11.16.11.09-.25.06-.22.07-.18.15-.16,0-.2.09-.22h.19v.07l-.1,0-.07.08v.18l0,.23-.07.16-.08.14,0,.18.21.18.19.1.1.24-.12,0-.12-.09-.3-.13-.27,0-.13.05-.08.31,0,.16.3.36.19.13.13,0,.1.19-.13.07-.64-.19-.23.23-.43.32.22.21.17.24.1,0,.14.11.55.23.16.13-.48-.11-.05.33.06.09.12.22.22.32.19-.11.35-.63.15-.12h.05l-.09.2.15.17v.06h-.09l-.18.11-.2.37,0,.28h-.09l-.58-.37,0-.06-.07-.06-.24-.61-.06-.2-.39-.32-.16-.07-.17.12-.12.15.13.19.1.23-.09.12-.31,0-.54,0,.06.29.13.27.31.52.25.09.21.13.16.07.19.05.16.1.25,0h.19l.36.23.08.18-.13.78-.28-.13-.29.25.1.1.34.22.17-.06.07.1.09,0h.13l.2.18.11.3.12.23.27.1.42-.19.57-.31.69-.11,0-.17-.13-.13-.11-.05-.16-.19-.65-.35-.1,0-.07-.05.07-.06.09,0,.73.42.42.4.1.16,0,.23-.07.12-.22.13v.17l0,.08.15.38v.24l0,.07-.08.14-.14.09-.1,0-.07-.08.05-.07.24-.19,0-.15,0-.15-.12-.14-.09-.16,0-.16-.08-.08-.12,0-.1,0-.23.22-.42.19-.26.06h-.14l-.27-.07h-.15l-.23-.22H214l0,.17,0,.16-.1,0-.18,0-.41-.24-.19,0-.12-.1-.14,0-.07,0,.05.15,0,.09.11.32,0,.19h.12l.11.08.05.31-.09.17,0,.18.2.15.43,0,.25.09.44-.22.28.1.15-.16v-.21H215l.1.14-.17.18-.22.27-.23.11-.63.19.27.2.08.18.24.27.44.09.14-.07.07-.06,0-.12V351l.21-.29.28-.17.09-.19v-.18l.14-.11H216l.28.11,0,.13.08.07.28-.23.18,0,.86.11.3.09.31.15-.1.1-.08,0-.43,0-.37-.13-.29,0-.73.4H216v-.13l-.09-.07-.11,0-.23.14-.13.13-.05.18,0,.52-.19.14-.12.17.1.14.53.41.36.14.06-.25.1-.22.07-.09.41-.31.32-.17.49-.13,1.11-.58.32.15.15.11,0,.12,0,.09-.25.29-.25.19-.73.29-.16.7-.22.09,0-.08.09-.1.09-.16,0-.32-.17-.16-.29,0-.35,0h-.12l-.24.25v.2l0,.15.38.48.15.11.46.19.35.25.51.15.29.14.46-.12.19-.12.15-.58,0-.34v-.21l.1-.41.33-.71,0-.21.12-.32.25-.14.25-.09h.36l1-.33h.3l.31-.09.13-.11.27-.39.44-.15.22,0,.25.16,1.15.35.11-.13-.18-.32-.37-.54-.4-.85-.1-.11-.13-.13-.31.05-.26-.19h-.2l-.11-.08.22-.05.29,0h.34l.06-.16,0-.11-.05-.4-.11-.57-.1-.29-.14,0-.18.09v0l.27-.19.18-.22,0-.3.14-.45.12-.22.24-.3.41-.24.35-.13.26-.06.1-.09-.09-.19-.12-.16-.12-.08-.32-.08h-.47l.14-.08.53,0,.06-.2,0-.19,0-.1.18.32.14.31.16.18.29.19h.24l.5-.25.19-.16.1-.16.36-1.36-.05-.1,0-.15.51-.75.45-.33.3-.31.21-.15.55-.23.4-.25.44-.17.83-.61.17-.16.07-.11.22-.07-.09-.24-.15-.08-.34,0h-.15l-.11-.09.39-.08.34-.19.16-.15.1-.18.12-.58,0-.23-.15-.27-.29-.19-1.34-.23-.25-.13-1.18-1.26-.22-.31-.1-.26,0-.19,0-.27,0-.29.11-.21.37-.47.32-.49.72-.76.13-.07.63-.06.11-.06.09-.09.32-.19.34-.15.88.18.25,0,.08-.16,0-.17-.19-.22.13-.33.63-.42.17-.28.07-.2-.07-.32.17-.26-.09-.67.08-.39.07-.14.14-.11.47-.54.32-.24.27-.11.6-.14.13-.08.13-.13-.13-.06H235l-.39-.14-.79-.44.13-.22.34-.05.35-.23.34,0,.33.17.15.2,0,.27.17.28.19.07.73-.14.11-.14.06-.12.08-.34,0-.37,0-.31-.1-.24-.09-.1-.12-.1h-.21l-.41.11-.3.06-.06.08.4.07,0,.22-.09.09-.35,0h-.32l-.31-.06v-.15l.11-.13,0-.07-.05-.05h-.18l-.15-.12-.4-.17-.17-.17-.13-.33.15-.55,0-.44-.17-.82,0-.33,0-.39.05-.15.14-.18.33-.15h.1l.13.07,0,.08-.07.05.47.13.48.21.53.25.7.4.31.05.85.05.53-.06.35-.13.86-.32.21-.17.14-.33-.26-.55,0-.26.08-.38.21-.58.08-.13.07,0,.27-.11.15-.62,0-.25-.11-.08-.09-.13h.26l-.13-.17-.17-.12-.17-.06-.07-.23.1-.39-.12-.33.09-.12.3.05.23.28.45.13.5.13h.46l.56.08h.43l2.26-.16.32-.07,1.41-.19,1.76-.43,1.16-.55.21-.19.12-.41.26-.37.69-.66.84-1.1.14-.24,0-.27v-.73l0-.1-.06-.1-.39,0-.28-.15-.36-.39-.13-.28-.06-.31L251,310l.44-.47v-.34l-.24-.43-.48-.43-.42-.32-1-.58-.25-.37-.09-.18-.09-.38.11-.07.08,0,.1-.13V306l0-.16,0-.22-.12-.35,0-.21.26-.85.09-.4.11-.08.13,0h.13l.11-.14.07-.12,0-.92.06-.2.06.22,0,.44.08.32,0,.17-.14.21-.15.14h-.15l-.16.09v.18l-.16.56-.1.48.05.45.36.49.48.49.1.2,0,.14.09.08.6,0,.77.08.61.57.8.29.14.21.28.11.11,0h.16l.54-.18.4,0,.63.12.25.23.3,0,.39.12,1.15-.38.21-.14.21,0,.36-.34.49-.27.11-.3.47-.5.16-.38.12-.15.11-.08,1-.71.36-.29.25-.27.34-.58.43-1,.15-.25.2-.23.14-.11-.07-.18,0-.28V302l.19-.42.21-.2.08-.25.07-.23.1-.1.45-.18.46-.28.1-.11,0-.17.06-.15.19-.13.06-.39.09.07.06.12,0-.36.1-.28.14-.11.07-.1-.24-.29V298l.1.06,0,.15.1.21.28.13v.25l.19,0,.62-.26.17,0,0,.15L266,299l-.08,0-.13-.11-.07,0v.62l-.19.24-.37.18-.07.22,0,.11-.07.09-.25-.05-.13.08v.33l-.05.17-.23.29-.37.15-.53.46-.25,0-.09.07L263,302l-.21-.14-.14,0v.19l0,.14-.07.19.05.13.27-.27.27-.18.73-.4.68-.45.52-.47.39-.4.3-.36.74-1,.66-1.36.68-.93.56-.61.51-.42.54-.34.48-.24,0-.3.24-.27.11-.23.08-.28.08-.56,0-.59.17-.4,0-.25.1-.14,0-.16,0-.15v-.4l-.1-.4,0-.2.05-.2,0-.25-.09-.13-.08-.19.08-.08h.07l.13-.09.13-.53-.06-.14h-.14l0-.07.26,0,.33-.45-.05-.11-.15-.08-.38-.09-.06-.28.17.16.16,0h.18l.11-.08-.05-.21.12-.08.27.1.18,0-.14.2.08,0,.4-.36.21-.14.06-.21-.1,0-.06-.07.16-.06h.08l.1-.09.53-.34,1-.55.6-.52.51-.24,1.42-.57L277,285l.38,0,.27.11h.13l.07-.1,0-.15.22-.17.23,0,.58-.38.59-.05.11,0,.11-.08-.1-.11-.11-.06v-.22l.1-.1.57-.07.45.05.22-.12.39-.05.32.15.05.1-.24.06-.22,0-.16,0,.15.11.34,0h.42l.35-.08h.3l.08-.11,0-.13-.05-.11v-.08l0-.1.16,0h.14l0,.11-.09.16,0,.12.13.1.12.06.26,0,.52,0,.95.08.17,0,.13-.21.11-.11-.09-.12v-.2l.05-.14.61-.54.27-.12,1-.27.27-.16,0-.17,0-.7,0-.2.24-.56.3-.42.1-.27.14-.12.28-.11.45-.43.18-.29.07-.28.21-.17.16-.5.34-.46.33-.17.15-.16.12-.24.1-.37,0-.93,0-.43.25-.81.38-.53.17-.14.29-.12.28-.29,0-.14,0-.69.05-.29.1-.28.13-.58.17-.54.27-.65.22-.67v0l-.08-.59-.05-.66v-.67l-.05-.6.35-1.29-.05-.06-.1.2-.07-.12,0-.12,0-.48.1-.19,0-.1,0-.08-.05-.05-.12.05.07-.22.09-.23.17-.18.27-.25,0-.23.17-.25,0-.14-.13-.12h.13l.1-.06.13-.26.07.05.25.27,0,.41.11,0h.09l.36-.23.49-.49.15-.24.62-.73.53-.9.14-.31,0-.22.19-.28.08-.08v.11l0,.09-.06.08v.11l.09-.05.31-.37,0-.25.11.05.07-.06.36-.46.38-.28.28-.15.49-.17h0l.41-.51.37-.29.39-.44.09-.15-.07-.19.11.08.14,0,.38-.31.58-.6.43-.59.47-1.05.21-.64.14-.24v-.21l-.07-.26,0-.12,0-.11v-.08l0-.13.11-.28,0-.22,0-.55Zm-81.2-115-.09.08-.16.07-.15.12-.14.16-.19.12-.22.09-.22.13-.21.14-.41.2-.8.32-.1,0-.09,0-.18.07-.18.08-1.12.27-.77.25-.46.21-.42.27-.18.08H215l-.31,0h-.32l-.34.06-.22.05-.1,0h-.1l-.08,0-.23-.16h-.07l-.14,0-.16,0-.15.05h-.14l-.14,0,.12,0,.57-.06v0L213,139l-.06-.06h0l-.05.07-.07,0-.11,0-.1-.06-.1-.1-.35-.18-.09-.08-.12-.06-.19,0,0-.05,0,0,.19-.27.1-.1,0,0h.05l0,0v-.06l0,0,.11-.1.06,0,0-.09,0-.15.09-.19.08-.14.1-.09.1-.05.19-.05.05,0,0-.11,0-.19.07-.12.1,0,0-.06,0-.07,0-.06.12-.05h.09l.08,0,0,.07v.16l0,.05v0l0,0,0,0,.26.08h.11l0,.07v.15l0,.11-.08.06-.11,0h-.15l-.57-.1h-.21l-.09,0-.07,0-.07,0-.07.14,0,.24v.12l.09.06.25.12.2,0,.31-.07h.09l.08,0,.07.07.1.18,0,0,0-.15.07-.13.11-.1.22-.12.32-.14.24-.06h.22l0,0,.11-.08,0,0,0,.08v0h0l.06-.08.08-.18.18-.18.51-.32.19-.08.32,0,.44,0,.43.08.42.15.29.08h.16l.61.12h.07l-.08-.05-.41-.08-.13-.05H218v0l.13-.15h.06l.09-.05.09-.07.14-.08.25,0,.37,0,.37-.06h.1l.07,0h.14l.43,0,.25,0,.18,0,.11.05h.13l.26-.1,0,0,0-.08L221,136,221,136v-.1l-.06-.08,0,0,.32.11,0,0v0l-.06.09v.13l.06.16,0,.12Zm-1.47-1.75.1-.14,0-.1.06-.06.15-.07,0-.06.08,0h.1l.2-.1.3-.2.22-.12.16,0,.4,0,.26-.05h.18l.11,0,.17,0,.23,0,.31,0h.39l.25,0,.11,0,.21,0,0,0,.05,0,.21,0,.06,0v0h-.05l0,.05.1.08.16,0,.2,0,.14,0,0,0h-.07v0l.05.06h0l.17-.06v0l-.07.09,0,.06.11,0,.2,0,.26-.1.11,0,0-.06h-.29l-.06,0v0l0-.09.21-.11.09-.07.06-.08h-.06l-.17.07-.15,0h-.13l0-.09.08-.16-.06-.07-.32.06-.05,0v0l0,0v0h0l-.08,0v0l0-.06,0,0h-.1l-.13,0-.3.1v0l.09-.07.31-.06.15,0,.09,0,.07,0h.05l0,0h.12l.18-.05.08,0,0,.1,0,0,.13-.08.08,0,0,0-.27.12-.08.06v0l0,.06h.1l.44-.24.21-.07.21,0h.2l.17,0,.15-.07.59-.14.25-.09.24-.18h.05l0,0,0,.06,0,.07-.09.08-.88.48-.25.17.08.12v0h.05l.18-.08,0,0,0,0v.07L227,134l0,0h.15l.06,0-.06.07-.08.05,0,0-.12.13-.06,0,0,0v-.06l-.11.06v.05l.05,0,.05.08,0,.11v.22l0,0v0l0,.05,0,.05,0,0-.07.05-.12,0h-.18l-.2,0-.23.12-.16.11-.09.1-.06,0,0,0-.3.07-.11,0,0,.05h0l0,0-.21,0-.39,0h-.31l-.22,0-.2,0-.16-.12-.26-.11-.68-.15-.58,0-.49,0-.76.13-.33.09-.17.07-.1,0-.13,0-.26,0-.22-.08-.18-.06-.08-.13v-.05Zm-24.89-10.46.09-.07.9-.53.57-.39.94-.74.24-.14.53-.23L199,122l.42-.11.36-.13.24-.1.1-.08.08,0h.06l.12,0,.22-.19,0,0,.19,0,.07-.09.05-.12.11-.19.07-.08,0-.09,0-.1,0-.09,0-.08.25-.11.66-.17,0,0-.13.16-.14.32h0l0,0,0,.07h.09l.23-.07.1,0,0-.08,0-.16.05-.09h.06l.05-.07,0-.14.05-.08.08,0,0,0V120l0-.18,0-.09.08-.12.09,0,.13,0,.08.07,0,.12v.1l0,.07-.14.14-.38.3,0,.1,0,0v.07h0l.08,0,0-.06v0l0-.06.07-.07.06,0,0,0h.06l.1-.06h.19l.21-.22.07-.12v-.12l-.07-.12-.15-.14,0-.13v-.07l0-.08,0,0,.1,0h.08l.07,0h.12l.1,0,.1.11.42.14.15.07.18.07.05,0,0,.06.07,0h.11l.12,0,.18.11.18.08h.44l.25.06h.14l.14-.06h.13l.1,0,0,.05.07.07h.26l0,0,.07.08v0l0,.07.09.15v0l.06.07.05.13,0,.21,0,.13,0,0,0,0,0,.22.09.25.15.26.21.25.26.17.33.11.3,0,.26,0h.35l.43,0,.22,0v0l0,.08-.11.1,0,.07v.1l-.09.11,0,.07v.06l0,.06-.07.08,0,.12.11.15.15.13.17.1.11.1,0,.1,0,.06h.05l.05,0,0,.08-.06.13-.16.19-.07.12v.06l-.14.21,0,.08,0,.06.19.1.06.08h.05l0,0,.08,0h.11l.11,0,.09.07,0,.07,0,.06-.05,0-.16,0-.09,0-.06.07,0,.19,0,.09h0l0,0,.05-.08h.05l0,.06-.07.12-.18.18,0,.06v.08l.12.17h.05l0,0,.06,0h.18l.23,0h.15l.09.07.06.09v.08l-.06.11v.09l0,.09.11.05.21,0,.1,0,0,.07h0l.37.06.13,0,0,0,.23.08.88.21h.27l.36,0,.11.09.05,0h.6l.06.08.24.1.17,0,.21,0,.4.07.09,0v.12h0l.05,0h.08l.06,0,0-.06h.06l.14.08v0l-.21.08,0,0v0h.06v0l-.07.05.06,0,.2-.05h.11l.29.08H217l.08,0,0,0,0,0h0v.06l0,.09.13,0h.43l.14,0,0,0,0,.06.11.12,0,0,0,.11.07.07,0,.06v.05l0,.06.06.12.09.09,0,.07v.09l0,0h.09l0,0v-.07l0,0,0,.12,0,.18v.11l.06.16.09,0,.06.06.19.06h0l0-.1,0,0h.07l.1,0,.07.06,0,.08,0,.11-.13.09,0,.09,0,.06,0,0,0,0,.05,0,.07.08v.06l0,0-.12,0v0l.13.1.09.14,0,0,0,0v.07l.05,0,.14.07.05.13,0,.08,0,.09,0,0,0,0v-.08l.07,0v.05l-.05.09v.08l.06.06h-.08l-.23,0-.09-.09,0,0h-.07l0,0,0-.08,0,0h-.14l-.14,0-.1.06v.08l.05.09.11.09,0,.15,0,.2-.07.14-.1.06-.29-.07-.46-.22-.26-.17-.1-.22,0,0-.26.05-.14.08-.12.11,0,0,.07-.2,0-.12v-.05l0,0-.09,0h-.12l-.19.08,0,0v0l.2-.14.07-.08v-.07l0-.07.06-.06v0h-.08l0,0-.1.11-.12,0v0l0-.06,0,0-.08,0,0-.08,0,0-.1-.05v-.14l0-.11-.06-.09v-.08l.08-.13,0,0-.21,0-.4-.05h-.21l0,.07,0,.06.11,0,.07.06,0,.06.07.06.07.11.09.18.07.08h.08l0,0,0,.17,0,.11.07.1,0,.11,0,.18v.19l0,.11-.12.13-.08.11,0,.09-.06.06-.09,0-.1.06-.1.09-.07.12,0,.14-.09.15-.14.14-.07.18,0,.2-.07.85v.21l0,.21-.07.2-.11.15-.13.11-.14.08-.13,0-.13.09-.13.12-.2.1-.27.09-.22,0,0-.05-.05-.11-.08-.51-.09-.89-.1-.57-.09-.22-.13-.17-.18-.13-.14-.05H213l-.17.08-.29.06-.12,0-.07.07-.09,0h-.1l.07,0v.07l-.21.29-.05.07h-.12l-.1.05-.11.15-.1,0-.14,0-.22-.11-.14-.1,0-.09v-.12l.05-.13v-.1l.11-.21.12-.07h.18l.1,0,0-.05,0,0,.09,0,.09-.13.08-.25.08-.14.06,0h0v0l.21-.15.09-.11v-.12l0-.34,0-.22,0-.09v-.26l0-.22-.21-.25,0-.08v-.08l.05-.09h.1l.17.08h0l0,0,0-.08V130l0-.07h0l-.08-.14v-.07l0-.07,0-.06-.12-.12-.23-.12-.55-.24-.09-.08-.14-.06-.17,0-.11-.07,0-.11-.07-.1-.1-.1-.17-.07-.24,0-.24-.11-.25-.18-.16-.07-.07,0h-.13l-.17,0-.07,0,.05.07-.05.09-.15.11-.1.13,0,.13v.12l.06.11.1.07.12,0,0,0-.08.05-.14,0h-.19l-.2,0-.21.09-.12.09,0,.08,0,.12v.3l0,.12-.1.2-.13.27-.15.16,0,0,0-.09.13-.26,0-.12V130h0L208,130l-.06.11v.06h0l0,.07-.08.14-.06,0,0-.09v-.11l.11-.22,0,0,.06-.14,0-.1,0-.11,0-.09.07-.08,0,0-.1,0-.17.16-.21.28-.17.11-.1,0h-.09l-.07.09-.08,0h-.07l-.06.09,0,.21-.09.11-.23.05,0,0v.08l0,.1v.2l-.06.29-.1.26-.13.21-.15.17-.23.23v.05l.09.19,0,.15v.32l-.23.33v0l.18.59.16.43,0,0,0,.17.09.33,0,.33,0,.31,0,.31L206,136l-.11.27-.13.26-.13.2-.25.34-.13.22-.14.18-.13.13-.23.14-.59.25-.18,0h-.19l-.21,0-.12,0,0-.06h0l-.06-.05-.07-.06-.08-.12-.08-.24-.07-.35-.07-.22-.08-.07-.06-.11-.05-.15v-.32l0-.5.05-.34.06-.18v-.14l-.06-.1,0-.12v-.14l0-.1-.05-.06v-.07l0-.09v-.06l0,0v-.05l0-.06,0-.21,0-.12.05-.13.13-.23.05-.11,0-.12.07-.15.17-.3v-.07l0-.15v-.11l0-.14.06-.17.1-.2.13-.15.15-.12,0-.13,0-.16,0-.24.11-.3.12-.23.11-.14.08-.14,0-.14v-.07l-.07-.07-.07-.1-.12,0-.16.06h-.1l-.16.13-.15.23-.11.1-.13.06-.11.07-.07.08h-.08l-.1,0v-.12l.08-.19.11-.17.22-.28v-.07l.05-.08.31-.11.13-.09.05-.12,0-.19,0,0,0,0L204,129l.24-.28.22-.29.21-.3.14-.16.08,0,.07-.09.12-.29.08-.12.05,0,0,0-.06.16v.13l0,.18.07.06.12,0,.1-.11.1-.16.09-.07.11,0h.08l.08,0,.13,0,0,.07,0,.13,0,.06H206l-.08.06-.1.14v.11l.08.09h.05v-.08l0-.07.15-.13,0,0,.27-.1.1-.07,0-.09.15-.17.13,0H207l.17,0,.16.07h.09l0-.06.15,0h.26l.19-.07.14-.14.16-.06h.19l.26.07.31.14.26.16.32.33.09,0h.06l0,0v0l0,0,0-.13v0l.11-.18.1,0,.1,0,.06,0,0,.07,0,0h.12l0,0,.21,0,.74.15h.1l.06,0,0,0,0-.06-.19-.12-.05-.07v-.07l0-.06,0-.05-.1-.06-.25,0,0,0,0,0L211,127v-.1l0,0,0-.16-.05-.11-.09-.17,0-.06-.06,0h-.06l-.08,0-.09.06-.13.07-.13,0-.08-.11-.13,0-.17,0h-.15l-.12-.07-.25,0,0,0v0l0,0,0-.12,0-.2,0-.13.07-.08-.09,0h-.26l-.29,0-.34.09-.37,0-.38-.07h-.29l-.33,0,0,0-.21.07-.37.15-.28.14-.23.17h0l-.05,0-.11-.06h-.12l-.12,0-.13,0-.12-.14-.11,0-.12,0H205l-.38-.06,0,0,0-.14,0-.06-.07,0-.11-.16-.24-.39-.07,0-.2-.13-.2-.07-.51-.11-.11-.06h-.07l-.36.17v0l0,0-.06.07-.05,0,0,0,0-.06,0-.12.05-.2v-.13l-.07-.07,0-.07,0-.08-.06-.08-.12-.06,0-.07,0-.08v-.06l0,0-.14.06-.25.14-.17.13-.09.11-.13.06h-.17l-.14,0-.25.17-.18.08-.3,0h-.41l-.35.1-.28.17-.34.14-.4.1-.27,0-.13-.05-.16-.1-.23-.17,0,0,0,0v0l0,0-.32.09,0,0,.13-.14,0-.11v-.1l.06-.12.12-.15.05-.1,0,0-.11-.1h-.1l-.12,0-.39.19,0,0-.11,0h0l-.3.17-.3.09-.71.12h-.17l-.14,0-.17-.11-.06-.07Zm3.49-.35,0,0v0l0,0h0l0,0,0,.08,0,0Zm-.27.26,0-.09v0h-.07l-.16,0v0l.14,0Zm4-.46,0,.11.07.08.29.08,0,0h0l-.05,0,.09-.1,0,0,0,.11-.06.08-.07,0v.08l.06.1.07,0,.1-.13.27-.2v0l0-.08.45-.26.09-.08,0,0-.08-.06v0h.48l.1-.05-.1-.09-.17-.06-.24,0h-.24l-.44.1-.16.07-.36.28Zm1.44-3.84h0l.07-.06.12,0H204l.09,0v0l.07,0,0,0v-.08l-.09-.06-.21,0h-.17l-.13,0-.07.07v.18Zm-2.45,2-.07.08v0l.08,0h.16l.23-.06.09,0v0l-.07,0v0l.09,0,.61-.23.07-.07v0l0-.06.21-.13,0,0-.19,0-.35.12-.84.33-.1.06v0h.06Zm-3.19,2.45-.28.13-.07,0,0,0h.05l.12,0,.06,0v0l.06,0,.13-.06v0Zm13.13,2.44h0l0,0,0,.07.09.1h0v-.1l0-.06Zm82.56,136.27-.05.2-.22.15v.13l.08,0,.31-.2v0l0-.11Zm-15.48,22-.06-.06-.34.34.08.09.23,0,.08.07v-.11l0-.08,0-.06,0-.09Zm2.35-1.21-.06-.07,0,0-.08.08-.18.11.07.09.21,0,.14,0h.12l-.06-.06Zm11.18,78,.07-.23-.15,0-.14,0-.08,0-.07-.28-.1-.22-.12-.07-.09-.22-.08-.11-.13.07-.05.07h-.08l-.18-.18-.23,0,.1-.2-.18-.24h-.12l-.09,0-.09-.05-.16,0-.17.09-.19-.16-.27,0-.27-.17,0-.07h-.32l-.85-.06-.15,0,.21.08.61.08-.16.09v.16l.11.1h.28l.68.38.15.13.15.09.25,0,.07.08.05.11.17.19.21.1.25.07.07.07,0,.1.25.38.11.25.25.23.07,0,.32-.06.15-.11.15-.07-.22-.17ZM271.9,128.08l-.09.09-.1.06,0,0v.07l-.07.1-.14.15,0,.08h.1l.11-.08.19-.33ZM246.66,349.79l.1-.12.23,0-.21-.33-.11-.06-.48,0-.11,0-.07.11v.13l.07.13v.08l-.07,0-.41-.21-.06-.08v-.16l.11,0,.12,0,.07-.12-.09-.14-.16-.05-.4,0-.31-.18h-.14l0,.24-.46.33,0,.27.06.17v.1l-.08,0h-.17l-.18.06-.11.11-.57.35.06.13-.25.28,0,.15.22.3.27.22.14-.3.18,0,.19.06.2-.06-.23-.44.13,0,1,.32,0-.2v-.08l-.07-.17.73-.14.26-.09.15-.15.31,0,.35-.07,0-.07L247,350l-.15-.1Zm-36.2-221.73,0,0-.26-.06v0l.14.15.1,0h.06l0,0,0-.05v-.06Zm60.45,164.59-.1.12-.09.17-.06.52.14-.09v-.13l.21-.3.08-.25-.07-.12ZM221.21,135.9l-.15,0-.05,0,0,.07v0l0,0h.06l.07-.08,0,0Zm24.32,215h-.07l-.1.07,0,.12.16.09v-.24ZM207.08,129.5l-.11,0v0l0,.12,0,0h.05l0,0v-.08ZM242.74,351l0,.06v.13l0,.11,0,0,.13,0,0-.14-.14-.12ZM208.15,128l-.08.09-.08.21,0,.11.05,0h.07l.09,0,0-.09v-.23l0,0ZM205,129l-.09.05-.08.13-.1.08-.11,0-.09.08-.05.14-.08.12-.18.19,0,.05v.07l0,.11.05.06.08,0h.07l.21-.21,0,0,0,0,0-.08.09-.14.06-.07h0l0,0,.05-.06v0l-.05-.06v0h0l0-.05v-.12l0,0,.06,0,0,0,0-.08,0-.06Zm22.24,4.34.07,0v0h-.09l-.05,0,0,0,0,0Zm-.29.63v0h-.06l0,0V134h0Zm-13.61,4.42,0,0,0,.12v.05l.1,0,0-.06,0-.11Zm13.13-4.77,0,0,0,0h.09l.13-.08,0,0,.05-.08.2-.05,0,0h-.42l0,.06-.07.06,0,0,0,0Zm-.53,0,.09,0,.11-.1v0l-.25,0-.08,0,0,0,0,0Zm-20.57-4.88h-.1l0,0-.07.14,0,.06.11,0,.06,0,0-.11v0ZM53,80.36l.47-.62h-.11l-.46.12-.22.18h-.1l.1.31.16,0Zm76.32,37.72,0,.11h0l0,0v0l-.06-.16-.07.05ZM44.69,54.83l0,0-.45.13-.24.12v.06l.08,0,.36-.14ZM194.1,81l0,.08.18.18h.08l.1-.07,0-.07-.16-.15ZM164.54,61.78l.05.2.18.23,0,.1.1,0,.14-.16.08-.26-.33,0Zm0-1.49.15.17.14.08.06.14,0,0,.13-.28,0-.12,0-.11-.05,0-.11-.13,0-.13v-.25l-.11-.16-.18.11v.21l-.07.15Zm-34.29,55.06,0-.07-.07-.1-.06-.06,0,0-.09.08-.13.18-.06.11v0l.1.15.07,0,.07,0,0,.06V116l0,.07.06.1.13,0,.06,0,0,.09.05,0h.06l0,0v-.12l-.26-.27-.05.14-.08-.35,0-.12-.05,0-.15,0v0Zm-1-.72-.17-.21H129l0,0,0,.16,0,0,.09.06.22.07-.05-.09Zm.9,2.56V117l0,0-.06,0h0l0,.08v.12l0,.06.11.07Zm0,.55v.07l0,0,.08,0,0-.06-.09-.14-.05-.12h0l-.05.17,0,.17.09-.08Zm139.19,1.88v.06l.06,0h.06l.08,0,.07,0,.07-.09v0l-.12,0-.16,0Zm2.89,2.9-.14.16-.12-.09,0,0,0,.13v.17l0,0h.07l.55-.15-.08,0-.14-.18Zm3.78-62.67-.26,0-.13.16-.21.68.09.19.12.13.14.09.48.15.76.11.28.06.15.09h.2l.07.13.13.06.12.11-.49.06-.32,0H277l-.05.09.11.15.14.11.3.15.21.15.08,0,.37,0,1.21-.22.49,0,1.4-.35.28-.2.19-.19V61.5l-.15-.12-.05-.08.06-.06,0-.07V61.1l-.05-.15-.06-.1-.72-.26-.66-.35-.72-.78-.38-.27-.16-.07-1.29-.38-.75-.14-.71.17-.17.13-.07.1,0,.1v.11l0,.18.07.12.23.17.67.31-.09.06Zm-5.72,56.59.06-.18-.15,0-.12.11-.05.1,0,0h.09Zm.67,6.49H271l0,0v-.06l-.05,0h-.09l0,.05.08.17.06.06.09,0,.08,0,.33-.13,0-.08,0,0-.12,0Zm-11.51-19.15-.16-.1-.08,0-.15,0-.07.08,0,.08v0l.11.06.32.07,0-.07.09-.11ZM129.62,114.63h0l-.05,0-.06.14,0,.07.06.07.11,0,0,0,0-.06-.09-.14Zm90.55-2.16.19,0h.09l.07,0,.06-.06,0-.08.1-.12v0l-.13,0-.65.19.09.1Zm54.08-63,.13,0,.09,0,0,.06.06.09.19,0,.1.12.14.07h.09l.55-.41.26-.14.31-.24,0-.12-.35-.11-.06.06-.41.11-.19,0H275l-.19-.06h-.68l-.18.1-.3.11.14.21.2.06Zm-4.29,68-.08-.08-.05,0-.3,0-.08,0,.08.14-.08.1-.35-.13-.07-.16-.25,0-.39.19-.67.19-.21.09-.14.07-.15.14-.15.35,0,0-.34.24-.12,0v0l.05.08v.07l-.12.22-.18.17-.24.1-.07.05-.05.07v.07l.06.07.17.1-.13,0-.19,0-.07.06-.16.2-.08.1-.35.69-.25.45-.51.84v.08l.05.19.18.26v0l-.13,0-.21-.17-.11,0-.2.1-.17.16-.07.13,0,.21.05.13.19.09.24,0,0,0-.12.07-.13.27,0,.09.08.09.1.07,0,0-.1,0-.26-.22-.27-.07-.08,0-.1,0-.2.2-.13.27-.23.38-.12.32-.07.06-.26,0-.06,0-.06-.08.05-.1.15-.14h0l-.48.28-.23.17V125l.47,0,.46,0,.24,0,.23.07h.34l0,0-.36.16-.21.06-.24.21-.55.4-.68.38-.16.15,0,.11v.06l.06.35.11.27.08.09.2.1h.37l.69-.07.22,0,.17-.07.2-.11,0,0,0,.11.19,0,.65,0,.09,0,.45.12.39,0,1.07.23.37,0,.11-.06.55,0,.29-.08h.13l.08,0,.17-.26.07,0,.06.06.14,0,.22-.06.13-.06,0,.08-.09.51-.46.14-.09,0h.09l.46,0,.1.05.08,0,.4.12.16,0h.08l.06,0,.06-.13.06-.24.06,0,.34.06h.26l.08.07.18,0h.11l.23-.07,0,.06-.16.17-.23.12-.47.14-.38.47-.1.09-.2.14-.25.09-.34,0-.14,0-.18.13-.08.11v.11l.13.12.07,0,.12,0h.29l.25-.06H269l.16.06h.18l.13-.08.26-.25.09-.15,0-.18.53-.51.11,0h.12l.19,0,.17-.11.23-.22,0,0-.19.28-.05.13.16-.07.07-.05.06-.09.08-.24.39-.53.05-.2.06,0,.29.17.11.14.08.29,0,.36,0,.13.05.06-.05.14-.23.3-.29.44-.16.3,0,.13v.09l.07.12.07,0h0l.14,0,.33-.23.19-.17.18-.2.13-.11h.09l0,0v.09l-.08.23.05.14,0,.17-.09.54.05.11,0,0h.07l.34-.17h.18l.08.05.07.11.1,0,.11,0,.1-.06.08-.1.17-.24.18-.38,0-.1v-.09l0-.15.54-.81,0-.11,0-.2,0-.19-.05-.19v-.14l-.06-.07h-.08l-.08.1-.14.27-.16.16-.25.17-.14.06-.06-.09,0-.07v-.36l.07-.21.1-.2.27-.41.1-.13.18-.16,0,0,0,0-.08-.05-.36.18-.42.16-.51.63-.22.19-.15,0-.19,0-.08-.09-.05-.12,0-.16v0l.37-.29.09-.12.05-.11,0,0-.29,0-.16,0,.23,0,.11,0v0l.29,0,.06,0,0-.18-.09-.1.17,0,.27-.14.16-.15.07,0,.16,0,.09,0,.1-.06.17-.19.06-.09,0-.15v-.17l0-.06h0l-.15.05-.2.13-.12,0-.17,0-.11,0-.31.19-.18-.09-.2,0-.14.11h-.11l-.17,0-.36.1,0,0,.1-.05.39-.15.2-.09.05-.13.16-.2,0-.06-.18-.06h-.21l-.16-.07v0l0,0,.16-.07.08-.07v0h-.21l-.31,0-.13,0,.56-.23.13-.09,0-.06,0-.11.12-.1.19-.1.21-.15,0-.14v-.19l-.09-.16-.27-.19-.22-.13-.19-.05h-.83l-.07.06-.14.15,0,0v-.16l0-.18,0-.16h-.07l-.17.08-.16.12-.15.14-.14.07-.13,0-.14.07-.16.11-.07,0,0-.09,0,0h-.08l-.25.12-.15.11,0,0V124l-.18.1h0l.06-.11,0-.12.2-.25.08-.17.07-.2v-.19l0-.08-.08,0,0,0,0,.27,0,.05-.12,0,0,0v-.15l0-.1v0l-.24,0-.4.05-.27-.24-.47.12h-.1l.43-.3,0-.18,0-.06-.06,0h-.16l-.16,0-.15.09h0l.23-.21.69-.28.29-.15.13-.11.06-.12,0,0-.31.06H269l-.21-.16-.11,0-.32.07-.18.1v0l.09-.14,0-.13,0-.11-.06,0-.15,0-.17.2-.13.2-.12.09-.15.06-.25.21-.33.34-.14.09,0-.16v-.1l0,0,0-.11,0-.06.11-.12.09-.12v-.23l.05-.1.09-.14.35-.37.13-.16.07-.21v-.08l.16-.09.42-.42.14-.17.05-.22,0-.07.06,0,.26-.13.2-.18.17-.33.05-.14v-.22l0-.07-.06,0H269l-.19,0-.07,0-.06-.08,0-.1,0-.18.19,0h.44l.21,0,.1,0,.11-.12.18-.26Zm-55.6,107.49v-.13l0-.06-.08,0-.08.06,0,.11.1.09Zm-1.15,106.56v.2l.25,0,.19.1.2,0,.13-.1.15-.09,0-.1,0-.1L214,331l.1-.47,0-.27-.24.06-.07.12-.11.07v.36l-.16.24-.19.18Zm2.09-4.61-.23.06-.36,0,0,.13.05,0,.33.11h0l.07-.09.15,0h.09l0-.13-.06-.1ZM129.85,114.38l0-.06-.23-.12h0l-.13.06-.06.07,0,.07.19.1v-.05l0-.14h0l.09.1h.06ZM209.29,235.9l.1-.25.05,0,.12,0,.23-.18-.17-.12-.17,0-.14,0-.17.11-.07.12-.07.28v.09l.05,0,.2,0Zm4-23h0l-.07.08,0,.09.1-.08ZM214.54,325l-.19.25,0,.11.06.08.23.16.25.12.26,0,.14.05h.15l.16,0,.08-.13v-.33l.22-.06.23-.12.16-.19.09-.13-.14-.24-.1-.22-.21-.16-.18-.22,0-.09.17-.09.13,0,0-.05.18,0,.17-.05-.1-.19v-.2l.2-.07,0-.21-.06-.07,0-.3-.07-.17v-.21l-.42-.08-.62-.25-.06.06.06.09,0,.09-.1.27,0,.13,0,.12-.21.26,0,.12v.15l0,.13,0,.14,0,.11.07.27-.16.71Zm1,3.77h-.07l-.12,0-.09.13v.1l0,.08.12.18,0,.12.05.09h.06l.07,0,.05-.18V329Zm-1.72.38.15.31.13.13.14.39.13.22.21.15,0,.33.17.06.35,0,0,0,0-.11h.13l0,0,.06-.18,0-.09v-.1l-.11-.23v-.14l0-.09-.06-.27-.08-.29L215,329l-.16-.18,0-.13,0-.11.26-.1h.16l.11-.1.08-.17v-.13l-.23-.11-.08-.14-.07-.13h-.2l-.19.1-.07.22v.29l-.07.06h-.17l-.18-.09-.26.08-.17.08,0,.29-.3.14Zm2.5-.36-.2.15-.09.11,0,.22,0,.12.08.16.25.09.52-.16.2-.16.12-.18.19-.21,0-.11-.13-.14-.37-.21-.36-.15-.11,0,0,.1v.12l-.05.12Zm-2.68-2.68-.09-.05-.15,0-.06.05v.07l.06.08.3,0v-.07ZM86.73,241.83v.22l.08,0,0-.05,0-.06,0,0Zm59-79.36v-.17l-.07-.16-.18-.18-.16-.05,0,.25,0,.11.15.25.45.51.2.16,0,0,0-.18,0-.39Zm4.07,7.61-.1,0-.12.45.05,0,.17-.32.08.06v0l0-.08,0-.12Zm-6.53-13.37h0l0,.09.12.12h.07l0-.05,0-.07ZM148,163l0-.08-.29.06-.1.07-.18.6,0,.11.32.19.16,0,.19-.51-.07-.28Zm64.6,166.54.06,0,0-.05,0-.12-.06-.07h-.06l-.07.05,0,.14,0,.08Zm1-116.43.05-.08.1,0,0-.09,0-.21,0,0h-.07l-.1,0v.17l0,.05Zm-62.89-40.64-.19-.12h0v.08l.08.18.13.14.1,0,0-.25Zm1.32,1.66,0,.29.09.12h0l0,0v0l-.17-.37ZM271,289.84l-.28.24.1.29,0,0,0,0,.09-.14.09-.21ZM118.63,101.35l-.21-.2-.23-.16-.22-.15-.13,0-.07.1-.07.28-.06.13-.16.19,0,.08,0,.07.15.22v.19l.12.2.23.24h.15l.14-.19,0,0-.07.45,0,.12v.56l.09.19.13-.13.12-.3.15-.17,0-.29,0-.89Zm-.84,1.19-.37-.39-.06,0-.06,0,0,0,0,.08,0,.14.18.34.09.1.26.32.07-.12v-.25Zm1.34.67.08-.24.14-.53v-.12h-.24l-.18.23,0,.37v.16l0,.09,0,.08-.07.15.17,0,0-.06ZM106,273l0,0,0,0V273l0,.07,0,0,0,0V273ZM122,110.85l-.09-.18-.07-.1-.18-.09-.21.08,0,.15,0,.05-.07,0,0,0,0,.05.25.23.14.08.12,0H122l0,0V111ZM117,101l0,0-.06,0,0,0,0,.14,0,.09.12.22.08.08.08,0,0,0,0-.17Zm-1.14-1-.32-.21-.4-.23-.12,0-.15.23.21.17.2.25.31.19.41.51.13.05h0l.18-.13,0-.07-.36-.57Zm-.69-1.1,0,0,.11,0,.15-.15.07-.1-.11-.22,0,0-.16-.12-.11,0-.1,0-.33.2-.11.11,0,.08v.08l0,.09,0,0h0l0,0v-.09l0-.08,0-.05h.07l.1.07L115,99Zm2.41,2.26v-.4l0-.1-.09-.1,0,0,0,.09-.14.19,0,.11v.08l0,.07.06,0,.21,0Zm-3-4.48-.27-.06,0,.05-.08.2,0,.12v.06h.05l.26-.16.1-.09,0-.06v0ZM123.06,112l-.19-.06-.06.11v.11l.08.06.25,0,0-.24Zm10.68,40.62-.1,0h-.1l.05.12.13,0h.09v0Zm-1.7-2-.1,0-.07,0,.17,0h.11l-.09-.09Zm-5.55-36.11.52.25.4.16.66.19,0,0,.08,0,.12-.14.09-.06.22.07h0l.07-.11-.14-.41,0-.17,0-.08h-.06l0,0,0,.19-.06,0-.22-.66-.23-.35-.11-.37-.07-.1-.16-.15-.11-.15-.38-.23-.62-.26-.3-.16-.37-.3-.18-.31v-.08l.06,0,0-.13-.25-.33-.31-.47-.15-.26-.19-.42-.11-.18-.1-.07-.17-.06-.46-.1-.74-.25-1-.25-1-.41-1-.58-.42-.14-.38,0-.29.06-.13.08-.11.13,0,.13.16.25.25.26.16.07.19,0h.21l.28-.08,0-.11v-.08l.46.06.12,0-.14.11v.11l.06.19v.06l-.18-.17-.12,0h-.49l-.07,0-.14.26,0,0,.2,0,0,.06v.22l-.1.16v.06l.1,0h.1l.2-.1.43,0,.07.09.06.13.09.09.13,0,0-.06,0-.09,0,0,.06,0,0,.06,0,.07V110l-.07.15,0,.11.06.11.09.09.14,0,.15,0,.06-.05.06-.08,0,0,.11.07.22.07.12.08.16.32.07.08.06,0h.13l.12.13.11.05h.44l0,.06-.6,0-.21.06,0,0,0,.09v.33l.06.07h0l.12-.13h.06l.22.2,0,0,0-.11.06,0,.15.08h.14l.05,0,0,.08.06,0,.18-.07v.06l-.12.23.06.11h.07l.18-.06.08,0,.13.17.06,0H124l0,0-.13.11-.24.07,0,0,.33.19.23.22.11.06h.06l.21-.14.4,0,.51,0,0,0,.08-.12.08-.16,0-.18h0v.19l0,.15-.08.14-.19.18-.44.32,0,0,0,.12.21.15.3.17.35.18Zm1.78-.94-.05,0,.1.47,0,.06h0l.1-.06h.06l0-.1-.12-.15,0-.06Zm4.37,37.2h-.38l.16.24.11,0,.15,0,.13-.12,0,0Zm1.08.08,0-.06-.24,0-.41-.15-.07,0,0,.09v.09l.15.07.52,0Zm-7.29-39.47,0,.05.07.1.19.13.44.25,0-.06-.3-.39-.22-.18-.25-.12-.16,0,0,0,0,.07Zm-1.32-1.07,0-.14.16-.16.09-.15,0-.13-.06-.15,0,0-.1-.15-.13-.08H125l-.1.16,0,.11.17.5ZM119.5,106l.13.05h.08l0,0,0-.09,0-.22,0,0-.1-.2,0-.08-.06,0-.2.1,0,0v0l.09.33Zm6,4.11,0,.31,0,0,.16-.1v-.17l0-.09-.09-.15v.06l0,0Zm3.17,3.59v-.06l-.21-.14-.4-.41.08.16.2.26.31.22ZM107,90l-.07-.24-.14-.63-.09-.31-.11-.26-.15-.34-.18-.21-.13,0-.42-.34-.22,0-.08.05-.19.26,0,.1-.1.1-.12,0-.23,0-.08.1v.15l.08.39,0,.12-.07.14.32,0,.11-.1.27-.49h.09l.16.19,0,.32.15.11.11,0,0,.06-.26.26,0,.1,0,.13,0,.09.08.07.26-.05,0,.06,0,.23.12.07.16.14h.18l.1,0v0l-.13.15-.07.06,0,.09v.13l0,.18.18.41.08.13.1.12.14.09.06,0,.07-.22,0-.38,0-.26,0-.1.06-.06,0-.07v-.33Zm3.22,1.42v.07l.28.26.13,0h.1l.24-.1,0-.07v-.15l0-.06v-.07l0-.07-.13,0-.41,0-.07,0-.18.13Zm-2-2.91.37-.08,0,0v0l-.12-.25.12-.11v-.27l0-.1-.23-.31-.34-.54,0-.24v-.22l0,0h.09l.07,0,.06.08v.09l.13.32.07.12.06.06.07.13.12.33.19.18v0l-.07-.24-.06-.25-.1-.26-.19-.38-.32-.47-.39,0-.52-.11-.09-.19-.2-.3-.17-.12,0,.08,0,.2.07.18.09.18.06.21,0,.25.06.78.05.29.12.22.21.27,0,.19-.23.54-.1.1v.17l0,.14.07.1.07,0,.17,0,.39-.23Zm3.21,4.19.07.06.17,0,.17,0h.07l.08,0,.08-.48.13-.38-.26-.44-.2-.31-.13,0-.3.45-.07,0-.15.23-.16,0,0,.07v.2l0,.15.12,0,.31,0,.09.09,0,.14Zm-.35-2.15-.36-.35-.09.28-.08.17-.07.08,0,.12,0,.12.09,0,.27,0,0,0,.07,0,.17,0,.14-.06,0-.18ZM108,85.77l0-.08-.17-.18-.24-.16-.27,0,0,.06.13.16.28.13Zm-2.86,1.94,0-.35,0-.16.09,0,.14,0,.56.3.26.21.31.11.15-.31,0-.17-.15-.24L106,87l-.17-.12.23-.13.13.07.13,0,.28,0,.12-.39,0-.19-.09-.12-.32-.16-.38-.11h-.06l-.1,0-.33.26-.09,0-.12-.07,0-.08.17-.05.07-.19v-.07l-.28-.31-.11-.08-.2,0-.15.12-.09,0-.21,0-.11.12,0,.17L104,85.6l-.15-.2-.11.22-.19.09-.12,0,0,.14-.11.22.21.32.16.11.58.54.14.42.16.28.44.11ZM88.82,258.52l.18.22v0l-.11-.16Zm-3.48,5.1,0,0,0,0,0,.12,0,.05.06,0v-.1Zm4.87-4.5-.09-.05-.07,0h0l0,0h.06l.11.06.07,0,.06,0v0l0,0-.07-.06ZM109.82,95.54l.12.2.23.28.16.17.21.08.06-.11.07-.08,0-.24,0-.15-.07,0-.1,0-.15,0-.09.09,0,0,0,0-.15-.32-.07-.1V95l-.14-.17,0-.14-.39-.35-.28,0-.06.12.07.15.18.08.15,0,.08.27.14.34.09.07Zm1.13,5,.71-.16.12-.11.08-.19.06-.59.09-.35.17-.34.28-.39,0-.1.07-.33h-.06l-.27.16-.26.08h-.4v.11l0,.27,0,.12-.09.14-.06.28,0,.06-.58,0h-.15l-.06,0v0l0,0,.75-.3.09-.09,0-.07v-.23l-.08-.21-.09-.15-.08-.07-.08,0-.47.07-.17-.18-.49-.08-.2-.06-.12,0,0,0-.1.39v.48l.05.17.25.44,0,.07v.11l.1.17.35.16.47.34v0h-.07l-.18-.07-.22,0h-.07l-.13.15.14.15.3.21Zm2.25-4.7.08,0,.15,0,.21,0v-.13l-.19-.39-.1-.4-.21-.15-.11,0,0,0V95l0,.19-.09.12v.19l.11-.06.12,0,.1.12-.07.18Zm.83-1,.17-.31.09-.31,0-.22,0-.29,0-.18-.23-.39-.22-.28-.06,0-.77.3-.1.71-.25.22-.2.23v.17l0,.39.09.17.09-.14.19-.22.25-.1.11-.09.06-.09,0,.12-.07.14,0,.12.11,0h.1l.11.15.15,0Zm-.78,8.35-.24,0-.12,0v0l.15-.19v-.07l0,0h-.23l-.09,0,0-.09-.27-.37,0-.12.26-.2-.31-.14-.24,0-.16-.19-.18-.15-.14,0,.12-.07h.08l.17.09.34-.08,0-.27,0-.23-.19-.28-.2-.11h-.08l-.2.07-.11,0-.24,0-.41,0-.37-.05,0,0,.07.15.08,0,.65.26v.11l-.18,0-.06,0v.08l0,.11.13.24.15.1.54.63.36.3.12.13.09.22.16.25.4.26.23-.16ZM110.51,89.9l-.07-.15-.15-.14L110,89.5l-.14,0-.08.09-.13-.1-.7-.23-.32,0-.21.06,0,.09.12.14.18.14.13.15L109,90l0,.26,0,.34v.23l0,.1,0,.06.25,0,.21,0,.35,0,.07,0,0-.06,0-.09v-.12l0-.13,0-.1-.09-.14v-.1l-.13-.19,0-.1v0l.16.11.21.35.19.2h.06l.06-.06,0-.09,0-.1v-.21l0-.19Zm-1.41,2.47.36-.08.16.06.07.19v.1l-.15.09,0,.12-.2.12h-.07l-.18-.12-.1,0-.17.08,0,.06.08.11.16.18h.11l.28,0,0,.12.08.13.11,0,.33,0,.11.07-.11.15v.09l.23.33,0,.06-.12,0-.16,0,0,.09.12.09.28.34.24.42.16.07,0-.12,0-.17.08,0,.09,0,0,.07.07.17,0,.16.08.13.13,0,0,0,.2.06.06,0,.13.31.15.2.11.07h.14l.09,0,.1-.21V96l0-.1v-.09l0-.11v-.08l0-.19.09-.49,0-.07h-.34l-.08,0,0,0,.06,0,.08-.13v-.06l-.1-.18-.12-.06-.28-.26-.36,0-.08,0L111,94l.08-.11,0-.13h0l.43.28.2.09h0l-.08-.12-.15-.13-.26-.39-.11-.33-.07-.14-.12-.16-.31-.31-.68-.33v0l0-.08,0-.08v-.11l0-.12-.08-.14-.11-.13-.36,0-.39-.09-.07.06v.29l.09.13,0,.09-.15.14-.35.24,0,.11.12.07Zm4.2,11.28,0,.1V104l0,.09.06.07h0l.07-.36-.17-.17Zm-4.53-13.44-.1-.16h-.19l-.12-.21,0-.08-.1-.09-.18-.11-.27,0-.23.21,0,.26v.08l.2.33,0,.1.27.22.13.18-.25.1-.15.6.09.38h.14l.13-.15.08,0,.06.06,0,0,0,0,0-.19.13-.27,0-.28V90.9l.08-.27.1-.08.08,0,.08-.14Zm.44,3.81.31-.16V93.8l0-.08-.08,0-.23.09-.23,0-.14,0-.22.11.19.25-.06.41.22-.12.12-.12.07,0,.08-.11ZM230.65,357.09h-.79l-.5-.2-.49-.22-.45-.3L228,356l-.39-.29-.4-.25-.45-.31-.4-.39-.33-.41-.36-.38-.15-.14-.13-.16-.23-.71,0,0-.48-.07-.19-.11-.06-.12v-.12l.1-.17.11-.16.22-.08.17.19L225,352l-.11-.24-.44-.61-.11-.13-.06-.06-.19-.15-.07,0-.62.22-.18,0-.47-.54h-.18l-.16.15-.21.25-.23.22-.26.17-.11,0h-.12l-.19-.16-.2-.14h-.3l-.1.05.16.19.07.12.19.13,0,.06,0,.07-.07.07-.08.05-.13,0-.13,0-.15.06-.12.15-.05.16v.18l.07.28.16.22.23.12.26,0,.46-.16h.5l.25,0,.24.1.07.13v.18l-.08.05-.64.23-.56.16-.3.12-.13.1,0,.35.11.36.18.29,1.59.82.3.18v.06l-.07,0-.11,0-.09.06-.19.2-.12,0,0-.09V356l-.07-.15-.11-.09-.41-.16-.23-.18-.15,0-.13.12-.26,0-.37,0-.14-.11v-.19l-.26-.3-.31-.15-.17-.38.35,0,.17,0-.11-.28-.12-.76-.19.06-.18.19.09.28-.48.14v.31l0,.33.19.38.25.08.19.13.13.21.34.34,0,.13-.22-.1h-.32l-.26-.08,0-.2v-.18l-.2-.08h-.21l-.07.06,0,.1,0,.06-.24.05h-.16l-.4-.19h-.08l-.23.11-.16.13h-.07l-.22-.17-.17,0-.06.11-.17,0,0,.09,0,.22.14.08.82,0,.42.25.62.1.39.14.48.21.46-.13h0l0,.07.2.13h.22l.28-.08.28-.1.1-.07.26.31.2.15.83.21.5-.06.09-.06.31,0,.08-.05.26,0,.34,0,.23,0,.43.13.44.09,1.37.21.41.09.6.3.24.07.24-.05.24-.07h.24l.23,0,.23-.09h.23l.25.07.24,0,.28,0,.27-.08.21-.24.18-.3-.14-.13Zm-18.16-9.23.16.16.11.06.23.08.06,0,0-.05V348l0-.06-.28-.18-.1-.12-.07-.06-.18-.09h0l.07.18Zm4,5.55-.13-.12-.16-.26-.05,0-.41-.12h-.26l-.15,0,0,0,0-.23,0-.12,0-.05-.11,0-.06-.07h0l-.08.07,0,.06,0,.18-.54-.16-.16-.18h-.5l-.35.31.41.1.11.25.21.24.23,0h.08l0,0,0,.18v.12l-.06.23v.07l.19.14.18.08.08,0,0-.05,0-.18,0-.11.07-.12.11.09h.1l.14,0,.22.07-.06.25-.22.23-.17.05,0,.08.08.07.07,0h.06l.12-.06.23-.05h.24l.2-.12.14-.05.08-.06,0-.11.14-.22.22-.13Zm8.35,5.65-.12-.12-.3-.26,0-.07v-.07l.1-.15-.09-.11-.1-.08-.42-.08-.05-.07,0-.07.43-.22-.1-.24-.4,0-.53.13-1.64-.41-.37-.13-.11.5-.07.14-.09.05,0,.05.18.09,0,.05,0,.09.06,0,.3,0,0,0,0,.2,0,.06.07.06.2.11.1.16.09.06.34.12h.13l-.22-.32-.11-.21v-.07l.15-.31.21,0,.09,0,.2.19.08,0,.2,0h0v.06l-.11.23v.07l.06.16.05.08.18,0,.18.06h.21l.26.13.26.07.09,0,.11.25.15.1.14.06.08,0,0-.15,0-.21Zm-11-7.25,0,.07,0,.14,0,0,.13,0,.19,0,.37.13h.19v0l-.31-.26,0,0-.27-.31-.11,0-.09-.05-.2-.17-.26-.06-.2-.14L213,351l-.43-.08-.11-.06h-.09l0,0-.06-.18-.1-.07-.19-.19-.2-.12-.09,0v.05l.18.2.1.26.29.22.28.26h.07l.2.06.3,0,.26.08.15.08Zm-2.77-9.5.27,0h.21l.08,0,.09-.22,0-.39,0-.11.05-.08.47-.26h0v0l0,0-.12.09-.06.06,0,.24-.1.07L212,342v.09l.11.25,0,.17,0,.14.08.23.12,0h.23l0,0,.07-.19.11-.15.07-.19,0-.25V342l-.1,0v-.09l.12-.48.06-.39v-.39l0-.9,0-.12,0,0-.18,0-.19-.13h-.1l-.21.05-.17.15,0,.07.06.19,0,.18-.19.15-.32.14-.07.17.23.12v.23l-.27,0-.11-.08h-.12l-.23.13-.08.09.07.14.13.15.11.09-.09.36-.38-.05-.12.19,0,.26.21,0Zm8.79,14.77-.18.05h-.27l-.12,0-.25-.09,0,0-.08-.19h-.2l-.22-.09-.36-.06h-.08l-.07.14,0,.07,0,0,0,0,.14-.05.06-.06h0l.15,0,.16.14.26.17,0,.05v.09l0,.07.25.07.14.08.07,0,.15-.05h.09l.09.09,0,.07,0,.07.14.06.15,0,.23-.13.05-.13-.25-.47Zm-8.46-14.19-.18,0-.24-.1-.11.26,0,.15-.05.06,0,.17-.09.23.29,0,.11.1.42-.19.2-.14.27-.09-.06-.24-.26-.08Zm-.28,1.4.09-.06.1-.11-.08,0L211,344l-.26,0v.13l-.06.18-.09.15,0,.08v.16l.06.07.16,0,.08-.24,0-.23Zm.37,2.34.17,0,.12-.05.15-.11.08,0,.14.08.06,0,.07-.07,0-.23,0-.09-.08-.1-.26,0-.31.17-.34.08-.23-.13-.14.28-.07.18-.15.28v.19L211,347l.11-.11.23-.33Zm.41,2.05.31-.44v-.07l-.21-.29-.21-.06-.06-.08-.05-.53-.18,0,0,.24-.19-.06-.22.16.09.33,0,.37.19.33.11.34.32,0Zm5.57,6.24h.19l.22.07.18,0,.34.26.32.19h0l.08-.14.12-.09.06-.09,0-.25v-.14l-.3,0-.44-.26-.32-.24-.31-.12-.6-.15-.15.09-.17,0-.15.3.23.22.22.27,0,.27.28,0ZM241,317.38l-.12-.06-.25-.09v.06l.08.15.24.16.11,0v-.15Zm-7.56,40.24,0,0-.1,0-.24,0h-.46l-.22-.08-.08.1-.09.05H232l-.15.14,0,.11.18.12.28-.15h.12l.28-.11.61,0,.11.06.3-.1,0-.12-.14,0Zm7.08-7.45.1-.27h-.15l-.14,0-.08.08L240,350l.05.11.16.19.17,0Zm2.83-.37.13-.14.17-.08.1-.09.09-.12.13-.08.06-.13-.1-.13-.13-.07-.17.12-.06,0-.46.08h-.16l-.1-.13-.15-.05-.2,0-.29.17-.29-.07-.32-.2-.14-.13h-.11l.09.2v.09l0,.07.17.17.23.12.1.17-.07,0-.4.08h-.12l-.12,0,.16.14.25,0,.11,0h.11l.08,0v.1l-.11.08-.1.09-.25.09-.31.18-.35,0-.44.27.29.27.25.13.37.05.05-.06.07,0h.15l.06,0,.15-.17.11-.23H242l.12,0h.3l.14,0,.47-.42Zm-17.43,10.35-.45-.06-.15,0,0,0v0l0,0,.27,0,.18.07h.07l.07,0,.08-.09v0ZM227,358l-.27-.27-.37-.06-.92-.18-.48,0-.42.12.25.27,0,.3.07.11.06,0,.62.16h.06l.1,0,.23-.12.11,0h.08l.06,0,0,.05,0,.11.06.1.11.07h.18l.18-.1.14-.14.08-.1v-.11Zm-.63,1.53,0-.07-.05,0-.12.15-.14.06-.07.05,0,.07v.05l.34.1.08.05.05.06.08,0,.05,0,0-.06-.09-.17Zm1.78-1.14-.13.06-.06.05,0,.06v.06l0,0,.12,0,.18-.11.08-.1-.17-.09Zm14.23-9.63,0-.1-.21-.11h-.21l0,.22.05.09.28,0ZM188.26,229.2l-.14.12,0,.19.31.23h.11l0,0,.12,0,.15-.16,0-.23-.16-.14Zm-1,.08v0l0-.1,0-.23-.39-.43,0-.38-.12-.15-.06-.14-.11-.08-.27,0,0,.08L186,228v0l.07.07.18-.07.08,0,.08.55.24.2.08.26.15.14-.06.13-.4.13-.28.18-.08.12v.13l.12.16.1.05.5,0,.48-.13.25-.36-.12-.18ZM144.7,282l-.09.1,0,.12.33,0,.12-.08-.11,0Zm41.65-53.16v-.2l-.11-.15-.39,0,0,.05v.17l.07.11.16.08h.22Zm-38.51-55.58-.15,0,.59.45,0-.1-.31-.34Zm10.6,7-.09,0v.18l0,.12.15.08.08-.17-.06-.15Zm-9.58,5.38-.11.06-.06.1.18.14.13,0-.05-.13Zm-13.09-33.28,0,0,0,.13,0,.1H136l.15,0-.09-.18-.09-.08-.32-.17,0,0v.08ZM211,340.46l.29-.22.34-.38,0-.21v-.17h-.25l-.13.07-.41.08-.09,0-.1.05-.08.06,0,.15.12.11.07,0,0,.06,0,.2-.19.14-.15.14.12.1h.15ZM141.67,164.34l-.09,0v.27l-.21.25.34.17,0-.07.06-.22-.07-.36Zm5.8,8.68v-.17l-.06-.16-.06-.09v-.1l.2-.73-.05-.14-.19.72-.18.34.18.08.06.07,0,.18.16.26,0,0,0-.08Zm-12-10.77-.09-.11V162h-.11l-.08.05v.11l.2.48.09-.08v-.22Zm76.83,174.82-.18.2-.47.1-.12.13,0,.07,0,.24.1.22,0,.15.09.22.05.09,0,.38.17.26.45,0,.25.06.05-.06-.07-.44,0-.09v-.05l0-.08-.09-.12-.06-.25,0-.17,0-.05-.15-.13-.07-.16.07-.45Zm-1.72,1.83,0,.48h.24l.16-.1.45-.09.15-.12,0-.52-.2-.56-.11-.39-.09-.15-.36.1,0,.07,0,.16.08.2,0,.26Zm-3.74-37.29,0,0h-.06l-.11.08-.09.06,0,0v0l.38,0H207v0l0,0Zm5.26,35.06-.17,0-.24.08-.13.08.13.15v.09l.15,0,.06,0,.08-.06.29-.09,0-.09ZM190.68,229.74l-.06,0-.23.07-.12.13-.14.06-.15.12v.05l0,0,.08,0,.25-.07.14-.16.14-.07.08-.12v0Zm-2.46.95-.09-.05-.1.15.11.1h.08l.1-.09,0-.06Zm-52.29-77-.24-.27-.09-.18-.07,0,.11.18.1.23.13.06H136Zm51.74,74.69-.09.06-.11.16.12.13.38.1.1-.06.05-.11-.22-.2Zm20.05-14.13,0-.12.09-.07-.1-.22h-.05l-.13,0-.11.17v.11l.16.19.23.1h.11v-.1Zm4.82,12.93,0,0-.15.1,0,.1h.12Zm-15.89-61.83,0-.28,0-.15-.07-.14.06.3-.09.34Zm78.57,70.89.09-.27.09-.18.12-.18,0-.11-.1-.06-.15-.06-.15,0-.41-.06-.67-.16-.2,0h-.21l-.19.08-.28,0-.19,0-1.27-.33-.45,0-.4.21-.11.17-.06.22v.12l0,.11-.12.12,0,.09-.07.44v.22l.14.15h.24l0,.06v.07l0,0-.15,0-.13,0-.08.23.06.28.08.3.09.26,0,.13.18.2.13,0,.22-.07.48,0,.1-.08h.11l.2.13.21.08.13-.07.2,0,.14,0,.14-.16.06-.24.2.11.12.09.23,0,.06-.08.06-.15,0-.15.17.2.1,0h.11l.12,0,.21-.17.07-.12,0-.11,0-.11.12-.1.13-.07.05-.05.19-.23.12-.19.06-.09,0-.09,0-.25.08,0ZM197,164.41l.11.06.18.06,0,0,0,0-.31-.1Zm-.58,1.28.12-.11,0-.09-.06,0-.09.11Zm-.41-1.18-.2.12,0,0-.05,0-.06,0,.15,0,.09.06v-.11l0-.09Zm3,21.43-.11.12-.11.22,0,.24.11-.05.3-.34.13-.16,0-.06-.13,0Zm1.41,8.8-.09.1,0,.06.16-.11.06,0,0-.05h-.09Zm-11.58-5.57.07-.07.25-.09,0,0h-.08l-.48.18,0,0Zm10.25,5.72-.17.12H199l.34-.14.35-.08-.17,0-.21,0Zm.43-10.48h0l0,.1,0,.08h0l0-.1,0-.06Zm12.54-20.3v.19l0,.2.13-.55-.07.05Zm-15.49,28.33.13-.11,0-.09-.07-.05,0,.09-.06.08-.1.07-.08.21v.09Zm.11-1.55h-.08l-.14.32,0,.08-.09.12.1,0,.25-.44Zm-18.22-21.08-.06.21,0,.62.2,1.1.13.49,0-.1,0-.31-.23-1.13Zm93.23,60.9.22-.08v-.08l-.07-.34,0,0-.12,0-.15.05-.06.2.09.25Zm-91.24-63.28-.35.21-.16.05-.11.11h.08l.48-.24.28-.12,0-.09h0l-.08.08Zm-1.36,1.14-.39.53-.2.42,0,.19.07-.12.26-.52.44-.59Zm11.45-3.12,0,0-.06,0-.16-.11h-.1l-.18.06,0,.08.33.23.08,0,.07-.08Zm-6.51.11-.48.31h.11l.38-.21.21-.18h-.12Zm-4.59,2.51,0,.07-.12.17h0l.21-.24.18-.15,0-.1-.08,0Zm18.45-3.6-.11,0,.05,0,.28,0,.18,0-.07-.05Zm16,7-.07-.26-.07-.13.09.47.19.61.16.39,0-.17Zm12.69,15.67,0,.09.54,0,.49,0,.25-.28.07-.15.06-.23-.1,0-.18.22-.21.09h-.14l-.25-.12h-.2l-.14.13-.2,0,0,.05v0l0,.11ZM228,192l-.23-.2-.3-.17-.2-.1-.22,0,0,.12.41.25.52.22Zm.06-6-.15.09,0,.12.29-.08Zm1.42-.52,0,.12v.08h.31l0,0,.07,0v0h-.14ZM228,189.32h.07l.21.09.21,0,0-.06-.08,0-.25-.14-.12,0H228l-.12,0,.13.08Zm.91-44.66-.34.43v.07l.27-.35ZM226.13,184l0,0-.1,0-.16.16-.3.16,0,.11.15-.05.25-.18.26-.1.31-.36-.06-.32.07-.1-.22,0,0,.06v.11l.12.15v.09l-.07.1Zm6.55-42.16.34-.25-.21.05-.38.21-.17.07-.43,0-.42,0h-.17l-.15.06h-.2l-.19-.06h-.07l-.07,0h-.28l-.08,0-.07,0,0,.11L230,142l-.14.08-.26.08-.19.15-.09.1-.07.1,0,.14.18,0,.12-.12h.11l0,0v.05l-.21.11.28,0h.3l.75-.1.07,0H231l.92-.24h.18l.26-.07.27-.1.19,0,.94-.34-.22,0-.2.05-.1-.09h-.07l-.22,0-.26.11-.11.08-.12,0-.13,0,.16-.14Zm-2.54,43.62.06.06h.05v.06l.11.09,0,0,0,0-.05-.2h-.16Zm-1.92-1.13.19,0,.2.17.08-.07,0,0-.14-.1-.23-.08h-.07l-.13,0-.17-.07-.09.16.11,0Zm8,22.25,0,.08v.19l.05.11.12-.23v-.18l-.3-.17v.09l0,.06Zm5.87-72.31L242,134l-.13-.05-.1.05-.14.16,0,.18.05,0,.14.08,0,0v-.14l.13,0,.12,0Zm-.93.36-.06-.12,0,0,0,0,0,0v.12l.09,0Zm-15.64,48.55v.08l.05.12h.07l.29.13.14-.08-.05,0-.23-.09-.09-.12-.17-.08Zm11.18-41.85,0-.1-.18-.12h-.12l-.19.17-.15,0,.08.08Zm-1.71-.55,0-.07h0l-.05.13v.12l.06,0Zm.27-.25-.07,0,0,0-.07.15,0,.13-.06.08.11,0,.11-.06Zm-4.54,45.25.11.09v0l.06-.05-.06-.1-.28-.07-.09,0,0,.11Zm7.07-44.1v-.08l-.1-.25v.06l-.05.11,0,0-.31,0,.36.12Zm-8.85.91-.12.23h.1l.11,0,.13-.1,0-.07v-.08l-.06,0ZM352.79,31.42l-.14-.09-.22.06-.45.32,0,.72.12.63.15.49.28-.14.29-.6-.12-.45.05-.63Zm.07,14.72,1.59.2.41-.15-.18-.49h-.55l-.24-.28,0-.4-.13-.46-.49.11-.47.15-.36-.28-.48.25-.09.51-.06.5.43.33Zm-.14-4.32,0-1.55-.07-1-.29-.29H352l-.09.49-.05.64.67,1.81Zm2.4-16.13.91-.46.49-.5-.12-.43-1-.2-1.19.11-1,.26-.33.39.19.38.75.31Zm-.38,8.39-.61.61-.11.19.14.13.4,0,.49-.24.21-.32-.06-.35-.27-.09ZM331.66,61.76l-.06.07-.17.29v.1l.06.08.21.06.44,0,1.23-.11h1l.54.2.12.22h.11l.37-.17.3-.22.24-.08.84-.13.13-.14v-.08L337,61.7l-.17-.15.1,0,.05-.06,0-.09v-.1L337,61l-.05-.08-.31-.15-.1-.09-.12-.18-.19,0-1.11.38-.6.12h-.74l-.54-.06-.31,0-.46-.18-.2,0-.1.4,0,.29-.21.25Zm20,118.07-.11.07-.07.2-.29.45-.2.41-.27.17-.29,0,0,.05.27.08.3-.23.58-.15.16-.33.1-.39,0-.23-.05-.11-.06,0ZM282.26,57h.28l.14,0,0-.09-.35-.22-.33-.15h-.28l-.11.23v.08l.05,0Zm-3.72-1h.2l.1,0,.08-.09,0-.12,0-.14,0-.13-.12-.25-.14-.19-.25,0-.35.26-.19.17,0,.11,0,.09.08.08Zm73.62,123.44.34-.08.17-.09.07-.32.08-.1-.08-.09-.08.05-.09.14-.24,0-.29.12-.09.09-.1.32.16.06Zm-23.57,24.92-.37-.07-.21-.09,0,0,0,.09.14.28.09-.17.09,0,.3.1h.13l0-.05Zm15.2-25.29-.1-.14-.27,0-.17.18.22.46,0,.17h.05l.17-.15,0-.11v-.16l.05-.08Zm-.8,2.22h-.24l0,.07.06.05.24.16.23-.35-.07-.09Zm9.65-94.24h.4l.21,0,.37-.14.51-.35.39-.22.48-.18.73-.21.5-.09.49,0,.2-.06.3-.18.34-.09.18-.09.16-.14.1-.14,0-.15L358,85l0-.12.19-.12v-.23l.18.08.33.06.2-.07.2-.13.22-.24.06-.17,0-.15,0-.12.16-.06h.26l.11,0,.07-.1,0-.1v-.09l0-.07-.35-.19.11-.07.07,0,.05,0,0-.07v-.06l0,0h-.15l-.09-.12-.06-.11.05,0,.16,0,.09,0,0-.14.09-.15v-.11l-.1-.1h-.07l-.17,0-.1-.18-.19-.12-.47-.13-.29,0-.37.15.33-.26,0-.08-.06-.1,0-.1v-.1l0-.06-.07,0-.7.06-.14,0,0,0,.19-.17.15-.2.06-.21v-.1l0-.11-.09-.11-.09,0-.23.06-.23-.1-.21-.16v-.08l.2-.16.27-.34.27-.15.18,0,.23-.09v0H358l-.36,0-.24.06-.42.23-.17.07-.39.08-.24,0-.21-.12-.11-.1v-.25l-.09-.12-.18-.15-.25-.31-.1,0-.45,0-.51.11-.11.11.19.59,0,.09-.11.18-.3.06-.27.12h-.18l-.18-.08-.08-.09-.19-.11-.11,0h-.08l-.4.36-.19.2-.11.08-.15.06,0,0-.06,0-.11-.1-.35-.43-.17-.11-.56-.1h-.25l-.05.1v.12l.29.66.09.26,0,.19,0,.08-.05.05h0l0-.07-.16-.45-.35-.3-.26-.38-.21-.24-.14-.12-.14-.07h-.14L349,79l-.22.11-.22.07-.39,0-.1.13-.08.17v.58l0,.09,0,0h-.06l-.22-.05-.1-.09-.2-.24-.24-.23-.28-.43-.15-.12-.21-.08-.18,0-.15.16-.06.29,0,.41-.05.37-.14.32-.1.16h-.07l-.13,0-.19-.27,0,0h-.13l-.14.06-.3.22-.11.31,0,.09-.05,0h-.06l-.07.15-.08.28-.06.1-.06-.13-.11-.4L344,81l-.11,0h-.12v0l.08-.09.05-.11,0-.14,0,0-.11,0,0,0,.06-.08-.06-.09-.29-.18-.09-.15.41.12.1,0,.08-.09.19-.44v-.06l-.15-.16-.22-.08,0,0,.18-.07.08,0,0-.06-.43-.25-.42-.42-.21-.15,0-.06-.41-.2-.29-.29-.2-.17-.27-.08-.35,0-.34-.06-.12,0-.25.14-.13.08v.07l.3.07.31,0,.28,0,0,.08.06,0,.23.06.09.09-.05,0-.51,0H341l-.15,0,0,.06.15.16.13.07.72.34,0,0V79l0,.24,0,.06h-.23l-.14.12v0l.05-.23v-.11l0-.08-.07-.09-.13-.06L341,79h-.08l-.15-.06-.19,0,0-.06,0-.12,0-.1-.06-.08-.47-.32-.16-.06h-.16l-.16,0v.07l-.05.08-.1,0v.06l.21.15.1.11-.11,0-.51-.19,0,0,0,.06,0,.08v.08l.2.16.27.27-.44-.05-.15,0-.05.07.11.15.13.1.28.08.53,0,.06,0-.23.06-.18.1-.3,0-.58-.33-.25-.08h-.13l0,0,.08.18.09.07,0,.15,0,.1.3.29-.25-.07-.36-.21-.19,0-.19,0-.3.24,0,.08.47.08.42.18.23.14.22,0,.41-.12,1-.15.47-.12.17.13.36,0,.52.15.14.19h.64l.32.18,0,.09-.12.06-.52.15-.35.15-.35.19-.08.09.22.15.61.16h.13l.55-.17,0,0-.09.22-.07.09-.14.09-.86-.06h-.39l-.22,0H341l-.21-.09-.06,0,0,0-.15,0-.44.09-.06-.09-.12,0-.08,0-.17.1h-.36l-.44.08-.35-.06-.13,0-.17,0-.05.11.08.17.09.13.11.1.12.05.27,0,.46-.14.27,0,1.29.22.52,0,.32.23.12,0,0,0-.2.21,0,.07.08.13.06.06L342,84l.11,0,.39-.07.54-.24.1,0,.07,0-.06,0-.18,0-.54.23-.12.2v.13l.05.07.15,0-.23.11-.09.07v0l.21,0,.65-.23h.19l.19.08-.3,0-.14,0-.12.09-.1.11-.15.25-.08.08-.15.07-.15.16-.12.1-.28.08-.68.1-.1-.07-.08-.13-.09-.1-.1,0-.08.11,0,.09,0,.2,0,.31.07.14.1,0,.49,0,1.91.1.13,0,.31-.18h.2l.1,0,0,0-.14.08,0,.06.25.19.26.13.31.06v.09l.15.1.12,0,.28-.17.1,0,.1.14,0,0h-.14l-.07,0,0,0,0,.07V87l.18.18.4.3.51,0,.35.08.59.23.48.16,1.23.21.74-.1.17,0-.08-.13v0h.09L350,88h.13l.29-.1.15-.17v-.06l-.06,0v-.06l.17-.13.06-.1.38-.08,1.13-.11ZM270.06,235l.18.14.6-.36v0l0-.1-.2,0h-.16l-.32.08-.08.14v0l0,.08ZM283.81,61.22l.33-.13.13-.1,0-.07-.52-.26-.32-.08-.24,0-.31.19L283,61l-.07.26,0,.22.13.45.06.11.06,0,.34-.1.09-.11v-.13l0-.16Zm43.9,146.48-.23.1-.05.1,0,.12.1.09.11,0,.17-.07,0-.15-.06-.19Zm1.7-.13-.23-.25v-.1l-.08,0,0,0v.14l-.07.16,0,.18.15.26.13.09.28,0,.14-.18-.17-.29Zm1.6-2.94.08-.1,0-.16v-.23H331l-.12.06v.23l0,0Zm-.66,2.68-.15,0-.09.13v0l0,.13.08.1h.06l.14-.05v-.21Zm.95-1.84h-.17l-.17-.05v.19l-.11.21.15.12.13,0,.24-.1.07-.15,0-.12ZM290.48,92.2l.11.17.23.1.27-.35,0-.19.08-.14,0-.17-.4.08L290,92v.06h.26Zm-7.87,146v-.08l-.19,0-.05.16h0l0,.06.1.05.05-.05ZM311.52,78.12l.1-.29-.18-.21-.37.06L311,78l.09.28.32,0ZM268.91,235.74l-.31.4,0,.48-.27.22-.32.49.22,0,.42-.16.37-.24.36-.36h.07l.29-.71-.17-.27-.36,0Zm70-169.08.16-.13v-.17l0-.14-.08-.09h.1l.62.17h.18l.25-.07.08-.13-.1-.21-.1-.14-.1-.08.12,0,.53.06.67-.14.39,0,.08,0-.14-.3.12,0,.45,0,.2-.07h.24l.38-.09.32-.15.12-.12.07-.14-.16-.08-1.85-.1-1-.17-.76-.22-1.44-.53-1.6-.34h-.2l-1.13.29-.54,0-.7-.13-.58.11-.26.2-.3.36-.24.15-.49-.17.16-.35.51-.3.27-.12.28-.07.64-.09.41-.11.15-.14-.1-.16-.11-.11-.11,0-.15,0-1.78.12-.87-.05-1.06-.37h-.19l-.68.06h-.24l.07-.06,1.08-.23.24-.08.59-.27.17-.14.11-.21.11-.3v-.21l-.25-.13-.35-.12-.21-.18.2,0,.86.08.41.07.72.21.55.07.73,0,.3-.05.89-.24.31-.14.59-.29.18-.3,0-.39-.1-.28-.16-.17-.47-.1-.79,0-.59-.07-.76-.18-.09-.27.16-.09h.16l.66.23,1,.06.67.12.46.19.42.26.37.32.44.26.51.23.44.27.36.32.2.39,0,.47.17.51.29.55.34.38.93.46.28,0H342l.52.1.18-.2.18-.84.06-.16,0-.16.2-.18,0,.79,0,.14v.56l.66,0,.25.12.66,0,.23-.2-.08-.24-.05-.81-.08-.2,0-.22V61l.07-.42v-.5l-.07-.54-.43-.15-.45.18h-.13l-.14.05-.12.22-.18.46-.09-.52v-.45l.08-.08.33-.13.66-.42.13-.21-.63-.08-.22-.08-.22-.57-.13-.07-.62-.21-.17-.12-.67-.37-.6-.27-.42-.27-.89-.5-.35-.17-.3-.3-.19-.08-.38.15-.58.12-.16-.19.16-.09.62-.16.29-.1.13-.29-.16-1.14,0-.08,0-.05-.36,0-.54.14-.26.11H337l-.87.22-.24.09-.38.06-.18,0-.36-.17,1-.24.26,0,.47-.18,1.28-.2.19-.21.38-.1.43-.08.33,0,.14.46.32,1,.54.78.43.21.36.26L342,56l1,.48.41.29.42.18.14-.38-.05-.49.44-.18.21-.9V54.7l0-.77-.31-.21-.53-.12-.8-.45-.27-.37-.51-.12-.42-.29-.51-.27-.37-.36-.48-.08-.93-.12-1,0-.44.1-.3.32-1.33.2H336l-.49,0-.68.15-.65-.12H334l-.34.23h-.14l-.14-.09-.09-.1-.06-.11.19-.07.44,0,.42,0,.41.08h.28l.15-.07.26-.2-.12-.13-1.14-.47-.19-.26.59.27.43.16.73.2.48.25.22,0,.67,0,.16,0,.48-.35.3-.14.61-.17.49-.07,0-.11-.26-.18-.72-.69-.29-.24-.19-.21v0l.34.18.48.36.4.35.24.16.21.08h.24l.24-.08.25-.15.4-.34.76.94,1.05.66.49.25,1.3.4.34,0,.67-.3.7-.24.47-.06,1.43.08.27-.09.17-.63.29-.64-.06-.12L347,50.05l-.57-.13L345,49.77l-.29-.1-.27-.18-.13-.14,0-.11.09-.13.16-.15.07-.16,0-.17-.08-.11-.15-.07,0-.06.3-.09.45-.21.12-.19-.09-.53h.08l.35.37-.18.5-.29.43.75.39.91.28,1,0,.9-.2,0-.32.43,0L350,49l.37,0,.21,0,.12-.09.1-.13.08-.23.06-.32-.11-.28-.27-.24-.22-.12-.47-1-.35-.53-.46-.22-.44.15-.27.52-.2.46-.55.33-.36-.1V47.1l.15-.07.18-.17.22-.27.05-.35-.13-.43-.12-.26-.11-.09-.15,0-.17,0-.68.24-.3.08-.21,0-.18,0-.24-.15-.38-.29-.26-.24.74.39.44.1.51-.13.36-.26.32,0h.39l.92-.58.59.07.34.25.26.23.19.21.25,0,.32-.1.22-.19.13-.27,0-.37,0-.45,0-.31-.05-.16,0-.17v-.19l0-.29-.11-.16-.46-.47-.28-.44.23-.51-.46-.45-.36-.09-.33,0-.26-.06-.44-.18-.21-.14-.63.11-.48,0-.14,0-.17-.11-.35-.48-.19-.75-.26-.09-.6-.1-.17-.06-.13-.07-.32-.26v-.1l.12-.1.47-.24.31,0,.51.26.36.26.28,0,1.41-.56.05-.19,1-.07.87,0,.41.09.72.29.73.16.35.12.23.15.26.09.27,0,.21,0,.26-.33.14-.25.1-.39.06-.52-.06-.37-.2-.2-.29-.13-.66,0-.49.17-.35,0-.26-.13-.32-.23-.44-.2-.86-.23-.46-.38-.39-.79.51-.14.59-.08.42.13.86.49.12,0,.36-.05v-.16l-.18-.27-.19-.19-.47-.25-.55-.21-.65-.31-.51-.17-.6-.13-.58.24-.56.62-.43.17-.29-.28v-.36l.27-.45.28-.4.27-.35.21-.43.15-.52.17-.38.55-.75,0-.18-.38-.24,0-.07,1.13-.57.46-.08.41,0,.31,0,.17-.11.19-.18.14-.21.07-.24.08-.15.11-.08,1-.19.4-.1.18-.11.06-.14-.07-.19-.11-.19-.16-.18-.14-.08h-.13l-.26-.07,0-.22.1-.42.12-.35.15-.31,0-.22-.12-.25-.08-.08-.26,0h-.67l-.3-.07-.16-.1-.14-.14-.07-.27v-.37l.12-.34.26-.3.38-.28.76-.4.19-.06.46,0,.36.09.69.25,1.27.26.72,0,.77-.06.35,0,.36.09.3,0,.81-.19.69-.31.52-.28v-.15l-1-.35-.32-.15-.34-.33.95-.29.66.09.95,0,.75-.28,1.44-.09.16-.05.41-.24,0-.18-.15-.22-.35-.31.08-.09.54-.06.82,0,.74,0,.69-.19,1.43-.59.51-.33,1.5-.45.21-.15,0-.11-.26-.13-.56-.41-.7-.41-.49-.21-1.07-.26-1.52-.46-1.11-.21-2-.2-.45-.11h-.22l-.88.17-.32,0-.31.09-.2.1-.61.46-.66.36-.49.42-.15.09-.49.12-.53-.19-.52-.1-.29-.15-.69-.21h-.44l-1-.17-.1-.64-.84-.07-.83.31-1.63,1.12-.29.15-.54.2-.66.18-1,.55-.34.11-1.57.4-.21.19-.12.17-.33.24-.17-.06,0-.28.29-.36,1.09-.75.34-.16,1-.64.52-.28.49-.4.63-.75.21-.45.08-.47,0-.39v-.32l0-.25-.33-.45-.48-.07-2.06,0-.79,0-.35.07-.16.1-.16.19-.15.3-.2.28-.23.25-.31.13-1.37.09-.55-.94-1.11-.68L337.31,13l-1.64-.14-2.26.09-1.31.18-.55-.13-.12-.5.27-.36.41-.12,11.9.29,1.55-.07,1.36-.2,1-.31.82-.37.21-.22-.11-.21-.21-.26-.46-.21L347,10l-1.82-.35h-.6l-.28-.12-.16-.25-.52-.09-.62,0-.72-.79-.52-.77-2.13.16-1.8,0-1.53-.17h-.85l-2.11-.36-1.63-.17h-.88l-2.39.35-.67,0-.4-.06.12-.52.95,0,3-.12,5.24.23,2.89.07.56,0,.26-.1-.31-.17-2.21-.63L336.52,6l-1.41-.25h-.22l-1-.45-2-.47-1.54-.27-4.73-.4-.86.05-.93.18-.61,0-.61-.2L322.12,4l-.56,0-.48.08h-.59l-2.4-.17-.08,0L318,4l-.05.15-.25,0L317,4.16l-.74-.22-.49,0-.22,0-.29.22L315,4.3l-.25,0L314,4.21l-.22,0-.23.14v.2l.2.26L314,5l1.11.47.11.13L315,6l-.06.24-.14.16-.13.07-.25,0-1.28-1-.79-.21-.54-.31-.6-.28-1-.24-.72.24-.63.42-.7.38-.45-.17-.33,0-.28-.12-.46-.33-.42-.17-1.06-.22-.48-.07-.39,0-2.12.39-1,0-1,.19-.63.26-1-.3-.54-.06-.68.53.67.53.54.06,1.19,0,.58-.06.55.05,1.07.22,5.78.86.13.15V7.4l-1.08,0-.21-.06-.15-.11-.36-.11L305.25,7l-5-.61-.62,0-.41.09v.11l1.95,1.09.49.39.14.54-.22.27-.46.22-.25.76v.4l.05.35.11.3,0,.24-.17.17-.27.14-.33-.07-.81-.26-2.64-1.55-1.51-.5-3-1.4-2.41-.53-1.62-.13-.36,0,.09.4.4.76.61.64,1.4.85.3.29-.24.08H290l-1-.16h-1.11l-.9-.73-.81-.32-2-1.39-.51,0-.21.34,0,.67.34.43-.12.34-.19.47-.24.33-.3.21-.33.3-.28.15-.06-.12v-.3l.16-1.6-.15-.53-.35-.39-.26-.24L281,7.23l-.56-.17-.36,0-1.3.16-.31.06-.14.18-1.38,0-.78-.1-2.36.12-2.1.21L270.53,8l0,.12.91.38.49.35.67.57.74.51,1.37.75.61.4.39.36.08.16-.24,0-.26-.1-.44-.26-.84-.61-.57-.3-.58-.2-.7-.39L271.09,9l-.65-.34-.73-.15-.53-.19-.41-.06-.7,0-.87.26-.38.2-.41.28-.09.25.1.32.06.49v.67l-.17.55-.36.43-.27.24-.17.07h-.25l-.45-.14-.38-.2-.51-.15-.77-.16-.48,0-.19,0-.47.27-.07.29.23.72.12.24-.06,0-.75-.68-.27-.17-.29-.09-.35,0-1.32.17-.38.14-.81.56-.64.29-.63.34-.33.1-.34,0-.37.09-.5.15-.51.23-.85.49-.12.12-.33.48,0,.27.1.27.15.22.2.16.24.09.82,0,.32.07.62.25.36.05.54-.07.34-.11h.36l.5.05.52-.06.4-.12h.22l.23.06.25.12,0,.06-.6.08-.35.12-.35.16-.11.14-.17.41-.23.65-.31.67-.41.67-.31.43-.31.27-.59.42-.31.17-.23.05-.34,0-.7-.14-1.61-.06h-.26l-.48.13-.34,0-.42,0-.65.07-.95.19-.43.14,0,.09.17.2,0,.07-.14,0-2.06.21-.93.17-.45.12-.28.13-.32.06-1-.1h-.25l-.29,0-.8.26-.78.16-.17.09-.46.33-.08.16.07.13.2.18,0,.09-.51.34,0,.18.4.34.67.47.17.17.19.1.84.23.28.13.24.21.24.11.57.14.55,0h.24l.43-.16.62.06.06,0-.44.11-.59.31.05.08.44.08.38.26v.24l.28.18,1.27.45.31.05.23,0,.25-.07.26-.14.28-.2.23-.08.18.05.48.26.32.08.32.08.6,0,.37-.05.79-.34L253,27l.31,0,.27,0,.49.33.27.25.07.22-.14.2-.29.3v.19l.14.24,0,.07-.63-.3-.47-.15-1-.17-1.46-.09-1,.09-.33.13-.52.45-1.39-.26h-2l-.54,0-.21.07-.21.14-.22.18v.2l.25.21.56.28-.08.05,0,.08v.12l.11.12.25.11.35.09L246,30l1.15-.5-.05.09-.13.15-.23.22,0,.21.13.2.14.14.15.08.85.29,1,.15,1.13.05.22.13-.08.06-.2.06-.88.07-.43.07-1.15.45-.18.14,0,.12.17.19.54.25.68.46.41.19.48.29.34.12,2.71.63H253l-.35-.34-.38-.46,0-.18.19-.07h.25l.42.25.22.11.18,0,.22,0,.49-.24.38-.06.16,0,.18.11.2.19.22.14.23.08h.18l.13,0h.47l.37-.06.47-.15.32-.13.34-.19.17,0,.17.07.17.18.34.26.25,0,.48-.22.4-.23.31,0,.58.19.36.27.16.05h.51l.82.14,1,.32.51.06.38.12.63.31,1.42.55.91.48.55.2.37.2.36.25.4.18.45.09.29.14.26.34.24.46-.08.14-.69.31.06.14.63.36.14.14.13.18.26.44.3.29.9.46.35.24.23.24.16.23.09.23.12.17.13.1.56.28.53.4-.21.13h-.2l-.44.09-.14.1.11.22,0,.19,0,.21-.15.23-.49.06-.37.12-.26.11.08,0,.49,0,.63-.06.35-.07.21,0,.18.09.14.15.19.38.11.13.09.19,0,.07v.06l.13.15.1.26,0,.3-.12,0-.15,0-.16.35-.12.16-.06.14v.13l.23.1.23.15.17.19.05.13,0,.18.18-.05.45-.21.22.27.07.29,0,.25-.15.22-.2.15-.3.06-.22.09V48l0,.19.07.07.18,0,.17.09.18,0,.17.1h.19l.14-.08.14-.2.41.22.18.21.06.18-.06.15v.16l0,.17,0,.19-.12.22-.3.25-.26.12-.17.13-.69-.07-.32.17.07.07.28.09.26.27-.19.15-.43-.06-.1.06-.08.3.15.18.55,0,.94-.68.11.07v.09l-.07.11-.22.2-.77.56-.33.56-.25.71-.18.1-.09.17,0,.25.13.29.28.33.22.19.57.11.49.17.26.05h.78l.31-.1h.15l.29-.13.13-.25-.07-.26-.11-.25H278l.14.07.25-.13.05-.14.11-.15.32-.15.2-.16,0-.16-.08-.33-.22-.31-.14-.12-.17-.22-.06-.19,0-.23-.05-.17-.09-.14.07-.09.52,0-.05,0-.22.07-.08.13.2.53.1.15.13.1.29.41.08.25,0,.25,0,.19.05.12.39,0v.12l-.25.23-.12.08-.37.15v.13l0,.11.31.17.25,0,.54-.21.4-.21.15,0,.95.23h.24l.36-.1.28,0V54l-.43.24-1.65.24-.31.15-.1.16-.15.15-.18,0-.08.15.19.51.23.06h.25l.51-.07.24.06.37.19.35.13h.56l.85.11.39.31.32.19,0,0-.21,0-.28,0-.53-.18-.25,0h-.26l0,.07.51.32.2.07.28.21-.08.32-.09.08-.05.21v.37l.29.24.48.32.42.09.13.09-.05.07-.4.09h-.15l-1-.32-.23,0-.52-.28L281,57.55l-.46-.2-.35-.1-.59-.12-.59,0-.29,0-.36-.14-.34-.07-.63-.09-.38.08-.21.13-.2.18.05.16.3.34.4.42.23.19.51.17.84.19.67.25.52.29.39.26.46.38.16.09,1.34.3.2.08h.17l.49-.19h.18l.27.09.34.16h.4l.37-.06.23.06.06,0-.1.07-.26.08-.09.11.29.43,0,.1-.23.08-.56.12-.19.22,0,.23-.17.44-.05.23-.38.47-.06.23.47,0,.38-.08.28,0,.15.16.32.1v.06l-.2.1h-.84l-.6-.09-.08.13-.12.54-.25.7.21,0,.25,0,.48-.19v.1l-.33.36-.27.21-.14.06-.73.13-.3,0-.32-.07-1-.63-.63-.08-.61.12-.32.16-.41.68-.28.19-.1.19.19,0,.24,0,.82,0,.06.12.09.07.65.2.38,0,.83,0,.36,0,.35-.3v-.07l.05,0,.34-.05h.17l.08.13-.1.2-.28.28-.13.07-.05.07-.05.19-.06.09-.14.13-.17.07-.38,0-.57-.11-.76-.31-.93-.28-.31-.07-.23,0-.15.31-.33.49-.51.43-.09.25,0,.18-.07.16-.22.4.27.06.39-.1,1-.57.18,0,.47,0,.27-.06.42,0,.48.25.33.07.36.12h.72l.22-.09.73,0,.17.1-.31.11h-.29l0,.15,1.07.55,0,.12-.19,0-.95-.53-.55-.15-.45,0-.5-.1-1-.39-.27-.05-.32,0-.65.17-.55.32-.41.17-.29.08-.54.24,0,.31-.21.65.37.55.25.16.24.1.14,0,.3.07.66.09.72,0,.27.06.08.07-.09.06-.13,0-.23,0-.91,0-.18.24-.23.09-.43.22,0,.09-.09.12-.22.23-.16.33v.24l-.07.24,0,.41.15.06.27-.05.53,0,.26-.06.24-.12.24-.17.3-.18.56-.27,1.3-.76.38-.17.54-.3.26-.11.11,0-.08.13-.56.34-.35.14-.31.09-.15.08-.09.12-.28.25-.22.12-.29.08-.47.23-1.1.57-.73.27-.08.08.09.06.14.17.06,0,.28,0-.32.68,0,.6.09.08.32,0,.5,0,.4.47.42,0,.68-.32.24-.14.32-.27.12,0,.7-.14.51,0,.11,0v.08H282l-.77.06-.22.12-.55.43-.46.27-.6.22-.1,0-.07.06.07.19.08.19v.05l.37.2,0,.32.16.9,0,.38,0,.28,0,.6,0,.23.11.31.15.14.18,0,.18-.15.19-.31.47-.54.17-.22.09-.26.24-.17.25-.07-.09.25-.12.26.49-.09.21-.08.24-.15.14-.16-.08-.23-.14-.55-.1-.25-.07-.36.07,0,.12.29.08.22.23.43v.14l0,.11.25.31h.46l.16.09.19.18,0,.4.14.27v.2l-.29-.16-.2-.43-.16-.24-.28-.06-.41,0-.35.08,0,.1,0,.19-.15,0-.42,0-.25,0-.38.29-.31.47-.39.34,0,.13.19.22.09,0h.11l.21-.06h.09l.57-.07.75-.16.51-.22.1,0-.05.15-.08.11v.07l.19,0h.28l-.18.13H283l-.24,0-.43.11-.8.11-.57.11.18.35-.22.47.11.38.53.72.32.61.23.31.16.26.12.14.27.18.06.1.14.1.17.32,0,.09h.11l.55-.44.64-.17-.63.41-.29.28-.21.27.07.14,0,.32-.05.15-.1.18.07,0,.21.19.21.17.25.14.28.15.25.06.26.15-.26.24,0,.18,0,.24.08.07H285l.16-.1.17-.16.17,0,.23,0,.36.12-.44.09-.07.08-.13.06-.39.14-.16.14,0,.17.1.22,0,.07.09.13.14.09-.07.16-.15.12.16.15.32.1.11.31,0,.24.07.24.67.15.08,0,.13,0,.12.12v0l.09.12-.05.41h.4l.09,0h.6l.18.07-.29.14-.64.23-.09.15.12.13.14.09.19.08.39,0h.2l-.1-.23v-.09l.18,0,.27,0,.24,0,.18.15.3.08.22-.07h.3l.21,0,.16-.13.19-.12.3-.16.6-.14.61-.18.1-.1v-.14l.08-.09.15,0,0,.12-.09.27-.12.19-.19.16-.31.59.16.52.14.06.09.07.48.15.22.09.32.18.09.08h.21l.42-.13.72-.44,0,0-.27.37-.26.21-.24.11-.25.08h-.35v.23l0,.29,1.13.56.41.13.17,0,.13-.2.29-.31.28-.19.09.09-.13.19-.39.34-.11.13.06.29.06.08h.11l.12,0,.23-.06h.2l-.09.14,0,.14.43.08.25-.07h.17l.1,0-.14-.15-.41-.31,0-.1.57.25.11.08.61.07.19-.18.25-.19,0-.63V94.1l0-.09-.1-.19-.16-.18-.48-.13-.27-.11-.34-.09-.21-.16,0-.08.27,0,.4.09.5.22.33.06.06,0h.24l.74-.71.22-.91.39-.91.2-.53.16-.24.07-.2-.54-.16.13-.11.34,0,.24,0,.31-.25-.06-.31,0-.19-.18-.16-.15-.31.18-.42.05-.19.08-.15-.07-.23.17-.13,0-.18-.64-.14-.42-.16-.37-.16-.17-.15h.2l.22.06.66,0,.22.07.53.08.18-.11h.14l.42-.47.17-.06,0-.18-.6-.31-.32-.23-.09-.12-.05-.19.16.08.14.1.34.32.45,0,.38,0,.12,0,.25-.2.19-.24.19-.2-.05-.12,0-.13.22-.19,0-.33.29,0,.28-.06,0-.3.48-.28v-.13L303.5,83l.13-.67-.43-.13h-.29l-.14.1-.29-.21-.81-.46.83.12.2.07.19.12.42.07.21-.13v-.21H304l.43-.23.22-.17-.05-.19-.12-.21-.3-.28-.15-.52-.25-.32-.37.09h-.29l-.09-.4-.12-.17,0-.22.42.1.44-.06.85.27.48-.14.2-.12.39-.35.24-.09.16-.17-.15-.11-1.07-.6,0-.11.45,0,1.14,0,.68,0,.94,0,.92-.23,0-.33,0-.1-.45-.32-.14-.31.25.11.51.32.16-.23.26-.55.22-.2.26-.18-.48-.25-.33-.24.23,0,.48.09.5.17.57.12,0,.07-.45.34-.69.69-.1.22.05.19-.11.14-.35.32.07.27.41.17.2-.12.3,0,.23-.07.18-.2,0-.24.17,0,.37-.25.07.11.18.21.23.06.23-.07.1,0,.06-.07.24-.42,0-.11v-.12l.28.19,0,.1v.33l.2-.1.54-.37.48-.21.2-.13.21-.11-.21-.65-.1-.13,0-.1-.05-.07v-.12l.32.26.08.11.5.32h.25l.21.08.24-.08,1-.46.13-.11.12-.18.12-.22.12-.12h.23l.08,0,.16-.09.22-.23.51-.71.63-.76.19-.28.08-.2,0-.13,0-.08.1,0,.24-.17.13-.14.32-.48.11-.1.13-.06.28-.06,1-.52.17,0,.21-.12.25-.23,0-.25L322,70l-.22-.28,0,0H322l.12,0,.1-.07,0-.12-.14-.18-.07-.18,0-.18.38.22.78.61.64.41.5.21.39.1.27,0,.51-.12,0-.16-.2-.24v-.09l.82.27h.25l.32-.24.19-.08.2,0,.32,0,.59.12h.37l.35-.1.49-.06,1-.22.5-.08h.57l1.24-.23.39,0,.56-.15.34,0,.36,0,.3-.07.25-.16.19-.09.39-.1.56-.22.16-.12,0-.1.08-.23.08-.08.58-.13.39-.23,0-.1-.2-.26.12,0,.55,0,.27-.07.63-.27ZM272.51,234.05l-.52.13-.3,0-.17.19v.19l.11,0H272l.21.15h.18l.17-.05.33-.4-.08-.12Zm-.55-.22.25-.25,0-.15,0-.09-.08,0,0,0-.29,0-.08.13,0,.26,0,.07Zm-.61.48.22-.24v-.66l0,0h-.06l-.06,0,0,.27-.07.19-.17.16-.18.07-.05.31.36.15Zm1.91.26-.21,0-.24.09-.19.12-.07.08.25.12.55,0,.14-.11,0-.11,0-.12Zm44.57-82.45-.13,0-.06.24.05.05.15.06.1-.11v-.18Zm-34.66,89-.14.11,0,.12,0,.17-.08.23.22-.19.05-.26v0l0-.14ZM330,157.29l0-.17-.17,0-.66,0-.13,0-.27-.19-.13,0v.05l0,.11.19.17.61.16.39,0Zm-3.14,46-.1-.18-.16-.05-.48.18v.05l0,.11,0,.17.08,0,.21,0,.33-.19Zm3.05-44H330l.12,0v-.05l0-.1-.07-.06h-.17l-.08.05Zm-3,44.4h-.12l-.17.08-.05.08.14.08.11,0,.17,0v-.06Zm-1-49.16-.19,0-.07.05,0,.17.12.09.42.1.05,0,.07-.08,0-.15-.17-.13ZM310.8,374.37l0-.06h-.2l-.11.09.06.08.31.18v-.17ZM323.45,154.9l-.22,0-.09.07,0,.14.15.14h.25l.21.09.08,0h.27l-.17-.11Zm.23-.45.24.23.19.1.53.23.1,0-.36-.22Zm-.74.26-.08-.07-.31.08.19.19H323l.08,0,0-.09Zm-71.39,45.11-.07-.1-.06,0-.09.08v.12l0,0h.12l.06-.06Zm-3.29-5.15-.09,0-.28.13,0,.06.34-.08Zm2.26-69.2,0,0,0,0-.05,0-.12.2.24-.12Zm-.44.64h.09l.2-.15.06-.18-.12,0-.05,0h-.15V126l-.06.1ZM248.84,197l0,.15.08.07.11,0v-.1l-.08-.07Zm7.57-74,.11-.08-.07-.18-.15-.22-.45-.32-.18-.06-1-.66-.45-.25-.47-.22-.41-.15-1-.23-.75-.24-.23,0-.28,0-.24.09.08.17,1.12.54.21.17.2.19.09.21.11.17,1.05.55.49.18.5.12.68.22.87,0Zm-6.83,75v.11l.14.05,0-.12,0-.15h0Zm-18.65-67.75.28-.26-.32,0-.3.23.09,0Zm5.65-3-.05.09h.19l.24-.1.2-.18h-.11l-.2.07Zm22.33,9.41.23,0,.29-.07.14-.15-.3.12h-.15l-.37-.06v0Zm-28.47-6.12.3,0,.27.07.17,0,0-.05,0-.14.16-.4h-.1l-.37.33-.35.09-.24.18Zm18.22,66.07-.16-.12-.07,0,0,0v.05l.13.09.15,0,.08.13.06,0,0-.05-.07-.07Zm-3.8-1.14-.21,0-.17-.1-.25,0,0,.14.42,0ZM245,194h-.17l-.1.06.05,0h.16l.11-.07Zm-.78.07-.18,0,.21.12h.16l-.09-.1Zm-1.9,15.67.11,0,0-.05-.15-.11h-.17l-.07.07.1.07ZM248,195l0,0,.07.05.13.06,0-.05V195l0,0h-.08Zm-3.45,14.8.12,0,.12.13.09,0h.29l.2-.17,0,0,0-.28-.09-.08-.25.18-.06.14-.17,0-.14-.09-.06-.09h-.07l-.21,0-.13.14.08,0Zm.81-15.91-.05.08v0h.09l.16-.1Zm-.75.33h.09l.14,0-.18-.05-.08.06Zm-1.13.31-.13-.05-.23,0-.2,0,0,.07.1,0h.17l.27,0Zm3.69-31.12-.18.17-.19.06,0,0h.05l.2-.06.14-.19ZM258.92,132l.2-.18.22-.14.37-.13,0-.05-.21-.16.12-.1.07-.13v-.07l0-.05-.19-.09-.27-.06H259l0-.19-.11-.12-.17.06-.11.06-.17.13-.18.21v.14l-.35.24.05.07.52,0,0,0-.51.41-.08,0-.14,0-.15,0h-.11l-.28.1-.06-.12.1-.12.17-.09v-.05l-.14-.08.12-.06.25-.08v-.09h-.15l-.29.1-.06,0,.42-.22.17-.06.18,0,.37-.18.09-.1.1-.13,0-.09.07-.28.24-.5.14-.31v-.08l-.16-.42v-.1l.05-.1-.16,0h-.18l-.09.06L258,129l-.25.16-.14.16-.12.2-.6.85-.14.14-.24.17-.17.28,0,.3,0,.58.07.13.17.19.07.07h.1l.11,0,.21,0,.22,0h.22l.22.07.19,0,.61-.12Zm-7.59,78.56H251l-.2,0-.41,0-.2.06h-.27l-.13,0,0,0,.2.09.08.06,0,.08v.13l-.11.56-.07,0h-.21l-.07.1-.53.22h.28l.36.07.88,0L251,212l0-.07,0-.2.08-.12-.09-.14,0-.2,0-.15v-.24l.08-.09Zm-1-13.18,0,.11.23.05.07-.08,0,0,0,0v-.06l0,0-.06-.08-.16-.07-.16.13Zm.36-1.06v-.19l-.05-.06-.09,0-.06,0,0,0v0l0,.19.16.11Zm1.52,13.29h-.08l-.31.07-.21.13,0,.08h.11l.45-.14Zm14.83-79.76.06.07.19-.1,0-.05-.06-.11,0-.14.09-.21v-.09l-.16-.09,0,0,0,.06.08.35v.05l-.11.17Zm-16.25,69.2-.08-.08-.22-.08,0,0-.06.08,0,.51.09.19.08,0,.17-.08.06-.08v-.38l0-.09Zm3.56,6.58,0,.32.06.11.18.1.06,0,.15-.14-.12-.1-.2-.27ZM251,214.23l-.06,0-.23.15,0,.06v.2l.13,0,.17,0,.13-.1,0-.09-.1-.08v0Zm.28-.2.12,0-.05,0h0l-.08,0,0,0h-.13l-.08.09v.06l.25,0Zm-1.51-6.23,0,.13-.06.07h.14l.19-.07.07-.35-.11,0-.12.1Zm7.49-75.26,0-.07.09-.12-.23,0-.12,0v.05l.12.11,0,0Zm-5.22,70.54,0-.12-.07-.25,0-.07-.08-.1,0-.1v0h-.05l-.15-.15-.19-.13h-.12l-.07,0,0,.09.14.33.07.07.19.06-.17.14v0l.05.09H252l.07.11Zm2.56-72.78.33-.17.32-.15,0-.06-.07-.06-.18-.07-.54,0h-.6l-.53,0H253l-.32-.12-.16-.14-.09,0-.1,0-.15-.11-.3-.08-.13.2-.1.06-.06,0,0-.07-.14-.05.06-.07,0-.09,0-.09,0-.08-.36-.39.25-.33,0-.18,0-.21-.36.25-.14.13-.14.16-.16.16-.12.19,0,.13.32.05.2.1.05.1,0,.35.19.07.33,0,.21,0v0l0,0h-.08l.13.21.18.17.14.07.6.19h.13l.13-.06-.24-.05.16-.08.17,0,.13-.1.17,0,0,.06-.13,0v.12l.08.1h.13l.1.19-.27.13,0,0h.19l0,.17.15.09.13,0h.44l.11,0,0-.06-.08,0,0-.18v-.18l.06-.09Zm1.24-2.8.18-.09.15-.16.22-.15h.22l.18-.18-.16,0-.15,0-.18.09-.43.29-.22.1-.21.48.12.05h.24l.14-.09-.09,0h-.13l-.07,0,.07-.16Zm-4,76.46,0-.17-.08,0-.12.12-.15.19,0,.1,0,.17.21.16.13-.21Zm-1-4.75.16,0h.24l.33,0-.36-.25-.08-.11v-.12l-.13-.09-.09.05,0,.09,0,.16-.09.12Zm.22,6.49.09-.09,0-.19,0-.13h-.1l-.09,0-.1.08,0,.17.14.15Zm16.3-75.77-.06,0-.07.07.14,0,0,0,0,0V130l0,0Zm-16.13,70.79-.08-.13-.28-.12,0,.06,0,.16.11.28.06.37.2,0,.08-.26Zm-29.25-19.6.17,0,.34.29.15.07h.09l-.18-.1-.1-.12-.28-.25-.12-.06Zm17.39,13.44.11.07.26,0,.11,0,.13,0h.13l.14,0,.36,0h.18l.2.09h.18l.08,0,.08,0h.23l.34,0,.3-.15.12-.14.14-.12.21-.1V194l-.26-.06-.25-.11-.39-.08h0l0,.09h-.06l-.07-.05,0-.06-.07,0-1.29-.13-.51-.1h-.11l-.1,0,0,.13-.09.08-.11.06,0,.09.07.09.06.13,0,.15ZM218,184H218l.09,0-.09-.12v0l-.15-.06,0-.14h0l0,.11-.08.1.06.08Zm1.11-3.71v-.09l0-.06v-.05l0-.06,0-.33-.1-.18-.15.21-.15-.11.22-.13v-.05l-.08-.09-.12,0-.19,0-.08,0-.13,0-.11.06.15.3.12.12.07.35.06.05v.24l.41.06Zm.54-2.46.17-.05v0l-.11-.07h-.25l-.16,0-.08.06,0,0,.17.06Zm-2.26,5.57.09.14.15,0,.11.09.05,0-.07-.05-.06-.18-.11-.11-.1,0-.15,0v.05Zm3.64-6.65-.06.15-.07.12.18,0,.15,0,.24.22.26.08.16.21.24.25V178l-.12.18,0,.25h-.22l0,0,.11.1.07.17.06.07v-.24l.09-.27.09-.45v-.1l-.13-.12-.29-.33-.29-.12-.32-.28-.11-.17Zm-3.93-2.62-.18,0-.27-.22-.11,0,.36.38.11.07h.16l.33-.09.59-.13h.65v-.06l0-.12-.3,0-.37-.05-.09,0h-.13l-.25-.09-.2-.17-.09.15,0,0,0,.1Zm2.95,0-.14-.09-.16-.21-.16-.16-.28,0-.24-.07-.15,0-.18.06.31,0,.58.17.33.53.18.14.06.17-.06.13v.14l-.07.16,0,.29-.11.13-.24.14.14.07.16.23H220l.08-.11.1-.62.28-.18,0-.44-.18-.16-.19-.11,0-.06v0Zm-2.24,4.78.1-.06V179l.12.12.05.17.13-.09.22-.06.06-.07.24-.12,0-.06v-.2l0-.27-.18-.2-.14-.34-.1-.14v-.18l-.12-.13-.25-.16-.11,0,.08.38-.07.23-.26.33,0,.14h0l0,.08-.17.13,0-.12h-.21l.13.2.22.15Zm-.85,4.12-.1,0-.28-.06-.14,0,0,.06.09.05.17.07.25,0,.07,0h.22l-.12-.19-.1,0Zm7.55-27.81-.26.1h0l.39-.13Zm-1.59,23.67.16.15,0,.14.09.09.18.37.16.15v.1l-.15.09-.05.07h.07l.21,0,.14,0v-.11l-.39-.53,0,0-.22-.52-.12-.05,0,0Zm.87,3.26,0,.06.17.12.33.13.22.45,0-.05v-.23l-.18-.21-.25-.15-.06-.4-.12-.24-.07-.25-.18-.28v.18l0,0,.08.21.15.31,0,.15,0,.14Zm1.3-28.61-.14-.1.12.27,0,0v-.06Zm1.27-5L226,149l.09,0,.31-.41.16-.25.1-.27-.1.13Zm-2.61,7.21-.1.05-.41.34-.21.28.06,0,.33-.35Zm1.45-.68-.32.11,0,0,.28,0,.08-.09.13-.38,0-.27,0-.36,0-.13V154l0,.39,0,.21Zm-2.25,1.29H223l-.15-.11-.11,0,0,0,.11.06Zm2.59,24.06,0-.13h-.05l-.11,0-.08.3.09,0Zm-10.43,2.31v-.06l-.07,0-.38-.31h-.11l.06,0,.15.18Zm3.05,1.64.08.05h.05l.09.1.09-.06.06-.09,0-.12-.29-.08-.16,0h-.13l0,.11ZM233,205.71l-.11-.2-.12-.1,0,0,0,.1.12.11.12.14.09,0v-.06Zm-13.12-12.53.09.06.2.09h.47l.19-.06,0-.12-.22-.41-.71-.28-.18-.11-.22-.2-.11,0h-.11l-.26-.06-.25-.09-.18,0h-.21l-.86-.19-.12,0-.11.06-.24,0-.26,0-.07,0-.17.15,0,.13.09.16.45.09.06,0,.14.28.17.08.06.07.15.25.2,0,.43,0,.21.06.16.13.14.15.12-.27.09-.07.1,0,.06.1.19,0,.11-.11.1-.14h.12l.1,0-.06,0Zm-12.63-8.76-.11-.06-.14-.12v.07l.08.14.14.14.22.08h.22l.43-.13.2-.1v-.1l-.1-.33-.1-.12-.06-.16-.08,0-.48-.11-.2.22v.09l.19.44-.08,0Zm-.46,25.64.14.19,0-.09,0-.11h0Zm3.77-20.68,0,.05-.09,0-.06,0,0-.08-.06,0v.2l.21,0h.06l.11,0,.25,0-.05-.1Zm12.87-.15.24,0,.1-.05.23-.08.45-.09h.47l.33,0,.08-.08.14-.09,0-.14-.05-.13-.06-.05-.07,0h-.08l-.23,0-.26-.13-.29-.32-.13-.12-.3-.19-.16-.06-.52-.13h-.26l-.38-.07-.24,0-.17,0-.06-.06v-.08l.05-.08.3,0-.13-.14.06-.1.1-.09-.07-.15-.18-.12-.36,0-.36-.07-.37-.23-.4-.13h-.2l-.19,0-.08-.12-.07-.05h-.08l-.22,0,0-.07.05-.07-.18-.15-.33-.3-.09.1-.15.12-.09,0,0-.12-.19-.18.25.06h.13l.09-.1-.16-.07-.15-.1-.08-.1-.31-.27-.17-.06,0,.05.13.13v.05l-.1,0-.19-.07-.45-.26-.21-.17-.33-.32-1.09-.64h-.07l-.11,0-.12-.06-.14,0-.58,0-.19-.06-.17-.1-.19-.15-.18-.16-.24-.38-.34-.2.07-.13-.22,0-.07,0-.23-.16-.19,0h-.21l-.2,0-.19-.08-.18-.11-.12-.15-.07,0-.75,0-.29,0h-.07l-.18-.17,0-.06-.22,0h-.44l-.53-.14-.55-.1-.52,0-.51.16-.16,0-1.07.05-.17,0-1.68.53-.17.09-.36.28-.18.2-.06.26.08.4-.1.07h-.12l-.13,0-.08,0-.74.24,0,.08.09.07.11,0,.23-.1.12,0,.14,0,.12,0v.16l0,.17.11,0,.45-.2.22,0h.23l.07-.08.09-.23.07-.12.07,0h.54l.09,0h.12l.12.06.22-.06.2-.16.22-.1.1-.06.08-.08.22-.17.32-.15.16-.12.11-.06,1.73.15.13,0,.1,0,.09.06.08.09,0,.13-.06.08-.1.06-.46.06-.22.05.2.23.24.19.07,0,.77.1.17.18H211l.13-.06.06-.13,0-.13.08.14,0,.16.06.08.09.06.15.06,1,0,0,0v-.08l.18.21.15.23.16.14.18.11.46.22,1.12.43.17.06.17,0L216,185l.2.08.17.18.11.23.06.25.06.53.07.1.09.09.18.11.39.39.23.12.3,0,.54.1.26,0,.24.05.24.08,0,.08,0,.11.16.16,0,.08,0,.1-.1.12-.14.09-.74.41-.37.46.52,0,.53,0,.44,0,.23,0,.23,0h.55l.55,0h.2l.81.13.21.08.22.1.54,0,.15-.05.09-.07.06-.1.06.12v.11Zm21.76-55.64,0-.21-.12,0-.09.09-.14.34.29-.12Zm-10.37,72.78-.11-.24-.08-.07-.09,0v.17l.31.35.38.23.11,0-.15-.22Zm11.35-71.87-.14.21,0,.09.11-.08.15-.24Zm-9.7,59.36.06,0,.12-.17.1-.09.15,0,.11-.08.2-.24.05-.15-.08-.13-.12-.11-.46-.44-.44-.21-.27-.08-.27,0-.23-.07-.24-.09-.23-.06-.24,0v-.09l.05-.1h.17l.41.06.13,0,.07-.09-.18-.13h-.87l-.16-.16-.1-.23v-.25l-.13-.19h-.11l-.25.06h-.13l-.22-.1-.26-.23-.09,0-.33,0-.1,0-.19-.14-.1-.09-.24-.08-.27,0-.33.07h-.09l-.33-.12-.24,0-.12,0-.11.05-.09.11-.07.12-.09,0-.12,0-.25-.07-.54-.1-.43-.18-.41-.22-.49-.1-.51,0-.21,0-.2.05-.19.09-.09.17.07.15.17.05.54.1.38.21.31.21-.09.21-.07.21,0,.23-.16.12.31.4.35.35.23.17v.11l-.07.1-.09,0h-.42l-.09.07-.08.09-.09.05H228l-.26-.07-1.39-.25-.19-.11-.36,0-.23-.08-.25-.1L225,192h-.12l-.22,0-.22.35,0,.13.08.1.45.2.22.13.19.17.19.23.1,0,0-.14.17-.13.22-.06.27,0h.27l.24.06.22.07.58.16H228l.26,0,.09,0,.08,0,.11,0,.92.05.12.05.11.06.18.16.16.18.11.08.07.12,0,.14,0,.14.05.11.13,0,.1.08.15.2.09,0,.08-.09.22-.32.37-.44.06-.12v-.2l0,0,.09,0,.22,0,.35-.09.24,0,.15.16.17.12.62,0,.09,0,.17-.13.1-.06.26-.07.27,0,.26,0,.25.07H235l.26,0,.41.12h.28l.23.16.07.16.12.11Zm-24.4-16,.12-.06-.32,0-.11,0,.09,0,.1,0Zm.44-.21,0,0-.08,0,0,0h0l.09,0Zm1.18-1h0l-.15.08,0,.14-.11.11-.11.06-.07.1-.17.21-.06.1.45-.38ZM211.22,178l.07,0,0,0v0l-.19-.16v0l.08.15V178Zm1.61-.55h0l-.09.09h.05ZM205,166.23l-.14.07-.26.1-.1,0h-.14l.22.07.21-.06.37-.17Zm4.89,7.61.08.08.14.06.08,0-.16,0,0,0-.11-.17Zm.21,0v-.13l-.06-.25-.09-.09.05.25Zm.82,4.21V178l-.06-.1,0,.12-.12.08h.14Zm-.44.09v0h-.06l-.09,0v0h.05ZM181.81,56.21l.06-.21v-.12l-.05-.15-.07-.1-.16-.07-.08,0-.11.14,0,.07v0l.08.19.11.08Zm198.52,49.07.07.06h0l.05-.18,0-.08-.09,0-.2,0Zm-5.89,3.81,0,.12.13.19-.09.38-.33.39-.25.11,0,0,.26.17-.33.19-.32,0-.22.12v0l.15.06.19,0,0,.25.14.14.19.08.25,0,.19-.08.76-.49.06,0-.13.2-.16.19-.05.18-.14.11-.11.27-.12.2-.12.28-.07.33-.13.22-.08.7,0,0,.06,0,.14,0v0l-.23.22-.1.13-.08.13-.19.51,0,.14v.09l.07.09.18,0h.06l.06-.06.08-.1.44-1.07,0-.16-.07-.37v-.07l0,0,.06-.07.22-.19.44-.28.19-.09-.4.31-.11.14-.07.19v.21l0,.12h0l.05-.12h.12l.05,0,.05-.12.26,0,.09,0,.17-.24.09-.1,0,0-.11.22V113l.34.27.18.09-.47,0,0,0-.1.15-.06.27,0,.24.33.31.07.14v.15l-.12.22-.14.17-.42.57-.22.45-.12-.08-.13.06v.2l.06.18.19.29.24.22.06-.23.09-.15.08,0,.34.19.26.11.23-.07.23-.12.11,0,.09,0,.06.11.08.07h.12l.24,0,.13,0,.13-.1.13-.07h.13l.13,0,.24-.13.24,0,.73.06.09,0-.49.1-.43.35-.31.57,0,.28.3.48.16.23.3.31.12,0,.12-.07.13,0h.26l0,.12-.06.26-.09.23-.28.13-.05.17v.2l.1.08.12,0-.17.19-.14.2,0,.21.17.36.11.11.13.07h.11l.09.06-.24,0-.11,0-.28-.36-.22.07.11.38-.45-.27h-.21L378,121h-.24l-.25,0h-.09l-.64.19-.35.18-.13.1-.08.13-.1.11-.26.14-.25.16-.1.13v.1h.21l.24-.12.25-.08.26,0h.27l0,.14v.13l.09.17,0,.16-.07.12,0,.14,0,.14.14.06-.16.17-.12.22-.12.18-.15.12-.36.19-.38.1-.68.25-.44.09-.21.11-.18.18.12.06.06.15V125l.08.1.44.25.4-.12.25-.13.15,0,.3,0,.11.13.1,0,.38.09-.18.08-.13.15.24,0,.25,0,.11,0,.11,0,.26.16.39.38.55.11.07,0,.39-.24.22-.1.5-.07.16-.11.29-.17.23-.11-.36.33-.21.18-.23.16-.2.17-.37.4-.2.11h-.25l-.25,0-.48-.12-.48,0-.66,0-.07,0-.26.42-.48.1-.06.21-.05.21,0,.12-.62.48-.08.12-.13,0-.11.07-.09.11-.22.19-.44.31-.48.1-.19.16v.15l.06.07.16-.07.24,0,.23.07.19.18.22,0,.17-.25.08-.06.42-.23.19-.08.47-.1.27,0h.17l.17,0,.05,0H376l.13.13.41.2.21.17H377l.21-.21.14-.27.11-.32.19-.22.86-.16h.2l.25.07.24.11.22.17.23.06.09-.08h.09l.65.14h.08l.08,0-.09-.13,0-.14.35.05.37,0,.18,0,.18,0,.39-.17-.16-.22.27.13.31.06.27.1.26.13.17,0,.71-.07.51,0,.84.2.2,0,.24-.09.25-.08.33-.06.19-.12.39.06.05-.13.15-.19.68-.24.08-.07.06-.35v-.14l-.08,0-.24,0H387l-.26,0-.41-.1-.08-.06-.09-.18-.14,0-.22,0,.18-.08.18,0h.22l.21,0,.2-.07.09-.2-.05-.12-.29-.14.43-.18.3.09.18,0,.19-.1v-.15l-.08-.14v-.06h.09l.08,0,.21-.09.32-.23.08-.08.05-.11.1-.32.13-.24.11-.27,0-.3,0-.28-.11-.22-.54-.43-.22-.11-.44-.13h-.23l-.24-.07-.26,0h-.3l-.1.07-.19.21L386,123l-.11,0h-.1l-.47-.31.18-.17.19-.15.2-.13L386,122l-.14-.5-.26-.39-.83-.7-.4,0-.35-.11h.19l.22,0,.4,0,.19.16.2.13.11,0h.11l.08,0,.08.06-.19-.39-.22-.37-.11-.22-.06-.23.12-.16.16-.09L385,119l-.27-.27-.28-.36-.3-.33L384,118l-.79-.38-.15-.16-.11-.21-.22-.74-.15-.68-.13-.7-.08-.21-.14-.15-.2-.17-.35-.42-.25-.3-.91-.43-.49,0-.39.17h-.07l-1.14-.27-.2-.1L378,113l.19.11.43.12.25,0,.2,0,.19-.09.44-.3h.44l.21-.13.05-.18-.46-.27h-.42l-.23,0h-.24l.2,0,.2-.1.17-.06.57,0,.2-.08.19-.12.21-.21.18-.26.37-.36.41-.68.07-.14,0-.16.06-.14.2-.26.22-.19.13-.15v-.06l-.15-.36-.18-.21-.23-.09-.36,0-1.26-.14h-.19l-.19,0h-.1l-.43-.14h-.22l-.48.1-.51.14-.26,0-.3,0,.14-.28.42-.29.07-.09-.1-.07-.26-.06.05-.18.07-.13.46-.25.8-.5.43-.21.17-.16.06-.08,0-.08V106l.13-.21,0-.08v-.06l-.43-.08-.41.07h-.43l-.42.05h-.69l-.51.09-.11-.17h-.09l-.31.12h-.08l-.09-.15-.09-.06-.23-.06h-.11l-.09,0-.11.13,0,.09,0,.21,0,.1v.12l.09.15,0,.11-.11,0-.44,0-.14,0,0,.07v.11l0,.1-.15.21,0,.08.41.44,0,.08-.27-.09h-.06l-.07.07-.53,0-.14.16-.07.13-.13.32v.07l.05.13.07.09.19.09-.22,0-.15.07-.1.08,0,.09,0,.18Zm5.26-3.93h.12l.12,0,0,0-.11-.05,0,0v-.1l-.08-.15-.18-.06-.08,0,0,.08.06.13Zm5.05-4.92,0,0V99.8h.09l0-.09,0-.09-.18,0-.18.35.18.33ZM382,128.29l-.16.1-.27.06-.11.09h.1l.42.25h.11l.12,0,0,0,.07-.11.18-.07-.16-.14Zm-1.53-24.57.21.1v.2l.07.07.19-.06,0-.1,0,0-.17-.05-.08-.15-.22-.2-.15,0,0,0,.07.1Zm1.11.1.05-.08-.26,0-.15,0-.13.17h.23Zm1.86-2.83.06,0h.2l0,0v.09l0,.07.15,0h.18l.06.12,0,.12-.07.22L384,102l.1.11,0,0,.1-.25.1-.11.07-.32,0,0,0-.16.05-.09.18-.53,0-.19-.14.07h-.08l-.15-.22-.11,0,0-.22,0-.22h-.12l-.11,0-.19.2-.12,0,0,.07,0,.05.2,0,.13.43-.26.11-.17,0-.18,0v.06Zm-3.8,3.59.05,0,.14-.09,0,0v.16l0,0,.07,0,.36,0,.26.17h.08l.07,0,.07-.14-.1-.09-.14,0-.23-.08h-.15l0-.07.08-.08v-.06l-.06-.07-.21-.13-.19,0-.13,0-.09.19,0,.14v.1Zm-.67,27v0l.18.08.09-.17,0,0h0Zm.84.6-.05.24.15,0h.15l.07.06.1,0v-.13l-.13-.08Zm-6.73-22.3-.09-.06-.23.07.09.15.07,0,.08,0,.07,0,0,0V110Zm.32,3.62.05,0,.4-.52.17-.32H374l-.08,0-.31.16-.08.11v0l.12.06-.28.12-.07.09v.13l0,.07,0,0Zm-.23-5.51h-.11l-.06.19-.5.08v0l.06.1v0l-.05,0-.08,0-.12,0-.11.1,0,0,0,.09.12.16.48.14.15.28.07.11.11.06.22,0,.27,0v.44l.06,0h.08l.07,0,.27-.23.22-.14.06-.08v-.07l-.07-.06H374l-.38-.09-.05-.06-.09,0V109l0-.16,0-.15,0-.13,0-.24-.15-.21Zm1.63,6.62.09,0,.26,0,0-.13v-.23l-.09-.27,0-.08-.13-.08h-.14l-.06.05-.06.06,0,.14.09.4Zm-1.92-2.71-.06,0,0,.08.28,0L374,112l.07-.43-.15-.1-.22-.06-.16-.23-.14-.11-.07,0h-.1l-.22.08,0,0,0,.08,0,.06.34.2-.13.38Zm2.94,8.69v.35l.15.25h.11l.08.13.21-.09.17-.12.25-.1.08-.11h-.22l-.08-.06-.22-.29-.31,0Zm.57-2.83-.05,0-.18.07-.25.3-.18.1-.12.29-.1.13h0l.15,0,.17.07.44-.32.05-.11.12-.12-.05-.35ZM372.7,114h.11l.35-.12.08-.1v-.08l-.05-.23-.05-.38-.18.06-.21.12-.07-.05h-.06l-.08,0-.08.06,0,.07v.11l-.08.16v0h.08l.26-.18.07,0,0,0,0,.12.05.18-.09.14Zm-.31-3.09-.22.18v0h.12l.17-.11.1-.1,0,0Zm20.26,15.73.18,0,.26.2.26,0v0l0,0-.19-.17-.33,0-.19,0v0ZM414.49,35l.09.2.52.86.15.11.36,0,.43.26.33.29.4.5h.31l-.1-.34-.23-.33-.08-.16-.12-.13-.42-.21-.37-.36h-.34v-.31l-.19-.15-.14-.22.17-.16-.05-.14-.31-.45-.37-.21-.44-.11,0,.3.12.39Zm3.16,42-.18,0h-.2L417,77l-.25.29-.12,0-.14,0-.11.13-.12.11,0,.33.26,0,.09,0,0-.13,0-.08.14.12.2-.13.15,0,.25,0,.1,0,.15-.16.29,0,.15-.1.06-.1-.07,0h-.32ZM385.07,99.72l.17,0v-.1l.12-.26v0l-.06-.07h0l-.09.07-.06,0-.05,0,0,0,0,.15,0,.16Zm29.57-14.9.13-.08-.06-.08h-.41l-.16.07-.1.12,0,.14h.17Zm-.16-.55v-.19l-.18-.13-.14.08,0,.11-.07.09-.17.13,0,.15H414l.34-.07Zm1.45-6.69-.24.18-.19.34-.14.32.32-.16.23-.19,0-.08v-.16l.07-.16Zm3.64-2.32-.07-.06-.28,0-.13.16-.28.2.05.18.24.12h.19l.28-.12.1,0,0,.11.17.11.28,0h.41l.28-.18.13-.39-.11-.22-.24-.39-.06-.14-.09-.09,0,0-.14,0,0,.38-.34-.09-.07.09v.14l-.12.19Zm7.56-2.08.29,0,.78,0,0-.09,0-.13.24-.22.21-.18.27-.17.14,0,.29,0,.25-.3.33-.21,0-.17-.21-.13-.12,0-.05.07h-.17l-.17-.21,0-.42-.06-.26h-.17l-.17.28,0,.11,0,.19-.07.17-.17,0-.18.1-.14.18-.3.23,0,.09,0,.15-.06.16-.09-.13-.09,0-.16.13-.22-.07-.12,0-.08.19-.11,0-.08.09,0,.15h-.3l-.05.08.13.17Zm3.14-18.31.27-.14.13-.26,0-.09-.15-.17-.67,0-.14.11.23.32Zm0,16.24,0,.2.07.13.24,0h.22l.18-.08v-.1l-.18-.09-.16-.21-.08,0-.11,0-.1,0-.16-.23-.18,0,0,.17Zm-11.86,6.24.19.06.58,0,.65-.34.22.1h.13l.19-.06.21-.21h.12v.19l.2.06.52-.11.18-.18h.15l.07.06.08,0,.14,0,.17-.21.32-.24.31-.08.39-.2.08-.3-.12-.32-.1-.14-.19-.14h-.11l-.1,0-.17,0-.07.15v.19l-.13.1,0,.12L422,76l-.31.32,0,0,.08-.2.31-.39,0-.31v-.32l-.14-.2,0-.23.4-.29.29-.35,0-.21-.16-.11-.17,0-.16.08-.34.36-.2.12-.37.3-.11.22V75l.18,0,.06.14-.18.23-.21.67-.7.57-1.07.06-.33.19-.39.27Zm-23,45.19.4-.17-.17,0-.26.16Zm1.9-20.94-.11-.2h-.07l-.07.1,0,.23,0,.21,0,.09.07.14.19,0,0-.37Zm-2.23,21.57.22-.18,0-.31-.32.23-.07.15,0,0ZM372.42,106l-.08.06,0,0,.11.27v0l-.18,0-.15,0-.13-.11-.12,0h0l0,.06-.09,0,0,.13v.13l0,.05.08,0,0,0,.06,0-.14.09,0,0,.11.09.28.15v0l-.19.08,0,.08-.28.13.14.17.06,0h0l.1-.06.13-.15h.12l.25-.23.23-.08.34-.21.05-.06v-.1l-.06,0-.25,0,.3-.13.1-.12h.1l.3-.5,0-.22,0-.16,0,0-.13,0-.54.27ZM404,92.7l.23.06.21,0,.08-.09v-.21l-.12-.14-.28,0-.29.09v.1Zm6.91-4.84-.45.15-.17.16.19.11.48,0,.24.09.11-.08,0-.14-.21-.25ZM397.33,99.43l0-.19-.11-.17h-.11l-.08.05-.08.29.15,0Zm7.91-7.66.67-.07.06-.07v-.15l-.08-.11h-.07l-.06.09-.54.09-.35.12.13.09Zm7.42-6.15-.08.17,0,.09.25.05.15-.09.08-.17-.05-.08-.21,0ZM220.31,90.19l.09,0,.13-.11,0-.08-.08,0-.11.13h-.09l-.06.12v0Zm7.52-12.27-.5.27.6.5.27.16.28.09h.22l.08-.35-.21-.25Zm5.43,3.63-.21-.12-.13,0h-.12v0l.25.16.5.19.41.08.11,0,0-.06-.05-.09-.19-.07Zm-11.71,19.79.08.13h.11L222,101l.16-.27.2-.28.07-.15-.05,0,0,0v-.08l0-.15-.06,0-.17-.07,0-.06,0-.14-.06-.06-.11,0-.07-.06,0-.08,0,0-.1.4-.09.24-.13.28-.15.18-.17.08,0,0,.1-.15.09-.18.12-.39V99.6l0-.07h0l0,0v.18l-.05.16-.08.22-.19.23-.43.34-.48.49,0,.06,0,.06.17.08.27-.19.49-.48,0,0,.1,0v.06l-.62.79.35-.18.16,0h.07l.09,0,.1-.11.44-.67.09-.09.08.09v.06l0,.07Zm-6,8,1,.37.52.25.18.06.42.11.15,0,0-.1v-.12l-.09-.27-.26-.34-.45-.5-.41-.09-1.07,0-.12,0-.11.09-.2.22.07.11Zm2-29.42,0-.18v-.13l-.08-.1-.09-.06-.17,0h-.22l-.47.09-.51-.06-.56.18h-.12l-.18,0-.36-.15-.18,0-.84,1-.35.27,0,.07V81l.27.34.06.15v.27l0,0,.68-.19.26,0,.25.12.12,0,.11,0,1-.55.17-.12.23-.22.6-.38.2-.23.09-.15Zm3.68-2.75.09-.13-.37-.23-.45-.16h.19l0-.07-.07-.14-.17-.19-.26-.23-.19,0-.19.21h0l-.17,0-.47-.17-.8.12h-.35l0,0,.4-.26.09-.08,0-.08v-.14l-.17-.72-.26-.46-.23-.3-.21-.18-.23-.12-.64-.18-.17-.08L216,73l-.42-.22-.05,0-.34-.48-.17-.11-.47-.16-.37-.07-.37-.15-.09-.1-.08-.25-.17-.18-.46-.35-.14,0-.09,0-.37.45-.16.16h-.09l-.07,0-.23-.62-.37-.27v0l0-.07.21-.14.06-.1,0-.24-.08-.19-.12-.17-.41-.2-.09-.2-.06,0-.06,0-.31.1-.25.15-.34.41-.13.21-.15.35-.11.38-.26,1.35-.11.38-.31.75-.08.32,0,.2v.43l.13.46,0,.2V75l-.13.13-.24.12-1,.35-.1.06-.22.22-.29.35-.08.14,0,.13,0,.12.05,0,.2.06.28,0h.15l.58-.24.56.06,1.05-.08.07,0,.06,0,0,.09.21,1.28.12.44.2.08.33,0,.59-.14.36-.14.35-.17.17-.12.11-.12.28-.43.18-.18.1,0,.25,0,.26-.13.65-.45.15-.19.06-.14.07-.31.08-.14.2-.12.4-.12.25,0h.25l.1.11-.07.22v.12l.21.09.73.19.21.13.07.63.06.1.48.09.37.12,1.19.5.39.21.27.09h.07l.13-.05.53-.34.45-.22Zm20.17,4.91-.46-.27-.32-.13-.37-.11-.25-.06h-.17l.15.2.31.11.26.29v.18l.14.18.16.08.29.1.28,0h.14l.11,0,0,0,0-.13-.15-.17ZM246,89.27l-.22-.07-.12.07-.22.31-.24.28-.07.14v.18l.08.08h.19l.47-.16.2-.1.17-.15.07-.17-.05-.13-.13-.16Zm6.53,1,.14.11.36.2.23.09.09-.21-.18-.2-.06,0-.22-.24h-.28l-.12,0v.17ZM242.81,94h0l.07,0,.16,0,.14-.21,0-.07-.05,0,0-.07v-.16H243l-.06.07,0,.14,0,.14Zm8.77-7.66v.12l.06.16.6.4.07.07.2.08.14.18h0l.05,0,.11-.14.12-.07.08-.1,0-.21.06-.17-.18-.15-.06-.08-.33-.1-.37,0-.42,0Zm-26.87-29.8-.33-.11-.26,0-.33.12-.22.05-.18,0-.13,0-.08-.17-.09-.08-.17,0-.27,0,0,0,0,.14,0,0-.38-.08-.16,0-.11.1-.05.08,0,0,.67.16.1.07.13.17.06,0,.07,0,.05,0,0,.12.13.11.23.1.15,0,.05,0,0-.13-.13-.29.33.12.69,0,.33-.17.08-.1,0-.07Zm.59,5.24-.42,0-.07.25v.1l.21.21.17,0,.34-.25-.07-.15ZM426.55,73.81l.13-.16,0-.22-.09-.18-.16,0-.12-.15-.16-.08h-.22l-.12,0-.23-.23,0,0,0,.07-.07.14h-.21l-.22.07-.05.09.29.16,0,.09-.08.12-.57-.11-.18.12v.12l-.06.16,0,.34-.07.19-.28.07-.06.06v.08l.31,0,.23.1v.12l.17,0,.37-.35.36-.21.15.14H426l.37-.06,0-.28.06-.2Zm-205.16,10,.21.24.15.13h.11l.11,0,.1-.1.14-.19.16-.3.19-.26.2-.22.12-.18.05-.24.1-.26,0-.19-.09-.16-.25-.31-.15-.1h-.11l-.11,0h-.13l-.32-.06-.13,0-.21.15-.36.38-.13.19-.06.13-.05.17,0,.2,0,.42,0,.13.11.14.23.11Zm-6.58-14.27v-.11l-.16-.17-.33-.23-.34-.2-.58-.23-.11.08,0,.06,0,.08.16.19.2.09.09.08.06.1.09.1,0,.13v.36l.22.08h.14l.27-.08.05.07.17.06-.21.14,0,.1.05,0,.28.06h0l0-.06,0,0,.07,0H215l.08.11.09,0,.23.11h.1l.15-.11.07-.09v-.07l-.06,0-.43-.07L215,70l-.25-.15-.08-.13.12-.09Zm11.41-11.86.23.06.17,0,.35-.15.57-.16.16-.1,0-.1-.09-.19-.23-.11h-.12l-.13.07,0,.11-.06.07-.1,0-.13.08-.37,0-.47.38-.13.14.11,0ZM215.9,68.29l.13.16.17.13.11,0,.18-.16,0-.05h-.15l-.21-.06-.19-.2,0,0v.1Zm-4.1,1.24.07.22,0,.07.28.19.12.14.07.18.09.1.11,0,.11,0,.11-.09.06-.09v-.08l-.15-.48-.11-.23-.22-.3,0-.1,0-.09,0,0-.19-.07-.25,0-.06.14v.1l.05.2ZM225.56,59l-.46.09-.21.13-.15.19-.11.12-.08.06,0,0,0,.12.05.13.16.08.15,0,.34-.11.42-.08.16-.11.17-.22.25-.22.08-.09,0-.08,0-.06.21-.18.33-.2.13-.14v0l-.06-.17-.05-.07-.07,0-.26,0-.29,0-.12.06-.08.09v.09l.07.1,0,0-.23,0-.07.06-.23.34Zm17.57-31.23.43-.09.08-.17-.24-.06-.37-.16-.51-.16-.21-.05H242l-.4,0-.12.06,0,.2.24.15.71.23ZM371,108.23l.28,0,.21-.26-.22-.18-.14.06-.11,0-.15,0-.09,0h-.07l-.06,0,0,.06v0Zm-.52,1.69.19,0,0,0,0,0-.09-.06-.14,0-.05.1v0Zm.24-.7.06.19.07,0,.11,0h.09v-.76l-.06,0h-.23l0,.24,0,.2ZM371.08,64l.68-.32.71-.1.64-.18.06-.28,0-.23-.72.09-.4.38-1,.36-.29.2.1.09Zm-6.46,54.23.14.11,0-.08V118l-.08,0-.3,0-.08,0-.19.1.42.08ZM373.17,95l-.1,0H373l0,.12.05.08.15.09.18.16h.06l.05-.12v-.07l-.07-.11Zm-.92-.55.15,0h.13l.12-.08-.06-.09-.18-.14-.1,0-.21,0-.18,0,.08.22Zm-7.87,28.74.09,0-.08.11-.21.08-.22,0-.19.11-.32.27.06.2.21,0,0,.09.27,0,1-.2-.32.11-.12.11-.1,0-.17.09-.31.18-.12.14h.24l.23-.08.67-.06.12,0,0,0-.36.14-.29.31.2,0,.43-.1h.15l.15,0,.13.07h.06l1-.16.18-.13.3,0,.24-.13h.15l.12-.06,0-.14v-.16l0-.08-.08,0h.25l.07,0,.06.08.15.12.19,0,.22-.09.18-.18.08,0,.36-.06.09,0,.08-.06.06-.12.08-.09.19-.05.47,0,.28,0,.17-.06.09-.23.09.23.05,0,.06,0,.17-.07h.18l.28.09h.25l.25-.11-.27-.29.14,0,.12-.09.3-.37.06-.33.08-.2.09-.18.14-.16.1-.16v-.46l0-.21-.1-.39,0-.18.05-.07v-.19l0-.11v-.22l-.09-.19-.05-.3-.06-.27-.1-.12,0-.18v-.12l.09-.07.16,0,.15,0,0-.1-.08-.11.2.1.2,0,.18-.1.14-.18.06-.12.06-.09h.25l.22-.06.12-.27-.15,0-.05,0,0-.27,0-.21.12.05.09.08.07.15.09.06,0-.16,0-.16-.06-.19-.11-.13-.32-.06-.14,0-.16,0v-.12l.25-.1.12-.08v-.17l-.3-.31-.21-.34-.08-.34-.18-.22-.21,0-.29-.09h-.21l-.47.1h-.27l-.13,0h-.12l-.2.28-.15.08-.16,0-.07-.11.1-.12.25-.1.21-.15-.2-.1-.18-.13-.18-.15-.13,0h-.12l.12.19-.33,0-.13.09,0,.15.05.15,0,.15v.13l-.23.13-.16.06.15-.15-.08-.09.1-.07.07-.11v-.14l-.09-.09,0-.13-.08,0h-.2l0,.18-.11,0h-.33l-.09,0-.28.08-.29,0-.07.1-.06.14-.14.1-.05.15.05.22-.21.15-.12.06,0,.07-.23,0-.15.08-.11.13.62.26.68,0-.14.16-.09.2-.12.06-.27,0-.12,0-.18.09-.16.15.1.13,0,.18-.09,0-.32-.12-.53-.11h-.07l-.15.15-.09,0-.33-.28-.51-.07h-.33l-.23.07-.23,0-.12,0-.13,0-.08.12,0,.17.25-.07.06.13v.19l.17-.05v.14l0,.12-.1.18-.05.21.35,0,.35.06,0,.1,0,.11-.35,0-.33.12,0,.09V119l.11.07.27.11h-.33l-.26.06-.12,0-.12,0v.11l.1.1-.08.08v.09l.18.06h.22l.21,0-.17.13.09.07.11,0,.16,0,.15,0,.05,0,0,.15.05.06.08,0,.09,0h.69l.22.06.21.09-.15.12-.07,0h-.07l-.16.06h-.22l-.12.07-.37.39.09.06,0,.09-.16.19-.12.11-.49.34-.39.18h.32l.31-.1.06,0,.07,0,.2.09.14,0,.45,0,.17-.08.24-.22.13.13.29.11-.58.12-.58.07-.53,0-.1,0-.28.2-.17.06-.15.09.1.09v.23l.14.13h-.35l-.11-.07-.14-.06-.14,0-.17,0-.32.15-.06.1,0,.1.29,0Zm9.38-29.13,0,0,.14,0,.12-.22-.13-.11-.15-.22,0,.25,0,.16Zm-.61.68.17.09,0,0V94.7l-.16-.3-.06-.05v-.08l0-.06.11,0,.15.13h.08l.08-.43-.34-.15-.31-.18-.45.06.28.64Zm-124.59-36h-.17l-.22.06-.28.13,0,.13.53.21.06,0,.16-.17.19-.13-.14-.17ZM258,99.31h-.1l-.09.05-.09-.05-.06,0v0l.06.16.35.25.33,0,0-.32-.17-.1Zm-5.47-13.65-.06,0,0,0-.07-.15-.11-.06h-.1l-.09,0,0,.09v.11l.12.22.47.24h.07l.11-.08v0l0-.07-.12-.09,0-.06,0-.09Zm6.1-16.74.42-.24.2-.14,0,0h-.11l-.32,0-.09.09-.21.11-.15.13-.1,0,.13.13Zm-5.85,14.83-.06.08.11.12L253,84l.36.1h.24l.14-.08.15-.21-.09-.16-.1-.06h-.24l-.4-.06-.05,0v.06l0,.07,0,0ZM373.14,96l-.23-.07,0-.09-.06,0v.1l.07.22.22.28.14.12h0l0-.09v-.17l-.06-.13V96ZM204,5l.4-.07.58-.2.44,0,.29.11.31.06,1.05.06L207,5l-1.53.61-.12.16.39.15L206,6l2.8-.47,1,0,.78.09,1,.25,0,.07-1.06-.12h-1l-.57.09-1.14.34-.53.24.07.14.86.32-.12,0h-.63l-.81.2-.09.22.37.33.34.18.46.07,1.07-.08,3.35.15L213.49,8l1.6-.46,1-.14h.41l.55.08-.31.17-1.55.48-1.42.32-.95.1-1,0-2.12-.22-1.58.16-.21.12.09.16.13.15.17.13.28.13.6.22.79.38.46.17.6.14h.8l.53-.23,1.84-.94.58-.25.39-.08,2.4-.13,2.81,0-.14.21-2.78.08-1.2.17-.84.24-1.32.55-.41.26-.36.28,0,.16.17.14.57.23.31,0,.78,0L216,11l.34.05,1.51.09.41,0,.31-.07.41-.18.52-.31.52-.15h1.3l.59-.08h.58l-.25.19-.93.4-.27.23.56.14.51,0,1.71-.17.52,0,.62-.08,1.86-.38.8-.32.33-.16.14-.12.16-.24.18-.36.22-.23.23-.12.27,0,.29.06.42-.12.83-.46.82-.29L233.79,8l-.32.2-1.07.23-1.62.62-.38.23-.37.32-.13.19-.09.24.33.17,1.13.17,1.27.09.56.09.55.13,0,.06-.64.06-.71,0-1.84.1-2.62.45-.1.1-.82.4-2,.25-3.25.08-.52.06-.43.12,0,.21.54.53.68.57.94.59.42.34.56.53.35.28.34.21.6.14.89.05.33.07-.31.13-.44.1h-.4l-.76-.12-.87-.26-.45-.18-.33-.2-.38-.31-.64-.64-.59-.44-.66-.34-.66-.49-.76-.45-.68-.21-1.28-.18-1,0-2.36-.41-.42.25-.29.62.21.51.09.82.53.52.23.12,1.18.24.38.15.35.27.48.58.61.6.27.37.35.38.43.32.64.38.16.18-.51-.06-.46-.22-.42-.14h-.26l-.31.06-.09.13.13.21.17.16.19.11.35.1.75.12,1.49.14.85.22.42.05.43-.06.44-.14.3,0,.29,0-.08.11-.43.2-.36.13-.3.06h-.32l-1.13-.1-.34.14-.27.15-.24-.06-.32-.14-.73-.22-1.81-.35-.44-.16h-.47l-1,.2h-1.15l-1.19.13-.34.47-.47.45-.44.32-.29.26,0,.59-.17.47.43.23.88.09.46-.07.57-.16.77-.33.33-.24-.35.68-.36.44,1.32,0,.36-.12.33-.23.55-.47.57-.92L216,21.61h.75l.32.23.33.16-.62-.14h-.18l-.91.53-.51.19-.61.32.47.76-.06.9.4.22.47.11.8-.21.64.22.5.06.31,0,.76-.33.27-.21,1.35-1.18.23-.11-.08.24-.1.2-.11.17-.44.48-.77.6-.49.27-.16.13-.14.16-.24.11-.53.06-1.07,0h-.53l-.43-.1-1.29-.48-.28-.23-.33-.49-.51-.62-.42-.31-.74-.3-.54-.17-.45,0-.55.05-.55.12-.56.18-.18.28.28.55.29.49.19.26.18.2.31.23.34.05.17.06.16.12.43.5.12.08-.08,0h-.44l-.63.08H210l-.45-.08h-.66l-.53.05-.34.11-.47.31-1.56.6-.15.71-.11.71.41.11,1.17.16.52.2V28.4l-.08-.46.29-.5,0,.83.12.76h.61l1.25.21.08-.85.24.61.77.21.6.2.29-.57.25-.27.07,0,.1.14.12.26.36.27.87.43.69.21.42.07,1.81-.08.21-1.35.43.81.2.19,1,.14,2.41.07.06-.2-.09-.27-.17-.27-.27-.29-.06-.11.27.16.16.16L221,29h.21l.16.07.4.49.21.13.26.07h.25l.23-.05h.4l.2.08.19.14.28.28,0,.17-.15.19-.13.21-.1.23.06.13.33.07h.23l1.06-.19h.49l.94-.18.48-.15.33-.18.43-.17,1.38-.41.37-.28.32-.46v-.42l-.32-.38-.24-.2-.17,0-.18,0-.44.23-.28.08-.39-.07-.48-.22-.19-.21.11-.19v-.26l-.1-.32-.31-.19L226,27l-.63.15-.11,0-.8-.47-.25-.09-.66-.09-.34,0-.55.14h-.46l-.17-.06-.25-.17-.2-.17,0-.05.6.05.51,0,.47-.11.06-.08-.2-.11-.25-.21-.29-.33v-.12l.29.1.28.14,1,.62.61.24.6.1.78.07h1.6l.56,0,.33,0,.46-.08.45-.16.25-.18.21-.25.1-.42,0-.58,0-.44.08-.28.1-.15,1.16.09,1,.16h.55l.75-.18.58.06h.22l.22-.05.73-.89.78-.42-.08-.13-.51-.26-1.31-.5-.57-.13.09,0,.85,0,1.17.12h1.08l.72-.29,0-.17.23-.28-.1-.13-.27,0-1-.53-.62-.16-.81-.1-.3-.34-.25-.14-.37-.13-.55-.12-.62,0-1.44.07-.39.08-.39,0-.31-.13-.37-.26-.4-.18-.28-.05,0-.1.67,0,.59.07.5.13.68.05,1.31,0,.5,0,.32-.06.46.05.52,0,.55.18.25.14.57.16,1.23.09.23-.06.17-.8-.51-.06-.77.08-.53-.15-.51-.09L235,18.2l-.34-.09-.34-.43-.76-.36-.38-.08-.08-.12,1.08.17.63.15.59.24.56.12h.51l1-.1.81.09.45,0,.37-.09.31,0,.83.1.22,0,.15-.07.12-.13.1-.2-.05-.22-.33-.44-.13-.13-.34-.09-.85-.1-1-.25-.24-.11.56-.14h.52l.69.21.74.15,2.05.78.45.07.53,0,1.21-.19.19-.09.42-.27,0-.13-.35-.17-.16,0,1.27-.31.44-.3v-.11l-.38-.15-.25,0-1.55.12-.68-.12-.23-.11,0-.08.27-.06h.28l.27.05h.4l.78-.14,1.75-.08.13-.2-.86-1.15-.08-.17.15.07.46.36.51.33.4.15.44.06.39,0,.32-.17,1-.7.71-.39,1.85-.73,2.23-.7.9-.44,1.77-.54,1.41-.65.13-.25L258,9.51h-1l-5.44.72-.47,0-.37-.09.08-.15,3.75-.65.12-.06.13-.13.09-.17.31-.24,1.29,0,.64,0,.43-.08.22-.22.37-.11,1.35.16.29,0,.66-.21,1.13-.17,2.33-.62.68-.13.45-.3.76-.31.75-.42.16-.3-.17-.31-.18-.23-.16-.14-.45-.14-1.6-.28-1.62.22V5.08l.37-.31,0-.16-.59-.5-.41-.24-.1-.1,0-.08.13-.09.19-.1,0-.11-.29-.13-.7-.14h-.31l-.64.18H260l-.26-.23-.27-.32-.25-.14-.17,0-.27.05-.11.08-.19.25-.12.09-.21,0-.3-.15-.36-.11-.83.12-1,.25-.54.08h-.27l-.85.18-.71,0-.9,0-.62-.09.24-.1,3.21-.47.51-.18.38-.2V2.23l-.34-.11L254,1.93l-.45-.09H253l-.37-.06L252,1.51h-.55l-1.69-.23-.16-.05-.41-.38L249,.74l-.21-.05L246.9.63l-.45.05-.72.26,0,.11.41.19.53.34,0,0-.39-.14-.55-.31L244.6.44l-.18,0h-1.55l-1.11.34-.16.1-.08.15,0,.21.4.34.92.53.23.19-1.25-.35-.87-.48-.42-.3-.27-.29L240,.66,239.53.5,236.78.11l-2.87,0,.15.22.26.27,1,.61.44.33.19.19.89.48.15.19-.39.15-.56.15-.28-.1-.18-.29-.17-.22-.17-.15-1.6-1-.51-.28-.28-.09-.72-.11H231L229.61.14,228.16,0l-.57.1,0,.08.33.21.27.24.39.19.88.34.85.26.08.08-.6,0-2.14-.33L226.49.74l-.73-.11-.25.07-.11.08,0,.15.65.71-.11.07-.67-.17-.79-.31-.43-.06-.69.05,0,.13.32.22.56.27-.08.06h-.64L223,2l-.39.16v.16l.38.33.51.33,1.06.52,2.71,1,1,.56.4.42h-.09l-.44-.21L227.72,5l-.5-.24-.81-.2-2.1-.74-1.39-.6-.53-.19h-.21l-.15.08-.1.15.18.21.65.38-.07.13-.57-.11-.28-.11-.47-.27L221,3.27l-.8-.77-.48-.15-1.12-.21L218.27,2l-.38-.23-.31-.08-.81.16-.44.16-.68.32-.26,0-.57.13-.9.08.07.16,2.57.92.29.12.23.17V4l-.74-.06-.29.12-.23,0-.46-.14-.57-.3-.45-.13-.51-.07-.44.06-.36.17,0,.17-.4-.24-.36-.3-.48-.19-.87-.13-1.06.1-.66.16-.6.27-.48.15-.53.07-1.1-.08-.69,0-.95.17-.59.16-.44.18-.49.26-.09.23.56.33Zm149.2,9.89.66.5.54.1.23-.14-.27-.53-.49-.54-.48-.41H353l-.25.17v.43ZM296.59,8.33l1.2.45,1.35.64.83.6.43-.06.25-.78.11-.79L300.45,8l-1-.57-2-.74-.82.08-1,0-.18.28.06.34ZM239.43,50.84l-.24-.15-.4-.17-.63.38L238,51l-.09.2.21.53V52l-.15-.17-.27-.21-.14-.42-.28-.19-.17-.25-.3.23-.27.16-.2.16-.29.06.74-.68.36-.44,0-.1-.21-.11h-.11l-.27.07-.32.23h-.56l-.18.08-.25.22L235,51l-.17.48-.53.42-.08-.06.25-.3.21-.33,0-.16-.05-.21.1-.25.28-.27,0-.11h-.54l-.47-.13,0-.07h.65l.23,0,.36-.15.65-.16.15-.19.09-.16,0-.15-.1-.24,0-.05-.17-.08-.29-.09-.36-.08-.43,0-.52.1-.61.26-.37.22-.22.29-.29.34-.17.11-.05,0,0-.05.28-.26.34-.49.22-.25.32-.1.76-.66,0-.17-.05-.21-.08-.21-.12-.23-.21-.2-.82-.42-.27,0-.28,0h-.25l-.21-.06-.57-.28-.45-.28-.39-.13-.75-.12-.64-.05-.39,0-.53.1-.75.28-.16.1-.08.11-.05.13,0,.14.06.15.32.31.73.32.46.25.32.1,0,.16-.43,0-.78-.45h-.4l-.25,0-.3-.22L227,47l-.27.31-.14.63.13.28.15.23.17.16.06.15v.07H227l-.32-.22-.45-.46V47.9l0-.32.06-.32L226,46.9l-.26-.15-.23.19-.33.06-.14-.08-.07-.18-.16-.25-.1,0-.21,0-.25.12,0,.05-.1.18,0,.12.4.51h-.1L224,47.3h-.14l-.44.2-.71.56-.22.21-.12.06h-.14l0,0,0-.08,0-.13,0-.17,0-.13,0-.09.08-.05.09,0,.23,0,.09,0-.45-.37,0-.08.27-.17.27-.28.23-.33v-.09l-.31-.05-1,.61,0-.13.51-.4.71-.46.56-.43.22-.13.11-.1v-.1l-.31-.2-.13-.17-.16-.29,0-.28.1-.26,0-.23-.15-.18-.28-.19-.4-.18-.25-.29-.13-.67-.18-.49-.12-.15-.39-.28-.7-.19-.52-.07-.95,0-.39,0-.21.05-.17.08-.82.12-.68.17-.38.16,0,.07.26.34,0,.05-.62-.22-.68,0L215,42l-.85.15-1,.83.13.25.59.22,1.65.78,0,.15-1.48-.59-.56-.18h-.26l-.14.07-.27.25-.11.14-.06.17,0,.2v.35l0,.11.11.15.1.24.2.27.1.1.37.18h.21l.2-.07.23,0,.46.15,0,.09-.35.06-.07.08.12.2.26.28.58.42.13.15v.05l-.14,0-.51-.34-.82-.41-.63-.1-.18,0-.32.42-.26.13-.42.12-.11.13.19.13.43.38.16.2.21.36.11.13.17.09.25.08.2,0h.4l.28.13.07.18v.27l-.06.28-.1.3-.24,1-.09.24-.1.09-.24-.13-.12-.11,0-.08,0,0,.1-.16-.19-.07-1.14-.09-.38.07-.65.24-.41.09-.48.07-.08-.09.25-.1.63-.16.5-.21.4-.09.74-.06.58-.25.25-.17-.1-.18-.49-.39-.41-.28-.42-.36-.56-.54-.34-.52-.12-.49-.06-.38v-.27l0-.27.09-.54,0-.22-.1-.26-.41-.56-.11-.26v-.15l.12-.42.12-.14.21-.18.91-1.12.19-.19.71-.54.41-.23.62-.25.51-.33.06-.1-.06-.17,0-.07-.2-.13L212.4,40l-.94-.1-.76,0-1.48.18-.52.11-.45.16-.53.27-1.16.68-.05,0,0,.09v.12l-.05.09-.46.2-.31.25-.25.28-.09.14-.07.21-.07.28-.06.39-.08.14-.4.42-.38.45-.27.37-.11.21,0,.17,0,.21,0,.25.06.16.22.12.11,0,0,.07-.59.37-.22.37v.18l.07.21.06.41,0,.61.07.36.07.12.22.16.55.32.69.29,1,.26,1.09.14.38.1.23.13.37.29.4.24.46.19-.09.09-.74.06h-.65l-.4,0-.55-.17-.41-.21-.37-.08-.68,0-.7-.14h-.19l.09.11.06.15.19.72.08.19.68.94.13.12.24.1.53.15.45.31.54.48.13,0,.1,0,.26-.17.11,0h.24l.55.1.36,0v-.07l-.16-.14,0-.08.11,0,.64.14h.22l.17,0,.49-.2-.08.07-.08.14-.09.2,0,.23.21.45.08.1.24.17.85.32.74-.22.78.19.3,0,.16.07.12.12.5.14,1.36.26.68.05.8-.1.12,0,.34.15.87.45.4.14h.32l.39-.08.83-.2,1.27.87.18-.13v-.08l-.15-.22-.19-.2-.34-.33-.26-.17-.19,0-.22-.1-.24-.2.2,0,1,.15.55.17.32,0,.58.2.26.07.2,0,1.11.46.2,0H225l.45-.08.43-.16.16-.11.1-.13,0-.2,0-.29-.1-.24-.13-.2-.16-.13-.67-.23-.11-.11,0-.14.12-.15.21-.19.21-.13.2-.09.17.1.15.28.13.18.11.07.29.37.09,0,.17.13.4.35.11,0h.15l.66-.05.14,0,.09.26.06.48v.28l0,.24.08.21.2,0,.54,0,.45.1.1.05.21.2,0,.11-.33.18-.18.05-.06.06.08.07.14.08.21,0,.35.16.12,0,.22-.22.17-.09h.18l.39.12v0l-.49.09-.12.1,0,.15V58l.1.19.11.11.19.08.26.06.29.11.52.29.07.08.19.33-.06.19-.21.18-.21.14-.21.09h-.28l-.6-.14-.24.06-.13.06-.08.12v.46l0,.11-.05.09,0,.11v.14l.06.08.38.05.35-.1.85-.34.47-.13.22-.22.14,0,.19.06.3.17.24-.1.33-.27.22-.14.1,0,.18.08-.12.08-.31.11-.09.07.06.08.22,0,.15.09,0,.07-.34.23,0,.05.17.06h.13l.1,0,0,.07,0,.12.09.18.43.49.14.1.16.07.18,0h.41l.05-.11-.28-.46.1,0,.28,0,.18,0,.05.06,0,.1,0,.15v.14l-.14.28-.08.12,0,.12.11.24.13.15.21.12h.14l.58-.2.05,0-.11.16V63l.51.61.28.6.33.5.27.56.38,1.14.1.13.13.09,0,.11-.33.39-.26.1-.39.07-.26.12-.36.48-.08.19,0,.21-.11.12-.35.08-.17.07-.17.12-.17.17-.34.23-.76.46-1,.44-.09.13-.05.09.06.15.24.31.47.5.4.28.16.14.18.4.15.38v.2l-.26,0-.41-.15h-.23l-.31,0-.21,0-.34.27-.22.07h-.17l-.19,0-.38-.11h-.27l-.14,0-.14.1-.13.15H232l-.8-.2-.2,0,.05.14.52.45.11.12.1.15.06.17,0,.13-.11.1-.06.12v.15l-.06,0-.2-.14-.06-.09v-.08l.07,0,.14-.22,0-.14-.24-.3-.36-.32-.47-.24-.84-.35-.61-.19-.37,0-.28-.06-.31-.13-.16,0-.07,0-.16.2-.07,0v.1l.17.37v.08l-.19.1-.91.23-.26.15-.13.12-.1.14-.13.43-.11.18,0,.12v.17l0,.16.24.41.12.13.38.35.06,0,.27,0,.21.08.24.16.25.08h.24l.29.07.34.13h.28L229,76l.14,0,.13,0,.19,0,.61-.19.19,0,.44,0,.11,0,.14-.43h.47l.32.19.23.09.3.06h.36l.42-.07.13-.19-.16-.32-.17-.24-.19-.18v-.08h.22l.14,0,.06,0,.08,0,.09,0,.08.14.06.23.08.16.1.1.09,0,.43,0,.15.08,0,.46v.09l.06.07h.08l.1,0,.07-.09.11-.36.09,0,.15.07h.14l.22-.1.43.13h.3l0,.07-.38.42,0,.08.16.08.21.17.18.18.5.59.36.31.1,0,.08.11.08.3.17.26.09,0,.48-.2h.15l0,.06-.09.1-.18.26v.09l.14.07h.8l.23.08.19.16.12.12,0,.1.06,0,.27,0,0,.08-.15.13-.35.19-.17,0-.26,0h-.32l0,0,.27.22.45.58.22.22.31.22.19.09.56-.21h.1l-.34.31,0,0,.21.09.4.26.47.16.45.29.22.11.34,0,.23,0,.34,0,.4.11.11.08.33.58.46.51.09.07.72.33.18.14.19.09.33.1,1.92.41.14.07.09.1.29.12.77.25.5.32.25.13.2.08.14,0,.28-.06.14-.05,0-.17-.1-.29,0-.15.23-.09.05-.07.06-.15-.07-.08-.16-.06-.37-.21-.15-.17-.18-.37-.14-.16-.21-.32-.14-.1-.41-.18-.12-.09-.45-.49-.11-.06-.19-.19-.2-.13-.54-.24,0-.07.13-.12v-.07l-.26,0-.24-.07-.45-.23-.13-.15-.31-.47-.34-.37-.23-.2-.23-.28-.22-.38L245,79l.47.08.28.07.5.33.79.67.15.11h.08l0-.22-.13-.49-.12-.33.09.07.26.28.41.53.45.5.16.13h.34l0,0,0,.16.1.1.18.1.11.13,0,.17,0,.11.05,0,.13,0,0-.12,0-.38V81l.11.16.18.41.15.24.25.12.13,0,.06,0,0-.23,0-.11h.05l.48.38.11.12.11.16.06,0h.06l0-.06h.09l.33.23.34.29.26.25.16.23.14.08.13-.05,0-.18-.19-.76.07,0,.42.23.11,0h.24l.15,0,0-.06-.09-.09-.09-.15-.09-.23-.14-.22-.29-.38,0-.1,0-.06.09,0,0-.13,0-.35-.08-.55-.07-.28-.09-.19v-.06L253,80l.11.15.08.18.33.93.05.08.16,0,.16,0,.06-.3,0-.34-.08-.37V80h.16l.16,0-.16-.29-.14-.36-.12-.08-.27,0-.06,0,.24-.13.05-.15,0-.06-.22,0h-.26l-.21,0-.32-.09,0,0,.08-.09v-.06l-.08-.15-.17-.18L252.4,78l-.47-.24,0-.06h.18l.35,0,.26.06.32-.42,0-.16-.17-.1-.64,0h-.09l0-.07.36-.18.16-.13-.3-.34-.17,0-.18-.13,0-.1-.27-.29-.35-.14-.2.12-.17.17-.11.18-.13,0-.13-.12,0-.08.21-.15,0-.09-.23-.2-.34-.24-.24-.11-.07.08-.07.53h0l-.06-.15-.1-.54-.05-.19,0-.06-.06,0-.05,0-.12,0,0-.07v-.11l0-.12-.12-.25-.22-.22-.24-.14-.08,0,0,0,.41-.18,0-.06-.37-.18,0-.09,0-.14-.1-.14-.18-.14-.16-.07H248l-.17,0-.41.17h-.06l0-.07,0-.13.22-.5-.05-.07-.16,0-.29-.13-.14-.16-.13-.24v-.19l.14-.14,0-.14-.49-.36-.21-.07-.3,0-.07,0,.47-.13h.14l.62.46.36.42.26.19.56.19.32,0,.1,0,.17-.08.2-.25-.22-.21-.49-.37-.31-.3-.17-.35-.14-.36,0-.08.26.13.36.23.37.31.12.06h.18l.08,0,0-.38-.24-.32,0-.17.23.15.23,0,.23-.06v-.12l-.08-.14.06,0,.25.14L250,70l0,.17.08.17.44.66.12.09.28.11.14.09.28.27.25,0,.18,0,.21-.09.16-.13.06,0-.45.37-.08.22.13.08.58.08h.27l.23,0,.64-.19.26-.18.29-.3.23-.17.32-.11.12,0-.26.13-.24.26-.24.37-.18.2-.38.06-.33.14-.2.15-.23.22-.06.19.11.2.06,0,0,.09.13.3.06.08.11.36.25.32.25.27.16.24.18.23.22.19.21-.44.3-.35.12-.11h0l-.11.25-.11.5.18.21.19.18.2-.17h.18l.16,0,.13.1.08.12.09.21.26.22.27-.29.2-.31.11-.36.08-1.06.07-.24-.35-.09-.28-.11v0l.48-.08,0-.16-.09-.28,0-.06.41.57.13.14.41.15.32-.06.09.06h.24l.12-.27.28-.25.22-.09V73l0-.12-.07-.15-.09-.1-.25-.16.07-.06.25.08.46.07h.22l.31-.06-.05-.11-.44-.31-.58-.32.09-.14.16-.05,0-.09-.28-.33.09,0,.28,0,.2.08.23.2.41.14h.19l.63-.16v-.14l-.13-.32-.87-.49-.07-.06.24-.09h.22l.37.17.38.3h.16l.31-.12,0-.14-.1-.15-.31-.33-.6-.58-.28-.33-.31-.12-.57.45-.46-.12-.21-.1-.13.07-.13,0-.26-.07-.39,0-.69.16-.35.12-.14,0,.86-.53.11-.09.06-.15.1-.16.08-.2.27-.19-.54-.39-.42-.11-.14-.08-.19.1-.31.08,0,.17-.47,0h-.26l-.35,0,0-.16-.44-.09-.22-.14h.25l.23.06h.34l.62.07-.11-.53.49-.21-.33-.34-.29.09-.46-.45L255,66l-.22-.11-.41.17L254,66l-.1-.13.11-.24.16-.15.2-.08.07-.08-.17-.16-.11-.05-.19.05-.51.26-.26.2-.07.16,0,.38,0,.16,0,0-.27-.34v-.12l.16-.47,0-.12-.12-.06-.27,0-.13.1-.23.1-.21-.14.08-.25v-.14h-.09l-.52.35-.28.35-.1.07-.11,0-.17-.07v0l.25-.13.33-.46,0-.29.15-.55-.67.06-.22.12,0,.36-.14.26h-.05v-.32l-.05,0-.37.2h0l0-.11.16-.28,0-.13-.13-.18-.26-.24.09-.17.5-.14.11-.07-.06,0-.23-.07h-.53l-.19,0-.24-.09-.27-.06-.23-.15-.18-.07h-.22l-.24.07h-.13l-.2-.11-.21-.25v-.24l-.11-.08-.25-.13L247,62l-.69-.09-.9-.42,0,0,0,0,.23,0,1,.3h.12l.27-.1h.19l.26,0,.63.23.27.06.2-.27.11-.25,0-.37-.16-.12-.58-.28-.37-.15-.23,0-1.22.24-.09-.07.9-.33.45-.06.42.14.55-.12.35.2.32.12.25,0,.32,0,.25.07.84.13.2,0,.07-.08,0-.24v-.1l-.06-.1-.1-.1-.56-.35-.37-.17-.26-.07-.75-.08h-.21l-.17,0-.31-.08-.91-.45h-.57l-.61.12h-.37l.06-.12L246,59l.61-.13.35,0,.62,0,.17-.06.1-.12.13-.1.16-.08.2,0h.45l.95.28h.17l.08,0,.06-.09.06-.15,0-.23-.22-.52-.08-.14-.68-.74-.27-.25-.41-.17h-.13l-.18.11-.18.19-.11.17,0,.07.21.14-.05,0-.16.08-.18,0h-.21l-.19.11-.18.21-.19.09-.31-.07-.23-.11.38-.35.14-.06.12-.16v-.13l0-.07-.05,0-.3,0-.68,0-.5.06-.32.09-.36.27-.25,0-.29-.08V57l.78-.38.57-.19.29-.07h.46l.49,0,.11,0,.33-.19.17-.07.17,0,.14-.09.12-.14,0-.15-.08-.17-.09-.11-.09-.07-.8-.35-.35-.18-.2-.15-.25-.09-.22,0-.34,0-.28-.06-.19-.2-.32-.06-.28,0-.54.12-.48.15-.62.31-.29.21-.15.22-.65,1.1-.21.28h-.05l.39-1.07,0-.28-.09-.12-.1-.08-.1,0-.11,0-.19.13-.28.31-.09.08h-.1l-.23-.16.19-.08.16-.1L241,55l.16-.1.44-.12.39-.06.37-.14.57-.4.25-.27,0-.12,0-.39-.07-.17L243,53l-.07,0-.13,0-.34.16-.31.24-.39,0-.74-.33-.57.09-.31.25-.17.25-.2.13-.66,0,.07-.06.32-.11.33-.18.61-.43.18-.09.18,0,.54.11.21-.05.21-.14.4-.32.08-.15-.07-.23L242.1,52l-.14-.17-.25-.25-.35-.23-.48-.21-.49-.16-.51-.11-.32,0Zm350.43,5.22.16.15.18.08.5-.08.24.07.1-.06.07-.08.3-.17.31-.23v-.11l-.05-.23-1.44.36-.91.11L589,56l.19.05ZM586.53,43.2l.44-.38-.65-.22-1.82-.4-.85-.3-.88-.1-.67,0-.42.06-.34.2.08.37.5.36.62.26.93.57.6.09h.5l.51,0,.49-.11.48-.18ZM414.78,30.43l.1.24-.18.26,0,.12v.17l.18.28.09.22L415,32l.09.21.24.36.18.49.26.11.39-.16.22-.23-.05-.37.21,0,.62,0,.21.14-.16.23-.28.26v.19l0,.16.09.25.12.2.08,0,.35,0,.25.06.05.06-.18.17-.1,0-1.48-.47-.2,0-.19.09.48.34.5.28-.22.07,0,.2,0,.23.18.21.19.16.35.19.24.07.33.53.44.48.32.17.09.1.08.14.47.32,1,0,.53,0h.42l.28-.15.27-.21.3-.12.29-.08-.17-.22-.23-.16.09-.21.12-.17v-.23l-.06-.21.24-.11.24-.06h.11l.1.08.08.19.1.12.25.07.27-.14.2-.29.22-.21.12.06v.23l-.11.25-.19.23,0,.09,0,.16.14.31.12.08.54,0,.56-.06.45-.17.64-.4.18-.07h.52l-.19.21-.55.46.16.26.38.21.17.06.38,0,.37,0-.36.19-.48,0-1.3-.12-.57,0-.19,0-.28.1v.16l.06.17-.36-.05-.38,0-.74.26-1.57.23.1.3-.52-.31-.22-.1-.24,0-.12,0-.11.07-.09.12,0,.49.06.16.07.14.34.28.25.13,1.07.1h.51l.52-.09.53-.17.51,0,.49.14.48,0,1-.06.66-.09.12.07.09.25.12.21-.85-.07h-.87l-2.69.21-.53.68-.2-.07-.21-.16-.22-.06-.64,0-.11.07-.07.16v.28l.08.19.17.31.19.25.23.22.24.18.51.2.78.39.8.93.91.61.24.12.22.17.21.26.23.17.48.17.5-.08.28-.2,0-.27-.09-.26v-.14L427,44l.25-.3-.11-.19-.06-.17.44-.44.22-.28.43-.73.5-.39h.6l.2-.05.16-.23.17-.45.12-.48.13-.65v-.22l0-.15.3-.08.28.06h.22l.38-.15,0-.22-.09-.23.08-.23.18-.37.21-.25.51-.41.52-.34.09-.15.05,0,.2-.05h1.29l.71-.07.77,0,.31-.08.32-.16-.07-.15-.07-.12-.44-.29-.75-.3-.43-.38.58-.31-.31-.24-.3-.13-.61-.12-.11.08,0,.22-.46.06-.27-.44-.52-.17-.84,0-.22-.12-.19-.27-.21-.13-.2,0,.1-.09.19-.08,0-.16,0-.22,0-.19-.05-.16-.07-.14-.31-.41-.37-.18-.13,0-.14,0-.91.69L429,33l.11-.2.06-.23-.08-.25.11-.16.28-.28.23-.3-.22-.47-.29-.29-.21-.14-.72-.32-.52-.13-.09.07-.09.12-.11,0h-.1l-.51-.58-.27-.17h-.29l-.33.17-.1.25.07.33-.32.21-.27.45,0,.11,0,.12,0,.45.05.32.25.84L426,34l.13.63-.1,0-.84-.88-.19-.08-.19-.3-.39-.82-.35-.67-.36-.64-.43-.45-.48-.19-.47.3-.45.46-.3.14-.06.21,0,.26v.24l.05.22-.07.18h-.15l-.25-.19-.22-.27-.23-.14-.34-.09-.1-.06-.07-.44-.24-.08-1.38,0,1.05-.46,1.54,0,.28-.15,0,0,0-.15,0-.11-.44-.24-1.23,0-.75.21-.31,0-.66-.25-.13.08,0,.22.07.18-.17,0-.21-.1-.79-.45L416,30l-.2.05-.16.29h-.08l-.19-.22-.36-.19-.13,0-.13,0-.14.13v.12ZM582.61,40.76l.52.14.41.15.21.23,1.63.49,1.32.54.45,0,1-.24.51-.19.2,0,.63-.08,1.87,0,2.75-.09.27-.13.26-.22-.26-.11-.07-.11-.23-.65-.08-.12-.09-.08.21-.36.24-.17.93-.05.18-.08.22,0,.06-.31-.07-.17-.26-.16L594.8,39l-1.32-.67-.12-.18-.25-.19-.06-.23-.11-.12-.55-.46-.23-.06L592,37l-.16-.25-.2-.11-1.33-.06-.24.39-.48.2-.48.08h-.49l-.49,0-.53.11-.53,0-.29,0h-.29l-.63.16-.28.28-.38.13-.12.09-.23.29-.05.13.37.09,1,0-.62.38-.35.38-.55.36-.7.11-.73,0-.45.24-.37.26Zm-5.92,13.57.44,0,.34-.26,0-.11-.13-.15h-.69l-.18.11-.14.19.08.08Zm2.79-17.87,2.57.44.75-.32-.18-.22-.75-.13L579.72,36l-.37.18,0,.11Zm13.64,21.29,0,.27.17.18.21,0,.12-.06-.39-.49Zm-22.6,6,.48.11.18-.12.26-.3-.13-.19-.11,0-.55.07-.17-.09-.1,0-.21.09-.37.08-.17.18.26.19Zm21-4.12.07-.18-.17-.07-.53-.16-.26.13-.75-.16-.41.16-.43-.2-.13.11,0,.19.76.15.33.17.55.06.38.17.13-.22v-.15l.29-.07Zm3.44-17.43h-1l-1.48.12-.29-.05-.24,0-.63-.11-.74,0-.24.14-.12.14-.12,0-.59-.36-.08,0-.29.24-.21.09-.8.27-.23.5-.48.31-.41.22-.94.26-.74.57.4.21h.43l.58.1.93.3.16.45.32.43.28.15v.23l0,.07.28.21.46.19.23,0,.65-.18.19,0,.33.42.19.07,1.15,0,.16.07.78.15.12.1.12.15.63.35.62.24h.28l.44.12.31,0,.47.15.26.06.86-.07,1.29,0,.22-.06.84-.44-.05-.2-.14-.43-.13-.06-.48-.14-.37-.48-.55-.34.13,0h.13l.45.18h.31l.31-.19.11-.28v-.36l0-.13.06-.1.07-.24,0-.28.06-.11.08-.07.18-.31.32-.15-.22-.36-.25-.25-.18-.11-.39-.13-.11-.15-.21-.09-.15-.16-.87-.2L597,42.9l-.14,0-.13.16,0,.26-.33.3-.17,0-.42-.15-.42.19-.33.31-.15.08-.12-.07.1-.35.29-.19.12-.27.22-.21.24-.07-.21-.36-.45-.33Zm-2.8,16.91-.09,0v.08l-.21.27,0,.22,0,0,.09,0,.11,0,.27-.14.18-.27V59.3l-.11-.12Zm-32,1.82.14.19.08,0,.35-.12.08.23.14.08.18-.38.27,0,.09,0V60.8l-.07-.14,0-.39-.3,0-.23,0,0,.15,0,.21h-.17l-.26-.2-.47.31.06.12Zm-6.4,9.92,1.13.25.15,0,.08-.18.06-.58-.25-.28-.1-.22-.38-.25-1.12.71-.06.16.11.19Zm-3.17.48-.27.29-.25.17-.53.24-.08.18.07.08.49.1,1,0,.31,0,.5-.29.31-.07.46-.22,0-.08-.14-.2-1.08-.39-.35,0ZM86.16,240.27l-.31.13.06.13.12,0,.11,0,.31,0,.11-.1h-.1Zm462.08-173-.13.11.3.21.87.21h.2l-1-.51Zm2-25.77.62.2.37,0V42l.33,0,1.62.07-.07-.11-.38-.18L551,41.24l-.21.12-.24-.19-.21-.08-.2.08,0,.09Zm6.56-5.33,1.94,0,.66,0,.07-.06.13-.21-.3-.13-1-.2-1.23,0-.23.16-.31.34.06.06Zm6.63,30.33.09,0,.09,0,.12-.09.15-.06-.21-.14L563,66l-.52,0-.19.14.7.12Zm-1.92-.29.27.09.22-.12,0-.08-.15-.16-.17-.07-.3,0-.12.06.1.14Zm38.07-21.3-.08.32.46,0,.36-.23-.32-.09-.15-.09-.24,0Zm71.74,29.42.37.26.15.26.65.58.14.19.16-.1.15-.28-.42-.46-.81-.59-.49-.17v.21Zm24.07-1.74.43.29.23.08.76.16.23.14.45.34.24.15.42.13,1.55.24,1.13.09.51-.06,1-.21.54-.18.14-.09.44-.84-.14,0-.14,0-.17.13-.18.08-.22-.17-.27-.14-.35-.26-.95-.17L700,72.1l-.4.11-.63-.08L698.7,72l0-.15.07-.11v-.21l-.16-.12-1.92-.26h-.12l-.81.24-.55-.06-.08-.25,0-.34-.42-.33-.21.08-.22.3-.21.35-.18.4-.11.39,1.12.44Zm-13.87,3.57.21,0,1.06-.24.1-.2.14-.46,0-.17L683,75l-.19-.11-.19,0-.92,0-.23,0-.23.06-.2.2.11.73ZM679.9,78l.19.29.29,0h.21l.78-.24.56,0,.19,0,.87.29.84.38,1.09.2.43.15.51,0,.53.07.72.15h.54l.08,0v-.84l-.09-.26-.12-.2-1.39-1-.41-.23-.5-.22-.52-.11h-.52l-.78.07-.25,0-.22,0-.22.13-.23.2-.43.56-.23.24-.47.28-.48.07h-.49Zm-5-7.74.4.49.45.32.25.08.23.15.43.6.17.19.18.14,1.57.52.23.13.24.09h.24l.24-.09.24-.24.19-.35.1-.26.13-.16.16-.07.16,0,.51.32.51.24H682l.42-.07,1.36-.07.46-.06.47-.11h.49l.22.19.16.22.2.22.18.1.19,0,.32,0,.33-.1.76-.37-.38-.41-.47-.2-.16-.14-.66-.93-.12-.21-.08-.27-.07-.86.47-.09.52-.09.8.1.11.23,0,.11-.27.24-.28.09-.11.39,0,.47.17.3.19.22.48.46.46.17.48,0,.8.22.41,0,.41-.14,1-.61-.12-.24L691,71l.17-.19.48-.27.72-.12-.1-.15-.11-.1L689,68.73h-.26l-.53.12-.26,0-.53-.1-.52-.19-.42-.21-.91-.66-.51-.31-.53-.17-.41.28-.57.28-.11.09-.09.15-.07.25,0,.29,0,.21V69l-.13.19-.16.08-.33,0-.11,0-.11-.09-.09-.12-.19-.46-.23-.13-.26,0-.21-.1-.59-.57-.42-.29-.64-.33-.2-.14-.17-.23-.2-.17-.21,0-.82.23-.47,0-.24.13-.13.13-.13.07-.43,0-.32.09-.14.13-.14.18.16.38.22.28-.72-.15-.19.12-.18.81.09.86h-.26l-.37-.1-.08.15v.23Zm33.19-1.14,0-.18-.05-.1-.07,0-.33.06-.19.12.46.28Zm-7.44-3,.15-.29.3-.12-1.43,0-.59.25-.11.12,1.56.07Zm21.9,25.28.15,0-.14-.24-.15-.16-.24-.06,0,0,0,.27.13.13Zm14.92,5,.29.25.41.21,1.15.43.6,0,.1-.07,0-.1.1-.38.08-.12.18,0,0-.2,0-.08-.09-.11-2.07-.65H738l-.3.1-.42.24-.12.09-.06.13.06.07Zm22.68-2.12h.15l.61-.15h1l.5-.25.22,0v0l.55.13.45.22.19,0,.54,0,1.33-.18,1,0,.51,0,.64-.33.07-.19-.05-.17-.11-.08-.46-.26-.31-.21-.16-.2-.15-.11-.17-.08-.27-.2-.17-.06-.9-.21L765,91.8l-.24,0-.31.07h-.3l-.3-.08h-.3l-.32.08-.3,0v0l-.24,0-.37.18-.35,0-.68.41-.74.3-.15.19-.32.25-.13.21,0,.18ZM599.9,49.7l0,.26-.1.17-.12.13-.09.14-.17.4-.09.18-.75.41-.29.22L598,52l-.33.18.2.18.22.13.71.14.49,0,1-.24,1.07-.35.35-.19,1,.07,1,0,.91,0,.11.12.12.06.13,0,.45-.27,1.49.1,1.22-.25.47,0,.46.07.19,0,1-.58.1-.42,0-.33-.09-.31-.09-.22-.11-.19-.26-.13-.28-.07-.52.05-.35-.24.06-.19,0-.19-.09-.06-.64-.22-.16-.24-.14-.29-.25-.14-.27,0-.5.07-.5.21-.27,0-.25,0-.24.18-.22.27-.36.33-.38.14.09-.18.7-1,.11-.31.23-.34.12-.07.24,0,.1-.07-.11-.15-.5-.32-.78-.25h-.26l-.12.07-.11.17,0,.28.14.28H604l-.25-.07-.18-.23-.16-.29-.13,0-.25,0-.11,0-.09.17,0,.27-.49.06-.25.11-.11.21-.21.14,0,.12-.1.33-.15.07-.14.11-.09.24,0,.12,0,.4.12.11h-.17l-.53-.1-.22,0-.21.14-.3.31ZM723.09,97.43v.32l.09.11.36.16.19.19,0,.11-.09.23h.1l.09-.09,0-.15,0-.17-.19-.35v-.67l0-.28.06-.16.35,0,.16-.23,0-.33-.19-.17,0,0-.21.14-.19.19-.46.23-.08.22.15.28Zm-47.62-12.6-1.11-.06-.24.07H674l-.1,0,0,.05,0,.1.37.21h.17l.12,0h.12l.11,0,.2.17.2.05.54-.27,0-.14-.14-.17ZM614.65,56.65l-.22-.09-.25,0-.22.23L614,57h.23l.56-.07,0-.14-.07-.09Zm9.19,4.1.29.07.19.24.27.17h.09l0-.13.07-.07.1,0,0-.19-.29-.32-.17-.11-.24.09-.56-.1-.09,0,.06.1Zm-11.63-8.17.43-.14.07-.07h.45v-.13l0-.11-.1-.09-.38-.05-.24.28h-.61l-.09.19.26.12Zm.28.32,1.2.29.7,0,.28.2.26-.09.2-.2-.23-.26-.13,0-1.93-.05ZM547.57,67.58l.16-.07.33-.25,0,0-.23-.08-.75.08-.43.22-.07.17.33-.07Zm125.21,1.79.16-.1-.1-.21,0-.15.41-.31-.08-.09-.44-.33-.1-.15-.11-.3-.17-.21-.2.32-.09.23-.06.3.05.25-.17.33-.12.13-.07.3.61.08Zm-24.26,4.51h.13l.24-.13,0-.06-.17-.14-.25-.06-.19.05v.07l0,.14ZM639,76.34l.54-.14,0-.07-.32-.22-.23-.06h-.42l-.27.11.3.33ZM221.13,99.2l.08,0,0,0,0,0V99l0-.09,0-.09-.08-.08h0l0,0v0l.06.1-.08.25ZM486.87,31.93l.52.15.69-.1.1.14.05.28.16.19h.5l.28-.07.26-.29.11-.09.7,0,.29-.2.11,0,.22.06.25-.31.21-.05.2-.24.23-.1.15.06.52.46,1.19.28h.12l0-.4-.27-.32-.2-.14-.2-.08-.21,0h-.72l-.93-.27-.19,0-.7.14-.48.24-1,0-2.52.21-.47.16.5.1Zm7.65.8-1,0-.31-.27-.13-.06-.2,0-.21.07-.65,0-.51.1-.54.22-1.63.56.18.22.22.11.27.28.54.05.2,0,.22-.18.42,0,.52.07.16.14-.55.25-.2.17.21.16H492l.18,0,.15-.1.15,0,.44.2.18-.05.15-.22.06-.11.06,0,.43.19.19,0,.19,0,.08-.21,0-.17-.05-.11-.08-.06-.48-.1,0-.05.3-.23.18-.06,1.43.08.45-.2-.07-.23.21-.11.91-.07,1.41.05.41-.27,1.19-.31-.22-.27-.28,0-1.05-.78-.24-.13-.77-.05-.31-.1h-.32l-1.3.18-.56.17-.24.51.07.27-.05.47Zm-17.6,54.45.08-.05,0-.11-.11-.18-.17,0-.16,0,0,0,0,.12ZM460.05,31.94l2.17-.21.16-.08-.5-.15-.6,0-.17,0-3.22.27.18.14Zm39.83,40.54h0Zm-9.17,5.74-.23,0-.46.18-.48.3-.22.26-.07.3-.06.31,0,.21,0,.2,0,.15.21.52.45.29h.51l.57-.08.95-.22.47-.37.19-.28.38-.23.09.11,0,.22.12,0,.14-.14V79.6l-.18-.27-.34-.22-1.54-.85ZM451.25,37l.8.09.88.2.82-.18-.1-.08L453,37l-.62-.08-.4-.3-.69,0h-.2l-.1.16-.53,0L450,37l.3.13ZM500,72.8v-.21l-.1-.1h-.14l-.15-.22-.16-.29-.26-.15-.09,0,0,0V72l-.22-.12-.22,0-.45.07L498,72v.15l.08.06.27.14.25,0,.38.29.08.26.09.11.23.14.1.17,0,.16.21,0,0-.07-.11-.13.06-.12ZM496.36,35l.05-.16.54-.25,0-.07-.11-.17-.75-.11-.71.29.06.11.77.42Zm2.07.84.73.11v-.06l0-.06-.17-.14-.16-.11v-.08l0-.18L498.2,35l-.56.18-.42,0-.81.2.73.32Zm-.95-5.59.2.21.21,0h.28l.09-.11.33-.16-.12-.21-.33-.13h-.26l-.15,0,0,.07-.1.08h-.2v.1Zm-65.93-1.36-.44-.26-.47-.08-.19.11-.1.2.73.26Zm5.82,41.2.53-.44.18-.1.07-.11.05-.11-.08-.11-.25.09-.16,0-.53.35-.21-.08-.6.07-.31,0-.16.16-.24,0-.14,0-.36,0,.11.18.22.2.38.21.16,0h.26l.1-.06.11-.09.36.1.12,0,.09-.07Zm1.15.58v-.15l0-.17-.06-.18-.06-.09-.65.37-.19-.06-.29.09-.18.14-.06.1v.12l.17.14.18-.08,0,.07,0,.23.12.06.23,0,.16-.06,0-.08.47-.23Zm-6.26.38-.34.07-.18.17,0,.13.11.16H432l.13,0,.09.06.17,0,.12-.07.11-.42-.06-.06ZM439,69.74l0-.06-.12-.08-.19.08-.06.17v.3l.08.14.22.14.41-.12.15-.3-.24-.2ZM447,37l-.11.11.09.29.53.38h.31l.29-.2-.45-.15-.39-.43Zm-16.36-7.07,1.05.19-.28.17-.28.12-.72.12,0,.2.08.13.2.18.59.35.44.15.95.12.49,0,.55,0,.48-.13.69.07.66.18-.21.17-.26.06-.17.26-.64-.05-.35-.06h-.4l-.16.06-.16.11.44.3.46.24.55.17.74.15.08.16.12.06,2.17.25h2l-.38.35.17.32.22.17,1.76.25.39.08.39-.06.28-.2.27-.16.79-.23h.19l.61.18h.2l.86-.2.18-.16.41-.53.24-.24.47-.25,1.84-.73.27-.17-.05-.73-.25-.33-.31-.19-.88-.14-1.24-.09-.17-.08-.17-.11-.39-.15L444.32,30l-.24-.13H444l-.26.05-.14-.06-.28-.3-.21-.05,0,.15-.1.11-.2,0-.39-.08-.39.26-.19.16-.7.08-.5-.08.28-.6.08-.29.15-.2L441,28.9l-.49-.17h-.23l-.23.16-.26.08-.25,0-.21.05-.08.17,0,.27-.05.56-.17.46-.2.18-.2-.07-.58-.39-.24-.05-.17-.11-.06-.28-.21-.13-1.14-.07-.21-.07-.4-.26-.43-.38-.23-.16-.52-.18-.5-.24-.25-.05-.25.06.14.29.16.25.06.13,0,.15-.13.31-.37-.14-.47-.38-.13-.07h-.18l-.06.13.06.19.31.39.37.14-.42.19-.41-.14-.36-.2-.37-.12h-1.44l-.37.1.43.27Zm12.78,11.52-.66-.4-.67-.33-.75.09-.4-.08-.71-.42-.43-.19.1-.42.45-.11.2-.11-.2-.18-.46-.27-.27-.08h-.53l-.6.06-.3-.08-.13-.82-.28-.78-.62,0-.28-.13-.32,0-.86.12-1.43.08-.29.14.28.32h.39l-.1.41.51.37.09.39.36.51.34.26.89.44-.09,0-.41.44-.21.16-.2.25-.13.4-.7.18.08.47.25.1,1.69-.1h.41l.42-.09.31-.15h.11l.35.12h.13l.1.07-.13.16-.51.28.07.31,0,.12-.09.06.24.23h.52l.21-.14.22-.2.23-.08.58.06.26-.07.5-.23.23-.14.26-.24.24-.3.15-.11Zm-.13,27.15-.54-.18-.35.14-.24.15v.07l.34.08.2.24.36.05.07,0h.43l.29-.06,0-.16-.15,0-.25-.29Zm62.26-34.8.05-.12,0-.2-.42-.14-.05-.06-.61-.2-.05.2.08.1v.13l-.11.05-.09.12.94.34Zm2.58,2,.17.09.8.12,1.63.15.2-.1V35.8l.12-.25.05-.58L511,34.8l-.28-.09-.49,0-.12.14-1.3-.15-.08.09v.56l-.16.18Zm5.47-4.32-.17-.11-.11,0-.85.36-.5-.12-.42.11.36.53.7.18.36.49.71.19.74,0,.45,0,.17-.24,0-.32-.17-.18-.09-.29-.27-.27-.23-.11Zm2-.81.45,0,.13-.09-.17-.21-.42-.19h-.4l-.53.11,0,.11.21.13Zm-8.49,4.47.61-.18-.08-.14-.16-.09-.24,0-.31.12-.25.16.13.15Zm4-1-.14.11.14.12.19.25.05.13v.19l.09.65.09.17.11.1.84.23.33-.06.45-.31h.2l.08-.22v-.23l.24-.08,1.79,0-.27-.23L515,34.8l-1-.31-2-.2Zm1.84,45,.17.07.18.05h.23l.22,0,.39.14.23-.09.24,0,.1-.24,0-.33-.05-.19-.11-.11-.44-.26-.42-.35-.64-.38-.21-.2-.19-.25-.23-.2-.44-.32-.07-.09-.09,0-.45.09-.26.25-.13,0-.21.11-.11.18.16.43.07.1.05.16.09.14.52.62.1,0,.17-.09.13,0,.25.1.24.05.24.11.14.29,0,.19Zm22.7-10.92.37.07h.17l.62-.13.45-.07,1-.09h.56l0-.2-.07-.24-.28-.25-.19-.14-.22-.31-.18-.14-.24-.12-.17,0-1.23,0-.43.09-.34.32v.53l-.08.21-.13.16,0,.17.23.2Zm-9.1-14.86h-.27l-.25,0-.52.21-.53.17-2,.14-1.18.21-.39-.06h-.64l-.48-.08-.92-.29-.45-.06h-.77l-.09,0-.27.15,0,.27,0,.21-.12.12-.12.07-.3,0-.13-.16-.26,0h-.68l-.34.1-.2.34-.54.12-.91.09-.51.1h-.24l-.24.05-.5.29-.5.2-.76.18V56l0,.11-.67.31-.18.2-.19.4-.05.06-.63-.18-.44-.08-.2,0-.31.07-.08.09,0,.22.08.14-.68.56H508l-.18-.19-.2-.12-.26-.12-.26,0-.24.09-.25.16v.14l.08.14.26.25.72,0,.17.17.14.08-.6.2-.67.37-.57.53-.17.1,0,.15.09.15.19.08.4,0,.38.21-.13,0-1.38.08-.16.06-.74.88-.23.22-.19.12-.22.23-.22.28-.07,0-.46,0-.46.16-.46.22-.23.07-.2.13.14.28.71.68-.17.23.31.54.57-.23.43-.08.49,0,.55.28.55.19,1,.12.39.16.42.09h.42l.7-.19.4-.52.71-.37.18-.18-.14-.36-.33-.3.05-.09.28.07.3.23.11,0,.21,0,.19-.13.07-.18,0-.19-.13-.32v-.16l1.43-.35.4-.37.11-.24,0-.16-.15-.39-.11-.19.08-.13.8.21.25-.08.13-.08.1-.17,0-.24.07-.22.12-.1.71.38.17,0,.17-.1,0-.11L514.6,60l0-.2.49,0,.21,0,.3-.14.18-.15.3-.14.14-.11-.09-.18-.43-.13.08-.15.43-.16h.12l.25,0,.14-.05.24-.15.24-.2.46-.21.22-.23.24-.12.27,0,.27,0,1-.37,2.08-.46.57-.07.73-.22h.25l1-.12,1-.21,1-.14.88-.21,1.4-.22.8-.21.5-.07.5-.11.51-.19.85-.26.85-.13.12-.11.75-.53.75-.47-.08-.16.08-.21.13-.2-.05-.23-.07-.13-.33-.38-.42-.3-1-.32-.75-.15h-.24l-.58.14-.91.1-1,.37-.61.27-.23.24-.23.3-.23.13-.25,0-.23,0-.46.18ZM496.9,69.08l-.24.34-.09.16-.07.42v.18l.12.51.14.3.19.19.24.15.26.08.5,0,.51-.14.53.16.48.08.95-.1.1,0-.18.19-.05.29.17.24h.22l.22,0-.08.13.58.43.54.31-.13.06-.35-.15-.18,0,0,.21-.37-.09-.19.12v.19l0,.2v.13l-.31,0-.18.09.68.27,1,.26.27.1.36.22.17.06,0-.12.08-.1.45.27.37.08.39,0,.94,0,0,.07v.12l.17.12.24,0,.08-.08.29.14.06-.1.06,0,.58.4h.14l.13-.09-.27-.29-.17,0-.15-.16.27,0,.25,0,.12.13.1.16.05,0,1,.29.22,0,0-.11.39-.07.39-.22-.14-.15-.14-.11-.84-.38-.34-.22-.86-.74-.78-1-.42-.65-.37-.72-.11-.37-.13-.34-.34-.28.18-.29.09-.35.21-.27.06-.15-.22-.38v-.24l-.05-.13v-.22L505,68v-.19l.09-.09.37-.07.19-.26.05-.2,0-.17.2-.07.55,0,.09-.06.11-.16.06-.21,0-.32.06-.19.33-.29.14-.09.08-.24-.15-.11-.43-.15L506,65.1l-1-.23-.4-.22-.36-.14-.29,0-.27,0-.74.23-.27,0h-.23l-.46-.13h-.23l-.26.11-.26.07-.33,0-.23.15-.12.13,0,.17.07.37v.16l.24.23-.25,0-.24-.06-.23,0-.23,0-.22.08-.51.29-.07.08-.05.12.15.14.15.1.48.09-.17.18,0,.1.07.17-.26.24-.09.17,0,.18-.11.2-.09.14-.08.06-.27.1-.12.2-.17.15-.18.08-.38,0-.37-.11-.17,0-.33.13Zm17.8-32.25.37.12.14.08.06.08.26.07.76-.1.47-.14-.19-.43-.52-.21-1.15.21-.12.05Zm12.61,39.56,0,0-.06.11V77l.07.21.13.18.11.06v-.15l-.17-.6,0-.27Zm-21.73-44.1.33.05.18.1.08.13h.94l.86.3.33.34.35.07.9.05,1-.06,1.62-.32.25-.16-.25-.15-1.33-.55-.87-.48-.62-.2-1.45-.07-1.52-.59h-.18l-.5.58-.13.39h-.26l-.42.11,0,.28Zm38.93,37.24.31.12.1.08.05,0,.08-.13-.07-.09v-.16l.22-.23.46-.09-.48-.21-.25-.08-.4-.06-.44,0-.13.13-.1.2.16.19ZM523.76,32.84l-.64.3-.48.16-.16.14.47.32.48.28.38.1.39,0,2.46-.08,1-.23.95-.46-.12-.19V33l.06-.23-.13-.2-.27-.26-.29-.14-.45-.17-.47-.05-.56.07-.13.14-.1.18-.12.33-.16.17-.51,0-.5,0Zm-15.25-2.26,1-.1.34.25.31,0,.33-.09.33-.17.68.35.59.25.67-.11.31-.12.23-.26-.19-.25-.09-.32h1.07l.41-.13-.25-.24-.86-.16-.31-.14-.09-.2-.19-.11-.55.07-.19,0-.56-.07-.26.13-.56.38-.67.13-.54.37-.77-.19-.66,0,.19.42Zm-6.93,4.2.12.06.05.06.46.06,1.38,0,.29-.15h.26l.16-.18-.73-.31-.28-.23,0-.17-.29-.08h-.69l-.31.24-.08.13-.23.08-.64.05-.12,0,.25.26Zm11.78-6.32.7,0,2.21-.05v-.11l.13-.21-.3-.16-2.34-.05-.32.12-.11.24-.08.12,0,.06Zm9.45,1,.08.07.64.17,1.33.16.26,0,.28-.18,0-.07-.11-.12-1.89-.31-1.06,0-.38.11.84.16ZM519,32.65l.65,0,.71-.24.22-.17-.21-.28-1.81-.06-.94.27-.15.07-.05.07.54.18Zm-3.27,1.25,0,.21v.24l.08.09.6.4.53,0,.8-.17.89.35.68.13.52-.37.66-.09.19-.23.19-.06.64,0,.1-.31.18-.22.1-.3-.11-.2-.12-.16-.52-.14-.52-.07-.6.1-1,.09-.71.06-.42,0-.08-.19-.28-.07h-.79l-.27.07-.1.15-.11.08-.25.24Zm50.53,31.35.12-.23.25-.21-.4,0-.29.07-.33.12.07.1ZM41,93.28l-.08,0-.1.1,0,0v.07l0,.07h0l.06-.09.1-.07.08-.13,0,0ZM46.17,209l0,0-.05,0,.06.06,0-.07h0l0,0,0,.06,0,0h-.09l0,0,.12,0,0-.09-.15-.18ZM47.48,91.26l-.1-.08-.18-.07-.13-.06L47,91l-.16-.48-.06-.1-.09-.08-.11,0-.41,0-.13,0-.59.19-.28.14-.31-.06h-.11l-.12.06-.4.51-.1.08-.3.13,0,.11v.07l.07.24.07.13.17,0,.31,0,.27-.05.13,0,.13-.09.25-.23.14-.08.2,0,1,.06.11,0,.38-.25.55.24v0Zm-5,1-.08-.16,0,0h-.09l-.13.06.05.2v.13l0,0h.09l.21-.11.12,0-.06,0Zm1-17.89-.06-.11-.11-.07-.11,0-.33,0-.1,0L42.56,74l-.1,0h-.13l-.24.06L42,74h-.11l-.27.12-.28,0-.11,0-.13.23-.86-.11H40l-.19,0,.26.36.3.29.32.11.71.42.58.14.17.07.14.14.08,0,.09,0,0-.14.07-.09.33-.1.37,0,.37,0,0-.19,0-.17-.16-.14v-.32l.06-.15ZM19.8,97.07l0,.14.22.14.18,0L20,97.21ZM34.61,84.74l-.15,0-.27-.08,0,.08.26.2.09,0,.25-.13,0-.07Zm3.21-20.08.12-.3-.58-.17-.46,0-.15,0h-.28l-.26-.1-.06-.11-.07-.09-.31-.08-.49-.18-.07-.12,0-.16-.07-.14-.1-.09-.25-.15-.27-.08-.25,0-.26,0-.44.21H33.2l-.33-.1-.3-.06h-.22l0-.08L32,62.53l-.22.07L31.6,63l0,.16v.17l0,.17.1.11.21.16.23.08h.25l.24-.09.24-.12.25-.08h.22l.22,0,.65.27.21.11.19.14.1.09,0,.18.1.12.15,0,.26.09.25.12.09.07.08.1.09.34.09.12.11,0,.11-.08.05-.2.19-.19.24-.14h.53l.53.09Zm-.33,29.27-.32-.17H37l-.25,0-.21.07-.15.11-.09.13,0,.15v.09l.06.06,0,.06-.12.06-.28,0-.14,0-.11.07-.16.14,0,.07,0,.19,0,.09-.09.07-.16.17-.15.11-.21.11,0,.09h.05l.69-.28.09,0,.23-.13.1,0,.09,0,.13-.1.18-.2.22-.2.66-.25.21-.1.06-.13.09-.14Zm3-.37-.34,0v-.07l.13-.16.37-.21.2-.16-.21-.12-.07-.09-.06.06-.1.14-.12.11-.16.07L40.09,93v-.27l-.09,0h-.13l-.24,0-.27,0-.13,0-.12.09L39,93v.08l0,.09.07.09.08,0h.12l.17,0,.22.08.07.07-.13.07,0,.1,0,0,0,0-.11-.15-.25,0-.06.12-.11,0-.12.3-.14.07-.47.13-.23.1h-.23l-.15,0-.21.12,0,.07.22.12h.09l.07,0h.15l.09,0,.12-.09.1,0h.09l.08,0,.06,0,.25-.08.41-.08h.23l.17,0,.16-.16.39-.18.17-.1.19,0,.09-.06-.05-.06Zm-7.16,1.8h-.14l-.34.06,0,.06v.06h.22l.32.08,0,0,0-.11,0-.06Zm15.81,75.85,0-.16.07-.12v-.1l-.09-.15-.47-.05-.32.16-.15.2.08.12.2.1.08.1.19,0,.11.06.19-.11Zm5.67-80.34.13-.06,0,.07,0,0,0-.22,0-.22-.06,0,0,.1v0l0,.11h-.09v.06l0,.08Zm-5.5-.21h-.06l-.3.13,0,.1.05.07.13.1h.05L49.3,91l.09-.18v-.07ZM41.29,261.1H41.2l-.05,0,0,.06v0h.06l.08,0h.06v-.09Zm14-169.94h.06v-.07l0-.12-.14-.07V91l.06.17ZM52.9,90l.07-.16v0h0l-.14.15-.07,0h0l.05-.12v-.06l0-.06-.06,0-.14,0-.12.13,0,.07,0,.39.05.09.1-.07h.1l.19.07.26,0v0L53,90.22Zm.2-.11-.06,0,.07.07.27.17,0-.23-.06-.06Zm1.2.47.06-.12,0,0h-.07l-.14.19H54l-.14.16-.07,0-.08,0,0,.2v0l0,.08-.15.24.12,0,.3-.27.08-.06.1,0,.05-.08.13-.05,0,0,0-.1Zm-6.84,80.78-.13.09,0,.12v.08l.07,0,0-.09.06-.08.16-.05v-.1l.07-.1-.11,0ZM41.9,92.45l-.25-.18-.15,0-.16,0-.1,0,0,.07v.08l.08.18,0,0,.21,0,0,0h.06l.09,0,.21,0,.1,0,0-.06Zm-17.82,4,.23,0,.06-.11,0-.11,0-.11-.25-.16-.29.09-.13.09-.15.06.05.06.3.1-.11.14-.35.06-.41.1-.53.07-.43.1h-.2l-.17,0,.16.09,1.12,0,.71-.06.47-.12L24,96.53Zm2.15.51-.51,0-.39-.14-.22,0-.26,0,0,0-.3-.1h-.11v.06l.12.09.1.06.09,0h.34l.44.09h.19l.29,0,.11,0,.32,0v0Zm-14,156.24-.15.13,0,.05.09.08h0l.09-.12.07-.06v0l-.1-.06ZM27.94,96.48l-.14-.13-.18-.06-.16.08-.08.07-.09.14.16.06.16,0Zm1.63-23.3.34.12-.09-.14L29.61,73h-.29l-.43-.24-.23-.17-.11-.32-.27.1-.07.23.23.11.64.46Zm-16.15,151,0,0h0l0,0,0,0h0v0h0Zm-4,34.39h0l-.08,0H9.4l-.14-.08-.15,0,0,0v-.07l-.1.08,0,.11.26.17.09.09.17-.21,0-.07-.12,0Zm10.76-162-.09-.06h-.17l-.06.11v.08l.07.07.2.1.05-.07.1-.07,0-.06Zm200.64.24.05-.19.09,0,0,0,0-.11,0-.15h0l-.05,0-.1.11,0,0v.07l-.06.1.06.12ZM20.74,254.73l-.1,0-.1.17.08.14.22-.1,0-.08-.07-.17ZM9.75,259v.07l.08.16,0-.32h0Zm10-14.3-.22.06.1.11h.09l.19-.13.15,0-.24,0Zm1-23.14v0h0v0l0,0ZM31.13,96.11l.14-.08.08,0h.09l.08,0,.06-.09v-.07l0,0-.15,0-.24.17-.09.08,0,.11ZM33,83l.05.11.19.06.22-.12.11-.16-.57.07ZM19.54,234.34h0v0l0,0h0v0Zm.05-13.5h0l0,0,0,0h0l0-.08-.05-.06-.06,0,0,0v0h0v0h0l0,0h0l0,0,0,.07v0h0Zm-3.07,21.9h-.37l-.34.06-.22,0,.06.14.16.15.23.33.11,0,.32,0,.22.08.12-.24-.08-.27Zm1.63,1.14-.12,0-.07-.14-.51-.19h-.27l-.13.06,0,.11.22.22h.1l.28.12.56,0,0,0,0-.1Zm2.06-19.65,0,0v0h.06v0ZM48.44,92.08,48.08,92v.14l.15.13.19.08.18,0-.1-.13ZM71.64,253l0-.12-.06-.14-.06-.17v.18l.07.08,0,.11,0,.09.06.12h0v0ZM86.11,77.56l0-.16-.06,0-.33.17.09,0,.18,0Zm-2.18-.46h-.4l0-.09-.33-.12-.1,0-.14.1-.07.07v0l0,.11.07.08,0,.2,0,0,.38-.15.46-.1.16-.06.06,0,0,0Zm3.48,1.75-.21.21-.17.19h.1l.36-.29.34-.16,0-.1-.25,0Zm-15,173.07,0,.07.12.15,0,.1,0-.09-.15-.21Zm3,2h-.07l.19.14h.08l-.09-.05Zm4.2-176.16-.1.18.4.09.12-.09.23-.06-.33-.21Zm.41-2.2.12,0h.26v-.16l0-.08-.15-.09-.13,0v.07L80,75.5ZM63.52,255.33v-.22l-.09-.15-.27-.07-.22.06,0,.06v.11l.1.26.2.05.29,0,.09.2.07.07.15,0,.07-.1,0-.16ZM80.87,76.8l-.05-.14,0,0-.08.11,0,0,0,0v-.06h0l-.11.27v.06l0,.09-.09.06,0,.22h.14l0,.08v.06l.06,0,.06,0,.07-.09,0-.15.13-.24L80.79,77l.08-.07Zm1.1.35h-.13l-.06.14-.3.36-.29.26-.31.16-.28.23-.07,0-.11.12-.14.21,0,.1.23,0,.14,0,.06-.07.09,0H81l.09-.07.05-.13.07-.07.1,0,.06-.07.07-.18.07-.07.73-.49.07-.1-.12-.15Zm3.16,161.3,0,0,0,.05v.1h.14l.1-.05v0l-.06,0Zm-1,0,0-.07,0-.08-.34-.07,0,0,0,.11.06.17.1,0,.2,0Zm-.28,1v.05l.08.13,0,0,.1-.16-.08,0ZM86,240.71l-.06,0v.17l.17-.15,0,0ZM75.83,254h-.18l.19,0,.15.09-.11-.12Zm5.59,2.71-.17.06-.09.06,0,.07-.06.09v.08h.1v0l0,0v0l0-.07.09-.1.27-.13h0l0,0Zm-29-83.95,0-.18h-.09l-.07,0-.06,0,0-.1v-.09L52,172h-.12l-.23.18h-.31l.06.12v.09l.2.26,0,.13.07,0h.2l-.07-.11.09,0v0l0,.08.12,0,.1.12.1.05h.23l.11-.05,0-.06ZM80.92,257.6l-.07-.09-.09-.06,0,.06.12.14.06.12.07,0v-.06Zm.19.47v.06l.16.09,0,0,0-.08Zm-3.26-5,0,0,.08-.16-.06,0Zm-20-76.17-.06-.19-.16-.05,0-.28-.22-.27-.84-.43-.42-.27-.09,0,0,.19.12.34-.2.24-.18.12-.14.17.15.35.12.46-.07.54,0,.12.4.25.11,0,.1-.1.11-.2.49-.28.54-.08.45-.26.11-.14-.07-.1ZM54,226h-.07v0l0,0,0,0h0l0-.06,0,0,0,0ZM63.32,89.42l.09-.09,0-.19V89h0l-.06,0-.26.22,0,.08.09,0Zm2.44-2.18-.23.1-.23.15-.07.09,0,.09v.06l0,0,.15-.06.38-.22.14-.14,0-.07ZM62.35,254.77l0,.06v.06l0,.06.08,0,.07-.05.08-.12-.06,0Zm-6.44-80.41,0-.08-.17-.11-.08-.11-.26-.16h-.16L55,174l-.05,0-.08-.14-.11-.1h-.15l-.09.16v.1l.14.18.14.08h.13l.05.21v.19l.06,0,.2,0,.16-.05.27,0,.21-.13Zm-1.82-.46-.12-.06-.23,0,.11.2,0,.14.14,0,.12-.05.1-.12-.08-.1Zm-4,39.42-.24-.14h-.11l.25.19-.06,0-.1.16-.15-.09,0-.09-.1,0,.31.26.35.15h.15l-.32-.26ZM66.39,87.26l-.23.1,0,.09.15.09h.1l.13,0,.07,0,0,0,0-.07,0-.06ZM54.06,173.31l-.07-.05-.1,0-.44-.1-.07,0,0,.1,0,.06,0,.08.55.08.33.11.24-.08.08-.11-.06,0Zm-2.24,55.8h0v0l0,0h.11l0,0ZM71.89,76.33l.22-.28,0-.06-.12,0-.11.29-.15.14h.1ZM59.4,241.73h0v.13h0l0,0,0-.06Zm-.16,11.07.07-.07,0,0-.09-.07,0,.09,0,.06,0,0Zm0,.17,0,.05,0,.21.07,0h.08l.1,0-.08-.19ZM68.47,83.72l.1.1.06,0,.06-.08-.09-.15-.11-.11-.27-.14-.08,0v0l.1.11Zm.7,2.12-.72-.11-.16.14-.06.23.15.17.13-.07.18-.18h0L69,86h.15l.06,0v0Zm1.19-1.33-.13-.18v-.1l.15-.13,0-.07,0-.06-.17-.09H70l-.17,0-.34.14-.08,0V83.9l.11-.21-.18-.13-.44-.14-.14,0,.11.15,0,.1-.06,0v.13l0,.07h-.08l-.21-.06-.07,0-.07,0-.07.09-.08,0h-.07L68,84l-.17-.3-.07-.05-.15,0h-.07l-.08,0-.14.12v.09l0,.1.13.14.23.17v.07l-.22,0-.09,0,0,.12v.45l.07.24.13.19-.13-.07-.1-.11-.14-.25-.12-.28L67,84.52v0l0,0L67,84.29l-.18-.07-.13,0-.21,0-.23.12-.32.07-.31.32-.1.22v.1l.25.4.11.51.3.36.16,0,.12-.14.06-.12V86l0-.08-.06-.08-.06,0h-.23v0l.11-.06.17,0,.23,0,.14,0,.06,0v0l-.12.13-.06.12h.05l.18-.07.23.16.16,0,0,0-.61.45v0l0,0,0,0,.11,0,.46-.21.26-.28,0-.07v-.08l0-.05-.17-.08L67.8,86l.13-.06,0-.1.13-.08.37-.14h.46l.14-.12.24-.1.19,0,.15,0,.08,0,0-.1,0-.1L69.55,85l-.36,0-.08,0,.12-.08.07,0,.16,0,.41.13.45.08h.06l.1-.06.27-.26v-.06l0-.05Zm.93-1.91-.08,0-.09-.19-.15,0-.23-.17h-.06l-.09.17-.07,0-.12-.13-.13-.09-.14-.07-.13,0-.35.08v.06l.15.16,0,.2h-.09l-.16-.07-.17,0-.3.15-.59.41.16.09.65.24.11,0,.19,0h.12l0,0,.18-.08.1-.11.1-.18h.05l0,.15,0,.06.18-.07.15,0,.15,0v0l0-.11v-.06l.15-.12h0l0,.12.07.09,0,0,.11.06.09,0,.19-.18,0-.2h-.13Zm-1-.59h.06l.21-.16.07-.08,0-.07,0,0-.06,0h-.14l-.3.13-.08.07.1.11ZM17,232.49h0v.07h0v-.06ZM182.4,21.05l-.16-.17-.13-.08-.26-.13-.64-.22-.58-.08h-1.1l-.05,0,0,.16v.3l.15.2.61.2.51.06.29,0,.23-.07.39,0,.83,0,0-.13ZM172.2,56.87l-.2-.07-.43,0-.18,0-.13,0,0,.1.15.15.22.16.31.15.21.07h.11l.18-.08,0-.06v-.08l-.05-.12Zm-9.39,1.38-.23-.06,0,0,0,.09.13.11.35.19.06,0,0,0,0-.15-.12-.15Zm-.83-.52-.07.18.27.23h.08v-.08l0-.12Zm14-32.21-.07-.08-.16-.05-.27,0-.63.1-.18.09,0,.1,0,.18.13.28.17.5.09.13.18.05,1.65.12.34-.05.24-.08.26-.13.11-.1,0-.08-.27-.15-.8-.32-.05-.11-.22-.18h-.2l-.32.06-.1,0,.12-.12Zm2,31-.37-.12-.14.17-.18.11-.25.1-.08.08.08.08.65.27.11.07h.09l.12-.17.13-.05,0-.25v-.11l0-.08Zm170.5,124.42h0l-.05,0-.47-.08-.09.2-.2.14v.24l.18.24.11.07.2,0,.26-.13.11-.13,0-.26,0-.18,0-.17ZM181.74,50.17l-.31-.23-.21-.08-.2,0-.1.09v.18l0,.13,0,.07.17.09.43.17,0,0v0l0-.13v-.13Zm-1.62,3.13.09-.34v-.21l-.09-.6-.12-.31-.09-.1-.12-.05-.18,0h-.68l-.1-.15v-.28l0-.07-.06-.05-.12,0h-.43l-.1-.05-.75-.53-.44-.24-.32-.23L176,49.5h-.08v.12l.14.3V50l0,0-.12,0h-.06l-.18-.15-.2-.11-.58-.26-.53-.43-.19-.13-.4-.64-.68-.57-.1-.16,0-.11.19-.42.12-.19.12-.13.07-.17,0-.19v-.14l0-.1v-.31l-.24-.48-.47-.69-.07-.14-.12-.3L172,42.47v-.18l-.08-.39,0-.29,0-.14-.11-.16,0-.13.05-.09V41l-.15-.25-.24-.33-.37-.36-.54-.28-.79-.55-.7-.33-.25-.06-.18.11-.1.18h-.08l-.76-.44-.45-.19-.64-.13-.14.17,0,.09.17.2.1.07-.09,0h-.29l-.18.06-.08.13,0,.17.36,1.81.12.26v.12l0,.14,0,.12.1.1.06.1v.37l0,.18.16.6.28.5.45.54-.15,0v0l0,.07.07.09,0,.06-.73.34-.17.19-.06.12h-.06l-.23-.06-.19-.17-.25-.12-.08-.08,0-.11-.09-.58-.33-.94-.15-.7-.09-.38-.13-.35-.1-.21-.08-.07-.31-.08-.09-.06,0-.16,0-.06,0-.07-.11-.07-.15-.17-.48-.23-.22-.14-.27-.29-.79-.49-.18,0-.86-.1-.31-.06-.08.25.26.34.55.32.16.14,0,.3v.08l-.49.07-.16.12-.58.21-.4.37-.4.22-.09,0-.17,0,0-.06v-.09l0-.09.06-.09,0,0h-.09l-.3.16-.22.21-.28.17-.17-.15-.27-.1.17-.1.44-.16.57-.49.25-.36,0-.18-.37-.23L158,39.54l-.82-.26-.61-.24-.66-.09-.29,0-.18.11-.35.31-.1.15,0,.27V40l0,.11-.17.15h-.09l-.14-.11-.56,0-.46.07-.35.11-.25,0-.13-.06.06-.12.49-.41.23-.24.16-.21.08-.17.06-.2,0-.22V38.5l0-.44-.05-.2-.07-.16-.08-.12-.19-.14-.68-.22-1.94.48-2.17.46-.85.31-.61.13-.63.27-1.27.68-.53.35-.19.22-.06.17.06.12.11.12.28.25.07.1V41l-.34.2-.47.11-.79.64,0,0-.07.22,0,.42v.15l.07.12.16.19.58.19.43.07h1l.3,0-.31.35-.57.09-.18.21v.07l.06.05.51.21.44,0,.81-.11,1.16.06,2.5-.2.51.18.07.07-.09.07h-.27l-.54-.12-.51,0-.14,0v.11l.25.11,0,.08-.31,0-.39,0-.41,0-.83.16-1,.17-1.06.12-.25.07-.73.32-.18.12-.06.11.21.32,1.33,1.07,1.23.2,1.38,0,.21,0,.28.12.2,0,1.41,0h1l.52,0,.55-.08.21,0,.55,0,.44,0,.73.2.51.18,2.09.79.78.42.18.17-.16.08-.16,0-.84-.08-.17.07-.54,0H156l-1.17-.24-1-.09-.51-.09-.51-.13-.88-.09L150,49l-2.15.14-1.22.18-.06,0-.08.13v.24l0,.38,0,.23,0,.08.2.33.54.57.2.25.07.18.06.11,0,0,.83.38.49.16.5.12.94.14,1,0,.78.08.51.1.77.27,0,0,.11.55V54l-.08.43.11.26.4.64.2.25.21.16.22.06.32,0h.41l.76-.06,1.64.07h.43l.39-.13H159l.23.08.79-.05h1.06l1-.09,1.11-.21.46-.21.39-.22.4-.11h1.05l.89-.1.19-.09.51-.4.19-.09.41-.57.22-.2.22-.1h.25l.24.13.11.13,0,.15,0,.21v.11l0,.1.14.12.26.13.27.08h.42l.56.11.55.19.5.09v0l0,.06-.28.25-.05.07.12.14,1.1.26.24-.13.23,0,.57.27.51.11.72.19.64,0,.55.06.13,0,.2-.1.53-.05.28-.1.8-.17.26-.11.18-.38V55.1l-.06-.13-.1-.09,0,0-.2,0-.1-.08,0-.09v-.1l0-.1,0-.08.18-.16v-.07l-.13-.15-.21-.1h-.62l-.22.14-.49.17-.23.11-.47.43-.06,0,0-.12.19-.46,0-.24,0-.14,0-.05h-.09l-.08-.06-.29-.28-.24-.18-.09-.12.07-.08.16-.06.11,0,.48.33.28.13.36.09h.26l.13-.07,0-.06,0-.11v-.14l0-.12-.06-.1.16-.14.38-.17.24-.09h.11l.17.09.47.35.25.15.18,0,.1-.07.09-.12.14-.28.05-.06,0,.07.1.32.12.15.24.13.35.07.13,0Zm-.75,1.14.17,0,.1-.05.09-.1.08,0h.1l0-.13-.13-.18-.29-.14-.14,0-.09.06v.07l.05.08.2.11,0,0,0,.06-.15.06,0,0v0l0,.1Zm1.18,2.35h0l.12-.08h.05l0,0,.07.14L181,57H181l.18-.12.08,0,.07-.11.11-.34-.05-.08-.16-.13-.08-.15-.16-.12-.22,0-.1,0-.07.06,0,.06,0,.08v.1l-.07.27,0,.18v.12Zm10.84-25.27.21.15h.17l.17-.12.24-.11,0-.05-.16-.15-.21-.13-.44-.21-.07,0,0,.06,0,.1-.21.08-.7.14-.28.1-.09.16.09.24.1.15.12,0,.28,0,.1,0,.13-.15.35-.23ZM189.77,41l-.05-.12-.14-.1-.32.1-.12.09,0,.13,0,.14v.25l.29.3h.33l.16,0,.08-.05.09-.11.08-.19,0-.13-.09-.11-.2-.12Zm4.86-10.73,0,.16.05.13.06.09.26.11h.2l.42,0,0,0,0-.05-.06-.17-.15-.26,0-.14,0-.23,0-.09-.08,0-.44.13h-.2l-.09,0,0,.06v.08l.07.1Zm-13.8-4.25v.07l.24.07.54,0,1-.22,1-.29-.41-.1-.32,0h-.55l-.16,0-.44.26-.73.11ZM187.38,37l-1.1.2-.49,0-.19,0-.13.07-.09.08-.19,0-.52,0-.13.05,0,.06.06.07.17.09.66.25h.33l.12,0,.15-.1.27.05.61,0,.26-.06.61-.28.24-.13.18-.18,0-.07,0-.07-.05-.08-.21,0Zm-8.64-18.4h-.17l-.29.07-.33.26,0,.08V19l0,.06.27.07.25-.07.47-.28-.07-.15Zm0,9.06-.07-.37-.29-.13-.77-.08-1,.16-.92.07-.72.12-.14.3.32.29.54,0,.38.07-.42.41.43.2,1.2-.18.32.19-.45.37-.16.24.76.06h.76l.15-.11.21-.24.22-.09.57-.1.09,0,0-.06-.41-.29-.39-.34-.13,0Zm-6.54,9.52-.41,0-1.77,0-.53,0-.18.09-.3.26-.27.33.05.13.34.11.46.21.68.49.12.19.07.25.53.45.44.45.27.22.19.11.11,0,.19-.09.28-.17.16-.15.08-.2.4-.28.39-.54.09-.16.1-.43,0-.3-.06-.16-.11-.15-.14-.1-.24-.06-.55-.43ZM174,31l-.27.43-.1.15-.08,0v.05l.11.12.38.28.67.17h.39l.65-.13L176,32l.1-.09.05-.09v-.1l0-.1-.15-.19v-.15l-.07-.24-.1-.11-.12-.1-.32-.16-.56-.07-.27.05-.38.23Zm17.19,2.74,0,.14.05.09,0,0,.2-.11.17.09.44.46.85.2.34,0,.65.44.31.18.21.09.34,0h.69l.45.05h.75l.11,0,.06-.09v-.15l0-.09.06,0,0-.06.08-.34v-.4L197,34v-.1l.06-.19.08-.15-.17-.4-.14-.19-.15-.33-.3-.33-.68-.56-.34-.23-.45-.16-.47-.07h-.36l-1.32.29-.4.22-.22.09-.38.32v.24l-.15.24-.24.07-.19,0-.41.43-.08.17v.23l.06,0h.37ZM224.54,87l.2-.07.09-.1h-.33l-.45.08-.13.12v0h.29ZM226,79.63l.32,0,.29-.09.14-.06.13-.14,0-.11,0-.07-.21-.37-.09-.12h-.19l-.16-.15-.12,0-.62-.08-.38,0-.19,0-.07.08.12.23.42.41.45.37Zm7.89-17.71-.12-.19-.17-.39-.18-.14-.26-.07-.18,0-.19.17-.07.17,0,.13v.09l.17.2.47.28.22.24h.17l.07-.05.07-.1v-.06l0,0V62.1l.08-.05Zm-11.37,38.85.14-.08.11-.1.09-.13,0-.17v-.35h-.12l-.08,0-.08.1-.06.12,0,.15-.07.16-.12.18,0,.1h.08ZM226.7,77l.16-.14.17-.08v0l-.1,0h-.19l-.47,0-.07.07v0l.06.06Zm5-14.65h-.24l-.23.05h-.17l-.4-.07-.49.1-.2.08-.11.07-.46.46-.42.48-.24.33-.2.49v.07l.12.63.11.36.14.33.14.19.12.07.17,0,.34,0,.76,0,.59,0,.56,0,.81-.23.19-.1.25-.19.17-.26.11-.33,0-.41,0-.76v-.07l.12-.22,0-.09,0-.23,0-.12-.05-.1-.09-.12-1.06-.4ZM221.05,89.68l.11-.12-.11-.09h-.18l-.09,0-.09.08-.11.18h.22Zm-1.67,19,.07,0,.13,0v-.09l-.06-.13-.15,0-.06,0v.06Zm1.09-10.17-.11.1v.15l.1.06.06,0,.08-.12,0-.08-.06-.06Zm-.32,1.9.63-.3.13-.16.13-.23-.06,0-.17.15-.14.07h-.13l-.09,0,0,.05-.28.07-.11.08-.09.2.13.06ZM190.89,55.33l-.09.15.1.05.22,0,.17,0,.13-.09.09-.15.05-.19V55l-.25-.26-.18-.12-.21-.1-.19,0-.16.06-.14.13-.11.21,0,.14,0,.13,0,.15.05.09.13.07.08-.11.11-.22.05-.19,0-.15,0-.07h.08l.12.09,0,.14v.23l0,.13Zm-1.1-11.19.26-.17.11-.16.09-.2v-.25l-.07-.31-.09-.27-.1-.06-.16,0-.42.07-.4.16-.16,0-.06-.06,0-.12.16-.16v-.18l-.3-.32-.28-.13,0-.05.13-.06,0-.08-.06-.08-.29-.24-.32-.16-.18,0-.44,0-.26,0-.26.08-.4.2-.11,0,0-.07v-.17l.05-.08.09-.08.44-.25.84-.6.66-.17.46-.15.09-.13-.1-.15-.13-.1-.24,0-.14,0h-.11l0,0,0-.08.07-.13.22,0,.21-.13h.23l.27-.06.13-.08.21-.19,0,0,0-.12-.19-.36-.11-.14-.1-.09-.21-.08-.52-.15h-.52l-.21,0-.47.16-.77,0-.56.08h-.54l-.25,0-1.68-1-.29,0-.19.15v.07l.13.12.24,0,.21,0,.06.05-.18.19-.4,0-.61-.22-.9.08-.11,0-.05.1V38l0,.15.1.14.23.2.25.1.1.08.13.27,0,.18,0,.06-.31-.2-.34-.34-.24-.13h-.29l-.44.07-.3.12-.13.11v.07l.07.17.06.06,1.12.71h.27l.36-.06.19-.05.28-.15.22.09.5.44.36.13-.29,0L183,40.2l-.32-.19L182.4,40l-.21,0-.11.08-.11.13,0,.13,0,.11.18.08h.23l.1,0,.09.1.1.17.15.37v.07l-.09.15-.13,0-.08,0-.26-.33h-.06l-.15.66-.06.1,0,0-.87.12-.4,0-.38-.06-.15-.11-.15-.31-.21-.26-.15-.11-.27-.16-.08-.12-.06-.18-.17-.17-.2-.07-.38-.06-.28,0-.36.2-.11.1-.18.25-.14.25-.07.23v.08l.09.18.49.53.86.49.11.22.16.1,0,.09.05.18.09.11.46.18.38-.11.15,0,.08,0,.23.17.12.2.09.08.37.07.19.07.23.15.51.61.39.38.76.66.29.42.34.39.22.52.1.15.11.09.38,0,.17.08.23.16.25.06.27,0,.26-.1.47-.32,0-.08v-.11l-.05-.26-.35-.63-.06-.22.16-.18.14-.1,0,0v.07l0,.1v.15l0,.19.08.13.12.09,1.23.22h.25l.51-.11.23-.13.21-.17.17-.11.7-.1,0-.51-.18-.24-.08,0v-.06l.33-.36,0-.1,0-.12,0-.13-.1-.14-.25-.18v0h.11ZM3.05,311.49l0,.09,0,.15.09,0,.12-.12-.06-.12ZM201.55,56.4l-.11-.17-.13,0-.17,0,0,.07,0,.16.17,0,0,.11.09,0,.09.16.17,0,0-.09,0-.16Zm-11.71-.67-.22-.33-.78-.52-.36-.17-.23-.18-.2-.24-.27-.24-.09,0h-.06l-.1.11-.13,0-.05,0-.06-.09,0-.06.16,0v0l0-.1-.38-.27-.17-.15-.2-.09h-.21l-.4.06-.26.12-.08,0-.07.09-.09.23v.08l0,.15.23.44.24.22-.24-.06-.13-.07-.33-.32-.17-.06H185v.1l0,.07.08.1.09.08H185l-.05,0,0,.13.13.2,0,.08,0,.07-.1.09-.49.28-.4.16-.37,0H183l-.13.11-.1.15,0,.07.12.28.1.16.25.17.13.06.33,0,0,0,0-.08.08-.07.19,0,.13,0,0,.06,0,.08v.11l.06.09.11.09.14.06.34,0,.23-.06.12-.07h.11l.05,0,0,.09v.12l0,.09,0,0,.71.29.36.2.46.33.43.09h.53l.83.34h.41l.29-.11.53-.32.27-.05.21-.19.25-.16.16,0h.3l.23-.09.14-.08.07-.08-.1-.17-.11-.08-.13,0-.32.14-.33-.25-.2-.22-.18-.27-.19-.38Zm12.06.92.07.05.07,0,.07,0,.2-.29,0-.23-.06-.06,0,.06-.14,0-.12,0-.17.08-.08.06,0,.16Zm32.33,7.66.19.1.21.07.55.07,1,.07h.45l0-.13v-.17l0-.32,0-.08-.07,0-.18-.07-.61-.07-.47-.17-.55-.16-.68,0-.06.06,0,.1v.12L234,64Zm-25.54-2.25v.13l0,.11.06.09.3.24.14.06h.09l.11-.05.12-.1.1-.11.12-.25,0-.13v-.22l0-.3v-.23l0-.16-.05-.16-.23-.24-.26-.08-.3.25-.12.13,0,.09-.12.15,0,.07,0,.12.17.21-.12.25Zm21.47-3.72-.51-.07-.23-.11-.16,0-.28.07,0,0,0,.09,0,.24-.05.13.09.3.09.13.12.09.19,0,.26,0,.19-.1.1-.17.13-.15.27-.2.05-.07v-.06l0-.06Zm-20.53-3.7.37,0,.09-.08,0-.11L210,54.3l-.1-.12-.16,0h-.22l-.24,0L208.9,54l-.13.06-.33.07v.08l.11.15.14.1.3.09.13,0,.26.11Zm-8.38-13.38.41-.41.16-.2.06-.13.1-.09.36-.19.45-.39.22-.25.2-.27.07-.17-.2-.17-.34-.2-.93-.31-1.12-.16-.51,0-.74.11-.18-.1-.35-.31-.19-.1-.39-.15-.79-.25-.5-.11-.29,0-.5.16-.32-.08H194.8l-.52.07-.52.14-.14.06-.18.14-.06.09,0,.11v.11l0,.1.13.32.31.38.2.13.21.08v0l-.25,0-.36-.12-.79-.34h-.13l-.26.07-.14.12,0,.1v.13l0,.32v1.52l0,.23-.08.45,0,.23v.22l0,.22.05.2.53,1.13.08.62V45l-.1.59.38.08.83-.05.24,0,.72.22.23-.09.16-.38.25-.46.71-.6,0,0,0-.24v-.13l0-.11-.38-.46-.3-.16-.47-.16-.11-.09,1.32-.07.5,0,1.94.48H199l.24-.08.48-.34.26-.24.38-.41.37-.44.08-.19-.07-.08-.18-.1.55-.15ZM2.36,251.63l-.12,0,0,0,.11.07,0,0v-.09ZM.29,247.84l.06-.1H.26l-.13.09V248l.15-.07ZM.08,253l0,0,0,.05v.07H0v-.07h0l0,0,0,0h0v-.07Zm2.11-3.55-.1-.08,0,0v.05l.09.07v.05l-.07.12,0,0,.06-.06.07,0,0-.05v0ZM1.87,251l-.07,0,0,.06,0,0h0l.07,0,0-.06ZM.39,248.29l-.07,0-.23.16,0,.37.06-.07.23-.14.11-.17ZM100.92,47.79l.18-.12.35,0-.1-.1-.29-.14h-.14l-.33.16.07.08ZM18.26,224.25v0h-.05v0h0l0,0,0,0Zm-18,22.84h0l-.07.06v0l.09,0ZM19.44,97.46l.15-.15v0l-.19-.17-.08,0,0,.22ZM2.11,256.91v0h0v0h0ZM18.55,97.68l.46-.19.1-.09.08,0h0l0,0v-.18l-.07,0H19v-.09l.09-.14v-.07L19,96.74l-.2,0-.12.25v.15l-.09,0-.21.06-.22.5.27-.18ZM3,310.3h.13l.08-.06-.8-.12-.22.1-.19,0-.19.15.08,0h.36l.16.09,0,.13-.09.12-.15.13v.07l.05.18,0,0h.12l.13-.09.26-.05v-.06l-.09-.19H2.67l-.11-.25.13-.1,0,0-.12-.06,0,0h.19l.06.08,0,.18ZM17.87,96.8l-.08,0-.11.18-.1.09-.17.07-.7.09v.06l0,.07.16,0h.41l.31.06.11,0,.07,0,0-.25,0-.07L18,97l0-.1-.09-.08Zm-9.26,145,.07-.13,0-.1-.05,0-.06.12,0,.09Zm-5.14,9.23-.09,0-.08.1.1.09h.12v-.05Zm13-154.13-.13-.07-.17-.17-.34,0-.11,0-.06.06.08.1.21.14.12.11v.08l-.05,0-.17.06,0,0,.26.17h.05l.06-.09.11-.09.14-.24.1-.06.17,0Zm112.85-56,1,0,.16.08.18.14.73.4,1.51.72.11.1.37.5.14.15.16.28.36.8.15.2.2.19.23.13.33,0,.2,0,.26-.1.37-.22.84-.21.89-.61h.11l.16,0,.14.17.15.08.66-.05.48-.08.66-.18.22-.17.14-.18,0-.09.24-1,.15-.36.28-.53.05-.32.2-.05h.67l.54-.18.24-.21.65-.91.12-.12.25-.15,2.09-.69,1.12-.45.85-.21,1.25-.48.52-.12.52-.08,1-.29.17-.07.08-.1.05-.15,0-.16-.09-.17-.1-.15-.24-.2-.65-.38-1.5-1.24-.44-.34-.5-.32-.63-.29-.4-.12-.53-.1-.48,0-.72,0-.17,0-.26.15-.63.55-.13.08-.07,0,0,0,0-.41v-.16l0-.08-.07-.05-.22,0H143l-.56.34,0,0v-.07l.05-.09.34-.3-.78-.14-1.24-.5-.65-.33-.49-.32-.38-.19-.38-.09-.51,0-1.84.16-1.76,0-2.57.16,0,.08.13.1,0,.15.11.09.56,1.24.13.21.2.2.43.15.14.18v.07l-.52.46-.21.45-.68.38-.4.66-.12.15-.35.28-.09.19,0,.07.16.16.19,0,.11.06,0,.07v.17l0,.07-.74.19-.08.07-.08.11,0,.15v.17l-.06.33,0,.11.06.06v.06l-.18.13-.21.1-.31.25-.17.09-.12.16-.18.27-.14.15-.11,0-.05.06,0,.11,0,.07.06,0-.39.15v.21l0,.1-.06.11-.13.17,0,.05ZM2.69,253.72l0,0v0l0,0h0l0,0,0,0v0l0,0,.06,0,0,0v0Zm1.66-10.29-.07,0,0,0,.07.13.11,0h.12v0l-.13,0ZM163.47,19l.91-.17.2-.17.15-.24v-.08l-.07,0L163,18.09h-.56l-.31.05-.68-.09-2.31.18-1.06.21-.45.07h-.35l-.06,0-.13.19,0,.1v.26l.15.28,0,.18.08.2,0,.07-.11.07,0,.08v.09l.06.13.24.11.23.17.58.19.53.39.4.12.47,0,1.53-.25h.35l.34.06.44-.06.66-.14.37-.12.14-.2.07-.23,0-.4,0-.12,0-.09-.07-.07-.21-.06-.89-.05-.18-.11-.09-.08v-.06l.24-.08Zm64.05,12.62-.37.2-.44.31-.37.19-.33.29.11.18.19.09h.39l.49-.13.15,0v-.25l0-.25.24-.15.24-.33-.16-.13ZM196.46,11.77l-1.54-.14-.8-.13-2-.48.24.54,0,.22v.29l.24.34.9.74.29.17.24.08.38.06.53,0,.68-.06.83-.17.38,0-.17.23-.1.08-1.66.33-.55,0-.21.09-.19.49.15.14.69.22.42.33h.13l.42-.16.94-.19.25,0,.36,0,.31.05,0,.05-.22.12-.16.18,0,.06.11,0,.22,0,.81-.23.36,0,.75-.22.44-.07.37,0,.33.08.46.34,1.15.13.82,0-.1.05-1.1.12-1.42.05-.32.42-.34.11-.47,0-.47,0-1.4.36-.45.17,0,.09,0,.1.07.11.42.29,1.15.38.36.18-.1,0-.73-.09-.13,0,0,.07.15.21.32.32.24.18.32.05.29,0,.53.08,1.6.32.14.1-.9,0-.9.08-.27.1.08.14.25.21.65.39.91.41,1,.3,1,.21.63.09.47,0,.13-.08-.05-.16-.09-.13-.12-.11-.37-.2.07-.06.34,0,.34,0,.32.1.23.11.11.14.18.12.45.24.14.13.11,0,.07,0,0-.14-.19-.36-.27-.43-.46-.6-.14-.25.1-.26.08,0,.14.13.51.65.36.34.72.78.26.13h.3l.07,0,.14-.21.2-.4.11-.25V20l-.16-.39,0-.17.07-.05h.27l.57.52.28.11.23-.06.13-.18,0-.12v-.14l0-.1-.07-.05-.38-.15-.05-.09.14-.1.07-.22v-.56l.08-.29.14-.17.14-.09.35-.17.1,0,0,.05-.24.37-.08.16,0,.09v.19l0,.46.12.21.49.18.3-.17.52-.39.36-.21.14-.14L212,18l.1,0,.39.06.2-.06.39-.18.76-.23,1.7-.36.24-.1.3-.21,0-.21-.21-.28-.62-.72-.28-.39-.06,0-.15.09-.12.09-.33.38-.13,0-.13-.35-.18-.26-.1-.09-.22-.08-.64-.1-.45.19-.14,0-.67,0-.1,0,.17-.22.17-.13.25-.65.18-.4-.18-.36-.23-.38-.26,0-.66-.21-.43-.07-.12-.06.12-.16.52-.21,0-.1v-.44l0-.23-.05-.11-.57-.25-.34-.1-.62,0-.21,0-.26.13-.06.18,0,.28,0,.17.47.18.24.29.11.21v.06l-.26-.12-.44,0-.65-.21-.32-.18-.35-.33,0-.13.18-.32V11.1l-.08-.08,0-.06.16-.15v-.08l-.05-.11-.13-.16-.19-.12-.4-.06H207l-.27.12h-.14l-.71-.3-.66-.18-.21-.1,0-.23V9.54l-.09-.16-.73-.49-.43-.38-.92-1-.24-.42-.22-.27L202,6.46l-.4-.2-1.26-.43-.62-.14-.56,0-1-.06-.25,0-.09,0,0,.07v.13l0,.12,0,.12.17.09.45.09,1,.1.24.17.1.12v.13l-.12.13-.13.06h-.2l-.78-.17-.83.17-.64.07-1-.16-.62.19-.54.62,0,.12.65.2.82.34.36.56.8.21.35.14.2.14L197,9.39l-.51-.11-.32,0-.25-.38-.4-.22-.58-.07-.42-.2h-.44l-.44.11-.09.65.49.43.57.4.12.15-.41,0-.54-.13h-.21l-.47.09-.12.09,0,.08,0,.11.12.13.19.12.38.14.25.06.54,0,.46.49.44,0,1.28-.22.67.08-.09.06-.59.14-.06.07,0,.11,0,.14,0,.08ZM185.2,11.6l.11.07.29.05.71,0,.36.25.05.17v.09l.16.12.56.22h.12l.1,0,.12-.22.07-.3v-.62l0-.26-.13-.22-.24-.16-.28-.08-.56-.06L186,10.5h-.15l-.54.18-.05.05-.11.23,0,.14,0,.39Zm3.59,6.33.07.13-.55.14,0,.09v.09l.07.19,0,0,.28.14.09.08,0,.27.41.32,0,.15,1,.2.6.25.17,0,0,.05-.18.09-.39,0-.9,0v.09l.05.1.38.33.67.27.15.13-.08.11,0,.09,0,.15.09.1h.33l.49-.13.27-.08h1l.72-.11.47-.14.17,0,.35,0,.24-.09.35-.34v-.14l-.09-.14-.23-.2L194.4,20l.14-.16.54-.18.28-.12v-.07l0-.14-.23-.2-.77-.36-.3-.11h-.85l-.48-.16-.1-.1,0-.09,0-.11-.41-.35-.23-.11-.71-.21-.47-.21-.43-.15-.44-.09L189,17l-.35,0-.26.12,0,.1.09.28Zm-2.59,8.49.08.34.14.32h-.58l-.31-.31-.67-.49-.3-.06-.52,0-.67,0-.4.09-.55.22-.14.19,0,.09.11.09.33.2,1,.23.18.09.21.14,0,.06-.12,0-.66,0-.12,0v.06l.47.23.38,0,.36.15.57.14-.52,0-.44-.07h-.17l-.06.07.11.22.14.17.57.34,0,.07-.16.05h-.18l-.32-.09-.17-.1-.24-.22-1.33-.95-.31-.19-.07-.11,0-.16-.1-.16-.39-.31-.15-.08-.54-.15-.22,0-.16,0-.23.16-.31.26-.09.19.3.2.16.05.73.05.05.09-.52.24-.2.19,0,.08.09.18.21.16.58.11-.17.19V29l.07.16.1.16.24.26.06,0,.52,0,.08,0-.32.12h-.29l-.33-.12-.35-.24-.69-.27h-.42l-.29.24,0,.15-.35.25-.68.25-.16.16.19.24.22.15h.1l2.26-.21.53.11.64-.08,2.06-.09,1.5,0,0,.13h-.79l-.35.06,0,.09-.42.15-.68.4-.92.16v.05l-.07.19.24.12.5.17.45.22,0,0-.64,0-.06.12.22.52.12.17.12.1.59.06.66.13.44-.21h.2l.16.11.18.06h.31l.36,0,.27.07h.28l.57,0,.36,0,.27,0,.09,0-.06-.22-.17-.18,0-.1.05-.09h0l.14.21.26.15.09,0,.26,0,0-.1-.08-.17-.29-.31v-.65l.49-.34.38.23.2.19h.05l-.11-.56.05-.5-.06-.05-.87-.3-.05-.09.42-.15.21-.19v-.12l-.08-.26v-.16l.1-.31.19-.22,0-.13V28.5l-.08-.18-.25-.36,0-.14V27.7l.08-.1,0-.14v-.19l0-.13-.17-.11-.32-.09-.54-.22-.11-.11-.47-.33-.37-.15-.49.18Zm45.91,18-.26-.1-.22-.16-.09-.27-.06-.12-.19-.24-.5-.22-.07-.07-.14-.32-.16-.21-.36-.17L228.69,42l-.46-.1L226,41.84l-.35-.08-.71-.24-.48-.06-.59-.28-.43,0h-.29l-.13.05-.06.08,0,.2,0,.32,0,.23.18.22H223l0,0-.07.17,0,.19.09.19.09.12.22.15.66.15.22.11.06.25,0,.33.1.41.13.34.07.12.23.17.65.32.37,0,.39,0,1.23-.24.5-.06,1,0,1.69.34,1.26.19.46,0,.2-.14-.08-.13-.24-.2-.1-.16.07-.32ZM192.78,23.15l3.27.3,1.18.19.2,0,.41,0,0,0,.43-.65.45-.1-.16-.23-.17-.14-.35-.14-.23,0-.89,0-1.35-.17-.61,0-.57,0-.51-.21h-.42l-1,.23-.11.05-.11.12-.09.18,0,.16.4.43Zm11.77,13.36.6,0,.23,0,.4-.14.14-.1,0-.12V36l0-.14.07,0,.15,0,.12,0,.09-.1.09,0h.08l.06.11,0,.22.05.09.16-.09.23-.34.32-.1.09,0,.11.11.18.1-.08.16-.24.3-.14.22-.06.16v.11l.1.14.16.07.86.09.85.15.49-.1.76.15.46,0,.22,0L211,37l.15,0,.64.22.28-.07h.21l.31.2.3,0,.56-.1.07,0,.06-.09,0-.13h.07l.2.25.25.12.17,0,.1,0,.07-.32.11,0,.18.16.2.12.3.12.5.08h.37l.8-.14.51,0,.2-.07.27-.26,0-.06.14-.38,0-.15-.24-.15,0-.06-.06-.19.05,0,.23.08.37.26.12.06h.12l0,.12-.07.22,0,.16.1.27.15.2.1.08.39.18.18,0H220l.7.27.26.06h.27l.43-.07.57-.16.24,0,2,.09h0l.11-.28,0-.19v-.19l0-.12.09-.06-.07-.13-.24-.22-.06-.12h.12l.18.07.51.29.92-.12.23-.14-.11-.17-.12-.14-.28-.15h-.14l-.64.07h-.21l-.25-.08-.24-.15.05-.07.81-.21.74-.28.28-.23v-.15l-.13-.38-.13-.28-.16-.06L225,34.3l-.33-.07-.05,0L225,34l0-.08-.07-.09-.33-.22-.42-.09-1-.08-.25-.08-.1-.06,0-.06L223,33l-.24-.11-.77-.22-1-.23-.41,0-.42,0-1.14.17h-.3l-1-.34-.39-.06-.18.15-.24.06-1,.37-.3,0H215l-.82.24-.43-.07-.83.15-.21.1.32.27-.11.19-.59-.09-.4-.16-.22-.13-.55-.16-.87-.59-.23.09-.4.41-.07,0-.13-.23-.17-.14-1,.19-.71-.61-.16-.07h-.14l-.15,0-.15.09,0,.15.07.21,0,.15-.08.16-.07,0h-.1l-.71-.52-.12,0-.64,0,.05-.08.56-.21.24-.2.12-.16v-.1l-.14-.15-.47-.3-.29,0-.09,0-.18-.32-.23-.19-.25,0-.28-.27-.15-.11-.95-.17-.17-.14-.44-.19-.53-.12-.25-.27.31,0,.88.26,1.06.2H206l.24-.1.13-.08,0-.08-.12-.2-3.21-.83-1-.11-.17-.05,0-.19.1,0h.13l.14.06.82.14.5.12.17-.12v-.09l-.1-.12-.26-.19-.78-.41-.36-.11-.51-.05h-.5l-1.07.17h-.87l-.58-.12-.93.55-.24.1.12-.18.13-.14.24-.18.13-.22.14-.17,0-.07V27l0-.2,0-.07-.1-.07-.28-.14-.37-.3-.41-.2-.28,0-.34,0-.38-.06-.65-.25-1-.34-1-.28-.43-.05-.45,0-.67.14-.36,0h-.28l-.16,0,0,.1-.1.15.08.11.21.16.46.23.06.06-.11.09-.29,0-.18,0-.4-.19-.05.12v.09l0,.07.07.05.42.14,1.34.68.2,0,.47-.05-.1.09-.2.09-.48.07-.06.11.15.19.24.14.8.29.32.45.57.07.56-.11h.31l.42.09,1.09.14.39,0,.05-.06.18-.09.54-.16h.24l.21.07.38.62.33.45.44.58.33.33.23.31.07.21.07.3,0,.29,0,.1-.06.09-.5.51-.19.29,0,.1v.15l0,.2,0,.15.07.14.28.23.25.25,0,.1-.22.1,0,.09.12.43.24.66.17.22.42.21.22.2.09,0,.35,0,.35.12h.07l0-.26.08-.09.54-.3v.07l-.18.22,0,.12.37.1.45.38.4,0,.7.26Zm1.24-11.88,0-.28-.23-.24-.66-.5-.51-.19-.51-.13-.35-.05-.37,0-.19.06-.09.07-.09.22,0,.33v.24l.05.18.3.27,1.55.64.27,0,.56-.21.19-.09.08-.08,0-.12Zm-.26,2.92,0-.07v-.1l0-.1-.1-.08-.34-.26-.39,0-.57.07-.25.08-.09.14v.08l.21.33.28.38.25.26.22.14.16,0,.11-.05.31.06.1-.05v-.06l-.09-.06-.06-.12,0-.18v-.12l.08-.12Zm-68.39-3,.06,0v0l-.05.05v.08l.12.11v.08l-.14.16-.08,0v.09l.09.16.12.1.27,0,.2,0,.53-.2.32,0,.44.1.54.21.22,0H140l.41-.12.3-.59.11-.07.07,0,.09.06.07.14.16.44.15.12.08.22.09.38.09.19h.09l.43-.08h.52L143,26l.15-.11.14-.16.14,0,0-.06v-.15l0-.09-.35-.23,0-.08.22-.15,0-.14,0-.23,0-.15.16-.19.12,0,.07.09.07.19.14.24.23.28.16.16.18,0,.18-.07.09-.09.25-.37.08-.07.37-.22.05-.13,0-.22-.31-.22,0-.1.06-.11.13-.05.33,0,.23-.08.09-.16.07-.32.09-.16.16-.14.21-.08.26,0,.42-.1h.13l.07.09-.07.21-.22.34-.16.32-.11.32,0,.22,0,.17.3.29.21.13.49.23.3,0,.24,0,.17,0,.1-.1.15-.2,0-.13.05-.28V24l0-.15,1.12-.11.53-.1.31-.16.2-.13.09-.1v-.11L151,23l-.42-.42,0-.11.14-.06h.16l.4.08.23-.12-.09-.13-.43-.3-.41-.35-.08-.16.25-.15,1.25-.29.25-.1.08-.06v-.07l-.14-.18-.92-.5-.4-.28-.31-.14-.3,0-.68,0-.24.09-.21.15v.07l0,.08.54.19.12.09-.2.13-.1,0-.45-.07-.18-.07-.14.12-.14.07-.29,0-1.19-.38-1.71.08-.57.08-.5.24-.38.25-.73.39-.81.56-.24.1-.11.07-.19.28-.1.1-1.1.35-.23.11-.22.15-.79.67-.12,0-1.57.05-.12,0-.21.14-.57.49-.24.25-.06.12.46-.08Zm17.15-5.62.65.26.37,0,.58-.11.23-.07.23-.15v-.09l-.15-.17,0-.1-.09-.07-.27-.07-.37-.31-.19-.1-.2,0,0-.13,0-.14-.06-.07-.59.12-.25.1-.14.09-.22.05-.29,0,.09.24Zm1.19,3.92h-1.1l-.48.07-.41.21,0,.09.11.08,2.14.37.32-.11.17-.16-.05-.19-.13-.1-.25-.13Zm-15.56,3.56,0,.11.17.06h.17l.15-.07.11-.09.08-.1.06-.13.06-.25v-.09l0,0-.17,0-.11.1,0,.08V26l0,.08Zm7.79-.75-.25-.09h-.24l-.3.13-.54.3-.51.11-.53.18-.83.51L144,27l-.21.14-.17.18,0,.06.16.08.44.11.55.23.42.07.61-.23.22-.11.76-.76.4-.45.2-.18.3-.45Zm44.55,9.91.68.24.18,0h.1l.07,0v-.08l-.14-.2-.31-.24-.31,0-.19.07-.06.07-.17,0,0,.06Zm-37.07-9.88-.26-.33-.08-.13v-.28l0-.12-.1-.13-.21-.11L154,24.4l-.48,0h-.48l-1.23.16-.43.27-.11.15,0,.14v.11l0,.08.28.07,1.31.23.3.09.2.11h-.34l-1.71-.21-.59-.12h-.32l-.52.17-.3.18-.05.09.11.25-.08.1-.18.13v.12l.42.2.22.06,1.53.06,1.27.09-.39.09-.64.06-.75-.05-1.15,0-.87.09-.36.08-.14.1-.29.29.05.12.23.08,1.23.17.82,0,1.93-.26v0l-.06.07-.23.15-.19.07-1.57.4-.29,0-1.4-.1h-.55l-.22,0-.17.06-.11.07-.28.25-.15.17,0,.08v.09l.06.16.12.13,1,.28.33.05.77,0,.65.59.83.37.1,0,.16-.13.09-.18.08-.1.13-.09.14,0,.15,0,.12.05.21.24.08.17.1.1.11.05.34-.07.88-.29.21-.21V30l-.28-.38v-.08l.06,0,.11,0,.29.15.24.07.11-.21.13-.41.06-.1.08-.07.06,0,.13.18.08.06.61-.11h.25l-.08.07-.56.27-.11.1-.1.14-.08.2,0,.1v.24l0,.07.1.13.16.07.78,0h.81l.2,0,.13-.07.21-.18.11-.07.12,0,.24.07.44.31h.53l.47-.07.33,0,.31-.07.63-.24.18,0,.11.13-.1.13-.39.24-.54.26-.35.12-.24,0h-.36l-.49-.08h-1l-.36,0-1,.33-1.13.17-.58.14-.39.18-.14.17.2.29.19.14.67.4.33.17.32.12,1,.19,1,0,1.66-.21.94-.27.74-.16.41-.17.28-.24.18-.11.33-.11.45-.07,1.41-.07,1.07-.44.38-.2.33.13.06.08-.08.06-.17,0,.31.16.25.07.25,0h.26l.43-.11.43,0,.73.26.63.15h.2l.2,0,.8-.25,1.05-.22.26-.16.25-.23.4-.89L172,30l.37-.52.1-.29,0-.18-.13-.57-.07-.22-.05-.07-.16-.1-.38-.21-1-.29h-.27l-.32.1-.28.19-.09.09,0,.09.07.25.11.14.14.1v0l-.42.08,0,.17,0,.22,0,0-.09-.4-.14-.32-.06-.08-.11-.07-.16-.07-.41-.09h-.26l-.34.07-.47.28-.07,0-.15,0,.12-.14.48-.39.05-.06,0-.07v-.1l-.09-.17-.15-.11-.35-.06-.31,0-.26,0-.19-.05,0-.08.06-.13.17-.15.28-.17.12-.13-.11-.43-.3-.28-.33-.23,0,0v-.24l0-.14-.13-.23V24.9l.05-.09.22-.2.09-.11,0-.13,0-.07-.13,0-.55-.31h-.56l-.25.07-.26.12-.37.26-.8.67-.26.14-.62.24-.09.08v.12l.05.16.06.11.1.08.58.33.41.08.44.32.1.16,0,.16,0,.12-.07.09-.89.32.13.29,1.71.82,0,.11,0,.21,0,.15-.09.18-.13.11-.17,0L162.15,29,161.6,29l-.34,0-.34,0-.22-.11-.22-.2-.18-.28-.14-.37-.11-.21-.07,0-.33-.07h-.35l-.37-.07-.05-.06.08-.07.39-.16v-.12l-.93-.63-.71-.61-.57-.23-.39-.08h-.4l-1,.1Zm17.18-4.44.2.18.09.29.25.5.33.45.32.34.4.11.62.22.32,0,.14-.08.1-.24,0-.13-.08-.26-.08-.14-.44-.36-.39-.05-.07-.15V21.6l-.13-.19-.41-.45-.33-.28L173,20.5l-.56-.12-.37,0-.06.06.34.47Zm-14.93-4.37h.36l.93-.15.9,0,.74.43.5.08.17,0,.3-.2.16-.17.13,0,.29.1.37.24.17.06.69.13h.26l.57-.06.65.13.47,0,.2-.07.09-.14,0-.18V16.7l0-.17-.19-.35-.07-.07L165,16h-.12l-.34-.29-.25-.15-.41-.15-.53-.28-.44,0-.55.07-.41.08-.7.24-.26.17-.4.09-1.06,0-.9.15-.46.11-.63.22-.29.23,0,.08.13.17Zm16.09-2.14.47,0,.85,0,.31.14,0,.16-.37.44-.17.14v.12l.15.11.16,0,.17-.08.76-.53.51-.12.08,0,.21.19.24.15v.08l-.61.35-.08.08v.07l.36.1,1,.06.22.1.07.07-.41.17-.77.07-.2.11.89.13.21.14-.2.23-.41.06-.92-.16-1-.26h-.2l-.19.08-.19.14v.23l.2.31.22.24.5.3.38.14.78.11.58-.23,2-.07-.12.17v.11l.09.15.11.09.13,0,.67-.06h.48l.46.11,1.08.37.46.06.22.31.26.21,0,.07,0,.34,0,.08.14.23.18.18.63.31.64.23.63-.09.66,0,.37-.05.09-.08.17-.38.14-.13v-.08l-.08-.26-.15-.21-.83-.79-.39-.14,0-.1,0-.18v-.13l-.14-.21.07-.07.3-.15.12-.22.11-.08-.06-.09-.34-.19-.44-.53-.84-.49-1,.09-.43-.11,0-.11.08-.15.19-.24v-.11l-.1-.11-.11-.06-.32-.07-.8-.51-.35-.07-.21,0-.46.15-.43.1,0,.25-.05.09-.15.14-.18.08,0-.1,0-.13,0-.06-.27-.14.11-.09.08-.16,0-.13V15l0-.08-.5-.67-.55-.34-.48-.13-.56-.21-.54,0-1.84,0-1.12-.14-.11.09-.18.26-.15.35,0,.23v.24ZM189,35.38l.12-.12,0-.07,0-.09-.2-.13-.21.08-.51.34.05.09.12.1ZM711.5,383.08h-.25v.1l-.08.28-.35.2-.06.11,0,.05h.14l.09-.11,0,0,.07.1.23.09h.12l0-.23,0,0,0-.1.09-.05,0-.11,0-.11.11-.09,0,0,0,0Zm16.19-251.16.11-.25,0-.44-.09-.34-.12,0-.68.34-.93.18v.13l0,.13-.16.38-.34.45-.33.17v.09l0,.07.05.05.36-.25.7-.37L727,132Zm-8.13,161.57.11.19.07,0,.19,0-.11-.08,0-.11-.13,0Zm10.62-150.85-.57-.13-.22.12-.17,0,.48.34.14.16,0,.17.06.14.21.29.18.22.12.08.16,0,.11.18.24.23,0-.42-.13-.2-.2-.14-.14-.17-.29-.48,0-.23.11-.19ZM717.44,316l.4.28.13,0h.14l.15-.06.08-.13-.1-.37-.24-.18-.26-.16-.2-.19-.18-.21-.37-.34-.48-.37-.22-.11-.12-.12L716,314l-.09-.12-.22-.11-.15-.2-.27-.23,0-.09v-.13l-.06-.11-.15-.11-.1-.16-.12-.11-.16-.07-.27-.16-.75-.7-.3-.24-.25,0-.23-.15-.28-.25,0,.07,0,.12.05.11.12.06.06.1,0,.14,0,.14.28.35.11.24.15.21.2.18.19.2.37.48.14.2.16.09.45.47.17.13.2.09.38.27.25.13.15.18.22.13.33.13,0,.08,0,.12.06.1.23.16.25.11,0,.08.06.06h.11Zm-3-58-.08,0,0,0,.12.06v-.1Zm-5.69,30.49,0-.08v-.17l-.2-.38,0-.26-.09-.13v-.08l-.08-.28-.22-.24-.13,0-.06-.09,0-.21.08-.06,0-.11-.47-.65h-.1l0,0h-.07l-.11,0,0,.09.23.37-.12.16.17.72.18.42.3.26,0,.08.29.2.24.43Zm1.73,2.43-.24-.45-.09-.12-.18,0-.22-.1h-.15l-.25-.14,0,0-.09,0-.35-.26-.19-.09h-.16l0,.16V290l.22,0,.18.07v.2l.08.08,0,.16.49.35.24.12.28.06.16.1.17,0,.2.06h.15l-.17-.1Zm-4-3.62,0,.08v0l.05,0,.15.06.08-.08-.17-.18-.13-.12h-.06l-.11,0-.16.07v.1l.15,0Zm2.31,1.34.06.09.08-.06.14.18,0-.08v-.22l-.25-.56-.08,0,.06.2,0,.14,0,.17Zm13.08,12.14h0l0,.06v.64l.08.15,0-.12,0-.28Zm.08,6h.26l.15-.21-.09,0-.18-.32h-.22l0,0h-.1l-.18.18-.08.14h0l.1,0,.1,0,0,.09-.12.07Zm.1-2.22-.13-.17-.06,0-.06-.07-.06-.1h0l-.1.07,0,.11,0,.17.07.08h.06l.23,0,.28.12,0-.08-.06,0Zm-.69-1.25-.12.06,0,.1.12.09.33.1H722v-.07l0-.08-.08-.08-.06-.24-.06-.08-.23.19Zm-1,11.5.05.07.08,0,.24,0,.07-.37h-.17l-.09,0,0,0,0-.09,0-.06-.14.06-.23,0,.11.29,0,.12Zm-12.95-26.2-.14-.05-.1-.23-.2-.12-.34-.27-.6,0h-.19l-.43-.36-.14,0-.13.08,0,.08v.37l.1.23.14.2.1.08.1.07.3.07.66.07.32.17.34.1.14,0,.19-.06,0,0,0-.2Zm14.34-17.93v0l0,0h0l0,.05,0,.05h0Zm-2.9,29.35-.1-.22h-.09l-.1.24v.19l.19.78-.07.41.12.24.12.12v.13l.14,0,.24-.1.32,0,.24-.18v-.09l0-.12-.07-.54,0,0-.07-.12v-.21l.05-.08-.1,0-.09,0,0,.25-.11.15-.08,0h-.16l-.08-.71Zm4.62-53.41,0,0h-.09l0,0h.09Zm-1.75,55.63.08.52,0,.1h0l.09,0,0-.13-.11-.83,0-.1Zm-20-16.59-.12-.39-.12-.18-.23-.07-.07-.12v-.33l-.22-.1-.12,0-.21.22,0,.13-.2.09,0,.1,0,.11.14.05.11-.11h.32l.11,0v.14l0,.23.13.12.19.07.13.19,0-.08h.1Zm-1.17-2.49.15,0v0l0,.08.21.08.17-.11-.06-.08-.07,0-.09,0-.15-.07-.27-.27-.09-.1-.07-.33-.14-.15-.53-.3-.31-.28-.25-.09-.07.06v.16l.07.1.39.34.39.59.39.32ZM701,286l-.11,0h-.15v.05l.26.13.12,0v-.07l0-.06Zm-.38-.34.07-.16-.06-.12-.08,0-.24.17-.05.09.23.3.11.06v0l-.11-.14.05-.15ZM699,284.35l0,.08,0,.13.09.26,0-.05,0-.15-.06-.29Zm1.25-.09-.08-.06H700l-.15.14v.16l.16.22.22,0,0,0,0-.06,0-.13v-.16Zm-1-.64-.16-.09-.13.13v.14l.2.22,0,.12.05,0,.06.12,0,0,.06-.1.18-.19.05-.11-.19-.07Zm-1.39-2.47-.11-.2-.17-.19-.19-.17-.11,0-.13-.05-.1-.08-.17-.37-.09-.09-.19-.15-.06-.09v-.1l-.17-.34-.19-.18-.26-.06-.1-.06-.09-.09-.09,0v.21l-.1.41,0,.14.06.25,0,.08.17.2.14.11.12.22.07.06.31.17.06.22-.08.24.1.21.15.21.17.14.18.11.2.07.21,0,.1-.05.09-.07.18-.06,0,.08,0,0,.06-.19,0-.26Zm11.19-127.61-.06,0-.17,0-.35.19-.11.13,0,.09.26.19.08,0,.09-.06.18-.24ZM706.49,292.7l-.73-.48-.16-.06,0,0,0,.09,0,.1.17,0,0,0,.1.07.25.06.17.12.07.16.09.06.13.05.15-.06-.07-.09Zm.62-139.22.2,0,0-.06v-.18l-.15-.07-.21,0,0,.12.06.09Zm.92.22-.26.18-.27.52-.21.21-.51,0-.24.19-.23,0,0,.08.09.15,0,.32.09.09.22.08.11-.09.16-.17.19-.08.39,0,.29-.25.29-.38.14-.28.07-.3,0-.28Zm-2.47,132.2.26.2v-.05l-.05-.15-.1-.13.11-.15-.8-.68-.13-.09-.17-.05-.17-.15-.18,0-.2-.15-.07-.1-.21-.16-.25-.26-.57-.17,0,.07.17.17,0,.22.17.14.18.2.11.05,0,.07.17.18.3.15.29.22.11,0,.12.13.58.28Zm-8.15-3.66-.06.15.12.08.21,0,.06-.1-.25-.17Zm8,3.73-.08-.13v-.07l-.09-.08-.09,0,0,.11.06.07.14.09Zm-1.24,22.36v.34l0,0,.06-.15v-.27Zm-2-22.56-.22-.07-.07.06-.07,0h-.06l0,0-.05.17.11.15.14.06.22-.14V286l0-.05,0,0,.14-.09Zm19,15.67-.33.27.09.06.25,0,.15-.08.21-.31Zm-18.85-15.36-.13.22,0,.08h0l.11-.05,0-.07Zm-7.05,107.36v.13l.08-.11.17-.37.05-.29-.14.09ZM705,254l-.22-.07-.12.06,0,.08.07,0,0,.17.15,0,.12,0v-.09l.06-.07Zm-.73,33,0-.05,0,0-.11.06L704,287l.06.08.12,0,.1,0h0l.1-.05V287Zm30.64-19.1h0v0l0,0h0l-.24,0,0,0h.1l.1,0Zm-.48,1,0,0,.17-.16,0-.06v-.05l-.1-.09-.06,0h0l0,.07h0l0,0,.08.09-.06.09Zm-.1-4.54,0,.05.16-.07h.08l0,0h-.13l-.11.07Zm-4.88,95.06,0-.18-.14.07h-.06l-.13.09-.07.22,0,.09.29-.12Zm5.17-92.31h.07l0,0v-.13h0V267l0,0Zm10.25-115,.07.11h.14l.06-.24.08-.13-.24,0-.31.12-.19,0,0,.08Zm-11.39-7.35-.34-.26-.23-.1-.16-.18h-.15l.09.18.37.31.8.59-.08-.15Zm1.22,122.16v-.05l-.07-.12,0,0,0,0,0,0v0l.06.08Zm4.47,85.62-.18-.14-.54-.07-.11,0-.11.08-.21.08-.18.1-.18.23-.21.2-.23.12-.25.07h-.12l-.24,0-.79-.29-.31-.16-.64-.41-.1-.05h-.11l-.17-.06-.13-.12,0-.06.06,0,.15.07,0-.12-.24-.26-.1-.56-.05-.59-.06-.2-.11-.17V350h-.18l-.29-.42-.06-.13-.06-.12-.13.05,0,.13.08.09.05.1,0,.14,0,.14,0,.13v.14l.09.44V351l-.05.09-.18,0-.15,0-.07-.12,0-.28,0-.12-.11-.06-.4-.17-.19-.15-.07,0-.06.1-.08-.1-.1-.05-.16,0V350l.07,0,.08-.29.09-.08-.12-.3.07-.1V349l.07-.19-.36-.57-.11-.18-.12-.3-.16-.21v-.06l.29.07h.1l-.13-.29.06-.09,0-.1-.14-.31-.09-.11-.06-.11h0l0-.11-.09-.19h-.08l-.18.12-.12,0,0-.09v-.11l0-.11,0-.07-.36-.22-.16-.09-.07,0-.06.06-.09,0-.09-.12-.45-.17-.06-.05,0-.19-.15.11-.09.11-.12.06,0-.1-.06-.09-.11-.12,0-.11-.21-.38-.1-.13-.07-.15.19-.23-.35,0-.36,0,.29.44.32.41.17.26.13.27,0,.25-.16.18.08.11.13.2.09,0,0,.06v.1l0,.09.11.14.06,0,.12-.18.1-.08.1-.07.08,0,.1,0,0,.08-.06.07-.23.15-.16.18,1,1.57.08.15.11.3.09.08.1,0,.05-.12,0-.09-.26-.36-.16-.31v-.15l0-.11.09.27.12.25.43.33H731l-.05-.12,0-.08.07,0,.18.17v.08l-.1.11v.13l.11.07.07.12v.14l-.06.12-.07.09-.3-.3h-.12l.36.58,0,.1.06.27,0,.15.12.08.13,0,.14,0,.14,0h.11l.27.36H732l-.13,0-.13.09,0,.15-.14-.31-.1-.06,0,.07.15.42.06.13.12,0-.06.13,0,.13,0,.13.17.45.15.29-.1,0-.1.06-.08.11.06.31-.08.18-.22.28-.17.48-.1.41-.08.43-.07.13-.24.18-.13.08-.09,0h-.1l-.5.1-.49.23-.09.06-.06.1,0,.13,0,.13,0,.14,0,.12.24.22.43.18.41.21.2.24.22.21.24.1.26.05.39.25.27.42.1.22.07.22-.15.52-.1.27-.35.53-.39.49-.37.36-.06.08-.05.09v.06l.05,0,.18,0,.19-.08,0-.07,0-.07.07,0,.07.06-.06.08,0,.31v.05l0,0,.32-.07.22.08,0,.08,0,.21,0,.1.17.1.16-.06.14-.09.52-.27.34-.2.32-.24.17-.19.14-.24.31-.35.15-.25.17-.24.2-.22L735,359l.18-.35.19-.14.16-.16.3-.58.34-.55-.28-.19,0-.12v-.16l.06-.29.18-.23.1-.1.11-.08.36-.14.24-.07h.24l.27.05.27.09.08.08.08.2.07,0,.13-.22,0-.12-.06-.08v-.1l.08-.38.12-.32.23-.06.21-.13.19-.18.12-.25.11-.57.14-.57.13-.24.16-.22.06-.15-.12-.09Zm-4.55-88.27h0l.14-.06,0,0h0Zm-.4,51.86v0l0,0,0,0v0l.06,0Zm6.11-9.4-.07.16.11,0,.09-.09,0-.11h-.1Zm12.11-152.5.19-.1.39-.15v-.13l.13-.17,0-.12-.06,0H753l-.11.25-.09.07-.21,0-.29.18,0,.06ZM742,311.16l0,0,0,0,.05-.05.17-.12.06,0,.08.08.27,0v-.09l-.14-.06-.17,0-.11,0h-.16L742,311l-.11.07-.11,0-.11.08-.09,0,.12.07Zm1.13-2.65,0-.19,0-.11v-.1L743,308l-.22-.17-.14-.19h-.06l-.05-.05v-.09l-.06-.1-.12,0-.13.05-.4.08-.25,0-.42.12-.25.15-.23.18v.1l0,.12,0,0h0l-.05.05,0,.07-.09.05-.12,0,0,.1v.12l.1.24.12.1.15.07.36.1.28.1.15.09.22,0,.23,0,.2,0,.18-.13.19-.09h.2l.07,0,.06-.05h.23l.15-.05-.08-.32Zm-2.2-11.44v0l0,0-.1,0-.09,0h0l0,0,.13,0Zm-3.1-23.6,0,0v-.16l0-.08,0,0,0,.1v.15ZM732.72,256l.07,0,.07.06h.06l-.14-.13h-.15l-.07-.05,0,.07,0,0Zm.67,92.87.06.1.15.06v-.13l0-.24-.13-.16-.07-.11h0l0,0-.1.09v.2l0,0Zm3.92-76.3.07-.05,0-.16,0-.17-.07,0-.09-.08h0l.05.08.09,0,0,.27,0,.06ZM744,150.32l-.25,0-.35-.12h-.28l-.39.16.2.1.26.08.09.26.32.15.32-.15.16,0,.3,0h.09l.1,0,.09,0-.36-.28ZM718,312.14l-.09-.07-.08,0v.08l-.07.23v.12l-.15.19h.11l.1-.08.08-.13,0,0v-.13l0-.1Zm1.67-10,.21.15,0-.05,0-.16-.23-.07Zm-5.5,67.09-.16.15.08.09.18.08-.06-.32ZM719.25,317l.08,0,.07-.08,0-.09-.17-.1-.06.16,0,.05Zm-.83-25.51-.21-.05H718l-.1.05-.06.11h-.1v.06l0,.12h.08l.1,0,.14-.14h.18l.16,0v0l.08-.1Zm1.5,11h-.12l0,.08-.09.32.13.17h.05l.15-.06.07.09,0,.2v.33l.08.22,0,0,0,.09.15.05.2-.14.3.06.17-.13-.08-.12,0-.12-.12-.07-.06-.12h-.08l-.29-.23,0-.11h-.05l-.09-.05-.13-.4Zm.62-4.36.11.26,0,0h0l0-.05.09,0,0-.05v-.15l-.13-.15-.16.07Zm0,.8-.07.06,0,.18,0,0,.23.05.09-.1,0-.16-.19-.1Zm-2,14.23.07.17.12.15.28.1.14.16h.12l.07-.15v-.07l-.13-.25-.13-.12,0-.34-.06-.08-.13-.06-.31.07,0,.09.19,0,.1.09-.18.21Zm13.23-57.41h.06l.09,0,.13,0,.06,0-.35,0-.25-.13-.1-.08,0,0,.12.11.21.09ZM713.13,370.46l0,0h.07l.1.07.11,0h.07l0-.06,0-.12,0-.05-.09-.06-.25.05Zm15.3-112.58.12-.07,0-.08-.07.07-.11.06-.06.18,0,.06,0,0h0l.05-.06Zm-5,52.59.08.16.17.18.18.07.13-.22-.26-.2,0-.28-.09,0-.09,0Zm3.71-38.66,0,0h0v0l0,0h0Zm-2.5,40.4.08-.11-.08-.09h-.21l0,.11.14.09Zm5.16,48.35-.21,0,.14,0,.21-.13,0-.08.13-.13.07-.12H730l0-.09h-.12l-.07,0h-.09l-.16,0V360l0,.11-.14.06-.1.13,0,.08-.08.12-.21.06.15-.18v-.17l.13-.12-.07-.1,0-.06.13-.05.12-.15h-.12l-.11.06-.24,0-.09,0-.39.25-.25.1-.24.13-.23.16-.24,0-.08-.24v-.57l-.09-.27-.24-.08-.2-.13-.07-.13-.05-.14,0-.15.06-.15.44,0-.23-.09h-.25l-.15.05-.38.22-.43.3-.31.44-.14.61-.22.59-.15.22-.26.26-.22.15-.13.05h-.28l-.11.08-.17.43-.15.25-.1.27-.08.27-.11.24.09.08,0,.08h-.12l-.07,0-.08,0-.37.46,0,.27,0,.15-.06,0,0-.16v-.14l-.08-.12-.3.3-.22.18,0,.12v.14l-.13-.19-.11,0-.19.08,0,.08.14.14-.15-.1-.15-.06-.17.06-.17.09.14.08,0,.12-.08-.08-.11,0-.13,0-.12.14-.09.05-.09,0-.2.2-.34.16.1.06,0,0h-.12l0,.09v.11h-.13l-.23.11-.31.06-.41.16L719,366l-.08.1.08.24-.09,0-.14-.1-.16,0-.4.23h-.07l-.25-.07-.41.11-.2.12-.38.32-.4.31-.36.34v.23l.07.09v.1l-.1-.11-.14-.09-.2.11-.27.23-.2.06,0,.08,0,.09,0,.09v.1l0,.11-.09-.34-.47.31-.06.08.06.14.11.09-.15,0-.12-.12-.23.17v.25l.19.13.16.05,0,0h-.17l-.06,0,0,.09.08.15-.21-.09-.28-.21h-.09v.15l.09.11-.29,0-.09.14,0,.19.28,0,.25,0-.36.16-.06.1v.14l.4.07-.11.09-.25,0-.68,0,0,.05,0,.18,0,.16h.25l.24-.16,0,.11,0,.08-.18.19.17,0,.27-.16.13-.05-.46.42,0,.17.2.08.56.11.55,0,.1,0,.17-.18h.11l.28.14.08.09.22.38h.49l.23,0,.08.07.07.09.1.08,0,.11,0,.15.05.11,0,.05.18,0,.21.08.13-.06.29,0,.14,0,.26.12.27.06.51,0,.72-.13.1-.07.07-.1.36-.35.59-.4.18-.19.16-.22.19-.12.53-.07.1,0h.12l0-.07v-.13l-.09-.1-.08-.11v-.08l.27-.4.18-.36.14-.39.12-.16.27-.27.06-.15-.23-.12,0-.07.31,0,.13-.36.06-.39.06-.23.21-.54,0-.06-.09,0h.26l.12-.11.06-.17.16,0,.3,0,.11,0,.21-.12.18-.08.18,0,.22-.08.22-.11-.08-.16-.16-.25,0-.1.21.17.15.17.14.12h.12l.08-.07,0-.13.07-.07.11,0,.1,0,.11.1-.24.13.06,0,.1,0h.41l.13.15.21.07h.22l.09,0,.06-.07.06-.11,0-.24,0-.07-.26-.07-.28-.12-.07-.15,0-.11v-.13l-.09-.07-.35,0,.08-.07h.15l.14-.06.08-.1-.09-.11-.12-.05v-.07h.2l.2-.14.18-.17.39-.13.17-.08.16-.11.28-.31.47-.77.1-.1.56-.47.12-.13v-.2l.19-.11.16-.18.38-.35.06-.09.1-.17-.12-.17-.1-.05-.18,0,.18-.26-.13-.15,0-.08V361l.08-.15.15-.08.14,0,.13-.11.16-.17,0-.21-.19.15Zm-6.22-51.13.08,0,.1-.1-.06-.16-.19-.17.12-.06-.15-.09-.06-.2-.11,0-.16,0-.07.13v.25l0,.1Zm-6.43,79.45-.11,0-.12,0,0,.1.06.07.11.06.22-.05-.1-.15ZM716.24,374l-.06-.09-.17-.08v-.11l.21.05v-.1l-.36-.47h-.36l-.06.25.06.29-.14.12V374l-.19.07,0,.11,0,.14-.2.13,0,.15.06,0,.26,0,.24-.16h.05l.2,0,.24-.14.35,0,.12-.07.05-.11,0-.13Zm10.67-119.13-.16,0-.15,0v0l.09,0,.19,0Zm-31.3,23.31V278l-.1-.09-.06,0-.14.14,0,.09v.34l.07.27.05,0,.11-.09.09-.34ZM638,241.48h-.05l-.09.11-.06,0-.12.1,0,.25-.06.15.07.06.11.2.11.12,0,.13,0-.06v0l0-.05.06-.22-.09-.37.1-.3ZM633.25,236l-.3-.46h-.18l0,.1,0,.06.16.1.22.26.21.16.17.24-.15-.34Zm1.93,5,.14,0v-.1l0,0-.08,0-.1.21Zm-3.58,0h0l.06,0,.07,0,.14-.32v-.11l0-.07h-.06l-.06,0,0,.06-.19.16-.07.24,0,.15Zm-.67-4.63-.22.09-.05.34-.11.09,0,.11,0,.09.09.1-.05.11.09.19.21-.51.11-.37v-.16l0-.08Zm3.3,3.39-.1-.28h0l-.08.06.05.2Zm.41,2.31-.09.12-.32.14-.1.08-.11.12,0,.12.07.18.13.12.38.08.5,0,.09,0,.17-.18h.06l.16,0,0-.07,0-.09-.05-.11.07-.3-.18-.1-.16-.13-.07,0,0,0,0,0-.34,0Zm.08-2.52-.17.16v.11l0,.11-.06.08v.16l-.24.47-.25.33,0,.18-.28.34-.18.32-.3.34,0,.16-.21.64,0,.18,0,.14.08-.05.28-.27.35-.66,0-.21.14-.21.2-.18.18-.06.17-.11.13-.17.12-.38,0-.38.08-.32V240l0-.06v-.11l.06-.23Zm-3.57,2.59-.07.15v.27l.28.46.09.09.11.08.21.1.19.12.14.45.08.11.15,0h.14l.13,0,.08-.06.15-.19.06-.11v-.09l0-.09-.29-.54v-.11l0-.11,0-.31.06-.14.19-.25.07-.13.13-.41.16-.26.19-.25.09-.16.1-.24v-.07l-.09-.23-.51-.19H633l-.42.13-.09.05,0,.1v.15l0,.14-.12.19-.11.09-.09.1.05.23,0,.23,0,.33,0,.08-.31.17h-.4l-.1,0Zm2.45,1.48-.06,0-.2.1-.09,0v.05l.09.14.15.07.19,0v-.22Zm-4.13,5.32V249l.14.23h.07l.21,0,.24-.09.12-.19.15,0-.07-.08-.46-.25-.31.11h-.17l-.06.11Zm-4.21,2.75.13-.14.18,0,0-.1.06.07.08,0,.07,0,.07-.12,0-.06,0-.12h-.09l-.18.13-.21,0-.34.17,0,.13.11,0Zm2-17.77v-.14l-.11-.16-.19-.09,0,0,0,.05v.07Zm2.41,2.49,0-.11-.09-.42v-.2l.05-.18.11-.14,0-.09-.16-.13-.16-.18-.13-.23-.16-.14-.18.09-.08-.07-.11,0-.08-.13-.14,0-.33,0-.11,0-.1,0-.38-.08h-.14l-.11.09,0,.12.1,0h.11l0,0,0,.18.05.11.13.11.15.1.06.09.14.35v.37l0,.09.12.11.08.12,0,.14v.15l.08.14.16.19.07,0,0,.08V237l.08,0,.16,0,.12-.12.07,0h.07l.08,0,0-.12.05-.06v-.07l.11-.17Zm-1.41-28.06,0-.07-.12,0-.06.1,0,.1-.06.11v.14l.1.06.16-.09,0,0-.05-.07.07-.11v-.07l0,0Zm-1.12,28.93-.15-.15-.06-.17-.08.11-.08,0-.11,0,0-.07-.23-.17-.09-.11h0l0,0,0,0,0,0,0,0v.1l.06,0,.1.24.11.14.18,0,.15,0,.15,0h.15Zm-.66.28-.07,0-.08-.06-.09-.05-.11.05.12.38v.07l0,.11,0,0,.17-.06.08-.17,0-.08,0-.08Zm-.47,2.95.14-.09.06-.06-.12-.09-.19-.08-.2.16,0,.21Zm2.11,9.45-.15,0-.1-.16-.25-.06-.3.16-.06.11.11.12.19,0,.12.07.29-.08.15.16.25-.12V250l0-.08ZM626,238.3l-.15.08h-.07v.09l.14.06.06.07,0,0,.07-.16,0-.11Zm17.2-49.09-.05.07-.23.19,0,.1.05,0,.07.08.14,0,.22-.11.1-.16-.06-.12ZM638.43,243l-.08.24.06.11,0-.05.06-.18,0-.16Zm.1-.2.1.17h.19l.08-.06-.1-.15,0-.05v-.11l-.09-.25-.18.26Zm-6.86,4.54-.09-.07-.06.07v.16h.07l.23-.08v0l0-.05,0-.06Zm6.11-4.22-.24-.23h-.1l-.13.17.13.83,0,.29-.09.25-.26,0-.26-.09h-.08l-.09.21-.08.11-.19-.06-.2-.16-.15,0-.14.09,0,.1-.08.38-.09.25-.23.07-.34-.2H635l-.1.08-.08.1-.1.25-.14.22-.07.09-.08.05-.34.06-.14,0-.29.15-.09,0,.22-.17,0-.08v-.51l-.12-.25-.21-.17-.23-.07-.13-.08-.13-.05-.13.17-.09.08-.1.06-.31,0-.11.06-.1.09-.07.07,0,.08v.15l0,.13-.18.12-.23,0-.27,0-.18.07-.43.06-.1,0-.21.16-.26.26,0,.09,0,.22-.19.6-.13.16-.15.16-.07.25.11.23.13.09.14,0,.1-.07.08-.1.18-.33.17-.34.3-.44.07-.15.05-.07.26-.17h.21l.15.12,0,.34,0,.06h.16l.15,0,.13-.13.12-.17,0,.07,0,.09,0,.11.05.1.2.15.22.13.22-.52,0-.09v-.09l0-.11.12,0h.12l.12,0,.1.08.09.09.41.19.19.2.21.31.05.09v.13l-.06.13-.07.1-.09.08-.16.11-.14.24,0,.13v.14l.09.42v.27l0,.27.26.38.36.26.47.29.59.3.1,0h.12l.09-.07.23-.27,0,0h.08l.07.08,0,.22-.09.24v.1l.08.27.11.08.24-.12.35-.4.14-.21,0-.51-.14-.51,0-.07-.15-.17-.11-.08-.09-.18.06-.21.15-.23.18-.2.21-.17,0-.11,0-.13,0-.08.18-.11h.11l.13.46.11.18,0,.19.11.21.05.24,0,.51,0,.19.08.19.1-.36.08-.51-.09-.25.06-.08.16,0,.32-.24.25-.32.09-.14,0-.16,0-.46,0-.27,0-.1-.1-.08-.11-.16v-.2l.1-.45,0-.11-.15-.27v-.33l-.17-.13-.22-.06-.06-.08v-.06l.17-.13.1-.09.13-.2v-.23l-.18-.28,0-.09,0-.32-.22,0-.16-.14-.09-.23-.15-.19Zm5.16-54.73-.15.1.09.08,0,.13.08.16.09,0,0-.06,0-.23Zm62.57-31.83-.15,0-.49.67,0,.23.21.09.2-.1,0-.09,0-.33.19-.25ZM623.37,263.85l-.36.67-.13.32v.37l0,.15,0,.35-.06.21-.19.19-.16.22-.09.23,0,.26-.11.2-.3.21-.11.06-.11,0-.1.06-.06.08v.09l.09.18,0,.16-.09.23,0,.24,0,.25,0,.25.1.18.14.13.52-.09.25,0,.12.05.09.08,0,.09v.11l0,.12v.13l0,.08.2.5,0,.07-.08.8-.06.2-.12.22-.07.22,0,.28-.21.4-.11.24-.08.23,0,.23.16.21.19.2.31.2h.1l.12-.05.19-.12.1,0h.52l.11,0h.12l.24.12,0-.21,0-.2-.2-.53,0-.11.08-.26.23-.47,0-.22,0-.43v-.68l.08-.47.12-.21v-.08l0-.75-.05-.21-.11-.2-.08-.21,0-.22.18-.15.44-.25.24-.11.23,0,.24,0,.22.07.12.18v.53l-.06.32,0,.08-.31.38,0,.11v.13l0,.07.77.82.21.15.24.08.16.17,0,.13-.06.11-.06.06,0,.08-.16.6,0,.21.14.18.11.06.21.08.35.09H628l.08-.08,0-.24,0-.11.13-.16.2-.07.56-.11h.3l.12,0,.1,0v-.14l.2.12h.11l.06-.08,0-.25v-.13l0-.12-.05-.1-.1,0,0,.06-.07,0-.12,0-.07-.14-.09-.08,0-.13-.06-.09-.1-.07-.17-.24-.1-.07-.12,0-.07-.08-.07-.09v-.09l0-.1.13-.29,0-.22L629,269l0-.13-.14-.2,0-.1,0-.1,0-.1-.4-.35-.13-.2-.07-.25-.22-.45-.15-.2-.09-.07-.21-.09-.09-.06-.14-.22-.18-.17-.12-.06,0-.14.09-.09.23.14.12,0h.17l.14-.05.14-.19.18-.14.63-.15.21-.07.18-.1.38-.28.33-.33.16-.22.19-.19.1-.07.11-.05.31,0,.21.09.13.2.15.06.17,0,0-.08.11-.37,0-.15-.07-.13-.2-.13-.22-.06-.32,0-.31.06-.09,0,0,.06.08.08v.07h-.49l-.26-.05-.52,0-.22.06-.08.08-.1.07-.27.1h-.24l-.24-.06-.11-.09-.09-.11-.12,0-.12.05-.19.15-.36.35-.14.18-.16.25-.24.12-.24-.08L626,265h-.27l-.11-.24-.15-.47-.17-.17L625,264l-.05-.07-.26-.47-.06-.2,0-.26,0-.26v-.23l.07-.21.11-.26.12-.25.15-.2.26-.27.09-.08.24-.11h.25l.25,0,.42.18.22,0,.86,0h.19l.18,0,.24.09.25.05.45,0h.46l1.31.09h.18l.17,0,.19.16.17.19.09,0,.44.07.24,0h.24l.73-.09h.24l.13,0,.22-.08.1-.05.19-.16.17-.19.12-.17.14-.16.42-.32.18-.16.14-.19.21-.4.06-.05.18-.14,0,0-.12-.3-.1-.1-.25-.05-.09.05-.2.19-.17.21-.08,0-.22,0-.1,0-.06.18-.1.14-.26.08-.31.31-.74.3h-.18l-1.16-.28-.44-.06h-.11l-.11,0-.15.14h-.11l-.1-.05-.26-.18-.22-.1-.23-.09-.68-.08-.49-.16H628l-.08,0-.08-.06-.08-.11,0-.12-.07-.07-.1,0h-.16l-.15,0-.25-.15h-.12l-.12,0-.12,0-.09.07-.15.2-.12.22-.1.1-.12.08-.07.08-.06.09-.18.06-.2-.08-.1-.09-.08-.2h-.06l0,0-.1.22-.16.16-.12.06-.1.09-.07.26-.08.09-.19.14-.25.41v.1l.09.31-.07.13-.11.06-.11,0,0,.07,0,.82.09.43v.36l-.11-.21-.14-.18-.13.08Zm15.83-8.58v.06l0,.06.06.06,0,0,0,0v-.06l-.1-.1Zm-3.42-11.47-.12,0,0,.1,0,.09.22.13L636,244l0-.1-.1-.12Zm3.16,11,0,.23.11.21v-.09l0-.08-.1-.18Zm-8.09-20.42h-.17l-.1-.06-.12.29v.2l.09.1.25.19.09-.07,0-.06.15-.19,0-.12,0-.09Zm5.5,4.6.06,0,.05-.1-.06-.07-.07-.13-.11-.07,0,.12.06.17Zm-.68.1h.26l0-.11-.1-.2-.11-.11-.15,0-.16.05.12.29Zm-5-1.25-.13,0-.11.08-.06.13.1.08.25.09.07.1v.07l-.14.66,0,.47-.08.24-.14.22,0,.23,0,.12v.13l-.11.3v0l0,.06.07,0,.14-.11.13-.12.19-.08.69-.09.33-.2.2,0,.06-.11V240l0-.1.09-.06.2-.05.17-.11.14-.16.1-.18.07-.16,0-.16,0-.19-.11,0-.45.17,0-.09.07-.09-.18-.15-.23,0-.24.07-.24-.12-.18-.2-.22-.16-.4-.21Zm6.24,4.13-.09,0,0,.2.25.29v-.1l-.08-.29Zm-1.58-2.91,0,.12.07.13.06.46,0,.48.12.05.24-.1h.1l.14.19.09.21v.2l-.17.5.09.24v.11l0,.22.07.07.23.1.19.15v-.17l0-.18,0-.35.11.1.11.23.08.06v-.09l0-.08.22,0,0-.09v-.09l-.12-.23v-.27l0-.11-.06-.11-.09-.08-.1-.07,0-.07.08-.35,0-.38,0-.16-.06-.09-.11-.26-.22-.07-.22.14-.17,0-.13-.08-.05-.12-.07-.06-.15-.08-.12-.13-.09,0Zm-3.41-1.94.11,0,.08-.15,0-.09-.13-.15-.27,0-.11.07,0,0,.12.11Zm-.56-.56,0-.13h0l-.07.08,0,.11h0Zm3,.58V237l-.11-.34-.17-.15-.08.08.06.14.22.38Zm-.44-.2-.19-.13-.25-.11-.2-.1v.18l0,.22-.06.13-.11.46-.13.28V238l.29-.21.29-.31.12,0,.11,0,.15.24.12.05v0l.12.11,0,.1.05,0,.19.06.27.22.12.15,0-.12V238l-.24-.44-.38-.28-.27-.27Zm5.17,17.82v.1l.13,0,.09,0,.09-.29.17-.22-.06-.17,0-.23-.1-.12-.11,0-.1.26v.15l.09.13.09.06-.11.19ZM670.92,349l-.12-.11h-.27l0,.05,0,.12.1.08Zm-.77.35h.29l.17.1v-.05l-.06-.12,0,0-.15-.05Zm6.29,4-.05-.05-.19-.08-.33-.47-.14-.09-.21.24-.16.08.09.11h.13l0,.16,0,.1.25.41,0,.1,0,.07.06.06.22,0,.2-.14h0l0-.07-.14-.12.09-.08Zm0,.78-.28.11-.28,0-.11.05,0,.06.16.13.23,0,.22,0,.06.16.11,0,.15-.12-.1-.17Zm-.23.49,0,0h0l-.16,0v.06l.12.13Zm-7.15-.57,0-.16,0,0-.07.08-.09,0,.06.26Zm-1.24-1.86,0-.36-.18-.15h-.11l0,.17-.13.1-.05.09v.2l-.08.19.09.2,0,.2,0,.14h.06l.23-.07.17-.13.07-.16-.06-.2Zm8.3,6.36v-.1l-.05-.08v-.09l0-.19,0-.28.06-.41v-.23l0-.22.06-.28v-.28l0-.15v-.15l0-.4-.14-.24-.37-.21h-.13l-.22.21h-.11l-.4-.1-.1.07-.17.2-.11.08-.13,0-.14-.09h-.11l-.1.05h-.24l-.24,0-.15.05-.14.09,0,.12V356l-.12-.14-.12-.1-.16.08-.16.06h-.54l-.41-.15-.59-.27-.09-.08-.08-.09-.09-.06-.22-.11-.08-.1-.1,0h-.12l-.16-.09-.13-.15-.12,0-.14,0-.24,0-.45-.19-.2-.14,0,.27-.17.47,0,.24,0,.28.11.38v.19l.25.58.25.47.34.5,0,.22-.07.22h.13l.08-.1v.11l0,.1.3.33v.09l-.14.25-.05-.22-.12-.18-.34-.29,0,.56,0,.22.39,1,.05.07.1,0,.09.08.13.21.22.44.14.13.21,0,.3.11.11,0,.06,0,0,.11-.24,0-.24,0,0,.08,0,.09.05.26.3-.06.47.06h.28l.3.26.27.06h.09l.19-.26.12-.32.08-.12.09-.11-.17-.15V361l0-.08.34.28.16-.09.05-.22v-.14l0-.09.1,0,0-.12,0-.09-.08-.22V360l.2.28.07.35.18-.08,0-.05v-.24l.09-.08.24.09.21.15v.07l0,.06-.06.06-.18-.08-.08.1.08.26.16.26.12-.06h.22l.08-.06v-.49l-.06-.36,0-.4,0-.21.12-.16.09-.16V359l.05-.21.11-.21.14-.15.06,0,0,0,.07-.14.1-.1.05.13-.08.05-.05.05.14.1,0,.09v.09l0,.12,0,.09.09,0,0-.11v-.14Zm-2.23,2.24-.06.08,0,.08,0,0,.08.07v.12l0,0H674l0-.31Zm1.73-1-.14-.06-.11.11v.05l0,.13h.16v-.07l.15-.06Zm-1.85,1.52h-.06l-.11.13,0,.1h0l0,.07-.05.05-.12-.05v.05l.09.18.16,0,.16.05.12-.25,0-.13ZM689.49,327l-.21-.45,0-.33-.07-.3-.33-.84-.13-.47.13-.46,0-1.51.22-.73-.07-.1-.19-.13-.08-.13-.12-.29,0-.56-.23-.37-.27-.18-.16-.29-.11-.25v-.13l-.06-.23-.2-.17-.14-.08-.3-.25-.14-.24-.26-.66-.14-.18-.27-.21-.24,0-.15-.06-.52-.44-.17-.11-.12-.2-.19-.22-.1-.16-.17-.17-.08-.62,0-.6v-.71l-.16-.35-.1-.12-.11,0,0,.22,0,.15h-.08l-.27-.21-.33-.24-.18-.24-.12-.23h-.11l-.09,0-.1.27.1.47-.07,0-.11-.11-.18-.26-.11.07-.14,0-.11-.25-.09-.16-.11-.52-.09-.56,0-.4-.24-.24-.07-.39-.07-.11-.06-.28-.27-.37-.29-.27-.23-.26-.2-.35.12-.23.15.06h.16l-.11-.26-.11-.17-.31-.33-.14-.09-.33-.07-.35-.31-.21-.14-.16,0-.18-.06-.12-.17-.22-.07-.3-.34-.14-.33-.07-.12-.1-.1-.16,0h-.14l-.28-.06-.09-.14-.17-.18-.36-.07-.27-.12-.21-.12-.21-.15-.19-.23-.15-.3,0-.37.07-.24-.22-.11-.36-.53V304l.13-.41.17-.72-.12-.55-.25-.68,0-.33-.16,0-.16-.07-.22-.35-.17-.23-.11-.2-.11-.27,0-.22,0-.14,0-.38-.14-.38,0-.38-.13-.49.07-.31v-.26l0-.23.07-.14,0-.17-.21-.2-.22-.16-.29-.27-.53-.42-.11-.3-.21-.28-.32.08-.24,0-.23.17-.31.13-.27-.16-.13-.12-.07-.39-.1-.43-.1-.22-.07-.26.13-.62-.09-.3v-.44l-.07-.5-.1-.26,0-.2-.21-.32-.06-.21-.12-.09-.16-.13V291l0-.11.12-.19.07-.25-.23-.08-.16,0-.11-.09-.12-.13v-.4l0-.42,0-.26,0-.2,0-.21-.1-.22-.33-.32,0-.11.09-.14-.12-.09-.18,0-.12.19-.17.16-.34.1-.12.68-.26.73-.23.53,0,.17,0,.16-.1-.08-.08-.09-.15.2-.28.55,0,.29.14.09.09.08.12,0,0,.08,0,.14.06.13,0,.13-.09-.06-.19,0-.11.11-.27.21,0,.66-.15.34-.13.26-.17.5v.27l.1.2.1.29-.11.39-.09.27.1.81v.43l-.11.29-.34.84-.16.62v.35l-.14.31-.18.5-.18.37-.58.74-.14.37-.21.45-.4.25-.29.14-.64.13-.36,0-.18-.11-.1-.1-.41-.18-.49-.38-.39-.14-.17-.36v-.14l-.06-.19-.19-.26-.38-.11-.39-.21h-.25l-.53-.2-.35-.24-.3-.32-.4-.55-.35-.16-.46-.25-.25-.2-.16-.1-.17-.15-.17,0-.29,0-.16-.14,0-.1,0-.07,0-.14,0,0h-.07l0,0-.08,0-.25-.13-.33-.21-.06-.16-.1-.2-.46-.32-.27-.25-.6-.39-.15-.17,0-.15,0-.2.16-.21.15-.14.47-.59.14-.1.17-.16.19-.44.09-.26-.1-.4,0-.66.52-.22.14,0,.13-.05.14.09.09.13h.1l.31-.44,0-.2-.1-.17,0-.1.92-.84-.09-.23-.12-.06h-.24l-.22-.21-.11-.38-.2,0-.39.35,0,.08.09,0,0,.24-.16.25h-.14l-.23-.05-.09-.2,0-.29-.14-.09-.17,0-.15.09-.1,0-.07-.07v-.12l.23-.19.19-.11v-.05l-.12-.05,0-.09.18-.16h-.08l-.21.16-.22.09-.3.19-.42.11-.29.17-.39-.08-.35-.22-.07-.11-.17-.16-.41.13-.24,0-.14-.06-.23-.06-.19-.15-.47-.27-.52-.08h-.25l-.18-.13-.17-.08-.35-.08-.14-.18-.15-.37-.13-.1-.21-.05-.24.14-.14.07-.24-.31-.44-.34-.14-.05-.09.07-.06.13h-.09l-.1-.07-.17-.19-.11,0-.33.16,0,.06.24.12.25.28.12.07.31-.05.4.08.39.36-.08.16,0,.23v.24l0,.17.15.2h-.08l-.19-.06-.15,0-.15.07-.08.24-.07-.12-.24-.13-.16.08-.25.09-.22-.06-.14-.07-.34.07-.6,0-.18-.15,0-.25,0-.06-.06.1-.1.12h-.37l-.05,0v.12l0,.15h-.14l-.17,0v.18l0,.15-.07.06-.17-.14-.07-.15-.13-.05-.11,0,0,.12v.33l-.09,0-.25,0-.11.05-.21.39-.32.13-.06.21,0,.18.24.35-.14.16-.15.12-.13.05-.28,0-.22.13-.1.15,0,.14-.07.19-.11.22,0,.13-.2.1-.36.34-.2.37.2.22.25.16h.19v0l-.21.14.11.16.17.16.12,0,.07.07-.17,0h-.27l-.06.15,0,.18,0,.17,0,.1-.09-.08,0-.12-.21-.26-.16-.08-.23-.08-.07.07,0,.37-.06.16-.08-.1v-.27l-.2-.23-.86-.29-.12,0h-.21l-.15.08,0,.08-.09.06-.16.06-.15.11-.1.1v.12l.09.24.06.07,0,.12-.1-.13-.09,0-.1.17-.1,0,.07-.5.12-.34.08-.2.1-.15,0-.09-.57-.52-.23-.41-.17-.23-.28-.23-.14-.15-.33-.23-.39-.17-.17-.2-.21-.09-.28.07,0,.18,0,.17-.23.27-.24.13-.17-.19-.15-.14-.18.08-.06.16-.09,0-.05-.11-.07-.24-.13-.1-.14,0,0,.19.08.11,0,.14-.1.06,0,.14-.07.18V293l-.16,0-.13.2-.08-.05,0-.14,0-.14-.16-.06L634,293l0,0h-.06l0-.11,0-.19.06-.2-.15-.08-.07,0v.17l-.06.25-.16,0-.15.11-.2,0-.11.05,0,.13-.2.13v.16l.11.18v.15l.28.17,0,.15,0,.06-.11,0-.23-.15-.23-.05-.07-.06,0,0v.1l-.09.06h-.14l-.16.1.1.17,0,.07,0,.08.24,0h.1v.14l0,.14-.1.05-.09-.14-.44-.29-.11,0,0,.08v.1l-.11.12-.18.15-.11-.06-.14,0-.11.27-.06.28.14.2.08.27.24-.3.09,0v.14l-.1.13-.06.17,0,.2h-.14l-.15,0,0,.06-.07.15,0,.2.1.08.24,0,.2,0,.18.08,0,.07-.17-.05h-.34l-.15,0h-.32l-.23-.13-.11-.13-.17,0-.18,0-.1.16-.12,0-.24-.42-.17,0-.09.08.06.26-.05.15-.1.11-.12,0-.07,0,0,.1.17.29.14.13.12.17.06.15h.16l0,.12-.11.16v.26h-.07l-.09-.07-.17-.17-.1,0,0,0,0,.11,0,.29-.13.41v.12l0,.1-.08-.08-.08-.17-.18-.26-.2-.56-.23-.38-.11-.33-.17-.6-.11,0-.17.24-.18.32-.12.16-.27.14-.17.15-.19.05-.22.17-.16.15-.24.36-.05.24v.25l.06.37.06.54.13.06.11.1,0,.16-.19.09-.56.45-.37.15-.12.12-.15.25-.21.32-.1.2-.23.39-.36.43-.36.31-.39.24-.26.11-.95.31-.5.1-.9,0-.39.14-.47-.09-.52-.08-.78.51-.62.1-.54.06-.24.07-.56.29-.31.13-.59.12-.24,0-.3-.17H615l-.33-.05h-.27l-.22.11-1.28.59-.26.16-.28.25-.38.22-.31.27-.64.25-.64.18-.33.16-.24.24-.43.66-.1.16-.17.17-.21.05-.13.05.07-.34-.12-.32.15-.57,0-.18-.22.1-.14.11-.41.82-.28.64.15.39,0,.23,0,.23-.09.34v.22l-.05.29-.47.65-.16.29-.18.56,0,.26,0,.4.15.36.12.22.16.64.22.43.35.86.41.71v.26l-.08.34v.36l-.1.1-.18.11-.2-.17-.09-.15-.09-.52-.05,0-.1.22-.1.08-.09-.07-.06-.09v-.09l0-.1.06-.38-.17-.23-.15-.24-.18-.08-.12.1,0,.15.22.42.12.45.22.3.14.08.14.18-.06.36-.13.14-.09.06-.32-.11,0-.27-.2-.55-.07-.21-.06-.06,0,.1V316l-.06.08h0l-.09-.11-.09-.05h-.05l.08.14.18.4.71,1,.58,1.15.11.45v1l0,.24.35.51.34.58.09.28v.24l.06.23.42.64.16.67v.23l-.09.41v.72l0,.4.11.79.17.57.21.37.27.79.44.93.05.45-.12,1.17-.07.37-.11.06-.09.16.05.77v.44l-.19.4-.22.35-.34.23-.37,0-.16-.16-.2-.17-.09.66,0,.57,0,.22,0,.26.24.22.14-.07h.17l.58.33.31.26.49.67.47.2.6.33.71.15.58.06.89.22.2,0,.39,0,.31-.07.27,0,.84-.52.83-.54h.39l.34,0,.44-.17.43-.59.2-.12.27-.14.75,0,.43.1.24-.09.59-.06h1.24l.66.14.46,0,.23.06.16.28,1.32-.13H625l.23.06.27.22.35-.16.29.05.31-.17.49-.51.23-.33.39-.7.27-.25.27-.11h.32l.5-.1,1.1-.53.41-.1.23-.1.76-.42.46-.06,1.33.23.63,0,.49,0,.77-.2.82-.13,1-.33.86-.35.51-.06h.8l1.17,0,1.35.16.35-.06.17-.06.24-.07.29.08.22.08.66.39,1,.79.23,0,.68-.11.23,0,.9.59.39,0h.31l.23.07.25.17.27.34.6.37v.25l0,.16h-.15l-.12,0,.11.54.23.45.63.1.22.17.14.18.09.28.06.42.29.38.27.32.06.12.11.44,0,.12.09.43.13.49,0,0h-.1l-.17-.14-.15-.15-.08,0-.11.08,0,.12.14,0,.08,0,.19.16.16.18.14.11.31.45.15-.08.17-.07.24.25.1.05.07-.08-.07-.42-.09-.11v-.15l.13-.09.07-.12.32-.29.71-.87.21-.09.24-.18.32-.13.33-.16.21-.06.2,0,.23-.15.28-.44.23-.53.21-.22.32-.24.26-.33v-.28l0-.28.15.23.09.23.11.75-.16.15-.15.07v.26l.08.35v.28l-.33.26-.3.33-.38.68,0,.2-.07.29v.26l0,.26-.11.38-.16.33h-.17l-.12,0h-.25l-.24,0-.33.73.17,0,.14,0,.23,0,.28-.11.39-.08.22.06h.26l.46-.93.14-.62.21-.27.08-.19.11-.18.18.34.14.31.32.53.09.26V340l-.28.68-.16.19-.18.16-.16.29.42.11H657l.45-.18.09,0h.22l.09-.1.22-.09.16-.12.22-.08.18.08,0,.06,0,.07-.08.13,0,.29-.12,0-.09-.18-.14,0-.11.13-.2-.06,0,.09.09.18.41.35.42.47.16.21.32.67.22.71,0,.2-.16.35-.13.37v.19l.07.26.16.26.65.74.32.64.47.35.79.17.4.26.4.49.14.05.21,0,.29-.26.41.06.53.32.32,0,.23,0,.31.19.45.34.49.2.28.25.23.06.41.18.31-.11.27-.14L668,349l.49-.23.26-.09.2,0,.26-.16-.14-.14H669l-.25-.09.15-.07.16-.05.76-.36.18.14.13.15.13.2-.13.26-.11.12-.24.19h-.28l-.12,0,.25.25.22.17.5-.24.14-.21.1-.12.16,0,.22.06.07.17,0,.2-.17,0-.09.14-.07.14.27.19.14.13h.18l.2,0,.14.28.12.31.18-.07.11-.07.18.09.18.25.14.28v.12l.13.06.12-.07.06-.11,0-.21v-.33l-.08-.06-.2.17-.1-.14-.13-.15,0-.13.16-.06.13,0h.16l.88,0,1.2-1,.52-.35.53-.25.54-.14.28,0h1.42l.73.09.38-.05.19-.08.32-.25.22-.14.26,0,.08-.2v-.21l.07-.22,0-.43.06-.55.08-.28.19-.4.1-.41.11-.59.09-.34.1-.32.23-.34.19-.21.47-.83.14-.08h.12l.05-.05,0-.05,0,0,0-.1,0-.08.12-.08,0,0h.06l0-.05,0-.24.11-.32.15-.58.13-.25.09-.2.29-.29.32-.28-.09,0-.13,0,.09-.06.07,0,.09.06.08-.13,0-.21.09-.31,0-.28.14-.07.16,0,.09-.28,0-.11.1-.1.18-.22.15-.22.33-.43.31-.17.45-.11.05-.07-.1-.06v-.05h.17l.07-.15.19-.11.31-.24.11-.24.08-.2.06-.45.52-.55.39-.77.11-.51.11-.27.08-.4v-.43l0-.35.4-.87.1-.37.12-.23.22-.87,0-.47.28-.51.33-.42,0-.4-.07-.32Zm3.91-36.12,0,.11-.19-.05,0,.05,0,.1.12,0,.23,0,.07,0,0-.11-.08-.06Zm.26-15.09h0l-.11.1.12.07,0,0ZM744.26,288l0,0,0,0h0l0,0ZM703.64,158.64l.27-.15.06-.09-.06,0h-.15l-.09.18-.22.15,0,0,.08.05ZM692.2,291.13l-.45-.29-.21-.08v.05l0,.15.18.12-.08.09.15,0,0,.14.29.09.06.08h.31l.13-.05-.11-.13Zm-64.1-27.95-.17.14,0,.09h.06l.09-.05h.26l.07,0,.06-.1-.08-.1h-.14ZM655.82,293l-.05,0,0,.05v.08l.19.06.05,0,.08-.07,0-.18-.08-.09Zm33.44,32.3,0,.35.06.1.05,0,.22-.6,0,0-.17-.05Zm.14-1-.11,0,0,.2v.21l.07.22,0,0,0-.26.11-.35ZM620,254.72l0,.12.17.18,0-.06.07-.26-.09-.07H620Zm-3.55,24.07,0-.1-.06-.08-.08-.05-.49-.2-.21.06-.18.1-.36.27v.36l0,.28-.1,0-.24,0-.09,0,0,.09,0,.08.3.12.44.12h.1l.18.05.44-.05,0-.07-.09-.08.3-.4Zm-2.65.48,0,.06.16.14.06-.07,0-.11-.1-.1h0Zm2.81-10.8-.07,0-.16.23.11.21.1-.35Zm-2.3,10.2,0-.1-.27-.34-.2-.12-.22-.1-.3-.13h-.08l-.34.2-.12,0-.22,0-.43-.15-.24,0h-.06l0,.09v.1l0,.1.13.19.08.07.25.05.22.09.22.16.2.18.09.12.07.15,0,.15-.11.11.11.05.1,0,.06,0,0,0,0-.08.11-.19.09-.09.48-.18.22-.11Zm1.93-10.52-.26.15-.13.23-.11.31,0,.18.1.25-.07.39.06.1.47-.35,0-.1.07-.11,0-.09,0-.38,0-.08v-.1l0-.12,0-.29Zm3.39-21.48,0,.17,0,.13.13-.1.2,0,.07-.07,0-.14,0-.13h-.24Zm.88,6.81.39-.07v-.08l0-.2-.24-.16-.11,0h-.1v.1l-.11.16Zm-.26-8.95,0,.12,0,.13.14,0v-.16l0,0Zm-.63.49-.05.07,0,.25.11.19.12-.15,0-.38Zm-17.66,9.11-.18.21.1.07.11-.1v-.19Zm53.8,87.39-.2.07-.49-.09v0l.09-.15-.09-.09-.11,0-.41-.07-.51.13-1,.13-.13.13-.1.18.1.12.32.25.32.06.24,0,.25.06.14-.12.35.11.13.14.3-.09.09-.2.1-.09.35,0,.36.12H656l.13-.1-.14-.24Zm-54.66-78,.06.2.25-.07v-.12l-.16-.06Zm10.36,41.16,0,.08.14,0,.13-.16,0-.15,0-.11-.18.15Zm-8.58-42.24h-.29l-.06.12-.08.4.07.08.09,0,.43-.18.09-.07,0-.08,0-.13-.09-.08Zm3.21,53v-.16l-.06-.15-.19-.67-.08,0-.08.08.08.48.34.71.07-.08-.06-.18Zm2.32-42.78-.15.14,0,.09.2,0,0-.07,0-.12-.08-.06Zm3.31,3.05h-.06l0,0,.08.14.11,0,0-.08-.05-.11Zm2.25-.11.25,0,0-.08-.09-.07-.13-.07-.13,0-.23,0-.05.09v.1l.15.08.17,0Zm-5,.18.18,0,0,0h.05l.07,0,.56,0,.16,0,.24-.15.35,0,0,0,.1-.11.42-.09,0-.06-.19-.2-1.88-.13h-.42l-.22.19-.1.14.07.15ZM408.82,111.84l-.14.13.28.12.09-.07.06-.07.21-.11-.18,0ZM453.2,172l.2-.14-.31.05-.29.12-.17,0-.28.15-1,.2-.31,0-.32,0-.37-.07-.37-.1-.06.26-.11.22-.23,0-.12,0-.12,0-.21,0-.18.14-.18.08-.18-.09v.31l.17.42.06.12.12.06.38.16h.36l.09.07.05.14.13,0,0-.07V174l.09-.08.11,0h.13l.25,0,.25-.06.22-.11.41-.35h.12l.13,0H452l.24,0,0-.13,0,0L452,173l0-.15.09-.2Zm-3.71-26.4.63.17.29.06-.28-.15-.76-.24-.1-.08-.15-.2,0,.18.06.13ZM438,171.27l.09-.12.12,0,0-.19-.1-.17.12-.19.05-.25-.14.07v.14l-.2.29.07.21,0,.12Zm1.71-2.56,0-.07v-.14h-.06l-.11.06v.05l.1.12Zm-20.53-16.77h-.1l.82.29-.27-.19-.36-.11Zm18.93,13.72H438l-.25-.09h-.17l-.22.05-.13.12.06,0,.23,0,.13.13.11,0,.29-.12h.16l0-.15Zm-.07,2,0,0,0-.06-.05,0-.1-.11-.15-.1.09.16-.05.18Zm.5.16h-.11l-.33.11-.23.14-.08.11h.06l.18-.09h.25l.09-.06.34-.12ZM418,150.67l.19-.06,0,0-.12-.1-.47-.11-.32,0-.05.11v.06l.13.09.28.07Zm21.33,19.53h.05l.15,0,.28-.26.26,0,0-.15.17-.18.21-.36v-.15h-.12l-.55.14-.22.15-.09.14-.13.09v.07l.06.18-.1.25ZM417.2,150.79l.29.15.26.08.92.09.15,0-.28-.06-.74-.14-.08-.1-.28-.06h-.3Zm.55.7.08.06.23.06.27-.06.23,0h.21l0,0-.15-.09-.25-.06H418l-.37-.1,0,.09Zm-2.82-3.05-.32-.27v.05l.09.12.25.19Zm-.23.37h0l.11,0v0l0,0-.46-.53-.17-.14.05.11Zm-33.51-7.47.1-.22-.21-.27-.2-.14v0l0,.17.17.2Zm33.12,5.82,0,.16.17.14.08.11.11.1.13.13.06-.06.05,0H415l-.25-.23-.2-.27-.21-.21-.09,0-.1-.08-.12-.13,0,.08Zm-.22-.55.19.12,0-.12-.13-.16v-.07l-.14,0,0,.06,0,.06,0,.08Zm-.9-.44.13.37.05.23.11.14,0-.1v-.09l0-.08v-.37l.06-.25-.14-.17,0-.13v-.22h-.06l-.1.05.09.32v.1l-.09.1Zm1.88,2.53.13.13.13,0-.12-.2-.21-.11Zm-18.21-26.62-.05,0h-.3l-.47.07.08,0h.2Zm17,23.82,0,.09.12.1.26,0-.13-.24-.08-.07-.13-.23-.11-.13-.11.19-.19.11,0,.05.12.12Zm19,21.91v-.13l-.16,0,0,0,0,0-.14-.09,0,.05-.05.16.43,0Zm2.63,0-.12,0,.06,0h.18l.28-.19.17,0-.13-.09-.13.11-.19.08,0,.05Zm1.62-6.05h-.39v.09l-.17.06-.13,0-.24,0-.15.2,0,0,.09.11.34.13.23-.22h.21l-.07.07-.3.18.1.14.47.16.16,0,.17,0-.09-.1,0-.1.09,0,.1.08,0,0,0-.14-.08-.16-.27-.26,0-.14Zm-.61,4.15h-.26l-.2.15,0,.09h.1l.37-.07.2-.1.12-.13h-.05Zm0-2.18-.2-.15-.34,0v.16l.21.24.06.15-.1.12-.16.06,0,.07.2.21.21-.12,0,0,0-.1.1-.05v-.44l0-.13Zm0,4.65v.12l.12.09.11-.11.17,0-.07-.1-.11,0,0,.07-.11.06ZM432.75,166l-.08.05-.06.07.05.09-.05.16.12-.06.11-.14-.06-.11Zm.36-3.54,0,.17.21.16v0l0,.07h.06l.22,0-.18-.18,0-.16-.16-.1Zm-.31,4.41.08,0,0-.1v-.06l-.09,0-.09,0-.05.13Zm-.24-1.37-.11.17v.18l.15-.1.11-.17,0-.08Zm-1.62-.86-.06,0-.05,0-.05.09,0,0,0,.05.07,0h.09l.09,0,0-.11Zm4.18-4.5-.14.06-.1-.13h-.36l0,.05,0,.16,0,.14.13.08h.12l0-.05,0-.1h.06v.1l0,.08.07,0h.12l0-.2.07-.14.08-.08,0-.12-.17,0Zm1.13-.52-.28.07-.16.13.14.09.48,0,0-.1-.1-.15Zm-2.29,6,0,.08.07.08.2.18.13,0,.09-.14-.06-.08-.27-.07-.1-.08Zm1.1,1.6,0-.26,0-.08-.08,0-.36.28.06.21.11.13.2-.07Zm-.19-1,0-.06-.23-.1-.08,0,0,.18h.2Zm-.52.67-.19.08-.1.17.06.09.13,0,.18-.17v0l0-.13Zm.38,1.82,0-.1-.12-.1,0,0,0,0v.09l0,.06-.06,0,.13.06Zm1-9.77-.11-.07-.25.07.24.22.24-.05,0-.09Zm-1.25,9.13,0,0,.06-.09-.21-.19-.08.06.05.1Zm-36.94-46v0l-.11,0-.35,0H397l0,0,.13,0Zm36.48,36.14-.11-.15-.19,0-.09.05-.15.19v.1l.25.18.27-.06v-.11l0-.11ZM431.68,105l0-.08-.13,0-.14.07,0,.06.1.1.19,0Zm-.08-10-.31,0,.11.27.21.17.11,0,0,0,.1-.08,0,0H432l0-.16-.11-.06-.18.1h-.12l0-.07,0,0Zm1.71,9.58-.11-.17h-.11l-.26-.09-.1,0-.05.12-.07.09.13.07.09.1,0,.12.1.11h.21l0-.11-.08-.09,0-.13Zm-.85,4.24.3,0,.21.12.11.34,0,.12.14.08.25,0,.24-.32.05.08.1.06.18-.13h.18l0-.26-.13-.23-.38-.1,0-.05v-.13l-.11,0h-.13l-.18.15-.1.15-.85,0Zm-.36-4.58.2.17h.15l0-.06-.14-.13.09,0-.08-.12-.15-.11,0,0,0,.13-.09,0Zm-2.78.93h.17l0-.07-.08-.1-.16,0-.13,0-.07.06,0,0h.15Zm-1.87-.61.06,0,.08,0v-.07l-.05-.18h-.16l-.09.18,0,.12.09,0Zm-1.5,6.88.05-.18.37-.09-.1-.06-.3,0-.21.19.08.15Zm-.68-5.16-.11.06,0,.12,0,0,0,.13.06-.1.06-.06.16-.09v0Zm2.7-1.86h-.13v-.22h-.09l-.11,0,0,.1.12.43.11.06h.49v-.18l0-.09.07,0,.11,0,.05,0h.09l.15-.2,0-.07-.11,0,0-.07-.16-.13-.11,0,0,0h-.06l-.09,0-.11-.15-.14,0-.08.11.05.07.08,0,0,.05,0,.11ZM533.71,91.57l-.32-.08-.24-.11-.38,0-.23-.06-.09.12.34.55.38.29.37,0,.09,0,.12-.17-.11-.11v-.1Zm-5.08-10.16.2-.3,0-.16-.23,0-.42.31,0,.06.1.08Zm-66.27,9.9-.05-.13-.18-.07-.26.12-.05,0-.12,0,.05.2.12.13H462l.18.29.14-.08,0-.12.08-.13ZM623.05,69.06l-.17.08,0,.12,0,.16-.09.27-.15.09-.5-.09-.15,0-.14.05.26.34.55.26.38.26.18.08,1.2.3.06,0,.38-.35.45-.14.16-.12.09-.18.12-.13.09-.19-.19-.18-.69-.21ZM431.87,110l-.13,0,.23.35-.05.11-.09.09-.07,0h-.08l.05.12.3.18.14.13.17.07-.08.11-.38.33,0,.09,0,.1h.17l.16-.08.17-.24.12-.32.22-.15.27,0,.48.06.06-.09.28-.13.21-.14.11,0,.11-.07.1-.1.41,0-.06-.1-.65-.42-.29-.07-.15,0h-.13l-.15-.08-.14,0-.16,0-.3,0-.15.21-.12,0h-.08l-.19.1-.16-.11Zm3,0,0-.22-.34-.11-.13,0-.1.14.39.25.17,0Zm16.33-36.38-.12.27-.1.13,0,.1.4-.08.22-.14-.12-.13-.15-.12ZM431.81,105l0,.17.07,0,.22-.09.08-.19h-.21Zm7.72-14.91.09-.11.23,0-.06-.06-.37-.13-.28,0-.17.09V90l.25.09Zm-8.34,13.88.14,0,0-.15-.29-.22-.06-.14-.1,0,0,0,0,.24.1.15ZM638.66,269.81l-.07-.11-.33-.19-.1-.05-.53,0-.52,0-.18.08-.27-.11-.08,0-.06.09v.38l0,.14.17.22.06.12.07.06.39.25.27.15.28.13.12,0,.11,0h.16l.15,0,.32-.16.14,0,.16,0,.06-.33,0-.17-.12-.12-.08-.06-.06-.07ZM411.81,117.21l.21-.11,0-.14-.06-.1h0l-.07.08-.11.1,0,.17Zm-2.64-.74h-.11l-.36,0-.15,0,.05.23.12,0,.1.09V117l.11.21-.07.39.21.37.05,0,.21,0,.14,0,.36.1.07.27v.16l.06.2v.16l.22.43.4-.09.06-.27,0-.19v-.27l.07-.33.5-.1.2-.13,0-.29-.22-.1-.11-.16.07-.2.17-.13.19-.07.21,0,.08,0,.06-.08,0-.29-.06-.39.05-.11.15-.21-.06-.09-.1-.07-.2-.08-.21-.06h-.22l-.39.17-.37.21.08.1,0,.12,0,.19-.08.06-.06.1-.1.21-.07,0-.19-.1v-.29l.05-.22-.13-.15h-.32l0,.1v.08l-.32.35Zm.4,3.13.2,0,.18-.06v-.25l0-.12-.16-.09h-.25l-.35-.2-.2-.19h-.42l0,.13,0,.34.84.48Zm15.32-11.91h-.05l-.14,0-.05,0-.06.14h0l.09,0Zm-13.41,11-.1,0-.22,0-.07-.08,0,.12-.09.08-.12,0,0,0-.06.13.13.07.37-.17.31.06.09,0-.07-.1ZM398.35,122l-.26,0,0,0,.07,0,.29-.07Zm1-.24-.18,0-.06.08h.19l.15-.11Zm3.8-2.92-.11.05,0,.07.11.07.2,0,.08-.06,0-.1-.13-.05Zm-.07-.74.11-.11h-.1l-.26.41-.06.4.06,0,.09-.17h.53l.07-.07-.52-.07v-.08l0-.16Zm5.45,1.8-.09.05-.08.13.12,0,.11.12.32,0v-.06l-.08-.18Zm346.55,34.3.08-.1-.08-.07-.12-.06-.07.07v.07l.07.13ZM421.58,112.76l-.13-.05-.07.08-.09.19-.13.21-.1.25-.33.53-.21,0-.52.87-.05.25,0,.5.05.2.09,0,.12-.14.64-1.46.13-.09.12-.42.41-.63v-.21l.15-.11ZM408,118.13l.06-.2,0-.19.08-.15-.14-.37-.08-.33-.08-.15h0l-.26.13-.16,0-.14-.12-.14,0-.62.17-.28,0,0,.46.12.38.07.07,0,.12.53.26.38.14.38,0Zm4.76,2.57,0,.11.35.25h.1l.16-.24.24,0,.22.18.06-.09,0-.2-.21-.14,0-.11,0-.06.16-.13,0-.07-.05,0-.29-.13-.08-.11,0-.14h-.18l-.21.15,0,.16-.13.1v.1l-.08.31Zm11-7.41.08.24.14.16-.18.2-.14.25h.21l.2-.13.12-.31.21-.21.13-.09.35-.11.1-.23.1-.1.13-.06.13,0-.22-.27.1-.66.14-.05.14,0,.12-.2.17-.06-.23-.21-.11,0-.13,0-.09.2-.16-.11-.39.07-.29.2-.28.28-.17.12-.16.15,0,.31,0,.33-.11.19Zm-16.72,5.41-.16-.13-.13,0,0,.06.24.26.15.07.14,0,.05,0-.18-.12Zm-1-.51-.1,0,0,0,0,.45.2,0,.1.08.22,0v-.06l-.1-.23Zm1.61-2,.13.06,0,0,.05-.14.08-.12-.05-.11-.16-.24-.07.09,0,.16-.06.16Zm.1,3h.1l.07-.13.38-.73.09-.26h-.05l-.17.29-.27.24-.11.16-.15.13V119Zm9.1,0,.08,0L417,119v-.16l-.73-.5-.11.16-.1.38.4.23Zm176.38,119,0-.1-.07-.09H593l-.19.11-.1,0,0,.08.16.21.1.45.07-.06,0-.11.1-.23Zm-3-3,0,.11.11.1.05-.22-.07,0Zm1.85,18.63,0,.08,0,0h.1v-.09l-.06-.21,0,0Zm-1-17.89,0,.12,0,0h.07v-.22h-.06Zm.37,1.26.11.17.08-.07-.18-.15Zm9-20.71.06,0,.1.11,0,0,0-.09-.11-.16Zm.28.11.15.19H601l0,0,.06-.08v0l0,0-.18-.08Zm1.42-.74-.17-.12-.06.07-.12.3H602l.32-.25Zm12.52-2.68h-.13l0,.1.07.06h0l.16.17,0-.11-.06-.11Zm-12.91,3.33.14,0,.12-.05.07-.11v-.11l-.07,0-.1.12ZM491.36,200.63l-.31.08-.12.08.16.07.17,0,.06,0,.21,0v-.07l-.07-.09Zm-1-.26-.3.09.13.09h.16l.11,0,.06,0,.08-.13-.06-.1-.09.1Zm142.7-5.2-.06-.09-.11-.05,0-.15-.25-.11-.27,0,0,.11.2.28.37.24.52.24.18,0,0-.08-.07-.07Zm-144.25,5.06v0l0,.13,0,0,.09-.09-.05-.1Zm-55.62-33.09v.1l0,.1h0l.09-.05-.08-.19h-.08ZM590,234.33l-.11-.15-.08,0,0,.07,0,.29.12,0h0l.1,0v-.05l0-.08Zm-5.46,4.82,0,.18.06.12.19-.07.06-.14v-.12l-.06,0-.19,0Zm.28-.22,0,0v-.11l0-.09h-.13l0,.1.05.07Zm-11.5-21.25.12.07.18-.06.08-.06,0-.09v0l-.14-.12h-.09l-.22-.2-.06,0-.1.09,0,.09.14.1Zm-78-22.14-.39.11-.1,0v0l0,.1.06,0,.17,0,.25-.05.29-.13h.15l.21-.07h.1l.12.08.31-.2.21-.25.2-.05-.13-.13-.29,0-.36.14-.31-.11,0,0,.06.17,0,.09Zm-2.76,4.64-.1.07,0,.07.15.05h.06l0,0-.08-.06-.05-.08ZM757.45,154.4l.12-.16-.3-.2-.27.12,0,.12.1.12.19,0ZM745.84,305.29l-.15-.05-.17,0-.18.05-.17.08-.25.16-.14,0h-.14l-.28.05-.28.07-.21.11-.14.18h-.12l-.13.05-.1,0-.11-.06,0,.08-.05.07-.07.05,0,.13.22.05.06.11,0,.15.08.12.2,0,.18-.13.14,0h.11l.12-.17.32-.19h.21l0,0,0,.11.06.05.08,0h.1l.26,0,.27-.07h.22l.22,0-.07-.17,0-.17.05-.07v-.07H746l-.1,0-.31.17-.29.23v-.24l.14-.22.28-.15.1-.15.13-.14.33-.25v0l-.33.1Zm-.91-18.43v.05l0,0h0v-.05l0,0Zm11.83-131-.07-.08-.24-.08-.23-.15-.19-.17-.34-.27-.44-.15-.1,0,.2.17.36.17.69.5ZM746.2,306h0v-.11l0,.07Zm-.34-16.82,0,0V289h0v.09l0,.05Zm.17,17.52-.09.18,0,.08.16-.07,0-.22v-.15Zm-1.48,2.16-.07,0,0,.05V309l.17.18h0l0-.08,0-.16ZM641.44,177.08h-.1l-.1.1v.12l.12-.06ZM744.88,307.41h-.07v.3l.07-.06.06-.12,0-.08Zm-1.35.68-.09.12,0,.13.11,0,.06-.09,0-.14ZM671.72,138.87l-.18-.13-.06-.05-.67-.31-.08.1-.25.4-.12,0-.24.3-.12.28h.09l.41-.2.12.15.24.51.13,0,.15-.08.18-.14.19-.1.07-.08.07-.23.19-.24.23-.11-.06-.08Zm-2.14-.28-.43.2-.18.14.1,0,.29,0,.13.12h.18l.29-.47,0,0-.17,0Zm-176.8,12.49,0,0,0-.13,0-.15-.11,0-.12.13.08.12Zm151.45,31,.11,0,0-.31,0-.12-.16-.11-.1.12,0,.3,0,.06Zm-.3,2.63,0-.19-.13-.11v.34l.14.11ZM483,149.76v.15l.08.24,0,0,0-.17-.06-.25Zm4.83,2,.05-.06.06-.21h-.12l-.09.13,0,.16Zm-.57,0,0-.16.16-.11v-.06l-.11,0-.08.05-.08.27.19.29.11,0,.08-.07-.18-.08Zm5.16,15.74,0-.11-.07-.57.09-.13-.08,0-.08.1,0,.38Zm-7.59,29.11.06.07.08-.17,0-.26V196l-.09-.17.06-.09h0l-.2,0,0,.08.05.3-.06.2Zm-73.2-40.13,0,0v-.05l-.18-.07-.05.09,0,0,.05,0Zm-.37,11.13,0,0,.12.08.13,0v0l0-.07-.08,0Zm-6.5-16.89-.07-.11-.08.09-.15,0-.08,0h-.25l0,.06,0,.11.17,0,.26,0,.17.14v-.15l.05-.06Zm20.39,11.4-.1.13-.09.23,0,.19.06,0h.07l.07,0h.08l.06-.07,0-.38,0-.12Zm-1.27-2.35,0-.07-.07-.06-.1-.06-.28,0-.13.06v.1l.3.37.13.31.18.14.25.1,0-.14-.1,0-.15-.08,0-.09,0-.23v0l-.1-.12,0-.06Zm1.29,3.17,0,0H425l0,.17.11.23.1,0,0-.08-.05-.09,0-.06v-.07Zm-21,9.18-.37,0,0,.08,0,.26.07.06h0l.15.09H404l.11,0h.05l.08,0,.1-.08v-.05l0,0Zm6.57-9.12-.1-.05-.38-.28-.12,0-.1,0-.05-.13-.13,0-.27,0-.22.13,0,.11-.2.08H409l-.1-.08-.22-.3-.08.09-.08.08-.14,0-.11.07-.15.26-.13.28,0,.11.13.26.22.19.12.07.12,0h.24l.11,0,.23.17.26.08.1.08.09.1.18.16.45.26.42.32.21.1h.25l.25,0,.23.15.21.19.24.44.11.06.12,0,.33.16.24,0,.22.09.23,0,0-.12,0-.11,0-.13.06-.12.1-.1.24-.16v-.2l-.1-.11-.11-.17.12-.08-.07-.09-.1-.07-.05-.07,0-.1v-.2l.09-.17.07-.13.07-.14.05-.16.07-.15.55-.62.07-.1.17-.26.12-.1-.13-.08h-.14l-.34.15-.13,0-.12,0-.1.1-.13,0-.28-.06-.28,0h-.11l-.12,0-.22.14-.28.07h-.18l-.27,0-.49-.1-.24,0-.31.08ZM405,170.13l-.05,0-.23.16-.07.14.33-.14Zm1.95-4.45v-.05l0-.11-.16-.06,0,0v.12l.13.09Zm4.82,2.26-.2-.06v.25l.16.13.2,0,.08-.07-.06-.09Zm20.27-6.16.08-.15-.18.08-.11.19.1,0Zm1.66,3.23-.12-.2h-.06l-.13.05V165l.11.07.06.12.16.14.15.2.07-.16v-.09l-.06-.15,0-.11Zm0,1.21,0,0h0l0-.24-.07-.05,0,.15ZM431.61,162l.09-.08-.36-.25.12.28Zm-6.53,2.26-.16.16,0,.08.13.2.23.21.2-.15.17.07-.2-.25-.1-.09-.16,0Zm-.21-1.13-.07.14-.08,0-.09-.1-.06,0-.14.27v.1l.08,0,.13-.1,0,0,.05.09v.05l0,.14.09,0,.08,0,.31.14.05,0,0-.12-.17-.27-.14-.06v-.28l-.08-.22,0,0Zm4.76,5.72,0-.1.1-.13-.19-.21-.09-.14,0,0-.07.11v.23l.05.11Zm1.39-6.34-.1-.27-.2-.2h-.11l-.24,0-.35.18-.25.09,0,.06.11,0,.2-.07.24.09.21.12.22.18.2.2.07.11.09.08.13.08.05.27.22.12.26,0,.32.05v0l0,.09.07,0,.08.19.08.1v.12l0,.09.21.15.08.11h.12l.06,0,.05.07.06,0,.07,0,.09-.09.05-.25-.06-.06h-.2l-.21-.06-.17-.15-.09-.29,0-.3.05-.1v-.08l-.09-.13,0-.14-.06-.06-.45-.07-.38-.22-.11,0-.22-.13Zm-.29,7.87,0-.09-.08.07-.07.28V171l.06.09.09.06h.51l.22.08,1,.22.24.12.26.08.05.08V172l.11.05h.85l.84,0h.46l.45.06h.24l.17-.05,0-.11.06-.15.06-.25,0-.1h-.07l-.26.2-.3,0-.28.06-.12.11h-.1l-.09-.05,0-.1.07-.33-.05-.06-.33,0-.2,0-.37-.1-.4,0-.19-.17-.59-.08-.19,0-.2.06-.19,0h-.19l-.08,0-.08-.06,0-.09v-.1h-.16l-.11-.07,0,0,0,0,.16-.05-.06-.14h-.15l-.13.12,0,0-.19,0-.15,0-.11-.06,0-.19-.06,0-.06.11v.13l-.09.08Zm25.06,24v.17l.08.09,0,0v-.05l0-.14,0-.13Zm5.7,21.44-.06,0,0,0-.1.08,0,0,.2.09Zm-4.78,49.63,0,0,.11,0,.12-.13h.13l.18-.35,0-.16,0,0-.11.13-.28.19-.13.13-.12.07Zm4.6-48.74-.15-.09,0,.18.25.06h.21l.22.06h.19l0-.1-.32-.18,0,.08-.05,0h-.07l-.07-.12v-.21l-.07-.1-.11-.08-.17-.05.08.14-.05,0-.07,0,0,.09.15,0,.11.13,0,0Zm-5.63-22,.05.1.38.18.08.08.08.12.13.16h.06l.11-.06-.06,0-.34-.32-.32-.16-.07-.06,0-.1Zm1.52,65.41.06,0,.09,0,.1-.09.14-.28,0-.2,0-.32,0-.09v-.1l-.18.06-.22-.05,0,.38-.15.52Zm23.29-72.44.07.13.08,0,.12,0,.15-.14,0-.06v-.14l-.23-.37-.08-.1-.05,0-.06.14,0,0v.08l-.07.11Zm-80.75-28.27v.15l.12.18.13-.23-.07-.06-.15-.08Zm66.88,61.7-.11.16.14-.06.09-.12h0Zm.1-.65-.15.11.12.12h0l0,0,0-.08Zm-.23-2.66V218l.07,0,.05-.06,0-.07,0-.14-.07.05Zm-1.27-3.36-.09,0,.05.15.18.21.13.07h.23l.06.06v.05l0,.06.06,0,0,0,0-.24-.21-.22-.08.1v0l.06.07-.16,0-.08-.08,0-.06v-.33l-.06-.13-.11,0,0,.12-.07.11Zm-73.81-57.45,0,0,.06-.13v-.05l-.16-.29-.34-.13h-.43l0,.07v.14l0,.05.21,0Zm8.28-1.65v.29l.08.12.12.13.11.15.06.14,0,.23.12.15,0,.39-.05.13-.1.09,0,.14v.15l.18.06.1.15,0,.17V158l-.06,0-.07-.07-.05.06v.18l-.05.2-.07.09,0,.1,0,.46v.21l.13.24.12.2.07.17.11.09.14,0,.17,0h.17l.19-.1.13-.19.1-.46.09.07.1,0,.12,0h.12l.25.14.19.08.17,0,.06-.21.09-.24.24-1.36.07-.22v-.18l-.08-.17v-.27l.26-.3.06-.1.06-.14v-.14l-.18-.65-.1-.16-.11-.09,0,0,.09-.14.07,0,0,0-.07,0-.08-.06-.06-.13-.09-.12-.21-.13-.14,0-.1-.15-.1,0-.05.14-.12.09-.24.07-.39.36-.27.11-.27.09-.22,0-.21,0-.11,0-.12-.13-.05,0-.05.1Zm.26-.64.08-.05.05-.09,0,0-.11,0-.11.16,0,.08.1,0Zm2.4-3.91-.07,0-.11-.05-.13,0-.1.06-.1.1-.11,0-.38.06-.22.13-.18.29-.11.09,0,.07,0,0h.07l.09.16-.14.05-.1.09,0,.15.11.11.12.07v.13l-.11.11-.09.08v.07l.11,0h.13l0,.14L401,153v.1l.1.07.24.11,0,.08-.11.09-.05.09.07.08.1.11.22.12.36.25.15-.17.19-.4.1-.12.05-.12.06-.48.06-.11.28-.37,0-.08v-1l0-.08-.07-.08,0-.11.08-.36v-.44l-.1-.11h-.1l-.09.18,0,.32,0,.12-.06.13Zm-57.41,48.43.15-.2.09-.34-.11,0-.06.1-.13.18v.14Zm111.23,62.62.14,0,.13.19.09,0,0,.15.06.08h.06l.11,0,0-.08-.12-.45,0,0-.1-.12-.11-.34V261l-.09-.2-.11.27-.16.14v.32l-.06.18ZM385.76,158.45l-.1-.08-.45.06-.11.11v.12H385l-.09.16.07.07.31.07.09-.14.1,0,.29-.24Zm3.36-1.88-.53.11-.26.12-.9.51v.1l0,.08.13,0,.08.14.17-.12.12,0,.14,0,.08.08,0,.24,0,.07.21.06.34.19.18-.07.2-.11.11-.21.13-.18.15-.16.11-.17v-.15l-.11,0-.11,0-.21.06-.2-.1,0-.11.07-.06,0-.06-.06-.05v0l.08-.09Zm-3.79,2.62,0,.07,0,.06v.1l.21,0,.13,0,.05,0v-.07l-.19,0ZM676,304.11l0,0-.1,0-.18,0,0,.08.15.16.07.2.13.08.06-.07,0-.1-.08-.17,0-.2Zm-83.21-46.87v-.15l-.19.06-.14,0-.14,0-.25.14v.18h.09l.31-.05,0,.12-.08.07.1.06,0,0,0,.05,0,.08.14.05.06-.05.12-.2,0-.18,0-.12Zm1,6.28-.27.09-.12.11,0,.14.23.1.09.07.1,0,.44-.06.1.05.21.08.16.11,0,.26.09.24.09.08.06.09-.09.3,0,.21.12.18.26.08.25.1.18.13.11,0,.11.07.09.08.1.06.13,0h.11v-.14l-.08-.14v-.09l.17-.38.06-.09.09-.08.16-.08-.92-.29-.28-.59-.05-.67-.06-.14-.09-.14-.06-.15,0-.16-.08-.11-.14-.09h-.2l-.2,0,0,.26-.12.14-.06-.11-.05-.14-.1-.18-.27.07-.1.07-.09.09,0,.1,0,.09,0,.13Zm1.59-9.63h.08l.11-.07.07-.15,0,0,0,0-.07,0-.06-.05-.08-.06v.11l0,.06v.19ZM598.09,242l0,.05h.06l.08,0v0l0-.09Zm-5.33,17.38-.22-.26-.09,0,.19.3,0,0,.06,0,.09.07v0Zm3.84-5.87,0-.14,0-.12-.1,0,0,0,0,.16Zm-4.53,6.86-.05,0h-.08l-.1.15.13.17.06.25.11-.15.15.07,0,0,.09-.15.11-.1,0-.08-.17-.21Zm66.22-73.83,0-.1-.16-.23-.19.09-.05.14.09.14.18,0Zm-67.88,73.34-.16.13,0,.12.29.08.28,0,.06-.06-.08-.09-.22-.11Zm2.81.42h0l0-.07h.12l-.11-.08-.08-.08-.13-.16-.08.1-.06,0-.12-.16-.12-.06v0l0-.09-.18-.09-.12.29-.12.12.06.05.18.08.29-.05ZM593,273.18l0-.08h-.08l-.07,0-.16.13.05.06.09.05.13,0Zm5.36-7.08v.24l.07.15,0,.17h.09l.34-.07,0-.13,0,0,.17.11.05.08v.11l.16,0,.06-.07.18-.09.06-.08,0-.21.2-.33-.14-.29-.27-.23-.41-.1-.07-.07-.36,0-.08.34-.1.13V266l-.09.11Zm-.23-.1.07-.11,0,0H598l0,.07V266l0,.05Zm2.61-13.58h-.06l-.19.11.15.12.29,0,.19-.29V252l-.26-.36v-.14l-.1,0-.44.29V252l.07.2.09.09.31.11,0,.05Zm1.28,5.41-.16.13-.13.45,0,.24v.54l0,.36.26.24.13.18.06.11.08.1,0,0,0,0-.14.07-.08.27,0,.09-.07.16,0,.25v.12l0,.1.19.19.23.14,0,.06-.11,0-.09.1,0,.15.05.08.09.07h.25l.46.19.21.16.17.19.12.18.08.2,0,.26v.26l0,.24-.14.2,0,.24.23.19,0,.12,0,.48.14.95,0,.49,0,.08.09.05.11-.07.06,0,.41-.06.18.25.07,0,.07-.06.17-.09.18-.05-.1.07-.06.1.08.11.12.06.24,0,.46-.16.23,0,.26.1.27,0,.07-.09.08-.07.13.11.09.15,0,.1v.52l0,.23L607,268l.08.05h.1l.1,0,.38-.28.34-.1.32.13.32.09.34-.14.46-.24.17-.51.59.69.06-.05.08,0,.25-.07h.09l.08.05,0,.1v.18l0,.18.14.08.19,0,.35-.1.27-.22,0,0,0,.09.1.07.12,0,.12-.11.12-.13-.11.26v.09l.08.08.1.06.1,0,.18-.2v.24l.11.44,0,.84,0,.09.08,0,1.22-.45,1.49-.52.1-.15.06-.18.09-.16.21-.23.05-.1.08-.06.11,0-.16-.22,0-.09,0-.1.12.1.13,0,.1-.11.06-.14.06-.25,0-.27-.15.05,0-.11.08-.06h.1l.1,0,.17,0,0-.2,0-.23L617,266l-.22-.06-.1-.07-.11-.05.24-.16.08-.26,0-.12v-.17l-.14,0h-.17l.06-.08.07-.06.32-.14.08-.07.07-.08,0-.16.13-.09.22-.09.09-.09,0-.12V264l-.06-.12v-.11l0-.11,0,.16.06.14.1.08.14,0,.19-.06.15-.14.17-.2.21-.16.25-.1.35-.12.09-.05,0-.08,0-.11v-.25l-.14-.49,0-.25.19-.89.08-.21.46-.76.07,0,.16-.06.16-.07.09-.12,0-.15,0-.14-.08-.14.21.13.15.24.2.13.23.08.46.1.47,0,.28-.07.21-.18,0-.13-.23-.13-.4-.49-.33-.23-.62-.51-.15-.14-.29-.36-.11-.22-.07-.07-.08-.06.2-.05,0-.06.15-.14.18-.1.06-.09V257l-.06-.13-.28-.36-.15-.28,0-.16-.07-.06-.17-.08,0,0,0-.07.08,0-.12-.07-.14,0,.14,0,0-.12v-.12l-.09-.08-.12,0-.17-.14-.14-.07,0-.1.14-.24-.06-.14-.35-.37-.11,0-.12,0h.25l.24,0,.33.05.1-.07,0-.13.11.11.13.1h.17l.14-.08,0-.09-.06-.08v-.06l-.18-.18-.14-.12v-.12l-.18-.19.07-.11.15-.05.08-.07.12-.21.1-.07.09,0,.31.17.23.05.23-.06.24,0,.28,0,.28,0,.11,0,.08-.06,0-.1-.06-.09-.47-.38-.26-.35.18-.32.12,0H622l.34.13.25,0,.51-.09.46-.12.19-.11.07-.07,0-.1v-.25l-.06-.1-.09,0h-.36l-.1,0-.48-.31-.24-.09,0-.19-.1-.1-.11-.08-.21-.11-.11,0-.1,0-.23.13-.24.06h-.12l-.08-.14v0l.3-.07.09-.05-.09-.26-.11-.15-.24.15-.17,0-.66.06.25-.09.07-.12,0-.15,0-.26.18-.15v-.15l0-.17,0-.1-.07-.08-.21-.14-.24-.11-.17-.14-.07-.23v-.1l0-.18,0,0-.21-.08-.11.1-.14.23-.25.27L619,248h0l0-.17.08-.16,0-.11v-.26l-.12-.09-.05,0-.5.78-.1.12-.81.75-.07.25-.13.25-.32.3-.1.22-.18.15h-.23l-.12,0,0-.11-.1.06-.31.3v.17l.08.16.23.15-.07.2-.08.08-.2.15-.12.07-.49,0-.24,0,0-.12V251l-.1,0-.33.14-.22.11-.21.16-.22.13-.26.12-.27.08-.26,0-.25,0-.09,0-.06.06v.13l0,.13-.09.27-.07.08-.48.47-.59.49-.29.35-.4.42-.22.27-.13.07-.14.06-.39.09-1.31.22-.82.07-.22.05-.24.14-.17.21,0,.28v.15l0,.09-.07,0H607l-.11-.08-.1-.09-.08.11,0,.17v.21l.11.13,0,.15-.12.15-.07.17-.06.33-.1.11-.14.09,0,.15,0,.15.13.09.2.13h-.16l-.1,0-.31-.27-.09,0h-.23l-.22-.07-.55-.36-.1,0-.11,0h-.11l-.27,0-.27-.06-.23-.12-.29-.21,0-.07-.11-.3-.54.18-.14.2-.11.23-.24.18-.2.22,0,.11-.13.4h.12l.06,0h.07l-.09.06Zm-10.59-1.27-.18-.07-.24,0-.12.19.34.15.32-.11.06-.07-.07-.06Zm8.26-18.07h0l0,0-.16.06v.11l.19-.12Zm-6.51,42.79H593l0,.11.12,0,.1.09.07-.14,0-.14ZM596.6,266l0,.06.08.06.11,0,0,0,.06-.14-.23-.09-.12.06ZM609,278h.25l.88.47.5.23.44.15h.25l.12.07.08.13.16.08.25.09,0-.09v-.09l-.22-.18-.07-.1-.1-.33v-.15l0-.14.16-.53,0-.22-.06-.22-.05-.05-.62-.33H611l-.34.07-.27,0h-.52l-.52,0-.47-.16-.44-.26v-.25l.05-.26-.09-.09-.2-.1,0-.1-.06-.27-.08-.26-.22-.06-.25,0h-.36l-.1,0-.19-.2-.52-.1-.1-.08-.08-.09-.21-.12h-.11l-.21.06h-.1l-.33-.05-.05,0-.29-.45-.05-.06-.28,0-.11,0-.1.05-.09.09-.06.1-.1.25-.13.23-.14.18-.21.08h-.11l-.1,0-.12-.06-.13,0h-.55l-.23-.05-.48-.16-.17-.08-.21.09h-.23l-.56-.15-.25,0-.25,0-.2-.05-.15-.14-.1-.45,0-.1-.18-.19-.17-.22-.07-.05h-.08l-.13,0H599l-.27-.06-.25-.11-.22-.05-.23,0-.21-.08-.17-.14-.19-.26-.08-.06-.35-.07-.23-.13-.09.21-.18.12-.11,0h-.11l-.3-.14-.22-.06-.23,0-.22-.09-.38-.07-.18-.12-.1,0-.2.15-.16.2-.22.68-.07,0-.1,0-.1-.07-.13.29-.06.11-.22.21h0l-.11-.05,0,0,0-.19-.07,0-.14.1-.07.1,0,.12.1,0,.12,0,.12,0,.12.05.25,0h.49l.22,0,.52.18.64.31-.07.12-.1.12-.07.13,0,.15.08.12.16.07.19.06.91.13.44.09.53.18.1.07.2.15.21.13.23.09.62.17.24,0,.24,0,.14-.12.12-.05L600,276l.24,0,.26.09.43,0,.18,0,1.16.35.38.16,1.14.62.45.15.46.11.59.09.34.12,1.25.14.49.1.48.13.19,0h.19l.27-.05.26-.08Zm-28-43.72-.08-.22v.34l.12.14v-.12l0-.09Zm1.44,8.79-.06-.09,0,0v.16l.06.11.07.06Zm.94,2.14.06.17h0l.09-.09-.07-.3Zm-1.85-3.17-.14-.12.07.4,0,0Zm4.85,10.75,0,0-.09.06,0,.07V253l.11,0Zm-2.94-7.1.1.07.07.16h.08l.09-.08.09,0,0,0,.08-.09-.13-.23-.06,0-.16.06-.08,0h-.13Zm1.27,2.08-.06-.06-.13-.07-.09,0,0,.33.15,0,0-.06ZM581,236l-.14.15H581l.12.14.06.2h0l0,0,0,0-.15-.37-.08-.07Zm24-16.41-.35.25-.24.12-.22.15-.06.07,0,.08L604,221v.09l.06.25v.46l.44.29.22.12.31.12.32.08.12.05.24.15h.14l.2,0,0,0,.14-.18.12-.09.32,0,.11,0,.1-.06v-.06l0-.07.24-.11.21-.17.08,0h.09l.14,0,.12-.1.06-.13.12-.33.11-.26v-.08l0-.08.07-.07.09-.17.42-.54.19-.05.22-.13v-.23l0-.26-.06-.14-.09-.11-.16-.06-.13-.1-.12-.18h-.06l-.11.07,0,.05,0,.21-.34-.2h0V219l-.09-.14-.27-.06h-.09l-.19.11-.37,0-.53-.09-.14,0L606,219l-.21,0-.21,0-.11,0-.1.07-.09.16.08,0h.12l-.22.17ZM581,233l-.11,0-.11.1,0,0,.1.1.13-.15,0-.07v0Zm0,8.92-.05-.12,0,.06-.11.42,0,.32h0l.1-.09H581l0-.16v-.13l.09-.24Zm7.22,14.56-.16-.11h0l-.07.09v.18l0,.24,0,.15.09.15.11.11.09-.06,0-.16.06-.18v-.16l-.06-.06Zm-7-21.75,0,.19,0,0h0v0l.1-.09,0-.14.07-.27v-.12l0,0-.11.23Zm8.93,23.08.16.27.05,0,.1-.11-.05-.11-.06-.11-.09-.1,0,0Zm.18-.6-.05-.13,0,0-.09.09.09.14.13,0v-.12Zm1.3-.12-.06.08h-.09l0,.11,0,0v.05l0,.07.21.07.15-.2,0-.08v-.07l-.11.05Zm-5.14-1.54.2.05.26-.13,0-.19.09-.12V255l-.1-.18-.13-.11-.21.12-.19,0-.1.09,0,.25.11.3Zm3.27,2.72H590l0-.15-.11-.18h-.1l-.08.11-.05.19Zm-.27-1.12-.42-.23h-.14l-.06.22,0,0,.13,0,.2.08.15.12.14.14.1.08.1,0,.07-.05-.18-.32Zm-1-1-.87-.3,0,0,0,0V256l.12.13.16.08.23.05.19.09.11.11.15.08v-.26Zm.1.79-.09.08-.05.21-.06.07,0,.12.07.08.1.05.34.13.14,0,.39.12.08.06,0-.07,0-.24-.12-.07-.33-.17-.1-.07-.19-.15Zm3.2.66,0,0v0l.15.2.14-.05,0-.09-.12-.05-.08-.1Zm39.12-24.45.42.34v-.08l-.42-.41,0,0v.05Zm12-41.18-.08.13,0,.07.09.14,0,0,.09,0,.1,0h.53l.27,0,.35-.14.07-.09.07-.13-.05-.17-.29-.11H644l-.76.14Zm-2.8,69,.15.46.17.17,0,.11-.08.1-.06.13,0,.14v.25l.11.23.1.1.08.11-.07.28,0,.23v.24l0,.17,0,.16.09.13.22.18.07.1.22.5.06.1.38.2.08.18.3.07-.18-.18-.15-.18-.31-.53-.19-.51-.14-.62L641,263v-.11l0-.19,0-.15.06-.14.13-.06.25.05.23.11.23,0,.24,0,.18.13.73.31-.07-.12-.09-.08-.15-.05-.1-.08v-.16l0-.15-.09-.1-.43-.21-.26-.22v-.14l.1-.14.1-.06.36-.12.34-.16.07-.07.07-.53,0-.21,0-.13,0-.09h-.32l-.24.07-.44.21-.15.16,0,.16V261l-.09.05-.13,0-.19.13-.1.22,0,.11-.09.09h-.15l-.15-.06-.11-.09-.08-.1v-.09l0-.07.51-.27.23-.24.06-.09,0-.25,0-.26v-.24l-.12-.2-.11-.09,0-.16,0-.07.28-.34,0-.08v-.08l-.15,0-.14.06-.38.33-.22.23-.15.29,0,.13-.06.12v.22l-.27.42Zm.55-79.86.05,0,0,0v0l0,0-.06,0-.11,0-.05,0,0,.09.06,0,.08,0Zm3.57,8.74-.1-.13H644l0,.09.08.11.17,0Zm-7.82,22.1.13,0,.09-.09,0-.08-.33-.14,0,.05v.09l-.16,0v.07l.14,0Zm-1.29,22.73.23.17.16-.1h.1l.06.05.07-.13.11-.09v-.15l.06-.25-.16-.14,0,0-.15-.28-.09,0-.07.06-.07.1,0,.39-.2.26Zm9.72-26.57-.17.23,0,.1v.13h.16l.16-.11v0l0-.09,0-.1.14-.13h.11l-.06-.12v-.14l.18,0,.19-.15.19,0,.08-.11.21-.09.12-.14.06-.2-.15-.16-.09.18-.21.17-.06.09-.11,0,0,0-.07-.07-.18,0,0,0,0,.1.11.09-.05.08-.23.18-.05,0-.14,0Zm-9.39,28.77,0,.35.1.34.11.2.16.17.09.06.21.08.14.2.09.08,0,.1.12.17.1,0h.13v.13l-.06.13-.14.15,0,.17.16.3.1.13.14.05.14.27h.16l.25.08H638l.09,0,.12.16,0,0-.08-.2-.15-.16h-.11l0-.09.07-.08,0-.12-.15-.36,0-.11,0-.12v-.13l-.06-.12v-.38l.14-.2v-.17l.07-.11-.1-.14-.14-.08-.12,0-.06-.07,0-.13,0-.13-.13-.18-.18-.11-.65,0-.57,0Zm1.71-25,.11,0,.15-.34.07-.1,0-.05-.21.26h-.09l-.1-.05-.08.07.09.2Zm2.68-.69-.08-.08-.13-.07,0-.11-.06,0,0,.3.18,0ZM650,192.57l-.08.24.17.13.26.26.19.15,0,.09.12.32-.18,0-.15-.1-.09-.22-.19-.19,0,.15v.15l0,.13.18.23.08.13-.05.18-.1.16.19-.1.22-.21.22-.09.2.06.08.1.1.08h.11l.09-.05,0-.12v-.13l0-.1-.09,0-.13,0-.1,0v-.19l0-.18-.08-.22.11-.08.13-.07.1.06.19.16.09.33.2.3,0,.22-.16.17.13.08.16,0-.2.35-.23.33-.15.19-.17.16-.22,0,0,.05,0,.32v.23l-.06.18.07.09.08.09.1.22-.06.26,0,.08-.07,0-.24,0,.09.27.1,0,.12,0,.57.24.07-.08.06-.11-.15-.2-.05-.12V197l.08-.23.13-.23.1-.11H652l.13,0,0,.08v.11l0,0H652l-.09,0v.12l.11.33v.26l-.09.25-.05.07-.07.06-.05.08v.1l.46-.19.44-.29-.11-.29.08-.12h.14l.22.09.19,0,.3-.58.05-.24v-.25l.11-.26.07-.26.09-.23.12-.23.12-.31.17-.28.56-.53.05-.09,0-.08-.2-.14.06-.08,0-.08-.09-.1-.11-.08,0-.15.1-.16-.38,0L654,193l.19-.26.21-.24,0-.11,0-.12-.1-.09-.12,0-.19,0-.17.08-.11,0h-.12l-.27-.09-.23-.18-.08-.25-.1-.23-.23-.13-.25,0-.1,0-.4.16-.06.1-.05.13-.17.21-.19.07-.23,0-.08,0-.06.09-.07,0-.32.07-.21.09,0,.08,0,.07,0,.12-.28-.11-.09,0Zm-3.54-3.38-.11.11.1.11,0-.07Zm4,2.48,0-.19-.11-.08,0,.07-.06.2.1.08Zm6.8-3.58-.38.11-.11.07-.18.24-.45.32-.35.29-.22.11-.2.14-.23.2-.24.17-.26.12-.27.1-.2.13-.19.18-.17.12-.2,0-.26-.06-.27,0-.12.09-.11.1,0,.09v.67l.16-.06.16,0,.16.11.16.08.19,0,.19-.08.14,0,.55,0,.05,0,.64.49.12.05,0-.24.1-.2.12-.44.17-.22.23,0,.22.17.25.11h.24l.52-.13.26.08.14-.09.27-.07.23-.09h.07l.22-.07.21,0H659l.2-.06.23-.13.29-.22.09,0h.24l.23-.05.23,0,.33,0,.09,0,.28.23.23.09.33,0,.32,0,.12.1,0,.16-.06.1L662,191l-.09.08-.29.13-.07.06.05.25,0,.4.07.26.16.23.17.2.08.23.11.18.49.19.47-.14.36-.47.46-.7.15-.18.46-.15.52-.05.13-.05.07-.13v-.12l-.08-.08-.44-.32-.16-.22.11-.26.27-.43.12-.08.13-.05.1,0,.09.07-.1.12v.15l0,.26,0,.16.08.07.07,0v-.22l.06,0,.08.06,0,.11.13,0,.27,0,.11,0,0,.1,0,.06-.45.16,0,.08.54-.08.47,0,.42.07h.24l.24.05.43.13.15-.3.22-.25.19-.15.17-.15.07-.13.09-.09.3-.07.21.08.15.18-.21.1,0,.23-.12.41.06.11.08.08h.13l.19-.15.07-.08.17-.23.09-.26,0-.33,0-.13.07-.13.19-.14.24,0,.23,0,.17.14.13.25h.08l.13-.16,0-.07-.09-.06-.06-.11,0-.21.26-.18,0-.06v-.07l.05-.14.11-.1h.32l.11.09.1.12,0,.1-.13.12-.19.13-.09.18-.17.1,0,.15-.08.37,0,.15-.1.11.08.11.16,0,.09-.11.22-.19.22-.12.33-.11.09-.06.09-.08.05-.11,0-.29.11-.27.31-.26.1-.06.49-.11-.11-.15-.1-.15-.25-.52,0-.2,0-.21.06-.18.07-.18v-.14l0-.13.25-.53.15-.26.11-.09.12-.08.16-.16.09-.27.14-.82,0-.56-.06-.3,0-.31,0-.24.08-.23.27-.37.07,0,.31-.08.24,0,.21,0,.1-.22,0-.32.08-.31.08-.12.09-.11.06-.12,0-.14.08,0h.1l.07,0,.07-.05.08-.11.13-.05,0-.25.17-.5.07-.43,0-.14,0-.17v-.13l0-.13-.06-.28-.1-.28-.13-.55-.28-.47-.2-.15-.15-.21,0-.28v-.29l0-.63.07-.37.11-.37-.4.09-.08-.05-.24-.22-.11-.06-.23-.09-.1,0-.08.13-.15.41,0,.28.57-.09.09,0,.09-.06h.1l.08.1,0,.26-.1.27-.1.15-.14.09-.37-.17-.13,0-.07.13-.1.09h-.11l-.09-.08,0-.09,0-.64,0-.1-.13,0H674l-.12,0-.11-.05-.09.05-.07.1,0,.38,0,.15-.11.23-.07.09-.11.08-.12,0h-.13l-.12,0-.14.14-.1.17v.16l.06.29.08.25v.14l-.11.29-.15.27-.08.08-.1,0h-.15l0,.09.14.12h.28l.1.08.1.27v.3l-.07.39,0,.12-.06.13-.08.1-.09.09-.06.1-.1.29-.2.53-.12.21-.21.21-.18.22-.14.22-.11.24-.09.3-.12.3-.08.09-.26.2-.78.34-.15.15-.12.26-.14.23-.18.2-.19.17-.5.38-.22.09-.23,0-.43.18-.85.2-.06.05-.32.35-.1,0h-.11l-.25-.07-.21-.16v-.14l0-.15,0-.16-.18-.23.06-.13.13-.06.13,0,.24-.14.41-.33,0-.11,0-.09-.26,0-.5.16-.26,0-.29.42,0,.58-.14.49-.33.38-.45.46-.21.16-.23.13-.2.24-.16.28,0,.28.13.26-.18.18-.25.16-.23.12-.25.09-.16-.05-.57-.06-.12-.07-.06-.1.09-.15V188l-.09-.05-.09,0-.62.15h-.89l-.26.1-.26.07-.49,0h-.25l-.25,0-.26-.06h-.25l-.13,0-.12,0L658,188l-.23,0Zm-8.86,16,.18.18.19-.17,0-.11,0,0,.12-.05.14-.13.15-.1.15,0v-.08l0-.11-.2.08-.05,0,0,.06-.12.07h-.09l-.3.05-.16.09v.07l-.06,0-.12,0Zm-1.7-15,.1-.06.08.15H647l0-.22,0-.18-.15,0-.1-.08-.18.1v.14l.06.19Zm2.83,1.14.14.09.05-.11v-.14l.22-.27v-.18l0-.07v-.06l-.05,0-.27.16v.2l-.16.34Zm.07,2.52,0,.06-.1.12h.1l.15-.09,0-.14.14-.17h-.07l-.16,0Zm-.33-2.08,0,.14.15-.08.13-.24v-.12l-.24-.11ZM630.56,222l0,0v0l0,.06.17.13.13,0v-.2Zm-5.88-11.36.08-.13,0-.05-.13-.08,0,0,0,.08,0,0v.09Zm6.17,21.44,0,0H631l.08-.19-.08-.29.11-.15h.07l0-.08-.12-.09h-.27l0,.15.08.11,0,.17.06.08,0,.14,0,0Zm-5.54-21.44-.08-.15-.15.1-.11,0v.09l.28.07Zm-9.12,4.18,0,0v-.07l-.12-.08H616v.06l.13.16Zm12.3-1.21,0,.13v.12l.07.13.05.14.13.57.07.2.09.19h0l.14.15.19.1.19.21,0,.09.12.34v.28l.1.17.19.09.07-.23L630,216l0-.25.06-.25.12-.26.15-.25.34-.31.31-.39.14-.21.11-.22.21-.53.14-.52.15-.41.09-.41.07-.17.23-.32.23-.53,0-.23v-.23l0-.17.09-.15.17-.16,0-.18-.1-.12-.24-.12-.09-.07-.08-.12-.1-.1-.16,0-.14.05-.19.19-.58.16-.12.06-.17.22-.15.24-.15.18-.18.17-.29.33-1.11,1.6-.06.12,0,.27,0,.28-.06.2Zm-6.65,29.11h-.11l-.1,0-.31.27-.33.24-.15.13-.25.26-.15.1-.22.34-.07.18,0,.18.2-.14.22-.1.12,0,.11-.05,0-.12.08-.08.23-.06.21-.09.24-.13.22-.14.19-.21.15-.23.21-.13.25,0,.19-.09.15-.15.15-.18.48-.68,0-.2.06-.11.12-.06.24-.07.51-.1.07-.08,0-.1.13-.2.19-.14.11,0,.25,0,.12-.05.2-.18v-.11l-.11-.33-.15-.53.09-.18,0-.12V239l.07-.22v-.1l-.1-.08-.08.11-.3.52-.08.12-.11.25,0,.2,0,.14-.07.23-.15.19-.09.07-.09.06-.13,0-.13.06-.4.43-.06,0-.2.13-.44.47-.43.36-.51.5-.2.14ZM607.06,255h0l-.07,0,0,.62.09.08.07,0v-.33l0-.28Zm5.76-39.37-.19.06-.08.1,0,0,.21,0Zm.23.29.05,0,0-.2,0,0,.11-.08,0,0-.12,0-.05.08-.11.06,0,.07v.11Zm2.65-1.15,0-.15.1-.11-.35.09-.09.07,0,.05.05,0Zm16-11.81,0-.08-.06-.06-.16.14,0,.16h.07l.18,0Zm2.49-3.89.06-.15-.07-.09-.35-.19-.29,0v.18l.09.12.28.05.24.15Zm-.57.47.09,0,.16.15v-.09l-.08-.19-.12,0Zm-6.54,29-.11-.06-.08-.11-.11-.09-.09,0-.05.1,0,.42v.1l.07.12.1.11,0,.07v.08l0,.86,0,.19.08.24,0,.25v.29l.06.27.1.12h.16l.08,0,0,.23.15.17.05.25.08.09.12,0H628l.08-.08V232l0-.37.09-.23.1.14.14.1.2.05.17.1.09.16v.19l-.07.12-.52.39-.1.09-.06.12,0,.4v.4l.2-.18.23.05.17.27.15,0,.17.18.22.1h.3l.22-.11,0-.17.11-.1.31-.13.1,0,.11,0,.07,0,.59.36.25.31.33.29.06.07.17.28,0,.11v.11l.16.15.17-.11v-.3l-.1-.26,0-.1-.17-.21v-.1l0-.12v-.12l0-.15,0-.08.11,0,.11,0,.36.39.15.26.06.06.53.36.06.08,0,.11.16.3,0,.24,0,.12.19,0,.45.29.22.05h.14l.13,0h.11l.06.05-.12.22-.06.24.16.21.2.08.19-.46.06-.51-.08,0-.08,0-.22-.16-.17,0h-.18l.07-.17,0-.16-.1-.18-.11-.17-.18-.22-.1-.26.13-.11h.41l.12-.16-.08-.08-.18-.12-.08,0h-.11l-.41-.18-.1-.14-.11-.07-.09.07-.05.1.09.09,0,.2-.15.18-.26,0-.09-.09V234l0-.12v-.12l-.1-.26-.15-.24-.15-.15-.19-.08-.28-.09-.28,0-.23.1-.22.14-.1,0-.08.05v.08l.14.15,0,.11-.13,0,0,.1h-.14l-.13,0-.34-.17-.11-.1-.1-.12-.06-.12,0-.14-.18-.53,0-.21V232l.15-.1,0-.06,0-.06-.21-.45-.19-.48-.07-.11v-.12l.05-.1.09-.09.09-.18.2-.23.07-.09v-.12l0-.11,0-.11.09-.22.2-.16.22-.11.4-.14.34,0,.19-.34,0-.17.48-.79.11-.35.08-.13,0-.14-.1-.07-.12-.06,0-.13v-.15l0-.08-.18-.12-.06-.09-.11-.31,0-.19v-.2l.11-.65.11-.18.16-.16,0-.18,0-.17-.06-.13-.08-.09H632l-.16.24-.09.08-.19.08-.21,0-.27-.09-.24-.12-.67-.45-.31-.14h-.11l-.26,0-.12,0-.11,0-.23.11-.23.06-.06.29-.08.22-.11.21-.4,1.08,0,.22.09.22v.13l-.05.22,0,.38,0,.28-.22.4,0,.24,0,.25,0,.27.11.39,0,.13,0,.1-.08.09-.14,0h-.23l-.07,0-.17-.26Zm7.29-29.15,0-.11v-.13l-.1,0,0,0,.05.19Zm-2.84,23.79.15-.12-.08-.12-.12,0-.07.11v.05l-.09.15.07,0Zm.41-3.37-.11,0-.07.2h.05l0,0,.16-.21Zm-1.88,2.73,0,.08,0,.11.09.09,0-.15v-.13l-.06-.09Zm1.68-3.52h0l-.12.2,0,.1h.08l.12-.16Zm-23.68-2.31-.07-.08-.16,0-.1.1,0,.06h.29l.16.1.09-.11v0l0-.1Zm-17.09,41,0,0v.08l.18.13v-.05l0-.1Zm-100.92,3.81.1.07v-.19L490,261l-.16.1.07.09.12.1Zm-2.28,33.79-.13-.07-.3,0-.29.06-.15.2,0,.12.13.35.1.13.39.22.2,0,.3,0,.06-.12.06-.3-.19-.27ZM464.75,275.3l-.13-.14-.17-.12-.15,0v.09l.05.12Zm24.87-50-.2,0-.13,0-.25-.17-.21,0-.22.09-.07.06,0,.06-.16.13.36.26.19.19.25.06.85,0,.31-.15.31-.06.07-.08.14,0-.66-.28ZM501,209.55l-.33.31,0,.27,0,0,.13,0,.11-.09.16-.33.26-.18-.11-.36Zm-8.89,84h-.17l-.14.11-.07.18-.15.08-.07.09-.07.23v.15l-.1,0,0,.06.11.12.29,0,.26,0,.13-.1.05-.14.12-.08,0-.24-.09-.25Zm-26-18.2.05-.06,0-.22-.08-.3-.05,0-.09,0v.05l-.07.09h-.09l-.09,0h-.15l.32.19.15.19Zm1.3.85h-.05l-.08-.13-.11.1.09.18,0,.1,0,.13,0,.13.06.06h.13v-.12l.07-.14v0l0-.15Zm6.45,1.52h-.08l0,.1h-.13l0,.26.27.06v-.08l0-.11Zm1.34,75.9-.08-.09-.18.11.07.14.13.07h.15l0-.12Zm38.2,10.13-.15-.07-.18,0-.08,0-.17.14-.3,0-.17,0-.28.14-.18.06-.22,0h-.11l-.15,0-.26-.22.07-.15.29,0,.15,0-.11-.13,0-.26h-.12l-.49.32-.1,0-.16,0-.27-.1,0-.17.15-.2,0-.1.08-.1v-.25l-.11,0,.05-.08v-.12l-.05-.06h-.11l-.1.08-.13.21-.16.18v.2l-.09.18-.08.18,0,.11.05.09.07,0,.06.07-.15.06,0,.1.08.15-.06.18.08.11v.14l-.06.14-.09.13-.05.13,0,.13.06.14.11,0h.25l.21-.12.16-.32.25.05.16.07.25.17.27.11.14,0,.15-.09.11,0,0,.09.19.13.32.07h.1l.18-.09,0-.09.09-.07.1,0-.11-.15-.16-.07h-.2l0,.18-.16,0-.26-.12-.15-.15-.06-.12,0-.05.12,0,.09,0,.1-.07,0-.11h.16l.36,0,.14.09.12.15.08,0h.1l0-.05,0-.13.21-.08.11-.16.06-.17,0-.17Zm15.13-115.86,0,0,0,0,0,0h0l0,0v0l0,0Zm18.11-7.28-.06-.08-.12-.34-.08-.13,0-.06,0-.06,0-.09-.42-.73,0-.06V239l-.07-.46-.07-.09-.12,0-.1-.05v-.22l0-.11-.34-.59-.07-.05-.09,0,0-.12,0-.12-.33-.62-.65-.62-.23-.34-.14,0h-.22l-.2,0,0,0,0,.1,0,.1.13.11.43.11.26.15.08.15h-.13l-.11,0-.12-.07-.12-.1-.22-.1,0,.26v.26l-.06.24-.09.23-.31.39v.43l-.23.56-.06.22-.09.52-.06.06-.06-.07,0-.5-.1.22,0,.24.07.57,0,.44,0,1.57.14.52.09.46.15.45.33.32.47.16.47,0,.53-.19.72-.18.16-.06.56-.34.17-.17.13-.2.13-.29.11-.29,0-.24,0-.55ZM528.86,246v0l0,0v-.07h0l0,0,0,0,0,.05,0,0v0h0ZM510.77,363.53h.13l.08-.06.17-.21,0-.16-.21,0h-.2l-.05.1,0,.1.06.1v.11Zm31.84-126.61.1.09.17.12,0-.16,0,0-.23-.1ZM519,375l-.41-.11-.16-.1h-.11v0l.06.1.1,0,.14.33.1.12.25,0,.26-.11h.18l.09,0-.21-.08Zm9.5-143.7,0,.06v0h0l0,0v-.09h0Zm-3.65,38,0,0,.05.1v.07l0,.06v.06l-.05.05,0-.19-.11-.09h0l.11.15,0,.21.08,0,.06-.07,0-.17v-.07Zm3.79-31.82,0,.06,0,0,0,0v.05h0l0,0,0-.05v0h0ZM344.54,215.63h-.27v.06l.09.16.13,0,.12-.25Zm.54,1.26L345,217l-.06.15,0,0,.09,0v-.09l.08,0,0,0,0-.05,0,0Zm-.36-.37v-.25l-.1,0-.12.14,0,.1,0,.06.1,0Zm-.06.64-.06-.07,0,0-.05.17,0,0,0,.06.12,0,0-.06v-.16Zm.16,39.46h-.05l0,.05,0,.07v0l0,0h.07l.11,0,0,0-.05-.05Zm6.24-31.56-.14-.08h-.5l-.21.09.7.25.12.14,0-.05.07-.2,0-.1Zm-5.74-8.63.11,0,0,0,.05,0,.09,0,0-.13-.12,0Zm.33-35.74.25.34.25,0,.1-.06.18-.19.21-.49.47-.3v-.11h-.41l-.43.29-.09,0-.41,0-.19,0-.13.07.07.11Zm-.87-.17-.09,0-.06.05-.09.13.09.18.1.07h.09l.18-.13v-.06l-.05-.1Zm294.48,83.27-.06.27v.22l.14,0,.13-.05.08-.21,0-.15.08-.06-.2-.08Zm-295-46.74h0l-.09.05-.07.07h0l-.09,0v0l.07.11h.17l.09-.05,0-.07,0-.16Zm119.55,56.09h-.09l0,0-.06.08-.11.66.15.2.1,0,.18.13,0,0,.06-.08L464,274l-.12-.3.06-.42Zm13.87,8.57-.13-.44,0-.46v-1l-.14-1-.17-.66,0-.42-.11-.22-.14-.2-.31-.54-.09-.22-.08-.22-.11-.18-.22-.25-.06-.11,0-.14-.09-.1h-.12l-.39.47-.24.24-.07,0-.19-.05,0,.06.12.3.06.24,0,.25,0,.2-.29.67-.39.31-.24.07-.23.12-.15.2-.19.16-.14,0-.19-.19-.09-.06-.13,0-.09.09-.1.14,0,.15,0,.11.17.23,0,0-.06,0v.13l-.43.6,0,.38.3.29-.19-.07-.2,0-.13.08-.1.13-.19.24-.16.26-.1,0-.1,0,0-.15.08-.1.05-.11v-.12l0-.11,0,0-.19.12-.08.11-.1.24-.18.2-.24.21v.2l.05.12v.13l-.08.15-.09,0-.06,0v-.06l-.05-.38-.1-.06h-.13l-.45.29-.44.24-.2.17-.13.23,0,.11,0,.1.19.19-.09.06-.1,0-.08,0-.23-.35-.06,0-.33.06-.25,0H468l-.09.05-.05.09,0,.13-.06.09-.12,0h-.12l-.3.08-.08-.06-.06-.11-.1,0-.12.06-.27.22-.19.1-.1,0h-.91l-.07.05,0,.09,0,.26v.45l0,.17-1,1.38-.1.4.08.23,0,.25,0,.27v.76l.11.47.12.25.09.27V289l-.05.36v.09l.27.51.11.28v.26l-.07.26-.1.52-.06.24-.09.23-.26.49-.29.33-.12.23-.36.42-.14.44-.14.22L463,294l-.26.06-.18.13-.18.61-.06.1-.09.09-.07.1,0,.14-.1.16-.07.25-.06.49v.23l.08.68,0,.21.07.22.32.45.08.23,0,.27.11.25,0,.24-.14.21-.06.24v.52l0,.28v.42l0,.13.3.42.11.23,0,.32.09.18,0,.15,0,.14.08.07.36.23.16.25.12.08.14,0,.46.11.23.09.59.5.19.08.62,0,.21-.06.19-.12.5-.24.51-.2.48-.09.49,0,.22,0,.45-.18.22-.14.32-.4.24-.47.1-.25.07-.27.1-.21.13-.2.31-.52.08-.25.06-.27L471,299l.18-.52.15-.52.15-.59.07-.16.59-1.14.45-1,.32-.94.35-.92.26-.52.22-.53.32-.88.37-.86.35-.67.23-.51.17-.43.31-.91.07-.48-.06-.7,0-.22.23-.42.13-.21.09-.07.22-.08.06-.07,0-.12v-.12l.18-.19.07-.25,0-.49-.08-.2-.09-.09-.05-.1,0-.31v-.25l0-.25,0-.27,0-.1.18-.13h.22l.08.05.05.25.16.49.14.21.18.15h.05l.12-.11.06-.09.28-.46.2-.5-.05-.5Zm-17-28.19-.24.14-.05.11h.07l.27-.1,0,0v0l0,0Zm15.77,32.32-.09.32.26-.37.21-.43-.08,0Zm-30.36,66.79-.21-.05-.08.05-.14.15,0,.1.42.08.09,0,.07-.1,0-.05ZM394.53,237.35l.07-.19.36-.45,0-.15-.07-.12-.32,0h0l-.12,0-.09.13-.05.18-.11.19-.06,0-.18,0,0,.06,0,.18,0,.08.05.06.37.13h.1Zm187.09-6v0l0,0,0,.18v.18l.09.18,0-.34,0-.12Zm-190.08,3.25-.2.26.13,0,.21-.05.06-.13-.11,0ZM389.63,243l-.21.1-.11.12,0,.11,0,.23,0,.1.08.05.22-.13.21-.24v-.17l-.12-.17Zm1.89-2.5,0,0-.06,0-.13.15,0,.08.08.06.08-.05.07-.13v-.06Zm-30.07,34.25-.15.09,0,.1h.19l.07-.05v-.12ZM582.34,263.5l-.15-.23-.08-.24-.13-.11h-.1l0,.05v.13l-.06.1.13.2.16.06.32.21v-.05Zm.74.88-.37-.38-.05,0,0,.14v0l.06.09,0,.25,0,.1.24,0,.16-.15Zm3.72,5.68h-.09l-.1.07,0,.08.29.28h.17l.09-.15-.06-.08Zm-5.6-8.15-.14-.25,0-.05,0-.07,0-.09-.06-.21-.2-.4,0-.21-.12-.09-.41.08-.19.46,0,.13.35.6V262l.09.11.39.28h.19l.23-.07v-.23Zm-13.7-52,0-.16,0-.06-.15-.12-.19,0,0,.19.07.17v.12l.16.18,0,.21v.26l-.39.53.18,0,.37,0,.12-.15.11-.49,0-.2-.24-.36Zm12.3,48.69-.08-.05h-.11l.18.48,0,.17-.12.14,0,.17-.07.13.18.11.13-.09.15-.3.07-.24-.11-.2Zm-1.12-2.49-.17-.09-.41-.61-.25-.17,0,0-.05.09-.18.11-.34,0,.41.52.13.28.06.23.12,0,.28.24.13.41v.09l.28.09.13-.12.09-.52.08-.18-.06-.1Zm-2.57-2.92,0-.11-.47-.34-.1-.13,0,0-.21-.1-.2-.24-.18-.07-.08.12-.12,0,0,.13.14.23.14,0,.12.09.17,0,.53.39.09.12.12.06h.14v-.12Zm17.08,17.93.1,0,.34.29.06.08,0,.11.08.08.11,0h.15l.13-.2,0-.08.25-1.36,0-.45,0-.27v-.22l0-.81,0-.08.22-.48,0-.1-.07-.12-.08-.11v-.24l.11-.32,0-.09.3-.28.06-.09v-.11l0-.12-.27-.47-.59-.86-.17-.14-.2-.12-.22-.07-.54,0-.12,0-.11,0-.09,0-.32.29-.08.05h-.1l0-.11.05-.23,0-.09.27-.19.08-.09,0-.13,0-.16-.11-.12-.23-.12-.21-.16-.09-.22,0-.24-.07-.21,0-.49,0-.24-.06-.37,0-.07h-.34l-.28-.09-.24-.1-.44-.23-.29-.21-.08-.09-.17-.38v-.09l.18-.13,0-.1-.18-.13.09-.18-.06-.06,0-.1.36-.23.25-.08.18-.12-.08-.27-.12-.25-.18-.22-.2-.2-.13-.07-.15,0-.13,0-.36.16-.24.12-.23.1-.24.05-.48,0,.5-.13.48-.21.13-.14-.06-.19-.15-.19-.2-.12-.58-.11-.2-.08-.15-.14-.29-.33,0-.06,0-.26-.07-.24-.11-.22-.15-.18-.45-.41-.21-.1-.22,0-.2-.06-.14-.15-.08-.27-.1-.27-.14-.2-.34-.34-.22-.1-.13,0-.11.07,0,.1v.11l.11.19V255l-.14-.1-.25-.29-.17,0-.16-.12-.12-.15-.11-.16-.09-.17-.08-.12-.34-.4-.2-.32-.09-.22-.12-.2-.33-.43-.42-.29-.72-.62-.56-.31-.18-.11-.14-.17,0-.11,0-.09-.26-.16-.45-.24-.12-.21.09-.26,0-.2-.43-.49,0-.05-.05-.25-.11-.22-.39-.36-.23-.29-.07-.08-.1-.05-.1,0h-.54l-.22-.06-.23-.1-.26,0-.48.07-.26,0-.49-.11-.24-.08-.21-.13-.36-.37-.2-.15-.22-.08-.23-.05-.26,0-.24.05-.11,0,0,.1,0,.11V247l-.06.13,0,.13.31.66.09.23.11.23.16.22.78.88.48.43.15.19.25.37.16.12.56.16.18.13.15.17.4.65.11.19.12.24.15.22.39.3,0,.13,0,.23v.37l.06.29.18.17.26.06.17.07.16.1.95.68.05.08.2.35.16.44.22,1,.2.73.07.48.08.23.15.18.19.14.53.26.14.13.09.17.25.59.13.19.17.17.13.17.38.54,0,.06.14.58.16.42.66,1.36,0,.43.06.22.1.21.32.52.17.17.2.15.11.18.09.19.29.58.14.17.33.3.6.5.12.17.33.63.31.41.74.71.44.3.19.18.18.2.15.11.72.51.12.1.44.67.16.18.18.16.23.34.22.25.23.23h.06l.11,0v-.15l-.09-.37,0-.15,0-.1.58.38.18.11.12,0,.1,0Zm-15.29-17V254l-.07-.11-.08,0-.2,0-.1,0,.23.14.2.23Zm4-19.88h-.3l0,.16v.07l.06.25h.06l.13.07.08-.42Zm-.1-1.67,0-.11-.16-.08,0,.14,0,.21-.07.37h0l.1,0,.18-.24,0-.2h-.06Zm.3,1.37-.16-.12-.11-.17,0,0,0,.34h.08l.13,0ZM581,239.89v-.13H581l0,.07,0,.12.12,0Zm.12-2H581l-.18.14-.06.19h0l.11-.11.11,0,.11-.1Zm-.48-13.07.06-.3,0-.06v-.07l0-.06-.08,0h0l-.11.07v.33l.11.15Zm.49,8.42,0,0h-.07l0,0,0,.1.07.15.07,0h0l0-.08v-.07l0-.08Zm-6.81,13,0-.06V246l-.16-.05-.08,0,0,0,.12.2Zm.36-21,0,0,.08,0,0,0,.08-.15,0-.08Zm7,10.73,0,0h.09v-.26Zm1.86,29.33,0-.15,0-.08-.4-.49h-.09l0,.07,0,.35.11.15.14.13,0,.09v.15l.23.22-.06-.31,0-.08Zm-14.24-30.13-.13.06-.17.14,0,.08,0,.21,0,.22.2.07.07-.07.17-.3,0-.2Zm.46-1.14-.09-.11,0,.17-.08.08.09.06.11,0V234Zm.8-2.19v-.66l-.15-.2.06-.07.1-.17.11-.05.09-.13.06-.14,0-.06-.1-.18.13-.13v-.3h-.07l-.23.1-.16.26,0,.26-.13.39,0,.08-.07.26-.12.11,0,.08,0,.24-.07.11,0,.15,0,.38,0,0,.08.07v.17h-.19l0,.05-.09.16,0,.2-.06.13-.08,0-.08.12.05.09v.24l.16.39.06.05.06,0,.1-.21,0-.26.09-.22v-.09l-.06-.05,0-.12.09-.08,0-.09.16-.2,0-.09V232l.15,0Zm-.68-19.59h0l-.11,0v.29l0,.09,0,.06h.13l0-.21v-.16Zm-.32,26.39-.05,0-.06.05v.09l0,.07h.09l0-.08,0-.14Zm-1.31-28.25-.15.89.24-.13.07-.23,0-.18ZM570.1,231l0,0h0l0,0v.29l.08-.13Zm-2.65-21.48,0-.09-.11-.17-.1,0,0,.09.08.07Zm1.72,1.07-.07-.19-.05-.09,0,0-.08.26.1.22.08.07.1-.06v-.09Zm5.21,14-.12.15-.23.16,0,.31.15-.2.2-.14.12-.25,0-.13Zm-4.56-12.62,0-.1h0l0,.08-.05.16,0,.14.09-.17ZM573,219l.06-.07.07-.19v-.12l-.26-.07-.27,0,.15.25.2.19Zm-1.83,23.55-.08.06-.09,0,0,.08.08.13.21-.18Zm-.2-1.68-.08,0-.09.1v.13l0,.08v.1h0l.1-.07,0-.22Zm.44,2.06-.29.09-.07.09v.25l.1,0,.21.54.14-.16.1-.29-.11-.49Zm-1.32-2.42,0,0,0,.1.09.13.12,0-.06-.08Zm2.72-23.82,0-.3-.16-.13v.15l.05.16ZM570.5,232.9l-.09.06.05.09.16.14-.07-.29Zm1.34-16.41,0-.2-.08-.27-.09-.1v.19l.1.29Zm-1.2,24.79-.09,0,0,.09.06.09,0,.09h.16v0l0-.1Zm-27.52-5.49-.12-.11,0-.13h0l0,0,0,0,0,.06.09.15Zm101.33,31.74.26.21.42.12.08.08.24,0,.08-.07.12-.05.07,0,.1,0-.05-.06,0-.09,0,0,.06-.17-.12-.12v-.12h-.08l-.25.07-.19,0-.24,0-.55.18Zm-.31-3.67.07.13h.09v-.1l-.45-.42.11.24Zm6.44-68.68v.08l.17-.07L651,195l0-.34-.06-.12-.33,0,0,.12-.11.27.07.08v0l-.13.1Zm.71,4.58.25,0,.12-.23-.06,0-.29-.2-.24.16.1.28Zm-5.43,64.18,0,.1-.11.11.21.12.32,0,.1.21h0l.07-.06.17-.05v.19l.1.12.3,0,0-.15-.11-.1h-.08l-.08,0-.13-.24-.11-.08,0-.13h.13l.23.32.18.1.09.15.12.06.19-.05.17.05.08.06h.08l.18-.14-.07-.11,0-.07-.07-.12-.51-.26h-.08l-.35-.11-.2,0h-.29l-.07,0-.1,0-.15.07-.14-.06Zm-5.54,5.58.18,0,.12-.17-.1,0-.23.09Zm12-70.33.15-.24.08-.33,0-.09,0,0-.06,0-.16.27,0,.21-.17.29v.13h.19Zm-4,5.06,0-.07-.13-.05.07.21.2.06v-.05Zm-9.69,74.68.1,0,0,0v-.09l-.22-.06v.13l-.05.15Zm1.16,1.41.21-.16,0-.08h-.21l-.35-.11-.09,0,.07.15Zm6.63-15.48.13-.11-.05-.07-.09-.05h0l-.07,0h-.08l-.13.07.21.11Zm-1,16.12.19-.05.11-.14.28-.05.29-.15-.18,0-.14-.07-.41.33Zm-.21,7.44.74-.39.21-.25.16,0,0-.16.16-.14,0-.05-.1-.07-.06-.15-.23-.16-.1-.13-.12.1-.16,0-.25.13h-.08l-.15-.08-.34.13-.28,0-.11-.16-.08-.06-.18-.22h-.05l0,0,0,.05.06.19v.3l.16.37.26.28Zm-1.68-.34L644,288l.38.16.21,0v-.09l0-.08-.07-.08-.17-.06,0-.19-.08-.17v-.19l-.06-.18h-.09l-.1,0-.22.23.06.14v.24l-.12.07-.14,0-.08.22.06.08ZM655,193h.11l.42-.15.2,0h.08l0,.23.08.07.14,0v.09l0,.1-.06.07,0,.12-.11.15.12.13v.2l.22,0,.22.05-.16.31.11,0,.23.07h.13l.24-.19.11-.32.07-.06.11,0,.1-.12.23-.37.11-.25.75-.29h.11l.34.08.21.12.32.4.11.1.06-.23.1-.2.15-.19.16-.18.38-.25.41-.18-.13-.07.06-.19-.08-.13,0-.14,0-.42h-.3l-.28-.12-.27-.17-.29-.11h-.27l-.26.08-.26.14h-.11l-.1,0,.06.26,0,.15-.11.11-.23.08-.25,0-.11,0-.23.06h-.12l-.16-.17-.11-.22-.11,0-.21.15-.12.06-.09.19-.08.12,0,.14-.13.22-.23.12-.38.25-.17.08-.37.15Zm-9,72.6-.08.07.9-.06.11-.06,0-.1-.2,0v.1h-.19l-.18,0-.09,0h-.09l0,0h-.09l-.06,0Zm2.18-7.95v0l0,0,0,0,0,0v0h.08ZM640,263.28v-.16l0-.15,0,0-.06.21,0,0,.06.09Zm6.58,2.78.05.14.07.18.12.14.25.07.08,0,.11-.25.09-.45-.07-.11-.2,0-.08-.06-.47.11,0,.05.07.14Zm3.33-69.76,0,.17.06,0,.18-.18v-.11Zm-20.22,76.15-.07.23-.05.11,0,.1-.07.26v.06l-.08.11-.14.13-.07.1v.09l-.13.12v.11l.1.26h.09l.1-.05.16.08.08-.06.16-.24v-.08l.06-.08.08-.06,0,0,.12.06.16,0,.15-.11,0-.13-.1-.1-.19-.16H630l-.09,0v-.1l0-.36.07-.1,0-.16.09-.17h.06l0,0,0,0,0,0,.1.18,0-.12,0-.44-.21-.27,0-.09h-.08l-.19.09-.23.34Zm.48,11.14-.07-.09-.13.06-.17.18v.15l.2-.06v-.15l.19-.06Zm2.05-16.89-.12-.17,0,.08,0,.16.13,0ZM632,275l-.05-.15-.09,0,0,.12.07.06.06.12Zm-.65,5.09h.18l.09.23.17,0,.08-.07.1-.21.14-.12,0-.2,0-.05,0,0H632l-.29.31,0,0-.05-.08h-.12l-.09.07ZM628.71,285l.19,0L629,285l.45-.11.21-.21.24-.08v-.06l0-.12v-.2h0l0,0-.16.06-.27.23-.18.11-.46.09-.06.1V285Zm1.34-14.18v.06l0,.19.16.17.14,0,.22-.24,0-.14-.06-.1-.39-.06Zm25.72-79,.11-.07.08-.07,0,0-.24,0-.1-.1h-.11l0,0v.13h.12Zm-15.86,72.73-.07.19,0,.14H640l.27-.05,0,0,0,.1.18.12.18-.06.08-.07,0-.11,0-.07-.07-.07-.3,0-.1-.18.18-.27-.21-.33-.08,0-.08,0-.09.14-.16-.16h-.1v.11l-.07.14v.08l.15.22Zm-10.48,15.34-.17.09-.07.06,0,.12.12,0,.07-.12.12-.09.26,0,0,0-.1,0Zm1.33-13.72-.07,0,0,.06,0,.08v.09l.16-.16Zm1.51,13.87.13.07,1.36-.08.08-.05v-.25l-.15-.07-.26,0-.36,0h-.16l-.16.06,0-.13-.14,0-.17.08-.09.14.06.09-.16.18Zm3.89-22.9-.07.11,0,.25,0-.05v-.11l.1-.11,0,0Zm-.85,22,0,.21h.06l.27-.11.18,0h.15l.12.07.3,0,.32.09.11-.16.13-.12.25-.09h.25V279l0-.1-.16,0-.22-.21-.31.05-.23.13-.31,0-.26,0-.23-.09-.29.29Zm-.68.77.14.08.17-.34-.06,0-.08.05Zm4.92-15.18-.07-.28-.1,0-.13.28,0,0,.22.07,0,0ZM636.76,256l0,0,0-.09-.11-.2-.07-.22-.14-.14,0,.1,0,.1.06.1,0,.09,0,.18Zm-1.51,10.8,0-.14,0,0-.1-.05H635v-.14l-.09-.05h0l-.07.08h-.07l-.19-.09-.62-.19-.37,0-.14,0-.08.06-.14.34.16.31.22,0,.25-.05.42-.14.34.13.28-.09Zm.16-.06.07.09v.11h.84l.25,0,.69-.06.1-.07-.63-.12h-.64l-.41-.06h-.16Zm2.23-18,0-.35-.13-.12-.08.22,0,.08.11.28Zm-.95,19.38,0-.17-.15-.42.06-.32-.06-.08h-.08l-.12.12,0,.08.06.31.06.09.06.32.12.12Zm50.93-97.91-.43.08,0,0,0,.14.14.08.08-.07.39-.12,0-.07ZM687,287v-.05l0-.13v-.15l-.17-.21-.09,0-.16,0-.28-.2h-.06l-.13,0,0,.05v.1l.14.23,0,.05-.13.11.29,0,.2.07.28,0,.07,0V287Zm-1.15-.4,0-.05.06-.2v-.1l-.07-.18-.22-.14-.16.1-.07.21.32.31Zm1,2.42,0-.16,0,0h-.15l0,.1,0,0Zm-56.77-9.18.06-.18-.24-.09-.18,0-.05,0-.17.12,0,.11.57.05ZM685.69,171h-.13v0l0,0v.06h.11v0Zm.92-.35,0,0h-.08l-.06,0,0,0h0l.09,0ZM680,277.61l.11-.1,0-.27-.14-.14-.25.12,0,.1,0,.08.17.21Zm6.47-109.16-.19,0-.4.55-.11.05-.09.13-.18.15-.06.14-.19.17-.45.29-.08.15v.18l.23.2.1-.44.39-.21.27-.25.07-.14.44-.33.13,0,.26,0,.3-.21h.17l.12-.15h-.44Zm-5.23,109.44,0,.22.18.26.19.1,0,.1h.09l.08-.13.05-.23,0-.08-.42-.28h-.11Zm.59-6.7-.05.09h-.12l.07,0,.15,0,.08-.1-.08-.08Zm5.8,13.22-.09,0-.1.15.16.11v.05l0,.1-.09.17.15.17,0-.15.09-.34,0-.1,0-.21Zm-39.29-95.84-.19.17-.21.13.06.12.24.21.21-.13v-.5Zm-8.42,73.3V262h0l.08,0,.06-.08v-.1l0,0H640Zm2.29-3.53-.26.34,0,.44.07.11h.32l.21-.08.18-.25.17-.5-.16-.27h-.07l-.2,0Zm-2.35,3.14-.06,0,0,.07,0,.08.07,0,.07-.06,0-.12ZM653.29,183l-.07.06v.07l.11.08.1-.06,0-.12-.05-.06Zm-1.87,11.81.08-.07.1-.13-.2,0-.27.13,0,.07.07,0Zm-2.5-1.68V193l-.19.37-.08,0,0,.08.05.21.06,0,.08-.2.09,0,.07-.11-.06,0Zm-.64.66-.07,0h-.09l-.12,0-.08-.07,0,.28v.07l.07.06.11.06.1-.11.06,0h.15l0-.1Zm-.62,10.94-.09,0-.06.12v.26l.12.06.09,0,0-.11,0-.09ZM686,171.13h0l0,0,0,0-.08,0,0,0v0h0ZM657.39,268h-.23l-.81-.16v.05l0,.11.77.23.37.18.29.09.07.08.2,0,.28.06h.34l.18-.06.39,0-.15-.11-.2-.06-.68-.08-.38-.16Zm.47-1.32-.16-.22-.34-.34-.1,0-.2,0-.15-.1h-.16l-.43-.12V266l.08.14.1.08,0,0,.07,0,.23.21.22-.11.13.44,0,.19.14.13h.19l.21.11h.12l.29-.07.16-.15-.19-.07ZM670.64,191l-.06-.11h-.12V191l0,.07.1,0Zm-6.9,54.47.07-.08,0-.1-.08,0-.07.06-.07.11-.06.1v.05l.17-.15ZM654,268.56l-.05.12,0,.09.06,0,.11-.14-.06-.05H654Zm2.31-77.29,0,0,0-.11,0,0-.07.09-.08.08.18,0Zm3.53-.44.13-.1,0,0,0,0,0-.09-.09,0h-.3v.06l.09.07Zm1.49-.17-.13.05-.15.1-.18.23-.2.15,0,.12.09.09.19,0,.24-.18,0-.26.24-.32Zm-6,75.73-.14.08-.05.11.1.17.11.05.11,0,.07-.16-.08,0,0-.11Zm15.88-71.51.08-.08-.13-.09H671l0,0v.07l.09.08ZM656,248.76l-.09,0-.1.13,0,.18.05.17.13,0v-.11l.08-.13.08-.33v-.1l-.11.18Zm18.9-39.11-.08-.14-.07,0h0l.11.24h0ZM681,228.52l0,0-.15.2.11,0,.13-.11Zm-1,6.59v.07l0,.17.09-.1,0-.19h0Zm-2.37,40.49-.13.1-.05.13,0,.13.09.06.15,0,.08-.17,0-.14-.08-.08Zm2.59-40.67,0,0,.1,0v0l.07-.09,0-.1.08-.08h-.08l-.15.08Zm-1.13,2,.1-.09v0l-.07,0-.17,0v.06l0,0Zm-1.21,1.7h.08l.11-.31.36-.31-.06-.07-.07,0-.08,0-.11.2-.31.18,0,.24,0,.05Zm2.44-6.34.05,0h.11l0,0-.05,0h-.13Zm.55-5.08v-.06l0,0-.09,0v.12l0,.06ZM631,265l-.11,0-.39,0-.13,0-.18.2-.06.3.08.24.06.09.2-.14.28-.33.1-.07,0,.39-.14.12v.05l.09.08.1,0,0-.05.1-.28.11,0,.07.14h.17l.14-.1.09-.22,0-.11-.07-.06-.11,0-.2,0-.23.26-.07-.22.08-.1Zm53.09,48.44-.05.09.05,0h.06l.07,0,0-.17-.07-.05Zm-1.25-.35,0,.16.07-.06v-.09l0-.22-.08.05Zm-11.57-29.95.09.15.14.07.28.23.29.14,0-.09-.29-.26-.3-.12ZM346.35,170.55l.16-.13.15-.09-.16-.05-.31-.18-.26,0-.28-.14-.11.13,0,.1.11.11.3.16Zm334.9,137.92-.06.06,0,.09.05,0h0l0,0,0-.19Zm.14.51.06,0v0l-.07-.12,0-.15-.11.27.1,0Zm-24.45-11.87h0L657,297v-.19l-.07.09Zm34.52-10.93v-.05l-.08-.09-.09-.06-.12-.05-.07-.12h-.25l-.12,0-.11,0-.14.07.25.12.14.15v.08l.08,0,.22.12.12,0,.09,0v-.08l0,0Zm-3.73,1.36-.14,0-.15.15h-.09l-.07-.08,0-.09-.37-.32-.08-.14-.08-.06v.13l.14.23.05.19.11.07v.2l.44.17.11.08.17-.48Zm-1.35.76.11,0,.34-.14h-.38l-.26-.12-.35-.06-.17-.07-.15-.09-.24-.1-.25-.08-.09,0-.09-.07-.1-.17-.11-.15v-.13l.22-.05.13,0,.12,0,.06-.09-.07-.06-.22-.08-.22-.06-.58-.09-.12-.05-.3-.18-.12-.19.05-.23.12-.23,0-.23-.09-.09-.12-.05h-.09l-.65.1h-.23l-.19-.1-.1-.24-.12-.52-.07-.07-.33-.25,0-.1V284l0-.26-.08-.37-.05-.12-.37-.3-.23-.09-.19-.15-.35-.37-.16-.21-.18-.18-.21-.16-.13-.19-.14-.45-.26-.52,0-.09,0-.1.36-.21.49.08.73,0,.21,0,.08-.08,0-.23,0-.37,0-.12-.08-.06-.06-.07-.15-.23-.16-.21-.09-.09-.19-.12-.09,0h-.27l-.26-.05-.18-.06-1.26-.73-.4-.18-.42-.13-.3-.08-.21-.16.14-.45,0-.59,0-.14-.83-1-.26,0-.24-.09-.16-.16-.13-.19-.18-.2-.21-.16-.22-.1-.15-.17,0-.12-.1-.07-.1,0-.1,0h-.27l-.26,0-.11,0-.1-.05-.25-.2-.18-.18-.19-.11-.38-.32-.26-.1-.51-.12-.24,0-.22-.06-.72-.3-.68-.3-.45-.29-.1,0h-.1l-.1-.05-.3-.21-1-.52-.17-.05-.74-.07,0-.21-.09-.08-.1-.06-.68-.1-.09,0-.09-.08-.1-.06-.59,0-.16,0-.62-.33-.46-.27-.2-.14-.22-.11-.25-.08-.21-.11-.15-.17-.17-.12-1.09-.45-.2-.14-.19-.16-.22,0-.4.14-.51.21-.44.21-.12.07v.08l.09.2,0,.1-.22.15-.49.15-.48,0-.47.06-.08.11-.12.19-.09.21-.06.11-.5.27,0,.06-.16.27-.15.18-.51.36-.15.16-.17.14-.24,0-.25,0-.33-.07-.11,0-.23-.19-.06-.08-.06-.22,0-.26v-.15l-.16.06-.14,0-.07-.48v-.24l0-.11-.12-.06-.11,0-.08.09V270l-.09.24-.16-.45-.3-.67-.07-.24v-.23l0-.23v-.26l0-.26.09-.2.17-.17,0-.11.06-.23,0-.11-.1-.23-.13-.22-.08-.21.05-.21.06-.1-.17-.17-.1-.06-.26-.05h-.26l-.52-.07-.4-.22-.38-.28-.44-.23-.47-.16-.24,0h-.24l-.57.16-.1.07-.08.09-.18.08-.16.14-.19.08-.72.11-.35.08-.09,0,0,.08v.12l0,.11-.16.31-.08.11-.14.05-.09.06-.12.2v.08l.12.06.13,0h.13l.13,0,.11-.06.88.37.21.05.21,0,0,.32.09.46,0,.12.11.1.08.13.16.18.2.15h.2l.2,0,.27.07.47.09.21,0,.55-.08.27,0,.28,0,.46,0,.45-.14v.09l0,.07-.11.07-.14.14.22,0v.18l-.06,0h-.09l-.17,0-.1.19,0,.16-.09-.05-.09-.12-.16,0-.24-.07-.29-.15-.15,0h-.15l-.19.06-.31.33-.37.24-.15,0-.16-.1-.51-.13-.19,0-.35.14-.21,0,.07.14.08.13.1,0,.32.05.18.08.4.36.39.37.14.25.06.29-.26.3.06.26.07.25.06.13.09.11.1.09.25,0,.23,0h.11l.34-.31,0-.11,0-.12,0-.11.21-.22.08-.2,0-.22.17,0,.12-.1,0-.36,0-.11.07-.09.14-.07.16,0-.14.18-.19.19,0,.13,0,.35.08.21.16.16.1.07.09.09,0,.12.08.09.13,0,.13,0h.1l.07.07,0,.13.12.13.27-.05.15.09.16.07h.12l.22-.08h.11l.26.05h-.37l0,.11,0,.14.14.25.87.6h.33l.2,0,.55.12.53.15.24.13.22.15.37.13.45.28.48.19.13,0,.11,0,.11.06h.13l.11.07.1.09.09,0,.09-.06.05.15.89.57.07.12.09.08h.09l.07.05.12.13.15.09,0,.16,0,.17v.1l0,.07.08,0h.09l.18,0,.18,0-.21.09-.1.16.17.08.19,0-.14.09,0,.12.12.36.11.47.15.25.24.24.1.14,0,.22.16.14.11.15-.38,0-.18,0v.05l.22.3.25.15.42.17h.26l-.24.06h-.09l-.21-.07h-.11l-.14,0-.11.07.09.1.12.1.06.07.09.21.09.08.13.06.07.13,0,.1-.06.1-.11.3-.15.14-.09.26,0,.11-.07.1v.1l0,.1.09.05.32-.22.24-.1.13-.2v.13l0,.13.07.13.13.06.28,0L664,282l.3,0h.3l.22-.14.18-.2-.19.32-.1.11,0,.06,0,.06.19.23.75.73.17.23.15.26.24.28.27.25.41.32H667l.17-.08.24,0,.22.1.21.06.22,0h.53l.52,0,.13,0,.21.09.08,0,.19.16.23.07.46-.23.47-.19.32-.09.3-.14.05-.1,0-.22,0-.09-.13-.22-.16-.19-.22-.23-.09,0-.11,0-.43-.24-.46-.06-.21.06-.17-.14-.05-.13-.07-.11-.24,0,.15,0h.15l.05.09,0,.1.09.13.16,0,.19-.05.2,0,.2.05.2.07.39,0,.4-.06.35,0,.34-.05,0-.19-.07-.18,0-.06.07,0,.23.05.24.08h.22l-.08-.17.1,0h.11l-.35-.84-.17-.2.13.09.11.11.11.15.12.13.15.08.34.13.17,0,.1-.1.13-.07h0l.1,0h.06l0-.17.13-.05.18.06.18.08.18,0h.19l0,.21.07.1.11.06.22.07.23,0,.19.06.36.17.2,0,.34.05.09,0,.07.06.45.21.09.09.05.12.07.09.07.08.13.21.08.24.29.42.13.22.19.44.12.16.32.16h.12l.11-.05-.09.19,0,.19.17.3.09.09.46.36.21.21.17.26.1.26.11.1.11.12.2.14.24.05.33.11h.11l.1,0,.24.06.23.14.1,0h.33l.14,0,.12,0,.24.16.2.06.86.14.39.13.23,0,.21.05.15.1.22.2.07.07.06.13.26.11.36.1h.22l.12,0,.29-.14.07-.08-.08-.08-.23-.14-.15-.19.08-.06Zm-14.31-5v-.19l-.11,0-.43,0,.09.11.35.17Zm-10,17.21-.11.08,0,.09.08,0,.23,0v-.11l-.13-.12Zm-.38-18.25.51.11.11,0v-.11l-.19-.35h-.06l-.19,0-.12.14-.13.07v0Zm.69-1,.23-.37,0-.22-.11-.17-.19-.22-.06,0-.47-.06-.52.08-.24.1-.23.13-.17.14-.4.57-.36.66-.09.25.07.06.38,0,.24,0,.64.1.52-.24.17-.14.38-.26Zm-5.09,12.91,0-.13h0l-.1,0-.2-.1-.07-.09v-.1l.11-.25.06-.08.06,0,.14-.13,0-.09,0-.05,0,0-.1.18H657l-.08-.09,0-.17,0-.09-.1,0-.16.08-.11.15-.24.13-.05.3v.25l-.08.09-.12.07,0,0,.2,0,.39.12H657l.26.06ZM689.24,320l-.34.25,0,.24,0,.11-.12.2-.07.22,0,.4.08.11.06-.06,0-.14.15-.37.51-1,0-.18-.11-.15v-.39l-.05,0-.07,0-.09,0-.09.11.09,0,.1.21,0,.18Zm-26.71-20.76,0,0-.27.07-.35,0-.14.11-.15.2-.05.18,0,.06.17,0h.09l.15,0,.08-.1.08,0,.18-.18.11-.08h.29Zm6.33-12.64.06-.14-.09-.08-.12.14.09.13Zm-.05,1.26.18-.1-.14-.25-.15.09,0,.06,0,.13Zm.39-1.15-.07-.12H669l-.06.1,0,.08.13,0Zm16.2,29.58h-.06l-.07-.06-.18-.08-.06.14.28.48.1.09.05,0,.08-.08,0-.12-.08-.16,0-.14Zm4.19-149.06-.22.06-.28.28-.4.19-.21.22-.05.26-.36.22-.1.12-.09.27.44-.29.23,0,.24-.29.55-.36.11-.12,0-.15.08-.07.26.06.28-.06.2-.19.56-.33.33-.05.39-.15.4,0,.1-.1-.06-.13.06-.1v-.08l0-.06-.08-.05h-.13l-.21.08-.64.47-.4,0-.16,0-.16-.3-.09,0-.12.2,0,.19-.25.07ZM679,146.49l-.14.27-.15.26-.07.23-.06.93.1.25.16.17-.08.1-.1,0,.09.14.2.18.25.32.15.26.2.58,0,.61-.14.28-.12.3-.11.39v.31l.11.56v.26l-.16,1.73L679,155l-.12.33-.14.62-.11.27-.28.57v.13l0,.13.23.49.18.51,0,.73-.09.28-.17.24-.15.27-.13.29v.62l.05.28,0,.27-.08.28-.37.85-.12.62.12.73v.22l.05.19.1.15.12.12.17-.2.14-.22.25-.67.12-.26.13-.24.17-.21.22-.14.12,0,.12,0,.11.11.08.14.07,0,.45.07.48.12.13.23v.31l.08.35,0,.5.08-.1,0-.11,0-.15.05-.14.18-.33v-.11l0-.45-.08-.46-.07-.11-.13-.05h-.14l-.21,0-.07-.14-.15-.42-.13-.59-.12-.27-.06-.11-.08-.08-.13-.07-.1-.11-.14-.23-.16-.4,0-.14v-.39l.1-.48.19-.45.81-1.72.15-.48.18-.24.28-.15.31,0h.73l.18,0,.3.11.17.09.15.12.3.39.24.25.24.26.16.22.08.37.08.11,0-.48,0-.14-.15-.18-.34-.33-.16-.36-.12-.36,0-.33-.06-.32-.1-.3-.14-.64-.4-1.08-.12-.61-.26-2-.09-.09,0-.06v-.48l-.07-.13-.19-.19,0-.14,0-.31-.07-.29-.11-.27,0-.39.09-.73.08-.25.14-.09.08-.13.07-.23,0-.24,0-.73,0-.48,0-.24-.06-.23-.22-.55-.3-.89,0,0,0-.2,0-.21.1-.2,0-.16v-.15l-.39-.76-.13-.07-.07.16-.12.15-.14.06-.44,0,.24.39.38.54.06.21-.07.22-.1.22.1,0,0,.16-.27,0-.1.17.14.16-.14.24-.22.09h-.11l-.11,0L680,144l-.08,0-.37.08-.25.17-.07.14v.56l0,.28-.09.68Zm.19,124.28,0,.11h.06l.13-.07.13,0,.11-.06.36.11.29,0,.16,0,.13,0,.22-.17.07-.05.1,0h.12l0-.1,0,0h0v.05h0l-.68-.19-.43-.05-.21,0-.21,0-.14.08,0,.18-.16,0Zm19.47-141.52.3-.21,0-.08-.09-.12-.17.17-.26.11v.06l.08.09ZM686.8,271.83l-.26,0-.3.12,0,0,.12.06.11.19.12.13.15,0h.41l0-.06,0-.19v-.06l0-.09Zm8.5-107-.75.4-.38.35-.27.07-.51.59.19,0,.32-.11.43-.33.16-.09.22-.05.3-.19.1-.2.7-.45-.42-.05ZM674,171.59l-.23.16-.24.14-.21.1-.14,0-.13.05-.07.16-.09.33,0,.15V173l.1.23.25.24.06.08.08.39-.07.27-.15.25-.08.29,0,.14.05.12.09.11.13,0,.26-.06.25-.13.11-.12.14-.24.23-.22.15-.11.31.16.19.06.18,0,.17,0,.16-.1-.08-.11-.38-.36-.34-.37-.1,0h-.23l-.1,0-.21-.19-.17-.24,0-.1,0-.1.06-.15.09-.12.21-.16.14,0h.14l.19,0,.15.15.31.38.07.05.91-.44h.93l.47.3.83.6.8.41.41.27.25.07.09-.08L680,174l0-.16,0-.18.1-.25.14-.22.35-.42.41-.34.45-.3L682,172h.22l.44.13h.23l.38-.08h.24l.22-.06.22-.13.22-.1.25-.08h.12l.21,0,.07,0,.2-.23.22-.12.23-.09-.17,0h-.16l-.2.14-.2.1h-.11l-.2-.07-.11-.41-.1-.3-.13-.22-.06-.26.07-.26.29-.5.25-.37,0-.13v-.11l-.05,0-.53.38-.52.43-.16.09-.17,0-.25,0-.23-.07-.76-.44-.19-.05h-.12l-.26,0-.13-.05-.2-.24-.29-.16-.44-.34-.41-.39-.37-.37-.34-.4-.54-.83-.47-.55-.3-.31-.06-.12-.09-.07-.12.06-.11.1-.11,0-.24,0,0,.06v.07l-.14.23,0,.25.13.28.11.29.09.58-.09.59-.12.27-.14.26-.08.61-.11.25-.35.4-.12.26,0,.32v.33l-.1.25-.18.19-.11,0h-.22l-.38-.08-.27,0-.08,0-.39-.28-.2-.08-.2.07,0,.17,0,.17.16.31-.13.23Zm-1.9,1.81.05,0,.13-.33h-.13l-.14.06-.05.09,0,.19,0,0Zm3.92-7.89v-.3l-.11-.05h-.07v.26l.08.25Zm25.42-4.33,0-.12-.07,0-.15.17,0,0,.1,0Zm-25.14,4.92h.15l.07-.08,0-.07-.11-.15-.12,0-.13.09V166Zm14.16,106.75-.11-.07,0,.08V273h.05l.11,0Zm9.06-110.19-.15.07-.28.23-.39.35-.31,0v.06l0,.11h.13l.41-.25.64-.59Zm-7.71,89.19v.07h0l.07,0v0l-.06,0Zm0,21.92-.06-.2-.14,0-.06.07.07.16.12.11Zm-6.12-4.16-.08.11v.13l.24.24h0l.15.05v-.08l-.06-.26-.19-.15Zm2.19,3,.21.1.24,0,.2.12.67.48.11.15.23.12.42.42.17.14.18.12.1,0,.23.06.12,0,.16.17.15.19.45.71.12.3,0,.31,0,.15,0,.15v.14l.1.3.09.14.11.13.08.15.17-.14.13-.18.06-.18,0-.2.15-.17,0-.07v-.21l-.2-.32-1.24-1.18-.09-.13-.29-.25-.22-.29-.06-.07-.46-.19-.23-.23-.2-.16-.22-.14L689,273l-.18,0-.1-.17-.35-.24-.34-.26,0,.14,0,.14Zm-3.56,5.59-.24-.12-.26-.1-.45,0-.12,0-.12,0-.11,0h-.1l-.27-.1-.19.14,0,.25.12.21.22.1.23.07.19.09.18.12.57.46,0,0,.31-.07h.23l.2.11.22.3.11.07.2,0h.21l.7.05h.5l.09,0,.25-.14.25-.06.12-.06.11-.08.24-.07h.25l.1,0,.31-.14.22-.15.2-.17.08-.09.06-.09v-.13l.08-.07h.37l.35.08.22-.06.23-.13.16-.2-.12-.23-.16-.22v-.16l.08-.14h.32l.1,0,.09-.05.21-.25.12-.18,0-.21,0-.15,0-.14.12-.3-.22-.06-.21-.09-.15-.17-.33.2-.1,0-.1-.09-.09-.09-.24-.06h-.23l-.07.09,0,.1v.1l.19.61V277l0,.25-.21.1-.27,0h-.12l-.12,0-.42.28-.15.18L688,278l-.16.2-.11,0h-.12l-.13,0-.1.07h-.23l-.21-.15h-.24l-.23.11-.24,0-.14-.21-.05-.25,0-.25.07-.1.13-.12-.09-.12-.06,0-.1,0-.08.21-.16.63-.28.13-.31,0-.1,0-.33.09h-.25ZM691.15,252h0l0,0,.12,0,0,0V252l0,0h0l0,0h0l0,0Zm-.65,21.34h.06l0-.1-.05-.06-.19-.17-.05.05,0,.06ZM654,277.81l-.09-.11-.1,0,0,.17H654Zm-26.35,2.57.28,0h.31l.18-.08.19-.06.3,0,.08,0,.06-.06L629,280l.2-.11,0-.07.07,0,.11-.05,0-.37-.12-.1-.15,0-.12.06-.08.12.33.1-.15.16-.22.08-.31.08-.1.05-.1.07-.07.09,0,.11-.07.06-.24,0-.12,0-.39-.29-.09-.06-.11,0-.12,0-.1,0h-.37l-.16,0-.14.09h-.1l-.11,0-.15-.07-.18-.17-.32-.14-.22-.13-.25-.1-.28,0-.08,0-.2-.16-.13,0h-.13l-.12,0H624l-.26,0-.29.17-.29.09H623l-.09-.05,0,.1,0,.11-.07.09,0,.1v.16l.06.14.07.1,0,.11.22-.08.23-.06.41.13h.48l.47.13.4.2.11,0h.11l.11,0h.11l.28.07.2-.2h.18l.17,0,.07.08.06.09.18,0h.21l.55-.19Zm3.84,14h-.06l0,.05,0,.09.08.1v.08l.07,0,.09-.06,0-.09-.08-.1Zm-.8-14.4h.14l.2-.24.3,0-.06-.08-.1-.06-.14-.06-.38.18h0l-.09-.06h-.29v.05l.06,0,.1,0,0,.06-.28.15-.21.18,0,0h.16l.16.12,0,0,.12-.08.13.08.06,0,0,0v-.05l0,0Zm-12.62-1.1h0l.27-.35v-.08h-.25l-.12.05,0,.12,0,.14,0,.08Zm2.78.91.08,0,.06.07.07,0,.15,0,.06,0,.06-.08-.06-.09-.07-.06,0-.09,0-.21-.09-.26L621,279l-.17,0-.11,0-.1,0-.09.17,0-.05,0-.15-.11-.1-.13,0h-.12l-.13,0-.2.11h-.1l-.1-.09-.07-.11-.09-.25-.06-.06-.41-.1h-.11l-.24.09,0,.11,0,.16.09.13.33.27.07,0h.1l.07,0,.15.12.11.15-.06.12-.22,0-.29.14-.15-.06h-.18l-.18-.29-.07,0-.06-.06,0-.17-.11-.07h-.28l-.16,0-.27-.13-.12,0-.22.14-.24.11h-.14l-.11,0-.08.13,0,.13,0,.31-.08.17,0,.12,0,.11.17.1.17.07.21.07.21-.05.11-.06h.11l.13,0h.13l.25,0,.48-.14h.13l.14,0,.44-.13.13,0,.12,0,.1-.06.32-.25,0,.07,0,.22.05.09H620l.41-.06h.11l.16.08h.05l0-.05,0,0-.12,0,0-.08.16,0ZM656.23,297l0,.1h.16l.05-.17-.05,0h-.13Zm-16.61-27-.09,0,.08.1.2.07,0-.09-.09-.13Zm1-3.18.3.08.07,0,.13-.07v-.12l-.23-.16-.25-.22-.32-.18-.2-.08-.11,0-.3.19-.15.27v.11l.12.12.21.08.38-.05ZM634.26,282l.7-.19.22,0h.22l.28-.15.19-.08.22,0h.24l.23-.08.18-.15.2-.09.27,0,.26-.06.44-.24.4-.3-.08-.07-.08-.05-.32-.07-.19-.09-.13,0-.12.06-.24.08-.25.06h-.18l-.75,0-.55,0h-.21l-.89.11-.13,0-.31.09-.13.12-.21.29-.3.21-.4.16-.13.11-.16.06-.79.15-.48.21-.22.15-.37.31-.11.18-.08.27-.12.26,0,.1.23.15-.07.1-.09.07-.08.09,0,.12.08.09.21.09h.23l.24-.08.44-.2h.31l.22,0,.18-.12.21-.18.23-.14.3-.3.27-.18.09-.2.46-.3Zm-1.35,10.74-.1.07-.07.2.09.11L633,293V293l0-.16Zm-11.54-13.93.06,0v-.05l0-.08h0l-.09,0,0,.09v.08h.09Zm7-5.48,0,.13.13,0,0-.1.16.11.1,0H629l.13-.1.06-.13,0-.28.34-.4v-.53l-.07-.12-.09,0-.29.13-.33.1-.09.16.09.32v.15l-.16.12Zm40.36-89.93-.13,0,.05,0h.2l.33-.17.19-.37-.25,0,0-.11.12-.31v-.14l-.09,0-.35.29-.13.19,0,.19.16,0v0l-.09.17Zm-41.3,89.62,0,.1.08.21.24.25.13,0,.08-.45,0-.13-.08,0-.06-.14-.11,0-.1,0v.11l0,0Zm4.19-7.22,0-.1h0l-.09.06,0,.3.09.07h.14l0-.16-.06-.08Zm-10.73,15.88.07.11.08.08.56.18h.11l.12,0,.27.05.41.34.24.12.13.16.09.18.19.17.22.11.28.07.09.07.26-.1h.17l.12,0,.24-.19.07-.14-.09-.18-.17-.12-.12-.21-.15-.19-.1-.11-.12-.07h-.16l-.15,0-.07-.1v-.13l0-.08-.32-.21-.09-.1-.07-.11-.06-.05-.2.11-.12,0-.37-.09h-.4l-.26,0-.23,0-.33.09-.08.06-.08.09,0,.12Zm1.26-2,0-.07v-.07l0-.08h-.09l0,0,0,0-.05-.06,0,.05,0,.17-.09.09,0,.13,0,.18.08,0,.08,0,0-.14.09-.09Zm2.8-2.83,0-.12H625l-.23-.1v.2l.06,0Zm15.92-5.77.12,0,.06-.07v-.09l0-.07.05-.07,0-.09-.13,0-.32.13h-.21l-.2.15V271l.09.07.16-.11.13-.05h.08l0,0,0,.07ZM624.49,275v.32l0,.12.11-.34.09-.67,0-.14-.1-.27-.08.2,0,.45,0,.18Zm2.09,9-.2.08,0,0,.22.08.11,0,.21-.11,0-.17-.1,0h-.18Zm27.55-6.88,0-.14v-.1l-.06-.22.1-.13,0-.14,0-.14,0-.08-.08-.22-.11-.06,0-.08,0-.1,0-.11-.09,0h-.14l0,.17-.08.06-.26.31-.19-.09-.1.05,0,.08.23.2-.11.28v.08h-.31v.09l0,.06.17.18,0,.06.15.16.16.14.41.1,0-.06H654l.07-.07.07-.18Zm-.35,1.14.05.08,0,0,.12-.15,0-.1h-.08l-.08.06-.08.11Zm-3.18-2.55-.16.12-.05.21-.19.4.18-.16.12-.34.34-.3.14-.46-.06-.07,0,0ZM642,270.84v-.09l-.06-.05,0,0-.15-.05,0,0,.06.16h.08l.11,0Zm9.73,2-.28-.21,0,.13.33.21.24.1L652,273Zm-20.73.6v.13l.06.08.09,0,0-.21-.13-.06Zm23.14,4.13v.1h.05l.16-.22h-.07l-.07,0Zm3.2,10.16,0,0-.09.06-.2.29-.09.07v.1l.15-.12.33-.36.11-.37-.1,0,0,.16Zm-.16,9.7.11.11.09-.09,0-.09v-.16l-.1-.15-.06.12-.05,0,0,.1.09,0Zm-1-8.71.34-.12.09,0,.2-.13,0-.09-.06,0-.39.16Zm-3.36-11.07-.1,0-.15.61.06.13.21.18.27-.11.07-.06.14-.27.2-.17.05-.16,0-.14-.24-.14-.19-.16-.16-.19-.13-.12-.11,0,0,.14v.35l.14.08,0,0Zm-8.21-7,0,.1.08.09.5.25.19.11.43.29.45.26.15-.58,0-.08-.13-.25-.11,0-.1-.05-.05-.17,0-.17-.1-.21-.37-.32-.15,0H645l-.25,0-.45-.27-.31-.15-.12,0-.12,0h-.12l-.12.06-.2.12-.23.08H643l-.08-.1,0-.12-.14,0-.17,0h-.25l-.46-.07h-.77l-.19.13-.53.55,0,.13,0,.12v.12l-.06.2,0,0,.12-.12.14-.2,0-.07,0-.14.06-.1.11-.05.1,0,.1.07.09.08.26.39.09.05.11,0h.25l.09-.07.17-.19.11-.06.13-.05h.13l.07,0v.07l0,.06,0,0,.29.07.21.11.24.05.28.11.11,0v-.22H644l.45.05Zm5.25,5.63h0l.08.07.15-.19V276l-.12-.27,0,0,0-.08-.14,0,.08.28,0,.24ZM641.35,278l-.06-.05-.11,0-.11.1,0,0,.15.13.1,0v-.09l0-.05Zm.14-7.39,0,0-.09.2.36-.08-.05-.1Zm1.71,9,0,.06,0,.17.23.28.14,0,.14-.18v-.13l0-.15-.32-.08Zm4.55-1.07,0,.06.1,0,.12,0,.08.12.08.06,0-.1-.11-.21Zm-.1,0-.12-.07-.17,0-.07.06v.11l-.11.05-.09.13L647,279l-.14.16-.11,0-.08.06-.15.29,0,.11-.11,0,0,.2-.11.17.06.12,0,.16h.15l.25,0,0,0,0,0,0-.07.07-.16.21-.17.06-.09.18-.09.1-.11.17-.37-.07-.37.2-.13Zm1.13,8.79.05,0,.09-.27-.06-.14v-.22l0-.07-.09.12h-.12l.06.17-.06.09ZM782.53,112.86l-.22-.09-.74-.07.12-.1,0-.13-.07-.12-.1-.09-.13,0-.26.05-.26.08.14-.14.15-.09-.06-.08-.1,0-.72-.66-.44-.25-.42-.32-.39-.52-.44-.43-.48-.18h-.5l-.36-.12-.35-.15-.79-.19v.1l.85.27.12.09-.07.07h-.18l-.67-.11-.19-.07-.17-.16h-.1l-.08.08v.2l.07.17-.18.07-.18,0,0-.2,0-.16.23-.26.12,0,0,0-.68-.18-.19-.11-.19-.06-.43.1-1.17-.08-.22,0v.09l.07.06.18.05h.18l.11.14.26.09.13.14.08.24,0,.17,0,.17-.14.3-.17.11-.2.06.06.18.18.16.37.09.16.13.13.19-.14.23-.16.18-.12.07-.09.13-.07,0h-.08l.14-.51-.12-.32-.25,0-.12.07-.24.26H773l0-.1-.05-.2,0-.22,0-.16-.21-.18-.13-.07-.39-.07-.12,0,.14-.34.22-.19v-.46l-.08-.16-.11-.14-.08-.33,0-.39.14-.21.06-.28-.12-.21-.17-.12-.14.07-.13.12-.07,0h-.45l.31-.29v-.26l0-.16-.08-.14-.06-.27-3.11-1.8-.54-.24-.24-.19-.22-.1h-.24l-.15,0-.1-.07.11-.13.14,0-.3-.27-1.13-.73-.25-.1.17.18.84.57.12.15-.27.16-.28.06.09-.2,0-.24-.09-.14-.3-.17-.46-.16-.44-.19-.08-.18,0-.24.27.23.16.07-.29-.34-.36-.32-.82-.32-.15-.11-.23-.23-.08,0-.17,0-.42-.15-.37-.18v0l-.27-.13-1.16-1-.66-.18,0-.11,0-.14-.11-.1-.83-.3-1-.24-1.08-.51-1-.2-1-.53-.6-.38-.37-.16-.36-.06-1,.09-1.06-.07-1-.17-.77,0-.44-.1-.6-.25-.18.07-.19.36-.44-.19-.37-.23-.63-.23-1.21-.21-1.48-.4-.78-.13-.79-.1,0,.63-.07.29-.32.36-.35.22-.1.2.86.23.22.73.32.48.19.48,0,.32-1,.72-1,0-1,0-.37-.51-.17-.59-.73-.36-.72-.3-.34-.06-.24-.14-.1-.65-.13-.48-.2-.19-.18-.29-.19-.12-.47-.08-1.2.59-.41.17H735L733.25,97l-.44-.17-2.58-.29-.7-.46-.44-.09-.51.08h-.43l-.61-.13L727,96l-1.19,0-.44.1-.48.21-.89.53-.14.28,0,.36.14.5-.05.58-.16.18-.28.08-.32.58-.29.31-.52,0,.31-.22.29-.15.51-.86-.05-.28-.33-.23-.2-.23,0-.87-.07-.45v-.54l-.34-.21-1.26-.37-.58-.25-.19-.33.26-.42V94l.14-.27.22-.22.07-.32-.07-.43-.07-.31-.19-.38-.15-.18-.74-.59-1.3-.64-1.35-.5L716,89.93l-1.58-.2-1.63-.13-.64.17L711,89.69l-1.3.13-1.31.25-.69,0-1.39,0-.6,0-1.5-.67.5,0,.2-.06-.64-.79-.35-.28-.88-.4-.36-.06-.31,0-1.23.26-.31.13.63-.37.3-.16.32-.24-.06-.17-.06-.08-1.12-.06-.07,0-.22-.24-.11-.09-.72-.3-.54-.13-.56-.05-.08-.1.08-.11,0-.07.18-.11.49-.08,1.25,0,.3-.18,0-.21-.06-.17-.38-.41-.53-.32-1.08-.43-1.15-.32-2-.26-.36,0-.29.12-.51.32-1.17,1-.65.39-.58.19-1.29.1-.23-.07-.16-.19.07-.14.13-.14V85l-.05-.18,0-.09h.13l.29.15.28,0,.74-.14,0-.3-.18-.2.13-.41v-.11l.1-.07.09,0,.5.35h.17l.19,0-.52.7h.22l.63-.3.43-.3.47-.4.07-.23-.49-.06-3.24-.09-1.2.24-.36-.1-.24-.27h.4l.48-.12.41-.26.26,0,.65.07.52.16,1.59.17.06-.36-.34-.14-.76-.16-.46-.21-.58-.15-1.3-.26-.54-.17L688,81.6l-.33-.12-3-.32-1.11-.35-.41-.31-1-.21h-.2l-.08.07,0,.1.62.55v.34l.18.18-.79.2-.54.06-1.76-.15-.27.1-.73.47v.25l0,.4.53,0,.17-.16.24,0,1.06.15.11.07-.37.09-.35,0-.47.55-.6.13.39.13.34.18-.11.7.46.58.08.26-.73-.05-.66.12-.23,0-.39-.45-.45-.31-.23,0-.31.25-.42-.19h-.18l-.25.1-.15.14-.13.23-.15.11,0,.18.21.09.16,0,.44.16-.47,0-.13.08-.05.09-.36.1.11.13.15.11,0,.1-.12,0-.28-.13-.29-.19-.46-.38-.19-.25-.4-.24-1.42-.7-.64-.24-.43-.08-.68,0-.43.22-.71.05-.45.18-.25.26L667.71,85l-.84-.28-.52-.25-.58-.49-.56-.61-.08,0-.06-.13-.08-.28-.12-.22-.19.1-.55.61-.22.3-.32.58-.23.49-.05.21.08.2-.28.13-.31.36-.49.72-.29.25-.36.21-.23.06-.29,0-.24-.24-.09-.5-.15-.11-.21.26-.27,0-.51-.24-.5-.49-.53-.24L658,84.16l-.31-.42-.16-.33-.43-.07-.15-.25.23-.15.6-.09.47.06-.32-.45-.14-.27-.18-.16.05.29-.1.2-.17.15-.27.09L656,81.39l-.64-.67-.37-.26-.2-.42L655,80l.78.55.56.29.9.71h.73l.28-.27,0-.57L658,80.2l-.33-.22-1.17-.13-.26-.17.19,0h.26l.39-.1.65-.31.28-.09,0-.27-.41-.42-.7-.1-.16,0,.3-.17.25-.09.44-.26.12-.25h-.09l-.3,0-.08-.12.05-.19-.31-.2-.29-.14-.68-.07,0-.13,0-.11-.29-.11-.22-.17-.05-.14L655.6,76l-.44-.18-1.45-.37-.16.06-.27.35-.62.35-.44-.25-.09,0-.06-.1.12-.17.09-.16-.09-.13-.09,0-.31.1-.46,0-.21.1-.41.05.06-.28-1.64-.9-.51-.19-.32,0-.78.11-.18.07-.31.23-.62-.21-.16.11-.26.39v.41l.06.12,0,.22.22.36.23.29-.11,0h-.11l-.13.1-.14.22-.24.32-.3.16-.33-.07-.78-.31-.19,0-.06.18.46.19,0,.1-.13.05-.32,0-.58-.06-.47-.1-.28-.27-.28-.06-.82-.07-.75.08-.81-.24-1.41-.07-.35-.06-.65-.38-.95-.29-1.06-.59-.07-.49.2-.37.61,0,.39,0,0-.15-.07-.08-.86-.28-2.36-.22-1.66-.43L629.53,73l-1.11.29-1.58,0-.44.17-.72.06,0,.28.33.25.17,0,.19.11-.13.06-.13,0-.28.16-.18.15,0,.36-.1.34-.3.45-.24.2-.22.27.15.27.19.12.48.17.16.11-.1.07-.72-.15-.24-.3,0-.16,0-.24.26-.25.27-.15.25-.4.06-.38.07-.79-.43-.21-.23-.29.47-.46.13-.25-.17-.25-.26-.54-.29-.33-.19-.14-.2-.08.18.52-.2.24-.13.09-.83.08-.52,0-.71-.19-.81-.4-.19-.24-.12-.35.49-.11.2-.08-.43-.11-.43,0-.2.44-.27-.06-1.35-.38-.37.06-.47.22-.21.19-.25.3.07.23L618,72l.69.12.62,0,.71-.16.16.1.13.12-.21.15-.73.19-1.24.53-.46,0-.62-.18-.37.32-.16.07-1.09.15h-.46l-.16.17h-.28l-.31.06-.54.21-.8,0-.53-.09-1.32,0-.35.11-.23.16-.12.22-.21.19-.78.39-.64.13h-.54l.53-.21.63-.42,1.16-1.29h1l.25-.16.84-.78.22-.11,1,.06.92-.2,1.92-1.21.92-.16.64-.27.13-.15.11-.21-.08-.13,0-.13.82-.16.34-.33,1.1-.25.87-.38,1.21-.24.71-.41,1.57-.55,1.51-1,.29-.64-.33-.24-.41-.17-.21-.33-.17-.06-.44.17-.41-.72-.55-.44,0,0,.07,0,.27.08,1,.65.54.13.15.1.09.16-.08.23h.17l.11-.1.31-.44.3-.61v-.28l-.61.08-.21-.95-.11-.3-.17-.32-.38-.06-.21.07.15.11.16.19-.13.16-.11.08-.48.19h-.34l.14-.09.18-.21-.1-.25-.11-.14-.08-.71-.42-.14-.23-.13-.33,0-.42.15.16-.16.18-.24-.3-.34-.3-.24-.37-.1-.41-.31-.57-.2-1.32-.26-1,.12-1.26-.26h-1.52l-.59,0-.35-.11-.33.06-.18.23L615,60l-.39.18-.21,0-1-.13-.71.13-.28-.17-.56,0,0-.33.33,0,.19.07.67-.62.55-.35.53-.41-.29-.3-.68-.25h-.33l-.17.06-.75-.2-.4,0-.68.15-.23,0-.1-.44-.68,0-2.32-.22.27-.11,1.23-.09,1-.2.76-.44.69-.11-.14-.26-.17-.2-.37-.19-.82-.17-.7-.25-.29-.28-1.28-.44-.35,0-1,.36-.47-.08-.42,0-1.12.44L602,56.24l-.5.38-.24.3-.42.13-.21.38v.34l.17.19.16.34-.22.37-.18.23.14.13h.44l1,.29-.2.18-.58-.21-.51,0-.44-.24-1.1.12L598.5,59l-.75,0-1.46-.28-.14.12.32.24.25.21.72.53.31.17.4.47v.87l-.25.19-.29.27-.15,0-.2,0,.35-.18.21-.42L598,61l-.2-.23-.1,0-.1-.12-.76-.35-.41-.15L596,60l-.22-.1-.69.21-.31,0-.37.11-.22.17h-.52l-.09.2-.3.18-.29-.25-.31,0-.7.32-.8.11.09-.13.15-.27-.19-.08-1.21.24-.41.19-.18-.09.72-.44.21-.29-.31-.16-.7-.16-.45,0-.68,0-.94-.23-.16.17h-.25l-.58-.14-.55,0-.42.17-.58-.24h-.21l-.34.28-.26-.23-.27.39.05.3.19,0,.18,0,.1-.12.14-.05.45.27.15-.12.22-.08.22.17,1-.09-.18.18-1.11.17-2,.16-.42.09-1.17,0-.78.25-1-.08-1.71.11-1.27.46-.59-.1-1.23.33-.5.29-1.77.53-1-.34-.35.06-.19.23,0,.18.42,0,.29.1.37.19-.13.29-.83.6-.39.22-.45.12-.89-.62-.19.22-.13.11-.37-.07-.21.37.66.12.63.22.55.3.38.33.43.22.24.18-.7.1-.46-.39-.25-.15-.29,0-.45.07-.41.41.35.17.81.21.24.22,1,1.35.25.15.34.08.13.1-.43.18-.17.2-.39.32-1.56.07L569,69l-.13,0-.21.12-.13.1-.08.26.11.18.3.18,1.18.81-.09.07-.32-.16-.41-.25L568.8,70l-.57-.25,0-.18v-.27l0-.08.07-.13.58-.3.58-.12.71-.33.72-.37-.13-.16-.13-.12-.62-.07-1.28,0-.78.08-.36.32h-.77l-.69-.23-.68.11-1.57,0-.26.06L560,67.76h-.73l-1.85.15-.07.2.06.17-.3.22-.14.21,0,.27v.23l0,.31.1.28.25.16.24.12.15.31-.17.33-.23.38,0,.18.11.26.12.51,0,.13.53.42.38.15.62.08.43.13.6.28.18.12,0,.11.12.42.07.13.63.62.22.1.92.18.27.2.36.58,0,.13,0,.22-.06.19,0,.11-.16.16-.45.69-.29.63.34.46.45.88.12.36.14.48-.1.29-.1.17-.35.25-.43,0-.47.13,0,.21.06.24-.06.17-.06.06h-.25l-.21-.07-.17-.2-.16-.25.14-.24.4-.42.28-.62.1-.42,0-.45-.07-.31-.27-.24-.28,0-.31.17-.35.73-.45.51L560,80v.2l-.05.12,0-.43,0-.33.26-.38.16-.37,0-.27-.12-.46,0-.21.06-.14.15-.62.36-.09.92-.42.13-.11.3-.4.13-.14.17-.24-.25-.22-.24-.12-.47-.1H561l-1,.12-.86-.1-.3-.14-1.29-1-.07-.33-.09-.14-.13,0-.45-.25-1.06-.35-1-.69-2-.21-.53,0-.55.14-.52.35-.23.09h-.32l-.08.13-.07.19.16.15.61-.12.48.12.24.2.16.37L552,74l-.87.2-.47-.06-1-.7-.38-.14-.94,0-.64.26-.2,0,.12.32.19.58.18.34.24.19.87.47.49.18.74.43.46.07.43,0,.61.27.31.7.2.25.19.13.28.09.16,0,.18-.07h.41l-.16.18-.15,0-.87,0-.42-.11-.51-.25-.94-.76-1.23-.14-.15.19-.37-.31-1.3-.16-.77-.24-.81-.35-.06-.15,0-.2.3-.22.12-.14.11-.45-.48-.65.09-.55.26-.07.38-.7.21-.22.11-.07.11-.16-.08-.22-.09-.13-.09-.3,0-.21,0-.26-.23-.43-.19-.45-.43-.25-.43,0-.17.05-.17.09.2.41.2.37.09.28,0,.51-.07.6-.09.24-.14.2-.42.23-.67.26-.38.12-.79.1-.57.23-1.33,1.42.11.24.43.28.28.24.13.19.27.58,1.09,1.64,0,.28-.32.48-.61.59-.25.34-.63,1.33-.06.35.19.34.32.44.09.32-.3.78.11.21.29.12.8,0,.92.26.51-.05.79-.38.3,0,.9.13,1.3.53,1.38.68.27.22.38,0,.2,1,.21.55.08.38,0,.43-.27.06-.23,0-.2.1-.32.62-.06.34.1.57,1.17.35.82.2.57.08.1.06.06.1-.69,0-1.26,0-.44-.07-.19-.09-.19-.2-.36-.22-.14-.15-.3-.17.2-.56.13-1.32v-.55l-.22-.47-.73-.71-.24-.45-.28-.32-.29-.07-.44,0-1.09.18-1,.07-1.16.3-.23.32-.25.83.22.44.22.32.19.53,0,.31v.32l-.08.45-.21.24-1.32.89L542,90l-.28.83-.21.29-.61.42-.37.16-2,.7-.08.18-.18.59-.54.22h-.31l-.71-.35-.42-.12-.44-.06-1.68-.05-.72-.26-.57-.33-.59-.14-.43-.26-.09-.23-.09-.29-.07-.15-.07-.08.14-.09.29,0,1.09.13.29-.08.14.06.28.29.37.27.34,0,.3-.17h.1l.12,0-.26.13-.27.09-.07.07-.07.15.36.21.32.13.46-.07.27-.17.6-.24.41,0,0-.27-.18-.42-.15-.3.62.12.39-.2,1.71-1.9.76-.32.27-.23.2-.33.07-.38-.06-.42.05-.32.29-.38.45-.45.28-.16,0-.19-.05-.15-.7-.53-.75-.45-.26-.24-.19-.35-.07-.41,0-.27.13-.8.15-.37,0-1.13,0-1.41-.09-.38.21-.25.21-.2.11-.19.17-1.36v-.53l-.21-.72-1-.67-.39-.6,0-.2.07-.14.47-.19.33-.31.24-.46.47-.7.12-.25.35-1,.11-.54.11-.8-.35-.24-.38-.21-.7-.2h-.36l-.62-.38-.24-.06-1.76,0-1-.12-.59,0-.31,0-.19-.07,0-.13.11-.09,0-.08-.17,0-.47.07-.82,1-.51,1-.58,1.42-.33.59-.46.61-.69.46-.9.45-.58.2-.75.19-.36.51-.28.2.1.16.32-.06-.21.37-.21.22v.13l0,.18.25.1.67-.1.13.16.14.23-.15.88-.24.75,0,.27.09.19.07.24-.22.27-.16.08-.29-.06-.25.62-.09.37,0,.29.06.19.11.21.08-.15.08-.21.22-.12,1.13.49.3.22.46.22.13.22,0,.68.44.65.36.39.23.16.21,0,.35-.11.45,0-.28.46-.48.86-.73.73-.28.1-.42-.35-.86-.46-.17-.25-1-.7-.28-.46-.5-.1-.69-.26-.66-.37-.56-.19-.14-.21-.42-.18-.41-.14-.59-.29-.29.06.09-.28L523.1,81l-.81-.43-1.68-.64-1.49-.37-1.78-.21-1.54-.44h-.22l-.21.07-.56.43-.6.1-.24.21.31.51.58,1.31.42-.1.11.59-.27.31-.4.36-.32.18-.7,0-.54-.06-.09.35.13.35-.05.14-.07.17L513,84l-.06,0-.22.08h-.25l-.6-.23-.43-.19.08-.61.25-.25.16,0,.16-.09-.28-.43-.22-.18-.08-.28v-.12l-.28,0-1.2.23-.26.27-.12-.21-1.58.77-.68.26-.45-.08-.59-.23-.71-.07-.47-.13-.25,0-.54.18h-.53l-.58.27-.5.34-.18.6-.3,0-.3-.34-.17-.09-.18.06H501l-.28.1-.11,0-.82-.16h-.23l-.29-.06.07-.15.12-.11.47,0,.26-.11.29.09.22-.17v-.36l-.3-.37.18-.26.14-.32.08,0,.1-.11-.1-.11-.25-.06v-.09l.16,0,1.05-.06L502,81l-.63-.09-.8,0-.83.23-1.56.54-.74.38h.19l.23.08.18.32.15.09-.13.2-.41.13-.17.09-.16,0-.13,0-.15-.09.11-.15.13-.14-.31-.28-.15,0h-.12l-.8.16-.61.22-.54.1h-.5l-.3.09-.62.3-.38.13-.66.34-1.66.56-.42,0-.23-.08-.18-.1-.12.06.12.18.21.35-.1.17-.37-.08-.79.1-.85.17v.24l0,.22-.17.33-.17.27-.18.79-.13.23-.34.13-1.7.23H485l-.13.06-.09-.08-.3-.1-.45,0-.2,0-.2-.15-.24-.36-.35-.71-.85-.41-.39-.26-.06-.23.09-.21,1-.67.34-.22,1.35-.11.54,0,.54,0,0-.43-.48-.57-.52-.65-.5-.71-.75-.3-.91-.18-1.88,0-.26,0-1.16-.57h-.29l0,.14.09.11,1.51,1.12.05.27,0,.35,0,.15,0,.15,0,.26L480,84l-.43.77-.16.38-.05.26.14.24.45.11.43.27.21.34,0,.24,0,.49.07.43-.41.63-.21.24-.3.57.06.42,0,.16-.07.19-.17-.16-.14-.17-.2-.17-.21-.07-.24,0-.18.07,0-.17.24-.25-.09-.14-.11-.12L478,88.2l-.47,0h-.41l-.42-.08-.3-.23-.28-.13-.21,0-.28.16-.68.66-.67.41-.85.29-.64.06-.17.07-.41.38-.4.28-1.11.44-.08.2-.09.29.07.34.18.33.46.68.27.24.17.36.11.4-.08.07-.41-.13-.31,0-.45.23-.05.11-.17.25h-.4l-1-.56L468,93l-.15,0-.2-.14,0-.1h-.38l-.23,0-.22-.1-.93-.84-.79-.35-.19,0-.35,0-.25.6-.29.15-.24,0,0,.3.09.19.09.14.28.24.51.7.28.29.21.11.29,0,.65,0,.21.12.21.17,0,.38.15.39v.22l-.23.23-.71.13-.42.23-.14,0-.8-.37-.53-.16-.71-.24-.12-.12-.29-.53-.67-.54-.31-.16-.46.07-.3-.08-.5-.29-.31-.43,0-.48.1-.1.1-.05-.23-.17,0-.37,0-.25-.23-.63-.25-.39-.24-.42.3-.18.16-.17.25-.5.05-.17.1-.17.05-.16v-.17l-.17-.31-.56-.64-.57-.38L457.94,87h-.31l-.11-.06.24,0,.25-.11.15-.19-.28-.12-.23-.06-.37-.19-.07-.15.1-.1-.07-.27-.52-.12-.13-.07v-.09l-.34-.31-.43-.34.1-.29-.32-.25-.28-.18-.44-.09-.18-.13,1.05.12,1.08.31-.1.08-.09.13.29.42.29.24.67.33H458l.16-.06.33.14.26.18.52,0,.62.23,0,.07-.08,0,.16.23h.27l.46-.14,1.07.71.3.13,1.75.46.82.1.44.1.63.21.67.38.55.16,1,.19.53,0,1.33-.11,1.73-.44.91-.43,1.48-1.2.21-.29.22-.7,0-.31-.2,0-.25-.18,0-.42-.13-.21-.13-1-.4-.14-.22-.12-.27-.08-.29-.17-.33-.41-.33-.29-.27-.37-.17-.15-.12,0,.07.19.06.19-.53-.09-1.45-1-.26-.09-.11.07-.46-.15-.13-.23-1.22-1.09L465,78.06l-1.52-.8-1.16-.4-.12,0-.13.12h-.34l-.31,0-1-.36-.26,0L459,76.48l-.12.07-.44.54-.22.1-.41.07.13-.16.28-.11.21-.4,0-.17.12-.22V76l-.14-.06-.27,0-.59.17-.07-.07.18-.21,0-.09h-.24l-.51-.14h-.54l-.07-.28-.34-.19-.14-.14.19-.13,1.18.34.33,0,.17-.08,0-.16v-.19l-.13-.12-.76-.26-.35-.25-.82-.38,0,.14.1.3-.07.09-.24-.1-.19,0-.28.32-.26.07h-.2l-.81-.35-.36-.08-.32-.07h-.25l-.23,0-.14.26-.06,0-.07-.38-.23-.11-.12.06-.08.35-.14.09-.2-.09h-.41l-.2-.07-.12-.14v-.35l.07-.25-.08-.13-1.62-.55,0-.2,2.36.37.7-.05.45-.24,1-.21,0-.25,0-.22-.65-.5-.36-.12-.43,0v-.07l.09-.22-.34-.33-.22,0-.35.17-.12,0,0-.08-.16-.15-.49-.15-.15-.11-.2-.28L450,70l-.56-.06-.17.08-.32.28-.3.5-.13.43-.28.2-.08.14-.22.56-.05-.15,0-.27.07-.29L448,71l.17-.33-.1-.14-.46.11-.21-.06.12-.14.69-.25.12-.09.13-.16.05-.39-.5-.3-.67-.11-.16-.1-.28-.06-.58.31-.21.18.06.14.57.36,0,.08-.49,0-.28.21-.09.22-.18.26-.2.35-.69.28-.18,0v-.16l.06-.18.06-.17.06-.32-.17-.14.27-.24.15-.42-.12-.33-.33.08-.61.44-.55.54-1.16,1-.13.38-.46.33-.36.07-.11-.14,0-.27.35-.36.17-.61.16-.22.44-.41.43-.36.25-.13v-.14l-.11-.07-.13,0-.16-.12-.27-.06-.14.06-.11.15-.13,0-.18-.13-.25-.23-.43-.22-.13-.12h-.22l-.48.37-.39.22v.2l.27.12,0,.17h-.14l-.15.11-.56.62h-.3l-.51.26-.63.51-.11.14-.12.37,0,.16.17.18-.1.12-.2,0-.16-.15-.25-.28-.09-.51-.07-.26-.17-.14-.34-.16-.56.1-.09.21-.13,0-.2-.18-.35.1-.12-.08-.47.2-.49-.14-.38.06,0,.09.1.13.41.32.39.15.17.24.12.63-.09.07-.29-.29-.38-.22-.31-.3h-.37l-.22.4h-.28l-.11-.12-.28,0-.45-.06-.17.21-.08.58,0,.22.19.19.16.2,0,0-.51-.12-.65.58-.2.09-.11,0v-.08l.53-.62.15-.28V73l.16-.69-.05-.21-.06-.09-.21,0-.17.1-.16,0-.24.2-.23.36-.33.77-.22.27,0-.29.15-.38.1-.62-.06-.09-1,.13-.35.3-.07.13,0,.13,0,.09-.23.12h-.25l-.19,0-.13.1v.2l.24.22.33.19-.12.06-.44-.06-.33-.18-.19-.29-.17-.14h-.07l-.16.13-.25.37,0,.33.07.2,0,.08-.83.14-.36.33-.15.43-.23.27-.56.34H424l-.5.17-.15.11-.16.2v.15l.12.1,1.28.13.47,0,.11,0,0,0,.14.06-.05.07h-.15l-.3,0-.51.11-.3,0-.18,0-.5-.22-.48,0-.4.23-.07.12.14.5.11.16.15,0-.05.1-.14.08-.12.12.08.43-.1,0-.25-.52-.07-.62-.05-.07-.06,0-.34.14-.41,0-.37.19-.36.1-.06.11.13.12.51.1,0,.14-.24.06h-.22l-.26-.16-.28-.07-.18,0-.56.48,0,.21-.11.25.15.06.4,0,.56-.25.08.12-.13.08-.15.17,0,.19.2.23.28.12.36-.07.06.08-.26.25v.33h-.09l-.15-.36-.11-.09-.25,0-.32-.28-.33-.09-.45.22-.39.37-.1.15-.2.14,0,.09.07.06.22,0,.5,0,1,.12.27,0-.05.15-1.33-.07-.37,0-.27.09-.27-.08-.29.15-.2,0-.19.15-.32.35h-.16l-.17.07-.16.09.09.2.43.15.08.09h-.36l-.34-.07-.22.17-.15.08-.29,0-.23.2-.07.35-.18,0-.1.37.05.69H416l.13,0,.17,0,.39,0,.62-.11.11.09-.25.15-.33.06-.19.13-.6-.06-1.27.19,0,.1.36.2.1.23-.11,0-.34-.07-.28.15-.15.32-.63.55-.17.2-.16.26-.2.4V87l.13.13.13,0,.14.07.05.16.11,0,.2,0,.44-.21.23-.15.2-.06-.4.39-.5.35h-.42l-.15-.21-.13-.13-1.45.57-.3.21-.12.25,0,.25.2-.05.36-.12.15,0-.24.22-.42.16h-.22l-.3.19-.33.1-.23.25-.57.21-.75.74-.49.28-.17.32-.18.19-.33.15-.21.22-.12.28.05.09.13,0h.23l.11.28.12.14.05.18.27,0,.6-.14,1.29-.55.25-.23-.15-.2-.11-.07.35-.19L411,91l.2,0,.24.1.06.07-.35.15-.26.15.07.07.2,0,.07.13,0,.12-.31.11-.24.12-.35,0-.37.12-.12.08-.12.21.07.07.09.26-.12,0-.24,0-.51-.11-.32,0-.23.06-.13.12-.09,0-.07-.27-.09-.05-.11-.12-.26-.35-.2,0-.17.06-.41,0-.38.33-.15,0v-.12l.19-.2,0-.1L406,91.9l-.36,0-.2.06-.39.18-.09.12,0,.17.19.09h.24l.09.12,0,.16-.12.08-.65,0-.19.15-.07.24.14.26.2.15.52.56,0,.12-.61-.44-.2-.11-.21-.33-.49-.1h-.26l-.17,0-.17,0-.4.22-.81.15-.14.07,0,.09-.33.34-.11.22.09.07.51-.06.19,0,.27,0,.33.15,1.34-.09.09.14h-.6l-.57.11-.05.08V95l.33.1-.08.06-.17,0h-.17l-.41-.23-.67-.13-.44-.07-.27,0h-.37l-.18,0-.17.08-.09.2-.16.1-.11.11,0,.13h.26l.42-.07.49,0-.16.13-.09,0-.78.11H400l-.12-.1-.08-.1-.15,0-.24.08h-.16l-.41.19-.11.22-.14.09-.15.17-.13,0-.1-.12-.21.08-.13.41.11.23.22.09h.43l.39.1.95.3.55.05.6-.07.1.06-.56.16h-.94l-.46-.16-.66-.28-.72,0-.27-.07-.12.06-.06.22v.31l.13.22.21.1.12.25.2.14.14.07-.17.08-.18,0-.36,0,0,.17,0,.4.17.21.43.29.26,0,.42-.1h.9l.62.16.23-.05.13-.27.13-.14.05,0-.05.16.09.07.29.08.29.11.48,0,.22,0,.05-.1,0-.22.13-.26.25-.18v.05l-.24.35.1.26.41.06-.13.1-1.07.19V100l.05.16-.09,0-.11-.14v-.19l-.13-.16-.25-.15h-.35l-.41.14h-.26l-.63-.17-1,.12H398l-.2,0-.19-.08-.19.09v.32l0,.24,0,.48.12.23.25.23.44-.12.31-.21.12,0-.23.18-.82.37-.07.11.06.44.19.33.26.18h.33l.17,0,.06.1-.42.13h-.25l-.22-.08h-.12l-.08.12.08.21-.09.22-.15.21-.06.31v.2l.07.09h.08l.11-.15.07,0,.19-.14.31-.17.15-.24.32-.3.22,0,.16-.12.08-.24.14-.16.3-.24.12-.17.42-.19,1-.18h.4l-.11.1-.34,0-.15.1-.13.15-.33.64v-.19l.14-.44-.11-.16-.36.15-.46.33-.09.2v.11l-.1.14-.17.15-.47.33-.12.14.06.18.14,0,.28,0h.19l.32,0v0l-.49.18-.26,0-.21.2-.39-.1-.1-.09h-.12l-.16.16-.2,0-.15.22-.15.33-.16.68.07.2.39,0,.23-.09.22-.25.2,0,.13,0,.27,0,.37-.15.31-.21.26-.12.26-.06,0,0-.24.1-.24.19-.32.19-.22.19,0,.2,0,.15,0,.15-.13.1v.12l.25.24.16.12.47-.16.09,0-.32.15-.18.2h-.08l-.49-.31-.49-.2-.12.1-.11.46,0,.28.12.33.23.31.53.32.15.19.67.37.21,0h.26l.09,0,0,.09,0,0-.19.13-.12.15.07.08.28.11.08,0,0-.15.07-.06.15,0,.08,0-.05.06v.06l0,.09.2.16.4,0,.55.12.87-.11.35-.17.27,0,.32-.21.45-.19.9-.75.55-.27,0-.11.1-.07h.17l.17-.17-.17-.17.52-.19.14,0,.09-.07.09-.11-.13-.18-.14-.15h.17l.32.3.07.21h.24l.27-.16.2.07.06-.08.08-.07.44-.62.08-.3v-.2l-.07,0v-.2l.21,0,.16-.13,0-.33.15-.2v.26l0,.24-.05.53,0,.12.18.3.17.35.22.06.11,0,.19.08h.09l.47.16,0,.12v.09l-.18-.17h-.21l-.06.09-.06.17,0,.2.07.18v.56l.05.63-.06.15,0,.16.18,0,.2.14,0,.66.18.37.32.11v.76l.29.14v.19l0,.28.07.29.2,0,.15.67.49,1,.29.27.27.49.15,0,.18.11.05.3-.14.18-.17,0-.25,0,.06.17.1.11.1.26-.11,0h-.09l-.4-.2h-.08l.09.14.13.33.44.78.21.23.05.17v.16l-.05.23-.07.23v.15l-.13.19.89.26,1-.16.55.15h.2l.38-.35-.11-.32-.14-.28,0-.3.11-.15.31-.23.16-.1.18-.09.2.1.21,0-.06-.3.14-.07h.56l.57.11.39-.06h.24l.19.07.21.14.2-.11.17-.15.39-.78.15-.25.3-.33.15-.28.13-.34.18-.4,0-.22-.05-.14v-.23l.36-.46.06-.21-.08-.2,0-.22,0-.36-.06-.16.11-.29h.21l.06-.73.16-.15-.09-.27-.1-.4.36,0,.22-.08-.26-.3-.22-.06-.42-.08-.18,0-.15-.09-.21,0,.22-.07.66.09.71,0,.27-.15.52-.17.25-.22.45-.14.21-.13.13,0,.31-.12.27-.16.4-.11.08-.07.12-.13.11-.33H425l.25-.09-.1-.21-.11,0-.1,0-.14.08-.12,0h-.14l-.13.1-.17,0-.31-.07,0-.09.43-.18.11,0,.13,0,.14-.11.14,0,.38-.2.13-.1.18-.16.38-.2.16-.06.06-.21-.09-.36-.09-.13-.06-.14-.12-.18-.37-.15-.13-.11.07-.31-.31-.28-.3-.1-.18-.16-.28-.34-.1-.26-.17,0-.28.11h-.17l0-.16-.07-.14-.08,0-.2,0h-.2l-.21-.2,0-.19.05-.15-.12-.45,0-.1,0-.51v-.32l0-.1.09-.1,0-.14-.08-.08.07-.24,0-.15,0-.23.2-.23,0-.22.28.12.27,0-.09-.19,0-.13,0-.27.1-.31.08-.17.17-.45.12-.14.15,0-.19-.11-.2-.25-.1-.3,0-.11.08-.14.2.09.12.11.16,0,.16-.15h.24l.25-.22.19-.06-.06-.09-.15,0,0-.07.08-.06.08-.13-.07-.21-.06-.15,0-.14.06,0,.08.18.3,0,0,.07v.07l.19,0,.1-.07.08-.11.46-.12.05-.1v-.09l0-.1-.39,0,.08-.11h.13l.26-.06.11-.2.07-.16h.13l.2,0h.12l.09,0,0-.06-.11-.06.05-.06.45.1.44-.32.13-.25.15-.15.28.19v-.11l0-.16.17.08.13.11h.14l.14-.23.29-.21.62-.13.36-.17.18-.15.48-.13.19-.13.61-1,.52-.36.46-.23.07-.12.06-.15-.24-.29-.11-.29-.08-.32-.14-.18-.13-.12.14-.22.22-.2.28-.22.34-.35,0-.12-.06-.16-.08-.13-.13-.14,0-.12h.08l.23.24.09,0,0-.13,0-.06-.1-.05,0-.1,0-.09.07-.07.24,0,.42,0,.07,0,.08-.1-.08-.14,0-.08.34,0,.13-.07,0-.06-.07,0,0-.1.35.08,0-.08,0-.35,0-.09.11-.12.07-.17.08-.06.13,0L435,87l.17,0,.28-.2.34.31.36.21.11,0,.15-.12.41,0,.37,0,.21-.06.4.19.55,0h.17l.34.13.28-.11.13-.12h.07v.1l-.11.24.17.31.18.06h.16l.8.45.21.24-.12.42-.05.37-.11.32.16.17,0,.11v.19l-.22.07-.1.1.1.12v.19h-.15l-.16-.08-.4-.06-.41.07-.2.14h-.21l-.07.2-.2.18-.38.52-.56.39-.23.35-.14,0-.46.38-.14.29h-.22l-.54.41-.25.09-.26.12-.57.41-.47.08,0,.22-.29.26-.16,0,0,.1.06.11-.15-.06-.06,0,.07.21.06.1v.12l-.43.18-.48.07-.19-.1-.54.07v.15l0,.14.15.26H432l0,.26-.58.47-.12.15-.07.16,0,.21.06.36,0,.32.31.25,0,.22v.17l-.13.34-.13.38.25.26.15.34.13.36v.11l.09.25,0,0v0h-.15l0,0,0,.1.05,0,0,.08h-.12l0,.09,0,.14-.05.41-.1.34-.07.13-.16.2-.06.28v.37l0,.26v.22l0,.19.05.12.18.1.17.14.24-.15.17,0,.08.28.16,0,.65.36.54.12.08,0,.06,0,0,.06-.15.23v.06l.15,0v.09l-.06.06-.11,0-.09,0-.06.13.05,0-.08.17v0l0,.14.38,0,.11,0,.11,0,.1,0,.05-.07.08-.26.05-.09.09,0,.14.35.17.17.14,0,.1.07,0,.15-.17.17-.23.12-.1.12.11,0,.34-.06.32-.23.3-.16.26.08.27,0,.64-.09.67,0,.2.08.16-.06.19-.2.52-.09.23,0,.42-.08.24-.15h.4l.2-.12.23-.07.11.21h.08l.2-.13.21-.09.19,0V105l0-.17-.1-.16h.17l.33.24.36,0,.18-.12.1-.26.17-.21h.08l0,.1-.11.14-.09.23,0,.18.15-.06.25,0h.48l.27-.15.27,0,.07,0,.44.26.14-.07h.3l.2-.09h.08l.79,0,.72-.27.13.08.14.14,0,.21,0,.16-.26-.17.06.18.22.35.34.16.5.48.62.09.42-.05.31.05.3.25.19.31.17.08.22.16-.05.16-.07.09-.92-.32-1.08-.22-.15.1-.15.18-.07.13-.08.08-.17,0h-.25l-.3,0-.16-.11-.15.09-.08.24-.19.12-.25-.12-.15-.2h-.15l-.11.17.05.24v.28l-.12.21,0,0-.25.15-1.14-.2-.75-.06-.25-.08-.45-.29-.34,0-1.36-.36h-.37l-.22-.06,0,.13,0,.12-.17.1-1.17-.09-.62.15-.42-.08-.45.26h-.25l0,.25h-.63l-.3.08-.31.12,0,.27-.09.11,0,.11.09.1-.06.12-.13.11.12.31v.09l.06,0h.31l-.08.09-.25.1-.06.17.09.26.25.23,0,.22.11.22.49.21.21.13.25-.05.12-.1.11-.16H437l.28.12,0,.15,0,.06-.1.06-.09.46-.32.56,0,.11-.07.26.1.42V114l-.06.22-.23.21-.5.28-.27.15-.59.06-.72-.41-.26-.71-.19-.22-.76-.66-.05-.17-.11-.23-.69.12-.61.16-.45,0-.61.7-.1.24-.06.31-.14.32-.21.24-.41.29-.13.54-.12,1.09,0,.56v.13l0,.61.18.58.1.48-.1.31.06.22-.07.46-.1.49-.41.06-.22,0-.23-.12-.2,0-.16-.09.59-.53.39-.45.18-.39,0-.23v-.13l-.06.09-.08.3-.11.21-.27.31-.12.15-.37.34-.36.28-.26.1-.6-.06-.28.08-.07.26,0,.23-.21.31-.22.24-.34.22-.1.06-.33.11-.9,0-.28-.08-.34-.2-.15-.25-.26-.68.13,0,.35.24.25.11-.08-.15-.44-.28-.42-.23-.5,0-.5,0-1.23.15-.54.18-.27.14-.68.07-.41.3-.19.2-.11.07-.12.11-.31,0h-.3l-1.29.22-1.21.25-.71.21-.28,0-.07-.06-.34-.26-.42-.3,0,.1v.09l.08.08.1.12-.06.16,0,.17.25.06h.26l.37.07.42.14v.19l0,.13,0,.09,0,.11-.19-.11-.48-.21-.46-.13-.15-.11-.16-.16-.05-.47-.18-.4h-.57l-.59-.44-.22-.39-.27-.05-.24-.09-.42-.09-.43.31-.19.16-.27.15-.13.15h-.67l-.2.08-.53.38-.13,0-.6-.23H408l-.13-.06-.07-.19.43-.26.14-.27-.08-.29h-.12l-.48.13L407,120l-.31,0-.07-.12-.05-.11H406l.16-.11.2-.17v-.27l-.12-.19-.12-.13-.3-.1-.05-.35.06-.11-.09-.1-.08-.07-.15-.06-.24,0,.12-.21.31-.23.07-.18-.05-.22v-.2l-.06-.24.17-.17.24-.13.08-.11.2-.16.21-.06.06-.07-.12-.16-.11-.09.24-.08.19,0,.1.07.05,0,.13-.4.23-.59.13-.1.11-.06.22.23h.17l.28-.09.23-.14.09-.18.08-.24-.07-.15-.07-.09-.74,0-.21-.12-.2-.21.07-.47v-.12l.06-.51.09-.06.24-.43L408,112l0-.41.06-.2-.17-.35.05-.15,0-.1.28-.24h-.15l-.6.31-.62.06-.33.28-.6.68-.26.15-.29.06-.54-.07h-.18l-.3.1-.4,0-.42.34-.33.36,0,.11V113l.15.13.24.16.29-.11.36,0,.25-.45.27-.36.25-.07.29.12-.14.59-.05.31-.11-.15-.14-.14-.15,0-.23.1-.34.29-.06.24-.11.14-.12-.07-.11-.14-.16,0-.39-.18h-.1l-.14,0-.14.83-.06.52.14.47-.07.23-.17.86.43.29.54.31.05.26v.5l-.21,0,.12.26,0,.17v.56l.21.29.16.3.15.17,0,.2-.26.1-.38.05-.06.12,0,.17.19,0,.09-.05.15.05.1.12-.06.74,0,.1.11.12.18.08.3.06.19.1.61.78.31.15-.23-.05-.18-.11-.49-.64-.24-.14h-.64l-.57-.16-.1.1-.11.15-.07.31,0,.32-.13.45,0-.34-.08-.11-.23-.17-.07.06-.06.2-.09.18-.09,0-.18-.12.13-.2-.29-.44-.79-.08h-.72l-.16.06-.23.26-.09.22-.06.28.19.15.09.13-.29-.07-.18-.09-.1-.14-.19-.2-.52,0-.45,0-.6,0-.4.06-.73.24-.19.14-.2.31-.65.34-.37.11-.1-.06-.14,0-.13.18-.09.17-.32,1-.19.35-.24.3-.38.35-.17.11-.1,0-.14.17-.11.21-.08.1.36.4,0,.12.05.06h-.37l.14.14.19.1.13,0,.07.1-.14,0h-.14L393,127l-.29-.08h-.41l-.1,0L392,127l.14.16.13.1.22,0,.26.13.39-.06.27.14.17,0-.24,0-.2-.11-.28.09-.34-.06-.25-.11H392l-.16,0-.26,0-.57.2-1.1.45-1.13.12-.31.13-.21.12-.14.17-.08.21-.15,1.19.08.12-.1.05-.08.07-.24.29-.36.22-.68.18-.65.08-.92.36-.15.26,0,.11,0,.14.3.14h.33l-.05.06-.59.08-.32.17-.32.06-.73-.21-.51-.05-.39-.12-.38,0-.1-.16-.07-.13,0-.29,0-.21-.22-.09-.47.07-.24-.06-.31,0,0,.14v.1l.1.28.22.49.2.32-.05,1,.15.3.21.13-.13,0-.8,0-.05-.11-.11-.08-.15.15-.07.14-.15-.18-.76-.07-.53.26-.2-.19-.39-.53-.47-.17-.5,0-.16.12-.36.11-.3,0-.42-.06-1,.15-.4.18-.11.23,0,.11.05.13.28,0,.13,0,.27,0,.06,0,.13,0,.11.12h-.34l-.19,0-.07,0-.1,0,.06.12.06.05.16,0,.21.14-.11.1-.28.06h-.25l-.11.11.51.23.09.25.12.15.17,0,.33-.08.35.06.8.28.12.12h.11l.13,0,.13.09.09,0h.13l.18.21.21.07.22,0,.15,0,.1.07-.14.16.05.06h.45l.14.06.11.11-.11.14-.12.08,0,.18.14.07.17,0,.79,0,.46.28-.16,0-.2-.11-.22-.05h-.17l-.09.1-.11.15.1.1.12.05.12.2-.17.29,0,.15.06.14.26.35.25.46.78.49.16.07.15,0,.19.05,0,.15,0,.12v.72l.06.32,0,.09,0,.08-.17-.09-.2,0,0,.15.05.08.57.42.17.19.1.23.14.76.11.11.06.13-.17-.13-.11-.13-.11-.57-.11-.18-.22-.21-.28-.22-.18.48-.11.45-.22,1.25.06,0,.05-.1.1-.09.15.2-.2.06-.18.24-.31,1.35-.38,1.12-.33.29-.34.05h-.07l-.35.11-.43,0-.29,0-.54-.25-.55-.15-.16,0-.21.16-.76-.26-.21-.17-.16,0-.36.08-.24-.08-.26.07-.63.08-.43,0-1.2-.31-.42-.16-.72-.13-.36-.19-.5.09-.29,0-.53,0-.29-.06-.59,0-.34.06-.41-.14-.26-.27-.21-.13-.19,0-.21-.11-.33.12h-.32l-.28.14-.26.11-.08.09.07.12v.14l-.23.09-.14,0-.25.1-.27,0-.43-.08-.33.22-.15,0-.18.08-.15.34v.14l.11.18.1.12.16.14.24.06,0,.08-.22.24v.17l.09,0,.38-.11v.1l0,.09,0,.23.07.09.09.07-.09.12-.09.06,0,.12h.18l.08,0-.18.15-.26.24v.39l.05.05.15,0-.23.25,0,.17.07.15.19,0-.12.11v.22l.09.69.11.33v.31l-.06.27,0,.4-.12.24-.09.1-.27.83-.05.19.07.07,0,.09-.4.69-.35.64-.24.27-.14.07-.13.12,0,.13v.09l-.15.32-.07.36-.11.25,0,.13v.16l.13.07.11,0,.22,0,.25,0,.11-.22.31-.41.19-.1.16,0-.32.17-.14.22,0,.24-.11.13-.15.1h-.18l-.16.07.08.28,0,.22.05,0,.2,0,.38-.1h.24l.13.1.13.14-.44-.08.12.36v.28l-.2.52.1.22,0,.33-.08.33,0,.38-.28.61-.17.31.12.05.19-.13.23,0,.3-.09.23.07.72.11.39.2.22,0,.74-.33h.18l.49,0,.41.06.1,0,.14-.14v.07l-.06.12.76.63.18.31.17-.17h.22l-.09,0-.15.11-.2.27,0,.22.23.11,0,.08,0,.09.07.24.1.23.24.36.16,0,.3.24.37.18.16,0,.19-.07,0-.18h.08l.05.06h0l.08-.23.23-.3.13-.11.51-.15.54,0,.38-.26.15-.15.15,0h1.12l.51.08.3.1.37-.09h.23l.51.08.23.09.25-.06.16-.13.3,0,.31.05.23.19.16-.06L378,163l.34-.66.36-.34.68-.36.81,0h.24l.11,0,.11-.08-.2-.2,0-.14.14-.18,0-.09.14-.24.11-.37.21-.11.08-.27.31-.26.71-.3.41-.24.15-.14-.08-.16-.38-.19-.2-.2-.13-.24-.19-.87,0-.25.59-.82.27-.31.25-.21.47-.48.54-.68H384l.07,0,.13,0,.3-.11.07-.09-.18-.21-.17-.06.23-.15.48-.38.36-.06.77-.18,1.08-.14.14-.07.37-.34,1.5-.62.31-.21.23-.19v-.34l0-.07-.1-.07,0-.07.05-.23h.1l.19-.06,0-.14-.1-.06-.05-.17,0-.07-.19-.34-.06-.62,0-.19.26-.4.22-.26,1.14-.58.17-.13.11-.11.3-.05.05,0,.07,0,.09.16.13.07.31.08.06,0,.45.19.17,0h.16v-.05h0l.07,0,.07,0,.08,0h.13l.18,0v.2l.1.05H394l.25,0,.16.31.54.17.27.22.45,0,.18.08.4-.13.4-.05.16-.06.2-.14.07-.18.07-.09.32-.14.7-.5.17-.08.49-.14.51-.05.58-.15.17-.09.47-.51.58-.49.46-.15.34.06.53.26.2,0,.87.62.64.26.28.2.1.25.09.86.23.38.12.42V150l0,.19,0,.24.16.05h.11l.13.06.05.1.05.14.07.1.27.19.44.54v.2l-.09,0-.08.06.07.07h.1l.13,0h.1l.41.18.27.21.31.53.53.39.24.34.82.91.44.18.34.3,0,.08.1.07.2-.07.13,0,.24,0,.39.14.24,0,.13,0,.24.28.34.66v.15l.06.05.06-.08.09,0,.33.05.24.15.06.08-.27.29h.09l.16-.07.2,0,.12,0,.32,0,.15.11.12.19.07.22.07.23-.14.15v.11l.05.06.68.47.19.06.41,0,.21.17.12.3.14.6.3.69.06.52.06.28.19.22-.06.43-.27,0-.2,0-.11.09-.11.13,0,.32-.2.41-.26.08-.14.2v.33l.14.24.69.05.12-.17.09-.16.31-.37.58-.33.07-.2v-.53l.14-.2.3-.19.42-.09.3.07.17-.17-.08-.34,0-.59-.22-.26-.35-.26-.45-.19-.14-.27,0-.27.34-.65.32-.44.28-.3.22-.11.31,0,.06.05.07.12v.1l.27.17.16.07.8.15.38.86.28.23.25.09.12-.19.07-.19.16-.28,0-.28-.25-.39-.57-.52-.15-.23-1-.53-.39-.36-.34-.24-1.11-.5-1.08-.59-.21-.21,0-.26.27-.18.25-.12.09-.13,0-.21-.21-.09-.2,0-1.17,0-.48-.09-.6-.34-.64-.53-.69-.7-.32-.48-.15-.42-.19-.84-.19-.54-.23-.47-.11-.11-.43-.22-.75-.65-.44-.22-.39-.39-.17-.24-.15-.53-.06-.75L409,146h.09l.13.1.17-.11.08-.13.07-.17-.26-.2-.19-.44-.12-.1.08-.32.07-.19.17-.11.29-.11h.1l-.23.18.13,0,.25-.07.31-.1.31-.14.27,0,.2-.14.08-.12.11-.05.53.19.2-.14.15,0,.29.39-.14.09-.18.12-.13,0-.13.08.13.65v.17l0,.14.21.32.21.41.08,0h.14l.18-.22.11-.17.33-.39.1-.31.1-.13h.15l.33.14.16.21.43.39.09.29-.08.38v.29l.16.27.55.6.22.16.18.16-.21-.06-.17,0-.12,0h-.09l-.13,0,.11.22.6.71.3.27.33.22.23.22v.12l0,.1.08.13.12,0h.18l.29,0h.26l.41.23.61.23.44.49.4.27.4.42.09.06.16.12.11.12-1-.51-.19,0-.17,0,.43.15.65.38.49.13.66.46.34.29.37.27h.07l.08,0h.12l0,0,0,.06,0,.05.52.36.44.5.11.29.31.22.26,0,.21.19,0,.36-.07.1-.11.08-.14.33v.26l0,.21-.07.31,0,.42-.19.34-.12.3v.1l.17.39,0,.16,0,.07-.1-.05-.07,0h-.07l.06.15.07.16.17.2.73.46.2.43.05.18v.22l.19.18.18.25.18.54.34.2.19.28.23.21,0,.08.14.07.3,0,.23,0h.07l.1,0,.05.12V162l-.09.06-.08,0-.36-.17-.24,0,0,.12v.16l.2.1.22.31.11.37.09.29.14.11.25,0,.07-.12v-.15l.05,0,.06.17.15.22h.2l.18,0h.32l.34-.09.53.19h.2l.14-.06.08-.12.32.25.34.16.06.07.1.08.2.09.13,0,.08,0,.12,0,.11.06.06.1-.07.09-.06,0-.35,0-.13,0,0,.11v.12l-.15,0-.1,0-.17-.17-.31-.18-.63-.23-.58-.36-.27,0-.16.12-.21.22h-.23l-.19-.12-.1,0-.23.38-.36.23,0,.07,0,.09.14.07.16.14.07.26.17.08.3.26.2.38v.19l-.25.24,0,.28.29.54.29.32.1-.15,0-.2,0-.23.12-.06.15,0,.09.17.06.15.13.05.27.45v.14l0,.31.1.09.13.08,0-.28.28-.48.23,0,.13,0,.09.24.28.4.16.11.09.09.1,0-.08-.24-.12-.24.09-.31,0-.18-.1-.4-.25-.67-.16-.26,0-.36.11-.09.14.14.19,0,.14.09.17.11V166l.12.08.09,0,.11-.06.5-.11v-.06l-.06-.08-.1-.11,0-.1-.09-.05h-.18l-.13-.08-.09-.23,0-.19-.12-.15-.1-.06,0-.06.08,0,.23-.09.48,0,.18-.09H431l.08.06.3.32.28.28.17.26h.1l.08-.07,0-.15v-.11l0-.33,0-.44,0-.21-.08-.12-.26-.14-.31-.09-.21-.34-.41-.12-.21-.35-.24,0-.23-.2-.5-.18-.17-.13h-.11l-.13,0,.06-.05h.17l.26,0,.27-.09.3-.2H430l0-.2-.1-.14-.08-.22.18-.11.15,0,.34.2v.11l-.11.18.06.08h.14l.24-.15-.06-.28-.1-.18-.25-.34-.24-.2-.11-.16-.14-.43-.47-.61,0-.21.11-.37.09-.21,0-.16,0-.16.24-.08.15-.09h.23l-.07.15-.09.08.07.23.4.26.43.25v.31l.12.25.47.2.06,0,0-.06-.4-.31-.07-.11-.07-.26.08-.1.49.14.32.51.22.16.08-.06,0-.08-.05-.22-.1-.11-.18-.13-.2-.22,0-.1.21-.08.18,0,.29.16.21.07.14.17.21.18-.08-.23-.15-.23-.36-.22h-.21l-.13,0-.06-.16.11-.15-.19-.22-.07-.12L432,158l.38,0,.28.08L433,158l.33-.28.2-.07.17,0,.23.18.24,0,.46-.24.21,0,.29.18h.16l.34.16.74.16.31.21.05.11.05.11.06.18h.25l.28.05h.45l.45,0-.16.19-.59.2-.2.12-.22.16,0,.17v.11l-.09.14-.06.16.15,0,.13-.06.31-.31.67-.53.44-.12.61-.26.38-.34.17-.32.52-.05.37.08.34-.15.19,0,.25,0,1,.32.37-.06.09-.12.09-.19.07-.21-.23-.07-1.2-.63-.29-.24-.27-.45-.11-.32.08-.28,0-.2-.31-.42-.2-.37-.14-.13-.3-.19.6-.55.14,0,.15-.07.07-.67.1-.4.11-.11.12-.08.23-.3.39-.05.3.11.22-.26.09-.6,0-.14.17-.45,0-.79.12-.19.35-.31.09-.17-.17,0,0-.1.07-.08,0-.2.05-.08.13-.14,0-.28.09-.12.11-.06.23.07-.11.11,0,.15v.18l-.08.1,1.08-.14.11-.17.07-.16.13-.43,0-.1,0-.17.07-.21-.08-.51-.13-.16v-.21l.06-.1.13-.07.28.08.17,0,.23-.1.37-.11.08,0,.61-.53,0,0,.34-.39,0-.09.11-.16.13-.26.06-.2.72-.13.38.06.17,0,.22-.27.15-.09-.09.29.26.07.25.05.19,0,.08-.18.06-.53-.08-.21,0-.22-.14-.34.15.16.05.17.13.3,0,.33-.05.18,0,.2.14.19.16.13.46.12-6.72-2,7.14,2L451,145l-.13.1-.47-.13-.52-.07-.33-.11-.33,0,.13.13.18.11.29,0,.31.11v.11l-.05.05-.16,0h-.15l-.14,0,.1.12h.2l.22.09.59.38.29.14.67-.07.3.05.55-.1.12.14.33.2.15,0,.2,0,.08.17,0,.22-.44.25-.4.16-.29,0-.68.35-.7.43.08.14.12.07.34-.06.3.05.53.44.15.07.27,0,.32.25.07.31v.18l-.21.57-.1.15-.06.05,0,.1.4.34.2.1.32.06.34-.07.46-.25.42-.44.53-.17.36,0,.41.09.16-.23.43-.17.27-.29.2,0,.22.06.16.1.09.08.13.1.39,0,.36,0,.35-.08.09-.22.06-.19.14-.17.15-.22-.3-.13-.28-.08h-.25l-.2.06-.14.12-.37-.1-.17,0-.42.17-.2,0-.17-.11-.22-.26-.44-.69-.2-.47-.08-.29,0-.22,0-.3.26-.11.2-.05.38-.42.11.19v.14l0,.09-.14.11-.45.29.09,0,.16,0,.16-.1.12-.08.33-.43.93-.56.42-.07.35.08.18,0,.33-.17.27-.06.27,0,.21.15.3-.27.25-.11.36-.08.26,0,.45-.37h.6l.72.09.08,0,.57-.18.21-.15.38,0-.05.06-.2,0-.2.14.24,0,.54,0,.22-.24.35,0,.09.19.08.25v.09l-.05.06-.3,0-.7.25L464,145l-.41.13.09.21v.18l-.32-.06-.23-.08-.15,0-.41.15-.21-.05-.21,0,.07.28.19.34.13.07h.21l.46.43.34.41-.19,0-.18-.06h-.27l-.12.22-.13.17v-.09l0-.12-.12-.09-.18.1-.23.51-.38.34-.14.22,0,.16.05,0h.08v.15l-.06.13-.81.11-.11.09-.23-.1-.24-.22-.22-.13-.16,0-.16.09.09.06.1,0,.26.15-.15.09-.54.13v.08l0,.07.6.19.52.29.15.18.12.31.11.14.17.12.15.07.28.05.3-.07.63.76.27.13.66.2.16.08,1.19,1.08.36.46.69.69.2.15.42.31.53.46.13.07.63.19.45.37.11.26.59.27.13.21.13.66.13.64.17.45,0,.21,0,.16-.13.27-.44.43-.21.21-.72.35-.27.1-.29,0-.29.18-.9.29-.29,0-.26-.1h-.19l-.21-.06-.76-.36-1.21.12-.63.15h-.36l-1-.26-.28-.21-.69-.14-.74-.23-.14-.24-.43-.25h-.27l-.13,0-.17.15-.21-.05-.25-.17-.19-.24-.22-.65-.15-.06-.12,0-.76.13-.52-.27-.17-.18-.17-.25v-.16l.06-.08,0-.09-.3-.11-.55.22-1.16-.11-1.67-.26-.2,0-.72.22-.86.14-.5.15-.49.31-1.35.56-.26.38-.2.11-.93,0-.94-.35-.89.05-1.22-.29h-.36l-.12.1L443,158l-.07.23.07.11.06.07.29.24.21.11.89.19h.1v0l-.71,0-.95.07-.2,0-.37.21.1.08.11.06.16.05.16.12-.1.08-.56,0-.23,0-.7-.12-.68,0-.07,0,.08-.12.07-.07v-.06l-.24-.08h-.22l-.08.07.22.26-.13.06-.13,0-.52,0-.29-.16,0-.1,0-.1-.34,0-.24.12-.56,0-.59.45-.37.39-.27.06-.09.28,0,.52-.13.2,0,.12,0,.13h.5l.28-.07.72,0,.15,0,0,.08-.22.22-.23.18-.07.1.07.09.25.37,0,.14-.09.09v.13l.1.1.12,0,.1,0,.08.08-.23.25-.26.08-.06.06,0,.12v.08l.08.17.13.19.12.09.36,0-.1.08-.5.06-.19,0-.08-.08-.06,0-.06.16-.07,0-.08-.17,0-.16,0-.17-.14-.18-.15,0-.14,0,0,.14.1.3,0,.18-.15,0-.13.21.08.09.19.08.19.14.12,0,.09-.06.13,0,.25.17.13.21h.13l.44.21.15,0,0,.24-.1.36-.31.07,0,.07.15.14.1.28v.24l.14.11.18,0,0,.09.24.15v.21l-.35.07-.14,0-.11.11v.24h.1l.08-.08.66.08,1,0,.22,0,0,.07-.3.16-.18.19-.15.05h-.64l-.16,0-.18,0,0,.08.18.08.24,0,.31-.12h.59l-.16.18v.08h.19l.19-.08.24-.28.37.05.47.28.2.07.16,0,.16-.09.14.07,0,.13v.11l.09.18,0,.29.15.18.25.18.68.29h.21l.63-.14.32-.11.12.05.19.12.12-.05.09-.09.07-.33.12-.16.1-.64.14-.15.63.09.6.11.23.07.85.51.49.22.21.22.28.45.18.21.31.22.53.2.29-.12h.35l.72-.06.17,0,.36-.06.56-.22.15-.1.62-.57.66-.38.22-.06.22.06.26.19.46.25.44.18.3,0,.2-.12.08-.16.16-.08.15,0,.22-.15.31-.12.17.15.09.11v.35l-.36.3-.32.25-.17.21.13.37.11.39-.14.18-.13.14-.2.64.26.38v.28l0,.18-.14.37,0,.26V174l.12.53v.19l-.13.11-.25.11-.36.42-.12.49-.23.34-.43.83-.2.25-.12.29-.12.22-.11.17-.08.26-.18.31-.21.48-.32.93-.31.66-.46.66v0l-.21.21-.42.34-.05,0-.59.23-.49.08-.6-.05-.39.07-.07-.1-.05-.09-.48.09-.1,0-.36.08h-.17l-.14-.09-.4-.38-.15-.1h-.07l.05.11.07.11-.17.18-.22,0-.07-.14-.1-.16-.22-.07-.26-.14.24-.25,0-.16.36.35h.12l-.33-.39-.15-.1-.1,0-.49.13-.17,0-.67-.35-.22-.05-.07,0-.06.19-.07.09-.33,0-.3.06-.28-.05.68-.19.09-.1-.75.16H444l-.12.11-.08.1-.1.09-.1.12h-.2l-.16,0-.25.06-.74.44-.35.16-.32.12-.26.05h-.18L441,182l-.33-.22-.59-.29-1.12-.2-.27-.24-.43,0-.17-.06-.57-.42-1-.28-.64-.15-1.15-.34-1.08.17-.32-.08-.13-.28-.06-.14L433,179l-.14-.17-.15-.08-.39-.1h-.43l-.72-.09-.19-.07-.27-.23-.2-.09-1.05-.21-.36-.29,0-.15.05-.12-.05-.39-.35-.19-.32-.14-.47-.16-.37-.23-.31-.11-.72,0-.24-.09h-.18l-.46.29-.22,0-.53,0-.95.38-.55.3-.55.44-.21.24-.14.24-.13.4,0,.6.09.34.16.26.06.25v.26l-.11.26-.23.35-.67.66-.27.15-.64.23-.35,0-.39-.08-.53-.33-.93-.89-.49-.21-.23-.19-1-.42-1.15-.4-.68-.08-.68-.14-.58-.26-.26-.17-.21-.25-.18-.3-.14-.42-.08-.32,0-.43-.17-.36-.17-.2-1.35-.38-.18-.1-.37-.33-.16-.08-.65-.24-.39,0-.22-.07-.51-.25h-.31l-.81.16-.67-.11-.3-.09-.93-.62-.31-.08-.31-.17-.21-.11-.13,0-.21-.07-.07,0,.07,0,.08,0,0-.05-.21-.16-.1-.45-.25-.17-.14.2-.15,0h-.22l0-.22,0-.18-.54,0-.3-.18-.28-.3-.19-.5v-.19l.06-.16.12-.15.19-.14.72-.41.35-.28.4-.45.22-.34.37-.45-.14-.23v-.28l-.05-.23,0-.2-.43-.35-.19-.08-.19-.22-.15-.36,0-.34,0-.18.09-.16.26-.2.33-.15.4-.56.2-.22.15-.07L405,165l0-.26-.22,0-.4.27-.42.09-.12.2-.23.12-.24-.13.1-.19-.27-.42.05-.41-.22-.12-.21,0h-.23v.1l0,.08-.15.1-.08-.19.08-.09.05-.13-.16-.06-.14,0-1.16.26-.18.08-.52.33-.52.1h-.93l-.46.09-.25-.08-.35-.31-.36-.17-.46-.11,0,.29-.2,0-.45,0-.71-.25-.17-.21-.34.06-.18.25-.4.14-.71.1-.65.24-.27,0-.2-.09-.39-.34-.24-.15-.24-.1-2-.15-.55.19-1.14-.06-.27.09-.55.28-.52-.06-.77,0h-1.5l-.6.13-.39.17L383,165l-.44.2-.35.21-.24.36-.22.15h-.29l-.33-.13h-.15l-1.06.37-.37.18-.25.18-.3.28-.32.12-.41.25-.51.17h-.22l-.42-.07-.42-.08h-.44l-.19-.07h-.23l-.05-.11-.1-.27,0-.07v-.12l0-.1-.21.2-.31.15-.39,0-.41-.07-.2-.14-.2.07-.41,0-.73.13-.61-.15-.42-.21-.52-.48-.28-.36-.15-.32,0-.26.13-.1-.24-.08-.27.14-.22.06h-.26l-.37,0-.09.24-1,2-.95,1.43-.34.35-.52.28-.9.37-1.58.5-.46.24-.19.14-.54.57-.91.73,0,.2-.13.55-.15.34-.74.8-.33.63-.12.8,0,.5-.12.29,0,.17.16.11.22.36,0,.22-.13.54-.19.33-.25.32-.35.35-.44.55-.65.66-.41.25-.88.44-.49.38-.29.3-.27.14-.93.33-1,.19-.68,0-.33.12-.22.3-.3.23-.2.48-.37.61-.23.59-.19.29-.26.19-.56.29-.46.13-.32.24-.21.08-.14.19L350,186l-.18.24-.26.56-.21.3-.13.39-.09.76-.12.33-.31.35-.32.13-.9.82-.41.22-.27.22-.13.22-.07.15.15-.12.13-.15.12-.08,0,.11,0,.09-.32.41-.14.27-.27.4-.22.27.07.15-.08.18-.23.22-.16.51-.36.54-.36.1-.25.23-.33.54-.25,1.11-.27,1.1.1.12.14-.5.06-.07.1-.07.1.07.26.62.19.38.12.08.06-.1,0-.12.11.05.09.09.16.52.23.42-.08.18v.3l-.14.45-.39.64.3-.06-.15.21-.22,0-.09.06.07.17.33.31.17.33.08.62.1.43,0,.63,0,.72-.15.71-.33.73-.33.54-.3.67-.06.3-.14.35-.07.94-.09.21-.64.89-.69.73-.57.23-.26.06.17.23.07-.15h.15l.17.07.18.14.16.35.21.18.16.43.15.25v.19h.1l.16-.05h.1l0,.07-.2.08-.08.11,0,.14.19.16.11.18,0,.22,0,.27.17.24.18,0,.47-.18.59,0,.59,0,.27,0,0,0h-.09l-.31,0-.39.05h-.38l-.36,0-.07.12v.09l-.18,0-.3,0-.29-.09-.08-.12,0-.16-.1-.1-.18.09-.17.17.09.41v.35l0,.2v.38l0,.07V214l.05.1.09,0,.06,0,.08-.12.09-.06.09.12.19.09,0,0,0,.06h-.07l-.13-.06-.27.07-.18.06-.06.11.07.15.07.1.54.36.27-.06.14,0,0,.07-.14.12,0,.19.1.16.27.15.38-.06.08,0,0,0-.1.27.25.07.36-.09.3-.18.17,0,.5.07.17-.08h.07v0l-.07.06h-.06l-.17.06-.43,0-.11.05-.08.13v.11l.17.24h.11l.1-.09.18,0,.22.07.09.14-.19,0h-.19l-.37.12-.12.18.06,0h.1l.09,0v0l-.1.08,0,.14v.1l.15.15H346l.1,0,0,.26h.08l.2-.21h.08l-.1.27.1.15,0,.22.08.07h.08l.12-.29.08,0,.1,0,.13.08,0,.14.11.27,0,.11.19-.15v.06l-.08.24v.14l.33.66.51.29.18,0,.09,0,0,.06v.14l.12.17.27.2.14,0,.09-.1h.05l0,.16.08.16,0,.29-.09.2h.26l.25.28.05.12,0,.1.19.22.05.1-.09.18,0,.07,0,.13.23.2.2.05,0,0h-.29l-.05.15,0,.15.08.25H350l.07-.08.28,0,.11-.08,0,.06-.05.09-.18.11-.2.19-.15-.05-.09-.09-.12,0,0,.12.13.21.09.26.27,0,.12.13,0,.19.06.42.06.08.13.07.17.17.26.05.13-.1h.06l-.07.17.14.26-.12.21,0,.11.28.12.85.39.39.23.36.32.07.09.42.48.57.32.31.22.11.32.15.12.22.12.36.12.28.21,1.2,1.25.54.61.47.42,1.74,1.1.52.21.68.35.24,0,.25,0,.42-.2.37-.09.29-.17.17-.06.63-.14,1-.31.31-.1.74-.1h1.05l-.09-.08-.33,0h-.21l.07-.08.11,0,.54.05.1.13.14,0,.5,0h1.31l-.05-.06-.11,0-1,0,.13-.08h.4l.5,0,.28,0,.22.17,1.07.27.08,0,.18-.35.08,0,.1,0-.06.29.21.11.08,0v0h-.14l-.26-.06-.07.06.27.08h.06l.24.1.5.1.65.23.27.13.35.26.18,0,.49-.21.3-.18.29-.1.93-.23.56,0,.28-.17.39-.13.3-.2.48-.1.83-.33.85.07h.16l.43-.07.13-.19.1-.18.13-.1.17-.07.27-.1.66-.09.41-.06,1-.06.88,0h.13l1.17,0,.22-.25h.15l.46-.1.07,0-.45.19-.12,0-.08.06.07,0,1.32.1.63.18.4.3.44.43.34.5.09.07,0,.09V232l.11.08.23-.06.06-.1.05,0V232l.05.05H388l.08,0-.14.07-.22,0h-.15l0,.08.06.11.31.19.35-.12-.05.1-.07.09-.13,0-.15,0,0,.16v.13l0,.05.18.06-.05,0-.1,0-.05,0,.11.39.08.23.1.23.06.18.41.42.21.16.13.11.21.12.2,0,.06,0,0-.19.12-.09v.13l0,.07v0l.07,0,.34,0h.2l.07-.27,0,0,0,.16,0,.08h.26l.22,0-.13-.2,0-.26v-.12l0-.15h0l.07.17v.25l0,.18.11.11h.19l.31-.22,0-.2-.15-.16v-.07l.13.08.12.16.15.14.37,0,.11-.08,0-.1,0,0,.06.2.16.09.32,0,.47,0,.55,0,.09-.2-.15-.53,0,0,.17.22.1,0,.07.14.17.06.07-.06h.05l-.1.3v.07l.06.1.17,0,.08-.06-.05-.26.1.06.1.15.09,0h.11l.06,0,.06.05-.05.24v.16l0,.14.08.13,0,.29.22.12.28.11.09.06,0,.07.1,0,.13,0,.08,0,.09-.11,0-.14.06,0,.08.07h.1l.15-.09,0,0-.09.09,0,.09.19.19v.06l-.23,0-.08.1-.08,0,.11.22,0,.18h.26l-.21.16.38.5.08.15,0,.33-.16.33-.06.37-.13.39-.08.48-.08.48,0,.3-.2.27-.18.34,0,.1-.1,0-.21.21-.14.27-.13.31.12.05.13,0,.18.14,0,0,0,.08.07.44,0,.31,0,.11h0l-.09-.06,0-.13-.09,0-.35.08,0,.12.15.15.12.26.15.15.46.25.35,0,.12.06-.4.11-.05.17-.12-.09-.32-.16-.22,0-.11-.09-.05-.1v-.13l0-.08-.12.11,0,.36v.36l-.13.59-.37.43-.12.1h-.18l-.11.11-.26,0-.12-.21-.11,0,.24.68.06.07.06.17.06.1.22.49.27.19h.12l.08,0,.05,0H395l-.16.31,0,.07.07,0h.14l.11,0,.1.1,0,.1-.25.05H395l-.08,0-.53-.71,0,.15.19.32.18.43,0,.1,0,.1.16,0,.28.16,0,.08,0,.06-.28-.17-.09,0,.14.15.05.12.25.3.08.14,0,.13.06.16.1.11h.19l.19.07.19.12.21.14-.07,0h-.06l-.48-.27-.09,0,.07.11.48.52.66.59.45.59.1.25.4.37.19.22.15.36.19.2.45.47,0,.15.53.53.21.29v.22l0,.07,0,.1.13.24.14.2.07.06,0,.05,0,.06.12.35.12.27,0,.3-.06.14-.07.19.08.21.07.17.14.19.19.2.08,0h.13l.35-.06.24-.15.15,0h.3l.13.07-.13.08-.47.16-.5.05-.36.05h-.17l0,.07.09.13.12.36.21.5.56.8,0,.58.38,1.17.51,1.26,0,.21v.32l-.05.13-.69.61v-.07l.07-.08,0-.07-.1,0-.11.14v.12l.13.39.14.34.06.34v.32l.14.26.07.37.3.56.06.35.18.2.16.27,0,.25.17.38v.26l-.2.89-.05.68-.26.63-.21.32-.41.46-.55.23-.39.23-.22.51-.79.81-.15.65-.3.57-.3,1.24-.53,1.25-.17.55-.11.24-.16.17-.11.1-.22.11,0,.18,0,.16,0,1.09,0,.42-.11.35-.14.79-.07.46,0,.6,0,.54.32.6.15.44.1.15.45.49.24.39,1,2.44.23.36.19.74.28.87.71,1.26.08.29.15.36.65,1,.25.58.09.56,0,.22-.07.24-.08,0,0-.06L402,293l0,.24.07.45,0,.42,0,.37-.1.88v.33l.21.78.25.54.1.55-.08.46v.25l.06.38-.07.42.14.53v.8l.25.25.07.19,0,.21-.1.14v.26l.14.48.1.63.09.25.68,1.35.33.44.22.19.63.73.22.2.07.06.47.86.37.92.37,1.6.27.8.58,1.35.48.87.42.65.08.2.14.89v.33l-.05.54-.18.32-.28.21-.19,0-.13-.16-.15.08-.11.17,0,.31.15.21.06.25.16.14.14.36.2.16.09.22.22.49,0,.18V318l-.24.11-.06.3,0,.27.1.26.09.13,0-.42.09-.13.07-.05H409l.08,0,.12.07,0,.19v.15l0,.1v.15h.14l.11,0,.3,0,.09.16H410l.06.07.1.13,0,.18-.06.1h.2l.47.39.45,0,.15,0,.19,0,.91-.57.21-.09.51,0,.23-.1.23,0h.15l.38.12.21,0,.43-.05.49,0,1-.63h.35l.3-.08.37,0,.39.15.7.1.18,0,.5-.15.23,0,1,.24.84.33.48,0,.18-.24.22-.18h.35l.62.2.2,0,.14,0,.06-.37.33-.24.39,0,.9.18.39-.08,1-.36.62-.32.87-.55.22-.08.78-.59.51-.29.9-.69.62-.62.79-.69.56-.42.21-.09.31-.21.72-.75.42-.54.45-.61.51-.78.33-.36.35-.67.38-.45,1-.91.24,0,.13-.05.16-.09.58-.44.2-.27.38-.63.36-1.3.13-.36.36-.77.12-.51v0l.2-1.26.07-.37h-.08l-.06.09-.11.3-.09-.07-.07-.09-.13-.11-.1-.15-.1-.2.15-.22.15-.16.18-.38.37-.31.84-.44.39-.13.66-.22,1.64-.41.82-.31.36-.21.23-.23.42-.53.12-.22.16-.52,0-.09h-.08l-.05.14-.13,0-.06-.09,0-.2.33-1.11.21-.47-.11-.42,0-.25.16-.6V295l0-.12,0-.13v-.14l-.08,0-.08.13-.07.3v.18l-.05.11-.13-.13,0-.3,0-.48-.07-.6v-.24l-.25-.57,0-.43-.22-.86-.19-.3-.22-.25-.11-.2v-.15l.16-.66v-.35l0-.23-.07-.12-.13-.15.15,0,.25.26h.2l.92-.62.65-.65.45-.33.27-.16.32-.12.11.07h.11l.08-.3.12.17.16,0,0-.16.2-.24.1-.11.48-.42.33-.35.05-.1.05-.18.14-.12.11,0,.43-.33.58-.31.71-.33.44-.11.09-.09.13-.07.5-.11.53-.15.08-.06h.09l.09,0h.27l.16-.07.27-.05.22-.26.13-.09.83-.39.31-.21.17-.06-.09-.3.15-.08.26,0,.27-.31,0-.09v-.09l.23-.22.23-.2.56-.57.22-.44,0-.14-.06-.17.05-.06.11,0v-.11l0-.17L458,280l.13-.1,0-.15,0-.18,0-.14,0-.07,0-.14-.08-.11h-.1l-.19.24v-.18l0-.13.17-.2,0-.16-.14,0-.09-.08v-.09l0-.58,0-.48v-.33l.09-.18-.05-.17,0-.14v-.23l0-.12v-.15l-.27,0v-.1l0-.06.24-.15.05-.13,0-.26,0-.23-.13-.08.09-.2v-.17l0-.41.08-.23,0-.14,0-.2-.09-.4.1-.43-.11-.25.05-.14.16-.16.12-.23,0-.09,0-.06,0-.14.18-.19-.22-.16.15-.09.13-.1-.19-.21-.09-.22,0-.05,0-.07-.08-.13-.34-.26-.16-.09-.1-.1h-.21l-.07-.15-.16-.16-.28-.06.13-.17v-.16l-.08-.24,0-.31-.12-.36.06-.45-.35-.55.07-.07,0-.09-.21-.31-.11-.58,0-.19.08-.22.25-.47v-.41l-.2-.15-.09.08,0-.56.16-.35.19-.27.19-.15.08-.21-.14-.31-.37-.16-.1-.27-.19-.29-.11-.12-.17-.11-.21-.27,0-.27-.08-.28.06-.4.23-.5.16-.21.21-.58.07-.13.08-.2,0-.17.19-.41.06-.17,0-.05.13-.11.18.05.26-.29.35-.64.05-.07.07-.1.11-.14,0-.08,0-.09.14-.25.12-.42.08-.08.1-.18.13-.18.27-.19,0-.16.16-.3V255l.11-.27.13-.11.27-.13h.5l.37-.28,0-.11.18-.13.06-.15,0-.12v-.23l.05,0,.07,0,.05-.13.06-.08.13.06.1,0,.33,0,.26-.14.34-.33.22-.23.23-.29.27-.44.1-.11.09-.18.13-.16.28-.22.25-.23.41-.44.15-.1.21-.26.17-.13.17-.14,1.7-1.52.55-.44.69-.46.67-.54,1.28-.76,2-.88.49-.31,1.85-1.53,1.42-1.3,1.05-1,.6-.89,1-1.05.94-1.34.13-.47.35-.74.27-.42.51-.6.24-.34.21-.38.24-.61.56-.45.43-.61.09-.22.26-.45.47-.51.12-.27.32-.36.06-.58.12-.44.11-.68.08-.16.22-.09.37-.07.12.07.23.05,0-.07,0-.11-.15-.06-.2-.14,0,.05v.11l-.26.07-.06,0,0-.06.09,0,0-.09.07-.12,0-.13,0-.87,0-.54.13-.35.2-.3,0-.18.06-.18-.13,0-.8-.36-.33.06-.25.23-.14.19-.77.35-1,.09-.55.19-.68.09H479l-.46-.18h-.21l-.28,0-.9.25h-.64l-.48-.17h-.14l-.38.12-.56.32-.87.31h-.22l-.42-.13-.48-.06-.42-.13-.25.05-.77.26-.86.38-1.15-.08-.22-.1-.23-.18-.6-.54L468,227l-.34-.68-.38-.35-.16-.15-.25-.07-.27,0-.26,0-.29.08-.14,0-.09,0,0-.15.24.05.36-.35.53-.15.49-.25.15-.11.09-.13.08-.2-.09-.38-.1-.21-.31-.44,0-.1-.05-.25L467,223l-.08.19-.35-.14-.1-.34-.41-.45h-.25l-.08-.4-.18-.41-1.16-.92-.33-.58-.56-.84-.76-.32-.32-.32-.18-.12-.22-.08-.27,0-.2-.1-.23-.31,0-.14,0-.25-.12-.13-.22-.18-.12.11-.06.19,0,.16v.1l-.08.15-.12-.2-.15-.51-.1-.16-.15,0-.13-.55-.23-.3-.11-.59-.08-1.14-.17-.77-.2-.74-.53-1.27-.06-.15-.48-.35-.09-.15-.07,0-.1,0-.14-.19-.1-.17-.29-.33-.38-.33-.26-.07-.14-.08-.11-.16-.18-.59L456.2,208l.07-.45-.09-.71,0-.59.11-.34-.08-.38v-.35l0-.19,0-.26.14.07.07.08,0-.07v-.08l-.09-.17-.24-.32-.28-.59-.06-.39v-.54l-.07-.18-.81-.71-.34-.53L454,201l-.13-.11-.09-.15-.19-.22-.22-.73-.06-.38,0-.73,0-.14.07-.16.11,0h.08l.32,0-.31-.3-.29-.22-.15-.26-.38-.48-.6-1.51-.31-.69-.19-.56-.43-.77-.49-1.2-.18-.23-.06-.9-.07-.31-.08-.19-.21-.17-.07-.21-.19-.41,0-.2v-.44l-.1-.18-.24-.19-.32-.38-.34-.54-.24-.3-.07-.15,0-.17-.08-.19-.24-.34,0-.14,0-.43,0-.32-.06-.15-.32-.35-.06-.23.12-.25.18-.22,0-.17.2-.09.14.4.11.64.08.16.08.12.1.27.39.51.1.22.12.46,0,.18.07.29.32.42.34.33.31.49.56.53.35.17.22-.26.19-.27.08-.19.08-.56.42-.86.34-1.13.26-.34.12-.09.16-.17v.16l-.09.29-.43,1.39-.07.47-.25.53-.15.24v.19l.21-.13.22.07.51.09.2.13.46.7.27.7.35.41.15.43.34.45.11.26.29.4.48,1.13.31.17,0,.3.1.34.19.15.12.12.41.8.12.32,0,.17,0,.25-.11.19-.09.1.29.48.17.35.2.38.2,0,.15,0,.21.21.2,0,.11.14.24.16.37.35.33.46.14.35.3.57.08.25.06.33.07.13.2.25h-.12l.1.17.14.09,0,.15.1.24,0,.44-.07.21-.09.19-.06.36-.09.32.07.24.11.25.09.32v.18l-.14.26.33.75.4.54.22.49.22.29.3.24.41.08.78.65.25.39.29.16,0,.09,0,.15.1.2.12.15.36.9,0,.21.08.26,0,.23v.18l.39.51.12.43.27.55.17.28.59.5.46.54.06.38.08.29.18.17.12.2v.2l.18.15.1.15,0,.18v.18l.1.25v.17l0,.73-.32.77.12.61v.09l0,.13-.1-.07-.08-.07-.09.19.39.24.07.27.07.15v.08l-.06.07,0,.1,0,.1.12.47v.07l0,.08.05.3.08.3,0,.4.28.34.07.35v.12l-.16.77.43.93v.29l.32-.07.4.18.19.14.15,0,.23-.05h.31l.21,0,.56-.26.27.13.29,0,.31,0,.17-.25.12-.11.48-.11.32-.32.27-.2.56-.08h.59l.62.06h.34l.26,0,.4-.14.57-.08.35-.09.49-.37.48-.17.14-.11.15-.06.59.15h.36l.3-.06H479l.24-.13.34-.28.17-.17.1-.2.13-.09.53-.25.43-.14.75-.16h.55l.37-.13.4-.21,1-.13.65-.13.6-.19.17-.07.15-.12.17,0,.3-.14.26-.08.28-.13,0-.22-.07-.42.16-.44.21-.24.27-.19.29-.15,1.07-.29.45-.12.65,0,.36-.18.39-.1.25-.17h.64l.39,0,.2.06.22.11.62-.11.24-.23.24-.33.05-.12,0-.14-.08-.13.05-.17.51-.51.29-.07.8,0h.57l.24-.06.37-.35.29-.88.38-.32.28-.14.47-.12.53-.05h.51l.14,0,.15-.07,0-.28,0-.23,0-.39-.07-.38v-.15l.08-.26.15-.31.11-.35.06-.26.2-.2.36-.46.14,0h.16l-.05.19-.06.18.12.07.17,0,.26,0,.14-.2.37-.62.48-.63.39-.35.51-.27.15-.13.35-.58.31-.34.08-.22.27-.34.06-.18.05-.25v-.19l-.26-.1-.33-.1-.2-.19-.23-.31-.21-.4-.31-.37-.08-.23-.14-.23-.15-.15-.1-.27-.38-.3-.17,0-.22,0-.14,0-.41-.24-.6-.14-.44-.13-.79-.32-.19-.14-.41-.41-.26-.42-.25-.32-.27-.55-.17-.6,0-.08.07-1.21-.12-.19,0-.13,0-.09.11-.1L497,197l0-.21,0-.26,0-.06-.07,0-.07.09-.1.17-.16,0-.07,0-.07,0-.2.3v0l-.13.3-.19.25-.92.58-.2.21-.25.19-.05.14-.46.39-.76.45-.21.19-.08.2-.1.12-.1.06-.09.15-.1.22-.14.16-.2,0-.33.15-.55.17h-.19l-1-.14-.62-.15-.79-.08-.29.07L488,201l-.27,0-.44-.06-.13-.07-.1-.15v-.39l-.07,0h-.15l-.08-.12,0-.08-.08.11h-.07l-.12,0-.17,0-.17-.06.15-.29.11-.11v-.09h-.15l-.14-.1.27-.06.07-.05.26-.47.12-.15.06-.19v-.21l-.06-.3-.07-.24v-.14l0-.16.11-.34.11-.21,0-.27-.3-.26-.24-.34-.33.14-.24.2-.25.55-.09.24-.15.24-.09.11,0,.1v.49l.09.64,0,.08-.08.13-.15-.19-.1-.21-.21-.29-.06-.49-.1-.27-.33-.34-.08-.12-.08-.3-.11-.21-.08-.26-.08-.34,0,0h.09l.08,0h0l.16-.44,0-.22-.14-.12-.17-.17v-.34l0,0,.12.06.1,0h0l-.31-.4-.53-.32-.34-.46-.27-.09-.24-.3-.19-.3.13-.11-.16-.1-.14,0-.36-.21-.21-.23,0-.09.06-.07,0-.22-.07-.14-.27-.41-.18-.51,0-.22-.1-.21-.1-.21,0-.14-.06-.16-.15-.32-.13-.19-.13-.53,0-.15-.06-.18-.11-.08-.13,0-.19,0-.25-.08v0l.21-.14.33-.27.16.06.09,0,.11,0v-.1l-.1-.23-.13-.28-.05-.26,0-.08V187l.19-.06.15,0,.42.22.2.06.2,0,.1,0,.17-.11H482l.08-.05.11-.13v-.27l0-.2.06-.15.26-.1-.06-.13h.27l.19.1,0,.14-.12.07-.19-.08h-.1l-.1.05,0,.09.05.07.75.45.24.25.92-.33.18,0,.09.35.07.29.11.12.29.46.31.32.19.3,0,.19-.07.28,0,.15.24.08.16.14v.13l-.08.17,0,.13.3.22.08.13,0,.48.06.18.27.5v.2l.45.53.14.11.16.06.36,0,.39.08.32.27.57.26.24.3.06.23.09.16.58.45.72.36.22.15.09.21.39.31.24.06.52,0,.36.11.55.28.24.2.24,0,.29-.1.57-.33.29-.11.27.06.21-.12.17-.21.13-.09.61-.09.39-.2.35-.08h.15l.76.22.16.1.19.23.13.2.1.24.05.27v.69l.17.48v.27l.09.27.13.29.82.21.12.17.3-.07.16.13.37.14.23,0h.45l.55.12.49.35h.37l.49-.08.32.2.42,0,.15.09.27,0,.76.22.25-.25.16.06.05.19.09.11.9.29.27.11.35.11.17-.09.09-.09.43.16.34,0,.38,0,.14-.1.1,0,.1.07.13.15.16,0,.11-.09.28-.1h.19l.72.15.33,0,.23.08.42.07,0-.18.13-.12.35,0,.44.13h.11l.15-.1.13.07.06.09.79.28.1.07.13.06.26-.25.6,0,.72-.09.57.09.43-.11.73,0h.2l.15.05.13,0-.12-.1-.09,0h-.48l.08-.13.12-.07h.22l.21.08.21.22.05.23.24.36v.25l-.09.39,0,.16.81.21.14.09.18.86,0,.24V203l.1.19.13.07,0,.05,0,.06,0,.17.11.14.18-.07v.11l0,.13.32,0,.1-.15.17.17.11,0,.07-.05.06.08.09.14.08-.09,0-.12,0,.28.07.29.23,0,.19-.18.15-.08L522,204l.29-.07-.33.18-.38.25-.08.12.19.46.2.4.35.32.83.51.87.27.16,0,.24-.15.58-.16.15,0h.13l.17.08.07-.06.07-.12.08-.1.12,0,0,.12v.08l-.15.06-.26.31-.35.5-.2,0h-.16l-.41.18-.18,0-.16.12-.22,0-.59.23-.08,0-.08-.09-.12-.18-.16-.06-.15.1,0,.21.06.2.35.48.37.35.3.38.4.4.54.75.17.19.7.61.47.25.33.08.31,0,.79-.22.38-.19.95-.32.13-.14.42-.63,0-.28-.08-.15-.08-.11-.13-.05-.14-.07.09-.08,0-.12.15-.13.18-.08.07-.13.09-.21-.13-.13-.12-.06.31,0,.25.07.29,0,.23,0,.21.09-.21,0H530l-.16.07-.09.4.19,0h.17l-.12.07-.12.12-.13.38.62.07.29,0,.28-.07-.19.09-.46.14-.2.13-.23.18.11,0,.14,0-.1.07-.14.12.11.43.11.11.13,0v.36l.06.27v.33l0,.24-.43,1-.13.52v.07l0,.09,0,.38.14.14-.1.14v.08l0,.11.4.22-.36-.08,0,.1v.07l0,.3.05.22L530,215l.17-.28,0,.29-.07.19-.19.3-.07.2v.09l.08.15,0,.45,0,.23,0,.35.08.41.18.62,0,.2.14.71.08,1.57.19.67,0,.21.25.41.12.35.1.12h.21l-.14.17.08.08.07.12.15.2-.27,0,.16.21.09.49.17.28.09.11.25.42.11.14.1.16.09.18V225l.12.41v.1l0,.26.2.43.1.39v.33l.11.92.05.21.11.29.12.59.44,1.1.06.08.17.15.2.32.19.24.21.51.15.23.2.65.12.58.29.82,0,.17.14.27,0,.07v.17l0,.13.05,0,.18.21.18.82-.09,0-.09,0,0-.35,0-.25-.11-.18-.08-.05.06.53,0,.47.12.46,0,.06.07,0,0,.06v.14l.12.4.12.13.66,1,.19.21.46.39.43.17.16-.09.39-.1.63-.35.16-.25,0-.32.15-.46.19-.19.32-.21,1.19-.25.48.06.4.16-.11-.13-.16-.08-.34-.08-.18-.06-.13-.14-.06-.12.06-.23.14-.24.6-.69v-.28l.14-.16.17-.1.29,0,.12,0,.16,0h.18l.18,0,.09-.92.07-.89,0-.15-.06-.15-.22,0,.12-.11.11-.15-.06-.27,0-.24.23-.6.29-.5.13-.12.24-.3.22-.49.34-1.38-.09-.16-.35-.23-.1-.17.21-.2.15.23.05.18.08.09-.09-.43v-.19l0-.18-.13-.43-.05-.33.07-.15.08-.12,0-.27,0-.21-.1-.48-.05-.58.14-.52.46-.78L545,223l.56-.17.12,0,.15.06.08.22.08,0,.11.06h.12l0-.1.09-.15.22-.15.27-.62.11-.15.25,0,.64.12h.1l.81-.26.26-.14.15-.21,0-.09.05-.16v-.08l-.08-.13,0-.12v-.09l.17-.24.52-.34.82-.33.49-.28.42-.34.42-.43.18-.13,1-.4.18-.21.62-.57.34-.39.18-.16.14-.17.06-.16,1-.74.47-.22v-.06l-.14-.06-.31.14h-.1l0-.06.2-.28.46-.26.09,0,.1.05v.24l-.1.05,0,.06.16,0,.59-.16.77-.17.13,0,.06-.05,0-.09-.12-.15h.1l.16.11.16-.16.12-.17.55-.26,0-.09v-.14l.17-.23.2-.17.12-.16-.07-.11,0-.48-.09-.31.06-.27.21-.27.33-.26.21-.08,1-.16.31-.13.28-.19.24-.36.12-.1.13-.15-.15-.14-.14-.08-.1-.1,0-.26.09.25.18.11.22.19-.05.23-.21.5-.11.21.13.13.27,0,.06-.15,0-.13,0,.07.27.26.29-.07,0-.12-.05-.26.21-.61,0,.12.09,0,0,0v.07l-.15.57v.16l0,.09.06.08.2-.15.06-.17.09.2.12,0,.18,0v-.22l0-.17-.13-.23h.17L564,211l0,.17v.31l.14.2.13.14.09.05.16,0,.22-.2.11-.19,0-.26,0-.39,0-.13.08.63,0,.27v.2l.13-.09.09-.13.19-.07.13-.13.1-.23,0-.17v-.25l.07-.21.23-.15-.22.32,0,.23,0,.19.06.21.25-.15.16-.07.14,0-.27.28,0,.12v.16l.12.09.05.07h.15l.13-.15.17-.3.31-.26.12-.08.09-.08.07-.22,0-.16-.12-.23-.08-.12,0-.1,0-.11-.08-.15,0-.16.06-.12.19,0-.14-.19v-.15l.13-.05.15-.1,0-.15v-.14l-.13-.18-.27-.07-.24-.21.29.08.3,0,0-.11v-.14l0-.09.06,0,0,.13,0,.2.06.37-.08.38,0,.16.3.68.22.29h.43l.14-.05.22-.18.21-.12.16-.18v.19l.08.2.3.47.07.22.12.24.1-.09h0V211l-.09.18,0,.16.09.6.16.44,0,.37,0,.74.26.43.09.22.11.21h0l.1.17.43.57.21.39.05-.34,0-.24h.05l.09.21.13.12.07.17,0,.08-.06,0-.12.15.07.08.11.06.24-.27.07-.12.05-.13.06.07-.14.4H572l0,0-.12.1-.09.11.23.49.13,0,0-.1-.06-.31.2-.05.22.05.1.05.06.06.28.24h.26l-.11.12-.11.16.11.1.14.09,0,.11,0,.08.13.17.09.08.15,0,.07.1-.09.23-.17.11-.13.06-.2-.08-.28-.31h-.1l-.09.06.19.4.2.36.18.16.26.15.08-.12,0-.08,0-.32.14-.07,0-.18.05,0,0,.3,0,.54,0,.1.3.26H574l.15.28v.22l.29.67.07.81.12.27,0,.28-.1.55-.17.29,0,.06-.08.38-.12.18-.13.47-.07.14-.12.1-.19.82v.23l.15,0,.31-.16.13-.18.2-.2.11,0,.06-.05.05-.19.06-.17,0,.12V224l-.12.32v.23l-.07.14v.34l.3-.12.11-.12,0-.15.08-.16v.09l0,.11V225l.08.35.29,0,.2,0,.11-.1.25-.31,0-.14V225l-.13.21,0,.26.1.07.08,0,.37-.22.28-.27.08-.2.12-.19.53-.14,0-.06,0-.11.08,0,.11,0,.34-.12.07-.07-.16-.27v-.14l-.08-.3H578l.06,0v.23l0,.13.15.18.14,0h.16l.25-.08.32-.29.1-.14.12-.29.12-.22-.09-.38.14-.2-.06-.09,0-.12.23.19.2.25,0,.1.2.16,0,.06,0,.37.09.32.12.16.07.32.27,0h.24l.1,0,.13,0-.14.1-.07.12,0,.43-.09.23-.07.26.24.32.06.95-.08.25.09.27,0,.68.1.26.15,0,.15.25-.18-.11,0,.09.11.41,0,.27.19.38-.09.36,0,.19v.39l.08.14.15-.68.08.1v.2l0,.22.32.55.11.41.16.29v.37l.07.29,0,.16,0,.23,0,.26-.1.2.1.2-.13.09-.05.11.06,0h.14l-.09.2,0,.17V234l-.1.09,0,.08,0,.14v.13l.12.05.24-.1.07.08.07.05-.19.1-.11.15v.14l0,.18,0,.22,0,.18-.15.22,0,.3-.17.24-.16.25-.07,0-.08.08.06.68-.08.35,0,.16.08.16.22-.29H582l-.35.71-.18.56-.12.13-.18.41-.15.66-.2.4-.07.46v.25l.11.42.11.09.12,0,.13-.14.06-.14.17,0,.11.09.13.11.15.42.16.09.2.14.15.17,0,.25.06.1.22,0,.15.22.07.12.09.4.15.09.2,0,.14,0-.11.28.09.14.13,0,.1.1-.08.47.33.29.48.67.06.25.19.31.14.42,0,.43-.08.39.16,1.14.24.83-.05.57.07.31.19.28.06.16-.08,0-.1.06.13.22.13.19.33.34.17.33.34.48.05.24,0,.27-.15.25.11.1.11.06.21.29.53.27.21.27.5.45.8.49.34.41.34.16.91.58.08.11,0,.14.09.22h.15l.32-.22.25,0,.2.07h.16l0-.2v-.15l.06.1.12.11.05.09,0,.08,0,.08.12.1.16,0,.06-.05,0-.13-.1-.51-.44-1.15-.24-.53,0-.15-.54-.44-.1-.14-.08-.2.07-.68,0-.24.08-.29-.15-.32v-.21l.15-.41.17-.85v-.57l0-.38-.39-.88-.18-.32-.22-.26-.17-.09-.21-.19-.49-.49-.36-.66-.13-.08-.35-.11-.59-.52-.34-.61-.22-.25-.2-.08-.2,0-.31.05h-.29l-.44-.31-.18-.19-.22-.22-.2,0-.14-.07-.09-.19-.31-.49-.07-.21V243l.21-.08.12.13v.15l-.1.11v.07H585l.07,0,0,.16,0,.38.21.13-.07-.23-.08-.22-.23-1.74-.08-.33-.12-.19,0,.08v.06l-.06,0-.13-.19-.13-.17-.05-.18,0-.92,0-.17-.08-.2-.22-.07-.7.15-.12,0-.16-.1,0-.18.06-.12-.17-.46,0-.22.05-.42.09-.49v-.19l0-.12.16-.13.13-.36.47-.64.09-.43.12-.23.17-.5.24-.4.17-.17.11-.38.21-.22.14-.25.06-.38,0-.7.05-.17.27-.55-.06-.27-.11-.17.07-.22.23-.16.24-.08h.63l.15-.1.1.1.51.17.11.07,0,.15-.06.11,0,.25-.12.31,0,.45-.08.21.06.13.11.08.29-.09.73.17.59-.1.22.12.1.11.12.07.18.08.19.2.18.25,0-.06,0-.07.15.31.18.17.21.16.07-.1,0-.09.12.13.2.3,0,.26.17.26,0,.14h0v-.07l0-.06.1.14v.25l.21.28,0,.19-.06.33v.29l.07.33.25,0h.17l.13-.1.13-.22.15-.12.12.09.11.12.12.36-.11.26-.19.07-.11.1,0,.13.1.12.15.1.38-.12.08-.15.06,0,.07.12.66.15.32.29.17.17.15.16,0,.12.1.09.18,0h.12l.13.19.19,0,.12.08.11.16v.2l-.22.05-.19.09-.15.43-.13.86-.06.8.15.13-.28.28.25.05.47-.06.17-.15.29-.17.19-.32.22-.25,1.44-.52,0-.11,0-.11-.08-.19-.09-.18-.53-.72.19.1.54.64.34.27h.22l.12-.08.07-.07v-.16l-.1-.23-.62-.71-.09-.18.61.64.21.16.08,0,.13-.08v-.19l.12-.13.16-.1V239l-.11-.09-.26-.1-.27-.16h.05l.32.05h.23l0-.09v-.08l-.07-.14-.08,0h-.12l-.07,0,.26-.12.16.22.18.12.09,0,.05-.08.06-.36.06-.09,0,.06,0,.16.1.13.22.07.07.12,0,0,.27-.11.18,0,.21-.13.6-.26h.33l.22-.35.17,0h.2l.32-.2.3-.22.31-.06.27-.23h.35l.09-.27.06-.26h.2l.09-.13.06-.12v-.1l-.06-.14,0-.15.08-.12v-.06l0,0v.11l0,.11,0-.09v-.08l-.07-.18,0-.71.2.06-.14-.54.13-.12.13-.08.09.17.11.16,0-.25.05-.49-.09-.16-.1-.41-.07-.13.06-.36,0-.3,0-.55.07.19,0-.18-.08-.43,0-.09,0-.12,0-.25-.09-.25-.08-.36,0-.34-.11-.19-.14-.43-.06-.38-.13-.43-.15-.12-.13-.13-.19-.23-.24-.39-.09-.24-.21-.26v-.22l0,0-.07,0-.07-.16-.15-.18-.11-.19-.08,0h-.11l-.12,0-.1,0-.05-.17-.15-.19-.26-.19-.1-.1,0-.07-.38-.35-.35-.25-.1-.34-.37-.38-.37-.34-.41-.66-.29-.2,0,0,.24.11v-.33l.09-.14-.16-.24L599,222l-.19-.09-.15-.14-.34-.42-.09-.16-.05-.16-.12-.22,0-.07-.2-.42.05-.19L598,220l.19-.34v-.18l.07-.18,0-.26.41-.72.17-.09h.22l.51-.42.27-.15.13-.22,0-.29.45-.41,0-.16-.1-.34,0-.08h.09l.07,0,.12.08.13,0,.11,0H601l.09,0h.11l.07.09.11,0,.41-.2,0-.15,0-.14.08-.19.25-.1.24,0,.15-.07.23-.17h.34l.2,0,.17-.07.2,0,.13-.12.06-.16h.06l.06,0,.11.16.13,0,0-.07-.06-.16v-.35l.23,0,0,.08-.06.11,0,.1.12.11.13.16,0,0h.16l.16,0h.22l.14.09.06.11-.08.11,0,.1.13,0,.15,0h.27l.18-.05.24-.1,0-.34h.09l.06.05.16.33h.12l0-.07.13.18.21,0,0,.22-.3.06,0,.24-.19.19,0,.17-.11.29,0,.09.08.09.08.13.06.15,0,.19.13.24.17.1,0,.06,0,.1H607l-.09,0,0,.11.11.15.38.1.46,0,.23-.11.09-.15.07-.07v-.12l-.38-.36,0-.1.09-.06,0-.08,0-.11-.38-.07,0-.19.1-.19.3-.18.1-.08.06-.16,0-.19,0,0,0,.22.09.05h.14l.18-.13.27-.21h.22l.25-.06.06-.17h.09l.08.06h.25l.2,0,.16-.09.44,0,.17-.09.07-.1.14-.12.1,0h.11l.12-.12,0-.16.16,0,.19.09.15.11.23.06.11,0,.07-.07v-.25l0-.14h.07l.07.06,0,.07,0,.09.14.15.18.1.11-.08.06-.08.14-.08.18-.08.19.15.11-.05.06-.06.09-.39.18-.17.1.29h.25l.13-.11.09,0,.1,0,.18,0,.1,0,.07-.16,0-.11-.07-.12,0-.41-.12-.22-.07-.08,0-.14-.17-.18v-.1l.23-.05.05-.12,0-.13.16-.09.21,0-.06.1,0,.12,0,.12,0,.23.08.14.18.16.13.29.2.18.17.05,0,.06-.24.1v.07l.06.07h.2l.22.07.26.14,0-.06,0-.11.09,0v-.09l-.08-.05,0-.09,0-.09.16-.1.16,0,.15.13h.12V214l.06-.07,0-.09.13-.11.12,0,.06.25.21,0,.1,0,0-.1.21,0,.17-.15.23-.06.19.11.18.13.24,0,.08-.09.06-.13.17-.05.24.09.19.06.45-.13h.2l.11-.06,0-.06.06-.06.19.1H621l.11-.12.07-.38.11-.07h.17l.07-.1,0-.11-.1-.07h.17l.1,0,.23-.14.13-.41.25.07.1.11.14,0,.16-.1.15-.13h.08l0,.16,0,.11.11-.06.11-.24V212l0,0,.07-.1.24,0,.1.05.1-.21.17-.15.2,0,.15-.2.34-.28v-.17l-.05-.12-.29-.06-.06-.08v-.1h.11l.08,0h.15l0-.17.17-.13.22,0,.2.13.24,0,.31.07.2-.08.15-.26,0-.08-.1-.07v-.06l.15,0,.24-.11.19,0,.11-.15-.07-.28.15-.17.1,0,.43.07.11-.05-.07-.17-.15-.12,0-.13.08-.07.18,0,.16.06h.16l.15.12.19.1.07,0v-.1l-.14-.35,0-.24.16-.26.08-.2,0-.19-.24,0-.18.11h-.18l-.14-.07-.23-.34.19,0,.16.11.11,0,.2,0,.23-.14.28-.22.22-.13.18-.06v-.08l-.07-.1v-.08l-.08-.22-.11-.15-.18,0,0-.12-.06-.13v-.12l.13.09.12.05.12-.09.06-.12.07,0,0,.11v.13l0,.11.08,0v.16l.18.07.16-.09.1-.08,0-.24.1-.22.33-.45.23-.11.19-.21.16-.12.15-.2.06-.15-.07-.23.17-.11v-.11l.06-.12.33-.3v-.11l-.13-.1,0-.07h.13l.17,0,.14-.07.18-.25.15-.29.11-.07.15,0,.09.28H632l.34-.19.2.09v-.17l-.11-.35-.1-.28.1-.15.15,0,.09-.07.08-.18-.24-.2.21.06.08-.08,0-.13-.28-.27-.15,0,.09-.13.11-.09.25,0,.13,0,.15.08.11.22h.14l.16-.79,0-.26-.11-.06-.14.05-.29.18-.39,0,.16-.1.22-.09.51-.4.38-.18-.14-.05-.15,0-.26-.15-.27-.08-.47-.59-.18-.15-.17-.06h-.2l-.55.28-.57,0-.26-.41-.3.1-.19-.05-.07,0h-.07L630,198l.44-.21.38,0,.39.11.16-.07.1-.17.14-.19.67-.27.24-.19.24-.09.31,0h.19l.24-.09-.07-.33-.08-.24-.23-.38-.62-.42-.27-.35-.3-.23-.24-.09-.29-.18-.06-.24-.06-.15-.45-.11-.32.13-.33.08-.32-.1.08-.05.06,0,.17,0,.72-.26.29.07.26.14.35.4.35.08.26,0,.17,0,.66.39.17,0h.21v-.26l0-.19-.16-.23-.15-.14-.36-.19-.08-.08-.09-.13,0-.38-.12-.13-.09-.08L632,193l-.27-.24,0-.23.11-.18,0-.4-.24-.52-.2-.61-.21-.36v-.18l-.13-.35-.16-.72-.1-.25-.12-.13-.47-.32-.4-.14-.37-.23-.3-.34-.15-.09-.31,0-.06-.24.14-.37.3-.22.2-.42.21-.12.19-.24.25-.26.19-.06.12-.05.1-.11.15-.1.11-.13.07-.14.36-.14.14-.11,0-.05-.17,0-.16-.25,0-.07.15-.12.18,0h.12l0,.09,0,.19,0,.07.09.07.27-.11.25,0,.1-.08,0-.41.08-.17.14-.08.14.08.1,0,0-.09,0-.13-.16-.18,0-.05h.14l.22.11.14,0,.2-.11.57-.14.55-.19.57-.24H635l.23.05.08.08,0,.11.05.07.06.05h.14l.25-.18.14-.06,0-.13-.07,0-.08-.12.16-.15.15-.09v-.33l.21-.18-.13-.07-.23,0-.32,0-.34-.15-.12-.17-.1,0-.11.07-.1.11-.31-.05-.36,0-.27-.16-.23-.17-.35-.07L633,181l-.61-.3-.81.25h-.18l-.06,0,.06.06,0,.09-.35.27-.59.3,0,.13v.1l-.28.21-.65,0-.34-.06-.35-.18-.22-.2-.08-.13,0-.39.1-.34.09,0,.13-.09,0-.11-.06-.07v-.31l-.16-.34-.27-.23-.28,0-.26.06-1.08-.3-.49-.34-.21-.29-.16-.5v-.15l.16-.38.4-.65.18-.12.37-.06.21.09.29.33.37-.09.33-.12.26.06h.16l.17,0,.14,0,.14-.09.42-.42.1-.36.15-.23.15-.21.45-.33.55-.16,1.12-.44.23,0L633,174l.16-.13.17-.07.18-.15.2-.21.19-.13.75.11.12.1H635l.08-.06.1-.22h.06l0,.33.56.41.06.22.19.16,0,.1-.14.25,0,.08-.47.51-.25.2-.16.22-.61.21-.11.21.07.18v.11h-.1l-.13,0-.3.16,0,.07,0,.16-.07.16.17,0,.32,0h.57l.07,0-.14.09-.2.17-.09.11.09.28-.89.29-.16,0-.17.05v.26l.07.2.09,0,.07-.05.18-.09.41,0,.28-.06,0-.06-.07-.16.1-.11h.15l.12.05H635l.13-.09.12,0,.15-.09.16-.12.24-.26.25-.22,1.09-.49.25,0,.16-.12h.4l.1-.09.17-.08h.3l.18,0,.08-.12.09-.09.21.16h.72l.35-.18.19-.2,0,0,0,0-.07.21.11.11.3.2.09.19.05.25.13,0,.06-.05,0-.21.07,0,.19.15.46.3.16,0,.37.17v.24l.07.25,0,.09-.6,1v.16l.26.17h.26l.13.06.13.11h-.13l-.16,0-.22,0-.52.22-.21.17-.22.31v.11l0,.15-.4.22.17.08h.27l.18.1h.35l.09,0,.07.07-.11,0-.44.22.07,0,.15.11.43.13.09.23,0,.06.1,0,.09,0,.29-.18.22-.23.05-.1.15-.05.34.3.23,0,.11.32.1-.05.09-.14.36-.09.4.22.11,0,0,0,0,.06-.09,0,0,.06,0,.15,0,.09.1.17,0,.24.09.1.17.29-.11.23.06.09v.13l.15.31.18.06,0,.05,0,.07-.17.09,0,.09-.07-.06-.09-.25-.2,0-.22-.16-.19,0-.13.08h-.16l-.29.19-.14.22,0,.19.1,0,.32.11.1-.05.12,0,0,.26.06.25v.12l0,.2v.25l0,.17.1.15.17.17,0,.06-.07.08,0,.12.14.07.07.07-.1.23-.24.11-.14.1-.11,0,0,.1.17,0,.09.05-.07.08-.19.06-.08.1-.16.32-.09.22-.15.14.05.26.13.27,0,.26.11,0,.15-.05.1,0-.13.1-.14,0,.06,0,0,.1h-.21l-.25-.08-.08.1.12.21.29.24,0,.16v.18l0,.08h.11l.08-.2.31-.23.09.05,0,.11.15,0,.3-.37.48-.31,0,.08,0,.14-.15.12-.05.13.29.22.13-.08,0-.12.17-.15-.1-.16-.06-.13,0-.18.15,0,.1,0,.07.18.12.18.18,0,.07-.14-.15-.16-.05-.11.05-.08.12-.06h.33l.23-.1H647l.11.21.11,0,.26,0,.22.11.12,0,0-.15-.05-.2.09-.12.12-.06.27,0,.32.08.38,0,.21,0,.29-.11.27-.34.21-.37.18-.43.2-.59,0-.24-.13,0-.11.06-.07,0,0-.09,0-.2,0-.15,0-.28.08-.14.05-.2v-.39l.1-.24-.06-.45v-.31l-.14-.53-.51-1-.37-.53-.43-.72-.43-1.11-.08-.14-.15-.17-.18-.11-.07-.08-.3-.22-.35-.48-.17-.11-.25-.06-.16-.1-.21-.09v-.21l.1-.18.08-.06.13.07.07-.2v-.57l.1-.2.64-.23.22-.22.3-.07.41,0,.19-.11.26-.08.22-.15.21-.28.3-.07.22-.15.36-.13.31-.39.21-.15.79-.26.08-.17,0-.48.14-.43v-.21l-.14-.27,0-.24.17-.28.27-.21.12-.22.18-.22.14-.12.24-.11.13-.2.17-.07.31-.19.23,0,.14.05.11-.06.09-.05.26-.47-.23-.35.1,0,.38.13.17,0,.27.07.19-.16.12-.18.21-.11.29-.41.47-.48.16-.12.31-.1.07,0,.08,0-.26.25-.08.19h.17l.17,0,.45-.29.17-.16,0,.2-.14.88.38,0,.19.11h.27l.31.23.12,0h.15l.12.22.2.09.37-.14.54-.12h.26l.64-.24.32-.21,1.16-.53.5-.31.46-.21.29-.38.5-.34,0-.16.11-.17.78-1,.25-.15.33-.1.15-.17.11-.26.47-.36.32-.37.3-.24.15-.22.76-.51.63-.58.57-.41.2-.27.76-.78.26-.52.28-.19.15-.51.26-.36.07-.22.14-.2.92-.78.4-.63.48-.63.32-.2.35-.28.19-.22.52-.34.26-.24.14-.26.16-.64.36-.49-.09-.08,0-.17,0-.17.06-.1,0-.16.09-.18.08-.1.23-.69,0-.45-.08-.17v-.23l.28-.31.06,0,0-.08-.12-.07,0-.07,0-1.13.15-.68.3-.48.06-.17.08-.49.35-.47.23-.55.43-.26.3-.34.24-.15.07-.37.23-.32-.15-.17-.16-.11-.3-.29-.07-.19.26-.3.07-.28v-.52l-.33-.19-.41-.43-.06-.14h.1l.59.26.32-.21.17-.23,0-.3-.32-.15-.39-.36v-.12l-.64-.33-.66-.66-.17-.55-.12-.15-.63-.49-.12-.15-.18-.08-.82.18-.44-.11-.83-.35-.08.05.1.23,0,.21,0,.29-.09.49-.11.35-.35.46-.13.08-.27,0h-.15l.11-.19.25-.21.37-.38,0-.36-.07,0h-.08l-.24.13-.31.49-.65.3-.45.08h-.85l-.16,0,0-.09.2-.14.43-.17.3-.43.31-.08.11-.12-.44-.1-.29-.18-.27-.23.14-.05.1,0,.13-.06.35-.33-.29-.05h-.31l-.51.25-.11.14.15.22.17.1-.26.56-.28-.1h-.27l-.19.15-.17-.08,0-.36.12-.35.15-.82.13-.28,0-.31-.05-.17-.17,0h-.28l-.71-.06-.8,0-.84-.37-.23-.06-.13-.08-.07-.32.06-.17.07-.11.61-.44.45-.11.92-.48.4-.42.24-.17.71-.29.48-.25.39-.26.42-.2.43-.37.25-.06.86-.79.15-.18.1-.26.09-.11,1-.91.66-.31.49-.48.56-.16.14-.07.25-.27.39-.14.13-.1.33-.38,1-.31.11-.14.47-1,.24-.26.44-.31.77-.27.56-.32.34-.27.62-.72.66-.41.54-.23,1.3-.3.68.14.73-.15.53,0,.74.15,2.23.06.41.16.14.14.18.42.24.1.47-.12.41-.6.19-.07.54.3.48.06,1,.37.36,0,.41-.26.8,0,.45.5.48,0,.4,0,.12-.25-.14-.11-.31.06-.06-.23.2-.25.26.2.43,0,.15,0,0-.12-.09-.1-.11-.23.48-.26.29-.08h.45l1.14.46.25.06.26.16.43.14-.27.08-.13.08h.28l.23.13.19,0,.08,0,.12-.14.15-.13.11,0,.29,0,.36.1.28.13.6.66.28.15h.34l.13.05.18.18-.57.15h-.54l-.47-.09-.81.18.37.66.78.09.81-.07.18-.25.33-.08.16,0,.35.25.5.12.13,0,.44-.4.25,0,.16,0,.21-.36.69,0,.39.37.23.13.5-.06.29-.22.17-.07.49.26.26-.12h.41l.29,0v-.24l.05-.27-.39-.31-.78-.34-.48.15h-.18l-.12,0-.12-.15.14-.21.13-.17,0-.22.08-.31.21-.12h.11l.33-.62.88-.81,1-.46.63-.36.31-.27.47-.65.63-.45.31-.14.32-.18.15-.65.24-.13.22-.1.43-.32.61-.18.21-.14.69.06.55.18.17,0,.39-.16.44.08.59-.08.54-.18h.23l.22.07.24.35.14.1.1.2.37-.09,1-.38h.11l.15,0v.18l0,.14-.18.45-.2.34-.54.63-.11.09,0,.18,0,.34-.26.34-.11.17.19.06.26-.18.39-.1.2,0,.2.07-.37.58-.07.31-.06.12,0,.16.24-.07.18-.11.24-.08h.59l.35-.41.27-.2,2.52-1.62.46-.35H724l.2.07h.19l0-.13.07,0,.22,0,.11.35.13.18.12,0,.08,0,.12-.12.13-.09.14-.17-.1-.12-.39-.21,0-.31.27-.48v-.33l.12-.33.12-.17.1-.06.1-.11-.1-.28.1-.17.1-.12,2-.31h.34l.3.11.44.37.51.22.73.13,0,.15-.28-.07-.14,0v.13l0,.1-.17-.13-.48-.11-.44-.16h-.15l-.68.34-.18.16-.33.76-.06.54-.14.51-.3.2-.11.25-.1.3.34.16,0,.1,0,.14-.26.31-.6.36-.06.08-.09.17.29.37-.26.1-.26.07-.25.13h-.79l-.56.34-1,.3-.43.19-.14.13-.37.56-.21.23-.66.33-.53.52-.8.61-.3.05-.36.14-.44.44-1.11.73-.6.93-.32.3-.32.24-.22.25-.38.26-.76.37-.52.32-.29.21-.11.22-.13-.06-.49.08-.64-.15-.5.62-.48,0-.47-.2-.24.06-.09.07-.09.09.21.22.08.19,0,.17v.28l-.31.5-.28.38-.44.36-1,.62-.1.08-.1.16-.69,1.77-.22.79-.28,1.27v.43l0,1,.1,1,.28,1.71.06.52.14,2.09v.39l.06.33.13.35.26.35v.39l.14,1.27-.07,1.2,0,.26,0,.19.25.25.07.29V153l0,.21.22-.08.78-.5.64-.49.09-.19.22-.13.42-.16.62-.52.54-.73.31-.57.08-.21,0-.21V149l.12-.16.19-.5-.08-.14-.26-.12.1-.2.19,0,.15.11.07.23.13.09.45-.36.4-.16,1-.26.38.05.35.32h.16l0-.41-.19-.31,0-.19.13-.28-.07-.2-.08-.15,0-.32.21-.62.21-.33.15-.15.47-.25.5-.37.56-.27.34-.08.41,0,.32.24.68.07.22,0,.53-.4.31-.16,0-.39-.15-.33-.32-.43-.07-.2-.08-.44,0-.4.14-.45.35-.51.39-.69.14-.1.4-.15.27-.12.15-.06,0-.4.22-.15.18-.09.42.07.14-.08.2,0-.14.2-.18.13-.39.17-.2.27.4.52.27.11.16,0,.31-.24.16-.1.16-.16,0-.63-.08-.35.05-.35-.18-.13-.24-.06-.26,0-.14-.11-.09-.17v-.19l.08-.43v-.23l-.07-.42v-.12l.06-.22.39-.32.34-.23.18-.21.06-.14,0-.3-.15-.16-.86-.39h-.14l-.28.11-.15.4-.16.13V135l.05-.1-.43-.18-.2-.16-.11-.13-.06-.2-.07-.29.24-.57.23-.51.7-.73.42-.24.46-.39.18-.06.08-.06.08-.1-.11-.3.08-.06.07,0,.15.07.43-.49,0-.66.15-.56.11-.23.1-.15.19-.15.17-.07.26-.18.12-.14.08,0,.27,0,.22.08.23.12-.06.26.3-.21.28-.24.14,0,.17,0,.28.22.2.4.15.11h.2l.14,0,.14-.25.06-.47.23-.06.19,0,.29-.2L730,128l.78-.32.52-.34h.36l-.11.21,0,.21-.17.51-.15.26-.09.33V129l.06.23h.18l.13,0,.26-.21,1.15-1,.57-.26.84-.13.26-.11.83-.13h.68l.42.13h.24l.92,0,.09.13.68.42.37.57.08,0,.06.11v.21l.06.14.1.13.34.27.4.1.1-.13.07-.11.23-.64.18-.25,0-.15.05-.13.41-.16.31,0,1.17-.54.53-.33.2,0,.19-.07.18-.1.14,0,.33-.23.38-.17-.05-.18.09-.15.21,0h.18L745,126v-.15l.09,0,.12,0,.15.07.09,0-.13-.21-.05-.2.12-.09.39.23h.16l.57-.43.52-.47.41.15.68-.31.31,0,.48,0,.21-.13.23-.23.17,0,.84-.24.18-.2.21,0h.15l.38-.15,1.52-.4.24-.19.57-.26.43-.06.53,0,.07-.09-.37-.14-.08-.11v-.11l.06-.09.08-.17.15,0,.16.14h.18l.08-.1.09,0,0,.14-.1.16-.06.13v.14l.11,0,.65.06.73.18,1.91.76.16.11.16,0,0-.24.11-.23L759,123l.42-.3.21-.22,0-.28-.1-.3-.26-.08-.15-.2-.07-.22.15-.15.16-.05V121l-.11-.15-.6-.35-.21-.22v-.18l-.23-.47,0,.09V120l-.1.14-.13,0v-.13l.1-.25-.1-.13-.39-.08,0-.11.39-.12H758l.11,0,0-.58-.05-.41-.24,0-.17-.13.07-.25,0-.13-.17-.45-.13-.19-.16-.18-.15.17-.08.24-.19,0-.18,0-.53-.31-.5-.5V116l.16-.53-.08-.1-.08,0-.71.13-.45.25h-.23l-.45-.23-.79.26.18-.17.14-.06.15-.13-.09-.27-.09-.2-.15-.15-.23-.09-.24.11-.19.12-.39.12-.72.06-.49,0-.84.15-.31,0,1.16-.22.62,0,.81-.14.61-.34.74.41.26.07h.57l.48.25.17,0,.17-.18-.19-.3-.16-.19-.2-.07-.61,0-.4-.09-.22-.09.15-.07.43.15.54-.11.61.28.13.21.17.09.47.55.33.23,1.1.23.47.27.37-.06,1-.43.63-.09.45-.29.39-.35.34-.08v0l.65-.36.15-.18.28-.45.16-.19.22-.22,0-.2,0-.22-.16-.18-.38-.26-.17-.17-.1-.34,0-.4.11-.29.14-.26.13.21.4,0,.21,0,0-.2,0-.23.1-.06h.21l0-.14.08-.07.07.1,0,.39.16.11.22.1.1,0,.1,0,.15-.11.32-.38.2-.14,0,.29-.14.39-.07.11-.17.13-.1.29,0,.08-.23-.1h-.17l.1.34.17.25.21.26.24.15h.07l0,.06V113l-.09.34,0,.19.19.16.2,0,1.27.08h.44l.68-.28.25,0,.27.06.76.25.92.32.33.43.1.41,0,.43-.07.17v.15l.27.23.39.3.07.06.07.12.1,0,.28.05.24,0h.23l.41.16.53.24.5.3.22.22.39.46.2.14.34.18.13,0h.13l.28-.19.18-.15.16-.19,0,.17V118l-.15.1v.18l.19.23.24,0,.31,0,.11-.09.11-.13,0-.47.1,0,.23.11.06.13,0,.16.09,0,.61,0,.05,0,0-.15-.08-.14-.09-.1-.26-.14-.27-.1-.22,0-.09-.07,0-.11-.07-.15,0-.07.2-.09,0-.1-.19-.13-.2-.06-.19,0,0-.09.14-.09.22,0,.21,0,.42,0,.42-.15.2-.11.21-.14v-.27l-.11-.27-.19-.09h-.22l-.18,0-.18-.09.74,0,.08-.08.16-.4,0-.11h-.15l-.23,0,.06-.08.08-.07-.39-.42-.45-.27.14,0,.22,0,.36.1.22.19.07.13.1,0,.21,0,.35.11,0,.12.08,0,.24,0,.68,0,.21,0,.3.11h.1l.13,0,.12-.13-.15-.27-.33-.27-.19-.19-.09-.16.07,0,.09,0,.28.25.22.16.24.12.21.1.47.1.23-.1.05-.18v-.38l.06-.14.3-.19.52-.23.33-.06h.11l.12.1.12,0,.23-.18ZM496.14,162.65l-.06,0-.06,0-.23.05-.35-.13-.12.08,0,.18.07.18h-.1l-.09,0L495,163l-.22,0-.47.1-.21,0-.13-.21-.15-.19-.2-.05-.2.08h-.2l-.28-.09-.09,0-.17-.17-.12-.18-.09-.2-.15.41-.11.43-.16.33-.14.35V164l.09.42.17.35.12.21.14.15-.15-.31.09-.21.31,0,.31.08h.24l.1.06.06.08-.08.18,0,.2,0,.19.12.08.1.09,0,.15-.22,0-.22,0-.17-.06-.14-.14-.26.41,0,.21.05.2.11-.12.14-.05H493l.28.11.13.09.15.15.18,0v.14l0,.12.17.22.1.17,0,.21-.05.29-.07.28,0,.26v.54l-.11.57,0,.28v.62l.06.61,0,.17.05.39.09.55v.13l0,.12-.1.06h-.14l-.28,0-.18-.1.31,0,.19-.1-.3,0-.83.08-2.5.39-.89-.05-1.31-.41-.38-.19-.78-.54-.38-.35-.22-.47-.07-.11-.09-.07-.31-.11-.52-.13-.52-.08-.2-.07-.41-.22-.17-.17-.11-.27-.1-.28-.05-.31,0-.3,0-.6v-.11l0-.91v-.05l.17-.29.09-.27L484,166l.2.14,0,.13,0,.06.1-.05.08-.1.18-.5.12-.1.09,0,0-.11-.07-.26,0-.26.23-.54.17-.59.18-.25.25-.11.26-.08.27,0h.47l.45.15-.1-.34-.11-.12-.13-.12-.12-.08-.26-.13-.29,0-.15,0-.12-.06-.31-.3-.2-.22-.43-.58-.09-.23,0-.26-.05-.21-.11-.18-.42-.67-.3-.41-.18-.16-.19-.16-.09-.06-.09-.07-.14-.33-.14-.26-.27-.45-.49-.69-.1-.08-.08-.1v-.32l-.14-.24-.21-.18-.07-.09-.05-.09.14-.45v-.13l0-.28.07-.32.15-.43.15-.29.06-.19-.19.11-.26.68,0-.56-.09-.55-.09-.29-.15-.23-.21-.19-.18-.23-.22-.12-.33-.11-.06-.09,0-.13,0-.15.1-.23.19-.14.25-.15.07-.1.05-.13.06.11.09.06.08-.22.11-.16.14-.13.18-.3.13-.17.09-.19.08-.32.08,0,.08,0,.06-.09,0-.09v-.19l-.11-.21,0,0,.05,0,.13.12.11.14.05-.19.11-.06.13.06h.14l.47-.11.22,0,.22-.09.5-.36h.11l.1,0,.1.08.1.06.09,0,0-.06-.08-.14,0-.14v-.15l.12,0h.15l.57-.18.07-.1.05-.13h.25l0-.12-.05-.13.18-.11.15.08,0-.2v-.09l.19,0h.31l.1,0H487l.27-.05.24-.08.22-.14.45-.22.25-.2h.11l.11,0h.12l.21-.13.11,0,.41-.2.55-.14.23.05.66.23.06,0,.19.23.4.13h.14l.14.18.11,0,.11,0,.32-.12.1-.07.08-.1.14-.06.39.12.5,0,.23.18.07.1.11.31.06.19-.1.15-.12.15,0,.19.08.16v.58l-.24.56-.36.45-.27.51.11.21.5.27.22.21-.25,0-.35-.06-.28-.08-.49-.18-.22,0-.78,0-.66-.07-.41.11-.25-.06-.19.19-.09.12-.11.27-.22.19-.25.13-.07.14v.18l.07.11.31.29.17.24.12.06h.13l.12.07.1.13-.34-.05h-.14l-.29.05-.13,0-.13-.07-.37-.28-.43,0-.5,0-.24.09-.08.13,0,.17v.13l0,.14.11.08.28.1.44.11.19.11.1.1.18.6.21.55.14.26.19.2.07.11,0,.13,0,.16,0,.16-.07.31v.14l.11,0,.34,0,.21,0,.17.15.15.26,0,.13.06.12.1.11.13,0h.12l.12,0,.22,0,.18.19.1,0h.36l.11.05.09.12.05.51-.07.32-.11.23-.14.22-.14.33,0,.13v.4l0,.27.19.63.25.42.14.35,0,.07,0,0,0-.32.16-.66v-.1l-.13-.16.22-.43.15-.19.31-.21.12-.05.24.05.45-.06.27,0,.26,0,.11,0,.08.08.18.56.07.25.06.32.09.31.17.23.2.19.6.46.15.19.06.13,0,.14v.16Z" style="fill:#d1d3d4;fill-rule:evenodd;opacity:0.75"/><circle cx="552.85" cy="145.75" r="32.74" transform="translate(281.73 649.12) rotate(-76.46)" style="fill:#9d1c1f"/><circle cx="552.85" cy="145.75" r="20.28" transform="translate(364.67 685.63) rotate(-85.55)" style="fill:none;stroke:#fff;stroke-miterlimit:10;stroke-width:5.87842899915567px"/><line x1="567.66" y1="131.89" x2="537.77" y2="157.47" style="fill:none;stroke:#fff;stroke-miterlimit:10;stroke-width:5.87842899915567px"/></svg>views/blocking/options-group-advanced-country.php000064400000010524150755146450016311 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents the Advanced Country Blocking Options group.
 *
 * Expects $stateKey.
 *
 * @var string $stateKey The key under which the collapse state is stored.
 * @var bool $collapseable If defined, specifies whether or not this grouping can be collapsed. Defaults to true.
 */

if (!isset($collapseable)) {
	$collapseable = true;
}
?>
<div class="wf-row">
	<div class="wf-col-xs-12">
		<div class="wf-block<?php if (!$collapseable) { echo ' wf-always-active'; } else { echo (wfPersistenceController::shared()->isActive($stateKey) ? ' wf-active' : ''); } ?>" data-persistence-key="<?php echo esc_attr($stateKey); ?>">
			<div class="wf-block-header">
				<div class="wf-block-header-content">
					<div class="wf-block-title">
						<strong><?php esc_html_e('Advanced Country Blocking Options', 'wordfence'); ?></strong>
					</div>
					<?php if ($collapseable): ?><div class="wf-block-header-action"><div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive($stateKey) ? 'true' : 'false'); ?>" tabindex="0"></div></div><?php endif; ?>
				</div>
			</div>
			<div class="wf-block-content">
				<?php if (wfConfig::get('isPaid')): ?>
					<ul class="wf-block-list">
						<li>
							<?php
							echo wfView::create('options/option-select', array(
								'selectOptionName' => 'cbl_action',
								'selectOptions' => array(
									array('value' => 'block', 'label' => 'Show the standard Wordfence blocked message'),
									array('value' => 'redir', 'label' => 'Redirect to the URL below'),
								),
								'selectValue' => wfConfig::get('cbl_action'),
								'title' => __('What to do when we block someone', 'wordfence'),
								'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_BLOCKING_OPTION_WHAT_TO_DO),
							))->render();
							?>
						</li>
						<li>
							<?php
							echo wfView::create('options/option-text', array(
								'textOptionName' => 'cbl_redirURL',
								'textValue' => wfConfig::get('cbl_redirURL'),
								'title' => __('URL to redirect blocked users to', 'wordfence'),
								'placeholder' => __('Enter a full URL (e.g., http://example.com/blocked/)', 'wordfence'),
								'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_BLOCKING_OPTION_REDIRECT),
							))->render();
							?>
						</li>
						<li>
							<?php
							echo wfView::create('options/option-toggled', array(
								'optionName' => 'cbl_loggedInBlocked',
								'enabledValue' => 1,
								'disabledValue' => 0,
								'value' => wfConfig::get('cbl_loggedInBlocked') ? 1 : 0,
								'title' => __('Block countries even if they are logged in', 'wordfence'),
								'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_BLOCKING_OPTION_BLOCK_LOGGED_IN),
							))->render();
							?>
						</li>
						<li>
							<?php
							echo wfView::create('blocking/option-bypass-redirect', array(
							))->render();
							?>
						</li>
						<li>
							<?php
							echo wfView::create('blocking/option-bypass-cookie', array(
							))->render();
							?>
						</li>
					</ul>
				<?php else: ?>
					<ul class="wf-flex-vertical wf-padding-add-right-large wf-padding-add-bottom-large">
						<li><h3><?php esc_html_e('Put Geographic Protection In Place With Country Blocking', 'wordfence'); ?></h3></li>
						<li><p class="wf-no-top"><?php esc_html_e('Wordfence country blocking is designed to stop an attack, prevent content theft, or end malicious activity that originates from a geographic region in less than 1/300,000th of a second. Blocking countries who are regularly creating failed logins, a large number of page not found errors, and are clearly engaged in malicious activity is an effective way to protect your site during an attack.', 'wordfence'); ?></p></li>
						<li><?php echo wfView::create('blocking/country-block-map')->render(); ?></li>
						<li><a class="wf-btn wf-btn-primary wf-btn-callout-subtle" href="https://www.wordfence.com/gnl1countryBlockUpgrade/wordfence-signup/" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Upgrade to Premium', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></li>
					</ul>
				<?php endif; ?>
			</div>
		</div>
	</div>
</div> <!-- end country blocking -->views/blocking/blocking-create.php000064400000070111150755146450013247 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }

$wfBlockRange = filter_input(INPUT_GET, 'wfBlockRange', FILTER_DEFAULT, FILTER_REQUIRE_SCALAR);
?>
<ul class="wf-block-list wf-block-list-vertical">
	<li class="wf-flex-vertical wf-padding-add-top wf-padding-add-bottom">
		<table id="wf-create-block" class="wf-option">
			<tr>
				<th class="wf-right wf-padding-add-right"><?php echo wp_kses(__('<span class="wf-hidden-xs">Block </span>Type', 'wordfence'), array('span'=>array('class'=>array()))); ?></th>
				<td class="wf-block-type">
					<ul id="wf-block-type" class="wf-nav wf-nav-pills wf-nav-pills-bordered wf-nav-pills-connected">
						<li><a href="#" data-value="ip-address" data-new-button="<?php echo esc_attr(wp_kses(/* translators: word order may be altered as long as HTML remains around "this IP Address" */ __('Block<span class="wf-hidden-xs"> this IP Address</span>', 'wordfence'), array('span' => array('class' => array())))); ?>" role="button"><?php echo wp_kses(/* translators: word order may be altered as long as HTML remains around "Address" */ __('IP<span class="wf-hidden-xs"> Address</span>', 'wordfence'), array( 'span' => array( 'class' => array() ))); ?></a></li>
						<li><a href="#" data-value="country" data-new-button="<?php echo esc_attr(wp_kses(/* translators: word order may be altered as long as HTML remains around "the Selected Countries" */ __('Block<span class="wf-hidden-xs"> the Selected Countries</span>', 'wordfence'), array('span' => array('class' => array())))); ?>" data-edit-button="<?php echo esc_attr(wp_kses(/* translators: word order may be reversed as long as HTML remains around "Block" */ __('Update<span class="wf-hidden-xs"> Block</span>', 'wordfence'), array('span' => array('class' => array())))); ?>" role="button"><?php esc_html_e('Country', 'wordfence'); ?></a></li>
						<li<?php echo $wfBlockRange ? ' class="wf-active"' : '' ?>><a href="#" data-value="custom-pattern" data-new-button="<?php echo esc_attr(wp_kses(/* translators: word order may be altered as long as HTML remains around "Visitors Matching this Pattern" */ __('Block<span class="wf-hidden-xs"> Visitors Matching this Pattern</span>', 'wordfence'), array('span' => array('class' => array())))); ?>" role="button"><?php echo wp_kses(/* translators: word order may be reversed as long as HTML remains around "Custom" */ __('<span class="wf-hidden-xs">Custom </span>Pattern', 'wordfence'), array('span'=>array('class'=>array()))); ?></a></li>
					</ul>
					<script type="application/javascript">
						(function($) {
							WFAD.updateCreateBlockPattern = function() {
								var active = $('#wf-block-type > li.wf-active a').data('value');

								var duration = Date.parse('t + ' + $('#wf-block-duration').val());
								if (duration === null || !$('#wf-block-duration').val() || $('#wf-block-duration').val() == 'forever') {
									duration = 0;
								}
								else {
									duration = (Date.now().getTime() - duration.getTime()) / 1000;
								}
								
								var allowCreation = duration >= 0 && !!$('#wf-block-reason').val();
								if (active == 'ip-address') {
									allowCreation = allowCreation && $('#wf-block-ip').val() && WFAD.isValidIP($('#wf-block-ip').val());
								}
								else if (active == 'country') {
									var countries = $('#wf-block-country-countries').val() || [];
									allowCreation = allowCreation && ($('#wf-block-country-login .wf-option-checkbox').hasClass('wf-checked') || $('#wf-block-country-site .wf-option-checkbox').hasClass('wf-checked')) && countries.length > 0;
								}
								else if (active == 'custom-pattern') {
									allowCreation = allowCreation && (($('#wf-block-ip-range').val() && WFAD.parseIPRange($('#wf-block-ip-range').val())) || $('#wf-block-hostname').val() || $('#wf-block-user-agent').val() || $('#wf-block-referrer').val());
								}
								
								$('#wf-block-add-save').toggleClass('wf-disabled', !allowCreation);
							};
							
							$(function() {
								$('#wf-block-type a').on('click', function(e) {
									e.preventDefault(); 
									e.stopPropagation();
		
									$('#wf-block-type > li').removeClass('wf-active');
									$(this).closest('li').addClass('wf-active');

									$('#wf-block-duration, #wf-block-reason, #wf-block-ip, #wf-block-ip-range, #wf-block-hostname, #wf-block-user-agent, #wf-block-referrer').val('');
									
									var title = $('#wf-block-parameters-title').data('newTitle');
									var saveButton = $('#wf-block-type > li.wf-active a').data('newButton');
									var active = $('#wf-block-type > li.wf-active a').data('value');
									if (active == 'ip-address') {
										$('.wf-block-add-country, .wf-block-add-pattern').hide();
										$('.wf-block-add-ip').show();
									}
									else if (active == 'country') {
										$('.wf-block-add-ip, .wf-block-add-pattern').hide(); 
										$('.wf-block-add-country').show();

										$('#wf-block-reason').val('<?php esc_attr_e('Country Blocking', 'wordfence'); ?>');
										
										if (!!$('#wf-blocks-wrapper').data('hasCountryBlock')) {
											title = $('#wf-block-parameters-title').data('editTitle');
											saveButton = $('#wf-block-type > li.wf-active a').data('editButton');
											
											var editValues = $('#wf-blocks-wrapper').data('hasCountryBlock');
											$('.wf-block-edit').first().closest('tr').addClass('wf-editing');
											$('#wf-block-reason').val(editValues.reason);
											$('#wf-block-country-login .wf-option-checkbox').toggleClass('wf-checked', !!editValues.blockLogin);
											$('#wf-block-country-site .wf-option-checkbox').toggleClass('wf-checked', !!editValues.blockSite);
											$('#wf-block-country-countries').val(editValues.countries).trigger('change');
										}
										else {
											$('#wf-block-country-login .wf-option-checkbox').toggleClass('wf-checked', true);
											$('#wf-block-country-site .wf-option-checkbox').toggleClass('wf-checked', true);
											$('#wf-block-country-countries').val([]).trigger('change');
										}
									}
									else if (active == 'custom-pattern') {
										$('.wf-block-add-ip, .wf-block-add-country').hide();
										$('.wf-block-add-pattern').show();
									}

									$('#wf-block-parameters-title').text(title);
									$('#wf-block-add-save').html(saveButton);
									
									$('.wf-block-add-common').show();
								});

								$('#wf-block-type .wf-active a').triggerHandler('click');
								
								<?php if ($wfBlockRange): ?>
								$('#wf-block-ip-range').val('<?php echo esc_attr($wfBlockRange); ?>');
								<?php endif; ?>
								
								$('#wf-block-reason, #wf-block-ip, #wf-block-ip-range, #wf-block-hostname, #wf-block-user-agent, #wf-block-referrer').on('change paste keyup', function() {
									setTimeout(function() {
										WFAD.updateCreateBlockPattern();
									}, 4);
								});
							});
						})(jQuery);
					</script>
				</td>
			</tr>
			<tr class="" style="display: none;">
				<th class="wf-right wf-padding-add-right"><?php esc_html_e('Block Duration', 'wordfence'); ?></th>
				<td class="wf-option-text">
					<input id="wf-block-duration" type="text" placeholder="<?php esc_attr_e('Enter a duration (default is forever)', 'wordfence'); ?>">
					<script type="application/javascript">
						<?php
						$locale = get_locale();
						$locale = preg_replace('/_/', '-', $locale);
						$localizedDateJS = wfDateLocalization::localizationForLanguage($locale);
						if ($localizedDateJS === false) {
							$localizedDateJS = wfDateLocalization::localizationForLanguage('en-US');
						}
						echo $localizedDateJS;
						?>
					</script>
					<?php if (false): ?><script type="application/javascript" src="<?php echo esc_attr(wfUtils::getBaseURL() . 'js/date.js'); ?>"></script><?php endif; ?>
				</td>
			</tr>
		<?php if (wfConfig::get('isPaid')): ?>
			<tr class="wf-block-add-country" style="display: none;">
				<th class="wf-right wf-padding-add-right wf-padding-add-top-small"><?php echo wp_kses(__('<span class="wf-hidden-xs">What to </span>Block', 'wordfence'), array('span'=>array('class'=>array()))); ?></th>
				<td class="wf-padding-add-top-small wf-form-field">
					<div class="wf-option-checkboxes">
						<ul id="wf-block-country-login">
							<li class="wf-option-checkbox wf-checked"><i class="wf-ion-ios-checkmark-empty" aria-hidden="true"></i></li>
							<li class="wf-option-title"><?php esc_html_e('Login Form', 'wordfence'); ?></li>
						</ul>
						<ul id="wf-block-country-site">
							<li class="wf-option-checkbox wf-checked"><i class="wf-ion-ios-checkmark-empty" aria-hidden="true"></i></li>
							<li class="wf-option-title"><?php echo wp_kses(__('<span class="wf-hidden-xs">Block access to the rest of the site</span><span class="wf-visible-xs">Rest of site</span>', 'wordfence'), array('span'=>array('class'=>array()))); ?></li>
						</ul>
					</div>
				</td>
			</tr>
			<tr class="wf-block-add-country" style="display: none;">
				<th class="wf-right wf-padding-add-right wf-padding-add-top-small"></th>
				<td class="wf-padding-add-top-small wf-form-field">
					<em><?php echo wp_kses(sprintf(/* translators: Support URL */ __('If you use Google Ads, blocking countries from accessing the entire site is not recommended. <a href="%s" target="_blank" rel="noopener noreferrer">Learn More<span class="screen-reader-text"> (opens in new tab)</span></a>', 'wordfence'), wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_BLOCKING_FULL_SITE)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()), 'span'=>array('class'=>array()))); ?></em>
				</td>
			</tr>
			<tr class="wf-block-add-country" style="display: none;">
				<th class="wf-right wf-padding-add-right wf-padding-add-top-small"><?php echo wp_kses(/* translators: word order may be altered as long as HTML remains around "to Block" */ __('Countries<span class="wf-hidden-xs"> to Block</span>', 'wordfence'), array('span'=>array('class'=>array()))); ?><br><a href="#" id="wf-block-country-countries-popup" role="button"><?php echo wp_kses(/* translators: word order may be reversed as long as HTML remains around "from List" */ __('Pick<span class="wf-hidden-xs"> from List</span>', 'wordfence'), array('span'=>array('class'=>array()))); ?></a></th>
				<td class="wf-option-text wf-padding-add-top-small">
					<select id="wf-block-country-countries" multiple>
					<?php
					require(WORDFENCE_PATH . 'lib/wfBulkCountries.php'); /** @var array $wfBulkCountries */
					asort($wfBulkCountries);
					foreach ($wfBulkCountries as $code => $name):
					?>
						<option value="<?php echo esc_attr($code); ?>"><?php echo esc_html($name); ?></option>
					<?php endforeach; ?>
					</select>
				</td>
			</tr>
			<tr class="wf-block-add-country" style="display: none;">
				<th class="wf-right wf-padding-add-right wf-padding-add-top-small"></th>
				<td class="wf-option-text wf-padding-add-top-small">
					<div id="wf-block-country-countries-tags"></div>
				</td>
			</tr>
		<?php else: ?>
			<tr class="wf-block-add-country" style="display: none;">
				<td colspan="2">
					<ul class="wf-flex-vertical">
						<li><h3><?php esc_html_e('Put Geographic Protection In Place With Country Blocking', 'wordfence'); ?></h3></li>
						<li><p class="wf-no-top"><?php esc_html_e('Wordfence country blocking is designed to stop an attack, prevent content theft, or end malicious activity that originates from a geographic region in less than 1/300,000th of a second. Blocking countries who are regularly creating failed logins, a large number of page not found errors, and are clearly engaged in malicious activity is an effective way to protect your site during an attack.', 'wordfence'); ?></p></li>
						<li><?php echo wfView::create('blocking/country-block-map')->render(); ?></li>
						<li><a class="wf-btn wf-btn-primary wf-btn-callout-subtle" href="https://www.wordfence.com/gnl1countryBlockUpgrade/wordfence-signup/" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Upgrade to Premium', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></li>
					</ul>
				</td>
			</tr>
		<?php endif; ?>
			<tr class="wf-block-add-ip" style="display: none;">
				<th class="wf-right wf-padding-add-right wf-padding-add-top-small"><?php echo wp_kses(__('IP<span class="wf-hidden-xs"> Address to Block</span>', 'wordfence'), array('span'=>array('class'=>array()))); ?></th>
				<td class="wf-option-text wf-padding-add-top-small"><input id="wf-block-ip" type="text" placeholder="<?php esc_attr_e('Enter an IP address', 'wordfence'); ?>"></td>
			</tr>
			<tr class="wf-block-add-pattern" style="display: none;">
				<th class="wf-right wf-padding-add-right wf-padding-add-top-small"><?php echo wp_kses(__('IP<span class="wf-hidden-xs"> Address</span> Range', 'wordfence'), array('span'=>array('class'=>array()))); ?></th>
				<td class="wf-option-text wf-padding-add-top-small"><input id="wf-block-ip-range" type="text" placeholder="<?php esc_attr_e('e.g., 192.168.200.200 - 192.168.200.220 or 192.168.200.0/24', 'wordfence'); ?>"></td>
			</tr>
			<tr class="wf-block-add-pattern" style="display: none;">
				<th class="wf-right wf-padding-add-right wf-padding-add-top-small"><?php esc_html_e('Hostname', 'wordfence'); ?></th>
				<td class="wf-option-text wf-padding-add-top-small"><input id="wf-block-hostname" type="text" placeholder="<?php esc_attr_e('e.g., *.amazonaws.com or *.linode.com', 'wordfence'); ?>"></td>
			</tr>
			<tr class="wf-block-add-pattern" style="display: none;">
				<th class="wf-right wf-padding-add-right wf-padding-add-top-small"><?php echo wp_kses(__('<span class="wf-hidden-xs">Browser </span>User Agent', 'wordfence'), array('span'=>array('class'=>array()))); ?></th>
				<td class="wf-option-text wf-padding-add-top-small"><input id="wf-block-user-agent" type="text" placeholder="<?php esc_attr_e('e.g., *badRobot*, *MSIE*, or *browserSuffix', 'wordfence'); ?>"></td>
			</tr>
			<tr class="wf-block-add-pattern" style="display: none;">
				<th class="wf-right wf-padding-add-right wf-padding-add-top-small"><?php esc_html_e('Referrer', 'wordfence'); ?></th>
				<td class="wf-option-text wf-padding-add-top-small"><input id="wf-block-referrer" type="text" placeholder="<?php esc_attr_e('e.g., *badwebsite.example.com*', 'wordfence'); ?>"></td>
			</tr>
			<tr class="wf-block-add-ip wf-block-add-pattern" style="display: none;">
				<th class="wf-right wf-padding-add-right wf-padding-add-top-small"><?php echo wp_kses(__('<span class="wf-hidden-xs">Block </span>Reason', 'wordfence'), array('span'=>array('class'=>array()))); ?><span class="wf-red-dark">*</span></th> 
				<td class="wf-option-text wf-padding-add-top-small"><input id="wf-block-reason" type="text" placeholder="<?php esc_attr_e('Enter a reason', 'wordfence'); ?>" maxlength="50"></td>
			</tr>
		</table>
	</li>
	<li class="<?php echo (wfConfig::get('isPaid') ? 'wf-block-add-common' : 'wf-block-add-ip wf-block-add-pattern'); ?>" style="display: none;">
		<div class="wf-right wf-padding-add-top wf-padding-add-bottom">
			<a id="wf-block-add-cancel" class="wf-btn wf-btn-default wf-btn-callout-subtle" href="#" role="button"><?php esc_html_e('Cancel', 'wordfence'); ?></a>&nbsp;&nbsp;<a id="wf-block-add-save" class="wf-btn wf-btn-primary wf-btn-callout-subtle wf-disabled" href="#"><?php echo wp_kses(/* translators: word order may be altered as long as HTML remains around "Visitors Matching this" */ __('Block<span class="wf-hidden-xs"> Visitors Matching this</span> Pattern', 'wordfence'), array('span'=>array('class'=>array()))); ?></a>
			<script type="application/javascript">
				(function($) {
					$(function() {
						$('.wf-option-checkboxes .wf-option-checkbox').each(function() {
							$(this).on('click', function(e) {
								e.preventDefault();
								e.stopPropagation();

								$(this).toggleClass('wf-checked');
								WFAD.updateCreateBlockPattern();
							});
						});
						
						$('#wf-block-country-countries').wfselect2({
							tags: true,
							tokenSeparators: [',', ' '],
							placeholder: "Hit enter to add",
							width: 'element',
							minimumResultsForSearch: 1,
							minimumInputLength: 2,
							selectOnClose: false,
							createTag: function (params) {
								return null; //No custom tags
							},
							sorter: function(results) {
								var term = $('#wf-block-country-countries').data('wfselect2').$container.find('.wfselect2-search__field').val();
								if (term) {
									var escapedTerm = term.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
									var termRegex = new RegExp('^' + escapedTerm, 'i');
									return results.sort(function(a, b) {
										var aPrefix = termRegex.test(a.text);
										var bPrefix = termRegex.test(b.text);
										if (aPrefix && !bPrefix) { return -1; }
										if (!aPrefix && bPrefix) { return 1; }
										return a.text.localeCompare(b.text);
									});
								}
								return results;
							}
						}).on('change', function () {
							var selected = $(this).find('option:selected');
							var container = $('#wf-block-country-countries-tags');

							var list = $('<ul>');
							selected.each(function(index, value) {
								var li = $('<li class="wf-tag-selected' + (index > 4 && !container.data('expanded') ? ' wf-hidden' : '') + '"><a class="wf-destroy-tag-selected">×</a>' + $(value).text() + '</li>');
								li.children('a.wf-destroy-tag-selected')
									.off('click.wfselect2-copy')
									.on('click.wfselect2-copy', function(e) {
										var opt = $(this).data('wfselect2-opt');
										opt.prop('selected', false);
										opt.parents('select').trigger('change');
									}).data('wfselect2-opt', $(value));
								list.append(li);
							});
							
							if (selected.length > 5) {
								if (!container.data('expanded')) {
									list.append($('<li class="wf-tags-show-hide-more"><a href="#" role="button">and ' + (selected.length - 5) + ' more...' + '</a></li>'));
								}
								else {
									list.append($('<li class="wf-tags-show-hide-more"><a href="#" role="button">Hide' + '</a></li>'));
								}
							}
							
							container.html('').append(list);
							
							$('.wf-tags-show-hide-more').on('click', function(e) {
								e.preventDefault(); 
								e.stopPropagation();
								
								var expanded = !!container.data('expanded');
								$('.wf-tag-selected').slice(5).toggleClass('wf-hidden', expanded);
								container.data('expanded', !expanded);
								
								$(this).find('a').text(expanded ? 'and ' + (selected.length - 5) + ' more...' : 'Hide');
							});

							WFAD.updateCreateBlockPattern();
						}).triggerHandler('change');

						if ($('#wf-block-country-countries').length > 0) {
							$('#wf-block-country-countries').data('wfselect2').$container.addClass('wf-select2-placeholder-fix wf-select2-hide-tags');
						}
						
						$('#wf-block-country-countries-popup').on('click', function(e) {
							e.preventDefault();
							e.stopPropagation();
							
							var content = $('#wfTmpl_countrySelector').tmpl();
							$(content).find('#wf-country-selector-confirm').text($('#wf-block-add-save').text());

							var modal = $(content);
							var countries = {};
							var currentSelection = $('#wf-block-country-countries').val() || [];
							for (var i = 0; i < currentSelection.length; i++) {
								countries[currentSelection[i]] = 1;
								modal.find('li[data-country="' + currentSelection[i] + '"]').addClass('wf-active');
							}
							modal.data('countries', countries);
							
							$.wfDrawer({
								width: WFAD.isSmallScreen ? '320px' : '800px',
								content: content,
								onComplete: function() {
									var updateCount = function() {
										var count = $('.wf-blocked-countries li.wf-active').length;
										$('#wf-country-selector-count').text(count + (count == 1 ? ' Country Selected' : ' Countries Selected'));	
									};
									updateCount();
	
									$('.wf-blocked-countries a').on('click', function(e) {
										e.preventDefault();
										e.stopPropagation();
	
										$(this).closest('li').trigger('click');
									});
	
									$('.wf-blocked-countries li').on('click', function(e) {
										e.preventDefault();
										e.stopPropagation();
	
										var modal = $('#wf-country-selector');
										var countries = modal.data('countries');
										var country = $(this).data('country');
	
										$(this).toggleClass('wf-active');
										if ($(this).hasClass('wf-active')) {
											countries[country] = 1;
										}
										else {
											delete countries[country];
										}
	
										modal.data('countries', countries);
										updateCount();
									});
									
									$('#wf-country-selector-block-all').on('click', function(e) {
										e.preventDefault();
										e.stopPropagation();
	
										var modal = $('#wf-country-selector');
										var countries = {};
										modal.find('li[data-country]').addClass('wf-active').each(function() {
											countries[$(this).data('country')] = 1;
										});
										
										modal.data('countries', countries);
										updateCount();
									});
	
									$('#wf-country-selector-unblock-all').on('click', function(e) {
										e.preventDefault();
										e.stopPropagation();
	
										var modal = $('#wf-country-selector');
										modal.data('countries', {});
										modal.find('li[data-country]').removeClass('wf-active');
										updateCount();
									});
	
									$('.wf-country-selector-section-options li a').on('click', function(e) {
										e.preventDefault();
										e.stopPropagation();
	
										$(this).closest('li').trigger('click');
									});
									
									$('.wf-country-selector-section-options li').on('click', function(e) {
										e.preventDefault();
										e.stopPropagation();
	
										var letter = $(this).find('a').data('letter');
										var scrollTarget = $('.wf-blocked-countries[data-letter="' + letter + '"]');
										$('.wf-country-selector-inner-wrapper').animate({
											scrollTop: $('.wf-country-selector-inner-wrapper').scrollTop() + scrollTarget.offset().top - $('.wf-country-selector-inner-wrapper').offset().top
										}, 500);
									});
									
									$('#wf-country-selector-cancel').on('click', function(e) { //Commits but doesn't save
										e.preventDefault();
										e.stopPropagation();

										var modal = $('#wf-country-selector');
										var countries = Object.keys(modal.data('countries')) || [];
										$('#wf-block-country-countries').val(countries).trigger('change');

										$.wfDrawer.close()
									});
	
									$('#wf-country-selector-confirm').on('click', function(e) { //Commits and saves
										e.preventDefault();
										e.stopPropagation();
	
										var modal = $('#wf-country-selector');
										var countries = Object.keys(modal.data('countries')) || [];
										$('#wf-block-country-countries').val(countries).trigger('change');
										$('#wf-block-add-save').trigger('click');
	
										$.wfDrawer.close()
									});
							}});
						});
						
						$('#wf-block-add-cancel').on('click', function(e) {
							e.preventDefault();
							e.stopPropagation();

							$('.wf-blocks-table > tbody > tr').removeClass('wf-editing');
							$('#wf-block-parameters-title').text($('#wf-block-parameters-title').data('newTitle'));
							$('#wf-block-type > li').removeClass('wf-active');
							$('.wf-block-add-common, .wf-block-add-ip, .wf-block-add-country, .wf-block-add-pattern').hide();
							$('#wf-block-duration, #wf-block-reason, #wf-block-ip, #wf-block-ip-range, #wf-block-hostname, #wf-block-user-agent, #wf-block-referrer').val('');
						});
						
						$('#wf-block-add-save').on('click', function(e) {
							var selectedCountries = $('#wf-block-country-countries').val() || [];
							var blockSite = $('#wf-block-country-site .wf-option-checkbox').hasClass('wf-checked') ? 1 : 0;
							var button = $(this);
							var includesUs = false;
							for (var index in selectedCountries) {
								if (selectedCountries[index] === 'US') {
									includesUs = true;
									break;
								}
							}
							if (includesUs && blockSite && !button.data('acknowledged')) {
								var modal = $("#wfTmpl_blockUnitedStatesPrompt").tmpl();
								var modalHtml = $("<div>").append(modal).html();
								WFAD.colorboxHTML(
									WFAD.isSmallScreen ? '300px' : '400px',
									modalHtml,
									{
										onComplete: function() {
											$('#wf-us-blocking-prompt-cancel').on('click', function(e) {
												e.preventDefault();
												e.stopPropagation();
												WFAD.colorboxClose();
											});
											$('#wf-us-blocking-prompt-continue').on('click', function(e) {
												e.preventDefault();
												e.stopPropagation();
												button.data('acknowledged', true);
												WFAD.colorboxClose();
												button.trigger('click');
											});
										},
										className: 'wf-modal',
										closeButton: false,
										overlayClose: false
									}
								);
								return;
							}
							button.data('acknowledged', false);
							e.preventDefault();
							e.stopPropagation();

							var active = $('#wf-block-type > li.wf-active a').data('value');
							var payload = {type: active};
							
							payload['duration'] = Date.parse('t + ' + $('#wf-block-duration').val());
							if (payload['duration'] === null || !$('#wf-block-duration').val() || $('#wf-block-duration').val() == 'forever') {
								payload['duration'] = 0;
							}
							else {
								payload['duration'] = (Date.now().getTime() - payload['duration'].getTime()) / 1000; 
							}
							
							payload['reason'] = $('#wf-block-reason').val();
							if (active == 'ip-address') {
								payload['ip'] = $('#wf-block-ip').val();
							}
							else if (active == 'country') {
								payload['blockLogin'] = $('#wf-block-country-login .wf-option-checkbox').hasClass('wf-checked') ? 1 : 0;
								payload['blockSite'] = blockSite;
								payload['countries'] = selectedCountries;
							}
							else if (active == 'custom-pattern') {
								payload['ipRange'] = $('#wf-block-ip-range').val();
								payload['hostname'] = $('#wf-block-hostname').val();
								payload['userAgent'] = $('#wf-block-user-agent').val();
								payload['referrer'] = $('#wf-block-referrer').val();
							}

							WFAD.loadingBlocks = true;
							WFAD.ajax('wordfence_createBlock', {payload: JSON.stringify(payload), sortColumn: WFAD.sortColumn, sortDirection: WFAD.sortDirection, blocksFilter: WFAD.blocksFilter}, function(res) {
								WFAD.loadingBlocks = false;
								if (res.success) {
									$(window).trigger('wordfenceRefreshBlockList', [res, false]);

									$('.wf-blocks-table > tbody > tr').removeClass('wf-editing');
									$('#wf-block-parameters-title').text($('#wf-block-parameters-title').data('newTitle'));
									$('#wf-block-type > li').removeClass('wf-active');
									$('.wf-block-add-common, .wf-block-add-ip, .wf-block-add-country, .wf-block-add-pattern').hide();
									$('#wf-block-duration, #wf-block-reason, #wf-block-ip, #wf-block-ip-range, #wf-block-hostname, #wf-block-user-agent, #wf-block-referrer').val('');
								}
								else {
									WFAD.colorboxModalHTML((WFAD.isSmallScreen ? '300px' : '400px'), <?php echo json_encode(esc_html__('Error Saving Block', 'wordfence')) ?>, res.error);
								}
							});
						});
					});
				})(jQuery);
			</script>
		</div></li>
</ul>
<?php
echo wfView::create('blocking/country-modal')->render();
?>
<script type="text/x-jquery-template" id="wfTmpl_blockUnitedStatesPrompt">
<?php
echo wfView::create('common/modal-prompt', array(
	'title' => __('U.S. Blocked', 'wordfence'),
	'messageHTML' => esc_html__('For most sites, we recommend allowing access from the United States, where Google and other benign crawlers are located. Some well-known crawlers also have locations in Europe, so be careful when blocking other countries, especially if you have not seen significant attacks from them.', 'wordfence') . ' <a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_BLOCKING_FULL_SITE). '" target="_blank" rel="noopener noreferrer">' . esc_html__('Learn More', 'wordfence') . '</a>',
	'primaryButton' => array('id' => 'wf-us-blocking-prompt-cancel', 'label' => __('Cancel', 'wordfence'), 'link' => '#'),
	'secondaryButtons' => array(array('id' => 'wf-us-blocking-prompt-continue', 'label' => __('Continue', 'wordfence'), 'link' => '#')),
))->render();
?>
</script>views/blocking/option-bypass-redirect.php000064400000005511150755146450014626 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
?>
<ul class="wf-option wf-option-bypass-redirect">
	<li class="wf-option-spacer"></li>
	<li class="wf-option-content">
		<ul>
			<li class="wf-option-title"><?php esc_html_e('Bypass Redirect', 'wordfence'); ?> <a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_BLOCKING_BYPASS_REDIRECT); ?>" target="_blank" rel="noopener noreferrer" class="wf-inline-help"><i class="wf-fa wf-fa-question-circle-o" aria-hidden="true"></i><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></li>
			<li class="wf-option-fields">
				<table class="wf-full-width">
					<tr>
						<td class="wf-right wf-padding-add-right"><?php esc_html_e('If user hits the relative URL', 'wordfence'); ?></td>
						<td id="wf-option-cbl-bypassRedirURL" class="wf-option-text"><input id="wf-bypass-redir-url" type="text" value="<?php echo esc_attr(wfConfig::get('cbl_bypassRedirURL'), array()); ?>" placeholder="<?php esc_attr_e('/bypassurl/', 'wordfence'); ?>" data-option="cbl_bypassRedirURL" data-original-value="<?php echo esc_attr(wfConfig::get('cbl_bypassRedirURL')); ?>"></td>
					</tr>
					<tr>
						<td class="wf-right wf-padding-add-right wf-padding-add-top-small"><?php esc_html_e('then redirect that user to', 'wordfence'); ?></td>
						<td id="wf-option-cbl-bypassRedirDest" class="wf-option-text wf-padding-add-top-small"><input id="wf-bypass-redir-dest" type="text" value="<?php echo esc_attr(wfConfig::get('cbl_bypassRedirDest')); ?>" placeholder="<?php esc_attr_e('/page-name/', 'wordfence'); ?>" data-option="cbl_bypassRedirDest" data-original-value="<?php echo esc_attr(wfConfig::get('cbl_bypassRedirDest')); ?>"></td>
					</tr>
					<tr>
						<td></td>
						<td class="wf-padding-add-top-small"><?php esc_html_e('and set a cookie that will bypass all country blocking.', 'wordfence'); ?></td>
					</tr>
				</table>
				<script type="application/javascript">
					(function($) {
						$(function() {
							$('#wf-bypass-redir-url, #wf-bypass-redir-dest').on('change paste keyup', function() {
								var e = this;
								
								setTimeout(function() {
									var option = $(e).data('option');
									var value = $(e).val();
			
									var originalValue = $(e).data('originalValue');
									if (originalValue == value) {
										delete WFAD.pendingChanges[option];
									}
									else {
										WFAD.pendingChanges[option] = value;
									}
			
									WFAD.updatePendingChanges();
								}, 4);
							});
							
							$(window).on('wfOptionsReset', function() {
								$('#wf-bypass-redir-url, #wf-bypass-redir-dest').each(function() {
									var originalValue = $(this).data('originalValue');
									$(this).val(originalValue);
								});
							});
						});
					})(jQuery);
				</script>
			</li>
		</ul>
	</li>
</ul>views/blocking/blocking-status.php000064400000003212150755146450013325 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents the blocking status.
 *
 */
?>
<ul class="wf-block-list wf-block-list-horizontal wf-blocking-status<?php echo (wfConfig::get('isPaid') ? ' wf-blocking-status-premium' : ''); ?>">
	<li>
		<?php
		echo wfView::create('common/block-navigation-option', array(
			'id' => 'blocking-all-options',
			'img' => 'options.svg',
			'title' => __('Blocking Options', 'wordfence'),
			'subtitle' => __('Manage global blocking options.', 'wordfence'),
			'link' => network_admin_url('admin.php?page=WordfenceWAF&subpage=blocking_options'),
		))->render();
		?>
	</li>
<?php if (!wfConfig::get('isPaid')): ?>
	<li class="wf-flex-horizontal wf-flex-full-width">
		<div class="wf-flex-vertical wf-flex-align-left">
			<h4 class="wf-no-bottom"><?php esc_html_e('Upgrade to Premium', 'wordfence') ?></h4>
			<p class="wf-add-top-smaller"><?php esc_html_e('Enable country blocking by upgrading to Premium.', 'wordfence') ?></p>
		</div>
		<div class="wf-flex-horizontal wf-flex-full-width">
			<p class="wf-right"><a class="wf-btn wf-btn-primary wf-btn-callout-subtle" href="https://www.wordfence.com/gnl1blockingUpgrade/wordfence-signup/#premium-order-form" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Upgrade to Premium', 'wordfence'); ?></a>&nbsp;&nbsp;<a class="wf-btn wf-btn-callout-subtle wf-btn-default" href="https://www.wordfence.com/gnl1blockingLearn/wordfence-signup/" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Learn More', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></p>
		</div>
	</li>
<?php endif; ?>
</ul>
views/blocking/option-bypass-cookie.php000064400000004536150755146450014304 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
?>
<ul id="wf-option-cbl-bypassViewURL" class="wf-option wf-option-bypass-cookie">
	<li class="wf-option-spacer"></li>
	<li class="wf-option-content">
		<ul>
			<li class="wf-option-title"><?php esc_html_e('Bypass Cookie', 'wordfence'); ?> <a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_BLOCKING_BYPASS_COOKIE); ?>" target="_blank" rel="noopener noreferrer" class="wf-inline-help"><i class="wf-fa wf-fa-question-circle-o" aria-hidden="true"></i><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></li>
			<li class="wf-option-fields">
				<table class="wf-full-width">
					<tr>
						<td class="wf-right wf-padding-add-right"><?php esc_html_e('If user who is allowed to access the site views the relative URL', 'wordfence'); ?></td>
						<td class="wf-option-text"><input id="wf-bypass-view-url" type="text" value="<?php echo esc_attr(wfConfig::get('cbl_bypassViewURL')); ?>" placeholder="<?php esc_attr_e('/set-country-bypass/', 'wordfence'); ?>" data-option="cbl_bypassViewURL" data-original-value="<?php echo esc_attr(wfConfig::get('cbl_bypassViewURL')); ?>"></td>
					</tr>
					<tr>
						<td colspan="2" class="wf-right wf-padding-add-top-small"><?php esc_html_e('then set a cookie that will bypass country blocking in future in case that user hits the site from a blocked country.', 'wordfence'); ?></td>
					</tr>
				</table>
				<script type="application/javascript">
					(function($) {
						$(function() {
							$('#wf-bypass-view-url').on('change paste keyup', function() {
								setTimeout(function() {
									var option = $('#wf-bypass-view-url').data('option');
									var value = $('#wf-bypass-view-url').val();
			
									var originalValue = $('#wf-bypass-view-url').data('originalValue');
									if (originalValue == value) {
										delete WFAD.pendingChanges[option];
									}
									else {
										WFAD.pendingChanges[option] = value;
									}
			
									WFAD.updatePendingChanges();
								}, 4);
							});
		
							$(window).on('wfOptionsReset', function() {
								$('#wf-bypass-view-url').each(function() {
									var originalValue = $(this).data('originalValue');
									$(this).val(originalValue);
								});
							});
						});
					})(jQuery);
				</script>
			</li>
		</ul>
	</li>
</ul>views/reports/activity-report.php000064400000016630150755146450013277 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * @var wfActivityReportView $this
 */
?>
<a class="wf-logo" href="//www.wordfence.com/zz8/"><img src="<?php echo wfUtils::getBaseURL(); ?>images/wf-horizontal.svg" alt="Wordfence"/></a>

<h2><?php printf(/* translators: Number of IPs. */ esc_html__('Top %d IPs Blocked', 'wordfence'), $limit); ?></h2>

<?php wfHelperString::cycle(); ?>

<table class="wf-striped-table wf-fixed-table">
	<thead>
		<tr>
			<th width="40%"><?php esc_html_e('IP', 'wordfence'); ?></th>
			<th width="35%"><?php esc_html_e('Country', 'wordfence'); ?></th>
			<th width="25%"><?php esc_html_e('Block Count', 'wordfence'); ?></th> 
		</tr>
	</thead>
	<tbody>
		<?php
		if ($top_ips_blocked):
			require(dirname(__FILE__) . '/../../lib/flags.php'); /** @var array $flags */
			foreach ($top_ips_blocked as $row): ?>
				<tr class="<?php echo wfHelperString::cycle('odd', 'even') ?>">
					<td class="wf-split-word"><code><?php echo wfUtils::inet_ntop($row->IP) ?></code></td>
					<td>
						<?php if ($row->countryCode): ?>
							<span class="wf-flag <?php echo esc_attr('wf-flag-' . strtolower($row->countryCode)); ?>" title="<?php echo esc_attr($row->countryName); ?>"></span>
							&nbsp;
							<?php echo esc_html($row->countryName) ?>
						<?php else: ?>
							<?php esc_html_e('(Unknown)', 'wordfence'); ?>
						<?php endif ?>
					</td>
					<td><?php echo (int) $row->blockCount ?></td>
				</tr>
			<?php endforeach ?>
		<?php else: ?>
			<tr>
				<td colspan="3">
					<?php esc_html_e('No IPs blocked yet.', 'wordfence'); ?>
				</td>
			</tr>
		<?php endif ?>
	</tbody>
</table>

<p>
	<a class="button button-primary" href="<?php echo wfUtils::wpAdminURL('admin.php?page=WordfenceWAF#top#blocking') ?>"><?php esc_html_e('Update Blocked IPs', 'wordfence'); ?></a>
</p>

<?php wfHelperString::cycle(); ?>

<h2><?php printf(/* translators: Number of countries. */ __('Top %d Countries Blocked', 'wordfence'), $limit); ?></h2>

<table class="wf-striped-table wf-fixed-table">
	<thead>
		<tr>
			<th><?php esc_html_e('Country', 'wordfence'); ?></th>
			<th><?php esc_html_e('Total IPs Blocked', 'wordfence'); ?></th>
			<th><?php esc_html_e('Block Count', 'wordfence'); ?></th>
		</tr>
	</thead>
	<tbody>
		<?php
		if ($top_countries_blocked):
			require(dirname(__FILE__) . '/../../lib/flags.php'); /** @var array $flags */
			foreach ($top_countries_blocked as $row): ?>
				<tr class="<?php echo wfHelperString::cycle('odd', 'even') ?>">
					<td>
						<?php if ($row->countryCode): ?>
							<span class="wf-flag <?php echo esc_attr('wf-flag-' . strtolower($row->countryCode)); ?>" title="<?php echo esc_attr($row->countryName); ?>"></span>
							&nbsp;
							<?php echo esc_html($row->countryName) ?>
						<?php else: ?>
							<?php esc_html_e('(Unknown)', 'wordfence'); ?>
						<?php endif ?>
					</td>
					<td><?php echo esc_html($row->totalIPs) ?></td>
					<td><?php echo (int) $row->totalBlockCount ?></td>
				</tr>
			<?php endforeach ?>
		<?php else: ?>
			<tr>
				<td colspan="3">
					<?php esc_html_e('No requests blocked yet.', 'wordfence'); ?>
				</td>
			</tr>
		<?php endif ?>
	</tbody>
</table>

<p>
	<a class="button button-primary" href="<?php echo wfUtils::wpAdminURL('admin.php?page=WordfenceWAF#top#blocking') ?>"><?php esc_html_e('Update Blocked Countries', 'wordfence'); ?></a>
</p>

<?php wfHelperString::cycle(); ?>

<h2><?php printf(/* translators: Number of failed logins. */ esc_html__('Top %d Failed Logins', 'wordfence'), $limit); ?></h2>

<table class="wf-striped-table wf-fixed-table">
	<thead>
		<tr>
			<th><?php esc_html_e('Username', 'wordfence'); ?></th>
			<th><?php esc_html_e('Login Attempts', 'wordfence'); ?></th>
			<th><?php esc_html_e('Existing User', 'wordfence'); ?></th>
		</tr>
	</thead>
	<tbody>
		<?php if ($top_failed_logins): ?>
			<?php foreach ($top_failed_logins as $row): ?>
				<tr class="<?php echo wfHelperString::cycle('odd', 'even') ?>">
					<td class="wf-split-word"><?php echo esc_html($row->username) ?></td>
					<td><?php echo esc_html($row->fail_count) ?></td>
					<td class="<?php echo sanitize_html_class($row->is_valid_user ? 'loginFailValidUsername' : 'loginFailInvalidUsername') ?>"><?php echo $row->is_valid_user ? esc_html__('Yes', 'wordfence') : esc_html__('No', 'wordfence') ?></td>
				</tr>
			<?php endforeach ?>
		<?php else: ?>
			<tr>
				<td colspan="3">
					<?php esc_html_e('No failed logins yet.', 'wordfence'); ?>
				</td>
			</tr>
		<?php endif ?>
	</tbody>
</table>

<p>
	<a class="button button-primary" href="<?php echo wfUtils::wpAdminURL('admin.php?page=WordfenceWAF&subpage=waf_options#waf-options-bruteforce') ?>"><?php esc_html_e('Update Login Security Options', 'wordfence'); ?></a>
</p>

<?php wfHelperString::cycle(); ?>

<?php /*?>
<h2>Recently Modified Files</h2>

<table class="activity-table recently-modified-files">
	<thead>
		<tr>
			<th>Modified</th>
			<th>File</th>
		</tr>
	</thead>
	<tbody>
		<?php foreach ($recently_modified_files as $file_row):
			list($file, $mod_time) = $file_row;
			?>
			<tr class="<?php echo wfHelperString::cycle('odd', 'even') ?>">
				<td style="white-space: nowrap;"><?php echo $this->modTime($mod_time) ?></td>
				<td class="display-file-table-cell">
					<pre class="display-file"><?php echo esc_html($this->displayFile($file)) ?></pre>
				</td>
			</tr>
		<?php endforeach ?>
	</tbody>
</table>
<?php */ ?>


<?php wfHelperString::cycle(); ?>

<h2><?php esc_html_e('Updates Needed', 'wordfence'); ?></h2>

<?php
if (!is_array($updates_needed)) {
	$updates_needed = array('core' => array(), 'plugins' => array(), 'themes' => array());
}
?>
<?php if ($updates_needed['core']): ?>
	<h4><?php esc_html_e('Core', 'wordfence'); ?></h4>
	<ul>
		<li><?php printf(/* translators: WordPress version. */ esc_html__('A new version of WordPress (v%s) is available.', 'wordfence'), esc_html($updates_needed['core'])); ?></li>
	</ul>
<?php endif ?>
<?php if ($updates_needed['plugins']): ?>
	<h4><?php esc_html_e('Plugins', 'wordfence'); ?></h4>
	<ul>
		<?php
		foreach ($updates_needed['plugins'] as $plugin):
			$newVersion = ($plugin['newVersion'] == 'Unknown' ? $plugin['newVersion'] : "v{$plugin['newVersion']}");
		?>
			<li>
				<?php echo esc_html(sprintf(/* translators: Plugin version. */ __('A new version of the plugin "%s" is available.', 'wordfence'), "{$plugin['Name']} ({$newVersion})")); ?>
			</li>
		<?php endforeach ?>
	</ul>
<?php endif ?>
<?php if ($updates_needed['themes']): ?>
	<h4><?php esc_html_e('Themes', 'wordfence'); ?></h4>
	<ul>
		<?php
		foreach ($updates_needed['themes'] as $theme):
			$newVersion = ($theme['newVersion'] == 'Unknown' ? $theme['newVersion'] : "v{$theme['newVersion']}");
		?>
			<li>
				<?php echo esc_html(sprintf(/* translators: Theme version. */ __('A new version of the theme "%s" is available.', 'wordfence'), "{$theme['name']} ({$newVersion})")); ?>
			</li>
		<?php endforeach ?>
	</ul>
<?php endif ?>

<?php if ($updates_needed['core'] || $updates_needed['plugins'] || $updates_needed['themes']): ?>
	<p><a class="button button-primary" href="<?php echo esc_attr(wfUtils::wpAdminURL('update-core.php')) ?>"><?php esc_html_e('Update Now', 'wordfence'); ?></a></p>
<?php else: ?>
	<p><?php esc_html_e('No updates are available at this time.', 'wordfence'); ?></p>
<?php endif ?>
<?php if ((defined('WP_DEBUG') && WP_DEBUG) || wfConfig::get('debugOn')): ?>
	<p><?php printf(/* translators: Seconds with millisecond precision. */ esc_html__('Generated in %.4f seconds', 'wordfence'), $microseconds); ?></p>
<?php endif ?>views/reports/activity-report-email-inline.php000064400000111176150755146450015641 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * @var wfActivityReportView $this
 */

$start_time = wfActivityReport::getReportDateFrom();
$end_time = time();
$report_start = wfUtils::formatLocalTime(get_option('date_format'), $start_time);
$report_end = wfUtils::formatLocalTime(get_option('date_format'), $end_time);
$title = wp_kses(sprintf(
	/* translators: 1. Start date. 2. End date. */
		__('Wordfence activity from <br><strong>%1$s</strong> to <strong>%2$s</strong>', 'wordfence'), $report_start, $report_end), array('strong'=>array()));
$bg_colors = array(
	'even' => 'background-color: #eeeeee;',
	'odd' => '',
);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=<?php echo get_option('blog_charset') ?>"/>
	<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
	<title><?php echo esc_html(strip_tags($title)) ?></title>
	<!-- Targeting Windows Mobile -->
	<!--[if IEMobile 7]>
	<style type="text/css">

	</style>
	<![endif]-->

	<!-- ***********************************************
	****************************************************
	END MOBILE TARGETING
	****************************************************
	************************************************ -->

	<!--[if gte mso 9]>
	<style>
		/* Target Outlook 2007 and 2010 */
	</style>
	<![endif]-->
</head>
  <body style="font-size: 10pt; vertical-align: baseline; line-height: 1; font-family: Helvetica, Arial, sans-serif; text-rendering: optimizeLegibility; color: #000; background-image: none !important; width: 100% !important; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; background-color: #e6e6e6; margin: 0; padding: 0; border: 0;" bgcolor="#e6e6e6"><style type="text/css">
blockquote:before { content: none !important; }
blockquote:after { content: none !important; }
q:before { content: none !important; }
q:after { content: none !important; }
a:focus { outline: thin dotted !important; }
.clear:after { clear: both !important; }
.wrapper:after { clear: both !important; }
.format-status .entry-header:after { clear: both !important; }
.clear:before { display: table !important; content: "" !important; }
.clear:after { display: table !important; content: "" !important; }
.wrapper:before { display: table !important; content: "" !important; }
.wrapper:after { display: table !important; content: "" !important; }
.format-status .entry-header:before { display: table !important; content: "" !important; }
.format-status .entry-header:after { display: table !important; content: "" !important; }
.menu-toggle:hover { color: #5e5e5e !important; background-color: #ebebeb !important; background-repeat: repeat-x !important; background-image: linear-gradient(top, #f9f9f9, #ebebeb) !important; }
.menu-toggle:focus { color: #5e5e5e !important; background-color: #ebebeb !important; background-repeat: repeat-x !important; background-image: linear-gradient(top, #f9f9f9, #ebebeb) !important; }
button:hover { color: #5e5e5e !important; background-color: #ebebeb !important; background-repeat: repeat-x !important; background-image: linear-gradient(top, #f9f9f9, #ebebeb) !important; }
input[type="submit"]:hover { color: #5e5e5e !important; background-color: #ebebeb !important; background-repeat: repeat-x !important; background-image: linear-gradient(top, #f9f9f9, #ebebeb) !important; }
input[type="button"]:hover { color: #5e5e5e !important; background-color: #ebebeb !important; background-repeat: repeat-x !important; background-image: linear-gradient(top, #f9f9f9, #ebebeb) !important; }
input[type="reset"]:hover { color: #5e5e5e !important; background-color: #ebebeb !important; background-repeat: repeat-x !important; background-image: linear-gradient(top, #f9f9f9, #ebebeb) !important; }
article.post-password-required input[type=submit]:hover { color: #5e5e5e !important; background-color: #ebebeb !important; background-repeat: repeat-x !important; background-image: linear-gradient(top, #f9f9f9, #ebebeb) !important; }
.menu-toggle:active { color: #757575 !important; background-color: #e1e1e1 !important; background-repeat: repeat-x !important; background-image: linear-gradient(top, #ebebeb, #e1e1e1) !important; box-shadow: inset 0 0 8px 2px #c6c6c6, 0 1px 0 0 #f4f4f4 !important; border-color: transparent !important; }
button:active { color: #757575 !important; background-color: #e1e1e1 !important; background-repeat: repeat-x !important; background-image: linear-gradient(top, #ebebeb, #e1e1e1) !important; box-shadow: inset 0 0 8px 2px #c6c6c6, 0 1px 0 0 #f4f4f4 !important; border-color: transparent !important; }
input[type="submit"]:active { color: #757575 !important; background-color: #e1e1e1 !important; background-repeat: repeat-x !important; background-image: linear-gradient(top, #ebebeb, #e1e1e1) !important; box-shadow: inset 0 0 8px 2px #c6c6c6, 0 1px 0 0 #f4f4f4 !important; border-color: transparent !important; }
input[type="button"]:active { color: #757575 !important; background-color: #e1e1e1 !important; background-repeat: repeat-x !important; background-image: linear-gradient(top, #ebebeb, #e1e1e1) !important; box-shadow: inset 0 0 8px 2px #c6c6c6, 0 1px 0 0 #f4f4f4 !important; border-color: transparent !important; }
input[type="reset"]:active { color: #757575 !important; background-color: #e1e1e1 !important; background-repeat: repeat-x !important; background-image: linear-gradient(top, #ebebeb, #e1e1e1) !important; box-shadow: inset 0 0 8px 2px #c6c6c6, 0 1px 0 0 #f4f4f4 !important; border-color: transparent !important; }
a:hover { color: #0f3647 !important; }
.main-navigation .assistive-text:focus { background: #fff !important; border: 2px solid #333 !important; border-radius: 3px !important; clip: auto !important; color: #000 !important; display: block !important; font-size: 12px !important; padding: 12px !important; position: absolute !important; top: 5px !important; left: 5px !important; z-index: 100000 !important; }
.site-header h1 a:hover { color: #21759b !important; }
.site-header h2 a:hover { color: #21759b !important; }
.main-navigation a:hover { color: #21759b !important; }
.main-navigation a:focus { color: #21759b !important; }
.widget-area .widget a:hover { color: #21759b !important; }
.widget-area .widget a:visited { color: #9f9f9f !important; }
footer[role="contentinfo"] a:hover { color: #21759b !important; }
.comments-link a:hover { color: #21759b !important; }
.entry-meta a:hover { color: #21759b !important; }
.entry-content a:visited { color: #9f9f9f !important; }
.comment-content a:visited { color: #9f9f9f !important; }
article.format-aside h1 a:hover { color: #2e3542 !important; }
.format-status .entry-header header a:hover { color: #21759b !important; }
.comments-area article header a:hover { color: #21759b !important; }
.comments-area article header cite a:hover { text-decoration: underline !important; }
a.comment-reply-link:hover { color: #21759b !important; }
a.comment-edit-link:hover { color: #21759b !important; }
.template-front-page .widget-area .widget li a:hover { color: #21759b !important; }
@-ms-viewport { width: device-width !important; }
@viewport { width: device-width !important; }
.main-navigation li a:hover { color: #000 !important; }
.main-navigation li a:focus { color: #000 !important; }
.main-navigation ul li:hover > ul { border-left: 0 !important; clip: inherit !important; overflow: inherit !important; height: inherit !important; width: inherit !important; }
.main-navigation ul li:focus > ul { border-left: 0 !important; clip: inherit !important; overflow: inherit !important; height: inherit !important; width: inherit !important; }
.main-navigation li ul li a:hover { background: #e3e3e3 !important; color: #444 !important; }
.main-navigation li ul li a:focus { background: #e3e3e3 !important; color: #444 !important; }
footer a[rel=bookmark]:after { content: " [" attr(href) "] " !important; }
footer a[rel=bookmark]:visited:after { content: " [" attr(href) "] " !important; }
h1 a:active { color: red !important; }
h2 a:active { color: red !important; }
h3 a:active { color: red !important; }
h4 a:active { color: red !important; }
h5 a:active { color: red !important; }
h6 a:active { color: red !important; }
h1 a:visited { color: purple !important; }
h2 a:visited { color: purple !important; }
h3 a:visited { color: purple !important; }
h4 a:visited { color: purple !important; }
h5 a:visited { color: purple !important; }
h6 a:visited { color: purple !important; }
.button:hover { background: none repeat scroll 0 0 #1E8CBE !important; border-color: #0074A2 !important; box-shadow: 0 1px 0 rgba(120, 200, 230, 0.6) inset !important; color: #FFF !important; }
.button:active { background: none repeat scroll 0 0 #1E8CBE !important; border-color: #0074A2 !important; box-shadow: 0 1px 0 rgba(120, 200, 230, 0.6) inset !important; color: #FFF !important; }
.button:focus { background: none repeat scroll 0 0 #1E8CBE !important; border-color: #0074A2 !important; box-shadow: 0 1px 0 rgba(120, 200, 230, 0.6) inset !important; color: #FFF !important; }
</style>
<!-- Wrapper/Container Table: Use a wrapper table to control the width and the background color consistently of your email. Use this approach instead of setting attributes on the body tag. -->
<table cellpadding="0" cellspacing="0" border="0" id="backgroundTable" style="font-size: 100%; vertical-align: baseline; border-collapse: collapse; border-spacing: 0; width: 100% !important; line-height: 100% !important; mso-table-lspace: 0pt; mso-table-rspace: 0pt; margin: 0 auto; padding: 0; border: 0;">
	<tr style="font-size: 100%; vertical-align: baseline; margin: 0; padding: 0; border: 0;">
		<td valign="top" style="font-size: 100%; vertical-align: baseline; font-weight: normal; text-align: left; border-collapse: collapse; margin: 0; padding: 0; border: 0;" align="left">
			<div class="wrapper wp-core-ui" style="font-size: 100%; vertical-align: baseline; border-top-style: none; box-shadow: none; line-height: 1.4; width: 600px; background-color: #FFFFFF; margin: 0 auto; padding: 20px; border: 0;">
				<div style="float: right; text-align: right; line-height: 1.1; color: #666666; font-size: 100%; vertical-align: baseline; margin: 20px 0 0; padding: 0; border: 0;" align="right">
					<?php echo $title ?>
				</div>
				<a href="http://www.wordfence.com/zz5/" style="font-size: 100%; vertical-align: baseline; outline: none; color: orange; text-decoration: none; margin: 0; padding: 0; border: 0;"><img src="<?php echo wfUtils::getBaseURL(); ?>images/logo.png" alt="" style="font-size: 100%; vertical-align: baseline; -ms-interpolation-mode: bicubic; outline: none; text-decoration: none; margin: 0; padding: 0; border: 0 none; width: 560px;" /></a>

				<p style="font-size: 100%; vertical-align: baseline; margin: 1em 0; padding: 0; border: 0;">
					<?php echo wp_kses(sprintf(
							/* translators: 1. Site URL. 2. Start date. 3. End date. */
						__('This email was sent from your website <a href="%1$s">%1$s</a> and is a summary of security related activity that Wordfence monitors for the period %2$s to %3$s.', 'wordfence'),
						network_site_url(),
						$report_start,
						$report_end
					), array('a'=>array('href'=>array()))); ?> <?php if (!wfConfig::get('isPaid')): ?><?php echo wp_kses(__('NOTE: You are using the free version of Wordfence and are missing out on features like real-time firewall rule and malware signature updates, country blocking, and detecting if your site IP is sending spam. <a href="http://www.wordfence.com/zz6/">Click here to upgrade to Wordfence Premium now</a>.', 'wordfence'), array('a'=>array('href'=>array()))); ?><?php endif ?>
				</p>

				<h2 style="font-size: 20px; vertical-align: baseline; clear: both; color: #222 !important; margin: 20px 0 4px; padding: 0; border: 0;">
					<?php esc_html_e('Top 10 IPs Blocked', 'wordfence'); ?>
				</h2>

				<?php wfHelperString::cycle(); ?>

				<table class="activity-table" style="font-size: 100%; vertical-align: baseline; border-collapse: collapse; border-spacing: 0; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: 100%; max-width: 100%; margin: 0; padding: 0; border: 0;">
					<thead style="font-size: 100%; vertical-align: baseline; margin: 0; padding: 0; border: 0;">
						<tr style="font-size: 100%; vertical-align: baseline; margin: 0; padding: 0; border: 0;">
							<th style="font-size: 100%; vertical-align: baseline; font-weight: bold; text-align: left; color: #FFFFFF; background-color: #222; margin: 0; padding: 6px 4px; border: 1px solid #474747;" align="left" bgcolor="#222" valign="baseline"><?php esc_html_e('IP', 'wordfence'); ?></th>
							<th style="font-size: 100%; vertical-align: baseline; font-weight: bold; text-align: left; color: #FFFFFF; background-color: #222; margin: 0; padding: 6px 4px; border: 1px solid #474747;" align="left" bgcolor="#222" valign="baseline"><?php esc_html_e('Country', 'wordfence'); ?></th>
							<th style="font-size: 100%; vertical-align: baseline; font-weight: bold; text-align: left; color: #FFFFFF; background-color: #222; margin: 0; padding: 6px 4px; border: 1px solid #474747;" align="left" bgcolor="#222" valign="baseline"><?php esc_html_e('Block Count', 'wordfence'); ?></th>
						</tr>
					</thead>
					<tbody style="font-size: 100%; vertical-align: baseline; margin: 0; padding: 0; border: 0;">
						<?php 
						if ($top_ips_blocked):
							require(dirname(__FILE__) . '/../../lib/flags.php'); /** @var array $flags */
							foreach ($top_ips_blocked as $row):
								$stripe = wfHelperString::cycle('odd', 'even');
						?>
							<tr class="<?php echo $stripe ?>" style="font-size: 100%; vertical-align: baseline; margin: 0; padding: 0; border: 0;">
								<td style="font-size: 100%; vertical-align: baseline; font-weight: normal; text-align: left; border-collapse: collapse; margin: 0; padding: 6px 4px; border: 1px solid #cccccc;<?php echo $bg_colors[$stripe] ?>" align="left" valign="baseline"><code style="font-size: 100%; vertical-align: baseline; margin: 0; padding: 0; border: 0;"><?php echo wfUtils::inet_ntop($row->IP) ?></code></td>
								<td style="font-size: 100%; vertical-align: baseline; font-weight: normal; text-align: left; border-collapse: collapse; margin: 0; padding: 6px 4px; border: 1px solid #cccccc;<?php echo $bg_colors[$stripe] ?>" align="left" valign="baseline">
									<?php
									if ($row->countryCode):
										$key = strtolower($row->countryCode);
										$offset = '0px 0px';
										if (isset($flags[$key])) {
											$offset = $flags[$key];
										}
									?>
									<span class="wf-flag <?php echo esc_attr('wf-flag-' . $key); ?>" style="display: inline-block;vertical-align: middle;
	margin: 0;padding: 0; border: 0;background-repeat: no-repeat;background-position: <?php echo $offset; ?>;width: 16px;height: 11px;background-image: url('<?php echo esc_attr(wfUtils::getBaseURL() . 'images/flags.png'); ?>')"></span>
										&nbsp;
										<?php echo esc_html($row->countryName) ?>
									<?php else: ?>
										<?php esc_html_e('(Unknown)', 'wordfence'); ?>
									<?php endif ?>
								</td>
								<td style="font-size: 100%; vertical-align: baseline; font-weight: normal; text-align: left; border-collapse: collapse; margin: 0; padding: 6px 4px; border: 1px solid #cccccc;<?php echo $bg_colors[$stripe] ?>" align="left" valign="baseline"><?php echo (int)$row->blockCount ?></td>
							</tr>
						<?php endforeach ?>
						<?php else: ?>
							<tr>
								<td colspan="3">
									<?php esc_html_e('No data currently.', 'wordfence'); ?>
								</td>
							</tr>
						<?php endif ?>
					</tbody>
				</table>

				<p style="font-size: 100%; vertical-align: baseline; margin: 1em 0; padding: 0; border: 0;">
					<a class="button" href="<?php echo wfUtils::wpAdminURL('admin.php?page=WordfenceWAF#top#blocking') ?>"  style="font-size: 13px; vertical-align: baseline; outline: none; color: #FFF; text-decoration: none; display: inline-block; line-height: 26px; height: 28px; cursor: pointer; border-radius: 3px; white-space: nowrap; box-sizing: border-box; box-shadow: 0 1px 0 rgba(120, 200, 230, 0.5) inset, 0 1px 0 rgba(0, 0, 0, 0.15); background-image: none; background-attachment: scroll; background-repeat: repeat; background-color: #2EA2CC; margin: 0; padding: 0 10px 1px; border: 1px solid #0074a2;"><?php esc_html_e('Update Blocked IPs', 'wordfence'); ?></a>
				</p>

				<?php wfHelperString::cycle(); ?>

				<h2 style="font-size: 20px; vertical-align: baseline; clear: both; color: #222 !important; margin: 20px 0 4px; padding: 0; border: 0;"><?php esc_html_e('Top 10 Countries Blocked', 'wordfence'); ?></h2>

				<table class="activity-table" style="font-size: 100%; vertical-align: baseline; border-collapse: collapse; border-spacing: 0; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: 100%; max-width: 100%; margin: 0; padding: 0; border: 0;">
					<thead style="font-size: 100%; vertical-align: baseline; margin: 0; padding: 0; border: 0;">
						<tr style="font-size: 100%; vertical-align: baseline; margin: 0; padding: 0; border: 0;">
							<th style="font-size: 100%; vertical-align: baseline; font-weight: bold; text-align: left; color: #FFFFFF; background-color: #222; margin: 0; padding: 6px 4px; border: 1px solid #474747;" align="left" bgcolor="#222" valign="baseline"><?php esc_html_e('Country', 'wordfence'); ?></th>
							<th style="font-size: 100%; vertical-align: baseline; font-weight: bold; text-align: left; color: #FFFFFF; background-color: #222; margin: 0; padding: 6px 4px; border: 1px solid #474747;" align="left" bgcolor="#222" valign="baseline"><?php esc_html_e('Total IPs Blocked', 'wordfence'); ?></th>
							<th style="font-size: 100%; vertical-align: baseline; font-weight: bold; text-align: left; color: #FFFFFF; background-color: #222; margin: 0; padding: 6px 4px; border: 1px solid #474747;" align="left" bgcolor="#222" valign="baseline"><?php esc_html_e('Block Count', 'wordfence'); ?></th>
						</tr>
					</thead>
					<tbody style="font-size: 100%; vertical-align: baseline; margin: 0; padding: 0; border: 0;">
						<?php
						if ($top_countries_blocked):
							require(dirname(__FILE__) . '/../../lib/flags.php'); /** @var array $flags */
							foreach ($top_countries_blocked as $row):
								$stripe = wfHelperString::cycle('odd', 'even');
								?>
								<tr class="<?php echo $stripe ?>" style="font-size: 100%; vertical-align: baseline; margin: 0; padding: 0; border: 0;">
									<td style="font-size: 100%; vertical-align: baseline; font-weight: normal; text-align: left; border-collapse: collapse; margin: 0; padding: 6px 4px; border: 1px solid #cccccc;<?php echo $bg_colors[$stripe] ?>" align="left" valign="baseline">
										<?php 
										if ($row->countryCode):
											$key = strtolower($row->countryCode);
											$offset = '0px 0px';
											if (isset($flags[$key])) {
												$offset = $flags[$key];
											}
										?>
											<span class="wf-flag <?php echo esc_attr('wf-flag-' . $key); ?>" style="display: inline-block;vertical-align: middle;
													margin: 0;padding: 0; border: 0;background-repeat: no-repeat;background-position: <?php echo $offset; ?>;width: 16px;height: 11px;background-image: url('<?php echo esc_attr(wfUtils::getBaseURL() . 'images/flags.png'); ?>')"></span>
											&nbsp;
											<?php echo esc_html($row->countryName) ?>
										<?php else: ?>
											<?php esc_html_e('(Unknown)', 'wordfence'); ?>
										<?php endif ?>
									</td>
									<td style="font-size: 100%; vertical-align: baseline; font-weight: normal; text-align: left; border-collapse: collapse; margin: 0; padding: 6px 4px; border: 1px solid #cccccc;<?php echo $bg_colors[$stripe] ?>" align="left" valign="baseline"><?php echo esc_html($row->totalIPs) ?></td>
									<td style="font-size: 100%; vertical-align: baseline; font-weight: normal; text-align: left; border-collapse: collapse; margin: 0; padding: 6px 4px; border: 1px solid #cccccc;<?php echo $bg_colors[$stripe] ?>" align="left" valign="baseline"><?php echo (int)$row->totalBlockCount ?></td>
								</tr>
							<?php endforeach ?>
						<?php else: ?>
							<tr>
								<td colspan="3">
									<?php esc_html_e('No data currently.', 'wordfence'); ?>
								</td>
							</tr>
						<?php endif ?>
					</tbody>
				</table>

				<p style="font-size: 100%; vertical-align: baseline; margin: 1em 0; padding: 0; border: 0;">
					<a class="button" href="<?php echo wfUtils::wpAdminURL('admin.php?page=WordfenceWAF#top#blocking') ?>" style="font-size: 13px; vertical-align: baseline; outline: none; color: #FFF; text-decoration: none; display: inline-block; line-height: 26px; height: 28px; cursor: pointer; border-radius: 3px; white-space: nowrap; box-sizing: border-box; box-shadow: 0 1px 0 rgba(120, 200, 230, 0.5) inset, 0 1px 0 rgba(0, 0, 0, 0.15); background-image: none; background-attachment: scroll; background-repeat: repeat; background-color: #2EA2CC; margin: 0; padding: 0 10px 1px; border: 1px solid #0074a2;"><?php esc_html_e('Update Blocked Countries', 'wordfence'); ?></a>
				</p>

				<?php wfHelperString::cycle(); ?>

				<h2 style="font-size: 20px; vertical-align: baseline; clear: both; color: #222 !important; margin: 20px 0 4px; padding: 0; border: 0;"><?php esc_html_e('Top 10 Failed Logins', 'wordfence'); ?></h2>

				<table class="activity-table" style="font-size: 100%; vertical-align: baseline; border-collapse: collapse; border-spacing: 0; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: 100%; max-width: 100%; margin: 0; padding: 0; border: 0;">
					<thead style="font-size: 100%; vertical-align: baseline; margin: 0; padding: 0; border: 0;">
						<tr style="font-size: 100%; vertical-align: baseline; margin: 0; padding: 0; border: 0;">
							<th style="font-size: 100%; vertical-align: baseline; font-weight: bold; text-align: left; color: #FFFFFF; background-color: #222; margin: 0; padding: 6px 4px; border: 1px solid #474747;" align="left" bgcolor="#222" valign="baseline"><?php esc_html_e('Username', 'wordfence'); ?></th>
							<th style="font-size: 100%; vertical-align: baseline; font-weight: bold; text-align: left; color: #FFFFFF; background-color: #222; margin: 0; padding: 6px 4px; border: 1px solid #474747;" align="left" bgcolor="#222" valign="baseline"><?php esc_html_e('Login Attempts', 'wordfence'); ?></th>
							<th style="font-size: 100%; vertical-align: baseline; font-weight: bold; text-align: left; color: #FFFFFF; background-color: #222; margin: 0; padding: 6px 4px; border: 1px solid #474747;" align="left" bgcolor="#222" valign="baseline"><?php esc_html_e('Existing User', 'wordfence'); ?></th>
						</tr>
					</thead>
					<tbody style="font-size: 100%; vertical-align: baseline; margin: 0; padding: 0; border: 0;">
						<?php if ($top_failed_logins): ?>
							<?php foreach ($top_failed_logins as $row): ?>
								<?php
								$stripe = wfHelperString::cycle('odd', 'even');
								?>
								<tr class="<?php echo $stripe ?>" style="font-size: 100%; vertical-align: baseline; margin: 0; padding: 0; border: 0;">
									<td style="font-size: 100%; vertical-align: baseline; font-weight: normal; text-align: left; border-collapse: collapse; margin: 0; padding: 6px 4px; border: 1px solid #cccccc; word-wrap: break-word; word-break: break-all; <?php echo $bg_colors[$stripe] ?>" align="left" valign="baseline"><?php echo esc_html($row->username) ?></td>
									<td style="font-size: 100%; vertical-align: baseline; font-weight: normal; text-align: left; border-collapse: collapse; margin: 0; padding: 6px 4px; border: 1px solid #cccccc;<?php echo $bg_colors[$stripe] ?>" align="left" valign="baseline"><?php echo esc_html($row->fail_count) ?></td>
									<td style="font-size: 100%; vertical-align: baseline; font-weight: normal; text-align: left; border-collapse: collapse; margin: 0; padding: 6px 4px; border: 1px solid #cccccc;<?php echo $bg_colors[$stripe] ?>" align="left" valign="baseline" class="<?php echo sanitize_html_class($row->is_valid_user ? 'loginFailValidUsername' : 'loginFailInvalidUsername') ?>"><?php echo $row->is_valid_user ? esc_html__('Yes', 'wordfence') : esc_html__('No', 'wordfence') ?></td>
								</tr>
							<?php endforeach ?>
						<?php else: ?>
							<tr>
								<td colspan="3">
									<?php esc_html_e('No failed logins yet.', 'wordfence'); ?>
								</td>
							</tr>
						<?php endif ?>
					</tbody>
				</table>

				<p style="font-size: 100%; vertical-align: baseline; margin: 1em 0; padding: 0; border: 0;">
					<a class="button" href="<?php echo wfUtils::wpAdminURL('admin.php?page=WordfenceWAF&subpage=waf_options#waf-options-bruteforce') ?>" style="font-size: 13px; vertical-align: baseline; outline: none; color: #FFF; text-decoration: none; display: inline-block; line-height: 26px; height: 28px; cursor: pointer; border-radius: 3px; white-space: nowrap; box-sizing: border-box; box-shadow: 0 1px 0 rgba(120, 200, 230, 0.5) inset, 0 1px 0 rgba(0, 0, 0, 0.15); background-image: none; background-attachment: scroll; background-repeat: repeat; background-color: #2EA2CC; margin: 0; padding: 0 10px 1px; border: 1px solid #0074a2;"><?php esc_html_e('Update Login Security Options', 'wordfence'); ?></a>
				</p>
				
				<?php wfHelperString::cycle(); ?>
				
				<h2 style="font-size: 20px; vertical-align: baseline; clear: both; color: #222 !important; margin: 20px 0 4px; padding: 0; border: 0;"><?php esc_html_e('Recently Blocked Attacks', 'wordfence'); ?></h2>
				
				<table class="activity-table" style="font-size: 100%; vertical-align: baseline; border-collapse: collapse; border-spacing: 0; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: 100%; max-width: 100%; margin: 0; padding: 0; border: 0;">
					<thead style="font-size: 100%; vertical-align: baseline; margin: 0; padding: 0; border: 0;">
					<tr style="font-size: 100%; vertical-align: baseline; margin: 0; padding: 0; border: 0;">
						<th style="font-size: 100%; vertical-align: baseline; font-weight: bold; text-align: left; color: #FFFFFF; background-color: #222; margin: 0; padding: 6px 4px; border: 1px solid #474747;" align="left" bgcolor="#222" valign="baseline"><?php esc_html_e('Time', 'wordfence'); ?></th>
						<th style="font-size: 100%; vertical-align: baseline; font-weight: bold; text-align: left; color: #FFFFFF; background-color: #222; margin: 0; padding: 6px 4px; border: 1px solid #474747;" align="left" bgcolor="#222" valign="baseline"><?php esc_html_e('IP / Action', 'wordfence'); ?></th>
					</tr>
					</thead>
					<tbody style="font-size: 100%; vertical-align: baseline; margin: 0; padding: 0; border: 0;">
					<?php if (count($recent_firewall_activity) > 0): ?>
					<?php foreach ($recent_firewall_activity as $attack_row):
						?>
						<?php
						$stripe = wfHelperString::cycle('odd', 'even');
						?>
						<tr class="<?php echo $stripe ?>" style="font-size: 100%; vertical-align: baseline; margin: 0; padding: 0; border: 0;">
							<td style="font-size: 100%; vertical-align: baseline; font-weight: normal; text-align: left; border-collapse: collapse; margin: 0; padding: 6px 4px; border: 1px solid #cccccc;white-space: nowrap;<?php echo $bg_colors[$stripe] ?>" align="left" valign="baseline"><?php echo $this->attackTime($attack_row->attackLogTime) ?></td>
							<td style="font-size: 100%; vertical-align: baseline; font-weight: normal; text-align: left; border-collapse: collapse; margin: 0; padding: 6px 4px; border: 1px solid #cccccc;<?php echo $bg_colors[$stripe] ?>" align="left" valign="baseline">
								<div style="font-weight: bold; font-size: 12px;"><?php echo $this->displayIP($attack_row->IP) ?></div> 
								<pre class="display-file" style="font-size: 12px; vertical-align: baseline; width: 420px; margin: 0; padding: 0; border: 0; white-space: normal;"><?php echo wfUtils::potentialBinaryStringToHTML($attack_row->longDescription, true) ?></pre>
							</td>
						</tr>
					<?php endforeach ?>
					<?php else: ?>
						<tr>
							<td colspan="2">
								<?php esc_html_e('No blocked attacks yet.', 'wordfence'); ?>
							</td>
						</tr>
					<?php endif ?>
					</tbody>
				</table>
				
				<?php
				if ($omitted_firewall_activity > 10):
				?>
				<div style="font-size: 14px; vertical-align: baseline; clear: both; color: #f00 !important; margin: 8px 0 4px; padding: 0; border: 0;"><?php printf(esc_html__('and %d additional attacks', 'wordfence'), $omitted_firewall_activity); ?></div>
				<?php endif ?> 
				
				<p style="font-size: 100%; vertical-align: baseline; margin: 1em 0; padding: 0; border: 0;">
					<a class="button" href="<?php echo wfUtils::wpAdminURL('admin.php?page=WordfenceTools&subpage=livetraffic') ?>" style="font-size: 13px; vertical-align: baseline; outline: none; color: #FFF; text-decoration: none; display: inline-block; line-height: 26px; height: 28px; cursor: pointer; border-radius: 3px; white-space: nowrap; box-sizing: border-box; box-shadow: 0 1px 0 rgba(120, 200, 230, 0.5) inset, 0 1px 0 rgba(0, 0, 0, 0.15); background-image: none; background-attachment: scroll; background-repeat: repeat; background-color: #2EA2CC; margin: 0; padding: 0 10px 1px; border: 1px solid #0074a2;"><?php esc_html_e('View Recent Traffic', 'wordfence'); ?></a>
				</p>

				<?php wfHelperString::cycle(); ?>

				<h2 style="font-size: 20px; vertical-align: baseline; clear: both; color: #222 !important; margin: 20px 0 4px; padding: 0; border: 0;"><?php esc_html_e('Recently Modified Files', 'wordfence'); ?></h2>

				<table class="activity-table" style="font-size: 100%; vertical-align: baseline; border-collapse: collapse; border-spacing: 0; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: 100%; max-width: 100%; margin: 0; padding: 0; border: 0;">
					<thead style="font-size: 100%; vertical-align: baseline; margin: 0; padding: 0; border: 0;">
						<tr style="font-size: 100%; vertical-align: baseline; margin: 0; padding: 0; border: 0;">
							<th style="font-size: 100%; vertical-align: baseline; font-weight: bold; text-align: left; color: #FFFFFF; background-color: #222; margin: 0; padding: 6px 4px; border: 1px solid #474747;" align="left" bgcolor="#222" valign="baseline"><?php esc_html_e('Modified', 'wordfence'); ?></th>
							<th style="font-size: 100%; vertical-align: baseline; font-weight: bold; text-align: left; color: #FFFFFF; background-color: #222; margin: 0; padding: 6px 4px; border: 1px solid #474747;" align="left" bgcolor="#222" valign="baseline"><?php esc_html_e('File', 'wordfence'); ?></th>
						</tr>
					</thead>
					<tbody style="font-size: 100%; vertical-align: baseline; margin: 0; padding: 0; border: 0;">
						<?php foreach ($recently_modified_files as $file_row):
							list($file, $mod_time) = $file_row;
							?>
							<?php
							$stripe = wfHelperString::cycle('odd', 'even');
							?>
							<tr class="<?php echo $stripe ?>" style="font-size: 100%; vertical-align: baseline; margin: 0; padding: 0; border: 0;">
								<td style="font-size: 100%; vertical-align: baseline; font-weight: normal; text-align: left; border-collapse: collapse; margin: 0; padding: 6px 4px; border: 1px solid #cccccc;white-space: nowrap;<?php echo $bg_colors[$stripe] ?>" align="left" valign="baseline"><?php echo $this->modTime($mod_time) ?></td>
								<td style="font-size: 100%; vertical-align: baseline; font-weight: normal; text-align: left; border-collapse: collapse; margin: 0; padding: 6px 4px; border: 1px solid #cccccc;<?php echo $bg_colors[$stripe] ?>" align="left" valign="baseline">
									<pre class="display-file" style="font-size: 12px; vertical-align: baseline; width: 420px; overflow: auto; margin: 0; padding: 0; border: 0; word-wrap: break-word; word-break: break-all;"><?php echo esc_html($this->displayFile($file)) ?></pre>
								</td>
							</tr>
						<?php endforeach ?>
					</tbody>
				</table>

				<div style="font-size: 12px; font-style: italic; vertical-align: baseline; clear: both; margin: 8px 0 4px; padding: 0; border: 0;"><?php esc_html_e('This list may include WordPress core/plugin/theme updates, error logs, cache files, and other normal changes.', 'wordfence'); ?></div>

				<?php wfHelperString::cycle(); ?>

				<h2 style="font-size: 20px; vertical-align: baseline; clear: both; color: #222 !important; margin: 20px 0 4px; padding: 0; border: 0;"><?php esc_html_e('Updates Needed', 'wordfence'); ?></h2>
				
				<?php
				if (!is_array($updates_needed)) {
					$updates_needed = array('core' => array(), 'plugins' => array(), 'themes' => array());
				}
				?>
				<?php if ($updates_needed['core']): ?>
					<h4 style="font-size: 16px; vertical-align: baseline; clear: both; color: #666666 !important; margin: 20px 0 4px; padding: 0; border: 0;"><?php esc_html_e('Core', 'wordfence'); ?></h4>
					<ul style="font-size: 100%; vertical-align: baseline; list-style-type: none; margin: 0; padding: 0; border: 0;">
						<li style="font-size: 100%; vertical-align: baseline; margin: 0; padding: 0; border: 0;"><?php echo esc_html(sprintf(/* translators: WordPress version. */ __('A new version of WordPress (v%s) is available.', 'wordfence'), $updates_needed['core'])); ?></li>
					</ul>
				<?php endif ?>
				<?php if ($updates_needed['plugins']): ?>
					<h4 style="font-size: 16px; vertical-align: baseline; clear: both; color: #666666 !important; margin: 20px 0 4px; padding: 0; border: 0;"><?php esc_html_e('Plugins', 'wordfence'); ?></h4>
					<ul style="font-size: 100%; vertical-align: baseline; list-style-type: none; margin: 0; padding: 0; border: 0;">
						<?php
						foreach ($updates_needed['plugins'] as $plugin):
							$newVersion = ($plugin['newVersion'] == 'Unknown' ? $plugin['newVersion'] : "v{$plugin['newVersion']}");
						?>
							<li style="font-size: 100%; vertical-align: baseline; margin: 0; padding: 0; border: 0;">
								<?php echo esc_html(sprintf(/* translators: Plugin name. */ __('A new version of the plugin "%s" is available.', 'wordfence'), "{$plugin['Name']} ({$newVersion})")); ?> <?php if (isset($plugin['vulnerable']) && $plugin['vulnerable']) { echo wp_kses(__('<strong>This update includes security-related fixes.</strong>', 'wordfence'), array('strong'=>array())); } ?>
							</li>
						<?php endforeach ?>
					</ul>
				<?php endif ?>
				<?php if ($updates_needed['themes']): ?>
					<h4 style="font-size: 16px; vertical-align: baseline; clear: both; color: #666666 !important; margin: 20px 0 4px; padding: 0; border: 0;"><?php esc_html_e('Themes', 'wordfence'); ?></h4>
					<ul style="font-size: 100%; vertical-align: baseline; list-style-type: none; margin: 0; padding: 0; border: 0;">
						<?php
						foreach ($updates_needed['themes'] as $theme):
							$newVersion = ($theme['newVersion'] == 'Unknown' ? $theme['newVersion'] : "v{$theme['newVersion']}");
						?>
							<li style="font-size: 100%; vertical-align: baseline; margin: 0; padding: 0; border: 0;">
								<?php echo esc_html(sprintf(/* translators: Theme name. */ __('A new version of the theme "%s" is available.', 'wordfence'), "{$theme['name']} ({$newVersion})")); ?> <?php if (isset($theme['vulnerable']) && $theme['vulnerable']) { echo wp_kses(__('<strong>This update includes security-related fixes.</strong>', 'wordfence'), array('strong'=>array())); } ?>
							</li>
						<?php endforeach ?>
					</ul>
				<?php endif ?>
				
				<?php if ($updates_needed['core'] || $updates_needed['plugins'] || $updates_needed['themes']): ?>
					<p style="font-size: 100%; vertical-align: baseline; margin: 1em 0; padding: 0; border: 0;">
						<a class="button" href="<?php echo esc_attr(wfUtils::wpAdminURL('update-core.php')) ?>" style="font-size: 13px; vertical-align: baseline; outline: none; color: #FFF; text-decoration: none; display: inline-block; line-height: 26px; height: 28px; cursor: pointer; border-radius: 3px; white-space: nowrap; box-sizing: border-box; box-shadow: 0 1px 0 rgba(120, 200, 230, 0.5) inset, 0 1px 0 rgba(0, 0, 0, 0.15); background-image: none; background-attachment: scroll; background-repeat: repeat; background-color: #2EA2CC; margin: 0; padding: 0 10px 1px; border: 1px solid #0074a2;"><?php esc_html_e('Update Now', 'wordfence'); ?></a>
					</p>
				<?php else: ?>
					<p style="font-size: 100%; vertical-align: baseline; margin: 1em 0; padding: 0; border: 0;">
						<?php esc_html_e('No updates are available at this time.', 'wordfence'); ?>
					</p>
				<?php endif ?>

				<p style="font-size: 100%; vertical-align: baseline; margin: 1em 0; padding: 0; border: 0;">
					<?php echo wp_kses(sprintf(
						/* translators: 1. Site URL. 2. WordPress admin panel URL. 3. WordPress admin panel URL. */
							__('If you would like to sign-in to <a href="%1$s">%1$s</a> please <a href="%2$s">click here</a> now. You can change the frequency of this email or turn it on and off by visiting your <a href="%3$s">Wordfence options page</a>.', 'wordfence'),
							network_site_url(),
							wfUtils::wpAdminURL(),
							wfUtils::wpAdminURL('admin.php?page=Wordfence&subpage=global_options#global-options-email-summary')
					), array('a'=>array('href'=>array()))); ?>
				</p>

				<p style="font-size: 100%; vertical-align: baseline; margin: 1em 0; padding: 0; border: 0;">
					<!-- ##UNSUBSCRIBE## -->
				</p>
			</div>
		</td>
	</tr>
</table>
<!-- End of wrapper table -->
</body>
</html>views/user/disabled-application-passwords.php000064400000002105150755146450015475 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) exit;
/**
 * Displays a message that application passwords are disabled
 * @var bool $includeLink Whether or not to display a link to the options page to enable application passwords
 */
$isAdmin = isset($isAdmin) && $isAdmin;
?>
<h2><?php esc_html_e('Application Passwords', 'wordfence'); ?></h2>
<table class="form-table" role="presentation">
	<tr>
		<th><?php esc_html_e('Disabled', 'wordfence') ?></th>
		<td>
			<p>
				<?php esc_html_e('Application passwords have been disabled by Wordfence.', 'wordfence') ?>
				<?php if (!$isAdmin): ?>
					<?php esc_html_e('The site admin can change this option.', 'wordfence') ?>
				<?php endif ?>
			</p>
			<?php if ($isAdmin): ?>
			<?php
				$optionsUrl = 'admin.php?page=WordfenceWAF&subpage=waf_options#wf-option-loginSec-disableApplicationPasswords-label';
			?>
			<p><a href="<?php echo esc_attr(is_multisite() ? network_admin_url($optionsUrl) : admin_url($optionsUrl)) ?>" class="button"><?php esc_html_e('Edit Wordfence Options', 'wordfence') ?></a></p>
			<?php endif ?>
		</td>
	</tr>
</table>views/waf/option-rate-limit.php000064400000010171150755146450012560 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents a rate limit option with popup menus for limit value and action selections.
 *
 * Expects $rateOptionName, $rateOptions, $rateValue, $actionOptionName, $actionOptions, $actionValue, and $title to be defined. $helpLink may also be defined.
 *
 * @var string $rateOptionName The option name for the rate portion.
 * @var array $rateOptions An array of the possible values for $rateOptionName. The array is of the format array(array('value' => <the internal value>, 'label' => <a display label>), ...)
 * @var string $rateValue The current value of $rateOptionName.
 * @var int $lowValue The value below which the false positive warning should begin showing
 * @var string $actionOptionName The option name for the rate portion.
 * @var array $actionOptions An array of the possible values for $actionOptionName. The array is of the format array(array('value' => <the internal value>, 'label' => <a display label>), ...)
 * @var string $actionValue The current value of $actionOptionName.
 * @var string $title The title shown for the option.
 * @var string $helpLink If defined, the link to the corresponding external help page.
 * @var bool $premium If defined, the option will be tagged as premium only and not allow its value to change for free users.
 */

$rateID = 'wf-option-' . preg_replace('/[^a-z0-9]/i', '-', $rateOptionName);
$actionID = 'wf-option-' . preg_replace('/[^a-z0-9]/i', '-', $actionOptionName);
?>
<ul class="wf-option wf-option-rate-limit<?php if (!wfConfig::p() && isset($premium) && $premium) { echo ' wf-option-premium'; } ?>" data-rate-option="<?php echo esc_attr($rateOptionName); ?>" data-original-rate-value="<?php echo esc_attr($rateValue); ?>" data-action-option="<?php echo esc_attr($actionOptionName); ?>" data-original-action-value="<?php echo esc_attr($actionValue); ?>" data-low-value="<?php echo (int) $lowValue; ?>">
	<li class="wf-option-spacer"></li>
	<li class="wf-option-content">
		<ul>
			<li class="wf-option-title"><span id="<?php echo esc_attr($rateID); ?>-label"><?php echo esc_html($title); ?></span><?php if (!wfConfig::p() && isset($premium) && $premium) { echo ' <a href="https://www.wordfence.com/gnl1optionUpgrade/wordfence-signup/" target="_blank" rel="noopener noreferrer" class="wf-premium-link">' . esc_html__('Premium Feature', 'wordfence') . '</a>'; } ?><?php if (isset($helpLink)) { echo ' <a href="' . esc_attr($helpLink) . '"  target="_blank" rel="noopener noreferrer" class="wf-inline-help"><i class="wf-fa wf-fa-question-circle-o" aria-hidden="true"></i><span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>'; } ?></li>
			<li class="wf-option-select wf-left-xs wf-padding-add-top-xs-small wf-nowrap">
				<select<?php echo (!(!wfConfig::p() && isset($premium) && $premium) ? '' : ' disabled'); ?> id="<?php echo esc_attr($rateID); ?>" class="wf-rate-limit-rate" aria-labelledby="<?php echo esc_attr($rateID); ?>-label">
					<?php foreach ($rateOptions as $o): ?>
						<option class="wf-option-select-option" value="<?php echo esc_attr($o['value']); ?>"<?php if ($o['value'] == $rateValue) { echo ' selected'; } ?>><?php echo esc_html($o['label']); ?></option>
					<?php endforeach; ?>
				</select>
				<span class="wf-padding-add-left-small wf-padding-add-right-small wf-padding-add-top-xs-small wf-padding-add-bottom-xs-small wf-inline-block-xs"><?php esc_html_e('then', 'wordfence'); ?></span>
				<select<?php echo (!(!wfConfig::p() && isset($premium) && $premium) ? '' : ' disabled'); ?> id="<?php echo esc_attr($actionID); ?>" class="wf-rate-limit-action" aria-labelledby="<?php echo esc_attr($rateID); ?>-label">
					<?php foreach ($actionOptions as $o): ?>
						<option class="wf-option-select-option" value="<?php echo esc_attr($o['value']); ?>"<?php if ($o['value'] == $actionValue) { echo ' selected'; } ?>><?php echo esc_html($o['label']); ?></option>
					<?php endforeach; ?>
				</select>
				<div class="wf-rate-limit-warning"><div class="wf-inline-notice"><i class="wf-fa wf-fa-exclamation-triangle" aria-hidden="true"></i><span>Very strict. May cause false positives.</span></div></div>
			</li>
		</ul>
	</li>
</ul>views/waf/options-group-rate-limiting.php000064400000032103150755146450014572 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents the Rate Limiting group.
 *
 * Expects $firewall, $waf, and $stateKey.
 *
 * @var wfFirewall $firewall
 * @var wfWAF $waf
 * @var string $stateKey The key under which the collapse state is stored.
 * @var bool $collapseable If defined, specifies whether or not this grouping can be collapsed. Defaults to true.
 */

$config = $waf->getStorageEngine();

if (!isset($collapseable)) {
	$collapseable = true;
}
?>
<div class="wf-row">
	<div class="wf-col-xs-12">
		<div class="wf-block<?php if (!$collapseable) { echo ' wf-always-active'; } else { echo (wfPersistenceController::shared()->isActive($stateKey) ? ' wf-active' : ''); } ?>" data-persistence-key="<?php echo esc_attr($stateKey); ?>">
			<div class="wf-block-header">
				<div class="wf-block-header-content">
					<div class="wf-block-title">
						<strong><?php esc_html_e('Rate Limiting', 'wordfence'); ?></strong>
					</div>
					<?php if ($collapseable): ?><div class="wf-block-header-action"><div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive($stateKey) ? 'true' : 'false'); ?>" tabindex="0"></div></div><?php endif; ?>
				</div>
			</div>
			<div class="wf-block-content">
				<ul class="wf-block-list">
					<li>
						<?php
						echo wfView::create('options/option-switch', array(
							'optionName' => 'firewallEnabled',
							'value' => wfConfig::get('firewallEnabled') ? '1': '0',
							'title' => __('Enable Rate Limiting and Advanced Blocking', 'wordfence'),
							'subtitle' => __('NOTE: This checkbox enables ALL blocking/throttling functions including IP, country and advanced blocking, and the "Rate Limiting Rules" below.', 'wordfence'),
							'states' => array(
								array('value' => '0', 'label' => __('Off', 'wordfence')),
								array('value' => '1', 'label' => __('On', 'wordfence')),
							),
							'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_OPTION_ENABLE_ADVANCED_BLOCKING),
							'noSpacer' => true,
							'alignment' => 'wf-right',
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-select', array(
							'selectOptionName' => 'neverBlockBG',
							'selectOptions' => array(
								array('value' => 'neverBlockVerified', 'label' => __('Verified Google crawlers will not be rate-limited', 'wordfence')),
								array('value' => 'neverBlockUA', 'label' => __('Anyone claiming to be Google will not be rate-limited', 'wordfence')),
								array('value' => 'treatAsOtherCrawlers', 'label' => __('Treat Google like any other Crawler', 'wordfence')),
							),
							'selectValue' => wfConfig::get('neverBlockBG'),
							'title' => __('How should we treat Google\'s crawlers', 'wordfence'),
							'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_OPTION_GOOGLE_ACTION),
						))->render();
						?>
					</li>
					<?php
					$rateOptions = array(
						array('value' => 'DISABLED', 'label' => __('Unlimited', 'wordfence')),
						array('value' => 1920, 'label' => sprintf(/* translators: Number of HTTP requests. */__('%d per minute', 'wordfence'), 1920)),
						array('value' => 960, 'label' => sprintf(/* translators: Number of HTTP requests. */__('%d per minute', 'wordfence'), 960)),
						array('value' => 480, 'label' => sprintf(/* translators: Number of HTTP requests. */__('%d per minute', 'wordfence'), 480)),
						array('value' => 240, 'label' => sprintf(/* translators: Number of HTTP requests. */__('%d per minute', 'wordfence'), 240)),
						array('value' => 120, 'label' => sprintf(/* translators: Number of HTTP requests. */__('%d per minute', 'wordfence'), 120)),
						array('value' => 60, 'label' => sprintf(/* translators: Number of HTTP requests. */__('%d per minute', 'wordfence'), 60)),
						array('value' => 30, 'label' => sprintf(/* translators: Number of HTTP requests. */__('%d per minute', 'wordfence'), 30)),
						array('value' => 15, 'label' => sprintf(/* translators: Number of HTTP requests. */__('%d per minute', 'wordfence'), 15)),
						array('value' => 10, 'label' => sprintf(/* translators: Number of HTTP requests. */__('%d per minute', 'wordfence'), 10)),
						array('value' => 5, 'label' => sprintf(/* translators: Number of HTTP requests. */__('%d per minute', 'wordfence'), 5)),
						array('value' => 4, 'label' => sprintf(/* translators: Number of HTTP requests. */__('%d per minute', 'wordfence'), 4)),
						array('value' => 3, 'label' => sprintf(/* translators: Number of HTTP requests. */__('%d per minute', 'wordfence'), 3)),
						array('value' => 2, 'label' => sprintf(/* translators: Number of HTTP requests. */__('%d per minute', 'wordfence'), 2)),
						array('value' => 1, 'label' => sprintf(/* translators: Number of HTTP requests. */__('%d per minute', 'wordfence'), 1)),
					);
					$actionOptions = array(
						array('value' => 'throttle', 'label' => __('throttle it', 'wordfence')),
						array('value' => 'block', 'label' => __('block it', 'wordfence')),
					);
					?>
					<li>
						<?php
						echo wfView::create('waf/option-rate-limit', array(
							'toggleOptionName' => 'maxGlobalRequests_enabled',
							'toggleValue' => !!wfConfig::get('maxGlobalRequests_enabled') ? 1 : 0,
							'rateOptionName' => 'maxGlobalRequests',
							'rateOptions' => $rateOptions,
							'rateValue' => wfConfig::get('maxGlobalRequests'),
							'lowValue' => 120,
							'actionOptionName' => 'maxGlobalRequests_action',
							'actionOptions' => $actionOptions,
							'actionValue' => wfConfig::get('maxGlobalRequests_action'),
							'title' => __('If anyone\'s requests exceed', 'wordfence'),
							'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_OPTION_RATE_LIMIT_ANY),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('waf/option-rate-limit', array(
							'toggleOptionName' => 'maxRequestsCrawlers_enabled',
							'toggleValue' => !!wfConfig::get('maxRequestsCrawlers_enabled') ? 1 : 0,
							'rateOptionName' => 'maxRequestsCrawlers',
							'rateOptions' => $rateOptions,
							'rateValue' => wfConfig::get('maxRequestsCrawlers'),
							'lowValue' => 120,
							'actionOptionName' => 'maxRequestsCrawlers_action',
							'actionOptions' => $actionOptions,
							'actionValue' => wfConfig::get('maxRequestsCrawlers_action'),
							'title' => __('If a crawler\'s page views exceed', 'wordfence'),
							'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_OPTION_RATE_LIMIT_CRAWLER),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('waf/option-rate-limit', array(
							'toggleOptionName' => 'max404Crawlers_enabled',
							'toggleValue' => !!wfConfig::get('max404Crawlers_enabled') ? 1 : 0,
							'rateOptionName' => 'max404Crawlers',
							'rateOptions' => $rateOptions,
							'rateValue' => wfConfig::get('max404Crawlers'),
							'lowValue' => 60,
							'actionOptionName' => 'max404Crawlers_action',
							'actionOptions' => $actionOptions,
							'actionValue' => wfConfig::get('max404Crawlers_action'),
							'title' => __('If a crawler\'s pages not found (404s) exceed', 'wordfence'),
							'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_OPTION_RATE_LIMIT_CRAWLER_404),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('waf/option-rate-limit', array(
							'toggleOptionName' => 'maxRequestsHumans_enabled',
							'toggleValue' => !!wfConfig::get('maxRequestsHumans_enabled') ? 1 : 0,
							'rateOptionName' => 'maxRequestsHumans',
							'rateOptions' => $rateOptions,
							'rateValue' => wfConfig::get('maxRequestsHumans'),
							'lowValue' => 120,
							'actionOptionName' => 'maxRequestsHumans_action',
							'actionOptions' => $actionOptions,
							'actionValue' => wfConfig::get('maxRequestsHumans_action'),
							'title' => __('If a human\'s page views exceed', 'wordfence'),
							'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_OPTION_RATE_LIMIT_HUMAN),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('waf/option-rate-limit', array(
							'toggleOptionName' => 'max404Humans_enabled',
							'toggleValue' => !!wfConfig::get('max404Humans_enabled') ? 1 : 0,
							'rateOptionName' => 'max404Humans',
							'rateOptions' => $rateOptions,
							'rateValue' => wfConfig::get('max404Humans'),
							'lowValue' => 60,
							'actionOptionName' => 'max404Humans_action',
							'actionOptions' => $actionOptions,
							'actionValue' => wfConfig::get('max404Humans_action'),
							'title' => __('If a human\'s pages not found (404s) exceed', 'wordfence'),
							'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_OPTION_RATE_LIMIT_HUMAN_404),
						))->render();
						?>
					</li>
					<li>
						<?php
						$breakpoints = array(60, 300, 1800, 3600, 7200, 21600, 43200, 86400, 172800, 432000, 864000, 2592000);
						$options = array();
						foreach ($breakpoints as $b) {
							$options[] = array('value' => $b, 'label' => wfUtils::makeDuration($b));
						}
						echo wfView::create('options/option-select', array(
							'selectOptionName' => 'blockedTime',
							'selectOptions' => $options,
							'selectValue' => wfConfig::getInt('blockedTime'),
							'title' => __('How long is an IP address blocked when it breaks a rule', 'wordfence'),
							'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_OPTION_AUTOMATIC_BLOCK_DURATION),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-textarea', array(
							'textOptionName' => 'allowed404s',
							'textValue' => wfUtils::cleanupOneEntryPerLine(wfConfig::get('allowed404s')),
							'title' => __('Allowlisted 404 URLs', 'wordfence'),
							'subtitle' => __('These URL patterns will be excluded from the throttling rules used to limit crawlers.', 'wordfence'),
							'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_OPTION_WHITELISTED_404),
						))->render();
						?>
					</li>
				</ul>
				<script type="application/javascript">
					(function($) {
						WFAD.updateRateLimitDisplay = function(value, lowValue, warningElement) {
							var hide = true;
							if (Number.isNaN) { //Anything except IE
								var originalRateValue = Number.parseInt(value);
								var lowValue = Number.parseInt(lowValue);
								if (!Number.isNaN(originalRateValue) && !Number.isNaN(lowValue)) {
									if (originalRateValue < lowValue) {
										hide = false;
									}
								}
							}
							else { //IE
								var originalRateValue = parseInt(value);
								var lowValue = parseInt(lowValue);
								if (!isNaN(originalRateValue) && !isNaN(lowValue)) {
									if (originalRateValue < lowValue) {
										hide = false;
									}
								}
							}

							$(warningElement).css('display', hide ? 'none' : 'block');
						};
						
						$(function() {
							$('.wf-option.wf-option-rate-limit > .wf-option-content > ul > li.wf-option-select select').wfselect2({
								minimumResultsForSearch: -1
							}).on('change', function () {
								var optionElement = $(this).closest('.wf-option');
								if ($(this).hasClass('wf-rate-limit-rate')) {
									var option = optionElement.data('rateOption');
									var value = $(this).val();

									var originalValue = optionElement.data('originalRateValue');
									if (originalValue == value) {
										delete WFAD.pendingChanges[option];
									}
									else {
										WFAD.pendingChanges[option] = value;
									}

									WFAD.updateRateLimitDisplay(value, $(optionElement).data('lowValue'), $(optionElement).find('.wf-rate-limit-warning'));
								}
								else if ($(this).hasClass('wf-rate-limit-action')) {
									var option = optionElement.data('actionOption');
									var value = $(this).val();

									var originalValue = optionElement.data('originalActionValue');
									if (originalValue == value) {
										delete WFAD.pendingChanges[option];
									}
									else {
										WFAD.pendingChanges[option] = value;
									}
								}

								WFAD.updatePendingChanges();
							}).triggerHandler('change');

							$(window).on('wfOptionsReset', function() {
								$('.wf-option.wf-option-rate-limit').each(function() {
									var originalRateValue = $(this).data('originalRateValue');
									$(this).find('.wf-rate-limit-rate').val(originalRateValue).trigger('change');
									var originalActionValue = $(this).data('originalActionValue');
									$(this).find('.wf-rate-limit-action').val(originalActionValue).trigger('change');
									WFAD.updateRateLimitDisplay($(this).data('originalRateValue'), $(this).data('lowValue'), $(this).find('.wf-rate-limit-warning'));
								});
							});

							//Initial warning display
							$('.wf-option.wf-option-rate-limit').each(function() {
								WFAD.updateRateLimitDisplay($(this).data('originalRateValue'), $(this).data('lowValue'), $(this).find('.wf-rate-limit-warning'));
							});
						});
					})(jQuery);
				</script>
			</div>
		</div>
	</div>
</div> <!-- end rate limiting -->views/waf/waf-modal-wrapper.php000064400000003371150755146450012534 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents the content given in a modal wrapper for the WAF install/uninstall flow.
 *
 * Expects $title and $html to be defined. $helpHTML, $footerHTML, and $footerButtonTitle may also be defined.
 *
 * @var string $title The title for the panel.
 * @var string $html The main HTML content for the panel.
 * @var string $helpHTML HTML content for the help area next to the close button.
 * @var string $footerHTML HTML content for the footer area next to the footer button.
 * @var string $footerButtonTitle Title for the footer button, defaults to "Continue".
 * @var bool $noX Optional, hides the top right x button if truthy.
 */

if (!isset($footerButtonTitle)) {
	$footerButtonTitle = __('Continue', 'wordfence');
}

$showX = !isset($noX) || !$noX;
?>
<div class="wf-modal">
	<div class="wf-modal-header">
		<div class="wf-modal-header-content">
			<div class="wf-modal-title">
				<strong><?php echo $title; ?></strong>
			</div>
		</div>
		<div class="wf-modal-header-action">
			<div><?php if (isset($helpHTML)) { echo $helpHTML; } ?></div>
			<?php if ($showX) { ?><div class="wf-padding-add-left-small wf-modal-header-action-close"><a href="#" onclick="WFAD.colorboxClose(); return false" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div><?php } ?>
		</div>
	</div>
	<div class="wf-modal-content">
		<?php echo $html; ?>
	</div>
	<div class="wf-modal-footer">
		<ul class="wf-flex-horizontal wf-flex-full-width">
			<li><?php if (isset($footerHTML)) { echo $footerHTML; } ?></li>
			<li class="wf-right"><a href="#" class="wf-btn wf-btn-primary wf-btn-callout-subtle" id="wf-waf-modal-continue" role="button"><?php echo esc_html($footerButtonTitle); ?></a></li>
		</ul>
	</div>
</div>views/waf/waf-install-success.php000064400000001517150755146450013076 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }

/**
 * Presents the success message for WAF auto prepend installation.
 *
 * Expects $active.
 *
 * @var bool $active True if the WAF's auto_prepend_file is active and not because of a subdirectory install.
 */

if ($active):
?>
<p><?php esc_html_e('Nice work! The firewall is now optimized.', 'wordfence'); ?></p>
<?php else: ?>
<p><?php esc_html_e('The changes have not yet taken effect. If you are using LiteSpeed or IIS as your web server or CGI/FastCGI interface, you may need to wait a few minutes for the changes to take effect since the configuration files are sometimes cached. You also may need to select a different server configuration in order to complete this step, but wait for a few minutes before trying. You can try refreshing this page.', 'wordfence'); ?></p>
<?php endif; ?>
views/waf/waf-install-manual.php000064400000002007150755146450012676 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }

/**
 * Presents the manual message for WAF auto prepend installation.
 *
 */

?>
<p><?php echo wp_kses(__('The required file has been created. You\'ll need to insert the following code into your <code>php.ini</code> to finish installation:', 'wordfence'), array('code'=>array())); ?></p>
<pre class="wf-pre">auto_prepend_file = '<?php echo esc_html(addcslashes(wordfence::getWAFBootstrapPath(), "'")); ?>'</pre>
<p><?php echo wp_kses(sprintf(/* translators: Support URL. */ __('You can find more details on alternative setup steps, including installation on SiteGround or for multiple sites sharing a single php.ini, <a target="_blank" rel="noopener noreferrer" href="%s">in our documentation<span class="screen-reader-text"> (opens in new tab)</span></a>.', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_INSTALL_MANUALLY)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()), 'span'=>array('class'=>array()))); ?></p>views/waf/option-rules.php000064400000005165150755146450011652 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
?>
<ul id="wf-option-wafRules" class="wf-option wf-flex-vertical wf-flex-align-left">
	<li class="wf-option-title"><strong><?php esc_html_e('Rules', 'wordfence'); ?></strong> <a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_RULES); ?>"  target="_blank" rel="noopener noreferrer" class="wf-inline-help"><i class="wf-fa wf-fa-question-circle-o" aria-hidden="true"></i><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></li>
	<li class="wf-option-subtitle"><?php echo ($firewall->isSubDirectoryInstallation() ? esc_html__('You are currently running the WAF from another WordPress installation. These rules can be disabled or enabled once you configure the firewall to run correctly on this site.', 'wordfence') : ''); ?></li>
	<li id="waf-rules-wrapper" class="wf-add-top"></li>
	<?php if (!WFWAF_SUBDIRECTORY_INSTALL): ?>
	<li id="waf-rules-manual-update">
		<ul class="wf-option wf-option-footer wf-padding-no-bottom">
			<li><a class="wf-btn wf-btn-default waf-rules-refresh" href="#" role="button"><?php esc_html_e('Manually Refresh Rules', 'wordfence'); ?></a>&nbsp;&nbsp;</li>
			<li class="wf-padding-add-top-xs-small"><em id="waf-rules-next-update"></em></li>
		</ul>
		<script type="application/javascript">
			(function($) {
				$('.waf-rules-refresh').on('click', function(e) {
					e.preventDefault();
					e.stopPropagation();
					
					WFAD.wafUpdateRules();
				});
			})(jQuery);
		<?php
		try {
			$lastUpdated = wfWAF::getInstance()->getStorageEngine()->getConfig('rulesLastUpdated', null, 'transient');
			
			$nextUpdate = PHP_INT_MAX;
			$cron = (array) wfWAF::getInstance()->getStorageEngine()->getConfig('cron', null, 'livewaf');
			if (is_array($cron)) {
				/** @var wfWAFCronEvent $event */
				foreach ($cron as $index => $event) {
					if ($event instanceof wfWAFCronFetchRulesEvent) {
						$event->setWaf(wfWAF::getInstance());
						if (!$event->isInPast()) {
							$nextUpdate = min($nextUpdate, $event->getFireTime());
						}
					}
				}
			}
		}
		catch (wfWAFStorageFileException $e) {
			error_log($e->getMessage());
		}
		catch (wfWAFStorageEngineMySQLiException $e) {
			error_log($e->getMessage());
		}
		if (!empty($lastUpdated)): ?>
			var lastUpdated = <?php echo (int) $lastUpdated ?>;
			WFAD.renderWAFRulesLastUpdated(new Date(lastUpdated * 1000));
		<?php endif ?>
		
		<?php if ($nextUpdate < PHP_INT_MAX): ?>
			var nextUpdate = <?php echo (int) $nextUpdate ?>;
			WFAD.renderWAFRulesNextUpdate(new Date(nextUpdate * 1000));
		<?php endif ?>
		</script>
	</li>
	<?php endif ?>
</ul>views/waf/status-tooltip-learning-mode.php000064400000001320150755146450014731 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
?>
<ul class="wf-flex-horizontal wf-flex-full-width wf-no-top">
	<li class="wf-tip-light-bulb"><i class="wf-ion-ios-lightbulb-outline"></i></li>
	<li class="wf-tip-info-message"><strong><?php echo wp_kses(sprintf(/* translators: Support URL. */ __('The Web Application Firewall is currently in Learning Mode. <a href="%s" target="_blank" rel="noopener noreferrer">Learn More<span class="screen-reader-text"> (opens in new tab)</span></a>', 'wordfence'), wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_LEARNING_MODE)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()), 'span'=>array('class'=>array()))); ?></strong></li>
</ul>views/waf/debug.php000064400000013315150755146450010274 0ustar00<?php

if (!defined('WORDFENCE_VERSION')) { exit; }

/** @var wfRequestModel $hit */
/** @var stdClass $hitData */

$title = sprintf('Debugging #%d as False Positive', $hit->id);

$fields = array(
	'URL'         => $hit->URL,
	'Timestamp'   => date('r', $hit->ctime),
	'IP'          => wfUtils::inet_ntop($hit->IP),
	'Status Code' => $hit->statusCode,
	'User Agent'  => $hit->UA,
	'Referer'     => $hit->referer,
);

if (isset($hitData->fullRequest)) {
	$requestString = base64_decode($hitData->fullRequest);
	$request = wfWAFRequest::parseString($requestString);
} else {
	$request = new wfWAFRequest();
	$request->setAuth(array());
	$request->setBody(array());
	$request->setCookies(array());
	$request->setFileNames(array());
	$request->setFiles(array());
	$request->setHeaders(array());
	$request->setHost('');
	$request->setIp('');
	$request->setMethod('GET');
	$request->setPath('');
	$request->setProtocol('http');
	$request->setQueryString(array());
	$request->setTimestamp('');
	$request->setUri('');

	$headers = array();
	$urlPieces = parse_url($hit->URL);
	if ($urlPieces) {
		if (array_key_exists('scheme', $urlPieces)) {
			$request->setProtocol($urlPieces['scheme']);
		}
		if (array_key_exists('host', $urlPieces)) {
			$request->setHost($urlPieces['host']);
			$headers['Host'] = $urlPieces['host'];
		}
		$uri = '/';
		if (array_key_exists('path', $urlPieces)) {
			$request->setPath($urlPieces['path']);
			$uri = $urlPieces['path'];
		}
		if (array_key_exists('query', $urlPieces)) {
			$uri .= '?' . $urlPieces['query'];
			parse_str($urlPieces['query'], $query);
			$request->setQueryString($query);
		}
		$request->setUri($uri);
	}
	$headers['User-Agent'] = $hit->UA;
	$headers['Referer'] = $hit->referer;
	$request->setHeaders($headers);

	preg_match('/request\.([a-z]+)(?:\[(.*?)\](.*?))?/i', $hitData->paramKey, $matches);
	if ($matches) {
		switch ($matches[1]) {
			case 'body':
				$request->setMethod('POST');
				parse_str("$matches[2]$matches[3]", $body);
				$request->setBody($body);
				break;
		}
	}
}

$request->setIP(wfUtils::inet_ntop($hit->IP));
$request->setTimestamp($hit->ctime);


$waf = wfWAF::getInstance();
$waf->setRequest($request);

$result = '<strong class="ok">Passed</strong>';
$failedRules = array();
try {
	$waf->runRules();
} catch (wfWAFAllowException $e) {
	$result = '<strong class="ok">Allowlisted</strong>';
} catch (wfWAFBlockException $e) {
	$result = '<strong class="error">Blocked</strong>';
	$failedRules = $waf->getFailedRules();
} catch (wfWAFBlockSQLiException $e) {
	$result = '<strong class="error">Blocked For SQLi</strong>';
	$failedRules = $waf->getFailedRules();
} catch (wfWAFBlockXSSException $e) {
	$result = '<strong class="error">Blocked For XSS</strong>';
	$failedRules = $waf->getFailedRules();
}

?>
<!doctype html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title><?php echo esc_html($title) ?></title>
	<link rel="stylesheet" href="<?php echo wfUtils::getBaseURL() . wfUtils::versionedAsset('css/main.css'); ?>">
	<link rel="stylesheet" href="<?php echo wfLicense::current()->getStylesheet(); ?>">
	<style>
		html {
			font-family: "Open Sans", Helvetica, Arial, sans-serif;
		}
		h1, h2, h3, h4, h5 {
			margin: 20px 0px 8px;
		}
		pre, p {
			margin: 8px 0px 20px;
		}
		pre.request-debug {
			padding: 12px;
			background: #fafafa;
			border: 1px solid #999999;
			overflow: auto;
		}
		pre.request-debug em {
			font-style: normal;
			padding: 1px;
			border: 1px solid #ffb463;
			background-color: #ffffe0;
			border-radius: 2px;
		}
		pre.request-debug strong {
			border: 1px solid #ff4a35;
			background-color: #ffefe7;
			margin: 1px;
		}
		.ok {
			color: #00c000;
		}
		.error {
			color: #ff4a35;
		}
		#wrapper {
			max-width: 1060px;
			margin: 0px auto;
		}
	</style>
</head>
<body>
<div id="wrapper">
	<h1><?php echo esc_html($title) ?></h1>

	<table class="wf-striped-table">
		<thead>
		<tr>
			<th colspan="2">Request Details</th>
		</tr>
		</thead>
		<?php foreach ($fields as $label => $value): ?>
			<tr>
				<td><?php echo esc_html($label) ?>:</td>
				<td><?php echo esc_html($value) ?></td>
			</tr>
		<?php endforeach ?>
	</table>

	<h4>HTTP Request: <?php echo $result ?></h4>
	<?php if (!isset($hitData->fullRequest)): ?>
		<em style="font-size: 14px;">This is a reconstruction of the request using what was flagged by the WAF.
			Full requests are only stored when <code>WFWAF_DEBUG</code> is enabled.</em>
	<?php endif ?>
	<pre class="request-debug"><?php
	$paramKey = wp_hash(uniqid('param', true));
	$matchKey = wp_hash(uniqid('match', true));

	$template = array(
		"[$paramKey]"  => '<em>',
		"[/$paramKey]" => '</em>',
		"[$matchKey]"  => '<strong>',
		"[/$matchKey]" => '</strong>',
	);
	$highlightParamFormat = "[$paramKey]%s[/$paramKey]";
	$highlightMatchFormat = "[$matchKey]%s[/$matchKey]";
	$requestOut = esc_html($request->highlightFailedParams($failedRules, $highlightParamFormat, $highlightMatchFormat));

	echo str_replace(array_keys($template), $template, $requestOut) ?></pre>

	<?php if ($failedRules): ?>
		<h4>Failed Rules</h4>
		<table class="wf-striped-table">
			<thead>
			<tr>
				<th>ID</th>
				<th>Category</th>
			</tr>
			</thead>
			<tbody>
			<?php
			foreach ($failedRules as $paramKey => $categories) {
				foreach ($categories as $categoryKey => $failed) {
					foreach ($failed as $failedRule) {
						/** @var wfWAFRule $rule */
						$rule = $failedRule['rule'];
						printf("<tr><td>%d</td><td>%s</td></tr>", $rule->getRuleID(), $rule->getDescription());
					}
				}
			}
			?>
			</tbody>
		</table>

	<?php endif ?>

	<p>
		<button type="button" id="run-waf-rules">Run Through WAF Rules</button>
	</p>

	<script>
		document.getElementById('run-waf-rules').onclick = function() {
			document.location.href = document.location.href;
		}
	</script>


</div>

</body>
</html>views/waf/option-whitelist.php000064400000017763150755146450012543 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
?>
<ul id="wf-option-wafWhitelist" class="wf-option wf-flex-vertical wf-flex-full-width">
	<li><strong><?php esc_html_e('Add Allowlisted URL/Param', 'wordfence'); ?></strong> <a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_WHITELIST); ?>"  target="_blank" rel="noopener noreferrer" class="wf-inline-help"><i class="wf-fa wf-fa-question-circle-o" aria-hidden="true"></i><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a> <?php esc_html_e('The URL/parameters in this table will not be tested by the firewall. They are typically added while the firewall is in Learning Mode or by an admin who identifies a particular action/request is a false positive.', 'wordfence'); ?></li>
	<li id="whitelist-form"> 
		<div class="wf-form-inline">
			<div class="wf-form-group">
				<input class="wf-form-control" type="text" name="whitelistURL" id="whitelistURL" placeholder="<?php esc_attr_e('URL', 'wordfence'); ?>">
			</div>
			<div class="wf-form-group">
				<select class="wf-form-control" name="whitelistParam" id="whitelistParam">
					<option value="request.body"><?php esc_html_e('POST Body', 'wordfence'); ?></option>
					<option value="request.cookies"><?php esc_html_e('Cookie', 'wordfence'); ?></option>
					<option value="request.fileNames"><?php esc_html_e('File Name', 'wordfence'); ?></option>
					<option value="request.headers"><?php esc_html_e('Header', 'wordfence'); ?></option>
					<option value="request.queryString"><?php esc_html_e('Query String', 'wordfence'); ?></option>
				</select>
			</div>
			<div class="wf-form-group">
				<input class="wf-form-control" type="text" name="whitelistParamName" id="whitelistParamName" placeholder="<?php esc_attr_e('Param Name', 'wordfence'); ?>">
			</div>
			<a href="#" class="wf-btn wf-btn-callout wf-btn-primary wf-disabled" id="waf-whitelisted-urls-add" role="button"><?php esc_html_e('Add', 'wordfence'); ?></a>
		</div>
		<script type="application/javascript">
			(function($) {
				$(function() {
					$('#whitelistURL, #whitelistParamName').on('change paste keyup', function() {
						setTimeout(function() {
							$('#waf-whitelisted-urls-add').toggleClass('wf-disabled', $('#whitelistURL').val().length == 0 || $('#whitelistParamName').val().length == 0);
						}, 100);
					});
					
					$('#waf-whitelisted-urls-add').on('click', function(e) {
						e.preventDefault();
						e.stopPropagation();

						var form = $('#whitelist-form');
						var inputURL = form.find('[name=whitelistURL]');
						var inputParam = form.find('[name=whitelistParam]');
						var inputParamName = form.find('[name=whitelistParamName]');

						var url = inputURL.val();
						var param = inputParam.val();
						var paramName = inputParamName.val();
						if (url && param) {
							<?php $user = wp_get_current_user(); ?>
							var paramKey = WFAD.base64_encode(param + '[' + paramName + ']');
							var pathKey = WFAD.base64_encode(url);
							var key = pathKey + '|' + paramKey;
							var matches = $('#waf-whitelisted-urls-wrapper .whitelist-table > tbody > tr[data-key="' + key + '"]');
							if (matches.length > 0) {
								WFAD.colorboxModal((WFAD.isSmallScreen ? '300px' : '400px'), '<?php esc_attr_e('Allowlist Entry Exists', 'wordfence'); ?>', '<?php esc_attr_e('An allowlist entry for this URL and parameter already exists.', 'wordfence'); ?>');
								return;
							}
							
							//Generate entry and add to display data set
							var entry = {
								data: {
									description: "<?php esc_attr_e('Allowlisted via Firewall Options page', 'wordfence'); ?>",
									source: 'waf-options',
									disabled: false,
									ip: "<?php echo esc_attr(wfUtils::getIP()); ?>",
									timestamp: Math.round(Date.now() / 1000),
									userID: <?php echo (int) $user->ID; ?>,
									username: "<?php echo esc_attr($user->user_login); ?>"
								},
								paramKey: paramKey,
								path: pathKey,
								ruleID: ['all'],
								adding: true
							};
							WFAD.wafData.whitelistedURLParams.push(entry);

							//Add to change list
							if (!(WFAD.pendingChanges['whitelistedURLParams'] instanceof Object)) {
								WFAD.pendingChanges['whitelistedURLParams'] = {};
							}

							if (!(WFAD.pendingChanges['whitelistedURLParams']['add'] instanceof Object)) {
								WFAD.pendingChanges['whitelistedURLParams']['add'] = {};
							}

							WFAD.pendingChanges['whitelistedURLParams']['add'][key] = entry;
							WFAD.updatePendingChanges();
							
							//Reload and reset add form
							var whitelistedIPsEl = $('#waf-whitelisted-urls-tmpl').tmpl(WFAD.wafData);
							$('#waf-whitelisted-urls-wrapper').html(whitelistedIPsEl);
							$(window).trigger('wordfenceWAFInstallWhitelistEventHandlers');

							inputURL.val('');
							inputParamName.val('');
						}
					});
				});
			})(jQuery);
		</script>
	</li>
	<li><hr id="whitelist-form-separator"></li>
	<li id="whitelist-table-controls" class="wf-flex-horizontal wf-flex-vertical-xs wf-flex-full-width">
		<div><a href="#" id="whitelist-bulk-delete" class="wf-btn wf-btn-callout wf-btn-default" role="button"><?php esc_html_e('Delete', 'wordfence'); ?></a>&nbsp;&nbsp;<a href="#" id="whitelist-bulk-enable" class="wf-btn wf-btn-callout wf-btn-default" role="button"><?php esc_html_e('Enable', 'wordfence'); ?></a>&nbsp;&nbsp;<a href="#" id="whitelist-bulk-disable" class="wf-btn wf-btn-callout wf-btn-default" role="button"><?php esc_html_e('Disable', 'wordfence'); ?></a></div>
		<div class="wf-right wf-left-xs wf-padding-add-top-xs-small">
			<div class="wf-select-group wf-flex-vertical-xs wf-flex-full-width">
				<select name="filterColumn">
					<option value="url"><?php esc_html_e('URL', 'wordfence'); ?></option>
					<option value="param"><?php esc_html_e('Param', 'wordfence'); ?></option>
					<option value="source"><?php esc_html_e('Source', 'wordfence'); ?></option>
					<option value="user"><?php esc_html_e('User', 'wordfence'); ?></option>
					<option value="ip"><?php esc_html_e('IP', 'wordfence'); ?></option>
				</select>
				<input type="text" class="wf-form-control" placeholder="<?php esc_attr_e('Filter Value', 'wordfence'); ?>" name="filterValue">
				<div><span class="wf-hidden-xs">&nbsp;&nbsp;</span><a href="#" id="whitelist-apply-filter" class="wf-btn wf-btn-callout wf-btn-default" role="button"><?php esc_html_e('Filter', 'wordfence'); ?></a></div>
			</div>
			<script type="application/javascript">
				(function($) {
					$(function() {
						$('#whitelist-apply-filter').on('click', function(e) {
							e.preventDefault();
							e.stopPropagation();

							$(window).trigger('wordfenceWAFApplyWhitelistFilter');
						});
					});
				})(jQuery);
			</script>
		</div>
	</li>
	<li>
		<div id="waf-whitelisted-urls-wrapper"></div>
	</li>
</ul>
<script type="application/javascript">
	(function($) {
		$(function() {
			$('#whitelistParam').wfselect2({
				minimumResultsForSearch: -1,
				templateSelection: function(item) {
					return 'Param Type: ' + item.text;
				}
			});
			
			$('#whitelist-table-controls select').wfselect2({
				minimumResultsForSearch: -1,
				placeholder: "Filter By",
				width: '200px',
				templateSelection: function(item) {
					return 'Filter By: ' + item.text;
				}
			});
			
			$('#whitelist-bulk-delete').on('click', function(e) {
				e.preventDefault();
				e.stopPropagation();

				WFAD.wafWhitelistedBulkDelete();
				WFAD.updatePendingChanges();
				var whitelistedIPsEl = $('#waf-whitelisted-urls-tmpl').tmpl(WFAD.wafData);
				$('#waf-whitelisted-urls-wrapper').html(whitelistedIPsEl);
				$(window).trigger('wordfenceWAFInstallWhitelistEventHandlers');
			});

			$('#whitelist-bulk-enable').on('click', function(e) {
				e.preventDefault();
				e.stopPropagation();

				WFAD.wafWhitelistedBulkChangeEnabled(true);
				WFAD.updatePendingChanges();
			});

			$('#whitelist-bulk-disable').on('click', function(e) {
				e.preventDefault();
				e.stopPropagation();

				WFAD.wafWhitelistedBulkChangeEnabled(false);
				WFAD.updatePendingChanges();
			});
		});
	})(jQuery);
</script> views/waf/options-group-basic-firewall.php000064400000066002150755146450014716 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents the Basic Firewall Options group.
 *
 * Expects $firewall, $waf, and $stateKey.
 *
 * @var wfFirewall $firewall
 * @var wfWAF $waf
 * @var string $stateKey The key under which the collapse state is stored.
 * @var bool $collapseable If defined, specifies whether or not this grouping can be collapsed. Defaults to true.
 */

$config = $waf->getStorageEngine();

if (!isset($collapseable)) {
	$collapseable = true;
}
?>
<div class="wf-row">
	<div class="wf-col-xs-12">
		<div class="wf-block<?php if (!$collapseable) { echo ' wf-always-active'; } else { echo (wfPersistenceController::shared()->isActive($stateKey) ? ' wf-active' : ''); } ?>" data-persistence-key="<?php echo esc_attr($stateKey); ?>">
			<div class="wf-block-header">
				<div class="wf-block-header-content">
					<div class="wf-block-title">
						<strong><?php esc_html_e('Basic Firewall Options', 'wordfence'); ?></strong>
					</div>
					<?php if ($collapseable): ?><div class="wf-block-header-action"><div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive($stateKey) ? 'true' : 'false'); ?>" tabindex="0"></div></div><?php endif; ?>
				</div>
			</div>
			<div class="wf-block-content">
				<ul class="wf-block-list wf-block-list-horizontal">
					<li id="wf-option-wafStatus" class="wf-flex-vertical wf-flex-align-left wf-flex-full-width">
						<h3><?php esc_html_e('Web Application Firewall Status', 'wordfence'); ?></h3>
						<?php if ($firewall->isSubDirectoryInstallation()): ?>
							<p class="wf-no-top"><?php echo wp_kses(sprintf(/* translators: WordPress admin URL. */ __('You are currently running the Wordfence Web Application Firewall from another WordPress installation. Please <a href="%s">click here</a> to configure the Firewall to run correctly on this site.', 'wordfence'), esc_attr(network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options#configureAutoPrepend'))), array('a'=>array('href'=>array()))); ?></p>
						<?php else: ?>
							<p class="wf-no-top">
								<?php $wafStatus = $firewall->firewallMode(); ?>
								<span id="wafStatus-enabled-description" class="wafStatus-description"<?php if ($wafStatus != wfFirewall::FIREWALL_MODE_ENABLED) { echo ' style="display: none;"'; } ?>><strong><?php esc_html_e('Enabled and Protecting:', 'wordfence'); ?></strong> <?php esc_html_e('In this mode, the Wordfence Web Application Firewall is actively blocking requests matching known attack patterns and is actively protecting your site from attackers.', 'wordfence'); ?></span>
								<span id="wafStatus-learning-mode-description" class="wafStatus-description"<?php if ($wafStatus != wfFirewall::FIREWALL_MODE_LEARNING) { echo ' style="display: none;"'; } ?>><strong><?php esc_html_e('Learning Mode:', 'wordfence'); ?></strong> <?php echo wp_kses(sprintf(/* translators: Support URL. */ __('When you first install the Wordfence Web Application Firewall, it will be in learning mode. This allows Wordfence to learn about your site so that we can understand how to protect it and how to allow normal visitors through the firewall. We recommend you let Wordfence learn for a week before you enable the firewall. <a href="%s" target="_blank" rel="noopener noreferrer">Learn More<span class="screen-reader-text"> (opens in new tab)</span></a>', 'wordfence'), wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_LEARNING_MODE)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()), 'span'=>array('class'=>array()))); ?></span>
								<span id="wafStatus-disabled-description" class="wafStatus-description"<?php if ($wafStatus != wfFirewall::FIREWALL_MODE_DISABLED) { echo ' style="display: none;"'; } ?>><strong><?php esc_html_e('Disabled:', 'wordfence'); ?></strong> <?php esc_html_e('In this mode, the Wordfence Web Application Firewall is functionally turned off and does not run any of its rules or analyze the request in any way.', 'wordfence'); ?></span>
							</p>
							<p class="wf-no-top wf-add-bottom">
								<select id="input-wafStatus" data-original-value="<?php echo esc_attr($wafStatus); ?>" name="wafStatus" class="wf-form-control"<?php echo !WFWAF_ENABLED ? ' disabled' : '' ?>>
									<option<?php echo $wafStatus == wfFirewall::FIREWALL_MODE_ENABLED ? ' selected' : '' ?> class="wafStatus-enabled" value="enabled"><?php esc_html_e('Enabled and Protecting', 'wordfence'); ?></option>
									<option<?php echo $wafStatus == wfFirewall::FIREWALL_MODE_LEARNING ? ' selected' : '' ?> class="wafStatus-learning-mode" value="learning-mode"><?php esc_html_e('Learning Mode', 'wordfence'); ?></option>
									<option<?php echo $wafStatus == wfFirewall::FIREWALL_MODE_DISABLED ? ' selected' : '' ?> class="wafStatus-disabled" value="disabled"><?php esc_html_e('Disabled', 'wordfence'); ?></option>
								</select>
								<script type="application/javascript">
									(function($) {
										$(function() {
											$('#input-wafStatus').wfselect2({
												minimumResultsForSearch: -1,
												width: '200px'
											}).on('change', function() {
												var select = $(this);
												var value = select.val();
												var container = $($(this).data('wfselect2').$container);
												container.removeClass('wafStatus-enabled wafStatus-learning-mode wafStatus-disabled')
													.addClass('wafStatus-' + value);

												$('.wafStatus-description').hide();
												$('#wafStatus-' + value + '-description').show();
												if (value == 'learning-mode') {
													$('#waf-learning-mode-grace-period').show();
												}
												else {
													$('#waf-learning-mode-grace-period').hide();
												}

												var originalValue = select.data('originalValue');
												if (originalValue == value) {
													delete WFAD.pendingChanges['wafStatus'];
												}
												else {
													WFAD.pendingChanges['wafStatus'] = value;
												}

												WFAD.updatePendingChanges();
											}).val(<?php echo json_encode($wafStatus) ?>).triggerHandler('change');

											$('#waf-learning-mode-grace-period .wf-datetime').datetimepicker({
												dateFormat: 'yy-mm-dd',
												timezone: <?php try { echo (int) wfUtils::timeZoneMinutes($config->getConfig('learningModeGracePeriod') ? (int) $config->getConfig('learningModeGracePeriod') : false); } catch (Exception $e) { echo 0; }; ?>,
												showTime: false,
												showTimepicker: false,
												showMonthAfterYear: true
											}).each(function() {
												var el = $(this);
												if (el.attr('data-value')) {
													el.datetimepicker('setDate', new Date(el.attr('data-value') * 1000));
												}
											}).on('change', function() {
												var value = Math.floor($(this).datetimepicker('getDate').getTime() / 1000);
												var originalValue = $('#input-learningModeGracePeriod').data('originalValue');
												if (originalValue == value) {
													delete WFAD.pendingChanges['learningModeGracePeriod'];
												}
												else {
													WFAD.pendingChanges['learningModeGracePeriod'] = $(this).val();
												}
												WFAD.updatePendingChanges();
											});

											$('#waf-learning-mode-grace-period .wf-option-checkbox').on('click', function(e) {
												e.preventDefault();
												e.stopPropagation();

												var originalValue = $(this).data('originalValue');
												var value = originalValue;
												var isActive = $(this).hasClass('wf-checked');
												if (isActive) {
													$(this).removeClass('wf-checked');
													$('#waf-learning-mode-grace-period .wf-datetime').attr('disabled', true);
													value = 0;
												}
												else {
													$(this).addClass('wf-checked');
													$('#waf-learning-mode-grace-period .wf-datetime').attr('disabled', false);
													value = 1;

													if (!$('#input-learningModeGracePeriod').val()) {
														var date = new Date();
														date.setDate(date.getDate() + 7);
														$('#input-learningModeGracePeriod').datetimepicker('setDate', date);
													}
												}

												if (originalValue == value) {
													delete WFAD.pendingChanges['learningModeGracePeriodEnabled'];
												}
												else {
													WFAD.pendingChanges['learningModeGracePeriodEnabled'] = value;
												}

												WFAD.updatePendingChanges();
											});

											$(window).on('wfOptionsReset', function() {
												$('#input-wafStatus').val($('#input-wafStatus').data('originalValue')).trigger('change');
												$('#waf-learning-mode-grace-period .wf-option-checkbox').each(function() {
													var originalValue = $(this).data('originalValue');
													$(this).toggleClass('wf-checked', !!originalValue);
													$('#waf-learning-mode-grace-period .wf-datetime').attr('disabled', !originalValue);
												});
												$('.wf-datetime').each(function() {
													var el = $(this);
													if (el.attr('data-value')) {
														el.datetimepicker('setDate', new Date(el.attr('data-value') * 1000));
													}
													else {
														el.val('');
													}
												})
											});
										});
									})(jQuery);
								</script>
							</p>
							<div id="waf-learning-mode-grace-period" class="wf-add-bottom" style="display: none;"><div class="waf-learning-mode wf-option-checkbox<?php try { echo $config->getConfig('learningModeGracePeriodEnabled') ? ' wf-checked' : ''; } catch (Exception $e) { /* Do nothing */ } ?>" data-original-value="<?php try { echo $config->getConfig('learningModeGracePeriodEnabled') ? 1 : 0; } catch (Exception $e) { echo 0; } ?>"><i class="wf-ion-ios-checkmark-empty" aria-hidden="true"></i></div><span> <?php esc_html_e('Automatically enable on', 'wordfence'); ?> </span><input type="text" name="learningModeGracePeriod" id="input-learningModeGracePeriod" class="wf-datetime wf-form-control" placeholder="Enabled until..." data-value="<?php try { echo esc_attr($config->getConfig('learningModeGracePeriod') ? (int) $config->getConfig('learningModeGracePeriod') : ''); } catch (Exception $e) { /* Do nothing */ } ?>" data-original-value="<?php try { echo esc_attr($config->getConfig('learningModeGracePeriod') ? (int) $config->getConfig('learningModeGracePeriod') : ''); } catch (Exception $e) { /* Do nothing */ } ?>"<?php try { echo $config->getConfig('learningModeGracePeriodEnabled') ? '' : ' disabled'; } catch (Exception $e) { echo ' disabled'; } ?>></div>
						<?php endif; ?>
					</li>
					<li id="wf-option-protectionMode" class="wf-flex-vertical wf-flex-align-left">
						<h3><?php esc_html_e('Protection Level', 'wordfence'); ?></h3>
						<?php if ($firewall->protectionMode() == wfFirewall::PROTECTION_MODE_EXTENDED && !$firewall->isSubDirectoryInstallation()): ?>
							<p class="wf-no-top"><strong><?php esc_html_e('Extended Protection:', 'wordfence'); ?></strong> <?php esc_html_e('All PHP requests will be processed by the firewall prior to running.', 'wordfence'); ?></p>
							<p><?php echo wp_kses(sprintf(/* translators: Support URL. */ __('If you\'re moving to a new host or a new installation location, you may need to temporarily disable extended protection to avoid any file not found errors. Use this action to remove the configuration changes that enable extended protection mode or you can <a href="%s" target="_blank" rel="noopener noreferrer">remove them manually<span class="screen-reader-text"> (opens in new tab)</span></a>.', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_REMOVE_MANUALLY)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()), 'span'=>array('class'=>array()))); ?></p>
							<p class="wf-no-top"><a class="wf-btn wf-btn-default" href="#" id="wf-waf-uninstall" role="button"><?php esc_html_e('Remove Extended Protection', 'wordfence'); ?></a></p>
						<?php elseif ($firewall->isSubDirectoryInstallation()): ?>
							<p class="wf-no-top"><strong><?php esc_html_e('Existing WAF Installation Detected:', 'wordfence'); ?></strong> <?php esc_html_e('You are currently running the Wordfence Web Application Firewall from another WordPress installation. Please configure the firewall to run correctly on this site.', 'wordfence'); ?></p>
							<p><a class="wf-btn wf-btn-primary" href="#" id="wf-waf-install" role="button"><?php esc_html_e('Optimize the Wordfence Firewall', 'wordfence'); ?></a></p>
						<?php else: ?>
							<p class="wf-no-top"><strong><?php esc_html_e('Basic WordPress Protection:', 'wordfence'); ?></strong> <?php esc_html_e('The plugin will load as a regular plugin after WordPress has been loaded, and while it can block many malicious requests, some vulnerable plugins or WordPress itself may run vulnerable code before all plugins are loaded.', 'wordfence'); ?></p>
							<p><a class="wf-btn wf-btn-primary" href="#" id="wf-waf-install" role="button"><?php esc_html_e('Optimize the Wordfence Firewall', 'wordfence'); ?></a></p>
						<?php endif; ?>
						<script type="application/javascript">

							(function($) {
								$(function() {
									var validateContinue = function() {
										var backupsAvailable = $('.wf-waf-backups:visible').data('backups');
										var backupsDownloaded = $('#wf-waf-server-config').data('backups');

										var matchCount = 0;
										backupsAvailable = backupsAvailable.sort();
										backupsDownloaded = backupsDownloaded.sort();
										for (var i = 0; i < backupsAvailable.length; i++) {
											for (var n = 0; n < backupsDownloaded.length; n++) {
												if (backupsAvailable[i] == backupsDownloaded[n]) {
													matchCount++;
												}
											}
										}

										$('#wf-waf-install-continue, #wf-waf-uninstall-continue').toggleClass('wf-disabled', matchCount != backupsAvailable.length);
									};

									var installUninstallResponseHandler = function(action, res) {
										var modal = $('.wf-modal-title').closest('.wf-modal');
										if (res.needsCredentials) {
											var replacement = $(res.html);
											modal.replaceWith(replacement);
											modal = replacement;

											var form = replacement.find('#request-filesystem-credentials-form').closest('form');
											form.find('input[type="submit"]').attr('type', 'hidden');
											form.on('submit', function(e) {
												e.preventDefault();
												e.stopPropagation();

												WFAD.ajax(action, form.serialize(), function(res) {
													installUninstallResponseHandler(action, res);
												});
											});
											modal.find('#wf-waf-modal-continue').on('click', function(e) {
												e.preventDefault();
												e.stopPropagation();

												form.trigger('submit');
											});
											$.wfcolorbox.resize();
										}
										else if (res.credentialsFailed || res.installationFailed || res.uninstallationFailed) {
											var replacement = $(res.html);
											modal.replaceWith(replacement);
											modal = replacement;
											modal.find('#wf-waf-modal-continue').on('click', function(e) {
												e.preventDefault();
												e.stopPropagation();

												WFAD.colorboxClose();
											});
											$.wfcolorbox.resize();

											var payload = {serverConfiguration: res.serverConfiguration, iniModified: 1};
											if (res.credentials) {
												payload['credentials'] = res.credentials;
												payload['credentialsSignature'] = res.credentialsSignature;
											}
											
											$('.wf-waf-uninstall-try-again').on('click', function(e) {
												e.preventDefault();
												e.stopPropagation();
												
												$(this).text('Retrying');
												payload['retryAttempted'] = 1;

												WFAD.ajax(action, payload, function(res) {
													installUninstallResponseHandler(action, res);
												});
											});
										}
										else if (res.uninstallationWaiting) {
											var replacement = $(res.html);
											modal.replaceWith(replacement);
											modal = replacement;
											modal.find('#wf-waf-modal-continue').on('click', function(e) {
												e.preventDefault();
												e.stopPropagation();

												WFAD.colorboxClose();
											}).addClass('wf-disabled');

											var timeout = res.timeout; //In seconds
											setTimeout(function() {
												modal.find('#wf-waf-modal-continue').removeClass('wf-disabled');
												var payload = {serverConfiguration: res.serverConfiguration, iniModified: 1};
												if (res.credentials) {
													payload['credentials'] = res.credentials;
													payload['credentialsSignature'] = res.credentialsSignature;
												}
												WFAD.ajax(action, payload, function(res) {
													installUninstallResponseHandler(action, res);
												});
											}, (timeout + 10) * 1000);
											$.wfcolorbox.resize();
										}
										else if (res.ok) {
											var replacement = $(res.html);
											modal.replaceWith(replacement);
											modal = replacement;
											modal.find('#wf-waf-modal-continue').on('click', function(e) {
												e.preventDefault();
												e.stopPropagation();

												<?php if (array_key_exists('wf_deactivate', $_GET)): ?>
													window.location.href = <?php echo json_encode(wfUtils::wpAdminURL('plugins.php?wf_deactivate=true')); ?>;
												<?php else: ?>
													window.location.reload(true);
												<?php endif ?>
											});
											$.wfcolorbox.resize();
										}
										else {
											WFAD.colorboxModal((WFAD.isSmallScreen ? '300px' : '400px'), <?php echo json_encode(__('Error During Setup', 'wordfence')) ?> , res.errorMsg);
										}
									};

									var installUninstallHandler = function(html) {
										WFAD.colorboxHTML('800px', html, {overlayClose: false, closeButton: false, className: 'wf-modal', onComplete: function() {
											$('#wf-waf-server-config').data('backups', []);
											$('.wf-waf-backup-download').on('click', function(e) {
												var backupIndex = parseInt($(this).data('backupIndex'));
												var backupsAvailable = $(this).closest('.wf-waf-backups').data('backups');
												var backupsDownloaded = $('#wf-waf-server-config').data('backups');
												var found = false;
												for (var i = 0; i < backupsDownloaded.length; i++) {
													if (backupsDownloaded[i] == backupsAvailable[backupIndex]) {
														found = true;
														break;
													}
												}

												if (!found) {
													backupsDownloaded.push(backupsAvailable[backupIndex]);
													$('#wf-waf-server-config').data('backups', backupsDownloaded);
													validateContinue();
												}
											});

											$('#wf-waf-server-config').wfselect2({
												minimumResultsForSearch: -1,
												width: WFAD.isSmallScreen ? '300px' : '500px'
											});

											$('#wf-waf-include-prepend > li').each(function(index, element) {
												$(element).on('click', function(e) {
													e.preventDefault();
													e.stopPropagation();

													var control = $(this).closest('.wf-switch');
													var value = $(this).data('optionValue');

													control.find('li').each(function() {
														$(this).toggleClass('wf-active', value == $(this).data('optionValue'));
													});
												});
											});
											
											var nginxNotice = $('.wf-nginx-waf-config');
											var manualNotice = $('.wf-manual-waf-config');
											$('#wf-waf-server-config').on('change', function() {
												var el = $(this);
												if (manualNotice.length) {
													if (el.val() == 'manual') {
														manualNotice.fadeIn(400, function () {
															$.wfcolorbox.resize();
														});
													}
													else {
														manualNotice.fadeOut(400, function () {
															$.wfcolorbox.resize();
														});
													}
												}
												
												var identifier = '.wf-waf-backups-' + el.val().replace(/[^a-z0-9\-]/i, '');
												$('.wf-waf-backups').hide();
												$(identifier).show();
												if ($(identifier).find('.wf-waf-backup-file-list').children().length > 0) {
													$('.wf-waf-download-instructions').show();
												}
												else {
													$('.wf-waf-download-instructions').hide();
												}

												if (nginxNotice.length) { //Install only
													if (el.val() == 'nginx') {
														nginxNotice.fadeIn(400, function () {
															$.wfcolorbox.resize();
														});
													}
													else {
														nginxNotice.fadeOut(400, function () {
															$.wfcolorbox.resize();
														});
													}

													validateContinue();
													return;
												}

												$.wfcolorbox.resize();
												validateContinue();
											}).triggerHandler('change');

											$('#wf-waf-install-continue').on('click', function(e) {
												e.preventDefault();
												e.stopPropagation();

												var serverConfiguration = $('#wf-waf-server-config').val();
												var currentAutoPrepend = $('#wf-waf-include-prepend .wf-active').data('optionValue');

												WFAD.ajax('wordfence_installAutoPrepend', {serverConfiguration: serverConfiguration, currentAutoPrepend: currentAutoPrepend}, function(res) {
													installUninstallResponseHandler('wordfence_installAutoPrepend', res);
												});
											});

											$('#wf-waf-uninstall-continue').on('click', function(e) {
												e.preventDefault();
												e.stopPropagation();

												if ($('.wf-manual-waf-config').is(':visible')) {
													WFAD.colorboxClose();
													return;
												}

												var serverConfiguration = $('#wf-waf-server-config').val();

												WFAD.ajax('wordfence_uninstallAutoPrepend', {serverConfiguration: serverConfiguration}, function(res) {
													installUninstallResponseHandler('wordfence_uninstallAutoPrepend', res);
												});
											});
										}});
									};

									$('#wf-waf-install').on('click', function(e) {
										e.preventDefault();
										e.stopPropagation();

										var installer = $('#wafTmpl_install').tmpl();
										var installerHTML = $("<div />").append(installer).html();
										installUninstallHandler(installerHTML);
									});

									$('#wf-waf-uninstall').on('click', function(e) {
										e.preventDefault();
										e.stopPropagation();

										var uninstaller = $('#wafTmpl_uninstall').tmpl();
										var uninstallerHTML = $("<div />").append(uninstaller).html();
										installUninstallHandler(uninstallerHTML);
									});

									if (window.location.hash) {
										var hashes = WFAD.parseHashes();
										for (var i = 0; i < hashes.length; i++) {
											if (hashes[i] == 'configureAutoPrepend') {
												$('#wf-waf-install').trigger('click');
												history.replaceState('', document.title, window.location.pathname + window.location.search);
											}
											else if (hashes[i] == 'removeAutoPrepend') {
												$('#wf-waf-uninstall').trigger('click');
												history.replaceState('', document.title, window.location.pathname + window.location.search);
											}
										}
									}

									$(window).on('hashchange', function () {
										var hashes = WFAD.parseHashes();
										for (var i = 0; i < hashes.length; i++) {
											if (hashes[i] == 'configureAutoPrepend') {
												$('#wf-waf-install').trigger('click');
												history.replaceState('', document.title, window.location.pathname + window.location.search);
											}
											else if (hashes[i] == 'removeAutoPrepend') {
												$('#wf-waf-uninstall').trigger('click');
												history.replaceState('', document.title, window.location.pathname + window.location.search);
											}
										}
									});
								});
							})(jQuery);
						</script>
					</li>
					<li id="wf-option-disableWAFBlacklistBlocking" class="wf-flex-vertical wf-flex-align-left">
						<h3><?php esc_html_e('Real-Time IP Blocklist', 'wordfence'); ?></h3>
						<?php if ($firewall->ruleMode() == wfFirewall::RULE_MODE_COMMUNITY): ?>
							<p class="wf-no-top"><strong><?php esc_html_e('Premium Feature:', 'wordfence'); ?></strong> <?php esc_html_e('This feature blocks all traffic from IPs with a high volume of recent malicious activity using Wordfence\'s real-time blocklist.', 'wordfence'); ?></p>
							<p><a class="wf-btn wf-btn-primary wf-btn-callout-subtle" href="https://www.wordfence.com/gnl1blacklistUpgrade/wordfence-signup/#premium-order-form" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Upgrade to Premium', 'wordfence'); ?></a>&nbsp;&nbsp;<a class="wf-btn wf-btn-callout-subtle wf-btn-default" href="https://www.wordfence.com/gnl1blacklistLearn/wordfence-signup/" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Learn More', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></p>
						<?php elseif ($firewall->isSubDirectoryInstallation()): ?>
							<p class="wf-no-top"><?php echo wp_kses(sprintf(__('You are currently running the Wordfence Web Application Firewall from another WordPress installation. Please <a href="%s">click here</a> to configure the Firewall to run correctly on this site.', 'wordfence'), esc_attr(network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options#configureAutoPrepend'))), array('a'=>array('href'=>array()))); ?></p>
						<?php else: ?>
							<p class="wf-no-top"><?php esc_html_e('This feature blocks all traffic from IPs with a high volume of recent malicious activity using Wordfence\'s real-time blocklist.', 'wordfence'); ?></p>
							<div class="wf-option wf-option-switch wf-padding-add-bottom" data-option-name="disableWAFBlacklistBlocking" data-original-value="<?php try { echo $config->getConfig('disableWAFBlacklistBlocking') ? '1': '0'; } catch (Exception $e) { echo 0; } ?>">
								<ul class="wf-switch" role="radiogroup">
									<?php
									$states = array(
										array('value' => '1', 'label' => __('Disabled', 'wordfence')),
										array('value' => '0', 'label' => __('Enabled', 'wordfence')),
									);
									
									foreach ($states as $s):
										$disableBlacklist = false;
										try {
											$disableBlacklist = !!$config->getConfig('disableWAFBlacklistBlocking');
										}
										catch (Exception $e) { }
										?>
										<li<?php if ($s['value'] == ($disableBlacklist ? '1': '0')) { echo ' class="wf-active"'; } ?> data-option-value="<?php echo esc_attr($s['value']); ?>" role="radio" aria-checked="<?php echo (($s['value'] == ($disableBlacklist ? '1': '0')) ? 'true' : 'false'); ?>" tabindex="0"><?php echo esc_html($s['label']); ?></li>
									<?php endforeach; ?>
								</ul>
							</div>
						<?php endif; ?>
					</li>
				</ul>
			</div>
		</div>
	</div>
</div> <!-- end basic firewall options -->
<?php
if ($firewall->protectionMode() == wfFirewall::PROTECTION_MODE_BASIC || ($firewall->protectionMode() == wfFirewall::PROTECTION_MODE_EXTENDED && $firewall->isSubDirectoryInstallation())) {
	echo wfView::create('waf/waf-install', array(
	))->render();
}
else {
	echo wfView::create('waf/waf-uninstall', array(
	))->render();
}
?>views/waf/waf-uninstall-success.php000064400000002262150755146450013437 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }

/**
 * Presents the success message for WAF auto prepend uninstallation.
 *
 * Expects $active and $subdirectory.
 *
 * @var bool $active True if the WAF's auto_prepend_file is active and not because of a subdirectory install.
 * @var bool $subdirectory True if the WAF's auto_prepend_file is active because of a subdirectory install.
 */

if (!$active && !$subdirectory):
?>
	<p><?php esc_html_e('Uninstallation was successful!', 'wordfence'); ?></p>
<?php elseif (!$active): ?>
	<p><?php esc_html_e('Uninstallation from this site was successful! The Wordfence Firewall is still active because it is installed in another WordPress installation.', 'wordfence'); ?></p>
<?php else: ?>
	<p><?php esc_html_e('The changes have not yet taken effect. If you are using LiteSpeed or IIS as your web server or CGI/FastCGI interface, you may need to wait a few minutes for the changes to take effect since the configuration files are sometimes cached. You also may need to select a different server configuration in order to complete this step, but wait for a few minutes before trying. You can try refreshing this page.', 'wordfence'); ?></p>
<?php endif; ?>
views/waf/options-group-whitelisted.php000064400000027521150755146450014362 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents the Whitelisted URLs group.
 *
 * Expects $firewall, $waf, and $stateKey.
 *
 * @var wfFirewall $firewall
 * @var wfWAF $waf
 * @var string $stateKey The key under which the collapse state is stored.
 * @var bool $collapseable If defined, specifies whether or not this grouping can be collapsed. Defaults to true.
 */

$config = $waf->getStorageEngine();

if (!isset($collapseable)) {
	$collapseable = true;
}
?>
<div class="wf-row">
	<div class="wf-col-xs-12">
		<div class="wf-block<?php if (!$collapseable) { echo ' wf-always-active'; } else { echo (wfPersistenceController::shared()->isActive($stateKey) ? ' wf-active' : ''); } ?>" data-persistence-key="<?php echo esc_attr($stateKey); ?>">
			<div class="wf-block-header">
				<div class="wf-block-header-content">
					<div class="wf-block-title">
						<strong><?php esc_html_e('Allowlisted URLs', 'wordfence'); ?></strong>
					</div>
					<?php if ($collapseable): ?><div class="wf-block-header-action"><div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive($stateKey) ? 'true' : 'false'); ?>" tabindex="0"></div></div><?php endif; ?>
				</div>
			</div>
			<div class="wf-block-content">
				<ul class="wf-block-list">
					<?php if ($firewall->isSubDirectoryInstallation()): ?>
						<li>
							<p><?php echo wp_kses(sprintf(__('You are currently running the Wordfence Web Application Firewall from another WordPress installation. Please <a href="%s">click here</a> to configure the Firewall to run correctly on this site.', 'wordfence'), esc_attr(network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options#configureAutoPrepend'))), array('a'=>array('href'=>array()))); ?></p>
						</li>
					<?php else: ?>
						<li>
							<?php
							echo wfView::create('waf/option-whitelist', array(
							))->render();
							?>
						</li>
						<li>
							<?php
							echo wfView::create('options/option-toggled-multiple', array(
								'options' => array(
									array(
										'name' => 'ajaxWatcherDisabled_front',
										'enabledValue' => 0,
										'disabledValue' => 1,
										'value' => wfConfig::get('ajaxWatcherDisabled_front') ? 1 : 0,
										'title' => __('Front-end Website', 'wordfence'),
									),
									array(
										'name' => 'ajaxWatcherDisabled_admin',
										'enabledValue' => 0,
										'disabledValue' => 1,
										'value' => wfConfig::get('ajaxWatcherDisabled_admin') ? 1 : 0,
										'title' => __('Admin Panel', 'wordfence'),
									),
								),
								'noSpacer' => true,
								'htmlTitle' => '<strong>' . esc_html__('Monitor background requests from an administrator\'s web browser for false positives', 'wordfence') . '</strong>',
								'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_OPTION_MONITOR_AJAX),
							))->render();
							?>
						</li>
					<?php endif; ?>
				</ul>
			</div>
		</div>
	</div>
</div> <!-- end whitelisted urls -->
<script type="text/x-jquery-template" id="waf-whitelisted-urls-tmpl">
	<div class="whitelist-table-container">
		<table class="wf-striped-table whitelist-table">
			<thead>
			<tr>
				<th style="width: 2%;text-align: center"><div class="wf-whitelist-bulk-select wf-option-checkbox" role="checkbox" aria-checked="false" tabindex="0" aria-label="<?php esc_attr_e('Select/deselect all', 'wordfence'); ?>"><i class="wf-ion-ios-checkmark-empty" aria-hidden="true"></i></div></th>
				<th style="width: 5%;"><?php esc_html_e('Enabled', 'wordfence'); ?></th>
				<th><?php esc_html_e('URL', 'wordfence'); ?></th>
				<th><?php esc_html_e('Param', 'wordfence'); ?></th>
				<th><?php esc_html_e('Created', 'wordfence'); ?></th>
				<th><?php esc_html_e('Source', 'wordfence'); ?></th>
				<th><?php esc_html_e('User', 'wordfence'); ?></th>
				<th><?php esc_html_e('IP', 'wordfence'); ?></th>
			</tr>
			</thead>
			{{if whitelistedURLParams.length > 5}}
			<tfoot>
			<tr>
				<th style="width: 2%;text-align: center"><div class="wf-whitelist-bulk-select wf-option-checkbox" role="checkbox" aria-checked="false" tabindex="0" aria-label="<?php esc_attr_e('Select/deselect all', 'wordfence'); ?>"><i class="wf-ion-ios-checkmark-empty" aria-hidden="true"></i></div></th>
				<th style="width: 5%;"><?php esc_html_e('Enabled', 'wordfence'); ?></th>
				<th><?php esc_html_e('URL', 'wordfence'); ?></th>
				<th><?php esc_html_e('Param', 'wordfence'); ?></th>
				<th><?php esc_html_e('Created', 'wordfence'); ?></th>
				<th><?php esc_html_e('Source', 'wordfence'); ?></th>
				<th><?php esc_html_e('User', 'wordfence'); ?></th>
				<th><?php esc_html_e('IP', 'wordfence'); ?></th>
			</tr>
			{{/if}}
			</tfoot>
			<tbody>
			{{each(idx, whitelistedURLParam) whitelistedURLParams}}
			<tr data-index="${idx}" data-adding="{{if (whitelistedURLParam.adding)}}1{{else}}0{{/if}}" data-key="${whitelistedURLParam.path}|${whitelistedURLParam.paramKey}">
				<td style="text-align: center;"><div class="wf-whitelist-table-bulk-checkbox wf-option-checkbox" role="checkbox" aria-checked="false" tabindex="0" aria-label="<?php esc_attr_e('Select row ${idx}', 'wordfence'); ?>"><i class="wf-ion-ios-checkmark-empty" aria-hidden="true"></i></div></td>
				<td style="text-align: center;"><div class="wf-whitelist-item-enabled wf-option-checkbox{{if (!whitelistedURLParam.data.disabled)}} wf-checked{{/if}}" data-original-value="{{if (!whitelistedURLParam.data.disabled)}}1{{else}}0{{/if}}" role="checkbox" aria-checked="{{if (!whitelistedURLParam.data.disabled)}}true{{else}}false{{/if}}" tabindex="0" aria-label="<?php esc_attr_e('Toggle row ${idx}', 'wordfence'); ?>"><i class="wf-ion-ios-checkmark-empty" aria-hidden="true"></i></div></td>
				<td data-column="url">
					<input name="replaceWhitelistedPath" type="hidden" value="${whitelistedURLParam.path}">
					<span class="whitelist-display">${WFAD.htmlEscape(WFAD.base64_decode(whitelistedURLParam.path))}</span>
					<input name="whitelistedPath" class="whitelist-edit whitelist-path" type="text"
						   value="${WFAD.htmlEscape(WFAD.base64_decode(whitelistedURLParam.path))}">
				</td>
				<td data-column="param">
					<input name="replaceWhitelistedParam" type="hidden" value="${whitelistedURLParam.paramKey}">
					<span class="whitelist-display">${WFAD.htmlEscape(WFAD.base64_decode(whitelistedURLParam.paramKey))}</span>
					<input name="whitelistedParam" class="whitelist-edit whitelist-param-key"
						   type="text" value="${WFAD.htmlEscape(WFAD.base64_decode(whitelistedURLParam.paramKey))}">
				</td>
				<td>
					{{if (whitelistedURLParam.data.timestamp)}}
					${WFAD.dateFormat((new Date(whitelistedURLParam.data.timestamp * 1000)))}
					{{else}}
					-
					{{/if}}
				</td>
				<td data-column="source">
					{{if (whitelistedURLParam.data.description)}}
					${whitelistedURLParam.data.description}
					{{else}}
					-
					{{/if}}
				</td>
				<td data-column="user">
					{{if (whitelistedURLParam.data.userID)}}
					{{if (whitelistedURLParam.data.username)}}
					${whitelistedURLParam.data.username}
					{{else}}
					${whitelistedURLParam.data.userID}
					{{/if}}
					{{else}}
					-
					{{/if}}
				</td>
				<td data-column="ip">
					{{if (whitelistedURLParam.data.ip)}}
					${whitelistedURLParam.data.ip}
					{{else}}
					-
					{{/if}}
				</td>
			</tr>
			{{/each}}
			{{if (whitelistedURLParams.length == 0)}}
			<tr>
				<td colspan="8"><?php esc_html_e('No allowlisted URLs currently set.', 'wordfence'); ?></td>
			</tr>
			{{/if}}
			</tbody>
		</table>
	</div>
</script>
<script type="application/javascript">
	(function($) {
		function whitelistCheckAllVisible() {
			$('.wf-whitelist-bulk-select.wf-option-checkbox').toggleClass('wf-checked', true).attr('aria-checked', 'true');
			$('.wf-whitelist-table-bulk-checkbox.wf-option-checkbox').each(function() {
				$(this).toggleClass('wf-checked', $(this).closest('tr').is(':visible')).attr('aria-checked', $(this).closest('tr').is(':visible') ? 'true' : 'false');
			});
		}

		function whitelistUncheckAll() {
			$('.wf-whitelist-bulk-select.wf-option-checkbox').toggleClass('wf-checked', false).attr('aria-checked', 'false');
			$('.wf-whitelist-table-bulk-checkbox.wf-option-checkbox').toggleClass('wf-checked', false).attr('aria-checked', 'false');
		}

		$(window).on('wordfenceWAFInstallWhitelistEventHandlers', function() {
			//Enabled/Disabled
			$('.wf-whitelist-item-enabled.wf-option-checkbox').each(function() {
				$(this).on('keydown', function(e) {
					if (e.keyCode == 32) {
						e.preventDefault();
						e.stopPropagation();

						$(this).trigger('click');
					}
				});
				
				$(this).on('click', function(e) {
					e.preventDefault();
					e.stopPropagation();

					var row = $(this).closest('tr');
					var key = row.data('key');
					var value = $(this).hasClass('wf-checked') ? 1 : 0;
					if (value) {
						$(this).removeClass('wf-checked').attr('aria-checked', 'false');
						value = 0;
					}
					else {
						$(this).addClass('wf-checked').attr('aria-checked', 'true');
						value = 1;
					}

					WFAD.wafWhitelistedChangeEnabled(key, value);
					WFAD.updatePendingChanges();
				});
			});

			//Header/Footer Bulk Action
			$('.wf-whitelist-bulk-select.wf-option-checkbox').each(function() {
				$(this).on('keydown', function(e) {
					if (e.keyCode == 32) {
						e.preventDefault();
						e.stopPropagation();

						$(this).trigger('click');
					}
				});
				
				$(this).on('click', function(e) {
					e.preventDefault();
					e.stopPropagation();

					if ($(this).hasClass('wf-checked')) {
						$(this).removeClass('wf-checked').attr('aria-checked', 'false');
						whitelistUncheckAll();
					}
					else {
						$(this).addClass('wf-checked');
						whitelistCheckAllVisible().attr('aria-checked', 'true');
					}
				});
			});

			//Row Bulk Action
			$('.wf-whitelist-table-bulk-checkbox.wf-option-checkbox').each(function() {
				$(this).on('keydown', function(e) {
					if (e.keyCode == 32) {
						e.preventDefault();
						e.stopPropagation();

						$(this).trigger('click');
					}
				});
				
				$(this).on('click', function(e) {
					e.preventDefault();
					e.stopPropagation();

					var row = $(this).closest('tr');
					var key = row.data('key');
					var value = $(this).hasClass('wf-checked') ? 1 : 0;
					if (value) {
						$(this).removeClass('wf-checked').attr('aria-checked', 'false');
					}
					else {
						$(this).addClass('wf-checked').attr('aria-checked', 'true');
					}

					var totalCount = $('.wf-whitelist-table-bulk-checkbox.wf-option-checkbox:visible').length;
					var checkedCount = $('.wf-whitelist-table-bulk-checkbox.wf-option-checkbox.wf-checked:visible').length;
					if (totalCount == 0 || (checkedCount != totalCount)) {
						$('.wf-whitelist-bulk-select.wf-option-checkbox').removeClass('wf-checked').attr('aria-checked', 'false');
					}
					else {
						$('.wf-whitelist-bulk-select.wf-option-checkbox').addClass('wf-checked').attr('aria-checked', 'true');
					}
				});
			});

			$(window).trigger('wordfenceWAFApplyWhitelistFilter');
		});

		$(window).on('wordfenceWAFApplyWhitelistFilter', function() {
			if (WFAD.wafData.whitelistedURLParams.length == 0) {
				return;
			}

			var filterColumn = $('#whitelist-table-controls select').val();
			var filterValue = $('input[name="filterValue"]').val();
			if (typeof filterValue != 'string' || filterValue.length == 0) {
				$('#waf-whitelisted-urls-wrapper .whitelist-table > tbody > tr[data-index]').show();
			}
			else {
				$('#waf-whitelisted-urls-wrapper .whitelist-table > tbody > tr[data-index]').each(function() {
					var text = $(this).find('td[data-column="' + filterColumn + '"]').text();
					if (text.indexOf(filterValue) > -1) {
						$(this).show();
					}
					else {
						$(this).hide();
					}
				});
			}
		});

		$(window).on('wordfenceWAFConfigPageRender', function() {
			//Add event handler to whitelist checkboxes
			$(window).trigger('wordfenceWAFInstallWhitelistEventHandlers');
		});
	})(jQuery);
</script>views/waf/options-group-brute-force.php000064400000031153150755146450014246 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents the Brute Force Protection group.
 *
 * Expects $firewall, $waf, and $stateKey.
 *
 * @var wfFirewall $firewall
 * @var wfWAF $waf
 * @var string $stateKey The key under which the collapse state is stored.
 * @var bool $collapseable If defined, specifies whether or not this grouping can be collapsed. Defaults to true.
 */

$config = $waf->getStorageEngine();

if (!isset($collapseable)) {
	$collapseable = true;
}
?>
<div class="wf-row">
	<div class="wf-col-xs-12">
		<div class="wf-block<?php if (!$collapseable) { echo ' wf-always-active'; } else { echo (wfPersistenceController::shared()->isActive($stateKey) ? ' wf-active' : ''); } ?>" data-persistence-key="<?php echo esc_attr($stateKey); ?>">
			<div class="wf-block-header">
				<div class="wf-block-header-content">
					<div class="wf-block-title">
						<strong><?php esc_html_e('Brute Force Protection', 'wordfence'); ?></strong>
					</div>
					<?php if ($collapseable): ?><div class="wf-block-header-action"><div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive($stateKey) ? 'true' : 'false'); ?>" tabindex="0"></div></div><?php endif; ?>
				</div>
			</div>
			<div class="wf-block-content">
				<ul class="wf-block-list">
					<li>
						<?php
						echo wfView::create('options/option-switch', array(
							'optionName' => 'loginSecurityEnabled',
							'value' => wfConfig::get('loginSecurityEnabled') ? '1': '0',
							'titleHTML' => '<strong>' . esc_html__('Enable brute force protection', 'wordfence') . '</strong>',
							'subtitle' => __('This option enables all "Brute Force Protection" options, including strong password enforcement and invalid login throttling. You can modify individual options below.', 'wordfence'),
							'states' => array(
								array('value' => '0', 'label' => __('Off', 'wordfence')),
								array('value' => '1', 'label' => __('On', 'wordfence')),
							),
							'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_OPTION_ENABLE_LOGIN_SECURITY),
							'noSpacer' => true,
							'alignment' => 'wf-right',
						))->render();
						?>
					</li>
					<li>
						<?php
						$breakpoints = array(2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30, 40, 50, 100, 200, 500);
						$options = array();
						foreach ($breakpoints as $b) {
							$options[] = array('value' => $b, 'label' => $b);
						}
						echo wfView::create('options/option-select', array(
							'selectOptionName' => 'loginSec_maxFailures',
							'selectOptions' => $options,
							'selectValue' => wfConfig::get('loginSec_maxFailures'),
							'title' => __('Lock out after how many login failures', 'wordfence'),
							'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_OPTION_LOCK_OUT_FAILURE_COUNT),
						))->render();
						?>
					</li>
					<li>
						<?php
						$breakpoints = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30, 40, 50, 100, 200, 500);
						$options = array();
						foreach ($breakpoints as $b) {
							$options[] = array('value' => $b, 'label' => $b);
						}
						echo wfView::create('options/option-select', array(
							'selectOptionName' => 'loginSec_maxForgotPasswd',
							'selectOptions' => $options,
							'selectValue' => wfConfig::get('loginSec_maxForgotPasswd'),
							'title' => __('Lock out after how many forgot password attempts', 'wordfence'),
							'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_OPTION_LOCK_OUT_FORGOT_PASSWORD_COUNT),
						))->render();
						?>
					</li>
					<li>
						<?php
						$breakpoints = array(5, 10, 30, 60, 120, 240, 360, 720, 1440);
						$options = array();
						foreach ($breakpoints as $b) {
							$options[] = array('value' => $b, 'label' => wfUtils::makeDuration($b * 60));
						}
						echo wfView::create('options/option-select', array(
							'selectOptionName' => 'loginSec_countFailMins',
							'selectOptions' => $options,
							'selectValue' => wfConfig::getInt('loginSec_countFailMins'),
							'title' => __('Count failures over what time period', 'wordfence'),
							'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_OPTION_COUNT_TIME_PERIOD),
						))->render();
						?>
					</li>
					<li>
						<?php
						$breakpoints = array(5, 10, 30, 60, 120, 240, 360, 720, 1440, 2880, 7200, 14400, 28800, 43200, 86400);
						$options = array();
						foreach ($breakpoints as $b) {
							$options[] = array('value' => $b, 'label' => wfUtils::makeDuration($b * 60));
						}
						echo wfView::create('options/option-select', array(
							'selectOptionName' => 'loginSec_lockoutMins',
							'selectOptions' => $options,
							'selectValue' => wfConfig::getInt('loginSec_lockoutMins'),
							'title' => __('Amount of time a user is locked out', 'wordfence'),
							'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_OPTION_LOCKOUT_DURATION),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-toggled', array(
							'optionName' => 'loginSec_lockInvalidUsers',
							'enabledValue' => 1,
							'disabledValue' => 0,
							'value' => wfConfig::get('loginSec_lockInvalidUsers') ? 1 : 0,
							'title' => __('Immediately lock out invalid usernames', 'wordfence'),
							'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_OPTION_IMMEDIATELY_LOCK_OUT_INVALID_USERS),
						))->render();
						?>
					</li>
					<li>
						<?php
						$blacklist = wfConfig::get('loginSec_userBlacklist', '');
						if (empty($blacklist)) {
							$users = array();
						}
						else {
							$users = explode("\n", wfUtils::cleanupOneEntryPerLine($blacklist));
						}
						
						echo wfView::create('options/option-token', array(
							'tokenOptionName' => 'loginSec_userBlacklist',
							'tokenValue' => $users,
							'title' => __('Immediately block the IP of users who try to sign in as these usernames', 'wordfence'),
							'subtitle' => __('Hit enter to add a username', 'wordfence'),
							'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_OPTION_IMMEDIATELY_BLOCK_USERS),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-toggled-select', array(
							'toggleOptionName' => 'loginSec_breachPasswds_enabled',
							'enabledToggleValue' => 1,
							'disabledToggleValue' => 0,
							'toggleValue' => !!wfConfig::get('loginSec_breachPasswds_enabled') ? 1 : 0,
							'selectOptionName' => 'loginSec_breachPasswds',
							'selectOptions' => array(array('value' => 'admins', 'label' => __('For admins only', 'wordfence')), array('value' => 'pubs', 'label' => __('For all users with "publish posts" capability', 'wordfence'))),
							'selectValue' => wfConfig::get('loginSec_breachPasswds'),
							'title' => __('Prevent the use of passwords leaked in data breaches', 'wordfence'),
							'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_OPTION_PREVENT_BREACH_PASSWORDS),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-label', array(
							'titleHTML' => '<strong>' . esc_html__('Additional Options', 'wordfence') . '</strong>',
							'noSpacer' => true,
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-toggled-select', array(
							'toggleOptionName' => 'loginSec_strongPasswds_enabled',
							'enabledToggleValue' => 1,
							'disabledToggleValue' => 0,
							'toggleValue' => !!wfConfig::get('loginSec_strongPasswds_enabled') ? 1 : 0,
							'selectOptionName' => 'loginSec_strongPasswds',
							'selectOptions' => array(array('value' => 'pubs', 'label' => __('Force admins and publishers to use strong passwords (recommended)', 'wordfence')), array('value' => 'all', 'label' => __('Force all members to use strong passwords', 'wordfence'))),
							'selectValue' => wfConfig::get('loginSec_strongPasswds'),
							'title' => __('Enforce strong passwords', 'wordfence'),
							'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_OPTION_ENFORCE_STRONG_PASSWORDS),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-toggled', array(
							'optionName' => 'loginSec_maskLoginErrors',
							'enabledValue' => 1,
							'disabledValue' => 0,
							'value' => wfConfig::get('loginSec_maskLoginErrors') ? 1 : 0,
							'title' => __('Don\'t let WordPress reveal valid users in login errors', 'wordfence'),
							'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_OPTION_MASK_LOGIN_ERRORS),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-toggled', array(
							'optionName' => 'loginSec_blockAdminReg',
							'enabledValue' => 1,
							'disabledValue' => 0,
							'value' => wfConfig::get('loginSec_blockAdminReg') ? 1 : 0,
							'title' => __('Prevent users registering \'admin\' username if it doesn\'t exist', 'wordfence'),
							'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_OPTION_PREVENT_ADMIN_REGISTRATION),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-toggled', array(
							'optionName' => 'loginSec_disableAuthorScan',
							'enabledValue' => 1,
							'disabledValue' => 0,
							'value' => wfConfig::get('loginSec_disableAuthorScan') ? 1 : 0,
							'title' => __('Prevent discovery of usernames through \'/?author=N\' scans, the oEmbed API, the WordPress REST API, and WordPress XML Sitemaps', 'wordfence'),
							'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_OPTION_PREVENT_AUTHOR_SCAN),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-toggled', array(
							'optionName' => 'loginSec_disableApplicationPasswords',
							'enabledValue' => 1,
							'disabledValue' => 0,
							'value' => wfConfig::get('loginSec_disableApplicationPasswords') ? 1 : 0,
							'title' => __('Disable WordPress application passwords', 'wordfence'),
							'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_OPTION_DISABLE_APPLICATION_PASSWORDS),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-toggled', array(
							'optionName' => 'other_blockBadPOST',
							'enabledValue' => 1,
							'disabledValue' => 0,
							'value' => wfConfig::get('other_blockBadPOST') ? 1 : 0,
							'title' => __('Block IPs who send POST requests with blank User-Agent and Referer', 'wordfence'),
							'subtitleHTML' => esc_html__('If you use external services that may send POST requests without these headers, do not use this option, as they will be blocked.', 'wordfence'),
							'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_OPTION_BLOCK_BAD_POST),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-textarea', array(
							'textOptionName' => 'blockCustomText',
							'textValue' => wfConfig::get('blockCustomText'),
							'title' => __('Custom text shown on block pages', 'wordfence'),
							'alignTitle' => 'top',
							'subtitleHTML' => esc_html__('HTML tags will be stripped prior to output and line breaks will be converted into the appropriate tags.', 'wordfence'),
							'subtitlePosition' => 'value',
							'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_OPTION_CUSTOM_BLOCK_TEXT),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-toggled', array(
							'optionName' => 'other_pwStrengthOnUpdate',
							'enabledValue' => 1,
							'disabledValue' => 0,
							'value' => wfConfig::get('other_pwStrengthOnUpdate') ? 1 : 0,
							'title' => __('Check password strength on profile update', 'wordfence'),
							'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_OPTION_CHECK_PASSWORD),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-toggled', array(
							'optionName' => 'other_WFNet',
							'enabledValue' => 1,
							'disabledValue' => 0,
							'value' => wfConfig::get('other_WFNet') ? 1 : 0,
							'title' => __('Participate in the Real-Time Wordfence Security Network', 'wordfence'),
							'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_OPTION_PARTICIPATE_WFSN),
						))->render();
						?>
					</li>
				</ul>
			</div>
		</div>
	</div>
</div> <!-- end brute force protection -->views/waf/firewall-status.php000064400000013355150755146450012340 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents the firewall status.
 *
 * Expects $firewall and $dashboard to be defined.
 *
 * @var wfFirewall $firewall The firewall state.
 * @var wfDashboard $dashboard Dashboard statistics.
 */
?>
<ul class="wf-block-list wf-block-list-horizontal">
<?php if ($firewall->firewallMode() == 'enabled' && $firewall->ruleMode() == wfFirewall::RULE_MODE_PREMIUM): ?>
	<li>
		<div class="wf-block-labeled-value wf-waf-status wf-waf-status-full-enabled">
			<div class="wf-block-labeled-value-label"><?php
				switch (wfLicense::current()->getType()) {
				case wfLicense::TYPE_RESPONSE:
					esc_html_e('Wordfence Firewall &amp; Response License Enabled', 'wordfence');
					break;
				case wfLicense::TYPE_CARE:
					esc_html_e('Wordfence Firewall &amp; Care License Enabled', 'wordfence');
					break;
				default:
					esc_html_e('Wordfence Firewall &amp; Premium Enabled', 'wordfence');
					break;
				}
			?></div>
		</div>
	</li>
<?php else: ?>
	<li>
	<?php if ($firewall->firewallMode() == wfFirewall::FIREWALL_MODE_DISABLED): ?>
		<div class="wf-waf-status-disabled">
			<p><h3><?php esc_html_e('Wordfence Firewall Deactivated', 'wordfence'); ?></h3></p>
			<p><?php esc_html_e('The Wordfence Web Application Firewall is a PHP-based, application-level firewall that filters out malicious requests to your site. It is designed to run at the beginning of WordPress\' initialization to filter any attacks before plugins or themes can run any potentially vulnerable code.', 'wordfence'); ?></p>
			<p>
				<a class="wf-btn wf-btn-primary wf-btn-callout-subtle" href="#" target="_blank" rel="noopener noreferrer" id="waf-top-enable-firewall" role="button"><?php esc_html_e('Enable Firewall', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>
				<script type="application/javascript">
					(function($) {
						$(function() {
							$('#waf-top-enable-firewall').on('click', function(e) {
								e.preventDefault();
								e.stopPropagation();
	
								WFAD.setOption('wafStatus', 'enabled', function() {
									window.location.reload(true);
								});
							});
						});
					})(jQuery);
				</script>
			</p>
		</div>
	<?php else: ?>
		<?php if ($firewall->firewallMode() == wfFirewall::FIREWALL_MODE_ENABLED): ?>
		<div class="wf-block-labeled-value wf-waf-status wf-waf-status-<?php echo esc_attr($firewall->firewallMode()); ?>">
			<div class="wf-block-labeled-value-value"><i class="wf-fa wf-fa-check" aria-hidden="true"></i></div>
			<div class="wf-block-labeled-value-label"><?php esc_html_e('Wordfence Firewall Activated', 'wordfence'); ?></div>
		</div>
		<?php elseif ($firewall->firewallMode() == wfFirewall::FIREWALL_MODE_LEARNING): ?>
			<div>
				<?php
				$learningMode = $firewall->learningModeStatus();
				if (function_exists('network_admin_url') && is_multisite()) { $optionsURL = network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options'); }
				else { $optionsURL = admin_url('admin.php?page=WordfenceWAF&subpage=waf_options'); }
				?>
				<p><h3><?php echo ($learningMode === true ? esc_html__('Learning Mode Enabled', 'wordfence') : esc_html(sprintf(/* translators: Localized date. */ __('Learning Mode Until %s', 'wordfence'), wfUtils::formatLocalTime(get_option('date_format'), $learningMode)))); ?></h3></p>
				<p><?php echo wp_kses(__('<i class="wf-fa wf-fa-lightbulb-o wf-tip" aria-hidden="true"></i> When you first install the Wordfence Web Application Firewall, it will be in learning mode. This allows Wordfence to learn about your site so that we can understand how to protect it and how to allow normal visitors through the firewall. We recommend you let Wordfence learn for a week before you enable the firewall.', 'wordfence'), array('i'=>array('class'=>array()))); ?></p>
				<p><a class="wf-btn wf-btn-primary wf-btn-callout-subtle" href="<?php echo esc_url($optionsURL); ?>"><?php esc_html_e('Manage Firewall', 'wordfence'); ?></a>&nbsp;&nbsp;<a class="wf-btn wf-btn-callout-subtle wf-btn-default" href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF); ?>" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Learn More', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></p>
			</div>
		<?php endif; ?>
	<?php endif; ?>
	</li>
	<li>
	<?php if ($firewall->ruleMode() == wfFirewall::RULE_MODE_COMMUNITY): ?>
		<div>
			<p><h3><?php esc_html_e('Premium Protection Disabled', 'wordfence'); ?></h3></p>
			<p><?php esc_html_e('As a free Wordfence user, you are currently using the Community version of the Threat Defense Feed. Premium users are protected by additional firewall rules and malware signatures. Upgrade to Premium today to improve your protection.', 'wordfence'); ?></p>
			<p><a class="wf-btn wf-btn-primary wf-btn-callout-subtle" href="https://www.wordfence.com/gnl1wafUpgrade/wordfence-signup/#premium-order-form" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Upgrade to Premium', 'wordfence'); ?></a>&nbsp;&nbsp;<a class="wf-btn wf-btn-callout-subtle wf-btn-default" href="https://www.wordfence.com/gnl1wafLearn/wordfence-signup/" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Learn More', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></p>
		</div>
	<?php else: ?>
		<div class="wf-block-labeled-value wf-protection-status wf-protection-status-<?php echo esc_attr($firewall->ruleMode()); ?>">
			<div class="wf-block-labeled-value-value"><i class="wf-fa wf-fa-check" aria-hidden="true"></i></div>
			<div class="wf-block-labeled-value-label"><?php esc_html_e('Premium Protection Enabled', 'wordfence'); ?></div>
		</div>
	<?php endif; ?>
	</li>
<?php endif; ?>
</ul>views/waf/options-group-advanced-firewall.php000064400000024130150755146450015376 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents the Advanced Firewall Options group.
 *
 * Expects $firewall, $waf, and $stateKey.
 *
 * @var wfFirewall $firewall
 * @var wfWAF $waf
 * @var string $stateKey The key under which the collapse state is stored.
 * @var bool $collapseable If defined, specifies whether or not this grouping can be collapsed. Defaults to true.
 */

$config = $waf->getStorageEngine();

if (!isset($collapseable)) {
	$collapseable = true;
}
?>
<div class="wf-row">
	<div class="wf-col-xs-12">
		<div class="wf-block<?php if (!$collapseable) { echo ' wf-always-active'; } else { echo (wfPersistenceController::shared()->isActive($stateKey) ? ' wf-active' : ''); } ?>" data-persistence-key="<?php echo esc_attr($stateKey); ?>">
			<div class="wf-block-header">
				<div class="wf-block-header-content">
					<div class="wf-block-title">
						<strong><?php esc_html_e('Advanced Firewall Options', 'wordfence'); ?></strong>
					</div>
					<?php if ($collapseable): ?><div class="wf-block-header-action"><div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive($stateKey) ? 'true' : 'false'); ?>" tabindex="0"></div></div><?php endif; ?>
				</div>
			</div>
			<div class="wf-block-content">
				<ul class="wf-block-list">
					<li>
						<?php
						echo wfView::create('options/option-toggled', array(
							'optionName' => 'disableWAFIPBlocking',
							'enabledValue' => 1,
							'disabledValue' => 0,
							'value' => wfConfig::get('disableWAFIPBlocking') ? 1 : 0,
							'title' => __('Delay IP and Country blocking until after WordPress and plugins have loaded (only process firewall rules early)', 'wordfence'),
							'subtitle' => ($firewall->isSubDirectoryInstallation() ? __('You are currently running the WAF from another WordPress installation. This option can be changed once you configure the firewall to run correctly on this site.', 'wordfence') : ''),
							'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_OPTION_DELAY_BLOCKING),
							'disabled' => $firewall->isSubDirectoryInstallation(),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-textarea', array(
							'textOptionName' => 'whitelisted',
							'textValue' => wfUtils::cleanupOneEntryPerLine(wfConfig::get('whitelisted')),
							'title' => __('Allowlisted IP addresses that bypass all rules', 'wordfence'),
							'alignTitle' => 'top',
							'subtitleHTML' => wp_kses(__('Allowlisted IPs must be separated by commas or placed on separate lines. You can specify ranges using the following formats: 127.0.0.1/24, 127.0.0.[1-100], or 127.0.0.1-127.0.1.100<br/>Wordfence automatically allowlists <a href="http://en.wikipedia.org/wiki/Private_network" target="_blank" rel="noopener noreferrer">private networks<span class="screen-reader-text"> (opens in new tab)</span></a> because these are not routable on the public Internet.', 'wordfence'), array('br'=>array(), 'a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()), 'span'=>array('class'=>array()))),
							'subtitlePosition' => 'value',
							'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_OPTION_WHITELISTED_IPS),
						))->render();
						?>
					</li>
					<li>
						<?php
						$whitelistedServices = wfConfig::getJSON('whitelistedServices', array());
						$whitelistPresets = wfUtils::whitelistPresets();
						
						$names = array();
						foreach ($whitelistPresets as $tag => $preset) {
							if (!isset($preset['n'])) { continue; } //Not named, omitted from configurable list
							if ((isset($preset['h']) && $preset['h']) || (isset($preset['f']) && $preset['f'])) { continue; } //Flagged as hidden or always enabled, omitted from configurable list
							$names[$tag] = $preset['n'];
							if (!isset($whitelistedServices[$tag]) && isset($preset['d']) && $preset['d']) {
								$whitelistedServices[$tag] = 1;
							}
						}
						
						$options = array();
						foreach ($names as $tag => $name) {
							$options[] = array(
								'name' => 'whitelistedServices.' . preg_replace('/[^a-z0-9]/i', '', $tag),
								'enabledValue' => 1,
								'disabledValue' => 0,
								'value' => (isset($whitelistedServices[$tag]) && $whitelistedServices[$tag]) ? 1 : 0,
								'title' => $name,
							);
						}
						
						echo wfView::create('options/option-toggled-multiple', array(
							'options' => $options,
							'title' => __('Allowlisted services', 'wordfence'),
							'id' => 'wf-option-whitelistedServices',
							'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_OPTION_WHITELISTED_SERVICES),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-textarea', array(
							'textOptionName' => 'bannedURLs',
							'textValue' => wfUtils::cleanupOneEntryPerLine(wfConfig::get('bannedURLs')),
							'title' => __('Immediately block IPs that access these URLs', 'wordfence'),
							'alignTitle' => 'top',
							'subtitle' => __('Separate multiple URLs with commas or place them on separate lines. Asterisks are wildcards, but use with care. If you see an attacker repeatedly probing your site for a known vulnerability you can use this to immediately block them. All URLs must start with a "/" without quotes and must be relative. e.g. /badURLone/, /bannedPage.html, /dont-access/this/URL/, /starts/with-*', 'wordfence'),
							'subtitlePosition' => 'value',
							'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_OPTION_IMMEDIATELY_BLOCK_URLS),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-textarea', array(
							'textOptionName' => 'wafAlertWhitelist',
							'textValue' => wfUtils::cleanupOneEntryPerLine(wfConfig::get('wafAlertWhitelist')),
							'title' => __('Ignored IP addresses for Wordfence Web Application Firewall alerting', 'wordfence'),
							'alignTitle' => 'top',
							'subtitle' => __('Ignored IPs must be separated by commas or placed on separate lines. These addresses will be ignored from any alerts about increased attacks and can be used to ignore things like standalone website security scanners.', 'wordfence'),
							'subtitlePosition' => 'value',
							'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_FIREWALL_WAF_IGNORED_ALERT_IPS),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('waf/option-rules', array(
							'firewall' => $firewall,
						))->render();
						?>
					</li>
				</ul>
			</div>
		</div>
	</div>
</div> <!-- end advanced firewall options -->
<script type="text/x-jquery-template" id="waf-rules-tmpl">
	<table class="wf-striped-table">
		<thead>
		<tr>
			<th style="width: 5%"></th>
			<th><?php esc_html_e('Category', 'wordfence'); ?></th>
			<th><?php esc_html_e('Description', 'wordfence'); ?></th>
		</tr>
		</thead>
		<tbody>
		{{each(idx, rule) rules}}
		<tr data-rule-id="${rule.ruleID}" data-original-value="{{if (!disabledRules[rule.ruleID])}}1{{else}}0{{/if}}">
			<td style="text-align: center">
				<div class="wf-rule-toggle wf-boolean-switch{{if (!disabledRules[rule.ruleID])}} wf-active{{/if}}<?php echo ($firewall->isSubDirectoryInstallation() ? ' wf-disabled' : ''); ?>"><a href="#" class="wf-boolean-switch-handle"></a></div>
			</td>
			<td>${rule.category}</td>
			<td>${rule.description}</td>
		</tr>
		{{/each}}
		{{if (rules.length == 0)}}
		<tr>
			<td colspan="4"><?php esc_html_e('No rules currently set.', 'wordfence'); ?> <?php if (!($firewall->protectionMode() == wfFirewall::PROTECTION_MODE_EXTENDED && $firewall->isSubDirectoryInstallation())) { echo wp_kses(__('<a href="#" onclick="WFAD.wafUpdateRules();return false;" role="button">Click here</a> to pull down the latest from the Wordfence servers.', 'wordfence'), array('a'=>array('href'=>array(), 'onclick'=>array(), 'role'=>array()))); } ?>
			</td>
		</tr>
		{{/if}}
		</tbody>
		<tfoot>
		{{if (ruleCount >= 10)}}
		<tr id="waf-show-all-rules">
			<td class="wf-center" colspan="4"><a href="#" id="waf-show-all-rules-button" role="button"><?php esc_html_e('SHOW ALL RULES', 'wordfence'); ?></a></td>
		</tr>
		{{/if}}
		</tfoot>
	</table>
</script>
<script type="application/javascript">
	(function($) {
		$(window).on('wordfenceWAFConfigPageRender', function() {
			delete WFAD.pendingChanges['wafRules'];

			//Add event handler to rule checkboxes
			$('.wf-rule-toggle.wf-boolean-switch').each(function() {
				$(this).on('keydown', function(e) {
					if (e.keyCode == 32) {
						e.preventDefault();
						e.stopPropagation();

						$(this).find('.wf-boolean-switch-handle').trigger('click');
					}
				});
				
				$(this).on('click', function(e) {
					e.preventDefault();
					e.stopPropagation();

					$(this).find('.wf-boolean-switch-handle').trigger('click');
				});

				$(this).find('.wf-boolean-switch-handle').on('keydown', function(e) {
					if (e.keyCode == 32) {
						e.preventDefault();
						e.stopPropagation();

						$(this).trigger('click');
					}
				});

				$(this).find('.wf-boolean-switch-handle').on('click', function(e) {
					e.preventDefault();
					e.stopPropagation();

					var control = $(this).closest('.wf-boolean-switch');
					var row = $(this).closest('tr');
					var ruleID = row.data('ruleId');
					var value = control.hasClass('wf-active') ? 1 : 0;
					if (value) {
						control.removeClass('wf-active').attr('aria-checked', 'false');
						value = 0;
					}
					else {
						control.addClass('wf-active').attr('aria-checked', 'false');
						value = 1;
					}

					var originalValue = row.data('originalValue');
					if (originalValue == value) {
						delete WFAD.pendingChanges['wafRules'][ruleID];
						if (Object.keys(WFAD.pendingChanges['wafRules']).length == 0) {
							delete WFAD.pendingChanges['wafRules']
						}
					}
					else {
						if (!(WFAD.pendingChanges['wafRules'] instanceof Object)) {
							WFAD.pendingChanges['wafRules'] = {};
						}
						WFAD.pendingChanges['wafRules'][ruleID] = value;
					}

					$(control).trigger('change', [false]);
					WFAD.updatePendingChanges();
				});
			});
		});
	})(jQuery);
</script>views/waf/waf-install.php000064400000021600150755146450011423 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
?>
<script type="text/x-jquery-template" id="wafTmpl_install">
	<div class="wf-modal">
		<div class="wf-modal-header">
			<div class="wf-modal-header-content">
				<div class="wf-modal-title">
					<strong><?php esc_html_e('Optimize Wordfence Firewall', 'wordfence'); ?></strong>
				</div>
			</div>
			<div class="wf-modal-header-action">
				<div><?php esc_html_e('If you cannot complete the setup process, ', 'wordfence'); ?><a target="_blank" rel="noopener noreferrer" href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_INSTALL_MANUALLY); ?>"><?php esc_html_e('click here for help', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></div>
				<div class="wf-padding-add-left-small wf-modal-header-action-close"><a href="#" onclick="WFAD.colorboxClose(); return false" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
			</div>
		</div>
		<div class="wf-modal-content">
			<?php
			$currentAutoPrependFile = ini_get('auto_prepend_file');
			if (empty($currentAutoPrependFile) || WF_IS_WP_ENGINE || WF_IS_PRESSABLE || WF_IS_FLYWHEEL):
			?>
			<p><?php echo wp_kses(__('To make your site as secure as possible, the Wordfence Web Application Firewall is designed to run via a PHP setting called <code>auto_prepend_file</code>, which ensures it runs before any potentially vulnerable code runs.', 'wordfence'), array('code'=>array())); ?></p>
			<?php else: ?>
			<p><?php echo wp_kses(__('To make your site as secure as possible, the Wordfence Web Application Firewall is designed to run via a PHP setting called <code>auto_prepend_file</code>, which ensures it runs before any potentially vulnerable code runs. This PHP setting is currently in use, and is including this file:', 'wordfence'), array('code'=>array())); ?></p>
			<pre class='wf-pre'><?php echo esc_html($currentAutoPrependFile); ?></pre>
			<p><?php echo wp_kses(__('If you don\'t recognize this file, please <a href="https://wordpress.org/support/plugin/wordfence" target="_blank" rel="noopener noreferrer">contact us on the WordPress support forums<span class="screen-reader-text"> (opens in new tab)</span></a> before proceeding.', 'wordfence'), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()), 'span'=>array('class'=>array()))); ?></p>
			<p><?php echo wp_kses(__('You can proceed with the installation and we will include this from within our <code>wordfence-waf.php</code> file which should maintain compatibility with your site, or you can opt to override the existing PHP setting.', 'wordfence'), array('code'=>array())); ?></p>
			<ul id="wf-waf-include-prepend" class="wf-switch"><li class="wf-active" data-option-value="include"><?php esc_html_e('Include', 'wordfence'); ?></li><li data-option-value="override"><?php esc_html_e('Override', 'wordfence'); ?></li></ul>
			<?php endif; ?>
			<div class="wf-notice"><strong><?php esc_html_e('NOTE:', 'wordfence'); ?></strong> <?php esc_html_e('If you have separate WordPress installations with Wordfence installed within a subdirectory of this site, it is recommended that you perform the Firewall installation procedure on those sites before this one.', 'wordfence'); ?></div>
			<?php
			$serverInfo = wfWebServerInfo::createFromEnvironment();
			$dropdown = array(
				array("apache-mod_php", __('Apache + mod_php', 'wordfence'), $serverInfo->isApacheModPHP(), wfWAFAutoPrependHelper::helper('apache-mod_php')->getFilesNeededForBackup()),
				array("apache-suphp", __('Apache + suPHP', 'wordfence'), $serverInfo->isApacheSuPHP(), wfWAFAutoPrependHelper::helper('apache-suphp')->getFilesNeededForBackup()),
				array("cgi", __('Apache + CGI/FastCGI', 'wordfence'), $serverInfo->isApache() && !$serverInfo->isApacheSuPHP() && ($serverInfo->isCGI() || $serverInfo->isFastCGI()), wfWAFAutoPrependHelper::helper('cgi')->getFilesNeededForBackup()),
				array("litespeed", __('LiteSpeed/lsapi', 'wordfence'), $serverInfo->isLiteSpeed(), wfWAFAutoPrependHelper::helper('litespeed')->getFilesNeededForBackup()),
				array("nginx", __('NGINX', 'wordfence'), $serverInfo->isNGINX(), wfWAFAutoPrependHelper::helper('nginx')->getFilesNeededForBackup()),
				array("iis", __('Windows (IIS)', 'wordfence'), $serverInfo->isIIS(), wfWAFAutoPrependHelper::helper('iis')->getFilesNeededForBackup()),
				array("manual", __('Manual Configuration', 'wordfence'), false, array()),
			);
			
			$hasRecommendedOption = false;
			$wafPrependOptions = '';
			foreach ($dropdown as $option) {
				list($optionValue, $optionText, $selected) = $option;
				$optionValue=esc_attr($optionValue);
				$optionText=esc_html($optionText);
				$wafPrependOptions .= "<option value=\"{$optionValue}\"" . ($selected ? ' selected' : '') . ">{$optionText}" . ($selected ? ' (recommended based on our tests)' : '') . "</option>\n";
				if ($selected) {
					$hasRecommendedOption = true;
				}
			}
			
			if (!$hasRecommendedOption): ?>
				<p><?php esc_html_e('If you know your web server\'s configuration, please select it from the list below.', 'wordfence'); ?></p>
			<?php else: ?>
				<p><?php esc_html_e('We\'ve preselected your server configuration based on our tests, but if you know your web server\'s configuration, please select it now. You can also choose "Manual Configuration" for alternate installation details.', 'wordfence'); ?></p>
			<?php endif; ?>
			<select name='serverConfiguration' id='wf-waf-server-config'>
				<?php echo $wafPrependOptions; ?>
			</select>
			<div class="wf-notice wf-nginx-waf-config" style="display: none;"><?php wp_kses(printf(/* translators: 1. PHP ini setting. 2. Support URL. */ __('Part of the Firewall configuration procedure for NGINX depends on creating a <code>%1$s</code> file in the root of your WordPress installation. This file can contain sensitive information and public access to it should be restricted. We have <a href="%2$s" target="_blank" rel="noreferrer noopener">instructions on our documentation site<span class="screen-reader-text"> (opens in new tab)</span></a> on what directives to put in your nginx.conf to fix this.', 'wordfence'), esc_html(ini_get('user_ini.filename') ? ini_get('user_ini.filename') : '(.user.ini)'), wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_INSTALL_NGINX)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()), 'span'=>array('class'=>array()))); ?></div>
			<div class="wf-manual-waf-config" style="display: none;">
				<p><?php esc_html_e('If you are using a web server not listed in the dropdown or if file permissions prevent the installer from completing successfully, you will need to perform the change manually. Click Continue below to create the required file and view manual installation instructions.', 'wordfence'); ?></p>
			</div>
			<?php
			$adminURL = network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options&action=configureAutoPrepend');
			$wfnonce = wp_create_nonce('wfWAFAutoPrepend');
			foreach ($dropdown as $option):
				list($optionValue, $optionText, $selected) = $option;
				$class = preg_replace('/[^a-z0-9\-]/i', '', $optionValue);
				$helper = new wfWAFAutoPrependHelper($optionValue, null);
				$backups = $helper->getFilesNeededForBackup();
				$filteredBackups = array();
				foreach ($backups as $index => $backup) {
					if (!file_exists($backup)) {
						continue;
					}
					
					$filteredBackups[$index] = $backup;
				}
				$jsonBackups = json_encode(array_map('basename', $filteredBackups));
				?>
				<div class="wf-waf-backups wf-waf-backups-<?php echo $class; ?>" style="display: none;" data-backups="<?php echo esc_attr($jsonBackups); ?>">
					<?php if (count($filteredBackups)): ?><p><?php esc_html_e('Please download a backup of the following files before we make the necessary changes:', 'wordfence'); ?></p><?php endif; ?>
					<ul class="wf-waf-backup-file-list">
						<?php
						foreach ($filteredBackups as $index => $backup) {
							echo '<li><a class="wf-btn wf-btn-default wf-waf-backup-download" data-backup-index="' . $index . '" href="' .
								esc_url(add_query_arg(array(
									'downloadBackup'      => 1,
									'backupIndex'         => $index,
									'serverConfiguration' => $helper->getServerConfig(),
									'wfnonce'             => $wfnonce,
								), $adminURL)) . '">' . esc_html(sprintf(/* translators: File path. */ __('Download %s', 'wordfence'), basename($backup))) . '</a></li>';
						}
						?>
					</ul>
				</div>
			<?php endforeach; ?>
		</div>
		<div class="wf-modal-footer">
			<ul class="wf-flex-horizontal wf-flex-full-width">
				<li class="wf-waf-download-instructions"><?php esc_html_e('Once you have downloaded the files, click Continue to complete the setup.', 'wordfence'); ?></li>
				<li class="wf-right"><a href="#" class="wf-btn wf-btn-primary wf-btn-callout-subtle wf-disabled" id="wf-waf-install-continue" role="button"><?php esc_html_e('Continue', 'wordfence'); ?></a></li>
			</ul>
		</div>
	</div>
</script>views/waf/waf-uninstall.php000064400000015640150755146450011775 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
?>
<script type="text/x-jquery-template" id="wafTmpl_uninstall">
	<div class="wf-modal">
		<div class="wf-modal-header">
			<div class="wf-modal-header-content">
				<div class="wf-modal-title">
					<strong><?php esc_html_e('Uninstall Wordfence Firewall', 'wordfence'); ?></strong>
				</div>
			</div>
			<div class="wf-modal-header-action">
				<div><?php echo wp_kses(sprintf(__('If you cannot complete the uninstall process, <a target="_blank" rel="noopener noreferrer" href="%s">click here for help<span class="screen-reader-text"> (opens in new tab)</span></a>', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_REMOVE_MANUALLY)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()), 'span'=>array('class'=>array()))); ?></div>
				<div class="wf-padding-add-left-small wf-modal-header-action-close"><a href="#" onclick="WFAD.colorboxClose(); return false" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
			</div>
		</div>
		<div class="wf-modal-content">
		<?php
		if (WF_IS_WP_ENGINE || WF_IS_PRESSABLE || WF_IS_FLYWHEEL) {
			$currentAutoPrependFile = wordfence::getWAFBootstrapPath();
		} else {
			$currentAutoPrependFile = ini_get('auto_prepend_file');
		}

		?>
			<p><?php echo wp_kses(__('Extended Protection Mode of the Wordfence Web Application Firewall uses the PHP ini setting called <code>auto_prepend_file</code> in order to ensure it runs before any potentially vulnerable code runs. This PHP setting currently refers to the Wordfence file at:', 'wordfence'), array('code'=>array())); ?></p>
			<pre class='wf-pre'><?php echo esc_html($currentAutoPrependFile); ?></pre>
		<?php
		$contents = file_get_contents($currentAutoPrependFile);
		$refersToWAF = preg_match('/define\s*\(\s*(["\'])WFWAF_LOG_PATH\1\s*,\s*(__DIR__\s*\.\s*)?(["\']).+?\3\s*\)\s*/', $contents);
		
		if (!$refersToWAF):
		?>
			<p><?php echo wp_kses(sprintf(/* translators: Support URL. */ __('Automatic uninstallation cannot be completed, but you may still be able to <a href="%s" target="_blank" rel="noopener noreferrer">manually uninstall extended protection<span class="screen-reader-text"> (opens in new tab)</span></a>.', 'wordfence'), wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_WAF_REMOVE_MANUALLY)), array('a'=>array('href'=>array(), 'target'=>array(), 'rel'=>array()), 'span'=>array('class'=>array()))); ?></p>
		<?php else: ?>
				<p><?php echo wp_kses(__('Before this file can be deleted, the configuration for the <code>auto_prepend_file</code> setting needs to be removed.', 'wordfence'), array('code'=>array())); ?></p>
				<?php
				$serverInfo = wfWebServerInfo::createFromEnvironment();
				$dropdown = array(
					array("apache-mod_php", __('Apache + mod_php', 'wordfence'), $serverInfo->isApacheModPHP(), wfWAFAutoPrependHelper::helper('apache-mod_php')->getFilesNeededForBackup()),
					array("apache-suphp", __('Apache + suPHP', 'wordfence'), $serverInfo->isApacheSuPHP(), wfWAFAutoPrependHelper::helper('apache-suphp')->getFilesNeededForBackup()),
					array("cgi", __('Apache + CGI/FastCGI', 'wordfence'), $serverInfo->isApache() && !$serverInfo->isApacheSuPHP() && ($serverInfo->isCGI() || $serverInfo->isFastCGI()), wfWAFAutoPrependHelper::helper('cgi')->getFilesNeededForBackup()),
					array("litespeed", __('LiteSpeed/lsapi', 'wordfence'), $serverInfo->isLiteSpeed(), wfWAFAutoPrependHelper::helper('litespeed')->getFilesNeededForBackup()),
					array("nginx", __('NGINX', 'wordfence'), $serverInfo->isNGINX(), wfWAFAutoPrependHelper::helper('nginx')->getFilesNeededForBackup()),
					array("iis", __('Windows (IIS)', 'wordfence'), $serverInfo->isIIS(), wfWAFAutoPrependHelper::helper('iis')->getFilesNeededForBackup()),
				);
				
				$hasRecommendedOption = false;
				$wafPrependOptions = '';
				foreach ($dropdown as $option) {
					list($optionValue, $optionText, $selected) = $option;
					$optionValue=esc_attr($optionValue);
					$optionText=esc_html($optionText);
					$wafPrependOptions .= "<option value=\"{$optionValue}\"" . ($selected ? ' selected' : '') . ">{$optionText}" . ($selected ? ' (recommended based on our tests)' : '') . "</option>\n";
					if ($selected) {
						$hasRecommendedOption = true;
					}
				}
				
				if (!$hasRecommendedOption): ?>
					<p><?php esc_html_e('If you know your web server\'s configuration, please select it from the list below.', 'wordfence'); ?></p>
				<?php else: ?>
					<p><?php esc_html_e('We\'ve preselected your server configuration based on our tests, but if you know your web server\'s configuration, please select it now.', 'wordfence'); ?></p>
				<?php endif; ?>
				<select name='serverConfiguration' id='wf-waf-server-config'>
					<?php echo $wafPrependOptions; ?>
				</select>
				<?php
				$adminURL = network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options&action=removeAutoPrepend');
				$wfnonce = wp_create_nonce('wfWAFRemoveAutoPrepend');
				foreach ($dropdown as $option):
					list($optionValue, $optionText, $selected) = $option;
					$class = preg_replace('/[^a-z0-9\-]/i', '', $optionValue);
					$helper = new wfWAFAutoPrependHelper($optionValue, null);
					$backups = $helper->getFilesNeededForBackup();
					$filteredBackups = array();
					foreach ($backups as $index => $backup) {
						if (!file_exists($backup)) {
							continue;
						}
						
						$filteredBackups[$index] = $backup;
					}
					$jsonBackups = json_encode(array_map('basename', $filteredBackups));
					?>
					<div class="wf-waf-backups wf-waf-backups-<?php echo $class; ?>" style="display: none;" data-backups="<?php echo esc_attr($jsonBackups); ?>">
						<?php if (count($filteredBackups)): ?><p><?php esc_html_e('Please download a backup of the following files before we make the necessary changes:', 'wordfence'); ?></p><?php endif; ?>
						<ul class="wf-waf-backup-file-list">
							<?php
							foreach ($filteredBackups as $index => $backup) {
								echo '<li><a class="wf-btn wf-btn-default wf-waf-backup-download" data-backup-index="' . $index . '" href="' .
									esc_url(add_query_arg(array(
										'downloadBackup'      => 1,
										'backupIndex'         => $index,
										'serverConfiguration' => $helper->getServerConfig(),
										'wfnonce'             => $wfnonce,
									), $adminURL)) . '">' . esc_html(sprintf(__('Download %s', 'wordfence'), basename($backup))) . '</a></li>';
							}
							?>
						</ul>
					</div>
				<?php endforeach; ?>
		<?php endif; ?>
		</div>
		<div class="wf-modal-footer">
			<ul class="wf-flex-horizontal wf-flex-full-width">
				<li class="wf-waf-download-instructions"><?php esc_html_e('Once you have downloaded the files, click Continue to complete uninstallation.', 'wordfence'); ?></li>
				<li class="wf-right"><a href="#" class="wf-btn wf-btn-primary wf-btn-callout-subtle wf-disabled" id="wf-waf-uninstall-continue" role="button"><?php esc_html_e('Continue', 'wordfence'); ?></a></li>
			</ul>
		</div>
	</div>
</script>views/diagnostics/text.php000064400000044615150755146450011733 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) {
	exit;
}

if (!isset($diagnostic)) {
	$diagnostic = new wfDiagnostic;
}
if (!isset($plugins)) {
	$plugins = get_plugins();
}
if (!isset($activePlugins)) {
	$activePlugins = array_flip(get_option('active_plugins'));
}
if (!isset($activeNetworkPlugins)) {
	$activeNetworkPlugins = is_multisite() ? array_flip(wp_get_active_network_plugins()) : array();
}
if (!isset($muPlugins)) {
	$muPlugins = get_mu_plugins();
}
if (!isset($themes)) {
	$themes = wp_get_themes();
}
if (!isset($currentTheme)) {
	$currentTheme = wp_get_theme();
}

$w = new wfConfig();

?>

<?php
foreach ($diagnostic->getResults() as $title => $tests):
	$table = array(
		array($title, ''),
	);
	foreach ($tests['results'] as $result) {

		$infoOnly = isset($result['infoOnly']) && $result['infoOnly'];
		$message = '';
		if ($infoOnly) {
			$message = '';
		} else if ($result['test'] && $result['message'] !== 'OK') {
			$message = '[OK] ';
		} else if (!$result['test'] && $result['message'] !== 'FAIL') {
			$message = '[FAIL] ';
		}

		if (is_array($result['message'])) {
			$message .= $result['message']['textonly'];
		}
		else {
			$message .= strip_tags($result['message']);
		}
		
		if (isset($result['detail']) && !empty($result['detail'])) {
			$message .= "\nAdditional Detail:\n";
			if (is_array($result['detail'])) {
				$message .= $result['detail']['textonly'];
			}
			else {
				$message .= strip_tags($result['detail']);
			}
		}

		$table[] = array(
			strip_tags((is_array($result['label']) && isset($result['label']['raw']) && $result['label']['raw']) ? $result['label']['value'] : $result['label']),
			$message,
		);
	}
	echo wfHelperString::plainTextTable($table) . "\n\n";
endforeach;
?>

## <?php esc_html_e('IP Detection', 'wordfence') ?>: <?php esc_html_e('Methods of detecting a visitor\'s IP address.', 'wordfence') ?> ##

<?php
$howGet = wfConfig::get('howGetIPs', false);
list($currentIP, $currentServerVarForIP) = wfUtils::getIPAndServerVariable();
$howGetHasErrors = $howGet && (!$currentServerVarForIP || $howGet !== $currentServerVarForIP);

$table = array(
	array(
		__('IPs', 'wordfence'),
		__('Value', 'wordfence'),
		__('Used', 'wordfence'),
	),
);

$serverVariables = array(
	'REMOTE_ADDR'           => 'REMOTE_ADDR',
	'HTTP_CF_CONNECTING_IP' => 'CF-Connecting-IP',
	'HTTP_X_REAL_IP'        => 'X-Real-IP',
	'HTTP_X_FORWARDED_FOR'  => 'X-Forwarded-For',
);
foreach (wfUtils::getAllServerVariableIPs() as $variable => $ip) {

	$ipValue = '';

	if (!$ip) {
		$ipValue = __('(not set)', 'wordfence');
	} elseif (is_array($ip)) {
		$ipValue = array_map('strip_tags', $ip);
		$ipValue = str_replace($currentIP, "**$currentIP**", implode(', ', $ipValue));
	} else {
		$ipValue = strip_tags($ip);
	}

	$used = '';
	if ($currentServerVarForIP && $currentServerVarForIP === $variable) {
		$used = __('In use', 'wordfence');
	} else if ($howGet === $variable) {
		$used = __('Configured but not valid', 'wordfence');
	}
	$table[] = array(
		isset($serverVariables[$variable]) ? $serverVariables[$variable] : $variable,
		$ipValue,
		$used,
	);
}

$proxies = wfConfig::get('howGetIPs_trusted_proxies', '');
$table[] = array(
	__('Trusted Proxies', 'wordfence'),
	strip_tags(implode(', ', explode("\n", empty($proxies) ? __('(not set)', 'wordfence') : $proxies))),
	'',
);

$preset = wfConfig::get('howGetIPs_trusted_proxy_preset'); 
$presets = wfConfig::getJSON('ipResolutionList', array()); 
$table[] = array(
	__('Trusted Proxy Preset', 'wordfence'),
	strip_tags((is_array($presets) && isset($presets[$preset])) ? $presets[$preset]['name'] : __('(not set)', 'wordfence')),
	'',
);

echo wfHelperString::plainTextTable($table) . "\n\n";

?>

## <?php esc_html_e('WordPress Settings', 'wordfence') ?>: <?php esc_html_e('WordPress version and internal settings/constants.', 'wordfence') ?> ##

<?php
$table = array(
	array(
		__('Setting Name', 'wordfence'),
		__('Description', 'wordfence'),
		__('Value', 'wordfence'),
	),
);

foreach (wfDiagnostic::getWordpressValues() as $settingName => $settingData) {
	$escapedName = strip_tags($settingName);
	$escapedDescription = '';
	$escapedValue = __('(not set)', 'wordfence');
	if (is_array($settingData)) {
		$escapedDescription = strip_tags($settingData['description']);
		if (isset($settingData['value'])) {
			$escapedValue = strip_tags($settingData['value']);
		}
	} else {
		$escapedDescription = strip_tags($settingData);
		if (defined($settingName)) {
			$escapedValue = strip_tags(constant($settingName));
		}
	}

	$table[] = array(
		$escapedName,
		$escapedDescription,
		$escapedValue,
	);
}

echo wfHelperString::plainTextTable($table) . "\n\n";

?>

## <?php esc_html_e('WordPress Plugins', 'wordfence') ?>: <?php esc_html_e('Status of installed plugins.', 'wordfence') ?> ##

<?php

$table = array(
	array(__('Name', 'wordfence'), __('Status', 'wordfence')),
);

foreach ($plugins as $plugin => $pluginData) {
	$slug = $plugin;
	if (preg_match('/^([^\/]+)\//', $plugin, $tableMatches)) {
		$slug = $tableMatches[1];
	} else if (preg_match('/^([^\/.]+)\.php$/', $plugin, $tableMatches)) {
		$slug = $tableMatches[1];
	}

	$name = strip_tags(sprintf('%s (%s)', $pluginData['Name'], $slug));
	if (!empty($pluginData['Version'])) {
		$name .= ' - ' . strip_tags(sprintf(__('Version %s', 'wordfence'), $pluginData['Version']));
	}

	if (array_key_exists(trailingslashit(WP_PLUGIN_DIR) . $plugin, $activeNetworkPlugins)) {
		$status = __('Network Activated', 'wordfence');
	} elseif (array_key_exists($plugin, $activePlugins)) {
		$status = __('Active', 'wordfence');
	} else {
		$status = __('Inactive', 'wordfence');
	}
	$table[] = array(
		$name,
		$status,
	);
}

echo wfHelperString::plainTextTable($table) . "\n\n";

?>

## <?php esc_html_e('Must-Use WordPress Plugins', 'wordfence') ?>: <?php esc_html_e('WordPress "mu-plugins" that are always active, including those provided by hosts.', 'wordfence') ?> ##

<?php

$table = array(
	array(__('Name', 'wordfence'), __('Status', 'wordfence')),
);

if (!empty($muPlugins)) {
	foreach ($muPlugins as $plugin => $pluginData) {
		$slug = $plugin;
		if (preg_match('/^([^\/]+)\//', $plugin, $tableMatches)) {
			$slug = $tableMatches[1];
		} else if (preg_match('/^([^\/.]+)\.php$/', $plugin, $tableMatches)) {
			$slug = $tableMatches[1];
		}

		$name = strip_tags(sprintf('%s (%s)', $pluginData['Name'], $slug));
		if (!empty($pluginData['Version'])) {
			$name .= ' - ' . strip_tags(sprintf(__('Version %s', 'wordfence'), $pluginData['Version']));
		}

		$table[] = array(
			$name,
			__('Active', 'wordfence'),
		);
	}
} else {
	$table[] = array(
		__('No MU-Plugins', 'wordfence'),
		'',
	);
}

echo wfHelperString::plainTextTable($table) . "\n\n";

?>

## <?php esc_html_e('Drop-In WordPress Plugins', 'wordfence') ?>: <?php esc_html_e('WordPress "drop-in" plugins that are active.', 'wordfence') ?> ##

<?php

//Taken from plugin.php and modified to always show multisite drop-ins
$dropins = array(
	'advanced-cache.php'      => array(__('Advanced caching plugin', 'wordfence'), 'WP_CACHE'), // WP_CACHE
	'db.php'                  => array(__('Custom database class', 'wordfence'), true), // auto on load
	'db-error.php'            => array(__('Custom database error message', 'wordfence'), true), // auto on error
	'install.php'             => array(__('Custom installation script', 'wordfence'), true), // auto on installation
	'maintenance.php'         => array(__('Custom maintenance message', 'wordfence'), true), // auto on maintenance
	'object-cache.php'        => array(__('External object cache', 'wordfence'), true), // auto on load
	'php-error.php'           => array(__('Custom PHP error message', 'wordfence'), true), // auto on error
	'fatal-error-handler.php' => array(__('Custom PHP fatal error handler', 'wordfence'), true), // auto on error
);
$dropins['sunrise.php'] = array(__('Executed before Multisite is loaded', 'wordfence'), is_multisite() && 'SUNRISE'); // SUNRISE
$dropins['blog-deleted.php'] = array(__('Custom site deleted message', 'wordfence'), is_multisite()); // auto on deleted blog
$dropins['blog-inactive.php'] = array(__('Custom site inactive message', 'wordfence'), is_multisite()); // auto on inactive blog
$dropins['blog-suspended.php'] = array(__('Custom site suspended message', 'wordfence'), is_multisite()); // auto on archived or spammed blog

$table = array(
	array(__('Name', 'wordfence'), __('Status', 'wordfence')),
);

foreach ($dropins as $file => $data) {
	$active = file_exists(WP_CONTENT_DIR . DIRECTORY_SEPARATOR . $file) && is_readable(WP_CONTENT_DIR . DIRECTORY_SEPARATOR . $file) && $data[1];
	$table[] = array(
		sprintf('%s (%s)', $data[0], $file),
		$active ? __('Active', 'wordfence') : __('Inactive', 'wordfence'),
	);
}

echo wfHelperString::plainTextTable($table) . "\n\n";

?>

## <?php esc_html_e('Themes', 'wordfence') ?>: <?php esc_html_e('Status of installed themes.', 'wordfence') ?> ##

<?php

$table = array(
	array(__('Name', 'wordfence'), __('Status', 'wordfence')),
);

if (!empty($themes)) {
	foreach ($themes as $theme => $themeData) {
		$slug = $theme;
		if (preg_match('/^([^\/]+)\//', $theme, $tableMatches)) {
			$slug = $tableMatches[1];
		} else if (preg_match('/^([^\/.]+)\.php$/', $theme, $tableMatches)) {
			$slug = $tableMatches[1];
		}

		$name = strip_tags(sprintf('%s (%s)', $themeData['Name'], $slug));
		if (!empty($themeData['Version'])) {
			$name .= ' - ' . strip_tags(sprintf(__('Version %s', 'wordfence'), $themeData['Version']));
		}

		if ($currentTheme instanceof WP_Theme && $theme === $currentTheme->get_stylesheet()) {
			$status = __('Active', 'wordfence');
		} else {
			$status = __('Inactive', 'wordfence');
		}
		$table[] = array(
			$name,
			$status,
		);
	}
} else {
	$table[] = array(
		__('No Themes', 'wordfence'),
		''
	);
}

echo wfHelperString::plainTextTable($table) . "\n\n";

?>

## <?php esc_html_e('Cron Jobs', 'wordfence') ?>: <?php esc_html_e('List of WordPress cron jobs scheduled by WordPress, plugins, or themes.', 'wordfence') ?> ##

<?php
$cron = _get_cron_array();

$table = array(
	array(__('Run Time', 'wordfence'), __('Job', 'wordfence')),
);
foreach ($cron as $timestamp => $values) {
	if (is_array($values)) {
		foreach ($values as $cron_job => $v) {
			if (is_numeric($timestamp)) {
				$overdue = ((time() - 1800) > $timestamp);

				$table[] = array(
					strip_tags(date('r', $timestamp)) . ($overdue ? ' **(' . __('Overdue', 'wordfence') . ')**' : ''),
					strip_tags($cron_job),
				);
			}
		}
	}
}

echo wfHelperString::plainTextTable($table) . "\n\n";

?>

## <?php esc_html_e('Database Tables', 'wordfence') ?>: <?php esc_html_e('Database table names, sizes, timestamps, and other metadata.', 'wordfence') ?> ##

<?php
global $wpdb;
$wfdb = new wfDB();
//This must be done this way because MySQL with InnoDB tables does a full regeneration of all metadata if we don't. That takes a long time with a large table count.
$tables = $wfdb->querySelect('SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() ORDER BY TABLE_NAME ASC LIMIT 250');
$total = $wfdb->querySingle('SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() LIMIT 250');
foreach ($tables as &$t) {
	$t = "'" . esc_sql($t['TABLE_NAME']) . "'";
}
unset($t);
$q = $wfdb->querySelect("SHOW TABLE STATUS WHERE Name IN (" . implode(',', $tables) . ')');

if ($q) {
	$databaseCols = count($q[0]);

	if ($total > 250) {
		_e('Unable to verify - table count too high', 'wordfence');
	} else {
		$hasAll = true;
		$schemaTables = wfSchema::tableList();
		$existingTables = wfUtils::array_column($q, 'Name');
		if (WFWAF_IS_WINDOWS) {
			$existingTables = wfUtils::array_strtolower($existingTables);
		} //Windows MySQL installations are case-insensitive
		$missingTables = array();
		foreach ($schemaTables as $t) {
			$table = wfDB::networkTable($t);
			if (WFWAF_IS_WINDOWS) {
				$table = strtolower($table);
			}
			if (!in_array($table, $existingTables)) {
				$hasAll = false;
				$missingTables[] = $t;
			}
		}

		foreach (
			array(
				\WordfenceLS\Controller_DB::TABLE_2FA_SECRETS,
				\WordfenceLS\Controller_DB::TABLE_SETTINGS,
			) as $t) {
			$table = \WordfenceLS\Controller_DB::network_table($t);
			if (!in_array($table, $existingTables)) {
				$hasAll = false;
				$missingTables[] = $t;
			}
		}

		if ($hasAll) {
			_e('All Tables Exist', 'wordfence');
		} else {
			printf(/* translators: 1. WordPress table prefix. 2. Wordfence table case. 3. List of database tables. */ __('Tables missing (prefix %1$s, %2$s): %3$s', 'wordfence'), wfDB::networkPrefix(), wfSchema::usingLowercase() ? __('lowercase', 'wordfence') : __('regular case', 'wordfence'), implode(', ', $missingTables));
		}
	}
	
	echo "\n";
	printf(/* translators: 1. Number of tables */ _n('%1$s Table in Database', '%1$s Tables in Database', $total, 'wordfence' ), $total );
	echo "\n";

	$val = wfUtils::array_first($q);
	$actualKeyOrder = array_keys($val);
	$preferredKeyOrder = array('Name', 'Comment', 'Engine', 'Rows', 'Avg_row_length', 'Data_length', 'Index_length', 'Auto_increment', 'Create_time', 'Row_format', 'Collation', 'Version', 'Max_data_length', 'Data_free', 'Update_time', 'Check_time', 'Checksum', 'Create_options');
	$leftoverKeys = array();
	$displayKeyOrder = array();
	foreach ($preferredKeyOrder as $k) {
		if (in_array($k, $actualKeyOrder)) {
			$displayKeyOrder[] = $k;
		}
	}

	$diff = array_diff($actualKeyOrder, $preferredKeyOrder);
	$displayKeyOrder = array_merge($displayKeyOrder, $diff);

	$table = array(
		$displayKeyOrder,
	);

	$count = 0;
	foreach ($q as $val) {
		$tableRow = array();
		foreach ($displayKeyOrder as $tkey) {
			$tableRow[] = isset($val[$tkey]) ? $val[$tkey] : '';
		}
		$table[] = $tableRow;

		$count++;
		if ($count >= 250 && $total > $count) {
			$tableRow = array_fill(0, $databaseCols, '');
			$tableRow[0] = sprintf(__('and %d more', 'wordfence'), $total - $count);
			$table[] = $tableRow;
			break;
		}
	}
}

echo wfHelperString::plainTextTable($table) . "\n\n";

?>

## <?php esc_html_e('Log Files', 'wordfence') ?>: <?php esc_html_e('PHP error logs generated by your site, if enabled by your host.', 'wordfence') ?> ##

<?php

$table = array(
	array(
		__('File', 'wordfence'),
	),
);

$errorLogs = wfErrorLogHandler::getErrorLogs();
if (count($errorLogs) < 1) {
	$table[] = array(
		__('No log files found.', 'wordfence'),
	);
} else {
	foreach ($errorLogs as $log => $readable) {
		$metadata = array();
		if (is_callable('filesize')) {
			$rawSize = @filesize($log);
			if ($rawSize !== false) {
				$metadata[] = wfUtils::formatBytes(filesize($log));
			}
		}

		if (is_callable('lstat')) {
			$rawStat = @lstat($log);
			if (is_array($rawStat) && isset($rawStat['mtime'])) {
				$ts = $rawStat['mtime'];
				$utc = new DateTimeZone('UTC');
				$dtStr = gmdate("c", (int) $ts); //Have to do it this way because of PHP 5.2
				$dt = new DateTime($dtStr, $utc);
				$metadata[] = $dt->format('M j, Y G:i:s') . ' ' . __('UTC', 'wordfence');
			}
		}

		$shortLog = $log;
		if (strpos($shortLog, ABSPATH) === 0) {
			$shortLog = '~/' . substr($shortLog, strlen(ABSPATH));
		}

		$logData = strip_tags($shortLog);
		if (!empty($metadata)) {
			$logData .= ' (' . implode(', ', $metadata) . ')';
		}
		$table[] = array($logData);
	}
}

echo wfHelperString::plainTextTable($table) . "\n\n";

?>

## <?php esc_html_e('Scan Issues', 'wordfence') ?> ##

<?php

$issues = wfIssues::shared()->getIssues(0, 50, 0, 50);
$issueCounts = array_merge(array('new' => 0, 'ignoreP' => 0, 'ignoreC' => 0), wfIssues::shared()->getIssueCounts());
$issueTypes = wfIssues::validIssueTypes();

printf(__('New Issues (%d total)', 'wordfence'), $issueCounts['new']);
echo "\n\n";

if (isset($issues['new']) && count($issues['new'])) {
	foreach ($issues['new'] as $i) {
		if (!in_array($i['type'], $issueTypes)) {
			continue;
		}

		$viewContent = '';
		try {
			$viewContent = wfView::create('scanner/issue-' . $i['type'], array('textOutput' => $i))->render();
		}
		catch (wfViewNotFoundException $e) {
			//Ignore -- should never happen since we validate the type
		}

		if (!empty($viewContent)) {
			echo strip_tags($viewContent) . "\n\n";
		}
	}
}
else {
	_e('No New Issues', 'wordfence');
	echo "\n";
}

?>

## <?php esc_html_e('Wordfence Settings', 'wordfence') ?>: <?php esc_html_e('Diagnostic Wordfence settings/constants.', 'wordfence') ?> ##

<?php
$table = array(
	array(
		__('Setting', 'wordfence'),
		__('Value', 'wordfence'),
	),
);

foreach (wfDiagnostic::getWordfenceValues() as $settingData) {
	if (isset($settingData['subheader'])) {
		$table[] = strip_tags($settingData['subheader']);
		continue;
	}
	
	$escapedDescription = strip_tags($settingData['description']);
	$escapedValue = __('(not set)', 'wordfence');
	if (isset($settingData['value'])) {
		$escapedValue = strip_tags($settingData['value']);
	}

	$table[] = array(
		$escapedDescription,
		$escapedValue,
	);
}

echo wfHelperString::plainTextTable($table) . "\n\n";
?>

## <?php esc_html_e('Wordfence Central', 'wordfence') ?>: <?php esc_html_e('Diagnostic connection information for Wordfence Central.', 'wordfence') ?> ##

<?php
$table = array(
	array(
		__('Name', 'wordfence'),
		__('Value', 'wordfence'),
	),
);

foreach (wfDiagnostic::getWordfenceCentralValues() as $settingData) {
	if (isset($settingData['subheader'])) {
		$table[] = strip_tags($settingData['subheader']);
		continue;
	}
	
	$escapedDescription = strip_tags($settingData['description']);
	$escapedValue = __('(not set)', 'wordfence');
	if (isset($settingData['value'])) {
		$escapedValue = strip_tags($settingData['value']);
	}
	
	$table[] = array(
		$escapedDescription,
		$escapedValue,
	);
}

echo wfHelperString::plainTextTable($table) . "\n\n";
?>

## PHPInfo ##

<?php
ob_start();
if (wfUtils::funcEnabled('phpinfo')) { phpinfo(); } else { echo "\n\n" . __('Unable to output phpinfo content because it is disabled', 'wordfence') . "\n\n"; }
$phpinfo = ob_get_clean();

if (preg_match_all('#(?:<h2>(.*?)</h2>\s*)?<table[^>]*>(.*?)</table>#is', $phpinfo, $tableMatches)) {
	foreach ($tableMatches[2] as $countIndex => $tableContents) {
		$table = array();
		if (preg_match_all('#<tr[^>]*>(.*?)</tr>#is', $tableContents, $rowMatches)) {
			foreach ($rowMatches[1] as $rowContents) {
				if (preg_match_all('#<t[hd][^>]*>(.*?)</t[hd]>#is', $rowContents, $colMatches)) {
					$row = array();
					foreach ($colMatches[1] as $colContents) {
						$row[] = trim(strip_tags(html_entity_decode($colContents)));
					}
					$table[] = $row;
				}
			}
		}
		if (array_key_exists($countIndex, $tableMatches[1]) && $tableMatches[1][$countIndex]) {
			echo "## " . strip_tags($tableMatches[1][$countIndex]) . " ##\n\n";
		}

		$tableString = wfHelperString::plainTextTable($table);
		if ($tableString) {
			echo $tableString . "\n\n";
		}
	}
}


?>views/tours/login-security.php000064400000011525150755146450012563 0ustar00<?php if (wfOnboardingController::shouldShowNewTour(wfOnboardingController::TOUR_LOGIN_SECURITY)): ?>
	<script type="application/javascript">
		(function($) {
			$(function() {
				WFAD.tour1 = function() {
					$('#wfls-tab-manage a').trigger('click');
					WFAD.tour('wfNewTour1', 'wfls-tab-manage', 'top', 'left', null, WFAD.tour2);
				};
				WFAD.tour2 = function() {
					$('#wfls-tab-settings a').trigger('click');
					WFAD.tour('wfNewTour2', 'wfls-option-whitelisted', 'bottom', 'right', WFAD.tour1, WFAD.tour3);
				};
				WFAD.tour3 = function() {
					$('#wfls-tab-settings a').trigger('click');
					WFAD.tour('wfNewTour3', 'wfls-enable-auth-captcha', 'bottom', 'left', WFAD.tour2, WFAD.tourComplete);
				};
				WFAD.tourComplete = function() { WFAD.tourFinish('<?php echo esc_attr(wfOnboardingController::TOUR_LOGIN_SECURITY); ?>'); };
				
				<?php if (wfOnboardingController::shouldShowNewTour(wfOnboardingController::TOUR_LOGIN_SECURITY)): ?>
				if (!WFAD.isSmallScreen) { WFAD.tour1(); }
				<?php endif; ?>
			});
		})(jQuery);
	</script>
	
	<script type="text/x-jquery-template" id="wfNewTour1">
		<div>
			<h3><?php esc_html_e('Introducing the New Wordfence 2FA', 'wordfence'); ?></h3>
			<p><?php esc_html_e('We are excited to announce the release of a completely rebuilt two-factor authentication (2FA) feature within Wordfence. 2FA is an important layer of security that protects you from password guessing and credential stuffing attacks. Previously a Premium-only feature, it is now available for sites running the free version of Wordfence. You are now able to enable 2FA for any role, we’ve added a number of important security features, and we’ve significantly improved the admin interface.', 'wordfence'); ?></p>
			<p><a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_MODULE_LOGIN_SECURITY_2FA); ?>" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Learn More', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></p>
			<div class="wf-pointer-footer">
				<ul class="wf-tour-pagination">
					<li class="wf-active">&bullet;</li>
					<li>&bullet;</li>
					<li>&bullet;</li>
				</ul>
				<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Next', 'wordfence'); ?></a></div>
			</div>
			<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
		</div>
	</script>
	<script type="text/x-jquery-template" id="wfNewTour2">
		<div>
			<h3><?php esc_html_e('Individual Allowlisting', 'wordfence'); ?></h3>
			<p><?php esc_html_e('Two-factor authentication now has its own IP allowlist. If necessary, you can allow specific IP addresses or ranges to skip 2FA when logging in.', 'wordfence'); ?></p>
			<div class="wf-pointer-footer">
				<ul class="wf-tour-pagination">
					<li>&bullet;</li>
					<li class="wf-active">&bullet;</li>
					<li>&bullet;</li>
				</ul>
				<div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default" role="button"><?php esc_html_e('Previous', 'wordfence'); ?></a></div>
				<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Next', 'wordfence'); ?></a></div>
			</div>
			<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
		</div>
	</script>
	<script type="text/x-jquery-template" id="wfNewTour3">
		<div>
			<h3><?php esc_html_e('New Login Page Captcha Feature', 'wordfence'); ?></h3>
			<p><?php esc_html_e('Wordfence now includes the option to enable Google reCaptcha v3 on your WordPress login and registration pages. This adds a powerful new layer of protection against password guessing and credential stuffing attacks from bots without slowing down real users.', 'wordfence'); ?></p>
			<p><a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_MODULE_LOGIN_SECURITY_CAPTCHA); ?>" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Learn More', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></p>
			<div class="wf-pointer-footer">
				<ul class="wf-tour-pagination">
					<li>&bullet;</li>
					<li>&bullet;</li>
					<li class="wf-active">&bullet;</li>
				</ul>
				<div id="wf-tour-previous"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-default" role="button"><?php esc_html_e('Previous', 'wordfence'); ?></a></div>
				<div id="wf-tour-continue"><a href="#" class="wf-onboarding-btn wf-onboarding-btn-primary" role="button"><?php esc_html_e('Done', 'wordfence'); ?></a></div>
			</div>
			<div id="wf-tour-close"><a href="#" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
		</div>
	</script>
<?php endif; ?>views/.htaccess000064400000000542150755146450007514 0ustar00<IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{REQUEST_URI} \.php$
        RewriteRule .* - [F,L,NC]
</IfModule>
<IfModule !mod_rewrite.c>
	<FilesMatch "\.php$">
	<IfModule mod_authz_core.c>
		Require all denied
	</IfModule>
	<IfModule !mod_authz_core.c>
		Order deny,allow
		Deny from all
	</IfModule>
	</FilesMatch>
</IfModule>views/common/page-title.php000064400000004125150755146450011753 0ustar00<?php if (!defined('WORDFENCE_VERSION')) { exit; } ?>
<div class="wf-row">
	<div class="wf-col-xs-12">
		<div class="wf-page-title">
			<div class="wordfence-lock-icon wordfence-icon32"></div><h2 id="wfHeading"><?php echo esc_html($title); ?></h2><?php if (isset($accessory)) { echo (string) $accessory; } ?><?php if (isset($help)) { echo (string) $help; } ?>
		</div>
		<div class="wp-header-end"></div>
	</div>
	<?php if (isset($wantsLiveActivity) && $wantsLiveActivity): ?><div class="wf-col-xs-12"><?php include('live_activity.php'); ?></div><?php endif; ?>
	<div class="wf-col-xs-12">
		<?php if (isset($options)): ?>
			<h2 class="wf-hidden-xs nav-tab-wrapper<?php if (count($options) <= 1 || (isset($hideBar) && $hideBar)) { echo ' wf-hidden'; } ?>" id="wordfenceTopTabs">
				<?php foreach ($options as $info): ?>
					<a class="nav-tab" id="<?php echo esc_html($info['a']); ?>-tab" href="#top#<?php echo esc_html($info['a']); ?>"><?php echo esc_html($info['t']); ?></a>
				<?php endforeach; ?>
			</h2>
			<ul class="wf-nav wf-nav-pills wf-visible-xs">
				<li class="wf-navbar-brand"><?php esc_html_e('Go:', 'wordfence') ?></li>
				<li class="wf-dropdown">
					<a href="#" id="wordfenceTopTabsMobile" class="wf-dropdown-toggle wf-mobile-dropdown" data-toggle="wf-dropdown" role="button"><span id="wordfenceTopTabsMobileTitle"><?php esc_html_e('Go to', 'wordfence') ?></span> <span class="wf-caret"></span></a>
					<ul class="wf-dropdown-menu">
						<?php foreach ($options as $info): ?>
							<li><a id="<?php echo esc_html($info['a']); ?>-tab-mobile" href="#top#<?php echo esc_html($info['a']); ?>"><?php echo esc_html($info['t']); ?></a></li>
						<?php endforeach; ?>
					</ul>
				</li>
			</ul>
		<?php endif; ?>
		<?php if (isset($helpLink)): ?><div class="wordfenceHelpLink"><a href="<?php echo $helpLink; ?>" target="_blank" rel="noopener noreferrer" class="wfhelp"></a><a href="<?php echo $helpLink; ?>" target="_blank" rel="noopener noreferrer"><?php echo $helpLabel; ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></div><?php endif; ?>
	</div>
</div>views/common/unsubscribe.php000064400000010007150755146450012240 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }

/**
 * Presents an unsubscribe confirmation.
 *
 * Expects $jwt, $email, and $state to be defined when applicable.
 *
 * @var string $jwt The JWT for the unsubscribe request.
 * @var string $email The plaintext email address being unsubscribed.
 * @var string $state The state of the confirmation. 'bad' is the bad/expired token prompt. 'resent' is the confirmation that an unsubscribe email as re-sent. 'prompt' is the confirmation prompt. 'unsubscribed' is the completion view.
 */

switch ($state) {
	case 'bad':
		$title = __('Unsubscribe from Security Alerts', 'wordfence');
		break;
	case 'resent':
		$title = __('Unsubscription Confirmation Sent', 'wordfence');
		break;
	case 'unsubscribed':
		$title = __('Unsubscribe Successful', 'wordfence');
		break;
	case 'prompt':
		$title = __('Confirm Unsubscribe', 'wordfence');
		break;
}
?>
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title><?php echo esc_html($title); ?></title>
	<style>
		html {
			font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
			font-size: 14px;
			line-height: 1.42857143;
			color: #333;
			background-color: #fff;
		}
		
		h1, h2, h3, h4, h45, h6 {
			font-weight: 500;
			line-height: 1.1;
		}
		
		h1 { font-size: 36px; }
		h2 { font-size: 30px; }
		h3 { font-size: 24px; }
		h4 { font-size: 18px; }
		h5 { font-size: 14px; }
		h6 { font-size: 12px; }
		
		h1, h2, h3 {
			margin-top: 20px;
			margin-bottom: 10px;
		}
		h4, h5, h6 {
			margin-top: 10px;
			margin-bottom: 10px;
		}
		
		.btn {
			background-color: #00709e;
			border: 1px solid #09486C;
			border-radius: 4px;
			box-sizing: border-box;
			color: #ffffff;
			cursor: pointer;
			display: inline-block;
			font-size: 14px;
			font-weight: normal;
			letter-spacing: normal;
			line-height: 20px;
			margin: 5px 0px;
			padding: 12px 6px;
			text-align: center;
			text-decoration: none;
			vertical-align: middle;
			white-space: nowrap;
			word-spacing: 0px;
		}
		
		hr {
			margin-top: 20px;
			margin-bottom: 20px;
			border: 0;
			border-top: 1px solid #eee
		}
		
		.btn.disabled, .btn[disabled] {
			background-color: #9f9fa0;
			border: 1px solid #7E7E7F;
			cursor: not-allowed;
			filter: alpha(opacity=65);
			-webkit-box-shadow: none;
			box-shadow: none;
			opacity: .65;
			pointer-events: none;
		}
	</style>
</head>
<body>

<h3><?php echo esc_html($title); ?></h3>

<?php if ($state == 'unsubscribed'): ?>
<p><?php esc_html_e('The email address provided has been unsubscribed from future alert emails.', 'wordfence'); ?></p>
<?php elseif ($state == 'resent'): ?>
<p><?php esc_html_e('If the email address provided was on the alert email list, it has been sent an unsubscribe link.', 'wordfence'); ?></p>
<?php elseif ($state == 'bad'): ?>
<p><?php esc_html_e('Please enter an email address to unsubscribe from alerts. If this email address exists on the alert email list, it will receive a confirmation link to unsubscribe.', 'wordfence'); ?></p>
<form method="POST" action="<?php echo esc_attr(wfUtils::getSiteBaseURL() . '?_wfsf=removeAlertEmail'); ?>">
	<p><input type="email" name="email" id="email" placeholder="you@example.com"></p>
	<input type="hidden" name="resend" value="1">
	<p><input type="submit" class="btn" value="Unsubscribe"></p>
</form>
<?php elseif ($state == 'prompt'): ?>
<p><?php echo esc_html(sprintf(/* translators: Email address. */ __('Please confirm the unsubscribe request for %s.', 'wordfence'), $email)); ?></p>
<form method="POST" action="<?php echo esc_attr(wfUtils::getSiteBaseURL() . '?_wfsf=removeAlertEmail&jwt=' . $jwt); ?>">
	<input type="hidden" name="confirm" value="1">
	<p><input type="submit" class="btn" value="Unsubscribe"></p>
</form>
<?php endif; ?>

<p style="color: #999999;margin-top: 2rem;"><em><?php esc_html_e('Generated by Wordfence at ', 'wordfence'); ?><?php echo gmdate('D, j M Y G:i:s T', wfWAFUtils::normalizedTime()); ?>.<br><?php esc_html_e('Your computer\'s time: ', 'wordfence'); ?><script type="application/javascript">document.write(new Date().toUTCString());</script>.</em></p>

</body>
</html>views/common/page-tabbar.php000064400000001421150755146450012061 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Expects $tabs to be defined as an array of wfTab instances
 */
?>
<div class="wf-row wf-tab-container">
	<div class="wf-col-xs-12">
		<div class="wp-header-end"></div>
		<ul class="wf-page-tabs" role="tablist">
			<li class="wordfence-lock-icon wordfence-icon32"></li>
		<?php foreach ($tabs as $t): ?>
			<?php
			$a = $t->a;
			if (!preg_match('/^https?:\/\//i', $a)) {
				$a = '#top#' . urlencode($a);
			}
			?>
			<li class="wf-tab" id="wf-tab-<?php echo esc_attr($t->id); ?>" data-target="<?php echo esc_attr($t->id); ?>" data-page-title="<?php echo esc_attr($t->pageTitle); ?>"><a role="tab" href="<?php echo esc_attr($a); ?>"><?php echo esc_html($t->tabTitle); ?></a></li>
		<?php endforeach; ?>
		</ul>
	</div>
</div>views/common/section-title.php000064400000002462150755146450012505 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Expects $title (or $titleHTML) to be defined. If $helpLink and $helpLabel (or $helpLabelHTML) are defined, the help link will be shown.
 * 
 * @var $title string The page title.
 * @var $titleHTML string The page title as raw HTML
 * @var $helpLink string The URL for the help link.
 * @var $helpLabel string The help link's text.
 * @var $helpLabelHTML string The help link's text as raw HTML.
 */

if (isset($title) && !isset($titleHTML)) {
	$titleHTML = esc_html($title);
}

if (isset($helpLabel) && !isset($helpLabelHTML)) {
	$helpLabelHTML = esc_html($helpLabel);
}
?>
<div class="wf-section-title">
<?php if (isset($showIcon) && $showIcon): ?>
	<div class="wordfence-lock-icon wordfence-icon32 wf-hidden-xs"></div>
<?php endif; ?>
	<h2 class="wf-center-xs"<?php echo (isset($headerID) ? ' id="' . $headerID . '"' : ''); ?>><?php echo $titleHTML; ?></h2>
<?php if (isset($helpLink) && isset($helpLabelHTML)): ?>
	<span class="wf-hidden-xs"><a href="<?php echo esc_attr($helpLink); ?>" target="_blank" rel="noopener noreferrer" class="wf-help-link"><?php echo $helpLabelHTML; ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a> <i class="wf-fa wf-fa-external-link" aria-hidden="true"></i></span>
<?php endif; ?>
</div>views/common/page-help.php000064400000000576150755146450011570 0ustar00<?php if (!defined('WORDFENCE_VERSION')) { exit; } ?>
<div class="wf-help-link"><a href="<?php echo $link; ?>" target="_blank" rel="noopener noreferrer" class="wfhelp"></a><a href="<?php echo $link; ?>" target="_blank" rel="noopener noreferrer"><?php echo esc_html($title); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></div>
views/common/indeterminate-progress.php000064400000005463150755146450014420 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents an indeterminate progress indicator.
 *
 * $size may be defined.
 *
 * @var int $size Pixel size to use as the dimensions of the indicator. Defaults to 100.
 */

if (!isset($size)) { $size = 100; }
?>
<svg class="wf-indeterminate-progress" viewBox="0 0 100 100" style="width:<?php echo $size; ?>px;height:<?php echo $size; ?>px;"><path d="M23.057,68.244c-0.094,-0.003 -0.188,-0.004 -0.282,-0.004c-4.751,0 -8.66,3.909 -8.66,8.659c0,4.751 3.909,8.66 8.66,8.66c0.094,0 0.188,-0.002 0.282,-0.005c2.294,0.029 4.503,-0.885 6.105,-2.527c1.634,-1.621 2.554,-3.83 2.554,-6.132c0,-2.302 -0.92,-4.511 -2.554,-6.133c-1.604,-1.639 -3.812,-2.549 -6.105,-2.518l0,0Z" style="fill-rule:nonzero;"/><path d="M21.139,50.012c0.041,-2.559 -0.986,-5.023 -2.831,-6.797c-1.773,-1.84 -4.233,-2.862 -6.788,-2.822c-2.558,-0.043 -5.021,0.98 -6.796,2.822c-1.807,1.798 -2.824,4.244 -2.824,6.792c0,2.549 1.017,4.995 2.824,6.793c1.775,1.842 4.238,2.865 6.796,2.822c2.555,0.04 5.015,-0.983 6.788,-2.822c1.843,-1.772 2.869,-4.232 2.831,-6.788l0,0Z" style="fill-rule:nonzero;"/><path d="M76.915,27.888c2.643,-0.005 4.814,-2.181 4.814,-4.823c0,-0.003 0,-0.007 0,-0.01c0,-0.006 0,-0.013 0,-0.02c0,-2.641 -2.173,-4.814 -4.814,-4.814c-2.641,0 -4.814,2.173 -4.814,4.814c0,1.281 0.512,2.511 1.42,3.414c0.887,0.92 2.117,1.431 3.394,1.411l0,0.028Z" style="fill-rule:nonzero;"/><path d="M23.057,12.505c-2.816,-0.047 -5.529,1.076 -7.488,3.099c-2.015,1.949 -3.134,4.649 -3.09,7.451c-0.049,2.815 1.07,5.528 3.09,7.489c1.96,2.022 4.673,3.144 7.488,3.099c0.003,0 0.006,0 0.01,0c5.797,0 10.568,-4.771 10.568,-10.569c0,-0.006 0,-0.012 0,-0.019c0.052,-2.812 -1.068,-5.523 -3.089,-7.479c-1.958,-2.02 -4.667,-3.143 -7.479,-3.098l-0.01,0.027Z" style="fill-rule:nonzero;"/><path d="M92.547,45.927c-1.091,-1.104 -2.58,-1.726 -4.132,-1.726c-3.187,0 -5.81,2.623 -5.81,5.81c0,3.188 2.623,5.81 5.81,5.81c3.187,0 5.81,-2.622 5.81,-5.809c0.032,-1.535 -0.576,-3.016 -1.678,-4.085Z" style="fill-rule:nonzero;"/><path d="M76.915,70.209c-0.012,0 -0.025,0 -0.037,0c-3.714,0 -6.769,3.055 -6.769,6.769c0,3.713 3.055,6.769 6.769,6.769c3.713,0 6.769,-3.056 6.769,-6.769c0,-1.795 -0.714,-3.518 -1.983,-4.787c-1.239,-1.29 -2.96,-2.008 -4.749,-1.982l0,0Z" style="fill-rule:nonzero;"/><path d="M49.995,80.786c-0.002,0 -0.005,0 -0.007,0c-4.225,0 -7.701,3.477 -7.701,7.701c0,4.224 3.476,7.701 7.701,7.701c4.224,0 7.7,-3.477 7.7,-7.701c0,-2.062 -0.828,-4.04 -2.298,-5.487c-1.423,-1.471 -3.394,-2.289 -5.441,-2.26l0.046,0.046Z" style="fill-rule:nonzero;"/><path d="M49.995,0c-3.073,-0.055 -6.035,1.164 -8.18,3.366c-2.202,2.144 -3.421,5.107 -3.366,8.18c-0.053,3.07 1.166,6.029 3.366,8.171c4.499,4.454 11.852,4.454 16.351,0c2.201,-2.142 3.42,-5.101 3.366,-8.171c0.053,-3.074 -1.17,-6.037 -3.375,-8.18c-2.14,-2.197 -5.095,-3.416 -8.162,-3.366l0,0Z" style="fill-rule:nonzero;"/></svg>
views/common/license.php000064400000006611150755146450011344 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }

/**
 * Presents an install license prompt.
 *
 * Expects $state to be defined when applicable.
 *
 * @var string $error The error message. Optional.
 * @var string $state The state of the installation. 'prompt' is the installation prompt. 'installed' is the completion view. 'bad' is if an error is encountered.
 */

switch ($state) {
	case 'installed':
		$title = __('Wordfence License Installation Successful', 'wordfence');
		break;
	case 'bad':
		$title = __('Wordfence License Installation Failed', 'wordfence');
		break;
	case 'prompt':
		$title = __('Install Wordfence License', 'wordfence');
		break;
}
?>
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title><?php echo esc_html($title); ?></title>
	<style>
		html {
			font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
			font-size: 14px;
			line-height: 1.42857143;
			color: #333;
			background-color: #fff;
		}
		
		h1, h2, h3, h4, h45, h6 {
			font-weight: 500;
			line-height: 1.1;
		}
		
		h1 { font-size: 36px; }
		h2 { font-size: 30px; }
		h3 { font-size: 24px; }
		h4 { font-size: 18px; }
		h5 { font-size: 14px; }
		h6 { font-size: 12px; }
		
		h1, h2, h3 {
			margin-top: 20px;
			margin-bottom: 10px;
		}
		h4, h5, h6 {
			margin-top: 10px;
			margin-bottom: 10px;
		}
		
		.btn {
			background-color: #00709e;
			border: 1px solid #09486C;
			border-radius: 4px;
			box-sizing: border-box;
			color: #ffffff;
			cursor: pointer;
			display: inline-block;
			font-size: 14px;
			font-weight: normal;
			letter-spacing: normal;
			line-height: 20px;
			margin: 5px 0px;
			padding: 12px 6px;
			text-align: center;
			text-decoration: none;
			vertical-align: middle;
			white-space: nowrap;
			word-spacing: 0px;
		}
		
		hr {
			margin-top: 20px;
			margin-bottom: 20px;
			border: 0;
			border-top: 1px solid #eee
		}
		
		.btn.disabled, .btn[disabled] {
			background-color: #9f9fa0;
			border: 1px solid #7E7E7F;
			cursor: not-allowed;
			filter: alpha(opacity=65);
			-webkit-box-shadow: none;
			box-shadow: none;
			opacity: .65;
			pointer-events: none;
		}
	</style>
</head>
<body>

<h3><?php echo esc_html($title); ?></h3>

<?php if ($state == 'installed'): ?>
	<p><?php esc_html_e('The Wordfence license provided has been installed.', 'wordfence'); ?></p>
	<p><?php echo wp_kses(printf(/* translators: WordPress admin URL */ __('Return to the <a href="%s">Wordfence Admin Page</a>', 'wordfence'), network_admin_url('admin.php?page=Wordfence')), array('a'=>array('href'=>array()))); ?></p>
<?php elseif ($state == 'bad'): ?>
	<p><?php esc_html_e('The Wordfence license could not be installed.', 'wordfence'); echo ' ' . esc_html($error); ?></p>
<?php elseif ($state == 'prompt'): ?>
	<p><?php esc_html_e('Please enter the license to install.', 'wordfence'); ?></p>
	<form method="POST" action="<?php echo esc_attr(wfUtils::getSiteBaseURL() . '?_wfsf=installLicense'); ?>">
		<p><input type="text" name="license"></p>
		<?php wp_nonce_field('wf-form', 'nonce'); ?>
		<p><input type="submit" class="btn" value="Install"></p>
	</form>
<?php endif; ?>

<p style="color: #999999;margin-top: 2rem;"><em><?php esc_html_e('Generated by Wordfence at ', 'wordfence'); ?><?php echo gmdate('D, j M Y G:i:s T', wfWAFUtils::normalizedTime()); ?>.<br><?php esc_html_e('Your computer\'s time: ', 'wordfence'); ?><script type="application/javascript">document.write(new Date().toUTCString());</script>.</em></p>

</body>
</html>views/common/block-navigation-option.php000064400000002706150755146450014460 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents a block navigation option with image, title, and subtitle.
 *
 * Expects $id, $title, $img, $link, and $subtitle to be defined.
 *
 * @var string $id The element ID.
 * @var string $title The option's title.
 * @var string $img The image name. If SVG, it will be inserted as an svg element rather than img.
 * @var string $link The link for the option to go to.
 * @var string $subtitle Subtitle for the option.
 */
?>
<div id="<?php echo esc_attr($id); ?>" class="wf-block-navigation-option">
	<?php if (preg_match('/\.svg$/i', $img)) : ?>
		<?php
		$contents = file_get_contents(WORDFENCE_PATH . '/images/' . $img);
		$contents = preg_replace('/<svg\s+xmlns="[^"]*"/i', '<svg', $contents);
		$contents = preg_replace('/(<svg[^>]+)/i', '${1} class="wf-block-navigation-option-icon"', $contents);
		echo $contents;
		?>
	<?php else: ?>
	<img src="<?php echo esc_attr(wfUtils::getBaseURL() . 'images/' . $img); ?>" class="wf-block-navigation-option-icon" alt="<?php echo esc_attr($title); ?>">
	<?php endif; ?> 
	<div class="wf-block-navigation-option-content">
		<h4><a href="<?php echo esc_attr($link); ?>"><?php echo esc_html($title); ?></a></h4>
		<p><?php echo esc_html($subtitle); ?></p>
	</div>
</div>
<script type="application/javascript">
	(function($) {
		$('#<?php echo esc_attr($id); ?>').on('click', function() {
			window.location.href = $(this).find('a').attr('href');
		});
	})(jQuery);
</script>views/common/status-tooltip.php000064400000003615150755146450012736 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * @var string $id
 */
?>
<script type="text/x-jquery-template" id="<?php echo esc_attr($id); ?>-tmpl">
	<div class="wf-circle-tooltip-block">
		<div class="wf-circle-tooltip-header"><h4><?php echo esc_html($title) ?></h4></div>
		<div class="wf-circle-tooltip-body wf-flex-vertical wf-flex-align-left wf-flex-full-width">
			<?php if (isset($statusExtra) && !empty($statusExtra)) { echo $statusExtra; } ?>
			<div class="wf-flex-row">
				<div class="wf-tooltip-status-circle wf-flex-row-0">
					{{html statusCircle}}
				</div>
				<div class="wf-flex-row-1">
					<?php if (empty($statusList)): ?>
						<p><?php echo wp_kses(__('<strong>Congratulations!</strong> You\'ve optimized configurations for this feature! If you want to learn more about how this score is determined, click the link below.', 'wordfence'), array('strong'=>array())); ?></p>
						<p><a target="_blank" rel="noopener noreferrer" href="<?php echo esc_url($helpLink) ?>"><?php esc_html_e('How does Wordfence determine this?', 'wordfence') ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></p>
					<?php else: ?>
						<h4><?php esc_html_e('How do I get to 100%?', 'wordfence') ?></h4>
						<ul>
							<?php foreach ($statusList as $listItem): ?>
								<li class="wf-flex-row">
									<strong class="wf-flex-row-0"><?php echo $listItem['percentage'] * 100 ?>%</strong>
									<span class="wf-flex-row-1"><?php echo esc_html($listItem['title']) ?></span>
								</li>
							<?php endforeach ?>
						</ul>
						<p><a target="_blank" rel="noopener noreferrer" href="<?php echo esc_url($helpLink) ?>"><?php esc_html_e('How does Wordfence determine this?', 'wordfence') ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></p>
					<?php endif ?>
				</div>
			</div>
		</div>
	</div>
</script>views/common/status-detail.php000064400000003313150755146450012501 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Expects $id, $percentage (as decimal value), $title, $subtitle, $link, $linkLabel, and $statusList to be defined.
 * If $linkLabel is null, the link will be hidden.
 * $linkNewWindow can optionally be defined and defaults to false.
 * $activeColor can optionally be defined. If not defined, the color is based on $percentage.
 */

if (!isset($activeColor)) {
	$activeColor = '#fcb214';
	if ($percentage == 0) {
		$activeColor = '#ececec';
	}
	else if ($percentage <= 0.50) {
		$activeColor = '#9e0000';
	}
	else if ($percentage == 1) {
		$activeColor = '#16bc9b';
	}
}

if (!isset($linkNewWindow)) { $linkNewWindow = false; }
?>
<div id="<?php echo esc_attr($id); ?>" class="wf-status-detail">
	<?php
	echo wfView::create('common/status-circular', array(
		'id' => 'circle-' . $id,
		'diameter' => 100,
		'percentage' => $percentage,
		'inactiveColor' => '#ececec',
		'activeColor' => $activeColor,
	))->render();
	?>
	<p class="wf-status-detail-title"><?php echo esc_html($title); ?></p>
	<p class="wf-status-detail-subtitle"><?php echo esc_html($subtitle); ?></p>
	<p class="wf-status-detail-link"><?php if ($linkLabel !== null): ?><a href="<?php echo esc_attr($link); ?>"<?php echo ($linkNewWindow ? ' target="_blank" rel="noopener noreferrer"' : ''); ?>><?php echo esc_html($linkLabel); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a><?php endif; ?></p>
	<?php
	echo wfView::create('common/status-tooltip', array(
		'id' => 'tooltip-circle-' . $id,
		'title' => $statusTitle,
		'statusList' => $statusList,
		'statusExtra' => (isset($statusExtra) ? $statusExtra : ''),
		'helpLink' => $helpLink,
	))->render();
	?> 
</div>
views/common/status-critical.php000064400000003273150755146450013036 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Expects $id, $title, $subtitle, and $link, and $linkLabel to be defined.
 * If $linkLabel is null, the link will be hidden.
 * $linkNewWindow can optionally be defined and defaults to false.
 */

if (!isset($linkNewWindow)) { $linkNewWindow = false; }
?>
<div id="<?php echo esc_attr($id); ?>" class="wf-status-detail">
	<div class="wf-status-critical">
		<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 116.93 108.46"><path d="M115.82,96.14,65.76,4.37a8.33,8.33,0,0,0-3.06-3.2,8.24,8.24,0,0,0-8.47,0,8.34,8.34,0,0,0-3.07,3.2L1.11,96.14a7.78,7.78,0,0,0,.13,8.21,8.16,8.16,0,0,0,3,3,8.13,8.13,0,0,0,4.14,1.11H108.52a8.36,8.36,0,0,0,7.17-4.11,7.78,7.78,0,0,0,.13-8.21Zm-49-6.52a2.09,2.09,0,0,1-.62,1.53,2,2,0,0,1-1.46.62H52.21a2,2,0,0,1-1.46-.62,2.08,2.08,0,0,1-.62-1.53V77.24a2.08,2.08,0,0,1,.62-1.53,2,2,0,0,1,1.46-.62H64.72a2,2,0,0,1,1.47.62,2.09,2.09,0,0,1,.62,1.53V89.62Zm-.13-24.37A1.45,1.45,0,0,1,66,66.32a2.66,2.66,0,0,1-1.53.42H52.4a2.81,2.81,0,0,1-1.56-.42,1.25,1.25,0,0,1-.65-1.08L49.08,35.46a1.56,1.56,0,0,1,.65-1.37,2.52,2.52,0,0,1,1.56-.72H65.64a2.51,2.51,0,0,1,1.57.72,1.43,1.43,0,0,1,.65,1.24Zm0,0"/></svg>
	</div>
	<p class="wf-status-detail-title"><?php echo esc_html($title); ?></p>
	<p class="wf-status-detail-subtitle"><?php echo isset($subtitle)?esc_html($subtitle):$subtitleHtml; ?></p>
	<p class="wf-status-detail-link"><?php if ($linkLabel !== null): ?><a href="<?php echo esc_attr($link); ?>"<?php echo ($linkNewWindow ? ' target="_blank" rel="noopener noreferrer"' : ''); ?>><?php echo esc_html($linkLabel); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a><?php endif; ?></p>
</div>views/common/status-warning.php000064400000003234150755146450012706 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Expects $id, $title, $subtitle, and $link, and $linkLabel to be defined.
 * If $linkLabel is null, the link will be hidden.
 * $linkNewWindow can optionally be defined and defaults to false.
 */

if (!isset($linkNewWindow)) { $linkNewWindow = false; }
?>
<div id="<?php echo esc_attr($id); ?>" class="wf-status-detail">
	<div class="wf-status-warning">
		<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 116.93 108.46"><path d="M115.82,96.14,65.76,4.37a8.33,8.33,0,0,0-3.06-3.2,8.24,8.24,0,0,0-8.47,0,8.34,8.34,0,0,0-3.07,3.2L1.11,96.14a7.78,7.78,0,0,0,.13,8.21,8.16,8.16,0,0,0,3,3,8.13,8.13,0,0,0,4.14,1.11H108.52a8.36,8.36,0,0,0,7.17-4.11,7.78,7.78,0,0,0,.13-8.21Zm-49-6.52a2.09,2.09,0,0,1-.62,1.53,2,2,0,0,1-1.46.62H52.21a2,2,0,0,1-1.46-.62,2.08,2.08,0,0,1-.62-1.53V77.24a2.08,2.08,0,0,1,.62-1.53,2,2,0,0,1,1.46-.62H64.72a2,2,0,0,1,1.47.62,2.09,2.09,0,0,1,.62,1.53V89.62Zm-.13-24.37A1.45,1.45,0,0,1,66,66.32a2.66,2.66,0,0,1-1.53.42H52.4a2.81,2.81,0,0,1-1.56-.42,1.25,1.25,0,0,1-.65-1.08L49.08,35.46a1.56,1.56,0,0,1,.65-1.37,2.52,2.52,0,0,1,1.56-.72H65.64a2.51,2.51,0,0,1,1.57.72,1.43,1.43,0,0,1,.65,1.24Zm0,0"/></svg>
	</div>
	<p class="wf-status-detail-title"><?php echo esc_html($title); ?></p>
	<p class="wf-status-detail-subtitle"><?php echo esc_html($subtitle); ?></p>
	<p class="wf-status-detail-link"><?php if ($linkLabel !== null): ?><a href="<?php echo esc_attr($link); ?>"<?php echo ($linkNewWindow ? ' target="_blank" rel="noopener noreferrer"' : ''); ?>><?php echo esc_html($linkLabel); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a><?php endif; ?></p>
</div>
views/common/page-fixed-tabbar.php000064400000003211150755146450013155 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Expects $tabs to be defined as an array of wfTab instances
 */
?>
<div class="wf-row">
	<div class="wf-col-xs-12">
		<div class="wp-header-end"></div>
		<ul class="wf-hidden-xs wf-page-fixed-tabs" role="tablist">
			<li class="wordfence-lock-icon wordfence-icon32"></li>
			<?php foreach ($tabs as $t): ?>
				<?php
				$a = $t->a;
				if (!preg_match('/^https?:\/\//i', $a)) {
					$a = '#top#' . urlencode($a);
				}
				?>
				<li class="wf-tab<?php if ($t->active) { echo ' wf-active'; } ?>" id="wf-tab-<?php echo esc_attr($t->id); ?>" data-target="<?php echo esc_attr($t->id); ?>" data-page-title="<?php echo esc_attr($t->pageTitle); ?>"><a role="tab" href="<?php echo esc_attr($a); ?>" aria-selected="<?php echo json_encode((bool)$t->active) ?>"><?php echo esc_html($t->tabTitle); ?></a></li>
			<?php endforeach; ?>
		</ul>
		<ul class="wf-nav wf-nav-pills wf-visible-xs">
			<li class="wf-navbar-brand wordfence-lock-icon wordfence-icon32"></li>
			<li class="wf-dropdown">
				<a href="#" id="wordfenceTopTabsMobile" class="wf-dropdown-toggle wf-mobile-dropdown" data-toggle="wf-dropdown" role="button"><span id="wordfenceTopTabsMobileTitle">Go to</span> <span class="wf-caret"></span></a>
				<ul class="wf-dropdown-menu">
					<?php foreach ($tabs as $t): ?>
						<?php
						$a = $t->a;
						if (!preg_match('/^https?:\/\//i', $a)) {
							$a = '#top#' . urlencode($a);
						}
						?>
						<li id="wf-tab-mobile-<?php echo esc_attr($t->id); ?>"><a href="<?php echo esc_attr($a); ?>"><?php echo esc_html($t->tabTitle); ?></a></li>
					<?php endforeach; ?>
				</ul>
			</li>
		</ul>
	</div>
</div>views/common/section-subtitle.php000064400000002502150755146450013212 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Expects $title (or $titleHTML) to be defined. If $helpLink and $helpLabel (or $helpLabelHTML) are defined, the help link will be shown.
 *
 * @var $title string The page title.
 * @var $titleHTML string The page title as raw HTML
 * @var $helpLink string The URL for the help link.
 * @var $helpLabel string The help link's text.
 * @var $helpLabelHTML string The help link's text as raw HTML.
 */

if (isset($title) && !isset($titleHTML)) {
	$titleHTML = esc_html($title);
}

if (isset($helpLabel) && !isset($helpLabelHTML)) {
	$helpLabelHTML = esc_html($helpLabel);
}
?>
<div class="wf-section-title wf-add-top">
	<?php if (isset($showIcon) && $showIcon): ?>
		<div class="wordfence-lock-icon wordfence-icon32 wf-hidden-xs"></div>
	<?php endif; ?>
	<h3 class="wf-center-xs"<?php echo (isset($headerID) ? ' id="' . $headerID . '"' : ''); ?>><?php echo $titleHTML; ?></h3>
	<?php if (isset($helpLink) && isset($helpLabelHTML)): ?>
		<span class="wf-hidden-xs"><a href="<?php echo esc_attr($helpLink); ?>" target="_blank" rel="noopener noreferrer" class="wf-help-link"><?php echo $helpLabelHTML; ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a> <i class="wf-fa wf-fa-external-link" aria-hidden="true"></i></span>
	<?php endif; ?>
</div>views/common/status-circular.php000064400000001637150755146450013052 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/** 
 * Expects $id, $diameter (in pixels), $percentage (as decimal value), $inactiveColor, and $activeColor to be defined. 
 * $animateIn is optional and defaults to true.
 * $strokeWidth is option and defaults to 3 (pixels).
 * 
 * @var string $id
 */

if (!isset($animateIn)) { $animateIn = true; }
if (!isset($strokeWidth)) { $strokeWidth = 3; }

$strokeWidth = intval($strokeWidth);
$diameter = intval($diameter);

?>
<div id="<?php echo esc_attr($id); ?>" class="wf-status-circular"></div>
<script type="application/javascript">
	(function($) {
		$('#<?php echo esc_attr($id); ?>').wfCircularProgress({
			endPercent: <?php echo $percentage; ?>,
			color: '<?php echo esc_attr($activeColor); ?>',
			inactiveColor: '<?php echo esc_attr($inactiveColor); ?>',
			strokeWidth: <?php echo $strokeWidth; ?>,
			diameter: <?php echo $diameter; ?>,
		});
	})(jQuery);
</script>views/common/modal-prompt.php000064400000006445150755146450012342 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents a modal prompt.
 *
 * Expects $title (or $titleHTML), $message (or $messageHTML), and $primaryButton to be defined. $secondaryButtons may also be defined.
 *
 * @var string $title The title for the prompt.
 * @var string $titleHTML The raw HTML title for the prompt. This supersedes $title.
 * @var string $message The message for the prompt.
 * @var string $messageHTML The raw HTML message for the prompt. This supersedes $message.
 * @var array $primaryButton The parameters for the primary button. The array is in the format array('id' => <element id>, 'label' => <button text>, 'link' => <href value>)
 * @var array $secondaryButtons The parameters for any secondary buttons. It is an array of arrays in the format array('id' => <element id>, 'label' => <button text>, 'link' => <href value>, 'target' => <target value, optional>, 'rel' => <rel value, optional>). The ordering of entries is the right-to-left order the buttons will be displayed.
 * @var string $progressIndicator The ID for a progress indicator to the left of all buttons. Optional.
 */

if (!isset($titleHTML)) {
	$titleHTML = esc_html($title);
}

if (!isset($messageHTML)) {
	$messageHTML = esc_html($message);
}

if (!isset($secondaryButtons)) {
	$secondaryButtons = array();
}
$secondaryButtons = array_reverse($secondaryButtons);
?>
<div class="wf-modal">
	<div class="wf-modal-header">
		<div class="wf-modal-header-content">
			<div class="wf-modal-title">
				<strong><?php echo $titleHTML; ?></strong>
			</div>
		</div>
		<div class="wf-modal-header-action">
			<div class="wf-padding-add-left-small wf-modal-header-action-close"><a href="#" onclick="WFAD.colorboxClose(); return false" role="button"><i class="wf-fa wf-fa-times-circle" aria-hidden="true"></i></a></div>
		</div>
	</div>
	<div class="wf-modal-content">
		<?php echo $messageHTML; ?>
	</div>
	<div class="wf-modal-footer">
		<ul class="wf-flex-horizontal wf-flex-align-right wf-full-width">
		<?php if (isset($progressIndicator) && $progressIndicator): ?>
			<li class="wf-padding-add-left-small"><img src="<?php echo esc_attr(wfUtils::getBaseURL() . '/images/loading_large.gif'); ?>" alt="Loading" width="32" height="32" id="<?php echo esc_attr($progressIndicator); ?>" style="display: none;"></li>
		<?php endif; ?>
		<?php foreach ($secondaryButtons as $button): ?>
			<li class="wf-padding-add-left-small"><a href="<?php echo esc_attr($button['link']); ?>" class="wf-btn <?php echo isset($button['type']) ? $button['type'] : 'wf-btn-default'; ?> wf-btn-callout-subtle" id="<?php echo esc_attr($button['id']); ?>"<?php if (isset($button['target'])) { echo ' target="' . esc_attr($button['target']) . '"'; } ?><?php if (isset($button['rel'])) { echo ' rel="' . esc_attr($button['rel']) . '"'; } ?>><?php echo isset($button['labelHTML']) ? $button['labelHTML'] : esc_html($button['label']); ?></a></li>
		<?php endforeach; ?>
			<li class="wf-padding-add-left-small"><a href="<?php echo esc_attr($primaryButton['link']); ?>" class="wf-btn <?php echo isset($primaryButton['type']) ? $primaryButton['type'] : 'wf-btn-primary'; ?> wf-btn-callout-subtle" id="<?php echo esc_attr($primaryButton['id']); ?>"><?php echo isset($primaryButton['labelHTML']) ? $primaryButton['labelHTML'] : esc_html($primaryButton['label']); ?></a></li>
		</ul>
	</div>
</div>views/offboarding/deactivation-prompt.php000064400000020074150755146450014702 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) exit;

$selectedOptionKey = $deactivationOption === null ? null : $deactivationOption->getKey();
?>
<div style="display: none;">
	<div class="wf-modal wf-deactivate-modal" id="wf-offboarding-delete-prompt-template">
		<div class="wf-modal-header">
			<div class="wf-modal-header-content">
				<div class="wf-modal-title"><strong><?php esc_html_e('Deactivate Wordfence', 'wordfence') ?></strong></div>
			</div>
		</div>
		<div class="wf-modal-content">
			<p><?php esc_html_e('You are about to deactivate Wordfence. Would you like to delete its data or keep it in place?', 'wordfence') ?></p>
			<div class="wf-radio-group">
				<?php foreach (wfDeactivationOption::getAll() as $option): ?>
					<?php
						$inputId = 'wf-deactivate-option-' . $option->getKey();
					?>
					<div class="wf-radio-option">
						<input type="radio" data-name="wf-deactivate-option" value="<?php echo esc_attr($option->getKey()) ?>" class="wf-templated" data-id="<?php echo esc_attr($inputId) ?>"<?php if ($option->getKey() === $selectedOptionKey): ?> checked<?php endif ?>>
						<label for="<?php echo esc_attr($inputId) ?>"><?php echo esc_html($option->getLabel()) ?></label>
					</div>
				<?php endforeach ?>
			</div>
		</div>
		<div class="wf-modal-footer">
			<button data-id="wf-deactivate-delete" class="wf-btn wf-btn-danger wf-deactivate-confirm wf-templated"><?php esc_html_e('Deactivate and Delete Data', 'wordfence') ?></button>
			<button data-id="wf-deactivate-retain" class="wf-btn wf-btn-primary wf-deactivate-confirm wf-templated"><?php esc_html_e('Deactivate', 'wordfence') ?></button>
			<button data-id="wf-deactivate-cancel" class="wf-btn wf-btn-default wf-templated"><?php esc_html_e('Cancel', 'wordfence') ?></button>
		</div>
	</div>
	<?php if ($wafOptimized): ?>
		<div class="wf-modal" id="wf-offboarding-waf-optimized-template">
			<div class="wf-modal-header">
				<div class="wf-modal-header-content">
					<div class="wf-modal-title"><strong><?php esc_html_e('Extended Protection Still Enabled', 'wordfence') ?></strong></div>
				</div>
			</div>
			<div class="wf-modal-content">
				<p><?php esc_html_e('The Wordfence firewall is still optimized. You should remove the firewall\'s extended protection before deleting to avoid PHP errors if some firewall files cannot be removed, or if PHP\'s "auto_prepend_file" setting is cached.', 'wordfence') ?></p>
				<p><a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_FIREWALL_REMOVE_OPTIMIZATION) ?>" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Learn More', 'wordfence') ?></a></p>
			</div>
			<div class="wf-modal-footer">
				<a class="wf-btn wf-btn-danger" href="<?php echo esc_attr(network_admin_url('admin.php?page=WordfenceWAF&subpage=waf_options&wf_deactivate=true#removeAutoPrepend')) ?>"><?php esc_html_e('Remove Extended Protection', 'wordfence') ?></a>
				<button onclick="jQuery.wfcolorbox.close(); return false;" class="wf-btn wf-btn-default"><?php esc_html_e('Cancel', 'wordfence') ?></a>
			</div>
		</div>
	<?php endif ?>
	<div class="wf-modal" id="wf-offboarding-delete-confirm-template">
		<div class="wf-modal-header">
			<div class="wf-modal-header-content">
				<div class="wf-modal-title"><strong><?php esc_html_e('Delete Wordfence Data?', 'wordfence') ?></strong></div>
			</div>
		</div>
		<div class="wf-modal-content"><span class="message"><?php esc_html_e('Are you sure you want to delete the selected Wordfence data? If you reactivate Wordfence later, deleted settings and history cannot be recovered.', 'wordfence') ?></span></div>
		<div class="wf-modal-footer">
			<button class="wf-btn wf-btn-danger wf-deactivate-delete-confirm"><?php esc_html_e('Deactivate and Delete Data', 'wordfence') ?></button>
			<button class="wf-btn wf-btn-default wf-deactivate-delete-cancel"><?php esc_html_e('Cancel', 'wordfence') ?></a>
		</div>
	</div>
	<div class="wf-modal" id="wf-offboarding-delete-error-template">
		<div class="wf-modal-header">
			<div class="wf-modal-header-content">
				<div class="wf-modal-title"><strong><?php esc_html_e('Error', 'wordfence') ?></strong></div>
			</div>
		</div>
		<div class="wf-modal-content"><span class="message"><?php esc_html_e('An unexpected error occurred while attempting to configure Wordfence to delete its data on deactivation.', 'wordfence') ?></span></div>
		<div class="wf-modal-footer wf-modal-footer-center">
			<button onclick="jQuery.wfcolorbox.close(); return false;" class="wf-btn wf-btn-primary"><?php esc_html_e('Close', 'wordfence') ?></a>
		</div>
	</div>
</div>
<script type="text/javascript">
	(function($) {

		var wafOptimized = <?php echo json_encode($wafOptimized); ?>;

		var stateController = new (function() {

			var processing = false;

			function applyState() {
				var modal = $("#wfcolorbox .wf-deactivate-modal");
				buttons = modal.find('button');
				options = modal.find('input[type=radio]');
				[buttons, options].forEach(function(element) {
					element.prop('disabled', processing).toggleClass('disabled', processing);
				});
			}

			function setProcessing(state) {
				processing = state;
				applyState();
				return true;
			}

			this.startProcessing = function() {
				if (processing)
					return false;
				return setProcessing(true);
			};

			this.endProcessing = function() {
				if (!processing)
					return false;
				return setProcessing(false);
			};

			this.refresh = function() {
				applyState();
			}

		})();

		function updateButtons() {
			var retain = $('input[name=wf-deactivate-option]:checked').val() === 'retain';
			$('#wf-deactivate-retain').toggle(retain);
			$('#wf-deactivate-delete').toggle(!retain);
		}

		function replaceTemplatedAttribute(element, key) {
			var value = element.data(key);
			if (typeof value !== 'undefined')
				element.attr(key, value);
		}

		function showOffboardingModal(id) {
			var content = $("#wf-offboarding-" + id + "-template").clone().attr('id', null);
			content.find('.wf-templated').each(function() {
				var element = $(this);
				['id', 'name'].forEach(function(key) {
					replaceTemplatedAttribute(element, key);
				});
			});
			$.wfcolorbox({
				width: (wordfenceExt.isSmallScreen ? '300px' : '500px'),
				html: content[0].outerHTML,
				overlayClose: false,
				closeButton: false,
				className: 'wf-modal',
				onComplete: function() {
					updateButtons();
					stateController.refresh();
				}
			});
		}

		function deactivate() {
			$.wfcolorbox.close();
			$(document).off('click.wf-deactivate');
			$('#deactivate-wordfence').get(0).click();
		}

		function showDeletionPrompt() {
			showOffboardingModal('delete-prompt');
		}

		$(document)
			.on('click', '.wf-deactivate-confirm', function (event) {
				if (!stateController.startProcessing())
					return;
				var option = $('input[name=wf-deactivate-option]:checked').val();
				function fail() {
					showOffboardingModal('delete-error');
					stateController.endProcessing();
				}
				wordfenceExt.ajax(
					'wordfence_setDeactivationOption',
					{ option: option},
					function(data) {
						if (data.success) {
							if (option !== <?php echo json_encode(wfDeactivationOption::RETAIN); ?>) {
								if (wafOptimized) {
									showOffboardingModal('waf-optimized');
								}
								else {
									showOffboardingModal('delete-confirm');
								}
								stateController.endProcessing();
							}
							else {
								deactivate();
							}
							stateController.endProcessing();
						}
						else {
							fail();
						}
					},
					fail
				);
			})
			.on('click', '.wf-deactivate-delete-confirm', function (event) {
				deactivate();
			})
			.on('click', '.wf-deactivate-delete-cancel', function (event) {
				showDeletionPrompt();
			})
			.on('click', '#wf-deactivate-cancel', function (event) {
				$.wfcolorbox.close();
			})
			.on('click.wf-deactivate', '#deactivate-wordfence', function (event) {
				event.preventDefault();
				showDeletionPrompt();
			})
			.on('change', 'input[name=wf-deactivate-option]', function(event) {
				updateButtons();
			});

		<?php if ($deactivate): ?>
			$(document).ready(function() {
				$('#deactivate-wordfence').trigger('click');
			});
		<?php endif ?>

	})(jQuery);
</script>views/unsupported-php/admin-message.php000064400000002016150755146450014314 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents the unsupported PHP version  modal.
 */

require(dirname(__FILE__) . '/../../lib/wfVersionSupport.php');
/**
 * @var string $wfPHPDeprecatingVersion
 * @var string $wfPHPMinimumVersion
 */
?>
<div style="padding: 10px; border: 2px solid #00709e; background-color: #fff; margin: 20px 20px 10px 0px; color: #00709e">
	<img style="display: block; float: left; margin: 0 10px 0 0" src="<?php echo plugins_url('', WORDFENCE_FCPATH) . '/' ?>images/wordfence-logo.svg" alt="" width="35" height="35">
	<p style="margin: 10px"><?php echo esc_html(sprintf(
		/* translators: 1. PHP version. 2. Wordfence version. 3. Minimum PHP version. */
			__('You are running PHP version %1$s that is not supported by Wordfence %2$s. Wordfence features will not be available until PHP has been upgraded. We recommend using PHP version 8.1, but Wordfence will run on PHP version %3$s at a minimum.', 'wordfence'),
			PHP_VERSION,
			WORDFENCE_VERSION,
		  $wfPHPMinimumVersion
		)) ?></p>
</div>views/dashboard/options-group-license.php000064400000021673150755146450014633 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents the License group.
 *
 * Expects $stateKey.
 *
 * @var string $stateKey The key under which the collapse state is stored.
 * @var bool $collapseable If defined, specifies whether or not this grouping can be collapsed. Defaults to true.
 */

if (!isset($collapseable)) {
	$collapseable = true;
}
?>
<div class="wf-row">
	<div class="wf-col-xs-12">
		<div class="wf-block<?php if (!$collapseable) { echo ' wf-always-active'; } else { echo (wfPersistenceController::shared()->isActive($stateKey) ? ' wf-active' : ''); } ?>" data-persistence-key="<?php echo esc_attr($stateKey); ?>">
			<div class="wf-block-header">
				<div class="wf-block-header-content">
					<div class="wf-block-title">
						<strong><?php esc_html_e('Wordfence License', 'wordfence'); ?></strong>
					</div>
					<?php if ($collapseable): ?><div class="wf-block-header-action"><div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive($stateKey) ? 'true' : 'false'); ?>" tabindex="0"></div></div><?php endif; ?>
				</div>
			</div>
			<div class="wf-block-content">
				<ul class="wf-block-list">
					<li>
						<ul class="wf-flex-vertical wf-flex-full-width wf-add-top wf-add-bottom">
							<li><strong><?php esc_html_e('Your Wordfence License', 'wordfence'); ?></strong></li>
							<li>
								<ul id="wf-option-apiKey" class="wf-option wf-option-text" data-text-option="apiKey" data-original-text-value="<?php echo esc_attr(wfConfig::get('apiKey')); ?>">
									<li class="wf-option-title">
										<?php esc_html_e('License Key', 'wordfence'); ?> <a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_DASHBOARD_OPTION_API_KEY); ?>"  target="_blank" rel="noopener noreferrer" class="wf-inline-help"><i class="wf-fa wf-fa-question-circle-o" aria-hidden="true"></i><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>
									</li>
									<li class="wf-option-text wf-option-full-width wf-no-right">
										<input type="text" value="<?php echo esc_attr(wfConfig::get('apiKey')); ?>" id="wf-license-input">
									</li>
								</ul>
							</li>
							<li>
								<ul class="wf-flex-horizontal wf-flex-vertical-xs wf-flex-full-width">
									<li><strong><?php esc_html_e('License Status:', 'wordfence'); ?></strong>
										<?php
										if (wfLicense::current()->hasConflict()) {
											esc_html_e('License already in use', 'wordfence');
										}
										else if (wfLicense::current()->isExpired()) {
											echo esc_html(sprintf(__('%s License Expired', 'wordfence'), wfLicense::current()->getTypeLabel(false)));
										}
										else if (wfLicense::current()->getKeyType() === wfLicense::KEY_TYPE_PAID_DELETED) {
											esc_html_e('Premium License Deactivated', 'wordfence');
										}
										else {
											echo esc_html(sprintf(__('%s License Active', 'wordfence'), wfLicense::current()->getTypeLabel()));
										}
										?>
									</li>
									<li class="wf-right wf-flex-vertical-xs wf-flex-align-left wf-left-xs wf-padding-add-top-xs" id="wf-license-controls">
										<?php if (wfLicense::current()->isAtLeastPremium() || wfLicense::current()->hasConflict()): ?>
											<a href="#" class="wf-downgrade-license" role="button"><?php esc_html_e('Reset site to a free license', 'wordfence'); ?></a>
										<?php endif ?>
										<?php if (wfLicense::current()->hasConflict()): ?>
											<a href="https://www.wordfence.com/gnl1optMngKysReset/licenses/" target="_blank" rel="noopener noreferrer" class="wf-btn wf-btn-primary wf-btn-callout-subtle"><?php esc_html_e('Reset License', 'wordfence') ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>
										<?php elseif (wfLicense::current()->isPaidAndCurrent()): ?>
											<a href="https://www.wordfence.com/gnl1optMngKys/licenses/" target="_blank" rel="noopener noreferrer" class=""><?php echo esc_html_e('Click here to manage your Wordfence licenses', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>
										<?php else: ?>
											<?php if (wfLicense::current()->getKeyType() === wfLicense::KEY_TYPE_PAID_DELETED): ?>
												<a href="#" class="wf-btn wf-btn-default wf-btn-callout-subtle wf-downgrade-license" role="button"><?php esc_html_e('Remove Invalid License', 'wordfence'); ?></a>&nbsp;&nbsp;
											<?php endif ?>
											<a href="https://www.wordfence.com/gnl1optUpgrade/products/pricing/" target="_blank" rel="noopener noreferrer" class="wf-btn wf-btn-primary wf-btn-callout-subtle"><?php esc_html_e('Upgrade to Premium', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>
										<?php endif ?>
										<a href="#" class="wf-btn wf-btn-primary wf-btn-callout-subtle" style="display: none;" id="wf-install-license" role="button"><?php esc_html_e('Install License', 'wordfence'); ?></a>
									</li>
								</ul>
								
								<script type="application/javascript">
									(function($) {
										$(function() {
											$('#wf-install-license').on('click', function(e) {
												e.preventDefault();
												e.stopPropagation();

												WFAD.setOption(
													'apiKey',
													$('#wf-license-input').val(),
													function() {
														delete WFAD.pendingChanges['apiKey'];
														WFAD.updatePendingChanges();
														window.location.reload(true);
													},
													function() {
														window.location.reload();
													},
													true
												);
											});

											$('#wf-license-input').on('focus', function() {
												var field = $(this);
												setTimeout(function() {
													field.select();
												}, 100);
											}).on('change paste keyup', function() {
												setTimeout(function() {
													var originalKey = $('#wf-license-input').closest('.wf-option').data('originalTextValue');
													if (originalKey != $('#wf-license-input').val()) {
														$('#wf-license-controls a').hide();
														$('#wf-install-license').show();
													}
												}, 100);
											});

											$(window).on('wfOptionsReset', function() {
												$('#wf-license-controls a').show();
												$('#wf-install-license').hide();
											});

											$('.wf-downgrade-license').on('click', function(e) {
												e.preventDefault();
												e.stopPropagation();

												var prompt = $('#wfTmpl_downgradePrompt').tmpl();
												var promptHTML = $("<div />").append(prompt).html();
												WFAD.colorboxHTML('400px', promptHTML, {overlayClose: false, closeButton: false, className: 'wf-modal', onComplete: function() {
													$('#wf-downgrade-prompt-cancel').on('click', function(e) {
														e.preventDefault();
														e.stopPropagation();

														WFAD.colorboxClose();
													});

													$('#wf-downgrade-prompt-downgrade').on('click', function(e) {
														e.preventDefault();
														e.stopPropagation();

														WFAD.ajax('wordfence_downgradeLicense', {}, function(res) {
															window.location.reload(true);
														});
													});
												}});
											});
										});
									})(jQuery);
								</script>
							</li>
							<?php if (wfLicense::current()->getKeyType() === wfLicense::KEY_TYPE_PAID_DELETED): ?>
							<li>
								<p><?php echo wp_kses(__('This was a premium license key, but it is no longer valid, so premium features are disabled. You can either remove the invalid key and continue using Wordfence\'s free features, or enter a new premium key to upgrade. If you have questions, contact <a href="mailto:billing@wordfence.com">billing@wordfence.com</a>.', 'wordfence'), array('a' => array('href' => array()))) ?></p>
							</li>
							<?php endif ?>
						</ul>
					</li>
				</ul>
			</div>
		</div>
	</div>
</div> <!-- end license options -->
<script type="text/x-jquery-template" id="wfTmpl_downgradePrompt">
	<?php
	echo wfView::create('common/modal-prompt', array(
		'title' => __('Confirm Reset', 'wordfence'),
		'messageHTML' => wp_kses(__('<p>Are you sure you want to reset this site\'s Wordfence License? This will disable Premium features and return the site to the free version of Wordfence. Your settings will still be retained when reinstalling a license.</p><p>If autorenew is enabled for the current license, the license will renew at the next expiration date. If you would like to turn renewal off or assign the license to another site, log into wordfence.com to change it.</p>', 'wordfence'), array('p'=>array())),
		'primaryButton' => array('id' => 'wf-downgrade-prompt-cancel', 'label' => __('Cancel', 'wordfence'), 'link' => '#'),
		'secondaryButtons' => array(array('id' => 'wf-downgrade-prompt-downgrade', 'label' => __('Reset', 'wordfence'), 'link' => '#')),
	))->render();
	?>
</script>views/dashboard/options-group-view-customization.php000064400000004537150755146450017071 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents the View Customization group.
 *
 * Expects $stateKey.
 *
 * @var string $stateKey The key under which the collapse state is stored.
 * @var bool $collapseable If defined, specifies whether or not this grouping can be collapsed. Defaults to true.
 */

if (!isset($collapseable)) {
	$collapseable = true;
}
?>
<div class="wf-row">
	<div class="wf-col-xs-12">
		<div class="wf-block<?php if (!$collapseable) { echo ' wf-always-active'; } else { echo (wfPersistenceController::shared()->isActive($stateKey) ? ' wf-active' : ''); } ?>" data-persistence-key="<?php echo esc_attr($stateKey); ?>">
			<div class="wf-block-header">
				<div class="wf-block-header-content">
					<div class="wf-block-title">
						<strong><?php esc_html_e('View Customization', 'wordfence'); ?></strong>
					</div>
					<?php if ($collapseable): ?><div class="wf-block-header-action"><div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive($stateKey) ? 'true' : 'false'); ?>" tabindex="0"></div></div><?php endif; ?>
				</div>
			</div>
			<div class="wf-block-content">
				<ul class="wf-block-list">
					<li>
						<?php
						echo wfView::create('options/option-toggled', array(
							'optionName' => 'displayTopLevelOptions',
							'enabledValue' => 1,
							'disabledValue' => 0,
							'value' => wfConfig::get('displayTopLevelOptions') ? 1 : 0,
							'title' => __('Display "All Options" menu item', 'wordfence'),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-toggled', array(
							'optionName' => 'displayTopLevelBlocking',
							'enabledValue' => 1,
							'disabledValue' => 0,
							'value' => wfConfig::get('displayTopLevelBlocking') ? 1 : 0,
							'title' => __('Display "Blocking" menu item', 'wordfence'),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-toggled', array(
							'optionName' => 'displayTopLevelLiveTraffic',
							'enabledValue' => 1,
							'disabledValue' => 0,
							'value' => wfConfig::get('displayTopLevelLiveTraffic') ? 1 : 0,
							'title' => __('Display "Live Traffic" menu item', 'wordfence'),
						))->render();
						?>
					</li>
				</ul>
			</div>
		</div>
	</div>
</div> <!-- end custom scan options -->views/dashboard/global-status.php000064400000001152150755146450013135 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents the global status.
 *
 * Expects $firewall, $scanner, and $dashboard to be defined.
 *
 * @var wfFirewall $firewall The firewall state.
 * @var wfScanner $scanner The scanner state.
 * @var wfDashboard $dashboard Dashboard statistics.
 */
?>
<ul class="wf-block-list wf-block-list-horizontal">
	<li id="wfStatusTourMarker">
		<div class="wf-block-labeled-value wf-global-status wf-global-status-full-enabled">
			<div class="wf-block-labeled-value-label"><?php esc_html_e('Wordfence Protection Activated', 'wordfence'); ?></div>
		</div>
	</li>
</ul>
views/dashboard/options-group-dashboard.php000064400000011226150755146450015131 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents the Dashboard Notification Options group.
 *
 * Expects $stateKey.
 *
 * @var string $stateKey The key under which the collapse state is stored.
 * @var bool $collapseable If defined, specifies whether or not this grouping can be collapsed. Defaults to true.
 */

if (!isset($collapseable)) {
	$collapseable = true;
}
?>
<div class="wf-row">
	<div class="wf-col-xs-12">
		<div class="wf-block<?php if (!$collapseable) { echo ' wf-always-active'; } else { echo (wfPersistenceController::shared()->isActive($stateKey) ? ' wf-active' : ''); } ?>" data-persistence-key="<?php echo esc_attr($stateKey); ?>">
			<div class="wf-block-header">
				<div class="wf-block-header-content">
					<div class="wf-block-title">
						<strong><?php esc_html_e('Dashboard Notification Options', 'wordfence'); ?></strong>
					</div>
					<?php if ($collapseable): ?><div class="wf-block-header-action"><div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive($stateKey) ? 'true' : 'false'); ?>" tabindex="0"></div></div><?php endif; ?>
				</div>
			</div>
			<div class="wf-block-content">
				<ul class="wf-block-list">
					<li>
						<?php
						echo wfView::create('options/option-toggled', array(
							'optionName' => 'notification_updatesNeeded',
							'enabledValue' => 1,
							'disabledValue' => 0,
							'value' => wfConfig::get('notification_updatesNeeded') ? 1 : 0,
							'title' => __('Updates Needed (Plugin, Theme, or Core)', 'wordfence'),
						))->render();
						?>
					</li>
					<?php if (wfConfig::p()): ?>
						<li>
							<?php
							echo wfView::create('options/option-toggled', array(
								'optionName' => 'notification_securityAlerts',
								'enabledValue' => 1,
								'disabledValue' => 0,
								'value' => wfConfig::get('notification_securityAlerts') ? 1 : 0,
								'title' => __('Security Alerts', 'wordfence'),
								'premium' => true,
							))->render();
							?>
						</li>
						<li>
							<?php
							echo wfView::create('options/option-toggled', array(
								'optionName' => 'notification_promotions',
								'enabledValue' => 1,
								'disabledValue' => 0,
								'value' => wfConfig::get('notification_promotions') ? 1 : 0,
								'title' => __('Promotions', 'wordfence'),
								'premium' => true,
							))->render();
							?>
						</li>
						<li>
							<?php
							echo wfView::create('options/option-toggled', array(
								'optionName' => 'notification_blogHighlights',
								'enabledValue' => 1,
								'disabledValue' => 0,
								'value' => wfConfig::get('notification_blogHighlights') ? 1 : 0,
								'title' => __('Blog Highlights', 'wordfence'),
								'premium' => true,
							))->render();
							?>
						</li>
						<li>
							<?php
							echo wfView::create('options/option-toggled', array(
								'optionName' => 'notification_productUpdates',
								'enabledValue' => 1,
								'disabledValue' => 0,
								'value' => wfConfig::get('notification_productUpdates') ? 1 : 0,
								'title' => __('Product Updates', 'wordfence'),
								'premium' => true,
							))->render();
							?>
						</li>
					<?php endif; ?>
					<li>
						<?php
						echo wfView::create('options/option-toggled', array(
							'optionName' => 'notification_scanStatus',
							'enabledValue' => 1,
							'disabledValue' => 0,
							'value' => wfConfig::get('notification_scanStatus') ? 1 : 0,
							'title' => __('Scan Status', 'wordfence'),
						))->render();
						?>
					</li>
					<?php if (!wfConfig::p()): ?>
						<li>
							<ul class="wf-option">
								<li class="wf-option-spacer"></li>
								<li class="wf-flex-vertical wf-flex-align-left">
									<p><?php esc_html_e('Dashboard notifications will also be displayed for Security Alerts, Promotions, Blog Highlights, and Product Updates. These notifications can be disabled by upgrading to a premium license.', 'wordfence'); ?></p>
									<p class="wf-no-top"><a class="wf-btn wf-btn-primary wf-btn-callout-subtle" href="https://www.wordfence.com/gnl1dashboardUpgrade/wordfence-signup/#premium-order-form" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Upgrade to Premium', 'wordfence'); ?></a>&nbsp;&nbsp;<a class="wf-btn wf-btn-callout-subtle wf-btn-default" href="https://www.wordfence.com/gnl1dashboardLearn/wordfence-signup/" target="_blank" rel="noopener noreferrer"><?php esc_html_e('Learn More', 'wordfence'); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></p>
								</li>
							</ul>
						</li>
					<?php endif; ?>
				</ul>
			</div>
		</div>
	</div>
</div> <!-- end dashboard options -->views/dashboard/options-group-alert.php000064400000016031150755146450014310 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents the Email Alert Preferences group.
 *
 * Expects $stateKey.
 *
 * @var string $stateKey The key under which the collapse state is stored.
 * @var bool $collapseable If defined, specifies whether or not this grouping can be collapsed. Defaults to true.
 */

if (!isset($collapseable)) {
	$collapseable = true;
}
?>
<div class="wf-row">
	<div class="wf-col-xs-12">
		<div class="wf-block<?php if (!$collapseable) { echo ' wf-always-active'; } else { echo (wfPersistenceController::shared()->isActive($stateKey) ? ' wf-active' : ''); } ?>" data-persistence-key="<?php echo esc_attr($stateKey); ?>">
			<div class="wf-block-header">
				<div class="wf-block-header-content">
					<div class="wf-block-title">
						<strong><?php esc_html_e('Email Alert Preferences', 'wordfence'); ?></strong>
					</div>
					<?php if ($collapseable): ?><div class="wf-block-header-action"><div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive($stateKey) ? 'true' : 'false'); ?>" tabindex="0"></div></div><?php endif; ?>
				</div>
			</div>
			<div class="wf-block-content">
				<ul class="wf-block-list">
					<li>
						<?php
						echo wfView::create('options/option-toggled', array(
							'optionName' => 'alertOn_update',
							'enabledValue' => 1,
							'disabledValue' => 0,
							'value' => wfConfig::get('alertOn_update') ? 1 : 0,
							'title' => __('Email me when Wordfence is automatically updated', 'wordfence'),
							'subtitle' => __('If you have automatic updates enabled (see above), you\'ll get an email when an update occurs.', 'wordfence'),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-toggled', array(
							'optionName' => 'alertOn_wordfenceDeactivated',
							'enabledValue' => 1,
							'disabledValue' => 0,
							'value' => wfConfig::get('alertOn_wordfenceDeactivated') ? 1 : 0,
							'title' => __('Email me if Wordfence is deactivated', 'wordfence'),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-toggled', array(
							'optionName' => 'alertOn_wafDeactivated',
							'enabledValue' => 1,
							'disabledValue' => 0,
							'value' => wfConfig::get('alertOn_wafDeactivated') ? 1 : 0,
							'title' => __('Email me if the Wordfence Web Application Firewall is turned off', 'wordfence'),
						))->render();
						?>
					</li>
					<li>

						<?php
						echo wfView::create('options/option-toggled-select', array(
							'toggleOptionName' => 'alertOn_scanIssues',
							'enabledToggleValue' => 1,
							'disabledToggleValue' => 0,
							'toggleValue' => wfConfig::get('alertOn_scanIssues') > 0 ? 1 : 0,
							'selectOptionName' => 'alertOn_severityLevel',
							'selectOptions' => array(
								array('value' => wfIssues::SEVERITY_CRITICAL, 'label' => __('Critical', 'wordfence')),
								array('value' => wfIssues::SEVERITY_HIGH, 'label' => __('High', 'wordfence')),
								array('value' => wfIssues::SEVERITY_MEDIUM, 'label' => __('Medium', 'wordfence')),
								array('value' => wfIssues::SEVERITY_LOW, 'label' => __('Low', 'wordfence')),
							),
							'selectValue' => wfConfig::get('alertOn_severityLevel'),
							'title' => __('Alert me with scan results of this severity level or greater:', 'wordfence'),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-toggled', array(
							'optionName' => 'alertOn_block',
							'enabledValue' => 1,
							'disabledValue' => 0,
							'value' => wfConfig::get('alertOn_block') ? 1 : 0,
							'title' => __('Alert when an IP address is blocked', 'wordfence'),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-toggled', array(
							'optionName' => 'alertOn_loginLockout',
							'enabledValue' => 1,
							'disabledValue' => 0,
							'value' => wfConfig::get('alertOn_loginLockout') ? 1 : 0,
							'title' => __('Alert when someone is locked out from login', 'wordfence'),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-toggled', array(
							'optionName' => 'alertOn_breachLogin',
							'enabledValue' => 1,
							'disabledValue' => 0,
							'value' => wfConfig::get('alertOn_breachLogin') ? 1 : 0,
							'title' => __('Alert when someone is blocked from logging in for using a password found in a breach', 'wordfence'),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-toggled', array(
							'optionName' => 'alertOn_lostPasswdForm',
							'enabledValue' => 1,
							'disabledValue' => 0,
							'value' => wfConfig::get('alertOn_lostPasswdForm') ? 1 : 0,
							'title' => __('Alert when the "lost password" form is used for a valid user', 'wordfence'),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-toggled-sub', array(
							'optionName' => 'alertOn_adminLogin',
							'enabledValue' => 1,
							'disabledValue' => 0,
							'value' => wfConfig::get('alertOn_adminLogin') ? 1 : 0,
							'title' => __('Alert me when someone with administrator access signs in', 'wordfence'),
							
							'subOptionName' => 'alertOn_firstAdminLoginOnly',
							'subEnabledValue' => 1,
							'subDisabledValue' => 0,
							'subValue' => wfConfig::get('alertOn_firstAdminLoginOnly') ? 1 : 0,
							'subTitle' => __('Only alert me when that administrator signs in from a new device', 'wordfence'),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-toggled-sub', array(
							'optionName' => 'alertOn_nonAdminLogin',
							'enabledValue' => 1,
							'disabledValue' => 0,
							'value' => wfConfig::get('alertOn_nonAdminLogin') ? 1 : 0,
							'title' => __('Alert me when a non-admin user signs in', 'wordfence'),
							
							'subOptionName' => 'alertOn_firstNonAdminLoginOnly',
							'subEnabledValue' => 1,
							'subDisabledValue' => 0,
							'subValue' => wfConfig::get('alertOn_firstNonAdminLoginOnly') ? 1 : 0,
							'subTitle' => __('Only alert me when that user signs in from a new device', 'wordfence'),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-toggled', array(
							'optionName' => 'wafAlertOnAttacks',
							'enabledValue' => 1,
							'disabledValue' => 0,
							'value' => wfConfig::get('wafAlertOnAttacks') ? 1 : 0,
							'title' => __('Alert me when there\'s a large increase in attacks detected on my site', 'wordfence'),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-text', array(
							'textOptionName' => 'alert_maxHourly',
							'textValue' => wfConfig::get('alert_maxHourly'),
							'title' => __('Maximum email alerts to send per hour', 'wordfence'),
							'subtitle' => __('0 means unlimited alerts will be sent.', 'wordfence'),
						))->render();
						?>
					</li>
				</ul>
			</div>
		</div>
	</div>
</div> <!-- end alert options -->
views/dashboard/options-group-import.php000064400000021232150755146450014512 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents the Import/Export Options group.
 *
 * Expects $stateKey.
 *
 * @var string $stateKey The key under which the collapse state is stored.
 * @var bool $collapseable If defined, specifies whether or not this grouping can be collapsed. Defaults to true.
 */

if (!isset($collapseable)) {
	$collapseable = true;
}
?>
<div class="wf-row">
	<div class="wf-col-xs-12">
		<div class="wf-block<?php if (!$collapseable) { echo ' wf-always-active'; } else { echo (wfPersistenceController::shared()->isActive($stateKey) ? ' wf-active' : ''); } ?>" data-persistence-key="<?php echo esc_attr($stateKey); ?>">
			<div class="wf-block-header">
				<div class="wf-block-header-content">
					<div class="wf-block-title">
						<strong><?php esc_html_e('Import/Export Options', 'wordfence'); ?></strong>
					</div>
					<?php if ($collapseable): ?><div class="wf-block-header-action"><div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive($stateKey) ? 'true' : 'false'); ?>" tabindex="0"></div></div><?php endif; ?>
				</div>
			</div>
			<div class="wf-block-content">
				<ul class="wf-block-list">
					<li>
						<ul id="wf-option-exportOptions" class="wf-flex-horizontal wf-flex-vertical-xs wf-flex-full-width wf-add-top wf-add-bottom">
							<li><?php esc_html_e('Export this site\'s Wordfence options for import on another site', 'wordfence'); ?> <a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_DASHBOARD_OPTION_EXPORT); ?>"  target="_blank" rel="noopener noreferrer" class="wf-inline-help"><i class="wf-fa wf-fa-question-circle-o" aria-hidden="true"></i><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></li>
							<li class="wf-right wf-left-xs wf-padding-add-top-xs-small">
								<a href="#" class="wf-btn wf-btn-primary wf-btn-callout-subtle" id="wf-export-options" role="button"><?php echo wp_kses(/* translators: word order may be altered as long as HTML remains around "Wordfence" */ __('Export<span class="wf-hidden-xs"> Wordfence</span> Options', 'wordfence'), array('span'=>array('class'=>array()))); ?></a>
							</li>
						</ul>
					</li>
					<li>
						<ul id="wf-option-importOptions" class="wf-flex-vertical wf-flex-full-width wf-add-bottom">
							<li>
								<ul class="wf-option wf-option-text">
									<li class="wf-option-content">
										<ul>
											<li class="wf-option-title">
												<?php esc_html_e('Import Wordfence options from another site using a token', 'wordfence'); ?> <a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_DASHBOARD_OPTION_IMPORT); ?>"  target="_blank" rel="noopener noreferrer" class="wf-inline-help"><i class="wf-fa wf-fa-question-circle-o" aria-hidden="true"></i><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a>
											</li>
											<li class="wf-option-text wf-option-full-width wf-no-right">
												<input type="text" value="" id="wf-import-token">
											</li>
										</ul>
									</li>
								</ul>
							</li>
							<li>
								<ul class="wf-flex-horizontal wf-flex-full-width">
									<li class="wf-right wf-left-xs" id="wf-license-controls">
										<a href="#" class="wf-btn wf-btn-primary wf-btn-callout-subtle wf-disabled" id="wf-import-options" role="button"><?php echo wp_kses(/* translators: word order may be altered as long as HTML remains around "Wordfence" */ __('Import<span class="wf-hidden-xs"> Wordfence</span> Options', 'wordfence'), array('span'=>array('class'=>array()))); ?></a>
									</li>
								</ul>
							</li>
						</ul>
					</li>
				</ul>
				<script type="application/javascript">
					(function($) {
						$(function() {
							$('#wf-export-options').on('click', function(e) {
								e.preventDefault();
								e.stopPropagation();

								WFAD.ajax('wordfence_exportSettings', {}, function(res) {
									if (res.ok && res.token) {
										var prompt = $('#wfTmpl_exportPromptSuccess').tmpl(res);
										var promptHTML = $("<div />").append(prompt).html();
										WFAD.colorboxHTML((WFAD.isSmallScreen ? '300px' : '400px'), promptHTML, {overlayClose: false, closeButton: false, className: 'wf-modal', onComplete: function() {
											$('#wf-export-prompt-close').on('click', function(e) {
												e.preventDefault();
												e.stopPropagation();

												WFAD.colorboxClose();
											});
										}});
									}
									else {
										var prompt = $('#wfTmpl_exportPromptError').tmpl({err: res.err || 'An unknown error occurred during the export. We received an undefined error from your web server.'});
										var promptHTML = $("<div />").append(prompt).html();
										WFAD.colorboxHTML((WFAD.isSmallScreen ? '300px' : '400px'), promptHTML, {overlayClose: false, closeButton: false, className: 'wf-modal', onComplete: function() {
											$('#wf-export-prompt-close').on('click', function(e) {
												e.preventDefault();
												e.stopPropagation();

												WFAD.colorboxClose();
											});
										}});
									}
								});
							});

							$('#wf-import-token').on('change paste keyup', function() {
								setTimeout(function() {
									$('#wf-import-options').toggleClass('wf-disabled', $('#wf-import-token').val() == '');
								}, 4);
							});

							$('#wf-import-options').on('click', function(e) {
								e.preventDefault();
								e.stopPropagation();

								WFAD.ajax('wordfence_importSettings', {token: $('#wf-import-token').val()}, function(res) {
									if (res.ok) {
										var prompt = $('#wfTmpl_importPromptSuccess').tmpl(res);
										var promptHTML = $("<div />").append(prompt).html();
										WFAD.colorboxHTML((WFAD.isSmallScreen ? '300px' : '400px'), promptHTML, {overlayClose: false, closeButton: false, className: 'wf-modal', onComplete: function() {
											$('#wf-import-prompt-reload').on('click', function(e) {
												e.preventDefault();
												e.stopPropagation();

												window.location.reload(true);
											});
										}});
									}
									else {
										var prompt = $('#wfTmpl_importPromptError').tmpl({err: res.err || 'An unknown error occurred during the import.'});
										var promptHTML = $("<div />").append(prompt).html();
										WFAD.colorboxHTML((WFAD.isSmallScreen ? '300px' : '400px'), promptHTML, {overlayClose: false, closeButton: false, className: 'wf-modal', onComplete: function() {
											$('#wf-import-prompt-close').on('click', function(e) {
												e.preventDefault();
												e.stopPropagation();

												WFAD.colorboxClose();
											});
										}});
									}
								});
							});
						});
					})(jQuery);
				</script>
			</div>
		</div>
	</div>
</div> <!-- end import options -->
<script type="text/x-jquery-template" id="wfTmpl_exportPromptSuccess">
	<?php
	echo wfView::create('common/modal-prompt', array(
		'title' => __('Export Successful', 'wordfence'),
		'messageHTML' => '<p>' . esc_html__('We successfully exported your site options. To import your site options on another site, copy and paste the token below into the import text box on the destination site. Keep this token secret &mdash; it is like a password. If anyone else discovers the token it will allow them to import your options excluding your license.', 'wordfence') . '</p><p><input type="text" class="wf-full-width" value="${token}" onclick="this.select();" /></p>',
		'primaryButton' => array('id' => 'wf-export-prompt-close', 'label' => __('Close', 'wordfence'), 'link' => '#'),
	))->render();
	?>
</script>

<script type="text/x-jquery-template" id="wfTmpl_exportPromptError">
	<?php
	echo wfView::create('common/modal-prompt', array(
		'title' => __('Error during Export', 'wordfence'),
		'message' => '${err}',
		'primaryButton' => array('id' => 'wf-export-prompt-close', 'label' => __('Close', 'wordfence'), 'link' => '#'),
	))->render();
	?>
</script>

<script type="text/x-jquery-template" id="wfTmpl_importPromptSuccess">
	<?php
	echo wfView::create('common/modal-prompt', array(
		'title' => __('Import Successful', 'wordfence'),
		'messageHTML' => esc_html__('We successfully imported the site options.', 'wordfence'),
		'primaryButton' => array('id' => 'wf-import-prompt-reload', 'label' => __('Reload', 'wordfence'), 'link' => '#'),
	))->render();
	?>
</script>

<script type="text/x-jquery-template" id="wfTmpl_importPromptError">
	<?php
	echo wfView::create('common/modal-prompt', array(
		'title' => __('Error during Import', 'wordfence'),
		'message' => '${err}',
		'primaryButton' => array('id' => 'wf-import-prompt-close', 'label' => __('Close', 'wordfence'), 'link' => '#'),
	))->render();
	?>
</script>views/dashboard/option-howgetips.php000064400000025256150755146450013706 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents the global option howGetIPs with a value select menu and text area (hidden by default) for trusted proxies.
 */

$selectOptions = array(
	array('value' => '', 'label' => esc_html__('Let Wordfence use the most secure method to get visitor IP addresses. Prevents spoofing and works with most sites.', 'wordfence') . ' <strong>' . esc_html__('(Recommended)', 'wordfence') . '</strong>'),
	array('value' => 'REMOTE_ADDR', 'label' => esc_html__('Use PHP\'s built in REMOTE_ADDR and don\'t use anything else. Very secure if this is compatible with your site.', 'wordfence')),
	array('value' => 'HTTP_X_FORWARDED_FOR', 'label' => esc_html__('Use the X-Forwarded-For HTTP header. Only use if you have a front-end proxy or spoofing may result.', 'wordfence')),
	array('value' => 'HTTP_X_REAL_IP', 'label' => esc_html__('Use the X-Real-IP HTTP header. Only use if you have a front-end proxy or spoofing may result.', 'wordfence')),
	array('value' => 'HTTP_CF_CONNECTING_IP', 'label' => esc_html__('Use the Cloudflare "CF-Connecting-IP" HTTP header to get a visitor IP. Only use if you\'re using Cloudflare.', 'wordfence')),
);
?>
<ul class="wf-flex-vertical wf-flex-full-width">
	<li>
		<ul id="wf-option-howGetIPs" class="wf-option wf-option-howgetips" data-option="howGetIPs" data-original-value="<?php echo esc_attr(wfConfig::get('howGetIPs')); ?>" data-text-area-option="howGetIPs_trusted_proxies" data-original-text-area-value="<?php echo esc_attr(wfConfig::get('howGetIPs_trusted_proxies')); ?>">
			<li class="wf-option-spacer"></li>
			<li class="wf-option-content">
				<ul class="wf-flex-vertical wf-flex-align-left">
					<li class="wf-option-title"><?php esc_html_e('How does Wordfence get IPs', 'wordfence'); ?> <a href="<?php echo wfSupportController::esc_supportURL(wfSupportController::ITEM_DASHBOARD_OPTION_HOW_GET_IPS); ?>"  target="_blank" rel="noopener noreferrer" class="wf-inline-help"><i class="wf-fa wf-fa-question-circle-o" aria-hidden="true"></i><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a></li>
					<li>
						<ul class="wf-flex-vertical wf-flex-align-left">
							<li class="wf-padding-add-left">
								<ul class="wf-flex-vertical wf-flex-align-left" role="radiogroup">
								<?php foreach ($selectOptions as $o): ?>
									<li class="wf-padding-add-top-small"><input type="radio" class="wf-option-radio" name="wf-howgetIPs" value="<?php echo esc_attr($o['value']); ?>" id="wf-howgetIPs-<?php echo esc_attr(preg_replace('/[^a-z0-9]/i', '-', $o['value'])); ?>"<?php if ($o['value'] == wfConfig::get('howGetIPs')) { echo ' checked'; } ?>><label for="wf-howgetIPs-<?php echo esc_attr(preg_replace('/[^a-z0-9]/i', '-', $o['value'])); ?>">&nbsp;&nbsp;</label><?php echo $o['label']; ?></li>
								<?php endforeach; ?>
								</ul>
							</li>
							<li class="wf-option-howgetips-details wf-padding-add-top-small">
								<div class="wf-left"><?php esc_html_e('Detected IP(s):', 'wordfence') ?> <span id="howGetIPs-preview-all"><?php echo wfUtils::getIPPreview(); ?></span></div>
								<div class="wf-left"><?php esc_html_e('Your IP with this setting:', 'wordfence') ?> <span id="howGetIPs-preview-single"><?php echo wfUtils::getIP(); ?></span></div>
								<div class="wf-left"><a href="#" id="howGetIPs-trusted-proxies-show" role="button">+ <?php esc_html_e('Edit trusted proxies', 'wordfence') ?></a></div>
							</li>
						</ul>
					</li>
				</ul>
			</li>
			<!-- <li class="wf-option-disclosure"><svg width="12px" height="12px" viewBox="0 0 12 12"><path id="disclosure-closed" d="M 6 0 l 6 6 -6 6 0 -12" fill="#777"/></svg></li> -->
		</ul>
	</li>
	<li id="howGetIPs-trusted-proxies">
		<ul id="wf-option-howGetIPs-trusted-proxies" class="wf-option wf-option-textarea" data-text-option="howGetIPs_trusted_proxies" data-original-text-value="<?php echo esc_attr(wfConfig::get('howGetIPs_trusted_proxies')); ?>">
			<li class="wf-option-spacer"></li>
			<li class="wf-option-content">
				<ul>
					<li class="wf-option-title">
						<ul class="wf-flex-vertical wf-flex-align-left">
							<li><?php esc_html_e('Trusted Proxies', 'wordfence'); ?></li>
							<li class="wf-option-subtitle"><?php esc_html_e('These IPs (or CIDR ranges) will be ignored when determining the requesting IP via the X-Forwarded-For HTTP header. Enter one IP or CIDR range per line.', 'wordfence'); ?></li>
						</ul>
					</li>
					<li class="wf-option-textarea">
						<textarea spellcheck="false" autocapitalize="none" autocomplete="off" name="howGetIPs_trusted_proxies"><?php echo esc_html(wfConfig::get('howGetIPs_trusted_proxies')); ?></textarea>
					</li>
				</ul>
			</li>
		</ul>
	</li>
	<li id="howGetIPs-trusted-proxy-preset">
		<ul id="wf-option-howGetIPs-trusted-proxy-preset" class="wf-option wf-option-select" data-text-option="howGetIPs_trusted_proxy_preset" data-original-text-value="<?php echo esc_attr(wfConfig::get('howGetIPs_trusted_proxy_preset')); ?>">
			<li class="wf-option-spacer"></li>
			<li class="wf-option-content">
				<ul>
					<li class="wf-option-title">
						<ul class="wf-flex-vertical wf-flex-align-left">
							<li><span id="wf-option-howGetIPs-trusted-proxy-preset-label"><?php esc_html_e('Trusted Proxy Preset', 'wordfence'); ?></span></li>
							<li class="wf-option-subtitle"><?php esc_html_e('In addition to the above list, the IPs (or CIDR ranges) in the selected preset will be ignored when determining the requesting IP via the X-Forwarded-For HTTP header.', 'wordfence'); ?></li>
						</ul>
					</li>
					<li class="wf-option-select">
						<?php
						$presets = wfConfig::getJSON('ipResolutionList', array());
						if (!is_array($presets)) {
							$presets = array();
						}
						$keys = array_keys($presets); asort($keys);
						?>
						<select<?php echo (!empty($presets) ? '' : ' disabled'); ?> aria-labelledby="wf-option-howGetIPs-trusted-proxy-preset-label">
							<option class="wf-option-select-option" value=""<?php if (!in_array(wfConfig::get('howGetIPs_trusted_proxy_preset'), $keys)) { echo ' selected'; } ?>><?php esc_html_e('None', 'wordfence'); ?></option>
							<?php foreach ($keys as $k): ?>
								<option class="wf-option-select-option" value="<?php echo esc_attr($k); ?>"<?php if ($k == wfConfig::get('howGetIPs_trusted_proxy_preset')) { echo ' selected'; } ?>><?php echo esc_html($presets[$k]['name']); ?></option>
							<?php endforeach; ?> 
						</select>
					</li>
				</ul>
			</li>
		</ul>
	</li>
</ul>
<script type="application/javascript">
	(function($) {
		$(function() {
			var updateIPPreview = function() {
				WFAD.updateIPPreview({howGetIPs: $('input[name="wf-howgetIPs"]:checked').val(), 'howGetIPs_trusted_proxies': $('#howGetIPs-trusted-proxies textarea').val(), 'howGetIPs_trusted_proxy_preset': $('#howGetIPs-trusted-proxy-preset select').val()}, function(ret) {
					if (ret && ret.ok) {
						$('#howGetIPs-preview-all').html(ret.ipAll);
						$('#howGetIPs-preview-single').html(ret.ip);
					}
					else {
						//TODO: implementing testing whether or not this setting will lock them out and show the error saying that they'd lock themselves out
					}
				});
			};

			$('input[name="wf-howgetIPs"]').on('change', function() {
				var optionElement = $(this).closest('.wf-option.wf-option-howgetips');
				var option = optionElement.data('option');
				var value = $('input[name="wf-howgetIPs"]:checked').val();

				var originalValue = optionElement.data('originalValue');
				if (originalValue == value) {
					delete WFAD.pendingChanges[option];
				}
				else {
					WFAD.pendingChanges[option] = value;
				}

				WFAD.updatePendingChanges();
				
				updateIPPreview();
			});

			var coalescingUpdateTimer;
			$('#howGetIPs-trusted-proxies textarea').on('change paste keyup', function() {
				var e = this;
				
				setTimeout(function() {
					clearTimeout(coalescingUpdateTimer);
					coalescingUpdateTimer = setTimeout(updateIPPreview, 1000);
	
					var optionElement = $(e).closest('.wf-option.wf-option-textarea');
					var option = optionElement.data('textOption');
					var value = $(e).val();
	
					var originalValue = optionElement.data('originalTextValue');
					if (originalValue == value) {
						delete WFAD.pendingChanges[option];
					}
					else {
						WFAD.pendingChanges[option] = value;
					}
	
					WFAD.updatePendingChanges();
				}, 4);
			});

			$('#howGetIPs-trusted-proxy-preset').on('change', function() {
				var e = this;

				setTimeout(function() {
					clearTimeout(coalescingUpdateTimer);
					coalescingUpdateTimer = setTimeout(updateIPPreview, 1000);

					var optionElement = $(e).find('.wf-option.wf-option-select');
					var option = optionElement.data('textOption');
					var value = $(e).find('select').val();

					var originalValue = optionElement.data('originalTextValue');
					if (originalValue == value) {
						delete WFAD.pendingChanges[option];
					}
					else {
						WFAD.pendingChanges[option] = value;
					}

					WFAD.updatePendingChanges();
				}, 4);
			});

			$(window).on('wfOptionsReset', function() {
				$('input[name="wf-howgetIPs"]').each(function() {
					var optionElement = $(this).closest('.wf-option.wf-option-howgetips');
					var option = optionElement.data('option');
					var originalValue = optionElement.data('originalValue');
					
					$(this).prop('checked', originalValue == $(this).attr('value'));
				});
						
				$('#howGetIPs-trusted-proxies textarea').each(function() {
					var optionElement = $(this).closest('.wf-option.wf-option-textarea');
					var originalValue = optionElement.data('originalTextAreaValue');
					$(this).val(originalValue);
				});

				updateIPPreview();
			});

			$('#howGetIPs-trusted-proxies-show').each(function() {
				$(this).on('keydown', function(e) {
					if (e.keyCode == 32) {
						e.preventDefault();
						e.stopPropagation();

						$(this).trigger('click');
					}
				});
				
				$(this).on('click', function(e) {
					e.preventDefault();
					e.stopPropagation();

					var isActive = $('#howGetIPs-trusted-proxies').hasClass('wf-active');
					if (isActive) {
						$('#howGetIPs-trusted-proxies').slideUp({
							always: function() {
								$('#howGetIPs-trusted-proxies').removeClass('wf-active');
							}
						});

						$('#howGetIPs-trusted-proxy-preset').slideUp({
							always: function() {
								$('#howGetIPs-trusted-proxy-preset').removeClass('wf-active');
							}
						});
					}
					else {
						$(this).parent().slideUp(); 
						$('#howGetIPs-trusted-proxies').slideDown({
							always: function() {
								$('#howGetIPs-trusted-proxies').addClass('wf-active');
							}
						});

						$('#howGetIPs-trusted-proxy-preset').slideDown({
							always: function() {
								$('#howGetIPs-trusted-proxy-preset').addClass('wf-active');
							}
						});
					}
				});
			});
		});
	})(jQuery);
</script> views/dashboard/status-payment-expiring.php000064400000005722150755146450015204 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Expects $id, $title, $subtitle, and $link, and $linkLabel to be defined.
 * If $linkLabel is null, the link will be hidden.
 * $linkNewWindow can optionally be defined and defaults to false.
 */

if (!isset($linkNewWindow)) { $linkNewWindow = false; }
?>
<div id="<?php echo esc_attr($id); ?>" class="wf-status-detail"> 
	<div class="wf-status-payment-expiring">
		<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 644"><g><path style="fill:none" d="M66.3,269.5v205.4c0,2.9,1.1,5.5,3.2,7.6c2.1,2.1,4.7,3.2,7.6,3.2h413.6c8.8-72,65.8-129.1,137.8-138v-78.2
		H66.3z M196,442.4h-86.5l0-43.2H196V442.4z M369,442.4H239.3v-43.2H369V442.4z"/><path style="fill:none" d="M628.4,64.1c0-2.9-1.1-5.4-3.2-7.6c-2.1-2.1-4.7-3.2-7.6-3.2H77.1c-2.9,0-5.5,1.1-7.6,3.2s-3.2,4.7-3.2,7.6
		v75.7h562.1V64.1z"/><g><path style="fill:none" d="M617.6,53.3H77.1c-2.9,0-5.5,1.1-7.6,3.2s-3.2,4.7-3.2,7.6v75.7h562.1V64.1c0-2.9-1.1-5.4-3.2-7.6
			C623.1,54.3,620.5,53.3,617.6,53.3z"/><path d="M655.8,25.9C645.2,15.3,632.5,10,617.6,10H77.1c-14.9,0-27.6,5.3-38.2,15.9C28.3,36.5,23,49.2,23,64.1v410.8
			c0,14.9,5.3,27.6,15.9,38.2c10.6,10.6,23.3,15.9,38.2,15.9h414.1c-1.2-7.8-1.8-15.8-1.8-23.9c0-6.5,0.4-13,1.2-19.3H77.1
			c-2.9,0-5.5-1.1-7.6-3.2c-2.1-2.1-3.2-4.7-3.2-7.6V269.5h562.1v78.2c6.4-0.8,12.9-1.2,19.5-1.2c8.1,0,16,0.6,23.7,1.8V64.1
			C671.7,49.2,666.4,36.5,655.8,25.9z M628.4,139.7H66.3V64.1c0-2.9,1.1-5.4,3.2-7.6s4.7-3.2,7.6-3.2h540.5c2.9,0,5.5,1.1,7.6,3.2
			c2.1,2.1,3.2,4.7,3.2,7.6V139.7z"/><rect x="109.5" y="399.2" width="86.5" height="43.2"/><rect x="239.3" y="399.2" width="129.7" height="43.2"/></g><g><path d="M759.7,440.3c-11.5-19.8-27.2-35.4-46.9-46.9C693,381.8,671.4,376,648,376s-45,5.8-64.7,17.3
			c-19.8,11.5-35.4,27.2-46.9,46.9C524.8,460,519,481.6,519,505c0,23.4,5.8,45,17.3,64.7c11.5,19.8,27.2,35.4,46.9,46.9
			C603,628.2,624.6,634,648,634s45-5.8,64.7-17.3c19.8-11.5,35.4-27.2,46.9-46.9C771.2,550,777,528.4,777,505
			C777,481.6,771.2,460,759.7,440.3L759.7,440.3z M669.5,585.5c0,1.6-0.5,2.9-1.5,3.9c-1,1.1-2.2,1.6-3.7,1.6H632
			c-1.5,0-2.7-0.6-3.9-1.7c-1.1-1.1-1.7-2.4-1.7-3.9v-31.9c0-1.5,0.6-2.7,1.7-3.9c1.1-1.1,2.4-1.7,3.9-1.7h32.2
			c1.5,0,2.7,0.5,3.7,1.6c1,1.1,1.5,2.4,1.5,3.9V585.5z M669.1,527.7c-0.1,1.1-0.7,2.1-1.8,2.9c-1.1,0.8-2.4,1.3-3.9,1.3h-31.1
			c-1.6,0-2.9-0.4-4-1.3c-1.1-0.8-1.7-1.8-1.7-2.9l-2.9-104.3c0-1.3,0.6-2.3,1.7-3c1.1-0.9,2.5-1.3,4-1.3h36.9c1.6,0,2.9,0.5,4,1.3
			c1.1,0.7,1.7,1.7,1.7,3L669.1,527.7z M669.1,527.7"/></g></g></svg>
	</div>
	<p class="wf-status-detail-title"><?php echo esc_html($title); ?></p>
	<p class="wf-status-detail-subtitle"><?php echo esc_html($subtitle); ?></p>
	<p class="wf-status-detail-link"><?php if ($linkLabel !== null): ?><a href="<?php echo esc_attr($link); ?>"<?php echo ($linkNewWindow ? ' target="_blank" rel="noopener noreferrer"' : ''); ?>><?php echo esc_html($linkLabel); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a><?php endif; ?></p>
</div>
views/dashboard/status-renewing.php000064400000004752150755146450013524 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Expects $id, $title, $subtitle, and $link, and $linkLabel to be defined.
 * If $linkLabel is null, the link will be hidden.
 * $linkNewWindow can optionally be defined and defaults to false.
 */

if (!isset($linkNewWindow)) { $linkNewWindow = false; }
?>
<div id="<?php echo esc_attr($id); ?>" class="wf-status-detail">
	<div class="wf-status-renewing">
		<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 608"><g><path d="M374.4,332.6l9.1,9c1.2,1.2,2.7,1.9,4.5,1.9c1.8,0,3.3-0.6,4.5-1.9l9-9l48.2-48.2c1.2-1.2,1.9-2.8,1.9-4.5c0-1.8-0.6-3.3-1.9-4.5l-9.1-9c-1.2-1.2-2.7-1.9-4.5-1.9c-1.8,0-3.3,0.6-4.5,1.9L388,310.1l-19.6-19.6c-1.2-1.2-2.8-1.9-4.5-1.9c-1.8,0-3.3,0.6-4.5,1.9l-9,9c-1.2,1.2-1.9,2.8-1.9,4.5c0,1.8,0.6,3.3,1.9,4.5L374.4,332.6z"/><path d="M767.7,304.8c-4.5-4.5-10.1-6.8-16.7-6.8l-67.6-0.3c-1-36.2-8.8-71.2-23.1-104.9c-14.4-33.7-34.2-63.2-59.7-88.7c-47.9-47.9-104.2-75.2-168.9-81.9c-64.7-6.7-126,7.6-184,43l-1.8,1.8c-2.3,2.3-3.4,5-3.4,8.4c0,3.3,1.1,6.1,3.4,8.3l52,52c3.8,3.8,8.4,4.4,13.8,1.8c24.7-10.1,39.5-15.7,44.4-16.7c32.1-7.7,63.8-7,95.3,1.8c31.5,8.9,59,25,82.3,48.3c35,35,53.5,77.3,55.4,126.9l-72.1,0c-6.6,0-12.2,2.3-16.7,6.8c-4.5,4.5-6.8,10.1-6.8,16.7c0,6.6,2.3,12.2,6.8,16.7l117,117c4.5,4.5,10.1,6.8,16.7,6.8c6.6,0,12.2-2.3,16.7-6.8l117-117c4.5-4.5,6.8-10.1,6.8-16.7C774.5,314.9,772.3,309.4,767.7,304.8z"/><path d="M502.1,473.8c-3.8-3.8-8.5-4.4-13.8-1.8c-24.7,10.1-39.5,15.7-44.4,16.7c-32,7.7-63.8,7.1-95.3-1.8c-31.5-8.9-58.9-25-82.3-48.3c-16.9-16.9-30.1-36.3-39.5-58.2c-9.4-21.9-14.5-44.8-15.4-68.7l71.5,0c6.6,0,12.2-2.3,16.7-6.8c4.5-4.5,6.8-10.1,6.8-16.7c0-6.6-2.3-12.2-6.8-16.7l-117-117c-4.5-4.5-10.1-6.8-16.7-6.8c-6.6,0-12.2,2.3-16.7,6.8l-117,117c-4.5,4.5-6.8,10.1-6.8,16.7c0,6.6,2.3,12.2,6.8,16.7c4.5,4.5,10.1,6.8,16.7,6.8l67.4,0c0.9,36.4,8.4,71.3,22.6,104.6c14.2,33.4,34,62.7,59.4,88.1c47.7,47.7,103.8,74.9,168.3,81.4c64.5,6.5,125.7-8,183.5-43.5c0.5-0.2,1.2-0.7,2.1-1.6c2.3-2.3,3.4-5.1,3.4-8.4c0-3.3-1.1-6.1-3.4-8.4L502.1,473.8z"/></g></svg>
	</div>
	<p class="wf-status-detail-title"><?php echo esc_html($title); ?></p>
	<p class="wf-status-detail-subtitle"><?php echo esc_html($subtitle); ?></p>
	<p class="wf-status-detail-link"><?php if ($linkLabel !== null): ?><a href="<?php echo esc_attr($link); ?>"<?php echo ($linkNewWindow ? ' target="_blank" rel="noopener noreferrer"' : ''); ?>><?php echo esc_html($linkLabel); ?><span class="screen-reader-text"> (<?php esc_html_e('opens in new tab', 'wordfence') ?>)</span></a><?php endif; ?></p>
</div>
views/dashboard/options-group-email-summary.php000064400000005517150755146450015772 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents the Activity Report group.
 *
 * Expects $stateKey.
 *
 * @var string $stateKey The key under which the collapse state is stored.
 * @var bool $collapseable If defined, specifies whether or not this grouping can be collapsed. Defaults to true.
 */

if (!isset($collapseable)) {
	$collapseable = true;
}
?>
<div class="wf-row">
	<div class="wf-col-xs-12">
		<div class="wf-block<?php if (!$collapseable) { echo ' wf-always-active'; } else { echo (wfPersistenceController::shared()->isActive($stateKey) ? ' wf-active' : ''); } ?>" data-persistence-key="<?php echo esc_attr($stateKey); ?>">
			<div class="wf-block-header">
				<div class="wf-block-header-content">
					<div class="wf-block-title">
						<strong><?php esc_html_e('Activity Report', 'wordfence'); ?></strong>
					</div>
					<?php if ($collapseable): ?><div class="wf-block-header-action"><div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive($stateKey) ? 'true' : 'false'); ?>" tabindex="0"></div></div><?php endif; ?>
				</div>
			</div>
			<div class="wf-block-content">
				<ul class="wf-block-list">
					<li>
						<?php
						echo wfView::create('options/option-toggled-select', array(
							'toggleOptionName' => 'email_summary_enabled',
							'enabledToggleValue' => 1,
							'disabledToggleValue' => 0,
							'toggleValue' => wfConfig::get('email_summary_enabled') ? 1 : 0,
							'selectOptionName' => 'email_summary_interval',
							'selectOptions' => array(
								array('value' => 'daily', 'label' => __('Once a day', 'wordfence')),
								array('value' => 'weekly', 'label' => __('Once a week', 'wordfence')),
								array('value' => 'monthly', 'label' => __('Once a month', 'wordfence')),
							),
							'selectValue' => wfConfig::get('email_summary_interval'),
							'title' => __('Enable email summary', 'wordfence'),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-textarea', array(
							'textOptionName' => 'email_summary_excluded_directories',
							'textValue' => wfUtils::cleanupOneEntryPerLine(wfConfig::get('email_summary_excluded_directories')),
							'title' => __('List of directories to exclude from recently modified file list', 'wordfence'),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-toggled', array(
							'optionName' => 'email_summary_dashboard_widget_enabled',
							'enabledValue' => 1,
							'disabledValue' => 0,
							'value' => wfConfig::get('email_summary_dashboard_widget_enabled') ? 1 : 0,
							'title' => __('Enable activity report widget on the WordPress dashboard', 'wordfence'),
						))->render();
						?>
					</li>
				</ul>
			</div>
		</div>
	</div>
</div> <!-- end email summary options -->views/dashboard/options-group-general.php000064400000016461150755146450014625 0ustar00<?php
if (!defined('WORDFENCE_VERSION')) { exit; }
/**
 * Presents the General Options group.
 *
 * Expects $stateKey.
 *
 * @var string $stateKey The key under which the collapse state is stored.
 * @var bool $collapseable If defined, specifies whether or not this grouping can be collapsed. Defaults to true.
 */

if (!isset($collapseable)) {
	$collapseable = true;
}
?>
<div class="wf-row">
	<div class="wf-col-xs-12">
		<div class="wf-block<?php if (!$collapseable) { echo ' wf-always-active'; } else { echo (wfPersistenceController::shared()->isActive($stateKey) ? ' wf-active' : ''); } ?>" data-persistence-key="<?php echo esc_attr($stateKey); ?>">
			<div class="wf-block-header">
				<div class="wf-block-header-content">
					<div class="wf-block-title">
						<strong><?php esc_html_e('General Wordfence Options', 'wordfence'); ?></strong>
					</div>
					<?php if ($collapseable): ?><div class="wf-block-header-action"><div class="wf-block-header-action-disclosure" role="checkbox" aria-checked="<?php echo (wfPersistenceController::shared()->isActive($stateKey) ? 'true' : 'false'); ?>" tabindex="0"></div></div><?php endif; ?>
				</div>
			</div>
			<div class="wf-block-content">
				<ul class="wf-block-list">
					<li>
						<?php
						$subtitle = esc_html__('Automatically updates Wordfence to the newest version within 24 hours of a new release.', 'wordfence');
						if (!wfConfig::get('other_bypassLitespeedNoabort', false) && getenv('noabort') != '1' && stristr($_SERVER['SERVER_SOFTWARE'], 'litespeed') !== false) {
							$subtitle .= '<br><br>';
							$subtitle .= wp_kses(__('<span class="wf-red-dark">Warning:</span> You are running the LiteSpeed web server and Wordfence can\'t determine whether "noabort" is set. Please verify that the environmental variable "noabort" is set for the local site, or the server\'s global External Application Abort is set to "No Abort".', 'wordfence'), array('span'=>array('class'=>array())));
							$subtitle .= '<br>';
							$subtitle .= '<a href="' . wfSupportController::esc_supportURL(wfSupportController::ITEM_DASHBOARD_OPTION_LITESPEED_WARNING) . '" target="_blank" rel="noopener noreferrer">' . esc_html__('Please read this article in our FAQ to make an important change that will ensure your site stability during an update.', 'wordfence') . '<span class="screen-reader-text"> (' . esc_html__('opens in new tab', 'wordfence') . ')</span></a>';
						}
						
						echo wfView::create('options/option-toggled', array(
							'optionName' => 'autoUpdate',
							'enabledValue' => 1,
							'disabledValue' => 0,
							'value' => wfConfig::get('autoUpdate') ? 1 : 0,
							'title' => __('Update Wordfence automatically when a new version is released?', 'wordfence'),
							'subtitleHTML' => $subtitle,
							'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_DASHBOARD_OPTION_AUTOMATIC_UPDATE),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-text', array(
							'textOptionName' => 'alertEmails',
							'textValue' => implode(',', wfConfig::getAlertEmails()),
							'title' => __('Where to email alerts', 'wordfence'),
							'placeholder' => __('Separate multiple addresses with commas', 'wordfence'),
							'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_DASHBOARD_OPTION_ALERT_EMAILS),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('dashboard/option-howgetips')->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-toggled', array(
							'optionName' => 'enableRemoteIpLookup',
							'enabledValue' => 1,
							'disabledValue' => 0,
							'value' => wfConfig::get('enableRemoteIpLookup', true) ? 1 : 0,
							'title' => __('Look up visitor IP locations via Wordfence servers', 'wordfence'),
							'subtitle' => __('If this option is disabled, Wordfence can look up countries for visitor IP addresses using a local database, but cannot look up regions or cities', 'wordfence'),
							'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_GENERAL_REMOTE_IP_LOOKUP)
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-toggled', array(
							'optionName' => 'other_hideWPVersion',
							'enabledValue' => 1,
							'disabledValue' => 0,
							'value' => wfConfig::get('other_hideWPVersion') ? 1 : 0,
							'title' => __('Hide WordPress version', 'wordfence'),
							'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_DASHBOARD_OPTION_HIDE_VERSION),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-toggled', array(
							'optionName' => 'disableCodeExecutionUploads',
							'enabledValue' => 1,
							'disabledValue' => 0,
							'value' => wfConfig::get('disableCodeExecutionUploads') ? 1 : 0,
							'title' => __('Disable Code Execution for Uploads directory', 'wordfence'),
							'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_DASHBOARD_OPTION_DISABLE_UPLOADS_EXECUTION),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-toggled', array(
							'optionName' => 'liveActivityPauseEnabled',
							'enabledValue' => 1,
							'disabledValue' => 0,
							'value' => wfConfig::get('liveActivityPauseEnabled') ? 1 : 0,
							'title' => __('Pause live updates when window loses focus', 'wordfence'),
							'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_DASHBOARD_OPTION_PAUSE_LIVE_UPDATES),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-text', array(
							'textOptionName' => 'actUpdateInterval',
							'textValue' => wfConfig::get('actUpdateInterval'),
							'title' => __('Update interval in seconds', 'wordfence'),
							'subtitle' => __('Setting higher will reduce browser traffic but slow scan starts, live traffic &amp; status updates.', 'wordfence'),
							'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_DASHBOARD_OPTION_UPDATE_INTERVAL),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-toggled', array(
							'optionName' => 'other_bypassLitespeedNoabort',
							'enabledValue' => 1,
							'disabledValue' => 0,
							'value' => wfConfig::get('other_bypassLitespeedNoabort') ? 1 : 0,
							'title' => __('Bypass the LiteSpeed "noabort" check', 'wordfence'),
							'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_DASHBOARD_OPTION_BYPASS_LITESPEED_CHECK),
						))->render();
						?>
					</li>
					<li>
						<?php
						echo wfView::create('options/option-toggled', array(
							'optionName' => 'deleteTablesOnDeact',
							'enabledValue' => 1,
							'disabledValue' => 0,
							'value' => wfConfig::get('deleteTablesOnDeact') ? 1 : 0,
							'title' => __('Delete Wordfence tables and data on deactivation', 'wordfence'),
							'subtitle' => __('Note: This does not include Login Security settings and tables. An option to delete those must be selected separately on the Login Security settings page.', 'wordfence'),
							'helpLink' => wfSupportController::supportURL(wfSupportController::ITEM_DASHBOARD_OPTION_DELETE_DEACTIVATION),
						))->render();
						?>
					</li>
				</ul>
			</div>
		</div>
	</div>
</div> <!-- end general options -->wordfence.php000064400000010623150755146450007247 0ustar00<?php
/*
Plugin Name: Wordfence Security
Plugin URI: https://www.wordfence.com/
Description: Wordfence Security - Anti-virus, Firewall and Malware Scan
Author: Wordfence
Version: 7.11.7
Author URI: https://www.wordfence.com/
Text Domain: wordfence
Domain Path: /languages
Network: true
Requires at least: 3.9
Requires PHP: 5.5
License: GPLv3
License URI: https://www.gnu.org/licenses/gpl-3.0.html

@copyright Copyright (C) 2012-2023 Defiant Inc.
@license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License, version 3 or higher

This program 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.

This program 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 this program. If not, see <https://www.gnu.org/licenses/>.

*/
if(defined('WP_INSTALLING') && WP_INSTALLING){
	return;
}

if (!defined('ABSPATH')) {
	exit;
}
define('WORDFENCE_VERSION', '7.11.7');
define('WORDFENCE_BUILD_NUMBER', '1722265817');
define('WORDFENCE_BASENAME', function_exists('plugin_basename') ? plugin_basename(__FILE__) :
	basename(dirname(__FILE__)) . '/' . basename(__FILE__));

global $wp_plugin_paths;
foreach ($wp_plugin_paths as $dir => $realdir) {
	if (strpos(__FILE__, $realdir) === 0) {
		define('WORDFENCE_FCPATH', $dir . '/' . basename(__FILE__));
		define('WORDFENCE_PATH', trailingslashit($dir));
		break;
	}
}
if (!defined('WORDFENCE_FCPATH')) {
	/** @noinspection PhpConstantReassignmentInspection */
	define('WORDFENCE_FCPATH', __FILE__);
	/** @noinspection PhpConstantReassignmentInspection */
	define('WORDFENCE_PATH', trailingslashit(dirname(WORDFENCE_FCPATH)));
}
if (!defined('WF_IS_WP_ENGINE')) {
	define('WF_IS_WP_ENGINE', isset($_SERVER['IS_WPE']));
}
if (!defined('WF_IS_FLYWHEEL')) {
	define('WF_IS_FLYWHEEL', isset($_SERVER['SERVER_SOFTWARE']) && strpos($_SERVER['SERVER_SOFTWARE'], 'Flywheel/') === 0);
}
if (!defined('WF_IS_PRESSABLE')) {
	define('WF_IS_PRESSABLE', (defined('IS_ATOMIC') && IS_ATOMIC) || (defined('IS_PRESSABLE') && IS_PRESSABLE));
}

require(dirname(__FILE__) . '/lib/wfVersionSupport.php');
/**
 * @var string $wfPHPDeprecatingVersion
 * @var string $wfPHPMinimumVersion
 */

if (!defined('WF_PHP_UNSUPPORTED')) {
	define('WF_PHP_UNSUPPORTED', version_compare(PHP_VERSION, $wfPHPMinimumVersion, '<'));
}

if (WF_PHP_UNSUPPORTED) {
	add_action('all_admin_notices', 'wfUnsupportedPHPOverlay');

	function wfUnsupportedPHPOverlay() {
		include "views/unsupported-php/admin-message.php";
	}
	return;
}

if(get_option('wordfenceActivated') != 1){
	add_action('activated_plugin','wordfence_save_activation_error'); function wordfence_save_activation_error(){ update_option('wf_plugin_act_error',  ob_get_contents()); }
}
if(! defined('WORDFENCE_VERSIONONLY_MODE')){ //Used to get version from file.
	$maxMemory = @ini_get('memory_limit');
	$last = strtolower(substr($maxMemory, -1));
	$maxMemory = (int) $maxMemory;
	
	if ($last == 'g') { $maxMemory = $maxMemory * 1024 * 1024 * 1024; }
	else if ($last == 'm') { $maxMemory = $maxMemory * 1024 * 1024; }
	else if ($last == 'k') { $maxMemory = $maxMemory * 1024; }
	
	if ($maxMemory < 134217728 /* 128 MB */ && $maxMemory > 0 /* Unlimited */) {
		if (strpos(ini_get('disable_functions'), 'ini_set') === false) {
			@ini_set('memory_limit', '128M'); //Some hosts have ini set at as little as 32 megs. 128 is the min sane amount of memory.
		}
	}

	/**
	 * Constant to determine if Wordfence is installed on another WordPress site one or more directories up in
	 * auto_prepend_file mode.
	 */
	define('WFWAF_SUBDIRECTORY_INSTALL', class_exists('wfWAF') &&
		!in_array(realpath(dirname(__FILE__) . '/vendor/wordfence/wf-waf/src/init.php'), get_included_files()));
	if (!WFWAF_SUBDIRECTORY_INSTALL) {
		require_once(dirname(__FILE__) . '/vendor/wordfence/wf-waf/src/init.php');
		if (!wfWAF::getInstance()) {
			define('WFWAF_AUTO_PREPEND', false);
			require_once(dirname(__FILE__) . '/waf/bootstrap.php');
		}
	}
	
	//Modules

	//Load
	require_once(dirname(__FILE__) . '/lib/wordfenceConstants.php');
	require_once(dirname(__FILE__) . '/lib/wordfenceClass.php');
	wordfence::install_actions();
}vendor/wordfence/wf-waf/src/cacert.pem000064400000660436150755146450013772 0ustar00##
## Bundle of CA Root Certificates
##
## Certificate data from Mozilla as of: Tue Aug 22 03:12:04 2023 GMT
##
## This is a bundle of X.509 certificates of public Certificate Authorities
## (CA). These were automatically extracted from Mozilla's root certificates
## file (certdata.txt).  This file can be found in the mozilla source tree:
## https://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt
##
## It contains the certificates in PEM format and therefore
## can be directly used with curl / libcurl / php_curl, or with
## an Apache+mod_ssl webserver for SSL client authentication.
## Just configure this file as the SSLCACertificateFile.
##
## Conversion done with mk-ca-bundle.pl version 1.29.
## SHA256: 0ff137babc6a5561a9cfbe9f29558972e5b528202681b7d3803d03a3e82922bd
##


GlobalSign Root CA
==================
-----BEGIN CERTIFICATE-----
MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx
GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds
b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV
BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD
VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa
DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc
THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb
Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP
c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX
gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF
AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj
Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG
j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH
hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC
X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==
-----END CERTIFICATE-----

Entrust.net Premium 2048 Secure Server CA
=========================================
-----BEGIN CERTIFICATE-----
MIIEKjCCAxKgAwIBAgIEOGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u
ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxp
bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV
BAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQx
NzUwNTFaFw0yOTA3MjQxNDE1MTJaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3
d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl
MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u
ZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
MIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOL
Gp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSr
hRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzW
nLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUi
VBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo0IwQDAOBgNVHQ8BAf8E
BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVeSB0RGAvtiJuQijMfmhJAkWuXAwDQYJ
KoZIhvcNAQEFBQADggEBADubj1abMOdTmXx6eadNl9cZlZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPy
T/4xmf3IDExoU8aAghOY+rat2l098c5u9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpElesYT6Yf
zX1XEC+bBAlahLVu2B064dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrDtRnDvV5bu/8j72gZyxKT
J1wDLW8w0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBCbJPKVt7+bYQLCIt+jerXmCHG8+c8eS9e
nNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gIFVbPv/ErfF6adulZkMV8gzURZVE=
-----END CERTIFICATE-----

Baltimore CyberTrust Root
=========================
-----BEGIN CERTIFICATE-----
MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAGA1UE
ChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3li
ZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMC
SUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFs
dGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKME
uyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsB
UnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/C
G9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9
XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjpr
l3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoI
VDaGezq1BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB
BQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkTI7gQCvlYpNRh
cL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3WgxjkzSswF07r51XgdIGn9w/xZchMB5
hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsa
Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H
RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
-----END CERTIFICATE-----

Entrust Root Certification Authority
====================================
-----BEGIN CERTIFICATE-----
MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAUBgNV
BAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0Lm5ldC9DUFMgaXMgaW5jb3Jw
b3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMWKGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsG
A1UEAxMkRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0
MloXDTI2MTEyNzIwNTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMu
MTkwNwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSByZWZlcmVu
Y2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNVBAMTJEVudHJ1c3QgUm9v
dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
ALaVtkNC+sZtKm9I35RMOVcF7sN5EUFoNu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYsz
A9u3g3s+IIRe7bJWKKf44LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOww
Cj0Yzfv9KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGIrb68
j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi94DkZfs0Nw4pgHBN
rziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOBsDCBrTAOBgNVHQ8BAf8EBAMCAQYw
DwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAigA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1
MzQyWjAfBgNVHSMEGDAWgBRokORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DH
hmak8fdLQ/uEvW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA
A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9tO1KzKtvn1ISM
Y/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6ZuaAGAT/3B+XxFNSRuzFVJ7yVTa
v52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTS
W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0
tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8
-----END CERTIFICATE-----

Comodo AAA Services root
========================
-----BEGIN CERTIFICATE-----
MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAw
MFoXDTI4MTIzMTIzNTk1OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hl
c3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV
BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
ggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQuaBtDFcCLNSS1UY8y2bmhG
C1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUs
i14HZGWCwEiwqJH5YZ92IFCokcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszW
Y19zjNoFmag4qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH
Ypy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQUoBEK
Iz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wewYDVR0f
BHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNl
cy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2Vz
LmNybDANBgkqhkiG9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm
7l3sAg9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz
Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z
8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C
12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg==
-----END CERTIFICATE-----

QuoVadis Root CA 2
==================
-----BEGIN CERTIFICATE-----
MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT
EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMjAeFw0wNjExMjQx
ODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM
aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4IC
DwAwggIKAoICAQCaGMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6
XJxgFyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55JWpzmM+Yk
lvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bBrrcCaoF6qUWD4gXmuVbB
lDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp+ARz8un+XJiM9XOva7R+zdRcAitMOeGy
lZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt
66/3FsvbzSUr5R/7mp/iUcw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1Jdxn
wQ5hYIizPtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og/zOh
D7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UHoycR7hYQe7xFSkyy
BNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuIyV77zGHcizN300QyNQliBJIWENie
J0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1Ud
DgQWBBQahGK8SEwzJQTU7tD2A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGU
a6FJpEcwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT
ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2fBluornFdLwUv
Z+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzng/iN/Ae42l9NLmeyhP3ZRPx3
UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2BlfF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodm
VjB3pjd4M1IQWK4/YY7yarHvGH5KWWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK
+JDSV6IZUaUtl0HaB0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrW
IozchLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPRTUIZ3Ph1
WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWDmbA4CD/pXvk1B+TJYm5X
f6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0ZohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II
4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8
VCLAAVBpQ570su9t+Oza8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u
-----END CERTIFICATE-----

QuoVadis Root CA 3
==================
-----BEGIN CERTIFICATE-----
MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT
EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMzAeFw0wNjExMjQx
OTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM
aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4IC
DwAwggIKAoICAQDMV0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNgg
DhoB4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUrH556VOij
KTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd8lyyBTNvijbO0BNO/79K
DDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9CabwvvWhDFlaJKjdhkf2mrk7AyxRllDdLkgbv
BNDInIjbC3uBr7E9KsRlOni27tyAsdLTmZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwp
p5ijJUMv7/FfJuGITfhebtfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8
nT8KKdjcT5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDtWAEX
MJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZc6tsgLjoC2SToJyM
Gf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A4iLItLRkT9a6fUg+qGkM17uGcclz
uD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYDVR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHT
BgkrBgEEAb5YAAMwgcUwgZMGCCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmlj
YXRlIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0
aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVudC4wLQYIKwYB
BQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2NwczALBgNVHQ8EBAMCAQYwHQYD
VR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4GA1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4
ywLQoUmkRzBFMQswCQYDVQQGEwJCTTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UE
AxMSUXVvVmFkaXMgUm9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZV
qyM07ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSemd1o417+s
hvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd+LJ2w/w4E6oM3kJpK27z
POuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2
Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadNt54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp
8kokUvd0/bpO5qgdAm6xDYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBC
bjPsMZ57k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6szHXu
g/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0jWy10QJLZYxkNc91p
vGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeTmJlglFwjz1onl14LBQaTNx47aTbr
qZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK4SVhM7JZG+Ju1zdXtg2pEto=
-----END CERTIFICATE-----

Security Communication Root CA
==============================
-----BEGIN CERTIFICATE-----
MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP
U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw
HhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP
U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw
8yl89f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJDKaVv0uM
DPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9Ms+k2Y7CI9eNqPPYJayX
5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/NQV3Is00qVUarH9oe4kA92819uZKAnDfd
DJZkndwi92SL32HeFZRSFaB9UslLqCHJxrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2
JChzAgMBAAGjPzA9MB0GA1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYw
DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vGkl3g
0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfrUj94nK9NrvjVT8+a
mCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5Bw+SUEmK3TGXX8npN6o7WWWXlDLJ
s58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ
6rBK+1YWc26sTfcioU+tHXotRSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAi
FL39vmwLAw==
-----END CERTIFICATE-----

XRamp Global CA Root
====================
-----BEGIN CERTIFICATE-----
MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UE
BhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2Vj
dXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB
dXRob3JpdHkwHhcNMDQxMTAxMTcxNDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMx
HjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkg
U2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp
dHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS638eMpSe2OAtp87ZOqCwu
IR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCPKZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMx
foArtYzAQDsRhtDLooY2YKTVMIJt2W7QDxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FE
zG+gSqmUsE3a56k0enI4qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqs
AxcZZPRaJSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNViPvry
xS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
EwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASsjVy16bYbMDYGA1UdHwQvMC0wK6Ap
oCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMC
AQEwDQYJKoZIhvcNAQEFBQADggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc
/Kh4ZzXxHfARvbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt
qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLaIR9NmXmd4c8n
nxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSyi6mx5O+aGtA9aZnuqCij4Tyz
8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQO+7ETPTsJ3xCwnR8gooJybQDJbw=
-----END CERTIFICATE-----

Go Daddy Class 2 CA
===================
-----BEGIN CERTIFICATE-----
MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY
VGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRp
ZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkG
A1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g
RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQAD
ggENADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv
2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+qN1j3hybX2C32
qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6j
YGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmY
vLEHZ6IVDd2gWMZEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0O
BBYEFNLEsNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h/t2o
atTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMu
MTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwG
A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wim
PQoZ+YeAEW5p5JYXMP80kWNyOO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKt
I3lpjbi2Tc7PTMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ
HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VI
Ls9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/b
vZ8=
-----END CERTIFICATE-----

Starfield Class 2 CA
====================
-----BEGIN CERTIFICATE-----
MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzElMCMGA1UEChMc
U3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZpZWxkIENsYXNzIDIg
Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBo
MQswCQYDVQQGEwJVUzElMCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAG
A1UECxMpU3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqG
SIb3DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf8MOh2tTY
bitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN+lq2cwQlZut3f+dZxkqZ
JRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVm
epsZGD3/cVE8MC5fvj13c7JdBmzDI1aaK4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSN
F4Azbl5KXZnJHoe0nRrA1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HF
MIHCMB0GA1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fRzt0f
hvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNo
bm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBDbGFzcyAyIENlcnRpZmljYXRpb24g
QXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGs
afPzWdqbAYcaT1epoXkJKtv3L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLM
PUxA2IGvd56Deruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl
xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynpVSJYACPq4xJD
KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3
QBFGmh95DmK/D5fs4C8fF5Q=
-----END CERTIFICATE-----

DigiCert Assured ID Root CA
===========================
-----BEGIN CERTIFICATE-----
MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQG
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw
IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzEx
MTEwMDAwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL
ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0Ew
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7cJpSIqvTO
9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYPmDI2dsze3Tyoou9q+yHy
UmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW
/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpy
oeb6pNnVFzF1roV9Iq4/AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whf
GHdPAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRF
66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzANBgkq
hkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRCdWKuh+vy1dneVrOfzM4UKLkNl2Bc
EkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTffwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38Fn
SbNd67IJKusm7Xi+fT8r87cmNW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i
8b5QZ7dsvfPxH2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe
+o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g==
-----END CERTIFICATE-----

DigiCert Global Root CA
=======================
-----BEGIN CERTIFICATE-----
MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQG
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw
HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAw
MDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3
dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkq
hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOn
TjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5
BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H
4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y
7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQAB
o2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm
8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEF
BQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmr
EbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIt
tep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886
UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk
CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=
-----END CERTIFICATE-----

DigiCert High Assurance EV Root CA
==================================
-----BEGIN CERTIFICATE-----
MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQG
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSsw
KQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAw
MFoXDTMxMTExMDAwMDAwMFowbDELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ
MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFu
Y2UgRVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm+9S75S0t
Mqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTWPNt0OKRKzE0lgvdKpVMS
OO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEMxChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3
MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFBIk5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQ
NAQTXKFx01p8VdteZOE3hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUe
h10aUAsgEsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMB
Af8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSY
JhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3NecnzyIZgYIVyHbIUf4KmeqvxgydkAQ
V8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6zeM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFp
myPInngiK3BD41VHMWEZ71jFhS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkK
mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe
vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K
-----END CERTIFICATE-----

SwissSign Gold CA - G2
======================
-----BEGIN CERTIFICATE-----
MIIFujCCA6KgAwIBAgIJALtAHEP1Xk+wMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNVBAYTAkNIMRUw
EwYDVQQKEwxTd2lzc1NpZ24gQUcxHzAdBgNVBAMTFlN3aXNzU2lnbiBHb2xkIENBIC0gRzIwHhcN
MDYxMDI1MDgzMDM1WhcNMzYxMDI1MDgzMDM1WjBFMQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dp
c3NTaWduIEFHMR8wHQYDVQQDExZTd2lzc1NpZ24gR29sZCBDQSAtIEcyMIICIjANBgkqhkiG9w0B
AQEFAAOCAg8AMIICCgKCAgEAr+TufoskDhJuqVAtFkQ7kpJcyrhdhJJCEyq8ZVeCQD5XJM1QiyUq
t2/876LQwB8CJEoTlo8jE+YoWACjR8cGp4QjK7u9lit/VcyLwVcfDmJlD909Vopz2q5+bbqBHH5C
jCA12UNNhPqE21Is8w4ndwtrvxEvcnifLtg+5hg3Wipy+dpikJKVyh+c6bM8K8vzARO/Ws/BtQpg
vd21mWRTuKCWs2/iJneRjOBiEAKfNA+k1ZIzUd6+jbqEemA8atufK+ze3gE/bk3lUIbLtK/tREDF
ylqM2tIrfKjuvqblCqoOpd8FUrdVxyJdMmqXl2MT28nbeTZ7hTpKxVKJ+STnnXepgv9VHKVxaSvR
AiTysybUa9oEVeXBCsdtMDeQKuSeFDNeFhdVxVu1yzSJkvGdJo+hB9TGsnhQ2wwMC3wLjEHXuend
jIj3o02yMszYF9rNt85mndT9Xv+9lz4pded+p2JYryU0pUHHPbwNUMoDAw8IWh+Vc3hiv69yFGkO
peUDDniOJihC8AcLYiAQZzlG+qkDzAQ4embvIIO1jEpWjpEA/I5cgt6IoMPiaG59je883WX0XaxR
7ySArqpWl2/5rX3aYT+YdzylkbYcjCbaZaIJbcHiVOO5ykxMgI93e2CaHt+28kgeDrpOVG2Y4OGi
GqJ3UM/EY5LsRxmd6+ZrzsECAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUw
AwEB/zAdBgNVHQ4EFgQUWyV7lqRlUX64OfPAeGZe6Drn8O4wHwYDVR0jBBgwFoAUWyV7lqRlUX64
OfPAeGZe6Drn8O4wRgYDVR0gBD8wPTA7BglghXQBWQECAQEwLjAsBggrBgEFBQcCARYgaHR0cDov
L3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBACe645R88a7A3hfm
5djV9VSwg/S7zV4Fe0+fdWavPOhWfvxyeDgD2StiGwC5+OlgzczOUYrHUDFu4Up+GC9pWbY9ZIEr
44OE5iKHjn3g7gKZYbge9LgriBIWhMIxkziWMaa5O1M/wySTVltpkuzFwbs4AOPsF6m43Md8AYOf
Mke6UiI0HTJ6CVanfCU2qT1L2sCCbwq7EsiHSycR+R4tx5M/nttfJmtS2S6K8RTGRI0Vqbe/vd6m
Gu6uLftIdxf+u+yvGPUqUfA5hJeVbG4bwyvEdGB5JbAKJ9/fXtI5z0V9QkvfsywexcZdylU6oJxp
mo/a77KwPJ+HbBIrZXAVUjEaJM9vMSNQH4xPjyPDdEFjHFWoFN0+4FFQz/EbMFYOkrCChdiDyyJk
vC24JdVUorgG6q2SpCSgwYa1ShNqR88uC1aVVMvOmttqtKay20EIhid392qgQmwLOM7XdVAyksLf
KzAiSNDVQTglXaTpXZ/GlHXQRf0wl0OPkKsKx4ZzYEppLd6leNcG2mqeSz53OiATIgHQv2ieY2Br
NU0LbbqhPcCT4H8js1WtciVORvnSFu+wZMEBnunKoGqYDs/YYPIvSbjkQuE4NRb0yG5P94FW6Lqj
viOvrv1vA+ACOzB2+httQc8Bsem4yWb02ybzOqR08kkkW8mw0FfB+j564ZfJ
-----END CERTIFICATE-----

SwissSign Silver CA - G2
========================
-----BEGIN CERTIFICATE-----
MIIFvTCCA6WgAwIBAgIITxvUL1S7L0swDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCQ0gxFTAT
BgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMB4X
DTA2MTAyNTA4MzI0NloXDTM2MTAyNTA4MzI0NlowRzELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3
aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMIICIjANBgkqhkiG
9w0BAQEFAAOCAg8AMIICCgKCAgEAxPGHf9N4Mfc4yfjDmUO8x/e8N+dOcbpLj6VzHVxumK4DV644
N0MvFz0fyM5oEMF4rhkDKxD6LHmD9ui5aLlV8gREpzn5/ASLHvGiTSf5YXu6t+WiE7brYT7QbNHm
+/pe7R20nqA1W6GSy/BJkv6FCgU+5tkL4k+73JU3/JHpMjUi0R86TieFnbAVlDLaYQ1HTWBCrpJH
6INaUFjpiou5XaHc3ZlKHzZnu0jkg7Y360g6rw9njxcH6ATK72oxh9TAtvmUcXtnZLi2kUpCe2Uu
MGoM9ZDulebyzYLs2aFK7PayS+VFheZteJMELpyCbTapxDFkH4aDCyr0NQp4yVXPQbBH6TCfmb5h
qAaEuSh6XzjZG6k4sIN/c8HDO0gqgg8hm7jMqDXDhBuDsz6+pJVpATqJAHgE2cn0mRmrVn5bi4Y5
FZGkECwJMoBgs5PAKrYYC51+jUnyEEp/+dVGLxmSo5mnJqy7jDzmDrxHB9xzUfFwZC8I+bRHHTBs
ROopN4WSaGa8gzj+ezku01DwH/teYLappvonQfGbGHLy9YR0SslnxFSuSGTfjNFusB3hB48IHpmc
celM2KX3RxIfdNFRnobzwqIjQAtz20um53MGjMGg6cFZrEb65i/4z3GcRm25xBWNOHkDRUjvxF3X
CO6HOSKGsg0PWEP3calILv3q1h8CAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/
BAUwAwEB/zAdBgNVHQ4EFgQUF6DNweRBtjpbO8tFnb0cwpj6hlgwHwYDVR0jBBgwFoAUF6DNweRB
tjpbO8tFnb0cwpj6hlgwRgYDVR0gBD8wPTA7BglghXQBWQEDAQEwLjAsBggrBgEFBQcCARYgaHR0
cDovL3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBAHPGgeAn0i0P
4JUw4ppBf1AsX19iYamGamkYDHRJ1l2E6kFSGG9YrVBWIGrGvShpWJHckRE1qTodvBqlYJ7YH39F
kWnZfrt4csEGDyrOj4VwYaygzQu4OSlWhDJOhrs9xCrZ1x9y7v5RoSJBsXECYxqCsGKrXlcSH9/L
3XWgwF15kIwb4FDm3jH+mHtwX6WQ2K34ArZv02DdQEsixT2tOnqfGhpHkXkzuoLcMmkDlm4fS/Bx
/uNncqCxv1yL5PqZIseEuRuNI5c/7SXgz2W79WEE790eslpBIlqhn10s6FvJbakMDHiqYMZWjwFa
DGi8aRl5xB9+lwW/xekkUV7U1UtT7dkjWjYDZaPBA61BMPNGG4WQr2W11bHkFlt4dR2Xem1ZqSqP
e97Dh4kQmUlzeMg9vVE1dCrV8X5pGyq7O70luJpaPXJhkGaH7gzWTdQRdAtq/gsD/KNVV4n+Ssuu
WxcFyPKNIzFTONItaj+CuY0IavdeQXRuwxF+B6wpYJE/OMpXEA29MC/HpeZBoNquBYeaoKRlbEwJ
DIm6uNO5wJOKMPqN5ZprFQFOZ6raYlY+hAhm0sQ2fac+EPyI4NSA5QC9qvNOBqN6avlicuMJT+ub
DgEj8Z+7fNzcbBGXJbLytGMU0gYqZ4yD9c7qB9iaah7s5Aq7KkzrCWA5zspi2C5u
-----END CERTIFICATE-----

SecureTrust CA
==============
-----BEGIN CERTIFICATE-----
MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQG
EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xFzAVBgNVBAMTDlNlY3VyZVRy
dXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIzMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAe
BgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCC
ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQX
OZEzZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO0gMdA+9t
DWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIaowW8xQmxSPmjL8xk037uH
GFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b
01k/unK8RCSc43Oz969XL0Imnal0ugBS8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmH
ursCAwEAAaOBnTCBmjATBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/
BAUwAwEB/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCegJYYj
aHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ
KoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt36Z3q059c4EVlew3KW+JwULKUBRSu
SceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHf
mbx8IVQr5Fiiu1cprp6poxkmD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZ
nMUFdAvnZyPSCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR
3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE=
-----END CERTIFICATE-----

Secure Global CA
================
-----BEGIN CERTIFICATE-----
MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQG
EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBH
bG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkxMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEg
MB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwg
Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jx
YDiJiQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa/FHtaMbQ
bqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJjnIFHovdRIWCQtBJwB1g
8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnIHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYV
HDGA76oYa8J719rO+TMg1fW9ajMtgQT7sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi
0XPnj3pDAgMBAAGjgZ0wgZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
EwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCswKaAn
oCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsGAQQBgjcVAQQDAgEA
MA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0LURYD7xh8yOOvaliTFGCRsoTciE6+
OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXOH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cn
CDpOGR86p1hcF895P4vkp9MmI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/5
3CYNv6ZHdAbYiNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc
f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW
-----END CERTIFICATE-----

COMODO Certification Authority
==============================
-----BEGIN CERTIFICATE-----
MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UE
BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG
A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNVBAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1
dGhvcml0eTAeFw0wNjEyMDEwMDAwMDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEb
MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD
T01PRE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0aG9yaXR5
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3UcEbVASY06m/weaKXTuH
+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI2GqGd0S7WWaXUF601CxwRM/aN5VCaTww
xHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV
4EajcNxo2f8ESIl33rXp+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA
1KGzqSX+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5OnKVI
rLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAOBgNVHQ8BAf8E
BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9k
b2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOC
AQEAPpiem/Yb6dc5t3iuHXIYSdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CP
OGEIqB6BCsAvIC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/
RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4zJVSk/BwJVmc
IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN
+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ==
-----END CERTIFICATE-----

COMODO ECC Certification Authority
==================================
-----BEGIN CERTIFICATE-----
MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTELMAkGA1UEBhMC
R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE
ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBB
dXRob3JpdHkwHhcNMDgwMzA2MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0Ix
GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR
Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRo
b3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSRFtSrYpn1PlILBs5BAH+X
4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0JcfRK9ChQtP6IHG4/bC8vCVlbpVsLM5ni
wz2J+Wos77LTBumjQjBAMB0GA1UdDgQWBBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8E
BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VG
FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA
U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY=
-----END CERTIFICATE-----

Certigna
========
-----BEGIN CERTIFICATE-----
MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNVBAYTAkZSMRIw
EAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4XDTA3MDYyOTE1MTMwNVoXDTI3
MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwI
Q2VydGlnbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7q
XOEm7RFHYeGifBZ4QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyH
GxnygQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbwzBfsV1/p
ogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q130yGLMLLGq/jj8UEYkg
DncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKf
Irjxwo1p3Po6WAbfAgMBAAGjgbwwgbkwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQ
tCRZvgHyUtVF9lo53BEwZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJ
BgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzjAQ/J
SP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQUFAAOCAQEA
hQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8hbV6lUmPOEvjvKtpv6zf+EwLHyzs+
ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFncfca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1klu
PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY
1gkIl2PlwS6wt0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw
WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg==
-----END CERTIFICATE-----

ePKI Root Certification Authority
=================================
-----BEGIN CERTIFICATE-----
MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQG
EwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0ZC4xKjAoBgNVBAsMIWVQS0kg
Um9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMx
MjdaMF4xCzAJBgNVBAYTAlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEq
MCgGA1UECwwhZVBLSSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0B
AQEFAAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAHSyZbCUNs
IZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAhijHyl3SJCRImHJ7K2RKi
lTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3XDZoTM1PRYfl61dd4s5oz9wCGzh1NlDiv
qOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX
12ruOzjjK9SXDrkb5wdJfzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0O
WQqraffAsgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uUWH1+
ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLSnT0IFaUQAS2zMnao
lQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pHdmX2Os+PYhcZewoozRrSgx4hxyy/
vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJipNiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXi
Zo1jDiVN1Rmy5nk3pyKdVDECAwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/Qkqi
MAwGA1UdEwQFMAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH
ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGBuvl2ICO1J2B0
1GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6YlPwZpVnPDimZI+ymBV3QGypzq
KOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkPJXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdV
xrsStZf0X4OFunHB2WyBEXYKCrC/gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEP
NXubrjlpC2JgQCA2j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+r
GNm65ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUBo2M3IUxE
xJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS/jQ6fbjpKdx2qcgw+BRx
gMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2zGp1iro2C6pSe3VkQw63d4k3jMdXH7Ojy
sP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTEW9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmOD
BCEIZ43ygknQW/2xzQ+DhNQ+IIX3Sj0rnP0qCglN6oH4EZw=
-----END CERTIFICATE-----

certSIGN ROOT CA
================
-----BEGIN CERTIFICATE-----
MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYTAlJPMREwDwYD
VQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTAeFw0wNjA3MDQxNzIwMDRa
Fw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UE
CxMQY2VydFNJR04gUk9PVCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7I
JUqOtdu0KBuqV5Do0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHH
rfAQUySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5dRdY4zTW2
ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQOA7+j0xbm0bqQfWwCHTD
0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwvJoIQ4uNllAoEwF73XVv4EOLQunpL+943
AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B
Af8EBAMCAcYwHQYDVR0OBBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IB
AQA+0hyJLjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecYMnQ8
SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ44gx+FkagQnIl6Z0
x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6IJd1hJyMctTEHBDa0GpC9oHRxUIlt
vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz
TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD
-----END CERTIFICATE-----

NetLock Arany (Class Gold) Főtanúsítvány
========================================
-----BEGIN CERTIFICATE-----
MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTERMA8G
A1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610
dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBB
cmFueSAoQ2xhc3MgR29sZCkgRsWRdGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgx
MjA2MTUwODIxWjCBpzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxO
ZXRMb2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlmaWNhdGlv
biBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNzIEdvbGQpIEbFkXRhbsO6
c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxCRec75LbRTDofTjl5Bu
0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrTlF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw
/HpYzY6b7cNGbIRwXdrzAZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAk
H3B5r9s5VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRGILdw
fzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2BJtr+UBdADTHLpl1
neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAGAQH/AgEEMA4GA1UdDwEB/wQEAwIB
BjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2MU9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwW
qZw8UQCgwBEIBaeZ5m8BiFRhbvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTta
YtOUZcTh5m2C+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC
bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2FuLjbvrW5Kfna
NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu
dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E=
-----END CERTIFICATE-----

SecureSign RootCA11
===================
-----BEGIN CERTIFICATE-----
MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDErMCkGA1UEChMi
SmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoGA1UEAxMTU2VjdXJlU2lnbiBS
b290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSsw
KQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1
cmVTaWduIFJvb3RDQTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvL
TJszi1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8h9uuywGO
wvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOVMdrAG/LuYpmGYz+/3ZMq
g6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rP
O7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitA
bpSACW22s293bzUIUPsCh8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZX
t94wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKCh
OBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xmKbabfSVSSUOrTC4r
bnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQX5Ucv+2rIrVls4W6ng+4reV6G4pQ
Oh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWrQbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01
y8hSyn+B/tlr0/cR7SXf+Of5pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061
lgeLKBObjBmNQSdJQO7e5iNEOdyhIta6A/I=
-----END CERTIFICATE-----

Microsec e-Szigno Root CA 2009
==============================
-----BEGIN CERTIFICATE-----
MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYDVQQGEwJIVTER
MA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jv
c2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o
dTAeFw0wOTA2MTYxMTMwMThaFw0yOTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UE
BwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUt
U3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTCCASIw
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvPkd6mJviZpWNwrZuuyjNA
fW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tccbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG
0IMZfcChEhyVbUr02MelTTMuhTlAdX4UfIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKA
pxn1ntxVUwOXewdI/5n7N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm
1HxdrtbCxkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1+rUC
AwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTLD8bf
QkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAbBgNVHREE
FDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqGSIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0o
lZMEyL/azXm4Q5DwpL7v8u8hmLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfX
I/OMn74dseGkddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775
tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c2Pm2G2JwCz02
yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5tHMN1Rq41Bab2XD0h7lbwyYIi
LXpUq3DDfSJlgnCW
-----END CERTIFICATE-----

GlobalSign Root CA - R3
=======================
-----BEGIN CERTIFICATE-----
MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4GA1UECxMXR2xv
YmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh
bFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT
aWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln
bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWt
iHL8RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsTgHeMCOFJ
0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmmKPZpO/bLyCiR5Z2KYVc3
rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zdQQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjl
OCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZXriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2
xmmFghcCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
FI/wS3+oLkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZURUm7
lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMpjjM5RcOO5LlXbKr8
EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK6fBdRoyV3XpYKBovHd7NADdBj+1E
bddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQXmcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18
YIvDQVETI53O9zJrlAGomecsMx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7r
kpeDMdmztcpHWD9f
-----END CERTIFICATE-----

Autoridad de Certificacion Firmaprofesional CIF A62634068
=========================================================
-----BEGIN CERTIFICATE-----
MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UEBhMCRVMxQjBA
BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2
MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEyMzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIw
QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB
NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD
Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P
B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY
7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH
ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI
plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX
MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX
LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK
bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU
vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1Ud
EwEB/wQIMAYBAf8CAQEwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNH
DhpkLzCBpgYDVR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp
cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBvACAAZABlACAA
bABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBlAGwAbwBuAGEAIAAwADgAMAAx
ADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx
51tkljYyGOylMnfX40S2wBEqgLk9am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qk
R71kMrv2JYSiJ0L1ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaP
T481PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS3a/DTg4f
Jl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5kSeTy36LssUzAKh3ntLFl
osS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF3dvd6qJ2gHN99ZwExEWN57kci57q13XR
crHedUTnQn3iV2t93Jm8PYMo6oCTjcVMZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoR
saS8I8nkvof/uZS2+F0gStRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTD
KCOM/iczQ0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQBjLMi
6Et8Vcad+qMUu2WFbm5PEn4KPJ2V
-----END CERTIFICATE-----

Izenpe.com
==========
-----BEGIN CERTIFICATE-----
MIIF8TCCA9mgAwIBAgIQALC3WhZIX7/hy/WL1xnmfTANBgkqhkiG9w0BAQsFADA4MQswCQYDVQQG
EwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wHhcNMDcxMjEz
MTMwODI4WhcNMzcxMjEzMDgyNzI1WjA4MQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMu
QS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJ
03rKDx6sp4boFmVqscIbRTJxldn+EFvMr+eleQGPicPK8lVx93e+d5TzcqQsRNiekpsUOqHnJJAK
ClaOxdgmlOHZSOEtPtoKct2jmRXagaKH9HtuJneJWK3W6wyyQXpzbm3benhB6QiIEn6HLmYRY2xU
+zydcsC8Lv/Ct90NduM61/e0aL6i9eOBbsFGb12N4E3GVFWJGjMxCrFXuaOKmMPsOzTFlUFpfnXC
PCDFYbpRR6AgkJOhkEvzTnyFRVSa0QUmQbC1TR0zvsQDyCV8wXDbO/QJLVQnSKwv4cSsPsjLkkxT
OTcj7NMB+eAJRE1NZMDhDVqHIrytG6P+JrUV86f8hBnp7KGItERphIPzidF0BqnMC9bC3ieFUCbK
F7jJeodWLBoBHmy+E60QrLUk9TiRodZL2vG70t5HtfG8gfZZa88ZU+mNFctKy6lvROUbQc/hhqfK
0GqfvEyNBjNaooXlkDWgYlwWTvDjovoDGrQscbNYLN57C9saD+veIR8GdwYDsMnvmfzAuU8Lhij+
0rnq49qlw0dpEuDb8PYZi+17cNcC1u2HGCgsBCRMd+RIihrGO5rUD8r6ddIBQFqNeb+Lz0vPqhbB
leStTIo+F5HUsWLlguWABKQDfo2/2n+iD5dPDNMN+9fR5XJ+HMh3/1uaD7euBUbl8agW7EekFwID
AQABo4H2MIHzMIGwBgNVHREEgagwgaWBD2luZm9AaXplbnBlLmNvbaSBkTCBjjFHMEUGA1UECgw+
SVpFTlBFIFMuQS4gLSBDSUYgQTAxMzM3MjYwLVJNZXJjLlZpdG9yaWEtR2FzdGVpeiBUMTA1NSBG
NjIgUzgxQzBBBgNVBAkMOkF2ZGEgZGVsIE1lZGl0ZXJyYW5lbyBFdG9yYmlkZWEgMTQgLSAwMTAx
MCBWaXRvcmlhLUdhc3RlaXowDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O
BBYEFB0cZQ6o8iV7tJHP5LGx5r1VdGwFMA0GCSqGSIb3DQEBCwUAA4ICAQB4pgwWSp9MiDrAyw6l
Fn2fuUhfGI8NYjb2zRlrrKvV9pF9rnHzP7MOeIWblaQnIUdCSnxIOvVFfLMMjlF4rJUT3sb9fbga
kEyrkgPH7UIBzg/YsfqikuFgba56awmqxinuaElnMIAkejEWOVt+8Rwu3WwJrfIxwYJOubv5vr8q
hT/AQKM6WfxZSzwoJNu0FXWuDYi6LnPAvViH5ULy617uHjAimcs30cQhbIHsvm0m5hzkQiCeR7Cs
g1lwLDXWrzY0tM07+DKo7+N4ifuNRSzanLh+QBxh5z6ikixL8s36mLYp//Pye6kfLqCTVyvehQP5
aTfLnnhqBbTFMXiJ7HqnheG5ezzevh55hM6fcA5ZwjUukCox2eRFekGkLhObNA5me0mrZJfQRsN5
nXJQY6aYWwa9SG3YOYNw6DXwBdGqvOPbyALqfP2C2sJbUjWumDqtujWTI6cfSN01RpiyEGjkpTHC
ClguGYEQyVB1/OpaFs4R1+7vUIgtYf8/QnMFlEPVjjxOAToZpR9GTnfQXeWBIiGH/pR9hNiTrdZo
Q0iy2+tzJOeRf1SktoA+naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1Z
WrOZyGlsQyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw==
-----END CERTIFICATE-----

Go Daddy Root Certificate Authority - G2
========================================
-----BEGIN CERTIFICATE-----
MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFkZHkuY29tLCBJbmMu
MTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5
MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6
b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8G
A1UEAxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI
hvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKDE6bFIEMBO4Tx5oVJnyfq
9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD
+qK+ihVqf94Lw7YZFAXK6sOoBJQ7RnwyDfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutd
fMh8+7ArU6SSYmlRJQVhGkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMl
NAJWJwGRtDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEAAaNC
MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFDqahQcQZyi27/a9
BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmXWWcDYfF+OwYxdS2hII5PZYe096ac
vNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r
5N9ss4UXnT3ZJE95kTXWXwTrgIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYV
N8Gb5DKj7Tjo2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO
LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI4uJEvlz36hz1
-----END CERTIFICATE-----

Starfield Root Certificate Authority - G2
=========================================
-----BEGIN CERTIFICATE-----
MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s
b2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVsZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0
eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAw
DgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQg
VGVjaG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZpY2F0ZSBB
dXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL3twQP89o/8ArFv
W59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMgnLRJdzIpVv257IzdIvpy3Cdhl+72WoTs
bhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNk
N3mSwOxGXn/hbVNMYq/NHwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7Nf
ZTD4p7dNdloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0HZbU
JtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
AQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0GCSqGSIb3DQEBCwUAA4IBAQARWfol
TwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjUsHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx
4mcujJUDJi5DnUox9g61DLu34jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUw
F5okxBDgBPfg8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K
pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1mMpYjn0q7pBZ
c2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0
-----END CERTIFICATE-----

Starfield Services Root Certificate Authority - G2
==================================================
-----BEGIN CERTIFICATE-----
MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s
b2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVsZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRl
IEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNV
BAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxT
dGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2VydmljZXMg
Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
AQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20pOsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2
h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm28xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4Pa
hHQUw2eeBGg6345AWh1KTs9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLP
LJGmpufehRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk6mFB
rMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAwDwYDVR0TAQH/BAUw
AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+qAdcwKziIorhtSpzyEZGDMA0GCSqG
SIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMIbw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPP
E95Dz+I0swSdHynVv/heyNXBve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTy
xQGjhdByPq1zqwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd
iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn0q23KXB56jza
YyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCNsSi6
-----END CERTIFICATE-----

AffirmTrust Commercial
======================
-----BEGIN CERTIFICATE-----
MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UEBhMCVVMxFDAS
BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMB4XDTEw
MDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly
bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEF
AAOCAQ8AMIIBCgKCAQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6Eqdb
DuKPHx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yrba0F8PrV
C8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPALMeIrJmqbTFeurCA+ukV6
BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1yHp52UKqK39c/s4mT6NmgTWvRLpUHhww
MmWd5jyTXlBOeuM61G7MGvv50jeuJCqrVwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNV
HQ4EFgQUnZPGU4teyq8/nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
AQYwDQYJKoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYGXUPG
hi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNjvbz4YYCanrHOQnDi
qX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivtZ8SOyUOyXGsViQK8YvxO8rUzqrJv
0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9gN53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0kh
sUlHRUe072o0EclNmsxZt9YCnlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8=
-----END CERTIFICATE-----

AffirmTrust Networking
======================
-----BEGIN CERTIFICATE-----
MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UEBhMCVVMxFDAS
BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMB4XDTEw
MDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly
bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEF
AAOCAQ8AMIIBCgKCAQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SE
Hi3yYJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbuakCNrmreI
dIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRLQESxG9fhwoXA3hA/Pe24
/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gb
h+0t+nvujArjqWaJGctB+d1ENmHP4ndGyH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNV
HQ4EFgQUBx/S55zawm6iQLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
AQYwDQYJKoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfOtDIu
UFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzuQY0x2+c06lkh1QF6
12S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZLgo/bNjR9eUJtGxUAArgFU2HdW23
WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4uolu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9
/ZFvgrG+CJPbFEfxojfHRZ48x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s=
-----END CERTIFICATE-----

AffirmTrust Premium
===================
-----BEGIN CERTIFICATE-----
MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UEBhMCVVMxFDAS
BgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMB4XDTEwMDEy
OTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRy
dXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
MIICCgKCAgEAxBLfqV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtn
BKAQJG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ+jjeRFcV
5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrSs8PhaJyJ+HoAVt70VZVs
+7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmd
GPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d770O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5R
p9EixAqnOEhss/n/fauGV+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NI
S+LI+H+SqHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S5u04
6uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4IaC1nEWTJ3s7xgaVY5
/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TXOwF0lkLgAOIua+rF7nKsu7/+6qqo
+Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYEFJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB
/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByv
MiPIs0laUZx2KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg
Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B8OWycvpEgjNC
6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQMKSOyARiqcTtNd56l+0OOF6S
L5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK
+4w1IX2COPKpVJEZNZOUbWo6xbLQu4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmV
BtWVyuEklut89pMFu+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFg
IxpHYoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8GKa1qF60
g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaORtGdFNrHF+QFlozEJLUb
zxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6eKeC2uAloGRwYQw==
-----END CERTIFICATE-----

AffirmTrust Premium ECC
=======================
-----BEGIN CERTIFICATE-----
MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMCVVMxFDASBgNV
BAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQcmVtaXVtIEVDQzAeFw0xMDAx
MjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJBgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1U
cnVzdDEgMB4GA1UEAwwXQWZmaXJtVHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQA
IgNiAAQNMF4bFZ0D0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQ
N8O9ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0GA1UdDgQW
BBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAK
BggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/VsaobgxCd05DhT1wV/GzTjxi+zygk8N53X
57hG8f2h4nECMEJZh0PUUd+60wkyWs6Iflc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKM
eQ==
-----END CERTIFICATE-----

Certum Trusted Network CA
=========================
-----BEGIN CERTIFICATE-----
MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBMMSIwIAYDVQQK
ExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlv
biBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBUcnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIy
MTIwNzM3WhcNMjkxMjMxMTIwNzM3WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBU
ZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5
MSIwIAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC
AQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rHUV+rpDKmYYe2bg+G0jAC
l/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LMTXPb865Px1bVWqeWifrzq2jUI4ZZJ88J
J7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVUBBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4
fOQtf/WsX+sWn7Et0brMkUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0
cvW0QM8xAcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNVHRMB
Af8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNVHQ8BAf8EBAMCAQYw
DQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15ysHhE49wcrwn9I0j6vSrEuVUEtRCj
jSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfLI9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1
mS1FhIrlQgnXdAIv94nYmem8J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5aj
Zt3hrvJBW8qYVoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI
03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw=
-----END CERTIFICATE-----

TWCA Root Certification Authority
=================================
-----BEGIN CERTIFICATE-----
MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJ
VEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlmaWNh
dGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMzWhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQG
EwJUVzESMBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NB
IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
AoIBAQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFEAcK0HMMx
QhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HHK3XLfJ+utdGdIzdjp9xC
oi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeXRfwZVzsrb+RH9JlF/h3x+JejiB03HFyP
4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/zrX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1r
y+UPizgN7gr8/g+YnzAx3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIB
BjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkqhkiG
9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeCMErJk/9q56YAf4lC
mtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdlsXebQ79NqZp4VKIV66IIArB6nCWlW
QtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62Dlhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVY
T0bf+215WfKEIlKuD8z7fDvnaspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocny
Yh0igzyXxfkZYiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw==
-----END CERTIFICATE-----

Security Communication RootCA2
==============================
-----BEGIN CERTIFICATE-----
MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDElMCMGA1UEChMc
U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMeU2VjdXJpdHkgQ29tbXVuaWNh
dGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoXDTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMC
SlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3Vy
aXR5IENvbW11bmljYXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
ANAVOVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGrzbl+dp++
+T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVMVAX3NuRFg3sUZdbcDE3R
3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQhNBqyjoGADdH5H5XTz+L62e4iKrFvlNV
spHEfbmwhRkGeC7bYRr6hfVKkaHnFtWOojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1K
EOtOghY6rCcMU/Gt1SSwawNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8
QIH4D5csOPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEB
CwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpFcoJxDjrSzG+ntKEj
u/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXcokgfGT+Ok+vx+hfuzU7jBBJV1uXk
3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6q
tnRGEmyR7jTV7JqR50S+kDFy1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29
mvVXIwAHIRc/SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03
-----END CERTIFICATE-----

Actalis Authentication Root CA
==============================
-----BEGIN CERTIFICATE-----
MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UEBhMCSVQxDjAM
BgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UE
AwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDky
MjExMjIwMlowazELMAkGA1UEBhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlz
IFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290
IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNvUTufClrJ
wkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX4ay8IMKx4INRimlNAJZa
by/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9KK3giq0itFZljoZUj5NDKd45RnijMCO6
zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1f
YVEiVRvjRuPjPdA1YprbrxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2
oxgkg4YQ51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2Fbe8l
EfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxeKF+w6D9Fz8+vm2/7
hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4Fv6MGn8i1zeQf1xcGDXqVdFUNaBr8
EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbnfpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5
jF66CyCU3nuDuP/jVo23Eek7jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLY
iDrIn3hm7YnzezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt
ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQALe3KHwGCmSUyI
WOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70jsNjLiNmsGe+b7bAEzlgqqI0
JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDzWochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKx
K3JCaKygvU5a2hi/a5iB0P2avl4VSM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+
Xlff1ANATIGk0k9jpwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC
4yyXX04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+OkfcvHlXHo
2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7RK4X9p2jIugErsWx0Hbhz
lefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btUZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXem
OR/qnuOf0GZvBeyqdn6/axag67XH/JJULysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9
vwGYT7JZVEc+NHt4bVaTLnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg==
-----END CERTIFICATE-----

Buypass Class 2 Root CA
=======================
-----BEGIN CERTIFICATE-----
MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU
QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMiBSb290IENBMB4X
DTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1owTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1
eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIw
DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1
g1Lr6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPVL4O2fuPn
9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC911K2GScuVr1QGbNgGE41b
/+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHxMlAQTn/0hpPshNOOvEu/XAFOBz3cFIqU
CqTqc/sLUegTBxj6DvEr0VQVfTzh97QZQmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeff
awrbD02TTqigzXsu8lkBarcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgI
zRFo1clrUs3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLiFRhn
Bkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRSP/TizPJhk9H9Z2vX
Uq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN9SG9dKpN6nIDSdvHXx1iY8f93ZHs
M+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxPAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD
VR0OBBYEFMmAd+BikoL1RpzzuvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF
AAOCAgEAU18h9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s
A20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3tOluwlN5E40EI
osHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo+fsicdl9sz1Gv7SEr5AcD48S
aq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7KcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYd
DnkM/crqJIByw5c/8nerQyIKx+u2DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWD
LfJ6v9r9jv6ly0UsH8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0
oyLQI+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK75t98biGC
wWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h3PFaTWwyI0PurKju7koS
CTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPzY11aWOIv4x3kqdbQCtCev9eBCfHJxyYN
rJgWVqA=
-----END CERTIFICATE-----

Buypass Class 3 Root CA
=======================
-----BEGIN CERTIFICATE-----
MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU
QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMyBSb290IENBMB4X
DTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFowTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1
eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIw
DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRH
sJ8YZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3EN3coTRiR
5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9tznDDgFHmV0ST9tD+leh
7fmdvhFHJlsTmKtdFoqwNxxXnUX/iJY2v7vKB3tvh2PX0DJq1l1sDPGzbjniazEuOQAnFN44wOwZ
ZoYS6J1yFhNkUsepNxz9gjDthBgd9K5c/3ATAOux9TN6S9ZV+AWNS2mw9bMoNlwUxFFzTWsL8TQH
2xc519woe2v1n/MuwU8XKhDzzMro6/1rqy6any2CbgTUUgGTLT2G/H783+9CHaZr77kgxve9oKeV
/afmiSTYzIw0bOIjL9kSGiG5VZFvC5F5GQytQIgLcOJ60g7YaEi7ghM5EFjp2CoHxhLbWNvSO1UQ
RwUVZ2J+GGOmRj8JDlQyXr8NYnon74Do29lLBlo3WiXQCBJ31G8JUJc9yB3D34xFMFbG02SrZvPA
Xpacw8Tvw3xrizp5f7NJzz3iiZ+gMEuFuZyUJHmPfWupRWgPK9Dx2hzLabjKSWJtyNBjYt1gD1iq
j6G8BaVmos8bdrKEZLFMOVLAMLrwjEsCsLa3AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD
VR0OBBYEFEe4zf/lb+74suwvTg75JbCOPGvDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF
AAOCAgEAACAjQTUEkMJAYmDv4jVM1z+s4jSQuKFvdvoWFqRINyzpkMLyPPgKn9iB5btb2iUspKdV
cSQy9sgL8rxq+JOssgfCX5/bzMiKqr5qb+FJEMwx14C7u8jYog5kV+qi9cKpMRXSIGrs/CIBKM+G
uIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2HJLw5QY33KbmkJs4j1xrG0aG
Q0JfPgEHU1RdZX33inOhmlRaHylDFCfChQ+1iHsaO5S3HWCntZznKWlXWpuTekMwGwPXYshApqr8
ZORK15FTAaggiG6cX0S5y2CBNOxv033aSF/rtJC8LakcC6wc1aJoIIAE1vyxjy+7SjENSoYc6+I2
KSb12tjE8nVhz36udmNKekBlk4f4HoCMhuWG1o8O/FMsYOgWYRqiPkN7zTlgVGr18okmAWiDSKIz
6MkEkbIRNBE+6tBDGR8Dk5AM/1E9V/RBbuHLoL7ryWPNbczk+DaqaJ3tvV2XcEQNtg413OEMXbug
UZTLfhbrES+jkkXITHHZvMmZUldGL1DPvTVp9D0VzgalLA8+9oG6lLvDu79leNKGef9JOxqDDPDe
eOzI8k1MGt6CKfjBWtrt7uYnXuhF0J0cUahoq0Tj0Itq4/g7u9xN12TyUb7mqqta6THuBrxzvxNi
Cp/HuZc=
-----END CERTIFICATE-----

T-TeleSec GlobalRoot Class 3
============================
-----BEGIN CERTIFICATE-----
MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM
IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU
cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgx
MDAxMTAyOTU2WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz
dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD
ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0GCSqGSIb3
DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN8ELg63iIVl6bmlQdTQyK
9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/RLyTPWGrTs0NvvAgJ1gORH8EGoel15YU
NpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZF
iP0Zf3WHHx+xGwpzJFu5ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W
0eDrXltMEnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGjQjBA
MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1A/d2O2GCahKqGFPr
AyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOyWL6ukK2YJ5f+AbGwUgC4TeQbIXQb
fsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzT
ucpH9sry9uetuUg/vBa3wW306gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7h
P0HHRwA11fXT91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml
e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4pTpPDpFQUWw==
-----END CERTIFICATE-----

D-TRUST Root Class 3 CA 2 2009
==============================
-----BEGIN CERTIFICATE-----
MIIEMzCCAxugAwIBAgIDCYPzMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQK
DAxELVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTAe
Fw0wOTExMDUwODM1NThaFw0yOTExMDUwODM1NThaME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxE
LVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTCCASIw
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANOySs96R+91myP6Oi/WUEWJNTrGa9v+2wBoqOAD
ER03UAifTUpolDWzU9GUY6cgVq/eUXjsKj3zSEhQPgrfRlWLJ23DEE0NkVJD2IfgXU42tSHKXzlA
BF9bfsyjxiupQB7ZNoTWSPOSHjRGICTBpFGOShrvUD9pXRl/RcPHAY9RySPocq60vFYJfxLLHLGv
KZAKyVXMD9O0Gu1HNVpK7ZxzBCHQqr0ME7UAyiZsxGsMlFqVlNpQmvH/pStmMaTJOKDfHR+4CS7z
p+hnUquVH+BGPtikw8paxTGA6Eian5Rp/hnd2HN8gcqW3o7tszIFZYQ05ub9VxC1X3a/L7AQDcUC
AwEAAaOCARowggEWMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFP3aFMSfMN4hvR5COfyrYyNJ
4PGEMA4GA1UdDwEB/wQEAwIBBjCB0wYDVR0fBIHLMIHIMIGAoH6gfIZ6bGRhcDovL2RpcmVjdG9y
eS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwUm9vdCUyMENsYXNzJTIwMyUyMENBJTIwMiUyMDIw
MDksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3QwQ6BBoD+G
PWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvY3JsL2QtdHJ1c3Rfcm9vdF9jbGFzc18zX2NhXzJfMjAw
OS5jcmwwDQYJKoZIhvcNAQELBQADggEBAH+X2zDI36ScfSF6gHDOFBJpiBSVYEQBrLLpME+bUMJm
2H6NMLVwMeniacfzcNsgFYbQDfC+rAF1hM5+n02/t2A7nPPKHeJeaNijnZflQGDSNiH+0LS4F9p0
o3/U37CYAqxva2ssJSRyoWXuJVrl5jLn8t+rSfrzkGkj2wTZ51xY/GXUl77M/C4KzCUqNQT4YJEV
dT1B/yMfGchs64JTBKbkTCJNjYy6zltz7GRUUG3RnFX7acM2w4y8PIWmawomDeCTmGCufsYkl4ph
X5GOZpIJhzbNi5stPvZR1FDUWSi9g/LMKHtThm3YJohw1+qRzT65ysCQblrGXnRl11z+o+I=
-----END CERTIFICATE-----

D-TRUST Root Class 3 CA 2 EV 2009
=================================
-----BEGIN CERTIFICATE-----
MIIEQzCCAyugAwIBAgIDCYP0MA0GCSqGSIb3DQEBCwUAMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK
DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw
OTAeFw0wOTExMDUwODUwNDZaFw0yOTExMDUwODUwNDZaMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK
DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw
OTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJnxhDRwui+3MKCOvXwEz75ivJn9gpfS
egpnljgJ9hBOlSJzmY3aFS3nBfwZcyK3jpgAvDw9rKFs+9Z5JUut8Mxk2og+KbgPCdM03TP1YtHh
zRnp7hhPTFiu4h7WDFsVWtg6uMQYZB7jM7K1iXdODL/ZlGsTl28So/6ZqQTMFexgaDbtCHu39b+T
7WYxg4zGcTSHThfqr4uRjRxWQa4iN1438h3Z0S0NL2lRp75mpoo6Kr3HGrHhFPC+Oh25z1uxav60
sUYgovseO3Dvk5h9jHOW8sXvhXCtKSb8HgQ+HKDYD8tSg2J87otTlZCpV6LqYQXY+U3EJ/pure35
11H3a6UCAwEAAaOCASQwggEgMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNOUikxiEyoZLsyv
cop9NteaHNxnMA4GA1UdDwEB/wQEAwIBBjCB3QYDVR0fBIHVMIHSMIGHoIGEoIGBhn9sZGFwOi8v
ZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBSb290JTIwQ2xhc3MlMjAzJTIwQ0El
MjAyJTIwRVYlMjAyMDA5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRp
b25saXN0MEagRKBChkBodHRwOi8vd3d3LmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X3Jvb3RfY2xh
c3NfM19jYV8yX2V2XzIwMDkuY3JsMA0GCSqGSIb3DQEBCwUAA4IBAQA07XtaPKSUiO8aEXUHL7P+
PPoeUSbrh/Yp3uDx1MYkCenBz1UbtDDZzhr+BlGmFaQt77JLvyAoJUnRpjZ3NOhk31KxEcdzes05
nsKtjHEh8lprr988TlWvsoRlFIm5d8sqMb7Po23Pb0iUMkZv53GMoKaEGTcH8gNFCSuGdXzfX2lX
ANtu2KZyIktQ1HWYVt+3GP9DQ1CuekR78HlR10M9p9OB0/DJT7naxpeG0ILD5EJt/rDiZE4OJudA
NCa1CInXCGNjOCd1HjPqbqjdn5lPdE2BiYBL3ZqXKVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVv
w9y4AyHqnxbxLFS1
-----END CERTIFICATE-----

CA Disig Root R2
================
-----BEGIN CERTIFICATE-----
MIIFaTCCA1GgAwIBAgIJAJK4iNuwisFjMA0GCSqGSIb3DQEBCwUAMFIxCzAJBgNVBAYTAlNLMRMw
EQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMuMRkwFwYDVQQDExBDQSBEaXNp
ZyBSb290IFIyMB4XDTEyMDcxOTA5MTUzMFoXDTQyMDcxOTA5MTUzMFowUjELMAkGA1UEBhMCU0sx
EzARBgNVBAcTCkJyYXRpc2xhdmExEzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERp
c2lnIFJvb3QgUjIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCio8QACdaFXS1tFPbC
w3OeNcJxVX6B+6tGUODBfEl45qt5WDza/3wcn9iXAng+a0EE6UG9vgMsRfYvZNSrXaNHPWSb6Wia
xswbP7q+sos0Ai6YVRn8jG+qX9pMzk0DIaPY0jSTVpbLTAwAFjxfGs3Ix2ymrdMxp7zo5eFm1tL7
A7RBZckQrg4FY8aAamkw/dLukO8NJ9+flXP04SXabBbeQTg06ov80egEFGEtQX6sx3dOy1FU+16S
GBsEWmjGycT6txOgmLcRK7fWV8x8nhfRyyX+hk4kLlYMeE2eARKmK6cBZW58Yh2EhN/qwGu1pSqV
g8NTEQxzHQuyRpDRQjrOQG6Vrf/GlK1ul4SOfW+eioANSW1z4nuSHsPzwfPrLgVv2RvPN3YEyLRa
5Beny912H9AZdugsBbPWnDTYltxhh5EF5EQIM8HauQhl1K6yNg3ruji6DOWbnuuNZt2Zz9aJQfYE
koopKW1rOhzndX0CcQ7zwOe9yxndnWCywmZgtrEE7snmhrmaZkCo5xHtgUUDi/ZnWejBBhG93c+A
Ak9lQHhcR1DIm+YfgXvkRKhbhZri3lrVx/k6RGZL5DJUfORsnLMOPReisjQS1n6yqEm70XooQL6i
Fh/f5DcfEXP7kAplQ6INfPgGAVUzfbANuPT1rqVCV3w2EYx7XsQDnYx5nQIDAQABo0IwQDAPBgNV
HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUtZn4r7CU9eMg1gqtzk5WpC5u
Qu0wDQYJKoZIhvcNAQELBQADggIBACYGXnDnZTPIgm7ZnBc6G3pmsgH2eDtpXi/q/075KMOYKmFM
tCQSin1tERT3nLXK5ryeJ45MGcipvXrA1zYObYVybqjGom32+nNjf7xueQgcnYqfGopTpti72TVV
sRHFqQOzVju5hJMiXn7B9hJSi+osZ7z+Nkz1uM/Rs0mSO9MpDpkblvdhuDvEK7Z4bLQjb/D907Je
dR+Zlais9trhxTF7+9FGs9K8Z7RiVLoJ92Owk6Ka+elSLotgEqv89WBW7xBci8QaQtyDW2QOy7W8
1k/BfDxujRNt+3vrMNDcTa/F1balTFtxyegxvug4BkihGuLq0t4SOVga/4AOgnXmt8kHbA7v/zjx
mHHEt38OFdAlab0inSvtBfZGR6ztwPDUO+Ls7pZbkBNOHlY667DvlruWIxG68kOGdGSVyCh13x01
utI3gzhTODY7z2zp+WsO0PsE6E9312UBeIYMej4hYvF/Y3EMyZ9E26gnonW+boE+18DrG5gPcFw0
sorMwIUY6256s/daoQe/qUKS82Ail+QUoQebTnbAjn39pCXHR+3/H3OszMOl6W8KjptlwlCFtaOg
UxLMVYdh84GuEEZhvUQhuMI9dM9+JDX6HAcOmz0iyu8xL4ysEr3vQCj8KWefshNPZiTEUxnpHikV
7+ZtsH8tZ/3zbBt1RqPlShfppNcL
-----END CERTIFICATE-----

ACCVRAIZ1
=========
-----BEGIN CERTIFICATE-----
MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UEAwwJQUNDVlJB
SVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQswCQYDVQQGEwJFUzAeFw0xMTA1
MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQBgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwH
UEtJQUNDVjENMAsGA1UECgwEQUNDVjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4IC
DwAwggIKAoICAQCbqau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gM
jmoYHtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWoG2ioPej0
RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpAlHPrzg5XPAOBOp0KoVdD
aaxXbXmQeOW1tDvYvEyNKKGno6e6Ak4l0Squ7a4DIrhrIA8wKFSVf+DuzgpmndFALW4ir50awQUZ
0m/A8p/4e7MCQvtQqR0tkw8jq8bBD5L/0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDG
WuzndN9wrqODJerWx5eHk6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs7
8yM2x/474KElB0iryYl0/wiPgL/AlmXz7uxLaL2diMMxs0Dx6M/2OLuc5NF/1OVYm3z61PMOm3WR
5LpSLhl+0fXNWhn8ugb2+1KoS5kE3fj5tItQo05iifCHJPqDQsGH+tUtKSpacXpkatcnYGMN285J
9Y0fkIkyF/hzQ7jSWpOGYdbhdQrqeWZ2iE9x6wQl1gpaepPluUsXQA+xtrn13k/c4LOsOxFwYIRK
Q26ZIMApcQrAZQIDAQABo4ICyzCCAscwfQYIKwYBBQUHAQEEcTBvMEwGCCsGAQUFBzAChkBodHRw
Oi8vd3d3LmFjY3YuZXMvZmlsZWFkbWluL0FyY2hpdm9zL2NlcnRpZmljYWRvcy9yYWl6YWNjdjEu
Y3J0MB8GCCsGAQUFBzABhhNodHRwOi8vb2NzcC5hY2N2LmVzMB0GA1UdDgQWBBTSh7Tj3zcnk1X2
VuqB5TbMjB4/vTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNKHtOPfNyeTVfZW6oHlNsyM
Hj+9MIIBcwYDVR0gBIIBajCCAWYwggFiBgRVHSAAMIIBWDCCASIGCCsGAQUFBwICMIIBFB6CARAA
QQB1AHQAbwByAGkAZABhAGQAIABkAGUAIABDAGUAcgB0AGkAZgBpAGMAYQBjAGkA8wBuACAAUgBh
AO0AegAgAGQAZQAgAGwAYQAgAEEAQwBDAFYAIAAoAEEAZwBlAG4AYwBpAGEAIABkAGUAIABUAGUA
YwBuAG8AbABvAGcA7QBhACAAeQAgAEMAZQByAHQAaQBmAGkAYwBhAGMAaQDzAG4AIABFAGwAZQBj
AHQAcgDzAG4AaQBjAGEALAAgAEMASQBGACAAUQA0ADYAMAAxADEANQA2AEUAKQAuACAAQwBQAFMA
IABlAG4AIABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBjAGMAdgAuAGUAczAwBggrBgEFBQcCARYk
aHR0cDovL3d3dy5hY2N2LmVzL2xlZ2lzbGFjaW9uX2MuaHRtMFUGA1UdHwROMEwwSqBIoEaGRGh0
dHA6Ly93d3cuYWNjdi5lcy9maWxlYWRtaW4vQXJjaGl2b3MvY2VydGlmaWNhZG9zL3JhaXphY2N2
MV9kZXIuY3JsMA4GA1UdDwEB/wQEAwIBBjAXBgNVHREEEDAOgQxhY2N2QGFjY3YuZXMwDQYJKoZI
hvcNAQEFBQADggIBAJcxAp/n/UNnSEQU5CmH7UwoZtCPNdpNYbdKl02125DgBS4OxnnQ8pdpD70E
R9m+27Up2pvZrqmZ1dM8MJP1jaGo/AaNRPTKFpV8M9xii6g3+CfYCS0b78gUJyCpZET/LtZ1qmxN
YEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+mAM/EKXMRNt6GGT6d7hmKG9Ww7Y49
nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepDvV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJ
TS+xJlsndQAJxGJ3KQhfnlmstn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3
sCPdK6jT2iWH7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h
I6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szAh1xA2syVP1Xg
Nce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xFd3+YJ5oyXSrjhO7FmGYvliAd
3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2HpPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3p
EfbRD0tVNEYqi4Y7
-----END CERTIFICATE-----

TWCA Global Root CA
===================
-----BEGIN CERTIFICATE-----
MIIFQTCCAymgAwIBAgICDL4wDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCVFcxEjAQBgNVBAoT
CVRBSVdBTi1DQTEQMA4GA1UECxMHUm9vdCBDQTEcMBoGA1UEAxMTVFdDQSBHbG9iYWwgUm9vdCBD
QTAeFw0xMjA2MjcwNjI4MzNaFw0zMDEyMzExNTU5NTlaMFExCzAJBgNVBAYTAlRXMRIwEAYDVQQK
EwlUQUlXQU4tQ0ExEDAOBgNVBAsTB1Jvb3QgQ0ExHDAaBgNVBAMTE1RXQ0EgR2xvYmFsIFJvb3Qg
Q0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCwBdvI64zEbooh745NnHEKH1Jw7W2C
nJfF10xORUnLQEK1EjRsGcJ0pDFfhQKX7EMzClPSnIyOt7h52yvVavKOZsTuKwEHktSz0ALfUPZV
r2YOy+BHYC8rMjk1Ujoog/h7FsYYuGLWRyWRzvAZEk2tY/XTP3VfKfChMBwqoJimFb3u/Rk28OKR
Q4/6ytYQJ0lM793B8YVwm8rqqFpD/G2Gb3PpN0Wp8DbHzIh1HrtsBv+baz4X7GGqcXzGHaL3SekV
tTzWoWH1EfcFbx39Eb7QMAfCKbAJTibc46KokWofwpFFiFzlmLhxpRUZyXx1EcxwdE8tmx2RRP1W
KKD+u4ZqyPpcC1jcxkt2yKsi2XMPpfRaAok/T54igu6idFMqPVMnaR1sjjIsZAAmY2E2TqNGtz99
sy2sbZCilaLOz9qC5wc0GZbpuCGqKX6mOL6OKUohZnkfs8O1CWfe1tQHRvMq2uYiN2DLgbYPoA/p
yJV/v1WRBXrPPRXAb94JlAGD1zQbzECl8LibZ9WYkTunhHiVJqRaCPgrdLQABDzfuBSO6N+pjWxn
kjMdwLfS7JLIvgm/LCkFbwJrnu+8vyq8W8BQj0FwcYeyTbcEqYSjMq+u7msXi7Kx/mzhkIyIqJdI
zshNy/MGz19qCkKxHh53L46g5pIOBvwFItIm4TFRfTLcDwIDAQABoyMwITAOBgNVHQ8BAf8EBAMC
AQYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAXzSBdu+WHdXltdkCY4QWwa6g
cFGn90xHNcgL1yg9iXHZqjNB6hQbbCEAwGxCGX6faVsgQt+i0trEfJdLjbDorMjupWkEmQqSpqsn
LhpNgb+E1HAerUf+/UqdM+DyucRFCCEK2mlpc3INvjT+lIutwx4116KD7+U4x6WFH6vPNOw/KP4M
8VeGTslV9xzU2KV9Bnpv1d8Q34FOIWWxtuEXeZVFBs5fzNxGiWNoRI2T9GRwoD2dKAXDOXC4Ynsg
/eTb6QihuJ49CcdP+yz4k3ZB3lLg4VfSnQO8d57+nile98FRYB/e2guyLXW3Q0iT5/Z5xoRdgFlg
lPx4mI88k1HtQJAH32RjJMtOcQWh15QaiDLxInQirqWm2BJpTGCjAu4r7NRjkgtevi92a6O2JryP
A9gK8kxkRr05YuWW6zRjESjMlfGt7+/cgFhI6Uu46mWs6fyAtbXIRfmswZ/ZuepiiI7E8UuDEq3m
i4TWnsLrgxifarsbJGAzcMzs9zLzXNl5fe+epP7JI8Mk7hWSsT2RTyaGvWZzJBPqpK5jwa19hAM8
EHiGG3njxPPyBJUgriOCxLM6AGK/5jYk4Ve6xx6QddVfP5VhK8E7zeWzaGHQRiapIVJpLesux+t3
zqY6tQMzT3bR51xUAV3LePTJDL/PEo4XLSNolOer/qmyKwbQBM0=
-----END CERTIFICATE-----

TeliaSonera Root CA v1
======================
-----BEGIN CERTIFICATE-----
MIIFODCCAyCgAwIBAgIRAJW+FqD3LkbxezmCcvqLzZYwDQYJKoZIhvcNAQEFBQAwNzEUMBIGA1UE
CgwLVGVsaWFTb25lcmExHzAdBgNVBAMMFlRlbGlhU29uZXJhIFJvb3QgQ0EgdjEwHhcNMDcxMDE4
MTIwMDUwWhcNMzIxMDE4MTIwMDUwWjA3MRQwEgYDVQQKDAtUZWxpYVNvbmVyYTEfMB0GA1UEAwwW
VGVsaWFTb25lcmEgUm9vdCBDQSB2MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMK+
6yfwIaPzaSZVfp3FVRaRXP3vIb9TgHot0pGMYzHw7CTww6XScnwQbfQ3t+XmfHnqjLWCi65ItqwA
3GV17CpNX8GH9SBlK4GoRz6JI5UwFpB/6FcHSOcZrr9FZ7E3GwYq/t75rH2D+1665I+XZ75Ljo1k
B1c4VWk0Nj0TSO9P4tNmHqTPGrdeNjPUtAa9GAH9d4RQAEX1jF3oI7x+/jXh7VB7qTCNGdMJjmhn
Xb88lxhTuylixcpecsHHltTbLaC0H2kD7OriUPEMPPCs81Mt8Bz17Ww5OXOAFshSsCPN4D7c3TxH
oLs1iuKYaIu+5b9y7tL6pe0S7fyYGKkmdtwoSxAgHNN/Fnct7W+A90m7UwW7XWjH1Mh1Fj+JWov3
F0fUTPHSiXk+TT2YqGHeOh7S+F4D4MHJHIzTjU3TlTazN19jY5szFPAtJmtTfImMMsJu7D0hADnJ
oWjiUIMusDor8zagrC/kb2HCUQk5PotTubtn2txTuXZZNp1D5SDgPTJghSJRt8czu90VL6R4pgd7
gUY2BIbdeTXHlSw7sKMXNeVzH7RcWe/a6hBle3rQf5+ztCo3O3CLm1u5K7fsslESl1MpWtTwEhDc
TwK7EpIvYtQ/aUN8Ddb8WHUBiJ1YFkveupD/RwGJBmr2X7KQarMCpgKIv7NHfirZ1fpoeDVNAgMB
AAGjPzA9MA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBTwj1k4ALP1j5qW
DNXr+nuqF+gTEjANBgkqhkiG9w0BAQUFAAOCAgEAvuRcYk4k9AwI//DTDGjkk0kiP0Qnb7tt3oNm
zqjMDfz1mgbldxSR651Be5kqhOX//CHBXfDkH1e3damhXwIm/9fH907eT/j3HEbAek9ALCI18Bmx
0GtnLLCo4MBANzX2hFxc469CeP6nyQ1Q6g2EdvZR74NTxnr/DlZJLo961gzmJ1TjTQpgcmLNkQfW
pb/ImWvtxBnmq0wROMVvMeJuScg/doAmAyYp4Db29iBT4xdwNBedY2gea+zDTYa4EzAvXUYNR0PV
G6pZDrlcjQZIrXSHX8f8MVRBE+LHIQ6e4B4N4cB7Q4WQxYpYxmUKeFfyxiMPAdkgS94P+5KFdSpc
c41teyWRyu5FrgZLAMzTsVlQ2jqIOylDRl6XK1TOU2+NSueW+r9xDkKLfP0ooNBIytrEgUy7onOT
JsjrDNYmiLbAJM+7vVvrdX3pCI6GMyx5dwlppYn8s3CQh3aP0yK7Qs69cwsgJirQmz1wHiRszYd2
qReWt88NkvuOGKmYSdGe/mBEciG5Ge3C9THxOUiIkCR1VBatzvT4aRRkOfujuLpwQMcnHL/EVlP6
Y2XQ8xwOFvVrhlhNGNTkDY6lnVuR3HYkUD/GKvvZt5y11ubQ2egZixVxSK236thZiNSQvxaz2ems
WWFUyBy6ysHK4bkgTI86k4mloMy/0/Z1pHWWbVY=
-----END CERTIFICATE-----

T-TeleSec GlobalRoot Class 2
============================
-----BEGIN CERTIFICATE-----
MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM
IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU
cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgx
MDAxMTA0MDE0WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz
dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD
ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0GCSqGSIb3
DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUdAqSzm1nzHoqvNK38DcLZ
SBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiCFoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/F
vudocP05l03Sx5iRUKrERLMjfTlH6VJi1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx970
2cu+fjOlbpSD8DT6IavqjnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGV
WOHAD3bZwI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGjQjBA
MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/WSA2AHmgoCJrjNXy
YdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhyNsZt+U2e+iKo4YFWz827n+qrkRk4
r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPACuvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNf
vNoBYimipidx5joifsFvHZVwIEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR
3p1m0IvVVGb6g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN
9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlPBSeOE6Fuwg==
-----END CERTIFICATE-----

Atos TrustedRoot 2011
=====================
-----BEGIN CERTIFICATE-----
MIIDdzCCAl+gAwIBAgIIXDPLYixfszIwDQYJKoZIhvcNAQELBQAwPDEeMBwGA1UEAwwVQXRvcyBU
cnVzdGVkUm9vdCAyMDExMQ0wCwYDVQQKDARBdG9zMQswCQYDVQQGEwJERTAeFw0xMTA3MDcxNDU4
MzBaFw0zMDEyMzEyMzU5NTlaMDwxHjAcBgNVBAMMFUF0b3MgVHJ1c3RlZFJvb3QgMjAxMTENMAsG
A1UECgwEQXRvczELMAkGA1UEBhMCREUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCV
hTuXbyo7LjvPpvMpNb7PGKw+qtn4TaA+Gke5vJrf8v7MPkfoepbCJI419KkM/IL9bcFyYie96mvr
54rMVD6QUM+A1JX76LWC1BTFtqlVJVfbsVD2sGBkWXppzwO3bw2+yj5vdHLqqjAqc2K+SZFhyBH+
DgMq92og3AIVDV4VavzjgsG1xZ1kCWyjWZgHJ8cblithdHFsQ/H3NYkQ4J7sVaE3IqKHBAUsR320
HLliKWYoyrfhk/WklAOZuXCFteZI6o1Q/NnezG8HDt0Lcp2AMBYHlT8oDv3FdU9T1nSatCQujgKR
z3bFmx5VdJx4IbHwLfELn8LVlhgf8FQieowHAgMBAAGjfTB7MB0GA1UdDgQWBBSnpQaxLKYJYO7R
l+lwrrw7GWzbITAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKelBrEspglg7tGX6XCuvDsZ
bNshMBgGA1UdIAQRMA8wDQYLKwYBBAGwLQMEAQEwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB
CwUAA4IBAQAmdzTblEiGKkGdLD4GkGDEjKwLVLgfuXvTBznk+j57sj1O7Z8jvZfza1zv7v1Apt+h
k6EKhqzvINB5Ab149xnYJDE0BAGmuhWawyfc2E8PzBhj/5kPDpFrdRbhIfzYJsdHt6bPWHJxfrrh
TZVHO8mvbaG0weyJ9rQPOLXiZNwlz6bb65pcmaHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a9
61qn8FYiqTxlVMYVqL2Gns2Dlmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G
3mB/ufNPRJLvKrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed
-----END CERTIFICATE-----

QuoVadis Root CA 1 G3
=====================
-----BEGIN CERTIFICATE-----
MIIFYDCCA0igAwIBAgIUeFhfLq0sGUvjNwc1NBMotZbUZZMwDQYJKoZIhvcNAQELBQAwSDELMAkG
A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv
b3QgQ0EgMSBHMzAeFw0xMjAxMTIxNzI3NDRaFw00MjAxMTIxNzI3NDRaMEgxCzAJBgNVBAYTAkJN
MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDEg
RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCgvlAQjunybEC0BJyFuTHK3C3kEakE
PBtVwedYMB0ktMPvhd6MLOHBPd+C5k+tR4ds7FtJwUrVu4/sh6x/gpqG7D0DmVIB0jWerNrwU8lm
PNSsAgHaJNM7qAJGr6Qc4/hzWHa39g6QDbXwz8z6+cZM5cOGMAqNF34168Xfuw6cwI2H44g4hWf6
Pser4BOcBRiYz5P1sZK0/CPTz9XEJ0ngnjybCKOLXSoh4Pw5qlPafX7PGglTvF0FBM+hSo+LdoIN
ofjSxxR3W5A2B4GbPgb6Ul5jxaYA/qXpUhtStZI5cgMJYr2wYBZupt0lwgNm3fME0UDiTouG9G/l
g6AnhF4EwfWQvTA9xO+oabw4m6SkltFi2mnAAZauy8RRNOoMqv8hjlmPSlzkYZqn0ukqeI1RPToV
7qJZjqlc3sX5kCLliEVx3ZGZbHqfPT2YfF72vhZooF6uCyP8Wg+qInYtyaEQHeTTRCOQiJ/GKubX
9ZqzWB4vMIkIG1SitZgj7Ah3HJVdYdHLiZxfokqRmu8hqkkWCKi9YSgxyXSthfbZxbGL0eUQMk1f
iyA6PEkfM4VZDdvLCXVDaXP7a3F98N/ETH3Goy7IlXnLc6KOTk0k+17kBL5yG6YnLUlamXrXXAkg
t3+UuU/xDRxeiEIbEbfnkduebPRq34wGmAOtzCjvpUfzUwIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUo5fW816iEOGrRZ88F2Q87gFwnMwwDQYJKoZI
hvcNAQELBQADggIBABj6W3X8PnrHX3fHyt/PX8MSxEBd1DKquGrX1RUVRpgjpeaQWxiZTOOtQqOC
MTaIzen7xASWSIsBx40Bz1szBpZGZnQdT+3Btrm0DWHMY37XLneMlhwqI2hrhVd2cDMT/uFPpiN3
GPoajOi9ZcnPP/TJF9zrx7zABC4tRi9pZsMbj/7sPtPKlL92CiUNqXsCHKnQO18LwIE6PWThv6ct
Tr1NxNgpxiIY0MWscgKCP6o6ojoilzHdCGPDdRS5YCgtW2jgFqlmgiNR9etT2DGbe+m3nUvriBbP
+V04ikkwj+3x6xn0dxoxGE1nVGwvb2X52z3sIexe9PSLymBlVNFxZPT5pqOBMzYzcfCkeF9OrYMh
3jRJjehZrJ3ydlo28hP0r+AJx2EqbPfgna67hkooby7utHnNkDPDs3b69fBsnQGQ+p6Q9pxyz0fa
wx/kNSBT8lTR32GDpgLiJTjehTItXnOQUl1CxM49S+H5GYQd1aJQzEH7QRTDvdbJWqNjZgKAvQU6
O0ec7AAmTPWIUb+oI38YB7AL7YsmoWTTYUrrXJ/es69nA7Mf3W1daWhpq1467HxpvMc7hU6eFbm0
FU/DlXpY18ls6Wy58yljXrQs8C097Vpl4KlbQMJImYFtnh8GKjwStIsPm6Ik8KaN1nrgS7ZklmOV
hMJKzRwuJIczYOXD
-----END CERTIFICATE-----

QuoVadis Root CA 2 G3
=====================
-----BEGIN CERTIFICATE-----
MIIFYDCCA0igAwIBAgIURFc0JFuBiZs18s64KztbpybwdSgwDQYJKoZIhvcNAQELBQAwSDELMAkG
A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv
b3QgQ0EgMiBHMzAeFw0xMjAxMTIxODU5MzJaFw00MjAxMTIxODU5MzJaMEgxCzAJBgNVBAYTAkJN
MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDIg
RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQChriWyARjcV4g/Ruv5r+LrI3HimtFh
ZiFfqq8nUeVuGxbULX1QsFN3vXg6YOJkApt8hpvWGo6t/x8Vf9WVHhLL5hSEBMHfNrMWn4rjyduY
NM7YMxcoRvynyfDStNVNCXJJ+fKH46nafaF9a7I6JaltUkSs+L5u+9ymc5GQYaYDFCDy54ejiK2t
oIz/pgslUiXnFgHVy7g1gQyjO/Dh4fxaXc6AcW34Sas+O7q414AB+6XrW7PFXmAqMaCvN+ggOp+o
MiwMzAkd056OXbxMmO7FGmh77FOm6RQ1o9/NgJ8MSPsc9PG/Srj61YxxSscfrf5BmrODXfKEVu+l
V0POKa2Mq1W/xPtbAd0jIaFYAI7D0GoT7RPjEiuA3GfmlbLNHiJuKvhB1PLKFAeNilUSxmn1uIZo
L1NesNKqIcGY5jDjZ1XHm26sGahVpkUG0CM62+tlXSoREfA7T8pt9DTEceT/AFr2XK4jYIVz8eQQ
sSWu1ZK7E8EM4DnatDlXtas1qnIhO4M15zHfeiFuuDIIfR0ykRVKYnLP43ehvNURG3YBZwjgQQvD
6xVu+KQZ2aKrr+InUlYrAoosFCT5v0ICvybIxo/gbjh9Uy3l7ZizlWNof/k19N+IxWA1ksB8aRxh
lRbQ694Lrz4EEEVlWFA4r0jyWbYW8jwNkALGcC4BrTwV1wIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU7edvdlq/YOxJW8ald7tyFnGbxD0wDQYJKoZI
hvcNAQELBQADggIBAJHfgD9DCX5xwvfrs4iP4VGyvD11+ShdyLyZm3tdquXK4Qr36LLTn91nMX66
AarHakE7kNQIXLJgapDwyM4DYvmL7ftuKtwGTTwpD4kWilhMSA/ohGHqPHKmd+RCroijQ1h5fq7K
pVMNqT1wvSAZYaRsOPxDMuHBR//47PERIjKWnML2W2mWeyAMQ0GaW/ZZGYjeVYg3UQt4XAoeo0L9
x52ID8DyeAIkVJOviYeIyUqAHerQbj5hLja7NQ4nlv1mNDthcnPxFlxHBlRJAHpYErAK74X9sbgz
dWqTHBLmYF5vHX/JHyPLhGGfHoJE+V+tYlUkmlKY7VHnoX6XOuYvHxHaU4AshZ6rNRDbIl9qxV6X
U/IyAgkwo1jwDQHVcsaxfGl7w/U2Rcxhbl5MlMVerugOXou/983g7aEOGzPuVBj+D77vfoRrQ+Nw
mNtddbINWQeFFSM51vHfqSYP1kjHs6Yi9TM3WpVHn3u6GBVv/9YUZINJ0gpnIdsPNWNgKCLjsZWD
zYWm3S8P52dSbrsvhXz1SnPnxT7AvSESBT/8twNJAlvIJebiVDj1eYeMHVOyToV7BjjHLPj4sHKN
JeV3UvQDHEimUF+IIDBu8oJDqz2XhOdT+yHBTw8imoa4WSr2Rz0ZiC3oheGe7IUIarFsNMkd7Egr
O3jtZsSOeWmD3n+M
-----END CERTIFICATE-----

QuoVadis Root CA 3 G3
=====================
-----BEGIN CERTIFICATE-----
MIIFYDCCA0igAwIBAgIULvWbAiin23r/1aOp7r0DoM8Sah0wDQYJKoZIhvcNAQELBQAwSDELMAkG
A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv
b3QgQ0EgMyBHMzAeFw0xMjAxMTIyMDI2MzJaFw00MjAxMTIyMDI2MzJaMEgxCzAJBgNVBAYTAkJN
MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDMg
RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCzyw4QZ47qFJenMioKVjZ/aEzHs286
IxSR/xl/pcqs7rN2nXrpixurazHb+gtTTK/FpRp5PIpM/6zfJd5O2YIyC0TeytuMrKNuFoM7pmRL
Mon7FhY4futD4tN0SsJiCnMK3UmzV9KwCoWdcTzeo8vAMvMBOSBDGzXRU7Ox7sWTaYI+FrUoRqHe
6okJ7UO4BUaKhvVZR74bbwEhELn9qdIoyhA5CcoTNs+cra1AdHkrAj80//ogaX3T7mH1urPnMNA3
I4ZyYUUpSFlob3emLoG+B01vr87ERRORFHAGjx+f+IdpsQ7vw4kZ6+ocYfx6bIrc1gMLnia6Et3U
VDmrJqMz6nWB2i3ND0/kA9HvFZcba5DFApCTZgIhsUfei5pKgLlVj7WiL8DWM2fafsSntARE60f7
5li59wzweyuxwHApw0BiLTtIadwjPEjrewl5qW3aqDCYz4ByA4imW0aucnl8CAMhZa634RylsSqi
Md5mBPfAdOhx3v89WcyWJhKLhZVXGqtrdQtEPREoPHtht+KPZ0/l7DxMYIBpVzgeAVuNVejH38DM
dyM0SXV89pgR6y3e7UEuFAUCf+D+IOs15xGsIs5XPd7JMG0QA4XN8f+MFrXBsj6IbGB/kE+V9/Yt
rQE5BwT6dYB9v0lQ7e/JxHwc64B+27bQ3RP+ydOc17KXqQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUxhfQvKjqAkPyGwaZXSuQILnXnOQwDQYJKoZI
hvcNAQELBQADggIBADRh2Va1EodVTd2jNTFGu6QHcrxfYWLopfsLN7E8trP6KZ1/AvWkyaiTt3px
KGmPc+FSkNrVvjrlt3ZqVoAh313m6Tqe5T72omnHKgqwGEfcIHB9UqM+WXzBusnIFUBhynLWcKzS
t/Ac5IYp8M7vaGPQtSCKFWGafoaYtMnCdvvMujAWzKNhxnQT5WvvoxXqA/4Ti2Tk08HS6IT7SdEQ
TXlm66r99I0xHnAUrdzeZxNMgRVhvLfZkXdxGYFgu/BYpbWcC/ePIlUnwEsBbTuZDdQdm2NnL9Du
DcpmvJRPpq3t/O5jrFc/ZSXPsoaP0Aj/uHYUbt7lJ+yreLVTubY/6CD50qi+YUbKh4yE8/nxoGib
Ih6BJpsQBJFxwAYf3KDTuVan45gtf4Od34wrnDKOMpTwATwiKp9Dwi7DmDkHOHv8XgBCH/MyJnmD
hPbl8MFREsALHgQjDFSlTC9JxUrRtm5gDWv8a4uFJGS3iQ6rJUdbPM9+Sb3H6QrG2vd+DhcI00iX
0HGS8A85PjRqHH3Y8iKuu2n0M7SmSFXRDw4m6Oy2Cy2nhTXN/VnIn9HNPlopNLk9hM6xZdRZkZFW
dSHBd575euFgndOtBBj0fOtek49TSiIp+EgrPk2GrFt/ywaZWWDYWGWVjUTR939+J399roD1B0y2
PpxxVJkES/1Y+Zj0
-----END CERTIFICATE-----

DigiCert Assured ID Root G2
===========================
-----BEGIN CERTIFICATE-----
MIIDljCCAn6gAwIBAgIQC5McOtY5Z+pnI7/Dr5r0SzANBgkqhkiG9w0BAQsFADBlMQswCQYDVQQG
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw
IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIwHhcNMTMwODAxMTIwMDAwWhcNMzgw
MTE1MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL
ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIw
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ5ygvUj82ckmIkzTz+GoeMVSAn61UQbVH
35ao1K+ALbkKz3X9iaV9JPrjIgwrvJUXCzO/GU1BBpAAvQxNEP4HteccbiJVMWWXvdMX0h5i89vq
bFCMP4QMls+3ywPgym2hFEwbid3tALBSfK+RbLE4E9HpEgjAALAcKxHad3A2m67OeYfcgnDmCXRw
VWmvo2ifv922ebPynXApVfSr/5Vh88lAbx3RvpO704gqu52/clpWcTs/1PPRCv4o76Pu2ZmvA9OP
YLfykqGxvYmJHzDNw6YuYjOuFgJ3RFrngQo8p0Quebg/BLxcoIfhG69Rjs3sLPr4/m3wOnyqi+Rn
lTGNAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTO
w0q5mVXyuNtgv6l+vVa1lzan1jANBgkqhkiG9w0BAQsFAAOCAQEAyqVVjOPIQW5pJ6d1Ee88hjZv
0p3GeDgdaZaikmkuOGybfQTUiaWxMTeKySHMq2zNixya1r9I0jJmwYrA8y8678Dj1JGG0VDjA9tz
d29KOVPt3ibHtX2vK0LRdWLjSisCx1BL4GnilmwORGYQRI+tBev4eaymG+g3NJ1TyWGqolKvSnAW
hsI6yLETcDbYz+70CjTVW0z9B5yiutkBclzzTcHdDrEcDcRjvq30FPuJ7KJBDkzMyFdA0G4Dqs0M
jomZmWzwPDCvON9vvKO+KSAnq3T/EyJ43pdSVR6DtVQgA+6uwE9W3jfMw3+qBCe703e4YtsXfJwo
IhNzbM8m9Yop5w==
-----END CERTIFICATE-----

DigiCert Assured ID Root G3
===========================
-----BEGIN CERTIFICATE-----
MIICRjCCAc2gAwIBAgIQC6Fa+h3foLVJRK/NJKBs7DAKBggqhkjOPQQDAzBlMQswCQYDVQQGEwJV
UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQwIgYD
VQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1
MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwdjAQ
BgcqhkjOPQIBBgUrgQQAIgNiAAQZ57ysRGXtzbg/WPuNsVepRC0FFfLvC/8QdJ+1YlJfZn4f5dwb
RXkLzMZTCp2NXQLZqVneAlr2lSoOjThKiknGvMYDOAdfVdp+CW7if17QRSAPWXYQ1qAk8C3eNvJs
KTmjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTL0L2p4ZgF
UaFNN6KDec6NHSrkhDAKBggqhkjOPQQDAwNnADBkAjAlpIFFAmsSS3V0T8gj43DydXLefInwz5Fy
YZ5eEJJZVrmDxxDnOOlYJjZ91eQ0hjkCMHw2U/Aw5WJjOpnitqM7mzT6HtoQknFekROn3aRukswy
1vUhZscv6pZjamVFkpUBtA==
-----END CERTIFICATE-----

DigiCert Global Root G2
=======================
-----BEGIN CERTIFICATE-----
MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBhMQswCQYDVQQG
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw
HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUx
MjAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3
dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkq
hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI2/Ou8jqJ
kTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx1x7e/dfgy5SDN67sH0NO
3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQq2EGnI/yuum06ZIya7XzV+hdG82MHauV
BJVJ8zUtluNJbd134/tJS7SsVQepj5WztCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyM
UNGPHgm+F6HmIcr9g+UQvIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQAB
o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV5uNu
5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY1Yl9PMWLSn/pvtsr
F9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4NeF22d+mQrvHRAiGfzZ0JFrabA0U
WTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NGFdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBH
QRFXGU7Aj64GxJUTFy8bJZ918rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/
iyK5S9kJRaTepLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl
MrY=
-----END CERTIFICATE-----

DigiCert Global Root G3
=======================
-----BEGIN CERTIFICATE-----
MIICPzCCAcWgAwIBAgIQBVVWvPJepDU1w6QP1atFcjAKBggqhkjOPQQDAzBhMQswCQYDVQQGEwJV
UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAwHgYD
VQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAw
MDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5k
aWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEczMHYwEAYHKoZIzj0C
AQYFK4EEACIDYgAE3afZu4q4C/sLfyHS8L6+c/MzXRq8NOrexpu80JX28MzQC7phW1FGfp4tn+6O
YwwX7Adw9c+ELkCDnOg/QW07rdOkFFk2eJ0DQ+4QE2xy3q6Ip6FrtUPOZ9wj/wMco+I+o0IwQDAP
BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUs9tIpPmhxdiuNkHMEWNp
Yim8S8YwCgYIKoZIzj0EAwMDaAAwZQIxAK288mw/EkrRLTnDCgmXc/SINoyIJ7vmiI1Qhadj+Z4y
3maTD/HMsQmP3Wyr+mt/oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34
VOKa5Vt8sycX
-----END CERTIFICATE-----

DigiCert Trusted Root G4
========================
-----BEGIN CERTIFICATE-----
MIIFkDCCA3igAwIBAgIQBZsbV56OITLiOQe9p3d1XDANBgkqhkiG9w0BAQwFADBiMQswCQYDVQQG
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEw
HwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1
MTIwMDAwWjBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwggIiMA0G
CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1KPDAiMGkz7MKnJS7JIT3yithZwuEp
pz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2rsnnyyhHS5F/WBTxSD1Ifxp4VpX6+n6lXFllVcq9o
k3DCsrp1mWpzMpTREEQQLt+C8weE5nQ7bXHiLQwb7iDVySAdYyktzuxeTsiT+CFhmzTrBcZe7Fsa
vOvJz82sNEBfsXpm7nfISKhmV1efVFiODCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGY
QJB5w3jHtrHEtWoYOAMQjdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8rhsDdV14Ztk6
MUSaM0C/CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaYdj1ZXUJ2h4mXaXpI8OCiEhtm
mnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+wJS00mFt6zPZxd9LBADMfRyVw4/3IbKyEbe7
f/LVjHAsQWCqsWMYRJUadmJ+9oCw++hkpjPRiQfhvbfmQ6QYuKZ3AeEPlAwhHbJUKSWJbOUOUlFH
dL4mrLZBdd56rF+NP8m800ERElvlEFDrMcXKchYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8
oR7FwI+isX4KJpn15GkvmB0t9dmpsh3lGwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud
DwEB/wQEAwIBhjAdBgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wDQYJKoZIhvcNAQEMBQAD
ggIBALth2X2pbL4XxJEbw6GiAI3jZGgPVs93rnD5/ZpKmbnJeFwMDF/k5hQpVgs2SV1EY+CtnJYY
ZhsjDT156W1r1lT40jzBQ0CuHVD1UvyQO7uYmWlrx8GnqGikJ9yd+SeuMIW59mdNOj6PWTkiU0Tr
yF0Dyu1Qen1iIQqAyHNm0aAFYF/opbSnr6j3bTWcfFqK1qI4mfN4i/RN0iAL3gTujJtHgXINwBQy
7zBZLq7gcfJW5GqXb5JQbZaNaHqasjYUegbyJLkJEVDXCLG4iXqEI2FCKeWjzaIgQdfRnGTZ6iah
ixTXTBmyUEFxPT9NcCOGDErcgdLMMpSEDQgJlxxPwO5rIHQw0uA5NBCFIRUBCOhVMt5xSdkoF1BN
5r5N0XWs0Mr7QbhDparTwwVETyw2m+L64kW4I1NsBm9nVX9GtUw/bihaeSbSpKhil9Ie4u1Ki7wb
/UdKDd9nZn6yW0HQO+T0O/QEY+nvwlQAUaCKKsnOeMzV6ocEGLPOr0mIr/OSmbaz5mEP0oUA51Aa
5BuVnRmhuZyxm7EAHu/QD09CbMkKvO5D+jpxpchNJqU1/YldvIViHTLSoCtU7ZpXwdv6EM8Zt4tK
G48BtieVU+i2iW1bvGjUI+iLUaJW+fCmgKDWHrO8Dw9TdSmq6hN35N6MgSGtBxBHEa2HPQfRdbzP
82Z+
-----END CERTIFICATE-----

COMODO RSA Certification Authority
==================================
-----BEGIN CERTIFICATE-----
MIIF2DCCA8CgAwIBAgIQTKr5yttjb+Af907YWwOGnTANBgkqhkiG9w0BAQwFADCBhTELMAkGA1UE
BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG
A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlv
biBBdXRob3JpdHkwHhcNMTAwMTE5MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMC
R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE
ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBB
dXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR6FSS0gpWsawNJN3Fz0Rn
dJkrN6N9I3AAcbxT38T6KhKPS38QVr2fcHK3YX/JSw8Xpz3jsARh7v8Rl8f0hj4K+j5c+ZPmNHrZ
FGvnnLOFoIJ6dq9xkNfs/Q36nGz637CC9BR++b7Epi9Pf5l/tfxnQ3K9DADWietrLNPtj5gcFKt+
5eNu/Nio5JIk2kNrYrhV/erBvGy2i/MOjZrkm2xpmfh4SDBF1a3hDTxFYPwyllEnvGfDyi62a+pG
x8cgoLEfZd5ICLqkTqnyg0Y3hOvozIFIQ2dOciqbXL1MGyiKXCJ7tKuY2e7gUYPDCUZObT6Z+pUX
2nwzV0E8jVHtC7ZcryxjGt9XyD+86V3Em69FmeKjWiS0uqlWPc9vqv9JWL7wqP/0uK3pN/u6uPQL
OvnoQ0IeidiEyxPx2bvhiWC4jChWrBQdnArncevPDt09qZahSL0896+1DSJMwBGB7FY79tOi4lu3
sgQiUpWAk2nojkxl8ZEDLXB0AuqLZxUpaVICu9ffUGpVRr+goyhhf3DQw6KqLCGqR84onAZFdr+C
GCe01a60y1Dma/RMhnEw6abfFobg2P9A3fvQQoh/ozM6LlweQRGBY84YcWsr7KaKtzFcOmpH4MN5
WdYgGq/yapiqcrxXStJLnbsQ/LBMQeXtHT1eKJ2czL+zUdqnR+WEUwIDAQABo0IwQDAdBgNVHQ4E
FgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w
DQYJKoZIhvcNAQEMBQADggIBAArx1UaEt65Ru2yyTUEUAJNMnMvlwFTPoCWOAvn9sKIN9SCYPBMt
rFaisNZ+EZLpLrqeLppysb0ZRGxhNaKatBYSaVqM4dc+pBroLwP0rmEdEBsqpIt6xf4FpuHA1sj+
nq6PK7o9mfjYcwlYRm6mnPTXJ9OV2jeDchzTc+CiR5kDOF3VSXkAKRzH7JsgHAckaVd4sjn8OoSg
tZx8jb8uk2IntznaFxiuvTwJaP+EmzzV1gsD41eeFPfR60/IvYcjt7ZJQ3mFXLrrkguhxuhoqEwW
sRqZCuhTLJK7oQkYdQxlqHvLI7cawiiFwxv/0Cti76R7CZGYZ4wUAc1oBmpjIXUDgIiKboHGhfKp
pC3n9KUkEEeDys30jXlYsQab5xoq2Z0B15R97QNKyvDb6KkBPvVWmckejkk9u+UJueBPSZI9FoJA
zMxZxuY67RIuaTxslbH9qh17f4a+Hg4yRvv7E491f0yLS0Zj/gA0QHDBw7mh3aZw4gSzQbzpgJHq
ZJx64SIDqZxubw5lT2yHh17zbqD5daWbQOhTsiedSrnAdyGN/4fy3ryM7xfft0kL0fJuMAsaDk52
7RH89elWsn2/x20Kk4yl0MC2Hb46TpSi125sC8KKfPog88Tk5c0NqMuRkrF8hey1FGlmDoLnzc7I
LaZRfyHBNVOFBkpdn627G190
-----END CERTIFICATE-----

USERTrust RSA Certification Authority
=====================================
-----BEGIN CERTIFICATE-----
MIIF3jCCA8agAwIBAgIQAf1tMPyjylGoG7xkDjUDLTANBgkqhkiG9w0BAQwFADCBiDELMAkGA1UE
BhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQK
ExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNh
dGlvbiBBdXRob3JpdHkwHhcNMTAwMjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UE
BhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQK
ExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNh
dGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCAEmUXNg7D2wiz
0KxXDXbtzSfTTK1Qg2HiqiBNCS1kCdzOiZ/MPans9s/B3PHTsdZ7NygRK0faOca8Ohm0X6a9fZ2j
Y0K2dvKpOyuR+OJv0OwWIJAJPuLodMkYtJHUYmTbf6MG8YgYapAiPLz+E/CHFHv25B+O1ORRxhFn
RghRy4YUVD+8M/5+bJz/Fp0YvVGONaanZshyZ9shZrHUm3gDwFA66Mzw3LyeTP6vBZY1H1dat//O
+T23LLb2VN3I5xI6Ta5MirdcmrS3ID3KfyI0rn47aGYBROcBTkZTmzNg95S+UzeQc0PzMsNT79uq
/nROacdrjGCT3sTHDN/hMq7MkztReJVni+49Vv4M0GkPGw/zJSZrM233bkf6c0Plfg6lZrEpfDKE
Y1WJxA3Bk1QwGROs0303p+tdOmw1XNtB1xLaqUkL39iAigmTYo61Zs8liM2EuLE/pDkP2QKe6xJM
lXzzawWpXhaDzLhn4ugTncxbgtNMs+1b/97lc6wjOy0AvzVVdAlJ2ElYGn+SNuZRkg7zJn0cTRe8
yexDJtC/QV9AqURE9JnnV4eeUB9XVKg+/XRjL7FQZQnmWEIuQxpMtPAlR1n6BB6T1CZGSlCBst6+
eLf8ZxXhyVeEHg9j1uliutZfVS7qXMYoCAQlObgOK6nyTJccBz8NUvXt7y+CDwIDAQABo0IwQDAd
BgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rIDZsswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF
MAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAFzUfA3P9wF9QZllDHPFUp/L+M+ZBn8b2kMVn54CVVeW
FPFSPCeHlCjtHzoBN6J2/FNQwISbxmtOuowhT6KOVWKR82kV2LyI48SqC/3vqOlLVSoGIG1VeCkZ
7l8wXEskEVX/JJpuXior7gtNn3/3ATiUFJVDBwn7YKnuHKsSjKCaXqeYalltiz8I+8jRRa8YFWSQ
Eg9zKC7F4iRO/Fjs8PRF/iKz6y+O0tlFYQXBl2+odnKPi4w2r78NBc5xjeambx9spnFixdjQg3IM
8WcRiQycE0xyNN+81XHfqnHd4blsjDwSXWXavVcStkNr/+XeTWYRUc+ZruwXtuhxkYzeSf7dNXGi
FSeUHM9h4ya7b6NnJSFd5t0dCy5oGzuCr+yDZ4XUmFF0sbmZgIn/f3gZXHlKYC6SQK5MNyosycdi
yA5d9zZbyuAlJQG03RoHnHcAP9Dc1ew91Pq7P8yF1m9/qS3fuQL39ZeatTXaw2ewh0qpKJ4jjv9c
J2vhsE/zB+4ALtRZh8tSQZXq9EfX7mRBVXyNWQKV3WKdwrnuWih0hKWbt5DHDAff9Yk2dDLWKMGw
sAvgnEzDHNb842m1R0aBL6KCq9NjRHDEjf8tM7qtj3u1cIiuPhnPQCjY/MiQu12ZIvVS5ljFH4gx
Q+6IHdfGjjxDah2nGN59PRbxYvnKkKj9
-----END CERTIFICATE-----

USERTrust ECC Certification Authority
=====================================
-----BEGIN CERTIFICATE-----
MIICjzCCAhWgAwIBAgIQXIuZxVqUxdJxVt7NiYDMJjAKBggqhkjOPQQDAzCBiDELMAkGA1UEBhMC
VVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU
aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlv
biBBdXRob3JpdHkwHhcNMTAwMjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMC
VVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU
aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlv
biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQarFRaqfloI+d61SRvU8Za2EurxtW2
0eZzca7dnNYMYf3boIkDuAUU7FfO7l0/4iGzzvfUinngo4N+LZfQYcTxmdwlkWOrfzCjtHDix6Ez
nPO/LlxTsV+zfTJ/ijTjeXmjQjBAMB0GA1UdDgQWBBQ64QmG1M8ZwpZ2dEl23OA1xmNjmjAOBgNV
HQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjA2Z6EWCNzklwBB
HU6+4WMBzzuqQhFkoJ2UOQIReVx7Hfpkue4WQrO/isIJxOzksU0CMQDpKmFHjFJKS04YcPbWRNZu
9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg=
-----END CERTIFICATE-----

GlobalSign ECC Root CA - R5
===========================
-----BEGIN CERTIFICATE-----
MIICHjCCAaSgAwIBAgIRYFlJ4CYuu1X5CneKcflK2GwwCgYIKoZIzj0EAwMwUDEkMCIGA1UECxMb
R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD
EwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoXDTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMb
R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD
EwpHbG9iYWxTaWduMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAER0UOlvt9Xb/pOdEh+J8LttV7HpI6
SFkc8GIxLcB6KP4ap1yztsyX50XUWPrRd21DosCHZTQKH3rd6zwzocWdTaRvQZU4f8kehOvRnkmS
h5SHDDqFSmafnVmTTZdhBoZKo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAd
BgNVHQ4EFgQUPeYpSJvqB8ohREom3m7e0oPQn1kwCgYIKoZIzj0EAwMDaAAwZQIxAOVpEslu28Yx
uglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7
yFz9SO8NdCKoCOJuxUnOxwy8p2Fp8fc74SrL+SvzZpA3
-----END CERTIFICATE-----

IdenTrust Commercial Root CA 1
==============================
-----BEGIN CERTIFICATE-----
MIIFYDCCA0igAwIBAgIQCgFCgAAAAUUjyES1AAAAAjANBgkqhkiG9w0BAQsFADBKMQswCQYDVQQG
EwJVUzESMBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBS
b290IENBIDEwHhcNMTQwMTE2MTgxMjIzWhcNMzQwMTE2MTgxMjIzWjBKMQswCQYDVQQGEwJVUzES
MBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBSb290IENB
IDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCnUBneP5k91DNG8W9RYYKyqU+PZ4ld
hNlT3Qwo2dfw/66VQ3KZ+bVdfIrBQuExUHTRgQ18zZshq0PirK1ehm7zCYofWjK9ouuU+ehcCuz/
mNKvcbO0U59Oh++SvL3sTzIwiEsXXlfEU8L2ApeN2WIrvyQfYo3fw7gpS0l4PJNgiCL8mdo2yMKi
1CxUAGc1bnO/AljwpN3lsKImesrgNqUZFvX9t++uP0D1bVoE/c40yiTcdCMbXTMTEl3EASX2MN0C
XZ/g1Ue9tOsbobtJSdifWwLziuQkkORiT0/Br4sOdBeo0XKIanoBScy0RnnGF7HamB4HWfp1IYVl
3ZBWzvurpWCdxJ35UrCLvYf5jysjCiN2O/cz4ckA82n5S6LgTrx+kzmEB/dEcH7+B1rlsazRGMzy
NeVJSQjKVsk9+w8YfYs7wRPCTY/JTw436R+hDmrfYi7LNQZReSzIJTj0+kuniVyc0uMNOYZKdHzV
WYfCP04MXFL0PfdSgvHqo6z9STQaKPNBiDoT7uje/5kdX7rL6B7yuVBgwDHTc+XvvqDtMwt0viAg
xGds8AgDelWAf0ZOlqf0Hj7h9tgJ4TNkK2PXMl6f+cB7D3hvl7yTmvmcEpB4eoCHFddydJxVdHix
uuFucAS6T6C6aMN7/zHwcz09lCqxC0EOoP5NiGVreTO01wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMC
AQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU7UQZwNPwBovupHu+QucmVMiONnYwDQYJKoZI
hvcNAQELBQADggIBAA2ukDL2pkt8RHYZYR4nKM1eVO8lvOMIkPkp165oCOGUAFjvLi5+U1KMtlwH
6oi6mYtQlNeCgN9hCQCTrQ0U5s7B8jeUeLBfnLOic7iPBZM4zY0+sLj7wM+x8uwtLRvM7Kqas6pg
ghstO8OEPVeKlh6cdbjTMM1gCIOQ045U8U1mwF10A0Cj7oV+wh93nAbowacYXVKV7cndJZ5t+qnt
ozo00Fl72u1Q8zW/7esUTTHHYPTa8Yec4kjixsU3+wYQ+nVZZjFHKdp2mhzpgq7vmrlR94gjmmmV
YjzlVYA211QC//G5Xc7UI2/YRYRKW2XviQzdFKcgyxilJbQN+QHwotL0AMh0jqEqSI5l2xPE4iUX
feu+h1sXIFRRk0pTAwvsXcoz7WL9RccvW9xYoIA55vrX/hMUpu09lEpCdNTDd1lzzY9GvlU47/ro
kTLql1gEIt44w8y8bckzOmoKaT+gyOpyj4xjhiO9bTyWnpXgSUyqorkqG5w2gXjtw+hG4iZZRHUe
2XWJUc0QhJ1hYMtd+ZciTY6Y5uN/9lu7rs3KSoFrXgvzUeF0K+l+J6fZmUlO+KWA2yUPHGNiiskz
Z2s8EIPGrd6ozRaOjfAHN3Gf8qv8QfXBi+wAN10J5U6A7/qxXDgGpRtK4dw4LTzcqx+QGtVKnO7R
cGzM7vRX+Bi6hG6H
-----END CERTIFICATE-----

IdenTrust Public Sector Root CA 1
=================================
-----BEGIN CERTIFICATE-----
MIIFZjCCA06gAwIBAgIQCgFCgAAAAUUjz0Z8AAAAAjANBgkqhkiG9w0BAQsFADBNMQswCQYDVQQG
EwJVUzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3Rv
ciBSb290IENBIDEwHhcNMTQwMTE2MTc1MzMyWhcNMzQwMTE2MTc1MzMyWjBNMQswCQYDVQQGEwJV
UzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3RvciBS
b290IENBIDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2IpT8pEiv6EdrCvsnduTy
P4o7ekosMSqMjbCpwzFrqHd2hCa2rIFCDQjrVVi7evi8ZX3yoG2LqEfpYnYeEe4IFNGyRBb06tD6
Hi9e28tzQa68ALBKK0CyrOE7S8ItneShm+waOh7wCLPQ5CQ1B5+ctMlSbdsHyo+1W/CD80/HLaXI
rcuVIKQxKFdYWuSNG5qrng0M8gozOSI5Cpcu81N3uURF/YTLNiCBWS2ab21ISGHKTN9T0a9SvESf
qy9rg3LvdYDaBjMbXcjaY8ZNzaxmMc3R3j6HEDbhuaR672BQssvKplbgN6+rNBM5Jeg5ZuSYeqoS
mJxZZoY+rfGwyj4GD3vwEUs3oERte8uojHH01bWRNszwFcYr3lEXsZdMUD2xlVl8BX0tIdUAvwFn
ol57plzy9yLxkA2T26pEUWbMfXYD62qoKjgZl3YNa4ph+bz27nb9cCvdKTz4Ch5bQhyLVi9VGxyh
LrXHFub4qjySjmm2AcG1hp2JDws4lFTo6tyePSW8Uybt1as5qsVATFSrsrTZ2fjXctscvG29ZV/v
iDUqZi/u9rNl8DONfJhBaUYPQxxp+pu10GFqzcpL2UyQRqsVWaFHVCkugyhfHMKiq3IXAAaOReyL
4jM9f9oZRORicsPfIsbyVtTdX5Vy7W1f90gDW/3FKqD2cyOEEBsB5wIDAQABo0IwQDAOBgNVHQ8B
Af8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU43HgntinQtnbcZFrlJPrw6PRFKMw
DQYJKoZIhvcNAQELBQADggIBAEf63QqwEZE4rU1d9+UOl1QZgkiHVIyqZJnYWv6IAcVYpZmxI1Qj
t2odIFflAWJBF9MJ23XLblSQdf4an4EKwt3X9wnQW3IV5B4Jaj0z8yGa5hV+rVHVDRDtfULAj+7A
mgjVQdZcDiFpboBhDhXAuM/FSRJSzL46zNQuOAXeNf0fb7iAaJg9TaDKQGXSc3z1i9kKlT/YPyNt
GtEqJBnZhbMX73huqVjRI9PHE+1yJX9dsXNw0H8GlwmEKYBhHfpe/3OsoOOJuBxxFcbeMX8S3OFt
m6/n6J91eEyrRjuazr8FGF1NFTwWmhlQBJqymm9li1JfPFgEKCXAZmExfrngdbkaqIHWchezxQMx
NRF4eKLg6TCMf4DfWN88uieW4oA0beOY02QnrEh+KHdcxiVhJfiFDGX6xDIvpZgF5PgLZxYWxoK4
Mhn5+bl53B/N66+rDt0b20XkeucC4pVd/GnwU2lhlXV5C15V5jgclKlZM57IcXR5f1GJtshquDDI
ajjDbp7hNxbqBWJMWxJH7ae0s1hWx0nzfxJoCTFx8G34Tkf71oXuxVhAGaQdp/lLQzfcaFpPz+vC
ZHTetBXZ9FRUGi8c15dxVJCO2SCdUyt/q4/i6jC8UDfv8Ue1fXwsBOxonbRJRBD0ckscZOf85muQ
3Wl9af0AVqW3rLatt8o+Ae+c
-----END CERTIFICATE-----

Entrust Root Certification Authority - G2
=========================================
-----BEGIN CERTIFICATE-----
MIIEPjCCAyagAwIBAgIESlOMKDANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMCVVMxFjAUBgNV
BAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVy
bXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ug
b25seTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIw
HhcNMDkwNzA3MTcyNTU0WhcNMzAxMjA3MTc1NTU0WjCBvjELMAkGA1UEBhMCVVMxFjAUBgNVBAoT
DUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVybXMx
OTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25s
eTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwggEi
MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6hLZy254Ma+KZ6TABp3bqMriVQRrJ2mFOWHLP
/vaCeb9zYQYKpSfYs1/TRU4cctZOMvJyig/3gxnQaoCAAEUesMfnmr8SVycco2gvCoe9amsOXmXz
HHfV1IWNcCG0szLni6LVhjkCsbjSR87kyUnEO6fe+1R9V77w6G7CebI6C1XiUJgWMhNcL3hWwcKU
s/Ja5CeanyTXxuzQmyWC48zCxEXFjJd6BmsqEZ+pCm5IO2/b1BEZQvePB7/1U1+cPvQXLOZprE4y
TGJ36rfo5bs0vBmLrpxR57d+tVOxMyLlbc9wPBr64ptntoP0jaWvYkxN4FisZDQSA/i2jZRjJKRx
AgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqciZ6
0B7vfec7aVHUbI2fkBJmqzANBgkqhkiG9w0BAQsFAAOCAQEAeZ8dlsa2eT8ijYfThwMEYGprmi5Z
iXMRrEPR9RP/jTkrwPK9T3CMqS/qF8QLVJ7UG5aYMzyorWKiAHarWWluBh1+xLlEjZivEtRh2woZ
Rkfz6/djwUAFQKXSt/S1mja/qYh2iARVBCuch38aNzx+LaUa2NSJXsq9rD1s2G2v1fN2D807iDgi
nWyTmsQ9v4IbZT+mD12q/OWyFcq1rca8PdCE6OoGcrBNOTJ4vz4RnAuknZoh8/CbCzB428Hch0P+
vGOaysXCHMnHjf87ElgI5rY97HosTvuDls4MPGmHVHOkc8KT/1EQrBVUAdj8BbGJoX90g5pJ19xO
e4pIb4tF9g==
-----END CERTIFICATE-----

Entrust Root Certification Authority - EC1
==========================================
-----BEGIN CERTIFICATE-----
MIIC+TCCAoCgAwIBAgINAKaLeSkAAAAAUNCR+TAKBggqhkjOPQQDAzCBvzELMAkGA1UEBhMCVVMx
FjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVn
YWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDEyIEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXpl
ZCB1c2Ugb25seTEzMDEGA1UEAxMqRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5
IC0gRUMxMB4XDTEyMTIxODE1MjUzNloXDTM3MTIxODE1NTUzNlowgb8xCzAJBgNVBAYTAlVTMRYw
FAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2Fs
LXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxMiBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhvcml6ZWQg
dXNlIG9ubHkxMzAxBgNVBAMTKkVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAt
IEVDMTB2MBAGByqGSM49AgEGBSuBBAAiA2IABIQTydC6bUF74mzQ61VfZgIaJPRbiWlH47jCffHy
AsWfoPZb1YsGGYZPUxBtByQnoaD41UcZYUx9ypMn6nQM72+WCf5j7HBdNq1nd67JnXxVRDqiY1Ef
9eNi1KlHBz7MIKNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
FLdj5xrdjekIplWDpOBqUEFlEUJJMAoGCCqGSM49BAMDA2cAMGQCMGF52OVCR98crlOZF7ZvHH3h
vxGU0QOIdeSNiaSKd0bebWHvAvX7td/M/k7//qnmpwIwW5nXhTcGtXsI/esni0qU+eH6p44mCOh8
kmhtc9hvJqwhAriZtyZBWyVgrtBIGu4G
-----END CERTIFICATE-----

CFCA EV ROOT
============
-----BEGIN CERTIFICATE-----
MIIFjTCCA3WgAwIBAgIEGErM1jANBgkqhkiG9w0BAQsFADBWMQswCQYDVQQGEwJDTjEwMC4GA1UE
CgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQDDAxDRkNB
IEVWIFJPT1QwHhcNMTIwODA4MDMwNzAxWhcNMjkxMjMxMDMwNzAxWjBWMQswCQYDVQQGEwJDTjEw
MC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQD
DAxDRkNBIEVWIFJPT1QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDXXWvNED8fBVnV
BU03sQ7smCuOFR36k0sXgiFxEFLXUWRwFsJVaU2OFW2fvwwbwuCjZ9YMrM8irq93VCpLTIpTUnrD
7i7es3ElweldPe6hL6P3KjzJIx1qqx2hp/Hz7KDVRM8Vz3IvHWOX6Jn5/ZOkVIBMUtRSqy5J35DN
uF++P96hyk0g1CXohClTt7GIH//62pCfCqktQT+x8Rgp7hZZLDRJGqgG16iI0gNyejLi6mhNbiyW
ZXvKWfry4t3uMCz7zEasxGPrb382KzRzEpR/38wmnvFyXVBlWY9ps4deMm/DGIq1lY+wejfeWkU7
xzbh72fROdOXW3NiGUgthxwG+3SYIElz8AXSG7Ggo7cbcNOIabla1jj0Ytwli3i/+Oh+uFzJlU9f
py25IGvPa931DfSCt/SyZi4QKPaXWnuWFo8BGS1sbn85WAZkgwGDg8NNkt0yxoekN+kWzqotaK8K
gWU6cMGbrU1tVMoqLUuFG7OA5nBFDWteNfB/O7ic5ARwiRIlk9oKmSJgamNgTnYGmE69g60dWIol
hdLHZR4tjsbftsbhf4oEIRUpdPA+nJCdDC7xij5aqgwJHsfVPKPtl8MeNPo4+QgO48BdK4PRVmrJ
tqhUUy54Mmc9gn900PvhtgVguXDbjgv5E1hvcWAQUhC5wUEJ73IfZzF4/5YFjQIDAQABo2MwYTAf
BgNVHSMEGDAWgBTj/i39KNALtbq2osS/BqoFjJP7LzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB
/wQEAwIBBjAdBgNVHQ4EFgQU4/4t/SjQC7W6tqLEvwaqBYyT+y8wDQYJKoZIhvcNAQELBQADggIB
ACXGumvrh8vegjmWPfBEp2uEcwPenStPuiB/vHiyz5ewG5zz13ku9Ui20vsXiObTej/tUxPQ4i9q
ecsAIyjmHjdXNYmEwnZPNDatZ8POQQaIxffu2Bq41gt/UP+TqhdLjOztUmCypAbqTuv0axn96/Ua
4CUqmtzHQTb3yHQFhDmVOdYLO6Qn+gjYXB74BGBSESgoA//vU2YApUo0FmZ8/Qmkrp5nGm9BC2sG
E5uPhnEFtC+NiWYzKXZUmhH4J/qyP5Hgzg0b8zAarb8iXRvTvyUFTeGSGn+ZnzxEk8rUQElsgIfX
BDrDMlI1Dlb4pd19xIsNER9Tyx6yF7Zod1rg1MvIB671Oi6ON7fQAUtDKXeMOZePglr4UeWJoBjn
aH9dCi77o0cOPaYjesYBx4/IXr9tgFa+iiS6M+qf4TIRnvHST4D2G0CvOJ4RUHlzEhLN5mydLIhy
PDCBBpEi6lmt2hkuIsKNuYyH4Ga8cyNfIWRjgEj1oDwYPZTISEEdQLpe/v5WOaHIz16eGWRGENoX
kbcFgKyLmZJ956LYBws2J+dIeWCKw9cTXPhyQN9Ky8+ZAAoACxGV2lZFA4gKn2fQ1XmxqI1AbQ3C
ekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su
-----END CERTIFICATE-----

OISTE WISeKey Global Root GB CA
===============================
-----BEGIN CERTIFICATE-----
MIIDtTCCAp2gAwIBAgIQdrEgUnTwhYdGs/gjGvbCwDANBgkqhkiG9w0BAQsFADBtMQswCQYDVQQG
EwJDSDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNl
ZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwgUm9vdCBHQiBDQTAeFw0xNDEyMDExNTAw
MzJaFw0zOTEyMDExNTEwMzFaMG0xCzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYD
VQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEds
b2JhbCBSb290IEdCIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2Be3HEokKtaX
scriHvt9OO+Y9bI5mE4nuBFde9IllIiCFSZqGzG7qFshISvYD06fWvGxWuR51jIjK+FTzJlFXHtP
rby/h0oLS5daqPZI7H17Dc0hBt+eFf1Biki3IPShehtX1F1Q/7pn2COZH8g/497/b1t3sWtuuMlk
9+HKQUYOKXHQuSP8yYFfTvdv37+ErXNku7dCjmn21HYdfp2nuFeKUWdy19SouJVUQHMD9ur06/4o
Qnc/nSMbsrY9gBQHTC5P99UKFg29ZkM3fiNDecNAhvVMKdqOmq0NpQSHiB6F4+lT1ZvIiwNjeOvg
GUpuuy9rM2RYk61pv48b74JIxwIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB
/zAdBgNVHQ4EFgQUNQ/INmNe4qPs+TtmFc5RUuORmj0wEAYJKwYBBAGCNxUBBAMCAQAwDQYJKoZI
hvcNAQELBQADggEBAEBM+4eymYGQfp3FsLAmzYh7KzKNbrghcViXfa43FK8+5/ea4n32cZiZBKpD
dHij40lhPnOMTZTg+XHEthYOU3gf1qKHLwI5gSk8rxWYITD+KJAAjNHhy/peyP34EEY7onhCkRd0
VQreUGdNZtGn//3ZwLWoo4rOZvUPQ82nK1d7Y0Zqqi5S2PTt4W2tKZB4SLrhI6qjiey1q5bAtEui
HZeeevJuQHHfaPFlTc58Bd9TZaml8LGXBHAVRgOY1NK/VLSgWH1Sb9pWJmLU2NuJMW8c8CLC02Ic
Nc1MaRVUGpCY3useX8p3x8uOPUNpnJpY0CQ73xtAln41rYHHTnG6iBM=
-----END CERTIFICATE-----

SZAFIR ROOT CA2
===============
-----BEGIN CERTIFICATE-----
MIIDcjCCAlqgAwIBAgIUPopdB+xV0jLVt+O2XwHrLdzk1uQwDQYJKoZIhvcNAQELBQAwUTELMAkG
A1UEBhMCUEwxKDAmBgNVBAoMH0tyYWpvd2EgSXpiYSBSb3psaWN6ZW5pb3dhIFMuQS4xGDAWBgNV
BAMMD1NaQUZJUiBST09UIENBMjAeFw0xNTEwMTkwNzQzMzBaFw0zNTEwMTkwNzQzMzBaMFExCzAJ
BgNVBAYTAlBMMSgwJgYDVQQKDB9LcmFqb3dhIEl6YmEgUm96bGljemVuaW93YSBTLkEuMRgwFgYD
VQQDDA9TWkFGSVIgUk9PVCBDQTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3vD5Q
qEvNQLXOYeeWyrSh2gwisPq1e3YAd4wLz32ohswmUeQgPYUM1ljj5/QqGJ3a0a4m7utT3PSQ1hNK
DJA8w/Ta0o4NkjrcsbH/ON7Dui1fgLkCvUqdGw+0w8LBZwPd3BucPbOw3gAeqDRHu5rr/gsUvTaE
2g0gv/pby6kWIK05YO4vdbbnl5z5Pv1+TW9NL++IDWr63fE9biCloBK0TXC5ztdyO4mTp4CEHCdJ
ckm1/zuVnsHMyAHs6A6KCpbns6aH5db5BSsNl0BwPLqsdVqc1U2dAgrSS5tmS0YHF2Wtn2yIANwi
ieDhZNRnvDF5YTy7ykHNXGoAyDw4jlivAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0P
AQH/BAQDAgEGMB0GA1UdDgQWBBQuFqlKGLXLzPVvUPMjX/hd56zwyDANBgkqhkiG9w0BAQsFAAOC
AQEAtXP4A9xZWx126aMqe5Aosk3AM0+qmrHUuOQn/6mWmc5G4G18TKI4pAZw8PRBEew/R40/cof5
O/2kbytTAOD/OblqBw7rHRz2onKQy4I9EYKL0rufKq8h5mOGnXkZ7/e7DDWQw4rtTw/1zBLZpD67
oPwglV9PJi8RI4NOdQcPv5vRtB3pEAT+ymCPoky4rc/hkA/NrgrHXXu3UNLUYfrVFdvXn4dRVOul
4+vJhaAlIDf7js4MNIThPIGyd05DpYhfhmehPea0XGG2Ptv+tyjFogeutcrKjSoS75ftwjCkySp6
+/NNIxuZMzSgLvWpCz/UXeHPhJ/iGcJfitYgHuNztw==
-----END CERTIFICATE-----

Certum Trusted Network CA 2
===========================
-----BEGIN CERTIFICATE-----
MIIF0jCCA7qgAwIBAgIQIdbQSk8lD8kyN/yqXhKN6TANBgkqhkiG9w0BAQ0FADCBgDELMAkGA1UE
BhMCUEwxIjAgBgNVBAoTGVVuaXpldG8gVGVjaG5vbG9naWVzIFMuQS4xJzAlBgNVBAsTHkNlcnR1
bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEkMCIGA1UEAxMbQ2VydHVtIFRydXN0ZWQgTmV0d29y
ayBDQSAyMCIYDzIwMTExMDA2MDgzOTU2WhgPMjA0NjEwMDYwODM5NTZaMIGAMQswCQYDVQQGEwJQ
TDEiMCAGA1UEChMZVW5pemV0byBUZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENl
cnRpZmljYXRpb24gQXV0aG9yaXR5MSQwIgYDVQQDExtDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENB
IDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC9+Xj45tWADGSdhhuWZGc/IjoedQF9
7/tcZ4zJzFxrqZHmuULlIEub2pt7uZld2ZuAS9eEQCsn0+i6MLs+CRqnSZXvK0AkwpfHp+6bJe+o
CgCXhVqqndwpyeI1B+twTUrWwbNWuKFBOJvR+zF/j+Bf4bE/D44WSWDXBo0Y+aomEKsq09DRZ40b
Rr5HMNUuctHFY9rnY3lEfktjJImGLjQ/KUxSiyqnwOKRKIm5wFv5HdnnJ63/mgKXwcZQkpsCLL2p
uTRZCr+ESv/f/rOf69me4Jgj7KZrdxYq28ytOxykh9xGc14ZYmhFV+SQgkK7QtbwYeDBoz1mo130
GO6IyY0XRSmZMnUCMe4pJshrAua1YkV/NxVaI2iJ1D7eTiew8EAMvE0Xy02isx7QBlrd9pPPV3WZ
9fqGGmd4s7+W/jTcvedSVuWz5XV710GRBdxdaeOVDUO5/IOWOZV7bIBaTxNyxtd9KXpEulKkKtVB
Rgkg/iKgtlswjbyJDNXXcPiHUv3a76xRLgezTv7QCdpw75j6VuZt27VXS9zlLCUVyJ4ueE742pye
hizKV/Ma5ciSixqClnrDvFASadgOWkaLOusm+iPJtrCBvkIApPjW/jAux9JG9uWOdf3yzLnQh1vM
BhBgu4M1t15n3kfsmUjxpKEV/q2MYo45VU85FrmxY53/twIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
AQH/MB0GA1UdDgQWBBS2oVQ5AsOgP46KvPrU+Bym0ToO/TAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZI
hvcNAQENBQADggIBAHGlDs7k6b8/ONWJWsQCYftMxRQXLYtPU2sQF/xlhMcQSZDe28cmk4gmb3DW
Al45oPePq5a1pRNcgRRtDoGCERuKTsZPpd1iHkTfCVn0W3cLN+mLIMb4Ck4uWBzrM9DPhmDJ2vuA
L55MYIR4PSFk1vtBHxgP58l1cb29XN40hz5BsA72udY/CROWFC/emh1auVbONTqwX3BNXuMp8SMo
clm2q8KMZiYcdywmdjWLKKdpoPk79SPdhRB0yZADVpHnr7pH1BKXESLjokmUbOe3lEu6LaTaM4tM
pkT/WjzGHWTYtTHkpjx6qFcL2+1hGsvxznN3Y6SHb0xRONbkX8eftoEq5IVIeVheO/jbAoJnwTnb
w3RLPTYe+SmTiGhbqEQZIfCn6IENLOiTNrQ3ssqwGyZ6miUfmpqAnksqP/ujmv5zMnHCnsZy4Ypo
J/HkD7TETKVhk/iXEAcqMCWpuchxuO9ozC1+9eB+D4Kob7a6bINDd82Kkhehnlt4Fj1F4jNy3eFm
ypnTycUm/Q1oBEauttmbjL4ZvrHG8hnjXALKLNhvSgfZyTXaQHXyxKcZb55CEJh15pWLYLztxRLX
is7VmFxWlgPF7ncGNf/P5O4/E2Hu29othfDNrp2yGAlFw5Khchf8R7agCyzxxN5DaAhqXzvwdmP7
zAYspsbiDrW5viSP
-----END CERTIFICATE-----

Hellenic Academic and Research Institutions RootCA 2015
=======================================================
-----BEGIN CERTIFICATE-----
MIIGCzCCA/OgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBpjELMAkGA1UEBhMCR1IxDzANBgNVBAcT
BkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0
aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNVBAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNl
YXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIwMTUwHhcNMTUwNzA3MTAxMTIxWhcNNDAwNjMwMTAx
MTIxWjCBpjELMAkGA1UEBhMCR1IxDzANBgNVBAcTBkF0aGVuczFEMEIGA1UEChM7SGVsbGVuaWMg
QWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBDZXJ0LiBBdXRob3JpdHkxQDA+BgNV
BAMTN0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgUm9vdENBIDIw
MTUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDC+Kk/G4n8PDwEXT2QNrCROnk8Zlrv
bTkBSRq0t89/TSNTt5AA4xMqKKYx8ZEA4yjsriFBzh/a/X0SWwGDD7mwX5nh8hKDgE0GPt+sr+eh
iGsxr/CL0BgzuNtFajT0AoAkKAoCFZVedioNmToUW/bLy1O8E00BiDeUJRtCvCLYjqOWXjrZMts+
6PAQZe104S+nfK8nNLspfZu2zwnI5dMK/IhlZXQK3HMcXM1AsRzUtoSMTFDPaI6oWa7CJ06CojXd
FPQf/7J31Ycvqm59JCfnxssm5uX+Zwdj2EUN3TpZZTlYepKZcj2chF6IIbjV9Cz82XBST3i4vTwr
i5WY9bPRaM8gFH5MXF/ni+X1NYEZN9cRCLdmvtNKzoNXADrDgfgXy5I2XdGj2HUb4Ysn6npIQf1F
GQatJ5lOwXBH3bWfgVMS5bGMSF0xQxfjjMZ6Y5ZLKTBOhE5iGV48zpeQpX8B653g+IuJ3SWYPZK2
fu/Z8VFRfS0myGlZYeCsargqNhEEelC9MoS+L9xy1dcdFkfkR2YgP/SWxa+OAXqlD3pk9Q0Yh9mu
iNX6hME6wGkoLfINaFGq46V3xqSQDqE3izEjR8EJCOtu93ib14L8hCCZSRm2Ekax+0VVFqmjZayc
Bw/qa9wfLgZy7IaIEuQt218FL+TwA9MmM+eAws1CoRc0CwIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUcRVnyMjJvXVdctA4GGqd83EkVAswDQYJKoZI
hvcNAQELBQADggIBAHW7bVRLqhBYRjTyYtcWNl0IXtVsyIe9tC5G8jH4fOpCtZMWVdyhDBKg2mF+
D1hYc2Ryx+hFjtyp8iY/xnmMsVMIM4GwVhO+5lFc2JsKT0ucVlMC6U/2DWDqTUJV6HwbISHTGzrM
d/K4kPFox/la/vot9L/J9UUbzjgQKjeKeaO04wlshYaT/4mWJ3iBj2fjRnRUjtkNaeJK9E10A/+y
d+2VZ5fkscWrv2oj6NSU4kQoYsRL4vDY4ilrGnB+JGGTe08DMiUNRSQrlrRGar9KC/eaj8GsGsVn
82800vpzY4zvFrCopEYq+OsS7HK07/grfoxSwIuEVPkvPuNVqNxmsdnhX9izjFk0WaSrT2y7Hxjb
davYy5LNlDhhDgcGH0tGEPEVvo2FXDtKK4F5D7Rpn0lQl033DlZdwJVqwjbDG2jJ9SrcR5q+ss7F
Jej6A7na+RZukYT1HCjI/CbM1xyQVqdfbzoEvM14iQuODy+jqk+iGxI9FghAD/FGTNeqewjBCvVt
J94Cj8rDtSvK6evIIVM4pcw72Hc3MKJP2W/R8kCtQXoXxdZKNYm3QdV8hn9VTYNKpXMgwDqvkPGa
JI7ZjnHKe7iG2rKPmT4dEw0SEe7Uq/DpFXYC5ODfqiAeW2GFZECpkJcNrVPSWh2HagCXZWK0vm9q
p/UsQu0yrbYhnr68
-----END CERTIFICATE-----

Hellenic Academic and Research Institutions ECC RootCA 2015
===========================================================
-----BEGIN CERTIFICATE-----
MIICwzCCAkqgAwIBAgIBADAKBggqhkjOPQQDAjCBqjELMAkGA1UEBhMCR1IxDzANBgNVBAcTBkF0
aGVuczFEMEIGA1UEChM7SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9u
cyBDZXJ0LiBBdXRob3JpdHkxRDBCBgNVBAMTO0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJj
aCBJbnN0aXR1dGlvbnMgRUNDIFJvb3RDQSAyMDE1MB4XDTE1MDcwNzEwMzcxMloXDTQwMDYzMDEw
MzcxMlowgaoxCzAJBgNVBAYTAkdSMQ8wDQYDVQQHEwZBdGhlbnMxRDBCBgNVBAoTO0hlbGxlbmlj
IEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9yaXR5MUQwQgYD
VQQDEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIEVDQyBSb290
Q0EgMjAxNTB2MBAGByqGSM49AgEGBSuBBAAiA2IABJKgQehLgoRc4vgxEZmGZE4JJS+dQS8KrjVP
dJWyUWRrjWvmP3CV8AVER6ZyOFB2lQJajq4onvktTpnvLEhvTCUp6NFxW98dwXU3tNf6e3pCnGoK
Vlp8aQuqgAkkbH7BRqNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O
BBYEFLQiC4KZJAEOnLvkDv2/+5cgk5kqMAoGCCqGSM49BAMCA2cAMGQCMGfOFmI4oqxiRaeplSTA
GiecMjvAwNW6qef4BENThe5SId6d9SWDPp5YSy/XZxMOIQIwBeF1Ad5o7SofTUwJCA3sS61kFyjn
dc5FZXIhF8siQQ6ME5g4mlRtm8rifOoCWCKR
-----END CERTIFICATE-----

ISRG Root X1
============
-----BEGIN CERTIFICATE-----
MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAwTzELMAkGA1UE
BhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2VhcmNoIEdyb3VwMRUwEwYDVQQD
EwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQG
EwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMT
DElTUkcgUm9vdCBYMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54r
Vygch77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+0TM8ukj1
3Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6UA5/TR5d8mUgjU+g4rk8K
b4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sWT8KOEUt+zwvo/7V3LvSye0rgTBIlDHCN
Aymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyHB5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ
4Q7e2RCOFvu396j3x+UCB5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf
1b0SHzUvKBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWnOlFu
hjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTnjh8BCNAw1FtxNrQH
usEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbwqHyGO0aoSCqI3Haadr8faqU9GY/r
OPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CIrU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4G
A1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY
9umbbjANBgkqhkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL
ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ3BebYhtF8GaV
0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KKNFtY2PwByVS5uCbMiogziUwt
hDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJw
TdwJx4nLCgdNbOhdjsnvzqvHu7UrTkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nx
e5AW0wdeRlN8NwdCjNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZA
JzVcoyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq4RgqsahD
YVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPAmRGunUHBcnWEvgJBQl9n
JEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57demyPxgcYxn/eR44/KJ4EBs+lVDR3veyJ
m+kXQ99b21/+jh5Xos1AnX5iItreGCc=
-----END CERTIFICATE-----

AC RAIZ FNMT-RCM
================
-----BEGIN CERTIFICATE-----
MIIFgzCCA2ugAwIBAgIPXZONMGc2yAYdGsdUhGkHMA0GCSqGSIb3DQEBCwUAMDsxCzAJBgNVBAYT
AkVTMREwDwYDVQQKDAhGTk1ULVJDTTEZMBcGA1UECwwQQUMgUkFJWiBGTk1ULVJDTTAeFw0wODEw
MjkxNTU5NTZaFw0zMDAxMDEwMDAwMDBaMDsxCzAJBgNVBAYTAkVTMREwDwYDVQQKDAhGTk1ULVJD
TTEZMBcGA1UECwwQQUMgUkFJWiBGTk1ULVJDTTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC
ggIBALpxgHpMhm5/yBNtwMZ9HACXjywMI7sQmkCpGreHiPibVmr75nuOi5KOpyVdWRHbNi63URcf
qQgfBBckWKo3Shjf5TnUV/3XwSyRAZHiItQDwFj8d0fsjz50Q7qsNI1NOHZnjrDIbzAzWHFctPVr
btQBULgTfmxKo0nRIBnuvMApGGWn3v7v3QqQIecaZ5JCEJhfTzC8PhxFtBDXaEAUwED653cXeuYL
j2VbPNmaUtu1vZ5Gzz3rkQUCwJaydkxNEJY7kvqcfw+Z374jNUUeAlz+taibmSXaXvMiwzn15Cou
08YfxGyqxRxqAQVKL9LFwag0Jl1mpdICIfkYtwb1TplvqKtMUejPUBjFd8g5CSxJkjKZqLsXF3mw
WsXmo8RZZUc1g16p6DULmbvkzSDGm0oGObVo/CK67lWMK07q87Hj/LaZmtVC+nFNCM+HHmpxffnT
tOmlcYF7wk5HlqX2doWjKI/pgG6BU6VtX7hI+cL5NqYuSf+4lsKMB7ObiFj86xsc3i1w4peSMKGJ
47xVqCfWS+2QrYv6YyVZLag13cqXM7zlzced0ezvXg5KkAYmY6252TUtB7p2ZSysV4999AeU14EC
ll2jB0nVetBX+RvnU0Z1qrB5QstocQjpYL05ac70r8NWQMetUqIJ5G+GR4of6ygnXYMgrwTJbFaa
i0b1AgMBAAGjgYMwgYAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYE
FPd9xf3E6Jobd2Sn9R2gzL+HYJptMD4GA1UdIAQ3MDUwMwYEVR0gADArMCkGCCsGAQUFBwIBFh1o
dHRwOi8vd3d3LmNlcnQuZm5tdC5lcy9kcGNzLzANBgkqhkiG9w0BAQsFAAOCAgEAB5BK3/MjTvDD
nFFlm5wioooMhfNzKWtN/gHiqQxjAb8EZ6WdmF/9ARP67Jpi6Yb+tmLSbkyU+8B1RXxlDPiyN8+s
D8+Nb/kZ94/sHvJwnvDKuO+3/3Y3dlv2bojzr2IyIpMNOmqOFGYMLVN0V2Ue1bLdI4E7pWYjJ2cJ
j+F3qkPNZVEI7VFY/uY5+ctHhKQV8Xa7pO6kO8Rf77IzlhEYt8llvhjho6Tc+hj507wTmzl6NLrT
Qfv6MooqtyuGC2mDOL7Nii4LcK2NJpLuHvUBKwrZ1pebbuCoGRw6IYsMHkCtA+fdZn71uSANA+iW
+YJF1DngoABd15jmfZ5nc8OaKveri6E6FO80vFIOiZiaBECEHX5FaZNXzuvO+FB8TxxuBEOb+dY7
Ixjp6o7RTUaN8Tvkasq6+yO3m/qZASlaWFot4/nUbQ4mrcFuNLwy+AwF+mWj2zs3gyLp1txyM/1d
8iC9djwj2ij3+RvrWWTV3F9yfiD8zYm1kGdNYno/Tq0dwzn+evQoFt9B9kiABdcPUXmsEKvU7ANm
5mqwujGSQkBqvjrTcuFqN1W8rB2Vt2lh8kORdOag0wokRqEIr9baRRmW1FMdW4R58MD3R++Lj8UG
rp1MYp3/RgT408m2ECVAdf4WqslKYIYvuu8wd+RU4riEmViAqhOLUTpPSPaLtrM=
-----END CERTIFICATE-----

Amazon Root CA 1
================
-----BEGIN CERTIFICATE-----
MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsFADA5MQswCQYD
VQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAxMB4XDTE1
MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpv
bjEZMBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
ggEBALJ4gHHKeNXjca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgH
FzZM9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qwIFAGbHrQ
gLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6VOujw5H5SNz/0egwLX0t
dHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L93FcXmn/6pUCyziKrlA4b9v7LWIbxcce
VOF34GfID5yHI9Y/QCB/IIDEgEw+OyQmjgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB
/zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3
DQEBCwUAA4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDIU5PM
CCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUsN+gDS63pYaACbvXy
8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vvo/ufQJVtMVT8QtPHRh8jrdkPSHCa
2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2
xJNDd2ZhwLnoQdeXeGADbkpyrqXRfboQnoZsG4q5WTP468SQvvG5
-----END CERTIFICATE-----

Amazon Root CA 2
================
-----BEGIN CERTIFICATE-----
MIIFQTCCAymgAwIBAgITBmyf0pY1hp8KD+WGePhbJruKNzANBgkqhkiG9w0BAQwFADA5MQswCQYD
VQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAyMB4XDTE1
MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpv
bjEZMBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC
ggIBAK2Wny2cSkxKgXlRmeyKy2tgURO8TW0G/LAIjd0ZEGrHJgw12MBvIITplLGbhQPDW9tK6Mj4
kHbZW0/jTOgGNk3Mmqw9DJArktQGGWCsN0R5hYGCrVo34A3MnaZMUnbqQ523BNFQ9lXg1dKmSYXp
N+nKfq5clU1Imj+uIFptiJXZNLhSGkOQsL9sBbm2eLfq0OQ6PBJTYv9K8nu+NQWpEjTj82R0Yiw9
AElaKP4yRLuH3WUnAnE72kr3H9rN9yFVkE8P7K6C4Z9r2UXTu/Bfh+08LDmG2j/e7HJV63mjrdvd
fLC6HM783k81ds8P+HgfajZRRidhW+mez/CiVX18JYpvL7TFz4QuK/0NURBs+18bvBt+xa47mAEx
kv8LV/SasrlX6avvDXbR8O70zoan4G7ptGmh32n2M8ZpLpcTnqWHsFcQgTfJU7O7f/aS0ZzQGPSS
btqDT6ZjmUyl+17vIWR6IF9sZIUVyzfpYgwLKhbcAS4y2j5L9Z469hdAlO+ekQiG+r5jqFoz7Mt0
Q5X5bGlSNscpb/xVA1wf+5+9R+vnSUeVC06JIglJ4PVhHvG/LopyboBZ/1c6+XUyo05f7O0oYtlN
c/LMgRdg7c3r3NunysV+Ar3yVAhU/bQtCSwXVEqY0VThUWcI0u1ufm8/0i2BWSlmy5A5lREedCf+
3euvAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSw
DPBMMPQFWAJI/TPlUq9LhONmUjANBgkqhkiG9w0BAQwFAAOCAgEAqqiAjw54o+Ci1M3m9Zh6O+oA
A7CXDpO8Wqj2LIxyh6mx/H9z/WNxeKWHWc8w4Q0QshNabYL1auaAn6AFC2jkR2vHat+2/XcycuUY
+gn0oJMsXdKMdYV2ZZAMA3m3MSNjrXiDCYZohMr/+c8mmpJ5581LxedhpxfL86kSk5Nrp+gvU5LE
YFiwzAJRGFuFjWJZY7attN6a+yb3ACfAXVU3dJnJUH/jWS5E4ywl7uxMMne0nxrpS10gxdr9HIcW
xkPo1LsmmkVwXqkLN1PiRnsn/eBG8om3zEK2yygmbtmlyTrIQRNg91CMFa6ybRoVGld45pIq2WWQ
gj9sAq+uEjonljYE1x2igGOpm/HlurR8FLBOybEfdF849lHqm/osohHUqS0nGkWxr7JOcQ3AWEbW
aQbLU8uz/mtBzUF+fUwPfHJ5elnNXkoOrJupmHN5fLT0zLm4BwyydFy4x2+IoZCn9Kr5v2c69BoV
Yh63n749sSmvZ6ES8lgQGVMDMBu4Gon2nL2XA46jCfMdiyHxtN/kHNGfZQIG6lzWE7OE76KlXIx3
KadowGuuQNKotOrN8I1LOJwZmhsoVLiJkO/KdYE+HvJkJMcYr07/R54H9jVlpNMKVv/1F2Rs76gi
JUmTtt8AF9pYfl3uxRuw0dFfIRDH+fO6AgonB8Xx1sfT4PsJYGw=
-----END CERTIFICATE-----

Amazon Root CA 3
================
-----BEGIN CERTIFICATE-----
MIIBtjCCAVugAwIBAgITBmyf1XSXNmY/Owua2eiedgPySjAKBggqhkjOPQQDAjA5MQswCQYDVQQG
EwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAzMB4XDTE1MDUy
NjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZ
MBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCmXp8ZB
f8ANm+gBG1bG8lKlui2yEujSLtf6ycXYqm0fc4E7O5hrOXwzpcVOho6AF2hiRVd9RFgdszflZwjr
Zt6jQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSrttvXBp43
rDCGB5Fwx5zEGbF4wDAKBggqhkjOPQQDAgNJADBGAiEA4IWSoxe3jfkrBqWTrBqYaGFy+uGh0Psc
eGCmQ5nFuMQCIQCcAu/xlJyzlvnrxir4tiz+OpAUFteMYyRIHN8wfdVoOw==
-----END CERTIFICATE-----

Amazon Root CA 4
================
-----BEGIN CERTIFICATE-----
MIIB8jCCAXigAwIBAgITBmyf18G7EEwpQ+Vxe3ssyBrBDjAKBggqhkjOPQQDAzA5MQswCQYDVQQG
EwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSA0MB4XDTE1MDUy
NjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZ
MBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgNDB2MBAGByqGSM49AgEGBSuBBAAiA2IABNKrijdPo1MN
/sGKe0uoe0ZLY7Bi9i0b2whxIdIA6GO9mif78DluXeo9pcmBqqNbIJhFXRbb/egQbeOc4OO9X4Ri
83BkM6DLJC9wuoihKqB1+IGuYgbEgds5bimwHvouXKNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV
HQ8BAf8EBAMCAYYwHQYDVR0OBBYEFNPsxzplbszh2naaVvuc84ZtV+WBMAoGCCqGSM49BAMDA2gA
MGUCMDqLIfG9fhGt0O9Yli/W651+kI0rz2ZVwyzjKKlwCkcO8DdZEv8tmZQoTipPNU0zWgIxAOp1
AE47xDqUEpHJWEadIRNyp4iciuRMStuW1KyLa2tJElMzrdfkviT8tQp21KW8EA==
-----END CERTIFICATE-----

TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1
=============================================
-----BEGIN CERTIFICATE-----
MIIEYzCCA0ugAwIBAgIBATANBgkqhkiG9w0BAQsFADCB0jELMAkGA1UEBhMCVFIxGDAWBgNVBAcT
D0dlYnplIC0gS29jYWVsaTFCMEAGA1UEChM5VHVya2l5ZSBCaWxpbXNlbCB2ZSBUZWtub2xvamlr
IEFyYXN0aXJtYSBLdXJ1bXUgLSBUVUJJVEFLMS0wKwYDVQQLEyRLYW11IFNlcnRpZmlrYXN5b24g
TWVya2V6aSAtIEthbXUgU00xNjA0BgNVBAMTLVRVQklUQUsgS2FtdSBTTSBTU0wgS29rIFNlcnRp
ZmlrYXNpIC0gU3VydW0gMTAeFw0xMzExMjUwODI1NTVaFw00MzEwMjUwODI1NTVaMIHSMQswCQYD
VQQGEwJUUjEYMBYGA1UEBxMPR2ViemUgLSBLb2NhZWxpMUIwQAYDVQQKEzlUdXJraXllIEJpbGlt
c2VsIHZlIFRla25vbG9qaWsgQXJhc3Rpcm1hIEt1cnVtdSAtIFRVQklUQUsxLTArBgNVBAsTJEth
bXUgU2VydGlmaWthc3lvbiBNZXJrZXppIC0gS2FtdSBTTTE2MDQGA1UEAxMtVFVCSVRBSyBLYW11
IFNNIFNTTCBLb2sgU2VydGlmaWthc2kgLSBTdXJ1bSAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
MIIBCgKCAQEAr3UwM6q7a9OZLBI3hNmNe5eA027n/5tQlT6QlVZC1xl8JoSNkvoBHToP4mQ4t4y8
6Ij5iySrLqP1N+RAjhgleYN1Hzv/bKjFxlb4tO2KRKOrbEz8HdDc72i9z+SqzvBV96I01INrN3wc
wv61A+xXzry0tcXtAA9TNypN9E8Mg/uGz8v+jE69h/mniyFXnHrfA2eJLJ2XYacQuFWQfw4tJzh0
3+f92k4S400VIgLI4OD8D62K18lUUMw7D8oWgITQUVbDjlZ/iSIzL+aFCr2lqBs23tPcLG07xxO9
WSMs5uWk99gL7eqQQESolbuT1dCANLZGeA4fAJNG4e7p+exPFwIDAQABo0IwQDAdBgNVHQ4EFgQU
ZT/HiobGPN08VFw1+DrtUgxHV8gwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJ
KoZIhvcNAQELBQADggEBACo/4fEyjq7hmFxLXs9rHmoJ0iKpEsdeV31zVmSAhHqT5Am5EM2fKifh
AHe+SMg1qIGf5LgsyX8OsNJLN13qudULXjS99HMpw+0mFZx+CFOKWI3QSyjfwbPfIPP54+M638yc
lNhOT8NrF7f3cuitZjO1JVOr4PhMqZ398g26rrnZqsZr+ZO7rqu4lzwDGrpDxpa5RXI4s6ehlj2R
e37AIVNMh+3yC1SVUZPVIqUNivGTDj5UDrDYyU7c8jEyVupk+eq1nRZmQnLzf9OxMUP8pI4X8W0j
q5Rm+K37DwhuJi1/FwcJsoz7UMCflo3Ptv0AnVoUmr8CRPXBwp8iXqIPoeM=
-----END CERTIFICATE-----

GDCA TrustAUTH R5 ROOT
======================
-----BEGIN CERTIFICATE-----
MIIFiDCCA3CgAwIBAgIIfQmX/vBH6nowDQYJKoZIhvcNAQELBQAwYjELMAkGA1UEBhMCQ04xMjAw
BgNVBAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZIENPLixMVEQuMR8wHQYDVQQD
DBZHRENBIFRydXN0QVVUSCBSNSBST09UMB4XDTE0MTEyNjA1MTMxNVoXDTQwMTIzMTE1NTk1OVow
YjELMAkGA1UEBhMCQ04xMjAwBgNVBAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZ
IENPLixMVEQuMR8wHQYDVQQDDBZHRENBIFRydXN0QVVUSCBSNSBST09UMIICIjANBgkqhkiG9w0B
AQEFAAOCAg8AMIICCgKCAgEA2aMW8Mh0dHeb7zMNOwZ+Vfy1YI92hhJCfVZmPoiC7XJjDp6L3TQs
AlFRwxn9WVSEyfFrs0yw6ehGXTjGoqcuEVe6ghWinI9tsJlKCvLriXBjTnnEt1u9ol2x8kECK62p
OqPseQrsXzrj/e+APK00mxqriCZ7VqKChh/rNYmDf1+uKU49tm7srsHwJ5uu4/Ts765/94Y9cnrr
pftZTqfrlYwiOXnhLQiPzLyRuEH3FMEjqcOtmkVEs7LXLM3GKeJQEK5cy4KOFxg2fZfmiJqwTTQJ
9Cy5WmYqsBebnh52nUpmMUHfP/vFBu8btn4aRjb3ZGM74zkYI+dndRTVdVeSN72+ahsmUPI2JgaQ
xXABZG12ZuGR224HwGGALrIuL4xwp9E7PLOR5G62xDtw8mySlwnNR30YwPO7ng/Wi64HtloPzgsM
R6flPri9fcebNaBhlzpBdRfMK5Z3KpIhHtmVdiBnaM8Nvd/WHwlqmuLMc3GkL30SgLdTMEZeS1SZ
D2fJpcjyIMGC7J0R38IC+xo70e0gmu9lZJIQDSri3nDxGGeCjGHeuLzRL5z7D9Ar7Rt2ueQ5Vfj4
oR24qoAATILnsn8JuLwwoC8N9VKejveSswoAHQBUlwbgsQfZxw9cZX08bVlX5O2ljelAU58VS6Bx
9hoh49pwBiFYFIeFd3mqgnkCAwEAAaNCMEAwHQYDVR0OBBYEFOLJQJ9NzuiaoXzPDj9lxSmIahlR
MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQDRSVfg
p8xoWLoBDysZzY2wYUWsEe1jUGn4H3++Fo/9nesLqjJHdtJnJO29fDMylyrHBYZmDRd9FBUb1Ov9
H5r2XpdptxolpAqzkT9fNqyL7FeoPueBihhXOYV0GkLH6VsTX4/5COmSdI31R9KrO9b7eGZONn35
6ZLpBN79SWP8bfsUcZNnL0dKt7n/HipzcEYwv1ryL3ml4Y0M2fmyYzeMN2WFcGpcWwlyua1jPLHd
+PwyvzeG5LuOmCd+uh8W4XAR8gPfJWIyJyYYMoSf/wA6E7qaTfRPuBRwIrHKK5DOKcFw9C+df/KQ
HtZa37dG/OaG+svgIHZ6uqbL9XzeYqWxi+7egmaKTjowHz+Ay60nugxe19CxVsp3cbK1daFQqUBD
F8Io2c9Si1vIY9RCPqAzekYu9wogRlR+ak8x8YF+QnQ4ZXMn7sZ8uI7XpTrXmKGcjBBV09tL7ECQ
8s1uV9JiDnxXk7Gnbc2dg7sq5+W2O3FYrf3RRbxake5TFW/TRQl1brqQXR4EzzffHqhmsYzmIGrv
/EhOdJhCrylvLmrH+33RZjEizIYAfmaDDEL0vTSSwxrqT8p+ck0LcIymSLumoRT2+1hEmRSuqguT
aaApJUqlyyvdimYHFngVV3Eb7PVHhPOeMTd61X8kreS8/f3MboPoDKi3QWwH3b08hpcv0g==
-----END CERTIFICATE-----

SSL.com Root Certification Authority RSA
========================================
-----BEGIN CERTIFICATE-----
MIIF3TCCA8WgAwIBAgIIeyyb0xaAMpkwDQYJKoZIhvcNAQELBQAwfDELMAkGA1UEBhMCVVMxDjAM
BgNVBAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24x
MTAvBgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBSU0EwHhcNMTYw
MjEyMTczOTM5WhcNNDEwMjEyMTczOTM5WjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMx
EDAOBgNVBAcMB0hvdXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NM
LmNvbSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFJTQTCCAiIwDQYJKoZIhvcNAQEBBQAD
ggIPADCCAgoCggIBAPkP3aMrfcvQKv7sZ4Wm5y4bunfh4/WvpOz6Sl2RxFdHaxh3a3by/ZPkPQ/C
Fp4LZsNWlJ4Xg4XOVu/yFv0AYvUiCVToZRdOQbngT0aXqhvIuG5iXmmxX9sqAn78bMrzQdjt0Oj8
P2FI7bADFB0QDksZ4LtO7IZl/zbzXmcCC52GVWH9ejjt/uIZALdvoVBidXQ8oPrIJZK0bnoix/ge
oeOy3ZExqysdBP+lSgQ36YWkMyv94tZVNHwZpEpox7Ko07fKoZOI68GXvIz5HdkihCR0xwQ9aqkp
k8zruFvh/l8lqjRYyMEjVJ0bmBHDOJx+PYZspQ9AhnwC9FwCTyjLrnGfDzrIM/4RJTXq/LrFYD3Z
fBjVsqnTdXgDciLKOsMf7yzlLqn6niy2UUb9rwPW6mBo6oUWNmuF6R7As93EJNyAKoFBbZQ+yODJ
gUEAnl6/f8UImKIYLEJAs/lvOCdLToD0PYFH4Ih86hzOtXVcUS4cK38acijnALXRdMbX5J+tB5O2
UzU1/Dfkw/ZdFr4hc96SCvigY2q8lpJqPvi8ZVWb3vUNiSYE/CUapiVpy8JtynziWV+XrOvvLsi8
1xtZPCvM8hnIk2snYxnP/Okm+Mpxm3+T/jRnhE6Z6/yzeAkzcLpmpnbtG3PrGqUNxCITIJRWCk4s
bE6x/c+cCbqiM+2HAgMBAAGjYzBhMB0GA1UdDgQWBBTdBAkHovV6fVJTEpKV7jiAJQ2mWTAPBgNV
HRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFN0ECQei9Xp9UlMSkpXuOIAlDaZZMA4GA1UdDwEB/wQE
AwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAIBgRlCn7Jp0cHh5wYfGVcpNxJK1ok1iOMq8bs3AD/CUr
dIWQPXhq9LmLpZc7tRiRux6n+UBbkflVma8eEdBcHadm47GUBwwyOabqG7B52B2ccETjit3E+ZUf
ijhDPwGFpUenPUayvOUiaPd7nNgsPgohyC0zrL/FgZkxdMF1ccW+sfAjRfSda/wZY52jvATGGAsl
u1OJD7OAUN5F7kR/q5R4ZJjT9ijdh9hwZXT7DrkT66cPYakylszeu+1jTBi7qUD3oFRuIIhxdRjq
erQ0cuAjJ3dctpDqhiVAq+8zD8ufgr6iIPv2tS0a5sKFsXQP+8hlAqRSAUfdSSLBv9jra6x+3uxj
MxW3IwiPxg+NQVrdjsW5j+VFP3jbutIbQLH+cU0/4IGiul607BXgk90IH37hVZkLId6Tngr75qNJ
vTYw/ud3sqB1l7UtgYgXZSD32pAAn8lSzDLKNXz1PQ/YK9f1JmzJBjSWFupwWRoyeXkLtoh/D1JI
Pb9s2KJELtFOt3JY04kTlf5Eq/jXixtunLwsoFvVagCvXzfh1foQC5ichucmj87w7G6KVwuA406y
wKBjYZC6VWg3dGq2ktufoYYitmUnDuy2n0Jg5GfCtdpBC8TTi2EbvPofkSvXRAdeuims2cXp71NI
WuuA8ShYIc2wBlX7Jz9TkHCpBB5XJ7k=
-----END CERTIFICATE-----

SSL.com Root Certification Authority ECC
========================================
-----BEGIN CERTIFICATE-----
MIICjTCCAhSgAwIBAgIIdebfy8FoW6gwCgYIKoZIzj0EAwIwfDELMAkGA1UEBhMCVVMxDjAMBgNV
BAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xMTAv
BgNVBAMMKFNTTC5jb20gUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYwMjEy
MTgxNDAzWhcNNDEwMjEyMTgxNDAzWjB8MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAO
BgNVBAcMB0hvdXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjExMC8GA1UEAwwoU1NMLmNv
bSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49AgEGBSuBBAAiA2IA
BEVuqVDEpiM2nl8ojRfLliJkP9x6jh3MCLOicSS6jkm5BBtHllirLZXI7Z4INcgn64mMU1jrYor+
8FsPazFSY0E7ic3s7LaNGdM0B9y7xgZ/wkWV7Mt/qCPgCemB+vNH06NjMGEwHQYDVR0OBBYEFILR
hXMw5zUE044CkvvlpNHEIejNMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUgtGFczDnNQTT
jgKS++Wk0cQh6M0wDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2cAMGQCMG/n61kRpGDPYbCW
e+0F+S8Tkdzt5fxQaxFGRrMcIQBiu77D5+jNB5n5DQtdcj7EqgIwH7y6C+IwJPt8bYBVCpk+gA0z
5Wajs6O7pdWLjwkspl1+4vAHCGht0nxpbl/f5Wpl
-----END CERTIFICATE-----

SSL.com EV Root Certification Authority RSA R2
==============================================
-----BEGIN CERTIFICATE-----
MIIF6zCCA9OgAwIBAgIIVrYpzTS8ePYwDQYJKoZIhvcNAQELBQAwgYIxCzAJBgNVBAYTAlVTMQ4w
DAYDVQQIDAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9u
MTcwNQYDVQQDDC5TU0wuY29tIEVWIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIy
MB4XDTE3MDUzMTE4MTQzN1oXDTQyMDUzMDE4MTQzN1owgYIxCzAJBgNVBAYTAlVTMQ4wDAYDVQQI
DAVUZXhhczEQMA4GA1UEBwwHSG91c3RvbjEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMTcwNQYD
VQQDDC5TU0wuY29tIEVWIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgUlNBIFIyMIICIjAN
BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAjzZlQOHWTcDXtOlG2mvqM0fNTPl9fb69LT3w23jh
hqXZuglXaO1XPqDQCEGD5yhBJB/jchXQARr7XnAjssufOePPxU7Gkm0mxnu7s9onnQqG6YE3Bf7w
cXHswxzpY6IXFJ3vG2fThVUCAtZJycxa4bH3bzKfydQ7iEGonL3Lq9ttewkfokxykNorCPzPPFTO
Zw+oz12WGQvE43LrrdF9HSfvkusQv1vrO6/PgN3B0pYEW3p+pKk8OHakYo6gOV7qd89dAFmPZiw+
B6KjBSYRaZfqhbcPlgtLyEDhULouisv3D5oi53+aNxPN8k0TayHRwMwi8qFG9kRpnMphNQcAb9Zh
CBHqurj26bNg5U257J8UZslXWNvNh2n4ioYSA0e/ZhN2rHd9NCSFg83XqpyQGp8hLH94t2S42Oim
9HizVcuE0jLEeK6jj2HdzghTreyI/BXkmg3mnxp3zkyPuBQVPWKchjgGAGYS5Fl2WlPAApiiECto
RHuOec4zSnaqW4EWG7WK2NAAe15itAnWhmMOpgWVSbooi4iTsjQc2KRVbrcc0N6ZVTsj9CLg+Slm
JuwgUHfbSguPvuUCYHBBXtSuUDkiFCbLsjtzdFVHB3mBOagwE0TlBIqulhMlQg+5U8Sb/M3kHN48
+qvWBkofZ6aYMBzdLNvcGJVXZsb/XItW9XcCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNV
HSMEGDAWgBT5YLvU49U09rj1BoAlp3PbRmmonjAdBgNVHQ4EFgQU+WC71OPVNPa49QaAJadz20Zp
qJ4wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQBWs47LCp1Jjr+kxJG7ZhcFUZh1
++VQLHqe8RT6q9OKPv+RKY9ji9i0qVQBDb6Thi/5Sm3HXvVX+cpVHBK+Rw82xd9qt9t1wkclf7nx
Y/hoLVUE0fKNsKTPvDxeH3jnpaAgcLAExbf3cqfeIg29MyVGjGSSJuM+LmOW2puMPfgYCdcDzH2G
guDKBAdRUNf/ktUM79qGn5nX67evaOI5JpS6aLe/g9Pqemc9YmeuJeVy6OLk7K4S9ksrPJ/psEDz
OFSz/bdoyNrGj1E8svuR3Bznm53htw1yj+KkxKl4+esUrMZDBcJlOSgYAsOCsp0FvmXtll9ldDz7
CTUue5wT/RsPXcdtgTpWD8w74a8CLyKsRspGPKAcTNZEtF4uXBVmCeEmKf7GUmG6sXP/wwyc5Wxq
lD8UykAWlYTzWamsX0xhk23RO8yilQwipmdnRC652dKKQbNmC1r7fSOl8hqw/96bg5Qu0T/fkreR
rwU7ZcegbLHNYhLDkBvjJc40vG93drEQw/cFGsDWr3RiSBd3kmmQYRzelYB0VI8YHMPzA9C/pEN1
hlMYegouCRw2n5H9gooiS9EOUCXdywMMF8mDAAhONU2Ki+3wApRmLER/y5UnlhetCTCstnEXbosX
9hwJ1C07mKVx01QT2WDz9UtmT/rx7iASjbSsV7FFY6GsdqnC+w==
-----END CERTIFICATE-----

SSL.com EV Root Certification Authority ECC
===========================================
-----BEGIN CERTIFICATE-----
MIIClDCCAhqgAwIBAgIILCmcWxbtBZUwCgYIKoZIzj0EAwIwfzELMAkGA1UEBhMCVVMxDjAMBgNV
BAgMBVRleGFzMRAwDgYDVQQHDAdIb3VzdG9uMRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xNDAy
BgNVBAMMK1NTTC5jb20gRVYgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBFQ0MwHhcNMTYw
MjEyMTgxNTIzWhcNNDEwMjEyMTgxNTIzWjB/MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMx
EDAOBgNVBAcMB0hvdXN0b24xGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjE0MDIGA1UEAwwrU1NM
LmNvbSBFViBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IEVDQzB2MBAGByqGSM49AgEGBSuB
BAAiA2IABKoSR5CYG/vvw0AHgyBO8TCCogbR8pKGYfL2IWjKAMTH6kMAVIbc/R/fALhBYlzccBYy
3h+Z1MzFB8gIH2EWB1E9fVwHU+M1OIzfzZ/ZLg1KthkuWnBaBu2+8KGwytAJKaNjMGEwHQYDVR0O
BBYEFFvKXuXe0oGqzagtZFG22XKbl+ZPMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUW8pe
5d7SgarNqC1kUbbZcpuX5k8wDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMCA2gAMGUCMQCK5kCJ
N+vp1RPZytRrJPOwPYdGWBrssd9v+1a6cGvHOMzosYxPD/fxZ3YOg9AeUY8CMD32IygmTMZgh5Mm
m7I1HrrW9zzRHM76JTymGoEVW/MSD2zuZYrJh6j5B+BimoxcSg==
-----END CERTIFICATE-----

GlobalSign Root CA - R6
=======================
-----BEGIN CERTIFICATE-----
MIIFgzCCA2ugAwIBAgIORea7A4Mzw4VlSOb/RVEwDQYJKoZIhvcNAQEMBQAwTDEgMB4GA1UECxMX
R2xvYmFsU2lnbiBSb290IENBIC0gUjYxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkds
b2JhbFNpZ24wHhcNMTQxMjEwMDAwMDAwWhcNMzQxMjEwMDAwMDAwWjBMMSAwHgYDVQQLExdHbG9i
YWxTaWduIFJvb3QgQ0EgLSBSNjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFs
U2lnbjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJUH6HPKZvnsFMp7PPcNCPG0RQss
grRIxutbPK6DuEGSMxSkb3/pKszGsIhrxbaJ0cay/xTOURQh7ErdG1rG1ofuTToVBu1kZguSgMpE
3nOUTvOniX9PeGMIyBJQbUJmL025eShNUhqKGoC3GYEOfsSKvGRMIRxDaNc9PIrFsmbVkJq3MQbF
vuJtMgamHvm566qjuL++gmNQ0PAYid/kD3n16qIfKtJwLnvnvJO7bVPiSHyMEAc4/2ayd2F+4OqM
PKq0pPbzlUoSB239jLKJz9CgYXfIWHSw1CM69106yqLbnQneXUQtkPGBzVeS+n68UARjNN9rkxi+
azayOeSsJDa38O+2HBNXk7besvjihbdzorg1qkXy4J02oW9UivFyVm4uiMVRQkQVlO6jxTiWm05O
WgtH8wY2SXcwvHE35absIQh1/OZhFj931dmRl4QKbNQCTXTAFO39OfuD8l4UoQSwC+n+7o/hbguy
CLNhZglqsQY6ZZZZwPA1/cnaKI0aEYdwgQqomnUdnjqGBQCe24DWJfncBZ4nWUx2OVvq+aWh2IMP
0f/fMBH5hc8zSPXKbWQULHpYT9NLCEnFlWQaYw55PfWzjMpYrZxCRXluDocZXFSxZba/jJvcE+kN
b7gu3GduyYsRtYQUigAZcIN5kZeR1BonvzceMgfYFGM8KEyvAgMBAAGjYzBhMA4GA1UdDwEB/wQE
AwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSubAWjkxPioufi1xzWx/B/yGdToDAfBgNV
HSMEGDAWgBSubAWjkxPioufi1xzWx/B/yGdToDANBgkqhkiG9w0BAQwFAAOCAgEAgyXt6NH9lVLN
nsAEoJFp5lzQhN7craJP6Ed41mWYqVuoPId8AorRbrcWc+ZfwFSY1XS+wc3iEZGtIxg93eFyRJa0
lV7Ae46ZeBZDE1ZXs6KzO7V33EByrKPrmzU+sQghoefEQzd5Mr6155wsTLxDKZmOMNOsIeDjHfrY
BzN2VAAiKrlNIC5waNrlU/yDXNOd8v9EDERm8tLjvUYAGm0CuiVdjaExUd1URhxN25mW7xocBFym
Fe944Hn+Xds+qkxV/ZoVqW/hpvvfcDDpw+5CRu3CkwWJ+n1jez/QcYF8AOiYrg54NMMl+68KnyBr
3TsTjxKM4kEaSHpzoHdpx7Zcf4LIHv5YGygrqGytXm3ABdJ7t+uA/iU3/gKbaKxCXcPu9czc8FB1
0jZpnOZ7BN9uBmm23goJSFmH63sUYHpkqmlD75HHTOwY3WzvUy2MmeFe8nI+z1TIvWfspA9MRf/T
uTAjB0yPEL+GltmZWrSZVxykzLsViVO6LAUP5MSeGbEYNNVMnbrt9x+vJJUEeKgDu+6B5dpffItK
oZB0JaezPkvILFa9x8jvOOJckvB595yEunQtYQEgfn7R8k8HWV+LLUNS60YMlOH1Zkd5d9VUWx+t
JDfLRVpOoERIyNiwmcUVhAn21klJwGW45hpxbqCo8YLoRT5s1gLXCmeDBVrJpBA=
-----END CERTIFICATE-----

OISTE WISeKey Global Root GC CA
===============================
-----BEGIN CERTIFICATE-----
MIICaTCCAe+gAwIBAgIQISpWDK7aDKtARb8roi066jAKBggqhkjOPQQDAzBtMQswCQYDVQQGEwJD
SDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEo
MCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwgUm9vdCBHQyBDQTAeFw0xNzA1MDkwOTQ4MzRa
Fw00MjA1MDkwOTU4MzNaMG0xCzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYDVQQL
ExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEdsb2Jh
bCBSb290IEdDIENBMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAETOlQwMYPchi82PG6s4nieUqjFqdr
VCTbUf/q9Akkwwsin8tqJ4KBDdLArzHkdIJuyiXZjHWd8dvQmqJLIX4Wp2OQ0jnUsYd4XxiWD1Ab
NTcPasbc2RNNpI6QN+a9WzGRo1QwUjAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAd
BgNVHQ4EFgQUSIcUrOPDnpBgOtfKie7TrYy0UGYwEAYJKwYBBAGCNxUBBAMCAQAwCgYIKoZIzj0E
AwMDaAAwZQIwJsdpW9zV57LnyAyMjMPdeYwbY9XJUpROTYJKcx6ygISpJcBMWm1JKWB4E+J+SOtk
AjEA2zQgMgj/mkkCtojeFK9dbJlxjRo/i9fgojaGHAeCOnZT/cKi7e97sIBPWA9LUzm9
-----END CERTIFICATE-----

UCA Global G2 Root
==================
-----BEGIN CERTIFICATE-----
MIIFRjCCAy6gAwIBAgIQXd+x2lqj7V2+WmUgZQOQ7zANBgkqhkiG9w0BAQsFADA9MQswCQYDVQQG
EwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxGzAZBgNVBAMMElVDQSBHbG9iYWwgRzIgUm9vdDAeFw0x
NjAzMTEwMDAwMDBaFw00MDEyMzEwMDAwMDBaMD0xCzAJBgNVBAYTAkNOMREwDwYDVQQKDAhVbmlU
cnVzdDEbMBkGA1UEAwwSVUNBIEdsb2JhbCBHMiBSb290MIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
MIICCgKCAgEAxeYrb3zvJgUno4Ek2m/LAfmZmqkywiKHYUGRO8vDaBsGxUypK8FnFyIdK+35KYmT
oni9kmugow2ifsqTs6bRjDXVdfkX9s9FxeV67HeToI8jrg4aA3++1NDtLnurRiNb/yzmVHqUwCoV
8MmNsHo7JOHXaOIxPAYzRrZUEaalLyJUKlgNAQLx+hVRZ2zA+te2G3/RVogvGjqNO7uCEeBHANBS
h6v7hn4PJGtAnTRnvI3HLYZveT6OqTwXS3+wmeOwcWDcC/Vkw85DvG1xudLeJ1uK6NjGruFZfc8o
LTW4lVYa8bJYS7cSN8h8s+1LgOGN+jIjtm+3SJUIsUROhYw6AlQgL9+/V087OpAh18EmNVQg7Mc/
R+zvWr9LesGtOxdQXGLYD0tK3Cv6brxzks3sx1DoQZbXqX5t2Okdj4q1uViSukqSKwxW/YDrCPBe
KW4bHAyvj5OJrdu9o54hyokZ7N+1wxrrFv54NkzWbtA+FxyQF2smuvt6L78RHBgOLXMDj6DlNaBa
4kx1HXHhOThTeEDMg5PXCp6dW4+K5OXgSORIskfNTip1KnvyIvbJvgmRlld6iIis7nCs+dwp4wwc
OxJORNanTrAmyPPZGpeRaOrvjUYG0lZFWJo8DA+DuAUlwznPO6Q0ibd5Ei9Hxeepl2n8pndntd97
8XplFeRhVmUCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O
BBYEFIHEjMz15DD/pQwIX4wVZyF0Ad/fMA0GCSqGSIb3DQEBCwUAA4ICAQATZSL1jiutROTL/7lo
5sOASD0Ee/ojL3rtNtqyzm325p7lX1iPyzcyochltq44PTUbPrw7tgTQvPlJ9Zv3hcU2tsu8+Mg5
1eRfB70VVJd0ysrtT7q6ZHafgbiERUlMjW+i67HM0cOU2kTC5uLqGOiiHycFutfl1qnN3e92mI0A
Ds0b+gO3joBYDic/UvuUospeZcnWhNq5NXHzJsBPd+aBJ9J3O5oUb3n09tDh05S60FdRvScFDcH9
yBIw7m+NESsIndTUv4BFFJqIRNow6rSn4+7vW4LVPtateJLbXDzz2K36uGt/xDYotgIVilQsnLAX
c47QN6MUPJiVAAwpBVueSUmxX8fjy88nZY41F7dXyDDZQVu5FLbowg+UMaeUmMxq67XhJ/UQqAHo
jhJi6IjMtX9Gl8CbEGY4GjZGXyJoPd/JxhMnq1MGrKI8hgZlb7F+sSlEmqO6SWkoaY/X5V+tBIZk
bxqgDMUIYs6Ao9Dz7GjevjPHF1t/gMRMTLGmhIrDO7gJzRSBuhjjVFc2/tsvfEehOjPI+Vg7RE+x
ygKJBJYoaMVLuCaJu9YzL1DV/pqJuhgyklTGW+Cd+V7lDSKb9triyCGyYiGqhkCyLmTTX8jjfhFn
RR8F/uOi77Oos/N9j/gMHyIfLXC0uAE0djAA5SN4p1bXUB+K+wb1whnw0A==
-----END CERTIFICATE-----

UCA Extended Validation Root
============================
-----BEGIN CERTIFICATE-----
MIIFWjCCA0KgAwIBAgIQT9Irj/VkyDOeTzRYZiNwYDANBgkqhkiG9w0BAQsFADBHMQswCQYDVQQG
EwJDTjERMA8GA1UECgwIVW5pVHJ1c3QxJTAjBgNVBAMMHFVDQSBFeHRlbmRlZCBWYWxpZGF0aW9u
IFJvb3QwHhcNMTUwMzEzMDAwMDAwWhcNMzgxMjMxMDAwMDAwWjBHMQswCQYDVQQGEwJDTjERMA8G
A1UECgwIVW5pVHJ1c3QxJTAjBgNVBAMMHFVDQSBFeHRlbmRlZCBWYWxpZGF0aW9uIFJvb3QwggIi
MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCpCQcoEwKwmeBkqh5DFnpzsZGgdT6o+uM4AHrs
iWogD4vFsJszA1qGxliG1cGFu0/GnEBNyr7uaZa4rYEwmnySBesFK5pI0Lh2PpbIILvSsPGP2KxF
Rv+qZ2C0d35qHzwaUnoEPQc8hQ2E0B92CvdqFN9y4zR8V05WAT558aopO2z6+I9tTcg1367r3CTu
eUWnhbYFiN6IXSV8l2RnCdm/WhUFhvMJHuxYMjMR83dksHYf5BA1FxvyDrFspCqjc/wJHx4yGVMR
59mzLC52LqGj3n5qiAno8geK+LLNEOfic0CTuwjRP+H8C5SzJe98ptfRr5//lpr1kXuYC3fUfugH
0mK1lTnj8/FtDw5lhIpjVMWAtuCeS31HJqcBCF3RiJ7XwzJE+oJKCmhUfzhTA8ykADNkUVkLo4KR
el7sFsLzKuZi2irbWWIQJUoqgQtHB0MGcIfS+pMRKXpITeuUx3BNr2fVUbGAIAEBtHoIppB/TuDv
B0GHr2qlXov7z1CymlSvw4m6WC31MJixNnI5fkkE/SmnTHnkBVfblLkWU41Gsx2VYVdWf6/wFlth
WG82UBEL2KwrlRYaDh8IzTY0ZRBiZtWAXxQgXy0MoHgKaNYs1+lvK9JKBZP8nm9rZ/+I8U6laUpS
NwXqxhaN0sSZ0YIrO7o1dfdRUVjzyAfd5LQDfwIDAQABo0IwQDAdBgNVHQ4EFgQU2XQ65DA9DfcS
3H5aBZ8eNJr34RQwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQEL
BQADggIBADaNl8xCFWQpN5smLNb7rhVpLGsaGvdftvkHTFnq88nIua7Mui563MD1sC3AO6+fcAUR
ap8lTwEpcOPlDOHqWnzcSbvBHiqB9RZLcpHIojG5qtr8nR/zXUACE/xOHAbKsxSQVBcZEhrxH9cM
aVr2cXj0lH2RC47skFSOvG+hTKv8dGT9cZr4QQehzZHkPJrgmzI5c6sq1WnIeJEmMX3ixzDx/BR4
dxIOE/TdFpS/S2d7cFOFyrC78zhNLJA5wA3CXWvp4uXViI3WLL+rG761KIcSF3Ru/H38j9CHJrAb
+7lsq+KePRXBOy5nAliRn+/4Qh8st2j1da3Ptfb/EX3C8CSlrdP6oDyp+l3cpaDvRKS+1ujl5BOW
F3sGPjLtx7dCvHaj2GU4Kzg1USEODm8uNBNA4StnDG1KQTAYI1oyVZnJF+A83vbsea0rWBmirSwi
GpWOvpaQXUJXxPkUAzUrHC1RVwinOt4/5Mi0A3PCwSaAuwtCH60NryZy2sy+s6ODWA2CxR9GUeOc
GMyNm43sSet1UNWMKFnKdDTajAshqx7qG+XH/RU+wBeq+yNuJkbL+vmxcmtpzyKEC2IPrNkZAJSi
djzULZrtBJ4tBmIQN1IchXIbJ+XMxjHsN+xjWZsLHXbMfjKaiJUINlK73nZfdklJrX+9ZSCyycEr
dhh2n1ax
-----END CERTIFICATE-----

Certigna Root CA
================
-----BEGIN CERTIFICATE-----
MIIGWzCCBEOgAwIBAgIRAMrpG4nxVQMNo+ZBbcTjpuEwDQYJKoZIhvcNAQELBQAwWjELMAkGA1UE
BhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczEcMBoGA1UECwwTMDAwMiA0ODE0NjMwODEwMDAzNjEZ
MBcGA1UEAwwQQ2VydGlnbmEgUm9vdCBDQTAeFw0xMzEwMDEwODMyMjdaFw0zMzEwMDEwODMyMjda
MFoxCzAJBgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxHDAaBgNVBAsMEzAwMDIgNDgxNDYz
MDgxMDAwMzYxGTAXBgNVBAMMEENlcnRpZ25hIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4IC
DwAwggIKAoICAQDNGDllGlmx6mQWDoyUJJV8g9PFOSbcDO8WV43X2KyjQn+Cyu3NW9sOty3tRQgX
stmzy9YXUnIo245Onoq2C/mehJpNdt4iKVzSs9IGPjA5qXSjklYcoW9MCiBtnyN6tMbaLOQdLNyz
KNAT8kxOAkmhVECe5uUFoC2EyP+YbNDrihqECB63aCPuI9Vwzm1RaRDuoXrC0SIxwoKF0vJVdlB8
JXrJhFwLrN1CTivngqIkicuQstDuI7pmTLtipPlTWmR7fJj6o0ieD5Wupxj0auwuA0Wv8HT4Ks16
XdG+RCYyKfHx9WzMfgIhC59vpD++nVPiz32pLHxYGpfhPTc3GGYo0kDFUYqMwy3OU4gkWGQwFsWq
4NYKpkDfePb1BHxpE4S80dGnBs8B92jAqFe7OmGtBIyT46388NtEbVncSVmurJqZNjBBe3YzIoej
wpKGbvlw7q6Hh5UbxHq9MfPU0uWZ/75I7HX1eBYdpnDBfzwboZL7z8g81sWTCo/1VTp2lc5ZmIoJ
lXcymoO6LAQ6l73UL77XbJuiyn1tJslV1c/DeVIICZkHJC1kJWumIWmbat10TWuXekG9qxf5kBdI
jzb5LdXF2+6qhUVB+s06RbFo5jZMm5BX7CO5hwjCxAnxl4YqKE3idMDaxIzb3+KhF1nOJFl0Mdp/
/TBt2dzhauH8XwIDAQABo4IBGjCCARYwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw
HQYDVR0OBBYEFBiHVuBud+4kNTxOc5of1uHieX4rMB8GA1UdIwQYMBaAFBiHVuBud+4kNTxOc5of
1uHieX4rMEQGA1UdIAQ9MDswOQYEVR0gADAxMC8GCCsGAQUFBwIBFiNodHRwczovL3d3d3cuY2Vy
dGlnbmEuZnIvYXV0b3JpdGVzLzBtBgNVHR8EZjBkMC+gLaArhilodHRwOi8vY3JsLmNlcnRpZ25h
LmZyL2NlcnRpZ25hcm9vdGNhLmNybDAxoC+gLYYraHR0cDovL2NybC5kaGlteW90aXMuY29tL2Nl
cnRpZ25hcm9vdGNhLmNybDANBgkqhkiG9w0BAQsFAAOCAgEAlLieT/DjlQgi581oQfccVdV8AOIt
OoldaDgvUSILSo3L6btdPrtcPbEo/uRTVRPPoZAbAh1fZkYJMyjhDSSXcNMQH+pkV5a7XdrnxIxP
TGRGHVyH41neQtGbqH6mid2PHMkwgu07nM3A6RngatgCdTer9zQoKJHyBApPNeNgJgH60BGM+RFq
7q89w1DTj18zeTyGqHNFkIwgtnJzFyO+B2XleJINugHA64wcZr+shncBlA2c5uk5jR+mUYyZDDl3
4bSb+hxnV29qao6pK0xXeXpXIs/NX2NGjVxZOob4Mkdio2cNGJHc+6Zr9UhhcyNZjgKnvETq9Emd
8VRY+WCv2hikLyhF3HqgiIZd8zvn/yk1gPxkQ5Tm4xxvvq0OKmOZK8l+hfZx6AYDlf7ej0gcWtSS
6Cvu5zHbugRqh5jnxV/vfaci9wHYTfmJ0A6aBVmknpjZbyvKcL5kwlWj9Omvw5Ip3IgWJJk8jSaY
tlu3zM63Nwf9JtmYhST/WSMDmu2dnajkXjjO11INb9I/bbEFa0nOipFGc/T2L/Coc3cOZayhjWZS
aX5LaAzHHjcng6WMxwLkFM1JAbBzs/3GkDpv0mztO+7skb6iQ12LAEpmJURw3kAP+HwV96LOPNde
E4yBFxgX0b3xdxA61GU5wSesVywlVP+i2k+KYTlerj1KjL0=
-----END CERTIFICATE-----

emSign Root CA - G1
===================
-----BEGIN CERTIFICATE-----
MIIDlDCCAnygAwIBAgIKMfXkYgxsWO3W2DANBgkqhkiG9w0BAQsFADBnMQswCQYDVQQGEwJJTjET
MBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNobm9sb2dpZXMgTGltaXRl
ZDEcMBoGA1UEAxMTZW1TaWduIFJvb3QgQ0EgLSBHMTAeFw0xODAyMTgxODMwMDBaFw00MzAyMTgx
ODMwMDBaMGcxCzAJBgNVBAYTAklOMRMwEQYDVQQLEwplbVNpZ24gUEtJMSUwIwYDVQQKExxlTXVk
aHJhIFRlY2hub2xvZ2llcyBMaW1pdGVkMRwwGgYDVQQDExNlbVNpZ24gUm9vdCBDQSAtIEcxMIIB
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAk0u76WaK7p1b1TST0Bsew+eeuGQzf2N4aLTN
LnF115sgxk0pvLZoYIr3IZpWNVrzdr3YzZr/k1ZLpVkGoZM0Kd0WNHVO8oG0x5ZOrRkVUkr+PHB1
cM2vK6sVmjM8qrOLqs1D/fXqcP/tzxE7lM5OMhbTI0Aqd7OvPAEsbO2ZLIvZTmmYsvePQbAyeGHW
DV/D+qJAkh1cF+ZwPjXnorfCYuKrpDhMtTk1b+oDafo6VGiFbdbyL0NVHpENDtjVaqSW0RM8LHhQ
6DqS0hdW5TUaQBw+jSztOd9C4INBdN+jzcKGYEho42kLVACL5HZpIQ15TjQIXhTCzLG3rdd8cIrH
hQIDAQABo0IwQDAdBgNVHQ4EFgQU++8Nhp6w492pufEhF38+/PB3KxowDgYDVR0PAQH/BAQDAgEG
MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAFn/8oz1h31xPaOfG1vR2vjTnGs2
vZupYeveFix0PZ7mddrXuqe8QhfnPZHr5X3dPpzxz5KsbEjMwiI/aTvFthUvozXGaCocV685743Q
NcMYDHsAVhzNixl03r4PEuDQqqE/AjSxcM6dGNYIAwlG7mDgfrbESQRRfXBgvKqy/3lyeqYdPV8q
+Mri/Tm3R7nrft8EI6/6nAYH6ftjk4BAtcZsCjEozgyfz7MjNYBBjWzEN3uBL4ChQEKF6dk4jeih
U80Bv2noWgbyRQuQ+q7hv53yrlc8pa6yVvSLZUDp/TGBLPQ5Cdjua6e0ph0VpZj3AYHYhX3zUVxx
iN66zB+Afko=
-----END CERTIFICATE-----

emSign ECC Root CA - G3
=======================
-----BEGIN CERTIFICATE-----
MIICTjCCAdOgAwIBAgIKPPYHqWhwDtqLhDAKBggqhkjOPQQDAzBrMQswCQYDVQQGEwJJTjETMBEG
A1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11ZGhyYSBUZWNobm9sb2dpZXMgTGltaXRlZDEg
MB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0gRzMwHhcNMTgwMjE4MTgzMDAwWhcNNDMwMjE4
MTgzMDAwWjBrMQswCQYDVQQGEwJJTjETMBEGA1UECxMKZW1TaWduIFBLSTElMCMGA1UEChMcZU11
ZGhyYSBUZWNobm9sb2dpZXMgTGltaXRlZDEgMB4GA1UEAxMXZW1TaWduIEVDQyBSb290IENBIC0g
RzMwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQjpQy4LRL1KPOxst3iAhKAnjlfSU2fySU0WXTsuwYc
58Byr+iuL+FBVIcUqEqy6HyC5ltqtdyzdc6LBtCGI79G1Y4PPwT01xySfvalY8L1X44uT6EYGQIr
MgqCZH0Wk9GjQjBAMB0GA1UdDgQWBBR8XQKEE9TMipuBzhccLikenEhjQjAOBgNVHQ8BAf8EBAMC
AQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNpADBmAjEAvvNhzwIQHWSVB7gYboiFBS+D
CBeQyh+KTOgNG3qxrdWBCUfvO6wIBHxcmbHtRwfSAjEAnbpV/KlK6O3t5nYBQnvI+GDZjVGLVTv7
jHvrZQnD+JbNR6iC8hZVdyR+EhCVBCyj
-----END CERTIFICATE-----

emSign Root CA - C1
===================
-----BEGIN CERTIFICATE-----
MIIDczCCAlugAwIBAgILAK7PALrEzzL4Q7IwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCVVMx
EzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMRwwGgYDVQQDExNlbVNp
Z24gUm9vdCBDQSAtIEMxMB4XDTE4MDIxODE4MzAwMFoXDTQzMDIxODE4MzAwMFowVjELMAkGA1UE
BhMCVVMxEzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMRwwGgYDVQQD
ExNlbVNpZ24gUm9vdCBDQSAtIEMxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz+up
ufGZBczYKCFK83M0UYRWEPWgTywS4/oTmifQz/l5GnRfHXk5/Fv4cI7gklL35CX5VIPZHdPIWoU/
Xse2B+4+wM6ar6xWQio5JXDWv7V7Nq2s9nPczdcdioOl+yuQFTdrHCZH3DspVpNqs8FqOp099cGX
OFgFixwR4+S0uF2FHYP+eF8LRWgYSKVGczQ7/g/IdrvHGPMF0Ybzhe3nudkyrVWIzqa2kbBPrH4V
I5b2P/AgNBbeCsbEBEV5f6f9vtKppa+cxSMq9zwhbL2vj07FOrLzNBL834AaSaTUqZX3noleooms
lMuoaJuvimUnzYnu3Yy1aylwQ6BpC+S5DwIDAQABo0IwQDAdBgNVHQ4EFgQU/qHgcB4qAzlSWkK+
XJGFehiqTbUwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQAD
ggEBAMJKVvoVIXsoounlHfv4LcQ5lkFMOycsxGwYFYDGrK9HWS8mC+M2sO87/kOXSTKZEhVb3xEp
/6tT+LvBeA+snFOvV71ojD1pM/CjoCNjO2RnIkSt1XHLVip4kqNPEjE2NuLe/gDEo2APJ62gsIq1
NnpSob0n9CAnYuhNlCQT5AoE6TyrLshDCUrGYQTlSTR+08TI9Q/Aqum6VF7zYytPT1DU/rl7mYw9
wC68AivTxEDkigcxHpvOJpkT+xHqmiIMERnHXhuBUDDIlhJu58tBf5E7oke3VIAb3ADMmpDqw8NQ
BmIMMMAVSKeoWXzhriKi4gp6D/piq1JM4fHfyr6DDUI=
-----END CERTIFICATE-----

emSign ECC Root CA - C3
=======================
-----BEGIN CERTIFICATE-----
MIICKzCCAbGgAwIBAgIKe3G2gla4EnycqDAKBggqhkjOPQQDAzBaMQswCQYDVQQGEwJVUzETMBEG
A1UECxMKZW1TaWduIFBLSTEUMBIGA1UEChMLZU11ZGhyYSBJbmMxIDAeBgNVBAMTF2VtU2lnbiBF
Q0MgUm9vdCBDQSAtIEMzMB4XDTE4MDIxODE4MzAwMFoXDTQzMDIxODE4MzAwMFowWjELMAkGA1UE
BhMCVVMxEzARBgNVBAsTCmVtU2lnbiBQS0kxFDASBgNVBAoTC2VNdWRocmEgSW5jMSAwHgYDVQQD
ExdlbVNpZ24gRUNDIFJvb3QgQ0EgLSBDMzB2MBAGByqGSM49AgEGBSuBBAAiA2IABP2lYa57JhAd
6bciMK4G9IGzsUJxlTm801Ljr6/58pc1kjZGDoeVjbk5Wum739D+yAdBPLtVb4OjavtisIGJAnB9
SMVK4+kiVCJNk7tCDK93nCOmfddhEc5lx/h//vXyqaNCMEAwHQYDVR0OBBYEFPtaSNCAIEDyqOkA
B2kZd6fmw/TPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MAoGCCqGSM49BAMDA2gA
MGUCMQC02C8Cif22TGK6Q04ThHK1rt0c3ta13FaPWEBaLd4gTCKDypOofu4SQMfWh0/434UCMBwU
ZOR8loMRnLDRWmFLpg9J0wD8ofzkpf9/rdcw0Md3f76BB1UwUCAU9Vc4CqgxUQ==
-----END CERTIFICATE-----

Hongkong Post Root CA 3
=======================
-----BEGIN CERTIFICATE-----
MIIFzzCCA7egAwIBAgIUCBZfikyl7ADJk0DfxMauI7gcWqQwDQYJKoZIhvcNAQELBQAwbzELMAkG
A1UEBhMCSEsxEjAQBgNVBAgTCUhvbmcgS29uZzESMBAGA1UEBxMJSG9uZyBLb25nMRYwFAYDVQQK
Ew1Ib25na29uZyBQb3N0MSAwHgYDVQQDExdIb25na29uZyBQb3N0IFJvb3QgQ0EgMzAeFw0xNzA2
MDMwMjI5NDZaFw00MjA2MDMwMjI5NDZaMG8xCzAJBgNVBAYTAkhLMRIwEAYDVQQIEwlIb25nIEtv
bmcxEjAQBgNVBAcTCUhvbmcgS29uZzEWMBQGA1UEChMNSG9uZ2tvbmcgUG9zdDEgMB4GA1UEAxMX
SG9uZ2tvbmcgUG9zdCBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCz
iNfqzg8gTr7m1gNt7ln8wlffKWihgw4+aMdoWJwcYEuJQwy51BWy7sFOdem1p+/l6TWZ5Mwc50tf
jTMwIDNT2aa71T4Tjukfh0mtUC1Qyhi+AViiE3CWu4mIVoBc+L0sPOFMV4i707mV78vH9toxdCim
5lSJ9UExyuUmGs2C4HDaOym71QP1mbpV9WTRYA6ziUm4ii8F0oRFKHyPaFASePwLtVPLwpgchKOe
sL4jpNrcyCse2m5FHomY2vkALgbpDDtw1VAliJnLzXNg99X/NWfFobxeq81KuEXryGgeDQ0URhLj
0mRiikKYvLTGCAj4/ahMZJx2Ab0vqWwzD9g/KLg8aQFChn5pwckGyuV6RmXpwtZQQS4/t+TtbNe/
JgERohYpSms0BpDsE9K2+2p20jzt8NYt3eEV7KObLyzJPivkaTv/ciWxNoZbx39ri1UbSsUgYT2u
y1DhCDq+sI9jQVMwCFk8mB13umOResoQUGC/8Ne8lYePl8X+l2oBlKN8W4UdKjk60FSh0Tlxnf0h
+bV78OLgAo9uliQlLKAeLKjEiafv7ZkGL7YKTE/bosw3Gq9HhS2KX8Q0NEwA/RiTZxPRN+ZItIsG
xVd7GYYKecsAyVKvQv83j+GjHno9UKtjBucVtT+2RTeUN7F+8kjDf8V1/peNRY8apxpyKBpADwID
AQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQXnc0e
i9Y5K3DTXNSguB+wAPzFYTAdBgNVHQ4EFgQUF53NHovWOStw01zUoLgfsAD8xWEwDQYJKoZIhvcN
AQELBQADggIBAFbVe27mIgHSQpsY1Q7XZiNc4/6gx5LS6ZStS6LG7BJ8dNVI0lkUmcDrudHr9Egw
W62nV3OZqdPlt9EuWSRY3GguLmLYauRwCy0gUCCkMpXRAJi70/33MvJJrsZ64Ee+bs7Lo3I6LWld
y8joRTnU+kLBEUx3XZL7av9YROXrgZ6voJmtvqkBZss4HTzfQx/0TW60uhdG/H39h4F5ag0zD/ov
+BS5gLNdTaqX4fnkGMX41TiMJjz98iji7lpJiCzfeT2OnpA8vUFKOt1b9pq0zj8lMH8yfaIDlNDc
eqFS3m6TjRgm/VWsvY+b0s+v54Ysyx8Jb6NvqYTUc79NoXQbTiNg8swOqn+knEwlqLJmOzj/2ZQw
9nKEvmhVEA/GcywWaZMH/rFF7buiVWqw2rVKAiUnhde3t4ZEFolsgCs+l6mc1X5VTMbeRRAc6uk7
nwNT7u56AQIWeNTowr5GdogTPyK7SBIdUgC0An4hGh6cJfTzPV4e0hz5sy229zdcxsshTrD3mUcY
hcErulWuBurQB7Lcq9CClnXO0lD+mefPL5/ndtFhKvshuzHQqp9HpLIiyhY6UFfEW0NnxWViA0kB
60PZ2Pierc+xYw5F9KBaLJstxabArahH9CdMOA0uG0k7UvToiIMrVCjU8jVStDKDYmlkDJGcn5fq
dBb9HxEGmpv0
-----END CERTIFICATE-----

Entrust Root Certification Authority - G4
=========================================
-----BEGIN CERTIFICATE-----
MIIGSzCCBDOgAwIBAgIRANm1Q3+vqTkPAAAAAFVlrVgwDQYJKoZIhvcNAQELBQAwgb4xCzAJBgNV
BAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3Qu
bmV0L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxNSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1
dGhvcml6ZWQgdXNlIG9ubHkxMjAwBgNVBAMTKUVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1
dGhvcml0eSAtIEc0MB4XDTE1MDUyNzExMTExNloXDTM3MTIyNzExNDExNlowgb4xCzAJBgNVBAYT
AlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0
L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxNSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhv
cml6ZWQgdXNlIG9ubHkxMjAwBgNVBAMTKUVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhv
cml0eSAtIEc0MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAsewsQu7i0TD/pZJH4i3D
umSXbcr3DbVZwbPLqGgZ2K+EbTBwXX7zLtJTmeH+H17ZSK9dE43b/2MzTdMAArzE+NEGCJR5WIoV
3imz/f3ET+iq4qA7ec2/a0My3dl0ELn39GjUu9CH1apLiipvKgS1sqbHoHrmSKvS0VnM1n4j5pds
8ELl3FFLFUHtSUrJ3hCX1nbB76W1NhSXNdh4IjVS70O92yfbYVaCNNzLiGAMC1rlLAHGVK/XqsEQ
e9IFWrhAnoanw5CGAlZSCXqc0ieCU0plUmr1POeo8pyvi73TDtTUXm6Hnmo9RR3RXRv06QqsYJn7
ibT/mCzPfB3pAqoEmh643IhuJbNsZvc8kPNXwbMv9W3y+8qh+CmdRouzavbmZwe+LGcKKh9asj5X
xNMhIWNlUpEbsZmOeX7m640A2Vqq6nPopIICR5b+W45UYaPrL0swsIsjdXJ8ITzI9vF01Bx7owVV
7rtNOzK+mndmnqxpkCIHH2E6lr7lmk/MBTwoWdPBDFSoWWG9yHJM6Nyfh3+9nEg2XpWjDrk4JFX8
dWbrAuMINClKxuMrLzOg2qOGpRKX/YAr2hRC45K9PvJdXmd0LhyIRyk0X+IyqJwlN4y6mACXi0mW
Hv0liqzc2thddG5msP9E36EYxr5ILzeUePiVSj9/E15dWf10hkNjc0kCAwEAAaNCMEAwDwYDVR0T
AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJ84xFYjwznooHFs6FRM5Og6sb9n
MA0GCSqGSIb3DQEBCwUAA4ICAQAS5UKme4sPDORGpbZgQIeMJX6tuGguW8ZAdjwD+MlZ9POrYs4Q
jbRaZIxowLByQzTSGwv2LFPSypBLhmb8qoMi9IsabyZIrHZ3CL/FmFz0Jomee8O5ZDIBf9PD3Vht
7LGrhFV0d4QEJ1JrhkzO3bll/9bGXp+aEJlLdWr+aumXIOTkdnrG0CSqkM0gkLpHZPt/B7NTeLUK
YvJzQ85BK4FqLoUWlFPUa19yIqtRLULVAJyZv967lDtX/Zr1hstWO1uIAeV8KEsD+UmDfLJ/fOPt
jqF/YFOOVZ1QNBIPt5d7bIdKROf1beyAN/BYGW5KaHbwH5Lk6rWS02FREAutp9lfx1/cH6NcjKF+
m7ee01ZvZl4HliDtC3T7Zk6LERXpgUl+b7DUUH8i119lAg2m9IUe2K4GS0qn0jFmwvjO5QimpAKW
RGhXxNUzzxkvFMSUHHuk2fCfDrGA4tGeEWSpiBE6doLlYsKA2KSD7ZPvfC+QsDJMlhVoSFLUmQjA
JOgc47OlIQ6SwJAfzyBfyjs4x7dtOvPmRLgOMWuIjnDrnBdSqEGULoe256YSxXXfW8AKbnuk5F6G
+TaU33fD6Q3AOfF5u0aOq0NZJ7cguyPpVkAh7DE9ZapD8j3fcEThuk0mEDuYn/PIjhs4ViFqUZPT
kcpG2om3PVODLAgfi49T3f+sHw==
-----END CERTIFICATE-----

Microsoft ECC Root Certificate Authority 2017
=============================================
-----BEGIN CERTIFICATE-----
MIICWTCCAd+gAwIBAgIQZvI9r4fei7FK6gxXMQHC7DAKBggqhkjOPQQDAzBlMQswCQYDVQQGEwJV
UzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYDVQQDEy1NaWNyb3NvZnQgRUND
IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwHhcNMTkxMjE4MjMwNjQ1WhcNNDIwNzE4
MjMxNjA0WjBlMQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYw
NAYDVQQDEy1NaWNyb3NvZnQgRUNDIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwdjAQ
BgcqhkjOPQIBBgUrgQQAIgNiAATUvD0CQnVBEyPNgASGAlEvaqiBYgtlzPbKnR5vSmZRogPZnZH6
thaxjG7efM3beaYvzrvOcS/lpaso7GMEZpn4+vKTEAXhgShC48Zo9OYbhGBKia/teQ87zvH2RPUB
eMCjVDBSMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTIy5lycFIM
+Oa+sgRXKSrPQhDtNTAQBgkrBgEEAYI3FQEEAwIBADAKBggqhkjOPQQDAwNoADBlAjBY8k3qDPlf
Xu5gKcs68tvWMoQZP3zVL8KxzJOuULsJMsbG7X7JNpQS5GiFBqIb0C8CMQCZ6Ra0DvpWSNSkMBaR
eNtUjGUBiudQZsIxtzm6uBoiB078a1QWIP8rtedMDE2mT3M=
-----END CERTIFICATE-----

Microsoft RSA Root Certificate Authority 2017
=============================================
-----BEGIN CERTIFICATE-----
MIIFqDCCA5CgAwIBAgIQHtOXCV/YtLNHcB6qvn9FszANBgkqhkiG9w0BAQwFADBlMQswCQYDVQQG
EwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYDVQQDEy1NaWNyb3NvZnQg
UlNBIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwHhcNMTkxMjE4MjI1MTIyWhcNNDIw
NzE4MjMwMDIzWjBlMQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9u
MTYwNAYDVQQDEy1NaWNyb3NvZnQgUlNBIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcw
ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKW76UM4wplZEWCpW9R2LBifOZNt9GkMml
7Xhqb0eRaPgnZ1AzHaGm++DlQ6OEAlcBXZxIQIJTELy/xztokLaCLeX0ZdDMbRnMlfl7rEqUrQ7e
S0MdhweSE5CAg2Q1OQT85elss7YfUJQ4ZVBcF0a5toW1HLUX6NZFndiyJrDKxHBKrmCk3bPZ7Pw7
1VdyvD/IybLeS2v4I2wDwAW9lcfNcztmgGTjGqwu+UcF8ga2m3P1eDNbx6H7JyqhtJqRjJHTOoI+
dkC0zVJhUXAoP8XFWvLJjEm7FFtNyP9nTUwSlq31/niol4fX/V4ggNyhSyL71Imtus5Hl0dVe49F
yGcohJUcaDDv70ngNXtk55iwlNpNhTs+VcQor1fznhPbRiefHqJeRIOkpcrVE7NLP8TjwuaGYaRS
MLl6IE9vDzhTyzMMEyuP1pq9KsgtsRx9S1HKR9FIJ3Jdh+vVReZIZZ2vUpC6W6IYZVcSn2i51BVr
lMRpIpj0M+Dt+VGOQVDJNE92kKz8OMHY4Xu54+OU4UZpyw4KUGsTuqwPN1q3ErWQgR5WrlcihtnJ
0tHXUeOrO8ZV/R4O03QK0dqq6mm4lyiPSMQH+FJDOvTKVTUssKZqwJz58oHhEmrARdlns87/I6KJ
ClTUFLkqqNfs+avNJVgyeY+QW5g5xAgGwax/Dj0ApQIDAQABo1QwUjAOBgNVHQ8BAf8EBAMCAYYw
DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUCctZf4aycI8awznjwNnpv7tNsiMwEAYJKwYBBAGC
NxUBBAMCAQAwDQYJKoZIhvcNAQEMBQADggIBAKyvPl3CEZaJjqPnktaXFbgToqZCLgLNFgVZJ8og
6Lq46BrsTaiXVq5lQ7GPAJtSzVXNUzltYkyLDVt8LkS/gxCP81OCgMNPOsduET/m4xaRhPtthH80
dK2Jp86519efhGSSvpWhrQlTM93uCupKUY5vVau6tZRGrox/2KJQJWVggEbbMwSubLWYdFQl3JPk
+ONVFT24bcMKpBLBaYVu32TxU5nhSnUgnZUP5NbcA/FZGOhHibJXWpS2qdgXKxdJ5XbLwVaZOjex
/2kskZGT4d9Mozd2TaGf+G0eHdP67Pv0RR0Tbc/3WeUiJ3IrhvNXuzDtJE3cfVa7o7P4NHmJweDy
AmH3pvwPuxwXC65B2Xy9J6P9LjrRk5Sxcx0ki69bIImtt2dmefU6xqaWM/5TkshGsRGRxpl/j8nW
ZjEgQRCHLQzWwa80mMpkg/sTV9HB8Dx6jKXB/ZUhoHHBk2dxEuqPiAppGWSZI1b7rCoucL5mxAyE
7+WL85MB+GqQk2dLsmijtWKP6T+MejteD+eMuMZ87zf9dOLITzNy4ZQ5bb0Sr74MTnB8G2+NszKT
c0QWbej09+CVgI+WXTik9KveCjCHk9hNAHFiRSdLOkKEW39lt2c0Ui2cFmuqqNh7o0JMcccMyj6D
5KbvtwEwXlGjefVwaaZBRA+GsCyRxj3qrg+E
-----END CERTIFICATE-----

e-Szigno Root CA 2017
=====================
-----BEGIN CERTIFICATE-----
MIICQDCCAeWgAwIBAgIMAVRI7yH9l1kN9QQKMAoGCCqGSM49BAMCMHExCzAJBgNVBAYTAkhVMREw
DwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMgTHRkLjEXMBUGA1UEYQwOVkFUSFUt
MjM1ODQ0OTcxHjAcBgNVBAMMFWUtU3ppZ25vIFJvb3QgQ0EgMjAxNzAeFw0xNzA4MjIxMjA3MDZa
Fw00MjA4MjIxMjA3MDZaMHExCzAJBgNVBAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UE
CgwNTWljcm9zZWMgTHRkLjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxHjAcBgNVBAMMFWUtU3pp
Z25vIFJvb3QgQ0EgMjAxNzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJbcPYrYsHtvxie+RJCx
s1YVe45DJH0ahFnuY2iyxl6H0BVIHqiQrb1TotreOpCmYF9oMrWGQd+HWyx7xf58etqjYzBhMA8G
A1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSHERUI0arBeAyxr87GyZDv
vzAEwDAfBgNVHSMEGDAWgBSHERUI0arBeAyxr87GyZDvvzAEwDAKBggqhkjOPQQDAgNJADBGAiEA
tVfd14pVCzbhhkT61NlojbjcI4qKDdQvfepz7L9NbKgCIQDLpbQS+ue16M9+k/zzNY9vTlp8tLxO
svxyqltZ+efcMQ==
-----END CERTIFICATE-----

certSIGN Root CA G2
===================
-----BEGIN CERTIFICATE-----
MIIFRzCCAy+gAwIBAgIJEQA0tk7GNi02MA0GCSqGSIb3DQEBCwUAMEExCzAJBgNVBAYTAlJPMRQw
EgYDVQQKEwtDRVJUU0lHTiBTQTEcMBoGA1UECxMTY2VydFNJR04gUk9PVCBDQSBHMjAeFw0xNzAy
MDYwOTI3MzVaFw00MjAyMDYwOTI3MzVaMEExCzAJBgNVBAYTAlJPMRQwEgYDVQQKEwtDRVJUU0lH
TiBTQTEcMBoGA1UECxMTY2VydFNJR04gUk9PVCBDQSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIP
ADCCAgoCggIBAMDFdRmRfUR0dIf+DjuW3NgBFszuY5HnC2/OOwppGnzC46+CjobXXo9X69MhWf05
N0IwvlDqtg+piNguLWkh59E3GE59kdUWX2tbAMI5Qw02hVK5U2UPHULlj88F0+7cDBrZuIt4Imfk
abBoxTzkbFpG583H+u/E7Eu9aqSs/cwoUe+StCmrqzWaTOTECMYmzPhpn+Sc8CnTXPnGFiWeI8Mg
wT0PPzhAsP6CRDiqWhqKa2NYOLQV07YRaXseVO6MGiKscpc/I1mbySKEwQdPzH/iV8oScLumZfNp
dWO9lfsbl83kqK/20U6o2YpxJM02PbyWxPFsqa7lzw1uKA2wDrXKUXt4FMMgL3/7FFXhEZn91Qqh
ngLjYl/rNUssuHLoPj1PrCy7Lobio3aP5ZMqz6WryFyNSwb/EkaseMsUBzXgqd+L6a8VTxaJW732
jcZZroiFDsGJ6x9nxUWO/203Nit4ZoORUSs9/1F3dmKh7Gc+PoGD4FapUB8fepmrY7+EF3fxDTvf
95xhszWYijqy7DwaNz9+j5LP2RIUZNoQAhVB/0/E6xyjyfqZ90bp4RjZsbgyLcsUDFDYg2WD7rlc
z8sFWkz6GZdr1l0T08JcVLwyc6B49fFtHsufpaafItzRUZ6CeWRgKRM+o/1Pcmqr4tTluCRVLERL
iohEnMqE0yo7AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1Ud
DgQWBBSCIS1mxteg4BXrzkwJd8RgnlRuAzANBgkqhkiG9w0BAQsFAAOCAgEAYN4auOfyYILVAzOB
ywaK8SJJ6ejqkX/GM15oGQOGO0MBzwdw5AgeZYWR5hEit/UCI46uuR59H35s5r0l1ZUa8gWmr4UC
b6741jH/JclKyMeKqdmfS0mbEVeZkkMR3rYzpMzXjWR91M08KCy0mpbqTfXERMQlqiCA2ClV9+BB
/AYm/7k29UMUA2Z44RGx2iBfRgB4ACGlHgAoYXhvqAEBj500mv/0OJD7uNGzcgbJceaBxXntC6Z5
8hMLnPddDnskk7RI24Zf3lCGeOdA5jGokHZwYa+cNywRtYK3qq4kNFtyDGkNzVmf9nGvnAvRCjj5
BiKDUyUM/FHE5r7iOZULJK2v0ZXkltd0ZGtxTgI8qoXzIKNDOXZbbFD+mpwUHmUUihW9o4JFWklW
atKcsWMy5WHgUyIOpwpJ6st+H6jiYoD2EEVSmAYY3qXNL3+q1Ok+CHLsIwMCPKaq2LxndD0UF/tU
Sxfj03k9bWtJySgOLnRQvwzZRjoQhsmnP+mg7H/rpXdYaXHmgwo38oZJar55CJD2AhZkPuXaTH4M
NMn5X7azKFGnpyuqSfqNZSlO42sTp5SjLVFteAxEy9/eCG/Oo2Sr05WE1LlSVHJ7liXMvGnjSG4N
0MedJ5qq+BOS3R7fY581qRY27Iy4g/Q9iY/NtBde17MXQRBdJ3NghVdJIgc=
-----END CERTIFICATE-----

Trustwave Global Certification Authority
========================================
-----BEGIN CERTIFICATE-----
MIIF2jCCA8KgAwIBAgIMBfcOhtpJ80Y1LrqyMA0GCSqGSIb3DQEBCwUAMIGIMQswCQYDVQQGEwJV
UzERMA8GA1UECAwISWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28xITAfBgNVBAoMGFRydXN0d2F2
ZSBIb2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1c3R3YXZlIEdsb2JhbCBDZXJ0aWZpY2F0aW9u
IEF1dGhvcml0eTAeFw0xNzA4MjMxOTM0MTJaFw00MjA4MjMxOTM0MTJaMIGIMQswCQYDVQQGEwJV
UzERMA8GA1UECAwISWxsaW5vaXMxEDAOBgNVBAcMB0NoaWNhZ28xITAfBgNVBAoMGFRydXN0d2F2
ZSBIb2xkaW5ncywgSW5jLjExMC8GA1UEAwwoVHJ1c3R3YXZlIEdsb2JhbCBDZXJ0aWZpY2F0aW9u
IEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALldUShLPDeS0YLOvR29
zd24q88KPuFd5dyqCblXAj7mY2Hf8g+CY66j96xz0XznswuvCAAJWX/NKSqIk4cXGIDtiLK0thAf
LdZfVaITXdHG6wZWiYj+rDKd/VzDBcdu7oaJuogDnXIhhpCujwOl3J+IKMujkkkP7NAP4m1ET4Bq
stTnoApTAbqOl5F2brz81Ws25kCI1nsvXwXoLG0R8+eyvpJETNKXpP7ScoFDB5zpET71ixpZfR9o
WN0EACyW80OzfpgZdNmcc9kYvkHHNHnZ9GLCQ7mzJ7Aiy/k9UscwR7PJPrhq4ufogXBeQotPJqX+
OsIgbrv4Fo7NDKm0G2x2EOFYeUY+VM6AqFcJNykbmROPDMjWLBz7BegIlT1lRtzuzWniTY+HKE40
Cz7PFNm73bZQmq131BnW2hqIyE4bJ3XYsgjxroMwuREOzYfwhI0Vcnyh78zyiGG69Gm7DIwLdVcE
uE4qFC49DxweMqZiNu5m4iK4BUBjECLzMx10coos9TkpoNPnG4CELcU9402x/RpvumUHO1jsQkUm
+9jaJXLE9gCxInm943xZYkqcBW89zubWR2OZxiRvchLIrH+QtAuRcOi35hYQcRfO3gZPSEF9NUqj
ifLJS3tBEW1ntwiYTOURGa5CgNz7kAXU+FDKvuStx8KU1xad5hePrzb7AgMBAAGjQjBAMA8GA1Ud
EwEB/wQFMAMBAf8wHQYDVR0OBBYEFJngGWcNYtt2s9o9uFvo/ULSMQ6HMA4GA1UdDwEB/wQEAwIB
BjANBgkqhkiG9w0BAQsFAAOCAgEAmHNw4rDT7TnsTGDZqRKGFx6W0OhUKDtkLSGm+J1WE2pIPU/H
PinbbViDVD2HfSMF1OQc3Og4ZYbFdada2zUFvXfeuyk3QAUHw5RSn8pk3fEbK9xGChACMf1KaA0H
ZJDmHvUqoai7PF35owgLEQzxPy0QlG/+4jSHg9bP5Rs1bdID4bANqKCqRieCNqcVtgimQlRXtpla
4gt5kNdXElE1GYhBaCXUNxeEFfsBctyV3lImIJgm4nb1J2/6ADtKYdkNy1GTKv0WBpanI5ojSP5R
vbbEsLFUzt5sQa0WZ37b/TjNuThOssFgy50X31ieemKyJo90lZvkWx3SD92YHJtZuSPTMaCm/zjd
zyBP6VhWOmfD0faZmZ26NraAL4hHT4a/RDqA5Dccprrql5gR0IRiR2Qequ5AvzSxnI9O4fKSTx+O
856X3vOmeWqJcU9LJxdI/uz0UA9PSX3MReO9ekDFQdxhVicGaeVyQYHTtgGJoC86cnn+OjC/QezH
Yj6RS8fZMXZC+fc8Y+wmjHMMfRod6qh8h6jCJ3zhM0EPz8/8AKAigJ5Kp28AsEFFtyLKaEjFQqKu
3R3y4G5OBVixwJAWKqQ9EEC+j2Jjg6mcgn0tAumDMHzLJ8n9HmYAsC7TIS+OMxZsmO0QqAfWzJPP
29FpHOTKyeC2nOnOcXHebD8WpHk=
-----END CERTIFICATE-----

Trustwave Global ECC P256 Certification Authority
=================================================
-----BEGIN CERTIFICATE-----
MIICYDCCAgegAwIBAgIMDWpfCD8oXD5Rld9dMAoGCCqGSM49BAMCMIGRMQswCQYDVQQGEwJVUzER
MA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBI
b2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDI1NiBDZXJ0aWZp
Y2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MjMxOTM1MTBaFw00MjA4MjMxOTM1MTBaMIGRMQswCQYD
VQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRy
dXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDI1
NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABH77bOYj
43MyCMpg5lOcunSNGLB4kFKA3TjASh3RqMyTpJcGOMoNFWLGjgEqZZ2q3zSRLoHB5DOSMcT9CTqm
P62jQzBBMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcGADAdBgNVHQ4EFgQUo0EGrJBt
0UrrdaVKEJmzsaGLSvcwCgYIKoZIzj0EAwIDRwAwRAIgB+ZU2g6gWrKuEZ+Hxbb/ad4lvvigtwjz
RM4q3wghDDcCIC0mA6AFvWvR9lz4ZcyGbbOcNEhjhAnFjXca4syc4XR7
-----END CERTIFICATE-----

Trustwave Global ECC P384 Certification Authority
=================================================
-----BEGIN CERTIFICATE-----
MIICnTCCAiSgAwIBAgIMCL2Fl2yZJ6SAaEc7MAoGCCqGSM49BAMDMIGRMQswCQYDVQQGEwJVUzER
MA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBI
b2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDM4NCBDZXJ0aWZp
Y2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MjMxOTM2NDNaFw00MjA4MjMxOTM2NDNaMIGRMQswCQYD
VQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRy
dXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDM4
NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTB2MBAGByqGSM49AgEGBSuBBAAiA2IABGvaDXU1CDFH
Ba5FmVXxERMuSvgQMSOjfoPTfygIOiYaOs+Xgh+AtycJj9GOMMQKmw6sWASr9zZ9lCOkmwqKi6vr
/TklZvFe/oyujUF5nQlgziip04pt89ZF1PKYhDhloKNDMEEwDwYDVR0TAQH/BAUwAwEB/zAPBgNV
HQ8BAf8EBQMDBwYAMB0GA1UdDgQWBBRVqYSJ0sEyvRjLbKYHTsjnnb6CkDAKBggqhkjOPQQDAwNn
ADBkAjA3AZKXRRJ+oPM+rRk6ct30UJMDEr5E0k9BpIycnR+j9sKS50gU/k6bpZFXrsY3crsCMGcl
CrEMXu6pY5Jv5ZAL/mYiykf9ijH3g/56vxC+GCsej/YpHpRZ744hN8tRmKVuSw==
-----END CERTIFICATE-----

NAVER Global Root Certification Authority
=========================================
-----BEGIN CERTIFICATE-----
MIIFojCCA4qgAwIBAgIUAZQwHqIL3fXFMyqxQ0Rx+NZQTQ0wDQYJKoZIhvcNAQEMBQAwaTELMAkG
A1UEBhMCS1IxJjAkBgNVBAoMHU5BVkVSIEJVU0lORVNTIFBMQVRGT1JNIENvcnAuMTIwMAYDVQQD
DClOQVZFUiBHbG9iYWwgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MTgwODU4
NDJaFw0zNzA4MTgyMzU5NTlaMGkxCzAJBgNVBAYTAktSMSYwJAYDVQQKDB1OQVZFUiBCVVNJTkVT
UyBQTEFURk9STSBDb3JwLjEyMDAGA1UEAwwpTkFWRVIgR2xvYmFsIFJvb3QgQ2VydGlmaWNhdGlv
biBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC21PGTXLVAiQqrDZBb
UGOukJR0F0Vy1ntlWilLp1agS7gvQnXp2XskWjFlqxcX0TM62RHcQDaH38dq6SZeWYp34+hInDEW
+j6RscrJo+KfziFTowI2MMtSAuXaMl3Dxeb57hHHi8lEHoSTGEq0n+USZGnQJoViAbbJAh2+g1G7
XNr4rRVqmfeSVPc0W+m/6imBEtRTkZazkVrd/pBzKPswRrXKCAfHcXLJZtM0l/aM9BhK4dA9WkW2
aacp+yPOiNgSnABIqKYPszuSjXEOdMWLyEz59JuOuDxp7W87UC9Y7cSw0BwbagzivESq2M0UXZR4
Yb8ObtoqvC8MC3GmsxY/nOb5zJ9TNeIDoKAYv7vxvvTWjIcNQvcGufFt7QSUqP620wbGQGHfnZ3z
VHbOUzoBppJB7ASjjw2i1QnK1sua8e9DXcCrpUHPXFNwcMmIpi3Ua2FzUCaGYQ5fG8Ir4ozVu53B
A0K6lNpfqbDKzE0K70dpAy8i+/Eozr9dUGWokG2zdLAIx6yo0es+nPxdGoMuK8u180SdOqcXYZai
cdNwlhVNt0xz7hlcxVs+Qf6sdWA7G2POAN3aCJBitOUt7kinaxeZVL6HSuOpXgRM6xBtVNbv8ejy
YhbLgGvtPe31HzClrkvJE+2KAQHJuFFYwGY6sWZLxNUxAmLpdIQM201GLQIDAQABo0IwQDAdBgNV
HQ4EFgQU0p+I36HNLL3s9TsBAZMzJ7LrYEswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMB
Af8wDQYJKoZIhvcNAQEMBQADggIBADLKgLOdPVQG3dLSLvCkASELZ0jKbY7gyKoNqo0hV4/GPnrK
21HUUrPUloSlWGB/5QuOH/XcChWB5Tu2tyIvCZwTFrFsDDUIbatjcu3cvuzHV+YwIHHW1xDBE1UB
jCpD5EHxzzp6U5LOogMFDTjfArsQLtk70pt6wKGm+LUx5vR1yblTmXVHIloUFcd4G7ad6Qz4G3bx
hYTeodoS76TiEJd6eN4MUZeoIUCLhr0N8F5OSza7OyAfikJW4Qsav3vQIkMsRIz75Sq0bBwcupTg
E34h5prCy8VCZLQelHsIJchxzIdFV4XTnyliIoNRlwAYl3dqmJLJfGBs32x9SuRwTMKeuB330DTH
D8z7p/8Dvq1wkNoL3chtl1+afwkyQf3NosxabUzyqkn+Zvjp2DXrDige7kgvOtB5CTh8piKCk5XQ
A76+AqAF3SAi428diDRgxuYKuQl1C/AH6GmWNcf7I4GOODm4RStDeKLRLBT/DShycpWbXgnbiUSY
qqFJu3FS8r/2/yehNq+4tneI3TqkbZs0kNwUXTC/t+sX5Ie3cdCh13cV1ELX8vMxmV2b3RZtP+oG
I/hGoiLtk/bdmuYqh7GYVPEi92tF4+KOdh2ajcQGjTa3FPOdVGm3jjzVpG2Tgbet9r1ke8LJaDmg
kpzNNIaRkPpkUZ3+/uul9XXeifdy
-----END CERTIFICATE-----

AC RAIZ FNMT-RCM SERVIDORES SEGUROS
===================================
-----BEGIN CERTIFICATE-----
MIICbjCCAfOgAwIBAgIQYvYybOXE42hcG2LdnC6dlTAKBggqhkjOPQQDAzB4MQswCQYDVQQGEwJF
UzERMA8GA1UECgwIRk5NVC1SQ00xDjAMBgNVBAsMBUNlcmVzMRgwFgYDVQRhDA9WQVRFUy1RMjgy
NjAwNEoxLDAqBgNVBAMMI0FDIFJBSVogRk5NVC1SQ00gU0VSVklET1JFUyBTRUdVUk9TMB4XDTE4
MTIyMDA5MzczM1oXDTQzMTIyMDA5MzczM1oweDELMAkGA1UEBhMCRVMxETAPBgNVBAoMCEZOTVQt
UkNNMQ4wDAYDVQQLDAVDZXJlczEYMBYGA1UEYQwPVkFURVMtUTI4MjYwMDRKMSwwKgYDVQQDDCNB
QyBSQUlaIEZOTVQtUkNNIFNFUlZJRE9SRVMgU0VHVVJPUzB2MBAGByqGSM49AgEGBSuBBAAiA2IA
BPa6V1PIyqvfNkpSIeSX0oNnnvBlUdBeh8dHsVnyV0ebAAKTRBdp20LHsbI6GA60XYyzZl2hNPk2
LEnb80b8s0RpRBNm/dfF/a82Tc4DTQdxz69qBdKiQ1oKUm8BA06Oi6NCMEAwDwYDVR0TAQH/BAUw
AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFAG5L++/EYZg8k/QQW6rcx/n0m5JMAoGCCqG
SM49BAMDA2kAMGYCMQCuSuMrQMN0EfKVrRYj3k4MGuZdpSRea0R7/DjiT8ucRRcRTBQnJlU5dUoD
zBOQn5ICMQD6SmxgiHPz7riYYqnOK8LZiqZwMR2vsJRM60/G49HzYqc8/5MuB1xJAWdpEgJyv+c=
-----END CERTIFICATE-----

GlobalSign Root R46
===================
-----BEGIN CERTIFICATE-----
MIIFWjCCA0KgAwIBAgISEdK7udcjGJ5AXwqdLdDfJWfRMA0GCSqGSIb3DQEBDAUAMEYxCzAJBgNV
BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYDVQQDExNHbG9iYWxTaWduIFJv
b3QgUjQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMyMDAwMDAwMFowRjELMAkGA1UEBhMCQkUxGTAX
BgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExHDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBSNDYwggIi
MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCsrHQy6LNl5brtQyYdpokNRbopiLKkHWPd08Es
CVeJOaFV6Wc0dwxu5FUdUiXSE2te4R2pt32JMl8Nnp8semNgQB+msLZ4j5lUlghYruQGvGIFAha/
r6gjA7aUD7xubMLL1aa7DOn2wQL7Id5m3RerdELv8HQvJfTqa1VbkNud316HCkD7rRlr+/fKYIje
2sGP1q7Vf9Q8g+7XFkyDRTNrJ9CG0Bwta/OrffGFqfUo0q3v84RLHIf8E6M6cqJaESvWJ3En7YEt
bWaBkoe0G1h6zD8K+kZPTXhc+CtI4wSEy132tGqzZfxCnlEmIyDLPRT5ge1lFgBPGmSXZgjPjHvj
K8Cd+RTyG/FWaha/LIWFzXg4mutCagI0GIMXTpRW+LaCtfOW3T3zvn8gdz57GSNrLNRyc0NXfeD4
12lPFzYE+cCQYDdF3uYM2HSNrpyibXRdQr4G9dlkbgIQrImwTDsHTUB+JMWKmIJ5jqSngiCNI/on
ccnfxkF0oE32kRbcRoxfKWMxWXEM2G/CtjJ9++ZdU6Z+Ffy7dXxd7Pj2Fxzsx2sZy/N78CsHpdls
eVR2bJ0cpm4O6XkMqCNqo98bMDGfsVR7/mrLZqrcZdCinkqaByFrgY/bxFn63iLABJzjqls2k+g9
vXqhnQt2sQvHnf3PmKgGwvgqo6GDoLclcqUC4wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYD
VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA1yrc4GHqMywptWU4jaWSf8FmSwwDQYJKoZIhvcNAQEM
BQADggIBAHx47PYCLLtbfpIrXTncvtgdokIzTfnvpCo7RGkerNlFo048p9gkUbJUHJNOxO97k4Vg
JuoJSOD1u8fpaNK7ajFxzHmuEajwmf3lH7wvqMxX63bEIaZHU1VNaL8FpO7XJqti2kM3S+LGteWy
gxk6x9PbTZ4IevPuzz5i+6zoYMzRx6Fcg0XERczzF2sUyQQCPtIkpnnpHs6i58FZFZ8d4kuaPp92
CC1r2LpXFNqD6v6MVenQTqnMdzGxRBF6XLE+0xRFFRhiJBPSy03OXIPBNvIQtQ6IbbjhVp+J3pZm
OUdkLG5NrmJ7v2B0GbhWrJKsFjLtrWhV/pi60zTe9Mlhww6G9kuEYO4Ne7UyWHmRVSyBQ7N0H3qq
JZ4d16GLuc1CLgSkZoNNiTW2bKg2SnkheCLQQrzRQDGQob4Ez8pn7fXwgNNgyYMqIgXQBztSvwye
qiv5u+YfjyW6hY0XHgL+XVAEV8/+LbzvXMAaq7afJMbfc2hIkCwU9D9SGuTSyxTDYWnP4vkYxboz
nxSjBF25cfe1lNj2M8FawTSLfJvdkzrnE6JwYZ+vj+vYxXX4M2bUdGc6N3ec592kD3ZDZopD8p/7
DEJ4Y9HiD2971KE9dJeFt0g5QdYg/NA6s/rob8SKunE3vouXsXgxT7PntgMTzlSdriVZzH81Xwj3
QEUxeCp6
-----END CERTIFICATE-----

GlobalSign Root E46
===================
-----BEGIN CERTIFICATE-----
MIICCzCCAZGgAwIBAgISEdK7ujNu1LzmJGjFDYQdmOhDMAoGCCqGSM49BAMDMEYxCzAJBgNVBAYT
AkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYDVQQDExNHbG9iYWxTaWduIFJvb3Qg
RTQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMyMDAwMDAwMFowRjELMAkGA1UEBhMCQkUxGTAXBgNV
BAoTEEdsb2JhbFNpZ24gbnYtc2ExHDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBFNDYwdjAQBgcq
hkjOPQIBBgUrgQQAIgNiAAScDrHPt+ieUnd1NPqlRqetMhkytAepJ8qUuwzSChDH2omwlwxwEwkB
jtjqR+q+soArzfwoDdusvKSGN+1wCAB16pMLey5SnCNoIwZD7JIvU4Tb+0cUB+hflGddyXqBPCCj
QjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQxCpCPtsad0kRL
gLWi5h+xEk8blTAKBggqhkjOPQQDAwNoADBlAjEA31SQ7Zvvi5QCkxeCmb6zniz2C5GMn0oUsfZk
vLtoURMMA/cVi4RguYv/Uo7njLwcAjA8+RHUjE7AwWHCFUyqqx0LMV87HOIAl0Qx5v5zli/altP+
CAezNIm8BZ/3Hobui3A=
-----END CERTIFICATE-----

GLOBALTRUST 2020
================
-----BEGIN CERTIFICATE-----
MIIFgjCCA2qgAwIBAgILWku9WvtPilv6ZeUwDQYJKoZIhvcNAQELBQAwTTELMAkGA1UEBhMCQVQx
IzAhBgNVBAoTGmUtY29tbWVyY2UgbW9uaXRvcmluZyBHbWJIMRkwFwYDVQQDExBHTE9CQUxUUlVT
VCAyMDIwMB4XDTIwMDIxMDAwMDAwMFoXDTQwMDYxMDAwMDAwMFowTTELMAkGA1UEBhMCQVQxIzAh
BgNVBAoTGmUtY29tbWVyY2UgbW9uaXRvcmluZyBHbWJIMRkwFwYDVQQDExBHTE9CQUxUUlVTVCAy
MDIwMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAri5WrRsc7/aVj6B3GyvTY4+ETUWi
D59bRatZe1E0+eyLinjF3WuvvcTfk0Uev5E4C64OFudBc/jbu9G4UeDLgztzOG53ig9ZYybNpyrO
VPu44sB8R85gfD+yc/LAGbaKkoc1DZAoouQVBGM+uq/ufF7MpotQsjj3QWPKzv9pj2gOlTblzLmM
CcpL3TGQlsjMH/1WljTbjhzqLL6FLmPdqqmV0/0plRPwyJiT2S0WR5ARg6I6IqIoV6Lr/sCMKKCm
fecqQjuCgGOlYx8ZzHyyZqjC0203b+J+BlHZRYQfEs4kUmSFC0iAToexIiIwquuuvuAC4EDosEKA
A1GqtH6qRNdDYfOiaxaJSaSjpCuKAsR49GiKweR6NrFvG5Ybd0mN1MkGco/PU+PcF4UgStyYJ9OR
JitHHmkHr96i5OTUawuzXnzUJIBHKWk7buis/UDr2O1xcSvy6Fgd60GXIsUf1DnQJ4+H4xj04KlG
DfV0OoIu0G4skaMxXDtG6nsEEFZegB31pWXogvziB4xiRfUg3kZwhqG8k9MedKZssCz3AwyIDMvU
clOGvGBG85hqwvG/Q/lwIHfKN0F5VVJjjVsSn8VoxIidrPIwq7ejMZdnrY8XD2zHc+0klGvIg5rQ
mjdJBKuxFshsSUktq6HQjJLyQUp5ISXbY9e2nKd+Qmn7OmMCAwEAAaNjMGEwDwYDVR0TAQH/BAUw
AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFNwuH9FhN3nkq9XVsxJxaD1qaJwiMB8GA1Ud
IwQYMBaAFNwuH9FhN3nkq9XVsxJxaD1qaJwiMA0GCSqGSIb3DQEBCwUAA4ICAQCR8EICaEDuw2jA
VC/f7GLDw56KoDEoqoOOpFaWEhCGVrqXctJUMHytGdUdaG/7FELYjQ7ztdGl4wJCXtzoRlgHNQIw
4Lx0SsFDKv/bGtCwr2zD/cuz9X9tAy5ZVp0tLTWMstZDFyySCstd6IwPS3BD0IL/qMy/pJTAvoe9
iuOTe8aPmxadJ2W8esVCgmxcB9CpwYhgROmYhRZf+I/KARDOJcP5YBugxZfD0yyIMaK9MOzQ0MAS
8cE54+X1+NZK3TTN+2/BT+MAi1bikvcoskJ3ciNnxz8RFbLEAwW+uxF7Cr+obuf/WEPPm2eggAe2
HcqtbepBEX4tdJP7wry+UUTF72glJ4DjyKDUEuzZpTcdN3y0kcra1LGWge9oXHYQSa9+pTeAsRxS
vTOBTI/53WXZFM2KJVj04sWDpQmQ1GwUY7VA3+vA/MRYfg0UFodUJ25W5HCEuGwyEn6CMUO+1918
oa2u1qsgEu8KwxCMSZY13At1XrFP1U80DhEgB3VDRemjEdqso5nCtnkn4rnvyOL2NSl6dPrFf4IF
YqYK6miyeUcGbvJXqBUzxvd4Sj1Ce2t+/vdG6tHrju+IaFvowdlxfv1k7/9nR4hYJS8+hge9+6jl
gqispdNpQ80xiEmEU5LAsTkbOYMBMMTyqfrQA71yN2BWHzZ8vTmR9W0Nv3vXkg==
-----END CERTIFICATE-----

ANF Secure Server Root CA
=========================
-----BEGIN CERTIFICATE-----
MIIF7zCCA9egAwIBAgIIDdPjvGz5a7EwDQYJKoZIhvcNAQELBQAwgYQxEjAQBgNVBAUTCUc2MzI4
NzUxMDELMAkGA1UEBhMCRVMxJzAlBgNVBAoTHkFORiBBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lv
bjEUMBIGA1UECxMLQU5GIENBIFJhaXoxIjAgBgNVBAMTGUFORiBTZWN1cmUgU2VydmVyIFJvb3Qg
Q0EwHhcNMTkwOTA0MTAwMDM4WhcNMzkwODMwMTAwMDM4WjCBhDESMBAGA1UEBRMJRzYzMjg3NTEw
MQswCQYDVQQGEwJFUzEnMCUGA1UEChMeQU5GIEF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uMRQw
EgYDVQQLEwtBTkYgQ0EgUmFpejEiMCAGA1UEAxMZQU5GIFNlY3VyZSBTZXJ2ZXIgUm9vdCBDQTCC
AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANvrayvmZFSVgpCjcqQZAZ2cC4Ffc0m6p6zz
BE57lgvsEeBbphzOG9INgxwruJ4dfkUyYA8H6XdYfp9qyGFOtibBTI3/TO80sh9l2Ll49a2pcbnv
T1gdpd50IJeh7WhM3pIXS7yr/2WanvtH2Vdy8wmhrnZEE26cLUQ5vPnHO6RYPUG9tMJJo8gN0pcv
B2VSAKduyK9o7PQUlrZXH1bDOZ8rbeTzPvY1ZNoMHKGESy9LS+IsJJ1tk0DrtSOOMspvRdOoiXse
zx76W0OLzc2oD2rKDF65nkeP8Nm2CgtYZRczuSPkdxl9y0oukntPLxB3sY0vaJxizOBQ+OyRp1RM
VwnVdmPF6GUe7m1qzwmd+nxPrWAI/VaZDxUse6mAq4xhj0oHdkLePfTdsiQzW7i1o0TJrH93PB0j
7IKppuLIBkwC/qxcmZkLLxCKpvR/1Yd0DVlJRfbwcVw5Kda/SiOL9V8BY9KHcyi1Swr1+KuCLH5z
JTIdC2MKF4EA/7Z2Xue0sUDKIbvVgFHlSFJnLNJhiQcND85Cd8BEc5xEUKDbEAotlRyBr+Qc5RQe
8TZBAQIvfXOn3kLMTOmJDVb3n5HUA8ZsyY/b2BzgQJhdZpmYgG4t/wHFzstGH6wCxkPmrqKEPMVO
Hj1tyRRM4y5Bu8o5vzY8KhmqQYdOpc5LMnndkEl/AgMBAAGjYzBhMB8GA1UdIwQYMBaAFJxf0Gxj
o1+TypOYCK2Mh6UsXME3MB0GA1UdDgQWBBScX9BsY6Nfk8qTmAitjIelLFzBNzAOBgNVHQ8BAf8E
BAMCAYYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEATh65isagmD9uw2nAalxJ
UqzLK114OMHVVISfk/CHGT0sZonrDUL8zPB1hT+L9IBdeeUXZ701guLyPI59WzbLWoAAKfLOKyzx
j6ptBZNscsdW699QIyjlRRA96Gejrw5VD5AJYu9LWaL2U/HANeQvwSS9eS9OICI7/RogsKQOLHDt
dD+4E5UGUcjohybKpFtqFiGS3XNgnhAY3jyB6ugYw3yJ8otQPr0R4hUDqDZ9MwFsSBXXiJCZBMXM
5gf0vPSQ7RPi6ovDj6MzD8EpTBNO2hVWcXNyglD2mjN8orGoGjR0ZVzO0eurU+AagNjqOknkJjCb
5RyKqKkVMoaZkgoQI1YS4PbOTOK7vtuNknMBZi9iPrJyJ0U27U1W45eZ/zo1PqVUSlJZS2Db7v54
EX9K3BR5YLZrZAPbFYPhor72I5dQ8AkzNqdxliXzuUJ92zg/LFis6ELhDtjTO0wugumDLmsx2d1H
hk9tl5EuT+IocTUW0fJz/iUrB0ckYyfI+PbZa/wSMVYIwFNCr5zQM378BvAxRAMU8Vjq8moNqRGy
g77FGr8H6lnco4g175x2MjxNBiLOFeXdntiP2t7SxDnlF4HPOEfrf4htWRvfn0IUrn7PqLBmZdo3
r5+qPeoott7VMVgWglvquxl1AnMaykgaIZOQCo6ThKd9OyMYkomgjaw=
-----END CERTIFICATE-----

Certum EC-384 CA
================
-----BEGIN CERTIFICATE-----
MIICZTCCAeugAwIBAgIQeI8nXIESUiClBNAt3bpz9DAKBggqhkjOPQQDAzB0MQswCQYDVQQGEwJQ
TDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2Vy
dGlmaWNhdGlvbiBBdXRob3JpdHkxGTAXBgNVBAMTEENlcnR1bSBFQy0zODQgQ0EwHhcNMTgwMzI2
MDcyNDU0WhcNNDMwMzI2MDcyNDU0WjB0MQswCQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERh
dGEgU3lzdGVtcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkx
GTAXBgNVBAMTEENlcnR1bSBFQy0zODQgQ0EwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATEKI6rGFtq
vm5kN2PkzeyrOvfMobgOgknXhimfoZTy42B4mIF4Bk3y7JoOV2CDn7TmFy8as10CW4kjPMIRBSqn
iBMY81CE1700LCeJVf/OTOffph8oxPBUw7l8t1Ot68KjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD
VR0OBBYEFI0GZnQkdjrzife81r1HfS+8EF9LMA4GA1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNo
ADBlAjADVS2m5hjEfO/JUG7BJw+ch69u1RsIGL2SKcHvlJF40jocVYli5RsJHrpka/F2tNQCMQC0
QoSZ/6vnnvuRlydd3LBbMHHOXjgaatkl5+r3YZJW+OraNsKHZZYuciUvf9/DE8k=
-----END CERTIFICATE-----

Certum Trusted Root CA
======================
-----BEGIN CERTIFICATE-----
MIIFwDCCA6igAwIBAgIQHr9ZULjJgDdMBvfrVU+17TANBgkqhkiG9w0BAQ0FADB6MQswCQYDVQQG
EwJQTDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0g
Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkxHzAdBgNVBAMTFkNlcnR1bSBUcnVzdGVkIFJvb3QgQ0Ew
HhcNMTgwMzE2MTIxMDEzWhcNNDMwMzE2MTIxMDEzWjB6MQswCQYDVQQGEwJQTDEhMB8GA1UEChMY
QXNzZWNvIERhdGEgU3lzdGVtcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBB
dXRob3JpdHkxHzAdBgNVBAMTFkNlcnR1bSBUcnVzdGVkIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEB
AQUAA4ICDwAwggIKAoICAQDRLY67tzbqbTeRn06TpwXkKQMlzhyC93yZn0EGze2jusDbCSzBfN8p
fktlL5On1AFrAygYo9idBcEq2EXxkd7fO9CAAozPOA/qp1x4EaTByIVcJdPTsuclzxFUl6s1wB52
HO8AU5853BSlLCIls3Jy/I2z5T4IHhQqNwuIPMqw9MjCoa68wb4pZ1Xi/K1ZXP69VyywkI3C7Te2
fJmItdUDmj0VDT06qKhF8JVOJVkdzZhpu9PMMsmN74H+rX2Ju7pgE8pllWeg8xn2A1bUatMn4qGt
g/BKEiJ3HAVz4hlxQsDsdUaakFjgao4rpUYwBI4Zshfjvqm6f1bxJAPXsiEodg42MEx51UGamqi4
NboMOvJEGyCI98Ul1z3G4z5D3Yf+xOr1Uz5MZf87Sst4WmsXXw3Hw09Omiqi7VdNIuJGmj8PkTQk
fVXjjJU30xrwCSss0smNtA0Aq2cpKNgB9RkEth2+dv5yXMSFytKAQd8FqKPVhJBPC/PgP5sZ0jeJ
P/J7UhyM9uH3PAeXjA6iWYEMspA90+NZRu0PqafegGtaqge2Gcu8V/OXIXoMsSt0Puvap2ctTMSY
njYJdmZm/Bo/6khUHL4wvYBQv3y1zgD2DGHZ5yQD4OMBgQ692IU0iL2yNqh7XAjlRICMb/gv1SHK
HRzQ+8S1h9E6Tsd2tTVItQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSM+xx1
vALTn04uSNn5YFSqxLNP+jAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQENBQADggIBAEii1QAL
LtA/vBzVtVRJHlpr9OTy4EA34MwUe7nJ+jW1dReTagVphZzNTxl4WxmB82M+w85bj/UvXgF2Ez8s
ALnNllI5SW0ETsXpD4YN4fqzX4IS8TrOZgYkNCvozMrnadyHncI013nR03e4qllY/p0m+jiGPp2K
h2RX5Rc64vmNueMzeMGQ2Ljdt4NR5MTMI9UGfOZR0800McD2RrsLrfw9EAUqO0qRJe6M1ISHgCq8
CYyqOhNf6DR5UMEQGfnTKB7U0VEwKbOukGfWHwpjscWpxkIxYxeU72nLL/qMFH3EQxiJ2fAyQOaA
4kZf5ePBAFmo+eggvIksDkc0C+pXwlM2/KfUrzHN/gLldfq5Jwn58/U7yn2fqSLLiMmq0Uc9Nneo
WWRrJ8/vJ8HjJLWG965+Mk2weWjROeiQWMODvA8s1pfrzgzhIMfatz7DP78v3DSk+yshzWePS/Tj
6tQ/50+6uaWTRRxmHyH6ZF5v4HaUMst19W7l9o/HuKTMqJZ9ZPskWkoDbGs4xugDQ5r3V7mzKWmT
OPQD8rv7gmsHINFSH5pkAnuYZttcTVoP0ISVoDwUQwbKytu4QTbaakRnh6+v40URFWkIsr4WOZck
bxJF0WddCajJFdr60qZfE2Efv4WstK2tBZQIgx51F9NxO5NQI1mg7TyRVJ12AMXDuDjb
-----END CERTIFICATE-----

TunTrust Root CA
================
-----BEGIN CERTIFICATE-----
MIIFszCCA5ugAwIBAgIUEwLV4kBMkkaGFmddtLu7sms+/BMwDQYJKoZIhvcNAQELBQAwYTELMAkG
A1UEBhMCVE4xNzA1BgNVBAoMLkFnZW5jZSBOYXRpb25hbGUgZGUgQ2VydGlmaWNhdGlvbiBFbGVj
dHJvbmlxdWUxGTAXBgNVBAMMEFR1blRydXN0IFJvb3QgQ0EwHhcNMTkwNDI2MDg1NzU2WhcNNDQw
NDI2MDg1NzU2WjBhMQswCQYDVQQGEwJUTjE3MDUGA1UECgwuQWdlbmNlIE5hdGlvbmFsZSBkZSBD
ZXJ0aWZpY2F0aW9uIEVsZWN0cm9uaXF1ZTEZMBcGA1UEAwwQVHVuVHJ1c3QgUm9vdCBDQTCCAiIw
DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMPN0/y9BFPdDCA61YguBUtB9YOCfvdZn56eY+hz
2vYGqU8ftPkLHzmMmiDQfgbU7DTZhrx1W4eI8NLZ1KMKsmwb60ksPqxd2JQDoOw05TDENX37Jk0b
bjBU2PWARZw5rZzJJQRNmpA+TkBuimvNKWfGzC3gdOgFVwpIUPp6Q9p+7FuaDmJ2/uqdHYVy7BG7
NegfJ7/Boce7SBbdVtfMTqDhuazb1YMZGoXRlJfXyqNlC/M4+QKu3fZnz8k/9YosRxqZbwUN/dAd
gjH8KcwAWJeRTIAAHDOFli/LQcKLEITDCSSJH7UP2dl3RxiSlGBcx5kDPP73lad9UKGAwqmDrViW
VSHbhlnUr8a83YFuB9tgYv7sEG7aaAH0gxupPqJbI9dkxt/con3YS7qC0lH4Zr8GRuR5KiY2eY8f
Tpkdso8MDhz/yV3A/ZAQprE38806JG60hZC/gLkMjNWb1sjxVj8agIl6qeIbMlEsPvLfe/ZdeikZ
juXIvTZxi11Mwh0/rViizz1wTaZQmCXcI/m4WEEIcb9PuISgjwBUFfyRbVinljvrS5YnzWuioYas
DXxU5mZMZl+QviGaAkYt5IPCgLnPSz7ofzwB7I9ezX/SKEIBlYrilz0QIX32nRzFNKHsLA4KUiwS
VXAkPcvCFDVDXSdOvsC9qnyW5/yeYa1E0wCXAgMBAAGjYzBhMB0GA1UdDgQWBBQGmpsfU33x9aTI
04Y+oXNZtPdEITAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFAaamx9TffH1pMjThj6hc1m0
90QhMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAqgVutt0Vyb+zxiD2BkewhpMl
0425yAA/l/VSJ4hxyXT968pk21vvHl26v9Hr7lxpuhbI87mP0zYuQEkHDVneixCwSQXi/5E/S7fd
Ao74gShczNxtr18UnH1YeA32gAm56Q6XKRm4t+v4FstVEuTGfbvE7Pi1HE4+Z7/FXxttbUcoqgRY
YdZ2vyJ/0Adqp2RT8JeNnYA/u8EH22Wv5psymsNUk8QcCMNE+3tjEUPRahphanltkE8pjkcFwRJp
adbGNjHh/PqAulxPxOu3Mqz4dWEX1xAZufHSCe96Qp1bWgvUxpVOKs7/B9dPfhgGiPEZtdmYu65x
xBzndFlY7wyJz4sfdZMaBBSSSFCp61cpABbjNhzI+L/wM9VBD8TMPN3pM0MBkRArHtG5Xc0yGYuP
jCB31yLEQtyEFpslbei0VXF/sHyz03FJuc9SpAQ/3D2gu68zngowYI7bnV2UqL1g52KAdoGDDIzM
MEZJ4gzSqK/rYXHv5yJiqfdcZGyfFoxnNidF9Ql7v/YQCvGwjVRDjAS6oz/v4jXH+XTgbzRB0L9z
ZVcg+ZtnemZoJE6AZb0QmQZZ8mWvuMZHu/2QeItBcy6vVR/cO5JyboTT0GFMDcx2V+IthSIVNg3r
AZ3r2OvEhJn7wAzMMujjd9qDRIueVSjAi1jTkD5OGwDxFa2DK5o=
-----END CERTIFICATE-----

HARICA TLS RSA Root CA 2021
===========================
-----BEGIN CERTIFICATE-----
MIIFpDCCA4ygAwIBAgIQOcqTHO9D88aOk8f0ZIk4fjANBgkqhkiG9w0BAQsFADBsMQswCQYDVQQG
EwJHUjE3MDUGA1UECgwuSGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9u
cyBDQTEkMCIGA1UEAwwbSEFSSUNBIFRMUyBSU0EgUm9vdCBDQSAyMDIxMB4XDTIxMDIxOTEwNTUz
OFoXDTQ1MDIxMzEwNTUzN1owbDELMAkGA1UEBhMCR1IxNzA1BgNVBAoMLkhlbGxlbmljIEFjYWRl
bWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ0ExJDAiBgNVBAMMG0hBUklDQSBUTFMgUlNB
IFJvb3QgQ0EgMjAyMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAIvC569lmwVnlskN
JLnQDmT8zuIkGCyEf3dRywQRNrhe7Wlxp57kJQmXZ8FHws+RFjZiPTgE4VGC/6zStGndLuwRo0Xu
a2s7TL+MjaQenRG56Tj5eg4MmOIjHdFOY9TnuEFE+2uva9of08WRiFukiZLRgeaMOVig1mlDqa2Y
Ulhu2wr7a89o+uOkXjpFc5gH6l8Cct4MpbOfrqkdtx2z/IpZ525yZa31MJQjB/OCFks1mJxTuy/K
5FrZx40d/JiZ+yykgmvwKh+OC19xXFyuQnspiYHLA6OZyoieC0AJQTPb5lh6/a6ZcMBaD9YThnEv
dmn8kN3bLW7R8pv1GmuebxWMevBLKKAiOIAkbDakO/IwkfN4E8/BPzWr8R0RI7VDIp4BkrcYAuUR
0YLbFQDMYTfBKnya4dC6s1BG7oKsnTH4+yPiAwBIcKMJJnkVU2DzOFytOOqBAGMUuTNe3QvboEUH
GjMJ+E20pwKmafTCWQWIZYVWrkvL4N48fS0ayOn7H6NhStYqE613TBoYm5EPWNgGVMWX+Ko/IIqm
haZ39qb8HOLubpQzKoNQhArlT4b4UEV4AIHrW2jjJo3Me1xR9BQsQL4aYB16cmEdH2MtiKrOokWQ
CPxrvrNQKlr9qEgYRtaQQJKQCoReaDH46+0N0x3GfZkYVVYnZS6NRcUk7M7jAgMBAAGjQjBAMA8G
A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFApII6ZgpJIKM+qTW8VX6iVNvRLuMA4GA1UdDwEB/wQE
AwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAPpBIqm5iFSVmewzVjIuJndftTgfvnNAUX15QvWiWkKQU
EapobQk1OUAJ2vQJLDSle1mESSmXdMgHHkdt8s4cUCbjnj1AUz/3f5Z2EMVGpdAgS1D0NTsY9FVq
QRtHBmg8uwkIYtlfVUKqrFOFrJVWNlar5AWMxajaH6NpvVMPxP/cyuN+8kyIhkdGGvMA9YCRotxD
QpSbIPDRzbLrLFPCU3hKTwSUQZqPJzLB5UkZv/HywouoCjkxKLR9YjYsTewfM7Z+d21+UPCfDtcR
j88YxeMn/ibvBZ3PzzfF0HvaO7AWhAw6k9a+F9sPPg4ZeAnHqQJyIkv3N3a6dcSFA1pj1bF1BcK5
vZStjBWZp5N99sXzqnTPBIWUmAD04vnKJGW/4GKvyMX6ssmeVkjaef2WdhW+o45WxLM0/L5H9MG0
qPzVMIho7suuyWPEdr6sOBjhXlzPrjoiUevRi7PzKzMHVIf6tLITe7pTBGIBnfHAT+7hOtSLIBD6
Alfm78ELt5BGnBkpjNxvoEppaZS3JGWg/6w/zgH7IS79aPib8qXPMThcFarmlwDB31qlpzmq6YR/
PFGoOtmUW4y/Twhx5duoXNTSpv4Ao8YWxw/ogM4cKGR0GQjTQuPOAF1/sdwTsOEFy9EgqoZ0njnn
kf3/W9b3raYvAwtt41dU63ZTGI0RmLo=
-----END CERTIFICATE-----

HARICA TLS ECC Root CA 2021
===========================
-----BEGIN CERTIFICATE-----
MIICVDCCAdugAwIBAgIQZ3SdjXfYO2rbIvT/WeK/zjAKBggqhkjOPQQDAzBsMQswCQYDVQQGEwJH
UjE3MDUGA1UECgwuSGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBD
QTEkMCIGA1UEAwwbSEFSSUNBIFRMUyBFQ0MgUm9vdCBDQSAyMDIxMB4XDTIxMDIxOTExMDExMFoX
DTQ1MDIxMzExMDEwOVowbDELMAkGA1UEBhMCR1IxNzA1BgNVBAoMLkhlbGxlbmljIEFjYWRlbWlj
IGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ0ExJDAiBgNVBAMMG0hBUklDQSBUTFMgRUNDIFJv
b3QgQ0EgMjAyMTB2MBAGByqGSM49AgEGBSuBBAAiA2IABDgI/rGgltJ6rK9JOtDA4MM7KKrxcm1l
AEeIhPyaJmuqS7psBAqIXhfyVYf8MLA04jRYVxqEU+kw2anylnTDUR9YSTHMmE5gEYd103KUkE+b
ECUqqHgtvpBBWJAVcqeht6NCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUyRtTgRL+BNUW
0aq8mm+3oJUZbsowDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMDA2cAMGQCMBHervjcToiwqfAi
rcJRQO9gcS3ujwLEXQNwSaSS6sUUiHCm0w2wqsosQJz76YJumgIwK0eaB8bRwoF8yguWGEEbo/Qw
CZ61IygNnxS2PFOiTAZpffpskcYqSUXm7LcT4Tps
-----END CERTIFICATE-----

Autoridad de Certificacion Firmaprofesional CIF A62634068
=========================================================
-----BEGIN CERTIFICATE-----
MIIGFDCCA/ygAwIBAgIIG3Dp0v+ubHEwDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCRVMxQjBA
BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2
MjYzNDA2ODAeFw0xNDA5MjMxNTIyMDdaFw0zNjA1MDUxNTIyMDdaMFExCzAJBgNVBAYTAkVTMUIw
QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB
NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD
Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P
B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY
7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH
ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI
plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX
MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX
LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK
bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU
vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMB0GA1Ud
DgQWBBRlzeurNR4APn7VdMActHNHDhpkLzASBgNVHRMBAf8ECDAGAQH/AgEBMIGmBgNVHSAEgZ4w
gZswgZgGBFUdIAAwgY8wLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuZmlybWFwcm9mZXNpb25hbC5j
b20vY3BzMFwGCCsGAQUFBwICMFAeTgBQAGEAcwBlAG8AIABkAGUAIABsAGEAIABCAG8AbgBhAG4A
bwB2AGEAIAA0ADcAIABCAGEAcgBjAGUAbABvAG4AYQAgADAAOAAwADEANzAOBgNVHQ8BAf8EBAMC
AQYwDQYJKoZIhvcNAQELBQADggIBAHSHKAIrdx9miWTtj3QuRhy7qPj4Cx2Dtjqn6EWKB7fgPiDL
4QjbEwj4KKE1soCzC1HA01aajTNFSa9J8OA9B3pFE1r/yJfY0xgsfZb43aJlQ3CTkBW6kN/oGbDb
LIpgD7dvlAceHabJhfa9NPhAeGIQcDq+fUs5gakQ1JZBu/hfHAsdCPKxsIl68veg4MSPi3i1O1il
I45PVf42O+AMt8oqMEEgtIDNrvx2ZnOorm7hfNoD6JQg5iKj0B+QXSBTFCZX2lSX3xZEEAEeiGaP
cjiT3SC3NL7X8e5jjkd5KAb881lFJWAiMxujX6i6KtoaPc1A6ozuBRWV1aUsIC+nmCjuRfzxuIgA
LI9C2lHVnOUTaHFFQ4ueCyE8S1wF3BqfmI7avSKecs2tCsvMo2ebKHTEm9caPARYpoKdrcd7b/+A
lun4jWq9GJAd/0kakFI3ky88Al2CdgtR5xbHV/g4+afNmyJU72OwFW1TZQNKXkqgsqeOSQBZONXH
9IBk9W6VULgRfhVwOEqwf9DEMnDAGf/JOC0ULGb0QkTmVXYbgBVX/8Cnp6o5qtjTcNAuuuuUavpf
NIbnYrX9ivAwhZTJryQCL2/W3Wf+47BVTwSYT6RBVuKT0Gro1vP7ZeDOdcQxWQzugsgMYDNKGbqE
ZycPvEJdvSRUDewdcAZfpLz6IHxV
-----END CERTIFICATE-----

vTrus ECC Root CA
=================
-----BEGIN CERTIFICATE-----
MIICDzCCAZWgAwIBAgIUbmq8WapTvpg5Z6LSa6Q75m0c1towCgYIKoZIzj0EAwMwRzELMAkGA1UE
BhMCQ04xHDAaBgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4xGjAYBgNVBAMTEXZUcnVzIEVDQyBS
b290IENBMB4XDTE4MDczMTA3MjY0NFoXDTQzMDczMTA3MjY0NFowRzELMAkGA1UEBhMCQ04xHDAa
BgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4xGjAYBgNVBAMTEXZUcnVzIEVDQyBSb290IENBMHYw
EAYHKoZIzj0CAQYFK4EEACIDYgAEZVBKrox5lkqqHAjDo6LN/llWQXf9JpRCux3NCNtzslt188+c
ToL0v/hhJoVs1oVbcnDS/dtitN9Ti72xRFhiQgnH+n9bEOf+QP3A2MMrMudwpremIFUde4BdS49n
TPEQo0IwQDAdBgNVHQ4EFgQUmDnNvtiyjPeyq+GtJK97fKHbH88wDwYDVR0TAQH/BAUwAwEB/zAO
BgNVHQ8BAf8EBAMCAQYwCgYIKoZIzj0EAwMDaAAwZQIwV53dVvHH4+m4SVBrm2nDb+zDfSXkV5UT
QJtS0zvzQBm8JsctBp61ezaf9SXUY2sAAjEA6dPGnlaaKsyh2j/IZivTWJwghfqrkYpwcBE4YGQL
YgmRWAD5Tfs0aNoJrSEGGJTO
-----END CERTIFICATE-----

vTrus Root CA
=============
-----BEGIN CERTIFICATE-----
MIIFVjCCAz6gAwIBAgIUQ+NxE9izWRRdt86M/TX9b7wFjUUwDQYJKoZIhvcNAQELBQAwQzELMAkG
A1UEBhMCQ04xHDAaBgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4xFjAUBgNVBAMTDXZUcnVzIFJv
b3QgQ0EwHhcNMTgwNzMxMDcyNDA1WhcNNDMwNzMxMDcyNDA1WjBDMQswCQYDVQQGEwJDTjEcMBoG
A1UEChMTaVRydXNDaGluYSBDby4sTHRkLjEWMBQGA1UEAxMNdlRydXMgUm9vdCBDQTCCAiIwDQYJ
KoZIhvcNAQEBBQADggIPADCCAgoCggIBAL1VfGHTuB0EYgWgrmy3cLRB6ksDXhA/kFocizuwZots
SKYcIrrVQJLuM7IjWcmOvFjai57QGfIvWcaMY1q6n6MLsLOaXLoRuBLpDLvPbmyAhykUAyyNJJrI
ZIO1aqwTLDPxn9wsYTwaP3BVm60AUn/PBLn+NvqcwBauYv6WTEN+VRS+GrPSbcKvdmaVayqwlHeF
XgQPYh1jdfdr58tbmnDsPmcF8P4HCIDPKNsFxhQnL4Z98Cfe/+Z+M0jnCx5Y0ScrUw5XSmXX+6KA
YPxMvDVTAWqXcoKv8R1w6Jz1717CbMdHflqUhSZNO7rrTOiwCcJlwp2dCZtOtZcFrPUGoPc2BX70
kLJrxLT5ZOrpGgrIDajtJ8nU57O5q4IikCc9Kuh8kO+8T/3iCiSn3mUkpF3qwHYw03dQ+A0Em5Q2
AXPKBlim0zvc+gRGE1WKyURHuFE5Gi7oNOJ5y1lKCn+8pu8fA2dqWSslYpPZUxlmPCdiKYZNpGvu
/9ROutW04o5IWgAZCfEF2c6Rsffr6TlP9m8EQ5pV9T4FFL2/s1m02I4zhKOQUqqzApVg+QxMaPnu
1RcN+HFXtSXkKe5lXa/R7jwXC1pDxaWG6iSe4gUH3DRCEpHWOXSuTEGC2/KmSNGzm/MzqvOmwMVO
9fSddmPmAsYiS8GVP1BkLFTltvA8Kc9XAgMBAAGjQjBAMB0GA1UdDgQWBBRUYnBj8XWEQ1iO0RYg
scasGrz2iTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOC
AgEAKbqSSaet8PFww+SX8J+pJdVrnjT+5hpk9jprUrIQeBqfTNqK2uwcN1LgQkv7bHbKJAs5EhWd
nxEt/Hlk3ODg9d3gV8mlsnZwUKT+twpw1aA08XXXTUm6EdGz2OyC/+sOxL9kLX1jbhd47F18iMjr
jld22VkE+rxSH0Ws8HqA7Oxvdq6R2xCOBNyS36D25q5J08FsEhvMKar5CKXiNxTKsbhm7xqC5PD4
8acWabfbqWE8n/Uxy+QARsIvdLGx14HuqCaVvIivTDUHKgLKeBRtRytAVunLKmChZwOgzoy8sHJn
xDHO2zTlJQNgJXtxmOTAGytfdELSS8VZCAeHvsXDf+eW2eHcKJfWjwXj9ZtOyh1QRwVTsMo554Wg
icEFOwE30z9J4nfrI8iIZjs9OXYhRvHsXyO466JmdXTBQPfYaJqT4i2pLr0cox7IdMakLXogqzu4
sEb9b91fUlV1YvCXoHzXOP0l382gmxDPi7g4Xl7FtKYCNqEeXxzP4padKar9mK5S4fNBUvupLnKW
nyfjqnN9+BojZns7q2WwMgFLFT49ok8MKzWixtlnEjUwzXYuFrOZnk1PTi07NEPhmg4NpGaXutIc
SkwsKouLgU9xGqndXHt7CMUADTdA43x7VF8vhV929vensBxXVsFy6K2ir40zSbofitzmdHxghm+H
l3s=
-----END CERTIFICATE-----

ISRG Root X2
============
-----BEGIN CERTIFICATE-----
MIICGzCCAaGgAwIBAgIQQdKd0XLq7qeAwSxs6S+HUjAKBggqhkjOPQQDAzBPMQswCQYDVQQGEwJV
UzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElT
UkcgUm9vdCBYMjAeFw0yMDA5MDQwMDAwMDBaFw00MDA5MTcxNjAwMDBaME8xCzAJBgNVBAYTAlVT
MSkwJwYDVQQKEyBJbnRlcm5ldCBTZWN1cml0eSBSZXNlYXJjaCBHcm91cDEVMBMGA1UEAxMMSVNS
RyBSb290IFgyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEzZvVn4CDCuwJSvMWSj5cz3es3mcFDR0H
ttwW+1qLFNvicWDEukWVEYmO6gbf9yoWHKS5xcUy4APgHoIYOIvXRdgKam7mAHf7AlF9ItgKbppb
d9/w+kHsOdx1ymgHDB/qo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV
HQ4EFgQUfEKWrt5LSDv6kviejM9ti6lyN5UwCgYIKoZIzj0EAwMDaAAwZQIwe3lORlCEwkSHRhtF
cP9Ymd70/aTSVaYgLXTWNLxBo1BfASdWtL4ndQavEi51mI38AjEAi/V3bNTIZargCyzuFJ0nN6T5
U6VR5CmD1/iQMVtCnwr1/q4AaOeMSQ+2b1tbFfLn
-----END CERTIFICATE-----

HiPKI Root CA - G1
==================
-----BEGIN CERTIFICATE-----
MIIFajCCA1KgAwIBAgIQLd2szmKXlKFD6LDNdmpeYDANBgkqhkiG9w0BAQsFADBPMQswCQYDVQQG
EwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0ZC4xGzAZBgNVBAMMEkhpUEtJ
IFJvb3QgQ0EgLSBHMTAeFw0xOTAyMjIwOTQ2MDRaFw0zNzEyMzExNTU5NTlaME8xCzAJBgNVBAYT
AlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEbMBkGA1UEAwwSSGlQS0kg
Um9vdCBDQSAtIEcxMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA9B5/UnMyDHPkvRN0
o9QwqNCuS9i233VHZvR85zkEHmpwINJaR3JnVfSl6J3VHiGh8Ge6zCFovkRTv4354twvVcg3Px+k
wJyz5HdcoEb+d/oaoDjq7Zpy3iu9lFc6uux55199QmQ5eiY29yTw1S+6lZgRZq2XNdZ1AYDgr/SE
YYwNHl98h5ZeQa/rh+r4XfEuiAU+TCK72h8q3VJGZDnzQs7ZngyzsHeXZJzA9KMuH5UHsBffMNsA
GJZMoYFL3QRtU6M9/Aes1MU3guvklQgZKILSQjqj2FPseYlgSGDIcpJQ3AOPgz+yQlda22rpEZfd
hSi8MEyr48KxRURHH+CKFgeW0iEPU8DtqX7UTuybCeyvQqww1r/REEXgphaypcXTT3OUM3ECoWqj
1jOXTyFjHluP2cFeRXF3D4FdXyGarYPM+l7WjSNfGz1BryB1ZlpK9p/7qxj3ccC2HTHsOyDry+K4
9a6SsvfhhEvyovKTmiKe0xRvNlS9H15ZFblzqMF8b3ti6RZsR1pl8w4Rm0bZ/W3c1pzAtH2lsN0/
Vm+h+fbkEkj9Bn8SV7apI09bA8PgcSojt/ewsTu8mL3WmKgMa/aOEmem8rJY5AIJEzypuxC00jBF
8ez3ABHfZfjcK0NVvxaXxA/VLGGEqnKG/uY6fsI/fe78LxQ+5oXdUG+3Se0CAwEAAaNCMEAwDwYD
VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU8ncX+l6o/vY9cdVouslGDDjYr7AwDgYDVR0PAQH/BAQD
AgGGMA0GCSqGSIb3DQEBCwUAA4ICAQBQUfB13HAE4/+qddRxosuej6ip0691x1TPOhwEmSKsxBHi
7zNKpiMdDg1H2DfHb680f0+BazVP6XKlMeJ45/dOlBhbQH3PayFUhuaVevvGyuqcSE5XCV0vrPSl
tJczWNWseanMX/mF+lLFjfiRFOs6DRfQUsJ748JzjkZ4Bjgs6FzaZsT0pPBWGTMpWmWSBUdGSquE
wx4noR8RkpkndZMPvDY7l1ePJlsMu5wP1G4wB9TcXzZoZjmDlicmisjEOf6aIW/Vcobpf2Lll07Q
JNBAsNB1CI69aO4I1258EHBGG3zgiLKecoaZAeO/n0kZtCW+VmWuF2PlHt/o/0elv+EmBYTksMCv
5wiZqAxeJoBF1PhoL5aPruJKHJwWDBNvOIf2u8g0X5IDUXlwpt/L9ZlNec1OvFefQ05rLisY+Gpz
jLrFNe85akEez3GoorKGB1s6yeHvP2UEgEcyRHCVTjFnanRbEEV16rCf0OY1/k6fi8wrkkVbbiVg
hUbN0aqwdmaTd5a+g744tiROJgvM7XpWGuDpWsZkrUx6AEhEL7lAuxM+vhV4nYWBSipX3tUZQ9rb
yltHhoMLP7YNdnhzeSJesYAfz77RP1YQmCuVh6EfnWQUYDksswBVLuT1sw5XxJFBAJw/6KXf6vb/
yPCtbVKoF6ubYfwSUTXkJf2vqmqGOQ==
-----END CERTIFICATE-----

GlobalSign ECC Root CA - R4
===========================
-----BEGIN CERTIFICATE-----
MIIB3DCCAYOgAwIBAgINAgPlfvU/k/2lCSGypjAKBggqhkjOPQQDAjBQMSQwIgYDVQQLExtHbG9i
YWxTaWduIEVDQyBSb290IENBIC0gUjQxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkds
b2JhbFNpZ24wHhcNMTIxMTEzMDAwMDAwWhcNMzgwMTE5MDMxNDA3WjBQMSQwIgYDVQQLExtHbG9i
YWxTaWduIEVDQyBSb290IENBIC0gUjQxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkds
b2JhbFNpZ24wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS4xnnTj2wlDp8uORkcA6SumuU5BwkW
ymOxuYb4ilfBV85C+nOh92VC/x7BALJucw7/xyHlGKSq2XE/qNS5zowdo0IwQDAOBgNVHQ8BAf8E
BAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVLB7rUW44kB/+wpu+74zyTyjhNUwCgYI
KoZIzj0EAwIDRwAwRAIgIk90crlgr/HmnKAWBVBfw147bmF0774BxL4YSFlhgjICICadVGNA3jdg
UM/I2O2dgq43mLyjj0xMqTQrbO/7lZsm
-----END CERTIFICATE-----

GTS Root R1
===========
-----BEGIN CERTIFICATE-----
MIIFVzCCAz+gAwIBAgINAgPlk28xsBNJiGuiFzANBgkqhkiG9w0BAQwFADBHMQswCQYDVQQGEwJV
UzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg
UjEwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE
ChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwggIiMA0G
CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2EQKLHuOhd5s73L+UPreVp0A8of2C+X0yBoJx9vaM
f/vo27xqLpeXo4xL+Sv2sfnOhB2x+cWX3u+58qPpvBKJXqeqUqv4IyfLpLGcY9vXmX7wCl7raKb0
xlpHDU0QM+NOsROjyBhsS+z8CZDfnWQpJSMHobTSPS5g4M/SCYe7zUjwTcLCeoiKu7rPWRnWr4+w
B7CeMfGCwcDfLqZtbBkOtdh+JhpFAz2weaSUKK0PfyblqAj+lug8aJRT7oM6iCsVlgmy4HqMLnXW
nOunVmSPlk9orj2XwoSPwLxAwAtcvfaHszVsrBhQf4TgTM2S0yDpM7xSma8ytSmzJSq0SPly4cpk
9+aCEI3oncKKiPo4Zor8Y/kB+Xj9e1x3+naH+uzfsQ55lVe0vSbv1gHR6xYKu44LtcXFilWr06zq
kUspzBmkMiVOKvFlRNACzqrOSbTqn3yDsEB750Orp2yjj32JgfpMpf/VjsPOS+C12LOORc92wO1A
K/1TD7Cn1TsNsYqiA94xrcx36m97PtbfkSIS5r762DL8EGMUUXLeXdYWk70paDPvOmbsB4om3xPX
V2V4J95eSRQAogB/mqghtqmxlbCluQ0WEdrHbEg8QOB+DVrNVjzRlwW5y0vtOUucxD/SVRNuJLDW
cfr0wbrM7Rv1/oFB2ACYPTrIrnqYNxgFlQIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0T
AQH/BAUwAwEB/zAdBgNVHQ4EFgQU5K8rJnEaK0gnhS9SZizv8IkTcT4wDQYJKoZIhvcNAQEMBQAD
ggIBAJ+qQibbC5u+/x6Wki4+omVKapi6Ist9wTrYggoGxval3sBOh2Z5ofmmWJyq+bXmYOfg6LEe
QkEzCzc9zolwFcq1JKjPa7XSQCGYzyI0zzvFIoTgxQ6KfF2I5DUkzps+GlQebtuyh6f88/qBVRRi
ClmpIgUxPoLW7ttXNLwzldMXG+gnoot7TiYaelpkttGsN/H9oPM47HLwEXWdyzRSjeZ2axfG34ar
J45JK3VmgRAhpuo+9K4l/3wV3s6MJT/KYnAK9y8JZgfIPxz88NtFMN9iiMG1D53Dn0reWVlHxYci
NuaCp+0KueIHoI17eko8cdLiA6EfMgfdG+RCzgwARWGAtQsgWSl4vflVy2PFPEz0tv/bal8xa5me
LMFrUKTX5hgUvYU/Z6tGn6D/Qqc6f1zLXbBwHSs09dR2CQzreExZBfMzQsNhFRAbd03OIozUhfJF
fbdT6u9AWpQKXCBfTkBdYiJ23//OYb2MI3jSNwLgjt7RETeJ9r/tSQdirpLsQBqvFAnZ0E6yove+
7u7Y/9waLd64NnHi/Hm3lCXRSHNboTXns5lndcEZOitHTtNCjv0xyBZm2tIMPNuzjsmhDYAPexZ3
FL//2wmUspO8IFgV6dtxQ/PeEMMA3KgqlbbC1j+Qa3bbbP6MvPJwNQzcmRk13NfIRmPVNnGuV/u3
gm3c
-----END CERTIFICATE-----

GTS Root R2
===========
-----BEGIN CERTIFICATE-----
MIIFVzCCAz+gAwIBAgINAgPlrsWNBCUaqxElqjANBgkqhkiG9w0BAQwFADBHMQswCQYDVQQGEwJV
UzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg
UjIwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE
ChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjIwggIiMA0G
CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDO3v2m++zsFDQ8BwZabFn3GTXd98GdVarTzTukk3Lv
CvptnfbwhYBboUhSnznFt+4orO/LdmgUud+tAWyZH8QiHZ/+cnfgLFuv5AS/T3KgGjSY6Dlo7JUl
e3ah5mm5hRm9iYz+re026nO8/4Piy33B0s5Ks40FnotJk9/BW9BuXvAuMC6C/Pq8tBcKSOWIm8Wb
a96wyrQD8Nr0kLhlZPdcTK3ofmZemde4wj7I0BOdre7kRXuJVfeKH2JShBKzwkCX44ofR5GmdFrS
+LFjKBC4swm4VndAoiaYecb+3yXuPuWgf9RhD1FLPD+M2uFwdNjCaKH5wQzpoeJ/u1U8dgbuak7M
kogwTZq9TwtImoS1mKPV+3PBV2HdKFZ1E66HjucMUQkQdYhMvI35ezzUIkgfKtzra7tEscszcTJG
r61K8YzodDqs5xoic4DSMPclQsciOzsSrZYuxsN2B6ogtzVJV+mSSeh2FnIxZyuWfoqjx5RWIr9q
S34BIbIjMt/kmkRtWVtd9QCgHJvGeJeNkP+byKq0rxFROV7Z+2et1VsRnTKaG73VululycslaVNV
J1zgyjbLiGH7HrfQy+4W+9OmTN6SpdTi3/UGVN4unUu0kzCqgc7dGtxRcw1PcOnlthYhGXmy5okL
dWTK1au8CcEYof/UVKGFPP0UJAOyh9OktwIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0T
AQH/BAUwAwEB/zAdBgNVHQ4EFgQUu//KjiOfT5nK2+JopqUVJxce2Q4wDQYJKoZIhvcNAQEMBQAD
ggIBAB/Kzt3HvqGf2SdMC9wXmBFqiN495nFWcrKeGk6c1SuYJF2ba3uwM4IJvd8lRuqYnrYb/oM8
0mJhwQTtzuDFycgTE1XnqGOtjHsB/ncw4c5omwX4Eu55MaBBRTUoCnGkJE+M3DyCB19m3H0Q/gxh
swWV7uGugQ+o+MePTagjAiZrHYNSVc61LwDKgEDg4XSsYPWHgJ2uNmSRXbBoGOqKYcl3qJfEycel
/FVL8/B/uWU9J2jQzGv6U53hkRrJXRqWbTKH7QMgyALOWr7Z6v2yTcQvG99fevX4i8buMTolUVVn
jWQye+mew4K6Ki3pHrTgSAai/GevHyICc/sgCq+dVEuhzf9gR7A/Xe8bVr2XIZYtCtFenTgCR2y5
9PYjJbigapordwj6xLEokCZYCDzifqrXPW+6MYgKBesntaFJ7qBFVHvmJ2WZICGoo7z7GJa7Um8M
7YNRTOlZ4iBgxcJlkoKM8xAfDoqXvneCbT+PHV28SSe9zE8P4c52hgQjxcCMElv924SgJPFI/2R8
0L5cFtHvma3AH/vLrrw4IgYmZNralw4/KBVEqE8AyvCazM90arQ+POuV7LXTWtiBmelDGDfrs7vR
WGJB82bSj6p4lVQgw1oudCvV0b4YacCs1aTPObpRhANl6WLAYv7YTVWW4tAR+kg0Eeye7QUd5MjW
HYbL
-----END CERTIFICATE-----

GTS Root R3
===========
-----BEGIN CERTIFICATE-----
MIICCTCCAY6gAwIBAgINAgPluILrIPglJ209ZjAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJVUzEi
MCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMw
HhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZ
R29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMwdjAQBgcqhkjO
PQIBBgUrgQQAIgNiAAQfTzOHMymKoYTey8chWEGJ6ladK0uFxh1MJ7x/JlFyb+Kf1qPKzEUURout
736GjOyxfi//qXGdGIRFBEFVbivqJn+7kAHjSxm65FSWRQmx1WyRRK2EE46ajA2ADDL24CejQjBA
MA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTB8Sa6oC2uhYHP0/Eq
Er24Cmf9vDAKBggqhkjOPQQDAwNpADBmAjEA9uEglRR7VKOQFhG/hMjqb2sXnh5GmCCbn9MN2azT
L818+FsuVbu/3ZL3pAzcMeGiAjEA/JdmZuVDFhOD3cffL74UOO0BzrEXGhF16b0DjyZ+hOXJYKaV
11RZt+cRLInUue4X
-----END CERTIFICATE-----

GTS Root R4
===========
-----BEGIN CERTIFICATE-----
MIICCTCCAY6gAwIBAgINAgPlwGjvYxqccpBQUjAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJVUzEi
MCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQw
HhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZ
R29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQwdjAQBgcqhkjO
PQIBBgUrgQQAIgNiAATzdHOnaItgrkO4NcWBMHtLSZ37wWHO5t5GvWvVYRg1rkDdc/eJkTBa6zzu
hXyiQHY7qca4R9gq55KRanPpsXI5nymfopjTX15YhmUPoYRlBtHci8nHc8iMai/lxKvRHYqjQjBA
MA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSATNbrdP9JNqPV2Py1
PsVq8JQdjDAKBggqhkjOPQQDAwNpADBmAjEA6ED/g94D9J+uHXqnLrmvT/aDHQ4thQEd0dlq7A/C
r8deVl5c1RxYIigL9zC2L7F8AjEA8GE8p/SgguMh1YQdc4acLa/KNJvxn7kjNuK8YAOdgLOaVsjh
4rsUecrNIdSUtUlD
-----END CERTIFICATE-----

Telia Root CA v2
================
-----BEGIN CERTIFICATE-----
MIIFdDCCA1ygAwIBAgIPAWdfJ9b+euPkrL4JWwWeMA0GCSqGSIb3DQEBCwUAMEQxCzAJBgNVBAYT
AkZJMRowGAYDVQQKDBFUZWxpYSBGaW5sYW5kIE95ajEZMBcGA1UEAwwQVGVsaWEgUm9vdCBDQSB2
MjAeFw0xODExMjkxMTU1NTRaFw00MzExMjkxMTU1NTRaMEQxCzAJBgNVBAYTAkZJMRowGAYDVQQK
DBFUZWxpYSBGaW5sYW5kIE95ajEZMBcGA1UEAwwQVGVsaWEgUm9vdCBDQSB2MjCCAiIwDQYJKoZI
hvcNAQEBBQADggIPADCCAgoCggIBALLQPwe84nvQa5n44ndp586dpAO8gm2h/oFlH0wnrI4AuhZ7
6zBqAMCzdGh+sq/H1WKzej9Qyow2RCRj0jbpDIX2Q3bVTKFgcmfiKDOlyzG4OiIjNLh9vVYiQJ3q
9HsDrWj8soFPmNB06o3lfc1jw6P23pLCWBnglrvFxKk9pXSW/q/5iaq9lRdU2HhE8Qx3FZLgmEKn
pNaqIJLNwaCzlrI6hEKNfdWV5Nbb6WLEWLN5xYzTNTODn3WhUidhOPFZPY5Q4L15POdslv5e2QJl
tI5c0BE0312/UqeBAMN/mUWZFdUXyApT7GPzmX3MaRKGwhfwAZ6/hLzRUssbkmbOpFPlob/E2wnW
5olWK8jjfN7j/4nlNW4o6GwLI1GpJQXrSPjdscr6bAhR77cYbETKJuFzxokGgeWKrLDiKca5JLNr
RBH0pUPCTEPlcDaMtjNXepUugqD0XBCzYYP2AgWGLnwtbNwDRm41k9V6lS/eINhbfpSQBGq6WT0E
BXWdN6IOLj3rwaRSg/7Qa9RmjtzG6RJOHSpXqhC8fF6CfaamyfItufUXJ63RDolUK5X6wK0dmBR4
M0KGCqlztft0DbcbMBnEWg4cJ7faGND/isgFuvGqHKI3t+ZIpEYslOqodmJHixBTB0hXbOKSTbau
BcvcwUpej6w9GU7C7WB1K9vBykLVAgMBAAGjYzBhMB8GA1UdIwQYMBaAFHKs5DN5qkWH9v2sHZ7W
xy+G2CQ5MB0GA1UdDgQWBBRyrOQzeapFh/b9rB2e1scvhtgkOTAOBgNVHQ8BAf8EBAMCAQYwDwYD
VR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAoDtZpwmUPjaE0n4vOaWWl/oRrfxn83EJ
8rKJhGdEr7nv7ZbsnGTbMjBvZ5qsfl+yqwE2foH65IRe0qw24GtixX1LDoJt0nZi0f6X+J8wfBj5
tFJ3gh1229MdqfDBmgC9bXXYfef6xzijnHDoRnkDry5023X4blMMA8iZGok1GTzTyVR8qPAs5m4H
eW9q4ebqkYJpCh3DflminmtGFZhb069GHWLIzoBSSRE/yQQSwxN8PzuKlts8oB4KtItUsiRnDe+C
y748fdHif64W1lZYudogsYMVoe+KTTJvQS8TUoKU1xrBeKJR3Stwbbca+few4GeXVtt8YVMJAygC
QMez2P2ccGrGKMOF6eLtGpOg3kuYooQ+BXcBlj37tCAPnHICehIv1aO6UXivKitEZU61/Qrowc15
h2Er3oBXRb9n8ZuRXqWk7FlIEA04x7D6w0RtBPV4UBySllva9bguulvP5fBqnUsvWHMtTy3EHD70
sz+rFQ47GUGKpMFXEmZxTPpT41frYpUJnlTd0cI8Vzy9OK2YZLe4A5pTVmBds9hCG1xLEooc6+t9
xnppxyd/pPiL8uSUZodL6ZQHCRJ5irLrdATczvREWeAWysUsWNc8e89ihmpQfTU2Zqf7N+cox9jQ
raVplI/owd8k+BsHMYeB2F326CjYSlKArBPuUBQemMc=
-----END CERTIFICATE-----

D-TRUST BR Root CA 1 2020
=========================
-----BEGIN CERTIFICATE-----
MIIC2zCCAmCgAwIBAgIQfMmPK4TX3+oPyWWa00tNljAKBggqhkjOPQQDAzBIMQswCQYDVQQGEwJE
RTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlELVRSVVNUIEJSIFJvb3QgQ0EgMSAy
MDIwMB4XDTIwMDIxMTA5NDUwMFoXDTM1MDIxMTA5NDQ1OVowSDELMAkGA1UEBhMCREUxFTATBgNV
BAoTDEQtVHJ1c3QgR21iSDEiMCAGA1UEAxMZRC1UUlVTVCBCUiBSb290IENBIDEgMjAyMDB2MBAG
ByqGSM49AgEGBSuBBAAiA2IABMbLxyjR+4T1mu9CFCDhQ2tuda38KwOE1HaTJddZO0Flax7mNCq7
dPYSzuht56vkPE4/RAiLzRZxy7+SmfSk1zxQVFKQhYN4lGdnoxwJGT11NIXe7WB9xwy0QVK5buXu
QqOCAQ0wggEJMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFHOREKv/VbNafAkl1bK6CKBrqx9t
MA4GA1UdDwEB/wQEAwIBBjCBxgYDVR0fBIG+MIG7MD6gPKA6hjhodHRwOi8vY3JsLmQtdHJ1c3Qu
bmV0L2NybC9kLXRydXN0X2JyX3Jvb3RfY2FfMV8yMDIwLmNybDB5oHegdYZzbGRhcDovL2RpcmVj
dG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQlIlMjBSb290JTIwQ0ElMjAxJTIwMjAyMCxP
PUQtVHJ1c3QlMjBHbWJILEM9REU/Y2VydGlmaWNhdGVyZXZvY2F0aW9ubGlzdDAKBggqhkjOPQQD
AwNpADBmAjEAlJAtE/rhY/hhY+ithXhUkZy4kzg+GkHaQBZTQgjKL47xPoFWwKrY7RjEsK70Pvom
AjEA8yjixtsrmfu3Ubgko6SUeho/5jbiA1czijDLgsfWFBHVdWNbFJWcHwHP2NVypw87
-----END CERTIFICATE-----

D-TRUST EV Root CA 1 2020
=========================
-----BEGIN CERTIFICATE-----
MIIC2zCCAmCgAwIBAgIQXwJB13qHfEwDo6yWjfv/0DAKBggqhkjOPQQDAzBIMQswCQYDVQQGEwJE
RTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlELVRSVVNUIEVWIFJvb3QgQ0EgMSAy
MDIwMB4XDTIwMDIxMTEwMDAwMFoXDTM1MDIxMTA5NTk1OVowSDELMAkGA1UEBhMCREUxFTATBgNV
BAoTDEQtVHJ1c3QgR21iSDEiMCAGA1UEAxMZRC1UUlVTVCBFViBSb290IENBIDEgMjAyMDB2MBAG
ByqGSM49AgEGBSuBBAAiA2IABPEL3YZDIBnfl4XoIkqbz52Yv7QFJsnL46bSj8WeeHsxiamJrSc8
ZRCC/N/DnU7wMyPE0jL1HLDfMxddxfCxivnvubcUyilKwg+pf3VlSSowZ/Rk99Yad9rDwpdhQntJ
raOCAQ0wggEJMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFH8QARY3OqQo5FD4pPfsazK2/umL
MA4GA1UdDwEB/wQEAwIBBjCBxgYDVR0fBIG+MIG7MD6gPKA6hjhodHRwOi8vY3JsLmQtdHJ1c3Qu
bmV0L2NybC9kLXRydXN0X2V2X3Jvb3RfY2FfMV8yMDIwLmNybDB5oHegdYZzbGRhcDovL2RpcmVj
dG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwRVYlMjBSb290JTIwQ0ElMjAxJTIwMjAyMCxP
PUQtVHJ1c3QlMjBHbWJILEM9REU/Y2VydGlmaWNhdGVyZXZvY2F0aW9ubGlzdDAKBggqhkjOPQQD
AwNpADBmAjEAyjzGKnXCXnViOTYAYFqLwZOZzNnbQTs7h5kXO9XMT8oi96CAy/m0sRtW9XLS/BnR
AjEAkfcwkz8QRitxpNA7RJvAKQIFskF3UfN5Wp6OFKBOQtJbgfM0agPnIjhQW+0ZT0MW
-----END CERTIFICATE-----

DigiCert TLS ECC P384 Root G5
=============================
-----BEGIN CERTIFICATE-----
MIICGTCCAZ+gAwIBAgIQCeCTZaz32ci5PhwLBCou8zAKBggqhkjOPQQDAzBOMQswCQYDVQQGEwJV
UzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xJjAkBgNVBAMTHURpZ2lDZXJ0IFRMUyBFQ0MgUDM4
NCBSb290IEc1MB4XDTIxMDExNTAwMDAwMFoXDTQ2MDExNDIzNTk1OVowTjELMAkGA1UEBhMCVVMx
FzAVBgNVBAoTDkRpZ2lDZXJ0LCBJbmMuMSYwJAYDVQQDEx1EaWdpQ2VydCBUTFMgRUNDIFAzODQg
Um9vdCBHNTB2MBAGByqGSM49AgEGBSuBBAAiA2IABMFEoc8Rl1Ca3iOCNQfN0MsYndLxf3c1Tzvd
lHJS7cI7+Oz6e2tYIOyZrsn8aLN1udsJ7MgT9U7GCh1mMEy7H0cKPGEQQil8pQgO4CLp0zVozptj
n4S1mU1YoI71VOeVyaNCMEAwHQYDVR0OBBYEFMFRRVBZqz7nLFr6ICISB4CIfBFqMA4GA1UdDwEB
/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MAoGCCqGSM49BAMDA2gAMGUCMQCJao1H5+z8blUD2Wds
Jk6Dxv3J+ysTvLd6jLRl0mlpYxNjOyZQLgGheQaRnUi/wr4CMEfDFXuxoJGZSZOoPHzoRgaLLPIx
AJSdYsiJvRmEFOml+wG4DXZDjC5Ty3zfDBeWUA==
-----END CERTIFICATE-----

DigiCert TLS RSA4096 Root G5
============================
-----BEGIN CERTIFICATE-----
MIIFZjCCA06gAwIBAgIQCPm0eKj6ftpqMzeJ3nzPijANBgkqhkiG9w0BAQwFADBNMQswCQYDVQQG
EwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xJTAjBgNVBAMTHERpZ2lDZXJ0IFRMUyBSU0E0
MDk2IFJvb3QgRzUwHhcNMjEwMTE1MDAwMDAwWhcNNDYwMTE0MjM1OTU5WjBNMQswCQYDVQQGEwJV
UzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xJTAjBgNVBAMTHERpZ2lDZXJ0IFRMUyBSU0E0MDk2
IFJvb3QgRzUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCz0PTJeRGd/fxmgefM1eS8
7IE+ajWOLrfn3q/5B03PMJ3qCQuZvWxX2hhKuHisOjmopkisLnLlvevxGs3npAOpPxG02C+JFvuU
AT27L/gTBaF4HI4o4EXgg/RZG5Wzrn4DReW+wkL+7vI8toUTmDKdFqgpwgscONyfMXdcvyej/Ces
tyu9dJsXLfKB2l2w4SMXPohKEiPQ6s+d3gMXsUJKoBZMpG2T6T867jp8nVid9E6P/DsjyG244gXa
zOvswzH016cpVIDPRFtMbzCe88zdH5RDnU1/cHAN1DrRN/BsnZvAFJNY781BOHW8EwOVfH/jXOnV
DdXifBBiqmvwPXbzP6PosMH976pXTayGpxi0KcEsDr9kvimM2AItzVwv8n/vFfQMFawKsPHTDU9q
TXeXAaDxZre3zu/O7Oyldcqs4+Fj97ihBMi8ez9dLRYiVu1ISf6nL3kwJZu6ay0/nTvEF+cdLvvy
z6b84xQslpghjLSR6Rlgg/IwKwZzUNWYOwbpx4oMYIwo+FKbbuH2TbsGJJvXKyY//SovcfXWJL5/
MZ4PbeiPT02jP/816t9JXkGPhvnxd3lLG7SjXi/7RgLQZhNeXoVPzthwiHvOAbWWl9fNff2C+MIk
wcoBOU+NosEUQB+cZtUMCUbW8tDRSHZWOkPLtgoRObqME2wGtZ7P6wIDAQABo0IwQDAdBgNVHQ4E
FgQUUTMc7TZArxfTJc1paPKvTiM+s0EwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8w
DQYJKoZIhvcNAQEMBQADggIBAGCmr1tfV9qJ20tQqcQjNSH/0GEwhJG3PxDPJY7Jv0Y02cEhJhxw
GXIeo8mH/qlDZJY6yFMECrZBu8RHANmfGBg7sg7zNOok992vIGCukihfNudd5N7HPNtQOa27PShN
lnx2xlv0wdsUpasZYgcYQF+Xkdycx6u1UQ3maVNVzDl92sURVXLFO4uJ+DQtpBflF+aZfTCIITfN
MBc9uPK8qHWgQ9w+iUuQrm0D4ByjoJYJu32jtyoQREtGBzRj7TG5BO6jm5qu5jF49OokYTurWGT/
u4cnYiWB39yhL/btp/96j1EuMPikAdKFOV8BmZZvWltwGUb+hmA+rYAQCd05JS9Yf7vSdPD3Rh9G
OUrYU9DzLjtxpdRv/PNn5AeP3SYZ4Y1b+qOTEZvpyDrDVWiakuFSdjjo4bq9+0/V77PnSIMx8IIh
47a+p6tv75/fTM8BuGJqIz3nCU2AG3swpMPdB380vqQmsvZB6Akd4yCYqjdP//fx4ilwMUc/dNAU
FvohigLVigmUdy7yWSiLfFCSCmZ4OIN1xLVaqBHG5cGdZlXPU8Sv13WFqUITVuwhd4GTWgzqltlJ
yqEI8pc7bZsEGCREjnwB8twl2F6GmrE52/WRMmrRpnCKovfepEWFJqgejF0pW8hL2JpqA15w8oVP
bEtoL8pU9ozaMv7Da4M/OMZ+
-----END CERTIFICATE-----

Certainly Root R1
=================
-----BEGIN CERTIFICATE-----
MIIFRzCCAy+gAwIBAgIRAI4P+UuQcWhlM1T01EQ5t+AwDQYJKoZIhvcNAQELBQAwPTELMAkGA1UE
BhMCVVMxEjAQBgNVBAoTCUNlcnRhaW5seTEaMBgGA1UEAxMRQ2VydGFpbmx5IFJvb3QgUjEwHhcN
MjEwNDAxMDAwMDAwWhcNNDYwNDAxMDAwMDAwWjA9MQswCQYDVQQGEwJVUzESMBAGA1UEChMJQ2Vy
dGFpbmx5MRowGAYDVQQDExFDZXJ0YWlubHkgUm9vdCBSMTCCAiIwDQYJKoZIhvcNAQEBBQADggIP
ADCCAgoCggIBANA21B/q3avk0bbm+yLA3RMNansiExyXPGhjZjKcA7WNpIGD2ngwEc/csiu+kr+O
5MQTvqRoTNoCaBZ0vrLdBORrKt03H2As2/X3oXyVtwxwhi7xOu9S98zTm/mLvg7fMbedaFySpvXl
8wo0tf97ouSHocavFwDvA5HtqRxOcT3Si2yJ9HiG5mpJoM610rCrm/b01C7jcvk2xusVtyWMOvwl
DbMicyF0yEqWYZL1LwsYpfSt4u5BvQF5+paMjRcCMLT5r3gajLQ2EBAHBXDQ9DGQilHFhiZ5shGI
XsXwClTNSaa/ApzSRKft43jvRl5tcdF5cBxGX1HpyTfcX35pe0HfNEXgO4T0oYoKNp43zGJS4YkN
KPl6I7ENPT2a/Z2B7yyQwHtETrtJ4A5KVpK8y7XdeReJkd5hiXSSqOMyhb5OhaRLWcsrxXiOcVTQ
AjeZjOVJ6uBUcqQRBi8LjMFbvrWhsFNunLhgkR9Za/kt9JQKl7XsxXYDVBtlUrpMklZRNaBA2Cnb
rlJ2Oy0wQJuK0EJWtLeIAaSHO1OWzaMWj/Nmqhexx2DgwUMFDO6bW2BvBlyHWyf5QBGenDPBt+U1
VwV/J84XIIwc/PH72jEpSe31C4SnT8H2TsIonPru4K8H+zMReiFPCyEQtkA6qyI6BJyLm4SGcprS
p6XEtHWRqSsjAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud
DgQWBBTgqj8ljZ9EXME66C6ud0yEPmcM9DANBgkqhkiG9w0BAQsFAAOCAgEAuVevuBLaV4OPaAsz
HQNTVfSVcOQrPbA56/qJYv331hgELyE03fFo8NWWWt7CgKPBjcZq91l3rhVkz1t5BXdm6ozTaw3d
8VkswTOlMIAVRQdFGjEitpIAq5lNOo93r6kiyi9jyhXWx8bwPWz8HA2YEGGeEaIi1wrykXprOQ4v
MMM2SZ/g6Q8CRFA3lFV96p/2O7qUpUzpvD5RtOjKkjZUbVwlKNrdrRT90+7iIgXr0PK3aBLXWopB
GsaSpVo7Y0VPv+E6dyIvXL9G+VoDhRNCX8reU9ditaY1BMJH/5n9hN9czulegChB8n3nHpDYT3Y+
gjwN/KUD+nsa2UUeYNrEjvn8K8l7lcUq/6qJ34IxD3L/DCfXCh5WAFAeDJDBlrXYFIW7pw0WwfgH
JBu6haEaBQmAupVjyTrsJZ9/nbqkRxWbRHDxakvWOF5D8xh+UG7pWijmZeZ3Gzr9Hb4DJqPb1OG7
fpYnKx3upPvaJVQTA945xsMfTZDsjxtK0hzthZU4UHlG1sGQUDGpXJpuHfUzVounmdLyyCwzk5Iw
x06MZTMQZBf9JBeW0Y3COmor6xOLRPIh80oat3df1+2IpHLlOR+Vnb5nwXARPbv0+Em34yaXOp/S
X3z7wJl8OSngex2/DaeP0ik0biQVy96QXr8axGbqwua6OV+KmalBWQewLK8=
-----END CERTIFICATE-----

Certainly Root E1
=================
-----BEGIN CERTIFICATE-----
MIIB9zCCAX2gAwIBAgIQBiUzsUcDMydc+Y2aub/M+DAKBggqhkjOPQQDAzA9MQswCQYDVQQGEwJV
UzESMBAGA1UEChMJQ2VydGFpbmx5MRowGAYDVQQDExFDZXJ0YWlubHkgUm9vdCBFMTAeFw0yMTA0
MDEwMDAwMDBaFw00NjA0MDEwMDAwMDBaMD0xCzAJBgNVBAYTAlVTMRIwEAYDVQQKEwlDZXJ0YWlu
bHkxGjAYBgNVBAMTEUNlcnRhaW5seSBSb290IEUxMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE3m/4
fxzf7flHh4axpMCK+IKXgOqPyEpeKn2IaKcBYhSRJHpcnqMXfYqGITQYUBsQ3tA3SybHGWCA6TS9
YBk2QNYphwk8kXr2vBMj3VlOBF7PyAIcGFPBMdjaIOlEjeR2o0IwQDAOBgNVHQ8BAf8EBAMCAQYw
DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU8ygYy2R17ikq6+2uI1g4hevIIgcwCgYIKoZIzj0E
AwMDaAAwZQIxALGOWiDDshliTd6wT99u0nCK8Z9+aozmut6Dacpps6kFtZaSF4fC0urQe87YQVt8
rgIwRt7qy12a7DLCZRawTDBcMPPaTnOGBtjOiQRINzf43TNRnXCve1XYAS59BWQOhriR
-----END CERTIFICATE-----

Security Communication RootCA3
==============================
-----BEGIN CERTIFICATE-----
MIIFfzCCA2egAwIBAgIJAOF8N0D9G/5nMA0GCSqGSIb3DQEBDAUAMF0xCzAJBgNVBAYTAkpQMSUw
IwYDVQQKExxTRUNPTSBUcnVzdCBTeXN0ZW1zIENPLixMVEQuMScwJQYDVQQDEx5TZWN1cml0eSBD
b21tdW5pY2F0aW9uIFJvb3RDQTMwHhcNMTYwNjE2MDYxNzE2WhcNMzgwMTE4MDYxNzE2WjBdMQsw
CQYDVQQGEwJKUDElMCMGA1UEChMcU0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UE
AxMeU2VjdXJpdHkgQ29tbXVuaWNhdGlvbiBSb290Q0EzMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
MIICCgKCAgEA48lySfcw3gl8qUCBWNO0Ot26YQ+TUG5pPDXC7ltzkBtnTCHsXzW7OT4rCmDvu20r
hvtxosis5FaU+cmvsXLUIKx00rgVrVH+hXShuRD+BYD5UpOzQD11EKzAlrenfna84xtSGc4RHwsE
NPXY9Wk8d/Nk9A2qhd7gCVAEF5aEt8iKvE1y/By7z/MGTfmfZPd+pmaGNXHIEYBMwXFAWB6+oHP2
/D5Q4eAvJj1+XCO1eXDe+uDRpdYMQXF79+qMHIjH7Iv10S9VlkZ8WjtYO/u62C21Jdp6Ts9EriGm
npjKIG58u4iFW/vAEGK78vknR+/RiTlDxN/e4UG/VHMgly1s2vPUB6PmudhvrvyMGS7TZ2crldtY
XLVqAvO4g160a75BflcJdURQVc1aEWEhCmHCqYj9E7wtiS/NYeCVvsq1e+F7NGcLH7YMx3weGVPK
p7FKFSBWFHA9K4IsD50VHUeAR/94mQ4xr28+j+2GaR57GIgUssL8gjMunEst+3A7caoreyYn8xrC
3PsXuKHqy6C0rtOUfnrQq8PsOC0RLoi/1D+tEjtCrI8Cbn3M0V9hvqG8OmpI6iZVIhZdXw3/JzOf
GAN0iltSIEdrRU0id4xVJ/CvHozJgyJUt5rQT9nO/NkuHJYosQLTA70lUhw0Zk8jq/R3gpYd0Vcw
CBEF/VfR2ccCAwEAAaNCMEAwHQYDVR0OBBYEFGQUfPxYchamCik0FW8qy7z8r6irMA4GA1UdDwEB
/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBDAUAA4ICAQDcAiMI4u8hOscNtybS
YpOnpSNyByCCYN8Y11StaSWSntkUz5m5UoHPrmyKO1o5yGwBQ8IibQLwYs1OY0PAFNr0Y/Dq9HHu
Tofjcan0yVflLl8cebsjqodEV+m9NU1Bu0soo5iyG9kLFwfl9+qd9XbXv8S2gVj/yP9kaWJ5rW4O
H3/uHWnlt3Jxs/6lATWUVCvAUm2PVcTJ0rjLyjQIUYWg9by0F1jqClx6vWPGOi//lkkZhOpn2ASx
YfQAW0q3nHE3GYV5v4GwxxMOdnE+OoAGrgYWp421wsTL/0ClXI2lyTrtcoHKXJg80jQDdwj98ClZ
XSEIx2C/pHF7uNkegr4Jr2VvKKu/S7XuPghHJ6APbw+LP6yVGPO5DtxnVW5inkYO0QR4ynKudtml
+LLfiAlhi+8kTtFZP1rUPcmTPCtk9YENFpb3ksP+MW/oKjJ0DvRMmEoYDjBU1cXrvMUVnuiZIesn
KwkK2/HmcBhWuwzkvvnoEKQTkrgc4NtnHVMDpCKn3F2SEDzq//wbEBrD2NCcnWXL0CsnMQMeNuE9
dnUM/0Umud1RvCPHX9jYhxBAEg09ODfnRDwYwFMJZI//1ZqmfHAuc1Uh6N//g7kdPjIe1qZ9LPFm
6Vwdp6POXiUyK+OVrCoHzrQoeIY8LaadTdJ0MN1kURXbg4NR16/9M51NZg==
-----END CERTIFICATE-----

Security Communication ECC RootCA1
==================================
-----BEGIN CERTIFICATE-----
MIICODCCAb6gAwIBAgIJANZdm7N4gS7rMAoGCCqGSM49BAMDMGExCzAJBgNVBAYTAkpQMSUwIwYD
VQQKExxTRUNPTSBUcnVzdCBTeXN0ZW1zIENPLixMVEQuMSswKQYDVQQDEyJTZWN1cml0eSBDb21t
dW5pY2F0aW9uIEVDQyBSb290Q0ExMB4XDTE2MDYxNjA1MTUyOFoXDTM4MDExODA1MTUyOFowYTEL
MAkGA1UEBhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xKzApBgNV
BAMTIlNlY3VyaXR5IENvbW11bmljYXRpb24gRUNDIFJvb3RDQTEwdjAQBgcqhkjOPQIBBgUrgQQA
IgNiAASkpW9gAwPDvTH00xecK4R1rOX9PVdu12O/5gSJko6BnOPpR27KkBLIE+CnnfdldB9sELLo
5OnvbYUymUSxXv3MdhDYW72ixvnWQuRXdtyQwjWpS4g8EkdtXP9JTxpKULGjQjBAMB0GA1UdDgQW
BBSGHOf+LaVKiwj+KBH6vqNm+GBZLzAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAK
BggqhkjOPQQDAwNoADBlAjAVXUI9/Lbu9zuxNuie9sRGKEkz0FhDKmMpzE2xtHqiuQ04pV1IKv3L
snNdo4gIxwwCMQDAqy0Obe0YottT6SXbVQjgUMzfRGEWgqtJsLKB7HOHeLRMsmIbEvoWTSVLY70e
N9k=
-----END CERTIFICATE-----

BJCA Global Root CA1
====================
-----BEGIN CERTIFICATE-----
MIIFdDCCA1ygAwIBAgIQVW9l47TZkGobCdFsPsBsIDANBgkqhkiG9w0BAQsFADBUMQswCQYDVQQG
EwJDTjEmMCQGA1UECgwdQkVJSklORyBDRVJUSUZJQ0FURSBBVVRIT1JJVFkxHTAbBgNVBAMMFEJK
Q0EgR2xvYmFsIFJvb3QgQ0ExMB4XDTE5MTIxOTAzMTYxN1oXDTQ0MTIxMjAzMTYxN1owVDELMAkG
A1UEBhMCQ04xJjAkBgNVBAoMHUJFSUpJTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZMR0wGwYDVQQD
DBRCSkNBIEdsb2JhbCBSb290IENBMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAPFm
CL3ZxRVhy4QEQaVpN3cdwbB7+sN3SJATcmTRuHyQNZ0YeYjjlwE8R4HyDqKYDZ4/N+AZspDyRhyS
sTphzvq3Rp4Dhtczbu33RYx2N95ulpH3134rhxfVizXuhJFyV9xgw8O558dnJCNPYwpj9mZ9S1Wn
P3hkSWkSl+BMDdMJoDIwOvqfwPKcxRIqLhy1BDPapDgRat7GGPZHOiJBhyL8xIkoVNiMpTAK+BcW
yqw3/XmnkRd4OJmtWO2y3syJfQOcs4ll5+M7sSKGjwZteAf9kRJ/sGsciQ35uMt0WwfCyPQ10WRj
eulumijWML3mG90Vr4TqnMfK9Q7q8l0ph49pczm+LiRvRSGsxdRpJQaDrXpIhRMsDQa4bHlW/KNn
MoH1V6XKV0Jp6VwkYe/iMBhORJhVb3rCk9gZtt58R4oRTklH2yiUAguUSiz5EtBP6DF+bHq/pj+b
OT0CFqMYs2esWz8sgytnOYFcuX6U1WTdno9uruh8W7TXakdI136z1C2OVnZOz2nxbkRs1CTqjSSh
GL+9V/6pmTW12xB3uD1IutbB5/EjPtffhZ0nPNRAvQoMvfXnjSXWgXSHRtQpdaJCbPdzied9v3pK
H9MiyRVVz99vfFXQpIsHETdfg6YmV6YBW37+WGgHqel62bno/1Afq8K0wM7o6v0PvY1NuLxxAgMB
AAGjQjBAMB0GA1UdDgQWBBTF7+3M2I0hxkjk49cULqcWk+WYATAPBgNVHRMBAf8EBTADAQH/MA4G
A1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAUoKsITQfI/Ki2Pm4rzc2IInRNwPWaZ+4
YRC6ojGYWUfo0Q0lHhVBDOAqVdVXUsv45Mdpox1NcQJeXyFFYEhcCY5JEMEE3KliawLwQ8hOnThJ
dMkycFRtwUf8jrQ2ntScvd0g1lPJGKm1Vrl2i5VnZu69mP6u775u+2D2/VnGKhs/I0qUJDAnyIm8
60Qkmss9vk/Ves6OF8tiwdneHg56/0OGNFK8YT88X7vZdrRTvJez/opMEi4r89fO4aL/3Xtw+zuh
TaRjAv04l5U/BXCga99igUOLtFkNSoxUnMW7gZ/NfaXvCyUeOiDbHPwfmGcCCtRzRBPbUYQaVQNW
4AB+dAb/OMRyHdOoP2gxXdMJxy6MW2Pg6Nwe0uxhHvLe5e/2mXZgLR6UcnHGCyoyx5JO1UbXHfmp
GQrI+pXObSOYqgs4rZpWDW+N8TEAiMEXnM0ZNjX+VVOg4DwzX5Ze4jLp3zO7Bkqp2IRzznfSxqxx
4VyjHQy7Ct9f4qNx2No3WqB4K/TUfet27fJhcKVlmtOJNBir+3I+17Q9eVzYH6Eze9mCUAyTF6ps
3MKCuwJXNq+YJyo5UOGwifUll35HaBC07HPKs5fRJNz2YqAo07WjuGS3iGJCz51TzZm+ZGiPTx4S
SPfSKcOYKMryMguTjClPPGAyzQWWYezyr/6zcCwupvI=
-----END CERTIFICATE-----

BJCA Global Root CA2
====================
-----BEGIN CERTIFICATE-----
MIICJTCCAaugAwIBAgIQLBcIfWQqwP6FGFkGz7RK6zAKBggqhkjOPQQDAzBUMQswCQYDVQQGEwJD
TjEmMCQGA1UECgwdQkVJSklORyBDRVJUSUZJQ0FURSBBVVRIT1JJVFkxHTAbBgNVBAMMFEJKQ0Eg
R2xvYmFsIFJvb3QgQ0EyMB4XDTE5MTIxOTAzMTgyMVoXDTQ0MTIxMjAzMTgyMVowVDELMAkGA1UE
BhMCQ04xJjAkBgNVBAoMHUJFSUpJTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZMR0wGwYDVQQDDBRC
SkNBIEdsb2JhbCBSb290IENBMjB2MBAGByqGSM49AgEGBSuBBAAiA2IABJ3LgJGNU2e1uVCxA/jl
SR9BIgmwUVJY1is0j8USRhTFiy8shP8sbqjV8QnjAyEUxEM9fMEsxEtqSs3ph+B99iK++kpRuDCK
/eHeGBIK9ke35xe/J4rUQUyWPGCWwf0VHKNCMEAwHQYDVR0OBBYEFNJKsVF/BvDRgh9Obl+rg/xI
1LCRMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMAoGCCqGSM49BAMDA2gAMGUCMBq8
W9f+qdJUDkpd0m2xQNz0Q9XSSpkZElaA94M04TVOSG0ED1cxMDAtsaqdAzjbBgIxAMvMh1PLet8g
UXOQwKhbYdDFUDn9hf7B43j4ptZLvZuHjw/l1lOWqzzIQNph91Oj9w==
-----END CERTIFICATE-----

Sectigo Public Server Authentication Root E46
=============================================
-----BEGIN CERTIFICATE-----
MIICOjCCAcGgAwIBAgIQQvLM2htpN0RfFf51KBC49DAKBggqhkjOPQQDAzBfMQswCQYDVQQGEwJH
QjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1TZWN0aWdvIFB1YmxpYyBTZXJ2
ZXIgQXV0aGVudGljYXRpb24gUm9vdCBFNDYwHhcNMjEwMzIyMDAwMDAwWhcNNDYwMzIxMjM1OTU5
WjBfMQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1TZWN0
aWdvIFB1YmxpYyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBFNDYwdjAQBgcqhkjOPQIBBgUr
gQQAIgNiAAR2+pmpbiDt+dd34wc7qNs9Xzjoq1WmVk/WSOrsfy2qw7LFeeyZYX8QeccCWvkEN/U0
NSt3zn8gj1KjAIns1aeibVvjS5KToID1AZTc8GgHHs3u/iVStSBDHBv+6xnOQ6OjQjBAMB0GA1Ud
DgQWBBTRItpMWfFLXyY4qp3W7usNw/upYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB
/zAKBggqhkjOPQQDAwNnADBkAjAn7qRaqCG76UeXlImldCBteU/IvZNeWBj7LRoAasm4PdCkT0RH
lAFWovgzJQxC36oCMB3q4S6ILuH5px0CMk7yn2xVdOOurvulGu7t0vzCAxHrRVxgED1cf5kDW21U
SAGKcw==
-----END CERTIFICATE-----

Sectigo Public Server Authentication Root R46
=============================================
-----BEGIN CERTIFICATE-----
MIIFijCCA3KgAwIBAgIQdY39i658BwD6qSWn4cetFDANBgkqhkiG9w0BAQwFADBfMQswCQYDVQQG
EwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1TZWN0aWdvIFB1YmxpYyBT
ZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBSNDYwHhcNMjEwMzIyMDAwMDAwWhcNNDYwMzIxMjM1
OTU5WjBfMQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1T
ZWN0aWdvIFB1YmxpYyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBSNDYwggIiMA0GCSqGSIb3
DQEBAQUAA4ICDwAwggIKAoICAQCTvtU2UnXYASOgHEdCSe5jtrch/cSV1UgrJnwUUxDaef0rty2k
1Cz66jLdScK5vQ9IPXtamFSvnl0xdE8H/FAh3aTPaE8bEmNtJZlMKpnzSDBh+oF8HqcIStw+Kxwf
GExxqjWMrfhu6DtK2eWUAtaJhBOqbchPM8xQljeSM9xfiOefVNlI8JhD1mb9nxc4Q8UBUQvX4yMP
FF1bFOdLvt30yNoDN9HWOaEhUTCDsG3XME6WW5HwcCSrv0WBZEMNvSE6Lzzpng3LILVCJ8zab5vu
ZDCQOc2TZYEhMbUjUDM3IuM47fgxMMxF/mL50V0yeUKH32rMVhlATc6qu/m1dkmU8Sf4kaWD5Qaz
Yw6A3OASVYCmO2a0OYctyPDQ0RTp5A1NDvZdV3LFOxxHVp3i1fuBYYzMTYCQNFu31xR13NgESJ/A
wSiItOkcyqex8Va3e0lMWeUgFaiEAin6OJRpmkkGj80feRQXEgyDet4fsZfu+Zd4KKTIRJLpfSYF
plhym3kT2BFfrsU4YjRosoYwjviQYZ4ybPUHNs2iTG7sijbt8uaZFURww3y8nDnAtOFr94MlI1fZ
EoDlSfB1D++N6xybVCi0ITz8fAr/73trdf+LHaAZBav6+CuBQug4urv7qv094PPK306Xlynt8xhW
6aWWrL3DkJiy4Pmi1KZHQ3xtzwIDAQABo0IwQDAdBgNVHQ4EFgQUVnNYZJX5khqwEioEYnmhQBWI
IUkwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAC9c
mTz8Bl6MlC5w6tIyMY208FHVvArzZJ8HXtXBc2hkeqK5Duj5XYUtqDdFqij0lgVQYKlJfp/imTYp
E0RHap1VIDzYm/EDMrraQKFz6oOht0SmDpkBm+S8f74TlH7Kph52gDY9hAaLMyZlbcp+nv4fjFg4
exqDsQ+8FxG75gbMY/qB8oFM2gsQa6H61SilzwZAFv97fRheORKkU55+MkIQpiGRqRxOF3yEvJ+M
0ejf5lG5Nkc/kLnHvALcWxxPDkjBJYOcCj+esQMzEhonrPcibCTRAUH4WAP+JWgiH5paPHxsnnVI
84HxZmduTILA7rpXDhjvLpr3Etiga+kFpaHpaPi8TD8SHkXoUsCjvxInebnMMTzD9joiFgOgyY9m
pFuiTdaBJQbpdqQACj7LzTWb4OE4y2BThihCQRxEV+ioratF4yUQvNs+ZUH7G6aXD+u5dHn5Hrwd
Vw1Hr8Mvn4dGp+smWg9WY7ViYG4A++MnESLn/pmPNPW56MORcr3Ywx65LvKRRFHQV80MNNVIIb/b
E/FmJUNS0nAiNs2fxBx1IK1jcmMGDw4nztJqDby1ORrp0XZ60Vzk50lJLVU3aPAaOpg+VBeHVOmm
J1CJeyAvP/+/oYtKR5j/K3tJPsMpRmAYQqszKbrAKbkTidOIijlBO8n9pu0f9GBj39ItVQGL
-----END CERTIFICATE-----

SSL.com TLS RSA Root CA 2022
============================
-----BEGIN CERTIFICATE-----
MIIFiTCCA3GgAwIBAgIQb77arXO9CEDii02+1PdbkTANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQG
EwJVUzEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMSUwIwYDVQQDDBxTU0wuY29tIFRMUyBSU0Eg
Um9vdCBDQSAyMDIyMB4XDTIyMDgyNTE2MzQyMloXDTQ2MDgxOTE2MzQyMVowTjELMAkGA1UEBhMC
VVMxGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcU1NMLmNvbSBUTFMgUlNBIFJv
b3QgQ0EgMjAyMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANCkCXJPQIgSYT41I57u
9nTPL3tYPc48DRAokC+X94xI2KDYJbFMsBFMF3NQ0CJKY7uB0ylu1bUJPiYYf7ISf5OYt6/wNr/y
7hienDtSxUcZXXTzZGbVXcdotL8bHAajvI9AI7YexoS9UcQbOcGV0insS657Lb85/bRi3pZ7Qcac
oOAGcvvwB5cJOYF0r/c0WRFXCsJbwST0MXMwgsadugL3PnxEX4MN8/HdIGkWCVDi1FW24IBydm5M
R7d1VVm0U3TZlMZBrViKMWYPHqIbKUBOL9975hYsLfy/7PO0+r4Y9ptJ1O4Fbtk085zx7AGL0SDG
D6C1vBdOSHtRwvzpXGk3R2azaPgVKPC506QVzFpPulJwoxJF3ca6TvvC0PeoUidtbnm1jPx7jMEW
TO6Af77wdr5BUxIzrlo4QqvXDz5BjXYHMtWrifZOZ9mxQnUjbvPNQrL8VfVThxc7wDNY8VLS+YCk
8OjwO4s4zKTGkH8PnP2L0aPP2oOnaclQNtVcBdIKQXTbYxE3waWglksejBYSd66UNHsef8JmAOSq
g+qKkK3ONkRN0VHpvB/zagX9wHQfJRlAUW7qglFA35u5CCoGAtUjHBPW6dvbxrB6y3snm/vg1UYk
7RBLY0ulBY+6uB0rpvqR4pJSvezrZ5dtmi2fgTIFZzL7SAg/2SW4BCUvAgMBAAGjYzBhMA8GA1Ud
EwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAU+y437uOEeicuzRk1sTN8/9REQrkwHQYDVR0OBBYEFPsu
N+7jhHonLs0ZNbEzfP/UREK5MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAjYlt
hEUY8U+zoO9opMAdrDC8Z2awms22qyIZZtM7QbUQnRC6cm4pJCAcAZli05bg4vsMQtfhWsSWTVTN
j8pDU/0quOr4ZcoBwq1gaAafORpR2eCNJvkLTqVTJXojpBzOCBvfR4iyrT7gJ4eLSYwfqUdYe5by
iB0YrrPRpgqU+tvT5TgKa3kSM/tKWTcWQA673vWJDPFs0/dRa1419dvAJuoSc06pkZCmF8NsLzjU
o3KUQyxi4U5cMj29TH0ZR6LDSeeWP4+a0zvkEdiLA9z2tmBVGKaBUfPhqBVq6+AL8BQx1rmMRTqo
ENjwuSfr98t67wVylrXEj5ZzxOhWc5y8aVFjvO9nHEMaX3cZHxj4HCUp+UmZKbaSPaKDN7Egkaib
MOlqbLQjk2UEqxHzDh1TJElTHaE/nUiSEeJ9DU/1172iWD54nR4fK/4huxoTtrEoZP2wAgDHbICi
vRZQIA9ygV/MlP+7mea6kMvq+cYMwq7FGc4zoWtcu358NFcXrfA/rs3qr5nsLFR+jM4uElZI7xc7
P0peYNLcdDa8pUNjyw9bowJWCZ4kLOGGgYz+qxcs+sjiMho6/4UIyYOf8kpIEFR3N+2ivEC+5BB0
9+Rbu7nzifmPQdjH5FCQNYA+HLhNkNPU98OwoX6EyneSMSy4kLGCenROmxMmtNVQZlR4rmA=
-----END CERTIFICATE-----

SSL.com TLS ECC Root CA 2022
============================
-----BEGIN CERTIFICATE-----
MIICOjCCAcCgAwIBAgIQFAP1q/s3ixdAW+JDsqXRxDAKBggqhkjOPQQDAzBOMQswCQYDVQQGEwJV
UzEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMSUwIwYDVQQDDBxTU0wuY29tIFRMUyBFQ0MgUm9v
dCBDQSAyMDIyMB4XDTIyMDgyNTE2MzM0OFoXDTQ2MDgxOTE2MzM0N1owTjELMAkGA1UEBhMCVVMx
GDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcU1NMLmNvbSBUTFMgRUNDIFJvb3Qg
Q0EgMjAyMjB2MBAGByqGSM49AgEGBSuBBAAiA2IABEUpNXP6wrgjzhR9qLFNoFs27iosU8NgCTWy
JGYmacCzldZdkkAZDsalE3D07xJRKF3nzL35PIXBz5SQySvOkkJYWWf9lCcQZIxPBLFNSeR7T5v1
5wj4A4j3p8OSSxlUgaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBSJjy+j6CugFFR7
81a4Jl9nOAuc0DAdBgNVHQ4EFgQUiY8vo+groBRUe/NWuCZfZzgLnNAwDgYDVR0PAQH/BAQDAgGG
MAoGCCqGSM49BAMDA2gAMGUCMFXjIlbp15IkWE8elDIPDAI2wv2sdDJO4fscgIijzPvX6yv/N33w
7deedWo1dlJF4AIxAMeNb0Igj762TVntd00pxCAgRWSGOlDGxK0tk/UYfXLtqc/ErFc2KAhl3zx5
Zn6g6g==
-----END CERTIFICATE-----

Atos TrustedRoot Root CA ECC TLS 2021
=====================================
-----BEGIN CERTIFICATE-----
MIICFTCCAZugAwIBAgIQPZg7pmY9kGP3fiZXOATvADAKBggqhkjOPQQDAzBMMS4wLAYDVQQDDCVB
dG9zIFRydXN0ZWRSb290IFJvb3QgQ0EgRUNDIFRMUyAyMDIxMQ0wCwYDVQQKDARBdG9zMQswCQYD
VQQGEwJERTAeFw0yMTA0MjIwOTI2MjNaFw00MTA0MTcwOTI2MjJaMEwxLjAsBgNVBAMMJUF0b3Mg
VHJ1c3RlZFJvb3QgUm9vdCBDQSBFQ0MgVExTIDIwMjExDTALBgNVBAoMBEF0b3MxCzAJBgNVBAYT
AkRFMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEloZYKDcKZ9Cg3iQZGeHkBQcfl+3oZIK59sRxUM6K
DP/XtXa7oWyTbIOiaG6l2b4siJVBzV3dscqDY4PMwL502eCdpO5KTlbgmClBk1IQ1SQ4AjJn8ZQS
b+/Xxd4u/RmAo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR2KCXWfeBmmnoJsmo7jjPX
NtNPojAOBgNVHQ8BAf8EBAMCAYYwCgYIKoZIzj0EAwMDaAAwZQIwW5kp85wxtolrbNa9d+F851F+
uDrNozZffPc8dz7kUK2o59JZDCaOMDtuCCrCp1rIAjEAmeMM56PDr9NJLkaCI2ZdyQAUEv049OGY
a3cpetskz2VAv9LcjBHo9H1/IISpQuQo
-----END CERTIFICATE-----

Atos TrustedRoot Root CA RSA TLS 2021
=====================================
-----BEGIN CERTIFICATE-----
MIIFZDCCA0ygAwIBAgIQU9XP5hmTC/srBRLYwiqipDANBgkqhkiG9w0BAQwFADBMMS4wLAYDVQQD
DCVBdG9zIFRydXN0ZWRSb290IFJvb3QgQ0EgUlNBIFRMUyAyMDIxMQ0wCwYDVQQKDARBdG9zMQsw
CQYDVQQGEwJERTAeFw0yMTA0MjIwOTIxMTBaFw00MTA0MTcwOTIxMDlaMEwxLjAsBgNVBAMMJUF0
b3MgVHJ1c3RlZFJvb3QgUm9vdCBDQSBSU0EgVExTIDIwMjExDTALBgNVBAoMBEF0b3MxCzAJBgNV
BAYTAkRFMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtoAOxHm9BYx9sKOdTSJNy/BB
l01Z4NH+VoyX8te9j2y3I49f1cTYQcvyAh5x5en2XssIKl4w8i1mx4QbZFc4nXUtVsYvYe+W/CBG
vevUez8/fEc4BKkbqlLfEzfTFRVOvV98r61jx3ncCHvVoOX3W3WsgFWZkmGbzSoXfduP9LVq6hdK
ZChmFSlsAvFr1bqjM9xaZ6cF4r9lthawEO3NUDPJcFDsGY6wx/J0W2tExn2WuZgIWWbeKQGb9Cpt
0xU6kGpn8bRrZtkh68rZYnxGEFzedUlnnkL5/nWpo63/dgpnQOPF943HhZpZnmKaau1Fh5hnstVK
PNe0OwANwI8f4UDErmwh3El+fsqyjW22v5MvoVw+j8rtgI5Y4dtXz4U2OLJxpAmMkokIiEjxQGMY
sluMWuPD0xeqqxmjLBvk1cbiZnrXghmmOxYsL3GHX0WelXOTwkKBIROW1527k2gV+p2kHYzygeBY
Br3JtuP2iV2J+axEoctr+hbxx1A9JNr3w+SH1VbxT5Aw+kUJWdo0zuATHAR8ANSbhqRAvNncTFd+
rrcztl524WWLZt+NyteYr842mIycg5kDcPOvdO3GDjbnvezBc6eUWsuSZIKmAMFwoW4sKeFYV+xa
fJlrJaSQOoD0IJ2azsct+bJLKZWD6TWNp0lIpw9MGZHQ9b8Q4HECAwEAAaNCMEAwDwYDVR0TAQH/
BAUwAwEB/zAdBgNVHQ4EFgQUdEmZ0f+0emhFdcN+tNzMzjkz2ggwDgYDVR0PAQH/BAQDAgGGMA0G
CSqGSIb3DQEBDAUAA4ICAQAjQ1MkYlxt/T7Cz1UAbMVWiLkO3TriJQ2VSpfKgInuKs1l+NsW4AmS
4BjHeJi78+xCUvuppILXTdiK/ORO/auQxDh1MoSf/7OwKwIzNsAQkG8dnK/haZPso0UvFJ/1TCpl
Q3IM98P4lYsU84UgYt1UU90s3BiVaU+DR3BAM1h3Egyi61IxHkzJqM7F78PRreBrAwA0JrRUITWX
AdxfG/F851X6LWh3e9NpzNMOa7pNdkTWwhWaJuywxfW70Xp0wmzNxbVe9kzmWy2B27O3Opee7c9G
slA9hGCZcbUztVdF5kJHdWoOsAgMrr3e97sPWD2PAzHoPYJQyi9eDF20l74gNAf0xBLh7tew2Vkt
afcxBPTy+av5EzH4AXcOPUIjJsyacmdRIXrMPIWo6iFqO9taPKU0nprALN+AnCng33eU0aKAQv9q
TFsR0PXNor6uzFFcw9VUewyu1rkGd4Di7wcaaMxZUa1+XGdrudviB0JbuAEFWDlN5LuYo7Ey7Nmj
1m+UI/87tyll5gfp77YZ6ufCOB0yiJA8EytuzO+rdwY0d4RPcuSBhPm5dDTedk+SKlOxJTnbPP/l
PqYO5Wue/9vsL3SD3460s6neFE3/MaNFcyT6lSnMEpcEoji2jbDwN/zIIX8/syQbPYtuzE2wFg2W
HYMfRsCbvUOZ58SWLs5fyQ==
-----END CERTIFICATE-----
vendor/wordfence/wf-waf/src/init.php000064400000002315150755146450013464 0ustar00<?php
if (defined('WFWAF_VERSION')) { exit(); }

define('WFWAF_VERSION', '1.1.0');
define('WFWAF_PATH', dirname(__FILE__) . '/');
define('WFWAF_LIB_PATH', WFWAF_PATH . 'lib/');
define('WFWAF_VIEW_PATH', WFWAF_PATH . 'views/');
define('WFWAF_API_URL_SEC', 'https://noc4.wordfence.com/v1.11/');
if (!defined('WFWAF_DEBUG')) {
	define('WFWAF_DEBUG', false);
}
if (!defined('WFWAF_ENABLED')) {
	define('WFWAF_ENABLED', true);
}

define('WFWAF_IS_WINDOWS', strtoupper(substr(PHP_OS, 0, 3)) === 'WIN');

require_once WFWAF_LIB_PATH . 'waf.php';
require_once WFWAF_LIB_PATH . 'utils.php';
require_once WFWAF_LIB_PATH . 'i18n.php';
require_once WFWAF_LIB_PATH . 'xmlrpc.php';
require_once WFWAF_LIB_PATH . 'shutdown.php';

require_once WFWAF_LIB_PATH . 'storage.php';
require_once WFWAF_LIB_PATH . 'storage/file.php';
require_once WFWAF_LIB_PATH . 'storage/mysql.php';

require_once WFWAF_LIB_PATH . 'config.php';

require_once WFWAF_LIB_PATH . 'rules.php';
require_once WFWAF_LIB_PATH . 'parser/lexer.php';
require_once WFWAF_LIB_PATH . 'parser/parser.php';
require_once WFWAF_LIB_PATH . 'parser/sqli.php';

require_once WFWAF_LIB_PATH . 'request.php';
require_once WFWAF_LIB_PATH . 'http.php';
require_once WFWAF_LIB_PATH . 'view.php';vendor/wordfence/wf-waf/src/lib/utils.php000064400000123136150755146450014434 0ustar00<?php
if (defined('WFWAF_VERSION') && !defined('WFWAF_RUN_COMPLETE')) {

class wfWAFUtils {

	/**
	 * Return dot or colon notation of IPv4 or IPv6 address.
	 *
	 * @param string $ip
	 * @return string|bool
	 */
	public static function inet_ntop($ip) {
		// trim this to the IPv4 equiv if it's in the mapped range
		if (wfWAFUtils::strlen($ip) == 16 && wfWAFUtils::substr($ip, 0, 12) == "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff") {
			$ip = wfWAFUtils::substr($ip, 12, 4);
		}
		return self::hasIPv6Support() ? @inet_ntop($ip) : self::_inet_ntop($ip);
	}

	/**
	 * Return the packed binary string of an IPv4 or IPv6 address.
	 *
	 * @param string $ip
	 * @return string
	 */
	public static function inet_pton($ip) {
		// convert the 4 char IPv4 to IPv6 mapped version.
		$pton = str_pad(self::hasIPv6Support() ? @inet_pton($ip) : self::_inet_pton($ip), 16,
			"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00", STR_PAD_LEFT);
		return $pton;
	}

	/**
	 * Added compatibility for hosts that do not have inet_pton.
	 *
	 * @param $ip
	 * @return bool|string
	 */
	public static function _inet_pton($ip) {
		// IPv4
		if (preg_match('/^(?:\d{1,3}(?:\.|$)){4}/', $ip)) {
			$octets = explode('.', $ip);
			$bin = chr($octets[0]) . chr($octets[1]) . chr($octets[2]) . chr($octets[3]);
			return $bin;
		}

		// IPv6
		if (preg_match('/^((?:[\da-f]{1,4}(?::|)){0,8})(::)?((?:[\da-f]{1,4}(?::|)){0,8})$/i', $ip)) {
			if ($ip === '::') {
				return "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
			}
			$colon_count = wfWAFUtils::substr_count($ip, ':');
			$dbl_colon_pos = wfWAFUtils::strpos($ip, '::');
			if ($dbl_colon_pos !== false) {
				$ip = str_replace('::', str_repeat(':0000',
						(($dbl_colon_pos === 0 || $dbl_colon_pos === wfWAFUtils::strlen($ip) - 2) ? 9 : 8) - $colon_count) . ':', $ip);
				$ip = trim($ip, ':');
			}

			$ip_groups = explode(':', $ip);
			$ipv6_bin = '';
			foreach ($ip_groups as $ip_group) {
				$ipv6_bin .= pack('H*', str_pad($ip_group, 4, '0', STR_PAD_LEFT));
			}

			return wfWAFUtils::strlen($ipv6_bin) === 16 ? $ipv6_bin : false;
		}

		// IPv4 mapped IPv6
		if (preg_match('/^((?:0{1,4}(?::|)){0,5})(::)?ffff:((?:\d{1,3}(?:\.|$)){4})$/i', $ip, $matches)) {
			$octets = explode('.', $matches[3]);
			return "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff" . chr($octets[0]) . chr($octets[1]) . chr($octets[2]) . chr($octets[3]);
		}

		return false;
	}

	/**
	 * Added compatibility for hosts that do not have inet_ntop.
	 *
	 * @param $ip
	 * @return bool|string
	 */
	public static function _inet_ntop($ip) {
		// IPv4
		if (wfWAFUtils::strlen($ip) === 4) {
			return ord($ip[0]) . '.' . ord($ip[1]) . '.' . ord($ip[2]) . '.' . ord($ip[3]);
		}

		// IPv6
		if (wfWAFUtils::strlen($ip) === 16) {

			// IPv4 mapped IPv6
			if (wfWAFUtils::substr($ip, 0, 12) == "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff") {
				return "::ffff:" . ord($ip[12]) . '.' . ord($ip[13]) . '.' . ord($ip[14]) . '.' . ord($ip[15]);
			}

			$hex = bin2hex($ip);
			$groups = str_split($hex, 4);
			$collapse = false;
			$done_collapse = false;
			foreach ($groups as $index => $group) {
				if ($group == '0000' && !$done_collapse) {
					if (!$collapse) {
						$groups[$index] = ':';
					} else {
						$groups[$index] = '';
					}
					$collapse = true;
				} else if ($collapse) {
					$done_collapse = true;
					$collapse = false;
				}
				$groups[$index] = ltrim($groups[$index], '0');
			}
			$ip = join(':', array_filter($groups));
			$ip = str_replace(':::', '::', $ip);
			return $ip == ':' ? '::' : $ip;
		}

		return false;
	}

	/**
	 * Verify PHP was compiled with IPv6 support.
	 *
	 * Some hosts appear to not have inet_ntop, and others appear to have inet_ntop but are unable to process IPv6 addresses.
	 *
	 * @return bool
	 */
	public static function hasIPv6Support() {
		return defined('AF_INET6');
	}

	/**
	 * Expand a compressed printable representation of an IPv6 address.
	 *
	 * @param string $ip
	 * @return string
	 */
	public static function expandIPv6Address($ip) {
		$hex = bin2hex(self::inet_pton($ip));
		$ip = wfWAFUtils::substr(preg_replace("/([a-f0-9]{4})/i", "$1:", $hex), 0, -1);
		return $ip;
	}

	protected static $servicesJSON;

	public static function json_encode($string) {
		if (function_exists('json_encode')) {
			return json_encode($string);
		} else {
			if (!self::$servicesJSON) {
				require_once WFWAF_LIB_PATH . 'json.php';
				self::$servicesJSON = new wfServices_JSON();
			}
			return self::$servicesJSON->encodeUnsafe($string);
		}
	}

	public static function json_decode($string, $assoc_array = false) {
		if (function_exists('json_decode')) {
			return json_decode($string, $assoc_array);
		} else {
			if (!self::$servicesJSON) {
				require_once WFWAF_LIB_PATH . 'json.php';
				self::$servicesJSON = new wfServices_JSON();
			}
			$res = self::$servicesJSON->decode($string);
			if ($assoc_array)
				$res = self::_json_decode_object_helper($res);
			return $res;

		}
	}

	/**
	 * @param object $data
	 * @return array
	 */
	protected static function _json_decode_object_helper($data) {
		if (is_object($data))
			$data = get_object_vars($data);
		return is_array($data) ? array_map('wfWAFUtils::_json_decode_object_helper', $data) : $data;
	}

	public static function json_encode_limited($data, $limit, $truncatable) {
		$json = self::json_encode($data);
		$size = strlen($json);
		if ($size > $limit) {
			$json = null;
			$minimalData = $data;
			foreach ($minimalData as $key => &$value) {
				if (in_array($key, $truncatable)) {
					$value = '';
				}
			}
			$minimumSize = strlen(self::json_encode($minimalData));
			if ($minimumSize <= $limit) {
				$excess = $size - $limit;
				foreach ($truncatable as $field) {
					if (!array_key_exists($field, $data))
						continue;
					$value = $data[$field];
					if (is_string($value)) {
						$originalLength = strlen($value);
						$truncatedLength = max(0, $originalLength - $excess);
						$excess -= ($originalLength - $truncatedLength);
						$data[$field] = substr($value, 0, $truncatedLength);
					}
					if ($excess === 0) {
						$json = self::json_encode($data);
						break;
					}
				}
			}
		}
		return $json;
	}

	/**
	 * Compare two strings in constant time. It can leak the length of a string.
	 *
	 * @param string $a Expected string.
	 * @param string $b Actual string.
	 * @return bool Whether strings are equal.
	 */
	public static function hash_equals($a, $b) {
		$a_length = wfWAFUtils::strlen($a);
		if ($a_length !== wfWAFUtils::strlen($b)) {
			return false;
		}
		$result = 0;

		// Do not attempt to "optimize" this.
		for ($i = 0; $i < $a_length; $i++) {
			$result |= ord($a[$i]) ^ ord($b[$i]);
		}

		return $result === 0;
	}

	/**
	 * @param $algo
	 * @param $data
	 * @param $key
	 * @param bool|false $raw_output
	 * @return bool|string
	 */
	public static function hash_hmac($algo, $data, $key, $raw_output = false) {
		if (function_exists('hash_hmac')) {
			return hash_hmac($algo, $data, $key, $raw_output);
		}
		return self::_hash_hmac($algo, $data, $key, $raw_output);
	}

	/**
	 * @param $algo
	 * @param $data
	 * @param $key
	 * @param bool|false $raw_output
	 * @return bool|string
	 */
	private static function _hash_hmac($algo, $data, $key, $raw_output = false) {
		$packs = array('md5' => 'H32', 'sha1' => 'H40');

		if (!isset($packs[$algo]))
			return false;

		$pack = $packs[$algo];

		if (wfWAFUtils::strlen($key) > 64)
			$key = pack($pack, $algo($key));

		$key = str_pad($key, 64, chr(0));

		$ipad = (wfWAFUtils::substr($key, 0, 64) ^ str_repeat(chr(0x36), 64));
		$opad = (wfWAFUtils::substr($key, 0, 64) ^ str_repeat(chr(0x5C), 64));

		$hmac = $algo($opad . pack($pack, $algo($ipad . $data)));

		if ($raw_output)
			return pack($pack, $hmac);
		return $hmac;
	}

	/**
	 * @param int $length
	 * @param string $chars
	 * @return string
	 */
	public static function getRandomString($length = 16, $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_ []{}<>~`+=,.;:/?|') {
		// This is faster than calling self::random_int for $length
		$bytes = self::random_bytes($length);
		$return = '';
		$maxIndex = wfWAFUtils::strlen($chars) - 1;
		for ($i = 0; $i < $length; $i++) {
			$fp = (float) ord($bytes[$i]) / 255.0; // convert to [0,1]
			$index = (int) (round($fp * $maxIndex));
			$return .= $chars[$index];
		}
		return $return;
	}

	/**
	 * Polyfill for random_bytes.
	 *
	 * @param int $bytes
	 * @return string
	 */
	public static function random_bytes($bytes) {
		$bytes = (int) $bytes;
		if (function_exists('random_bytes')) {
			try {
				$rand = random_bytes($bytes);
				if (is_string($rand) && wfWAFUtils::strlen($rand) === $bytes) {
					return $rand;
				}
			} catch (Exception $e) {
				// Fall through
			} catch (TypeError $e) {
				// Fall through
			} catch (Error $e) {
				// Fall through
			}
		}
		if (function_exists('mcrypt_create_iv')) {
			// phpcs:ignore PHPCompatibility.FunctionUse.RemovedFunctions.mcrypt_create_ivDeprecatedRemoved,PHPCompatibility.Extensions.RemovedExtensions.mcryptDeprecatedRemoved,PHPCompatibility.Constants.RemovedConstants.mcrypt_dev_urandomDeprecatedRemoved
			$rand = @mcrypt_create_iv($bytes, MCRYPT_DEV_URANDOM);
			if (is_string($rand) && wfWAFUtils::strlen($rand) === $bytes) {
				return $rand;
			}
		}
		if (function_exists('openssl_random_pseudo_bytes')) {
			$rand = @openssl_random_pseudo_bytes($bytes, $strong);
			if (is_string($rand) && wfWAFUtils::strlen($rand) === $bytes) {
				return $rand;
			}
		}
		// Last resort is insecure
		$return = '';
		for ($i = 0; $i < $bytes; $i++) {
			$return .= chr(mt_rand(0, 255));
		}
		return $return;
	}

	/**
	 * Polyfill for random_int.
	 *
	 * @param int $min
	 * @param int $max
	 * @return int
	 */
	public static function random_int($min = 0, $max = 0x7FFFFFFF) {
		if (function_exists('random_int')) {
			try {
				return random_int($min, $max);
			} catch (Exception $e) {
				// Fall through
			} catch (TypeError $e) {
				// Fall through
			} catch (Error $e) {
				// Fall through
			}
		}
		$diff = $max - $min;
		$bytes = self::random_bytes(4);
		if ($bytes === false || wfWAFUtils::strlen($bytes) != 4) {
			throw new RuntimeException("Unable to get 4 bytes");
		}
		$val = @unpack("Nint", $bytes);
		$val = $val['int'] & 0x7FFFFFFF;
		$fp = (float) $val / 2147483647.0; // convert to [0,1]
		return (int) (round($fp * $diff) + $min);
	}

	/**
	 * @param mixed $subject
	 * @return array|string
	 */
	public static function stripMagicQuotes($subject) {
		// phpcs:ignore PHPCompatibility.IniDirectives.RemovedIniDirectives.magic_quotes_sybaseDeprecatedRemoved
		$sybase = ini_get('magic_quotes_sybase');
		$sybaseEnabled = ((is_numeric($sybase) && $sybase) ||
			(is_string($sybase) && $sybase && !in_array(wfWAFUtils::strtolower($sybase), array(
					'off',
					'false'
				))));
		if (defined('PHP_VERSION_ID') && PHP_VERSION_ID >= 70400) { //Avoid get_magic_quotes_gpc on PHP >= 7.4.0
			return $subject;
		}
		// phpcs:ignore PHPCompatibility.FunctionUse.RemovedFunctions.get_magic_quotes_gpcDeprecated
		if ((function_exists("get_magic_quotes_gpc") && get_magic_quotes_gpc()) || $sybaseEnabled) {
			return self::stripslashes_deep($subject);
		}
		return $subject;
	}

	/**
	 * @param mixed $subject
	 * @return array|string
	 */
	public static function stripslashes_deep($subject) {
		if (is_array($subject)) {
			return array_map(array(
				'self', 'stripslashes_deep',
			), $subject);
		} else if (is_string($subject)) {
			return stripslashes($subject);
		}
		return $subject;
	}


	/**
	 * Set the mbstring internal encoding to a binary safe encoding when func_overload
	 * is enabled.
	 *
	 * When mbstring.func_overload is in use for multi-byte encodings, the results from
	 * strlen() and similar functions respect the utf8 characters, causing binary data
	 * to return incorrect lengths.
	 *
	 * This function overrides the mbstring encoding to a binary-safe encoding, and
	 * resets it to the users expected encoding afterwards through the
	 * `reset_mbstring_encoding` function.
	 *
	 * It is safe to recursively call this function, however each
	 * `mbstring_binary_safe_encoding()` call must be followed up with an equal number
	 * of `reset_mbstring_encoding()` calls.
	 *
	 * @see wfWAFUtils::reset_mbstring_encoding
	 *
	 * @staticvar array $encodings
	 * @staticvar bool  $overloaded
	 *
	 * @param bool $reset Optional. Whether to reset the encoding back to a previously-set encoding.
	 *                    Default false.
	 */
	public static function mbstring_binary_safe_encoding($reset = false) {
		static $encodings = array();
		static $overloaded = null;

		if (is_null($overloaded)) {
			// phpcs:ignore PHPCompatibility.IniDirectives.RemovedIniDirectives.mbstring_func_overloadDeprecated
			$overloaded = function_exists('mb_internal_encoding') && (ini_get('mbstring.func_overload') & 2); 
		}

		if (false === $overloaded) { return; }

		if (!$reset) {
			$encoding = mb_internal_encoding();
			array_push($encodings, $encoding);
			mb_internal_encoding('ISO-8859-1');
		}

		if ($reset && $encodings) {
			$encoding = array_pop($encodings);
			mb_internal_encoding($encoding);
		}
	}

	/**
	 * Reset the mbstring internal encoding to a users previously set encoding.
	 *
	 * @see wfWAFUtils::mbstring_binary_safe_encoding
	 */
	public static function reset_mbstring_encoding() {
		self::mbstring_binary_safe_encoding(true);
	}

	/**
	 * @param callable $function
	 * @param array $args
	 * @return mixed
	 */
	protected static function callMBSafeStrFunction($function, $args) {
		self::mbstring_binary_safe_encoding();
		$return = call_user_func_array($function, $args);
		self::reset_mbstring_encoding();
		return $return;
	}

	/**
	 * Multibyte safe strlen.
	 *
	 * @param $binary
	 * @return int
	 */
	public static function strlen($binary) {
		$args = func_get_args();
		return self::callMBSafeStrFunction('strlen', $args);
	}

	/**
	 * @param $haystack
	 * @param $needle
	 * @param int $offset
	 * @return int
	 */
	public static function stripos($haystack, $needle, $offset = 0) {
		$args = func_get_args();
		return self::callMBSafeStrFunction('stripos', $args);
	}

	/**
	 * @param $string
	 * @return mixed
	 */
	public static function strtolower($string) {
		$args = func_get_args();
		return self::callMBSafeStrFunction('strtolower', $args);
	}

	/**
	 * @param $string
	 * @param $start
	 * @param $length
	 * @return mixed
	 */
	public static function substr($string, $start, $length = null) {
		if ($length === null) { $length = self::strlen($string); }
		return self::callMBSafeStrFunction('substr', array(
			$string, $start, $length
		));
	}

	/**
	 * @param $haystack
	 * @param $needle
	 * @param int $offset
	 * @return mixed
	 */
	public static function strpos($haystack, $needle, $offset = 0) {
		$args = func_get_args();
		return self::callMBSafeStrFunction('strpos', $args);
	}

	/**
	 * @param string $haystack
	 * @param string $needle
	 * @param int $offset
	 * @param int $length
	 * @return mixed
	 */
	public static function substr_count($haystack, $needle, $offset = 0, $length = null) {
		if ($length === null) { $length = self::strlen($haystack); }
		return self::callMBSafeStrFunction('substr_count', array(
			$haystack, $needle, $offset, $length
		));
	}

	/**
	 * @param $string
	 * @return mixed
	 */
	public static function strtoupper($string) {
		$args = func_get_args();
		return self::callMBSafeStrFunction('strtoupper', $args);
	}

	/**
	 * @param string $haystack
	 * @param string $needle
	 * @param int $offset
	 * @return mixed
	 */
	public static function strrpos($haystack, $needle, $offset = 0) {
		$args = func_get_args();
		return self::callMBSafeStrFunction('strrpos', $args);
	}

	/**
	 * @param string $val An ini byte size value (e.g., 20M)
	 * @return int
	 */
	public static function iniSizeToBytes($val) {
		$val = trim($val);
		if (preg_match('/^\d+$/', $val)) {
			return (int) $val;
		}

		$last = strtolower(substr($val, -1));
		$val = (int) substr($val, 0, -1);
		switch ($last) {
			case 'g':
				$val *= 1024;
			case 'm':
				$val *= 1024;
			case 'k':
				$val *= 1024;
		}

		return $val;
	}

	public static function reverseLookup($IP) {
		$IPn = self::inet_pton($IP);
		// This function works for IPv4 or IPv6
		if (function_exists('gethostbyaddr')) {
			$host = @gethostbyaddr($IP);
		}
		if (!$host) {
			$ptr = false;
			if (filter_var($IP, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) !== false) {
				$ptr = implode(".", array_reverse(explode(".", $IP))) . ".in-addr.arpa";
			} else if (filter_var($IP, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) !== false) {
				$ptr = implode(".", array_reverse(str_split(bin2hex($IPn)))) . ".ip6.arpa";
			}

			if ($ptr && function_exists('dns_get_record')) {
				$host = @dns_get_record($ptr, DNS_PTR);
				if ($host) {
					$host = $host[0]['target'];
				}
			}
		}
		if (!$host) {
			return '';
		}
		return $host;
	}

	public static function patternToRegex($pattern, $mod = 'i', $sep = '/') {
		$pattern = preg_quote(trim($pattern), $sep);
		$pattern = str_replace(' ', '\s', $pattern);
		return $sep . '^' . str_replace('\*', '.*', $pattern) . '$' . $sep . $mod;
	}

	public static function isUABlocked($uaPattern, $ua) { // takes a pattern using asterisks as wildcards, turns it into regex and checks it against the visitor UA returning true if blocked
		return fnmatch($uaPattern, $ua, FNM_CASEFOLD);
	}

	public static function isRefererBlocked($refPattern, $referer) {
		return fnmatch($refPattern, $referer, FNM_CASEFOLD);
	}

	public static function extractBareURI($URL) {
		$URL = preg_replace('/^https?:\/\/[^\/]+/i', '', $URL); //strip of method and host
		$URL = preg_replace('/\#.*$/', '', $URL); //strip off fragment
		$URL = preg_replace('/\?.*$/', '', $URL); //strip off query string
		return $URL;
	}

	public static function extractHostname($str) {
		if (preg_match('/https?:\/\/([a-zA-Z0-9\.\-]+)(?:\/|$)/i', $str, $matches)) {
			return strtolower($matches[1]);
		}
		else {
			return false;
		}
	}

	public static function redirect($location, $status = 302) {
		$is_apache = (strpos($_SERVER['SERVER_SOFTWARE'], 'Apache') !== false || strpos($_SERVER['SERVER_SOFTWARE'], 'LiteSpeed') !== false);
		$is_IIS = !$is_apache && (strpos($_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS') !== false || strpos($_SERVER['SERVER_SOFTWARE'], 'ExpressionDevServer') !== false);

		self::doNotCache();

		if (!$is_IIS && PHP_SAPI != 'cgi-fcgi') {
			self::statusHeader($status); // This causes problems on IIS and some FastCGI setups
		}

		header("Location: {$location}", true, $status);
		exit;
	}

	public static function statusHeader($code) {
		$code = abs(intval($code));

		$statusCodes = array(
			100 => 'Continue',
			101 => 'Switching Protocols',
			102 => 'Processing',

			200 => 'OK',
			201 => 'Created',
			202 => 'Accepted',
			203 => 'Non-Authoritative Information',
			204 => 'No Content',
			205 => 'Reset Content',
			206 => 'Partial Content',
			207 => 'Multi-Status',
			226 => 'IM Used',

			300 => 'Multiple Choices',
			301 => 'Moved Permanently',
			302 => 'Found',
			303 => 'See Other',
			304 => 'Not Modified',
			305 => 'Use Proxy',
			306 => 'Reserved',
			307 => 'Temporary Redirect',
			308 => 'Permanent Redirect',

			400 => 'Bad Request',
			401 => 'Unauthorized',
			402 => 'Payment Required',
			403 => 'Forbidden',
			404 => 'Not Found',
			405 => 'Method Not Allowed',
			406 => 'Not Acceptable',
			407 => 'Proxy Authentication Required',
			408 => 'Request Timeout',
			409 => 'Conflict',
			410 => 'Gone',
			411 => 'Length Required',
			412 => 'Precondition Failed',
			413 => 'Request Entity Too Large',
			414 => 'Request-URI Too Long',
			415 => 'Unsupported Media Type',
			416 => 'Requested Range Not Satisfiable',
			417 => 'Expectation Failed',
			418 => 'I\'m a teapot',
			421 => 'Misdirected Request',
			422 => 'Unprocessable Entity',
			423 => 'Locked',
			424 => 'Failed Dependency',
			426 => 'Upgrade Required',
			428 => 'Precondition Required',
			429 => 'Too Many Requests',
			431 => 'Request Header Fields Too Large',
			451 => 'Unavailable For Legal Reasons',

			500 => 'Internal Server Error',
			501 => 'Not Implemented',
			502 => 'Bad Gateway',
			503 => 'Service Unavailable',
			504 => 'Gateway Timeout',
			505 => 'HTTP Version Not Supported',
			506 => 'Variant Also Negotiates',
			507 => 'Insufficient Storage',
			510 => 'Not Extended',
			511 => 'Network Authentication Required',
		);

		$description = (isset($statusCodes[$code]) ? $statusCodes[$code] : '');

		$protocol = $_SERVER['SERVER_PROTOCOL'];
		if (!in_array($protocol, array( 'HTTP/1.1', 'HTTP/2', 'HTTP/2.0'))) {
			$protocol = 'HTTP/1.0';
		}

		$header = "{$protocol} {$code} {$description}";
		@header($header, true, $code);
	}

	public static function doNotCache() {
		header("Pragma: no-cache");
		header("Cache-Control: no-cache, must-revalidate, private, max-age=0");
		header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); //In the past
		if (!defined('DONOTCACHEPAGE')) { define('DONOTCACHEPAGE', true); }
		if (!defined('DONOTCACHEDB')) { define('DONOTCACHEDB', true); }
		if (!defined('DONOTCDN')) { define('DONOTCDN', true); }
		if (!defined('DONOTCACHEOBJECT')) { define('DONOTCACHEOBJECT', true); }
	}
	
	/**
	 * Check if an IP address is in a network block
	 *
	 * @param string	$subnet	Single IP or subnet in CIDR notation (e.g. '192.168.100.0' or '192.168.100.0/22')
	 * @param string	$ip		IPv4 or IPv6 address in dot or colon notation
	 * @return boolean
	 */
	public static function subnetContainsIP($subnet, $ip) {
		static $_network_cache = array();
		static $_ip_cache = array();
		static $_masks = array(
			0 => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			1 => "\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			2 => "\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			3 => "\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			4 => "\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			5 => "\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			6 => "\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			7 => "\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			8 => "\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			9 => "\xff\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			10 => "\xff\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			11 => "\xff\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			12 => "\xff\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			13 => "\xff\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			14 => "\xff\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			15 => "\xff\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			16 => "\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			17 => "\xff\xff\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			18 => "\xff\xff\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			19 => "\xff\xff\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			20 => "\xff\xff\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			21 => "\xff\xff\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			22 => "\xff\xff\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			23 => "\xff\xff\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			24 => "\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			25 => "\xff\xff\xff\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			26 => "\xff\xff\xff\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			27 => "\xff\xff\xff\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			28 => "\xff\xff\xff\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			29 => "\xff\xff\xff\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			30 => "\xff\xff\xff\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			31 => "\xff\xff\xff\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			32 => "\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			33 => "\xff\xff\xff\xff\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			34 => "\xff\xff\xff\xff\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			35 => "\xff\xff\xff\xff\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			36 => "\xff\xff\xff\xff\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			37 => "\xff\xff\xff\xff\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			38 => "\xff\xff\xff\xff\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			39 => "\xff\xff\xff\xff\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			40 => "\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			41 => "\xff\xff\xff\xff\xff\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			42 => "\xff\xff\xff\xff\xff\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			43 => "\xff\xff\xff\xff\xff\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			44 => "\xff\xff\xff\xff\xff\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			45 => "\xff\xff\xff\xff\xff\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			46 => "\xff\xff\xff\xff\xff\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			47 => "\xff\xff\xff\xff\xff\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			48 => "\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			49 => "\xff\xff\xff\xff\xff\xff\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			50 => "\xff\xff\xff\xff\xff\xff\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			51 => "\xff\xff\xff\xff\xff\xff\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			52 => "\xff\xff\xff\xff\xff\xff\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			53 => "\xff\xff\xff\xff\xff\xff\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			54 => "\xff\xff\xff\xff\xff\xff\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			55 => "\xff\xff\xff\xff\xff\xff\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			56 => "\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00",
			57 => "\xff\xff\xff\xff\xff\xff\xff\x80\x00\x00\x00\x00\x00\x00\x00\x00",
			58 => "\xff\xff\xff\xff\xff\xff\xff\xc0\x00\x00\x00\x00\x00\x00\x00\x00",
			59 => "\xff\xff\xff\xff\xff\xff\xff\xe0\x00\x00\x00\x00\x00\x00\x00\x00",
			60 => "\xff\xff\xff\xff\xff\xff\xff\xf0\x00\x00\x00\x00\x00\x00\x00\x00",
			61 => "\xff\xff\xff\xff\xff\xff\xff\xf8\x00\x00\x00\x00\x00\x00\x00\x00",
			62 => "\xff\xff\xff\xff\xff\xff\xff\xfc\x00\x00\x00\x00\x00\x00\x00\x00",
			63 => "\xff\xff\xff\xff\xff\xff\xff\xfe\x00\x00\x00\x00\x00\x00\x00\x00",
			64 => "\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00",
			65 => "\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x00\x00\x00\x00\x00\x00",
			66 => "\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\x00\x00\x00\x00\x00\x00",
			67 => "\xff\xff\xff\xff\xff\xff\xff\xff\xe0\x00\x00\x00\x00\x00\x00\x00",
			68 => "\xff\xff\xff\xff\xff\xff\xff\xff\xf0\x00\x00\x00\x00\x00\x00\x00",
			69 => "\xff\xff\xff\xff\xff\xff\xff\xff\xf8\x00\x00\x00\x00\x00\x00\x00",
			70 => "\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00\x00\x00\x00\x00\x00\x00",
			71 => "\xff\xff\xff\xff\xff\xff\xff\xff\xfe\x00\x00\x00\x00\x00\x00\x00",
			72 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00",
			73 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x00\x00\x00\x00\x00",
			74 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\x00\x00\x00\x00\x00",
			75 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe0\x00\x00\x00\x00\x00\x00",
			76 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\x00\x00\x00\x00\x00\x00",
			77 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf8\x00\x00\x00\x00\x00\x00",
			78 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00\x00\x00\x00\x00\x00",
			79 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\x00\x00\x00\x00\x00\x00",
			80 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00",
			81 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x00\x00\x00\x00",
			82 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\x00\x00\x00\x00",
			83 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe0\x00\x00\x00\x00\x00",
			84 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\x00\x00\x00\x00\x00",
			85 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf8\x00\x00\x00\x00\x00",
			86 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00\x00\x00\x00\x00",
			87 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\x00\x00\x00\x00\x00",
			88 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00",
			89 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x00\x00\x00",
			90 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\x00\x00\x00",
			91 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe0\x00\x00\x00\x00",
			92 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\x00\x00\x00\x00",
			93 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf8\x00\x00\x00\x00",
			94 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00\x00\x00\x00",
			95 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\x00\x00\x00\x00",
			96 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00",
			97 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x00\x00",
			98 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\x00\x00",
			99 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe0\x00\x00\x00",
			100 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\x00\x00\x00",
			101 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf8\x00\x00\x00",
			102 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00\x00\x00",
			103 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\x00\x00\x00",
			104 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00",
			105 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x00",
			106 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\x00",
			107 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe0\x00\x00",
			108 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\x00\x00",
			109 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf8\x00\x00",
			110 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00\x00",
			111 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\x00\x00",
			112 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00",
			113 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00",
			114 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00",
			115 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe0\x00",
			116 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0\x00",
			117 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf8\x00",
			118 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00",
			119 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\x00",
			120 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00",
			121 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80",
			122 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0",
			123 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xe0",
			124 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf0",
			125 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf8",
			126 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfc",
			127 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe",
			128 => "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff",
		);
		/*
		 * The above is generated by:
		 * 
		   function gen_mask($prefix, $size = 128) {
				//Workaround to avoid overflow, split into four pieces			
				$mask_1 = (pow(2, $size / 4) - 1) ^ (pow(2, min($size / 4, max(0, 1 * $size / 4 - $prefix))) - 1);
				$mask_2 = (pow(2, $size / 4) - 1) ^ (pow(2, min($size / 4, max(0, 2 * $size / 4 - $prefix))) - 1);
				$mask_3 = (pow(2, $size / 4) - 1) ^ (pow(2, min($size / 4, max(0, 3 * $size / 4 - $prefix))) - 1);
				$mask_4 = (pow(2, $size / 4) - 1) ^ (pow(2, min($size / 4, max(0, 4 * $size / 4 - $prefix))) - 1);
				return ($mask_1 ? pack('N', $mask_1) : "\0\0\0\0") . ($mask_2 ? pack('N', $mask_2) : "\0\0\0\0") . ($mask_3 ? pack('N', $mask_3) : "\0\0\0\0") . ($mask_4 ? pack('N', $mask_4) : "\0\0\0\0");
			}
			
			$masks = array();
			for ($i = 0; $i <= 128; $i++) {
				$mask = gen_mask($i);
				$chars = str_split($mask);
				$masks[] = implode('', array_map(function($c) { return '\\x' . bin2hex($c); }, $chars));
			}
			
			echo 'array(' . "\n";
			foreach ($masks as $index => $m) {
				echo "\t{$index} => \"{$m}\",\n";
			}
			echo ')';
		 *
		 */
		
		if (isset($_network_cache[$subnet])) {
			list($bin_network, $prefix, $masked_network) = $_network_cache[$subnet];
			$mask = $_masks[$prefix];
		}
		else {
			list($network, $prefix) = array_pad(explode('/', $subnet, 2), 2, null);
			if (filter_var($network, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
				// If no prefix was supplied, 32 is implied for IPv4
				if ($prefix === null) {
					$prefix = 32;
				}
				
				// Validate the IPv4 network prefix
				if ($prefix < 0 || $prefix > 32) {
					return false;
				}
				
				// Increase the IPv4 network prefix to work in the IPv6 address space
				$prefix += 96;
			}
			else {
				// If no prefix was supplied, 128 is implied for IPv6
				if ($prefix === null) {
					$prefix = 128;
				}
				
				// Validate the IPv6 network prefix
				if ($prefix < 1 || $prefix > 128) {
					return false;
				}
			}
			$mask = $_masks[$prefix];
			$bin_network = self::inet_pton($network);
			$masked_network = $bin_network & $mask;
			$_network_cache[$subnet] = array($bin_network, $prefix, $masked_network);
		}
		
		if (isset($_ip_cache[$ip]) && isset($_ip_cache[$ip][$prefix])) {
			list($bin_ip, $masked_ip) = $_ip_cache[$ip][$prefix];
		}
		else {
			$bin_ip = self::inet_pton($ip);
			$masked_ip = $bin_ip & $mask;
			if (!isset($_ip_cache[$ip])) {
				$_ip_cache[$ip] = array();
			}
			$_ip_cache[$ip][$prefix] = array($bin_ip, $masked_ip);
		}
		
		return ($masked_ip === $masked_network);
	}

	/**
	 * Behaves exactly like PHP's parse_url but uses WP's compatibility fixes for early PHP 5 versions.
	 *
	 * @param string $url
	 * @param int $component
	 * @return mixed
	 */
	public static function parse_url($url, $component = -1) {
		$to_unset = array();
		$url = strval($url);

		if (substr($url, 0, 2) === '//') {
			$to_unset[] = 'scheme';
			$url = 'placeholder:' . $url;
		}
		elseif (substr($url, 0, 1) === '/') {
			$to_unset[] = 'scheme';
			$to_unset[] = 'host';
			$url = 'placeholder://placeholder' . $url;
		}

		$parts = @parse_url($url);

		if ($parts === false) { // Parsing failure
			return $parts;
		}

		// Remove the placeholder values
		foreach ($to_unset as $key) {
			unset($parts[$key]);
		}

		if ($component === -1) {
			return $parts;
		}

		$translation = array(
			PHP_URL_SCHEME   => 'scheme',
			PHP_URL_HOST     => 'host',
			PHP_URL_PORT     => 'port',
			PHP_URL_USER     => 'user',
			PHP_URL_PASS     => 'pass',
			PHP_URL_PATH     => 'path',
			PHP_URL_QUERY    => 'query',
			PHP_URL_FRAGMENT => 'fragment',
		);

		$key = false;
		if (isset($translation[$component])) {
			$key = $translation[$component];
		}

		if ($key !== false && is_array($parts) && isset($parts[$key])) {
			return $parts[$key];
		}

		return null;
	}

	/**
	 * Validates the URL, supporting both scheme-relative and path-relative formats.
	 *
	 * @param $url
	 * @return mixed
	 */
	public static function validate_url($url) {
		$url = strval($url);

		if (substr($url, 0, 2) === '//') {
			$url = 'placeholder:' . $url;
		}
		elseif (substr($url, 0, 1) === '/') {
			$url = 'placeholder://placeholder' . $url;
		}

		return filter_var($url, FILTER_VALIDATE_URL);
	}

	public static function rawPOSTBody() {
		// phpcs:ignore PHPCompatibility.Variables.RemovedPredefinedGlobalVariables.http_raw_post_dataDeprecatedRemoved
		global $HTTP_RAW_POST_DATA;
		// phpcs:ignore PHPCompatibility.Variables.RemovedPredefinedGlobalVariables.http_raw_post_dataDeprecatedRemoved
		if (empty($HTTP_RAW_POST_DATA)) { //Defined if always_populate_raw_post_data is on, PHP < 7, and the encoding type is not multipart/form-data
			$avoidPHPInput = false;
			try {
				$avoidPHPInput = wfWAF::getSharedStorageEngine() && wfWAF::getSharedStorageEngine()->getConfig('avoid_php_input', false);
			}
			catch (Exception $e) {
				//Ignore
			}
			
			if ($avoidPHPInput) { //Some custom PHP builds break reading from php://input
				//Reconstruct the best possible approximation of it from $_POST if populated -- won't help JSON or other raw payloads
				$data = http_build_query($_POST, '', '&');
			}
			else {
				$data = file_get_contents('php://input'); //Available if the encoding type is not multipart/form-data; it can only be read once prior to PHP 5.6 so we save it in $HTTP_RAW_POST_DATA for WP Core and others
				
				//For our purposes, we don't currently need the raw POST body if it's multipart/form-data since the data will be in $_POST/$_FILES. If we did, we could reconstruct the body here.
				
				// phpcs:ignore PHPCompatibility.Variables.RemovedPredefinedGlobalVariables.http_raw_post_dataDeprecatedRemoved
				$HTTP_RAW_POST_DATA = $data;
			}
		}
		else {
			// phpcs:ignore PHPCompatibility.Variables.RemovedPredefinedGlobalVariables.http_raw_post_dataDeprecatedRemoved
			$data =& $HTTP_RAW_POST_DATA;
		}
		return $data;
	}

	/**
	 * Returns the current timestamp, adjusted as needed to get close to what we consider a true timestamp. We use this
	 * because a significant number of servers are using a drastically incorrect time.
	 *
	 * @return int
	 */
	public static function normalizedTime() {
		$offset = 0;
		try {
			$offset = wfWAF::getInstance()->getStorageEngine()->getConfig('timeoffset_ntp', false, 'synced');
			if ($offset === false) {
				$offset = wfWAF::getInstance()->getStorageEngine()->getConfig('timeoffset_wf', false, 'synced');
			}
		}
		catch (Exception $e) {
			//Ignore
		}
		return time() + ((int) $offset);
	}

	/**
	 * @param $file
	 * @return array|bool
	 */
	public static function extractCredentialsWPConfig($file, &$return = array()) {
		$configContents = file_get_contents($file);
		$tokens = token_get_all($configContents);
		$tokens = array_values(array_filter($tokens, 'wfWAFUtils::_removeUnneededTokens'));

		$parsedConstants = array();
		$parsedVariables = array();
		for ($i = 0; $i < count($tokens); $i++) {
			$token = $tokens[$i];
			if (is_array($token)) {
				if (token_name($token[0]) === 'T_STRING' && strtolower($token[1]) === 'define') {
					$startParenToken = $tokens[$i + 1];
					$constantNameToken = $tokens[$i + 2];
					$commaToken = $tokens[$i + 3];
					$constantValueToken = $tokens[$i + 4];
					$endParenToken = $tokens[$i + 5];
					if (
						!is_array($startParenToken) && $startParenToken === '(' &&
						is_array($constantNameToken) && token_name($constantNameToken[0]) === 'T_CONSTANT_ENCAPSED_STRING' &&
						!is_array($commaToken) && $commaToken === ',' &&
						is_array($constantValueToken) && in_array(token_name($constantValueToken[0]), array('T_CONSTANT_ENCAPSED_STRING', 'T_STRING')) &&
						!is_array($endParenToken) && $endParenToken === ')'
					) {
						if (token_name($constantValueToken[0]) === 'T_STRING') {
							$value = defined($constantValueToken[1]) ? constant($constantValueToken[1]) : null;
						}
						else {
							$value = self::substr($constantValueToken[1], 1, -1);
						}
						$parsedConstants[self::substr($constantNameToken[1], 1, -1)] = $value;
					}
				}
				if (token_name($token[0]) === 'T_VARIABLE') {
					$assignmentToken = $tokens[$i + 1];
					$variableValueToken = $tokens[$i + 2];
					if (
						!is_array($assignmentToken) && $assignmentToken === '=' &&
						is_array($variableValueToken) && token_name($variableValueToken[0]) === 'T_CONSTANT_ENCAPSED_STRING'
					) {
						$parsedVariables[$token[1]] = self::substr($variableValueToken[1], 1, -1);
					}
				}
			}
		}

		$optionalConstants = array(
			'flags' => 'MYSQL_CLIENT_FLAGS'
		);
		$constants = array(
			'user'      => 'DB_USER',
			'pass'      => 'DB_PASSWORD',
			'database'  => 'DB_NAME',
			'host'      => 'DB_HOST',
			'charset'   => array('constant' => 'DB_CHARSET', 'default' => ''),
			'collation' => array('constant' => 'DB_COLLATE', 'default' => ''),
		);
		$constants += $optionalConstants;
		foreach ($constants as $key => $constant) {
			unset($defaultValue);
			if (is_array($constant)) {
				$defaultValue = $constant['default'];
				$constant = $constant['constant'];
			}
			
			if (array_key_exists($key, $return)) {
				continue;
			}
			else if (array_key_exists($constant, $parsedConstants)) {
				$return[$key] = $parsedConstants[$constant];
			}
			else if (!array_key_exists($key, $optionalConstants)){
				if (isset($defaultValue)) {
					$return[$key] = $defaultValue;
				}
				else {
					return ($return = false);
				}
			}
		}

		/**
		 * @see \wpdb::parse_db_host
		 */
		$socketPos = self::strpos($return['host'], ':/');
		if ($socketPos !== false) {
			$return['socket'] = self::substr($return['host'], $socketPos + 1);
			$return['host'] = self::substr($return['host'], 0, $socketPos);
		}

		if ( self::substr_count( $return['host'], ':' ) > 1 ) {
			$pattern = '#^(?:\[)?(?P<host>[0-9a-fA-F:]+)(?:\]:(?P<port>[\d]+))?#';
			$return['ipv6'] = true;
		} else {
			$pattern = '#^(?P<host>[^:/]*)(?::(?P<port>[\d]+))?#';
		}

		$matches = array();
		$result = preg_match($pattern, $return['host'], $matches);

		if (1 !== $result) {
			return ($return = false);
		}

		foreach (array('host', 'port') as $component) {
			if (!empty($matches[$component])) {
				$return[$component] = $matches[$component];
			}
		}

		if (!array_key_exists('tablePrefix', $return)) {
			if (array_key_exists('$table_prefix', $parsedVariables)) {
				$return['tablePrefix'] = $parsedVariables['$table_prefix'];
			} else {
				return ($return = false);
			}
		}
		return $return;
	}

	protected static function _removeUnneededTokens($token) {
		if (is_array($token)) {
			return !in_array(token_name($token[0]), array(
				'T_DOC_COMMENT', 'T_WHITESPACE'
			));
		}
		return true;
	}

	public static function isVersionBelow($target, $compared) {
		return $compared === null || version_compare($compared, $target, '<');
	}
	
	public static function isCli() {
		return (@php_sapi_name()==='cli') || !array_key_exists('REQUEST_METHOD', $_SERVER);
	}
}
}vendor/wordfence/wf-waf/src/lib/config.php000064400000004220150755146450014531 0ustar00<?php
if (defined('WFWAF_VERSION') && !defined('WFWAF_RUN_COMPLETE')) {

/**
 * Class wfWAFConfig provides a convenience interface for accessing the WAF's configuration
 * that does not throw exceptions. All exceptions are caught and, if WFWAF_DEBUG is true, logged 
 * to the server error log.
 */
class wfWAFConfig {
	public static function set($key, $val, $waf = null, $category = '') {
		if (!($waf instanceof wfWAF)) {
			$waf = wfWAF::getInstance();
		}
		
		try {
			$waf->getStorageEngine()->setConfig($key, $val, $category);
		}
		catch (Exception $e) {
			if (WFWAF_DEBUG) {
				error_log("Exception in " . __CLASS__ . "->" . __FUNCTION__ . ": " . $e->getMessage());
			}
		}
	}
	
	public static function get($key, $default = null, $waf = null, $category = '') {
		if (!($waf instanceof wfWAF)) {
			$waf = wfWAF::getInstance();
		}
		
		try {
			return $waf->getStorageEngine()->getConfig($key, $default, $category);
		}
		catch (Exception $e) {
			if (WFWAF_DEBUG) {
				error_log("Exception in " . __CLASS__ . "->" . __FUNCTION__ . ": " . $e->getMessage());
			}
		}
		return $default;
	}
	
	public static function unsetKey($key, $waf = null, $category = '') {
		if (!($waf instanceof wfWAF)) {
			$waf = wfWAF::getInstance();
		}
		
		try {
			$waf->getStorageEngine()->unsetConfig($key, $category);
		}
		catch (Exception $e) {
			if (WFWAF_DEBUG) {
				error_log("Exception in " . __CLASS__ . "->" . __FUNCTION__ . ": " . $e->getMessage());
			}
		}
	}
	
	public static function isInLearningMode($waf = null) {
		if (!($waf instanceof wfWAF)) {
			$waf = wfWAF::getInstance();
		}
		
		try {
			return $waf->getStorageEngine()->isInLearningMode();
		}
		catch (Exception $e) {
			if (WFWAF_DEBUG) {
				error_log("Exception in " . __CLASS__ . "->" . __FUNCTION__ . ": " . $e->getMessage());
			}
		}
		return false;
	}
	
	public static function isDisabled($waf = null) {
		if (!($waf instanceof wfWAF)) {
			$waf = wfWAF::getInstance();
		}
		
		try {
			return $waf->getStorageEngine()->isDisabled();
		}
		catch (Exception $e) {
			if (WFWAF_DEBUG) {
				error_log("Exception in " . __CLASS__ . "->" . __FUNCTION__ . ": " . $e->getMessage());
			}
		}
		return true;
	}
}
}
vendor/wordfence/wf-waf/src/lib/shutdown.php000064400000002455150755146450015147 0ustar00<?php

class wfShutdownFunction {

	private $callable;
	private $priority;

	public function __construct($callable, $priority) {
		$this->callable = $callable;
		$this->priority = $priority;
	}

	public function invoke() {
		call_user_func($this->callable);
	}

	public function getPriority() {
		return $this->priority;
	}

	public function __wakeup() {
		$this->callable = function() {};
	}

}

class wfShutdownRegistry {

	private static $instance = null;

	const PRIORITY_LAST = 100;

	private $functions = array();
	private $registered = false;

	public function handleShutdown() {
		usort($this->functions, function ($a, $b) {
			return $a->getPriority() - $b->getPriority();
		});
		foreach ($this->functions as $function) {
			$function->invoke();
		}
	}

	public function register($function, $priority = 50) {
		array_push($this->functions, new wfShutdownFunction($function, $priority));
		$this->registerSelf();
	}

	private function registerSelf() {
		if (!$this->registered) {
			register_shutdown_function(array($this, 'handleShutdown'));
			$this->registered = true;
		}
	}

	public function __wakeup() {
		$this->functions = array();
		$this->registered = false;
	}

	public static function getDefaultInstance() {
		if (self::$instance === null)
			self::$instance = new self();
		return self::$instance;
	}

}vendor/wordfence/wf-waf/src/lib/storage.php000064400000003543150755146450014737 0ustar00<?php
if (defined('WFWAF_VERSION') && !defined('WFWAF_RUN_COMPLETE')) {

interface wfWAFStorageInterface {
	const IP_BLOCKS_ALL = PHP_INT_MAX;
	const IP_BLOCKS_SINGLE = 1; //1 << 0
	const IP_BLOCKS_BLACKLIST = 2; //1 << 1
	
	public function hasPreviousAttackData($olderThan);

	public function hasNewerAttackData($newerThan);

	public function getAttackData();

	public function getAttackDataArray();

	public function getNewestAttackDataArray($newerThan);

	public function truncateAttackData();

	/**
	 * @param array $failedRules
	 * @param string $failedParamKey
	 * @param string $failedParamValue
	 * @param wfWAFRequestInterface $request
	 * @param mixed $_
	 * @return mixed
	 */
	public function logAttack($failedRules, $failedParamKey, $failedParamValue, $request, $_ = null);

	/**
	 * @param int $timestamp
	 * @param string $ip
	 * @param bool $ssl
	 * @param array $failedRuleIDs
	 * @param wfWAFRequestInterface|string $request
	 * @param mixed $_
	 * @return mixed
	 */
//	public function logAttack($timestamp, $ip, $ssl, $failedRuleIDs, $request, $_ = null);

	/**
	 * @param float $timestamp
	 * @param string $ip
	 * @return mixed
	 */
	public function blockIP($timestamp, $ip);

	public function isIPBlocked($ip);
	
	public function purgeIPBlocks($types = wfWAFStorageInterface::IP_BLOCKS_ALL);

	public function getConfig($key, $default = null, $category = '');

	public function setConfig($key, $value, $category = '');

	public function unsetConfig($key, $category = '');

	public function uninstall();
	
	//optional public function fileList();

	public function isInLearningMode();

	public function isDisabled();

	public function getRulesDSLCacheFile();

	public function isAttackDataFull();

	public function vacuum();

	public function getRules();

	public function setRules($rules);

	public function needsInitialRules();

	public function getDescription();
}
}
vendor/wordfence/wf-waf/src/lib/waf.php000064400000216034150755146450014051 0ustar00<?php
if (defined('WFWAF_VERSION') && !defined('WFWAF_RUN_COMPLETE')) {

class wfWAF {

	const AUTH_COOKIE = 'wfwaf-authcookie';

	/**
	 * @var wfWAF
	 */
	private static $instance;
	protected $blacklistedParams;
	protected $whitelistedParams;
	protected $variables = array();

	/**
	 * @return wfWAF
	 */
	public static function getInstance() {
		return self::$instance;
	}

	/**
	 * @param wfWAF $instance
	 */
	public static function setInstance($instance) {
		self::$instance = $instance;
	}
	
	/**
	 * @var wfWAFStorageInterface
	 */
	private static $sharedStorageEngine;
	private static $fallbackStorageEngine;
	
	/**
	 * @return wfWAFStorageInterface
	 */
	public static function getSharedStorageEngine() {
		return self::$sharedStorageEngine;
	}
	
	/**
	 * @param wfWAFStorageInterface $instance
	 */
	public static function setSharedStorageEngine($sharedStorageEngine, $fallback = false) {
		self::$sharedStorageEngine = $sharedStorageEngine;
		self::$fallbackStorageEngine = $fallback;
	}

	public static function hasFallbackStorageEngine() {
		return self::$fallbackStorageEngine;
	}

	protected $rulesFile;
	protected $trippedRules = array();
	protected $failedRules = array();
	protected $scores = array();
	protected $scoresXSS = array();
	protected $failScores = array();
	protected $rules = array();
	/**
	 * @var wfWAFRequestInterface
	 */
	private $request;
	/**
	 * @var wfWAFStorageInterface
	 */
	private $storageEngine;
	/**
	 * @var wfWAFEventBus
	 */
	private $eventBus;
	private $debug = array();
	private $disabledRules;
	private $publicKey = '-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzovUDp/qu7r6LT5d8dLL
H/87aRrCjUd6XtnG+afAPVfMKNp4u4L+UuYfw1RfpfquP/zLMGdfmJCUp/oJywkW
Rkqo+y7pDuqIFQ59dHvizmYQRvaZgvincBDpey5Ek9AFfB9fqYYnH9+eQw8eLdQi
h6Zsh8RsuxFM2BW6JD9Km7L5Lyxw9jU+lye7I3ICYtUOVxc3n3bJT2SiIwHK57pW
g/asJEUDiYQzsaa90YPOLdf1Ysz2rkgnCduQaEGz/RPhgUrmZfKwq8puEmkh7Yee
auEa+7b+FGTKs7dUo2BNGR7OVifK4GZ8w/ajS0TelhrSRi3BBQCGXLzUO/UURUAh
1QIDAQAB
-----END PUBLIC KEY-----';


	/**
	 * @param wfWAFRequestInterface $request
	 * @param wfWAFStorageInterface $storageEngine
	 * @param wfWAFEventBus $eventBus
	 * @param string|null $rulesFile
	 */
	public function __construct($request, $storageEngine, $eventBus = null) {
		$this->setRequest($request);
		$this->setStorageEngine($storageEngine);
		$this->setEventBus($eventBus ? $eventBus : new wfWAFEventBus);
	}
	
	public function isReadOnly() {
		$storage = $this->getStorageEngine();
		if ($storage instanceof wfWAFStorageFile) {
			return !wfWAFStorageFile::allowFileWriting();
		}
		
		return false;
	}

	public function getGlobal($global) {
		if (wfWAFUtils::strpos($global, '.') === false) {
			return null;
		}
		list($prefix, $_global) = explode('.', $global);
		switch ($prefix) {
			case 'request':
				$method = "get" . ucfirst($_global);
				if (method_exists('wfWAFRequestInterface', $method)) {
					return call_user_func(array(
						$this->getRequest(),
						$method,
					));
				}
				break;
			case 'server':
				$key = wfWAFUtils::strtoupper($_global);
				if (isset($_SERVER) && array_key_exists($key, $_SERVER)) {
					return $_SERVER[$key];
				}
				break;
		}
		return null;
	}
	
	public function repairCron() {
		if (!wfWAFStorageFile::allowFileWriting()) { return false; }
		
		$cron = $this->getStorageEngine()->getConfig('cron', null, 'livewaf');
		$changed = false;
		if (!is_array($cron)) {
			$cron = array();
		}
		
		if (!$this->_hasCronOfType($cron, 'wfWAFCronFetchRulesEvent')) {
			$cron[] = new wfWAFCronFetchRulesEvent(time() +
				(86400 * ($this->getStorageEngine()->getConfig('isPaid', null, 'synced') ? .5 : 7)));
			$changed = true;
		}
		else {
			foreach ($cron as $index => $c) {
				if ($c instanceof wfWAFCronFetchRulesEvent && $this->getStorageEngine()->getConfig('isPaid', null, 'synced')) {
					if ($c->getFireTime() > (time() + 43200)) {
						$cron[$index] = $c->reschedule();
						$changed = true;
						break;
					}
				}
			}
		}
		
		if (!$this->_hasCronOfType($cron, 'wfWAFCronFetchIPListEvent')) {
			$cron[] = new wfWAFCronFetchIPListEvent(time() + 86400);
			$changed = true;
		}
		
		if (!$this->_hasCronOfType($cron, 'wfWAFCronFetchBlacklistPrefixesEvent')) {
			$cron[] = new wfWAFCronFetchBlacklistPrefixesEvent(time() + 7200);
			$changed = true;
		}

		if (!$this->_hasCronOfType($cron, 'wfWAFCronFetchCookieRedactionPatternsEvent')) {
			$cron[] = new wfWAFCronFetchCookieRedactionPatternsEvent();
			$changed = true;
		}
		
		if ($changed) {
			$this->getStorageEngine()->setConfig('cron', $cron, 'livewaf');
		}
	}
	
	protected function _hasCronOfType($crons, $type) {
		foreach ($crons as $c) {
			if ($c instanceof $type) {
				return true;
			}
		}
		
		return false;
	}

	/**
	 *
	 */
	public function runCron() {
		if (!wfWAFStorageFile::allowFileWriting()) { return false; }
		
		$storage = $this->getStorageEngine();
		
		if ((
				$storage->getConfig('attackDataNextInterval', null, 'transient') === null ||
				$storage->getConfig('attackDataNextInterval', time() + 0xffff, 'transient') <= time()
			) &&
			$storage->hasPreviousAttackData(microtime(true) - (60 * 5))
		) {
			$this->sendAttackData();
		}
		$cron = $storage->getConfig('cron', null, 'livewaf');
		$run = array();
		$updated = false;
		if (is_array($cron)) {
			/** @var wfWAFCronEvent $event */
			foreach ($cron as $index => $event) {
				$event->setWaf($this);
				if ($event->isInPast()) {
					$run[$index] = $event;
					$newEvent = $event->reschedule();
					if ($newEvent instanceof wfWAFCronEvent && $newEvent !== $event) {
						$cron[$index] = $newEvent;
						$updated = true;
					} else {
						unset($cron[$index]);
					}
				}
			}
		}
		$storage->setConfig('cron', $cron, 'livewaf');
		
		if ($updated && method_exists($storage, 'saveConfig')) {
			$storage->saveConfig('livewaf');
		}
		
		foreach ($run as $index => $event) {
			$event->fire();
		}
	}

	/**
	 *
	 */
	public function run() {
		$this->loadRules();
		if ($this->isDisabled()) {
			$this->eventBus->wafDisabled();
			return;
		}
		$this->runMigrations();
		$request = $this->getRequest();
		if ($request->getBody('wfwaf-false-positive-verified') && $this->currentUserCanWhitelist() &&
			wfWAFUtils::hash_equals($request->getBody('wfwaf-false-positive-nonce'), $this->getAuthCookieValue('nonce', ''))
		) {
			$urlParams = wfWAFUtils::json_decode($request->getBody('wfwaf-false-positive-params'), true);
			if (is_array($urlParams) && $urlParams) {
				$whitelistCount = 0;
				foreach ($urlParams as $urlParam) {
					$path = isset($urlParam['path']) ? $urlParam['path'] : false;
					$paramKey = isset($urlParam['paramKey']) ? $urlParam['paramKey'] : false;
					$ruleID = isset($urlParam['ruleID']) ? $urlParam['ruleID'] : false;
					if ($path && $paramKey && $ruleID) {
						$this->whitelistRuleForParam($path, $paramKey, $ruleID, array(
							'timestamp'   => time(),
							'description' => wfWAFI18n::__('Allowlisted via false positive dialog'),
							'source'	  => 'false-positive',
							'ip'          => $request->getIP(),
						));
						$whitelistCount++;
					}
				}
				exit(sprintf(wfWAFI18n::__('Successfully allowlisted %d params.'), $whitelistCount));
			}
		}

		$ip = $this->getRequest()->getIP();
		if ($this->isIPBlocked($ip)) {
			$this->eventBus->prevBlocked($ip);
			$e = new wfWAFBlockException();
			$e->setRequest($this->getRequest());
			$e->setFailedRules(array('blocked'));
			$this->blockAction($e);
		}

		try {
			$this->eventBus->beforeRunRules();
			$this->runRules();
			$this->eventBus->afterRunRules();

		} catch (wfWAFAllowException $e) {
			// Do nothing
			$this->eventBus->allow($ip, $e);

		} catch (wfWAFBlockException $e) {
			$this->eventBus->block($ip, $e);
			$this->blockAction($e);

		} catch (wfWAFBlockXSSException $e) {
			$this->eventBus->blockXSS($ip, $e);
			$this->blockXSSAction($e);

		} catch (wfWAFBlockSQLiException $e) {
			$this->eventBus->blockSQLi($ip, $e);
			$this->blockAction($e);
			
		}

		$this->runCron();
		$this->repairCron();

		// Check if this is signed request and update ruleset.

		$ping = $this->getRequest()->getBody('ping256');
		$pingResponse = $this->getRequest()->getBody('ping_response');

		if ($ping && $pingResponse &&
			$this->verifyPing($ping) &&
			$this->verifySignedRequest($this->getRequest()->getBody('signature256'), $this->getStorageEngine()->getConfig('apiKey', null, 'synced'))
		) {
			// $this->updateRuleSet(base64_decode($this->getRequest()->body('ping')));
			$event = new wfWAFCronFetchRulesEvent(time() - 2);
			$event->setWaf($this);
			$event->fire();

			header('Content-type: text/plain');
			$pingResponse = preg_replace('/[a-zA-Z0-9]/', '', $this->getRequest()->getBody('ping_response'));
			exit('Success: ' . hash('sha256', $this->getStorageEngine()->getConfig('apiKey', null, 'synced') . $pingResponse));
		}
	}

	/**
	 *
	 */
	public function loadRules() {
		$storageEngine = $this->getStorageEngine();
		if ($storageEngine instanceof wfWAFStorageFile) {
			$logLevel = error_reporting();
			if (wfWAFUtils::isCli()) { //Done to suppress errors from WP-CLI when the WAF is run on environments that have a server level constant to use the MySQLi storage engine that is not in place when running from the CLI
				error_reporting(0); 
			}
			
			// Acquire lock on this file so we're not including it while it's being written in another process.
			$handle = fopen($storageEngine->getRulesFile(), 'r');
			$locked = $handle !== false && flock($handle, LOCK_SH);
			/** @noinspection PhpIncludeInspection */
			include $storageEngine->getRulesFile();
			if ($locked)
				flock($handle, LOCK_UN);
			if ($handle !== false)
				fclose($handle);
			
			if (wfWAFUtils::isCli()) {
				error_reporting($logLevel);
			}
		} else {
			$wafRules = $storageEngine->getRules();
			if (is_array($wafRules)) {
				if (array_key_exists('rules', $wafRules)) {
					/** @var wfWAFRule $rule */
					foreach ($wafRules['rules'] as $rule) {
						$rule->setWAF($this);
						$this->rules[intval($rule->getRuleID())] = $rule;
					}
				}

				$properties = array(
					'failScores',
					'variables',
					'whitelistedParams',
					'blacklistedParams',
				);
				foreach ($properties as $property) {
					if (array_key_exists($property, $wafRules)) {
						$this->{$property} = $wafRules[$property];
					}
				}
			}
		}
		if ( !defined( 'WFWAF_RULES_LOADED' ) ) {
			define( 'WFWAF_RULES_LOADED', true );
		}
	}

	private function handleRuleFailure($rule, $cause) {
		global $wf_waf_failure;
		error_log("An unexpected error occurred while processing WAF rule " . $rule->getRuleID() . ": {$cause}");
		$wf_waf_failure = [
			'rule_id' => $rule->getRuleID(),
			'throwable' => $cause
		];
	}

	/**
	 * @throws wfWAFAllowException|wfWAFBlockException|wfWAFBlockXSSException
	 */
	public function runRules() {
		global $wf_waf_failure;
		/**
		 * @var int $ruleID
		 * @var wfWAFRule $rule
		 */
		foreach ($this->getRules() as $ruleID => $rule) {
			if (!$this->isRuleDisabled($ruleID)) {
				try {
					$rule->evaluate();
				}
				catch (wfWAFRunException $e) {
					throw $e;
				}
				catch (Exception $e) { // In PHP 5, Throwable does not exist
					$this->handleRuleFailure($rule, $e);
				}
				catch (Throwable $t) {
					$this->handleRuleFailure($rule, $t);
				}
			}
		}

		$blockActions = array();
		foreach ($this->failedRules as $paramKey => $categories) {
			foreach ($categories as $category => $failedRules) {
				foreach ($failedRules as $failedRule) {
					/**
					 * @var wfWAFRule $rule
					 * @var wfWAFRuleComparisonFailure $failedComparison
					 */
					$rule = $failedRule['rule'];
					$failedComparison = $failedRule['failedComparison'];
					$action = $failedRule['action'];

					if ($action !== 'log') {
						$score = $rule->getScore();
						if ($failedComparison->hasMultiplier()) {
							$score *= $failedComparison->getMultiplier();
						}
						if (!isset($this->failScores[$category])) {
							$this->failScores[$category] = 100;
						}
						if (!isset($this->scores[$paramKey][$category])) {
							$this->scores[$paramKey][$category] = 0;
						}
						$this->scores[$paramKey][$category] += $score;
						if ($this->scores[$paramKey][$category] >= $this->failScores[$category]) {
							$blockActions[$category] = array(
								'paramKey'         => $paramKey,
								'score'            => $this->scores[$paramKey][$category],
								'action'           => $action,
								'rule'             => $rule,
								'failedComparison' => $failedComparison,
							);
						}
						if (defined('WFWAF_DEBUG') && WFWAF_DEBUG) {
							$this->debug[] = sprintf("%s tripped %s for %s->%s('%s'). Score %d/%d", $paramKey, $action,
								$category, $failedComparison->getAction(), $failedComparison->getExpected(),
								$this->scores[$paramKey][$category], $this->failScores[$category]);
						}
					}
				}
			}
		}

		uasort($blockActions, array($this, 'sortBlockActions'));
		foreach ($blockActions as $blockAction) {
			call_user_func(array($this, $blockAction['action']), $blockAction['rule'], $blockAction['failedComparison'], false);
		}
	}

	/**
	 * @param array $a
	 * @param array $b
	 * @return int
	 */
	private function sortBlockActions($a, $b) {
		if ($a['score'] == $b['score']) {
			return 0;
		}
		return ($a['score'] > $b['score']) ? -1 : 1;
	}

	protected function runMigrations() {
		if (!wfWAFStorageFile::allowFileWriting()) { return false; }
		
		$storageEngine = $this->getStorageEngine();
		$currentVersion = $storageEngine->getConfig('version');
		if (wfWAFUtils::isVersionBelow(WFWAF_VERSION, $currentVersion)) {
			if (!$currentVersion) {
				$cron = array(
					new wfWAFCronFetchRulesEvent(time() +
						(86400 * ($this->getStorageEngine()->getConfig('isPaid', null, 'synced') ? .5 : 7))),
					new wfWAFCronFetchIPListEvent(time() + 86400),
					new wfWAFCronFetchBlacklistPrefixesEvent(time() + 7200),
				);
				$this->getStorageEngine()->setConfig('cron', $cron, 'livewaf');
			}

			// Any migrations to newer versions go here.
			if ($currentVersion === '1.0.0') {
				$cron = (array) $this->getStorageEngine()->getConfig('cron', null, 'livewaf');
				if (is_array($cron)) {
					$cron[] = new wfWAFCronFetchIPListEvent(time() + 86400);
				}
				$this->getStorageEngine()->setConfig('cron', $cron, 'livewaf');
			}
			
			if (wfWAFUtils::isVersionBelow('1.0.2', $currentVersion)) {
				$event = new wfWAFCronFetchRulesEvent(time() - 2);
				$event->setWaf($this);
				$event->fire();
			}
			
			if (wfWAFUtils::isVersionBelow('1.0.3', $currentVersion)) {
				$this->getStorageEngine()->purgeIPBlocks();
				
				$cron = (array) $this->getStorageEngine()->getConfig('cron', null, 'livewaf');
				if (is_array($cron)) {
					$cron[] = new wfWAFCronFetchBlacklistPrefixesEvent(time() + 7200);
				}
				$this->getStorageEngine()->setConfig('cron', $cron, 'livewaf');
				
				$event = new wfWAFCronFetchBlacklistPrefixesEvent(time() - 2);
				$event->setWaf($this);
				$event->fire();
			}
			
			if (wfWAFUtils::isVersionBelow('1.0.4', $currentVersion)) {
				$movedKeys = array(
					'whitelistedURLParams' => 'livewaf',
					'cron' => 'livewaf',
					'attackDataNextInterval' => 'transient',
					'rulesLastUpdated' => 'transient',
					'premiumCount' => 'transient',
					'filePatterns' => 'transient',
					'filePatternCommonStrings' => 'transient',
					'filePatternIndexes' => 'transient',
					'signaturesLastUpdated' => 'transient',
					'signaturePremiumCount' => 'transient',
					'createInitialRulesDelay' => 'transient',
					'watchedIPs' => 'transient',
					'blockedPrefixes' => 'transient',
					'blacklistAllowedCache' => 'transient',
					'apiKey' => 'synced',
					'isPaid' => 'synced',
					'siteURL' => 'synced',
					'homeURL' => 'synced',
					'whitelistedIPs' => 'synced',
					'howGetIPs' => 'synced',
					'howGetIPs_trusted_proxies' => 'synced',
					'howGetIPs_trusted_proxies_unified' => 'synced',
					'pluginABSPATH' => 'synced',
					'other_WFNet' => 'synced',
					'serverIPs' => 'synced',
					'blockCustomText' => 'synced',
					'timeoffset_wf' => 'synced',
					'advancedBlockingEnabled' => 'synced',
					'disableWAFIPBlocking' => 'synced',
					'patternBlocks' => 'synced',
					'countryBlocks' => 'synced',
					'otherBlocks' => 'synced',
					'lockouts' => 'synced',
				);
				foreach ($movedKeys as $key => $category) {
					$value = $this->getStorageEngine()->getConfig($key, null, '');
					$this->getStorageEngine()->setConfig($key, $value, $category);

					if ($this->getStorageEngine() instanceof wfWAFStorageMySQL &&
						$this->getStorageEngine()->getStorageTable($category) === $this->getStorageEngine()->getStorageTable('')
					) {
						continue;
					}

					$this->getStorageEngine()->unsetConfig($key, '');
				}
			}
			if (wfWAFUtils::isVersionBelow('1.0.5', $currentVersion)) {
				$cron = $this->getStorageEngine()->getConfig('cron', array(), 'livewaf');
				$cron[] = new wfWAFCronFetchCookieRedactionPatternsEvent();
				$this->getStorageEngine()->setConfig('cron', $cron, 'livewaf');
			}
			
			$this->getStorageEngine()->setConfig('version', WFWAF_VERSION);
		}
	}

	/**
	 * @param wfWAFRule $rule
	 */
	public function tripRule($rule) {
		$this->trippedRules[] = $rule;
		$action = $rule->getAction();
		$scores = $rule->getScore();
		$categories = $rule->getCategory();
		if (is_array($categories)) {
			for ($i = 0; $i < count($categories); $i++) {
				if (is_array($action) && !empty($action[$i])) {
					$a = $action[$i];
				} else {
					$a = $action;
				}
				if ($this->isAllowedAction($a)) {
					$r = clone $rule;
					$r->setScore($scores[$i]);
					$r->setCategory($categories[$i]);
					/** @var wfWAFRuleComparisonFailure $failed */
					foreach ($r->getComparisonGroup()->getFailedComparisons() as $failed) {
						call_user_func(array($this, $a), $r, $failed);
					}
				}
			}
		} else {
			if ($this->isAllowedAction($action)) {
				/** @var wfWAFRuleComparisonFailure $failed */
				foreach ($rule->getComparisonGroup()->getFailedComparisons() as $failed) {
					call_user_func(array($this, $action), $rule, $failed);
				}
			}
		}
	}

	/**
	 * @return bool
	 */
	public function isInLearningMode() {
		return $this->getStorageEngine()->isInLearningMode();
	}

	/**
	 * @return bool
	 */
	public function isDisabled() {
		return $this->getStorageEngine()->isDisabled() || !WFWAF_ENABLED;
	}

	public function hasOpenSSL() {
		return function_exists('openssl_verify');
	}
	
	public function verifyPing($ping, $algorithm = 'sha256') {
		$hash = hash($algorithm, $this->getStorageEngine()->getConfig('apiKey', null, 'synced'));
		return wfWAFUtils::hash_equals($ping, $hash);
	}

	/**
	 * @param string $signature
	 * @param string $data
	 * @return bool
	 */
	public function verifySignedRequest($signature, $data, $algorithm = OPENSSL_ALGO_SHA256) {
		if (!$this->hasOpenSSL()) {
			return false;
		}
		$valid = openssl_verify($data, $signature, $this->getPublicKey(), $algorithm);
		return $valid === 1;
	}

	/**
	 * @param string $hash
	 * @param string $data
	 * @return bool
	 */
	public function verifyHashedRequest($hash, $data) {
		if ($this->hasOpenSSL()) {
			return false;
		}
		return wfWAFUtils::hash_equals($hash,
			wfWAFUtils::hash_hmac('sha1', $data, $this->getStorageEngine()->getConfig('apiKey', null, 'synced')));
	}

	/**
	 * @return array
	 */
	public function getMalwareSignatures() {
		try {
			$encoded = $this->getStorageEngine()->getConfig('filePatterns', null, 'transient');
			if (empty($encoded)) {
				return array();
			}
			
			$authKey = $this->getStorageEngine()->getConfig('authKey');
			$encoded = base64_decode($encoded);
			$paddedKey = wfWAFUtils::substr(str_repeat($authKey, ceil(strlen($encoded) / strlen($authKey))), 0, strlen($encoded));
			$json = $encoded ^ $paddedKey;
			$signatures = wfWAFUtils::json_decode($json, true);
			if (!is_array($signatures)) {
				return array();
			}
			return $signatures;
		}
		catch (Exception $e) {
			//Ignore
		}
		return array();
	}
	
	/**
	 * @param array $signatures
	 * @param bool $updateLastUpdatedTimestamp
	 */
	public function setMalwareSignatures($signatures, $updateLastUpdatedTimestamp = true) {
		try {
			if (!is_array($signatures)) {
				$signatures = array();
			}
			
			$authKey = $this->getStorageEngine()->getConfig('authKey');
			if (strlen($authKey) === 0) {
				return;
			}

			$json = wfWAFUtils::json_encode($signatures);
			$paddedKey = wfWAFUtils::substr(str_repeat($authKey, ceil(strlen($json) / strlen($authKey))), 0, strlen($json));
			$payload = $json ^ $paddedKey;
			$this->getStorageEngine()->setConfig('filePatterns', base64_encode($payload), 'transient');
			
			if ($updateLastUpdatedTimestamp) {
				$this->getStorageEngine()->setConfig('signaturesLastUpdated', is_int($updateLastUpdatedTimestamp) ? $updateLastUpdatedTimestamp : time(), 'transient');
			}
		}
		catch (Exception $e) {
			//Ignore
		}
	}
	
	/**
	 * @return array
	 */
	public function getMalwareSignatureCommonStrings() {
		try {
			$encoded = $this->getStorageEngine()->getConfig('filePatternCommonStrings', null, 'transient');
			if (empty($encoded)) {
				return array();
			}
			
			//Grab the list of words
			$authKey = $this->getStorageEngine()->getConfig('authKey');
			if (strlen($authKey) === 0) {
				return array();
			}

			$encoded = base64_decode($encoded);
			$paddedKey = wfWAFUtils::substr(str_repeat($authKey, ceil(strlen($encoded) / strlen($authKey))), 0, strlen($encoded));
			$json = $encoded ^ $paddedKey;
			$commonStrings = wfWAFUtils::json_decode($json, true);
			if (!is_array($commonStrings)) {
				return array();
			}
			
			//Grab the list of indexes
			$json = $this->getStorageEngine()->getConfig('filePatternIndexes', null, 'transient');
			if (empty($json)) {
				return array();
			}
			$signatureIndexes = wfWAFUtils::json_decode($json, true);
			if (!is_array($signatureIndexes)) {
				return array();
			}
			
			//Reconcile the list of indexes and transform into a list of words
			$signatureCommonWords = array();
			foreach ($signatureIndexes as $indexSet) {
				$entry = array();
				foreach ($indexSet as $i) {
					if (isset($commonStrings[$i])) {
						$entry[] = &$commonStrings[$i];
					}
				}
				$signatureCommonWords[] = $entry;
			}
			
			return $signatureCommonWords;
		}
		catch (Exception $e) {
			//Ignore
		}
		return array();
	}
	
	/**
	 * @param array $commonStrings
	 * @param array $signatureIndexes
	 */
	public function setMalwareSignatureCommonStrings($commonStrings, $signatureIndexes) {
		try {
			if (!is_array($commonStrings)) {
				$commonStrings = array();
			}
			
			if (!is_array($signatureIndexes)) {
				$signatureIndexes = array();
			}
			
			$authKey = $this->getStorageEngine()->getConfig('authKey');
			if (strlen($authKey) === 0) {
				return;
			}

			$json = wfWAFUtils::json_encode($commonStrings);
			$paddedKey = wfWAFUtils::substr(str_repeat($authKey, ceil(strlen($json) / strlen($authKey))), 0, strlen($json));
			$payload = $json ^ $paddedKey;
			$this->getStorageEngine()->setConfig('filePatternCommonStrings', base64_encode($payload), 'transient');
			
			$payload = wfWAFUtils::json_encode($signatureIndexes);
			$this->getStorageEngine()->setConfig('filePatternIndexes', $payload, 'transient');
		}
		catch (Exception $e) {
			//Ignore
		}
	}

	/**
	 * @param $rules
	 * @param bool|int $updateLastUpdatedTimestamp
	 * @throws wfWAFBuildRulesException
	 */
	public function updateRuleSet($rules, $updateLastUpdatedTimestamp = true) {
		try {
			if (is_string($rules)) {
				$ruleString = $rules;
				$parser = new wfWAFRuleParser(new wfWAFRuleLexer($rules), $this);
				$rules = $parser->parse();
			}

			$storageEngine = $this->getStorageEngine();
			if ($storageEngine instanceof wfWAFStorageFile) {
				if ((!is_file($storageEngine->getRulesFile()) && !is_writeable(dirname($storageEngine->getRulesFile()))) ||
					(is_file($storageEngine->getRulesFile()) && !is_writable($storageEngine->getRulesFile()))
				) {
					throw new wfWAFBuildRulesException('Rules file not writable.');
				}

				wfWAFStorageFile::atomicFilePutContents($storageEngine->getRulesFile(), sprintf(<<<PHP
<?php
if (!defined('WFWAF_VERSION') || defined('WFWAF_RULES_LOADED')) {
	exit('Access denied');
}
/*
	This file is generated automatically. Any changes made will be lost.
*/

%s?>
PHP
				, $this->buildRuleSet($rules)), 'rules');
			if (!empty($ruleString) && WFWAF_DEBUG && !file_exists($this->getStorageEngine()->getRulesDSLCacheFile())) {
				wfWAFStorageFile::atomicFilePutContents($this->getStorageEngine()->getRulesDSLCacheFile(), $ruleString, 'rules');
			}

			} else {
				$this->getStorageEngine()->setRules($rules);
			}

			if ($updateLastUpdatedTimestamp) {
				$this->getStorageEngine()->setConfig('rulesLastUpdated', is_int($updateLastUpdatedTimestamp) ? $updateLastUpdatedTimestamp : time(), 'transient');
			}

		} catch (wfWAFBuildRulesException $e) {
			// Do something.
			throw $e;
		}
	}

	/**
	 * @param string|array $rules
	 * @return string
	 * @throws wfWAFException
	 */
	public function buildRuleSet($rules) {
		if (is_string($rules)) {
			$parser = new wfWAFRuleParser(new wfWAFRuleLexer($rules), $this);
			$rules = $parser->parse();
		}

		if (!array_key_exists('rules', $rules) || !is_array($rules['rules'])) {
			throw new wfWAFBuildRulesException('Invalid rule format passed to buildRuleSet.');
		}
		$exportedCode = '';

		if (isset($rules['scores']) && is_array($rules['scores'])) {
			foreach ($rules['scores'] as $category => $score) {
				$exportedCode .= sprintf("\$this->failScores[%s] = %d;\n", var_export($category, true), $score);
			}
			$exportedCode .= "\n";
		}

		if (isset($rules['variables']) && is_array($rules['variables'])) {
			foreach ($rules['variables'] as $var => $value) {
				$exportedCode .= sprintf("\$this->variables[%s] = %s;\n", var_export($var, true),
					($value instanceof wfWAFRuleVariable) ? $value->render() : var_export($value, true));
			}
			$exportedCode .= "\n";
		}

		foreach (array('blacklistedParams', 'whitelistedParams') as $key) {
			if (isset($rules[$key]) && is_array($rules[$key])) {
				/** @var wfWAFRuleParserURLParam $urlParam */
				foreach ($rules[$key] as $urlParam) {
					if ($urlParam->getConditional()) {
						
						$exportedCode .= sprintf("\$this->{$key}[%s][] = array(\n%s => %s,\n%s => %s,\n%s => %s\n);\n", var_export($urlParam->getParam(), true), 
							var_export('url', true), var_export($urlParam->getUrl(), true),
							var_export('rules', true), var_export($urlParam->getRules(), true),
							var_export('conditional', true), $urlParam->getConditional()->render());
					}
					else {
						if ($urlParam->getRules()) {
							$url = array(
								'url'   => $urlParam->getUrl(),
								'rules' => $urlParam->getRules(),
							);
						} else {
							$url = $urlParam->getUrl();
						}
						
						$exportedCode .= sprintf("\$this->{$key}[%s][] = %s;\n", var_export($urlParam->getParam(), true), 
							var_export($url, true));
					}
				}
				$exportedCode .= "\n";
			}
		}

		/** @var wfWAFRule $rule */
		foreach ($rules['rules'] as $rule) {
			$rule->setWAF($this);
			$exportedCode .= sprintf(<<<HTML
\$this->rules[%d] = %s;

HTML
				,
				$rule->getRuleID(),
				$rule->render()
			);
		}

		return $exportedCode;
	}

	/**
	 * @param $rules
	 * @return wfWAFRuleComparisonGroup
	 * @throws wfWAFBuildRulesException
	 */
	protected function _buildRuleSet($rules) {
		$ruleGroup = new wfWAFRuleComparisonGroup();
		foreach ($rules as $rule) {
			if (!array_key_exists('type', $rule)) {
				throw new wfWAFBuildRulesException('Invalid rule: type not set.');
			}
			switch ($rule['type']) {
				case 'comparison_group':
					if (!array_key_exists('comparisons', $rule) || !is_array($rule['comparisons'])) {
						throw new wfWAFBuildRulesException('Invalid rule format passed to _buildRuleSet.');
					}
					$ruleGroup->add($this->_buildRuleSet($rule['comparisons']));
					break;

				case 'comparison':
					if (array_key_exists('parameter', $rule)) {
						$rule['parameters'] = array($rule['parameter']);
					}

					foreach (array('action', 'expected', 'parameters') as $ruleRequirement) {
						if (!array_key_exists($ruleRequirement, $rule)) {
							throw new wfWAFBuildRulesException("Invalid rule: $ruleRequirement not set.");
						}
					}

					$ruleGroup->add(new wfWAFRuleComparison($this, $rule['action'], $rule['expected'], $rule['parameters']));
					break;

				case 'operator':
					if (!array_key_exists('operator', $rule)) {
						throw new wfWAFBuildRulesException('Invalid rule format passed to _buildRuleSet. operator not passed.');
					}
					$ruleGroup->add(new wfWAFRuleLogicalOperator($rule['operator']));
					break;

				default:
					throw new wfWAFBuildRulesException("Invalid rule type [{$rule['type']}] passed to _buildRuleSet.");
			}
		}
		return $ruleGroup;
	}

	public function isRuleDisabled($ruleID) {
		if ($this->disabledRules === null) {
			$this->disabledRules = $this->getStorageEngine()->getConfig('disabledRules');
			if (!is_array($this->disabledRules)) {
				$this->disabledRules = array();
			}
		}
		return !empty($this->disabledRules[$ruleID]);
	}
	
	public function getDisabledRuleIDs() {
		if ($this->disabledRules === null) {
			$this->disabledRules = $this->getStorageEngine()->getConfig('disabledRules');
			if (!is_array($this->disabledRules)) {
				$this->disabledRules = array();
			}
		}
		
		$ruleIDs = array();
		foreach ($this->disabledRules as $id => $value) {
			if (!empty($value)) {
				$ruleIDs[] = $id;
			}
		}
		return $ruleIDs;
	}

	/**
	 * @param wfWAFRule $rule
	 * @param wfWAFRuleComparisonFailure $failedComparison
	 * @throws wfWAFBlockException
	 */
	public function fail($rule, $failedComparison) {
		$category = $rule->getCategory();
		$paramKey = $failedComparison->getParamKey();
		$this->failedRules[$paramKey][$category][] = array(
			'rule'             => $rule,
			'failedComparison' => $failedComparison,
			'action'           => 'block',
		);
	}

	/**
	 * @param wfWAFRule $rule
	 * @param wfWAFRuleComparisonFailure $failedComparison
	 * @throws wfWAFBlockException
	 */
	public function failXSS($rule, $failedComparison) {
		$category = $rule->getCategory();
		$paramKey = $failedComparison->getParamKey();
		$this->failedRules[$paramKey][$category][] = array(
			'rule'             => $rule,
			'failedComparison' => $failedComparison,
			'action'           => 'blockXSS',
		);
	}

	/**
	 * @param wfWAFRule $rule
	 * @param wfWAFRuleComparisonFailure $failedComparison
	 * @throws wfWAFBlockException
	 */
	public function failSQLi($rule, $failedComparison) {
		$category = $rule->getCategory();
		$paramKey = $failedComparison->getParamKey();
		$this->failedRules[$paramKey][$category][] = array(
			'rule'             => $rule,
			'failedComparison' => $failedComparison,
			'action'           => 'blockSQLi',
		);
	}

	/**
	 * @param wfWAFRule $rule
	 * @param wfWAFRuleComparisonFailure $failedComparison
	 * @throws wfWAFAllowException
	 */
	public function allow($rule, $failedComparison) {
		// Exclude this request from further blocking
		$e = new wfWAFAllowException();
		$e->setFailedRules(array($rule));
		$e->setParamKey($failedComparison->getParamKey());
		$e->setParamValue($failedComparison->getParamValue());
		$e->setRequest($this->getRequest());
		throw $e;
	}

	/**
	 * @param wfWAFRule $rule
	 * @param wfWAFRuleComparisonFailure $failedComparison
	 * @param bool $updateFailedRules
	 * @throws wfWAFBlockException
	 */
	public function block($rule, $failedComparison, $updateFailedRules = true) {
		$paramKey = $failedComparison->getParamKey();
		$category = $rule->getCategory();

		if ($updateFailedRules) {
			$this->failedRules[$paramKey][$category][] = array(
				'rule'             => $rule,
				'failedComparison' => $failedComparison,
				'action'           => 'block',
			);
		}

		$e = new wfWAFBlockException();
		$e->setFailedRules(array($rule));
		$e->setParamKey($failedComparison->getParamKey());
		$e->setParamValue($failedComparison->getParamValue());
		$e->setRequest($this->getRequest());
		throw $e;
	}

	/**
	 * @param wfWAFRule $rule
	 * @param wfWAFRuleComparisonFailure $failedComparison
	 * @param bool $updateFailedRules
	 * @throws wfWAFBlockXSSException
	 */
	public function blockXSS($rule, $failedComparison, $updateFailedRules = true) {
		$paramKey = $failedComparison->getParamKey();
		$category = $rule->getCategory();

		if ($updateFailedRules) {
			$this->failedRules[$paramKey][$category][] = array(
				'rule'             => $rule,
				'failedComparison' => $failedComparison,
				'action'           => 'blockXSS',
			);
		}
		$e = new wfWAFBlockXSSException();
		$e->setFailedRules(array($rule));
		$e->setParamKey($failedComparison->getParamKey());
		$e->setParamValue($failedComparison->getParamValue());
		$e->setRequest($this->getRequest());
		throw $e;
	}

	/**
	 * @param wfWAFRule $rule
	 * @param wfWAFRuleComparisonFailure $failedComparison
	 * @param bool $updateFailedRules
	 * @throws wfWAFBlockSQLiException
	 */
	public function blockSQLi($rule, $failedComparison, $updateFailedRules = true) {
		// Verify the param looks like SQLi to help reduce false positives.
		if (!wfWAFSQLiParser::testForSQLi($failedComparison->getParamValue())) {
			return;
		}

		$paramKey = $failedComparison->getParamKey();
		$category = $rule->getCategory();

		if ($updateFailedRules) {
			$this->failedRules[$paramKey][$category][] = array(
				'rule'             => $rule,
				'failedComparison' => $failedComparison,
				'action'           => 'blockXSS',
			);
		}
		$e = new wfWAFBlockSQLiException();
		$e->setFailedRules(array($rule));
		$e->setParamKey($failedComparison->getParamKey());
		$e->setParamValue($failedComparison->getParamValue());
		$e->setRequest($this->getRequest());
		throw $e;
	}

	/**
	 * @param wfWAFRule $rule
	 * @param wfWAFRuleComparisonFailure $failedComparison
	 * @param bool $updateFailedRules
	 */
	public function log($rule, $failedComparison, $updateFailedRules = true) {
		$paramKey = $failedComparison->getParamKey();
		$category = $rule->getCategory();

		if ($updateFailedRules) {
			$this->failedRules[$paramKey][$category][] = array(
				'rule'             => $rule,
				'failedComparison' => $failedComparison,
				'action'           => 'log',
			);
		}

		$event=new wfWAFLogEvent(
			array($rule),
			$failedComparison->getParamKey(),
			$failedComparison->getParamValue(),
			$this->getRequest()
		);

		$this->recordLogEvent($event);
	}

	public function recordLogEvent($event) {
		$this->eventBus->log($this->getRequest()->getIP(), $event);
		$this->logAction($event);
	}

	/**
	 * @todo Hook up $httpCode
	 * @param wfWAFBlockException $e
	 * @param int $httpCode
	 */
	public function blockAction($e, $httpCode = 403, $redirect = false, $template = null) {
		$this->getStorageEngine()->logAttack($e->getFailedRules(), $e->getParamKey(), $e->getParamValue(), $e->getRequest(), $e->getRequest()->getMetadata());
		
		if ($redirect) {
			wfWAFUtils::redirect($redirect); // exits and emits no cache headers
		}
		
		if ($httpCode == 503) {
			wfWAFUtils::statusHeader(503);
			wfWAFUtils::doNotCache();
			if ($secsToGo = $e->getRequest()->getMetadata('503Time')) {
				header('Retry-After: ' . $secsToGo);
			}
			exit($this->getUnavailableMessage($e->getRequest()->getMetadata('503Reason'), $template));
		}
		
		header('HTTP/1.0 403 Forbidden');
		wfWAFUtils::doNotCache();
		exit($this->getBlockedMessage($template));
	}

	/**
	 * @todo Hook up $httpCode
	 * @param wfWAFBlockXSSException $e
	 * @param int $httpCode
	 */
	public function blockXSSAction($e, $httpCode = 403, $redirect = false) {
		$this->getStorageEngine()->logAttack($e->getFailedRules(), $e->getParamKey(), $e->getParamValue(), $e->getRequest(), $e->getRequest()->getMetadata());
		
		if ($redirect) {
			wfWAFUtils::redirect($redirect); // exits and emits no cache headers
		}
		
		if ($httpCode == 503) {
			wfWAFUtils::statusHeader(503);
			wfWAFUtils::doNotCache();
			if ($secsToGo = $e->getRequest()->getMetadata('503Time')) {
				header('Retry-After: ' . $secsToGo);
			}
			exit($this->getUnavailableMessage($e->getRequest()->getMetadata('503Reason')));
		}
		
		header('HTTP/1.0 403 Forbidden');
		wfWAFUtils::doNotCache();
		exit($this->getBlockedMessage());
	}
	
	public function logAction($event) {
		$failedRules = array_merge(array('logged'), $event->getFailedRules());
		$this->getStorageEngine()->logAttack($failedRules, $event->getParamKey(), $event->getParamValue(), $this->getRequest());
	}

	/**
	 * @return string
	 */
	public function getBlockedMessage($template = null) {
		if ($template === null) {
			if ($this->currentUserCanWhitelist()) {
				$template = '403-roadblock';
			}
			else {
				$template = '403';
			}
		}
		try {
			$homeURL = wfWAF::getInstance()->getStorageEngine()->getConfig('homeURL', null, 'synced');
			$siteURL = wfWAF::getInstance()->getStorageEngine()->getConfig('siteURL', null, 'synced');
			$customText = wfWAF::getInstance()->getStorageEngine()->getConfig('blockCustomText', null, 'synced');
			$errorNonce = '';
			if ($authCookie = wfWAF::getInstance()->parseAuthCookie()) {
				$errorNonce = wfWAF::getInstance()->getStorageEngine()->getConfig('errorNonce_' . (int) $authCookie['userID'], '', 'synced');
			}
		}
		catch (Exception $e) {
			//Do nothing
		}
		
		return wfWAFView::create($template, array(
			'waf' => $this,
			'homeURL' => $homeURL,
			'siteURL' => $siteURL,
			'customText' => $customText,
			'errorNonce' => $errorNonce,
		))->render();
	}
	
	/**
	 * @return string
	 */
	public function getUnavailableMessage($reason = '', $template = null) {
		if ($template === null) { $template = '503'; }
		try {
			$homeURL = wfWAF::getInstance()->getStorageEngine()->getConfig('homeURL', null, 'synced');
			$siteURL = wfWAF::getInstance()->getStorageEngine()->getConfig('siteURL', null, 'synced');
			$customText = wfWAF::getInstance()->getStorageEngine()->getConfig('blockCustomText', null, 'synced');
			$errorNonce = '';
			if ($authCookie = wfWAF::getInstance()->parseAuthCookie()) {
				$errorNonce = wfWAF::getInstance()->getStorageEngine()->getConfig('errorNonce_' . (int) $authCookie['userID'], '', 'synced');
			}
		}
		catch (Exception $e) {
			//Do nothing
		}
		
		return wfWAFView::create($template, array(
			'waf' => $this,
			'reason' => $reason,
			'homeURL' => $homeURL,
			'siteURL' => $siteURL,
			'customText' => $customText,
			'errorNonce' => $errorNonce,
		))->render();
	}

	/**
	 *
	 */
	public function whitelistFailedRules() {
		foreach ($this->failedRules as $paramKey => $categories) {
			foreach ($categories as $category => $failedRules) {
				foreach ($failedRules as $failedRule) {
					/**
					 * @var wfWAFRule $rule
					 * @var wfWAFRuleComparisonFailure $failedComparison
					 */
					$rule = $failedRule['rule'];
					if ($rule->getWhitelist()) {
						$failedComparison = $failedRule['failedComparison'];

						$data = array(
							'timestamp' => time(),
							'description' => 'Allowlisted while in Learning Mode.',
							'source' => 'learning-mode',
							'ip' => $this->getRequest()->getIP(),
						);
						if (function_exists('get_current_user_id')) {
							$data['userID'] = get_current_user_id();
						}
						$this->whitelistRuleForParam($this->getRequest()->getPath(), $failedComparison->getParamKey(),
							$rule->getRuleID(), $data);
					}
				}
			}
		}
	}

	/**
	 * @param string $path
	 * @param string $paramKey
	 * @param int $ruleID
	 * @param array $data
	 */
	public function whitelistRuleForParam($path, $paramKey, $ruleID, $data = array()) {
		if ($this->isParamKeyURLBlacklisted($ruleID, $paramKey, $path)) {
			return;
		}

		$whitelist = (array) $this->getStorageEngine()->getConfig('whitelistedURLParams', null, 'livewaf');
		if (!is_array($whitelist)) {
			$whitelist = array();
		}
		if (is_array($ruleID)) {
			foreach ($ruleID as $id) {
				$whitelist[base64_encode($path) . "|" . base64_encode($paramKey)][$id] = $data;
			}
		} else {
			$whitelist[base64_encode($path) . "|" . base64_encode($paramKey)][$ruleID] = $data;
		}

		$this->getStorageEngine()->setConfig('whitelistedURLParams', $whitelist, 'livewaf');
	}

	/**
	 * @param int $ruleID
	 * @param string $urlPath
	 * @param string $paramKey
	 * @return bool
	 */
	public function isRuleParamWhitelisted($ruleID, $urlPath, $paramKey) {
		if ($this->isParamKeyURLBlacklisted($ruleID, $paramKey, $urlPath)) {
			return false;
		}

		if ($paramKey==='none' || (is_array($this->whitelistedParams) && array_key_exists($paramKey, $this->whitelistedParams)
			&& is_array($this->whitelistedParams[$paramKey]))
		) {
			foreach ($this->whitelistedParams[$paramKey] as $urlRegex) {
				if (is_array($urlRegex)) {
					if (isset($urlRegex['rules']) && is_array($urlRegex['rules']) && !in_array($ruleID, $urlRegex['rules'])) {
						continue;
					}
					if (isset($urlRegex['conditional']) && !$urlRegex['conditional']->evaluate()) {
						continue;
					}
					$urlRegex = $urlRegex['url'];
				}
				if (preg_match($urlRegex, $urlPath)) {
					return true;
				}
			}
		}

		$whitelistKey = base64_encode($urlPath) . "|" . base64_encode($paramKey);
		$whitelist = (array) $this->getStorageEngine()->getConfig('whitelistedURLParams', array(), 'livewaf');
		if (!is_array($whitelist)) {
			$whitelist = array();
		}

		if (array_key_exists($whitelistKey, $whitelist)) {
			foreach (array('all', $ruleID) as $key) {
				if (array_key_exists($key, $whitelist[$whitelistKey])) {
					$ruleData = $whitelist[$whitelistKey][$key];
					if (is_array($ruleData) && array_key_exists('disabled', $ruleData)) {
						return !$ruleData['disabled'];
					} else if ($ruleData) {
						return true;
					}
				}
			}
		}
		return false;
	}

	/**
	 *
	 */
	public function sendAttackData() {
		if ($this->getStorageEngine()->getConfig('attackDataKey', false) === false) {
			$this->getStorageEngine()->setConfig('attackDataKey', mt_rand(0, 0xfff));
		}
		
		if (!$this->getStorageEngine()->getConfig('other_WFNet', true, 'synced')) {
			$this->getStorageEngine()->truncateAttackData();
			$this->getStorageEngine()->unsetConfig('attackDataNextInterval', 'transient');
			return;
		}

		$request = new wfWAFHTTP();
		try {
			$response = wfWAFHTTP::get(
				sprintf(WFWAF_API_URL_SEC . "waf-rules/%d.txt", $this->getStorageEngine()->getConfig('attackDataKey')),
				$request);

			if ($response instanceof wfWAFHTTPResponse) {
				if ($response->getBody() === 'ok') {
					$request = new wfWAFHTTP();
					$request->setHeaders(array(
						'Content-Type' => 'application/json',
					));
					$response = wfWAFHTTP::post(WFWAF_API_URL_SEC . "?" . http_build_query(array(
							'action' => 'send_waf_attack_data',
							'k'      => $this->getStorageEngine()->getConfig('apiKey', null, 'synced'),
							's'      => $this->getStorageEngine()->getConfig('siteURL', null, 'synced') ? $this->getStorageEngine()->getConfig('siteURL', null, 'synced') :
								sprintf('%s://%s/', $this->getRequest()->getProtocol(), rawurlencode($this->getRequest()->getHost())),
							'h'      => $this->getStorageEngine()->getConfig('homeURL', null, 'synced') ? $this->getStorageEngine()->getConfig('homeURL', null, 'synced') :
								sprintf('%s://%s/', $this->getRequest()->getProtocol(), rawurlencode($this->getRequest()->getHost())),
							't'		 => microtime(true),
							'lang'   => $this->getStorageEngine()->getConfig('WPLANG', null, 'synced'),
						), '', '&'), $this->getStorageEngine()->getAttackData(), $request);

					if ($response instanceof wfWAFHTTPResponse && $response->getBody()) {
						$jsonData = wfWAFUtils::json_decode($response->getBody(), true);
						if (is_array($jsonData) && array_key_exists('success', $jsonData)) {
							$this->getStorageEngine()->truncateAttackData();
							$this->getStorageEngine()->unsetConfig('attackDataNextInterval', 'transient');
						}
						if (array_key_exists('data', $jsonData) && array_key_exists('watchedIPList', $jsonData['data'])) {
							$this->getStorageEngine()->setConfig('watchedIPs', $jsonData['data']['watchedIPList'], 'transient');
						}
					}
				} else if (is_string($response->getBody()) && preg_match('/next check in: ([0-9]+)/', $response->getBody(), $matches)) {
					$this->getStorageEngine()->setConfig('attackDataNextInterval', time() + $matches[1], 'transient');
					if ($this->getStorageEngine()->isAttackDataFull()) {
						$this->getStorageEngine()->truncateAttackData();
					}
				}

				// Could be that the server is down, so hold off on sending data for a little while.
			} else {
				$this->getStorageEngine()->setConfig('attackDataNextInterval', time() + 7200, 'transient');
			}

		} catch (wfWAFHTTPTransportException $e) {
			error_log($e->getMessage());
		}
	}

	/**
	 * @param string $action
	 * @return array
	 */
	public function isAllowedAction($action) {
		static $actions;
		if (!isset($actions)) {
			$actions = array_flip($this->getAllowedActions());
		}
		return array_key_exists($action, $actions);
	}

	/**
	 * @return array
	 */
	public function getAllowedActions() {
		return array('fail', 'allow', 'block', 'failXSS', 'blockXSS', 'failSQLi', 'blockSQLi', 'log');
	}

	/**
	 *
	 */
	public function uninstall() {
		$this->getStorageEngine()->uninstall();
	}
	
	public function fileList() {
		$fileList = array();
		$rulesFile = $this->getCompiledRulesFile();
		if ($rulesFile !== null)
			array_push($fileList, $rulesFile);
		if (method_exists($this->getStorageEngine(), 'fileList')) {
			$fileList = array_merge($fileList, $this->getStorageEngine()->fileList());
		}
		return $fileList;
	}

	/**
	 * @param int $ruleID
	 * @param string $paramKey
	 * @param string $urlPath
	 * @return bool
	 */
	public function isParamKeyURLBlacklisted($ruleID, $paramKey, $urlPath) {
		if (is_array($this->blacklistedParams) && array_key_exists($paramKey, $this->blacklistedParams)
			&& is_array($this->blacklistedParams[$paramKey])
		) {
			foreach ($this->blacklistedParams[$paramKey] as $urlRegex) {
				if (is_array($urlRegex)) {
					if (!in_array($ruleID, $urlRegex['rules'])) {
						continue;
					}
					if (isset($urlRegex['conditional']) && !$urlRegex['conditional']->evaluate()) {
						continue;
					}
					$urlRegex = $urlRegex['url'];
				}
				if (preg_match($urlRegex, $urlPath)) {
					return true;
				}
			}
		}
		return false;
	}

	/**
	 * @return bool
	 */
	public function currentUserCanWhitelist() {
		if ($authCookie = $this->parseAuthCookie()) {
			return $authCookie['role'] === 'administrator';
		}
		return false;
	}

	/**
	 * @param string $capability
	 * @return bool
	 */
	public function checkCapability($capability) {
		if ($authCookie = $this->parseAuthCookie()) {
			return $authCookie['capabilities']!==null && in_array($capability, $authCookie['capabilities']);
		}
		return false;
	}

	/**
	 * @param string|null $cookieVal
	 * @return bool
	 */
	public function parseAuthCookie($cookieVal = null) {
		if ($cookieVal === null) {
			$cookieName = $this->getAuthCookieName();
			$cookieVal = !empty($_COOKIE[$cookieName]) && is_string($_COOKIE[$cookieName]) ? $_COOKIE[$cookieName] : '';
		}
		$pieces = explode('|', $cookieVal);
		$pieceCount = count($pieces);
		if ($pieceCount === 4) {
			list($userID, $role, $capabilityList, $signature) = $pieces;
			$capabilities = empty($capabilityList) ? array() : explode(',', $capabilityList);
		}
		else if ($pieceCount === 3) {
			list($userID, $role, $signature) = $pieces;
			$capabilities = null;
		}
		else {
			return false;
		}
		if (wfWAFUtils::hash_equals($signature, $this->getAuthCookieValue($userID, $role, $capabilities))) {
			return array(
				'userID' => $userID,
				'role'   => $role,
				'capabilities' => $capabilities
			);
		}
		return false;
	}

	/**
	 * @param int|string $userID
	 * @param string $role
	 * @param array $capabilities
	 * @return bool|string
	 */
	public function getAuthCookieValue($userID, $role, $capabilities = array()) {
		if (!is_array($capabilities))
			$capabilities = array();
		$algo = function_exists('hash') ? 'sha256' : 'sha1';
		return wfWAFUtils::hash_hmac($algo, $userID . $role . '|'. implode(',', $capabilities) . floor(time() / 43200), $this->getStorageEngine()->getConfig('authKey'));
	}
	
	/**
	 * @param string $action
	 * @return bool|string
	 */
	public function createNonce($action) {
		$userInfo = $this->parseAuthCookie();
		if ($userInfo === false) {
			$userInfo = array('userID' => 0, 'role' => ''); // Use an empty user like WordPress would
		}
		$userID = $userInfo['userID'];
		$role = $userInfo['role'];
		$algo = function_exists('hash') ? 'sha256' : 'sha1';
		return wfWAFUtils::hash_hmac($algo, $action . $userID . $role . floor(time() / 43200), $this->getStorageEngine()->getConfig('authKey'));
	}
	
	/**
	 * @param string $nonce
	 * @param string $action
	 * @return bool
	 */
	public function verifyNonce($nonce, $action) {
		if (empty($nonce)) {
			return false;
		}
		return wfWAFUtils::hash_equals($nonce, $this->createNonce($action));
	}

	/**
	 * @param string|null $host
	 * @return string
	 */
	public function getAuthCookieName($host = null) {
		if ($host === null) {
			$host = $this->getRequest()->getHost();
		}
		return self::AUTH_COOKIE . '-' . md5($host);
	}

	/**
	 * @return string
	 */
	public function getCompiledRulesFile() {
		return $this->rulesFile;
	}

	/**
	 * @param string $rulesFile
	 */
	public function setCompiledRulesFile($rulesFile) {
		$this->rulesFile = $rulesFile;
	}

	/**
	 * @param $ip
	 * @return mixed
	 */
	public function isIPBlocked($ip) {
		return $this->getStorageEngine()->isIPBlocked($ip);
	}
	
	/**
	 * @param wfWAFRequest $request
	 * @return bool|array false if it should not be blocked, otherwise an array defining the context for the final action
	 */
	public function willPerformFinalAction($request) {
		return false;
	}

	/**
	 * @return array
	 */
	public function getTrippedRules() {
		return $this->trippedRules;
	}

	/**
	 * @return array
	 */
	public function getTrippedRuleIDs() {
		$ret = array();
		/** @var wfWAFRule $rule */
		foreach ($this->getTrippedRules() as $rule) {
			$ret[] = $rule->getRuleID();
		}
		return $ret;
	}

	public function showBench() {
		return sprintf("Bench: %f seconds\n\n", microtime(true) - $this->getRequest()->getTimestamp());
	}

	public function debug() {
		return join("\n", $this->debug) . "\n\n" . $this->showBench();
//		$debug = '';
//		/** @var wfWAFRule $rule */
//		foreach ($this->trippedRules as $rule) {
//			$debug .= $rule->debug();
//		}
//		return $debug;
	}

	/**
	 * @return array
	 */
	public function getScores() {
		return $this->scores;
	}

	/**
	 * @param string $var
	 * @return null
	 */
	public function getVariable($var) {
		if (array_key_exists($var, $this->variables)) {
			return $this->variables[$var];
		}
		return null;
	}

	/**
	 * @return wfWAFRequestInterface
	 */
	public function getRequest() {
		return $this->request;
	}

	/**
	 * @param wfWAFRequestInterface $request
	 */
	public function setRequest($request) {
		$this->request = $request;
	}

	/**
	 * @return wfWAFStorageInterface
	 */
	public function getStorageEngine() {
		return $this->storageEngine;
	}

	/**
	 * @param wfWAFStorageInterface $storageEngine
	 */
	public function setStorageEngine($storageEngine) {
		$this->storageEngine = $storageEngine;
	}

	/**
	 * @return wfWAFEventBus
	 */
	public function getEventBus() {
		return $this->eventBus;
	}

	/**
	 * @param wfWAFEventBus $eventBus
	 */
	public function setEventBus($eventBus) {
		$this->eventBus = $eventBus;
	}

	/**
	 * @return array
	 */
	public function getRules() {
		return $this->rules;
	}

	/**
	 * @param array $rules
	 */
	public function setRules($rules) {
		$this->rules = $rules;
	}

	/**
	 * @param int $ruleID
	 * @return null|wfWAFRule
	 */
	public function getRule($ruleID) {
		$rules = $this->getRules();
		if (is_array($rules) && array_key_exists($ruleID, $rules)) {
			return $rules[$ruleID];
		}
		return null;
	}

	/**
	 * @return string
	 */
	public function getPublicKey() {
		return $this->publicKey;
	}

	/**
	 * @param string $publicKey
	 */
	public function setPublicKey($publicKey) {
		$this->publicKey = $publicKey;
	}

	/**
	 * @return array
	 */
	public function getFailedRules() {
		return $this->failedRules;
	}

	public function getCookieRedactionPatterns($retry = true) {
		$patterns = $this->getStorageEngine()->getConfig('cookieRedactionPatterns', null, 'transient');
		if ($patterns === null) {
			if ($retry) {
				$event = new wfWAFCronFetchCookieRedactionPatternsEvent(time());
				$event->setWaf($this);
				$event->fire();
				return $this->getCookieRedactionPatterns(false);
			}
		}
		else {
			$patterns = wfWAFUtils::json_decode($patterns, true);
			if (is_array($patterns))
				return $patterns;
		}
		return null;
	}

	public function getVersion() {
		return WFWAF_VERSION;
	}

}

require_once __DIR__ . '/api.php';

/**
 * Serialized for use with the WAF cron.
 */
abstract class wfWAFCronEvent {

	abstract public function fire();

	abstract public function getNextFireTime();

	protected $fireTime;
	private $waf;

	/**
	 * @param int $fireTime
	 */
	public function __construct($fireTime = null) {
		$this->setFireTime($fireTime === null ? $this->getNextFireTime() : $fireTime);
	}

	/**
	 * @param int|null $time
	 * @return bool
	 */
	public function isInPast($time = null) {
		if ($time === null) {
			$time = time();
		}
		return $this->getFireTime() <= $time;
	}

	public function __sleep() {
		return array('fireTime');
	}

	/**
	 * @return mixed
	 */
	public function getFireTime() {
		return $this->fireTime;
	}

	/**
	 * @param mixed $fireTime
	 */
	public function setFireTime($fireTime) {
		$this->fireTime = $fireTime;
	}

	/**
	 * @return wfWAF
	 */
	public function getWaf() {
		return $this->waf;
	}

	/**
	 * @param wfWAF $waf
	 */
	public function setWaf($waf) {
		$this->waf = $waf;
	}

	public function reschedule() {
		$nextFireTime = $this->getNextFireTime();
		if ($nextFireTime === null)
			return false;
		$newEvent = new static($nextFireTime);
		return $newEvent;
	}

}

class wfWAFCronFetchRulesEvent extends wfWAFCronEvent {

	/**
	 * @var wfWAFHTTPResponse
	 */
	private $response;
	private $forceUpdate;

	public function __construct($fireTime, $forceUpdate = false) {
		parent::__construct($fireTime);
		$this->forceUpdate = $forceUpdate;
	}

	public function fire() {
		$waf = $this->getWaf();
		if (!$waf) {
			return false;
		}
		
		$success = true;
		$guessSiteURL = sprintf('%s://%s/', $waf->getRequest()->getProtocol(), $waf->getRequest()->getHost());
		try {
			$payload = array(
				'action' => 'get_waf_rules',
				'k' => $waf->getStorageEngine()->getConfig('apiKey', null, 'synced'),
				's' => $waf->getStorageEngine()->getConfig('siteURL', null, 'synced') ? $waf->getStorageEngine()->getConfig('siteURL', null, 'synced') : $guessSiteURL,
				'h' => $waf->getStorageEngine()->getConfig('homeURL', null, 'synced') ? $waf->getStorageEngine()->getConfig('homeURL', null, 'synced') : $guessSiteURL,
				'openssl' => $waf->hasOpenSSL() ? 1 : 0,
				'lang' => $waf->getStorageEngine()->getConfig('WPLANG', null, 'synced'),
				'waf_version' => $waf->getVersion()
			);
			$lastRuleHash=$this->forceUpdate ? null : $waf->getStorageEngine()->getConfig('lastRuleHash', null, 'transient');
			if($lastRuleHash!==null)
				$payload['hash']=$lastRuleHash;
			if ($waf->getStorageEngine()->getConfig('other_WFNet', true, 'synced')) {
				$payload['disabled'] = implode('|', $waf->getDisabledRuleIDs());
			}
			
			$this->response = wfWAFHTTP::get(WFWAF_API_URL_SEC . "?" . http_build_query($payload, '', '&'), null, 10, 5);
			if ($this->response) {
				if($this->response->getStatusCode() !== 304){
					$jsonData = wfWAFUtils::json_decode($this->response->getBody(), true);
					if (is_array($jsonData)) {

						if ($waf->hasOpenSSL() &&
							isset($jsonData['data']['signature256']) &&
							isset($jsonData['data']['rules']) &&
							$waf->verifySignedRequest(base64_decode($jsonData['data']['signature256']), $jsonData['data']['rules'])
						) {
							$waf->updateRuleSet(base64_decode($jsonData['data']['rules']),
								isset($jsonData['data']['timestamp']) ? $jsonData['data']['timestamp'] : true);
							$waf->getStorageEngine()->setConfig('lastRuleHash', $jsonData['data']['signature256'], 'transient');
							if (array_key_exists('premiumCount', $jsonData['data'])) {
								$waf->getStorageEngine()->setConfig('premiumCount', $jsonData['data']['premiumCount'], 'transient');
							}

						} else if (!$waf->hasOpenSSL() &&
							isset($jsonData['data']['hash']) &&
							isset($jsonData['data']['rules']) &&
							$waf->verifyHashedRequest($jsonData['data']['hash'], $jsonData['data']['rules'])
						) {
							$waf->updateRuleSet(base64_decode($jsonData['data']['rules']),
								isset($jsonData['data']['timestamp']) ? $jsonData['data']['timestamp'] : true);
							$waf->getStorageEngine()->setConfig('lastRuleHash', $jsonData['data']['hash'], 'transient');
							if (array_key_exists('premiumCount', $jsonData['data'])) {
								$waf->getStorageEngine()->setConfig('premiumCount', $jsonData['data']['premiumCount'], 'transient');
							}
						}
						else {
							$success = false;
						}
					}
					else {
						$success = false;
					}
				}
			}
			else {
				$success = false;
			}

			$lastMalwareSignatureUpdate=$waf->getStorageEngine()->getConfig('signaturesLastUpdated', 0, 'transient');
			$isPaid=$waf->getStorageEngine()->getConfig('isPaid', false, 'synced');
			//Only update malware signatures for free sites if they are older than 3 days plus an hour
			if ($isPaid || $this->forceUpdate || $lastMalwareSignatureUpdate < (time() - (259200 + 3600))) {
				$this->response = wfWAFHTTP::get(WFWAF_API_URL_SEC . "?" . http_build_query(array(
						'action'   => 'get_malware_signatures',
						'k'        => $waf->getStorageEngine()->getConfig('apiKey', null, 'synced'),
						's'        => $waf->getStorageEngine()->getConfig('siteURL', null, 'synced') ? $waf->getStorageEngine()->getConfig('siteURL', null, 'synced') : $guessSiteURL,
						'h'        => $waf->getStorageEngine()->getConfig('homeURL', null, 'synced') ? $waf->getStorageEngine()->getConfig('homeURL', null, 'synced') : $guessSiteURL,
						'openssl'  => $waf->hasOpenSSL() ? 1 : 0,
						'hash'	   => $this->forceUpdate ? null : $waf->getStorageEngine()->getConfig('lastMalwareHash', null, 'transient'),
						'cs-hash'  => $this->forceUpdate ? null : $waf->getStorageEngine()->getConfig('lastMalwareHashCommonStrings', null, 'transient'),
						'lang'   => $waf->getStorageEngine()->getConfig('WPLANG', null, 'synced')
					), '', '&'), null, 15, 5);
				if ($this->response) {
					if($this->response->getStatusCode() !== 304){
						$jsonData = wfWAFUtils::json_decode($this->response->getBody(), true);
						if (is_array($jsonData)) {
							if ($waf->hasOpenSSL() &&
								isset($jsonData['data']['signature256']) &&
								isset($jsonData['data']['signatures']) &&
								$waf->verifySignedRequest(base64_decode($jsonData['data']['signature256']), $jsonData['data']['signatures'])
							) {
								$waf->setMalwareSignatures(wfWAFUtils::json_decode(base64_decode($jsonData['data']['signatures'])),
									isset($jsonData['data']['timestamp']) ? $jsonData['data']['timestamp'] : true);
								$waf->getStorageEngine()->setConfig('lastMalwareHash', $jsonData['data']['signature256'], 'transient');
								if (array_key_exists('premiumCount', $jsonData['data'])) {
									$waf->getStorageEngine()->setConfig('signaturePremiumCount', $jsonData['data']['premiumCount'], 'transient');
								}

								if (array_key_exists('commonStringsSignature256', $jsonData['data']) && 
									array_key_exists('commonStrings', $jsonData['data']) && 
									array_key_exists('signatureIndexes', $jsonData['data']) &&
									$waf->verifySignedRequest(base64_decode($jsonData['data']['commonStringsSignature256']), $jsonData['data']['commonStrings'] . $jsonData['data']['signatureIndexes'])
								) {
									$waf->setMalwareSignatureCommonStrings(wfWAFUtils::json_decode(base64_decode($jsonData['data']['commonStrings'])), wfWAFUtils::json_decode(base64_decode($jsonData['data']['signatureIndexes'])));

									$waf->getStorageEngine()->setConfig('lastMalwareHashCommonStrings', $jsonData['data']['commonStringsSignature256'], 'transient');
								}

							} else if (!$waf->hasOpenSSL() &&
								isset($jsonData['data']['hash']) &&
								isset($jsonData['data']['signatures']) &&
								$waf->verifyHashedRequest($jsonData['data']['hash'], $jsonData['data']['signatures'])
							) {
								$waf->setMalwareSignatures(wfWAFUtils::json_decode(base64_decode($jsonData['data']['signatures'])),

									isset($jsonData['data']['timestamp']) ? $jsonData['data']['timestamp'] : true);
								$waf->getStorageEngine()->setConfig('lastMalwareHash', $jsonData['data']['hash'], 'transient');
								if (array_key_exists('premiumCount', $jsonData['data'])) {
									$waf->getStorageEngine()->setConfig('signaturePremiumCount', $jsonData['data']['premiumCount'], 'transient');
								}

								if (array_key_exists('commonStringsHash', $jsonData['data']) &&
									array_key_exists('commonStrings', $jsonData['data']) &&
									array_key_exists('signatureIndexes', $jsonData['data']) &&
									$waf->verifyHashedRequest($jsonData['data']['commonStringsHash'], $jsonData['data']['commonStrings'] . $jsonData['data']['signatureIndexes'])
								) {
									$waf->setMalwareSignatureCommonStrings(wfWAFUtils::json_decode(base64_decode($jsonData['data']['commonStrings'])), wfWAFUtils::json_decode(base64_decode($jsonData['data']['signatureIndexes'])));
									$waf->getStorageEngine()->setConfig('lastMalwareHashCommonStrings', $jsonData['data']['commonStringsHash'], 'transient');
								}
							}
							else {
								$success = false;
							}
						}
						else {
							$success = false;
						}
					}
				}
				else {
					$success = false;
				}
			}
		} catch (wfWAFHTTPTransportException $e) {
			error_log($e->getMessage());
			$success = false;
		} catch (wfWAFBuildRulesException $e) {
			error_log($e->getMessage());
			$success = false;
		}
		
		if ($success) {
			$waf->getStorageEngine()->setConfig('lastRuleUpdateCheck', time(), 'transient');
		}
		
		return $success;
	}

	public function getNextFireTime() {
		$waf = $this->getWaf();
		if (!$waf)
			return null;
		if ($this->response) {
			$headers = $this->response->getHeaders();
			if (isset($headers['Expires'])) {
				$timestamp = strtotime($headers['Expires']);
				// Make sure it's at least 2 hours ahead.
				if ($timestamp && $timestamp > (time() + 7200)) {
					return $timestamp;
				}
			}
		}
		return time() + (86400 * ($waf->getStorageEngine()->getConfig('isPaid', null, 'synced') ? .5 : 7));
	}

	public function getResponse() {
		return $this->response;
	}
}

class wfWAFCronFetchIPListEvent extends wfWAFCronEvent {
	
	public function fire() {
		$waf = $this->getWaf();
		if (!$waf) {
			return;
		}
		$guessSiteURL = sprintf('%s://%s/', $waf->getRequest()->getProtocol(), $waf->getRequest()->getHost());
		try {
			//Watch List
			$request = new wfWAFHTTP();
			$request->setHeaders(array(
				'Content-Type' => 'application/json',
			));
			$response = wfWAFHTTP::post(WFWAF_API_URL_SEC . "?" . http_build_query(array(
					'action' => 'send_waf_attack_data',
					'k'      => $waf->getStorageEngine()->getConfig('apiKey', null, 'synced'),
					's'      => $waf->getStorageEngine()->getConfig('siteURL', null, 'synced') ? $waf->getStorageEngine()->getConfig('siteURL', null, 'synced') : $guessSiteURL,
					'h'      => $waf->getStorageEngine()->getConfig('homeURL', null, 'synced') ? $waf->getStorageEngine()->getConfig('homeURL', null, 'synced') : $guessSiteURL,
					't'		 => microtime(true),
					'lang'   => $waf->getStorageEngine()->getConfig('WPLANG', null, 'synced'),
				), '', '&'), '[]', $request);
			
			if ($response instanceof wfWAFHTTPResponse && $response->getBody()) {
				$jsonData = wfWAFUtils::json_decode($response->getBody(), true);
				if (is_array($jsonData) && array_key_exists('data', $jsonData) && is_array($jsonData['data']) && array_key_exists('watchedIPList', $jsonData['data'])) {
					$waf->getStorageEngine()->setConfig('watchedIPs', $jsonData['data']['watchedIPList'], 'transient');
				}
			}
		} catch (wfWAFHTTPTransportException $e) {
			error_log($e->getMessage());
		}
	}

	public function getNextFireTime() {
		return time() + 86400;
	}

}

class wfWAFCronFetchBlacklistPrefixesEvent extends wfWAFCronEvent {
	
	public function fire() {
		$waf = $this->getWaf();
		if (!$waf) {
			return;
		}
		$guessSiteURL = sprintf('%s://%s/', $waf->getRequest()->getProtocol(), $waf->getRequest()->getHost());
		try {
			if ($waf->getStorageEngine()->getConfig('isPaid', null, 'synced')) {
				$request = new wfWAFHTTP();
				$response = wfWAFHTTP::get(WFWAF_API_URL_SEC . 'blacklist-prefixes.bin' . "?" . http_build_query(array(
						'k'      => $waf->getStorageEngine()->getConfig('apiKey', null, 'synced'),
						's'      => $waf->getStorageEngine()->getConfig('siteURL', null, 'synced') ? $waf->getStorageEngine()->getConfig('siteURL', null, 'synced') : $guessSiteURL,
						'h'      => $waf->getStorageEngine()->getConfig('homeURL', null, 'synced') ? $waf->getStorageEngine()->getConfig('homeURL', null, 'synced') : $guessSiteURL,
						't'		 => microtime(true),
						'lang'   => $waf->getStorageEngine()->getConfig('WPLANG', null, 'synced'),
					), '', '&'), $request);
				
				if ($response instanceof wfWAFHTTPResponse && $response->getBody()) {
					$waf->getStorageEngine()->setConfig('blockedPrefixes', base64_encode($response->getBody()), 'transient');
					$waf->getStorageEngine()->setConfig('blacklistAllowedCache', '', 'transient');
				}
			}
			
			$waf->getStorageEngine()->vacuum();
		} catch (wfWAFHTTPTransportException $e) {
			error_log($e->getMessage());
		}
	}

	public function getNextFireTime() {
		return time() + 7200;
	}

}

class wfWAFCronFetchCookieRedactionPatternsEvent extends wfWAFCronEvent {

	const INTERVAL = 604800;
	const RETRY_DELAY = 14400;

	public function fire() {
		$waf = $this->getWaf();
		if (!$waf)
			return;
		$storageEngine = $waf->getStorageEngine();
		$lastFailure = $storageEngine->getConfig('cookieRedactionLastUpdateFailure', null, 'transient');
		if ($lastFailure !== null && time() - (int) $lastFailure < self::RETRY_DELAY)
			return;
		try {
			$api = new wfWafApi($waf);
			$response = $api->actionGet('get_cookie_redaction_patterns');
			if ($response->getStatusCode() === 200) {
				$body = $response->getBody();
				$data = wfWAFUtils::json_decode($body, true);
				if (is_array($data) && array_key_exists('data', $data)) {
					$patterns = $data['data'];
					if (is_array($patterns)) {
						$storageEngine->setConfig('cookieRedactionPatterns', wfWAFUtils::json_encode($patterns), 'transient');
						return;
					}
				}
				error_log('Malformed cookie redaction patterns received, response body: ' . print_r($body, true));
			}
			else {
				error_log('Failed to retrieve cookie redaction patterns, response code: ' . $response->getStatusCode());
			}
		}
		catch (wfWafMissingApiKeyException $e) {
			// This is intentionally ignored as the API key may be missing during initial setup of the plugin
		}
		catch (wfWafApiException $e) {
			error_log('Failed to retrieve cookie redaction patterns: ' . $e->getMessage());
		}
		$storageEngine->setConfig('cookieRedactionLastUpdateFailure', time(), 'transient');
	}

	public function getNextFireTime() {
		return time() + self::INTERVAL;
	}

}
	
interface wfWAFObserver {
	
	public function prevBlocked($ip);
	
	public function block($ip, $exception);
	
	public function allow($ip, $exception);
	
	public function blockXSS($ip, $exception);
	
	public function blockSQLi($ip, $exception);
	
	public function log($ip, $event);
	
	public function wafDisabled();
	
	public function beforeRunRules();
	
	public function afterRunRules();
}

class wfWAFEventBus implements wfWAFObserver {

	private $observers = array();

	/**
	 * @param wfWAFObserver $observer
	 * @throws wfWAFEventBusException
	 */
	public function attach($observer) {
		if (!($observer instanceof wfWAFObserver)) {
			throw new wfWAFEventBusException('Observer supplied to wfWAFEventBus::attach must implement wfWAFObserver');
		}
		$this->observers[] = $observer;
	}

	/**
	 * @param wfWAFObserver $observer
	 */
	public function detach($observer) {
		$key = array_search($observer, $this->observers, true);
		if ($key !== false) {
			unset($this->observers[$key]);
		}
	}

	public function prevBlocked($ip) {
		/** @var wfWAFObserver $observer */
		foreach ($this->observers as $observer) {
			$observer->prevBlocked($ip);
		}
	}

	public function block($ip, $exception) {
		/** @var wfWAFObserver $observer */
		foreach ($this->observers as $observer) {
			$observer->block($ip, $exception);
		}
	}

	public function allow($ip, $exception) {
		/** @var wfWAFObserver $observer */
		foreach ($this->observers as $observer) {
			$observer->allow($ip, $exception);
		}
	}

	public function blockXSS($ip, $exception) {
		/** @var wfWAFObserver $observer */
		foreach ($this->observers as $observer) {
			$observer->blockXSS($ip, $exception);
		}
	}

	public function blockSQLi($ip, $exception) {
		/** @var wfWAFObserver $observer */
		foreach ($this->observers as $observer) {
			$observer->blockSQLi($ip, $exception);
		}
	}
	
	public function log($ip, $event) {
		/** @var wfWAFObserver $observer */
		foreach ($this->observers as $observer) {
			$observer->log($ip, $event);
		}
	}


	public function wafDisabled() {
		/** @var wfWAFObserver $observer */
		foreach ($this->observers as $observer) {
			$observer->wafDisabled();
		}
	}

	public function beforeRunRules() {
		/** @var wfWAFObserver $observer */
		foreach ($this->observers as $observer) {
			$observer->beforeRunRules();
		}
	}

	public function afterRunRules() {
		/** @var wfWAFObserver $observer */
		foreach ($this->observers as $observer) {
			$observer->afterRunRules();
		}
	}
}

class wfWAFBaseObserver implements wfWAFObserver {

	public function prevBlocked($ip) {

	}

	public function block($ip, $exception) {

	}

	public function allow($ip, $exception) {

	}

	public function blockXSS($ip, $exception) {

	}

	public function blockSQLi($ip, $exception) {

	}
	
	public function log($ip, $exception) {
		
	}

	public function wafDisabled() {

	}

	public function beforeRunRules() {

	}

	public function afterRunRules() {

	}
}

class wfWAFException extends Exception {
}

class wfWAFRunException extends Exception {

	/** @var array */
	private $failedRules;
	/** @var string */
	private $paramKey;
	/** @var string */
	private $paramValue;
	/** @var wfWAFRequestInterface */
	private $request;

	/**
	 * @return array
	 */
	public function getFailedRules() {
		return $this->failedRules;
	}

	/**
	 * @param array $failedRules
	 */
	public function setFailedRules($failedRules) {
		$this->failedRules = $failedRules;
	}

	/**
	 * @return string
	 */
	public function getParamKey() {
		return $this->paramKey;
	}

	/**
	 * @param string $paramKey
	 */
	public function setParamKey($paramKey) {
		$this->paramKey = $paramKey;
	}

	/**
	 * @return string
	 */
	public function getParamValue() {
		return $this->paramValue;
	}

	/**
	 * @param string $paramValue
	 */
	public function setParamValue($paramValue) {
		$this->paramValue = $paramValue;
	}

	/**
	 * @return wfWAFRequestInterface
	 */
	public function getRequest() {
		return $this->request;
	}

	/**
	 * @param wfWAFRequestInterface $request
	 */
	public function setRequest($request) {
		$this->request = $request;
	}
}

class wfWAFAllowException extends wfWAFRunException {
}

class wfWAFBlockException extends wfWAFRunException {
}

class wfWAFBlockXSSException extends wfWAFRunException {
}

class wfWAFBlockSQLiException extends wfWAFRunException {
}

class wfWAFBuildRulesException extends wfWAFException {
}

class wfWAFEventBusException extends wfWAFException {
}
}

class wfWAFLogEvent {

	private $failedRules;
	private $paramKey, $paramValue;
	private $request;

	public function __construct($failedRules=array(), $paramKey=null, $paramValue=null, $request=null){
		$this->failedRules=$failedRules;
		$this->paramKey=$paramKey;
		$this->paramValue=$paramValue;
		$this->request=$request;
	}

	public function getFailedRules(){
		return $this->failedRules;
	}

	public function getParamKey(){
		return $this->paramKey;
	}

	public function getParamValue(){
		return $this->paramValue;
	}

	public function getRequest(){
		return $this->request;
	}

}vendor/wordfence/wf-waf/src/lib/request.php000064400000102653150755146450014765 0ustar00<?php
if (defined('WFWAF_VERSION') && !defined('WFWAF_RUN_COMPLETE')) {

interface wfWAFRequestInterface {

	public function getBody();
	
	public function getRawBody();
	
	public function getMd5Body();

	public function getJsonBody();

	public function getQueryString();
	
	public function getMd5QueryString();

	public function getHeaders();

	public function getCookies();

	public function getFiles();

	public function getFileNames();

	public function getHost();

	public function getURI();
	
	public function setMetadata($metadata);
	public function getMetadata();

	public function getPath();

	public function getIP();

	public function getMethod();

	public function getProtocol();

	public function getAuth();

	public function getTimestamp();

	public function __toString();

}

abstract class wfCookieRedactor {

	const REDACTION_MESSAGE = '[redacted]';

	public abstract function redact(&$name, &$value);

	public static function load() {
		$patterns = null;
		$waf = wfWAF::getInstance();
		if ($waf !== null) {
			$patterns = $waf->getCookieRedactionPatterns();
		}
		if ($patterns === null) {
			return new wfGlobalCookieRedactor();
		}
		else {
			return new wfPatternCookieRedactor($waf->getCookieRedactionPatterns());
		}
	}

	public static function loadFromWaf() {
		return new self($patterns);
	}

	public static function getEncodedRedactionMessage() {
		static $encoded = null;
		if ($encoded === null)
			$encoded = urlencode(self::REDACTION_MESSAGE);
		return $encoded;
	}

}

class wfGlobalCookieRedactor extends wfCookieRedactor {

	public function redact(&$name, &$value) {
		$name = self::getEncodedRedactionMessage();
		$value = self::REDACTION_MESSAGE;
	}

}

class wfPatternCookieRedactor extends wfCookieRedactor {

	private $patterns;

	public function __construct($patterns) {
		$this->patterns = $patterns;
	}

	private static function replaceName($matches) {
		if (count($matches) < 2)
			return self::getEncodedRedactionMessage();
		$name = $matches[0][0];
		$redacted = array();
		$position = 0;
		for ($i = 1; $i < count($matches); $i++) {
			$retained = $matches[$i][0];
			$retainedStart = $matches[$i][1];
			$retainedLength = strlen($retained);
			if ($retainedStart > $position)
				$redacted[] = self::getEncodedRedactionMessage();
			$redacted[] = $retained;
			$position = $retainedStart + $retainedLength;
		}
		if ($position < strlen($name))
			$redacted []= self::getEncodedRedactionMessage();
		return implode('', $redacted);
	}

	/**
	 * TODO: Remove this fallback support for PHP versions earlier than 7.4 is no longer required
	 */
	private static function replaceNameFallback($matches) {
		$completeMatch = array_shift($matches);
		$completeRetained = implode('', $matches);
		if ($completeMatch === $completeRetained)
			return $completeRetained;
		$matches[] = '';
		return implode(self::getEncodedRedactionMessage(), $matches);
	}

	public function redact(&$name, &$value) {
		$pregOffsetCaptureSupported = version_compare(PHP_VERSION, '7.4.0', '>=');
		$nameCallback = array($this, $pregOffsetCaptureSupported ? 'replaceName' : 'replaceNameFallback');
		foreach ($this->patterns as $namePattern => $valuePatterns) {
			if ($pregOffsetCaptureSupported) {
				$nameRedacted = preg_replace_callback($namePattern, $nameCallback, $name, 1, $matchCount, PREG_OFFSET_CAPTURE);
			}
			else {
				$nameRedacted = preg_replace_callback($namePattern, $nameCallback, $name, 1, $matchCount);
			}
			if ($matchCount === 1 && $nameRedacted !== null) {
				$name = $nameRedacted;
				if ($valuePatterns === null)
					return;
				if (is_string($valuePatterns))
					$valuePatterns = array($valuePatterns);
				if (is_array($valuePatterns)) {
					$valueMatched = false;
					foreach ($valuePatterns as $valuePattern) {
						if (preg_match($valuePattern, $value) === 1) {
							$valueMatched = true;
							break;
						}
					}
					if (!$valueMatched)
						return;
				}
				$value = self::REDACTION_MESSAGE;
				break;
			}
		}
	}

}

class wfWAFRequest implements wfWAFRequestInterface {

	/**
	 * @param string $requestString
	 * @return wfWAFRequest
	 */
	public static function parseString($requestString) {
		if (!is_string($requestString)) {
			throw new InvalidArgumentException(__METHOD__ . ' expects a string for first parameter, recieved ' . gettype($requestString));
		}

		if (version_compare(phpversion(), '5.3.0') > 0) {
			$class = get_called_class();
			$request = new $class();
		} else {
			$request = new self();
		}

		$request->setAuth(array());
		$request->setBody(array());
		$request->setMd5Body(array());
		$request->setCookies(array());
		$request->setFileNames(array());
		$request->setFiles(array());
		$request->setHeaders(array());
		$request->setHost('');
		$request->setIP('');
		$request->setMethod('');
		$request->setPath('');
		$request->setProtocol('');
		$request->setQueryString(array());
		$request->setMd5QueryString(array());
		$request->setTimestamp('');
		$request->setURI('');
		$request->setMetadata(array());

		list($headersString, $bodyString) = explode("\n\n", $requestString, 2);
		$headersString = trim($headersString);
		$bodyString = trim($bodyString);
		
		if (defined('WFWAF_DISABLE_RAW_BODY') && WFWAF_DISABLE_RAW_BODY) {
			$request->setRawBody('');
		}
		else {
			$request->setRawBody($bodyString);
		}
		
		$headers = explode("\n", $headersString);
		// Assume first is method
		if (preg_match('/^([a-z]+) (.*?) HTTP\/1.[0-9]/i', $headers[0], $matches)) {
			$request->setMethod($matches[1]);
			$uri = $matches[2];
			$request->setUri($uri);
			if (($pos = wfWAFUtils::strpos($uri, '?')) !== false) {
				$queryString = wfWAFUtils::substr($uri, $pos + 1);
				parse_str($queryString, $queryStringArray);
				$request->setQueryString($queryStringArray);

				$path = wfWAFUtils::substr($uri, 0, $pos);
				$request->setPath($path);
			} else {
				$request->setPath($uri);
			}
		}
		$kvHeaders = array();
		for ($i = 1; $i < count($headers); $i++) {
			$headerString = $headers[$i];
			list($header, $headerValue) = explode(':', $headerString, 2);
			$header = trim($header);
			$headerValue = trim($headerValue);
			$kvHeaders[$header] = $headerValue;

			switch (wfWAFUtils::strtolower($header)) {
				case 'authorization':
					if (preg_match('/basic ([A-Za-z0-9\+\/=]+)/i', $headerValue, $matches)) {
						list($authUser, $authPass) = explode(':', base64_decode($matches[1]), 2);
						$auth['user'] = $authUser;
						$auth['password'] = $authPass;
						$request->setAuth($auth);
					}
					break;

				case 'host':
					$request->setHost($headerValue);
					break;

				case 'cookie':
					$cookieArray = array();
					$cookies = str_replace('&', '%26', $headerValue);
					$cookies = preg_replace('/\s*;\s*/', '&', $cookies);
					parse_str($cookies, $cookieArray);
					$request->setCookies($cookieArray);
					break;
			}

		}
		$request->setHeaders($kvHeaders);

		if (wfWAFUtils::strlen($bodyString) > 0) {
			if (preg_match('/^multipart\/form\-data; boundary=(.*?)$/i', $request->getHeaders('Content-Type'), $boundaryMatches)) {
				$body = '';
				$files = array();
				$fileNames = array();

				$boundary = $boundaryMatches[1];
				$bodyChunks = explode("--$boundary", $bodyString);
				foreach ($bodyChunks as $chunk) {
					if (!$chunk || $chunk == '--') {
						continue;
					}

					list($chunkHeaders, $chunkData) = explode("\n\n", $chunk, 2);
					$chunkHeaders = explode("\n", $chunkHeaders);
					$param = array(
						'value' => wfWAFUtils::substr($chunkData, 0, -1),
					);
					foreach ($chunkHeaders as $chunkHeader) {
						if (wfWAFUtils::strpos($chunkHeader, ':') !== false) {
							list($chunkHeaderKey, $chunkHeaderValue) = explode(':', $chunkHeader, 2);
							$chunkHeaderKey = trim($chunkHeaderKey);
							$chunkHeaderValue = trim($chunkHeaderValue);
							switch ($chunkHeaderKey) {
								case 'Content-Disposition':
									$dataAttributes = explode(';', $chunkHeaderValue);
									foreach ($dataAttributes as $attr) {
										$attr = trim($attr);
										if (preg_match('/^name="(.*?)"$/i', $attr, $attrMatch)) {
											$param['name'] = $attrMatch[1];
											continue;
										}
										if (preg_match('/^filename="(.*?)"$/i', $attr, $attrMatch)) {
											$param['filename'] = $attrMatch[1];
											continue;
										}
									}
									break;
								case 'Content-Type':
									$param['type'] = $chunkHeaderValue;
									break;
							}
						}
					}
					if (array_key_exists('name', $param)) {
						if (array_key_exists('filename', $param)) {
							$files[$param['name']] = array(
								'name'    => $param['filename'],
								'type'    => $param['type'],
								'size'    => wfWAFUtils::strlen($param['value']),
								'content' => $param['value'],
							);
							$fileNames[$param['name']] = $param['filename'];
						} else {
							$body .= urlencode($param['name']) . '=' . urlencode($param['value']) . '&';
						}
					}
				}

				if ($body) {
					parse_str($body, $postBody);
					if (is_array($postBody)) {
						$request->setBody($postBody);
					} else {
						$request->setBody($body);
					}
				}
				if ($files) {
					$request->setFiles($files);
				}
				if ($fileNames) {
					$request->setFileNames($fileNames);
				}

			} else {
				parse_str($bodyString, $postBody);
				if (is_array($postBody)) {
					$request->setBody($postBody);
				} else {
					$request->setBody($bodyString);
				}
			}
		}

		return $request;
	}

	private static function extractFileProperty($key, $property) {
		$extracted = array();
		if (is_array($property)) {
			foreach ($property as $nestedKey => $value) {
				$nestedKey = "{$key}[" . var_export($nestedKey, true) . ']';
				foreach (self::extractFileProperty($nestedKey, $value) as $nested) {
					$extracted[] = $nested;
				}
			}
		}
		else if (is_string($property) || is_int($property)) {
			$extracted[] = array(
				$key,
				$property
			);
		}
		return $extracted;
	}

	private static function flattenFiles($files) {
		$flat = array();
		foreach ($files as $baseKey => $file) {
			foreach ($file as $property => $value) {
				foreach (self::extractFileProperty($baseKey, $value) as $extracted) {
					list($finalKey, $finalValue) = $extracted;
					if (!array_key_exists($finalKey, $flat))
						$flat[$finalKey] = array();
					$flat[$finalKey][$property] = $finalValue;
				}
			}
		}
		return $flat;
	}

	/**
	 * @param wfWAFRequest|null $request
	 * @return wfWAFRequest
	 */
	public static function createFromGlobals($request = null) {
		if ($request === null) {
			if (version_compare(phpversion(), '5.3.0') > 0) {
				$class = get_called_class();
				$request = new $class();
			} else {
				$request = new self();
			}
		}

		$request->setAuth(array());
		$request->setCookies(array());
		$request->setFileNames(array());
		$request->setFiles(array());
		$request->setHeaders(array());
		$request->setHost('');
		$request->setIP('');
		$request->setMethod('');
		$request->setPath('');
		$request->setProtocol('');
		$request->setTimestamp('');
		$request->setURI('');
		$request->setMetadata(array());

		$request->setBody(wfWAFUtils::stripMagicQuotes($_POST));
		if (defined('WFWAF_DISABLE_RAW_BODY') && WFWAF_DISABLE_RAW_BODY) {
			$request->setRawBody('');
		}
		else {
			$rawBody=wfWAFUtils::rawPOSTBody();
			$request->setRawBody($rawBody);
		}
		
		$request->setQueryString(wfWAFUtils::stripMagicQuotes($_GET));
		$request->setCookies(wfWAFUtils::stripMagicQuotes($_COOKIE));
		$request->setFiles(wfWAFUtils::stripMagicQuotes(self::flattenFiles($_FILES)));

		if (!empty($_FILES)) {
			$fileNames = array();
			foreach ($_FILES as $input => $file) {
				$fileNames[$input] = wfWAFUtils::stripMagicQuotes($file['name']);
			}
			$request->setFileNames($fileNames);
		}

		if (is_array($_SERVER)) { //All of these depend on $_SERVER being non-null and an array
			$auth = array();
			if (array_key_exists('PHP_AUTH_USER', $_SERVER)) {
				$auth['user'] = wfWAFUtils::stripMagicQuotes($_SERVER['PHP_AUTH_USER']);
			}
			if (array_key_exists('PHP_AUTH_PW', $_SERVER)) {
				$auth['password'] = wfWAFUtils::stripMagicQuotes($_SERVER['PHP_AUTH_PW']);
			}
			$request->setAuth($auth);

			if (array_key_exists('REQUEST_TIME_FLOAT', $_SERVER)) {
				$timestamp = $_SERVER['REQUEST_TIME_FLOAT'];
			} else if (array_key_exists('REQUEST_TIME', $_SERVER)) {
				$timestamp = $_SERVER['REQUEST_TIME'];
			} else {
				$timestamp = time();
			}
			$request->setTimestamp($timestamp);

			$headers = array();
			foreach ($_SERVER as $key => $value) {
				if (wfWAFUtils::strpos($key, 'HTTP_') === 0) {
					$header = wfWAFUtils::substr($key, 5);
					$header = str_replace(array(' ', '_'), array('', ' '), $header);
					$header = ucwords(wfWAFUtils::strtolower($header));
					$header = str_replace(' ', '-', $header);
					$headers[$header] = wfWAFUtils::stripMagicQuotes($value);
				}
			}
			if (array_key_exists('CONTENT_TYPE', $_SERVER)) {
				$headers['Content-Type'] = wfWAFUtils::stripMagicQuotes($_SERVER['CONTENT_TYPE']);
			}
			if (array_key_exists('CONTENT_LENGTH', $_SERVER)) {
				$headers['Content-Length'] = wfWAFUtils::stripMagicQuotes($_SERVER['CONTENT_LENGTH']);
			}
			$request->setHeaders($headers);

			$host = '';
			if (array_key_exists('Host', $headers)) {
				$host = $headers['Host'];
			} else if (array_key_exists('SERVER_NAME', $_SERVER)) {
				$host = wfWAFUtils::stripMagicQuotes($_SERVER['SERVER_NAME']);
			}
			$request->setHost($host);

			$request->setMethod(array_key_exists('REQUEST_METHOD', $_SERVER) ? wfWAFUtils::stripMagicQuotes($_SERVER['REQUEST_METHOD']) : 'GET');
			$request->setProtocol((array_key_exists('HTTPS', $_SERVER) && $_SERVER['HTTPS'] && $_SERVER['HTTPS'] !== 'off') ? 'https' : 'http');
			$request->setUri(array_key_exists('REQUEST_URI', $_SERVER) ? wfWAFUtils::stripMagicQuotes($_SERVER['REQUEST_URI']) : '');

			$uri = parse_url($request->getURI());
			if (is_array($uri) && array_key_exists('path', $uri)) {
				$path = $uri['path'];
			} else {
				$path = $request->getURI();
			}
			$request->setPath($path);
		}

		return $request;
	}

	private $auth;
	private $body;
	private $rawBody;
	private $md5Body;
	private $jsonBody;
	private $jsonParsed = false;
	private $cookies;
	private $fileNames;
	private $files;
	private $headers;
	private $host;
	private $ip;
	private $method;
	private $path;
	private $protocol;
	private $queryString;
	private $md5QueryString;
	private $timestamp;
	private $uri;
	private $metadata;

	private $highlightParamFormat;
	private $highlightMatchFormat;
	private $highlightMatches;
	private $highlightMatchFilter = 'urlencode';


	protected function _arrayValueByKeys($global, $key) {
		if (is_array($global)) {
			if (is_array($key)) {
				$_key = array_shift($key);
				if (array_key_exists($_key, $global)) {
					if (count($key) > 0) {
						return $this->_arrayValueByKeys($global[$_key], $key);
					} else {
						return $global[$_key];
					}
				}
			} else {
				return array_key_exists($key, $global) ? $global[$key] : null;
			}
		}
		return null;
	}

	public function getBody() {
		if (func_num_args() > 0) {
			$args = func_get_args();
			return $this->_arrayValueByKeys($this->body, $args);
		}
		return $this->body;
	}
	
	public function getRawBody() {
		return $this->rawBody;
	}
	
	public function getMd5Body() {
		if (func_num_args() > 0) {
			$args = func_get_args();
			return $this->_arrayValueByKeys($this->md5Body, $args);
		}
		return $this->md5Body;
	}

	public function getJsonBody() {
		if ($this->jsonParsed === false) {
			if (defined('WFWAF_DISABLE_RAW_BODY') && WFWAF_DISABLE_RAW_BODY) {
				$this->setJsonBody(null);
			}
			else {
				$this->setJsonBody(wfWAFUtils::json_decode($this->getRawBody(), true));
			}
		}
		return $this->jsonBody;
	}

	public function getQueryString() {
		if (func_num_args() > 0) {
			$args = func_get_args();
			return $this->_arrayValueByKeys($this->queryString, $args);
		}
		return $this->queryString;
	}
	
	public function getMd5QueryString() {
		if (func_num_args() > 0) {
			$args = func_get_args();
			return $this->_arrayValueByKeys($this->md5QueryString, $args);
		}
		return $this->md5QueryString;
	}

	public function getHeaders() {
		if (func_num_args() > 0) {
			$args = func_get_args();
			return $this->_arrayValueByKeys($this->headers, $args);
		}
		return $this->headers;
	}

	public function getCookies() {
		if (func_num_args() > 0) {
			$args = func_get_args();
			return $this->_arrayValueByKeys($this->cookies, $args);
		}
		return $this->cookies;
	}

	/*
	 * Formats the provided cookie array (or $this->getCookies() if null) into a string
	 * and preserves arrays.
	 *
	 * The format is in "cookie1=value; cookie2=value, ..."
	 *
	 * @param array|null $cookies
	 * @param string|null $baseKey The base key used when recursing.
	 * @return string
	 */
	public function getCookieString($cookies = null, $baseKey = null, $preventRedaction = false, $redactor = null) {
		if ($cookies == null) {
			$cookies = $this->getCookies();
		}
		$isAssoc = (array_keys($cookies) !== range(0, count($cookies) - 1));
		$cookieString = '';
		if ($redactor === null)
			$redactor = wfCookieRedactor::load();
		foreach ($cookies as $cookieName => $cookieValue) {
			$resolvedName = $cookieName;
			if ($baseKey !== null) {
				if ($isAssoc) {
					$resolvedName = $baseKey . '[' . $cookieName . ']';
				}
				else {
					$resolvedName = $baseKey . '[]';
				}
			}

			if (is_array($cookieValue)) {
				$nestedCookies = $this->getCookieString($cookieValue, $resolvedName);
				$cookieString .= $nestedCookies;
			}
			else {
				if (!$preventRedaction)
					$redactor->redact($resolvedName, $cookieValue);
				
				$cookieString .= $resolvedName . '=' . urlencode($cookieValue) . '; ';
			}
		}
		return $cookieString;
	}

	public function getFiles() {
		if (func_num_args() > 0) {
			$args = func_get_args();
			return $this->_arrayValueByKeys($this->files, $args);
		}
		return $this->files;
	}

	public function getFileNames() {
		if (func_num_args() > 0) {
			$args = func_get_args();
			return $this->_arrayValueByKeys($this->fileNames, $args);
		}
		return $this->fileNames;
	}

	public function getHost() {
		return $this->host;
	}

	public function getURI() {
		return $this->uri;
	}
	
	public function getMetadata() {
		if (func_num_args() > 0) {
			$args = func_get_args();
			return $this->_arrayValueByKeys($this->metadata, $args);
		}
		return $this->metadata;
	}

	public function getPath() {
		return $this->path;
	}

	public function getIP() {
		return $this->ip;
	}

	public function getMethod() {
		return $this->method;
	}

	public function getProtocol() {
		return $this->protocol;
	}

	public function getAuth($arg1 = null) {
		if ($arg1) {
			if (is_array($this->auth) && array_key_exists($arg1, $this->auth)) {
				return $this->auth[$arg1];
			}
			return null;
		}
		return $this->auth;
	}

	public function getTimestamp() {
		return $this->timestamp;
	}

	public function __toString() {
		return $this->highlightFailedParams();
	}

	/**
	 * @param array $failedParams
	 * @param string $highlightParamFormat
	 * @param string $highlightMatchFormat
	 * @return string
	 */
	public function highlightFailedParams($failedParams = array(), $highlightParamFormat = '[param]%s[/param]',
	                                      $highlightMatchFormat = '[match]%s[/match]', $preventRedaction = false) {
		$highlights = array();

		// Cap at 47.5kb
		$maxRequestLen = 1024 * 47.5;

		$this->highlightParamFormat = $highlightParamFormat;
		$this->highlightMatchFormat = $highlightMatchFormat;

		if (is_array($failedParams)) {
			foreach ($failedParams as $paramKey => $categories) {
				foreach ($categories as $categoryKey => $failedRules) {
					foreach ($failedRules as $failedRule) {
						$rule = $failedRule['rule'];
						/** @var wfWAFRuleComparisonFailure $failedComparison */
						$failedComparison = $failedRule['failedComparison'];
						$action = $failedRule['action'];

						$paramKey = $failedComparison->getParamKey();
						if (preg_match('/request\.([a-z0-9]+)(?:\[(.*?)\](.*?))?$/i', $paramKey, $matches)) {
							$global = $matches[1];
							if (method_exists('wfWAFRequestInterface', "get" . ucfirst($global))) {
								$highlight = array(
									'match' => $failedComparison->getMatches(),
								);
								if (isset($matches[2])) {
									$highlight['param'] = "$matches[2]$matches[3]";
								}
								$highlights[$global][] = $highlight;
							}
						}
					}
				}
			}
		}

		$uri = $this->getURI();
		$queryStringPos = wfWAFUtils::strpos($uri, '?');
		if ($queryStringPos !== false) {
			$uri = wfWAFUtils::substr($uri, 0, $queryStringPos);
		}
		$queryString = $this->getQueryString();
		if ($queryString) {
			$uri .= '?' . http_build_query($queryString, '', '&');
		}
		if (!empty($highlights['queryString'])) {
			foreach ($highlights['queryString'] as $matches) {
				if (!empty($matches['param'])) {
					$this->highlightMatches = $matches['match'];
					$uri = preg_replace_callback('/(&|\?|^)(' . preg_quote(urlencode($matches['param']), '/') . ')=(.*?)(&|$)/', array(
						$this, 'highlightParam',
					), $uri);
				}
			}
		}

		if (!empty($highlights['uri'])) {
			foreach ($highlights['uri'] as $matches) {
				if ($matches) {

				}
			}
			$uri = sprintf($highlightParamFormat, $uri);
		}

		$request = "{$this->getMethod()} $uri HTTP/1.1\n";
		$hasAuth = false;
		$auth = $this->getAuth();

		if (is_array($this->getHeaders())) {
			foreach ($this->getHeaders() as $header => $value) {
				switch (wfWAFUtils::strtolower($header)) {
					case 'cookie':
						// TODO: Hook up highlights to cookies
						$request .= 'Cookie: ' . trim($this->getCookieString(null, null, $preventRedaction)) . "\n";
						break;

					case 'host':
						$request .= 'Host: ' . $this->getHost() . "\n";
						break;

					case 'authorization':
						$hasAuth = true;
						if ($auth) {
							$request .= 'Authorization: Basic ' . ($preventRedaction ? base64_encode($auth['user'] . ':' . $auth['password']) : '[redacted]') . "\n";
						}
						break;

					default:
						$request .= $header . ': ' . $value . "\n";
						break;
				}
			}
		}

		if (!$hasAuth && $auth) {
			$request .= 'Authorization: Basic ' . ($preventRedaction ? base64_encode($auth['user'] . ':' . $auth['password']) : '[redacted]') . "\n";
		}
		
		$bareRequestURI = wfWAFUtils::extractBareURI($this->getURI());
		$isAuthRequest = (strpos($bareRequestURI, '/wp-login.php') !== false);
		$isXMLRPC = (strpos($bareRequestURI, '/xmlrpc.php') !== false);
		$xmlrpcFieldMap = array(
			'wp.getUsersBlogs' => array(0, 1),
			'wp.newPost' => array(1, 2),
			'wp.editPost' => array(1, 2),
			'wp.deletePost' => array(1, 2),
			'wp.getPost' => array(1, 2),
			'wp.getPosts' => array(1, 2),
			'wp.newTerm' => array(1, 2),
			'wp.editTerm' => array(1, 2),
			'wp.deleteTerm' => array(1, 2),
			'wp.getTerm' => array(1, 2),
			'wp.getTerms' => array(1, 2),
			'wp.getTaxonomy' => array(1, 2),
			'wp.getTaxonomies' => array(1, 2),
			'wp.getUser' => array(1, 2),
			'wp.getUsers' => array(1, 2),
			'wp.getProfile' => array(1, 2),
			'wp.editProfile' => array(1, 2),
			'wp.getPage' => array(2, 3),
			'wp.getPages' => array(1, 2),
			'wp.newPage' => array(1, 2),
			'wp.deletePage' => array(1, 2),
			'wp.editPage' => array(2, 3),
			'wp.getPageList' => array(1, 2),
			'wp.getAuthors' => array(1, 2),
			'wp.getTags' => array(1, 2),
			'wp.newCategory' => array(1, 2),
			'wp.deleteCategory' => array(1, 2),
			'wp.suggestCategories' => array(1, 2),
			'wp.getComment' => array(1, 2),
			'wp.getComments' => array(1, 2),
			'wp.deleteComment' => array(1, 2),
			'wp.editComment' => array(1, 2),
			'wp.newComment' => array(1, 2),
			'wp.getCommentStatusList' => array(1, 2),
			'wp.getCommentCount' => array(1, 2),
			'wp.getPostStatusList' => array(1, 2),
			'wp.getPageStatusList' => array(1, 2),
			'wp.getPageTemplates' => array(1, 2),
			'wp.getMediaItem' => array(1, 2),
			'wp.getMediaLibrary' => array(1, 2),
			'wp.getPostFormats' => array(1, 2),
			'wp.getPostType' => array(1, 2),
			'wp.getPostTypes' => array(1, 2),
			'wp.getRevisions' => array(1, 2),
			'wp.restoreRevision' => array(1, 2),
			'blogger.getUsersBlogs' => array(1, 2),
			'blogger.getUserInfo' => array(1, 2),
			'blogger.getPost' => array(2, 3),
			'blogger.getRecentPosts' => array(2, 3),
			'blogger.newPost' => array(2, 3),
			'blogger.editPost' => array(2, 3),
			'blogger.deletePost' => array(2, 3),
			'metaWeblog.newPost' => array(1, 2),
			'metaWeblog.editPost' => array(1, 2),
			'metaWeblog.getPost' => array(1, 2),
			'metaWeblog.getRecentPosts' => array(1, 2),
			'metaWeblog.getCategories' => array(1, 2),
			'metaWeblog.newMediaObject' => array(1, 2),
			'mt.getRecentPostTitles' => array(1, 2),
			'mt.getCategoryList' => array(1, 2),
			'mt.getPostCategories' => array(1, 2),
			'mt.setPostCategories' => array(1, 2),
			'mt.publishPost' => array(1, 2),
		);

		$body = $this->getBody();
		$rawBody = $this->getRawBody();
		$contentType = $this->getHeaders('Content-Type');
		if (wfXMLRPCBody::canParse() && $isXMLRPC && is_string($rawBody) && !$preventRedaction) {
			$xml =& $rawBody;
			if ($contentType == 'application/x-www-form-urlencoded') {
				$xml = @urldecode($rawBody);
			}
			
			$xmlrpc = new wfXMLRPCBody($xml);
			if ($xmlrpc->parse() && $xmlrpc->messageType == 'methodCall') {
				if ($xmlrpc->methodName == 'system.multicall') {
					$subCalls =& $xmlrpc->params[0]['value'];
					if (is_array($subCalls)) {
						foreach ($subCalls as &$call) {
							$method = $call['value']['methodName']['value'];
							$params =& $call['value']['params']['value'];
							
							if (isset($xmlrpcFieldMap[$method])) {
								$fieldIndexes = $xmlrpcFieldMap[$method];
								foreach ($fieldIndexes as $i) {
									if (isset($params[$i])) {
										$params[$i]['value'] = '[redacted]';
									}
								}
							}
						}
					}
				}
				else {
					if (isset($xmlrpcFieldMap[$xmlrpc->methodName])) {
						$params =& $xmlrpc->params;
						$fieldIndexes = $xmlrpcFieldMap[$xmlrpc->methodName];
						foreach ($fieldIndexes as $i) {
							if (isset($params[$i])) {
								$params[$i]['value'] = '[redacted]';
							}
						}
					}
				}
				
				$xml = (string) $xmlrpc;
				if ($contentType == 'application/x-www-form-urlencoded') {
					$body = urlencode($xml);
				}
			}
		}
		else if (is_array($body)) {
			foreach ($body as $bkey => &$bvalue) {
				if (!$preventRedaction && $isAuthRequest && ($bkey == 'log' || $bkey == 'pwd' || $bkey == 'user_login' || $bkey == 'user_email' || $bkey == 'pass1' || $bkey == 'pass2' || $bkey == 'rp_key')) {
					$bvalue = '[redacted]';
				}
			}
			
			if (preg_match('/^multipart\/form\-data;(?:\s*(?!boundary)(?:[^\x00-\x20\(\)<>@,;:\\"\/\[\]\?\.=]+)=[^;]+;)*\s*boundary=([^;]*)(?:;\s*(?:[^\x00-\x20\(\)<>@,;:\\"\/\[\]\?\.=]+)=[^;]+)*$/i', (string) $contentType, $boundaryMatches)) {
				$boundary = $boundaryMatches[1];
				$bodyArray = array();
				foreach ($body as $key => $value) {
					$bodyArray = array_merge($bodyArray, $this->reduceBodyParameter($key, $value));
				}
				
				$body = '';
				foreach ($bodyArray as $param => $value) {
					if (!empty($highlights['body'])) {
						foreach ($highlights['body'] as $matches) {
							if (!empty($matches['param']) && $matches['param'] === $param) {
								$value = sprintf($this->highlightParamFormat, $value);
								if (is_array($matches['match'][0])) {
									$replace = array();
									foreach ($matches['match'][0] as $key => $match) {
										$replace[$match] = sprintf($this->highlightMatchFormat, $match);
									}
									if ($replace) {
										$value = str_replace(array_keys($replace), $replace, $value);
									}
								} else { // preg_match
									$value = str_replace($matches['match'][0], sprintf($this->highlightMatchFormat, $matches['match'][0]), $value);
								}
								break;
							}
						}
					}

					$body .= <<<FORM
--$boundary
Content-Disposition: form-data; name="$param"

$value

FORM;
				}

				foreach ($this->getFiles() as $param => $file) {
					$name = array_key_exists('name', $file) ? $file['name'] : '';
					$mime = array_key_exists('type', $file) ? $file['type'] : '';
					$value = '';
					$lenToRead = $maxRequestLen - (wfWAFUtils::strlen($request) + wfWAFUtils::strlen($body) + 1);
					if (array_key_exists('content', $file)) {
						$value = $file['content'];
					} else if ($lenToRead > 0 && file_exists($file['tmp_name'])) {
						$handle = fopen($file['tmp_name'], 'r');
						$value = fread($handle, $lenToRead);
						fclose($handle);
					}

					if (!empty($highlights['fileNames'])) {
						foreach ($highlights['fileNames'] as $matches) {
							if (!empty($matches['param']) && $matches['param'] === $param) {
								$name = sprintf($this->highlightParamFormat, $name);
								$name = str_replace($matches['match'][0], sprintf($this->highlightMatchFormat, $matches['match'][0]), $name);
								break;
							}
						}
					}

					$body .= <<<FORM
--$boundary
Content-Disposition: form-data; name="$param"; filename="$name"
Content-Type: $mime
Expires: 0

$value

FORM;
				}

				if ($body) {
					$body .= "--$boundary--\n";
				}
			}
			else { //Assume application/x-www-form-urlencoded and re-encode the body
				$body = http_build_query($body, '', '&');
				if (!empty($highlights['body'])) {
					foreach ($highlights['body'] as $matches) {
						if (!empty($matches['param'])) {
							$this->highlightMatches = $matches['match'];
							$body = preg_replace_callback('/(&|^)(' . preg_quote(urlencode($matches['param']), '/') . ')=(.*?)(&|$)/', array(
								$this, 'highlightParam',
							), $body);
						}
					}
				}
			}
		}
		
		if (!is_string($body) || empty($body)) {
			if (is_string($rawBody)) {
				$body = $rawBody;
			}
			else {
				$body = '';
			}
		}

		$request .= "\n" . $body;

		if (wfWAFUtils::strlen($request) > $maxRequestLen) {
			$request = wfWAFUtils::substr($request, 0, $maxRequestLen);
		}
		return $request;
	}

	/**
	 * @param array $matches
	 * @return string
	 */
	private function highlightParam($matches) {
		$value = '';
		if (is_array($this->highlightMatches)) {
			// preg_match_all
			if (is_array($this->highlightMatches[0])) {
				$value = $matches[3];
				$replace = array();
				foreach ($this->highlightMatches[0] as $key => $match) {
					$this->highlightMatches[0][$key] = $this->callHighlightMatchFilter($match);
					$replace[] = sprintf($this->highlightMatchFormat, $this->callHighlightMatchFilter($match));
				}
				if ($replace) {
					$value = str_replace($this->highlightMatches[0], $replace, $value);
				}

			} else { // preg_match
				$param = $this->callHighlightMatchFilter($this->highlightMatches[0]);
				$value = str_replace($param, sprintf($this->highlightMatchFormat, $param), $matches[3]);
			}
		}
		if (wfWAFUtils::strlen($value) === 0) {
			$value = sprintf($this->highlightMatchFormat, $value);
		}

		return $matches[1] . sprintf($this->highlightParamFormat, $matches[2] . '=' . $value) . $matches[4];
	}

	/**
	 * @param $match
	 * @return mixed
	 */
	private function callHighlightMatchFilter($match) {
		return is_callable($this->highlightMatchFilter) ? call_user_func($this->highlightMatchFilter, $match) : $match;
	}
	
	/**
	 * Encodes all of the keys with the MD5 hash.
	 * 
	 * @param array|string $value
	 * @return array|string
	 */
	private function md5EncodeKeys($value) {
		if (!is_array($value)) {
			return md5($value);
		}
		
		$result = array();
		foreach ($value as $k => $v) {
			$md5Key = md5($k);
			if (is_array($v)) {
				$result[$md5Key] = $this->md5EncodeKeys($v);
			}
			else {
				$result[$md5Key] = $v;
			}
		}
		return $result;
	}

	/**
	 * @param string $key
	 * @param string|array $value
	 * @return array
	 */
	private function reduceBodyParameter($key, $value) {
		if (is_array($value)) {
			$param = array();
			foreach ($value as $index => $val) {
				$param = array_merge($param, $this->reduceBodyParameter("{$key}[$index]", $val));
			}
			return $param;
		}
		return array(
			$key => $value,
		);
	}

	/**
	 * @param mixed $auth
	 */
	public function setAuth($auth) {
		$this->auth = $auth;
	}

	/**
	 * @param mixed $body
	 */
	public function setBody($body) {
		$this->body = $body;
		$this->setMd5Body($this->md5EncodeKeys($body));
	}
	
	public function setRawBody($rawBody) {
		$this->rawBody = $rawBody;
	}
	
	/**
	 * @param mixed $md5Body
	 */
	public function setMd5Body($md5Body) {
		$this->md5Body = $md5Body;
	}

	public function setJsonBody($jsonBody) {
		$this->jsonBody = $jsonBody;
		$this->jsonParsed = true;
	}

	/**
	 * @param mixed $cookies
	 */
	public function setCookies($cookies) {
		$this->cookies = $cookies;
	}

	/**
	 * @param mixed $fileNames
	 */
	public function setFileNames($fileNames) {
		$this->fileNames = $fileNames;
	}

	/**
	 * @param mixed $files
	 */
	public function setFiles($files) {
		$this->files = $files;
	}

	/**
	 * @param mixed $headers
	 */
	public function setHeaders($headers) {
		$this->headers = $headers;
	}

	/**
	 * @param mixed $host
	 */
	public function setHost($host) {
		$this->host = $host;
	}

	/**
	 * @param mixed $ip
	 */
	public function setIP($ip) {
		$this->ip = $ip;
	}

	/**
	 * @param mixed $method
	 */
	public function setMethod($method) {
		$this->method = $method;
	}

	/**
	 * @param mixed $path
	 */
	public function setPath($path) {
		$this->path = $path;
	}

	/**
	 * @param mixed $protocol
	 */
	public function setProtocol($protocol) {
		$this->protocol = $protocol;
	}

	/**
	 * @param mixed $queryString
	 */
	public function setQueryString($queryString) {
		$this->queryString = $queryString;
		$this->setMd5QueryString($this->md5EncodeKeys($queryString));
	}
	
	/**
	 * @param mixed $md5QueryString
	 */
	public function setMd5QueryString($md5QueryString) {
		$this->md5QueryString = $md5QueryString;
	}

	/**
	 * @param mixed $timestamp
	 */
	public function setTimestamp($timestamp) {
		$this->timestamp = $timestamp;
	}

	/**
	 * @param mixed $uri
	 */
	public function setUri($uri) {
		$this->uri = $uri;
	}
	
	/**
	 * @param array $metadata
	 */
	public function setMetadata($metadata) {
		$this->metadata = $metadata;
	}
}
}vendor/wordfence/wf-waf/src/lib/api.php000064400000003347150755146450014046 0ustar00<?php

class wfWafApiException extends Exception {
}

class wfWafMissingApiKeyException extends wfWafApiException {
}

class wfWafApi {

	private $waf;
	private $apiKey;

	public function __construct($waf) {
		$this->waf = $waf;
		$this->apiKey = $this->getConfig('apiKey');
		if (empty($this->apiKey))
			throw new wfWafMissingApiKeyException('No API key is available');
	}

	private function getConfig($key) {
		return $this->waf->getStorageEngine()->getConfig($key, null, 'synced');
	}

	private function guessSiteUrl() {
		return sprintf('%s://%s/', $this->waf->getRequest()->getProtocol(), $this->waf->getRequest()->getHost());
	}

	private function guessSiteUrlIfNecessary($configKey) {
		$url = $this->getConfig($configKey);
		if (!$url)
			$url = $this->guessSiteUrl();
		return $url;
	}

	private function getSiteUrl() {
		return $this->guessSiteUrlIfNecessary('siteURL');
	}

	private function getHomeUrl() {
		return $this->guessSiteUrlIfNecessary('homeURL');
	}

	private function buildQueryString($additionalParameters = array()) {
		$parameters = array(
			'k' => $this->apiKey,
			's' => $this->getSiteUrl(),
			'h' => $this->getHomeUrl(),
			't' => microtime(true),
			'lang' => $this->getConfig('WPLANG')
		);
		$parameters = array_merge($parameters, $additionalParameters);
		return http_build_query($parameters, '', '&');
	}

	private function buildUrl($queryParameters, $path = '') {
		return WFWAF_API_URL_SEC . $path . '?' . $this->buildQueryString($queryParameters);
	}

	public function actionGet($action, $parameters = array()) {
		$parameters['action'] = $action;
		$url = $this->buildUrl($parameters);
		$response = wfWAFHTTP::get($url);
		if ($response === false)
			throw new wfWafApiException('Request failed');
		return $response;
	}

}vendor/wordfence/wf-waf/src/lib/http.php000064400000025037150755146450014254 0ustar00<?php
if (defined('WFWAF_VERSION') && !defined('WFWAF_RUN_COMPLETE')) {

class wfWAFHTTP {

	private $url;
	private $auth;
	private $body;
	private $cookies;
//	private $fileNames;
//	private $files;
	private $headers;
	private $method;
	private $queryString;

	/**
	 * @var wfWAFHTTPTransport
	 */
	private $transport;

	/**
	 * @param string $url
	 * @param wfWAFHTTP $request
	 * @return wfWAFHTTPResponse|bool
	 * @throws wfWAFHTTPTransportException
	 */
	public static function get($url, $request = null, $timeout = 5, $connectTimeout = null) {
		if (!$request) {
			$request = new self();
		}
		$request->setUrl($url);
		$request->setMethod('GET');
		$transport = wfWAFHTTPTransport::getInstance();
		$transport->setConnectTimeout($connectTimeout);
		$transport->setTimeout($timeout);
		$request->setTransport($transport);
		// $request->setCookies("XDEBUG_SESSION=netbeans-xdebug");
		return $request->send();
	}

	/**
	 * @param string $url
	 * @param array $post
	 * @param wfWAFHTTP $request
	 * @return wfWAFHTTPResponse|bool
	 * @throws wfWAFHTTPTransportException
	 */
	public static function post($url, $post = array(), $request = null, $timeout = 5, $connectTimeout = null) {
		if (!$request) {
			$request = new self();
		}
		$request->setUrl($url);
		$request->setMethod('POST');
		$request->setBody($post);
		$transport = wfWAFHTTPTransport::getInstance();
		$transport->setConnectTimeout($connectTimeout);
		$transport->setTimeout($timeout);
		$request->setTransport($transport);
		return $request->send();
	}

	/**
	 * @return wfWAFHTTPResponse|bool
	 * @throws wfWAFHTTPTransportException
	 */
	public function send() {
		if (!$this->getTransport()) {
			throw new wfWAFHTTPTransportException('Need to provide a valid HTTP transport before calling ' . __METHOD__);
		}
		return $this->getTransport()->send($this);
	}

	/**
	 * @return mixed
	 */
	public function getUrl() {
		return $this->url;
	}

	/**
	 * @param mixed $url
	 */
	public function setUrl($url) {
		$this->url = $url;
	}

	/**
	 * @return mixed
	 */
	public function getAuth() {
		return $this->auth;
	}

	/**
	 * @param mixed $auth
	 */
	public function setAuth($auth) {
		$this->auth = $auth;
	}

	/**
	 * @return mixed
	 */
	public function getBody() {
		return $this->body;
	}

	/**
	 * @param mixed $body
	 */
	public function setBody($body) {
		$this->body = $body;
	}

	/**
	 * @return mixed
	 */
	public function getCookies() {
		return $this->cookies;
	}

	/**
	 * @param mixed $cookies
	 */
	public function setCookies($cookies) {
		$this->cookies = $cookies;
	}

	/**
	 * @return mixed
	 */
	public function getHeaders() {
		return $this->headers;
	}

	/**
	 * @param mixed $headers
	 */
	public function setHeaders($headers) {
		$this->headers = $headers;
	}

	/**
	 * @return mixed
	 */
	public function getMethod() {
		return $this->method;
	}

	/**
	 * @param mixed $method
	 */
	public function setMethod($method) {
		$this->method = $method;
	}

	/**
	 * @return mixed
	 */
	public function getQueryString() {
		return $this->queryString;
	}

	/**
	 * @param mixed $queryString
	 */
	public function setQueryString($queryString) {
		$this->queryString = $queryString;
	}

	/**
	 * @return wfWAFHTTPTransport
	 */
	public function getTransport() {
		return $this->transport;
	}

	/**
	 * @param wfWAFHTTPTransport $transport
	 */
	public function setTransport($transport) {
		$this->transport = $transport;
	}
}

class wfWAFHTTPResponse {

	private $body;
	private $headers;
	private $statusCode;

	/**
	 * @return mixed
	 */
	public function getBody() {
		return $this->body;
	}

	/**
	 * @param mixed $body
	 */
	public function setBody($body) {
		$this->body = $body;
	}

	/**
	 * @return mixed
	 */
	public function getHeaders() {
		return $this->headers;
	}

	/**
	 * @param mixed $headers
	 */
	public function setHeaders($headers) {
		$this->headers = $headers;
	}

	/**
	 * @return mixed
	 */
	public function getStatusCode() {
		return $this->statusCode;
	}

	/**
	 * @param mixed $statusCode
	 */
	public function setStatusCode($statusCode) {
		$this->statusCode = $statusCode;
	}
}

abstract class wfWAFHTTPTransport {
	private static $instance;
	
	private $_connectTimeout = null;
	private $_timeout = 5;

	/**
	 * @return wfWAFHTTPTransport
	 * @throws wfWAFHTTPTransportException
	 */
	public static function getInstance() {
		if (!self::$instance) {
			self::$instance = self::getFirstTransport();
		}
		return self::$instance;
	}

	/**
	 * @param mixed $instance
	 */
	public static function setInstance($instance) {
		self::$instance = $instance;
	}

	/**
	 * @return wfWAFHTTPTransport
	 * @throws wfWAFHTTPTransportException
	 */
	public static function getFirstTransport() {
		if (function_exists('curl_init')) {
			return new wfWAFHTTPTransportCurl();
		} else if (function_exists('file_get_contents')) {
			return new wfWAFHTTPTransportStreams();
		}
		throw new wfWAFHTTPTransportException('No valid HTTP transport found.');
	}

	/**
	 * @param array $cookieArray
	 * @return string
	 */
	public static function buildCookieString($cookieArray) {
		$cookies = '';
		foreach ($cookieArray as $cookieName => $value) {
			$cookies .= "$cookieName=" . urlencode($value) . '; ';
		}
		$cookies = rtrim($cookies);
		return $cookies;
	}

	/**
	 * @param wfWAFHTTP $request
	 * @return wfWAFHTTPResponse|bool
	 */
	abstract public function send($request);
	
	public function setConnectTimeout($connectTimeout) {
		$this->_connectTimeout = $connectTimeout;
	}
	public function getConnectTimeout() {
		return $this->_connectTimeout;
	}
	
	public function setTimeout($timeout) {
		$this->_timeout = $timeout;
	}
	public function getTimeout() {
		return $this->_timeout;
	}
}

class wfWAFHTTPTransportCurl extends wfWAFHTTPTransport {

	/**
	 * @todo Proxy settings
	 * @param wfWAFHTTP $request
	 * @return wfWAFHTTPResponse|bool
	 */
	public function send($request) {
		$url = $request->getUrl();
		if ($queryString = $request->getQueryString()) {
			if (is_array($queryString)) {
				$queryString = http_build_query($queryString, '', '&');
			}
			$url .= (wfWAFUtils::strpos($url, '?') !== false ? '&' : '?') . $queryString;
		}

		$ch = curl_init($url);
		switch (wfWAFUtils::strtolower($request->getMethod())) {
			case 'post':
				curl_setopt($ch, CURLOPT_POST, 1);
				break;
		}
		if ($body = $request->getBody()) {
			curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
		}
		if ($auth = $request->getAuth()) {
			curl_setopt($ch, CURLOPT_USERPWD, $auth['user'] . ':' . $auth['password']);
		}
		if ($cookies = $request->getCookies()) {
			if (is_array($cookies)) {
				$cookies = self::buildCookieString($cookies);
			}
			curl_setopt($ch, CURLOPT_COOKIE, $cookies);
		}
		if ($headers = $request->getHeaders()) {
			if (is_array($headers)) {
				$_headers = array();
				foreach ($headers as $header => $value) {
					$_headers[] = $header . ': ' . $value;
				}
				curl_setopt($ch, CURLOPT_HTTPHEADER, $_headers);
			}
		}
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
		if ($this->getConnectTimeout() !== null) { curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->getConnectTimeout()); }
		curl_setopt($ch, CURLOPT_TIMEOUT, $this->getTimeout());
		if (defined('CURLOPT_ACCEPT_ENCODING')) {
			curl_setopt($ch, CURLOPT_ACCEPT_ENCODING, ''); //The empty string is a magic value that means "send all supported encodings"
		}
		else if (defined('CURLOPT_ENCODING')) {
			curl_setopt($ch, CURLOPT_ENCODING, '');
		}
		curl_setopt($ch, CURLOPT_HEADER, 1);
		curl_setopt($ch, CURLOPT_CAINFO, WFWAF_PATH . 'cacert.pem'); //On some systems curl uses an outdated root certificate chain file
		$curlResponse = curl_exec($ch);
		
		if ($curlResponse !== false) {
			$headerSize = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
			$header = wfWAFUtils::substr($curlResponse, 0, $headerSize);
			$body = wfWAFUtils::substr($curlResponse, $headerSize);

			$response = new wfWAFHTTPResponse();
			$response->setBody($body);
			$response->setHeaders($header);
			$response->setStatusCode(curl_getinfo($ch, CURLINFO_HTTP_CODE));
			return $response;
		}
		return false;
	}
}

class wfWAFHTTPTransportStreams extends wfWAFHTTPTransport {

	/**
	 * @todo Implement wfWAFHTTPTransportStreams::send.
	 * @param wfWAFHTTP $request
	 * @return mixed
	 * @throws wfWAFHTTPTransportException
	 */
	public function send($request) {
		$timeout = $this->getTimeout();

		$url = $request->getUrl();
		if ($queryString = $request->getQueryString()) {
			if (is_array($queryString)) {
				$queryString = http_build_query($queryString, '', '&');
			}
			$url .= (wfWAFUtils::strpos($url, '?') !== false ? '&' : '?') . $queryString;
		}

		$urlParsed = parse_url($request->getUrl());

		$headers = "Host: $urlParsed[host]\r\n";
		if ($auth = $request->getAuth()) {
			$headers .= 'Authorization: Basic ' . base64_encode($auth['user'] . ':' . $auth['password']) . "\r\n";
		}
		if ($cookies = $request->getCookies()) {
			if (is_array($cookies)) {
				$cookies = self::buildCookieString($cookies);
			}
			$headers .= "Cookie: $cookies\r\n";
		}
		$hasUA = false;
		if ($_headers = $request->getHeaders()) {
			if (is_array($_headers)) {
				foreach ($_headers as $header => $value) {
					if (trim(wfWAFUtils::strtolower($header)) === 'user-agent') {
						$hasUA = true;
					}
					$headers .= $header . ': ' . $value . "\r\n";
				}
			}
		}
		if (!$hasUA) {
			$headers .= "User-Agent: Wordfence Streams UA\r\n";
		}

		$httpOptions = array(
			'method'          => $request->getMethod(),
			'ignore_errors'   => true,
			'timeout'         => $timeout,
			'follow_location' => 1,
			'max_redirects'   => 5,
		);
		if (wfWAFUtils::strlen($request->getBody()) > 0) {
			$httpOptions['content'] = $request->getBody();
			$headers .= 'Content-Length: ' . wfWAFUtils::strlen($httpOptions['content']) . "\r\n";
		}
		$httpOptions['header'] = $headers;

		$options = array(
			wfWAFUtils::strtolower($urlParsed['scheme']) => $httpOptions,
		);

		$context = stream_context_create($options);
		$stream = fopen($request->getUrl(), 'r', false, $context);
		if (!is_resource($stream)) {
			return false;
		}

		$metaData = stream_get_meta_data($stream);

		// Get the HTTP response code
		$httpResponse = array_shift($metaData['wrapper_data']);

		if (preg_match_all('/(\w+\/\d\.\d) (\d{3})/', $httpResponse, $matches) !== false) {
			// $protocol = $matches[1][0];
			$status = (int) $matches[2][0];
		} else {
			// $protocol = null;
			$status = null;
		}

		$responseObj = new wfWAFHTTPResponse();
		$responseObj->setHeaders(join("\r\n", $metaData['wrapper_data']));
		$responseObj->setBody(stream_get_contents($stream));
		$responseObj->setStatusCode($status);

		// Close the stream after use
		fclose($stream);

		return $responseObj;
	}
}

class wfWAFHTTPTransportException extends wfWAFException {
}
}vendor/wordfence/wf-waf/src/lib/parser/sqli.php000064400000251436150755146450015545 0ustar00<?php
if (defined('WFWAF_VERSION') && !defined('WFWAF_RUN_COMPLETE')) {

require_once dirname(__FILE__) . '/lexer.php';

class wfWAFSQLiParser extends wfWAFBaseParser {

	const FLAG_PARSE_MYSQL_PORTABLE_COMMENTS = wfWAFSQLiLexer::FLAG_TOKENIZE_MYSQL_PORTABLE_COMMENTS;

	/**
	 * @param string $param
	 * @return bool
	 */
	public static function testForSQLi($param) {
		static $instance;
		static $tests;
		if (!$instance) {
			$instance = new self(new wfWAFSQLiLexer());
		}
		if (!$tests) {
			// SQL statement and token count for lexer
			$tests = array(
				array('%s', 1),
				array('SELECT * FROM t WHERE i = %s ', 7),
				array("SELECT * FROM t WHERE i = '%s' ", 7),
				array('SELECT * FROM t WHERE i = "%s" ', 7),
				array('SELECT * FROM t WHERE i = (%s) ', 9),
				array("SELECT * FROM t WHERE i = ('%s') ", 9),
				array('SELECT * FROM t WHERE i = ("%s") ', 9),
				array('SELECT * FROM t WHERE i = ((%s)) ', 11),
				array("SELECT * FROM t WHERE i = (('%s')) ", 11),
				array('SELECT * FROM t WHERE i = (("%s")) ', 11),
				array('SELECT * FROM t WHERE i = (((%s))) ', 13),
				array("SELECT * FROM t WHERE i = ((('%s'))) ", 13),
				array('SELECT * FROM t WHERE i = ((("%s"))) ', 13),

				array('SELECT * FROM t WHERE i = %s and j = (1
) ', 12),
				array("SELECT * FROM t WHERE i = '%s' and j = (1
) ", 12),
				array('SELECT * FROM t WHERE i = "%s" and j = (1
) ', 12),

				array('SELECT MATCH(t) AGAINST (%s) from t ', 10),
				array("SELECT MATCH(t) AGAINST ('%s') from t ", 10),
				array('SELECT MATCH(t) AGAINST ("%s") from t ', 10),

//				array('SELECT CASE WHEN %s THEN 1 ELSE 0 END from t ', 8),
//				array("SELECT CASE WHEN '%s' THEN 1 ELSE 0 END from t ", 8),
//				array('SELECT CASE WHEN "%s" THEN 1 ELSE 0 END from t ', 8),
//
//				array('SELECT (CASE WHEN (%s) THEN 1 ELSE 0 END) from t ', 12),
//				array("SELECT (CASE WHEN ('%s') THEN 1 ELSE 0 END) from t ", 12),
//				array('SELECT (CASE WHEN ("%s") THEN 1 ELSE 0 END) from t ', 12),

				array('SELECT * FROM (select %s) ', 6),
				array("SELECT * FROM (select '%s') ", 6),
				array('SELECT * FROM (select "%s") ', 6),
				array('SELECT * FROM (select (%s)) ', 8),
				array("SELECT * FROM (select ('%s')) ", 8),
				array('SELECT * FROM (select ("%s")) ', 8),
				array('SELECT * FROM (select ((%s))) ', 10),
				array("SELECT * FROM (select (('%s'))) ", 10),
				array('SELECT * FROM (select (("%s"))) ', 10),
//
//				array('SELECT * FROM t JOIN t2 on i = %s ', 9),
//				array("SELECT * FROM t JOIN t2 on i = '%s' ", 9),
//				array('SELECT * FROM t JOIN t2 on i = "%s" ', 9),
//				array('SELECT * FROM t JOIN t2 on i = (%s) ', 11),
//				array("SELECT * FROM t JOIN t2 on i = ('%s') ", 11),
//				array('SELECT * FROM t JOIN t2 on i = ("%s") ', 11),
//				array('SELECT * FROM t JOIN t2 on i = ((%s)) ', 13),
//				array("SELECT * FROM t JOIN t2 on i = (('%s')) ", 13),
//				array('SELECT * FROM t JOIN t2 on i = (("%s")) ', 13),
//				array('SELECT * FROM t JOIN t2 on i = (((%s))) ', 15),
//				array("SELECT * FROM t JOIN t2 on i = ((('%s'))) ", 15),
//				array('SELECT * FROM t JOIN t2 on i = ((("%s"))) ', 15),

				array('SELECT * FROM %s ', 3),
				array('INSERT INTO t (col) VALUES (%s) ', 9),
				array("INSERT INTO t (col) VALUES ('%s') ", 9),
				array('INSERT INTO t (col) VALUES ("%s") ', 9),
				array('UPDATE t1 SET col1 = %s ', 5),
				array('UPDATE t1 SET col1 = \'%s\' ', 5),
			);
		}
		$lexerFlags = array(0, wfWAFSQLiLexer::FLAG_TOKENIZE_MYSQL_PORTABLE_COMMENTS);
		foreach ($lexerFlags as $flags) {
			foreach ($tests as $test) {
//				$startTime = microtime(true);
				list($sql, $expectedTokenCount) = $test;
				try {
					$instance->setFlags($flags);
					$instance->setSubject(sprintf($sql, $param));
					if (($instance->hasMoreThanNumTokens($expectedTokenCount) && $instance->evaluate())
						|| $instance->hasMultiplePortableCommentVersions()) {
//						printf("%s took %f seconds\n", $sql, microtime(true) - $startTime);
						return true;
					}
//					printf("%s took %f seconds\n", $sql, microtime(true) - $startTime);
				} catch (wfWAFParserSyntaxError $e) {

				}
			}
		}
		return false;
	}

	private $subject;

	/**
	 * @var int
	 */
	private $flags;
	/** @var wfWAFSQLiLexer */
	protected $lexer;
	private $portableCommentVersions = array();

	private $intervalUnits = array(
		'SECOND',
		'MINUTE',
		'HOUR',
		'DAY_SYM',
		'WEEK',
		'MONTH',
		'QUARTER',
		'YEAR',
		'SECOND_MICROSECOND',
		'MINUTE_MICROSECOND',
		'MINUTE_SECOND',
		'HOUR_MICROSECOND',
		'HOUR_SECOND',
		'HOUR_MINUTE',
		'DAY_MICROSECOND',
		'DAY_SECOND',
		'DAY_MINUTE',
		'DAY_HOUR',
		'YEAR_MONTH',
	);

	private $reservedWords = array(
		"_FILENAME",
		"ACCESSIBLE",
		"ADD",
		"ALL",
		"ALTER",
		"ANALYZE",
		"AND",
		"AS",
		"ASC",
		"ASENSITIVE",
		"BEFORE",
		"BETWEEN",
		"BIGINT",
		"BINARY",
		"BLOB",
		"BOTH",
		"BY",
		"CALL",
		"CASCADE",
		"CASE",
		"CHANGE",
		"CHAR",
		"CHARACTER",
		"CHECK",
		"COLLATE",
		"COLUMN",
		"CONDITION",
		"CONSTRAINT",
		"CONTINUE",
		"CONVERT",
		"CREATE",
		"CROSS",
		"CURRENT_DATE",
		"CURRENT_TIME",
		"CURRENT_TIMESTAMP",
		"CURRENT_USER",
		"CURSOR",
		"DATABASE",
		"DATABASES",
		"DAY_HOUR",
		"DAY_MICROSECOND",
		"DAY_MINUTE",
		"DAY_SECOND",
		"DEC",
		"DECIMAL",
		"DECLARE",
		"DEFAULT",
		"DELAYED",
		"DELETE",
		"DESC",
		"DESCRIBE",
		"DETERMINISTIC",
		"DISTINCT",
		"DISTINCTROW",
		"DIV",
		"DOUBLE",
		"DROP",
//		"DUAL", // works as a table name ???
		"EACH",
		"ELSE",
		"ELSEIF",
		"ENCLOSED",
		"ESCAPED",
		"EXISTS",
		"EXIT",
		"EXPLAIN",
		"FALSE",
		"FETCH",
		"FLOAT",
		"FLOAT4",
		"FLOAT8",
		"FOR",
		"FORCE",
		"FOREIGN",
		"FROM",
		"FULLTEXT",
		"GRANT",
		"GROUP",
		"HAVING",
		"HIGH_PRIORITY",
		"HOUR_MICROSECOND",
		"HOUR_MINUTE",
		"HOUR_SECOND",
		"IF",
		"IGNORE",
		"IN",
		"INDEX",
		"INFILE",
		"INNER",
		"INOUT",
		"INSENSITIVE",
		"INSERT",
		"INT",
		"INT1",
		"INT2",
		"INT3",
		"INT4",
		"INT8",
		"INTEGER",
		"INTERVAL",
		"INTO",
		"IS",
		"ITERATE",
		"JOIN",
		"KEY",
		"KEYS",
		"KILL",
		"LEADING",
		"LEAVE",
		"LEFT",
		"LIKE",
		"LIMIT",
		"LINEAR",
		"LINES",
		"LOAD",
		"LOCALTIME",
		"LOCALTIMESTAMP",
		"LOCK",
		"LONG",
		"LONGBLOB",
		"LONGTEXT",
		"LOOP",
		"LOW_PRIORITY",
		"MASTER_SSL_VERIFY_SERVER_CERT",
		"MATCH",
		"MAXVALUE",
		"MEDIUMBLOB",
		"MEDIUMINT",
		"MEDIUMTEXT",
		"MIDDLEINT",
		"MINUTE_MICROSECOND",
		"MINUTE_SECOND",
		"MOD",
		"MODIFIES",
		"NATURAL",
		"NOT",
		"NO_WRITE_TO_BINLOG",
		"NULL",
		"NUMERIC",
		"ON",
		"OPTIMIZE",
		"OPTION",
		"OPTIONALLY",
		"OR",
		"ORDER",
		"OUT",
		"OUTER",
		"OUTFILE",
		"PRECISION",
		"PRIMARY",
		"PROCEDURE",
		"PURGE",
		"RANGE",
		"READ",
		"READS",
		"READ_WRITE",
		"REAL",
		"REFERENCES",
		"REGEXP",
		"RELEASE",
		"RENAME",
		"REPEAT",
		"REPLACE",
		"REQUIRE",
		"RESIGNAL",
		"RESTRICT",
		"RETURN",
		"REVOKE",
		"RIGHT",
		"RLIKE",
		"SCHEMA",
		"SCHEMAS",
		"SECOND_MICROSECOND",
		"SELECT",
		"SENSITIVE",
		"SEPARATOR",
		"SET",
		"SHOW",
		"SIGNAL",
		"SMALLINT",
		"SPATIAL",
		"SPECIFIC",
		"SQL",
		"SQLEXCEPTION",
		"SQLSTATE",
		"SQLWARNING",
		"SQL_BIG_RESULT",
		"SQL_CALC_FOUND_ROWS",
		"SQL_SMALL_RESULT",
		"SSL",
		"STARTING",
		"STRAIGHT_JOIN",
		"TABLE",
		"TERMINATED",
		"THEN",
		"TINYBLOB",
		"TINYINT",
		"TINYTEXT",
		"TO",
		"TRAILING",
		"TRIGGER",
		"TRUE",
		"UNDO",
		"UNION",
		"UNIQUE",
		"UNLOCK",
		"UNSIGNED",
		"UPDATE",
		"USAGE",
		"USE",
		"USING",
		"UTC_DATE",
		"UTC_TIME",
		"UTC_TIMESTAMP",
		"VALUES",
		"VARBINARY",
		"VARCHAR",
		"VARCHARACTER",
		"VARYING",
		"WHEN",
		"WHERE",
		"WHILE",
		"WITH",
		"WRITE",
		"XOR",
		"YEAR_MONTH",
		"ZEROFILL",
	);
	private $keywords = array(
		"ACCESSIBLE",
		"ACTION",
		"ADD",
		"AFTER",
		"AGAINST",
		"AGGREGATE",
		"ALGORITHM",
		"ALL",
		"ALTER",
		"ANALYZE",
		"AND",
		"ANY",
		"AS",
		"ASC",
		"ASCII",
		"ASENSITIVE",
		"AT",
		"AUTHORS",
		"AUTOEXTEND_SIZE",
		"AUTO_INCREMENT",
		"AVG",
		"AVG_ROW_LENGTH",
		"BACKUP",
		"BEFORE",
		"BEGIN",
		"BETWEEN",
		"BIGINT",
		"BINARY",
		"BINLOG",
		"BIT",
		"BLOB",
		"BLOCK",
		"BOOL",
		"BOOLEAN",
		"BOTH",
		"BTREE",
		"BY",
		"BYTE",
		"CACHE",
		"CALL",
		"CASCADE",
		"CASCADED",
		"CASE",
		"CATALOG_NAME",
		"CHAIN",
		"CHANGE",
		"CHANGED",
		"CHAR",
		"CHARACTER",
		"CHARSET",
		"CHECK",
		"CHECKSUM",
		"CIPHER",
		"CLASS_ORIGIN",
		"CLIENT",
		"CLOSE",
		"COALESCE",
		"CODE",
		"COLLATE",
		"COLLATION",
		"COLUMN",
		"COLUMNS",
		"COLUMN_NAME",
		"COMMENT",
		"COMMIT",
		"COMMITTED",
		"COMPACT",
		"COMPLETION",
		"COMPRESSED",
		"CONCURRENT",
		"CONDITION",
		"CONNECTION",
		"CONSISTENT",
		"CONSTRAINT",
		"CONSTRAINT_CATALOG",
		"CONSTRAINT_NAME",
		"CONSTRAINT_SCHEMA",
		"CONTAINS",
		"CONTEXT",
		"CONTINUE",
		"CONTRIBUTORS",
		"CONVERT",
		"CPU",
		"CREATE",
		"CROSS",
		"CUBE",
		"CURRENT_DATE",
		"CURRENT_TIME",
		"CURRENT_TIMESTAMP",
		"CURRENT_USER",
		"CURSOR",
		"CURSOR_NAME",
		"DATA",
		"DATABASE",
		"DATABASES",
		"DATAFILE",
		"DATE",
		"DATETIME",
		"DAY",
		"DAY_HOUR",
		"DAY_MICROSECOND",
		"DAY_MINUTE",
		"DAY_SECOND",
		"DEALLOCATE",
		"DEC",
		"DECIMAL",
		"DECLARE",
		"DEFAULT",
		"DEFINER",
		"DELAYED",
		"DELAY_KEY_WRITE",
		"DELETE",
		"DESC",
		"DESCRIBE",
		"DES_KEY_FILE",
		"DETERMINISTIC",
		"DIRECTORY",
		"DISABLE",
		"DISCARD",
		"DISK",
		"DISTINCT",
		"DISTINCTROW",
		"DIV",
		"DO",
		"DOUBLE",
		"DROP",
		"DUAL",
		"DUMPFILE",
		"DUPLICATE",
		"DYNAMIC",
		"EACH",
		"ELSE",
		"ELSEIF",
		"ENABLE",
		"ENCLOSED",
		"END",
		"ENDS",
		"ENGINE",
		"ENGINES",
		"ENUM",
		"ERROR",
		"ERRORS",
		"ESCAPE",
		"ESCAPED",
		"EVENT",
		"EVENTS",
		"EVERY",
		"EXECUTE",
		"EXISTS",
		"EXIT",
		"EXPANSION",
		"EXPLAIN",
		"EXTENDED",
		"EXTENT_SIZE",
		"FALSE",
		"FAST",
		"FAULTS",
		"FETCH",
		"FIELDS",
		"FILE",
		"FIRST",
		"FIXED",
		"FLOAT",
		"FLOAT4",
		"FLOAT8",
		"FLUSH",
		"FOR",
		"FORCE",
		"FOREIGN",
		"FOUND",
		"FRAC_SECOND",
		"FROM",
		"FULL",
		"FULLTEXT",
		"FUNCTION",
		"GENERAL",
		"GEOMETRY",
		"GEOMETRYCOLLECTION",
		"GET_FORMAT",
		"GLOBAL",
		"GRANT",
		"GRANTS",
		"GROUP",
		"HANDLER",
		"HASH",
		"HAVING",
		"HELP",
		"HIGH_PRIORITY",
		"HOST",
		"HOSTS",
		"HOUR",
		"HOUR_MICROSECOND",
		"HOUR_MINUTE",
		"HOUR_SECOND",
		"IDENTIFIED",
		"IF",
		"IGNORE",
		"IGNORE_SERVER_IDS",
		"IMPORT",
		"IN",
		"INDEX",
		"INDEXES",
		"INFILE",
		"INITIAL_SIZE",
		"INNER",
		"INNOBASE",
		"INNODB",
		"INOUT",
		"INSENSITIVE",
		"INSERT",
		"INSERT_METHOD",
		"INSTALL",
		"INT",
		"INT1",
		"INT2",
		"INT3",
		"INT4",
		"INT8",
		"INTEGER",
		"INTERVAL",
		"INTO",
		"INVOKER",
		"IO",
		"IO_THREAD",
		"IPC",
		"IS",
		"ISOLATION",
		"ISSUER",
		"ITERATE",
		"JOIN",
		"KEY",
		"KEYS",
		"KEY_BLOCK_SIZE",
		"KILL",
		"LANGUAGE",
		"LAST",
		"LEADING",
		"LEAVE",
		"LEAVES",
		"LEFT",
		"LESS",
		"LEVEL",
		"LIKE",
		"LIMIT",
		"LINEAR",
		"LINES",
		"LINESTRING",
		"LIST",
		"LOAD",
		"LOCAL",
		"LOCALTIME",
		"LOCALTIMESTAMP",
		"LOCK",
		"LOCKS",
		"LOGFILE",
		"LOGS",
		"LONG",
		"LONGBLOB",
		"LONGTEXT",
		"LOOP",
		"LOW_PRIORITY",
		"MASTER",
		"MASTER_CONNECT_RETRY",
		"MASTER_HEARTBEAT_PERIOD",
		"MASTER_HOST",
		"MASTER_LOG_FILE",
		"MASTER_LOG_POS",
		"MASTER_PASSWORD",
		"MASTER_PORT",
		"MASTER_SERVER_ID",
		"MASTER_SSL",
		"MASTER_SSL_CA",
		"MASTER_SSL_CAPATH",
		"MASTER_SSL_CERT",
		"MASTER_SSL_CIPHER",
		"MASTER_SSL_KEY",
		"MASTER_SSL_VERIFY_SERVER_CERT",
		"MASTER_USER",
		"MATCH",
		"MAXVALUE",
		"MAX_CONNECTIONS_PER_HOUR",
		"MAX_QUERIES_PER_HOUR",
		"MAX_ROWS",
		"MAX_SIZE",
		"MAX_UPDATES_PER_HOUR",
		"MAX_USER_CONNECTIONS",
		"MEDIUM",
		"MEDIUMBLOB",
		"MEDIUMINT",
		"MEDIUMTEXT",
		"MEMORY",
		"MERGE",
		"MESSAGE_TEXT",
		"MICROSECOND",
		"MIDDLEINT",
		"MIGRATE",
		"MINUTE",
		"MINUTE_MICROSECOND",
		"MINUTE_SECOND",
		"MIN_ROWS",
		"MOD",
		"MODE",
		"MODIFIES",
		"MODIFY",
		"MONTH",
		"MULTILINESTRING",
		"MULTIPOINT",
		"MULTIPOLYGON",
		"MUTEX",
		"MYSQL_ERRNO",
		"NAME",
		"NAMES",
		"NATIONAL",
		"NATURAL",
		"NCHAR",
		"NDB",
		"NDBCLUSTER",
		"NEW",
		"NEXT",
		"NO",
		"NODEGROUP",
		"NONE",
		"NOT",
		"NO_WAIT",
		"NO_WRITE_TO_BINLOG",
		"NULL",
		"NUMERIC",
		"NVARCHAR",
		"OFFSET",
		"OLD_PASSWORD",
		"ON",
		"ONE",
		"ONE_SHOT",
		"OPEN",
		"OPTIMIZE",
		"OPTION",
		"OPTIONALLY",
		"OPTIONS",
		"OR",
		"ORDER",
		"OUT",
		"OUTER",
		"OUTFILE",
		"OWNER",
		"PACK_KEYS",
		"PAGE",
		"PARSER",
		"PARTIAL",
		"PARTITION",
		"PARTITIONING",
		"PARTITIONS",
		"PASSWORD",
		"PHASE",
		"PLUGIN",
		"PLUGINS",
		"POINT",
		"POLYGON",
		"PORT",
		"PRECISION",
		"PREPARE",
		"PRESERVE",
		"PREV",
		"PRIMARY",
		"PRIVILEGES",
		"PROCEDURE",
		"PROCESSLIST",
		"PROFILE",
		"PROFILES",
		"PROXY",
		"PURGE",
		"QUARTER",
		"QUERY",
		"QUICK",
		"RANGE",
		"READ",
		"READS",
		"READ_ONLY",
		"READ_WRITE",
		"REAL",
		"REBUILD",
		"RECOVER",
		"REDOFILE",
		"REDO_BUFFER_SIZE",
		"REDUNDANT",
		"REFERENCES",
		"REGEXP",
		"RELAY",
		"RELAYLOG",
		"RELAY_LOG_FILE",
		"RELAY_LOG_POS",
		"RELAY_THREAD",
		"RELEASE",
		"RELOAD",
		"REMOVE",
		"RENAME",
		"REORGANIZE",
		"REPAIR",
		"REPEAT",
		"REPEATABLE",
		"REPLACE",
		"REPLICATION",
		"REQUIRE",
		"RESET",
		"RESIGNAL",
		"RESTORE",
		"RESTRICT",
		"RESUME",
		"RETURN",
		"RETURNS",
		"REVOKE",
		"RIGHT",
		"RLIKE",
		"ROLLBACK",
		"ROLLUP",
		"ROUTINE",
		"ROW",
		"ROWS",
		"ROW_FORMAT",
		"RTREE",
		"SAVEPOINT",
		"SCHEDULE",
		"SCHEMA",
		"SCHEMAS",
		"SCHEMA_NAME",
		"SECOND",
		"SECOND_MICROSECOND",
		"SECURITY",
		"SELECT",
		"SENSITIVE",
		"SEPARATOR",
		"SERIAL",
		"SERIALIZABLE",
		"SERVER",
		"SESSION",
		"SET",
		"SHARE",
		"SHOW",
		"SHUTDOWN",
		"SIGNAL",
		"SIGNED",
		"SIMPLE",
		"SLAVE",
		"SLOW",
		"SMALLINT",
		"SNAPSHOT",
		"SOCKET",
		"SOME",
		"SONAME",
		"SOUNDS",
		"SOURCE",
		"SPATIAL",
		"SPECIFIC",
		"SQL",
		"SQLEXCEPTION",
		"SQLSTATE",
		"SQLWARNING",
		"SQL_BIG_RESULT",
		"SQL_BUFFER_RESULT",
		"SQL_CACHE",
		"SQL_CALC_FOUND_ROWS",
		"SQL_NO_CACHE",
		"SQL_SMALL_RESULT",
		"SQL_THREAD",
		"SQL_TSI_DAY",
		"SQL_TSI_FRAC_SECOND",
		"SQL_TSI_HOUR",
		"SQL_TSI_MINUTE",
		"SQL_TSI_MONTH",
		"SQL_TSI_QUARTER",
		"SQL_TSI_SECOND",
		"SQL_TSI_WEEK",
		"SQL_TSI_YEAR",
		"SSL",
		"START",
		"STARTING",
		"STARTS",
		"STATUS",
		"STOP",
		"STORAGE",
		"STRAIGHT_JOIN",
		"STRING",
		"SUBCLASS_ORIGIN",
		"SUBJECT",
		"SUBPARTITION",
		"SUBPARTITIONS",
		"SUPER",
		"SUSPEND",
		"SWAPS",
		"SWITCHES",
		"TABLE",
		"TABLES",
		"TABLESPACE",
		"TABLE_CHECKSUM",
		"TABLE_NAME",
		"TEMPORARY",
		"TEMPTABLE",
		"TERMINATED",
		"TEXT",
		"THAN",
		"THEN",
		"TIME",
		"TIMESTAMP",
		"TIMESTAMPADD",
		"TIMESTAMPDIFF",
		"TINYBLOB",
		"TINYINT",
		"TINYTEXT",
		"TO",
		"TRAILING",
		"TRANSACTION",
		"TRIGGER",
		"TRIGGERS",
		"TRUE",
		"TRUNCATE",
		"TYPE",
		"TYPES",
		"UNCOMMITTED",
		"UNDEFINED",
		"UNDO",
		"UNDOFILE",
		"UNDO_BUFFER_SIZE",
		"UNICODE",
		"UNINSTALL",
		"UNION",
		"UNIQUE",
		"UNKNOWN",
		"UNLOCK",
		"UNSIGNED",
		"UNTIL",
		"UPDATE",
		"UPGRADE",
		"USAGE",
		"USE",
		"USER",
		"USER_RESOURCES",
		"USE_FRM",
		"USING",
		"UTC_DATE",
		"UTC_TIME",
		"UTC_TIMESTAMP",
		"VALUE",
		"VALUES",
		"VARBINARY",
		"VARCHAR",
		"VARCHARACTER",
		"VARIABLES",
		"VARYING",
		"VIEW",
		"WAIT",
		"WARNINGS",
		"WEEK",
		"WHEN",
		"WHERE",
		"WHILE",
		"WITH",
		"WORK",
		"WRAPPER",
		"WRITE",
		"X509",
		"XA",
		"XML",
		"XOR",
		"YEAR",
		"YEAR_MONTH",
		"ZEROFILL",
	);

	private $numberFunctions = array(
		'ABS',
		'ACOS',
		'ASIN',
		'ATAN2',
		'ATAN',
		'CEIL',
		'CEILING',
		'CONV',
		'COS',
		'COT',
		'CRC32',
		'DEGREES',
		'EXP',
		'FLOOR',
		'LN',
		'LOG10',
		'LOG2',
		'LOG',
		'MOD',
		'PI',
		'POW',
		'POWER',
		'RADIANS',
		'RAND',
		'ROUND',
		'SIGN',
		'SIN',
		'SQRT',
		'TAN',
		'TRUNCATE',
	);

	private $charFunctions = array(
		'ASCII_SYM',
		'BIN',
		'BIT_LENGTH',
		'CHAR_LENGTH',
		'CHAR',
		'CONCAT_WS',
		'CONCAT',
		'ELT',
		'EXPORT_SET',
		'FIELD',
		'FIND_IN_SET',
		'FORMAT',
		'FROM_BASE64',
		'HEX',
		'INSERT',
		'INSTR',
		'LEFT',
		'LENGTH',
		'LOAD_FILE',
		'LOCATE',
		'LOWER',
		'LPAD',
		'LTRIM',
		'MAKE_SET',
		'MID',
		'OCT',
		'ORD',
		'QUOTE',
		'REPEAT',
		'REPLACE',
		'REVERSE',
		'RIGHT',
		'RPAD',
		'RTRIM',
		'SOUNDEX',
		'SPACE',
		'STRCMP',
		'SUBSTRING_INDEX',
		'SUBSTRING',
		'TO_BASE64',
		'TRIM',
		'UNHEX',
		'UPPER',
		'WEIGHT_STRING',
	);

	private $timeFunctions = array(
		'ADDDATE',
		'ADDTIME',
		'CONVERT_TZ',
		'CURDATE',
		'CURTIME',
		'DATE_ADD',
		'DATE_FORMAT',
		'DATE_SUB',
		'DATE_SYM',
		'DATEDIFF',
		'DAYNAME',
		'DAYOFMONTH',
		'DAYOFWEEK',
		'DAYOFYEAR',
		'EXTRACT',
		'FROM_DAYS',
		'FROM_UNIXTIME',
		'GET_FORMAT',
		'HOUR',
		'LAST_DAY ',
		'MAKEDATE',
		'MAKETIME ',
		'MICROSECOND',
		'MINUTE',
		'MONTH',
		'MONTHNAME',
		'NOW',
		'PERIOD_ADD',
		'PERIOD_DIFF',
		'QUARTER',
		'SEC_TO_TIME',
		'SECOND',
		'STR_TO_DATE',
		'SUBTIME',
		'SYSDATE',
		'TIME_FORMAT',
		'TIME_TO_SEC',
		'TIME_SYM',
		'TIMEDIFF',
		'TIMESTAMP',
		'TIMESTAMPADD',
		'TIMESTAMPDIFF',
		'TO_DAYS',
		'TO_SECONDS',
		'UNIX_TIMESTAMP',
		'UTC_DATE',
		'UTC_TIME',
		'UTC_TIMESTAMP',
		'WEEK',
		'WEEKDAY',
		'WEEKOFYEAR',
		'YEAR',
		'YEARWEEK',
	);

	private $otherFunctions = array(
		'MAKE_SET', 'LOAD_FILE',
		'IF', 'IFNULL',
		'AES_ENCRYPT', 'AES_DECRYPT',
		'DECODE', 'ENCODE',
		'DES_DECRYPT', 'DES_ENCRYPT',
		'ENCRYPT', 'MD5',
		'OLD_PASSWORD', 'PASSWORD',
		'BENCHMARK', 'CHARSET', 'COERCIBILITY', 'COLLATION', 'CONNECTION_ID',
		'CURRENT_USER', 'DATABASE', 'SCHEMA', 'USER', 'SESSION_USER', 'SYSTEM_USER',
		'VERSION_SYM',
		'FOUND_ROWS', 'LAST_INSERT_ID', 'DEFAULT',
		'GET_LOCK', 'RELEASE_LOCK', 'IS_FREE_LOCK', 'IS_USED_LOCK', 'MASTER_POS_WAIT',
		'INET_ATON', 'INET_NTOA',
		'NAME_CONST',
		'SLEEP',
		'UUID',
		'VALUES',
	);

	private $groupFunctions = array(
		'AVG', 'COUNT', 'MAX_SYM', 'MIN_SYM', 'SUM',
		'BIT_AND', 'BIT_OR', 'BIT_XOR',
		'GROUP_CONCAT',
		'STD', 'STDDEV', 'STDDEV_POP', 'STDDEV_SAMP',
		'VAR_POP', 'VAR_SAMP', 'VARIANCE',
	);


	/**
	 * @param wfWAFSQLiLexer $lexer
	 * @param string $subject
	 * @param int $flags
	 */
	public function __construct($lexer, $subject = null, $flags = 0) {
		parent::__construct($lexer);
		$this->setSubject($subject);
		$this->setFlags($flags);
	}

	protected function _init() {
		$this->portableCommentVersions = array();
		$this->index = -1;
	}

	/**
	 * @param int $num
	 * @return bool
	 */
	public function hasMoreThanNumTokens($num) {
		$this->_init();

		$savePoint = $this->index;
		for ($i = 0; $i <= $num;) {
			$token=$this->nextToken();
			if($token){
				if(!$this->lexer->isValueLiteral($token->getType()))
					$i++;
			}
			else{
				$this->index = $savePoint;
				return false;
			}
		}
		$this->index = $savePoint;
		return true;
	}

	/**
	 * @return bool
	 */
	public function evaluate() {
		try {
			$this->parse();
			return true;
		} catch (wfWAFParserSyntaxError $e) {
			return false;
		}
	}

	public function parse() {
		$this->_init();
		if (
			$this->parseSelectStatement()
			|| $this->parseInsertStatement()
			|| $this->parseUpdateStatement()
//			|| $this->parseDeleteStatement()
//			|| $this->parseReplaceStatement()
		) {
			$token = $this->nextToken();
			if ($token && !$this->isTokenOfType($token, wfWAFSQLiLexer::SEMICOLON)) {
				$this->triggerSyntaxError($this->currentToken());
			}
		} else {
			$this->triggerSyntaxError($this->expectNextToken());
		}
	}

	/**
	 * @param int $index
	 * @return bool
	 */
	protected function getToken($index) {
		if (array_key_exists($index, $this->tokens)) {
			return $this->tokens[$index];
		}
		while ($token = $this->getLexer()->nextToken()) {
			if (!$this->isCommentToken($token)) {
				$this->tokens[$index] = $token;
				return $this->tokens[$index];
			}
		}
		return false;
	}


	/**
	 * @param wfWAFLexerToken $token
	 * @return bool
	 */
	public function isCommentToken($token) {
		if ($this->isTokenOfType($token, wfWAFSQLiLexer::MYSQL_PORTABLE_COMMENT_START)) {
			$this->portableCommentVersions[(int) preg_replace('/[^\d]/', '', $token->getValue())] = 1;
		}

		return $this->isTokenOfType($token, array(
			wfWAFSQLiLexer::SINGLE_LINE_COMMENT,
			wfWAFSQLiLexer::MULTI_LINE_COMMENT,
			wfWAFSQLiLexer::MYSQL_PORTABLE_COMMENT_START,
			wfWAFSQLiLexer::MYSQL_PORTABLE_COMMENT_END,
		));
	}

	public function hasMultiplePortableCommentVersions() {
		return count($this->portableCommentVersions) > 1;
	}

	/**
	 * Expects the next token to be an identifier with the supplied case-insensitive value
	 *
	 * @param $keyword
	 * @return wfWAFLexerToken
	 * @throws wfWAFParserSyntaxError
	 */
	protected function expectNextIdentifierEquals($keyword) {
		$nextToken = $this->expectNextToken();
		$this->expectTokenTypeEquals($nextToken, wfWAFSQLiLexer::UNQUOTED_IDENTIFIER);
		if ($nextToken->getLowerCaseValue() !== wfWAFUtils::strtolower($keyword)) {
			$this->triggerSyntaxError($nextToken);
		}
		return $nextToken;
	}

	private function parseSelectStatement() {
		$startIndex = $this->index;
		$hasSelect = false;
		while ($this->parseSelectExpression()) {
			$hasSelect = true;
			$savePoint = $this->index;
			if ($this->isIdentifierWithValue($this->nextToken(), 'union')) {
				$hasSelect = false;
				if (!$this->isIdentifierWithValue($this->nextToken(), 'all')) {
					$this->index--;
				}
				continue;
			}
			$this->index = $savePoint;
			break;
		}
		if ($hasSelect) {
			return true;
		}
		$this->index = $startIndex;
		return false;
	}

	private function parseSelectExpression() {
		$savePoint = $this->index;
		if ($this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::OPEN_PARENTHESIS) &&
			$this->parseSelectExpression() &&
			$this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::CLOSE_PARENTHESIS)
		) {
			return true;
		}
		$this->index = $savePoint;

		if ($this->parseSelect()) {
			if ($this->parseFrom()) {
				$this->parseWhere();
				$this->parseProcedure();
				$this->parseGroupBy();
				$this->parseHaving();
			}
			$this->parseOrderBy();
			$this->parseLimit();

			return true;
		}
		return false;
	}

	/**
	 * @throws wfWAFParserSyntaxError
	 */
	private function parseSelect() {
		$startPoint = $this->index;
		if ($this->isIdentifierWithValue($this->nextToken(), 'select')) {
			$optionalSelectParamsRegex = '/ALL|DISTINCT(?:ROW)?|HIGH_PRIORITY|MAX_STATEMENT_TIME|STRAIGHT_JOIN|SQL_SMALL_RESULT|SQL_BIG_RESULT|SQL_BUFFER_RESULT|SQL_CACHE|SQL_NO_CACHE|SQL_CALC_FOUND_ROWS/i';
			while (true) {
				$savePoint = $this->index;
				$token = $this->nextToken();
				if ($token) {
					$value = $token->getLowerCaseValue();
					if (preg_match($optionalSelectParamsRegex, $value)) {
						if ($value == 'max_statement_time') {
							$this->expectTokenTypeEquals($this->expectNextToken(), wfWAFSQLiLexer::EQUALS_SYMBOL);
							$this->expectTokenTypeInArray($this->expectNextToken(), array(
								wfWAFSQLiLexer::INTEGER_LITERAL,
								wfWAFSQLiLexer::BINARY_NUMBER_LITERAL,
								wfWAFSQLiLexer::HEX_NUMBER_LITERAL,
								wfWAFSQLiLexer::BINARY_NUMBER_LITERAL,
							));
						}
						continue;
					}
				}
				$this->index = $savePoint;
				break;
			}
			return $this->parseSelectList();
		}
		$this->index = $startPoint;
		return false;
	}

	/**
	 * @throws wfWAFParserSyntaxError
	 */
	private function parseSelectList() {
		$startPoint = $this->index;
		$hasSelects = false;
		if ($this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::ASTERISK)) {
			$hasSelects = true;
			if (!$this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::COMMA)) {
				// Just SELECT * [FROM ...]
				$this->index--;
				return true;
			}
		} else {
			$this->index = $startPoint;
		}
		while ($this->parseDisplayedColumn()) {
			$hasSelects = true;
			if ($this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::COMMA)) {
				continue;
			}
			$this->index--;
			break;
		}
		if ($hasSelects) {
			return true;
		}
		$this->index = $startPoint;
		return false;
	}

	private function parseDisplayedColumn() {
		/*
		( table_spec DOT ASTERISK )
		|
		( column_spec (alias)? )
		|
		( bit_expr (alias)? )
		*/
		$savePoint = $this->index;
		if ($this->parseTableSpec() &&
			$this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::DOT) &&
			$this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::ASTERISK)
		) {
			return true;
		}
		$this->index = $savePoint;

		$savePoint = $this->index;
		if ($this->parseExpression()) {
			$this->parseAlias();
			return true;
		}
		$this->index = $savePoint;

		$savePoint = $this->index;
		if ($this->parseColumnSpec()) {
			$this->parseAlias();
			return true;
		}
		$this->index = $savePoint;

		return false;
	}

	/**
	 * @return bool
	 */
	private function parseExpressionList() {
		$startIndex = $this->index;
		if ($this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::OPEN_PARENTHESIS)) {
			$hasExpressions = false;
			while ($this->parseExpression()) {
				$hasExpressions = true;
				if ($this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::COMMA)) {
					continue;
				}
				$this->index--;
				break;
			}
			if ($hasExpressions && $this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::CLOSE_PARENTHESIS)) {
				return true;
			}
		}
		$this->index = $startIndex;
		return false;
	}

	private function parseExpression() {
		// Combines these:
		// exp_factor3 ( AND_SYM exp_factor3 )* ;
		// expression:	exp_factor1 ( OR_SYM exp_factor1 )* ;
		// exp_factor1:	exp_factor2 ( XOR exp_factor2 )* ;
		// exp_factor2:	exp_factor3 ( AND_SYM exp_factor3 )* ;

		$savePoint = $this->index;
		$hasExpression = false;
		while ($this->parseExpressionFactor3()) {
			$hasExpression = true;
			$savePoint2 = $this->index;
			$token = $this->nextToken();
			if ($this->isOrToken($token) || $this->isAndToken($token) || $this->isIdentifierWithValue($token, 'xor')) {
				continue;
			}
			$this->index = $savePoint2;
			break;
		}
		if ($hasExpression) {
			return true;
		}
		$this->index = $savePoint;
		return false;
	}

	private function parseExpressionFactor3() {
		// (NOT_SYM)? exp_factor4 ;
		$savePoint = $this->index;
		if (!$this->isNotSymbolToken($this->nextToken())) {
			$this->index--;
		}
		if ($this->parseExpressionFactor4()) {
			return true;
		}
		$this->index = $savePoint;
		return false;
	}

	private function parseExpressionFactor4() {
		// bool_primary ( IS_SYM (NOT_SYM)? (boolean_literal|NULL_SYM) )? ;
		$savePoint = $this->index;
		if ($this->parseBoolPrimary()) {
			$savePoint = $this->index;
			if ($this->isIdentifierWithValue($this->nextToken(), 'is')) {
				if (!$this->isNotSymbolToken($this->nextToken())) {
					$this->index--;
				}
				if ($this->isIdentifierWithValue($this->nextToken(), array(
					'true', 'false', 'null',
				))
				) {
					return true;
				}
			}
			$this->index = $savePoint;
			return true;
		}
		$this->index = $savePoint;
		return false;
	}

	/**
	 * @return bool
	 */
	private function parseBoolPrimary() {
		$startIndex = $this->index;
		$token = $this->nextToken();
		if ($token) {
			$hasNot = false;
			if ($this->isNotSymbolToken($token)) {
				$hasNot = true;
				$token = $this->nextToken();
			}
			$val = $token->getLowerCaseValue();
			if ($token->getType() === wfWAFSQLiLexer::UNQUOTED_IDENTIFIER) {
				if ($val === 'exists' && $this->parseSubquery()) {
					return true;
				} else if ($hasNot) {
					$this->index = $startIndex;
					return false;
				}
			}
			if (!$hasNot) {
				$this->index = $startIndex;
			}
		}

		if ($this->parsePredicate()) {
			$savePoint = $this->index;
			$opToken = $this->nextToken();
			if ($opToken) {
				switch ($opToken->getType()) {
					case wfWAFSQLiLexer::EQUALS_SYMBOL:
					case wfWAFSQLiLexer::LESS_THAN:
					case wfWAFSQLiLexer::GREATER_THAN:
					case wfWAFSQLiLexer::LESS_THAN_EQUAL_TO:
					case wfWAFSQLiLexer::GREATER_THAN_EQUAL_TO:
					case wfWAFSQLiLexer::NOT_EQUALS:
					case wfWAFSQLiLexer::SET_VAR:
						$savePoint2 = $this->index;
						if ($this->isIdentifierWithValue($this->nextToken(), array(
								'any', 'all'
							)) &&
							$this->parseSubquery()
						) {
							return true;
						}
						$this->index = $savePoint2;

						$savePoint2 = $this->index;
						if ($this->testForSubquery() && $this->parseSubquery()) {
							return true;
						}
						$this->index = $savePoint2;

						if ($this->parsePredicate()) {
							return true;
						}
						$this->index = $startIndex;
						return false;
				}
			}
			$this->index = $savePoint;
			return true;
		}
		$this->index = $startIndex;
		return false;
	}

	private function parsePredicate() {
		$startIndex = $this->index;
		if ($this->parseBitExpression()) {
			$savePoint = $this->index;
			$token = $this->nextToken();
			if ($token) {
				if ($hasNot = $this->isNotSymbolToken($token)) {
					$token = $this->nextToken();
					if (!$token) {
						$this->index = $startIndex;
						return false;
					}
				}
				$val = $token->getLowerCaseValue();

				if ($token->getType() === wfWAFSQLiLexer::UNQUOTED_IDENTIFIER) {
					switch ($val) {
						case 'in':
							if ($this->parseSubquery() || $this->parseExpressionList()) {
								return true;
							}
							break;

						case 'between':
							if ($this->parseBitExpression() && $this->isIdentifierWithValue($this->nextToken(), 'and') &&
								$this->parsePredicate()
							) {
								return true;
							}
							break;

						case 'sounds':
							if ($this->isIdentifierWithValue($this->nextToken(), 'like') &&
								$this->parseBitExpression()
							) {
								return true;
							}
							break;

						case 'like':
						case 'rlike':
							if ($this->parseSimpleExpression()) {
								// We've got a LIKE statement at this point
								$savePoint = $this->index;
								if ($this->isIdentifierWithValue($this->nextToken(), 'escape') &&
									$this->parseSimpleExpression()
								) {
									return true;
								}
								$this->index = $savePoint;
								return true;
							}
							break;

						case 'regexp':
							if ($this->parseBitExpression()) {
								return true;
							}
							break;

						default:
							if ($hasNot) {
								$this->index = $startIndex;
								return false;
							}
							break;
					}
				}
			}
			$this->index = $savePoint;
			return true;
		}
		$this->index = $startIndex;
		return false;
	}

	/**
	 * @return bool
	 */
	private function parseBitExpression() {
		// factor1 ( VERTBAR factor1 )? ;
		$savePoint = $this->index;
		if ($this->parseBitExprFactor5()) {
			$savePoint = $this->index;
			$token = $this->nextToken();
			if (($this->isTokenOfType($token, array(
						wfWAFSQLiLexer::BIT_OR,
						wfWAFSQLiLexer::BIT_AND,
						wfWAFSQLiLexer::BIT_XOR,
						wfWAFSQLiLexer::BIT_LEFT_SHIFT,
						wfWAFSQLiLexer::BIT_RIGHT_SHIFT,
						wfWAFSQLiLexer::BIT_INVERSION,
						wfWAFSQLiLexer::PLUS,
						wfWAFSQLiLexer::MINUS,
						wfWAFSQLiLexer::ASTERISK,
						wfWAFSQLiLexer::DIVISION,
						wfWAFSQLiLexer::MOD,
					))
					||
					$this->isIdentifierWithValue($token, array(
						'div', 'mod'
					))) &&
				$this->parseBitExpression()
			) {
				return true;
			}
			$this->index = $savePoint;
			return true;
		}
		$this->index = $savePoint;
		return false;
	}


	private function parseBitExprFactor5() {
		// factor6 ( (PLUS|MINUS) interval_expr )? ;
		$savePoint = $this->index;
		if ($this->parseBitExprFactor6()) {
			$savePoint = $this->index;
			if ($this->isTokenOfType($this->nextToken(), array(
					wfWAFSQLiLexer::PLUS,
					wfWAFSQLiLexer::MINUS,
				)) && $this->parseIntervalExpression()
			) {
				return true;
			}
			$this->index = $savePoint;
			return true;
		}
		$this->index = $savePoint;
		return false;
	}

	private function parseBitExprFactor6() {
		// (PLUS | MINUS | NEGATION | BINARY) simple_expr
		// | simple_expr ;

		$startPoint = $this->index;
		$savePoint = $this->index;
		while (
			($token = $this->nextToken()) &&
			(
				$this->isTokenOfType($token, array(
					wfWAFSQLiLexer::PLUS,
					wfWAFSQLiLexer::MINUS,
				)) ||
				($this->isTokenOfType($token, wfWAFSQLiLexer::BIT_INVERSION)) ||
				($this->isIdentifierWithValue($token, 'BINARY'))
			)
		) {
			$savePoint = $this->index;
		}
		$this->index = $savePoint;

		if ($this->parseSimpleExpression()) {
			return true;
		}
		$this->index = $startPoint;
		return false;

	}

	/**
	 * literal_value
	 * | column_spec
	 * | function_call
	 * | USER_VAR
	 * | expression_list
	 * | (ROW_SYM expression_list)
	 * | subquery
	 * | EXISTS subquery
	 * | {identifier expr}
	 * | match_against_statement
	 * | case_when_statement
	 * | interval_expr
	 *
	 * @return bool
	 */
	private function parseSimpleExpression() {
		$startPoint = $this->index;
		$simple = ($parseLiteral = $this->parseLiteral()) ||
			($parseMatchAgainst = $this->parseMatchAgainst()) ||
			($parseFunctionCall = $this->parseFunctionCall()) ||
			($parseVariable = $this->parseVariable()) ||
			($parseExpressionList = $this->parseExpressionList()) ||
			($parseSubquery = $this->parseSubquery()) ||
			($parseExistsSubquery = $this->parseExistsSubquery()) ||
			($parseCaseWhen = $this->parseCaseWhen()) ||
			($parseODBCExpression = $this->parseODBCExpression()) ||
			($parseIntervalExpression = $this->parseIntervalExpression()) ||
			($parseColumnSpec = $this->parseColumnSpec());

		if ($simple) {
			$token = $this->nextToken();
			if ($token && $token->getLowerCaseValue() == 'collate') {
				$savePoint = $this->index;
				if ($this->parseCollationName()) {
					return true;
				}
				$this->index = $savePoint;
			} else {
				$this->index--;
			}
			return true;
		}
		$this->index = $startPoint;
		return false;
	}

	/**
	 * @return bool
	 */
	private function parseLiteral() {
		$startIndex = $this->index;
		$savePoint = $this->index;
		while ($this->isTokenOfType($this->nextToken(), array(
			wfWAFSQLiLexer::PLUS,
			wfWAFSQLiLexer::MINUS,
		))) {
			$savePoint = $this->index;
		}
		$this->index = $savePoint;

		// Check if this is a Character Set Introducer
		$nextToken = $this->nextToken();
		$hasCharacterSetIntroducer = $this->isTokenOfType($nextToken, wfWAFSQLiLexer::UNQUOTED_IDENTIFIER) &&
			substr($nextToken->getValue(), 0, 1) === '_';
		if (!$hasCharacterSetIntroducer) {
			$this->index--;
		}

		$validLiteral = false;
		$nextToken = $this->nextToken();
		if ($nextToken) {
			switch ($nextToken->getType()) {
				case wfWAFSQLiLexer::INTEGER_LITERAL:
				case wfWAFSQLiLexer::BINARY_NUMBER_LITERAL:
				case wfWAFSQLiLexer::HEX_NUMBER_LITERAL:
				case wfWAFSQLiLexer::REAL_NUMBER_LITERAL:
					$validLiteral = true;
					break;
				// Allow concatenation: 'test' 'test' is valid
				case wfWAFSQLiLexer::DOUBLE_STRING_LITERAL:
				case wfWAFSQLiLexer::SINGLE_STRING_LITERAL:
					$savePoint = $this->index;
					while ($this->isTokenOfType($this->nextToken(), array(
						wfWAFSQLiLexer::DOUBLE_STRING_LITERAL,
						wfWAFSQLiLexer::SINGLE_STRING_LITERAL
					))) {
						$savePoint = $this->index;
					}
					$this->index = $savePoint;
					$validLiteral = true;
					break;

				case wfWAFSQLiLexer::UNQUOTED_IDENTIFIER:
					if ($nextToken->getLowerCaseValue() === 'null') {
						$validLiteral = true;
					}
					break;
			}
		}


		if ($validLiteral) {
			if ($hasCharacterSetIntroducer) {
				// Check for and parse collation
				$savePoint = $this->index;
				$hasCollation = $this->isIdentifierWithValue($this->nextToken(), 'collation') &&
					$this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::UNQUOTED_IDENTIFIER);
				if (!$hasCollation) {
					$this->index = $savePoint;
				}
			}

			return true;
		}

		$this->index = $startIndex;
		return false;
	}

	/**
	 * @return bool
	 */
	private function parseColumnSpec() {
		$savePoint = $this->index;
		if ($this->parseTableSpec()) {
			$savePoint = $this->index;
			if ($this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::DOT)) {
				$nextToken = $this->nextToken();
				if ($nextToken && ($nextToken->getType() == wfWAFSQLiLexer::UNQUOTED_IDENTIFIER ||
						$nextToken->getType() == wfWAFSQLiLexer::QUOTED_IDENTIFIER)
				) {
					return true;
				}
				$this->index = $savePoint;
				return false;
			}

			$this->index = $savePoint;
			return true;
		}
		$this->index = $savePoint;
		return false;
	}

	/**
	 * CAST_SYM LPAREN expression AS_SYM cast_data_type RPAREN  )
	 * | (  CONVERT_SYM LPAREN expression COMMA cast_data_type RPAREN  )
	 * | (  CONVERT_SYM LPAREN expression USING_SYM transcoding_name RPAREN  )
	 * | (  group_functions LPAREN ( ASTERISK | ALL | DISTINCT )? bit_expr RPAREN  )
	 *
	 * @return bool
	 */
	private function parseFunctionCall() {
		$startPoint = $this->index;
		$functionToken = $this->nextToken();
		if ($functionToken && $functionToken->getType() === wfWAFSQLiLexer::UNQUOTED_IDENTIFIER) {
			if ($this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::OPEN_PARENTHESIS)) {
				switch ($functionToken->getLowerCaseValue()) {
					case 'cast':
						if ($this->parseExpression() &&
							$this->isIdentifierWithValue($this->nextToken(), 'as') &&
							$this->parseCastDataType() &&
							$this->parseOptionalCharacterSet() &&
							$this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::CLOSE_PARENTHESIS)
						) {
							return true;
						}
						break;

					case 'convert':
						if ($this->parseExpression()) {
							$savePoint = $this->index;
							if ($this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::COMMA) &&
								$this->parseCastDataType() &&
								$this->parseOptionalCharacterSet() &&
								$this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::CLOSE_PARENTHESIS)
							) {
								return true;
							}
							$this->index = $savePoint;
							$savePoint = $this->index;
							if ($this->isIdentifierWithValue($this->nextToken(), 'using') &&
								$this->parseTranscodingName() &&
								$this->parseOptionalCharacterSet() &&
								$this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::CLOSE_PARENTHESIS)
							) {
								return true;
							}
							$this->index = $savePoint;
						}
						break;

					case 'trim':
						if (!$this->isIdentifierWithValue($this->nextToken(), array(
							'leading',
							'both',
							'trailing',
						))) {
							$this->index--;
						}

						while ($this->parseExpression()) {
							$nextToken = $this->nextToken();
							if (
								$this->isTokenOfType($nextToken, wfWAFSQLiLexer::COMMA) ||
								$this->isIdentifierWithValue($nextToken, array(
									'from',
									'for',
									'in',
								))
							) {
								continue;
							}
							$this->index--;
							break;
						}

						if ($this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::CLOSE_PARENTHESIS)) {
							return true;
						}
						break;

					case 'weight_string':
						if ($this->parseExpression()) {
							$savePoint = $this->index;
							if (!(
								$this->isIdentifierWithValue($this->nextToken(), 'as') &&
								$this->parseCastDataType() &&
								$this->parseOptionalCharacterSet()
							)) {
								$this->index = $savePoint;
							}

							if ($this->isIdentifierWithValue($this->nextToken(), 'level')) {
								while ($this->parseExpression()) {
									$nextToken = $this->nextToken();
									if (
										$this->isTokenOfType($nextToken, wfWAFSQLiLexer::COMMA) ||
										$this->isTokenOfType($nextToken, wfWAFSQLiLexer::MINUS)
									) {
										continue;
									}
									$this->index--;
									break;
								}
								while ($this->isIdentifierWithValue($this->nextToken(), array(
									'asc',
									'desc',
									'reverse',
								))) {
									continue;
								}
								$this->index--;
							} else {
								$this->index--;
							}
						}

						if ($this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::CLOSE_PARENTHESIS)) {
							return true;
						}
						break;

					default:
						$savePoint = $this->index;
						if (in_array($functionToken->getUpperCaseValue(), $this->groupFunctions)) {
							$token = $this->nextToken();
							if (!$this->isIdentifierWithValue($token, array(
									'all', 'distinct',
								)) && !$this->isTokenOfType($token, wfWAFSQLiLexer::ASTERISK)
							) {
								$this->index--;
							}
							$this->parseBitExpression();
							if ($this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::CLOSE_PARENTHESIS)) {
								return true;
							}
						}
						$this->index = $savePoint;

						while ($this->parseExpression()) {
							$nextToken = $this->nextToken();
							if (
								$this->isTokenOfType($nextToken, wfWAFSQLiLexer::COMMA) ||
								$this->isIdentifierWithValue($nextToken, array(
									'from',
									'for',
									'in',
								))
							) {
								continue;
							}
							$this->index--;
							break;
						}

						if ($this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::CLOSE_PARENTHESIS)) {
							return true;
						}
						break;
				}
			}
		}
		$this->index = $startPoint;
		return false;
	}

	/**
	 * BINARY (INTEGER_NUM)?
	 * | CHAR (INTEGER_NUM)?
	 * | DATE_SYM
	 * | DATETIME
	 * | DECIMAL_SYM ( INTEGER_NUM (COMMA INTEGER_NUM)? )?
	 * | SIGNED_SYM (INTEGER_SYM)?
	 * | TIME_SYM
	 * | UNSIGNED_SYM (INTEGER_SYM)?
	 *
	 * @return bool
	 */
	private function parseCastDataType() {
		$startPoint = $this->index;
		$token = $this->nextToken();
		if ($this->isKeywordToken($token)) {
			switch ($token->getLowerCaseValue()) {
				case 'binary':
				case 'char':
				case 'nchar':
				case 'varchar':
				case 'character':
					$savePoint = $this->index;
					if ($this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::OPEN_PARENTHESIS) &&
						$this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::INTEGER_LITERAL) &&
						$this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::CLOSE_PARENTHESIS)
					) {
						return true;
					}
					$this->index = $savePoint;
					return true;

				case 'date':
				case 'datetime':
				case 'time':
					return true;

				case 'signed':
				case 'unsigned':
					if (!$this->isIdentifierWithValue($this->nextToken(), array(
						'int',
						'integer',
					))) {
						$this->index--;
					}
					return true;

				case 'decimal':
					$savePoint = $this->index;
					if ($this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::OPEN_PARENTHESIS) &&
						$this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::INTEGER_LITERAL)) {

						$savePoint2 = $this->index;
						if (!($this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::COMMA) &&
							$this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::INTEGER_LITERAL)
						)) {
							$this->index = $savePoint2;
						}
						if ($this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::CLOSE_PARENTHESIS)) {
							return true;
						}
					}

					$this->index = $savePoint;
					return true;
			}
		}
		$this->index = $startPoint;
		return false;
	}

	private function parseTranscodingName() {
		$savePoint = $this->index;
		$token = $this->nextToken();
		if ($token && $token->getType() === wfWAFSQLiLexer::UNQUOTED_IDENTIFIER) {
			return true;
		}
		$this->index = $savePoint;
		return false;
	}

	private function parseOptionalCharacterSet() {
		$savePoint = $this->index;
		if (!(
			$this->nextToken()->getLowerCaseValue() === 'character' &&
			$this->nextToken()->getLowerCaseValue() === 'set' &&
			$this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::UNQUOTED_IDENTIFIER)
		)) {
			$this->index = $savePoint;
		}
		return true;
	}

	private function parseVariable() {
		$nextToken = $this->nextToken();
		if ($nextToken && $nextToken->getType() === wfWAFSQLiLexer::VARIABLE) {
			return true;
		}
		$this->index--;
		return false;
	}

	/**
	 * @return bool
	 */
	private function parseSubquery() {
		$startIndex = $this->index;
		if ($this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::OPEN_PARENTHESIS) &&
			$this->parseSelectStatement() &&
			$this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::CLOSE_PARENTHESIS)
		) {
			return true;
		}
		$this->index = $startIndex;
		return false;
	}

	private function testForSubquery() {
		$startIndex = $this->index;
		$nextToken = $this->nextToken();
		if ($nextToken && $nextToken->getType() === wfWAFSQLiLexer::OPEN_PARENTHESIS) {
			$selectToken = $this->nextToken();
			if ($this->isIdentifierWithValue($selectToken, 'select')) {
				$this->index = $startIndex;
				return true;
			}
		}
		$this->index = $startIndex;
		return false;
	}

	/**
	 *
	 *
	 * @return bool
	 */
	private function parseExistsSubquery() {
		$startIndex = $this->index;
		$existsToken = $this->nextToken();
		if ($this->isIdentifierWithValue($existsToken, 'exists')) {
			if ($this->parseSubquery()) {
				return true;
			}
		}
		$this->index = $startIndex;
		return false;
	}

	/**
	 * MATCH (column_spec (COMMA column_spec)* ) AGAINST (expression (search_modifier)? )
	 *
	 * @return bool
	 */
	private function parseMatchAgainst() {
		$startIndex = $this->index;
		if ($this->isIdentifierWithValue($this->nextToken(), 'match')) {
			$savePoint = $this->index;
			if (!$this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::OPEN_PARENTHESIS)) {
				$this->index = $savePoint;
			}
			$hasColumns = false;
			while ($this->parseColumnSpec()) {
				$hasColumns = true;
				$savePoint = $this->index;
				if ($this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::COMMA)) {
					continue;
				}
				$this->index = $savePoint;
				break;
			}
			$savePoint = $this->index;
			if (!$this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::CLOSE_PARENTHESIS)) {
				$this->index = $savePoint;
			}
			if ($hasColumns && $this->isIdentifierWithValue($this->nextToken(), 'against') &&
				$this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::OPEN_PARENTHESIS) &&
				$this->parseExpression() &&
				($this->parseSearchModifier() || true) &&
				$this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::CLOSE_PARENTHESIS)
			) {
				return true;
			}
		}
		$this->index = $startIndex;
		return false;
	}

	/**
	 * Used in match/against
	 *
	 * @link https://dev.mysql.com/doc/refman/5.6/en/fulltext-search.html
	 * @return bool
	 */
	private function parseSearchModifier() {
		$startIndex = $this->index;

		$startToken = $this->nextToken();
		if ($this->isIdentifierWithValue($startToken, 'in')) {
			$next = $this->nextToken();
			if ($this->isIdentifierWithValue($next, 'natural') &&
				$this->isIdentifierWithValue($this->nextToken(), 'language') &&
				$this->isIdentifierWithValue($this->nextToken(), 'mode')
			) {
				$saveIndex = $this->index;
				if ($this->isIdentifierWithValue($this->nextToken(), 'with') &&
					$this->isIdentifierWithValue($this->nextToken(), 'query') &&
					$this->isIdentifierWithValue($this->nextToken(), 'expansion')
				) {
					return true;
				}
				$this->index = $saveIndex;
				return true;

			} else if ($this->isIdentifierWithValue($next, 'boolean') &&
				$this->isIdentifierWithValue($this->nextToken(), 'mode')
			) {
				return true;
			}
		} else if ($this->isIdentifierWithValue($startToken, 'with')) {
			if ($this->isIdentifierWithValue($this->nextToken(), 'query') &&
				$this->isIdentifierWithValue($this->nextToken(), 'expansion')
			) {
				return true;
			}
		}

		$this->index = $startIndex;
		return false;
	}

	/**
	 * @return bool
	 */
	private function parseCaseWhen() {
		$startIndex = $this->index;
		if ($this->isIdentifierWithValue($this->nextToken(), 'case')) {
			$hasWhen = false;
			while (true) {
				if (!$this->isIdentifierWithValue($this->nextToken(), 'when')) {
					$this->index--;
					break;
				}
				if ($this->parseExpression()) {
					if ($this->isIdentifierWithValue($this->nextToken(), 'then') && $this->parseBitExpression()) {
						$hasWhen = true;
						continue;
					}
					$this->index--;
				}
				$this->index--;
				break;
			}
			if ($hasWhen) {
				$endToken = $this->nextToken();
				if ($this->isIdentifierWithValue($endToken, 'else')) {
					if (!$this->parseBitExpression()) {
						$this->index = $startIndex;
						return false;
					}
					$endToken = $this->nextToken();
				}
				if ($this->isIdentifierWithValue($endToken, 'end')) {
					return true;
				}
			}
		}
		$this->index = $startIndex;
		return false;
	}

	/**
	 * @return bool
	 */
	private function parseODBCExpression() {
		$startIndex = $this->index;
		if ($this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::OPEN_BRACKET) && $this->isIdentifier($this->nextToken()) && $this->parseExpression() && $this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::CLOSE_BRACKET)) {
			return true;
		}
		$this->index = $startIndex;
		return false;
	}

	/**
	 * @return bool
	 */
	private function parseIntervalExpression() {
		$startIndex = $this->index;
		if ($this->isIdentifierWithValue($this->nextToken(), 'interval') && $this->parseExpression()) {
			$intervalUnitToken = $this->nextToken();
			if ($intervalUnitToken && in_array($intervalUnitToken->getType(), $this->intervalUnits)) {
				return true;
			}
		}
		$this->index = $startIndex;
		return false;
	}

	/**
	 * @return bool
	 */
	public function parseCollationName() {
		$startIndex = $this->index;
		$token = $this->nextToken();
		if ($token && $token->getType() === wfWAFSQLiLexer::UNQUOTED_IDENTIFIER) {
			return true;
		}
		$this->index = $startIndex;
		return false;
	}

	/**
	 * @return bool
	 */
	private function parseFrom() {
		$startIndex = $this->index;
		$token = $this->nextToken();
		if ($this->isIdentifierWithValue($token, 'from')) {
			return $this->parseTableReferences();
		}
		$this->index = $startIndex;
		return false;
	}

	/**
	 * @link http://dev.mysql.com/doc/refman/5.6/en/join.html
	 * @return bool
	 */
	private function parseTableReferences() {
		$startPoint = $this->index;
		$hasReferences = false;
		while ($this->parseEscapedTableReference()) {
			$hasReferences = true;
			$savePoint = $this->index;
			$token = $this->nextToken();
			if ($this->isTokenOfType($token, wfWAFSQLiLexer::COMMA)) {
				continue;
			}
			$this->index = $savePoint;
			break;
		}
		if ($hasReferences) {
			return true;
		}
		$this->index = $startPoint;
		return false;
	}

	/**
	 * @return bool
	 */
	private function parseEscapedTableReference() {
		$startPoint = $this->index;
		if ($this->parseTableReference() ||
			(
				$this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::OPEN_BRACKET) &&
				$this->isIdentifierWithValue($this->nextToken(), 'oj') &&
				$this->parseTableReference() &&
				$this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::CLOSE_BRACKET)
			)
		) {
			return true;
		}

		$this->index = $startPoint;
		return false;
	}

	/**
	 * @return bool
	 */
	private function parseTableReference() {
		$savePoint = $this->index;
		$hasTables = false;
		if ($this->parseTableFactor()) {
			$hasTables = true;
			while ($this->parseJoinTable()) {

			}
		}
		if ($hasTables) {
			return true;
		}
		$this->index = $savePoint;
		return false;
	}

	/**
	 * table_factor:
	 *   tbl_name [PARTITION (partition_names)] [[AS] alias] [index_hint_list]
	 *   | table_subquery [AS] alias
	 *   | ( table_references )
	 */
	private function parseTableFactor() {
		$savePoint = $this->index;
		if ($this->parseTableSpec()) {
			$savePoint2 = $this->index;
			if (!$this->parsePartitionClause()) {
				$this->index = $savePoint2;
			}

			$this->parseAlias();
			$this->parseIndexHintList();

			return true;
		}
		$this->index = $savePoint;

		$savePoint = $this->index;
		if ($this->parseSubquery() && $this->parseAlias()) {
			return true;
		}
		$this->index = $savePoint;

		$savePoint = $this->index;
		if ($this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::OPEN_PARENTHESIS) &&
			$this->parseTableReferences() &&
			$this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::CLOSE_PARENTHESIS)
		) {
			return true;
		}
		$this->index = $savePoint;
		return false;
	}

	/**
	 * PARTITION (partition_names)
	 *
	 * @return bool
	 */
	private function parsePartitionClause() {
		$startIndex = $this->index;
		if ($this->isIdentifierWithValue($this->nextToken(), 'partition') &&
			$this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::OPEN_PARENTHESIS) &&
			$this->parsePartitionNames() &&
			$this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::CLOSE_PARENTHESIS)
		) {
			return true;
		}
		$this->index = $startIndex;
		return false;
	}

	/**
	 * @return bool
	 */
	private function parsePartitionNames() {
		$startPoint = $this->index;
		$hasPartition = false;
		while ($this->parsePartitionName()) {
			$hasPartition = true;
			$savePoint = $this->index;
			if (!$this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::COMMA)) {
				$this->index = $savePoint;
				break;
			}
		}
		if ($hasPartition) {
			return true;
		}
		$this->index = $startPoint;
		return false;
	}

	/**
	 * @return bool
	 */
	private function parsePartitionName() {
		$startPoint = $this->index;
		$token = $this->nextToken();
		if ($this->isValidNonReservedWordIdentifier($token)) {
			return true;
		}
		$this->index = $startPoint;
		return false;
	}

	/**
	 * join_table:
	 *   table_reference [INNER | CROSS] JOIN table_factor [join_condition]
	 *   | table_reference STRAIGHT_JOIN table_factor
	 *   | table_reference STRAIGHT_JOIN table_factor ON conditional_expr
	 *   | table_reference {LEFT|RIGHT} [OUTER] JOIN table_reference join_condition
	 *   | table_reference NATURAL [{LEFT|RIGHT} [OUTER]] JOIN table_factor
	 *
	 * @return bool
	 */
	private function parseJoinTable() {
		$savePoint = $this->index;
		if (!$this->isIdentifierWithValue($this->nextToken(), array(
			'inner', 'cross',
		))
		) {
			$this->index = $savePoint;
		}
		if ($this->isIdentifierWithValue($this->nextToken(), 'join') && $this->parseTableFactor()) {
			$this->parseJoinCondition();
			return true;
		}
		$this->index = $savePoint;

		$savePoint = $this->index;
		if ($this->isIdentifierWithValue($this->nextToken(), 'straight_join') &&
			$this->parseTableFactor()
		) {
			$savePoint = $this->index;
			if (!($this->isIdentifierWithValue($this->nextToken(), 'on') && $this->parseExpression())) {
				$this->index = $savePoint;
			}
			return true;
		}
		$this->index = $savePoint;

		$savePoint = $this->index;
		if ($this->isIdentifierWithValue($this->nextToken(), array(
			'left', 'right',
		))
		) {
			$savePoint2 = $this->index;
			if (!$this->isIdentifierWithValue($this->nextToken(), array(
				'outer',
			))
			) {
				$this->index = $savePoint2;
			}
		} else {
			$this->index = $savePoint;
		}
		if ($this->isIdentifierWithValue($this->nextToken(), 'join') &&
			$this->parseTableReference() &&
			$this->parseJoinCondition()
		) {
			return true;
		}
		$this->index = $savePoint;

		$savePoint = $this->index;
		if ($this->isIdentifierWithValue($this->nextToken(), array(
			'natural',
		))
		) {
			if ($this->isIdentifierWithValue($this->nextToken(), array(
				'left', 'right',
			))
			) {
				$savePoint2 = $this->index;
				if (!$this->isIdentifierWithValue($this->nextToken(), array(
					'outer',
				))
				) {
					$this->index = $savePoint2;
				}
			} else {
				$this->index = $savePoint;
			}
			if ($this->isIdentifierWithValue($this->nextToken(), 'join') &&
				$this->parseTableFactor()
			) {
				return true;
			}

		}
		$this->index = $savePoint;
		return false;
	}

	/**
	 * (ON expression) | (USING_SYM column_list)
	 *
	 * @return bool
	 */
	private function parseJoinCondition() {
		$savePoint = $this->index;
		if ($this->isIdentifierWithValue($this->nextToken(), 'on') && $this->parseExpression()) {
			return true;
		}
		$this->index = $savePoint;

		$savePoint = $this->index;
		if ($this->isIdentifierWithValue($this->nextToken(), 'using') && $this->parseColumnList()) {
			return true;
		}
		$this->index = $savePoint;
		return false;
	}

	/**
	 * @return bool
	 */
	private function parseTableSpec() {
		$savePoint = $this->index;
		$lastComponent = $savePoint;
		$components = 0;
		while (($token = $this->nextToken()) !== false) {
			if ($this->isValidIdentifier($token)) {
				$lastComponent = $this->index;
				$next = $this->nextToken();
				if ($this->isTokenOfType($next, wfWAFSQLiLexer::DOT)) {
					$components++;
				}
				elseif ($this->isTokenOfType($next, wfWAFSQLiLexer::REAL_NUMBER_LITERAL)) {
					$next = $this->nextToken();
					if ($this->isTokenOfType($next, wfWAFSQLiLexer::UNQUOTED_IDENTIFIER) && in_array($next->getValue(), array('e', 'E')) && $this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::DOT)) {
						$components++;
					}
					else {
						break;
					}
				}
				elseif ($components > 0 || $this->isValidNonReservedWordIdentifier($token)) {
					$this->index = $lastComponent;
					return true;
				}
				else {
					break;
				}
			}
			else if ($this->isTokenOfType($token, wfWAFSQLiLexer::ASTERISK)) {
				$this->index = $lastComponent;
				return true;
			}
			else {
				break;
			}
		}
		$this->index = $savePoint;
		return false;
	}

	/**
	 * @return bool
	 */
	private function parseAlias() {
		$savePoint = $this->index;
		$token = $this->nextToken();
		if ($this->isIdentifierWithValue($token, 'as')) {
			$token = $this->nextToken();
		}
		if ($this->isValidNonReservedWordIdentifier($token)) {
			return true;
		}
		$this->index = $savePoint;
		return false;
	}

	/**
	 * @return bool
	 */
	private function parseIndexHintList() {
		$startPoint = $this->index;
		$hasHints = false;
		while ($this->parseIndexHint()) {
			$hasHints = true;
			$savePoint = $this->index;
			if (!$this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::COMMA)) {
				$this->index = $savePoint;
				break;
			}
		}
		if ($hasHints) {
			return true;
		}
		$this->index = $startPoint;
		return false;
	}

	/**
	 * @return bool
	 */
	private function parseIndexHint() {
		// USE_SYM    index_options LPAREN (index_list)? RPAREN
		$savePoint = $this->index;
		if ($this->isIdentifierWithValue($this->nextToken(), 'use') &&
			$this->parseIndexOptions() &&
			$this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::OPEN_PARENTHESIS)
		) {
			$this->parseIndexList();
			if ($this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::CLOSE_PARENTHESIS)) {
				return true;
			}
		}
		$this->index = $savePoint;

		// IGNORE_SYM index_options LPAREN index_list RPAREN
		$savePoint = $this->index;
		if ($this->isIdentifierWithValue($this->nextToken(), 'ignore') &&
			$this->parseIndexOptions() &&
			$this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::OPEN_PARENTHESIS) &&
			$this->parseIndexList() &&
			$this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::CLOSE_PARENTHESIS)
		) {
			return true;
		}
		$this->index = $savePoint;

		// FORCE_SYM  index_options LPAREN index_list RPAREN
		$savePoint = $this->index;
		if ($this->isIdentifierWithValue($this->nextToken(), 'force') &&
			$this->parseIndexOptions() &&
			$this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::OPEN_PARENTHESIS) &&
			$this->parseIndexList() &&
			$this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::CLOSE_PARENTHESIS)
		) {
			return true;
		}
		$this->index = $savePoint;

		return false;
	}

	/**
	 * (INDEX_SYM | KEY_SYM) (  FOR_SYM ((JOIN_SYM) | (ORDER_SYM BY_SYM) | (GROUP_SYM BY_SYM))  )?
	 *
	 * @return bool
	 */
	private function parseIndexOptions() {
		$savePoint = $this->index;
		$token = $this->nextToken();
		if ($this->isIdentifierWithValue($token, 'index') ||
			$this->isIdentifierWithValue($token, 'key')
		) {
			$savePoint = $this->index;
			if ($this->isIdentifierWithValue($this->nextToken(), 'for')) {

				$savePoint = $this->index;
				if ($this->isIdentifierWithValue($this->nextToken(), 'join')) {
					return true;
				}
				$this->index = $savePoint;

				$savePoint = $this->index;
				if ($this->isIdentifierWithValue($this->nextToken(), 'order') &&
					$this->isIdentifierWithValue($this->nextToken(), 'by')
				) {
					return true;
				}
				$this->index = $savePoint;

				$savePoint = $this->index;
				if ($this->isIdentifierWithValue($this->nextToken(), 'group') &&
					$this->isIdentifierWithValue($this->nextToken(), 'by')
				) {
					return true;
				}
				$this->index = $savePoint;

				return true;
			}
			$this->index = $savePoint;
			return true;
		}
		$this->index = $savePoint;
		return false;
	}

	private function parseIndexList() {
		$startPoint = $this->index;
		$hasIndex = false;
		while ($this->parseIndexName()) {
			$hasIndex = true;
			$savePoint = $this->index;
			if (!$this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::COMMA)) {
				$this->index = $savePoint;
				break;
			}
		}
		if ($hasIndex) {
			return true;
		}
		$this->index = $startPoint;
		return false;
	}

	private function parseIndexName() {
		$startPoint = $this->index;
		$token = $this->nextToken();
		if ($this->isValidNonReservedWordIdentifier($token)) {
			return true;
		}
		$this->index = $startPoint;
		return false;
	}

	/**
	 * LPAREN column_spec (COMMA column_spec)* RPAREN
	 *
	 * @return bool
	 */
	private function parseColumnList() {
		$startPoint = $this->index;
		if ($this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::OPEN_PARENTHESIS)) {
			$hasColumn = false;
			while ($this->parseColumnSpec()) {
				$hasColumn = true;
				$savePoint = $this->index;
				if (!$this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::COMMA)) {
					$this->index = $savePoint;
					break;
				}
			}
			if ($hasColumn && $this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::CLOSE_PARENTHESIS)) {
				return true;
			}
		}
		$this->index = $startPoint;
		return false;
	}

	private function parseWhere() {
		$startIndex = $this->index;
		$token = $this->nextToken();
		if ($this->isIdentifierWithValue($token, 'where')) {
			if ($this->parseExpression()) {
				return true;
			}
		}
		$this->index = $startIndex;
		return false;
	}

	private function parseProcedure() {
		$startIndex = $this->index;
		if ($this->isIdentifierWithValue($this->nextToken(), 'PROCEDURE') &&
			$this->isIdentifierWithValue($this->nextToken(), 'ANALYSE') &&
			$this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::OPEN_PARENTHESIS)
		) {
			$savePoint = $this->index;
			if ($this->parseExpression()) {
				$savePoint = $this->index;
				if ($this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::COMMA) &&
					$this->parseExpression() &&
					$this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::CLOSE_PARENTHESIS)
				) {
					return true;
				}
				$this->index = $savePoint;
				if ($this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::CLOSE_PARENTHESIS)) {
					return true;
				}
			}
			$this->index = $savePoint;
			if ($this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::CLOSE_PARENTHESIS)) {
				return true;
			}
		}
		$this->index = $startIndex;
		return false;
	}

	/**
	 * GROUP_SYM BY_SYM groupby_item (COMMA groupby_item)* (WITH ROLLUP_SYM)?
	 *
	 * @return bool
	 */
	private function parseGroupBy() {
		$startIndex = $this->index;
		if ($this->isIdentifierWithValue($this->nextToken(), 'group') &&
			$this->isIdentifierWithValue($this->nextToken(), 'by')
		) {
			$hasItems = false;
			while ($this->parseGroupByItem()) {
				$hasItems = true;
				if ($this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::COMMA)) {
					continue;
				}
				$this->index--;
				break;
			}
			if ($hasItems) {
				$savePoint = $this->index;
				if (!($this->isIdentifierWithValue($this->nextToken(), 'with') &&
					$this->isIdentifierWithValue($this->nextToken(), 'rollup'))
				) {
					$this->index = $savePoint;
				}
				return true;
			}
		}
		$this->index = $startIndex;
		return false;
	}

	/**
	 * column_spec | INTEGER_NUM | bit_expr ;
	 *
	 * @return bool
	 */
	private function parseGroupByItem() {
		$startIndex = $this->index;
		if ($this->parseBitExpression()) {
			return true;
		}
		$this->index = $startIndex;
		return false;
	}

	/**
	 * HAVING expression
	 *
	 * @return bool
	 */
	private function parseHaving() {
		$startIndex = $this->index;
		if ($this->isIdentifierWithValue($this->nextToken(), 'having')
			&& $this->parseExpression()
		) {
			return true;
		}
		$this->index = $startIndex;
		return false;
	}

	/**
	 * ORDER_SYM BY_SYM orderby_item (COMMA orderby_item)*
	 *
	 * @return bool
	 */
	private function parseOrderBy() {
		$startIndex = $this->index;
		if ($this->isIdentifierWithValue($this->nextToken(), 'order') &&
			$this->isIdentifierWithValue($this->nextToken(), 'by')
		) {
			$hasItems = false;
			while ($this->parseOrderByItem()) {
				$hasItems = true;
				if ($this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::COMMA)) {
					continue;
				}
				$this->index--;
				break;
			}
			if ($hasItems) {
				return true;
			}
		}
		$this->index = $startIndex;
		return false;
	}

	/**
	 * groupby_item (ASC | DESC)? ;
	 *
	 * @return bool
	 */
	private function parseOrderByItem() {
		$startIndex = $this->index;
		if ($this->parseGroupByItem()) {
			$savePoint = $this->index;
			if (!$this->isIdentifierWithValue($this->nextToken(), array(
				'asc', 'desc',
			))
			) {
				$this->index = $savePoint;
			}
			return true;
		}
		$this->index = $startIndex;
		return false;
	}

	private function parseLimit() {
		// LIMIT ((offset COMMA)? row_count) | (row_count OFFSET_SYM offset)
		$startIndex = $this->index;
		if ($this->isIdentifierWithValue($this->nextToken(), 'limit') &&
			$this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::INTEGER_LITERAL)
		) {
			$savePoint = $this->index;
			if ($this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::COMMA) &&
				$this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::INTEGER_LITERAL)
			) {
				return true;
			}
			$this->index = $savePoint;

			$savePoint = $this->index;
			if ($this->isIdentifierWithValue($this->nextToken(), 'offset') &&
				$this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::INTEGER_LITERAL)
			) {
				return true;
			}
			$this->index = $savePoint;
			return true;
		}
		$this->index = $startIndex;
		return false;
	}

	/**
	 * @link http://dev.mysql.com/doc/refman/5.6/en/insert.html
	 * @return bool
	 */
	private function parseInsertStatement() {
		$startIndex = $this->index;
		if ($this->parseInsertStatement1() ||
			$this->parseInsertStatement2() ||
			$this->parseInsertStatement3()
		) {
			return true;
		}
		$this->index = $startIndex;
		return false;
	}

	/**
	 * insert_header
	 * (column_list)?
	 * value_list_clause
	 * ( insert_subfix )?
	 *
	 * @return bool
	 */
	private function parseInsertStatement1() {
		$startIndex = $this->index;
		if ($this->parseInsertHeader()) {
			$this->parseColumnList();
			if ($this->parseValueListClause()) {
				$this->parseInsertSubfix();
				return true;
			}
		}
		$this->index = $startIndex;
		return false;
	}

	/**
	 * insert_header
	 * set_columns_cluase
	 * ( insert_subfix )?
	 *
	 * @return bool
	 */
	private function parseInsertStatement2() {
		$startIndex = $this->index;
		if ($this->parseInsertHeader() && $this->parseSetColumnsClause()) {
			$this->parseInsertSubfix();
			return true;
		}
		$this->index = $startIndex;
		return false;
	}

	/**
	 * insert_header
	 * (column_list)?
	 * select_expression
	 * ( insert_subfix )?
	 *
	 * @return bool
	 */
	private function parseInsertStatement3() {
		$startIndex = $this->index;
		if ($this->parseInsertHeader()) {
			$this->parseColumnList();
			if ($this->parseSelectStatement()) {
				$this->parseInsertSubfix();
				return true;
			}
		}
		$this->index = $startIndex;
		return false;
	}

	/**
	 * INSERT (LOW_PRIORITY | HIGH_PRIORITY)? (IGNORE_SYM)?
	 *   (INTO)? table_spec
	 *   (partition_clause)?
	 *
	 * @return bool
	 */
	private function parseInsertHeader() {
		$startIndex = $this->index;
		if ($this->isIdentifierWithValue($this->nextToken(), 'insert')) {
			$savePoint = $this->index;
			// (LOW_PRIORITY | HIGH_PRIORITY)?
			if (!$this->isIdentifierWithValue($this->nextToken(), array(
				'LOW_PRIORITY', 'HIGH_PRIORITY'
			))
			) {
				$this->index = $savePoint;
			}

			// (IGNORE_SYM)?
			$savePoint = $this->index;
			if (!$this->isIdentifierWithValue($this->nextToken(), array(
				'IGNORE'
			))
			) {
				$this->index = $savePoint;
			}

			// (INTO)?
			$savePoint = $this->index;
			if (!$this->isIdentifierWithValue($this->nextToken(), array(
				'into'
			))
			) {
				$this->index = $savePoint;
			}

			// table_spec
			if ($this->parseTableSpec()) {
				$savePoint = $this->index;
				// (partition_clause)?
				if (!$this->parsePartitionClause()) {
					$this->index = $savePoint;
				}
				return true;
			}
		}
		$this->index = $startIndex;
		return false;
	}

	/**
	 * (VALUES | VALUE_SYM) column_value_list (COMMA column_value_list)*;
	 *
	 * @return bool
	 */
	private function parseValueListClause() {
		$startIndex = $this->index;
		if ($this->isIdentifierWithValue($this->nextToken(), array(
			'value', 'values',
		))
		) {
			$hasValues = false;
			while ($this->parseColumnValueList()) {
				$hasValues = true;
				$savePoint = $this->index;
				if ($this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::COMMA)) {
					$hasValues = false;
					continue;
				}
				$this->index = $savePoint;
				break;
			}
			if ($hasValues) {
				return true;
			}
		}
		$this->index = $startIndex;
		return false;
	}

	/**
	 * LPAREN (bit_expr|DEFAULT) (COMMA (bit_expr|DEFAULT) )* RPAREN ;
	 *
	 * @return bool
	 */
	private function parseColumnValueList() {
		$startIndex = $this->index;
		if ($this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::OPEN_PARENTHESIS)) {
			$hasValues = false;
			while (true) {
				$savePoint = $this->index;
				if (!$this->parseBitExpression() && !$this->isIdentifierWithValue($this->nextToken(), 'DEFAULT')) {
					$this->index = $savePoint;
					break;
				}
				$hasValues = true;
				$savePoint = $this->index;
				if ($this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::COMMA)) {
					$hasValues = false;
					continue;
				}
				$this->index = $savePoint;
				break;
			}
			if ($hasValues && $this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::CLOSE_PARENTHESIS)) {
				return true;
			}
		}
		$this->index = $startIndex;
		return false;
	}

	private function parseInsertSubfix() {
		// ON DUPLICATE_SYM KEY_SYM UPDATE column_spec EQ_SYM expression (COMMA column_spec EQ_SYM expression)*
		$startIndex = $this->index;
		if (
			$this->isIdentifierWithValue($this->nextToken(), 'on') &&
			$this->isIdentifierWithValue($this->nextToken(), 'duplicate') &&
			$this->isIdentifierWithValue($this->nextToken(), 'key') &&
			$this->isIdentifierWithValue($this->nextToken(), 'update')
		) {
			$hasValues = false;
			while (true) {
				$savePoint = $this->index;
				if ($this->parseColumnSpec() &&
					$this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::EQUALS_SYMBOL) &&
					$this->parseExpression()
				) {
					$hasValues = true;
					$savePoint = $this->index;
					if ($this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::COMMA)) {
						$hasValues = false;
						continue;
					}
					$this->index = $savePoint;
					break;
				}
				$this->index = $savePoint;
				break;
			}
			if ($hasValues) {
				return true;
			}
		}
		$this->index = $startIndex;
		return false;
	}

	/**
	 * SET_SYM set_column_cluase ( COMMA set_column_cluase )*;
	 *
	 * @return bool
	 */
	private function parseSetColumnsClause() {
		$startIndex = $this->index;
		if ($this->isIdentifierWithValue($this->nextToken(), 'set')) {
			$hasValues = true;
			while ($this->parseSetColumnClause()) {
				$hasValues = true;
				$savePoint = $this->index;
				if ($this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::COMMA)) {
					$hasValues = false;
					continue;
				}
				$this->index = $savePoint;
				break;
			}
			if ($hasValues) {
				return true;
			}
		}
		$this->index = $startIndex;
		return false;
	}

	/**
	 * column_spec EQ_SYM (expression|DEFAULT) ;
	 *
	 * @return bool
	 */
	private function parseSetColumnClause() {
		$startIndex = $this->index;
		if ($this->parseColumnSpec() &&
			$this->isTokenOfType($this->nextToken(), wfWAFSQLiLexer::EQUALS_SYMBOL) &&
			($this->parseExpression() || $this->isIdentifierWithValue($this->nextToken(), 'default'))
		) {
			return true;
		}
		$this->index = $startIndex;
		return false;
	}

	/**
	 * UPDATE (LOW_PRIORITY)? (IGNORE_SYM)? table_reference
	 *   set_columns_cluase
	 *   (where_clause)?
	 *   (orderby_clause)?
	 *   (limit_clause)?
	 * |
	 * UPDATE (LOW_PRIORITY)? (IGNORE_SYM)? table_references
	 *   set_columns_cluase
	 *   (where_clause)?
	 *
	 * @return bool
	 */
	private function parseUpdateStatement() {
		$startIndex = $this->index;
		if ($this->isIdentifierWithValue($this->nextToken(), 'update')) {
			$savePoint = $this->index;
			if (!$this->isIdentifierWithValue($this->nextToken(), 'LOW_PRIORITY')) {
				$this->index = $savePoint;
			}

			$savePoint = $this->index;
			if (!$this->isIdentifierWithValue($this->nextToken(), 'ignore')) {
				$this->index = $savePoint;
			}

			if ($this->parseTableReferences() && $this->parseSetColumnsClause()) {
				$this->parseWhere();
				$this->parseOrderBy();
				$this->parseLimit();
				return true;
			}
		}
		$this->index = $startIndex;
		return false;

	}

	/**
	 * @param wfWAFLexerToken $token
	 * @return bool
	 */
	private function isIdentifier($token) {
		return $token && ($token->getType() === wfWAFSQLiLexer::QUOTED_IDENTIFIER || $token->getType() === wfWAFSQLiLexer::UNQUOTED_IDENTIFIER);
	}

	/**
	 * @param wfWAFLexerToken $token
	 * @param string|array $value
	 * @return bool
	 */
	private function isIdentifierWithValue($token, $value) {
		return $token && $token->getType() === wfWAFSQLiLexer::UNQUOTED_IDENTIFIER &&
		(is_array($value) ? in_array($token->getLowerCaseValue(), array_map('wfWAFUtils::strtolower', $value)) :
			$token->getLowerCaseValue() === wfWAFUtils::strtolower($value));
	}

	/**
	 * @param wfWAFLexerToken $token
	 * @param mixed $type
	 * @return bool
	 */
	protected function isTokenOfType($token, $type) {
		if (is_array($type)) {
			return $token && in_array($token->getType(), $type);
		}
		return $token && $token->getType() === $type;
	}

	/**
	 * @param wfWAFLexerToken $token
	 * @return bool
	 */
	private function isNotSymbolToken($token) {
		return $token &&
		(
			($token->getType() === wfWAFSQLiLexer::UNQUOTED_IDENTIFIER && $token->getLowerCaseValue() === 'not') ||
			($token->getType() === wfWAFSQLiLexer::EXPR_NOT)
		);
	}

	/**
	 * @param wfWAFLexerToken $token
	 * @return bool
	 */
	private function isKeywordToken($token) {
		return $token && $token->getType() === wfWAFSQLiLexer::UNQUOTED_IDENTIFIER &&
		in_array($token->getUpperCaseValue(), $this->keywords);
	}

	/**
	 * @param wfWAFLexerToken $token
	 * @return bool
	 */
	private function isReservedWordToken($token) {
		return $token && $token->getType() === wfWAFSQLiLexer::UNQUOTED_IDENTIFIER &&
		in_array($token->getUpperCaseValue(), $this->reservedWords);
	}

	/**
	 * @param wfWAFLexerToken $token
	 * @return bool
	 */
	private function isValidNonKeywordIdentifier($token) {
		return $token && (
			$token->getType() === wfWAFSQLiLexer::QUOTED_IDENTIFIER ||
			($token->getType() === wfWAFSQLiLexer::UNQUOTED_IDENTIFIER && !$this->isKeywordToken($token))
		);
	}

	/**
	 * @param wfWAFLexerToken $token
	 * @return bool
	 */
	private function isValidNonReservedWordIdentifier($token) {
		return $token && (
			$token->getType() === wfWAFSQLiLexer::QUOTED_IDENTIFIER ||
			($token->getType() === wfWAFSQLiLexer::UNQUOTED_IDENTIFIER && !$this->isReservedWordToken($token))
		);
	}

	/**
	 * @param wfWAFLexerToken $token
	 * @return bool
	 */
	private function isValidIdentifier($token) {
		return $this->isTokenOfType($token, array(
			wfWAFSQLiLexer::QUOTED_IDENTIFIER,
			wfWAFSQLiLexer::UNQUOTED_IDENTIFIER
		));
	}

	/**
	 * @param wfWAFLexerToken $token
	 * @return bool
	 */
	private function isOrToken($token) {
		return $token && ($this->isIdentifierWithValue($token, 'or') || $this->isTokenOfType($token, wfWAFSQLiLexer::EXPR_OR));
	}

	/**
	 * @param wfWAFLexerToken $token
	 * @return bool
	 */
	private function isAndToken($token) {
		return $token && ($this->isIdentifierWithValue($token, 'and') || $this->isTokenOfType($token, wfWAFSQLiLexer::EXPR_AND));
	}

	/**
	 * @return string
	 */
	public function getSubject() {
		return $this->subject;
	}

	/**
	 * @param string $subject
	 */
	public function setSubject($subject) {
		$this->subject = $subject;
		$this->setTokens(array());
		$this->lexer->setSQL($this->subject);
	}

	/**
	 * @return int
	 */
	public function getFlags() {
		return $this->flags;
	}

	/**
	 * @param int $flags
	 */
	public function setFlags($flags) {
		$this->flags = $flags;
		$this->lexer->setFlags($this->flags);
	}
}


class wfWAFSQLiLexer implements wfWAFLexerInterface {

	const FLAG_TOKENIZE_MYSQL_PORTABLE_COMMENTS = 0x1;

	const UNQUOTED_IDENTIFIER = 'UNQUOTED_IDENTIFIER';
	const VARIABLE = 'VARIABLE';
	const QUOTED_IDENTIFIER = 'QUOTED_IDENTIFIER';
	const DOUBLE_STRING_LITERAL = 'DOUBLE_STRING_LITERAL';
	const SINGLE_STRING_LITERAL = 'SINGLE_STRING_LITERAL';
	const INTEGER_LITERAL = 'INTEGER_LITERAL';
	const REAL_NUMBER_LITERAL = 'REAL_NUMBER_LITERAL';
	const BINARY_NUMBER_LITERAL = 'BINARY_NUMBER_LITERAL';
	const HEX_NUMBER_LITERAL = 'HEX_NUMBER_LITERAL';
	const DOT = 'DOT';
	const OPEN_PARENTHESIS = 'OPEN_PARENTHESIS';
	const CLOSE_PARENTHESIS = 'CLOSE_PARENTHESIS';
	const OPEN_BRACKET = 'OPEN_BRACKET';
	const CLOSE_BRACKET = 'CLOSE_BRACKET';
	const COMMA = 'COMMA';
	const EXPR_OR = 'EXPR_OR';
	const EXPR_AND = 'EXPR_AND';
	const EXPR_NOT = 'EXPR_NOT';
	const BIT_AND = 'BIT_AND';
	const BIT_LEFT_SHIFT = 'BIT_LEFT_SHIFT';
	const BIT_RIGHT_SHIFT = 'BIT_RIGHT_SHIFT';
	const BIT_XOR = 'BIT_XOR';
	const BIT_INVERSION = 'BIT_INVERSION';
	const BIT_OR = 'BIT_OR';
	const PLUS = 'PLUS';
	const MINUS = 'MINUS';
	const ASTERISK = 'ASTERISK';
	const DIVISION = 'DIVISION';
	const MOD = 'MOD';
	const ARROW = 'ARROW';
	const EQUALS_SYMBOL = 'EQUALS_SYMBOL';
	const NOT_EQUALS = 'NOT_EQUALS';
	const LESS_THAN = 'LESS_THAN';
	const GREATER_THAN = 'GREATER_THAN';
	const LESS_THAN_EQUAL_TO = 'LESS_THAN_EQUAL_TO';
	const GREATER_THAN_EQUAL_TO = 'GREATER_THAN_EQUAL_TO';
	const SET_VAR = 'SET_VAR';
	const RIGHT_BRACKET = 'RIGHT_BRACKET';
	const LEFT_BRACKET = 'LEFT_BRACKET';
	const SEMICOLON = 'SEMICOLON';
	const COLON = 'COLON';
	const MYSQL_PORTABLE_COMMENT_START = 'MYSQL_PORTABLE_COMMENT_START';
	const MYSQL_PORTABLE_COMMENT_END = 'MYSQL_PORTABLE_COMMENT_END';
	const SINGLE_LINE_COMMENT = 'SINGLE_LINE_COMMENT';
	const MULTI_LINE_COMMENT = 'MULTI_LINE_COMMENT';
	/**
	 * @var int
	 */
	private $flags;
	private $tokenMatchers;
	private $hasPortableCommentStart = false;

	public static function getLexerTokenMatchers() {
		static $tokenMatchers;
		if ($tokenMatchers === null) {
			$tokenMatchers = array(
				new wfWAFLexerTokenMatcher(self::REAL_NUMBER_LITERAL, '/^(?:[0-9]+\\.[0-9]+|[0-9]+\\.|\\.[0-9]+|[Ee][\\+\\-][0-9]+)/'),
				new wfWAFLexerTokenMatcher(self::BINARY_NUMBER_LITERAL, '/^(?:0b[01]+|[bB]\'[01]+\')/', true),
				new wfWAFLexerTokenMatcher(self::HEX_NUMBER_LITERAL, '/^(?:0x[0-9a-fA-F]+|[xX]\'[0-9a-fA-F]+\')/', true),
				new wfWAFLexerTokenMatcher(self::INTEGER_LITERAL, '/^[0-9]+/', true),
				new wfWAFLexerTokenMatcher(self::VARIABLE, '/^(?:@(?:`(?:[^`]*(?:``[^`]*)*)`|
"([^"\\\\]*(?:\\\\.[^"\\\\]*)*)"|
\'([^\'\\\\]*(?:\\\\.[^\'\\\\]*)*)\'|
[a-zA-Z_\\$\\.]+|
@[a-zA-Z_\\$][a-zA-Z_\\$0-9]{0,256}){0,1})
/Asx'),
				new wfWAFLexerTokenMatcher(self::QUOTED_IDENTIFIER, '/^`(?:[^`]*(?:``[^`]*)*)`/As'),
				new wfWAFLexerTokenMatcher(self::DOUBLE_STRING_LITERAL, '/^(?:[nN]|_[0-9a-zA-Z\\$_]{0,256})?"([^"\\\\]*(?:\\\\.[^"\\\\]*)*)"/As'),
				new wfWAFLexerTokenMatcher(self::SINGLE_STRING_LITERAL, '/^(?:[nN]|_[0-9a-zA-Z\\$_]{0,256})?\'([^\'\\\\]*(?:\\\\.[^\'\\\\]*)*)\'/As'),
				// U+0080 .. U+FFFF
				new wfWAFLexerTokenMatcher(self::UNQUOTED_IDENTIFIER, '/^[0-9a-zA-Z\\$_\\x{0080}-\\x{FFFF}]{1,256}/u'),
				new wfWAFLexerTokenMatcher(self::MYSQL_PORTABLE_COMMENT_START, '/^\\/\\*\\![0-9]{0,5}/s'),
				new wfWAFLexerTokenMatcher(self::MYSQL_PORTABLE_COMMENT_END, '/^\\*\\//s'),
				new wfWAFLexerTokenMatcher(self::SINGLE_LINE_COMMENT, '/^(?:#[^\n]*|--(?:[ \t\r][^\n]*|[\n]))/'),
				new wfWAFLexerTokenMatcher(self::MULTI_LINE_COMMENT, '/^\\/\\*.*?\\*\\//s'),
				new wfWAFLexerTokenMatcher(self::DOT, '/^\\./'),
				new wfWAFLexerTokenMatcher(self::OPEN_PARENTHESIS, '/^\\(/'),
				new wfWAFLexerTokenMatcher(self::CLOSE_PARENTHESIS, '/^\\)/'),
				new wfWAFLexerTokenMatcher(self::OPEN_BRACKET, '/^\\{/'),
				new wfWAFLexerTokenMatcher(self::CLOSE_BRACKET, '/^\\}/'),
				new wfWAFLexerTokenMatcher(self::COMMA, '/^,/'),
				new wfWAFLexerTokenMatcher(self::EXPR_OR, '/^\\|\\|/'),
				new wfWAFLexerTokenMatcher(self::EXPR_AND, '/^&&/'),
				new wfWAFLexerTokenMatcher(self::BIT_LEFT_SHIFT, '/^\\<\\</'),
				new wfWAFLexerTokenMatcher(self::BIT_RIGHT_SHIFT, '/^\\>\\>/'),
				new wfWAFLexerTokenMatcher(self::EQUALS_SYMBOL, '/^(?:\\=|\\<\\=\\>)/'),
				new wfWAFLexerTokenMatcher(self::ARROW, '/^\\=\\>/'),
				new wfWAFLexerTokenMatcher(self::LESS_THAN_EQUAL_TO, '/^\\<\\=/'),
				new wfWAFLexerTokenMatcher(self::GREATER_THAN_EQUAL_TO, '/^\\>\\=/'),
				new wfWAFLexerTokenMatcher(self::NOT_EQUALS, '/^(?:\\<\\>|(?:\\!|\\~|\\^)\\=)/'),
				new wfWAFLexerTokenMatcher(self::LESS_THAN, '/^\\</'),
				new wfWAFLexerTokenMatcher(self::GREATER_THAN, '/^\\>/'),
				new wfWAFLexerTokenMatcher(self::SET_VAR, '/^:\\=/'),
				new wfWAFLexerTokenMatcher(self::BIT_XOR, '/^\\^/'),
				new wfWAFLexerTokenMatcher(self::BIT_INVERSION, '/^\\~/'),
				new wfWAFLexerTokenMatcher(self::BIT_OR, '/^\\|/'),
				new wfWAFLexerTokenMatcher(self::PLUS, '/^\\+/'),
				new wfWAFLexerTokenMatcher(self::MINUS, '/^\\-/'),
				new wfWAFLexerTokenMatcher(self::ASTERISK, '/^\\*/'),
				new wfWAFLexerTokenMatcher(self::DIVISION, '/^\\//'),
				new wfWAFLexerTokenMatcher(self::MOD, '/^%/'),
				new wfWAFLexerTokenMatcher(self::EXPR_NOT, '/^\\!/'),
				new wfWAFLexerTokenMatcher(self::BIT_AND, '/^&/'),
				new wfWAFLexerTokenMatcher(self::RIGHT_BRACKET, '/^\\]/'),
				new wfWAFLexerTokenMatcher(self::LEFT_BRACKET, '/^\\[/'),
				new wfWAFLexerTokenMatcher(self::SEMICOLON, '/^;/'),
				new wfWAFLexerTokenMatcher(self::COLON, '/^:/'),
			);
		}
		return $tokenMatchers;
	}

	/**
	 * @var string
	 */
	private $sql;

	/**
	 * @var wfWAFStringScanner
	 */
	private $scanner;

	/**
	 * wfWAFRuleLexer constructor.
	 * @param $sql
	 * @param int $flags
	 */
	public function __construct($sql = null, $flags = 0) {
		$this->scanner = new wfWAFStringScanner();
		$this->tokenMatchers = self::getLexerTokenMatchers();
		$this->setSQL($sql);
		$this->setFlags($flags);
	}

	/**
	 * @return array
	 * @throws wfWAFParserSyntaxError
	 */
	public function tokenize() {
		$tokens = array();
		while ($token = $this->nextToken()) {
			$tokens[] = $token;
		}
		return $tokens;
	}

	/**
	 * @return bool|wfWAFLexerToken
	 * @throws wfWAFParserSyntaxError
	 */
	public function nextToken() {
		if (!$this->scanner->eos()) {
			/** @var wfWAFLexerTokenMatcher $tokenMatcher */
			foreach ($this->tokenMatchers as $tokenMatcher) {
				$this->scanner->skip('/^\s+/s');
				if ($this->scanner->eos()) {
					return false;
				}

				if (($this->flags & self::FLAG_TOKENIZE_MYSQL_PORTABLE_COMMENTS) === 0 &&
					($tokenMatcher->getTokenID() === self::MYSQL_PORTABLE_COMMENT_START ||
						$tokenMatcher->getTokenID() === self::MYSQL_PORTABLE_COMMENT_END)
				) {
					continue;
				}
				if (!$this->hasPortableCommentStart && $tokenMatcher->getTokenID() === self::MYSQL_PORTABLE_COMMENT_END) {
					continue;
				}

				if ($tokenMatcher->useMaximalMunch() && ($match = $this->scanner->check($tokenMatcher->getMatch())) !== null) {
					$biggestToken = $this->createToken($tokenMatcher->getTokenID(), $match);
					/** @var wfWAFLexerTokenMatcher $tokenMatcher2 */
					foreach ($this->tokenMatchers as $tokenMatcher2) {
						if ($tokenMatcher === $tokenMatcher2) {
							continue;
						}
						if (($match2 = $this->scanner->check($tokenMatcher2->getMatch())) !== null) {
							$biggestToken2 = $this->createToken($tokenMatcher2->getTokenID(), $match2);
							if (wfWAFUtils::strlen($biggestToken2->getValue()) > wfWAFUtils::strlen($biggestToken->getValue())) {
								$biggestToken = $biggestToken2;
							}
						}
					}
					$this->scanner->advancePointer(wfWAFUtils::strlen($biggestToken->getValue()));
					return $biggestToken;

				} else if (($match = $this->scanner->scan($tokenMatcher->getMatch())) !== null) {
					$token = $this->createToken($tokenMatcher->getTokenID(), $match);
					if ($tokenMatcher->getTokenID() === self::MYSQL_PORTABLE_COMMENT_START) {
						$this->hasPortableCommentStart = true;
					} else if ($tokenMatcher->getTokenID() === self::MYSQL_PORTABLE_COMMENT_END) {
						$this->hasPortableCommentStart = false;
					}
					return $token;
				}
			}
			$char = $this->scanner->scanChar();
			$e = new wfWAFParserSyntaxError(sprintf('Invalid character "%s" (\x%02x) found on line %d, column %d',
				$char, ord($char), $this->scanner->getLine(), $this->scanner->getColumn()));
			$e->setParseLine($this->scanner->getLine());
			$e->setParseColumn($this->scanner->getColumn());
			throw $e;
		}
		return false;
	}

	public function hasMoreTokens() {

	}

	/**
	 * @param $type
	 * @param $value
	 * @return wfWAFLexerToken
	 */
	protected function createToken($type, $value) {
		return new wfWAFLexerToken($type, $value, $this->scanner->getLine(), $this->scanner->getColumn());
	}

	/**
	 * @return string
	 */
	public function getSQL() {
		return $this->sql;
	}

	/**
	 * @param string $sql
	 */
	public function setSQL($sql) {
		if (is_string($sql)) {
			$this->scanner->setString($sql);
		}
		$this->sql = $sql;
	}

	/**
	 * @return int
	 */
	public function getFlags() {
		return $this->flags;
	}

	/**
	 * @param int $flags
	 */
	public function setFlags($flags) {
		$this->flags = $flags;
	}

	/**
	 * Check if the given token type represents a literal value
	 * @param $type the token type
	 * @return bool true if the provided type is a value literal, false otherwise
	 */
	public function isValueLiteral($type){
		switch($type){
		case self::DOUBLE_STRING_LITERAL:
		case self::SINGLE_STRING_LITERAL:
		case self::INTEGER_LITERAL:
		case self::REAL_NUMBER_LITERAL:
		case self::BINARY_NUMBER_LITERAL:
		case self::HEX_NUMBER_LITERAL:
		case self::COMMA:
			return true;
		default:
			return false;
		}
	}

}

class wfWAFLexerTokenMatcher {
	/**
	 * @var mixed
	 */
	private $tokenID;
	/**
	 * @var string
	 */
	private $match;
	/**
	 * @var bool
	 */
	private $useMaximalMunch;


	/**
	 * @param mixed $tokenID
	 * @param string $match
	 * @param bool $useMaximalMunch
	 */
	public function __construct($tokenID, $match, $useMaximalMunch = false) {
		$this->tokenID = $tokenID;
		$this->match = $match;
		$this->useMaximalMunch = $useMaximalMunch;
	}

	/**
	 * @return bool
	 */
	public function useMaximalMunch() {
		return $this->useMaximalMunch;
	}

	/**
	 * @return mixed
	 */
	public function getTokenID() {
		return $this->tokenID;
	}

	/**
	 * @param mixed $tokenID
	 */
	public function setTokenID($tokenID) {
		$this->tokenID = $tokenID;
	}

	/**
	 * @return string
	 */
	public function getMatch() {
		return $this->match;
	}

	/**
	 * @param string $match
	 */
	public function setMatch($match) {
		$this->match = $match;
	}
}
}
vendor/wordfence/wf-waf/src/lib/parser/lexer.php000064400000040326150755146450015706 0ustar00<?php
if (defined('WFWAF_VERSION') && !defined('WFWAF_RUN_COMPLETE')) {

interface wfWAFLexerInterface {

	public function nextToken();

}

class wfWAFRuleLexer implements wfWAFLexerInterface {

	const MATCH_IDENTIFIER = '/[a-zA-Z_][\\w_]*/';
	const MATCH_SINGLE_STRING_LITERAL = '/\'([^\'\\\\]*(?:\\\\.[^\'\\\\]*)*)\'/As';
	const MATCH_DOUBLE_STRING_LITERAL = '/"([^#"\\\\]*(?:\\\\.[^#"\\\\]*)*)"/As';
	const MATCH_NUMBER_LITERAL = '/-?\d+(\.\d+)?/';
	const MATCH_DOT = '/\./';
	const MATCH_AND_COMPARISON_OPERATOR = '/&&/';
	const MATCH_OR_COMPARISON_OPERATOR = '/\|\|/';
	const MATCH_OPEN_PARENTHESIS = '/\(/';
	const MATCH_CLOSE_PARENTHESIS = '/\)/';
	const MATCH_COMMA = '/,/';
	const MATCH_RULE_COMPARISON_END = '/:/';
	const MATCH_ASSIGNMENT = '/=/';
	const MATCH_SINGLE_LINE_COMMENT = '/(?:#|\/\/)[^\n]*/';
	const MATCH_MULTIPLE_LINE_COMMENT = '/\/\*.*?\*\//s';
	const MATCH_OPEN_BRACKET = '/\[/';
	const MATCH_CLOSE_BRACKET = '/\]/';

	const T_RULE_START = 'T_RULE_START';
	const T_IDENTIFIER = 'T_IDENTIFIER';
	const T_SINGLE_STRING_LITERAL = 'T_SINGLE_STRING_LITERAL';
	const T_DOUBLE_STRING_LITERAL = 'T_DOUBLE_STRING_LITERAL';
	const T_NUMBER_LITERAL = 'T_NUMBER_LITERAL';
	const T_DOT = 'T_DOT';
	const T_COMPARISON_OPERATOR = 'T_COMPARISON_OPERATOR';
	const T_OPEN_PARENTHESIS = 'T_OPEN_PARENTHESIS';
	const T_CLOSE_PARENTHESIS = 'T_CLOSE_PARENTHESIS';
	const T_COMMA = 'T_COMMA';
	const T_RULE_COMPARISON_END = 'T_RULE_COMPARISON_END';
	const T_ASSIGNMENT = 'T_ASSIGNMENT';
	const T_SINGLE_LINE_COMMENT = 'T_SINGLE_LINE_COMMENT';
	const T_MULTIPLE_LINE_COMMENT = 'T_MULTIPLE_LINE_COMMENT';
	const T_OPEN_BRACKET = 'T_OPEN_BRACKET';
	const T_CLOSE_BRACKET = 'T_CLOSE_BRACKET';


	/**
	 * @var string
	 */
	private $rules;

	/**
	 * @var wfWAFStringScanner
	 */
	private $scanner;

	/**
	 * wfWAFRuleLexer constructor.
	 * @param $rules
	 */
	public function __construct($rules) {
		$this->setRules($rules);
		$this->scanner = new wfWAFStringScanner($rules);
	}

	/**
	 * @return array
	 * @throws wfWAFParserSyntaxError
	 */
	public function tokenize() {
		$tokens = array();
		while ($token = $this->nextToken()) {
			$tokens[] = $token;
		}
		return $tokens;
	}

	/**
	 * @return bool|wfWAFLexerToken
	 * @throws wfWAFParserSyntaxError
	 */
	public function nextToken() {
		if (!$this->scanner->eos()) {
			$this->scanner->skip('/\s+/s');
			if ($this->scanner->eos()) {
				return false;
			}
			if (($match = $this->scanner->scan(self::MATCH_IDENTIFIER)) !== null)
				switch (wfWAFUtils::strtolower($match)) {
					case 'if':
						return $this->createToken(self::T_RULE_START, $match);
					case 'and':
					case 'or':
					case 'xor':
						return $this->createToken(self::T_COMPARISON_OPERATOR, $match);
					default:
						return $this->createToken(self::T_IDENTIFIER, $match);
				}
			else if (($match = $this->scanner->scan(self::MATCH_SINGLE_STRING_LITERAL)) !== null) return $this->createToken(self::T_SINGLE_STRING_LITERAL, $match);
			else if (($match = $this->scanner->scan(self::MATCH_DOUBLE_STRING_LITERAL)) !== null) return $this->createToken(self::T_DOUBLE_STRING_LITERAL, $match);
			else if (($match = $this->scanner->scan(self::MATCH_NUMBER_LITERAL)) !== null) return $this->createToken(self::T_NUMBER_LITERAL, $match);
			else if (($match = $this->scanner->scan(self::MATCH_DOT)) !== null) return $this->createToken(self::T_DOT, $match);
			else if (($match = $this->scanner->scan(self::MATCH_AND_COMPARISON_OPERATOR)) !== null) return $this->createToken(self::T_COMPARISON_OPERATOR, $match);
			else if (($match = $this->scanner->scan(self::MATCH_OR_COMPARISON_OPERATOR)) !== null) return $this->createToken(self::T_COMPARISON_OPERATOR, $match);
			else if (($match = $this->scanner->scan(self::MATCH_OPEN_PARENTHESIS)) !== null) return $this->createToken(self::T_OPEN_PARENTHESIS, $match);
			else if (($match = $this->scanner->scan(self::MATCH_CLOSE_PARENTHESIS)) !== null) return $this->createToken(self::T_CLOSE_PARENTHESIS, $match);
			else if (($match = $this->scanner->scan(self::MATCH_COMMA)) !== null) return $this->createToken(self::T_COMMA, $match);
			else if (($match = $this->scanner->scan(self::MATCH_RULE_COMPARISON_END)) !== null) return $this->createToken(self::T_RULE_COMPARISON_END, $match);
			else if (($match = $this->scanner->scan(self::MATCH_ASSIGNMENT)) !== null) return $this->createToken(self::T_ASSIGNMENT, $match);
			else if (($match = $this->scanner->scan(self::MATCH_OPEN_BRACKET)) !== null) return $this->createToken(self::T_OPEN_BRACKET, $match);
			else if (($match = $this->scanner->scan(self::MATCH_CLOSE_BRACKET)) !== null) return $this->createToken(self::T_CLOSE_BRACKET, $match);
			else if (($match = $this->scanner->scan(self::MATCH_SINGLE_LINE_COMMENT)) !== null) return $this->createToken(self::T_SINGLE_LINE_COMMENT, $match);
			else if (($match = $this->scanner->scan(self::MATCH_MULTIPLE_LINE_COMMENT)) !== null) return $this->createToken(self::T_MULTIPLE_LINE_COMMENT, $match);
			else {
				$e = new wfWAFParserSyntaxError(sprintf('Invalid character "%s" found on line %d, column %d',
					$this->scanner->scanChar(), $this->scanner->getLine(), $this->scanner->getColumn()));
				$e->setParseLine($this->scanner->getLine());
				$e->setParseColumn($this->scanner->getColumn());
				throw $e;
			}
		}
		return false;
	}

	/**
	 * @param $type
	 * @param $value
	 * @return wfWAFLexerToken
	 */
	protected function createToken($type, $value) {
		return new wfWAFLexerToken($type, $value, $this->scanner->getLine(), $this->scanner->getColumn());
	}

	/**
	 * @return string
	 */
	public function getRules() {
		return $this->rules;
	}

	/**
	 * @param string $rules
	 */
	public function setRules($rules) {
		$this->rules = rtrim($rules);
	}
}

/**
 *
 */
class wfWAFLexerToken {

	private $type;
	private $value;
	private $line;
	private $column;

	/**
	 * wfWAFRuleToken constructor.
	 *
	 * @param $type
	 * @param $value
	 * @param $line
	 * @param $column
	 */
	public function __construct($type, $value, $line, $column) {
		$this->setType($type);
		$this->setValue($value);
		$this->setLine($line);
		$this->setColumn($column);
	}

	/**
	 * @return string
	 */
	public function getLowerCaseValue() {
		return wfWAFUtils::strtolower($this->getValue());
	}

	/**
	 * @return string
	 */
	public function getUpperCaseValue() {
		return wfWAFUtils::strtoupper($this->getValue());
	}

	/**
	 * @return mixed
	 */
	public function getType() {
		return $this->type;
	}

	/**
	 * @param mixed $type
	 */
	public function setType($type) {
		$this->type = $type;
	}

	/**
	 * @return mixed
	 */
	public function getValue() {
		return $this->value;
	}

	/**
	 * @param mixed $value
	 */
	public function setValue($value) {
		$this->value = $value;
	}

	/**
	 * @return mixed
	 */
	public function getLine() {
		return $this->line;
	}

	/**
	 * @param mixed $line
	 */
	public function setLine($line) {
		$this->line = $line;
	}

	/**
	 * @return mixed
	 */
	public function getColumn() {
		return $this->column;
	}

	/**
	 * @param mixed $column
	 */
	public function setColumn($column) {
		$this->column = $column;
	}
}


class wfWAFParserSyntaxError extends wfWAFException {

	private $parseLine;
	private $parseColumn;
	private $token;

	/**
	 * @return mixed
	 */
	public function getToken() {
		return $this->token;
	}

	/**
	 * @param mixed $token
	 */
	public function setToken($token) {
		$this->token = $token;
	}

	/**
	 * @return mixed
	 */
	public function getParseLine() {
		return $this->parseLine;
	}

	/**
	 * @param mixed $parseLine
	 */
	public function setParseLine($parseLine) {
		$this->parseLine = $parseLine;
	}

	/**
	 * @return mixed
	 */
	public function getParseColumn() {
		return $this->parseColumn;
	}

	/**
	 * @param mixed $parseColumn
	 */
	public function setParseColumn($parseColumn) {
		$this->parseColumn = $parseColumn;
	}

}

class wfWAFBaseParser {

	protected $tokens;
	protected $index;
	/** @var wfWAFLexerInterface */
	protected $lexer;
	protected $checkpoint=0;

	public function __construct($lexer) {
		$this->lexer = $lexer;
	}

	/**
	 * @param wfWAFLexerToken $token
	 * @param mixed $type
	 * @return bool
	 */
	protected function isTokenOfType($token, $type) {
		if (is_array($type)) {
			return $token && in_array($token->getType(), $type);
		}
		return $token && $token->getType() === $type;
	}

	/**
	 * @param wfWAFLexerToken $token
	 * @param int $type
	 * @param string $message
	 * @throws wfWAFParserSyntaxError
	 */
	protected function expectTokenTypeEquals($token, $type, $message = 'Wordfence WAF Syntax Error: Unexpected %s found on line %d, column %d. Expected %s.') {
		if ($token->getType() !== $type) {
			$this->triggerSyntaxError($token, sprintf($message, $token->getType(),
				$token->getLine(), $token->getColumn(), $type));
		}
	}

	/**
	 * @param wfWAFLexerToken $token
	 * @param array $types
	 * @param string $message
	 * @throws wfWAFParserSyntaxError
	 */
	protected function expectTokenTypeInArray($token, $types, $message = 'Wordfence WAF Syntax Error: Unexpected %s found on line %d, column %d') {
		if (!in_array($token->getType(), $types)) {
			$this->triggerSyntaxError($token, sprintf($message, $token->getType(),
				$token->getLine(), $token->getColumn()));
		}
	}

	/**
	 * @param wfWAFLexerToken $token
	 * @param string $message
	 * @throws wfWAFParserSyntaxError
	 */
	protected function triggerSyntaxError($token, $message = 'Wordfence WAF Syntax Error: Unexpected %s %s found on line %d, column %d') {
		$e = new wfWAFParserSyntaxError(sprintf($message, $token->getType(), $token->getValue(),
			$token->getLine(), $token->getColumn()));
		$e->setToken($token);
		$e->setParseLine($token->getLine());
		$e->setParseColumn($token->getColumn());
		throw $e;
	}

	/**
	 * @return wfWAFLexerToken
	 */
	protected function currentToken() {
		return $this->getToken($this->index);
	}

	/**
	 * @return bool|wfWAFLexerToken
	 */
	protected function nextToken() {
		$this->index++;
		return $this->getToken($this->index);
	}

	/**
	 * @param string $message
	 * @return wfWAFLexerToken
	 * @throws wfWAFParserSyntaxError
	 */
	protected function expectNextToken($message = 'Expected statement') {
		$this->index++;
		if ($token = $this->getToken($this->index)) {
			return $token;
		}
		throw new wfWAFParserSyntaxError($message);
	}

	/**
	 * @param int $index
	 * @return mixed
	 */
	protected function getToken($index) {
		if (is_array($this->tokens) && array_key_exists($index, $this->tokens)) {
			return $this->tokens[$index];
		}
		if ($token = $this->getLexer()->nextToken()) {
			$this->tokens[$index] = $token;
			return $this->tokens[$index];
		}
		return false;
	}

	/**
	 * @return wfWAFLexerInterface
	 */
	public function getLexer() {
		return $this->lexer;
	}

	/**
	 * @param wfWAFLexerInterface $lexer
	 */
	public function setLexer($lexer) {
		$this->lexer = $lexer;
	}

	/**
	 * @return mixed
	 */
	public function getTokens() {
		return $this->tokens;
	}

	/**
	 * @param mixed $tokens
	 */
	public function setTokens($tokens) {
		$this->tokens = $tokens;
	}

	protected function setCheckpoint() {
		$this->checkpoint=$this->index;
	}

	protected function reset() {
		$this->index=$this->checkpoint;
	}

}

/**
 *
 */
class wfWAFStringScanner {

	private $string;
	private $remainingStringCache;
	private $length;
	private $pointer;
	private $remainingStringCachePointer;
	private $prevPointer;
	private $match;
	private $captures;

	/**
	 * wfWAFStringScanner constructor.
	 * @param $string
	 */
	public function __construct($string = null) {
		if (is_string($string)) {
			$this->setString($string);
		}
	}

	/**
	 * @param $regex
	 * @return mixed
	 */
	public function scan($regex) {
		$remaining = $this->getRemainingString();
		if ($this->regexMatch($regex, $remaining, $matches)) {
			$matchLen = wfWAFUtils::strlen($matches[0]);
			if ($matchLen > 0 && wfWAFUtils::strpos($remaining, $matches[0]) === 0) {
				return $this->setState($matches, $this->getPointer() + $matchLen, $this->getPointer());
			}
		}
		return $this->setState();
	}

	/**
	 * @param $regex
	 * @return int|null
	 */
	public function skip($regex) {
		return $this->scan($regex) ? wfWAFUtils::strlen($this->getMatch()) : null;
	}

	/**
	 * @return mixed
	 */
	public function scanChar() {
		return $this->scan('/./s');
	}

	/**
	 * @param string $regex
	 * @return mixed
	 */
	public function check($regex) {
		$remaining = $this->getRemainingString();
		if ($this->regexMatch($regex, $remaining, $matches)) {
			$matchLen = wfWAFUtils::strlen($matches[0]);
			if ($matchLen > 0 && wfWAFUtils::strpos($remaining, $matches[0]) === 0) {
				return $this->setState($matches);
			}
		}
		return $this->setState();
	}

	/**
	 * @param string $regex
	 * @param string $remaining
	 * @param $matches
	 * @return int
	 */
	public function regexMatch($regex, $remaining, &$matches) {
//		$startTime = microtime(true);
		$result = preg_match($regex, $remaining, $matches);
//		printf("%s took %f seconds\n", $regex, microtime(true) - $startTime);
		return $result;
	}

	/**
	 * @return bool
	 */
	public function eos() {
		return $this->getPointer() === $this->getLength();
	}

	/**
	 * @return string
	 */
	public function getRemainingString() {
		$pointer = $this->getPointer();
		if ($pointer === $this->remainingStringCachePointer && is_string($this->remainingStringCache)) {
			return $this->remainingStringCache;
		}
		$this->remainingStringCache = wfWAFUtils::substr($this->getString(), $pointer);
		$this->remainingStringCachePointer = $pointer;
		return $this->remainingStringCache;
	}

	/**
	 * @return $this
	 */
	public function reset() {
		$this->remainingStringCache = false;
		$this->setState(array(), 0, 0);
		return $this;
	}

	/**
	 * The current line of the scanned string.
	 *
	 * @return int
	 */
	public function getLine() {
		if ($this->getPointer() + 1 > $this->getLength()) {
			return wfWAFUtils::substr_count($this->getString(), "\n") + 1;
		}
		return wfWAFUtils::substr_count($this->getString(), "\n", 0, $this->getPointer() + 1) + 1;
	}

	/**
	 * The current column of the line of the scanned string.
	 *
	 * @return int
	 */
	public function getColumn() {
		return $this->getPointer() - ((int) wfWAFUtils::strrpos(wfWAFUtils::substr($this->getString(), 0, $this->getPointer() + 1), "\n")) + 1;
	}

	/**
	 * @param array $matches
	 * @param int|null $pointer
	 * @param int|null $prevPointer
	 * @return mixed
	 */
	protected function setState($matches = array(), $pointer = null, $prevPointer = null) {
		if ($pointer !== null) {
			$this->setPointer($pointer);
		}
		if ($prevPointer !== null) {
			$this->setPrevPointer($prevPointer);
		}
		if (is_array($matches)) {
			$this->setCaptures(array_slice($matches, 1));
			if (count($matches) > 0) {
				$this->setMatch($matches[0]);
			} else {
				$this->setMatch(null);
			}
		} else {
			$this->setMatch(null);
		}
		return $this->getMatch();
	}

	/**
	 * @return string
	 */
	public function getString() {
		return $this->string;
	}

	/**
	 * @param string $string
	 * @throws InvalidArgumentException
	 */
	public function setString($string) {
		if (!is_string($string)) {
			throw new InvalidArgumentException(sprintf('String expected, got [%s]', gettype($string)));
		}
		$this->setLength(wfWAFUtils::strlen($string));
		$this->string = $string;
		$this->reset();
	}

	/**
	 * @return int
	 */
	public function getLength() {
		return $this->length;
	}

	/**
	 * @param int $length
	 */
	protected function setLength($length) {
		$this->length = $length;
	}

	/**
	 * @param int $length
	 */
	public function advancePointer($length) {
		$this->setPointer($this->getPointer() + $length);
	}

	/**
	 * @return int
	 */
	public function getPointer() {
		return $this->pointer;
	}

	/**
	 * @param int $pointer
	 */
	protected function setPointer($pointer) {
		$this->pointer = $pointer;
	}

	/**
	 * @return int
	 */
	public function getPrevPointer() {
		return $this->prevPointer;
	}

	/**
	 * @param int $prevPointer
	 */
	protected function setPrevPointer($prevPointer) {
		$this->prevPointer = $prevPointer;
	}

	/**
	 * @return mixed
	 */
	public function getMatch() {
		return $this->match;
	}

	/**
	 * @param mixed $match
	 */
	protected function setMatch($match) {
		$this->match = $match;
	}

	/**
	 * @param null $index
	 * @return mixed
	 */
	public function getCaptures($index = null) {
		if (is_numeric($index)) {
			return isset($this->captures[$index]) ? $this->captures[$index] : null;
		}
		return $this->captures;
	}

	/**
	 * @param mixed $captures
	 */
	protected function setCaptures($captures) {
		$this->captures = $captures;
	}
}
}vendor/wordfence/wf-waf/src/lib/parser/parser.php000064400000054671150755146450016073 0ustar00<?php
if (defined('WFWAF_VERSION') && !defined('WFWAF_RUN_COMPLETE')) {

require_once dirname(__FILE__) . '/lexer.php';

class wfWAFRuleParser extends wfWAFBaseParser {

	/**
	 * @var wfWAF
	 */
	private $waf;
	private $parenCount = 0;

	/**
	 * wfWAFRuleParser constructor.
	 * @param $lexer
	 * @param wfWAF $waf
	 */
	public function __construct($lexer, $waf) {
		parent::__construct($lexer);
		$this->setWAF($waf);
	}

	/**
	 * @return array
	 * @throws wfWAFParserSyntaxError
	 * @throws wfWAFRuleParserSyntaxError
	 */
	public function parse() {
		$rules = array();
		$scores = array();
		$blacklistedParams = array();
		$whitelistedParams = array();
		$variables = array();
		$this->index = -1;
		while ($token = $this->nextToken()) {

			// Rule parsing
			if ($token->getType() == wfWAFRuleLexer::T_RULE_START) {
				$this->expectTokenTypeEquals($this->expectNextToken(), wfWAFRuleLexer::T_OPEN_PARENTHESIS);

				$comparisonGroup = $this->parseConditional();
				$this->expectTokenTypeEquals($this->expectNextToken(), wfWAFRuleLexer::T_CLOSE_PARENTHESIS);
				$this->expectTokenTypeEquals($this->expectNextToken(), wfWAFRuleLexer::T_RULE_COMPARISON_END);
				$action = $this->parseAction();

				$rules[] = new wfWAFRule(
					$this->getWAF(),
					$action->getRuleID(),
					$action->getType(),
					$action->getCategory(),
					$action->getScore(),
					$action->getDescription(),
					$action->getWhitelist(),
					$action->getAction(),
					$comparisonGroup
				);
			}

			// Score/config parsing
			if ($token->getType() == wfWAFRuleLexer::T_IDENTIFIER) {
				switch ($token->getValue()) {
					case 'scores':
						$this->expectTokenTypeEquals($this->expectNextToken(), wfWAFRuleLexer::T_DOT);
						$scoreCategoryToken = $this->expectNextToken();
						$this->expectTokenTypeEquals($scoreCategoryToken, wfWAFRuleLexer::T_IDENTIFIER);

						$this->expectTokenTypeEquals($this->expectNextToken(), wfWAFRuleLexer::T_ASSIGNMENT);

						$scoreToken = $this->expectNextToken();
						$this->expectTokenTypeEquals($scoreToken, wfWAFRuleLexer::T_NUMBER_LITERAL);
						$scores[$scoreCategoryToken->getValue()] = $scoreToken->getValue();
						break;

					case 'blacklistParam':
						$blacklistedParams[] = $this->parseURLParams();
						break;

					case 'whitelistParam':
						$whitelistedParams[] = $this->parseURLParams();
						break;

					default:
						$this->expectTokenTypeEquals($this->expectNextToken(), wfWAFRuleLexer::T_ASSIGNMENT);
						$valueToken = $this->expectNextToken();
						$this->expectTokenTypeInArray($valueToken, array(
							wfWAFRuleLexer::T_SINGLE_STRING_LITERAL,
							wfWAFRuleLexer::T_DOUBLE_STRING_LITERAL,
							wfWAFRuleLexer::T_NUMBER_LITERAL,
						));
						if ($valueToken->getType() === wfWAFRuleLexer::T_SINGLE_STRING_LITERAL) {
							$value = wfWAFUtils::substr($valueToken->getValue(), 1, -1);
							$value = str_replace("\\'", "'", $value);
						} else if ($valueToken->getType() === wfWAFRuleLexer::T_DOUBLE_STRING_LITERAL) {
							$value = wfWAFUtils::substr($valueToken->getValue(), 1, -1);
							$value = str_replace('\\"', '"', $value);
						} else {
							$value = $valueToken->getValue();
						}
						$variables[$token->getValue()] = new wfWAFRuleVariable($this->getWAF(), $token->getValue(), $value);
						break;
				}
			}
		}

		return array(
			'scores'            => $scores,
			'blacklistedParams' => $blacklistedParams,
			'whitelistedParams' => $whitelistedParams,
			'variables'         => $variables,
			'rules'             => $rules,
		);
	}

	/**
	 * @param array $vars
	 * @return string
	 */
	public function renderRules($vars) {
		$rules = '';
		if (array_key_exists('scores', $vars)) {
			foreach ($vars['scores'] as $category => $score) {
				// scores.sqli = 100
				$rules .= sprintf("scores.%s = %d\n", $category, $score);
			}
			$rules .= "\n";
		}

		$params = array(
			'blacklistParam' => 'blacklistedParams',
			'whitelistParam' => 'whitelistedParams',
		);
		foreach ($params as $action => $key) {
			if (array_key_exists($key, $vars)) {
				/** @var wfWAFRuleParserURLParam $urlParam */
				foreach ($vars[$key] as $urlParam) {
					$rules .= $urlParam->renderRule($action) . "\n";
				}
				$rules .= "\n";
			}
		}

		if (array_key_exists('variables', $vars)) {
			/** @var wfWAFRuleVariable $variable */
			foreach ($vars['variables'] as $variableName => $variable) {
				$rules .= sprintf("%s = %s\n", $variable->renderRule(), $variable->renderValue());
			}
			$rules .= "\n";
		}

		if (array_key_exists('rules', $vars)) {
			/** @var wfWAFRule $rule */
			foreach ($vars['rules'] as $rule) {
				$rules .= $rule->renderRule() . "\n";
			}
			$rules .= "\n";
		}
		return $rules;
	}

	/**
	 * @param int $index
	 * @return mixed
	 */
	public function getToken($index) {
		if (is_array($this->tokens) && array_key_exists($index, $this->tokens)) {
			return $this->tokens[$index];
		}
		if ($token = $this->getLexer()->nextToken()) {
			$this->tokens[$index] = $token;
			return $this->tokens[$index];
		}
		return false;
	}

	/**
	 * @return wfWAFRuleComparisonGroup
	 */
	private function parseConditional() {
		$comparisonGroup = new wfWAFRuleComparisonGroup();
		while ($token = $this->nextToken()) {
			switch ($token->getType()) {
				case wfWAFRuleLexer::T_IDENTIFIER:
					$comparisonGroup->add($this->parseComparison());
					break;

				case wfWAFRuleLexer::T_COMPARISON_OPERATOR:
					$comparisonGroup->add(new wfWAFRuleLogicalOperator($token->getValue()));
					break;

				case wfWAFRuleLexer::T_OPEN_PARENTHESIS:
					$this->parenCount++;
					$comparisonGroup->add($this->parseConditional());
					break;

				case wfWAFRuleLexer::T_CLOSE_PARENTHESIS:
					if ($this->parenCount === 0) {
						$this->index--;
						return $comparisonGroup;
					}
					$this->parenCount--;
					return $comparisonGroup;
			}

		}
		return $comparisonGroup;
	}

	private function parseComparison($expectLiteral = true) {
		/**
		 * @var wfWAFLexerToken $actionToken
		 * @var wfWAFLexerToken $expectedToken
		 */
		$this->setCheckpoint();
		$actionToken = $this->currentToken();
		$this->expectTokenTypeEquals($this->expectNextToken(), wfWAFRuleLexer::T_OPEN_PARENTHESIS);
		$value=null;
		if($expectLiteral) {
			try {
				$value = $this->expectLiteral(array(wfWAFRuleLexer::T_CLOSE_PARENTHESIS));
				if ($value === null && $expectLiteral) {
					$this->index--;
				}
			}
			catch(wfWAFParserSyntaxError $e) {
				if($expectLiteral) {
					$this->reset();
					return $this->parseComparison(false);
				}
				throw $e;
			}
		}

		$subjects = array();
		$nextToken = $this->nextToken();
		if ($value!==null||!$expectLiteral) {
			while (true) {
				if ($nextToken && $nextToken->getType() === wfWAFRuleLexer::T_CLOSE_PARENTHESIS) {
					break;
				}
				if (!($nextToken && $nextToken->getType() === wfWAFRuleLexer::T_COMMA)) {
					if(empty($subjects) && $expectLiteral) {
						$this->reset();
						return $this->parseComparison(false);
					}
					$this->index--;
					if(!empty($subjects))
						break;
				}
				list($filters, $subject) = $this->parseFilters();
				$current = new wfWAFRuleComparisonSubject($this->getWAF(), $subject, $filters);
				$nextToken = $this->expectNextToken();
				if (in_array($nextToken->getType(), array(wfWAFRuleLexer::T_DOT, wfWAFRuleLexer::T_OPEN_BRACKET))) {
					$this->index--;
					$childSubject = $this->parseSubject(false);
					if (!is_array($childSubject) )
						$childSubject = array($childSubject);
					array_unshift($childSubject, $current);
					$current = new wfWAFRuleComparisonSubject($this->getWAF(), $childSubject, array());
					$nextToken = $this->expectNextToken();
				}
				$subjects[] = $current;
			}
			$this->expectTokenTypeEquals($nextToken, wfWAFRuleLexer::T_CLOSE_PARENTHESIS);
		}

		$comparison = new wfWAFRuleComparison($this->getWAF(), $actionToken->getValue(), $value, $subjects);
		return $comparison;
	}

	/**
	 * @return wfWAFRuleParserAction
	 */
	private function parseAction() {
		$action = new wfWAFRuleParserAction();

		$actionToken = $this->expectNextToken();
		$this->expectTokenTypeEquals($actionToken, wfWAFRuleLexer::T_IDENTIFIER);
		$action->setAction($actionToken->getValue());
		$this->expectTokenTypeEquals($this->expectNextToken(), wfWAFRuleLexer::T_OPEN_PARENTHESIS);

		while (true) {
			$token = $this->expectNextToken();
			switch ($token->getType()) {
				case wfWAFRuleLexer::T_IDENTIFIER:
					$this->expectTokenTypeEquals($this->expectNextToken(), wfWAFRuleLexer::T_ASSIGNMENT);
					$valueToken = $this->expectNextToken();
					$this->expectTokenTypeInArray($valueToken, array(
						wfWAFRuleLexer::T_SINGLE_STRING_LITERAL,
						wfWAFRuleLexer::T_DOUBLE_STRING_LITERAL,
						wfWAFRuleLexer::T_NUMBER_LITERAL,
					));
					$action->set($token->getValue(), $valueToken->getValue());
					break;

				case wfWAFRuleLexer::T_COMMA:
					break;

				case wfWAFRuleLexer::T_CLOSE_PARENTHESIS:
					break 2;

				default:
					$this->triggerSyntaxError($token, sprintf('Wordfence WAF Rules Syntax Error: Unexpected %s found on line %d, column %d',
						$token->getType(), $token->getLine(), $token->getColumn()));
			}
		}
		return $action;
	}

	private function parseFilters() {
		$filters = array();
		$subject = null;
		do {
			$globalToken = $this->expectNextToken();
			$this->expectTokenTypeEquals($globalToken, wfWAFRuleLexer::T_IDENTIFIER);
			$parenToken = $this->expectNextToken();
			switch ($parenToken->getType()) {
				case wfWAFRuleLexer::T_DOT:
					$this->index -= 2;
					$subject = $this->parseSubject();
					break 2;

				case wfWAFRuleLexer::T_OPEN_PARENTHESIS:
					array_unshift($filters, array($globalToken->getValue()));
					break;

				default:
					$this->triggerSyntaxError($parenToken,
						sprintf('Wordfence WAF Rules Syntax Error: Unexpected %s found on line %d, column %d.',
							$parenToken->getType(), $parenToken->getLine(), $parenToken->getColumn()));
			}
		} while (true);
		if ($subject === null) {
			throw new wfWAFParserSyntaxError('No subject supplied to filter');
		}
		for ($i = 0; $i < count($filters); $i++) {
			do {
				$next = $this->expectNextToken();
				$this->expectTokenTypeInArray($next, array(wfWAFRuleLexer::T_CLOSE_PARENTHESIS, wfWAFRuleLexer::T_COMMA));
				if ($next->getType() === wfWAFRuleLexer::T_COMMA) {
					$filters[$i][] = $this->expectLiteral();
				}
				else {
					break;
				}
			} while(true);
		}
		return array($filters, $subject);
	}

	/**
	 * @throws wfWAFParserSyntaxError
	 */
	private function parseSubject($global = true) {
		if ($global) {
			$globalToken = $this->expectNextToken();
			$this->expectTokenTypeEquals($globalToken, wfWAFRuleLexer::T_IDENTIFIER);
			$this->expectTokenTypeEquals($this->expectNextToken(), wfWAFRuleLexer::T_DOT);
			$globalToken2 = $this->expectNextToken();
			$this->expectTokenTypeEquals($globalToken2, wfWAFRuleLexer::T_IDENTIFIER);
			$subject = array(
				$globalToken->getValue() . '.' . $globalToken2->getValue(),
			);
		}
		else {
			$subject = array();
		}
		$savePoint = $this->index;
		while (($property = $this->parsePropertyAccessor()) !== false) {
			$subject[] = $property;
			$savePoint = $this->index;
		}
		$this->index = $savePoint;
		if (count($subject) === 1) {
			list($subject) = $subject;
		}
		return $subject;
	}

	/**
	 * @return bool|mixed|string
	 * @throws wfWAFParserSyntaxError
	 */
	private function parsePropertyAccessor() {
		$savePoint = $this->index;
		$nextToken = $this->nextToken();
		if ($this->isTokenOfType($nextToken, wfWAFRuleLexer::T_DOT)) {
			$property = $this->expectNextToken();
			$this->expectTokenTypeEquals($property, wfWAFRuleLexer::T_IDENTIFIER);
			return $property->getValue();
		} else if ($this->isTokenOfType($nextToken, wfWAFRuleLexer::T_OPEN_BRACKET)) {
			$property = $this->expectLiteral();
			$this->expectTokenTypeEquals($this->expectNextToken(), wfWAFRuleLexer::T_CLOSE_BRACKET);
			return $property;
		}
		$this->index = $savePoint;
		return false;
	}

	/**
	 * @return wfWAFRuleParserURLParam
	 * @throws wfWAFParserSyntaxError
	 */
	private function parseURLParams() {
		$this->expectTokenTypeEquals($this->expectNextToken(), wfWAFRuleLexer::T_OPEN_PARENTHESIS);

		$urlParam = new wfWAFRuleParserURLParam();
		while (true) {
			$token = $this->expectNextToken();
			switch ($token->getType()) {
				case wfWAFRuleLexer::T_IDENTIFIER:
					$this->expectTokenTypeEquals($this->expectNextToken(), wfWAFRuleLexer::T_ASSIGNMENT);
					if ($token->getValue() === 'url') {
						$url = $this->expectLiteral();
						$urlParam->setUrl($url);
					} else if ($token->getValue() === 'param') {
						$subject = $this->parseSubject();
						$urlParam->setParam(wfWAFRuleComparison::getSubjectKey($subject));
					} else if ($token->getValue() === 'rules') {
						$rules = $this->expectLiteral();
						$urlParam->setRules($rules);
					} else if ($token->getValue() === 'conditional') {
						$this->expectTokenTypeEquals($this->expectNextToken(), wfWAFRuleLexer::T_OPEN_PARENTHESIS);
						$conditional = $this->parseConditional();
						$this->expectTokenTypeEquals($this->expectNextToken(), wfWAFRuleLexer::T_CLOSE_PARENTHESIS);
						$urlParam->setConditional($conditional);
					} else if ($token->getValue() === 'minVersion') {
						$minVersion = $this->expectLiteral();
						$urlParam->setMinVersion($minVersion);
					}

					break;

				case wfWAFRuleLexer::T_COMMA:
					break;

				case wfWAFRuleLexer::T_CLOSE_PARENTHESIS:
					break 2;

				default:
					$this->triggerSyntaxError($token, sprintf('Wordfence WAF Rules Syntax Error: Unexpected %s found on line %d, column %d',
						$token->getType(), $token->getLine(), $token->getColumn()));
			}
		}
		return $urlParam;
	}

	/**
	 * @return mixed|string
	 * @throws wfWAFRuleParserSyntaxError
	 */
	private function expectLiteral($allowExtra = array()) {
		$expectedToken = $this->expectNextToken();
		$this->expectTokenTypeInArray($expectedToken, array_merge(array(
			wfWAFRuleLexer::T_SINGLE_STRING_LITERAL,
			wfWAFRuleLexer::T_DOUBLE_STRING_LITERAL,
			wfWAFRuleLexer::T_IDENTIFIER,
			wfWAFRuleLexer::T_NUMBER_LITERAL,
			wfWAFRuleLexer::T_OPEN_BRACKET,
		), $allowExtra));
		if ($expectedToken->getType() === wfWAFRuleLexer::T_SINGLE_STRING_LITERAL) {
			// Remove quotes, strip slashes
			$value = wfWAFUtils::substr($expectedToken->getValue(), 1, -1);
			$value = str_replace("\\'", "'", $value);
		} else if ($expectedToken->getType() === wfWAFRuleLexer::T_DOUBLE_STRING_LITERAL) {
			// Remove quotes, strip slashes
			$value = wfWAFUtils::substr($expectedToken->getValue(), 1, -1);
			$value = str_replace('\\"', '"', $value);
		} else if ($expectedToken->getType() === wfWAFRuleLexer::T_IDENTIFIER) {
			// Remove quotes, strip slashes
			$value = new wfWAFRuleVariable($this->getWAF(), $expectedToken->getValue());
		} else if ($expectedToken->getType() === wfWAFRuleLexer::T_OPEN_BRACKET) {
			$value = array();
			while (true) {
				$nextToken = $this->expectNextToken();
				if ($nextToken->getType() === wfWAFRuleLexer::T_CLOSE_BRACKET) {
					break;
				}
				if ($nextToken->getType() === wfWAFRuleLexer::T_COMMA) {
					continue;
				}
				$this->index--;
				$value[] = $this->expectLiteral();
			}
		} else if (in_array($expectedToken->getType(), $allowExtra)) {
		   return null;
		} else {
			$value = $expectedToken->getValue();
		}
		return $value;
	}

	/**
	 * @param wfWAFLexerToken $token
	 * @param string|array $value
	 * @return bool
	 */
	private function isIdentifierWithValue($token, $value) {
		return $token && $token->getType() === wfWAFRuleLexer::T_IDENTIFIER &&
		(is_array($value) ? in_array($token->getLowerCaseValue(), array_map('strtolower', $value)) :
			$token->getLowerCaseValue() === strtolower($value));
	}

	/**
	 * @param wfWAFLexerToken $token
	 * @return bool
	 */
	protected function isCommentToken($token) {
		return $token->getType() === wfWAFRuleLexer::T_MULTIPLE_LINE_COMMENT || $token->getType() === wfWAFRuleLexer::T_SINGLE_LINE_COMMENT;
	}

	/**
	 * @return wfWAF
	 */
	public function getWAF() {
		return $this->waf;
	}

	/**
	 * @param wfWAF $waf
	 */
	public function setWAF($waf) {
		$this->waf = $waf;
	}
}

class wfWAFRuleParserAction {

	private $ruleID;
	private $type;
	private $category;
	private $score;
	private $description;
	private $whitelist = 1;
	private $action;

	/**
	 * @param string $param
	 * @param mixed $value
	 */
	public function set($param, $value) {
		$propLinkTable = array(
			'id' => 'ruleID',
		);
		if (array_key_exists($param, $propLinkTable)) {
			$param = $propLinkTable[$param];
		}
		if (property_exists($this, $param)) {
			$this->$param = trim($value, '\'"');
		}
	}

	/**
	 * @return mixed
	 */
	public function getRuleID() {
		return $this->ruleID;
	}

	/**
	 * @param mixed $ruleID
	 */
	public function setRuleID($ruleID) {
		$this->ruleID = $ruleID;
	}

	/**
	 * @return mixed
	 */
	public function getType() {
		return $this->type;
	}

	/**
	 * @param mixed $type
	 */
	public function setType($type) {
		$this->type = $type;
	}

	/**
	 * @return mixed
	 */
	public function getCategory() {
		return $this->category;
	}

	/**
	 * @param mixed $category
	 */
	public function setCategory($category) {
		$this->category = $category;
	}

	/**
	 * @return mixed
	 */
	public function getScore() {
		return $this->score;
	}

	/**
	 * @param mixed $score
	 */
	public function setScore($score) {
		$this->score = $score;
	}

	/**
	 * @return mixed
	 */
	public function getDescription() {
		return $this->description;
	}

	/**
	 * @param mixed $description
	 */
	public function setDescription($description) {
		$this->description = $description;
	}

	/**
	 * @return mixed
	 */
	public function getWhitelist() {
		return $this->whitelist;
	}

	/**
	 * @param mixed $whitelist
	 */
	public function setWhitelist($whitelist) {
		$this->whitelist = $whitelist;
	}

	/**
	 * @return mixed
	 */
	public function getAction() {
		return $this->action;
	}

	/**
	 * @param mixed $action
	 */
	public function setAction($action) {
		$this->action = $action;
	}
}


class wfWAFRuleParserURLParam {
	/**
	 * @var string
	 */
	private $url;
	/**
	 * @var string
	 */
	private $param;
	/**
	 * @var null
	 */
	private $rules;
	/**
	 * @var null
	 */
	private $conditional;
	/**
	 * @var float
	 */
	private $minVersion;

	/**
	 * @param string $param
	 * @param mixed $value
	 */
	public function set($param, $value) {
		if (property_exists($this, $param)) {
			$this->$param = trim($value, '\'"');
		}
	}

	/**
	 * @param string $url
	 * @param string $param
	 * @param null $rules
	 */
	public function __construct($url = null, $param = null, $rules = null, $conditional = null, $minVersion = null) {
		$this->url = $url;
		$this->param = $param;
		$this->rules = $rules;
		$this->conditional = $conditional;
		$this->minVersion = $minVersion;
	}

	/**
	 * Return format:
	 * blacklistParam(url='/\/uploadify\.php$/i', param=request.fileNames.Filedata, rules=[3, 14], conditional=(match('1', request.body.field)))
	 *
	 * @param string $action
	 * @return string
	 */
	public function renderRule($action) {
		return sprintf('%s(url=%s, param=%s%s%s)', $action,
			wfWAFRule::exportString($this->getUrl()),
			$this->renderParam($this->getParam()),
			$this->getRules() ? ', rules=[' . join(', ', array_map('intval', $this->getRules())) . ']' : '',
			$this->getConditional() ? ', conditional=(' . $this->getConditional()->renderRule() . ')' : '');
			//minVersion not included in re-rendering
	}

	/**
	 * @param string $param
	 * @return mixed
	 */
	private function renderParam($param) {
		if (preg_match('/([a-zA-Z_][\\w_]*?\\.[a-zA-Z_][\\w_]*)(.*)/', $param, $matches)) {
			list(, $global, $params) = $matches;
			if (strlen($params) > 0) {
				if (preg_match_all('/\\[([^\\]]*?)\\]/', $params, $matches)) {
					$rendered = $global;
					foreach ($matches[1] as $prop) {
						$single = "'" . str_replace(array("'", '\\'), array("\\'", "\\\\"), $prop) . "'";
						$double = '"' . str_replace(array('"', '\\'), array('\\"', "\\\\"), $prop) . '"';
						$rendered .= sprintf('[%s]', strlen($single) <= strlen($double) ? $single : $double);
					}
					return $rendered;
				}
			}
		}
		return $param;
	}

	/**
	 * @return string
	 */
	public function getUrl() {
		return $this->url;
	}

	/**
	 * @param string $url
	 */
	public function setUrl($url) {
		$this->url = $url;
	}

	/**
	 * @return string
	 */
	public function getParam() {
		return $this->param;
	}

	/**
	 * @param string $param
	 */
	public function setParam($param) {
		$this->param = $param;
	}

	/**
	 * @return null
	 */
	public function getRules() {
		return $this->rules;
	}

	/**
	 * @param null $rules
	 */
	public function setRules($rules) {
		$this->rules = $rules;
	}
	
	/**
	 * @return null
	 */
	public function getConditional() {
		return $this->conditional;
	}
	
	/**
	 * @param null $conditional
	 */
	public function setConditional($conditional) {
		$this->conditional = $conditional;
	}
	
	/**
	 * @return float|null
	 */
	public function getMinVersion() {
		return $this->minVersion;
	}
	
	/**
	 * @param float $minVersion
	 */
	public function setMinVersion($minVersion) {
		$this->minVersion = $minVersion;
	}
}

class wfWAFRuleParserSyntaxError extends wfWAFParserSyntaxError {

	private $token;

	/**
	 * @return mixed
	 */
	public function getToken() {
		return $this->token;
	}

	/**
	 * @param mixed $token
	 */
	public function setToken($token) {
		$this->token = $token;
	}
}

class wfWAFRuleVariable {
	/**
	 * @var string
	 */
	private $name;
	/**
	 * @var mixed|null
	 */
	private $value;
	/**
	 * @var wfWAF
	 */
	private $waf;


	/**
	 * wfWAFRuleVariable constructor.
	 * @param wfWAF $waf
	 * @param string $name
	 * @param mixed $value
	 */
	public function __construct($waf, $name, $value = null) {
		$this->waf = $waf;
		$this->name = $name;
		$this->value = $value;
	}

	public function __sleep() {
		return array(
			'name',
			'value',
		);
	}

	public function render() {
		return sprintf('new %s($this, %s, %s)', get_class($this),
			var_export($this->getName(), true), var_export($this->getValue(), true));
	}

	public function renderRule() {
		return sprintf('%s', $this->getName());
	}

	public function renderValue() {
		return wfWAFRule::exportString($this);
	}

	public function __toString() {
		$value = $this->getValue();
		if (is_string($value)) {
			return $value;
		}
		return (string) $this->getWAF()->getVariable($this->getName());
	}

	/**
	 * @return string
	 */
	public function getName() {
		return $this->name;
	}

	/**
	 * @param string $name
	 */
	public function setName($name) {
		$this->name = $name;
	}

	/**
	 * @return mixed|null
	 */
	public function getValue() {
		return $this->value;
	}

	/**
	 * @param mixed|null $value
	 */
	public function setValue($value) {
		$this->value = $value;
	}

	/**
	 * @return wfWAF
	 */
	public function getWAF() {
		return $this->waf;
	}

	/**
	 * @param wfWAF $waf
	 */
	public function setWAF($waf) {
		$this->waf = $waf;
	}
}
}vendor/wordfence/wf-waf/src/lib/i18n.php000064400000002632150755146450014050 0ustar00<?php

class wfWAFI18n {

	/**
	 * @var self
	 */
	protected static $instance;

	/**
	 * @param string $text
	 * @return string
	 */
	public static function __($text) {
		return self::getInstance()->getI18nEngine()->__($text);
	}

	public static function esc_html__($text) {
		return htmlentities(self::__($text), ENT_QUOTES, 'UTF-8');
	}

	public static function esc_html_e($text) {
		echo self::esc_html__($text);
	}

	/**
	 * @return self
	 */
	public static function getInstance() {
		if (!self::$instance) {
			self::$instance = new self(new wfWAFI18nEngineDefault());
		}
		return self::$instance;
	}

	/**
	 * @param self $i18nEngine
	 */
	public static function setInstance($i18nEngine) {
		self::$instance = $i18nEngine;
	}

	/** @var wfWAFI18nEngine */
	private $i18nEngine;

	/**
	 * @param wfWAFI18nEngine $i18nEngine
	 */
	public function __construct($i18nEngine) {
		$this->i18nEngine = $i18nEngine;
	}

	/**
	 * @return wfWAFI18nEngine
	 */
	public function getI18nEngine() {
		return $this->i18nEngine;
	}

	/**
	 * @param wfWAFI18nEngine $i18nEngine
	 */
	public function setI18nEngine($i18nEngine) {
		$this->i18nEngine = $i18nEngine;
	}
}

class wfWAFI18nEngineDefault implements wfWAFI18nEngine {

	/**
	 * @param string $text
	 * @return string
	 */
	public function __($text) {
		return $text;
	}
}

interface wfWAFI18nEngine {

	/**
	 * @param string $text
	 * @return string
	 */
	public function __($text);

}vendor/wordfence/wf-waf/src/lib/xmlrpc.php000064400000021763150755146450014604 0ustar00<?php
if (defined('WFWAF_VERSION') && !defined('WFWAF_RUN_COMPLETE')) {

/**
 * Adaptation of WordPress's XML-RPC message parser so we can use it without loading the full environment
 *
 */
class wfXMLRPCBody
{
	var $header;
	var $doctype;
	var $message;
	var $messageType;  // methodCall / methodResponse / fault
	var $faultCode;
	var $faultString;
	var $methodName;
	var $params;
	
	// Current variable stacks
	var $_arraystructs = array();   // The stack used to keep track of the current array/struct
	var $_arraystructstypes = array(); // Stack keeping track of if things are structs or array
	var $_currentStructName = array();  // A stack as well
	var $_param;
	var $_value;
	var $_currentTag;
	var $_currentTagContents;
	// The XML parser
	var $_parser;
	
	static function canParse() {
		return function_exists('xml_parser_create');
	}
	
	/**
	 * PHP5 constructor.
	 */
	function __construct( $message )
	{
		$this->message =& $message;
	}
	
	function __toString() {
		$output = '';
		if (isset($this->header)) {
			$output .= $this->header . "\n";
		}
		
		if (isset($this->doctype)) {
			$output .= $this->doctype . "\n";
		}
		
		$output .= '<methodCall><methodName>' . htmlentities($this->methodName, ENT_XML1) . '</methodName><params>' . $this->_paramsToString($this->params) . '</params></methodCall>';
		return $output;
	}
	
	function _paramsToString($params, $parentType = false) {
		$output = '';
		if (is_array($params)) {
			foreach ($params as $key => $p) {
				if (!$parentType) { //Top level
					$output .= '<param><value>';
				}
				else if ($parentType == 'array') {
					$output .= '<value>';
				}
				else if ($parentType == 'struct') {
					$output .= '<member><name>' . htmlentities($key, ENT_XML1) . '</name><value>';
				}
				
				if ($p['tag'] == 'data') {
					$output .= '<array><data>' . $this->_paramsToString($p['value'], 'array') . '</data></array>';
				}
				else if ($p['tag'] == 'struct') {
					$output .= '<struct>' . $this->_paramsToString($p['value'], 'struct') . '</struct>';
				}
				else if ($p['tag'] == 'base64') {
					$output .= '<base64>' . base64_encode($p['value']) . '</base64>';
				}
				else if ($p['tag'] == 'value') {
					$output .= htmlentities($p['value'], ENT_XML1);
				}
				else if ($p['tag'] == 'dateTime.iso8601') {
					$output .= $p['value']->getXml();
				}
				else {
					$output .= '<' . $p['tag'] . '>' . htmlentities($p['value'], ENT_XML1) . '</' . $p['tag'] . '>';
				}
				
				if (!$parentType) { //Top level
					$output .= '</value></param>';
				}
				else if ($parentType == 'array') {
					$output .= '</value>';
				}
				else if ($parentType == 'struct') {
					$output .= '</value></member>';
				}
			}
		}
		return $output;
	}
	
	function parse()
	{
		if (!function_exists( 'xml_parser_create')) {
			return false;
		}
		
		// first remove the XML declaration
		if (preg_match('/<\?xml.*?\?'.'>/s', substr( $this->message, 0, 100 ), $matches)) {
			$this->header = $matches[0];
		}
		$replacement = preg_replace( '/<\?xml.*?\?'.'>/s', '', substr( $this->message, 0, 100 ), 1 );
		$this->message = trim( substr_replace( $this->message, $replacement, 0, 100 ) );
		if ( '' == $this->message ) {
			return false;
		}
		
		// Then remove the DOCTYPE
		if (preg_match('/^<!DOCTYPE[^>]*+>/i', substr( $this->message, 0, 100 ), $matches)) {
			$this->doctype = $matches[0];
		}
		$replacement = preg_replace( '/^<!DOCTYPE[^>]*+>/i', '', substr( $this->message, 0, 200 ), 1 );
		$this->message = trim( substr_replace( $this->message, $replacement, 0, 200 ) );
		if ( '' == $this->message ) {
			return false;
		}
		
		// Check that the root tag is valid
		$root_tag = substr( $this->message, 0, strcspn( substr( $this->message, 0, 20 ), "> \t\r\n" ) );
		if ( '<!DOCTYPE' === strtoupper( $root_tag ) ) {
			return false;
		}
		if ( ! in_array( $root_tag, array( '<methodCall', '<methodResponse', '<fault' ) ) ) {
			return false;
		}
		
		// Bail if there are too many elements to parse
		$element_limit = 30000;
		if ( $element_limit && 2 * $element_limit < substr_count( $this->message, '<' ) ) {
			return false;
		}
		
		$this->_parser = xml_parser_create();
		// Set XML parser to take the case of tags in to account
		xml_parser_set_option($this->_parser, XML_OPTION_CASE_FOLDING, false);
		// Set XML parser callback functions
		xml_set_object($this->_parser, $this);
		xml_set_element_handler($this->_parser, 'tag_open', 'tag_close');
		xml_set_character_data_handler($this->_parser, 'cdata');
		
		// 256Kb, parse in chunks to avoid the RAM usage on very large messages
		$chunk_size = 262144;
		
		$final = false;
		do {
			if (strlen($this->message) <= $chunk_size) {
				$final = true;
			}
			$part = substr($this->message, 0, $chunk_size);
			$this->message = substr($this->message, $chunk_size);
			if (!xml_parse($this->_parser, $part, $final)) {
				return false;
			}
			if ($final) {
				break;
			}
		} while (true);
		xml_parser_free($this->_parser);
		
		// Grab the error messages, if any
		if ($this->messageType == 'fault') {
			$this->faultCode = $this->params[0]['faultCode'];
			$this->faultString = $this->params[0]['faultString'];
		}
		return true;
	}
	
	function tag_open($parser, $tag, $attr)
	{
		$this->_currentTagContents = '';
		$this->_currentTag = $tag;
		switch($tag) {
			case 'methodCall':
			case 'methodResponse':
			case 'fault':
				$this->messageType = $tag;
				break;
			/* Deal with stacks of arrays and structs */
			case 'data':    // data is to all intents and puposes more interesting than array
				$this->_arraystructstypes[] = 'array';
				$this->_arraystructs[] = array();
				break;
			case 'struct':
				$this->_arraystructstypes[] = 'struct';
				$this->_arraystructs[] = array();
				break;
		}
	}
	
	function cdata($parser, $cdata)
	{
		$this->_currentTagContents .= $cdata;
	}
	
	function tag_close($parser, $tag)
	{
		$valueFlag = false;
		switch($tag) {
			case 'int':
			case 'i4':
				$value = (int)trim($this->_currentTagContents);
				$valueFlag = true;
				break;
			case 'double':
				$value = (double)trim($this->_currentTagContents);
				$valueFlag = true;
				break;
			case 'string':
				$value = (string)trim($this->_currentTagContents);
				$valueFlag = true;
				break;
			case 'dateTime.iso8601':
				$value = new wfXMLRPCDate(trim($this->_currentTagContents));
				$valueFlag = true;
				break;
			case 'value':
				// "If no type is indicated, the type is string."
				if (trim($this->_currentTagContents) != '') {
					$value = (string)$this->_currentTagContents;
					$valueFlag = true;
				}
				break;
			case 'boolean':
				$value = (boolean)trim($this->_currentTagContents);
				$valueFlag = true;
				break;
			case 'base64':
				$value = base64_decode($this->_currentTagContents);
				$valueFlag = true;
				break;
			/* Deal with stacks of arrays and structs */
			case 'data':
			case 'struct':
				$value = array_pop($this->_arraystructs);
				array_pop($this->_arraystructstypes);
				$valueFlag = true;
				break;
			case 'member':
				array_pop($this->_currentStructName);
				break;
			case 'name':
				$this->_currentStructName[] = trim($this->_currentTagContents);
				break;
			case 'methodName':
				$this->methodName = trim($this->_currentTagContents);
				break;
		}
		
		if ($valueFlag) {
			if (count($this->_arraystructs) > 0) {
				// Add value to struct or array
				if ($this->_arraystructstypes[count($this->_arraystructstypes)-1] == 'struct') {
					// Add to struct
					$this->_arraystructs[count($this->_arraystructs)-1][$this->_currentStructName[count($this->_currentStructName)-1]] = array('tag' => $tag, 'value' => $value);
				} else {
					// Add to array
					$this->_arraystructs[count($this->_arraystructs)-1][] = array('tag' => $tag, 'value' => $value);
				}
			} else {
				// Just add as a parameter
				$this->params[] = array('tag' => $tag, 'value' => $value);
			}
		}
		$this->_currentTagContents = '';
	}
}

class wfXMLRPCDate {
	var $year;
	var $month;
	var $day;
	var $hour;
	var $minute;
	var $second;
	var $timezone;
	
	function __construct( $time )
	{
		// $time can be a PHP timestamp or an ISO one
		if (is_numeric($time)) {
			$this->parseTimestamp($time);
		} else {
			$this->parseIso($time);
		}
	}
	
	function parseTimestamp($timestamp)
	{
		$this->year = date('Y', $timestamp);
		$this->month = date('m', $timestamp);
		$this->day = date('d', $timestamp);
		$this->hour = date('H', $timestamp);
		$this->minute = date('i', $timestamp);
		$this->second = date('s', $timestamp);
		$this->timezone = '';
	}
	
	function parseIso($iso)
	{
		$this->year = substr($iso, 0, 4);
		$this->month = substr($iso, 4, 2);
		$this->day = substr($iso, 6, 2);
		$this->hour = substr($iso, 9, 2);
		$this->minute = substr($iso, 12, 2);
		$this->second = substr($iso, 15, 2);
		$this->timezone = substr($iso, 17);
	}
	
	function getIso()
	{
		return $this->year.$this->month.$this->day.'T'.$this->hour.':'.$this->minute.':'.$this->second.$this->timezone;
	}
	
	function getXml()
	{
		return '<dateTime.iso8601>'.$this->getIso().'</dateTime.iso8601>';
	}
	
	function getTimestamp()
	{
		return mktime($this->hour, $this->minute, $this->second, $this->month, $this->day, $this->year);
	}
}
}
vendor/wordfence/wf-waf/src/lib/rules.php000064400000134035150755146450014426 0ustar00<?php
if (defined('WFWAF_VERSION') && !defined('WFWAF_RUN_COMPLETE')) {

interface wfWAFRuleInterface {

	/**
	 * @return string
	 */
	public function render();

	public function renderRule();

	public function evaluate();
}

class wfWAFRuleException extends wfWAFException {
}

class wfWAFRuleLogicalOperatorException extends wfWAFException {
}

class wfWAFRule implements wfWAFRuleInterface {

	private $ruleID;
	private $type;
	private $category;
	private $score;
	private $description;
	private $whitelist;
	private $action;
	/** @var wfWAFRuleComparisonGroup */
	private $comparisonGroup;
	/**
	 * @var wfWAF
	 */
	private $waf;

	/**
	 * @param wfWAF $waf
	 * @param int $ruleID
	 * @param string $type
	 * @param string $category
	 * @param int $score
	 * @param string $description
	 * @param int $whitelist
	 * @param string $action
	 * @param wfWAFRuleComparisonGroup $comparisonGroup
	 * @return wfWAFRule
	 */
	public static function create() {
		$waf = func_get_arg(0);
		$ruleID = func_get_arg(1);
		$type = func_get_arg(2);
		$category = func_get_arg(3);
		$score = func_get_arg(4);
		$description = func_get_arg(5);
		$whitelist = 1;
		$action = '';
		$comparisonGroup = null;
		//Compatibility with old compiled rules
		if (func_num_args() == 8) { //Pre-whitelist flag
			$action = func_get_arg(6);
			$comparisonGroup = func_get_arg(7);
		}
		else if (func_num_args() == 9) { //Whitelist flag
			$whitelist = func_get_arg(6);
			$action = func_get_arg(7);
			$comparisonGroup = func_get_arg(8);
		}
		return new self($waf, $ruleID, $type, $category, $score, $description, $whitelist, $action, $comparisonGroup);
	}

	/**
	 * @param string $value
	 * @return string
	 */
	public static function exportString($value) {
		return sprintf("'%s'", str_replace("'", "\\'", $value));
	}

	/**
	 * @param wfWAF $waf
	 * @param int $ruleID
	 * @param string $type
	 * @param string $category
	 * @param int $score
	 * @param string $description
	 * @param int $whitelist
	 * @param string $action
	 * @param wfWAFRuleComparisonGroup $comparisonGroup
	 */
	public function __construct($waf, $ruleID, $type, $category, $score, $description, $whitelist, $action, $comparisonGroup) {
		$this->setWAF($waf);
		$this->setRuleID($ruleID);
		$this->setType($type);
		$this->setCategory($category);
		$this->setScore($score);
		$this->setDescription($description);
		$this->setWhitelist($whitelist);
		$this->setAction($action);
		$this->setComparisonGroup($comparisonGroup);
	}

	public function __sleep() {
		return array(
			'ruleID',
			'type',
			'category',
			'score',
			'description',
			'whitelist',
			'action',
			'comparisonGroup',
		);
	}

	/**
	 * @return string
	 */
	public function render() {
		return sprintf('%s::create($this, %d, %s, %s, %s, %s, %d, %s, %s)', get_class($this),
			$this->getRuleID(),
			var_export($this->getType(), true),
			var_export($this->getCategory(), true),
			var_export($this->getScore(), true),
			var_export($this->getDescription(), true),
			var_export($this->getWhitelist(), true),
			var_export($this->getAction(), true),
			$this->getComparisonGroup()->render()
		);
	}

	/**
	 * @return string
	 */
	public function renderRule() {
		return sprintf(<<<RULE
if %s:
	%s(%s)
RULE
			,
			$this->getComparisonGroup()->renderRule(),
			$this->getAction(),
			join(', ', array_filter(array(
				$this->getRuleID() ? 'id=' . (int) $this->getRuleID() : '',
				$this->getCategory() ? 'category=' . self::exportString($this->getCategory()) : '',
				$this->getScore() > 0 ? 'score=' . (int) $this->getScore() : '',
				$this->getDescription() ? 'description=' . self::exportString($this->getDescription()) : '',
				$this->getWhitelist() == 0 ? 'whitelist=0' : '',
			)))
		);
	}

	public function evaluate() {
		$comparisons = $this->getComparisonGroup();
		$waf = $this->getWAF();
		if ($comparisons instanceof wfWAFRuleComparisonGroup && $waf instanceof wfWAF) {
			$comparisons->setRule($this);
			if ($comparisons->evaluate()) {
				$waf->tripRule($this);
				return true;
			}
		}
		return false;
	}

	public function debug() {
		return $this->getComparisonGroup()->debug();
	}

	/**
	 * For JSON.
	 *
	 * @return array
	 */
	public function toArray() {
		return array(
			'ruleID'      => $this->getRuleID(),
			'type'        => $this->getType(),
			'category'    => $this->getCategory(),
			'score'       => $this->getScore(),
			'description' => $this->getDescription(),
			'whitelist'   => $this->getWhitelist(),
			'action'      => $this->getAction(),
		);
	}

	/**
	 * @return int
	 */
	public function getRuleID() {
		return $this->ruleID;
	}

	/**
	 * @param int $ruleID
	 */
	public function setRuleID($ruleID) {
		$this->ruleID = $ruleID;
	}

	/**
	 * @return string
	 */
	public function getType() {
		return $this->type;
	}

	/**
	 * @param string $type
	 */
	public function setType($type) {
		$this->type = $type;
	}

	/**
	 * @return string
	 */
	public function getCategory() {
		return $this->category;
	}

	/**
	 * @param string $category
	 */
	public function setCategory($category) {
		$this->category = $category;
	}

	/**
	 * @return int
	 */
	public function getScore() {
		return $this->score;
	}

	/**
	 * @param int $score
	 */
	public function setScore($score) {
		$this->score = $score;
	}

	/**
	 * @return string
	 */
	public function getDescription() {
		return $this->description;
	}

	/**
	 * @param string $description
	 */
	public function setDescription($description) {
		$this->description = $description;
	}

	/**
	 * @return int
	 */
	public function getWhitelist() {
		return $this->whitelist;
	}

	/**
	 * @param string $whitelist
	 */
	public function setWhitelist($whitelist) {
		$this->whitelist = $whitelist;
	}

	/**
	 * @return string
	 */
	public function getAction() {
		return $this->action;
	}

	/**
	 * @param string $action
	 */
	public function setAction($action) {
		$this->action = $action;
	}

	/**
	 * @return wfWAFRuleComparisonGroup
	 */
	public function getComparisonGroup() {
		return $this->comparisonGroup;
	}

	/**
	 * @param wfWAFRuleComparisonGroup $comparisonGroup
	 */
	public function setComparisonGroup($comparisonGroup) {
		$this->comparisonGroup = $comparisonGroup;
	}

	/**
	 * @return wfWAF
	 */
	public function getWAF() {
		return $this->waf;
	}

	/**
	 * @param wfWAF $waf
	 */
	public function setWAF($waf) {
		$this->waf = $waf;
		if ($this->comparisonGroup) {
			$this->comparisonGroup->setWAF($waf);
		}
	}
}

class wfWAFRuleLogicalOperator implements wfWAFRuleInterface {

	/**
	 * @var string
	 */
	private $operator;

	/**
	 * @var array
	 */
	protected $validOperators = array(
		'||',
		'&&',
		'and',
		'or',
		'xor',
	);
	/**
	 * @var bool
	 */
	private $currentValue = false;
	/**
	 * @var wfWAFRuleInterface
	 */
	private $comparison;

	/**
	 * @param string $operator
	 * @param bool $currentValue
	 * @param wfWAFRuleInterface $comparison
	 */
	public function __construct($operator, $currentValue = false, $comparison = null) {
		$this->setOperator($operator);
		$this->setCurrentValue($currentValue);
		$this->setComparison($comparison);
	}

	public function __sleep() {
		return array(
			'operator',
			'currentValue',
			'comparison',
		);
	}

	/**
	 * @return string
	 * @throws wfWAFRuleLogicalOperatorException
	 */
	public function render() {
		if (!$this->isValid()) {
			throw new wfWAFRuleLogicalOperatorException(sprintf('Invalid logical operator "%s", must be one of %s', $this->getOperator(), join(", ", $this->validOperators)));
		}
		return sprintf("new %s(%s)", get_class($this), var_export(trim(wfWAFUtils::strtoupper($this->getOperator())), true));
	}

	/**
	 * @return string
	 * @throws wfWAFRuleLogicalOperatorException
	 */
	public function renderRule() {
		if (!$this->isValid()) {
			throw new wfWAFRuleLogicalOperatorException(sprintf('Invalid logical operator "%s", must be one of %s', $this->getOperator(), join(", ", $this->validOperators)));
		}
		return trim(wfWAFUtils::strtolower($this->getOperator()));
	}

	public function evaluate() {
		$currentValue = $this->getCurrentValue();
		$comparison = $this->getComparison();
		if (is_bool($currentValue) && $comparison instanceof wfWAFRuleInterface) {
			switch (wfWAFUtils::strtolower($this->getOperator())) {
				case '&&':
				case 'and':
					return $currentValue && $comparison->evaluate();

				case '||':
				case 'or':
					return $currentValue || $comparison->evaluate();

				case 'xor':
					return $currentValue xor $comparison->evaluate();
			}
		}
		return false;
	}

	/**
	 * @return bool
	 */
	public function isValid() {
		return in_array(wfWAFUtils::strtolower($this->getOperator()), $this->validOperators);
	}

	/**
	 * @return string
	 */
	public function getOperator() {
		return $this->operator;
	}

	/**
	 * @param string $operator
	 */
	public function setOperator($operator) {
		$this->operator = $operator;
	}

	/**
	 * @return boolean
	 */
	public function getCurrentValue() {
		return $this->currentValue;
	}

	/**
	 * @param boolean $currentValue
	 */
	public function setCurrentValue($currentValue) {
		$this->currentValue = $currentValue;
	}

	/**
	 * @return wfWAFRuleInterface
	 */
	public function getComparison() {
		return $this->comparison;
	}

	/**
	 * @param wfWAFRuleInterface $comparison
	 */
	public function setComparison($comparison) {
		$this->comparison = $comparison;
	}
}

class wfWAFPhpBlock {
	public $open = false;
	public $echoTag;
	public $shortTag;
	public $openParentheses = 0, $closedParentheses = 0;
	public $backtickCount = 0;
	public $badCharacter = false;
	public $mismatchedParentheses = false;

	public function __construct($echoTag = false, $shortTag = false) {
		$this->echoTag = $echoTag;
		$this->shortTag = $shortTag;
	}

	public function hasParentheses() {
		return $this->openParentheses > 0 && $this->closedParentheses === $this->openParentheses;
	}

	public function hasBacktickPair() {
		return $this->backtickCount > 0 && $this->backtickCount % 2 === 0;
	}

	public function hasParenthesesOrBacktickPair() {
		return $this->hasParentheses() || $this->hasBacktickPair();
	}

	public function hasMismatchedParentheses() {
		return $this->mismatchedParentheses || $this->closedParentheses !== $this->openParentheses;
	}

	public function hasSyntaxError() {
		if (version_compare(phpversion(), '8.0.0', '>=')) {
			return $this->badCharacter;
		}
		return $this->hasMismatchedParentheses();
	}

	public static function isValid($phpBlock) {
		return $phpBlock !== null && !$phpBlock->hasSyntaxError();
	}

	public static function extend($phpBlock, $echoTag = false, $shortTag = false) {
		if ($phpBlock === null)
			$phpBlock = new self();
		$phpBlock->open = true;
		$phpBlock->echoTag = $echoTag;
		$phpBlock->shortTag = $shortTag;
		return $phpBlock;
	}
}

class wfWAFRuleComparison implements wfWAFRuleInterface {

	private $matches;
	private $failedSubjects;
	private $result;
	/**
	 * @var wfWAFRule
	 */
	private $rule;

	private static $scalarActions = array(
		'contains',
		'notcontains',
		'match',
		'notmatch',
		'matchcount',
		'containscount',
		'equals',
		'notequals',
		'identical',
		'notidentical',
		'greaterthan',
		'greaterthanequalto',
		'lessthan',
		'lessthanequalto',
		'lengthgreaterthan',
		'lengthlessthan',
		'currentuseris',
		'currentuserisnot',
		'md5equals',
		'filepatternsmatch',
		'filehasphp',
		'islocalurl',
		'isremoteurl',
		'isvalidurl',
		'isnotvalidurl',
		'urlhostequals',
		'urlhostnotequals',
		'urlhostmatches',
		'urlhostnotmatches',
		'urlschemeequals',
		'urlschemenotequals',
		'urlschemematches',
		'urlschemenotmatches',
		'versionequals',
		'versionnotequals',
		'versiongreaterthan',
		'versiongreaterthanequalto',
		'versionlessthan',
		'versionlessthanequalto',
		'exists'
	);

	private static $arrayActions = array(
		'keyexists',
		'keymatches'
	);

	private static $globalActions = array(
		'hasuser',
		'nothasuser',
		'currentusercan',
		'currentusercannot'
	);

	const ACTION_TYPE_SCALAR=0;
	const ACTION_TYPE_ARRAY=1;
	const ACTION_TYPE_GLOBAL=2;

	/**
	 * @var mixed
	 */
	private $expected;
	/**
	 * @var mixed
	 */
	private $subjects;
	/**
	 * @var string
	 */
	private $action;
	private $multiplier;
	/**
	 * @var wfWAF
	 */
	private $waf;

	/**
	 * @param wfWAF $waf
	 * @param string $action
	 * @param mixed $expected
	 * @param mixed $subjects
	 */
	public function __construct($waf, $action, $expected, $subjects = null) {
		$this->setWAF($waf);
		$this->setAction($action);
		$this->setExpected($expected);
		$this->setSubjects($subjects);
	}

	public function __sleep() {
		return array(
			'rule',
			'action',
			'expected',
			'subjects',
		);
	}

	/**
	 * @param string|array $subject
	 * @return string
	 */
	public static function getSubjectKey($subject) {
		if (!is_array($subject)) {
			return (string) $subject;
		}
		$return = '';
		$global = array_shift($subject);
		if ($global instanceof wfWAFRuleComparisonSubject) {
			$global = 'filtered';
		}
		foreach ($subject as $key) {
			$return .= '[' . $key . ']';
		}
		return $global . $return;
	}

	/**
	 * @return string
	 * @throws wfWAFRuleException
	 */
	public function render() {
		if (!$this->isActionValid()) {
			throw new wfWAFRuleException('Invalid action passed to ' . get_class($this) . ', action: ' . var_export($this->getAction(), true));
		}
		$subjectExport = '';
		/** @var wfWAFRuleComparisonSubject $subject */
		foreach ($this->getSubjects() as $subject) {
			$subjectExport .= $subject->render() . ",\n";
		}
		$subjectExport = 'array(' . wfWAFUtils::substr($subjectExport, 0, -2) . ')';

		$expected = $this->getExpected();
		return sprintf('new %s($this, %s, %s, %s)', get_class($this), var_export((string) $this->getAction(), true),
			($expected instanceof wfWAFRuleVariable ? $expected->render() : var_export($expected, true)), $subjectExport);
	}

	/**
	 * @return string
	 * @throws wfWAFRuleException
	 */
	public function renderRule() {
		if (!$this->isActionValid()) {
			throw new wfWAFRuleException('Invalid action passed to ' . get_class($this) . ', action: ' . var_export($this->getAction(), true));
		}
		$subjectExport = '';
		/** @var wfWAFRuleComparisonSubject $subject */
		foreach ($this->getSubjects() as $subject) {
			$subjectExport .= $subject->renderRule() . ", ";
		}
		$subjectExport = wfWAFUtils::substr($subjectExport, 0, -2);

		$expected = $this->getExpected();
		return sprintf('%s(%s, %s)', $this->getAction(),
			($expected instanceof wfWAFRuleVariable ? $expected->renderRule() : wfWAFRule::exportString($expected)),
			$subjectExport);
	}

	public function getActionType() {
		$action=wfWAFUtils::strtolower($this->getAction());
		if (in_array($action, self::$scalarActions)) {
			return self::ACTION_TYPE_SCALAR;
		}
		else if(in_array($action, self::$arrayActions)) {
			return self::ACTION_TYPE_ARRAY;
		}
		else if(in_array($action, self::$globalActions)) {
			return self::ACTION_TYPE_GLOBAL;
		}
		else {
			return null;
		}
	}

	public function isActionValid() {
		return $this->getActionType() !== null;
	}

	public function hasSubject() {
		return $this->getActionType() !== self::ACTION_TYPE_GLOBAL;
	}

	private function isWhitelisted($subjectKey = '') {
		return $this->getWAF() && $this->getRule() &&
			$this->getWAF()->isRuleParamWhitelisted($this->getRule()->getRuleID(), $this->getWAF()->getRequest()->getPath(), $subjectKey);
	}

	public function evaluate() {
		$type = $this->getActionType();
		if ($type===null) {
			return false;
		}
		else if ($type===self::ACTION_TYPE_GLOBAL) {
			return (!$this->isWhitelisted()) && ($this->result=call_user_func(array($this, $this->getAction())));
		}
		$subjects = $this->getSubjects();
		if (!is_array($subjects)) {
			return false;
		}

		$this->result = false;
		/** @var wfWAFRuleComparisonSubject $subject */
		foreach ($subjects as $subject) {
			$global = $subject->getValue();
			$subjectKey = $subject->getKey();

			if ($this->_evaluate(array($this, $this->getAction()), $global, $subjectKey, $type===self::ACTION_TYPE_SCALAR)) {
				$this->result = true;
			}
		}
		return $this->result;
	}

	/**
	 * @param callback $callback
	 * @param mixed $global
	 * @param string $subjectKey
	 * @param bool $iterate
	 * @return bool
	 */
	private function _evaluate($callback, $global, $subjectKey, $iterate) {
		$result = false;

		if ($this->isWhitelisted($subjectKey)) {
			return $result;
		}

		if (is_array($global) && $iterate) {
			foreach ($global as $key => $value) {
				if ($this->_evaluate($callback, $value, $subjectKey . '[' . $key . ']', $iterate)) {
					$result = true;
				}
			}
		} else if (call_user_func($callback, $global)) {
			$result = true;
			$this->failedSubjects[] = array(
				'subject'    => $subjectKey,
				'value'      => is_string($global) ? $global : wfWAFUtils::json_encode($global),
				'multiplier' => $this->getMultiplier(),
				'matches'    => $this->getMatches(),
			);
		}
		return $result;
	}

	public function contains($subject) {
		if (is_array($this->getExpected())) {
			return in_array($this->getExpected(), $subject);
		}
		return wfWAFUtils::strpos((string) $subject, (string) $this->getExpected()) !== false;
	}

	public function notContains($subject) {
		return !$this->contains($subject);
	}

	public function match($subject) {
		return preg_match((string) $this->getExpected(), (string) $subject, $this->matches) > 0;
	}

	public function notMatch($subject) {
		return !$this->match($subject);
	}

	public function matchCount($subject) {
		$this->multiplier = preg_match_all((string) $this->getExpected(), (string) $subject, $this->matches);
		return $this->multiplier > 0;
	}

	public function containsCount($subject) {
		if (is_array($this->getExpected())) {
			$this->multiplier = 0;
			foreach ($this->getExpected() as $val) {
				if ($val == $subject) {
					$this->multiplier++;
				}
			}
			return $this->multiplier > 0;
		}
		$this->multiplier = wfWAFUtils::substr_count($subject, $this->getExpected());
		return $this->multiplier > 0;
	}

	public function equals($subject) {
		return $this->getExpected() == $subject;
	}

	public function notEquals($subject) {
		return $this->getExpected() != $subject;
	}

	public function identical($subject) {
		return $this->getExpected() === $subject;
	}

	public function notIdentical($subject) {
		return $this->getExpected() !== $subject;
	}

	public function greaterThan($subject) {
		return $subject > $this->getExpected();
	}

	public function greaterThanEqualTo($subject) {
		return $subject >= $this->getExpected();
	}

	public function lessThan($subject) {
		return $subject < $this->getExpected();
	}

	public function lessThanEqualTo($subject) {
		return $subject <= $this->getExpected();
	}

	public function lengthGreaterThan($subject) {
		return wfWAFUtils::strlen(is_array($subject) ? join('', $subject) : (string) $subject) > $this->getExpected();
	}

	public function lengthLessThan($subject) {
		return wfWAFUtils::strlen(is_array($subject) ? join('', $subject) : (string) $subject) < $this->getExpected();
	}

	public function currentUserIs($subject) {
		if ($authCookie = $this->getWAF()->parseAuthCookie()) {
			return $authCookie['role'] === $this->getExpected();
		}
		return false;
	}

	public function currentUserIsNot($subject) {
		return !$this->currentUserIs($subject);
	}

	public function hasUser() {
		return $this->getWAF()->parseAuthCookie()!==false;
	}

	public function notHasUser() {
		return !$this->hasUser();
	}

	public function currentUserCan() {
		return $this->getWAF()->checkCapability($this->getExpected());
	}

	public function currentUserCannot() {
		return !$this->currentUserCan();
	}

	public function md5Equals($subject) {
		return md5((string) $subject) === $this->getExpected();
	}
	
	public function filePatternsMatch($subject) {
		$request = $this->getWAF()->getRequest();
		$files = $request->getFiles();
		$patterns = $this->getWAF()->getMalwareSignatures();
		$commonStrings = $this->getWAF()->getMalwareSignatureCommonStrings();
		if (!is_array($patterns) || !is_array($files)) {
			return false;
		}
		
		$backtrackLimit = ini_get('pcre.backtrack_limit');
		if (is_numeric($backtrackLimit)) {
			$backtrackLimit = (int) $backtrackLimit;
			if ($backtrackLimit > 10000000) {
				ini_set('pcre.backtrack_limit', 1000000);
			}
		}
		else {
			$backtrackLimit = false;
		}
		
		foreach ($files as $file) {
			if ($file['name'] == (string) $subject) {
				if (!is_file($file['tmp_name'])) {
					continue;
				}
				$fh = @fopen($file['tmp_name'], 'r');
				if (!$fh) {
					continue;
				}
				$totalRead = 0;
				
				$first = true;
				$readsize = max(min(10 * 1024 * 1024, wfWAFUtils::iniSizeToBytes(ini_get('upload_max_filesize'))), 1 * 1024 * 1024);
				while (!feof($fh)) {
					$data = fread($fh, $readsize);
					$totalRead += strlen($data);
					if ($totalRead < 1) {
						return false;
					}
					
					$commonStringsChecked = array();
					foreach ($patterns as $index => $rule) {
						if (@preg_match('/' . $rule . '/iS', null) === false) {
							continue; //This PCRE version can't compile the rule
						}
						
						if (!$first && substr($rule, 0, 1) == '^') {
							continue; //Signature only applies to file beginning
						}
						
						if (isset($commonStrings[$index])) {
							foreach ($commonStrings[$index] as $s) {
								if (!isset($commonStringsChecked[$s])) {
									$commonStringsChecked[$s] = (preg_match('/' . $s . '/iS', $data) == 1);
								}
								
								if (!$commonStringsChecked[$s]) {
									continue 2;
								}
							}
						}
						
						if (preg_match('/(' . $rule . ')/iS', $data, $matches)) {
							if ($backtrackLimit !== false) { ini_set('pcre.backtrack_limit', $backtrackLimit); }
							return true;
						}
					}
					
					$first = false;
				}	
			}
		}
		
		if ($backtrackLimit !== false) { ini_set('pcre.backtrack_limit', $backtrackLimit); }
		return false;
	}

	private function checkForPhp($path) {
		if (!is_file($path))
			return false;
		$fh = @fopen($path, 'r');
		if ($fh === false)
			return false;
		//T_BAD_CHARACTER is only available since PHP 7.4.0 and before 7.0.0
		$T_BAD_CHARACTER = defined('T_BAD_CHARACTER') ? constant('T_BAD_CHARACTER') : 10001;
		$phpBlock = null;
		$wrappedTokenCheckBytes = '';
		$maxTokenSize = 15; //__halt_compiler
		$possibleWrappedTokens = array('<?php', '<?=', '<?', '?>', 'exit', 'new', 'clone', 'echo', 'print', 'require', 'include', 'require_once', 'include_once', '__halt_compiler');

		$readsize = 1024 * 1024; //1MB chunks
		$iteration = 0;
		$shortOpenTagEnabled = (bool) ini_get('short_open_tag');
		do {
			$data = fread($fh, $readsize);
			$actualReadsize = strlen($data);
			if ($actualReadsize === 0)
				break;

			//Make sure we didn't miss PHP split over a chunking boundary
			$wrappedCheckLength = strlen($wrappedTokenCheckBytes);
			if ($wrappedCheckLength > 0) {
				$testBytes = $wrappedTokenCheckBytes . substr($data, 0, min($maxTokenSize, $actualReadsize));
				foreach ($possibleWrappedTokens as $t) {
					$position = strpos($testBytes, $t);
					if ($position !== false && $position < $wrappedCheckLength && $position + strlen($t) >= $wrappedCheckLength) { //Found a token that starts before this segment of data and ends within it
						$data = substr($wrappedTokenCheckBytes, $position) . $data;
						break;
					}
				}
			}

			$prepended = NULL;

			//Make sure it tokenizes correctly if chunked
			if ($phpBlock !== null) {
				if ($phpBlock->echoTag) {
					$data = '<?= ' . $data;
					$prepended = T_OPEN_TAG_WITH_ECHO;
				}
				else {
					$data = '<?php ' . $data;
					$prepended = T_OPEN_TAG;
				}
			}

			//Tokenize the data and check for PHP
			$this->_resetErrors();
			$tokens = @token_get_all($data);
			$error = error_get_last();

			if ($error !== null && feof($fh) && stripos($error['message'], 'Unterminated comment') !== false)
				break;

			$firstToken = reset($tokens);
			if (is_array($firstToken) && $firstToken[0] === $prepended)
				array_shift($tokens); //Ignore the prepended token; it is only relevant for token_get_all

			$offset = 0;
			foreach ($tokens as $token) {
				if (is_array($token)) {
					$offset += strlen($token[1]);
					switch ($token[0]) {
						case T_OPEN_TAG:
							$phpBlock = wfWAFPhpBlock::extend($phpBlock, false, $token[1] === '<?');
							break;
						case T_OPEN_TAG_WITH_ECHO:
							$phpBlock = wfWAFPhpBlock::extend($phpBlock, true);
							break;
						case T_CLOSE_TAG:
							if (wfWAFPhpBlock::isValid($phpBlock) && ($phpBlock->echoTag || $phpBlock->hasParenthesesOrBacktickPair())) {
								fclose($fh);
								return true;
							}
							$phpBlock->open = false;
							break;
						case T_NEW:
						case T_CLONE:
						case T_ECHO:
						case T_PRINT:
						case T_REQUIRE:
						case T_INCLUDE:
						case T_REQUIRE_ONCE:
						case T_INCLUDE_ONCE:
						case T_HALT_COMPILER:
						case T_EXIT:
							if (wfWAFPhpBlock::isValid($phpBlock)) {
								fclose($fh);
								return true;
							}
							break;
						case $T_BAD_CHARACTER:
							if ($phpBlock !== null)
								$phpBlock->badCharacter = true;
							break;
						case T_STRING:
							if (!$phpBlock->shortTag && preg_match('/^[A-z0-9_]{3,}$/', $token[1]) && function_exists($token[1])) {
								fclose($fh);
								return true;
							}
							break;
					}
				}
				else {
					$offset += strlen($token);
					if ($phpBlock !== null) {
						switch ($token) {
							case '(':
								$phpBlock->openParentheses++;
								break;
							case ')':
								if ($phpBlock->openParentheses > $phpBlock->closedParentheses)
									$phpBlock->closedParentheses++;
								else
									$phpBlock->mismatchedParentheses = true;
								break;
							case '`':
								$phpBlock->backtickCount++;
								break;
						}
					}
				}
			}

			if (wfWAFPhpBlock::isValid($phpBlock) && $phpBlock->hasParenthesesOrBacktickPair()) {
				fclose($fh);
				return true;
			}

			$wrappedTokenCheckBytes = substr($data, - min($maxTokenSize, $actualReadsize));
		} while (!feof($fh));

		fclose($fh);
		return false;
	}

	public function fileHasPHP($subject) {
		$request = $this->getWAF()->getRequest();
		$files = $request->getFiles();
		if (!is_array($files)) {
			return false;
		}

		foreach ($files as $file) {
			if ($file['name'] === (string) $subject && $this->checkForPhp($file['tmp_name']))
					return true;
		}

		return false;
	}

	private function _resetErrors() {
		if (function_exists('error_clear_last')) {
			error_clear_last();
		}
		else {
			// set error_get_last() to defined state by forcing an undefined variable error
			set_error_handler(array($this, '_resetErrorsHandler'), 0);
			@$undefinedVariable;
			restore_error_handler();
		}
	}
	
	public function _resetErrorsHandler($errno, $errstr, $errfile, $errline) {
		//Do nothing
	}
	
	public function isLocalURL($subject) {
		if (empty($subject)) {
			return false;
		}
		
		$parsed = wfWAFUtils::parse_url((string) $subject);
		if (!isset($parsed['host'])) {
			return true;
		}
		
		$guessSiteURL = sprintf('%s://%s/', wfWAF::getInstance()->getRequest()->getProtocol(), wfWAF::getInstance()->getRequest()->getHost());
		$siteURL = wfWAF::getInstance()->getStorageEngine()->getConfig('siteURL', null, 'synced') ? wfWAF::getInstance()->getStorageEngine()->getConfig('siteURL', null, 'synced') : $guessSiteURL;
		$homeURL = wfWAF::getInstance()->getStorageEngine()->getConfig('homeURL', null, 'synced') ? wfWAF::getInstance()->getStorageEngine()->getConfig('homeURL', null, 'synced') : $guessSiteURL;
		
		$siteHost = wfWAFUtils::parse_url($siteURL, PHP_URL_HOST);
		$homeHost = wfWAFUtils::parse_url($homeURL, PHP_URL_HOST);
		
		return (is_string($siteHost) && strtolower($parsed['host']) == strtolower($siteHost)) || (is_string($homeHost) && strtolower($parsed['host']) == strtolower($homeHost));
	}
	
	public function isRemoteURL($subject) {
		if (empty($subject)) {
			return false;
		}
		
		return !$this->isLocalURL($subject);
	}
	
	public function isValidURL($subject) {
		if ($subject === null) {
			return false;
		}
		return wfWAFUtils::validate_url((string) $subject) !== false;
	}
	
	public function isNotValidURL($subject) {
		if ($subject === null) {
			return false;
		}
		return !$this->isValidURL($subject);
	}
	
	public function urlHostEquals($subject) {
		if ($subject === null) {
			return false;
		}
		$host = wfWAFUtils::parse_url((string) $subject, PHP_URL_HOST);
		if (!is_string($host)) {
			return wfWAFUtils::strlen($this->getExpected()) == 0;
		}
		
		return strtolower($host) == strtolower($this->getExpected());
	}
	
	public function urlHostNotEquals($subject) {
		if ($subject === null) {
			return false;
		}
		return !$this->urlHostEquals($subject);
	}
	
	public function urlHostMatches($subject) {
		if ($subject === null) {
			return false;
		}
		$host = wfWAFUtils::parse_url((string) $subject, PHP_URL_HOST);
		if (!is_string($host)) {
			return false;
		}
		
		return preg_match((string) $this->getExpected(), $host, $this->matches) > 0;
	}
	
	public function urlHostNotMatches($subject) {
		if ($subject === null) {
			return false;
		}
		return !$this->urlHostMatches($subject);
	}
	
	public function urlSchemeEquals($subject) {
		if ($subject === null) {
			return false;
		}
		$scheme = wfWAFUtils::parse_url((string) $subject, PHP_URL_SCHEME);
		if (!is_string($scheme)) {
			return wfWAFUtils::strlen($this->getExpected()) == 0;
		}
		
		return strtolower($scheme) == strtolower($this->getExpected());
	}
	
	public function urlSchemeNotEquals($subject) {
		if ($subject === null) {
			return false;
		}
		return !$this->urlSchemeEquals($subject);
	}
	
	public function urlSchemeMatches($subject) {
		if ($subject === null) {
			return false;
		}
		$scheme = wfWAFUtils::parse_url((string) $subject, PHP_URL_SCHEME);
		if (!is_string($scheme)) {
			return false;
		}
		
		return preg_match((string) $this->getExpected(), $scheme, $this->matches) > 0;
	}
	
	public function urlSchemeNotMatches($subject) {
		if ($subject === null) {
			return false;
		}
		return !$this->urlSchemeMatches($subject);
	}

	public function versionEquals($subject) {
		if ($subject === null) {
			return false;
		}
		return version_compare($subject, $this->getExpected(), '==');
	}

	public function versionNotEquals($subject) {
		if ($subject === null) {
			return false;
		}
		return version_compare($subject, $this->getExpected(), '!=');
	}

	public function versionGreaterThan($subject) {
		if ($subject === null) {
			return false;
		}
		return version_compare($subject, $this->getExpected(), '>');
	}

	public function versionGreaterThanEqualTo($subject) {
		if ($subject === null) {
			return false;
		}
		return version_compare($subject, $this->getExpected(), '>=');
	}

	public function versionLessThan($subject) {
		if ($subject === null) {
			return false;
		}
		return version_compare($subject, $this->getExpected(), '<');
	}

	public function versionLessThanEqualTo($subject) {
		if ($subject === null) {
			return false;
		}
		return version_compare($subject, $this->getExpected(), '<=');
	}

	public function keyExists($subject) {
		if (!is_array($subject)) {
			return false;
		}
		return array_key_exists($this->getExpected(), $subject);
	}

	public function keyMatches($subject) {
		if (!is_array($subject)) {
			return false;
		}
		foreach($subject as $key=>$value) {
			if (preg_match($this->getExpected(), $key))
				return true;
		}
		return false;
	}

	public function exists($subject) {
		return isset($subject);
	}

	/**
	 * @return mixed
	 */
	public function getAction() {
		return $this->action;
	}

	/**
	 * @param mixed $action
	 */
	public function setAction($action) {
		$this->action = $action;
	}

	/**
	 * @return mixed
	 */
	public function getExpected() {
		return $this->expected;
	}

	/**
	 * @param mixed $expected
	 */
	public function setExpected($expected) {
		$this->expected = $expected;
	}

	/**
	 * @return mixed
	 */
	public function getSubjects() {
		return $this->subjects;
	}

	/**
	 * @param mixed $subjects
	 * @return $this
	 */
	public function setSubjects($subjects) {
		$this->subjects = $subjects;
		return $this;
	}

	/**
	 * @return mixed
	 */
	public function getMatches() {
		return $this->matches;
	}

	/**
	 * @return mixed
	 */
	public function getFailedSubjects() {
		return (array)$this->failedSubjects;
	}

	/**
	 * @return mixed
	 */
	public function getResult() {
		return $this->result;
	}

	/**
	 * @return mixed
	 */
	public function getMultiplier() {
		return $this->multiplier;
	}

	/**
	 * @return wfWAF
	 */
	public function getWAF() {
		return $this->waf;
	}

	/**
	 * @param wfWAF $waf
	 */
	public function setWAF($waf) {
		$this->waf = $waf;
		if (is_array($this->subjects)) {
			foreach ($this->subjects as $subject) {
				if (is_object($subject) && method_exists($subject, 'setWAF')) {
					$subject->setWAF($waf);
				}
			}
		}
		if (is_object($this->expected) && method_exists($this->expected, 'setWAF')) {
			$this->expected->setWAF($waf);
		}
	}

	/**
	 * @return wfWAFRule
	 */
	public function getRule() {
		return $this->rule;
	}

	/**
	 * @param wfWAFRule $rule
	 */
	public function setRule($rule) {
		$this->rule = $rule;
	}
}

class wfWAFRuleComparisonGroup implements wfWAFRuleInterface {

	private $items = array();
	private $failedComparisons = array();
	private $result = false;
	private $waf;

	/**
	 * @var wfWAFRule
	 */
	private $rule;

	public function __construct() {
		$args = func_get_args();
		foreach ($args as $arg) {
			$this->add($arg);
		}
	}

	public function __sleep() {
		return array(
			'items',
		);
	}

	public function add($item) {
		$this->items[] = $item;
	}

	public function remove($item) {
		$key = array_search($item, $this->items);
		if ($key !== false) {
			unset($this->items[$key]);
		}
	}

	/**
	 *
	 * @throws wfWAFRuleException
	 */
	public function evaluate() {
		if (count($this->items) % 2 != 1) {
			throw new wfWAFRuleException('Invalid number of rules and logical operators.  Should be odd number of rules and logical operators.');
		}

		$this->result = false;
		$operator = null;
		/** @var wfWAFRuleComparison|wfWAFRuleLogicalOperator|wfWAFRuleComparisonGroup $comparison */
		for ($i = 0; $i < count($this->items); $i++) {
			$comparison = $this->items[$i];
			if ($i % 2 == 1 && !($comparison instanceof wfWAFRuleLogicalOperator)) {
				throw new wfWAFRuleException('Invalid WAF rule format, expected wfWAFRuleLogicalOperator, got ' . get_class($comparison));
			}
			if ($i % 2 == 0 && !($comparison instanceof wfWAFRuleComparison || $comparison instanceof wfWAFRuleComparisonGroup)) {
				throw new wfWAFRuleException('Invalid WAF rule format, expected wfWAFRuleComparison or wfWAFRuleComparisonGroup, got ' . get_class($comparison));
			}

			if ($comparison instanceof wfWAFRuleLogicalOperator) {
				$operator = $comparison;
				continue;
			}
			if ($comparison instanceof wfWAFRuleComparison || $comparison instanceof wfWAFRuleComparisonGroup) {
				$comparison->setRule($this->getRule());
				if ($operator instanceof wfWAFRuleLogicalOperator) {
					$operator->setCurrentValue($this->result);
					$operator->setComparison($comparison);
					$this->result = $operator->evaluate();
				} else {
					$this->result = $comparison->evaluate();
				}
			}
			if ($comparison instanceof wfWAFRuleComparison && $comparison->getResult()) {
				if ($comparison->hasSubject()) {
					foreach ($comparison->getFailedSubjects() as $failedSubject) {
						$this->failedComparisons[] = new wfWAFRuleComparisonFailure(
							$failedSubject['subject'], $failedSubject['value'], $comparison->getExpected(),
							$comparison->getAction(), $failedSubject['multiplier'], $failedSubject['matches']
						);
					}
				}
				else {
					$this->failedComparisons[] = new wfWAFRuleComparisonFailure(
						'', '', $comparison->getExpected(),
						$comparison->getAction(), 1, array()
					);
				}
			}
			if ($comparison instanceof wfWAFRuleComparisonGroup && $comparison->getResult()) {
				foreach ($comparison->getFailedComparisons() as $comparisonFail) {
					$this->failedComparisons[] = $comparisonFail;
				}
			}
		}
		return $this->result;
	}

	/**
	 * @return string
	 * @throws wfWAFRuleException
	 */
	public function render() {
		if (count($this->items) % 2 != 1) {
			throw new wfWAFRuleException('Invalid number of rules and logical operators.  Should be odd number of rules and logical operators.');
		}

		$return = array();
		/**
		 * @var wfWAFRuleInterface $item
		 */
		for ($i = 0; $i < count($this->items); $i++) {
			$item = $this->items[$i];
			if ($i % 2 == 1 && !($item instanceof wfWAFRuleLogicalOperator)) {
				throw new wfWAFRuleException('Invalid WAF rule format, expected wfWAFRuleLogicalOperator, got ' . get_class($item));
			}
			if ($i % 2 == 0 && !($item instanceof wfWAFRuleComparison || $item instanceof wfWAFRuleComparisonGroup)) {
				throw new wfWAFRuleException('Invalid WAF rule format, expected wfWAFRule or wfWAFRuleComparisonGroup, got ' . get_class($item));
			}
			$return[] = $item->render();
		}
		return sprintf('new %s(%s)', get_class($this), join(', ', $return));
	}

	/**
	 * @return string
	 * @throws wfWAFRuleException
	 */
	public function renderRule() {
		if (count($this->items) % 2 != 1) {
			throw new wfWAFRuleException('Invalid number of rules and logical operators.  Should be odd number of rules and logical operators.');
		}

		$return = array();
		/**
		 * @var wfWAFRuleInterface $item
		 */
		for ($i = 0; $i < count($this->items); $i++) {
			$item = $this->items[$i];
			if ($i % 2 == 1 && !($item instanceof wfWAFRuleLogicalOperator)) {
				throw new wfWAFRuleException('Invalid WAF rule format, expected wfWAFRuleLogicalOperator, got ' . get_class($item));
			}
			if ($i % 2 == 0 && !($item instanceof wfWAFRuleComparison || $item instanceof wfWAFRuleComparisonGroup)) {
				throw new wfWAFRuleException('Invalid WAF rule format, expected wfWAFRule or wfWAFRuleComparisonGroup, got ' . get_class($item));
			}
			$return[] = $item->renderRule();
		}
		return sprintf('(%s)', join(' ', $return));
	}

	public function debug() {
		$debug = '';
		/** @var wfWAFRuleComparisonFailure $failedComparison */
		foreach ($this->getFailedComparisons() as $failedComparison) {
			$debug .= $failedComparison->getParamKey() . ' ' . $failedComparison->getAction() . ' ' . $failedComparison->getExpected() . "\n";
		}
		return $debug;
	}

	/**
	 * @return array
	 */
	public function getItems() {
		return $this->items;
	}

	/**
	 * @param array $items
	 */
	public function setItems($items) {
		$this->items = $items;
	}

	/**
	 * @return mixed
	 */
	public function getFailedComparisons() {
		return $this->failedComparisons;
	}

	/**
	 * @return boolean
	 */
	public function getResult() {
		return $this->result;
	}

	/**
	 * @return wfWAFRule
	 */
	public function getRule() {
		return $this->rule;
	}

	/**
	 * @param wfWAFRule $rule
	 */
	public function setRule($rule) {
		$this->rule = $rule;
	}

	/**
	 * @return mixed
	 */
	public function getWAF() {
		return $this->waf;
	}

	/**
	 * @param mixed $waf
	 */
	public function setWAF($waf) {
		$this->waf = $waf;
		foreach ($this->items as $item) {
			if (is_object($item) && method_exists($item, 'setWAF')) {
				$item->setWAF($waf);
			}
		}
	}
}

class wfWAFRuleComparisonFailure {

	private $paramKey;
	private $expected;
	private $action;
	/**
	 * @var null|int
	 */
	private $multiplier;
	/**
	 * @var string
	 */
	private $paramValue;
	/**
	 * @var mixed
	 */
	private $matches;

	/**
	 * @param string $paramKey
	 * @param string $paramValue
	 * @param string $expected
	 * @param string $action
	 * @param mixed $multiplier
	 * @param mixed $matches
	 */
	public function __construct($paramKey, $paramValue, $expected, $action, $multiplier = null, $matches = null) {
		$this->setParamKey($paramKey);
		$this->setExpected($expected);
		$this->setAction($action);
		$this->setMultiplier($multiplier);
		$this->setParamValue($paramValue);
		$this->setMatches($matches);
	}

	public function __sleep() {
		return array(
			'paramKey',
			'expected',
			'action',
			'multiplier',
			'paramValue',
			'matches',
		);
	}

	/**
	 * @return mixed
	 */
	public function getParamKey() {
		return $this->paramKey;
	}

	/**
	 * @param mixed $paramKey
	 */
	public function setParamKey($paramKey) {
		$this->paramKey = $paramKey;
	}

	/**
	 * @return mixed
	 */
	public function getExpected() {
		return $this->expected;
	}

	/**
	 * @param mixed $expected
	 */
	public function setExpected($expected) {
		$this->expected = $expected;
	}

	/**
	 * @return mixed
	 */
	public function getAction() {
		return $this->action;
	}

	/**
	 * @param mixed $action
	 */
	public function setAction($action) {
		$this->action = $action;
	}

	/**
	 * @return int|null
	 */
	public function getMultiplier() {
		return $this->multiplier;
	}

	/**
	 * @param int|null $multiplier
	 */
	public function setMultiplier($multiplier) {
		$this->multiplier = $multiplier;
	}

	/**
	 * @return bool
	 */
	public function hasMultiplier() {
		return $this->getMultiplier() > 1;
	}

	/**
	 * @return string
	 */
	public function getParamValue() {
		return $this->paramValue;
	}

	/**
	 * @param string $paramValue
	 */
	public function setParamValue($paramValue) {
		$this->paramValue = $paramValue;
	}

	/**
	 * @return mixed
	 */
	public function getMatches() {
		return $this->matches;
	}

	/**
	 * @param mixed $matches
	 */
	public function setMatches($matches) {
		$this->matches = $matches;
	}
}

class wfWAFRuleComparisonSubject {

	/**
	 * @var array
	 */
	private $subject;
	/**
	 * @var array
	 */
	private $filters;

	/** @var wfWAF */
	private $waf;

	public static function create($waf, $subject, $filters) {
		return new self($waf, $subject, $filters);
	}

	/**
	 * wfWAFRuleComparisonSubject constructor.
	 * @param wfWAF $waf
	 * @param array $subject
	 * @param array $filters
	 */
	public function __construct($waf, $subject, $filters) {
		$this->waf = $waf;
		$this->subject = $subject;
		$this->filters = $filters;
	}

	public function __sleep() {
		return array(
			'subject',
			'filters',
		);
	}

	private function getRootValue($subject) {
		if ($subject instanceof wfWAFRuleComparisonSubject) {
			return $subject->getValue();
		}
		else {
			return $this->getWAF()->getGlobal($subject);
		}
	}

	/**
	 * @return mixed|null
	 */
	public function getValue() {
		$subject = $this->getSubject();
		if (!is_array($subject)) {
			return $this->runFilters($this->getRootValue($subject), $subject);
		}
		else if (count($subject) > 0) {
			$globalKey = array_shift($subject);
			return $this->runFilters($this->_getValue($subject, $this->getRootValue($globalKey)));
		}
		return null;
	}

	/**
	 * @param array $subjectKey
	 * @param array $global
	 * @return null
	 */
	private function _getValue($subjectKey, $global) {
		if (!is_array($global) || !is_array($subjectKey)) {
			return null;
		}

		$key = array_shift($subjectKey);
		if (array_key_exists($key, $global)) {
			if (count($subjectKey) > 0) {
				return $this->_getValue($subjectKey, $global[$key]);
			} else {
				return $global[$key];
			}
		}
		return null;
	}


	/**
	 * @return string
	 */
	public function getKey() {
		return wfWAFRuleComparison::getSubjectKey($this->getSubject());
	}

	/**
	 * @param mixed $value
	 * @return mixed
	 */
	private function runFilters($value) {
		$filters = $this->getFilters();
		if (is_array($filters)) {
			foreach ($filters as $filterArgs) {
				if (method_exists($this, 'filter' . $filterArgs[0])) {
					$value = call_user_func_array(array($this, 'filter' . $filterArgs[0]), array_merge(array($value), array_slice($filterArgs, 1)));
				}
			}
		}
		return $value;
	}

	/**
	 * @param mixed $value
	 * @return string
	 */
	public function filterBase64decode($value) {
		if (is_string($value)) {
			return base64_decode($value);
		}
		return $value;
	}

	public function filterReplace($value, $find, $replace) {
		return str_replace($find, $replace, $value);
	}

	public function filterPregReplace($value, $pattern, $replacement, $limit=-1) {
		return preg_replace($pattern, $replacement, $value, $limit);
	}

	private function getMatchingKeys($array, $patterns) {
		if (!is_array($array))
			return array();
		$filtered = array();
		$pattern = array_shift($patterns);
		foreach ($array as $key=>$value) {
			if (preg_match($pattern, $key)) {
				if (empty($patterns)) {
					$filtered[] = $value;
				}
				else {
					$filtered = array_merge($filtered, $this->getMatchingKeys($value, $patterns));
				}
			}
		}
		return $filtered;
	}

	public function filterFilterKeys($values) {
		$patterns = array_slice(func_get_args(), 1);
		return $this->getMatchingKeys($values, $patterns);
	}

	public function filterJson($value) {
		return wfWAFUtils::json_decode(@(string)$value, true);
	}

	private function renderSubject() {
		$subjects = $this->getSubject();
		if (is_array($subjects)) {
			$rendered = array();
			foreach ($subjects as $subject) {
				if ($subject instanceof wfWAFRuleComparisonSubject) {
					array_push($rendered, $subject->render());
				}
				else {
					array_push($rendered, var_export($subject, true));
				}
			}
			return sprintf('array(%s)', implode(', ', $rendered));
		}
		else {
			return var_export($subjects, true);
		}
	}

	/**
	 * @return string
	 */
	public function render() {
		return sprintf('%s::create($this, %s, %s)', get_class($this), $this->renderSubject(),
			var_export($this->getFilters(), true));
	}

	/**
	 * @return string
	 */
	public function renderRule() {
		$subjects = $this->getSubject();
		if (is_array($subjects)) {
			if (strpos($subjects[0], '.') !== false) {
				list($superGlobal, $global) = explode('.', $subjects[0], 2);
				unset($subjects[0]);
				$subjects = array_merge(array($superGlobal, $global), $subjects);
			}
			$rule = '';
			foreach ($subjects as $subject) {
				if (preg_match("/^[a-zA-Z_][a-zA-Z0-9_]*$/", $subject)) {
					$rule .= "$subject.";
				} else {
					$rule = rtrim($rule, '.');
					$rule .= sprintf("['%s']", str_replace("'", "\\'", $subject));
				}
			}
			$rule = rtrim($rule, '.');
		} else {
			$rule = $this->getSubject();
		}

		foreach ($this->getFilters() as $filter) {
			$rule = $filter[0] . '(' . implode(',', array_merge(array($rule), array_slice($filter, 1))) . ')';
		}
		return $rule;
	}

	/**
	 * @return array
	 */
	public function getSubject() {
		return $this->subject;
	}

	/**
	 * @param array $subject
	 */
	public function setSubject($subject) {
		$this->subject = $subject;
	}

	/**
	 * @return array
	 */
	public function getFilters() {
		return $this->filters;
	}

	/**
	 * @param array $filters
	 */
	public function setFilters($filters) {
		$this->filters = $filters;
	}

	/**
	 * @return wfWAF
	 */
	public function getWAF() {
		return $this->waf;
	}

	private static function setWafForSubject($subject, $waf) {
		if (is_array($subject)) {
			foreach ($subject as $child) {
				self::setWafForSubject($child, $waf);
			}
		}
		else if ($subject instanceof wfWAFRuleComparisonSubject) {
			$subject->setWAF($waf);
		}
	}

	/**
	 * @param wfWAF $waf
	 */
	public function setWAF($waf) {
		$this->waf = $waf;
		self::setWafForSubject($this->subject, $waf);
	}
}
}vendor/wordfence/wf-waf/src/lib/view.php000064400000004425150755146450014245 0ustar00<?php
if (defined('WFWAF_VERSION') && !defined('WFWAF_RUN_COMPLETE')) {

class wfWAFView {

	/**
	 * @var string
	 */
	protected $viewPath;

	/**
	 * @var string
	 */
	protected $viewFileExtension = '.php';

	/**
	 * @var string
	 */
	protected $view;

	/**
	 * @var array
	 */
	protected $data;

	/**
	 * @param string $view
	 * @param array  $data
	 * @return wfWAFView
	 */
	public static function create($view, $data = array()) {
		return new self($view, $data);
	}

	/**
	 * @param string $view
	 * @param array  $data
	 */
	public function __construct($view, $data = array()) {
		$this->viewPath = WFWAF_VIEW_PATH;
		$this->view = $view;
		$this->data = $data;
	}

	/**
	 * @return string
	 * @throws wfWAFViewNotFoundException
	 */
	public function render() {
		$view = preg_replace('/\.{2,}/', '.', $this->view);
		$viewPath = $this->viewPath . '/' . $view . $this->viewFileExtension;
		if (!file_exists($viewPath)) {
			throw new wfWAFViewNotFoundException('The view ' . $viewPath . ' does not exist or is not readable.');
		}

		extract($this->data, EXTR_SKIP);

		if (!defined('WFWAF_VIEW_RENDERING')) { define('WFWAF_VIEW_RENDERING', true); }
		ob_start();
		/** @noinspection PhpIncludeInspection */
		include $viewPath;
		return ob_get_clean();
	}

	/**
	 * @return string
	 */
	public function __toString() {
		try {
			return $this->render();
		} catch (wfWAFViewNotFoundException $e) {
			return defined('WFWAF_DEBUG') && WFWAF_DEBUG ? $e->getMessage() : 'The view could not be loaded.';
		}
	}

	/**
	 * @param $data
	 * @return $this
	 */
	public function addData($data) {
		$this->data = array_merge($data, $this->data);
		return $this;
	}

	/**
	 * @return array
	 */
	public function getData() {
		return $this->data;
	}

	/**
	 * @param array $data
	 * @return $this
	 */
	public function setData($data) {
		$this->data = $data;
		return $this;
	}

	/**
	 * @return string
	 */
	public function getView() {
		return $this->view;
	}

	/**
	 * @param string $view
	 * @return $this
	 */
	public function setView($view) {
		$this->view = $view;
		return $this;
	}

	/**
	 * Prevent POP
	 */
	public function __wakeup() {
		$this->viewPath = WFWAF_VIEW_PATH;
		$this->view = null;
		$this->data = array();
		$this->viewFileExtension = '.php';
	}
}

class wfWAFViewNotFoundException extends Exception {
}
}
vendor/wordfence/wf-waf/src/lib/json.php000064400000074323150755146450014250 0ustar00<?php
if (defined('WFWAF_VERSION') && !defined('WFWAF_RUN_COMPLETE')) {

/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
/**
 * Converts to and from JSON format.
 *
 * JSON (JavaScript Object Notation) is a lightweight data-interchange
 * format. It is easy for humans to read and write. It is easy for machines
 * to parse and generate. It is based on a subset of the JavaScript
 * Programming Language, Standard ECMA-262 3rd Edition - December 1999.
 * This feature can also be found in  Python. JSON is a text format that is
 * completely language independent but uses conventions that are familiar
 * to programmers of the C-family of languages, including C, C++, C#, Java,
 * JavaScript, Perl, TCL, and many others. These properties make JSON an
 * ideal data-interchange language.
 *
 * This package provides a simple encoder and decoder for JSON notation. It
 * is intended for use with client-side Javascript applications that make
 * use of HTTPRequest to perform server communication functions - data can
 * be encoded into JSON notation for use in a client-side javascript, or
 * decoded from incoming Javascript requests. JSON format is native to
 * Javascript, and can be directly eval()'ed with no further parsing
 * overhead
 *
 * All strings should be in ASCII or UTF-8 format!
 *
 * LICENSE: 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.
 *
 * THIS SOFTWARE IS PROVIDED ``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 CONTRIBUTORS 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.
 *
 * @category
 * @package     Services_JSON
 * @author      Michal Migurski <mike-json@teczno.com>
 * @author      Matt Knapp <mdknapp[at]gmail[dot]com>
 * @author      Brett Stimmerman <brettstimmerman[at]gmail[dot]com>
 * @copyright   2005 Michal Migurski
 * @version     CVS: $Id: JSON.php 305040 2010-11-02 23:19:03Z alan_k $
 * @license     http://www.opensource.org/licenses/bsd-license.php
 * @link        http://pear.php.net/pepr/pepr-proposal-show.php?id=198
 */

/**
 * Marker constant for Services_JSON::decode(), used to flag stack state
 */
define('WF_SERVICES_JSON_SLICE',   1);

/**
 * Marker constant for Services_JSON::decode(), used to flag stack state
 */
define('WF_SERVICES_JSON_IN_STR',  2);

/**
 * Marker constant for Services_JSON::decode(), used to flag stack state
 */
define('WF_SERVICES_JSON_IN_ARR',  3);

/**
 * Marker constant for Services_JSON::decode(), used to flag stack state
 */
define('WF_SERVICES_JSON_IN_OBJ',  4);

/**
 * Marker constant for Services_JSON::decode(), used to flag stack state
 */
define('WF_SERVICES_JSON_IN_CMT', 5);

/**
 * Behavior switch for Services_JSON::decode()
 */
define('WF_SERVICES_JSON_LOOSE_TYPE', 16);

/**
 * Behavior switch for Services_JSON::decode()
 */
define('WF_SERVICES_JSON_SUPPRESS_ERRORS', 32);

/**
 * Behavior switch for Services_JSON::decode()
 */
define('WF_SERVICES_JSON_USE_TO_JSON', 64);

/**
 * Converts to and from JSON format.
 *
 * Brief example of use:
 *
 * <code>
 * // create a new instance of Services_JSON
 * $json = new Services_JSON();
 *
 * // convert a complexe value to JSON notation, and send it to the browser
 * $value = array('foo', 'bar', array(1, 2, 'baz'), array(3, array(4)));
 * $output = $json->encode($value);
 *
 * print($output);
 * // prints: ["foo","bar",[1,2,"baz"],[3,[4]]]
 *
 * // accept incoming POST data, assumed to be in JSON notation
 * $input = file_get_contents('php://input', 1000000);
 * $value = $json->decode($input);
 * </code>
 */
class wfServices_JSON
{
	/**
	 * constructs a new JSON instance
	 *
	 * @param    int     $use    object behavior flags; combine with boolean-OR
	 *
	 *                           possible values:
	 *                           - SERVICES_JSON_LOOSE_TYPE:  loose typing.
	 *                                   "{...}" syntax creates associative arrays
	 *                                   instead of objects in decode().
	 *                           - SERVICES_JSON_SUPPRESS_ERRORS:  error suppression.
	 *                                   Values which can't be encoded (e.g. resources)
	 *                                   appear as NULL instead of throwing errors.
	 *                                   By default, a deeply-nested resource will
	 *                                   bubble up with an error, so all return values
	 *                                   from encode() should be checked with isError()
	 *                           - SERVICES_JSON_USE_TO_JSON:  call toJSON when serializing objects
	 *                                   It serializes the return value from the toJSON call rather
	 *                                   than the object itself, toJSON can return associative arrays,
	 *                                   strings or numbers, if you return an object, make sure it does
	 *                                   not have a toJSON method, otherwise an error will occur.
	 */
	function __construct( $use = 0 )
	{
		$this->use = $use;
		$this->_mb_strlen            = function_exists('mb_strlen');
		$this->_mb_convert_encoding  = function_exists('mb_convert_encoding');
		$this->_mb_substr            = function_exists('mb_substr');
	}

	/**
	 * PHP4 constructor.
	 */
	public function wfServices_JSON( $use = 0 ) {
		self::__construct( $use );
	}
	// private - cache the mbstring lookup results..
	var $_mb_strlen = false;
	var $_mb_substr = false;
	var $_mb_convert_encoding = false;

	/**
	 * convert a string from one UTF-16 char to one UTF-8 char
	 *
	 * Normally should be handled by mb_convert_encoding, but
	 * provides a slower PHP-only method for installations
	 * that lack the multibye string extension.
	 *
	 * @param    string  $utf16  UTF-16 character
	 * @return   string  UTF-8 character
	 * @access   private
	 */
	function utf162utf8($utf16)
	{
		// oh please oh please oh please oh please oh please
		if($this->_mb_convert_encoding) {
			return mb_convert_encoding($utf16, 'UTF-8', 'UTF-16');
		}

		$bytes = (ord($utf16[0]) << 8) | ord($utf16[1]);

		switch(true) {
			case ((0x7F & $bytes) == $bytes):
				// this case should never be reached, because we are in ASCII range
				// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
				return chr(0x7F & $bytes);

			case (0x07FF & $bytes) == $bytes:
				// return a 2-byte UTF-8 character
				// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
				return chr(0xC0 | (($bytes >> 6) & 0x1F))
				. chr(0x80 | ($bytes & 0x3F));

			case (0xFFFF & $bytes) == $bytes:
				// return a 3-byte UTF-8 character
				// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
				return chr(0xE0 | (($bytes >> 12) & 0x0F))
				. chr(0x80 | (($bytes >> 6) & 0x3F))
				. chr(0x80 | ($bytes & 0x3F));
		}

		// ignoring UTF-32 for now, sorry
		return '';
	}

	/**
	 * convert a string from one UTF-8 char to one UTF-16 char
	 *
	 * Normally should be handled by mb_convert_encoding, but
	 * provides a slower PHP-only method for installations
	 * that lack the multibye string extension.
	 *
	 * @param    string  $utf8   UTF-8 character
	 * @return   string  UTF-16 character
	 * @access   private
	 */
	function utf82utf16($utf8)
	{
		// oh please oh please oh please oh please oh please
		if($this->_mb_convert_encoding) {
			return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8');
		}

		switch($this->strlen8($utf8)) {
			case 1:
				// this case should never be reached, because we are in ASCII range
				// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
				return $utf8;

			case 2:
				// return a UTF-16 character from a 2-byte UTF-8 char
				// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
				return chr(0x07 & (ord($utf8[0]) >> 2))
				. chr((0xC0 & (ord($utf8[0]) << 6))
					| (0x3F & ord($utf8[1])));

			case 3:
				// return a UTF-16 character from a 3-byte UTF-8 char
				// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
				return chr((0xF0 & (ord($utf8[0]) << 4))
					| (0x0F & (ord($utf8[1]) >> 2)))
				. chr((0xC0 & (ord($utf8[1]) << 6))
					| (0x7F & ord($utf8[2])));
		}

		// ignoring UTF-32 for now, sorry
		return '';
	}

	/**
	 * encodes an arbitrary variable into JSON format (and sends JSON Header)
	 *
	 * @param    mixed   $var    any number, boolean, string, array, or object to be encoded.
	 *                           see argument 1 to Services_JSON() above for array-parsing behavior.
	 *                           if var is a strng, note that encode() always expects it
	 *                           to be in ASCII or UTF-8 format!
	 *
	 * @return   mixed   JSON string representation of input var or an error if a problem occurs
	 * @access   public
	 */
	function encode($var)
	{
		header('Content-type: application/json');
		return $this->encodeUnsafe($var);
	}
	/**
	 * encodes an arbitrary variable into JSON format without JSON Header - warning - may allow XSS!!!!)
	 *
	 * @param    mixed   $var    any number, boolean, string, array, or object to be encoded.
	 *                           see argument 1 to Services_JSON() above for array-parsing behavior.
	 *                           if var is a strng, note that encode() always expects it
	 *                           to be in ASCII or UTF-8 format!
	 *
	 * @return   mixed   JSON string representation of input var or an error if a problem occurs
	 * @access   public
	 */
	function encodeUnsafe($var)
	{
		// see bug #16908 - regarding numeric locale printing
		$lc = setlocale(LC_NUMERIC, 0);
		setlocale(LC_NUMERIC, 'C');
		$ret = $this->_encode($var);
		setlocale(LC_NUMERIC, $lc);
		return $ret;

	}
	/**
	 * PRIVATE CODE that does the work of encodes an arbitrary variable into JSON format
	 *
	 * @param    mixed   $var    any number, boolean, string, array, or object to be encoded.
	 *                           see argument 1 to Services_JSON() above for array-parsing behavior.
	 *                           if var is a strng, note that encode() always expects it
	 *                           to be in ASCII or UTF-8 format!
	 *
	 * @return   mixed   JSON string representation of input var or an error if a problem occurs
	 * @access   public
	 */
	function _encode($var)
	{

		switch (gettype($var)) {
			case 'boolean':
				return $var ? 'true' : 'false';

			case 'NULL':
				return 'null';

			case 'integer':
				return (int) $var;

			case 'double':
			case 'float':
				return  (float) $var;

			case 'string':
				// STRINGS ARE EXPECTED TO BE IN ASCII OR UTF-8 FORMAT
				$ascii = '';
				$strlen_var = $this->strlen8($var);

				/*
				 * Iterate over every character in the string,
				 * escaping with a slash or encoding to UTF-8 where necessary
				 */
				for ($c = 0; $c < $strlen_var; ++$c) {

					$ord_var_c = ord($var[$c]);

					switch (true) {
						case $ord_var_c == 0x08:
							$ascii .= '\b';
							break;
						case $ord_var_c == 0x09:
							$ascii .= '\t';
							break;
						case $ord_var_c == 0x0A:
							$ascii .= '\n';
							break;
						case $ord_var_c == 0x0C:
							$ascii .= '\f';
							break;
						case $ord_var_c == 0x0D:
							$ascii .= '\r';
							break;

						case $ord_var_c == 0x22:
						case $ord_var_c == 0x2F:
						case $ord_var_c == 0x5C:
							// double quote, slash, slosh
							$ascii .= '\\'.$var[$c];
							break;

						case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)):
							// characters U-00000000 - U-0000007F (same as ASCII)
							$ascii .= $var[$c];
							break;

						case (($ord_var_c & 0xE0) == 0xC0):
							// characters U-00000080 - U-000007FF, mask 110XXXXX
							// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
							if ($c+1 >= $strlen_var) {
								$c += 1;
								$ascii .= '?';
								break;
							}

							$char = pack('C*', $ord_var_c, ord($var[$c + 1]));
							$c += 1;
							$utf16 = $this->utf82utf16($char);
							$ascii .= sprintf('\u%04s', bin2hex($utf16));
							break;

						case (($ord_var_c & 0xF0) == 0xE0):
							if ($c+2 >= $strlen_var) {
								$c += 2;
								$ascii .= '?';
								break;
							}
							// characters U-00000800 - U-0000FFFF, mask 1110XXXX
							// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
							$char = pack('C*', $ord_var_c,
								@ord($var[$c + 1]),
								@ord($var[$c + 2]));
							$c += 2;
							$utf16 = $this->utf82utf16($char);
							$ascii .= sprintf('\u%04s', bin2hex($utf16));
							break;

						case (($ord_var_c & 0xF8) == 0xF0):
							if ($c+3 >= $strlen_var) {
								$c += 3;
								$ascii .= '?';
								break;
							}
							// characters U-00010000 - U-001FFFFF, mask 11110XXX
							// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
							$char = pack('C*', $ord_var_c,
								ord($var[$c + 1]),
								ord($var[$c + 2]),
								ord($var[$c + 3]));
							$c += 3;
							$utf16 = $this->utf82utf16($char);
							$ascii .= sprintf('\u%04s', bin2hex($utf16));
							break;

						case (($ord_var_c & 0xFC) == 0xF8):
							// characters U-00200000 - U-03FFFFFF, mask 111110XX
							// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
							if ($c+4 >= $strlen_var) {
								$c += 4;
								$ascii .= '?';
								break;
							}
							$char = pack('C*', $ord_var_c,
								ord($var[$c + 1]),
								ord($var[$c + 2]),
								ord($var[$c + 3]),
								ord($var[$c + 4]));
							$c += 4;
							$utf16 = $this->utf82utf16($char);
							$ascii .= sprintf('\u%04s', bin2hex($utf16));
							break;

						case (($ord_var_c & 0xFE) == 0xFC):
							if ($c+5 >= $strlen_var) {
								$c += 5;
								$ascii .= '?';
								break;
							}
							// characters U-04000000 - U-7FFFFFFF, mask 1111110X
							// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
							$char = pack('C*', $ord_var_c,
								ord($var[$c + 1]),
								ord($var[$c + 2]),
								ord($var[$c + 3]),
								ord($var[$c + 4]),
								ord($var[$c + 5]));
							$c += 5;
							$utf16 = $this->utf82utf16($char);
							$ascii .= sprintf('\u%04s', bin2hex($utf16));
							break;
					}
				}
				return  '"'.$ascii.'"';

			case 'array':
				/*
				 * As per JSON spec if any array key is not an integer
				 * we must treat the whole array as an object. We
				 * also try to catch a sparsely populated associative
				 * array with numeric keys here because some JS engines
				 * will create an array with empty indexes up to
				 * max_index which can cause memory issues and because
				 * the keys, which may be relevant, will be remapped
				 * otherwise.
				 *
				 * As per the ECMA and JSON specification an object may
				 * have any string as a property. Unfortunately due to
				 * a hole in the ECMA specification if the key is a
				 * ECMA reserved word or starts with a digit the
				 * parameter is only accessible using ECMAScript's
				 * bracket notation.
				 */

				// treat as a JSON object
				if (is_array($var) && count($var) && (array_keys($var) !== range(0, sizeof($var) - 1))) {
					$properties = array_map(array($this, 'name_value'),
						array_keys($var),
						array_values($var));

					foreach($properties as $property) {
						if(wfServices_JSON::isError($property)) {
							return $property;
						}
					}

					return '{' . join(',', $properties) . '}';
				}

				// treat it like a regular array
				$elements = array_map(array($this, '_encode'), $var);

				foreach($elements as $element) {
					if(wfServices_JSON::isError($element)) {
						return $element;
					}
				}

				return '[' . join(',', $elements) . ']';

			case 'object':

				// support toJSON methods.
				if (($this->use & WF_SERVICES_JSON_USE_TO_JSON) && method_exists($var, 'toJSON')) {
					// this may end up allowing unlimited recursion
					// so we check the return value to make sure it's not got the same method.
					$recode = $var->toJSON();

					if (method_exists($recode, 'toJSON')) {

						return ($this->use & WF_SERVICES_JSON_SUPPRESS_ERRORS)
							? 'null'
							: new wfServices_JSON_Error(get_class($var).
								" toJSON returned an object with a toJSON method.");

					}

					return $this->_encode( $recode );
				}

				$vars = get_object_vars($var);

				$properties = array_map(array($this, 'name_value'),
					array_keys($vars),
					array_values($vars));

				foreach($properties as $property) {
					if(wfServices_JSON::isError($property)) {
						return $property;
					}
				}

				return '{' . join(',', $properties) . '}';

			default:
				return ($this->use & WF_SERVICES_JSON_SUPPRESS_ERRORS)
					? 'null'
					: new wfServices_JSON_Error(gettype($var)." can not be encoded as JSON string");
		}
	}

	/**
	 * array-walking function for use in generating JSON-formatted name-value pairs
	 *
	 * @param    string  $name   name of key to use
	 * @param    mixed   $value  reference to an array element to be encoded
	 *
	 * @return   string  JSON-formatted name-value pair, like '"name":value'
	 * @access   private
	 */
	function name_value($name, $value)
	{
		$encoded_value = $this->_encode($value);

		if(wfServices_JSON::isError($encoded_value)) {
			return $encoded_value;
		}

		return $this->_encode(strval($name)) . ':' . $encoded_value;
	}

	/**
	 * reduce a string by removing leading and trailing comments and whitespace
	 *
	 * @param    $str    string      string value to strip of comments and whitespace
	 *
	 * @return   string  string value stripped of comments and whitespace
	 * @access   private
	 */
	function reduce_string($str)
	{
		$str = preg_replace(array(

			// eliminate single line comments in '// ...' form
			'#^\s*//(.+)$#m',

			// eliminate multi-line comments in '/* ... */' form, at start of string
			'#^\s*/\*(.+)\*/#Us',

			// eliminate multi-line comments in '/* ... */' form, at end of string
			'#/\*(.+)\*/\s*$#Us'

		), '', $str);

		// eliminate extraneous space
		return trim($str);
	}

	/**
	 * decodes a JSON string into appropriate variable
	 *
	 * @param    string  $str    JSON-formatted string
	 *
	 * @return   mixed   number, boolean, string, array, or object
	 *                   corresponding to given JSON input string.
	 *                   See argument 1 to Services_JSON() above for object-output behavior.
	 *                   Note that decode() always returns strings
	 *                   in ASCII or UTF-8 format!
	 * @access   public
	 */
	function decode($str)
	{
		$str = $this->reduce_string($str);

		switch (strtolower($str)) {
			case 'true':
				return true;

			case 'false':
				return false;

			case 'null':
				return null;

			default:
				$m = array();

				if (is_numeric($str)) {
					// Lookie-loo, it's a number

					// This would work on its own, but I'm trying to be
					// good about returning integers where appropriate:
					// return (float)$str;

					// Return float or int, as appropriate
					return ((float)$str == (integer)$str)
						? (integer)$str
						: (float)$str;

				} elseif (preg_match('/^("|\').*(\1)$/s', $str, $m) && $m[1] == $m[2]) {
					// STRINGS RETURNED IN UTF-8 FORMAT
					$delim = $this->substr8($str, 0, 1);
					$chrs = $this->substr8($str, 1, -1);
					$utf8 = '';
					$strlen_chrs = $this->strlen8($chrs);

					for ($c = 0; $c < $strlen_chrs; ++$c) {

						$substr_chrs_c_2 = $this->substr8($chrs, $c, 2);
						$ord_chrs_c = ord($chrs[$c]);

						switch (true) {
							case $substr_chrs_c_2 == '\b':
								$utf8 .= chr(0x08);
								++$c;
								break;
							case $substr_chrs_c_2 == '\t':
								$utf8 .= chr(0x09);
								++$c;
								break;
							case $substr_chrs_c_2 == '\n':
								$utf8 .= chr(0x0A);
								++$c;
								break;
							case $substr_chrs_c_2 == '\f':
								$utf8 .= chr(0x0C);
								++$c;
								break;
							case $substr_chrs_c_2 == '\r':
								$utf8 .= chr(0x0D);
								++$c;
								break;

							case $substr_chrs_c_2 == '\\"':
							case $substr_chrs_c_2 == '\\\'':
							case $substr_chrs_c_2 == '\\\\':
							case $substr_chrs_c_2 == '\\/':
								if (($delim == '"' && $substr_chrs_c_2 != '\\\'') ||
									($delim == "'" && $substr_chrs_c_2 != '\\"')) {
									$utf8 .= $chrs[++$c];
								}
								break;

							case preg_match('/\\\u[0-9A-F]{4}/i', $this->substr8($chrs, $c, 6)):
								// single, escaped unicode character
								$utf16 = chr(hexdec($this->substr8($chrs, ($c + 2), 2)))
									. chr(hexdec($this->substr8($chrs, ($c + 4), 2)));
								$utf8 .= $this->utf162utf8($utf16);
								$c += 5;
								break;

							case ($ord_chrs_c >= 0x20) && ($ord_chrs_c <= 0x7F):
								$utf8 .= $chrs[$c];
								break;

							case ($ord_chrs_c & 0xE0) == 0xC0:
								// characters U-00000080 - U-000007FF, mask 110XXXXX
								//see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
								$utf8 .= $this->substr8($chrs, $c, 2);
								++$c;
								break;

							case ($ord_chrs_c & 0xF0) == 0xE0:
								// characters U-00000800 - U-0000FFFF, mask 1110XXXX
								// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
								$utf8 .= $this->substr8($chrs, $c, 3);
								$c += 2;
								break;

							case ($ord_chrs_c & 0xF8) == 0xF0:
								// characters U-00010000 - U-001FFFFF, mask 11110XXX
								// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
								$utf8 .= $this->substr8($chrs, $c, 4);
								$c += 3;
								break;

							case ($ord_chrs_c & 0xFC) == 0xF8:
								// characters U-00200000 - U-03FFFFFF, mask 111110XX
								// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
								$utf8 .= $this->substr8($chrs, $c, 5);
								$c += 4;
								break;

							case ($ord_chrs_c & 0xFE) == 0xFC:
								// characters U-04000000 - U-7FFFFFFF, mask 1111110X
								// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
								$utf8 .= $this->substr8($chrs, $c, 6);
								$c += 5;
								break;

						}

					}

					return $utf8;

				} elseif (preg_match('/^\[.*\]$/s', $str) || preg_match('/^\{.*\}$/s', $str)) {
					// array, or object notation

					if ($str[0] == '[') {
						$stk = array(WF_SERVICES_JSON_IN_ARR);
						$arr = array();
					} else {
						if ($this->use & WF_SERVICES_JSON_LOOSE_TYPE) {
							$stk = array(WF_SERVICES_JSON_IN_OBJ);
							$obj = array();
						} else {
							$stk = array(WF_SERVICES_JSON_IN_OBJ);
							$obj = new stdClass();
						}
					}

					array_push($stk, array('what'  => WF_SERVICES_JSON_SLICE,
					                       'where' => 0,
					                       'delim' => false));

					$chrs = $this->substr8($str, 1, -1);
					$chrs = $this->reduce_string($chrs);

					if ($chrs == '') {
						if (reset($stk) == WF_SERVICES_JSON_IN_ARR) {
							return $arr;

						} else {
							return $obj;

						}
					}

					//print("\nparsing {$chrs}\n");

					$strlen_chrs = $this->strlen8($chrs);

					for ($c = 0; $c <= $strlen_chrs; ++$c) {

						$top = end($stk);
						$substr_chrs_c_2 = $this->substr8($chrs, $c, 2);

						if (($c == $strlen_chrs) || (($chrs[$c] == ',') && ($top['what'] == WF_SERVICES_JSON_SLICE))) {
							// found a comma that is not inside a string, array, etc.,
							// OR we've reached the end of the character list
							$slice = $this->substr8($chrs, $top['where'], ($c - $top['where']));
							array_push($stk, array('what' => WF_SERVICES_JSON_SLICE, 'where' => ($c + 1), 'delim' => false));
							//print("Found split at {$c}: ".$this->substr8($chrs, $top['where'], (1 + $c - $top['where']))."\n");

							if (reset($stk) == WF_SERVICES_JSON_IN_ARR) {
								// we are in an array, so just push an element onto the stack
								array_push($arr, $this->decode($slice));

							} elseif (reset($stk) == WF_SERVICES_JSON_IN_OBJ) {
								// we are in an object, so figure
								// out the property name and set an
								// element in an associative array,
								// for now
								$parts = array();

								if (preg_match('/^\s*(["\'].*[^\\\]["\'])\s*:/Uis', $slice, $parts)) {
									// "name":value pair
									$key = $this->decode($parts[1]);
									$val = $this->decode(trim(substr($slice, strlen($parts[0])), ", \t\n\r\0\x0B"));
									if ($this->use & WF_SERVICES_JSON_LOOSE_TYPE) {
										$obj[$key] = $val;
									} else {
										$obj->$key = $val;
									}
								} elseif (preg_match('/^\s*(\w+)\s*:/Uis', $slice, $parts)) {
									// name:value pair, where name is unquoted
									$key = $parts[1];
									$val = $this->decode(trim(substr($slice, strlen($parts[0])), ", \t\n\r\0\x0B"));

									if ($this->use & WF_SERVICES_JSON_LOOSE_TYPE) {
										$obj[$key] = $val;
									} else {
										$obj->$key = $val;
									}
								}

							}

						} elseif ((($chrs[$c] == '"') || ($chrs[$c] == "'")) && ($top['what'] != WF_SERVICES_JSON_IN_STR)) {
							// found a quote, and we are not inside a string
							array_push($stk, array('what' => WF_SERVICES_JSON_IN_STR, 'where' => $c, 'delim' => $chrs[$c]));
							//print("Found start of string at {$c}\n");

						} elseif (($chrs[$c] == $top['delim']) &&
							($top['what'] == WF_SERVICES_JSON_IN_STR) &&
							(($this->strlen8($this->substr8($chrs, 0, $c)) - $this->strlen8(rtrim($this->substr8($chrs, 0, $c), '\\'))) % 2 != 1)) {
							// found a quote, we're in a string, and it's not escaped
							// we know that it's not escaped becase there is _not_ an
							// odd number of backslashes at the end of the string so far
							array_pop($stk);
							//print("Found end of string at {$c}: ".$this->substr8($chrs, $top['where'], (1 + 1 + $c - $top['where']))."\n");

						} elseif (($chrs[$c] == '[') &&
							in_array($top['what'], array(WF_SERVICES_JSON_SLICE, WF_SERVICES_JSON_IN_ARR, WF_SERVICES_JSON_IN_OBJ))) {
							// found a left-bracket, and we are in an array, object, or slice
							array_push($stk, array('what' => WF_SERVICES_JSON_IN_ARR, 'where' => $c, 'delim' => false));
							//print("Found start of array at {$c}\n");

						} elseif (($chrs[$c] == ']') && ($top['what'] == WF_SERVICES_JSON_IN_ARR)) {
							// found a right-bracket, and we're in an array
							array_pop($stk);
							//print("Found end of array at {$c}: ".$this->substr8($chrs, $top['where'], (1 + $c - $top['where']))."\n");

						} elseif (($chrs[$c] == '{') &&
							in_array($top['what'], array(WF_SERVICES_JSON_SLICE, WF_SERVICES_JSON_IN_ARR, WF_SERVICES_JSON_IN_OBJ))) {
							// found a left-brace, and we are in an array, object, or slice
							array_push($stk, array('what' => WF_SERVICES_JSON_IN_OBJ, 'where' => $c, 'delim' => false));
							//print("Found start of object at {$c}\n");

						} elseif (($chrs[$c] == '}') && ($top['what'] == WF_SERVICES_JSON_IN_OBJ)) {
							// found a right-brace, and we're in an object
							array_pop($stk);
							//print("Found end of object at {$c}: ".$this->substr8($chrs, $top['where'], (1 + $c - $top['where']))."\n");

						} elseif (($substr_chrs_c_2 == '/*') &&
							in_array($top['what'], array(WF_SERVICES_JSON_SLICE, WF_SERVICES_JSON_IN_ARR, WF_SERVICES_JSON_IN_OBJ))) {
							// found a comment start, and we are in an array, object, or slice
							array_push($stk, array('what' => WF_SERVICES_JSON_IN_CMT, 'where' => $c, 'delim' => false));
							$c++;
							//print("Found start of comment at {$c}\n");

						} elseif (($substr_chrs_c_2 == '*/') && ($top['what'] == WF_SERVICES_JSON_IN_CMT)) {
							// found a comment end, and we're in one now
							array_pop($stk);
							$c++;

							for ($i = $top['where']; $i <= $c; ++$i)
								$chrs = substr_replace($chrs, ' ', $i, 1);

							//print("Found end of comment at {$c}: ".$this->substr8($chrs, $top['where'], (1 + $c - $top['where']))."\n");

						}

					}

					if (reset($stk) == WF_SERVICES_JSON_IN_ARR) {
						return $arr;

					} elseif (reset($stk) == WF_SERVICES_JSON_IN_OBJ) {
						return $obj;

					}

				}
		}
	}

	/**
	 * @todo Ultimately, this should just call PEAR::isError()
	 */
	function isError($data, $code = null)
	{
		if (class_exists('pear')) {
			return PEAR::isError($data, $code);
		} elseif (is_object($data) && (get_class($data) == 'wfservices_json_error' ||
				is_subclass_of($data, 'wfServices_JSON_Error'))) {
			return true;
		}

		return false;
	}

	/**
	 * Calculates length of string in bytes
	 * @param string
	 * @return integer length
	 */
	function strlen8( $str )
	{
		if ( $this->_mb_strlen ) {
			return mb_strlen( $str, "8bit" );
		}
		return strlen( $str );
	}

	/**
	 * Returns part of a string, interpreting $start and $length as number of bytes.
	 * @param string
	 * @param integer start
	 * @param integer length
	 * @return integer length
	 */
	function substr8( $string, $start, $length=false )
	{
		if ( $length === false ) {
			$length = $this->strlen8( $string ) - $start;
		}
		if ( $this->_mb_substr ) {
			return mb_substr( $string, $start, $length, "8bit" );
		}
		return substr( $string, $start, $length );
	}

}

if (class_exists('PEAR_Error')) {

	class wfServices_JSON_Error extends PEAR_Error
	{
		function __construct($message = 'unknown error', $code = null,
		                     $mode = null, $options = null, $userinfo = null)
		{
			parent::PEAR_Error($message, $code, $mode, $options, $userinfo);
		}

		public function wfServices_JSON_Error($message = 'unknown error', $code = null,
		                                    $mode = null, $options = null, $userinfo = null) {
			self::__construct($message = 'unknown error', $code = null,
				$mode = null, $options = null, $userinfo = null);
		}
	}

} else {

	/**
	 * @todo Ultimately, this class shall be descended from PEAR_Error
	 */
	class wfServices_JSON_Error
	{
		/**
		 * PHP5 constructor.
		 */
		function __construct( $message = 'unknown error', $code = null,
		                      $mode = null, $options = null, $userinfo = null )
		{

		}

		/**
		 * PHP4 constructor.
		 */
		public function wfServices_JSON_Error( $message = 'unknown error', $code = null,
		                                     $mode = null, $options = null, $userinfo = null ) {
			self::__construct( $message, $code, $mode, $options, $userinfo );
		}
	}

}
}
vendor/wordfence/wf-waf/src/lib/storage/mysql.php000064400000072270150755146450016107 0ustar00<?php

/**
 *
 */
class wfWAFStorageMySQL implements wfWAFStorageInterface {

	private $_usingLowercase;

	/**
	 * @var wfWAFStorageEngineDatabase
	 */
	private $db;
	/**
	 * @var string
	 */
	private $tablePrefix;
	private $uninstalled;
	private $dataChanged = false;
	private $data = array();
	private $dataToSave = array();
	private $shutdownRegistry = null;

	public $installing = false;

	/**
	 * @param wfWAFStorageEngineDatabase $engine
	 * @param string $tablePrefix
	 */
	public function __construct($engine, $tablePrefix = 'wp_', $shutdownRegistry = null) {
		$this->db = $engine;
		$this->tablePrefix = $tablePrefix;
		$this->shutdownRegistry = $shutdownRegistry === null ? wfShutdownRegistry::getDefaultInstance() : $shutdownRegistry;
	}

	public function usingLowercase() {
		if ($this->_usingLowercase === null) {
			$table = $this->tablePrefix . 'wfConfig';
			$tableExists = $this->getDb()->get_var("SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND BINARY TABLE_NAME='$table'");
			$this->_usingLowercase = $tableExists !== $table;
		}
		return $this->_usingLowercase;
	}

	/**
	 * Returns the table with the site (single site installations) or network (multisite) prefix added.
	 *
	 * @param string $table
	 * @param bool $applyCaseConversion Whether or not to convert the table case to what is actually in use.
	 * @return string
	 */
	public function networkTable($table, $applyCaseConversion = true) {
		if ($this->usingLowercase() && $applyCaseConversion) {
			$table = strtolower($table);
		}
		return $this->tablePrefix . $table;
	}

	/**
	 * Check if there's attack before a certain timestamp.
	 *
	 * @param int $olderThan
	 * @return bool
	 */
	public function hasPreviousAttackData($olderThan) {
		$table = $this->networkTable('wfHits');
		$lastAttackDataTruncateTime = floatval($this->getConfig('lastAttackDataTruncateTime'));
		$count = $this->db->get_var('SELECT count(*) FROM ' . $table . ' where attackLogTime < ? and attackLogTime > ?', array(
			sprintf('%.6f', $olderThan),
			$lastAttackDataTruncateTime,
		));
		return $count > 0;
	}

	/**
	 * Check if there's attack data after a given timestamp.
	 *
	 * @param int $newerThan
	 * @return bool
	 */
	public function hasNewerAttackData($newerThan) {
		$table = $this->networkTable('wfHits');
		$lastAttackDataTruncateTime = floatval($this->getConfig('lastAttackDataTruncateTime'));
		$count = $this->db->get_var('SELECT count(*) FROM ' . $table . ' where attackLogTime > ?', array(
			sprintf('%.6f', max($newerThan, $lastAttackDataTruncateTime)),
		));
		return $count > 0;
	}

	/**
	 * Get all attack data.
	 *
	 *
	 */
	public function getAttackData() {
		$table = $this->networkTable('wfHits');
		$lastAttackDataTruncateTime = floatval($this->getConfig('lastAttackDataTruncateTime'));
		$results = $this->db->get_results('SELECT * FROM ' . $table . ' WHERE attackLogTime > ?', array(
			$lastAttackDataTruncateTime,
		));

		$data = array();
		foreach ($results as $row) {
			$actionData = wfWAFUtils::json_decode($row['actionData'], true);
			if (!is_array($actionData))
				$actionData = array();
			$data[] = array(
				$row['attackLogTime'],
				$row['ctime'],
				wfWAFUtils::inet_ntop($row['IP']),
				(array_key_exists('learningMode', $actionData) ? $actionData['learningMode'] : 0),
				(array_key_exists('paramKey', $actionData) ? $actionData['paramKey'] : false),
				(array_key_exists('paramValue', $actionData) ? $actionData['paramValue'] : false),
				(array_key_exists('failedRules', $actionData) ? $actionData['failedRules'] : ''),
				strpos($row['URL'], 'https') === 0 ? 1 : 0,
				(array_key_exists('fullRequest', $actionData) ? $actionData['fullRequest'] : ''),
			);
		}
		return wfWAFUtils::json_encode($data);
	}

	/**
	 * Get all attack data in array format.
	 */
	public function getAttackDataArray() {
		return $this->getNewestAttackDataArray(floatval($this->getConfig('lastAttackDataTruncateTime')));
	}

	/**
	 * Get attack data after a certain timestamp in array format.
	 *
	 * @param int $newerThan
	 * @return array
	 */
	public function getNewestAttackDataArray($newerThan) {
		$table = $this->networkTable('wfHits');
		$results = $this->db->get_results('SELECT * FROM ' . $table . ' WHERE attackLogTime > ?', array(
			$newerThan,
		));

		$data = array();
		foreach ($results as $row) {
			$actionData = wfWAFUtils::json_decode($row['actionData'], true);
			if (!is_array($actionData))
				$actionData = array();
			$data[] = array(
				$row['attackLogTime'],
				$row['ctime'],
				wfWAFUtils::inet_ntop($row['IP']),
				(array_key_exists('learningMode', $actionData) ? $actionData['learningMode'] : 0),
				(array_key_exists('paramKey', $actionData) ? base64_decode($actionData['paramKey']) : false),
				(array_key_exists('paramValue', $actionData) ? base64_decode($actionData['paramValue']) : false),
				(array_key_exists('failedRules', $actionData) ? $actionData['failedRules'] : ''),
				strpos($row['URL'], 'https') === 0 ? 1 : 0,
				(array_key_exists('fullRequest', $actionData) ? base64_decode($actionData['fullRequest']) : ''),
				(array_key_exists('requestMetadata', $actionData) ? $actionData['requestMetadata'] : ''),
				$row['id'],
			);
		}
		return $data;
	}

	/**
	 * I don't think this will be needed for what it's used for in the plugin.
	 */
	public function truncateAttackData() {
		$this->setConfig('lastAttackDataTruncateTime', microtime(true));
		return true;
	}

	/**
	 * Insert request into wfHits.
	 *
	 * @param array $failedRules
	 * @param string $failedParamKey
	 * @param string $failedParamValue
	 * @param wfWAFRequestInterface $request
	 * @param mixed $_
	 * @return mixed
	 */
	public function logAttack($failedRules, $failedParamKey, $failedParamValue, $request, $_ = null) {
		$table = $this->networkTable('wfHits');

		$failedRulesString = '';
		if (is_array($failedRules)) {
			/**
			 * @var int $index
			 * @var wfWAFRule|int $rule
			 */
			foreach ($failedRules as $index => $rule) {
				if ($rule instanceof wfWAFRule) {
					$failedRulesString .= $rule->getRuleID() . '|';
				} else {
					$failedRulesString .= $rule . '|';
				}
			}
			$failedRulesString = wfWAFUtils::substr($failedRulesString, 0, -1);
		}
		if (preg_match('/\blogged\b/i', $failedRulesString)) {
			$statusCode = 200;
			$action = 'logged:waf';
		} else {
			$statusCode = 403;
			$action = 'blocked:waf';
		}

		$ua = '';
		$referer = '';
		$headers = $request->getHeaders();
		if (is_array($headers)) {
			if (array_key_exists('User-Agent', $headers)) {
				$ua = $headers['User-Agent'];
			}
			if (array_key_exists('Referer', $headers)) {
				$referer = $headers['Referer'];
			}
		}

		$attackData = array(
				'failedRules'     => $failedRulesString,
				'paramKey'        => base64_encode($failedParamKey),
				'paramValue'      => base64_encode($failedParamValue),
				'path'            => base64_encode($request->getPath()),
				'fullRequest'     => base64_encode($request),
				'requestMetadata' => $request->getMetadata(),
		);
		$attackDataJson = wfWAFUtils::json_encode_limited($attackData, 65535, array('fullRequest', 'paramValue'));

		$row = array(
			'attackLogTime'     => microtime(true),
			'ctime'             => $request->getTimestamp(),
			'IP'                => wfWAFUtils::inet_pton($request->getIP()),
			'statusCode'        => $statusCode,
			'URL'               => $request->getProtocol() . '://' . $request->getHost() . $request->getURI(),
			'isGoogle'          => 0,
			'userID'            => 0,
			'newVisit'          => 0,
			'referer'           => $referer,
			'UA'                => $ua,
			'action'            => $action,
			'actionData'        => $attackDataJson
		);

		try {
			return $this->db->insert($table, $row);
		} catch (wfWAFStorageEngineMySQLiException $e) { // Let the firewall block the request without logging.
			error_log('Failed to log attack data: ' . $e->getMessage());
			return false;
		}
	}

	/**
	 * Insert IP into wfBlocks.
	 *
	 * @param float $timestamp
	 * @param string $ip
	 * @param int $type
	 * @return mixed
	 */
	public function blockIP($timestamp, $ip, $type = wfWAFStorageInterface::IP_BLOCKS_SINGLE) {
		$blockedIPs = $this->getConfig('wfWAFBlockedIPs');
		if (!$blockedIPs) {
			$blockedIPs = array();
		}
		$blockedIPs[$ip] = array($timestamp, $type);
		$this->setConfig('wfWAFBlockedIPs', $blockedIPs);
		return true;
	}

	/**
	 * Check if the IP is in wfBlocks.
	 *
	 * @param string $ip
	 * @return bool
	 */
	public function isIPBlocked($ip) {
		$blockedIPs = $this->getConfig('wfWAFBlockedIPs');
		if (!$blockedIPs) {
			$blockedIPs = array();
		}
		return array_key_exists($ip, $blockedIPs) && is_array($blockedIPs[$ip]) && $blockedIPs[$ip][0] >= time();
	}

	/**
	 * Remove all blocked IPs.
	 *
	 * @param int $types
	 */
	public function purgeIPBlocks($types = wfWAFStorageInterface::IP_BLOCKS_ALL) {
		if ($types === wfWAFStorageInterface::IP_BLOCKS_ALL) {
			$this->unsetConfig('wfWAFBlockedIPs');
		} else {
			$blockedIPs = $this->getConfig('wfWAFBlockedIPs');
			if (!$blockedIPs) {
				$blockedIPs = array();
			}
			foreach ($blockedIPs as $key => $values) {
				list($timestamp, $type) = $values;
				if (($type & $types) > 0 || $timestamp < time()) {
					unset($blockedIPs[$key]);
				}
			}
			$this->setConfig('wfWAFBlockedIPs', $blockedIPs);
		}
	}

	/**
	 * Query config item from wfConfig table.
	 *
	 * @param $key
	 * @param null $default
	 * @param string $category
	 * @return mixed
	 */
	public function getConfig($key, $default = null, $category = '') {
		if (!$this->data) {
			$this->autoloadConfig();
		}

		if (array_key_exists($category, $this->data) && array_key_exists($key, $this->data[$category])) {
			return $this->data[$category][$key];
		}

		$table = $this->getStorageTable($category);
		$val = $this->db->get_var('SELECT val FROM ' . $table . ' WHERE name = ?', array(
			$key,
		));
		if ($val !== null) {
			if (in_array($key, $this->getSerializedParams())) {
				$value = @unserialize($val);
				$this->data[$category][$key] = $value;
				return $value;
			}
			$this->data[$category][$key] = $val;
			return $val;
		}
		return $default;
	}

	/**
	 * Insert/update wfConfig table for WAF option.
	 *
	 * @param $key
	 * @param $value
	 * @param string $category
	 */
	public function setConfig($key, $value, $category = '') {
		if (!array_key_exists($category, $this->data)) {
			$this->data[$category] = array();
		}

		$changedConfigValue = (array_key_exists($key, $this->data[$category]) && $this->data[$category][$key] != $value) ||
			!array_key_exists($key, $this->data[$category]);

		if (!$this->dataChanged && $changedConfigValue) {
			$this->dataChanged = array($category, $key, true);
			$this->shutdownRegistry->register(array($this, 'saveConfig'), wfShutdownRegistry::PRIORITY_LAST);
		}
		if ($changedConfigValue) {
			$this->dataToSave[$category][$key] = $value;
		}

		$this->data[$category][$key] = $value;
	}

	/**
	 * Delete config item from wfConfig table.
	 *
	 * @param $key
	 * @param string $category
	 */
	public function unsetConfig($key, $category = '') {
		unset($this->data[$category][$key]);
		$table = $this->getStorageTable($category);
		$this->db->delete($table, array(
			'name' => $key,
		));
	}

	/**
	 *
	 */
	public function saveConfig() {
		if ($this->uninstalled) {
			return;
		}

		try {
			foreach ($this->dataToSave as $category => $data) {
				foreach ($data as $key => $value) {
					if (in_array($key, $this->getSerializedParams())) {
						$value = serialize($value);
					}
					$table = $this->getStorageTable($category);
					$this->db->query("INSERT INTO {$table} (name, val, autoload) values (?, ?, 'no') ON DUPLICATE KEY UPDATE val = ?", array(
						$key,
						$value,
						$value,
					));
				}
			}
		} catch (wfWAFStorageEngineMySQLiException $e) {
			if (WFWAF_DEBUG) {
				error_log($e);
			}
		}
	}

	/**
	 * Remove related WAF specific configuration.
	 */
	public function uninstall() {
		try {
			$this->getDb()->query("DROP TABLE IF EXISTS " . $this->networkTable('wfwafconfig'));
		} catch (wfWAFStorageEngineMySQLiException $e) {
			error_log($e);
		}
		$this->uninstalled = true;
	}

	/**
	 * Pull from wfConfig.
	 */
	public function isInLearningMode() {
		if ($this->getConfig('wafStatus', '') == 'learning-mode') {
			if ($this->getConfig('learningModeGracePeriodEnabled', false)) {
				if ($this->getConfig('learningModeGracePeriod', 0) > time()) {
					return true;
				} else {
					// Reached the end of the grace period, activate the WAF.
					$this->setConfig('wafStatus', 'enabled');
					$this->setConfig('learningModeGracePeriodEnabled', 0);
					$this->unsetConfig('learningModeGracePeriod');
				}
			} else {
				return true;
			}
		}
		return false;
	}

	/**
	 * Pull from wfConfig.
	 */
	public function isDisabled() {
		return $this->getConfig('wafStatus', '') === 'disabled' || $this->getConfig('wafDisabled', 0);
	}

	/**
	 * Return hardcoded path maybe?
	 */
	public function getRulesDSLCacheFile() {

	}

	/**
	 * Probably not.
	 */
	public function isAttackDataFull() {
		return false;
	}

	/**
	 *
	 */
	public function vacuum() {
		$this->purgeIPBlocks(wfWAFStorageInterface::IP_BLOCKS_ALL);
	}

	/**
	 * @return wfWAFStorageEngineDatabase
	 */
	public function getDb() {
		return $this->db;
	}

	/**
	 *
	 */
	public function setDefaults() {
		$defaults = $this->getDefaultConfiguration();
		foreach ($defaults as $key => $value) {
			$val = $this->getConfig($key);
			if ($val === null) {
				$this->setConfig($key, $value);
			}
		}
	}

	/**
	 *
	 */
	public function runMigrations() {
//		$currentVersion = $this->getConfig('version');
//		if (!$currentVersion || version_compare($currentVersion, WFWAF_VERSION) === -1) {
//
//		}

		$this->getDb()->query("CREATE TABLE IF NOT EXISTS " . $this->networkTable('wfwafconfig') .
			" (
	`name` varchar(100) NOT NULL,
	`val` longblob,
	`autoload` enum('no','yes') NOT NULL DEFAULT 'yes',
	PRIMARY KEY (`name`)
) DEFAULT CHARSET=utf8
");
	}

	/**
	 * @return array
	 */
	public function getDefaultConfiguration() {
		return array(
			'wafStatus'                      => 'learning-mode',
			'learningModeGracePeriodEnabled' => 1,
			'learningModeGracePeriod'        => time() + (86400 * 7),
			'authKey'                        => wfWAFUtils::getRandomString(64),
		);
	}

	/**
	 * @return array
	 */
	public function getSerializedParams() {
		return array(
			'cron',
			'whitelistedURLParams',
			'disabledRules',
			'wfWAFBlockedIPs',
			'wafRules',
		);
	}

	/**
	 * @return array
	 */
	public function getAutoloadParams() {
		return array(
			''          => array(
				'wafStatus',
				'learningModeGracePeriodEnabled',
				'learningModeGracePeriod',
				'authKey',
				'version',
				'advancedBlockingEnabled',
				'disabledRules',
				'patternBlocks',
				'countryBlocks',
				'otherBlocks',
				'lockouts',
				'wafRules',
				'avoid_php_input',
				'wafDisabled',
				'wfWAFBlockedIPs',
				'disableWAFBlacklistBlocking',
			),
			'livewaf'   => array(
				'cron',
				'whitelistedURLParams',
				'whitelistedURLs',
			),
			'transient' => array(
				'watchedIPs',
				'blockedPrefixes',
			),
			'synced'    => array(
				'timeoffset_wf',
				'apiKey',
				'isPaid',
				'siteURL',
				'homeURL',
				'whitelistedIPs',
				'howGetIPs',
				'howGetIPs_trusted_proxies',
				'howGetIPs_trusted_proxies_unified',
				'other_WFNet',
				'pluginABSPATH',
				'serverIPs',
				'disableWAFIPBlocking',
				'advancedBlockingEnabled',
				'blockCustomText',
				'whitelistedServiceIPs'
			),
		);
	}

	protected function autoloadConfig() {
		$params = $this->getAutoloadParams();
		foreach ($params as $category => $autoloadParams) {
			// Set default keys to null to prevent re-querying the table for config keypairs that aren't in the table.
			foreach ($autoloadParams as $autoloadParam) {
				$this->data[$category][$autoloadParam] = null;
			}

			$table = $this->getStorageTable($category);
			$whereIn = str_repeat('?,', count($autoloadParams) - 1) . '?';
			$results = $this->db->get_results('SELECT * FROM ' . $table . ' WHERE name IN (' . $whereIn . ')', $autoloadParams);
			$serializedParams = $this->getSerializedParams();
			foreach ($results as $row) {
				if (in_array($row['name'], $serializedParams)) {
					$this->data[$category][$row['name']] = @unserialize($row['val']);
				} else {
					$this->data[$category][$row['name']] = $row['val'];
				}
			}
		}
	}

	public function getRules() {
		return $this->getConfig('wafRules');
	}

	public function setRules($rules) {
		$this->setConfig('wafRules', $rules);
	}

	public function needsInitialRules() {
		$rules = $this->getRules();
		return !$rules;
	}

	public function getStorageTable($category) {
		switch ($category) {
			case 'livewaf':
			case 'transient':
				$table = $this->networkTable('wfwafconfig');
				break;
			default:
				$table = $this->networkTable('wfConfig');
				break;
		}
		return $table;
	}

	public function getDescription() {
		return __('mysqli', 'wordfence');
	}

}

interface wfWAFStorageEngineDatabase {

	public function connect($user, $password, $database, $host, $port = null, $socket = null, $flags = 0);

	public function setCharset($charset, $collation);

	public function close();

	public function insert($table, $data);

	public function update($table, $data, $where);

	public function delete($table, $where);

	public function query($sql, $data = array());

	public function get_var($query = null, $data = array(), $x = 0, $y = 0);

	public function get_row($query = null, $data = array(), $y = 0);

	public function get_results($query = null, $data = array());
}

class wfWAFStorageEngineMySQLi implements wfWAFStorageEngineDatabase {

	/**
	 * @var string
	 */
	private $user;
	/**
	 * @var string
	 */
	private $password;
	/**
	 * @var string
	 */
	private $database;
	/**
	 * @var string
	 */
	private $host;
	/**
	 * @var int|null
	 */
	private $port;
	/**
	 * @var string|null
	 */
	private $socket;

	/** @var mysqli */
	private $dbh;

	private $lastStatement;

	public $installing = false;

	/**
	 *
	 */
	public function __construct() {

	}

	/**
	 * @param string $user
	 * @param string $password
	 * @param string $database
	 * @param string $host
	 * @param null|int $port
	 * @param mixed $socket
	 * @return mysqli
	 * @throws wfWAFStorageEngineMySQLiException
	 */
	public function connect($user, $password, $database, $host, $port = null, $socket = null, $flags = 0, $sslOptions = null) {
		$this->dbh = mysqli_init();
		if (!empty($sslOptions) && ($flags & (MYSQLI_CLIENT_SSL | MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT))) {
			mysqli_ssl_set(
				$this->dbh,
				array_key_exists('key', $sslOptions) ? $sslOptions['key'] : null,
				array_key_exists('certificate', $sslOptions) ? $sslOptions['certificate'] : null,
				array_key_exists('ca_certificate', $sslOptions) ? $sslOptions['ca_certificate'] : null,
				array_key_exists('ca_path', $sslOptions) ? $sslOptions['ca_path'] : null,
				array_key_exists('cipher_algos', $sslOptions) ? $sslOptions['cipher_algos'] : null
			);
		}
		if (!@mysqli_real_connect($this->dbh, $host, $user, $password, $database, $port, $socket, $flags)) {
			$error = error_get_last();
			throw new wfWAFStorageEngineMySQLiException('Unable to connect to database: ' . $error['message'], $error['type']);
		}

		return $this->dbh;
	}

	public function setCharset($charset, $collation) {
		$result = $this->determineCharset($charset, $collation);
		$charset = $result['charset'];
		$collation = $result['collation'];
		$this->setConnectionCharset($charset, $collation);
	}

	protected function determineCharset($charset, $collation) {
		if ('utf8' === $charset && $this->hasCap('utf8mb4')) {
			$charset = 'utf8mb4';
		}

		if ('utf8mb4' === $charset && !$this->hasCap('utf8mb4')) {
			$charset = 'utf8';
			$collation = str_replace('utf8mb4_', 'utf8_', $collation);
		}

		if ('utf8mb4' === $charset) {
			// _general_ is outdated, so we can upgrade it to _unicode_, instead.
			if (!$collation || 'utf8_general_ci' === $collation) {
				$collation = 'utf8mb4_unicode_ci';
			} else {
				$collation = str_replace('utf8_', 'utf8mb4_', $collation);
			}
		}

		// _unicode_520_ is a better collation, we should use that when it's available.
		if ($this->hasCap('utf8mb4_520') && 'utf8mb4_unicode_ci' === $collation) {
			$collation = 'utf8mb4_unicode_520_ci';
		}

		return compact('charset', 'collation');
	}

	/**
	 * Determine if a database supports a particular feature.
	 *
	 * @param string $dbCap The feature to check for. Accepts 'collation',
	 *                       'group_concat', 'subqueries', 'set_charset',
	 *                       'utf8mb4', or 'utf8mb4_520'.
	 * @return int|false Whether the database feature is supported, false otherwise.
	 */
	public function hasCap($dbCap) {
		$version = $this->dbVersion();

		switch (strtolower($dbCap)) {
			case 'collation' :    // @since 2.5.0
			case 'group_concat' : // @since 2.7.0
			case 'subqueries' :   // @since 2.7.0
				return version_compare($version, '4.1', '>=');
			case 'set_charset' :
				return version_compare($version, '5.0.7', '>=');
			case 'utf8mb4' :      // @since 4.1.0
				if (version_compare($version, '5.5.3', '<')) {
					return false;
				}
				$client_version = mysqli_get_client_info();

				/*
				 * libmysql has supported utf8mb4 since 5.5.3, same as the MySQL server.
				 * mysqlnd has supported utf8mb4 since 5.0.9.
				 */
				if (false !== strpos($client_version, 'mysqlnd')) {
					$client_version = preg_replace('/^\D+([\d.]+).*/', '$1', $client_version);
					return version_compare($client_version, '5.0.9', '>=');
				} else {
					return version_compare($client_version, '5.5.3', '>=');
				}
			case 'utf8mb4_520' : // @since 4.6.0
				return version_compare($version, '5.6', '>=');
		}

		return false;
	}

	public function setConnectionCharset($charset, $collation) {
		if ($this->hasCap('collation') && !empty($charset)) {
			$setCharsetSucceeded = false;

			if (function_exists('mysqli_set_charset') && $this->hasCap('set_charset')) {
				$setCharsetSucceeded = mysqli_set_charset($this->dbh, $charset);
			}

			if ($setCharsetSucceeded) {
				$query = "SET NAMES {$this->escape($charset)}";
				if ($collation) {
					$query .= " COLLATE {$this->escape($collation)}";
				}
				$this->query($query);
			}
		}
	}

	/**
	 * Retrieves the MySQL server version.
	 *
	 * @return null|string Null on failure, version number on success.
	 */
	public function dbVersion() {
		$serverInfo = mysqli_get_server_info($this->dbh);
		return preg_replace('/[^0-9.].*/', '', $serverInfo);
	}

	/**
	 *
	 */
	public function close() {
		mysqli_close($this->dbh);
	}

	/**
	 * @param string $table
	 * @param array $data
	 * @return bool|int|string
	 */
	public function insert($table, $data) {
		$sql = $this->buildInsertSQL($table, $data);
		if ($stmt = $this->query($sql, $data)) {
			$insertID = mysqli_insert_id($this->dbh);
			$stmt->close();
			return $insertID;
		}
		return false;
	}

	/**
	 * @param string $table
	 * @param array $data
	 * @param array $where
	 * @return bool|int
	 * @throws wfWAFStorageEngineMySQLiException
	 */
	public function update($table, $data, $where) {
		if (!$data) {
			throw new wfWAFStorageEngineMySQLiException('Values to update must supplied to \wfWAFStorageEngineMySQLi::update.');
		}
		if (!$where) {
			throw new wfWAFStorageEngineMySQLiException('A where clause must supplied to \wfWAFStorageEngineMySQLi::update.');
		}
		$sql = $this->buildUpdateSQL($table, $data, $where);
		if ($stmt = $this->query($sql, array_merge(array_values($data), array_values($where)))) {
			$affectedRows = mysqli_affected_rows($this->dbh);
			$stmt->close();
			return $affectedRows;
		}
		return false;

	}

	/**
	 * @param string $table
	 * @param array $where
	 * @return bool|int
	 * @throws wfWAFStorageEngineMySQLiException
	 */
	public function delete($table, $where) {
		if (!$where) {
			throw new wfWAFStorageEngineMySQLiException('A where clause must supplied to \wfWAFStorageEngineMySQLi::delete.');
		}
		$sql = $this->buildDeleteSQL($table, $where);
		if ($stmt = $this->query($sql, $where)) {
			$affectedRows = mysqli_affected_rows($this->dbh);
			$stmt->close();
			return $affectedRows;
		}
		return false;
	}

	/**
	 * @param $sql
	 * @param array $data
	 * @return mysqli_stmt
	 * @throws wfWAFStorageEngineMySQLiException
	 */
	public function query($sql, $data = array()) {
		if ($this->installing) {
			return false;
		}

		$stmt = mysqli_prepare($this->dbh, $sql);
		if (!$stmt) {
			throw new wfWAFStorageEngineMySQLiException(
				sprintf('MySQL error[%d]: %s', mysqli_errno($this->dbh), mysqli_error($this->dbh)),
				mysqli_errno($this->dbh)
			);
		}

		$bindFormats = '';
		$bindData = array();
		$bindCounter = 0;
		foreach ($data as $value) {
			switch (gettype($value)) {
				case 'integer':
				case 'boolean':
					$bindFormats .= 'i';
					${"bindVar{$bindCounter}"} = (int) $value;
					$bindData[] = &${"bindVar{$bindCounter}"};
					break;

				case 'string':
					$bindFormats .= 's';
					${"bindVar{$bindCounter}"} = $value;
					$bindData[] = &${"bindVar{$bindCounter}"};
					break;

				case 'double':
				case 'float':
					$bindFormats .= 'd';
					${"bindVar{$bindCounter}"} = $value;
					$bindData[] = &${"bindVar{$bindCounter}"};
					break;

				default:
					$bindFormats .= 'b';
					${"bindVar{$bindCounter}"} = $value;
					$bindData[] = &${"bindVar{$bindCounter}"};
					break;
			}
			$bindCounter++;
		}

		if ($bindData) {
			array_unshift($bindData, $bindFormats);
			call_user_func_array(array($stmt, 'bind_param'), $bindData);
		}

		$stmt->execute();
		if ($stmt->errno > 0) {
			throw new wfWAFStorageEngineMySQLiException('MySQL error [' . $stmt->errno . ']: ' . $stmt->error, $stmt->errno);
		}

		return $stmt;
	}

	/**
	 * @param mysqli_stmt $stmt
	 * @return array
	 */
	public function statementToArray($stmt) {
		if (!$stmt) {
			return array();
		}

		$result = $stmt->get_result();

		$return = array();
		while ($row = $result->fetch_array(MYSQLI_BOTH)) {
			$return[] = $row;
		}
		return $return;
	}

	/**
	 * @param string $query
	 * @param array $data
	 * @param int $x
	 * @param int $y
	 * @return null|mixed
	 */
	public function get_var($query = null, $data = array(), $x = 0, $y = 0) {
		$this->lastStatement = $this->query($query, $data);
		$results = $this->statementToArray($this->lastStatement);

		if (isset($results[$y][$x])) {
			return $results[$y][$x];
		}

		return null;
	}

	/**
	 * @param string $query
	 * @param array $data
	 * @param int $y
	 * @return mixed|null
	 */
	public function get_row($query = null, $data = array(), $y = 0) {
		$stmt = $this->query($query, $data);
		$results = $this->statementToArray($stmt);

		if (isset($results[$y])) {
			return $results[$y];
		}

		return null;
	}

	/**
	 * @param string $query
	 * @param array $data
	 * @return array
	 */
	public function get_results($query = null, $data = array()) {
		$stmt = $this->query($query, $data);
		return $this->statementToArray($stmt);
	}

	/**
	 * @param mixed $value
	 * @return string
	 */
	public function escape($value) {
		return sprintf("'%s'", mysqli_real_escape_string($this->dbh, $value));
	}

	/**
	 * @param string $table
	 * @param array $data
	 * @return string
	 */
	protected function buildInsertSQL($table, $data) {
		$columns = array();
		$values = array();
		foreach ($data as $column => $value) {
			$columns[] = $this->sanitizeColumn($column);
			$values[] = '?';
		}
		$sql = sprintf('INSERT INTO %s (%s) VALUES (%s)', $table, join(',', $columns), join(',', $values));
		return $sql;
	}

	/**
	 * @param string $column
	 * @return mixed
	 */
	protected function sanitizeColumn($column) {
		return preg_replace('/[^a-zA-Z0-9_]/i', '', $column);
	}

	/**
	 * @return mixed
	 */
	public function getLastStatement() {
		return $this->lastStatement;
	}

	/**
	 * @param string $table
	 * @param array $where
	 * @return string
	 */
	protected function buildDeleteSQL($table, $where) {
		$sql = sprintf('DELETE FROM %s %s', $table, $this->buildWhereClause($where));
		return $sql;
	}

	/**
	 * @param string $table
	 * @param array $data
	 * @param array $where
	 * @return string
	 */
	protected function buildUpdateSQL($table, $data, $where) {
		if (!is_array($data)) {
			throw new InvalidArgumentException('Argument 2 expected to be array. ' . gettype($data) . ' given.');
		}
		if (count($data) === 0) {
			throw new InvalidArgumentException('Argument 2 cannot be empty.');
		}
		if (!is_array($where)) {
			throw new InvalidArgumentException('Argument 3 expected to be array. ' . gettype($where) . ' given.');
		}
		if (count($where) === 0) {
			throw new InvalidArgumentException('Argument 3 cannot be empty.');
		}

		return sprintf('UPDATE %s SET %s %s', $table, $this->buildUpdateClause($data), $this->buildWhereClause($where));
	}

	/**
	 * @param array $where
	 * @return string
	 */
	protected function buildWhereClause($where) {
		if (!is_array($where)) {
			throw new InvalidArgumentException('Argument 1 expected to be array. ' . gettype($where) . ' given.');
		}
		if (!$where) {
			return '';
		}
		$sql = 'WHERE ';
		foreach ($where as $column => $value) {
			$sql .= $this->sanitizeColumn($column) . ' = ? AND ';
		}
		return wfWAFUtils::substr($sql, 0, -5);
	}

	/**
	 * @param array $data
	 * @return string
	 */
	protected function buildUpdateClause($data) {
		if (!is_array($data)) {
			throw new InvalidArgumentException('Argument 1 expected to be array. ' . gettype($data) . ' given.');
		}
		if (!$data) {
			throw new InvalidArgumentException('Argument 1 cannot be an empty array.');
		}
		$sql = '';
		foreach ($data as $column => $value) {
			$sql .= $this->sanitizeColumn($column) . ' = ?, ';
		}
		return wfWAFUtils::substr($sql, 0, -2);
	}
}


class wfWAFStorageEngineMySQLiException extends wfWAFException {

}vendor/wordfence/wf-waf/src/lib/storage/file.php000064400000130274150755146450015660 0ustar00<?php
if (defined('WFWAF_VERSION') && !defined('WFWAF_RUN_COMPLETE')) {

class wfWAFStorageFile implements wfWAFStorageInterface {

	const LOG_FILE_HEADER = "<?php exit('Access denied'); __halt_compiler(); ?>\n";
	const LOG_INFO_HEADER = "******************************************************************\nThis file is used by the Wordfence Web Application Firewall. Read \nmore at https://docs.wordfence.com/en/Web_Application_Firewall_FAQ\n******************************************************************\n";
	const IP_BLOCK_RECORD_SIZE = 24;
	private $rules;
	private $failScores;
	private $variables;
	private $whitelistedParams;
	private $blacklistedParams;

	public static function allowFileWriting() {
		if (defined('WFWAF_ALWAYS_ALLOW_FILE_WRITING') && WFWAF_ALWAYS_ALLOW_FILE_WRITING) {
			return true;
		}
		
		if (wfWAFUtils::isCli()) {
			return false;
		}
		return true;
	}

	public static function atomicFilePutContents($file, $content, $prefix = 'config') {
		if (!wfWAFStorageFile::allowFileWriting()) { return false; }
		
		$tmpFile = @tempnam(dirname($file), $prefix . '.tmp.');
		if (!$tmpFile) {
			$tmpFile = @tempnam(sys_get_temp_dir(), $prefix . '.tmp.');
		}
		if (!$tmpFile) {
			throw new wfWAFStorageFileException('Unable to save temporary file for atomic writing.');
		}
		$tmpHandle = @fopen($tmpFile, 'w');
		if (!$tmpHandle) {
			throw new wfWAFStorageFileException('Unable to save temporary file ' . $tmpFile . ' for atomic writing.');
		}

		self::lock($tmpHandle, LOCK_EX);
		fwrite($tmpHandle, $content);
		fflush($tmpHandle);
		self::lock($tmpHandle, LOCK_UN);
		fclose($tmpHandle);
		chmod($tmpFile, self::permissions()); 

		// Attempt to verify file has finished writing (sometimes the disk will lie for better benchmarks)
		$tmpContents = file_get_contents($tmpFile);
		if ($tmpContents !== $content) {
			throw new wfWAFStorageFileException('Unable to verify temporary file contents for atomic writing.');
		}

		if (!@rename($tmpFile, $file)) {
			$backFile = @tempnam(dirname($file), $prefix . '.bak.');
			if (!$backFile) {
				$backFile = @tempnam(sys_get_temp_dir(), $prefix . '.bak.');
			}
			if (!$backFile) {
				throw new wfWAFStorageFileException('Unable to save temporary file for atomic writing.');
			}
			if (WFWAF_DEBUG) {
				rename($file, $backFile);
				rename($tmpFile, $file);
				unlink($backFile);
				unlink($tmpFile);
			} else {
				@rename($file, $backFile);
				@rename($tmpFile, $file);
				@unlink($backFile);
				@unlink($tmpFile);
			}
		}
	}

	public static function lock($handle, $lock, $wouldLock = 1) {
		$locked = flock($handle, $lock, $wouldLock);
		if (!$locked) {
			error_log('Lock not acquired ' . $locked);
		}
		return $locked;
	}
	
	public static function permissions() {
		if (defined('WFWAF_LOG_FILE_MODE')) {
			return WFWAF_LOG_FILE_MODE;
		}
		
		static $_cachedPermissions = null;
		if ($_cachedPermissions === null) {
			if (defined('WFWAF_LOG_PATH')) {
				$template = rtrim(WFWAF_LOG_PATH, '/') . '/template.php';
				if (file_exists($template)) {
					$stat = @stat($template);
					if ($stat !== false) {
						$mode = $stat[2];
						$updatedMode = 0600;
						if (($mode & 0020) == 0020) {
							$updatedMode = $updatedMode | 0060;
						}
						$_cachedPermissions = $updatedMode;
						return $updatedMode;
					}
				}
			}
			return 0660;
		}
		return $_cachedPermissions;
	}

	/**
	 * @var resource
	 */
	private $ipCacheFileHandle;

	/**
	 * @var string|null
	 */
	private $attackDataFile;
	/**
	 * @var wfWAFAttackDataStorageFileEngine
	 */
	private $attackDataEngine;

	/**
	 * @var string|null
	 */
	private $ipCacheFile;
	private $configFile;
	private $rulesFile;
	private $rulesDSLCacheFile;
	private $dataChanged = array();
	private $data = array();
	/**
	 * @var resource[]
	 */
	private $configFileHandles = array();
	private $uninstalled;
	private $attackDataRows;
	private $attackDataNewerThan;


	/**
	 * @param string|null $attackDataFile
	 * @param string|null $ipCacheFile
	 * @param string|null $configFile
	 * @param string|null $rulesFile
	 * @param null $rulesDSLCacheFile
	 */
	public function __construct($attackDataFile = null, $ipCacheFile = null, $configFile = null, $rulesFile = null, $rulesDSLCacheFile = null) {
		$this->setAttackDataFile($attackDataFile);
		$this->setIPCacheFile($ipCacheFile);
		$this->setConfigFile($configFile);
		$this->setRulesFile($rulesFile);
		$this->setRulesDSLCacheFile($rulesDSLCacheFile);
	}

	/**
	 * @param float $olderThan
	 * @return bool
	 * @throws wfWAFStorageFileException
	 */
	public function hasPreviousAttackData($olderThan) {
		$this->open();
		$timestamp = $this->getAttackDataEngine()->getOldestTimestamp();
		return $timestamp && $timestamp < $olderThan;
	}

	/**
	 * @param float $newerThan
	 * @return bool
	 * @throws wfWAFStorageFileException
	 */
	public function hasNewerAttackData($newerThan) {
		$this->open();
		$timestamp = $this->getAttackDataEngine()->getNewestTimestamp();
		return $timestamp && $timestamp > $newerThan;
	}


	/**
	 * @return mixed|string|void
	 * @throws wfWAFStorageFileException
	 */
	public function getAttackData() {
		$this->open();
		$this->attackDataRows = array();
		$this->getAttackDataEngine()->scanRows(array($this, '_getAttackDataRowsSerialized'));
		return wfWAFUtils::json_encode($this->attackDataRows);
	}

	/**
	 * @return array
	 * @throws wfWAFStorageFileException
	 */
	public function getAttackDataArray() {
		$this->open();
		$this->attackDataRows = array();
		$this->getAttackDataEngine()->scanRows(array($this, '_getAttackDataRows'));
		return $this->attackDataRows;
	}

	/**
	 * @param resource $fileHandle
	 * @param int $offset
	 * @param int $length
	 */
	public function _getAttackDataRowsSerialized($fileHandle, $offset, $length) {
		fseek($fileHandle, $offset);
		self::lock($fileHandle, LOCK_SH);
		$binary = fread($fileHandle, $length);
		self::lock($fileHandle, LOCK_UN);
		$row = wfWAFAttackDataStorageFileEngineRow::unpack($binary);
		$data = wfWAFUtils::json_decode($row->getData(), true);
		if (is_array($data)) {
			array_unshift($data, $row->getTimestamp());
			$this->attackDataRows[] = $data;
		}
	}

	/**
	 * @param resource $fileHandle
	 * @param int $offset
	 * @param int $length
	 */
	public function _getAttackDataRows($fileHandle, $offset, $length) {
		fseek($fileHandle, $offset);
		self::lock($fileHandle, LOCK_SH);
		$binary = fread($fileHandle, $length);
		self::lock($fileHandle, LOCK_UN);
		$row = wfWAFAttackDataStorageFileEngineRow::unpack($binary);
		$data = $this->unserializeRow($row->getData());
		array_unshift($data, $row->getTimestamp());
		$this->attackDataRows[] = $data;
	}

	/**
	 * @param $newerThan
	 * @return array
	 * @throws wfWAFStorageFileException
	 */
	public function getNewestAttackDataArray($newerThan) {
		$this->open();
		$this->attackDataRows = array();
		$this->attackDataNewerThan = $newerThan;
		$this->getAttackDataEngine()->scanRowsReverse(array($this, '_getAttackDataRowsNewerThan'));
		return $this->attackDataRows;
	}

	/**
	 * @param resource $fileHandle
	 * @param int $offset
	 * @param int $length
	 * @return bool
	 */
	public function _getAttackDataRowsNewerThan($fileHandle, $offset, $length) {
		fseek($fileHandle, $offset);
		self::lock($fileHandle, LOCK_SH);
		$binaryTimestamp = fread($fileHandle, 8);
		self::lock($fileHandle, LOCK_UN);
		$timestamp = wfWAFAttackDataStorageFileEngine::unpackMicrotime($binaryTimestamp);
		if ($timestamp > $this->attackDataNewerThan) {
			$binary = $binaryTimestamp . fread($fileHandle, $length - 8);
			$row = wfWAFAttackDataStorageFileEngineRow::unpack($binary);
			$data = $this->unserializeRow($row->getData());
			if (is_array($data)) {
				array_unshift($data, $row->getTimestamp());
				$this->attackDataRows[] = $data;
			}
			return true;
		}
		return false;
	}

	/**
	 * @return bool
	 * @throws wfWAFStorageFileException
	 */
	public function truncateAttackData() {
		if (!wfWAFStorageFile::allowFileWriting()) { return false; }
		$this->open();
		$this->getAttackDataEngine()->truncate();
		return $this->getAttackDataEngine()->getRowCount() === 0;
	}

	/**
	 * @return bool
	 * @throws wfWAFStorageFileException
	 */
	public function isAttackDataFull() {
		$this->open();
		return $this->getAttackDataEngine()->getRowCount() === wfWAFAttackDataStorageFileEngine::MAX_ROWS;
	}

	/**
	 * @param array $failedRules
	 * @param string $failedParamKey
	 * @param string $failedParamValue
	 * @param wfWAFRequestInterface $request
	 * @param mixed $_
	 * @return mixed
	 */
	public function logAttack($failedRules, $failedParamKey, $failedParamValue, $request, $_ = null) {
		if (!wfWAFStorageFile::allowFileWriting()) { return false; }
		
		$this->open();
		$row = array(
			$request->getTimestamp(),
			$request->getIP(),
			(int) $this->isInLearningMode(),
			$failedParamKey,
			$failedParamValue,
		);

		$failedRulesString = '';
		if (is_array($failedRules)) {
			/**
			 * @var int $index
			 * @var wfWAFRule|int $rule
			 */
			foreach ($failedRules as $index => $rule) {
				if ($rule instanceof wfWAFRule) {
					$failedRulesString .= $rule->getRuleID() . '|';
				} else {
					$failedRulesString .= $rule . '|';
				}
			}
			$failedRulesString = wfWAFUtils::substr($failedRulesString, 0, -1);
		}
		$row[] = $failedRulesString;
		$row[] = $request->getProtocol() === 'https' ? 1 : 0;
		$row[] = (string) $request;
		// phpcs:ignore PHPCompatibility.FunctionUse.ArgumentFunctionsReportCurrentValue.NeedsInspection
		$args = func_get_args();
		$row = array_merge($row, array_slice($args, 4));

		if (($rowString = $this->serializeRow($row)) !== false) {
			$attackRow = new wfWAFAttackDataStorageFileEngineRow(microtime(false), $rowString);
			$this->getAttackDataEngine()->addRow($attackRow);
		}
	}

	/**
	 * @param int $timestamp
	 * @param string $ip
	 * @return mixed|void
	 * @throws wfWAFStorageFileException
	 */
	public function blockIP($timestamp, $ip, $type = wfWAFStorageInterface::IP_BLOCKS_SINGLE) {
		if (!wfWAFStorageFile::allowFileWriting()) { return false; }
		
		$this->open();
		if (!$this->isIPBlocked($ip)) {
			self::lock($this->ipCacheFileHandle, LOCK_EX);
			fseek($this->ipCacheFileHandle, 0, SEEK_END);
			fwrite($this->ipCacheFileHandle, wfWAFUtils::inet_pton($ip) . pack('V', $timestamp) . pack('V', $type));
			fflush($this->ipCacheFileHandle);
			self::lock($this->ipCacheFileHandle, LOCK_UN);
		}
	}

	/**
	 * @param string $ip
	 * @return bool
	 */
	public function isIPBlocked($ip) {
		$this->open();
		$ipBin = wfWAFUtils::inet_pton($ip);
		fseek($this->ipCacheFileHandle, wfWAFUtils::strlen(self::LOG_FILE_HEADER), SEEK_SET);
		self::lock($this->ipCacheFileHandle, LOCK_SH);
		while (!feof($this->ipCacheFileHandle)) {
			$ipStr = fread($this->ipCacheFileHandle, self::IP_BLOCK_RECORD_SIZE);
			if (wfWAFUtils::strlen($ipStr) < self::IP_BLOCK_RECORD_SIZE) { break; }
			$ip2 = wfWAFUtils::substr($ipStr, 0, 16);
			$unpacked = @unpack('V', wfWAFUtils::substr($ipStr, 16, 4));
			if (is_array($unpacked)) {
				$t = array_shift($unpacked);
				if ($ipBin === $ip2 && $t >= time()) {
					self::lock($this->ipCacheFileHandle, LOCK_UN);
					return true;
				}
			}
		}
		self::lock($this->ipCacheFileHandle, LOCK_UN);
		return false;
	}
	
	public function pathForConfig($category = '') {
		$category = strtolower(preg_replace('/[^a-z0-9]/i', '', $category));
		$path = $this->_normalizeSlashes($this->getConfigFile());
		$components = explode('/', $path);
		$last = $components[count($components) - 1];
		if (preg_match('/^([^.]+)(\..+$|$)/', $last, $matches) && !empty($category)) {
			$last = $matches[1] . '-' . $category . $matches[2];
		}
		$components[count($components) - 1] = $last;
		$path = implode('/', $components);
		return $path;
	}

	/**
	 * @return bool
	 */
	public function isOpened($category = '') {
		return isset($this->configFileHandles[$category]) && is_resource($this->configFileHandles[$category]);
	}

	/**
	 * @throws wfWAFStorageFileException
	 */
	public function open($category = '') {
		if ($this->isOpened($category)) {
			return;
		}
		if ($this->uninstalled) {
			throw new wfWAFStorageFileException('Unable to open WAF file storage, WAF has been uninstalled.');
		}
		
		if (!empty($category)) { //A non-empty category only opens that config file rather than including the rest of the WAF files.
			$this->_open($this->pathForConfig($category), $this->configFileHandles, $category, self::LOG_FILE_HEADER . self::LOG_INFO_HEADER . serialize($this->getDefaultConfiguration($category)), true);
			return;
		}

		$files = array(
			array($this->getIPCacheFile(), 'ipCacheFileHandle', false, self::LOG_FILE_HEADER, true),
			array($this->pathForConfig($category), 'configFileHandles', $category, self::LOG_FILE_HEADER . self::LOG_INFO_HEADER . serialize($this->getDefaultConfiguration($category)), false),
		);
		foreach ($files as $file) {
			list($filePath, $fileHandle, $arrayKey, $defaultContents, $remakeIfCorrupt) = $file;
			$this->_open($filePath, $this->$fileHandle, $arrayKey, $defaultContents, $remakeIfCorrupt);
		}

		$this->setAttackDataEngine(new wfWAFAttackDataStorageFileEngine($this->getAttackDataFile()));
		$this->getAttackDataEngine()->open();
	}
	
	private function _open($filePath, &$fileHandle, $arrayKey, $defaultContents, $remakeIfCorrupt = false) {
		if (!file_exists($filePath)) {
			@file_put_contents($filePath, $defaultContents, LOCK_EX);
		}
		if (wfWAFStorageFile::allowFileWriting()) {
			@chmod($filePath, self::permissions());
		}
		if ($arrayKey !== false) {
			$fileHandle[$arrayKey] = @fopen($filePath, 'r+');
			$handle = $fileHandle[$arrayKey];
		}
		else {
			$fileHandle = @fopen($filePath, 'r+');
			$handle = $fileHandle;
		}
		
		if (!$handle && $remakeIfCorrupt && wfWAFStorageFile::allowFileWriting()) {
			@file_put_contents($filePath, $defaultContents, LOCK_EX);
			@chmod($filePath, self::permissions());
			if ($arrayKey !== false) {
				$fileHandle[$arrayKey] = @fopen($filePath, 'r+');
				$handle = $fileHandle[$arrayKey];
			}
			else {
				$fileHandle = @fopen($filePath, 'r+');
				$handle = $fileHandle;
			}
		}
		
		if (!$handle) {
			throw new wfWAFStorageFileException('Unable to open ' . $filePath . ' for reading and writing.');
		}
	}

	/**
	 *
	 */
	public function close($category = '') {
		if (!$this->isOpened($category)) {
			return;
		}
		
		fclose($this->configFileHandles[$category]);
		unset($this->configFileHandles[$category]);
		
		if (!empty($category)) { //A non-empty category only closes that config file rather than including the rest of the WAF files.
			return;
		}
		
		fclose($this->ipCacheFileHandle);
		$this->ipCacheFileHandle = null;
		$this->getAttackDataEngine()->close();
	}

	/**
	 * Clean up old expired IP blocks.
	 */
	public function vacuum() {
		if (!wfWAFStorageFile::allowFileWriting()) { return false; }
		
		$this->open();
		$readPointer = wfWAFUtils::strlen(self::LOG_FILE_HEADER);
		$writePointer = wfWAFUtils::strlen(self::LOG_FILE_HEADER);
		fseek($this->ipCacheFileHandle, $readPointer, SEEK_SET);
		self::lock($this->ipCacheFileHandle, LOCK_EX);
		$ipCacheRow = fread($this->ipCacheFileHandle, self::IP_BLOCK_RECORD_SIZE);
		while (!feof($this->ipCacheFileHandle)) {
			$unpacked = @unpack('V', wfWAFUtils::substr($ipCacheRow, 16, 4));
			if (is_array($unpacked)) {
				$expires = array_shift($unpacked);
				if ($expires >= time()) {
					fseek($this->ipCacheFileHandle, $writePointer, SEEK_SET);
					fwrite($this->ipCacheFileHandle, $ipCacheRow);
					$writePointer += self::IP_BLOCK_RECORD_SIZE;
				}
			}
			$readPointer += self::IP_BLOCK_RECORD_SIZE;
			fseek($this->ipCacheFileHandle, $readPointer, SEEK_SET);
			$ipCacheRow = fread($this->ipCacheFileHandle, self::IP_BLOCK_RECORD_SIZE);
		}
		ftruncate($this->ipCacheFileHandle, $writePointer);
		fflush($this->ipCacheFileHandle);
		self::lock($this->ipCacheFileHandle, LOCK_UN);
	}
	
	/**
	 * Remove all existing IP blocks.
	 */
	public function purgeIPBlocks($types = wfWAFStorageInterface::IP_BLOCKS_ALL) {
		if (!wfWAFStorageFile::allowFileWriting()) { return false; }
		
		$this->open();
		$readPointer = wfWAFUtils::strlen(self::LOG_FILE_HEADER);
		$writePointer = wfWAFUtils::strlen(self::LOG_FILE_HEADER);
		fseek($this->ipCacheFileHandle, $readPointer, SEEK_SET);
		self::lock($this->ipCacheFileHandle, LOCK_EX);
		if ($types !== wfWAFStorageInterface::IP_BLOCKS_ALL) {
			$ipCacheRow = fread($this->ipCacheFileHandle, self::IP_BLOCK_RECORD_SIZE);
			while (!feof($this->ipCacheFileHandle)) {
				$unpacked = @unpack('Vexpires/Vtype', wfWAFUtils::substr($ipCacheRow, 16, 8));
				if (is_array($unpacked)) {
					$type = $unpacked['type'];
					if (($type & $types) == 0) {
						fseek($this->ipCacheFileHandle, $writePointer, SEEK_SET);
						fwrite($this->ipCacheFileHandle, $ipCacheRow);
						$writePointer += self::IP_BLOCK_RECORD_SIZE;
					}
				}
				$readPointer += self::IP_BLOCK_RECORD_SIZE;
				fseek($this->ipCacheFileHandle, $readPointer, SEEK_SET);
				$ipCacheRow = fread($this->ipCacheFileHandle, self::IP_BLOCK_RECORD_SIZE);
			}
		}
		ftruncate($this->ipCacheFileHandle, $writePointer);
		fflush($this->ipCacheFileHandle);
		self::lock($this->ipCacheFileHandle, LOCK_UN);
	}

	/**
	 * @param string $key
	 * @param mixed $default
	 * @return mixed
	 */
	public function getConfig($key, $default = null, $category = '') {
		if (!isset($this->data[$category]) || $this->data[$category] === false)
		{
			$this->fetchConfigData($category);
		}
		return (is_array($this->data[$category]) && array_key_exists($key, $this->data[$category])) ? $this->data[$category][$key] : $default;
	}

	/**
	 * @param string $key
	 * @param mixed $value
	 */
	public function setConfig($key, $value, $category = '') {
		if (!isset($this->data[$category]) || $this->data[$category] === false) {
			$this->fetchConfigData($category);
		}
		
		if (is_array($this->data[$category])) {
			if (!isset($this->dataChanged[$category]) && (
					(array_key_exists($key, $this->data[$category]) && $this->data[$category][$key] !== $value) ||
					!array_key_exists($key, $this->data[$category])
				)
			) {
				$this->dataChanged[$category] = array($key, true);
				register_shutdown_function(array($this, 'saveConfig'), $category);
			}
			$this->data[$category][$key] = $value;
		}
	}

	/**
	 * @param string $key
	 */
	public function unsetConfig($key, $category = '') {
		if (!isset($this->data[$category]) || $this->data[$category] === false) {
			$this->fetchConfigData($category);
		}
		if (!isset($this->dataChanged[$category]) && is_array($this->data[$category]) && array_key_exists($key, $this->data[$category])) {
			$this->dataChanged[$category] = array($key, true);
			register_shutdown_function(array($this, 'saveConfig'), $category);
		}
		unset($this->data[$category][$key]);
	}

	/**
	 * @throws wfWAFStorageFileException
	 */
	public function fetchConfigData($category = '', $redoing = false) {
		unset($this->configFileHandles[$category]);
		$this->open($category);
		self::lock($this->configFileHandles[$category], LOCK_SH);
		$i = 0;
		// Attempt to read contents of the config file. This could be in the middle of a write, so we account for it and
		// wait for the operation to complete.
		fseek($this->configFileHandles[$category], wfWAFUtils::strlen(self::LOG_FILE_HEADER), SEEK_SET);
		$serializedData = '';
		while (!feof($this->configFileHandles[$category])) {
			$serializedData .= fread($this->configFileHandles[$category], 1024);
		}
		if (wfWAFUtils::substr($serializedData, 0, 1) == '*') {
			$serializedData = wfWAFUtils::substr($serializedData, wfWAFUtils::strlen(self::LOG_INFO_HEADER));
		}
		$this->data[$category] = @unserialize($serializedData);

		if ($this->data[$category] === false) {
			if (!empty($category) && !$redoing) {
				$this->regenerateConfigFile($category);
				$this->fetchConfigData($category, true);
				return;
			}
			throw new wfWAFStorageFileConfigException('Error reading Wordfence Firewall config data, configuration file could be corrupted or inaccessible. Path: ' . $this->pathForConfig($category));
		}

		self::lock($this->configFileHandles[$category], LOCK_UN);
	}

	/**
	 * @throws wfWAFStorageFileException
	 */
	public function saveConfig($category = '') {
		if (!wfWAFStorageFile::allowFileWriting()) { return false; }
		
		if (WFWAF_DEBUG) {
			error_log('Saving WAF config for change in key ' . $this->dataChanged[$category][0] . ', value: ' .
				((is_object($this->data[$category][$this->dataChanged[$category][0]]) || $this->dataChanged[$category][0] === 'cron') ?
					gettype($this->data[$category][$this->dataChanged[$category][0]]) :
					var_export($this->data[$category][$this->dataChanged[$category][0]], true)));
		}

		if ($this->uninstalled) {
			return;
		}

		if (WFWAF_IS_WINDOWS) {
			self::lock($this->configFileHandles[$category], LOCK_UN);
			fclose($this->configFileHandles[$category]);
			file_put_contents($this->pathForConfig($category), self::LOG_FILE_HEADER . self::LOG_INFO_HEADER . serialize($this->data[$category]), LOCK_EX);
		} else {
			wfWAFStorageFile::atomicFilePutContents($this->pathForConfig($category), self::LOG_FILE_HEADER . self::LOG_INFO_HEADER . serialize($this->data[$category]));
		}

		if (WFWAF_IS_WINDOWS) {
			$this->configFileHandles[$category] = fopen($this->pathForConfig($category), 'r+');
		}
	}

	/**
	 *
	 */
	public function uninstall() {
		$this->uninstalled = true;
		$this->close();
		foreach ($this->configFileHandles as $key => $handle) {
			$this->close($key);
		}
		$this->removeConfigFiles();
		@unlink($this->getAttackDataFile());
		@unlink($this->getIPCacheFile());
		@unlink($this->getRulesDSLCacheFile());
	}
	
	public function fileList() {
		$fileList = array();
		$fileList[] = $this->getAttackDataFile();
		$fileList[] = $this->getIPCacheFile();
		if (defined('WFWAF_DEBUG') && WFWAF_DEBUG) {
			$fileList[] = $this->getRulesDSLCacheFile();
		}
		$fileList[] = $this->getConfigFile();
		$configDir = dirname($this->getConfigFile());
		$dir = opendir($configDir);
		if ($dir) {
			$escapedPath = preg_quote($this->_normalizeSlashes($this->getConfigFile()), '/');
			$components = explode('\\/', $escapedPath);
			$pattern = $components[count($components) - 1];
			if (preg_match('/^(.+?)(\\\..+$|$)/i', $pattern, $matches)) {
				$pattern = $matches[1] . '\\-[a-z0-9]+' . $matches[2]; //Results in a pattern like config\-[a-z0-9]\.php
			}
			
			while ($path = readdir($dir)) {
				if ($path == '.' || $path == '..') { continue; }
				if (is_dir($configDir . '/' . $path)) { continue; }
				if (preg_match('/^' . $pattern . '$/i', $path)) {
					$fileList[] = $configDir . '/' . $path;
				}
			}
			closedir($dir);
		}
		return $fileList;
	}
	
	public function removeConfigFiles() {
		@unlink($this->getConfigFile());
		$configDir = dirname($this->getConfigFile());
		$dir = opendir($configDir);
		if ($dir) {
			$escapedPath = preg_quote($this->_normalizeSlashes($this->getConfigFile()), '/');
			$components = explode('\\/', $escapedPath);
			$pattern = $components[count($components) - 1];
			if (preg_match('/^(.+?)(\\\..+$|$)/i', $pattern, $matches)) {
				$pattern = $matches[1] . '\\-[a-z0-9]+' . $matches[2]; //Results in a pattern like config\-[a-z0-9]\.php
			}
			
			while ($path = readdir($dir)) {
				if ($path == '.' || $path == '..') { continue; }
				if (is_dir($configDir . '/' . $path)) { continue; }
				if (preg_match('/^' . $pattern . '$/i', $path)) {
					@unlink($configDir . '/' . $path);
				}
			}
			closedir($dir);
		}
	}
	
	public function regenerateConfigFile($category = '') {
		$path = $this->pathForConfig($category);
		if (file_exists($path)) {
			@unlink($path);
		}
		
		$this->_open($path, $this->configFileHandles, $category, self::LOG_FILE_HEADER . self::LOG_INFO_HEADER . serialize($this->getDefaultConfiguration($category)), false);
	}
	
	protected function _normalizeSlashes($path) {
		return str_replace('\\', '/', $path); //The same sanitation performed by WordPress -- PHP can handle both, but it simplifies path processing
	}

	/**
	 * @return bool
	 */
	public function isInLearningMode() {
		if ($this->getConfig('wafStatus', '') == 'learning-mode') {
			if ($this->getConfig('learningModeGracePeriodEnabled', false)) {
				if ($this->getConfig('learningModeGracePeriod', 0) > time()) {
					return true;
				}
			} else {
				return true;
			}
		}
		return false;
	}

	public function isDisabled() {
		return $this->getConfig('wafStatus', '') === 'disabled' || $this->getConfig('wafDisabled', 0);
	}

	/**
	 * @return array
	 */
	public function getDefaultConfiguration($category = '') {
		if (empty($category)) {
			return array(
				'wafStatus'                      => 'learning-mode',
				'learningModeGracePeriodEnabled' => 1,
				'learningModeGracePeriod'        => time() + (86400 * 7),
				'authKey'                        => wfWAFUtils::getRandomString(64),
			);
		}
		return array();
	}

	/**
	 * @return mixed
	 */
	public function getConfigFile() {
		return $this->configFile;
	}

	/**
	 * @param mixed $configFile
	 */
	public function setConfigFile($configFile) {
		$this->configFile = $configFile;
	}

	/**
	 * @return string|null
	 */
	public function getAttackDataFile() {
		return $this->attackDataFile;
	}

	/**
	 * @param string|null $attackDataFile
	 */
	public function setAttackDataFile($attackDataFile) {
		$this->attackDataFile = $attackDataFile;
	}

	/**
	 * @return string|null
	 */
	public function getIPCacheFile() {
		return $this->ipCacheFile;
	}

	/**
	 * @param string|null $ipCacheFile
	 */
	public function setIPCacheFile($ipCacheFile) {
		$this->ipCacheFile = $ipCacheFile;
	}

	/**
	 * @return mixed
	 */
	public function getRulesDSLCacheFile() {
		return $this->rulesDSLCacheFile;
	}

	/**
	 * @param mixed $rulesDSLCacheFile
	 */
	public function setRulesDSLCacheFile($rulesDSLCacheFile) {
		$this->rulesDSLCacheFile = $rulesDSLCacheFile;
	}

	/**
	 * param key, param value, request string
	 *
	 * @var array
	 */
	private $rowsToB64 = array(3, 4, 7);

	/**
	 * @param $row
	 * @return bool|string
	 */
	private function serializeRow($row) {
		foreach ($this->rowsToB64 as $index) {
			if (array_key_exists($index, $row)) {
				$row[$index] = base64_encode((string) $row[$index]);
			}
		}
		$row = wfWAFUtils::json_encode($row);
		if (is_string($row) && wfWAFUtils::strlen($row) > 0) {
			return $row;
		}
		return false;
	}

	/**
	 * @param $row
	 * @return array|bool|mixed|object
	 */
	private function unserializeRow($row) {
		if ($row) {
			$json = wfWAFUtils::json_decode($row, true);
			if (is_array($json)) {
				foreach ($this->rowsToB64 as $index) {
					if (array_key_exists($index, $json)) {
						$json[$index] = base64_decode((string) $json[$index]);
					}
				}
				return $json;
			}
		}
		return false;
	}

	/**
	 * @return wfWAFAttackDataStorageFileEngine
	 */
	public function getAttackDataEngine() {
		return $this->attackDataEngine;
	}

	/**
	 * @param wfWAFAttackDataStorageFileEngine $attackDataEngine
	 */
	public function setAttackDataEngine($attackDataEngine) {
		$this->attackDataEngine = $attackDataEngine;
	}

	public function getRules() {
		throw new wfWAFStorageFileException('wfWAFStorageFile::getRules not implemented.');
	}

	public function setRules($rules) {
		throw new wfWAFStorageFileException('wfWAFStorageFile::getRules not implemented.');
	}

	public function needsInitialRules() {
		if (file_exists($this->getRulesFile())) {
			return is_writeable($this->getRulesFile()) && !filesize($this->getRulesFile());
		} else {
			return is_writeable(dirname($this->getRulesFile()));
		}
	}

	/**
	 * @return mixed
	 */
	public function getRulesFile() {
		return $this->rulesFile;
	}

	/**
	 * @param mixed $rulesFile
	 */
	public function setRulesFile($rulesFile) {
		$this->rulesFile = $rulesFile;
	}

	public function getDescription() {
		return __('file system', 'wordfence');
	}
}

class wfWAFAttackDataStorageFileEngine {

	const MAX_ROWS = 10000;
	const MAX_READ_LENGTH = 51200;
	const FILE_SIGNATURE = "wfWAF\x00\x00\x00";

	/**
	 * @param string|float|null $microtime
	 * @return string
	 */
	public static function packMicrotime($microtime = null) {
		if ($microtime === null) {
			$microtime = microtime();
		}
		if (is_string($microtime)) {
			list($msec, $sec) = explode(' ', $microtime, 2);
		} else if (is_float($microtime)) {
			list($sec, $msec) = explode('.', (string) $microtime, 2);
			$msec = '0.' . $msec;
		} else {
			throw new InvalidArgumentException(__METHOD__ . ' $microtime expected to be string or float, received '
				. gettype($microtime));
		}
		$msec = $msec * 1000000;
		return pack('V*', $sec, $msec);
	}

	/**
	 * @param string $binary
	 * @return string
	 */
	public static function unpackMicrotime($binary) {
		if (!is_string($binary) || wfWAFUtils::strlen($binary) !== 8) {
			throw new InvalidArgumentException(__METHOD__ . ' $binary expected to be string with length of 8, received '
				. gettype($binary) . (is_string($binary) ? ' of length ' . wfWAFUtils::strlen($binary) : ''));
		}
		list(, $attackLogSeconds, $attackLogMicroseconds) = @unpack('V*', $binary);
		return sprintf('%d.%s', $attackLogSeconds, str_pad($attackLogMicroseconds, 6, '0', STR_PAD_LEFT));
	}

	public static function getCompressionAlgos() {
		static $compressionFunctions;
		if ($compressionFunctions === null) {
			$compressionFunctions = array(
				new wfWAFStorageFileCompressionGZDeflate(),
				new wfWAFStorageFileCompressionGZCompress(),
				new wfWAFStorageFileCompressionGZEncode(),
			);
		}
		return $compressionFunctions;
	}

	/**
	 * @param string $decompressed
	 * @return mixed
	 */
	public static function compress($decompressed) {
		if (empty($decompressed))
			return $decompressed;

		$compressionAlgos = self::getCompressionAlgos();
		/** @var wfWAFStorageFileCompressionAlgo $algo */
		foreach ($compressionAlgos as $algo) {
			if ($algo->isUsable() && ($compressed = $algo->testCompression($decompressed)) !== false) {
				return $compressed;
			}
		}
		return $decompressed;
	}

	/**
	 * @param string $compressed
	 * @return mixed
	 */
	public static function decompress($compressed) {
		if (empty($compressed))
			return $compressed;

		$compressionAlgos = self::getCompressionAlgos();
		/** @var wfWAFStorageFileCompressionAlgo $algo */
		foreach ($compressionAlgos as $algo) {
			if ($algo->isUsable() && ($decompressed = $algo->decompress($compressed)) !== false) {
				return $decompressed;
			}
		}
		return $compressed;
	}


	private $file;
	private $fileHandle;

	private $header = array();
	private $offsetTable = array();

	/**
	 * wfWAFStorageFileEngine constructor.
	 * @param string $file
	 */
	public function __construct($file) {
		$this->file = $file;
	}

	/**
	 * @throws wfWAFStorageFileException
	 */
	public function open() {
		if (is_resource($this->fileHandle)) {
			return;
		}
		if (!file_exists($this->file)) {
			@file_put_contents($this->file, $this->getDefaultHeader(), LOCK_EX);
		}
		if (wfWAFStorageFile::allowFileWriting()) {
			@chmod($this->file, wfWAFStorageFile::permissions());
		}
		$this->fileHandle = @fopen($this->file, 'r+');
		if (!$this->fileHandle) {
			throw new wfWAFStorageFileException('Unable to open ' . $this->file . ' for reading and writing.');
		}
	}

	/**
	 *
	 */
	public function close() {
		if (is_resource($this->fileHandle)) {
			fclose($this->fileHandle);
		}
		$this->fileHandle = null;
		$this->header = array();
		$this->offsetTable = array();
	}

	/**
	 * @param int $offset
	 * @return int
	 */
	private function seek($offset) {
		return fseek($this->fileHandle, $offset, SEEK_SET);
	}

	/**
	 * @return int
	 */
	private function seekToData() {
		return $this->seek(wfWAFUtils::strlen($this->getHeaderLength()));
	}

	/**
	 * @param int $length
	 * @return string
	 */
	private function read($length) {
		if ($length > self::MAX_READ_LENGTH) {
			$length = self::MAX_READ_LENGTH;
		}
		return fread($this->fileHandle, $length);
	}

	/**
	 * @param string $data
	 * @return int
	 */
	private function write($data) {
		return fwrite($this->fileHandle, $data);
	}

	/**
	 * @return bool
	 */
	private function lockRead() {
		return wfWAFStorageFile::lock($this->fileHandle, LOCK_SH);
	}

	/**
	 * @return bool
	 */
	private function lockWrite() {
		return wfWAFStorageFile::lock($this->fileHandle, LOCK_EX);
	}

	/**
	 * @return bool
	 */
	private function unlock() {
		return wfWAFStorageFile::lock($this->fileHandle, LOCK_UN);
	}

	/**
	 * @return int
	 */
	public function getHeaderLength() {
		return wfWAFUtils::strlen($this->getDefaultHeader());
	}

	/**
	 * @return string
	 */
	public function getDefaultHeader() {
		/**
		 * 51   PHP die() header
		 * 8    Signature
		 * 8    oldest 64bit timestamp
		 * 8    newest 64bit timestamp
		 * 4    row count
		 * 1600 offset table
		 * 1    last length
		 */
		$headerLength = wfWAFUtils::strlen(wfWAFStorageFile::LOG_FILE_HEADER) + wfWAFUtils::strlen(self::FILE_SIGNATURE)
			+ 8 + 8 + 4 + (self::MAX_ROWS * 4);
		return wfWAFStorageFile::LOG_FILE_HEADER
		. self::FILE_SIGNATURE
		. str_repeat("\x00", 8 + 8 + 4)
		. pack('V', $headerLength)
		. str_repeat("\x00", self::MAX_ROWS * 4);
	}

	/**
	 * @throws wfWAFStorageFileException
	 */
	public function unpackHeader() {
		if ($this->header) {
			return $this->header;
		}

		$this->open();
		$this->header = array();
		$this->seek(0);
		$this->lockRead();
		$this->header['phpHeader'] = $this->read(wfWAFUtils::strlen(wfWAFStorageFile::LOG_FILE_HEADER));
		$this->header['signature'] = $this->read(wfWAFUtils::strlen(self::FILE_SIGNATURE));
		if ($this->header['phpHeader'] !== wfWAFStorageFile::LOG_FILE_HEADER || $this->header['signature'] !== self::FILE_SIGNATURE) {
			$this->unlock();
			$this->truncate();
			$this->lockRead();
			$this->seek(0);
			$this->lockRead();
			$this->header['phpHeader'] = $this->read(wfWAFUtils::strlen(wfWAFStorageFile::LOG_FILE_HEADER));
			$this->header['signature'] = $this->read(wfWAFUtils::strlen(self::FILE_SIGNATURE));
		}
		$this->header['oldestTimestamp'] = self::unpackMicrotime($this->read(8));
		$this->header['newestTimestamp'] = self::unpackMicrotime($this->read(8));
		list(, $this->header['rowCount']) = @unpack('V', $this->read(4));
		$this->header['offsetTable'] = $this->unpackOffsetTable();
		$this->unlock();
		return $this->header;
	}

	/**
	 * @return array
	 */
	private function unpackOffsetTable() {
		if ($this->offsetTable) {
			return $this->offsetTable;
		}
		$rowCount = min($this->header['rowCount'], self::MAX_ROWS);
		$this->seek(wfWAFUtils::strlen(wfWAFStorageFile::LOG_FILE_HEADER) + wfWAFUtils::strlen(self::FILE_SIGNATURE) + 8 + 8 + 4);
		$offsetTableBinary = $this->read(($rowCount + 1) * 4);
		$this->offsetTable = array_values(@unpack('V*', $offsetTableBinary));
		return $this->offsetTable;
	}

	/**
	 * @param callable $callback
	 */
	public function scanRows($callback) {
		if (!is_callable($callback)) {
			throw new InvalidArgumentException(__METHOD__ . ' $callback expected to be callable, received ' . gettype($callback));
		}
		$this->open();
		$header = $this->unpackHeader();
		$this->seekToData();
		for ($index = 0; $index < $header['rowCount'] && $index < self::MAX_ROWS; $index++) {
			$offset = $header['offsetTable'][$index];
			$length = $header['offsetTable'][$index + 1] - $offset;
			if ($length > self::MAX_READ_LENGTH) {
				$length = self::MAX_READ_LENGTH;
			}
			$result = call_user_func($callback, $this->fileHandle, $offset, $length);
			if ($result === false) {
				break;
			}
		}
	}

	/**
	 * @param callable $callback
	 */
	public function scanRowsReverse($callback) {
		if (!is_callable($callback)) {
			throw new InvalidArgumentException(__METHOD__ . ' $callback expected to be callable, received ' . gettype($callback));
		}
		$this->open();
		$header = $this->unpackHeader();
		// $this->seekToData();
		for ($index = min($header['rowCount'], self::MAX_ROWS) - 1; $index >= 0; $index--) {
			$offset = $header['offsetTable'][$index];
			$length = $header['offsetTable'][$index + 1] - $offset;
			if ($length > self::MAX_READ_LENGTH) {
				$length = self::MAX_READ_LENGTH;
			}
			$result = call_user_func($callback, $this->fileHandle, $offset, $length);
			if ($result === false) {
				break;
			}
		}
	}

	/**
	 * @param $index
	 * @return wfWAFAttackDataStorageFileEngineRow
	 * @throws wfWAFStorageFileException
	 */
	public function getRow($index) {
		$this->open();
		$this->header = array();
		$this->offsetTable = array();
		$header = $this->unpackHeader();
		$this->seekToData();
		if ($index < $header['rowCount'] && $index >= 0) {
			$offset = $header['offsetTable'][$index];
			$length = $header['offsetTable'][$index + 1] - $offset;
		} else {
			return false;
		}
		$this->seek($offset);
		$this->lockRead();
		$binary = $this->read($length);
		$this->unlock();
		return wfWAFAttackDataStorageFileEngineRow::unpack($binary);
	}

	/**
	 * @return mixed
	 * @throws wfWAFStorageFileException
	 */
	public function getRowCount() {
		$this->open();
		$header = $this->unpackHeader();
		return $header['rowCount'];
	}

	/**
	 * @param wfWAFAttackDataStorageFileEngineRow $row
	 * @return bool
	 * @throws wfWAFStorageFileException
	 */
	public function addRow($row) {
		if (!wfWAFStorageFile::allowFileWriting()) { return false; }
		
		$this->open();

		$this->seek(wfWAFUtils::strlen(wfWAFStorageFile::LOG_FILE_HEADER) + wfWAFUtils::strlen(self::FILE_SIGNATURE) + 8 + 8);
		$this->lockRead();
		list(, $rowCount) = @unpack('V', $this->read(4));
		$this->unlock();
		if ($rowCount >= self::MAX_ROWS) {
			return false;
		}
		
		$this->lockWrite();
		
		//Re-read the row count in case it changed between releasing the shared lock and getting the exclusive
		$this->seek(wfWAFUtils::strlen(wfWAFStorageFile::LOG_FILE_HEADER) + wfWAFUtils::strlen(self::FILE_SIGNATURE) + 8 + 8);
		list(, $rowCount) = @unpack('V', $this->read(4));

		//Start the write
		$this->header = array();
		$this->offsetTable = array();

		$this->seek(wfWAFUtils::strlen(wfWAFStorageFile::LOG_FILE_HEADER) + wfWAFUtils::strlen(self::FILE_SIGNATURE) + 8 + 8 + 4 + ($rowCount * 4));
		list(, $nextRowOffset) = @unpack('V', $this->read(4));

		$rowString = $row->pack();

		// Update offset table
		$this->seek(wfWAFUtils::strlen(wfWAFStorageFile::LOG_FILE_HEADER) + wfWAFUtils::strlen(self::FILE_SIGNATURE) + 8 + 8 + 4 + (($rowCount + 1) * 4));
		$this->write(pack('V', $nextRowOffset + wfWAFUtils::strlen($rowString)));

		// Update rowCount
		$this->seek(wfWAFUtils::strlen(wfWAFStorageFile::LOG_FILE_HEADER) + wfWAFUtils::strlen(self::FILE_SIGNATURE) + 8 + 8);
		$this->write(pack('V', $rowCount + 1));

		// Write data
		$this->seek($nextRowOffset);
		$packedTimestamp = wfWAFUtils::substr($rowString, 0, 8);
		$this->write($rowString);

		// Update oldest timestamp
		if ($rowCount === 0) {
			$this->seek(wfWAFUtils::strlen(wfWAFStorageFile::LOG_FILE_HEADER) + wfWAFUtils::strlen(self::FILE_SIGNATURE));
			$this->write($packedTimestamp);
		}

		// Update newest timestamp
		$this->seek(wfWAFUtils::strlen(wfWAFStorageFile::LOG_FILE_HEADER) + wfWAFUtils::strlen(self::FILE_SIGNATURE) + 8);
		$this->write($packedTimestamp);

		$this->unlock();

		$this->header = array();
		$this->offsetTable = array();

		return true;
	}

	/**
	 *
	 */
	public function truncate() {
		if (!wfWAFStorageFile::allowFileWriting()) { return false; }
		
		$defaultHeader = $this->getDefaultHeader();
		$this->close();
		if (WFWAF_IS_WINDOWS) {
			file_put_contents($this->getFile(), $defaultHeader, LOCK_EX);
		} else {
			wfWAFStorageFile::atomicFilePutContents($this->getFile(), $defaultHeader, 'attack');
		}
		$this->header = array();
		$this->offsetTable = array();
		$this->open();
	}

	/**
	 * @return mixed
	 * @throws wfWAFStorageFileException
	 */
	public function getOldestTimestamp() {
		$this->open();
		if ($this->getRowCount() === 0) {
			return false;
		}
		$header = $this->unpackHeader();
		return $header['oldestTimestamp'];
	}

	/**
	 * @return mixed
	 * @throws wfWAFStorageFileException
	 */
	public function getNewestTimestamp() {
		$this->open();
		if ($this->getRowCount() === 0) {
			return false;
		}
		$header = $this->unpackHeader();
		return $header['newestTimestamp'];
	}

	/**
	 * @return string
	 */
	public function getFile() {
		return $this->file;
	}

	/**
	 * @param string $file
	 */
	public function setFile($file) {
		$this->file = $file;
	}
}

interface wfWAFAttackDataStorageFileEngineScanRowCallback {

	public function scanRow($handle, $offset, $length);
}

class wfWAFAttackDataStorageFileEngineResultSet implements wfWAFAttackDataStorageFileEngineScanRowCallback {

	private $rows = array();

	public function scanRow($handle, $offset, $length) {
		fseek($handle, $offset);
		$binary = fread($handle, $length);
		$this->rows = wfWAFAttackDataStorageFileEngineRow::unpack($binary);
	}

	/**
	 * @return array
	 */
	public function getRows() {
		return $this->rows;
	}
}

class wfWAFAttackDataStorageFileEngineScanRowAttackDataNewer implements wfWAFAttackDataStorageFileEngineScanRowCallback {

	/**
	 * @var int
	 */
	private $newerThan;

	/**
	 * wfWAFStorageFileEngineScanRowAttackDataNewer constructor.
	 * @param int $newerThan
	 */
	public function __construct($newerThan) {
		$this->newerThan = $newerThan;
	}

	/**
	 * @param resource $handle
	 * @param int $offset
	 * @param int $length
	 * @return bool
	 */
	public function scanRow($handle, $offset, $length) {
		$attackLogTimeBin = fread($handle, 8);
		list(, $attackLogSeconds, $attackLogMicroseconds) = @unpack('VV', $attackLogTimeBin);
		$attackLogTime = $attackLogSeconds . '.' . $attackLogMicroseconds;
		return $this->newerThan < $attackLogTime;
	}
}

class wfWAFAttackDataStorageFileEngineScanRowAttackDataOlder implements wfWAFAttackDataStorageFileEngineScanRowCallback {

	/**
	 * @var int
	 */
	private $olderThan;

	/**
	 * wfWAFStorageFileEngineScanRowAttackDataNewer constructor.
	 * @param int $olderThan
	 */
	public function __construct($olderThan) {
		$this->olderThan = $olderThan;
	}

	/**
	 * @param resource $handle
	 * @param int $offset
	 * @param int $length
	 * @return bool
	 */
	public function scanRow($handle, $offset, $length) {
		$attackLogTimeBin = fread($handle, 8);
		list(, $attackLogSeconds, $attackLogMicroseconds) = @unpack('VV', $attackLogTimeBin);
		$attackLogTime = $attackLogSeconds . '.' . $attackLogMicroseconds;
		return $this->olderThan > $attackLogTime;
	}
}

class wfWAFAttackDataStorageFileEngineRow {

	/**
	 * @param string $binary
	 * @return wfWAFAttackDataStorageFileEngineRow
	 */
	public static function unpack($binary) {
		$attackLogTime = wfWAFAttackDataStorageFileEngine::unpackMicrotime(wfWAFUtils::substr($binary, 0, 8));
		$data = wfWAFAttackDataStorageFileEngine::decompress(wfWAFUtils::substr($binary, 8));
		return new self($attackLogTime, $data);
	}

	/**
	 * @var float|string
	 */
	private $timestamp;
	/**
	 * @var string
	 */
	private $data;

	/**
	 * @param float $timestamp
	 * @param string $data
	 */
	public function __construct($timestamp, $data) {
		$this->timestamp = $timestamp;
		$this->data = $data;
	}

	/**
	 * @return string
	 */
	public function pack() {
		return wfWAFAttackDataStorageFileEngine::packMicrotime($this->getTimestamp()) . wfWAFAttackDataStorageFileEngine::compress($this->getData());
	}

	/**
	 * @return float|string
	 */
	public function getTimestamp() {
		return $this->timestamp;
	}

	/**
	 * @param float|string $timestamp
	 */
	public function setTimestamp($timestamp) {
		$this->timestamp = $timestamp;
	}

	/**
	 * @return string
	 */
	public function getData() {
		return $this->data;
	}

	/**
	 * @param string $data
	 */
	public function setData($data) {
		$this->data = $data;
	}
}

abstract class wfWAFStorageFileCompressionAlgo {

	abstract public function isUsable();

	abstract public function compress($string);

	abstract public function decompress($binary);

	/**
	 * @param string $string
	 * @return bool
	 */
	public function testCompression($string) {
		$compressed = $this->compress($string);
		if ($string === $this->decompress($compressed)) {
			return $compressed;
		}
		return false;
	}
}

class wfWAFStorageFileCompressionGZDeflate extends wfWAFStorageFileCompressionAlgo {

	public function isUsable() {
		return function_exists('gzinflate') && function_exists('gzdeflate');
	}

	public function compress($string) {
		return @gzdeflate($string);
	}

	public function decompress($binary) {
		return @gzinflate($binary);
	}
}

class wfWAFStorageFileCompressionGZCompress extends wfWAFStorageFileCompressionAlgo {

	public function isUsable() {
		return function_exists('gzuncompress') && function_exists('gzcompress');
	}

	public function compress($string) {
		return @gzcompress($string);
	}

	public function decompress($binary) {
		return @gzuncompress($binary);
	}
}

class wfWAFStorageFileCompressionGZEncode extends wfWAFStorageFileCompressionAlgo {

	public function isUsable() {
		return function_exists('gzencode') && function_exists('gzdecode');
	}

	public function compress($string) {
		return @gzencode($string);
	}

	public function decompress($binary) {
		return @gzdecode($binary);
	}
}

class wfWAFStorageFileException extends wfWAFException {

}

class wfWAFStorageFileConfigException extends wfWAFStorageFileException {

}
}vendor/wordfence/wf-waf/src/falsepositive.key000064400000000702150755146450015375 0ustar00-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnFI0faZb9T1jloaRMw4g
G/tW2CnYwYTpmXuQCphIrM6rYvjptYtlJBzy370sQovLIzHBiqAYc3Rv5FJBDQ0F
mTR/iF3Tm8YmxjqSuHECn8Q6KSPvaZyQFSM8vUmFjwVtTKgEjo4rFVrne8OOvQ4S
FRvWbeBvxoO6SfLArLK+hJAZSMRyzzfsNL1q5okZqLHQhdtkiFfPWJkXIEhL+vUK
U5SLZoFIh9hVImmJuXHBQ0qXRnTCQlpb80GrMD1CBYFFeHx8IOCZwWZ2ifIPL5n+
vxjZ30zH3DDhcwhQv3y2hJsedJ7w+7I7gs/jmECUG36rbGbpaXrQnwhaiGBdRoiv
awIDAQAB
-----END PUBLIC KEY-----vendor/wordfence/wf-waf/src/rules.key000064400000000702150755146450013652 0ustar00-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzovUDp/qu7r6LT5d8dLL
H/87aRrCjUd6XtnG+afAPVfMKNp4u4L+UuYfw1RfpfquP/zLMGdfmJCUp/oJywkW
Rkqo+y7pDuqIFQ59dHvizmYQRvaZgvincBDpey5Ek9AFfB9fqYYnH9+eQw8eLdQi
h6Zsh8RsuxFM2BW6JD9Km7L5Lyxw9jU+lye7I3ICYtUOVxc3n3bJT2SiIwHK57pW
g/asJEUDiYQzsaa90YPOLdf1Ysz2rkgnCduQaEGz/RPhgUrmZfKwq8puEmkh7Yee
auEa+7b+FGTKs7dUo2BNGR7OVifK4GZ8w/ajS0TelhrSRi3BBQCGXLzUO/UURUAh
1QIDAQAB
-----END PUBLIC KEY-----vendor/wordfence/wf-waf/src/views/403-roadblock.php000064400000030021150755146450016115 0ustar00<?php
if (!defined('WFWAF_VIEW_RENDERING')) { exit; }

/** @var wfWAF $waf */
/** @var wfWAFView $this */

/*
 * IMPORTANT:
 * 
 * If the form variables below change name or format, admin.ajaxWatcher.js in the main plugin also needs changed. It
 * processes these to generate its whitelist button.
 */

$method = wfWAFUtils::strtolower($waf->getRequest()->getMethod());
$urlParamsToWhitelist = array();
foreach ($waf->getFailedRules() as $paramKey => $categories) {
	foreach ($categories as $category => $failedRules) {
		foreach ($failedRules as $failedRule) {
			/**
			 * @var wfWAFRule $rule
			 * @var wfWAFRuleComparisonFailure $failedComparison
			 */
			$rule = $failedRule['rule'];
			$failedComparison = $failedRule['failedComparison'];

			$urlParamsToWhitelist[] = array(
				'path'     => $waf->getRequest()->getPath(),
				'paramKey' => $failedComparison->getParamKey(),
				'ruleID'   => $rule->getRuleID(),
			);
		}
	}
}


?>
<!DOCTYPE html>
<html>
<head>
	<title><?php wfWAFI18n::esc_html_e('403 Forbidden') ?></title>
	<style>
		html {
			font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
			font-size: 0.875rem;
			line-height: 1.42857143;
			color: #333;
			background-color: #fff;
			padding: 0;
			margin: 0;
		}

		body {
			padding: 0;
			margin: 0;
		}

		a {
			color:#00709e;
		}

		h1, h2, h3, h4, h5, h6 {
			font-weight: 200;
			line-height: 1.1;
		}

		h1, .h1 { font-size: 3rem; }
		h2, .h2 { font-size: 2.5rem; }
		h3, .h3 { font-size: 1.5rem; }
		h4, .h4 { font-size: 1rem; }
		h5, .h5 { font-size: 0.875rem; }
		h6, .h6 { font-size: 0.75rem; }

		h1, h2, h3 {
			margin-top: 20px;
			margin-bottom: 10px;
		}
		h4, h5, h6 {
			margin-top: 10px;
			margin-bottom: 10px;
		}

		.wf-btn {
			display: inline-block;
			margin-bottom: 0;
			font-weight: normal;
			text-align: center;
			vertical-align: middle;
			touch-action: manipulation;
			cursor: pointer;
			background-image: none;
			border: 1px solid transparent;
			white-space: nowrap;
			text-transform: uppercase;
			padding: .4rem 1rem;
			font-size: .875rem;
			line-height: 1.3125rem;
			border-radius: 4px;
			-webkit-user-select: none;
			-moz-user-select: none;
			-ms-user-select: none;
			user-select: none
		}

		@media (min-width: 768px) {
			.wf-btn {
				padding: .5rem 1.25rem;
				font-size: .875rem;
				line-height: 1.3125rem;
				border-radius: 4px
			}
		}

		.wf-btn:focus,
		.wf-btn.wf-focus,
		.wf-btn:active:focus,
		.wf-btn:active.wf-focus,
		.wf-btn.wf-active:focus,
		.wf-btn.wf-active.wf-focus {
			outline: 5px auto -webkit-focus-ring-color;
			outline-offset: -2px
		}

		.wf-btn:hover,
		.wf-btn:focus,
		.wf-btn.wf-focus {
			color: #00709e;
			text-decoration: none
		}

		.wf-btn:active,
		.wf-btn.wf-active {
			outline: 0;
			background-image: none;
			-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
			box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125)
		}

		.wf-btn.wf-disabled,
		.wf-btn[disabled],
		.wf-btn[readonly],
		fieldset[disabled] .wf-btn {
			cursor: not-allowed;
			-webkit-box-shadow: none;
			box-shadow: none
		}

		a.wf-btn {
			text-decoration: none
		}

		a.wf-btn.wf-disabled,
		fieldset[disabled] a.wf-btn {
			cursor: not-allowed;
			pointer-events: none
		}

		.wf-btn-default {
			color: #00709e;
			background-color: #fff;
			border-color: #00709e
		}

		.wf-btn-default:focus,
		.wf-btn-default.focus {
			color: #00709e;
			background-color: #e6e6e6;
			border-color: #00161f
		}

		.wf-btn-default:hover {
			color: #00709e;
			background-color: #e6e6e6;
			border-color: #004561
		}

		.wf-btn-default:active,
		.wf-btn-default.active {
			color: #00709e;
			background-color: #e6e6e6;
			border-color: #004561
		}

		.wf-btn-default:active:hover,
		.wf-btn-default:active:focus,
		.wf-btn-default:active.focus,
		.wf-btn-default.active:hover,
		.wf-btn-default.active:focus,
		.wf-btn-default.active.focus {
			color: #00709e;
			background-color: #d4d4d4;
			border-color: #00161f
		}

		.wf-btn-default:active,
		.wf-btn-default.wf-active {
			background-image: none
		}

		.wf-btn-default.wf-disabled,
		.wf-btn-default[disabled],
		.wf-btn-default[readonly],
		fieldset[disabled] .wf-btn-default {
			color: #777;
			background-color: #fff;
			border-color: #e2e2e2;
			cursor: not-allowed
		}

		.wf-btn-default.wf-disabled:hover,
		.wf-btn-default.wf-disabled:focus,
		.wf-btn-default.wf-disabled.wf-focus,
		.wf-btn-default[disabled]:hover,
		.wf-btn-default[disabled]:focus,
		.wf-btn-default[disabled].wf-focus,
		.wf-btn-default[readonly]:hover,
		.wf-btn-default[readonly]:focus,
		.wf-btn-default[readonly].wf-focus,
		fieldset[disabled] .wf-btn-default:hover,
		fieldset[disabled] .wf-btn-default:focus,
		fieldset[disabled] .wf-btn-default.wf-focus {
			background-color: #fff;
			border-color: #00709e
		}

		input[type="text"], input.wf-input-text {
			text-align: left;
			max-width: 200px;
			height: 30px;
			border-radius: 0;
			border: 0;
			background-color: #ffffff;
			box-shadow: 0px 0px 0px 1px rgba(215,215,215,0.65);
			padding: 0.25rem;
		}

		hr {
			margin-top: 1rem;
			margin-bottom: 1rem;
			border: 0;
			border-top: 4px solid #eee
		}

		p {
			font-size: 1.4rem;
			font-weight: 300;
		}

		p.medium, div.medium p {
			font-size: 1.1rem;
		}

		p.small, div.small p {
			font-size: 1rem;
		}

		.container {
			max-width: 900px;
			padding: 0 1rem;
			margin: 0 auto;
		}

		.top-accent {
			height: 25px;
			background-color: #00709e;
		}

		.block-data {
			width: 100%;
			border-top: 6px solid #00709e;
		}

		.block-data tr:nth-child(odd) th, .block-data tr:nth-child(odd) td {
			background-color: #eeeeee;
		}

		.block-data th, .block-data td {
			text-align: left;
			padding: 1rem;
			font-size: 1.1rem;
		}

		.block-data th.reason, .block-data td.reason {
			color: #930000;
		}

		.block-data th {
			font-weight: 300;
		}

		.block-data td {
			font-weight: 500;
		}

		.about {
			margin-top: 2rem;
			display: flex;
			flex-direction: row;
			align-items: stretch;
		}

		.about .badge {
			flex-basis: 116px;
			flex-grow: 0;
			flex-shrink: 0;
			display: flex;
			align-items: center;
			justify-content: flex-start;
		}

		.about svg {
			width: 100px;
			height: 100px;

		}

		.about-text {
			background-color: #00709e;
			color: #ffffff;
			padding: 1rem;
		}

		.about-text .h4 {
			font-weight: 500;
			margin-top: 0;
			margin-bottom: 0.25rem;
			font-size: 0.875rem;
		}

		.about-text p {
			font-size: 0.875rem;
			font-weight: 200;
			margin-top: 0.3rem;
			margin-bottom: 0.3rem;
		}

		.about-text p:first-of-type {
			margin-top: 0;
		}

		.about-text p:last-of-type {
			margin-bottom: 0;
		}

		.st0{fill:#00709e;}
		.st1{fill:#FFFFFF;}

		.generated {
			color: #999999;
			margin-top: 2rem;
		}
	</style>
</head>
<body>
<?php if (!empty($errorNonce)) { echo '<!-- WFWAF NONCE: ' . htmlspecialchars($errorNonce) . ' -->'; } ?>
<div class="top-accent"></div>
<div class="container">
	<h1><?php wfWAFI18n::esc_html_e('A potentially unsafe operation has been detected in your request to this site') ?></h1>
	<p><?php wfWAFI18n::esc_html_e('Your access to this service has been limited. (HTTP response code 403)') ?></p>
	<p><?php wfWAFI18n::esc_html_e('If you think you have been blocked in error, contact the owner of this site for assistance.') ?></p>
	<?php if (!empty($customText)): ?>
		<hr>
		<div class="medium"><?php echo $customText; ?></div>
	<?php endif; ?>
	<?php if ($urlParamsToWhitelist): ?>
		<hr>
		<p><?php wfWAFI18n::esc_html_e('If you are an administrator and you are certain this is a false positive, you can automatically allowlist this request and repeat the same action.') ?></p>

		<form id="whitelist-form" action="<?php echo htmlentities($waf->getRequest()->getPath(), ENT_QUOTES, 'utf-8') ?>" method="post">
			<input type="hidden" name="wfwaf-false-positive-params" value="<?php echo htmlentities(wfWAFUtils::json_encode($urlParamsToWhitelist), ENT_QUOTES, 'utf-8') ?>">
			<input type="hidden" name="wfwaf-false-positive-nonce" value="<?php echo htmlentities($waf->getAuthCookieValue('nonce', ''), ENT_QUOTES, 'utf-8') ?>">

			<div id="whitelist-actions">
				<p><label><input id="verified-false-positive-checkbox" type="checkbox" name="wfwaf-false-positive-verified" value="1"> <em><?php wfWAFI18n::esc_html_e('I am certain this is a false positive.') ?></em></label></p>

				<p><button id="whitelist-button" type="submit"><?php wfWAFI18n::esc_html_e('Allowlist This Action') ?></button></p>
			</div>

			<p id="success" style="color: #35b13a; font-weight: bold; display: none"><em><?php wfWAFI18n::esc_html_e('All set! You can refresh the page to try this action again.') ?></em></p>
			<p id="error" style="color: #dd422c; font-weight: bold; display: none"><em><?php wfWAFI18n::esc_html_e('Something went wrong allowlisting this request. You can try setting the Firewall Status to Learning Mode under Web Application Firewall in the Wordfence menu, and retry this same action.') ?></em></p>
		</form>
		<script>
			var whitelistButton = document.getElementById('whitelist-button');
			var verified = document.getElementById('verified-false-positive-checkbox');
			verified.checked = false;
			verified.onclick = function() {
				whitelistButton.disabled = !this.checked;
			};
			verified.onclick();

			document.getElementById('whitelist-form').onsubmit = function(evt) {
				evt.preventDefault();
				var request = new XMLHttpRequest();
				request.addEventListener("load", function() {
					if (this.status === 200 && this.responseText.indexOf('Successfully allowlisted') > -1) {
						document.getElementById('whitelist-actions').style.display = 'none';
						document.getElementById('success').style.display = 'block';
					} else {
						document.getElementById('error').style.display = 'block';
					}
				});
				request.open("POST", this.action, true);
				request.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
				var inputs = this.querySelectorAll('input[name]');
				var data = '';
				for (var i = 0; i < inputs.length; i++) {
					data += encodeURIComponent(inputs[i].name) + '=' + encodeURIComponent(inputs[i].value) + '&';
				}
				request.send(data);
				return false;
			};


		</script>
		<hr>
	<?php endif ?>

	<h2 class="h3"><?php wfWAFI18n::esc_html_e('Block Technical Data') ?></h2>
	<table border="0" cellspacing="0" cellpadding="0" class="block-data">
		<tr>
			<th class="reason"><?php wfWAFI18n::esc_html_e('Block Reason:') ?></th>
			<td class="reason"><?php wfWAFI18n::esc_html_e('A potentially unsafe operation has been detected in your request to this site') ?></td>
		</tr>
		<tr>
			<th class="time"><?php wfWAFI18n::esc_html_e('Time:') ?></th>
			<td class="time"><?php echo htmlspecialchars(gmdate('D, j M Y G:i:s T', wfWAFUtils::normalizedTime())); ?></td>
		</tr>
	</table>

	<div class="about">
		<div class="badge">
			<?php
			$contents = file_get_contents(dirname(__FILE__) . '/../../../../../images/wf-error-badge.svg');
			$contents = preg_replace('/^<\?xml.+?\?>\s*/i', '', $contents);
			$contents = preg_replace('/^<!DOCTYPE.+?>\s*/i', '', $contents);
			$contents = preg_replace('/<svg\s+xmlns="[^"]*"/i', '<svg', $contents);
			echo $contents;
			?>
		</div>
		<div class="about-text">
			<h3 class="h4"><?php wfWAFI18n::esc_html_e('About Wordfence') ?></h3>
			<p><?php wfWAFI18n::esc_html_e('Wordfence is a security plugin installed on over 5 million WordPress sites. The owner of this site is using Wordfence to manage access to their site.') ?></p>
			<p><?php wfWAFI18n::esc_html_e('You can also read the documentation to learn about Wordfence\'s blocking tools, or visit wordfence.com to learn more about Wordfence.') ?></p>
		</div>
	</div>

	<p class="documentation small"><?php wfWAFI18n::esc_html_e('Click here to learn more: '); ?><a href="https://www.wordfence.com/help/?query=locked-out" target="_blank" rel="noopener noreferrer"><?php wfWAFI18n::esc_html_e('Documentation') ?></a></p>
	<p class="generated small"><em><?php printf(wfWAFI18n::esc_html__('Generated by Wordfence at %s.'), gmdate('D, j M Y G:i:s T', wfWAFUtils::normalizedTime())) ?><br><?php wfWAFI18n::esc_html_e('Your computer\'s time: ') ?><script type="application/javascript">document.write(new Date().toUTCString());</script>.</em></p>
</div>
</body>
</html>vendor/wordfence/wf-waf/src/views/503.php000064400000023051150755146450014165 0ustar00<?php
if (!defined('WFWAF_VIEW_RENDERING')) { exit; }
?>
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title><?php wfWAFI18n::esc_html_e('Your access to this site has been limited by the site owner') ?></title>
	<style>
		html {
			font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
			font-size: 0.875rem;
			line-height: 1.42857143;
			color: #333;
			background-color: #fff;
			padding: 0;
			margin: 0;
		}

		body {
			padding: 0;
			margin: 0;
		}

		a {
			color:#00709e;
		}

		h1, h2, h3, h4, h5, h6 {
			font-weight: 200;
			line-height: 1.1;
		}

		h1, .h1 { font-size: 3rem; }
		h2, .h2 { font-size: 2.5rem; }
		h3, .h3 { font-size: 1.5rem; }
		h4, .h4 { font-size: 1rem; }
		h5, .h5 { font-size: 0.875rem; }
		h6, .h6 { font-size: 0.75rem; }

		h1, h2, h3 {
			margin-top: 20px;
			margin-bottom: 10px;
		}
		h4, h5, h6 {
			margin-top: 10px;
			margin-bottom: 10px;
		}

		.wf-btn {
			display: inline-block;
			margin-bottom: 0;
			font-weight: normal;
			text-align: center;
			vertical-align: middle;
			touch-action: manipulation;
			cursor: pointer;
			background-image: none;
			border: 1px solid transparent;
			white-space: nowrap;
			text-transform: uppercase;
			padding: .4rem 1rem;
			font-size: .875rem;
			line-height: 1.3125rem;
			border-radius: 4px;
			-webkit-user-select: none;
			-moz-user-select: none;
			-ms-user-select: none;
			user-select: none
		}

		@media (min-width: 768px) {
			.wf-btn {
				padding: .5rem 1.25rem;
				font-size: .875rem;
				line-height: 1.3125rem;
				border-radius: 4px
			}
		}

		.wf-btn:focus,
		.wf-btn.wf-focus,
		.wf-btn:active:focus,
		.wf-btn:active.wf-focus,
		.wf-btn.wf-active:focus,
		.wf-btn.wf-active.wf-focus {
			outline: 5px auto -webkit-focus-ring-color;
			outline-offset: -2px
		}

		.wf-btn:hover,
		.wf-btn:focus,
		.wf-btn.wf-focus {
			color: #00709e;
			text-decoration: none
		}

		.wf-btn:active,
		.wf-btn.wf-active {
			outline: 0;
			background-image: none;
			-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
			box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125)
		}

		.wf-btn.wf-disabled,
		.wf-btn[disabled],
		.wf-btn[readonly],
		fieldset[disabled] .wf-btn {
			cursor: not-allowed;
			-webkit-box-shadow: none;
			box-shadow: none
		}

		a.wf-btn {
			text-decoration: none
		}

		a.wf-btn.wf-disabled,
		fieldset[disabled] a.wf-btn {
			cursor: not-allowed;
			pointer-events: none
		}

		.wf-btn-default {
			color: #00709e;
			background-color: #fff;
			border-color: #00709e
		}

		.wf-btn-default:focus,
		.wf-btn-default.focus {
			color: #00709e;
			background-color: #e6e6e6;
			border-color: #00161f
		}

		.wf-btn-default:hover {
			color: #00709e;
			background-color: #e6e6e6;
			border-color: #004561
		}

		.wf-btn-default:active,
		.wf-btn-default.active {
			color: #00709e;
			background-color: #e6e6e6;
			border-color: #004561
		}

		.wf-btn-default:active:hover,
		.wf-btn-default:active:focus,
		.wf-btn-default:active.focus,
		.wf-btn-default.active:hover,
		.wf-btn-default.active:focus,
		.wf-btn-default.active.focus {
			color: #00709e;
			background-color: #d4d4d4;
			border-color: #00161f
		}

		.wf-btn-default:active,
		.wf-btn-default.wf-active {
			background-image: none
		}

		.wf-btn-default.wf-disabled,
		.wf-btn-default[disabled],
		.wf-btn-default[readonly],
		fieldset[disabled] .wf-btn-default {
			color: #777;
			background-color: #fff;
			border-color: #e2e2e2;
			cursor: not-allowed
		}

		.wf-btn-default.wf-disabled:hover,
		.wf-btn-default.wf-disabled:focus,
		.wf-btn-default.wf-disabled.wf-focus,
		.wf-btn-default[disabled]:hover,
		.wf-btn-default[disabled]:focus,
		.wf-btn-default[disabled].wf-focus,
		.wf-btn-default[readonly]:hover,
		.wf-btn-default[readonly]:focus,
		.wf-btn-default[readonly].wf-focus,
		fieldset[disabled] .wf-btn-default:hover,
		fieldset[disabled] .wf-btn-default:focus,
		fieldset[disabled] .wf-btn-default.wf-focus {
			background-color: #fff;
			border-color: #00709e
		}

		input[type="text"], input.wf-input-text {
			text-align: left;
			max-width: 200px;
			height: 30px;
			border-radius: 0;
			border: 0;
			background-color: #ffffff;
			box-shadow: 0px 0px 0px 1px rgba(215,215,215,0.65);
			padding: 0.25rem;
		}

		hr {
			margin-top: 1rem;
			margin-bottom: 1rem;
			border: 0;
			border-top: 4px solid #eee
		}

		p {
			font-size: 1.4rem;
			font-weight: 300;
		}

		p.medium, div.medium p {
			font-size: 1.1rem;
		}

		p.small, div.small p {
			font-size: 1rem;
		}

		.container {
			max-width: 900px;
			padding: 0 1rem;
			margin: 0 auto;
		}

		.top-accent {
			height: 25px;
			background-color: #00709e;
		}

		.block-data {
			width: 100%;
			border-top: 6px solid #00709e;
		}

		.block-data tr:nth-child(odd) th, .block-data tr:nth-child(odd) td {
			background-color: #eeeeee;
		}

		.block-data th, .block-data td {
			text-align: left;
			padding: 1rem;
			font-size: 1.1rem;
		}

		.block-data th.reason, .block-data td.reason {
			color: #930000;
		}

		.block-data th {
			font-weight: 300;
		}

		.block-data td {
			font-weight: 500;
		}

		.about {
			margin-top: 2rem;
			display: flex;
			flex-direction: row;
			align-items: stretch;
		}

		.about .badge {
			flex-basis: 116px;
			flex-grow: 0;
			flex-shrink: 0;
			display: flex;
			align-items: center;
			justify-content: flex-start;
		}

		.about svg {
			width: 100px;
			height: 100px;

		}

		.about-text {
			background-color: #00709e;
			color: #ffffff;
			padding: 1rem;
		}

		.about-text .h4 {
			font-weight: 500;
			margin-top: 0;
			margin-bottom: 0.25rem;
			font-size: 0.875rem;
		}

		.about-text p {
			font-size: 0.875rem;
			font-weight: 200;
			margin-top: 0.3rem;
			margin-bottom: 0.3rem;
		}

		.about-text p:first-of-type {
			margin-top: 0;
		}

		.about-text p:last-of-type {
			margin-bottom: 0;
		}

		.st0{fill:#00709e;}
		.st1{fill:#FFFFFF;}

		.generated {
			color: #999999;
			margin-top: 2rem;
		}
	</style>
</head>
<body>
<?php if (!empty($errorNonce)) { echo '<!-- WFWAF NONCE: ' . htmlspecialchars($errorNonce) . ' -->'; } ?>
<div class="top-accent"></div>
<div class="container">
	<h1><?php wfWAFI18n::esc_html_e('Your access to this site has been limited by the site owner') ?></h1>
	<p><?php wfWAFI18n::esc_html_e('Your access to this service has been limited. (HTTP response code 503)') ?></p>
	<p><?php wfWAFI18n::esc_html_e('If you think you have been blocked in error, contact the owner of this site for assistance.') ?></p>
<?php if (!empty($customText)): ?>
	<hr>
	<div class="medium"><?php echo $customText; ?></div>
<?php endif; ?>
<?php
$nonce = $waf->createNonce('wf-form');
if (!empty($siteURL) && !empty($nonce)) : ?>
	<hr>
	<p class="medium"><?php wfWAFI18n::esc_html_e('If you are a WordPress user with administrative privileges on this site, please enter your email address in the box below and click "Send". You will then receive an email that helps you regain access.') ?></p>

	<form method="POST" id="unlock-form" action="#">
		<input type="hidden" name="nonce" value="<?php echo $nonce; ?>">
		<input type="text" size="50" name="email" id="unlock-email" value="" maxlength="255" placeholder="email@example.com">&nbsp;&nbsp;<input type="submit" class="wf-btn wf-btn-default" id="unlock-submit" name="s" value="<?php echo htmlentities(wfWAFI18n::esc_html__('Send Unlock Email'), ENT_QUOTES, 'utf-8') ?>" disabled>
	</form>
	<script type="application/javascript">
		(function() {
			var textfield = document.getElementById('unlock-email');
			textfield.addEventListener('focus', function() {
				document.getElementById('unlock-form').action = "<?php echo rtrim($siteURL, '/') . '/'; ?>" + "?_wfsf=unlockEmail";
				document.getElementById('unlock-submit').disabled = false;
			});
		})();
	</script>
<?php endif; ?>

	<h2 class="h3"><?php wfWAFI18n::esc_html_e('Block Technical Data') ?></h2>
	<table border="0" cellspacing="0" cellpadding="0" class="block-data">
		<tr>
			<th class="reason"><?php wfWAFI18n::esc_html_e('Block Reason:') ?></th>
			<td class="reason"><?php echo htmlspecialchars($reason); ?></td>
		</tr>
		<tr>
			<th class="time"><?php wfWAFI18n::esc_html_e('Time:') ?></th>
			<td class="time"><?php echo htmlspecialchars(gmdate('D, j M Y G:i:s T', wfWAFUtils::normalizedTime())); ?></td>
		</tr>
	</table>

	<div class="about">
		<div class="badge">
			<?php
			$contents = file_get_contents(dirname(__FILE__) . '/../../../../../images/wf-error-badge.svg');
			$contents = preg_replace('/^<\?xml.+?\?>\s*/i', '', $contents);
			$contents = preg_replace('/^<!DOCTYPE.+?>\s*/i', '', $contents);
			$contents = preg_replace('/<svg\s+xmlns="[^"]*"/i', '<svg', $contents);
			echo $contents;
			?>
		</div>
		<div class="about-text">
			<h3 class="h4"><?php wfWAFI18n::esc_html_e('About Wordfence') ?></h3>
			<p><?php wfWAFI18n::esc_html_e('Wordfence is a security plugin installed on over 5 million WordPress sites. The owner of this site is using Wordfence to manage access to their site.') ?></p>
			<p><?php wfWAFI18n::esc_html_e('You can also read the documentation to learn about Wordfence\'s blocking tools, or visit wordfence.com to learn more about Wordfence.') ?></p>
		</div>
	</div>

	<p class="documentation small"><?php wfWAFI18n::esc_html_e('Click here to learn more: '); ?><a href="https://www.wordfence.com/help/?query=locked-out" target="_blank" rel="noopener noreferrer"><?php wfWAFI18n::esc_html_e('Documentation'); ?></a></p>
	<p class="generated small"><em><?php printf(wfWAFI18n::esc_html__('Generated by Wordfence at %s.'), gmdate('D, j M Y G:i:s T', wfWAFUtils::normalizedTime())) ?><br><?php wfWAFI18n::esc_html_e('Your computer\'s time: ') ?><script type="application/javascript">document.write(new Date().toUTCString());</script>.</em></p>
</div>
</body>
</html>vendor/wordfence/wf-waf/src/views/403-blacklist.php000064400000016035150755146450016136 0ustar00<?php
if (!defined('WFWAF_VIEW_RENDERING')) { exit; }

/** @var wfWAF $waf */
/** @var wfWAFView $this */

/*
 * IMPORTANT:
 * 
 * If the form variables below change name or format, admin.ajaxWatcher.js in the main plugin also needs changed. It
 * processes these to generate its whitelist button.
 */

$request = $waf->getRequest();
$headerString = '';
if (is_array($request->getHeaders())) {
	foreach ($request->getHeaders() as $header => $value) {
		switch (wfWAFUtils::strtolower($header)) {
			case 'cookie':
				$headerString .= 'Cookie: ' . trim($request->getCookieString()) . "\n";
				break;
			
			case 'host':
				$headerString .= 'Host: ' . $request->getHost() . "\n";
				break;
			
			case 'authorization':
				$hasAuth = true;
				if ($request->getAuth()) {
					$headerString .= 'Authorization: Basic <redacted>' . "\n";
				}
				break;
			
			default:
				$headerString .= $header . ': ' . $value . "\n";
				break;
		}
	}
}

$payload = array('ip' => $request->getIP(), 'timestamp' => $request->getTimestamp(), 'headers' => $headerString, 'url' => $request->getProtocol() . '://' . $request->getHost() . $request->getPath(), 'home_url' => $waf->getStorageEngine()->getConfig('homeURL', '', 'synced'));
$payloadJSON = wfWAFUtils::json_encode($payload);
$shouldEncrypt = false;
if (function_exists('openssl_get_publickey') && function_exists('openssl_get_cipher_methods')) {
	$ciphers = openssl_get_cipher_methods();
	$shouldEncrypt = array_search('aes-256-cbc', $ciphers) !== false;
}

if ($shouldEncrypt) {
	$keyData = file_get_contents(dirname(__FILE__) . '/../falsepositive.key');
	$key = @openssl_get_publickey($keyData);
	if ($key !== false) {
		$symmetricKey = wfWAFUtils::random_bytes(32);
		$iv = wfWAFUtils::random_bytes(16);
		$encrypted = @openssl_encrypt($payloadJSON, 'aes-256-cbc', $symmetricKey, OPENSSL_RAW_DATA, $iv);
		if ($encrypted !== false) {
			$success = openssl_public_encrypt($symmetricKey, $symmetricKeyEncrypted, $key, OPENSSL_PKCS1_OAEP_PADDING);
			if ($success) {
				$message = $iv . $symmetricKeyEncrypted . $encrypted;
				$signatureRaw = hash('sha256', $message, true);
				$success = openssl_public_encrypt($signatureRaw, $signature, $key, OPENSSL_PKCS1_OAEP_PADDING);
				if ($success) {
					$payload = array('message' => bin2hex($message), 'signature' => bin2hex($signature));
					$payloadJSON = wfWAFUtils::json_encode($payload);
				}
			}
		}
	}
}

$message = base64_encode($payloadJSON);
$payload = "-----BEGIN REPORT-----\n" . implode("\n", str_split($message, 60)) . "\n-----END REPORT-----";

?>
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title><?php wfWAFI18n::esc_html_e('403 Forbidden') ?></title>
	<style>
		html {
			font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
			font-size: 14px;
			line-height: 1.42857143;
			color: #333;
			background-color: #fff;
		}
		
		h1, h2, h3, h4, h45, h6 {
			font-weight: 500;
			line-height: 1.1;
		}
		
		h1 { font-size: 36px; }
		h2 { font-size: 30px; }
		h3 { font-size: 24px; }
		h4 { font-size: 18px; }
		h5 { font-size: 14px; }
		h6 { font-size: 12px; }
		
		h1, h2, h3 {
			margin-top: 20px;
			margin-bottom: 10px;
		}
		h4, h5, h6 {
			margin-top: 10px;
			margin-bottom: 10px;
		}
		
		.btn {
			background-color: #00709e;
			border: 1px solid #09486C;
			border-radius: 4px;
			box-sizing: border-box;
			color: #ffffff;
			cursor: pointer;
			display: inline-block;
			font-size: 14px;
			font-weight: normal;
			letter-spacing: normal;
			line-height: 20px;
			margin: 5px 0px;
			padding: 12px 6px;
			text-align: center;
			text-decoration: none;
			vertical-align: middle;
			white-space: nowrap;
			word-spacing: 0px;
		}
		
		textarea {
			display: block;
			height: 48px;
			padding: 6px 12px;
			font-size: 14px;
			line-height: 1.42857143;
			color: #555;
			background-color: #fff;
			background-image: none;
			border: 1px solid #ccc;
			border-radius: 4px;
			-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
			box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
			-webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
			-o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
			transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
			font-family: monospace;
		}
		
		textarea:focus {
			border-color: #66afe9;
			outline: 0;
			-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, .6);
			box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, .6);
		}
		
		hr {
			margin-top: 20px;
			margin-bottom: 20px;
			border: 0;
			border-top: 1px solid #eee
		}
		
		.btn.disabled, .btn[disabled] {
			background-color: #9f9fa0;
			border: 1px solid #7E7E7F;
			cursor: not-allowed;
			filter: alpha(opacity=65);
			-webkit-box-shadow: none;
			box-shadow: none;
			opacity: .65;
			pointer-events: none;
		}
	</style>
</head>
<body>
<?php
if (!empty($errorNonce)) { echo '<!-- WFWAF NONCE: ' . htmlentities($errorNonce) . ' -->'; }
?>

<h1><?php wfWAFI18n::esc_html_e('403 Forbidden') ?></h1>

<h3><?php wfWAFI18n::esc_html_e('WHAT? Why am I seeing this?') ?></h3>

<p><?php wfWAFI18n::esc_html_e('Your access to this site was blocked by Wordfence, a security provider, who protects sites from malicious activity.') ?></p>

<p><?php wfWAFI18n::esc_html_e('If you believe Wordfence should be allowing you access to this site, please let them know using the steps below so they can investigate why this is happening.') ?></p>

<hr>

<h3><?php wfWAFI18n::esc_html_e('Reporting a Problem') ?></h3>

<h4><?php wfWAFI18n::esc_html_e('1. Please copy this text. You need to paste it into a form later.') ?></h4>

<p><textarea id="payload" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" cols="65"><?php echo htmlspecialchars($payload); ?></textarea></p>
<script type="application/javascript">
	(function() {
		var textarea = document.getElementById('payload');
		var cs = window.getComputedStyle(textarea);
		var lines = textarea.value.split('\n');
		var height = 1 + lines.length;
		var pixelHeight = Math.min(height * parseInt(cs.getPropertyValue('line-height')), 600);
		textarea.style.height = pixelHeight + 'px';
		
		textarea.addEventListener('focus', function() {
			document.getElementById('reportButton').className = document.getElementById('reportButton').className.replace(new RegExp('(?:^|\\s)'+ 'disabled' + '(?:\\s|$)'), ' ');
			document.getElementById('reportButton').href = 'ht' + 'tps:/' + '/user-reports.wordfence' + '.com';
		});
	})();
</script>

<h4><?php wfWAFI18n::esc_html_e('2. Click this button and you will be prompted to paste the text above.') ?></h4>

<p><a href="#" id="reportButton" class="btn disabled" target="_blank" rel="noopener noreferrer"><?php wfWAFI18n::esc_html_e('Report Problem') ?></a></p>

<p style="color: #999999;margin-top: 2rem;"><em><?php printf(wfWAFI18n::esc_html__('Generated by Wordfence at %s.'), gmdate('D, j M Y G:i:s T', wfWAFUtils::normalizedTime())) ?><br><?php wfWAFI18n::esc_html_e('Your computer\'s time: ') ?><script type="application/javascript">document.write(new Date().toUTCString());</script>.</em></p>

</body>
</html>vendor/wordfence/wf-waf/src/views/403.php000064400000020626150755146460014172 0ustar00<?php
if (!defined('WFWAF_VIEW_RENDERING')) { exit; }
?>
<!DOCTYPE html>
<html>
<head>
	<title><?php wfWAFI18n::esc_html_e('403 Forbidden') ?></title>
	<style>
		html {
			font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
			font-size: 0.875rem;
			line-height: 1.42857143;
			color: #333;
			background-color: #fff;
			padding: 0;
			margin: 0;
		}

		body {
			padding: 0;
			margin: 0;
		}

		a {
			color:#00709e;
		}

		h1, h2, h3, h4, h5, h6 {
			font-weight: 200;
			line-height: 1.1;
		}

		h1, .h1 { font-size: 3rem; }
		h2, .h2 { font-size: 2.5rem; }
		h3, .h3 { font-size: 1.5rem; }
		h4, .h4 { font-size: 1rem; }
		h5, .h5 { font-size: 0.875rem; }
		h6, .h6 { font-size: 0.75rem; }

		h1, h2, h3 {
			margin-top: 20px;
			margin-bottom: 10px;
		}
		h4, h5, h6 {
			margin-top: 10px;
			margin-bottom: 10px;
		}

		.wf-btn {
			display: inline-block;
			margin-bottom: 0;
			font-weight: normal;
			text-align: center;
			vertical-align: middle;
			touch-action: manipulation;
			cursor: pointer;
			background-image: none;
			border: 1px solid transparent;
			white-space: nowrap;
			text-transform: uppercase;
			padding: .4rem 1rem;
			font-size: .875rem;
			line-height: 1.3125rem;
			border-radius: 4px;
			-webkit-user-select: none;
			-moz-user-select: none;
			-ms-user-select: none;
			user-select: none
		}

		@media (min-width: 768px) {
			.wf-btn {
				padding: .5rem 1.25rem;
				font-size: .875rem;
				line-height: 1.3125rem;
				border-radius: 4px
			}
		}

		.wf-btn:focus,
		.wf-btn.wf-focus,
		.wf-btn:active:focus,
		.wf-btn:active.wf-focus,
		.wf-btn.wf-active:focus,
		.wf-btn.wf-active.wf-focus {
			outline: 5px auto -webkit-focus-ring-color;
			outline-offset: -2px
		}

		.wf-btn:hover,
		.wf-btn:focus,
		.wf-btn.wf-focus {
			color: #00709e;
			text-decoration: none
		}

		.wf-btn:active,
		.wf-btn.wf-active {
			outline: 0;
			background-image: none;
			-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
			box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125)
		}

		.wf-btn.wf-disabled,
		.wf-btn[disabled],
		.wf-btn[readonly],
		fieldset[disabled] .wf-btn {
			cursor: not-allowed;
			-webkit-box-shadow: none;
			box-shadow: none
		}

		a.wf-btn {
			text-decoration: none
		}

		a.wf-btn.wf-disabled,
		fieldset[disabled] a.wf-btn {
			cursor: not-allowed;
			pointer-events: none
		}

		.wf-btn-default {
			color: #00709e;
			background-color: #fff;
			border-color: #00709e
		}

		.wf-btn-default:focus,
		.wf-btn-default.focus {
			color: #00709e;
			background-color: #e6e6e6;
			border-color: #00161f
		}

		.wf-btn-default:hover {
			color: #00709e;
			background-color: #e6e6e6;
			border-color: #004561
		}

		.wf-btn-default:active,
		.wf-btn-default.active {
			color: #00709e;
			background-color: #e6e6e6;
			border-color: #004561
		}

		.wf-btn-default:active:hover,
		.wf-btn-default:active:focus,
		.wf-btn-default:active.focus,
		.wf-btn-default.active:hover,
		.wf-btn-default.active:focus,
		.wf-btn-default.active.focus {
			color: #00709e;
			background-color: #d4d4d4;
			border-color: #00161f
		}

		.wf-btn-default:active,
		.wf-btn-default.wf-active {
			background-image: none
		}

		.wf-btn-default.wf-disabled,
		.wf-btn-default[disabled],
		.wf-btn-default[readonly],
		fieldset[disabled] .wf-btn-default {
			color: #777;
			background-color: #fff;
			border-color: #e2e2e2;
			cursor: not-allowed
		}

		.wf-btn-default.wf-disabled:hover,
		.wf-btn-default.wf-disabled:focus,
		.wf-btn-default.wf-disabled.wf-focus,
		.wf-btn-default[disabled]:hover,
		.wf-btn-default[disabled]:focus,
		.wf-btn-default[disabled].wf-focus,
		.wf-btn-default[readonly]:hover,
		.wf-btn-default[readonly]:focus,
		.wf-btn-default[readonly].wf-focus,
		fieldset[disabled] .wf-btn-default:hover,
		fieldset[disabled] .wf-btn-default:focus,
		fieldset[disabled] .wf-btn-default.wf-focus {
			background-color: #fff;
			border-color: #00709e
		}

		input[type="text"], input.wf-input-text {
			text-align: left;
			max-width: 200px;
			height: 30px;
			border-radius: 0;
			border: 0;
			background-color: #ffffff;
			box-shadow: 0px 0px 0px 1px rgba(215,215,215,0.65);
			padding: 0.25rem;
		}

		hr {
			margin-top: 1rem;
			margin-bottom: 1rem;
			border: 0;
			border-top: 4px solid #eee
		}

		p {
			font-size: 1.4rem;
			font-weight: 300;
		}

		p.medium, div.medium p {
			font-size: 1.1rem;
		}

		p.small, div.small p {
			font-size: 1rem;
		}

		.container {
			max-width: 900px;
			padding: 0 1rem;
			margin: 0 auto;
		}

		.top-accent {
			height: 25px;
			background-color: #00709e;
		}

		.block-data {
			width: 100%;
			border-top: 6px solid #00709e;
		}

		.block-data tr:nth-child(odd) th, .block-data tr:nth-child(odd) td {
			background-color: #eeeeee;
		}

		.block-data th, .block-data td {
			text-align: left;
			padding: 1rem;
			font-size: 1.1rem;
		}

		.block-data th.reason, .block-data td.reason {
			color: #930000;
		}

		.block-data th {
			font-weight: 300;
		}

		.block-data td {
			font-weight: 500;
		}

		.about {
			margin-top: 2rem;
			display: flex;
			flex-direction: row;
			align-items: stretch;
		}

		.about .badge {
			flex-basis: 116px;
			flex-grow: 0;
			flex-shrink: 0;
			display: flex;
			align-items: center;
			justify-content: flex-start;
		}

		.about svg {
			width: 100px;
			height: 100px;

		}

		.about-text {
			background-color: #00709e;
			color: #ffffff;
			padding: 1rem;
		}

		.about-text .h4 {
			font-weight: 500;
			margin-top: 0;
			margin-bottom: 0.25rem;
			font-size: 0.875rem;
		}

		.about-text p {
			font-size: 0.875rem;
			font-weight: 200;
			margin-top: 0.3rem;
			margin-bottom: 0.3rem;
		}

		.about-text p:first-of-type {
			margin-top: 0;
		}

		.about-text p:last-of-type {
			margin-bottom: 0;
		}

		.st0{fill:#00709e;}
		.st1{fill:#FFFFFF;}

		.generated {
			color: #999999;
			margin-top: 2rem;
		}
	</style>
</head>
<body>
<?php if (!empty($errorNonce)) { echo '<!-- WFWAF NONCE: ' . htmlspecialchars($errorNonce) . ' -->'; } ?>
<div class="top-accent"></div>
<div class="container">
	<h1><?php wfWAFI18n::esc_html_e('A potentially unsafe operation has been detected in your request to this site') ?></h1>
	<p><?php wfWAFI18n::esc_html_e('Your access to this service has been limited. (HTTP response code 403)') ?></p>
	<p><?php wfWAFI18n::esc_html_e('If you think you have been blocked in error, contact the owner of this site for assistance.') ?></p>
	<?php if (!empty($customText)): ?>
		<hr>
		<div class="medium"><?php echo $customText; ?></div>
	<?php endif; ?>

	<h2 class="h3"><?php wfWAFI18n::esc_html_e('Block Technical Data') ?></h2>
	<table border="0" cellspacing="0" cellpadding="0" class="block-data">
		<tr>
			<th class="reason"><?php wfWAFI18n::esc_html_e('Block Reason:') ?></th>
			<td class="reason"><?php wfWAFI18n::esc_html_e('A potentially unsafe operation has been detected in your request to this site') ?></td>
		</tr>
		<tr>
			<th class="time"><?php wfWAFI18n::esc_html_e('Time:') ?></th>
			<td class="time"><?php echo htmlspecialchars(gmdate('D, j M Y G:i:s T', wfWAFUtils::normalizedTime())); ?></td>
		</tr>
	</table>

	<div class="about">
		<div class="badge">
			<?php
			$contents = file_get_contents(dirname(__FILE__) . '/../../../../../images/wf-error-badge.svg');
			$contents = preg_replace('/^<\?xml.+?\?>\s*/i', '', $contents);
			$contents = preg_replace('/^<!DOCTYPE.+?>\s*/i', '', $contents);
			$contents = preg_replace('/<svg\s+xmlns="[^"]*"/i', '<svg', $contents);
			echo $contents;
			?>
		</div>
		<div class="about-text">
			<h3 class="h4"><?php wfWAFI18n::esc_html_e('About Wordfence') ?></h3>
			<p><?php wfWAFI18n::esc_html_e('Wordfence is a security plugin installed on over 5 million WordPress sites. The owner of this site is using Wordfence to manage access to their site.') ?></p>
			<p><?php wfWAFI18n::esc_html_e('You can also read the documentation to learn about Wordfence\'s blocking tools, or visit wordfence.com to learn more about Wordfence.') ?></p>
		</div>
	</div>

	<p class="documentation small"><?php wfWAFI18n::esc_html_e('Click here to learn more: ') ?><a href="https://www.wordfence.com/help/?query=locked-out" target="_blank" rel="noopener noreferrer"><?php wfWAFI18n::esc_html_e('Documentation'); ?></a></p>
	<p class="generated small"><em><?php printf(wfWAFI18n::esc_html__('Generated by Wordfence at %s.'), gmdate('D, j M Y G:i:s T', wfWAFUtils::normalizedTime())); ?><br><?php wfWAFI18n::esc_html_e('Your computer\'s time: ') ?><script type="application/javascript">document.write(new Date().toUTCString());</script>.</em></p>
</div>
</body>
</html>vendor/wordfence/wf-waf/src/views/503-lockout.php000064400000023551150755146460015651 0ustar00<?php
if (!defined('WFWAF_VIEW_RENDERING')) { exit; }
?>
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title><?php wfWAFI18n::esc_html_e('Your access to this site has been limited by the site owner') ?></title>
	<style>
		html {
			font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
			font-size: 0.875rem;
			line-height: 1.42857143;
			color: #333;
			background-color: #fff;
			padding: 0;
			margin: 0;
		}

		body {
			padding: 0;
			margin: 0;
		}

		a {
			color:#00709e;
		}

		h1, h2, h3, h4, h5, h6 {
			font-weight: 200;
			line-height: 1.1;
		}

		h1, .h1 { font-size: 3rem; }
		h2, .h2 { font-size: 2.5rem; }
		h3, .h3 { font-size: 1.5rem; }
		h4, .h4 { font-size: 1rem; }
		h5, .h5 { font-size: 0.875rem; }
		h6, .h6 { font-size: 0.75rem; }

		h1, h2, h3 {
			margin-top: 20px;
			margin-bottom: 10px;
		}
		h4, h5, h6 {
			margin-top: 10px;
			margin-bottom: 10px;
		}

		.wf-btn {
			display: inline-block;
			margin-bottom: 0;
			font-weight: normal;
			text-align: center;
			vertical-align: middle;
			touch-action: manipulation;
			cursor: pointer;
			background-image: none;
			border: 1px solid transparent;
			white-space: nowrap;
			text-transform: uppercase;
			padding: .4rem 1rem;
			font-size: .875rem;
			line-height: 1.3125rem;
			border-radius: 4px;
			-webkit-user-select: none;
			-moz-user-select: none;
			-ms-user-select: none;
			user-select: none
		}

		@media (min-width: 768px) {
			.wf-btn {
				padding: .5rem 1.25rem;
				font-size: .875rem;
				line-height: 1.3125rem;
				border-radius: 4px
			}
		}

		.wf-btn:focus,
		.wf-btn.wf-focus,
		.wf-btn:active:focus,
		.wf-btn:active.wf-focus,
		.wf-btn.wf-active:focus,
		.wf-btn.wf-active.wf-focus {
			outline: 5px auto -webkit-focus-ring-color;
			outline-offset: -2px
		}

		.wf-btn:hover,
		.wf-btn:focus,
		.wf-btn.wf-focus {
			color: #00709e;
			text-decoration: none
		}

		.wf-btn:active,
		.wf-btn.wf-active {
			outline: 0;
			background-image: none;
			-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
			box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125)
		}

		.wf-btn.wf-disabled,
		.wf-btn[disabled],
		.wf-btn[readonly],
		fieldset[disabled] .wf-btn {
			cursor: not-allowed;
			-webkit-box-shadow: none;
			box-shadow: none
		}

		a.wf-btn {
			text-decoration: none
		}

		a.wf-btn.wf-disabled,
		fieldset[disabled] a.wf-btn {
			cursor: not-allowed;
			pointer-events: none
		}

		.wf-btn-default {
			color: #00709e;
			background-color: #fff;
			border-color: #00709e
		}

		.wf-btn-default:focus,
		.wf-btn-default.focus {
			color: #00709e;
			background-color: #e6e6e6;
			border-color: #00161f
		}

		.wf-btn-default:hover {
			color: #00709e;
			background-color: #e6e6e6;
			border-color: #004561
		}

		.wf-btn-default:active,
		.wf-btn-default.active {
			color: #00709e;
			background-color: #e6e6e6;
			border-color: #004561
		}

		.wf-btn-default:active:hover,
		.wf-btn-default:active:focus,
		.wf-btn-default:active.focus,
		.wf-btn-default.active:hover,
		.wf-btn-default.active:focus,
		.wf-btn-default.active.focus {
			color: #00709e;
			background-color: #d4d4d4;
			border-color: #00161f
		}

		.wf-btn-default:active,
		.wf-btn-default.wf-active {
			background-image: none
		}

		.wf-btn-default.wf-disabled,
		.wf-btn-default[disabled],
		.wf-btn-default[readonly],
		fieldset[disabled] .wf-btn-default {
			color: #777;
			background-color: #fff;
			border-color: #e2e2e2;
			cursor: not-allowed
		}

		.wf-btn-default.wf-disabled:hover,
		.wf-btn-default.wf-disabled:focus,
		.wf-btn-default.wf-disabled.wf-focus,
		.wf-btn-default[disabled]:hover,
		.wf-btn-default[disabled]:focus,
		.wf-btn-default[disabled].wf-focus,
		.wf-btn-default[readonly]:hover,
		.wf-btn-default[readonly]:focus,
		.wf-btn-default[readonly].wf-focus,
		fieldset[disabled] .wf-btn-default:hover,
		fieldset[disabled] .wf-btn-default:focus,
		fieldset[disabled] .wf-btn-default.wf-focus {
			background-color: #fff;
			border-color: #00709e
		}

		input[type="text"], input.wf-input-text {
			text-align: left;
			max-width: 200px;
			height: 30px;
			border-radius: 0;
			border: 0;
			background-color: #ffffff;
			box-shadow: 0px 0px 0px 1px rgba(215,215,215,0.65);
			padding: 0.25rem;
		}

		hr {
			margin-top: 1rem;
			margin-bottom: 1rem;
			border: 0;
			border-top: 4px solid #eee
		}

		p {
			font-size: 1.4rem;
			font-weight: 300;
		}

		p.medium, div.medium p {
			font-size: 1.1rem;
		}

		p.small, div.small p {
			font-size: 1rem;
		}

		.container {
			max-width: 900px;
			padding: 0 1rem;
			margin: 0 auto;
		}

		.top-accent {
			height: 25px;
			background-color: #00709e;
		}

		.block-data {
			width: 100%;
			border-top: 6px solid #00709e;
		}

		.block-data tr:nth-child(odd) th, .block-data tr:nth-child(odd) td {
			background-color: #eeeeee;
		}

		.block-data th, .block-data td {
			text-align: left;
			padding: 1rem;
			font-size: 1.1rem;
		}

		.block-data th.reason, .block-data td.reason {
			color: #930000;
		}

		.block-data th {
			font-weight: 300;
		}

		.block-data td {
			font-weight: 500;
		}

		.about {
			margin-top: 2rem;
			display: flex;
			flex-direction: row;
			align-items: stretch;
		}

		.about .badge {
			flex-basis: 116px;
			flex-grow: 0;
			flex-shrink: 0;
			display: flex;
			align-items: center;
			justify-content: flex-start;
		}

		.about svg {
			width: 100px;
			height: 100px;

		}

		.about-text {
			background-color: #00709e;
			color: #ffffff;
			padding: 1rem;
		}

		.about-text .h4 {
			font-weight: 500;
			margin-top: 0;
			margin-bottom: 0.25rem;
			font-size: 0.875rem;
		}

		.about-text p {
			font-size: 0.875rem;
			font-weight: 200;
			margin-top: 0.3rem;
			margin-bottom: 0.3rem;
		}

		.about-text p:first-of-type {
			margin-top: 0;
		}

		.about-text p:last-of-type {
			margin-bottom: 0;
		}

		.st0{fill:#00709e;}
		.st1{fill:#FFFFFF;}

		.generated {
			color: #999999;
			margin-top: 2rem;
		}
	</style>
</head>
<body>
<?php if (!empty($errorNonce)) { echo '<!-- WFWAF NONCE: ' . htmlspecialchars($errorNonce) . ' -->'; } ?>
<div class="top-accent"></div>
<div class="container">
	<h1><?php wfWAFI18n::esc_html_e('Your access to this site has been temporarily limited by the site owner') ?></h1>
	<p><?php wfWAFI18n::esc_html_e('Your access to this service has been temporarily limited. Please try again in a few minutes. (HTTP response code 503)') ?></p>
	<p><?php wfWAFI18n::esc_html_e('If you think you have been blocked in error, contact the owner of this site for assistance.') ?></p>
	<?php if (!empty($customText)): ?>
		<hr>
		<div class="medium"><?php echo $customText; ?></div>
	<?php endif; ?>
	<?php if (!empty($homeURL)): ?>
	<hr>
	<ul>
		<li><a href="<?php echo $homeURL; ?>"><?php wfWAFI18n::esc_html_e('Return to the site home page') ?></a></li>
	</ul>
	<?php
	endif;
	$nonce = $waf->createNonce('wf-form');
	if (!empty($siteURL) && !empty($nonce)) : ?>
		<hr>
		<p class="medium"><?php wfWAFI18n::esc_html_e('If you are a WordPress user with administrative privileges on this site, please enter your email address in the box below and click "Send". You will then receive an email that helps you regain access.') ?></p>

		<form method="POST" id="unlock-form" action="#">
			<input type="hidden" name="nonce" value="<?php echo $nonce; ?>">
			<input type="text" size="50" name="email" id="unlock-email" value="" maxlength="255" placeholder="email@example.com">&nbsp;&nbsp;<input type="submit" class="wf-btn wf-btn-default" id="unlock-submit" name="s" value="<?php wfWAFI18n::esc_html_e('Send Unlock Email') ?>" disabled>
		</form>
		<script type="application/javascript">
			(function() {
				var textfield = document.getElementById('unlock-email');
				textfield.addEventListener('focus', function() {
					document.getElementById('unlock-form').action = "<?php echo rtrim($siteURL, '/') . '/'; ?>" + "?_wfsf=unlockEmail";
					document.getElementById('unlock-submit').disabled = false;
				});
			})();
		</script>
	<?php endif; ?>

	<h2 class="h3"><?php wfWAFI18n::esc_html_e('Block Technical Data') ?></h2>
	<table border="0" cellspacing="0" cellpadding="0" class="block-data">
		<tr>
			<th class="reason"><?php wfWAFI18n::esc_html_e('Block Reason:') ?></th>
			<td class="reason"><?php wfWAFI18n::esc_html_e('You have been temporarily locked out of this system. This means that you will not be able to log in for a while.') ?></td>
		</tr>
		<tr>
			<th class="time"><?php wfWAFI18n::esc_html_e('Time:') ?></th>
			<td class="time"><?php echo htmlspecialchars(gmdate('D, j M Y G:i:s T', wfWAFUtils::normalizedTime())); ?></td>
		</tr>
	</table>

	<div class="about">
		<div class="badge">
			<?php
			$contents = file_get_contents(dirname(__FILE__) . '/../../../../../images/wf-error-badge.svg');
			$contents = preg_replace('/^<\?xml.+?\?>\s*/i', '', $contents);
			$contents = preg_replace('/^<!DOCTYPE.+?>\s*/i', '', $contents);
			$contents = preg_replace('/<svg\s+xmlns="[^"]*"/i', '<svg', $contents);
			echo $contents;
			?>
		</div>
		<div class="about-text">
			<h3 class="h4"><?php wfWAFI18n::esc_html_e('About Wordfence') ?></h3>
			<p><?php wfWAFI18n::esc_html_e('Wordfence is a security plugin installed on over 5 million WordPress sites. The owner of this site is using Wordfence to manage access to their site.') ?></p>
			<p><?php wfWAFI18n::esc_html_e('You can also read the documentation to learn about Wordfence\'s blocking tools, or visit wordfence.com to learn more about Wordfence.') ?></p>
		</div>
	</div>

	<p class="documentation small"><?php wfWAFI18n::esc_html_e('Click here to learn more: '); ?><a href="https://www.wordfence.com/help/?query=locked-out" target="_blank" rel="noopener noreferrer"><?php wfWAFI18n::esc_html_e('Documentation'); ?></a></p>
	<p class="generated small"><em><?php printf(wfWAFI18n::esc_html__('Generated by Wordfence at %s.'), gmdate('D, j M Y G:i:s T', wfWAFUtils::normalizedTime())) ?><br><?php wfWAFI18n::esc_html_e('Your computer\'s time: ') ?><script type="application/javascript">document.write(new Date().toUTCString());</script>.</em></p>
</div>
</body>
</html>vendor/wordfence/mmdb-reader/src/Node.php000064400000001066150755146460014401 0ustar00<?php

namespace Wordfence\MmdbReader;

class Node {

	const SIDE_LEFT = 0;
	const SIDE_RIGHT = 1;

	private $reader;
	private $data;
	private $left, $right;

	public function __construct($reader, $data) {
		$this->reader = $reader;
		$this->data = $data;
	}

	public function getRecord($side) {
		$value = $this->reader->extractRecord($this->data, $side);
		return new NodeRecord($this->reader, $value);
	}

	public function getLeft() {
		return $this->getRecord(self::SIDE_LEFT);
	}

	public function getRight() {
		return $this->getRecord(self::SIDE_RIGHT);
	}

}vendor/wordfence/mmdb-reader/src/DatabaseMetadata.php000064400000003567150755146460016671 0ustar00<?php

namespace Wordfence\MmdbReader;

use Wordfence\MmdbReader\Exception\FormatException;

class DatabaseMetadata {

	const MAX_LENGTH = 131072; //128 * 1024;

	const FIELD_MAJOR_VERSION = 'binary_format_major_version';
	const FIELD_NODE_COUNT = 'node_count';
	const FIELD_RECORD_SIZE = 'record_size';
	const FIELD_IP_VERSION = 'ip_version';
	const FIELD_BUILD_EPOCH = 'build_epoch';

	private $data;

	public function __construct($data) {
		$this->data = $data;
	}

	private function getField($key, $default = null, &$exists = null) {
		if (!array_key_exists($key, $this->data)) {
			$exists = false;
			return $default;
		}
		$exists = true;
		return $this->data[$key];
	}

	private function requireField($key) {
		$value = $this->getField($key, null, $exists);
		if (!$exists)
			throw new FormatException("Metadata field {$key} is missing");
		return $value;
	}

	public function requireInteger($key) {
		$value = $this->requireField($key);
		if (!is_int($value))
			throw new FormatException("Field {$key} should be an integer, received: " . print_r($value, true));
		return $value;
	}

	public function getMajorVersion() {
		return $this->requireInteger(self::FIELD_MAJOR_VERSION);
	}

	public function getNodeCount() {
		return $this->requireInteger(self::FIELD_NODE_COUNT);
	}

	public function getRecordSize() {
		return $this->requireInteger(self::FIELD_RECORD_SIZE);
	}

	public function getIpVersion() {
		return $this->requireInteger(self::FIELD_IP_VERSION);
	}

	public function getBuildEpoch() {
		return $this->requireInteger(self::FIELD_BUILD_EPOCH);
	}

	public static function parse($handle) {
		$offset = $handle->getPosition();
		$parser = new DataFieldParser($handle, $offset);
		$value = $parser->parseField();
		if (!is_array($value))
			throw new FormatException('Unexpected field type found when metadata map was expected: ' . print_r($value, true));
		return new self($value);
	}

}vendor/wordfence/mmdb-reader/src/DataFieldParser.php000064400000011772150755146460016513 0ustar00<?php

namespace Wordfence\MmdbReader;

use Wordfence\MmdbReader\Exception\FormatException;
use Wordfence\MmdbReader\Exception\InvalidArgumentException;

class DataFieldParser {

	private $handle;
	private $sectionOffset;

	public function __construct($handle, $sectionOffset = null) {
		$this->handle = $handle;
		$this->sectionOffset = $sectionOffset === null ? $this->handle->getPosition() : $sectionOffset;
	}

	public function processControlByte() {
		return ControlByte::consume($this->handle);
	}

	private function readStandardField($controlByte) {
		$size = $controlByte->getSize();
		if ($size === 0)
			return '';
		return $this->handle->read($size);
	}

	private function parseUtf8String($controlByte) {
		return $this->readStandardField($controlByte);
	}

	private function parseUnsignedInteger($controlByte) {
		//TODO: Does this handle large-enough values gracefully?
		return IntegerParser::parseUnsigned($this->handle, $controlByte->getSize());
	}

	private function parseMap($controlByte) {
		$map = array();
		for ($i = 0; $i < $controlByte->getSize(); $i++) {
			$keyByte = $this->processControlByte();
			$key = $this->parseField($keyByte);
			if (!is_string($key))
				throw new FormatException('Map keys must be strings, received ' . $keyByte . ' / ' . print_r($key, true) . ', map: ' . print_r($map, true));
			$value = $this->parseField();
			$map[$key] = $value;
		}
		return $map;
	}

	private function parseArray($controlByte) {
		$array = array();
		for ($i = 0; $i < $controlByte->getSize(); $i++) {
			$array[$i] = $this->parseField();
		}
		return $array;
	}

	private function parseBoolean($controlByte) {
		return (bool) $controlByte->getSize();
	}

	private static function unpackSingleValue($format, $data, $controlByte) {
		$values = unpack($format, $data);
		if ($values === false)
			throw new FormatException("Unpacking field failed for {$controlByte}");
		return reset($values);
	}

	private static function getPackedLength($formatCharacter) {
		switch ($formatCharacter) {
		case 'E':
			return 8;
		case 'G':
		case 'l':
			return 4;
		}
		throw new InvalidArgumentException("Unsupported format character: {$formatCharacter}");
	}

	private static function usesSystemByteOrder($formatCharacter) {
		switch ($formatCharacter) {
		case 'l':
			return true;
		default:
			return false;
		}
	}

	private function parseByUnpacking($controlByte, $format) {
		//TODO: Is this reliable for float/double types, considering that the size for unpack is platform dependent?
		$data = $this->readStandardField($controlByte);
		$data = str_pad($data, self::getPackedLength($format), "\0", STR_PAD_LEFT);
		if (self::usesSystemByteOrder($format))
			$data = Endianness::convert($data, Endianness::BIG);
		return $this->unpackSingleValue($format, $data, $controlByte);
	}

	private function parsePointer($controlByte) {
		$data = $controlByte->getSize();
		$size = $data >> 3;
		$address = $data & 7;
		if ($size === 3)
			$address = 0;
		for ($i = 0; $i < $size + 1; $i++) {
			$address = ($address << 8) + $this->handle->readByte();
		}
		switch ($size) {
		case 1:
			$address += 2048;
			break;
		case 2:
			$address += 526336;
			break;
		}
		$previous = $this->handle->getPosition();
		$this->handle->seek($this->sectionOffset + $address, SEEK_SET);
		$referenceControlByte = $this->processControlByte();
		if ($referenceControlByte->getType() === ControlByte::TYPE_POINTER)
			throw new FormatException('Per the MMDB specification, pointers may not point to other pointers. This database does not comply with the specification.');
		$value = $this->parseField($referenceControlByte);
		$this->handle->seek($previous, SEEK_SET);
		return $value;
	}

	private function parseSignedInteger($controlByte, $format) {
		if ($controlByte->getSize() === 0)
			return 0;
		return $this->parseByUnpacking($controlByte, $format);
	}

	public function parseField(&$controlByte = null) {
		if ($controlByte === null)
			$controlByte = $this->processControlByte();
		switch ($controlByte->getType()) {
		case ControlByte::TYPE_POINTER:
			return $this->parsePointer($controlByte);
		case ControlByte::TYPE_UTF8_STRING:
			return $this->parseUtf8String($controlByte);
		case ControlByte::TYPE_DOUBLE:
			$this->parseByUnpacking($controlByte, 'E');
		case ControlByte::TYPE_BYTES:
		case ControlByte::TYPE_CONTAINER:
			return $this->readStandardField($controlByte);
		case ControlByte::TYPE_UINT16:
		case ControlByte::TYPE_UINT32:
		case ControlByte::TYPE_UINT64:
		case ControlByte::TYPE_UINT128:
			return $this->parseUnsignedInteger($controlByte);
		case ControlByte::TYPE_INT32:
			return $this->parseSignedInteger($controlByte, 'l');
		case ControlByte::TYPE_MAP:
			return $this->parseMap($controlByte);
		case ControlByte::TYPE_ARRAY:
			return $this->parseArray($controlByte);
		case ControlByte::TYPE_END_MARKER:
			return null;
		case ControlByte::TYPE_BOOLEAN:
			return $this->parseBoolean($controlByte);
		case ControlByte::TYPE_FLOAT:
			$this->parseByUnpacking($controlByte, 'G');
		default:
			throw new FormatException("Unable to parse data field for {$controlByte}");
		}
	}

}vendor/wordfence/mmdb-reader/src/IpAddress.php000064400000005073150755146460015374 0ustar00<?php

namespace Wordfence\MmdbReader;

use Wordfence\MmdbReader\Exception\InvalidIpAddressException;

class IpAddress implements IpAddressInterface {

	const TYPE_IPV4 = 4;
	const TYPE_IPV6 = 6;

	const LENGTH_IPV4 = 4;
	const LENGTH_IPV6 = 16;

	const SEPARATOR_IPV4 = '.';
	const SEPARATOR_IPV6 = ':';

	private static $SEPARATORS = array(
		self::SEPARATOR_IPV4,
		self::SEPARATOR_IPV6
	);

	private $humanReadable;
	private $binary;
	private $type;

	protected function __construct($humanReadable, $binary) {
		$this->humanReadable = $humanReadable;
		$this->binary = $binary;
		$this->type = self::resolveType($binary);
	}

	public function getHumanReadable() {
		return $this->humanReadable;
	}

	public function getBinary() {
		return $this->binary;
	}

	public function getType() {
		return $this->type;
	}

	private static function resolveType($binary) {
		return strlen($binary) === self::LENGTH_IPV6 ? self::TYPE_IPV6 : self::TYPE_IPV4;
	}

	/**
	 * Create an IpAddress instance from a human-readable string
	 * @param string $humanReadable a human readable IP address
	 * @return IpAddress
	 * @throws InvalidIpAddressException if $humanReadable is not a valid human-readable IP address
	 */
	public static function createFromHumanReadable($humanReadable) {
		$binary = inet_pton($humanReadable);
		if ($binary === false)
			throw new InvalidIpAddressException("IP address \"{$humanReadable}\" is malformed");
		return new self($humanReadable, $binary);
	}

	/**
	 * Create an IpAddress instance from a binary string
	 * @param string $binary a binary IP address
	 * @return IpAddress
	 * @throws InvalidIpAddressException if $binary is not a valid binary IP address
	 */
	public static function createFromBinary($binary) {
		$humanReadable = inet_ntop($binary);
		if ($humanReadable === false)
			throw new InvalidIpAddressException("Binary IP address data is invalid: " . bin2hex($binary));
		return new self($humanReadable, $binary);
	}

	/**
	 * Create an IpAddress instance from an unknown string representation
	 * @param string $string either a human-readable or binary IP address
	 * @return IpAddress
	 * @throws InvalidIpAddressException if $string cannot be parsed as a valid IP address
	 */
	public static function createFromString($string) {
		foreach (self::$SEPARATORS as $separator) {
			if (strpos($string, $separator) !== false) {
				try {
					return self::createFromHumanReadable($string);
				}
				catch (InvalidIpAddressException $e) {
					break;
				}
			}
		}
		return self::createFromBinary($string);
	}

	public function __toString() {
		return $this->getHumanReadable();
	}

}vendor/wordfence/mmdb-reader/src/IntegerParser.php000064400000000411150755146460016257 0ustar00<?php

namespace Wordfence\MmdbReader;

class IntegerParser {

	public static function parseUnsigned($handle, $length) {
		$value = 0;
		for ($i = 0; $i < $length; $i++) {
			$byte = $handle->readByte();
			$value = ($value << 8) + $byte;
		}
		return $value;
	}

}vendor/wordfence/mmdb-reader/src/IpAddressInterface.php000064400000000761150755146460017214 0ustar00<?php

namespace Wordfence\MmdbReader;

interface IpAddressInterface {

	/**
	 * Get the human-readable (presentation format) version of the address
	 * @return string
	 * @see inet_ntop
	 */
	public function getHumanReadable();

	/**
	 * Get the binary (network format) version of the address
	 * @return string
	 * @see inet_pton
	 */
	public function getBinary();

	/**
	 * Get the type of the address (IPv4 or IPv6)
	 * @return int 4 for IPv4 and 6 for IPv6
	 */
	public function getType();

}vendor/wordfence/mmdb-reader/src/Database.php000064400000014021150755146460015213 0ustar00<?php

namespace Wordfence\MmdbReader;

use Wordfence\MmdbReader\Exception\FormatException;
use Wordfence\MmdbReader\Exception\IncompatibleIpVersionException;
use Wordfence\MmdbReader\Exception\IncompatibleVersionException;
use Wordfence\MmdbReader\Exception\InvalidIpAddressException;
use Wordfence\MmdbReader\Exception\IoException;
use Wordfence\MmdbReader\Io\FileHandle;

class Database {

	const SUPPORTED_MAJOR_VERSION = 2;
	const DELIMITER_METADATA = "\xab\xcd\xefMaxMind.com";

	private $handle;
	private $metadata;
	private $nodeSize;
	private $nodeReader;
	private $dataSectionParser;
	private $startingNodes = array();

	/**
	 * Bind to a MaxMind database using the provided handle
	 * @param resource $resource a valid stream resource that can be used to read the database
	 * @param bool $closeAutomtically if true, the provided resource will be closed automatically
	 * @throws MmdbThrowable if an error occurs while interacting with the database
	 */
	protected function __construct($resource, $closeAutomatically) {
		$this->handle = new FileHandle($resource, $closeAutomatically);
		$this->initialize();
	}

	private function initialize() {
		$this->loadMetadata();
	}

	private function loadMetadata() {
		$this->handle->seek(0, SEEK_END);
		$position = $this->handle->locateString(self::DELIMITER_METADATA, FileHandle::DIRECTION_REVERSE, DatabaseMetadata::MAX_LENGTH, true);
		if ($position === null)
			throw new FormatException("Unable to locate metadata in MMDB file");
		$this->metadata = DatabaseMetadata::parse($this->handle);
		if ($this->metadata->getMajorVersion() !== self::SUPPORTED_MAJOR_VERSION)
			throw new IncompatibleVersionException(sprintf('This library only supports parsing version %d of the MMDB format, a version %d database was provided', self::SUPPORTED_MAJOR_VERSION, $this->metadata->getMajorVersion()));
	}

	private function computeNodeSize() {
		$nodeSize = ($this->metadata->getRecordSize() * 2) / 8;
		if (!is_int($nodeSize))
			throw new FormatException("Node size must be an even number of bytes, computed {$this->nodeSize}");
		return $nodeSize;
	}

	private function getNodeReader() {
		if ($this->nodeReader === null)
			$this->nodeReader = new NodeReader($this->handle, $this->computeNodeSize(), $this->metadata->getNodeCount());
		return $this->nodeReader;
	}

	private function getDataSectionParser() {
		if ($this->dataSectionParser === null) {
			$offset = $this->getNodeReader()->getSearchTreeSectionSize() + 16; //16 null bytes separate the two sections
			$this->dataSectionParser = new DataFieldParser($this->handle, $offset);
		}
		return $this->dataSectionParser;
	}

	/**
	 * Retrieve the metadata for this database
	 * @return DatabaseMetadata
	 */
	public function getMetadata() {
		return $this->metadata;
	}

	/**
	 * Search the database for the given IP address
	 * @param IpAddressInterface|string $ip the IP address for which to search
	 *	A human readable (as accepted by inet_pton) or binary (as accepted by inet_ntop) string may be provided or an instance of IpAddressInterface
	 * @return array|null the matched record or null if no record was found
	 * @throws InvalidIpAddressException if $ip is a string that cannot be parsed as a valid IP address
	 * @throws IncompatibleVersionException if the database IP version and the version of the provided IP address are incompatible (specifically, if an IPv6 address is passed and the database only supports IPv4)
	 */
	public function search($ip) {
		if (is_string($ip)) {
			$ip = IpAddress::createFromString($ip);
		}
		elseif (!$ip instanceof IpAddressInterface) {
			throw new InvalidIpAddressException('IP address must be either a human readable string (presentation format), a binary string (network format), or an instance of Wordfence\MmdbReader\IpAddressInterface, received: ' . print_r($ip, true));
		}
		if ($this->metadata->getIpVersion() === IpAddress::TYPE_IPV4 && $ip->getType() === IpAddress::TYPE_IPV6)
			throw new IncompatibleIpVersionException('This database only support IPv4 addresses, but the provided address is an IPv6 address');
		return $this->searchNodes($ip);
	}

	private function resolveStartingNode($type) {
		$node = $this->getNodeReader()->read(0);
		if ($type === IpAddress::TYPE_IPV4 && $this->metadata->getIpVersion() === IpAddress::TYPE_IPV6) {
			$skippedBits = (IpAddress::LENGTH_IPV6 - IpAddress::LENGTH_IPV4) * 8;
			while ($skippedBits-- > 0) {
				$record = $node->getLeft();
				if ($record->isNodePointer()) {
					$node = $record->getNextNode();
				}
				else {
					return $record;
				}
			}
		}
		return $node;
	}

	private function getStartingNode($type) {
		if (!array_key_exists($type, $this->startingNodes)) {
			$this->startingNodes[$type] = $this->resolveStartingNode($type);
		}
		return $this->startingNodes[$type];
	}

	private function searchNodes($ip) {
		$key = $ip->getBinary();
		$byteCount = strlen($key);
		$nodeReader = $this->getNodeReader();
		$node = $this->getStartingNode($ip->getType());
		$bits = '';
		$record = null;
		if ($node instanceof Node) {
			for ($byteIndex = 0; $byteIndex < $byteCount; $byteIndex++) {
				$byte = ord($key[$byteIndex]);
				for ($bitOffset = 7; $bitOffset >= 0; $bitOffset--) {
					$bit = ($byte >> $bitOffset) & 1;
					$record = $node->getRecord($bit);
					if ($record->isNodePointer()) {
						$node = $record->getNextNode();
					}
					else {
						break 2;
					}
				}
			}
		}
		else {
			$record = $node;
		}
		if ($record->isNullPointer()) {
			return null;
		}
		elseif ($record->isDataPointer()) {
			$this->handle->seek($record->getDataAddress(), SEEK_SET);
			$data = $this->getDataSectionParser()->parseField();
			return $data;
		}
		else {
			return null;
		}
	}

	/**
	 * Open the MMDB file at the given path
	 * @param string $path the path of an MMDB file
	 * @throws IoException if unable to open the file at the provided path
	 * @throws MmdbThrowable if an error occurs while initializing the database
	 */
	public static function open($path) {
		$handle = fopen($path, 'rb');
		if ($handle === false)
			throw new IoException("Unable to open MMDB file at {$path}");
		return new self($handle, true);
	}

}vendor/wordfence/mmdb-reader/src/NodeReader.php000064400000004054150755146460015524 0ustar00<?php

namespace Wordfence\MmdbReader;

class NodeReader {

	const SHARED_MASK_LEFT = 240; //0b11110000
	const SHARED_MASK_RIGHT = 15; //0b00001111

	private $handle;
	private $nodeSize, $nodeCount;
	private $searchTreeSectionSize;
	private $recordWholeBytes, $recordBits;
	private $sharedByteOffset;

	public function __construct($handle, $nodeSize, $nodeCount) {
		$this->handle = $handle;
		$this->nodeSize = $nodeSize;
		$this->nodeCount = $nodeCount;
		$this->searchTreeSectionSize = $nodeSize * $nodeCount;
		$this->computeRecordSizes();
	}

	private function computeRecordSizes() {
		$this->recordWholeBytes = (int) ($this->nodeSize / 2);
		$this->recordBits = $this->nodeSize % 2;
		if ($this->recordBits > 0)
			$this->sharedByteOffset = $this->recordWholeBytes + 1;
	}

	public function read($position = 0) {
		if ($position > $this->nodeCount)
			throw new InvalidOperationException("Read requested for node at {$position}, but only {$this->nodeCount} nodes are present");
		$offset = $position * $this->nodeSize;
		$this->handle->seek($offset, SEEK_SET);
		$data = $this->handle->read($this->nodeSize);
		return new Node($this, $data);
	}

	private function hasSharedByte() {
		return $this->sharedByteOffset !== null;
	}

	private function getWholeByteOffset($side) {
		return $side === Node::SIDE_LEFT ? 0 : ($this->hasSharedByte() ? $this->sharedByteOffset : $this->recordWholeBytes);
	}

	public function extractRecord($nodeData, $side) {
		if ($this->hasSharedByte()) {
			$sharedByte = ord($nodeData[$this->sharedByteOffset]);
			if ($side === Node::SIDE_LEFT) {
				$value = $sharedByte >> 4;
			}
			else {
				$value = $sharedByte & self::SHARED_MASK_RIGHT;
			}
		}
		else {
			$value = 0;
		}
		$offset = $this->getWholeByteOffset($side);
		$end = $offset + $this->recordWholeBytes;
		for ($i = $offset; $i < $end; $i++) {
			$byte = ord($nodeData[$i]);
			$value = ($value << 8) | $byte;
		}
		return $value;
	}

	public function getNodeCount() {
		return $this->nodeCount;
	}

	public function getSearchTreeSectionSize() {
		return $this->searchTreeSectionSize;
	}

}vendor/wordfence/mmdb-reader/src/ControlByte.php000064400000004774150755146460015771 0ustar00<?php

namespace Wordfence\MmdbReader;

class ControlByte {

	const TYPE_EXTENDED = 0;
	const TYPE_POINTER = 1;
	const TYPE_UTF8_STRING = 2;
	const TYPE_DOUBLE = 3;
	const TYPE_BYTES = 4;
	const TYPE_UINT16 = 5;
	const TYPE_UINT32 = 6;
	const TYPE_MAP = 7;
	const TYPE_INT32 = 8;
	const TYPE_UINT64 = 9;
	const TYPE_UINT128 = 10;
	const TYPE_ARRAY = 11;
	const TYPE_CONTAINER = 12;
	const TYPE_END_MARKER = 13;
	const TYPE_BOOLEAN = 14;
	const TYPE_FLOAT = 15;

	const EXTENSION_OFFSET = 7;
	const SIZE_MASK = 31;
	const MAX_SINGLE_BYTE_SIZE = 28;

	private $type;
	private $size;

	public function __construct($type, $size) {
		$this->type = $type;
		$this->size = $size;
	}

	public function getType() {
		return $this->type;
	}

	public function getTypeName() {
		return self::mapTypeName($this->getType());
	}

	public function getSize() {
		return $this->size;
	}

	public function is($type) {
		return $this->type === $type;
	}

	public static function consume($handle) {
		$byte = $handle->readByte();
		$type = $byte >> 5;
		if ($type === self::TYPE_EXTENDED)
			$type = $handle->readByte() + self::EXTENSION_OFFSET;
		$size = $byte & self::SIZE_MASK;
		if ($size > self::MAX_SINGLE_BYTE_SIZE) {
			$bytes = $size - self::MAX_SINGLE_BYTE_SIZE;
			switch ($size) {
			case 30:
				$size = 285;
				break;
			case 31:
				$size = 65821;
				break;
			default:
				break;
			}
			$size += IntegerParser::parseUnsigned($handle, $bytes);
		}
		return new self($type, $size);
	}

	public static function mapTypeName($type) {
		switch ($type) {
		case self::TYPE_EXTENDED:
			return 'TYPE_EXTENDED';
		case self::TYPE_POINTER:
			return 'TYPE_POINTER';
		case self::TYPE_UTF8_STRING:
			return 'TYPE_UTF8_STRING';
		case self::TYPE_DOUBLE:
			return 'TYPE_DOUBLE';
		case self::TYPE_BYTES:
			return 'TYPE_BYTES';
		case self::TYPE_UINT16:
			return 'TYPE_UINT16';
		case self::TYPE_UINT32:
			return 'TYPE_UINT32';
		case self::TYPE_MAP:
			return 'TYPE_MAP';
		case self::TYPE_INT32:
			return 'TYPE_INT32';
		case self::TYPE_UINT64:
			return 'TYPE_UINT64';
		case self::TYPE_UINT128:
			return 'TYPE_UINT128';
		case self::TYPE_ARRAY:
			return 'TYPE_ARRAY';
		case self::TYPE_CONTAINER:
			return 'TYPE_CONTAINER';
		case self::TYPE_END_MARKER:
			return 'TYPE_END_MARKER';
		case self::TYPE_BOOLEAN:
			return 'TYPE_BOOLEAN';
		case self::TYPE_FLOAT:
			return 'TYPE_FLOAT';
		default:
			return 'UNKNOWN';
		}
	}

	public function __toString() {
		return sprintf('%s(%d) of size %d', $this->getTypeName(), $this->getType(), $this->getSize());
	}

}vendor/wordfence/mmdb-reader/src/Exception/IoException.php000064400000000144150755146460017674 0ustar00<?php

namespace Wordfence\MmdbReader\Exception;

class IoException extends RuntimeMmdbException {
}vendor/wordfence/mmdb-reader/src/Exception/IncompatibleVersionException.php000064400000000166150755146460023305 0ustar00<?php

namespace Wordfence\MmdbReader\Exception;

class IncompatibleVersionException extends RuntimeMmdbException {

}vendor/wordfence/mmdb-reader/src/Exception/MmdbException.php000064400000000507150755146460020207 0ustar00<?php

namespace Wordfence\MmdbReader\Exception;

use Exception;
use Throwable;

class MmdbException extends Exception implements MmdbThrowable {

	/**
	 * @param string $message
	 * @param ?Throwable $previous
	 */
	public function __construct($message, $previous = null) {
		parent::__construct($message, 0, $previous);
	}

}vendor/wordfence/mmdb-reader/src/Exception/FormatException.php000064400000000150150755146460020552 0ustar00<?php

namespace Wordfence\MmdbReader\Exception;

class FormatException extends RuntimeMmdbException {
}vendor/wordfence/mmdb-reader/src/Exception/InvalidArgumentException.php000064400000000152150755146460022415 0ustar00<?php

namespace Wordfence\MmdbReader\Exception;

class InvalidArgumentException extends MmdbException {
}vendor/wordfence/mmdb-reader/src/Exception/RuntimeMmdbException.php000064400000000534150755146460021553 0ustar00<?php

namespace Wordfence\MmdbReader\Exception;

use RuntimeException;
use Throwable;

class RuntimeMmdbException extends RuntimeException implements MmdbThrowable {

	/**
	 * @param string $message
	 * @param ?Throwable $previous
	 */
	public function __construct($message, $previous = null) {
		parent::__construct($message, 0, $previous);
	}

}vendor/wordfence/mmdb-reader/src/Exception/InvalidIpAddressException.php000064400000000153150755146460022512 0ustar00<?php

namespace Wordfence\MmdbReader\Exception;

class InvalidIpAddressException extends MmdbException {
}vendor/wordfence/mmdb-reader/src/Exception/MmdbThrowable.php000064400000000157150755146460020201 0ustar00<?php

namespace Wordfence\MmdbReader\Exception;

use Throwable;

interface MmdbThrowable extends Throwable {
}vendor/wordfence/mmdb-reader/src/Exception/IncompatibleIpVersionException.php000064400000000160150755146460023570 0ustar00<?php

namespace Wordfence\MmdbReader\Exception;

class IncompatibleIpVersionException extends MmdbException {
}vendor/wordfence/mmdb-reader/src/Exception/InvalidOperationException.php000064400000000154150755146460022575 0ustar00<?php

namespace Wordfence\MmdbReader\Exception;

class InvalidOperationException extends MmdbException {

}vendor/wordfence/mmdb-reader/src/NodeRecord.php000064400000002343150755146460015537 0ustar00<?php

namespace Wordfence\MmdbReader;

use Wordfence\MmdbReader\Exception\InvalidOperationException;

class NodeRecord {

	private $reader;
	private $value;

	public function __construct($reader, $value) {
		$this->reader = $reader;
		$this->value = $value;
	}

	public function getValue() {
		return $this->value;
	}

	public function isNodePointer() {
		return $this->value < $this->reader->getNodeCount();
	}

	public function getNextNode() {
		if (!$this->isNodePointer())
			throw new InvalidOperationException('The next node was requested for a record that is not a node pointer');
		try {
			return $this->reader->read($this->getValue());
		}
		catch (InvalidOperationException $e) {
			throw new FormatException('Invalid node pointer found in database', $e);
		}
	}

	public function isNullPointer() {
		return $this->value === $this->reader->getNodeCount();
	}

	public function isDataPointer() {
		return $this->value > $this->reader->getNodeCount();
	}

	public function getDataAddress() {
		if (!$this->isDataPointer())
			throw new InvalidOperationException('The data address was requested for a record that is not a data pointer');
		return $this->value - $this->reader->getNodeCount() + $this->reader->getSearchTreeSectionSize();
	}

}vendor/wordfence/mmdb-reader/src/Io/FileHandle.php000064400000004311150755146460016052 0ustar00<?php

namespace Wordfence\MmdbReader\Io;

use Wordfence\MmdbReader\Exception\IoException;

class FileHandle {

	const POSITION_START = 0;

	const DIRECTION_FORWARD = 1;
	const DIRECTION_REVERSE = -1;

	const CHUNK_SIZE_DEFAULT = 1024;

	private $resource;
	private $close;

	public function __construct($resource, $close = true) {
		$this->resource = $resource;
		$this->close = $close;
	}

	public function __destruct() {
		if ($this->close)
			fclose($this->resource);
	}

	public function seek($offset, $whence = SEEK_SET) {
		if (fseek($this->resource, $offset, $whence) !== 0)
			throw new IoException("Seeking file to offset {$offset} failed");
	}

	public function getPosition() {
		$position = ftell($this->resource);
		if ($position === false)
			throw new IoException('Retrieving current position in file failed');
		return $position;
	}

	public function isAtStart() {
		return $this->getPosition() === self::POSITION_START;
	}

	public function isAtEnd() {
		return feof($this->resource);
	}

	public function read($length) {
		$read = fread($this->resource, $length);
		if ($read === false)
			throw new IoException("Reading {$length} byte(s) from file failed");
		return $read;
	}

	public function readByte() {
		return ord($this->read(1));
	}

	public function readAll($chunkSize = self::CHUNK_SIZE_DEFAULT) {
		$data = '';
		do {
			$chunk = $this->read($chunkSize);
			if (empty($chunk))
				break;
			$data .= $chunk;
		} while (true);
		return $data;
	}

	public function locateString($string, $direction, $limit = null, $after = false) {
		$searchStart = $limit === null ? null : $this->getPosition();
		$length = strlen($string);
		$position = $searchStart;
		if ($direction === self::DIRECTION_REVERSE)
			$position -= $length;
		do {
			try {
				$this->seek($position, SEEK_SET);
			}
			catch (IoException $e) {
				//This assumes that a seek failure means that the target position is out of range (and hence the search just needs to stop rather than throwing an exception)
				break;
			}
			$test = $this->read($length);
			if ($test === $string) {
				return $position + ($after ? $length : 0);
			}
			$position += $direction;
		} while ($limit === null || abs($position - $searchStart) < $limit);
		return null;
	}

}vendor/wordfence/mmdb-reader/src/Endianness.php000064400000001273150755146460015603 0ustar00<?php

namespace Wordfence\MmdbReader;

class Endianness {

	const BIG = 0;
	const LITTLE = 1;

	private static $SYSTEM = null;

	private static function detect() {
		$test = unpack('S', "\x00\x01");
		return $test[1] >> 8;
	}

	public static function get() {
		if (self::$SYSTEM === null)
			self::$SYSTEM = self::detect();
		return self::$SYSTEM;
	}

	public static function isBig() {
		return self::get() === self::BIG;
	}

	public static function isLittle() {
		return self::get() === self::LITTLE;
	}

	public static function convert($value, $source, $target = null) {
		if ($target === null)
			$target = self::get();
		if ($target === $source)
			return $value;
		return strrev($value);
	}

}vendor/autoload.php000064400000000404150755146460010375 0ustar00<?php

// autoload.php @generated by Composer

if (!class_exists('ComposerAutoloaderInit736008d0fa54169b3444ae0f3fc20155')) {
	require_once __DIR__ . '/composer/autoload_real.php';
}

return ComposerAutoloaderInit736008d0fa54169b3444ae0f3fc20155::getLoader();
vendor/.htaccess000064400000000542150755146460007655 0ustar00<IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{REQUEST_URI} \.php$
        RewriteRule .* - [F,L,NC]
</IfModule>
<IfModule !mod_rewrite.c>
	<FilesMatch "\.php$">
	<IfModule mod_authz_core.c>
		Require all denied
	</IfModule>
	<IfModule !mod_authz_core.c>
		Order deny,allow
		Deny from all
	</IfModule>
	</FilesMatch>
</IfModule>vendor/composer/autoload_real.php000064400000003467150755146460013243 0ustar00<?php

// autoload_real.php @generated by Composer

class ComposerAutoloaderInit736008d0fa54169b3444ae0f3fc20155
{
    private static $loader;

    public static function loadClassLoader($class)
    {
        if ('Composer\Autoload\ClassLoader' === $class) {
            require __DIR__ . '/ClassLoader.php';
        }
    }

    /**
     * @return \Composer\Autoload\ClassLoader
     */
    public static function getLoader()
    {
        if (null !== self::$loader) {
            return self::$loader;
        }

        spl_autoload_register(array('ComposerAutoloaderInit736008d0fa54169b3444ae0f3fc20155', 'loadClassLoader'), true, true);
        self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
        spl_autoload_unregister(array('ComposerAutoloaderInit736008d0fa54169b3444ae0f3fc20155', 'loadClassLoader'));

        $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
        if ($useStaticLoader) {
            require __DIR__ . '/autoload_static.php';

            call_user_func(\Composer\Autoload\ComposerStaticInit736008d0fa54169b3444ae0f3fc20155::getInitializer($loader));
        } else {
            $map = require __DIR__ . '/autoload_namespaces.php';
            foreach ($map as $namespace => $path) {
                $loader->set($namespace, $path);
            }

            $map = require __DIR__ . '/autoload_psr4.php';
            foreach ($map as $namespace => $path) {
                $loader->setPsr4($namespace, $path);
            }

            $classMap = require __DIR__ . '/autoload_classmap.php';
            if ($classMap) {
                $loader->addClassMap($classMap);
            }
        }

        $loader->register(true);

        return $loader;
    }
}
vendor/composer/autoload_namespaces.php000064400000000225150755146460014424 0ustar00<?php

// autoload_namespaces.php @generated by Composer

$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);

return array(
);
vendor/composer/ClassLoader.php000064400000034065150755146460012622 0ustar00<?php

/*
 * This file is part of Composer.
 *
 * (c) Nils Adermann <naderman@naderman.de>
 *     Jordi Boggiano <j.boggiano@seld.be>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace Composer\Autoload;

/**
 * ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
 *
 *     $loader = new \Composer\Autoload\ClassLoader();
 *
 *     // register classes with namespaces
 *     $loader->add('Symfony\Component', __DIR__.'/component');
 *     $loader->add('Symfony',           __DIR__.'/framework');
 *
 *     // activate the autoloader
 *     $loader->register();
 *
 *     // to enable searching the include path (eg. for PEAR packages)
 *     $loader->setUseIncludePath(true);
 *
 * In this example, if you try to use a class in the Symfony\Component
 * namespace or one of its children (Symfony\Component\Console for instance),
 * the autoloader will first look for the class under the component/
 * directory, and it will then fallback to the framework/ directory if not
 * found before giving up.
 *
 * This class is loosely based on the Symfony UniversalClassLoader.
 *
 * @author Fabien Potencier <fabien@symfony.com>
 * @author Jordi Boggiano <j.boggiano@seld.be>
 * @see    https://www.php-fig.org/psr/psr-0/
 * @see    https://www.php-fig.org/psr/psr-4/
 */
class ClassLoader
{
    private $vendorDir;

    // PSR-4
    private $prefixLengthsPsr4 = array();
    private $prefixDirsPsr4 = array();
    private $fallbackDirsPsr4 = array();

    // PSR-0
    private $prefixesPsr0 = array();
    private $fallbackDirsPsr0 = array();

    private $useIncludePath = false;
    private $classMap = array();
    private $classMapAuthoritative = false;
    private $missingClasses = array();
    private $apcuPrefix;

    private static $registeredLoaders = array();

    public function __construct($vendorDir = null)
    {
        $this->vendorDir = $vendorDir;
    }

    public function getPrefixes()
    {
        if (!empty($this->prefixesPsr0)) {
            return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
        }

        return array();
    }

    public function getPrefixesPsr4()
    {
        return $this->prefixDirsPsr4;
    }

    public function getFallbackDirs()
    {
        return $this->fallbackDirsPsr0;
    }

    public function getFallbackDirsPsr4()
    {
        return $this->fallbackDirsPsr4;
    }

    public function getClassMap()
    {
        return $this->classMap;
    }

    /**
     * @param array $classMap Class to filename map
     */
    public function addClassMap(array $classMap)
    {
        if ($this->classMap) {
            $this->classMap = array_merge($this->classMap, $classMap);
        } else {
            $this->classMap = $classMap;
        }
    }

    /**
     * Registers a set of PSR-0 directories for a given prefix, either
     * appending or prepending to the ones previously set for this prefix.
     *
     * @param string       $prefix  The prefix
     * @param array|string $paths   The PSR-0 root directories
     * @param bool         $prepend Whether to prepend the directories
     */
    public function add($prefix, $paths, $prepend = false)
    {
        if (!$prefix) {
            if ($prepend) {
                $this->fallbackDirsPsr0 = array_merge(
                    (array) $paths,
                    $this->fallbackDirsPsr0
                );
            } else {
                $this->fallbackDirsPsr0 = array_merge(
                    $this->fallbackDirsPsr0,
                    (array) $paths
                );
            }

            return;
        }

        $first = $prefix[0];
        if (!isset($this->prefixesPsr0[$first][$prefix])) {
            $this->prefixesPsr0[$first][$prefix] = (array) $paths;

            return;
        }
        if ($prepend) {
            $this->prefixesPsr0[$first][$prefix] = array_merge(
                (array) $paths,
                $this->prefixesPsr0[$first][$prefix]
            );
        } else {
            $this->prefixesPsr0[$first][$prefix] = array_merge(
                $this->prefixesPsr0[$first][$prefix],
                (array) $paths
            );
        }
    }

    /**
     * Registers a set of PSR-4 directories for a given namespace, either
     * appending or prepending to the ones previously set for this namespace.
     *
     * @param string       $prefix  The prefix/namespace, with trailing '\\'
     * @param array|string $paths   The PSR-4 base directories
     * @param bool         $prepend Whether to prepend the directories
     *
     * @throws \InvalidArgumentException
     */
    public function addPsr4($prefix, $paths, $prepend = false)
    {
        if (!$prefix) {
            // Register directories for the root namespace.
            if ($prepend) {
                $this->fallbackDirsPsr4 = array_merge(
                    (array) $paths,
                    $this->fallbackDirsPsr4
                );
            } else {
                $this->fallbackDirsPsr4 = array_merge(
                    $this->fallbackDirsPsr4,
                    (array) $paths
                );
            }
        } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
            // Register directories for a new namespace.
            $length = strlen($prefix);
            if ('\\' !== $prefix[$length - 1]) {
                throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
            }
            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
            $this->prefixDirsPsr4[$prefix] = (array) $paths;
        } elseif ($prepend) {
            // Prepend directories for an already registered namespace.
            $this->prefixDirsPsr4[$prefix] = array_merge(
                (array) $paths,
                $this->prefixDirsPsr4[$prefix]
            );
        } else {
            // Append directories for an already registered namespace.
            $this->prefixDirsPsr4[$prefix] = array_merge(
                $this->prefixDirsPsr4[$prefix],
                (array) $paths
            );
        }
    }

    /**
     * Registers a set of PSR-0 directories for a given prefix,
     * replacing any others previously set for this prefix.
     *
     * @param string       $prefix The prefix
     * @param array|string $paths  The PSR-0 base directories
     */
    public function set($prefix, $paths)
    {
        if (!$prefix) {
            $this->fallbackDirsPsr0 = (array) $paths;
        } else {
            $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
        }
    }

    /**
     * Registers a set of PSR-4 directories for a given namespace,
     * replacing any others previously set for this namespace.
     *
     * @param string       $prefix The prefix/namespace, with trailing '\\'
     * @param array|string $paths  The PSR-4 base directories
     *
     * @throws \InvalidArgumentException
     */
    public function setPsr4($prefix, $paths)
    {
        if (!$prefix) {
            $this->fallbackDirsPsr4 = (array) $paths;
        } else {
            $length = strlen($prefix);
            if ('\\' !== $prefix[$length - 1]) {
                throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
            }
            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
            $this->prefixDirsPsr4[$prefix] = (array) $paths;
        }
    }

    /**
     * Turns on searching the include path for class files.
     *
     * @param bool $useIncludePath
     */
    public function setUseIncludePath($useIncludePath)
    {
        $this->useIncludePath = $useIncludePath;
    }

    /**
     * Can be used to check if the autoloader uses the include path to check
     * for classes.
     *
     * @return bool
     */
    public function getUseIncludePath()
    {
        return $this->useIncludePath;
    }

    /**
     * Turns off searching the prefix and fallback directories for classes
     * that have not been registered with the class map.
     *
     * @param bool $classMapAuthoritative
     */
    public function setClassMapAuthoritative($classMapAuthoritative)
    {
        $this->classMapAuthoritative = $classMapAuthoritative;
    }

    /**
     * Should class lookup fail if not found in the current class map?
     *
     * @return bool
     */
    public function isClassMapAuthoritative()
    {
        return $this->classMapAuthoritative;
    }

    /**
     * APCu prefix to use to cache found/not-found classes, if the extension is enabled.
     *
     * @param string|null $apcuPrefix
     */
    public function setApcuPrefix($apcuPrefix)
    {
        $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
    }

    /**
     * The APCu prefix in use, or null if APCu caching is not enabled.
     *
     * @return string|null
     */
    public function getApcuPrefix()
    {
        return $this->apcuPrefix;
    }

    /**
     * Registers this instance as an autoloader.
     *
     * @param bool $prepend Whether to prepend the autoloader or not
     */
    public function register($prepend = false)
    {
        spl_autoload_register(array($this, 'loadClass'), true, $prepend);

        if (null === $this->vendorDir) {
            return;
        }

        if ($prepend) {
            self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders;
        } else {
            unset(self::$registeredLoaders[$this->vendorDir]);
            self::$registeredLoaders[$this->vendorDir] = $this;
        }
    }

    /**
     * Unregisters this instance as an autoloader.
     */
    public function unregister()
    {
        spl_autoload_unregister(array($this, 'loadClass'));

        if (null !== $this->vendorDir) {
            unset(self::$registeredLoaders[$this->vendorDir]);
        }
    }

    /**
     * Loads the given class or interface.
     *
     * @param  string    $class The name of the class
     * @return true|null True if loaded, null otherwise
     */
    public function loadClass($class)
    {
        if ($file = $this->findFile($class)) {
            includeFile($file);

            return true;
        }

        return null;
    }

    /**
     * Finds the path to the file where the class is defined.
     *
     * @param string $class The name of the class
     *
     * @return string|false The path if found, false otherwise
     */
    public function findFile($class)
    {
        // class map lookup
        if (isset($this->classMap[$class])) {
            return $this->classMap[$class];
        }
        if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
            return false;
        }
        if (null !== $this->apcuPrefix) {
            $file = apcu_fetch($this->apcuPrefix.$class, $hit);
            if ($hit) {
                return $file;
            }
        }

        $file = $this->findFileWithExtension($class, '.php');

        // Search for Hack files if we are running on HHVM
        if (false === $file && defined('HHVM_VERSION')) {
            $file = $this->findFileWithExtension($class, '.hh');
        }

        if (null !== $this->apcuPrefix) {
            apcu_add($this->apcuPrefix.$class, $file);
        }

        if (false === $file) {
            // Remember that this class does not exist.
            $this->missingClasses[$class] = true;
        }

        return $file;
    }

    /**
     * Returns the currently registered loaders indexed by their corresponding vendor directories.
     *
     * @return self[]
     */
    public static function getRegisteredLoaders()
    {
        return self::$registeredLoaders;
    }

    private function findFileWithExtension($class, $ext)
    {
        // PSR-4 lookup
        $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;

        $first = $class[0];
        if (isset($this->prefixLengthsPsr4[$first])) {
            $subPath = $class;
            while (false !== $lastPos = strrpos($subPath, '\\')) {
                $subPath = substr($subPath, 0, $lastPos);
                $search = $subPath . '\\';
                if (isset($this->prefixDirsPsr4[$search])) {
                    $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
                    foreach ($this->prefixDirsPsr4[$search] as $dir) {
                        if (file_exists($file = $dir . $pathEnd)) {
                            return $file;
                        }
                    }
                }
            }
        }

        // PSR-4 fallback dirs
        foreach ($this->fallbackDirsPsr4 as $dir) {
            if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
                return $file;
            }
        }

        // PSR-0 lookup
        if (false !== $pos = strrpos($class, '\\')) {
            // namespaced class name
            $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
                . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
        } else {
            // PEAR-like class name
            $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
        }

        if (isset($this->prefixesPsr0[$first])) {
            foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
                if (0 === strpos($class, $prefix)) {
                    foreach ($dirs as $dir) {
                        if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
                            return $file;
                        }
                    }
                }
            }
        }

        // PSR-0 fallback dirs
        foreach ($this->fallbackDirsPsr0 as $dir) {
            if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
                return $file;
            }
        }

        // PSR-0 include paths.
        if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
            return $file;
        }

        return false;
    }
}

/**
 * Scope isolated include.
 *
 * Prevents access to $this/self from included files.
 */
function includeFile($file)
{
    include $file;
}
vendor/composer/autoload_psr4.php000064400000000342150755146460013175 0ustar00<?php

// autoload_psr4.php @generated by Composer

$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);

return array(
    'Wordfence\\MmdbReader\\' => array($vendorDir . '/wordfence/mmdb-reader/src'),
);
vendor/composer/LICENSE000064400000002056150755146460010715 0ustar00
Copyright (c) Nils Adermann, Jordi Boggiano

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished
to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

vendor/composer/installed.php000064400000002662150755146460012403 0ustar00<?php return array(
    'root' => array(
        'pretty_version' => 'dev-master',
        'version' => 'dev-master',
        'type' => 'library',
        'install_path' => __DIR__ . '/../../',
        'aliases' => array(),
        'reference' => 'f7e640f16c0caa9077e4eaf4f42a42c9d1c76a05',
        'name' => '__root__',
        'dev' => true,
    ),
    'versions' => array(
        '__root__' => array(
            'pretty_version' => 'dev-master',
            'version' => 'dev-master',
            'type' => 'library',
            'install_path' => __DIR__ . '/../../',
            'aliases' => array(),
            'reference' => 'f7e640f16c0caa9077e4eaf4f42a42c9d1c76a05',
            'dev_requirement' => false,
        ),
        'wordfence/mmdb-reader' => array(
            'pretty_version' => 'v1.0.0',
            'version' => '1.0.0.0',
            'type' => 'library',
            'install_path' => __DIR__ . '/../wordfence/mmdb-reader',
            'aliases' => array(),
            'reference' => 'f72435e75f6654da08c2f0983e527cb207ef1f2a',
            'dev_requirement' => false,
        ),
        'wordfence/wf-waf' => array(
            'pretty_version' => '1.0.0',
            'version' => '1.0.0.0',
            'type' => 'library',
            'install_path' => __DIR__ . '/../wordfence/wf-waf',
            'aliases' => array(),
            'reference' => 'origin/master',
            'dev_requirement' => false,
        ),
    ),
);
vendor/composer/autoload_static.php000064400000002111150755146460013570 0ustar00<?php

// autoload_static.php @generated by Composer

namespace Composer\Autoload;

class ComposerStaticInit736008d0fa54169b3444ae0f3fc20155
{
    public static $prefixLengthsPsr4 = array (
        'W' => 
        array (
            'Wordfence\\MmdbReader\\' => 21,
        ),
    );

    public static $prefixDirsPsr4 = array (
        'Wordfence\\MmdbReader\\' => 
        array (
            0 => __DIR__ . '/..' . '/wordfence/mmdb-reader/src',
        ),
    );

    public static $classMap = array (
        'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
    );

    public static function getInitializer(ClassLoader $loader)
    {
        return \Closure::bind(function () use ($loader) {
            $loader->prefixLengthsPsr4 = ComposerStaticInit736008d0fa54169b3444ae0f3fc20155::$prefixLengthsPsr4;
            $loader->prefixDirsPsr4 = ComposerStaticInit736008d0fa54169b3444ae0f3fc20155::$prefixDirsPsr4;
            $loader->classMap = ComposerStaticInit736008d0fa54169b3444ae0f3fc20155::$classMap;

        }, null, ClassLoader::class);
    }
}
vendor/composer/InstalledVersions.php000064400000033147150755146460014076 0ustar00<?php

/*
 * This file is part of Composer.
 *
 * (c) Nils Adermann <naderman@naderman.de>
 *     Jordi Boggiano <j.boggiano@seld.be>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace Composer;

use Composer\Autoload\ClassLoader;
use Composer\Semver\VersionParser;

/**
 * This class is copied in every Composer installed project and available to all
 *
 * See also https://getcomposer.org/doc/07-runtime.md#installed-versions
 *
 * To require it's presence, you can require `composer-runtime-api ^2.0`
 */
class InstalledVersions
{
    private static $installed;
    private static $canGetVendors;
    private static $installedByVendor = array();

    /**
     * Returns a list of all package names which are present, either by being installed, replaced or provided
     *
     * @return string[]
     * @psalm-return list<string>
     */
    public static function getInstalledPackages()
    {
        $packages = array();
        foreach (self::getInstalled() as $installed) {
            $packages[] = array_keys($installed['versions']);
        }

        if (1 === \count($packages)) {
            return $packages[0];
        }

        return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
    }

    /**
     * Returns a list of all package names with a specific type e.g. 'library'
     *
     * @param  string   $type
     * @return string[]
     * @psalm-return list<string>
     */
    public static function getInstalledPackagesByType($type)
    {
        $packagesByType = array();

        foreach (self::getInstalled() as $installed) {
            foreach ($installed['versions'] as $name => $package) {
                if (isset($package['type']) && $package['type'] === $type) {
                    $packagesByType[] = $name;
                }
            }
        }

        return $packagesByType;
    }

    /**
     * Checks whether the given package is installed
     *
     * This also returns true if the package name is provided or replaced by another package
     *
     * @param  string $packageName
     * @param  bool   $includeDevRequirements
     * @return bool
     */
    public static function isInstalled($packageName, $includeDevRequirements = true)
    {
        foreach (self::getInstalled() as $installed) {
            if (isset($installed['versions'][$packageName])) {
                return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']);
            }
        }

        return false;
    }

    /**
     * Checks whether the given package satisfies a version constraint
     *
     * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call:
     *
     *   Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3')
     *
     * @param  VersionParser $parser      Install composer/semver to have access to this class and functionality
     * @param  string        $packageName
     * @param  string|null   $constraint  A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package
     * @return bool
     */
    public static function satisfies(VersionParser $parser, $packageName, $constraint)
    {
        $constraint = $parser->parseConstraints($constraint);
        $provided = $parser->parseConstraints(self::getVersionRanges($packageName));

        return $provided->matches($constraint);
    }

    /**
     * Returns a version constraint representing all the range(s) which are installed for a given package
     *
     * It is easier to use this via isInstalled() with the $constraint argument if you need to check
     * whether a given version of a package is installed, and not just whether it exists
     *
     * @param  string $packageName
     * @return string Version constraint usable with composer/semver
     */
    public static function getVersionRanges($packageName)
    {
        foreach (self::getInstalled() as $installed) {
            if (!isset($installed['versions'][$packageName])) {
                continue;
            }

            $ranges = array();
            if (isset($installed['versions'][$packageName]['pretty_version'])) {
                $ranges[] = $installed['versions'][$packageName]['pretty_version'];
            }
            if (array_key_exists('aliases', $installed['versions'][$packageName])) {
                $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
            }
            if (array_key_exists('replaced', $installed['versions'][$packageName])) {
                $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
            }
            if (array_key_exists('provided', $installed['versions'][$packageName])) {
                $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
            }

            return implode(' || ', $ranges);
        }

        throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
    }

    /**
     * @param  string      $packageName
     * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
     */
    public static function getVersion($packageName)
    {
        foreach (self::getInstalled() as $installed) {
            if (!isset($installed['versions'][$packageName])) {
                continue;
            }

            if (!isset($installed['versions'][$packageName]['version'])) {
                return null;
            }

            return $installed['versions'][$packageName]['version'];
        }

        throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
    }

    /**
     * @param  string      $packageName
     * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
     */
    public static function getPrettyVersion($packageName)
    {
        foreach (self::getInstalled() as $installed) {
            if (!isset($installed['versions'][$packageName])) {
                continue;
            }

            if (!isset($installed['versions'][$packageName]['pretty_version'])) {
                return null;
            }

            return $installed['versions'][$packageName]['pretty_version'];
        }

        throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
    }

    /**
     * @param  string      $packageName
     * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference
     */
    public static function getReference($packageName)
    {
        foreach (self::getInstalled() as $installed) {
            if (!isset($installed['versions'][$packageName])) {
                continue;
            }

            if (!isset($installed['versions'][$packageName]['reference'])) {
                return null;
            }

            return $installed['versions'][$packageName]['reference'];
        }

        throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
    }

    /**
     * @param  string      $packageName
     * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path.
     */
    public static function getInstallPath($packageName)
    {
        foreach (self::getInstalled() as $installed) {
            if (!isset($installed['versions'][$packageName])) {
                continue;
            }

            return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null;
        }

        throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
    }

    /**
     * @return array
     * @psalm-return array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}
     */
    public static function getRootPackage()
    {
        $installed = self::getInstalled();

        return $installed[0]['root'];
    }

    /**
     * Returns the raw installed.php data for custom implementations
     *
     * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
     * @return array[]
     * @psalm-return array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string}>}
     */
    public static function getRawData()
    {
        @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED);

        if (null === self::$installed) {
            // only require the installed.php file if this file is loaded from its dumped location,
            // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
            if (substr(__DIR__, -8, 1) !== 'C') {
                self::$installed = include __DIR__ . '/installed.php';
            } else {
                self::$installed = array();
            }
        }

        return self::$installed;
    }

    /**
     * Returns the raw data of all installed.php which are currently loaded for custom implementations
     *
     * @return array[]
     * @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string}>}>
     */
    public static function getAllRawData()
    {
        return self::getInstalled();
    }

    /**
     * Lets you reload the static array from another file
     *
     * This is only useful for complex integrations in which a project needs to use
     * this class but then also needs to execute another project's autoloader in process,
     * and wants to ensure both projects have access to their version of installed.php.
     *
     * A typical case would be PHPUnit, where it would need to make sure it reads all
     * the data it needs from this class, then call reload() with
     * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure
     * the project in which it runs can then also use this class safely, without
     * interference between PHPUnit's dependencies and the project's dependencies.
     *
     * @param  array[] $data A vendor/composer/installed.php data set
     * @return void
     *
     * @psalm-param array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string}>} $data
     */
    public static function reload($data)
    {
        self::$installed = $data;
        self::$installedByVendor = array();
    }

    /**
     * @return array[]
     * @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string}>}>
     */
    private static function getInstalled()
    {
        if (null === self::$canGetVendors) {
            self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
        }

        $installed = array();

        if (self::$canGetVendors) {
            foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
                if (isset(self::$installedByVendor[$vendorDir])) {
                    $installed[] = self::$installedByVendor[$vendorDir];
                } elseif (is_file($vendorDir.'/composer/installed.php')) {
                    $installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
                    if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
                        self::$installed = $installed[count($installed) - 1];
                    }
                }
            }
        }

        if (null === self::$installed) {
            // only require the installed.php file if this file is loaded from its dumped location,
            // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
            if (substr(__DIR__, -8, 1) !== 'C') {
                self::$installed = require __DIR__ . '/installed.php';
            } else {
                self::$installed = array();
            }
        }
        $installed[] = self::$installed;

        return $installed;
    }
}
vendor/composer/autoload_classmap.php000064400000000350150755146460014107 0ustar00<?php

// autoload_classmap.php @generated by Composer

$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);

return array(
    'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
);
vendor/composer/installed.json000064400000004352150755146460012563 0ustar00{
    "packages": [
        {
            "name": "wordfence/mmdb-reader",
            "version": "v1.0.0",
            "version_normalized": "1.0.0.0",
            "source": {
                "type": "git",
                "url": "git@github.com:wordfence/mmdb-reader.git",
                "reference": "f72435e75f6654da08c2f0983e527cb207ef1f2a"
            },
            "dist": {
                "type": "zip",
                "url": "https://api.github.com/repos/wordfence/mmdb-reader/zipball/f72435e75f6654da08c2f0983e527cb207ef1f2a",
                "reference": "f72435e75f6654da08c2f0983e527cb207ef1f2a",
                "shasum": ""
            },
            "time": "2022-09-23T20:02:31+00:00",
            "type": "library",
            "installation-source": "dist",
            "autoload": {
                "psr-4": {
                    "Wordfence\\MmdbReader\\": "src/"
                }
            },
            "license": [
                "proprietary"
            ],
            "authors": [
                {
                    "name": "Alex Kenion",
                    "email": "alexk@wordfence.com"
                }
            ],
            "description": "A MaxMind DB (MMDB) reader with no external dependencies that provides support for a wider range of PHP versions than the official library",
            "support": {
                "source": "https://github.com/wordfence/mmdb-reader/tree/v1.0.0",
                "issues": "https://github.com/wordfence/mmdb-reader/issues"
            },
            "install-path": "../wordfence/mmdb-reader"
        },
        {
            "name": "wordfence/wf-waf",
            "version": "1.0.0",
            "version_normalized": "1.0.0.0",
            "source": {
                "type": "git",
                "url": "https://github.com/wordfence/wf-waf.git",
                "reference": "origin/master"
            },
            "dist": {
                "type": "zip",
                "url": "https://github.com/wordfence/wf-waf/zipball/master",
                "reference": "origin/master"
            },
            "type": "library",
            "installation-source": "source",
            "install-path": "../wordfence/wf-waf"
        }
    ],
    "dev": true,
    "dev-package-names": []
}
crypto/vendor/paragonie/random_compat/LICENSE000064400000002112150755146460015167 0ustar00The MIT License (MIT)

Copyright (c) 2015 Paragon Initiative Enterprises

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

crypto/vendor/paragonie/random_compat/lib/random_bytes_mcrypt.php000064400000005150150755146460021532 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1
/**
 * Random_* Compatibility Library
 * for using the new PHP 7 random_* API in PHP 5 projects
 *
 * The MIT License (MIT)
 *
 * Copyright (c) 2015 - 2018 Paragon Initiative Enterprises
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */

if (!is_callable('random_bytes')) {
    /**
     * Powered by ext/mcrypt (and thankfully NOT libmcrypt)
     *
     * @ref https://bugs.php.net/bug.php?id=55169
     * @ref https://github.com/php/php-src/blob/c568ffe5171d942161fc8dda066bce844bdef676/ext/mcrypt/mcrypt.c#L1321-L1386
     *
     * @param int $bytes
     *
     * @throws Exception
     *
     * @return string
     */
    function random_bytes($bytes)
    {
        try {
            /** @var int $bytes */
            $bytes = RandomCompat_intval($bytes);
        } catch (TypeError $ex) {
            throw new TypeError(
                'random_bytes(): $bytes must be an integer'
            );
        }

        if ($bytes < 1) {
            throw new Error(
                'Length must be greater than 0'
            );
        }

        /** @var string|bool $buf */
        $buf = @mcrypt_create_iv((int) $bytes, (int) MCRYPT_DEV_URANDOM);
        if (
            is_string($buf)
                &&
            RandomCompat_strlen($buf) === $bytes
        ) {
            /**
             * Return our random entropy buffer here:
             */
            return $buf;
        }

        /**
         * If we reach here, PHP has failed us.
         */
        throw new Exception(
            'Could not gather sufficient random data'
        );
    }
}
crypto/vendor/paragonie/random_compat/lib/random_bytes_libsodium.php000064400000005674150755146460022216 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1
/**
 * Random_* Compatibility Library
 * for using the new PHP 7 random_* API in PHP 5 projects
 *
 * The MIT License (MIT)
 *
 * Copyright (c) 2015 - 2018 Paragon Initiative Enterprises
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */

if (!is_callable('random_bytes')) {
    /**
     * If the libsodium PHP extension is loaded, we'll use it above any other
     * solution.
     *
     * libsodium-php project:
     * @ref https://github.com/jedisct1/libsodium-php
     *
     * @param int $bytes
     *
     * @throws Exception
     *
     * @return string
     */
    function random_bytes($bytes)
    {
        try {
            /** @var int $bytes */
            $bytes = RandomCompat_intval($bytes);
        } catch (TypeError $ex) {
            throw new TypeError(
                'random_bytes(): $bytes must be an integer'
            );
        }

        if ($bytes < 1) {
            throw new Error(
                'Length must be greater than 0'
            );
        }

        /**
         * \Sodium\randombytes_buf() doesn't allow more than 2147483647 bytes to be
         * generated in one invocation.
         */
        /** @var string|bool $buf */
        if ($bytes > 2147483647) {
            $buf = '';
            for ($i = 0; $i < $bytes; $i += 1073741824) {
                $n = ($bytes - $i) > 1073741824
                    ? 1073741824
                    : $bytes - $i;
                $buf .= \Sodium\randombytes_buf($n);
            }
        } else {
            /** @var string|bool $buf */
            $buf = \Sodium\randombytes_buf($bytes);
        }

        if (is_string($buf)) {
            if (RandomCompat_strlen($buf) === $bytes) {
                return $buf;
            }
        }

        /**
         * If we reach here, PHP has failed us.
         */
        throw new Exception(
            'Could not gather sufficient random data'
        );
    }
}
crypto/vendor/paragonie/random_compat/lib/random_bytes_dev_urandom.php000064400000014561150755146460022525 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1
/**
 * Random_* Compatibility Library
 * for using the new PHP 7 random_* API in PHP 5 projects
 *
 * The MIT License (MIT)
 *
 * Copyright (c) 2015 - 2018 Paragon Initiative Enterprises
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */

if (!defined('RANDOM_COMPAT_READ_BUFFER')) {
    define('RANDOM_COMPAT_READ_BUFFER', 8);
}

if (!is_callable('random_bytes')) {
    /**
     * Unless open_basedir is enabled, use /dev/urandom for
     * random numbers in accordance with best practices
     *
     * Why we use /dev/urandom and not /dev/random
     * @ref https://www.2uo.de/myths-about-urandom
     * @ref http://sockpuppet.org/blog/2014/02/25/safely-generate-random-numbers
     *
     * @param int $bytes
     *
     * @throws Exception
     *
     * @return string
     */
    function random_bytes($bytes)
    {
        /** @var resource $fp */
        static $fp = null;

        /**
         * This block should only be run once
         */
        if (empty($fp)) {
            /**
             * We don't want to ever read C:\dev\random, only /dev/urandom on
             * Unix-like operating systems. While we guard against this
             * condition in random.php, it doesn't hurt to be defensive in depth
             * here.
             *
             * To that end, we only try to open /dev/urandom if we're on a Unix-
             * like operating system (which means the directory separator is set
             * to "/" not "\".
             */
            if (DIRECTORY_SEPARATOR === '/') {
                if (!is_readable('/dev/urandom')) {
                    throw new Exception(
                        'Environment misconfiguration: ' .
                        '/dev/urandom cannot be read.'
                    );
                }
                /**
                 * We use /dev/urandom if it is a char device.
                 * We never fall back to /dev/random
                 */
                /** @var resource|bool $fp */
                $fp = fopen('/dev/urandom', 'rb');
                if (is_resource($fp)) {
                    /** @var array<string, int> $st */
                    $st = fstat($fp);
                    if (($st['mode'] & 0170000) !== 020000) {
                        fclose($fp);
                        $fp = false;
                    }
                }
            }

            if (is_resource($fp)) {
                /**
                 * stream_set_read_buffer() does not exist in HHVM
                 *
                 * If we don't set the stream's read buffer to 0, PHP will
                 * internally buffer 8192 bytes, which can waste entropy
                 *
                 * stream_set_read_buffer returns 0 on success
                 */
                if (is_callable('stream_set_read_buffer')) {
                    stream_set_read_buffer($fp, RANDOM_COMPAT_READ_BUFFER);
                }
                if (is_callable('stream_set_chunk_size')) {
                    stream_set_chunk_size($fp, RANDOM_COMPAT_READ_BUFFER);
                }
            }
        }

        try {
            /** @var int $bytes */
            $bytes = RandomCompat_intval($bytes);
        } catch (TypeError $ex) {
            throw new TypeError(
                'random_bytes(): $bytes must be an integer'
            );
        }

        if ($bytes < 1) {
            throw new Error(
                'Length must be greater than 0'
            );
        }

        /**
         * This if() block only runs if we managed to open a file handle
         *
         * It does not belong in an else {} block, because the above
         * if (empty($fp)) line is logic that should only be run once per
         * page load.
         */
        if (is_resource($fp)) {
            /**
             * @var int
             */
            $remaining = $bytes;

            /**
             * @var string|bool
             */
            $buf = '';

            /**
             * We use fread() in a loop to protect against partial reads
             */
            do {
                /**
                 * @var string|bool
                 */
                $read = fread($fp, $remaining);
                if (!is_string($read)) {
                    /**
                     * We cannot safely read from the file. Exit the
                     * do-while loop and trigger the exception condition
                     *
                     * @var string|bool
                     */
                    $buf = false;
                    break;
                }
                /**
                 * Decrease the number of bytes returned from remaining
                 */
                $remaining -= RandomCompat_strlen($read);
                /**
                 * @var string $buf
                 */
                $buf .= $read;
            } while ($remaining > 0);

            /**
             * Is our result valid?
             * @var string|bool $buf
             */
            if (is_string($buf)) {
                if (RandomCompat_strlen($buf) === $bytes) {
                    /**
                     * Return our random entropy buffer here:
                     */
                    return $buf;
                }
            }
        }

        /**
         * If we reach here, PHP has failed us.
         */
        throw new Exception(
            'Error reading from source device'
        );
    }
}
crypto/vendor/paragonie/random_compat/lib/random_int.php000064400000015170150755146460017603 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (!is_callable('random_int')) {
    /**
     * Random_* Compatibility Library
     * for using the new PHP 7 random_* API in PHP 5 projects
     *
     * The MIT License (MIT)
     *
     * Copyright (c) 2015 - 2018 Paragon Initiative Enterprises
     *
     * Permission is hereby granted, free of charge, to any person obtaining a copy
     * of this software and associated documentation files (the "Software"), to deal
     * in the Software without restriction, including without limitation the rights
     * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
     * copies of the Software, and to permit persons to whom the Software is
     * furnished to do so, subject to the following conditions:
     *
     * The above copyright notice and this permission notice shall be included in
     * all copies or substantial portions of the Software.
     *
     * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
     * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
     * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
     * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
     * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
     * SOFTWARE.
     */

    /**
     * Fetch a random integer between $min and $max inclusive
     *
     * @param int $min
     * @param int $max
     *
     * @throws Exception
     *
     * @return int
     */
    function random_int($min, $max)
    {
        /**
         * Type and input logic checks
         *
         * If you pass it a float in the range (~PHP_INT_MAX, PHP_INT_MAX)
         * (non-inclusive), it will sanely cast it to an int. If you it's equal to
         * ~PHP_INT_MAX or PHP_INT_MAX, we let it fail as not an integer. Floats
         * lose precision, so the <= and => operators might accidentally let a float
         * through.
         */

        try {
            /** @var int $min */
            $min = RandomCompat_intval($min);
        } catch (TypeError $ex) {
            throw new TypeError(
                'random_int(): $min must be an integer'
            );
        }

        try {
            /** @var int $max */
            $max = RandomCompat_intval($max);
        } catch (TypeError $ex) {
            throw new TypeError(
                'random_int(): $max must be an integer'
            );
        }

        /**
         * Now that we've verified our weak typing system has given us an integer,
         * let's validate the logic then we can move forward with generating random
         * integers along a given range.
         */
        if ($min > $max) {
            throw new Error(
                'Minimum value must be less than or equal to the maximum value'
            );
        }

        if ($max === $min) {
            return (int) $min;
        }

        /**
         * Initialize variables to 0
         *
         * We want to store:
         * $bytes => the number of random bytes we need
         * $mask => an integer bitmask (for use with the &) operator
         *          so we can minimize the number of discards
         */
        $attempts = $bits = $bytes = $mask = $valueShift = 0;
        /** @var int $attempts */
        /** @var int $bits */
        /** @var int $bytes */
        /** @var int $mask */
        /** @var int $valueShift */

        /**
         * At this point, $range is a positive number greater than 0. It might
         * overflow, however, if $max - $min > PHP_INT_MAX. PHP will cast it to
         * a float and we will lose some precision.
         *
         * @var int|float $range
         */
        $range = $max - $min;

        /**
         * Test for integer overflow:
         */
        if (!is_int($range)) {

            /**
             * Still safely calculate wider ranges.
             * Provided by @CodesInChaos, @oittaa
             *
             * @ref https://gist.github.com/CodesInChaos/03f9ea0b58e8b2b8d435
             *
             * We use ~0 as a mask in this case because it generates all 1s
             *
             * @ref https://eval.in/400356 (32-bit)
             * @ref http://3v4l.org/XX9r5  (64-bit)
             */
            $bytes = PHP_INT_SIZE;
            /** @var int $mask */
            $mask = ~0;

        } else {

            /**
             * $bits is effectively ceil(log($range, 2)) without dealing with
             * type juggling
             */
            while ($range > 0) {
                if ($bits % 8 === 0) {
                    ++$bytes;
                }
                ++$bits;
                $range >>= 1;
                /** @var int $mask */
                $mask = $mask << 1 | 1;
            }
            $valueShift = $min;
        }

        /** @var int $val */
        $val = 0;
        /**
         * Now that we have our parameters set up, let's begin generating
         * random integers until one falls between $min and $max
         */
        /** @psalm-suppress RedundantCondition */
        do {
            /**
             * The rejection probability is at most 0.5, so this corresponds
             * to a failure probability of 2^-128 for a working RNG
             */
            if ($attempts > 128) {
                throw new Exception(
                    'random_int: RNG is broken - too many rejections'
                );
            }

            /**
             * Let's grab the necessary number of random bytes
             */
            $randomByteString = random_bytes($bytes);

            /**
             * Let's turn $randomByteString into an integer
             *
             * This uses bitwise operators (<< and |) to build an integer
             * out of the values extracted from ord()
             *
             * Example: [9F] | [6D] | [32] | [0C] =>
             *   159 + 27904 + 3276800 + 201326592 =>
             *   204631455
             */
            $val &= 0;
            for ($i = 0; $i < $bytes; ++$i) {
                $val |= ord($randomByteString[$i]) << ($i * 8);
            }
            /** @var int $val */

            /**
             * Apply mask
             */
            $val &= $mask;
            $val += $valueShift;

            ++$attempts;
            /**
             * If $val overflows to a floating point number,
             * ... or is larger than $max,
             * ... or smaller than $min,
             * then try again.
             */
        } while (!is_int($val) || $val > $max || $val < $min);

        return (int) $val;
    }
}
crypto/vendor/paragonie/random_compat/lib/random_bytes_libsodium_legacy.php000064400000005647150755146460023542 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1
/**
 * Random_* Compatibility Library
 * for using the new PHP 7 random_* API in PHP 5 projects
 *
 * The MIT License (MIT)
 *
 * Copyright (c) 2015 - 2018 Paragon Initiative Enterprises
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */

if (!is_callable('random_bytes')) {
    /**
     * If the libsodium PHP extension is loaded, we'll use it above any other
     * solution.
     *
     * libsodium-php project:
     * @ref https://github.com/jedisct1/libsodium-php
     *
     * @param int $bytes
     *
     * @throws Exception
     *
     * @return string
     */
    function random_bytes($bytes)
    {
        try {
            /** @var int $bytes */
            $bytes = RandomCompat_intval($bytes);
        } catch (TypeError $ex) {
            throw new TypeError(
                'random_bytes(): $bytes must be an integer'
            );
        }

        if ($bytes < 1) {
            throw new Error(
                'Length must be greater than 0'
            );
        }

        /**
         * @var string
         */
        $buf = '';

        /**
         * \Sodium\randombytes_buf() doesn't allow more than 2147483647 bytes to be
         * generated in one invocation.
         */
        if ($bytes > 2147483647) {
            for ($i = 0; $i < $bytes; $i += 1073741824) {
                $n = ($bytes - $i) > 1073741824
                    ? 1073741824
                    : $bytes - $i;
                $buf .= Sodium::randombytes_buf((int) $n);
            }
        } else {
            $buf .= Sodium::randombytes_buf((int) $bytes);
        }

        if (is_string($buf)) {
            if (RandomCompat_strlen($buf) === $bytes) {
                return $buf;
            }
        }

        /**
         * If we reach here, PHP has failed us.
         */
        throw new Exception(
            'Could not gather sufficient random data'
        );
    }
}
crypto/vendor/paragonie/random_compat/lib/cast_to_int.php000064400000005332150755146460017756 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1
/**
 * Random_* Compatibility Library
 * for using the new PHP 7 random_* API in PHP 5 projects
 *
 * The MIT License (MIT)
 *
 * Copyright (c) 2015 - 2018 Paragon Initiative Enterprises
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */

if (!is_callable('RandomCompat_intval')) {

    /**
     * Cast to an integer if we can, safely.
     *
     * If you pass it a float in the range (~PHP_INT_MAX, PHP_INT_MAX)
     * (non-inclusive), it will sanely cast it to an int. If you it's equal to
     * ~PHP_INT_MAX or PHP_INT_MAX, we let it fail as not an integer. Floats 
     * lose precision, so the <= and => operators might accidentally let a float
     * through.
     *
     * @param int|float $number    The number we want to convert to an int
     * @param bool      $fail_open Set to true to not throw an exception
     *
     * @return float|int
     * @psalm-suppress InvalidReturnType
     *
     * @throws TypeError
     */
    function RandomCompat_intval($number, $fail_open = false)
    {
        if (is_int($number) || is_float($number)) {
            $number += 0;
        } elseif (is_numeric($number)) {
            /** @psalm-suppress InvalidOperand */
            $number += 0;
        }
        /** @var int|float $number */

        if (
            is_float($number)
                &&
            $number > ~PHP_INT_MAX
                &&
            $number < PHP_INT_MAX
        ) {
            $number = (int) $number;
        }

        if (is_int($number)) {
            return (int) $number;
        } elseif (!$fail_open) {
            throw new TypeError(
                'Expected an integer.'
            );
        }
        return $number;
    }
}
crypto/vendor/paragonie/random_compat/lib/random.php000064400000017544150755146460016740 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1
/**
 * Random_* Compatibility Library
 * for using the new PHP 7 random_* API in PHP 5 projects
 *
 * @version 2.0.17
 * @released 2018-07-04
 *
 * The MIT License (MIT)
 *
 * Copyright (c) 2015 - 2018 Paragon Initiative Enterprises
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */

if (!defined('PHP_VERSION_ID')) {
    // This constant was introduced in PHP 5.2.7
    $RandomCompatversion = array_map('intval', explode('.', PHP_VERSION));
    define(
        'PHP_VERSION_ID',
        $RandomCompatversion[0] * 10000
        + $RandomCompatversion[1] * 100
        + $RandomCompatversion[2]
    );
    $RandomCompatversion = null;
}

/**
 * PHP 7.0.0 and newer have these functions natively.
 */
if (PHP_VERSION_ID >= 70000) {
    return;
}

if (!defined('RANDOM_COMPAT_READ_BUFFER')) {
    define('RANDOM_COMPAT_READ_BUFFER', 8);
}

$RandomCompatDIR = dirname(__FILE__);

require_once $RandomCompatDIR.DIRECTORY_SEPARATOR.'byte_safe_strings.php';
require_once $RandomCompatDIR.DIRECTORY_SEPARATOR.'cast_to_int.php';
require_once $RandomCompatDIR.DIRECTORY_SEPARATOR.'error_polyfill.php';

if (!is_callable('random_bytes')) {
    /**
     * PHP 5.2.0 - 5.6.x way to implement random_bytes()
     *
     * We use conditional statements here to define the function in accordance
     * to the operating environment. It's a micro-optimization.
     *
     * In order of preference:
     *   1. Use libsodium if available.
     *   2. fread() /dev/urandom if available (never on Windows)
     *   3. mcrypt_create_iv($bytes, MCRYPT_DEV_URANDOM)
     *   4. COM('CAPICOM.Utilities.1')->GetRandom()
     *
     * See RATIONALE.md for our reasoning behind this particular order
     */
    if (extension_loaded('libsodium')) {
        // See random_bytes_libsodium.php
        if (PHP_VERSION_ID >= 50300 && is_callable('\\Sodium\\randombytes_buf')) {
            require_once $RandomCompatDIR.DIRECTORY_SEPARATOR.'random_bytes_libsodium.php';
        } elseif (method_exists('Sodium', 'randombytes_buf')) {
            require_once $RandomCompatDIR.DIRECTORY_SEPARATOR.'random_bytes_libsodium_legacy.php';
        }
    }

    /**
     * Reading directly from /dev/urandom:
     */
    if (DIRECTORY_SEPARATOR === '/') {
        // DIRECTORY_SEPARATOR === '/' on Unix-like OSes -- this is a fast
        // way to exclude Windows.
        $RandomCompatUrandom = true;
        $RandomCompat_basedir = ini_get('open_basedir');

        if (!empty($RandomCompat_basedir)) {
            $RandomCompat_open_basedir = explode(
                PATH_SEPARATOR,
                strtolower($RandomCompat_basedir)
            );
            $RandomCompatUrandom = (array() !== array_intersect(
                array('/dev', '/dev/', '/dev/urandom'),
                $RandomCompat_open_basedir
            ));
            $RandomCompat_open_basedir = null;
        }

        if (
            !is_callable('random_bytes')
            &&
            $RandomCompatUrandom
            &&
            @is_readable('/dev/urandom')
        ) {
            // Error suppression on is_readable() in case of an open_basedir
            // or safe_mode failure. All we care about is whether or not we
            // can read it at this point. If the PHP environment is going to
            // panic over trying to see if the file can be read in the first
            // place, that is not helpful to us here.

            // See random_bytes_dev_urandom.php
            require_once $RandomCompatDIR.DIRECTORY_SEPARATOR.'random_bytes_dev_urandom.php';
        }
        // Unset variables after use
        $RandomCompat_basedir = null;
    } else {
        $RandomCompatUrandom = false;
    }

    /**
     * mcrypt_create_iv()
     *
     * We only want to use mcypt_create_iv() if:
     *
     * - random_bytes() hasn't already been defined
     * - the mcrypt extensions is loaded
     * - One of these two conditions is true:
     *   - We're on Windows (DIRECTORY_SEPARATOR !== '/')
     *   - We're not on Windows and /dev/urandom is readabale
     *     (i.e. we're not in a chroot jail)
     * - Special case:
     *   - If we're not on Windows, but the PHP version is between
     *     5.6.10 and 5.6.12, we don't want to use mcrypt. It will
     *     hang indefinitely. This is bad.
     *   - If we're on Windows, we want to use PHP >= 5.3.7 or else
     *     we get insufficient entropy errors.
     */
    if (
        !is_callable('random_bytes')
        &&
        // Windows on PHP < 5.3.7 is broken, but non-Windows is not known to be.
        (DIRECTORY_SEPARATOR === '/' || PHP_VERSION_ID >= 50307)
        &&
        // Prevent this code from hanging indefinitely on non-Windows;
        // see https://bugs.php.net/bug.php?id=69833
        (
            DIRECTORY_SEPARATOR !== '/' ||
            (PHP_VERSION_ID <= 50609 || PHP_VERSION_ID >= 50613)
        )
        &&
        extension_loaded('mcrypt')
    ) {
        // See random_bytes_mcrypt.php
        require_once $RandomCompatDIR.DIRECTORY_SEPARATOR.'random_bytes_mcrypt.php';
    }
    $RandomCompatUrandom = null;

    /**
     * This is a Windows-specific fallback, for when the mcrypt extension
     * isn't loaded.
     */
    if (
        !is_callable('random_bytes')
        &&
        extension_loaded('com_dotnet')
        &&
        class_exists('COM')
    ) {
        $RandomCompat_disabled_classes = preg_split(
            '#\s*,\s*#',
            strtolower(ini_get('disable_classes'))
        );

        if (!in_array('com', $RandomCompat_disabled_classes)) {
            try {
                $RandomCompatCOMtest = new COM('CAPICOM.Utilities.1');
                /** @psalm-suppress TypeDoesNotContainType */
                if (is_callable(array($RandomCompatCOMtest, 'GetRandom'))) {
                    // See random_bytes_com_dotnet.php
                    require_once $RandomCompatDIR.DIRECTORY_SEPARATOR.'random_bytes_com_dotnet.php';
                }
            } catch (com_exception $e) {
                // Don't try to use it.
            }
        }
        $RandomCompat_disabled_classes = null;
        $RandomCompatCOMtest = null;
    }

    /**
     * throw new Exception
     */
    if (!is_callable('random_bytes')) {
        /**
         * We don't have any more options, so let's throw an exception right now
         * and hope the developer won't let it fail silently.
         *
         * @param mixed $length
         * @psalm-suppress InvalidReturnType
         * @throws Exception
         * @return string
         */
        function random_bytes($length)
        {
            unset($length); // Suppress "variable not used" warnings.
            throw new Exception(
                'There is no suitable CSPRNG installed on your system'
            );
            return '';
        }
    }
}

if (!is_callable('random_int')) {
    require_once $RandomCompatDIR.DIRECTORY_SEPARATOR.'random_int.php';
}

$RandomCompatDIR = null;
crypto/vendor/paragonie/random_compat/lib/byte_safe_strings.php000064400000014345150755146460021166 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1
/**
 * Random_* Compatibility Library
 * for using the new PHP 7 random_* API in PHP 5 projects
 *
 * The MIT License (MIT)
 *
 * Copyright (c) 2015 - 2018 Paragon Initiative Enterprises
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */

if (!is_callable('RandomCompat_strlen')) {
    if (
        defined('MB_OVERLOAD_STRING')
            &&
        ((int) ini_get('mbstring.func_overload')) & MB_OVERLOAD_STRING
    ) {
        /**
         * strlen() implementation that isn't brittle to mbstring.func_overload
         *
         * This version uses mb_strlen() in '8bit' mode to treat strings as raw
         * binary rather than UTF-8, ISO-8859-1, etc
         *
         * @param string $binary_string
         *
         * @throws TypeError
         *
         * @return int
         */
        function RandomCompat_strlen($binary_string)
        {
            if (!is_string($binary_string)) {
                throw new TypeError(
                    'RandomCompat_strlen() expects a string'
                );
            }

            return (int) mb_strlen($binary_string, '8bit');
        }

    } else {
        /**
         * strlen() implementation that isn't brittle to mbstring.func_overload
         *
         * This version just used the default strlen()
         *
         * @param string $binary_string
         *
         * @throws TypeError
         *
         * @return int
         */
        function RandomCompat_strlen($binary_string)
        {
            if (!is_string($binary_string)) {
                throw new TypeError(
                    'RandomCompat_strlen() expects a string'
                );
            }
            return (int) strlen($binary_string);
        }
    }
}

if (!is_callable('RandomCompat_substr')) {

    if (
        defined('MB_OVERLOAD_STRING')
            &&
        ((int) ini_get('mbstring.func_overload')) & MB_OVERLOAD_STRING
    ) {
        /**
         * substr() implementation that isn't brittle to mbstring.func_overload
         *
         * This version uses mb_substr() in '8bit' mode to treat strings as raw
         * binary rather than UTF-8, ISO-8859-1, etc
         *
         * @param string $binary_string
         * @param int $start
         * @param int|null $length (optional)
         *
         * @throws TypeError
         *
         * @return string
         */
        function RandomCompat_substr($binary_string, $start, $length = null)
        {
            if (!is_string($binary_string)) {
                throw new TypeError(
                    'RandomCompat_substr(): First argument should be a string'
                );
            }

            if (!is_int($start)) {
                throw new TypeError(
                    'RandomCompat_substr(): Second argument should be an integer'
                );
            }

            if ($length === null) {
                /**
                 * mb_substr($str, 0, NULL, '8bit') returns an empty string on
                 * PHP 5.3, so we have to find the length ourselves.
                 */
                /** @var int $length */
                $length = RandomCompat_strlen($binary_string) - $start;
            } elseif (!is_int($length)) {
                throw new TypeError(
                    'RandomCompat_substr(): Third argument should be an integer, or omitted'
                );
            }

            // Consistency with PHP's behavior
            if ($start === RandomCompat_strlen($binary_string) && $length === 0) {
                return '';
            }
            if ($start > RandomCompat_strlen($binary_string)) {
                return '';
            }

            return (string) mb_substr(
                (string) $binary_string,
                (int) $start,
                (int) $length,
                '8bit'
            );
        }

    } else {

        /**
         * substr() implementation that isn't brittle to mbstring.func_overload
         *
         * This version just uses the default substr()
         *
         * @param string $binary_string
         * @param int $start
         * @param int|null $length (optional)
         *
         * @throws TypeError
         *
         * @return string
         */
        function RandomCompat_substr($binary_string, $start, $length = null)
        {
            if (!is_string($binary_string)) {
                throw new TypeError(
                    'RandomCompat_substr(): First argument should be a string'
                );
            }

            if (!is_int($start)) {
                throw new TypeError(
                    'RandomCompat_substr(): Second argument should be an integer'
                );
            }

            if ($length !== null) {
                if (!is_int($length)) {
                    throw new TypeError(
                        'RandomCompat_substr(): Third argument should be an integer, or omitted'
                    );
                }

                return (string) substr(
                    (string )$binary_string,
                    (int) $start,
                    (int) $length
                );
            }

            return (string) substr(
                (string) $binary_string,
                (int) $start
            );
        }
    }
}
crypto/vendor/paragonie/random_compat/lib/random_bytes_com_dotnet.php000064400000006000150755146460022342 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1
/**
 * Random_* Compatibility Library
 * for using the new PHP 7 random_* API in PHP 5 projects
 *
 * The MIT License (MIT)
 *
 * Copyright (c) 2015 - 2018 Paragon Initiative Enterprises
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */

if (!is_callable('random_bytes')) {
    /**
     * Windows with PHP < 5.3.0 will not have the function
     * openssl_random_pseudo_bytes() available, so let's use
     * CAPICOM to work around this deficiency.
     *
     * @param int $bytes
     *
     * @throws Exception
     *
     * @return string
     */
    function random_bytes($bytes)
    {
        try {
            /** @var int $bytes */
            $bytes = RandomCompat_intval($bytes);
        } catch (TypeError $ex) {
            throw new TypeError(
                'random_bytes(): $bytes must be an integer'
            );
        }

        if ($bytes < 1) {
            throw new Error(
                'Length must be greater than 0'
            );
        }

        /** @var string $buf */
        $buf = '';
        if (!class_exists('COM')) {
            throw new Error(
                'COM does not exist'
            );
        }
        /** @var COM $util */
        $util = new COM('CAPICOM.Utilities.1');
        $execCount = 0;

        /**
         * Let's not let it loop forever. If we run N times and fail to
         * get N bytes of random data, then CAPICOM has failed us.
         */
        do {
            $buf .= base64_decode((string) $util->GetRandom($bytes, 0));
            if (RandomCompat_strlen($buf) >= $bytes) {
                /**
                 * Return our random entropy buffer here:
                 */
                return (string) RandomCompat_substr($buf, 0, $bytes);
            }
            ++$execCount;
        } while ($execCount < $bytes);

        /**
         * If we reach here, PHP has failed us.
         */
        throw new Exception(
            'Could not gather sufficient random data'
        );
    }
}
crypto/vendor/paragonie/random_compat/lib/error_polyfill.php000064400000003271150755146460020513 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1
/**
 * Random_* Compatibility Library
 * for using the new PHP 7 random_* API in PHP 5 projects
 *
 * The MIT License (MIT)
 *
 * Copyright (c) 2015 - 2018 Paragon Initiative Enterprises
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 * 
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */

if (!class_exists('Error', false)) {
    // We can't really avoid making this extend Exception in PHP 5.
    class Error extends Exception
    {

    }
}

if (!class_exists('TypeError', false)) {
    if (is_subclass_of('Error', 'Exception')) {
        class TypeError extends Error
        {

        }
    } else {
        class TypeError extends Exception
        {

        }
    }
}
crypto/vendor/paragonie/random_compat/dist/random_compat.phar.pubkey.asc000064400000000750150755146460022675 0ustar00-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.22 (MingW32)

iQEcBAABAgAGBQJWtW1hAAoJEGuXocKCZATaJf0H+wbZGgskK1dcRTsuVJl9IWip
QwGw/qIKI280SD6/ckoUMxKDCJiFuPR14zmqnS36k7N5UNPnpdTJTS8T11jttSpg
1LCmgpbEIpgaTah+cELDqFCav99fS+bEiAL5lWDAHBTE/XPjGVCqeehyPYref4IW
NDBIEsvnHPHPLsn6X5jq4+Yj5oUixgxaMPiR+bcO4Sh+RzOVB6i2D0upWfRXBFXA
NNnsg9/zjvoC7ZW73y9uSH+dPJTt/Vgfeiv52/v41XliyzbUyLalf02GNPY+9goV
JHG1ulEEBJOCiUD9cE1PUIJwHA/HqyhHIvV350YoEFiHl8iSwm7SiZu5kPjaq74=
=B6+8
-----END PGP SIGNATURE-----
crypto/vendor/paragonie/random_compat/dist/random_compat.phar.pubkey000064400000000327150755146460022130 0ustar00-----BEGIN PUBLIC KEY-----
MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEEd+wCqJDrx5B4OldM0dQE0ZMX+lx1ZWm
pui0SUqD4G29L3NGsz9UhJ/0HjBdbnkhIK5xviT0X5vtjacF6ajgcCArbTB+ds+p
+h7Q084NuSuIpNb6YPfoUFgC/CL9kAoc
-----END PUBLIC KEY-----
crypto/vendor/paragonie/sodium_compat/LICENSE000064400000001534150755146460015216 0ustar00ISC License

Copyright (c) 2016-2023, Paragon Initiative Enterprises <security at paragonie dot com>
Copyright (c) 2013-2019, Frank Denis <j at pureftpd dot org>

Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
crypto/vendor/paragonie/sodium_compat/autoload-php7.php000064400000001665150755146460017413 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1
/*
 This file should only ever be loaded on PHP 7+
 */
if (PHP_VERSION_ID < 70000) {
    return;
}

spl_autoload_register(function ($class) {
    $namespace = 'ParagonIE_Sodium_';
    // Does the class use the namespace prefix?
    $len = strlen($namespace);
    if (strncmp($namespace, $class, $len) !== 0) {
        // no, move to the next registered autoloader
        return false;
    }

    // Get the relative class name
    $relative_class = substr($class, $len);

    // Replace the namespace prefix with the base directory, replace namespace
    // separators with directory separators in the relative class name, append
    // with .php
    $file = dirname(__FILE__) . '/src/' . str_replace('_', '/', $relative_class) . '.php';
    // if the file exists, require it
    if (file_exists($file)) {
        require_once $file;
        return true;
    }
    return false;
});
crypto/vendor/paragonie/sodium_compat/composer-php52.json000064400000004203150755146460017663 0ustar00{
  "name": "paragonie/sodium_compat",
  "description": "Pure PHP implementation of libsodium; uses the PHP extension if it exists",
  "keywords": [
    "PHP",
    "cryptography",
    "elliptic curve",
    "elliptic curve cryptography",
    "Pure-PHP cryptography",
    "side-channel resistant",
    "Curve25519",
    "X25519",
    "ECDH",
    "Elliptic Curve Diffie-Hellman",
    "Ed25519",
    "RFC 7748",
    "RFC 8032",
    "EdDSA",
    "Edwards-curve Digital Signature Algorithm",
    "ChaCha20",
    "Salsa20",
    "Xchacha20",
    "Xsalsa20",
    "Poly1305",
    "BLAKE2b",
    "public-key cryptography",
    "secret-key cryptography",
    "AEAD",
    "Chapoly",
    "Salpoly",
    "ChaCha20-Poly1305",
    "XSalsa20-Poly1305",
    "XChaCha20-Poly1305",
    "encryption",
    "authentication",
    "libsodium"
  ],
  "license": "ISC",
  "authors": [
    {
      "name": "Paragon Initiative Enterprises",
      "email": "security@paragonie.com"
    },
    {
      "name": "Frank Denis",
      "email": "jedisct1@pureftpd.org"
    }
  ],
  "autoload": {
    "files": ["autoload.php"]
  },
  "repositories": [
    {
      "type": "git",
      "url": "https://github.com/garex/phpunit"
    },
    {
      "type": "git",
      "url": "https://github.com/garex/phpunit-mock-objects"
    }
  ],
  "require": {
    "php": "^5.2.4|^5.3|^5.4|^5.5|^5.6|^7|^8",
    "xrstf/composer-php52": "1.*",
    "paragonie/random_compat": ">=1"
  },
  "minimum-stability": "dev",
  "require-dev": {
    "phpunit/phpunit-php52": "dev-3.6.12-php52",
    "phpunit/phpunit-mock-objects-php52": "dev-1.1.0-php52"
  },
  "scripts": {
    "post-install-cmd": [
      "xrstf\\Composer52\\Generator::onPostInstallCmd"
    ],
    "post-update-cmd": [
      "xrstf\\Composer52\\Generator::onPostInstallCmd"
    ],
    "post-autoload-dump": [
      "xrstf\\Composer52\\Generator::onPostInstallCmd"
    ]
  },
  "suggest": {
    "ext-libsodium": "PHP < 7.0: Better performance, password hashing (Argon2i), secure memory management (memzero), and better security.",
    "ext-sodium": "PHP >= 7.0: Better performance, password hashing (Argon2i), secure memory management (memzero), and better security."
  }
}
crypto/vendor/paragonie/sodium_compat/src/PHP52/SplFixedArray.php000064400000010117150755146460021021 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('SplFixedArray')) {
    return;
}

/**
 * The SplFixedArray class provides the main functionalities of array. The
 * main differences between a SplFixedArray and a normal PHP array is that
 * the SplFixedArray is of fixed length and allows only integers within
 * the range as indexes. The advantage is that it allows a faster array
 * implementation.
 */
class SplFixedArray implements Iterator, ArrayAccess, Countable
{
    /** @var array<int, mixed> */
    private $internalArray = array();

    /** @var int $size */
    private $size = 0;

    /**
     * SplFixedArray constructor.
     * @param int $size
     */
    public function __construct($size = 0)
    {
        $this->size = $size;
        $this->internalArray = array();
    }

    /**
     * @return int
     */
    public function count()
    {
        return count($this->internalArray);
    }

    /**
     * @return array
     */
    public function toArray()
    {
        ksort($this->internalArray);
        return (array) $this->internalArray;
    }

    /**
     * @param array $array
     * @param bool $save_indexes
     * @return SplFixedArray
     * @psalm-suppress MixedAssignment
     */
    public static function fromArray(array $array, $save_indexes = true)
    {
        $self = new SplFixedArray(count($array));
        if($save_indexes) {
            foreach($array as $key => $value) {
                $self[(int) $key] = $value;
            }
        } else {
            $i = 0;
            foreach (array_values($array) as $value) {
                $self[$i] = $value;
                $i++;
            }
        }
        return $self;
    }

    /**
     * @return int
     */
    public function getSize()
    {
        return $this->size;
    }

    /**
     * @param int $size
     * @return bool
     */
    public function setSize($size)
    {
        $this->size = $size;
        return true;
    }

    /**
     * @param string|int $index
     * @return bool
     */
    public function offsetExists($index)
    {
        return array_key_exists((int) $index, $this->internalArray);
    }

    /**
     * @param string|int $index
     * @return mixed
     */
    public function offsetGet($index)
    {
        /** @psalm-suppress MixedReturnStatement */
        return $this->internalArray[(int) $index];
    }

    /**
     * @param string|int $index
     * @param mixed $newval
     * @psalm-suppress MixedAssignment
     */
    public function offsetSet($index, $newval)
    {
        $this->internalArray[(int) $index] = $newval;
    }

    /**
     * @param string|int $index
     */
    public function offsetUnset($index)
    {
        unset($this->internalArray[(int) $index]);
    }

    /**
     * Rewind iterator back to the start
     * @link https://php.net/manual/en/splfixedarray.rewind.php
     * @return void
     * @since 5.3.0
     */
    public function rewind()
    {
        reset($this->internalArray);
    }

    /**
     * Return current array entry
     * @link https://php.net/manual/en/splfixedarray.current.php
     * @return mixed The current element value.
     * @since 5.3.0
     */
    public function current()
    {
        /** @psalm-suppress MixedReturnStatement */
        return current($this->internalArray);
    }

    /**
     * Return current array index
     * @return int The current array index.
     */
    public function key()
    {
        return key($this->internalArray);
    }

    /**
     * @return void
     */
    public function next()
    {
        next($this->internalArray);
    }

    /**
     * Check whether the array contains more elements
     * @link https://php.net/manual/en/splfixedarray.valid.php
     * @return bool true if the array contains any more elements, false otherwise.
     */
    public function valid()
    {
        if (empty($this->internalArray)) {
            return false;
        }
        $result = next($this->internalArray) !== false;
        prev($this->internalArray);
        return $result;
    }

    /**
     * Do nothing.
     */
    public function __wakeup()
    {
        // NOP
    }
}crypto/vendor/paragonie/sodium_compat/src/Compat.php000064400000445375150755146460016753 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

/**
 * Libsodium compatibility layer
 *
 * This is the only class you should be interfacing with, as a user of
 * sodium_compat.
 *
 * If the PHP extension for libsodium is installed, it will always use that
 * instead of our implementations. You get better performance and stronger
 * guarantees against side-channels that way.
 *
 * However, if your users don't have the PHP extension installed, we offer a
 * compatible interface here. It will give you the correct results as if the
 * PHP extension was installed. It won't be as fast, of course.
 *
 * CAUTION * CAUTION * CAUTION * CAUTION * CAUTION * CAUTION * CAUTION * CAUTION *
 *                                                                               *
 *     Until audited, this is probably not safe to use! DANGER WILL ROBINSON     *
 *                                                                               *
 * CAUTION * CAUTION * CAUTION * CAUTION * CAUTION * CAUTION * CAUTION * CAUTION *
 */

if (class_exists('ParagonIE_Sodium_Compat', false)) {
    return;
}

class ParagonIE_Sodium_Compat
{
    /**
     * This parameter prevents the use of the PECL extension.
     * It should only be used for unit testing.
     *
     * @var bool
     */
    public static $disableFallbackForUnitTests = false;

    /**
     * Use fast multiplication rather than our constant-time multiplication
     * implementation. Can be enabled at runtime. Only enable this if you
     * are absolutely certain that there is no timing leak on your platform.
     *
     * @var bool
     */
    public static $fastMult = false;

    const LIBRARY_MAJOR_VERSION = 9;
    const LIBRARY_MINOR_VERSION = 1;
    const LIBRARY_VERSION_MAJOR = 9;
    const LIBRARY_VERSION_MINOR = 1;
    const VERSION_STRING = 'polyfill-1.0.8';

    // From libsodium
    const BASE64_VARIANT_ORIGINAL = 1;
    const BASE64_VARIANT_ORIGINAL_NO_PADDING = 3;
    const BASE64_VARIANT_URLSAFE = 5;
    const BASE64_VARIANT_URLSAFE_NO_PADDING = 7;
    const CRYPTO_AEAD_AES256GCM_KEYBYTES = 32;
    const CRYPTO_AEAD_AES256GCM_NSECBYTES = 0;
    const CRYPTO_AEAD_AES256GCM_NPUBBYTES = 12;
    const CRYPTO_AEAD_AES256GCM_ABYTES = 16;
    const CRYPTO_AEAD_CHACHA20POLY1305_KEYBYTES = 32;
    const CRYPTO_AEAD_CHACHA20POLY1305_NSECBYTES = 0;
    const CRYPTO_AEAD_CHACHA20POLY1305_NPUBBYTES = 8;
    const CRYPTO_AEAD_CHACHA20POLY1305_ABYTES = 16;
    const CRYPTO_AEAD_CHACHA20POLY1305_IETF_KEYBYTES = 32;
    const CRYPTO_AEAD_CHACHA20POLY1305_IETF_NSECBYTES = 0;
    const CRYPTO_AEAD_CHACHA20POLY1305_IETF_NPUBBYTES = 12;
    const CRYPTO_AEAD_CHACHA20POLY1305_IETF_ABYTES = 16;
    const CRYPTO_AEAD_XCHACHA20POLY1305_IETF_KEYBYTES = 32;
    const CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NSECBYTES = 0;
    const CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NPUBBYTES = 24;
    const CRYPTO_AEAD_XCHACHA20POLY1305_IETF_ABYTES = 16;
    const CRYPTO_AUTH_BYTES = 32;
    const CRYPTO_AUTH_KEYBYTES = 32;
    const CRYPTO_BOX_SEALBYTES = 16;
    const CRYPTO_BOX_SECRETKEYBYTES = 32;
    const CRYPTO_BOX_PUBLICKEYBYTES = 32;
    const CRYPTO_BOX_KEYPAIRBYTES = 64;
    const CRYPTO_BOX_MACBYTES = 16;
    const CRYPTO_BOX_NONCEBYTES = 24;
    const CRYPTO_BOX_SEEDBYTES = 32;
    const CRYPTO_CORE_RISTRETTO255_BYTES = 32;
    const CRYPTO_CORE_RISTRETTO255_SCALARBYTES = 32;
    const CRYPTO_CORE_RISTRETTO255_HASHBYTES = 64;
    const CRYPTO_CORE_RISTRETTO255_NONREDUCEDSCALARBYTES = 64;
    const CRYPTO_KDF_BYTES_MIN = 16;
    const CRYPTO_KDF_BYTES_MAX = 64;
    const CRYPTO_KDF_CONTEXTBYTES = 8;
    const CRYPTO_KDF_KEYBYTES = 32;
    const CRYPTO_KX_BYTES = 32;
    const CRYPTO_KX_PRIMITIVE = 'x25519blake2b';
    const CRYPTO_KX_SEEDBYTES = 32;
    const CRYPTO_KX_KEYPAIRBYTES = 64;
    const CRYPTO_KX_PUBLICKEYBYTES = 32;
    const CRYPTO_KX_SECRETKEYBYTES = 32;
    const CRYPTO_KX_SESSIONKEYBYTES = 32;
    const CRYPTO_GENERICHASH_BYTES = 32;
    const CRYPTO_GENERICHASH_BYTES_MIN = 16;
    const CRYPTO_GENERICHASH_BYTES_MAX = 64;
    const CRYPTO_GENERICHASH_KEYBYTES = 32;
    const CRYPTO_GENERICHASH_KEYBYTES_MIN = 16;
    const CRYPTO_GENERICHASH_KEYBYTES_MAX = 64;
    const CRYPTO_PWHASH_SALTBYTES = 16;
    const CRYPTO_PWHASH_STRPREFIX = '$argon2id$';
    const CRYPTO_PWHASH_ALG_ARGON2I13 = 1;
    const CRYPTO_PWHASH_ALG_ARGON2ID13 = 2;
    const CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE = 33554432;
    const CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE = 4;
    const CRYPTO_PWHASH_MEMLIMIT_MODERATE = 134217728;
    const CRYPTO_PWHASH_OPSLIMIT_MODERATE = 6;
    const CRYPTO_PWHASH_MEMLIMIT_SENSITIVE = 536870912;
    const CRYPTO_PWHASH_OPSLIMIT_SENSITIVE = 8;
    const CRYPTO_PWHASH_SCRYPTSALSA208SHA256_SALTBYTES = 32;
    const CRYPTO_PWHASH_SCRYPTSALSA208SHA256_STRPREFIX = '$7$';
    const CRYPTO_PWHASH_SCRYPTSALSA208SHA256_OPSLIMIT_INTERACTIVE = 534288;
    const CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_INTERACTIVE = 16777216;
    const CRYPTO_PWHASH_SCRYPTSALSA208SHA256_OPSLIMIT_SENSITIVE = 33554432;
    const CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_SENSITIVE = 1073741824;
    const CRYPTO_SCALARMULT_BYTES = 32;
    const CRYPTO_SCALARMULT_SCALARBYTES = 32;
    const CRYPTO_SCALARMULT_RISTRETTO255_BYTES = 32;
    const CRYPTO_SCALARMULT_RISTRETTO255_SCALARBYTES = 32;
    const CRYPTO_SHORTHASH_BYTES = 8;
    const CRYPTO_SHORTHASH_KEYBYTES = 16;
    const CRYPTO_SECRETBOX_KEYBYTES = 32;
    const CRYPTO_SECRETBOX_MACBYTES = 16;
    const CRYPTO_SECRETBOX_NONCEBYTES = 24;
    const CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_ABYTES = 17;
    const CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_HEADERBYTES = 24;
    const CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_KEYBYTES = 32;
    const CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_PUSH = 0;
    const CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_PULL = 1;
    const CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_REKEY = 2;
    const CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_FINAL = 3;
    const CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_MESSAGEBYTES_MAX = 0x3fffffff80;
    const CRYPTO_SIGN_BYTES = 64;
    const CRYPTO_SIGN_SEEDBYTES = 32;
    const CRYPTO_SIGN_PUBLICKEYBYTES = 32;
    const CRYPTO_SIGN_SECRETKEYBYTES = 64;
    const CRYPTO_SIGN_KEYPAIRBYTES = 96;
    const CRYPTO_STREAM_KEYBYTES = 32;
    const CRYPTO_STREAM_NONCEBYTES = 24;
    const CRYPTO_STREAM_XCHACHA20_KEYBYTES = 32;
    const CRYPTO_STREAM_XCHACHA20_NONCEBYTES = 24;

    /**
     * Add two numbers (little-endian unsigned), storing the value in the first
     * parameter.
     *
     * This mutates $val.
     *
     * @param string $val
     * @param string $addv
     * @return void
     * @throws SodiumException
     */
    public static function add(&$val, $addv)
    {
        $val_len = ParagonIE_Sodium_Core_Util::strlen($val);
        $addv_len = ParagonIE_Sodium_Core_Util::strlen($addv);
        if ($val_len !== $addv_len) {
            throw new SodiumException('values must have the same length');
        }
        $A = ParagonIE_Sodium_Core_Util::stringToIntArray($val);
        $B = ParagonIE_Sodium_Core_Util::stringToIntArray($addv);

        $c = 0;
        for ($i = 0; $i < $val_len; $i++) {
            $c += ($A[$i] + $B[$i]);
            $A[$i] = ($c & 0xff);
            $c >>= 8;
        }
        $val = ParagonIE_Sodium_Core_Util::intArrayToString($A);
    }

    /**
     * @param string $encoded
     * @param int $variant
     * @param string $ignore
     * @return string
     * @throws SodiumException
     */
    public static function base642bin($encoded, $variant, $ignore = '')
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($encoded, 'string', 1);

        /** @var string $encoded */
        $encoded = (string) $encoded;
        if (ParagonIE_Sodium_Core_Util::strlen($encoded) === 0) {
            return '';
        }

        // Just strip before decoding
        if (!empty($ignore)) {
            $encoded = str_replace($ignore, '', $encoded);
        }

        try {
            switch ($variant) {
                case self::BASE64_VARIANT_ORIGINAL:
                    return ParagonIE_Sodium_Core_Base64_Original::decode($encoded, true);
                case self::BASE64_VARIANT_ORIGINAL_NO_PADDING:
                    return ParagonIE_Sodium_Core_Base64_Original::decode($encoded, false);
                case self::BASE64_VARIANT_URLSAFE:
                    return ParagonIE_Sodium_Core_Base64_UrlSafe::decode($encoded, true);
                case self::BASE64_VARIANT_URLSAFE_NO_PADDING:
                    return ParagonIE_Sodium_Core_Base64_UrlSafe::decode($encoded, false);
                default:
                    throw new SodiumException('invalid base64 variant identifier');
            }
        } catch (Exception $ex) {
            if ($ex instanceof SodiumException) {
                throw $ex;
            }
            throw new SodiumException('invalid base64 string');
        }
    }

    /**
     * @param string $decoded
     * @param int $variant
     * @return string
     * @throws SodiumException
     */
    public static function bin2base64($decoded, $variant)
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($decoded, 'string', 1);
        /** @var string $decoded */
        $decoded = (string) $decoded;
        if (ParagonIE_Sodium_Core_Util::strlen($decoded) === 0) {
            return '';
        }

        switch ($variant) {
            case self::BASE64_VARIANT_ORIGINAL:
                return ParagonIE_Sodium_Core_Base64_Original::encode($decoded);
            case self::BASE64_VARIANT_ORIGINAL_NO_PADDING:
                return ParagonIE_Sodium_Core_Base64_Original::encodeUnpadded($decoded);
            case self::BASE64_VARIANT_URLSAFE:
                return ParagonIE_Sodium_Core_Base64_UrlSafe::encode($decoded);
            case self::BASE64_VARIANT_URLSAFE_NO_PADDING:
                return ParagonIE_Sodium_Core_Base64_UrlSafe::encodeUnpadded($decoded);
            default:
                throw new SodiumException('invalid base64 variant identifier');
        }
    }

    /**
     * Cache-timing-safe implementation of bin2hex().
     *
     * @param string $string A string (probably raw binary)
     * @return string        A hexadecimal-encoded string
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     */
    public static function bin2hex($string)
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($string, 'string', 1);

        if (self::useNewSodiumAPI()) {
            return (string) sodium_bin2hex($string);
        }
        if (self::use_fallback('bin2hex')) {
            return (string) call_user_func('\\Sodium\\bin2hex', $string);
        }
        return ParagonIE_Sodium_Core_Util::bin2hex($string);
    }

    /**
     * Compare two strings, in constant-time.
     * Compared to memcmp(), compare() is more useful for sorting.
     *
     * @param string $left  The left operand; must be a string
     * @param string $right The right operand; must be a string
     * @return int          If < 0 if the left operand is less than the right
     *                      If = 0 if both strings are equal
     *                      If > 0 if the right operand is less than the left
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     */
    public static function compare($left, $right)
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($left, 'string', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($right, 'string', 2);

        if (self::useNewSodiumAPI()) {
            return (int) sodium_compare($left, $right);
        }
        if (self::use_fallback('compare')) {
            return (int) call_user_func('\\Sodium\\compare', $left, $right);
        }
        return ParagonIE_Sodium_Core_Util::compare($left, $right);
    }

    /**
     * Is AES-256-GCM even available to use?
     *
     * @return bool
     * @psalm-suppress UndefinedFunction
     * @psalm-suppress MixedInferredReturnType
     * @psalm-suppress MixedReturnStatement
     */
    public static function crypto_aead_aes256gcm_is_available()
    {
        if (self::useNewSodiumAPI()) {
            return sodium_crypto_aead_aes256gcm_is_available();
        }
        if (self::use_fallback('crypto_aead_aes256gcm_is_available')) {
            return call_user_func('\\Sodium\\crypto_aead_aes256gcm_is_available');
        }
        if (PHP_VERSION_ID < 70100) {
            // OpenSSL doesn't support AEAD before 7.1.0
            return false;
        }
        if (!is_callable('openssl_encrypt') || !is_callable('openssl_decrypt')) {
            // OpenSSL isn't installed
            return false;
        }
        return (bool) in_array('aes-256-gcm', openssl_get_cipher_methods());
    }

    /**
     * Authenticated Encryption with Associated Data: Decryption
     *
     * Algorithm:
     *     AES-256-GCM
     *
     * This mode uses a 64-bit random nonce with a 64-bit counter.
     * IETF mode uses a 96-bit random nonce with a 32-bit counter.
     *
     * @param string $ciphertext Encrypted message (with Poly1305 MAC appended)
     * @param string $assocData  Authenticated Associated Data (unencrypted)
     * @param string $nonce      Number to be used only Once; must be 8 bytes
     * @param string $key        Encryption key
     *
     * @return string|bool       The original plaintext message
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     * @psalm-suppress MixedInferredReturnType
     * @psalm-suppress MixedReturnStatement
     */
    public static function crypto_aead_aes256gcm_decrypt(
        $ciphertext = '',
        $assocData = '',
        $nonce = '',
        $key = ''
    ) {
        if (!self::crypto_aead_aes256gcm_is_available()) {
            throw new SodiumException('AES-256-GCM is not available');
        }
        ParagonIE_Sodium_Core_Util::declareScalarType($ciphertext, 'string', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($assocData, 'string', 2);
        ParagonIE_Sodium_Core_Util::declareScalarType($nonce, 'string', 3);
        ParagonIE_Sodium_Core_Util::declareScalarType($key, 'string', 4);

        /* Input validation: */
        if (ParagonIE_Sodium_Core_Util::strlen($nonce) !== self::CRYPTO_AEAD_AES256GCM_NPUBBYTES) {
            throw new SodiumException('Nonce must be CRYPTO_AEAD_AES256GCM_NPUBBYTES long');
        }
        if (ParagonIE_Sodium_Core_Util::strlen($key) !== self::CRYPTO_AEAD_AES256GCM_KEYBYTES) {
            throw new SodiumException('Key must be CRYPTO_AEAD_AES256GCM_KEYBYTES long');
        }
        if (ParagonIE_Sodium_Core_Util::strlen($ciphertext) < self::CRYPTO_AEAD_AES256GCM_ABYTES) {
            throw new SodiumException('Message must be at least CRYPTO_AEAD_AES256GCM_ABYTES long');
        }
        if (!is_callable('openssl_decrypt')) {
            throw new SodiumException('The OpenSSL extension is not installed, or openssl_decrypt() is not available');
        }

        /** @var string $ctext */
        $ctext = ParagonIE_Sodium_Core_Util::substr($ciphertext, 0, -self::CRYPTO_AEAD_AES256GCM_ABYTES);
        /** @var string $authTag */
        $authTag = ParagonIE_Sodium_Core_Util::substr($ciphertext, -self::CRYPTO_AEAD_AES256GCM_ABYTES, 16);
        return openssl_decrypt(
            $ctext,
            'aes-256-gcm',
            $key,
            OPENSSL_RAW_DATA,
            $nonce,
            $authTag,
            $assocData
        );
    }

    /**
     * Authenticated Encryption with Associated Data: Encryption
     *
     * Algorithm:
     *     AES-256-GCM
     *
     * @param string $plaintext Message to be encrypted
     * @param string $assocData Authenticated Associated Data (unencrypted)
     * @param string $nonce     Number to be used only Once; must be 8 bytes
     * @param string $key       Encryption key
     *
     * @return string           Ciphertext with a 16-byte GCM message
     *                          authentication code appended
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     */
    public static function crypto_aead_aes256gcm_encrypt(
        $plaintext = '',
        $assocData = '',
        $nonce = '',
        $key = ''
    ) {
        if (!self::crypto_aead_aes256gcm_is_available()) {
            throw new SodiumException('AES-256-GCM is not available');
        }
        ParagonIE_Sodium_Core_Util::declareScalarType($plaintext, 'string', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($assocData, 'string', 2);
        ParagonIE_Sodium_Core_Util::declareScalarType($nonce, 'string', 3);
        ParagonIE_Sodium_Core_Util::declareScalarType($key, 'string', 4);

        /* Input validation: */
        if (ParagonIE_Sodium_Core_Util::strlen($nonce) !== self::CRYPTO_AEAD_AES256GCM_NPUBBYTES) {
            throw new SodiumException('Nonce must be CRYPTO_AEAD_AES256GCM_NPUBBYTES long');
        }
        if (ParagonIE_Sodium_Core_Util::strlen($key) !== self::CRYPTO_AEAD_AES256GCM_KEYBYTES) {
            throw new SodiumException('Key must be CRYPTO_AEAD_AES256GCM_KEYBYTES long');
        }

        if (!is_callable('openssl_encrypt')) {
            throw new SodiumException('The OpenSSL extension is not installed, or openssl_encrypt() is not available');
        }

        $authTag = '';
        $ciphertext = openssl_encrypt(
            $plaintext,
            'aes-256-gcm',
            $key,
            OPENSSL_RAW_DATA,
            $nonce,
            $authTag,
            $assocData
        );
        return $ciphertext . $authTag;
    }

    /**
     * Return a secure random key for use with the AES-256-GCM
     * symmetric AEAD interface.
     *
     * @return string
     * @throws Exception
     * @throws Error
     */
    public static function crypto_aead_aes256gcm_keygen()
    {
        return random_bytes(self::CRYPTO_AEAD_AES256GCM_KEYBYTES);
    }

    /**
     * Authenticated Encryption with Associated Data: Decryption
     *
     * Algorithm:
     *     ChaCha20-Poly1305
     *
     * This mode uses a 64-bit random nonce with a 64-bit counter.
     * IETF mode uses a 96-bit random nonce with a 32-bit counter.
     *
     * @param string $ciphertext Encrypted message (with Poly1305 MAC appended)
     * @param string $assocData  Authenticated Associated Data (unencrypted)
     * @param string $nonce      Number to be used only Once; must be 8 bytes
     * @param string $key        Encryption key
     *
     * @return string            The original plaintext message
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     * @psalm-suppress MixedInferredReturnType
     * @psalm-suppress MixedReturnStatement
     */
    public static function crypto_aead_chacha20poly1305_decrypt(
        $ciphertext = '',
        $assocData = '',
        $nonce = '',
        $key = ''
    ) {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($ciphertext, 'string', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($assocData, 'string', 2);
        ParagonIE_Sodium_Core_Util::declareScalarType($nonce, 'string', 3);
        ParagonIE_Sodium_Core_Util::declareScalarType($key, 'string', 4);

        /* Input validation: */
        if (ParagonIE_Sodium_Core_Util::strlen($nonce) !== self::CRYPTO_AEAD_CHACHA20POLY1305_NPUBBYTES) {
            throw new SodiumException('Nonce must be CRYPTO_AEAD_CHACHA20POLY1305_NPUBBYTES long');
        }
        if (ParagonIE_Sodium_Core_Util::strlen($key) !== self::CRYPTO_AEAD_CHACHA20POLY1305_KEYBYTES) {
            throw new SodiumException('Key must be CRYPTO_AEAD_CHACHA20POLY1305_KEYBYTES long');
        }
        if (ParagonIE_Sodium_Core_Util::strlen($ciphertext) < self::CRYPTO_AEAD_CHACHA20POLY1305_ABYTES) {
            throw new SodiumException('Message must be at least CRYPTO_AEAD_CHACHA20POLY1305_ABYTES long');
        }

        if (self::useNewSodiumAPI()) {
            /**
             * @psalm-suppress InvalidReturnStatement
             * @psalm-suppress FalsableReturnStatement
             */
            return sodium_crypto_aead_chacha20poly1305_decrypt(
                $ciphertext,
                $assocData,
                $nonce,
                $key
            );
        }
        if (self::use_fallback('crypto_aead_chacha20poly1305_decrypt')) {
            return call_user_func(
                '\\Sodium\\crypto_aead_chacha20poly1305_decrypt',
                $ciphertext,
                $assocData,
                $nonce,
                $key
            );
        }
        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Crypto32::aead_chacha20poly1305_decrypt(
                $ciphertext,
                $assocData,
                $nonce,
                $key
            );
        }
        return ParagonIE_Sodium_Crypto::aead_chacha20poly1305_decrypt(
            $ciphertext,
            $assocData,
            $nonce,
            $key
        );
    }

    /**
     * Authenticated Encryption with Associated Data
     *
     * Algorithm:
     *     ChaCha20-Poly1305
     *
     * This mode uses a 64-bit random nonce with a 64-bit counter.
     * IETF mode uses a 96-bit random nonce with a 32-bit counter.
     *
     * @param string $plaintext Message to be encrypted
     * @param string $assocData Authenticated Associated Data (unencrypted)
     * @param string $nonce     Number to be used only Once; must be 8 bytes
     * @param string $key       Encryption key
     *
     * @return string           Ciphertext with a 16-byte Poly1305 message
     *                          authentication code appended
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     */
    public static function crypto_aead_chacha20poly1305_encrypt(
        $plaintext = '',
        $assocData = '',
        $nonce = '',
        $key = ''
    ) {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($plaintext, 'string', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($assocData, 'string', 2);
        ParagonIE_Sodium_Core_Util::declareScalarType($nonce, 'string', 3);
        ParagonIE_Sodium_Core_Util::declareScalarType($key, 'string', 4);

        /* Input validation: */
        if (ParagonIE_Sodium_Core_Util::strlen($nonce) !== self::CRYPTO_AEAD_CHACHA20POLY1305_NPUBBYTES) {
            throw new SodiumException('Nonce must be CRYPTO_AEAD_CHACHA20POLY1305_NPUBBYTES long');
        }
        if (ParagonIE_Sodium_Core_Util::strlen($key) !== self::CRYPTO_AEAD_CHACHA20POLY1305_KEYBYTES) {
            throw new SodiumException('Key must be CRYPTO_AEAD_CHACHA20POLY1305_KEYBYTES long');
        }

        if (self::useNewSodiumAPI()) {
            return (string) sodium_crypto_aead_chacha20poly1305_encrypt(
                $plaintext,
                $assocData,
                $nonce,
                $key
            );
        }
        if (self::use_fallback('crypto_aead_chacha20poly1305_encrypt')) {
            return (string) call_user_func(
                '\\Sodium\\crypto_aead_chacha20poly1305_encrypt',
                $plaintext,
                $assocData,
                $nonce,
                $key
            );
        }
        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Crypto32::aead_chacha20poly1305_encrypt(
                $plaintext,
                $assocData,
                $nonce,
                $key
            );
        }
        return ParagonIE_Sodium_Crypto::aead_chacha20poly1305_encrypt(
            $plaintext,
            $assocData,
            $nonce,
            $key
        );
    }

    /**
     * Authenticated Encryption with Associated Data: Decryption
     *
     * Algorithm:
     *     ChaCha20-Poly1305
     *
     * IETF mode uses a 96-bit random nonce with a 32-bit counter.
     * Regular mode uses a 64-bit random nonce with a 64-bit counter.
     *
     * @param string $ciphertext Encrypted message (with Poly1305 MAC appended)
     * @param string $assocData  Authenticated Associated Data (unencrypted)
     * @param string $nonce      Number to be used only Once; must be 12 bytes
     * @param string $key        Encryption key
     *
     * @return string            The original plaintext message
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     * @psalm-suppress MixedInferredReturnType
     * @psalm-suppress MixedReturnStatement
     */
    public static function crypto_aead_chacha20poly1305_ietf_decrypt(
        $ciphertext = '',
        $assocData = '',
        $nonce = '',
        $key = ''
    ) {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($ciphertext, 'string', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($assocData, 'string', 2);
        ParagonIE_Sodium_Core_Util::declareScalarType($nonce, 'string', 3);
        ParagonIE_Sodium_Core_Util::declareScalarType($key, 'string', 4);

        /* Input validation: */
        if (ParagonIE_Sodium_Core_Util::strlen($nonce) !== self::CRYPTO_AEAD_CHACHA20POLY1305_IETF_NPUBBYTES) {
            throw new SodiumException('Nonce must be CRYPTO_AEAD_CHACHA20POLY1305_IETF_NPUBBYTES long');
        }
        if (ParagonIE_Sodium_Core_Util::strlen($key) !== self::CRYPTO_AEAD_CHACHA20POLY1305_KEYBYTES) {
            throw new SodiumException('Key must be CRYPTO_AEAD_CHACHA20POLY1305_KEYBYTES long');
        }
        if (ParagonIE_Sodium_Core_Util::strlen($ciphertext) < self::CRYPTO_AEAD_CHACHA20POLY1305_ABYTES) {
            throw new SodiumException('Message must be at least CRYPTO_AEAD_CHACHA20POLY1305_ABYTES long');
        }

        if (self::useNewSodiumAPI()) {
            /**
             * @psalm-suppress InvalidReturnStatement
             * @psalm-suppress FalsableReturnStatement
             */
            return sodium_crypto_aead_chacha20poly1305_ietf_decrypt(
                $ciphertext,
                $assocData,
                $nonce,
                $key
            );
        }
        if (self::use_fallback('crypto_aead_chacha20poly1305_ietf_decrypt')) {
            return call_user_func(
                '\\Sodium\\crypto_aead_chacha20poly1305_ietf_decrypt',
                $ciphertext,
                $assocData,
                $nonce,
                $key
            );
        }
        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Crypto32::aead_chacha20poly1305_ietf_decrypt(
                $ciphertext,
                $assocData,
                $nonce,
                $key
            );
        }
        return ParagonIE_Sodium_Crypto::aead_chacha20poly1305_ietf_decrypt(
            $ciphertext,
            $assocData,
            $nonce,
            $key
        );
    }

    /**
     * Return a secure random key for use with the ChaCha20-Poly1305
     * symmetric AEAD interface.
     *
     * @return string
     * @throws Exception
     * @throws Error
     */
    public static function crypto_aead_chacha20poly1305_keygen()
    {
        return random_bytes(self::CRYPTO_AEAD_CHACHA20POLY1305_KEYBYTES);
    }

    /**
     * Authenticated Encryption with Associated Data
     *
     * Algorithm:
     *     ChaCha20-Poly1305
     *
     * IETF mode uses a 96-bit random nonce with a 32-bit counter.
     * Regular mode uses a 64-bit random nonce with a 64-bit counter.
     *
     * @param string $plaintext Message to be encrypted
     * @param string $assocData Authenticated Associated Data (unencrypted)
     * @param string $nonce Number to be used only Once; must be 8 bytes
     * @param string $key Encryption key
     *
     * @return string           Ciphertext with a 16-byte Poly1305 message
     *                          authentication code appended
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     */
    public static function crypto_aead_chacha20poly1305_ietf_encrypt(
        $plaintext = '',
        $assocData = '',
        $nonce = '',
        $key = ''
    ) {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($plaintext, 'string', 1);
        if (!is_null($assocData)) {
            ParagonIE_Sodium_Core_Util::declareScalarType($assocData, 'string', 2);
        }
        ParagonIE_Sodium_Core_Util::declareScalarType($nonce, 'string', 3);
        ParagonIE_Sodium_Core_Util::declareScalarType($key, 'string', 4);

        /* Input validation: */
        if (ParagonIE_Sodium_Core_Util::strlen($nonce) !== self::CRYPTO_AEAD_CHACHA20POLY1305_IETF_NPUBBYTES) {
            throw new SodiumException('Nonce must be CRYPTO_AEAD_CHACHA20POLY1305_IETF_NPUBBYTES long');
        }
        if (ParagonIE_Sodium_Core_Util::strlen($key) !== self::CRYPTO_AEAD_CHACHA20POLY1305_KEYBYTES) {
            throw new SodiumException('Key must be CRYPTO_AEAD_CHACHA20POLY1305_KEYBYTES long');
        }

        if (self::useNewSodiumAPI()) {
            return (string) sodium_crypto_aead_chacha20poly1305_ietf_encrypt(
                $plaintext,
                $assocData,
                $nonce,
                $key
            );
        }
        if (self::use_fallback('crypto_aead_chacha20poly1305_ietf_encrypt')) {
            return (string) call_user_func(
                '\\Sodium\\crypto_aead_chacha20poly1305_ietf_encrypt',
                $plaintext,
                $assocData,
                $nonce,
                $key
            );
        }
        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Crypto32::aead_chacha20poly1305_ietf_encrypt(
                $plaintext,
                $assocData,
                $nonce,
                $key
            );
        }
        return ParagonIE_Sodium_Crypto::aead_chacha20poly1305_ietf_encrypt(
            $plaintext,
            $assocData,
            $nonce,
            $key
        );
    }

    /**
     * Return a secure random key for use with the ChaCha20-Poly1305
     * symmetric AEAD interface. (IETF version)
     *
     * @return string
     * @throws Exception
     * @throws Error
     */
    public static function crypto_aead_chacha20poly1305_ietf_keygen()
    {
        return random_bytes(self::CRYPTO_AEAD_CHACHA20POLY1305_IETF_KEYBYTES);
    }

    /**
     * Authenticated Encryption with Associated Data: Decryption
     *
     * Algorithm:
     *     XChaCha20-Poly1305
     *
     * This mode uses a 64-bit random nonce with a 64-bit counter.
     * IETF mode uses a 96-bit random nonce with a 32-bit counter.
     *
     * @param string $ciphertext   Encrypted message (with Poly1305 MAC appended)
     * @param string $assocData    Authenticated Associated Data (unencrypted)
     * @param string $nonce        Number to be used only Once; must be 8 bytes
     * @param string $key          Encryption key
     * @param bool   $dontFallback Don't fallback to ext/sodium
     *
     * @return string|bool         The original plaintext message
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     */
    public static function crypto_aead_xchacha20poly1305_ietf_decrypt(
        $ciphertext = '',
        $assocData = '',
        $nonce = '',
        $key = '',
        $dontFallback = false
    ) {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($ciphertext, 'string', 1);
        if (!is_null($assocData)) {
            ParagonIE_Sodium_Core_Util::declareScalarType($assocData, 'string', 2);
        } else {
            $assocData = '';
        }
        ParagonIE_Sodium_Core_Util::declareScalarType($nonce, 'string', 3);
        ParagonIE_Sodium_Core_Util::declareScalarType($key, 'string', 4);

        /* Input validation: */
        if (ParagonIE_Sodium_Core_Util::strlen($nonce) !== self::CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NPUBBYTES) {
            throw new SodiumException('Nonce must be CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NPUBBYTES long');
        }
        if (ParagonIE_Sodium_Core_Util::strlen($key) !== self::CRYPTO_AEAD_XCHACHA20POLY1305_IETF_KEYBYTES) {
            throw new SodiumException('Key must be CRYPTO_AEAD_XCHACHA20POLY1305_IETF_KEYBYTES long');
        }
        if (ParagonIE_Sodium_Core_Util::strlen($ciphertext) < self::CRYPTO_AEAD_XCHACHA20POLY1305_IETF_ABYTES) {
            throw new SodiumException('Message must be at least CRYPTO_AEAD_XCHACHA20POLY1305_IETF_ABYTES long');
        }
        if (self::useNewSodiumAPI() && !$dontFallback) {
            if (is_callable('sodium_crypto_aead_xchacha20poly1305_ietf_decrypt')) {
                return sodium_crypto_aead_xchacha20poly1305_ietf_decrypt(
                    $ciphertext,
                    $assocData,
                    $nonce,
                    $key
                );
            }
        }

        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Crypto32::aead_xchacha20poly1305_ietf_decrypt(
                $ciphertext,
                $assocData,
                $nonce,
                $key
            );
        }
        return ParagonIE_Sodium_Crypto::aead_xchacha20poly1305_ietf_decrypt(
            $ciphertext,
            $assocData,
            $nonce,
            $key
        );
    }

    /**
     * Authenticated Encryption with Associated Data
     *
     * Algorithm:
     *     XChaCha20-Poly1305
     *
     * This mode uses a 64-bit random nonce with a 64-bit counter.
     * IETF mode uses a 96-bit random nonce with a 32-bit counter.
     *
     * @param string $plaintext    Message to be encrypted
     * @param string $assocData    Authenticated Associated Data (unencrypted)
     * @param string $nonce        Number to be used only Once; must be 8 bytes
     * @param string $key          Encryption key
     * @param bool   $dontFallback Don't fallback to ext/sodium
     *
     * @return string           Ciphertext with a 16-byte Poly1305 message
     *                          authentication code appended
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     */
    public static function crypto_aead_xchacha20poly1305_ietf_encrypt(
        $plaintext = '',
        $assocData = '',
        $nonce = '',
        $key = '',
        $dontFallback = false
    ) {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($plaintext, 'string', 1);
        if (!is_null($assocData)) {
            ParagonIE_Sodium_Core_Util::declareScalarType($assocData, 'string', 2);
        } else {
            $assocData = '';
        }
        ParagonIE_Sodium_Core_Util::declareScalarType($nonce, 'string', 3);
        ParagonIE_Sodium_Core_Util::declareScalarType($key, 'string', 4);

        /* Input validation: */
        if (ParagonIE_Sodium_Core_Util::strlen($nonce) !== self::CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NPUBBYTES) {
            throw new SodiumException('Nonce must be CRYPTO_AEAD_XCHACHA20POLY1305_NPUBBYTES long');
        }
        if (ParagonIE_Sodium_Core_Util::strlen($key) !== self::CRYPTO_AEAD_XCHACHA20POLY1305_IETF_KEYBYTES) {
            throw new SodiumException('Key must be CRYPTO_AEAD_XCHACHA20POLY1305_KEYBYTES long');
        }
        if (self::useNewSodiumAPI() && !$dontFallback) {
            if (is_callable('sodium_crypto_aead_xchacha20poly1305_ietf_encrypt')) {
                return sodium_crypto_aead_xchacha20poly1305_ietf_encrypt(
                    $plaintext,
                    $assocData,
                    $nonce,
                    $key
                );
            }
        }

        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Crypto32::aead_xchacha20poly1305_ietf_encrypt(
                $plaintext,
                $assocData,
                $nonce,
                $key
            );
        }
        return ParagonIE_Sodium_Crypto::aead_xchacha20poly1305_ietf_encrypt(
            $plaintext,
            $assocData,
            $nonce,
            $key
        );
    }

    /**
     * Return a secure random key for use with the XChaCha20-Poly1305
     * symmetric AEAD interface.
     *
     * @return string
     * @throws Exception
     * @throws Error
     */
    public static function crypto_aead_xchacha20poly1305_ietf_keygen()
    {
        return random_bytes(self::CRYPTO_AEAD_XCHACHA20POLY1305_IETF_KEYBYTES);
    }

    /**
     * Authenticate a message. Uses symmetric-key cryptography.
     *
     * Algorithm:
     *     HMAC-SHA512-256. Which is HMAC-SHA-512 truncated to 256 bits.
     *     Not to be confused with HMAC-SHA-512/256 which would use the
     *     SHA-512/256 hash function (uses different initial parameters
     *     but still truncates to 256 bits to sidestep length-extension
     *     attacks).
     *
     * @param string $message Message to be authenticated
     * @param string $key Symmetric authentication key
     * @return string         Message authentication code
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     */
    public static function crypto_auth($message, $key)
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($message, 'string', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($key, 'string', 2);

        /* Input validation: */
        if (ParagonIE_Sodium_Core_Util::strlen($key) !== self::CRYPTO_AUTH_KEYBYTES) {
            throw new SodiumException('Argument 2 must be CRYPTO_AUTH_KEYBYTES long.');
        }

        if (self::useNewSodiumAPI()) {
            return (string) sodium_crypto_auth($message, $key);
        }
        if (self::use_fallback('crypto_auth')) {
            return (string) call_user_func('\\Sodium\\crypto_auth', $message, $key);
        }
        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Crypto32::auth($message, $key);
        }
        return ParagonIE_Sodium_Crypto::auth($message, $key);
    }

    /**
     * @return string
     * @throws Exception
     * @throws Error
     */
    public static function crypto_auth_keygen()
    {
        return random_bytes(self::CRYPTO_AUTH_KEYBYTES);
    }

    /**
     * Verify the MAC of a message previously authenticated with crypto_auth.
     *
     * @param string $mac Message authentication code
     * @param string $message Message whose authenticity you are attempting to
     *                        verify (with a given MAC and key)
     * @param string $key Symmetric authentication key
     * @return bool           TRUE if authenticated, FALSE otherwise
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     */
    public static function crypto_auth_verify($mac, $message, $key)
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($mac, 'string', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($message, 'string', 2);
        ParagonIE_Sodium_Core_Util::declareScalarType($key, 'string', 3);

        /* Input validation: */
        if (ParagonIE_Sodium_Core_Util::strlen($mac) !== self::CRYPTO_AUTH_BYTES) {
            throw new SodiumException('Argument 1 must be CRYPTO_AUTH_BYTES long.');
        }
        if (ParagonIE_Sodium_Core_Util::strlen($key) !== self::CRYPTO_AUTH_KEYBYTES) {
            throw new SodiumException('Argument 3 must be CRYPTO_AUTH_KEYBYTES long.');
        }

        if (self::useNewSodiumAPI()) {
            return (bool) sodium_crypto_auth_verify($mac, $message, $key);
        }
        if (self::use_fallback('crypto_auth_verify')) {
            return (bool) call_user_func('\\Sodium\\crypto_auth_verify', $mac, $message, $key);
        }
        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Crypto32::auth_verify($mac, $message, $key);
        }
        return ParagonIE_Sodium_Crypto::auth_verify($mac, $message, $key);
    }

    /**
     * Authenticated asymmetric-key encryption. Both the sender and recipient
     * may decrypt messages.
     *
     * Algorithm: X25519-XSalsa20-Poly1305.
     *     X25519: Elliptic-Curve Diffie Hellman over Curve25519.
     *     XSalsa20: Extended-nonce variant of salsa20.
     *     Poyl1305: Polynomial MAC for one-time message authentication.
     *
     * @param string $plaintext The message to be encrypted
     * @param string $nonce A Number to only be used Once; must be 24 bytes
     * @param string $keypair Your secret key and your recipient's public key
     * @return string           Ciphertext with 16-byte Poly1305 MAC
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     */
    public static function crypto_box($plaintext, $nonce, $keypair)
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($plaintext, 'string', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($nonce, 'string', 2);
        ParagonIE_Sodium_Core_Util::declareScalarType($keypair, 'string', 3);

        /* Input validation: */
        if (ParagonIE_Sodium_Core_Util::strlen($nonce) !== self::CRYPTO_BOX_NONCEBYTES) {
            throw new SodiumException('Argument 2 must be CRYPTO_BOX_NONCEBYTES long.');
        }
        if (ParagonIE_Sodium_Core_Util::strlen($keypair) !== self::CRYPTO_BOX_KEYPAIRBYTES) {
            throw new SodiumException('Argument 3 must be CRYPTO_BOX_KEYPAIRBYTES long.');
        }

        if (self::useNewSodiumAPI()) {
            return (string) sodium_crypto_box($plaintext, $nonce, $keypair);
        }
        if (self::use_fallback('crypto_box')) {
            return (string) call_user_func('\\Sodium\\crypto_box', $plaintext, $nonce, $keypair);
        }
        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Crypto32::box($plaintext, $nonce, $keypair);
        }
        return ParagonIE_Sodium_Crypto::box($plaintext, $nonce, $keypair);
    }

    /**
     * Anonymous public-key encryption. Only the recipient may decrypt messages.
     *
     * Algorithm: X25519-XSalsa20-Poly1305, as with crypto_box.
     *     The sender's X25519 keypair is ephemeral.
     *     Nonce is generated from the BLAKE2b hash of both public keys.
     *
     * This provides ciphertext integrity.
     *
     * @param string $plaintext Message to be sealed
     * @param string $publicKey Your recipient's public key
     * @return string           Sealed message that only your recipient can
     *                          decrypt
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     */
    public static function crypto_box_seal($plaintext, $publicKey)
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($plaintext, 'string', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($publicKey, 'string', 2);

        /* Input validation: */
        if (ParagonIE_Sodium_Core_Util::strlen($publicKey) !== self::CRYPTO_BOX_PUBLICKEYBYTES) {
            throw new SodiumException('Argument 2 must be CRYPTO_BOX_PUBLICKEYBYTES long.');
        }

        if (self::useNewSodiumAPI()) {
            return (string) sodium_crypto_box_seal($plaintext, $publicKey);
        }
        if (self::use_fallback('crypto_box_seal')) {
            return (string) call_user_func('\\Sodium\\crypto_box_seal', $plaintext, $publicKey);
        }
        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Crypto32::box_seal($plaintext, $publicKey);
        }
        return ParagonIE_Sodium_Crypto::box_seal($plaintext, $publicKey);
    }

    /**
     * Opens a message encrypted with crypto_box_seal(). Requires
     * the recipient's keypair (sk || pk) to decrypt successfully.
     *
     * This validates ciphertext integrity.
     *
     * @param string $ciphertext Sealed message to be opened
     * @param string $keypair    Your crypto_box keypair
     * @return string            The original plaintext message
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     * @psalm-suppress MixedInferredReturnType
     * @psalm-suppress MixedReturnStatement
     */
    public static function crypto_box_seal_open($ciphertext, $keypair)
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($ciphertext, 'string', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($keypair, 'string', 2);

        /* Input validation: */
        if (ParagonIE_Sodium_Core_Util::strlen($keypair) !== self::CRYPTO_BOX_KEYPAIRBYTES) {
            throw new SodiumException('Argument 2 must be CRYPTO_BOX_KEYPAIRBYTES long.');
        }

        if (self::useNewSodiumAPI()) {
            /**
             * @psalm-suppress InvalidReturnStatement
             * @psalm-suppress FalsableReturnStatement
             */
            return sodium_crypto_box_seal_open($ciphertext, $keypair);
        }
        if (self::use_fallback('crypto_box_seal_open')) {
            return call_user_func('\\Sodium\\crypto_box_seal_open', $ciphertext, $keypair);
        }
        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Crypto32::box_seal_open($ciphertext, $keypair);
        }
        return ParagonIE_Sodium_Crypto::box_seal_open($ciphertext, $keypair);
    }

    /**
     * Generate a new random X25519 keypair.
     *
     * @return string A 64-byte string; the first 32 are your secret key, while
     *                the last 32 are your public key. crypto_box_secretkey()
     *                and crypto_box_publickey() exist to separate them so you
     *                don't accidentally get them mixed up!
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     */
    public static function crypto_box_keypair()
    {
        if (self::useNewSodiumAPI()) {
            return (string) sodium_crypto_box_keypair();
        }
        if (self::use_fallback('crypto_box_keypair')) {
            return (string) call_user_func('\\Sodium\\crypto_box_keypair');
        }
        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Crypto32::box_keypair();
        }
        return ParagonIE_Sodium_Crypto::box_keypair();
    }

    /**
     * Combine two keys into a keypair for use in library methods that expect
     * a keypair. This doesn't necessarily have to be the same person's keys.
     *
     * @param string $secretKey Secret key
     * @param string $publicKey Public key
     * @return string    Keypair
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     */
    public static function crypto_box_keypair_from_secretkey_and_publickey($secretKey, $publicKey)
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($secretKey, 'string', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($publicKey, 'string', 2);

        /* Input validation: */
        if (ParagonIE_Sodium_Core_Util::strlen($secretKey) !== self::CRYPTO_BOX_SECRETKEYBYTES) {
            throw new SodiumException('Argument 1 must be CRYPTO_BOX_SECRETKEYBYTES long.');
        }
        if (ParagonIE_Sodium_Core_Util::strlen($publicKey) !== self::CRYPTO_BOX_PUBLICKEYBYTES) {
            throw new SodiumException('Argument 2 must be CRYPTO_BOX_PUBLICKEYBYTES long.');
        }

        if (self::useNewSodiumAPI()) {
            return (string) sodium_crypto_box_keypair_from_secretkey_and_publickey($secretKey, $publicKey);
        }
        if (self::use_fallback('crypto_box_keypair_from_secretkey_and_publickey')) {
            return (string) call_user_func('\\Sodium\\crypto_box_keypair_from_secretkey_and_publickey', $secretKey, $publicKey);
        }
        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Crypto32::box_keypair_from_secretkey_and_publickey($secretKey, $publicKey);
        }
        return ParagonIE_Sodium_Crypto::box_keypair_from_secretkey_and_publickey($secretKey, $publicKey);
    }

    /**
     * Decrypt a message previously encrypted with crypto_box().
     *
     * @param string $ciphertext Encrypted message
     * @param string $nonce      Number to only be used Once; must be 24 bytes
     * @param string $keypair    Your secret key and the sender's public key
     * @return string            The original plaintext message
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     * @psalm-suppress MixedInferredReturnType
     * @psalm-suppress MixedReturnStatement
     */
    public static function crypto_box_open($ciphertext, $nonce, $keypair)
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($ciphertext, 'string', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($nonce, 'string', 2);
        ParagonIE_Sodium_Core_Util::declareScalarType($keypair, 'string', 3);

        /* Input validation: */
        if (ParagonIE_Sodium_Core_Util::strlen($ciphertext) < self::CRYPTO_BOX_MACBYTES) {
            throw new SodiumException('Argument 1 must be at least CRYPTO_BOX_MACBYTES long.');
        }
        if (ParagonIE_Sodium_Core_Util::strlen($nonce) !== self::CRYPTO_BOX_NONCEBYTES) {
            throw new SodiumException('Argument 2 must be CRYPTO_BOX_NONCEBYTES long.');
        }
        if (ParagonIE_Sodium_Core_Util::strlen($keypair) !== self::CRYPTO_BOX_KEYPAIRBYTES) {
            throw new SodiumException('Argument 3 must be CRYPTO_BOX_KEYPAIRBYTES long.');
        }

        if (self::useNewSodiumAPI()) {
            /**
             * @psalm-suppress InvalidReturnStatement
             * @psalm-suppress FalsableReturnStatement
             */
            return sodium_crypto_box_open($ciphertext, $nonce, $keypair);
        }
        if (self::use_fallback('crypto_box_open')) {
            return call_user_func('\\Sodium\\crypto_box_open', $ciphertext, $nonce, $keypair);
        }
        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Crypto32::box_open($ciphertext, $nonce, $keypair);
        }
        return ParagonIE_Sodium_Crypto::box_open($ciphertext, $nonce, $keypair);
    }

    /**
     * Extract the public key from a crypto_box keypair.
     *
     * @param string $keypair Keypair containing secret and public key
     * @return string         Your crypto_box public key
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     */
    public static function crypto_box_publickey($keypair)
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($keypair, 'string', 1);

        /* Input validation: */
        if (ParagonIE_Sodium_Core_Util::strlen($keypair) !== self::CRYPTO_BOX_KEYPAIRBYTES) {
            throw new SodiumException('Argument 1 must be CRYPTO_BOX_KEYPAIRBYTES long.');
        }

        if (self::useNewSodiumAPI()) {
            return (string) sodium_crypto_box_publickey($keypair);
        }
        if (self::use_fallback('crypto_box_publickey')) {
            return (string) call_user_func('\\Sodium\\crypto_box_publickey', $keypair);
        }
        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Crypto32::box_publickey($keypair);
        }
        return ParagonIE_Sodium_Crypto::box_publickey($keypair);
    }

    /**
     * Calculate the X25519 public key from a given X25519 secret key.
     *
     * @param string $secretKey Any X25519 secret key
     * @return string           The corresponding X25519 public key
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     */
    public static function crypto_box_publickey_from_secretkey($secretKey)
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($secretKey, 'string', 1);

        /* Input validation: */
        if (ParagonIE_Sodium_Core_Util::strlen($secretKey) !== self::CRYPTO_BOX_SECRETKEYBYTES) {
            throw new SodiumException('Argument 1 must be CRYPTO_BOX_SECRETKEYBYTES long.');
        }

        if (self::useNewSodiumAPI()) {
            return (string) sodium_crypto_box_publickey_from_secretkey($secretKey);
        }
        if (self::use_fallback('crypto_box_publickey_from_secretkey')) {
            return (string) call_user_func('\\Sodium\\crypto_box_publickey_from_secretkey', $secretKey);
        }
        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Crypto32::box_publickey_from_secretkey($secretKey);
        }
        return ParagonIE_Sodium_Crypto::box_publickey_from_secretkey($secretKey);
    }

    /**
     * Extract the secret key from a crypto_box keypair.
     *
     * @param string $keypair
     * @return string         Your crypto_box secret key
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     */
    public static function crypto_box_secretkey($keypair)
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($keypair, 'string', 1);

        /* Input validation: */
        if (ParagonIE_Sodium_Core_Util::strlen($keypair) !== self::CRYPTO_BOX_KEYPAIRBYTES) {
            throw new SodiumException('Argument 1 must be CRYPTO_BOX_KEYPAIRBYTES long.');
        }

        if (self::useNewSodiumAPI()) {
            return (string) sodium_crypto_box_secretkey($keypair);
        }
        if (self::use_fallback('crypto_box_secretkey')) {
            return (string) call_user_func('\\Sodium\\crypto_box_secretkey', $keypair);
        }
        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Crypto32::box_secretkey($keypair);
        }
        return ParagonIE_Sodium_Crypto::box_secretkey($keypair);
    }

    /**
     * Generate an X25519 keypair from a seed.
     *
     * @param string $seed
     * @return string
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     * @psalm-suppress UndefinedFunction
     */
    public static function crypto_box_seed_keypair($seed)
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($seed, 'string', 1);

        if (self::useNewSodiumAPI()) {
            return (string) sodium_crypto_box_seed_keypair($seed);
        }
        if (self::use_fallback('crypto_box_seed_keypair')) {
            return (string) call_user_func('\\Sodium\\crypto_box_seed_keypair', $seed);
        }
        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Crypto32::box_seed_keypair($seed);
        }
        return ParagonIE_Sodium_Crypto::box_seed_keypair($seed);
    }

    /**
     * Calculates a BLAKE2b hash, with an optional key.
     *
     * @param string      $message The message to be hashed
     * @param string|null $key     If specified, must be a string between 16
     *                             and 64 bytes long
     * @param int         $length  Output length in bytes; must be between 16
     *                             and 64 (default = 32)
     * @return string              Raw binary
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     */
    public static function crypto_generichash($message, $key = '', $length = self::CRYPTO_GENERICHASH_BYTES)
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($message, 'string', 1);
        if (is_null($key)) {
            $key = '';
        }
        ParagonIE_Sodium_Core_Util::declareScalarType($key, 'string', 2);
        ParagonIE_Sodium_Core_Util::declareScalarType($length, 'int', 3);

        /* Input validation: */
        if (!empty($key)) {
            if (ParagonIE_Sodium_Core_Util::strlen($key) < self::CRYPTO_GENERICHASH_KEYBYTES_MIN) {
                throw new SodiumException('Unsupported key size. Must be at least CRYPTO_GENERICHASH_KEYBYTES_MIN bytes long.');
            }
            if (ParagonIE_Sodium_Core_Util::strlen($key) > self::CRYPTO_GENERICHASH_KEYBYTES_MAX) {
                throw new SodiumException('Unsupported key size. Must be at most CRYPTO_GENERICHASH_KEYBYTES_MAX bytes long.');
            }
        }

        if (self::useNewSodiumAPI()) {
            return (string) sodium_crypto_generichash($message, $key, $length);
        }
        if (self::use_fallback('crypto_generichash')) {
            return (string) call_user_func('\\Sodium\\crypto_generichash', $message, $key, $length);
        }
        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Crypto32::generichash($message, $key, $length);
        }
        return ParagonIE_Sodium_Crypto::generichash($message, $key, $length);
    }

    /**
     * Get the final BLAKE2b hash output for a given context.
     *
     * @param string $ctx BLAKE2 hashing context. Generated by crypto_generichash_init().
     * @param int $length Hash output size.
     * @return string     Final BLAKE2b hash.
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     * @psalm-suppress ReferenceConstraintViolation
     * @psalm-suppress ConflictingReferenceConstraint
     */
    public static function crypto_generichash_final(&$ctx, $length = self::CRYPTO_GENERICHASH_BYTES)
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($ctx, 'string', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($length, 'int', 2);

        if (self::useNewSodiumAPI()) {
            return sodium_crypto_generichash_final($ctx, $length);
        }
        if (self::use_fallback('crypto_generichash_final')) {
            $func = '\\Sodium\\crypto_generichash_final';
            return (string) $func($ctx, $length);
        }
        if ($length < 1) {
            try {
                self::memzero($ctx);
            } catch (SodiumException $ex) {
                unset($ctx);
            }
            return '';
        }
        if (PHP_INT_SIZE === 4) {
            $result = ParagonIE_Sodium_Crypto32::generichash_final($ctx, $length);
        } else {
            $result = ParagonIE_Sodium_Crypto::generichash_final($ctx, $length);
        }
        try {
            self::memzero($ctx);
        } catch (SodiumException $ex) {
            unset($ctx);
        }
        return $result;
    }

    /**
     * Initialize a BLAKE2b hashing context, for use in a streaming interface.
     *
     * @param string|null $key If specified must be a string between 16 and 64 bytes
     * @param int $length      The size of the desired hash output
     * @return string          A BLAKE2 hashing context, encoded as a string
     *                         (To be 100% compatible with ext/libsodium)
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     */
    public static function crypto_generichash_init($key = '', $length = self::CRYPTO_GENERICHASH_BYTES)
    {
        /* Type checks: */
        if (is_null($key)) {
            $key = '';
        }
        ParagonIE_Sodium_Core_Util::declareScalarType($key, 'string', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($length, 'int', 2);

        /* Input validation: */
        if (!empty($key)) {
            if (ParagonIE_Sodium_Core_Util::strlen($key) < self::CRYPTO_GENERICHASH_KEYBYTES_MIN) {
                throw new SodiumException('Unsupported key size. Must be at least CRYPTO_GENERICHASH_KEYBYTES_MIN bytes long.');
            }
            if (ParagonIE_Sodium_Core_Util::strlen($key) > self::CRYPTO_GENERICHASH_KEYBYTES_MAX) {
                throw new SodiumException('Unsupported key size. Must be at most CRYPTO_GENERICHASH_KEYBYTES_MAX bytes long.');
            }
        }

        if (self::useNewSodiumAPI()) {
            return sodium_crypto_generichash_init($key, $length);
        }
        if (self::use_fallback('crypto_generichash_init')) {
            return (string) call_user_func('\\Sodium\\crypto_generichash_init', $key, $length);
        }
        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Crypto32::generichash_init($key, $length);
        }
        return ParagonIE_Sodium_Crypto::generichash_init($key, $length);
    }

    /**
     * Initialize a BLAKE2b hashing context, for use in a streaming interface.
     *
     * @param string|null $key If specified must be a string between 16 and 64 bytes
     * @param int $length      The size of the desired hash output
     * @param string $salt     Salt (up to 16 bytes)
     * @param string $personal Personalization string (up to 16 bytes)
     * @return string          A BLAKE2 hashing context, encoded as a string
     *                         (To be 100% compatible with ext/libsodium)
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     */
    public static function crypto_generichash_init_salt_personal(
        $key = '',
        $length = self::CRYPTO_GENERICHASH_BYTES,
        $salt = '',
        $personal = ''
    ) {
        /* Type checks: */
        if (is_null($key)) {
            $key = '';
        }
        ParagonIE_Sodium_Core_Util::declareScalarType($key, 'string', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($length, 'int', 2);
        ParagonIE_Sodium_Core_Util::declareScalarType($salt, 'string', 3);
        ParagonIE_Sodium_Core_Util::declareScalarType($personal, 'string', 4);
        $salt = str_pad($salt, 16, "\0", STR_PAD_RIGHT);
        $personal = str_pad($personal, 16, "\0", STR_PAD_RIGHT);

        /* Input validation: */
        if (!empty($key)) {
            /*
            if (ParagonIE_Sodium_Core_Util::strlen($key) < self::CRYPTO_GENERICHASH_KEYBYTES_MIN) {
                throw new SodiumException('Unsupported key size. Must be at least CRYPTO_GENERICHASH_KEYBYTES_MIN bytes long.');
            }
            */
            if (ParagonIE_Sodium_Core_Util::strlen($key) > self::CRYPTO_GENERICHASH_KEYBYTES_MAX) {
                throw new SodiumException('Unsupported key size. Must be at most CRYPTO_GENERICHASH_KEYBYTES_MAX bytes long.');
            }
        }
        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Crypto32::generichash_init_salt_personal($key, $length, $salt, $personal);
        }
        return ParagonIE_Sodium_Crypto::generichash_init_salt_personal($key, $length, $salt, $personal);
    }

    /**
     * Update a BLAKE2b hashing context with additional data.
     *
     * @param string $ctx    BLAKE2 hashing context. Generated by crypto_generichash_init().
     *                       $ctx is passed by reference and gets updated in-place.
     * @param-out string $ctx
     * @param string $message The message to append to the existing hash state.
     * @return void
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     * @psalm-suppress ReferenceConstraintViolation
     */
    public static function crypto_generichash_update(&$ctx, $message)
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($ctx, 'string', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($message, 'string', 2);

        if (self::useNewSodiumAPI()) {
            sodium_crypto_generichash_update($ctx, $message);
            return;
        }
        if (self::use_fallback('crypto_generichash_update')) {
            $func = '\\Sodium\\crypto_generichash_update';
            $func($ctx, $message);
            return;
        }
        if (PHP_INT_SIZE === 4) {
            $ctx = ParagonIE_Sodium_Crypto32::generichash_update($ctx, $message);
        } else {
            $ctx = ParagonIE_Sodium_Crypto::generichash_update($ctx, $message);
        }
    }

    /**
     * @return string
     * @throws Exception
     * @throws Error
     */
    public static function crypto_generichash_keygen()
    {
        return random_bytes(self::CRYPTO_GENERICHASH_KEYBYTES);
    }

    /**
     * @param int $subkey_len
     * @param int $subkey_id
     * @param string $context
     * @param string $key
     * @return string
     * @throws SodiumException
     */
    public static function crypto_kdf_derive_from_key(
        $subkey_len,
        $subkey_id,
        $context,
        $key
    ) {
        ParagonIE_Sodium_Core_Util::declareScalarType($subkey_len, 'int', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($subkey_id, 'int', 2);
        ParagonIE_Sodium_Core_Util::declareScalarType($context, 'string', 3);
        ParagonIE_Sodium_Core_Util::declareScalarType($key, 'string', 4);
        $subkey_id = (int) $subkey_id;
        $subkey_len = (int) $subkey_len;
        $context = (string) $context;
        $key = (string) $key;

        if ($subkey_len < self::CRYPTO_KDF_BYTES_MIN) {
            throw new SodiumException('subkey cannot be smaller than SODIUM_CRYPTO_KDF_BYTES_MIN');
        }
        if ($subkey_len > self::CRYPTO_KDF_BYTES_MAX) {
            throw new SodiumException('subkey cannot be larger than SODIUM_CRYPTO_KDF_BYTES_MAX');
        }
        if ($subkey_id < 0) {
            throw new SodiumException('subkey_id cannot be negative');
        }
        if (ParagonIE_Sodium_Core_Util::strlen($context) !== self::CRYPTO_KDF_CONTEXTBYTES) {
            throw new SodiumException('context should be SODIUM_CRYPTO_KDF_CONTEXTBYTES bytes');
        }
        if (ParagonIE_Sodium_Core_Util::strlen($key) !== self::CRYPTO_KDF_KEYBYTES) {
            throw new SodiumException('key should be SODIUM_CRYPTO_KDF_KEYBYTES bytes');
        }

        $salt = ParagonIE_Sodium_Core_Util::store64_le($subkey_id);
        $state = self::crypto_generichash_init_salt_personal(
            $key,
            $subkey_len,
            $salt,
            $context
        );
        return self::crypto_generichash_final($state, $subkey_len);
    }

    /**
     * @return string
     * @throws Exception
     * @throws Error
     */
    public static function crypto_kdf_keygen()
    {
        return random_bytes(self::CRYPTO_KDF_KEYBYTES);
    }

    /**
     * Perform a key exchange, between a designated client and a server.
     *
     * Typically, you would designate one machine to be the client and the
     * other to be the server. The first two keys are what you'd expect for
     * scalarmult() below, but the latter two public keys don't swap places.
     *
     * | ALICE                          | BOB                                 |
     * | Client                         | Server                              |
     * |--------------------------------|-------------------------------------|
     * | shared = crypto_kx(            | shared = crypto_kx(                 |
     * |     alice_sk,                  |     bob_sk,                         | <- contextual
     * |     bob_pk,                    |     alice_pk,                       | <- contextual
     * |     alice_pk,                  |     alice_pk,                       | <----- static
     * |     bob_pk                     |     bob_pk                          | <----- static
     * | )                              | )                                   |
     *
     * They are used along with the scalarmult product to generate a 256-bit
     * BLAKE2b hash unique to the client and server keys.
     *
     * @param string $my_secret
     * @param string $their_public
     * @param string $client_public
     * @param string $server_public
     * @param bool $dontFallback
     * @return string
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     */
    public static function crypto_kx($my_secret, $their_public, $client_public, $server_public, $dontFallback = false)
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($my_secret, 'string', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($their_public, 'string', 2);
        ParagonIE_Sodium_Core_Util::declareScalarType($client_public, 'string', 3);
        ParagonIE_Sodium_Core_Util::declareScalarType($server_public, 'string', 4);

        /* Input validation: */
        if (ParagonIE_Sodium_Core_Util::strlen($my_secret) !== self::CRYPTO_BOX_SECRETKEYBYTES) {
            throw new SodiumException('Argument 1 must be CRYPTO_BOX_SECRETKEYBYTES long.');
        }
        if (ParagonIE_Sodium_Core_Util::strlen($their_public) !== self::CRYPTO_BOX_PUBLICKEYBYTES) {
            throw new SodiumException('Argument 2 must be CRYPTO_BOX_PUBLICKEYBYTES long.');
        }
        if (ParagonIE_Sodium_Core_Util::strlen($client_public) !== self::CRYPTO_BOX_PUBLICKEYBYTES) {
            throw new SodiumException('Argument 3 must be CRYPTO_BOX_PUBLICKEYBYTES long.');
        }
        if (ParagonIE_Sodium_Core_Util::strlen($server_public) !== self::CRYPTO_BOX_PUBLICKEYBYTES) {
            throw new SodiumException('Argument 4 must be CRYPTO_BOX_PUBLICKEYBYTES long.');
        }

        if (self::useNewSodiumAPI() && !$dontFallback) {
            if (is_callable('sodium_crypto_kx')) {
                return (string) sodium_crypto_kx(
                    $my_secret,
                    $their_public,
                    $client_public,
                    $server_public
                );
            }
        }
        if (self::use_fallback('crypto_kx')) {
            return (string) call_user_func(
                '\\Sodium\\crypto_kx',
                $my_secret,
                $their_public,
                $client_public,
                $server_public
            );
        }
        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Crypto32::keyExchange(
                $my_secret,
                $their_public,
                $client_public,
                $server_public
            );
        }
        return ParagonIE_Sodium_Crypto::keyExchange(
            $my_secret,
            $their_public,
            $client_public,
            $server_public
        );
    }

    /**
     * @param string $seed
     * @return string
     * @throws SodiumException
     */
    public static function crypto_kx_seed_keypair($seed)
    {
        ParagonIE_Sodium_Core_Util::declareScalarType($seed, 'string', 1);

        $seed = (string) $seed;

        if (ParagonIE_Sodium_Core_Util::strlen($seed) !== self::CRYPTO_KX_SEEDBYTES) {
            throw new SodiumException('seed must be SODIUM_CRYPTO_KX_SEEDBYTES bytes');
        }

        $sk = self::crypto_generichash($seed, '', self::CRYPTO_KX_SECRETKEYBYTES);
        $pk = self::crypto_scalarmult_base($sk);
        return $sk . $pk;
    }

    /**
     * @return string
     * @throws Exception
     */
    public static function crypto_kx_keypair()
    {
        $sk = self::randombytes_buf(self::CRYPTO_KX_SECRETKEYBYTES);
        $pk = self::crypto_scalarmult_base($sk);
        return $sk . $pk;
    }

    /**
     * @param string $keypair
     * @param string $serverPublicKey
     * @return array{0: string, 1: string}
     * @throws SodiumException
     */
    public static function crypto_kx_client_session_keys($keypair, $serverPublicKey)
    {
        ParagonIE_Sodium_Core_Util::declareScalarType($keypair, 'string', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($serverPublicKey, 'string', 2);

        $keypair = (string) $keypair;
        $serverPublicKey = (string) $serverPublicKey;

        if (ParagonIE_Sodium_Core_Util::strlen($keypair) !== self::CRYPTO_KX_KEYPAIRBYTES) {
            throw new SodiumException('keypair should be SODIUM_CRYPTO_KX_KEYPAIRBYTES bytes');
        }
        if (ParagonIE_Sodium_Core_Util::strlen($serverPublicKey) !== self::CRYPTO_KX_PUBLICKEYBYTES) {
            throw new SodiumException('public keys must be SODIUM_CRYPTO_KX_PUBLICKEYBYTES bytes');
        }

        $sk = self::crypto_kx_secretkey($keypair);
        $pk = self::crypto_kx_publickey($keypair);
        $h = self::crypto_generichash_init(null, self::CRYPTO_KX_SESSIONKEYBYTES * 2);
        self::crypto_generichash_update($h, self::crypto_scalarmult($sk, $serverPublicKey));
        self::crypto_generichash_update($h, $pk);
        self::crypto_generichash_update($h, $serverPublicKey);
        $sessionKeys = self::crypto_generichash_final($h, self::CRYPTO_KX_SESSIONKEYBYTES * 2);
        return array(
            ParagonIE_Sodium_Core_Util::substr(
                $sessionKeys,
                0,
                self::CRYPTO_KX_SESSIONKEYBYTES
            ),
            ParagonIE_Sodium_Core_Util::substr(
                $sessionKeys,
                self::CRYPTO_KX_SESSIONKEYBYTES,
                self::CRYPTO_KX_SESSIONKEYBYTES
            )
        );
    }

    /**
     * @param string $keypair
     * @param string $clientPublicKey
     * @return array{0: string, 1: string}
     * @throws SodiumException
     */
    public static function crypto_kx_server_session_keys($keypair, $clientPublicKey)
    {
        ParagonIE_Sodium_Core_Util::declareScalarType($keypair, 'string', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($clientPublicKey, 'string', 2);

        $keypair = (string) $keypair;
        $clientPublicKey = (string) $clientPublicKey;

        if (ParagonIE_Sodium_Core_Util::strlen($keypair) !== self::CRYPTO_KX_KEYPAIRBYTES) {
            throw new SodiumException('keypair should be SODIUM_CRYPTO_KX_KEYPAIRBYTES bytes');
        }
        if (ParagonIE_Sodium_Core_Util::strlen($clientPublicKey) !== self::CRYPTO_KX_PUBLICKEYBYTES) {
            throw new SodiumException('public keys must be SODIUM_CRYPTO_KX_PUBLICKEYBYTES bytes');
        }

        $sk = self::crypto_kx_secretkey($keypair);
        $pk = self::crypto_kx_publickey($keypair);
        $h = self::crypto_generichash_init(null, self::CRYPTO_KX_SESSIONKEYBYTES * 2);
        self::crypto_generichash_update($h, self::crypto_scalarmult($sk, $clientPublicKey));
        self::crypto_generichash_update($h, $clientPublicKey);
        self::crypto_generichash_update($h, $pk);
        $sessionKeys = self::crypto_generichash_final($h, self::CRYPTO_KX_SESSIONKEYBYTES * 2);
        return array(
            ParagonIE_Sodium_Core_Util::substr(
                $sessionKeys,
                self::CRYPTO_KX_SESSIONKEYBYTES,
                self::CRYPTO_KX_SESSIONKEYBYTES
            ),
            ParagonIE_Sodium_Core_Util::substr(
                $sessionKeys,
                0,
                self::CRYPTO_KX_SESSIONKEYBYTES
            )
        );
    }

    /**
     * @param string $kp
     * @return string
     * @throws SodiumException
     */
    public static function crypto_kx_secretkey($kp)
    {
        return ParagonIE_Sodium_Core_Util::substr(
            $kp,
            0,
            self::CRYPTO_KX_SECRETKEYBYTES
        );
    }

    /**
     * @param string $kp
     * @return string
     * @throws SodiumException
     */
    public static function crypto_kx_publickey($kp)
    {
        return ParagonIE_Sodium_Core_Util::substr(
            $kp,
            self::CRYPTO_KX_SECRETKEYBYTES,
            self::CRYPTO_KX_PUBLICKEYBYTES
        );
    }

    /**
     * @param int $outlen
     * @param string $passwd
     * @param string $salt
     * @param int $opslimit
     * @param int $memlimit
     * @param int|null $alg
     * @return string
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     */
    public static function crypto_pwhash($outlen, $passwd, $salt, $opslimit, $memlimit, $alg = null)
    {
        ParagonIE_Sodium_Core_Util::declareScalarType($outlen, 'int', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($passwd, 'string', 2);
        ParagonIE_Sodium_Core_Util::declareScalarType($salt,  'string', 3);
        ParagonIE_Sodium_Core_Util::declareScalarType($opslimit, 'int', 4);
        ParagonIE_Sodium_Core_Util::declareScalarType($memlimit, 'int', 5);

        if (self::useNewSodiumAPI()) {
            if (!is_null($alg)) {
                ParagonIE_Sodium_Core_Util::declareScalarType($alg, 'int', 6);
                return sodium_crypto_pwhash($outlen, $passwd, $salt, $opslimit, $memlimit, $alg);
            }
            return sodium_crypto_pwhash($outlen, $passwd, $salt, $opslimit, $memlimit);
        }
        if (self::use_fallback('crypto_pwhash')) {
            return (string) call_user_func('\\Sodium\\crypto_pwhash', $outlen, $passwd, $salt, $opslimit, $memlimit);
        }
        // This is the best we can do.
        throw new SodiumException(
            'This is not implemented, as it is not possible to implement Argon2i with acceptable performance in pure-PHP'
        );
    }

    /**
     * !Exclusive to sodium_compat!
     *
     * This returns TRUE if the native crypto_pwhash API is available by libsodium.
     * This returns FALSE if only sodium_compat is available.
     *
     * @return bool
     */
    public static function crypto_pwhash_is_available()
    {
        if (self::useNewSodiumAPI()) {
            return true;
        }
        if (self::use_fallback('crypto_pwhash')) {
            return true;
        }
        return false;
    }

    /**
     * @param string $passwd
     * @param int $opslimit
     * @param int $memlimit
     * @return string
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     */
    public static function crypto_pwhash_str($passwd, $opslimit, $memlimit)
    {
        ParagonIE_Sodium_Core_Util::declareScalarType($passwd, 'string', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($opslimit, 'int', 2);
        ParagonIE_Sodium_Core_Util::declareScalarType($memlimit, 'int', 3);

        if (self::useNewSodiumAPI()) {
            return sodium_crypto_pwhash_str($passwd, $opslimit, $memlimit);
        }
        if (self::use_fallback('crypto_pwhash_str')) {
            return (string) call_user_func('\\Sodium\\crypto_pwhash_str', $passwd, $opslimit, $memlimit);
        }
        // This is the best we can do.
        throw new SodiumException(
            'This is not implemented, as it is not possible to implement Argon2i with acceptable performance in pure-PHP'
        );
    }

    /**
     * Do we need to rehash this password?
     *
     * @param string $hash
     * @param int $opslimit
     * @param int $memlimit
     * @return bool
     * @throws SodiumException
     */
    public static function crypto_pwhash_str_needs_rehash($hash, $opslimit, $memlimit)
    {
        ParagonIE_Sodium_Core_Util::declareScalarType($hash, 'string', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($opslimit, 'int', 2);
        ParagonIE_Sodium_Core_Util::declareScalarType($memlimit, 'int', 3);

        // Just grab the first 4 pieces.
        $pieces = explode('$', (string) $hash);
        $prefix = implode('$', array_slice($pieces, 0, 4));

        // Rebuild the expected header.
        /** @var int $ops */
        $ops = (int) $opslimit;
        /** @var int $mem */
        $mem = (int) $memlimit >> 10;
        $encoded = self::CRYPTO_PWHASH_STRPREFIX . 'v=19$m=' . $mem . ',t=' . $ops . ',p=1';

        // Do they match? If so, we don't need to rehash, so return false.
        return !ParagonIE_Sodium_Core_Util::hashEquals($encoded, $prefix);
    }

    /**
     * @param string $passwd
     * @param string $hash
     * @return bool
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     */
    public static function crypto_pwhash_str_verify($passwd, $hash)
    {
        ParagonIE_Sodium_Core_Util::declareScalarType($passwd, 'string', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($hash, 'string', 2);

        if (self::useNewSodiumAPI()) {
            return (bool) sodium_crypto_pwhash_str_verify($passwd, $hash);
        }
        if (self::use_fallback('crypto_pwhash_str_verify')) {
            return (bool) call_user_func('\\Sodium\\crypto_pwhash_str_verify', $passwd, $hash);
        }
        // This is the best we can do.
        throw new SodiumException(
            'This is not implemented, as it is not possible to implement Argon2i with acceptable performance in pure-PHP'
        );
    }

    /**
     * @param int $outlen
     * @param string $passwd
     * @param string $salt
     * @param int $opslimit
     * @param int $memlimit
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function crypto_pwhash_scryptsalsa208sha256($outlen, $passwd, $salt, $opslimit, $memlimit)
    {
        ParagonIE_Sodium_Core_Util::declareScalarType($outlen, 'int', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($passwd, 'string', 2);
        ParagonIE_Sodium_Core_Util::declareScalarType($salt,  'string', 3);
        ParagonIE_Sodium_Core_Util::declareScalarType($opslimit, 'int', 4);
        ParagonIE_Sodium_Core_Util::declareScalarType($memlimit, 'int', 5);

        if (self::useNewSodiumAPI()) {
            return (string) sodium_crypto_pwhash_scryptsalsa208sha256(
                (int) $outlen,
                (string) $passwd,
                (string) $salt,
                (int) $opslimit,
                (int) $memlimit
            );
        }
        if (self::use_fallback('crypto_pwhash_scryptsalsa208sha256')) {
            return (string) call_user_func(
                '\\Sodium\\crypto_pwhash_scryptsalsa208sha256',
                (int) $outlen,
                (string) $passwd,
                (string) $salt,
                (int) $opslimit,
                (int) $memlimit
            );
        }
        // This is the best we can do.
        throw new SodiumException(
            'This is not implemented, as it is not possible to implement Scrypt with acceptable performance in pure-PHP'
        );
    }

    /**
     * !Exclusive to sodium_compat!
     *
     * This returns TRUE if the native crypto_pwhash API is available by libsodium.
     * This returns FALSE if only sodium_compat is available.
     *
     * @return bool
     */
    public static function crypto_pwhash_scryptsalsa208sha256_is_available()
    {
        if (self::useNewSodiumAPI()) {
            return true;
        }
        if (self::use_fallback('crypto_pwhash_scryptsalsa208sha256')) {
            return true;
        }
        return false;
    }

    /**
     * @param string $passwd
     * @param int $opslimit
     * @param int $memlimit
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function crypto_pwhash_scryptsalsa208sha256_str($passwd, $opslimit, $memlimit)
    {
        ParagonIE_Sodium_Core_Util::declareScalarType($passwd, 'string', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($opslimit, 'int', 2);
        ParagonIE_Sodium_Core_Util::declareScalarType($memlimit, 'int', 3);

        if (self::useNewSodiumAPI()) {
            return (string) sodium_crypto_pwhash_scryptsalsa208sha256_str(
                (string) $passwd,
                (int) $opslimit,
                (int) $memlimit
            );
        }
        if (self::use_fallback('crypto_pwhash_scryptsalsa208sha256_str')) {
            return (string) call_user_func(
                '\\Sodium\\crypto_pwhash_scryptsalsa208sha256_str',
                (string) $passwd,
                (int) $opslimit,
                (int) $memlimit
            );
        }
        // This is the best we can do.
        throw new SodiumException(
            'This is not implemented, as it is not possible to implement Scrypt with acceptable performance in pure-PHP'
        );
    }

    /**
     * @param string $passwd
     * @param string $hash
     * @return bool
     * @throws SodiumException
     * @throws TypeError
     */
    public static function crypto_pwhash_scryptsalsa208sha256_str_verify($passwd, $hash)
    {
        ParagonIE_Sodium_Core_Util::declareScalarType($passwd, 'string', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($hash, 'string', 2);

        if (self::useNewSodiumAPI()) {
            return (bool) sodium_crypto_pwhash_scryptsalsa208sha256_str_verify(
                (string) $passwd,
                (string) $hash
            );
        }
        if (self::use_fallback('crypto_pwhash_scryptsalsa208sha256_str_verify')) {
            return (bool) call_user_func(
                '\\Sodium\\crypto_pwhash_scryptsalsa208sha256_str_verify',
                (string) $passwd,
                (string) $hash
            );
        }
        // This is the best we can do.
        throw new SodiumException(
            'This is not implemented, as it is not possible to implement Scrypt with acceptable performance in pure-PHP'
        );
    }

    /**
     * Calculate the shared secret between your secret key and your
     * recipient's public key.
     *
     * Algorithm: X25519 (ECDH over Curve25519)
     *
     * @param string $secretKey
     * @param string $publicKey
     * @return string
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     */
    public static function crypto_scalarmult($secretKey, $publicKey)
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($secretKey, 'string', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($publicKey, 'string', 2);

        /* Input validation: */
        if (ParagonIE_Sodium_Core_Util::strlen($secretKey) !== self::CRYPTO_BOX_SECRETKEYBYTES) {
            throw new SodiumException('Argument 1 must be CRYPTO_BOX_SECRETKEYBYTES long.');
        }
        if (ParagonIE_Sodium_Core_Util::strlen($publicKey) !== self::CRYPTO_BOX_PUBLICKEYBYTES) {
            throw new SodiumException('Argument 2 must be CRYPTO_BOX_PUBLICKEYBYTES long.');
        }

        if (self::useNewSodiumAPI()) {
            return sodium_crypto_scalarmult($secretKey, $publicKey);
        }
        if (self::use_fallback('crypto_scalarmult')) {
            return (string) call_user_func('\\Sodium\\crypto_scalarmult', $secretKey, $publicKey);
        }

        /* Output validation: Forbid all-zero keys */
        if (ParagonIE_Sodium_Core_Util::hashEquals($secretKey, str_repeat("\0", self::CRYPTO_BOX_SECRETKEYBYTES))) {
            throw new SodiumException('Zero secret key is not allowed');
        }
        if (ParagonIE_Sodium_Core_Util::hashEquals($publicKey, str_repeat("\0", self::CRYPTO_BOX_PUBLICKEYBYTES))) {
            throw new SodiumException('Zero public key is not allowed');
        }
        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Crypto32::scalarmult($secretKey, $publicKey);
        }
        return ParagonIE_Sodium_Crypto::scalarmult($secretKey, $publicKey);
    }

    /**
     * Calculate an X25519 public key from an X25519 secret key.
     *
     * @param string $secretKey
     * @return string
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress TooFewArguments
     * @psalm-suppress MixedArgument
     */
    public static function crypto_scalarmult_base($secretKey)
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($secretKey, 'string', 1);

        /* Input validation: */
        if (ParagonIE_Sodium_Core_Util::strlen($secretKey) !== self::CRYPTO_BOX_SECRETKEYBYTES) {
            throw new SodiumException('Argument 1 must be CRYPTO_BOX_SECRETKEYBYTES long.');
        }

        if (self::useNewSodiumAPI()) {
            return sodium_crypto_scalarmult_base($secretKey);
        }
        if (self::use_fallback('crypto_scalarmult_base')) {
            return (string) call_user_func('\\Sodium\\crypto_scalarmult_base', $secretKey);
        }
        if (ParagonIE_Sodium_Core_Util::hashEquals($secretKey, str_repeat("\0", self::CRYPTO_BOX_SECRETKEYBYTES))) {
            throw new SodiumException('Zero secret key is not allowed');
        }
        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Crypto32::scalarmult_base($secretKey);
        }
        return ParagonIE_Sodium_Crypto::scalarmult_base($secretKey);
    }

    /**
     * Authenticated symmetric-key encryption.
     *
     * Algorithm: XSalsa20-Poly1305
     *
     * @param string $plaintext The message you're encrypting
     * @param string $nonce A Number to be used Once; must be 24 bytes
     * @param string $key Symmetric encryption key
     * @return string           Ciphertext with Poly1305 MAC
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     */
    public static function crypto_secretbox($plaintext, $nonce, $key)
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($plaintext, 'string', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($nonce, 'string', 2);
        ParagonIE_Sodium_Core_Util::declareScalarType($key, 'string', 3);

        /* Input validation: */
        if (ParagonIE_Sodium_Core_Util::strlen($nonce) !== self::CRYPTO_SECRETBOX_NONCEBYTES) {
            throw new SodiumException('Argument 2 must be CRYPTO_SECRETBOX_NONCEBYTES long.');
        }
        if (ParagonIE_Sodium_Core_Util::strlen($key) !== self::CRYPTO_SECRETBOX_KEYBYTES) {
            throw new SodiumException('Argument 3 must be CRYPTO_SECRETBOX_KEYBYTES long.');
        }

        if (self::useNewSodiumAPI()) {
            return sodium_crypto_secretbox($plaintext, $nonce, $key);
        }
        if (self::use_fallback('crypto_secretbox')) {
            return (string) call_user_func('\\Sodium\\crypto_secretbox', $plaintext, $nonce, $key);
        }
        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Crypto32::secretbox($plaintext, $nonce, $key);
        }
        return ParagonIE_Sodium_Crypto::secretbox($plaintext, $nonce, $key);
    }

    /**
     * Decrypts a message previously encrypted with crypto_secretbox().
     *
     * @param string $ciphertext Ciphertext with Poly1305 MAC
     * @param string $nonce      A Number to be used Once; must be 24 bytes
     * @param string $key        Symmetric encryption key
     * @return string            Original plaintext message
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     * @psalm-suppress MixedInferredReturnType
     * @psalm-suppress MixedReturnStatement
     */
    public static function crypto_secretbox_open($ciphertext, $nonce, $key)
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($ciphertext, 'string', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($nonce, 'string', 2);
        ParagonIE_Sodium_Core_Util::declareScalarType($key, 'string', 3);

        /* Input validation: */
        if (ParagonIE_Sodium_Core_Util::strlen($nonce) !== self::CRYPTO_SECRETBOX_NONCEBYTES) {
            throw new SodiumException('Argument 2 must be CRYPTO_SECRETBOX_NONCEBYTES long.');
        }
        if (ParagonIE_Sodium_Core_Util::strlen($key) !== self::CRYPTO_SECRETBOX_KEYBYTES) {
            throw new SodiumException('Argument 3 must be CRYPTO_SECRETBOX_KEYBYTES long.');
        }

        if (self::useNewSodiumAPI()) {
            /**
             * @psalm-suppress InvalidReturnStatement
             * @psalm-suppress FalsableReturnStatement
             */
            return sodium_crypto_secretbox_open($ciphertext, $nonce, $key);
        }
        if (self::use_fallback('crypto_secretbox_open')) {
            return call_user_func('\\Sodium\\crypto_secretbox_open', $ciphertext, $nonce, $key);
        }
        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Crypto32::secretbox_open($ciphertext, $nonce, $key);
        }
        return ParagonIE_Sodium_Crypto::secretbox_open($ciphertext, $nonce, $key);
    }

    /**
     * Return a secure random key for use with crypto_secretbox
     *
     * @return string
     * @throws Exception
     * @throws Error
     */
    public static function crypto_secretbox_keygen()
    {
        return random_bytes(self::CRYPTO_SECRETBOX_KEYBYTES);
    }

    /**
     * Authenticated symmetric-key encryption.
     *
     * Algorithm: XChaCha20-Poly1305
     *
     * @param string $plaintext The message you're encrypting
     * @param string $nonce     A Number to be used Once; must be 24 bytes
     * @param string $key       Symmetric encryption key
     * @return string           Ciphertext with Poly1305 MAC
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     */
    public static function crypto_secretbox_xchacha20poly1305($plaintext, $nonce, $key)
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($plaintext, 'string', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($nonce, 'string', 2);
        ParagonIE_Sodium_Core_Util::declareScalarType($key, 'string', 3);

        /* Input validation: */
        if (ParagonIE_Sodium_Core_Util::strlen($nonce) !== self::CRYPTO_SECRETBOX_NONCEBYTES) {
            throw new SodiumException('Argument 2 must be CRYPTO_SECRETBOX_NONCEBYTES long.');
        }
        if (ParagonIE_Sodium_Core_Util::strlen($key) !== self::CRYPTO_SECRETBOX_KEYBYTES) {
            throw new SodiumException('Argument 3 must be CRYPTO_SECRETBOX_KEYBYTES long.');
        }
        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Crypto32::secretbox_xchacha20poly1305($plaintext, $nonce, $key);
        }
        return ParagonIE_Sodium_Crypto::secretbox_xchacha20poly1305($plaintext, $nonce, $key);
    }
    /**
     * Decrypts a message previously encrypted with crypto_secretbox_xchacha20poly1305().
     *
     * @param string $ciphertext Ciphertext with Poly1305 MAC
     * @param string $nonce      A Number to be used Once; must be 24 bytes
     * @param string $key        Symmetric encryption key
     * @return string            Original plaintext message
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     */
    public static function crypto_secretbox_xchacha20poly1305_open($ciphertext, $nonce, $key)
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($ciphertext, 'string', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($nonce, 'string', 2);
        ParagonIE_Sodium_Core_Util::declareScalarType($key, 'string', 3);

        /* Input validation: */
        if (ParagonIE_Sodium_Core_Util::strlen($nonce) !== self::CRYPTO_SECRETBOX_NONCEBYTES) {
            throw new SodiumException('Argument 2 must be CRYPTO_SECRETBOX_NONCEBYTES long.');
        }
        if (ParagonIE_Sodium_Core_Util::strlen($key) !== self::CRYPTO_SECRETBOX_KEYBYTES) {
            throw new SodiumException('Argument 3 must be CRYPTO_SECRETBOX_KEYBYTES long.');
        }

        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Crypto32::secretbox_xchacha20poly1305_open($ciphertext, $nonce, $key);
        }
        return ParagonIE_Sodium_Crypto::secretbox_xchacha20poly1305_open($ciphertext, $nonce, $key);
    }

    /**
     * @param string $key
     * @return array<int, string> Returns a state and a header.
     * @throws Exception
     * @throws SodiumException
     */
    public static function crypto_secretstream_xchacha20poly1305_init_push($key)
    {
        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Crypto32::secretstream_xchacha20poly1305_init_push($key);
        }
        return ParagonIE_Sodium_Crypto::secretstream_xchacha20poly1305_init_push($key);
    }

    /**
     * @param string $header
     * @param string $key
     * @return string Returns a state.
     * @throws Exception
     */
    public static function crypto_secretstream_xchacha20poly1305_init_pull($header, $key)
    {
        if (ParagonIE_Sodium_Core_Util::strlen($header) < self::CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_HEADERBYTES) {
            throw new SodiumException(
                'header size should be SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_HEADERBYTES bytes'
            );
        }
        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Crypto32::secretstream_xchacha20poly1305_init_pull($key, $header);
        }
        return ParagonIE_Sodium_Crypto::secretstream_xchacha20poly1305_init_pull($key, $header);
    }

    /**
     * @param string $state
     * @param string $msg
     * @param string $aad
     * @param int $tag
     * @return string
     * @throws SodiumException
     */
    public static function crypto_secretstream_xchacha20poly1305_push(&$state, $msg, $aad = '', $tag = 0)
    {
        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Crypto32::secretstream_xchacha20poly1305_push(
                $state,
                $msg,
                $aad,
                $tag
            );
        }
        return ParagonIE_Sodium_Crypto::secretstream_xchacha20poly1305_push(
            $state,
            $msg,
            $aad,
            $tag
        );
    }

    /**
     * @param string $state
     * @param string $msg
     * @param string $aad
     * @return bool|array{0: string, 1: int}
     * @throws SodiumException
     */
    public static function crypto_secretstream_xchacha20poly1305_pull(&$state, $msg, $aad = '')
    {
        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Crypto32::secretstream_xchacha20poly1305_pull(
                $state,
                $msg,
                $aad
            );
        }
        return ParagonIE_Sodium_Crypto::secretstream_xchacha20poly1305_pull(
            $state,
            $msg,
            $aad
        );
    }

    /**
     * @return string
     * @throws Exception
     */
    public static function crypto_secretstream_xchacha20poly1305_keygen()
    {
        return random_bytes(self::CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_KEYBYTES);
    }

    /**
     * @param string $state
     * @return void
     * @throws SodiumException
     */
    public static function crypto_secretstream_xchacha20poly1305_rekey(&$state)
    {
        if (PHP_INT_SIZE === 4) {
            ParagonIE_Sodium_Crypto32::secretstream_xchacha20poly1305_rekey($state);
        } else {
            ParagonIE_Sodium_Crypto::secretstream_xchacha20poly1305_rekey($state);
        }
    }

    /**
     * Calculates a SipHash-2-4 hash of a message for a given key.
     *
     * @param string $message Input message
     * @param string $key SipHash-2-4 key
     * @return string         Hash
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     * @psalm-suppress MixedInferredReturnType
     * @psalm-suppress MixedReturnStatement
     */
    public static function crypto_shorthash($message, $key)
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($message, 'string', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($key, 'string', 2);

        /* Input validation: */
        if (ParagonIE_Sodium_Core_Util::strlen($key) !== self::CRYPTO_SHORTHASH_KEYBYTES) {
            throw new SodiumException('Argument 2 must be CRYPTO_SHORTHASH_KEYBYTES long.');
        }

        if (self::useNewSodiumAPI()) {
            return sodium_crypto_shorthash($message, $key);
        }
        if (self::use_fallback('crypto_shorthash')) {
            return (string) call_user_func('\\Sodium\\crypto_shorthash', $message, $key);
        }
        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Core32_SipHash::sipHash24($message, $key);
        }
        return ParagonIE_Sodium_Core_SipHash::sipHash24($message, $key);
    }

    /**
     * Return a secure random key for use with crypto_shorthash
     *
     * @return string
     * @throws Exception
     * @throws Error
     */
    public static function crypto_shorthash_keygen()
    {
        return random_bytes(self::CRYPTO_SHORTHASH_KEYBYTES);
    }

    /**
     * Returns a signed message. You probably want crypto_sign_detached()
     * instead, which only returns the signature.
     *
     * Algorithm: Ed25519 (EdDSA over Curve25519)
     *
     * @param string $message Message to be signed.
     * @param string $secretKey Secret signing key.
     * @return string           Signed message (signature is prefixed).
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     * @psalm-suppress MixedInferredReturnType
     * @psalm-suppress MixedReturnStatement
     */
    public static function crypto_sign($message, $secretKey)
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($message, 'string', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($secretKey, 'string', 2);

        /* Input validation: */
        if (ParagonIE_Sodium_Core_Util::strlen($secretKey) !== self::CRYPTO_SIGN_SECRETKEYBYTES) {
            throw new SodiumException('Argument 2 must be CRYPTO_SIGN_SECRETKEYBYTES long.');
        }

        if (self::useNewSodiumAPI()) {
            return sodium_crypto_sign($message, $secretKey);
        }
        if (self::use_fallback('crypto_sign')) {
            return (string) call_user_func('\\Sodium\\crypto_sign', $message, $secretKey);
        }
        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Crypto32::sign($message, $secretKey);
        }
        return ParagonIE_Sodium_Crypto::sign($message, $secretKey);
    }

    /**
     * Validates a signed message then returns the message.
     *
     * @param string $signedMessage A signed message
     * @param string $publicKey A public key
     * @return string               The original message (if the signature is
     *                              valid for this public key)
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     * @psalm-suppress MixedInferredReturnType
     * @psalm-suppress MixedReturnStatement
     */
    public static function crypto_sign_open($signedMessage, $publicKey)
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($signedMessage, 'string', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($publicKey, 'string', 2);

        /* Input validation: */
        if (ParagonIE_Sodium_Core_Util::strlen($signedMessage) < self::CRYPTO_SIGN_BYTES) {
            throw new SodiumException('Argument 1 must be at least CRYPTO_SIGN_BYTES long.');
        }
        if (ParagonIE_Sodium_Core_Util::strlen($publicKey) !== self::CRYPTO_SIGN_PUBLICKEYBYTES) {
            throw new SodiumException('Argument 2 must be CRYPTO_SIGN_PUBLICKEYBYTES long.');
        }

        if (self::useNewSodiumAPI()) {
            /**
             * @psalm-suppress InvalidReturnStatement
             * @psalm-suppress FalsableReturnStatement
             */
            return sodium_crypto_sign_open($signedMessage, $publicKey);
        }
        if (self::use_fallback('crypto_sign_open')) {
            return call_user_func('\\Sodium\\crypto_sign_open', $signedMessage, $publicKey);
        }
        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Crypto32::sign_open($signedMessage, $publicKey);
        }
        return ParagonIE_Sodium_Crypto::sign_open($signedMessage, $publicKey);
    }

    /**
     * Generate a new random Ed25519 keypair.
     *
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function crypto_sign_keypair()
    {
        if (self::useNewSodiumAPI()) {
            return sodium_crypto_sign_keypair();
        }
        if (self::use_fallback('crypto_sign_keypair')) {
            return (string) call_user_func('\\Sodium\\crypto_sign_keypair');
        }
        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Core32_Ed25519::keypair();
        }
        return ParagonIE_Sodium_Core_Ed25519::keypair();
    }

    /**
     * @param string $sk
     * @param string $pk
     * @return string
     * @throws SodiumException
     */
    public static function crypto_sign_keypair_from_secretkey_and_publickey($sk, $pk)
    {
        ParagonIE_Sodium_Core_Util::declareScalarType($sk, 'string', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($pk, 'string', 1);
        $sk = (string) $sk;
        $pk = (string) $pk;

        if (ParagonIE_Sodium_Core_Util::strlen($sk) !== self::CRYPTO_SIGN_SECRETKEYBYTES) {
            throw new SodiumException('secretkey should be SODIUM_CRYPTO_SIGN_SECRETKEYBYTES bytes');
        }
        if (ParagonIE_Sodium_Core_Util::strlen($pk) !== self::CRYPTO_SIGN_PUBLICKEYBYTES) {
            throw new SodiumException('publickey should be SODIUM_CRYPTO_SIGN_PUBLICKEYBYTES bytes');
        }

        if (self::useNewSodiumAPI()) {
            return sodium_crypto_sign_keypair_from_secretkey_and_publickey($sk, $pk);
        }
        return $sk . $pk;
    }

    /**
     * Generate an Ed25519 keypair from a seed.
     *
     * @param string $seed Input seed
     * @return string      Keypair
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     */
    public static function crypto_sign_seed_keypair($seed)
    {
        ParagonIE_Sodium_Core_Util::declareScalarType($seed, 'string', 1);

        if (self::useNewSodiumAPI()) {
            return sodium_crypto_sign_seed_keypair($seed);
        }
        if (self::use_fallback('crypto_sign_keypair')) {
            return (string) call_user_func('\\Sodium\\crypto_sign_seed_keypair', $seed);
        }
        $publicKey = '';
        $secretKey = '';
        if (PHP_INT_SIZE === 4) {
            ParagonIE_Sodium_Core32_Ed25519::seed_keypair($publicKey, $secretKey, $seed);
        } else {
            ParagonIE_Sodium_Core_Ed25519::seed_keypair($publicKey, $secretKey, $seed);
        }
        return $secretKey . $publicKey;
    }

    /**
     * Extract an Ed25519 public key from an Ed25519 keypair.
     *
     * @param string $keypair Keypair
     * @return string         Public key
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     */
    public static function crypto_sign_publickey($keypair)
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($keypair, 'string', 1);

        /* Input validation: */
        if (ParagonIE_Sodium_Core_Util::strlen($keypair) !== self::CRYPTO_SIGN_KEYPAIRBYTES) {
            throw new SodiumException('Argument 1 must be CRYPTO_SIGN_KEYPAIRBYTES long.');
        }

        if (self::useNewSodiumAPI()) {
            return sodium_crypto_sign_publickey($keypair);
        }
        if (self::use_fallback('crypto_sign_publickey')) {
            return (string) call_user_func('\\Sodium\\crypto_sign_publickey', $keypair);
        }
        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Core32_Ed25519::publickey($keypair);
        }
        return ParagonIE_Sodium_Core_Ed25519::publickey($keypair);
    }

    /**
     * Calculate an Ed25519 public key from an Ed25519 secret key.
     *
     * @param string $secretKey Your Ed25519 secret key
     * @return string           The corresponding Ed25519 public key
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     */
    public static function crypto_sign_publickey_from_secretkey($secretKey)
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($secretKey, 'string', 1);

        /* Input validation: */
        if (ParagonIE_Sodium_Core_Util::strlen($secretKey) !== self::CRYPTO_SIGN_SECRETKEYBYTES) {
            throw new SodiumException('Argument 1 must be CRYPTO_SIGN_SECRETKEYBYTES long.');
        }

        if (self::useNewSodiumAPI()) {
            return sodium_crypto_sign_publickey_from_secretkey($secretKey);
        }
        if (self::use_fallback('crypto_sign_publickey_from_secretkey')) {
            return (string) call_user_func('\\Sodium\\crypto_sign_publickey_from_secretkey', $secretKey);
        }
        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Core32_Ed25519::publickey_from_secretkey($secretKey);
        }
        return ParagonIE_Sodium_Core_Ed25519::publickey_from_secretkey($secretKey);
    }

    /**
     * Extract an Ed25519 secret key from an Ed25519 keypair.
     *
     * @param string $keypair Keypair
     * @return string         Secret key
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     */
    public static function crypto_sign_secretkey($keypair)
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($keypair, 'string', 1);

        /* Input validation: */
        if (ParagonIE_Sodium_Core_Util::strlen($keypair) !== self::CRYPTO_SIGN_KEYPAIRBYTES) {
            throw new SodiumException('Argument 1 must be CRYPTO_SIGN_KEYPAIRBYTES long.');
        }

        if (self::useNewSodiumAPI()) {
            return sodium_crypto_sign_secretkey($keypair);
        }
        if (self::use_fallback('crypto_sign_secretkey')) {
            return (string) call_user_func('\\Sodium\\crypto_sign_secretkey', $keypair);
        }
        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Core32_Ed25519::secretkey($keypair);
        }
        return ParagonIE_Sodium_Core_Ed25519::secretkey($keypair);
    }

    /**
     * Calculate the Ed25519 signature of a message and return ONLY the signature.
     *
     * Algorithm: Ed25519 (EdDSA over Curve25519)
     *
     * @param string $message Message to be signed
     * @param string $secretKey Secret signing key
     * @return string           Digital signature
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     */
    public static function crypto_sign_detached($message, $secretKey)
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($message, 'string', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($secretKey, 'string', 2);

        /* Input validation: */
        if (ParagonIE_Sodium_Core_Util::strlen($secretKey) !== self::CRYPTO_SIGN_SECRETKEYBYTES) {
            throw new SodiumException('Argument 2 must be CRYPTO_SIGN_SECRETKEYBYTES long.');
        }

        if (self::useNewSodiumAPI()) {
            return sodium_crypto_sign_detached($message, $secretKey);
        }
        if (self::use_fallback('crypto_sign_detached')) {
            return (string) call_user_func('\\Sodium\\crypto_sign_detached', $message, $secretKey);
        }
        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Crypto32::sign_detached($message, $secretKey);
        }
        return ParagonIE_Sodium_Crypto::sign_detached($message, $secretKey);
    }

    /**
     * Verify the Ed25519 signature of a message.
     *
     * @param string $signature Digital sginature
     * @param string $message Message to be verified
     * @param string $publicKey Public key
     * @return bool             TRUE if this signature is good for this public key;
     *                          FALSE otherwise
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     */
    public static function crypto_sign_verify_detached($signature, $message, $publicKey)
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($signature, 'string', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($message, 'string', 2);
        ParagonIE_Sodium_Core_Util::declareScalarType($publicKey, 'string', 3);

        /* Input validation: */
        if (ParagonIE_Sodium_Core_Util::strlen($signature) !== self::CRYPTO_SIGN_BYTES) {
            throw new SodiumException('Argument 1 must be CRYPTO_SIGN_BYTES long.');
        }
        if (ParagonIE_Sodium_Core_Util::strlen($publicKey) !== self::CRYPTO_SIGN_PUBLICKEYBYTES) {
            throw new SodiumException('Argument 3 must be CRYPTO_SIGN_PUBLICKEYBYTES long.');
        }

        if (self::useNewSodiumAPI()) {
            return sodium_crypto_sign_verify_detached($signature, $message, $publicKey);
        }
        if (self::use_fallback('crypto_sign_verify_detached')) {
            return (bool) call_user_func(
                '\\Sodium\\crypto_sign_verify_detached',
                $signature,
                $message,
                $publicKey
            );
        }
        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Crypto32::sign_verify_detached($signature, $message, $publicKey);
        }
        return ParagonIE_Sodium_Crypto::sign_verify_detached($signature, $message, $publicKey);
    }

    /**
     * Convert an Ed25519 public key to a Curve25519 public key
     *
     * @param string $pk
     * @return string
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     */
    public static function crypto_sign_ed25519_pk_to_curve25519($pk)
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($pk, 'string', 1);

        /* Input validation: */
        if (ParagonIE_Sodium_Core_Util::strlen($pk) < self::CRYPTO_SIGN_PUBLICKEYBYTES) {
            throw new SodiumException('Argument 1 must be at least CRYPTO_SIGN_PUBLICKEYBYTES long.');
        }
        if (self::useNewSodiumAPI()) {
            if (is_callable('crypto_sign_ed25519_pk_to_curve25519')) {
                return (string) sodium_crypto_sign_ed25519_pk_to_curve25519($pk);
            }
        }
        if (self::use_fallback('crypto_sign_ed25519_pk_to_curve25519')) {
            return (string) call_user_func('\\Sodium\\crypto_sign_ed25519_pk_to_curve25519', $pk);
        }
        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Core32_Ed25519::pk_to_curve25519($pk);
        }
        return ParagonIE_Sodium_Core_Ed25519::pk_to_curve25519($pk);
    }

    /**
     * Convert an Ed25519 secret key to a Curve25519 secret key
     *
     * @param string $sk
     * @return string
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     */
    public static function crypto_sign_ed25519_sk_to_curve25519($sk)
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($sk, 'string', 1);

        /* Input validation: */
        if (ParagonIE_Sodium_Core_Util::strlen($sk) < self::CRYPTO_SIGN_SEEDBYTES) {
            throw new SodiumException('Argument 1 must be at least CRYPTO_SIGN_SEEDBYTES long.');
        }
        if (self::useNewSodiumAPI()) {
            if (is_callable('crypto_sign_ed25519_sk_to_curve25519')) {
                return sodium_crypto_sign_ed25519_sk_to_curve25519($sk);
            }
        }
        if (self::use_fallback('crypto_sign_ed25519_sk_to_curve25519')) {
            return (string) call_user_func('\\Sodium\\crypto_sign_ed25519_sk_to_curve25519', $sk);
        }

        $h = hash('sha512', ParagonIE_Sodium_Core_Util::substr($sk, 0, 32), true);
        $h[0] = ParagonIE_Sodium_Core_Util::intToChr(
            ParagonIE_Sodium_Core_Util::chrToInt($h[0]) & 248
        );
        $h[31] = ParagonIE_Sodium_Core_Util::intToChr(
            (ParagonIE_Sodium_Core_Util::chrToInt($h[31]) & 127) | 64
        );
        return ParagonIE_Sodium_Core_Util::substr($h, 0, 32);
    }

    /**
     * Expand a key and nonce into a keystream of pseudorandom bytes.
     *
     * @param int $len Number of bytes desired
     * @param string $nonce Number to be used Once; must be 24 bytes
     * @param string $key XSalsa20 key
     * @return string       Pseudorandom stream that can be XORed with messages
     *                      to provide encryption (but not authentication; see
     *                      Poly1305 or crypto_auth() for that, which is not
     *                      optional for security)
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     */
    public static function crypto_stream($len, $nonce, $key)
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($len, 'int', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($nonce, 'string', 2);
        ParagonIE_Sodium_Core_Util::declareScalarType($key, 'string', 3);

        /* Input validation: */
        if (ParagonIE_Sodium_Core_Util::strlen($nonce) !== self::CRYPTO_STREAM_NONCEBYTES) {
            throw new SodiumException('Argument 2 must be CRYPTO_SECRETBOX_NONCEBYTES long.');
        }
        if (ParagonIE_Sodium_Core_Util::strlen($key) !== self::CRYPTO_STREAM_KEYBYTES) {
            throw new SodiumException('Argument 3 must be CRYPTO_STREAM_KEYBYTES long.');
        }

        if (self::useNewSodiumAPI()) {
            return sodium_crypto_stream($len, $nonce, $key);
        }
        if (self::use_fallback('crypto_stream')) {
            return (string) call_user_func('\\Sodium\\crypto_stream', $len, $nonce, $key);
        }
        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Core32_XSalsa20::xsalsa20($len, $nonce, $key);
        }
        return ParagonIE_Sodium_Core_XSalsa20::xsalsa20($len, $nonce, $key);
    }

    /**
     * DANGER! UNAUTHENTICATED ENCRYPTION!
     *
     * Unless you are following expert advice, do not use this feature.
     *
     * Algorithm: XSalsa20
     *
     * This DOES NOT provide ciphertext integrity.
     *
     * @param string $message Plaintext message
     * @param string $nonce Number to be used Once; must be 24 bytes
     * @param string $key Encryption key
     * @return string         Encrypted text which is vulnerable to chosen-
     *                        ciphertext attacks unless you implement some
     *                        other mitigation to the ciphertext (i.e.
     *                        Encrypt then MAC)
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     */
    public static function crypto_stream_xor($message, $nonce, $key)
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($message, 'string', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($nonce, 'string', 2);
        ParagonIE_Sodium_Core_Util::declareScalarType($key, 'string', 3);

        /* Input validation: */
        if (ParagonIE_Sodium_Core_Util::strlen($nonce) !== self::CRYPTO_STREAM_NONCEBYTES) {
            throw new SodiumException('Argument 2 must be CRYPTO_SECRETBOX_NONCEBYTES long.');
        }
        if (ParagonIE_Sodium_Core_Util::strlen($key) !== self::CRYPTO_STREAM_KEYBYTES) {
            throw new SodiumException('Argument 3 must be CRYPTO_SECRETBOX_KEYBYTES long.');
        }

        if (self::useNewSodiumAPI()) {
            return sodium_crypto_stream_xor($message, $nonce, $key);
        }
        if (self::use_fallback('crypto_stream_xor')) {
            return (string) call_user_func('\\Sodium\\crypto_stream_xor', $message, $nonce, $key);
        }
        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Core32_XSalsa20::xsalsa20_xor($message, $nonce, $key);
        }
        return ParagonIE_Sodium_Core_XSalsa20::xsalsa20_xor($message, $nonce, $key);
    }

    /**
     * Return a secure random key for use with crypto_stream
     *
     * @return string
     * @throws Exception
     * @throws Error
     */
    public static function crypto_stream_keygen()
    {
        return random_bytes(self::CRYPTO_STREAM_KEYBYTES);
    }


    /**
     * Expand a key and nonce into a keystream of pseudorandom bytes.
     *
     * @param int $len Number of bytes desired
     * @param string $nonce Number to be used Once; must be 24 bytes
     * @param string $key XChaCha20 key
     * @param bool $dontFallback
     * @return string       Pseudorandom stream that can be XORed with messages
     *                      to provide encryption (but not authentication; see
     *                      Poly1305 or crypto_auth() for that, which is not
     *                      optional for security)
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     */
    public static function crypto_stream_xchacha20($len, $nonce, $key, $dontFallback = false)
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($len, 'int', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($nonce, 'string', 2);
        ParagonIE_Sodium_Core_Util::declareScalarType($key, 'string', 3);

        /* Input validation: */
        if (ParagonIE_Sodium_Core_Util::strlen($nonce) !== self::CRYPTO_STREAM_XCHACHA20_NONCEBYTES) {
            throw new SodiumException('Argument 2 must be CRYPTO_SECRETBOX_XCHACHA20_NONCEBYTES long.');
        }
        if (ParagonIE_Sodium_Core_Util::strlen($key) !== self::CRYPTO_STREAM_XCHACHA20_KEYBYTES) {
            throw new SodiumException('Argument 3 must be CRYPTO_STREAM_XCHACHA20_KEYBYTES long.');
        }

        if (self::useNewSodiumAPI() && !$dontFallback) {
            return sodium_crypto_stream_xchacha20($len, $nonce, $key);
        }
        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Core32_XChaCha20::stream($len, $nonce, $key);
        }
        return ParagonIE_Sodium_Core_XChaCha20::stream($len, $nonce, $key);
    }

    /**
     * DANGER! UNAUTHENTICATED ENCRYPTION!
     *
     * Unless you are following expert advice, do not use this feature.
     *
     * Algorithm: XChaCha20
     *
     * This DOES NOT provide ciphertext integrity.
     *
     * @param string $message Plaintext message
     * @param string $nonce Number to be used Once; must be 24 bytes
     * @param string $key Encryption key
     * @return string         Encrypted text which is vulnerable to chosen-
     *                        ciphertext attacks unless you implement some
     *                        other mitigation to the ciphertext (i.e.
     *                        Encrypt then MAC)
     * @param bool $dontFallback
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     */
    public static function crypto_stream_xchacha20_xor($message, $nonce, $key, $dontFallback = false)
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($message, 'string', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($nonce, 'string', 2);
        ParagonIE_Sodium_Core_Util::declareScalarType($key, 'string', 3);

        /* Input validation: */
        if (ParagonIE_Sodium_Core_Util::strlen($nonce) !== self::CRYPTO_STREAM_XCHACHA20_NONCEBYTES) {
            throw new SodiumException('Argument 2 must be CRYPTO_SECRETBOX_XCHACHA20_NONCEBYTES long.');
        }
        if (ParagonIE_Sodium_Core_Util::strlen($key) !== self::CRYPTO_STREAM_XCHACHA20_KEYBYTES) {
            throw new SodiumException('Argument 3 must be CRYPTO_SECRETBOX_XCHACHA20_KEYBYTES long.');
        }

        if (self::useNewSodiumAPI() && !$dontFallback) {
            return sodium_crypto_stream_xchacha20_xor($message, $nonce, $key);
        }
        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Core32_XChaCha20::streamXorIc($message, $nonce, $key);
        }
        return ParagonIE_Sodium_Core_XChaCha20::streamXorIc($message, $nonce, $key);
    }

    /**
     * DANGER! UNAUTHENTICATED ENCRYPTION!
     *
     * Unless you are following expert advice, do not use this feature.
     *
     * Algorithm: XChaCha20
     *
     * This DOES NOT provide ciphertext integrity.
     *
     * @param string $message Plaintext message
     * @param string $nonce Number to be used Once; must be 24 bytes
     * @param int $counter
     * @param string $key Encryption key
     * @return string         Encrypted text which is vulnerable to chosen-
     *                        ciphertext attacks unless you implement some
     *                        other mitigation to the ciphertext (i.e.
     *                        Encrypt then MAC)
     * @param bool $dontFallback
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     */
    public static function crypto_stream_xchacha20_xor_ic($message, $nonce, $counter, $key, $dontFallback = false)
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($message, 'string', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($nonce, 'string', 2);
        ParagonIE_Sodium_Core_Util::declareScalarType($counter, 'int', 3);
        ParagonIE_Sodium_Core_Util::declareScalarType($key, 'string', 4);

        /* Input validation: */
        if (ParagonIE_Sodium_Core_Util::strlen($nonce) !== self::CRYPTO_STREAM_XCHACHA20_NONCEBYTES) {
            throw new SodiumException('Argument 2 must be CRYPTO_SECRETBOX_XCHACHA20_NONCEBYTES long.');
        }
        if (ParagonIE_Sodium_Core_Util::strlen($key) !== self::CRYPTO_STREAM_XCHACHA20_KEYBYTES) {
            throw new SodiumException('Argument 3 must be CRYPTO_SECRETBOX_XCHACHA20_KEYBYTES long.');
        }

        if (is_callable('sodium_crypto_stream_xchacha20_xor_ic') && !$dontFallback) {
            return sodium_crypto_stream_xchacha20_xor_ic($message, $nonce, $counter, $key);
        }

        $ic = ParagonIE_Sodium_Core_Util::store64_le($counter);
        if (PHP_INT_SIZE === 4) {
            return ParagonIE_Sodium_Core32_XChaCha20::streamXorIc($message, $nonce, $key, $ic);
        }
        return ParagonIE_Sodium_Core_XChaCha20::streamXorIc($message, $nonce, $key, $ic);
    }

    /**
     * Return a secure random key for use with crypto_stream_xchacha20
     *
     * @return string
     * @throws Exception
     * @throws Error
     */
    public static function crypto_stream_xchacha20_keygen()
    {
        return random_bytes(self::CRYPTO_STREAM_XCHACHA20_KEYBYTES);
    }

    /**
     * Cache-timing-safe implementation of hex2bin().
     *
     * @param string $string Hexadecimal string
     * @param string $ignore List of characters to ignore; useful for whitespace
     * @return string        Raw binary string
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress TooFewArguments
     * @psalm-suppress MixedArgument
     */
    public static function hex2bin($string, $ignore = '')
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($string, 'string', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($ignore, 'string', 2);

        if (self::useNewSodiumAPI()) {
            if (is_callable('sodium_hex2bin')) {
                return (string) sodium_hex2bin($string, $ignore);
            }
        }
        if (self::use_fallback('hex2bin')) {
            return (string) call_user_func('\\Sodium\\hex2bin', $string, $ignore);
        }
        return ParagonIE_Sodium_Core_Util::hex2bin($string, $ignore);
    }

    /**
     * Increase a string (little endian)
     *
     * @param string $var
     *
     * @return void
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     */
    public static function increment(&$var)
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($var, 'string', 1);

        if (self::useNewSodiumAPI()) {
            sodium_increment($var);
            return;
        }
        if (self::use_fallback('increment')) {
            $func = '\\Sodium\\increment';
            $func($var);
            return;
        }

        $len = ParagonIE_Sodium_Core_Util::strlen($var);
        $c = 1;
        $copy = '';
        for ($i = 0; $i < $len; ++$i) {
            $c += ParagonIE_Sodium_Core_Util::chrToInt(
                ParagonIE_Sodium_Core_Util::substr($var, $i, 1)
            );
            $copy .= ParagonIE_Sodium_Core_Util::intToChr($c);
            $c >>= 8;
        }
        $var = $copy;
    }

    /**
     * @param string $str
     * @return bool
     *
     * @throws SodiumException
     */
    public static function is_zero($str)
    {
        $d = 0;
        for ($i = 0; $i < 32; ++$i) {
            $d |= ParagonIE_Sodium_Core_Util::chrToInt($str[$i]);
        }
        return ((($d - 1) >> 31) & 1) === 1;
    }

    /**
     * The equivalent to the libsodium minor version we aim to be compatible
     * with (sans pwhash and memzero).
     *
     * @return int
     */
    public static function library_version_major()
    {
        if (self::useNewSodiumAPI() && defined('SODIUM_LIBRARY_MAJOR_VERSION')) {
            return SODIUM_LIBRARY_MAJOR_VERSION;
        }
        if (self::use_fallback('library_version_major')) {
            /** @psalm-suppress UndefinedFunction */
            return (int) call_user_func('\\Sodium\\library_version_major');
        }
        return self::LIBRARY_VERSION_MAJOR;
    }

    /**
     * The equivalent to the libsodium minor version we aim to be compatible
     * with (sans pwhash and memzero).
     *
     * @return int
     */
    public static function library_version_minor()
    {
        if (self::useNewSodiumAPI() && defined('SODIUM_LIBRARY_MINOR_VERSION')) {
            return SODIUM_LIBRARY_MINOR_VERSION;
        }
        if (self::use_fallback('library_version_minor')) {
            /** @psalm-suppress UndefinedFunction */
            return (int) call_user_func('\\Sodium\\library_version_minor');
        }
        return self::LIBRARY_VERSION_MINOR;
    }

    /**
     * Compare two strings.
     *
     * @param string $left
     * @param string $right
     * @return int
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     */
    public static function memcmp($left, $right)
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($left, 'string', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($right, 'string', 2);

        if (self::useNewSodiumAPI()) {
            return sodium_memcmp($left, $right);
        }
        if (self::use_fallback('memcmp')) {
            return (int) call_user_func('\\Sodium\\memcmp', $left, $right);
        }
        /** @var string $left */
        /** @var string $right */
        return ParagonIE_Sodium_Core_Util::memcmp($left, $right);
    }

    /**
     * It's actually not possible to zero memory buffers in PHP. You need the
     * native library for that.
     *
     * @param string|null $var
     * @param-out string|null $var
     *
     * @return void
     * @throws SodiumException (Unless libsodium is installed)
     * @throws TypeError
     * @psalm-suppress TooFewArguments
     */
    public static function memzero(&$var)
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($var, 'string', 1);

        if (self::useNewSodiumAPI()) {
            /** @psalm-suppress MixedArgument */
            sodium_memzero($var);
            return;
        }
        if (self::use_fallback('memzero')) {
            $func = '\\Sodium\\memzero';
            $func($var);
            if ($var === null) {
                return;
            }
        }
        // This is the best we can do.
        throw new SodiumException(
            'This is not implemented in sodium_compat, as it is not possible to securely wipe memory from PHP. ' .
            'To fix this error, make sure libsodium is installed and the PHP extension is enabled.'
        );
    }

    /**
     * @param string $unpadded
     * @param int $blockSize
     * @param bool $dontFallback
     * @return string
     * @throws SodiumException
     */
    public static function pad($unpadded, $blockSize, $dontFallback = false)
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($unpadded, 'string', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($blockSize, 'int', 2);

        $unpadded = (string) $unpadded;
        $blockSize = (int) $blockSize;

        if (self::useNewSodiumAPI() && !$dontFallback) {
            return (string) sodium_pad($unpadded, $blockSize);
        }

        if ($blockSize <= 0) {
            throw new SodiumException(
                'block size cannot be less than 1'
            );
        }
        $unpadded_len = ParagonIE_Sodium_Core_Util::strlen($unpadded);
        $xpadlen = ($blockSize - 1);
        if (($blockSize & ($blockSize - 1)) === 0) {
            $xpadlen -= $unpadded_len & ($blockSize - 1);
        } else {
            $xpadlen -= $unpadded_len % $blockSize;
        }

        $xpadded_len = $unpadded_len + $xpadlen;
        $padded = str_repeat("\0", $xpadded_len - 1);
        if ($unpadded_len > 0) {
            $st = 1;
            $i = 0;
            $k = $unpadded_len;
            for ($j = 0; $j <= $xpadded_len; ++$j) {
                $i = (int) $i;
                $k = (int) $k;
                $st = (int) $st;
                if ($j >= $unpadded_len) {
                    $padded[$j] = "\0";
                } else {
                    $padded[$j] = $unpadded[$j];
                }
                /** @var int $k */
                $k -= $st;
                $st = (int) (~(
                            (
                                (
                                    ($k >> 48)
                                        |
                                    ($k >> 32)
                                        |
                                    ($k >> 16)
                                        |
                                    $k
                                ) - 1
                            ) >> 16
                        )
                    ) & 1;
                $i += $st;
            }
        }

        $mask = 0;
        $tail = $xpadded_len;
        for ($i = 0; $i < $blockSize; ++$i) {
            # barrier_mask = (unsigned char)
            #     (((i ^ xpadlen) - 1U) >> ((sizeof(size_t) - 1U) * CHAR_BIT));
            $barrier_mask = (($i ^ $xpadlen) -1) >> ((PHP_INT_SIZE << 3) - 1);
            # tail[-i] = (tail[-i] & mask) | (0x80 & barrier_mask);
            $padded[$tail - $i] = ParagonIE_Sodium_Core_Util::intToChr(
                (ParagonIE_Sodium_Core_Util::chrToInt($padded[$tail - $i]) & $mask)
                    |
                (0x80 & $barrier_mask)
            );
            # mask |= barrier_mask;
            $mask |= $barrier_mask;
        }
        return $padded;
    }

    /**
     * @param string $padded
     * @param int $blockSize
     * @param bool $dontFallback
     * @return string
     * @throws SodiumException
     */
    public static function unpad($padded, $blockSize, $dontFallback = false)
    {
        /* Type checks: */
        ParagonIE_Sodium_Core_Util::declareScalarType($padded, 'string', 1);
        ParagonIE_Sodium_Core_Util::declareScalarType($blockSize, 'int', 2);

        $padded = (string) $padded;
        $blockSize = (int) $blockSize;

        if (self::useNewSodiumAPI() && !$dontFallback) {
            return (string) sodium_unpad($padded, $blockSize);
        }
        if ($blockSize <= 0) {
            throw new SodiumException('block size cannot be less than 1');
        }
        $padded_len = ParagonIE_Sodium_Core_Util::strlen($padded);
        if ($padded_len < $blockSize) {
            throw new SodiumException('invalid padding');
        }

        # tail = &padded[padded_len - 1U];
        $tail = $padded_len - 1;

        $acc = 0;
        $valid = 0;
        $pad_len = 0;

        $found = 0;
        for ($i = 0; $i < $blockSize; ++$i) {
            # c = tail[-i];
            $c = ParagonIE_Sodium_Core_Util::chrToInt($padded[$tail - $i]);

            # is_barrier =
            #     (( (acc - 1U) & (pad_len - 1U) & ((c ^ 0x80) - 1U) ) >> 8) & 1U;
            $is_barrier = (
                (
                    ($acc - 1) & ($pad_len - 1) & (($c ^ 80) - 1)
                ) >> 7
            ) & 1;
            $is_barrier &= ~$found;
            $found |= $is_barrier;

            # acc |= c;
            $acc |= $c;

            # pad_len |= i & (1U + ~is_barrier);
            $pad_len |= $i & (1 + ~$is_barrier);

            # valid |= (unsigned char) is_barrier;
            $valid |= ($is_barrier & 0xff);
        }
        # unpadded_len = padded_len - 1U - pad_len;
        $unpadded_len = $padded_len - 1 - $pad_len;
        if ($valid !== 1) {
            throw new SodiumException('invalid padding');
        }
        return ParagonIE_Sodium_Core_Util::substr($padded, 0, $unpadded_len);
    }

    /**
     * Will sodium_compat run fast on the current hardware and PHP configuration?
     *
     * @return bool
     */
    public static function polyfill_is_fast()
    {
        if (extension_loaded('sodium')) {
            return true;
        }
        if (extension_loaded('libsodium')) {
            return true;
        }
        return PHP_INT_SIZE === 8;
    }

    /**
     * Generate a string of bytes from the kernel's CSPRNG.
     * Proudly uses /dev/urandom (if getrandom(2) is not available).
     *
     * @param int $numBytes
     * @return string
     * @throws Exception
     * @throws TypeError
     */
    public static function randombytes_buf($numBytes)
    {
        /* Type checks: */
        if (!is_int($numBytes)) {
            if (is_numeric($numBytes)) {
                $numBytes = (int) $numBytes;
            } else {
                throw new TypeError(
                    'Argument 1 must be an integer, ' . gettype($numBytes) . ' given.'
                );
            }
        }
        /** @var positive-int $numBytes */
        if (self::use_fallback('randombytes_buf')) {
            return (string) call_user_func('\\Sodium\\randombytes_buf', $numBytes);
        }
        if ($numBytes < 0) {
            throw new SodiumException("Number of bytes must be a positive integer");
        }
        return random_bytes($numBytes);
    }

    /**
     * Generate an integer between 0 and $range (non-inclusive).
     *
     * @param int $range
     * @return int
     * @throws Exception
     * @throws Error
     * @throws TypeError
     */
    public static function randombytes_uniform($range)
    {
        /* Type checks: */
        if (!is_int($range)) {
            if (is_numeric($range)) {
                $range = (int) $range;
            } else {
                throw new TypeError(
                    'Argument 1 must be an integer, ' . gettype($range) . ' given.'
                );
            }
        }
        if (self::use_fallback('randombytes_uniform')) {
            return (int) call_user_func('\\Sodium\\randombytes_uniform', $range);
        }
        return random_int(0, $range - 1);
    }

    /**
     * Generate a random 16-bit integer.
     *
     * @return int
     * @throws Exception
     * @throws Error
     * @throws TypeError
     */
    public static function randombytes_random16()
    {
        if (self::use_fallback('randombytes_random16')) {
            return (int) call_user_func('\\Sodium\\randombytes_random16');
        }
        return random_int(0, 65535);
    }

    /**
     * @param string $p
     * @param bool $dontFallback
     * @return bool
     * @throws SodiumException
     */
    public static function ristretto255_is_valid_point($p, $dontFallback = false)
    {
        if (self::useNewSodiumAPI() && !$dontFallback) {
            return sodium_crypto_core_ristretto255_is_valid_point($p);
        }
        try {
            $r = ParagonIE_Sodium_Core_Ristretto255::ristretto255_frombytes($p);
            return $r['res'] === 0 &&
                ParagonIE_Sodium_Core_Ristretto255::ristretto255_point_is_canonical($p) === 1;
        } catch (SodiumException $ex) {
            if ($ex->getMessage() === 'S is not canonical') {
                return false;
            }
            throw $ex;
        }
    }

    /**
     * @param string $p
     * @param string $q
     * @param bool $dontFallback
     * @return string
     * @throws SodiumException
     */
    public static function ristretto255_add($p, $q, $dontFallback = false)
    {
        if (self::useNewSodiumAPI() && !$dontFallback) {
            return sodium_crypto_core_ristretto255_add($p, $q);
        }
        return ParagonIE_Sodium_Core_Ristretto255::ristretto255_add($p, $q);
    }

    /**
     * @param string $p
     * @param string $q
     * @param bool $dontFallback
     * @return string
     * @throws SodiumException
     */
    public static function ristretto255_sub($p, $q, $dontFallback = false)
    {
        if (self::useNewSodiumAPI() && !$dontFallback) {
            return sodium_crypto_core_ristretto255_sub($p, $q);
        }
        return ParagonIE_Sodium_Core_Ristretto255::ristretto255_sub($p, $q);
    }

    /**
     * @param string $r
     * @param bool $dontFallback
     * @return string
     *
     * @throws SodiumException
     */
    public static function ristretto255_from_hash($r, $dontFallback = false)
    {
        if (self::useNewSodiumAPI() && !$dontFallback) {
            return sodium_crypto_core_ristretto255_from_hash($r);
        }
        return ParagonIE_Sodium_Core_Ristretto255::ristretto255_from_hash($r);
    }

    /**
     * @param bool $dontFallback
     * @return string
     *
     * @throws SodiumException
     */
    public static function ristretto255_random($dontFallback = false)
    {
        if (self::useNewSodiumAPI() && !$dontFallback) {
            return sodium_crypto_core_ristretto255_random();
        }
        return ParagonIE_Sodium_Core_Ristretto255::ristretto255_random();
    }

    /**
     * @param bool $dontFallback
     * @return string
     *
     * @throws SodiumException
     */
    public static function ristretto255_scalar_random($dontFallback = false)
    {
        if (self::useNewSodiumAPI() && !$dontFallback) {
            return sodium_crypto_core_ristretto255_scalar_random();
        }
        return ParagonIE_Sodium_Core_Ristretto255::ristretto255_scalar_random();
    }

    /**
     * @param string $s
     * @param bool $dontFallback
     * @return string
     * @throws SodiumException
     */
    public static function ristretto255_scalar_invert($s, $dontFallback = false)
    {
        if (self::useNewSodiumAPI() && !$dontFallback) {
            return sodium_crypto_core_ristretto255_scalar_invert($s);
        }
        return ParagonIE_Sodium_Core_Ristretto255::ristretto255_scalar_invert($s);
    }
    /**
     * @param string $s
     * @param bool $dontFallback
     * @return string
     * @throws SodiumException
     */
    public static function ristretto255_scalar_negate($s, $dontFallback = false)
    {
        if (self::useNewSodiumAPI() && !$dontFallback) {
            return sodium_crypto_core_ristretto255_scalar_negate($s);
        }
        return ParagonIE_Sodium_Core_Ristretto255::ristretto255_scalar_negate($s);
    }

    /**
     * @param string $s
     * @param bool $dontFallback
     * @return string
     * @throws SodiumException
     */
    public static function ristretto255_scalar_complement($s, $dontFallback = false)
    {
        if (self::useNewSodiumAPI() && !$dontFallback) {
            return sodium_crypto_core_ristretto255_scalar_complement($s);
        }
        return ParagonIE_Sodium_Core_Ristretto255::ristretto255_scalar_complement($s);
    }

    /**
     * @param string $x
     * @param string $y
     * @param bool $dontFallback
     * @return string
     * @throws SodiumException
     */
    public static function ristretto255_scalar_add($x, $y, $dontFallback = false)
    {
        if (self::useNewSodiumAPI() && !$dontFallback) {
            return sodium_crypto_core_ristretto255_scalar_add($x, $y);
        }
        return ParagonIE_Sodium_Core_Ristretto255::ristretto255_scalar_add($x, $y);
    }

    /**
     * @param string $x
     * @param string $y
     * @param bool $dontFallback
     * @return string
     * @throws SodiumException
     */
    public static function ristretto255_scalar_sub($x, $y, $dontFallback = false)
    {
        if (self::useNewSodiumAPI() && !$dontFallback) {
            return sodium_crypto_core_ristretto255_scalar_sub($x, $y);
        }
        return ParagonIE_Sodium_Core_Ristretto255::ristretto255_scalar_sub($x, $y);
    }

    /**
     * @param string $x
     * @param string $y
     * @param bool $dontFallback
     * @return string
     * @throws SodiumException
     */
    public static function ristretto255_scalar_mul($x, $y, $dontFallback = false)
    {
        if (self::useNewSodiumAPI() && !$dontFallback) {
            return sodium_crypto_core_ristretto255_scalar_mul($x, $y);
        }
        return ParagonIE_Sodium_Core_Ristretto255::ristretto255_scalar_mul($x, $y);
    }

    /**
     * @param string $n
     * @param string $p
     * @param bool $dontFallback
     * @return string
     * @throws SodiumException
     */
    public static function scalarmult_ristretto255($n, $p, $dontFallback = false)
    {
        if (self::useNewSodiumAPI() && !$dontFallback) {
            return sodium_crypto_scalarmult_ristretto255($n, $p);
        }
        return ParagonIE_Sodium_Core_Ristretto255::scalarmult_ristretto255($n, $p);
    }

    /**
     * @param string $n
     * @param string $p
     * @param bool $dontFallback
     * @return string
     * @throws SodiumException
     */
    public static function scalarmult_ristretto255_base($n, $dontFallback = false)
    {
        if (self::useNewSodiumAPI() && !$dontFallback) {
            return sodium_crypto_scalarmult_ristretto255_base($n);
        }
        return ParagonIE_Sodium_Core_Ristretto255::scalarmult_ristretto255_base($n);
    }

    /**
     * @param string $s
     * @param bool $dontFallback
     * @return string
     * @throws SodiumException
     */
    public static function ristretto255_scalar_reduce($s, $dontFallback = false)
    {
        if (self::useNewSodiumAPI() && !$dontFallback) {
            return sodium_crypto_core_ristretto255_scalar_reduce($s);
        }
        return ParagonIE_Sodium_Core_Ristretto255::sc_reduce($s);
    }

    /**
     * Runtime testing method for 32-bit platforms.
     *
     * Usage: If runtime_speed_test() returns FALSE, then our 32-bit
     *        implementation is to slow to use safely without risking timeouts.
     *        If this happens, install sodium from PECL to get acceptable
     *        performance.
     *
     * @param int $iterations Number of multiplications to attempt
     * @param int $maxTimeout Milliseconds
     * @return bool           TRUE if we're fast enough, FALSE is not
     * @throws SodiumException
     */
    public static function runtime_speed_test($iterations, $maxTimeout)
    {
        if (self::polyfill_is_fast()) {
            return true;
        }
        /** @var float $end */
        $end = 0.0;
        /** @var float $start */
        $start = microtime(true);
        /** @var ParagonIE_Sodium_Core32_Int64 $a */
        $a = ParagonIE_Sodium_Core32_Int64::fromInt(random_int(3, 1 << 16));
        for ($i = 0; $i < $iterations; ++$i) {
            /** @var ParagonIE_Sodium_Core32_Int64 $b */
            $b = ParagonIE_Sodium_Core32_Int64::fromInt(random_int(3, 1 << 16));
            $a->mulInt64($b);
        }
        /** @var float $end */
        $end = microtime(true);
        /** @var int $diff */
        $diff = (int) ceil(($end - $start) * 1000);
        return $diff < $maxTimeout;
    }

    /**
     * Add two numbers (little-endian unsigned), storing the value in the first
     * parameter.
     *
     * This mutates $val.
     *
     * @param string $val
     * @param string $addv
     * @return void
     * @throws SodiumException
     */
    public static function sub(&$val, $addv)
    {
        $val_len = ParagonIE_Sodium_Core_Util::strlen($val);
        $addv_len = ParagonIE_Sodium_Core_Util::strlen($addv);
        if ($val_len !== $addv_len) {
            throw new SodiumException('values must have the same length');
        }
        $A = ParagonIE_Sodium_Core_Util::stringToIntArray($val);
        $B = ParagonIE_Sodium_Core_Util::stringToIntArray($addv);

        $c = 0;
        for ($i = 0; $i < $val_len; $i++) {
            $c = ($A[$i] - $B[$i] - $c);
            $A[$i] = ($c & 0xff);
            $c = ($c >> 8) & 1;
        }
        $val = ParagonIE_Sodium_Core_Util::intArrayToString($A);
    }

    /**
     * This emulates libsodium's version_string() function, except ours is
     * prefixed with 'polyfill-'.
     *
     * @return string
     * @psalm-suppress MixedInferredReturnType
     * @psalm-suppress UndefinedFunction
     */
    public static function version_string()
    {
        if (self::useNewSodiumAPI()) {
            return (string) sodium_version_string();
        }
        if (self::use_fallback('version_string')) {
            return (string) call_user_func('\\Sodium\\version_string');
        }
        return (string) self::VERSION_STRING;
    }

    /**
     * Should we use the libsodium core function instead?
     * This is always a good idea, if it's available. (Unless we're in the
     * middle of running our unit test suite.)
     *
     * If ext/libsodium is available, use it. Return TRUE.
     * Otherwise, we have to use the code provided herein. Return FALSE.
     *
     * @param string $sodium_func_name
     *
     * @return bool
     */
    protected static function use_fallback($sodium_func_name = '')
    {
        static $res = null;
        if ($res === null) {
            $res = extension_loaded('libsodium') && PHP_VERSION_ID >= 50300;
        }
        if ($res === false) {
            // No libsodium installed
            return false;
        }
        if (self::$disableFallbackForUnitTests) {
            // Don't fallback. Use the PHP implementation.
            return false;
        }
        if (!empty($sodium_func_name)) {
            return is_callable('\\Sodium\\' . $sodium_func_name);
        }
        return true;
    }

    /**
     * Libsodium as implemented in PHP 7.2
     * and/or ext/sodium (via PECL)
     *
     * @ref https://wiki.php.net/rfc/libsodium
     * @return bool
     */
    protected static function useNewSodiumAPI()
    {
        static $res = null;
        if ($res === null) {
            $res = PHP_VERSION_ID >= 70000 && extension_loaded('sodium');
        }
        if (self::$disableFallbackForUnitTests) {
            // Don't fallback. Use the PHP implementation.
            return false;
        }
        return (bool) $res;
    }
}
crypto/vendor/paragonie/sodium_compat/src/Crypto32.php000064400000153612150755146460017143 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Crypto32', false)) {
    return;
}

/**
 * Class ParagonIE_Sodium_Crypto
 *
 * ATTENTION!
 *
 * If you are using this library, you should be using
 * ParagonIE_Sodium_Compat in your code, not this class.
 */
abstract class ParagonIE_Sodium_Crypto32
{
    const aead_chacha20poly1305_KEYBYTES = 32;
    const aead_chacha20poly1305_NSECBYTES = 0;
    const aead_chacha20poly1305_NPUBBYTES = 8;
    const aead_chacha20poly1305_ABYTES = 16;

    const aead_chacha20poly1305_IETF_KEYBYTES = 32;
    const aead_chacha20poly1305_IETF_NSECBYTES = 0;
    const aead_chacha20poly1305_IETF_NPUBBYTES = 12;
    const aead_chacha20poly1305_IETF_ABYTES = 16;

    const aead_xchacha20poly1305_IETF_KEYBYTES = 32;
    const aead_xchacha20poly1305_IETF_NSECBYTES = 0;
    const aead_xchacha20poly1305_IETF_NPUBBYTES = 24;
    const aead_xchacha20poly1305_IETF_ABYTES = 16;

    const box_curve25519xsalsa20poly1305_SEEDBYTES = 32;
    const box_curve25519xsalsa20poly1305_PUBLICKEYBYTES = 32;
    const box_curve25519xsalsa20poly1305_SECRETKEYBYTES = 32;
    const box_curve25519xsalsa20poly1305_BEFORENMBYTES = 32;
    const box_curve25519xsalsa20poly1305_NONCEBYTES = 24;
    const box_curve25519xsalsa20poly1305_MACBYTES = 16;
    const box_curve25519xsalsa20poly1305_BOXZEROBYTES = 16;
    const box_curve25519xsalsa20poly1305_ZEROBYTES = 32;

    const onetimeauth_poly1305_BYTES = 16;
    const onetimeauth_poly1305_KEYBYTES = 32;

    const secretbox_xsalsa20poly1305_KEYBYTES = 32;
    const secretbox_xsalsa20poly1305_NONCEBYTES = 24;
    const secretbox_xsalsa20poly1305_MACBYTES = 16;
    const secretbox_xsalsa20poly1305_BOXZEROBYTES = 16;
    const secretbox_xsalsa20poly1305_ZEROBYTES = 32;

    const secretbox_xchacha20poly1305_KEYBYTES = 32;
    const secretbox_xchacha20poly1305_NONCEBYTES = 24;
    const secretbox_xchacha20poly1305_MACBYTES = 16;
    const secretbox_xchacha20poly1305_BOXZEROBYTES = 16;
    const secretbox_xchacha20poly1305_ZEROBYTES = 32;

    const stream_salsa20_KEYBYTES = 32;

    /**
     * AEAD Decryption with ChaCha20-Poly1305
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $message
     * @param string $ad
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function aead_chacha20poly1305_decrypt(
        $message = '',
        $ad = '',
        $nonce = '',
        $key = ''
    ) {
        /** @var int $len - Length of message (ciphertext + MAC) */
        $len = ParagonIE_Sodium_Core32_Util::strlen($message);

        /** @var int  $clen - Length of ciphertext */
        $clen = $len - self::aead_chacha20poly1305_ABYTES;

        /** @var int $adlen - Length of associated data */
        $adlen = ParagonIE_Sodium_Core32_Util::strlen($ad);

        /** @var string $mac - Message authentication code */
        $mac = ParagonIE_Sodium_Core32_Util::substr(
            $message,
            $clen,
            self::aead_chacha20poly1305_ABYTES
        );

        /** @var string $ciphertext - The encrypted message (sans MAC) */
        $ciphertext = ParagonIE_Sodium_Core32_Util::substr($message, 0, $clen);

        /** @var string The first block of the chacha20 keystream, used as a poly1305 key */
        $block0 = ParagonIE_Sodium_Core32_ChaCha20::stream(
            32,
            $nonce,
            $key
        );

        /* Recalculate the Poly1305 authentication tag (MAC): */
        $state = new ParagonIE_Sodium_Core32_Poly1305_State($block0);
        try {
            ParagonIE_Sodium_Compat::memzero($block0);
        } catch (SodiumException $ex) {
            $block0 = null;
        }
        $state->update($ad);
        $state->update(ParagonIE_Sodium_Core32_Util::store64_le($adlen));
        $state->update($ciphertext);
        $state->update(ParagonIE_Sodium_Core32_Util::store64_le($clen));
        $computed_mac = $state->finish();

        /* Compare the given MAC with the recalculated MAC: */
        if (!ParagonIE_Sodium_Core32_Util::verify_16($computed_mac, $mac)) {
            throw new SodiumException('Invalid MAC');
        }

        // Here, we know that the MAC is valid, so we decrypt and return the plaintext
        return ParagonIE_Sodium_Core32_ChaCha20::streamXorIc(
            $ciphertext,
            $nonce,
            $key,
            ParagonIE_Sodium_Core32_Util::store64_le(1)
        );
    }

    /**
     * AEAD Encryption with ChaCha20-Poly1305
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $message
     * @param string $ad
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function aead_chacha20poly1305_encrypt(
        $message = '',
        $ad = '',
        $nonce = '',
        $key = ''
    ) {
        /** @var int $len - Length of the plaintext message */
        $len = ParagonIE_Sodium_Core32_Util::strlen($message);

        /** @var int $adlen - Length of the associated data */
        $adlen = ParagonIE_Sodium_Core32_Util::strlen($ad);

        /** @var string The first block of the chacha20 keystream, used as a poly1305 key */
        $block0 = ParagonIE_Sodium_Core32_ChaCha20::stream(
            32,
            $nonce,
            $key
        );
        $state = new ParagonIE_Sodium_Core32_Poly1305_State($block0);
        try {
            ParagonIE_Sodium_Compat::memzero($block0);
        } catch (SodiumException $ex) {
            $block0 = null;
        }

        /** @var string $ciphertext - Raw encrypted data */
        $ciphertext = ParagonIE_Sodium_Core32_ChaCha20::streamXorIc(
            $message,
            $nonce,
            $key,
            ParagonIE_Sodium_Core32_Util::store64_le(1)
        );

        $state->update($ad);
        $state->update(ParagonIE_Sodium_Core32_Util::store64_le($adlen));
        $state->update($ciphertext);
        $state->update(ParagonIE_Sodium_Core32_Util::store64_le($len));
        return $ciphertext . $state->finish();
    }

    /**
     * AEAD Decryption with ChaCha20-Poly1305, IETF mode (96-bit nonce)
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $message
     * @param string $ad
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function aead_chacha20poly1305_ietf_decrypt(
        $message = '',
        $ad = '',
        $nonce = '',
        $key = ''
    ) {
        /** @var int $adlen - Length of associated data */
        $adlen = ParagonIE_Sodium_Core32_Util::strlen($ad);

        /** @var int $len - Length of message (ciphertext + MAC) */
        $len = ParagonIE_Sodium_Core32_Util::strlen($message);

        /** @var int  $clen - Length of ciphertext */
        $clen = $len - self::aead_chacha20poly1305_IETF_ABYTES;

        /** @var string The first block of the chacha20 keystream, used as a poly1305 key */
        $block0 = ParagonIE_Sodium_Core32_ChaCha20::ietfStream(
            32,
            $nonce,
            $key
        );

        /** @var string $mac - Message authentication code */
        $mac = ParagonIE_Sodium_Core32_Util::substr(
            $message,
            $len - self::aead_chacha20poly1305_IETF_ABYTES,
            self::aead_chacha20poly1305_IETF_ABYTES
        );

        /** @var string $ciphertext - The encrypted message (sans MAC) */
        $ciphertext = ParagonIE_Sodium_Core32_Util::substr(
            $message,
            0,
            $len - self::aead_chacha20poly1305_IETF_ABYTES
        );

        /* Recalculate the Poly1305 authentication tag (MAC): */
        $state = new ParagonIE_Sodium_Core32_Poly1305_State($block0);
        try {
            ParagonIE_Sodium_Compat::memzero($block0);
        } catch (SodiumException $ex) {
            $block0 = null;
        }
        $state->update($ad);
        $state->update(str_repeat("\x00", ((0x10 - $adlen) & 0xf)));
        $state->update($ciphertext);
        $state->update(str_repeat("\x00", (0x10 - $clen) & 0xf));
        $state->update(ParagonIE_Sodium_Core32_Util::store64_le($adlen));
        $state->update(ParagonIE_Sodium_Core32_Util::store64_le($clen));
        $computed_mac = $state->finish();

        /* Compare the given MAC with the recalculated MAC: */
        if (!ParagonIE_Sodium_Core32_Util::verify_16($computed_mac, $mac)) {
            throw new SodiumException('Invalid MAC');
        }

        // Here, we know that the MAC is valid, so we decrypt and return the plaintext
        return ParagonIE_Sodium_Core32_ChaCha20::ietfStreamXorIc(
            $ciphertext,
            $nonce,
            $key,
            ParagonIE_Sodium_Core32_Util::store64_le(1)
        );
    }

    /**
     * AEAD Encryption with ChaCha20-Poly1305, IETF mode (96-bit nonce)
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $message
     * @param string $ad
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function aead_chacha20poly1305_ietf_encrypt(
        $message = '',
        $ad = '',
        $nonce = '',
        $key = ''
    ) {
        /** @var int $len - Length of the plaintext message */
        $len = ParagonIE_Sodium_Core32_Util::strlen($message);

        /** @var int $adlen - Length of the associated data */
        $adlen = ParagonIE_Sodium_Core32_Util::strlen($ad);

        /** @var string The first block of the chacha20 keystream, used as a poly1305 key */
        $block0 = ParagonIE_Sodium_Core32_ChaCha20::ietfStream(
            32,
            $nonce,
            $key
        );
        $state = new ParagonIE_Sodium_Core32_Poly1305_State($block0);
        try {
            ParagonIE_Sodium_Compat::memzero($block0);
        } catch (SodiumException $ex) {
            $block0 = null;
        }

        /** @var string $ciphertext - Raw encrypted data */
        $ciphertext = ParagonIE_Sodium_Core32_ChaCha20::ietfStreamXorIc(
            $message,
            $nonce,
            $key,
            ParagonIE_Sodium_Core32_Util::store64_le(1)
        );

        $state->update($ad);
        $state->update(str_repeat("\x00", ((0x10 - $adlen) & 0xf)));
        $state->update($ciphertext);
        $state->update(str_repeat("\x00", ((0x10 - $len) & 0xf)));
        $state->update(ParagonIE_Sodium_Core32_Util::store64_le($adlen));
        $state->update(ParagonIE_Sodium_Core32_Util::store64_le($len));
        return $ciphertext . $state->finish();
    }

    /**
     * AEAD Decryption with ChaCha20-Poly1305, IETF mode (96-bit nonce)
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $message
     * @param string $ad
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function aead_xchacha20poly1305_ietf_decrypt(
        $message = '',
        $ad = '',
        $nonce = '',
        $key = ''
    ) {
        $subkey = ParagonIE_Sodium_Core32_HChaCha20::hChaCha20(
            ParagonIE_Sodium_Core32_Util::substr($nonce, 0, 16),
            $key
        );
        $nonceLast = "\x00\x00\x00\x00" .
            ParagonIE_Sodium_Core32_Util::substr($nonce, 16, 8);

        return self::aead_chacha20poly1305_ietf_decrypt($message, $ad, $nonceLast, $subkey);
    }

    /**
     * AEAD Encryption with ChaCha20-Poly1305, IETF mode (96-bit nonce)
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $message
     * @param string $ad
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function aead_xchacha20poly1305_ietf_encrypt(
        $message = '',
        $ad = '',
        $nonce = '',
        $key = ''
    ) {
        $subkey = ParagonIE_Sodium_Core32_HChaCha20::hChaCha20(
            ParagonIE_Sodium_Core32_Util::substr($nonce, 0, 16),
            $key
        );
        $nonceLast = "\x00\x00\x00\x00" .
            ParagonIE_Sodium_Core32_Util::substr($nonce, 16, 8);

        return self::aead_chacha20poly1305_ietf_encrypt($message, $ad, $nonceLast, $subkey);
    }

    /**
     * HMAC-SHA-512-256 (a.k.a. the leftmost 256 bits of HMAC-SHA-512)
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $message
     * @param string $key
     * @return string
     * @throws TypeError
     */
    public static function auth($message, $key)
    {
        return ParagonIE_Sodium_Core32_Util::substr(
            hash_hmac('sha512', $message, $key, true),
            0,
            32
        );
    }

    /**
     * HMAC-SHA-512-256 validation. Constant-time via hash_equals().
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $mac
     * @param string $message
     * @param string $key
     * @return bool
     * @throws SodiumException
     * @throws TypeError
     */
    public static function auth_verify($mac, $message, $key)
    {
        return ParagonIE_Sodium_Core32_Util::hashEquals(
            $mac,
            self::auth($message, $key)
        );
    }

    /**
     * X25519 key exchange followed by XSalsa20Poly1305 symmetric encryption
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $plaintext
     * @param string $nonce
     * @param string $keypair
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function box($plaintext, $nonce, $keypair)
    {
        return self::secretbox(
            $plaintext,
            $nonce,
            self::box_beforenm(
                self::box_secretkey($keypair),
                self::box_publickey($keypair)
            )
        );
    }

    /**
     * X25519-XSalsa20-Poly1305 with one ephemeral X25519 keypair.
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $message
     * @param string $publicKey
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function box_seal($message, $publicKey)
    {
        /** @var string $ephemeralKeypair */
        $ephemeralKeypair = self::box_keypair();

        /** @var string $ephemeralSK */
        $ephemeralSK = self::box_secretkey($ephemeralKeypair);

        /** @var string $ephemeralPK */
        $ephemeralPK = self::box_publickey($ephemeralKeypair);

        /** @var string $nonce */
        $nonce = self::generichash(
            $ephemeralPK . $publicKey,
            '',
            24
        );

        /** @var string $keypair - The combined keypair used in crypto_box() */
        $keypair = self::box_keypair_from_secretkey_and_publickey($ephemeralSK, $publicKey);

        /** @var string $ciphertext Ciphertext + MAC from crypto_box */
        $ciphertext = self::box($message, $nonce, $keypair);
        try {
            ParagonIE_Sodium_Compat::memzero($ephemeralKeypair);
            ParagonIE_Sodium_Compat::memzero($ephemeralSK);
            ParagonIE_Sodium_Compat::memzero($nonce);
        } catch (SodiumException $ex) {
            $ephemeralKeypair = null;
            $ephemeralSK = null;
            $nonce = null;
        }
        return $ephemeralPK . $ciphertext;
    }

    /**
     * Opens a message encrypted via box_seal().
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $message
     * @param string $keypair
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function box_seal_open($message, $keypair)
    {
        /** @var string $ephemeralPK */
        $ephemeralPK = ParagonIE_Sodium_Core32_Util::substr($message, 0, 32);

        /** @var string $ciphertext (ciphertext + MAC) */
        $ciphertext = ParagonIE_Sodium_Core32_Util::substr($message, 32);

        /** @var string $secretKey */
        $secretKey = self::box_secretkey($keypair);

        /** @var string $publicKey */
        $publicKey = self::box_publickey($keypair);

        /** @var string $nonce */
        $nonce = self::generichash(
            $ephemeralPK . $publicKey,
            '',
            24
        );

        /** @var string $keypair */
        $keypair = self::box_keypair_from_secretkey_and_publickey($secretKey, $ephemeralPK);

        /** @var string $m */
        $m = self::box_open($ciphertext, $nonce, $keypair);
        try {
            ParagonIE_Sodium_Compat::memzero($secretKey);
            ParagonIE_Sodium_Compat::memzero($ephemeralPK);
            ParagonIE_Sodium_Compat::memzero($nonce);
        } catch (SodiumException $ex) {
            $secretKey = null;
            $ephemeralPK = null;
            $nonce = null;
        }
        return $m;
    }

    /**
     * Used by crypto_box() to get the crypto_secretbox() key.
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $sk
     * @param string $pk
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function box_beforenm($sk, $pk)
    {
        return ParagonIE_Sodium_Core32_HSalsa20::hsalsa20(
            str_repeat("\x00", 16),
            self::scalarmult($sk, $pk)
        );
    }

    /**
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @return string
     * @throws Exception
     * @throws SodiumException
     * @throws TypeError
     */
    public static function box_keypair()
    {
        $sKey = random_bytes(32);
        $pKey = self::scalarmult_base($sKey);
        return $sKey . $pKey;
    }

    /**
     * @param string $seed
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function box_seed_keypair($seed)
    {
        $sKey = ParagonIE_Sodium_Core32_Util::substr(
            hash('sha512', $seed, true),
            0,
            32
        );
        $pKey = self::scalarmult_base($sKey);
        return $sKey . $pKey;
    }

    /**
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $sKey
     * @param string $pKey
     * @return string
     * @throws TypeError
     */
    public static function box_keypair_from_secretkey_and_publickey($sKey, $pKey)
    {
        return ParagonIE_Sodium_Core32_Util::substr($sKey, 0, 32) .
            ParagonIE_Sodium_Core32_Util::substr($pKey, 0, 32);
    }

    /**
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $keypair
     * @return string
     * @throws RangeException
     * @throws TypeError
     */
    public static function box_secretkey($keypair)
    {
        if (ParagonIE_Sodium_Core32_Util::strlen($keypair) !== 64) {
            throw new RangeException(
                'Must be ParagonIE_Sodium_Compat::CRYPTO_BOX_KEYPAIRBYTES bytes long.'
            );
        }
        return ParagonIE_Sodium_Core32_Util::substr($keypair, 0, 32);
    }

    /**
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $keypair
     * @return string
     * @throws RangeException
     * @throws TypeError
     */
    public static function box_publickey($keypair)
    {
        if (ParagonIE_Sodium_Core32_Util::strlen($keypair) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_KEYPAIRBYTES) {
            throw new RangeException(
                'Must be ParagonIE_Sodium_Compat::CRYPTO_BOX_KEYPAIRBYTES bytes long.'
            );
        }
        return ParagonIE_Sodium_Core32_Util::substr($keypair, 32, 32);
    }

    /**
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $sKey
     * @return string
     * @throws RangeException
     * @throws SodiumException
     * @throws TypeError
     */
    public static function box_publickey_from_secretkey($sKey)
    {
        if (ParagonIE_Sodium_Core32_Util::strlen($sKey) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_SECRETKEYBYTES) {
            throw new RangeException(
                'Must be ParagonIE_Sodium_Compat::CRYPTO_BOX_SECRETKEYBYTES bytes long.'
            );
        }
        return self::scalarmult_base($sKey);
    }

    /**
     * Decrypt a message encrypted with box().
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $ciphertext
     * @param string $nonce
     * @param string $keypair
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function box_open($ciphertext, $nonce, $keypair)
    {
        return self::secretbox_open(
            $ciphertext,
            $nonce,
            self::box_beforenm(
                self::box_secretkey($keypair),
                self::box_publickey($keypair)
            )
        );
    }

    /**
     * Calculate a BLAKE2b hash.
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $message
     * @param string|null $key
     * @param int $outlen
     * @return string
     * @throws RangeException
     * @throws SodiumException
     * @throws TypeError
     */
    public static function generichash($message, $key = '', $outlen = 32)
    {
        // This ensures that ParagonIE_Sodium_Core32_BLAKE2b::$iv is initialized
        ParagonIE_Sodium_Core32_BLAKE2b::pseudoConstructor();

        $k = null;
        if (!empty($key)) {
            /** @var SplFixedArray $k */
            $k = ParagonIE_Sodium_Core32_BLAKE2b::stringToSplFixedArray($key);
            if ($k->count() > ParagonIE_Sodium_Core32_BLAKE2b::KEYBYTES) {
                throw new RangeException('Invalid key size');
            }
        }

        /** @var SplFixedArray $in */
        $in = ParagonIE_Sodium_Core32_BLAKE2b::stringToSplFixedArray($message);

        /** @var SplFixedArray $ctx */
        $ctx = ParagonIE_Sodium_Core32_BLAKE2b::init($k, $outlen);
        ParagonIE_Sodium_Core32_BLAKE2b::update($ctx, $in, $in->count());

        /** @var SplFixedArray $out */
        $out = new SplFixedArray($outlen);
        $out = ParagonIE_Sodium_Core32_BLAKE2b::finish($ctx, $out);

        /** @var array<int, int> */
        $outArray = $out->toArray();
        return ParagonIE_Sodium_Core32_Util::intArrayToString($outArray);
    }

    /**
     * Finalize a BLAKE2b hashing context, returning the hash.
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $ctx
     * @param int $outlen
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function generichash_final($ctx, $outlen = 32)
    {
        if (!is_string($ctx)) {
            throw new TypeError('Context must be a string');
        }
        $out = new SplFixedArray($outlen);

        /** @var SplFixedArray $context */
        $context = ParagonIE_Sodium_Core32_BLAKE2b::stringToContext($ctx);

        /** @var SplFixedArray $out */
        $out = ParagonIE_Sodium_Core32_BLAKE2b::finish($context, $out);

        /** @var array<int, int> */
        $outArray = $out->toArray();
        return ParagonIE_Sodium_Core32_Util::intArrayToString($outArray);
    }

    /**
     * Initialize a hashing context for BLAKE2b.
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $key
     * @param int $outputLength
     * @return string
     * @throws RangeException
     * @throws SodiumException
     * @throws TypeError
     */
    public static function generichash_init($key = '', $outputLength = 32)
    {
        // This ensures that ParagonIE_Sodium_Core32_BLAKE2b::$iv is initialized
        ParagonIE_Sodium_Core32_BLAKE2b::pseudoConstructor();

        $k = null;
        if (!empty($key)) {
            $k = ParagonIE_Sodium_Core32_BLAKE2b::stringToSplFixedArray($key);
            if ($k->count() > ParagonIE_Sodium_Core32_BLAKE2b::KEYBYTES) {
                throw new RangeException('Invalid key size');
            }
        }

        /** @var SplFixedArray $ctx */
        $ctx = ParagonIE_Sodium_Core32_BLAKE2b::init($k, $outputLength);

        return ParagonIE_Sodium_Core32_BLAKE2b::contextToString($ctx);
    }

    /**
     * Initialize a hashing context for BLAKE2b.
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $key
     * @param int $outputLength
     * @param string $salt
     * @param string $personal
     * @return string
     * @throws RangeException
     * @throws SodiumException
     * @throws TypeError
     */
    public static function generichash_init_salt_personal(
        $key = '',
        $outputLength = 32,
        $salt = '',
        $personal = ''
    ) {
        // This ensures that ParagonIE_Sodium_Core32_BLAKE2b::$iv is initialized
        ParagonIE_Sodium_Core32_BLAKE2b::pseudoConstructor();

        $k = null;
        if (!empty($key)) {
            $k = ParagonIE_Sodium_Core32_BLAKE2b::stringToSplFixedArray($key);
            if ($k->count() > ParagonIE_Sodium_Core32_BLAKE2b::KEYBYTES) {
                throw new RangeException('Invalid key size');
            }
        }
        if (!empty($salt)) {
            $s = ParagonIE_Sodium_Core32_BLAKE2b::stringToSplFixedArray($salt);
        } else {
            $s = null;
        }
        if (!empty($salt)) {
            $p = ParagonIE_Sodium_Core32_BLAKE2b::stringToSplFixedArray($personal);
        } else {
            $p = null;
        }

        /** @var SplFixedArray $ctx */
        $ctx = ParagonIE_Sodium_Core32_BLAKE2b::init($k, $outputLength, $s, $p);

        return ParagonIE_Sodium_Core32_BLAKE2b::contextToString($ctx);
    }

    /**
     * Update a hashing context for BLAKE2b with $message
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $ctx
     * @param string $message
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function generichash_update($ctx, $message)
    {
        // This ensures that ParagonIE_Sodium_Core32_BLAKE2b::$iv is initialized
        ParagonIE_Sodium_Core32_BLAKE2b::pseudoConstructor();

        /** @var SplFixedArray $context */
        $context = ParagonIE_Sodium_Core32_BLAKE2b::stringToContext($ctx);

        /** @var SplFixedArray $in */
        $in = ParagonIE_Sodium_Core32_BLAKE2b::stringToSplFixedArray($message);

        ParagonIE_Sodium_Core32_BLAKE2b::update($context, $in, $in->count());

        return ParagonIE_Sodium_Core32_BLAKE2b::contextToString($context);
    }

    /**
     * Libsodium's crypto_kx().
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $my_sk
     * @param string $their_pk
     * @param string $client_pk
     * @param string $server_pk
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function keyExchange($my_sk, $their_pk, $client_pk, $server_pk)
    {
        return self::generichash(
            self::scalarmult($my_sk, $their_pk) .
            $client_pk .
            $server_pk
        );
    }

    /**
     * ECDH over Curve25519
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $sKey
     * @param string $pKey
     * @return string
     *
     * @throws SodiumException
     * @throws TypeError
     */
    public static function scalarmult($sKey, $pKey)
    {
        $q = ParagonIE_Sodium_Core32_X25519::crypto_scalarmult_curve25519_ref10($sKey, $pKey);
        self::scalarmult_throw_if_zero($q);
        return $q;
    }

    /**
     * ECDH over Curve25519, using the basepoint.
     * Used to get a secret key from a public key.
     *
     * @param string $secret
     * @return string
     *
     * @throws SodiumException
     * @throws TypeError
     */
    public static function scalarmult_base($secret)
    {
        $q = ParagonIE_Sodium_Core32_X25519::crypto_scalarmult_curve25519_ref10_base($secret);
        self::scalarmult_throw_if_zero($q);
        return $q;
    }

    /**
     * This throws an Error if a zero public key was passed to the function.
     *
     * @param string $q
     * @return void
     * @throws SodiumException
     * @throws TypeError
     */
    protected static function scalarmult_throw_if_zero($q)
    {
        $d = 0;
        for ($i = 0; $i < self::box_curve25519xsalsa20poly1305_SECRETKEYBYTES; ++$i) {
            $d |= ParagonIE_Sodium_Core32_Util::chrToInt($q[$i]);
        }

        /* branch-free variant of === 0 */
        if (-(1 & (($d - 1) >> 8))) {
            throw new SodiumException('Zero public key is not allowed');
        }
    }

    /**
     * XSalsa20-Poly1305 authenticated symmetric-key encryption.
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $plaintext
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function secretbox($plaintext, $nonce, $key)
    {
        /** @var string $subkey */
        $subkey = ParagonIE_Sodium_Core32_HSalsa20::hsalsa20($nonce, $key);

        /** @var string $block0 */
        $block0 = str_repeat("\x00", 32);

        /** @var int $mlen - Length of the plaintext message */
        $mlen = ParagonIE_Sodium_Core32_Util::strlen($plaintext);
        $mlen0 = $mlen;
        if ($mlen0 > 64 - self::secretbox_xsalsa20poly1305_ZEROBYTES) {
            $mlen0 = 64 - self::secretbox_xsalsa20poly1305_ZEROBYTES;
        }
        $block0 .= ParagonIE_Sodium_Core32_Util::substr($plaintext, 0, $mlen0);

        /** @var string $block0 */
        $block0 = ParagonIE_Sodium_Core32_Salsa20::salsa20_xor(
            $block0,
            ParagonIE_Sodium_Core32_Util::substr($nonce, 16, 8),
            $subkey
        );

        /** @var string $c */
        $c = ParagonIE_Sodium_Core32_Util::substr(
            $block0,
            self::secretbox_xsalsa20poly1305_ZEROBYTES
        );
        if ($mlen > $mlen0) {
            $c .= ParagonIE_Sodium_Core32_Salsa20::salsa20_xor_ic(
                ParagonIE_Sodium_Core32_Util::substr(
                    $plaintext,
                    self::secretbox_xsalsa20poly1305_ZEROBYTES
                ),
                ParagonIE_Sodium_Core32_Util::substr($nonce, 16, 8),
                1,
                $subkey
            );
        }
        $state = new ParagonIE_Sodium_Core32_Poly1305_State(
            ParagonIE_Sodium_Core32_Util::substr(
                $block0,
                0,
                self::onetimeauth_poly1305_KEYBYTES
            )
        );
        try {
            ParagonIE_Sodium_Compat::memzero($block0);
            ParagonIE_Sodium_Compat::memzero($subkey);
        } catch (SodiumException $ex) {
            $block0 = null;
            $subkey = null;
        }

        $state->update($c);

        /** @var string $c - MAC || ciphertext */
        $c = $state->finish() . $c;
        unset($state);

        return $c;
    }

    /**
     * Decrypt a ciphertext generated via secretbox().
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $ciphertext
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function secretbox_open($ciphertext, $nonce, $key)
    {
        /** @var string $mac */
        $mac = ParagonIE_Sodium_Core32_Util::substr(
            $ciphertext,
            0,
            self::secretbox_xsalsa20poly1305_MACBYTES
        );

        /** @var string $c */
        $c = ParagonIE_Sodium_Core32_Util::substr(
            $ciphertext,
            self::secretbox_xsalsa20poly1305_MACBYTES
        );

        /** @var int $clen */
        $clen = ParagonIE_Sodium_Core32_Util::strlen($c);

        /** @var string $subkey */
        $subkey = ParagonIE_Sodium_Core32_HSalsa20::hsalsa20($nonce, $key);

        /** @var string $block0 */
        $block0 = ParagonIE_Sodium_Core32_Salsa20::salsa20(
            64,
            ParagonIE_Sodium_Core32_Util::substr($nonce, 16, 8),
            $subkey
        );
        $verified = ParagonIE_Sodium_Core32_Poly1305::onetimeauth_verify(
            $mac,
            $c,
            ParagonIE_Sodium_Core32_Util::substr($block0, 0, 32)
        );
        if (!$verified) {
            try {
                ParagonIE_Sodium_Compat::memzero($subkey);
            } catch (SodiumException $ex) {
                $subkey = null;
            }
            throw new SodiumException('Invalid MAC');
        }

        /** @var string $m - Decrypted message */
        $m = ParagonIE_Sodium_Core32_Util::xorStrings(
            ParagonIE_Sodium_Core32_Util::substr($block0, self::secretbox_xsalsa20poly1305_ZEROBYTES),
            ParagonIE_Sodium_Core32_Util::substr($c, 0, self::secretbox_xsalsa20poly1305_ZEROBYTES)
        );
        if ($clen > self::secretbox_xsalsa20poly1305_ZEROBYTES) {
            // We had more than 1 block, so let's continue to decrypt the rest.
            $m .= ParagonIE_Sodium_Core32_Salsa20::salsa20_xor_ic(
                ParagonIE_Sodium_Core32_Util::substr(
                    $c,
                    self::secretbox_xsalsa20poly1305_ZEROBYTES
                ),
                ParagonIE_Sodium_Core32_Util::substr($nonce, 16, 8),
                1,
                (string) $subkey
            );
        }
        return $m;
    }

    /**
     * XChaCha20-Poly1305 authenticated symmetric-key encryption.
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $plaintext
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function secretbox_xchacha20poly1305($plaintext, $nonce, $key)
    {
        /** @var string $subkey */
        $subkey = ParagonIE_Sodium_Core32_HChaCha20::hChaCha20(
            ParagonIE_Sodium_Core32_Util::substr($nonce, 0, 16),
            $key
        );
        $nonceLast = ParagonIE_Sodium_Core32_Util::substr($nonce, 16, 8);

        /** @var string $block0 */
        $block0 = str_repeat("\x00", 32);

        /** @var int $mlen - Length of the plaintext message */
        $mlen = ParagonIE_Sodium_Core32_Util::strlen($plaintext);
        $mlen0 = $mlen;
        if ($mlen0 > 64 - self::secretbox_xchacha20poly1305_ZEROBYTES) {
            $mlen0 = 64 - self::secretbox_xchacha20poly1305_ZEROBYTES;
        }
        $block0 .= ParagonIE_Sodium_Core32_Util::substr($plaintext, 0, $mlen0);

        /** @var string $block0 */
        $block0 = ParagonIE_Sodium_Core32_ChaCha20::streamXorIc(
            $block0,
            $nonceLast,
            $subkey
        );

        /** @var string $c */
        $c = ParagonIE_Sodium_Core32_Util::substr(
            $block0,
            self::secretbox_xchacha20poly1305_ZEROBYTES
        );
        if ($mlen > $mlen0) {
            $c .= ParagonIE_Sodium_Core32_ChaCha20::streamXorIc(
                ParagonIE_Sodium_Core32_Util::substr(
                    $plaintext,
                    self::secretbox_xchacha20poly1305_ZEROBYTES
                ),
                $nonceLast,
                $subkey,
                ParagonIE_Sodium_Core32_Util::store64_le(1)
            );
        }
        $state = new ParagonIE_Sodium_Core32_Poly1305_State(
            ParagonIE_Sodium_Core32_Util::substr(
                $block0,
                0,
                self::onetimeauth_poly1305_KEYBYTES
            )
        );
        try {
            ParagonIE_Sodium_Compat::memzero($block0);
            ParagonIE_Sodium_Compat::memzero($subkey);
        } catch (SodiumException $ex) {
            $block0 = null;
            $subkey = null;
        }

        $state->update($c);

        /** @var string $c - MAC || ciphertext */
        $c = $state->finish() . $c;
        unset($state);

        return $c;
    }

    /**
     * Decrypt a ciphertext generated via secretbox_xchacha20poly1305().
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $ciphertext
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function secretbox_xchacha20poly1305_open($ciphertext, $nonce, $key)
    {
        /** @var string $mac */
        $mac = ParagonIE_Sodium_Core32_Util::substr(
            $ciphertext,
            0,
            self::secretbox_xchacha20poly1305_MACBYTES
        );

        /** @var string $c */
        $c = ParagonIE_Sodium_Core32_Util::substr(
            $ciphertext,
            self::secretbox_xchacha20poly1305_MACBYTES
        );

        /** @var int $clen */
        $clen = ParagonIE_Sodium_Core32_Util::strlen($c);

        /** @var string $subkey */
        $subkey = ParagonIE_Sodium_Core32_HChaCha20::hchacha20($nonce, $key);

        /** @var string $block0 */
        $block0 = ParagonIE_Sodium_Core32_ChaCha20::stream(
            64,
            ParagonIE_Sodium_Core32_Util::substr($nonce, 16, 8),
            $subkey
        );
        $verified = ParagonIE_Sodium_Core32_Poly1305::onetimeauth_verify(
            $mac,
            $c,
            ParagonIE_Sodium_Core32_Util::substr($block0, 0, 32)
        );

        if (!$verified) {
            try {
                ParagonIE_Sodium_Compat::memzero($subkey);
            } catch (SodiumException $ex) {
                $subkey = null;
            }
            throw new SodiumException('Invalid MAC');
        }

        /** @var string $m - Decrypted message */
        $m = ParagonIE_Sodium_Core32_Util::xorStrings(
            ParagonIE_Sodium_Core32_Util::substr($block0, self::secretbox_xchacha20poly1305_ZEROBYTES),
            ParagonIE_Sodium_Core32_Util::substr($c, 0, self::secretbox_xchacha20poly1305_ZEROBYTES)
        );

        if ($clen > self::secretbox_xchacha20poly1305_ZEROBYTES) {
            // We had more than 1 block, so let's continue to decrypt the rest.
            $m .= ParagonIE_Sodium_Core32_ChaCha20::streamXorIc(
                ParagonIE_Sodium_Core32_Util::substr(
                    $c,
                    self::secretbox_xchacha20poly1305_ZEROBYTES
                ),
                ParagonIE_Sodium_Core32_Util::substr($nonce, 16, 8),
                (string) $subkey,
                ParagonIE_Sodium_Core32_Util::store64_le(1)
            );
        }
        return $m;
    }

    /**
     * @param string $key
     * @return array<int, string> Returns a state and a header.
     * @throws Exception
     * @throws SodiumException
     */
    public static function secretstream_xchacha20poly1305_init_push($key)
    {
        # randombytes_buf(out, crypto_secretstream_xchacha20poly1305_HEADERBYTES);
        $out = random_bytes(24);

        # crypto_core_hchacha20(state->k, out, k, NULL);
        $subkey = ParagonIE_Sodium_Core32_HChaCha20::hChaCha20($out, $key);
        $state = new ParagonIE_Sodium_Core32_SecretStream_State(
            $subkey,
            ParagonIE_Sodium_Core32_Util::substr($out, 16, 8) . str_repeat("\0", 4)
        );

        # _crypto_secretstream_xchacha20poly1305_counter_reset(state);
        $state->counterReset();

        # memcpy(STATE_INONCE(state), out + crypto_core_hchacha20_INPUTBYTES,
        #        crypto_secretstream_xchacha20poly1305_INONCEBYTES);
        # memset(state->_pad, 0, sizeof state->_pad);
        return array(
            $state->toString(),
            $out
        );
    }

    /**
     * @param string $key
     * @param string $header
     * @return string Returns a state.
     * @throws Exception
     */
    public static function secretstream_xchacha20poly1305_init_pull($key, $header)
    {
        # crypto_core_hchacha20(state->k, in, k, NULL);
        $subkey = ParagonIE_Sodium_Core32_HChaCha20::hChaCha20(
            ParagonIE_Sodium_Core32_Util::substr($header, 0, 16),
            $key
        );
        $state = new ParagonIE_Sodium_Core32_SecretStream_State(
            $subkey,
            ParagonIE_Sodium_Core32_Util::substr($header, 16)
        );
        $state->counterReset();
        # memcpy(STATE_INONCE(state), in + crypto_core_hchacha20_INPUTBYTES,
        #     crypto_secretstream_xchacha20poly1305_INONCEBYTES);
        # memset(state->_pad, 0, sizeof state->_pad);
        # return 0;
        return $state->toString();
    }

    /**
     * @param string $state
     * @param string $msg
     * @param string $aad
     * @param int $tag
     * @return string
     * @throws SodiumException
     */
    public static function secretstream_xchacha20poly1305_push(&$state, $msg, $aad = '', $tag = 0)
    {
        $st = ParagonIE_Sodium_Core32_SecretStream_State::fromString($state);
        # crypto_onetimeauth_poly1305_state poly1305_state;
        # unsigned char                     block[64U];
        # unsigned char                     slen[8U];
        # unsigned char                    *c;
        # unsigned char                    *mac;

        $msglen = ParagonIE_Sodium_Core32_Util::strlen($msg);
        $aadlen = ParagonIE_Sodium_Core32_Util::strlen($aad);

        if ((($msglen + 63) >> 6) > 0xfffffffe) {
            throw new SodiumException(
                'message cannot be larger than SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_MESSAGEBYTES_MAX bytes'
            );
        }

        # if (outlen_p != NULL) {
        #     *outlen_p = 0U;
        # }
        # if (mlen > crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX) {
        #     sodium_misuse();
        # }

        # crypto_stream_chacha20_ietf(block, sizeof block, state->nonce, state->k);
        # crypto_onetimeauth_poly1305_init(&poly1305_state, block);
        # sodium_memzero(block, sizeof block);
        $auth = new ParagonIE_Sodium_Core32_Poly1305_State(
            ParagonIE_Sodium_Core32_ChaCha20::ietfStream(32, $st->getCombinedNonce(), $st->getKey())
        );

        # crypto_onetimeauth_poly1305_update(&poly1305_state, ad, adlen);
        $auth->update($aad);

        # crypto_onetimeauth_poly1305_update(&poly1305_state, _pad0,
        #     (0x10 - adlen) & 0xf);
        $auth->update(str_repeat("\0", ((0x10 - $aadlen) & 0xf)));

        # memset(block, 0, sizeof block);
        # block[0] = tag;
        # crypto_stream_chacha20_ietf_xor_ic(block, block, sizeof block,
        #                                    state->nonce, 1U, state->k);
        $block = ParagonIE_Sodium_Core32_ChaCha20::ietfStreamXorIc(
            ParagonIE_Sodium_Core32_Util::intToChr($tag) . str_repeat("\0", 63),
            $st->getCombinedNonce(),
            $st->getKey(),
            ParagonIE_Sodium_Core32_Util::store64_le(1)
        );

        # crypto_onetimeauth_poly1305_update(&poly1305_state, block, sizeof block);
        $auth->update($block);

        # out[0] = block[0];
        $out = $block[0];
        # c = out + (sizeof tag);
        # crypto_stream_chacha20_ietf_xor_ic(c, m, mlen, state->nonce, 2U, state->k);
        $cipher = ParagonIE_Sodium_Core32_ChaCha20::ietfStreamXorIc(
            $msg,
            $st->getCombinedNonce(),
            $st->getKey(),
            ParagonIE_Sodium_Core32_Util::store64_le(2)
        );

        # crypto_onetimeauth_poly1305_update(&poly1305_state, c, mlen);
        $auth->update($cipher);

        $out .= $cipher;
        unset($cipher);

        # crypto_onetimeauth_poly1305_update
        # (&poly1305_state, _pad0, (0x10 - (sizeof block) + mlen) & 0xf);
        $auth->update(str_repeat("\0", ((0x10 - 64 + $msglen) & 0xf)));

        # STORE64_LE(slen, (uint64_t) adlen);
        $slen = ParagonIE_Sodium_Core32_Util::store64_le($aadlen);

        # crypto_onetimeauth_poly1305_update(&poly1305_state, slen, sizeof slen);
        $auth->update($slen);

        # STORE64_LE(slen, (sizeof block) + mlen);
        $slen = ParagonIE_Sodium_Core32_Util::store64_le(64 + $msglen);

        # crypto_onetimeauth_poly1305_update(&poly1305_state, slen, sizeof slen);
        $auth->update($slen);

        # mac = c + mlen;
        # crypto_onetimeauth_poly1305_final(&poly1305_state, mac);
        $mac = $auth->finish();
        $out .= $mac;

        # sodium_memzero(&poly1305_state, sizeof poly1305_state);
        unset($auth);


        # XOR_BUF(STATE_INONCE(state), mac,
        #     crypto_secretstream_xchacha20poly1305_INONCEBYTES);
        $st->xorNonce($mac);

        # sodium_increment(STATE_COUNTER(state),
        #     crypto_secretstream_xchacha20poly1305_COUNTERBYTES);
        $st->incrementCounter();
        // Overwrite by reference:
        $state = $st->toString();

        /** @var bool $rekey */
        $rekey = ($tag & ParagonIE_Sodium_Compat::CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_REKEY) !== 0;
        # if ((tag & crypto_secretstream_xchacha20poly1305_TAG_REKEY) != 0 ||
        #     sodium_is_zero(STATE_COUNTER(state),
        #         crypto_secretstream_xchacha20poly1305_COUNTERBYTES)) {
        #     crypto_secretstream_xchacha20poly1305_rekey(state);
        # }
        if ($rekey || $st->needsRekey()) {
            // DO REKEY
            self::secretstream_xchacha20poly1305_rekey($state);
        }
        # if (outlen_p != NULL) {
        #     *outlen_p = crypto_secretstream_xchacha20poly1305_ABYTES + mlen;
        # }
        return $out;
    }

    /**
     * @param string $state
     * @param string $cipher
     * @param string $aad
     * @return bool|array{0: string, 1: int}
     * @throws SodiumException
     */
    public static function secretstream_xchacha20poly1305_pull(&$state, $cipher, $aad = '')
    {
        $st = ParagonIE_Sodium_Core32_SecretStream_State::fromString($state);

        $cipherlen = ParagonIE_Sodium_Core32_Util::strlen($cipher);
        #     mlen = inlen - crypto_secretstream_xchacha20poly1305_ABYTES;
        $msglen = $cipherlen - ParagonIE_Sodium_Compat::CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_ABYTES;
        $aadlen = ParagonIE_Sodium_Core32_Util::strlen($aad);

        #     if (mlen > crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX) {
        #         sodium_misuse();
        #     }
        if ((($msglen + 63) >> 6) > 0xfffffffe) {
            throw new SodiumException(
                'message cannot be larger than SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_MESSAGEBYTES_MAX bytes'
            );
        }

        #     crypto_stream_chacha20_ietf(block, sizeof block, state->nonce, state->k);
        #     crypto_onetimeauth_poly1305_init(&poly1305_state, block);
        #     sodium_memzero(block, sizeof block);
        $auth = new ParagonIE_Sodium_Core32_Poly1305_State(
            ParagonIE_Sodium_Core32_ChaCha20::ietfStream(32, $st->getCombinedNonce(), $st->getKey())
        );

        #     crypto_onetimeauth_poly1305_update(&poly1305_state, ad, adlen);
        $auth->update($aad);

        #     crypto_onetimeauth_poly1305_update(&poly1305_state, _pad0,
        #         (0x10 - adlen) & 0xf);
        $auth->update(str_repeat("\0", ((0x10 - $aadlen) & 0xf)));


        #     memset(block, 0, sizeof block);
        #     block[0] = in[0];
        #     crypto_stream_chacha20_ietf_xor_ic(block, block, sizeof block,
        #                                        state->nonce, 1U, state->k);
        $block = ParagonIE_Sodium_Core32_ChaCha20::ietfStreamXorIc(
            $cipher[0] . str_repeat("\0", 63),
            $st->getCombinedNonce(),
            $st->getKey(),
            ParagonIE_Sodium_Core32_Util::store64_le(1)
        );
        #     tag = block[0];
        #     block[0] = in[0];
        #     crypto_onetimeauth_poly1305_update(&poly1305_state, block, sizeof block);
        $tag = ParagonIE_Sodium_Core32_Util::chrToInt($block[0]);
        $block[0] = $cipher[0];
        $auth->update($block);


        #     c = in + (sizeof tag);
        #     crypto_onetimeauth_poly1305_update(&poly1305_state, c, mlen);
        $auth->update(ParagonIE_Sodium_Core32_Util::substr($cipher, 1, $msglen));

        #     crypto_onetimeauth_poly1305_update
        #     (&poly1305_state, _pad0, (0x10 - (sizeof block) + mlen) & 0xf);
        $auth->update(str_repeat("\0", ((0x10 - 64 + $msglen) & 0xf)));

        #     STORE64_LE(slen, (uint64_t) adlen);
        #     crypto_onetimeauth_poly1305_update(&poly1305_state, slen, sizeof slen);
        $slen = ParagonIE_Sodium_Core32_Util::store64_le($aadlen);
        $auth->update($slen);

        #     STORE64_LE(slen, (sizeof block) + mlen);
        #     crypto_onetimeauth_poly1305_update(&poly1305_state, slen, sizeof slen);
        $slen = ParagonIE_Sodium_Core32_Util::store64_le(64 + $msglen);
        $auth->update($slen);

        #     crypto_onetimeauth_poly1305_final(&poly1305_state, mac);
        #     sodium_memzero(&poly1305_state, sizeof poly1305_state);
        $mac = $auth->finish();

        #     stored_mac = c + mlen;
        #     if (sodium_memcmp(mac, stored_mac, sizeof mac) != 0) {
        #     sodium_memzero(mac, sizeof mac);
        #         return -1;
        #     }

        $stored = ParagonIE_Sodium_Core32_Util::substr($cipher, $msglen + 1, 16);
        if (!ParagonIE_Sodium_Core32_Util::hashEquals($mac, $stored)) {
            return false;
        }

        #     crypto_stream_chacha20_ietf_xor_ic(m, c, mlen, state->nonce, 2U, state->k);
        $out = ParagonIE_Sodium_Core32_ChaCha20::ietfStreamXorIc(
            ParagonIE_Sodium_Core32_Util::substr($cipher, 1, $msglen),
            $st->getCombinedNonce(),
            $st->getKey(),
            ParagonIE_Sodium_Core32_Util::store64_le(2)
        );

        #     XOR_BUF(STATE_INONCE(state), mac,
        #         crypto_secretstream_xchacha20poly1305_INONCEBYTES);
        $st->xorNonce($mac);

        #     sodium_increment(STATE_COUNTER(state),
        #         crypto_secretstream_xchacha20poly1305_COUNTERBYTES);
        $st->incrementCounter();

        #     if ((tag & crypto_secretstream_xchacha20poly1305_TAG_REKEY) != 0 ||
        #         sodium_is_zero(STATE_COUNTER(state),
        #             crypto_secretstream_xchacha20poly1305_COUNTERBYTES)) {
        #         crypto_secretstream_xchacha20poly1305_rekey(state);
        #     }

        // Overwrite by reference:
        $state = $st->toString();

        /** @var bool $rekey */
        $rekey = ($tag & ParagonIE_Sodium_Compat::CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_REKEY) !== 0;
        if ($rekey || $st->needsRekey()) {
            // DO REKEY
            self::secretstream_xchacha20poly1305_rekey($state);
        }
        return array($out, $tag);
    }

    /**
     * @param string $state
     * @return void
     * @throws SodiumException
     */
    public static function secretstream_xchacha20poly1305_rekey(&$state)
    {
        $st = ParagonIE_Sodium_Core32_SecretStream_State::fromString($state);
        # unsigned char new_key_and_inonce[crypto_stream_chacha20_ietf_KEYBYTES +
        # crypto_secretstream_xchacha20poly1305_INONCEBYTES];
        # size_t        i;
        # for (i = 0U; i < crypto_stream_chacha20_ietf_KEYBYTES; i++) {
        #     new_key_and_inonce[i] = state->k[i];
        # }
        $new_key_and_inonce = $st->getKey();

        # for (i = 0U; i < crypto_secretstream_xchacha20poly1305_INONCEBYTES; i++) {
        #     new_key_and_inonce[crypto_stream_chacha20_ietf_KEYBYTES + i] =
        #         STATE_INONCE(state)[i];
        # }
        $new_key_and_inonce .= ParagonIE_Sodium_Core32_Util::substR($st->getNonce(), 0, 8);

        # crypto_stream_chacha20_ietf_xor(new_key_and_inonce, new_key_and_inonce,
        #                                 sizeof new_key_and_inonce,
        #                                 state->nonce, state->k);

        $st->rekey(ParagonIE_Sodium_Core32_ChaCha20::ietfStreamXorIc(
            $new_key_and_inonce,
            $st->getCombinedNonce(),
            $st->getKey(),
            ParagonIE_Sodium_Core32_Util::store64_le(0)
        ));

        # for (i = 0U; i < crypto_stream_chacha20_ietf_KEYBYTES; i++) {
        #     state->k[i] = new_key_and_inonce[i];
        # }
        # for (i = 0U; i < crypto_secretstream_xchacha20poly1305_INONCEBYTES; i++) {
        #     STATE_INONCE(state)[i] =
        #          new_key_and_inonce[crypto_stream_chacha20_ietf_KEYBYTES + i];
        # }
        # _crypto_secretstream_xchacha20poly1305_counter_reset(state);
        $st->counterReset();

        $state = $st->toString();
    }

    /**
     * Detached Ed25519 signature.
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $message
     * @param string $sk
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function sign_detached($message, $sk)
    {
        return ParagonIE_Sodium_Core32_Ed25519::sign_detached($message, $sk);
    }

    /**
     * Attached Ed25519 signature. (Returns a signed message.)
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $message
     * @param string $sk
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function sign($message, $sk)
    {
        return ParagonIE_Sodium_Core32_Ed25519::sign($message, $sk);
    }

    /**
     * Opens a signed message. If valid, returns the message.
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $signedMessage
     * @param string $pk
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function sign_open($signedMessage, $pk)
    {
        return ParagonIE_Sodium_Core32_Ed25519::sign_open($signedMessage, $pk);
    }

    /**
     * Verify a detached signature of a given message and public key.
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $signature
     * @param string $message
     * @param string $pk
     * @return bool
     * @throws SodiumException
     * @throws TypeError
     */
    public static function sign_verify_detached($signature, $message, $pk)
    {
        return ParagonIE_Sodium_Core32_Ed25519::verify_detached($signature, $message, $pk);
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core32/ChaCha20.php000064400000034352150755146460020023 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Core32_ChaCha20', false)) {
    return;
}

/**
 * Class ParagonIE_Sodium_Core32_ChaCha20
 */
class ParagonIE_Sodium_Core32_ChaCha20 extends ParagonIE_Sodium_Core32_Util
{
    /**
     * The ChaCha20 quarter round function. Works on four 32-bit integers.
     *
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core32_Int32 $a
     * @param ParagonIE_Sodium_Core32_Int32 $b
     * @param ParagonIE_Sodium_Core32_Int32 $c
     * @param ParagonIE_Sodium_Core32_Int32 $d
     * @return array<int, ParagonIE_Sodium_Core32_Int32>
     * @throws SodiumException
     * @throws TypeError
     */
    protected static function quarterRound(
        ParagonIE_Sodium_Core32_Int32 $a,
        ParagonIE_Sodium_Core32_Int32 $b,
        ParagonIE_Sodium_Core32_Int32 $c,
        ParagonIE_Sodium_Core32_Int32 $d
    ) {
        /** @var ParagonIE_Sodium_Core32_Int32 $a */
        /** @var ParagonIE_Sodium_Core32_Int32 $b */
        /** @var ParagonIE_Sodium_Core32_Int32 $c */
        /** @var ParagonIE_Sodium_Core32_Int32 $d */

        # a = PLUS(a,b); d = ROTATE(XOR(d,a),16);
        $a = $a->addInt32($b);
        $d = $d->xorInt32($a)->rotateLeft(16);

        # c = PLUS(c,d); b = ROTATE(XOR(b,c),12);
        $c = $c->addInt32($d);
        $b = $b->xorInt32($c)->rotateLeft(12);

        # a = PLUS(a,b); d = ROTATE(XOR(d,a), 8);
        $a = $a->addInt32($b);
        $d = $d->xorInt32($a)->rotateLeft(8);

        # c = PLUS(c,d); b = ROTATE(XOR(b,c), 7);
        $c = $c->addInt32($d);
        $b = $b->xorInt32($c)->rotateLeft(7);

        return array($a, $b, $c, $d);
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core32_ChaCha20_Ctx $ctx
     * @param string $message
     *
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function encryptBytes(
        ParagonIE_Sodium_Core32_ChaCha20_Ctx $ctx,
        $message = ''
    ) {
        $bytes = self::strlen($message);

        /** @var ParagonIE_Sodium_Core32_Int32 $x0 */
        /** @var ParagonIE_Sodium_Core32_Int32 $x1 */
        /** @var ParagonIE_Sodium_Core32_Int32 $x2 */
        /** @var ParagonIE_Sodium_Core32_Int32 $x3 */
        /** @var ParagonIE_Sodium_Core32_Int32 $x4 */
        /** @var ParagonIE_Sodium_Core32_Int32 $x5 */
        /** @var ParagonIE_Sodium_Core32_Int32 $x6 */
        /** @var ParagonIE_Sodium_Core32_Int32 $x7 */
        /** @var ParagonIE_Sodium_Core32_Int32 $x8 */
        /** @var ParagonIE_Sodium_Core32_Int32 $x9 */
        /** @var ParagonIE_Sodium_Core32_Int32 $x10 */
        /** @var ParagonIE_Sodium_Core32_Int32 $x11 */
        /** @var ParagonIE_Sodium_Core32_Int32 $x12 */
        /** @var ParagonIE_Sodium_Core32_Int32 $x13 */
        /** @var ParagonIE_Sodium_Core32_Int32 $x14 */
        /** @var ParagonIE_Sodium_Core32_Int32 $x15 */

        /*
        j0 = ctx->input[0];
        j1 = ctx->input[1];
        j2 = ctx->input[2];
        j3 = ctx->input[3];
        j4 = ctx->input[4];
        j5 = ctx->input[5];
        j6 = ctx->input[6];
        j7 = ctx->input[7];
        j8 = ctx->input[8];
        j9 = ctx->input[9];
        j10 = ctx->input[10];
        j11 = ctx->input[11];
        j12 = ctx->input[12];
        j13 = ctx->input[13];
        j14 = ctx->input[14];
        j15 = ctx->input[15];
        */
        /** @var ParagonIE_Sodium_Core32_Int32 $j0 */
        $j0  = $ctx[0];
        /** @var ParagonIE_Sodium_Core32_Int32 $j1 */
        $j1  = $ctx[1];
        /** @var ParagonIE_Sodium_Core32_Int32 $j2 */
        $j2  = $ctx[2];
        /** @var ParagonIE_Sodium_Core32_Int32 $j3 */
        $j3  = $ctx[3];
        /** @var ParagonIE_Sodium_Core32_Int32 $j4 */
        $j4  = $ctx[4];
        /** @var ParagonIE_Sodium_Core32_Int32 $j5 */
        $j5  = $ctx[5];
        /** @var ParagonIE_Sodium_Core32_Int32 $j6 */
        $j6  = $ctx[6];
        /** @var ParagonIE_Sodium_Core32_Int32 $j7 */
        $j7  = $ctx[7];
        /** @var ParagonIE_Sodium_Core32_Int32 $j8 */
        $j8  = $ctx[8];
        /** @var ParagonIE_Sodium_Core32_Int32 $j9 */
        $j9  = $ctx[9];
        /** @var ParagonIE_Sodium_Core32_Int32 $j10 */
        $j10 = $ctx[10];
        /** @var ParagonIE_Sodium_Core32_Int32 $j11 */
        $j11 = $ctx[11];
        /** @var ParagonIE_Sodium_Core32_Int32 $j12 */
        $j12 = $ctx[12];
        /** @var ParagonIE_Sodium_Core32_Int32 $j13 */
        $j13 = $ctx[13];
        /** @var ParagonIE_Sodium_Core32_Int32 $j14 */
        $j14 = $ctx[14];
        /** @var ParagonIE_Sodium_Core32_Int32 $j15 */
        $j15 = $ctx[15];

        $c = '';
        for (;;) {
            if ($bytes < 64) {
                $message .= str_repeat("\x00", 64 - $bytes);
            }

            $x0 =  clone $j0;
            $x1 =  clone $j1;
            $x2 =  clone $j2;
            $x3 =  clone $j3;
            $x4 =  clone $j4;
            $x5 =  clone $j5;
            $x6 =  clone $j6;
            $x7 =  clone $j7;
            $x8 =  clone $j8;
            $x9 =  clone $j9;
            $x10 = clone $j10;
            $x11 = clone $j11;
            $x12 = clone $j12;
            $x13 = clone $j13;
            $x14 = clone $j14;
            $x15 = clone $j15;

            # for (i = 20; i > 0; i -= 2) {
            for ($i = 20; $i > 0; $i -= 2) {
                # QUARTERROUND( x0,  x4,  x8,  x12)
                list($x0, $x4, $x8, $x12) = self::quarterRound($x0, $x4, $x8, $x12);

                # QUARTERROUND( x1,  x5,  x9,  x13)
                list($x1, $x5, $x9, $x13) = self::quarterRound($x1, $x5, $x9, $x13);

                # QUARTERROUND( x2,  x6,  x10,  x14)
                list($x2, $x6, $x10, $x14) = self::quarterRound($x2, $x6, $x10, $x14);

                # QUARTERROUND( x3,  x7,  x11,  x15)
                list($x3, $x7, $x11, $x15) = self::quarterRound($x3, $x7, $x11, $x15);

                # QUARTERROUND( x0,  x5,  x10,  x15)
                list($x0, $x5, $x10, $x15) = self::quarterRound($x0, $x5, $x10, $x15);

                # QUARTERROUND( x1,  x6,  x11,  x12)
                list($x1, $x6, $x11, $x12) = self::quarterRound($x1, $x6, $x11, $x12);

                # QUARTERROUND( x2,  x7,  x8,  x13)
                list($x2, $x7, $x8, $x13) = self::quarterRound($x2, $x7, $x8, $x13);

                # QUARTERROUND( x3,  x4,  x9,  x14)
                list($x3, $x4, $x9, $x14) = self::quarterRound($x3, $x4, $x9, $x14);
            }
            /*
            x0 = PLUS(x0, j0);
            x1 = PLUS(x1, j1);
            x2 = PLUS(x2, j2);
            x3 = PLUS(x3, j3);
            x4 = PLUS(x4, j4);
            x5 = PLUS(x5, j5);
            x6 = PLUS(x6, j6);
            x7 = PLUS(x7, j7);
            x8 = PLUS(x8, j8);
            x9 = PLUS(x9, j9);
            x10 = PLUS(x10, j10);
            x11 = PLUS(x11, j11);
            x12 = PLUS(x12, j12);
            x13 = PLUS(x13, j13);
            x14 = PLUS(x14, j14);
            x15 = PLUS(x15, j15);
            */
            $x0 = $x0->addInt32($j0);
            $x1 = $x1->addInt32($j1);
            $x2 = $x2->addInt32($j2);
            $x3 = $x3->addInt32($j3);
            $x4 = $x4->addInt32($j4);
            $x5 = $x5->addInt32($j5);
            $x6 = $x6->addInt32($j6);
            $x7 = $x7->addInt32($j7);
            $x8 = $x8->addInt32($j8);
            $x9 = $x9->addInt32($j9);
            $x10 = $x10->addInt32($j10);
            $x11 = $x11->addInt32($j11);
            $x12 = $x12->addInt32($j12);
            $x13 = $x13->addInt32($j13);
            $x14 = $x14->addInt32($j14);
            $x15 = $x15->addInt32($j15);

            /*
            x0 = XOR(x0, LOAD32_LE(m + 0));
            x1 = XOR(x1, LOAD32_LE(m + 4));
            x2 = XOR(x2, LOAD32_LE(m + 8));
            x3 = XOR(x3, LOAD32_LE(m + 12));
            x4 = XOR(x4, LOAD32_LE(m + 16));
            x5 = XOR(x5, LOAD32_LE(m + 20));
            x6 = XOR(x6, LOAD32_LE(m + 24));
            x7 = XOR(x7, LOAD32_LE(m + 28));
            x8 = XOR(x8, LOAD32_LE(m + 32));
            x9 = XOR(x9, LOAD32_LE(m + 36));
            x10 = XOR(x10, LOAD32_LE(m + 40));
            x11 = XOR(x11, LOAD32_LE(m + 44));
            x12 = XOR(x12, LOAD32_LE(m + 48));
            x13 = XOR(x13, LOAD32_LE(m + 52));
            x14 = XOR(x14, LOAD32_LE(m + 56));
            x15 = XOR(x15, LOAD32_LE(m + 60));
            */
            $x0  =  $x0->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message,  0, 4)));
            $x1  =  $x1->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message,  4, 4)));
            $x2  =  $x2->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message,  8, 4)));
            $x3  =  $x3->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message, 12, 4)));
            $x4  =  $x4->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message, 16, 4)));
            $x5  =  $x5->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message, 20, 4)));
            $x6  =  $x6->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message, 24, 4)));
            $x7  =  $x7->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message, 28, 4)));
            $x8  =  $x8->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message, 32, 4)));
            $x9  =  $x9->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message, 36, 4)));
            $x10 = $x10->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message, 40, 4)));
            $x11 = $x11->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message, 44, 4)));
            $x12 = $x12->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message, 48, 4)));
            $x13 = $x13->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message, 52, 4)));
            $x14 = $x14->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message, 56, 4)));
            $x15 = $x15->xorInt32(ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message, 60, 4)));

            /*
                j12 = PLUSONE(j12);
                if (!j12) {
                    j13 = PLUSONE(j13);
                }
             */
            /** @var ParagonIE_Sodium_Core32_Int32 $j12 */
            $j12 = $j12->addInt(1);
            if ($j12->limbs[0] === 0 && $j12->limbs[1] === 0) {
                $j13 = $j13->addInt(1);
            }

            /*
            STORE32_LE(c + 0, x0);
            STORE32_LE(c + 4, x1);
            STORE32_LE(c + 8, x2);
            STORE32_LE(c + 12, x3);
            STORE32_LE(c + 16, x4);
            STORE32_LE(c + 20, x5);
            STORE32_LE(c + 24, x6);
            STORE32_LE(c + 28, x7);
            STORE32_LE(c + 32, x8);
            STORE32_LE(c + 36, x9);
            STORE32_LE(c + 40, x10);
            STORE32_LE(c + 44, x11);
            STORE32_LE(c + 48, x12);
            STORE32_LE(c + 52, x13);
            STORE32_LE(c + 56, x14);
            STORE32_LE(c + 60, x15);
            */

            $block = $x0->toReverseString() .
                $x1->toReverseString() .
                $x2->toReverseString() .
                $x3->toReverseString() .
                $x4->toReverseString() .
                $x5->toReverseString() .
                $x6->toReverseString() .
                $x7->toReverseString() .
                $x8->toReverseString() .
                $x9->toReverseString() .
                $x10->toReverseString() .
                $x11->toReverseString() .
                $x12->toReverseString() .
                $x13->toReverseString() .
                $x14->toReverseString() .
                $x15->toReverseString();

            /* Partial block */
            if ($bytes < 64) {
                $c .= self::substr($block, 0, $bytes);
                break;
            }

            /* Full block */
            $c .= $block;
            $bytes -= 64;
            if ($bytes <= 0) {
                break;
            }
            $message = self::substr($message, 64);
        }
        /* end for(;;) loop */

        $ctx[12] = $j12;
        $ctx[13] = $j13;
        return $c;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param int $len
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function stream($len = 64, $nonce = '', $key = '')
    {
        return self::encryptBytes(
            new ParagonIE_Sodium_Core32_ChaCha20_Ctx($key, $nonce),
            str_repeat("\x00", $len)
        );
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param int $len
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function ietfStream($len, $nonce = '', $key = '')
    {
        return self::encryptBytes(
            new ParagonIE_Sodium_Core32_ChaCha20_IetfCtx($key, $nonce),
            str_repeat("\x00", $len)
        );
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $message
     * @param string $nonce
     * @param string $key
     * @param string $ic
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function ietfStreamXorIc($message, $nonce = '', $key = '', $ic = '')
    {
        return self::encryptBytes(
            new ParagonIE_Sodium_Core32_ChaCha20_IetfCtx($key, $nonce, $ic),
            $message
        );
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $message
     * @param string $nonce
     * @param string $key
     * @param string $ic
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function streamXorIc($message, $nonce = '', $key = '', $ic = '')
    {
        return self::encryptBytes(
            new ParagonIE_Sodium_Core32_ChaCha20_Ctx($key, $nonce, $ic),
            $message
        );
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core32/HSalsa20.php000064400000015530150755146460020064 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Core32_HSalsa20', false)) {
    return;
}

/**
 * Class ParagonIE_Sodium_Core32_HSalsa20
 */
abstract class ParagonIE_Sodium_Core32_HSalsa20 extends ParagonIE_Sodium_Core32_Salsa20
{
    /**
     * Calculate an hsalsa20 hash of a single block
     *
     * HSalsa20 doesn't have a counter and will never be used for more than
     * one block (used to derive a subkey for xsalsa20).
     *
     * @internal You should not use this directly from another application
     *
     * @param string $in
     * @param string $k
     * @param string|null $c
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function hsalsa20($in, $k, $c = null)
    {
        /**
         * @var ParagonIE_Sodium_Core32_Int32 $x0
         * @var ParagonIE_Sodium_Core32_Int32 $x1
         * @var ParagonIE_Sodium_Core32_Int32 $x2
         * @var ParagonIE_Sodium_Core32_Int32 $x3
         * @var ParagonIE_Sodium_Core32_Int32 $x4
         * @var ParagonIE_Sodium_Core32_Int32 $x5
         * @var ParagonIE_Sodium_Core32_Int32 $x6
         * @var ParagonIE_Sodium_Core32_Int32 $x7
         * @var ParagonIE_Sodium_Core32_Int32 $x8
         * @var ParagonIE_Sodium_Core32_Int32 $x9
         * @var ParagonIE_Sodium_Core32_Int32 $x10
         * @var ParagonIE_Sodium_Core32_Int32 $x11
         * @var ParagonIE_Sodium_Core32_Int32 $x12
         * @var ParagonIE_Sodium_Core32_Int32 $x13
         * @var ParagonIE_Sodium_Core32_Int32 $x14
         * @var ParagonIE_Sodium_Core32_Int32 $x15
         * @var ParagonIE_Sodium_Core32_Int32 $j0
         * @var ParagonIE_Sodium_Core32_Int32 $j1
         * @var ParagonIE_Sodium_Core32_Int32 $j2
         * @var ParagonIE_Sodium_Core32_Int32 $j3
         * @var ParagonIE_Sodium_Core32_Int32 $j4
         * @var ParagonIE_Sodium_Core32_Int32 $j5
         * @var ParagonIE_Sodium_Core32_Int32 $j6
         * @var ParagonIE_Sodium_Core32_Int32 $j7
         * @var ParagonIE_Sodium_Core32_Int32 $j8
         * @var ParagonIE_Sodium_Core32_Int32 $j9
         * @var ParagonIE_Sodium_Core32_Int32 $j10
         * @var ParagonIE_Sodium_Core32_Int32 $j11
         * @var ParagonIE_Sodium_Core32_Int32 $j12
         * @var ParagonIE_Sodium_Core32_Int32 $j13
         * @var ParagonIE_Sodium_Core32_Int32 $j14
         * @var ParagonIE_Sodium_Core32_Int32 $j15
         */
        if (self::strlen($k) < 32) {
            throw new RangeException('Key must be 32 bytes long');
        }
        if ($c === null) {
            $x0  = new ParagonIE_Sodium_Core32_Int32(array(0x6170, 0x7865));
            $x5  = new ParagonIE_Sodium_Core32_Int32(array(0x3320, 0x646e));
            $x10 = new ParagonIE_Sodium_Core32_Int32(array(0x7962, 0x2d32));
            $x15 = new ParagonIE_Sodium_Core32_Int32(array(0x6b20, 0x6574));
        } else {
            $x0  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($c, 0, 4));
            $x5  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($c, 4, 4));
            $x10 = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($c, 8, 4));
            $x15 = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($c, 12, 4));
        }
        $x1  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 0, 4));
        $x2  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 4, 4));
        $x3  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 8, 4));
        $x4  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 12, 4));
        $x6  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($in, 0, 4));
        $x7  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($in, 4, 4));
        $x8  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($in, 8, 4));
        $x9  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($in, 12, 4));
        $x11 = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 16, 4));
        $x12 = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 20, 4));
        $x13 = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 24, 4));
        $x14 = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 28, 4));

        for ($i = self::ROUNDS; $i > 0; $i -= 2) {
            $x4  = $x4->xorInt32($x0->addInt32($x12)->rotateLeft(7));
            $x8  = $x8->xorInt32($x4->addInt32($x0)->rotateLeft(9));
            $x12 = $x12->xorInt32($x8->addInt32($x4)->rotateLeft(13));
            $x0  = $x0->xorInt32($x12->addInt32($x8)->rotateLeft(18));

            $x9  = $x9->xorInt32($x5->addInt32($x1)->rotateLeft(7));
            $x13 = $x13->xorInt32($x9->addInt32($x5)->rotateLeft(9));
            $x1  = $x1->xorInt32($x13->addInt32($x9)->rotateLeft(13));
            $x5  = $x5->xorInt32($x1->addInt32($x13)->rotateLeft(18));

            $x14 = $x14->xorInt32($x10->addInt32($x6)->rotateLeft(7));
            $x2  = $x2->xorInt32($x14->addInt32($x10)->rotateLeft(9));
            $x6  = $x6->xorInt32($x2->addInt32($x14)->rotateLeft(13));
            $x10 = $x10->xorInt32($x6->addInt32($x2)->rotateLeft(18));

            $x3  = $x3->xorInt32($x15->addInt32($x11)->rotateLeft(7));
            $x7  = $x7->xorInt32($x3->addInt32($x15)->rotateLeft(9));
            $x11 = $x11->xorInt32($x7->addInt32($x3)->rotateLeft(13));
            $x15 = $x15->xorInt32($x11->addInt32($x7)->rotateLeft(18));

            $x1  = $x1->xorInt32($x0->addInt32($x3)->rotateLeft(7));
            $x2  = $x2->xorInt32($x1->addInt32($x0)->rotateLeft(9));
            $x3  = $x3->xorInt32($x2->addInt32($x1)->rotateLeft(13));
            $x0  = $x0->xorInt32($x3->addInt32($x2)->rotateLeft(18));

            $x6  = $x6->xorInt32($x5->addInt32($x4)->rotateLeft(7));
            $x7  = $x7->xorInt32($x6->addInt32($x5)->rotateLeft(9));
            $x4  = $x4->xorInt32($x7->addInt32($x6)->rotateLeft(13));
            $x5  = $x5->xorInt32($x4->addInt32($x7)->rotateLeft(18));

            $x11 = $x11->xorInt32($x10->addInt32($x9)->rotateLeft(7));
            $x8  = $x8->xorInt32($x11->addInt32($x10)->rotateLeft(9));
            $x9  = $x9->xorInt32($x8->addInt32($x11)->rotateLeft(13));
            $x10 = $x10->xorInt32($x9->addInt32($x8)->rotateLeft(18));

            $x12 = $x12->xorInt32($x15->addInt32($x14)->rotateLeft(7));
            $x13 = $x13->xorInt32($x12->addInt32($x15)->rotateLeft(9));
            $x14 = $x14->xorInt32($x13->addInt32($x12)->rotateLeft(13));
            $x15 = $x15->xorInt32($x14->addInt32($x13)->rotateLeft(18));
        }

        return $x0->toReverseString() .
            $x5->toReverseString() .
            $x10->toReverseString() .
            $x15->toReverseString() .
            $x6->toReverseString() .
            $x7->toReverseString() .
            $x8->toReverseString() .
            $x9->toReverseString();
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core32/Poly1305/State.php000064400000037230150755146460021064 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Core32_Poly1305_State', false)) {
    return;
}

/**
 * Class ParagonIE_Sodium_Core32_Poly1305_State
 */
class ParagonIE_Sodium_Core32_Poly1305_State extends ParagonIE_Sodium_Core32_Util
{
    /**
     * @var array<int, int>
     */
    protected $buffer = array();

    /**
     * @var bool
     */
    protected $final = false;

    /**
     * @var array<int, ParagonIE_Sodium_Core32_Int32>
     */
    public $h;

    /**
     * @var int
     */
    protected $leftover = 0;

    /**
     * @var array<int, ParagonIE_Sodium_Core32_Int32>
     */
    public $r;

    /**
     * @var array<int, ParagonIE_Sodium_Core32_Int64>
     */
    public $pad;

    /**
     * ParagonIE_Sodium_Core32_Poly1305_State constructor.
     *
     * @internal You should not use this directly from another application
     *
     * @param string $key
     * @throws InvalidArgumentException
     * @throws SodiumException
     * @throws TypeError
     */
    public function __construct($key = '')
    {
        if (self::strlen($key) < 32) {
            throw new InvalidArgumentException(
                'Poly1305 requires a 32-byte key'
            );
        }
        /* r &= 0xffffffc0ffffffc0ffffffc0fffffff */
        $this->r = array(
            // st->r[0] = ...
            ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 0, 4))
                ->setUnsignedInt(true)
                ->mask(0x3ffffff),
            // st->r[1] = ...
            ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 3, 4))
                ->setUnsignedInt(true)
                ->shiftRight(2)
                ->mask(0x3ffff03),
            // st->r[2] = ...
            ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 6, 4))
                ->setUnsignedInt(true)
                ->shiftRight(4)
                ->mask(0x3ffc0ff),
            // st->r[3] = ...
            ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 9, 4))
                ->setUnsignedInt(true)
                ->shiftRight(6)
                ->mask(0x3f03fff),
            // st->r[4] = ...
            ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 12, 4))
                ->setUnsignedInt(true)
                ->shiftRight(8)
                ->mask(0x00fffff)
        );

        /* h = 0 */
        $this->h = array(
            new ParagonIE_Sodium_Core32_Int32(array(0, 0), true),
            new ParagonIE_Sodium_Core32_Int32(array(0, 0), true),
            new ParagonIE_Sodium_Core32_Int32(array(0, 0), true),
            new ParagonIE_Sodium_Core32_Int32(array(0, 0), true),
            new ParagonIE_Sodium_Core32_Int32(array(0, 0), true)
        );

        /* save pad for later */
        $this->pad = array(
            ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 16, 4))
                ->setUnsignedInt(true)->toInt64(),
            ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 20, 4))
                ->setUnsignedInt(true)->toInt64(),
            ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 24, 4))
                ->setUnsignedInt(true)->toInt64(),
            ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 28, 4))
                ->setUnsignedInt(true)->toInt64(),
        );

        $this->leftover = 0;
        $this->final = false;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $message
     * @return self
     * @throws SodiumException
     * @throws TypeError
     */
    public function update($message = '')
    {
        $bytes = self::strlen($message);

        /* handle leftover */
        if ($this->leftover) {
            /** @var int $want */
            $want = ParagonIE_Sodium_Core32_Poly1305::BLOCK_SIZE - $this->leftover;
            if ($want > $bytes) {
                $want = $bytes;
            }
            for ($i = 0; $i < $want; ++$i) {
                $mi = self::chrToInt($message[$i]);
                $this->buffer[$this->leftover + $i] = $mi;
            }
            // We snip off the leftmost bytes.
            $message = self::substr($message, $want);
            $bytes = self::strlen($message);
            $this->leftover += $want;
            if ($this->leftover < ParagonIE_Sodium_Core32_Poly1305::BLOCK_SIZE) {
                // We still don't have enough to run $this->blocks()
                return $this;
            }

            $this->blocks(
                self::intArrayToString($this->buffer),
                ParagonIE_Sodium_Core32_Poly1305::BLOCK_SIZE
            );
            $this->leftover = 0;
        }

        /* process full blocks */
        if ($bytes >= ParagonIE_Sodium_Core32_Poly1305::BLOCK_SIZE) {
            /** @var int $want */
            $want = $bytes & ~(ParagonIE_Sodium_Core32_Poly1305::BLOCK_SIZE - 1);
            if ($want >= ParagonIE_Sodium_Core32_Poly1305::BLOCK_SIZE) {
                /** @var string $block */
                $block = self::substr($message, 0, $want);
                if (self::strlen($block) >= ParagonIE_Sodium_Core32_Poly1305::BLOCK_SIZE) {
                    $this->blocks($block, $want);
                    $message = self::substr($message, $want);
                    $bytes = self::strlen($message);
                }
            }
        }

        /* store leftover */
        if ($bytes) {
            for ($i = 0; $i < $bytes; ++$i) {
                $mi = self::chrToInt($message[$i]);
                $this->buffer[$this->leftover + $i] = $mi;
            }
            $this->leftover = (int) $this->leftover + $bytes;
        }
        return $this;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $message
     * @param int $bytes
     * @return self
     * @throws SodiumException
     * @throws TypeError
     */
    public function blocks($message, $bytes)
    {
        if (self::strlen($message) < 16) {
            $message = str_pad($message, 16, "\x00", STR_PAD_RIGHT);
        }
        $hibit = ParagonIE_Sodium_Core32_Int32::fromInt((int) ($this->final ? 0 : 1 << 24)); /* 1 << 128 */
        $hibit->setUnsignedInt(true);
        $zero = new ParagonIE_Sodium_Core32_Int64(array(0, 0, 0, 0), true);
        /**
         * @var ParagonIE_Sodium_Core32_Int64 $d0
         * @var ParagonIE_Sodium_Core32_Int64 $d1
         * @var ParagonIE_Sodium_Core32_Int64 $d2
         * @var ParagonIE_Sodium_Core32_Int64 $d3
         * @var ParagonIE_Sodium_Core32_Int64 $d4
         * @var ParagonIE_Sodium_Core32_Int64 $r0
         * @var ParagonIE_Sodium_Core32_Int64 $r1
         * @var ParagonIE_Sodium_Core32_Int64 $r2
         * @var ParagonIE_Sodium_Core32_Int64 $r3
         * @var ParagonIE_Sodium_Core32_Int64 $r4
         *
         * @var ParagonIE_Sodium_Core32_Int32 $h0
         * @var ParagonIE_Sodium_Core32_Int32 $h1
         * @var ParagonIE_Sodium_Core32_Int32 $h2
         * @var ParagonIE_Sodium_Core32_Int32 $h3
         * @var ParagonIE_Sodium_Core32_Int32 $h4
         */
        $r0 = $this->r[0]->toInt64();
        $r1 = $this->r[1]->toInt64();
        $r2 = $this->r[2]->toInt64();
        $r3 = $this->r[3]->toInt64();
        $r4 = $this->r[4]->toInt64();

        $s1 = $r1->toInt64()->mulInt(5, 3);
        $s2 = $r2->toInt64()->mulInt(5, 3);
        $s3 = $r3->toInt64()->mulInt(5, 3);
        $s4 = $r4->toInt64()->mulInt(5, 3);

        $h0 = $this->h[0];
        $h1 = $this->h[1];
        $h2 = $this->h[2];
        $h3 = $this->h[3];
        $h4 = $this->h[4];

        while ($bytes >= ParagonIE_Sodium_Core32_Poly1305::BLOCK_SIZE) {
            /* h += m[i] */
            $h0 = $h0->addInt32(
                ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message, 0, 4))
                    ->mask(0x3ffffff)
            )->toInt64();
            $h1 = $h1->addInt32(
                ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message, 3, 4))
                    ->shiftRight(2)
                    ->mask(0x3ffffff)
            )->toInt64();
            $h2 = $h2->addInt32(
                ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message, 6, 4))
                    ->shiftRight(4)
                    ->mask(0x3ffffff)
            )->toInt64();
            $h3 = $h3->addInt32(
                ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message, 9, 4))
                    ->shiftRight(6)
                    ->mask(0x3ffffff)
            )->toInt64();
            $h4 = $h4->addInt32(
                ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($message, 12, 4))
                    ->shiftRight(8)
                    ->orInt32($hibit)
            )->toInt64();

            /* h *= r */
            $d0 = $zero
                ->addInt64($h0->mulInt64($r0, 27))
                ->addInt64($s4->mulInt64($h1, 27))
                ->addInt64($s3->mulInt64($h2, 27))
                ->addInt64($s2->mulInt64($h3, 27))
                ->addInt64($s1->mulInt64($h4, 27));

            $d1 = $zero
                ->addInt64($h0->mulInt64($r1, 27))
                ->addInt64($h1->mulInt64($r0, 27))
                ->addInt64($s4->mulInt64($h2, 27))
                ->addInt64($s3->mulInt64($h3, 27))
                ->addInt64($s2->mulInt64($h4, 27));

            $d2 = $zero
                ->addInt64($h0->mulInt64($r2, 27))
                ->addInt64($h1->mulInt64($r1, 27))
                ->addInt64($h2->mulInt64($r0, 27))
                ->addInt64($s4->mulInt64($h3, 27))
                ->addInt64($s3->mulInt64($h4, 27));

            $d3 = $zero
                ->addInt64($h0->mulInt64($r3, 27))
                ->addInt64($h1->mulInt64($r2, 27))
                ->addInt64($h2->mulInt64($r1, 27))
                ->addInt64($h3->mulInt64($r0, 27))
                ->addInt64($s4->mulInt64($h4, 27));

            $d4 = $zero
                ->addInt64($h0->mulInt64($r4, 27))
                ->addInt64($h1->mulInt64($r3, 27))
                ->addInt64($h2->mulInt64($r2, 27))
                ->addInt64($h3->mulInt64($r1, 27))
                ->addInt64($h4->mulInt64($r0, 27));

            /* (partial) h %= p */
            $c = $d0->shiftRight(26);
            $h0 = $d0->toInt32()->mask(0x3ffffff);
            $d1 = $d1->addInt64($c);

            $c = $d1->shiftRight(26);
            $h1 = $d1->toInt32()->mask(0x3ffffff);
            $d2 = $d2->addInt64($c);

            $c = $d2->shiftRight(26);
            $h2 = $d2->toInt32()->mask(0x3ffffff);
            $d3 = $d3->addInt64($c);

            $c = $d3->shiftRight(26);
            $h3 = $d3->toInt32()->mask(0x3ffffff);
            $d4 = $d4->addInt64($c);

            $c = $d4->shiftRight(26);
            $h4 = $d4->toInt32()->mask(0x3ffffff);
            $h0 = $h0->addInt32($c->toInt32()->mulInt(5, 3));

            $c = $h0->shiftRight(26);
            $h0 = $h0->mask(0x3ffffff);
            $h1 = $h1->addInt32($c);

            // Chop off the left 32 bytes.
            $message = self::substr(
                $message,
                ParagonIE_Sodium_Core32_Poly1305::BLOCK_SIZE
            );
            $bytes -= ParagonIE_Sodium_Core32_Poly1305::BLOCK_SIZE;
        }

        /** @var array<int, ParagonIE_Sodium_Core32_Int32> $h */
        $this->h = array($h0, $h1, $h2, $h3, $h4);
        return $this;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public function finish()
    {
        /* process the remaining block */
        if ($this->leftover) {
            $i = $this->leftover;
            $this->buffer[$i++] = 1;
            for (; $i < ParagonIE_Sodium_Core32_Poly1305::BLOCK_SIZE; ++$i) {
                $this->buffer[$i] = 0;
            }
            $this->final = true;
            $this->blocks(
                self::substr(
                    self::intArrayToString($this->buffer),
                    0,
                    ParagonIE_Sodium_Core32_Poly1305::BLOCK_SIZE
                ),
                $b = ParagonIE_Sodium_Core32_Poly1305::BLOCK_SIZE
            );
        }

        /**
         * @var ParagonIE_Sodium_Core32_Int32 $f
         * @var ParagonIE_Sodium_Core32_Int32 $g0
         * @var ParagonIE_Sodium_Core32_Int32 $g1
         * @var ParagonIE_Sodium_Core32_Int32 $g2
         * @var ParagonIE_Sodium_Core32_Int32 $g3
         * @var ParagonIE_Sodium_Core32_Int32 $g4
         * @var ParagonIE_Sodium_Core32_Int32 $h0
         * @var ParagonIE_Sodium_Core32_Int32 $h1
         * @var ParagonIE_Sodium_Core32_Int32 $h2
         * @var ParagonIE_Sodium_Core32_Int32 $h3
         * @var ParagonIE_Sodium_Core32_Int32 $h4
         */
        $h0 = $this->h[0];
        $h1 = $this->h[1];
        $h2 = $this->h[2];
        $h3 = $this->h[3];
        $h4 = $this->h[4];

        $c = $h1->shiftRight(26);           # $c = $h1 >> 26;
        $h1 = $h1->mask(0x3ffffff);         # $h1 &= 0x3ffffff;

        $h2 = $h2->addInt32($c);            # $h2 += $c;
        $c = $h2->shiftRight(26);           # $c = $h2 >> 26;
        $h2 = $h2->mask(0x3ffffff);         # $h2 &= 0x3ffffff;

        $h3 = $h3->addInt32($c);            # $h3 += $c;
        $c = $h3->shiftRight(26);           # $c = $h3 >> 26;
        $h3 = $h3->mask(0x3ffffff);         # $h3 &= 0x3ffffff;

        $h4 = $h4->addInt32($c);            # $h4 += $c;
        $c = $h4->shiftRight(26);           # $c = $h4 >> 26;
        $h4 = $h4->mask(0x3ffffff);         # $h4 &= 0x3ffffff;

        $h0 = $h0->addInt32($c->mulInt(5, 3)); # $h0 += self::mul($c, 5);
        $c = $h0->shiftRight(26);           # $c = $h0 >> 26;
        $h0 = $h0->mask(0x3ffffff);         # $h0 &= 0x3ffffff;
        $h1 = $h1->addInt32($c);            # $h1 += $c;

        /* compute h + -p */
        $g0 = $h0->addInt(5);
        $c  = $g0->shiftRight(26);
        $g0 = $g0->mask(0x3ffffff);
        $g1 = $h1->addInt32($c);
        $c  = $g1->shiftRight(26);
        $g1 = $g1->mask(0x3ffffff);
        $g2 = $h2->addInt32($c);
        $c  = $g2->shiftRight(26);
        $g2 = $g2->mask(0x3ffffff);
        $g3 = $h3->addInt32($c);
        $c  = $g3->shiftRight(26);
        $g3 = $g3->mask(0x3ffffff);
        $g4 = $h4->addInt32($c)->subInt(1 << 26);

        # $mask = ($g4 >> 31) - 1;
        /* select h if h < p, or h + -p if h >= p */
        $mask = (int) (($g4->toInt() >> 31) + 1);

        $g0 = $g0->mask($mask);
        $g1 = $g1->mask($mask);
        $g2 = $g2->mask($mask);
        $g3 = $g3->mask($mask);
        $g4 = $g4->mask($mask);

        /** @var int $mask */
        $mask = ~$mask;

        $h0 = $h0->mask($mask)->orInt32($g0);
        $h1 = $h1->mask($mask)->orInt32($g1);
        $h2 = $h2->mask($mask)->orInt32($g2);
        $h3 = $h3->mask($mask)->orInt32($g3);
        $h4 = $h4->mask($mask)->orInt32($g4);

        /* h = h % (2^128) */
        $h0 = $h0->orInt32($h1->shiftLeft(26));
        $h1 = $h1->shiftRight(6)->orInt32($h2->shiftLeft(20));
        $h2 = $h2->shiftRight(12)->orInt32($h3->shiftLeft(14));
        $h3 = $h3->shiftRight(18)->orInt32($h4->shiftLeft(8));

        /* mac = (h + pad) % (2^128) */
        $f = $h0->toInt64()->addInt64($this->pad[0]);
        $h0 = $f->toInt32();
        $f = $h1->toInt64()->addInt64($this->pad[1])->addInt($h0->overflow);
        $h1 = $f->toInt32();
        $f = $h2->toInt64()->addInt64($this->pad[2])->addInt($h1->overflow);
        $h2 = $f->toInt32();
        $f = $h3->toInt64()->addInt64($this->pad[3])->addInt($h2->overflow);
        $h3 = $f->toInt32();

        return $h0->toReverseString() .
            $h1->toReverseString() .
            $h2->toReverseString() .
            $h3->toReverseString();
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core32/Curve25519/H.php000064400000324470150755146460020436 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Core32_Curve25519_H', false)) {
    return;
}

/**
 * Class ParagonIE_Sodium_Core32_Curve25519_H
 *
 * This just contains the constants in the ref10/base.h file
 */
class ParagonIE_Sodium_Core32_Curve25519_H extends ParagonIE_Sodium_Core32_Util
{
    /**
     * See: libsodium's crypto_core/curve25519/ref10/base.h
     *
     * @var array<int, array<int, array<int, array<int, int>>>> Basically, int[32][8][3][10]
     */
    protected static $base = array(
        array(
            array(
                array(25967493, -14356035, 29566456, 3660896, -12694345, 4014787, 27544626, -11754271, -6079156, 2047605),
                array(-12545711, 934262, -2722910, 3049990, -727428, 9406986, 12720692, 5043384, 19500929, -15469378),
                array(-8738181, 4489570, 9688441, -14785194, 10184609, -12363380, 29287919, 11864899, -24514362, -4438546),
            ),
            array(
                array(-12815894, -12976347, -21581243, 11784320, -25355658, -2750717, -11717903, -3814571, -358445, -10211303),
                array(-21703237, 6903825, 27185491, 6451973, -29577724, -9554005, -15616551, 11189268, -26829678, -5319081),
                array(26966642, 11152617, 32442495, 15396054, 14353839, -12752335, -3128826, -9541118, -15472047, -4166697),
            ),
            array(
                array(15636291, -9688557, 24204773, -7912398, 616977, -16685262, 27787600, -14772189, 28944400, -1550024),
                array(16568933, 4717097, -11556148, -1102322, 15682896, -11807043, 16354577, -11775962, 7689662, 11199574),
                array(30464156, -5976125, -11779434, -15670865, 23220365, 15915852, 7512774, 10017326, -17749093, -9920357),
            ),
            array(
                array(-17036878, 13921892, 10945806, -6033431, 27105052, -16084379, -28926210, 15006023, 3284568, -6276540),
                array(23599295, -8306047, -11193664, -7687416, 13236774, 10506355, 7464579, 9656445, 13059162, 10374397),
                array(7798556, 16710257, 3033922, 2874086, 28997861, 2835604, 32406664, -3839045, -641708, -101325),
            ),
            array(
                array(10861363, 11473154, 27284546, 1981175, -30064349, 12577861, 32867885, 14515107, -15438304, 10819380),
                array(4708026, 6336745, 20377586, 9066809, -11272109, 6594696, -25653668, 12483688, -12668491, 5581306),
                array(19563160, 16186464, -29386857, 4097519, 10237984, -4348115, 28542350, 13850243, -23678021, -15815942),
            ),
            array(
                array(-15371964, -12862754, 32573250, 4720197, -26436522, 5875511, -19188627, -15224819, -9818940, -12085777),
                array(-8549212, 109983, 15149363, 2178705, 22900618, 4543417, 3044240, -15689887, 1762328, 14866737),
                array(-18199695, -15951423, -10473290, 1707278, -17185920, 3916101, -28236412, 3959421, 27914454, 4383652),
            ),
            array(
                array(5153746, 9909285, 1723747, -2777874, 30523605, 5516873, 19480852, 5230134, -23952439, -15175766),
                array(-30269007, -3463509, 7665486, 10083793, 28475525, 1649722, 20654025, 16520125, 30598449, 7715701),
                array(28881845, 14381568, 9657904, 3680757, -20181635, 7843316, -31400660, 1370708, 29794553, -1409300),
            ),
            array(
                array(14499471, -2729599, -33191113, -4254652, 28494862, 14271267, 30290735, 10876454, -33154098, 2381726),
                array(-7195431, -2655363, -14730155, 462251, -27724326, 3941372, -6236617, 3696005, -32300832, 15351955),
                array(27431194, 8222322, 16448760, -3907995, -18707002, 11938355, -32961401, -2970515, 29551813, 10109425),
            ),
        ),
        array(
            array(
                array(-13657040, -13155431, -31283750, 11777098, 21447386, 6519384, -2378284, -1627556, 10092783, -4764171),
                array(27939166, 14210322, 4677035, 16277044, -22964462, -12398139, -32508754, 12005538, -17810127, 12803510),
                array(17228999, -15661624, -1233527, 300140, -1224870, -11714777, 30364213, -9038194, 18016357, 4397660),
            ),
            array(
                array(-10958843, -7690207, 4776341, -14954238, 27850028, -15602212, -26619106, 14544525, -17477504, 982639),
                array(29253598, 15796703, -2863982, -9908884, 10057023, 3163536, 7332899, -4120128, -21047696, 9934963),
                array(5793303, 16271923, -24131614, -10116404, 29188560, 1206517, -14747930, 4559895, -30123922, -10897950),
            ),
            array(
                array(-27643952, -11493006, 16282657, -11036493, 28414021, -15012264, 24191034, 4541697, -13338309, 5500568),
                array(12650548, -1497113, 9052871, 11355358, -17680037, -8400164, -17430592, 12264343, 10874051, 13524335),
                array(25556948, -3045990, 714651, 2510400, 23394682, -10415330, 33119038, 5080568, -22528059, 5376628),
            ),
            array(
                array(-26088264, -4011052, -17013699, -3537628, -6726793, 1920897, -22321305, -9447443, 4535768, 1569007),
                array(-2255422, 14606630, -21692440, -8039818, 28430649, 8775819, -30494562, 3044290, 31848280, 12543772),
                array(-22028579, 2943893, -31857513, 6777306, 13784462, -4292203, -27377195, -2062731, 7718482, 14474653),
            ),
            array(
                array(2385315, 2454213, -22631320, 46603, -4437935, -15680415, 656965, -7236665, 24316168, -5253567),
                array(13741529, 10911568, -33233417, -8603737, -20177830, -1033297, 33040651, -13424532, -20729456, 8321686),
                array(21060490, -2212744, 15712757, -4336099, 1639040, 10656336, 23845965, -11874838, -9984458, 608372),
            ),
            array(
                array(-13672732, -15087586, -10889693, -7557059, -6036909, 11305547, 1123968, -6780577, 27229399, 23887),
                array(-23244140, -294205, -11744728, 14712571, -29465699, -2029617, 12797024, -6440308, -1633405, 16678954),
                array(-29500620, 4770662, -16054387, 14001338, 7830047, 9564805, -1508144, -4795045, -17169265, 4904953),
            ),
            array(
                array(24059557, 14617003, 19037157, -15039908, 19766093, -14906429, 5169211, 16191880, 2128236, -4326833),
                array(-16981152, 4124966, -8540610, -10653797, 30336522, -14105247, -29806336, 916033, -6882542, -2986532),
                array(-22630907, 12419372, -7134229, -7473371, -16478904, 16739175, 285431, 2763829, 15736322, 4143876),
            ),
            array(
                array(2379352, 11839345, -4110402, -5988665, 11274298, 794957, 212801, -14594663, 23527084, -16458268),
                array(33431127, -11130478, -17838966, -15626900, 8909499, 8376530, -32625340, 4087881, -15188911, -14416214),
                array(1767683, 7197987, -13205226, -2022635, -13091350, 448826, 5799055, 4357868, -4774191, -16323038),
            ),
        ),
        array(
            array(
                array(6721966, 13833823, -23523388, -1551314, 26354293, -11863321, 23365147, -3949732, 7390890, 2759800),
                array(4409041, 2052381, 23373853, 10530217, 7676779, -12885954, 21302353, -4264057, 1244380, -12919645),
                array(-4421239, 7169619, 4982368, -2957590, 30256825, -2777540, 14086413, 9208236, 15886429, 16489664),
            ),
            array(
                array(1996075, 10375649, 14346367, 13311202, -6874135, -16438411, -13693198, 398369, -30606455, -712933),
                array(-25307465, 9795880, -2777414, 14878809, -33531835, 14780363, 13348553, 12076947, -30836462, 5113182),
                array(-17770784, 11797796, 31950843, 13929123, -25888302, 12288344, -30341101, -7336386, 13847711, 5387222),
            ),
            array(
                array(-18582163, -3416217, 17824843, -2340966, 22744343, -10442611, 8763061, 3617786, -19600662, 10370991),
                array(20246567, -14369378, 22358229, -543712, 18507283, -10413996, 14554437, -8746092, 32232924, 16763880),
                array(9648505, 10094563, 26416693, 14745928, -30374318, -6472621, 11094161, 15689506, 3140038, -16510092),
            ),
            array(
                array(-16160072, 5472695, 31895588, 4744994, 8823515, 10365685, -27224800, 9448613, -28774454, 366295),
                array(19153450, 11523972, -11096490, -6503142, -24647631, 5420647, 28344573, 8041113, 719605, 11671788),
                array(8678025, 2694440, -6808014, 2517372, 4964326, 11152271, -15432916, -15266516, 27000813, -10195553),
            ),
            array(
                array(-15157904, 7134312, 8639287, -2814877, -7235688, 10421742, 564065, 5336097, 6750977, -14521026),
                array(11836410, -3979488, 26297894, 16080799, 23455045, 15735944, 1695823, -8819122, 8169720, 16220347),
                array(-18115838, 8653647, 17578566, -6092619, -8025777, -16012763, -11144307, -2627664, -5990708, -14166033),
            ),
            array(
                array(-23308498, -10968312, 15213228, -10081214, -30853605, -11050004, 27884329, 2847284, 2655861, 1738395),
                array(-27537433, -14253021, -25336301, -8002780, -9370762, 8129821, 21651608, -3239336, -19087449, -11005278),
                array(1533110, 3437855, 23735889, 459276, 29970501, 11335377, 26030092, 5821408, 10478196, 8544890),
            ),
            array(
                array(32173121, -16129311, 24896207, 3921497, 22579056, -3410854, 19270449, 12217473, 17789017, -3395995),
                array(-30552961, -2228401, -15578829, -10147201, 13243889, 517024, 15479401, -3853233, 30460520, 1052596),
                array(-11614875, 13323618, 32618793, 8175907, -15230173, 12596687, 27491595, -4612359, 3179268, -9478891),
            ),
            array(
                array(31947069, -14366651, -4640583, -15339921, -15125977, -6039709, -14756777, -16411740, 19072640, -9511060),
                array(11685058, 11822410, 3158003, -13952594, 33402194, -4165066, 5977896, -5215017, 473099, 5040608),
                array(-20290863, 8198642, -27410132, 11602123, 1290375, -2799760, 28326862, 1721092, -19558642, -3131606),
            ),
        ),
        array(
            array(
                array(7881532, 10687937, 7578723, 7738378, -18951012, -2553952, 21820786, 8076149, -27868496, 11538389),
                array(-19935666, 3899861, 18283497, -6801568, -15728660, -11249211, 8754525, 7446702, -5676054, 5797016),
                array(-11295600, -3793569, -15782110, -7964573, 12708869, -8456199, 2014099, -9050574, -2369172, -5877341),
            ),
            array(
                array(-22472376, -11568741, -27682020, 1146375, 18956691, 16640559, 1192730, -3714199, 15123619, 10811505),
                array(14352098, -3419715, -18942044, 10822655, 32750596, 4699007, -70363, 15776356, -28886779, -11974553),
                array(-28241164, -8072475, -4978962, -5315317, 29416931, 1847569, -20654173, -16484855, 4714547, -9600655),
            ),
            array(
                array(15200332, 8368572, 19679101, 15970074, -31872674, 1959451, 24611599, -4543832, -11745876, 12340220),
                array(12876937, -10480056, 33134381, 6590940, -6307776, 14872440, 9613953, 8241152, 15370987, 9608631),
                array(-4143277, -12014408, 8446281, -391603, 4407738, 13629032, -7724868, 15866074, -28210621, -8814099),
            ),
            array(
                array(26660628, -15677655, 8393734, 358047, -7401291, 992988, -23904233, 858697, 20571223, 8420556),
                array(14620715, 13067227, -15447274, 8264467, 14106269, 15080814, 33531827, 12516406, -21574435, -12476749),
                array(236881, 10476226, 57258, -14677024, 6472998, 2466984, 17258519, 7256740, 8791136, 15069930),
            ),
            array(
                array(1276410, -9371918, 22949635, -16322807, -23493039, -5702186, 14711875, 4874229, -30663140, -2331391),
                array(5855666, 4990204, -13711848, 7294284, -7804282, 1924647, -1423175, -7912378, -33069337, 9234253),
                array(20590503, -9018988, 31529744, -7352666, -2706834, 10650548, 31559055, -11609587, 18979186, 13396066),
            ),
            array(
                array(24474287, 4968103, 22267082, 4407354, 24063882, -8325180, -18816887, 13594782, 33514650, 7021958),
                array(-11566906, -6565505, -21365085, 15928892, -26158305, 4315421, -25948728, -3916677, -21480480, 12868082),
                array(-28635013, 13504661, 19988037, -2132761, 21078225, 6443208, -21446107, 2244500, -12455797, -8089383),
            ),
            array(
                array(-30595528, 13793479, -5852820, 319136, -25723172, -6263899, 33086546, 8957937, -15233648, 5540521),
                array(-11630176, -11503902, -8119500, -7643073, 2620056, 1022908, -23710744, -1568984, -16128528, -14962807),
                array(23152971, 775386, 27395463, 14006635, -9701118, 4649512, 1689819, 892185, -11513277, -15205948),
            ),
            array(
                array(9770129, 9586738, 26496094, 4324120, 1556511, -3550024, 27453819, 4763127, -19179614, 5867134),
                array(-32765025, 1927590, 31726409, -4753295, 23962434, -16019500, 27846559, 5931263, -29749703, -16108455),
                array(27461885, -2977536, 22380810, 1815854, -23033753, -3031938, 7283490, -15148073, -19526700, 7734629),
            ),
        ),
        array(
            array(
                array(-8010264, -9590817, -11120403, 6196038, 29344158, -13430885, 7585295, -3176626, 18549497, 15302069),
                array(-32658337, -6171222, -7672793, -11051681, 6258878, 13504381, 10458790, -6418461, -8872242, 8424746),
                array(24687205, 8613276, -30667046, -3233545, 1863892, -1830544, 19206234, 7134917, -11284482, -828919),
            ),
            array(
                array(11334899, -9218022, 8025293, 12707519, 17523892, -10476071, 10243738, -14685461, -5066034, 16498837),
                array(8911542, 6887158, -9584260, -6958590, 11145641, -9543680, 17303925, -14124238, 6536641, 10543906),
                array(-28946384, 15479763, -17466835, 568876, -1497683, 11223454, -2669190, -16625574, -27235709, 8876771),
            ),
            array(
                array(-25742899, -12566864, -15649966, -846607, -33026686, -796288, -33481822, 15824474, -604426, -9039817),
                array(10330056, 70051, 7957388, -9002667, 9764902, 15609756, 27698697, -4890037, 1657394, 3084098),
                array(10477963, -7470260, 12119566, -13250805, 29016247, -5365589, 31280319, 14396151, -30233575, 15272409),
            ),
            array(
                array(-12288309, 3169463, 28813183, 16658753, 25116432, -5630466, -25173957, -12636138, -25014757, 1950504),
                array(-26180358, 9489187, 11053416, -14746161, -31053720, 5825630, -8384306, -8767532, 15341279, 8373727),
                array(28685821, 7759505, -14378516, -12002860, -31971820, 4079242, 298136, -10232602, -2878207, 15190420),
            ),
            array(
                array(-32932876, 13806336, -14337485, -15794431, -24004620, 10940928, 8669718, 2742393, -26033313, -6875003),
                array(-1580388, -11729417, -25979658, -11445023, -17411874, -10912854, 9291594, -16247779, -12154742, 6048605),
                array(-30305315, 14843444, 1539301, 11864366, 20201677, 1900163, 13934231, 5128323, 11213262, 9168384),
            ),
            array(
                array(-26280513, 11007847, 19408960, -940758, -18592965, -4328580, -5088060, -11105150, 20470157, -16398701),
                array(-23136053, 9282192, 14855179, -15390078, -7362815, -14408560, -22783952, 14461608, 14042978, 5230683),
                array(29969567, -2741594, -16711867, -8552442, 9175486, -2468974, 21556951, 3506042, -5933891, -12449708),
            ),
            array(
                array(-3144746, 8744661, 19704003, 4581278, -20430686, 6830683, -21284170, 8971513, -28539189, 15326563),
                array(-19464629, 10110288, -17262528, -3503892, -23500387, 1355669, -15523050, 15300988, -20514118, 9168260),
                array(-5353335, 4488613, -23803248, 16314347, 7780487, -15638939, -28948358, 9601605, 33087103, -9011387),
            ),
            array(
                array(-19443170, -15512900, -20797467, -12445323, -29824447, 10229461, -27444329, -15000531, -5996870, 15664672),
                array(23294591, -16632613, -22650781, -8470978, 27844204, 11461195, 13099750, -2460356, 18151676, 13417686),
                array(-24722913, -4176517, -31150679, 5988919, -26858785, 6685065, 1661597, -12551441, 15271676, -15452665),
            ),
        ),
        array(
            array(
                array(11433042, -13228665, 8239631, -5279517, -1985436, -725718, -18698764, 2167544, -6921301, -13440182),
                array(-31436171, 15575146, 30436815, 12192228, -22463353, 9395379, -9917708, -8638997, 12215110, 12028277),
                array(14098400, 6555944, 23007258, 5757252, -15427832, -12950502, 30123440, 4617780, -16900089, -655628),
            ),
            array(
                array(-4026201, -15240835, 11893168, 13718664, -14809462, 1847385, -15819999, 10154009, 23973261, -12684474),
                array(-26531820, -3695990, -1908898, 2534301, -31870557, -16550355, 18341390, -11419951, 32013174, -10103539),
                array(-25479301, 10876443, -11771086, -14625140, -12369567, 1838104, 21911214, 6354752, 4425632, -837822),
            ),
            array(
                array(-10433389, -14612966, 22229858, -3091047, -13191166, 776729, -17415375, -12020462, 4725005, 14044970),
                array(19268650, -7304421, 1555349, 8692754, -21474059, -9910664, 6347390, -1411784, -19522291, -16109756),
                array(-24864089, 12986008, -10898878, -5558584, -11312371, -148526, 19541418, 8180106, 9282262, 10282508),
            ),
            array(
                array(-26205082, 4428547, -8661196, -13194263, 4098402, -14165257, 15522535, 8372215, 5542595, -10702683),
                array(-10562541, 14895633, 26814552, -16673850, -17480754, -2489360, -2781891, 6993761, -18093885, 10114655),
                array(-20107055, -929418, 31422704, 10427861, -7110749, 6150669, -29091755, -11529146, 25953725, -106158),
            ),
            array(
                array(-4234397, -8039292, -9119125, 3046000, 2101609, -12607294, 19390020, 6094296, -3315279, 12831125),
                array(-15998678, 7578152, 5310217, 14408357, -33548620, -224739, 31575954, 6326196, 7381791, -2421839),
                array(-20902779, 3296811, 24736065, -16328389, 18374254, 7318640, 6295303, 8082724, -15362489, 12339664),
            ),
            array(
                array(27724736, 2291157, 6088201, -14184798, 1792727, 5857634, 13848414, 15768922, 25091167, 14856294),
                array(-18866652, 8331043, 24373479, 8541013, -701998, -9269457, 12927300, -12695493, -22182473, -9012899),
                array(-11423429, -5421590, 11632845, 3405020, 30536730, -11674039, -27260765, 13866390, 30146206, 9142070),
            ),
            array(
                array(3924129, -15307516, -13817122, -10054960, 12291820, -668366, -27702774, 9326384, -8237858, 4171294),
                array(-15921940, 16037937, 6713787, 16606682, -21612135, 2790944, 26396185, 3731949, 345228, -5462949),
                array(-21327538, 13448259, 25284571, 1143661, 20614966, -8849387, 2031539, -12391231, -16253183, -13582083),
            ),
            array(
                array(31016211, -16722429, 26371392, -14451233, -5027349, 14854137, 17477601, 3842657, 28012650, -16405420),
                array(-5075835, 9368966, -8562079, -4600902, -15249953, 6970560, -9189873, 16292057, -8867157, 3507940),
                array(29439664, 3537914, 23333589, 6997794, -17555561, -11018068, -15209202, -15051267, -9164929, 6580396),
            ),
        ),
        array(
            array(
                array(-12185861, -7679788, 16438269, 10826160, -8696817, -6235611, 17860444, -9273846, -2095802, 9304567),
                array(20714564, -4336911, 29088195, 7406487, 11426967, -5095705, 14792667, -14608617, 5289421, -477127),
                array(-16665533, -10650790, -6160345, -13305760, 9192020, -1802462, 17271490, 12349094, 26939669, -3752294),
            ),
            array(
                array(-12889898, 9373458, 31595848, 16374215, 21471720, 13221525, -27283495, -12348559, -3698806, 117887),
                array(22263325, -6560050, 3984570, -11174646, -15114008, -566785, 28311253, 5358056, -23319780, 541964),
                array(16259219, 3261970, 2309254, -15534474, -16885711, -4581916, 24134070, -16705829, -13337066, -13552195),
            ),
            array(
                array(9378160, -13140186, -22845982, -12745264, 28198281, -7244098, -2399684, -717351, 690426, 14876244),
                array(24977353, -314384, -8223969, -13465086, 28432343, -1176353, -13068804, -12297348, -22380984, 6618999),
                array(-1538174, 11685646, 12944378, 13682314, -24389511, -14413193, 8044829, -13817328, 32239829, -5652762),
            ),
            array(
                array(-18603066, 4762990, -926250, 8885304, -28412480, -3187315, 9781647, -10350059, 32779359, 5095274),
                array(-33008130, -5214506, -32264887, -3685216, 9460461, -9327423, -24601656, 14506724, 21639561, -2630236),
                array(-16400943, -13112215, 25239338, 15531969, 3987758, -4499318, -1289502, -6863535, 17874574, 558605),
            ),
            array(
                array(-13600129, 10240081, 9171883, 16131053, -20869254, 9599700, 33499487, 5080151, 2085892, 5119761),
                array(-22205145, -2519528, -16381601, 414691, -25019550, 2170430, 30634760, -8363614, -31999993, -5759884),
                array(-6845704, 15791202, 8550074, -1312654, 29928809, -12092256, 27534430, -7192145, -22351378, 12961482),
            ),
            array(
                array(-24492060, -9570771, 10368194, 11582341, -23397293, -2245287, 16533930, 8206996, -30194652, -5159638),
                array(-11121496, -3382234, 2307366, 6362031, -135455, 8868177, -16835630, 7031275, 7589640, 8945490),
                array(-32152748, 8917967, 6661220, -11677616, -1192060, -15793393, 7251489, -11182180, 24099109, -14456170),
            ),
            array(
                array(5019558, -7907470, 4244127, -14714356, -26933272, 6453165, -19118182, -13289025, -6231896, -10280736),
                array(10853594, 10721687, 26480089, 5861829, -22995819, 1972175, -1866647, -10557898, -3363451, -6441124),
                array(-17002408, 5906790, 221599, -6563147, 7828208, -13248918, 24362661, -2008168, -13866408, 7421392),
            ),
            array(
                array(8139927, -6546497, 32257646, -5890546, 30375719, 1886181, -21175108, 15441252, 28826358, -4123029),
                array(6267086, 9695052, 7709135, -16603597, -32869068, -1886135, 14795160, -7840124, 13746021, -1742048),
                array(28584902, 7787108, -6732942, -15050729, 22846041, -7571236, -3181936, -363524, 4771362, -8419958),
            ),
        ),
        array(
            array(
                array(24949256, 6376279, -27466481, -8174608, -18646154, -9930606, 33543569, -12141695, 3569627, 11342593),
                array(26514989, 4740088, 27912651, 3697550, 19331575, -11472339, 6809886, 4608608, 7325975, -14801071),
                array(-11618399, -14554430, -24321212, 7655128, -1369274, 5214312, -27400540, 10258390, -17646694, -8186692),
            ),
            array(
                array(11431204, 15823007, 26570245, 14329124, 18029990, 4796082, -31446179, 15580664, 9280358, -3973687),
                array(-160783, -10326257, -22855316, -4304997, -20861367, -13621002, -32810901, -11181622, -15545091, 4387441),
                array(-20799378, 12194512, 3937617, -5805892, -27154820, 9340370, -24513992, 8548137, 20617071, -7482001),
            ),
            array(
                array(-938825, -3930586, -8714311, 16124718, 24603125, -6225393, -13775352, -11875822, 24345683, 10325460),
                array(-19855277, -1568885, -22202708, 8714034, 14007766, 6928528, 16318175, -1010689, 4766743, 3552007),
                array(-21751364, -16730916, 1351763, -803421, -4009670, 3950935, 3217514, 14481909, 10988822, -3994762),
            ),
            array(
                array(15564307, -14311570, 3101243, 5684148, 30446780, -8051356, 12677127, -6505343, -8295852, 13296005),
                array(-9442290, 6624296, -30298964, -11913677, -4670981, -2057379, 31521204, 9614054, -30000824, 12074674),
                array(4771191, -135239, 14290749, -13089852, 27992298, 14998318, -1413936, -1556716, 29832613, -16391035),
            ),
            array(
                array(7064884, -7541174, -19161962, -5067537, -18891269, -2912736, 25825242, 5293297, -27122660, 13101590),
                array(-2298563, 2439670, -7466610, 1719965, -27267541, -16328445, 32512469, -5317593, -30356070, -4190957),
                array(-30006540, 10162316, -33180176, 3981723, -16482138, -13070044, 14413974, 9515896, 19568978, 9628812),
            ),
            array(
                array(33053803, 199357, 15894591, 1583059, 27380243, -4580435, -17838894, -6106839, -6291786, 3437740),
                array(-18978877, 3884493, 19469877, 12726490, 15913552, 13614290, -22961733, 70104, 7463304, 4176122),
                array(-27124001, 10659917, 11482427, -16070381, 12771467, -6635117, -32719404, -5322751, 24216882, 5944158),
            ),
            array(
                array(8894125, 7450974, -2664149, -9765752, -28080517, -12389115, 19345746, 14680796, 11632993, 5847885),
                array(26942781, -2315317, 9129564, -4906607, 26024105, 11769399, -11518837, 6367194, -9727230, 4782140),
                array(19916461, -4828410, -22910704, -11414391, 25606324, -5972441, 33253853, 8220911, 6358847, -1873857),
            ),
            array(
                array(801428, -2081702, 16569428, 11065167, 29875704, 96627, 7908388, -4480480, -13538503, 1387155),
                array(19646058, 5720633, -11416706, 12814209, 11607948, 12749789, 14147075, 15156355, -21866831, 11835260),
                array(19299512, 1155910, 28703737, 14890794, 2925026, 7269399, 26121523, 15467869, -26560550, 5052483),
            ),
        ),
        array(
            array(
                array(-3017432, 10058206, 1980837, 3964243, 22160966, 12322533, -6431123, -12618185, 12228557, -7003677),
                array(32944382, 14922211, -22844894, 5188528, 21913450, -8719943, 4001465, 13238564, -6114803, 8653815),
                array(22865569, -4652735, 27603668, -12545395, 14348958, 8234005, 24808405, 5719875, 28483275, 2841751),
            ),
            array(
                array(-16420968, -1113305, -327719, -12107856, 21886282, -15552774, -1887966, -315658, 19932058, -12739203),
                array(-11656086, 10087521, -8864888, -5536143, -19278573, -3055912, 3999228, 13239134, -4777469, -13910208),
                array(1382174, -11694719, 17266790, 9194690, -13324356, 9720081, 20403944, 11284705, -14013818, 3093230),
            ),
            array(
                array(16650921, -11037932, -1064178, 1570629, -8329746, 7352753, -302424, 16271225, -24049421, -6691850),
                array(-21911077, -5927941, -4611316, -5560156, -31744103, -10785293, 24123614, 15193618, -21652117, -16739389),
                array(-9935934, -4289447, -25279823, 4372842, 2087473, 10399484, 31870908, 14690798, 17361620, 11864968),
            ),
            array(
                array(-11307610, 6210372, 13206574, 5806320, -29017692, -13967200, -12331205, -7486601, -25578460, -16240689),
                array(14668462, -12270235, 26039039, 15305210, 25515617, 4542480, 10453892, 6577524, 9145645, -6443880),
                array(5974874, 3053895, -9433049, -10385191, -31865124, 3225009, -7972642, 3936128, -5652273, -3050304),
            ),
            array(
                array(30625386, -4729400, -25555961, -12792866, -20484575, 7695099, 17097188, -16303496, -27999779, 1803632),
                array(-3553091, 9865099, -5228566, 4272701, -5673832, -16689700, 14911344, 12196514, -21405489, 7047412),
                array(20093277, 9920966, -11138194, -5343857, 13161587, 12044805, -32856851, 4124601, -32343828, -10257566),
            ),
            array(
                array(-20788824, 14084654, -13531713, 7842147, 19119038, -13822605, 4752377, -8714640, -21679658, 2288038),
                array(-26819236, -3283715, 29965059, 3039786, -14473765, 2540457, 29457502, 14625692, -24819617, 12570232),
                array(-1063558, -11551823, 16920318, 12494842, 1278292, -5869109, -21159943, -3498680, -11974704, 4724943),
            ),
            array(
                array(17960970, -11775534, -4140968, -9702530, -8876562, -1410617, -12907383, -8659932, -29576300, 1903856),
                array(23134274, -14279132, -10681997, -1611936, 20684485, 15770816, -12989750, 3190296, 26955097, 14109738),
                array(15308788, 5320727, -30113809, -14318877, 22902008, 7767164, 29425325, -11277562, 31960942, 11934971),
            ),
            array(
                array(-27395711, 8435796, 4109644, 12222639, -24627868, 14818669, 20638173, 4875028, 10491392, 1379718),
                array(-13159415, 9197841, 3875503, -8936108, -1383712, -5879801, 33518459, 16176658, 21432314, 12180697),
                array(-11787308, 11500838, 13787581, -13832590, -22430679, 10140205, 1465425, 12689540, -10301319, -13872883),
            ),
        ),
        array(
            array(
                array(5414091, -15386041, -21007664, 9643570, 12834970, 1186149, -2622916, -1342231, 26128231, 6032912),
                array(-26337395, -13766162, 32496025, -13653919, 17847801, -12669156, 3604025, 8316894, -25875034, -10437358),
                array(3296484, 6223048, 24680646, -12246460, -23052020, 5903205, -8862297, -4639164, 12376617, 3188849),
            ),
            array(
                array(29190488, -14659046, 27549113, -1183516, 3520066, -10697301, 32049515, -7309113, -16109234, -9852307),
                array(-14744486, -9309156, 735818, -598978, -20407687, -5057904, 25246078, -15795669, 18640741, -960977),
                array(-6928835, -16430795, 10361374, 5642961, 4910474, 12345252, -31638386, -494430, 10530747, 1053335),
            ),
            array(
                array(-29265967, -14186805, -13538216, -12117373, -19457059, -10655384, -31462369, -2948985, 24018831, 15026644),
                array(-22592535, -3145277, -2289276, 5953843, -13440189, 9425631, 25310643, 13003497, -2314791, -15145616),
                array(-27419985, -603321, -8043984, -1669117, -26092265, 13987819, -27297622, 187899, -23166419, -2531735),
            ),
            array(
                array(-21744398, -13810475, 1844840, 5021428, -10434399, -15911473, 9716667, 16266922, -5070217, 726099),
                array(29370922, -6053998, 7334071, -15342259, 9385287, 2247707, -13661962, -4839461, 30007388, -15823341),
                array(-936379, 16086691, 23751945, -543318, -1167538, -5189036, 9137109, 730663, 9835848, 4555336),
            ),
            array(
                array(-23376435, 1410446, -22253753, -12899614, 30867635, 15826977, 17693930, 544696, -11985298, 12422646),
                array(31117226, -12215734, -13502838, 6561947, -9876867, -12757670, -5118685, -4096706, 29120153, 13924425),
                array(-17400879, -14233209, 19675799, -2734756, -11006962, -5858820, -9383939, -11317700, 7240931, -237388),
            ),
            array(
                array(-31361739, -11346780, -15007447, -5856218, -22453340, -12152771, 1222336, 4389483, 3293637, -15551743),
                array(-16684801, -14444245, 11038544, 11054958, -13801175, -3338533, -24319580, 7733547, 12796905, -6335822),
                array(-8759414, -10817836, -25418864, 10783769, -30615557, -9746811, -28253339, 3647836, 3222231, -11160462),
            ),
            array(
                array(18606113, 1693100, -25448386, -15170272, 4112353, 10045021, 23603893, -2048234, -7550776, 2484985),
                array(9255317, -3131197, -12156162, -1004256, 13098013, -9214866, 16377220, -2102812, -19802075, -3034702),
                array(-22729289, 7496160, -5742199, 11329249, 19991973, -3347502, -31718148, 9936966, -30097688, -10618797),
            ),
            array(
                array(21878590, -5001297, 4338336, 13643897, -3036865, 13160960, 19708896, 5415497, -7360503, -4109293),
                array(27736861, 10103576, 12500508, 8502413, -3413016, -9633558, 10436918, -1550276, -23659143, -8132100),
                array(19492550, -12104365, -29681976, -852630, -3208171, 12403437, 30066266, 8367329, 13243957, 8709688),
            ),
        ),
        array(
            array(
                array(12015105, 2801261, 28198131, 10151021, 24818120, -4743133, -11194191, -5645734, 5150968, 7274186),
                array(2831366, -12492146, 1478975, 6122054, 23825128, -12733586, 31097299, 6083058, 31021603, -9793610),
                array(-2529932, -2229646, 445613, 10720828, -13849527, -11505937, -23507731, 16354465, 15067285, -14147707),
            ),
            array(
                array(7840942, 14037873, -33364863, 15934016, -728213, -3642706, 21403988, 1057586, -19379462, -12403220),
                array(915865, -16469274, 15608285, -8789130, -24357026, 6060030, -17371319, 8410997, -7220461, 16527025),
                array(32922597, -556987, 20336074, -16184568, 10903705, -5384487, 16957574, 52992, 23834301, 6588044),
            ),
            array(
                array(32752030, 11232950, 3381995, -8714866, 22652988, -10744103, 17159699, 16689107, -20314580, -1305992),
                array(-4689649, 9166776, -25710296, -10847306, 11576752, 12733943, 7924251, -2752281, 1976123, -7249027),
                array(21251222, 16309901, -2983015, -6783122, 30810597, 12967303, 156041, -3371252, 12331345, -8237197),
            ),
            array(
                array(8651614, -4477032, -16085636, -4996994, 13002507, 2950805, 29054427, -5106970, 10008136, -4667901),
                array(31486080, 15114593, -14261250, 12951354, 14369431, -7387845, 16347321, -13662089, 8684155, -10532952),
                array(19443825, 11385320, 24468943, -9659068, -23919258, 2187569, -26263207, -6086921, 31316348, 14219878),
            ),
            array(
                array(-28594490, 1193785, 32245219, 11392485, 31092169, 15722801, 27146014, 6992409, 29126555, 9207390),
                array(32382935, 1110093, 18477781, 11028262, -27411763, -7548111, -4980517, 10843782, -7957600, -14435730),
                array(2814918, 7836403, 27519878, -7868156, -20894015, -11553689, -21494559, 8550130, 28346258, 1994730),
            ),
            array(
                array(-19578299, 8085545, -14000519, -3948622, 2785838, -16231307, -19516951, 7174894, 22628102, 8115180),
                array(-30405132, 955511, -11133838, -15078069, -32447087, -13278079, -25651578, 3317160, -9943017, 930272),
                array(-15303681, -6833769, 28856490, 1357446, 23421993, 1057177, 24091212, -1388970, -22765376, -10650715),
            ),
            array(
                array(-22751231, -5303997, -12907607, -12768866, -15811511, -7797053, -14839018, -16554220, -1867018, 8398970),
                array(-31969310, 2106403, -4736360, 1362501, 12813763, 16200670, 22981545, -6291273, 18009408, -15772772),
                array(-17220923, -9545221, -27784654, 14166835, 29815394, 7444469, 29551787, -3727419, 19288549, 1325865),
            ),
            array(
                array(15100157, -15835752, -23923978, -1005098, -26450192, 15509408, 12376730, -3479146, 33166107, -8042750),
                array(20909231, 13023121, -9209752, 16251778, -5778415, -8094914, 12412151, 10018715, 2213263, -13878373),
                array(32529814, -11074689, 30361439, -16689753, -9135940, 1513226, 22922121, 6382134, -5766928, 8371348),
            ),
        ),
        array(
            array(
                array(9923462, 11271500, 12616794, 3544722, -29998368, -1721626, 12891687, -8193132, -26442943, 10486144),
                array(-22597207, -7012665, 8587003, -8257861, 4084309, -12970062, 361726, 2610596, -23921530, -11455195),
                array(5408411, -1136691, -4969122, 10561668, 24145918, 14240566, 31319731, -4235541, 19985175, -3436086),
            ),
            array(
                array(-13994457, 16616821, 14549246, 3341099, 32155958, 13648976, -17577068, 8849297, 65030, 8370684),
                array(-8320926, -12049626, 31204563, 5839400, -20627288, -1057277, -19442942, 6922164, 12743482, -9800518),
                array(-2361371, 12678785, 28815050, 4759974, -23893047, 4884717, 23783145, 11038569, 18800704, 255233),
            ),
            array(
                array(-5269658, -1773886, 13957886, 7990715, 23132995, 728773, 13393847, 9066957, 19258688, -14753793),
                array(-2936654, -10827535, -10432089, 14516793, -3640786, 4372541, -31934921, 2209390, -1524053, 2055794),
                array(580882, 16705327, 5468415, -2683018, -30926419, -14696000, -7203346, -8994389, -30021019, 7394435),
            ),
            array(
                array(23838809, 1822728, -15738443, 15242727, 8318092, -3733104, -21672180, -3492205, -4821741, 14799921),
                array(13345610, 9759151, 3371034, -16137791, 16353039, 8577942, 31129804, 13496856, -9056018, 7402518),
                array(2286874, -4435931, -20042458, -2008336, -13696227, 5038122, 11006906, -15760352, 8205061, 1607563),
            ),
            array(
                array(14414086, -8002132, 3331830, -3208217, 22249151, -5594188, 18364661, -2906958, 30019587, -9029278),
                array(-27688051, 1585953, -10775053, 931069, -29120221, -11002319, -14410829, 12029093, 9944378, 8024),
                array(4368715, -3709630, 29874200, -15022983, -20230386, -11410704, -16114594, -999085, -8142388, 5640030),
            ),
            array(
                array(10299610, 13746483, 11661824, 16234854, 7630238, 5998374, 9809887, -16694564, 15219798, -14327783),
                array(27425505, -5719081, 3055006, 10660664, 23458024, 595578, -15398605, -1173195, -18342183, 9742717),
                array(6744077, 2427284, 26042789, 2720740, -847906, 1118974, 32324614, 7406442, 12420155, 1994844),
            ),
            array(
                array(14012521, -5024720, -18384453, -9578469, -26485342, -3936439, -13033478, -10909803, 24319929, -6446333),
                array(16412690, -4507367, 10772641, 15929391, -17068788, -4658621, 10555945, -10484049, -30102368, -4739048),
                array(22397382, -7767684, -9293161, -12792868, 17166287, -9755136, -27333065, 6199366, 21880021, -12250760),
            ),
            array(
                array(-4283307, 5368523, -31117018, 8163389, -30323063, 3209128, 16557151, 8890729, 8840445, 4957760),
                array(-15447727, 709327, -6919446, -10870178, -29777922, 6522332, -21720181, 12130072, -14796503, 5005757),
                array(-2114751, -14308128, 23019042, 15765735, -25269683, 6002752, 10183197, -13239326, -16395286, -2176112),
            ),
        ),
        array(
            array(
                array(-19025756, 1632005, 13466291, -7995100, -23640451, 16573537, -32013908, -3057104, 22208662, 2000468),
                array(3065073, -1412761, -25598674, -361432, -17683065, -5703415, -8164212, 11248527, -3691214, -7414184),
                array(10379208, -6045554, 8877319, 1473647, -29291284, -12507580, 16690915, 2553332, -3132688, 16400289),
            ),
            array(
                array(15716668, 1254266, -18472690, 7446274, -8448918, 6344164, -22097271, -7285580, 26894937, 9132066),
                array(24158887, 12938817, 11085297, -8177598, -28063478, -4457083, -30576463, 64452, -6817084, -2692882),
                array(13488534, 7794716, 22236231, 5989356, 25426474, -12578208, 2350710, -3418511, -4688006, 2364226),
            ),
            array(
                array(16335052, 9132434, 25640582, 6678888, 1725628, 8517937, -11807024, -11697457, 15445875, -7798101),
                array(29004207, -7867081, 28661402, -640412, -12794003, -7943086, 31863255, -4135540, -278050, -15759279),
                array(-6122061, -14866665, -28614905, 14569919, -10857999, -3591829, 10343412, -6976290, -29828287, -10815811),
            ),
            array(
                array(27081650, 3463984, 14099042, -4517604, 1616303, -6205604, 29542636, 15372179, 17293797, 960709),
                array(20263915, 11434237, -5765435, 11236810, 13505955, -10857102, -16111345, 6493122, -19384511, 7639714),
                array(-2830798, -14839232, 25403038, -8215196, -8317012, -16173699, 18006287, -16043750, 29994677, -15808121),
            ),
            array(
                array(9769828, 5202651, -24157398, -13631392, -28051003, -11561624, -24613141, -13860782, -31184575, 709464),
                array(12286395, 13076066, -21775189, -1176622, -25003198, 4057652, -32018128, -8890874, 16102007, 13205847),
                array(13733362, 5599946, 10557076, 3195751, -5557991, 8536970, -25540170, 8525972, 10151379, 10394400),
            ),
            array(
                array(4024660, -16137551, 22436262, 12276534, -9099015, -2686099, 19698229, 11743039, -33302334, 8934414),
                array(-15879800, -4525240, -8580747, -2934061, 14634845, -698278, -9449077, 3137094, -11536886, 11721158),
                array(17555939, -5013938, 8268606, 2331751, -22738815, 9761013, 9319229, 8835153, -9205489, -1280045),
            ),
            array(
                array(-461409, -7830014, 20614118, 16688288, -7514766, -4807119, 22300304, 505429, 6108462, -6183415),
                array(-5070281, 12367917, -30663534, 3234473, 32617080, -8422642, 29880583, -13483331, -26898490, -7867459),
                array(-31975283, 5726539, 26934134, 10237677, -3173717, -605053, 24199304, 3795095, 7592688, -14992079),
            ),
            array(
                array(21594432, -14964228, 17466408, -4077222, 32537084, 2739898, 6407723, 12018833, -28256052, 4298412),
                array(-20650503, -11961496, -27236275, 570498, 3767144, -1717540, 13891942, -1569194, 13717174, 10805743),
                array(-14676630, -15644296, 15287174, 11927123, 24177847, -8175568, -796431, 14860609, -26938930, -5863836),
            ),
        ),
        array(
            array(
                array(12962541, 5311799, -10060768, 11658280, 18855286, -7954201, 13286263, -12808704, -4381056, 9882022),
                array(18512079, 11319350, -20123124, 15090309, 18818594, 5271736, -22727904, 3666879, -23967430, -3299429),
                array(-6789020, -3146043, 16192429, 13241070, 15898607, -14206114, -10084880, -6661110, -2403099, 5276065),
            ),
            array(
                array(30169808, -5317648, 26306206, -11750859, 27814964, 7069267, 7152851, 3684982, 1449224, 13082861),
                array(10342826, 3098505, 2119311, 193222, 25702612, 12233820, 23697382, 15056736, -21016438, -8202000),
                array(-33150110, 3261608, 22745853, 7948688, 19370557, -15177665, -26171976, 6482814, -10300080, -11060101),
            ),
            array(
                array(32869458, -5408545, 25609743, 15678670, -10687769, -15471071, 26112421, 2521008, -22664288, 6904815),
                array(29506923, 4457497, 3377935, -9796444, -30510046, 12935080, 1561737, 3841096, -29003639, -6657642),
                array(10340844, -6630377, -18656632, -2278430, 12621151, -13339055, 30878497, -11824370, -25584551, 5181966),
            ),
            array(
                array(25940115, -12658025, 17324188, -10307374, -8671468, 15029094, 24396252, -16450922, -2322852, -12388574),
                array(-21765684, 9916823, -1300409, 4079498, -1028346, 11909559, 1782390, 12641087, 20603771, -6561742),
                array(-18882287, -11673380, 24849422, 11501709, 13161720, -4768874, 1925523, 11914390, 4662781, 7820689),
            ),
            array(
                array(12241050, -425982, 8132691, 9393934, 32846760, -1599620, 29749456, 12172924, 16136752, 15264020),
                array(-10349955, -14680563, -8211979, 2330220, -17662549, -14545780, 10658213, 6671822, 19012087, 3772772),
                array(3753511, -3421066, 10617074, 2028709, 14841030, -6721664, 28718732, -15762884, 20527771, 12988982),
            ),
            array(
                array(-14822485, -5797269, -3707987, 12689773, -898983, -10914866, -24183046, -10564943, 3299665, -12424953),
                array(-16777703, -15253301, -9642417, 4978983, 3308785, 8755439, 6943197, 6461331, -25583147, 8991218),
                array(-17226263, 1816362, -1673288, -6086439, 31783888, -8175991, -32948145, 7417950, -30242287, 1507265),
            ),
            array(
                array(29692663, 6829891, -10498800, 4334896, 20945975, -11906496, -28887608, 8209391, 14606362, -10647073),
                array(-3481570, 8707081, 32188102, 5672294, 22096700, 1711240, -33020695, 9761487, 4170404, -2085325),
                array(-11587470, 14855945, -4127778, -1531857, -26649089, 15084046, 22186522, 16002000, -14276837, -8400798),
            ),
            array(
                array(-4811456, 13761029, -31703877, -2483919, -3312471, 7869047, -7113572, -9620092, 13240845, 10965870),
                array(-7742563, -8256762, -14768334, -13656260, -23232383, 12387166, 4498947, 14147411, 29514390, 4302863),
                array(-13413405, -12407859, 20757302, -13801832, 14785143, 8976368, -5061276, -2144373, 17846988, -13971927),
            ),
        ),
        array(
            array(
                array(-2244452, -754728, -4597030, -1066309, -6247172, 1455299, -21647728, -9214789, -5222701, 12650267),
                array(-9906797, -16070310, 21134160, 12198166, -27064575, 708126, 387813, 13770293, -19134326, 10958663),
                array(22470984, 12369526, 23446014, -5441109, -21520802, -9698723, -11772496, -11574455, -25083830, 4271862),
            ),
            array(
                array(-25169565, -10053642, -19909332, 15361595, -5984358, 2159192, 75375, -4278529, -32526221, 8469673),
                array(15854970, 4148314, -8893890, 7259002, 11666551, 13824734, -30531198, 2697372, 24154791, -9460943),
                array(15446137, -15806644, 29759747, 14019369, 30811221, -9610191, -31582008, 12840104, 24913809, 9815020),
            ),
            array(
                array(-4709286, -5614269, -31841498, -12288893, -14443537, 10799414, -9103676, 13438769, 18735128, 9466238),
                array(11933045, 9281483, 5081055, -5183824, -2628162, -4905629, -7727821, -10896103, -22728655, 16199064),
                array(14576810, 379472, -26786533, -8317236, -29426508, -10812974, -102766, 1876699, 30801119, 2164795),
            ),
            array(
                array(15995086, 3199873, 13672555, 13712240, -19378835, -4647646, -13081610, -15496269, -13492807, 1268052),
                array(-10290614, -3659039, -3286592, 10948818, 23037027, 3794475, -3470338, -12600221, -17055369, 3565904),
                array(29210088, -9419337, -5919792, -4952785, 10834811, -13327726, -16512102, -10820713, -27162222, -14030531),
            ),
            array(
                array(-13161890, 15508588, 16663704, -8156150, -28349942, 9019123, -29183421, -3769423, 2244111, -14001979),
                array(-5152875, -3800936, -9306475, -6071583, 16243069, 14684434, -25673088, -16180800, 13491506, 4641841),
                array(10813417, 643330, -19188515, -728916, 30292062, -16600078, 27548447, -7721242, 14476989, -12767431),
            ),
            array(
                array(10292079, 9984945, 6481436, 8279905, -7251514, 7032743, 27282937, -1644259, -27912810, 12651324),
                array(-31185513, -813383, 22271204, 11835308, 10201545, 15351028, 17099662, 3988035, 21721536, -3148940),
                array(10202177, -6545839, -31373232, -9574638, -32150642, -8119683, -12906320, 3852694, 13216206, 14842320),
            ),
            array(
                array(-15815640, -10601066, -6538952, -7258995, -6984659, -6581778, -31500847, 13765824, -27434397, 9900184),
                array(14465505, -13833331, -32133984, -14738873, -27443187, 12990492, 33046193, 15796406, -7051866, -8040114),
                array(30924417, -8279620, 6359016, -12816335, 16508377, 9071735, -25488601, 15413635, 9524356, -7018878),
            ),
            array(
                array(12274201, -13175547, 32627641, -1785326, 6736625, 13267305, 5237659, -5109483, 15663516, 4035784),
                array(-2951309, 8903985, 17349946, 601635, -16432815, -4612556, -13732739, -15889334, -22258478, 4659091),
                array(-16916263, -4952973, -30393711, -15158821, 20774812, 15897498, 5736189, 15026997, -2178256, -13455585),
            ),
        ),
        array(
            array(
                array(-8858980, -2219056, 28571666, -10155518, -474467, -10105698, -3801496, 278095, 23440562, -290208),
                array(10226241, -5928702, 15139956, 120818, -14867693, 5218603, 32937275, 11551483, -16571960, -7442864),
                array(17932739, -12437276, -24039557, 10749060, 11316803, 7535897, 22503767, 5561594, -3646624, 3898661),
            ),
            array(
                array(7749907, -969567, -16339731, -16464, -25018111, 15122143, -1573531, 7152530, 21831162, 1245233),
                array(26958459, -14658026, 4314586, 8346991, -5677764, 11960072, -32589295, -620035, -30402091, -16716212),
                array(-12165896, 9166947, 33491384, 13673479, 29787085, 13096535, 6280834, 14587357, -22338025, 13987525),
            ),
            array(
                array(-24349909, 7778775, 21116000, 15572597, -4833266, -5357778, -4300898, -5124639, -7469781, -2858068),
                array(9681908, -6737123, -31951644, 13591838, -6883821, 386950, 31622781, 6439245, -14581012, 4091397),
                array(-8426427, 1470727, -28109679, -1596990, 3978627, -5123623, -19622683, 12092163, 29077877, -14741988),
            ),
            array(
                array(5269168, -6859726, -13230211, -8020715, 25932563, 1763552, -5606110, -5505881, -20017847, 2357889),
                array(32264008, -15407652, -5387735, -1160093, -2091322, -3946900, 23104804, -12869908, 5727338, 189038),
                array(14609123, -8954470, -6000566, -16622781, -14577387, -7743898, -26745169, 10942115, -25888931, -14884697),
            ),
            array(
                array(20513500, 5557931, -15604613, 7829531, 26413943, -2019404, -21378968, 7471781, 13913677, -5137875),
                array(-25574376, 11967826, 29233242, 12948236, -6754465, 4713227, -8940970, 14059180, 12878652, 8511905),
                array(-25656801, 3393631, -2955415, -7075526, -2250709, 9366908, -30223418, 6812974, 5568676, -3127656),
            ),
            array(
                array(11630004, 12144454, 2116339, 13606037, 27378885, 15676917, -17408753, -13504373, -14395196, 8070818),
                array(27117696, -10007378, -31282771, -5570088, 1127282, 12772488, -29845906, 10483306, -11552749, -1028714),
                array(10637467, -5688064, 5674781, 1072708, -26343588, -6982302, -1683975, 9177853, -27493162, 15431203),
            ),
            array(
                array(20525145, 10892566, -12742472, 12779443, -29493034, 16150075, -28240519, 14943142, -15056790, -7935931),
                array(-30024462, 5626926, -551567, -9981087, 753598, 11981191, 25244767, -3239766, -3356550, 9594024),
                array(-23752644, 2636870, -5163910, -10103818, 585134, 7877383, 11345683, -6492290, 13352335, -10977084),
            ),
            array(
                array(-1931799, -5407458, 3304649, -12884869, 17015806, -4877091, -29783850, -7752482, -13215537, -319204),
                array(20239939, 6607058, 6203985, 3483793, -18386976, -779229, -20723742, 15077870, -22750759, 14523817),
                array(27406042, -6041657, 27423596, -4497394, 4996214, 10002360, -28842031, -4545494, -30172742, -4805667),
            ),
        ),
        array(
            array(
                array(11374242, 12660715, 17861383, -12540833, 10935568, 1099227, -13886076, -9091740, -27727044, 11358504),
                array(-12730809, 10311867, 1510375, 10778093, -2119455, -9145702, 32676003, 11149336, -26123651, 4985768),
                array(-19096303, 341147, -6197485, -239033, 15756973, -8796662, -983043, 13794114, -19414307, -15621255),
            ),
            array(
                array(6490081, 11940286, 25495923, -7726360, 8668373, -8751316, 3367603, 6970005, -1691065, -9004790),
                array(1656497, 13457317, 15370807, 6364910, 13605745, 8362338, -19174622, -5475723, -16796596, -5031438),
                array(-22273315, -13524424, -64685, -4334223, -18605636, -10921968, -20571065, -7007978, -99853, -10237333),
            ),
            array(
                array(17747465, 10039260, 19368299, -4050591, -20630635, -16041286, 31992683, -15857976, -29260363, -5511971),
                array(31932027, -4986141, -19612382, 16366580, 22023614, 88450, 11371999, -3744247, 4882242, -10626905),
                array(29796507, 37186, 19818052, 10115756, -11829032, 3352736, 18551198, 3272828, -5190932, -4162409),
            ),
            array(
                array(12501286, 4044383, -8612957, -13392385, -32430052, 5136599, -19230378, -3529697, 330070, -3659409),
                array(6384877, 2899513, 17807477, 7663917, -2358888, 12363165, 25366522, -8573892, -271295, 12071499),
                array(-8365515, -4042521, 25133448, -4517355, -6211027, 2265927, -32769618, 1936675, -5159697, 3829363),
            ),
            array(
                array(28425966, -5835433, -577090, -4697198, -14217555, 6870930, 7921550, -6567787, 26333140, 14267664),
                array(-11067219, 11871231, 27385719, -10559544, -4585914, -11189312, 10004786, -8709488, -21761224, 8930324),
                array(-21197785, -16396035, 25654216, -1725397, 12282012, 11008919, 1541940, 4757911, -26491501, -16408940),
            ),
            array(
                array(13537262, -7759490, -20604840, 10961927, -5922820, -13218065, -13156584, 6217254, -15943699, 13814990),
                array(-17422573, 15157790, 18705543, 29619, 24409717, -260476, 27361681, 9257833, -1956526, -1776914),
                array(-25045300, -10191966, 15366585, 15166509, -13105086, 8423556, -29171540, 12361135, -18685978, 4578290),
            ),
            array(
                array(24579768, 3711570, 1342322, -11180126, -27005135, 14124956, -22544529, 14074919, 21964432, 8235257),
                array(-6528613, -2411497, 9442966, -5925588, 12025640, -1487420, -2981514, -1669206, 13006806, 2355433),
                array(-16304899, -13605259, -6632427, -5142349, 16974359, -10911083, 27202044, 1719366, 1141648, -12796236),
            ),
            array(
                array(-12863944, -13219986, -8318266, -11018091, -6810145, -4843894, 13475066, -3133972, 32674895, 13715045),
                array(11423335, -5468059, 32344216, 8962751, 24989809, 9241752, -13265253, 16086212, -28740881, -15642093),
                array(-1409668, 12530728, -6368726, 10847387, 19531186, -14132160, -11709148, 7791794, -27245943, 4383347),
            ),
        ),
        array(
            array(
                array(-28970898, 5271447, -1266009, -9736989, -12455236, 16732599, -4862407, -4906449, 27193557, 6245191),
                array(-15193956, 5362278, -1783893, 2695834, 4960227, 12840725, 23061898, 3260492, 22510453, 8577507),
                array(-12632451, 11257346, -32692994, 13548177, -721004, 10879011, 31168030, 13952092, -29571492, -3635906),
            ),
            array(
                array(3877321, -9572739, 32416692, 5405324, -11004407, -13656635, 3759769, 11935320, 5611860, 8164018),
                array(-16275802, 14667797, 15906460, 12155291, -22111149, -9039718, 32003002, -8832289, 5773085, -8422109),
                array(-23788118, -8254300, 1950875, 8937633, 18686727, 16459170, -905725, 12376320, 31632953, 190926),
            ),
            array(
                array(-24593607, -16138885, -8423991, 13378746, 14162407, 6901328, -8288749, 4508564, -25341555, -3627528),
                array(8884438, -5884009, 6023974, 10104341, -6881569, -4941533, 18722941, -14786005, -1672488, 827625),
                array(-32720583, -16289296, -32503547, 7101210, 13354605, 2659080, -1800575, -14108036, -24878478, 1541286),
            ),
            array(
                array(2901347, -1117687, 3880376, -10059388, -17620940, -3612781, -21802117, -3567481, 20456845, -1885033),
                array(27019610, 12299467, -13658288, -1603234, -12861660, -4861471, -19540150, -5016058, 29439641, 15138866),
                array(21536104, -6626420, -32447818, -10690208, -22408077, 5175814, -5420040, -16361163, 7779328, 109896),
            ),
            array(
                array(30279744, 14648750, -8044871, 6425558, 13639621, -743509, 28698390, 12180118, 23177719, -554075),
                array(26572847, 3405927, -31701700, 12890905, -19265668, 5335866, -6493768, 2378492, 4439158, -13279347),
                array(-22716706, 3489070, -9225266, -332753, 18875722, -1140095, 14819434, -12731527, -17717757, -5461437),
            ),
            array(
                array(-5056483, 16566551, 15953661, 3767752, -10436499, 15627060, -820954, 2177225, 8550082, -15114165),
                array(-18473302, 16596775, -381660, 15663611, 22860960, 15585581, -27844109, -3582739, -23260460, -8428588),
                array(-32480551, 15707275, -8205912, -5652081, 29464558, 2713815, -22725137, 15860482, -21902570, 1494193),
            ),
            array(
                array(-19562091, -14087393, -25583872, -9299552, 13127842, 759709, 21923482, 16529112, 8742704, 12967017),
                array(-28464899, 1553205, 32536856, -10473729, -24691605, -406174, -8914625, -2933896, -29903758, 15553883),
                array(21877909, 3230008, 9881174, 10539357, -4797115, 2841332, 11543572, 14513274, 19375923, -12647961),
            ),
            array(
                array(8832269, -14495485, 13253511, 5137575, 5037871, 4078777, 24880818, -6222716, 2862653, 9455043),
                array(29306751, 5123106, 20245049, -14149889, 9592566, 8447059, -2077124, -2990080, 15511449, 4789663),
                array(-20679756, 7004547, 8824831, -9434977, -4045704, -3750736, -5754762, 108893, 23513200, 16652362),
            ),
        ),
        array(
            array(
                array(-33256173, 4144782, -4476029, -6579123, 10770039, -7155542, -6650416, -12936300, -18319198, 10212860),
                array(2756081, 8598110, 7383731, -6859892, 22312759, -1105012, 21179801, 2600940, -9988298, -12506466),
                array(-24645692, 13317462, -30449259, -15653928, 21365574, -10869657, 11344424, 864440, -2499677, -16710063),
            ),
            array(
                array(-26432803, 6148329, -17184412, -14474154, 18782929, -275997, -22561534, 211300, 2719757, 4940997),
                array(-1323882, 3911313, -6948744, 14759765, -30027150, 7851207, 21690126, 8518463, 26699843, 5276295),
                array(-13149873, -6429067, 9396249, 365013, 24703301, -10488939, 1321586, 149635, -15452774, 7159369),
            ),
            array(
                array(9987780, -3404759, 17507962, 9505530, 9731535, -2165514, 22356009, 8312176, 22477218, -8403385),
                array(18155857, -16504990, 19744716, 9006923, 15154154, -10538976, 24256460, -4864995, -22548173, 9334109),
                array(2986088, -4911893, 10776628, -3473844, 10620590, -7083203, -21413845, 14253545, -22587149, 536906),
            ),
            array(
                array(4377756, 8115836, 24567078, 15495314, 11625074, 13064599, 7390551, 10589625, 10838060, -15420424),
                array(-19342404, 867880, 9277171, -3218459, -14431572, -1986443, 19295826, -15796950, 6378260, 699185),
                array(7895026, 4057113, -7081772, -13077756, -17886831, -323126, -716039, 15693155, -5045064, -13373962),
            ),
            array(
                array(-7737563, -5869402, -14566319, -7406919, 11385654, 13201616, 31730678, -10962840, -3918636, -9669325),
                array(10188286, -15770834, -7336361, 13427543, 22223443, 14896287, 30743455, 7116568, -21786507, 5427593),
                array(696102, 13206899, 27047647, -10632082, 15285305, -9853179, 10798490, -4578720, 19236243, 12477404),
            ),
            array(
                array(-11229439, 11243796, -17054270, -8040865, -788228, -8167967, -3897669, 11180504, -23169516, 7733644),
                array(17800790, -14036179, -27000429, -11766671, 23887827, 3149671, 23466177, -10538171, 10322027, 15313801),
                array(26246234, 11968874, 32263343, -5468728, 6830755, -13323031, -15794704, -101982, -24449242, 10890804),
            ),
            array(
                array(-31365647, 10271363, -12660625, -6267268, 16690207, -13062544, -14982212, 16484931, 25180797, -5334884),
                array(-586574, 10376444, -32586414, -11286356, 19801893, 10997610, 2276632, 9482883, 316878, 13820577),
                array(-9882808, -4510367, -2115506, 16457136, -11100081, 11674996, 30756178, -7515054, 30696930, -3712849),
            ),
            array(
                array(32988917, -9603412, 12499366, 7910787, -10617257, -11931514, -7342816, -9985397, -32349517, 7392473),
                array(-8855661, 15927861, 9866406, -3649411, -2396914, -16655781, -30409476, -9134995, 25112947, -2926644),
                array(-2504044, -436966, 25621774, -5678772, 15085042, -5479877, -24884878, -13526194, 5537438, -13914319),
            ),
        ),
        array(
            array(
                array(-11225584, 2320285, -9584280, 10149187, -33444663, 5808648, -14876251, -1729667, 31234590, 6090599),
                array(-9633316, 116426, 26083934, 2897444, -6364437, -2688086, 609721, 15878753, -6970405, -9034768),
                array(-27757857, 247744, -15194774, -9002551, 23288161, -10011936, -23869595, 6503646, 20650474, 1804084),
            ),
            array(
                array(-27589786, 15456424, 8972517, 8469608, 15640622, 4439847, 3121995, -10329713, 27842616, -202328),
                array(-15306973, 2839644, 22530074, 10026331, 4602058, 5048462, 28248656, 5031932, -11375082, 12714369),
                array(20807691, -7270825, 29286141, 11421711, -27876523, -13868230, -21227475, 1035546, -19733229, 12796920),
            ),
            array(
                array(12076899, -14301286, -8785001, -11848922, -25012791, 16400684, -17591495, -12899438, 3480665, -15182815),
                array(-32361549, 5457597, 28548107, 7833186, 7303070, -11953545, -24363064, -15921875, -33374054, 2771025),
                array(-21389266, 421932, 26597266, 6860826, 22486084, -6737172, -17137485, -4210226, -24552282, 15673397),
            ),
            array(
                array(-20184622, 2338216, 19788685, -9620956, -4001265, -8740893, -20271184, 4733254, 3727144, -12934448),
                array(6120119, 814863, -11794402, -622716, 6812205, -15747771, 2019594, 7975683, 31123697, -10958981),
                array(30069250, -11435332, 30434654, 2958439, 18399564, -976289, 12296869, 9204260, -16432438, 9648165),
            ),
            array(
                array(32705432, -1550977, 30705658, 7451065, -11805606, 9631813, 3305266, 5248604, -26008332, -11377501),
                array(17219865, 2375039, -31570947, -5575615, -19459679, 9219903, 294711, 15298639, 2662509, -16297073),
                array(-1172927, -7558695, -4366770, -4287744, -21346413, -8434326, 32087529, -1222777, 32247248, -14389861),
            ),
            array(
                array(14312628, 1221556, 17395390, -8700143, -4945741, -8684635, -28197744, -9637817, -16027623, -13378845),
                array(-1428825, -9678990, -9235681, 6549687, -7383069, -468664, 23046502, 9803137, 17597934, 2346211),
                array(18510800, 15337574, 26171504, 981392, -22241552, 7827556, -23491134, -11323352, 3059833, -11782870),
            ),
            array(
                array(10141598, 6082907, 17829293, -1947643, 9830092, 13613136, -25556636, -5544586, -33502212, 3592096),
                array(33114168, -15889352, -26525686, -13343397, 33076705, 8716171, 1151462, 1521897, -982665, -6837803),
                array(-32939165, -4255815, 23947181, -324178, -33072974, -12305637, -16637686, 3891704, 26353178, 693168),
            ),
            array(
                array(30374239, 1595580, -16884039, 13186931, 4600344, 406904, 9585294, -400668, 31375464, 14369965),
                array(-14370654, -7772529, 1510301, 6434173, -18784789, -6262728, 32732230, -13108839, 17901441, 16011505),
                array(18171223, -11934626, -12500402, 15197122, -11038147, -15230035, -19172240, -16046376, 8764035, 12309598),
            ),
        ),
        array(
            array(
                array(5975908, -5243188, -19459362, -9681747, -11541277, 14015782, -23665757, 1228319, 17544096, -10593782),
                array(5811932, -1715293, 3442887, -2269310, -18367348, -8359541, -18044043, -15410127, -5565381, 12348900),
                array(-31399660, 11407555, 25755363, 6891399, -3256938, 14872274, -24849353, 8141295, -10632534, -585479),
            ),
            array(
                array(-12675304, 694026, -5076145, 13300344, 14015258, -14451394, -9698672, -11329050, 30944593, 1130208),
                array(8247766, -6710942, -26562381, -7709309, -14401939, -14648910, 4652152, 2488540, 23550156, -271232),
                array(17294316, -3788438, 7026748, 15626851, 22990044, 113481, 2267737, -5908146, -408818, -137719),
            ),
            array(
                array(16091085, -16253926, 18599252, 7340678, 2137637, -1221657, -3364161, 14550936, 3260525, -7166271),
                array(-4910104, -13332887, 18550887, 10864893, -16459325, -7291596, -23028869, -13204905, -12748722, 2701326),
                array(-8574695, 16099415, 4629974, -16340524, -20786213, -6005432, -10018363, 9276971, 11329923, 1862132),
            ),
            array(
                array(14763076, -15903608, -30918270, 3689867, 3511892, 10313526, -21951088, 12219231, -9037963, -940300),
                array(8894987, -3446094, 6150753, 3013931, 301220, 15693451, -31981216, -2909717, -15438168, 11595570),
                array(15214962, 3537601, -26238722, -14058872, 4418657, -15230761, 13947276, 10730794, -13489462, -4363670),
            ),
            array(
                array(-2538306, 7682793, 32759013, 263109, -29984731, -7955452, -22332124, -10188635, 977108, 699994),
                array(-12466472, 4195084, -9211532, 550904, -15565337, 12917920, 19118110, -439841, -30534533, -14337913),
                array(31788461, -14507657, 4799989, 7372237, 8808585, -14747943, 9408237, -10051775, 12493932, -5409317),
            ),
            array(
                array(-25680606, 5260744, -19235809, -6284470, -3695942, 16566087, 27218280, 2607121, 29375955, 6024730),
                array(842132, -2794693, -4763381, -8722815, 26332018, -12405641, 11831880, 6985184, -9940361, 2854096),
                array(-4847262, -7969331, 2516242, -5847713, 9695691, -7221186, 16512645, 960770, 12121869, 16648078),
            ),
            array(
                array(-15218652, 14667096, -13336229, 2013717, 30598287, -464137, -31504922, -7882064, 20237806, 2838411),
                array(-19288047, 4453152, 15298546, -16178388, 22115043, -15972604, 12544294, -13470457, 1068881, -12499905),
                array(-9558883, -16518835, 33238498, 13506958, 30505848, -1114596, -8486907, -2630053, 12521378, 4845654),
            ),
            array(
                array(-28198521, 10744108, -2958380, 10199664, 7759311, -13088600, 3409348, -873400, -6482306, -12885870),
                array(-23561822, 6230156, -20382013, 10655314, -24040585, -11621172, 10477734, -1240216, -3113227, 13974498),
                array(12966261, 15550616, -32038948, -1615346, 21025980, -629444, 5642325, 7188737, 18895762, 12629579),
            ),
        ),
        array(
            array(
                array(14741879, -14946887, 22177208, -11721237, 1279741, 8058600, 11758140, 789443, 32195181, 3895677),
                array(10758205, 15755439, -4509950, 9243698, -4879422, 6879879, -2204575, -3566119, -8982069, 4429647),
                array(-2453894, 15725973, -20436342, -10410672, -5803908, -11040220, -7135870, -11642895, 18047436, -15281743),
            ),
            array(
                array(-25173001, -11307165, 29759956, 11776784, -22262383, -15820455, 10993114, -12850837, -17620701, -9408468),
                array(21987233, 700364, -24505048, 14972008, -7774265, -5718395, 32155026, 2581431, -29958985, 8773375),
                array(-25568350, 454463, -13211935, 16126715, 25240068, 8594567, 20656846, 12017935, -7874389, -13920155),
            ),
            array(
                array(6028182, 6263078, -31011806, -11301710, -818919, 2461772, -31841174, -5468042, -1721788, -2776725),
                array(-12278994, 16624277, 987579, -5922598, 32908203, 1248608, 7719845, -4166698, 28408820, 6816612),
                array(-10358094, -8237829, 19549651, -12169222, 22082623, 16147817, 20613181, 13982702, -10339570, 5067943),
            ),
            array(
                array(-30505967, -3821767, 12074681, 13582412, -19877972, 2443951, -19719286, 12746132, 5331210, -10105944),
                array(30528811, 3601899, -1957090, 4619785, -27361822, -15436388, 24180793, -12570394, 27679908, -1648928),
                array(9402404, -13957065, 32834043, 10838634, -26580150, -13237195, 26653274, -8685565, 22611444, -12715406),
            ),
            array(
                array(22190590, 1118029, 22736441, 15130463, -30460692, -5991321, 19189625, -4648942, 4854859, 6622139),
                array(-8310738, -2953450, -8262579, -3388049, -10401731, -271929, 13424426, -3567227, 26404409, 13001963),
                array(-31241838, -15415700, -2994250, 8939346, 11562230, -12840670, -26064365, -11621720, -15405155, 11020693),
            ),
            array(
                array(1866042, -7949489, -7898649, -10301010, 12483315, 13477547, 3175636, -12424163, 28761762, 1406734),
                array(-448555, -1777666, 13018551, 3194501, -9580420, -11161737, 24760585, -4347088, 25577411, -13378680),
                array(-24290378, 4759345, -690653, -1852816, 2066747, 10693769, -29595790, 9884936, -9368926, 4745410),
            ),
            array(
                array(-9141284, 6049714, -19531061, -4341411, -31260798, 9944276, -15462008, -11311852, 10931924, -11931931),
                array(-16561513, 14112680, -8012645, 4817318, -8040464, -11414606, -22853429, 10856641, -20470770, 13434654),
                array(22759489, -10073434, -16766264, -1871422, 13637442, -10168091, 1765144, -12654326, 28445307, -5364710),
            ),
            array(
                array(29875063, 12493613, 2795536, -3786330, 1710620, 15181182, -10195717, -8788675, 9074234, 1167180),
                array(-26205683, 11014233, -9842651, -2635485, -26908120, 7532294, -18716888, -9535498, 3843903, 9367684),
                array(-10969595, -6403711, 9591134, 9582310, 11349256, 108879, 16235123, 8601684, -139197, 4242895),
            ),
        ),
        array(
            array(
                array(22092954, -13191123, -2042793, -11968512, 32186753, -11517388, -6574341, 2470660, -27417366, 16625501),
                array(-11057722, 3042016, 13770083, -9257922, 584236, -544855, -7770857, 2602725, -27351616, 14247413),
                array(6314175, -10264892, -32772502, 15957557, -10157730, 168750, -8618807, 14290061, 27108877, -1180880),
            ),
            array(
                array(-8586597, -7170966, 13241782, 10960156, -32991015, -13794596, 33547976, -11058889, -27148451, 981874),
                array(22833440, 9293594, -32649448, -13618667, -9136966, 14756819, -22928859, -13970780, -10479804, -16197962),
                array(-7768587, 3326786, -28111797, 10783824, 19178761, 14905060, 22680049, 13906969, -15933690, 3797899),
            ),
            array(
                array(21721356, -4212746, -12206123, 9310182, -3882239, -13653110, 23740224, -2709232, 20491983, -8042152),
                array(9209270, -15135055, -13256557, -6167798, -731016, 15289673, 25947805, 15286587, 30997318, -6703063),
                array(7392032, 16618386, 23946583, -8039892, -13265164, -1533858, -14197445, -2321576, 17649998, -250080),
            ),
            array(
                array(-9301088, -14193827, 30609526, -3049543, -25175069, -1283752, -15241566, -9525724, -2233253, 7662146),
                array(-17558673, 1763594, -33114336, 15908610, -30040870, -12174295, 7335080, -8472199, -3174674, 3440183),
                array(-19889700, -5977008, -24111293, -9688870, 10799743, -16571957, 40450, -4431835, 4862400, 1133),
            ),
            array(
                array(-32856209, -7873957, -5422389, 14860950, -16319031, 7956142, 7258061, 311861, -30594991, -7379421),
                array(-3773428, -1565936, 28985340, 7499440, 24445838, 9325937, 29727763, 16527196, 18278453, 15405622),
                array(-4381906, 8508652, -19898366, -3674424, -5984453, 15149970, -13313598, 843523, -21875062, 13626197),
            ),
            array(
                array(2281448, -13487055, -10915418, -2609910, 1879358, 16164207, -10783882, 3953792, 13340839, 15928663),
                array(31727126, -7179855, -18437503, -8283652, 2875793, -16390330, -25269894, -7014826, -23452306, 5964753),
                array(4100420, -5959452, -17179337, 6017714, -18705837, 12227141, -26684835, 11344144, 2538215, -7570755),
            ),
            array(
                array(-9433605, 6123113, 11159803, -2156608, 30016280, 14966241, -20474983, 1485421, -629256, -15958862),
                array(-26804558, 4260919, 11851389, 9658551, -32017107, 16367492, -20205425, -13191288, 11659922, -11115118),
                array(26180396, 10015009, -30844224, -8581293, 5418197, 9480663, 2231568, -10170080, 33100372, -1306171),
            ),
            array(
                array(15121113, -5201871, -10389905, 15427821, -27509937, -15992507, 21670947, 4486675, -5931810, -14466380),
                array(16166486, -9483733, -11104130, 6023908, -31926798, -1364923, 2340060, -16254968, -10735770, -10039824),
                array(28042865, -3557089, -12126526, 12259706, -3717498, -6945899, 6766453, -8689599, 18036436, 5803270),
            ),
        ),
        array(
            array(
                array(-817581, 6763912, 11803561, 1585585, 10958447, -2671165, 23855391, 4598332, -6159431, -14117438),
                array(-31031306, -14256194, 17332029, -2383520, 31312682, -5967183, 696309, 50292, -20095739, 11763584),
                array(-594563, -2514283, -32234153, 12643980, 12650761, 14811489, 665117, -12613632, -19773211, -10713562),
            ),
            array(
                array(30464590, -11262872, -4127476, -12734478, 19835327, -7105613, -24396175, 2075773, -17020157, 992471),
                array(18357185, -6994433, 7766382, 16342475, -29324918, 411174, 14578841, 8080033, -11574335, -10601610),
                array(19598397, 10334610, 12555054, 2555664, 18821899, -10339780, 21873263, 16014234, 26224780, 16452269),
            ),
            array(
                array(-30223925, 5145196, 5944548, 16385966, 3976735, 2009897, -11377804, -7618186, -20533829, 3698650),
                array(14187449, 3448569, -10636236, -10810935, -22663880, -3433596, 7268410, -10890444, 27394301, 12015369),
                array(19695761, 16087646, 28032085, 12999827, 6817792, 11427614, 20244189, -1312777, -13259127, -3402461),
            ),
            array(
                array(30860103, 12735208, -1888245, -4699734, -16974906, 2256940, -8166013, 12298312, -8550524, -10393462),
                array(-5719826, -11245325, -1910649, 15569035, 26642876, -7587760, -5789354, -15118654, -4976164, 12651793),
                array(-2848395, 9953421, 11531313, -5282879, 26895123, -12697089, -13118820, -16517902, 9768698, -2533218),
            ),
            array(
                array(-24719459, 1894651, -287698, -4704085, 15348719, -8156530, 32767513, 12765450, 4940095, 10678226),
                array(18860224, 15980149, -18987240, -1562570, -26233012, -11071856, -7843882, 13944024, -24372348, 16582019),
                array(-15504260, 4970268, -29893044, 4175593, -20993212, -2199756, -11704054, 15444560, -11003761, 7989037),
            ),
            array(
                array(31490452, 5568061, -2412803, 2182383, -32336847, 4531686, -32078269, 6200206, -19686113, -14800171),
                array(-17308668, -15879940, -31522777, -2831, -32887382, 16375549, 8680158, -16371713, 28550068, -6857132),
                array(-28126887, -5688091, 16837845, -1820458, -6850681, 12700016, -30039981, 4364038, 1155602, 5988841),
            ),
            array(
                array(21890435, -13272907, -12624011, 12154349, -7831873, 15300496, 23148983, -4470481, 24618407, 8283181),
                array(-33136107, -10512751, 9975416, 6841041, -31559793, 16356536, 3070187, -7025928, 1466169, 10740210),
                array(-1509399, -15488185, -13503385, -10655916, 32799044, 909394, -13938903, -5779719, -32164649, -15327040),
            ),
            array(
                array(3960823, -14267803, -28026090, -15918051, -19404858, 13146868, 15567327, 951507, -3260321, -573935),
                array(24740841, 5052253, -30094131, 8961361, 25877428, 6165135, -24368180, 14397372, -7380369, -6144105),
                array(-28888365, 3510803, -28103278, -1158478, -11238128, -10631454, -15441463, -14453128, -1625486, -6494814),
            ),
        ),
        array(
            array(
                array(793299, -9230478, 8836302, -6235707, -27360908, -2369593, 33152843, -4885251, -9906200, -621852),
                array(5666233, 525582, 20782575, -8038419, -24538499, 14657740, 16099374, 1468826, -6171428, -15186581),
                array(-4859255, -3779343, -2917758, -6748019, 7778750, 11688288, -30404353, -9871238, -1558923, -9863646),
            ),
            array(
                array(10896332, -7719704, 824275, 472601, -19460308, 3009587, 25248958, 14783338, -30581476, -15757844),
                array(10566929, 12612572, -31944212, 11118703, -12633376, 12362879, 21752402, 8822496, 24003793, 14264025),
                array(27713862, -7355973, -11008240, 9227530, 27050101, 2504721, 23886875, -13117525, 13958495, -5732453),
            ),
            array(
                array(-23481610, 4867226, -27247128, 3900521, 29838369, -8212291, -31889399, -10041781, 7340521, -15410068),
                array(4646514, -8011124, -22766023, -11532654, 23184553, 8566613, 31366726, -1381061, -15066784, -10375192),
                array(-17270517, 12723032, -16993061, 14878794, 21619651, -6197576, 27584817, 3093888, -8843694, 3849921),
            ),
            array(
                array(-9064912, 2103172, 25561640, -15125738, -5239824, 9582958, 32477045, -9017955, 5002294, -15550259),
                array(-12057553, -11177906, 21115585, -13365155, 8808712, -12030708, 16489530, 13378448, -25845716, 12741426),
                array(-5946367, 10645103, -30911586, 15390284, -3286982, -7118677, 24306472, 15852464, 28834118, -7646072),
            ),
            array(
                array(-17335748, -9107057, -24531279, 9434953, -8472084, -583362, -13090771, 455841, 20461858, 5491305),
                array(13669248, -16095482, -12481974, -10203039, -14569770, -11893198, -24995986, 11293807, -28588204, -9421832),
                array(28497928, 6272777, -33022994, 14470570, 8906179, -1225630, 18504674, -14165166, 29867745, -8795943),
            ),
            array(
                array(-16207023, 13517196, -27799630, -13697798, 24009064, -6373891, -6367600, -13175392, 22853429, -4012011),
                array(24191378, 16712145, -13931797, 15217831, 14542237, 1646131, 18603514, -11037887, 12876623, -2112447),
                array(17902668, 4518229, -411702, -2829247, 26878217, 5258055, -12860753, 608397, 16031844, 3723494),
            ),
            array(
                array(-28632773, 12763728, -20446446, 7577504, 33001348, -13017745, 17558842, -7872890, 23896954, -4314245),
                array(-20005381, -12011952, 31520464, 605201, 2543521, 5991821, -2945064, 7229064, -9919646, -8826859),
                array(28816045, 298879, -28165016, -15920938, 19000928, -1665890, -12680833, -2949325, -18051778, -2082915),
            ),
            array(
                array(16000882, -344896, 3493092, -11447198, -29504595, -13159789, 12577740, 16041268, -19715240, 7847707),
                array(10151868, 10572098, 27312476, 7922682, 14825339, 4723128, -32855931, -6519018, -10020567, 3852848),
                array(-11430470, 15697596, -21121557, -4420647, 5386314, 15063598, 16514493, -15932110, 29330899, -15076224),
            ),
        ),
        array(
            array(
                array(-25499735, -4378794, -15222908, -6901211, 16615731, 2051784, 3303702, 15490, -27548796, 12314391),
                array(15683520, -6003043, 18109120, -9980648, 15337968, -5997823, -16717435, 15921866, 16103996, -3731215),
                array(-23169824, -10781249, 13588192, -1628807, -3798557, -1074929, -19273607, 5402699, -29815713, -9841101),
            ),
            array(
                array(23190676, 2384583, -32714340, 3462154, -29903655, -1529132, -11266856, 8911517, -25205859, 2739713),
                array(21374101, -3554250, -33524649, 9874411, 15377179, 11831242, -33529904, 6134907, 4931255, 11987849),
                array(-7732, -2978858, -16223486, 7277597, 105524, -322051, -31480539, 13861388, -30076310, 10117930),
            ),
            array(
                array(-29501170, -10744872, -26163768, 13051539, -25625564, 5089643, -6325503, 6704079, 12890019, 15728940),
                array(-21972360, -11771379, -951059, -4418840, 14704840, 2695116, 903376, -10428139, 12885167, 8311031),
                array(-17516482, 5352194, 10384213, -13811658, 7506451, 13453191, 26423267, 4384730, 1888765, -5435404),
            ),
            array(
                array(-25817338, -3107312, -13494599, -3182506, 30896459, -13921729, -32251644, -12707869, -19464434, -3340243),
                array(-23607977, -2665774, -526091, 4651136, 5765089, 4618330, 6092245, 14845197, 17151279, -9854116),
                array(-24830458, -12733720, -15165978, 10367250, -29530908, -265356, 22825805, -7087279, -16866484, 16176525),
            ),
            array(
                array(-23583256, 6564961, 20063689, 3798228, -4740178, 7359225, 2006182, -10363426, -28746253, -10197509),
                array(-10626600, -4486402, -13320562, -5125317, 3432136, -6393229, 23632037, -1940610, 32808310, 1099883),
                array(15030977, 5768825, -27451236, -2887299, -6427378, -15361371, -15277896, -6809350, 2051441, -15225865),
            ),
            array(
                array(-3362323, -7239372, 7517890, 9824992, 23555850, 295369, 5148398, -14154188, -22686354, 16633660),
                array(4577086, -16752288, 13249841, -15304328, 19958763, -14537274, 18559670, -10759549, 8402478, -9864273),
                array(-28406330, -1051581, -26790155, -907698, -17212414, -11030789, 9453451, -14980072, 17983010, 9967138),
            ),
            array(
                array(-25762494, 6524722, 26585488, 9969270, 24709298, 1220360, -1677990, 7806337, 17507396, 3651560),
                array(-10420457, -4118111, 14584639, 15971087, -15768321, 8861010, 26556809, -5574557, -18553322, -11357135),
                array(2839101, 14284142, 4029895, 3472686, 14402957, 12689363, -26642121, 8459447, -5605463, -7621941),
            ),
            array(
                array(-4839289, -3535444, 9744961, 2871048, 25113978, 3187018, -25110813, -849066, 17258084, -7977739),
                array(18164541, -10595176, -17154882, -1542417, 19237078, -9745295, 23357533, -15217008, 26908270, 12150756),
                array(-30264870, -7647865, 5112249, -7036672, -1499807, -6974257, 43168, -5537701, -32302074, 16215819),
            ),
        ),
        array(
            array(
                array(-6898905, 9824394, -12304779, -4401089, -31397141, -6276835, 32574489, 12532905, -7503072, -8675347),
                array(-27343522, -16515468, -27151524, -10722951, 946346, 16291093, 254968, 7168080, 21676107, -1943028),
                array(21260961, -8424752, -16831886, -11920822, -23677961, 3968121, -3651949, -6215466, -3556191, -7913075),
            ),
            array(
                array(16544754, 13250366, -16804428, 15546242, -4583003, 12757258, -2462308, -8680336, -18907032, -9662799),
                array(-2415239, -15577728, 18312303, 4964443, -15272530, -12653564, 26820651, 16690659, 25459437, -4564609),
                array(-25144690, 11425020, 28423002, -11020557, -6144921, -15826224, 9142795, -2391602, -6432418, -1644817),
            ),
            array(
                array(-23104652, 6253476, 16964147, -3768872, -25113972, -12296437, -27457225, -16344658, 6335692, 7249989),
                array(-30333227, 13979675, 7503222, -12368314, -11956721, -4621693, -30272269, 2682242, 25993170, -12478523),
                array(4364628, 5930691, 32304656, -10044554, -8054781, 15091131, 22857016, -10598955, 31820368, 15075278),
            ),
            array(
                array(31879134, -8918693, 17258761, 90626, -8041836, -4917709, 24162788, -9650886, -17970238, 12833045),
                array(19073683, 14851414, -24403169, -11860168, 7625278, 11091125, -19619190, 2074449, -9413939, 14905377),
                array(24483667, -11935567, -2518866, -11547418, -1553130, 15355506, -25282080, 9253129, 27628530, -7555480),
            ),
            array(
                array(17597607, 8340603, 19355617, 552187, 26198470, -3176583, 4593324, -9157582, -14110875, 15297016),
                array(510886, 14337390, -31785257, 16638632, 6328095, 2713355, -20217417, -11864220, 8683221, 2921426),
                array(18606791, 11874196, 27155355, -5281482, -24031742, 6265446, -25178240, -1278924, 4674690, 13890525),
            ),
            array(
                array(13609624, 13069022, -27372361, -13055908, 24360586, 9592974, 14977157, 9835105, 4389687, 288396),
                array(9922506, -519394, 13613107, 5883594, -18758345, -434263, -12304062, 8317628, 23388070, 16052080),
                array(12720016, 11937594, -31970060, -5028689, 26900120, 8561328, -20155687, -11632979, -14754271, -10812892),
            ),
            array(
                array(15961858, 14150409, 26716931, -665832, -22794328, 13603569, 11829573, 7467844, -28822128, 929275),
                array(11038231, -11582396, -27310482, -7316562, -10498527, -16307831, -23479533, -9371869, -21393143, 2465074),
                array(20017163, -4323226, 27915242, 1529148, 12396362, 15675764, 13817261, -9658066, 2463391, -4622140),
            ),
            array(
                array(-16358878, -12663911, -12065183, 4996454, -1256422, 1073572, 9583558, 12851107, 4003896, 12673717),
                array(-1731589, -15155870, -3262930, 16143082, 19294135, 13385325, 14741514, -9103726, 7903886, 2348101),
                array(24536016, -16515207, 12715592, -3862155, 1511293, 10047386, -3842346, -7129159, -28377538, 10048127),
            ),
        ),
        array(
            array(
                array(-12622226, -6204820, 30718825, 2591312, -10617028, 12192840, 18873298, -7297090, -32297756, 15221632),
                array(-26478122, -11103864, 11546244, -1852483, 9180880, 7656409, -21343950, 2095755, 29769758, 6593415),
                array(-31994208, -2907461, 4176912, 3264766, 12538965, -868111, 26312345, -6118678, 30958054, 8292160),
            ),
            array(
                array(31429822, -13959116, 29173532, 15632448, 12174511, -2760094, 32808831, 3977186, 26143136, -3148876),
                array(22648901, 1402143, -22799984, 13746059, 7936347, 365344, -8668633, -1674433, -3758243, -2304625),
                array(-15491917, 8012313, -2514730, -12702462, -23965846, -10254029, -1612713, -1535569, -16664475, 8194478),
            ),
            array(
                array(27338066, -7507420, -7414224, 10140405, -19026427, -6589889, 27277191, 8855376, 28572286, 3005164),
                array(26287124, 4821776, 25476601, -4145903, -3764513, -15788984, -18008582, 1182479, -26094821, -13079595),
                array(-7171154, 3178080, 23970071, 6201893, -17195577, -4489192, -21876275, -13982627, 32208683, -1198248),
            ),
            array(
                array(-16657702, 2817643, -10286362, 14811298, 6024667, 13349505, -27315504, -10497842, -27672585, -11539858),
                array(15941029, -9405932, -21367050, 8062055, 31876073, -238629, -15278393, -1444429, 15397331, -4130193),
                array(8934485, -13485467, -23286397, -13423241, -32446090, 14047986, 31170398, -1441021, -27505566, 15087184),
            ),
            array(
                array(-18357243, -2156491, 24524913, -16677868, 15520427, -6360776, -15502406, 11461896, 16788528, -5868942),
                array(-1947386, 16013773, 21750665, 3714552, -17401782, -16055433, -3770287, -10323320, 31322514, -11615635),
                array(21426655, -5650218, -13648287, -5347537, -28812189, -4920970, -18275391, -14621414, 13040862, -12112948),
            ),
            array(
                array(11293895, 12478086, -27136401, 15083750, -29307421, 14748872, 14555558, -13417103, 1613711, 4896935),
                array(-25894883, 15323294, -8489791, -8057900, 25967126, -13425460, 2825960, -4897045, -23971776, -11267415),
                array(-15924766, -5229880, -17443532, 6410664, 3622847, 10243618, 20615400, 12405433, -23753030, -8436416),
            ),
            array(
                array(-7091295, 12556208, -20191352, 9025187, -17072479, 4333801, 4378436, 2432030, 23097949, -566018),
                array(4565804, -16025654, 20084412, -7842817, 1724999, 189254, 24767264, 10103221, -18512313, 2424778),
                array(366633, -11976806, 8173090, -6890119, 30788634, 5745705, -7168678, 1344109, -3642553, 12412659),
            ),
            array(
                array(-24001791, 7690286, 14929416, -168257, -32210835, -13412986, 24162697, -15326504, -3141501, 11179385),
                array(18289522, -14724954, 8056945, 16430056, -21729724, 7842514, -6001441, -1486897, -18684645, -11443503),
                array(476239, 6601091, -6152790, -9723375, 17503545, -4863900, 27672959, 13403813, 11052904, 5219329),
            ),
        ),
        array(
            array(
                array(20678546, -8375738, -32671898, 8849123, -5009758, 14574752, 31186971, -3973730, 9014762, -8579056),
                array(-13644050, -10350239, -15962508, 5075808, -1514661, -11534600, -33102500, 9160280, 8473550, -3256838),
                array(24900749, 14435722, 17209120, -15292541, -22592275, 9878983, -7689309, -16335821, -24568481, 11788948),
            ),
            array(
                array(-3118155, -11395194, -13802089, 14797441, 9652448, -6845904, -20037437, 10410733, -24568470, -1458691),
                array(-15659161, 16736706, -22467150, 10215878, -9097177, 7563911, 11871841, -12505194, -18513325, 8464118),
                array(-23400612, 8348507, -14585951, -861714, -3950205, -6373419, 14325289, 8628612, 33313881, -8370517),
            ),
            array(
                array(-20186973, -4967935, 22367356, 5271547, -1097117, -4788838, -24805667, -10236854, -8940735, -5818269),
                array(-6948785, -1795212, -32625683, -16021179, 32635414, -7374245, 15989197, -12838188, 28358192, -4253904),
                array(-23561781, -2799059, -32351682, -1661963, -9147719, 10429267, -16637684, 4072016, -5351664, 5596589),
            ),
            array(
                array(-28236598, -3390048, 12312896, 6213178, 3117142, 16078565, 29266239, 2557221, 1768301, 15373193),
                array(-7243358, -3246960, -4593467, -7553353, -127927, -912245, -1090902, -4504991, -24660491, 3442910),
                array(-30210571, 5124043, 14181784, 8197961, 18964734, -11939093, 22597931, 7176455, -18585478, 13365930),
            ),
            array(
                array(-7877390, -1499958, 8324673, 4690079, 6261860, 890446, 24538107, -8570186, -9689599, -3031667),
                array(25008904, -10771599, -4305031, -9638010, 16265036, 15721635, 683793, -11823784, 15723479, -15163481),
                array(-9660625, 12374379, -27006999, -7026148, -7724114, -12314514, 11879682, 5400171, 519526, -1235876),
            ),
            array(
                array(22258397, -16332233, -7869817, 14613016, -22520255, -2950923, -20353881, 7315967, 16648397, 7605640),
                array(-8081308, -8464597, -8223311, 9719710, 19259459, -15348212, 23994942, -5281555, -9468848, 4763278),
                array(-21699244, 9220969, -15730624, 1084137, -25476107, -2852390, 31088447, -7764523, -11356529, 728112),
            ),
            array(
                array(26047220, -11751471, -6900323, -16521798, 24092068, 9158119, -4273545, -12555558, -29365436, -5498272),
                array(17510331, -322857, 5854289, 8403524, 17133918, -3112612, -28111007, 12327945, 10750447, 10014012),
                array(-10312768, 3936952, 9156313, -8897683, 16498692, -994647, -27481051, -666732, 3424691, 7540221),
            ),
            array(
                array(30322361, -6964110, 11361005, -4143317, 7433304, 4989748, -7071422, -16317219, -9244265, 15258046),
                array(13054562, -2779497, 19155474, 469045, -12482797, 4566042, 5631406, 2711395, 1062915, -5136345),
                array(-19240248, -11254599, -29509029, -7499965, -5835763, 13005411, -6066489, 12194497, 32960380, 1459310),
            ),
        ),
        array(
            array(
                array(19852034, 7027924, 23669353, 10020366, 8586503, -6657907, 394197, -6101885, 18638003, -11174937),
                array(31395534, 15098109, 26581030, 8030562, -16527914, -5007134, 9012486, -7584354, -6643087, -5442636),
                array(-9192165, -2347377, -1997099, 4529534, 25766844, 607986, -13222, 9677543, -32294889, -6456008),
            ),
            array(
                array(-2444496, -149937, 29348902, 8186665, 1873760, 12489863, -30934579, -7839692, -7852844, -8138429),
                array(-15236356, -15433509, 7766470, 746860, 26346930, -10221762, -27333451, 10754588, -9431476, 5203576),
                array(31834314, 14135496, -770007, 5159118, 20917671, -16768096, -7467973, -7337524, 31809243, 7347066),
            ),
            array(
                array(-9606723, -11874240, 20414459, 13033986, 13716524, -11691881, 19797970, -12211255, 15192876, -2087490),
                array(-12663563, -2181719, 1168162, -3804809, 26747877, -14138091, 10609330, 12694420, 33473243, -13382104),
                array(33184999, 11180355, 15832085, -11385430, -1633671, 225884, 15089336, -11023903, -6135662, 14480053),
            ),
            array(
                array(31308717, -5619998, 31030840, -1897099, 15674547, -6582883, 5496208, 13685227, 27595050, 8737275),
                array(-20318852, -15150239, 10933843, -16178022, 8335352, -7546022, -31008351, -12610604, 26498114, 66511),
                array(22644454, -8761729, -16671776, 4884562, -3105614, -13559366, 30540766, -4286747, -13327787, -7515095),
            ),
            array(
                array(-28017847, 9834845, 18617207, -2681312, -3401956, -13307506, 8205540, 13585437, -17127465, 15115439),
                array(23711543, -672915, 31206561, -8362711, 6164647, -9709987, -33535882, -1426096, 8236921, 16492939),
                array(-23910559, -13515526, -26299483, -4503841, 25005590, -7687270, 19574902, 10071562, 6708380, -6222424),
            ),
            array(
                array(2101391, -4930054, 19702731, 2367575, -15427167, 1047675, 5301017, 9328700, 29955601, -11678310),
                array(3096359, 9271816, -21620864, -15521844, -14847996, -7592937, -25892142, -12635595, -9917575, 6216608),
                array(-32615849, 338663, -25195611, 2510422, -29213566, -13820213, 24822830, -6146567, -26767480, 7525079),
            ),
            array(
                array(-23066649, -13985623, 16133487, -7896178, -3389565, 778788, -910336, -2782495, -19386633, 11994101),
                array(21691500, -13624626, -641331, -14367021, 3285881, -3483596, -25064666, 9718258, -7477437, 13381418),
                array(18445390, -4202236, 14979846, 11622458, -1727110, -3582980, 23111648, -6375247, 28535282, 15779576),
            ),
            array(
                array(30098053, 3089662, -9234387, 16662135, -21306940, 11308411, -14068454, 12021730, 9955285, -16303356),
                array(9734894, -14576830, -7473633, -9138735, 2060392, 11313496, -18426029, 9924399, 20194861, 13380996),
                array(-26378102, -7965207, -22167821, 15789297, -18055342, -6168792, -1984914, 15707771, 26342023, 10146099),
            ),
        ),
        array(
            array(
                array(-26016874, -219943, 21339191, -41388, 19745256, -2878700, -29637280, 2227040, 21612326, -545728),
                array(-13077387, 1184228, 23562814, -5970442, -20351244, -6348714, 25764461, 12243797, -20856566, 11649658),
                array(-10031494, 11262626, 27384172, 2271902, 26947504, -15997771, 39944, 6114064, 33514190, 2333242),
            ),
            array(
                array(-21433588, -12421821, 8119782, 7219913, -21830522, -9016134, -6679750, -12670638, 24350578, -13450001),
                array(-4116307, -11271533, -23886186, 4843615, -30088339, 690623, -31536088, -10406836, 8317860, 12352766),
                array(18200138, -14475911, -33087759, -2696619, -23702521, -9102511, -23552096, -2287550, 20712163, 6719373),
            ),
            array(
                array(26656208, 6075253, -7858556, 1886072, -28344043, 4262326, 11117530, -3763210, 26224235, -3297458),
                array(-17168938, -14854097, -3395676, -16369877, -19954045, 14050420, 21728352, 9493610, 18620611, -16428628),
                array(-13323321, 13325349, 11432106, 5964811, 18609221, 6062965, -5269471, -9725556, -30701573, -16479657),
            ),
            array(
                array(-23860538, -11233159, 26961357, 1640861, -32413112, -16737940, 12248509, -5240639, 13735342, 1934062),
                array(25089769, 6742589, 17081145, -13406266, 21909293, -16067981, -15136294, -3765346, -21277997, 5473616),
                array(31883677, -7961101, 1083432, -11572403, 22828471, 13290673, -7125085, 12469656, 29111212, -5451014),
            ),
            array(
                array(24244947, -15050407, -26262976, 2791540, -14997599, 16666678, 24367466, 6388839, -10295587, 452383),
                array(-25640782, -3417841, 5217916, 16224624, 19987036, -4082269, -24236251, -5915248, 15766062, 8407814),
                array(-20406999, 13990231, 15495425, 16395525, 5377168, 15166495, -8917023, -4388953, -8067909, 2276718),
            ),
            array(
                array(30157918, 12924066, -17712050, 9245753, 19895028, 3368142, -23827587, 5096219, 22740376, -7303417),
                array(2041139, -14256350, 7783687, 13876377, -25946985, -13352459, 24051124, 13742383, -15637599, 13295222),
                array(33338237, -8505733, 12532113, 7977527, 9106186, -1715251, -17720195, -4612972, -4451357, -14669444),
            ),
            array(
                array(-20045281, 5454097, -14346548, 6447146, 28862071, 1883651, -2469266, -4141880, 7770569, 9620597),
                array(23208068, 7979712, 33071466, 8149229, 1758231, -10834995, 30945528, -1694323, -33502340, -14767970),
                array(1439958, -16270480, -1079989, -793782, 4625402, 10647766, -5043801, 1220118, 30494170, -11440799),
            ),
            array(
                array(-5037580, -13028295, -2970559, -3061767, 15640974, -6701666, -26739026, 926050, -1684339, -13333647),
                array(13908495, -3549272, 30919928, -6273825, -21521863, 7989039, 9021034, 9078865, 3353509, 4033511),
                array(-29663431, -15113610, 32259991, -344482, 24295849, -12912123, 23161163, 8839127, 27485041, 7356032),
            ),
        ),
        array(
            array(
                array(9661027, 705443, 11980065, -5370154, -1628543, 14661173, -6346142, 2625015, 28431036, -16771834),
                array(-23839233, -8311415, -25945511, 7480958, -17681669, -8354183, -22545972, 14150565, 15970762, 4099461),
                array(29262576, 16756590, 26350592, -8793563, 8529671, -11208050, 13617293, -9937143, 11465739, 8317062),
            ),
            array(
                array(-25493081, -6962928, 32500200, -9419051, -23038724, -2302222, 14898637, 3848455, 20969334, -5157516),
                array(-20384450, -14347713, -18336405, 13884722, -33039454, 2842114, -21610826, -3649888, 11177095, 14989547),
                array(-24496721, -11716016, 16959896, 2278463, 12066309, 10137771, 13515641, 2581286, -28487508, 9930240),
            ),
            array(
                array(-17751622, -2097826, 16544300, -13009300, -15914807, -14949081, 18345767, -13403753, 16291481, -5314038),
                array(-33229194, 2553288, 32678213, 9875984, 8534129, 6889387, -9676774, 6957617, 4368891, 9788741),
                array(16660756, 7281060, -10830758, 12911820, 20108584, -8101676, -21722536, -8613148, 16250552, -11111103),
            ),
            array(
                array(-19765507, 2390526, -16551031, 14161980, 1905286, 6414907, 4689584, 10604807, -30190403, 4782747),
                array(-1354539, 14736941, -7367442, -13292886, 7710542, -14155590, -9981571, 4383045, 22546403, 437323),
                array(31665577, -12180464, -16186830, 1491339, -18368625, 3294682, 27343084, 2786261, -30633590, -14097016),
            ),
            array(
                array(-14467279, -683715, -33374107, 7448552, 19294360, 14334329, -19690631, 2355319, -19284671, -6114373),
                array(15121312, -15796162, 6377020, -6031361, -10798111, -12957845, 18952177, 15496498, -29380133, 11754228),
                array(-2637277, -13483075, 8488727, -14303896, 12728761, -1622493, 7141596, 11724556, 22761615, -10134141),
            ),
            array(
                array(16918416, 11729663, -18083579, 3022987, -31015732, -13339659, -28741185, -12227393, 32851222, 11717399),
                array(11166634, 7338049, -6722523, 4531520, -29468672, -7302055, 31474879, 3483633, -1193175, -4030831),
                array(-185635, 9921305, 31456609, -13536438, -12013818, 13348923, 33142652, 6546660, -19985279, -3948376),
            ),
            array(
                array(-32460596, 11266712, -11197107, -7899103, 31703694, 3855903, -8537131, -12833048, -30772034, -15486313),
                array(-18006477, 12709068, 3991746, -6479188, -21491523, -10550425, -31135347, -16049879, 10928917, 3011958),
                array(-6957757, -15594337, 31696059, 334240, 29576716, 14796075, -30831056, -12805180, 18008031, 10258577),
            ),
            array(
                array(-22448644, 15655569, 7018479, -4410003, -30314266, -1201591, -1853465, 1367120, 25127874, 6671743),
                array(29701166, -14373934, -10878120, 9279288, -17568, 13127210, 21382910, 11042292, 25838796, 4642684),
                array(-20430234, 14955537, -24126347, 8124619, -5369288, -5990470, 30468147, -13900640, 18423289, 4177476),
            ),
        )
    );

    /**
     * See: libsodium's crypto_core/curve25519/ref10/base2.h
     *
     * @var array<int, array<int, array<int, int>>> basically int[8][3]
     */
    protected static $base2 = array(
        array(
            array(25967493, -14356035, 29566456, 3660896, -12694345, 4014787, 27544626, -11754271, -6079156, 2047605),
            array(-12545711, 934262, -2722910, 3049990, -727428, 9406986, 12720692, 5043384, 19500929, -15469378),
            array(-8738181, 4489570, 9688441, -14785194, 10184609, -12363380, 29287919, 11864899, -24514362, -4438546),
        ),
        array(
            array(15636291, -9688557, 24204773, -7912398, 616977, -16685262, 27787600, -14772189, 28944400, -1550024),
            array(16568933, 4717097, -11556148, -1102322, 15682896, -11807043, 16354577, -11775962, 7689662, 11199574),
            array(30464156, -5976125, -11779434, -15670865, 23220365, 15915852, 7512774, 10017326, -17749093, -9920357),
        ),
        array(
            array(10861363, 11473154, 27284546, 1981175, -30064349, 12577861, 32867885, 14515107, -15438304, 10819380),
            array(4708026, 6336745, 20377586, 9066809, -11272109, 6594696, -25653668, 12483688, -12668491, 5581306),
            array(19563160, 16186464, -29386857, 4097519, 10237984, -4348115, 28542350, 13850243, -23678021, -15815942),
        ),
        array(
            array(5153746, 9909285, 1723747, -2777874, 30523605, 5516873, 19480852, 5230134, -23952439, -15175766),
            array(-30269007, -3463509, 7665486, 10083793, 28475525, 1649722, 20654025, 16520125, 30598449, 7715701),
            array(28881845, 14381568, 9657904, 3680757, -20181635, 7843316, -31400660, 1370708, 29794553, -1409300),
        ),
        array(
            array(-22518993, -6692182, 14201702, -8745502, -23510406, 8844726, 18474211, -1361450, -13062696, 13821877),
            array(-6455177, -7839871, 3374702, -4740862, -27098617, -10571707, 31655028, -7212327, 18853322, -14220951),
            array(4566830, -12963868, -28974889, -12240689, -7602672, -2830569, -8514358, -10431137, 2207753, -3209784),
        ),
        array(
            array(-25154831, -4185821, 29681144, 7868801, -6854661, -9423865, -12437364, -663000, -31111463, -16132436),
            array(25576264, -2703214, 7349804, -11814844, 16472782, 9300885, 3844789, 15725684, 171356, 6466918),
            array(23103977, 13316479, 9739013, -16149481, 817875, -15038942, 8965339, -14088058, -30714912, 16193877),
        ),
        array(
            array(-33521811, 3180713, -2394130, 14003687, -16903474, -16270840, 17238398, 4729455, -18074513, 9256800),
            array(-25182317, -4174131, 32336398, 5036987, -21236817, 11360617, 22616405, 9761698, -19827198, 630305),
            array(-13720693, 2639453, -24237460, -7406481, 9494427, -5774029, -6554551, -15960994, -2449256, -14291300),
        ),
        array(
            array(-3151181, -5046075, 9282714, 6866145, -31907062, -863023, -18940575, 15033784, 25105118, -7894876),
            array(-24326370, 15950226, -31801215, -14592823, -11662737, -5090925, 1573892, -2625887, 2198790, -15804619),
            array(-3099351, 10324967, -2241613, 7453183, -5446979, -2735503, -13812022, -16236442, -32461234, -12290683),
        )
    );

    /**
     * 37095705934669439343138083508754565189542113879843219016388785533085940283555
     *
     * @var array<int, int>
     */
    protected static $d = array(
        -10913610,
        13857413,
        -15372611,
        6949391,
        114729,
        -8787816,
        -6275908,
        -3247719,
        -18696448,
        -12055116
    );

    /**
     * 2 * d = 16295367250680780974490674513165176452449235426866156013048779062215315747161
     *
     * @var array<int, int>
     */
    protected static $d2 = array(
        -21827239,
        -5839606,
        -30745221,
        13898782,
        229458,
        15978800,
        -12551817,
        -6495438,
        29715968,
        9444199
    );

    /**
     * sqrt(-1)
     *
     * @var array<int, int>
     */
    protected static $sqrtm1 = array(
        -32595792,
        -7943725,
        9377950,
        3500415,
        12389472,
        -272473,
        -25146209,
        -2005654,
        326686,
        11406482
    );
}
crypto/vendor/paragonie/sodium_compat/src/Core32/Curve25519/Ge/Cached.php000064400000003510150755146460021736 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1


if (class_exists('ParagonIE_Sodium_Core32_Curve25519_Ge_Cached', false)) {
    return;
}
/**
 * Class ParagonIE_Sodium_Core32_Curve25519_Ge_Cached
 */
class ParagonIE_Sodium_Core32_Curve25519_Ge_Cached
{
    /**
     * @var ParagonIE_Sodium_Core32_Curve25519_Fe
     */
    public $YplusX;

    /**
     * @var ParagonIE_Sodium_Core32_Curve25519_Fe
     */
    public $YminusX;

    /**
     * @var ParagonIE_Sodium_Core32_Curve25519_Fe
     */
    public $Z;

    /**
     * @var ParagonIE_Sodium_Core32_Curve25519_Fe
     */
    public $T2d;

    /**
     * ParagonIE_Sodium_Core32_Curve25519_Ge_Cached constructor.
     *
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core32_Curve25519_Fe|null $YplusX
     * @param ParagonIE_Sodium_Core32_Curve25519_Fe|null $YminusX
     * @param ParagonIE_Sodium_Core32_Curve25519_Fe|null $Z
     * @param ParagonIE_Sodium_Core32_Curve25519_Fe|null $T2d
     */
    public function __construct(
        ParagonIE_Sodium_Core32_Curve25519_Fe $YplusX = null,
        ParagonIE_Sodium_Core32_Curve25519_Fe $YminusX = null,
        ParagonIE_Sodium_Core32_Curve25519_Fe $Z = null,
        ParagonIE_Sodium_Core32_Curve25519_Fe $T2d = null
    ) {
        if ($YplusX === null) {
            $YplusX = new ParagonIE_Sodium_Core32_Curve25519_Fe();
        }
        $this->YplusX = $YplusX;
        if ($YminusX === null) {
            $YminusX = new ParagonIE_Sodium_Core32_Curve25519_Fe();
        }
        $this->YminusX = $YminusX;
        if ($Z === null) {
            $Z = new ParagonIE_Sodium_Core32_Curve25519_Fe();
        }
        $this->Z = $Z;
        if ($T2d === null) {
            $T2d = new ParagonIE_Sodium_Core32_Curve25519_Fe();
        }
        $this->T2d = $T2d;
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core32/Curve25519/Ge/P1p1.php000064400000003437150755146460021320 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1', false)) {
    return;
}
/**
 * Class ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1
 */
class ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1
{
    /**
     * @var ParagonIE_Sodium_Core32_Curve25519_Fe
     */
    public $X;

    /**
     * @var ParagonIE_Sodium_Core32_Curve25519_Fe
     */
    public $Y;

    /**
     * @var ParagonIE_Sodium_Core32_Curve25519_Fe
     */
    public $Z;

    /**
     * @var ParagonIE_Sodium_Core32_Curve25519_Fe
     */
    public $T;

    /**
     * ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1 constructor.
     *
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core32_Curve25519_Fe|null $x
     * @param ParagonIE_Sodium_Core32_Curve25519_Fe|null $y
     * @param ParagonIE_Sodium_Core32_Curve25519_Fe|null $z
     * @param ParagonIE_Sodium_Core32_Curve25519_Fe|null $t
     *
     * @throws SodiumException
     * @throws TypeError
     */
    public function __construct(
        ParagonIE_Sodium_Core32_Curve25519_Fe $x = null,
        ParagonIE_Sodium_Core32_Curve25519_Fe $y = null,
        ParagonIE_Sodium_Core32_Curve25519_Fe $z = null,
        ParagonIE_Sodium_Core32_Curve25519_Fe $t = null
    ) {
        if ($x === null) {
            $x = ParagonIE_Sodium_Core32_Curve25519::fe_0();
        }
        $this->X = $x;
        if ($y === null) {
            $y = ParagonIE_Sodium_Core32_Curve25519::fe_0();
        }
        $this->Y = $y;
        if ($z === null) {
            $z = ParagonIE_Sodium_Core32_Curve25519::fe_0();
        }
        $this->Z = $z;
        if ($t === null) {
            $t = ParagonIE_Sodium_Core32_Curve25519::fe_0();
        }
        $this->T = $t;
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core32/Curve25519/Ge/P2.php000064400000002634150755146460021056 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Core32_Curve25519_Ge_P2', false)) {
    return;
}

/**
 * Class ParagonIE_Sodium_Core32_Curve25519_Ge_P2
 */
class ParagonIE_Sodium_Core32_Curve25519_Ge_P2
{
    /**
     * @var ParagonIE_Sodium_Core32_Curve25519_Fe
     */
    public $X;

    /**
     * @var ParagonIE_Sodium_Core32_Curve25519_Fe
     */
    public $Y;

    /**
     * @var ParagonIE_Sodium_Core32_Curve25519_Fe
     */
    public $Z;

    /**
     * ParagonIE_Sodium_Core32_Curve25519_Ge_P2 constructor.
     *
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core32_Curve25519_Fe|null $x
     * @param ParagonIE_Sodium_Core32_Curve25519_Fe|null $y
     * @param ParagonIE_Sodium_Core32_Curve25519_Fe|null $z
     */
    public function __construct(
        ParagonIE_Sodium_Core32_Curve25519_Fe $x = null,
        ParagonIE_Sodium_Core32_Curve25519_Fe $y = null,
        ParagonIE_Sodium_Core32_Curve25519_Fe $z = null
    ) {
        if ($x === null) {
            $x = new ParagonIE_Sodium_Core32_Curve25519_Fe();
        }
        $this->X = $x;
        if ($y === null) {
            $y = new ParagonIE_Sodium_Core32_Curve25519_Fe();
        }
        $this->Y = $y;
        if ($z === null) {
            $z = new ParagonIE_Sodium_Core32_Curve25519_Fe();
        }
        $this->Z = $z;
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core32/Curve25519/Ge/P3.php000064400000003335150755146460021056 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Core32_Curve25519_Ge_P3', false)) {
    return;
}

/**
 * Class ParagonIE_Sodium_Core32_Curve25519_Ge_P3
 */
class ParagonIE_Sodium_Core32_Curve25519_Ge_P3
{
    /**
     * @var ParagonIE_Sodium_Core32_Curve25519_Fe
     */
    public $X;

    /**
     * @var ParagonIE_Sodium_Core32_Curve25519_Fe
     */
    public $Y;

    /**
     * @var ParagonIE_Sodium_Core32_Curve25519_Fe
     */
    public $Z;

    /**
     * @var ParagonIE_Sodium_Core32_Curve25519_Fe
     */
    public $T;

    /**
     * ParagonIE_Sodium_Core32_Curve25519_Ge_P3 constructor.
     *
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core32_Curve25519_Fe|null $x
     * @param ParagonIE_Sodium_Core32_Curve25519_Fe|null $y
     * @param ParagonIE_Sodium_Core32_Curve25519_Fe|null $z
     * @param ParagonIE_Sodium_Core32_Curve25519_Fe|null $t
     */
    public function __construct(
        ParagonIE_Sodium_Core32_Curve25519_Fe $x = null,
        ParagonIE_Sodium_Core32_Curve25519_Fe $y = null,
        ParagonIE_Sodium_Core32_Curve25519_Fe $z = null,
        ParagonIE_Sodium_Core32_Curve25519_Fe $t = null
    ) {
        if ($x === null) {
            $x = new ParagonIE_Sodium_Core32_Curve25519_Fe();
        }
        $this->X = $x;
        if ($y === null) {
            $y = new ParagonIE_Sodium_Core32_Curve25519_Fe();
        }
        $this->Y = $y;
        if ($z === null) {
            $z = new ParagonIE_Sodium_Core32_Curve25519_Fe();
        }
        $this->Z = $z;
        if ($t === null) {
            $t = new ParagonIE_Sodium_Core32_Curve25519_Fe();
        }
        $this->T = $t;
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core32/Curve25519/Ge/Precomp.php000064400000003070150755146460022175 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp', false)) {
    return;
}

/**
 * Class ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp
 */
class ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp
{
    /**
     * @var ParagonIE_Sodium_Core32_Curve25519_Fe
     */
    public $yplusx;

    /**
     * @var ParagonIE_Sodium_Core32_Curve25519_Fe
     */
    public $yminusx;

    /**
     * @var ParagonIE_Sodium_Core32_Curve25519_Fe
     */
    public $xy2d;

    /**
     * ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp constructor.
     *
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $yplusx
     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $yminusx
     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $xy2d
     * @throws SodiumException
     * @throws TypeError
     */
    public function __construct(
        ParagonIE_Sodium_Core32_Curve25519_Fe $yplusx = null,
        ParagonIE_Sodium_Core32_Curve25519_Fe $yminusx = null,
        ParagonIE_Sodium_Core32_Curve25519_Fe $xy2d = null
    ) {
        if ($yplusx === null) {
            $yplusx = ParagonIE_Sodium_Core32_Curve25519::fe_0();
        }
        $this->yplusx = $yplusx;
        if ($yminusx === null) {
            $yminusx = ParagonIE_Sodium_Core32_Curve25519::fe_0();
        }
        $this->yminusx = $yminusx;
        if ($xy2d === null) {
            $xy2d = ParagonIE_Sodium_Core32_Curve25519::fe_0();
        }
        $this->xy2d = $xy2d;
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core32/Curve25519/Fe.php000064400000012665150755146460020601 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Core32_Curve25519_Fe', false)) {
    return;
}

/**
 * Class ParagonIE_Sodium_Core32_Curve25519_Fe
 *
 * This represents a Field Element
 */
class ParagonIE_Sodium_Core32_Curve25519_Fe implements ArrayAccess
{
    /**
     * @var array<int, ParagonIE_Sodium_Core32_Int32>
     */
    protected $container = array();

    /**
     * @var int
     */
    protected $size = 10;

    /**
     * @internal You should not use this directly from another application
     *
     * @param array<int, ParagonIE_Sodium_Core32_Int32> $array
     * @param bool $save_indexes
     * @return self
     * @throws SodiumException
     * @throws TypeError
     */
    public static function fromArray($array, $save_indexes = null)
    {
        $count = count($array);
        if ($save_indexes) {
            $keys = array_keys($array);
        } else {
            $keys = range(0, $count - 1);
        }
        $array = array_values($array);

        $obj = new ParagonIE_Sodium_Core32_Curve25519_Fe();
        if ($save_indexes) {
            for ($i = 0; $i < $count; ++$i) {
                $array[$i]->overflow = 0;
                $obj->offsetSet($keys[$i], $array[$i]);
            }
        } else {
            for ($i = 0; $i < $count; ++$i) {
                if (!($array[$i] instanceof ParagonIE_Sodium_Core32_Int32)) {
                    throw new TypeError('Expected ParagonIE_Sodium_Core32_Int32');
                }
                $array[$i]->overflow = 0;
                $obj->offsetSet($i, $array[$i]);
            }
        }
        return $obj;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param array<int, int> $array
     * @param bool $save_indexes
     * @return self
     * @throws SodiumException
     * @throws TypeError
     */
    public static function fromIntArray($array, $save_indexes = null)
    {
        $count = count($array);
        if ($save_indexes) {
            $keys = array_keys($array);
        } else {
            $keys = range(0, $count - 1);
        }
        $array = array_values($array);
        $set = array();
        /** @var int $i */
        /** @var int $v */
        foreach ($array as $i => $v) {
            $set[$i] = ParagonIE_Sodium_Core32_Int32::fromInt($v);
        }

        $obj = new ParagonIE_Sodium_Core32_Curve25519_Fe();
        if ($save_indexes) {
            for ($i = 0; $i < $count; ++$i) {
                $set[$i]->overflow = 0;
                $obj->offsetSet($keys[$i], $set[$i]);
            }
        } else {
            for ($i = 0; $i < $count; ++$i) {
                $set[$i]->overflow = 0;
                $obj->offsetSet($i, $set[$i]);
            }
        }
        return $obj;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param mixed $offset
     * @param mixed $value
     * @return void
     * @throws SodiumException
     * @throws TypeError
     */
    #[ReturnTypeWillChange]
    public function offsetSet($offset, $value)
    {
        if (!($value instanceof ParagonIE_Sodium_Core32_Int32)) {
            throw new InvalidArgumentException('Expected an instance of ParagonIE_Sodium_Core32_Int32');
        }
        if (is_null($offset)) {
            $this->container[] = $value;
        } else {
            ParagonIE_Sodium_Core32_Util::declareScalarType($offset, 'int', 1);
            $this->container[(int) $offset] = $value;
        }
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param mixed $offset
     * @return bool
     * @psalm-suppress MixedArrayOffset
     */
    #[ReturnTypeWillChange]
    public function offsetExists($offset)
    {
        return isset($this->container[$offset]);
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param mixed $offset
     * @return void
     * @psalm-suppress MixedArrayOffset
     */
    #[ReturnTypeWillChange]
    public function offsetUnset($offset)
    {
        unset($this->container[$offset]);
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param mixed $offset
     * @return ParagonIE_Sodium_Core32_Int32
     * @psalm-suppress MixedArrayOffset
     */
    #[ReturnTypeWillChange]
    public function offsetGet($offset)
    {
        if (!isset($this->container[$offset])) {
            $this->container[(int) $offset] = new ParagonIE_Sodium_Core32_Int32();
        }
        /** @var ParagonIE_Sodium_Core32_Int32 $get */
        $get = $this->container[$offset];
        return $get;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @return array
     */
    public function __debugInfo()
    {
        if (empty($this->container)) {
            return array();
        }
        $c = array(
            (int) ($this->container[0]->toInt()),
            (int) ($this->container[1]->toInt()),
            (int) ($this->container[2]->toInt()),
            (int) ($this->container[3]->toInt()),
            (int) ($this->container[4]->toInt()),
            (int) ($this->container[5]->toInt()),
            (int) ($this->container[6]->toInt()),
            (int) ($this->container[7]->toInt()),
            (int) ($this->container[8]->toInt()),
            (int) ($this->container[9]->toInt())
        );
        return array(implode(', ', $c));
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core32/Ed25519.php000064400000036662150755146460017516 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Core32_Ed25519', false)) {
    return;
}
if (!class_exists('ParagonIE_Sodium_Core32_Curve25519')) {
    require_once dirname(__FILE__) . '/Curve25519.php';
}

/**
 * Class ParagonIE_Sodium_Core32_Ed25519
 */
abstract class ParagonIE_Sodium_Core32_Ed25519 extends ParagonIE_Sodium_Core32_Curve25519
{
    const KEYPAIR_BYTES = 96;
    const SEED_BYTES = 32;

    /**
     * @internal You should not use this directly from another application
     *
     * @return string (96 bytes)
     * @throws Exception
     * @throws SodiumException
     * @throws TypeError
     */
    public static function keypair()
    {
        $seed = random_bytes(self::SEED_BYTES);
        $pk = '';
        $sk = '';
        self::seed_keypair($pk, $sk, $seed);
        return $sk . $pk;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $pk
     * @param string $sk
     * @param string $seed
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function seed_keypair(&$pk, &$sk, $seed)
    {
        if (self::strlen($seed) !== self::SEED_BYTES) {
            throw new RangeException('crypto_sign keypair seed must be 32 bytes long');
        }

        /** @var string $pk */
        $pk = self::publickey_from_secretkey($seed);
        $sk = $seed . $pk;
        return $sk;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $keypair
     * @return string
     * @throws TypeError
     */
    public static function secretkey($keypair)
    {
        if (self::strlen($keypair) !== self::KEYPAIR_BYTES) {
            throw new RangeException('crypto_sign keypair must be 96 bytes long');
        }
        return self::substr($keypair, 0, 64);
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $keypair
     * @return string
     * @throws RangeException
     * @throws TypeError
     */
    public static function publickey($keypair)
    {
        if (self::strlen($keypair) !== self::KEYPAIR_BYTES) {
            throw new RangeException('crypto_sign keypair must be 96 bytes long');
        }
        return self::substr($keypair, 64, 32);
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $sk
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function publickey_from_secretkey($sk)
    {
        /** @var string $sk */
        $sk = hash('sha512', self::substr($sk, 0, 32), true);
        $sk[0] = self::intToChr(
            self::chrToInt($sk[0]) & 248
        );
        $sk[31] = self::intToChr(
            (self::chrToInt($sk[31]) & 63) | 64
        );
        return self::sk_to_pk($sk);
    }

    /**
     * @param string $pk
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function pk_to_curve25519($pk)
    {
        if (self::small_order($pk)) {
            throw new SodiumException('Public key is on a small order');
        }
        $A = self::ge_frombytes_negate_vartime($pk);
        $p1 = self::ge_mul_l($A);
        if (!self::fe_isnonzero($p1->X)) {
            throw new SodiumException('Unexpected zero result');
        }

        # fe_1(one_minus_y);
        # fe_sub(one_minus_y, one_minus_y, A.Y);
        # fe_invert(one_minus_y, one_minus_y);
        $one_minux_y = self::fe_invert(
            self::fe_sub(
                self::fe_1(),
                $A->Y
            )
        );


        # fe_1(x);
        # fe_add(x, x, A.Y);
        # fe_mul(x, x, one_minus_y);
        $x = self::fe_mul(
            self::fe_add(self::fe_1(), $A->Y),
            $one_minux_y
        );

        # fe_tobytes(curve25519_pk, x);
        return self::fe_tobytes($x);
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $sk
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function sk_to_pk($sk)
    {
        return self::ge_p3_tobytes(
            self::ge_scalarmult_base(
                self::substr($sk, 0, 32)
            )
        );
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $message
     * @param string $sk
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function sign($message, $sk)
    {
        /** @var string $signature */
        $signature = self::sign_detached($message, $sk);
        return $signature . $message;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $message A signed message
     * @param string $pk      Public key
     * @return string         Message (without signature)
     * @throws SodiumException
     * @throws TypeError
     */
    public static function sign_open($message, $pk)
    {
        /** @var string $signature */
        $signature = self::substr($message, 0, 64);

        /** @var string $message */
        $message = self::substr($message, 64);

        if (self::verify_detached($signature, $message, $pk)) {
            return $message;
        }
        throw new SodiumException('Invalid signature');
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $message
     * @param string $sk
     * @return string
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress PossiblyInvalidArgument
     */
    public static function sign_detached($message, $sk)
    {
        # crypto_hash_sha512(az, sk, 32);
        $az =  hash('sha512', self::substr($sk, 0, 32), true);

        # az[0] &= 248;
        # az[31] &= 63;
        # az[31] |= 64;
        $az[0] = self::intToChr(self::chrToInt($az[0]) & 248);
        $az[31] = self::intToChr((self::chrToInt($az[31]) & 63) | 64);

        # crypto_hash_sha512_init(&hs);
        # crypto_hash_sha512_update(&hs, az + 32, 32);
        # crypto_hash_sha512_update(&hs, m, mlen);
        # crypto_hash_sha512_final(&hs, nonce);
        $hs = hash_init('sha512');
        self::hash_update($hs, self::substr($az, 32, 32));
        self::hash_update($hs, $message);
        $nonceHash = hash_final($hs, true);

        # memmove(sig + 32, sk + 32, 32);
        $pk = self::substr($sk, 32, 32);

        # sc_reduce(nonce);
        # ge_scalarmult_base(&R, nonce);
        # ge_p3_tobytes(sig, &R);
        $nonce = self::sc_reduce($nonceHash) . self::substr($nonceHash, 32);
        $sig = self::ge_p3_tobytes(
            self::ge_scalarmult_base($nonce)
        );

        # crypto_hash_sha512_init(&hs);
        # crypto_hash_sha512_update(&hs, sig, 64);
        # crypto_hash_sha512_update(&hs, m, mlen);
        # crypto_hash_sha512_final(&hs, hram);
        $hs = hash_init('sha512');
        self::hash_update($hs, self::substr($sig, 0, 32));
        self::hash_update($hs, self::substr($pk, 0, 32));
        self::hash_update($hs, $message);
        $hramHash = hash_final($hs, true);

        # sc_reduce(hram);
        # sc_muladd(sig + 32, hram, az, nonce);
        $hram = self::sc_reduce($hramHash);
        $sigAfter = self::sc_muladd($hram, $az, $nonce);
        $sig = self::substr($sig, 0, 32) . self::substr($sigAfter, 0, 32);

        try {
            ParagonIE_Sodium_Compat::memzero($az);
        } catch (SodiumException $ex) {
            $az = null;
        }
        return $sig;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $sig
     * @param string $message
     * @param string $pk
     * @return bool
     * @throws SodiumException
     * @throws TypeError
     */
    public static function verify_detached($sig, $message, $pk)
    {
        if (self::strlen($sig) < 64) {
            throw new SodiumException('Signature is too short');
        }
        if ((self::chrToInt($sig[63]) & 240) && self::check_S_lt_L(self::substr($sig, 32, 32))) {
            throw new SodiumException('S < L - Invalid signature');
        }
        if (self::small_order($sig)) {
            throw new SodiumException('Signature is on too small of an order');
        }
        if ((self::chrToInt($sig[63]) & 224) !== 0) {
            throw new SodiumException('Invalid signature');
        }
        $d = 0;
        for ($i = 0; $i < 32; ++$i) {
            $d |= self::chrToInt($pk[$i]);
        }
        if ($d === 0) {
            throw new SodiumException('All zero public key');
        }

        /** @var bool The original value of ParagonIE_Sodium_Compat::$fastMult */
        $orig = ParagonIE_Sodium_Compat::$fastMult;

        // Set ParagonIE_Sodium_Compat::$fastMult to true to speed up verification.
        ParagonIE_Sodium_Compat::$fastMult = true;

        /** @var ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $A */
        $A = self::ge_frombytes_negate_vartime($pk);

        /** @var string $hDigest */
        $hDigest = hash(
            'sha512',
            self::substr($sig, 0, 32) .
            self::substr($pk, 0, 32) .
            $message,
            true
        );

        /** @var string $h */
        $h = self::sc_reduce($hDigest) . self::substr($hDigest, 32);

        /** @var ParagonIE_Sodium_Core32_Curve25519_Ge_P2 $R */
        $R = self::ge_double_scalarmult_vartime(
            $h,
            $A,
            self::substr($sig, 32)
        );

        /** @var string $rcheck */
        $rcheck = self::ge_tobytes($R);

        // Reset ParagonIE_Sodium_Compat::$fastMult to what it was before.
        ParagonIE_Sodium_Compat::$fastMult = $orig;

        return self::verify_32($rcheck, self::substr($sig, 0, 32));
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $S
     * @return bool
     * @throws SodiumException
     * @throws TypeError
     */
    public static function check_S_lt_L($S)
    {
        if (self::strlen($S) < 32) {
            throw new SodiumException('Signature must be 32 bytes');
        }
        static $L = array(
            0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58,
            0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14,
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10
        );
        /** @var array<int, int> $L */
        $c = 0;
        $n = 1;
        $i = 32;

        do {
            --$i;
            $x = self::chrToInt($S[$i]);
            $c |= (
                (($x - $L[$i]) >> 8) & $n
            );
            $n &= (
                (($x ^ $L[$i]) - 1) >> 8
            );
        } while ($i !== 0);

        return $c === 0;
    }

    /**
     * @param string $R
     * @return bool
     * @throws SodiumException
     * @throws TypeError
     */
    public static function small_order($R)
    {
        static $blocklist = array(
            /* 0 (order 4) */
            array(
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
            ),
            /* 1 (order 1) */
            array(
                0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
            ),
            /* 2707385501144840649318225287225658788936804267575313519463743609750303402022 (order 8) */
            array(
                0x26, 0xe8, 0x95, 0x8f, 0xc2, 0xb2, 0x27, 0xb0,
                0x45, 0xc3, 0xf4, 0x89, 0xf2, 0xef, 0x98, 0xf0,
                0xd5, 0xdf, 0xac, 0x05, 0xd3, 0xc6, 0x33, 0x39,
                0xb1, 0x38, 0x02, 0x88, 0x6d, 0x53, 0xfc, 0x05
            ),
            /* 55188659117513257062467267217118295137698188065244968500265048394206261417927 (order 8) */
            array(
                0xc7, 0x17, 0x6a, 0x70, 0x3d, 0x4d, 0xd8, 0x4f,
                0xba, 0x3c, 0x0b, 0x76, 0x0d, 0x10, 0x67, 0x0f,
                0x2a, 0x20, 0x53, 0xfa, 0x2c, 0x39, 0xcc, 0xc6,
                0x4e, 0xc7, 0xfd, 0x77, 0x92, 0xac, 0x03, 0x7a
            ),
            /* p-1 (order 2) */
            array(
                0x13, 0xe8, 0x95, 0x8f, 0xc2, 0xb2, 0x27, 0xb0,
                0x45, 0xc3, 0xf4, 0x89, 0xf2, 0xef, 0x98, 0xf0,
                0xd5, 0xdf, 0xac, 0x05, 0xd3, 0xc6, 0x33, 0x39,
                0xb1, 0x38, 0x02, 0x88, 0x6d, 0x53, 0xfc, 0x85
            ),
            /* p (order 4) */
            array(
                0xb4, 0x17, 0x6a, 0x70, 0x3d, 0x4d, 0xd8, 0x4f,
                0xba, 0x3c, 0x0b, 0x76, 0x0d, 0x10, 0x67, 0x0f,
                0x2a, 0x20, 0x53, 0xfa, 0x2c, 0x39, 0xcc, 0xc6,
                0x4e, 0xc7, 0xfd, 0x77, 0x92, 0xac, 0x03, 0xfa
            ),
            /* p+1 (order 1) */
            array(
                0xec, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f
            ),
            /* p+2707385501144840649318225287225658788936804267575313519463743609750303402022 (order 8) */
            array(
                0xed, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f
            ),
            /* p+55188659117513257062467267217118295137698188065244968500265048394206261417927 (order 8) */
            array(
                0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f
            ),
            /* 2p-1 (order 2) */
            array(
                0xd9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
            ),
            /* 2p (order 4) */
            array(
                0xda, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
            ),
            /* 2p+1 (order 1) */
            array(
                0xdb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
            )
        );
        /** @var array<int, array<int, int>> $blocklist */
        $countBlocklist = count($blocklist);

        for ($i = 0; $i < $countBlocklist; ++$i) {
            $c = 0;
            for ($j = 0; $j < 32; ++$j) {
                $c |= self::chrToInt($R[$j]) ^ $blocklist[$i][$j];
            }
            if ($c === 0) {
                return true;
            }
        }
        return false;
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core32/Util.php000064400000000414150755146460017457 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Core32_Util', false)) {
    return;
}

/**
 * Class ParagonIE_Sodium_Core_Util
 */
abstract class ParagonIE_Sodium_Core32_Util extends ParagonIE_Sodium_Core_Util
{

}
crypto/vendor/paragonie/sodium_compat/src/Core32/HChaCha20.php000064400000012354150755146460020131 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Core32_HChaCha20', false)) {
    return;
}

/**
 * Class ParagonIE_Sodium_Core_HChaCha20
 */
class ParagonIE_Sodium_Core32_HChaCha20 extends ParagonIE_Sodium_Core32_ChaCha20
{
    /**
     * @param string $in
     * @param string $key
     * @param string|null $c
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function hChaCha20($in = '', $key = '', $c = null)
    {
        $ctx = array();

        if ($c === null) {
            $ctx[0] = new ParagonIE_Sodium_Core32_Int32(array(0x6170, 0x7865));
            $ctx[1] = new ParagonIE_Sodium_Core32_Int32(array(0x3320, 0x646e));
            $ctx[2] = new ParagonIE_Sodium_Core32_Int32(array(0x7962, 0x2d32));
            $ctx[3] = new ParagonIE_Sodium_Core32_Int32(array(0x6b20, 0x6574));
        } else {
            $ctx[0] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($c, 0, 4));
            $ctx[1] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($c, 4, 4));
            $ctx[2] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($c, 8, 4));
            $ctx[3] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($c, 12, 4));
        }
        $ctx[4]  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 0, 4));
        $ctx[5]  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 4, 4));
        $ctx[6]  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 8, 4));
        $ctx[7]  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 12, 4));
        $ctx[8]  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 16, 4));
        $ctx[9]  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 20, 4));
        $ctx[10] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 24, 4));
        $ctx[11] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 28, 4));
        $ctx[12] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($in, 0, 4));
        $ctx[13] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($in, 4, 4));
        $ctx[14] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($in, 8, 4));
        $ctx[15] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($in, 12, 4));

        return self::hChaCha20Bytes($ctx);
    }

    /**
     * @param array $ctx
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    protected static function hChaCha20Bytes(array $ctx)
    {
        /** @var ParagonIE_Sodium_Core32_Int32 $x0 */
        $x0  = $ctx[0];
        /** @var ParagonIE_Sodium_Core32_Int32 $x1 */
        $x1  = $ctx[1];
        /** @var ParagonIE_Sodium_Core32_Int32 $x2 */
        $x2  = $ctx[2];
        /** @var ParagonIE_Sodium_Core32_Int32 $x3 */
        $x3  = $ctx[3];
        /** @var ParagonIE_Sodium_Core32_Int32 $x4 */
        $x4  = $ctx[4];
        /** @var ParagonIE_Sodium_Core32_Int32 $x5 */
        $x5  = $ctx[5];
        /** @var ParagonIE_Sodium_Core32_Int32 $x6 */
        $x6  = $ctx[6];
        /** @var ParagonIE_Sodium_Core32_Int32 $x7 */
        $x7  = $ctx[7];
        /** @var ParagonIE_Sodium_Core32_Int32 $x8 */
        $x8  = $ctx[8];
        /** @var ParagonIE_Sodium_Core32_Int32 $x9 */
        $x9  = $ctx[9];
        /** @var ParagonIE_Sodium_Core32_Int32 $x10 */
        $x10 = $ctx[10];
        /** @var ParagonIE_Sodium_Core32_Int32 $x11 */
        $x11 = $ctx[11];
        /** @var ParagonIE_Sodium_Core32_Int32 $x12 */
        $x12 = $ctx[12];
        /** @var ParagonIE_Sodium_Core32_Int32 $x13 */
        $x13 = $ctx[13];
        /** @var ParagonIE_Sodium_Core32_Int32 $x14 */
        $x14 = $ctx[14];
        /** @var ParagonIE_Sodium_Core32_Int32 $x15 */
        $x15 = $ctx[15];

        for ($i = 0; $i < 10; ++$i) {
            # QUARTERROUND( x0,  x4,  x8,  x12)
            list($x0, $x4, $x8, $x12) = self::quarterRound($x0, $x4, $x8, $x12);

            # QUARTERROUND( x1,  x5,  x9,  x13)
            list($x1, $x5, $x9, $x13) = self::quarterRound($x1, $x5, $x9, $x13);

            # QUARTERROUND( x2,  x6,  x10,  x14)
            list($x2, $x6, $x10, $x14) = self::quarterRound($x2, $x6, $x10, $x14);

            # QUARTERROUND( x3,  x7,  x11,  x15)
            list($x3, $x7, $x11, $x15) = self::quarterRound($x3, $x7, $x11, $x15);

            # QUARTERROUND( x0,  x5,  x10,  x15)
            list($x0, $x5, $x10, $x15) = self::quarterRound($x0, $x5, $x10, $x15);

            # QUARTERROUND( x1,  x6,  x11,  x12)
            list($x1, $x6, $x11, $x12) = self::quarterRound($x1, $x6, $x11, $x12);

            # QUARTERROUND( x2,  x7,  x8,  x13)
            list($x2, $x7, $x8, $x13) = self::quarterRound($x2, $x7, $x8, $x13);

            # QUARTERROUND( x3,  x4,  x9,  x14)
            list($x3, $x4, $x9, $x14) = self::quarterRound($x3, $x4, $x9, $x14);
        }

        return $x0->toReverseString() .
            $x1->toReverseString() .
            $x2->toReverseString() .
            $x3->toReverseString() .
            $x12->toReverseString() .
            $x13->toReverseString() .
            $x14->toReverseString() .
            $x15->toReverseString();
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core32/Int64.php000064400000074777150755146460017475 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

/**
 * Class ParagonIE_Sodium_Core32_Int64
 *
 * Encapsulates a 64-bit integer.
 *
 * These are immutable. It always returns a new instance.
 */
class ParagonIE_Sodium_Core32_Int64
{
    /**
     * @var array<int, int> - four 16-bit integers
     */
    public $limbs = array(0, 0, 0, 0);

    /**
     * @var int
     */
    public $overflow = 0;

    /**
     * @var bool
     */
    public $unsignedInt = false;

    /**
     * ParagonIE_Sodium_Core32_Int64 constructor.
     * @param array $array
     * @param bool $unsignedInt
     */
    public function __construct($array = array(0, 0, 0, 0), $unsignedInt = false)
    {
        $this->limbs = array(
            (int) $array[0],
            (int) $array[1],
            (int) $array[2],
            (int) $array[3]
        );
        $this->overflow = 0;
        $this->unsignedInt = $unsignedInt;
    }

    /**
     * Adds two int64 objects
     *
     * @param ParagonIE_Sodium_Core32_Int64 $addend
     * @return ParagonIE_Sodium_Core32_Int64
     */
    public function addInt64(ParagonIE_Sodium_Core32_Int64 $addend)
    {
        $i0 = $this->limbs[0];
        $i1 = $this->limbs[1];
        $i2 = $this->limbs[2];
        $i3 = $this->limbs[3];
        $j0 = $addend->limbs[0];
        $j1 = $addend->limbs[1];
        $j2 = $addend->limbs[2];
        $j3 = $addend->limbs[3];

        $r3 = $i3 + ($j3 & 0xffff);
        $carry = $r3 >> 16;

        $r2 = $i2 + ($j2 & 0xffff) + $carry;
        $carry = $r2 >> 16;

        $r1 = $i1 + ($j1 & 0xffff) + $carry;
        $carry = $r1 >> 16;

        $r0 = $i0 + ($j0 & 0xffff) + $carry;
        $carry = $r0 >> 16;

        $r0 &= 0xffff;
        $r1 &= 0xffff;
        $r2 &= 0xffff;
        $r3 &= 0xffff;

        $return = new ParagonIE_Sodium_Core32_Int64(
            array($r0, $r1, $r2, $r3)
        );
        $return->overflow = $carry;
        $return->unsignedInt = $this->unsignedInt;
        return $return;
    }

    /**
     * Adds a normal integer to an int64 object
     *
     * @param int $int
     * @return ParagonIE_Sodium_Core32_Int64
     * @throws SodiumException
     * @throws TypeError
     */
    public function addInt($int)
    {
        ParagonIE_Sodium_Core32_Util::declareScalarType($int, 'int', 1);
        /** @var int $int */
        $int = (int) $int;

        $i0 = $this->limbs[0];
        $i1 = $this->limbs[1];
        $i2 = $this->limbs[2];
        $i3 = $this->limbs[3];

        $r3 = $i3 + ($int & 0xffff);
        $carry = $r3 >> 16;

        $r2 = $i2 + (($int >> 16) & 0xffff) + $carry;
        $carry = $r2 >> 16;

        $r1 = $i1 + $carry;
        $carry = $r1 >> 16;

        $r0 = $i0 + $carry;
        $carry = $r0 >> 16;

        $r0 &= 0xffff;
        $r1 &= 0xffff;
        $r2 &= 0xffff;
        $r3 &= 0xffff;
        $return = new ParagonIE_Sodium_Core32_Int64(
            array($r0, $r1, $r2, $r3)
        );
        $return->overflow = $carry;
        $return->unsignedInt = $this->unsignedInt;
        return $return;
    }

    /**
     * @param int $b
     * @return int
     */
    public function compareInt($b = 0)
    {
        $gt = 0;
        $eq = 1;

        $i = 4;
        $j = 0;
        while ($i > 0) {
            --$i;
            /** @var int $x1 */
            $x1 = $this->limbs[$i];
            /** @var int $x2 */
            $x2 = ($b >> ($j << 4)) & 0xffff;
            /** int */
            $gt |= (($x2 - $x1) >> 8) & $eq;
            /** int */
            $eq &= (($x2 ^ $x1) - 1) >> 8;
        }
        return ($gt + $gt - $eq) + 1;
    }

    /**
     * @param int $b
     * @return bool
     */
    public function isGreaterThan($b = 0)
    {
        return $this->compareInt($b) > 0;
    }

    /**
     * @param int $b
     * @return bool
     */
    public function isLessThanInt($b = 0)
    {
        return $this->compareInt($b) < 0;
    }

    /**
     * @param int $hi
     * @param int $lo
     * @return ParagonIE_Sodium_Core32_Int64
     */
    public function mask64($hi = 0, $lo = 0)
    {
        /** @var int $a */
        $a = ($hi >> 16) & 0xffff;
        /** @var int $b */
        $b = ($hi) & 0xffff;
        /** @var int $c */
        $c = ($lo >> 16) & 0xffff;
        /** @var int $d */
        $d = ($lo & 0xffff);
        return new ParagonIE_Sodium_Core32_Int64(
            array(
                $this->limbs[0] & $a,
                $this->limbs[1] & $b,
                $this->limbs[2] & $c,
                $this->limbs[3] & $d
            ),
            $this->unsignedInt
        );
    }

    /**
     * @param int $int
     * @param int $size
     * @return ParagonIE_Sodium_Core32_Int64
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedAssignment
     */
    public function mulInt($int = 0, $size = 0)
    {
        if (ParagonIE_Sodium_Compat::$fastMult) {
            return $this->mulIntFast($int);
        }
        ParagonIE_Sodium_Core32_Util::declareScalarType($int, 'int', 1);
        ParagonIE_Sodium_Core32_Util::declareScalarType($size, 'int', 2);
        /** @var int $int */
        $int = (int) $int;
        /** @var int $size */
        $size = (int) $size;

        if (!$size) {
            $size = 63;
        }

        $a = clone $this;
        $return = new ParagonIE_Sodium_Core32_Int64();
        $return->unsignedInt = $this->unsignedInt;

        // Initialize:
        $ret0 = 0;
        $ret1 = 0;
        $ret2 = 0;
        $ret3 = 0;
        $a0 = $a->limbs[0];
        $a1 = $a->limbs[1];
        $a2 = $a->limbs[2];
        $a3 = $a->limbs[3];

        /** @var int $size */
        /** @var int $i */
        for ($i = $size; $i >= 0; --$i) {
            $mask = -($int & 1);
            $x0 = $a0 & $mask;
            $x1 = $a1 & $mask;
            $x2 = $a2 & $mask;
            $x3 = $a3 & $mask;

            $ret3 += $x3;
            $c = $ret3 >> 16;

            $ret2 += $x2 + $c;
            $c = $ret2 >> 16;

            $ret1 += $x1 + $c;
            $c = $ret1 >> 16;

            $ret0 += $x0 + $c;

            $ret0 &= 0xffff;
            $ret1 &= 0xffff;
            $ret2 &= 0xffff;
            $ret3 &= 0xffff;

            $a3 = $a3 << 1;
            $x3 = $a3 >> 16;
            $a2 = ($a2 << 1) | $x3;
            $x2 = $a2 >> 16;
            $a1 = ($a1 << 1) | $x2;
            $x1 = $a1 >> 16;
            $a0 = ($a0 << 1) | $x1;
            $a0 &= 0xffff;
            $a1 &= 0xffff;
            $a2 &= 0xffff;
            $a3 &= 0xffff;

            $int >>= 1;
        }
        $return->limbs[0] = $ret0;
        $return->limbs[1] = $ret1;
        $return->limbs[2] = $ret2;
        $return->limbs[3] = $ret3;
        return $return;
    }

    /**
     * @param ParagonIE_Sodium_Core32_Int64 $A
     * @param ParagonIE_Sodium_Core32_Int64 $B
     * @return array<int, ParagonIE_Sodium_Core32_Int64>
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedInferredReturnType
     */
    public static function ctSelect(
        ParagonIE_Sodium_Core32_Int64 $A,
        ParagonIE_Sodium_Core32_Int64 $B
    ) {
        $a = clone $A;
        $b = clone $B;
        /** @var int $aNeg */
        $aNeg = ($a->limbs[0] >> 15) & 1;
        /** @var int $bNeg */
        $bNeg = ($b->limbs[0] >> 15) & 1;
        /** @var int $m */
        $m = (-($aNeg & $bNeg)) | 1;
        /** @var int $swap */
        $swap = $bNeg & ~$aNeg;
        /** @var int $d */
        $d = -$swap;

        /*
        if ($bNeg && !$aNeg) {
            $a = clone $int;
            $b = clone $this;
        } elseif($bNeg && $aNeg) {
            $a = $this->mulInt(-1);
            $b = $int->mulInt(-1);
        }
         */
        $x = $a->xorInt64($b)->mask64($d, $d);
        return array(
            $a->xorInt64($x)->mulInt($m),
            $b->xorInt64($x)->mulInt($m)
        );
    }

    /**
     * @param array<int, int> $a
     * @param array<int, int> $b
     * @param int $baseLog2
     * @return array<int, int>
     */
    public function multiplyLong(array $a, array $b, $baseLog2 = 16)
    {
        $a_l = count($a);
        $b_l = count($b);
        /** @var array<int, int> $r */
        $r = array_fill(0, $a_l + $b_l + 1, 0);
        $base = 1 << $baseLog2;
        for ($i = 0; $i < $a_l; ++$i) {
            $a_i = $a[$i];
            for ($j = 0; $j < $a_l; ++$j) {
                $b_j = $b[$j];
                $product = (($a_i * $b_j) + $r[$i + $j]);
                $carry = (((int) $product >> $baseLog2) & 0xffff);
                $r[$i + $j] = ((int) $product - (int) ($carry * $base)) & 0xffff;
                $r[$i + $j + 1] += $carry;
            }
        }
        return array_slice($r, 0, 5);
    }

    /**
     * @param int $int
     * @return ParagonIE_Sodium_Core32_Int64
     */
    public function mulIntFast($int)
    {
        // Handle negative numbers
        $aNeg = ($this->limbs[0] >> 15) & 1;
        $bNeg = ($int >> 31) & 1;
        $a = array_reverse($this->limbs);
        $b = array(
            $int & 0xffff,
            ($int >> 16) & 0xffff,
            -$bNeg & 0xffff,
            -$bNeg & 0xffff
        );
        if ($aNeg) {
            for ($i = 0; $i < 4; ++$i) {
                $a[$i] = ($a[$i] ^ 0xffff) & 0xffff;
            }
            ++$a[0];
        }
        if ($bNeg) {
            for ($i = 0; $i < 4; ++$i) {
                $b[$i] = ($b[$i] ^ 0xffff) & 0xffff;
            }
            ++$b[0];
        }
        // Multiply
        $res = $this->multiplyLong($a, $b);

        // Re-apply negation to results
        if ($aNeg !== $bNeg) {
            for ($i = 0; $i < 4; ++$i) {
                $res[$i] = (0xffff ^ $res[$i]) & 0xffff;
            }
            // Handle integer overflow
            $c = 1;
            for ($i = 0; $i < 4; ++$i) {
                $res[$i] += $c;
                $c = $res[$i] >> 16;
                $res[$i] &= 0xffff;
            }
        }

        // Return our values
        $return = new ParagonIE_Sodium_Core32_Int64();
        $return->limbs = array(
            $res[3] & 0xffff,
            $res[2] & 0xffff,
            $res[1] & 0xffff,
            $res[0] & 0xffff
        );
        if (count($res) > 4) {
            $return->overflow = $res[4] & 0xffff;
        }
        $return->unsignedInt = $this->unsignedInt;
        return $return;
    }

    /**
     * @param ParagonIE_Sodium_Core32_Int64 $right
     * @return ParagonIE_Sodium_Core32_Int64
     */
    public function mulInt64Fast(ParagonIE_Sodium_Core32_Int64 $right)
    {
        $aNeg = ($this->limbs[0] >> 15) & 1;
        $bNeg = ($right->limbs[0] >> 15) & 1;

        $a = array_reverse($this->limbs);
        $b = array_reverse($right->limbs);
        if ($aNeg) {
            for ($i = 0; $i < 4; ++$i) {
                $a[$i] = ($a[$i] ^ 0xffff) & 0xffff;
            }
            ++$a[0];
        }
        if ($bNeg) {
            for ($i = 0; $i < 4; ++$i) {
                $b[$i] = ($b[$i] ^ 0xffff) & 0xffff;
            }
            ++$b[0];
        }
        $res = $this->multiplyLong($a, $b);
        if ($aNeg !== $bNeg) {
            if ($aNeg !== $bNeg) {
                for ($i = 0; $i < 4; ++$i) {
                    $res[$i] = ($res[$i] ^ 0xffff) & 0xffff;
                }
                $c = 1;
                for ($i = 0; $i < 4; ++$i) {
                    $res[$i] += $c;
                    $c = $res[$i] >> 16;
                    $res[$i] &= 0xffff;
                }
            }
        }
        $return = new ParagonIE_Sodium_Core32_Int64();
        $return->limbs = array(
            $res[3] & 0xffff,
            $res[2] & 0xffff,
            $res[1] & 0xffff,
            $res[0] & 0xffff
        );
        if (count($res) > 4) {
            $return->overflow = $res[4];
        }
        return $return;
    }

    /**
     * @param ParagonIE_Sodium_Core32_Int64 $int
     * @param int $size
     * @return ParagonIE_Sodium_Core32_Int64
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedAssignment
     */
    public function mulInt64(ParagonIE_Sodium_Core32_Int64 $int, $size = 0)
    {
        if (ParagonIE_Sodium_Compat::$fastMult) {
            return $this->mulInt64Fast($int);
        }
        ParagonIE_Sodium_Core32_Util::declareScalarType($size, 'int', 2);
        if (!$size) {
            $size = 63;
        }
        list($a, $b) = self::ctSelect($this, $int);

        $return = new ParagonIE_Sodium_Core32_Int64();
        $return->unsignedInt = $this->unsignedInt;

        // Initialize:
        $ret0 = 0;
        $ret1 = 0;
        $ret2 = 0;
        $ret3 = 0;
        $a0 = $a->limbs[0];
        $a1 = $a->limbs[1];
        $a2 = $a->limbs[2];
        $a3 = $a->limbs[3];
        $b0 = $b->limbs[0];
        $b1 = $b->limbs[1];
        $b2 = $b->limbs[2];
        $b3 = $b->limbs[3];

        /** @var int $size */
        /** @var int $i */
        for ($i = (int) $size; $i >= 0; --$i) {
            $mask = -($b3 & 1);
            $x0 = $a0 & $mask;
            $x1 = $a1 & $mask;
            $x2 = $a2 & $mask;
            $x3 = $a3 & $mask;

            $ret3 += $x3;
            $c = $ret3 >> 16;

            $ret2 += $x2 + $c;
            $c = $ret2 >> 16;

            $ret1 += $x1 + $c;
            $c = $ret1 >> 16;

            $ret0 += $x0 + $c;

            $ret0 &= 0xffff;
            $ret1 &= 0xffff;
            $ret2 &= 0xffff;
            $ret3 &= 0xffff;

            $a3 = $a3 << 1;
            $x3 = $a3 >> 16;
            $a2 = ($a2 << 1) | $x3;
            $x2 = $a2 >> 16;
            $a1 = ($a1 << 1) | $x2;
            $x1 = $a1 >> 16;
            $a0 = ($a0 << 1) | $x1;
            $a0 &= 0xffff;
            $a1 &= 0xffff;
            $a2 &= 0xffff;
            $a3 &= 0xffff;

            $x0 = ($b0 & 1) << 16;
            $x1 = ($b1 & 1) << 16;
            $x2 = ($b2 & 1) << 16;

            $b0 = ($b0 >> 1);
            $b1 = (($b1 | $x0) >> 1);
            $b2 = (($b2 | $x1) >> 1);
            $b3 = (($b3 | $x2) >> 1);

            $b0 &= 0xffff;
            $b1 &= 0xffff;
            $b2 &= 0xffff;
            $b3 &= 0xffff;

        }
        $return->limbs[0] = $ret0;
        $return->limbs[1] = $ret1;
        $return->limbs[2] = $ret2;
        $return->limbs[3] = $ret3;

        return $return;
    }

    /**
     * OR this 64-bit integer with another.
     *
     * @param ParagonIE_Sodium_Core32_Int64 $b
     * @return ParagonIE_Sodium_Core32_Int64
     */
    public function orInt64(ParagonIE_Sodium_Core32_Int64 $b)
    {
        $return = new ParagonIE_Sodium_Core32_Int64();
        $return->unsignedInt = $this->unsignedInt;
        $return->limbs = array(
            (int) ($this->limbs[0] | $b->limbs[0]),
            (int) ($this->limbs[1] | $b->limbs[1]),
            (int) ($this->limbs[2] | $b->limbs[2]),
            (int) ($this->limbs[3] | $b->limbs[3])
        );
        return $return;
    }

    /**
     * @param int $c
     * @return ParagonIE_Sodium_Core32_Int64
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArrayAccess
     */
    public function rotateLeft($c = 0)
    {
        ParagonIE_Sodium_Core32_Util::declareScalarType($c, 'int', 1);
        /** @var int $c */
        $c = (int) $c;

        $return = new ParagonIE_Sodium_Core32_Int64();
        $return->unsignedInt = $this->unsignedInt;
        $c &= 63;
        if ($c === 0) {
            // NOP, but we want a copy.
            $return->limbs = $this->limbs;
        } else {
            /** @var array<int, int> $limbs */
            $limbs =& $return->limbs;

            /** @var array<int, int> $myLimbs */
            $myLimbs =& $this->limbs;

            /** @var int $idx_shift */
            $idx_shift = ($c >> 4) & 3;
            /** @var int $sub_shift */
            $sub_shift = $c & 15;

            for ($i = 3; $i >= 0; --$i) {
                /** @var int $j */
                $j = ($i + $idx_shift) & 3;
                /** @var int $k */
                $k = ($i + $idx_shift + 1) & 3;
                $limbs[$i] = (int) (
                    (
                        ((int) ($myLimbs[$j]) << $sub_shift)
                            |
                        ((int) ($myLimbs[$k]) >> (16 - $sub_shift))
                    ) & 0xffff
                );
            }
        }
        return $return;
    }

    /**
     * Rotate to the right
     *
     * @param int $c
     * @return ParagonIE_Sodium_Core32_Int64
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArrayAccess
     */
    public function rotateRight($c = 0)
    {
        ParagonIE_Sodium_Core32_Util::declareScalarType($c, 'int', 1);
        /** @var int $c */
        $c = (int) $c;

        /** @var ParagonIE_Sodium_Core32_Int64 $return */
        $return = new ParagonIE_Sodium_Core32_Int64();
        $return->unsignedInt = $this->unsignedInt;
        $c &= 63;
        /** @var int $c */
        if ($c === 0) {
            // NOP, but we want a copy.
            $return->limbs = $this->limbs;
        } else {
            /** @var array<int, int> $limbs */
            $limbs =& $return->limbs;

            /** @var array<int, int> $myLimbs */
            $myLimbs =& $this->limbs;

            /** @var int $idx_shift */
            $idx_shift = ($c >> 4) & 3;
            /** @var int $sub_shift */
            $sub_shift = $c & 15;

            for ($i = 3; $i >= 0; --$i) {
                /** @var int $j */
                $j = ($i - $idx_shift) & 3;
                /** @var int $k */
                $k = ($i - $idx_shift - 1) & 3;
                $limbs[$i] = (int) (
                    (
                        ((int) ($myLimbs[$j]) >> (int) ($sub_shift))
                            |
                        ((int) ($myLimbs[$k]) << (16 - (int) ($sub_shift)))
                    ) & 0xffff
                );
            }
        }
        return $return;
    }
    /**
     * @param int $c
     * @return ParagonIE_Sodium_Core32_Int64
     * @throws SodiumException
     * @throws TypeError
     */
    public function shiftLeft($c = 0)
    {
        ParagonIE_Sodium_Core32_Util::declareScalarType($c, 'int', 1);
        /** @var int $c */
        $c = (int) $c;

        $return = new ParagonIE_Sodium_Core32_Int64();
        $return->unsignedInt = $this->unsignedInt;
        $c &= 63;

        if ($c >= 16) {
            if ($c >= 48) {
                $return->limbs = array(
                    $this->limbs[3], 0, 0, 0
                );
            } elseif ($c >= 32) {
                $return->limbs = array(
                    $this->limbs[2], $this->limbs[3], 0, 0
                );
            } else {
                $return->limbs = array(
                    $this->limbs[1], $this->limbs[2], $this->limbs[3], 0
                );
            }
            return $return->shiftLeft($c & 15);
        }
        if ($c === 0) {
            $return->limbs = $this->limbs;
        } elseif ($c < 0) {
            /** @var int $c */
            return $this->shiftRight(-$c);
        } else {
            if (!is_int($c)) {
                throw new TypeError();
            }
            /** @var int $carry */
            $carry = 0;
            for ($i = 3; $i >= 0; --$i) {
                /** @var int $tmp */
                $tmp = ($this->limbs[$i] << $c) | ($carry & 0xffff);
                $return->limbs[$i] = (int) ($tmp & 0xffff);
                /** @var int $carry */
                $carry = $tmp >> 16;
            }
        }
        return $return;
    }

    /**
     * @param int $c
     * @return ParagonIE_Sodium_Core32_Int64
     * @throws SodiumException
     * @throws TypeError
     */
    public function shiftRight($c = 0)
    {
        ParagonIE_Sodium_Core32_Util::declareScalarType($c, 'int', 1);
        $c = (int) $c;
        /** @var int $c */
        $return = new ParagonIE_Sodium_Core32_Int64();
        $return->unsignedInt = $this->unsignedInt;
        $c &= 63;

        $negative = -(($this->limbs[0] >> 15) & 1);
        if ($c >= 16) {
            if ($c >= 48) {
                $return->limbs = array(
                    (int) ($negative & 0xffff),
                    (int) ($negative & 0xffff),
                    (int) ($negative & 0xffff),
                    (int) $this->limbs[0]
                );
            } elseif ($c >= 32) {
                $return->limbs = array(
                    (int) ($negative & 0xffff),
                    (int) ($negative & 0xffff),
                    (int) $this->limbs[0],
                    (int) $this->limbs[1]
                );
            } else {
                $return->limbs = array(
                    (int) ($negative & 0xffff),
                    (int) $this->limbs[0],
                    (int) $this->limbs[1],
                    (int) $this->limbs[2]
                );
            }
            return $return->shiftRight($c & 15);
        }

        if ($c === 0) {
            $return->limbs = $this->limbs;
        } elseif ($c < 0) {
            return $this->shiftLeft(-$c);
        } else {
            if (!is_int($c)) {
                throw new TypeError();
            }
            /** @var int $carryRight */
            $carryRight = ($negative & 0xffff);
            $mask = (int) (((1 << ($c + 1)) - 1) & 0xffff);
            for ($i = 0; $i < 4; ++$i) {
                $return->limbs[$i] = (int) (
                    (($this->limbs[$i] >> $c) | ($carryRight << (16 - $c))) & 0xffff
                );
                $carryRight = (int) ($this->limbs[$i] & $mask);
            }
        }
        return $return;
    }


    /**
     * Subtract a normal integer from an int64 object.
     *
     * @param int $int
     * @return ParagonIE_Sodium_Core32_Int64
     * @throws SodiumException
     * @throws TypeError
     */
    public function subInt($int)
    {
        ParagonIE_Sodium_Core32_Util::declareScalarType($int, 'int', 1);
        $int = (int) $int;

        $return = new ParagonIE_Sodium_Core32_Int64();
        $return->unsignedInt = $this->unsignedInt;

        /** @var int $carry */
        $carry = 0;
        for ($i = 3; $i >= 0; --$i) {
            /** @var int $tmp */
            $tmp = $this->limbs[$i] - (($int >> 16) & 0xffff) + $carry;
            /** @var int $carry */
            $carry = $tmp >> 16;
            $return->limbs[$i] = (int) ($tmp & 0xffff);
        }
        return $return;
    }

    /**
     * The difference between two Int64 objects.
     *
     * @param ParagonIE_Sodium_Core32_Int64 $b
     * @return ParagonIE_Sodium_Core32_Int64
     */
    public function subInt64(ParagonIE_Sodium_Core32_Int64 $b)
    {
        $return = new ParagonIE_Sodium_Core32_Int64();
        $return->unsignedInt = $this->unsignedInt;
        /** @var int $carry */
        $carry = 0;
        for ($i = 3; $i >= 0; --$i) {
            /** @var int $tmp */
            $tmp = $this->limbs[$i] - $b->limbs[$i] + $carry;
            /** @var int $carry */
            $carry = ($tmp >> 16);
            $return->limbs[$i] = (int) ($tmp & 0xffff);
        }
        return $return;
    }

    /**
     * XOR this 64-bit integer with another.
     *
     * @param ParagonIE_Sodium_Core32_Int64 $b
     * @return ParagonIE_Sodium_Core32_Int64
     */
    public function xorInt64(ParagonIE_Sodium_Core32_Int64 $b)
    {
        $return = new ParagonIE_Sodium_Core32_Int64();
        $return->unsignedInt = $this->unsignedInt;
        $return->limbs = array(
            (int) ($this->limbs[0] ^ $b->limbs[0]),
            (int) ($this->limbs[1] ^ $b->limbs[1]),
            (int) ($this->limbs[2] ^ $b->limbs[2]),
            (int) ($this->limbs[3] ^ $b->limbs[3])
        );
        return $return;
    }

    /**
     * @param int $low
     * @param int $high
     * @return self
     * @throws SodiumException
     * @throws TypeError
     */
    public static function fromInts($low, $high)
    {
        ParagonIE_Sodium_Core32_Util::declareScalarType($low, 'int', 1);
        ParagonIE_Sodium_Core32_Util::declareScalarType($high, 'int', 2);

        $high = (int) $high;
        $low = (int) $low;
        return new ParagonIE_Sodium_Core32_Int64(
            array(
                (int) (($high >> 16) & 0xffff),
                (int) ($high & 0xffff),
                (int) (($low >> 16) & 0xffff),
                (int) ($low & 0xffff)
            )
        );
    }

    /**
     * @param int $low
     * @return self
     * @throws SodiumException
     * @throws TypeError
     */
    public static function fromInt($low)
    {
        ParagonIE_Sodium_Core32_Util::declareScalarType($low, 'int', 1);
        $low = (int) $low;

        return new ParagonIE_Sodium_Core32_Int64(
            array(
                0,
                0,
                (int) (($low >> 16) & 0xffff),
                (int) ($low & 0xffff)
            )
        );
    }

    /**
     * @return int
     */
    public function toInt()
    {
        return (int) (
            (($this->limbs[2] & 0xffff) << 16)
                |
            ($this->limbs[3] & 0xffff)
        );
    }

    /**
     * @param string $string
     * @return self
     * @throws SodiumException
     * @throws TypeError
     */
    public static function fromString($string)
    {
        ParagonIE_Sodium_Core32_Util::declareScalarType($string, 'string', 1);
        $string = (string) $string;
        if (ParagonIE_Sodium_Core32_Util::strlen($string) !== 8) {
            throw new RangeException(
                'String must be 8 bytes; ' . ParagonIE_Sodium_Core32_Util::strlen($string) . ' given.'
            );
        }
        $return = new ParagonIE_Sodium_Core32_Int64();

        $return->limbs[0]  = (int) ((ParagonIE_Sodium_Core32_Util::chrToInt($string[0]) & 0xff) << 8);
        $return->limbs[0] |= (ParagonIE_Sodium_Core32_Util::chrToInt($string[1]) & 0xff);
        $return->limbs[1]  = (int) ((ParagonIE_Sodium_Core32_Util::chrToInt($string[2]) & 0xff) << 8);
        $return->limbs[1] |= (ParagonIE_Sodium_Core32_Util::chrToInt($string[3]) & 0xff);
        $return->limbs[2]  = (int) ((ParagonIE_Sodium_Core32_Util::chrToInt($string[4]) & 0xff) << 8);
        $return->limbs[2] |= (ParagonIE_Sodium_Core32_Util::chrToInt($string[5]) & 0xff);
        $return->limbs[3]  = (int) ((ParagonIE_Sodium_Core32_Util::chrToInt($string[6]) & 0xff) << 8);
        $return->limbs[3] |= (ParagonIE_Sodium_Core32_Util::chrToInt($string[7]) & 0xff);
        return $return;
    }

    /**
     * @param string $string
     * @return self
     * @throws SodiumException
     * @throws TypeError
     */
    public static function fromReverseString($string)
    {
        ParagonIE_Sodium_Core32_Util::declareScalarType($string, 'string', 1);
        $string = (string) $string;
        if (ParagonIE_Sodium_Core32_Util::strlen($string) !== 8) {
            throw new RangeException(
                'String must be 8 bytes; ' . ParagonIE_Sodium_Core32_Util::strlen($string) . ' given.'
            );
        }
        $return = new ParagonIE_Sodium_Core32_Int64();

        $return->limbs[0]  = (int) ((ParagonIE_Sodium_Core32_Util::chrToInt($string[7]) & 0xff) << 8);
        $return->limbs[0] |= (ParagonIE_Sodium_Core32_Util::chrToInt($string[6]) & 0xff);
        $return->limbs[1]  = (int) ((ParagonIE_Sodium_Core32_Util::chrToInt($string[5]) & 0xff) << 8);
        $return->limbs[1] |= (ParagonIE_Sodium_Core32_Util::chrToInt($string[4]) & 0xff);
        $return->limbs[2]  = (int) ((ParagonIE_Sodium_Core32_Util::chrToInt($string[3]) & 0xff) << 8);
        $return->limbs[2] |= (ParagonIE_Sodium_Core32_Util::chrToInt($string[2]) & 0xff);
        $return->limbs[3]  = (int) ((ParagonIE_Sodium_Core32_Util::chrToInt($string[1]) & 0xff) << 8);
        $return->limbs[3] |= (ParagonIE_Sodium_Core32_Util::chrToInt($string[0]) & 0xff);
        return $return;
    }

    /**
     * @return array<int, int>
     */
    public function toArray()
    {
        return array(
            (int) ((($this->limbs[0] & 0xffff) << 16) | ($this->limbs[1] & 0xffff)),
            (int) ((($this->limbs[2] & 0xffff) << 16) | ($this->limbs[3] & 0xffff))
        );
    }

    /**
     * @return ParagonIE_Sodium_Core32_Int32
     */
    public function toInt32()
    {
        $return = new ParagonIE_Sodium_Core32_Int32();
        $return->limbs[0] = (int) ($this->limbs[2]);
        $return->limbs[1] = (int) ($this->limbs[3]);
        $return->unsignedInt = $this->unsignedInt;
        $return->overflow = (int) (ParagonIE_Sodium_Core32_Util::abs($this->limbs[1], 16) & 0xffff);
        return $return;
    }

    /**
     * @return ParagonIE_Sodium_Core32_Int64
     */
    public function toInt64()
    {
        $return = new ParagonIE_Sodium_Core32_Int64();
        $return->limbs[0] = (int) ($this->limbs[0]);
        $return->limbs[1] = (int) ($this->limbs[1]);
        $return->limbs[2] = (int) ($this->limbs[2]);
        $return->limbs[3] = (int) ($this->limbs[3]);
        $return->unsignedInt = $this->unsignedInt;
        $return->overflow = ParagonIE_Sodium_Core32_Util::abs($this->overflow);
        return $return;
    }

    /**
     * @param bool $bool
     * @return self
     */
    public function setUnsignedInt($bool = false)
    {
        $this->unsignedInt = !empty($bool);
        return $this;
    }

    /**
     * @return string
     * @throws TypeError
     */
    public function toString()
    {
        return ParagonIE_Sodium_Core32_Util::intToChr(($this->limbs[0] >> 8) & 0xff) .
            ParagonIE_Sodium_Core32_Util::intToChr($this->limbs[0] & 0xff) .
            ParagonIE_Sodium_Core32_Util::intToChr(($this->limbs[1] >> 8) & 0xff) .
            ParagonIE_Sodium_Core32_Util::intToChr($this->limbs[1] & 0xff) .
            ParagonIE_Sodium_Core32_Util::intToChr(($this->limbs[2] >> 8) & 0xff) .
            ParagonIE_Sodium_Core32_Util::intToChr($this->limbs[2] & 0xff) .
            ParagonIE_Sodium_Core32_Util::intToChr(($this->limbs[3] >> 8) & 0xff) .
            ParagonIE_Sodium_Core32_Util::intToChr($this->limbs[3] & 0xff);
    }

    /**
     * @return string
     * @throws TypeError
     */
    public function toReverseString()
    {
        return ParagonIE_Sodium_Core32_Util::intToChr($this->limbs[3] & 0xff) .
            ParagonIE_Sodium_Core32_Util::intToChr(($this->limbs[3] >> 8) & 0xff) .
            ParagonIE_Sodium_Core32_Util::intToChr($this->limbs[2] & 0xff) .
            ParagonIE_Sodium_Core32_Util::intToChr(($this->limbs[2] >> 8) & 0xff) .
            ParagonIE_Sodium_Core32_Util::intToChr($this->limbs[1] & 0xff) .
            ParagonIE_Sodium_Core32_Util::intToChr(($this->limbs[1] >> 8) & 0xff) .
            ParagonIE_Sodium_Core32_Util::intToChr($this->limbs[0] & 0xff) .
            ParagonIE_Sodium_Core32_Util::intToChr(($this->limbs[0] >> 8) & 0xff);
    }

    /**
     * @return string
     */
    public function __toString()
    {
        try {
            return $this->toString();
        } catch (TypeError $ex) {
            // PHP engine can't handle exceptions from __toString()
            return '';
        }
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core32/Salsa20.php000064400000026455150755146460017764 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Core32_Salsa20', false)) {
    return;
}

/**
 * Class ParagonIE_Sodium_Core32_Salsa20
 */
abstract class ParagonIE_Sodium_Core32_Salsa20 extends ParagonIE_Sodium_Core32_Util
{
    const ROUNDS = 20;

    /**
     * Calculate an salsa20 hash of a single block
     *
     * @internal You should not use this directly from another application
     *
     * @param string $in
     * @param string $k
     * @param string|null $c
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function core_salsa20($in, $k, $c = null)
    {
        /**
         * @var ParagonIE_Sodium_Core32_Int32 $x0
         * @var ParagonIE_Sodium_Core32_Int32 $x1
         * @var ParagonIE_Sodium_Core32_Int32 $x2
         * @var ParagonIE_Sodium_Core32_Int32 $x3
         * @var ParagonIE_Sodium_Core32_Int32 $x4
         * @var ParagonIE_Sodium_Core32_Int32 $x5
         * @var ParagonIE_Sodium_Core32_Int32 $x6
         * @var ParagonIE_Sodium_Core32_Int32 $x7
         * @var ParagonIE_Sodium_Core32_Int32 $x8
         * @var ParagonIE_Sodium_Core32_Int32 $x9
         * @var ParagonIE_Sodium_Core32_Int32 $x10
         * @var ParagonIE_Sodium_Core32_Int32 $x11
         * @var ParagonIE_Sodium_Core32_Int32 $x12
         * @var ParagonIE_Sodium_Core32_Int32 $x13
         * @var ParagonIE_Sodium_Core32_Int32 $x14
         * @var ParagonIE_Sodium_Core32_Int32 $x15
         * @var ParagonIE_Sodium_Core32_Int32 $j0
         * @var ParagonIE_Sodium_Core32_Int32 $j1
         * @var ParagonIE_Sodium_Core32_Int32 $j2
         * @var ParagonIE_Sodium_Core32_Int32 $j3
         * @var ParagonIE_Sodium_Core32_Int32 $j4
         * @var ParagonIE_Sodium_Core32_Int32 $j5
         * @var ParagonIE_Sodium_Core32_Int32 $j6
         * @var ParagonIE_Sodium_Core32_Int32 $j7
         * @var ParagonIE_Sodium_Core32_Int32 $j8
         * @var ParagonIE_Sodium_Core32_Int32 $j9
         * @var ParagonIE_Sodium_Core32_Int32 $j10
         * @var ParagonIE_Sodium_Core32_Int32 $j11
         * @var ParagonIE_Sodium_Core32_Int32 $j12
         * @var ParagonIE_Sodium_Core32_Int32 $j13
         * @var ParagonIE_Sodium_Core32_Int32 $j14
         * @var ParagonIE_Sodium_Core32_Int32 $j15
         */
        if (self::strlen($k) < 32) {
            throw new RangeException('Key must be 32 bytes long');
        }
        if ($c === null) {
            $x0  = new ParagonIE_Sodium_Core32_Int32(array(0x6170, 0x7865));
            $x5  = new ParagonIE_Sodium_Core32_Int32(array(0x3320, 0x646e));
            $x10 = new ParagonIE_Sodium_Core32_Int32(array(0x7962, 0x2d32));
            $x15 = new ParagonIE_Sodium_Core32_Int32(array(0x6b20, 0x6574));
        } else {
            $x0  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($c, 0, 4));
            $x5  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($c, 4, 4));
            $x10 = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($c, 8, 4));
            $x15 = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($c, 12, 4));
        }
        $x1  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 0, 4));
        $x2  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 4, 4));
        $x3  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 8, 4));
        $x4  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 12, 4));
        $x6  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($in, 0, 4));
        $x7  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($in, 4, 4));
        $x8  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($in, 8, 4));
        $x9  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($in, 12, 4));
        $x11 = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 16, 4));
        $x12 = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 20, 4));
        $x13 = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 24, 4));
        $x14 = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($k, 28, 4));

        $j0  = clone $x0;
        $j1  = clone $x1;
        $j2  = clone $x2;
        $j3  = clone $x3;
        $j4  = clone $x4;
        $j5  = clone $x5;
        $j6  = clone $x6;
        $j7  = clone $x7;
        $j8  = clone $x8;
        $j9  = clone $x9;
        $j10  = clone $x10;
        $j11  = clone $x11;
        $j12  = clone $x12;
        $j13  = clone $x13;
        $j14  = clone $x14;
        $j15  = clone $x15;

        for ($i = self::ROUNDS; $i > 0; $i -= 2) {
            $x4  = $x4->xorInt32($x0->addInt32($x12)->rotateLeft(7));
            $x8  = $x8->xorInt32($x4->addInt32($x0)->rotateLeft(9));
            $x12 = $x12->xorInt32($x8->addInt32($x4)->rotateLeft(13));
            $x0  = $x0->xorInt32($x12->addInt32($x8)->rotateLeft(18));

            $x9  = $x9->xorInt32($x5->addInt32($x1)->rotateLeft(7));
            $x13 = $x13->xorInt32($x9->addInt32($x5)->rotateLeft(9));
            $x1  = $x1->xorInt32($x13->addInt32($x9)->rotateLeft(13));
            $x5  = $x5->xorInt32($x1->addInt32($x13)->rotateLeft(18));

            $x14 = $x14->xorInt32($x10->addInt32($x6)->rotateLeft(7));
            $x2  = $x2->xorInt32($x14->addInt32($x10)->rotateLeft(9));
            $x6  = $x6->xorInt32($x2->addInt32($x14)->rotateLeft(13));
            $x10 = $x10->xorInt32($x6->addInt32($x2)->rotateLeft(18));

            $x3  = $x3->xorInt32($x15->addInt32($x11)->rotateLeft(7));
            $x7  = $x7->xorInt32($x3->addInt32($x15)->rotateLeft(9));
            $x11 = $x11->xorInt32($x7->addInt32($x3)->rotateLeft(13));
            $x15 = $x15->xorInt32($x11->addInt32($x7)->rotateLeft(18));

            $x1  = $x1->xorInt32($x0->addInt32($x3)->rotateLeft(7));
            $x2  = $x2->xorInt32($x1->addInt32($x0)->rotateLeft(9));
            $x3  = $x3->xorInt32($x2->addInt32($x1)->rotateLeft(13));
            $x0  = $x0->xorInt32($x3->addInt32($x2)->rotateLeft(18));

            $x6  = $x6->xorInt32($x5->addInt32($x4)->rotateLeft(7));
            $x7  = $x7->xorInt32($x6->addInt32($x5)->rotateLeft(9));
            $x4  = $x4->xorInt32($x7->addInt32($x6)->rotateLeft(13));
            $x5  = $x5->xorInt32($x4->addInt32($x7)->rotateLeft(18));

            $x11 = $x11->xorInt32($x10->addInt32($x9)->rotateLeft(7));
            $x8  = $x8->xorInt32($x11->addInt32($x10)->rotateLeft(9));
            $x9  = $x9->xorInt32($x8->addInt32($x11)->rotateLeft(13));
            $x10 = $x10->xorInt32($x9->addInt32($x8)->rotateLeft(18));

            $x12 = $x12->xorInt32($x15->addInt32($x14)->rotateLeft(7));
            $x13 = $x13->xorInt32($x12->addInt32($x15)->rotateLeft(9));
            $x14 = $x14->xorInt32($x13->addInt32($x12)->rotateLeft(13));
            $x15 = $x15->xorInt32($x14->addInt32($x13)->rotateLeft(18));
        }

        $x0  = $x0->addInt32($j0);
        $x1  = $x1->addInt32($j1);
        $x2  = $x2->addInt32($j2);
        $x3  = $x3->addInt32($j3);
        $x4  = $x4->addInt32($j4);
        $x5  = $x5->addInt32($j5);
        $x6  = $x6->addInt32($j6);
        $x7  = $x7->addInt32($j7);
        $x8  = $x8->addInt32($j8);
        $x9  = $x9->addInt32($j9);
        $x10 = $x10->addInt32($j10);
        $x11 = $x11->addInt32($j11);
        $x12 = $x12->addInt32($j12);
        $x13 = $x13->addInt32($j13);
        $x14 = $x14->addInt32($j14);
        $x15 = $x15->addInt32($j15);

        return $x0->toReverseString() .
            $x1->toReverseString() .
            $x2->toReverseString() .
            $x3->toReverseString() .
            $x4->toReverseString() .
            $x5->toReverseString() .
            $x6->toReverseString() .
            $x7->toReverseString() .
            $x8->toReverseString() .
            $x9->toReverseString() .
            $x10->toReverseString() .
            $x11->toReverseString() .
            $x12->toReverseString() .
            $x13->toReverseString() .
            $x14->toReverseString() .
            $x15->toReverseString();
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param int $len
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function salsa20($len, $nonce, $key)
    {
        if (self::strlen($key) !== 32) {
            throw new RangeException('Key must be 32 bytes long');
        }
        $kcopy = '' . $key;
        $in = self::substr($nonce, 0, 8) . str_repeat("\0", 8);
        $c = '';
        while ($len >= 64) {
            $c .= self::core_salsa20($in, $kcopy, null);
            $u = 1;
            // Internal counter.
            for ($i = 8; $i < 16; ++$i) {
                $u += self::chrToInt($in[$i]);
                $in[$i] = self::intToChr($u & 0xff);
                $u >>= 8;
            }
            $len -= 64;
        }
        if ($len > 0) {
            $c .= self::substr(
                self::core_salsa20($in, $kcopy, null),
                0,
                $len
            );
        }
        try {
            ParagonIE_Sodium_Compat::memzero($kcopy);
        } catch (SodiumException $ex) {
            $kcopy = null;
        }
        return $c;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $m
     * @param string $n
     * @param int $ic
     * @param string $k
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function salsa20_xor_ic($m, $n, $ic, $k)
    {
        $mlen = self::strlen($m);
        if ($mlen < 1) {
            return '';
        }
        $kcopy = self::substr($k, 0, 32);
        $in = self::substr($n, 0, 8);
        // Initialize the counter
        $in .= ParagonIE_Sodium_Core32_Util::store64_le($ic);

        $c = '';
        while ($mlen >= 64) {
            $block = self::core_salsa20($in, $kcopy, null);
            $c .= self::xorStrings(
                self::substr($m, 0, 64),
                self::substr($block, 0, 64)
            );
            $u = 1;
            for ($i = 8; $i < 16; ++$i) {
                $u += self::chrToInt($in[$i]);
                $in[$i] = self::intToChr($u & 0xff);
                $u >>= 8;
            }

            $mlen -= 64;
            $m = self::substr($m, 64);
        }

        if ($mlen) {
            $block = self::core_salsa20($in, $kcopy, null);
            $c .= self::xorStrings(
                self::substr($m, 0, $mlen),
                self::substr($block, 0, $mlen)
            );
        }
        try {
            ParagonIE_Sodium_Compat::memzero($block);
            ParagonIE_Sodium_Compat::memzero($kcopy);
        } catch (SodiumException $ex) {
            $block = null;
            $kcopy = null;
        }

        return $c;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $message
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function salsa20_xor($message, $nonce, $key)
    {
        return self::xorStrings(
            $message,
            self::salsa20(
                self::strlen($message),
                $nonce,
                $key
            )
        );
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core32/X25519.php000064400000025535150755146460017372 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Core32_X25519', false)) {
    return;
}

/**
 * Class ParagonIE_Sodium_Core32_X25519
 */
abstract class ParagonIE_Sodium_Core32_X25519 extends ParagonIE_Sodium_Core32_Curve25519
{
    /**
     * Alters the objects passed to this method in place.
     *
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $f
     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $g
     * @param int $b
     * @return void
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedMethodCall
     */
    public static function fe_cswap(
        ParagonIE_Sodium_Core32_Curve25519_Fe $f,
        ParagonIE_Sodium_Core32_Curve25519_Fe $g,
        $b = 0
    ) {
        $f0 = (int) $f[0]->toInt();
        $f1 = (int) $f[1]->toInt();
        $f2 = (int) $f[2]->toInt();
        $f3 = (int) $f[3]->toInt();
        $f4 = (int) $f[4]->toInt();
        $f5 = (int) $f[5]->toInt();
        $f6 = (int) $f[6]->toInt();
        $f7 = (int) $f[7]->toInt();
        $f8 = (int) $f[8]->toInt();
        $f9 = (int) $f[9]->toInt();
        $g0 = (int) $g[0]->toInt();
        $g1 = (int) $g[1]->toInt();
        $g2 = (int) $g[2]->toInt();
        $g3 = (int) $g[3]->toInt();
        $g4 = (int) $g[4]->toInt();
        $g5 = (int) $g[5]->toInt();
        $g6 = (int) $g[6]->toInt();
        $g7 = (int) $g[7]->toInt();
        $g8 = (int) $g[8]->toInt();
        $g9 = (int) $g[9]->toInt();
        $b = -$b;
        /** @var int $x0 */
        $x0 = ($f0 ^ $g0) & $b;
        /** @var int $x1 */
        $x1 = ($f1 ^ $g1) & $b;
        /** @var int $x2 */
        $x2 = ($f2 ^ $g2) & $b;
        /** @var int $x3 */
        $x3 = ($f3 ^ $g3) & $b;
        /** @var int $x4 */
        $x4 = ($f4 ^ $g4) & $b;
        /** @var int $x5 */
        $x5 = ($f5 ^ $g5) & $b;
        /** @var int $x6 */
        $x6 = ($f6 ^ $g6) & $b;
        /** @var int $x7 */
        $x7 = ($f7 ^ $g7) & $b;
        /** @var int $x8 */
        $x8 = ($f8 ^ $g8) & $b;
        /** @var int $x9 */
        $x9 = ($f9 ^ $g9) & $b;
        $f[0] = ParagonIE_Sodium_Core32_Int32::fromInt($f0 ^ $x0);
        $f[1] = ParagonIE_Sodium_Core32_Int32::fromInt($f1 ^ $x1);
        $f[2] = ParagonIE_Sodium_Core32_Int32::fromInt($f2 ^ $x2);
        $f[3] = ParagonIE_Sodium_Core32_Int32::fromInt($f3 ^ $x3);
        $f[4] = ParagonIE_Sodium_Core32_Int32::fromInt($f4 ^ $x4);
        $f[5] = ParagonIE_Sodium_Core32_Int32::fromInt($f5 ^ $x5);
        $f[6] = ParagonIE_Sodium_Core32_Int32::fromInt($f6 ^ $x6);
        $f[7] = ParagonIE_Sodium_Core32_Int32::fromInt($f7 ^ $x7);
        $f[8] = ParagonIE_Sodium_Core32_Int32::fromInt($f8 ^ $x8);
        $f[9] = ParagonIE_Sodium_Core32_Int32::fromInt($f9 ^ $x9);
        $g[0] = ParagonIE_Sodium_Core32_Int32::fromInt($g0 ^ $x0);
        $g[1] = ParagonIE_Sodium_Core32_Int32::fromInt($g1 ^ $x1);
        $g[2] = ParagonIE_Sodium_Core32_Int32::fromInt($g2 ^ $x2);
        $g[3] = ParagonIE_Sodium_Core32_Int32::fromInt($g3 ^ $x3);
        $g[4] = ParagonIE_Sodium_Core32_Int32::fromInt($g4 ^ $x4);
        $g[5] = ParagonIE_Sodium_Core32_Int32::fromInt($g5 ^ $x5);
        $g[6] = ParagonIE_Sodium_Core32_Int32::fromInt($g6 ^ $x6);
        $g[7] = ParagonIE_Sodium_Core32_Int32::fromInt($g7 ^ $x7);
        $g[8] = ParagonIE_Sodium_Core32_Int32::fromInt($g8 ^ $x8);
        $g[9] = ParagonIE_Sodium_Core32_Int32::fromInt($g9 ^ $x9);
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $f
     * @return ParagonIE_Sodium_Core32_Curve25519_Fe
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedAssignment
     * @psalm-suppress MixedMethodCall
     */
    public static function fe_mul121666(ParagonIE_Sodium_Core32_Curve25519_Fe $f)
    {
        /** @var array<int, ParagonIE_Sodium_Core32_Int64> $h */
        $h = array();
        for ($i = 0; $i < 10; ++$i) {
            $h[$i] = $f[$i]->toInt64()->mulInt(121666, 17);
        }

        $carry9 = $h[9]->addInt(1 << 24)->shiftRight(25);
        $h[0] = $h[0]->addInt64($carry9->mulInt(19, 5));
        $h[9] = $h[9]->subInt64($carry9->shiftLeft(25));

        $carry1 = $h[1]->addInt(1 << 24)->shiftRight(25);
        $h[2] = $h[2]->addInt64($carry1);
        $h[1] = $h[1]->subInt64($carry1->shiftLeft(25));

        $carry3 = $h[3]->addInt(1 << 24)->shiftRight(25);
        $h[4] = $h[4]->addInt64($carry3);
        $h[3] = $h[3]->subInt64($carry3->shiftLeft(25));

        $carry5 = $h[5]->addInt(1 << 24)->shiftRight(25);
        $h[6] = $h[6]->addInt64($carry5);
        $h[5] = $h[5]->subInt64($carry5->shiftLeft(25));

        $carry7 = $h[7]->addInt(1 << 24)->shiftRight(25);
        $h[8] = $h[8]->addInt64($carry7);
        $h[7] = $h[7]->subInt64($carry7->shiftLeft(25));

        $carry0 = $h[0]->addInt(1 << 25)->shiftRight(26);
        $h[1] = $h[1]->addInt64($carry0);
        $h[0] = $h[0]->subInt64($carry0->shiftLeft(26));

        $carry2 = $h[2]->addInt(1 << 25)->shiftRight(26);
        $h[3] = $h[3]->addInt64($carry2);
        $h[2] = $h[2]->subInt64($carry2->shiftLeft(26));

        $carry4 = $h[4]->addInt(1 << 25)->shiftRight(26);
        $h[5] = $h[5]->addInt64($carry4);
        $h[4] = $h[4]->subInt64($carry4->shiftLeft(26));

        $carry6 = $h[6]->addInt(1 << 25)->shiftRight(26);
        $h[7] = $h[7]->addInt64($carry6);
        $h[6] = $h[6]->subInt64($carry6->shiftLeft(26));

        $carry8 = $h[8]->addInt(1 << 25)->shiftRight(26);
        $h[9] = $h[9]->addInt64($carry8);
        $h[8] = $h[8]->subInt64($carry8->shiftLeft(26));

        for ($i = 0; $i < 10; ++$i) {
            $h[$i] = $h[$i]->toInt32();
        }
        /** @var array<int, ParagonIE_Sodium_Core32_Int32> $h2 */
        $h2 = $h;
        return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray($h2);
    }

    /**
     * @internal You should not use this directly from another application
     *
     * Inline comments preceded by # are from libsodium's ref10 code.
     *
     * @param string $n
     * @param string $p
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function crypto_scalarmult_curve25519_ref10($n, $p)
    {
        # for (i = 0;i < 32;++i) e[i] = n[i];
        $e = '' . $n;
        # e[0] &= 248;
        $e[0] = self::intToChr(
            self::chrToInt($e[0]) & 248
        );
        # e[31] &= 127;
        # e[31] |= 64;
        $e[31] = self::intToChr(
            (self::chrToInt($e[31]) & 127) | 64
        );
        # fe_frombytes(x1,p);
        $x1 = self::fe_frombytes($p);
        # fe_1(x2);
        $x2 = self::fe_1();
        # fe_0(z2);
        $z2 = self::fe_0();
        # fe_copy(x3,x1);
        $x3 = self::fe_copy($x1);
        # fe_1(z3);
        $z3 = self::fe_1();

        # swap = 0;
        /** @var int $swap */
        $swap = 0;

        # for (pos = 254;pos >= 0;--pos) {
        for ($pos = 254; $pos >= 0; --$pos) {
            # b = e[pos / 8] >> (pos & 7);
            /** @var int $b */
            $b = self::chrToInt(
                    $e[(int) floor($pos / 8)]
                ) >> ($pos & 7);
            # b &= 1;
            $b &= 1;

            # swap ^= b;
            $swap ^= $b;

            # fe_cswap(x2,x3,swap);
            self::fe_cswap($x2, $x3, $swap);

            # fe_cswap(z2,z3,swap);
            self::fe_cswap($z2, $z3, $swap);

            # swap = b;
            /** @var int $swap */
            $swap = $b;

            # fe_sub(tmp0,x3,z3);
            $tmp0 = self::fe_sub($x3, $z3);

            # fe_sub(tmp1,x2,z2);
            $tmp1 = self::fe_sub($x2, $z2);

            # fe_add(x2,x2,z2);
            $x2 = self::fe_add($x2, $z2);

            # fe_add(z2,x3,z3);
            $z2 = self::fe_add($x3, $z3);

            # fe_mul(z3,tmp0,x2);
            $z3 = self::fe_mul($tmp0, $x2);

            # fe_mul(z2,z2,tmp1);
            $z2 = self::fe_mul($z2, $tmp1);

            # fe_sq(tmp0,tmp1);
            $tmp0 = self::fe_sq($tmp1);

            # fe_sq(tmp1,x2);
            $tmp1 = self::fe_sq($x2);

            # fe_add(x3,z3,z2);
            $x3 = self::fe_add($z3, $z2);

            # fe_sub(z2,z3,z2);
            $z2 = self::fe_sub($z3, $z2);

            # fe_mul(x2,tmp1,tmp0);
            $x2 = self::fe_mul($tmp1, $tmp0);

            # fe_sub(tmp1,tmp1,tmp0);
            $tmp1 = self::fe_sub($tmp1, $tmp0);

            # fe_sq(z2,z2);
            $z2 = self::fe_sq($z2);

            # fe_mul121666(z3,tmp1);
            $z3 = self::fe_mul121666($tmp1);

            # fe_sq(x3,x3);
            $x3 = self::fe_sq($x3);

            # fe_add(tmp0,tmp0,z3);
            $tmp0 = self::fe_add($tmp0, $z3);

            # fe_mul(z3,x1,z2);
            $z3 = self::fe_mul($x1, $z2);

            # fe_mul(z2,tmp1,tmp0);
            $z2 = self::fe_mul($tmp1, $tmp0);
        }

        # fe_cswap(x2,x3,swap);
        self::fe_cswap($x2, $x3, $swap);

        # fe_cswap(z2,z3,swap);
        self::fe_cswap($z2, $z3, $swap);

        # fe_invert(z2,z2);
        $z2 = self::fe_invert($z2);

        # fe_mul(x2,x2,z2);
        $x2 = self::fe_mul($x2, $z2);
        # fe_tobytes(q,x2);
        return (string) self::fe_tobytes($x2);
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $edwardsY
     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $edwardsZ
     * @return ParagonIE_Sodium_Core32_Curve25519_Fe
     * @throws SodiumException
     * @throws TypeError
     */
    public static function edwards_to_montgomery(
        ParagonIE_Sodium_Core32_Curve25519_Fe $edwardsY,
        ParagonIE_Sodium_Core32_Curve25519_Fe $edwardsZ
    ) {
        $tempX = self::fe_add($edwardsZ, $edwardsY);
        $tempZ = self::fe_sub($edwardsZ, $edwardsY);
        $tempZ = self::fe_invert($tempZ);
        return self::fe_mul($tempX, $tempZ);
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $n
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function crypto_scalarmult_curve25519_ref10_base($n)
    {
        # for (i = 0;i < 32;++i) e[i] = n[i];
        $e = '' . $n;

        # e[0] &= 248;
        $e[0] = self::intToChr(
            self::chrToInt($e[0]) & 248
        );

        # e[31] &= 127;
        # e[31] |= 64;
        $e[31] = self::intToChr(
            (self::chrToInt($e[31]) & 127) | 64
        );

        $A = self::ge_scalarmult_base($e);
        if (
            !($A->Y instanceof ParagonIE_Sodium_Core32_Curve25519_Fe)
                ||
            !($A->Z instanceof ParagonIE_Sodium_Core32_Curve25519_Fe)
        ) {
            throw new TypeError('Null points encountered');
        }
        $pk = self::edwards_to_montgomery($A->Y, $A->Z);
        return self::fe_tobytes($pk);
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core32/Poly1305.php000064400000003155150755146460020003 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Core32_Poly1305', false)) {
    return;
}

/**
 * Class ParagonIE_Sodium_Core32_Poly1305
 */
abstract class ParagonIE_Sodium_Core32_Poly1305 extends ParagonIE_Sodium_Core32_Util
{
    const BLOCK_SIZE = 16;

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $m
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function onetimeauth($m, $key)
    {
        if (self::strlen($key) < 32) {
            throw new InvalidArgumentException(
                'Key must be 32 bytes long.'
            );
        }
        $state = new ParagonIE_Sodium_Core32_Poly1305_State(
            self::substr($key, 0, 32)
        );
        return $state
            ->update($m)
            ->finish();
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $mac
     * @param string $m
     * @param string $key
     * @return bool
     * @throws SodiumException
     * @throws TypeError
     */
    public static function onetimeauth_verify($mac, $m, $key)
    {
        if (self::strlen($key) < 32) {
            throw new InvalidArgumentException(
                'Key must be 32 bytes long.'
            );
        }
        $state = new ParagonIE_Sodium_Core32_Poly1305_State(
            self::substr($key, 0, 32)
        );
        $calc = $state
            ->update($m)
            ->finish();
        return self::verify_16($calc, $mac);
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core32/BLAKE2b.php000064400000053557150755146460017624 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Core_BLAKE2b', false)) {
    return;
}

/**
 * Class ParagonIE_Sodium_Core_BLAKE2b
 *
 * Based on the work of Devi Mandiri in devi/salt.
 */
abstract class ParagonIE_Sodium_Core32_BLAKE2b extends ParagonIE_Sodium_Core_Util
{
    /**
     * @var SplFixedArray
     */
    public static $iv;

    /**
     * @var array<int, array<int, int>>
     */
    public static $sigma = array(
        array(  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15),
        array( 14, 10,  4,  8,  9, 15, 13,  6,  1, 12,  0,  2, 11,  7,  5,  3),
        array( 11,  8, 12,  0,  5,  2, 15, 13, 10, 14,  3,  6,  7,  1,  9,  4),
        array(  7,  9,  3,  1, 13, 12, 11, 14,  2,  6,  5, 10,  4,  0, 15,  8),
        array(  9,  0,  5,  7,  2,  4, 10, 15, 14,  1, 11, 12,  6,  8,  3, 13),
        array(  2, 12,  6, 10,  0, 11,  8,  3,  4, 13,  7,  5, 15, 14,  1,  9),
        array( 12,  5,  1, 15, 14, 13,  4, 10,  0,  7,  6,  3,  9,  2,  8, 11),
        array( 13, 11,  7, 14, 12,  1,  3,  9,  5,  0, 15,  4,  8,  6,  2, 10),
        array(  6, 15, 14,  9, 11,  3,  0,  8, 12,  2, 13,  7,  1,  4, 10,  5),
        array( 10,  2,  8,  4,  7,  6,  1,  5, 15, 11,  9, 14,  3, 12, 13 , 0),
        array(  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15),
        array( 14, 10,  4,  8,  9, 15, 13,  6,  1, 12,  0,  2, 11,  7,  5,  3)
    );

    const BLOCKBYTES = 128;
    const OUTBYTES   = 64;
    const KEYBYTES   = 64;

    /**
     * Turn two 32-bit integers into a fixed array representing a 64-bit integer.
     *
     * @internal You should not use this directly from another application
     *
     * @param int $high
     * @param int $low
     * @return ParagonIE_Sodium_Core32_Int64
     * @throws SodiumException
     * @throws TypeError
     */
    public static function new64($high, $low)
    {
        return ParagonIE_Sodium_Core32_Int64::fromInts($low, $high);
    }

    /**
     * Convert an arbitrary number into an SplFixedArray of two 32-bit integers
     * that represents a 64-bit integer.
     *
     * @internal You should not use this directly from another application
     *
     * @param int $num
     * @return ParagonIE_Sodium_Core32_Int64
     * @throws SodiumException
     * @throws TypeError
     */
    protected static function to64($num)
    {
        list($hi, $lo) = self::numericTo64BitInteger($num);
        return self::new64($hi, $lo);
    }

    /**
     * Adds two 64-bit integers together, returning their sum as a SplFixedArray
     * containing two 32-bit integers (representing a 64-bit integer).
     *
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core32_Int64 $x
     * @param ParagonIE_Sodium_Core32_Int64 $y
     * @return ParagonIE_Sodium_Core32_Int64
     */
    protected static function add64($x, $y)
    {
        return $x->addInt64($y);
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core32_Int64 $x
     * @param ParagonIE_Sodium_Core32_Int64 $y
     * @param ParagonIE_Sodium_Core32_Int64 $z
     * @return ParagonIE_Sodium_Core32_Int64
     */
    public static function add364($x, $y, $z)
    {
        return $x->addInt64($y)->addInt64($z);
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core32_Int64 $x
     * @param ParagonIE_Sodium_Core32_Int64 $y
     * @return ParagonIE_Sodium_Core32_Int64
     * @throws TypeError
     */
    public static function xor64(ParagonIE_Sodium_Core32_Int64 $x, ParagonIE_Sodium_Core32_Int64 $y)
    {
        return $x->xorInt64($y);
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core32_Int64 $x
     * @param int $c
     * @return ParagonIE_Sodium_Core32_Int64
     * @throws SodiumException
     * @throws TypeError
     */
    public static function rotr64(ParagonIE_Sodium_Core32_Int64 $x, $c)
    {
        return $x->rotateRight($c);
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param SplFixedArray $x
     * @param int $i
     * @return ParagonIE_Sodium_Core32_Int64
     * @throws SodiumException
     * @throws TypeError
     */
    public static function load64($x, $i)
    {
        /** @var int $l */
        $l = (int) ($x[$i])
             | ((int) ($x[$i+1]) << 8)
             | ((int) ($x[$i+2]) << 16)
             | ((int) ($x[$i+3]) << 24);
        /** @var int $h */
        $h = (int) ($x[$i+4])
             | ((int) ($x[$i+5]) << 8)
             | ((int) ($x[$i+6]) << 16)
             | ((int) ($x[$i+7]) << 24);
        return self::new64($h, $l);
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param SplFixedArray $x
     * @param int $i
     * @param ParagonIE_Sodium_Core32_Int64 $u
     * @return void
     * @throws TypeError
     * @psalm-suppress MixedArgument
     * @psalm-suppress MixedAssignment
     * @psalm-suppress MixedArrayAccess
     * @psalm-suppress MixedArrayAssignment
     * @psalm-suppress MixedArrayOffset
     */
    public static function store64(SplFixedArray $x, $i, ParagonIE_Sodium_Core32_Int64 $u)
    {
        $v = clone $u;
        $maxLength = $x->getSize() - 1;
        for ($j = 0; $j < 8; ++$j) {
            $k = 3 - ($j >> 1);
            $x[$i] = $v->limbs[$k] & 0xff;
            if (++$i > $maxLength) {
                return;
            }
            $v->limbs[$k] >>= 8;
        }
    }

    /**
     * This just sets the $iv static variable.
     *
     * @internal You should not use this directly from another application
     *
     * @return void
     * @throws SodiumException
     * @throws TypeError
     */
    public static function pseudoConstructor()
    {
        static $called = false;
        if ($called) {
            return;
        }
        self::$iv = new SplFixedArray(8);
        self::$iv[0] = self::new64(0x6a09e667, 0xf3bcc908);
        self::$iv[1] = self::new64(0xbb67ae85, 0x84caa73b);
        self::$iv[2] = self::new64(0x3c6ef372, 0xfe94f82b);
        self::$iv[3] = self::new64(0xa54ff53a, 0x5f1d36f1);
        self::$iv[4] = self::new64(0x510e527f, 0xade682d1);
        self::$iv[5] = self::new64(0x9b05688c, 0x2b3e6c1f);
        self::$iv[6] = self::new64(0x1f83d9ab, 0xfb41bd6b);
        self::$iv[7] = self::new64(0x5be0cd19, 0x137e2179);

        $called = true;
    }

    /**
     * Returns a fresh BLAKE2 context.
     *
     * @internal You should not use this directly from another application
     *
     * @return SplFixedArray
     * @throws TypeError
     * @psalm-suppress MixedArgument
     * @psalm-suppress MixedAssignment
     * @psalm-suppress MixedArrayAccess
     * @psalm-suppress MixedArrayAssignment
     * @psalm-suppress MixedArrayOffset
     * @throws SodiumException
     * @throws TypeError
     */
    protected static function context()
    {
        $ctx    = new SplFixedArray(6);
        $ctx[0] = new SplFixedArray(8);   // h
        $ctx[1] = new SplFixedArray(2);   // t
        $ctx[2] = new SplFixedArray(2);   // f
        $ctx[3] = new SplFixedArray(256); // buf
        $ctx[4] = 0;                      // buflen
        $ctx[5] = 0;                      // last_node (uint8_t)

        for ($i = 8; $i--;) {
            $ctx[0][$i] = self::$iv[$i];
        }
        for ($i = 256; $i--;) {
            $ctx[3][$i] = 0;
        }

        $zero = self::new64(0, 0);
        $ctx[1][0] = $zero;
        $ctx[1][1] = $zero;
        $ctx[2][0] = $zero;
        $ctx[2][1] = $zero;

        return $ctx;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param SplFixedArray $ctx
     * @param SplFixedArray $buf
     * @return void
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     * @psalm-suppress MixedArrayAccess
     * @psalm-suppress MixedArrayAssignment
     * @psalm-suppress MixedAssignment
     */
    protected static function compress(SplFixedArray $ctx, SplFixedArray $buf)
    {
        $m = new SplFixedArray(16);
        $v = new SplFixedArray(16);

        for ($i = 16; $i--;) {
            $m[$i] = self::load64($buf, $i << 3);
        }

        for ($i = 8; $i--;) {
            $v[$i] = $ctx[0][$i];
        }

        $v[ 8] = self::$iv[0];
        $v[ 9] = self::$iv[1];
        $v[10] = self::$iv[2];
        $v[11] = self::$iv[3];

        $v[12] = self::xor64($ctx[1][0], self::$iv[4]);
        $v[13] = self::xor64($ctx[1][1], self::$iv[5]);
        $v[14] = self::xor64($ctx[2][0], self::$iv[6]);
        $v[15] = self::xor64($ctx[2][1], self::$iv[7]);

        for ($r = 0; $r < 12; ++$r) {
            $v = self::G($r, 0, 0, 4, 8, 12, $v, $m);
            $v = self::G($r, 1, 1, 5, 9, 13, $v, $m);
            $v = self::G($r, 2, 2, 6, 10, 14, $v, $m);
            $v = self::G($r, 3, 3, 7, 11, 15, $v, $m);
            $v = self::G($r, 4, 0, 5, 10, 15, $v, $m);
            $v = self::G($r, 5, 1, 6, 11, 12, $v, $m);
            $v = self::G($r, 6, 2, 7, 8, 13, $v, $m);
            $v = self::G($r, 7, 3, 4, 9, 14, $v, $m);
        }

        for ($i = 8; $i--;) {
            $ctx[0][$i] = self::xor64(
                $ctx[0][$i], self::xor64($v[$i], $v[$i+8])
            );
        }
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param int $r
     * @param int $i
     * @param int $a
     * @param int $b
     * @param int $c
     * @param int $d
     * @param SplFixedArray $v
     * @param SplFixedArray $m
     * @return SplFixedArray
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     * @psalm-suppress MixedArrayOffset
     */
    public static function G($r, $i, $a, $b, $c, $d, SplFixedArray $v, SplFixedArray $m)
    {
        $v[$a] = self::add364($v[$a], $v[$b], $m[self::$sigma[$r][$i << 1]]);
        $v[$d] = self::rotr64(self::xor64($v[$d], $v[$a]), 32);
        $v[$c] = self::add64($v[$c], $v[$d]);
        $v[$b] = self::rotr64(self::xor64($v[$b], $v[$c]), 24);
        $v[$a] = self::add364($v[$a], $v[$b], $m[self::$sigma[$r][($i << 1) + 1]]);
        $v[$d] = self::rotr64(self::xor64($v[$d], $v[$a]), 16);
        $v[$c] = self::add64($v[$c], $v[$d]);
        $v[$b] = self::rotr64(self::xor64($v[$b], $v[$c]), 63);
        return $v;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param SplFixedArray $ctx
     * @param int $inc
     * @return void
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     * @psalm-suppress MixedArrayAccess
     * @psalm-suppress MixedArrayAssignment
     */
    public static function increment_counter($ctx, $inc)
    {
        if ($inc < 0) {
            throw new SodiumException('Increasing by a negative number makes no sense.');
        }
        $t = self::to64($inc);
        # S->t is $ctx[1] in our implementation

        # S->t[0] = ( uint64_t )( t >> 0 );
        $ctx[1][0] = self::add64($ctx[1][0], $t);

        # S->t[1] += ( S->t[0] < inc );
        if (!($ctx[1][0] instanceof ParagonIE_Sodium_Core32_Int64)) {
            throw new TypeError('Not an int64');
        }
        /** @var ParagonIE_Sodium_Core32_Int64 $c*/
        $c = $ctx[1][0];
        if ($c->isLessThanInt($inc)) {
            $ctx[1][1] = self::add64($ctx[1][1], self::to64(1));
        }
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param SplFixedArray $ctx
     * @param SplFixedArray $p
     * @param int $plen
     * @return void
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     * @psalm-suppress MixedAssignment
     * @psalm-suppress MixedArrayAccess
     * @psalm-suppress MixedArrayAssignment
     * @psalm-suppress MixedArrayOffset
     * @psalm-suppress MixedMethodCall
     * @psalm-suppress MixedOperand
     */
    public static function update(SplFixedArray $ctx, SplFixedArray $p, $plen)
    {
        self::pseudoConstructor();

        $offset = 0;
        while ($plen > 0) {
            $left = $ctx[4];
            $fill = 256 - $left;

            if ($plen > $fill) {
                # memcpy( S->buf + left, in, fill ); /* Fill buffer */
                for ($i = $fill; $i--;) {
                    $ctx[3][$i + $left] = $p[$i + $offset];
                }

                # S->buflen += fill;
                $ctx[4] += $fill;

                # blake2b_increment_counter( S, BLAKE2B_BLOCKBYTES );
                self::increment_counter($ctx, 128);

                # blake2b_compress( S, S->buf ); /* Compress */
                self::compress($ctx, $ctx[3]);

                # memcpy( S->buf, S->buf + BLAKE2B_BLOCKBYTES, BLAKE2B_BLOCKBYTES ); /* Shift buffer left */
                for ($i = 128; $i--;) {
                    $ctx[3][$i] = $ctx[3][$i + 128];
                }

                # S->buflen -= BLAKE2B_BLOCKBYTES;
                $ctx[4] -= 128;

                # in += fill;
                $offset += $fill;

                # inlen -= fill;
                $plen -= $fill;
            } else {
                for ($i = $plen; $i--;) {
                    $ctx[3][$i + $left] = $p[$i + $offset];
                }
                $ctx[4] += $plen;
                $offset += $plen;
                $plen -= $plen;
            }
        }
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param SplFixedArray $ctx
     * @param SplFixedArray $out
     * @return SplFixedArray
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     * @psalm-suppress MixedAssignment
     * @psalm-suppress MixedArrayAccess
     * @psalm-suppress MixedArrayAssignment
     * @psalm-suppress MixedArrayOffset
     * @psalm-suppress MixedMethodCall
     * @psalm-suppress MixedOperand
     */
    public static function finish(SplFixedArray $ctx, SplFixedArray $out)
    {
        self::pseudoConstructor();
        if ($ctx[4] > 128) {
            self::increment_counter($ctx, 128);
            self::compress($ctx, $ctx[3]);
            $ctx[4] -= 128;
            if ($ctx[4] > 128) {
                throw new SodiumException('Failed to assert that buflen <= 128 bytes');
            }
            for ($i = $ctx[4]; $i--;) {
                $ctx[3][$i] = $ctx[3][$i + 128];
            }
        }

        self::increment_counter($ctx, $ctx[4]);
        $ctx[2][0] = self::new64(0xffffffff, 0xffffffff);

        for ($i = 256 - $ctx[4]; $i--;) {
            /** @var int $i */
            $ctx[3][$i + $ctx[4]] = 0;
        }

        self::compress($ctx, $ctx[3]);

        $i = (int) (($out->getSize() - 1) / 8);
        for (; $i >= 0; --$i) {
            self::store64($out, $i << 3, $ctx[0][$i]);
        }
        return $out;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param SplFixedArray|null $key
     * @param int $outlen
     * @param SplFixedArray|null $salt
     * @param SplFixedArray|null $personal
     * @return SplFixedArray
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     * @psalm-suppress MixedAssignment
     * @psalm-suppress MixedArrayAccess
     * @psalm-suppress MixedArrayAssignment
     * @psalm-suppress MixedMethodCall
     */
    public static function init(
        $key = null,
        $outlen = 64,
        $salt = null,
        $personal = null
    ) {
        self::pseudoConstructor();
        $klen = 0;

        if ($key !== null) {
            if (count($key) > 64) {
                throw new SodiumException('Invalid key size');
            }
            $klen = count($key);
        }

        if ($outlen > 64) {
            throw new SodiumException('Invalid output size');
        }

        $ctx = self::context();

        $p = new SplFixedArray(64);
        // Zero our param buffer...
        for ($i = 64; --$i;) {
            $p[$i] = 0;
        }

        $p[0] = $outlen; // digest_length
        $p[1] = $klen;   // key_length
        $p[2] = 1;       // fanout
        $p[3] = 1;       // depth

        if ($salt instanceof SplFixedArray) {
            // salt: [32] through [47]
            for ($i = 0; $i < 16; ++$i) {
                $p[32 + $i] = (int) $salt[$i];
            }
        }
        if ($personal instanceof SplFixedArray) {
            // personal: [48] through [63]
            for ($i = 0; $i < 16; ++$i) {
                $p[48 + $i] = (int) $personal[$i];
            }
        }

        $ctx[0][0] = self::xor64(
            $ctx[0][0],
            self::load64($p, 0)
        );

        if ($salt instanceof SplFixedArray || $personal instanceof SplFixedArray) {
            // We need to do what blake2b_init_param() does:
            for ($i = 1; $i < 8; ++$i) {
                $ctx[0][$i] = self::xor64(
                    $ctx[0][$i],
                    self::load64($p, $i << 3)
                );
            }
        }

        if ($klen > 0 && $key instanceof SplFixedArray) {
            $block = new SplFixedArray(128);
            for ($i = 128; $i--;) {
                $block[$i] = 0;
            }
            for ($i = $klen; $i--;) {
                $block[$i] = $key[$i];
            }
            self::update($ctx, $block, 128);
            $ctx[4] = 128;
        }

        return $ctx;
    }

    /**
     * Convert a string into an SplFixedArray of integers
     *
     * @internal You should not use this directly from another application
     *
     * @param string $str
     * @return SplFixedArray
     * @psalm-suppress MixedArgumentTypeCoercion
     */
    public static function stringToSplFixedArray($str = '')
    {
        $values = unpack('C*', $str);
        return SplFixedArray::fromArray(array_values($values));
    }

    /**
     * Convert an SplFixedArray of integers into a string
     *
     * @internal You should not use this directly from another application
     *
     * @param SplFixedArray $a
     * @return string
     */
    public static function SplFixedArrayToString(SplFixedArray $a)
    {
        /**
         * @var array<int, string|int>
         */
        $arr = $a->toArray();
        $c = $a->count();
        array_unshift($arr, str_repeat('C', $c));
        return (string) (call_user_func_array('pack', $arr));
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param SplFixedArray $ctx
     * @return string
     * @throws TypeError
     * @psalm-suppress MixedArgument
     * @psalm-suppress MixedArrayAccess
     * @psalm-suppress MixedArrayAssignment
     * @psalm-suppress MixedMethodCall
     */
    public static function contextToString(SplFixedArray $ctx)
    {
        $str = '';
        /** @var array<int, ParagonIE_Sodium_Core32_Int64> $ctxA */
        $ctxA = $ctx[0]->toArray();

        # uint64_t h[8];
        for ($i = 0; $i < 8; ++$i) {
            if (!($ctxA[$i] instanceof ParagonIE_Sodium_Core32_Int64)) {
                throw new TypeError('Not an instance of Int64');
            }
            /** @var ParagonIE_Sodium_Core32_Int64 $ctxAi */
            $ctxAi = $ctxA[$i];
            $str .= $ctxAi->toReverseString();
        }

        # uint64_t t[2];
        # uint64_t f[2];
        for ($i = 1; $i < 3; ++$i) {
            /** @var array<int, ParagonIE_Sodium_Core32_Int64> $ctxA */
            $ctxA = $ctx[$i]->toArray();
            /** @var ParagonIE_Sodium_Core32_Int64 $ctxA1 */
            $ctxA1 = $ctxA[0];
            /** @var ParagonIE_Sodium_Core32_Int64 $ctxA2 */
            $ctxA2 = $ctxA[1];

            $str .= $ctxA1->toReverseString();
            $str .= $ctxA2->toReverseString();
        }

        # uint8_t buf[2 * 128];
        $str .= self::SplFixedArrayToString($ctx[3]);

        /** @var int $ctx4 */
        $ctx4 = $ctx[4];

        # size_t buflen;
        $str .= implode('', array(
            self::intToChr($ctx4 & 0xff),
            self::intToChr(($ctx4 >> 8) & 0xff),
            self::intToChr(($ctx4 >> 16) & 0xff),
            self::intToChr(($ctx4 >> 24) & 0xff),
            "\x00\x00\x00\x00"
            /*
            self::intToChr(($ctx4 >> 32) & 0xff),
            self::intToChr(($ctx4 >> 40) & 0xff),
            self::intToChr(($ctx4 >> 48) & 0xff),
            self::intToChr(($ctx4 >> 56) & 0xff)
            */
        ));
        # uint8_t last_node;
        return $str . self::intToChr($ctx[5]) . str_repeat("\x00", 23);
    }

    /**
     * Creates an SplFixedArray containing other SplFixedArray elements, from
     * a string (compatible with \Sodium\crypto_generichash_{init, update, final})
     *
     * @internal You should not use this directly from another application
     *
     * @param string $string
     * @return SplFixedArray
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArrayAccess
     * @psalm-suppress MixedArrayAssignment
     */
    public static function stringToContext($string)
    {
        $ctx = self::context();

        # uint64_t h[8];
        for ($i = 0; $i < 8; ++$i) {
            $ctx[0][$i] = ParagonIE_Sodium_Core32_Int64::fromReverseString(
                self::substr($string, (($i << 3) + 0), 8)
            );
        }

        # uint64_t t[2];
        # uint64_t f[2];
        for ($i = 1; $i < 3; ++$i) {
            $ctx[$i][1] = ParagonIE_Sodium_Core32_Int64::fromReverseString(
                self::substr($string, 72 + (($i - 1) << 4), 8)
            );
            $ctx[$i][0] = ParagonIE_Sodium_Core32_Int64::fromReverseString(
                self::substr($string, 64 + (($i - 1) << 4), 8)
            );
        }

        # uint8_t buf[2 * 128];
        $ctx[3] = self::stringToSplFixedArray(self::substr($string, 96, 256));

        # uint8_t buf[2 * 128];
        $int = 0;
        for ($i = 0; $i < 8; ++$i) {
            $int |= self::chrToInt($string[352 + $i]) << ($i << 3);
        }
        $ctx[4] = $int;

        return $ctx;
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core32/Curve25519.php000064400000403651150755146460020246 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Core32_Curve25519', false)) {
    return;
}

/**
 * Class ParagonIE_Sodium_Core32_Curve25519
 *
 * Implements Curve25519 core functions
 *
 * Based on the ref10 curve25519 code provided by libsodium
 *
 * @ref https://github.com/jedisct1/libsodium/blob/master/src/libsodium/crypto_core/curve25519/ref10/curve25519_ref10.c
 */
abstract class ParagonIE_Sodium_Core32_Curve25519 extends ParagonIE_Sodium_Core32_Curve25519_H
{
    /**
     * Get a field element of size 10 with a value of 0
     *
     * @internal You should not use this directly from another application
     *
     * @return ParagonIE_Sodium_Core32_Curve25519_Fe
     * @throws SodiumException
     * @throws TypeError
     */
    public static function fe_0()
    {
        return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
            array(
                new ParagonIE_Sodium_Core32_Int32(),
                new ParagonIE_Sodium_Core32_Int32(),
                new ParagonIE_Sodium_Core32_Int32(),
                new ParagonIE_Sodium_Core32_Int32(),
                new ParagonIE_Sodium_Core32_Int32(),
                new ParagonIE_Sodium_Core32_Int32(),
                new ParagonIE_Sodium_Core32_Int32(),
                new ParagonIE_Sodium_Core32_Int32(),
                new ParagonIE_Sodium_Core32_Int32(),
                new ParagonIE_Sodium_Core32_Int32()
            )
        );
    }

    /**
     * Get a field element of size 10 with a value of 1
     *
     * @internal You should not use this directly from another application
     *
     * @return ParagonIE_Sodium_Core32_Curve25519_Fe
     * @throws SodiumException
     * @throws TypeError
     */
    public static function fe_1()
    {
        return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
            array(
                ParagonIE_Sodium_Core32_Int32::fromInt(1),
                new ParagonIE_Sodium_Core32_Int32(),
                new ParagonIE_Sodium_Core32_Int32(),
                new ParagonIE_Sodium_Core32_Int32(),
                new ParagonIE_Sodium_Core32_Int32(),
                new ParagonIE_Sodium_Core32_Int32(),
                new ParagonIE_Sodium_Core32_Int32(),
                new ParagonIE_Sodium_Core32_Int32(),
                new ParagonIE_Sodium_Core32_Int32(),
                new ParagonIE_Sodium_Core32_Int32()
            )
        );
    }

    /**
     * Add two field elements.
     *
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $f
     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $g
     * @return ParagonIE_Sodium_Core32_Curve25519_Fe
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedAssignment
     * @psalm-suppress MixedMethodCall
     */
    public static function fe_add(
        ParagonIE_Sodium_Core32_Curve25519_Fe $f,
        ParagonIE_Sodium_Core32_Curve25519_Fe $g
    ) {
        $arr = array();
        for ($i = 0; $i < 10; ++$i) {
            $arr[$i] = $f[$i]->addInt32($g[$i]);
        }
        /** @var array<int, ParagonIE_Sodium_Core32_Int32> $arr */
        return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray($arr);
    }

    /**
     * Constant-time conditional move.
     *
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $f
     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $g
     * @param int $b
     * @return ParagonIE_Sodium_Core32_Curve25519_Fe
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedAssignment
     * @psalm-suppress MixedMethodCall
     */
    public static function fe_cmov(
        ParagonIE_Sodium_Core32_Curve25519_Fe $f,
        ParagonIE_Sodium_Core32_Curve25519_Fe $g,
        $b = 0
    ) {
        /** @var array<int, ParagonIE_Sodium_Core32_Int32> $h */
        $h = array();
        for ($i = 0; $i < 10; ++$i) {
            if (!($f[$i] instanceof ParagonIE_Sodium_Core32_Int32)) {
                throw new TypeError('Expected Int32');
            }
            if (!($g[$i] instanceof ParagonIE_Sodium_Core32_Int32)) {
                throw new TypeError('Expected Int32');
            }
            $h[$i] = $f[$i]->xorInt32(
                $f[$i]->xorInt32($g[$i])->mask($b)
            );
        }
        /** @var array<int, ParagonIE_Sodium_Core32_Int32> $h */
        return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray($h);
    }

    /**
     * Create a copy of a field element.
     *
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $f
     * @return ParagonIE_Sodium_Core32_Curve25519_Fe
     */
    public static function fe_copy(ParagonIE_Sodium_Core32_Curve25519_Fe $f)
    {
        $h = clone $f;
        return $h;
    }

    /**
     * Give: 32-byte string.
     * Receive: A field element object to use for internal calculations.
     *
     * @internal You should not use this directly from another application
     *
     * @param string $s
     * @return ParagonIE_Sodium_Core32_Curve25519_Fe
     * @throws RangeException
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedMethodCall
     */
    public static function fe_frombytes($s)
    {
        if (self::strlen($s) !== 32) {
            throw new RangeException('Expected a 32-byte string.');
        }
        /** @var ParagonIE_Sodium_Core32_Int32 $h0 */
        $h0 = ParagonIE_Sodium_Core32_Int32::fromInt(
            self::load_4($s)
        );
        /** @var ParagonIE_Sodium_Core32_Int32 $h1 */
        $h1 = ParagonIE_Sodium_Core32_Int32::fromInt(
            self::load_3(self::substr($s, 4, 3)) << 6
        );
        /** @var ParagonIE_Sodium_Core32_Int32 $h2 */
        $h2 = ParagonIE_Sodium_Core32_Int32::fromInt(
            self::load_3(self::substr($s, 7, 3)) << 5
        );
        /** @var ParagonIE_Sodium_Core32_Int32 $h3 */
        $h3 = ParagonIE_Sodium_Core32_Int32::fromInt(
            self::load_3(self::substr($s, 10, 3)) << 3
        );
        /** @var ParagonIE_Sodium_Core32_Int32 $h4 */
        $h4 = ParagonIE_Sodium_Core32_Int32::fromInt(
            self::load_3(self::substr($s, 13, 3)) << 2
        );
        /** @var ParagonIE_Sodium_Core32_Int32 $h5 */
        $h5 = ParagonIE_Sodium_Core32_Int32::fromInt(
            self::load_4(self::substr($s, 16, 4))
        );
        /** @var ParagonIE_Sodium_Core32_Int32 $h6 */
        $h6 = ParagonIE_Sodium_Core32_Int32::fromInt(
            self::load_3(self::substr($s, 20, 3)) << 7
        );
        /** @var ParagonIE_Sodium_Core32_Int32 $h7 */
        $h7 = ParagonIE_Sodium_Core32_Int32::fromInt(
            self::load_3(self::substr($s, 23, 3)) << 5
        );
        /** @var ParagonIE_Sodium_Core32_Int32 $h8 */
        $h8 = ParagonIE_Sodium_Core32_Int32::fromInt(
            self::load_3(self::substr($s, 26, 3)) << 4
        );
        /** @var ParagonIE_Sodium_Core32_Int32 $h9 */
        $h9 = ParagonIE_Sodium_Core32_Int32::fromInt(
            (self::load_3(self::substr($s, 29, 3)) & 8388607) << 2
        );

        $carry9 = $h9->addInt(1 << 24)->shiftRight(25);
        $h0 = $h0->addInt32($carry9->mulInt(19, 5));
        $h9 = $h9->subInt32($carry9->shiftLeft(25));

        $carry1 = $h1->addInt(1 << 24)->shiftRight(25);
        $h2 = $h2->addInt32($carry1);
        $h1 = $h1->subInt32($carry1->shiftLeft(25));

        $carry3 = $h3->addInt(1 << 24)->shiftRight(25);
        $h4 = $h4->addInt32($carry3);
        $h3 = $h3->subInt32($carry3->shiftLeft(25));

        $carry5 = $h5->addInt(1 << 24)->shiftRight(25);
        $h6 = $h6->addInt32($carry5);
        $h5 = $h5->subInt32($carry5->shiftLeft(25));

        $carry7 = $h7->addInt(1 << 24)->shiftRight(25);
        $h8 = $h8->addInt32($carry7);
        $h7 = $h7->subInt32($carry7->shiftLeft(25));

        $carry0 = $h0->addInt(1 << 25)->shiftRight(26);
        $h1 = $h1->addInt32($carry0);
        $h0 = $h0->subInt32($carry0->shiftLeft(26));

        $carry2 = $h2->addInt(1 << 25)->shiftRight(26);
        $h3 = $h3->addInt32($carry2);
        $h2 = $h2->subInt32($carry2->shiftLeft(26));

        $carry4 = $h4->addInt(1 << 25)->shiftRight(26);
        $h5 = $h5->addInt32($carry4);
        $h4 = $h4->subInt32($carry4->shiftLeft(26));

        $carry6 = $h6->addInt(1 << 25)->shiftRight(26);
        $h7 = $h7->addInt32($carry6);
        $h6 = $h6->subInt32($carry6->shiftLeft(26));

        $carry8 = $h8->addInt(1 << 25)->shiftRight(26);
        $h9 = $h9->addInt32($carry8);
        $h8 = $h8->subInt32($carry8->shiftLeft(26));

        return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
            array($h0, $h1, $h2,$h3, $h4, $h5, $h6, $h7, $h8, $h9)
        );
    }

    /**
     * Convert a field element to a byte string.
     *
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $h
     * @return string
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedAssignment
     * @psalm-suppress MixedMethodCall
     */
    public static function fe_tobytes(ParagonIE_Sodium_Core32_Curve25519_Fe $h)
    {
        /**
         * @var ParagonIE_Sodium_Core32_Int64[] $f
         * @var ParagonIE_Sodium_Core32_Int64 $q
         */
        $f = array();

        for ($i = 0; $i < 10; ++$i) {
            $f[$i] = $h[$i]->toInt64();
        }

        $q = $f[9]->mulInt(19, 5)->addInt(1 << 14)->shiftRight(25)
            ->addInt64($f[0])->shiftRight(26)
            ->addInt64($f[1])->shiftRight(25)
            ->addInt64($f[2])->shiftRight(26)
            ->addInt64($f[3])->shiftRight(25)
            ->addInt64($f[4])->shiftRight(26)
            ->addInt64($f[5])->shiftRight(25)
            ->addInt64($f[6])->shiftRight(26)
            ->addInt64($f[7])->shiftRight(25)
            ->addInt64($f[8])->shiftRight(26)
            ->addInt64($f[9])->shiftRight(25);

        $f[0] = $f[0]->addInt64($q->mulInt(19, 5));

        $carry0 = $f[0]->shiftRight(26);
        $f[1] = $f[1]->addInt64($carry0);
        $f[0] = $f[0]->subInt64($carry0->shiftLeft(26));

        $carry1 = $f[1]->shiftRight(25);
        $f[2] = $f[2]->addInt64($carry1);
        $f[1] = $f[1]->subInt64($carry1->shiftLeft(25));

        $carry2 = $f[2]->shiftRight(26);
        $f[3] = $f[3]->addInt64($carry2);
        $f[2] = $f[2]->subInt64($carry2->shiftLeft(26));

        $carry3 = $f[3]->shiftRight(25);
        $f[4] = $f[4]->addInt64($carry3);
        $f[3] = $f[3]->subInt64($carry3->shiftLeft(25));

        $carry4 = $f[4]->shiftRight(26);
        $f[5] = $f[5]->addInt64($carry4);
        $f[4] = $f[4]->subInt64($carry4->shiftLeft(26));

        $carry5 = $f[5]->shiftRight(25);
        $f[6] = $f[6]->addInt64($carry5);
        $f[5] = $f[5]->subInt64($carry5->shiftLeft(25));

        $carry6 = $f[6]->shiftRight(26);
        $f[7] = $f[7]->addInt64($carry6);
        $f[6] = $f[6]->subInt64($carry6->shiftLeft(26));

        $carry7 = $f[7]->shiftRight(25);
        $f[8] = $f[8]->addInt64($carry7);
        $f[7] = $f[7]->subInt64($carry7->shiftLeft(25));

        $carry8 = $f[8]->shiftRight(26);
        $f[9] = $f[9]->addInt64($carry8);
        $f[8] = $f[8]->subInt64($carry8->shiftLeft(26));

        $carry9 = $f[9]->shiftRight(25);
        $f[9] = $f[9]->subInt64($carry9->shiftLeft(25));

        $h0 = $f[0]->toInt32()->toInt();
        $h1 = $f[1]->toInt32()->toInt();
        $h2 = $f[2]->toInt32()->toInt();
        $h3 = $f[3]->toInt32()->toInt();
        $h4 = $f[4]->toInt32()->toInt();
        $h5 = $f[5]->toInt32()->toInt();
        $h6 = $f[6]->toInt32()->toInt();
        $h7 = $f[7]->toInt32()->toInt();
        $h8 = $f[8]->toInt32()->toInt();
        $h9 = $f[9]->toInt32()->toInt();

        /**
         * @var array<int, int>
         */
        $s = array(
            (int) (($h0 >> 0) & 0xff),
            (int) (($h0 >> 8) & 0xff),
            (int) (($h0 >> 16) & 0xff),
            (int) ((($h0 >> 24) | ($h1 << 2)) & 0xff),
            (int) (($h1 >> 6) & 0xff),
            (int) (($h1 >> 14) & 0xff),
            (int) ((($h1 >> 22) | ($h2 << 3)) & 0xff),
            (int) (($h2 >> 5) & 0xff),
            (int) (($h2 >> 13) & 0xff),
            (int) ((($h2 >> 21) | ($h3 << 5)) & 0xff),
            (int) (($h3 >> 3) & 0xff),
            (int) (($h3 >> 11) & 0xff),
            (int) ((($h3 >> 19) | ($h4 << 6)) & 0xff),
            (int) (($h4 >> 2) & 0xff),
            (int) (($h4 >> 10) & 0xff),
            (int) (($h4 >> 18) & 0xff),
            (int) (($h5 >> 0) & 0xff),
            (int) (($h5 >> 8) & 0xff),
            (int) (($h5 >> 16) & 0xff),
            (int) ((($h5 >> 24) | ($h6 << 1)) & 0xff),
            (int) (($h6 >> 7) & 0xff),
            (int) (($h6 >> 15) & 0xff),
            (int) ((($h6 >> 23) | ($h7 << 3)) & 0xff),
            (int) (($h7 >> 5) & 0xff),
            (int) (($h7 >> 13) & 0xff),
            (int) ((($h7 >> 21) | ($h8 << 4)) & 0xff),
            (int) (($h8 >> 4) & 0xff),
            (int) (($h8 >> 12) & 0xff),
            (int) ((($h8 >> 20) | ($h9 << 6)) & 0xff),
            (int) (($h9 >> 2) & 0xff),
            (int) (($h9 >> 10) & 0xff),
            (int) (($h9 >> 18) & 0xff)
        );
        return self::intArrayToString($s);
    }

    /**
     * Is a field element negative? (1 = yes, 0 = no. Used in calculations.)
     *
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $f
     * @return int
     * @throws SodiumException
     * @throws TypeError
     */
    public static function fe_isnegative(ParagonIE_Sodium_Core32_Curve25519_Fe $f)
    {
        $str = self::fe_tobytes($f);
        return (int) (self::chrToInt($str[0]) & 1);
    }

    /**
     * Returns 0 if this field element results in all NUL bytes.
     *
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $f
     * @return bool
     * @throws SodiumException
     * @throws TypeError
     */
    public static function fe_isnonzero(ParagonIE_Sodium_Core32_Curve25519_Fe $f)
    {
        static $zero;
        if ($zero === null) {
            $zero = str_repeat("\x00", 32);
        }
        $str = self::fe_tobytes($f);
        /** @var string $zero */
        return !self::verify_32($str, $zero);
    }

    /**
     * Multiply two field elements
     *
     * h = f * g
     *
     * @internal You should not use this directly from another application
     *
     * @security Is multiplication a source of timing leaks? If so, can we do
     *           anything to prevent that from happening?
     *
     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $f
     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $g
     * @return ParagonIE_Sodium_Core32_Curve25519_Fe
     * @throws SodiumException
     * @throws TypeError
     */
    public static function fe_mul(
        ParagonIE_Sodium_Core32_Curve25519_Fe $f,
        ParagonIE_Sodium_Core32_Curve25519_Fe $g
    ) {
        /**
         * @var ParagonIE_Sodium_Core32_Int32[] $f
         * @var ParagonIE_Sodium_Core32_Int32[] $g
         * @var ParagonIE_Sodium_Core32_Int64 $f0
         * @var ParagonIE_Sodium_Core32_Int64 $f1
         * @var ParagonIE_Sodium_Core32_Int64 $f2
         * @var ParagonIE_Sodium_Core32_Int64 $f3
         * @var ParagonIE_Sodium_Core32_Int64 $f4
         * @var ParagonIE_Sodium_Core32_Int64 $f5
         * @var ParagonIE_Sodium_Core32_Int64 $f6
         * @var ParagonIE_Sodium_Core32_Int64 $f7
         * @var ParagonIE_Sodium_Core32_Int64 $f8
         * @var ParagonIE_Sodium_Core32_Int64 $f9
         * @var ParagonIE_Sodium_Core32_Int64 $g0
         * @var ParagonIE_Sodium_Core32_Int64 $g1
         * @var ParagonIE_Sodium_Core32_Int64 $g2
         * @var ParagonIE_Sodium_Core32_Int64 $g3
         * @var ParagonIE_Sodium_Core32_Int64 $g4
         * @var ParagonIE_Sodium_Core32_Int64 $g5
         * @var ParagonIE_Sodium_Core32_Int64 $g6
         * @var ParagonIE_Sodium_Core32_Int64 $g7
         * @var ParagonIE_Sodium_Core32_Int64 $g8
         * @var ParagonIE_Sodium_Core32_Int64 $g9
         */
        $f0 = $f[0]->toInt64();
        $f1 = $f[1]->toInt64();
        $f2 = $f[2]->toInt64();
        $f3 = $f[3]->toInt64();
        $f4 = $f[4]->toInt64();
        $f5 = $f[5]->toInt64();
        $f6 = $f[6]->toInt64();
        $f7 = $f[7]->toInt64();
        $f8 = $f[8]->toInt64();
        $f9 = $f[9]->toInt64();
        $g0 = $g[0]->toInt64();
        $g1 = $g[1]->toInt64();
        $g2 = $g[2]->toInt64();
        $g3 = $g[3]->toInt64();
        $g4 = $g[4]->toInt64();
        $g5 = $g[5]->toInt64();
        $g6 = $g[6]->toInt64();
        $g7 = $g[7]->toInt64();
        $g8 = $g[8]->toInt64();
        $g9 = $g[9]->toInt64();
        $g1_19 = $g1->mulInt(19, 5); /* 2^4 <= 19 <= 2^5, but we only want 5 bits */
        $g2_19 = $g2->mulInt(19, 5);
        $g3_19 = $g3->mulInt(19, 5);
        $g4_19 = $g4->mulInt(19, 5);
        $g5_19 = $g5->mulInt(19, 5);
        $g6_19 = $g6->mulInt(19, 5);
        $g7_19 = $g7->mulInt(19, 5);
        $g8_19 = $g8->mulInt(19, 5);
        $g9_19 = $g9->mulInt(19, 5);
        $f1_2 = $f1->shiftLeft(1);
        $f3_2 = $f3->shiftLeft(1);
        $f5_2 = $f5->shiftLeft(1);
        $f7_2 = $f7->shiftLeft(1);
        $f9_2 = $f9->shiftLeft(1);
        $f0g0    = $f0->mulInt64($g0, 27);
        $f0g1    = $f0->mulInt64($g1, 27);
        $f0g2    = $f0->mulInt64($g2, 27);
        $f0g3    = $f0->mulInt64($g3, 27);
        $f0g4    = $f0->mulInt64($g4, 27);
        $f0g5    = $f0->mulInt64($g5, 27);
        $f0g6    = $f0->mulInt64($g6, 27);
        $f0g7    = $f0->mulInt64($g7, 27);
        $f0g8    = $f0->mulInt64($g8, 27);
        $f0g9    = $f0->mulInt64($g9, 27);
        $f1g0    = $f1->mulInt64($g0, 27);
        $f1g1_2  = $f1_2->mulInt64($g1, 27);
        $f1g2    = $f1->mulInt64($g2, 27);
        $f1g3_2  = $f1_2->mulInt64($g3, 27);
        $f1g4    = $f1->mulInt64($g4, 30);
        $f1g5_2  = $f1_2->mulInt64($g5, 30);
        $f1g6    = $f1->mulInt64($g6, 30);
        $f1g7_2  = $f1_2->mulInt64($g7, 30);
        $f1g8    = $f1->mulInt64($g8, 30);
        $f1g9_38 = $g9_19->mulInt64($f1_2, 30);
        $f2g0    = $f2->mulInt64($g0, 30);
        $f2g1    = $f2->mulInt64($g1, 29);
        $f2g2    = $f2->mulInt64($g2, 30);
        $f2g3    = $f2->mulInt64($g3, 29);
        $f2g4    = $f2->mulInt64($g4, 30);
        $f2g5    = $f2->mulInt64($g5, 29);
        $f2g6    = $f2->mulInt64($g6, 30);
        $f2g7    = $f2->mulInt64($g7, 29);
        $f2g8_19 = $g8_19->mulInt64($f2, 30);
        $f2g9_19 = $g9_19->mulInt64($f2, 30);
        $f3g0    = $f3->mulInt64($g0, 30);
        $f3g1_2  = $f3_2->mulInt64($g1, 30);
        $f3g2    = $f3->mulInt64($g2, 30);
        $f3g3_2  = $f3_2->mulInt64($g3, 30);
        $f3g4    = $f3->mulInt64($g4, 30);
        $f3g5_2  = $f3_2->mulInt64($g5, 30);
        $f3g6    = $f3->mulInt64($g6, 30);
        $f3g7_38 = $g7_19->mulInt64($f3_2, 30);
        $f3g8_19 = $g8_19->mulInt64($f3, 30);
        $f3g9_38 = $g9_19->mulInt64($f3_2, 30);
        $f4g0    = $f4->mulInt64($g0, 30);
        $f4g1    = $f4->mulInt64($g1, 30);
        $f4g2    = $f4->mulInt64($g2, 30);
        $f4g3    = $f4->mulInt64($g3, 30);
        $f4g4    = $f4->mulInt64($g4, 30);
        $f4g5    = $f4->mulInt64($g5, 30);
        $f4g6_19 = $g6_19->mulInt64($f4, 30);
        $f4g7_19 = $g7_19->mulInt64($f4, 30);
        $f4g8_19 = $g8_19->mulInt64($f4, 30);
        $f4g9_19 = $g9_19->mulInt64($f4, 30);
        $f5g0    = $f5->mulInt64($g0, 30);
        $f5g1_2  = $f5_2->mulInt64($g1, 30);
        $f5g2    = $f5->mulInt64($g2, 30);
        $f5g3_2  = $f5_2->mulInt64($g3, 30);
        $f5g4    = $f5->mulInt64($g4, 30);
        $f5g5_38 = $g5_19->mulInt64($f5_2, 30);
        $f5g6_19 = $g6_19->mulInt64($f5, 30);
        $f5g7_38 = $g7_19->mulInt64($f5_2, 30);
        $f5g8_19 = $g8_19->mulInt64($f5, 30);
        $f5g9_38 = $g9_19->mulInt64($f5_2, 30);
        $f6g0    = $f6->mulInt64($g0, 30);
        $f6g1    = $f6->mulInt64($g1, 30);
        $f6g2    = $f6->mulInt64($g2, 30);
        $f6g3    = $f6->mulInt64($g3, 30);
        $f6g4_19 = $g4_19->mulInt64($f6, 30);
        $f6g5_19 = $g5_19->mulInt64($f6, 30);
        $f6g6_19 = $g6_19->mulInt64($f6, 30);
        $f6g7_19 = $g7_19->mulInt64($f6, 30);
        $f6g8_19 = $g8_19->mulInt64($f6, 30);
        $f6g9_19 = $g9_19->mulInt64($f6, 30);
        $f7g0    = $f7->mulInt64($g0, 30);
        $f7g1_2  = $g1->mulInt64($f7_2, 30);
        $f7g2    = $f7->mulInt64($g2, 30);
        $f7g3_38 = $g3_19->mulInt64($f7_2, 30);
        $f7g4_19 = $g4_19->mulInt64($f7, 30);
        $f7g5_38 = $g5_19->mulInt64($f7_2, 30);
        $f7g6_19 = $g6_19->mulInt64($f7, 30);
        $f7g7_38 = $g7_19->mulInt64($f7_2, 30);
        $f7g8_19 = $g8_19->mulInt64($f7, 30);
        $f7g9_38 = $g9_19->mulInt64($f7_2, 30);
        $f8g0    = $f8->mulInt64($g0, 30);
        $f8g1    = $f8->mulInt64($g1, 29);
        $f8g2_19 = $g2_19->mulInt64($f8, 30);
        $f8g3_19 = $g3_19->mulInt64($f8, 30);
        $f8g4_19 = $g4_19->mulInt64($f8, 30);
        $f8g5_19 = $g5_19->mulInt64($f8, 30);
        $f8g6_19 = $g6_19->mulInt64($f8, 30);
        $f8g7_19 = $g7_19->mulInt64($f8, 30);
        $f8g8_19 = $g8_19->mulInt64($f8, 30);
        $f8g9_19 = $g9_19->mulInt64($f8, 30);
        $f9g0    = $f9->mulInt64($g0, 30);
        $f9g1_38 = $g1_19->mulInt64($f9_2, 30);
        $f9g2_19 = $g2_19->mulInt64($f9, 30);
        $f9g3_38 = $g3_19->mulInt64($f9_2, 30);
        $f9g4_19 = $g4_19->mulInt64($f9, 30);
        $f9g5_38 = $g5_19->mulInt64($f9_2, 30);
        $f9g6_19 = $g6_19->mulInt64($f9, 30);
        $f9g7_38 = $g7_19->mulInt64($f9_2, 30);
        $f9g8_19 = $g8_19->mulInt64($f9, 30);
        $f9g9_38 = $g9_19->mulInt64($f9_2, 30);

        // $h0 = $f0g0 + $f1g9_38 + $f2g8_19 + $f3g7_38 + $f4g6_19 + $f5g5_38 + $f6g4_19 + $f7g3_38 + $f8g2_19 + $f9g1_38;
        $h0 = $f0g0->addInt64($f1g9_38)->addInt64($f2g8_19)->addInt64($f3g7_38)
            ->addInt64($f4g6_19)->addInt64($f5g5_38)->addInt64($f6g4_19)
            ->addInt64($f7g3_38)->addInt64($f8g2_19)->addInt64($f9g1_38);

        // $h1 = $f0g1 + $f1g0    + $f2g9_19 + $f3g8_19 + $f4g7_19 + $f5g6_19 + $f6g5_19 + $f7g4_19 + $f8g3_19 + $f9g2_19;
        $h1 = $f0g1->addInt64($f1g0)->addInt64($f2g9_19)->addInt64($f3g8_19)
            ->addInt64($f4g7_19)->addInt64($f5g6_19)->addInt64($f6g5_19)
            ->addInt64($f7g4_19)->addInt64($f8g3_19)->addInt64($f9g2_19);

        // $h2 = $f0g2 + $f1g1_2  + $f2g0    + $f3g9_38 + $f4g8_19 + $f5g7_38 + $f6g6_19 + $f7g5_38 + $f8g4_19 + $f9g3_38;
        $h2 = $f0g2->addInt64($f1g1_2)->addInt64($f2g0)->addInt64($f3g9_38)
            ->addInt64($f4g8_19)->addInt64($f5g7_38)->addInt64($f6g6_19)
            ->addInt64($f7g5_38)->addInt64($f8g4_19)->addInt64($f9g3_38);

        // $h3 = $f0g3 + $f1g2    + $f2g1    + $f3g0    + $f4g9_19 + $f5g8_19 + $f6g7_19 + $f7g6_19 + $f8g5_19 + $f9g4_19;
        $h3 = $f0g3->addInt64($f1g2)->addInt64($f2g1)->addInt64($f3g0)
            ->addInt64($f4g9_19)->addInt64($f5g8_19)->addInt64($f6g7_19)
            ->addInt64($f7g6_19)->addInt64($f8g5_19)->addInt64($f9g4_19);

        // $h4 = $f0g4 + $f1g3_2  + $f2g2    + $f3g1_2  + $f4g0    + $f5g9_38 + $f6g8_19 + $f7g7_38 + $f8g6_19 + $f9g5_38;
        $h4 = $f0g4->addInt64($f1g3_2)->addInt64($f2g2)->addInt64($f3g1_2)
            ->addInt64($f4g0)->addInt64($f5g9_38)->addInt64($f6g8_19)
            ->addInt64($f7g7_38)->addInt64($f8g6_19)->addInt64($f9g5_38);

        // $h5 = $f0g5 + $f1g4    + $f2g3    + $f3g2    + $f4g1    + $f5g0    + $f6g9_19 + $f7g8_19 + $f8g7_19 + $f9g6_19;
        $h5 = $f0g5->addInt64($f1g4)->addInt64($f2g3)->addInt64($f3g2)
            ->addInt64($f4g1)->addInt64($f5g0)->addInt64($f6g9_19)
            ->addInt64($f7g8_19)->addInt64($f8g7_19)->addInt64($f9g6_19);

        // $h6 = $f0g6 + $f1g5_2  + $f2g4    + $f3g3_2  + $f4g2    + $f5g1_2  + $f6g0    + $f7g9_38 + $f8g8_19 + $f9g7_38;
        $h6 = $f0g6->addInt64($f1g5_2)->addInt64($f2g4)->addInt64($f3g3_2)
            ->addInt64($f4g2)->addInt64($f5g1_2)->addInt64($f6g0)
            ->addInt64($f7g9_38)->addInt64($f8g8_19)->addInt64($f9g7_38);

        // $h7 = $f0g7 + $f1g6    + $f2g5    + $f3g4    + $f4g3    + $f5g2    + $f6g1    + $f7g0    + $f8g9_19 + $f9g8_19;
        $h7 = $f0g7->addInt64($f1g6)->addInt64($f2g5)->addInt64($f3g4)
            ->addInt64($f4g3)->addInt64($f5g2)->addInt64($f6g1)
            ->addInt64($f7g0)->addInt64($f8g9_19)->addInt64($f9g8_19);

        // $h8 = $f0g8 + $f1g7_2  + $f2g6    + $f3g5_2  + $f4g4    + $f5g3_2  + $f6g2    + $f7g1_2  + $f8g0    + $f9g9_38;
        $h8 = $f0g8->addInt64($f1g7_2)->addInt64($f2g6)->addInt64($f3g5_2)
            ->addInt64($f4g4)->addInt64($f5g3_2)->addInt64($f6g2)
            ->addInt64($f7g1_2)->addInt64($f8g0)->addInt64($f9g9_38);

        // $h9 = $f0g9 + $f1g8    + $f2g7    + $f3g6    + $f4g5    + $f5g4    + $f6g3    + $f7g2    + $f8g1    + $f9g0   ;
        $h9 = $f0g9->addInt64($f1g8)->addInt64($f2g7)->addInt64($f3g6)
            ->addInt64($f4g5)->addInt64($f5g4)->addInt64($f6g3)
            ->addInt64($f7g2)->addInt64($f8g1)->addInt64($f9g0);

        /**
         * @var ParagonIE_Sodium_Core32_Int64 $h0
         * @var ParagonIE_Sodium_Core32_Int64 $h1
         * @var ParagonIE_Sodium_Core32_Int64 $h2
         * @var ParagonIE_Sodium_Core32_Int64 $h3
         * @var ParagonIE_Sodium_Core32_Int64 $h4
         * @var ParagonIE_Sodium_Core32_Int64 $h5
         * @var ParagonIE_Sodium_Core32_Int64 $h6
         * @var ParagonIE_Sodium_Core32_Int64 $h7
         * @var ParagonIE_Sodium_Core32_Int64 $h8
         * @var ParagonIE_Sodium_Core32_Int64 $h9
         * @var ParagonIE_Sodium_Core32_Int64 $carry0
         * @var ParagonIE_Sodium_Core32_Int64 $carry1
         * @var ParagonIE_Sodium_Core32_Int64 $carry2
         * @var ParagonIE_Sodium_Core32_Int64 $carry3
         * @var ParagonIE_Sodium_Core32_Int64 $carry4
         * @var ParagonIE_Sodium_Core32_Int64 $carry5
         * @var ParagonIE_Sodium_Core32_Int64 $carry6
         * @var ParagonIE_Sodium_Core32_Int64 $carry7
         * @var ParagonIE_Sodium_Core32_Int64 $carry8
         * @var ParagonIE_Sodium_Core32_Int64 $carry9
         */
        $carry0 = $h0->addInt(1 << 25)->shiftRight(26);
        $h1 = $h1->addInt64($carry0);
        $h0 = $h0->subInt64($carry0->shiftLeft(26));
        $carry4 = $h4->addInt(1 << 25)->shiftRight(26);
        $h5 = $h5->addInt64($carry4);
        $h4 = $h4->subInt64($carry4->shiftLeft(26));

        $carry1 = $h1->addInt(1 << 24)->shiftRight(25);
        $h2 = $h2->addInt64($carry1);
        $h1 = $h1->subInt64($carry1->shiftLeft(25));
        $carry5 = $h5->addInt(1 << 24)->shiftRight(25);
        $h6 = $h6->addInt64($carry5);
        $h5 = $h5->subInt64($carry5->shiftLeft(25));

        $carry2 = $h2->addInt(1 << 25)->shiftRight(26);
        $h3 = $h3->addInt64($carry2);
        $h2 = $h2->subInt64($carry2->shiftLeft(26));
        $carry6 = $h6->addInt(1 << 25)->shiftRight(26);
        $h7 = $h7->addInt64($carry6);
        $h6 = $h6->subInt64($carry6->shiftLeft(26));

        $carry3 = $h3->addInt(1 << 24)->shiftRight(25);
        $h4 = $h4->addInt64($carry3);
        $h3 = $h3->subInt64($carry3->shiftLeft(25));
        $carry7 = $h7->addInt(1 << 24)->shiftRight(25);
        $h8 = $h8->addInt64($carry7);
        $h7 = $h7->subInt64($carry7->shiftLeft(25));

        $carry4 = $h4->addInt(1 << 25)->shiftRight(26);
        $h5 = $h5->addInt64($carry4);
        $h4 = $h4->subInt64($carry4->shiftLeft(26));
        $carry8 = $h8->addInt(1 << 25)->shiftRight(26);
        $h9 = $h9->addInt64($carry8);
        $h8 = $h8->subInt64($carry8->shiftLeft(26));

        $carry9 = $h9->addInt(1 << 24)->shiftRight(25);
        $h0 = $h0->addInt64($carry9->mulInt(19, 5));
        $h9 = $h9->subInt64($carry9->shiftLeft(25));

        $carry0 = $h0->addInt(1 << 25)->shiftRight(26);
        $h1 = $h1->addInt64($carry0);
        $h0 = $h0->subInt64($carry0->shiftLeft(26));

        return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
            array(
                $h0->toInt32(),
                $h1->toInt32(),
                $h2->toInt32(),
                $h3->toInt32(),
                $h4->toInt32(),
                $h5->toInt32(),
                $h6->toInt32(),
                $h7->toInt32(),
                $h8->toInt32(),
                $h9->toInt32()
            )
        );
    }

    /**
     * Get the negative values for each piece of the field element.
     *
     * h = -f
     *
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $f
     * @return ParagonIE_Sodium_Core32_Curve25519_Fe
     * @psalm-suppress MixedAssignment
     * @psalm-suppress MixedMethodCall
     */
    public static function fe_neg(ParagonIE_Sodium_Core32_Curve25519_Fe $f)
    {
        $h = new ParagonIE_Sodium_Core32_Curve25519_Fe();
        for ($i = 0; $i < 10; ++$i) {
            $h[$i] = $h[$i]->subInt32($f[$i]);
        }
        return $h;
    }

    /**
     * Square a field element
     *
     * h = f * f
     *
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $f
     * @return ParagonIE_Sodium_Core32_Curve25519_Fe
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedMethodCall
     */
    public static function fe_sq(ParagonIE_Sodium_Core32_Curve25519_Fe $f)
    {
        $f0 = $f[0]->toInt64();
        $f1 = $f[1]->toInt64();
        $f2 = $f[2]->toInt64();
        $f3 = $f[3]->toInt64();
        $f4 = $f[4]->toInt64();
        $f5 = $f[5]->toInt64();
        $f6 = $f[6]->toInt64();
        $f7 = $f[7]->toInt64();
        $f8 = $f[8]->toInt64();
        $f9 = $f[9]->toInt64();

        $f0_2 = $f0->shiftLeft(1);
        $f1_2 = $f1->shiftLeft(1);
        $f2_2 = $f2->shiftLeft(1);
        $f3_2 = $f3->shiftLeft(1);
        $f4_2 = $f4->shiftLeft(1);
        $f5_2 = $f5->shiftLeft(1);
        $f6_2 = $f6->shiftLeft(1);
        $f7_2 = $f7->shiftLeft(1);
        $f5_38 = $f5->mulInt(38, 6);
        $f6_19 = $f6->mulInt(19, 5);
        $f7_38 = $f7->mulInt(38, 6);
        $f8_19 = $f8->mulInt(19, 5);
        $f9_38 = $f9->mulInt(38, 6);

        $f0f0    = $f0->mulInt64($f0, 28);
        $f0f1_2  = $f0_2->mulInt64($f1, 28);
        $f0f2_2 =  $f0_2->mulInt64($f2, 28);
        $f0f3_2 =  $f0_2->mulInt64($f3, 28);
        $f0f4_2 =  $f0_2->mulInt64($f4, 28);
        $f0f5_2 =  $f0_2->mulInt64($f5, 28);
        $f0f6_2 =  $f0_2->mulInt64($f6, 28);
        $f0f7_2 =  $f0_2->mulInt64($f7, 28);
        $f0f8_2 =  $f0_2->mulInt64($f8, 28);
        $f0f9_2 =  $f0_2->mulInt64($f9, 28);

        $f1f1_2 = $f1_2->mulInt64($f1, 28);
        $f1f2_2 = $f1_2->mulInt64($f2, 28);
        $f1f3_4 = $f1_2->mulInt64($f3_2, 28);
        $f1f4_2 = $f1_2->mulInt64($f4, 28);
        $f1f5_4 = $f1_2->mulInt64($f5_2, 30);
        $f1f6_2 = $f1_2->mulInt64($f6, 28);
        $f1f7_4 = $f1_2->mulInt64($f7_2, 28);
        $f1f8_2 = $f1_2->mulInt64($f8, 28);
        $f1f9_76 = $f9_38->mulInt64($f1_2, 30);

        $f2f2 = $f2->mulInt64($f2, 28);
        $f2f3_2 = $f2_2->mulInt64($f3, 28);
        $f2f4_2 = $f2_2->mulInt64($f4, 28);
        $f2f5_2 = $f2_2->mulInt64($f5, 28);
        $f2f6_2 = $f2_2->mulInt64($f6, 28);
        $f2f7_2 = $f2_2->mulInt64($f7, 28);
        $f2f8_38 = $f8_19->mulInt64($f2_2, 30);
        $f2f9_38 = $f9_38->mulInt64($f2, 30);

        $f3f3_2 = $f3_2->mulInt64($f3, 28);
        $f3f4_2 = $f3_2->mulInt64($f4, 28);
        $f3f5_4 = $f3_2->mulInt64($f5_2, 30);
        $f3f6_2 = $f3_2->mulInt64($f6, 28);
        $f3f7_76 = $f7_38->mulInt64($f3_2, 30);
        $f3f8_38 = $f8_19->mulInt64($f3_2, 30);
        $f3f9_76 = $f9_38->mulInt64($f3_2, 30);

        $f4f4 = $f4->mulInt64($f4, 28);
        $f4f5_2 = $f4_2->mulInt64($f5, 28);
        $f4f6_38 = $f6_19->mulInt64($f4_2, 30);
        $f4f7_38 = $f7_38->mulInt64($f4, 30);
        $f4f8_38 = $f8_19->mulInt64($f4_2, 30);
        $f4f9_38 = $f9_38->mulInt64($f4, 30);

        $f5f5_38 = $f5_38->mulInt64($f5, 30);
        $f5f6_38 = $f6_19->mulInt64($f5_2, 30);
        $f5f7_76 = $f7_38->mulInt64($f5_2, 30);
        $f5f8_38 = $f8_19->mulInt64($f5_2, 30);
        $f5f9_76 = $f9_38->mulInt64($f5_2, 30);

        $f6f6_19 = $f6_19->mulInt64($f6, 30);
        $f6f7_38 = $f7_38->mulInt64($f6, 30);
        $f6f8_38 = $f8_19->mulInt64($f6_2, 30);
        $f6f9_38 = $f9_38->mulInt64($f6, 30);

        $f7f7_38 = $f7_38->mulInt64($f7, 28);
        $f7f8_38 = $f8_19->mulInt64($f7_2, 30);
        $f7f9_76 = $f9_38->mulInt64($f7_2, 30);

        $f8f8_19 = $f8_19->mulInt64($f8, 30);
        $f8f9_38 = $f9_38->mulInt64($f8, 30);

        $f9f9_38 = $f9_38->mulInt64($f9, 28);

        $h0 = $f0f0->addInt64($f1f9_76)->addInt64($f2f8_38)->addInt64($f3f7_76)->addInt64($f4f6_38)->addInt64($f5f5_38);
        $h1 = $f0f1_2->addInt64($f2f9_38)->addInt64($f3f8_38)->addInt64($f4f7_38)->addInt64($f5f6_38);
        $h2 = $f0f2_2->addInt64($f1f1_2)->addInt64($f3f9_76)->addInt64($f4f8_38)->addInt64($f5f7_76)->addInt64($f6f6_19);
        $h3 = $f0f3_2->addInt64($f1f2_2)->addInt64($f4f9_38)->addInt64($f5f8_38)->addInt64($f6f7_38);
        $h4 = $f0f4_2->addInt64($f1f3_4)->addInt64($f2f2)->addInt64($f5f9_76)->addInt64($f6f8_38)->addInt64($f7f7_38);
        $h5 = $f0f5_2->addInt64($f1f4_2)->addInt64($f2f3_2)->addInt64($f6f9_38)->addInt64($f7f8_38);
        $h6 = $f0f6_2->addInt64($f1f5_4)->addInt64($f2f4_2)->addInt64($f3f3_2)->addInt64($f7f9_76)->addInt64($f8f8_19);
        $h7 = $f0f7_2->addInt64($f1f6_2)->addInt64($f2f5_2)->addInt64($f3f4_2)->addInt64($f8f9_38);
        $h8 = $f0f8_2->addInt64($f1f7_4)->addInt64($f2f6_2)->addInt64($f3f5_4)->addInt64($f4f4)->addInt64($f9f9_38);
        $h9 = $f0f9_2->addInt64($f1f8_2)->addInt64($f2f7_2)->addInt64($f3f6_2)->addInt64($f4f5_2);

        /**
         * @var ParagonIE_Sodium_Core32_Int64 $h0
         * @var ParagonIE_Sodium_Core32_Int64 $h1
         * @var ParagonIE_Sodium_Core32_Int64 $h2
         * @var ParagonIE_Sodium_Core32_Int64 $h3
         * @var ParagonIE_Sodium_Core32_Int64 $h4
         * @var ParagonIE_Sodium_Core32_Int64 $h5
         * @var ParagonIE_Sodium_Core32_Int64 $h6
         * @var ParagonIE_Sodium_Core32_Int64 $h7
         * @var ParagonIE_Sodium_Core32_Int64 $h8
         * @var ParagonIE_Sodium_Core32_Int64 $h9
         */

        $carry0 = $h0->addInt(1 << 25)->shiftRight(26);
        $h1 = $h1->addInt64($carry0);
        $h0 = $h0->subInt64($carry0->shiftLeft(26));

        $carry4 = $h4->addInt(1 << 25)->shiftRight(26);
        $h5 = $h5->addInt64($carry4);
        $h4 = $h4->subInt64($carry4->shiftLeft(26));

        $carry1 = $h1->addInt(1 << 24)->shiftRight(25);
        $h2 = $h2->addInt64($carry1);
        $h1 = $h1->subInt64($carry1->shiftLeft(25));

        $carry5 = $h5->addInt(1 << 24)->shiftRight(25);
        $h6 = $h6->addInt64($carry5);
        $h5 = $h5->subInt64($carry5->shiftLeft(25));

        $carry2 = $h2->addInt(1 << 25)->shiftRight(26);
        $h3 = $h3->addInt64($carry2);
        $h2 = $h2->subInt64($carry2->shiftLeft(26));

        $carry6 = $h6->addInt(1 << 25)->shiftRight(26);
        $h7 = $h7->addInt64($carry6);
        $h6 = $h6->subInt64($carry6->shiftLeft(26));

        $carry3 = $h3->addInt(1 << 24)->shiftRight(25);
        $h4 = $h4->addInt64($carry3);
        $h3 = $h3->subInt64($carry3->shiftLeft(25));

        $carry7 = $h7->addInt(1 << 24)->shiftRight(25);
        $h8 = $h8->addInt64($carry7);
        $h7 = $h7->subInt64($carry7->shiftLeft(25));

        $carry4 = $h4->addInt(1 << 25)->shiftRight(26);
        $h5 = $h5->addInt64($carry4);
        $h4 = $h4->subInt64($carry4->shiftLeft(26));

        $carry8 = $h8->addInt(1 << 25)->shiftRight(26);
        $h9 = $h9->addInt64($carry8);
        $h8 = $h8->subInt64($carry8->shiftLeft(26));

        $carry9 = $h9->addInt(1 << 24)->shiftRight(25);
        $h0 = $h0->addInt64($carry9->mulInt(19, 5));
        $h9 = $h9->subInt64($carry9->shiftLeft(25));

        $carry0 = $h0->addInt(1 << 25)->shiftRight(26);
        $h1 = $h1->addInt64($carry0);
        $h0 = $h0->subInt64($carry0->shiftLeft(26));

        return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
            array(
                $h0->toInt32(),
                $h1->toInt32(),
                $h2->toInt32(),
                $h3->toInt32(),
                $h4->toInt32(),
                $h5->toInt32(),
                $h6->toInt32(),
                $h7->toInt32(),
                $h8->toInt32(),
                $h9->toInt32()
            )
        );
    }

    /**
     * Square and double a field element
     *
     * h = 2 * f * f
     *
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $f
     * @return ParagonIE_Sodium_Core32_Curve25519_Fe
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedMethodCall
     */
    public static function fe_sq2(ParagonIE_Sodium_Core32_Curve25519_Fe $f)
    {
        $f0 = $f[0]->toInt64();
        $f1 = $f[1]->toInt64();
        $f2 = $f[2]->toInt64();
        $f3 = $f[3]->toInt64();
        $f4 = $f[4]->toInt64();
        $f5 = $f[5]->toInt64();
        $f6 = $f[6]->toInt64();
        $f7 = $f[7]->toInt64();
        $f8 = $f[8]->toInt64();
        $f9 = $f[9]->toInt64();

        $f0_2 = $f0->shiftLeft(1);
        $f1_2 = $f1->shiftLeft(1);
        $f2_2 = $f2->shiftLeft(1);
        $f3_2 = $f3->shiftLeft(1);
        $f4_2 = $f4->shiftLeft(1);
        $f5_2 = $f5->shiftLeft(1);
        $f6_2 = $f6->shiftLeft(1);
        $f7_2 = $f7->shiftLeft(1);
        $f5_38 = $f5->mulInt(38, 6); /* 1.959375*2^30 */
        $f6_19 = $f6->mulInt(19, 5); /* 1.959375*2^30 */
        $f7_38 = $f7->mulInt(38, 6); /* 1.959375*2^30 */
        $f8_19 = $f8->mulInt(19, 5); /* 1.959375*2^30 */
        $f9_38 = $f9->mulInt(38, 6); /* 1.959375*2^30 */
        $f0f0 = $f0->mulInt64($f0, 28);
        $f0f1_2 = $f0_2->mulInt64($f1, 28);
        $f0f2_2 = $f0_2->mulInt64($f2, 28);
        $f0f3_2 = $f0_2->mulInt64($f3, 28);
        $f0f4_2 = $f0_2->mulInt64($f4, 28);
        $f0f5_2 = $f0_2->mulInt64($f5, 28);
        $f0f6_2 = $f0_2->mulInt64($f6, 28);
        $f0f7_2 = $f0_2->mulInt64($f7, 28);
        $f0f8_2 = $f0_2->mulInt64($f8, 28);
        $f0f9_2 = $f0_2->mulInt64($f9, 28);
        $f1f1_2 = $f1_2->mulInt64($f1, 28);
        $f1f2_2 = $f1_2->mulInt64($f2, 28);
        $f1f3_4 = $f1_2->mulInt64($f3_2, 29);
        $f1f4_2 = $f1_2->mulInt64($f4, 28);
        $f1f5_4 = $f1_2->mulInt64($f5_2, 29);
        $f1f6_2 = $f1_2->mulInt64($f6, 28);
        $f1f7_4 = $f1_2->mulInt64($f7_2, 29);
        $f1f8_2 = $f1_2->mulInt64($f8, 28);
        $f1f9_76 = $f9_38->mulInt64($f1_2, 29);
        $f2f2 = $f2->mulInt64($f2, 28);
        $f2f3_2 = $f2_2->mulInt64($f3, 28);
        $f2f4_2 = $f2_2->mulInt64($f4, 28);
        $f2f5_2 = $f2_2->mulInt64($f5, 28);
        $f2f6_2 = $f2_2->mulInt64($f6, 28);
        $f2f7_2 = $f2_2->mulInt64($f7, 28);
        $f2f8_38 = $f8_19->mulInt64($f2_2, 29);
        $f2f9_38 = $f9_38->mulInt64($f2, 29);
        $f3f3_2 = $f3_2->mulInt64($f3, 28);
        $f3f4_2 = $f3_2->mulInt64($f4, 28);
        $f3f5_4 = $f3_2->mulInt64($f5_2, 28);
        $f3f6_2 = $f3_2->mulInt64($f6, 28);
        $f3f7_76 = $f7_38->mulInt64($f3_2, 29);
        $f3f8_38 = $f8_19->mulInt64($f3_2, 29);
        $f3f9_76 = $f9_38->mulInt64($f3_2, 29);
        $f4f4 = $f4->mulInt64($f4, 28);
        $f4f5_2 = $f4_2->mulInt64($f5, 28);
        $f4f6_38 = $f6_19->mulInt64($f4_2, 29);
        $f4f7_38 = $f7_38->mulInt64($f4, 29);
        $f4f8_38 = $f8_19->mulInt64($f4_2, 29);
        $f4f9_38 = $f9_38->mulInt64($f4, 29);
        $f5f5_38 = $f5_38->mulInt64($f5, 29);
        $f5f6_38 = $f6_19->mulInt64($f5_2, 29);
        $f5f7_76 = $f7_38->mulInt64($f5_2, 29);
        $f5f8_38 = $f8_19->mulInt64($f5_2, 29);
        $f5f9_76 = $f9_38->mulInt64($f5_2, 29);
        $f6f6_19 = $f6_19->mulInt64($f6, 29);
        $f6f7_38 = $f7_38->mulInt64($f6, 29);
        $f6f8_38 = $f8_19->mulInt64($f6_2, 29);
        $f6f9_38 = $f9_38->mulInt64($f6, 29);
        $f7f7_38 = $f7_38->mulInt64($f7, 29);
        $f7f8_38 = $f8_19->mulInt64($f7_2, 29);
        $f7f9_76 = $f9_38->mulInt64($f7_2, 29);
        $f8f8_19 = $f8_19->mulInt64($f8, 29);
        $f8f9_38 = $f9_38->mulInt64($f8, 29);
        $f9f9_38 = $f9_38->mulInt64($f9, 29);

        $h0 = $f0f0->addInt64($f1f9_76)->addInt64($f2f8_38)->addInt64($f3f7_76)->addInt64($f4f6_38)->addInt64($f5f5_38);
        $h1 = $f0f1_2->addInt64($f2f9_38)->addInt64($f3f8_38)->addInt64($f4f7_38)->addInt64($f5f6_38);
        $h2 = $f0f2_2->addInt64($f1f1_2)->addInt64($f3f9_76)->addInt64($f4f8_38)->addInt64($f5f7_76)->addInt64($f6f6_19);
        $h3 = $f0f3_2->addInt64($f1f2_2)->addInt64($f4f9_38)->addInt64($f5f8_38)->addInt64($f6f7_38);
        $h4 = $f0f4_2->addInt64($f1f3_4)->addInt64($f2f2)->addInt64($f5f9_76)->addInt64($f6f8_38)->addInt64($f7f7_38);
        $h5 = $f0f5_2->addInt64($f1f4_2)->addInt64($f2f3_2)->addInt64($f6f9_38)->addInt64($f7f8_38);
        $h6 = $f0f6_2->addInt64($f1f5_4)->addInt64($f2f4_2)->addInt64($f3f3_2)->addInt64($f7f9_76)->addInt64($f8f8_19);
        $h7 = $f0f7_2->addInt64($f1f6_2)->addInt64($f2f5_2)->addInt64($f3f4_2)->addInt64($f8f9_38);
        $h8 = $f0f8_2->addInt64($f1f7_4)->addInt64($f2f6_2)->addInt64($f3f5_4)->addInt64($f4f4)->addInt64($f9f9_38);
        $h9 = $f0f9_2->addInt64($f1f8_2)->addInt64($f2f7_2)->addInt64($f3f6_2)->addInt64($f4f5_2);

        /**
         * @var ParagonIE_Sodium_Core32_Int64 $h0
         * @var ParagonIE_Sodium_Core32_Int64 $h1
         * @var ParagonIE_Sodium_Core32_Int64 $h2
         * @var ParagonIE_Sodium_Core32_Int64 $h3
         * @var ParagonIE_Sodium_Core32_Int64 $h4
         * @var ParagonIE_Sodium_Core32_Int64 $h5
         * @var ParagonIE_Sodium_Core32_Int64 $h6
         * @var ParagonIE_Sodium_Core32_Int64 $h7
         * @var ParagonIE_Sodium_Core32_Int64 $h8
         * @var ParagonIE_Sodium_Core32_Int64 $h9
         */
        $h0 = $h0->shiftLeft(1);
        $h1 = $h1->shiftLeft(1);
        $h2 = $h2->shiftLeft(1);
        $h3 = $h3->shiftLeft(1);
        $h4 = $h4->shiftLeft(1);
        $h5 = $h5->shiftLeft(1);
        $h6 = $h6->shiftLeft(1);
        $h7 = $h7->shiftLeft(1);
        $h8 = $h8->shiftLeft(1);
        $h9 = $h9->shiftLeft(1);

        $carry0 = $h0->addInt(1 << 25)->shiftRight(26);
        $h1 = $h1->addInt64($carry0);
        $h0 = $h0->subInt64($carry0->shiftLeft(26));
        $carry4 = $h4->addInt(1 << 25)->shiftRight(26);
        $h5 = $h5->addInt64($carry4);
        $h4 = $h4->subInt64($carry4->shiftLeft(26));

        $carry1 = $h1->addInt(1 << 24)->shiftRight(25);
        $h2 = $h2->addInt64($carry1);
        $h1 = $h1->subInt64($carry1->shiftLeft(25));
        $carry5 = $h5->addInt(1 << 24)->shiftRight(25);
        $h6 = $h6->addInt64($carry5);
        $h5 = $h5->subInt64($carry5->shiftLeft(25));

        $carry2 = $h2->addInt(1 << 25)->shiftRight(26);
        $h3 = $h3->addInt64($carry2);
        $h2 = $h2->subInt64($carry2->shiftLeft(26));
        $carry6 = $h6->addInt(1 << 25)->shiftRight(26);
        $h7 = $h7->addInt64($carry6);
        $h6 = $h6->subInt64($carry6->shiftLeft(26));

        $carry3 = $h3->addInt(1 << 24)->shiftRight(25);
        $h4 = $h4->addInt64($carry3);
        $h3 = $h3->subInt64($carry3->shiftLeft(25));
        $carry7 = $h7->addInt(1 << 24)->shiftRight(25);
        $h8 = $h8->addInt64($carry7);
        $h7 = $h7->subInt64($carry7->shiftLeft(25));

        $carry4 = $h4->addInt(1 << 25)->shiftRight(26);
        $h5 = $h5->addInt64($carry4);
        $h4 = $h4->subInt64($carry4->shiftLeft(26));
        $carry8 = $h8->addInt(1 << 25)->shiftRight(26);
        $h9 = $h9->addInt64($carry8);
        $h8 = $h8->subInt64($carry8->shiftLeft(26));

        $carry9 = $h9->addInt(1 << 24)->shiftRight(25);
        $h0 = $h0->addInt64($carry9->mulInt(19, 5));
        $h9 = $h9->subInt64($carry9->shiftLeft(25));

        $carry0 = $h0->addInt(1 << 25)->shiftRight(26);
        $h1 = $h1->addInt64($carry0);
        $h0 = $h0->subInt64($carry0->shiftLeft(26));

        return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
            array(
                $h0->toInt32(),
                $h1->toInt32(),
                $h2->toInt32(),
                $h3->toInt32(),
                $h4->toInt32(),
                $h5->toInt32(),
                $h6->toInt32(),
                $h7->toInt32(),
                $h8->toInt32(),
                $h9->toInt32()
            )
        );
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $Z
     * @return ParagonIE_Sodium_Core32_Curve25519_Fe
     * @throws SodiumException
     * @throws TypeError
     */
    public static function fe_invert(ParagonIE_Sodium_Core32_Curve25519_Fe $Z)
    {
        $z = clone $Z;
        $t0 = self::fe_sq($z);
        $t1 = self::fe_sq($t0);
        $t1 = self::fe_sq($t1);
        $t1 = self::fe_mul($z, $t1);
        $t0 = self::fe_mul($t0, $t1);
        $t2 = self::fe_sq($t0);
        $t1 = self::fe_mul($t1, $t2);
        $t2 = self::fe_sq($t1);
        for ($i = 1; $i < 5; ++$i) {
            $t2 = self::fe_sq($t2);
        }
        $t1 = self::fe_mul($t2, $t1);
        $t2 = self::fe_sq($t1);
        for ($i = 1; $i < 10; ++$i) {
            $t2 = self::fe_sq($t2);
        }
        $t2 = self::fe_mul($t2, $t1);
        $t3 = self::fe_sq($t2);
        for ($i = 1; $i < 20; ++$i) {
            $t3 = self::fe_sq($t3);
        }
        $t2 = self::fe_mul($t3, $t2);
        $t2 = self::fe_sq($t2);
        for ($i = 1; $i < 10; ++$i) {
            $t2 = self::fe_sq($t2);
        }
        $t1 = self::fe_mul($t2, $t1);
        $t2 = self::fe_sq($t1);
        for ($i = 1; $i < 50; ++$i) {
            $t2 = self::fe_sq($t2);
        }
        $t2 = self::fe_mul($t2, $t1);
        $t3 = self::fe_sq($t2);
        for ($i = 1; $i < 100; ++$i) {
            $t3 = self::fe_sq($t3);
        }
        $t2 = self::fe_mul($t3, $t2);
        $t2 = self::fe_sq($t2);
        for ($i = 1; $i < 50; ++$i) {
            $t2 = self::fe_sq($t2);
        }
        $t1 = self::fe_mul($t2, $t1);
        $t1 = self::fe_sq($t1);
        for ($i = 1; $i < 5; ++$i) {
            $t1 = self::fe_sq($t1);
        }
        return self::fe_mul($t1, $t0);
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @ref https://github.com/jedisct1/libsodium/blob/68564326e1e9dc57ef03746f85734232d20ca6fb/src/libsodium/crypto_core/curve25519/ref10/curve25519_ref10.c#L1054-L1106
     *
     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $z
     * @return ParagonIE_Sodium_Core32_Curve25519_Fe
     * @throws SodiumException
     * @throws TypeError
     */
    public static function fe_pow22523(ParagonIE_Sodium_Core32_Curve25519_Fe $z)
    {
        # fe_sq(t0, z);
        # fe_sq(t1, t0);
        # fe_sq(t1, t1);
        # fe_mul(t1, z, t1);
        # fe_mul(t0, t0, t1);
        # fe_sq(t0, t0);
        # fe_mul(t0, t1, t0);
        # fe_sq(t1, t0);
        $t0 = self::fe_sq($z);
        $t1 = self::fe_sq($t0);
        $t1 = self::fe_sq($t1);
        $t1 = self::fe_mul($z, $t1);
        $t0 = self::fe_mul($t0, $t1);
        $t0 = self::fe_sq($t0);
        $t0 = self::fe_mul($t1, $t0);
        $t1 = self::fe_sq($t0);

        # for (i = 1; i < 5; ++i) {
        #     fe_sq(t1, t1);
        # }
        for ($i = 1; $i < 5; ++$i) {
            $t1 = self::fe_sq($t1);
        }

        # fe_mul(t0, t1, t0);
        # fe_sq(t1, t0);
        $t0 = self::fe_mul($t1, $t0);
        $t1 = self::fe_sq($t0);

        # for (i = 1; i < 10; ++i) {
        #     fe_sq(t1, t1);
        # }
        for ($i = 1; $i < 10; ++$i) {
            $t1 = self::fe_sq($t1);
        }

        # fe_mul(t1, t1, t0);
        # fe_sq(t2, t1);
        $t1 = self::fe_mul($t1, $t0);
        $t2 = self::fe_sq($t1);

        # for (i = 1; i < 20; ++i) {
        #     fe_sq(t2, t2);
        # }
        for ($i = 1; $i < 20; ++$i) {
            $t2 = self::fe_sq($t2);
        }

        # fe_mul(t1, t2, t1);
        # fe_sq(t1, t1);
        $t1 = self::fe_mul($t2, $t1);
        $t1 = self::fe_sq($t1);

        # for (i = 1; i < 10; ++i) {
        #     fe_sq(t1, t1);
        # }
        for ($i = 1; $i < 10; ++$i) {
            $t1 = self::fe_sq($t1);
        }

        # fe_mul(t0, t1, t0);
        # fe_sq(t1, t0);
        $t0 = self::fe_mul($t1, $t0);
        $t1 = self::fe_sq($t0);

        # for (i = 1; i < 50; ++i) {
        #     fe_sq(t1, t1);
        # }
        for ($i = 1; $i < 50; ++$i) {
            $t1 = self::fe_sq($t1);
        }

        # fe_mul(t1, t1, t0);
        # fe_sq(t2, t1);
        $t1 = self::fe_mul($t1, $t0);
        $t2 = self::fe_sq($t1);

        # for (i = 1; i < 100; ++i) {
        #     fe_sq(t2, t2);
        # }
        for ($i = 1; $i < 100; ++$i) {
            $t2 = self::fe_sq($t2);
        }

        # fe_mul(t1, t2, t1);
        # fe_sq(t1, t1);
        $t1 = self::fe_mul($t2, $t1);
        $t1 = self::fe_sq($t1);

        # for (i = 1; i < 50; ++i) {
        #     fe_sq(t1, t1);
        # }
        for ($i = 1; $i < 50; ++$i) {
            $t1 = self::fe_sq($t1);
        }

        # fe_mul(t0, t1, t0);
        # fe_sq(t0, t0);
        # fe_sq(t0, t0);
        # fe_mul(out, t0, z);
        $t0 = self::fe_mul($t1, $t0);
        $t0 = self::fe_sq($t0);
        $t0 = self::fe_sq($t0);
        return self::fe_mul($t0, $z);
    }

    /**
     * Subtract two field elements.
     *
     * h = f - g
     *
     * Preconditions:
     * |f| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.
     * |g| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.
     *
     * Postconditions:
     * |h| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.
     *
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $f
     * @param ParagonIE_Sodium_Core32_Curve25519_Fe $g
     * @return ParagonIE_Sodium_Core32_Curve25519_Fe
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedMethodCall
     * @psalm-suppress MixedTypeCoercion
     */
    public static function fe_sub(ParagonIE_Sodium_Core32_Curve25519_Fe $f, ParagonIE_Sodium_Core32_Curve25519_Fe $g)
    {
        return ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
            array(
                $f[0]->subInt32($g[0]),
                $f[1]->subInt32($g[1]),
                $f[2]->subInt32($g[2]),
                $f[3]->subInt32($g[3]),
                $f[4]->subInt32($g[4]),
                $f[5]->subInt32($g[5]),
                $f[6]->subInt32($g[6]),
                $f[7]->subInt32($g[7]),
                $f[8]->subInt32($g[8]),
                $f[9]->subInt32($g[9])
            )
        );
    }

    /**
     * Add two group elements.
     *
     * r = p + q
     *
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p
     * @param ParagonIE_Sodium_Core32_Curve25519_Ge_Cached $q
     * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1
     * @throws SodiumException
     * @throws TypeError
     */
    public static function ge_add(
        ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p,
        ParagonIE_Sodium_Core32_Curve25519_Ge_Cached $q
    ) {
        $r = new ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1();
        $r->X = self::fe_add($p->Y, $p->X);
        $r->Y = self::fe_sub($p->Y, $p->X);
        $r->Z = self::fe_mul($r->X, $q->YplusX);
        $r->Y = self::fe_mul($r->Y, $q->YminusX);
        $r->T = self::fe_mul($q->T2d, $p->T);
        $r->X = self::fe_mul($p->Z, $q->Z);
        $t0   = self::fe_add($r->X, $r->X);
        $r->X = self::fe_sub($r->Z, $r->Y);
        $r->Y = self::fe_add($r->Z, $r->Y);
        $r->Z = self::fe_add($t0, $r->T);
        $r->T = self::fe_sub($t0, $r->T);
        return $r;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @ref https://github.com/jedisct1/libsodium/blob/157c4a80c13b117608aeae12178b2d38825f9f8f/src/libsodium/crypto_core/curve25519/ref10/curve25519_ref10.c#L1185-L1215
     * @param string $a
     * @return array<int, mixed>
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArrayOffset
     */
    public static function slide($a)
    {
        if (self::strlen($a) < 256) {
            if (self::strlen($a) < 16) {
                $a = str_pad($a, 256, '0', STR_PAD_RIGHT);
            }
        }
        /** @var array<int, int> $r */
        $r = array();
        for ($i = 0; $i < 256; ++$i) {
            $r[$i] = (int) (1 &
                (
                    self::chrToInt($a[$i >> 3])
                        >>
                    ($i & 7)
                )
            );
        }

        for ($i = 0;$i < 256;++$i) {
            if ($r[$i]) {
                for ($b = 1;$b <= 6 && $i + $b < 256;++$b) {
                    if ($r[$i + $b]) {
                        if ($r[$i] + ($r[$i + $b] << $b) <= 15) {
                            $r[$i] += $r[$i + $b] << $b;
                            $r[$i + $b] = 0;
                        } elseif ($r[$i] - ($r[$i + $b] << $b) >= -15) {
                            $r[$i] -= $r[$i + $b] << $b;
                            for ($k = $i + $b; $k < 256; ++$k) {
                                if (!$r[$k]) {
                                    $r[$k] = 1;
                                    break;
                                }
                                $r[$k] = 0;
                            }
                        } else {
                            break;
                        }
                    }
                }
            }
        }
        return $r;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $s
     * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P3
     * @throws SodiumException
     * @throws TypeError
     */
    public static function ge_frombytes_negate_vartime($s)
    {
        static $d = null;
        if (!$d) {
            $d = ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
                array(
                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[0]),
                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[1]),
                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[2]),
                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[3]),
                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[4]),
                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[5]),
                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[6]),
                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[7]),
                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[8]),
                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d[9])
                )
            );
        }
        /** @var ParagonIE_Sodium_Core32_Curve25519_Fe $d */

        # fe_frombytes(h->Y,s);
        # fe_1(h->Z);
        $h = new ParagonIE_Sodium_Core32_Curve25519_Ge_P3(
            self::fe_0(),
            self::fe_frombytes($s),
            self::fe_1()
        );

        # fe_sq(u,h->Y);
        # fe_mul(v,u,d);
        # fe_sub(u,u,h->Z);       /* u = y^2-1 */
        # fe_add(v,v,h->Z);       /* v = dy^2+1 */
        $u = self::fe_sq($h->Y);
        /** @var ParagonIE_Sodium_Core32_Curve25519_Fe $d */
        $v = self::fe_mul($u, $d);
        $u = self::fe_sub($u, $h->Z); /* u =  y^2 - 1 */
        $v = self::fe_add($v, $h->Z); /* v = dy^2 + 1 */

        # fe_sq(v3,v);
        # fe_mul(v3,v3,v);        /* v3 = v^3 */
        # fe_sq(h->X,v3);
        # fe_mul(h->X,h->X,v);
        # fe_mul(h->X,h->X,u);    /* x = uv^7 */
        $v3 = self::fe_sq($v);
        $v3 = self::fe_mul($v3, $v); /* v3 = v^3 */
        $h->X = self::fe_sq($v3);
        $h->X = self::fe_mul($h->X, $v);
        $h->X = self::fe_mul($h->X, $u); /* x = uv^7 */

        # fe_pow22523(h->X,h->X); /* x = (uv^7)^((q-5)/8) */
        # fe_mul(h->X,h->X,v3);
        # fe_mul(h->X,h->X,u);    /* x = uv^3(uv^7)^((q-5)/8) */
        $h->X = self::fe_pow22523($h->X); /* x = (uv^7)^((q-5)/8) */
        $h->X = self::fe_mul($h->X, $v3);
        $h->X = self::fe_mul($h->X, $u); /* x = uv^3(uv^7)^((q-5)/8) */

        # fe_sq(vxx,h->X);
        # fe_mul(vxx,vxx,v);
        # fe_sub(check,vxx,u);    /* vx^2-u */
        $vxx = self::fe_sq($h->X);
        $vxx = self::fe_mul($vxx, $v);
        $check = self::fe_sub($vxx, $u); /* vx^2 - u */

        # if (fe_isnonzero(check)) {
        #     fe_add(check,vxx,u);  /* vx^2+u */
        #     if (fe_isnonzero(check)) {
        #         return -1;
        #     }
        #     fe_mul(h->X,h->X,sqrtm1);
        # }
        if (self::fe_isnonzero($check)) {
            $check = self::fe_add($vxx, $u); /* vx^2 + u */
            if (self::fe_isnonzero($check)) {
                throw new RangeException('Internal check failed.');
            }
            $h->X = self::fe_mul(
                $h->X,
                ParagonIE_Sodium_Core32_Curve25519_Fe::fromIntArray(self::$sqrtm1)
            );
        }

        # if (fe_isnegative(h->X) == (s[31] >> 7)) {
        #     fe_neg(h->X,h->X);
        # }
        $i = self::chrToInt($s[31]);
        if (self::fe_isnegative($h->X) === ($i >> 7)) {
            $h->X = self::fe_neg($h->X);
        }

        # fe_mul(h->T,h->X,h->Y);
        $h->T = self::fe_mul($h->X, $h->Y);
        return $h;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1 $R
     * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p
     * @param ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp $q
     * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1
     * @throws SodiumException
     * @throws TypeError
     */
    public static function ge_madd(
        ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1 $R,
        ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p,
        ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp $q
    ) {
        $r = clone $R;
        $r->X = self::fe_add($p->Y, $p->X);
        $r->Y = self::fe_sub($p->Y, $p->X);
        $r->Z = self::fe_mul($r->X, $q->yplusx);
        $r->Y = self::fe_mul($r->Y, $q->yminusx);
        $r->T = self::fe_mul($q->xy2d, $p->T);
        $t0 = self::fe_add(clone $p->Z, clone $p->Z);
        $r->X = self::fe_sub($r->Z, $r->Y);
        $r->Y = self::fe_add($r->Z, $r->Y);
        $r->Z = self::fe_add($t0, $r->T);
        $r->T = self::fe_sub($t0, $r->T);

        return $r;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1 $R
     * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p
     * @param ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp $q
     * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1
     * @throws SodiumException
     * @throws TypeError
     */
    public static function ge_msub(
        ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1 $R,
        ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p,
        ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp $q
    ) {
        $r = clone $R;

        $r->X = self::fe_add($p->Y, $p->X);
        $r->Y = self::fe_sub($p->Y, $p->X);
        $r->Z = self::fe_mul($r->X, $q->yminusx);
        $r->Y = self::fe_mul($r->Y, $q->yplusx);
        $r->T = self::fe_mul($q->xy2d, $p->T);
        $t0 = self::fe_add($p->Z, $p->Z);
        $r->X = self::fe_sub($r->Z, $r->Y);
        $r->Y = self::fe_add($r->Z, $r->Y);
        $r->Z = self::fe_sub($t0, $r->T);
        $r->T = self::fe_add($t0, $r->T);

        return $r;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1 $p
     * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P2
     * @throws SodiumException
     * @throws TypeError
     */
    public static function ge_p1p1_to_p2(ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1 $p)
    {
        $r = new ParagonIE_Sodium_Core32_Curve25519_Ge_P2();
        $r->X = self::fe_mul($p->X, $p->T);
        $r->Y = self::fe_mul($p->Y, $p->Z);
        $r->Z = self::fe_mul($p->Z, $p->T);
        return $r;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1 $p
     * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P3
     * @throws SodiumException
     * @throws TypeError
     */
    public static function ge_p1p1_to_p3(ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1 $p)
    {
        $r = new ParagonIE_Sodium_Core32_Curve25519_Ge_P3();
        $r->X = self::fe_mul($p->X, $p->T);
        $r->Y = self::fe_mul($p->Y, $p->Z);
        $r->Z = self::fe_mul($p->Z, $p->T);
        $r->T = self::fe_mul($p->X, $p->Y);
        return $r;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P2
     * @throws SodiumException
     * @throws TypeError
     */
    public static function ge_p2_0()
    {
        return new ParagonIE_Sodium_Core32_Curve25519_Ge_P2(
            self::fe_0(),
            self::fe_1(),
            self::fe_1()
        );
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P2 $p
     * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1
     * @throws SodiumException
     * @throws TypeError
     */
    public static function ge_p2_dbl(ParagonIE_Sodium_Core32_Curve25519_Ge_P2 $p)
    {
        $r = new ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1();

        $r->X = self::fe_sq($p->X);
        $r->Z = self::fe_sq($p->Y);
        $r->T = self::fe_sq2($p->Z);
        $r->Y = self::fe_add($p->X, $p->Y);
        $t0   = self::fe_sq($r->Y);
        $r->Y = self::fe_add($r->Z, $r->X);
        $r->Z = self::fe_sub($r->Z, $r->X);
        $r->X = self::fe_sub($t0, $r->Y);
        $r->T = self::fe_sub($r->T, $r->Z);

        return $r;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P3
     * @throws SodiumException
     * @throws TypeError
     */
    public static function ge_p3_0()
    {
        return new ParagonIE_Sodium_Core32_Curve25519_Ge_P3(
            self::fe_0(),
            self::fe_1(),
            self::fe_1(),
            self::fe_0()
        );
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p
     * @return ParagonIE_Sodium_Core32_Curve25519_Ge_Cached
     * @throws SodiumException
     * @throws TypeError
     */
    public static function ge_p3_to_cached(ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p)
    {
        static $d2 = null;
        if ($d2 === null) {
            $d2 = ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
                array(
                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d2[0]),
                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d2[1]),
                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d2[2]),
                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d2[3]),
                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d2[4]),
                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d2[5]),
                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d2[6]),
                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d2[7]),
                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d2[8]),
                    ParagonIE_Sodium_Core32_Int32::fromInt(self::$d2[9])
                )
            );
        }
        /** @var ParagonIE_Sodium_Core32_Curve25519_Fe $d2 */
        $r = new ParagonIE_Sodium_Core32_Curve25519_Ge_Cached();
        $r->YplusX = self::fe_add($p->Y, $p->X);
        $r->YminusX = self::fe_sub($p->Y, $p->X);
        $r->Z = self::fe_copy($p->Z);
        $r->T2d = self::fe_mul($p->T, $d2);
        return $r;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p
     * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P2
     */
    public static function ge_p3_to_p2(ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p)
    {
        return new ParagonIE_Sodium_Core32_Curve25519_Ge_P2(
            $p->X,
            $p->Y,
            $p->Z
        );
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $h
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function ge_p3_tobytes(ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $h)
    {
        $recip = self::fe_invert($h->Z);
        $x = self::fe_mul($h->X, $recip);
        $y = self::fe_mul($h->Y, $recip);
        $s = self::fe_tobytes($y);
        $s[31] = self::intToChr(
            self::chrToInt($s[31]) ^ (self::fe_isnegative($x) << 7)
        );
        return $s;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p
     * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1
     * @throws SodiumException
     * @throws TypeError
     */
    public static function ge_p3_dbl(ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p)
    {
        $q = self::ge_p3_to_p2($p);
        return self::ge_p2_dbl($q);
    }

    /**
     * @return ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp
     * @throws SodiumException
     * @throws TypeError
     */
    public static function ge_precomp_0()
    {
        return new ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp(
            self::fe_1(),
            self::fe_1(),
            self::fe_0()
        );
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param int $b
     * @param int $c
     * @return int
     * @psalm-suppress MixedReturnStatement
     */
    public static function equal($b, $c)
    {
        $b0 = $b & 0xffff;
        $b1 = ($b >> 16) & 0xffff;
        $c0 = $c & 0xffff;
        $c1 = ($c >> 16) & 0xffff;

        $d0 = (($b0 ^ $c0) - 1) >> 31;
        $d1 = (($b1 ^ $c1) - 1) >> 31;
        return ($d0 & $d1) & 1;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string|int $char
     * @return int (1 = yes, 0 = no)
     * @throws SodiumException
     * @throws TypeError
     */
    public static function negative($char)
    {
        if (is_int($char)) {
            return $char < 0 ? 1 : 0;
        }
        /** @var string $char */
        $x = self::chrToInt(self::substr($char, 0, 1));
        return (int) ($x >> 31);
    }

    /**
     * Conditional move
     *
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp $t
     * @param ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp $u
     * @param int $b
     * @return ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp
     * @throws SodiumException
     * @throws TypeError
     */
    public static function cmov(
        ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp $t,
        ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp $u,
        $b
    ) {
        if (!is_int($b)) {
            throw new InvalidArgumentException('Expected an integer.');
        }
        return new ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp(
            self::fe_cmov($t->yplusx, $u->yplusx, $b),
            self::fe_cmov($t->yminusx, $u->yminusx, $b),
            self::fe_cmov($t->xy2d, $u->xy2d, $b)
        );
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param int $pos
     * @param int $b
     * @return ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArrayAccess
     * @psalm-suppress MixedArrayOffset
     * @psalm-suppress MixedArgument
     */
    public static function ge_select($pos = 0, $b = 0)
    {
        static $base = null;
        if ($base === null) {
            $base = array();
            foreach (self::$base as $i => $bas) {
                for ($j = 0; $j < 8; ++$j) {
                    $base[$i][$j] = new ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp(
                        ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
                            array(
                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][0][0]),
                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][0][1]),
                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][0][2]),
                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][0][3]),
                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][0][4]),
                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][0][5]),
                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][0][6]),
                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][0][7]),
                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][0][8]),
                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][0][9])
                            )
                        ),
                        ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
                            array(
                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][1][0]),
                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][1][1]),
                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][1][2]),
                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][1][3]),
                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][1][4]),
                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][1][5]),
                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][1][6]),
                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][1][7]),
                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][1][8]),
                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][1][9])
                            )
                        ),
                        ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
                            array(
                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][2][0]),
                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][2][1]),
                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][2][2]),
                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][2][3]),
                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][2][4]),
                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][2][5]),
                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][2][6]),
                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][2][7]),
                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][2][8]),
                                ParagonIE_Sodium_Core32_Int32::fromInt($bas[$j][2][9])
                            )
                        )
                    );
                }
            }
        }
        if (!is_int($pos)) {
            throw new InvalidArgumentException('Position must be an integer');
        }
        if ($pos < 0 || $pos > 31) {
            throw new RangeException('Position is out of range [0, 31]');
        }

        $bnegative = self::negative($b);
        $babs = $b - (((-$bnegative) & $b) << 1);

        $t = self::ge_precomp_0();
        for ($i = 0; $i < 8; ++$i) {
            $t = self::cmov(
                $t,
                $base[$pos][$i],
                -self::equal($babs, $i + 1)
            );
        }
        $minusT = new ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp(
            self::fe_copy($t->yminusx),
            self::fe_copy($t->yplusx),
            self::fe_neg($t->xy2d)
        );
        return self::cmov($t, $minusT, -$bnegative);
    }

    /**
     * Subtract two group elements.
     *
     * r = p - q
     *
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p
     * @param ParagonIE_Sodium_Core32_Curve25519_Ge_Cached $q
     * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1
     * @throws SodiumException
     * @throws TypeError
     */
    public static function ge_sub(
        ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $p,
        ParagonIE_Sodium_Core32_Curve25519_Ge_Cached $q
    ) {
        $r = new ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1();

        $r->X = self::fe_add($p->Y, $p->X);
        $r->Y = self::fe_sub($p->Y, $p->X);
        $r->Z = self::fe_mul($r->X, $q->YminusX);
        $r->Y = self::fe_mul($r->Y, $q->YplusX);
        $r->T = self::fe_mul($q->T2d, $p->T);
        $r->X = self::fe_mul($p->Z, $q->Z);
        $t0 = self::fe_add($r->X, $r->X);
        $r->X = self::fe_sub($r->Z, $r->Y);
        $r->Y = self::fe_add($r->Z, $r->Y);
        $r->Z = self::fe_sub($t0, $r->T);
        $r->T = self::fe_add($t0, $r->T);

        return $r;
    }

    /**
     * Convert a group element to a byte string.
     *
     * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P2 $h
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function ge_tobytes(ParagonIE_Sodium_Core32_Curve25519_Ge_P2 $h)
    {
        $recip = self::fe_invert($h->Z);
        $x = self::fe_mul($h->X, $recip);
        $y = self::fe_mul($h->Y, $recip);
        $s = self::fe_tobytes($y);
        $s[31] = self::intToChr(
            self::chrToInt($s[31]) ^ (self::fe_isnegative($x) << 7)
        );
        return $s;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $a
     * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $A
     * @param string $b
     * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P2
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArrayAccess
     */
    public static function ge_double_scalarmult_vartime(
        $a,
        ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $A,
        $b
    ) {
        /** @var array<int, ParagonIE_Sodium_Core32_Curve25519_Ge_Cached> $Ai */
        $Ai = array();

        static $Bi = array();
        /** @var array<int, ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp> $Bi */
        if (!$Bi) {
            for ($i = 0; $i < 8; ++$i) {
                $Bi[$i] = new ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp(
                    ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
                        array(
                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][0][0]),
                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][0][1]),
                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][0][2]),
                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][0][3]),
                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][0][4]),
                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][0][5]),
                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][0][6]),
                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][0][7]),
                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][0][8]),
                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][0][9])
                        )
                    ),
                    ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
                        array(
                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][1][0]),
                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][1][1]),
                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][1][2]),
                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][1][3]),
                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][1][4]),
                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][1][5]),
                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][1][6]),
                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][1][7]),
                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][1][8]),
                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][1][9])
                        )
                    ),
                    ParagonIE_Sodium_Core32_Curve25519_Fe::fromArray(
                        array(
                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][2][0]),
                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][2][1]),
                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][2][2]),
                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][2][3]),
                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][2][4]),
                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][2][5]),
                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][2][6]),
                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][2][7]),
                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][2][8]),
                            ParagonIE_Sodium_Core32_Int32::fromInt(self::$base2[$i][2][9])
                        )
                    )
                );
            }
        }

        for ($i = 0; $i < 8; ++$i) {
            $Ai[$i] = new ParagonIE_Sodium_Core32_Curve25519_Ge_Cached(
                self::fe_0(),
                self::fe_0(),
                self::fe_0(),
                self::fe_0()
            );
        }
        /** @var array<int, ParagonIE_Sodium_Core32_Curve25519_Ge_Cached> $Ai */

        # slide(aslide,a);
        # slide(bslide,b);
        /** @var array<int, int> $aslide */
        $aslide = self::slide($a);
        /** @var array<int, int> $bslide */
        $bslide = self::slide($b);

        # ge_p3_to_cached(&Ai[0],A);
        # ge_p3_dbl(&t,A); ge_p1p1_to_p3(&A2,&t);
        $Ai[0] = self::ge_p3_to_cached($A);
        $t = self::ge_p3_dbl($A);
        $A2 = self::ge_p1p1_to_p3($t);

        # ge_add(&t,&A2,&Ai[0]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[1],&u);
        # ge_add(&t,&A2,&Ai[1]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[2],&u);
        # ge_add(&t,&A2,&Ai[2]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[3],&u);
        # ge_add(&t,&A2,&Ai[3]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[4],&u);
        # ge_add(&t,&A2,&Ai[4]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[5],&u);
        # ge_add(&t,&A2,&Ai[5]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[6],&u);
        # ge_add(&t,&A2,&Ai[6]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[7],&u);
        for ($i = 0; $i < 7; ++$i) {
            $t = self::ge_add($A2, $Ai[$i]);
            $u = self::ge_p1p1_to_p3($t);
            $Ai[$i + 1] = self::ge_p3_to_cached($u);
        }

        # ge_p2_0(r);
        $r = self::ge_p2_0();

        # for (i = 255;i >= 0;--i) {
        #     if (aslide[i] || bslide[i]) break;
        # }
        $i = 255;
        for (; $i >= 0; --$i) {
            if ($aslide[$i] || $bslide[$i]) {
                break;
            }
        }

        # for (;i >= 0;--i) {
        for (; $i >= 0; --$i) {
            # ge_p2_dbl(&t,r);
            $t = self::ge_p2_dbl($r);

            # if (aslide[i] > 0) {
            if ($aslide[$i] > 0) {
                # ge_p1p1_to_p3(&u,&t);
                # ge_add(&t,&u,&Ai[aslide[i]/2]);
                $u = self::ge_p1p1_to_p3($t);
                $t = self::ge_add(
                    $u,
                    $Ai[(int) floor($aslide[$i] / 2)]
                );
                # } else if (aslide[i] < 0) {
            } elseif ($aslide[$i] < 0) {
                # ge_p1p1_to_p3(&u,&t);
                # ge_sub(&t,&u,&Ai[(-aslide[i])/2]);
                $u = self::ge_p1p1_to_p3($t);
                $t = self::ge_sub(
                    $u,
                    $Ai[(int) floor(-$aslide[$i] / 2)]
                );
            }
            /** @var array<int, ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp> $Bi */

            # if (bslide[i] > 0) {
            if ($bslide[$i] > 0) {
                # ge_p1p1_to_p3(&u,&t);
                # ge_madd(&t,&u,&Bi[bslide[i]/2]);
                $u = self::ge_p1p1_to_p3($t);
                /** @var int $index */
                $index = (int) floor($bslide[$i] / 2);
                /** @var ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp $thisB */
                $thisB = $Bi[$index];
                $t = self::ge_madd($t, $u, $thisB);
                # } else if (bslide[i] < 0) {
            } elseif ($bslide[$i] < 0) {
                # ge_p1p1_to_p3(&u,&t);
                # ge_msub(&t,&u,&Bi[(-bslide[i])/2]);
                $u = self::ge_p1p1_to_p3($t);

                /** @var int $index */
                $index = (int) floor(-$bslide[$i] / 2);

                /** @var ParagonIE_Sodium_Core32_Curve25519_Ge_Precomp $thisB */
                $thisB = $Bi[$index];
                $t = self::ge_msub($t, $u, $thisB);
            }
            # ge_p1p1_to_p2(r,&t);
            $r = self::ge_p1p1_to_p2($t);
        }
        return $r;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $a
     * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P3
     * @psalm-suppress MixedAssignment
     * @psalm-suppress MixedOperand
     * @throws SodiumException
     * @throws TypeError
     */
    public static function ge_scalarmult_base($a)
    {
        /** @var array<int, int> $e */
        $e = array();
        $r = new ParagonIE_Sodium_Core32_Curve25519_Ge_P1p1();

        for ($i = 0; $i < 32; ++$i) {
            /** @var int $dbl */
            $dbl = (int) $i << 1;
            $e[$dbl] = (int) self::chrToInt($a[$i]) & 15;
            $e[$dbl + 1] = (int) (self::chrToInt($a[$i]) >> 4) & 15;
        }

        /** @var int $carry */
        $carry = 0;
        for ($i = 0; $i < 63; ++$i) {
            $e[$i] += $carry;
            $carry = $e[$i] + 8;
            $carry >>= 4;
            $e[$i] -= $carry << 4;
        }

        /** @var array<int, int> $e */
        $e[63] += (int) $carry;

        $h = self::ge_p3_0();

        for ($i = 1; $i < 64; $i += 2) {
            $t = self::ge_select((int) floor($i / 2), (int) $e[$i]);
            $r = self::ge_madd($r, $h, $t);
            $h = self::ge_p1p1_to_p3($r);
        }

        $r = self::ge_p3_dbl($h);

        $s = self::ge_p1p1_to_p2($r);
        $r = self::ge_p2_dbl($s);
        $s = self::ge_p1p1_to_p2($r);
        $r = self::ge_p2_dbl($s);
        $s = self::ge_p1p1_to_p2($r);
        $r = self::ge_p2_dbl($s);

        $h = self::ge_p1p1_to_p3($r);

        for ($i = 0; $i < 64; $i += 2) {
            $t = self::ge_select($i >> 1, (int) $e[$i]);
            $r = self::ge_madd($r, $h, $t);
            $h = self::ge_p1p1_to_p3($r);
        }
        return $h;
    }

    /**
     * Calculates (ab + c) mod l
     * where l = 2^252 + 27742317777372353535851937790883648493
     *
     * @internal You should not use this directly from another application
     *
     * @param string $a
     * @param string $b
     * @param string $c
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function sc_muladd($a, $b, $c)
    {
        $a0 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($a, 0, 3)));
        $a1 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($a, 2, 4)) >> 5));
        $a2 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($a, 5, 3)) >> 2));
        $a3 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($a, 7, 4)) >> 7));
        $a4 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($a, 10, 4)) >> 4));
        $a5 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($a, 13, 3)) >> 1));
        $a6 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($a, 15, 4)) >> 6));
        $a7 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($a, 18, 3)) >> 3));
        $a8 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($a, 21, 3)));
        $a9 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($a, 23, 4)) >> 5));
        $a10 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($a, 26, 3)) >> 2));
        $a11 = ParagonIE_Sodium_Core32_Int64::fromInt(0x1fffffff & (self::load_4(self::substr($a, 28, 4)) >> 7));
        $b0 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($b, 0, 3)));
        $b1 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($b, 2, 4)) >> 5));
        $b2 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($b, 5, 3)) >> 2));
        $b3 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($b, 7, 4)) >> 7));
        $b4 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($b, 10, 4)) >> 4));
        $b5 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($b, 13, 3)) >> 1));
        $b6 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($b, 15, 4)) >> 6));
        $b7 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($b, 18, 3)) >> 3));
        $b8 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($b, 21, 3)));
        $b9 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($b, 23, 4)) >> 5));
        $b10 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($b, 26, 3)) >> 2));
        $b11 = ParagonIE_Sodium_Core32_Int64::fromInt(0x1fffffff & (self::load_4(self::substr($b, 28, 4)) >> 7));
        $c0 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($c, 0, 3)));
        $c1 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($c, 2, 4)) >> 5));
        $c2 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($c, 5, 3)) >> 2));
        $c3 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($c, 7, 4)) >> 7));
        $c4 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($c, 10, 4)) >> 4));
        $c5 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($c, 13, 3)) >> 1));
        $c6 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($c, 15, 4)) >> 6));
        $c7 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($c, 18, 3)) >> 3));
        $c8 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($c, 21, 3)));
        $c9 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($c, 23, 4)) >> 5));
        $c10 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($c, 26, 3)) >> 2));
        $c11 = ParagonIE_Sodium_Core32_Int64::fromInt(0x1fffffff & (self::load_4(self::substr($c, 28, 4)) >> 7));

        /* Can't really avoid the pyramid here: */
        /**
         * @var ParagonIE_Sodium_Core32_Int64 $s0
         * @var ParagonIE_Sodium_Core32_Int64 $s1
         * @var ParagonIE_Sodium_Core32_Int64 $s2
         * @var ParagonIE_Sodium_Core32_Int64 $s3
         * @var ParagonIE_Sodium_Core32_Int64 $s4
         * @var ParagonIE_Sodium_Core32_Int64 $s5
         * @var ParagonIE_Sodium_Core32_Int64 $s6
         * @var ParagonIE_Sodium_Core32_Int64 $s7
         * @var ParagonIE_Sodium_Core32_Int64 $s8
         * @var ParagonIE_Sodium_Core32_Int64 $s9
         * @var ParagonIE_Sodium_Core32_Int64 $s10
         * @var ParagonIE_Sodium_Core32_Int64 $s11
         * @var ParagonIE_Sodium_Core32_Int64 $s12
         * @var ParagonIE_Sodium_Core32_Int64 $s13
         * @var ParagonIE_Sodium_Core32_Int64 $s14
         * @var ParagonIE_Sodium_Core32_Int64 $s15
         * @var ParagonIE_Sodium_Core32_Int64 $s16
         * @var ParagonIE_Sodium_Core32_Int64 $s17
         * @var ParagonIE_Sodium_Core32_Int64 $s18
         * @var ParagonIE_Sodium_Core32_Int64 $s19
         * @var ParagonIE_Sodium_Core32_Int64 $s20
         * @var ParagonIE_Sodium_Core32_Int64 $s21
         * @var ParagonIE_Sodium_Core32_Int64 $s22
         * @var ParagonIE_Sodium_Core32_Int64 $s23
         */

        $s0 = $c0->addInt64($a0->mulInt64($b0, 24));
        $s1 = $c1->addInt64($a0->mulInt64($b1, 24))->addInt64($a1->mulInt64($b0, 24));
        $s2 = $c2->addInt64($a0->mulInt64($b2, 24))->addInt64($a1->mulInt64($b1, 24))->addInt64($a2->mulInt64($b0, 24));
        $s3 = $c3->addInt64($a0->mulInt64($b3, 24))->addInt64($a1->mulInt64($b2, 24))->addInt64($a2->mulInt64($b1, 24))
                 ->addInt64($a3->mulInt64($b0, 24));
        $s4 = $c4->addInt64($a0->mulInt64($b4, 24))->addInt64($a1->mulInt64($b3, 24))->addInt64($a2->mulInt64($b2, 24))
                 ->addInt64($a3->mulInt64($b1, 24))->addInt64($a4->mulInt64($b0, 24));
        $s5 = $c5->addInt64($a0->mulInt64($b5, 24))->addInt64($a1->mulInt64($b4, 24))->addInt64($a2->mulInt64($b3, 24))
                 ->addInt64($a3->mulInt64($b2, 24))->addInt64($a4->mulInt64($b1, 24))->addInt64($a5->mulInt64($b0, 24));
        $s6 = $c6->addInt64($a0->mulInt64($b6, 24))->addInt64($a1->mulInt64($b5, 24))->addInt64($a2->mulInt64($b4, 24))
                 ->addInt64($a3->mulInt64($b3, 24))->addInt64($a4->mulInt64($b2, 24))->addInt64($a5->mulInt64($b1, 24))
                 ->addInt64($a6->mulInt64($b0, 24));
        $s7 = $c7->addInt64($a0->mulInt64($b7, 24))->addInt64($a1->mulInt64($b6, 24))->addInt64($a2->mulInt64($b5, 24))
                 ->addInt64($a3->mulInt64($b4, 24))->addInt64($a4->mulInt64($b3, 24))->addInt64($a5->mulInt64($b2, 24))
                 ->addInt64($a6->mulInt64($b1, 24))->addInt64($a7->mulInt64($b0, 24));
        $s8 = $c8->addInt64($a0->mulInt64($b8, 24))->addInt64($a1->mulInt64($b7, 24))->addInt64($a2->mulInt64($b6, 24))
                 ->addInt64($a3->mulInt64($b5, 24))->addInt64($a4->mulInt64($b4, 24))->addInt64($a5->mulInt64($b3, 24))
                 ->addInt64($a6->mulInt64($b2, 24))->addInt64($a7->mulInt64($b1, 24))->addInt64($a8->mulInt64($b0, 24));
        $s9 = $c9->addInt64($a0->mulInt64($b9, 24))->addInt64($a1->mulInt64($b8, 24))->addInt64($a2->mulInt64($b7, 24))
                 ->addInt64($a3->mulInt64($b6, 24))->addInt64($a4->mulInt64($b5, 24))->addInt64($a5->mulInt64($b4, 24))
                 ->addInt64($a6->mulInt64($b3, 24))->addInt64($a7->mulInt64($b2, 24))->addInt64($a8->mulInt64($b1, 24))
                 ->addInt64($a9->mulInt64($b0, 24));
        $s10 = $c10->addInt64($a0->mulInt64($b10, 24))->addInt64($a1->mulInt64($b9, 24))->addInt64($a2->mulInt64($b8, 24))
                   ->addInt64($a3->mulInt64($b7, 24))->addInt64($a4->mulInt64($b6, 24))->addInt64($a5->mulInt64($b5, 24))
                   ->addInt64($a6->mulInt64($b4, 24))->addInt64($a7->mulInt64($b3, 24))->addInt64($a8->mulInt64($b2, 24))
                   ->addInt64($a9->mulInt64($b1, 24))->addInt64($a10->mulInt64($b0, 24));
        $s11 = $c11->addInt64($a0->mulInt64($b11, 24))->addInt64($a1->mulInt64($b10, 24))->addInt64($a2->mulInt64($b9, 24))
                   ->addInt64($a3->mulInt64($b8, 24))->addInt64($a4->mulInt64($b7, 24))->addInt64($a5->mulInt64($b6, 24))
                   ->addInt64($a6->mulInt64($b5, 24))->addInt64($a7->mulInt64($b4, 24))->addInt64($a8->mulInt64($b3, 24))
                   ->addInt64($a9->mulInt64($b2, 24))->addInt64($a10->mulInt64($b1, 24))->addInt64($a11->mulInt64($b0, 24));
        $s12 = $a1->mulInt64($b11, 24)->addInt64($a2->mulInt64($b10, 24))->addInt64($a3->mulInt64($b9, 24))
                  ->addInt64($a4->mulInt64($b8, 24))->addInt64($a5->mulInt64($b7, 24))->addInt64($a6->mulInt64($b6, 24))
                  ->addInt64($a7->mulInt64($b5, 24))->addInt64($a8->mulInt64($b4, 24))->addInt64($a9->mulInt64($b3, 24))
                  ->addInt64($a10->mulInt64($b2, 24))->addInt64($a11->mulInt64($b1, 24));
        $s13 = $a2->mulInt64($b11, 24)->addInt64($a3->mulInt64($b10, 24))->addInt64($a4->mulInt64($b9, 24))
                  ->addInt64($a5->mulInt64($b8, 24))->addInt64($a6->mulInt64($b7, 24))->addInt64($a7->mulInt64($b6, 24))
                  ->addInt64($a8->mulInt64($b5, 24))->addInt64($a9->mulInt64($b4, 24))->addInt64($a10->mulInt64($b3, 24))
                  ->addInt64($a11->mulInt64($b2, 24));
        $s14 = $a3->mulInt64($b11, 24)->addInt64($a4->mulInt64($b10, 24))->addInt64($a5->mulInt64($b9, 24))
                  ->addInt64($a6->mulInt64($b8, 24))->addInt64($a7->mulInt64($b7, 24))->addInt64($a8->mulInt64($b6, 24))
                  ->addInt64($a9->mulInt64($b5, 24))->addInt64($a10->mulInt64($b4, 24))->addInt64($a11->mulInt64($b3, 24));
        $s15 = $a4->mulInt64($b11, 24)->addInt64($a5->mulInt64($b10, 24))->addInt64($a6->mulInt64($b9, 24))
                  ->addInt64($a7->mulInt64($b8, 24))->addInt64($a8->mulInt64($b7, 24))->addInt64($a9->mulInt64($b6, 24))
                  ->addInt64($a10->mulInt64($b5, 24))->addInt64($a11->mulInt64($b4, 24));
        $s16 = $a5->mulInt64($b11, 24)->addInt64($a6->mulInt64($b10, 24))->addInt64($a7->mulInt64($b9, 24))
                  ->addInt64($a8->mulInt64($b8, 24))->addInt64($a9->mulInt64($b7, 24))->addInt64($a10->mulInt64($b6, 24))
                  ->addInt64($a11->mulInt64($b5, 24));
        $s17 = $a6->mulInt64($b11, 24)->addInt64($a7->mulInt64($b10, 24))->addInt64($a8->mulInt64($b9, 24))
                  ->addInt64($a9->mulInt64($b8, 24))->addInt64($a10->mulInt64($b7, 24))->addInt64($a11->mulInt64($b6, 24));
        $s18 = $a7->mulInt64($b11, 24)->addInt64($a8->mulInt64($b10, 24))->addInt64($a9->mulInt64($b9, 24))
                  ->addInt64($a10->mulInt64($b8, 24))->addInt64($a11->mulInt64($b7, 24));
        $s19 = $a8->mulInt64($b11, 24)->addInt64($a9->mulInt64($b10, 24))->addInt64($a10->mulInt64($b9, 24))
                  ->addInt64($a11->mulInt64($b8, 24));
        $s20 = $a9->mulInt64($b11, 24)->addInt64($a10->mulInt64($b10, 24))->addInt64($a11->mulInt64($b9, 24));
        $s21 = $a10->mulInt64($b11, 24)->addInt64($a11->mulInt64($b10, 24));
        $s22 = $a11->mulInt64($b11, 24);
        $s23 = new ParagonIE_Sodium_Core32_Int64();

        $carry0 = $s0->addInt(1 << 20)->shiftRight(21);
        $s1 = $s1->addInt64($carry0);
        $s0 = $s0->subInt64($carry0->shiftLeft(21));
        $carry2 = $s2->addInt(1 << 20)->shiftRight(21);
        $s3 = $s3->addInt64($carry2);
        $s2 = $s2->subInt64($carry2->shiftLeft(21));
        $carry4 = $s4->addInt(1 << 20)->shiftRight(21);
        $s5 = $s5->addInt64($carry4);
        $s4 = $s4->subInt64($carry4->shiftLeft(21));
        $carry6 = $s6->addInt(1 << 20)->shiftRight(21);
        $s7 = $s7->addInt64($carry6);
        $s6 = $s6->subInt64($carry6->shiftLeft(21));
        $carry8 = $s8->addInt(1 << 20)->shiftRight(21);
        $s9 = $s9->addInt64($carry8);
        $s8 = $s8->subInt64($carry8->shiftLeft(21));
        $carry10 = $s10->addInt(1 << 20)->shiftRight(21);
        $s11 = $s11->addInt64($carry10);
        $s10 = $s10->subInt64($carry10->shiftLeft(21));
        $carry12 = $s12->addInt(1 << 20)->shiftRight(21);
        $s13 = $s13->addInt64($carry12);
        $s12 = $s12->subInt64($carry12->shiftLeft(21));
        $carry14 = $s14->addInt(1 << 20)->shiftRight(21);
        $s15 = $s15->addInt64($carry14);
        $s14 = $s14->subInt64($carry14->shiftLeft(21));
        $carry16 = $s16->addInt(1 << 20)->shiftRight(21);
        $s17 = $s17->addInt64($carry16);
        $s16 = $s16->subInt64($carry16->shiftLeft(21));
        $carry18 = $s18->addInt(1 << 20)->shiftRight(21);
        $s19 = $s19->addInt64($carry18);
        $s18 = $s18->subInt64($carry18->shiftLeft(21));
        $carry20 = $s20->addInt(1 << 20)->shiftRight(21);
        $s21 = $s21->addInt64($carry20);
        $s20 = $s20->subInt64($carry20->shiftLeft(21));
        $carry22 = $s22->addInt(1 << 20)->shiftRight(21);
        $s23 = $s23->addInt64($carry22);
        $s22 = $s22->subInt64($carry22->shiftLeft(21));

        $carry1 = $s1->addInt(1 << 20)->shiftRight(21);
        $s2 = $s2->addInt64($carry1);
        $s1 = $s1->subInt64($carry1->shiftLeft(21));
        $carry3 = $s3->addInt(1 << 20)->shiftRight(21);
        $s4 = $s4->addInt64($carry3);
        $s3 = $s3->subInt64($carry3->shiftLeft(21));
        $carry5 = $s5->addInt(1 << 20)->shiftRight(21);
        $s6 = $s6->addInt64($carry5);
        $s5 = $s5->subInt64($carry5->shiftLeft(21));
        $carry7 = $s7->addInt(1 << 20)->shiftRight(21);
        $s8 = $s8->addInt64($carry7);
        $s7 = $s7->subInt64($carry7->shiftLeft(21));
        $carry9 = $s9->addInt(1 << 20)->shiftRight(21);
        $s10 = $s10->addInt64($carry9);
        $s9 = $s9->subInt64($carry9->shiftLeft(21));
        $carry11 = $s11->addInt(1 << 20)->shiftRight(21);
        $s12 = $s12->addInt64($carry11);
        $s11 = $s11->subInt64($carry11->shiftLeft(21));
        $carry13 = $s13->addInt(1 << 20)->shiftRight(21);
        $s14 = $s14->addInt64($carry13);
        $s13 = $s13->subInt64($carry13->shiftLeft(21));
        $carry15 = $s15->addInt(1 << 20)->shiftRight(21);
        $s16 = $s16->addInt64($carry15);
        $s15 = $s15->subInt64($carry15->shiftLeft(21));
        $carry17 = $s17->addInt(1 << 20)->shiftRight(21);
        $s18 = $s18->addInt64($carry17);
        $s17 = $s17->subInt64($carry17->shiftLeft(21));
        $carry19 = $s19->addInt(1 << 20)->shiftRight(21);
        $s20 = $s20->addInt64($carry19);
        $s19 = $s19->subInt64($carry19->shiftLeft(21));
        $carry21 = $s21->addInt(1 << 20)->shiftRight(21);
        $s22 = $s22->addInt64($carry21);
        $s21 = $s21->subInt64($carry21->shiftLeft(21));

        $s11 = $s11->addInt64($s23->mulInt(666643, 20));
        $s12 = $s12->addInt64($s23->mulInt(470296, 19));
        $s13 = $s13->addInt64($s23->mulInt(654183, 20));
        $s14 = $s14->subInt64($s23->mulInt(997805, 20));
        $s15 = $s15->addInt64($s23->mulInt(136657, 18));
        $s16 = $s16->subInt64($s23->mulInt(683901, 20));

        $s10 = $s10->addInt64($s22->mulInt(666643, 20));
        $s11 = $s11->addInt64($s22->mulInt(470296, 19));
        $s12 = $s12->addInt64($s22->mulInt(654183, 20));
        $s13 = $s13->subInt64($s22->mulInt(997805, 20));
        $s14 = $s14->addInt64($s22->mulInt(136657, 18));
        $s15 = $s15->subInt64($s22->mulInt(683901, 20));

        $s9  =  $s9->addInt64($s21->mulInt(666643, 20));
        $s10 = $s10->addInt64($s21->mulInt(470296, 19));
        $s11 = $s11->addInt64($s21->mulInt(654183, 20));
        $s12 = $s12->subInt64($s21->mulInt(997805, 20));
        $s13 = $s13->addInt64($s21->mulInt(136657, 18));
        $s14 = $s14->subInt64($s21->mulInt(683901, 20));

        $s8  =  $s8->addInt64($s20->mulInt(666643, 20));
        $s9  =  $s9->addInt64($s20->mulInt(470296, 19));
        $s10 = $s10->addInt64($s20->mulInt(654183, 20));
        $s11 = $s11->subInt64($s20->mulInt(997805, 20));
        $s12 = $s12->addInt64($s20->mulInt(136657, 18));
        $s13 = $s13->subInt64($s20->mulInt(683901, 20));

        $s7  =  $s7->addInt64($s19->mulInt(666643, 20));
        $s8  =  $s8->addInt64($s19->mulInt(470296, 19));
        $s9  =  $s9->addInt64($s19->mulInt(654183, 20));
        $s10 = $s10->subInt64($s19->mulInt(997805, 20));
        $s11 = $s11->addInt64($s19->mulInt(136657, 18));
        $s12 = $s12->subInt64($s19->mulInt(683901, 20));

        $s6  =  $s6->addInt64($s18->mulInt(666643, 20));
        $s7  =  $s7->addInt64($s18->mulInt(470296, 19));
        $s8  =  $s8->addInt64($s18->mulInt(654183, 20));
        $s9  =  $s9->subInt64($s18->mulInt(997805, 20));
        $s10 = $s10->addInt64($s18->mulInt(136657, 18));
        $s11 = $s11->subInt64($s18->mulInt(683901, 20));

        $carry6 = $s6->addInt(1 << 20)->shiftRight(21);
        $s7 = $s7->addInt64($carry6);
        $s6 = $s6->subInt64($carry6->shiftLeft(21));
        $carry8 = $s8->addInt(1 << 20)->shiftRight(21);
        $s9 = $s9->addInt64($carry8);
        $s8 = $s8->subInt64($carry8->shiftLeft(21));
        $carry10 = $s10->addInt(1 << 20)->shiftRight(21);
        $s11 = $s11->addInt64($carry10);
        $s10 = $s10->subInt64($carry10->shiftLeft(21));
        $carry12 = $s12->addInt(1 << 20)->shiftRight(21);
        $s13 = $s13->addInt64($carry12);
        $s12 = $s12->subInt64($carry12->shiftLeft(21));
        $carry14 = $s14->addInt(1 << 20)->shiftRight(21);
        $s15 = $s15->addInt64($carry14);
        $s14 = $s14->subInt64($carry14->shiftLeft(21));
        $carry16 = $s16->addInt(1 << 20)->shiftRight(21);
        $s17 = $s17->addInt64($carry16);
        $s16 = $s16->subInt64($carry16->shiftLeft(21));

        $carry7 = $s7->addInt(1 << 20)->shiftRight(21);
        $s8 = $s8->addInt64($carry7);
        $s7 = $s7->subInt64($carry7->shiftLeft(21));
        $carry9 = $s9->addInt(1 << 20)->shiftRight(21);
        $s10 = $s10->addInt64($carry9);
        $s9 = $s9->subInt64($carry9->shiftLeft(21));
        $carry11 = $s11->addInt(1 << 20)->shiftRight(21);
        $s12 = $s12->addInt64($carry11);
        $s11 = $s11->subInt64($carry11->shiftLeft(21));
        $carry13 = $s13->addInt(1 << 20)->shiftRight(21);
        $s14 = $s14->addInt64($carry13);
        $s13 = $s13->subInt64($carry13->shiftLeft(21));
        $carry15 = $s15->addInt(1 << 20)->shiftRight(21);
        $s16 = $s16->addInt64($carry15);
        $s15 = $s15->subInt64($carry15->shiftLeft(21));

        $s5  =  $s5->addInt64($s17->mulInt(666643, 20));
        $s6  =  $s6->addInt64($s17->mulInt(470296, 19));
        $s7  =  $s7->addInt64($s17->mulInt(654183, 20));
        $s8  =  $s8->subInt64($s17->mulInt(997805, 20));
        $s9  =  $s9->addInt64($s17->mulInt(136657, 18));
        $s10 = $s10->subInt64($s17->mulInt(683901, 20));

        $s4  =  $s4->addInt64($s16->mulInt(666643, 20));
        $s5  =  $s5->addInt64($s16->mulInt(470296, 19));
        $s6  =  $s6->addInt64($s16->mulInt(654183, 20));
        $s7  =  $s7->subInt64($s16->mulInt(997805, 20));
        $s8  =  $s8->addInt64($s16->mulInt(136657, 18));
        $s9  =  $s9->subInt64($s16->mulInt(683901, 20));

        $s3  =  $s3->addInt64($s15->mulInt(666643, 20));
        $s4  =  $s4->addInt64($s15->mulInt(470296, 19));
        $s5  =  $s5->addInt64($s15->mulInt(654183, 20));
        $s6  =  $s6->subInt64($s15->mulInt(997805, 20));
        $s7  =  $s7->addInt64($s15->mulInt(136657, 18));
        $s8  =  $s8->subInt64($s15->mulInt(683901, 20));

        $s2  =  $s2->addInt64($s14->mulInt(666643, 20));
        $s3  =  $s3->addInt64($s14->mulInt(470296, 19));
        $s4  =  $s4->addInt64($s14->mulInt(654183, 20));
        $s5  =  $s5->subInt64($s14->mulInt(997805, 20));
        $s6  =  $s6->addInt64($s14->mulInt(136657, 18));
        $s7  =  $s7->subInt64($s14->mulInt(683901, 20));

        $s1  =  $s1->addInt64($s13->mulInt(666643, 20));
        $s2  =  $s2->addInt64($s13->mulInt(470296, 19));
        $s3  =  $s3->addInt64($s13->mulInt(654183, 20));
        $s4  =  $s4->subInt64($s13->mulInt(997805, 20));
        $s5  =  $s5->addInt64($s13->mulInt(136657, 18));
        $s6  =  $s6->subInt64($s13->mulInt(683901, 20));

        $s0  =  $s0->addInt64($s12->mulInt(666643, 20));
        $s1  =  $s1->addInt64($s12->mulInt(470296, 19));
        $s2  =  $s2->addInt64($s12->mulInt(654183, 20));
        $s3  =  $s3->subInt64($s12->mulInt(997805, 20));
        $s4  =  $s4->addInt64($s12->mulInt(136657, 18));
        $s5  =  $s5->subInt64($s12->mulInt(683901, 20));
        $s12 = new ParagonIE_Sodium_Core32_Int64();

        $carry0 = $s0->addInt(1 << 20)->shiftRight(21);
        $s1 = $s1->addInt64($carry0);
        $s0 = $s0->subInt64($carry0->shiftLeft(21));
        $carry2 = $s2->addInt(1 << 20)->shiftRight(21);
        $s3 = $s3->addInt64($carry2);
        $s2 = $s2->subInt64($carry2->shiftLeft(21));
        $carry4 = $s4->addInt(1 << 20)->shiftRight(21);
        $s5 = $s5->addInt64($carry4);
        $s4 = $s4->subInt64($carry4->shiftLeft(21));
        $carry6 = $s6->addInt(1 << 20)->shiftRight(21);
        $s7 = $s7->addInt64($carry6);
        $s6 = $s6->subInt64($carry6->shiftLeft(21));
        $carry8 = $s8->addInt(1 << 20)->shiftRight(21);
        $s9 = $s9->addInt64($carry8);
        $s8 = $s8->subInt64($carry8->shiftLeft(21));
        $carry10 = $s10->addInt(1 << 20)->shiftRight(21);
        $s11 = $s11->addInt64($carry10);
        $s10 = $s10->subInt64($carry10->shiftLeft(21));

        $carry1 = $s1->addInt(1 << 20)->shiftRight(21);
        $s2 = $s2->addInt64($carry1);
        $s1 = $s1->subInt64($carry1->shiftLeft(21));
        $carry3 = $s3->addInt(1 << 20)->shiftRight(21);
        $s4 = $s4->addInt64($carry3);
        $s3 = $s3->subInt64($carry3->shiftLeft(21));
        $carry5 = $s5->addInt(1 << 20)->shiftRight(21);
        $s6 = $s6->addInt64($carry5);
        $s5 = $s5->subInt64($carry5->shiftLeft(21));
        $carry7 = $s7->addInt(1 << 20)->shiftRight(21);
        $s8 = $s8->addInt64($carry7);
        $s7 = $s7->subInt64($carry7->shiftLeft(21));
        $carry9 = $s9->addInt(1 << 20)->shiftRight(21);
        $s10 = $s10->addInt64($carry9);
        $s9 = $s9->subInt64($carry9->shiftLeft(21));
        $carry11 = $s11->addInt(1 << 20)->shiftRight(21);
        $s12 = $s12->addInt64($carry11);
        $s11 = $s11->subInt64($carry11->shiftLeft(21));

        $s0  =  $s0->addInt64($s12->mulInt(666643, 20));
        $s1  =  $s1->addInt64($s12->mulInt(470296, 19));
        $s2  =  $s2->addInt64($s12->mulInt(654183, 20));
        $s3  =  $s3->subInt64($s12->mulInt(997805, 20));
        $s4  =  $s4->addInt64($s12->mulInt(136657, 18));
        $s5  =  $s5->subInt64($s12->mulInt(683901, 20));
        $s12 = new ParagonIE_Sodium_Core32_Int64();

        $carry0 = $s0->shiftRight(21);
        $s1 = $s1->addInt64($carry0);
        $s0 = $s0->subInt64($carry0->shiftLeft(21));
        $carry1 = $s1->shiftRight(21);
        $s2 = $s2->addInt64($carry1);
        $s1 = $s1->subInt64($carry1->shiftLeft(21));
        $carry2 = $s2->shiftRight(21);
        $s3 = $s3->addInt64($carry2);
        $s2 = $s2->subInt64($carry2->shiftLeft(21));
        $carry3 = $s3->shiftRight(21);
        $s4 = $s4->addInt64($carry3);
        $s3 = $s3->subInt64($carry3->shiftLeft(21));
        $carry4 = $s4->shiftRight(21);
        $s5 = $s5->addInt64($carry4);
        $s4 = $s4->subInt64($carry4->shiftLeft(21));
        $carry5 = $s5->shiftRight(21);
        $s6 = $s6->addInt64($carry5);
        $s5 = $s5->subInt64($carry5->shiftLeft(21));
        $carry6 = $s6->shiftRight(21);
        $s7 = $s7->addInt64($carry6);
        $s6 = $s6->subInt64($carry6->shiftLeft(21));
        $carry7 = $s7->shiftRight(21);
        $s8 = $s8->addInt64($carry7);
        $s7 = $s7->subInt64($carry7->shiftLeft(21));
        $carry8 = $s8->shiftRight(21);
        $s9 = $s9->addInt64($carry8);
        $s8 = $s8->subInt64($carry8->shiftLeft(21));
        $carry9 = $s9->shiftRight(21);
        $s10 = $s10->addInt64($carry9);
        $s9 = $s9->subInt64($carry9->shiftLeft(21));
        $carry10 = $s10->shiftRight(21);
        $s11 = $s11->addInt64($carry10);
        $s10 = $s10->subInt64($carry10->shiftLeft(21));
        $carry11 = $s11->shiftRight(21);
        $s12 = $s12->addInt64($carry11);
        $s11 = $s11->subInt64($carry11->shiftLeft(21));

        $s0  =  $s0->addInt64($s12->mulInt(666643, 20));
        $s1  =  $s1->addInt64($s12->mulInt(470296, 19));
        $s2  =  $s2->addInt64($s12->mulInt(654183, 20));
        $s3  =  $s3->subInt64($s12->mulInt(997805, 20));
        $s4  =  $s4->addInt64($s12->mulInt(136657, 18));
        $s5  =  $s5->subInt64($s12->mulInt(683901, 20));

        $carry0 = $s0->shiftRight(21);
        $s1 = $s1->addInt64($carry0);
        $s0 = $s0->subInt64($carry0->shiftLeft(21));
        $carry1 = $s1->shiftRight(21);
        $s2 = $s2->addInt64($carry1);
        $s1 = $s1->subInt64($carry1->shiftLeft(21));
        $carry2 = $s2->shiftRight(21);
        $s3 = $s3->addInt64($carry2);
        $s2 = $s2->subInt64($carry2->shiftLeft(21));
        $carry3 = $s3->shiftRight(21);
        $s4 = $s4->addInt64($carry3);
        $s3 = $s3->subInt64($carry3->shiftLeft(21));
        $carry4 = $s4->shiftRight(21);
        $s5 = $s5->addInt64($carry4);
        $s4 = $s4->subInt64($carry4->shiftLeft(21));
        $carry5 = $s5->shiftRight(21);
        $s6 = $s6->addInt64($carry5);
        $s5 = $s5->subInt64($carry5->shiftLeft(21));
        $carry6 = $s6->shiftRight(21);
        $s7 = $s7->addInt64($carry6);
        $s6 = $s6->subInt64($carry6->shiftLeft(21));
        $carry7 = $s7->shiftRight(21);
        $s8 = $s8->addInt64($carry7);
        $s7 = $s7->subInt64($carry7->shiftLeft(21));
        $carry8 = $s10->shiftRight(21);
        $s9 = $s9->addInt64($carry8);
        $s8 = $s8->subInt64($carry8->shiftLeft(21));
        $carry9 = $s9->shiftRight(21);
        $s10 = $s10->addInt64($carry9);
        $s9 = $s9->subInt64($carry9->shiftLeft(21));
        $carry10 = $s10->shiftRight(21);
        $s11 = $s11->addInt64($carry10);
        $s10 = $s10->subInt64($carry10->shiftLeft(21));

        $S0  =  $s0->toInt();
        $S1  =  $s1->toInt();
        $S2  =  $s2->toInt();
        $S3  =  $s3->toInt();
        $S4  =  $s4->toInt();
        $S5  =  $s5->toInt();
        $S6  =  $s6->toInt();
        $S7  =  $s7->toInt();
        $S8  =  $s8->toInt();
        $S9  =  $s9->toInt();
        $S10 = $s10->toInt();
        $S11 = $s11->toInt();

        /**
         * @var array<int, int>
         */
        $arr = array(
            (int) (0xff & ($S0 >> 0)),
            (int) (0xff & ($S0 >> 8)),
            (int) (0xff & (($S0 >> 16) | ($S1 << 5))),
            (int) (0xff & ($S1 >> 3)),
            (int) (0xff & ($S1 >> 11)),
            (int) (0xff & (($S1 >> 19) | ($S2 << 2))),
            (int) (0xff & ($S2 >> 6)),
            (int) (0xff & (($S2 >> 14) | ($S3 << 7))),
            (int) (0xff & ($S3 >> 1)),
            (int) (0xff & ($S3 >> 9)),
            (int) (0xff & (($S3 >> 17) | ($S4 << 4))),
            (int) (0xff & ($S4 >> 4)),
            (int) (0xff & ($S4 >> 12)),
            (int) (0xff & (($S4 >> 20) | ($S5 << 1))),
            (int) (0xff & ($S5 >> 7)),
            (int) (0xff & (($S5 >> 15) | ($S6 << 6))),
            (int) (0xff & ($S6 >> 2)),
            (int) (0xff & ($S6 >> 10)),
            (int) (0xff & (($S6 >> 18) | ($S7 << 3))),
            (int) (0xff & ($S7 >> 5)),
            (int) (0xff & ($S7 >> 13)),
            (int) (0xff & ($S8 >> 0)),
            (int) (0xff & ($S8 >> 8)),
            (int) (0xff & (($S8 >> 16) | ($S9 << 5))),
            (int) (0xff & ($S9 >> 3)),
            (int) (0xff & ($S9 >> 11)),
            (int) (0xff & (($S9 >> 19) | ($S10 << 2))),
            (int) (0xff & ($S10 >> 6)),
            (int) (0xff & (($S10 >> 14) | ($S11 << 7))),
            (int) (0xff & ($S11 >> 1)),
            (int) (0xff & ($S11 >> 9)),
            (int) (0xff & ($S11 >> 17))
        );
        return self::intArrayToString($arr);
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $s
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function sc_reduce($s)
    {
        /**
         * @var ParagonIE_Sodium_Core32_Int64 $s0
         * @var ParagonIE_Sodium_Core32_Int64 $s1
         * @var ParagonIE_Sodium_Core32_Int64 $s2
         * @var ParagonIE_Sodium_Core32_Int64 $s3
         * @var ParagonIE_Sodium_Core32_Int64 $s4
         * @var ParagonIE_Sodium_Core32_Int64 $s5
         * @var ParagonIE_Sodium_Core32_Int64 $s6
         * @var ParagonIE_Sodium_Core32_Int64 $s7
         * @var ParagonIE_Sodium_Core32_Int64 $s8
         * @var ParagonIE_Sodium_Core32_Int64 $s9
         * @var ParagonIE_Sodium_Core32_Int64 $s10
         * @var ParagonIE_Sodium_Core32_Int64 $s11
         * @var ParagonIE_Sodium_Core32_Int64 $s12
         * @var ParagonIE_Sodium_Core32_Int64 $s13
         * @var ParagonIE_Sodium_Core32_Int64 $s14
         * @var ParagonIE_Sodium_Core32_Int64 $s15
         * @var ParagonIE_Sodium_Core32_Int64 $s16
         * @var ParagonIE_Sodium_Core32_Int64 $s17
         * @var ParagonIE_Sodium_Core32_Int64 $s18
         * @var ParagonIE_Sodium_Core32_Int64 $s19
         * @var ParagonIE_Sodium_Core32_Int64 $s20
         * @var ParagonIE_Sodium_Core32_Int64 $s21
         * @var ParagonIE_Sodium_Core32_Int64 $s22
         * @var ParagonIE_Sodium_Core32_Int64 $s23
         */
        $s0 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($s, 0, 3)));
        $s1 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 2, 4)) >> 5));
        $s2 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($s, 5, 3)) >> 2));
        $s3 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 7, 4)) >> 7));
        $s4 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 10, 4)) >> 4));
        $s5 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($s, 13, 3)) >> 1));
        $s6 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 15, 4)) >> 6));
        $s7 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($s, 18, 4)) >> 3));
        $s8 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($s, 21, 3)));
        $s9 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 23, 4)) >> 5));
        $s10 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($s, 26, 3)) >> 2));
        $s11 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 28, 4)) >> 7));
        $s12 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 31, 4)) >> 4));
        $s13 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($s, 34, 3)) >> 1));
        $s14 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 36, 4)) >> 6));
        $s15 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($s, 39, 4)) >> 3));
        $s16 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & self::load_3(self::substr($s, 42, 3)));
        $s17 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 44, 4)) >> 5));
        $s18 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($s, 47, 3)) >> 2));
        $s19 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 49, 4)) >> 7));
        $s20 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 52, 4)) >> 4));
        $s21 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_3(self::substr($s, 55, 3)) >> 1));
        $s22 = ParagonIE_Sodium_Core32_Int64::fromInt(2097151 & (self::load_4(self::substr($s, 57, 4)) >> 6));
        $s23 = ParagonIE_Sodium_Core32_Int64::fromInt(0x1fffffff & (self::load_4(self::substr($s, 60, 4)) >> 3));

        $s11 = $s11->addInt64($s23->mulInt(666643, 20));
        $s12 = $s12->addInt64($s23->mulInt(470296, 19));
        $s13 = $s13->addInt64($s23->mulInt(654183, 20));
        $s14 = $s14->subInt64($s23->mulInt(997805, 20));
        $s15 = $s15->addInt64($s23->mulInt(136657, 18));
        $s16 = $s16->subInt64($s23->mulInt(683901, 20));

        $s10 = $s10->addInt64($s22->mulInt(666643, 20));
        $s11 = $s11->addInt64($s22->mulInt(470296, 19));
        $s12 = $s12->addInt64($s22->mulInt(654183, 20));
        $s13 = $s13->subInt64($s22->mulInt(997805, 20));
        $s14 = $s14->addInt64($s22->mulInt(136657, 18));
        $s15 = $s15->subInt64($s22->mulInt(683901, 20));

        $s9  =  $s9->addInt64($s21->mulInt(666643, 20));
        $s10 = $s10->addInt64($s21->mulInt(470296, 19));
        $s11 = $s11->addInt64($s21->mulInt(654183, 20));
        $s12 = $s12->subInt64($s21->mulInt(997805, 20));
        $s13 = $s13->addInt64($s21->mulInt(136657, 18));
        $s14 = $s14->subInt64($s21->mulInt(683901, 20));

        $s8  =  $s8->addInt64($s20->mulInt(666643, 20));
        $s9  =  $s9->addInt64($s20->mulInt(470296, 19));
        $s10 = $s10->addInt64($s20->mulInt(654183, 20));
        $s11 = $s11->subInt64($s20->mulInt(997805, 20));
        $s12 = $s12->addInt64($s20->mulInt(136657, 18));
        $s13 = $s13->subInt64($s20->mulInt(683901, 20));

        $s7  =  $s7->addInt64($s19->mulInt(666643, 20));
        $s8  =  $s8->addInt64($s19->mulInt(470296, 19));
        $s9  =  $s9->addInt64($s19->mulInt(654183, 20));
        $s10 = $s10->subInt64($s19->mulInt(997805, 20));
        $s11 = $s11->addInt64($s19->mulInt(136657, 18));
        $s12 = $s12->subInt64($s19->mulInt(683901, 20));

        $s6  =  $s6->addInt64($s18->mulInt(666643, 20));
        $s7  =  $s7->addInt64($s18->mulInt(470296, 19));
        $s8  =  $s8->addInt64($s18->mulInt(654183, 20));
        $s9  =  $s9->subInt64($s18->mulInt(997805, 20));
        $s10 = $s10->addInt64($s18->mulInt(136657, 18));
        $s11 = $s11->subInt64($s18->mulInt(683901, 20));

        $carry6 = $s6->addInt(1 << 20)->shiftRight(21);
        $s7 = $s7->addInt64($carry6);
        $s6 = $s6->subInt64($carry6->shiftLeft(21));
        $carry8 = $s8->addInt(1 << 20)->shiftRight(21);
        $s9 = $s9->addInt64($carry8);
        $s8 = $s8->subInt64($carry8->shiftLeft(21));
        $carry10 = $s10->addInt(1 << 20)->shiftRight(21);
        $s11 = $s11->addInt64($carry10);
        $s10 = $s10->subInt64($carry10->shiftLeft(21));
        $carry12 = $s12->addInt(1 << 20)->shiftRight(21);
        $s13 = $s13->addInt64($carry12);
        $s12 = $s12->subInt64($carry12->shiftLeft(21));
        $carry14 = $s14->addInt(1 << 20)->shiftRight(21);
        $s15 = $s15->addInt64($carry14);
        $s14 = $s14->subInt64($carry14->shiftLeft(21));
        $carry16 = $s16->addInt(1 << 20)->shiftRight(21);
        $s17 = $s17->addInt64($carry16);
        $s16 = $s16->subInt64($carry16->shiftLeft(21));

        $carry7 = $s7->addInt(1 << 20)->shiftRight(21);
        $s8 = $s8->addInt64($carry7);
        $s7 = $s7->subInt64($carry7->shiftLeft(21));
        $carry9 = $s9->addInt(1 << 20)->shiftRight(21);
        $s10 = $s10->addInt64($carry9);
        $s9 = $s9->subInt64($carry9->shiftLeft(21));
        $carry11 = $s11->addInt(1 << 20)->shiftRight(21);
        $s12 = $s12->addInt64($carry11);
        $s11 = $s11->subInt64($carry11->shiftLeft(21));
        $carry13 = $s13->addInt(1 << 20)->shiftRight(21);
        $s14 = $s14->addInt64($carry13);
        $s13 = $s13->subInt64($carry13->shiftLeft(21));
        $carry15 = $s15->addInt(1 << 20)->shiftRight(21);
        $s16 = $s16->addInt64($carry15);
        $s15 = $s15->subInt64($carry15->shiftLeft(21));

        $s5  =  $s5->addInt64($s17->mulInt(666643, 20));
        $s6  =  $s6->addInt64($s17->mulInt(470296, 19));
        $s7  =  $s7->addInt64($s17->mulInt(654183, 20));
        $s8  =  $s8->subInt64($s17->mulInt(997805, 20));
        $s9  =  $s9->addInt64($s17->mulInt(136657, 18));
        $s10 = $s10->subInt64($s17->mulInt(683901, 20));

        $s4  =  $s4->addInt64($s16->mulInt(666643, 20));
        $s5  =  $s5->addInt64($s16->mulInt(470296, 19));
        $s6  =  $s6->addInt64($s16->mulInt(654183, 20));
        $s7  =  $s7->subInt64($s16->mulInt(997805, 20));
        $s8  =  $s8->addInt64($s16->mulInt(136657, 18));
        $s9  =  $s9->subInt64($s16->mulInt(683901, 20));

        $s3  =  $s3->addInt64($s15->mulInt(666643, 20));
        $s4  =  $s4->addInt64($s15->mulInt(470296, 19));
        $s5  =  $s5->addInt64($s15->mulInt(654183, 20));
        $s6  =  $s6->subInt64($s15->mulInt(997805, 20));
        $s7  =  $s7->addInt64($s15->mulInt(136657, 18));
        $s8  =  $s8->subInt64($s15->mulInt(683901, 20));

        $s2  =  $s2->addInt64($s14->mulInt(666643, 20));
        $s3  =  $s3->addInt64($s14->mulInt(470296, 19));
        $s4  =  $s4->addInt64($s14->mulInt(654183, 20));
        $s5  =  $s5->subInt64($s14->mulInt(997805, 20));
        $s6  =  $s6->addInt64($s14->mulInt(136657, 18));
        $s7  =  $s7->subInt64($s14->mulInt(683901, 20));

        $s1  =  $s1->addInt64($s13->mulInt(666643, 20));
        $s2  =  $s2->addInt64($s13->mulInt(470296, 19));
        $s3  =  $s3->addInt64($s13->mulInt(654183, 20));
        $s4  =  $s4->subInt64($s13->mulInt(997805, 20));
        $s5  =  $s5->addInt64($s13->mulInt(136657, 18));
        $s6  =  $s6->subInt64($s13->mulInt(683901, 20));

        $s0  =  $s0->addInt64($s12->mulInt(666643, 20));
        $s1  =  $s1->addInt64($s12->mulInt(470296, 19));
        $s2  =  $s2->addInt64($s12->mulInt(654183, 20));
        $s3  =  $s3->subInt64($s12->mulInt(997805, 20));
        $s4  =  $s4->addInt64($s12->mulInt(136657, 18));
        $s5  =  $s5->subInt64($s12->mulInt(683901, 20));
        $s12 = new ParagonIE_Sodium_Core32_Int64();

        $carry0 = $s0->addInt(1 << 20)->shiftRight(21);
        $s1 = $s1->addInt64($carry0);
        $s0 = $s0->subInt64($carry0->shiftLeft(21));
        $carry2 = $s2->addInt(1 << 20)->shiftRight(21);
        $s3 = $s3->addInt64($carry2);
        $s2 = $s2->subInt64($carry2->shiftLeft(21));
        $carry4 = $s4->addInt(1 << 20)->shiftRight(21);
        $s5 = $s5->addInt64($carry4);
        $s4 = $s4->subInt64($carry4->shiftLeft(21));
        $carry6 = $s6->addInt(1 << 20)->shiftRight(21);
        $s7 = $s7->addInt64($carry6);
        $s6 = $s6->subInt64($carry6->shiftLeft(21));
        $carry8 = $s8->addInt(1 << 20)->shiftRight(21);
        $s9 = $s9->addInt64($carry8);
        $s8 = $s8->subInt64($carry8->shiftLeft(21));
        $carry10 = $s10->addInt(1 << 20)->shiftRight(21);
        $s11 = $s11->addInt64($carry10);
        $s10 = $s10->subInt64($carry10->shiftLeft(21));
        $carry1 = $s1->addInt(1 << 20)->shiftRight(21);
        $s2 = $s2->addInt64($carry1);
        $s1 = $s1->subInt64($carry1->shiftLeft(21));
        $carry3 = $s3->addInt(1 << 20)->shiftRight(21);
        $s4 = $s4->addInt64($carry3);
        $s3 = $s3->subInt64($carry3->shiftLeft(21));
        $carry5 = $s5->addInt(1 << 20)->shiftRight(21);
        $s6 = $s6->addInt64($carry5);
        $s5 = $s5->subInt64($carry5->shiftLeft(21));
        $carry7 = $s7->addInt(1 << 20)->shiftRight(21);
        $s8 = $s8->addInt64($carry7);
        $s7 = $s7->subInt64($carry7->shiftLeft(21));
        $carry9 = $s9->addInt(1 << 20)->shiftRight(21);
        $s10 = $s10->addInt64($carry9);
        $s9 = $s9->subInt64($carry9->shiftLeft(21));
        $carry11 = $s11->addInt(1 << 20)->shiftRight(21);
        $s12 = $s12->addInt64($carry11);
        $s11 = $s11->subInt64($carry11->shiftLeft(21));

        $s0  =  $s0->addInt64($s12->mulInt(666643, 20));
        $s1  =  $s1->addInt64($s12->mulInt(470296, 19));
        $s2  =  $s2->addInt64($s12->mulInt(654183, 20));
        $s3  =  $s3->subInt64($s12->mulInt(997805, 20));
        $s4  =  $s4->addInt64($s12->mulInt(136657, 18));
        $s5  =  $s5->subInt64($s12->mulInt(683901, 20));
        $s12 = new ParagonIE_Sodium_Core32_Int64();

        $carry0 = $s0->shiftRight(21);
        $s1 = $s1->addInt64($carry0);
        $s0 = $s0->subInt64($carry0->shiftLeft(21));
        $carry1 = $s1->shiftRight(21);
        $s2 = $s2->addInt64($carry1);
        $s1 = $s1->subInt64($carry1->shiftLeft(21));
        $carry2 = $s2->shiftRight(21);
        $s3 = $s3->addInt64($carry2);
        $s2 = $s2->subInt64($carry2->shiftLeft(21));
        $carry3 = $s3->shiftRight(21);
        $s4 = $s4->addInt64($carry3);
        $s3 = $s3->subInt64($carry3->shiftLeft(21));
        $carry4 = $s4->shiftRight(21);
        $s5 = $s5->addInt64($carry4);
        $s4 = $s4->subInt64($carry4->shiftLeft(21));
        $carry5 = $s5->shiftRight(21);
        $s6 = $s6->addInt64($carry5);
        $s5 = $s5->subInt64($carry5->shiftLeft(21));
        $carry6 = $s6->shiftRight(21);
        $s7 = $s7->addInt64($carry6);
        $s6 = $s6->subInt64($carry6->shiftLeft(21));
        $carry7 = $s7->shiftRight(21);
        $s8 = $s8->addInt64($carry7);
        $s7 = $s7->subInt64($carry7->shiftLeft(21));
        $carry8 = $s8->shiftRight(21);
        $s9 = $s9->addInt64($carry8);
        $s8 = $s8->subInt64($carry8->shiftLeft(21));
        $carry9 = $s9->shiftRight(21);
        $s10 = $s10->addInt64($carry9);
        $s9 = $s9->subInt64($carry9->shiftLeft(21));
        $carry10 = $s10->shiftRight(21);
        $s11 = $s11->addInt64($carry10);
        $s10 = $s10->subInt64($carry10->shiftLeft(21));
        $carry11 = $s11->shiftRight(21);
        $s12 = $s12->addInt64($carry11);
        $s11 = $s11->subInt64($carry11->shiftLeft(21));

        $s0  =  $s0->addInt64($s12->mulInt(666643, 20));
        $s1  =  $s1->addInt64($s12->mulInt(470296, 19));
        $s2  =  $s2->addInt64($s12->mulInt(654183, 20));
        $s3  =  $s3->subInt64($s12->mulInt(997805, 20));
        $s4  =  $s4->addInt64($s12->mulInt(136657, 18));
        $s5  =  $s5->subInt64($s12->mulInt(683901, 20));

        $carry0 = $s0->shiftRight(21);
        $s1 = $s1->addInt64($carry0);
        $s0 = $s0->subInt64($carry0->shiftLeft(21));
        $carry1 = $s1->shiftRight(21);
        $s2 = $s2->addInt64($carry1);
        $s1 = $s1->subInt64($carry1->shiftLeft(21));
        $carry2 = $s2->shiftRight(21);
        $s3 = $s3->addInt64($carry2);
        $s2 = $s2->subInt64($carry2->shiftLeft(21));
        $carry3 = $s3->shiftRight(21);
        $s4 = $s4->addInt64($carry3);
        $s3 = $s3->subInt64($carry3->shiftLeft(21));
        $carry4 = $s4->shiftRight(21);
        $s5 = $s5->addInt64($carry4);
        $s4 = $s4->subInt64($carry4->shiftLeft(21));
        $carry5 = $s5->shiftRight(21);
        $s6 = $s6->addInt64($carry5);
        $s5 = $s5->subInt64($carry5->shiftLeft(21));
        $carry6 = $s6->shiftRight(21);
        $s7 = $s7->addInt64($carry6);
        $s6 = $s6->subInt64($carry6->shiftLeft(21));
        $carry7 = $s7->shiftRight(21);
        $s8 = $s8->addInt64($carry7);
        $s7 = $s7->subInt64($carry7->shiftLeft(21));
        $carry8 = $s8->shiftRight(21);
        $s9 = $s9->addInt64($carry8);
        $s8 = $s8->subInt64($carry8->shiftLeft(21));
        $carry9 = $s9->shiftRight(21);
        $s10 = $s10->addInt64($carry9);
        $s9 = $s9->subInt64($carry9->shiftLeft(21));
        $carry10 = $s10->shiftRight(21);
        $s11 = $s11->addInt64($carry10);
        $s10 = $s10->subInt64($carry10->shiftLeft(21));

        $S0 = $s0->toInt32()->toInt();
        $S1 = $s1->toInt32()->toInt();
        $S2 = $s2->toInt32()->toInt();
        $S3 = $s3->toInt32()->toInt();
        $S4 = $s4->toInt32()->toInt();
        $S5 = $s5->toInt32()->toInt();
        $S6 = $s6->toInt32()->toInt();
        $S7 = $s7->toInt32()->toInt();
        $S8 = $s8->toInt32()->toInt();
        $S9 = $s9->toInt32()->toInt();
        $S10 = $s10->toInt32()->toInt();
        $S11 = $s11->toInt32()->toInt();

        /**
         * @var array<int, int>
         */
        $arr = array(
            (int) ($S0 >> 0),
            (int) ($S0 >> 8),
            (int) (($S0 >> 16) | ($S1 << 5)),
            (int) ($S1 >> 3),
            (int) ($S1 >> 11),
            (int) (($S1 >> 19) | ($S2 << 2)),
            (int) ($S2 >> 6),
            (int) (($S2 >> 14) | ($S3 << 7)),
            (int) ($S3 >> 1),
            (int) ($S3 >> 9),
            (int) (($S3 >> 17) | ($S4 << 4)),
            (int) ($S4 >> 4),
            (int) ($S4 >> 12),
            (int) (($S4 >> 20) | ($S5 << 1)),
            (int) ($S5 >> 7),
            (int) (($S5 >> 15) | ($S6 << 6)),
            (int) ($S6 >> 2),
            (int) ($S6 >> 10),
            (int) (($S6 >> 18) | ($S7 << 3)),
            (int) ($S7 >> 5),
            (int) ($S7 >> 13),
            (int) ($S8 >> 0),
            (int) ($S8 >> 8),
            (int) (($S8 >> 16) | ($S9 << 5)),
            (int) ($S9 >> 3),
            (int) ($S9 >> 11),
            (int) (($S9 >> 19) | ($S10 << 2)),
            (int) ($S10 >> 6),
            (int) (($S10 >> 14) | ($S11 << 7)),
            (int) ($S11 >> 1),
            (int) ($S11 >> 9),
            (int) $S11 >> 17
        );
        return self::intArrayToString($arr);
    }

    /**
     * multiply by the order of the main subgroup l = 2^252+27742317777372353535851937790883648493
     *
     * @param ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $A
     * @return ParagonIE_Sodium_Core32_Curve25519_Ge_P3
     * @throws SodiumException
     * @throws TypeError
     */
    public static function ge_mul_l(ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $A)
    {
        $aslide = array(
            13, 0, 0, 0, 0, -1, 0, 0, 0, 0, -11, 0, 0, 0, 0, 0, 0, -5, 0, 0, 0,
            0, 0, 0, -3, 0, 0, 0, 0, -13, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 3, 0,
            0, 0, 0, -13, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0,
            0, 0, 11, 0, 0, 0, 0, -13, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, -1,
            0, 0, 0, 0, 3, 0, 0, 0, 0, -11, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0,
            0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 7, 0, 0, 0, 0, 5, 0, 0, 0, 0,
            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1
        );

        /** @var array<int, ParagonIE_Sodium_Core32_Curve25519_Ge_Cached> $Ai size 8 */
        $Ai = array();

        # ge_p3_to_cached(&Ai[0], A);
        $Ai[0] = self::ge_p3_to_cached($A);
        # ge_p3_dbl(&t, A);
        $t = self::ge_p3_dbl($A);
        # ge_p1p1_to_p3(&A2, &t);
        $A2 = self::ge_p1p1_to_p3($t);

        for ($i = 1; $i < 8; ++$i) {
            # ge_add(&t, &A2, &Ai[0]);
            $t = self::ge_add($A2, $Ai[$i - 1]);
            # ge_p1p1_to_p3(&u, &t);
            $u = self::ge_p1p1_to_p3($t);
            # ge_p3_to_cached(&Ai[i], &u);
            $Ai[$i] = self::ge_p3_to_cached($u);
        }

        $r = self::ge_p3_0();
        for ($i = 252; $i >= 0; --$i) {
            $t = self::ge_p3_dbl($r);
            if ($aslide[$i] > 0) {
                # ge_p1p1_to_p3(&u, &t);
                $u = self::ge_p1p1_to_p3($t);
                # ge_add(&t, &u, &Ai[aslide[i] / 2]);
                $t = self::ge_add($u, $Ai[(int)($aslide[$i] / 2)]);
            } elseif ($aslide[$i] < 0) {
                # ge_p1p1_to_p3(&u, &t);
                $u = self::ge_p1p1_to_p3($t);
                # ge_sub(&t, &u, &Ai[(-aslide[i]) / 2]);
                $t = self::ge_sub($u, $Ai[(int)(-$aslide[$i] / 2)]);
            }
        }
        # ge_p1p1_to_p3(r, &t);
        return self::ge_p1p1_to_p3($t);
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core32/XChaCha20.php000064400000004721150755146460020150 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Core32_XChaCha20', false)) {
    return;
}

/**
 * Class ParagonIE_Sodium_Core32_XChaCha20
 */
class ParagonIE_Sodium_Core32_XChaCha20 extends ParagonIE_Sodium_Core32_HChaCha20
{
    /**
     * @internal You should not use this directly from another application
     *
     * @param int $len
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function stream($len = 64, $nonce = '', $key = '')
    {
        if (self::strlen($nonce) !== 24) {
            throw new SodiumException('Nonce must be 24 bytes long');
        }
        return self::encryptBytes(
            new ParagonIE_Sodium_Core32_ChaCha20_Ctx(
                self::hChaCha20(
                    self::substr($nonce, 0, 16),
                    $key
                ),
                self::substr($nonce, 16, 8)
            ),
            str_repeat("\x00", $len)
        );
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $message
     * @param string $nonce
     * @param string $key
     * @param string $ic
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function streamXorIc($message, $nonce = '', $key = '', $ic = '')
    {
        if (self::strlen($nonce) !== 24) {
            throw new SodiumException('Nonce must be 24 bytes long');
        }
        return self::encryptBytes(
            new ParagonIE_Sodium_Core32_ChaCha20_Ctx(
                self::hChaCha20(self::substr($nonce, 0, 16), $key),
                self::substr($nonce, 16, 8),
                $ic
            ),
            $message
        );
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $message
     * @param string $nonce
     * @param string $key
     * @param string $ic
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function ietfStreamXorIc($message, $nonce = '', $key = '', $ic = '')
    {
        return self::encryptBytes(
            new ParagonIE_Sodium_Core32_ChaCha20_IetfCtx(
                self::hChaCha20(self::substr($nonce, 0, 16), $key),
                "\x00\x00\x00\x00" . self::substr($nonce, 16, 8),
                $ic
            ),
            $message
        );
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core32/Int32.php000064400000060077150755146460017454 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

/**
 * Class ParagonIE_Sodium_Core32_Int32
 *
 * Encapsulates a 32-bit integer.
 *
 * These are immutable. It always returns a new instance.
 */
class ParagonIE_Sodium_Core32_Int32
{
    /**
     * @var array<int, int> - two 16-bit integers
     *
     * 0 is the higher 16 bits
     * 1 is the lower 16 bits
     */
    public $limbs = array(0, 0);

    /**
     * @var int
     */
    public $overflow = 0;

    /**
     * @var bool
     */
    public $unsignedInt = false;

    /**
     * ParagonIE_Sodium_Core32_Int32 constructor.
     * @param array $array
     * @param bool $unsignedInt
     */
    public function __construct($array = array(0, 0), $unsignedInt = false)
    {
        $this->limbs = array(
            (int) $array[0],
            (int) $array[1]
        );
        $this->overflow = 0;
        $this->unsignedInt = $unsignedInt;
    }

    /**
     * Adds two int32 objects
     *
     * @param ParagonIE_Sodium_Core32_Int32 $addend
     * @return ParagonIE_Sodium_Core32_Int32
     */
    public function addInt32(ParagonIE_Sodium_Core32_Int32 $addend)
    {
        $i0 = $this->limbs[0];
        $i1 = $this->limbs[1];
        $j0 = $addend->limbs[0];
        $j1 = $addend->limbs[1];

        $r1 = $i1 + ($j1 & 0xffff);
        $carry = $r1 >> 16;

        $r0 = $i0 + ($j0 & 0xffff) + $carry;
        $carry = $r0 >> 16;

        $r0 &= 0xffff;
        $r1 &= 0xffff;

        $return = new ParagonIE_Sodium_Core32_Int32(
            array($r0, $r1)
        );
        $return->overflow = $carry;
        $return->unsignedInt = $this->unsignedInt;
        return $return;
    }

    /**
     * Adds a normal integer to an int32 object
     *
     * @param int $int
     * @return ParagonIE_Sodium_Core32_Int32
     * @throws SodiumException
     * @throws TypeError
     */
    public function addInt($int)
    {
        ParagonIE_Sodium_Core32_Util::declareScalarType($int, 'int', 1);
        /** @var int $int */
        $int = (int) $int;

        $int = (int) $int;

        $i0 = $this->limbs[0];
        $i1 = $this->limbs[1];

        $r1 = $i1 + ($int & 0xffff);
        $carry = $r1 >> 16;

        $r0 = $i0 + (($int >> 16) & 0xffff) + $carry;
        $carry = $r0 >> 16;
        $r0 &= 0xffff;
        $r1 &= 0xffff;
        $return = new ParagonIE_Sodium_Core32_Int32(
            array($r0, $r1)
        );
        $return->overflow = $carry;
        $return->unsignedInt = $this->unsignedInt;
        return $return;
    }

    /**
     * @param int $b
     * @return int
     */
    public function compareInt($b = 0)
    {
        $gt = 0;
        $eq = 1;

        $i = 2;
        $j = 0;
        while ($i > 0) {
            --$i;
            /** @var int $x1 */
            $x1 = $this->limbs[$i];
            /** @var int $x2 */
            $x2 = ($b >> ($j << 4)) & 0xffff;
            /** @var int $gt */
            $gt |= (($x2 - $x1) >> 8) & $eq;
            /** @var int $eq */
            $eq &= (($x2 ^ $x1) - 1) >> 8;
        }
        return ($gt + $gt - $eq) + 1;
    }

    /**
     * @param int $m
     * @return ParagonIE_Sodium_Core32_Int32
     */
    public function mask($m = 0)
    {
        /** @var int $hi */
        $hi = ((int) $m >> 16);
        $hi &= 0xffff;
        /** @var int $lo */
        $lo = ((int) $m) & 0xffff;
        return new ParagonIE_Sodium_Core32_Int32(
            array(
                (int) ($this->limbs[0] & $hi),
                (int) ($this->limbs[1] & $lo)
            ),
            $this->unsignedInt
        );
    }

    /**
     * @param array<int, int> $a
     * @param array<int, int> $b
     * @param int $baseLog2
     * @return array<int, int>
     */
    public function multiplyLong(array $a, array $b, $baseLog2 = 16)
    {
        $a_l = count($a);
        $b_l = count($b);
        /** @var array<int, int> $r */
        $r = array_fill(0, $a_l + $b_l + 1, 0);
        $base = 1 << $baseLog2;
        for ($i = 0; $i < $a_l; ++$i) {
            $a_i = $a[$i];
            for ($j = 0; $j < $a_l; ++$j) {
                $b_j = $b[$j];
                $product = ($a_i * $b_j) + $r[$i + $j];
                $carry = ((int) $product >> $baseLog2 & 0xffff);
                $r[$i + $j] = ((int) $product - (int) ($carry * $base)) & 0xffff;
                $r[$i + $j + 1] += $carry;
            }
        }
        return array_slice($r, 0, 5);
    }

    /**
     * @param int $int
     * @return ParagonIE_Sodium_Core32_Int32
     */
    public function mulIntFast($int)
    {
        // Handle negative numbers
        $aNeg = ($this->limbs[0] >> 15) & 1;
        $bNeg = ($int >> 31) & 1;
        $a = array_reverse($this->limbs);
        $b = array(
            $int & 0xffff,
            ($int >> 16) & 0xffff
        );
        if ($aNeg) {
            for ($i = 0; $i < 2; ++$i) {
                $a[$i] = ($a[$i] ^ 0xffff) & 0xffff;
            }
            ++$a[0];
        }
        if ($bNeg) {
            for ($i = 0; $i < 2; ++$i) {
                $b[$i] = ($b[$i] ^ 0xffff) & 0xffff;
            }
            ++$b[0];
        }
        // Multiply
        $res = $this->multiplyLong($a, $b);

        // Re-apply negation to results
        if ($aNeg !== $bNeg) {
            for ($i = 0; $i < 2; ++$i) {
                $res[$i] = (0xffff ^ $res[$i]) & 0xffff;
            }
            // Handle integer overflow
            $c = 1;
            for ($i = 0; $i < 2; ++$i) {
                $res[$i] += $c;
                $c = $res[$i] >> 16;
                $res[$i] &= 0xffff;
            }
        }

        // Return our values
        $return = new ParagonIE_Sodium_Core32_Int32();
        $return->limbs = array(
            $res[1] & 0xffff,
            $res[0] & 0xffff
        );
        if (count($res) > 2) {
            $return->overflow = $res[2] & 0xffff;
        }
        $return->unsignedInt = $this->unsignedInt;
        return $return;
    }

    /**
     * @param ParagonIE_Sodium_Core32_Int32 $right
     * @return ParagonIE_Sodium_Core32_Int32
     */
    public function mulInt32Fast(ParagonIE_Sodium_Core32_Int32 $right)
    {
        $aNeg = ($this->limbs[0] >> 15) & 1;
        $bNeg = ($right->limbs[0] >> 15) & 1;

        $a = array_reverse($this->limbs);
        $b = array_reverse($right->limbs);
        if ($aNeg) {
            for ($i = 0; $i < 2; ++$i) {
                $a[$i] = ($a[$i] ^ 0xffff) & 0xffff;
            }
            ++$a[0];
        }
        if ($bNeg) {
            for ($i = 0; $i < 2; ++$i) {
                $b[$i] = ($b[$i] ^ 0xffff) & 0xffff;
            }
            ++$b[0];
        }
        $res = $this->multiplyLong($a, $b);
        if ($aNeg !== $bNeg) {
            if ($aNeg !== $bNeg) {
                for ($i = 0; $i < 2; ++$i) {
                    $res[$i] = ($res[$i] ^ 0xffff) & 0xffff;
                }
                $c = 1;
                for ($i = 0; $i < 2; ++$i) {
                    $res[$i] += $c;
                    $c = $res[$i] >> 16;
                    $res[$i] &= 0xffff;
                }
            }
        }
        $return = new ParagonIE_Sodium_Core32_Int32();
        $return->limbs = array(
            $res[1] & 0xffff,
            $res[0] & 0xffff
        );
        if (count($res) > 2) {
            $return->overflow = $res[2];
        }
        return $return;
    }

    /**
     * @param int $int
     * @param int $size
     * @return ParagonIE_Sodium_Core32_Int32
     * @throws SodiumException
     * @throws TypeError
     */
    public function mulInt($int = 0, $size = 0)
    {
        ParagonIE_Sodium_Core32_Util::declareScalarType($int, 'int', 1);
        ParagonIE_Sodium_Core32_Util::declareScalarType($size, 'int', 2);
        if (ParagonIE_Sodium_Compat::$fastMult) {
            return $this->mulIntFast((int) $int);
        }
        /** @var int $int */
        $int = (int) $int;
        /** @var int $size */
        $size = (int) $size;

        if (!$size) {
            $size = 31;
        }
        /** @var int $size */

        $a = clone $this;
        $return = new ParagonIE_Sodium_Core32_Int32();
        $return->unsignedInt = $this->unsignedInt;

        // Initialize:
        $ret0 = 0;
        $ret1 = 0;
        $a0 = $a->limbs[0];
        $a1 = $a->limbs[1];

        /** @var int $size */
        /** @var int $i */
        for ($i = $size; $i >= 0; --$i) {
            $m = (int) (-($int & 1));
            $x0 = $a0 & $m;
            $x1 = $a1 & $m;

            $ret1 += $x1;
            $c = $ret1 >> 16;

            $ret0 += $x0 + $c;

            $ret0 &= 0xffff;
            $ret1 &= 0xffff;

            $a1 = ($a1 << 1);
            $x1 = $a1 >> 16;
            $a0 = ($a0 << 1) | $x1;
            $a0 &= 0xffff;
            $a1 &= 0xffff;
            $int >>= 1;
        }
        $return->limbs[0] = $ret0;
        $return->limbs[1] = $ret1;
        return $return;
    }

    /**
     * @param ParagonIE_Sodium_Core32_Int32 $int
     * @param int $size
     * @return ParagonIE_Sodium_Core32_Int32
     * @throws SodiumException
     * @throws TypeError
     */
    public function mulInt32(ParagonIE_Sodium_Core32_Int32 $int, $size = 0)
    {
        ParagonIE_Sodium_Core32_Util::declareScalarType($size, 'int', 2);
        if (ParagonIE_Sodium_Compat::$fastMult) {
            return $this->mulInt32Fast($int);
        }
        if (!$size) {
            $size = 31;
        }
        /** @var int $size */

        $a = clone $this;
        $b = clone $int;
        $return = new ParagonIE_Sodium_Core32_Int32();
        $return->unsignedInt = $this->unsignedInt;

        // Initialize:
        $ret0 = 0;
        $ret1 = 0;
        $a0 = $a->limbs[0];
        $a1 = $a->limbs[1];
        $b0 = $b->limbs[0];
        $b1 = $b->limbs[1];

        /** @var int $size */
        /** @var int $i */
        for ($i = $size; $i >= 0; --$i) {
            $m = (int) (-($b1 & 1));
            $x0 = $a0 & $m;
            $x1 = $a1 & $m;

            $ret1 += $x1;
            $c = $ret1 >> 16;

            $ret0 += $x0 + $c;

            $ret0 &= 0xffff;
            $ret1 &= 0xffff;

            $a1 = ($a1 << 1);
            $x1 = $a1 >> 16;
            $a0 = ($a0 << 1) | $x1;
            $a0 &= 0xffff;
            $a1 &= 0xffff;

            $x0 = ($b0 & 1) << 16;
            $b0 = ($b0 >> 1);
            $b1 = (($b1 | $x0) >> 1);

            $b0 &= 0xffff;
            $b1 &= 0xffff;

        }
        $return->limbs[0] = $ret0;
        $return->limbs[1] = $ret1;

        return $return;
    }

    /**
     * OR this 32-bit integer with another.
     *
     * @param ParagonIE_Sodium_Core32_Int32 $b
     * @return ParagonIE_Sodium_Core32_Int32
     */
    public function orInt32(ParagonIE_Sodium_Core32_Int32 $b)
    {
        $return = new ParagonIE_Sodium_Core32_Int32();
        $return->unsignedInt = $this->unsignedInt;
        $return->limbs = array(
            (int) ($this->limbs[0] | $b->limbs[0]),
            (int) ($this->limbs[1] | $b->limbs[1])
        );
        /** @var int overflow */
        $return->overflow = $this->overflow | $b->overflow;
        return $return;
    }

    /**
     * @param int $b
     * @return bool
     */
    public function isGreaterThan($b = 0)
    {
        return $this->compareInt($b) > 0;
    }

    /**
     * @param int $b
     * @return bool
     */
    public function isLessThanInt($b = 0)
    {
        return $this->compareInt($b) < 0;
    }

    /**
     * @param int $c
     * @return ParagonIE_Sodium_Core32_Int32
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArrayAccess
     */
    public function rotateLeft($c = 0)
    {
        ParagonIE_Sodium_Core32_Util::declareScalarType($c, 'int', 1);
        /** @var int $c */
        $c = (int) $c;

        $return = new ParagonIE_Sodium_Core32_Int32();
        $return->unsignedInt = $this->unsignedInt;
        $c &= 31;
        if ($c === 0) {
            // NOP, but we want a copy.
            $return->limbs = $this->limbs;
        } else {
            /** @var int $c */

            /** @var int $idx_shift */
            $idx_shift = ($c >> 4) & 1;

            /** @var int $sub_shift */
            $sub_shift = $c & 15;

            /** @var array<int, int> $limbs */
            $limbs =& $return->limbs;

            /** @var array<int, int> $myLimbs */
            $myLimbs =& $this->limbs;

            for ($i = 1; $i >= 0; --$i) {
                /** @var int $j */
                $j = ($i + $idx_shift) & 1;
                /** @var int $k */
                $k = ($i + $idx_shift + 1) & 1;
                $limbs[$i] = (int) (
                    (
                        ((int) ($myLimbs[$j]) << $sub_shift)
                            |
                        ((int) ($myLimbs[$k]) >> (16 - $sub_shift))
                    ) & 0xffff
                );
            }
        }
        return $return;
    }

    /**
     * Rotate to the right
     *
     * @param int $c
     * @return ParagonIE_Sodium_Core32_Int32
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArrayAccess
     */
    public function rotateRight($c = 0)
    {
        ParagonIE_Sodium_Core32_Util::declareScalarType($c, 'int', 1);
        /** @var int $c */
        $c = (int) $c;

        $return = new ParagonIE_Sodium_Core32_Int32();
        $return->unsignedInt = $this->unsignedInt;
        $c &= 31;
        /** @var int $c */
        if ($c === 0) {
            // NOP, but we want a copy.
            $return->limbs = $this->limbs;
        } else {
            /** @var int $c */

            /** @var int $idx_shift */
            $idx_shift = ($c >> 4) & 1;

            /** @var int $sub_shift */
            $sub_shift = $c & 15;

            /** @var array<int, int> $limbs */
            $limbs =& $return->limbs;

            /** @var array<int, int> $myLimbs */
            $myLimbs =& $this->limbs;

            for ($i = 1; $i >= 0; --$i) {
                /** @var int $j */
                $j = ($i - $idx_shift) & 1;
                /** @var int $k */
                $k = ($i - $idx_shift - 1) & 1;
                $limbs[$i] = (int) (
                    (
                        ((int) ($myLimbs[$j]) >> (int) ($sub_shift))
                            |
                        ((int) ($myLimbs[$k]) << (16 - (int) ($sub_shift)))
                    ) & 0xffff
                );
            }
        }
        return $return;
    }

    /**
     * @param bool $bool
     * @return self
     */
    public function setUnsignedInt($bool = false)
    {
        $this->unsignedInt = !empty($bool);
        return $this;
    }

    /**
     * @param int $c
     * @return ParagonIE_Sodium_Core32_Int32
     * @throws SodiumException
     * @throws TypeError
     */
    public function shiftLeft($c = 0)
    {
        ParagonIE_Sodium_Core32_Util::declareScalarType($c, 'int', 1);
        /** @var int $c */
        $c = (int) $c;

        $return = new ParagonIE_Sodium_Core32_Int32();
        $return->unsignedInt = $this->unsignedInt;
        $c &= 63;
        /** @var int $c */
        if ($c === 0) {
            $return->limbs = $this->limbs;
        } elseif ($c < 0) {
            /** @var int $c */
            return $this->shiftRight(-$c);
        } else {
            /** @var int $c */
            /** @var int $tmp */
            $tmp = $this->limbs[1] << $c;
            $return->limbs[1] = (int)($tmp & 0xffff);
            /** @var int $carry */
            $carry = $tmp >> 16;

            /** @var int $tmp */
            $tmp = ($this->limbs[0] << $c) | ($carry & 0xffff);
            $return->limbs[0] = (int) ($tmp & 0xffff);
        }
        return $return;
    }

    /**
     * @param int $c
     * @return ParagonIE_Sodium_Core32_Int32
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedAssignment
     * @psalm-suppress MixedOperand
     */
    public function shiftRight($c = 0)
    {
        ParagonIE_Sodium_Core32_Util::declareScalarType($c, 'int', 1);
        /** @var int $c */
        $c = (int) $c;

        $return = new ParagonIE_Sodium_Core32_Int32();
        $return->unsignedInt = $this->unsignedInt;
        $c &= 63;
        /** @var int $c */
        if ($c >= 16) {
            $return->limbs = array(
                (int) ($this->overflow & 0xffff),
                (int) ($this->limbs[0])
            );
            $return->overflow = $this->overflow >> 16;
            return $return->shiftRight($c & 15);
        }
        if ($c === 0) {
            $return->limbs = $this->limbs;
        } elseif ($c < 0) {
            /** @var int $c */
            return $this->shiftLeft(-$c);
        } else {
            if (!is_int($c)) {
                throw new TypeError();
            }
            /** @var int $c */
            // $return->limbs[0] = (int) (($this->limbs[0] >> $c) & 0xffff);
            $carryLeft = (int) ($this->overflow & ((1 << ($c + 1)) - 1));
            $return->limbs[0] = (int) ((($this->limbs[0] >> $c) | ($carryLeft << (16 - $c))) & 0xffff);
            $carryRight = (int) ($this->limbs[0] & ((1 << ($c + 1)) - 1));
            $return->limbs[1] = (int) ((($this->limbs[1] >> $c) | ($carryRight << (16 - $c))) & 0xffff);
            $return->overflow >>= $c;
        }
        return $return;
    }

    /**
     * Subtract a normal integer from an int32 object.
     *
     * @param int $int
     * @return ParagonIE_Sodium_Core32_Int32
     * @throws SodiumException
     * @throws TypeError
     */
    public function subInt($int)
    {
        ParagonIE_Sodium_Core32_Util::declareScalarType($int, 'int', 1);
        /** @var int $int */
        $int = (int) $int;

        $return = new ParagonIE_Sodium_Core32_Int32();
        $return->unsignedInt = $this->unsignedInt;

        /** @var int $tmp */
        $tmp = $this->limbs[1] - ($int & 0xffff);
        /** @var int $carry */
        $carry = $tmp >> 16;
        $return->limbs[1] = (int) ($tmp & 0xffff);

        /** @var int $tmp */
        $tmp = $this->limbs[0] - (($int >> 16) & 0xffff) + $carry;
        $return->limbs[0] = (int) ($tmp & 0xffff);
        return $return;
    }

    /**
     * Subtract two int32 objects from each other
     *
     * @param ParagonIE_Sodium_Core32_Int32 $b
     * @return ParagonIE_Sodium_Core32_Int32
     */
    public function subInt32(ParagonIE_Sodium_Core32_Int32 $b)
    {
        $return = new ParagonIE_Sodium_Core32_Int32();
        $return->unsignedInt = $this->unsignedInt;

        /** @var int $tmp */
        $tmp = $this->limbs[1] - ($b->limbs[1] & 0xffff);
        /** @var int $carry */
        $carry = $tmp >> 16;
        $return->limbs[1] = (int) ($tmp & 0xffff);

        /** @var int $tmp */
        $tmp = $this->limbs[0] - ($b->limbs[0] & 0xffff) + $carry;
        $return->limbs[0] = (int) ($tmp & 0xffff);
        return $return;
    }

    /**
     * XOR this 32-bit integer with another.
     *
     * @param ParagonIE_Sodium_Core32_Int32 $b
     * @return ParagonIE_Sodium_Core32_Int32
     */
    public function xorInt32(ParagonIE_Sodium_Core32_Int32 $b)
    {
        $return = new ParagonIE_Sodium_Core32_Int32();
        $return->unsignedInt = $this->unsignedInt;
        $return->limbs = array(
            (int) ($this->limbs[0] ^ $b->limbs[0]),
            (int) ($this->limbs[1] ^ $b->limbs[1])
        );
        return $return;
    }

    /**
     * @param int $signed
     * @return self
     * @throws SodiumException
     * @throws TypeError
     */
    public static function fromInt($signed)
    {
        ParagonIE_Sodium_Core32_Util::declareScalarType($signed, 'int', 1);;
        /** @var int $signed */
        $signed = (int) $signed;

        return new ParagonIE_Sodium_Core32_Int32(
            array(
                (int) (($signed >> 16) & 0xffff),
                (int) ($signed & 0xffff)
            )
        );
    }

    /**
     * @param string $string
     * @return self
     * @throws SodiumException
     * @throws TypeError
     */
    public static function fromString($string)
    {
        ParagonIE_Sodium_Core32_Util::declareScalarType($string, 'string', 1);
        $string = (string) $string;
        if (ParagonIE_Sodium_Core32_Util::strlen($string) !== 4) {
            throw new RangeException(
                'String must be 4 bytes; ' . ParagonIE_Sodium_Core32_Util::strlen($string) . ' given.'
            );
        }
        $return = new ParagonIE_Sodium_Core32_Int32();

        $return->limbs[0]  = (int) ((ParagonIE_Sodium_Core32_Util::chrToInt($string[0]) & 0xff) << 8);
        $return->limbs[0] |= (ParagonIE_Sodium_Core32_Util::chrToInt($string[1]) & 0xff);
        $return->limbs[1]  = (int) ((ParagonIE_Sodium_Core32_Util::chrToInt($string[2]) & 0xff) << 8);
        $return->limbs[1] |= (ParagonIE_Sodium_Core32_Util::chrToInt($string[3]) & 0xff);
        return $return;
    }

    /**
     * @param string $string
     * @return self
     * @throws SodiumException
     * @throws TypeError
     */
    public static function fromReverseString($string)
    {
        ParagonIE_Sodium_Core32_Util::declareScalarType($string, 'string', 1);
        $string = (string) $string;
        if (ParagonIE_Sodium_Core32_Util::strlen($string) !== 4) {
            throw new RangeException(
                'String must be 4 bytes; ' . ParagonIE_Sodium_Core32_Util::strlen($string) . ' given.'
            );
        }
        $return = new ParagonIE_Sodium_Core32_Int32();

        $return->limbs[0]  = (int) ((ParagonIE_Sodium_Core32_Util::chrToInt($string[3]) & 0xff) << 8);
        $return->limbs[0] |= (ParagonIE_Sodium_Core32_Util::chrToInt($string[2]) & 0xff);
        $return->limbs[1]  = (int) ((ParagonIE_Sodium_Core32_Util::chrToInt($string[1]) & 0xff) << 8);
        $return->limbs[1] |= (ParagonIE_Sodium_Core32_Util::chrToInt($string[0]) & 0xff);
        return $return;
    }

    /**
     * @return array<int, int>
     */
    public function toArray()
    {
        return array((int) ($this->limbs[0] << 16 | $this->limbs[1]));
    }

    /**
     * @return string
     * @throws TypeError
     */
    public function toString()
    {
        return
            ParagonIE_Sodium_Core32_Util::intToChr(($this->limbs[0] >> 8) & 0xff) .
            ParagonIE_Sodium_Core32_Util::intToChr($this->limbs[0] & 0xff) .
            ParagonIE_Sodium_Core32_Util::intToChr(($this->limbs[1] >> 8) & 0xff) .
            ParagonIE_Sodium_Core32_Util::intToChr($this->limbs[1] & 0xff);
    }

    /**
     * @return int
     */
    public function toInt()
    {
        return (int) (
            (($this->limbs[0] & 0xffff) << 16)
                |
            ($this->limbs[1] & 0xffff)
        );
    }

    /**
     * @return ParagonIE_Sodium_Core32_Int32
     */
    public function toInt32()
    {
        $return = new ParagonIE_Sodium_Core32_Int32();
        $return->limbs[0] = (int) ($this->limbs[0] & 0xffff);
        $return->limbs[1] = (int) ($this->limbs[1] & 0xffff);
        $return->unsignedInt = $this->unsignedInt;
        $return->overflow = (int) ($this->overflow & 0x7fffffff);
        return $return;
    }

    /**
     * @return ParagonIE_Sodium_Core32_Int64
     */
    public function toInt64()
    {
        $return = new ParagonIE_Sodium_Core32_Int64();
        $return->unsignedInt = $this->unsignedInt;
        if ($this->unsignedInt) {
            $return->limbs[0] += (($this->overflow >> 16) & 0xffff);
            $return->limbs[1] += (($this->overflow) & 0xffff);
        } else {
            $neg = -(($this->limbs[0] >> 15) & 1);
            $return->limbs[0] = (int)($neg & 0xffff);
            $return->limbs[1] = (int)($neg & 0xffff);
        }
        $return->limbs[2] = (int) ($this->limbs[0] & 0xffff);
        $return->limbs[3] = (int) ($this->limbs[1] & 0xffff);
        return $return;
    }

    /**
     * @return string
     * @throws TypeError
     */
    public function toReverseString()
    {
        return ParagonIE_Sodium_Core32_Util::intToChr($this->limbs[1] & 0xff) .
            ParagonIE_Sodium_Core32_Util::intToChr(($this->limbs[1] >> 8) & 0xff) .
            ParagonIE_Sodium_Core32_Util::intToChr($this->limbs[0] & 0xff) .
            ParagonIE_Sodium_Core32_Util::intToChr(($this->limbs[0] >> 8) & 0xff);
    }

    /**
     * @return string
     */
    public function __toString()
    {
        try {
            return $this->toString();
        } catch (TypeError $ex) {
            // PHP engine can't handle exceptions from __toString()
            return '';
        }
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core32/SipHash.php000064400000015020150755146460020100 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Core32_SipHash', false)) {
    return;
}

/**
 * Class ParagonIE_SodiumCompat_Core32_SipHash
 *
 * Only uses 32-bit arithmetic, while the original SipHash used 64-bit integers
 */
class ParagonIE_Sodium_Core32_SipHash extends ParagonIE_Sodium_Core32_Util
{
    /**
     * @internal You should not use this directly from another application
     *
     * @param array<int, ParagonIE_Sodium_Core32_Int64> $v
     * @return array<int, ParagonIE_Sodium_Core32_Int64>
     */
    public static function sipRound(array $v)
    {
        # v0 += v1;
        $v[0] = $v[0]->addInt64($v[1]);

        # v1 = ROTL(v1, 13);
        $v[1] = $v[1]->rotateLeft(13);

        #  v1 ^= v0;
        $v[1] = $v[1]->xorInt64($v[0]);

        #  v0=ROTL(v0,32);
        $v[0] = $v[0]->rotateLeft(32);

        # v2 += v3;
        $v[2] = $v[2]->addInt64($v[3]);

        # v3=ROTL(v3,16);
        $v[3] = $v[3]->rotateLeft(16);

        #  v3 ^= v2;
        $v[3] = $v[3]->xorInt64($v[2]);

        # v0 += v3;
        $v[0] = $v[0]->addInt64($v[3]);

        # v3=ROTL(v3,21);
        $v[3] = $v[3]->rotateLeft(21);

        # v3 ^= v0;
        $v[3] = $v[3]->xorInt64($v[0]);

        # v2 += v1;
        $v[2] = $v[2]->addInt64($v[1]);

        # v1=ROTL(v1,17);
        $v[1] = $v[1]->rotateLeft(17);

        #  v1 ^= v2;
        $v[1] = $v[1]->xorInt64($v[2]);

        # v2=ROTL(v2,32)
        $v[2] = $v[2]->rotateLeft(32);

        return $v;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $in
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function sipHash24($in, $key)
    {
        $inlen = self::strlen($in);

        # /* "somepseudorandomlygeneratedbytes" */
        # u64 v0 = 0x736f6d6570736575ULL;
        # u64 v1 = 0x646f72616e646f6dULL;
        # u64 v2 = 0x6c7967656e657261ULL;
        # u64 v3 = 0x7465646279746573ULL;
        $v = array(
            new ParagonIE_Sodium_Core32_Int64(
                array(0x736f, 0x6d65, 0x7073, 0x6575)
            ),
            new ParagonIE_Sodium_Core32_Int64(
                array(0x646f, 0x7261, 0x6e64, 0x6f6d)
            ),
            new ParagonIE_Sodium_Core32_Int64(
                array(0x6c79, 0x6765, 0x6e65, 0x7261)
            ),
            new ParagonIE_Sodium_Core32_Int64(
                array(0x7465, 0x6462, 0x7974, 0x6573)
            )
        );

        # u64 k0 = LOAD64_LE( k );
        # u64 k1 = LOAD64_LE( k + 8 );
        $k = array(
            ParagonIE_Sodium_Core32_Int64::fromReverseString(
                self::substr($key, 0, 8)
            ),
            ParagonIE_Sodium_Core32_Int64::fromReverseString(
                self::substr($key, 8, 8)
            )
        );

        # b = ( ( u64 )inlen ) << 56;
        $b = new ParagonIE_Sodium_Core32_Int64(
            array(($inlen << 8) & 0xffff, 0, 0, 0)
        );

        # v3 ^= k1;
        $v[3] = $v[3]->xorInt64($k[1]);
        # v2 ^= k0;
        $v[2] = $v[2]->xorInt64($k[0]);
        # v1 ^= k1;
        $v[1] = $v[1]->xorInt64($k[1]);
        # v0 ^= k0;
        $v[0] = $v[0]->xorInt64($k[0]);

        $left = $inlen;
        # for ( ; in != end; in += 8 )
        while ($left >= 8) {
            # m = LOAD64_LE( in );
            $m = ParagonIE_Sodium_Core32_Int64::fromReverseString(
                self::substr($in, 0, 8)
            );

            # v3 ^= m;
            $v[3] = $v[3]->xorInt64($m);

            # SIPROUND;
            # SIPROUND;
            $v = self::sipRound($v);
            $v = self::sipRound($v);

            # v0 ^= m;
            $v[0] = $v[0]->xorInt64($m);

            $in = self::substr($in, 8);
            $left -= 8;
        }

        # switch( left )
        #  {
        #     case 7: b |= ( ( u64 )in[ 6] )  << 48;
        #     case 6: b |= ( ( u64 )in[ 5] )  << 40;
        #     case 5: b |= ( ( u64 )in[ 4] )  << 32;
        #     case 4: b |= ( ( u64 )in[ 3] )  << 24;
        #     case 3: b |= ( ( u64 )in[ 2] )  << 16;
        #     case 2: b |= ( ( u64 )in[ 1] )  <<  8;
        #     case 1: b |= ( ( u64 )in[ 0] ); break;
        #     case 0: break;
        # }
        switch ($left) {
            case 7:
                $b = $b->orInt64(
                    ParagonIE_Sodium_Core32_Int64::fromInts(
                        0, self::chrToInt($in[6]) << 16
                    )
                );
            case 6:
                $b = $b->orInt64(
                    ParagonIE_Sodium_Core32_Int64::fromInts(
                        0, self::chrToInt($in[5]) << 8
                    )
                );
            case 5:
                $b = $b->orInt64(
                    ParagonIE_Sodium_Core32_Int64::fromInts(
                        0, self::chrToInt($in[4])
                    )
                );
            case 4:
                $b = $b->orInt64(
                    ParagonIE_Sodium_Core32_Int64::fromInts(
                        self::chrToInt($in[3]) << 24, 0
                    )
                );
            case 3:
                $b = $b->orInt64(
                    ParagonIE_Sodium_Core32_Int64::fromInts(
                        self::chrToInt($in[2]) << 16, 0
                    )
                );
            case 2:
                $b = $b->orInt64(
                    ParagonIE_Sodium_Core32_Int64::fromInts(
                        self::chrToInt($in[1]) << 8, 0
                    )
                );
            case 1:
                $b = $b->orInt64(
                    ParagonIE_Sodium_Core32_Int64::fromInts(
                        self::chrToInt($in[0]), 0
                    )
                );
            case 0:
                break;
        }

        # v3 ^= b;
        $v[3] = $v[3]->xorInt64($b);

        # SIPROUND;
        # SIPROUND;
        $v = self::sipRound($v);
        $v = self::sipRound($v);

        # v0 ^= b;
        $v[0] = $v[0]->xorInt64($b);

        // Flip the lower 8 bits of v2 which is ($v[4], $v[5]) in our implementation
        # v2 ^= 0xff;
        $v[2]->limbs[3] ^= 0xff;

        # SIPROUND;
        # SIPROUND;
        # SIPROUND;
        # SIPROUND;
        $v = self::sipRound($v);
        $v = self::sipRound($v);
        $v = self::sipRound($v);
        $v = self::sipRound($v);

        # b = v0 ^ v1 ^ v2 ^ v3;
        # STORE64_LE( out, b );
        return $v[0]
            ->xorInt64($v[1])
            ->xorInt64($v[2])
            ->xorInt64($v[3])
            ->toReverseString();
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core32/XSalsa20.php000064400000002636150755146460020107 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Core32_XSalsa20', false)) {
    return;
}

/**
 * Class ParagonIE_Sodium_Core32_XSalsa20
 */
abstract class ParagonIE_Sodium_Core32_XSalsa20 extends ParagonIE_Sodium_Core32_HSalsa20
{
    /**
     * Expand a key and nonce into an xsalsa20 keystream.
     *
     * @internal You should not use this directly from another application
     *
     * @param int $len
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function xsalsa20($len, $nonce, $key)
    {
        $ret = self::salsa20(
            $len,
            self::substr($nonce, 16, 8),
            self::hsalsa20($nonce, $key)
        );
        return $ret;
    }

    /**
     * Encrypt a string with XSalsa20. Doesn't provide integrity.
     *
     * @internal You should not use this directly from another application
     *
     * @param string $message
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function xsalsa20_xor($message, $nonce, $key)
    {
        return self::xorStrings(
            $message,
            self::xsalsa20(
                self::strlen($message),
                $nonce,
                $key
            )
        );
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core32/ChaCha20/Ctx.php000064400000011543150755146460020556 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Core_ChaCha20_Ctx', false)) {
    return;
}

/**
 * Class ParagonIE_Sodium_Core32_ChaCha20_Ctx
 */
class ParagonIE_Sodium_Core32_ChaCha20_Ctx extends ParagonIE_Sodium_Core32_Util implements ArrayAccess
{
    /**
     * @var SplFixedArray internally, <int, ParagonIE_Sodium_Core32_Int32>
     */
    protected $container;

    /**
     * ParagonIE_Sodium_Core_ChaCha20_Ctx constructor.
     *
     * @internal You should not use this directly from another application
     *
     * @param string $key     ChaCha20 key.
     * @param string $iv      Initialization Vector (a.k.a. nonce).
     * @param string $counter The initial counter value.
     *                        Defaults to 8 0x00 bytes.
     * @throws InvalidArgumentException
     * @throws SodiumException
     * @throws TypeError
     */
    public function __construct($key = '', $iv = '', $counter = '')
    {
        if (self::strlen($key) !== 32) {
            throw new InvalidArgumentException('ChaCha20 expects a 256-bit key.');
        }
        if (self::strlen($iv) !== 8) {
            throw new InvalidArgumentException('ChaCha20 expects a 64-bit nonce.');
        }
        $this->container = new SplFixedArray(16);

        /* "expand 32-byte k" as per ChaCha20 spec */
        $this->container[0]  = new ParagonIE_Sodium_Core32_Int32(array(0x6170, 0x7865));
        $this->container[1]  = new ParagonIE_Sodium_Core32_Int32(array(0x3320, 0x646e));
        $this->container[2]  = new ParagonIE_Sodium_Core32_Int32(array(0x7962, 0x2d32));
        $this->container[3]  = new ParagonIE_Sodium_Core32_Int32(array(0x6b20, 0x6574));

        $this->container[4]  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 0, 4));
        $this->container[5]  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 4, 4));
        $this->container[6]  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 8, 4));
        $this->container[7]  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 12, 4));
        $this->container[8]  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 16, 4));
        $this->container[9]  = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 20, 4));
        $this->container[10] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 24, 4));
        $this->container[11] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($key, 28, 4));

        if (empty($counter)) {
            $this->container[12] = new ParagonIE_Sodium_Core32_Int32();
            $this->container[13] = new ParagonIE_Sodium_Core32_Int32();
        } else {
            $this->container[12] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($counter, 0, 4));
            $this->container[13] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($counter, 4, 4));
        }
        $this->container[14] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($iv, 0, 4));
        $this->container[15] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($iv, 4, 4));
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param int $offset
     * @param int|ParagonIE_Sodium_Core32_Int32 $value
     * @return void
     */
    #[ReturnTypeWillChange]
    public function offsetSet($offset, $value)
    {
        if (!is_int($offset)) {
            throw new InvalidArgumentException('Expected an integer');
        }
        if ($value instanceof ParagonIE_Sodium_Core32_Int32) {
            /*
        } elseif (is_int($value)) {
            $value = ParagonIE_Sodium_Core32_Int32::fromInt($value);
            */
        } else {
            throw new InvalidArgumentException('Expected an integer');
        }
        $this->container[$offset] = $value;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param int $offset
     * @return bool
     * @psalm-suppress MixedArrayOffset
     */
    #[ReturnTypeWillChange]
    public function offsetExists($offset)
    {
        return isset($this->container[$offset]);
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param int $offset
     * @return void
     * @psalm-suppress MixedArrayOffset
     */
    #[ReturnTypeWillChange]
    public function offsetUnset($offset)
    {
        unset($this->container[$offset]);
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param int $offset
     * @return mixed|null
     * @psalm-suppress MixedArrayOffset
     */
    #[ReturnTypeWillChange]
    public function offsetGet($offset)
    {
        return isset($this->container[$offset])
            ? $this->container[$offset]
            : null;
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core32/ChaCha20/IetfCtx.php000064400000003032150755146460021360 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Core_ChaCha20_IetfCtx', false)) {
    return;
}

/**
 * Class ParagonIE_Sodium_Core32_ChaCha20_IetfCtx
 */
class ParagonIE_Sodium_Core32_ChaCha20_IetfCtx extends ParagonIE_Sodium_Core32_ChaCha20_Ctx
{
    /**
     * ParagonIE_Sodium_Core_ChaCha20_IetfCtx constructor.
     *
     * @internal You should not use this directly from another application
     *
     * @param string $key     ChaCha20 key.
     * @param string $iv      Initialization Vector (a.k.a. nonce).
     * @param string $counter The initial counter value.
     *                        Defaults to 4 0x00 bytes.
     * @throws InvalidArgumentException
     * @throws SodiumException
     * @throws TypeError
     */
    public function __construct($key = '', $iv = '', $counter = '')
    {
        if (self::strlen($iv) !== 12) {
            throw new InvalidArgumentException('ChaCha20 expects a 96-bit nonce in IETF mode.');
        }
        parent::__construct($key, self::substr($iv, 0, 8), $counter);

        if (!empty($counter)) {
            $this->container[12] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($counter, 0, 4));
        }
        $this->container[13] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($iv, 0, 4));
        $this->container[14] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($iv, 4, 4));
        $this->container[15] = ParagonIE_Sodium_Core32_Int32::fromReverseString(self::substr($iv, 8, 4));
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core32/SecretStream/State.php000064400000007203150755146460022226 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

/**
 * Class ParagonIE_Sodium_Core32_SecretStream_State
 */
class ParagonIE_Sodium_Core32_SecretStream_State
{
    /** @var string $key */
    protected $key;

    /** @var int $counter */
    protected $counter;

    /** @var string $nonce */
    protected $nonce;

    /** @var string $_pad */
    protected $_pad;

    /**
     * ParagonIE_Sodium_Core32_SecretStream_State constructor.
     * @param string $key
     * @param string|null $nonce
     */
    public function __construct($key, $nonce = null)
    {
        $this->key = $key;
        $this->counter = 1;
        if (is_null($nonce)) {
            $nonce = str_repeat("\0", 12);
        }
        $this->nonce = str_pad($nonce, 12, "\0", STR_PAD_RIGHT);;
        $this->_pad = str_repeat("\0", 4);
    }

    /**
     * @return self
     */
    public function counterReset()
    {
        $this->counter = 1;
        $this->_pad = str_repeat("\0", 4);
        return $this;
    }

    /**
     * @return string
     */
    public function getKey()
    {
        return $this->key;
    }

    /**
     * @return string
     */
    public function getCounter()
    {
        return ParagonIE_Sodium_Core32_Util::store32_le($this->counter);
    }

    /**
     * @return string
     */
    public function getNonce()
    {
        if (!is_string($this->nonce)) {
            $this->nonce = str_repeat("\0", 12);
        }
        if (ParagonIE_Sodium_Core32_Util::strlen($this->nonce) !== 12) {
            $this->nonce = str_pad($this->nonce, 12, "\0", STR_PAD_RIGHT);
        }
        return $this->nonce;
    }

    /**
     * @return string
     */
    public function getCombinedNonce()
    {
        return $this->getCounter() .
            ParagonIE_Sodium_Core32_Util::substr($this->getNonce(), 0, 8);
    }

    /**
     * @return self
     */
    public function incrementCounter()
    {
        ++$this->counter;
        return $this;
    }

    /**
     * @return bool
     */
    public function needsRekey()
    {
        return ($this->counter & 0xffff) === 0;
    }

    /**
     * @param string $newKeyAndNonce
     * @return self
     */
    public function rekey($newKeyAndNonce)
    {
        $this->key = ParagonIE_Sodium_Core32_Util::substr($newKeyAndNonce, 0, 32);
        $this->nonce = str_pad(
            ParagonIE_Sodium_Core32_Util::substr($newKeyAndNonce, 32),
            12,
            "\0",
            STR_PAD_RIGHT
        );
        return $this;
    }

    /**
     * @param string $str
     * @return self
     */
    public function xorNonce($str)
    {
        $this->nonce = ParagonIE_Sodium_Core32_Util::xorStrings(
            $this->getNonce(),
            str_pad(
                ParagonIE_Sodium_Core32_Util::substr($str, 0, 8),
                12,
                "\0",
                STR_PAD_RIGHT
            )
        );
        return $this;
    }

    /**
     * @param string $string
     * @return self
     */
    public static function fromString($string)
    {
        $state = new ParagonIE_Sodium_Core32_SecretStream_State(
            ParagonIE_Sodium_Core32_Util::substr($string, 0, 32)
        );
        $state->counter = ParagonIE_Sodium_Core32_Util::load_4(
            ParagonIE_Sodium_Core32_Util::substr($string, 32, 4)
        );
        $state->nonce = ParagonIE_Sodium_Core32_Util::substr($string, 36, 12);
        $state->_pad = ParagonIE_Sodium_Core32_Util::substr($string, 48, 8);
        return $state;
    }

    /**
     * @return string
     */
    public function toString()
    {
        return $this->key .
            $this->getCounter() .
            $this->nonce .
            $this->_pad;
    }
}
crypto/vendor/paragonie/sodium_compat/src/Crypto.php000064400000153125150755146460016775 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Crypto', false)) {
    return;
}

/**
 * Class ParagonIE_Sodium_Crypto
 *
 * ATTENTION!
 *
 * If you are using this library, you should be using
 * ParagonIE_Sodium_Compat in your code, not this class.
 */
abstract class ParagonIE_Sodium_Crypto
{
    const aead_chacha20poly1305_KEYBYTES = 32;
    const aead_chacha20poly1305_NSECBYTES = 0;
    const aead_chacha20poly1305_NPUBBYTES = 8;
    const aead_chacha20poly1305_ABYTES = 16;

    const aead_chacha20poly1305_IETF_KEYBYTES = 32;
    const aead_chacha20poly1305_IETF_NSECBYTES = 0;
    const aead_chacha20poly1305_IETF_NPUBBYTES = 12;
    const aead_chacha20poly1305_IETF_ABYTES = 16;

    const aead_xchacha20poly1305_IETF_KEYBYTES = 32;
    const aead_xchacha20poly1305_IETF_NSECBYTES = 0;
    const aead_xchacha20poly1305_IETF_NPUBBYTES = 24;
    const aead_xchacha20poly1305_IETF_ABYTES = 16;

    const box_curve25519xsalsa20poly1305_SEEDBYTES = 32;
    const box_curve25519xsalsa20poly1305_PUBLICKEYBYTES = 32;
    const box_curve25519xsalsa20poly1305_SECRETKEYBYTES = 32;
    const box_curve25519xsalsa20poly1305_BEFORENMBYTES = 32;
    const box_curve25519xsalsa20poly1305_NONCEBYTES = 24;
    const box_curve25519xsalsa20poly1305_MACBYTES = 16;
    const box_curve25519xsalsa20poly1305_BOXZEROBYTES = 16;
    const box_curve25519xsalsa20poly1305_ZEROBYTES = 32;

    const onetimeauth_poly1305_BYTES = 16;
    const onetimeauth_poly1305_KEYBYTES = 32;

    const secretbox_xsalsa20poly1305_KEYBYTES = 32;
    const secretbox_xsalsa20poly1305_NONCEBYTES = 24;
    const secretbox_xsalsa20poly1305_MACBYTES = 16;
    const secretbox_xsalsa20poly1305_BOXZEROBYTES = 16;
    const secretbox_xsalsa20poly1305_ZEROBYTES = 32;

    const secretbox_xchacha20poly1305_KEYBYTES = 32;
    const secretbox_xchacha20poly1305_NONCEBYTES = 24;
    const secretbox_xchacha20poly1305_MACBYTES = 16;
    const secretbox_xchacha20poly1305_BOXZEROBYTES = 16;
    const secretbox_xchacha20poly1305_ZEROBYTES = 32;

    const stream_salsa20_KEYBYTES = 32;

    /**
     * AEAD Decryption with ChaCha20-Poly1305
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $message
     * @param string $ad
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function aead_chacha20poly1305_decrypt(
        $message = '',
        $ad = '',
        $nonce = '',
        $key = ''
    ) {
        /** @var int $len - Length of message (ciphertext + MAC) */
        $len = ParagonIE_Sodium_Core_Util::strlen($message);

        /** @var int  $clen - Length of ciphertext */
        $clen = $len - self::aead_chacha20poly1305_ABYTES;

        /** @var int $adlen - Length of associated data */
        $adlen = ParagonIE_Sodium_Core_Util::strlen($ad);

        /** @var string $mac - Message authentication code */
        $mac = ParagonIE_Sodium_Core_Util::substr(
            $message,
            $clen,
            self::aead_chacha20poly1305_ABYTES
        );

        /** @var string $ciphertext - The encrypted message (sans MAC) */
        $ciphertext = ParagonIE_Sodium_Core_Util::substr($message, 0, $clen);

        /** @var string The first block of the chacha20 keystream, used as a poly1305 key */
        $block0 = ParagonIE_Sodium_Core_ChaCha20::stream(
            32,
            $nonce,
            $key
        );

        /* Recalculate the Poly1305 authentication tag (MAC): */
        $state = new ParagonIE_Sodium_Core_Poly1305_State($block0);
        try {
            ParagonIE_Sodium_Compat::memzero($block0);
        } catch (SodiumException $ex) {
            $block0 = null;
        }
        $state->update($ad);
        $state->update(ParagonIE_Sodium_Core_Util::store64_le($adlen));
        $state->update($ciphertext);
        $state->update(ParagonIE_Sodium_Core_Util::store64_le($clen));
        $computed_mac = $state->finish();

        /* Compare the given MAC with the recalculated MAC: */
        if (!ParagonIE_Sodium_Core_Util::verify_16($computed_mac, $mac)) {
            throw new SodiumException('Invalid MAC');
        }

        // Here, we know that the MAC is valid, so we decrypt and return the plaintext
        return ParagonIE_Sodium_Core_ChaCha20::streamXorIc(
            $ciphertext,
            $nonce,
            $key,
            ParagonIE_Sodium_Core_Util::store64_le(1)
        );
    }

    /**
     * AEAD Encryption with ChaCha20-Poly1305
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $message
     * @param string $ad
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function aead_chacha20poly1305_encrypt(
        $message = '',
        $ad = '',
        $nonce = '',
        $key = ''
    ) {
        /** @var int $len - Length of the plaintext message */
        $len = ParagonIE_Sodium_Core_Util::strlen($message);

        /** @var int $adlen - Length of the associated data */
        $adlen = ParagonIE_Sodium_Core_Util::strlen($ad);

        /** @var string The first block of the chacha20 keystream, used as a poly1305 key */
        $block0 = ParagonIE_Sodium_Core_ChaCha20::stream(
            32,
            $nonce,
            $key
        );
        $state = new ParagonIE_Sodium_Core_Poly1305_State($block0);
        try {
            ParagonIE_Sodium_Compat::memzero($block0);
        } catch (SodiumException $ex) {
            $block0 = null;
        }

        /** @var string $ciphertext - Raw encrypted data */
        $ciphertext = ParagonIE_Sodium_Core_ChaCha20::streamXorIc(
            $message,
            $nonce,
            $key,
            ParagonIE_Sodium_Core_Util::store64_le(1)
        );

        $state->update($ad);
        $state->update(ParagonIE_Sodium_Core_Util::store64_le($adlen));
        $state->update($ciphertext);
        $state->update(ParagonIE_Sodium_Core_Util::store64_le($len));
        return $ciphertext . $state->finish();
    }

    /**
     * AEAD Decryption with ChaCha20-Poly1305, IETF mode (96-bit nonce)
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $message
     * @param string $ad
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function aead_chacha20poly1305_ietf_decrypt(
        $message = '',
        $ad = '',
        $nonce = '',
        $key = ''
    ) {
        /** @var int $adlen - Length of associated data */
        $adlen = ParagonIE_Sodium_Core_Util::strlen($ad);

        /** @var int $len - Length of message (ciphertext + MAC) */
        $len = ParagonIE_Sodium_Core_Util::strlen($message);

        /** @var int  $clen - Length of ciphertext */
        $clen = $len - self::aead_chacha20poly1305_IETF_ABYTES;

        /** @var string The first block of the chacha20 keystream, used as a poly1305 key */
        $block0 = ParagonIE_Sodium_Core_ChaCha20::ietfStream(
            32,
            $nonce,
            $key
        );

        /** @var string $mac - Message authentication code */
        $mac = ParagonIE_Sodium_Core_Util::substr(
            $message,
            $len - self::aead_chacha20poly1305_IETF_ABYTES,
            self::aead_chacha20poly1305_IETF_ABYTES
        );

        /** @var string $ciphertext - The encrypted message (sans MAC) */
        $ciphertext = ParagonIE_Sodium_Core_Util::substr(
            $message,
            0,
            $len - self::aead_chacha20poly1305_IETF_ABYTES
        );

        /* Recalculate the Poly1305 authentication tag (MAC): */
        $state = new ParagonIE_Sodium_Core_Poly1305_State($block0);
        try {
            ParagonIE_Sodium_Compat::memzero($block0);
        } catch (SodiumException $ex) {
            $block0 = null;
        }
        $state->update($ad);
        $state->update(str_repeat("\x00", ((0x10 - $adlen) & 0xf)));
        $state->update($ciphertext);
        $state->update(str_repeat("\x00", (0x10 - $clen) & 0xf));
        $state->update(ParagonIE_Sodium_Core_Util::store64_le($adlen));
        $state->update(ParagonIE_Sodium_Core_Util::store64_le($clen));
        $computed_mac = $state->finish();

        /* Compare the given MAC with the recalculated MAC: */
        if (!ParagonIE_Sodium_Core_Util::verify_16($computed_mac, $mac)) {
            throw new SodiumException('Invalid MAC');
        }

        // Here, we know that the MAC is valid, so we decrypt and return the plaintext
        return ParagonIE_Sodium_Core_ChaCha20::ietfStreamXorIc(
            $ciphertext,
            $nonce,
            $key,
            ParagonIE_Sodium_Core_Util::store64_le(1)
        );
    }

    /**
     * AEAD Encryption with ChaCha20-Poly1305, IETF mode (96-bit nonce)
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $message
     * @param string $ad
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function aead_chacha20poly1305_ietf_encrypt(
        $message = '',
        $ad = '',
        $nonce = '',
        $key = ''
    ) {
        /** @var int $len - Length of the plaintext message */
        $len = ParagonIE_Sodium_Core_Util::strlen($message);

        /** @var int $adlen - Length of the associated data */
        $adlen = ParagonIE_Sodium_Core_Util::strlen($ad);

        /** @var string The first block of the chacha20 keystream, used as a poly1305 key */
        $block0 = ParagonIE_Sodium_Core_ChaCha20::ietfStream(
            32,
            $nonce,
            $key
        );
        $state = new ParagonIE_Sodium_Core_Poly1305_State($block0);
        try {
            ParagonIE_Sodium_Compat::memzero($block0);
        } catch (SodiumException $ex) {
            $block0 = null;
        }

        /** @var string $ciphertext - Raw encrypted data */
        $ciphertext = ParagonIE_Sodium_Core_ChaCha20::ietfStreamXorIc(
            $message,
            $nonce,
            $key,
            ParagonIE_Sodium_Core_Util::store64_le(1)
        );

        $state->update($ad);
        $state->update(str_repeat("\x00", ((0x10 - $adlen) & 0xf)));
        $state->update($ciphertext);
        $state->update(str_repeat("\x00", ((0x10 - $len) & 0xf)));
        $state->update(ParagonIE_Sodium_Core_Util::store64_le($adlen));
        $state->update(ParagonIE_Sodium_Core_Util::store64_le($len));
        return $ciphertext . $state->finish();
    }

    /**
     * AEAD Decryption with ChaCha20-Poly1305, IETF mode (96-bit nonce)
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $message
     * @param string $ad
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function aead_xchacha20poly1305_ietf_decrypt(
        $message = '',
        $ad = '',
        $nonce = '',
        $key = ''
    ) {
        $subkey = ParagonIE_Sodium_Core_HChaCha20::hChaCha20(
            ParagonIE_Sodium_Core_Util::substr($nonce, 0, 16),
            $key
        );
        $nonceLast = "\x00\x00\x00\x00" .
            ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8);

        return self::aead_chacha20poly1305_ietf_decrypt($message, $ad, $nonceLast, $subkey);
    }

    /**
     * AEAD Encryption with ChaCha20-Poly1305, IETF mode (96-bit nonce)
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $message
     * @param string $ad
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function aead_xchacha20poly1305_ietf_encrypt(
        $message = '',
        $ad = '',
        $nonce = '',
        $key = ''
    ) {
        $subkey = ParagonIE_Sodium_Core_HChaCha20::hChaCha20(
            ParagonIE_Sodium_Core_Util::substr($nonce, 0, 16),
            $key
        );
        $nonceLast = "\x00\x00\x00\x00" .
            ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8);

        return self::aead_chacha20poly1305_ietf_encrypt($message, $ad, $nonceLast, $subkey);
    }

    /**
     * HMAC-SHA-512-256 (a.k.a. the leftmost 256 bits of HMAC-SHA-512)
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $message
     * @param string $key
     * @return string
     * @throws TypeError
     */
    public static function auth($message, $key)
    {
        return ParagonIE_Sodium_Core_Util::substr(
            hash_hmac('sha512', $message, $key, true),
            0,
            32
        );
    }

    /**
     * HMAC-SHA-512-256 validation. Constant-time via hash_equals().
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $mac
     * @param string $message
     * @param string $key
     * @return bool
     * @throws SodiumException
     * @throws TypeError
     */
    public static function auth_verify($mac, $message, $key)
    {
        return ParagonIE_Sodium_Core_Util::hashEquals(
            $mac,
            self::auth($message, $key)
        );
    }

    /**
     * X25519 key exchange followed by XSalsa20Poly1305 symmetric encryption
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $plaintext
     * @param string $nonce
     * @param string $keypair
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function box($plaintext, $nonce, $keypair)
    {
        $c = self::secretbox(
            $plaintext,
            $nonce,
            self::box_beforenm(
                self::box_secretkey($keypair),
                self::box_publickey($keypair)
            )
        );
        return $c;
    }

    /**
     * X25519-XSalsa20-Poly1305 with one ephemeral X25519 keypair.
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $message
     * @param string $publicKey
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function box_seal($message, $publicKey)
    {
        /** @var string $ephemeralKeypair */
        $ephemeralKeypair = self::box_keypair();

        /** @var string $ephemeralSK */
        $ephemeralSK = self::box_secretkey($ephemeralKeypair);

        /** @var string $ephemeralPK */
        $ephemeralPK = self::box_publickey($ephemeralKeypair);

        /** @var string $nonce */
        $nonce = self::generichash(
            $ephemeralPK . $publicKey,
            '',
            24
        );

        /** @var string $keypair - The combined keypair used in crypto_box() */
        $keypair = self::box_keypair_from_secretkey_and_publickey($ephemeralSK, $publicKey);

        /** @var string $ciphertext Ciphertext + MAC from crypto_box */
        $ciphertext = self::box($message, $nonce, $keypair);
        try {
            ParagonIE_Sodium_Compat::memzero($ephemeralKeypair);
            ParagonIE_Sodium_Compat::memzero($ephemeralSK);
            ParagonIE_Sodium_Compat::memzero($nonce);
        } catch (SodiumException $ex) {
            $ephemeralKeypair = null;
            $ephemeralSK = null;
            $nonce = null;
        }
        return $ephemeralPK . $ciphertext;
    }

    /**
     * Opens a message encrypted via box_seal().
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $message
     * @param string $keypair
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function box_seal_open($message, $keypair)
    {
        /** @var string $ephemeralPK */
        $ephemeralPK = ParagonIE_Sodium_Core_Util::substr($message, 0, 32);

        /** @var string $ciphertext (ciphertext + MAC) */
        $ciphertext = ParagonIE_Sodium_Core_Util::substr($message, 32);

        /** @var string $secretKey */
        $secretKey = self::box_secretkey($keypair);

        /** @var string $publicKey */
        $publicKey = self::box_publickey($keypair);

        /** @var string $nonce */
        $nonce = self::generichash(
            $ephemeralPK . $publicKey,
            '',
            24
        );

        /** @var string $keypair */
        $keypair = self::box_keypair_from_secretkey_and_publickey($secretKey, $ephemeralPK);

        /** @var string $m */
        $m = self::box_open($ciphertext, $nonce, $keypair);
        try {
            ParagonIE_Sodium_Compat::memzero($secretKey);
            ParagonIE_Sodium_Compat::memzero($ephemeralPK);
            ParagonIE_Sodium_Compat::memzero($nonce);
        } catch (SodiumException $ex) {
            $secretKey = null;
            $ephemeralPK = null;
            $nonce = null;
        }
        return $m;
    }

    /**
     * Used by crypto_box() to get the crypto_secretbox() key.
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $sk
     * @param string $pk
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function box_beforenm($sk, $pk)
    {
        return ParagonIE_Sodium_Core_HSalsa20::hsalsa20(
            str_repeat("\x00", 16),
            self::scalarmult($sk, $pk)
        );
    }

    /**
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @return string
     * @throws Exception
     * @throws SodiumException
     * @throws TypeError
     */
    public static function box_keypair()
    {
        $sKey = random_bytes(32);
        $pKey = self::scalarmult_base($sKey);
        return $sKey . $pKey;
    }

    /**
     * @param string $seed
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function box_seed_keypair($seed)
    {
        $sKey = ParagonIE_Sodium_Core_Util::substr(
            hash('sha512', $seed, true),
            0,
            32
        );
        $pKey = self::scalarmult_base($sKey);
        return $sKey . $pKey;
    }

    /**
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $sKey
     * @param string $pKey
     * @return string
     * @throws TypeError
     */
    public static function box_keypair_from_secretkey_and_publickey($sKey, $pKey)
    {
        return ParagonIE_Sodium_Core_Util::substr($sKey, 0, 32) .
            ParagonIE_Sodium_Core_Util::substr($pKey, 0, 32);
    }

    /**
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $keypair
     * @return string
     * @throws RangeException
     * @throws TypeError
     */
    public static function box_secretkey($keypair)
    {
        if (ParagonIE_Sodium_Core_Util::strlen($keypair) !== 64) {
            throw new RangeException(
                'Must be ParagonIE_Sodium_Compat::CRYPTO_BOX_KEYPAIRBYTES bytes long.'
            );
        }
        return ParagonIE_Sodium_Core_Util::substr($keypair, 0, 32);
    }

    /**
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $keypair
     * @return string
     * @throws RangeException
     * @throws TypeError
     */
    public static function box_publickey($keypair)
    {
        if (ParagonIE_Sodium_Core_Util::strlen($keypair) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_KEYPAIRBYTES) {
            throw new RangeException(
                'Must be ParagonIE_Sodium_Compat::CRYPTO_BOX_KEYPAIRBYTES bytes long.'
            );
        }
        return ParagonIE_Sodium_Core_Util::substr($keypair, 32, 32);
    }

    /**
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $sKey
     * @return string
     * @throws RangeException
     * @throws SodiumException
     * @throws TypeError
     */
    public static function box_publickey_from_secretkey($sKey)
    {
        if (ParagonIE_Sodium_Core_Util::strlen($sKey) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_SECRETKEYBYTES) {
            throw new RangeException(
                'Must be ParagonIE_Sodium_Compat::CRYPTO_BOX_SECRETKEYBYTES bytes long.'
            );
        }
        return self::scalarmult_base($sKey);
    }

    /**
     * Decrypt a message encrypted with box().
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $ciphertext
     * @param string $nonce
     * @param string $keypair
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function box_open($ciphertext, $nonce, $keypair)
    {
        return self::secretbox_open(
            $ciphertext,
            $nonce,
            self::box_beforenm(
                self::box_secretkey($keypair),
                self::box_publickey($keypair)
            )
        );
    }

    /**
     * Calculate a BLAKE2b hash.
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $message
     * @param string|null $key
     * @param int $outlen
     * @return string
     * @throws RangeException
     * @throws SodiumException
     * @throws TypeError
     */
    public static function generichash($message, $key = '', $outlen = 32)
    {
        // This ensures that ParagonIE_Sodium_Core_BLAKE2b::$iv is initialized
        ParagonIE_Sodium_Core_BLAKE2b::pseudoConstructor();

        $k = null;
        if (!empty($key)) {
            /** @var SplFixedArray $k */
            $k = ParagonIE_Sodium_Core_BLAKE2b::stringToSplFixedArray($key);
            if ($k->count() > ParagonIE_Sodium_Core_BLAKE2b::KEYBYTES) {
                throw new RangeException('Invalid key size');
            }
        }

        /** @var SplFixedArray $in */
        $in = ParagonIE_Sodium_Core_BLAKE2b::stringToSplFixedArray($message);

        /** @var SplFixedArray $ctx */
        $ctx = ParagonIE_Sodium_Core_BLAKE2b::init($k, $outlen);
        ParagonIE_Sodium_Core_BLAKE2b::update($ctx, $in, $in->count());

        /** @var SplFixedArray $out */
        $out = new SplFixedArray($outlen);
        $out = ParagonIE_Sodium_Core_BLAKE2b::finish($ctx, $out);

        /** @var array<int, int> */
        $outArray = $out->toArray();
        return ParagonIE_Sodium_Core_Util::intArrayToString($outArray);
    }

    /**
     * Finalize a BLAKE2b hashing context, returning the hash.
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $ctx
     * @param int $outlen
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function generichash_final($ctx, $outlen = 32)
    {
        if (!is_string($ctx)) {
            throw new TypeError('Context must be a string');
        }
        $out = new SplFixedArray($outlen);

        /** @var SplFixedArray $context */
        $context = ParagonIE_Sodium_Core_BLAKE2b::stringToContext($ctx);

        /** @var SplFixedArray $out */
        $out = ParagonIE_Sodium_Core_BLAKE2b::finish($context, $out);

        /** @var array<int, int> */
        $outArray = $out->toArray();
        return ParagonIE_Sodium_Core_Util::intArrayToString($outArray);
    }

    /**
     * Initialize a hashing context for BLAKE2b.
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $key
     * @param int $outputLength
     * @return string
     * @throws RangeException
     * @throws SodiumException
     * @throws TypeError
     */
    public static function generichash_init($key = '', $outputLength = 32)
    {
        // This ensures that ParagonIE_Sodium_Core_BLAKE2b::$iv is initialized
        ParagonIE_Sodium_Core_BLAKE2b::pseudoConstructor();

        $k = null;
        if (!empty($key)) {
            $k = ParagonIE_Sodium_Core_BLAKE2b::stringToSplFixedArray($key);
            if ($k->count() > ParagonIE_Sodium_Core_BLAKE2b::KEYBYTES) {
                throw new RangeException('Invalid key size');
            }
        }

        /** @var SplFixedArray $ctx */
        $ctx = ParagonIE_Sodium_Core_BLAKE2b::init($k, $outputLength);

        return ParagonIE_Sodium_Core_BLAKE2b::contextToString($ctx);
    }

    /**
     * Initialize a hashing context for BLAKE2b.
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $key
     * @param int $outputLength
     * @param string $salt
     * @param string $personal
     * @return string
     * @throws RangeException
     * @throws SodiumException
     * @throws TypeError
     */
    public static function generichash_init_salt_personal(
        $key = '',
        $outputLength = 32,
        $salt = '',
        $personal = ''
    ) {
        // This ensures that ParagonIE_Sodium_Core_BLAKE2b::$iv is initialized
        ParagonIE_Sodium_Core_BLAKE2b::pseudoConstructor();

        $k = null;
        if (!empty($key)) {
            $k = ParagonIE_Sodium_Core_BLAKE2b::stringToSplFixedArray($key);
            if ($k->count() > ParagonIE_Sodium_Core_BLAKE2b::KEYBYTES) {
                throw new RangeException('Invalid key size');
            }
        }
        if (!empty($salt)) {
            $s = ParagonIE_Sodium_Core_BLAKE2b::stringToSplFixedArray($salt);
        } else {
            $s = null;
        }
        if (!empty($salt)) {
            $p = ParagonIE_Sodium_Core_BLAKE2b::stringToSplFixedArray($personal);
        } else {
            $p = null;
        }

        /** @var SplFixedArray $ctx */
        $ctx = ParagonIE_Sodium_Core_BLAKE2b::init($k, $outputLength, $s, $p);

        return ParagonIE_Sodium_Core_BLAKE2b::contextToString($ctx);
    }

    /**
     * Update a hashing context for BLAKE2b with $message
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $ctx
     * @param string $message
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function generichash_update($ctx, $message)
    {
        // This ensures that ParagonIE_Sodium_Core_BLAKE2b::$iv is initialized
        ParagonIE_Sodium_Core_BLAKE2b::pseudoConstructor();

        /** @var SplFixedArray $context */
        $context = ParagonIE_Sodium_Core_BLAKE2b::stringToContext($ctx);

        /** @var SplFixedArray $in */
        $in = ParagonIE_Sodium_Core_BLAKE2b::stringToSplFixedArray($message);

        ParagonIE_Sodium_Core_BLAKE2b::update($context, $in, $in->count());

        return ParagonIE_Sodium_Core_BLAKE2b::contextToString($context);
    }

    /**
     * Libsodium's crypto_kx().
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $my_sk
     * @param string $their_pk
     * @param string $client_pk
     * @param string $server_pk
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function keyExchange($my_sk, $their_pk, $client_pk, $server_pk)
    {
        return ParagonIE_Sodium_Compat::crypto_generichash(
            ParagonIE_Sodium_Compat::crypto_scalarmult($my_sk, $their_pk) .
            $client_pk .
            $server_pk
        );
    }

    /**
     * ECDH over Curve25519
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $sKey
     * @param string $pKey
     * @return string
     *
     * @throws SodiumException
     * @throws TypeError
     */
    public static function scalarmult($sKey, $pKey)
    {
        $q = ParagonIE_Sodium_Core_X25519::crypto_scalarmult_curve25519_ref10($sKey, $pKey);
        self::scalarmult_throw_if_zero($q);
        return $q;
    }

    /**
     * ECDH over Curve25519, using the basepoint.
     * Used to get a secret key from a public key.
     *
     * @param string $secret
     * @return string
     *
     * @throws SodiumException
     * @throws TypeError
     */
    public static function scalarmult_base($secret)
    {
        $q = ParagonIE_Sodium_Core_X25519::crypto_scalarmult_curve25519_ref10_base($secret);
        self::scalarmult_throw_if_zero($q);
        return $q;
    }

    /**
     * This throws an Error if a zero public key was passed to the function.
     *
     * @param string $q
     * @return void
     * @throws SodiumException
     * @throws TypeError
     */
    protected static function scalarmult_throw_if_zero($q)
    {
        $d = 0;
        for ($i = 0; $i < self::box_curve25519xsalsa20poly1305_SECRETKEYBYTES; ++$i) {
            $d |= ParagonIE_Sodium_Core_Util::chrToInt($q[$i]);
        }

        /* branch-free variant of === 0 */
        if (-(1 & (($d - 1) >> 8))) {
            throw new SodiumException('Zero public key is not allowed');
        }
    }

    /**
     * XSalsa20-Poly1305 authenticated symmetric-key encryption.
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $plaintext
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function secretbox($plaintext, $nonce, $key)
    {
        /** @var string $subkey */
        $subkey = ParagonIE_Sodium_Core_HSalsa20::hsalsa20($nonce, $key);

        /** @var string $block0 */
        $block0 = str_repeat("\x00", 32);

        /** @var int $mlen - Length of the plaintext message */
        $mlen = ParagonIE_Sodium_Core_Util::strlen($plaintext);
        $mlen0 = $mlen;
        if ($mlen0 > 64 - self::secretbox_xsalsa20poly1305_ZEROBYTES) {
            $mlen0 = 64 - self::secretbox_xsalsa20poly1305_ZEROBYTES;
        }
        $block0 .= ParagonIE_Sodium_Core_Util::substr($plaintext, 0, $mlen0);

        /** @var string $block0 */
        $block0 = ParagonIE_Sodium_Core_Salsa20::salsa20_xor(
            $block0,
            ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8),
            $subkey
        );

        /** @var string $c */
        $c = ParagonIE_Sodium_Core_Util::substr(
            $block0,
            self::secretbox_xsalsa20poly1305_ZEROBYTES
        );
        if ($mlen > $mlen0) {
            $c .= ParagonIE_Sodium_Core_Salsa20::salsa20_xor_ic(
                ParagonIE_Sodium_Core_Util::substr(
                    $plaintext,
                    self::secretbox_xsalsa20poly1305_ZEROBYTES
                ),
                ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8),
                1,
                $subkey
            );
        }
        $state = new ParagonIE_Sodium_Core_Poly1305_State(
            ParagonIE_Sodium_Core_Util::substr(
                $block0,
                0,
                self::onetimeauth_poly1305_KEYBYTES
            )
        );
        try {
            ParagonIE_Sodium_Compat::memzero($block0);
            ParagonIE_Sodium_Compat::memzero($subkey);
        } catch (SodiumException $ex) {
            $block0 = null;
            $subkey = null;
        }

        $state->update($c);

        /** @var string $c - MAC || ciphertext */
        $c = $state->finish() . $c;
        unset($state);

        return $c;
    }

    /**
     * Decrypt a ciphertext generated via secretbox().
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $ciphertext
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function secretbox_open($ciphertext, $nonce, $key)
    {
        /** @var string $mac */
        $mac = ParagonIE_Sodium_Core_Util::substr(
            $ciphertext,
            0,
            self::secretbox_xsalsa20poly1305_MACBYTES
        );

        /** @var string $c */
        $c = ParagonIE_Sodium_Core_Util::substr(
            $ciphertext,
            self::secretbox_xsalsa20poly1305_MACBYTES
        );

        /** @var int $clen */
        $clen = ParagonIE_Sodium_Core_Util::strlen($c);

        /** @var string $subkey */
        $subkey = ParagonIE_Sodium_Core_HSalsa20::hsalsa20($nonce, $key);

        /** @var string $block0 */
        $block0 = ParagonIE_Sodium_Core_Salsa20::salsa20(
            64,
            ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8),
            $subkey
        );
        $verified = ParagonIE_Sodium_Core_Poly1305::onetimeauth_verify(
            $mac,
            $c,
            ParagonIE_Sodium_Core_Util::substr($block0, 0, 32)
        );
        if (!$verified) {
            try {
                ParagonIE_Sodium_Compat::memzero($subkey);
            } catch (SodiumException $ex) {
                $subkey = null;
            }
            throw new SodiumException('Invalid MAC');
        }

        /** @var string $m - Decrypted message */
        $m = ParagonIE_Sodium_Core_Util::xorStrings(
            ParagonIE_Sodium_Core_Util::substr($block0, self::secretbox_xsalsa20poly1305_ZEROBYTES),
            ParagonIE_Sodium_Core_Util::substr($c, 0, self::secretbox_xsalsa20poly1305_ZEROBYTES)
        );
        if ($clen > self::secretbox_xsalsa20poly1305_ZEROBYTES) {
            // We had more than 1 block, so let's continue to decrypt the rest.
            $m .= ParagonIE_Sodium_Core_Salsa20::salsa20_xor_ic(
                ParagonIE_Sodium_Core_Util::substr(
                    $c,
                    self::secretbox_xsalsa20poly1305_ZEROBYTES
                ),
                ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8),
                1,
                (string) $subkey
            );
        }
        return $m;
    }

    /**
     * XChaCha20-Poly1305 authenticated symmetric-key encryption.
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $plaintext
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function secretbox_xchacha20poly1305($plaintext, $nonce, $key)
    {
        /** @var string $subkey */
        $subkey = ParagonIE_Sodium_Core_HChaCha20::hChaCha20(
            ParagonIE_Sodium_Core_Util::substr($nonce, 0, 16),
            $key
        );
        $nonceLast = ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8);

        /** @var string $block0 */
        $block0 = str_repeat("\x00", 32);

        /** @var int $mlen - Length of the plaintext message */
        $mlen = ParagonIE_Sodium_Core_Util::strlen($plaintext);
        $mlen0 = $mlen;
        if ($mlen0 > 64 - self::secretbox_xchacha20poly1305_ZEROBYTES) {
            $mlen0 = 64 - self::secretbox_xchacha20poly1305_ZEROBYTES;
        }
        $block0 .= ParagonIE_Sodium_Core_Util::substr($plaintext, 0, $mlen0);

        /** @var string $block0 */
        $block0 = ParagonIE_Sodium_Core_ChaCha20::streamXorIc(
            $block0,
            $nonceLast,
            $subkey
        );

        /** @var string $c */
        $c = ParagonIE_Sodium_Core_Util::substr(
            $block0,
            self::secretbox_xchacha20poly1305_ZEROBYTES
        );
        if ($mlen > $mlen0) {
            $c .= ParagonIE_Sodium_Core_ChaCha20::streamXorIc(
                ParagonIE_Sodium_Core_Util::substr(
                    $plaintext,
                    self::secretbox_xchacha20poly1305_ZEROBYTES
                ),
                $nonceLast,
                $subkey,
                ParagonIE_Sodium_Core_Util::store64_le(1)
            );
        }
        $state = new ParagonIE_Sodium_Core_Poly1305_State(
            ParagonIE_Sodium_Core_Util::substr(
                $block0,
                0,
                self::onetimeauth_poly1305_KEYBYTES
            )
        );
        try {
            ParagonIE_Sodium_Compat::memzero($block0);
            ParagonIE_Sodium_Compat::memzero($subkey);
        } catch (SodiumException $ex) {
            $block0 = null;
            $subkey = null;
        }

        $state->update($c);

        /** @var string $c - MAC || ciphertext */
        $c = $state->finish() . $c;
        unset($state);

        return $c;
    }

    /**
     * Decrypt a ciphertext generated via secretbox_xchacha20poly1305().
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $ciphertext
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function secretbox_xchacha20poly1305_open($ciphertext, $nonce, $key)
    {
        /** @var string $mac */
        $mac = ParagonIE_Sodium_Core_Util::substr(
            $ciphertext,
            0,
            self::secretbox_xchacha20poly1305_MACBYTES
        );

        /** @var string $c */
        $c = ParagonIE_Sodium_Core_Util::substr(
            $ciphertext,
            self::secretbox_xchacha20poly1305_MACBYTES
        );

        /** @var int $clen */
        $clen = ParagonIE_Sodium_Core_Util::strlen($c);

        /** @var string $subkey */
        $subkey = ParagonIE_Sodium_Core_HChaCha20::hchacha20($nonce, $key);

        /** @var string $block0 */
        $block0 = ParagonIE_Sodium_Core_ChaCha20::stream(
            64,
            ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8),
            $subkey
        );
        $verified = ParagonIE_Sodium_Core_Poly1305::onetimeauth_verify(
            $mac,
            $c,
            ParagonIE_Sodium_Core_Util::substr($block0, 0, 32)
        );

        if (!$verified) {
            try {
                ParagonIE_Sodium_Compat::memzero($subkey);
            } catch (SodiumException $ex) {
                $subkey = null;
            }
            throw new SodiumException('Invalid MAC');
        }

        /** @var string $m - Decrypted message */
        $m = ParagonIE_Sodium_Core_Util::xorStrings(
            ParagonIE_Sodium_Core_Util::substr($block0, self::secretbox_xchacha20poly1305_ZEROBYTES),
            ParagonIE_Sodium_Core_Util::substr($c, 0, self::secretbox_xchacha20poly1305_ZEROBYTES)
        );

        if ($clen > self::secretbox_xchacha20poly1305_ZEROBYTES) {
            // We had more than 1 block, so let's continue to decrypt the rest.
            $m .= ParagonIE_Sodium_Core_ChaCha20::streamXorIc(
                ParagonIE_Sodium_Core_Util::substr(
                    $c,
                    self::secretbox_xchacha20poly1305_ZEROBYTES
                ),
                ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8),
                (string) $subkey,
                ParagonIE_Sodium_Core_Util::store64_le(1)
            );
        }
        return $m;
    }

    /**
     * @param string $key
     * @return array<int, string> Returns a state and a header.
     * @throws Exception
     * @throws SodiumException
     */
    public static function secretstream_xchacha20poly1305_init_push($key)
    {
        # randombytes_buf(out, crypto_secretstream_xchacha20poly1305_HEADERBYTES);
        $out = random_bytes(24);

        # crypto_core_hchacha20(state->k, out, k, NULL);
        $subkey = ParagonIE_Sodium_Core_HChaCha20::hChaCha20($out, $key);
        $state = new ParagonIE_Sodium_Core_SecretStream_State(
            $subkey,
            ParagonIE_Sodium_Core_Util::substr($out, 16, 8) . str_repeat("\0", 4)
        );

        # _crypto_secretstream_xchacha20poly1305_counter_reset(state);
        $state->counterReset();

        # memcpy(STATE_INONCE(state), out + crypto_core_hchacha20_INPUTBYTES,
        #        crypto_secretstream_xchacha20poly1305_INONCEBYTES);
        # memset(state->_pad, 0, sizeof state->_pad);
        return array(
            $state->toString(),
            $out
        );
    }

    /**
     * @param string $key
     * @param string $header
     * @return string Returns a state.
     * @throws Exception
     */
    public static function secretstream_xchacha20poly1305_init_pull($key, $header)
    {
        # crypto_core_hchacha20(state->k, in, k, NULL);
        $subkey = ParagonIE_Sodium_Core_HChaCha20::hChaCha20(
            ParagonIE_Sodium_Core_Util::substr($header, 0, 16),
            $key
        );
        $state = new ParagonIE_Sodium_Core_SecretStream_State(
            $subkey,
            ParagonIE_Sodium_Core_Util::substr($header, 16)
        );
        $state->counterReset();
        # memcpy(STATE_INONCE(state), in + crypto_core_hchacha20_INPUTBYTES,
        #     crypto_secretstream_xchacha20poly1305_INONCEBYTES);
        # memset(state->_pad, 0, sizeof state->_pad);
        # return 0;
        return $state->toString();
    }

    /**
     * @param string $state
     * @param string $msg
     * @param string $aad
     * @param int $tag
     * @return string
     * @throws SodiumException
     */
    public static function secretstream_xchacha20poly1305_push(&$state, $msg, $aad = '', $tag = 0)
    {
        $st = ParagonIE_Sodium_Core_SecretStream_State::fromString($state);
        # crypto_onetimeauth_poly1305_state poly1305_state;
        # unsigned char                     block[64U];
        # unsigned char                     slen[8U];
        # unsigned char                    *c;
        # unsigned char                    *mac;

        $msglen = ParagonIE_Sodium_Core_Util::strlen($msg);
        $aadlen = ParagonIE_Sodium_Core_Util::strlen($aad);

        if ((($msglen + 63) >> 6) > 0xfffffffe) {
            throw new SodiumException(
                'message cannot be larger than SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_MESSAGEBYTES_MAX bytes'
            );
        }

        # if (outlen_p != NULL) {
        #     *outlen_p = 0U;
        # }
        # if (mlen > crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX) {
        #     sodium_misuse();
        # }

        # crypto_stream_chacha20_ietf(block, sizeof block, state->nonce, state->k);
        # crypto_onetimeauth_poly1305_init(&poly1305_state, block);
        # sodium_memzero(block, sizeof block);
        $auth = new ParagonIE_Sodium_Core_Poly1305_State(
            ParagonIE_Sodium_Core_ChaCha20::ietfStream(32, $st->getCombinedNonce(), $st->getKey())
        );

        # crypto_onetimeauth_poly1305_update(&poly1305_state, ad, adlen);
        $auth->update($aad);

        # crypto_onetimeauth_poly1305_update(&poly1305_state, _pad0,
        #     (0x10 - adlen) & 0xf);
        $auth->update(str_repeat("\0", ((0x10 - $aadlen) & 0xf)));

        # memset(block, 0, sizeof block);
        # block[0] = tag;
        # crypto_stream_chacha20_ietf_xor_ic(block, block, sizeof block,
        #                                    state->nonce, 1U, state->k);
        $block = ParagonIE_Sodium_Core_ChaCha20::ietfStreamXorIc(
            ParagonIE_Sodium_Core_Util::intToChr($tag) . str_repeat("\0", 63),
            $st->getCombinedNonce(),
            $st->getKey(),
            ParagonIE_Sodium_Core_Util::store64_le(1)
        );

        # crypto_onetimeauth_poly1305_update(&poly1305_state, block, sizeof block);
        $auth->update($block);

        # out[0] = block[0];
        $out = $block[0];
        # c = out + (sizeof tag);
        # crypto_stream_chacha20_ietf_xor_ic(c, m, mlen, state->nonce, 2U, state->k);
        $cipher = ParagonIE_Sodium_Core_ChaCha20::ietfStreamXorIc(
            $msg,
            $st->getCombinedNonce(),
            $st->getKey(),
            ParagonIE_Sodium_Core_Util::store64_le(2)
        );

        # crypto_onetimeauth_poly1305_update(&poly1305_state, c, mlen);
        $auth->update($cipher);

        $out .= $cipher;
        unset($cipher);

        # crypto_onetimeauth_poly1305_update
        # (&poly1305_state, _pad0, (0x10 - (sizeof block) + mlen) & 0xf);
        $auth->update(str_repeat("\0", ((0x10 - 64 + $msglen) & 0xf)));

        # STORE64_LE(slen, (uint64_t) adlen);
        $slen = ParagonIE_Sodium_Core_Util::store64_le($aadlen);

        # crypto_onetimeauth_poly1305_update(&poly1305_state, slen, sizeof slen);
        $auth->update($slen);

        # STORE64_LE(slen, (sizeof block) + mlen);
        $slen = ParagonIE_Sodium_Core_Util::store64_le(64 + $msglen);

        # crypto_onetimeauth_poly1305_update(&poly1305_state, slen, sizeof slen);
        $auth->update($slen);

        # mac = c + mlen;
        # crypto_onetimeauth_poly1305_final(&poly1305_state, mac);
        $mac = $auth->finish();
        $out .= $mac;

        # sodium_memzero(&poly1305_state, sizeof poly1305_state);
        unset($auth);


        # XOR_BUF(STATE_INONCE(state), mac,
        #     crypto_secretstream_xchacha20poly1305_INONCEBYTES);
        $st->xorNonce($mac);

        # sodium_increment(STATE_COUNTER(state),
        #     crypto_secretstream_xchacha20poly1305_COUNTERBYTES);
        $st->incrementCounter();
        // Overwrite by reference:
        $state = $st->toString();

        /** @var bool $rekey */
        $rekey = ($tag & ParagonIE_Sodium_Compat::CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_REKEY) !== 0;
        # if ((tag & crypto_secretstream_xchacha20poly1305_TAG_REKEY) != 0 ||
        #     sodium_is_zero(STATE_COUNTER(state),
        #         crypto_secretstream_xchacha20poly1305_COUNTERBYTES)) {
        #     crypto_secretstream_xchacha20poly1305_rekey(state);
        # }
        if ($rekey || $st->needsRekey()) {
            // DO REKEY
            self::secretstream_xchacha20poly1305_rekey($state);
        }
        # if (outlen_p != NULL) {
        #     *outlen_p = crypto_secretstream_xchacha20poly1305_ABYTES + mlen;
        # }
        return $out;
    }

    /**
     * @param string $state
     * @param string $cipher
     * @param string $aad
     * @return bool|array{0: string, 1: int}
     * @throws SodiumException
     */
    public static function secretstream_xchacha20poly1305_pull(&$state, $cipher, $aad = '')
    {
        $st = ParagonIE_Sodium_Core_SecretStream_State::fromString($state);

        $cipherlen = ParagonIE_Sodium_Core_Util::strlen($cipher);
        #     mlen = inlen - crypto_secretstream_xchacha20poly1305_ABYTES;
        $msglen = $cipherlen - ParagonIE_Sodium_Compat::CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_ABYTES;
        $aadlen = ParagonIE_Sodium_Core_Util::strlen($aad);

        #     if (mlen > crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX) {
        #         sodium_misuse();
        #     }
        if ((($msglen + 63) >> 6) > 0xfffffffe) {
            throw new SodiumException(
                'message cannot be larger than SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_MESSAGEBYTES_MAX bytes'
            );
        }

        #     crypto_stream_chacha20_ietf(block, sizeof block, state->nonce, state->k);
        #     crypto_onetimeauth_poly1305_init(&poly1305_state, block);
        #     sodium_memzero(block, sizeof block);
        $auth = new ParagonIE_Sodium_Core_Poly1305_State(
            ParagonIE_Sodium_Core_ChaCha20::ietfStream(32, $st->getCombinedNonce(), $st->getKey())
        );

        #     crypto_onetimeauth_poly1305_update(&poly1305_state, ad, adlen);
        $auth->update($aad);

        #     crypto_onetimeauth_poly1305_update(&poly1305_state, _pad0,
        #         (0x10 - adlen) & 0xf);
        $auth->update(str_repeat("\0", ((0x10 - $aadlen) & 0xf)));


        #     memset(block, 0, sizeof block);
        #     block[0] = in[0];
        #     crypto_stream_chacha20_ietf_xor_ic(block, block, sizeof block,
        #                                        state->nonce, 1U, state->k);
        $block = ParagonIE_Sodium_Core_ChaCha20::ietfStreamXorIc(
            $cipher[0] . str_repeat("\0", 63),
            $st->getCombinedNonce(),
            $st->getKey(),
            ParagonIE_Sodium_Core_Util::store64_le(1)
        );
        #     tag = block[0];
        #     block[0] = in[0];
        #     crypto_onetimeauth_poly1305_update(&poly1305_state, block, sizeof block);
        $tag = ParagonIE_Sodium_Core_Util::chrToInt($block[0]);
        $block[0] = $cipher[0];
        $auth->update($block);


        #     c = in + (sizeof tag);
        #     crypto_onetimeauth_poly1305_update(&poly1305_state, c, mlen);
        $auth->update(ParagonIE_Sodium_Core_Util::substr($cipher, 1, $msglen));

        #     crypto_onetimeauth_poly1305_update
        #     (&poly1305_state, _pad0, (0x10 - (sizeof block) + mlen) & 0xf);
        $auth->update(str_repeat("\0", ((0x10 - 64 + $msglen) & 0xf)));

        #     STORE64_LE(slen, (uint64_t) adlen);
        #     crypto_onetimeauth_poly1305_update(&poly1305_state, slen, sizeof slen);
        $slen = ParagonIE_Sodium_Core_Util::store64_le($aadlen);
        $auth->update($slen);

        #     STORE64_LE(slen, (sizeof block) + mlen);
        #     crypto_onetimeauth_poly1305_update(&poly1305_state, slen, sizeof slen);
        $slen = ParagonIE_Sodium_Core_Util::store64_le(64 + $msglen);
        $auth->update($slen);

        #     crypto_onetimeauth_poly1305_final(&poly1305_state, mac);
        #     sodium_memzero(&poly1305_state, sizeof poly1305_state);
        $mac = $auth->finish();

        #     stored_mac = c + mlen;
        #     if (sodium_memcmp(mac, stored_mac, sizeof mac) != 0) {
        #     sodium_memzero(mac, sizeof mac);
        #         return -1;
        #     }

        $stored = ParagonIE_Sodium_Core_Util::substr($cipher, $msglen + 1, 16);
        if (!ParagonIE_Sodium_Core_Util::hashEquals($mac, $stored)) {
            return false;
        }

        #     crypto_stream_chacha20_ietf_xor_ic(m, c, mlen, state->nonce, 2U, state->k);
        $out = ParagonIE_Sodium_Core_ChaCha20::ietfStreamXorIc(
            ParagonIE_Sodium_Core_Util::substr($cipher, 1, $msglen),
            $st->getCombinedNonce(),
            $st->getKey(),
            ParagonIE_Sodium_Core_Util::store64_le(2)
        );

        #     XOR_BUF(STATE_INONCE(state), mac,
        #         crypto_secretstream_xchacha20poly1305_INONCEBYTES);
        $st->xorNonce($mac);

        #     sodium_increment(STATE_COUNTER(state),
        #         crypto_secretstream_xchacha20poly1305_COUNTERBYTES);
        $st->incrementCounter();

        #     if ((tag & crypto_secretstream_xchacha20poly1305_TAG_REKEY) != 0 ||
        #         sodium_is_zero(STATE_COUNTER(state),
        #             crypto_secretstream_xchacha20poly1305_COUNTERBYTES)) {
        #         crypto_secretstream_xchacha20poly1305_rekey(state);
        #     }

        // Overwrite by reference:
        $state = $st->toString();

        /** @var bool $rekey */
        $rekey = ($tag & ParagonIE_Sodium_Compat::CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_REKEY) !== 0;
        if ($rekey || $st->needsRekey()) {
            // DO REKEY
            self::secretstream_xchacha20poly1305_rekey($state);
        }
        return array($out, $tag);
    }

    /**
     * @param string $state
     * @return void
     * @throws SodiumException
     */
    public static function secretstream_xchacha20poly1305_rekey(&$state)
    {
        $st = ParagonIE_Sodium_Core_SecretStream_State::fromString($state);
        # unsigned char new_key_and_inonce[crypto_stream_chacha20_ietf_KEYBYTES +
        # crypto_secretstream_xchacha20poly1305_INONCEBYTES];
        # size_t        i;
        # for (i = 0U; i < crypto_stream_chacha20_ietf_KEYBYTES; i++) {
        #     new_key_and_inonce[i] = state->k[i];
        # }
        $new_key_and_inonce = $st->getKey();

        # for (i = 0U; i < crypto_secretstream_xchacha20poly1305_INONCEBYTES; i++) {
        #     new_key_and_inonce[crypto_stream_chacha20_ietf_KEYBYTES + i] =
        #         STATE_INONCE(state)[i];
        # }
        $new_key_and_inonce .= ParagonIE_Sodium_Core_Util::substR($st->getNonce(), 0, 8);

        # crypto_stream_chacha20_ietf_xor(new_key_and_inonce, new_key_and_inonce,
        #                                 sizeof new_key_and_inonce,
        #                                 state->nonce, state->k);

        $st->rekey(ParagonIE_Sodium_Core_ChaCha20::ietfStreamXorIc(
            $new_key_and_inonce,
            $st->getCombinedNonce(),
            $st->getKey(),
            ParagonIE_Sodium_Core_Util::store64_le(0)
        ));

        # for (i = 0U; i < crypto_stream_chacha20_ietf_KEYBYTES; i++) {
        #     state->k[i] = new_key_and_inonce[i];
        # }
        # for (i = 0U; i < crypto_secretstream_xchacha20poly1305_INONCEBYTES; i++) {
        #     STATE_INONCE(state)[i] =
        #          new_key_and_inonce[crypto_stream_chacha20_ietf_KEYBYTES + i];
        # }
        # _crypto_secretstream_xchacha20poly1305_counter_reset(state);
        $st->counterReset();

        $state = $st->toString();
    }

    /**
     * Detached Ed25519 signature.
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $message
     * @param string $sk
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function sign_detached($message, $sk)
    {
        return ParagonIE_Sodium_Core_Ed25519::sign_detached($message, $sk);
    }

    /**
     * Attached Ed25519 signature. (Returns a signed message.)
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $message
     * @param string $sk
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function sign($message, $sk)
    {
        return ParagonIE_Sodium_Core_Ed25519::sign($message, $sk);
    }

    /**
     * Opens a signed message. If valid, returns the message.
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $signedMessage
     * @param string $pk
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function sign_open($signedMessage, $pk)
    {
        return ParagonIE_Sodium_Core_Ed25519::sign_open($signedMessage, $pk);
    }

    /**
     * Verify a detached signature of a given message and public key.
     *
     * @internal Do not use this directly. Use ParagonIE_Sodium_Compat.
     *
     * @param string $signature
     * @param string $message
     * @param string $pk
     * @return bool
     * @throws SodiumException
     * @throws TypeError
     */
    public static function sign_verify_detached($signature, $message, $pk)
    {
        return ParagonIE_Sodium_Core_Ed25519::verify_detached($signature, $message, $pk);
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core/Util.php000064400000067243150755146460017327 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Core_Util', false)) {
    return;
}

/**
 * Class ParagonIE_Sodium_Core_Util
 */
abstract class ParagonIE_Sodium_Core_Util
{
    /**
     * @param int $integer
     * @param int $size (16, 32, 64)
     * @return int
     */
    public static function abs($integer, $size = 0)
    {
        /** @var int $realSize */
        $realSize = (PHP_INT_SIZE << 3) - 1;
        if ($size) {
            --$size;
        } else {
            /** @var int $size */
            $size = $realSize;
        }

        $negative = -(($integer >> $size) & 1);
        return (int) (
            ($integer ^ $negative)
                +
            (($negative >> $realSize) & 1)
        );
    }

    /**
     * Convert a binary string into a hexadecimal string without cache-timing
     * leaks
     *
     * @internal You should not use this directly from another application
     *
     * @param string $binaryString (raw binary)
     * @return string
     * @throws TypeError
     */
    public static function bin2hex($binaryString)
    {
        /* Type checks: */
        if (!is_string($binaryString)) {
            throw new TypeError('Argument 1 must be a string, ' . gettype($binaryString) . ' given.');
        }

        $hex = '';
        $len = self::strlen($binaryString);
        for ($i = 0; $i < $len; ++$i) {
            /** @var array<int, int> $chunk */
            $chunk = unpack('C', $binaryString[$i]);
            /** @var int $c */
            $c = $chunk[1] & 0xf;
            /** @var int $b */
            $b = $chunk[1] >> 4;
            $hex .= pack(
                'CC',
                (87 + $b + ((($b - 10) >> 8) & ~38)),
                (87 + $c + ((($c - 10) >> 8) & ~38))
            );
        }
        return $hex;
    }

    /**
     * Convert a binary string into a hexadecimal string without cache-timing
     * leaks, returning uppercase letters (as per RFC 4648)
     *
     * @internal You should not use this directly from another application
     *
     * @param string $bin_string (raw binary)
     * @return string
     * @throws TypeError
     */
    public static function bin2hexUpper($bin_string)
    {
        $hex = '';
        $len = self::strlen($bin_string);
        for ($i = 0; $i < $len; ++$i) {
            /** @var array<int, int> $chunk */
            $chunk = unpack('C', $bin_string[$i]);
            /**
             * Lower 16 bits
             *
             * @var int $c
             */
            $c = $chunk[1] & 0xf;

            /**
             * Upper 16 bits
             * @var int $b
             */
            $b = $chunk[1] >> 4;

            /**
             * Use pack() and binary operators to turn the two integers
             * into hexadecimal characters. We don't use chr() here, because
             * it uses a lookup table internally and we want to avoid
             * cache-timing side-channels.
             */
            $hex .= pack(
                'CC',
                (55 + $b + ((($b - 10) >> 8) & ~6)),
                (55 + $c + ((($c - 10) >> 8) & ~6))
            );
        }
        return $hex;
    }

    /**
     * Cache-timing-safe variant of ord()
     *
     * @internal You should not use this directly from another application
     *
     * @param string $chr
     * @return int
     * @throws SodiumException
     * @throws TypeError
     */
    public static function chrToInt($chr)
    {
        /* Type checks: */
        if (!is_string($chr)) {
            throw new TypeError('Argument 1 must be a string, ' . gettype($chr) . ' given.');
        }
        if (self::strlen($chr) !== 1) {
            throw new SodiumException('chrToInt() expects a string that is exactly 1 character long');
        }
        /** @var array<int, int> $chunk */
        $chunk = unpack('C', $chr);
        return (int) ($chunk[1]);
    }

    /**
     * Compares two strings.
     *
     * @internal You should not use this directly from another application
     *
     * @param string $left
     * @param string $right
     * @param int $len
     * @return int
     * @throws SodiumException
     * @throws TypeError
     */
    public static function compare($left, $right, $len = null)
    {
        $leftLen = self::strlen($left);
        $rightLen = self::strlen($right);
        if ($len === null) {
            $len = max($leftLen, $rightLen);
            $left = str_pad($left, $len, "\x00", STR_PAD_RIGHT);
            $right = str_pad($right, $len, "\x00", STR_PAD_RIGHT);
        }

        $gt = 0;
        $eq = 1;
        $i = $len;
        while ($i !== 0) {
            --$i;
            $gt |= ((self::chrToInt($right[$i]) - self::chrToInt($left[$i])) >> 8) & $eq;
            $eq &= ((self::chrToInt($right[$i]) ^ self::chrToInt($left[$i])) - 1) >> 8;
        }
        return ($gt + $gt + $eq) - 1;
    }

    /**
     * If a variable does not match a given type, throw a TypeError.
     *
     * @param mixed $mixedVar
     * @param string $type
     * @param int $argumentIndex
     * @throws TypeError
     * @throws SodiumException
     * @return void
     */
    public static function declareScalarType(&$mixedVar = null, $type = 'void', $argumentIndex = 0)
    {
        if (func_num_args() === 0) {
            /* Tautology, by default */
            return;
        }
        if (func_num_args() === 1) {
            throw new TypeError('Declared void, but passed a variable');
        }
        $realType = strtolower(gettype($mixedVar));
        $type = strtolower($type);
        switch ($type) {
            case 'null':
                if ($mixedVar !== null) {
                    throw new TypeError('Argument ' . $argumentIndex . ' must be null, ' . $realType . ' given.');
                }
                break;
            case 'integer':
            case 'int':
                $allow = array('int', 'integer');
                if (!in_array($type, $allow)) {
                    throw new TypeError('Argument ' . $argumentIndex . ' must be an integer, ' . $realType . ' given.');
                }
                $mixedVar = (int) $mixedVar;
                break;
            case 'boolean':
            case 'bool':
                $allow = array('bool', 'boolean');
                if (!in_array($type, $allow)) {
                    throw new TypeError('Argument ' . $argumentIndex . ' must be a boolean, ' . $realType . ' given.');
                }
                $mixedVar = (bool) $mixedVar;
                break;
            case 'string':
                if (!is_string($mixedVar)) {
                    throw new TypeError('Argument ' . $argumentIndex . ' must be a string, ' . $realType . ' given.');
                }
                $mixedVar = (string) $mixedVar;
                break;
            case 'decimal':
            case 'double':
            case 'float':
                $allow = array('decimal', 'double', 'float');
                if (!in_array($type, $allow)) {
                    throw new TypeError('Argument ' . $argumentIndex . ' must be a float, ' . $realType . ' given.');
                }
                $mixedVar = (float) $mixedVar;
                break;
            case 'object':
                if (!is_object($mixedVar)) {
                    throw new TypeError('Argument ' . $argumentIndex . ' must be an object, ' . $realType . ' given.');
                }
                break;
            case 'array':
                if (!is_array($mixedVar)) {
                    if (is_object($mixedVar)) {
                        if ($mixedVar instanceof ArrayAccess) {
                            return;
                        }
                    }
                    throw new TypeError('Argument ' . $argumentIndex . ' must be an array, ' . $realType . ' given.');
                }
                break;
            default:
                throw new SodiumException('Unknown type (' . $realType .') does not match expect type (' . $type . ')');
        }
    }

    /**
     * Evaluate whether or not two strings are equal (in constant-time)
     *
     * @param string $left
     * @param string $right
     * @return bool
     * @throws SodiumException
     * @throws TypeError
     */
    public static function hashEquals($left, $right)
    {
        /* Type checks: */
        if (!is_string($left)) {
            throw new TypeError('Argument 1 must be a string, ' . gettype($left) . ' given.');
        }
        if (!is_string($right)) {
            throw new TypeError('Argument 2 must be a string, ' . gettype($right) . ' given.');
        }

        if (is_callable('hash_equals')) {
            return hash_equals($left, $right);
        }
        $d = 0;
        /** @var int $len */
        $len = self::strlen($left);
        if ($len !== self::strlen($right)) {
            return false;
        }
        for ($i = 0; $i < $len; ++$i) {
            $d |= self::chrToInt($left[$i]) ^ self::chrToInt($right[$i]);
        }

        if ($d !== 0) {
            return false;
        }
        return $left === $right;
    }

    /**
     * Catch hash_update() failures and throw instead of silently proceeding
     *
     * @param HashContext|resource &$hs
     * @param string $data
     * @return void
     * @throws SodiumException
     * @psalm-suppress PossiblyInvalidArgument
     */
    protected static function hash_update(&$hs, $data)
    {
        if (!hash_update($hs, $data)) {
            throw new SodiumException('hash_update() failed');
        }
    }

    /**
     * Convert a hexadecimal string into a binary string without cache-timing
     * leaks
     *
     * @internal You should not use this directly from another application
     *
     * @param string $hexString
     * @param string $ignore
     * @param bool $strictPadding
     * @return string (raw binary)
     * @throws RangeException
     * @throws TypeError
     */
    public static function hex2bin($hexString, $ignore = '', $strictPadding = false)
    {
        /* Type checks: */
        if (!is_string($hexString)) {
            throw new TypeError('Argument 1 must be a string, ' . gettype($hexString) . ' given.');
        }
        if (!is_string($ignore)) {
            throw new TypeError('Argument 2 must be a string, ' . gettype($hexString) . ' given.');
        }

        $hex_pos = 0;
        $bin = '';
        $c_acc = 0;
        $hex_len = self::strlen($hexString);
        $state = 0;
        if (($hex_len & 1) !== 0) {
            if ($strictPadding) {
                throw new RangeException(
                    'Expected an even number of hexadecimal characters'
                );
            } else {
                $hexString = '0' . $hexString;
                ++$hex_len;
            }
        }

        $chunk = unpack('C*', $hexString);
        while ($hex_pos < $hex_len) {
            ++$hex_pos;
            /** @var int $c */
            $c = $chunk[$hex_pos];
            $c_num = $c ^ 48;
            $c_num0 = ($c_num - 10) >> 8;
            $c_alpha = ($c & ~32) - 55;
            $c_alpha0 = (($c_alpha - 10) ^ ($c_alpha - 16)) >> 8;
            if (($c_num0 | $c_alpha0) === 0) {
                if ($ignore && $state === 0 && strpos($ignore, self::intToChr($c)) !== false) {
                    continue;
                }
                throw new RangeException(
                    'hex2bin() only expects hexadecimal characters'
                );
            }
            $c_val = ($c_num0 & $c_num) | ($c_alpha & $c_alpha0);
            if ($state === 0) {
                $c_acc = $c_val * 16;
            } else {
                $bin .= pack('C', $c_acc | $c_val);
            }
            $state ^= 1;
        }
        return $bin;
    }

    /**
     * Turn an array of integers into a string
     *
     * @internal You should not use this directly from another application
     *
     * @param array<int, int> $ints
     * @return string
     */
    public static function intArrayToString(array $ints)
    {
        $args = $ints;
        foreach ($args as $i => $v) {
            $args[$i] = (int) ($v & 0xff);
        }
        array_unshift($args, str_repeat('C', count($ints)));
        return (string) (call_user_func_array('pack', $args));
    }

    /**
     * Cache-timing-safe variant of ord()
     *
     * @internal You should not use this directly from another application
     *
     * @param int $int
     * @return string
     * @throws TypeError
     */
    public static function intToChr($int)
    {
        return pack('C', $int);
    }

    /**
     * Load a 3 character substring into an integer
     *
     * @internal You should not use this directly from another application
     *
     * @param string $string
     * @return int
     * @throws RangeException
     * @throws TypeError
     */
    public static function load_3($string)
    {
        /* Type checks: */
        if (!is_string($string)) {
            throw new TypeError('Argument 1 must be a string, ' . gettype($string) . ' given.');
        }

        /* Input validation: */
        if (self::strlen($string) < 3) {
            throw new RangeException(
                'String must be 3 bytes or more; ' . self::strlen($string) . ' given.'
            );
        }
        /** @var array<int, int> $unpacked */
        $unpacked = unpack('V', $string . "\0");
        return (int) ($unpacked[1] & 0xffffff);
    }

    /**
     * Load a 4 character substring into an integer
     *
     * @internal You should not use this directly from another application
     *
     * @param string $string
     * @return int
     * @throws RangeException
     * @throws TypeError
     */
    public static function load_4($string)
    {
        /* Type checks: */
        if (!is_string($string)) {
            throw new TypeError('Argument 1 must be a string, ' . gettype($string) . ' given.');
        }

        /* Input validation: */
        if (self::strlen($string) < 4) {
            throw new RangeException(
                'String must be 4 bytes or more; ' . self::strlen($string) . ' given.'
            );
        }
        /** @var array<int, int> $unpacked */
        $unpacked = unpack('V', $string);
        return (int) $unpacked[1];
    }

    /**
     * Load a 8 character substring into an integer
     *
     * @internal You should not use this directly from another application
     *
     * @param string $string
     * @return int
     * @throws RangeException
     * @throws SodiumException
     * @throws TypeError
     */
    public static function load64_le($string)
    {
        /* Type checks: */
        if (!is_string($string)) {
            throw new TypeError('Argument 1 must be a string, ' . gettype($string) . ' given.');
        }

        /* Input validation: */
        if (self::strlen($string) < 4) {
            throw new RangeException(
                'String must be 4 bytes or more; ' . self::strlen($string) . ' given.'
            );
        }
        if (PHP_VERSION_ID >= 50603 && PHP_INT_SIZE === 8) {
            /** @var array<int, int> $unpacked */
            $unpacked = unpack('P', $string);
            return (int) $unpacked[1];
        }

        /** @var int $result */
        $result  = (self::chrToInt($string[0]) & 0xff);
        $result |= (self::chrToInt($string[1]) & 0xff) <<  8;
        $result |= (self::chrToInt($string[2]) & 0xff) << 16;
        $result |= (self::chrToInt($string[3]) & 0xff) << 24;
        $result |= (self::chrToInt($string[4]) & 0xff) << 32;
        $result |= (self::chrToInt($string[5]) & 0xff) << 40;
        $result |= (self::chrToInt($string[6]) & 0xff) << 48;
        $result |= (self::chrToInt($string[7]) & 0xff) << 56;
        return (int) $result;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $left
     * @param string $right
     * @return int
     * @throws SodiumException
     * @throws TypeError
     */
    public static function memcmp($left, $right)
    {
        if (self::hashEquals($left, $right)) {
            return 0;
        }
        return -1;
    }

    /**
     * Multiply two integers in constant-time
     *
     * Micro-architecture timing side-channels caused by how your CPU
     * implements multiplication are best prevented by never using the
     * multiplication operators and ensuring that our code always takes
     * the same number of operations to complete, regardless of the values
     * of $a and $b.
     *
     * @internal You should not use this directly from another application
     *
     * @param int $a
     * @param int $b
     * @param int $size Limits the number of operations (useful for small,
     *                  constant operands)
     * @return int
     */
    public static function mul($a, $b, $size = 0)
    {
        if (ParagonIE_Sodium_Compat::$fastMult) {
            return (int) ($a * $b);
        }

        static $defaultSize = null;
        /** @var int $defaultSize */
        if (!$defaultSize) {
            /** @var int $defaultSize */
            $defaultSize = (PHP_INT_SIZE << 3) - 1;
        }
        if ($size < 1) {
            /** @var int $size */
            $size = $defaultSize;
        }
        /** @var int $size */

        $c = 0;

        /**
         * Mask is either -1 or 0.
         *
         * -1 in binary looks like 0x1111 ... 1111
         *  0 in binary looks like 0x0000 ... 0000
         *
         * @var int
         */
        $mask = -(($b >> ((int) $defaultSize)) & 1);

        /**
         * Ensure $b is a positive integer, without creating
         * a branching side-channel
         *
         * @var int $b
         */
        $b = ($b & ~$mask) | ($mask & -$b);

        /**
         * Unless $size is provided:
         *
         * This loop always runs 32 times when PHP_INT_SIZE is 4.
         * This loop always runs 64 times when PHP_INT_SIZE is 8.
         */
        for ($i = $size; $i >= 0; --$i) {
            $c += (int) ($a & -($b & 1));
            $a <<= 1;
            $b >>= 1;
        }
        $c = (int) @($c & -1);

        /**
         * If $b was negative, we then apply the same value to $c here.
         * It doesn't matter much if $a was negative; the $c += above would
         * have produced a negative integer to begin with. But a negative $b
         * makes $b >>= 1 never return 0, so we would end up with incorrect
         * results.
         *
         * The end result is what we'd expect from integer multiplication.
         */
        return (int) (($c & ~$mask) | ($mask & -$c));
    }

    /**
     * Convert any arbitrary numbers into two 32-bit integers that represent
     * a 64-bit integer.
     *
     * @internal You should not use this directly from another application
     *
     * @param int|float $num
     * @return array<int, int>
     */
    public static function numericTo64BitInteger($num)
    {
        $high = 0;
        /** @var int $low */
        if (PHP_INT_SIZE === 4) {
            $low = (int) $num;
        } else {
            $low = $num & 0xffffffff;
        }

        if ((+(abs($num))) >= 1) {
            if ($num > 0) {
                /** @var int $high */
                $high = min((+(floor($num/4294967296))), 4294967295);
            } else {
                /** @var int $high */
                $high = ~~((+(ceil(($num - (+((~~($num)))))/4294967296))));
            }
        }
        return array((int) $high, (int) $low);
    }

    /**
     * Store a 24-bit integer into a string, treating it as big-endian.
     *
     * @internal You should not use this directly from another application
     *
     * @param int $int
     * @return string
     * @throws TypeError
     */
    public static function store_3($int)
    {
        /* Type checks: */
        if (!is_int($int)) {
            if (is_numeric($int)) {
                $int = (int) $int;
            } else {
                throw new TypeError('Argument 1 must be an integer, ' . gettype($int) . ' given.');
            }
        }
        /** @var string $packed */
        $packed = pack('N', $int);
        return self::substr($packed, 1, 3);
    }

    /**
     * Store a 32-bit integer into a string, treating it as little-endian.
     *
     * @internal You should not use this directly from another application
     *
     * @param int $int
     * @return string
     * @throws TypeError
     */
    public static function store32_le($int)
    {
        /* Type checks: */
        if (!is_int($int)) {
            if (is_numeric($int)) {
                $int = (int) $int;
            } else {
                throw new TypeError('Argument 1 must be an integer, ' . gettype($int) . ' given.');
            }
        }

        /** @var string $packed */
        $packed = pack('V', $int);
        return $packed;
    }

    /**
     * Store a 32-bit integer into a string, treating it as big-endian.
     *
     * @internal You should not use this directly from another application
     *
     * @param int $int
     * @return string
     * @throws TypeError
     */
    public static function store_4($int)
    {
        /* Type checks: */
        if (!is_int($int)) {
            if (is_numeric($int)) {
                $int = (int) $int;
            } else {
                throw new TypeError('Argument 1 must be an integer, ' . gettype($int) . ' given.');
            }
        }

        /** @var string $packed */
        $packed = pack('N', $int);
        return $packed;
    }

    /**
     * Stores a 64-bit integer as an string, treating it as little-endian.
     *
     * @internal You should not use this directly from another application
     *
     * @param int $int
     * @return string
     * @throws TypeError
     */
    public static function store64_le($int)
    {
        /* Type checks: */
        if (!is_int($int)) {
            if (is_numeric($int)) {
                $int = (int) $int;
            } else {
                throw new TypeError('Argument 1 must be an integer, ' . gettype($int) . ' given.');
            }
        }

        if (PHP_INT_SIZE === 8) {
            if (PHP_VERSION_ID >= 50603) {
                /** @var string $packed */
                $packed = pack('P', $int);
                return $packed;
            }
            return self::intToChr($int & 0xff) .
                self::intToChr(($int >>  8) & 0xff) .
                self::intToChr(($int >> 16) & 0xff) .
                self::intToChr(($int >> 24) & 0xff) .
                self::intToChr(($int >> 32) & 0xff) .
                self::intToChr(($int >> 40) & 0xff) .
                self::intToChr(($int >> 48) & 0xff) .
                self::intToChr(($int >> 56) & 0xff);
        }
        if ($int > PHP_INT_MAX) {
            list($hiB, $int) = self::numericTo64BitInteger($int);
        } else {
            $hiB = 0;
        }
        return
            self::intToChr(($int      ) & 0xff) .
            self::intToChr(($int >>  8) & 0xff) .
            self::intToChr(($int >> 16) & 0xff) .
            self::intToChr(($int >> 24) & 0xff) .
            self::intToChr($hiB & 0xff) .
            self::intToChr(($hiB >>  8) & 0xff) .
            self::intToChr(($hiB >> 16) & 0xff) .
            self::intToChr(($hiB >> 24) & 0xff);
    }

    /**
     * Safe string length
     *
     * @internal You should not use this directly from another application
     *
     * @ref mbstring.func_overload
     *
     * @param string $str
     * @return int
     * @throws TypeError
     */
    public static function strlen($str)
    {
        /* Type checks: */
        if (!is_string($str)) {
            throw new TypeError('String expected');
        }

        return (int) (
        self::isMbStringOverride()
            ? mb_strlen($str, '8bit')
            : strlen($str)
        );
    }

    /**
     * Turn a string into an array of integers
     *
     * @internal You should not use this directly from another application
     *
     * @param string $string
     * @return array<int, int>
     * @throws TypeError
     */
    public static function stringToIntArray($string)
    {
        if (!is_string($string)) {
            throw new TypeError('String expected');
        }
        /**
         * @var array<int, int>
         */
        $values = array_values(
            unpack('C*', $string)
        );
        return $values;
    }

    /**
     * Safe substring
     *
     * @internal You should not use this directly from another application
     *
     * @ref mbstring.func_overload
     *
     * @param string $str
     * @param int $start
     * @param int $length
     * @return string
     * @throws TypeError
     */
    public static function substr($str, $start = 0, $length = null)
    {
        /* Type checks: */
        if (!is_string($str)) {
            throw new TypeError('String expected');
        }

        if ($length === 0) {
            return '';
        }

        if (self::isMbStringOverride()) {
            if (PHP_VERSION_ID < 50400 && $length === null) {
                $length = self::strlen($str);
            }
            $sub = (string) mb_substr($str, $start, $length, '8bit');
        } elseif ($length === null) {
            $sub = (string) substr($str, $start);
        } else {
            $sub = (string) substr($str, $start, $length);
        }
        if ($sub !== '') {
            return $sub;
        }
        return '';
    }

    /**
     * Compare a 16-character byte string in constant time.
     *
     * @internal You should not use this directly from another application
     *
     * @param string $a
     * @param string $b
     * @return bool
     * @throws SodiumException
     * @throws TypeError
     */
    public static function verify_16($a, $b)
    {
        /* Type checks: */
        if (!is_string($a)) {
            throw new TypeError('String expected');
        }
        if (!is_string($b)) {
            throw new TypeError('String expected');
        }
        return self::hashEquals(
            self::substr($a, 0, 16),
            self::substr($b, 0, 16)
        );
    }

    /**
     * Compare a 32-character byte string in constant time.
     *
     * @internal You should not use this directly from another application
     *
     * @param string $a
     * @param string $b
     * @return bool
     * @throws SodiumException
     * @throws TypeError
     */
    public static function verify_32($a, $b)
    {
        /* Type checks: */
        if (!is_string($a)) {
            throw new TypeError('String expected');
        }
        if (!is_string($b)) {
            throw new TypeError('String expected');
        }
        return self::hashEquals(
            self::substr($a, 0, 32),
            self::substr($b, 0, 32)
        );
    }

    /**
     * Calculate $a ^ $b for two strings.
     *
     * @internal You should not use this directly from another application
     *
     * @param string $a
     * @param string $b
     * @return string
     * @throws TypeError
     */
    public static function xorStrings($a, $b)
    {
        /* Type checks: */
        if (!is_string($a)) {
            throw new TypeError('Argument 1 must be a string');
        }
        if (!is_string($b)) {
            throw new TypeError('Argument 2 must be a string');
        }

        return (string) ($a ^ $b);
    }

    /**
     * Returns whether or not mbstring.func_overload is in effect.
     *
     * @internal You should not use this directly from another application
     *
     * Note: MB_OVERLOAD_STRING === 2, but we don't reference the constant
     * (for nuisance-free PHP 8 support)
     *
     * @return bool
     */
    protected static function isMbStringOverride()
    {
        static $mbstring = null;

        if ($mbstring === null) {
            if (!defined('MB_OVERLOAD_STRING')) {
                $mbstring = false;
                return $mbstring;
            }
            $mbstring = extension_loaded('mbstring')
                && defined('MB_OVERLOAD_STRING')
                &&
            ((int) (ini_get('mbstring.func_overload')) & 2);
            // MB_OVERLOAD_STRING === 2
        }
        /** @var bool $mbstring */

        return $mbstring;
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core/SipHash.php000064400000020144150755146460017736 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Core_SipHash', false)) {
    return;
}

/**
 * Class ParagonIE_SodiumCompat_Core_SipHash
 *
 * Only uses 32-bit arithmetic, while the original SipHash used 64-bit integers
 */
class ParagonIE_Sodium_Core_SipHash extends ParagonIE_Sodium_Core_Util
{
    /**
     * @internal You should not use this directly from another application
     *
     * @param int[] $v
     * @return int[]
     *
     */
    public static function sipRound(array $v)
    {
        # v0 += v1;
        list($v[0], $v[1]) = self::add(
            array($v[0], $v[1]),
            array($v[2], $v[3])
        );

        #  v1=ROTL(v1,13);
        list($v[2], $v[3]) = self::rotl_64((int) $v[2], (int) $v[3], 13);

        #  v1 ^= v0;
        $v[2] = (int) $v[2] ^ (int) $v[0];
        $v[3] = (int) $v[3] ^ (int) $v[1];

        #  v0=ROTL(v0,32);
        list($v[0], $v[1]) = self::rotl_64((int) $v[0], (int) $v[1], 32);

        # v2 += v3;
        list($v[4], $v[5]) = self::add(
            array((int) $v[4], (int) $v[5]),
            array((int) $v[6], (int) $v[7])
        );

        # v3=ROTL(v3,16);
        list($v[6], $v[7]) = self::rotl_64((int) $v[6], (int) $v[7], 16);

        #  v3 ^= v2;
        $v[6] = (int) $v[6] ^ (int) $v[4];
        $v[7] = (int) $v[7] ^ (int) $v[5];

        # v0 += v3;
        list($v[0], $v[1]) = self::add(
            array((int) $v[0], (int) $v[1]),
            array((int) $v[6], (int) $v[7])
        );

        # v3=ROTL(v3,21);
        list($v[6], $v[7]) = self::rotl_64((int) $v[6], (int) $v[7], 21);

        # v3 ^= v0;
        $v[6] = (int) $v[6] ^ (int) $v[0];
        $v[7] = (int) $v[7] ^ (int) $v[1];

        # v2 += v1;
        list($v[4], $v[5]) = self::add(
            array((int) $v[4], (int) $v[5]),
            array((int) $v[2], (int) $v[3])
        );

        # v1=ROTL(v1,17);
        list($v[2], $v[3]) = self::rotl_64((int) $v[2], (int) $v[3], 17);

        #  v1 ^= v2;;
        $v[2] = (int) $v[2] ^ (int) $v[4];
        $v[3] = (int) $v[3] ^ (int) $v[5];

        # v2=ROTL(v2,32)
        list($v[4], $v[5]) = self::rotl_64((int) $v[4], (int) $v[5], 32);

        return $v;
    }

    /**
     * Add two 32 bit integers representing a 64-bit integer.
     *
     * @internal You should not use this directly from another application
     *
     * @param int[] $a
     * @param int[] $b
     * @return array<int, mixed>
     */
    public static function add(array $a, array $b)
    {
        /** @var int $x1 */
        $x1 = $a[1] + $b[1];
        /** @var int $c */
        $c = $x1 >> 32; // Carry if ($a + $b) > 0xffffffff
        /** @var int $x0 */
        $x0 = $a[0] + $b[0] + $c;
        return array(
            $x0 & 0xffffffff,
            $x1 & 0xffffffff
        );
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param int $int0
     * @param int $int1
     * @param int $c
     * @return array<int, mixed>
     */
    public static function rotl_64($int0, $int1, $c)
    {
        $int0 &= 0xffffffff;
        $int1 &= 0xffffffff;
        $c &= 63;
        if ($c === 32) {
            return array($int1, $int0);
        }
        if ($c > 31) {
            $tmp = $int1;
            $int1 = $int0;
            $int0 = $tmp;
            $c &= 31;
        }
        if ($c === 0) {
            return array($int0, $int1);
        }
        return array(
            0xffffffff & (
                ($int0 << $c)
                    |
                ($int1 >> (32 - $c))
            ),
            0xffffffff & (
                ($int1 << $c)
                    |
                ($int0 >> (32 - $c))
            ),
        );
    }

    /**
     * Implements Siphash-2-4 using only 32-bit numbers.
     *
     * When we split an int into two, the higher bits go to the lower index.
     * e.g. 0xDEADBEEFAB10C92D becomes [
     *     0 => 0xDEADBEEF,
     *     1 => 0xAB10C92D
     * ].
     *
     * @internal You should not use this directly from another application
     *
     * @param string $in
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function sipHash24($in, $key)
    {
        $inlen = self::strlen($in);

        # /* "somepseudorandomlygeneratedbytes" */
        # u64 v0 = 0x736f6d6570736575ULL;
        # u64 v1 = 0x646f72616e646f6dULL;
        # u64 v2 = 0x6c7967656e657261ULL;
        # u64 v3 = 0x7465646279746573ULL;
        $v = array(
            0x736f6d65, // 0
            0x70736575, // 1
            0x646f7261, // 2
            0x6e646f6d, // 3
            0x6c796765, // 4
            0x6e657261, // 5
            0x74656462, // 6
            0x79746573  // 7
        );
        // v0 => $v[0], $v[1]
        // v1 => $v[2], $v[3]
        // v2 => $v[4], $v[5]
        // v3 => $v[6], $v[7]

        # u64 k0 = LOAD64_LE( k );
        # u64 k1 = LOAD64_LE( k + 8 );
        $k = array(
            self::load_4(self::substr($key, 4, 4)),
            self::load_4(self::substr($key, 0, 4)),
            self::load_4(self::substr($key, 12, 4)),
            self::load_4(self::substr($key, 8, 4))
        );
        // k0 => $k[0], $k[1]
        // k1 => $k[2], $k[3]

        # b = ( ( u64 )inlen ) << 56;
        $b = array(
            $inlen << 24,
            0
        );
        // See docblock for why the 0th index gets the higher bits.

        # v3 ^= k1;
        $v[6] ^= $k[2];
        $v[7] ^= $k[3];
        # v2 ^= k0;
        $v[4] ^= $k[0];
        $v[5] ^= $k[1];
        # v1 ^= k1;
        $v[2] ^= $k[2];
        $v[3] ^= $k[3];
        # v0 ^= k0;
        $v[0] ^= $k[0];
        $v[1] ^= $k[1];

        $left = $inlen;
        # for ( ; in != end; in += 8 )
        while ($left >= 8) {
            # m = LOAD64_LE( in );
            $m = array(
                self::load_4(self::substr($in, 4, 4)),
                self::load_4(self::substr($in, 0, 4))
            );

            # v3 ^= m;
            $v[6] ^= $m[0];
            $v[7] ^= $m[1];

            # SIPROUND;
            # SIPROUND;
            $v = self::sipRound($v);
            $v = self::sipRound($v);

            # v0 ^= m;
            $v[0] ^= $m[0];
            $v[1] ^= $m[1];

            $in = self::substr($in, 8);
            $left -= 8;
        }

        # switch( left )
        #  {
        #     case 7: b |= ( ( u64 )in[ 6] )  << 48;
        #     case 6: b |= ( ( u64 )in[ 5] )  << 40;
        #     case 5: b |= ( ( u64 )in[ 4] )  << 32;
        #     case 4: b |= ( ( u64 )in[ 3] )  << 24;
        #     case 3: b |= ( ( u64 )in[ 2] )  << 16;
        #     case 2: b |= ( ( u64 )in[ 1] )  <<  8;
        #     case 1: b |= ( ( u64 )in[ 0] ); break;
        #     case 0: break;
        # }
        switch ($left) {
            case 7:
                $b[0] |= self::chrToInt($in[6]) << 16;
            case 6:
                $b[0] |= self::chrToInt($in[5]) << 8;
            case 5:
                $b[0] |= self::chrToInt($in[4]);
            case 4:
                $b[1] |= self::chrToInt($in[3]) << 24;
            case 3:
                $b[1] |= self::chrToInt($in[2]) << 16;
            case 2:
                $b[1] |= self::chrToInt($in[1]) << 8;
            case 1:
                $b[1] |= self::chrToInt($in[0]);
            case 0:
                break;
        }
        // See docblock for why the 0th index gets the higher bits.

        # v3 ^= b;
        $v[6] ^= $b[0];
        $v[7] ^= $b[1];

        # SIPROUND;
        # SIPROUND;
        $v = self::sipRound($v);
        $v = self::sipRound($v);

        # v0 ^= b;
        $v[0] ^= $b[0];
        $v[1] ^= $b[1];

        // Flip the lower 8 bits of v2 which is ($v[4], $v[5]) in our implementation
        # v2 ^= 0xff;
        $v[5] ^= 0xff;

        # SIPROUND;
        # SIPROUND;
        # SIPROUND;
        # SIPROUND;
        $v = self::sipRound($v);
        $v = self::sipRound($v);
        $v = self::sipRound($v);
        $v = self::sipRound($v);

        # b = v0 ^ v1 ^ v2 ^ v3;
        # STORE64_LE( out, b );
        return  self::store32_le($v[1] ^ $v[3] ^ $v[5] ^ $v[7]) .
            self::store32_le($v[0] ^ $v[2] ^ $v[4] ^ $v[6]);
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core/HSalsa20.php000064400000007224150755146460017720 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Core_HSalsa20', false)) {
    return;
}

/**
 * Class ParagonIE_Sodium_Core_HSalsa20
 */
abstract class ParagonIE_Sodium_Core_HSalsa20 extends ParagonIE_Sodium_Core_Salsa20
{
    /**
     * Calculate an hsalsa20 hash of a single block
     *
     * HSalsa20 doesn't have a counter and will never be used for more than
     * one block (used to derive a subkey for xsalsa20).
     *
     * @internal You should not use this directly from another application
     *
     * @param string $in
     * @param string $k
     * @param string|null $c
     * @return string
     * @throws TypeError
     */
    public static function hsalsa20($in, $k, $c = null)
    {
        if ($c === null) {
            $x0  = 0x61707865;
            $x5  = 0x3320646e;
            $x10 = 0x79622d32;
            $x15 = 0x6b206574;
        } else {
            $x0  = self::load_4(self::substr($c, 0, 4));
            $x5  = self::load_4(self::substr($c, 4, 4));
            $x10 = self::load_4(self::substr($c, 8, 4));
            $x15 = self::load_4(self::substr($c, 12, 4));
        }
        $x1  = self::load_4(self::substr($k, 0, 4));
        $x2  = self::load_4(self::substr($k, 4, 4));
        $x3  = self::load_4(self::substr($k, 8, 4));
        $x4  = self::load_4(self::substr($k, 12, 4));
        $x11 = self::load_4(self::substr($k, 16, 4));
        $x12 = self::load_4(self::substr($k, 20, 4));
        $x13 = self::load_4(self::substr($k, 24, 4));
        $x14 = self::load_4(self::substr($k, 28, 4));
        $x6  = self::load_4(self::substr($in, 0, 4));
        $x7  = self::load_4(self::substr($in, 4, 4));
        $x8  = self::load_4(self::substr($in, 8, 4));
        $x9  = self::load_4(self::substr($in, 12, 4));

        for ($i = self::ROUNDS; $i > 0; $i -= 2) {
            $x4 ^= self::rotate($x0 + $x12, 7);
            $x8 ^= self::rotate($x4 + $x0, 9);
            $x12 ^= self::rotate($x8 + $x4, 13);
            $x0 ^= self::rotate($x12 + $x8, 18);
            $x9 ^= self::rotate($x5 + $x1, 7);
            $x13 ^= self::rotate($x9 + $x5, 9);
            $x1 ^= self::rotate($x13 + $x9, 13);
            $x5 ^= self::rotate($x1 + $x13, 18);
            $x14 ^= self::rotate($x10 + $x6, 7);
            $x2 ^= self::rotate($x14 + $x10, 9);
            $x6 ^= self::rotate($x2 + $x14, 13);
            $x10 ^= self::rotate($x6 + $x2, 18);
            $x3 ^= self::rotate($x15 + $x11, 7);
            $x7 ^= self::rotate($x3 + $x15, 9);
            $x11 ^= self::rotate($x7 + $x3, 13);
            $x15 ^= self::rotate($x11 + $x7, 18);
            $x1 ^= self::rotate($x0 + $x3, 7);
            $x2 ^= self::rotate($x1 + $x0, 9);
            $x3 ^= self::rotate($x2 + $x1, 13);
            $x0 ^= self::rotate($x3 + $x2, 18);
            $x6 ^= self::rotate($x5 + $x4, 7);
            $x7 ^= self::rotate($x6 + $x5, 9);
            $x4 ^= self::rotate($x7 + $x6, 13);
            $x5 ^= self::rotate($x4 + $x7, 18);
            $x11 ^= self::rotate($x10 + $x9, 7);
            $x8 ^= self::rotate($x11 + $x10, 9);
            $x9 ^= self::rotate($x8 + $x11, 13);
            $x10 ^= self::rotate($x9 + $x8, 18);
            $x12 ^= self::rotate($x15 + $x14, 7);
            $x13 ^= self::rotate($x12 + $x15, 9);
            $x14 ^= self::rotate($x13 + $x12, 13);
            $x15 ^= self::rotate($x14 + $x13, 18);
        }

        return self::store32_le($x0) .
            self::store32_le($x5) .
            self::store32_le($x10) .
            self::store32_le($x15) .
            self::store32_le($x6) .
            self::store32_le($x7) .
            self::store32_le($x8) .
            self::store32_le($x9);
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core/ChaCha20.php000064400000031301150755146460017645 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Core_ChaCha20', false)) {
    return;
}

/**
 * Class ParagonIE_Sodium_Core_ChaCha20
 */
class ParagonIE_Sodium_Core_ChaCha20 extends ParagonIE_Sodium_Core_Util
{
    /**
     * Bitwise left rotation
     *
     * @internal You should not use this directly from another application
     *
     * @param int $v
     * @param int $n
     * @return int
     */
    public static function rotate($v, $n)
    {
        $v &= 0xffffffff;
        $n &= 31;
        return (int) (
            0xffffffff & (
                ($v << $n)
                    |
                ($v >> (32 - $n))
            )
        );
    }

    /**
     * The ChaCha20 quarter round function. Works on four 32-bit integers.
     *
     * @internal You should not use this directly from another application
     *
     * @param int $a
     * @param int $b
     * @param int $c
     * @param int $d
     * @return array<int, int>
     */
    protected static function quarterRound($a, $b, $c, $d)
    {
        # a = PLUS(a,b); d = ROTATE(XOR(d,a),16);
        /** @var int $a */
        $a = ($a + $b) & 0xffffffff;
        $d = self::rotate($d ^ $a, 16);

        # c = PLUS(c,d); b = ROTATE(XOR(b,c),12);
        /** @var int $c */
        $c = ($c + $d) & 0xffffffff;
        $b = self::rotate($b ^ $c, 12);

        # a = PLUS(a,b); d = ROTATE(XOR(d,a), 8);
        /** @var int $a */
        $a = ($a + $b) & 0xffffffff;
        $d = self::rotate($d ^ $a, 8);

        # c = PLUS(c,d); b = ROTATE(XOR(b,c), 7);
        /** @var int $c */
        $c = ($c + $d) & 0xffffffff;
        $b = self::rotate($b ^ $c, 7);
        return array((int) $a, (int) $b, (int) $c, (int) $d);
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core_ChaCha20_Ctx $ctx
     * @param string $message
     *
     * @return string
     * @throws TypeError
     * @throws SodiumException
     */
    public static function encryptBytes(
        ParagonIE_Sodium_Core_ChaCha20_Ctx $ctx,
        $message = ''
    ) {
        $bytes = self::strlen($message);

        /*
        j0 = ctx->input[0];
        j1 = ctx->input[1];
        j2 = ctx->input[2];
        j3 = ctx->input[3];
        j4 = ctx->input[4];
        j5 = ctx->input[5];
        j6 = ctx->input[6];
        j7 = ctx->input[7];
        j8 = ctx->input[8];
        j9 = ctx->input[9];
        j10 = ctx->input[10];
        j11 = ctx->input[11];
        j12 = ctx->input[12];
        j13 = ctx->input[13];
        j14 = ctx->input[14];
        j15 = ctx->input[15];
        */
        $j0  = (int) $ctx[0];
        $j1  = (int) $ctx[1];
        $j2  = (int) $ctx[2];
        $j3  = (int) $ctx[3];
        $j4  = (int) $ctx[4];
        $j5  = (int) $ctx[5];
        $j6  = (int) $ctx[6];
        $j7  = (int) $ctx[7];
        $j8  = (int) $ctx[8];
        $j9  = (int) $ctx[9];
        $j10 = (int) $ctx[10];
        $j11 = (int) $ctx[11];
        $j12 = (int) $ctx[12];
        $j13 = (int) $ctx[13];
        $j14 = (int) $ctx[14];
        $j15 = (int) $ctx[15];

        $c = '';
        for (;;) {
            if ($bytes < 64) {
                $message .= str_repeat("\x00", 64 - $bytes);
            }

            $x0 =  (int) $j0;
            $x1 =  (int) $j1;
            $x2 =  (int) $j2;
            $x3 =  (int) $j3;
            $x4 =  (int) $j4;
            $x5 =  (int) $j5;
            $x6 =  (int) $j6;
            $x7 =  (int) $j7;
            $x8 =  (int) $j8;
            $x9 =  (int) $j9;
            $x10 = (int) $j10;
            $x11 = (int) $j11;
            $x12 = (int) $j12;
            $x13 = (int) $j13;
            $x14 = (int) $j14;
            $x15 = (int) $j15;

            # for (i = 20; i > 0; i -= 2) {
            for ($i = 20; $i > 0; $i -= 2) {
                # QUARTERROUND( x0,  x4,  x8,  x12)
                list($x0, $x4, $x8, $x12) = self::quarterRound($x0, $x4, $x8, $x12);

                # QUARTERROUND( x1,  x5,  x9,  x13)
                list($x1, $x5, $x9, $x13) = self::quarterRound($x1, $x5, $x9, $x13);

                # QUARTERROUND( x2,  x6,  x10,  x14)
                list($x2, $x6, $x10, $x14) = self::quarterRound($x2, $x6, $x10, $x14);

                # QUARTERROUND( x3,  x7,  x11,  x15)
                list($x3, $x7, $x11, $x15) = self::quarterRound($x3, $x7, $x11, $x15);

                # QUARTERROUND( x0,  x5,  x10,  x15)
                list($x0, $x5, $x10, $x15) = self::quarterRound($x0, $x5, $x10, $x15);

                # QUARTERROUND( x1,  x6,  x11,  x12)
                list($x1, $x6, $x11, $x12) = self::quarterRound($x1, $x6, $x11, $x12);

                # QUARTERROUND( x2,  x7,  x8,  x13)
                list($x2, $x7, $x8, $x13) = self::quarterRound($x2, $x7, $x8, $x13);

                # QUARTERROUND( x3,  x4,  x9,  x14)
                list($x3, $x4, $x9, $x14) = self::quarterRound($x3, $x4, $x9, $x14);
            }
            /*
            x0 = PLUS(x0, j0);
            x1 = PLUS(x1, j1);
            x2 = PLUS(x2, j2);
            x3 = PLUS(x3, j3);
            x4 = PLUS(x4, j4);
            x5 = PLUS(x5, j5);
            x6 = PLUS(x6, j6);
            x7 = PLUS(x7, j7);
            x8 = PLUS(x8, j8);
            x9 = PLUS(x9, j9);
            x10 = PLUS(x10, j10);
            x11 = PLUS(x11, j11);
            x12 = PLUS(x12, j12);
            x13 = PLUS(x13, j13);
            x14 = PLUS(x14, j14);
            x15 = PLUS(x15, j15);
            */
            /** @var int $x0 */
            $x0  = ($x0 & 0xffffffff) + $j0;
            /** @var int $x1 */
            $x1  = ($x1 & 0xffffffff) + $j1;
            /** @var int $x2 */
            $x2  = ($x2 & 0xffffffff) + $j2;
            /** @var int $x3 */
            $x3  = ($x3 & 0xffffffff) + $j3;
            /** @var int $x4 */
            $x4  = ($x4 & 0xffffffff) + $j4;
            /** @var int $x5 */
            $x5  = ($x5 & 0xffffffff) + $j5;
            /** @var int $x6 */
            $x6  = ($x6 & 0xffffffff) + $j6;
            /** @var int $x7 */
            $x7  = ($x7 & 0xffffffff) + $j7;
            /** @var int $x8 */
            $x8  = ($x8 & 0xffffffff) + $j8;
            /** @var int $x9 */
            $x9  = ($x9 & 0xffffffff) + $j9;
            /** @var int $x10 */
            $x10 = ($x10 & 0xffffffff) + $j10;
            /** @var int $x11 */
            $x11 = ($x11 & 0xffffffff) + $j11;
            /** @var int $x12 */
            $x12 = ($x12 & 0xffffffff) + $j12;
            /** @var int $x13 */
            $x13 = ($x13 & 0xffffffff) + $j13;
            /** @var int $x14 */
            $x14 = ($x14 & 0xffffffff) + $j14;
            /** @var int $x15 */
            $x15 = ($x15 & 0xffffffff) + $j15;

            /*
            x0 = XOR(x0, LOAD32_LE(m + 0));
            x1 = XOR(x1, LOAD32_LE(m + 4));
            x2 = XOR(x2, LOAD32_LE(m + 8));
            x3 = XOR(x3, LOAD32_LE(m + 12));
            x4 = XOR(x4, LOAD32_LE(m + 16));
            x5 = XOR(x5, LOAD32_LE(m + 20));
            x6 = XOR(x6, LOAD32_LE(m + 24));
            x7 = XOR(x7, LOAD32_LE(m + 28));
            x8 = XOR(x8, LOAD32_LE(m + 32));
            x9 = XOR(x9, LOAD32_LE(m + 36));
            x10 = XOR(x10, LOAD32_LE(m + 40));
            x11 = XOR(x11, LOAD32_LE(m + 44));
            x12 = XOR(x12, LOAD32_LE(m + 48));
            x13 = XOR(x13, LOAD32_LE(m + 52));
            x14 = XOR(x14, LOAD32_LE(m + 56));
            x15 = XOR(x15, LOAD32_LE(m + 60));
            */
            $x0  ^= self::load_4(self::substr($message, 0, 4));
            $x1  ^= self::load_4(self::substr($message, 4, 4));
            $x2  ^= self::load_4(self::substr($message, 8, 4));
            $x3  ^= self::load_4(self::substr($message, 12, 4));
            $x4  ^= self::load_4(self::substr($message, 16, 4));
            $x5  ^= self::load_4(self::substr($message, 20, 4));
            $x6  ^= self::load_4(self::substr($message, 24, 4));
            $x7  ^= self::load_4(self::substr($message, 28, 4));
            $x8  ^= self::load_4(self::substr($message, 32, 4));
            $x9  ^= self::load_4(self::substr($message, 36, 4));
            $x10 ^= self::load_4(self::substr($message, 40, 4));
            $x11 ^= self::load_4(self::substr($message, 44, 4));
            $x12 ^= self::load_4(self::substr($message, 48, 4));
            $x13 ^= self::load_4(self::substr($message, 52, 4));
            $x14 ^= self::load_4(self::substr($message, 56, 4));
            $x15 ^= self::load_4(self::substr($message, 60, 4));

            /*
                j12 = PLUSONE(j12);
                if (!j12) {
                    j13 = PLUSONE(j13);
                }
             */
            ++$j12;
            if ($j12 & 0xf0000000) {
                throw new SodiumException('Overflow');
            }

            /*
            STORE32_LE(c + 0, x0);
            STORE32_LE(c + 4, x1);
            STORE32_LE(c + 8, x2);
            STORE32_LE(c + 12, x3);
            STORE32_LE(c + 16, x4);
            STORE32_LE(c + 20, x5);
            STORE32_LE(c + 24, x6);
            STORE32_LE(c + 28, x7);
            STORE32_LE(c + 32, x8);
            STORE32_LE(c + 36, x9);
            STORE32_LE(c + 40, x10);
            STORE32_LE(c + 44, x11);
            STORE32_LE(c + 48, x12);
            STORE32_LE(c + 52, x13);
            STORE32_LE(c + 56, x14);
            STORE32_LE(c + 60, x15);
            */
            $block = self::store32_le((int) ($x0  & 0xffffffff)) .
                 self::store32_le((int) ($x1  & 0xffffffff)) .
                 self::store32_le((int) ($x2  & 0xffffffff)) .
                 self::store32_le((int) ($x3  & 0xffffffff)) .
                 self::store32_le((int) ($x4  & 0xffffffff)) .
                 self::store32_le((int) ($x5  & 0xffffffff)) .
                 self::store32_le((int) ($x6  & 0xffffffff)) .
                 self::store32_le((int) ($x7  & 0xffffffff)) .
                 self::store32_le((int) ($x8  & 0xffffffff)) .
                 self::store32_le((int) ($x9  & 0xffffffff)) .
                 self::store32_le((int) ($x10 & 0xffffffff)) .
                 self::store32_le((int) ($x11 & 0xffffffff)) .
                 self::store32_le((int) ($x12 & 0xffffffff)) .
                 self::store32_le((int) ($x13 & 0xffffffff)) .
                 self::store32_le((int) ($x14 & 0xffffffff)) .
                 self::store32_le((int) ($x15 & 0xffffffff));

            /* Partial block */
            if ($bytes < 64) {
                $c .= self::substr($block, 0, $bytes);
                break;
            }

            /* Full block */
            $c .= $block;
            $bytes -= 64;
            if ($bytes <= 0) {
                break;
            }
            $message = self::substr($message, 64);
        }
        /* end for(;;) loop */

        $ctx[12] = $j12;
        $ctx[13] = $j13;
        return $c;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param int $len
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function stream($len = 64, $nonce = '', $key = '')
    {
        return self::encryptBytes(
            new ParagonIE_Sodium_Core_ChaCha20_Ctx($key, $nonce),
            str_repeat("\x00", $len)
        );
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param int $len
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function ietfStream($len, $nonce = '', $key = '')
    {
        return self::encryptBytes(
            new ParagonIE_Sodium_Core_ChaCha20_IetfCtx($key, $nonce),
            str_repeat("\x00", $len)
        );
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $message
     * @param string $nonce
     * @param string $key
     * @param string $ic
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function ietfStreamXorIc($message, $nonce = '', $key = '', $ic = '')
    {
        return self::encryptBytes(
            new ParagonIE_Sodium_Core_ChaCha20_IetfCtx($key, $nonce, $ic),
            $message
        );
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $message
     * @param string $nonce
     * @param string $key
     * @param string $ic
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function streamXorIc($message, $nonce = '', $key = '', $ic = '')
    {
        return self::encryptBytes(
            new ParagonIE_Sodium_Core_ChaCha20_Ctx($key, $nonce, $ic),
            $message
        );
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core/BLAKE2b.php000064400000057273150755146460017456 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Core_BLAKE2b', false)) {
    return;
}

/**
 * Class ParagonIE_Sodium_Core_BLAKE2b
 *
 * Based on the work of Devi Mandiri in devi/salt.
 */
abstract class ParagonIE_Sodium_Core_BLAKE2b extends ParagonIE_Sodium_Core_Util
{
    /**
     * @var SplFixedArray
     */
    protected static $iv;

    /**
     * @var array<int, array<int, int>>
     */
    protected static $sigma = array(
        array(  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15),
        array( 14, 10,  4,  8,  9, 15, 13,  6,  1, 12,  0,  2, 11,  7,  5,  3),
        array( 11,  8, 12,  0,  5,  2, 15, 13, 10, 14,  3,  6,  7,  1,  9,  4),
        array(  7,  9,  3,  1, 13, 12, 11, 14,  2,  6,  5, 10,  4,  0, 15,  8),
        array(  9,  0,  5,  7,  2,  4, 10, 15, 14,  1, 11, 12,  6,  8,  3, 13),
        array(  2, 12,  6, 10,  0, 11,  8,  3,  4, 13,  7,  5, 15, 14,  1,  9),
        array( 12,  5,  1, 15, 14, 13,  4, 10,  0,  7,  6,  3,  9,  2,  8, 11),
        array( 13, 11,  7, 14, 12,  1,  3,  9,  5,  0, 15,  4,  8,  6,  2, 10),
        array(  6, 15, 14,  9, 11,  3,  0,  8, 12,  2, 13,  7,  1,  4, 10,  5),
        array( 10,  2,  8,  4,  7,  6,  1,  5, 15, 11,  9, 14,  3, 12, 13 , 0),
        array(  0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15),
        array( 14, 10,  4,  8,  9, 15, 13,  6,  1, 12,  0,  2, 11,  7,  5,  3)
    );

    const BLOCKBYTES = 128;
    const OUTBYTES   = 64;
    const KEYBYTES   = 64;

    /**
     * Turn two 32-bit integers into a fixed array representing a 64-bit integer.
     *
     * @internal You should not use this directly from another application
     *
     * @param int $high
     * @param int $low
     * @return SplFixedArray
     * @psalm-suppress MixedAssignment
     */
    public static function new64($high, $low)
    {
        if (PHP_INT_SIZE === 4) {
            throw new SodiumException("Error, use 32-bit");
        }
        $i64 = new SplFixedArray(2);
        $i64[0] = $high & 0xffffffff;
        $i64[1] = $low & 0xffffffff;
        return $i64;
    }

    /**
     * Convert an arbitrary number into an SplFixedArray of two 32-bit integers
     * that represents a 64-bit integer.
     *
     * @internal You should not use this directly from another application
     *
     * @param int $num
     * @return SplFixedArray
     */
    protected static function to64($num)
    {
        list($hi, $lo) = self::numericTo64BitInteger($num);
        return self::new64($hi, $lo);
    }

    /**
     * Adds two 64-bit integers together, returning their sum as a SplFixedArray
     * containing two 32-bit integers (representing a 64-bit integer).
     *
     * @internal You should not use this directly from another application
     *
     * @param SplFixedArray $x
     * @param SplFixedArray $y
     * @return SplFixedArray
     * @psalm-suppress MixedArgument
     * @psalm-suppress MixedAssignment
     * @psalm-suppress MixedOperand
     */
    protected static function add64($x, $y)
    {
        if (PHP_INT_SIZE === 4) {
            throw new SodiumException("Error, use 32-bit");
        }
        $l = ($x[1] + $y[1]) & 0xffffffff;
        return self::new64(
            (int) ($x[0] + $y[0] + (
                ($l < $x[1]) ? 1 : 0
            )),
            (int) $l
        );
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param SplFixedArray $x
     * @param SplFixedArray $y
     * @param SplFixedArray $z
     * @return SplFixedArray
     */
    protected static function add364($x, $y, $z)
    {
        return self::add64($x, self::add64($y, $z));
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param SplFixedArray $x
     * @param SplFixedArray $y
     * @return SplFixedArray
     * @throws SodiumException
     * @throws TypeError
     */
    protected static function xor64(SplFixedArray $x, SplFixedArray $y)
    {
        if (PHP_INT_SIZE === 4) {
            throw new SodiumException("Error, use 32-bit");
        }
        if (!is_numeric($x[0])) {
            throw new SodiumException('x[0] is not an integer');
        }
        if (!is_numeric($x[1])) {
            throw new SodiumException('x[1] is not an integer');
        }
        if (!is_numeric($y[0])) {
            throw new SodiumException('y[0] is not an integer');
        }
        if (!is_numeric($y[1])) {
            throw new SodiumException('y[1] is not an integer');
        }
        return self::new64(
            (int) (($x[0] ^ $y[0]) & 0xffffffff),
            (int) (($x[1] ^ $y[1]) & 0xffffffff)
        );
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param SplFixedArray $x
     * @param int $c
     * @return SplFixedArray
     * @psalm-suppress MixedAssignment
     */
    public static function rotr64($x, $c)
    {
        if (PHP_INT_SIZE === 4) {
            throw new SodiumException("Error, use 32-bit");
        }
        if ($c >= 64) {
            $c %= 64;
        }
        if ($c >= 32) {
            /** @var int $tmp */
            $tmp = $x[0];
            $x[0] = $x[1];
            $x[1] = $tmp;
            $c -= 32;
        }
        if ($c === 0) {
            return $x;
        }

        $l0 = 0;
        $c = 64 - $c;

        /** @var int $c */
        if ($c < 32) {
            $h0 = ((int) ($x[0]) << $c) | (
                (
                    (int) ($x[1]) & ((1 << $c) - 1)
                        <<
                    (32 - $c)
                ) >> (32 - $c)
            );
            $l0 = (int) ($x[1]) << $c;
        } else {
            $h0 = (int) ($x[1]) << ($c - 32);
        }

        $h1 = 0;
        $c1 = 64 - $c;

        if ($c1 < 32) {
            $h1 = (int) ($x[0]) >> $c1;
            $l1 = ((int) ($x[1]) >> $c1) | ((int) ($x[0]) & ((1 << $c1) - 1)) << (32 - $c1);
        } else {
            $l1 = (int) ($x[0]) >> ($c1 - 32);
        }

        return self::new64($h0 | $h1, $l0 | $l1);
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param SplFixedArray $x
     * @return int
     * @psalm-suppress MixedOperand
     */
    protected static function flatten64($x)
    {
        return (int) ($x[0] * 4294967296 + $x[1]);
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param SplFixedArray $x
     * @param int $i
     * @return SplFixedArray
     * @psalm-suppress MixedArgument
     * @psalm-suppress MixedArrayOffset
     */
    protected static function load64(SplFixedArray $x, $i)
    {
        /** @var int $l */
        $l = (int) ($x[$i])
             | ((int) ($x[$i+1]) << 8)
             | ((int) ($x[$i+2]) << 16)
             | ((int) ($x[$i+3]) << 24);
        /** @var int $h */
        $h = (int) ($x[$i+4])
             | ((int) ($x[$i+5]) << 8)
             | ((int) ($x[$i+6]) << 16)
             | ((int) ($x[$i+7]) << 24);
        return self::new64($h, $l);
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param SplFixedArray $x
     * @param int $i
     * @param SplFixedArray $u
     * @return void
     * @psalm-suppress MixedAssignment
     */
    protected static function store64(SplFixedArray $x, $i, SplFixedArray $u)
    {
        $maxLength = $x->getSize() - 1;
        for ($j = 0; $j < 8; ++$j) {
            /*
               [0, 1, 2, 3, 4, 5, 6, 7]
                    ... becomes ...
               [0, 0, 0, 0, 1, 1, 1, 1]
            */
            /** @var int $uIdx */
            $uIdx = ((7 - $j) & 4) >> 2;
            $x[$i]   = ((int) ($u[$uIdx]) & 0xff);
            if (++$i > $maxLength) {
                return;
            }
            /** @psalm-suppress MixedOperand */
            $u[$uIdx] >>= 8;
        }
    }

    /**
     * This just sets the $iv static variable.
     *
     * @internal You should not use this directly from another application
     *
     * @return void
     */
    public static function pseudoConstructor()
    {
        static $called = false;
        if ($called) {
            return;
        }
        self::$iv = new SplFixedArray(8);
        self::$iv[0] = self::new64(0x6a09e667, 0xf3bcc908);
        self::$iv[1] = self::new64(0xbb67ae85, 0x84caa73b);
        self::$iv[2] = self::new64(0x3c6ef372, 0xfe94f82b);
        self::$iv[3] = self::new64(0xa54ff53a, 0x5f1d36f1);
        self::$iv[4] = self::new64(0x510e527f, 0xade682d1);
        self::$iv[5] = self::new64(0x9b05688c, 0x2b3e6c1f);
        self::$iv[6] = self::new64(0x1f83d9ab, 0xfb41bd6b);
        self::$iv[7] = self::new64(0x5be0cd19, 0x137e2179);

        $called = true;
    }

    /**
     * Returns a fresh BLAKE2 context.
     *
     * @internal You should not use this directly from another application
     *
     * @return SplFixedArray
     * @psalm-suppress MixedAssignment
     * @psalm-suppress MixedArrayAccess
     * @psalm-suppress MixedArrayAssignment
     */
    protected static function context()
    {
        $ctx    = new SplFixedArray(6);
        $ctx[0] = new SplFixedArray(8);   // h
        $ctx[1] = new SplFixedArray(2);   // t
        $ctx[2] = new SplFixedArray(2);   // f
        $ctx[3] = new SplFixedArray(256); // buf
        $ctx[4] = 0;                      // buflen
        $ctx[5] = 0;                      // last_node (uint8_t)

        for ($i = 8; $i--;) {
            $ctx[0][$i] = self::$iv[$i];
        }
        for ($i = 256; $i--;) {
            $ctx[3][$i] = 0;
        }

        $zero = self::new64(0, 0);
        $ctx[1][0] = $zero;
        $ctx[1][1] = $zero;
        $ctx[2][0] = $zero;
        $ctx[2][1] = $zero;

        return $ctx;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param SplFixedArray $ctx
     * @param SplFixedArray $buf
     * @return void
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     * @psalm-suppress MixedAssignment
     * @psalm-suppress MixedArrayAccess
     * @psalm-suppress MixedArrayAssignment
     * @psalm-suppress MixedArrayOffset
     */
    protected static function compress(SplFixedArray $ctx, SplFixedArray $buf)
    {
        $m = new SplFixedArray(16);
        $v = new SplFixedArray(16);

        for ($i = 16; $i--;) {
            $m[$i] = self::load64($buf, $i << 3);
        }

        for ($i = 8; $i--;) {
            $v[$i] = $ctx[0][$i];
        }

        $v[ 8] = self::$iv[0];
        $v[ 9] = self::$iv[1];
        $v[10] = self::$iv[2];
        $v[11] = self::$iv[3];

        $v[12] = self::xor64($ctx[1][0], self::$iv[4]);
        $v[13] = self::xor64($ctx[1][1], self::$iv[5]);
        $v[14] = self::xor64($ctx[2][0], self::$iv[6]);
        $v[15] = self::xor64($ctx[2][1], self::$iv[7]);

        for ($r = 0; $r < 12; ++$r) {
            $v = self::G($r, 0, 0, 4, 8, 12, $v, $m);
            $v = self::G($r, 1, 1, 5, 9, 13, $v, $m);
            $v = self::G($r, 2, 2, 6, 10, 14, $v, $m);
            $v = self::G($r, 3, 3, 7, 11, 15, $v, $m);
            $v = self::G($r, 4, 0, 5, 10, 15, $v, $m);
            $v = self::G($r, 5, 1, 6, 11, 12, $v, $m);
            $v = self::G($r, 6, 2, 7, 8, 13, $v, $m);
            $v = self::G($r, 7, 3, 4, 9, 14, $v, $m);
        }

        for ($i = 8; $i--;) {
            $ctx[0][$i] = self::xor64(
                $ctx[0][$i], self::xor64($v[$i], $v[$i+8])
            );
        }
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param int $r
     * @param int $i
     * @param int $a
     * @param int $b
     * @param int $c
     * @param int $d
     * @param SplFixedArray $v
     * @param SplFixedArray $m
     * @return SplFixedArray
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     * @psalm-suppress MixedArrayOffset
     */
    public static function G($r, $i, $a, $b, $c, $d, SplFixedArray $v, SplFixedArray $m)
    {
        $v[$a] = self::add364($v[$a], $v[$b], $m[self::$sigma[$r][$i << 1]]);
        $v[$d] = self::rotr64(self::xor64($v[$d], $v[$a]), 32);
        $v[$c] = self::add64($v[$c], $v[$d]);
        $v[$b] = self::rotr64(self::xor64($v[$b], $v[$c]), 24);
        $v[$a] = self::add364($v[$a], $v[$b], $m[self::$sigma[$r][($i << 1) + 1]]);
        $v[$d] = self::rotr64(self::xor64($v[$d], $v[$a]), 16);
        $v[$c] = self::add64($v[$c], $v[$d]);
        $v[$b] = self::rotr64(self::xor64($v[$b], $v[$c]), 63);
        return $v;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param SplFixedArray $ctx
     * @param int $inc
     * @return void
     * @throws SodiumException
     * @psalm-suppress MixedArgument
     * @psalm-suppress MixedArrayAccess
     * @psalm-suppress MixedArrayAssignment
     */
    public static function increment_counter($ctx, $inc)
    {
        if ($inc < 0) {
            throw new SodiumException('Increasing by a negative number makes no sense.');
        }
        $t = self::to64($inc);
        # S->t is $ctx[1] in our implementation

        # S->t[0] = ( uint64_t )( t >> 0 );
        $ctx[1][0] = self::add64($ctx[1][0], $t);

        # S->t[1] += ( S->t[0] < inc );
        if (self::flatten64($ctx[1][0]) < $inc) {
            $ctx[1][1] = self::add64($ctx[1][1], self::to64(1));
        }
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param SplFixedArray $ctx
     * @param SplFixedArray $p
     * @param int $plen
     * @return void
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     * @psalm-suppress MixedAssignment
     * @psalm-suppress MixedArrayAccess
     * @psalm-suppress MixedArrayAssignment
     * @psalm-suppress MixedArrayOffset
     * @psalm-suppress MixedOperand
     */
    public static function update(SplFixedArray $ctx, SplFixedArray $p, $plen)
    {
        self::pseudoConstructor();

        $offset = 0;
        while ($plen > 0) {
            $left = $ctx[4];
            $fill = 256 - $left;

            if ($plen > $fill) {
                # memcpy( S->buf + left, in, fill ); /* Fill buffer */
                for ($i = $fill; $i--;) {
                    $ctx[3][$i + $left] = $p[$i + $offset];
                }

                # S->buflen += fill;
                $ctx[4] += $fill;

                # blake2b_increment_counter( S, BLAKE2B_BLOCKBYTES );
                self::increment_counter($ctx, 128);

                # blake2b_compress( S, S->buf ); /* Compress */
                self::compress($ctx, $ctx[3]);

                # memcpy( S->buf, S->buf + BLAKE2B_BLOCKBYTES, BLAKE2B_BLOCKBYTES ); /* Shift buffer left */
                for ($i = 128; $i--;) {
                    $ctx[3][$i] = $ctx[3][$i + 128];
                }

                # S->buflen -= BLAKE2B_BLOCKBYTES;
                $ctx[4] -= 128;

                # in += fill;
                $offset += $fill;

                # inlen -= fill;
                $plen -= $fill;
            } else {
                for ($i = $plen; $i--;) {
                    $ctx[3][$i + $left] = $p[$i + $offset];
                }
                $ctx[4] += $plen;
                $offset += $plen;
                $plen -= $plen;
            }
        }
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param SplFixedArray $ctx
     * @param SplFixedArray $out
     * @return SplFixedArray
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     * @psalm-suppress MixedAssignment
     * @psalm-suppress MixedArrayAccess
     * @psalm-suppress MixedArrayAssignment
     * @psalm-suppress MixedArrayOffset
     * @psalm-suppress MixedOperand
     */
    public static function finish(SplFixedArray $ctx, SplFixedArray $out)
    {
        self::pseudoConstructor();
        if ($ctx[4] > 128) {
            self::increment_counter($ctx, 128);
            self::compress($ctx, $ctx[3]);
            $ctx[4] -= 128;
            if ($ctx[4] > 128) {
                throw new SodiumException('Failed to assert that buflen <= 128 bytes');
            }
            for ($i = $ctx[4]; $i--;) {
                $ctx[3][$i] = $ctx[3][$i + 128];
            }
        }

        self::increment_counter($ctx, $ctx[4]);
        $ctx[2][0] = self::new64(0xffffffff, 0xffffffff);

        for ($i = 256 - $ctx[4]; $i--;) {
            $ctx[3][$i+$ctx[4]] = 0;
        }

        self::compress($ctx, $ctx[3]);

        $i = (int) (($out->getSize() - 1) / 8);
        for (; $i >= 0; --$i) {
            self::store64($out, $i << 3, $ctx[0][$i]);
        }
        return $out;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param SplFixedArray|null $key
     * @param int $outlen
     * @param SplFixedArray|null $salt
     * @param SplFixedArray|null $personal
     * @return SplFixedArray
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     * @psalm-suppress MixedAssignment
     * @psalm-suppress MixedArrayAccess
     * @psalm-suppress MixedArrayAssignment
     * @psalm-suppress MixedArrayOffset
     */
    public static function init(
        $key = null,
        $outlen = 64,
        $salt = null,
        $personal = null
    ) {
        self::pseudoConstructor();
        $klen = 0;

        if ($key !== null) {
            if (count($key) > 64) {
                throw new SodiumException('Invalid key size');
            }
            $klen = count($key);
        }

        if ($outlen > 64) {
            throw new SodiumException('Invalid output size');
        }

        $ctx = self::context();

        $p = new SplFixedArray(64);
        // Zero our param buffer...
        for ($i = 64; --$i;) {
            $p[$i] = 0;
        }

        $p[0] = $outlen; // digest_length
        $p[1] = $klen;   // key_length
        $p[2] = 1;       // fanout
        $p[3] = 1;       // depth

        if ($salt instanceof SplFixedArray) {
            // salt: [32] through [47]
            for ($i = 0; $i < 16; ++$i) {
                $p[32 + $i] = (int) $salt[$i];
            }
        }
        if ($personal instanceof SplFixedArray) {
            // personal: [48] through [63]
            for ($i = 0; $i < 16; ++$i) {
                $p[48 + $i] = (int) $personal[$i];
            }
        }

        $ctx[0][0] = self::xor64(
            $ctx[0][0],
            self::load64($p, 0)
        );
        if ($salt instanceof SplFixedArray || $personal instanceof SplFixedArray) {
            // We need to do what blake2b_init_param() does:
            for ($i = 1; $i < 8; ++$i) {
                $ctx[0][$i] = self::xor64(
                    $ctx[0][$i],
                    self::load64($p, $i << 3)
                );
            }
        }

        if ($klen > 0 && $key instanceof SplFixedArray) {
            $block = new SplFixedArray(128);
            for ($i = 128; $i--;) {
                $block[$i] = 0;
            }
            for ($i = $klen; $i--;) {
                $block[$i] = $key[$i];
            }
            self::update($ctx, $block, 128);
            $ctx[4] = 128;
        }

        return $ctx;
    }

    /**
     * Convert a string into an SplFixedArray of integers
     *
     * @internal You should not use this directly from another application
     *
     * @param string $str
     * @return SplFixedArray
     * @psalm-suppress MixedArgumentTypeCoercion
     */
    public static function stringToSplFixedArray($str = '')
    {
        $values = unpack('C*', $str);
        return SplFixedArray::fromArray(array_values($values));
    }

    /**
     * Convert an SplFixedArray of integers into a string
     *
     * @internal You should not use this directly from another application
     *
     * @param SplFixedArray $a
     * @return string
     * @throws TypeError
     */
    public static function SplFixedArrayToString(SplFixedArray $a)
    {
        /**
         * @var array<int, int|string> $arr
         */
        $arr = $a->toArray();
        $c = $a->count();
        array_unshift($arr, str_repeat('C', $c));
        return (string) (call_user_func_array('pack', $arr));
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param SplFixedArray $ctx
     * @return string
     * @throws TypeError
     * @psalm-suppress MixedArgument
     * @psalm-suppress MixedAssignment
     * @psalm-suppress MixedArrayAccess
     * @psalm-suppress MixedArrayAssignment
     * @psalm-suppress MixedArrayOffset
     * @psalm-suppress MixedMethodCall
     */
    public static function contextToString(SplFixedArray $ctx)
    {
        $str = '';
        /** @var array<int, array<int, int>> $ctxA */
        $ctxA = $ctx[0]->toArray();

        # uint64_t h[8];
        for ($i = 0; $i < 8; ++$i) {
            $str .= self::store32_le($ctxA[$i][1]);
            $str .= self::store32_le($ctxA[$i][0]);
        }

        # uint64_t t[2];
        # uint64_t f[2];
        for ($i = 1; $i < 3; ++$i) {
            $ctxA = $ctx[$i]->toArray();
            $str .= self::store32_le($ctxA[0][1]);
            $str .= self::store32_le($ctxA[0][0]);
            $str .= self::store32_le($ctxA[1][1]);
            $str .= self::store32_le($ctxA[1][0]);
        }

        # uint8_t buf[2 * 128];
        $str .= self::SplFixedArrayToString($ctx[3]);

        /** @var int $ctx4 */
        $ctx4 = (int) $ctx[4];

        # size_t buflen;
        $str .= implode('', array(
            self::intToChr($ctx4 & 0xff),
            self::intToChr(($ctx4 >> 8) & 0xff),
            self::intToChr(($ctx4 >> 16) & 0xff),
            self::intToChr(($ctx4 >> 24) & 0xff),
            self::intToChr(($ctx4 >> 32) & 0xff),
            self::intToChr(($ctx4 >> 40) & 0xff),
            self::intToChr(($ctx4 >> 48) & 0xff),
            self::intToChr(($ctx4 >> 56) & 0xff)
        ));
        # uint8_t last_node;
        return $str . self::intToChr($ctx[5]) . str_repeat("\x00", 23);
    }

    /**
     * Creates an SplFixedArray containing other SplFixedArray elements, from
     * a string (compatible with \Sodium\crypto_generichash_{init, update, final})
     *
     * @internal You should not use this directly from another application
     *
     * @param string $string
     * @return SplFixedArray
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArrayAssignment
     */
    public static function stringToContext($string)
    {
        $ctx = self::context();

        # uint64_t h[8];
        for ($i = 0; $i < 8; ++$i) {
            $ctx[0][$i] = SplFixedArray::fromArray(
                array(
                    self::load_4(
                        self::substr($string, (($i << 3) + 4), 4)
                    ),
                    self::load_4(
                        self::substr($string, (($i << 3) + 0), 4)
                    )
                )
            );
        }

        # uint64_t t[2];
        # uint64_t f[2];
        for ($i = 1; $i < 3; ++$i) {
            $ctx[$i][1] = SplFixedArray::fromArray(
                array(
                    self::load_4(self::substr($string, 76 + (($i - 1) << 4), 4)),
                    self::load_4(self::substr($string, 72 + (($i - 1) << 4), 4))
                )
            );
            $ctx[$i][0] = SplFixedArray::fromArray(
                array(
                    self::load_4(self::substr($string, 68 + (($i - 1) << 4), 4)),
                    self::load_4(self::substr($string, 64 + (($i - 1) << 4), 4))
                )
            );
        }

        # uint8_t buf[2 * 128];
        $ctx[3] = self::stringToSplFixedArray(self::substr($string, 96, 256));

        # uint8_t buf[2 * 128];
        $int = 0;
        for ($i = 0; $i < 8; ++$i) {
            $int |= self::chrToInt($string[352 + $i]) << ($i << 3);
        }
        $ctx[4] = $int;

        return $ctx;
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core/Poly1305/State.php000064400000031253150755146460020716 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Core_Poly1305_State', false)) {
    return;
}

/**
 * Class ParagonIE_Sodium_Core_Poly1305_State
 */
class ParagonIE_Sodium_Core_Poly1305_State extends ParagonIE_Sodium_Core_Util
{
    /**
     * @var array<int, int>
     */
    protected $buffer = array();

    /**
     * @var bool
     */
    protected $final = false;

    /**
     * @var array<int, int>
     */
    public $h;

    /**
     * @var int
     */
    protected $leftover = 0;

    /**
     * @var int[]
     */
    public $r;

    /**
     * @var int[]
     */
    public $pad;

    /**
     * ParagonIE_Sodium_Core_Poly1305_State constructor.
     *
     * @internal You should not use this directly from another application
     *
     * @param string $key
     * @throws InvalidArgumentException
     * @throws TypeError
     */
    public function __construct($key = '')
    {
        if (self::strlen($key) < 32) {
            throw new InvalidArgumentException(
                'Poly1305 requires a 32-byte key'
            );
        }
        /* r &= 0xffffffc0ffffffc0ffffffc0fffffff */
        $this->r = array(
            (int) ((self::load_4(self::substr($key, 0, 4))) & 0x3ffffff),
            (int) ((self::load_4(self::substr($key, 3, 4)) >> 2) & 0x3ffff03),
            (int) ((self::load_4(self::substr($key, 6, 4)) >> 4) & 0x3ffc0ff),
            (int) ((self::load_4(self::substr($key, 9, 4)) >> 6) & 0x3f03fff),
            (int) ((self::load_4(self::substr($key, 12, 4)) >> 8) & 0x00fffff)
        );

        /* h = 0 */
        $this->h = array(0, 0, 0, 0, 0);

        /* save pad for later */
        $this->pad = array(
            self::load_4(self::substr($key, 16, 4)),
            self::load_4(self::substr($key, 20, 4)),
            self::load_4(self::substr($key, 24, 4)),
            self::load_4(self::substr($key, 28, 4)),
        );

        $this->leftover = 0;
        $this->final = false;
    }

    /**
     * Zero internal buffer upon destruction
     */
    public function __destruct()
    {
        $this->r[0] ^= $this->r[0];
        $this->r[1] ^= $this->r[1];
        $this->r[2] ^= $this->r[2];
        $this->r[3] ^= $this->r[3];
        $this->r[4] ^= $this->r[4];
        $this->h[0] ^= $this->h[0];
        $this->h[1] ^= $this->h[1];
        $this->h[2] ^= $this->h[2];
        $this->h[3] ^= $this->h[3];
        $this->h[4] ^= $this->h[4];
        $this->pad[0] ^= $this->pad[0];
        $this->pad[1] ^= $this->pad[1];
        $this->pad[2] ^= $this->pad[2];
        $this->pad[3] ^= $this->pad[3];
        $this->leftover = 0;
        $this->final = true;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $message
     * @return self
     * @throws SodiumException
     * @throws TypeError
     */
    public function update($message = '')
    {
        $bytes = self::strlen($message);
        if ($bytes < 1) {
            return $this;
        }

        /* handle leftover */
        if ($this->leftover) {
            $want = ParagonIE_Sodium_Core_Poly1305::BLOCK_SIZE - $this->leftover;
            if ($want > $bytes) {
                $want = $bytes;
            }
            for ($i = 0; $i < $want; ++$i) {
                $mi = self::chrToInt($message[$i]);
                $this->buffer[$this->leftover + $i] = $mi;
            }
            // We snip off the leftmost bytes.
            $message = self::substr($message, $want);
            $bytes = self::strlen($message);
            $this->leftover += $want;
            if ($this->leftover < ParagonIE_Sodium_Core_Poly1305::BLOCK_SIZE) {
                // We still don't have enough to run $this->blocks()
                return $this;
            }

            $this->blocks(
                self::intArrayToString($this->buffer),
                ParagonIE_Sodium_Core_Poly1305::BLOCK_SIZE
            );
            $this->leftover = 0;
        }

        /* process full blocks */
        if ($bytes >= ParagonIE_Sodium_Core_Poly1305::BLOCK_SIZE) {
            /** @var int $want */
            $want = $bytes & ~(ParagonIE_Sodium_Core_Poly1305::BLOCK_SIZE - 1);
            if ($want >= ParagonIE_Sodium_Core_Poly1305::BLOCK_SIZE) {
                $block = self::substr($message, 0, $want);
                if (self::strlen($block) >= ParagonIE_Sodium_Core_Poly1305::BLOCK_SIZE) {
                    $this->blocks($block, $want);
                    $message = self::substr($message, $want);
                    $bytes = self::strlen($message);
                }
            }
        }

        /* store leftover */
        if ($bytes) {
            for ($i = 0; $i < $bytes; ++$i) {
                $mi = self::chrToInt($message[$i]);
                $this->buffer[$this->leftover + $i] = $mi;
            }
            $this->leftover = (int) $this->leftover + $bytes;
        }
        return $this;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $message
     * @param int $bytes
     * @return self
     * @throws TypeError
     */
    public function blocks($message, $bytes)
    {
        if (self::strlen($message) < 16) {
            $message = str_pad($message, 16, "\x00", STR_PAD_RIGHT);
        }
        /** @var int $hibit */
        $hibit = $this->final ? 0 : 1 << 24; /* 1 << 128 */
        $r0 = (int) $this->r[0];
        $r1 = (int) $this->r[1];
        $r2 = (int) $this->r[2];
        $r3 = (int) $this->r[3];
        $r4 = (int) $this->r[4];

        $s1 = self::mul($r1, 5, 3);
        $s2 = self::mul($r2, 5, 3);
        $s3 = self::mul($r3, 5, 3);
        $s4 = self::mul($r4, 5, 3);

        $h0 = $this->h[0];
        $h1 = $this->h[1];
        $h2 = $this->h[2];
        $h3 = $this->h[3];
        $h4 = $this->h[4];

        while ($bytes >= ParagonIE_Sodium_Core_Poly1305::BLOCK_SIZE) {
            /* h += m[i] */
            $h0 +=  self::load_4(self::substr($message, 0, 4))       & 0x3ffffff;
            $h1 += (self::load_4(self::substr($message, 3, 4)) >> 2) & 0x3ffffff;
            $h2 += (self::load_4(self::substr($message, 6, 4)) >> 4) & 0x3ffffff;
            $h3 += (self::load_4(self::substr($message, 9, 4)) >> 6) & 0x3ffffff;
            $h4 += (self::load_4(self::substr($message, 12, 4)) >> 8) | $hibit;

            /* h *= r */
            $d0 = (
                self::mul($h0, $r0, 27) +
                self::mul($s4, $h1, 27) +
                self::mul($s3, $h2, 27) +
                self::mul($s2, $h3, 27) +
                self::mul($s1, $h4, 27)
            );

            $d1 = (
                self::mul($h0, $r1, 27) +
                self::mul($h1, $r0, 27) +
                self::mul($s4, $h2, 27) +
                self::mul($s3, $h3, 27) +
                self::mul($s2, $h4, 27)
            );

            $d2 = (
                self::mul($h0, $r2, 27) +
                self::mul($h1, $r1, 27) +
                self::mul($h2, $r0, 27) +
                self::mul($s4, $h3, 27) +
                self::mul($s3, $h4, 27)
            );

            $d3 = (
                self::mul($h0, $r3, 27) +
                self::mul($h1, $r2, 27) +
                self::mul($h2, $r1, 27) +
                self::mul($h3, $r0, 27) +
                self::mul($s4, $h4, 27)
            );

            $d4 = (
                self::mul($h0, $r4, 27) +
                self::mul($h1, $r3, 27) +
                self::mul($h2, $r2, 27) +
                self::mul($h3, $r1, 27) +
                self::mul($h4, $r0, 27)
            );

            /* (partial) h %= p */
            /** @var int $c */
            $c = $d0 >> 26;
            /** @var int $h0 */
            $h0 = $d0 & 0x3ffffff;
            $d1 += $c;

            /** @var int $c */
            $c = $d1 >> 26;
            /** @var int $h1 */
            $h1 = $d1 & 0x3ffffff;
            $d2 += $c;

            /** @var int $c */
            $c = $d2 >> 26;
            /** @var int $h2  */
            $h2 = $d2 & 0x3ffffff;
            $d3 += $c;

            /** @var int $c */
            $c = $d3 >> 26;
            /** @var int $h3 */
            $h3 = $d3 & 0x3ffffff;
            $d4 += $c;

            /** @var int $c */
            $c = $d4 >> 26;
            /** @var int $h4 */
            $h4 = $d4 & 0x3ffffff;
            $h0 += (int) self::mul($c, 5, 3);

            /** @var int $c */
            $c = $h0 >> 26;
            /** @var int $h0 */
            $h0 &= 0x3ffffff;
            $h1 += $c;

            // Chop off the left 32 bytes.
            $message = self::substr(
                $message,
                ParagonIE_Sodium_Core_Poly1305::BLOCK_SIZE
            );
            $bytes -= ParagonIE_Sodium_Core_Poly1305::BLOCK_SIZE;
        }

        $this->h = array(
            (int) ($h0 & 0xffffffff),
            (int) ($h1 & 0xffffffff),
            (int) ($h2 & 0xffffffff),
            (int) ($h3 & 0xffffffff),
            (int) ($h4 & 0xffffffff)
        );
        return $this;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @return string
     * @throws TypeError
     */
    public function finish()
    {
        /* process the remaining block */
        if ($this->leftover) {
            $i = $this->leftover;
            $this->buffer[$i++] = 1;
            for (; $i < ParagonIE_Sodium_Core_Poly1305::BLOCK_SIZE; ++$i) {
                $this->buffer[$i] = 0;
            }
            $this->final = true;
            $this->blocks(
                self::substr(
                    self::intArrayToString($this->buffer),
                    0,
                    ParagonIE_Sodium_Core_Poly1305::BLOCK_SIZE
                ),
                ParagonIE_Sodium_Core_Poly1305::BLOCK_SIZE
            );
        }

        $h0 = (int) $this->h[0];
        $h1 = (int) $this->h[1];
        $h2 = (int) $this->h[2];
        $h3 = (int) $this->h[3];
        $h4 = (int) $this->h[4];

        /** @var int $c */
        $c = $h1 >> 26;
        /** @var int $h1 */
        $h1 &= 0x3ffffff;
        /** @var int $h2 */
        $h2 += $c;
        /** @var int $c */
        $c = $h2 >> 26;
        /** @var int $h2 */
        $h2 &= 0x3ffffff;
        $h3 += $c;
        /** @var int $c */
        $c = $h3 >> 26;
        $h3 &= 0x3ffffff;
        $h4 += $c;
        /** @var int $c */
        $c = $h4 >> 26;
        $h4 &= 0x3ffffff;
        /** @var int $h0 */
        $h0 += self::mul($c, 5, 3);
        /** @var int $c */
        $c = $h0 >> 26;
        /** @var int $h0 */
        $h0 &= 0x3ffffff;
        /** @var int $h1 */
        $h1 += $c;

        /* compute h + -p */
        /** @var int $g0 */
        $g0 = $h0 + 5;
        /** @var int $c */
        $c = $g0 >> 26;
        /** @var int $g0 */
        $g0 &= 0x3ffffff;

        /** @var int $g1 */
        $g1 = $h1 + $c;
        /** @var int $c */
        $c = $g1 >> 26;
        $g1 &= 0x3ffffff;

        /** @var int $g2 */
        $g2 = $h2 + $c;
        /** @var int $c */
        $c = $g2 >> 26;
        /** @var int $g2 */
        $g2 &= 0x3ffffff;

        /** @var int $g3 */
        $g3 = $h3 + $c;
        /** @var int $c */
        $c = $g3 >> 26;
        /** @var int $g3 */
        $g3 &= 0x3ffffff;

        /** @var int $g4 */
        $g4 = ($h4 + $c - (1 << 26)) & 0xffffffff;

        /* select h if h < p, or h + -p if h >= p */
        /** @var int $mask */
        $mask = ($g4 >> 31) - 1;

        $g0 &= $mask;
        $g1 &= $mask;
        $g2 &= $mask;
        $g3 &= $mask;
        $g4 &= $mask;

        /** @var int $mask */
        $mask = ~$mask & 0xffffffff;
        /** @var int $h0 */
        $h0 = ($h0 & $mask) | $g0;
        /** @var int $h1 */
        $h1 = ($h1 & $mask) | $g1;
        /** @var int $h2 */
        $h2 = ($h2 & $mask) | $g2;
        /** @var int $h3 */
        $h3 = ($h3 & $mask) | $g3;
        /** @var int $h4 */
        $h4 = ($h4 & $mask) | $g4;

        /* h = h % (2^128) */
        /** @var int $h0 */
        $h0 = (($h0) | ($h1 << 26)) & 0xffffffff;
        /** @var int $h1 */
        $h1 = (($h1 >>  6) | ($h2 << 20)) & 0xffffffff;
        /** @var int $h2 */
        $h2 = (($h2 >> 12) | ($h3 << 14)) & 0xffffffff;
        /** @var int $h3 */
        $h3 = (($h3 >> 18) | ($h4 <<  8)) & 0xffffffff;

        /* mac = (h + pad) % (2^128) */
        $f = (int) ($h0 + $this->pad[0]);
        $h0 = (int) $f;
        $f = (int) ($h1 + $this->pad[1] + ($f >> 32));
        $h1 = (int) $f;
        $f = (int) ($h2 + $this->pad[2] + ($f >> 32));
        $h2 = (int) $f;
        $f = (int) ($h3 + $this->pad[3] + ($f >> 32));
        $h3 = (int) $f;

        return self::store32_le($h0 & 0xffffffff) .
            self::store32_le($h1 & 0xffffffff) .
            self::store32_le($h2 & 0xffffffff) .
            self::store32_le($h3 & 0xffffffff);
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core/Salsa20.php000064400000020144150755146460017604 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Core_Salsa20', false)) {
    return;
}

/**
 * Class ParagonIE_Sodium_Core_Salsa20
 */
abstract class ParagonIE_Sodium_Core_Salsa20 extends ParagonIE_Sodium_Core_Util
{
    const ROUNDS = 20;

    /**
     * Calculate an salsa20 hash of a single block
     *
     * @internal You should not use this directly from another application
     *
     * @param string $in
     * @param string $k
     * @param string|null $c
     * @return string
     * @throws TypeError
     */
    public static function core_salsa20($in, $k, $c = null)
    {
        if (self::strlen($k) < 32) {
            throw new RangeException('Key must be 32 bytes long');
        }
        if ($c === null) {
            $j0  = $x0  = 0x61707865;
            $j5  = $x5  = 0x3320646e;
            $j10 = $x10 = 0x79622d32;
            $j15 = $x15 = 0x6b206574;
        } else {
            $j0  = $x0  = self::load_4(self::substr($c, 0, 4));
            $j5  = $x5  = self::load_4(self::substr($c, 4, 4));
            $j10 = $x10 = self::load_4(self::substr($c, 8, 4));
            $j15 = $x15 = self::load_4(self::substr($c, 12, 4));
        }
        $j1  = $x1  = self::load_4(self::substr($k, 0, 4));
        $j2  = $x2  = self::load_4(self::substr($k, 4, 4));
        $j3  = $x3  = self::load_4(self::substr($k, 8, 4));
        $j4  = $x4  = self::load_4(self::substr($k, 12, 4));
        $j6  = $x6  = self::load_4(self::substr($in, 0, 4));
        $j7  = $x7  = self::load_4(self::substr($in, 4, 4));
        $j8  = $x8  = self::load_4(self::substr($in, 8, 4));
        $j9  = $x9  = self::load_4(self::substr($in, 12, 4));
        $j11 = $x11 = self::load_4(self::substr($k, 16, 4));
        $j12 = $x12 = self::load_4(self::substr($k, 20, 4));
        $j13 = $x13 = self::load_4(self::substr($k, 24, 4));
        $j14 = $x14 = self::load_4(self::substr($k, 28, 4));

        for ($i = self::ROUNDS; $i > 0; $i -= 2) {
            $x4 ^= self::rotate($x0 + $x12, 7);
            $x8 ^= self::rotate($x4 + $x0, 9);
            $x12 ^= self::rotate($x8 + $x4, 13);
            $x0 ^= self::rotate($x12 + $x8, 18);

            $x9 ^= self::rotate($x5 + $x1, 7);
            $x13 ^= self::rotate($x9 + $x5, 9);
            $x1 ^= self::rotate($x13 + $x9, 13);
            $x5 ^= self::rotate($x1 + $x13, 18);

            $x14 ^= self::rotate($x10 + $x6, 7);
            $x2 ^= self::rotate($x14 + $x10, 9);
            $x6 ^= self::rotate($x2 + $x14, 13);
            $x10 ^= self::rotate($x6 + $x2, 18);

            $x3 ^= self::rotate($x15 + $x11, 7);
            $x7 ^= self::rotate($x3 + $x15, 9);
            $x11 ^= self::rotate($x7 + $x3, 13);
            $x15 ^= self::rotate($x11 + $x7, 18);

            $x1 ^= self::rotate($x0 + $x3, 7);
            $x2 ^= self::rotate($x1 + $x0, 9);
            $x3 ^= self::rotate($x2 + $x1, 13);
            $x0 ^= self::rotate($x3 + $x2, 18);

            $x6 ^= self::rotate($x5 + $x4, 7);
            $x7 ^= self::rotate($x6 + $x5, 9);
            $x4 ^= self::rotate($x7 + $x6, 13);
            $x5 ^= self::rotate($x4 + $x7, 18);

            $x11 ^= self::rotate($x10 + $x9, 7);
            $x8 ^= self::rotate($x11 + $x10, 9);
            $x9 ^= self::rotate($x8 + $x11, 13);
            $x10 ^= self::rotate($x9 + $x8, 18);

            $x12 ^= self::rotate($x15 + $x14, 7);
            $x13 ^= self::rotate($x12 + $x15, 9);
            $x14 ^= self::rotate($x13 + $x12, 13);
            $x15 ^= self::rotate($x14 + $x13, 18);
        }

        $x0  += $j0;
        $x1  += $j1;
        $x2  += $j2;
        $x3  += $j3;
        $x4  += $j4;
        $x5  += $j5;
        $x6  += $j6;
        $x7  += $j7;
        $x8  += $j8;
        $x9  += $j9;
        $x10 += $j10;
        $x11 += $j11;
        $x12 += $j12;
        $x13 += $j13;
        $x14 += $j14;
        $x15 += $j15;

        return self::store32_le($x0) .
            self::store32_le($x1) .
            self::store32_le($x2) .
            self::store32_le($x3) .
            self::store32_le($x4) .
            self::store32_le($x5) .
            self::store32_le($x6) .
            self::store32_le($x7) .
            self::store32_le($x8) .
            self::store32_le($x9) .
            self::store32_le($x10) .
            self::store32_le($x11) .
            self::store32_le($x12) .
            self::store32_le($x13) .
            self::store32_le($x14) .
            self::store32_le($x15);
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param int $len
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function salsa20($len, $nonce, $key)
    {
        if (self::strlen($key) !== 32) {
            throw new RangeException('Key must be 32 bytes long');
        }
        $kcopy = '' . $key;
        $in = self::substr($nonce, 0, 8) . str_repeat("\0", 8);
        $c = '';
        while ($len >= 64) {
            $c .= self::core_salsa20($in, $kcopy, null);
            $u = 1;
            // Internal counter.
            for ($i = 8; $i < 16; ++$i) {
                $u += self::chrToInt($in[$i]);
                $in[$i] = self::intToChr($u & 0xff);
                $u >>= 8;
            }
            $len -= 64;
        }
        if ($len > 0) {
            $c .= self::substr(
                self::core_salsa20($in, $kcopy, null),
                0,
                $len
            );
        }
        try {
            ParagonIE_Sodium_Compat::memzero($kcopy);
        } catch (SodiumException $ex) {
            $kcopy = null;
        }
        return $c;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $m
     * @param string $n
     * @param int $ic
     * @param string $k
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function salsa20_xor_ic($m, $n, $ic, $k)
    {
        $mlen = self::strlen($m);
        if ($mlen < 1) {
            return '';
        }
        $kcopy = self::substr($k, 0, 32);
        $in = self::substr($n, 0, 8);
        // Initialize the counter
        $in .= ParagonIE_Sodium_Core_Util::store64_le($ic);

        $c = '';
        while ($mlen >= 64) {
            $block = self::core_salsa20($in, $kcopy, null);
            $c .= self::xorStrings(
                self::substr($m, 0, 64),
                self::substr($block, 0, 64)
            );
            $u = 1;
            for ($i = 8; $i < 16; ++$i) {
                $u += self::chrToInt($in[$i]);
                $in[$i] = self::intToChr($u & 0xff);
                $u >>= 8;
            }

            $mlen -= 64;
            $m = self::substr($m, 64);
        }

        if ($mlen) {
            $block = self::core_salsa20($in, $kcopy, null);
            $c .= self::xorStrings(
                self::substr($m, 0, $mlen),
                self::substr($block, 0, $mlen)
            );
        }
        try {
            ParagonIE_Sodium_Compat::memzero($block);
            ParagonIE_Sodium_Compat::memzero($kcopy);
        } catch (SodiumException $ex) {
            $block = null;
            $kcopy = null;
        }

        return $c;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $message
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function salsa20_xor($message, $nonce, $key)
    {
        return self::xorStrings(
            $message,
            self::salsa20(
                self::strlen($message),
                $nonce,
                $key
            )
        );
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param int $u
     * @param int $c
     * @return int
     */
    public static function rotate($u, $c)
    {
        $u &= 0xffffffff;
        $c %= 32;
        return (int) (0xffffffff & (
                ($u << $c)
                    |
                ($u >> (32 - $c))
            )
        );
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core/HChaCha20.php000064400000007532150755146460017766 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Core_HChaCha20', false)) {
    return;
}

/**
 * Class ParagonIE_Sodium_Core_HChaCha20
 */
class ParagonIE_Sodium_Core_HChaCha20 extends ParagonIE_Sodium_Core_ChaCha20
{
    /**
     * @param string $in
     * @param string $key
     * @param string|null $c
     * @return string
     * @throws TypeError
     */
    public static function hChaCha20($in = '', $key = '', $c = null)
    {
        $ctx = array();

        if ($c === null) {
            $ctx[0] = 0x61707865;
            $ctx[1] = 0x3320646e;
            $ctx[2] = 0x79622d32;
            $ctx[3] = 0x6b206574;
        } else {
            $ctx[0] = self::load_4(self::substr($c,  0, 4));
            $ctx[1] = self::load_4(self::substr($c,  4, 4));
            $ctx[2] = self::load_4(self::substr($c,  8, 4));
            $ctx[3] = self::load_4(self::substr($c, 12, 4));
        }
        $ctx[4]  = self::load_4(self::substr($key,  0, 4));
        $ctx[5]  = self::load_4(self::substr($key,  4, 4));
        $ctx[6]  = self::load_4(self::substr($key,  8, 4));
        $ctx[7]  = self::load_4(self::substr($key, 12, 4));
        $ctx[8]  = self::load_4(self::substr($key, 16, 4));
        $ctx[9]  = self::load_4(self::substr($key, 20, 4));
        $ctx[10] = self::load_4(self::substr($key, 24, 4));
        $ctx[11] = self::load_4(self::substr($key, 28, 4));
        $ctx[12] = self::load_4(self::substr($in,   0, 4));
        $ctx[13] = self::load_4(self::substr($in,   4, 4));
        $ctx[14] = self::load_4(self::substr($in,   8, 4));
        $ctx[15] = self::load_4(self::substr($in,  12, 4));
        return self::hChaCha20Bytes($ctx);
    }

    /**
     * @param array $ctx
     * @return string
     * @throws TypeError
     */
    protected static function hChaCha20Bytes(array $ctx)
    {
        $x0  = (int) $ctx[0];
        $x1  = (int) $ctx[1];
        $x2  = (int) $ctx[2];
        $x3  = (int) $ctx[3];
        $x4  = (int) $ctx[4];
        $x5  = (int) $ctx[5];
        $x6  = (int) $ctx[6];
        $x7  = (int) $ctx[7];
        $x8  = (int) $ctx[8];
        $x9  = (int) $ctx[9];
        $x10 = (int) $ctx[10];
        $x11 = (int) $ctx[11];
        $x12 = (int) $ctx[12];
        $x13 = (int) $ctx[13];
        $x14 = (int) $ctx[14];
        $x15 = (int) $ctx[15];

        for ($i = 0; $i < 10; ++$i) {
            # QUARTERROUND( x0,  x4,  x8,  x12)
            list($x0, $x4, $x8, $x12) = self::quarterRound($x0, $x4, $x8, $x12);

            # QUARTERROUND( x1,  x5,  x9,  x13)
            list($x1, $x5, $x9, $x13) = self::quarterRound($x1, $x5, $x9, $x13);

            # QUARTERROUND( x2,  x6,  x10,  x14)
            list($x2, $x6, $x10, $x14) = self::quarterRound($x2, $x6, $x10, $x14);

            # QUARTERROUND( x3,  x7,  x11,  x15)
            list($x3, $x7, $x11, $x15) = self::quarterRound($x3, $x7, $x11, $x15);

            # QUARTERROUND( x0,  x5,  x10,  x15)
            list($x0, $x5, $x10, $x15) = self::quarterRound($x0, $x5, $x10, $x15);

            # QUARTERROUND( x1,  x6,  x11,  x12)
            list($x1, $x6, $x11, $x12) = self::quarterRound($x1, $x6, $x11, $x12);

            # QUARTERROUND( x2,  x7,  x8,  x13)
            list($x2, $x7, $x8, $x13) = self::quarterRound($x2, $x7, $x8, $x13);

            # QUARTERROUND( x3,  x4,  x9,  x14)
            list($x3, $x4, $x9, $x14) = self::quarterRound($x3, $x4, $x9, $x14);
        }

        return self::store32_le((int) ($x0  & 0xffffffff)) .
            self::store32_le((int) ($x1  & 0xffffffff)) .
            self::store32_le((int) ($x2  & 0xffffffff)) .
            self::store32_le((int) ($x3  & 0xffffffff)) .
            self::store32_le((int) ($x12 & 0xffffffff)) .
            self::store32_le((int) ($x13 & 0xffffffff)) .
            self::store32_le((int) ($x14 & 0xffffffff)) .
            self::store32_le((int) ($x15 & 0xffffffff));
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core/Curve25519/H.php000064400000327664150755146460020301 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Core_Curve25519_H', false)) {
    return;
}

/**
 * Class ParagonIE_Sodium_Core_Curve25519_H
 *
 * This just contains the constants in the ref10/base.h file
 */
class ParagonIE_Sodium_Core_Curve25519_H extends ParagonIE_Sodium_Core_Util
{
    /**
     * See: libsodium's crypto_core/curve25519/ref10/base.h
     *
     * @var array<int, array<int, array<int, array<int, int>>>> Basically, int[32][8][3][10]
     */
    protected static $base = array(
        array(
            array(
                array(25967493, -14356035, 29566456, 3660896, -12694345, 4014787, 27544626, -11754271, -6079156, 2047605),
                array(-12545711, 934262, -2722910, 3049990, -727428, 9406986, 12720692, 5043384, 19500929, -15469378),
                array(-8738181, 4489570, 9688441, -14785194, 10184609, -12363380, 29287919, 11864899, -24514362, -4438546),
            ),
            array(
                array(-12815894, -12976347, -21581243, 11784320, -25355658, -2750717, -11717903, -3814571, -358445, -10211303),
                array(-21703237, 6903825, 27185491, 6451973, -29577724, -9554005, -15616551, 11189268, -26829678, -5319081),
                array(26966642, 11152617, 32442495, 15396054, 14353839, -12752335, -3128826, -9541118, -15472047, -4166697),
            ),
            array(
                array(15636291, -9688557, 24204773, -7912398, 616977, -16685262, 27787600, -14772189, 28944400, -1550024),
                array(16568933, 4717097, -11556148, -1102322, 15682896, -11807043, 16354577, -11775962, 7689662, 11199574),
                array(30464156, -5976125, -11779434, -15670865, 23220365, 15915852, 7512774, 10017326, -17749093, -9920357),
            ),
            array(
                array(-17036878, 13921892, 10945806, -6033431, 27105052, -16084379, -28926210, 15006023, 3284568, -6276540),
                array(23599295, -8306047, -11193664, -7687416, 13236774, 10506355, 7464579, 9656445, 13059162, 10374397),
                array(7798556, 16710257, 3033922, 2874086, 28997861, 2835604, 32406664, -3839045, -641708, -101325),
            ),
            array(
                array(10861363, 11473154, 27284546, 1981175, -30064349, 12577861, 32867885, 14515107, -15438304, 10819380),
                array(4708026, 6336745, 20377586, 9066809, -11272109, 6594696, -25653668, 12483688, -12668491, 5581306),
                array(19563160, 16186464, -29386857, 4097519, 10237984, -4348115, 28542350, 13850243, -23678021, -15815942),
            ),
            array(
                array(-15371964, -12862754, 32573250, 4720197, -26436522, 5875511, -19188627, -15224819, -9818940, -12085777),
                array(-8549212, 109983, 15149363, 2178705, 22900618, 4543417, 3044240, -15689887, 1762328, 14866737),
                array(-18199695, -15951423, -10473290, 1707278, -17185920, 3916101, -28236412, 3959421, 27914454, 4383652),
            ),
            array(
                array(5153746, 9909285, 1723747, -2777874, 30523605, 5516873, 19480852, 5230134, -23952439, -15175766),
                array(-30269007, -3463509, 7665486, 10083793, 28475525, 1649722, 20654025, 16520125, 30598449, 7715701),
                array(28881845, 14381568, 9657904, 3680757, -20181635, 7843316, -31400660, 1370708, 29794553, -1409300),
            ),
            array(
                array(14499471, -2729599, -33191113, -4254652, 28494862, 14271267, 30290735, 10876454, -33154098, 2381726),
                array(-7195431, -2655363, -14730155, 462251, -27724326, 3941372, -6236617, 3696005, -32300832, 15351955),
                array(27431194, 8222322, 16448760, -3907995, -18707002, 11938355, -32961401, -2970515, 29551813, 10109425),
            ),
        ),
        array(
            array(
                array(-13657040, -13155431, -31283750, 11777098, 21447386, 6519384, -2378284, -1627556, 10092783, -4764171),
                array(27939166, 14210322, 4677035, 16277044, -22964462, -12398139, -32508754, 12005538, -17810127, 12803510),
                array(17228999, -15661624, -1233527, 300140, -1224870, -11714777, 30364213, -9038194, 18016357, 4397660),
            ),
            array(
                array(-10958843, -7690207, 4776341, -14954238, 27850028, -15602212, -26619106, 14544525, -17477504, 982639),
                array(29253598, 15796703, -2863982, -9908884, 10057023, 3163536, 7332899, -4120128, -21047696, 9934963),
                array(5793303, 16271923, -24131614, -10116404, 29188560, 1206517, -14747930, 4559895, -30123922, -10897950),
            ),
            array(
                array(-27643952, -11493006, 16282657, -11036493, 28414021, -15012264, 24191034, 4541697, -13338309, 5500568),
                array(12650548, -1497113, 9052871, 11355358, -17680037, -8400164, -17430592, 12264343, 10874051, 13524335),
                array(25556948, -3045990, 714651, 2510400, 23394682, -10415330, 33119038, 5080568, -22528059, 5376628),
            ),
            array(
                array(-26088264, -4011052, -17013699, -3537628, -6726793, 1920897, -22321305, -9447443, 4535768, 1569007),
                array(-2255422, 14606630, -21692440, -8039818, 28430649, 8775819, -30494562, 3044290, 31848280, 12543772),
                array(-22028579, 2943893, -31857513, 6777306, 13784462, -4292203, -27377195, -2062731, 7718482, 14474653),
            ),
            array(
                array(2385315, 2454213, -22631320, 46603, -4437935, -15680415, 656965, -7236665, 24316168, -5253567),
                array(13741529, 10911568, -33233417, -8603737, -20177830, -1033297, 33040651, -13424532, -20729456, 8321686),
                array(21060490, -2212744, 15712757, -4336099, 1639040, 10656336, 23845965, -11874838, -9984458, 608372),
            ),
            array(
                array(-13672732, -15087586, -10889693, -7557059, -6036909, 11305547, 1123968, -6780577, 27229399, 23887),
                array(-23244140, -294205, -11744728, 14712571, -29465699, -2029617, 12797024, -6440308, -1633405, 16678954),
                array(-29500620, 4770662, -16054387, 14001338, 7830047, 9564805, -1508144, -4795045, -17169265, 4904953),
            ),
            array(
                array(24059557, 14617003, 19037157, -15039908, 19766093, -14906429, 5169211, 16191880, 2128236, -4326833),
                array(-16981152, 4124966, -8540610, -10653797, 30336522, -14105247, -29806336, 916033, -6882542, -2986532),
                array(-22630907, 12419372, -7134229, -7473371, -16478904, 16739175, 285431, 2763829, 15736322, 4143876),
            ),
            array(
                array(2379352, 11839345, -4110402, -5988665, 11274298, 794957, 212801, -14594663, 23527084, -16458268),
                array(33431127, -11130478, -17838966, -15626900, 8909499, 8376530, -32625340, 4087881, -15188911, -14416214),
                array(1767683, 7197987, -13205226, -2022635, -13091350, 448826, 5799055, 4357868, -4774191, -16323038),
            ),
        ),
        array(
            array(
                array(6721966, 13833823, -23523388, -1551314, 26354293, -11863321, 23365147, -3949732, 7390890, 2759800),
                array(4409041, 2052381, 23373853, 10530217, 7676779, -12885954, 21302353, -4264057, 1244380, -12919645),
                array(-4421239, 7169619, 4982368, -2957590, 30256825, -2777540, 14086413, 9208236, 15886429, 16489664),
            ),
            array(
                array(1996075, 10375649, 14346367, 13311202, -6874135, -16438411, -13693198, 398369, -30606455, -712933),
                array(-25307465, 9795880, -2777414, 14878809, -33531835, 14780363, 13348553, 12076947, -30836462, 5113182),
                array(-17770784, 11797796, 31950843, 13929123, -25888302, 12288344, -30341101, -7336386, 13847711, 5387222),
            ),
            array(
                array(-18582163, -3416217, 17824843, -2340966, 22744343, -10442611, 8763061, 3617786, -19600662, 10370991),
                array(20246567, -14369378, 22358229, -543712, 18507283, -10413996, 14554437, -8746092, 32232924, 16763880),
                array(9648505, 10094563, 26416693, 14745928, -30374318, -6472621, 11094161, 15689506, 3140038, -16510092),
            ),
            array(
                array(-16160072, 5472695, 31895588, 4744994, 8823515, 10365685, -27224800, 9448613, -28774454, 366295),
                array(19153450, 11523972, -11096490, -6503142, -24647631, 5420647, 28344573, 8041113, 719605, 11671788),
                array(8678025, 2694440, -6808014, 2517372, 4964326, 11152271, -15432916, -15266516, 27000813, -10195553),
            ),
            array(
                array(-15157904, 7134312, 8639287, -2814877, -7235688, 10421742, 564065, 5336097, 6750977, -14521026),
                array(11836410, -3979488, 26297894, 16080799, 23455045, 15735944, 1695823, -8819122, 8169720, 16220347),
                array(-18115838, 8653647, 17578566, -6092619, -8025777, -16012763, -11144307, -2627664, -5990708, -14166033),
            ),
            array(
                array(-23308498, -10968312, 15213228, -10081214, -30853605, -11050004, 27884329, 2847284, 2655861, 1738395),
                array(-27537433, -14253021, -25336301, -8002780, -9370762, 8129821, 21651608, -3239336, -19087449, -11005278),
                array(1533110, 3437855, 23735889, 459276, 29970501, 11335377, 26030092, 5821408, 10478196, 8544890),
            ),
            array(
                array(32173121, -16129311, 24896207, 3921497, 22579056, -3410854, 19270449, 12217473, 17789017, -3395995),
                array(-30552961, -2228401, -15578829, -10147201, 13243889, 517024, 15479401, -3853233, 30460520, 1052596),
                array(-11614875, 13323618, 32618793, 8175907, -15230173, 12596687, 27491595, -4612359, 3179268, -9478891),
            ),
            array(
                array(31947069, -14366651, -4640583, -15339921, -15125977, -6039709, -14756777, -16411740, 19072640, -9511060),
                array(11685058, 11822410, 3158003, -13952594, 33402194, -4165066, 5977896, -5215017, 473099, 5040608),
                array(-20290863, 8198642, -27410132, 11602123, 1290375, -2799760, 28326862, 1721092, -19558642, -3131606),
            ),
        ),
        array(
            array(
                array(7881532, 10687937, 7578723, 7738378, -18951012, -2553952, 21820786, 8076149, -27868496, 11538389),
                array(-19935666, 3899861, 18283497, -6801568, -15728660, -11249211, 8754525, 7446702, -5676054, 5797016),
                array(-11295600, -3793569, -15782110, -7964573, 12708869, -8456199, 2014099, -9050574, -2369172, -5877341),
            ),
            array(
                array(-22472376, -11568741, -27682020, 1146375, 18956691, 16640559, 1192730, -3714199, 15123619, 10811505),
                array(14352098, -3419715, -18942044, 10822655, 32750596, 4699007, -70363, 15776356, -28886779, -11974553),
                array(-28241164, -8072475, -4978962, -5315317, 29416931, 1847569, -20654173, -16484855, 4714547, -9600655),
            ),
            array(
                array(15200332, 8368572, 19679101, 15970074, -31872674, 1959451, 24611599, -4543832, -11745876, 12340220),
                array(12876937, -10480056, 33134381, 6590940, -6307776, 14872440, 9613953, 8241152, 15370987, 9608631),
                array(-4143277, -12014408, 8446281, -391603, 4407738, 13629032, -7724868, 15866074, -28210621, -8814099),
            ),
            array(
                array(26660628, -15677655, 8393734, 358047, -7401291, 992988, -23904233, 858697, 20571223, 8420556),
                array(14620715, 13067227, -15447274, 8264467, 14106269, 15080814, 33531827, 12516406, -21574435, -12476749),
                array(236881, 10476226, 57258, -14677024, 6472998, 2466984, 17258519, 7256740, 8791136, 15069930),
            ),
            array(
                array(1276410, -9371918, 22949635, -16322807, -23493039, -5702186, 14711875, 4874229, -30663140, -2331391),
                array(5855666, 4990204, -13711848, 7294284, -7804282, 1924647, -1423175, -7912378, -33069337, 9234253),
                array(20590503, -9018988, 31529744, -7352666, -2706834, 10650548, 31559055, -11609587, 18979186, 13396066),
            ),
            array(
                array(24474287, 4968103, 22267082, 4407354, 24063882, -8325180, -18816887, 13594782, 33514650, 7021958),
                array(-11566906, -6565505, -21365085, 15928892, -26158305, 4315421, -25948728, -3916677, -21480480, 12868082),
                array(-28635013, 13504661, 19988037, -2132761, 21078225, 6443208, -21446107, 2244500, -12455797, -8089383),
            ),
            array(
                array(-30595528, 13793479, -5852820, 319136, -25723172, -6263899, 33086546, 8957937, -15233648, 5540521),
                array(-11630176, -11503902, -8119500, -7643073, 2620056, 1022908, -23710744, -1568984, -16128528, -14962807),
                array(23152971, 775386, 27395463, 14006635, -9701118, 4649512, 1689819, 892185, -11513277, -15205948),
            ),
            array(
                array(9770129, 9586738, 26496094, 4324120, 1556511, -3550024, 27453819, 4763127, -19179614, 5867134),
                array(-32765025, 1927590, 31726409, -4753295, 23962434, -16019500, 27846559, 5931263, -29749703, -16108455),
                array(27461885, -2977536, 22380810, 1815854, -23033753, -3031938, 7283490, -15148073, -19526700, 7734629),
            ),
        ),
        array(
            array(
                array(-8010264, -9590817, -11120403, 6196038, 29344158, -13430885, 7585295, -3176626, 18549497, 15302069),
                array(-32658337, -6171222, -7672793, -11051681, 6258878, 13504381, 10458790, -6418461, -8872242, 8424746),
                array(24687205, 8613276, -30667046, -3233545, 1863892, -1830544, 19206234, 7134917, -11284482, -828919),
            ),
            array(
                array(11334899, -9218022, 8025293, 12707519, 17523892, -10476071, 10243738, -14685461, -5066034, 16498837),
                array(8911542, 6887158, -9584260, -6958590, 11145641, -9543680, 17303925, -14124238, 6536641, 10543906),
                array(-28946384, 15479763, -17466835, 568876, -1497683, 11223454, -2669190, -16625574, -27235709, 8876771),
            ),
            array(
                array(-25742899, -12566864, -15649966, -846607, -33026686, -796288, -33481822, 15824474, -604426, -9039817),
                array(10330056, 70051, 7957388, -9002667, 9764902, 15609756, 27698697, -4890037, 1657394, 3084098),
                array(10477963, -7470260, 12119566, -13250805, 29016247, -5365589, 31280319, 14396151, -30233575, 15272409),
            ),
            array(
                array(-12288309, 3169463, 28813183, 16658753, 25116432, -5630466, -25173957, -12636138, -25014757, 1950504),
                array(-26180358, 9489187, 11053416, -14746161, -31053720, 5825630, -8384306, -8767532, 15341279, 8373727),
                array(28685821, 7759505, -14378516, -12002860, -31971820, 4079242, 298136, -10232602, -2878207, 15190420),
            ),
            array(
                array(-32932876, 13806336, -14337485, -15794431, -24004620, 10940928, 8669718, 2742393, -26033313, -6875003),
                array(-1580388, -11729417, -25979658, -11445023, -17411874, -10912854, 9291594, -16247779, -12154742, 6048605),
                array(-30305315, 14843444, 1539301, 11864366, 20201677, 1900163, 13934231, 5128323, 11213262, 9168384),
            ),
            array(
                array(-26280513, 11007847, 19408960, -940758, -18592965, -4328580, -5088060, -11105150, 20470157, -16398701),
                array(-23136053, 9282192, 14855179, -15390078, -7362815, -14408560, -22783952, 14461608, 14042978, 5230683),
                array(29969567, -2741594, -16711867, -8552442, 9175486, -2468974, 21556951, 3506042, -5933891, -12449708),
            ),
            array(
                array(-3144746, 8744661, 19704003, 4581278, -20430686, 6830683, -21284170, 8971513, -28539189, 15326563),
                array(-19464629, 10110288, -17262528, -3503892, -23500387, 1355669, -15523050, 15300988, -20514118, 9168260),
                array(-5353335, 4488613, -23803248, 16314347, 7780487, -15638939, -28948358, 9601605, 33087103, -9011387),
            ),
            array(
                array(-19443170, -15512900, -20797467, -12445323, -29824447, 10229461, -27444329, -15000531, -5996870, 15664672),
                array(23294591, -16632613, -22650781, -8470978, 27844204, 11461195, 13099750, -2460356, 18151676, 13417686),
                array(-24722913, -4176517, -31150679, 5988919, -26858785, 6685065, 1661597, -12551441, 15271676, -15452665),
            ),
        ),
        array(
            array(
                array(11433042, -13228665, 8239631, -5279517, -1985436, -725718, -18698764, 2167544, -6921301, -13440182),
                array(-31436171, 15575146, 30436815, 12192228, -22463353, 9395379, -9917708, -8638997, 12215110, 12028277),
                array(14098400, 6555944, 23007258, 5757252, -15427832, -12950502, 30123440, 4617780, -16900089, -655628),
            ),
            array(
                array(-4026201, -15240835, 11893168, 13718664, -14809462, 1847385, -15819999, 10154009, 23973261, -12684474),
                array(-26531820, -3695990, -1908898, 2534301, -31870557, -16550355, 18341390, -11419951, 32013174, -10103539),
                array(-25479301, 10876443, -11771086, -14625140, -12369567, 1838104, 21911214, 6354752, 4425632, -837822),
            ),
            array(
                array(-10433389, -14612966, 22229858, -3091047, -13191166, 776729, -17415375, -12020462, 4725005, 14044970),
                array(19268650, -7304421, 1555349, 8692754, -21474059, -9910664, 6347390, -1411784, -19522291, -16109756),
                array(-24864089, 12986008, -10898878, -5558584, -11312371, -148526, 19541418, 8180106, 9282262, 10282508),
            ),
            array(
                array(-26205082, 4428547, -8661196, -13194263, 4098402, -14165257, 15522535, 8372215, 5542595, -10702683),
                array(-10562541, 14895633, 26814552, -16673850, -17480754, -2489360, -2781891, 6993761, -18093885, 10114655),
                array(-20107055, -929418, 31422704, 10427861, -7110749, 6150669, -29091755, -11529146, 25953725, -106158),
            ),
            array(
                array(-4234397, -8039292, -9119125, 3046000, 2101609, -12607294, 19390020, 6094296, -3315279, 12831125),
                array(-15998678, 7578152, 5310217, 14408357, -33548620, -224739, 31575954, 6326196, 7381791, -2421839),
                array(-20902779, 3296811, 24736065, -16328389, 18374254, 7318640, 6295303, 8082724, -15362489, 12339664),
            ),
            array(
                array(27724736, 2291157, 6088201, -14184798, 1792727, 5857634, 13848414, 15768922, 25091167, 14856294),
                array(-18866652, 8331043, 24373479, 8541013, -701998, -9269457, 12927300, -12695493, -22182473, -9012899),
                array(-11423429, -5421590, 11632845, 3405020, 30536730, -11674039, -27260765, 13866390, 30146206, 9142070),
            ),
            array(
                array(3924129, -15307516, -13817122, -10054960, 12291820, -668366, -27702774, 9326384, -8237858, 4171294),
                array(-15921940, 16037937, 6713787, 16606682, -21612135, 2790944, 26396185, 3731949, 345228, -5462949),
                array(-21327538, 13448259, 25284571, 1143661, 20614966, -8849387, 2031539, -12391231, -16253183, -13582083),
            ),
            array(
                array(31016211, -16722429, 26371392, -14451233, -5027349, 14854137, 17477601, 3842657, 28012650, -16405420),
                array(-5075835, 9368966, -8562079, -4600902, -15249953, 6970560, -9189873, 16292057, -8867157, 3507940),
                array(29439664, 3537914, 23333589, 6997794, -17555561, -11018068, -15209202, -15051267, -9164929, 6580396),
            ),
        ),
        array(
            array(
                array(-12185861, -7679788, 16438269, 10826160, -8696817, -6235611, 17860444, -9273846, -2095802, 9304567),
                array(20714564, -4336911, 29088195, 7406487, 11426967, -5095705, 14792667, -14608617, 5289421, -477127),
                array(-16665533, -10650790, -6160345, -13305760, 9192020, -1802462, 17271490, 12349094, 26939669, -3752294),
            ),
            array(
                array(-12889898, 9373458, 31595848, 16374215, 21471720, 13221525, -27283495, -12348559, -3698806, 117887),
                array(22263325, -6560050, 3984570, -11174646, -15114008, -566785, 28311253, 5358056, -23319780, 541964),
                array(16259219, 3261970, 2309254, -15534474, -16885711, -4581916, 24134070, -16705829, -13337066, -13552195),
            ),
            array(
                array(9378160, -13140186, -22845982, -12745264, 28198281, -7244098, -2399684, -717351, 690426, 14876244),
                array(24977353, -314384, -8223969, -13465086, 28432343, -1176353, -13068804, -12297348, -22380984, 6618999),
                array(-1538174, 11685646, 12944378, 13682314, -24389511, -14413193, 8044829, -13817328, 32239829, -5652762),
            ),
            array(
                array(-18603066, 4762990, -926250, 8885304, -28412480, -3187315, 9781647, -10350059, 32779359, 5095274),
                array(-33008130, -5214506, -32264887, -3685216, 9460461, -9327423, -24601656, 14506724, 21639561, -2630236),
                array(-16400943, -13112215, 25239338, 15531969, 3987758, -4499318, -1289502, -6863535, 17874574, 558605),
            ),
            array(
                array(-13600129, 10240081, 9171883, 16131053, -20869254, 9599700, 33499487, 5080151, 2085892, 5119761),
                array(-22205145, -2519528, -16381601, 414691, -25019550, 2170430, 30634760, -8363614, -31999993, -5759884),
                array(-6845704, 15791202, 8550074, -1312654, 29928809, -12092256, 27534430, -7192145, -22351378, 12961482),
            ),
            array(
                array(-24492060, -9570771, 10368194, 11582341, -23397293, -2245287, 16533930, 8206996, -30194652, -5159638),
                array(-11121496, -3382234, 2307366, 6362031, -135455, 8868177, -16835630, 7031275, 7589640, 8945490),
                array(-32152748, 8917967, 6661220, -11677616, -1192060, -15793393, 7251489, -11182180, 24099109, -14456170),
            ),
            array(
                array(5019558, -7907470, 4244127, -14714356, -26933272, 6453165, -19118182, -13289025, -6231896, -10280736),
                array(10853594, 10721687, 26480089, 5861829, -22995819, 1972175, -1866647, -10557898, -3363451, -6441124),
                array(-17002408, 5906790, 221599, -6563147, 7828208, -13248918, 24362661, -2008168, -13866408, 7421392),
            ),
            array(
                array(8139927, -6546497, 32257646, -5890546, 30375719, 1886181, -21175108, 15441252, 28826358, -4123029),
                array(6267086, 9695052, 7709135, -16603597, -32869068, -1886135, 14795160, -7840124, 13746021, -1742048),
                array(28584902, 7787108, -6732942, -15050729, 22846041, -7571236, -3181936, -363524, 4771362, -8419958),
            ),
        ),
        array(
            array(
                array(24949256, 6376279, -27466481, -8174608, -18646154, -9930606, 33543569, -12141695, 3569627, 11342593),
                array(26514989, 4740088, 27912651, 3697550, 19331575, -11472339, 6809886, 4608608, 7325975, -14801071),
                array(-11618399, -14554430, -24321212, 7655128, -1369274, 5214312, -27400540, 10258390, -17646694, -8186692),
            ),
            array(
                array(11431204, 15823007, 26570245, 14329124, 18029990, 4796082, -31446179, 15580664, 9280358, -3973687),
                array(-160783, -10326257, -22855316, -4304997, -20861367, -13621002, -32810901, -11181622, -15545091, 4387441),
                array(-20799378, 12194512, 3937617, -5805892, -27154820, 9340370, -24513992, 8548137, 20617071, -7482001),
            ),
            array(
                array(-938825, -3930586, -8714311, 16124718, 24603125, -6225393, -13775352, -11875822, 24345683, 10325460),
                array(-19855277, -1568885, -22202708, 8714034, 14007766, 6928528, 16318175, -1010689, 4766743, 3552007),
                array(-21751364, -16730916, 1351763, -803421, -4009670, 3950935, 3217514, 14481909, 10988822, -3994762),
            ),
            array(
                array(15564307, -14311570, 3101243, 5684148, 30446780, -8051356, 12677127, -6505343, -8295852, 13296005),
                array(-9442290, 6624296, -30298964, -11913677, -4670981, -2057379, 31521204, 9614054, -30000824, 12074674),
                array(4771191, -135239, 14290749, -13089852, 27992298, 14998318, -1413936, -1556716, 29832613, -16391035),
            ),
            array(
                array(7064884, -7541174, -19161962, -5067537, -18891269, -2912736, 25825242, 5293297, -27122660, 13101590),
                array(-2298563, 2439670, -7466610, 1719965, -27267541, -16328445, 32512469, -5317593, -30356070, -4190957),
                array(-30006540, 10162316, -33180176, 3981723, -16482138, -13070044, 14413974, 9515896, 19568978, 9628812),
            ),
            array(
                array(33053803, 199357, 15894591, 1583059, 27380243, -4580435, -17838894, -6106839, -6291786, 3437740),
                array(-18978877, 3884493, 19469877, 12726490, 15913552, 13614290, -22961733, 70104, 7463304, 4176122),
                array(-27124001, 10659917, 11482427, -16070381, 12771467, -6635117, -32719404, -5322751, 24216882, 5944158),
            ),
            array(
                array(8894125, 7450974, -2664149, -9765752, -28080517, -12389115, 19345746, 14680796, 11632993, 5847885),
                array(26942781, -2315317, 9129564, -4906607, 26024105, 11769399, -11518837, 6367194, -9727230, 4782140),
                array(19916461, -4828410, -22910704, -11414391, 25606324, -5972441, 33253853, 8220911, 6358847, -1873857),
            ),
            array(
                array(801428, -2081702, 16569428, 11065167, 29875704, 96627, 7908388, -4480480, -13538503, 1387155),
                array(19646058, 5720633, -11416706, 12814209, 11607948, 12749789, 14147075, 15156355, -21866831, 11835260),
                array(19299512, 1155910, 28703737, 14890794, 2925026, 7269399, 26121523, 15467869, -26560550, 5052483),
            ),
        ),
        array(
            array(
                array(-3017432, 10058206, 1980837, 3964243, 22160966, 12322533, -6431123, -12618185, 12228557, -7003677),
                array(32944382, 14922211, -22844894, 5188528, 21913450, -8719943, 4001465, 13238564, -6114803, 8653815),
                array(22865569, -4652735, 27603668, -12545395, 14348958, 8234005, 24808405, 5719875, 28483275, 2841751),
            ),
            array(
                array(-16420968, -1113305, -327719, -12107856, 21886282, -15552774, -1887966, -315658, 19932058, -12739203),
                array(-11656086, 10087521, -8864888, -5536143, -19278573, -3055912, 3999228, 13239134, -4777469, -13910208),
                array(1382174, -11694719, 17266790, 9194690, -13324356, 9720081, 20403944, 11284705, -14013818, 3093230),
            ),
            array(
                array(16650921, -11037932, -1064178, 1570629, -8329746, 7352753, -302424, 16271225, -24049421, -6691850),
                array(-21911077, -5927941, -4611316, -5560156, -31744103, -10785293, 24123614, 15193618, -21652117, -16739389),
                array(-9935934, -4289447, -25279823, 4372842, 2087473, 10399484, 31870908, 14690798, 17361620, 11864968),
            ),
            array(
                array(-11307610, 6210372, 13206574, 5806320, -29017692, -13967200, -12331205, -7486601, -25578460, -16240689),
                array(14668462, -12270235, 26039039, 15305210, 25515617, 4542480, 10453892, 6577524, 9145645, -6443880),
                array(5974874, 3053895, -9433049, -10385191, -31865124, 3225009, -7972642, 3936128, -5652273, -3050304),
            ),
            array(
                array(30625386, -4729400, -25555961, -12792866, -20484575, 7695099, 17097188, -16303496, -27999779, 1803632),
                array(-3553091, 9865099, -5228566, 4272701, -5673832, -16689700, 14911344, 12196514, -21405489, 7047412),
                array(20093277, 9920966, -11138194, -5343857, 13161587, 12044805, -32856851, 4124601, -32343828, -10257566),
            ),
            array(
                array(-20788824, 14084654, -13531713, 7842147, 19119038, -13822605, 4752377, -8714640, -21679658, 2288038),
                array(-26819236, -3283715, 29965059, 3039786, -14473765, 2540457, 29457502, 14625692, -24819617, 12570232),
                array(-1063558, -11551823, 16920318, 12494842, 1278292, -5869109, -21159943, -3498680, -11974704, 4724943),
            ),
            array(
                array(17960970, -11775534, -4140968, -9702530, -8876562, -1410617, -12907383, -8659932, -29576300, 1903856),
                array(23134274, -14279132, -10681997, -1611936, 20684485, 15770816, -12989750, 3190296, 26955097, 14109738),
                array(15308788, 5320727, -30113809, -14318877, 22902008, 7767164, 29425325, -11277562, 31960942, 11934971),
            ),
            array(
                array(-27395711, 8435796, 4109644, 12222639, -24627868, 14818669, 20638173, 4875028, 10491392, 1379718),
                array(-13159415, 9197841, 3875503, -8936108, -1383712, -5879801, 33518459, 16176658, 21432314, 12180697),
                array(-11787308, 11500838, 13787581, -13832590, -22430679, 10140205, 1465425, 12689540, -10301319, -13872883),
            ),
        ),
        array(
            array(
                array(5414091, -15386041, -21007664, 9643570, 12834970, 1186149, -2622916, -1342231, 26128231, 6032912),
                array(-26337395, -13766162, 32496025, -13653919, 17847801, -12669156, 3604025, 8316894, -25875034, -10437358),
                array(3296484, 6223048, 24680646, -12246460, -23052020, 5903205, -8862297, -4639164, 12376617, 3188849),
            ),
            array(
                array(29190488, -14659046, 27549113, -1183516, 3520066, -10697301, 32049515, -7309113, -16109234, -9852307),
                array(-14744486, -9309156, 735818, -598978, -20407687, -5057904, 25246078, -15795669, 18640741, -960977),
                array(-6928835, -16430795, 10361374, 5642961, 4910474, 12345252, -31638386, -494430, 10530747, 1053335),
            ),
            array(
                array(-29265967, -14186805, -13538216, -12117373, -19457059, -10655384, -31462369, -2948985, 24018831, 15026644),
                array(-22592535, -3145277, -2289276, 5953843, -13440189, 9425631, 25310643, 13003497, -2314791, -15145616),
                array(-27419985, -603321, -8043984, -1669117, -26092265, 13987819, -27297622, 187899, -23166419, -2531735),
            ),
            array(
                array(-21744398, -13810475, 1844840, 5021428, -10434399, -15911473, 9716667, 16266922, -5070217, 726099),
                array(29370922, -6053998, 7334071, -15342259, 9385287, 2247707, -13661962, -4839461, 30007388, -15823341),
                array(-936379, 16086691, 23751945, -543318, -1167538, -5189036, 9137109, 730663, 9835848, 4555336),
            ),
            array(
                array(-23376435, 1410446, -22253753, -12899614, 30867635, 15826977, 17693930, 544696, -11985298, 12422646),
                array(31117226, -12215734, -13502838, 6561947, -9876867, -12757670, -5118685, -4096706, 29120153, 13924425),
                array(-17400879, -14233209, 19675799, -2734756, -11006962, -5858820, -9383939, -11317700, 7240931, -237388),
            ),
            array(
                array(-31361739, -11346780, -15007447, -5856218, -22453340, -12152771, 1222336, 4389483, 3293637, -15551743),
                array(-16684801, -14444245, 11038544, 11054958, -13801175, -3338533, -24319580, 7733547, 12796905, -6335822),
                array(-8759414, -10817836, -25418864, 10783769, -30615557, -9746811, -28253339, 3647836, 3222231, -11160462),
            ),
            array(
                array(18606113, 1693100, -25448386, -15170272, 4112353, 10045021, 23603893, -2048234, -7550776, 2484985),
                array(9255317, -3131197, -12156162, -1004256, 13098013, -9214866, 16377220, -2102812, -19802075, -3034702),
                array(-22729289, 7496160, -5742199, 11329249, 19991973, -3347502, -31718148, 9936966, -30097688, -10618797),
            ),
            array(
                array(21878590, -5001297, 4338336, 13643897, -3036865, 13160960, 19708896, 5415497, -7360503, -4109293),
                array(27736861, 10103576, 12500508, 8502413, -3413016, -9633558, 10436918, -1550276, -23659143, -8132100),
                array(19492550, -12104365, -29681976, -852630, -3208171, 12403437, 30066266, 8367329, 13243957, 8709688),
            ),
        ),
        array(
            array(
                array(12015105, 2801261, 28198131, 10151021, 24818120, -4743133, -11194191, -5645734, 5150968, 7274186),
                array(2831366, -12492146, 1478975, 6122054, 23825128, -12733586, 31097299, 6083058, 31021603, -9793610),
                array(-2529932, -2229646, 445613, 10720828, -13849527, -11505937, -23507731, 16354465, 15067285, -14147707),
            ),
            array(
                array(7840942, 14037873, -33364863, 15934016, -728213, -3642706, 21403988, 1057586, -19379462, -12403220),
                array(915865, -16469274, 15608285, -8789130, -24357026, 6060030, -17371319, 8410997, -7220461, 16527025),
                array(32922597, -556987, 20336074, -16184568, 10903705, -5384487, 16957574, 52992, 23834301, 6588044),
            ),
            array(
                array(32752030, 11232950, 3381995, -8714866, 22652988, -10744103, 17159699, 16689107, -20314580, -1305992),
                array(-4689649, 9166776, -25710296, -10847306, 11576752, 12733943, 7924251, -2752281, 1976123, -7249027),
                array(21251222, 16309901, -2983015, -6783122, 30810597, 12967303, 156041, -3371252, 12331345, -8237197),
            ),
            array(
                array(8651614, -4477032, -16085636, -4996994, 13002507, 2950805, 29054427, -5106970, 10008136, -4667901),
                array(31486080, 15114593, -14261250, 12951354, 14369431, -7387845, 16347321, -13662089, 8684155, -10532952),
                array(19443825, 11385320, 24468943, -9659068, -23919258, 2187569, -26263207, -6086921, 31316348, 14219878),
            ),
            array(
                array(-28594490, 1193785, 32245219, 11392485, 31092169, 15722801, 27146014, 6992409, 29126555, 9207390),
                array(32382935, 1110093, 18477781, 11028262, -27411763, -7548111, -4980517, 10843782, -7957600, -14435730),
                array(2814918, 7836403, 27519878, -7868156, -20894015, -11553689, -21494559, 8550130, 28346258, 1994730),
            ),
            array(
                array(-19578299, 8085545, -14000519, -3948622, 2785838, -16231307, -19516951, 7174894, 22628102, 8115180),
                array(-30405132, 955511, -11133838, -15078069, -32447087, -13278079, -25651578, 3317160, -9943017, 930272),
                array(-15303681, -6833769, 28856490, 1357446, 23421993, 1057177, 24091212, -1388970, -22765376, -10650715),
            ),
            array(
                array(-22751231, -5303997, -12907607, -12768866, -15811511, -7797053, -14839018, -16554220, -1867018, 8398970),
                array(-31969310, 2106403, -4736360, 1362501, 12813763, 16200670, 22981545, -6291273, 18009408, -15772772),
                array(-17220923, -9545221, -27784654, 14166835, 29815394, 7444469, 29551787, -3727419, 19288549, 1325865),
            ),
            array(
                array(15100157, -15835752, -23923978, -1005098, -26450192, 15509408, 12376730, -3479146, 33166107, -8042750),
                array(20909231, 13023121, -9209752, 16251778, -5778415, -8094914, 12412151, 10018715, 2213263, -13878373),
                array(32529814, -11074689, 30361439, -16689753, -9135940, 1513226, 22922121, 6382134, -5766928, 8371348),
            ),
        ),
        array(
            array(
                array(9923462, 11271500, 12616794, 3544722, -29998368, -1721626, 12891687, -8193132, -26442943, 10486144),
                array(-22597207, -7012665, 8587003, -8257861, 4084309, -12970062, 361726, 2610596, -23921530, -11455195),
                array(5408411, -1136691, -4969122, 10561668, 24145918, 14240566, 31319731, -4235541, 19985175, -3436086),
            ),
            array(
                array(-13994457, 16616821, 14549246, 3341099, 32155958, 13648976, -17577068, 8849297, 65030, 8370684),
                array(-8320926, -12049626, 31204563, 5839400, -20627288, -1057277, -19442942, 6922164, 12743482, -9800518),
                array(-2361371, 12678785, 28815050, 4759974, -23893047, 4884717, 23783145, 11038569, 18800704, 255233),
            ),
            array(
                array(-5269658, -1773886, 13957886, 7990715, 23132995, 728773, 13393847, 9066957, 19258688, -14753793),
                array(-2936654, -10827535, -10432089, 14516793, -3640786, 4372541, -31934921, 2209390, -1524053, 2055794),
                array(580882, 16705327, 5468415, -2683018, -30926419, -14696000, -7203346, -8994389, -30021019, 7394435),
            ),
            array(
                array(23838809, 1822728, -15738443, 15242727, 8318092, -3733104, -21672180, -3492205, -4821741, 14799921),
                array(13345610, 9759151, 3371034, -16137791, 16353039, 8577942, 31129804, 13496856, -9056018, 7402518),
                array(2286874, -4435931, -20042458, -2008336, -13696227, 5038122, 11006906, -15760352, 8205061, 1607563),
            ),
            array(
                array(14414086, -8002132, 3331830, -3208217, 22249151, -5594188, 18364661, -2906958, 30019587, -9029278),
                array(-27688051, 1585953, -10775053, 931069, -29120221, -11002319, -14410829, 12029093, 9944378, 8024),
                array(4368715, -3709630, 29874200, -15022983, -20230386, -11410704, -16114594, -999085, -8142388, 5640030),
            ),
            array(
                array(10299610, 13746483, 11661824, 16234854, 7630238, 5998374, 9809887, -16694564, 15219798, -14327783),
                array(27425505, -5719081, 3055006, 10660664, 23458024, 595578, -15398605, -1173195, -18342183, 9742717),
                array(6744077, 2427284, 26042789, 2720740, -847906, 1118974, 32324614, 7406442, 12420155, 1994844),
            ),
            array(
                array(14012521, -5024720, -18384453, -9578469, -26485342, -3936439, -13033478, -10909803, 24319929, -6446333),
                array(16412690, -4507367, 10772641, 15929391, -17068788, -4658621, 10555945, -10484049, -30102368, -4739048),
                array(22397382, -7767684, -9293161, -12792868, 17166287, -9755136, -27333065, 6199366, 21880021, -12250760),
            ),
            array(
                array(-4283307, 5368523, -31117018, 8163389, -30323063, 3209128, 16557151, 8890729, 8840445, 4957760),
                array(-15447727, 709327, -6919446, -10870178, -29777922, 6522332, -21720181, 12130072, -14796503, 5005757),
                array(-2114751, -14308128, 23019042, 15765735, -25269683, 6002752, 10183197, -13239326, -16395286, -2176112),
            ),
        ),
        array(
            array(
                array(-19025756, 1632005, 13466291, -7995100, -23640451, 16573537, -32013908, -3057104, 22208662, 2000468),
                array(3065073, -1412761, -25598674, -361432, -17683065, -5703415, -8164212, 11248527, -3691214, -7414184),
                array(10379208, -6045554, 8877319, 1473647, -29291284, -12507580, 16690915, 2553332, -3132688, 16400289),
            ),
            array(
                array(15716668, 1254266, -18472690, 7446274, -8448918, 6344164, -22097271, -7285580, 26894937, 9132066),
                array(24158887, 12938817, 11085297, -8177598, -28063478, -4457083, -30576463, 64452, -6817084, -2692882),
                array(13488534, 7794716, 22236231, 5989356, 25426474, -12578208, 2350710, -3418511, -4688006, 2364226),
            ),
            array(
                array(16335052, 9132434, 25640582, 6678888, 1725628, 8517937, -11807024, -11697457, 15445875, -7798101),
                array(29004207, -7867081, 28661402, -640412, -12794003, -7943086, 31863255, -4135540, -278050, -15759279),
                array(-6122061, -14866665, -28614905, 14569919, -10857999, -3591829, 10343412, -6976290, -29828287, -10815811),
            ),
            array(
                array(27081650, 3463984, 14099042, -4517604, 1616303, -6205604, 29542636, 15372179, 17293797, 960709),
                array(20263915, 11434237, -5765435, 11236810, 13505955, -10857102, -16111345, 6493122, -19384511, 7639714),
                array(-2830798, -14839232, 25403038, -8215196, -8317012, -16173699, 18006287, -16043750, 29994677, -15808121),
            ),
            array(
                array(9769828, 5202651, -24157398, -13631392, -28051003, -11561624, -24613141, -13860782, -31184575, 709464),
                array(12286395, 13076066, -21775189, -1176622, -25003198, 4057652, -32018128, -8890874, 16102007, 13205847),
                array(13733362, 5599946, 10557076, 3195751, -5557991, 8536970, -25540170, 8525972, 10151379, 10394400),
            ),
            array(
                array(4024660, -16137551, 22436262, 12276534, -9099015, -2686099, 19698229, 11743039, -33302334, 8934414),
                array(-15879800, -4525240, -8580747, -2934061, 14634845, -698278, -9449077, 3137094, -11536886, 11721158),
                array(17555939, -5013938, 8268606, 2331751, -22738815, 9761013, 9319229, 8835153, -9205489, -1280045),
            ),
            array(
                array(-461409, -7830014, 20614118, 16688288, -7514766, -4807119, 22300304, 505429, 6108462, -6183415),
                array(-5070281, 12367917, -30663534, 3234473, 32617080, -8422642, 29880583, -13483331, -26898490, -7867459),
                array(-31975283, 5726539, 26934134, 10237677, -3173717, -605053, 24199304, 3795095, 7592688, -14992079),
            ),
            array(
                array(21594432, -14964228, 17466408, -4077222, 32537084, 2739898, 6407723, 12018833, -28256052, 4298412),
                array(-20650503, -11961496, -27236275, 570498, 3767144, -1717540, 13891942, -1569194, 13717174, 10805743),
                array(-14676630, -15644296, 15287174, 11927123, 24177847, -8175568, -796431, 14860609, -26938930, -5863836),
            ),
        ),
        array(
            array(
                array(12962541, 5311799, -10060768, 11658280, 18855286, -7954201, 13286263, -12808704, -4381056, 9882022),
                array(18512079, 11319350, -20123124, 15090309, 18818594, 5271736, -22727904, 3666879, -23967430, -3299429),
                array(-6789020, -3146043, 16192429, 13241070, 15898607, -14206114, -10084880, -6661110, -2403099, 5276065),
            ),
            array(
                array(30169808, -5317648, 26306206, -11750859, 27814964, 7069267, 7152851, 3684982, 1449224, 13082861),
                array(10342826, 3098505, 2119311, 193222, 25702612, 12233820, 23697382, 15056736, -21016438, -8202000),
                array(-33150110, 3261608, 22745853, 7948688, 19370557, -15177665, -26171976, 6482814, -10300080, -11060101),
            ),
            array(
                array(32869458, -5408545, 25609743, 15678670, -10687769, -15471071, 26112421, 2521008, -22664288, 6904815),
                array(29506923, 4457497, 3377935, -9796444, -30510046, 12935080, 1561737, 3841096, -29003639, -6657642),
                array(10340844, -6630377, -18656632, -2278430, 12621151, -13339055, 30878497, -11824370, -25584551, 5181966),
            ),
            array(
                array(25940115, -12658025, 17324188, -10307374, -8671468, 15029094, 24396252, -16450922, -2322852, -12388574),
                array(-21765684, 9916823, -1300409, 4079498, -1028346, 11909559, 1782390, 12641087, 20603771, -6561742),
                array(-18882287, -11673380, 24849422, 11501709, 13161720, -4768874, 1925523, 11914390, 4662781, 7820689),
            ),
            array(
                array(12241050, -425982, 8132691, 9393934, 32846760, -1599620, 29749456, 12172924, 16136752, 15264020),
                array(-10349955, -14680563, -8211979, 2330220, -17662549, -14545780, 10658213, 6671822, 19012087, 3772772),
                array(3753511, -3421066, 10617074, 2028709, 14841030, -6721664, 28718732, -15762884, 20527771, 12988982),
            ),
            array(
                array(-14822485, -5797269, -3707987, 12689773, -898983, -10914866, -24183046, -10564943, 3299665, -12424953),
                array(-16777703, -15253301, -9642417, 4978983, 3308785, 8755439, 6943197, 6461331, -25583147, 8991218),
                array(-17226263, 1816362, -1673288, -6086439, 31783888, -8175991, -32948145, 7417950, -30242287, 1507265),
            ),
            array(
                array(29692663, 6829891, -10498800, 4334896, 20945975, -11906496, -28887608, 8209391, 14606362, -10647073),
                array(-3481570, 8707081, 32188102, 5672294, 22096700, 1711240, -33020695, 9761487, 4170404, -2085325),
                array(-11587470, 14855945, -4127778, -1531857, -26649089, 15084046, 22186522, 16002000, -14276837, -8400798),
            ),
            array(
                array(-4811456, 13761029, -31703877, -2483919, -3312471, 7869047, -7113572, -9620092, 13240845, 10965870),
                array(-7742563, -8256762, -14768334, -13656260, -23232383, 12387166, 4498947, 14147411, 29514390, 4302863),
                array(-13413405, -12407859, 20757302, -13801832, 14785143, 8976368, -5061276, -2144373, 17846988, -13971927),
            ),
        ),
        array(
            array(
                array(-2244452, -754728, -4597030, -1066309, -6247172, 1455299, -21647728, -9214789, -5222701, 12650267),
                array(-9906797, -16070310, 21134160, 12198166, -27064575, 708126, 387813, 13770293, -19134326, 10958663),
                array(22470984, 12369526, 23446014, -5441109, -21520802, -9698723, -11772496, -11574455, -25083830, 4271862),
            ),
            array(
                array(-25169565, -10053642, -19909332, 15361595, -5984358, 2159192, 75375, -4278529, -32526221, 8469673),
                array(15854970, 4148314, -8893890, 7259002, 11666551, 13824734, -30531198, 2697372, 24154791, -9460943),
                array(15446137, -15806644, 29759747, 14019369, 30811221, -9610191, -31582008, 12840104, 24913809, 9815020),
            ),
            array(
                array(-4709286, -5614269, -31841498, -12288893, -14443537, 10799414, -9103676, 13438769, 18735128, 9466238),
                array(11933045, 9281483, 5081055, -5183824, -2628162, -4905629, -7727821, -10896103, -22728655, 16199064),
                array(14576810, 379472, -26786533, -8317236, -29426508, -10812974, -102766, 1876699, 30801119, 2164795),
            ),
            array(
                array(15995086, 3199873, 13672555, 13712240, -19378835, -4647646, -13081610, -15496269, -13492807, 1268052),
                array(-10290614, -3659039, -3286592, 10948818, 23037027, 3794475, -3470338, -12600221, -17055369, 3565904),
                array(29210088, -9419337, -5919792, -4952785, 10834811, -13327726, -16512102, -10820713, -27162222, -14030531),
            ),
            array(
                array(-13161890, 15508588, 16663704, -8156150, -28349942, 9019123, -29183421, -3769423, 2244111, -14001979),
                array(-5152875, -3800936, -9306475, -6071583, 16243069, 14684434, -25673088, -16180800, 13491506, 4641841),
                array(10813417, 643330, -19188515, -728916, 30292062, -16600078, 27548447, -7721242, 14476989, -12767431),
            ),
            array(
                array(10292079, 9984945, 6481436, 8279905, -7251514, 7032743, 27282937, -1644259, -27912810, 12651324),
                array(-31185513, -813383, 22271204, 11835308, 10201545, 15351028, 17099662, 3988035, 21721536, -3148940),
                array(10202177, -6545839, -31373232, -9574638, -32150642, -8119683, -12906320, 3852694, 13216206, 14842320),
            ),
            array(
                array(-15815640, -10601066, -6538952, -7258995, -6984659, -6581778, -31500847, 13765824, -27434397, 9900184),
                array(14465505, -13833331, -32133984, -14738873, -27443187, 12990492, 33046193, 15796406, -7051866, -8040114),
                array(30924417, -8279620, 6359016, -12816335, 16508377, 9071735, -25488601, 15413635, 9524356, -7018878),
            ),
            array(
                array(12274201, -13175547, 32627641, -1785326, 6736625, 13267305, 5237659, -5109483, 15663516, 4035784),
                array(-2951309, 8903985, 17349946, 601635, -16432815, -4612556, -13732739, -15889334, -22258478, 4659091),
                array(-16916263, -4952973, -30393711, -15158821, 20774812, 15897498, 5736189, 15026997, -2178256, -13455585),
            ),
        ),
        array(
            array(
                array(-8858980, -2219056, 28571666, -10155518, -474467, -10105698, -3801496, 278095, 23440562, -290208),
                array(10226241, -5928702, 15139956, 120818, -14867693, 5218603, 32937275, 11551483, -16571960, -7442864),
                array(17932739, -12437276, -24039557, 10749060, 11316803, 7535897, 22503767, 5561594, -3646624, 3898661),
            ),
            array(
                array(7749907, -969567, -16339731, -16464, -25018111, 15122143, -1573531, 7152530, 21831162, 1245233),
                array(26958459, -14658026, 4314586, 8346991, -5677764, 11960072, -32589295, -620035, -30402091, -16716212),
                array(-12165896, 9166947, 33491384, 13673479, 29787085, 13096535, 6280834, 14587357, -22338025, 13987525),
            ),
            array(
                array(-24349909, 7778775, 21116000, 15572597, -4833266, -5357778, -4300898, -5124639, -7469781, -2858068),
                array(9681908, -6737123, -31951644, 13591838, -6883821, 386950, 31622781, 6439245, -14581012, 4091397),
                array(-8426427, 1470727, -28109679, -1596990, 3978627, -5123623, -19622683, 12092163, 29077877, -14741988),
            ),
            array(
                array(5269168, -6859726, -13230211, -8020715, 25932563, 1763552, -5606110, -5505881, -20017847, 2357889),
                array(32264008, -15407652, -5387735, -1160093, -2091322, -3946900, 23104804, -12869908, 5727338, 189038),
                array(14609123, -8954470, -6000566, -16622781, -14577387, -7743898, -26745169, 10942115, -25888931, -14884697),
            ),
            array(
                array(20513500, 5557931, -15604613, 7829531, 26413943, -2019404, -21378968, 7471781, 13913677, -5137875),
                array(-25574376, 11967826, 29233242, 12948236, -6754465, 4713227, -8940970, 14059180, 12878652, 8511905),
                array(-25656801, 3393631, -2955415, -7075526, -2250709, 9366908, -30223418, 6812974, 5568676, -3127656),
            ),
            array(
                array(11630004, 12144454, 2116339, 13606037, 27378885, 15676917, -17408753, -13504373, -14395196, 8070818),
                array(27117696, -10007378, -31282771, -5570088, 1127282, 12772488, -29845906, 10483306, -11552749, -1028714),
                array(10637467, -5688064, 5674781, 1072708, -26343588, -6982302, -1683975, 9177853, -27493162, 15431203),
            ),
            array(
                array(20525145, 10892566, -12742472, 12779443, -29493034, 16150075, -28240519, 14943142, -15056790, -7935931),
                array(-30024462, 5626926, -551567, -9981087, 753598, 11981191, 25244767, -3239766, -3356550, 9594024),
                array(-23752644, 2636870, -5163910, -10103818, 585134, 7877383, 11345683, -6492290, 13352335, -10977084),
            ),
            array(
                array(-1931799, -5407458, 3304649, -12884869, 17015806, -4877091, -29783850, -7752482, -13215537, -319204),
                array(20239939, 6607058, 6203985, 3483793, -18386976, -779229, -20723742, 15077870, -22750759, 14523817),
                array(27406042, -6041657, 27423596, -4497394, 4996214, 10002360, -28842031, -4545494, -30172742, -4805667),
            ),
        ),
        array(
            array(
                array(11374242, 12660715, 17861383, -12540833, 10935568, 1099227, -13886076, -9091740, -27727044, 11358504),
                array(-12730809, 10311867, 1510375, 10778093, -2119455, -9145702, 32676003, 11149336, -26123651, 4985768),
                array(-19096303, 341147, -6197485, -239033, 15756973, -8796662, -983043, 13794114, -19414307, -15621255),
            ),
            array(
                array(6490081, 11940286, 25495923, -7726360, 8668373, -8751316, 3367603, 6970005, -1691065, -9004790),
                array(1656497, 13457317, 15370807, 6364910, 13605745, 8362338, -19174622, -5475723, -16796596, -5031438),
                array(-22273315, -13524424, -64685, -4334223, -18605636, -10921968, -20571065, -7007978, -99853, -10237333),
            ),
            array(
                array(17747465, 10039260, 19368299, -4050591, -20630635, -16041286, 31992683, -15857976, -29260363, -5511971),
                array(31932027, -4986141, -19612382, 16366580, 22023614, 88450, 11371999, -3744247, 4882242, -10626905),
                array(29796507, 37186, 19818052, 10115756, -11829032, 3352736, 18551198, 3272828, -5190932, -4162409),
            ),
            array(
                array(12501286, 4044383, -8612957, -13392385, -32430052, 5136599, -19230378, -3529697, 330070, -3659409),
                array(6384877, 2899513, 17807477, 7663917, -2358888, 12363165, 25366522, -8573892, -271295, 12071499),
                array(-8365515, -4042521, 25133448, -4517355, -6211027, 2265927, -32769618, 1936675, -5159697, 3829363),
            ),
            array(
                array(28425966, -5835433, -577090, -4697198, -14217555, 6870930, 7921550, -6567787, 26333140, 14267664),
                array(-11067219, 11871231, 27385719, -10559544, -4585914, -11189312, 10004786, -8709488, -21761224, 8930324),
                array(-21197785, -16396035, 25654216, -1725397, 12282012, 11008919, 1541940, 4757911, -26491501, -16408940),
            ),
            array(
                array(13537262, -7759490, -20604840, 10961927, -5922820, -13218065, -13156584, 6217254, -15943699, 13814990),
                array(-17422573, 15157790, 18705543, 29619, 24409717, -260476, 27361681, 9257833, -1956526, -1776914),
                array(-25045300, -10191966, 15366585, 15166509, -13105086, 8423556, -29171540, 12361135, -18685978, 4578290),
            ),
            array(
                array(24579768, 3711570, 1342322, -11180126, -27005135, 14124956, -22544529, 14074919, 21964432, 8235257),
                array(-6528613, -2411497, 9442966, -5925588, 12025640, -1487420, -2981514, -1669206, 13006806, 2355433),
                array(-16304899, -13605259, -6632427, -5142349, 16974359, -10911083, 27202044, 1719366, 1141648, -12796236),
            ),
            array(
                array(-12863944, -13219986, -8318266, -11018091, -6810145, -4843894, 13475066, -3133972, 32674895, 13715045),
                array(11423335, -5468059, 32344216, 8962751, 24989809, 9241752, -13265253, 16086212, -28740881, -15642093),
                array(-1409668, 12530728, -6368726, 10847387, 19531186, -14132160, -11709148, 7791794, -27245943, 4383347),
            ),
        ),
        array(
            array(
                array(-28970898, 5271447, -1266009, -9736989, -12455236, 16732599, -4862407, -4906449, 27193557, 6245191),
                array(-15193956, 5362278, -1783893, 2695834, 4960227, 12840725, 23061898, 3260492, 22510453, 8577507),
                array(-12632451, 11257346, -32692994, 13548177, -721004, 10879011, 31168030, 13952092, -29571492, -3635906),
            ),
            array(
                array(3877321, -9572739, 32416692, 5405324, -11004407, -13656635, 3759769, 11935320, 5611860, 8164018),
                array(-16275802, 14667797, 15906460, 12155291, -22111149, -9039718, 32003002, -8832289, 5773085, -8422109),
                array(-23788118, -8254300, 1950875, 8937633, 18686727, 16459170, -905725, 12376320, 31632953, 190926),
            ),
            array(
                array(-24593607, -16138885, -8423991, 13378746, 14162407, 6901328, -8288749, 4508564, -25341555, -3627528),
                array(8884438, -5884009, 6023974, 10104341, -6881569, -4941533, 18722941, -14786005, -1672488, 827625),
                array(-32720583, -16289296, -32503547, 7101210, 13354605, 2659080, -1800575, -14108036, -24878478, 1541286),
            ),
            array(
                array(2901347, -1117687, 3880376, -10059388, -17620940, -3612781, -21802117, -3567481, 20456845, -1885033),
                array(27019610, 12299467, -13658288, -1603234, -12861660, -4861471, -19540150, -5016058, 29439641, 15138866),
                array(21536104, -6626420, -32447818, -10690208, -22408077, 5175814, -5420040, -16361163, 7779328, 109896),
            ),
            array(
                array(30279744, 14648750, -8044871, 6425558, 13639621, -743509, 28698390, 12180118, 23177719, -554075),
                array(26572847, 3405927, -31701700, 12890905, -19265668, 5335866, -6493768, 2378492, 4439158, -13279347),
                array(-22716706, 3489070, -9225266, -332753, 18875722, -1140095, 14819434, -12731527, -17717757, -5461437),
            ),
            array(
                array(-5056483, 16566551, 15953661, 3767752, -10436499, 15627060, -820954, 2177225, 8550082, -15114165),
                array(-18473302, 16596775, -381660, 15663611, 22860960, 15585581, -27844109, -3582739, -23260460, -8428588),
                array(-32480551, 15707275, -8205912, -5652081, 29464558, 2713815, -22725137, 15860482, -21902570, 1494193),
            ),
            array(
                array(-19562091, -14087393, -25583872, -9299552, 13127842, 759709, 21923482, 16529112, 8742704, 12967017),
                array(-28464899, 1553205, 32536856, -10473729, -24691605, -406174, -8914625, -2933896, -29903758, 15553883),
                array(21877909, 3230008, 9881174, 10539357, -4797115, 2841332, 11543572, 14513274, 19375923, -12647961),
            ),
            array(
                array(8832269, -14495485, 13253511, 5137575, 5037871, 4078777, 24880818, -6222716, 2862653, 9455043),
                array(29306751, 5123106, 20245049, -14149889, 9592566, 8447059, -2077124, -2990080, 15511449, 4789663),
                array(-20679756, 7004547, 8824831, -9434977, -4045704, -3750736, -5754762, 108893, 23513200, 16652362),
            ),
        ),
        array(
            array(
                array(-33256173, 4144782, -4476029, -6579123, 10770039, -7155542, -6650416, -12936300, -18319198, 10212860),
                array(2756081, 8598110, 7383731, -6859892, 22312759, -1105012, 21179801, 2600940, -9988298, -12506466),
                array(-24645692, 13317462, -30449259, -15653928, 21365574, -10869657, 11344424, 864440, -2499677, -16710063),
            ),
            array(
                array(-26432803, 6148329, -17184412, -14474154, 18782929, -275997, -22561534, 211300, 2719757, 4940997),
                array(-1323882, 3911313, -6948744, 14759765, -30027150, 7851207, 21690126, 8518463, 26699843, 5276295),
                array(-13149873, -6429067, 9396249, 365013, 24703301, -10488939, 1321586, 149635, -15452774, 7159369),
            ),
            array(
                array(9987780, -3404759, 17507962, 9505530, 9731535, -2165514, 22356009, 8312176, 22477218, -8403385),
                array(18155857, -16504990, 19744716, 9006923, 15154154, -10538976, 24256460, -4864995, -22548173, 9334109),
                array(2986088, -4911893, 10776628, -3473844, 10620590, -7083203, -21413845, 14253545, -22587149, 536906),
            ),
            array(
                array(4377756, 8115836, 24567078, 15495314, 11625074, 13064599, 7390551, 10589625, 10838060, -15420424),
                array(-19342404, 867880, 9277171, -3218459, -14431572, -1986443, 19295826, -15796950, 6378260, 699185),
                array(7895026, 4057113, -7081772, -13077756, -17886831, -323126, -716039, 15693155, -5045064, -13373962),
            ),
            array(
                array(-7737563, -5869402, -14566319, -7406919, 11385654, 13201616, 31730678, -10962840, -3918636, -9669325),
                array(10188286, -15770834, -7336361, 13427543, 22223443, 14896287, 30743455, 7116568, -21786507, 5427593),
                array(696102, 13206899, 27047647, -10632082, 15285305, -9853179, 10798490, -4578720, 19236243, 12477404),
            ),
            array(
                array(-11229439, 11243796, -17054270, -8040865, -788228, -8167967, -3897669, 11180504, -23169516, 7733644),
                array(17800790, -14036179, -27000429, -11766671, 23887827, 3149671, 23466177, -10538171, 10322027, 15313801),
                array(26246234, 11968874, 32263343, -5468728, 6830755, -13323031, -15794704, -101982, -24449242, 10890804),
            ),
            array(
                array(-31365647, 10271363, -12660625, -6267268, 16690207, -13062544, -14982212, 16484931, 25180797, -5334884),
                array(-586574, 10376444, -32586414, -11286356, 19801893, 10997610, 2276632, 9482883, 316878, 13820577),
                array(-9882808, -4510367, -2115506, 16457136, -11100081, 11674996, 30756178, -7515054, 30696930, -3712849),
            ),
            array(
                array(32988917, -9603412, 12499366, 7910787, -10617257, -11931514, -7342816, -9985397, -32349517, 7392473),
                array(-8855661, 15927861, 9866406, -3649411, -2396914, -16655781, -30409476, -9134995, 25112947, -2926644),
                array(-2504044, -436966, 25621774, -5678772, 15085042, -5479877, -24884878, -13526194, 5537438, -13914319),
            ),
        ),
        array(
            array(
                array(-11225584, 2320285, -9584280, 10149187, -33444663, 5808648, -14876251, -1729667, 31234590, 6090599),
                array(-9633316, 116426, 26083934, 2897444, -6364437, -2688086, 609721, 15878753, -6970405, -9034768),
                array(-27757857, 247744, -15194774, -9002551, 23288161, -10011936, -23869595, 6503646, 20650474, 1804084),
            ),
            array(
                array(-27589786, 15456424, 8972517, 8469608, 15640622, 4439847, 3121995, -10329713, 27842616, -202328),
                array(-15306973, 2839644, 22530074, 10026331, 4602058, 5048462, 28248656, 5031932, -11375082, 12714369),
                array(20807691, -7270825, 29286141, 11421711, -27876523, -13868230, -21227475, 1035546, -19733229, 12796920),
            ),
            array(
                array(12076899, -14301286, -8785001, -11848922, -25012791, 16400684, -17591495, -12899438, 3480665, -15182815),
                array(-32361549, 5457597, 28548107, 7833186, 7303070, -11953545, -24363064, -15921875, -33374054, 2771025),
                array(-21389266, 421932, 26597266, 6860826, 22486084, -6737172, -17137485, -4210226, -24552282, 15673397),
            ),
            array(
                array(-20184622, 2338216, 19788685, -9620956, -4001265, -8740893, -20271184, 4733254, 3727144, -12934448),
                array(6120119, 814863, -11794402, -622716, 6812205, -15747771, 2019594, 7975683, 31123697, -10958981),
                array(30069250, -11435332, 30434654, 2958439, 18399564, -976289, 12296869, 9204260, -16432438, 9648165),
            ),
            array(
                array(32705432, -1550977, 30705658, 7451065, -11805606, 9631813, 3305266, 5248604, -26008332, -11377501),
                array(17219865, 2375039, -31570947, -5575615, -19459679, 9219903, 294711, 15298639, 2662509, -16297073),
                array(-1172927, -7558695, -4366770, -4287744, -21346413, -8434326, 32087529, -1222777, 32247248, -14389861),
            ),
            array(
                array(14312628, 1221556, 17395390, -8700143, -4945741, -8684635, -28197744, -9637817, -16027623, -13378845),
                array(-1428825, -9678990, -9235681, 6549687, -7383069, -468664, 23046502, 9803137, 17597934, 2346211),
                array(18510800, 15337574, 26171504, 981392, -22241552, 7827556, -23491134, -11323352, 3059833, -11782870),
            ),
            array(
                array(10141598, 6082907, 17829293, -1947643, 9830092, 13613136, -25556636, -5544586, -33502212, 3592096),
                array(33114168, -15889352, -26525686, -13343397, 33076705, 8716171, 1151462, 1521897, -982665, -6837803),
                array(-32939165, -4255815, 23947181, -324178, -33072974, -12305637, -16637686, 3891704, 26353178, 693168),
            ),
            array(
                array(30374239, 1595580, -16884039, 13186931, 4600344, 406904, 9585294, -400668, 31375464, 14369965),
                array(-14370654, -7772529, 1510301, 6434173, -18784789, -6262728, 32732230, -13108839, 17901441, 16011505),
                array(18171223, -11934626, -12500402, 15197122, -11038147, -15230035, -19172240, -16046376, 8764035, 12309598),
            ),
        ),
        array(
            array(
                array(5975908, -5243188, -19459362, -9681747, -11541277, 14015782, -23665757, 1228319, 17544096, -10593782),
                array(5811932, -1715293, 3442887, -2269310, -18367348, -8359541, -18044043, -15410127, -5565381, 12348900),
                array(-31399660, 11407555, 25755363, 6891399, -3256938, 14872274, -24849353, 8141295, -10632534, -585479),
            ),
            array(
                array(-12675304, 694026, -5076145, 13300344, 14015258, -14451394, -9698672, -11329050, 30944593, 1130208),
                array(8247766, -6710942, -26562381, -7709309, -14401939, -14648910, 4652152, 2488540, 23550156, -271232),
                array(17294316, -3788438, 7026748, 15626851, 22990044, 113481, 2267737, -5908146, -408818, -137719),
            ),
            array(
                array(16091085, -16253926, 18599252, 7340678, 2137637, -1221657, -3364161, 14550936, 3260525, -7166271),
                array(-4910104, -13332887, 18550887, 10864893, -16459325, -7291596, -23028869, -13204905, -12748722, 2701326),
                array(-8574695, 16099415, 4629974, -16340524, -20786213, -6005432, -10018363, 9276971, 11329923, 1862132),
            ),
            array(
                array(14763076, -15903608, -30918270, 3689867, 3511892, 10313526, -21951088, 12219231, -9037963, -940300),
                array(8894987, -3446094, 6150753, 3013931, 301220, 15693451, -31981216, -2909717, -15438168, 11595570),
                array(15214962, 3537601, -26238722, -14058872, 4418657, -15230761, 13947276, 10730794, -13489462, -4363670),
            ),
            array(
                array(-2538306, 7682793, 32759013, 263109, -29984731, -7955452, -22332124, -10188635, 977108, 699994),
                array(-12466472, 4195084, -9211532, 550904, -15565337, 12917920, 19118110, -439841, -30534533, -14337913),
                array(31788461, -14507657, 4799989, 7372237, 8808585, -14747943, 9408237, -10051775, 12493932, -5409317),
            ),
            array(
                array(-25680606, 5260744, -19235809, -6284470, -3695942, 16566087, 27218280, 2607121, 29375955, 6024730),
                array(842132, -2794693, -4763381, -8722815, 26332018, -12405641, 11831880, 6985184, -9940361, 2854096),
                array(-4847262, -7969331, 2516242, -5847713, 9695691, -7221186, 16512645, 960770, 12121869, 16648078),
            ),
            array(
                array(-15218652, 14667096, -13336229, 2013717, 30598287, -464137, -31504922, -7882064, 20237806, 2838411),
                array(-19288047, 4453152, 15298546, -16178388, 22115043, -15972604, 12544294, -13470457, 1068881, -12499905),
                array(-9558883, -16518835, 33238498, 13506958, 30505848, -1114596, -8486907, -2630053, 12521378, 4845654),
            ),
            array(
                array(-28198521, 10744108, -2958380, 10199664, 7759311, -13088600, 3409348, -873400, -6482306, -12885870),
                array(-23561822, 6230156, -20382013, 10655314, -24040585, -11621172, 10477734, -1240216, -3113227, 13974498),
                array(12966261, 15550616, -32038948, -1615346, 21025980, -629444, 5642325, 7188737, 18895762, 12629579),
            ),
        ),
        array(
            array(
                array(14741879, -14946887, 22177208, -11721237, 1279741, 8058600, 11758140, 789443, 32195181, 3895677),
                array(10758205, 15755439, -4509950, 9243698, -4879422, 6879879, -2204575, -3566119, -8982069, 4429647),
                array(-2453894, 15725973, -20436342, -10410672, -5803908, -11040220, -7135870, -11642895, 18047436, -15281743),
            ),
            array(
                array(-25173001, -11307165, 29759956, 11776784, -22262383, -15820455, 10993114, -12850837, -17620701, -9408468),
                array(21987233, 700364, -24505048, 14972008, -7774265, -5718395, 32155026, 2581431, -29958985, 8773375),
                array(-25568350, 454463, -13211935, 16126715, 25240068, 8594567, 20656846, 12017935, -7874389, -13920155),
            ),
            array(
                array(6028182, 6263078, -31011806, -11301710, -818919, 2461772, -31841174, -5468042, -1721788, -2776725),
                array(-12278994, 16624277, 987579, -5922598, 32908203, 1248608, 7719845, -4166698, 28408820, 6816612),
                array(-10358094, -8237829, 19549651, -12169222, 22082623, 16147817, 20613181, 13982702, -10339570, 5067943),
            ),
            array(
                array(-30505967, -3821767, 12074681, 13582412, -19877972, 2443951, -19719286, 12746132, 5331210, -10105944),
                array(30528811, 3601899, -1957090, 4619785, -27361822, -15436388, 24180793, -12570394, 27679908, -1648928),
                array(9402404, -13957065, 32834043, 10838634, -26580150, -13237195, 26653274, -8685565, 22611444, -12715406),
            ),
            array(
                array(22190590, 1118029, 22736441, 15130463, -30460692, -5991321, 19189625, -4648942, 4854859, 6622139),
                array(-8310738, -2953450, -8262579, -3388049, -10401731, -271929, 13424426, -3567227, 26404409, 13001963),
                array(-31241838, -15415700, -2994250, 8939346, 11562230, -12840670, -26064365, -11621720, -15405155, 11020693),
            ),
            array(
                array(1866042, -7949489, -7898649, -10301010, 12483315, 13477547, 3175636, -12424163, 28761762, 1406734),
                array(-448555, -1777666, 13018551, 3194501, -9580420, -11161737, 24760585, -4347088, 25577411, -13378680),
                array(-24290378, 4759345, -690653, -1852816, 2066747, 10693769, -29595790, 9884936, -9368926, 4745410),
            ),
            array(
                array(-9141284, 6049714, -19531061, -4341411, -31260798, 9944276, -15462008, -11311852, 10931924, -11931931),
                array(-16561513, 14112680, -8012645, 4817318, -8040464, -11414606, -22853429, 10856641, -20470770, 13434654),
                array(22759489, -10073434, -16766264, -1871422, 13637442, -10168091, 1765144, -12654326, 28445307, -5364710),
            ),
            array(
                array(29875063, 12493613, 2795536, -3786330, 1710620, 15181182, -10195717, -8788675, 9074234, 1167180),
                array(-26205683, 11014233, -9842651, -2635485, -26908120, 7532294, -18716888, -9535498, 3843903, 9367684),
                array(-10969595, -6403711, 9591134, 9582310, 11349256, 108879, 16235123, 8601684, -139197, 4242895),
            ),
        ),
        array(
            array(
                array(22092954, -13191123, -2042793, -11968512, 32186753, -11517388, -6574341, 2470660, -27417366, 16625501),
                array(-11057722, 3042016, 13770083, -9257922, 584236, -544855, -7770857, 2602725, -27351616, 14247413),
                array(6314175, -10264892, -32772502, 15957557, -10157730, 168750, -8618807, 14290061, 27108877, -1180880),
            ),
            array(
                array(-8586597, -7170966, 13241782, 10960156, -32991015, -13794596, 33547976, -11058889, -27148451, 981874),
                array(22833440, 9293594, -32649448, -13618667, -9136966, 14756819, -22928859, -13970780, -10479804, -16197962),
                array(-7768587, 3326786, -28111797, 10783824, 19178761, 14905060, 22680049, 13906969, -15933690, 3797899),
            ),
            array(
                array(21721356, -4212746, -12206123, 9310182, -3882239, -13653110, 23740224, -2709232, 20491983, -8042152),
                array(9209270, -15135055, -13256557, -6167798, -731016, 15289673, 25947805, 15286587, 30997318, -6703063),
                array(7392032, 16618386, 23946583, -8039892, -13265164, -1533858, -14197445, -2321576, 17649998, -250080),
            ),
            array(
                array(-9301088, -14193827, 30609526, -3049543, -25175069, -1283752, -15241566, -9525724, -2233253, 7662146),
                array(-17558673, 1763594, -33114336, 15908610, -30040870, -12174295, 7335080, -8472199, -3174674, 3440183),
                array(-19889700, -5977008, -24111293, -9688870, 10799743, -16571957, 40450, -4431835, 4862400, 1133),
            ),
            array(
                array(-32856209, -7873957, -5422389, 14860950, -16319031, 7956142, 7258061, 311861, -30594991, -7379421),
                array(-3773428, -1565936, 28985340, 7499440, 24445838, 9325937, 29727763, 16527196, 18278453, 15405622),
                array(-4381906, 8508652, -19898366, -3674424, -5984453, 15149970, -13313598, 843523, -21875062, 13626197),
            ),
            array(
                array(2281448, -13487055, -10915418, -2609910, 1879358, 16164207, -10783882, 3953792, 13340839, 15928663),
                array(31727126, -7179855, -18437503, -8283652, 2875793, -16390330, -25269894, -7014826, -23452306, 5964753),
                array(4100420, -5959452, -17179337, 6017714, -18705837, 12227141, -26684835, 11344144, 2538215, -7570755),
            ),
            array(
                array(-9433605, 6123113, 11159803, -2156608, 30016280, 14966241, -20474983, 1485421, -629256, -15958862),
                array(-26804558, 4260919, 11851389, 9658551, -32017107, 16367492, -20205425, -13191288, 11659922, -11115118),
                array(26180396, 10015009, -30844224, -8581293, 5418197, 9480663, 2231568, -10170080, 33100372, -1306171),
            ),
            array(
                array(15121113, -5201871, -10389905, 15427821, -27509937, -15992507, 21670947, 4486675, -5931810, -14466380),
                array(16166486, -9483733, -11104130, 6023908, -31926798, -1364923, 2340060, -16254968, -10735770, -10039824),
                array(28042865, -3557089, -12126526, 12259706, -3717498, -6945899, 6766453, -8689599, 18036436, 5803270),
            ),
        ),
        array(
            array(
                array(-817581, 6763912, 11803561, 1585585, 10958447, -2671165, 23855391, 4598332, -6159431, -14117438),
                array(-31031306, -14256194, 17332029, -2383520, 31312682, -5967183, 696309, 50292, -20095739, 11763584),
                array(-594563, -2514283, -32234153, 12643980, 12650761, 14811489, 665117, -12613632, -19773211, -10713562),
            ),
            array(
                array(30464590, -11262872, -4127476, -12734478, 19835327, -7105613, -24396175, 2075773, -17020157, 992471),
                array(18357185, -6994433, 7766382, 16342475, -29324918, 411174, 14578841, 8080033, -11574335, -10601610),
                array(19598397, 10334610, 12555054, 2555664, 18821899, -10339780, 21873263, 16014234, 26224780, 16452269),
            ),
            array(
                array(-30223925, 5145196, 5944548, 16385966, 3976735, 2009897, -11377804, -7618186, -20533829, 3698650),
                array(14187449, 3448569, -10636236, -10810935, -22663880, -3433596, 7268410, -10890444, 27394301, 12015369),
                array(19695761, 16087646, 28032085, 12999827, 6817792, 11427614, 20244189, -1312777, -13259127, -3402461),
            ),
            array(
                array(30860103, 12735208, -1888245, -4699734, -16974906, 2256940, -8166013, 12298312, -8550524, -10393462),
                array(-5719826, -11245325, -1910649, 15569035, 26642876, -7587760, -5789354, -15118654, -4976164, 12651793),
                array(-2848395, 9953421, 11531313, -5282879, 26895123, -12697089, -13118820, -16517902, 9768698, -2533218),
            ),
            array(
                array(-24719459, 1894651, -287698, -4704085, 15348719, -8156530, 32767513, 12765450, 4940095, 10678226),
                array(18860224, 15980149, -18987240, -1562570, -26233012, -11071856, -7843882, 13944024, -24372348, 16582019),
                array(-15504260, 4970268, -29893044, 4175593, -20993212, -2199756, -11704054, 15444560, -11003761, 7989037),
            ),
            array(
                array(31490452, 5568061, -2412803, 2182383, -32336847, 4531686, -32078269, 6200206, -19686113, -14800171),
                array(-17308668, -15879940, -31522777, -2831, -32887382, 16375549, 8680158, -16371713, 28550068, -6857132),
                array(-28126887, -5688091, 16837845, -1820458, -6850681, 12700016, -30039981, 4364038, 1155602, 5988841),
            ),
            array(
                array(21890435, -13272907, -12624011, 12154349, -7831873, 15300496, 23148983, -4470481, 24618407, 8283181),
                array(-33136107, -10512751, 9975416, 6841041, -31559793, 16356536, 3070187, -7025928, 1466169, 10740210),
                array(-1509399, -15488185, -13503385, -10655916, 32799044, 909394, -13938903, -5779719, -32164649, -15327040),
            ),
            array(
                array(3960823, -14267803, -28026090, -15918051, -19404858, 13146868, 15567327, 951507, -3260321, -573935),
                array(24740841, 5052253, -30094131, 8961361, 25877428, 6165135, -24368180, 14397372, -7380369, -6144105),
                array(-28888365, 3510803, -28103278, -1158478, -11238128, -10631454, -15441463, -14453128, -1625486, -6494814),
            ),
        ),
        array(
            array(
                array(793299, -9230478, 8836302, -6235707, -27360908, -2369593, 33152843, -4885251, -9906200, -621852),
                array(5666233, 525582, 20782575, -8038419, -24538499, 14657740, 16099374, 1468826, -6171428, -15186581),
                array(-4859255, -3779343, -2917758, -6748019, 7778750, 11688288, -30404353, -9871238, -1558923, -9863646),
            ),
            array(
                array(10896332, -7719704, 824275, 472601, -19460308, 3009587, 25248958, 14783338, -30581476, -15757844),
                array(10566929, 12612572, -31944212, 11118703, -12633376, 12362879, 21752402, 8822496, 24003793, 14264025),
                array(27713862, -7355973, -11008240, 9227530, 27050101, 2504721, 23886875, -13117525, 13958495, -5732453),
            ),
            array(
                array(-23481610, 4867226, -27247128, 3900521, 29838369, -8212291, -31889399, -10041781, 7340521, -15410068),
                array(4646514, -8011124, -22766023, -11532654, 23184553, 8566613, 31366726, -1381061, -15066784, -10375192),
                array(-17270517, 12723032, -16993061, 14878794, 21619651, -6197576, 27584817, 3093888, -8843694, 3849921),
            ),
            array(
                array(-9064912, 2103172, 25561640, -15125738, -5239824, 9582958, 32477045, -9017955, 5002294, -15550259),
                array(-12057553, -11177906, 21115585, -13365155, 8808712, -12030708, 16489530, 13378448, -25845716, 12741426),
                array(-5946367, 10645103, -30911586, 15390284, -3286982, -7118677, 24306472, 15852464, 28834118, -7646072),
            ),
            array(
                array(-17335748, -9107057, -24531279, 9434953, -8472084, -583362, -13090771, 455841, 20461858, 5491305),
                array(13669248, -16095482, -12481974, -10203039, -14569770, -11893198, -24995986, 11293807, -28588204, -9421832),
                array(28497928, 6272777, -33022994, 14470570, 8906179, -1225630, 18504674, -14165166, 29867745, -8795943),
            ),
            array(
                array(-16207023, 13517196, -27799630, -13697798, 24009064, -6373891, -6367600, -13175392, 22853429, -4012011),
                array(24191378, 16712145, -13931797, 15217831, 14542237, 1646131, 18603514, -11037887, 12876623, -2112447),
                array(17902668, 4518229, -411702, -2829247, 26878217, 5258055, -12860753, 608397, 16031844, 3723494),
            ),
            array(
                array(-28632773, 12763728, -20446446, 7577504, 33001348, -13017745, 17558842, -7872890, 23896954, -4314245),
                array(-20005381, -12011952, 31520464, 605201, 2543521, 5991821, -2945064, 7229064, -9919646, -8826859),
                array(28816045, 298879, -28165016, -15920938, 19000928, -1665890, -12680833, -2949325, -18051778, -2082915),
            ),
            array(
                array(16000882, -344896, 3493092, -11447198, -29504595, -13159789, 12577740, 16041268, -19715240, 7847707),
                array(10151868, 10572098, 27312476, 7922682, 14825339, 4723128, -32855931, -6519018, -10020567, 3852848),
                array(-11430470, 15697596, -21121557, -4420647, 5386314, 15063598, 16514493, -15932110, 29330899, -15076224),
            ),
        ),
        array(
            array(
                array(-25499735, -4378794, -15222908, -6901211, 16615731, 2051784, 3303702, 15490, -27548796, 12314391),
                array(15683520, -6003043, 18109120, -9980648, 15337968, -5997823, -16717435, 15921866, 16103996, -3731215),
                array(-23169824, -10781249, 13588192, -1628807, -3798557, -1074929, -19273607, 5402699, -29815713, -9841101),
            ),
            array(
                array(23190676, 2384583, -32714340, 3462154, -29903655, -1529132, -11266856, 8911517, -25205859, 2739713),
                array(21374101, -3554250, -33524649, 9874411, 15377179, 11831242, -33529904, 6134907, 4931255, 11987849),
                array(-7732, -2978858, -16223486, 7277597, 105524, -322051, -31480539, 13861388, -30076310, 10117930),
            ),
            array(
                array(-29501170, -10744872, -26163768, 13051539, -25625564, 5089643, -6325503, 6704079, 12890019, 15728940),
                array(-21972360, -11771379, -951059, -4418840, 14704840, 2695116, 903376, -10428139, 12885167, 8311031),
                array(-17516482, 5352194, 10384213, -13811658, 7506451, 13453191, 26423267, 4384730, 1888765, -5435404),
            ),
            array(
                array(-25817338, -3107312, -13494599, -3182506, 30896459, -13921729, -32251644, -12707869, -19464434, -3340243),
                array(-23607977, -2665774, -526091, 4651136, 5765089, 4618330, 6092245, 14845197, 17151279, -9854116),
                array(-24830458, -12733720, -15165978, 10367250, -29530908, -265356, 22825805, -7087279, -16866484, 16176525),
            ),
            array(
                array(-23583256, 6564961, 20063689, 3798228, -4740178, 7359225, 2006182, -10363426, -28746253, -10197509),
                array(-10626600, -4486402, -13320562, -5125317, 3432136, -6393229, 23632037, -1940610, 32808310, 1099883),
                array(15030977, 5768825, -27451236, -2887299, -6427378, -15361371, -15277896, -6809350, 2051441, -15225865),
            ),
            array(
                array(-3362323, -7239372, 7517890, 9824992, 23555850, 295369, 5148398, -14154188, -22686354, 16633660),
                array(4577086, -16752288, 13249841, -15304328, 19958763, -14537274, 18559670, -10759549, 8402478, -9864273),
                array(-28406330, -1051581, -26790155, -907698, -17212414, -11030789, 9453451, -14980072, 17983010, 9967138),
            ),
            array(
                array(-25762494, 6524722, 26585488, 9969270, 24709298, 1220360, -1677990, 7806337, 17507396, 3651560),
                array(-10420457, -4118111, 14584639, 15971087, -15768321, 8861010, 26556809, -5574557, -18553322, -11357135),
                array(2839101, 14284142, 4029895, 3472686, 14402957, 12689363, -26642121, 8459447, -5605463, -7621941),
            ),
            array(
                array(-4839289, -3535444, 9744961, 2871048, 25113978, 3187018, -25110813, -849066, 17258084, -7977739),
                array(18164541, -10595176, -17154882, -1542417, 19237078, -9745295, 23357533, -15217008, 26908270, 12150756),
                array(-30264870, -7647865, 5112249, -7036672, -1499807, -6974257, 43168, -5537701, -32302074, 16215819),
            ),
        ),
        array(
            array(
                array(-6898905, 9824394, -12304779, -4401089, -31397141, -6276835, 32574489, 12532905, -7503072, -8675347),
                array(-27343522, -16515468, -27151524, -10722951, 946346, 16291093, 254968, 7168080, 21676107, -1943028),
                array(21260961, -8424752, -16831886, -11920822, -23677961, 3968121, -3651949, -6215466, -3556191, -7913075),
            ),
            array(
                array(16544754, 13250366, -16804428, 15546242, -4583003, 12757258, -2462308, -8680336, -18907032, -9662799),
                array(-2415239, -15577728, 18312303, 4964443, -15272530, -12653564, 26820651, 16690659, 25459437, -4564609),
                array(-25144690, 11425020, 28423002, -11020557, -6144921, -15826224, 9142795, -2391602, -6432418, -1644817),
            ),
            array(
                array(-23104652, 6253476, 16964147, -3768872, -25113972, -12296437, -27457225, -16344658, 6335692, 7249989),
                array(-30333227, 13979675, 7503222, -12368314, -11956721, -4621693, -30272269, 2682242, 25993170, -12478523),
                array(4364628, 5930691, 32304656, -10044554, -8054781, 15091131, 22857016, -10598955, 31820368, 15075278),
            ),
            array(
                array(31879134, -8918693, 17258761, 90626, -8041836, -4917709, 24162788, -9650886, -17970238, 12833045),
                array(19073683, 14851414, -24403169, -11860168, 7625278, 11091125, -19619190, 2074449, -9413939, 14905377),
                array(24483667, -11935567, -2518866, -11547418, -1553130, 15355506, -25282080, 9253129, 27628530, -7555480),
            ),
            array(
                array(17597607, 8340603, 19355617, 552187, 26198470, -3176583, 4593324, -9157582, -14110875, 15297016),
                array(510886, 14337390, -31785257, 16638632, 6328095, 2713355, -20217417, -11864220, 8683221, 2921426),
                array(18606791, 11874196, 27155355, -5281482, -24031742, 6265446, -25178240, -1278924, 4674690, 13890525),
            ),
            array(
                array(13609624, 13069022, -27372361, -13055908, 24360586, 9592974, 14977157, 9835105, 4389687, 288396),
                array(9922506, -519394, 13613107, 5883594, -18758345, -434263, -12304062, 8317628, 23388070, 16052080),
                array(12720016, 11937594, -31970060, -5028689, 26900120, 8561328, -20155687, -11632979, -14754271, -10812892),
            ),
            array(
                array(15961858, 14150409, 26716931, -665832, -22794328, 13603569, 11829573, 7467844, -28822128, 929275),
                array(11038231, -11582396, -27310482, -7316562, -10498527, -16307831, -23479533, -9371869, -21393143, 2465074),
                array(20017163, -4323226, 27915242, 1529148, 12396362, 15675764, 13817261, -9658066, 2463391, -4622140),
            ),
            array(
                array(-16358878, -12663911, -12065183, 4996454, -1256422, 1073572, 9583558, 12851107, 4003896, 12673717),
                array(-1731589, -15155870, -3262930, 16143082, 19294135, 13385325, 14741514, -9103726, 7903886, 2348101),
                array(24536016, -16515207, 12715592, -3862155, 1511293, 10047386, -3842346, -7129159, -28377538, 10048127),
            ),
        ),
        array(
            array(
                array(-12622226, -6204820, 30718825, 2591312, -10617028, 12192840, 18873298, -7297090, -32297756, 15221632),
                array(-26478122, -11103864, 11546244, -1852483, 9180880, 7656409, -21343950, 2095755, 29769758, 6593415),
                array(-31994208, -2907461, 4176912, 3264766, 12538965, -868111, 26312345, -6118678, 30958054, 8292160),
            ),
            array(
                array(31429822, -13959116, 29173532, 15632448, 12174511, -2760094, 32808831, 3977186, 26143136, -3148876),
                array(22648901, 1402143, -22799984, 13746059, 7936347, 365344, -8668633, -1674433, -3758243, -2304625),
                array(-15491917, 8012313, -2514730, -12702462, -23965846, -10254029, -1612713, -1535569, -16664475, 8194478),
            ),
            array(
                array(27338066, -7507420, -7414224, 10140405, -19026427, -6589889, 27277191, 8855376, 28572286, 3005164),
                array(26287124, 4821776, 25476601, -4145903, -3764513, -15788984, -18008582, 1182479, -26094821, -13079595),
                array(-7171154, 3178080, 23970071, 6201893, -17195577, -4489192, -21876275, -13982627, 32208683, -1198248),
            ),
            array(
                array(-16657702, 2817643, -10286362, 14811298, 6024667, 13349505, -27315504, -10497842, -27672585, -11539858),
                array(15941029, -9405932, -21367050, 8062055, 31876073, -238629, -15278393, -1444429, 15397331, -4130193),
                array(8934485, -13485467, -23286397, -13423241, -32446090, 14047986, 31170398, -1441021, -27505566, 15087184),
            ),
            array(
                array(-18357243, -2156491, 24524913, -16677868, 15520427, -6360776, -15502406, 11461896, 16788528, -5868942),
                array(-1947386, 16013773, 21750665, 3714552, -17401782, -16055433, -3770287, -10323320, 31322514, -11615635),
                array(21426655, -5650218, -13648287, -5347537, -28812189, -4920970, -18275391, -14621414, 13040862, -12112948),
            ),
            array(
                array(11293895, 12478086, -27136401, 15083750, -29307421, 14748872, 14555558, -13417103, 1613711, 4896935),
                array(-25894883, 15323294, -8489791, -8057900, 25967126, -13425460, 2825960, -4897045, -23971776, -11267415),
                array(-15924766, -5229880, -17443532, 6410664, 3622847, 10243618, 20615400, 12405433, -23753030, -8436416),
            ),
            array(
                array(-7091295, 12556208, -20191352, 9025187, -17072479, 4333801, 4378436, 2432030, 23097949, -566018),
                array(4565804, -16025654, 20084412, -7842817, 1724999, 189254, 24767264, 10103221, -18512313, 2424778),
                array(366633, -11976806, 8173090, -6890119, 30788634, 5745705, -7168678, 1344109, -3642553, 12412659),
            ),
            array(
                array(-24001791, 7690286, 14929416, -168257, -32210835, -13412986, 24162697, -15326504, -3141501, 11179385),
                array(18289522, -14724954, 8056945, 16430056, -21729724, 7842514, -6001441, -1486897, -18684645, -11443503),
                array(476239, 6601091, -6152790, -9723375, 17503545, -4863900, 27672959, 13403813, 11052904, 5219329),
            ),
        ),
        array(
            array(
                array(20678546, -8375738, -32671898, 8849123, -5009758, 14574752, 31186971, -3973730, 9014762, -8579056),
                array(-13644050, -10350239, -15962508, 5075808, -1514661, -11534600, -33102500, 9160280, 8473550, -3256838),
                array(24900749, 14435722, 17209120, -15292541, -22592275, 9878983, -7689309, -16335821, -24568481, 11788948),
            ),
            array(
                array(-3118155, -11395194, -13802089, 14797441, 9652448, -6845904, -20037437, 10410733, -24568470, -1458691),
                array(-15659161, 16736706, -22467150, 10215878, -9097177, 7563911, 11871841, -12505194, -18513325, 8464118),
                array(-23400612, 8348507, -14585951, -861714, -3950205, -6373419, 14325289, 8628612, 33313881, -8370517),
            ),
            array(
                array(-20186973, -4967935, 22367356, 5271547, -1097117, -4788838, -24805667, -10236854, -8940735, -5818269),
                array(-6948785, -1795212, -32625683, -16021179, 32635414, -7374245, 15989197, -12838188, 28358192, -4253904),
                array(-23561781, -2799059, -32351682, -1661963, -9147719, 10429267, -16637684, 4072016, -5351664, 5596589),
            ),
            array(
                array(-28236598, -3390048, 12312896, 6213178, 3117142, 16078565, 29266239, 2557221, 1768301, 15373193),
                array(-7243358, -3246960, -4593467, -7553353, -127927, -912245, -1090902, -4504991, -24660491, 3442910),
                array(-30210571, 5124043, 14181784, 8197961, 18964734, -11939093, 22597931, 7176455, -18585478, 13365930),
            ),
            array(
                array(-7877390, -1499958, 8324673, 4690079, 6261860, 890446, 24538107, -8570186, -9689599, -3031667),
                array(25008904, -10771599, -4305031, -9638010, 16265036, 15721635, 683793, -11823784, 15723479, -15163481),
                array(-9660625, 12374379, -27006999, -7026148, -7724114, -12314514, 11879682, 5400171, 519526, -1235876),
            ),
            array(
                array(22258397, -16332233, -7869817, 14613016, -22520255, -2950923, -20353881, 7315967, 16648397, 7605640),
                array(-8081308, -8464597, -8223311, 9719710, 19259459, -15348212, 23994942, -5281555, -9468848, 4763278),
                array(-21699244, 9220969, -15730624, 1084137, -25476107, -2852390, 31088447, -7764523, -11356529, 728112),
            ),
            array(
                array(26047220, -11751471, -6900323, -16521798, 24092068, 9158119, -4273545, -12555558, -29365436, -5498272),
                array(17510331, -322857, 5854289, 8403524, 17133918, -3112612, -28111007, 12327945, 10750447, 10014012),
                array(-10312768, 3936952, 9156313, -8897683, 16498692, -994647, -27481051, -666732, 3424691, 7540221),
            ),
            array(
                array(30322361, -6964110, 11361005, -4143317, 7433304, 4989748, -7071422, -16317219, -9244265, 15258046),
                array(13054562, -2779497, 19155474, 469045, -12482797, 4566042, 5631406, 2711395, 1062915, -5136345),
                array(-19240248, -11254599, -29509029, -7499965, -5835763, 13005411, -6066489, 12194497, 32960380, 1459310),
            ),
        ),
        array(
            array(
                array(19852034, 7027924, 23669353, 10020366, 8586503, -6657907, 394197, -6101885, 18638003, -11174937),
                array(31395534, 15098109, 26581030, 8030562, -16527914, -5007134, 9012486, -7584354, -6643087, -5442636),
                array(-9192165, -2347377, -1997099, 4529534, 25766844, 607986, -13222, 9677543, -32294889, -6456008),
            ),
            array(
                array(-2444496, -149937, 29348902, 8186665, 1873760, 12489863, -30934579, -7839692, -7852844, -8138429),
                array(-15236356, -15433509, 7766470, 746860, 26346930, -10221762, -27333451, 10754588, -9431476, 5203576),
                array(31834314, 14135496, -770007, 5159118, 20917671, -16768096, -7467973, -7337524, 31809243, 7347066),
            ),
            array(
                array(-9606723, -11874240, 20414459, 13033986, 13716524, -11691881, 19797970, -12211255, 15192876, -2087490),
                array(-12663563, -2181719, 1168162, -3804809, 26747877, -14138091, 10609330, 12694420, 33473243, -13382104),
                array(33184999, 11180355, 15832085, -11385430, -1633671, 225884, 15089336, -11023903, -6135662, 14480053),
            ),
            array(
                array(31308717, -5619998, 31030840, -1897099, 15674547, -6582883, 5496208, 13685227, 27595050, 8737275),
                array(-20318852, -15150239, 10933843, -16178022, 8335352, -7546022, -31008351, -12610604, 26498114, 66511),
                array(22644454, -8761729, -16671776, 4884562, -3105614, -13559366, 30540766, -4286747, -13327787, -7515095),
            ),
            array(
                array(-28017847, 9834845, 18617207, -2681312, -3401956, -13307506, 8205540, 13585437, -17127465, 15115439),
                array(23711543, -672915, 31206561, -8362711, 6164647, -9709987, -33535882, -1426096, 8236921, 16492939),
                array(-23910559, -13515526, -26299483, -4503841, 25005590, -7687270, 19574902, 10071562, 6708380, -6222424),
            ),
            array(
                array(2101391, -4930054, 19702731, 2367575, -15427167, 1047675, 5301017, 9328700, 29955601, -11678310),
                array(3096359, 9271816, -21620864, -15521844, -14847996, -7592937, -25892142, -12635595, -9917575, 6216608),
                array(-32615849, 338663, -25195611, 2510422, -29213566, -13820213, 24822830, -6146567, -26767480, 7525079),
            ),
            array(
                array(-23066649, -13985623, 16133487, -7896178, -3389565, 778788, -910336, -2782495, -19386633, 11994101),
                array(21691500, -13624626, -641331, -14367021, 3285881, -3483596, -25064666, 9718258, -7477437, 13381418),
                array(18445390, -4202236, 14979846, 11622458, -1727110, -3582980, 23111648, -6375247, 28535282, 15779576),
            ),
            array(
                array(30098053, 3089662, -9234387, 16662135, -21306940, 11308411, -14068454, 12021730, 9955285, -16303356),
                array(9734894, -14576830, -7473633, -9138735, 2060392, 11313496, -18426029, 9924399, 20194861, 13380996),
                array(-26378102, -7965207, -22167821, 15789297, -18055342, -6168792, -1984914, 15707771, 26342023, 10146099),
            ),
        ),
        array(
            array(
                array(-26016874, -219943, 21339191, -41388, 19745256, -2878700, -29637280, 2227040, 21612326, -545728),
                array(-13077387, 1184228, 23562814, -5970442, -20351244, -6348714, 25764461, 12243797, -20856566, 11649658),
                array(-10031494, 11262626, 27384172, 2271902, 26947504, -15997771, 39944, 6114064, 33514190, 2333242),
            ),
            array(
                array(-21433588, -12421821, 8119782, 7219913, -21830522, -9016134, -6679750, -12670638, 24350578, -13450001),
                array(-4116307, -11271533, -23886186, 4843615, -30088339, 690623, -31536088, -10406836, 8317860, 12352766),
                array(18200138, -14475911, -33087759, -2696619, -23702521, -9102511, -23552096, -2287550, 20712163, 6719373),
            ),
            array(
                array(26656208, 6075253, -7858556, 1886072, -28344043, 4262326, 11117530, -3763210, 26224235, -3297458),
                array(-17168938, -14854097, -3395676, -16369877, -19954045, 14050420, 21728352, 9493610, 18620611, -16428628),
                array(-13323321, 13325349, 11432106, 5964811, 18609221, 6062965, -5269471, -9725556, -30701573, -16479657),
            ),
            array(
                array(-23860538, -11233159, 26961357, 1640861, -32413112, -16737940, 12248509, -5240639, 13735342, 1934062),
                array(25089769, 6742589, 17081145, -13406266, 21909293, -16067981, -15136294, -3765346, -21277997, 5473616),
                array(31883677, -7961101, 1083432, -11572403, 22828471, 13290673, -7125085, 12469656, 29111212, -5451014),
            ),
            array(
                array(24244947, -15050407, -26262976, 2791540, -14997599, 16666678, 24367466, 6388839, -10295587, 452383),
                array(-25640782, -3417841, 5217916, 16224624, 19987036, -4082269, -24236251, -5915248, 15766062, 8407814),
                array(-20406999, 13990231, 15495425, 16395525, 5377168, 15166495, -8917023, -4388953, -8067909, 2276718),
            ),
            array(
                array(30157918, 12924066, -17712050, 9245753, 19895028, 3368142, -23827587, 5096219, 22740376, -7303417),
                array(2041139, -14256350, 7783687, 13876377, -25946985, -13352459, 24051124, 13742383, -15637599, 13295222),
                array(33338237, -8505733, 12532113, 7977527, 9106186, -1715251, -17720195, -4612972, -4451357, -14669444),
            ),
            array(
                array(-20045281, 5454097, -14346548, 6447146, 28862071, 1883651, -2469266, -4141880, 7770569, 9620597),
                array(23208068, 7979712, 33071466, 8149229, 1758231, -10834995, 30945528, -1694323, -33502340, -14767970),
                array(1439958, -16270480, -1079989, -793782, 4625402, 10647766, -5043801, 1220118, 30494170, -11440799),
            ),
            array(
                array(-5037580, -13028295, -2970559, -3061767, 15640974, -6701666, -26739026, 926050, -1684339, -13333647),
                array(13908495, -3549272, 30919928, -6273825, -21521863, 7989039, 9021034, 9078865, 3353509, 4033511),
                array(-29663431, -15113610, 32259991, -344482, 24295849, -12912123, 23161163, 8839127, 27485041, 7356032),
            ),
        ),
        array(
            array(
                array(9661027, 705443, 11980065, -5370154, -1628543, 14661173, -6346142, 2625015, 28431036, -16771834),
                array(-23839233, -8311415, -25945511, 7480958, -17681669, -8354183, -22545972, 14150565, 15970762, 4099461),
                array(29262576, 16756590, 26350592, -8793563, 8529671, -11208050, 13617293, -9937143, 11465739, 8317062),
            ),
            array(
                array(-25493081, -6962928, 32500200, -9419051, -23038724, -2302222, 14898637, 3848455, 20969334, -5157516),
                array(-20384450, -14347713, -18336405, 13884722, -33039454, 2842114, -21610826, -3649888, 11177095, 14989547),
                array(-24496721, -11716016, 16959896, 2278463, 12066309, 10137771, 13515641, 2581286, -28487508, 9930240),
            ),
            array(
                array(-17751622, -2097826, 16544300, -13009300, -15914807, -14949081, 18345767, -13403753, 16291481, -5314038),
                array(-33229194, 2553288, 32678213, 9875984, 8534129, 6889387, -9676774, 6957617, 4368891, 9788741),
                array(16660756, 7281060, -10830758, 12911820, 20108584, -8101676, -21722536, -8613148, 16250552, -11111103),
            ),
            array(
                array(-19765507, 2390526, -16551031, 14161980, 1905286, 6414907, 4689584, 10604807, -30190403, 4782747),
                array(-1354539, 14736941, -7367442, -13292886, 7710542, -14155590, -9981571, 4383045, 22546403, 437323),
                array(31665577, -12180464, -16186830, 1491339, -18368625, 3294682, 27343084, 2786261, -30633590, -14097016),
            ),
            array(
                array(-14467279, -683715, -33374107, 7448552, 19294360, 14334329, -19690631, 2355319, -19284671, -6114373),
                array(15121312, -15796162, 6377020, -6031361, -10798111, -12957845, 18952177, 15496498, -29380133, 11754228),
                array(-2637277, -13483075, 8488727, -14303896, 12728761, -1622493, 7141596, 11724556, 22761615, -10134141),
            ),
            array(
                array(16918416, 11729663, -18083579, 3022987, -31015732, -13339659, -28741185, -12227393, 32851222, 11717399),
                array(11166634, 7338049, -6722523, 4531520, -29468672, -7302055, 31474879, 3483633, -1193175, -4030831),
                array(-185635, 9921305, 31456609, -13536438, -12013818, 13348923, 33142652, 6546660, -19985279, -3948376),
            ),
            array(
                array(-32460596, 11266712, -11197107, -7899103, 31703694, 3855903, -8537131, -12833048, -30772034, -15486313),
                array(-18006477, 12709068, 3991746, -6479188, -21491523, -10550425, -31135347, -16049879, 10928917, 3011958),
                array(-6957757, -15594337, 31696059, 334240, 29576716, 14796075, -30831056, -12805180, 18008031, 10258577),
            ),
            array(
                array(-22448644, 15655569, 7018479, -4410003, -30314266, -1201591, -1853465, 1367120, 25127874, 6671743),
                array(29701166, -14373934, -10878120, 9279288, -17568, 13127210, 21382910, 11042292, 25838796, 4642684),
                array(-20430234, 14955537, -24126347, 8124619, -5369288, -5990470, 30468147, -13900640, 18423289, 4177476),
            ),
        )
    );

    /**
     * See: libsodium's crypto_core/curve25519/ref10/base2.h
     *
     * @var array basically int[8][3]
     */
    protected static $base2 = array(
        array(
            array(25967493, -14356035, 29566456, 3660896, -12694345, 4014787, 27544626, -11754271, -6079156, 2047605),
            array(-12545711, 934262, -2722910, 3049990, -727428, 9406986, 12720692, 5043384, 19500929, -15469378),
            array(-8738181, 4489570, 9688441, -14785194, 10184609, -12363380, 29287919, 11864899, -24514362, -4438546),
        ),
        array(
            array(15636291, -9688557, 24204773, -7912398, 616977, -16685262, 27787600, -14772189, 28944400, -1550024),
            array(16568933, 4717097, -11556148, -1102322, 15682896, -11807043, 16354577, -11775962, 7689662, 11199574),
            array(30464156, -5976125, -11779434, -15670865, 23220365, 15915852, 7512774, 10017326, -17749093, -9920357),
        ),
        array(
            array(10861363, 11473154, 27284546, 1981175, -30064349, 12577861, 32867885, 14515107, -15438304, 10819380),
            array(4708026, 6336745, 20377586, 9066809, -11272109, 6594696, -25653668, 12483688, -12668491, 5581306),
            array(19563160, 16186464, -29386857, 4097519, 10237984, -4348115, 28542350, 13850243, -23678021, -15815942),
        ),
        array(
            array(5153746, 9909285, 1723747, -2777874, 30523605, 5516873, 19480852, 5230134, -23952439, -15175766),
            array(-30269007, -3463509, 7665486, 10083793, 28475525, 1649722, 20654025, 16520125, 30598449, 7715701),
            array(28881845, 14381568, 9657904, 3680757, -20181635, 7843316, -31400660, 1370708, 29794553, -1409300),
        ),
        array(
            array(-22518993, -6692182, 14201702, -8745502, -23510406, 8844726, 18474211, -1361450, -13062696, 13821877),
            array(-6455177, -7839871, 3374702, -4740862, -27098617, -10571707, 31655028, -7212327, 18853322, -14220951),
            array(4566830, -12963868, -28974889, -12240689, -7602672, -2830569, -8514358, -10431137, 2207753, -3209784),
        ),
        array(
            array(-25154831, -4185821, 29681144, 7868801, -6854661, -9423865, -12437364, -663000, -31111463, -16132436),
            array(25576264, -2703214, 7349804, -11814844, 16472782, 9300885, 3844789, 15725684, 171356, 6466918),
            array(23103977, 13316479, 9739013, -16149481, 817875, -15038942, 8965339, -14088058, -30714912, 16193877),
        ),
        array(
            array(-33521811, 3180713, -2394130, 14003687, -16903474, -16270840, 17238398, 4729455, -18074513, 9256800),
            array(-25182317, -4174131, 32336398, 5036987, -21236817, 11360617, 22616405, 9761698, -19827198, 630305),
            array(-13720693, 2639453, -24237460, -7406481, 9494427, -5774029, -6554551, -15960994, -2449256, -14291300),
        ),
        array(
            array(-3151181, -5046075, 9282714, 6866145, -31907062, -863023, -18940575, 15033784, 25105118, -7894876),
            array(-24326370, 15950226, -31801215, -14592823, -11662737, -5090925, 1573892, -2625887, 2198790, -15804619),
            array(-3099351, 10324967, -2241613, 7453183, -5446979, -2735503, -13812022, -16236442, -32461234, -12290683),
        )
    );

    /**
     * 37095705934669439343138083508754565189542113879843219016388785533085940283555
     *
     * @var array<int, int>
     */
    protected static $d = array(
        -10913610,
        13857413,
        -15372611,
        6949391,
        114729,
        -8787816,
        -6275908,
        -3247719,
        -18696448,
        -12055116
    );

    /**
     * 2 * d = 16295367250680780974490674513165176452449235426866156013048779062215315747161
     *
     * @var array<int, int>
     */
    protected static $d2 = array(
        -21827239,
        -5839606,
        -30745221,
        13898782,
        229458,
        15978800,
        -12551817,
        -6495438,
        29715968,
        9444199
    );

    /**
     * sqrt(-1)
     *
     * @var array<int, int>
     */
    protected static $sqrtm1 = array(
        -32595792,
        -7943725,
        9377950,
        3500415,
        12389472,
        -272473,
        -25146209,
        -2005654,
        326686,
        11406482
    );

    /**
     * 1 / sqrt(a - d)
     *
     * @var array<int, int>
     */
    protected static $invsqrtamd = array(
        6111485,
        4156064,
        -27798727,
        12243468,
        -25904040,
        120897,
        20826367,
        -7060776,
        6093568,
        -1986012
    );

    /**
     *  sqrt(ad - 1) with a = -1 (mod p)
     *
     * @var array<int, int>
     */
    protected static $sqrtadm1 = array(
        24849947,
        -153582,
        -23613485,
        6347715,
        -21072328,
        -667138,
        -25271143,
        -15367704,
        -870347,
        14525639
    );

    /**
     * 1 - d ^ 2
     *
     * @var array<int, int>
     */
    protected static $onemsqd = array(
        6275446,
        -16617371,
        -22938544,
        -3773710,
        11667077,
        7397348,
        -27922721,
        1766195,
        -24433858,
        672203
    );

    /**
     * (d - 1) ^ 2
     * @var array<int, int>
     */
    protected static $sqdmone = array(
        15551795,
        -11097455,
        -13425098,
        -10125071,
        -11896535,
        10178284,
        -26634327,
        4729244,
        -5282110,
        -10116402
    );


    /*
     *  2^252+27742317777372353535851937790883648493
        static const unsigned char L[] = {
            0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7,
            0xa2, 0xde, 0xf9, 0xde, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10
        };
    */
    const L = "\xed\xd3\xf5\x5c\x1a\x63\x12\x58\xd6\x9c\xf7\xa2\xde\xf9\xde\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10";
}
crypto/vendor/paragonie/sodium_compat/src/Core/Curve25519/Ge/Cached.php000064400000003440150755146460021573 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1


if (class_exists('ParagonIE_Sodium_Core_Curve25519_Ge_Cached', false)) {
    return;
}
/**
 * Class ParagonIE_Sodium_Core_Curve25519_Ge_Cached
 */
class ParagonIE_Sodium_Core_Curve25519_Ge_Cached
{
    /**
     * @var ParagonIE_Sodium_Core_Curve25519_Fe
     */
    public $YplusX;

    /**
     * @var ParagonIE_Sodium_Core_Curve25519_Fe
     */
    public $YminusX;

    /**
     * @var ParagonIE_Sodium_Core_Curve25519_Fe
     */
    public $Z;

    /**
     * @var ParagonIE_Sodium_Core_Curve25519_Fe
     */
    public $T2d;

    /**
     * ParagonIE_Sodium_Core_Curve25519_Ge_Cached constructor.
     *
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core_Curve25519_Fe|null $YplusX
     * @param ParagonIE_Sodium_Core_Curve25519_Fe|null $YminusX
     * @param ParagonIE_Sodium_Core_Curve25519_Fe|null $Z
     * @param ParagonIE_Sodium_Core_Curve25519_Fe|null $T2d
     */
    public function __construct(
        ParagonIE_Sodium_Core_Curve25519_Fe $YplusX = null,
        ParagonIE_Sodium_Core_Curve25519_Fe $YminusX = null,
        ParagonIE_Sodium_Core_Curve25519_Fe $Z = null,
        ParagonIE_Sodium_Core_Curve25519_Fe $T2d = null
    ) {
        if ($YplusX === null) {
            $YplusX = new ParagonIE_Sodium_Core_Curve25519_Fe();
        }
        $this->YplusX = $YplusX;
        if ($YminusX === null) {
            $YminusX = new ParagonIE_Sodium_Core_Curve25519_Fe();
        }
        $this->YminusX = $YminusX;
        if ($Z === null) {
            $Z = new ParagonIE_Sodium_Core_Curve25519_Fe();
        }
        $this->Z = $Z;
        if ($T2d === null) {
            $T2d = new ParagonIE_Sodium_Core_Curve25519_Fe();
        }
        $this->T2d = $T2d;
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core/Curve25519/Ge/P3.php000064400000003265150755146460020713 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Core_Curve25519_Ge_P3', false)) {
    return;
}

/**
 * Class ParagonIE_Sodium_Core_Curve25519_Ge_P3
 */
class ParagonIE_Sodium_Core_Curve25519_Ge_P3
{
    /**
     * @var ParagonIE_Sodium_Core_Curve25519_Fe
     */
    public $X;

    /**
     * @var ParagonIE_Sodium_Core_Curve25519_Fe
     */
    public $Y;

    /**
     * @var ParagonIE_Sodium_Core_Curve25519_Fe
     */
    public $Z;

    /**
     * @var ParagonIE_Sodium_Core_Curve25519_Fe
     */
    public $T;

    /**
     * ParagonIE_Sodium_Core_Curve25519_Ge_P3 constructor.
     *
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core_Curve25519_Fe|null $x
     * @param ParagonIE_Sodium_Core_Curve25519_Fe|null $y
     * @param ParagonIE_Sodium_Core_Curve25519_Fe|null $z
     * @param ParagonIE_Sodium_Core_Curve25519_Fe|null $t
     */
    public function __construct(
        ParagonIE_Sodium_Core_Curve25519_Fe $x = null,
        ParagonIE_Sodium_Core_Curve25519_Fe $y = null,
        ParagonIE_Sodium_Core_Curve25519_Fe $z = null,
        ParagonIE_Sodium_Core_Curve25519_Fe $t = null
    ) {
        if ($x === null) {
            $x = new ParagonIE_Sodium_Core_Curve25519_Fe();
        }
        $this->X = $x;
        if ($y === null) {
            $y = new ParagonIE_Sodium_Core_Curve25519_Fe();
        }
        $this->Y = $y;
        if ($z === null) {
            $z = new ParagonIE_Sodium_Core_Curve25519_Fe();
        }
        $this->Z = $z;
        if ($t === null) {
            $t = new ParagonIE_Sodium_Core_Curve25519_Fe();
        }
        $this->T = $t;
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core/Curve25519/Ge/P1p1.php000064400000003274150755146460021152 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Core_Curve25519_Ge_P1p1', false)) {
    return;
}
/**
 * Class ParagonIE_Sodium_Core_Curve25519_Ge_P1p1
 */
class ParagonIE_Sodium_Core_Curve25519_Ge_P1p1
{
    /**
     * @var ParagonIE_Sodium_Core_Curve25519_Fe
     */
    public $X;

    /**
     * @var ParagonIE_Sodium_Core_Curve25519_Fe
     */
    public $Y;

    /**
     * @var ParagonIE_Sodium_Core_Curve25519_Fe
     */
    public $Z;

    /**
     * @var ParagonIE_Sodium_Core_Curve25519_Fe
     */
    public $T;

    /**
     * ParagonIE_Sodium_Core_Curve25519_Ge_P1p1 constructor.
     *
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core_Curve25519_Fe|null $x
     * @param ParagonIE_Sodium_Core_Curve25519_Fe|null $y
     * @param ParagonIE_Sodium_Core_Curve25519_Fe|null $z
     * @param ParagonIE_Sodium_Core_Curve25519_Fe|null $t
     */
    public function __construct(
        ParagonIE_Sodium_Core_Curve25519_Fe $x = null,
        ParagonIE_Sodium_Core_Curve25519_Fe $y = null,
        ParagonIE_Sodium_Core_Curve25519_Fe $z = null,
        ParagonIE_Sodium_Core_Curve25519_Fe $t = null
    ) {
        if ($x === null) {
            $x = new ParagonIE_Sodium_Core_Curve25519_Fe();
        }
        $this->X = $x;
        if ($y === null) {
            $y = new ParagonIE_Sodium_Core_Curve25519_Fe();
        }
        $this->Y = $y;
        if ($z === null) {
            $z = new ParagonIE_Sodium_Core_Curve25519_Fe();
        }
        $this->Z = $z;
        if ($t === null) {
            $t = new ParagonIE_Sodium_Core_Curve25519_Fe();
        }
        $this->T = $t;
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core/Curve25519/Ge/P2.php000064400000002574150755146460020714 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Core_Curve25519_Ge_P2', false)) {
    return;
}

/**
 * Class ParagonIE_Sodium_Core_Curve25519_Ge_P2
 */
class ParagonIE_Sodium_Core_Curve25519_Ge_P2
{
    /**
     * @var ParagonIE_Sodium_Core_Curve25519_Fe
     */
    public $X;

    /**
     * @var ParagonIE_Sodium_Core_Curve25519_Fe
     */
    public $Y;

    /**
     * @var ParagonIE_Sodium_Core_Curve25519_Fe
     */
    public $Z;

    /**
     * ParagonIE_Sodium_Core_Curve25519_Ge_P2 constructor.
     *
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core_Curve25519_Fe|null $x
     * @param ParagonIE_Sodium_Core_Curve25519_Fe|null $y
     * @param ParagonIE_Sodium_Core_Curve25519_Fe|null $z
     */
    public function __construct(
        ParagonIE_Sodium_Core_Curve25519_Fe $x = null,
        ParagonIE_Sodium_Core_Curve25519_Fe $y = null,
        ParagonIE_Sodium_Core_Curve25519_Fe $z = null
    ) {
        if ($x === null) {
            $x = new ParagonIE_Sodium_Core_Curve25519_Fe();
        }
        $this->X = $x;
        if ($y === null) {
            $y = new ParagonIE_Sodium_Core_Curve25519_Fe();
        }
        $this->Y = $y;
        if ($z === null) {
            $z = new ParagonIE_Sodium_Core_Curve25519_Fe();
        }
        $this->Z = $z;
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core/Curve25519/Ge/Precomp.php000064400000002743150755146460022036 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Core_Curve25519_Ge_Precomp', false)) {
    return;
}

/**
 * Class ParagonIE_Sodium_Core_Curve25519_Ge_Precomp
 */
class ParagonIE_Sodium_Core_Curve25519_Ge_Precomp
{
    /**
     * @var ParagonIE_Sodium_Core_Curve25519_Fe
     */
    public $yplusx;

    /**
     * @var ParagonIE_Sodium_Core_Curve25519_Fe
     */
    public $yminusx;

    /**
     * @var ParagonIE_Sodium_Core_Curve25519_Fe
     */
    public $xy2d;

    /**
     * ParagonIE_Sodium_Core_Curve25519_Ge_Precomp constructor.
     *
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core_Curve25519_Fe $yplusx
     * @param ParagonIE_Sodium_Core_Curve25519_Fe $yminusx
     * @param ParagonIE_Sodium_Core_Curve25519_Fe $xy2d
     */
    public function __construct(
        ParagonIE_Sodium_Core_Curve25519_Fe $yplusx = null,
        ParagonIE_Sodium_Core_Curve25519_Fe $yminusx = null,
        ParagonIE_Sodium_Core_Curve25519_Fe $xy2d = null
    ) {
        if ($yplusx === null) {
            $yplusx = new ParagonIE_Sodium_Core_Curve25519_Fe();
        }
        $this->yplusx = $yplusx;
        if ($yminusx === null) {
            $yminusx = new ParagonIE_Sodium_Core_Curve25519_Fe();
        }
        $this->yminusx = $yminusx;
        if ($xy2d === null) {
            $xy2d = new ParagonIE_Sodium_Core_Curve25519_Fe();
        }
        $this->xy2d = $xy2d;
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core/Curve25519/Fe.php000064400000006114150755146460020424 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Core_Curve25519_Fe', false)) {
    return;
}

/**
 * Class ParagonIE_Sodium_Core_Curve25519_Fe
 *
 * This represents a Field Element
 */
class ParagonIE_Sodium_Core_Curve25519_Fe implements ArrayAccess
{
    /**
     * @var array<int, int>
     */
    protected $container = array();

    /**
     * @var int
     */
    protected $size = 10;

    /**
     * @internal You should not use this directly from another application
     *
     * @param array<int, int> $array
     * @param bool $save_indexes
     * @return self
     */
    public static function fromArray($array, $save_indexes = null)
    {
        $count = count($array);
        if ($save_indexes) {
            $keys = array_keys($array);
        } else {
            $keys = range(0, $count - 1);
        }
        $array = array_values($array);
        /** @var array<int, int> $keys */

        $obj = new ParagonIE_Sodium_Core_Curve25519_Fe();
        if ($save_indexes) {
            for ($i = 0; $i < $count; ++$i) {
                $obj->offsetSet($keys[$i], $array[$i]);
            }
        } else {
            for ($i = 0; $i < $count; ++$i) {
                $obj->offsetSet($i, $array[$i]);
            }
        }
        return $obj;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param int|null $offset
     * @param int $value
     * @return void
     * @psalm-suppress MixedArrayOffset
     */
    #[ReturnTypeWillChange]
    public function offsetSet($offset, $value)
    {
        if (!is_int($value)) {
            throw new InvalidArgumentException('Expected an integer');
        }
        if (is_null($offset)) {
            $this->container[] = $value;
        } else {
            $this->container[$offset] = $value;
        }
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param int $offset
     * @return bool
     * @psalm-suppress MixedArrayOffset
     */
    #[ReturnTypeWillChange]
    public function offsetExists($offset)
    {
        return isset($this->container[$offset]);
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param int $offset
     * @return void
     * @psalm-suppress MixedArrayOffset
     */
    #[ReturnTypeWillChange]
    public function offsetUnset($offset)
    {
        unset($this->container[$offset]);
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param int $offset
     * @return int
     * @psalm-suppress MixedArrayOffset
     */
    #[ReturnTypeWillChange]
    public function offsetGet($offset)
    {
        if (!isset($this->container[$offset])) {
            $this->container[$offset] = 0;
        }
        return (int) ($this->container[$offset]);
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @return array
     */
    public function __debugInfo()
    {
        return array(implode(', ', $this->container));
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core/Curve25519.php000064400000426541150755146460020104 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Core_Curve25519', false)) {
    return;
}

/**
 * Class ParagonIE_Sodium_Core_Curve25519
 *
 * Implements Curve25519 core functions
 *
 * Based on the ref10 curve25519 code provided by libsodium
 *
 * @ref https://github.com/jedisct1/libsodium/blob/master/src/libsodium/crypto_core/curve25519/ref10/curve25519_ref10.c
 */
abstract class ParagonIE_Sodium_Core_Curve25519 extends ParagonIE_Sodium_Core_Curve25519_H
{
    /**
     * Get a field element of size 10 with a value of 0
     *
     * @internal You should not use this directly from another application
     *
     * @return ParagonIE_Sodium_Core_Curve25519_Fe
     */
    public static function fe_0()
    {
        return ParagonIE_Sodium_Core_Curve25519_Fe::fromArray(
            array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
        );
    }

    /**
     * Get a field element of size 10 with a value of 1
     *
     * @internal You should not use this directly from another application
     *
     * @return ParagonIE_Sodium_Core_Curve25519_Fe
     */
    public static function fe_1()
    {
        return ParagonIE_Sodium_Core_Curve25519_Fe::fromArray(
            array(1, 0, 0, 0, 0, 0, 0, 0, 0, 0)
        );
    }

    /**
     * Add two field elements.
     *
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core_Curve25519_Fe $f
     * @param ParagonIE_Sodium_Core_Curve25519_Fe $g
     * @return ParagonIE_Sodium_Core_Curve25519_Fe
     * @psalm-suppress MixedAssignment
     * @psalm-suppress MixedOperand
     */
    public static function fe_add(
        ParagonIE_Sodium_Core_Curve25519_Fe $f,
        ParagonIE_Sodium_Core_Curve25519_Fe $g
    ) {
        /** @var array<int, int> $arr */
        $arr = array();
        for ($i = 0; $i < 10; ++$i) {
            $arr[$i] = (int) ($f[$i] + $g[$i]);
        }
        return ParagonIE_Sodium_Core_Curve25519_Fe::fromArray($arr);
    }

    /**
     * Constant-time conditional move.
     *
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core_Curve25519_Fe $f
     * @param ParagonIE_Sodium_Core_Curve25519_Fe $g
     * @param int $b
     * @return ParagonIE_Sodium_Core_Curve25519_Fe
     * @psalm-suppress MixedAssignment
     */
    public static function fe_cmov(
        ParagonIE_Sodium_Core_Curve25519_Fe $f,
        ParagonIE_Sodium_Core_Curve25519_Fe $g,
        $b = 0
    ) {
        /** @var array<int, int> $h */
        $h = array();
        $b *= -1;
        for ($i = 0; $i < 10; ++$i) {
            $x = (($f[$i] ^ $g[$i]) & $b);
            $h[$i] = ($f[$i]) ^ $x;
        }
        return ParagonIE_Sodium_Core_Curve25519_Fe::fromArray($h);
    }

    /**
     * Create a copy of a field element.
     *
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core_Curve25519_Fe $f
     * @return ParagonIE_Sodium_Core_Curve25519_Fe
     */
    public static function fe_copy(ParagonIE_Sodium_Core_Curve25519_Fe $f)
    {
        $h = clone $f;
        return $h;
    }

    /**
     * Give: 32-byte string.
     * Receive: A field element object to use for internal calculations.
     *
     * @internal You should not use this directly from another application
     *
     * @param string $s
     * @return ParagonIE_Sodium_Core_Curve25519_Fe
     * @throws RangeException
     * @throws TypeError
     */
    public static function fe_frombytes($s)
    {
        if (self::strlen($s) !== 32) {
            throw new RangeException('Expected a 32-byte string.');
        }
        $h0 = self::load_4($s);
        $h1 = self::load_3(self::substr($s, 4, 3)) << 6;
        $h2 = self::load_3(self::substr($s, 7, 3)) << 5;
        $h3 = self::load_3(self::substr($s, 10, 3)) << 3;
        $h4 = self::load_3(self::substr($s, 13, 3)) << 2;
        $h5 = self::load_4(self::substr($s, 16, 4));
        $h6 = self::load_3(self::substr($s, 20, 3)) << 7;
        $h7 = self::load_3(self::substr($s, 23, 3)) << 5;
        $h8 = self::load_3(self::substr($s, 26, 3)) << 4;
        $h9 = (self::load_3(self::substr($s, 29, 3)) & 8388607) << 2;

        $carry9 = ($h9 + (1 << 24)) >> 25;
        $h0 += self::mul($carry9, 19, 5);
        $h9 -= $carry9 << 25;
        $carry1 = ($h1 + (1 << 24)) >> 25;
        $h2 += $carry1;
        $h1 -= $carry1 << 25;
        $carry3 = ($h3 + (1 << 24)) >> 25;
        $h4 += $carry3;
        $h3 -= $carry3 << 25;
        $carry5 = ($h5 + (1 << 24)) >> 25;
        $h6 += $carry5;
        $h5 -= $carry5 << 25;
        $carry7 = ($h7 + (1 << 24)) >> 25;
        $h8 += $carry7;
        $h7 -= $carry7 << 25;

        $carry0 = ($h0 + (1 << 25)) >> 26;
        $h1 += $carry0;
        $h0 -= $carry0 << 26;
        $carry2 = ($h2 + (1 << 25)) >> 26;
        $h3 += $carry2;
        $h2 -= $carry2 << 26;
        $carry4 = ($h4 + (1 << 25)) >> 26;
        $h5 += $carry4;
        $h4 -= $carry4 << 26;
        $carry6 = ($h6 + (1 << 25)) >> 26;
        $h7 += $carry6;
        $h6 -= $carry6 << 26;
        $carry8 = ($h8 + (1 << 25)) >> 26;
        $h9 += $carry8;
        $h8 -= $carry8 << 26;

        return ParagonIE_Sodium_Core_Curve25519_Fe::fromArray(
            array(
                (int) $h0,
                (int) $h1,
                (int) $h2,
                (int) $h3,
                (int) $h4,
                (int) $h5,
                (int) $h6,
                (int) $h7,
                (int) $h8,
                (int) $h9
            )
        );
    }

    /**
     * Convert a field element to a byte string.
     *
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core_Curve25519_Fe $h
     * @return string
     */
    public static function fe_tobytes(ParagonIE_Sodium_Core_Curve25519_Fe $h)
    {
        $h0 = (int) $h[0];
        $h1 = (int) $h[1];
        $h2 = (int) $h[2];
        $h3 = (int) $h[3];
        $h4 = (int) $h[4];
        $h5 = (int) $h[5];
        $h6 = (int) $h[6];
        $h7 = (int) $h[7];
        $h8 = (int) $h[8];
        $h9 = (int) $h[9];

        $q = (self::mul($h9, 19, 5) + (1 << 24)) >> 25;
        $q = ($h0 + $q) >> 26;
        $q = ($h1 + $q) >> 25;
        $q = ($h2 + $q) >> 26;
        $q = ($h3 + $q) >> 25;
        $q = ($h4 + $q) >> 26;
        $q = ($h5 + $q) >> 25;
        $q = ($h6 + $q) >> 26;
        $q = ($h7 + $q) >> 25;
        $q = ($h8 + $q) >> 26;
        $q = ($h9 + $q) >> 25;

        $h0 += self::mul($q, 19, 5);

        $carry0 = $h0 >> 26;
        $h1 += $carry0;
        $h0 -= $carry0 << 26;
        $carry1 = $h1 >> 25;
        $h2 += $carry1;
        $h1 -= $carry1 << 25;
        $carry2 = $h2 >> 26;
        $h3 += $carry2;
        $h2 -= $carry2 << 26;
        $carry3 = $h3 >> 25;
        $h4 += $carry3;
        $h3 -= $carry3 << 25;
        $carry4 = $h4 >> 26;
        $h5 += $carry4;
        $h4 -= $carry4 << 26;
        $carry5 = $h5 >> 25;
        $h6 += $carry5;
        $h5 -= $carry5 << 25;
        $carry6 = $h6 >> 26;
        $h7 += $carry6;
        $h6 -= $carry6 << 26;
        $carry7 = $h7 >> 25;
        $h8 += $carry7;
        $h7 -= $carry7 << 25;
        $carry8 = $h8 >> 26;
        $h9 += $carry8;
        $h8 -= $carry8 << 26;
        $carry9 = $h9 >> 25;
        $h9 -= $carry9 << 25;

        /**
         * @var array<int, int>
         */
        $s = array(
            (int) (($h0 >> 0) & 0xff),
            (int) (($h0 >> 8) & 0xff),
            (int) (($h0 >> 16) & 0xff),
            (int) ((($h0 >> 24) | ($h1 << 2)) & 0xff),
            (int) (($h1 >> 6) & 0xff),
            (int) (($h1 >> 14) & 0xff),
            (int) ((($h1 >> 22) | ($h2 << 3)) & 0xff),
            (int) (($h2 >> 5) & 0xff),
            (int) (($h2 >> 13) & 0xff),
            (int) ((($h2 >> 21) | ($h3 << 5)) & 0xff),
            (int) (($h3 >> 3) & 0xff),
            (int) (($h3 >> 11) & 0xff),
            (int) ((($h3 >> 19) | ($h4 << 6)) & 0xff),
            (int) (($h4 >> 2) & 0xff),
            (int) (($h4 >> 10) & 0xff),
            (int) (($h4 >> 18) & 0xff),
            (int) (($h5 >> 0) & 0xff),
            (int) (($h5 >> 8) & 0xff),
            (int) (($h5 >> 16) & 0xff),
            (int) ((($h5 >> 24) | ($h6 << 1)) & 0xff),
            (int) (($h6 >> 7) & 0xff),
            (int) (($h6 >> 15) & 0xff),
            (int) ((($h6 >> 23) | ($h7 << 3)) & 0xff),
            (int) (($h7 >> 5) & 0xff),
            (int) (($h7 >> 13) & 0xff),
            (int) ((($h7 >> 21) | ($h8 << 4)) & 0xff),
            (int) (($h8 >> 4) & 0xff),
            (int) (($h8 >> 12) & 0xff),
            (int) ((($h8 >> 20) | ($h9 << 6)) & 0xff),
            (int) (($h9 >> 2) & 0xff),
            (int) (($h9 >> 10) & 0xff),
            (int) (($h9 >> 18) & 0xff)
        );
        return self::intArrayToString($s);
    }

    /**
     * Is a field element negative? (1 = yes, 0 = no. Used in calculations.)
     *
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core_Curve25519_Fe $f
     * @return int
     * @throws SodiumException
     * @throws TypeError
     */
    public static function fe_isnegative(ParagonIE_Sodium_Core_Curve25519_Fe $f)
    {
        $str = self::fe_tobytes($f);
        return (int) (self::chrToInt($str[0]) & 1);
    }

    /**
     * Returns 0 if this field element results in all NUL bytes.
     *
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core_Curve25519_Fe $f
     * @return bool
     * @throws SodiumException
     * @throws TypeError
     */
    public static function fe_isnonzero(ParagonIE_Sodium_Core_Curve25519_Fe $f)
    {
        static $zero;
        if ($zero === null) {
            $zero = str_repeat("\x00", 32);
        }
        /** @var string $zero */
        /** @var string $str */
        $str = self::fe_tobytes($f);
        return !self::verify_32($str, (string) $zero);
    }

    /**
     * Multiply two field elements
     *
     * h = f * g
     *
     * @internal You should not use this directly from another application
     *
     * @security Is multiplication a source of timing leaks? If so, can we do
     *           anything to prevent that from happening?
     *
     * @param ParagonIE_Sodium_Core_Curve25519_Fe $f
     * @param ParagonIE_Sodium_Core_Curve25519_Fe $g
     * @return ParagonIE_Sodium_Core_Curve25519_Fe
     */
    public static function fe_mul(
        ParagonIE_Sodium_Core_Curve25519_Fe $f,
        ParagonIE_Sodium_Core_Curve25519_Fe $g
    ) {
        // Ensure limbs aren't oversized.
        $f = self::fe_normalize($f);
        $g = self::fe_normalize($g);
        $f0 = $f[0];
        $f1 = $f[1];
        $f2 = $f[2];
        $f3 = $f[3];
        $f4 = $f[4];
        $f5 = $f[5];
        $f6 = $f[6];
        $f7 = $f[7];
        $f8 = $f[8];
        $f9 = $f[9];
        $g0 = $g[0];
        $g1 = $g[1];
        $g2 = $g[2];
        $g3 = $g[3];
        $g4 = $g[4];
        $g5 = $g[5];
        $g6 = $g[6];
        $g7 = $g[7];
        $g8 = $g[8];
        $g9 = $g[9];
        $g1_19 = self::mul($g1, 19, 5);
        $g2_19 = self::mul($g2, 19, 5);
        $g3_19 = self::mul($g3, 19, 5);
        $g4_19 = self::mul($g4, 19, 5);
        $g5_19 = self::mul($g5, 19, 5);
        $g6_19 = self::mul($g6, 19, 5);
        $g7_19 = self::mul($g7, 19, 5);
        $g8_19 = self::mul($g8, 19, 5);
        $g9_19 = self::mul($g9, 19, 5);
        $f1_2 = $f1 << 1;
        $f3_2 = $f3 << 1;
        $f5_2 = $f5 << 1;
        $f7_2 = $f7 << 1;
        $f9_2 = $f9 << 1;
        $f0g0    = self::mul($f0,    $g0, 26);
        $f0g1    = self::mul($f0,    $g1, 25);
        $f0g2    = self::mul($f0,    $g2, 26);
        $f0g3    = self::mul($f0,    $g3, 25);
        $f0g4    = self::mul($f0,    $g4, 26);
        $f0g5    = self::mul($f0,    $g5, 25);
        $f0g6    = self::mul($f0,    $g6, 26);
        $f0g7    = self::mul($f0,    $g7, 25);
        $f0g8    = self::mul($f0,    $g8, 26);
        $f0g9    = self::mul($f0,    $g9, 26);
        $f1g0    = self::mul($f1,    $g0, 26);
        $f1g1_2  = self::mul($f1_2,  $g1, 25);
        $f1g2    = self::mul($f1,    $g2, 26);
        $f1g3_2  = self::mul($f1_2,  $g3, 25);
        $f1g4    = self::mul($f1,    $g4, 26);
        $f1g5_2  = self::mul($f1_2,  $g5, 25);
        $f1g6    = self::mul($f1,    $g6, 26);
        $f1g7_2  = self::mul($f1_2,  $g7, 25);
        $f1g8    = self::mul($f1,    $g8, 26);
        $f1g9_38 = self::mul($g9_19, $f1_2, 26);
        $f2g0    = self::mul($f2,    $g0, 26);
        $f2g1    = self::mul($f2,    $g1, 25);
        $f2g2    = self::mul($f2,    $g2, 26);
        $f2g3    = self::mul($f2,    $g3, 25);
        $f2g4    = self::mul($f2,    $g4, 26);
        $f2g5    = self::mul($f2,    $g5, 25);
        $f2g6    = self::mul($f2,    $g6, 26);
        $f2g7    = self::mul($f2,    $g7, 25);
        $f2g8_19 = self::mul($g8_19, $f2, 26);
        $f2g9_19 = self::mul($g9_19, $f2, 26);
        $f3g0    = self::mul($f3,    $g0, 26);
        $f3g1_2  = self::mul($f3_2,  $g1, 25);
        $f3g2    = self::mul($f3,    $g2, 26);
        $f3g3_2  = self::mul($f3_2,  $g3, 25);
        $f3g4    = self::mul($f3,    $g4, 26);
        $f3g5_2  = self::mul($f3_2,  $g5, 25);
        $f3g6    = self::mul($f3,    $g6, 26);
        $f3g7_38 = self::mul($g7_19, $f3_2, 26);
        $f3g8_19 = self::mul($g8_19, $f3, 25);
        $f3g9_38 = self::mul($g9_19, $f3_2, 26);
        $f4g0    = self::mul($f4,    $g0, 26);
        $f4g1    = self::mul($f4,    $g1, 25);
        $f4g2    = self::mul($f4,    $g2, 26);
        $f4g3    = self::mul($f4,    $g3, 25);
        $f4g4    = self::mul($f4,    $g4, 26);
        $f4g5    = self::mul($f4,    $g5, 25);
        $f4g6_19 = self::mul($g6_19, $f4, 26);
        $f4g7_19 = self::mul($g7_19, $f4, 26);
        $f4g8_19 = self::mul($g8_19, $f4, 26);
        $f4g9_19 = self::mul($g9_19, $f4, 26);
        $f5g0    = self::mul($f5,    $g0, 26);
        $f5g1_2  = self::mul($f5_2,  $g1, 25);
        $f5g2    = self::mul($f5,    $g2, 26);
        $f5g3_2  = self::mul($f5_2,  $g3, 25);
        $f5g4    = self::mul($f5,    $g4, 26);
        $f5g5_38 = self::mul($g5_19, $f5_2, 26);
        $f5g6_19 = self::mul($g6_19, $f5, 25);
        $f5g7_38 = self::mul($g7_19, $f5_2, 26);
        $f5g8_19 = self::mul($g8_19, $f5, 25);
        $f5g9_38 = self::mul($g9_19, $f5_2, 26);
        $f6g0    = self::mul($f6,    $g0, 26);
        $f6g1    = self::mul($f6,    $g1, 25);
        $f6g2    = self::mul($f6,    $g2, 26);
        $f6g3    = self::mul($f6,    $g3, 25);
        $f6g4_19 = self::mul($g4_19, $f6, 26);
        $f6g5_19 = self::mul($g5_19, $f6, 26);
        $f6g6_19 = self::mul($g6_19, $f6, 26);
        $f6g7_19 = self::mul($g7_19, $f6, 26);
        $f6g8_19 = self::mul($g8_19, $f6, 26);
        $f6g9_19 = self::mul($g9_19, $f6, 26);
        $f7g0    = self::mul($f7,    $g0, 26);
        $f7g1_2  = self::mul($f7_2,  $g1, 25);
        $f7g2    = self::mul($f7,    $g2, 26);
        $f7g3_38 = self::mul($g3_19, $f7_2, 26);
        $f7g4_19 = self::mul($g4_19, $f7, 26);
        $f7g5_38 = self::mul($g5_19, $f7_2, 26);
        $f7g6_19 = self::mul($g6_19, $f7, 25);
        $f7g7_38 = self::mul($g7_19, $f7_2, 26);
        $f7g8_19 = self::mul($g8_19, $f7, 25);
        $f7g9_38 = self::mul($g9_19,$f7_2, 26);
        $f8g0    = self::mul($f8,    $g0, 26);
        $f8g1    = self::mul($f8,    $g1, 25);
        $f8g2_19 = self::mul($g2_19, $f8, 26);
        $f8g3_19 = self::mul($g3_19, $f8, 26);
        $f8g4_19 = self::mul($g4_19, $f8, 26);
        $f8g5_19 = self::mul($g5_19, $f8, 26);
        $f8g6_19 = self::mul($g6_19, $f8, 26);
        $f8g7_19 = self::mul($g7_19, $f8, 26);
        $f8g8_19 = self::mul($g8_19, $f8, 26);
        $f8g9_19 = self::mul($g9_19, $f8, 26);
        $f9g0    = self::mul($f9,    $g0, 26);
        $f9g1_38 = self::mul($g1_19, $f9_2, 26);
        $f9g2_19 = self::mul($g2_19, $f9, 25);
        $f9g3_38 = self::mul($g3_19, $f9_2, 26);
        $f9g4_19 = self::mul($g4_19, $f9, 25);
        $f9g5_38 = self::mul($g5_19, $f9_2, 26);
        $f9g6_19 = self::mul($g6_19, $f9, 25);
        $f9g7_38 = self::mul($g7_19, $f9_2, 26);
        $f9g8_19 = self::mul($g8_19, $f9, 25);
        $f9g9_38 = self::mul($g9_19, $f9_2, 26);

        $h0 = $f0g0 + $f1g9_38 + $f2g8_19 + $f3g7_38 + $f4g6_19 + $f5g5_38 + $f6g4_19 + $f7g3_38 + $f8g2_19 + $f9g1_38;
        $h1 = $f0g1 + $f1g0    + $f2g9_19 + $f3g8_19 + $f4g7_19 + $f5g6_19 + $f6g5_19 + $f7g4_19 + $f8g3_19 + $f9g2_19;
        $h2 = $f0g2 + $f1g1_2  + $f2g0    + $f3g9_38 + $f4g8_19 + $f5g7_38 + $f6g6_19 + $f7g5_38 + $f8g4_19 + $f9g3_38;
        $h3 = $f0g3 + $f1g2    + $f2g1    + $f3g0    + $f4g9_19 + $f5g8_19 + $f6g7_19 + $f7g6_19 + $f8g5_19 + $f9g4_19;
        $h4 = $f0g4 + $f1g3_2  + $f2g2    + $f3g1_2  + $f4g0    + $f5g9_38 + $f6g8_19 + $f7g7_38 + $f8g6_19 + $f9g5_38;
        $h5 = $f0g5 + $f1g4    + $f2g3    + $f3g2    + $f4g1    + $f5g0    + $f6g9_19 + $f7g8_19 + $f8g7_19 + $f9g6_19;
        $h6 = $f0g6 + $f1g5_2  + $f2g4    + $f3g3_2  + $f4g2    + $f5g1_2  + $f6g0    + $f7g9_38 + $f8g8_19 + $f9g7_38;
        $h7 = $f0g7 + $f1g6    + $f2g5    + $f3g4    + $f4g3    + $f5g2    + $f6g1    + $f7g0    + $f8g9_19 + $f9g8_19;
        $h8 = $f0g8 + $f1g7_2  + $f2g6    + $f3g5_2  + $f4g4    + $f5g3_2  + $f6g2    + $f7g1_2  + $f8g0    + $f9g9_38;
        $h9 = $f0g9 + $f1g8    + $f2g7    + $f3g6    + $f4g5    + $f5g4    + $f6g3    + $f7g2    + $f8g1    + $f9g0   ;

        $carry0 = ($h0 + (1 << 25)) >> 26;
        $h1 += $carry0;
        $h0 -= $carry0 << 26;
        $carry4 = ($h4 + (1 << 25)) >> 26;
        $h5 += $carry4;
        $h4 -= $carry4 << 26;

        $carry1 = ($h1 + (1 << 24)) >> 25;
        $h2 += $carry1;
        $h1 -= $carry1 << 25;
        $carry5 = ($h5 + (1 << 24)) >> 25;
        $h6 += $carry5;
        $h5 -= $carry5 << 25;

        $carry2 = ($h2 + (1 << 25)) >> 26;
        $h3 += $carry2;
        $h2 -= $carry2 << 26;
        $carry6 = ($h6 + (1 << 25)) >> 26;
        $h7 += $carry6;
        $h6 -= $carry6 << 26;

        $carry3 = ($h3 + (1 << 24)) >> 25;
        $h4 += $carry3;
        $h3 -= $carry3 << 25;
        $carry7 = ($h7 + (1 << 24)) >> 25;
        $h8 += $carry7;
        $h7 -= $carry7 << 25;

        $carry4 = ($h4 + (1 << 25)) >> 26;
        $h5 += $carry4;
        $h4 -= $carry4 << 26;
        $carry8 = ($h8 + (1 << 25)) >> 26;
        $h9 += $carry8;
        $h8 -= $carry8 << 26;

        $carry9 = ($h9 + (1 << 24)) >> 25;
        $h0 += self::mul($carry9, 19, 5);
        $h9 -= $carry9 << 25;

        $carry0 = ($h0 + (1 << 25)) >> 26;
        $h1 += $carry0;
        $h0 -= $carry0 << 26;

        return self::fe_normalize(
            ParagonIE_Sodium_Core_Curve25519_Fe::fromArray(
                array(
                    (int) $h0,
                    (int) $h1,
                    (int) $h2,
                    (int) $h3,
                    (int) $h4,
                    (int) $h5,
                    (int) $h6,
                    (int) $h7,
                    (int) $h8,
                    (int) $h9
                )
            )
        );
    }

    /**
     * Get the negative values for each piece of the field element.
     *
     * h = -f
     *
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core_Curve25519_Fe $f
     * @return ParagonIE_Sodium_Core_Curve25519_Fe
     * @psalm-suppress MixedAssignment
     */
    public static function fe_neg(ParagonIE_Sodium_Core_Curve25519_Fe $f)
    {
        $h = new ParagonIE_Sodium_Core_Curve25519_Fe();
        for ($i = 0; $i < 10; ++$i) {
            $h[$i] = -$f[$i];
        }
        return self::fe_normalize($h);
    }

    /**
     * Square a field element
     *
     * h = f * f
     *
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core_Curve25519_Fe $f
     * @return ParagonIE_Sodium_Core_Curve25519_Fe
     */
    public static function fe_sq(ParagonIE_Sodium_Core_Curve25519_Fe $f)
    {
        $f = self::fe_normalize($f);
        $f0 = (int) $f[0];
        $f1 = (int) $f[1];
        $f2 = (int) $f[2];
        $f3 = (int) $f[3];
        $f4 = (int) $f[4];
        $f5 = (int) $f[5];
        $f6 = (int) $f[6];
        $f7 = (int) $f[7];
        $f8 = (int) $f[8];
        $f9 = (int) $f[9];

        $f0_2 = $f0 << 1;
        $f1_2 = $f1 << 1;
        $f2_2 = $f2 << 1;
        $f3_2 = $f3 << 1;
        $f4_2 = $f4 << 1;
        $f5_2 = $f5 << 1;
        $f6_2 = $f6 << 1;
        $f7_2 = $f7 << 1;
        $f5_38 = self::mul($f5, 38, 6);
        $f6_19 = self::mul($f6, 19, 5);
        $f7_38 = self::mul($f7, 38, 6);
        $f8_19 = self::mul($f8, 19, 5);
        $f9_38 = self::mul($f9, 38, 6);
        $f0f0    = self::mul($f0,    $f0,    26);
        $f0f1_2  = self::mul($f0_2,  $f1,    26);
        $f0f2_2  = self::mul($f0_2,  $f2,    26);
        $f0f3_2  = self::mul($f0_2,  $f3,    26);
        $f0f4_2  = self::mul($f0_2,  $f4,    26);
        $f0f5_2  = self::mul($f0_2,  $f5,    26);
        $f0f6_2  = self::mul($f0_2,  $f6,    26);
        $f0f7_2  = self::mul($f0_2,  $f7,    26);
        $f0f8_2  = self::mul($f0_2,  $f8,    26);
        $f0f9_2  = self::mul($f0_2,  $f9,    26);
        $f1f1_2  = self::mul($f1_2,  $f1,    26);
        $f1f2_2  = self::mul($f1_2,  $f2,    26);
        $f1f3_4  = self::mul($f1_2,  $f3_2,  26);
        $f1f4_2  = self::mul($f1_2,  $f4,    26);
        $f1f5_4  = self::mul($f1_2,  $f5_2,  26);
        $f1f6_2  = self::mul($f1_2,  $f6,    26);
        $f1f7_4  = self::mul($f1_2,  $f7_2,  26);
        $f1f8_2  = self::mul($f1_2,  $f8,    26);
        $f1f9_76 = self::mul($f9_38, $f1_2,  27);
        $f2f2    = self::mul($f2,    $f2,    27);
        $f2f3_2  = self::mul($f2_2,  $f3,    27);
        $f2f4_2  = self::mul($f2_2,  $f4,    27);
        $f2f5_2  = self::mul($f2_2,  $f5,    27);
        $f2f6_2  = self::mul($f2_2,  $f6,    27);
        $f2f7_2  = self::mul($f2_2,  $f7,    27);
        $f2f8_38 = self::mul($f8_19, $f2_2,  27);
        $f2f9_38 = self::mul($f9_38, $f2,    26);
        $f3f3_2  = self::mul($f3_2,  $f3,    26);
        $f3f4_2  = self::mul($f3_2,  $f4,    26);
        $f3f5_4  = self::mul($f3_2,  $f5_2,  26);
        $f3f6_2  = self::mul($f3_2,  $f6,    26);
        $f3f7_76 = self::mul($f7_38, $f3_2,  26);
        $f3f8_38 = self::mul($f8_19, $f3_2,  26);
        $f3f9_76 = self::mul($f9_38, $f3_2,  26);
        $f4f4    = self::mul($f4,    $f4,    26);
        $f4f5_2  = self::mul($f4_2,  $f5,    26);
        $f4f6_38 = self::mul($f6_19, $f4_2,  27);
        $f4f7_38 = self::mul($f7_38, $f4,    26);
        $f4f8_38 = self::mul($f8_19, $f4_2,  27);
        $f4f9_38 = self::mul($f9_38, $f4,    26);
        $f5f5_38 = self::mul($f5_38, $f5,    26);
        $f5f6_38 = self::mul($f6_19, $f5_2,  26);
        $f5f7_76 = self::mul($f7_38, $f5_2,  26);
        $f5f8_38 = self::mul($f8_19, $f5_2,  26);
        $f5f9_76 = self::mul($f9_38, $f5_2,  26);
        $f6f6_19 = self::mul($f6_19, $f6,    26);
        $f6f7_38 = self::mul($f7_38, $f6,    26);
        $f6f8_38 = self::mul($f8_19, $f6_2,  27);
        $f6f9_38 = self::mul($f9_38, $f6,    26);
        $f7f7_38 = self::mul($f7_38, $f7,    26);
        $f7f8_38 = self::mul($f8_19, $f7_2,  26);
        $f7f9_76 = self::mul($f9_38, $f7_2,  26);
        $f8f8_19 = self::mul($f8_19, $f8,    26);
        $f8f9_38 = self::mul($f9_38, $f8,    26);
        $f9f9_38 = self::mul($f9_38, $f9,    26);
        $h0 = $f0f0   + $f1f9_76 + $f2f8_38 + $f3f7_76 + $f4f6_38 + $f5f5_38;
        $h1 = $f0f1_2 + $f2f9_38 + $f3f8_38 + $f4f7_38 + $f5f6_38;
        $h2 = $f0f2_2 + $f1f1_2  + $f3f9_76 + $f4f8_38 + $f5f7_76 + $f6f6_19;
        $h3 = $f0f3_2 + $f1f2_2  + $f4f9_38 + $f5f8_38 + $f6f7_38;
        $h4 = $f0f4_2 + $f1f3_4  + $f2f2    + $f5f9_76 + $f6f8_38 + $f7f7_38;
        $h5 = $f0f5_2 + $f1f4_2  + $f2f3_2  + $f6f9_38 + $f7f8_38;
        $h6 = $f0f6_2 + $f1f5_4  + $f2f4_2  + $f3f3_2  + $f7f9_76 + $f8f8_19;
        $h7 = $f0f7_2 + $f1f6_2  + $f2f5_2  + $f3f4_2  + $f8f9_38;
        $h8 = $f0f8_2 + $f1f7_4  + $f2f6_2  + $f3f5_4  + $f4f4    + $f9f9_38;
        $h9 = $f0f9_2 + $f1f8_2  + $f2f7_2  + $f3f6_2  + $f4f5_2;

        $carry0 = ($h0 + (1 << 25)) >> 26;
        $h1 += $carry0;
        $h0 -= $carry0 << 26;
        $carry4 = ($h4 + (1 << 25)) >> 26;
        $h5 += $carry4;
        $h4 -= $carry4 << 26;

        $carry1 = ($h1 + (1 << 24)) >> 25;
        $h2 += $carry1;
        $h1 -= $carry1 << 25;
        $carry5 = ($h5 + (1 << 24)) >> 25;
        $h6 += $carry5;
        $h5 -= $carry5 << 25;

        $carry2 = ($h2 + (1 << 25)) >> 26;
        $h3 += $carry2;
        $h2 -= $carry2 << 26;
        $carry6 = ($h6 + (1 << 25)) >> 26;
        $h7 += $carry6;
        $h6 -= $carry6 << 26;

        $carry3 = ($h3 + (1 << 24)) >> 25;
        $h4 += $carry3;
        $h3 -= $carry3 << 25;
        $carry7 = ($h7 + (1 << 24)) >> 25;
        $h8 += $carry7;
        $h7 -= $carry7 << 25;

        $carry4 = ($h4 + (1 << 25)) >> 26;
        $h5 += $carry4;
        $h4 -= $carry4 << 26;
        $carry8 = ($h8 + (1 << 25)) >> 26;
        $h9 += $carry8;
        $h8 -= $carry8 << 26;

        $carry9 = ($h9 + (1 << 24)) >> 25;
        $h0 += self::mul($carry9, 19, 5);
        $h9 -= $carry9 << 25;

        $carry0 = ($h0 + (1 << 25)) >> 26;
        $h1 += $carry0;
        $h0 -= $carry0 << 26;

        return self::fe_normalize(
            ParagonIE_Sodium_Core_Curve25519_Fe::fromArray(
                array(
                    (int) $h0,
                    (int) $h1,
                    (int) $h2,
                    (int) $h3,
                    (int) $h4,
                    (int) $h5,
                    (int) $h6,
                    (int) $h7,
                    (int) $h8,
                    (int) $h9
                )
            )
        );
    }


    /**
     * Square and double a field element
     *
     * h = 2 * f * f
     *
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core_Curve25519_Fe $f
     * @return ParagonIE_Sodium_Core_Curve25519_Fe
     */
    public static function fe_sq2(ParagonIE_Sodium_Core_Curve25519_Fe $f)
    {
        $f = self::fe_normalize($f);
        $f0 = (int) $f[0];
        $f1 = (int) $f[1];
        $f2 = (int) $f[2];
        $f3 = (int) $f[3];
        $f4 = (int) $f[4];
        $f5 = (int) $f[5];
        $f6 = (int) $f[6];
        $f7 = (int) $f[7];
        $f8 = (int) $f[8];
        $f9 = (int) $f[9];

        $f0_2 = $f0 << 1;
        $f1_2 = $f1 << 1;
        $f2_2 = $f2 << 1;
        $f3_2 = $f3 << 1;
        $f4_2 = $f4 << 1;
        $f5_2 = $f5 << 1;
        $f6_2 = $f6 << 1;
        $f7_2 = $f7 << 1;
        $f5_38 = self::mul($f5, 38, 6); /* 1.959375*2^30 */
        $f6_19 = self::mul($f6, 19, 5); /* 1.959375*2^30 */
        $f7_38 = self::mul($f7, 38, 6); /* 1.959375*2^30 */
        $f8_19 = self::mul($f8, 19, 5); /* 1.959375*2^30 */
        $f9_38 = self::mul($f9, 38, 6); /* 1.959375*2^30 */
        $f0f0 = self::mul($f0, $f0, 24);
        $f0f1_2 = self::mul($f0_2, $f1, 24);
        $f0f2_2 = self::mul($f0_2, $f2, 24);
        $f0f3_2 = self::mul($f0_2, $f3, 24);
        $f0f4_2 = self::mul($f0_2, $f4, 24);
        $f0f5_2 = self::mul($f0_2, $f5, 24);
        $f0f6_2 = self::mul($f0_2, $f6, 24);
        $f0f7_2 = self::mul($f0_2, $f7, 24);
        $f0f8_2 = self::mul($f0_2, $f8, 24);
        $f0f9_2 = self::mul($f0_2, $f9, 24);
        $f1f1_2 = self::mul($f1_2,  $f1, 24);
        $f1f2_2 = self::mul($f1_2,  $f2, 24);
        $f1f3_4 = self::mul($f1_2,  $f3_2, 24);
        $f1f4_2 = self::mul($f1_2,  $f4, 24);
        $f1f5_4 = self::mul($f1_2,  $f5_2, 24);
        $f1f6_2 = self::mul($f1_2,  $f6, 24);
        $f1f7_4 = self::mul($f1_2,  $f7_2, 24);
        $f1f8_2 = self::mul($f1_2,  $f8, 24);
        $f1f9_76 = self::mul($f9_38, $f1_2, 24);
        $f2f2 = self::mul($f2,  $f2, 24);
        $f2f3_2 = self::mul($f2_2,  $f3, 24);
        $f2f4_2 = self::mul($f2_2,  $f4, 24);
        $f2f5_2 = self::mul($f2_2,  $f5, 24);
        $f2f6_2 = self::mul($f2_2,  $f6, 24);
        $f2f7_2 = self::mul($f2_2,  $f7, 24);
        $f2f8_38 = self::mul($f8_19, $f2_2, 25);
        $f2f9_38 = self::mul($f9_38, $f2, 24);
        $f3f3_2 = self::mul($f3_2,  $f3, 24);
        $f3f4_2 = self::mul($f3_2,  $f4, 24);
        $f3f5_4 = self::mul($f3_2,  $f5_2, 24);
        $f3f6_2 = self::mul($f3_2,  $f6, 24);
        $f3f7_76 = self::mul($f7_38, $f3_2, 24);
        $f3f8_38 = self::mul($f8_19, $f3_2, 24);
        $f3f9_76 = self::mul($f9_38, $f3_2, 24);
        $f4f4 = self::mul($f4,  $f4, 24);
        $f4f5_2 = self::mul($f4_2,  $f5, 24);
        $f4f6_38 = self::mul($f6_19, $f4_2, 25);
        $f4f7_38 = self::mul($f7_38, $f4, 24);
        $f4f8_38 = self::mul($f8_19, $f4_2, 25);
        $f4f9_38 = self::mul($f9_38, $f4, 24);
        $f5f5_38 = self::mul($f5_38, $f5, 24);
        $f5f6_38 = self::mul($f6_19, $f5_2, 24);
        $f5f7_76 = self::mul($f7_38, $f5_2, 24);
        $f5f8_38 = self::mul($f8_19, $f5_2, 24);
        $f5f9_76 = self::mul($f9_38, $f5_2, 24);
        $f6f6_19 = self::mul($f6_19, $f6, 24);
        $f6f7_38 = self::mul($f7_38, $f6, 24);
        $f6f8_38 = self::mul($f8_19, $f6_2, 25);
        $f6f9_38 = self::mul($f9_38, $f6, 24);
        $f7f7_38 = self::mul($f7_38, $f7, 24);
        $f7f8_38 = self::mul($f8_19, $f7_2, 24);
        $f7f9_76 = self::mul($f9_38, $f7_2, 24);
        $f8f8_19 = self::mul($f8_19, $f8, 24);
        $f8f9_38 = self::mul($f9_38, $f8, 24);
        $f9f9_38 = self::mul($f9_38, $f9, 24);

        $h0 = (int) ($f0f0 + $f1f9_76 + $f2f8_38 + $f3f7_76 + $f4f6_38 + $f5f5_38) << 1;
        $h1 = (int) ($f0f1_2 + $f2f9_38 + $f3f8_38 + $f4f7_38 + $f5f6_38) << 1;
        $h2 = (int) ($f0f2_2 + $f1f1_2  + $f3f9_76 + $f4f8_38 + $f5f7_76 + $f6f6_19) << 1;
        $h3 = (int) ($f0f3_2 + $f1f2_2  + $f4f9_38 + $f5f8_38 + $f6f7_38) << 1;
        $h4 = (int) ($f0f4_2 + $f1f3_4  + $f2f2    + $f5f9_76 + $f6f8_38 + $f7f7_38) << 1;
        $h5 = (int) ($f0f5_2 + $f1f4_2  + $f2f3_2  + $f6f9_38 + $f7f8_38) << 1;
        $h6 = (int) ($f0f6_2 + $f1f5_4  + $f2f4_2  + $f3f3_2  + $f7f9_76 + $f8f8_19) << 1;
        $h7 = (int) ($f0f7_2 + $f1f6_2  + $f2f5_2  + $f3f4_2  + $f8f9_38) << 1;
        $h8 = (int) ($f0f8_2 + $f1f7_4  + $f2f6_2  + $f3f5_4  + $f4f4    + $f9f9_38) << 1;
        $h9 = (int) ($f0f9_2 + $f1f8_2  + $f2f7_2  + $f3f6_2  + $f4f5_2) << 1;

        $carry0 = ($h0 + (1 << 25)) >> 26;
        $h1 += $carry0;
        $h0 -= $carry0 << 26;
        $carry4 = ($h4 + (1 << 25)) >> 26;
        $h5 += $carry4;
        $h4 -= $carry4 << 26;

        $carry1 = ($h1 + (1 << 24)) >> 25;
        $h2 += $carry1;
        $h1 -= $carry1 << 25;
        $carry5 = ($h5 + (1 << 24)) >> 25;
        $h6 += $carry5;
        $h5 -= $carry5 << 25;

        $carry2 = ($h2 + (1 << 25)) >> 26;
        $h3 += $carry2;
        $h2 -= $carry2 << 26;
        $carry6 = ($h6 + (1 << 25)) >> 26;
        $h7 += $carry6;
        $h6 -= $carry6 << 26;

        $carry3 = ($h3 + (1 << 24)) >> 25;
        $h4 += $carry3;
        $h3 -= $carry3 << 25;
        $carry7 = ($h7 + (1 << 24)) >> 25;
        $h8 += $carry7;
        $h7 -= $carry7 << 25;

        $carry4 = ($h4 + (1 << 25)) >> 26;
        $h5 += $carry4;
        $h4 -= $carry4 << 26;
        $carry8 = ($h8 + (1 << 25)) >> 26;
        $h9 += $carry8;
        $h8 -= $carry8 << 26;

        $carry9 = ($h9 + (1 << 24)) >> 25;
        $h0 += self::mul($carry9, 19, 5);
        $h9 -= $carry9 << 25;

        $carry0 = ($h0 + (1 << 25)) >> 26;
        $h1 += $carry0;
        $h0 -= $carry0 << 26;

        return self::fe_normalize(
            ParagonIE_Sodium_Core_Curve25519_Fe::fromArray(
                array(
                    (int) $h0,
                    (int) $h1,
                    (int) $h2,
                    (int) $h3,
                    (int) $h4,
                    (int) $h5,
                    (int) $h6,
                    (int) $h7,
                    (int) $h8,
                    (int) $h9
                )
            )
        );
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core_Curve25519_Fe $Z
     * @return ParagonIE_Sodium_Core_Curve25519_Fe
     */
    public static function fe_invert(ParagonIE_Sodium_Core_Curve25519_Fe $Z)
    {
        $z = clone $Z;
        $t0 = self::fe_sq($z);
        $t1 = self::fe_sq($t0);
        $t1 = self::fe_sq($t1);
        $t1 = self::fe_mul($z, $t1);
        $t0 = self::fe_mul($t0, $t1);
        $t2 = self::fe_sq($t0);
        $t1 = self::fe_mul($t1, $t2);
        $t2 = self::fe_sq($t1);
        for ($i = 1; $i < 5; ++$i) {
            $t2 = self::fe_sq($t2);
        }
        $t1 = self::fe_mul($t2, $t1);
        $t2 = self::fe_sq($t1);
        for ($i = 1; $i < 10; ++$i) {
            $t2 = self::fe_sq($t2);
        }
        $t2 = self::fe_mul($t2, $t1);
        $t3 = self::fe_sq($t2);
        for ($i = 1; $i < 20; ++$i) {
            $t3 = self::fe_sq($t3);
        }
        $t2 = self::fe_mul($t3, $t2);
        $t2 = self::fe_sq($t2);
        for ($i = 1; $i < 10; ++$i) {
            $t2 = self::fe_sq($t2);
        }
        $t1 = self::fe_mul($t2, $t1);
        $t2 = self::fe_sq($t1);
        for ($i = 1; $i < 50; ++$i) {
            $t2 = self::fe_sq($t2);
        }
        $t2 = self::fe_mul($t2, $t1);
        $t3 = self::fe_sq($t2);
        for ($i = 1; $i < 100; ++$i) {
            $t3 = self::fe_sq($t3);
        }
        $t2 = self::fe_mul($t3, $t2);
        $t2 = self::fe_sq($t2);
        for ($i = 1; $i < 50; ++$i) {
            $t2 = self::fe_sq($t2);
        }
        $t1 = self::fe_mul($t2, $t1);
        $t1 = self::fe_sq($t1);
        for ($i = 1; $i < 5; ++$i) {
            $t1 = self::fe_sq($t1);
        }
        return self::fe_mul($t1, $t0);
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @ref https://github.com/jedisct1/libsodium/blob/68564326e1e9dc57ef03746f85734232d20ca6fb/src/libsodium/crypto_core/curve25519/ref10/curve25519_ref10.c#L1054-L1106
     *
     * @param ParagonIE_Sodium_Core_Curve25519_Fe $z
     * @return ParagonIE_Sodium_Core_Curve25519_Fe
     */
    public static function fe_pow22523(ParagonIE_Sodium_Core_Curve25519_Fe $z)
    {
        $z = self::fe_normalize($z);
        # fe_sq(t0, z);
        # fe_sq(t1, t0);
        # fe_sq(t1, t1);
        # fe_mul(t1, z, t1);
        # fe_mul(t0, t0, t1);
        # fe_sq(t0, t0);
        # fe_mul(t0, t1, t0);
        # fe_sq(t1, t0);
        $t0 = self::fe_sq($z);
        $t1 = self::fe_sq($t0);
        $t1 = self::fe_sq($t1);
        $t1 = self::fe_mul($z, $t1);
        $t0 = self::fe_mul($t0, $t1);
        $t0 = self::fe_sq($t0);
        $t0 = self::fe_mul($t1, $t0);
        $t1 = self::fe_sq($t0);

        # for (i = 1; i < 5; ++i) {
        #     fe_sq(t1, t1);
        # }
        for ($i = 1; $i < 5; ++$i) {
            $t1 = self::fe_sq($t1);
        }

        # fe_mul(t0, t1, t0);
        # fe_sq(t1, t0);
        $t0 = self::fe_mul($t1, $t0);
        $t1 = self::fe_sq($t0);

        # for (i = 1; i < 10; ++i) {
        #     fe_sq(t1, t1);
        # }
        for ($i = 1; $i < 10; ++$i) {
            $t1 = self::fe_sq($t1);
        }

        # fe_mul(t1, t1, t0);
        # fe_sq(t2, t1);
        $t1 = self::fe_mul($t1, $t0);
        $t2 = self::fe_sq($t1);

        # for (i = 1; i < 20; ++i) {
        #     fe_sq(t2, t2);
        # }
        for ($i = 1; $i < 20; ++$i) {
            $t2 = self::fe_sq($t2);
        }

        # fe_mul(t1, t2, t1);
        # fe_sq(t1, t1);
        $t1 = self::fe_mul($t2, $t1);
        $t1 = self::fe_sq($t1);

        # for (i = 1; i < 10; ++i) {
        #     fe_sq(t1, t1);
        # }
        for ($i = 1; $i < 10; ++$i) {
            $t1 = self::fe_sq($t1);
        }

        # fe_mul(t0, t1, t0);
        # fe_sq(t1, t0);
        $t0 = self::fe_mul($t1, $t0);
        $t1 = self::fe_sq($t0);

        # for (i = 1; i < 50; ++i) {
        #     fe_sq(t1, t1);
        # }
        for ($i = 1; $i < 50; ++$i) {
            $t1 = self::fe_sq($t1);
        }

        # fe_mul(t1, t1, t0);
        # fe_sq(t2, t1);
        $t1 = self::fe_mul($t1, $t0);
        $t2 = self::fe_sq($t1);

        # for (i = 1; i < 100; ++i) {
        #     fe_sq(t2, t2);
        # }
        for ($i = 1; $i < 100; ++$i) {
            $t2 = self::fe_sq($t2);
        }

        # fe_mul(t1, t2, t1);
        # fe_sq(t1, t1);
        $t1 = self::fe_mul($t2, $t1);
        $t1 = self::fe_sq($t1);

        # for (i = 1; i < 50; ++i) {
        #     fe_sq(t1, t1);
        # }
        for ($i = 1; $i < 50; ++$i) {
            $t1 = self::fe_sq($t1);
        }

        # fe_mul(t0, t1, t0);
        # fe_sq(t0, t0);
        # fe_sq(t0, t0);
        # fe_mul(out, t0, z);
        $t0 = self::fe_mul($t1, $t0);
        $t0 = self::fe_sq($t0);
        $t0 = self::fe_sq($t0);
        return self::fe_mul($t0, $z);
    }

    /**
     * Subtract two field elements.
     *
     * h = f - g
     *
     * Preconditions:
     * |f| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.
     * |g| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.
     *
     * Postconditions:
     * |h| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.
     *
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core_Curve25519_Fe $f
     * @param ParagonIE_Sodium_Core_Curve25519_Fe $g
     * @return ParagonIE_Sodium_Core_Curve25519_Fe
     * @psalm-suppress MixedOperand
     */
    public static function fe_sub(ParagonIE_Sodium_Core_Curve25519_Fe $f, ParagonIE_Sodium_Core_Curve25519_Fe $g)
    {
        return self::fe_normalize(
            ParagonIE_Sodium_Core_Curve25519_Fe::fromArray(
                array(
                    (int) ($f[0] - $g[0]),
                    (int) ($f[1] - $g[1]),
                    (int) ($f[2] - $g[2]),
                    (int) ($f[3] - $g[3]),
                    (int) ($f[4] - $g[4]),
                    (int) ($f[5] - $g[5]),
                    (int) ($f[6] - $g[6]),
                    (int) ($f[7] - $g[7]),
                    (int) ($f[8] - $g[8]),
                    (int) ($f[9] - $g[9])
                )
            )
        );
    }

    /**
     * Add two group elements.
     *
     * r = p + q
     *
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core_Curve25519_Ge_P3 $p
     * @param ParagonIE_Sodium_Core_Curve25519_Ge_Cached $q
     * @return ParagonIE_Sodium_Core_Curve25519_Ge_P1p1
     */
    public static function ge_add(
        ParagonIE_Sodium_Core_Curve25519_Ge_P3 $p,
        ParagonIE_Sodium_Core_Curve25519_Ge_Cached $q
    ) {
        $r = new ParagonIE_Sodium_Core_Curve25519_Ge_P1p1();
        $r->X = self::fe_add($p->Y, $p->X);
        $r->Y = self::fe_sub($p->Y, $p->X);
        $r->Z = self::fe_mul($r->X, $q->YplusX);
        $r->Y = self::fe_mul($r->Y, $q->YminusX);
        $r->T = self::fe_mul($q->T2d, $p->T);
        $r->X = self::fe_mul($p->Z, $q->Z);
        $t0   = self::fe_add($r->X, $r->X);
        $r->X = self::fe_sub($r->Z, $r->Y);
        $r->Y = self::fe_add($r->Z, $r->Y);
        $r->Z = self::fe_add($t0, $r->T);
        $r->T = self::fe_sub($t0, $r->T);
        return $r;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @ref https://github.com/jedisct1/libsodium/blob/157c4a80c13b117608aeae12178b2d38825f9f8f/src/libsodium/crypto_core/curve25519/ref10/curve25519_ref10.c#L1185-L1215
     * @param string $a
     * @return array<int, mixed>
     * @throws SodiumException
     * @throws TypeError
     */
    public static function slide($a)
    {
        if (self::strlen($a) < 256) {
            if (self::strlen($a) < 16) {
                $a = str_pad($a, 256, '0', STR_PAD_RIGHT);
            }
        }
        /** @var array<int, int> $r */
        $r = array();

        /** @var int $i */
        for ($i = 0; $i < 256; ++$i) {
            $r[$i] = (int) (
                1 & (
                    self::chrToInt($a[(int) ($i >> 3)])
                        >>
                    ($i & 7)
                )
            );
        }

        for ($i = 0;$i < 256;++$i) {
            if ($r[$i]) {
                for ($b = 1;$b <= 6 && $i + $b < 256;++$b) {
                    if ($r[$i + $b]) {
                        if ($r[$i] + ($r[$i + $b] << $b) <= 15) {
                            $r[$i] += $r[$i + $b] << $b;
                            $r[$i + $b] = 0;
                        } elseif ($r[$i] - ($r[$i + $b] << $b) >= -15) {
                            $r[$i] -= $r[$i + $b] << $b;
                            for ($k = $i + $b; $k < 256; ++$k) {
                                if (!$r[$k]) {
                                    $r[$k] = 1;
                                    break;
                                }
                                $r[$k] = 0;
                            }
                        } else {
                            break;
                        }
                    }
                }
            }
        }
        return $r;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $s
     * @return ParagonIE_Sodium_Core_Curve25519_Ge_P3
     * @throws SodiumException
     * @throws TypeError
     */
    public static function ge_frombytes_negate_vartime($s)
    {
        static $d = null;
        if (!$d) {
            $d = ParagonIE_Sodium_Core_Curve25519_Fe::fromArray(self::$d);
        }

        # fe_frombytes(h->Y,s);
        # fe_1(h->Z);
        $h = new ParagonIE_Sodium_Core_Curve25519_Ge_P3(
            self::fe_0(),
            self::fe_frombytes($s),
            self::fe_1()
        );

        # fe_sq(u,h->Y);
        # fe_mul(v,u,d);
        # fe_sub(u,u,h->Z);       /* u = y^2-1 */
        # fe_add(v,v,h->Z);       /* v = dy^2+1 */
        $u = self::fe_sq($h->Y);
        /** @var ParagonIE_Sodium_Core_Curve25519_Fe $d */
        $v = self::fe_mul($u, $d);
        $u = self::fe_sub($u, $h->Z); /* u =  y^2 - 1 */
        $v = self::fe_add($v, $h->Z); /* v = dy^2 + 1 */

        # fe_sq(v3,v);
        # fe_mul(v3,v3,v);        /* v3 = v^3 */
        # fe_sq(h->X,v3);
        # fe_mul(h->X,h->X,v);
        # fe_mul(h->X,h->X,u);    /* x = uv^7 */
        $v3 = self::fe_sq($v);
        $v3 = self::fe_mul($v3, $v); /* v3 = v^3 */
        $h->X = self::fe_sq($v3);
        $h->X = self::fe_mul($h->X, $v);
        $h->X = self::fe_mul($h->X, $u); /* x = uv^7 */

        # fe_pow22523(h->X,h->X); /* x = (uv^7)^((q-5)/8) */
        # fe_mul(h->X,h->X,v3);
        # fe_mul(h->X,h->X,u);    /* x = uv^3(uv^7)^((q-5)/8) */
        $h->X = self::fe_pow22523($h->X); /* x = (uv^7)^((q-5)/8) */
        $h->X = self::fe_mul($h->X, $v3);
        $h->X = self::fe_mul($h->X, $u); /* x = uv^3(uv^7)^((q-5)/8) */

        # fe_sq(vxx,h->X);
        # fe_mul(vxx,vxx,v);
        # fe_sub(check,vxx,u);    /* vx^2-u */
        $vxx = self::fe_sq($h->X);
        $vxx = self::fe_mul($vxx, $v);
        $check = self::fe_sub($vxx, $u); /* vx^2 - u */

        # if (fe_isnonzero(check)) {
        #     fe_add(check,vxx,u);  /* vx^2+u */
        #     if (fe_isnonzero(check)) {
        #         return -1;
        #     }
        #     fe_mul(h->X,h->X,sqrtm1);
        # }
        if (self::fe_isnonzero($check)) {
            $check = self::fe_add($vxx, $u); /* vx^2 + u */
            if (self::fe_isnonzero($check)) {
                throw new RangeException('Internal check failed.');
            }
            $h->X = self::fe_mul(
                $h->X,
                ParagonIE_Sodium_Core_Curve25519_Fe::fromArray(self::$sqrtm1)
            );
        }

        # if (fe_isnegative(h->X) == (s[31] >> 7)) {
        #     fe_neg(h->X,h->X);
        # }
        $i = self::chrToInt($s[31]);
        if (self::fe_isnegative($h->X) === ($i >> 7)) {
            $h->X = self::fe_neg($h->X);
        }

        # fe_mul(h->T,h->X,h->Y);
        $h->T = self::fe_mul($h->X, $h->Y);
        return $h;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core_Curve25519_Ge_P1p1 $R
     * @param ParagonIE_Sodium_Core_Curve25519_Ge_P3 $p
     * @param ParagonIE_Sodium_Core_Curve25519_Ge_Precomp $q
     * @return ParagonIE_Sodium_Core_Curve25519_Ge_P1p1
     */
    public static function ge_madd(
        ParagonIE_Sodium_Core_Curve25519_Ge_P1p1 $R,
        ParagonIE_Sodium_Core_Curve25519_Ge_P3 $p,
        ParagonIE_Sodium_Core_Curve25519_Ge_Precomp $q
    ) {
        $r = clone $R;
        $r->X = self::fe_add($p->Y, $p->X);
        $r->Y = self::fe_sub($p->Y, $p->X);
        $r->Z = self::fe_mul($r->X, $q->yplusx);
        $r->Y = self::fe_mul($r->Y, $q->yminusx);
        $r->T = self::fe_mul($q->xy2d, $p->T);
        $t0 = self::fe_add(clone $p->Z, clone $p->Z);
        $r->X = self::fe_sub($r->Z, $r->Y);
        $r->Y = self::fe_add($r->Z, $r->Y);
        $r->Z = self::fe_add($t0, $r->T);
        $r->T = self::fe_sub($t0, $r->T);

        return $r;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core_Curve25519_Ge_P1p1 $R
     * @param ParagonIE_Sodium_Core_Curve25519_Ge_P3 $p
     * @param ParagonIE_Sodium_Core_Curve25519_Ge_Precomp $q
     * @return ParagonIE_Sodium_Core_Curve25519_Ge_P1p1
     */
    public static function ge_msub(
        ParagonIE_Sodium_Core_Curve25519_Ge_P1p1 $R,
        ParagonIE_Sodium_Core_Curve25519_Ge_P3 $p,
        ParagonIE_Sodium_Core_Curve25519_Ge_Precomp $q
    ) {
        $r = clone $R;

        $r->X = self::fe_add($p->Y, $p->X);
        $r->Y = self::fe_sub($p->Y, $p->X);
        $r->Z = self::fe_mul($r->X, $q->yminusx);
        $r->Y = self::fe_mul($r->Y, $q->yplusx);
        $r->T = self::fe_mul($q->xy2d, $p->T);
        $t0 = self::fe_add($p->Z, $p->Z);
        $r->X = self::fe_sub($r->Z, $r->Y);
        $r->Y = self::fe_add($r->Z, $r->Y);
        $r->Z = self::fe_sub($t0, $r->T);
        $r->T = self::fe_add($t0, $r->T);

        return $r;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core_Curve25519_Ge_P1p1 $p
     * @return ParagonIE_Sodium_Core_Curve25519_Ge_P2
     */
    public static function ge_p1p1_to_p2(ParagonIE_Sodium_Core_Curve25519_Ge_P1p1 $p)
    {
        $r = new ParagonIE_Sodium_Core_Curve25519_Ge_P2();
        $r->X = self::fe_mul($p->X, $p->T);
        $r->Y = self::fe_mul($p->Y, $p->Z);
        $r->Z = self::fe_mul($p->Z, $p->T);
        return $r;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core_Curve25519_Ge_P1p1 $p
     * @return ParagonIE_Sodium_Core_Curve25519_Ge_P3
     */
    public static function ge_p1p1_to_p3(ParagonIE_Sodium_Core_Curve25519_Ge_P1p1 $p)
    {
        $r = new ParagonIE_Sodium_Core_Curve25519_Ge_P3();
        $r->X = self::fe_mul($p->X, $p->T);
        $r->Y = self::fe_mul($p->Y, $p->Z);
        $r->Z = self::fe_mul($p->Z, $p->T);
        $r->T = self::fe_mul($p->X, $p->Y);
        return $r;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @return ParagonIE_Sodium_Core_Curve25519_Ge_P2
     */
    public static function ge_p2_0()
    {
        return new ParagonIE_Sodium_Core_Curve25519_Ge_P2(
            self::fe_0(),
            self::fe_1(),
            self::fe_1()
        );
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core_Curve25519_Ge_P2 $p
     * @return ParagonIE_Sodium_Core_Curve25519_Ge_P1p1
     */
    public static function ge_p2_dbl(ParagonIE_Sodium_Core_Curve25519_Ge_P2 $p)
    {
        $r = new ParagonIE_Sodium_Core_Curve25519_Ge_P1p1();

        $r->X = self::fe_sq($p->X);
        $r->Z = self::fe_sq($p->Y);
        $r->T = self::fe_sq2($p->Z);
        $r->Y = self::fe_add($p->X, $p->Y);
        $t0   = self::fe_sq($r->Y);
        $r->Y = self::fe_add($r->Z, $r->X);
        $r->Z = self::fe_sub($r->Z, $r->X);
        $r->X = self::fe_sub($t0, $r->Y);
        $r->T = self::fe_sub($r->T, $r->Z);

        return $r;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @return ParagonIE_Sodium_Core_Curve25519_Ge_P3
     */
    public static function ge_p3_0()
    {
        return new ParagonIE_Sodium_Core_Curve25519_Ge_P3(
            self::fe_0(),
            self::fe_1(),
            self::fe_1(),
            self::fe_0()
        );
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core_Curve25519_Ge_P3 $p
     * @return ParagonIE_Sodium_Core_Curve25519_Ge_Cached
     */
    public static function ge_p3_to_cached(ParagonIE_Sodium_Core_Curve25519_Ge_P3 $p)
    {
        static $d2 = null;
        if ($d2 === null) {
            $d2 = ParagonIE_Sodium_Core_Curve25519_Fe::fromArray(self::$d2);
        }
        /** @var ParagonIE_Sodium_Core_Curve25519_Fe $d2 */
        $r = new ParagonIE_Sodium_Core_Curve25519_Ge_Cached();
        $r->YplusX = self::fe_add($p->Y, $p->X);
        $r->YminusX = self::fe_sub($p->Y, $p->X);
        $r->Z = self::fe_copy($p->Z);
        $r->T2d = self::fe_mul($p->T, $d2);
        return $r;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core_Curve25519_Ge_P3 $p
     * @return ParagonIE_Sodium_Core_Curve25519_Ge_P2
     */
    public static function ge_p3_to_p2(ParagonIE_Sodium_Core_Curve25519_Ge_P3 $p)
    {
        return new ParagonIE_Sodium_Core_Curve25519_Ge_P2(
            self::fe_copy($p->X),
            self::fe_copy($p->Y),
            self::fe_copy($p->Z)
        );
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core_Curve25519_Ge_P3 $h
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function ge_p3_tobytes(ParagonIE_Sodium_Core_Curve25519_Ge_P3 $h)
    {
        $recip = self::fe_invert($h->Z);
        $x = self::fe_mul($h->X, $recip);
        $y = self::fe_mul($h->Y, $recip);
        $s = self::fe_tobytes($y);
        $s[31] = self::intToChr(
            self::chrToInt($s[31]) ^ (self::fe_isnegative($x) << 7)
        );
        return $s;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core_Curve25519_Ge_P3 $p
     * @return ParagonIE_Sodium_Core_Curve25519_Ge_P1p1
     */
    public static function ge_p3_dbl(ParagonIE_Sodium_Core_Curve25519_Ge_P3 $p)
    {
        $q = self::ge_p3_to_p2($p);
        return self::ge_p2_dbl($q);
    }

    /**
     * @return ParagonIE_Sodium_Core_Curve25519_Ge_Precomp
     */
    public static function ge_precomp_0()
    {
        return new ParagonIE_Sodium_Core_Curve25519_Ge_Precomp(
            self::fe_1(),
            self::fe_1(),
            self::fe_0()
        );
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param int $b
     * @param int $c
     * @return int
     */
    public static function equal($b, $c)
    {
        return (int) ((($b ^ $c) - 1) >> 31) & 1;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param int|string $char
     * @return int (1 = yes, 0 = no)
     * @throws SodiumException
     * @throws TypeError
     */
    public static function negative($char)
    {
        if (is_int($char)) {
            return ($char >> 63) & 1;
        }
        $x = self::chrToInt(self::substr($char, 0, 1));
        return (int) ($x >> 63);
    }

    /**
     * Conditional move
     *
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core_Curve25519_Ge_Precomp $t
     * @param ParagonIE_Sodium_Core_Curve25519_Ge_Precomp $u
     * @param int $b
     * @return ParagonIE_Sodium_Core_Curve25519_Ge_Precomp
     */
    public static function cmov(
        ParagonIE_Sodium_Core_Curve25519_Ge_Precomp $t,
        ParagonIE_Sodium_Core_Curve25519_Ge_Precomp $u,
        $b
    ) {
        if (!is_int($b)) {
            throw new InvalidArgumentException('Expected an integer.');
        }
        return new ParagonIE_Sodium_Core_Curve25519_Ge_Precomp(
            self::fe_cmov($t->yplusx,  $u->yplusx,  $b),
            self::fe_cmov($t->yminusx, $u->yminusx, $b),
            self::fe_cmov($t->xy2d,    $u->xy2d,    $b)
        );
    }

    /**
     * @param ParagonIE_Sodium_Core_Curve25519_Ge_Cached $t
     * @param ParagonIE_Sodium_Core_Curve25519_Ge_Cached $u
     * @param int $b
     * @return ParagonIE_Sodium_Core_Curve25519_Ge_Cached
     */
    public static function ge_cmov_cached(
        ParagonIE_Sodium_Core_Curve25519_Ge_Cached $t,
        ParagonIE_Sodium_Core_Curve25519_Ge_Cached $u,
        $b
    ) {
        $b &= 1;
        $ret = new ParagonIE_Sodium_Core_Curve25519_Ge_Cached();
        $ret->YplusX  = self::fe_cmov($t->YplusX,  $u->YplusX,  $b);
        $ret->YminusX = self::fe_cmov($t->YminusX, $u->YminusX, $b);
        $ret->Z       = self::fe_cmov($t->Z,       $u->Z,       $b);
        $ret->T2d     = self::fe_cmov($t->T2d,     $u->T2d,     $b);
        return $ret;
    }

    /**
     * @param ParagonIE_Sodium_Core_Curve25519_Ge_Cached[] $cached
     * @param int $b
     * @return ParagonIE_Sodium_Core_Curve25519_Ge_Cached
     * @throws SodiumException
     */
    public static function ge_cmov8_cached(array $cached, $b)
    {
        // const unsigned char bnegative = negative(b);
        // const unsigned char babs      = b - (((-bnegative) & b) * ((signed char) 1 << 1));
        $bnegative = self::negative($b);
        $babs = $b - (((-$bnegative) & $b) << 1);

        // ge25519_cached_0(t);
        $t = new ParagonIE_Sodium_Core_Curve25519_Ge_Cached(
            self::fe_1(),
            self::fe_1(),
            self::fe_1(),
            self::fe_0()
        );

        // ge25519_cmov_cached(t, &cached[0], equal(babs, 1));
        // ge25519_cmov_cached(t, &cached[1], equal(babs, 2));
        // ge25519_cmov_cached(t, &cached[2], equal(babs, 3));
        // ge25519_cmov_cached(t, &cached[3], equal(babs, 4));
        // ge25519_cmov_cached(t, &cached[4], equal(babs, 5));
        // ge25519_cmov_cached(t, &cached[5], equal(babs, 6));
        // ge25519_cmov_cached(t, &cached[6], equal(babs, 7));
        // ge25519_cmov_cached(t, &cached[7], equal(babs, 8));
        for ($x = 0; $x < 8; ++$x) {
            $t = self::ge_cmov_cached($t, $cached[$x], self::equal($babs, $x + 1));
        }

        // fe25519_copy(minust.YplusX, t->YminusX);
        // fe25519_copy(minust.YminusX, t->YplusX);
        // fe25519_copy(minust.Z, t->Z);
        // fe25519_neg(minust.T2d, t->T2d);
        $minust = new ParagonIE_Sodium_Core_Curve25519_Ge_Cached(
            self::fe_copy($t->YminusX),
            self::fe_copy($t->YplusX),
            self::fe_copy($t->Z),
            self::fe_neg($t->T2d)
        );
        return self::ge_cmov_cached($t, $minust, $bnegative);
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param int $pos
     * @param int $b
     * @return ParagonIE_Sodium_Core_Curve25519_Ge_Precomp
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     * @psalm-suppress MixedArrayAccess
     * @psalm-suppress MixedArrayOffset
     */
    public static function ge_select($pos = 0, $b = 0)
    {
        static $base = null;
        if ($base === null) {
            $base = array();
            /** @var int $i */
            foreach (self::$base as $i => $bas) {
                for ($j = 0; $j < 8; ++$j) {
                    $base[$i][$j] = new ParagonIE_Sodium_Core_Curve25519_Ge_Precomp(
                        ParagonIE_Sodium_Core_Curve25519_Fe::fromArray($bas[$j][0]),
                        ParagonIE_Sodium_Core_Curve25519_Fe::fromArray($bas[$j][1]),
                        ParagonIE_Sodium_Core_Curve25519_Fe::fromArray($bas[$j][2])
                    );
                }
            }
        }
        /** @var array<int, array<int, ParagonIE_Sodium_Core_Curve25519_Ge_Precomp>> $base */
        if (!is_int($pos)) {
            throw new InvalidArgumentException('Position must be an integer');
        }
        if ($pos < 0 || $pos > 31) {
            throw new RangeException('Position is out of range [0, 31]');
        }

        $bnegative = self::negative($b);
        $babs = $b - (((-$bnegative) & $b) << 1);

        $t = self::ge_precomp_0();
        for ($i = 0; $i < 8; ++$i) {
            $t = self::cmov(
                $t,
                $base[$pos][$i],
                self::equal($babs, $i + 1)
            );
        }
        $minusT = new ParagonIE_Sodium_Core_Curve25519_Ge_Precomp(
            self::fe_copy($t->yminusx),
            self::fe_copy($t->yplusx),
            self::fe_neg($t->xy2d)
        );
        return self::cmov($t, $minusT, $bnegative);
    }

    /**
     * Subtract two group elements.
     *
     * r = p - q
     *
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core_Curve25519_Ge_P3 $p
     * @param ParagonIE_Sodium_Core_Curve25519_Ge_Cached $q
     * @return ParagonIE_Sodium_Core_Curve25519_Ge_P1p1
     */
    public static function ge_sub(
        ParagonIE_Sodium_Core_Curve25519_Ge_P3 $p,
        ParagonIE_Sodium_Core_Curve25519_Ge_Cached $q
    ) {
        $r = new ParagonIE_Sodium_Core_Curve25519_Ge_P1p1();

        $r->X = self::fe_add($p->Y, $p->X);
        $r->Y = self::fe_sub($p->Y, $p->X);
        $r->Z = self::fe_mul($r->X, $q->YminusX);
        $r->Y = self::fe_mul($r->Y, $q->YplusX);
        $r->T = self::fe_mul($q->T2d, $p->T);
        $r->X = self::fe_mul($p->Z, $q->Z);
        $t0 = self::fe_add($r->X, $r->X);
        $r->X = self::fe_sub($r->Z, $r->Y);
        $r->Y = self::fe_add($r->Z, $r->Y);
        $r->Z = self::fe_sub($t0, $r->T);
        $r->T = self::fe_add($t0, $r->T);

        return $r;
    }

    /**
     * Convert a group element to a byte string.
     *
     * @param ParagonIE_Sodium_Core_Curve25519_Ge_P2 $h
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function ge_tobytes(ParagonIE_Sodium_Core_Curve25519_Ge_P2 $h)
    {
        $recip = self::fe_invert($h->Z);
        $x = self::fe_mul($h->X, $recip);
        $y = self::fe_mul($h->Y, $recip);
        $s = self::fe_tobytes($y);
        $s[31] = self::intToChr(
            self::chrToInt($s[31]) ^ (self::fe_isnegative($x) << 7)
        );
        return $s;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $a
     * @param ParagonIE_Sodium_Core_Curve25519_Ge_P3 $A
     * @param string $b
     * @return ParagonIE_Sodium_Core_Curve25519_Ge_P2
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedArgument
     * @psalm-suppress MixedArrayAccess
     */
    public static function ge_double_scalarmult_vartime(
        $a,
        ParagonIE_Sodium_Core_Curve25519_Ge_P3 $A,
        $b
    ) {
        /** @var array<int, ParagonIE_Sodium_Core_Curve25519_Ge_Cached> $Ai */
        $Ai = array();

        /** @var array<int, ParagonIE_Sodium_Core_Curve25519_Ge_Precomp> $Bi */
        static $Bi = array();
        if (!$Bi) {
            for ($i = 0; $i < 8; ++$i) {
                $Bi[$i] = new ParagonIE_Sodium_Core_Curve25519_Ge_Precomp(
                    ParagonIE_Sodium_Core_Curve25519_Fe::fromArray(self::$base2[$i][0]),
                    ParagonIE_Sodium_Core_Curve25519_Fe::fromArray(self::$base2[$i][1]),
                    ParagonIE_Sodium_Core_Curve25519_Fe::fromArray(self::$base2[$i][2])
                );
            }
        }
        for ($i = 0; $i < 8; ++$i) {
            $Ai[$i] = new ParagonIE_Sodium_Core_Curve25519_Ge_Cached(
                self::fe_0(),
                self::fe_0(),
                self::fe_0(),
                self::fe_0()
            );
        }

        # slide(aslide,a);
        # slide(bslide,b);
        /** @var array<int, int> $aslide */
        $aslide = self::slide($a);
        /** @var array<int, int> $bslide */
        $bslide = self::slide($b);

        # ge_p3_to_cached(&Ai[0],A);
        # ge_p3_dbl(&t,A); ge_p1p1_to_p3(&A2,&t);
        $Ai[0] = self::ge_p3_to_cached($A);
        $t = self::ge_p3_dbl($A);
        $A2 = self::ge_p1p1_to_p3($t);

        # ge_add(&t,&A2,&Ai[0]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[1],&u);
        # ge_add(&t,&A2,&Ai[1]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[2],&u);
        # ge_add(&t,&A2,&Ai[2]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[3],&u);
        # ge_add(&t,&A2,&Ai[3]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[4],&u);
        # ge_add(&t,&A2,&Ai[4]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[5],&u);
        # ge_add(&t,&A2,&Ai[5]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[6],&u);
        # ge_add(&t,&A2,&Ai[6]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[7],&u);
        for ($i = 0; $i < 7; ++$i) {
            $t = self::ge_add($A2, $Ai[$i]);
            $u = self::ge_p1p1_to_p3($t);
            $Ai[$i + 1] = self::ge_p3_to_cached($u);
        }

        # ge_p2_0(r);
        $r = self::ge_p2_0();

        # for (i = 255;i >= 0;--i) {
        #     if (aslide[i] || bslide[i]) break;
        # }
        $i = 255;
        for (; $i >= 0; --$i) {
            if ($aslide[$i] || $bslide[$i]) {
                break;
            }
        }

        # for (;i >= 0;--i) {
        for (; $i >= 0; --$i) {
            # ge_p2_dbl(&t,r);
            $t = self::ge_p2_dbl($r);

            # if (aslide[i] > 0) {
            if ($aslide[$i] > 0) {
                # ge_p1p1_to_p3(&u,&t);
                # ge_add(&t,&u,&Ai[aslide[i]/2]);
                $u = self::ge_p1p1_to_p3($t);
                $t = self::ge_add(
                    $u,
                    $Ai[(int) floor($aslide[$i] / 2)]
                );
            # } else if (aslide[i] < 0) {
            } elseif ($aslide[$i] < 0) {
                # ge_p1p1_to_p3(&u,&t);
                # ge_sub(&t,&u,&Ai[(-aslide[i])/2]);
                $u = self::ge_p1p1_to_p3($t);
                $t = self::ge_sub(
                    $u,
                    $Ai[(int) floor(-$aslide[$i] / 2)]
                );
            }

            # if (bslide[i] > 0) {
            if ($bslide[$i] > 0) {
                /** @var int $index */
                $index = (int) floor($bslide[$i] / 2);
                # ge_p1p1_to_p3(&u,&t);
                # ge_madd(&t,&u,&Bi[bslide[i]/2]);
                $u = self::ge_p1p1_to_p3($t);
                $t = self::ge_madd($t, $u, $Bi[$index]);
            # } else if (bslide[i] < 0) {
            } elseif ($bslide[$i] < 0) {
                /** @var int $index */
                $index = (int) floor(-$bslide[$i] / 2);
                # ge_p1p1_to_p3(&u,&t);
                # ge_msub(&t,&u,&Bi[(-bslide[i])/2]);
                $u = self::ge_p1p1_to_p3($t);
                $t = self::ge_msub($t, $u, $Bi[$index]);
            }
            # ge_p1p1_to_p2(r,&t);
            $r = self::ge_p1p1_to_p2($t);
        }
        return $r;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $a
     * @param ParagonIE_Sodium_Core_Curve25519_Ge_P3 $p
     * @return ParagonIE_Sodium_Core_Curve25519_Ge_P3
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedAssignment
     * @psalm-suppress MixedOperand
     */
    public static function ge_scalarmult($a, $p)
    {
        $e = array_fill(0, 64, 0);

        /** @var ParagonIE_Sodium_Core_Curve25519_Ge_Cached[] $pi */
        $pi = array();

        //        ge25519_p3_to_cached(&pi[1 - 1], p);   /* p */
        $pi[0] = self::ge_p3_to_cached($p);

        //        ge25519_p3_dbl(&t2, p);
        //        ge25519_p1p1_to_p3(&p2, &t2);
        //        ge25519_p3_to_cached(&pi[2 - 1], &p2); /* 2p = 2*p */
        $t2 = self::ge_p3_dbl($p);
        $p2 = self::ge_p1p1_to_p3($t2);
        $pi[1] = self::ge_p3_to_cached($p2);

        //        ge25519_add_cached(&t3, p, &pi[2 - 1]);
        //        ge25519_p1p1_to_p3(&p3, &t3);
        //        ge25519_p3_to_cached(&pi[3 - 1], &p3); /* 3p = 2p+p */
        $t3 = self::ge_add($p, $pi[1]);
        $p3 = self::ge_p1p1_to_p3($t3);
        $pi[2] = self::ge_p3_to_cached($p3);

        //        ge25519_p3_dbl(&t4, &p2);
        //        ge25519_p1p1_to_p3(&p4, &t4);
        //        ge25519_p3_to_cached(&pi[4 - 1], &p4); /* 4p = 2*2p */
        $t4 = self::ge_p3_dbl($p2);
        $p4 = self::ge_p1p1_to_p3($t4);
        $pi[3] = self::ge_p3_to_cached($p4);

        //        ge25519_add_cached(&t5, p, &pi[4 - 1]);
        //        ge25519_p1p1_to_p3(&p5, &t5);
        //        ge25519_p3_to_cached(&pi[5 - 1], &p5); /* 5p = 4p+p */
        $t5 = self::ge_add($p, $pi[3]);
        $p5 = self::ge_p1p1_to_p3($t5);
        $pi[4] = self::ge_p3_to_cached($p5);

        //        ge25519_p3_dbl(&t6, &p3);
        //        ge25519_p1p1_to_p3(&p6, &t6);
        //        ge25519_p3_to_cached(&pi[6 - 1], &p6); /* 6p = 2*3p */
        $t6 = self::ge_p3_dbl($p3);
        $p6 = self::ge_p1p1_to_p3($t6);
        $pi[5] = self::ge_p3_to_cached($p6);

        //        ge25519_add_cached(&t7, p, &pi[6 - 1]);
        //        ge25519_p1p1_to_p3(&p7, &t7);
        //        ge25519_p3_to_cached(&pi[7 - 1], &p7); /* 7p = 6p+p */
        $t7 = self::ge_add($p, $pi[5]);
        $p7 = self::ge_p1p1_to_p3($t7);
        $pi[6] = self::ge_p3_to_cached($p7);

        //        ge25519_p3_dbl(&t8, &p4);
        //        ge25519_p1p1_to_p3(&p8, &t8);
        //        ge25519_p3_to_cached(&pi[8 - 1], &p8); /* 8p = 2*4p */
        $t8 = self::ge_p3_dbl($p4);
        $p8 = self::ge_p1p1_to_p3($t8);
        $pi[7] = self::ge_p3_to_cached($p8);


        //        for (i = 0; i < 32; ++i) {
        //            e[2 * i + 0] = (a[i] >> 0) & 15;
        //            e[2 * i + 1] = (a[i] >> 4) & 15;
        //        }
        for ($i = 0; $i < 32; ++$i) {
            $e[($i << 1)    ] =  self::chrToInt($a[$i]) & 15;
            $e[($i << 1) + 1] = (self::chrToInt($a[$i]) >> 4) & 15;
        }
        //        /* each e[i] is between 0 and 15 */
        //        /* e[63] is between 0 and 7 */

        //        carry = 0;
        //        for (i = 0; i < 63; ++i) {
        //            e[i] += carry;
        //            carry = e[i] + 8;
        //            carry >>= 4;
        //            e[i] -= carry * ((signed char) 1 << 4);
        //        }
        $carry = 0;
        for ($i = 0; $i < 63; ++$i) {
            $e[$i] += $carry;
            $carry = $e[$i] + 8;
            $carry >>= 4;
            $e[$i] -= $carry << 4;
        }
        //        e[63] += carry;
        //        /* each e[i] is between -8 and 8 */
        $e[63] += $carry;

        //        ge25519_p3_0(h);
        $h = self::ge_p3_0();

        //        for (i = 63; i != 0; i--) {
        for ($i = 63; $i != 0; --$i) {
            // ge25519_cmov8_cached(&t, pi, e[i]);
            $t = self::ge_cmov8_cached($pi, $e[$i]);
            // ge25519_add_cached(&r, h, &t);
            $r = self::ge_add($h, $t);

            // ge25519_p1p1_to_p2(&s, &r);
            // ge25519_p2_dbl(&r, &s);
            // ge25519_p1p1_to_p2(&s, &r);
            // ge25519_p2_dbl(&r, &s);
            // ge25519_p1p1_to_p2(&s, &r);
            // ge25519_p2_dbl(&r, &s);
            // ge25519_p1p1_to_p2(&s, &r);
            // ge25519_p2_dbl(&r, &s);
            $s = self::ge_p1p1_to_p2($r);
            $r = self::ge_p2_dbl($s);
            $s = self::ge_p1p1_to_p2($r);
            $r = self::ge_p2_dbl($s);
            $s = self::ge_p1p1_to_p2($r);
            $r = self::ge_p2_dbl($s);
            $s = self::ge_p1p1_to_p2($r);
            $r = self::ge_p2_dbl($s);

            // ge25519_p1p1_to_p3(h, &r);  /* *16 */
            $h = self::ge_p1p1_to_p3($r); /* *16 */
        }

        //        ge25519_cmov8_cached(&t, pi, e[i]);
        //        ge25519_add_cached(&r, h, &t);
        //        ge25519_p1p1_to_p3(h, &r);
        $t = self::ge_cmov8_cached($pi, $e[0]);
        $r = self::ge_add($h, $t);
        return self::ge_p1p1_to_p3($r);
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $a
     * @return ParagonIE_Sodium_Core_Curve25519_Ge_P3
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress MixedAssignment
     * @psalm-suppress MixedOperand
     */
    public static function ge_scalarmult_base($a)
    {
        /** @var array<int, int> $e */
        $e = array();
        $r = new ParagonIE_Sodium_Core_Curve25519_Ge_P1p1();

        for ($i = 0; $i < 32; ++$i) {
            $dbl = (int) $i << 1;
            $e[$dbl] = (int) self::chrToInt($a[$i]) & 15;
            $e[$dbl + 1] = (int) (self::chrToInt($a[$i]) >> 4) & 15;
        }

        $carry = 0;
        for ($i = 0; $i < 63; ++$i) {
            $e[$i] += $carry;
            $carry = $e[$i] + 8;
            $carry >>= 4;
            $e[$i] -= $carry << 4;
        }
        $e[63] += (int) $carry;

        $h = self::ge_p3_0();

        for ($i = 1; $i < 64; $i += 2) {
            $t = self::ge_select((int) floor($i / 2), (int) $e[$i]);
            $r = self::ge_madd($r, $h, $t);
            $h = self::ge_p1p1_to_p3($r);
        }

        $r = self::ge_p3_dbl($h);

        $s = self::ge_p1p1_to_p2($r);
        $r = self::ge_p2_dbl($s);
        $s = self::ge_p1p1_to_p2($r);
        $r = self::ge_p2_dbl($s);
        $s = self::ge_p1p1_to_p2($r);
        $r = self::ge_p2_dbl($s);

        $h = self::ge_p1p1_to_p3($r);

        for ($i = 0; $i < 64; $i += 2) {
            $t = self::ge_select($i >> 1, (int) $e[$i]);
            $r = self::ge_madd($r, $h, $t);
            $h = self::ge_p1p1_to_p3($r);
        }
        return $h;
    }

    /**
     * Calculates (ab + c) mod l
     * where l = 2^252 + 27742317777372353535851937790883648493
     *
     * @internal You should not use this directly from another application
     *
     * @param string $a
     * @param string $b
     * @param string $c
     * @return string
     * @throws TypeError
     */
    public static function sc_muladd($a, $b, $c)
    {
        $a0 = 2097151 & self::load_3(self::substr($a, 0, 3));
        $a1 = 2097151 & (self::load_4(self::substr($a, 2, 4)) >> 5);
        $a2 = 2097151 & (self::load_3(self::substr($a, 5, 3)) >> 2);
        $a3 = 2097151 & (self::load_4(self::substr($a, 7, 4)) >> 7);
        $a4 = 2097151 & (self::load_4(self::substr($a, 10, 4)) >> 4);
        $a5 = 2097151 & (self::load_3(self::substr($a, 13, 3)) >> 1);
        $a6 = 2097151 & (self::load_4(self::substr($a, 15, 4)) >> 6);
        $a7 = 2097151 & (self::load_3(self::substr($a, 18, 3)) >> 3);
        $a8 = 2097151 & self::load_3(self::substr($a, 21, 3));
        $a9 = 2097151 & (self::load_4(self::substr($a, 23, 4)) >> 5);
        $a10 = 2097151 & (self::load_3(self::substr($a, 26, 3)) >> 2);
        $a11 = (self::load_4(self::substr($a, 28, 4)) >> 7);

        $b0 = 2097151 & self::load_3(self::substr($b, 0, 3));
        $b1 = 2097151 & (self::load_4(self::substr($b, 2, 4)) >> 5);
        $b2 = 2097151 & (self::load_3(self::substr($b, 5, 3)) >> 2);
        $b3 = 2097151 & (self::load_4(self::substr($b, 7, 4)) >> 7);
        $b4 = 2097151 & (self::load_4(self::substr($b, 10, 4)) >> 4);
        $b5 = 2097151 & (self::load_3(self::substr($b, 13, 3)) >> 1);
        $b6 = 2097151 & (self::load_4(self::substr($b, 15, 4)) >> 6);
        $b7 = 2097151 & (self::load_3(self::substr($b, 18, 3)) >> 3);
        $b8 = 2097151 & self::load_3(self::substr($b, 21, 3));
        $b9 = 2097151 & (self::load_4(self::substr($b, 23, 4)) >> 5);
        $b10 = 2097151 & (self::load_3(self::substr($b, 26, 3)) >> 2);
        $b11 = (self::load_4(self::substr($b, 28, 4)) >> 7);

        $c0 = 2097151 & self::load_3(self::substr($c, 0, 3));
        $c1 = 2097151 & (self::load_4(self::substr($c, 2, 4)) >> 5);
        $c2 = 2097151 & (self::load_3(self::substr($c, 5, 3)) >> 2);
        $c3 = 2097151 & (self::load_4(self::substr($c, 7, 4)) >> 7);
        $c4 = 2097151 & (self::load_4(self::substr($c, 10, 4)) >> 4);
        $c5 = 2097151 & (self::load_3(self::substr($c, 13, 3)) >> 1);
        $c6 = 2097151 & (self::load_4(self::substr($c, 15, 4)) >> 6);
        $c7 = 2097151 & (self::load_3(self::substr($c, 18, 3)) >> 3);
        $c8 = 2097151 & self::load_3(self::substr($c, 21, 3));
        $c9 = 2097151 & (self::load_4(self::substr($c, 23, 4)) >> 5);
        $c10 = 2097151 & (self::load_3(self::substr($c, 26, 3)) >> 2);
        $c11 = (self::load_4(self::substr($c, 28, 4)) >> 7);

        /* Can't really avoid the pyramid here: */
        $s0 = $c0 + self::mul($a0, $b0, 24);
        $s1 = $c1 + self::mul($a0, $b1, 24) + self::mul($a1, $b0, 24);
        $s2 = $c2 + self::mul($a0, $b2, 24) + self::mul($a1, $b1, 24) + self::mul($a2, $b0, 24);
        $s3 = $c3 + self::mul($a0, $b3, 24) + self::mul($a1, $b2, 24) + self::mul($a2, $b1, 24) + self::mul($a3, $b0, 24);
        $s4 = $c4 + self::mul($a0, $b4, 24) + self::mul($a1, $b3, 24) + self::mul($a2, $b2, 24) + self::mul($a3, $b1, 24) +
               self::mul($a4, $b0, 24);
        $s5 = $c5 + self::mul($a0, $b5, 24) + self::mul($a1, $b4, 24) + self::mul($a2, $b3, 24) + self::mul($a3, $b2, 24) +
               self::mul($a4, $b1, 24) + self::mul($a5, $b0, 24);
        $s6 = $c6 + self::mul($a0, $b6, 24) + self::mul($a1, $b5, 24) + self::mul($a2, $b4, 24) + self::mul($a3, $b3, 24) +
               self::mul($a4, $b2, 24) + self::mul($a5, $b1, 24) + self::mul($a6, $b0, 24);
        $s7 = $c7 + self::mul($a0, $b7, 24) + self::mul($a1, $b6, 24) + self::mul($a2, $b5, 24) + self::mul($a3, $b4, 24) +
               self::mul($a4, $b3, 24) + self::mul($a5, $b2, 24) + self::mul($a6, $b1, 24) + self::mul($a7, $b0, 24);
        $s8 = $c8 + self::mul($a0, $b8, 24) + self::mul($a1, $b7, 24) + self::mul($a2, $b6, 24) + self::mul($a3, $b5, 24) +
               self::mul($a4, $b4, 24) + self::mul($a5, $b3, 24) + self::mul($a6, $b2, 24) + self::mul($a7, $b1, 24) +
               self::mul($a8, $b0, 24);
        $s9 = $c9 + self::mul($a0, $b9, 24) + self::mul($a1, $b8, 24) + self::mul($a2, $b7, 24) + self::mul($a3, $b6, 24) +
               self::mul($a4, $b5, 24) + self::mul($a5, $b4, 24) + self::mul($a6, $b3, 24) + self::mul($a7, $b2, 24) +
               self::mul($a8, $b1, 24) + self::mul($a9, $b0, 24);
        $s10 = $c10 + self::mul($a0, $b10, 24) + self::mul($a1, $b9, 24) + self::mul($a2, $b8, 24) + self::mul($a3, $b7, 24) +
               self::mul($a4, $b6, 24) + self::mul($a5, $b5, 24) + self::mul($a6, $b4, 24) + self::mul($a7, $b3, 24) +
               self::mul($a8, $b2, 24) + self::mul($a9, $b1, 24) + self::mul($a10, $b0, 24);
        $s11 = $c11 + self::mul($a0, $b11, 24) + self::mul($a1, $b10, 24) + self::mul($a2, $b9, 24) + self::mul($a3, $b8, 24) +
               self::mul($a4, $b7, 24) + self::mul($a5, $b6, 24) + self::mul($a6, $b5, 24) + self::mul($a7, $b4, 24) +
               self::mul($a8, $b3, 24) + self::mul($a9, $b2, 24) + self::mul($a10, $b1, 24) + self::mul($a11, $b0, 24);
        $s12 = self::mul($a1, $b11, 24) + self::mul($a2, $b10, 24) + self::mul($a3, $b9, 24) + self::mul($a4, $b8, 24) +
               self::mul($a5, $b7, 24) + self::mul($a6, $b6, 24) + self::mul($a7, $b5, 24) + self::mul($a8, $b4, 24) +
               self::mul($a9, $b3, 24) + self::mul($a10, $b2, 24) + self::mul($a11, $b1, 24);
        $s13 = self::mul($a2, $b11, 24) + self::mul($a3, $b10, 24) + self::mul($a4, $b9, 24) + self::mul($a5, $b8, 24) +
               self::mul($a6, $b7, 24) + self::mul($a7, $b6, 24) + self::mul($a8, $b5, 24) + self::mul($a9, $b4, 24) +
               self::mul($a10, $b3, 24) + self::mul($a11, $b2, 24);
        $s14 = self::mul($a3, $b11, 24) + self::mul($a4, $b10, 24) + self::mul($a5, $b9, 24) + self::mul($a6, $b8, 24) +
               self::mul($a7, $b7, 24) + self::mul($a8, $b6, 24) + self::mul($a9, $b5, 24) + self::mul($a10, $b4, 24) +
               self::mul($a11, $b3, 24);
        $s15 = self::mul($a4, $b11, 24) + self::mul($a5, $b10, 24) + self::mul($a6, $b9, 24) + self::mul($a7, $b8, 24) +
               self::mul($a8, $b7, 24) + self::mul($a9, $b6, 24) + self::mul($a10, $b5, 24) + self::mul($a11, $b4, 24);
        $s16 = self::mul($a5, $b11, 24) + self::mul($a6, $b10, 24) + self::mul($a7, $b9, 24) + self::mul($a8, $b8, 24) +
               self::mul($a9, $b7, 24) + self::mul($a10, $b6, 24) + self::mul($a11, $b5, 24);
        $s17 = self::mul($a6, $b11, 24) + self::mul($a7, $b10, 24) + self::mul($a8, $b9, 24) + self::mul($a9, $b8, 24) +
               self::mul($a10, $b7, 24) + self::mul($a11, $b6, 24);
        $s18 = self::mul($a7, $b11, 24) + self::mul($a8, $b10, 24) + self::mul($a9, $b9, 24) + self::mul($a10, $b8, 24) +
               self::mul($a11, $b7, 24);
        $s19 = self::mul($a8, $b11, 24) + self::mul($a9, $b10, 24) + self::mul($a10, $b9, 24) + self::mul($a11, $b8, 24);
        $s20 = self::mul($a9, $b11, 24) + self::mul($a10, $b10, 24) + self::mul($a11, $b9, 24);
        $s21 = self::mul($a10, $b11, 24) + self::mul($a11, $b10, 24);
        $s22 = self::mul($a11, $b11, 24);
        $s23 = 0;

        $carry0 = ($s0 + (1 << 20)) >> 21;
        $s1 += $carry0;
        $s0 -= $carry0 << 21;
        $carry2 = ($s2 + (1 << 20)) >> 21;
        $s3 += $carry2;
        $s2 -= $carry2 << 21;
        $carry4 = ($s4 + (1 << 20)) >> 21;
        $s5 += $carry4;
        $s4 -= $carry4 << 21;
        $carry6 = ($s6 + (1 << 20)) >> 21;
        $s7 += $carry6;
        $s6 -= $carry6 << 21;
        $carry8 = ($s8 + (1 << 20)) >> 21;
        $s9 += $carry8;
        $s8 -= $carry8 << 21;
        $carry10 = ($s10 + (1 << 20)) >> 21;
        $s11 += $carry10;
        $s10 -= $carry10 << 21;
        $carry12 = ($s12 + (1 << 20)) >> 21;
        $s13 += $carry12;
        $s12 -= $carry12 << 21;
        $carry14 = ($s14 + (1 << 20)) >> 21;
        $s15 += $carry14;
        $s14 -= $carry14 << 21;
        $carry16 = ($s16 + (1 << 20)) >> 21;
        $s17 += $carry16;
        $s16 -= $carry16 << 21;
        $carry18 = ($s18 + (1 << 20)) >> 21;
        $s19 += $carry18;
        $s18 -= $carry18 << 21;
        $carry20 = ($s20 + (1 << 20)) >> 21;
        $s21 += $carry20;
        $s20 -= $carry20 << 21;
        $carry22 = ($s22 + (1 << 20)) >> 21;
        $s23 += $carry22;
        $s22 -= $carry22 << 21;

        $carry1 = ($s1 + (1 << 20)) >> 21;
        $s2 += $carry1;
        $s1 -= $carry1 << 21;
        $carry3 = ($s3 + (1 << 20)) >> 21;
        $s4 += $carry3;
        $s3 -= $carry3 << 21;
        $carry5 = ($s5 + (1 << 20)) >> 21;
        $s6 += $carry5;
        $s5 -= $carry5 << 21;
        $carry7 = ($s7 + (1 << 20)) >> 21;
        $s8 += $carry7;
        $s7 -= $carry7 << 21;
        $carry9 = ($s9 + (1 << 20)) >> 21;
        $s10 += $carry9;
        $s9 -= $carry9 << 21;
        $carry11 = ($s11 + (1 << 20)) >> 21;
        $s12 += $carry11;
        $s11 -= $carry11 << 21;
        $carry13 = ($s13 + (1 << 20)) >> 21;
        $s14 += $carry13;
        $s13 -= $carry13 << 21;
        $carry15 = ($s15 + (1 << 20)) >> 21;
        $s16 += $carry15;
        $s15 -= $carry15 << 21;
        $carry17 = ($s17 + (1 << 20)) >> 21;
        $s18 += $carry17;
        $s17 -= $carry17 << 21;
        $carry19 = ($s19 + (1 << 20)) >> 21;
        $s20 += $carry19;
        $s19 -= $carry19 << 21;
        $carry21 = ($s21 + (1 << 20)) >> 21;
        $s22 += $carry21;
        $s21 -= $carry21 << 21;

        $s11 += self::mul($s23, 666643, 20);
        $s12 += self::mul($s23, 470296, 19);
        $s13 += self::mul($s23, 654183, 20);
        $s14 -= self::mul($s23, 997805, 20);
        $s15 += self::mul($s23, 136657, 18);
        $s16 -= self::mul($s23, 683901, 20);

        $s10 += self::mul($s22, 666643, 20);
        $s11 += self::mul($s22, 470296, 19);
        $s12 += self::mul($s22, 654183, 20);
        $s13 -= self::mul($s22, 997805, 20);
        $s14 += self::mul($s22, 136657, 18);
        $s15 -= self::mul($s22, 683901, 20);

        $s9  += self::mul($s21,  666643, 20);
        $s10 += self::mul($s21,  470296, 19);
        $s11 += self::mul($s21,  654183, 20);
        $s12 -= self::mul($s21,  997805, 20);
        $s13 += self::mul($s21,  136657, 18);
        $s14 -= self::mul($s21,  683901, 20);

        $s8  += self::mul($s20,  666643, 20);
        $s9  += self::mul($s20,  470296, 19);
        $s10 += self::mul($s20,  654183, 20);
        $s11 -= self::mul($s20,  997805, 20);
        $s12 += self::mul($s20,  136657, 18);
        $s13 -= self::mul($s20,  683901, 20);

        $s7  += self::mul($s19,  666643, 20);
        $s8  += self::mul($s19,  470296, 19);
        $s9  += self::mul($s19,  654183, 20);
        $s10 -= self::mul($s19,  997805, 20);
        $s11 += self::mul($s19,  136657, 18);
        $s12 -= self::mul($s19,  683901, 20);

        $s6  += self::mul($s18,  666643, 20);
        $s7  += self::mul($s18,  470296, 19);
        $s8  += self::mul($s18,  654183, 20);
        $s9  -= self::mul($s18,  997805, 20);
        $s10 += self::mul($s18,  136657, 18);
        $s11 -= self::mul($s18,  683901, 20);

        $carry6 = ($s6 + (1 << 20)) >> 21;
        $s7 += $carry6;
        $s6 -= $carry6 << 21;
        $carry8 = ($s8 + (1 << 20)) >> 21;
        $s9 += $carry8;
        $s8 -= $carry8 << 21;
        $carry10 = ($s10 + (1 << 20)) >> 21;
        $s11 += $carry10;
        $s10 -= $carry10 << 21;
        $carry12 = ($s12 + (1 << 20)) >> 21;
        $s13 += $carry12;
        $s12 -= $carry12 << 21;
        $carry14 = ($s14 + (1 << 20)) >> 21;
        $s15 += $carry14;
        $s14 -= $carry14 << 21;
        $carry16 = ($s16 + (1 << 20)) >> 21;
        $s17 += $carry16;
        $s16 -= $carry16 << 21;

        $carry7 = ($s7 + (1 << 20)) >> 21;
        $s8 += $carry7;
        $s7 -= $carry7 << 21;
        $carry9 = ($s9 + (1 << 20)) >> 21;
        $s10 += $carry9;
        $s9 -= $carry9 << 21;
        $carry11 = ($s11 + (1 << 20)) >> 21;
        $s12 += $carry11;
        $s11 -= $carry11 << 21;
        $carry13 = ($s13 + (1 << 20)) >> 21;
        $s14 += $carry13;
        $s13 -= $carry13 << 21;
        $carry15 = ($s15 + (1 << 20)) >> 21;
        $s16 += $carry15;
        $s15 -= $carry15 << 21;

        $s5  += self::mul($s17,  666643, 20);
        $s6  += self::mul($s17,  470296, 19);
        $s7  += self::mul($s17,  654183, 20);
        $s8  -= self::mul($s17,  997805, 20);
        $s9  += self::mul($s17,  136657, 18);
        $s10 -= self::mul($s17,  683901, 20);

        $s4 += self::mul($s16,  666643, 20);
        $s5 += self::mul($s16,  470296, 19);
        $s6 += self::mul($s16,  654183, 20);
        $s7 -= self::mul($s16,  997805, 20);
        $s8 += self::mul($s16,  136657, 18);
        $s9 -= self::mul($s16,  683901, 20);

        $s3 += self::mul($s15,  666643, 20);
        $s4 += self::mul($s15,  470296, 19);
        $s5 += self::mul($s15,  654183, 20);
        $s6 -= self::mul($s15,  997805, 20);
        $s7 += self::mul($s15,  136657, 18);
        $s8 -= self::mul($s15,  683901, 20);

        $s2 += self::mul($s14,  666643, 20);
        $s3 += self::mul($s14,  470296, 19);
        $s4 += self::mul($s14,  654183, 20);
        $s5 -= self::mul($s14,  997805, 20);
        $s6 += self::mul($s14,  136657, 18);
        $s7 -= self::mul($s14,  683901, 20);

        $s1 += self::mul($s13,  666643, 20);
        $s2 += self::mul($s13,  470296, 19);
        $s3 += self::mul($s13,  654183, 20);
        $s4 -= self::mul($s13,  997805, 20);
        $s5 += self::mul($s13,  136657, 18);
        $s6 -= self::mul($s13,  683901, 20);

        $s0 += self::mul($s12,  666643, 20);
        $s1 += self::mul($s12,  470296, 19);
        $s2 += self::mul($s12,  654183, 20);
        $s3 -= self::mul($s12,  997805, 20);
        $s4 += self::mul($s12,  136657, 18);
        $s5 -= self::mul($s12,  683901, 20);
        $s12 = 0;

        $carry0 = ($s0 + (1 << 20)) >> 21;
        $s1 += $carry0;
        $s0 -= $carry0 << 21;
        $carry2 = ($s2 + (1 << 20)) >> 21;
        $s3 += $carry2;
        $s2 -= $carry2 << 21;
        $carry4 = ($s4 + (1 << 20)) >> 21;
        $s5 += $carry4;
        $s4 -= $carry4 << 21;
        $carry6 = ($s6 + (1 << 20)) >> 21;
        $s7 += $carry6;
        $s6 -= $carry6 << 21;
        $carry8 = ($s8 + (1 << 20)) >> 21;
        $s9 += $carry8;
        $s8 -= $carry8 << 21;
        $carry10 = ($s10 + (1 << 20)) >> 21;
        $s11 += $carry10;
        $s10 -= $carry10 << 21;

        $carry1 = ($s1 + (1 << 20)) >> 21;
        $s2 += $carry1;
        $s1 -= $carry1 << 21;
        $carry3 = ($s3 + (1 << 20)) >> 21;
        $s4 += $carry3;
        $s3 -= $carry3 << 21;
        $carry5 = ($s5 + (1 << 20)) >> 21;
        $s6 += $carry5;
        $s5 -= $carry5 << 21;
        $carry7 = ($s7 + (1 << 20)) >> 21;
        $s8 += $carry7;
        $s7 -= $carry7 << 21;
        $carry9 = ($s9 + (1 << 20)) >> 21;
        $s10 += $carry9;
        $s9 -= $carry9 << 21;
        $carry11 = ($s11 + (1 << 20)) >> 21;
        $s12 += $carry11;
        $s11 -= $carry11 << 21;

        $s0 += self::mul($s12,  666643, 20);
        $s1 += self::mul($s12,  470296, 19);
        $s2 += self::mul($s12,  654183, 20);
        $s3 -= self::mul($s12,  997805, 20);
        $s4 += self::mul($s12,  136657, 18);
        $s5 -= self::mul($s12,  683901, 20);
        $s12 = 0;

        $carry0 = $s0 >> 21;
        $s1 += $carry0;
        $s0 -= $carry0 << 21;
        $carry1 = $s1 >> 21;
        $s2 += $carry1;
        $s1 -= $carry1 << 21;
        $carry2 = $s2 >> 21;
        $s3 += $carry2;
        $s2 -= $carry2 << 21;
        $carry3 = $s3 >> 21;
        $s4 += $carry3;
        $s3 -= $carry3 << 21;
        $carry4 = $s4 >> 21;
        $s5 += $carry4;
        $s4 -= $carry4 << 21;
        $carry5 = $s5 >> 21;
        $s6 += $carry5;
        $s5 -= $carry5 << 21;
        $carry6 = $s6 >> 21;
        $s7 += $carry6;
        $s6 -= $carry6 << 21;
        $carry7 = $s7 >> 21;
        $s8 += $carry7;
        $s7 -= $carry7 << 21;
        $carry8 = $s8 >> 21;
        $s9 += $carry8;
        $s8 -= $carry8 << 21;
        $carry9 = $s9 >> 21;
        $s10 += $carry9;
        $s9 -= $carry9 << 21;
        $carry10 = $s10 >> 21;
        $s11 += $carry10;
        $s10 -= $carry10 << 21;
        $carry11 = $s11 >> 21;
        $s12 += $carry11;
        $s11 -= $carry11 << 21;

        $s0 += self::mul($s12,  666643, 20);
        $s1 += self::mul($s12,  470296, 19);
        $s2 += self::mul($s12,  654183, 20);
        $s3 -= self::mul($s12,  997805, 20);
        $s4 += self::mul($s12,  136657, 18);
        $s5 -= self::mul($s12,  683901, 20);

        $carry0 = $s0 >> 21;
        $s1 += $carry0;
        $s0 -= $carry0 << 21;
        $carry1 = $s1 >> 21;
        $s2 += $carry1;
        $s1 -= $carry1 << 21;
        $carry2 = $s2 >> 21;
        $s3 += $carry2;
        $s2 -= $carry2 << 21;
        $carry3 = $s3 >> 21;
        $s4 += $carry3;
        $s3 -= $carry3 << 21;
        $carry4 = $s4 >> 21;
        $s5 += $carry4;
        $s4 -= $carry4 << 21;
        $carry5 = $s5 >> 21;
        $s6 += $carry5;
        $s5 -= $carry5 << 21;
        $carry6 = $s6 >> 21;
        $s7 += $carry6;
        $s6 -= $carry6 << 21;
        $carry7 = $s7 >> 21;
        $s8 += $carry7;
        $s7 -= $carry7 << 21;
        $carry8 = $s8 >> 21;
        $s9 += $carry8;
        $s8 -= $carry8 << 21;
        $carry9 = $s9 >> 21;
        $s10 += $carry9;
        $s9 -= $carry9 << 21;
        $carry10 = $s10 >> 21;
        $s11 += $carry10;
        $s10 -= $carry10 << 21;

        /**
         * @var array<int, int>
         */
        $arr = array(
            (int) (0xff & ($s0 >> 0)),
            (int) (0xff & ($s0 >> 8)),
            (int) (0xff & (($s0 >> 16) | $s1 << 5)),
            (int) (0xff & ($s1 >> 3)),
            (int) (0xff & ($s1 >> 11)),
            (int) (0xff & (($s1 >> 19) | $s2 << 2)),
            (int) (0xff & ($s2 >> 6)),
            (int) (0xff & (($s2 >> 14) | $s3 << 7)),
            (int) (0xff & ($s3 >> 1)),
            (int) (0xff & ($s3 >> 9)),
            (int) (0xff & (($s3 >> 17) | $s4 << 4)),
            (int) (0xff & ($s4 >> 4)),
            (int) (0xff & ($s4 >> 12)),
            (int) (0xff & (($s4 >> 20) | $s5 << 1)),
            (int) (0xff & ($s5 >> 7)),
            (int) (0xff & (($s5 >> 15) | $s6 << 6)),
            (int) (0xff & ($s6 >> 2)),
            (int) (0xff & ($s6 >> 10)),
            (int) (0xff & (($s6 >> 18) | $s7 << 3)),
            (int) (0xff & ($s7 >> 5)),
            (int) (0xff & ($s7 >> 13)),
            (int) (0xff & ($s8 >> 0)),
            (int) (0xff & ($s8 >> 8)),
            (int) (0xff & (($s8 >> 16) | $s9 << 5)),
            (int) (0xff & ($s9 >> 3)),
            (int) (0xff & ($s9 >> 11)),
            (int) (0xff & (($s9 >> 19) | $s10 << 2)),
            (int) (0xff & ($s10 >> 6)),
            (int) (0xff & (($s10 >> 14) | $s11 << 7)),
            (int) (0xff & ($s11 >> 1)),
            (int) (0xff & ($s11 >> 9)),
            0xff & ($s11 >> 17)
        );
        return self::intArrayToString($arr);
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $s
     * @return string
     * @throws TypeError
     */
    public static function sc_reduce($s)
    {
        $s0 = 2097151 & self::load_3(self::substr($s, 0, 3));
        $s1 = 2097151 & (self::load_4(self::substr($s, 2, 4)) >> 5);
        $s2 = 2097151 & (self::load_3(self::substr($s, 5, 3)) >> 2);
        $s3 = 2097151 & (self::load_4(self::substr($s, 7, 4)) >> 7);
        $s4 = 2097151 & (self::load_4(self::substr($s, 10, 4)) >> 4);
        $s5 = 2097151 & (self::load_3(self::substr($s, 13, 3)) >> 1);
        $s6 = 2097151 & (self::load_4(self::substr($s, 15, 4)) >> 6);
        $s7 = 2097151 & (self::load_3(self::substr($s, 18, 4)) >> 3);
        $s8 = 2097151 & self::load_3(self::substr($s, 21, 3));
        $s9 = 2097151 & (self::load_4(self::substr($s, 23, 4)) >> 5);
        $s10 = 2097151 & (self::load_3(self::substr($s, 26, 3)) >> 2);
        $s11 = 2097151 & (self::load_4(self::substr($s, 28, 4)) >> 7);
        $s12 = 2097151 & (self::load_4(self::substr($s, 31, 4)) >> 4);
        $s13 = 2097151 & (self::load_3(self::substr($s, 34, 3)) >> 1);
        $s14 = 2097151 & (self::load_4(self::substr($s, 36, 4)) >> 6);
        $s15 = 2097151 & (self::load_3(self::substr($s, 39, 4)) >> 3);
        $s16 = 2097151 & self::load_3(self::substr($s, 42, 3));
        $s17 = 2097151 & (self::load_4(self::substr($s, 44, 4)) >> 5);
        $s18 = 2097151 & (self::load_3(self::substr($s, 47, 3)) >> 2);
        $s19 = 2097151 & (self::load_4(self::substr($s, 49, 4)) >> 7);
        $s20 = 2097151 & (self::load_4(self::substr($s, 52, 4)) >> 4);
        $s21 = 2097151 & (self::load_3(self::substr($s, 55, 3)) >> 1);
        $s22 = 2097151 & (self::load_4(self::substr($s, 57, 4)) >> 6);
        $s23 = 0x1fffffff & (self::load_4(self::substr($s, 60, 4)) >> 3);

        $s11 += self::mul($s23,  666643, 20);
        $s12 += self::mul($s23,  470296, 19);
        $s13 += self::mul($s23,  654183, 20);
        $s14 -= self::mul($s23,  997805, 20);
        $s15 += self::mul($s23,  136657, 18);
        $s16 -= self::mul($s23,  683901, 20);

        $s10 += self::mul($s22,  666643, 20);
        $s11 += self::mul($s22,  470296, 19);
        $s12 += self::mul($s22,  654183, 20);
        $s13 -= self::mul($s22,  997805, 20);
        $s14 += self::mul($s22,  136657, 18);
        $s15 -= self::mul($s22,  683901, 20);

        $s9  += self::mul($s21,  666643, 20);
        $s10 += self::mul($s21,  470296, 19);
        $s11 += self::mul($s21,  654183, 20);
        $s12 -= self::mul($s21,  997805, 20);
        $s13 += self::mul($s21,  136657, 18);
        $s14 -= self::mul($s21,  683901, 20);

        $s8  += self::mul($s20,  666643, 20);
        $s9  += self::mul($s20,  470296, 19);
        $s10 += self::mul($s20,  654183, 20);
        $s11 -= self::mul($s20,  997805, 20);
        $s12 += self::mul($s20,  136657, 18);
        $s13 -= self::mul($s20,  683901, 20);

        $s7  += self::mul($s19,  666643, 20);
        $s8  += self::mul($s19,  470296, 19);
        $s9  += self::mul($s19,  654183, 20);
        $s10 -= self::mul($s19,  997805, 20);
        $s11 += self::mul($s19,  136657, 18);
        $s12 -= self::mul($s19,  683901, 20);

        $s6  += self::mul($s18,  666643, 20);
        $s7  += self::mul($s18,  470296, 19);
        $s8  += self::mul($s18,  654183, 20);
        $s9  -= self::mul($s18,  997805, 20);
        $s10 += self::mul($s18,  136657, 18);
        $s11 -= self::mul($s18,  683901, 20);

        $carry6 = ($s6 + (1 << 20)) >> 21;
        $s7 += $carry6;
        $s6 -= $carry6 << 21;
        $carry8 = ($s8 + (1 << 20)) >> 21;
        $s9 += $carry8;
        $s8 -= $carry8 << 21;
        $carry10 = ($s10 + (1 << 20)) >> 21;
        $s11 += $carry10;
        $s10 -= $carry10 << 21;
        $carry12 = ($s12 + (1 << 20)) >> 21;
        $s13 += $carry12;
        $s12 -= $carry12 << 21;
        $carry14 = ($s14 + (1 << 20)) >> 21;
        $s15 += $carry14;
        $s14 -= $carry14 << 21;
        $carry16 = ($s16 + (1 << 20)) >> 21;
        $s17 += $carry16;
        $s16 -= $carry16 << 21;

        $carry7 = ($s7 + (1 << 20)) >> 21;
        $s8 += $carry7;
        $s7 -= $carry7 << 21;
        $carry9 = ($s9 + (1 << 20)) >> 21;
        $s10 += $carry9;
        $s9 -= $carry9 << 21;
        $carry11 = ($s11 + (1 << 20)) >> 21;
        $s12 += $carry11;
        $s11 -= $carry11 << 21;
        $carry13 = ($s13 + (1 << 20)) >> 21;
        $s14 += $carry13;
        $s13 -= $carry13 << 21;
        $carry15 = ($s15 + (1 << 20)) >> 21;
        $s16 += $carry15;
        $s15 -= $carry15 << 21;

        $s5  += self::mul($s17,  666643, 20);
        $s6  += self::mul($s17,  470296, 19);
        $s7  += self::mul($s17,  654183, 20);
        $s8  -= self::mul($s17,  997805, 20);
        $s9  += self::mul($s17,  136657, 18);
        $s10 -= self::mul($s17,  683901, 20);

        $s4 += self::mul($s16,  666643, 20);
        $s5 += self::mul($s16,  470296, 19);
        $s6 += self::mul($s16,  654183, 20);
        $s7 -= self::mul($s16,  997805, 20);
        $s8 += self::mul($s16,  136657, 18);
        $s9 -= self::mul($s16,  683901, 20);

        $s3 += self::mul($s15,  666643, 20);
        $s4 += self::mul($s15,  470296, 19);
        $s5 += self::mul($s15,  654183, 20);
        $s6 -= self::mul($s15,  997805, 20);
        $s7 += self::mul($s15,  136657, 18);
        $s8 -= self::mul($s15,  683901, 20);

        $s2 += self::mul($s14,  666643, 20);
        $s3 += self::mul($s14,  470296, 19);
        $s4 += self::mul($s14,  654183, 20);
        $s5 -= self::mul($s14,  997805, 20);
        $s6 += self::mul($s14,  136657, 18);
        $s7 -= self::mul($s14,  683901, 20);

        $s1 += self::mul($s13,  666643, 20);
        $s2 += self::mul($s13,  470296, 19);
        $s3 += self::mul($s13,  654183, 20);
        $s4 -= self::mul($s13,  997805, 20);
        $s5 += self::mul($s13,  136657, 18);
        $s6 -= self::mul($s13,  683901, 20);

        $s0 += self::mul($s12,  666643, 20);
        $s1 += self::mul($s12,  470296, 19);
        $s2 += self::mul($s12,  654183, 20);
        $s3 -= self::mul($s12,  997805, 20);
        $s4 += self::mul($s12,  136657, 18);
        $s5 -= self::mul($s12,  683901, 20);
        $s12 = 0;

        $carry0 = ($s0 + (1 << 20)) >> 21;
        $s1 += $carry0;
        $s0 -= $carry0 << 21;
        $carry2 = ($s2 + (1 << 20)) >> 21;
        $s3 += $carry2;
        $s2 -= $carry2 << 21;
        $carry4 = ($s4 + (1 << 20)) >> 21;
        $s5 += $carry4;
        $s4 -= $carry4 << 21;
        $carry6 = ($s6 + (1 << 20)) >> 21;
        $s7 += $carry6;
        $s6 -= $carry6 << 21;
        $carry8 = ($s8 + (1 << 20)) >> 21;
        $s9 += $carry8;
        $s8 -= $carry8 << 21;
        $carry10 = ($s10 + (1 << 20)) >> 21;
        $s11 += $carry10;
        $s10 -= $carry10 << 21;

        $carry1 = ($s1 + (1 << 20)) >> 21;
        $s2 += $carry1;
        $s1 -= $carry1 << 21;
        $carry3 = ($s3 + (1 << 20)) >> 21;
        $s4 += $carry3;
        $s3 -= $carry3 << 21;
        $carry5 = ($s5 + (1 << 20)) >> 21;
        $s6 += $carry5;
        $s5 -= $carry5 << 21;
        $carry7 = ($s7 + (1 << 20)) >> 21;
        $s8 += $carry7;
        $s7 -= $carry7 << 21;
        $carry9 = ($s9 + (1 << 20)) >> 21;
        $s10 += $carry9;
        $s9 -= $carry9 << 21;
        $carry11 = ($s11 + (1 << 20)) >> 21;
        $s12 += $carry11;
        $s11 -= $carry11 << 21;

        $s0 += self::mul($s12,  666643, 20);
        $s1 += self::mul($s12,  470296, 19);
        $s2 += self::mul($s12,  654183, 20);
        $s3 -= self::mul($s12,  997805, 20);
        $s4 += self::mul($s12,  136657, 18);
        $s5 -= self::mul($s12,  683901, 20);
        $s12 = 0;

        $carry0 = $s0 >> 21;
        $s1 += $carry0;
        $s0 -= $carry0 << 21;
        $carry1 = $s1 >> 21;
        $s2 += $carry1;
        $s1 -= $carry1 << 21;
        $carry2 = $s2 >> 21;
        $s3 += $carry2;
        $s2 -= $carry2 << 21;
        $carry3 = $s3 >> 21;
        $s4 += $carry3;
        $s3 -= $carry3 << 21;
        $carry4 = $s4 >> 21;
        $s5 += $carry4;
        $s4 -= $carry4 << 21;
        $carry5 = $s5 >> 21;
        $s6 += $carry5;
        $s5 -= $carry5 << 21;
        $carry6 = $s6 >> 21;
        $s7 += $carry6;
        $s6 -= $carry6 << 21;
        $carry7 = $s7 >> 21;
        $s8 += $carry7;
        $s7 -= $carry7 << 21;
        $carry8 = $s8 >> 21;
        $s9 += $carry8;
        $s8 -= $carry8 << 21;
        $carry9 = $s9 >> 21;
        $s10 += $carry9;
        $s9 -= $carry9 << 21;
        $carry10 = $s10 >> 21;
        $s11 += $carry10;
        $s10 -= $carry10 << 21;
        $carry11 = $s11 >> 21;
        $s12 += $carry11;
        $s11 -= $carry11 << 21;

        $s0 += self::mul($s12,  666643, 20);
        $s1 += self::mul($s12,  470296, 19);
        $s2 += self::mul($s12,  654183, 20);
        $s3 -= self::mul($s12,  997805, 20);
        $s4 += self::mul($s12,  136657, 18);
        $s5 -= self::mul($s12,  683901, 20);

        $carry0 = $s0 >> 21;
        $s1 += $carry0;
        $s0 -= $carry0 << 21;
        $carry1 = $s1 >> 21;
        $s2 += $carry1;
        $s1 -= $carry1 << 21;
        $carry2 = $s2 >> 21;
        $s3 += $carry2;
        $s2 -= $carry2 << 21;
        $carry3 = $s3 >> 21;
        $s4 += $carry3;
        $s3 -= $carry3 << 21;
        $carry4 = $s4 >> 21;
        $s5 += $carry4;
        $s4 -= $carry4 << 21;
        $carry5 = $s5 >> 21;
        $s6 += $carry5;
        $s5 -= $carry5 << 21;
        $carry6 = $s6 >> 21;
        $s7 += $carry6;
        $s6 -= $carry6 << 21;
        $carry7 = $s7 >> 21;
        $s8 += $carry7;
        $s7 -= $carry7 << 21;
        $carry8 = $s8 >> 21;
        $s9 += $carry8;
        $s8 -= $carry8 << 21;
        $carry9 = $s9 >> 21;
        $s10 += $carry9;
        $s9 -= $carry9 << 21;
        $carry10 = $s10 >> 21;
        $s11 += $carry10;
        $s10 -= $carry10 << 21;

        /**
         * @var array<int, int>
         */
        $arr = array(
            (int) ($s0 >> 0),
            (int) ($s0 >> 8),
            (int) (($s0 >> 16) | $s1 << 5),
            (int) ($s1 >> 3),
            (int) ($s1 >> 11),
            (int) (($s1 >> 19) | $s2 << 2),
            (int) ($s2 >> 6),
            (int) (($s2 >> 14) | $s3 << 7),
            (int) ($s3 >> 1),
            (int) ($s3 >> 9),
            (int) (($s3 >> 17) | $s4 << 4),
            (int) ($s4 >> 4),
            (int) ($s4 >> 12),
            (int) (($s4 >> 20) | $s5 << 1),
            (int) ($s5 >> 7),
            (int) (($s5 >> 15) | $s6 << 6),
            (int) ($s6 >> 2),
            (int) ($s6 >> 10),
            (int) (($s6 >> 18) | $s7 << 3),
            (int) ($s7 >> 5),
            (int) ($s7 >> 13),
            (int) ($s8 >> 0),
            (int) ($s8 >> 8),
            (int) (($s8 >> 16) | $s9 << 5),
            (int) ($s9 >> 3),
            (int) ($s9 >> 11),
            (int) (($s9 >> 19) | $s10 << 2),
            (int) ($s10 >> 6),
            (int) (($s10 >> 14) | $s11 << 7),
            (int) ($s11 >> 1),
            (int) ($s11 >> 9),
            (int) $s11 >> 17
        );
        return self::intArrayToString($arr);
    }

    /**
     * multiply by the order of the main subgroup l = 2^252+27742317777372353535851937790883648493
     *
     * @param ParagonIE_Sodium_Core_Curve25519_Ge_P3 $A
     * @return ParagonIE_Sodium_Core_Curve25519_Ge_P3
     */
    public static function ge_mul_l(ParagonIE_Sodium_Core_Curve25519_Ge_P3 $A)
    {
        $aslide = array(
            13, 0, 0, 0, 0, -1, 0, 0, 0, 0, -11, 0, 0, 0, 0, 0, 0, -5, 0, 0, 0,
            0, 0, 0, -3, 0, 0, 0, 0, -13, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 3, 0,
            0, 0, 0, -13, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0,
            0, 0, 11, 0, 0, 0, 0, -13, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, -1,
            0, 0, 0, 0, 3, 0, 0, 0, 0, -11, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0,
            0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 7, 0, 0, 0, 0, 5, 0, 0, 0, 0,
            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1
        );

        /** @var array<int, ParagonIE_Sodium_Core_Curve25519_Ge_Cached> $Ai size 8 */
        $Ai = array();

        # ge_p3_to_cached(&Ai[0], A);
        $Ai[0] = self::ge_p3_to_cached($A);
        # ge_p3_dbl(&t, A);
        $t = self::ge_p3_dbl($A);
        # ge_p1p1_to_p3(&A2, &t);
        $A2 = self::ge_p1p1_to_p3($t);

        for ($i = 1; $i < 8; ++$i) {
            # ge_add(&t, &A2, &Ai[0]);
            $t = self::ge_add($A2, $Ai[$i - 1]);
            # ge_p1p1_to_p3(&u, &t);
            $u = self::ge_p1p1_to_p3($t);
            # ge_p3_to_cached(&Ai[i], &u);
            $Ai[$i] = self::ge_p3_to_cached($u);
        }

        $r = self::ge_p3_0();
        for ($i = 252; $i >= 0; --$i) {
            $t = self::ge_p3_dbl($r);
            if ($aslide[$i] > 0) {
                # ge_p1p1_to_p3(&u, &t);
                $u = self::ge_p1p1_to_p3($t);
                # ge_add(&t, &u, &Ai[aslide[i] / 2]);
                $t = self::ge_add($u, $Ai[(int)($aslide[$i] / 2)]);
            } elseif ($aslide[$i] < 0) {
                # ge_p1p1_to_p3(&u, &t);
                $u = self::ge_p1p1_to_p3($t);
                # ge_sub(&t, &u, &Ai[(-aslide[i]) / 2]);
                $t = self::ge_sub($u, $Ai[(int)(-$aslide[$i] / 2)]);
            }
        }

        # ge_p1p1_to_p3(r, &t);
        return self::ge_p1p1_to_p3($t);
    }

    /**
     * @param string $a
     * @param string $b
     * @return string
     */
    public static function sc25519_mul($a, $b)
    {
        //    int64_t a0  = 2097151 & load_3(a);
        //    int64_t a1  = 2097151 & (load_4(a + 2) >> 5);
        //    int64_t a2  = 2097151 & (load_3(a + 5) >> 2);
        //    int64_t a3  = 2097151 & (load_4(a + 7) >> 7);
        //    int64_t a4  = 2097151 & (load_4(a + 10) >> 4);
        //    int64_t a5  = 2097151 & (load_3(a + 13) >> 1);
        //    int64_t a6  = 2097151 & (load_4(a + 15) >> 6);
        //    int64_t a7  = 2097151 & (load_3(a + 18) >> 3);
        //    int64_t a8  = 2097151 & load_3(a + 21);
        //    int64_t a9  = 2097151 & (load_4(a + 23) >> 5);
        //    int64_t a10 = 2097151 & (load_3(a + 26) >> 2);
        //    int64_t a11 = (load_4(a + 28) >> 7);
        $a0  = 2097151 &  self::load_3(self::substr($a, 0, 3));
        $a1  = 2097151 & (self::load_4(self::substr($a, 2, 4)) >> 5);
        $a2  = 2097151 & (self::load_3(self::substr($a, 5, 3)) >> 2);
        $a3  = 2097151 & (self::load_4(self::substr($a, 7, 4)) >> 7);
        $a4  = 2097151 & (self::load_4(self::substr($a, 10, 4)) >> 4);
        $a5  = 2097151 & (self::load_3(self::substr($a, 13, 3)) >> 1);
        $a6  = 2097151 & (self::load_4(self::substr($a, 15, 4)) >> 6);
        $a7  = 2097151 & (self::load_3(self::substr($a, 18, 3)) >> 3);
        $a8  = 2097151 &  self::load_3(self::substr($a, 21, 3));
        $a9  = 2097151 & (self::load_4(self::substr($a, 23, 4)) >> 5);
        $a10 = 2097151 & (self::load_3(self::substr($a, 26, 3)) >> 2);
        $a11 = (self::load_4(self::substr($a, 28, 4)) >> 7);

        //    int64_t b0  = 2097151 & load_3(b);
        //    int64_t b1  = 2097151 & (load_4(b + 2) >> 5);
        //    int64_t b2  = 2097151 & (load_3(b + 5) >> 2);
        //    int64_t b3  = 2097151 & (load_4(b + 7) >> 7);
        //    int64_t b4  = 2097151 & (load_4(b + 10) >> 4);
        //    int64_t b5  = 2097151 & (load_3(b + 13) >> 1);
        //    int64_t b6  = 2097151 & (load_4(b + 15) >> 6);
        //    int64_t b7  = 2097151 & (load_3(b + 18) >> 3);
        //    int64_t b8  = 2097151 & load_3(b + 21);
        //    int64_t b9  = 2097151 & (load_4(b + 23) >> 5);
        //    int64_t b10 = 2097151 & (load_3(b + 26) >> 2);
        //    int64_t b11 = (load_4(b + 28) >> 7);
        $b0  = 2097151 &  self::load_3(self::substr($b, 0, 3));
        $b1  = 2097151 & (self::load_4(self::substr($b, 2, 4)) >> 5);
        $b2  = 2097151 & (self::load_3(self::substr($b, 5, 3)) >> 2);
        $b3  = 2097151 & (self::load_4(self::substr($b, 7, 4)) >> 7);
        $b4  = 2097151 & (self::load_4(self::substr($b, 10, 4)) >> 4);
        $b5  = 2097151 & (self::load_3(self::substr($b, 13, 3)) >> 1);
        $b6  = 2097151 & (self::load_4(self::substr($b, 15, 4)) >> 6);
        $b7  = 2097151 & (self::load_3(self::substr($b, 18, 3)) >> 3);
        $b8  = 2097151 &  self::load_3(self::substr($b, 21, 3));
        $b9  = 2097151 & (self::load_4(self::substr($b, 23, 4)) >> 5);
        $b10 = 2097151 & (self::load_3(self::substr($b, 26, 3)) >> 2);
        $b11 = (self::load_4(self::substr($b, 28, 4)) >> 7);

        //    s0 = a0 * b0;
        //    s1 = a0 * b1 + a1 * b0;
        //    s2 = a0 * b2 + a1 * b1 + a2 * b0;
        //    s3 = a0 * b3 + a1 * b2 + a2 * b1 + a3 * b0;
        //    s4 = a0 * b4 + a1 * b3 + a2 * b2 + a3 * b1 + a4 * b0;
        //    s5 = a0 * b5 + a1 * b4 + a2 * b3 + a3 * b2 + a4 * b1 + a5 * b0;
        //    s6 = a0 * b6 + a1 * b5 + a2 * b4 + a3 * b3 + a4 * b2 + a5 * b1 + a6 * b0;
        //    s7 = a0 * b7 + a1 * b6 + a2 * b5 + a3 * b4 + a4 * b3 + a5 * b2 +
        //        a6 * b1 + a7 * b0;
        //    s8 = a0 * b8 + a1 * b7 + a2 * b6 + a3 * b5 + a4 * b4 + a5 * b3 +
        //        a6 * b2 + a7 * b1 + a8 * b0;
        //    s9 = a0 * b9 + a1 * b8 + a2 * b7 + a3 * b6 + a4 * b5 + a5 * b4 +
        //        a6 * b3 + a7 * b2 + a8 * b1 + a9 * b0;
        //    s10 = a0 * b10 + a1 * b9 + a2 * b8 + a3 * b7 + a4 * b6 + a5 * b5 +
        //        a6 * b4 + a7 * b3 + a8 * b2 + a9 * b1 + a10 * b0;
        //    s11 = a0 * b11 + a1 * b10 + a2 * b9 + a3 * b8 + a4 * b7 + a5 * b6 +
        //        a6 * b5 + a7 * b4 + a8 * b3 + a9 * b2 + a10 * b1 + a11 * b0;
        //    s12 = a1 * b11 + a2 * b10 + a3 * b9 + a4 * b8 + a5 * b7 + a6 * b6 +
        //        a7 * b5 + a8 * b4 + a9 * b3 + a10 * b2 + a11 * b1;
        //    s13 = a2 * b11 + a3 * b10 + a4 * b9 + a5 * b8 + a6 * b7 + a7 * b6 +
        //        a8 * b5 + a9 * b4 + a10 * b3 + a11 * b2;
        //    s14 = a3 * b11 + a4 * b10 + a5 * b9 + a6 * b8 + a7 * b7 + a8 * b6 +
        //        a9 * b5 + a10 * b4 + a11 * b3;
        //    s15 = a4 * b11 + a5 * b10 + a6 * b9 + a7 * b8 + a8 * b7 + a9 * b6 +
        //        a10 * b5 + a11 * b4;
        //    s16 =
        //        a5 * b11 + a6 * b10 + a7 * b9 + a8 * b8 + a9 * b7 + a10 * b6 + a11 * b5;
        //    s17 = a6 * b11 + a7 * b10 + a8 * b9 + a9 * b8 + a10 * b7 + a11 * b6;
        //    s18 = a7 * b11 + a8 * b10 + a9 * b9 + a10 * b8 + a11 * b7;
        //    s19 = a8 * b11 + a9 * b10 + a10 * b9 + a11 * b8;
        //    s20 = a9 * b11 + a10 * b10 + a11 * b9;
        //    s21 = a10 * b11 + a11 * b10;
        //    s22 = a11 * b11;
        //    s23 = 0;
        $s0 = self::mul($a0, $b0, 22);
        $s1 = self::mul($a0, $b1, 22) + self::mul($a1, $b0, 22);
        $s2 = self::mul($a0, $b2, 22) + self::mul($a1, $b1, 22) + self::mul($a2, $b0, 22);
        $s3 = self::mul($a0, $b3, 22) + self::mul($a1, $b2, 22) + self::mul($a2, $b1, 22) + self::mul($a3, $b0, 22);
        $s4 = self::mul($a0, $b4, 22) + self::mul($a1, $b3, 22) + self::mul($a2, $b2, 22) + self::mul($a3, $b1, 22) +
            self::mul($a4, $b0, 22);
        $s5 = self::mul($a0, $b5, 22) + self::mul($a1, $b4, 22) + self::mul($a2, $b3, 22) + self::mul($a3, $b2, 22) +
            self::mul($a4, $b1, 22) + self::mul($a5, $b0, 22);
        $s6 = self::mul($a0, $b6, 22) + self::mul($a1, $b5, 22) + self::mul($a2, $b4, 22) + self::mul($a3, $b3, 22) +
            self::mul($a4, $b2, 22) + self::mul($a5, $b1, 22) + self::mul($a6, $b0, 22);
        $s7 = self::mul($a0, $b7, 22) + self::mul($a1, $b6, 22) + self::mul($a2, $b5, 22) + self::mul($a3, $b4, 22) +
            self::mul($a4, $b3, 22) + self::mul($a5, $b2, 22) + self::mul($a6, $b1, 22) + self::mul($a7, $b0, 22);
        $s8 = self::mul($a0, $b8, 22) + self::mul($a1, $b7, 22) + self::mul($a2, $b6, 22) + self::mul($a3, $b5, 22) +
            self::mul($a4, $b4, 22) + self::mul($a5, $b3, 22) + self::mul($a6, $b2, 22) + self::mul($a7, $b1, 22) +
            self::mul($a8, $b0, 22);
        $s9 = self::mul($a0, $b9, 22) + self::mul($a1, $b8, 22) + self::mul($a2, $b7, 22) + self::mul($a3, $b6, 22) +
            self::mul($a4, $b5, 22) + self::mul($a5, $b4, 22) + self::mul($a6, $b3, 22) + self::mul($a7, $b2, 22) +
            self::mul($a8, $b1, 22) + self::mul($a9, $b0, 22);
        $s10 = self::mul($a0, $b10, 22) + self::mul($a1, $b9, 22) + self::mul($a2, $b8, 22) + self::mul($a3, $b7, 22) +
            self::mul($a4, $b6, 22) + self::mul($a5, $b5, 22) + self::mul($a6, $b4, 22) + self::mul($a7, $b3, 22) +
            self::mul($a8, $b2, 22) + self::mul($a9, $b1, 22) + self::mul($a10, $b0, 22);
        $s11 = self::mul($a0, $b11, 22) + self::mul($a1, $b10, 22) + self::mul($a2, $b9, 22) + self::mul($a3, $b8, 22) +
            self::mul($a4, $b7, 22) + self::mul($a5, $b6, 22) + self::mul($a6, $b5, 22) + self::mul($a7, $b4, 22) +
            self::mul($a8, $b3, 22) + self::mul($a9, $b2, 22) + self::mul($a10, $b1, 22) + self::mul($a11, $b0, 22);
        $s12 = self::mul($a1, $b11, 22) + self::mul($a2, $b10, 22) + self::mul($a3, $b9, 22) + self::mul($a4, $b8, 22) +
            self::mul($a5, $b7, 22) + self::mul($a6, $b6, 22) + self::mul($a7, $b5, 22) + self::mul($a8, $b4, 22) +
            self::mul($a9, $b3, 22) + self::mul($a10, $b2, 22) + self::mul($a11, $b1, 22);
        $s13 = self::mul($a2, $b11, 22) + self::mul($a3, $b10, 22) + self::mul($a4, $b9, 22) + self::mul($a5, $b8, 22) +
            self::mul($a6, $b7, 22) + self::mul($a7, $b6, 22) + self::mul($a8, $b5, 22) + self::mul($a9, $b4, 22) +
            self::mul($a10, $b3, 22) + self::mul($a11, $b2, 22);
        $s14 = self::mul($a3, $b11, 22) + self::mul($a4, $b10, 22) + self::mul($a5, $b9, 22) + self::mul($a6, $b8, 22) +
            self::mul($a7, $b7, 22) + self::mul($a8, $b6, 22) + self::mul($a9, $b5, 22) + self::mul($a10, $b4, 22) +
            self::mul($a11, $b3, 22);
        $s15 = self::mul($a4, $b11, 22) + self::mul($a5, $b10, 22) + self::mul($a6, $b9, 22) + self::mul($a7, $b8, 22) +
            self::mul($a8, $b7, 22) + self::mul($a9, $b6, 22) + self::mul($a10, $b5, 22) + self::mul($a11, $b4, 22);
        $s16 =
            self::mul($a5, $b11, 22) + self::mul($a6, $b10, 22) + self::mul($a7, $b9, 22) + self::mul($a8, $b8, 22) +
            self::mul($a9, $b7, 22) + self::mul($a10, $b6, 22) + self::mul($a11, $b5, 22);
        $s17 = self::mul($a6, $b11, 22) + self::mul($a7, $b10, 22) + self::mul($a8, $b9, 22) + self::mul($a9, $b8, 22) +
            self::mul($a10, $b7, 22) + self::mul($a11, $b6, 22);
        $s18 = self::mul($a7, $b11, 22) + self::mul($a8, $b10, 22) + self::mul($a9, $b9, 22) + self::mul($a10, $b8, 22)
            + self::mul($a11, $b7, 22);
        $s19 = self::mul($a8, $b11, 22) + self::mul($a9, $b10, 22) + self::mul($a10, $b9, 22) +
            self::mul($a11, $b8, 22);
        $s20 = self::mul($a9, $b11, 22) + self::mul($a10, $b10, 22) + self::mul($a11, $b9, 22);
        $s21 = self::mul($a10, $b11, 22) + self::mul($a11, $b10, 22);
        $s22 = self::mul($a11, $b11, 22);
        $s23 = 0;

        //    carry0 = (s0 + (int64_t) (1L << 20)) >> 21;
        //    s1 += carry0;
        //    s0 -= carry0 * ((uint64_t) 1L << 21);
        $carry0 = ($s0 + (1 << 20)) >> 21;
        $s1 += $carry0;
        $s0 -= $carry0 << 21;
        //    carry2 = (s2 + (int64_t) (1L << 20)) >> 21;
        //    s3 += carry2;
        //    s2 -= carry2 * ((uint64_t) 1L << 21);
        $carry2 = ($s2 + (1 << 20)) >> 21;
        $s3 += $carry2;
        $s2 -= $carry2 << 21;
        //    carry4 = (s4 + (int64_t) (1L << 20)) >> 21;
        //    s5 += carry4;
        //    s4 -= carry4 * ((uint64_t) 1L << 21);
        $carry4 = ($s4 + (1 << 20)) >> 21;
        $s5 += $carry4;
        $s4 -= $carry4 << 21;
        //    carry6 = (s6 + (int64_t) (1L << 20)) >> 21;
        //    s7 += carry6;
        //    s6 -= carry6 * ((uint64_t) 1L << 21);
        $carry6 = ($s6 + (1 << 20)) >> 21;
        $s7 += $carry6;
        $s6 -= $carry6 << 21;
        //    carry8 = (s8 + (int64_t) (1L << 20)) >> 21;
        //    s9 += carry8;
        //    s8 -= carry8 * ((uint64_t) 1L << 21);
        $carry8 = ($s8 + (1 << 20)) >> 21;
        $s9 += $carry8;
        $s8 -= $carry8 << 21;
        //    carry10 = (s10 + (int64_t) (1L << 20)) >> 21;
        //    s11 += carry10;
        //    s10 -= carry10 * ((uint64_t) 1L << 21);
        $carry10 = ($s10 + (1 << 20)) >> 21;
        $s11 += $carry10;
        $s10 -= $carry10 << 21;
        //    carry12 = (s12 + (int64_t) (1L << 20)) >> 21;
        //    s13 += carry12;
        //    s12 -= carry12 * ((uint64_t) 1L << 21);
        $carry12 = ($s12 + (1 << 20)) >> 21;
        $s13 += $carry12;
        $s12 -= $carry12 << 21;
        //    carry14 = (s14 + (int64_t) (1L << 20)) >> 21;
        //    s15 += carry14;
        //    s14 -= carry14 * ((uint64_t) 1L << 21);
        $carry14 = ($s14 + (1 << 20)) >> 21;
        $s15 += $carry14;
        $s14 -= $carry14 << 21;
        //    carry16 = (s16 + (int64_t) (1L << 20)) >> 21;
        //    s17 += carry16;
        //    s16 -= carry16 * ((uint64_t) 1L << 21);
        $carry16 = ($s16 + (1 << 20)) >> 21;
        $s17 += $carry16;
        $s16 -= $carry16 << 21;
        //    carry18 = (s18 + (int64_t) (1L << 20)) >> 21;
        //    s19 += carry18;
        //    s18 -= carry18 * ((uint64_t) 1L << 21);
        $carry18 = ($s18 + (1 << 20)) >> 21;
        $s19 += $carry18;
        $s18 -= $carry18 << 21;
        //    carry20 = (s20 + (int64_t) (1L << 20)) >> 21;
        //    s21 += carry20;
        //    s20 -= carry20 * ((uint64_t) 1L << 21);
        $carry20 = ($s20 + (1 << 20)) >> 21;
        $s21 += $carry20;
        $s20 -= $carry20 << 21;
        //    carry22 = (s22 + (int64_t) (1L << 20)) >> 21;
        //    s23 += carry22;
        //    s22 -= carry22 * ((uint64_t) 1L << 21);
        $carry22 = ($s22 + (1 << 20)) >> 21;
        $s23 += $carry22;
        $s22 -= $carry22 << 21;

        //    carry1 = (s1 + (int64_t) (1L << 20)) >> 21;
        //    s2 += carry1;
        //    s1 -= carry1 * ((uint64_t) 1L << 21);
        $carry1 = ($s1 + (1 << 20)) >> 21;
        $s2 += $carry1;
        $s1 -= $carry1 << 21;
        //    carry3 = (s3 + (int64_t) (1L << 20)) >> 21;
        //    s4 += carry3;
        //    s3 -= carry3 * ((uint64_t) 1L << 21);
        $carry3 = ($s3 + (1 << 20)) >> 21;
        $s4 += $carry3;
        $s3 -= $carry3 << 21;
        //    carry5 = (s5 + (int64_t) (1L << 20)) >> 21;
        //    s6 += carry5;
        //    s5 -= carry5 * ((uint64_t) 1L << 21);
        $carry5 = ($s5 + (1 << 20)) >> 21;
        $s6 += $carry5;
        $s5 -= $carry5 << 21;
        //    carry7 = (s7 + (int64_t) (1L << 20)) >> 21;
        //    s8 += carry7;
        //    s7 -= carry7 * ((uint64_t) 1L << 21);
        $carry7 = ($s7 + (1 << 20)) >> 21;
        $s8 += $carry7;
        $s7 -= $carry7 << 21;
        //    carry9 = (s9 + (int64_t) (1L << 20)) >> 21;
        //    s10 += carry9;
        //    s9 -= carry9 * ((uint64_t) 1L << 21);
        $carry9 = ($s9 + (1 << 20)) >> 21;
        $s10 += $carry9;
        $s9 -= $carry9 << 21;
        //    carry11 = (s11 + (int64_t) (1L << 20)) >> 21;
        //    s12 += carry11;
        //    s11 -= carry11 * ((uint64_t) 1L << 21);
        $carry11 = ($s11 + (1 << 20)) >> 21;
        $s12 += $carry11;
        $s11 -= $carry11 << 21;
        //    carry13 = (s13 + (int64_t) (1L << 20)) >> 21;
        //    s14 += carry13;
        //    s13 -= carry13 * ((uint64_t) 1L << 21);
        $carry13 = ($s13 + (1 << 20)) >> 21;
        $s14 += $carry13;
        $s13 -= $carry13 << 21;
        //    carry15 = (s15 + (int64_t) (1L << 20)) >> 21;
        //    s16 += carry15;
        //    s15 -= carry15 * ((uint64_t) 1L << 21);
        $carry15 = ($s15 + (1 << 20)) >> 21;
        $s16 += $carry15;
        $s15 -= $carry15 << 21;
        //    carry17 = (s17 + (int64_t) (1L << 20)) >> 21;
        //    s18 += carry17;
        //    s17 -= carry17 * ((uint64_t) 1L << 21);
        $carry17 = ($s17 + (1 << 20)) >> 21;
        $s18 += $carry17;
        $s17 -= $carry17 << 21;
        //    carry19 = (s19 + (int64_t) (1L << 20)) >> 21;
        //    s20 += carry19;
        //    s19 -= carry19 * ((uint64_t) 1L << 21);
        $carry19 = ($s19 + (1 << 20)) >> 21;
        $s20 += $carry19;
        $s19 -= $carry19 << 21;
        //    carry21 = (s21 + (int64_t) (1L << 20)) >> 21;
        //    s22 += carry21;
        //    s21 -= carry21 * ((uint64_t) 1L << 21);
        $carry21 = ($s21 + (1 << 20)) >> 21;
        $s22 += $carry21;
        $s21 -= $carry21 << 21;

        //    s11 += s23 * 666643;
        //    s12 += s23 * 470296;
        //    s13 += s23 * 654183;
        //    s14 -= s23 * 997805;
        //    s15 += s23 * 136657;
        //    s16 -= s23 * 683901;
        $s11 += self::mul($s23, 666643, 20);
        $s12 += self::mul($s23, 470296, 19);
        $s13 += self::mul($s23, 654183, 20);
        $s14 -= self::mul($s23, 997805, 20);
        $s15 += self::mul($s23, 136657, 18);
        $s16 -= self::mul($s23, 683901, 20);

        //    s10 += s22 * 666643;
        //    s11 += s22 * 470296;
        //    s12 += s22 * 654183;
        //    s13 -= s22 * 997805;
        //    s14 += s22 * 136657;
        //    s15 -= s22 * 683901;
        $s10 += self::mul($s22, 666643, 20);
        $s11 += self::mul($s22, 470296, 19);
        $s12 += self::mul($s22, 654183, 20);
        $s13 -= self::mul($s22, 997805, 20);
        $s14 += self::mul($s22, 136657, 18);
        $s15 -= self::mul($s22, 683901, 20);

        //    s9 += s21 * 666643;
        //    s10 += s21 * 470296;
        //    s11 += s21 * 654183;
        //    s12 -= s21 * 997805;
        //    s13 += s21 * 136657;
        //    s14 -= s21 * 683901;
        $s9 += self::mul($s21, 666643, 20);
        $s10 += self::mul($s21, 470296, 19);
        $s11 += self::mul($s21, 654183, 20);
        $s12 -= self::mul($s21, 997805, 20);
        $s13 += self::mul($s21, 136657, 18);
        $s14 -= self::mul($s21, 683901, 20);

        //    s8 += s20 * 666643;
        //    s9 += s20 * 470296;
        //    s10 += s20 * 654183;
        //    s11 -= s20 * 997805;
        //    s12 += s20 * 136657;
        //    s13 -= s20 * 683901;
        $s8 += self::mul($s20, 666643, 20);
        $s9 += self::mul($s20, 470296, 19);
        $s10 += self::mul($s20, 654183, 20);
        $s11 -= self::mul($s20, 997805, 20);
        $s12 += self::mul($s20, 136657, 18);
        $s13 -= self::mul($s20, 683901, 20);

        //    s7 += s19 * 666643;
        //    s8 += s19 * 470296;
        //    s9 += s19 * 654183;
        //    s10 -= s19 * 997805;
        //    s11 += s19 * 136657;
        //    s12 -= s19 * 683901;
        $s7 += self::mul($s19, 666643, 20);
        $s8 += self::mul($s19, 470296, 19);
        $s9 += self::mul($s19, 654183, 20);
        $s10 -= self::mul($s19, 997805, 20);
        $s11 += self::mul($s19, 136657, 18);
        $s12 -= self::mul($s19, 683901, 20);

        //    s6 += s18 * 666643;
        //    s7 += s18 * 470296;
        //    s8 += s18 * 654183;
        //    s9 -= s18 * 997805;
        //    s10 += s18 * 136657;
        //    s11 -= s18 * 683901;
        $s6 += self::mul($s18, 666643, 20);
        $s7 += self::mul($s18, 470296, 19);
        $s8 += self::mul($s18, 654183, 20);
        $s9 -= self::mul($s18, 997805, 20);
        $s10 += self::mul($s18, 136657, 18);
        $s11 -= self::mul($s18, 683901, 20);

        //    carry6 = (s6 + (int64_t) (1L << 20)) >> 21;
        //    s7 += carry6;
        //    s6 -= carry6 * ((uint64_t) 1L << 21);
        $carry6 = ($s6 + (1 << 20)) >> 21;
        $s7 += $carry6;
        $s6 -= $carry6 << 21;
        //    carry8 = (s8 + (int64_t) (1L << 20)) >> 21;
        //    s9 += carry8;
        //    s8 -= carry8 * ((uint64_t) 1L << 21);
        $carry8 = ($s8 + (1 << 20)) >> 21;
        $s9 += $carry8;
        $s8 -= $carry8 << 21;
        //    carry10 = (s10 + (int64_t) (1L << 20)) >> 21;
        //    s11 += carry10;
        //    s10 -= carry10 * ((uint64_t) 1L << 21);
        $carry10 = ($s10 + (1 << 20)) >> 21;
        $s11 += $carry10;
        $s10 -= $carry10 << 21;
        //    carry12 = (s12 + (int64_t) (1L << 20)) >> 21;
        //    s13 += carry12;
        //    s12 -= carry12 * ((uint64_t) 1L << 21);
        $carry12 = ($s12 + (1 << 20)) >> 21;
        $s13 += $carry12;
        $s12 -= $carry12 << 21;
        //    carry14 = (s14 + (int64_t) (1L << 20)) >> 21;
        //    s15 += carry14;
        //    s14 -= carry14 * ((uint64_t) 1L << 21);
        $carry14 = ($s14 + (1 << 20)) >> 21;
        $s15 += $carry14;
        $s14 -= $carry14 << 21;
        //    carry16 = (s16 + (int64_t) (1L << 20)) >> 21;
        //    s17 += carry16;
        //    s16 -= carry16 * ((uint64_t) 1L << 21);
        $carry16 = ($s16 + (1 << 20)) >> 21;
        $s17 += $carry16;
        $s16 -= $carry16 << 21;

        //    carry7 = (s7 + (int64_t) (1L << 20)) >> 21;
        //    s8 += carry7;
        //    s7 -= carry7 * ((uint64_t) 1L << 21);
        $carry7 = ($s7 + (1 << 20)) >> 21;
        $s8 += $carry7;
        $s7 -= $carry7 << 21;
        //    carry9 = (s9 + (int64_t) (1L << 20)) >> 21;
        //    s10 += carry9;
        //    s9 -= carry9 * ((uint64_t) 1L << 21);
        $carry9 = ($s9 + (1 << 20)) >> 21;
        $s10 += $carry9;
        $s9 -= $carry9 << 21;
        //    carry11 = (s11 + (int64_t) (1L << 20)) >> 21;
        //    s12 += carry11;
        //    s11 -= carry11 * ((uint64_t) 1L << 21);
        $carry11 = ($s11 + (1 << 20)) >> 21;
        $s12 += $carry11;
        $s11 -= $carry11 << 21;
        //    carry13 = (s13 + (int64_t) (1L << 20)) >> 21;
        //    s14 += carry13;
        //    s13 -= carry13 * ((uint64_t) 1L << 21);
        $carry13 = ($s13 + (1 << 20)) >> 21;
        $s14 += $carry13;
        $s13 -= $carry13 << 21;
        //    carry15 = (s15 + (int64_t) (1L << 20)) >> 21;
        //    s16 += carry15;
        //    s15 -= carry15 * ((uint64_t) 1L << 21);
        $carry15 = ($s15 + (1 << 20)) >> 21;
        $s16 += $carry15;
        $s15 -= $carry15 << 21;

        //    s5 += s17 * 666643;
        //    s6 += s17 * 470296;
        //    s7 += s17 * 654183;
        //    s8 -= s17 * 997805;
        //    s9 += s17 * 136657;
        //    s10 -= s17 * 683901;
        $s5 += self::mul($s17, 666643, 20);
        $s6 += self::mul($s17, 470296, 19);
        $s7 += self::mul($s17, 654183, 20);
        $s8 -= self::mul($s17, 997805, 20);
        $s9 += self::mul($s17, 136657, 18);
        $s10 -= self::mul($s17, 683901, 20);

        //    s4 += s16 * 666643;
        //    s5 += s16 * 470296;
        //    s6 += s16 * 654183;
        //    s7 -= s16 * 997805;
        //    s8 += s16 * 136657;
        //    s9 -= s16 * 683901;
        $s4 += self::mul($s16, 666643, 20);
        $s5 += self::mul($s16, 470296, 19);
        $s6 += self::mul($s16, 654183, 20);
        $s7 -= self::mul($s16, 997805, 20);
        $s8 += self::mul($s16, 136657, 18);
        $s9 -= self::mul($s16, 683901, 20);

        //    s3 += s15 * 666643;
        //    s4 += s15 * 470296;
        //    s5 += s15 * 654183;
        //    s6 -= s15 * 997805;
        //    s7 += s15 * 136657;
        //    s8 -= s15 * 683901;
        $s3 += self::mul($s15, 666643, 20);
        $s4 += self::mul($s15, 470296, 19);
        $s5 += self::mul($s15, 654183, 20);
        $s6 -= self::mul($s15, 997805, 20);
        $s7 += self::mul($s15, 136657, 18);
        $s8 -= self::mul($s15, 683901, 20);

        //    s2 += s14 * 666643;
        //    s3 += s14 * 470296;
        //    s4 += s14 * 654183;
        //    s5 -= s14 * 997805;
        //    s6 += s14 * 136657;
        //    s7 -= s14 * 683901;
        $s2 += self::mul($s14, 666643, 20);
        $s3 += self::mul($s14, 470296, 19);
        $s4 += self::mul($s14, 654183, 20);
        $s5 -= self::mul($s14, 997805, 20);
        $s6 += self::mul($s14, 136657, 18);
        $s7 -= self::mul($s14, 683901, 20);

        //    s1 += s13 * 666643;
        //    s2 += s13 * 470296;
        //    s3 += s13 * 654183;
        //    s4 -= s13 * 997805;
        //    s5 += s13 * 136657;
        //    s6 -= s13 * 683901;
        $s1 += self::mul($s13, 666643, 20);
        $s2 += self::mul($s13, 470296, 19);
        $s3 += self::mul($s13, 654183, 20);
        $s4 -= self::mul($s13, 997805, 20);
        $s5 += self::mul($s13, 136657, 18);
        $s6 -= self::mul($s13, 683901, 20);

        //    s0 += s12 * 666643;
        //    s1 += s12 * 470296;
        //    s2 += s12 * 654183;
        //    s3 -= s12 * 997805;
        //    s4 += s12 * 136657;
        //    s5 -= s12 * 683901;
        //    s12 = 0;
        $s0 += self::mul($s12, 666643, 20);
        $s1 += self::mul($s12, 470296, 19);
        $s2 += self::mul($s12, 654183, 20);
        $s3 -= self::mul($s12, 997805, 20);
        $s4 += self::mul($s12, 136657, 18);
        $s5 -= self::mul($s12, 683901, 20);
        $s12 = 0;

        //    carry0 = (s0 + (int64_t) (1L << 20)) >> 21;
        //    s1 += carry0;
        //    s0 -= carry0 * ((uint64_t) 1L << 21);
        $carry0 = ($s0 + (1 << 20)) >> 21;
        $s1 += $carry0;
        $s0 -= $carry0 << 21;
        //    carry2 = (s2 + (int64_t) (1L << 20)) >> 21;
        //    s3 += carry2;
        //    s2 -= carry2 * ((uint64_t) 1L << 21);
        $carry2 = ($s2 + (1 << 20)) >> 21;
        $s3 += $carry2;
        $s2 -= $carry2 << 21;
        //    carry4 = (s4 + (int64_t) (1L << 20)) >> 21;
        //    s5 += carry4;
        //    s4 -= carry4 * ((uint64_t) 1L << 21);
        $carry4 = ($s4 + (1 << 20)) >> 21;
        $s5 += $carry4;
        $s4 -= $carry4 << 21;
        //    carry6 = (s6 + (int64_t) (1L << 20)) >> 21;
        //    s7 += carry6;
        //    s6 -= carry6 * ((uint64_t) 1L << 21);
        $carry6 = ($s6 + (1 << 20)) >> 21;
        $s7 += $carry6;
        $s6 -= $carry6 << 21;
        //    carry8 = (s8 + (int64_t) (1L << 20)) >> 21;
        //    s9 += carry8;
        //    s8 -= carry8 * ((uint64_t) 1L << 21);
        $carry8 = ($s8 + (1 << 20)) >> 21;
        $s9 += $carry8;
        $s8 -= $carry8 << 21;
        //    carry10 = (s10 + (int64_t) (1L << 20)) >> 21;
        //    s11 += carry10;
        //    s10 -= carry10 * ((uint64_t) 1L << 21);
        $carry10 = ($s10 + (1 << 20)) >> 21;
        $s11 += $carry10;
        $s10 -= $carry10 << 21;

        //    carry1 = (s1 + (int64_t) (1L << 20)) >> 21;
        //    s2 += carry1;
        //    s1 -= carry1 * ((uint64_t) 1L << 21);
        $carry1 = ($s1 + (1 << 20)) >> 21;
        $s2 += $carry1;
        $s1 -= $carry1 << 21;
        //    carry3 = (s3 + (int64_t) (1L << 20)) >> 21;
        //    s4 += carry3;
        //    s3 -= carry3 * ((uint64_t) 1L << 21);
        $carry3 = ($s3 + (1 << 20)) >> 21;
        $s4 += $carry3;
        $s3 -= $carry3 << 21;
        //    carry5 = (s5 + (int64_t) (1L << 20)) >> 21;
        //    s6 += carry5;
        //    s5 -= carry5 * ((uint64_t) 1L << 21);
        $carry5 = ($s5 + (1 << 20)) >> 21;
        $s6 += $carry5;
        $s5 -= $carry5 << 21;
        //    carry7 = (s7 + (int64_t) (1L << 20)) >> 21;
        //    s8 += carry7;
        //    s7 -= carry7 * ((uint64_t) 1L << 21);
        $carry7 = ($s7 + (1 << 20)) >> 21;
        $s8 += $carry7;
        $s7 -= $carry7 << 21;
        //    carry9 = (s9 + (int64_t) (1L << 20)) >> 21;
        //    s10 += carry9;
        //    s9 -= carry9 * ((uint64_t) 1L << 21);
        $carry9 = ($s9 + (1 << 20)) >> 21;
        $s10 += $carry9;
        $s9 -= $carry9 << 21;
        //    carry11 = (s11 + (int64_t) (1L << 20)) >> 21;
        //    s12 += carry11;
        //    s11 -= carry11 * ((uint64_t) 1L << 21);
        $carry11 = ($s11 + (1 << 20)) >> 21;
        $s12 += $carry11;
        $s11 -= $carry11 << 21;

        //    s0 += s12 * 666643;
        //    s1 += s12 * 470296;
        //    s2 += s12 * 654183;
        //    s3 -= s12 * 997805;
        //    s4 += s12 * 136657;
        //    s5 -= s12 * 683901;
        //    s12 = 0;
        $s0 += self::mul($s12, 666643, 20);
        $s1 += self::mul($s12, 470296, 19);
        $s2 += self::mul($s12, 654183, 20);
        $s3 -= self::mul($s12, 997805, 20);
        $s4 += self::mul($s12, 136657, 18);
        $s5 -= self::mul($s12, 683901, 20);
        $s12 = 0;

        //    carry0 = s0 >> 21;
        //    s1 += carry0;
        //    s0 -= carry0 * ((uint64_t) 1L << 21);
        $carry0 = $s0 >> 21;
        $s1 += $carry0;
        $s0 -= $carry0 << 21;
        //    carry1 = s1 >> 21;
        //    s2 += carry1;
        //    s1 -= carry1 * ((uint64_t) 1L << 21);
        $carry1 = $s1 >> 21;
        $s2 += $carry1;
        $s1 -= $carry1 << 21;
        //    carry2 = s2 >> 21;
        //    s3 += carry2;
        //    s2 -= carry2 * ((uint64_t) 1L << 21);
        $carry2 = $s2 >> 21;
        $s3 += $carry2;
        $s2 -= $carry2 << 21;
        //    carry3 = s3 >> 21;
        //    s4 += carry3;
        //    s3 -= carry3 * ((uint64_t) 1L << 21);
        $carry3 = $s3 >> 21;
        $s4 += $carry3;
        $s3 -= $carry3 << 21;
        //    carry4 = s4 >> 21;
        //    s5 += carry4;
        //    s4 -= carry4 * ((uint64_t) 1L << 21);
        $carry4 = $s4 >> 21;
        $s5 += $carry4;
        $s4 -= $carry4 << 21;
        //    carry5 = s5 >> 21;
        //    s6 += carry5;
        //    s5 -= carry5 * ((uint64_t) 1L << 21);
        $carry5 = $s5 >> 21;
        $s6 += $carry5;
        $s5 -= $carry5 << 21;
        //    carry6 = s6 >> 21;
        //    s7 += carry6;
        //    s6 -= carry6 * ((uint64_t) 1L << 21);
        $carry6 = $s6 >> 21;
        $s7 += $carry6;
        $s6 -= $carry6 << 21;
        //    carry7 = s7 >> 21;
        //    s8 += carry7;
        //    s7 -= carry7 * ((uint64_t) 1L << 21);
        $carry7 = $s7 >> 21;
        $s8 += $carry7;
        $s7 -= $carry7 << 21;
        //    carry8 = s8 >> 21;
        //    s9 += carry8;
        //    s8 -= carry8 * ((uint64_t) 1L << 21);
        $carry8 = $s8 >> 21;
        $s9 += $carry8;
        $s8 -= $carry8 << 21;
        //    carry9 = s9 >> 21;
        //    s10 += carry9;
        //    s9 -= carry9 * ((uint64_t) 1L << 21);
        $carry9 = $s9 >> 21;
        $s10 += $carry9;
        $s9 -= $carry9 << 21;
        //    carry10 = s10 >> 21;
        //    s11 += carry10;
        //    s10 -= carry10 * ((uint64_t) 1L << 21);
        $carry10 = $s10 >> 21;
        $s11 += $carry10;
        $s10 -= $carry10 << 21;
        //    carry11 = s11 >> 21;
        //    s12 += carry11;
        //    s11 -= carry11 * ((uint64_t) 1L << 21);
        $carry11 = $s11 >> 21;
        $s12 += $carry11;
        $s11 -= $carry11 << 21;

        //    s0 += s12 * 666643;
        //    s1 += s12 * 470296;
        //    s2 += s12 * 654183;
        //    s3 -= s12 * 997805;
        //    s4 += s12 * 136657;
        //    s5 -= s12 * 683901;
        $s0 += self::mul($s12, 666643, 20);
        $s1 += self::mul($s12, 470296, 19);
        $s2 += self::mul($s12, 654183, 20);
        $s3 -= self::mul($s12, 997805, 20);
        $s4 += self::mul($s12, 136657, 18);
        $s5 -= self::mul($s12, 683901, 20);

        //    carry0 = s0 >> 21;
        //    s1 += carry0;
        //    s0 -= carry0 * ((uint64_t) 1L << 21);
        $carry0 = $s0 >> 21;
        $s1 += $carry0;
        $s0 -= $carry0 << 21;
        //    carry1 = s1 >> 21;
        //    s2 += carry1;
        //    s1 -= carry1 * ((uint64_t) 1L << 21);
        $carry1 = $s1 >> 21;
        $s2 += $carry1;
        $s1 -= $carry1 << 21;
        //    carry2 = s2 >> 21;
        //    s3 += carry2;
        //    s2 -= carry2 * ((uint64_t) 1L << 21);
        $carry2 = $s2 >> 21;
        $s3 += $carry2;
        $s2 -= $carry2 << 21;
        //    carry3 = s3 >> 21;
        //    s4 += carry3;
        //    s3 -= carry3 * ((uint64_t) 1L << 21);
        $carry3 = $s3 >> 21;
        $s4 += $carry3;
        $s3 -= $carry3 << 21;
        //    carry4 = s4 >> 21;
        //    s5 += carry4;
        //    s4 -= carry4 * ((uint64_t) 1L << 21);
        $carry4 = $s4 >> 21;
        $s5 += $carry4;
        $s4 -= $carry4 << 21;
        //    carry5 = s5 >> 21;
        //    s6 += carry5;
        //    s5 -= carry5 * ((uint64_t) 1L << 21);
        $carry5 = $s5 >> 21;
        $s6 += $carry5;
        $s5 -= $carry5 << 21;
        //    carry6 = s6 >> 21;
        //    s7 += carry6;
        //    s6 -= carry6 * ((uint64_t) 1L << 21);
        $carry6 = $s6 >> 21;
        $s7 += $carry6;
        $s6 -= $carry6 << 21;
        //    carry7 = s7 >> 21;
        //    s8 += carry7;
        //    s7 -= carry7 * ((uint64_t) 1L << 21);
        $carry7 = $s7 >> 21;
        $s8 += $carry7;
        $s7 -= $carry7 << 21;
        //    carry8 = s8 >> 21;
        //    s9 += carry8;
        //    s8 -= carry8 * ((uint64_t) 1L << 21);
        $carry8 = $s8 >> 21;
        $s9 += $carry8;
        $s8 -= $carry8 << 21;
        //    carry9 = s9 >> 21;
        //    s10 += carry9;
        //    s9 -= carry9 * ((uint64_t) 1L << 21);
        $carry9 = $s9 >> 21;
        $s10 += $carry9;
        $s9 -= $carry9 << 21;
        //    carry10 = s10 >> 21;
        //    s11 += carry10;
        //    s10 -= carry10 * ((uint64_t) 1L << 21);
        $carry10 = $s10 >> 21;
        $s11 += $carry10;
        $s10 -= $carry10 << 21;

        $s = array_fill(0, 32, 0);
        // s[0]  = s0 >> 0;
        $s[0]  = $s0 >> 0;
        // s[1]  = s0 >> 8;
        $s[1]  = $s0 >> 8;
        // s[2]  = (s0 >> 16) | (s1 * ((uint64_t) 1 << 5));
        $s[2]  = ($s0 >> 16) | ($s1 << 5);
        // s[3]  = s1 >> 3;
        $s[3]  = $s1 >> 3;
        // s[4]  = s1 >> 11;
        $s[4]  = $s1 >> 11;
        // s[5]  = (s1 >> 19) | (s2 * ((uint64_t) 1 << 2));
        $s[5]  = ($s1 >> 19) | ($s2 << 2);
        // s[6]  = s2 >> 6;
        $s[6]  = $s2 >> 6;
        // s[7]  = (s2 >> 14) | (s3 * ((uint64_t) 1 << 7));
        $s[7]  = ($s2 >> 14) | ($s3 << 7);
        // s[8]  = s3 >> 1;
        $s[8]  = $s3 >> 1;
        // s[9]  = s3 >> 9;
        $s[9]  = $s3 >> 9;
        // s[10] = (s3 >> 17) | (s4 * ((uint64_t) 1 << 4));
        $s[10] = ($s3 >> 17) | ($s4 << 4);
        // s[11] = s4 >> 4;
        $s[11] = $s4 >> 4;
        // s[12] = s4 >> 12;
        $s[12] = $s4 >> 12;
        // s[13] = (s4 >> 20) | (s5 * ((uint64_t) 1 << 1));
        $s[13] = ($s4 >> 20) | ($s5 << 1);
        // s[14] = s5 >> 7;
        $s[14] = $s5 >> 7;
        // s[15] = (s5 >> 15) | (s6 * ((uint64_t) 1 << 6));
        $s[15] = ($s5 >> 15) | ($s6 << 6);
        // s[16] = s6 >> 2;
        $s[16] = $s6 >> 2;
        // s[17] = s6 >> 10;
        $s[17] = $s6 >> 10;
        // s[18] = (s6 >> 18) | (s7 * ((uint64_t) 1 << 3));
        $s[18] = ($s6 >> 18) | ($s7 << 3);
        // s[19] = s7 >> 5;
        $s[19] = $s7 >> 5;
        // s[20] = s7 >> 13;
        $s[20] = $s7 >> 13;
        // s[21] = s8 >> 0;
        $s[21] = $s8 >> 0;
        // s[22] = s8 >> 8;
        $s[22] = $s8 >> 8;
        // s[23] = (s8 >> 16) | (s9 * ((uint64_t) 1 << 5));
        $s[23] = ($s8 >> 16) | ($s9 << 5);
        // s[24] = s9 >> 3;
        $s[24] = $s9 >> 3;
        // s[25] = s9 >> 11;
        $s[25] = $s9 >> 11;
        // s[26] = (s9 >> 19) | (s10 * ((uint64_t) 1 << 2));
        $s[26] = ($s9 >> 19) | ($s10 << 2);
        // s[27] = s10 >> 6;
        $s[27] = $s10 >> 6;
        // s[28] = (s10 >> 14) | (s11 * ((uint64_t) 1 << 7));
        $s[28] = ($s10 >> 14) | ($s11 << 7);
        // s[29] = s11 >> 1;
        $s[29] = $s11 >> 1;
        // s[30] = s11 >> 9;
        $s[30] = $s11 >> 9;
        // s[31] = s11 >> 17;
        $s[31] = $s11 >> 17;
        return self::intArrayToString($s);
    }

    /**
     * @param string $s
     * @return string
     */
    public static function sc25519_sq($s)
    {
        return self::sc25519_mul($s, $s);
    }

    /**
     * @param string $s
     * @param int $n
     * @param string $a
     * @return string
     */
    public static function sc25519_sqmul($s, $n, $a)
    {
        for ($i = 0; $i < $n; ++$i) {
            $s = self::sc25519_sq($s);
        }
        return self::sc25519_mul($s, $a);
    }

    /**
     * @param string $s
     * @return string
     */
    public static function sc25519_invert($s)
    {
        $_10 = self::sc25519_sq($s);
        $_11 = self::sc25519_mul($s, $_10);
        $_100 = self::sc25519_mul($s, $_11);
        $_1000 = self::sc25519_sq($_100);
        $_1010 = self::sc25519_mul($_10, $_1000);
        $_1011 = self::sc25519_mul($s, $_1010);
        $_10000 = self::sc25519_sq($_1000);
        $_10110 = self::sc25519_sq($_1011);
        $_100000 = self::sc25519_mul($_1010, $_10110);
        $_100110 = self::sc25519_mul($_10000, $_10110);
        $_1000000 = self::sc25519_sq($_100000);
        $_1010000 = self::sc25519_mul($_10000, $_1000000);
        $_1010011 = self::sc25519_mul($_11, $_1010000);
        $_1100011 = self::sc25519_mul($_10000, $_1010011);
        $_1100111 = self::sc25519_mul($_100, $_1100011);
        $_1101011 = self::sc25519_mul($_100, $_1100111);
        $_10010011 = self::sc25519_mul($_1000000, $_1010011);
        $_10010111 = self::sc25519_mul($_100, $_10010011);
        $_10111101 = self::sc25519_mul($_100110, $_10010111);
        $_11010011 = self::sc25519_mul($_10110, $_10111101);
        $_11100111 = self::sc25519_mul($_1010000, $_10010111);
        $_11101011 = self::sc25519_mul($_100, $_11100111);
        $_11110101 = self::sc25519_mul($_1010, $_11101011);

        $recip = self::sc25519_mul($_1011, $_11110101);
        $recip = self::sc25519_sqmul($recip, 126, $_1010011);
        $recip = self::sc25519_sqmul($recip, 9, $_10);
        $recip = self::sc25519_mul($recip, $_11110101);
        $recip = self::sc25519_sqmul($recip, 7, $_1100111);
        $recip = self::sc25519_sqmul($recip, 9, $_11110101);
        $recip = self::sc25519_sqmul($recip, 11, $_10111101);
        $recip = self::sc25519_sqmul($recip, 8, $_11100111);
        $recip = self::sc25519_sqmul($recip, 9, $_1101011);
        $recip = self::sc25519_sqmul($recip, 6, $_1011);
        $recip = self::sc25519_sqmul($recip, 14, $_10010011);
        $recip = self::sc25519_sqmul($recip, 10, $_1100011);
        $recip = self::sc25519_sqmul($recip, 9, $_10010111);
        $recip = self::sc25519_sqmul($recip, 10, $_11110101);
        $recip = self::sc25519_sqmul($recip, 8, $_11010011);
        return self::sc25519_sqmul($recip, 8, $_11101011);
    }

    /**
     * @param string $s
     * @return string
     */
    public static function clamp($s)
    {
        $s_ = self::stringToIntArray($s);
        $s_[0] &= 248;
        $s_[31] |= 64;
        $s_[31] &= 128;
        return self::intArrayToString($s_);
    }

    /**
     * Ensure limbs are less than 28 bits long to prevent float promotion.
     *
     * This uses a constant-time conditional swap under the hood.
     *
     * @param ParagonIE_Sodium_Core_Curve25519_Fe $f
     * @return ParagonIE_Sodium_Core_Curve25519_Fe
     */
    public static function fe_normalize(ParagonIE_Sodium_Core_Curve25519_Fe $f)
    {
        $x = (PHP_INT_SIZE << 3) - 1; // 31 or 63

        $g = self::fe_copy($f);
        for ($i = 0; $i < 10; ++$i) {
            $mask = -(($g[$i] >> $x) & 1);

            /*
             * Get two candidate normalized values for $g[$i], depending on the sign of $g[$i]:
             */
            $a = $g[$i] & 0x7ffffff;
            $b = -((-$g[$i]) & 0x7ffffff);

            /*
             * Return the appropriate candidate value, based on the sign of the original input:
             *
             * The following is equivalent to this ternary:
             *
             * $g[$i] = (($g[$i] >> $x) & 1) ? $a : $b;
             *
             * Except what's written doesn't contain timing leaks.
             */
            $g[$i] = ($a ^ (($a ^ $b) & $mask));
        }
        return $g;
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core/Base64/UrlSafe.php000064400000017156150755146460020775 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

/**
 * Class ParagonIE_Sodium_Core_Base64UrlSafe
 *
 *  Copyright (c) 2016 - 2018 Paragon Initiative Enterprises.
 *  Copyright (c) 2014 Steve "Sc00bz" Thomas (steve at tobtu dot com)
 */
class ParagonIE_Sodium_Core_Base64_UrlSafe
{
    // COPY ParagonIE_Sodium_Core_Base64_Common STARTING HERE
    /**
     * Encode into Base64
     *
     * Base64 character set "[A-Z][a-z][0-9]+/"
     *
     * @param string $src
     * @return string
     * @throws TypeError
     */
    public static function encode($src)
    {
        return self::doEncode($src, true);
    }

    /**
     * Encode into Base64, no = padding
     *
     * Base64 character set "[A-Z][a-z][0-9]+/"
     *
     * @param string $src
     * @return string
     * @throws TypeError
     */
    public static function encodeUnpadded($src)
    {
        return self::doEncode($src, false);
    }

    /**
     * @param string $src
     * @param bool $pad   Include = padding?
     * @return string
     * @throws TypeError
     */
    protected static function doEncode($src, $pad = true)
    {
        $dest = '';
        $srcLen = ParagonIE_Sodium_Core_Util::strlen($src);
        // Main loop (no padding):
        for ($i = 0; $i + 3 <= $srcLen; $i += 3) {
            /** @var array<int, int> $chunk */
            $chunk = unpack('C*', ParagonIE_Sodium_Core_Util::substr($src, $i, 3));
            $b0 = $chunk[1];
            $b1 = $chunk[2];
            $b2 = $chunk[3];

            $dest .=
                self::encode6Bits(               $b0 >> 2       ) .
                self::encode6Bits((($b0 << 4) | ($b1 >> 4)) & 63) .
                self::encode6Bits((($b1 << 2) | ($b2 >> 6)) & 63) .
                self::encode6Bits(  $b2                     & 63);
        }
        // The last chunk, which may have padding:
        if ($i < $srcLen) {
            /** @var array<int, int> $chunk */
            $chunk = unpack('C*', ParagonIE_Sodium_Core_Util::substr($src, $i, $srcLen - $i));
            $b0 = $chunk[1];
            if ($i + 1 < $srcLen) {
                $b1 = $chunk[2];
                $dest .=
                    self::encode6Bits($b0 >> 2) .
                    self::encode6Bits((($b0 << 4) | ($b1 >> 4)) & 63) .
                    self::encode6Bits(($b1 << 2) & 63);
                if ($pad) {
                    $dest .= '=';
                }
            } else {
                $dest .=
                    self::encode6Bits( $b0 >> 2) .
                    self::encode6Bits(($b0 << 4) & 63);
                if ($pad) {
                    $dest .= '==';
                }
            }
        }
        return $dest;
    }

    /**
     * decode from base64 into binary
     *
     * Base64 character set "./[A-Z][a-z][0-9]"
     *
     * @param string $src
     * @param bool $strictPadding
     * @return string
     * @throws RangeException
     * @throws TypeError
     * @psalm-suppress RedundantCondition
     */
    public static function decode($src, $strictPadding = false)
    {
        // Remove padding
        $srcLen = ParagonIE_Sodium_Core_Util::strlen($src);
        if ($srcLen === 0) {
            return '';
        }

        if ($strictPadding) {
            if (($srcLen & 3) === 0) {
                if ($src[$srcLen - 1] === '=') {
                    $srcLen--;
                    if ($src[$srcLen - 1] === '=') {
                        $srcLen--;
                    }
                }
            }
            if (($srcLen & 3) === 1) {
                throw new RangeException(
                    'Incorrect padding'
                );
            }
            if ($src[$srcLen - 1] === '=') {
                throw new RangeException(
                    'Incorrect padding'
                );
            }
        } else {
            $src = rtrim($src, '=');
            $srcLen =  ParagonIE_Sodium_Core_Util::strlen($src);
        }

        $err = 0;
        $dest = '';
        // Main loop (no padding):
        for ($i = 0; $i + 4 <= $srcLen; $i += 4) {
            /** @var array<int, int> $chunk */
            $chunk = unpack('C*', ParagonIE_Sodium_Core_Util::substr($src, $i, 4));
            $c0 = self::decode6Bits($chunk[1]);
            $c1 = self::decode6Bits($chunk[2]);
            $c2 = self::decode6Bits($chunk[3]);
            $c3 = self::decode6Bits($chunk[4]);

            $dest .= pack(
                'CCC',
                ((($c0 << 2) | ($c1 >> 4)) & 0xff),
                ((($c1 << 4) | ($c2 >> 2)) & 0xff),
                ((($c2 << 6) | $c3) & 0xff)
            );
            $err |= ($c0 | $c1 | $c2 | $c3) >> 8;
        }
        // The last chunk, which may have padding:
        if ($i < $srcLen) {
            /** @var array<int, int> $chunk */
            $chunk = unpack('C*', ParagonIE_Sodium_Core_Util::substr($src, $i, $srcLen - $i));
            $c0 = self::decode6Bits($chunk[1]);

            if ($i + 2 < $srcLen) {
                $c1 = self::decode6Bits($chunk[2]);
                $c2 = self::decode6Bits($chunk[3]);
                $dest .= pack(
                    'CC',
                    ((($c0 << 2) | ($c1 >> 4)) & 0xff),
                    ((($c1 << 4) | ($c2 >> 2)) & 0xff)
                );
                $err |= ($c0 | $c1 | $c2) >> 8;
            } elseif ($i + 1 < $srcLen) {
                $c1 = self::decode6Bits($chunk[2]);
                $dest .= pack(
                    'C',
                    ((($c0 << 2) | ($c1 >> 4)) & 0xff)
                );
                $err |= ($c0 | $c1) >> 8;
            } elseif ($i < $srcLen && $strictPadding) {
                $err |= 1;
            }
        }
        /** @var bool $check */
        $check = ($err === 0);
        if (!$check) {
            throw new RangeException(
                'Base64::decode() only expects characters in the correct base64 alphabet'
            );
        }
        return $dest;
    }
    // COPY ParagonIE_Sodium_Core_Base64_Common ENDING HERE
    /**
     * Uses bitwise operators instead of table-lookups to turn 6-bit integers
     * into 8-bit integers.
     *
     * Base64 character set:
     * [A-Z]      [a-z]      [0-9]      +     /
     * 0x41-0x5a, 0x61-0x7a, 0x30-0x39, 0x2b, 0x2f
     *
     * @param int $src
     * @return int
     */
    protected static function decode6Bits($src)
    {
        $ret = -1;

        // if ($src > 0x40 && $src < 0x5b) $ret += $src - 0x41 + 1; // -64
        $ret += (((0x40 - $src) & ($src - 0x5b)) >> 8) & ($src - 64);

        // if ($src > 0x60 && $src < 0x7b) $ret += $src - 0x61 + 26 + 1; // -70
        $ret += (((0x60 - $src) & ($src - 0x7b)) >> 8) & ($src - 70);

        // if ($src > 0x2f && $src < 0x3a) $ret += $src - 0x30 + 52 + 1; // 5
        $ret += (((0x2f - $src) & ($src - 0x3a)) >> 8) & ($src + 5);

        // if ($src == 0x2c) $ret += 62 + 1;
        $ret += (((0x2c - $src) & ($src - 0x2e)) >> 8) & 63;

        // if ($src == 0x5f) ret += 63 + 1;
        $ret += (((0x5e - $src) & ($src - 0x60)) >> 8) & 64;

        return $ret;
    }

    /**
     * Uses bitwise operators instead of table-lookups to turn 8-bit integers
     * into 6-bit integers.
     *
     * @param int $src
     * @return string
     */
    protected static function encode6Bits($src)
    {
        $diff = 0x41;

        // if ($src > 25) $diff += 0x61 - 0x41 - 26; // 6
        $diff += ((25 - $src) >> 8) & 6;

        // if ($src > 51) $diff += 0x30 - 0x61 - 26; // -75
        $diff -= ((51 - $src) >> 8) & 75;

        // if ($src > 61) $diff += 0x2d - 0x30 - 10; // -13
        $diff -= ((61 - $src) >> 8) & 13;

        // if ($src > 62) $diff += 0x5f - 0x2b - 1; // 3
        $diff += ((62 - $src) >> 8) & 49;

        return pack('C', $src + $diff);
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core/Base64/Original.php000064400000017150150755146460021172 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

/**
 * Class ParagonIE_Sodium_Core_Base64
 *
 *  Copyright (c) 2016 - 2018 Paragon Initiative Enterprises.
 *  Copyright (c) 2014 Steve "Sc00bz" Thomas (steve at tobtu dot com)
 */
class ParagonIE_Sodium_Core_Base64_Original
{
    // COPY ParagonIE_Sodium_Core_Base64_Common STARTING HERE
    /**
     * Encode into Base64
     *
     * Base64 character set "[A-Z][a-z][0-9]+/"
     *
     * @param string $src
     * @return string
     * @throws TypeError
     */
    public static function encode($src)
    {
        return self::doEncode($src, true);
    }

    /**
     * Encode into Base64, no = padding
     *
     * Base64 character set "[A-Z][a-z][0-9]+/"
     *
     * @param string $src
     * @return string
     * @throws TypeError
     */
    public static function encodeUnpadded($src)
    {
        return self::doEncode($src, false);
    }

    /**
     * @param string $src
     * @param bool $pad   Include = padding?
     * @return string
     * @throws TypeError
     */
    protected static function doEncode($src, $pad = true)
    {
        $dest = '';
        $srcLen = ParagonIE_Sodium_Core_Util::strlen($src);
        // Main loop (no padding):
        for ($i = 0; $i + 3 <= $srcLen; $i += 3) {
            /** @var array<int, int> $chunk */
            $chunk = unpack('C*', ParagonIE_Sodium_Core_Util::substr($src, $i, 3));
            $b0 = $chunk[1];
            $b1 = $chunk[2];
            $b2 = $chunk[3];

            $dest .=
                self::encode6Bits(               $b0 >> 2       ) .
                self::encode6Bits((($b0 << 4) | ($b1 >> 4)) & 63) .
                self::encode6Bits((($b1 << 2) | ($b2 >> 6)) & 63) .
                self::encode6Bits(  $b2                     & 63);
        }
        // The last chunk, which may have padding:
        if ($i < $srcLen) {
            /** @var array<int, int> $chunk */
            $chunk = unpack('C*', ParagonIE_Sodium_Core_Util::substr($src, $i, $srcLen - $i));
            $b0 = $chunk[1];
            if ($i + 1 < $srcLen) {
                $b1 = $chunk[2];
                $dest .=
                    self::encode6Bits($b0 >> 2) .
                    self::encode6Bits((($b0 << 4) | ($b1 >> 4)) & 63) .
                    self::encode6Bits(($b1 << 2) & 63);
                if ($pad) {
                    $dest .= '=';
                }
            } else {
                $dest .=
                    self::encode6Bits( $b0 >> 2) .
                    self::encode6Bits(($b0 << 4) & 63);
                if ($pad) {
                    $dest .= '==';
                }
            }
        }
        return $dest;
    }

    /**
     * decode from base64 into binary
     *
     * Base64 character set "./[A-Z][a-z][0-9]"
     *
     * @param string $src
     * @param bool $strictPadding
     * @return string
     * @throws RangeException
     * @throws TypeError
     * @psalm-suppress RedundantCondition
     */
    public static function decode($src, $strictPadding = false)
    {
        // Remove padding
        $srcLen = ParagonIE_Sodium_Core_Util::strlen($src);
        if ($srcLen === 0) {
            return '';
        }

        if ($strictPadding) {
            if (($srcLen & 3) === 0) {
                if ($src[$srcLen - 1] === '=') {
                    $srcLen--;
                    if ($src[$srcLen - 1] === '=') {
                        $srcLen--;
                    }
                }
            }
            if (($srcLen & 3) === 1) {
                throw new RangeException(
                    'Incorrect padding'
                );
            }
            if ($src[$srcLen - 1] === '=') {
                throw new RangeException(
                    'Incorrect padding'
                );
            }
        } else {
            $src = rtrim($src, '=');
            $srcLen =  ParagonIE_Sodium_Core_Util::strlen($src);
        }

        $err = 0;
        $dest = '';
        // Main loop (no padding):
        for ($i = 0; $i + 4 <= $srcLen; $i += 4) {
            /** @var array<int, int> $chunk */
            $chunk = unpack('C*', ParagonIE_Sodium_Core_Util::substr($src, $i, 4));
            $c0 = self::decode6Bits($chunk[1]);
            $c1 = self::decode6Bits($chunk[2]);
            $c2 = self::decode6Bits($chunk[3]);
            $c3 = self::decode6Bits($chunk[4]);

            $dest .= pack(
                'CCC',
                ((($c0 << 2) | ($c1 >> 4)) & 0xff),
                ((($c1 << 4) | ($c2 >> 2)) & 0xff),
                ((($c2 << 6) | $c3) & 0xff)
            );
            $err |= ($c0 | $c1 | $c2 | $c3) >> 8;
        }
        // The last chunk, which may have padding:
        if ($i < $srcLen) {
            /** @var array<int, int> $chunk */
            $chunk = unpack('C*', ParagonIE_Sodium_Core_Util::substr($src, $i, $srcLen - $i));
            $c0 = self::decode6Bits($chunk[1]);

            if ($i + 2 < $srcLen) {
                $c1 = self::decode6Bits($chunk[2]);
                $c2 = self::decode6Bits($chunk[3]);
                $dest .= pack(
                    'CC',
                    ((($c0 << 2) | ($c1 >> 4)) & 0xff),
                    ((($c1 << 4) | ($c2 >> 2)) & 0xff)
                );
                $err |= ($c0 | $c1 | $c2) >> 8;
            } elseif ($i + 1 < $srcLen) {
                $c1 = self::decode6Bits($chunk[2]);
                $dest .= pack(
                    'C',
                    ((($c0 << 2) | ($c1 >> 4)) & 0xff)
                );
                $err |= ($c0 | $c1) >> 8;
            } elseif ($i < $srcLen && $strictPadding) {
                $err |= 1;
            }
        }
        /** @var bool $check */
        $check = ($err === 0);
        if (!$check) {
            throw new RangeException(
                'Base64::decode() only expects characters in the correct base64 alphabet'
            );
        }
        return $dest;
    }
    // COPY ParagonIE_Sodium_Core_Base64_Common ENDING HERE

    /**
     * Uses bitwise operators instead of table-lookups to turn 6-bit integers
     * into 8-bit integers.
     *
     * Base64 character set:
     * [A-Z]      [a-z]      [0-9]      +     /
     * 0x41-0x5a, 0x61-0x7a, 0x30-0x39, 0x2b, 0x2f
     *
     * @param int $src
     * @return int
     */
    protected static function decode6Bits($src)
    {
        $ret = -1;

        // if ($src > 0x40 && $src < 0x5b) $ret += $src - 0x41 + 1; // -64
        $ret += (((0x40 - $src) & ($src - 0x5b)) >> 8) & ($src - 64);

        // if ($src > 0x60 && $src < 0x7b) $ret += $src - 0x61 + 26 + 1; // -70
        $ret += (((0x60 - $src) & ($src - 0x7b)) >> 8) & ($src - 70);

        // if ($src > 0x2f && $src < 0x3a) $ret += $src - 0x30 + 52 + 1; // 5
        $ret += (((0x2f - $src) & ($src - 0x3a)) >> 8) & ($src + 5);

        // if ($src == 0x2b) $ret += 62 + 1;
        $ret += (((0x2a - $src) & ($src - 0x2c)) >> 8) & 63;

        // if ($src == 0x2f) ret += 63 + 1;
        $ret += (((0x2e - $src) & ($src - 0x30)) >> 8) & 64;

        return $ret;
    }

    /**
     * Uses bitwise operators instead of table-lookups to turn 8-bit integers
     * into 6-bit integers.
     *
     * @param int $src
     * @return string
     */
    protected static function encode6Bits($src)
    {
        $diff = 0x41;

        // if ($src > 25) $diff += 0x61 - 0x41 - 26; // 6
        $diff += ((25 - $src) >> 8) & 6;

        // if ($src > 51) $diff += 0x30 - 0x61 - 26; // -75
        $diff -= ((51 - $src) >> 8) & 75;

        // if ($src > 61) $diff += 0x2b - 0x30 - 10; // -15
        $diff -= ((61 - $src) >> 8) & 15;

        // if ($src > 62) $diff += 0x2f - 0x2b - 1; // 3
        $diff += ((62 - $src) >> 8) & 3;

        return pack('C', $src + $diff);
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core/ChaCha20/Ctx.php000064400000007641150755146460020415 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Core_ChaCha20_Ctx', false)) {
    return;
}

/**
 * Class ParagonIE_Sodium_Core_ChaCha20_Ctx
 */
class ParagonIE_Sodium_Core_ChaCha20_Ctx extends ParagonIE_Sodium_Core_Util implements ArrayAccess
{
    /**
     * @var SplFixedArray internally, <int, int>
     */
    protected $container;

    /**
     * ParagonIE_Sodium_Core_ChaCha20_Ctx constructor.
     *
     * @internal You should not use this directly from another application
     *
     * @param string $key     ChaCha20 key.
     * @param string $iv      Initialization Vector (a.k.a. nonce).
     * @param string $counter The initial counter value.
     *                        Defaults to 8 0x00 bytes.
     * @throws InvalidArgumentException
     * @throws TypeError
     */
    public function __construct($key = '', $iv = '', $counter = '')
    {
        if (self::strlen($key) !== 32) {
            throw new InvalidArgumentException('ChaCha20 expects a 256-bit key.');
        }
        if (self::strlen($iv) !== 8) {
            throw new InvalidArgumentException('ChaCha20 expects a 64-bit nonce.');
        }
        $this->container = new SplFixedArray(16);

        /* "expand 32-byte k" as per ChaCha20 spec */
        $this->container[0]  = 0x61707865;
        $this->container[1]  = 0x3320646e;
        $this->container[2]  = 0x79622d32;
        $this->container[3]  = 0x6b206574;
        $this->container[4]  = self::load_4(self::substr($key, 0, 4));
        $this->container[5]  = self::load_4(self::substr($key, 4, 4));
        $this->container[6]  = self::load_4(self::substr($key, 8, 4));
        $this->container[7]  = self::load_4(self::substr($key, 12, 4));
        $this->container[8]  = self::load_4(self::substr($key, 16, 4));
        $this->container[9]  = self::load_4(self::substr($key, 20, 4));
        $this->container[10] = self::load_4(self::substr($key, 24, 4));
        $this->container[11] = self::load_4(self::substr($key, 28, 4));

        if (empty($counter)) {
            $this->container[12] = 0;
            $this->container[13] = 0;
        } else {
            $this->container[12] = self::load_4(self::substr($counter, 0, 4));
            $this->container[13] = self::load_4(self::substr($counter, 4, 4));
        }
        $this->container[14] = self::load_4(self::substr($iv, 0, 4));
        $this->container[15] = self::load_4(self::substr($iv, 4, 4));
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param int $offset
     * @param int $value
     * @return void
     * @psalm-suppress MixedArrayOffset
     */
    #[ReturnTypeWillChange]
    public function offsetSet($offset, $value)
    {
        if (!is_int($offset)) {
            throw new InvalidArgumentException('Expected an integer');
        }
        if (!is_int($value)) {
            throw new InvalidArgumentException('Expected an integer');
        }
        $this->container[$offset] = $value;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param int $offset
     * @return bool
     */
    #[ReturnTypeWillChange]
    public function offsetExists($offset)
    {
        return isset($this->container[$offset]);
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param int $offset
     * @return void
     * @psalm-suppress MixedArrayOffset
     */
    #[ReturnTypeWillChange]
    public function offsetUnset($offset)
    {
        unset($this->container[$offset]);
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param int $offset
     * @return mixed|null
     * @psalm-suppress MixedArrayOffset
     */
    #[ReturnTypeWillChange]
    public function offsetGet($offset)
    {
        return isset($this->container[$offset])
            ? $this->container[$offset]
            : null;
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core/ChaCha20/IetfCtx.php000064400000002545150755146460021223 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Core_ChaCha20_IetfCtx', false)) {
    return;
}

/**
 * Class ParagonIE_Sodium_Core_ChaCha20_IetfCtx
 */
class ParagonIE_Sodium_Core_ChaCha20_IetfCtx extends ParagonIE_Sodium_Core_ChaCha20_Ctx
{
    /**
     * ParagonIE_Sodium_Core_ChaCha20_IetfCtx constructor.
     *
     * @internal You should not use this directly from another application
     *
     * @param string $key     ChaCha20 key.
     * @param string $iv      Initialization Vector (a.k.a. nonce).
     * @param string $counter The initial counter value.
     *                        Defaults to 4 0x00 bytes.
     * @throws InvalidArgumentException
     * @throws TypeError
     */
    public function __construct($key = '', $iv = '', $counter = '')
    {
        if (self::strlen($iv) !== 12) {
            throw new InvalidArgumentException('ChaCha20 expects a 96-bit nonce in IETF mode.');
        }
        parent::__construct($key, self::substr($iv, 0, 8), $counter);

        if (!empty($counter)) {
            $this->container[12] = self::load_4(self::substr($counter, 0, 4));
        }
        $this->container[13] = self::load_4(self::substr($iv, 0, 4));
        $this->container[14] = self::load_4(self::substr($iv, 4, 4));
        $this->container[15] = self::load_4(self::substr($iv, 8, 4));
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core/X25519.php000064400000022445150755146460017222 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Core_X25519', false)) {
    return;
}

/**
 * Class ParagonIE_Sodium_Core_X25519
 */
abstract class ParagonIE_Sodium_Core_X25519 extends ParagonIE_Sodium_Core_Curve25519
{
    /**
     * Alters the objects passed to this method in place.
     *
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core_Curve25519_Fe $f
     * @param ParagonIE_Sodium_Core_Curve25519_Fe $g
     * @param int $b
     * @return void
     * @psalm-suppress MixedAssignment
     */
    public static function fe_cswap(
        ParagonIE_Sodium_Core_Curve25519_Fe $f,
        ParagonIE_Sodium_Core_Curve25519_Fe $g,
        $b = 0
    ) {
        $f0 = (int) $f[0];
        $f1 = (int) $f[1];
        $f2 = (int) $f[2];
        $f3 = (int) $f[3];
        $f4 = (int) $f[4];
        $f5 = (int) $f[5];
        $f6 = (int) $f[6];
        $f7 = (int) $f[7];
        $f8 = (int) $f[8];
        $f9 = (int) $f[9];
        $g0 = (int) $g[0];
        $g1 = (int) $g[1];
        $g2 = (int) $g[2];
        $g3 = (int) $g[3];
        $g4 = (int) $g[4];
        $g5 = (int) $g[5];
        $g6 = (int) $g[6];
        $g7 = (int) $g[7];
        $g8 = (int) $g[8];
        $g9 = (int) $g[9];
        $b = -$b;
        $x0 = ($f0 ^ $g0) & $b;
        $x1 = ($f1 ^ $g1) & $b;
        $x2 = ($f2 ^ $g2) & $b;
        $x3 = ($f3 ^ $g3) & $b;
        $x4 = ($f4 ^ $g4) & $b;
        $x5 = ($f5 ^ $g5) & $b;
        $x6 = ($f6 ^ $g6) & $b;
        $x7 = ($f7 ^ $g7) & $b;
        $x8 = ($f8 ^ $g8) & $b;
        $x9 = ($f9 ^ $g9) & $b;
        $f[0] = $f0 ^ $x0;
        $f[1] = $f1 ^ $x1;
        $f[2] = $f2 ^ $x2;
        $f[3] = $f3 ^ $x3;
        $f[4] = $f4 ^ $x4;
        $f[5] = $f5 ^ $x5;
        $f[6] = $f6 ^ $x6;
        $f[7] = $f7 ^ $x7;
        $f[8] = $f8 ^ $x8;
        $f[9] = $f9 ^ $x9;
        $g[0] = $g0 ^ $x0;
        $g[1] = $g1 ^ $x1;
        $g[2] = $g2 ^ $x2;
        $g[3] = $g3 ^ $x3;
        $g[4] = $g4 ^ $x4;
        $g[5] = $g5 ^ $x5;
        $g[6] = $g6 ^ $x6;
        $g[7] = $g7 ^ $x7;
        $g[8] = $g8 ^ $x8;
        $g[9] = $g9 ^ $x9;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core_Curve25519_Fe $f
     * @return ParagonIE_Sodium_Core_Curve25519_Fe
     */
    public static function fe_mul121666(ParagonIE_Sodium_Core_Curve25519_Fe $f)
    {
        $h = array(
            self::mul((int) $f[0], 121666, 17),
            self::mul((int) $f[1], 121666, 17),
            self::mul((int) $f[2], 121666, 17),
            self::mul((int) $f[3], 121666, 17),
            self::mul((int) $f[4], 121666, 17),
            self::mul((int) $f[5], 121666, 17),
            self::mul((int) $f[6], 121666, 17),
            self::mul((int) $f[7], 121666, 17),
            self::mul((int) $f[8], 121666, 17),
            self::mul((int) $f[9], 121666, 17)
        );

        /** @var int $carry9 */
        $carry9 = ($h[9] + (1 << 24)) >> 25;
        $h[0] += self::mul($carry9, 19, 5);
        $h[9] -= $carry9 << 25;
        /** @var int $carry1 */
        $carry1 = ($h[1] + (1 << 24)) >> 25;
        $h[2] += $carry1;
        $h[1] -= $carry1 << 25;
        /** @var int $carry3 */
        $carry3 = ($h[3] + (1 << 24)) >> 25;
        $h[4] += $carry3;
        $h[3] -= $carry3 << 25;
        /** @var int $carry5 */
        $carry5 = ($h[5] + (1 << 24)) >> 25;
        $h[6] += $carry5;
        $h[5] -= $carry5 << 25;
        /** @var int $carry7 */
        $carry7 = ($h[7] + (1 << 24)) >> 25;
        $h[8] += $carry7;
        $h[7] -= $carry7 << 25;

        /** @var int $carry0 */
        $carry0 = ($h[0] + (1 << 25)) >> 26;
        $h[1] += $carry0;
        $h[0] -= $carry0 << 26;
        /** @var int $carry2 */
        $carry2 = ($h[2] + (1 << 25)) >> 26;
        $h[3] += $carry2;
        $h[2] -= $carry2 << 26;
        /** @var int $carry4 */
        $carry4 = ($h[4] + (1 << 25)) >> 26;
        $h[5] += $carry4;
        $h[4] -= $carry4 << 26;
        /** @var int $carry6 */
        $carry6 = ($h[6] + (1 << 25)) >> 26;
        $h[7] += $carry6;
        $h[6] -= $carry6 << 26;
        /** @var int $carry8 */
        $carry8 = ($h[8] + (1 << 25)) >> 26;
        $h[9] += $carry8;
        $h[8] -= $carry8 << 26;

        foreach ($h as $i => $value) {
            $h[$i] = (int) $value;
        }
        return ParagonIE_Sodium_Core_Curve25519_Fe::fromArray($h);
    }

    /**
     * @internal You should not use this directly from another application
     *
     * Inline comments preceded by # are from libsodium's ref10 code.
     *
     * @param string $n
     * @param string $p
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function crypto_scalarmult_curve25519_ref10($n, $p)
    {
        # for (i = 0;i < 32;++i) e[i] = n[i];
        $e = '' . $n;
        # e[0] &= 248;
        $e[0] = self::intToChr(
            self::chrToInt($e[0]) & 248
        );
        # e[31] &= 127;
        # e[31] |= 64;
        $e[31] = self::intToChr(
            (self::chrToInt($e[31]) & 127) | 64
        );
        # fe_frombytes(x1,p);
        $x1 = self::fe_frombytes($p);
        # fe_1(x2);
        $x2 = self::fe_1();
        # fe_0(z2);
        $z2 = self::fe_0();
        # fe_copy(x3,x1);
        $x3 = self::fe_copy($x1);
        # fe_1(z3);
        $z3 = self::fe_1();

        # swap = 0;
        /** @var int $swap */
        $swap = 0;

        # for (pos = 254;pos >= 0;--pos) {
        for ($pos = 254; $pos >= 0; --$pos) {
            # b = e[pos / 8] >> (pos & 7);
            /** @var int $b */
            $b = self::chrToInt(
                    $e[(int) floor($pos / 8)]
                ) >> ($pos & 7);
            # b &= 1;
            $b &= 1;
            # swap ^= b;
            $swap ^= $b;
            # fe_cswap(x2,x3,swap);
            self::fe_cswap($x2, $x3, $swap);
            # fe_cswap(z2,z3,swap);
            self::fe_cswap($z2, $z3, $swap);
            # swap = b;
            $swap = $b;
            # fe_sub(tmp0,x3,z3);
            $tmp0 = self::fe_sub($x3, $z3);
            # fe_sub(tmp1,x2,z2);
            $tmp1 = self::fe_sub($x2, $z2);

            # fe_add(x2,x2,z2);
            $x2 = self::fe_add($x2, $z2);

            # fe_add(z2,x3,z3);
            $z2 = self::fe_add($x3, $z3);

            # fe_mul(z3,tmp0,x2);
            $z3 = self::fe_mul($tmp0, $x2);

            # fe_mul(z2,z2,tmp1);
            $z2 = self::fe_mul($z2, $tmp1);

            # fe_sq(tmp0,tmp1);
            $tmp0 = self::fe_sq($tmp1);

            # fe_sq(tmp1,x2);
            $tmp1 = self::fe_sq($x2);

            # fe_add(x3,z3,z2);
            $x3 = self::fe_add($z3, $z2);

            # fe_sub(z2,z3,z2);
            $z2 = self::fe_sub($z3, $z2);

            # fe_mul(x2,tmp1,tmp0);
            $x2 = self::fe_mul($tmp1, $tmp0);

            # fe_sub(tmp1,tmp1,tmp0);
            $tmp1 = self::fe_sub($tmp1, $tmp0);

            # fe_sq(z2,z2);
            $z2 = self::fe_sq($z2);

            # fe_mul121666(z3,tmp1);
            $z3 = self::fe_mul121666($tmp1);

            # fe_sq(x3,x3);
            $x3 = self::fe_sq($x3);

            # fe_add(tmp0,tmp0,z3);
            $tmp0 = self::fe_add($tmp0, $z3);

            # fe_mul(z3,x1,z2);
            $z3 = self::fe_mul($x1, $z2);

            # fe_mul(z2,tmp1,tmp0);
            $z2 = self::fe_mul($tmp1, $tmp0);
        }

        # fe_cswap(x2,x3,swap);
        self::fe_cswap($x2, $x3, $swap);

        # fe_cswap(z2,z3,swap);
        self::fe_cswap($z2, $z3, $swap);

        # fe_invert(z2,z2);
        $z2 = self::fe_invert($z2);

        # fe_mul(x2,x2,z2);
        $x2 = self::fe_mul($x2, $z2);
        # fe_tobytes(q,x2);
        return self::fe_tobytes($x2);
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core_Curve25519_Fe $edwardsY
     * @param ParagonIE_Sodium_Core_Curve25519_Fe $edwardsZ
     * @return ParagonIE_Sodium_Core_Curve25519_Fe
     */
    public static function edwards_to_montgomery(
        ParagonIE_Sodium_Core_Curve25519_Fe $edwardsY,
        ParagonIE_Sodium_Core_Curve25519_Fe $edwardsZ
    ) {
        $tempX = self::fe_add($edwardsZ, $edwardsY);
        $tempZ = self::fe_sub($edwardsZ, $edwardsY);
        $tempZ = self::fe_invert($tempZ);
        return self::fe_mul($tempX, $tempZ);
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $n
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function crypto_scalarmult_curve25519_ref10_base($n)
    {
        # for (i = 0;i < 32;++i) e[i] = n[i];
        $e = '' . $n;

        # e[0] &= 248;
        $e[0] = self::intToChr(
            self::chrToInt($e[0]) & 248
        );

        # e[31] &= 127;
        # e[31] |= 64;
        $e[31] = self::intToChr(
            (self::chrToInt($e[31]) & 127) | 64
        );

        $A = self::ge_scalarmult_base($e);
        if (
            !($A->Y instanceof ParagonIE_Sodium_Core_Curve25519_Fe)
                ||
            !($A->Z instanceof ParagonIE_Sodium_Core_Curve25519_Fe)
        ) {
            throw new TypeError('Null points encountered');
        }
        $pk = self::edwards_to_montgomery($A->Y, $A->Z);
        return self::fe_tobytes($pk);
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core/Poly1305.php000064400000003141150755146460017631 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Core_Poly1305', false)) {
    return;
}

/**
 * Class ParagonIE_Sodium_Core_Poly1305
 */
abstract class ParagonIE_Sodium_Core_Poly1305 extends ParagonIE_Sodium_Core_Util
{
    const BLOCK_SIZE = 16;

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $m
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function onetimeauth($m, $key)
    {
        if (self::strlen($key) < 32) {
            throw new InvalidArgumentException(
                'Key must be 32 bytes long.'
            );
        }
        $state = new ParagonIE_Sodium_Core_Poly1305_State(
            self::substr($key, 0, 32)
        );
        return $state
            ->update($m)
            ->finish();
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $mac
     * @param string $m
     * @param string $key
     * @return bool
     * @throws SodiumException
     * @throws TypeError
     */
    public static function onetimeauth_verify($mac, $m, $key)
    {
        if (self::strlen($key) < 32) {
            throw new InvalidArgumentException(
                'Key must be 32 bytes long.'
            );
        }
        $state = new ParagonIE_Sodium_Core_Poly1305_State(
            self::substr($key, 0, 32)
        );
        $calc = $state
            ->update($m)
            ->finish();
        return self::verify_16($calc, $mac);
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core/XChaCha20.php000064400000006545150755146460020011 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Core_XChaCha20', false)) {
    return;
}

/**
 * Class ParagonIE_Sodium_Core_XChaCha20
 */
class ParagonIE_Sodium_Core_XChaCha20 extends ParagonIE_Sodium_Core_HChaCha20
{
    /**
     * @internal You should not use this directly from another application
     *
     * @param int $len
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function stream($len = 64, $nonce = '', $key = '')
    {
        if (self::strlen($nonce) !== 24) {
            throw new SodiumException('Nonce must be 24 bytes long');
        }
        return self::encryptBytes(
            new ParagonIE_Sodium_Core_ChaCha20_Ctx(
                self::hChaCha20(
                    self::substr($nonce, 0, 16),
                    $key
                ),
                self::substr($nonce, 16, 8)
            ),
            str_repeat("\x00", $len)
        );
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param int $len
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function ietfStream($len = 64, $nonce = '', $key = '')
    {
        if (self::strlen($nonce) !== 24) {
            throw new SodiumException('Nonce must be 24 bytes long');
        }
        return self::encryptBytes(
            new ParagonIE_Sodium_Core_ChaCha20_IetfCtx(
                self::hChaCha20(
                    self::substr($nonce, 0, 16),
                    $key
                ),
                "\x00\x00\x00\x00" . self::substr($nonce, 16, 8)
            ),
            str_repeat("\x00", $len)
        );
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $message
     * @param string $nonce
     * @param string $key
     * @param string $ic
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function streamXorIc($message, $nonce = '', $key = '', $ic = '')
    {
        if (self::strlen($nonce) !== 24) {
            throw new SodiumException('Nonce must be 24 bytes long');
        }
        return self::encryptBytes(
            new ParagonIE_Sodium_Core_ChaCha20_Ctx(
                self::hChaCha20(self::substr($nonce, 0, 16), $key),
                self::substr($nonce, 16, 8),
                $ic
            ),
            $message
        );
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $message
     * @param string $nonce
     * @param string $key
     * @param string $ic
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function ietfStreamXorIc($message, $nonce = '', $key = '', $ic = '')
    {
        if (self::strlen($nonce) !== 24) {
            throw new SodiumException('Nonce must be 24 bytes long');
        }
        return self::encryptBytes(
            new ParagonIE_Sodium_Core_ChaCha20_IetfCtx(
                self::hChaCha20(self::substr($nonce, 0, 16), $key),
                "\x00\x00\x00\x00" . self::substr($nonce, 16, 8),
                $ic
            ),
            $message
        );
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core/Ed25519.php000064400000042207150755146460017341 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Core_Ed25519', false)) {
    return;
}
if (!class_exists('ParagonIE_Sodium_Core_Curve25519', false)) {
    require_once dirname(__FILE__) . '/Curve25519.php';
}

/**
 * Class ParagonIE_Sodium_Core_Ed25519
 */
abstract class ParagonIE_Sodium_Core_Ed25519 extends ParagonIE_Sodium_Core_Curve25519
{
    const KEYPAIR_BYTES = 96;
    const SEED_BYTES = 32;
    const SCALAR_BYTES = 32;

    /**
     * @internal You should not use this directly from another application
     *
     * @return string (96 bytes)
     * @throws Exception
     * @throws SodiumException
     * @throws TypeError
     */
    public static function keypair()
    {
        $seed = random_bytes(self::SEED_BYTES);
        $pk = '';
        $sk = '';
        self::seed_keypair($pk, $sk, $seed);
        return $sk . $pk;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $pk
     * @param string $sk
     * @param string $seed
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function seed_keypair(&$pk, &$sk, $seed)
    {
        if (self::strlen($seed) !== self::SEED_BYTES) {
            throw new RangeException('crypto_sign keypair seed must be 32 bytes long');
        }

        /** @var string $pk */
        $pk = self::publickey_from_secretkey($seed);
        $sk = $seed . $pk;
        return $sk;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $keypair
     * @return string
     * @throws TypeError
     */
    public static function secretkey($keypair)
    {
        if (self::strlen($keypair) !== self::KEYPAIR_BYTES) {
            throw new RangeException('crypto_sign keypair must be 96 bytes long');
        }
        return self::substr($keypair, 0, 64);
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $keypair
     * @return string
     * @throws TypeError
     */
    public static function publickey($keypair)
    {
        if (self::strlen($keypair) !== self::KEYPAIR_BYTES) {
            throw new RangeException('crypto_sign keypair must be 96 bytes long');
        }
        return self::substr($keypair, 64, 32);
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $sk
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function publickey_from_secretkey($sk)
    {
        /** @var string $sk */
        $sk = hash('sha512', self::substr($sk, 0, 32), true);
        $sk[0] = self::intToChr(
            self::chrToInt($sk[0]) & 248
        );
        $sk[31] = self::intToChr(
            (self::chrToInt($sk[31]) & 63) | 64
        );
        return self::sk_to_pk($sk);
    }

    /**
     * @param string $pk
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function pk_to_curve25519($pk)
    {
        if (self::small_order($pk)) {
            throw new SodiumException('Public key is on a small order');
        }
        $A = self::ge_frombytes_negate_vartime(self::substr($pk, 0, 32));
        $p1 = self::ge_mul_l($A);
        if (!self::fe_isnonzero($p1->X)) {
            throw new SodiumException('Unexpected zero result');
        }

        # fe_1(one_minus_y);
        # fe_sub(one_minus_y, one_minus_y, A.Y);
        # fe_invert(one_minus_y, one_minus_y);
        $one_minux_y = self::fe_invert(
            self::fe_sub(
                self::fe_1(),
                $A->Y
            )
        );

        # fe_1(x);
        # fe_add(x, x, A.Y);
        # fe_mul(x, x, one_minus_y);
        $x = self::fe_mul(
            self::fe_add(self::fe_1(), $A->Y),
            $one_minux_y
        );

        # fe_tobytes(curve25519_pk, x);
        return self::fe_tobytes($x);
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $sk
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function sk_to_pk($sk)
    {
        return self::ge_p3_tobytes(
            self::ge_scalarmult_base(
                self::substr($sk, 0, 32)
            )
        );
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $message
     * @param string $sk
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function sign($message, $sk)
    {
        /** @var string $signature */
        $signature = self::sign_detached($message, $sk);
        return $signature . $message;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $message A signed message
     * @param string $pk      Public key
     * @return string         Message (without signature)
     * @throws SodiumException
     * @throws TypeError
     */
    public static function sign_open($message, $pk)
    {
        /** @var string $signature */
        $signature = self::substr($message, 0, 64);

        /** @var string $message */
        $message = self::substr($message, 64);

        if (self::verify_detached($signature, $message, $pk)) {
            return $message;
        }
        throw new SodiumException('Invalid signature');
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $message
     * @param string $sk
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function sign_detached($message, $sk)
    {
        # crypto_hash_sha512(az, sk, 32);
        $az =  hash('sha512', self::substr($sk, 0, 32), true);

        # az[0] &= 248;
        # az[31] &= 63;
        # az[31] |= 64;
        $az[0] = self::intToChr(self::chrToInt($az[0]) & 248);
        $az[31] = self::intToChr((self::chrToInt($az[31]) & 63) | 64);

        # crypto_hash_sha512_init(&hs);
        # crypto_hash_sha512_update(&hs, az + 32, 32);
        # crypto_hash_sha512_update(&hs, m, mlen);
        # crypto_hash_sha512_final(&hs, nonce);
        $hs = hash_init('sha512');
        hash_update($hs, self::substr($az, 32, 32));
        hash_update($hs, $message);
        $nonceHash = hash_final($hs, true);

        # memmove(sig + 32, sk + 32, 32);
        $pk = self::substr($sk, 32, 32);

        # sc_reduce(nonce);
        # ge_scalarmult_base(&R, nonce);
        # ge_p3_tobytes(sig, &R);
        $nonce = self::sc_reduce($nonceHash) . self::substr($nonceHash, 32);
        $sig = self::ge_p3_tobytes(
            self::ge_scalarmult_base($nonce)
        );

        # crypto_hash_sha512_init(&hs);
        # crypto_hash_sha512_update(&hs, sig, 64);
        # crypto_hash_sha512_update(&hs, m, mlen);
        # crypto_hash_sha512_final(&hs, hram);
        $hs = hash_init('sha512');
        hash_update($hs, self::substr($sig, 0, 32));
        hash_update($hs, self::substr($pk, 0, 32));
        hash_update($hs, $message);
        $hramHash = hash_final($hs, true);

        # sc_reduce(hram);
        # sc_muladd(sig + 32, hram, az, nonce);
        $hram = self::sc_reduce($hramHash);
        $sigAfter = self::sc_muladd($hram, $az, $nonce);
        $sig = self::substr($sig, 0, 32) . self::substr($sigAfter, 0, 32);

        try {
            ParagonIE_Sodium_Compat::memzero($az);
        } catch (SodiumException $ex) {
            $az = null;
        }
        return $sig;
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $sig
     * @param string $message
     * @param string $pk
     * @return bool
     * @throws SodiumException
     * @throws TypeError
     */
    public static function verify_detached($sig, $message, $pk)
    {
        if (self::strlen($sig) < 64) {
            throw new SodiumException('Signature is too short');
        }
        if ((self::chrToInt($sig[63]) & 240) && self::check_S_lt_L(self::substr($sig, 32, 32))) {
            throw new SodiumException('S < L - Invalid signature');
        }
        if (self::small_order($sig)) {
            throw new SodiumException('Signature is on too small of an order');
        }
        if ((self::chrToInt($sig[63]) & 224) !== 0) {
            throw new SodiumException('Invalid signature');
        }
        $d = 0;
        for ($i = 0; $i < 32; ++$i) {
            $d |= self::chrToInt($pk[$i]);
        }
        if ($d === 0) {
            throw new SodiumException('All zero public key');
        }

        /** @var bool The original value of ParagonIE_Sodium_Compat::$fastMult */
        $orig = ParagonIE_Sodium_Compat::$fastMult;

        // Set ParagonIE_Sodium_Compat::$fastMult to true to speed up verification.
        ParagonIE_Sodium_Compat::$fastMult = true;

        /** @var ParagonIE_Sodium_Core_Curve25519_Ge_P3 $A */
        $A = self::ge_frombytes_negate_vartime($pk);

        /** @var string $hDigest */
        $hDigest = hash(
            'sha512',
            self::substr($sig, 0, 32) .
                self::substr($pk, 0, 32) .
                $message,
            true
        );

        /** @var string $h */
        $h = self::sc_reduce($hDigest) . self::substr($hDigest, 32);

        /** @var ParagonIE_Sodium_Core_Curve25519_Ge_P2 $R */
        $R = self::ge_double_scalarmult_vartime(
            $h,
            $A,
            self::substr($sig, 32)
        );

        /** @var string $rcheck */
        $rcheck = self::ge_tobytes($R);

        // Reset ParagonIE_Sodium_Compat::$fastMult to what it was before.
        ParagonIE_Sodium_Compat::$fastMult = $orig;

        return self::verify_32($rcheck, self::substr($sig, 0, 32));
    }

    /**
     * @internal You should not use this directly from another application
     *
     * @param string $S
     * @return bool
     * @throws SodiumException
     * @throws TypeError
     */
    public static function check_S_lt_L($S)
    {
        if (self::strlen($S) < 32) {
            throw new SodiumException('Signature must be 32 bytes');
        }
        $L = array(
            0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58,
            0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14,
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10
        );
        $c = 0;
        $n = 1;
        $i = 32;

        /** @var array<int, int> $L */
        do {
            --$i;
            $x = self::chrToInt($S[$i]);
            $c |= (
                (($x - $L[$i]) >> 8) & $n
            );
            $n &= (
                (($x ^ $L[$i]) - 1) >> 8
            );
        } while ($i !== 0);

        return $c === 0;
    }

    /**
     * @param string $R
     * @return bool
     * @throws SodiumException
     * @throws TypeError
     */
    public static function small_order($R)
    {
        /** @var array<int, array<int, int>> $blocklist */
        $blocklist = array(
            /* 0 (order 4) */
            array(
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
            ),
            /* 1 (order 1) */
            array(
                0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
            ),
            /* 2707385501144840649318225287225658788936804267575313519463743609750303402022 (order 8) */
            array(
                0x26, 0xe8, 0x95, 0x8f, 0xc2, 0xb2, 0x27, 0xb0,
                0x45, 0xc3, 0xf4, 0x89, 0xf2, 0xef, 0x98, 0xf0,
                0xd5, 0xdf, 0xac, 0x05, 0xd3, 0xc6, 0x33, 0x39,
                0xb1, 0x38, 0x02, 0x88, 0x6d, 0x53, 0xfc, 0x05
            ),
            /* 55188659117513257062467267217118295137698188065244968500265048394206261417927 (order 8) */
            array(
                0xc7, 0x17, 0x6a, 0x70, 0x3d, 0x4d, 0xd8, 0x4f,
                0xba, 0x3c, 0x0b, 0x76, 0x0d, 0x10, 0x67, 0x0f,
                0x2a, 0x20, 0x53, 0xfa, 0x2c, 0x39, 0xcc, 0xc6,
                0x4e, 0xc7, 0xfd, 0x77, 0x92, 0xac, 0x03, 0x7a
            ),
            /* p-1 (order 2) */
            array(
                0x13, 0xe8, 0x95, 0x8f, 0xc2, 0xb2, 0x27, 0xb0,
                0x45, 0xc3, 0xf4, 0x89, 0xf2, 0xef, 0x98, 0xf0,
                0xd5, 0xdf, 0xac, 0x05, 0xd3, 0xc6, 0x33, 0x39,
                0xb1, 0x38, 0x02, 0x88, 0x6d, 0x53, 0xfc, 0x85
            ),
            /* p (order 4) */
            array(
                0xb4, 0x17, 0x6a, 0x70, 0x3d, 0x4d, 0xd8, 0x4f,
                0xba, 0x3c, 0x0b, 0x76, 0x0d, 0x10, 0x67, 0x0f,
                0x2a, 0x20, 0x53, 0xfa, 0x2c, 0x39, 0xcc, 0xc6,
                0x4e, 0xc7, 0xfd, 0x77, 0x92, 0xac, 0x03, 0xfa
            ),
            /* p+1 (order 1) */
            array(
                0xec, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f
            ),
            /* p+2707385501144840649318225287225658788936804267575313519463743609750303402022 (order 8) */
            array(
                0xed, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f
            ),
            /* p+55188659117513257062467267217118295137698188065244968500265048394206261417927 (order 8) */
            array(
                0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f
            ),
            /* 2p-1 (order 2) */
            array(
                0xd9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
            ),
            /* 2p (order 4) */
            array(
                0xda, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
            ),
            /* 2p+1 (order 1) */
            array(
                0xdb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
                0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
            )
        );
        /** @var int $countBlocklist */
        $countBlocklist = count($blocklist);

        for ($i = 0; $i < $countBlocklist; ++$i) {
            $c = 0;
            for ($j = 0; $j < 32; ++$j) {
                $c |= self::chrToInt($R[$j]) ^ (int) $blocklist[$i][$j];
            }
            if ($c === 0) {
                return true;
            }
        }
        return false;
    }

    /**
     * @param string $s
     * @return string
     * @throws SodiumException
     */
    public static function scalar_complement($s)
    {
        $t_ = self::L . str_repeat("\x00", 32);
        sodium_increment($t_);
        $s_ = $s . str_repeat("\x00", 32);
        ParagonIE_Sodium_Compat::sub($t_, $s_);
        return self::sc_reduce($t_);
    }

    /**
     * @return string
     * @throws SodiumException
     */
    public static function scalar_random()
    {
        do {
            $r = ParagonIE_Sodium_Compat::randombytes_buf(self::SCALAR_BYTES);
            $r[self::SCALAR_BYTES - 1] = self::intToChr(
                self::chrToInt($r[self::SCALAR_BYTES - 1]) & 0x1f
            );
        } while (
            !self::check_S_lt_L($r) || ParagonIE_Sodium_Compat::is_zero($r)
        );
        return $r;
    }

    /**
     * @param string $s
     * @return string
     * @throws SodiumException
     */
    public static function scalar_negate($s)
    {
        $t_ = self::L . str_repeat("\x00", 32) ;
        $s_ = $s . str_repeat("\x00", 32) ;
        ParagonIE_Sodium_Compat::sub($t_, $s_);
        return self::sc_reduce($t_);
    }

    /**
     * @param string $a
     * @param string $b
     * @return string
     * @throws SodiumException
     */
    public static function scalar_add($a, $b)
    {
        $a_ = $a . str_repeat("\x00", 32);
        $b_ = $b . str_repeat("\x00", 32);
        ParagonIE_Sodium_Compat::add($a_, $b_);
        return self::sc_reduce($a_);
    }

    /**
     * @param string $x
     * @param string $y
     * @return string
     * @throws SodiumException
     */
    public static function scalar_sub($x, $y)
    {
        $yn = self::scalar_negate($y);
        return self::scalar_add($x, $yn);
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core/SecretStream/State.php000064400000007143150755146460022064 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

/**
 * Class ParagonIE_Sodium_Core_SecretStream_State
 */
class ParagonIE_Sodium_Core_SecretStream_State
{
    /** @var string $key */
    protected $key;

    /** @var int $counter */
    protected $counter;

    /** @var string $nonce */
    protected $nonce;

    /** @var string $_pad */
    protected $_pad;

    /**
     * ParagonIE_Sodium_Core_SecretStream_State constructor.
     * @param string $key
     * @param string|null $nonce
     */
    public function __construct($key, $nonce = null)
    {
        $this->key = $key;
        $this->counter = 1;
        if (is_null($nonce)) {
            $nonce = str_repeat("\0", 12);
        }
        $this->nonce = str_pad($nonce, 12, "\0", STR_PAD_RIGHT);;
        $this->_pad = str_repeat("\0", 4);
    }

    /**
     * @return self
     */
    public function counterReset()
    {
        $this->counter = 1;
        $this->_pad = str_repeat("\0", 4);
        return $this;
    }

    /**
     * @return string
     */
    public function getKey()
    {
        return $this->key;
    }

    /**
     * @return string
     */
    public function getCounter()
    {
        return ParagonIE_Sodium_Core_Util::store32_le($this->counter);
    }

    /**
     * @return string
     */
    public function getNonce()
    {
        if (!is_string($this->nonce)) {
            $this->nonce = str_repeat("\0", 12);
        }
        if (ParagonIE_Sodium_Core_Util::strlen($this->nonce) !== 12) {
            $this->nonce = str_pad($this->nonce, 12, "\0", STR_PAD_RIGHT);
        }
        return $this->nonce;
    }

    /**
     * @return string
     */
    public function getCombinedNonce()
    {
        return $this->getCounter() .
            ParagonIE_Sodium_Core_Util::substr($this->getNonce(), 0, 8);
    }

    /**
     * @return self
     */
    public function incrementCounter()
    {
        ++$this->counter;
        return $this;
    }

    /**
     * @return bool
     */
    public function needsRekey()
    {
        return ($this->counter & 0xffff) === 0;
    }

    /**
     * @param string $newKeyAndNonce
     * @return self
     */
    public function rekey($newKeyAndNonce)
    {
        $this->key = ParagonIE_Sodium_Core_Util::substr($newKeyAndNonce, 0, 32);
        $this->nonce = str_pad(
            ParagonIE_Sodium_Core_Util::substr($newKeyAndNonce, 32),
            12,
            "\0",
            STR_PAD_RIGHT
        );
        return $this;
    }

    /**
     * @param string $str
     * @return self
     */
    public function xorNonce($str)
    {
        $this->nonce = ParagonIE_Sodium_Core_Util::xorStrings(
            $this->getNonce(),
            str_pad(
                ParagonIE_Sodium_Core_Util::substr($str, 0, 8),
                12,
                "\0",
                STR_PAD_RIGHT
            )
        );
        return $this;
    }

    /**
     * @param string $string
     * @return self
     */
    public static function fromString($string)
    {
        $state = new ParagonIE_Sodium_Core_SecretStream_State(
            ParagonIE_Sodium_Core_Util::substr($string, 0, 32)
        );
        $state->counter = ParagonIE_Sodium_Core_Util::load_4(
            ParagonIE_Sodium_Core_Util::substr($string, 32, 4)
        );
        $state->nonce = ParagonIE_Sodium_Core_Util::substr($string, 36, 12);
        $state->_pad = ParagonIE_Sodium_Core_Util::substr($string, 48, 8);
        return $state;
    }

    /**
     * @return string
     */
    public function toString()
    {
        return $this->key .
            $this->getCounter() .
            $this->nonce .
            $this->_pad;
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core/Ristretto255.php000064400000052667150755146460020651 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

/**
 * Class ParagonIE_Sodium_Core_Ristretto255
 */
class ParagonIE_Sodium_Core_Ristretto255 extends ParagonIE_Sodium_Core_Ed25519
{
    const crypto_core_ristretto255_HASHBYTES = 64;
    const HASH_SC_L = 48;
    const CORE_H2C_SHA256 = 1;
    const CORE_H2C_SHA512 = 2;

    /**
     * @param ParagonIE_Sodium_Core_Curve25519_Fe $f
     * @param int $b
     * @return ParagonIE_Sodium_Core_Curve25519_Fe
     */
    public static function fe_cneg(ParagonIE_Sodium_Core_Curve25519_Fe $f, $b)
    {
        $negf = self::fe_neg($f);
        return self::fe_cmov($f, $negf, $b);
    }

    /**
     * @param ParagonIE_Sodium_Core_Curve25519_Fe $f
     * @return ParagonIE_Sodium_Core_Curve25519_Fe
     * @throws SodiumException
     */
    public static function fe_abs(ParagonIE_Sodium_Core_Curve25519_Fe $f)
    {
        return self::fe_cneg($f, self::fe_isnegative($f));
    }

    /**
     * Returns 0 if this field element results in all NUL bytes.
     *
     * @internal You should not use this directly from another application
     *
     * @param ParagonIE_Sodium_Core_Curve25519_Fe $f
     * @return int
     * @throws SodiumException
     */
    public static function fe_iszero(ParagonIE_Sodium_Core_Curve25519_Fe $f)
    {
        static $zero;
        if ($zero === null) {
            $zero = str_repeat("\x00", 32);
        }
        /** @var string $zero */
        $str = self::fe_tobytes($f);

        $d = 0;
        for ($i = 0; $i < 32; ++$i) {
            $d |= self::chrToInt($str[$i]);
        }
        return (($d - 1) >> 31) & 1;
    }


    /**
     * @param ParagonIE_Sodium_Core_Curve25519_Fe $u
     * @param ParagonIE_Sodium_Core_Curve25519_Fe $v
     * @return array{x: ParagonIE_Sodium_Core_Curve25519_Fe, nonsquare: int}
     *
     * @throws SodiumException
     */
    public static function ristretto255_sqrt_ratio_m1(
        ParagonIE_Sodium_Core_Curve25519_Fe $u,
        ParagonIE_Sodium_Core_Curve25519_Fe $v
    ) {
        $sqrtm1 = ParagonIE_Sodium_Core_Curve25519_Fe::fromArray(self::$sqrtm1);

        $v3 = self::fe_mul(
            self::fe_sq($v),
            $v
        ); /* v3 = v^3 */
        $x = self::fe_mul(
            self::fe_mul(
                self::fe_sq($v3),
                $u
            ),
            $v
        ); /* x = uv^7 */

        $x = self::fe_mul(
            self::fe_mul(
                self::fe_pow22523($x), /* x = (uv^7)^((q-5)/8) */
                $v3
            ),
            $u
        ); /* x = uv^3(uv^7)^((q-5)/8) */

        $vxx = self::fe_mul(
            self::fe_sq($x),
            $v
        ); /* vx^2 */

        $m_root_check = self::fe_sub($vxx, $u); /* vx^2-u */
        $p_root_check = self::fe_add($vxx, $u); /* vx^2+u */
        $f_root_check = self::fe_mul($u, $sqrtm1); /* u*sqrt(-1) */
        $f_root_check = self::fe_add($vxx, $f_root_check); /* vx^2+u*sqrt(-1) */

        $has_m_root = self::fe_iszero($m_root_check);
        $has_p_root = self::fe_iszero($p_root_check);
        $has_f_root = self::fe_iszero($f_root_check);

        $x_sqrtm1 = self::fe_mul($x, $sqrtm1); /* x*sqrt(-1) */

        $x = self::fe_abs(
            self::fe_cmov($x, $x_sqrtm1, $has_p_root | $has_f_root)
        );
        return array(
            'x' => $x,
            'nonsquare' => $has_m_root | $has_p_root
        );
    }

    /**
     * @param string $s
     * @return int
     * @throws SodiumException
     */
    public static function ristretto255_point_is_canonical($s)
    {
        $c = (self::chrToInt($s[31]) & 0x7f) ^ 0x7f;
        for ($i = 30; $i > 0; --$i) {
            $c |= self::chrToInt($s[$i]) ^ 0xff;
        }
        $c = ($c - 1) >> 8;
        $d = (0xed - 1 - self::chrToInt($s[0])) >> 8;
        $e = self::chrToInt($s[31]) >> 7;

        return 1 - ((($c & $d) | $e | self::chrToInt($s[0])) & 1);
    }

    /**
     * @param string $s
     * @param bool $skipCanonicalCheck
     * @return array{h: ParagonIE_Sodium_Core_Curve25519_Ge_P3, res: int}
     * @throws SodiumException
     */
    public static function ristretto255_frombytes($s, $skipCanonicalCheck = false)
    {
        if (!$skipCanonicalCheck) {
            if (!self::ristretto255_point_is_canonical($s)) {
                throw new SodiumException('S is not canonical');
            }
        }

        $s_ = self::fe_frombytes($s);
        $ss = self::fe_sq($s_); /* ss = s^2 */

        $u1 = self::fe_sub(self::fe_1(), $ss); /* u1 = 1-ss */
        $u1u1 = self::fe_sq($u1); /* u1u1 = u1^2 */

        $u2 = self::fe_add(self::fe_1(), $ss); /* u2 = 1+ss */
        $u2u2 = self::fe_sq($u2); /* u2u2 = u2^2 */

        $v = self::fe_mul(
            ParagonIE_Sodium_Core_Curve25519_Fe::fromArray(self::$d),
            $u1u1
        ); /* v = d*u1^2 */
        $v = self::fe_neg($v); /* v = -d*u1^2 */
        $v = self::fe_sub($v, $u2u2); /* v = -(d*u1^2)-u2^2 */
        $v_u2u2 = self::fe_mul($v, $u2u2); /* v_u2u2 = v*u2^2 */

        // fe25519_1(one);
        // notsquare = ristretto255_sqrt_ratio_m1(inv_sqrt, one, v_u2u2);
        $one = self::fe_1();
        $result = self::ristretto255_sqrt_ratio_m1($one, $v_u2u2);
        $inv_sqrt = $result['x'];
        $notsquare = $result['nonsquare'];

        $h = new ParagonIE_Sodium_Core_Curve25519_Ge_P3();

        $h->X = self::fe_mul($inv_sqrt, $u2);
        $h->Y = self::fe_mul(self::fe_mul($inv_sqrt, $h->X), $v);

        $h->X = self::fe_mul($h->X, $s_);
        $h->X = self::fe_abs(
            self::fe_add($h->X, $h->X)
        );
        $h->Y = self::fe_mul($u1, $h->Y);
        $h->Z = self::fe_1();
        $h->T = self::fe_mul($h->X, $h->Y);

        $res = - ((1 - $notsquare) | self::fe_isnegative($h->T) | self::fe_iszero($h->Y));
        return array('h' => $h, 'res' => $res);
    }

    /**
     * @param ParagonIE_Sodium_Core_Curve25519_Ge_P3 $h
     * @return string
     * @throws SodiumException
     */
    public static function ristretto255_p3_tobytes(ParagonIE_Sodium_Core_Curve25519_Ge_P3 $h)
    {
        $sqrtm1 = ParagonIE_Sodium_Core_Curve25519_Fe::fromArray(self::$sqrtm1);
        $invsqrtamd = ParagonIE_Sodium_Core_Curve25519_Fe::fromArray(self::$invsqrtamd);

        $u1 = self::fe_add($h->Z, $h->Y); /* u1 = Z+Y */
        $zmy = self::fe_sub($h->Z, $h->Y); /* zmy = Z-Y */
        $u1 = self::fe_mul($u1, $zmy); /* u1 = (Z+Y)*(Z-Y) */
        $u2 = self::fe_mul($h->X, $h->Y); /* u2 = X*Y */

        $u1_u2u2 = self::fe_mul(self::fe_sq($u2), $u1); /* u1_u2u2 = u1*u2^2 */
        $one = self::fe_1();

        // fe25519_1(one);
        // (void) ristretto255_sqrt_ratio_m1(inv_sqrt, one, u1_u2u2);
        $result = self::ristretto255_sqrt_ratio_m1($one, $u1_u2u2);
        $inv_sqrt = $result['x'];

        $den1 = self::fe_mul($inv_sqrt, $u1); /* den1 = inv_sqrt*u1 */
        $den2 = self::fe_mul($inv_sqrt, $u2); /* den2 = inv_sqrt*u2 */
        $z_inv = self::fe_mul($h->T, self::fe_mul($den1, $den2)); /* z_inv = den1*den2*T */

        $ix = self::fe_mul($h->X, $sqrtm1); /* ix = X*sqrt(-1) */
        $iy = self::fe_mul($h->Y, $sqrtm1); /* iy = Y*sqrt(-1) */
        $eden = self::fe_mul($den1, $invsqrtamd);

        $t_z_inv =  self::fe_mul($h->T, $z_inv); /* t_z_inv = T*z_inv */
        $rotate = self::fe_isnegative($t_z_inv);

        $x_ = self::fe_copy($h->X);
        $y_ = self::fe_copy($h->Y);
        $den_inv = self::fe_copy($den2);

        $x_ = self::fe_cmov($x_, $iy, $rotate);
        $y_ = self::fe_cmov($y_, $ix, $rotate);
        $den_inv = self::fe_cmov($den_inv, $eden, $rotate);

        $x_z_inv = self::fe_mul($x_, $z_inv);
        $y_ = self::fe_cneg($y_, self::fe_isnegative($x_z_inv));


        // fe25519_sub(s_, h->Z, y_);
        // fe25519_mul(s_, den_inv, s_);
        // fe25519_abs(s_, s_);
        // fe25519_tobytes(s, s_);
        return self::fe_tobytes(
            self::fe_abs(
                self::fe_mul(
                    $den_inv,
                    self::fe_sub($h->Z, $y_)
                )
            )
        );
    }

    /**
     * @param ParagonIE_Sodium_Core_Curve25519_Fe $t
     * @return ParagonIE_Sodium_Core_Curve25519_Ge_P3
     *
     * @throws SodiumException
     */
    public static function ristretto255_elligator(ParagonIE_Sodium_Core_Curve25519_Fe $t)
    {
        $sqrtm1   = ParagonIE_Sodium_Core_Curve25519_Fe::fromArray(self::$sqrtm1);
        $onemsqd  = ParagonIE_Sodium_Core_Curve25519_Fe::fromArray(self::$onemsqd);
        $d        = ParagonIE_Sodium_Core_Curve25519_Fe::fromArray(self::$d);
        $sqdmone  = ParagonIE_Sodium_Core_Curve25519_Fe::fromArray(self::$sqdmone);
        $sqrtadm1 = ParagonIE_Sodium_Core_Curve25519_Fe::fromArray(self::$sqrtadm1);

        $one = self::fe_1();
        $r   = self::fe_mul($sqrtm1, self::fe_sq($t));         /* r = sqrt(-1)*t^2 */
        $u   = self::fe_mul(self::fe_add($r, $one), $onemsqd); /* u = (r+1)*(1-d^2) */
        $c   = self::fe_neg(self::fe_1());                     /* c = -1 */
        $rpd = self::fe_add($r, $d);                           /* rpd = r+d */

        $v = self::fe_mul(
            self::fe_sub(
                $c,
                self::fe_mul($r, $d)
            ),
            $rpd
        ); /* v = (c-r*d)*(r+d) */

        $result = self::ristretto255_sqrt_ratio_m1($u, $v);
        $s = $result['x'];
        $wasnt_square = 1 - $result['nonsquare'];

        $s_prime = self::fe_neg(
            self::fe_abs(
                self::fe_mul($s, $t)
            )
        ); /* s_prime = -|s*t| */
        $s = self::fe_cmov($s, $s_prime, $wasnt_square);
        $c = self::fe_cmov($c, $r, $wasnt_square);

        // fe25519_sub(n, r, one);            /* n = r-1 */
        // fe25519_mul(n, n, c);              /* n = c*(r-1) */
        // fe25519_mul(n, n, ed25519_sqdmone); /* n = c*(r-1)*(d-1)^2 */
        // fe25519_sub(n, n, v);              /* n =  c*(r-1)*(d-1)^2-v */
        $n = self::fe_sub(
            self::fe_mul(
                self::fe_mul(
                    self::fe_sub($r, $one),
                    $c
                ),
                $sqdmone
            ),
            $v
        ); /* n =  c*(r-1)*(d-1)^2-v */

        $w0 = self::fe_mul(
            self::fe_add($s, $s),
            $v
        ); /* w0 = 2s*v */

        $w1 = self::fe_mul($n, $sqrtadm1); /* w1 = n*sqrt(ad-1) */
        $ss = self::fe_sq($s); /* ss = s^2 */
        $w2 = self::fe_sub($one, $ss); /* w2 = 1-s^2 */
        $w3 = self::fe_add($one, $ss); /* w3 = 1+s^2 */

        return new ParagonIE_Sodium_Core_Curve25519_Ge_P3(
            self::fe_mul($w0, $w3),
            self::fe_mul($w2, $w1),
            self::fe_mul($w1, $w3),
            self::fe_mul($w0, $w2)
        );
    }

    /**
     * @param string $h
     * @return string
     * @throws SodiumException
     */
    public static function ristretto255_from_hash($h)
    {
        if (self::strlen($h) !== 64) {
            throw new SodiumException('Hash must be 64 bytes');
        }
        //fe25519_frombytes(r0, h);
        //fe25519_frombytes(r1, h + 32);
        $r0 = self::fe_frombytes(self::substr($h, 0, 32));
        $r1 = self::fe_frombytes(self::substr($h, 32, 32));

        //ristretto255_elligator(&p0, r0);
        //ristretto255_elligator(&p1, r1);
        $p0 = self::ristretto255_elligator($r0);
        $p1 = self::ristretto255_elligator($r1);

        //ge25519_p3_to_cached(&p1_cached, &p1);
        //ge25519_add_cached(&p_p1p1, &p0, &p1_cached);
        $p_p1p1 = self::ge_add(
            $p0,
            self::ge_p3_to_cached($p1)
        );

        //ge25519_p1p1_to_p3(&p, &p_p1p1);
        //ristretto255_p3_tobytes(s, &p);
        return self::ristretto255_p3_tobytes(
            self::ge_p1p1_to_p3($p_p1p1)
        );
    }

    /**
     * @param string $p
     * @return int
     * @throws SodiumException
     */
    public static function is_valid_point($p)
    {
        $result = self::ristretto255_frombytes($p);
        if ($result['res'] !== 0) {
            return 0;
        }
        return 1;
    }

    /**
     * @param string $p
     * @param string $q
     * @return string
     * @throws SodiumException
     */
    public static function ristretto255_add($p, $q)
    {
        $p_res = self::ristretto255_frombytes($p);
        $q_res = self::ristretto255_frombytes($q);
        if ($p_res['res'] !== 0 || $q_res['res'] !== 0) {
            throw new SodiumException('Could not add points');
        }
        $p_p3 = $p_res['h'];
        $q_p3 = $q_res['h'];
        $q_cached = self::ge_p3_to_cached($q_p3);
        $r_p1p1 = self::ge_add($p_p3, $q_cached);
        $r_p3 = self::ge_p1p1_to_p3($r_p1p1);
        return self::ristretto255_p3_tobytes($r_p3);
    }

    /**
     * @param string $p
     * @param string $q
     * @return string
     * @throws SodiumException
     */
    public static function ristretto255_sub($p, $q)
    {
        $p_res = self::ristretto255_frombytes($p);
        $q_res = self::ristretto255_frombytes($q);
        if ($p_res['res'] !== 0 || $q_res['res'] !== 0) {
            throw new SodiumException('Could not add points');
        }
        $p_p3 = $p_res['h'];
        $q_p3 = $q_res['h'];
        $q_cached = self::ge_p3_to_cached($q_p3);
        $r_p1p1 = self::ge_sub($p_p3, $q_cached);
        $r_p3 = self::ge_p1p1_to_p3($r_p1p1);
        return self::ristretto255_p3_tobytes($r_p3);
    }


    /**
     * @param int $hLen
     * @param ?string $ctx
     * @param string $msg
     * @return string
     * @throws SodiumException
     * @psalm-suppress PossiblyInvalidArgument hash API
     */
    protected static function h2c_string_to_hash_sha256($hLen, $ctx, $msg)
    {
        $h = array_fill(0, $hLen, 0);
        $ctx_len = !is_null($ctx) ? self::strlen($ctx) : 0;
        if ($hLen > 0xff) {
            throw new SodiumException('Hash must be less than 256 bytes');
        }

        if ($ctx_len > 0xff) {
            $st = hash_init('sha256');
            self::hash_update($st, "H2C-OVERSIZE-DST-");
            self::hash_update($st, $ctx);
            $ctx = hash_final($st, true);
            $ctx_len = 32;
        }
        $t = array(0, $hLen, 0);
        $ux = str_repeat("\0", 64);
        $st = hash_init('sha256');
        self::hash_update($st, $ux);
        self::hash_update($st, $msg);
        self::hash_update($st, self::intArrayToString($t));
        self::hash_update($st, $ctx);
        self::hash_update($st, self::intToChr($ctx_len));
        $u0 = hash_final($st, true);

        for ($i = 0; $i < $hLen; $i += 64) {
            $ux = self::xorStrings($ux, $u0);
            ++$t[2];
            $st = hash_init('sha256');
            self::hash_update($st, $ux);
            self::hash_update($st, self::intToChr($t[2]));
            self::hash_update($st, $ctx);
            self::hash_update($st, self::intToChr($ctx_len));
            $ux = hash_final($st, true);
            $amount = min($hLen - $i, 64);
            for ($j = 0; $j < $amount; ++$j) {
                $h[$i + $j] = self::chrToInt($ux[$i]);
            }
        }
        return self::intArrayToString(array_slice($h, 0, $hLen));
    }

    /**
     * @param int $hLen
     * @param ?string $ctx
     * @param string $msg
     * @return string
     * @throws SodiumException
     * @psalm-suppress PossiblyInvalidArgument hash API
     */
    protected static function h2c_string_to_hash_sha512($hLen, $ctx, $msg)
    {
        $h = array_fill(0, $hLen, 0);
        $ctx_len = !is_null($ctx) ? self::strlen($ctx) : 0;
        if ($hLen > 0xff) {
            throw new SodiumException('Hash must be less than 256 bytes');
        }

        if ($ctx_len > 0xff) {
            $st = hash_init('sha256');
            self::hash_update($st, "H2C-OVERSIZE-DST-");
            self::hash_update($st, $ctx);
            $ctx = hash_final($st, true);
            $ctx_len = 32;
        }
        $t = array(0, $hLen, 0);
        $ux = str_repeat("\0", 128);
        $st = hash_init('sha512');
        self::hash_update($st, $ux);
        self::hash_update($st, $msg);
        self::hash_update($st, self::intArrayToString($t));
        self::hash_update($st, $ctx);
        self::hash_update($st, self::intToChr($ctx_len));
        $u0 = hash_final($st, true);

        for ($i = 0; $i < $hLen; $i += 128) {
            $ux = self::xorStrings($ux, $u0);
            ++$t[2];
            $st = hash_init('sha512');
            self::hash_update($st, $ux);
            self::hash_update($st, self::intToChr($t[2]));
            self::hash_update($st, $ctx);
            self::hash_update($st, self::intToChr($ctx_len));
            $ux = hash_final($st, true);
            $amount = min($hLen - $i, 128);
            for ($j = 0; $j < $amount; ++$j) {
                $h[$i + $j] = self::chrToInt($ux[$i]);
            }
        }
        return self::intArrayToString(array_slice($h, 0, $hLen));
    }

    /**
     * @param int $hLen
     * @param ?string $ctx
     * @param string $msg
     * @param int $hash_alg
     * @return string
     * @throws SodiumException
     */
    public static function h2c_string_to_hash($hLen, $ctx, $msg, $hash_alg)
    {
        switch ($hash_alg) {
            case self::CORE_H2C_SHA256:
                return self::h2c_string_to_hash_sha256($hLen, $ctx, $msg);
            case self::CORE_H2C_SHA512:
                return self::h2c_string_to_hash_sha512($hLen, $ctx, $msg);
            default:
                throw new SodiumException('Invalid H2C hash algorithm');
        }
    }

    /**
     * @param ?string $ctx
     * @param string $msg
     * @param int $hash_alg
     * @return string
     * @throws SodiumException
     */
    protected static function _string_to_element($ctx, $msg, $hash_alg)
    {
        return self::ristretto255_from_hash(
            self::h2c_string_to_hash(self::crypto_core_ristretto255_HASHBYTES, $ctx, $msg, $hash_alg)
        );
    }

    /**
     * @return string
     * @throws SodiumException
     * @throws Exception
     */
    public static function ristretto255_random()
    {
        return self::ristretto255_from_hash(
            ParagonIE_Sodium_Compat::randombytes_buf(self::crypto_core_ristretto255_HASHBYTES)
        );
    }

    /**
     * @return string
     * @throws SodiumException
     */
    public static function ristretto255_scalar_random()
    {
        return self::scalar_random();
    }

    /**
     * @param string $s
     * @return string
     * @throws SodiumException
     */
    public static function ristretto255_scalar_complement($s)
    {
        return self::scalar_complement($s);
    }


    /**
     * @param string $s
     * @return string
     */
    public static function ristretto255_scalar_invert($s)
    {
        return self::sc25519_invert($s);
    }

    /**
     * @param string $s
     * @return string
     * @throws SodiumException
     */
    public static function ristretto255_scalar_negate($s)
    {
        return self::scalar_negate($s);
    }

    /**
     * @param string $x
     * @param string $y
     * @return string
     */
    public static function ristretto255_scalar_add($x, $y)
    {
        return self::scalar_add($x, $y);
    }

    /**
     * @param string $x
     * @param string $y
     * @return string
     */
    public static function ristretto255_scalar_sub($x, $y)
    {
        return self::scalar_sub($x, $y);
    }

    /**
     * @param string $x
     * @param string $y
     * @return string
     */
    public static function ristretto255_scalar_mul($x, $y)
    {
        return self::sc25519_mul($x, $y);
    }

    /**
     * @param string $ctx
     * @param string $msg
     * @param int $hash_alg
     * @return string
     * @throws SodiumException
     */
    public static function ristretto255_scalar_from_string($ctx, $msg, $hash_alg)
    {
        $h = array_fill(0, 64, 0);
        $h_be = self::stringToIntArray(
            self::h2c_string_to_hash(
                self::HASH_SC_L, $ctx, $msg, $hash_alg
            )
        );

        for ($i = 0; $i < self::HASH_SC_L; ++$i) {
            $h[$i] = $h_be[self::HASH_SC_L - 1 - $i];
        }
        return self::ristretto255_scalar_reduce(self::intArrayToString($h));
    }

    /**
     * @param string $s
     * @return string
     */
    public static function ristretto255_scalar_reduce($s)
    {
        return self::sc_reduce($s);
    }

    /**
     * @param string $n
     * @param string $p
     * @return string
     * @throws SodiumException
     */
    public static function scalarmult_ristretto255($n, $p)
    {
        if (self::strlen($n) !== 32) {
            throw new SodiumException('Scalar must be 32 bytes, ' . self::strlen($p) . ' given.');
        }
        if (self::strlen($p) !== 32) {
            throw new SodiumException('Point must be 32 bytes, ' . self::strlen($p) . ' given.');
        }
        $result = self::ristretto255_frombytes($p);
        if ($result['res'] !== 0) {
            throw new SodiumException('Could not multiply points');
        }
        $P = $result['h'];

        $t = self::stringToIntArray($n);
        $t[31] &= 0x7f;
        $Q = self::ge_scalarmult(self::intArrayToString($t), $P);
        $q = self::ristretto255_p3_tobytes($Q);
        if (ParagonIE_Sodium_Compat::is_zero($q)) {
            throw new SodiumException('An unknown error has occurred');
        }
        return $q;
    }

    /**
     * @param string $n
     * @return string
     * @throws SodiumException
     */
    public static function scalarmult_ristretto255_base($n)
    {
        $t = self::stringToIntArray($n);
        $t[31] &= 0x7f;
        $Q = self::ge_scalarmult_base(self::intArrayToString($t));
        $q = self::ristretto255_p3_tobytes($Q);
        if (ParagonIE_Sodium_Compat::is_zero($q)) {
            throw new SodiumException('An unknown error has occurred');
        }
        return $q;
    }
}
crypto/vendor/paragonie/sodium_compat/src/Core/XSalsa20.php000064400000002626150755146460017741 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_Core_XSalsa20', false)) {
    return;
}

/**
 * Class ParagonIE_Sodium_Core_XSalsa20
 */
abstract class ParagonIE_Sodium_Core_XSalsa20 extends ParagonIE_Sodium_Core_HSalsa20
{
    /**
     * Expand a key and nonce into an xsalsa20 keystream.
     *
     * @internal You should not use this directly from another application
     *
     * @param int $len
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function xsalsa20($len, $nonce, $key)
    {
        $ret = self::salsa20(
            $len,
            self::substr($nonce, 16, 8),
            self::hsalsa20($nonce, $key)
        );
        return $ret;
    }

    /**
     * Encrypt a string with XSalsa20. Doesn't provide integrity.
     *
     * @internal You should not use this directly from another application
     *
     * @param string $message
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    public static function xsalsa20_xor($message, $nonce, $key)
    {
        return self::xorStrings(
            $message,
            self::xsalsa20(
                self::strlen($message),
                $nonce,
                $key
            )
        );
    }
}
crypto/vendor/paragonie/sodium_compat/src/SodiumException.php000064400000000331150755146460020622 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (!class_exists('SodiumException', false)) {
    /**
     * Class SodiumException
     */
    class SodiumException extends Exception
    {

    }
}
crypto/vendor/paragonie/sodium_compat/src/File.php000064400000147574150755146460016407 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (class_exists('ParagonIE_Sodium_File', false)) {
    return;
}
/**
 * Class ParagonIE_Sodium_File
 */
class ParagonIE_Sodium_File extends ParagonIE_Sodium_Core_Util
{
    /* PHP's default buffer size is 8192 for fread()/fwrite(). */
    const BUFFER_SIZE = 8192;

    /**
     * Box a file (rather than a string). Uses less memory than
     * ParagonIE_Sodium_Compat::crypto_box(), but produces
     * the same result.
     *
     * @param string $inputFile  Absolute path to a file on the filesystem
     * @param string $outputFile Absolute path to a file on the filesystem
     * @param string $nonce      Number to be used only once
     * @param string $keyPair    ECDH secret key and ECDH public key concatenated
     *
     * @return bool
     * @throws SodiumException
     * @throws TypeError
     */
    public static function box($inputFile, $outputFile, $nonce, $keyPair)
    {
        /* Type checks: */
        if (!is_string($inputFile)) {
            throw new TypeError('Argument 1 must be a string, ' . gettype($inputFile) . ' given.');
        }
        if (!is_string($outputFile)) {
            throw new TypeError('Argument 2 must be a string, ' . gettype($outputFile) . ' given.');
        }
        if (!is_string($nonce)) {
            throw new TypeError('Argument 3 must be a string, ' . gettype($nonce) . ' given.');
        }

        /* Input validation: */
        if (!is_string($keyPair)) {
            throw new TypeError('Argument 4 must be a string, ' . gettype($keyPair) . ' given.');
        }
        if (self::strlen($nonce) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_NONCEBYTES) {
            throw new TypeError('Argument 3 must be CRYPTO_BOX_NONCEBYTES bytes');
        }
        if (self::strlen($keyPair) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_KEYPAIRBYTES) {
            throw new TypeError('Argument 4 must be CRYPTO_BOX_KEYPAIRBYTES bytes');
        }

        /** @var int $size */
        $size = filesize($inputFile);
        if (!is_int($size)) {
            throw new SodiumException('Could not obtain the file size');
        }

        /** @var resource $ifp */
        $ifp = fopen($inputFile, 'rb');
        if (!is_resource($ifp)) {
            throw new SodiumException('Could not open input file for reading');
        }

        /** @var resource $ofp */
        $ofp = fopen($outputFile, 'wb');
        if (!is_resource($ofp)) {
            fclose($ifp);
            throw new SodiumException('Could not open output file for writing');
        }

        $res = self::box_encrypt($ifp, $ofp, $size, $nonce, $keyPair);
        fclose($ifp);
        fclose($ofp);
        return $res;
    }

    /**
     * Open a boxed file (rather than a string). Uses less memory than
     * ParagonIE_Sodium_Compat::crypto_box_open(), but produces
     * the same result.
     *
     * Warning: Does not protect against TOCTOU attacks. You should
     * just load the file into memory and use crypto_box_open() if
     * you are worried about those.
     *
     * @param string $inputFile
     * @param string $outputFile
     * @param string $nonce
     * @param string $keypair
     * @return bool
     * @throws SodiumException
     * @throws TypeError
     */
    public static function box_open($inputFile, $outputFile, $nonce, $keypair)
    {
        /* Type checks: */
        if (!is_string($inputFile)) {
            throw new TypeError('Argument 1 must be a string, ' . gettype($inputFile) . ' given.');
        }
        if (!is_string($outputFile)) {
            throw new TypeError('Argument 2 must be a string, ' . gettype($outputFile) . ' given.');
        }
        if (!is_string($nonce)) {
            throw new TypeError('Argument 3 must be a string, ' . gettype($nonce) . ' given.');
        }
        if (!is_string($keypair)) {
            throw new TypeError('Argument 4 must be a string, ' . gettype($keypair) . ' given.');
        }

        /* Input validation: */
        if (self::strlen($nonce) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_NONCEBYTES) {
            throw new TypeError('Argument 4 must be CRYPTO_BOX_NONCEBYTES bytes');
        }
        if (self::strlen($keypair) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_KEYPAIRBYTES) {
            throw new TypeError('Argument 4 must be CRYPTO_BOX_KEYPAIRBYTES bytes');
        }

        /** @var int $size */
        $size = filesize($inputFile);
        if (!is_int($size)) {
            throw new SodiumException('Could not obtain the file size');
        }

        /** @var resource $ifp */
        $ifp = fopen($inputFile, 'rb');
        if (!is_resource($ifp)) {
            throw new SodiumException('Could not open input file for reading');
        }

        /** @var resource $ofp */
        $ofp = fopen($outputFile, 'wb');
        if (!is_resource($ofp)) {
            fclose($ifp);
            throw new SodiumException('Could not open output file for writing');
        }

        $res = self::box_decrypt($ifp, $ofp, $size, $nonce, $keypair);
        fclose($ifp);
        fclose($ofp);
        try {
            ParagonIE_Sodium_Compat::memzero($nonce);
            ParagonIE_Sodium_Compat::memzero($ephKeypair);
        } catch (SodiumException $ex) {
            if (isset($ephKeypair)) {
                unset($ephKeypair);
            }
        }
        return $res;
    }

    /**
     * Seal a file (rather than a string). Uses less memory than
     * ParagonIE_Sodium_Compat::crypto_box_seal(), but produces
     * the same result.
     *
     * @param string $inputFile  Absolute path to a file on the filesystem
     * @param string $outputFile Absolute path to a file on the filesystem
     * @param string $publicKey  ECDH public key
     *
     * @return bool
     * @throws SodiumException
     * @throws TypeError
     */
    public static function box_seal($inputFile, $outputFile, $publicKey)
    {
        /* Type checks: */
        if (!is_string($inputFile)) {
            throw new TypeError('Argument 1 must be a string, ' . gettype($inputFile) . ' given.');
        }
        if (!is_string($outputFile)) {
            throw new TypeError('Argument 2 must be a string, ' . gettype($outputFile) . ' given.');
        }
        if (!is_string($publicKey)) {
            throw new TypeError('Argument 3 must be a string, ' . gettype($publicKey) . ' given.');
        }

        /* Input validation: */
        if (self::strlen($publicKey) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_PUBLICKEYBYTES) {
            throw new TypeError('Argument 3 must be CRYPTO_BOX_PUBLICKEYBYTES bytes');
        }

        /** @var int $size */
        $size = filesize($inputFile);
        if (!is_int($size)) {
            throw new SodiumException('Could not obtain the file size');
        }

        /** @var resource $ifp */
        $ifp = fopen($inputFile, 'rb');
        if (!is_resource($ifp)) {
            throw new SodiumException('Could not open input file for reading');
        }

        /** @var resource $ofp */
        $ofp = fopen($outputFile, 'wb');
        if (!is_resource($ofp)) {
            fclose($ifp);
            throw new SodiumException('Could not open output file for writing');
        }

        /** @var string $ephKeypair */
        $ephKeypair = ParagonIE_Sodium_Compat::crypto_box_keypair();

        /** @var string $msgKeypair */
        $msgKeypair = ParagonIE_Sodium_Compat::crypto_box_keypair_from_secretkey_and_publickey(
            ParagonIE_Sodium_Compat::crypto_box_secretkey($ephKeypair),
            $publicKey
        );

        /** @var string $ephemeralPK */
        $ephemeralPK = ParagonIE_Sodium_Compat::crypto_box_publickey($ephKeypair);

        /** @var string $nonce */
        $nonce = ParagonIE_Sodium_Compat::crypto_generichash(
            $ephemeralPK . $publicKey,
            '',
            24
        );

        /** @var int $firstWrite */
        $firstWrite = fwrite(
            $ofp,
            $ephemeralPK,
            ParagonIE_Sodium_Compat::CRYPTO_BOX_PUBLICKEYBYTES
        );
        if (!is_int($firstWrite)) {
            fclose($ifp);
            fclose($ofp);
            ParagonIE_Sodium_Compat::memzero($ephKeypair);
            throw new SodiumException('Could not write to output file');
        }
        if ($firstWrite !== ParagonIE_Sodium_Compat::CRYPTO_BOX_PUBLICKEYBYTES) {
            ParagonIE_Sodium_Compat::memzero($ephKeypair);
            fclose($ifp);
            fclose($ofp);
            throw new SodiumException('Error writing public key to output file');
        }

        $res = self::box_encrypt($ifp, $ofp, $size, $nonce, $msgKeypair);
        fclose($ifp);
        fclose($ofp);
        try {
            ParagonIE_Sodium_Compat::memzero($nonce);
            ParagonIE_Sodium_Compat::memzero($ephKeypair);
        } catch (SodiumException $ex) {
            /** @psalm-suppress PossiblyUndefinedVariable */
            unset($ephKeypair);
        }
        return $res;
    }

    /**
     * Open a sealed file (rather than a string). Uses less memory than
     * ParagonIE_Sodium_Compat::crypto_box_seal_open(), but produces
     * the same result.
     *
     * Warning: Does not protect against TOCTOU attacks. You should
     * just load the file into memory and use crypto_box_seal_open() if
     * you are worried about those.
     *
     * @param string $inputFile
     * @param string $outputFile
     * @param string $ecdhKeypair
     * @return bool
     * @throws SodiumException
     * @throws TypeError
     */
    public static function box_seal_open($inputFile, $outputFile, $ecdhKeypair)
    {
        /* Type checks: */
        if (!is_string($inputFile)) {
            throw new TypeError('Argument 1 must be a string, ' . gettype($inputFile) . ' given.');
        }
        if (!is_string($outputFile)) {
            throw new TypeError('Argument 2 must be a string, ' . gettype($outputFile) . ' given.');
        }
        if (!is_string($ecdhKeypair)) {
            throw new TypeError('Argument 3 must be a string, ' . gettype($ecdhKeypair) . ' given.');
        }

        /* Input validation: */
        if (self::strlen($ecdhKeypair) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_KEYPAIRBYTES) {
            throw new TypeError('Argument 3 must be CRYPTO_BOX_KEYPAIRBYTES bytes');
        }

        $publicKey = ParagonIE_Sodium_Compat::crypto_box_publickey($ecdhKeypair);

        /** @var int $size */
        $size = filesize($inputFile);
        if (!is_int($size)) {
            throw new SodiumException('Could not obtain the file size');
        }

        /** @var resource $ifp */
        $ifp = fopen($inputFile, 'rb');
        if (!is_resource($ifp)) {
            throw new SodiumException('Could not open input file for reading');
        }

        /** @var resource $ofp */
        $ofp = fopen($outputFile, 'wb');
        if (!is_resource($ofp)) {
            fclose($ifp);
            throw new SodiumException('Could not open output file for writing');
        }

        $ephemeralPK = fread($ifp, ParagonIE_Sodium_Compat::CRYPTO_BOX_PUBLICKEYBYTES);
        if (!is_string($ephemeralPK)) {
            throw new SodiumException('Could not read input file');
        }
        if (self::strlen($ephemeralPK) !== ParagonIE_Sodium_Compat::CRYPTO_BOX_PUBLICKEYBYTES) {
            fclose($ifp);
            fclose($ofp);
            throw new SodiumException('Could not read public key from sealed file');
        }

        $nonce = ParagonIE_Sodium_Compat::crypto_generichash(
            $ephemeralPK . $publicKey,
            '',
            24
        );
        $msgKeypair = ParagonIE_Sodium_Compat::crypto_box_keypair_from_secretkey_and_publickey(
            ParagonIE_Sodium_Compat::crypto_box_secretkey($ecdhKeypair),
            $ephemeralPK
        );

        $res = self::box_decrypt($ifp, $ofp, $size, $nonce, $msgKeypair);
        fclose($ifp);
        fclose($ofp);
        try {
            ParagonIE_Sodium_Compat::memzero($nonce);
            ParagonIE_Sodium_Compat::memzero($ephKeypair);
        } catch (SodiumException $ex) {
            if (isset($ephKeypair)) {
                unset($ephKeypair);
            }
        }
        return $res;
    }

    /**
     * Calculate the BLAKE2b hash of a file.
     *
     * @param string      $filePath     Absolute path to a file on the filesystem
     * @param string|null $key          BLAKE2b key
     * @param int         $outputLength Length of hash output
     *
     * @return string                   BLAKE2b hash
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress FailedTypeResolution
     */
    public static function generichash($filePath, $key = '', $outputLength = 32)
    {
        /* Type checks: */
        if (!is_string($filePath)) {
            throw new TypeError('Argument 1 must be a string, ' . gettype($filePath) . ' given.');
        }
        if (!is_string($key)) {
            if (is_null($key)) {
                $key = '';
            } else {
                throw new TypeError('Argument 2 must be a string, ' . gettype($key) . ' given.');
            }
        }
        if (!is_int($outputLength)) {
            if (!is_numeric($outputLength)) {
                throw new TypeError('Argument 3 must be an integer, ' . gettype($outputLength) . ' given.');
            }
            $outputLength = (int) $outputLength;
        }

        /* Input validation: */
        if (!empty($key)) {
            if (self::strlen($key) < ParagonIE_Sodium_Compat::CRYPTO_GENERICHASH_KEYBYTES_MIN) {
                throw new TypeError('Argument 2 must be at least CRYPTO_GENERICHASH_KEYBYTES_MIN bytes');
            }
            if (self::strlen($key) > ParagonIE_Sodium_Compat::CRYPTO_GENERICHASH_KEYBYTES_MAX) {
                throw new TypeError('Argument 2 must be at most CRYPTO_GENERICHASH_KEYBYTES_MAX bytes');
            }
        }
        if ($outputLength < ParagonIE_Sodium_Compat::CRYPTO_GENERICHASH_BYTES_MIN) {
            throw new SodiumException('Argument 3 must be at least CRYPTO_GENERICHASH_BYTES_MIN');
        }
        if ($outputLength > ParagonIE_Sodium_Compat::CRYPTO_GENERICHASH_BYTES_MAX) {
            throw new SodiumException('Argument 3 must be at least CRYPTO_GENERICHASH_BYTES_MAX');
        }

        /** @var int $size */
        $size = filesize($filePath);
        if (!is_int($size)) {
            throw new SodiumException('Could not obtain the file size');
        }

        /** @var resource $fp */
        $fp = fopen($filePath, 'rb');
        if (!is_resource($fp)) {
            throw new SodiumException('Could not open input file for reading');
        }
        $ctx = ParagonIE_Sodium_Compat::crypto_generichash_init($key, $outputLength);
        while ($size > 0) {
            $blockSize = $size > 64
                ? 64
                : $size;
            $read = fread($fp, $blockSize);
            if (!is_string($read)) {
                throw new SodiumException('Could not read input file');
            }
            ParagonIE_Sodium_Compat::crypto_generichash_update($ctx, $read);
            $size -= $blockSize;
        }

        fclose($fp);
        return ParagonIE_Sodium_Compat::crypto_generichash_final($ctx, $outputLength);
    }

    /**
     * Encrypt a file (rather than a string). Uses less memory than
     * ParagonIE_Sodium_Compat::crypto_secretbox(), but produces
     * the same result.
     *
     * @param string $inputFile  Absolute path to a file on the filesystem
     * @param string $outputFile Absolute path to a file on the filesystem
     * @param string $nonce      Number to be used only once
     * @param string $key        Encryption key
     *
     * @return bool
     * @throws SodiumException
     * @throws TypeError
     */
    public static function secretbox($inputFile, $outputFile, $nonce, $key)
    {
        /* Type checks: */
        if (!is_string($inputFile)) {
            throw new TypeError('Argument 1 must be a string, ' . gettype($inputFile) . ' given..');
        }
        if (!is_string($outputFile)) {
            throw new TypeError('Argument 2 must be a string, ' . gettype($outputFile) . ' given.');
        }
        if (!is_string($nonce)) {
            throw new TypeError('Argument 3 must be a string, ' . gettype($nonce) . ' given.');
        }

        /* Input validation: */
        if (self::strlen($nonce) !== ParagonIE_Sodium_Compat::CRYPTO_SECRETBOX_NONCEBYTES) {
            throw new TypeError('Argument 3 must be CRYPTO_SECRETBOX_NONCEBYTES bytes');
        }
        if (!is_string($key)) {
            throw new TypeError('Argument 4 must be a string, ' . gettype($key) . ' given.');
        }
        if (self::strlen($key) !== ParagonIE_Sodium_Compat::CRYPTO_SECRETBOX_KEYBYTES) {
            throw new TypeError('Argument 4 must be CRYPTO_SECRETBOX_KEYBYTES bytes');
        }

        /** @var int $size */
        $size = filesize($inputFile);
        if (!is_int($size)) {
            throw new SodiumException('Could not obtain the file size');
        }

        /** @var resource $ifp */
        $ifp = fopen($inputFile, 'rb');
        if (!is_resource($ifp)) {
            throw new SodiumException('Could not open input file for reading');
        }

        /** @var resource $ofp */
        $ofp = fopen($outputFile, 'wb');
        if (!is_resource($ofp)) {
            fclose($ifp);
            throw new SodiumException('Could not open output file for writing');
        }

        $res = self::secretbox_encrypt($ifp, $ofp, $size, $nonce, $key);
        fclose($ifp);
        fclose($ofp);
        return $res;
    }
    /**
     * Seal a file (rather than a string). Uses less memory than
     * ParagonIE_Sodium_Compat::crypto_secretbox_open(), but produces
     * the same result.
     *
     * Warning: Does not protect against TOCTOU attacks. You should
     * just load the file into memory and use crypto_secretbox_open() if
     * you are worried about those.
     *
     * @param string $inputFile
     * @param string $outputFile
     * @param string $nonce
     * @param string $key
     * @return bool
     * @throws SodiumException
     * @throws TypeError
     */
    public static function secretbox_open($inputFile, $outputFile, $nonce, $key)
    {
        /* Type checks: */
        if (!is_string($inputFile)) {
            throw new TypeError('Argument 1 must be a string, ' . gettype($inputFile) . ' given.');
        }
        if (!is_string($outputFile)) {
            throw new TypeError('Argument 2 must be a string, ' . gettype($outputFile) . ' given.');
        }
        if (!is_string($nonce)) {
            throw new TypeError('Argument 3 must be a string, ' . gettype($nonce) . ' given.');
        }
        if (!is_string($key)) {
            throw new TypeError('Argument 4 must be a string, ' . gettype($key) . ' given.');
        }

        /* Input validation: */
        if (self::strlen($nonce) !== ParagonIE_Sodium_Compat::CRYPTO_SECRETBOX_NONCEBYTES) {
            throw new TypeError('Argument 4 must be CRYPTO_SECRETBOX_NONCEBYTES bytes');
        }
        if (self::strlen($key) !== ParagonIE_Sodium_Compat::CRYPTO_SECRETBOX_KEYBYTES) {
            throw new TypeError('Argument 4 must be CRYPTO_SECRETBOXBOX_KEYBYTES bytes');
        }

        /** @var int $size */
        $size = filesize($inputFile);
        if (!is_int($size)) {
            throw new SodiumException('Could not obtain the file size');
        }

        /** @var resource $ifp */
        $ifp = fopen($inputFile, 'rb');
        if (!is_resource($ifp)) {
            throw new SodiumException('Could not open input file for reading');
        }

        /** @var resource $ofp */
        $ofp = fopen($outputFile, 'wb');
        if (!is_resource($ofp)) {
            fclose($ifp);
            throw new SodiumException('Could not open output file for writing');
        }

        $res = self::secretbox_decrypt($ifp, $ofp, $size, $nonce, $key);
        fclose($ifp);
        fclose($ofp);
        try {
            ParagonIE_Sodium_Compat::memzero($key);
        } catch (SodiumException $ex) {
            /** @psalm-suppress PossiblyUndefinedVariable */
            unset($key);
        }
        return $res;
    }

    /**
     * Sign a file (rather than a string). Uses less memory than
     * ParagonIE_Sodium_Compat::crypto_sign_detached(), but produces
     * the same result.
     *
     * @param string $filePath  Absolute path to a file on the filesystem
     * @param string $secretKey Secret signing key
     *
     * @return string           Ed25519 signature
     * @throws SodiumException
     * @throws TypeError
     */
    public static function sign($filePath, $secretKey)
    {
        /* Type checks: */
        if (!is_string($filePath)) {
            throw new TypeError('Argument 1 must be a string, ' . gettype($filePath) . ' given.');
        }
        if (!is_string($secretKey)) {
            throw new TypeError('Argument 2 must be a string, ' . gettype($secretKey) . ' given.');
        }

        /* Input validation: */
        if (self::strlen($secretKey) !== ParagonIE_Sodium_Compat::CRYPTO_SIGN_SECRETKEYBYTES) {
            throw new TypeError('Argument 2 must be CRYPTO_SIGN_SECRETKEYBYTES bytes');
        }
        if (PHP_INT_SIZE === 4) {
            return self::sign_core32($filePath, $secretKey);
        }

        /** @var int $size */
        $size = filesize($filePath);
        if (!is_int($size)) {
            throw new SodiumException('Could not obtain the file size');
        }

        /** @var resource $fp */
        $fp = fopen($filePath, 'rb');
        if (!is_resource($fp)) {
            throw new SodiumException('Could not open input file for reading');
        }

        /** @var string $az */
        $az = hash('sha512', self::substr($secretKey, 0, 32), true);

        $az[0] = self::intToChr(self::chrToInt($az[0]) & 248);
        $az[31] = self::intToChr((self::chrToInt($az[31]) & 63) | 64);

        $hs = hash_init('sha512');
        self::hash_update($hs, self::substr($az, 32, 32));
        /** @var resource $hs */
        $hs = self::updateHashWithFile($hs, $fp, $size);

        /** @var string $nonceHash */
        $nonceHash = hash_final($hs, true);

        /** @var string $pk */
        $pk = self::substr($secretKey, 32, 32);

        /** @var string $nonce */
        $nonce = ParagonIE_Sodium_Core_Ed25519::sc_reduce($nonceHash) . self::substr($nonceHash, 32);

        /** @var string $sig */
        $sig = ParagonIE_Sodium_Core_Ed25519::ge_p3_tobytes(
            ParagonIE_Sodium_Core_Ed25519::ge_scalarmult_base($nonce)
        );

        $hs = hash_init('sha512');
        self::hash_update($hs, self::substr($sig, 0, 32));
        self::hash_update($hs, self::substr($pk, 0, 32));
        /** @var resource $hs */
        $hs = self::updateHashWithFile($hs, $fp, $size);

        /** @var string $hramHash */
        $hramHash = hash_final($hs, true);

        /** @var string $hram */
        $hram = ParagonIE_Sodium_Core_Ed25519::sc_reduce($hramHash);

        /** @var string $sigAfter */
        $sigAfter = ParagonIE_Sodium_Core_Ed25519::sc_muladd($hram, $az, $nonce);

        /** @var string $sig */
        $sig = self::substr($sig, 0, 32) . self::substr($sigAfter, 0, 32);

        try {
            ParagonIE_Sodium_Compat::memzero($az);
        } catch (SodiumException $ex) {
            $az = null;
        }
        fclose($fp);
        return $sig;
    }

    /**
     * Verify a file (rather than a string). Uses less memory than
     * ParagonIE_Sodium_Compat::crypto_sign_verify_detached(), but
     * produces the same result.
     *
     * @param string $sig       Ed25519 signature
     * @param string $filePath  Absolute path to a file on the filesystem
     * @param string $publicKey Signing public key
     *
     * @return bool
     * @throws SodiumException
     * @throws TypeError
     * @throws Exception
     */
    public static function verify($sig, $filePath, $publicKey)
    {
        /* Type checks: */
        if (!is_string($sig)) {
            throw new TypeError('Argument 1 must be a string, ' . gettype($sig) . ' given.');
        }
        if (!is_string($filePath)) {
            throw new TypeError('Argument 2 must be a string, ' . gettype($filePath) . ' given.');
        }
        if (!is_string($publicKey)) {
            throw new TypeError('Argument 3 must be a string, ' . gettype($publicKey) . ' given.');
        }

        /* Input validation: */
        if (self::strlen($sig) !== ParagonIE_Sodium_Compat::CRYPTO_SIGN_BYTES) {
            throw new TypeError('Argument 1 must be CRYPTO_SIGN_BYTES bytes');
        }
        if (self::strlen($publicKey) !== ParagonIE_Sodium_Compat::CRYPTO_SIGN_PUBLICKEYBYTES) {
            throw new TypeError('Argument 3 must be CRYPTO_SIGN_PUBLICKEYBYTES bytes');
        }
        if (self::strlen($sig) < 64) {
            throw new SodiumException('Signature is too short');
        }

        if (PHP_INT_SIZE === 4) {
            return self::verify_core32($sig, $filePath, $publicKey);
        }

        /* Security checks */
        if (
            (ParagonIE_Sodium_Core_Ed25519::chrToInt($sig[63]) & 240)
                &&
            ParagonIE_Sodium_Core_Ed25519::check_S_lt_L(self::substr($sig, 32, 32))
        ) {
            throw new SodiumException('S < L - Invalid signature');
        }
        if (ParagonIE_Sodium_Core_Ed25519::small_order($sig)) {
            throw new SodiumException('Signature is on too small of an order');
        }
        if ((self::chrToInt($sig[63]) & 224) !== 0) {
            throw new SodiumException('Invalid signature');
        }
        $d = 0;
        for ($i = 0; $i < 32; ++$i) {
            $d |= self::chrToInt($publicKey[$i]);
        }
        if ($d === 0) {
            throw new SodiumException('All zero public key');
        }

        /** @var int $size */
        $size = filesize($filePath);
        if (!is_int($size)) {
            throw new SodiumException('Could not obtain the file size');
        }

        /** @var resource $fp */
        $fp = fopen($filePath, 'rb');
        if (!is_resource($fp)) {
            throw new SodiumException('Could not open input file for reading');
        }

        /** @var bool The original value of ParagonIE_Sodium_Compat::$fastMult */
        $orig = ParagonIE_Sodium_Compat::$fastMult;

        // Set ParagonIE_Sodium_Compat::$fastMult to true to speed up verification.
        ParagonIE_Sodium_Compat::$fastMult = true;

        /** @var ParagonIE_Sodium_Core_Curve25519_Ge_P3 $A */
        $A = ParagonIE_Sodium_Core_Ed25519::ge_frombytes_negate_vartime($publicKey);

        $hs = hash_init('sha512');
        self::hash_update($hs, self::substr($sig, 0, 32));
        self::hash_update($hs, self::substr($publicKey, 0, 32));
        /** @var resource $hs */
        $hs = self::updateHashWithFile($hs, $fp, $size);
        /** @var string $hDigest */
        $hDigest = hash_final($hs, true);

        /** @var string $h */
        $h = ParagonIE_Sodium_Core_Ed25519::sc_reduce($hDigest) . self::substr($hDigest, 32);

        /** @var ParagonIE_Sodium_Core_Curve25519_Ge_P2 $R */
        $R = ParagonIE_Sodium_Core_Ed25519::ge_double_scalarmult_vartime(
            $h,
            $A,
            self::substr($sig, 32)
        );

        /** @var string $rcheck */
        $rcheck = ParagonIE_Sodium_Core_Ed25519::ge_tobytes($R);

        // Close the file handle
        fclose($fp);

        // Reset ParagonIE_Sodium_Compat::$fastMult to what it was before.
        ParagonIE_Sodium_Compat::$fastMult = $orig;
        return self::verify_32($rcheck, self::substr($sig, 0, 32));
    }

    /**
     * @param resource $ifp
     * @param resource $ofp
     * @param int      $mlen
     * @param string   $nonce
     * @param string   $boxKeypair
     * @return bool
     * @throws SodiumException
     * @throws TypeError
     */
    protected static function box_encrypt($ifp, $ofp, $mlen, $nonce, $boxKeypair)
    {
        if (PHP_INT_SIZE === 4) {
            return self::secretbox_encrypt(
                $ifp,
                $ofp,
                $mlen,
                $nonce,
                ParagonIE_Sodium_Crypto32::box_beforenm(
                    ParagonIE_Sodium_Crypto32::box_secretkey($boxKeypair),
                    ParagonIE_Sodium_Crypto32::box_publickey($boxKeypair)
                )
            );
        }
        return self::secretbox_encrypt(
            $ifp,
            $ofp,
            $mlen,
            $nonce,
            ParagonIE_Sodium_Crypto::box_beforenm(
                ParagonIE_Sodium_Crypto::box_secretkey($boxKeypair),
                ParagonIE_Sodium_Crypto::box_publickey($boxKeypair)
            )
        );
    }


    /**
     * @param resource $ifp
     * @param resource $ofp
     * @param int      $mlen
     * @param string   $nonce
     * @param string   $boxKeypair
     * @return bool
     * @throws SodiumException
     * @throws TypeError
     */
    protected static function box_decrypt($ifp, $ofp, $mlen, $nonce, $boxKeypair)
    {
        if (PHP_INT_SIZE === 4) {
            return self::secretbox_decrypt(
                $ifp,
                $ofp,
                $mlen,
                $nonce,
                ParagonIE_Sodium_Crypto32::box_beforenm(
                    ParagonIE_Sodium_Crypto32::box_secretkey($boxKeypair),
                    ParagonIE_Sodium_Crypto32::box_publickey($boxKeypair)
                )
            );
        }
        return self::secretbox_decrypt(
            $ifp,
            $ofp,
            $mlen,
            $nonce,
            ParagonIE_Sodium_Crypto::box_beforenm(
                ParagonIE_Sodium_Crypto::box_secretkey($boxKeypair),
                ParagonIE_Sodium_Crypto::box_publickey($boxKeypair)
            )
        );
    }

    /**
     * Encrypt a file
     *
     * @param resource $ifp
     * @param resource $ofp
     * @param int $mlen
     * @param string $nonce
     * @param string $key
     * @return bool
     * @throws SodiumException
     * @throws TypeError
     */
    protected static function secretbox_encrypt($ifp, $ofp, $mlen, $nonce, $key)
    {
        if (PHP_INT_SIZE === 4) {
            return self::secretbox_encrypt_core32($ifp, $ofp, $mlen, $nonce, $key);
        }

        $plaintext = fread($ifp, 32);
        if (!is_string($plaintext)) {
            throw new SodiumException('Could not read input file');
        }
        $first32 = self::ftell($ifp);

        /** @var string $subkey */
        $subkey = ParagonIE_Sodium_Core_HSalsa20::hsalsa20($nonce, $key);

        /** @var string $realNonce */
        $realNonce = ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8);

        /** @var string $block0 */
        $block0 = str_repeat("\x00", 32);

        /** @var int $mlen - Length of the plaintext message */
        $mlen0 = $mlen;
        if ($mlen0 > 64 - ParagonIE_Sodium_Crypto::secretbox_xsalsa20poly1305_ZEROBYTES) {
            $mlen0 = 64 - ParagonIE_Sodium_Crypto::secretbox_xsalsa20poly1305_ZEROBYTES;
        }
        $block0 .= ParagonIE_Sodium_Core_Util::substr($plaintext, 0, $mlen0);

        /** @var string $block0 */
        $block0 = ParagonIE_Sodium_Core_Salsa20::salsa20_xor(
            $block0,
            $realNonce,
            $subkey
        );

        $state = new ParagonIE_Sodium_Core_Poly1305_State(
            ParagonIE_Sodium_Core_Util::substr(
                $block0,
                0,
                ParagonIE_Sodium_Crypto::onetimeauth_poly1305_KEYBYTES
            )
        );

        // Pre-write 16 blank bytes for the Poly1305 tag
        $start = self::ftell($ofp);
        fwrite($ofp, str_repeat("\x00", 16));

        /** @var string $c */
        $cBlock = ParagonIE_Sodium_Core_Util::substr(
            $block0,
            ParagonIE_Sodium_Crypto::secretbox_xsalsa20poly1305_ZEROBYTES
        );
        $state->update($cBlock);
        fwrite($ofp, $cBlock);
        $mlen -= 32;

        /** @var int $iter */
        $iter = 1;

        /** @var int $incr */
        $incr = self::BUFFER_SIZE >> 6;

        /*
         * Set the cursor to the end of the first half-block. All future bytes will
         * generated from salsa20_xor_ic, starting from 1 (second block).
         */
        fseek($ifp, $first32, SEEK_SET);

        while ($mlen > 0) {
            $blockSize = $mlen > self::BUFFER_SIZE
                ? self::BUFFER_SIZE
                : $mlen;
            $plaintext = fread($ifp, $blockSize);
            if (!is_string($plaintext)) {
                throw new SodiumException('Could not read input file');
            }
            $cBlock = ParagonIE_Sodium_Core_Salsa20::salsa20_xor_ic(
                $plaintext,
                $realNonce,
                $iter,
                $subkey
            );
            fwrite($ofp, $cBlock, $blockSize);
            $state->update($cBlock);

            $mlen -= $blockSize;
            $iter += $incr;
        }
        try {
            ParagonIE_Sodium_Compat::memzero($block0);
            ParagonIE_Sodium_Compat::memzero($subkey);
        } catch (SodiumException $ex) {
            $block0 = null;
            $subkey = null;
        }
        $end = self::ftell($ofp);

        /*
         * Write the Poly1305 authentication tag that provides integrity
         * over the ciphertext (encrypt-then-MAC)
         */
        fseek($ofp, $start, SEEK_SET);
        fwrite($ofp, $state->finish(), ParagonIE_Sodium_Compat::CRYPTO_SECRETBOX_MACBYTES);
        fseek($ofp, $end, SEEK_SET);
        unset($state);

        return true;
    }

    /**
     * Decrypt a file
     *
     * @param resource $ifp
     * @param resource $ofp
     * @param int $mlen
     * @param string $nonce
     * @param string $key
     * @return bool
     * @throws SodiumException
     * @throws TypeError
     */
    protected static function secretbox_decrypt($ifp, $ofp, $mlen, $nonce, $key)
    {
        if (PHP_INT_SIZE === 4) {
            return self::secretbox_decrypt_core32($ifp, $ofp, $mlen, $nonce, $key);
        }
        $tag = fread($ifp, 16);
        if (!is_string($tag)) {
            throw new SodiumException('Could not read input file');
        }

        /** @var string $subkey */
        $subkey = ParagonIE_Sodium_Core_HSalsa20::hsalsa20($nonce, $key);

        /** @var string $realNonce */
        $realNonce = ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8);

        /** @var string $block0 */
        $block0 = ParagonIE_Sodium_Core_Salsa20::salsa20(
            64,
            ParagonIE_Sodium_Core_Util::substr($nonce, 16, 8),
            $subkey
        );

        /* Verify the Poly1305 MAC -before- attempting to decrypt! */
        $state = new ParagonIE_Sodium_Core_Poly1305_State(self::substr($block0, 0, 32));
        if (!self::onetimeauth_verify($state, $ifp, $tag, $mlen)) {
            throw new SodiumException('Invalid MAC');
        }

        /*
         * Set the cursor to the end of the first half-block. All future bytes will
         * generated from salsa20_xor_ic, starting from 1 (second block).
         */
        $first32 = fread($ifp, 32);
        if (!is_string($first32)) {
            throw new SodiumException('Could not read input file');
        }
        $first32len = self::strlen($first32);
        fwrite(
            $ofp,
            self::xorStrings(
                self::substr($block0, 32, $first32len),
                self::substr($first32, 0, $first32len)
            )
        );
        $mlen -= 32;

        /** @var int $iter */
        $iter = 1;

        /** @var int $incr */
        $incr = self::BUFFER_SIZE >> 6;

        /* Decrypts ciphertext, writes to output file. */
        while ($mlen > 0) {
            $blockSize = $mlen > self::BUFFER_SIZE
                ? self::BUFFER_SIZE
                : $mlen;
            $ciphertext = fread($ifp, $blockSize);
            if (!is_string($ciphertext)) {
                throw new SodiumException('Could not read input file');
            }
            $pBlock = ParagonIE_Sodium_Core_Salsa20::salsa20_xor_ic(
                $ciphertext,
                $realNonce,
                $iter,
                $subkey
            );
            fwrite($ofp, $pBlock, $blockSize);
            $mlen -= $blockSize;
            $iter += $incr;
        }
        return true;
    }

    /**
     * @param ParagonIE_Sodium_Core_Poly1305_State $state
     * @param resource $ifp
     * @param string $tag
     * @param int $mlen
     * @return bool
     * @throws SodiumException
     * @throws TypeError
     */
    protected static function onetimeauth_verify(
        ParagonIE_Sodium_Core_Poly1305_State $state,
        $ifp,
        $tag = '',
        $mlen = 0
    ) {
        /** @var int $pos */
        $pos = self::ftell($ifp);

        /** @var int $iter */
        $iter = 1;

        /** @var int $incr */
        $incr = self::BUFFER_SIZE >> 6;

        while ($mlen > 0) {
            $blockSize = $mlen > self::BUFFER_SIZE
                ? self::BUFFER_SIZE
                : $mlen;
            $ciphertext = fread($ifp, $blockSize);
            if (!is_string($ciphertext)) {
                throw new SodiumException('Could not read input file');
            }
            $state->update($ciphertext);
            $mlen -= $blockSize;
            $iter += $incr;
        }
        $res = ParagonIE_Sodium_Core_Util::verify_16($tag, $state->finish());

        fseek($ifp, $pos, SEEK_SET);
        return $res;
    }

    /**
     * Update a hash context with the contents of a file, without
     * loading the entire file into memory.
     *
     * @param resource|HashContext $hash
     * @param resource $fp
     * @param int $size
     * @return resource|object Resource on PHP < 7.2, HashContext object on PHP >= 7.2
     * @throws SodiumException
     * @throws TypeError
     * @psalm-suppress PossiblyInvalidArgument
     *                 PHP 7.2 changes from a resource to an object,
     *                 which causes Psalm to complain about an error.
     * @psalm-suppress TypeCoercion
     *                 Ditto.
     */
    public static function updateHashWithFile($hash, $fp, $size = 0)
    {
        /* Type checks: */
        if (PHP_VERSION_ID < 70200) {
            if (!is_resource($hash)) {
                throw new TypeError('Argument 1 must be a resource, ' . gettype($hash) . ' given.');
            }
        } else {
            if (!is_object($hash)) {
                throw new TypeError('Argument 1 must be an object (PHP 7.2+), ' . gettype($hash) . ' given.');
            }
        }

        if (!is_resource($fp)) {
            throw new TypeError('Argument 2 must be a resource, ' . gettype($fp) . ' given.');
        }
        if (!is_int($size)) {
            throw new TypeError('Argument 3 must be an integer, ' . gettype($size) . ' given.');
        }

        /** @var int $originalPosition */
        $originalPosition = self::ftell($fp);

        // Move file pointer to beginning of file
        fseek($fp, 0, SEEK_SET);
        for ($i = 0; $i < $size; $i += self::BUFFER_SIZE) {
            /** @var string|bool $message */
            $message = fread(
                $fp,
                ($size - $i) > self::BUFFER_SIZE
                    ? $size - $i
                    : self::BUFFER_SIZE
            );
            if (!is_string($message)) {
                throw new SodiumException('Unexpected error reading from file.');
            }
            /** @var string $message */
            /** @psalm-suppress InvalidArgument */
            self::hash_update($hash, $message);
        }
        // Reset file pointer's position
        fseek($fp, $originalPosition, SEEK_SET);
        return $hash;
    }

    /**
     * Sign a file (rather than a string). Uses less memory than
     * ParagonIE_Sodium_Compat::crypto_sign_detached(), but produces
     * the same result. (32-bit)
     *
     * @param string $filePath  Absolute path to a file on the filesystem
     * @param string $secretKey Secret signing key
     *
     * @return string           Ed25519 signature
     * @throws SodiumException
     * @throws TypeError
     */
    private static function sign_core32($filePath, $secretKey)
    {
        $size = filesize($filePath);
        if (!is_int($size)) {
            throw new SodiumException('Could not obtain the file size');
        }

        $fp = fopen($filePath, 'rb');
        if (!is_resource($fp)) {
            throw new SodiumException('Could not open input file for reading');
        }

        /** @var string $az */
        $az = hash('sha512', self::substr($secretKey, 0, 32), true);

        $az[0] = self::intToChr(self::chrToInt($az[0]) & 248);
        $az[31] = self::intToChr((self::chrToInt($az[31]) & 63) | 64);

        $hs = hash_init('sha512');
        self::hash_update($hs, self::substr($az, 32, 32));
        /** @var resource $hs */
        $hs = self::updateHashWithFile($hs, $fp, $size);

        $nonceHash = hash_final($hs, true);
        $pk = self::substr($secretKey, 32, 32);
        $nonce = ParagonIE_Sodium_Core32_Ed25519::sc_reduce($nonceHash) . self::substr($nonceHash, 32);
        $sig = ParagonIE_Sodium_Core32_Ed25519::ge_p3_tobytes(
            ParagonIE_Sodium_Core32_Ed25519::ge_scalarmult_base($nonce)
        );

        $hs = hash_init('sha512');
        self::hash_update($hs, self::substr($sig, 0, 32));
        self::hash_update($hs, self::substr($pk, 0, 32));
        /** @var resource $hs */
        $hs = self::updateHashWithFile($hs, $fp, $size);

        $hramHash = hash_final($hs, true);

        $hram = ParagonIE_Sodium_Core32_Ed25519::sc_reduce($hramHash);

        $sigAfter = ParagonIE_Sodium_Core32_Ed25519::sc_muladd($hram, $az, $nonce);

        /** @var string $sig */
        $sig = self::substr($sig, 0, 32) . self::substr($sigAfter, 0, 32);

        try {
            ParagonIE_Sodium_Compat::memzero($az);
        } catch (SodiumException $ex) {
            $az = null;
        }
        fclose($fp);
        return $sig;
    }

    /**
     *
     * Verify a file (rather than a string). Uses less memory than
     * ParagonIE_Sodium_Compat::crypto_sign_verify_detached(), but
     * produces the same result. (32-bit)
     *
     * @param string $sig       Ed25519 signature
     * @param string $filePath  Absolute path to a file on the filesystem
     * @param string $publicKey Signing public key
     *
     * @return bool
     * @throws SodiumException
     * @throws Exception
     */
    public static function verify_core32($sig, $filePath, $publicKey)
    {
        /* Security checks */
        if (ParagonIE_Sodium_Core32_Ed25519::check_S_lt_L(self::substr($sig, 32, 32))) {
            throw new SodiumException('S < L - Invalid signature');
        }
        if (ParagonIE_Sodium_Core32_Ed25519::small_order($sig)) {
            throw new SodiumException('Signature is on too small of an order');
        }

        if ((self::chrToInt($sig[63]) & 224) !== 0) {
            throw new SodiumException('Invalid signature');
        }
        $d = 0;
        for ($i = 0; $i < 32; ++$i) {
            $d |= self::chrToInt($publicKey[$i]);
        }
        if ($d === 0) {
            throw new SodiumException('All zero public key');
        }

        /** @var int|bool $size */
        $size = filesize($filePath);
        if (!is_int($size)) {
            throw new SodiumException('Could not obtain the file size');
        }
        /** @var int $size */

        /** @var resource|bool $fp */
        $fp = fopen($filePath, 'rb');
        if (!is_resource($fp)) {
            throw new SodiumException('Could not open input file for reading');
        }
        /** @var resource $fp */

        /** @var bool The original value of ParagonIE_Sodium_Compat::$fastMult */
        $orig = ParagonIE_Sodium_Compat::$fastMult;

        // Set ParagonIE_Sodium_Compat::$fastMult to true to speed up verification.
        ParagonIE_Sodium_Compat::$fastMult = true;

        /** @var ParagonIE_Sodium_Core32_Curve25519_Ge_P3 $A */
        $A = ParagonIE_Sodium_Core32_Ed25519::ge_frombytes_negate_vartime($publicKey);

        $hs = hash_init('sha512');
        self::hash_update($hs, self::substr($sig, 0, 32));
        self::hash_update($hs, self::substr($publicKey, 0, 32));
        /** @var resource $hs */
        $hs = self::updateHashWithFile($hs, $fp, $size);
        /** @var string $hDigest */
        $hDigest = hash_final($hs, true);

        /** @var string $h */
        $h = ParagonIE_Sodium_Core32_Ed25519::sc_reduce($hDigest) . self::substr($hDigest, 32);

        /** @var ParagonIE_Sodium_Core32_Curve25519_Ge_P2 $R */
        $R = ParagonIE_Sodium_Core32_Ed25519::ge_double_scalarmult_vartime(
            $h,
            $A,
            self::substr($sig, 32)
        );

        /** @var string $rcheck */
        $rcheck = ParagonIE_Sodium_Core32_Ed25519::ge_tobytes($R);

        // Close the file handle
        fclose($fp);

        // Reset ParagonIE_Sodium_Compat::$fastMult to what it was before.
        ParagonIE_Sodium_Compat::$fastMult = $orig;
        return self::verify_32($rcheck, self::substr($sig, 0, 32));
    }

    /**
     * Encrypt a file (32-bit)
     *
     * @param resource $ifp
     * @param resource $ofp
     * @param int $mlen
     * @param string $nonce
     * @param string $key
     * @return bool
     * @throws SodiumException
     * @throws TypeError
     */
    protected static function secretbox_encrypt_core32($ifp, $ofp, $mlen, $nonce, $key)
    {
        $plaintext = fread($ifp, 32);
        if (!is_string($plaintext)) {
            throw new SodiumException('Could not read input file');
        }
        $first32 = self::ftell($ifp);

        /** @var string $subkey */
        $subkey = ParagonIE_Sodium_Core32_HSalsa20::hsalsa20($nonce, $key);

        /** @var string $realNonce */
        $realNonce = ParagonIE_Sodium_Core32_Util::substr($nonce, 16, 8);

        /** @var string $block0 */
        $block0 = str_repeat("\x00", 32);

        /** @var int $mlen - Length of the plaintext message */
        $mlen0 = $mlen;
        if ($mlen0 > 64 - ParagonIE_Sodium_Crypto::secretbox_xsalsa20poly1305_ZEROBYTES) {
            $mlen0 = 64 - ParagonIE_Sodium_Crypto::secretbox_xsalsa20poly1305_ZEROBYTES;
        }
        $block0 .= ParagonIE_Sodium_Core32_Util::substr($plaintext, 0, $mlen0);

        /** @var string $block0 */
        $block0 = ParagonIE_Sodium_Core32_Salsa20::salsa20_xor(
            $block0,
            $realNonce,
            $subkey
        );

        $state = new ParagonIE_Sodium_Core32_Poly1305_State(
            ParagonIE_Sodium_Core32_Util::substr(
                $block0,
                0,
                ParagonIE_Sodium_Crypto::onetimeauth_poly1305_KEYBYTES
            )
        );

        // Pre-write 16 blank bytes for the Poly1305 tag
        $start = self::ftell($ofp);
        fwrite($ofp, str_repeat("\x00", 16));

        /** @var string $c */
        $cBlock = ParagonIE_Sodium_Core32_Util::substr(
            $block0,
            ParagonIE_Sodium_Crypto::secretbox_xsalsa20poly1305_ZEROBYTES
        );
        $state->update($cBlock);
        fwrite($ofp, $cBlock);
        $mlen -= 32;

        /** @var int $iter */
        $iter = 1;

        /** @var int $incr */
        $incr = self::BUFFER_SIZE >> 6;

        /*
         * Set the cursor to the end of the first half-block. All future bytes will
         * generated from salsa20_xor_ic, starting from 1 (second block).
         */
        fseek($ifp, $first32, SEEK_SET);

        while ($mlen > 0) {
            $blockSize = $mlen > self::BUFFER_SIZE
                ? self::BUFFER_SIZE
                : $mlen;
            $plaintext = fread($ifp, $blockSize);
            if (!is_string($plaintext)) {
                throw new SodiumException('Could not read input file');
            }
            $cBlock = ParagonIE_Sodium_Core32_Salsa20::salsa20_xor_ic(
                $plaintext,
                $realNonce,
                $iter,
                $subkey
            );
            fwrite($ofp, $cBlock, $blockSize);
            $state->update($cBlock);

            $mlen -= $blockSize;
            $iter += $incr;
        }
        try {
            ParagonIE_Sodium_Compat::memzero($block0);
            ParagonIE_Sodium_Compat::memzero($subkey);
        } catch (SodiumException $ex) {
            $block0 = null;
            $subkey = null;
        }
        $end = self::ftell($ofp);

        /*
         * Write the Poly1305 authentication tag that provides integrity
         * over the ciphertext (encrypt-then-MAC)
         */
        fseek($ofp, $start, SEEK_SET);
        fwrite($ofp, $state->finish(), ParagonIE_Sodium_Compat::CRYPTO_SECRETBOX_MACBYTES);
        fseek($ofp, $end, SEEK_SET);
        unset($state);

        return true;
    }

    /**
     * Decrypt a file (32-bit)
     *
     * @param resource $ifp
     * @param resource $ofp
     * @param int $mlen
     * @param string $nonce
     * @param string $key
     * @return bool
     * @throws SodiumException
     * @throws TypeError
     */
    protected static function secretbox_decrypt_core32($ifp, $ofp, $mlen, $nonce, $key)
    {
        $tag = fread($ifp, 16);
        if (!is_string($tag)) {
            throw new SodiumException('Could not read input file');
        }

        /** @var string $subkey */
        $subkey = ParagonIE_Sodium_Core32_HSalsa20::hsalsa20($nonce, $key);

        /** @var string $realNonce */
        $realNonce = ParagonIE_Sodium_Core32_Util::substr($nonce, 16, 8);

        /** @var string $block0 */
        $block0 = ParagonIE_Sodium_Core32_Salsa20::salsa20(
            64,
            ParagonIE_Sodium_Core32_Util::substr($nonce, 16, 8),
            $subkey
        );

        /* Verify the Poly1305 MAC -before- attempting to decrypt! */
        $state = new ParagonIE_Sodium_Core32_Poly1305_State(self::substr($block0, 0, 32));
        if (!self::onetimeauth_verify_core32($state, $ifp, $tag, $mlen)) {
            throw new SodiumException('Invalid MAC');
        }

        /*
         * Set the cursor to the end of the first half-block. All future bytes will
         * generated from salsa20_xor_ic, starting from 1 (second block).
         */
        $first32 = fread($ifp, 32);
        if (!is_string($first32)) {
            throw new SodiumException('Could not read input file');
        }
        $first32len = self::strlen($first32);
        fwrite(
            $ofp,
            self::xorStrings(
                self::substr($block0, 32, $first32len),
                self::substr($first32, 0, $first32len)
            )
        );
        $mlen -= 32;

        /** @var int $iter */
        $iter = 1;

        /** @var int $incr */
        $incr = self::BUFFER_SIZE >> 6;

        /* Decrypts ciphertext, writes to output file. */
        while ($mlen > 0) {
            $blockSize = $mlen > self::BUFFER_SIZE
                ? self::BUFFER_SIZE
                : $mlen;
            $ciphertext = fread($ifp, $blockSize);
            if (!is_string($ciphertext)) {
                throw new SodiumException('Could not read input file');
            }
            $pBlock = ParagonIE_Sodium_Core32_Salsa20::salsa20_xor_ic(
                $ciphertext,
                $realNonce,
                $iter,
                $subkey
            );
            fwrite($ofp, $pBlock, $blockSize);
            $mlen -= $blockSize;
            $iter += $incr;
        }
        return true;
    }

    /**
     * One-time message authentication for 32-bit systems
     *
     * @param ParagonIE_Sodium_Core32_Poly1305_State $state
     * @param resource $ifp
     * @param string $tag
     * @param int $mlen
     * @return bool
     * @throws SodiumException
     * @throws TypeError
     */
    protected static function onetimeauth_verify_core32(
        ParagonIE_Sodium_Core32_Poly1305_State $state,
        $ifp,
        $tag = '',
        $mlen = 0
    ) {
        /** @var int $pos */
        $pos = self::ftell($ifp);

        while ($mlen > 0) {
            $blockSize = $mlen > self::BUFFER_SIZE
                ? self::BUFFER_SIZE
                : $mlen;
            $ciphertext = fread($ifp, $blockSize);
            if (!is_string($ciphertext)) {
                throw new SodiumException('Could not read input file');
            }
            $state->update($ciphertext);
            $mlen -= $blockSize;
        }
        $res = ParagonIE_Sodium_Core32_Util::verify_16($tag, $state->finish());

        fseek($ifp, $pos, SEEK_SET);
        return $res;
    }

    /**
     * @param resource $resource
     * @return int
     * @throws SodiumException
     */
    private static function ftell($resource)
    {
        $return = ftell($resource);
        if (!is_int($return)) {
            throw new SodiumException('ftell() returned false');
        }
        return (int) $return;
    }
}
crypto/vendor/paragonie/sodium_compat/autoload.php000064400000005542150755146460016535 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (PHP_VERSION_ID < 70000) {
    if (!is_callable('sodiumCompatAutoloader')) {
        /**
         * Sodium_Compat autoloader.
         *
         * @param string $class Class name to be autoloaded.
         *
         * @return bool         Stop autoloading?
         */
        function sodiumCompatAutoloader($class)
        {
            $namespace = 'ParagonIE_Sodium_';
            // Does the class use the namespace prefix?
            $len = strlen($namespace);
            if (strncmp($namespace, $class, $len) !== 0) {
                // no, move to the next registered autoloader
                return false;
            }

            // Get the relative class name
            $relative_class = substr($class, $len);

            // Replace the namespace prefix with the base directory, replace namespace
            // separators with directory separators in the relative class name, append
            // with .php
            $file = dirname(__FILE__) . '/src/' . str_replace('_', '/', $relative_class) . '.php';
            // if the file exists, require it
            if (file_exists($file)) {
                require_once $file;
                return true;
            }
            return false;
        }

        // Now that we have an autoloader, let's register it!
        spl_autoload_register('sodiumCompatAutoloader');
    }
} else {
    require_once dirname(__FILE__) . '/autoload-php7.php';
}

/* Explicitly, always load the Compat class: */
if (!class_exists('ParagonIE_Sodium_Compat', false)) {
    require_once dirname(__FILE__) . '/src/Compat.php';
}

if (!class_exists('SodiumException', false)) {
    require_once dirname(__FILE__) . '/src/SodiumException.php';
}
if (PHP_VERSION_ID >= 50300) {
    // Namespaces didn't exist before 5.3.0, so don't even try to use this
    // unless PHP >= 5.3.0
    require_once dirname(__FILE__) . '/lib/namespaced.php';
    require_once dirname(__FILE__) . '/lib/sodium_compat.php';
} else {
    require_once dirname(__FILE__) . '/src/PHP52/SplFixedArray.php';
}
if (PHP_VERSION_ID < 70200 || !extension_loaded('sodium')) {
    if (PHP_VERSION_ID >= 50300 && !defined('SODIUM_CRYPTO_SCALARMULT_BYTES')) {
        require_once dirname(__FILE__) . '/lib/php72compat_const.php';
    }
    if (PHP_VERSION_ID >= 70000) {
        assert(class_exists('ParagonIE_Sodium_Compat'), 'Possible filesystem/autoloader bug?');
    } else {
        assert(class_exists('ParagonIE_Sodium_Compat'));
    }
    require_once(dirname(__FILE__) . '/lib/php72compat.php');
} elseif (!function_exists('sodium_crypto_stream_xchacha20_xor')) {
    // Older versions of {PHP, ext/sodium} will not define these
    require_once(dirname(__FILE__) . '/lib/php72compat.php');
}
require_once(dirname(__FILE__) . '/lib/stream-xchacha20.php');
require_once(dirname(__FILE__) . '/lib/ristretto255.php');
crypto/vendor/paragonie/sodium_compat/namespaced/Crypto.php000064400000000221150755146460020272 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1
namespace ParagonIE\Sodium;

class Crypto extends \ParagonIE_Sodium_Crypto
{

}
crypto/vendor/paragonie/sodium_compat/namespaced/Core/Xsalsa20.php000064400000000237150755146460021306 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1
namespace ParagonIE\Sodium\Core;

class Xsalsa20 extends \ParagonIE_Sodium_Core_XSalsa20
{

}
crypto/vendor/paragonie/sodium_compat/namespaced/Core/Util.php000064400000000227150755146460020625 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1
namespace ParagonIE\Sodium\Core;

class Util extends \ParagonIE_Sodium_Core_Util
{

}
crypto/vendor/paragonie/sodium_compat/namespaced/Core/XChaCha20.php000064400000000241150755146460021305 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1
namespace ParagonIE\Sodium\Core;

class XChaCha20 extends \ParagonIE_Sodium_Core_XChaCha20
{

}
crypto/vendor/paragonie/sodium_compat/namespaced/Core/Ed25519.php000064400000000235150755146460020645 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1
namespace ParagonIE\Sodium\Core;

class Ed25519 extends \ParagonIE_Sodium_Core_Ed25519
{

}
crypto/vendor/paragonie/sodium_compat/namespaced/Core/HSalsa20.php000064400000000237150755146460021226 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1
namespace ParagonIE\Sodium\Core;

class HSalsa20 extends \ParagonIE_Sodium_Core_HSalsa20
{

}
crypto/vendor/paragonie/sodium_compat/namespaced/Core/ChaCha20.php000064400000000237150755146460021162 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1
namespace ParagonIE\Sodium\Core;

class ChaCha20 extends \ParagonIE_Sodium_Core_ChaCha20
{

}
crypto/vendor/paragonie/sodium_compat/namespaced/Core/Poly1305/State.php000064400000000253150755146460022223 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1
namespace ParagonIE\Sodium\Core\Poly1305;

class State extends \ParagonIE_Sodium_Core_Poly1305_State
{

}
crypto/vendor/paragonie/sodium_compat/namespaced/Core/Curve25519/Ge/P1p1.php000064400000000263150755146460022456 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1
namespace ParagonIE\Sodium\Core\Curve25519\Ge;

class P1p1 extends \ParagonIE_Sodium_Core_Curve25519_Ge_P1p1
{

}
crypto/vendor/paragonie/sodium_compat/namespaced/Core/Curve25519/Ge/Precomp.php000064400000000271150755146460023341 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1
namespace ParagonIE\Sodium\Core\Curve25519\Ge;

class Precomp extends \ParagonIE_Sodium_Core_Curve25519_Ge_Precomp
{

}
crypto/vendor/paragonie/sodium_compat/namespaced/Core/Curve25519/Ge/Cached.php000064400000000267150755146460023110 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1
namespace ParagonIE\Sodium\Core\Curve25519\Ge;

class Cached extends \ParagonIE_Sodium_Core_Curve25519_Ge_Cached
{

}
crypto/vendor/paragonie/sodium_compat/namespaced/Core/Curve25519/Ge/P2.php000064400000000257150755146460022221 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1
namespace ParagonIE\Sodium\Core\Curve25519\Ge;

class P2 extends \ParagonIE_Sodium_Core_Curve25519_Ge_P2
{

}
crypto/vendor/paragonie/sodium_compat/namespaced/Core/Curve25519/Ge/P3.php000064400000000257150755146460022222 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1
namespace ParagonIE\Sodium\Core\Curve25519\Ge;

class P3 extends \ParagonIE_Sodium_Core_Curve25519_Ge_P3
{

}
crypto/vendor/paragonie/sodium_compat/namespaced/Core/Curve25519/H.php000064400000000247150755146460021573 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1
namespace ParagonIE\Sodium\Core\Curve25519;

class H extends \ParagonIE_Sodium_Core_Curve25519_H
{

}
crypto/vendor/paragonie/sodium_compat/namespaced/Core/Curve25519/Fe.php000064400000000251150755146460021731 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1
namespace ParagonIE\Sodium\Core\Curve25519;

class Fe extends \ParagonIE_Sodium_Core_Curve25519_Fe
{

}
crypto/vendor/paragonie/sodium_compat/namespaced/Core/SipHash.php000064400000000235150755146460021246 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1
namespace ParagonIE\Sodium\Core;

class SipHash extends \ParagonIE_Sodium_Core_SipHash
{

}
crypto/vendor/paragonie/sodium_compat/namespaced/Core/ChaCha20/IetfCtx.php000064400000000257150755146460022532 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1
namespace ParagonIE\Sodium\Core\ChaCha20;

class IetfCtx extends \ParagonIE_Sodium_Core_ChaCha20_IetfCtx
{

}
crypto/vendor/paragonie/sodium_compat/namespaced/Core/ChaCha20/Ctx.php000064400000000247150755146460021721 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1
namespace ParagonIE\Sodium\Core\ChaCha20;

class Ctx extends \ParagonIE_Sodium_Core_ChaCha20_Ctx
{

}
crypto/vendor/paragonie/sodium_compat/namespaced/Core/X25519.php000064400000000233150755146460020522 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1
namespace ParagonIE\Sodium\Core;

class X25519 extends \ParagonIE_Sodium_Core_X25519
{

}
crypto/vendor/paragonie/sodium_compat/namespaced/Core/Curve25519.php000064400000000243150755146460021400 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1
namespace ParagonIE\Sodium\Core;

class Curve25519 extends \ParagonIE_Sodium_Core_Curve25519
{

}
crypto/vendor/paragonie/sodium_compat/namespaced/Core/BLAKE2b.php000064400000000235150755146460020751 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1
namespace ParagonIE\Sodium\Core;

class BLAKE2b extends \ParagonIE_Sodium_Core_BLAKE2b
{

}
crypto/vendor/paragonie/sodium_compat/namespaced/Core/Poly1305.php000064400000000237150755146460021145 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1
namespace ParagonIE\Sodium\Core;

class Poly1305 extends \ParagonIE_Sodium_Core_Poly1305
{

}
crypto/vendor/paragonie/sodium_compat/namespaced/Core/Salsa20.php000064400000000235150755146460021114 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1
namespace ParagonIE\Sodium\Core;

class Salsa20 extends \ParagonIE_Sodium_Core_Salsa20
{

}
crypto/vendor/paragonie/sodium_compat/namespaced/Core/HChaCha20.php000064400000000241150755146460021265 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1
namespace ParagonIE\Sodium\Core;

class HChaCha20 extends \ParagonIE_Sodium_Core_HChaCha20
{

}
crypto/vendor/paragonie/sodium_compat/namespaced/Compat.php000064400000000221150755146460020235 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1
namespace ParagonIE\Sodium;

class Compat extends \ParagonIE_Sodium_Compat
{

}
crypto/vendor/paragonie/sodium_compat/namespaced/File.php000064400000000215150755146460017674 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1
namespace ParagonIE\Sodium;

class File extends \ParagonIE_Sodium_File
{

}
crypto/vendor/paragonie/sodium_compat/lib/stream-xchacha20.php000064400000003545150755146460020526 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (!is_callable('sodium_crypto_stream_xchacha20')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_stream_xchacha20()
     * @param int $len
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_stream_xchacha20($len, $nonce, $key)
    {
        return ParagonIE_Sodium_Compat::crypto_stream_xchacha20($len, $nonce, $key, true);
    }
}
if (!is_callable('sodium_crypto_stream_xchacha20_keygen')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_stream_xchacha20_keygen()
     * @return string
     * @throws Exception
     */
    function sodium_crypto_stream_xchacha20_keygen()
    {
        return ParagonIE_Sodium_Compat::crypto_stream_xchacha20_keygen();
    }
}
if (!is_callable('sodium_crypto_stream_xchacha20_xor')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_stream_xchacha20_xor()
     * @param string $message
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_stream_xchacha20_xor($message, $nonce, $key)
    {
        return ParagonIE_Sodium_Compat::crypto_stream_xchacha20_xor($message, $nonce, $key, true);
    }
}
if (!is_callable('sodium_crypto_stream_xchacha20_xor_ic')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_stream_xchacha20_xor_ic()
     * @param string $message
     * @param string $nonce
     * @param int $counter
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_stream_xchacha20_xor_ic($message, $nonce, $counter, $key)
    {
        return ParagonIE_Sodium_Compat::crypto_stream_xchacha20_xor_ic($message, $nonce, $counter, $key, true);
    }
}
crypto/vendor/paragonie/sodium_compat/lib/ristretto255.php000064400000016145150755146460017767 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

if (!defined('SODIUM_CRYPTO_CORE_RISTRETTO255_BYTES')) {
    define(
        'SODIUM_CRYPTO_CORE_RISTRETTO255_BYTES',
        ParagonIE_Sodium_Compat::CRYPTO_CORE_RISTRETTO255_BYTES
    );
    define('SODIUM_COMPAT_POLYFILLED_RISTRETTO255', true);
}
if (!defined('SODIUM_CRYPTO_CORE_RISTRETTO255_HASHBYTES')) {
    define(
        'SODIUM_CRYPTO_CORE_RISTRETTO255_HASHBYTES',
        ParagonIE_Sodium_Compat::CRYPTO_CORE_RISTRETTO255_HASHBYTES
    );
}
if (!defined('SODIUM_CRYPTO_CORE_RISTRETTO255_SCALARBYTES')) {
    define(
        'SODIUM_CRYPTO_CORE_RISTRETTO255_SCALARBYTES',
        ParagonIE_Sodium_Compat::CRYPTO_CORE_RISTRETTO255_SCALARBYTES
    );
}
if (!defined('SODIUM_CRYPTO_CORE_RISTRETTO255_NONREDUCEDSCALARBYTES')) {
    define(
        'SODIUM_CRYPTO_CORE_RISTRETTO255_NONREDUCEDSCALARBYTES',
        ParagonIE_Sodium_Compat::CRYPTO_CORE_RISTRETTO255_NONREDUCEDSCALARBYTES
    );
}
if (!defined('SODIUM_CRYPTO_SCALARMULT_RISTRETTO255_SCALARBYTES')) {
    define(
        'SODIUM_CRYPTO_SCALARMULT_RISTRETTO255_SCALARBYTES',
        ParagonIE_Sodium_Compat::CRYPTO_SCALARMULT_RISTRETTO255_SCALARBYTES
    );
}
if (!defined('SODIUM_CRYPTO_SCALARMULT_RISTRETTO255_BYTES')) {
    define(
        'SODIUM_CRYPTO_SCALARMULT_RISTRETTO255_BYTES',
        ParagonIE_Sodium_Compat::CRYPTO_SCALARMULT_RISTRETTO255_BYTES
    );
}

if (!is_callable('sodium_crypto_core_ristretto255_add')) {
    /**
     * @see ParagonIE_Sodium_Compat::ristretto255_add()
     *
     * @param string $p
     * @param string $q
     * @return string
     * @throws SodiumException
     */
    function sodium_crypto_core_ristretto255_add($p, $q)
    {
        return ParagonIE_Sodium_Compat::ristretto255_add($p, $q, true);
    }
}
if (!is_callable('sodium_crypto_core_ristretto255_from_hash')) {
    /**
     * @see ParagonIE_Sodium_Compat::ristretto255_from_hash()
     *
     * @param string $s
     * @return string
     * @throws SodiumException
     */
    function sodium_crypto_core_ristretto255_from_hash($s)
    {
        return ParagonIE_Sodium_Compat::ristretto255_from_hash($s, true);
    }
}
if (!is_callable('sodium_crypto_core_ristretto255_is_valid_point')) {
    /**
     * @see ParagonIE_Sodium_Compat::ristretto255_is_valid_point()
     *
     * @param string $s
     * @return bool
     * @throws SodiumException
     */
    function sodium_crypto_core_ristretto255_is_valid_point($s)
    {
        return ParagonIE_Sodium_Compat::ristretto255_is_valid_point($s, true);
    }
}
if (!is_callable('sodium_crypto_core_ristretto255_random')) {
    /**
     * @see ParagonIE_Sodium_Compat::ristretto255_random()
     *
     * @return string
     * @throws SodiumException
     */
    function sodium_crypto_core_ristretto255_random()
    {
        return ParagonIE_Sodium_Compat::ristretto255_random(true);
    }
}
if (!is_callable('sodium_crypto_core_ristretto255_scalar_add')) {
    /**
     * @see ParagonIE_Sodium_Compat::ristretto255_scalar_add()
     *
     * @param string $x
     * @param string $y
     * @return string
     * @throws SodiumException
     */
    function sodium_crypto_core_ristretto255_scalar_add($x, $y)
    {
        return ParagonIE_Sodium_Compat::ristretto255_scalar_add($x, $y, true);
    }
}
if (!is_callable('sodium_crypto_core_ristretto255_scalar_complement')) {
    /**
     * @see ParagonIE_Sodium_Compat::ristretto255_scalar_complement()
     *
     * @param string $s
     * @return string
     * @throws SodiumException
     */
    function sodium_crypto_core_ristretto255_scalar_complement($s)
    {
        return ParagonIE_Sodium_Compat::ristretto255_scalar_complement($s, true);
    }
}
if (!is_callable('sodium_crypto_core_ristretto255_scalar_invert')) {
    /**
     * @see ParagonIE_Sodium_Compat::ristretto255_scalar_invert()
     *
     * @param string $p
     * @return string
     * @throws SodiumException
     */
    function sodium_crypto_core_ristretto255_scalar_invert($p)
    {
        return ParagonIE_Sodium_Compat::ristretto255_scalar_invert($p, true);
    }
}
if (!is_callable('sodium_crypto_core_ristretto255_scalar_mul')) {
    /**
     * @see ParagonIE_Sodium_Compat::ristretto255_scalar_mul()
     *
     * @param string $x
     * @param string $y
     * @return string
     * @throws SodiumException
     */
    function sodium_crypto_core_ristretto255_scalar_mul($x, $y)
    {
        return ParagonIE_Sodium_Compat::ristretto255_scalar_mul($x, $y, true);
    }
}
if (!is_callable('sodium_crypto_core_ristretto255_scalar_negate')) {
    /**
     * @see ParagonIE_Sodium_Compat::ristretto255_scalar_negate()
     *
     * @param string $s
     * @return string
     * @throws SodiumException
     */
    function sodium_crypto_core_ristretto255_scalar_negate($s)
    {
        return ParagonIE_Sodium_Compat::ristretto255_scalar_negate($s, true);
    }
}
if (!is_callable('sodium_crypto_core_ristretto255_scalar_random')) {
    /**
     * @see ParagonIE_Sodium_Compat::ristretto255_scalar_random()
     *
     * @return string
     * @throws SodiumException
     */
    function sodium_crypto_core_ristretto255_scalar_random()
    {
        return ParagonIE_Sodium_Compat::ristretto255_scalar_random(true);
    }
}
if (!is_callable('sodium_crypto_core_ristretto255_scalar_reduce')) {
    /**
     * @see ParagonIE_Sodium_Compat::ristretto255_scalar_reduce()
     *
     * @param string $s
     * @return string
     * @throws SodiumException
     */
    function sodium_crypto_core_ristretto255_scalar_reduce($s)
    {
        return ParagonIE_Sodium_Compat::ristretto255_scalar_reduce($s, true);
    }
}
if (!is_callable('sodium_crypto_core_ristretto255_scalar_sub')) {
    /**
     * @see ParagonIE_Sodium_Compat::ristretto255_scalar_sub()
     *
     * @param string $x
     * @param string $y
     * @return string
     * @throws SodiumException
     */
    function sodium_crypto_core_ristretto255_scalar_sub($x, $y)
    {
        return ParagonIE_Sodium_Compat::ristretto255_scalar_sub($x, $y, true);
    }
}
if (!is_callable('sodium_crypto_core_ristretto255_sub')) {
    /**
     * @see ParagonIE_Sodium_Compat::ristretto255_sub()
     *
     * @param string $p
     * @param string $q
     * @return string
     * @throws SodiumException
     */
    function sodium_crypto_core_ristretto255_sub($p, $q)
    {
        return ParagonIE_Sodium_Compat::ristretto255_sub($p, $q, true);
    }
}
if (!is_callable('sodium_crypto_scalarmult_ristretto255')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_scalarmult_ristretto255()
     * @param string $n
     * @param string $p
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_scalarmult_ristretto255($n, $p)
    {
        return ParagonIE_Sodium_Compat::scalarmult_ristretto255($n, $p, true);
    }
}
if (!is_callable('sodium_crypto_scalarmult_ristretto255_base')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_scalarmult_ristretto255_base()
     * @param string $n
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_scalarmult_ristretto255_base($n)
    {
        return ParagonIE_Sodium_Compat::scalarmult_ristretto255_base($n, true);
    }
}crypto/vendor/paragonie/sodium_compat/lib/sodium_compat.php000064400000060237150755146460020340 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1
namespace Sodium;

require_once dirname(dirname(__FILE__)) . '/autoload.php';

use ParagonIE_Sodium_Compat;

/**
 * This file will monkey patch the pure-PHP implementation in place of the
 * PECL functions, but only if they do not already exist.
 *
 * Thus, the functions just proxy to the appropriate ParagonIE_Sodium_Compat
 * method.
 */
if (!is_callable('\\Sodium\\bin2hex')) {
    /**
     * @see ParagonIE_Sodium_Compat::bin2hex()
     * @param string $string
     * @return string
     * @throws \SodiumException
     * @throws \TypeError
     */
    function bin2hex($string)
    {
        return ParagonIE_Sodium_Compat::bin2hex($string);
    }
}
if (!is_callable('\\Sodium\\compare')) {
    /**
     * @see ParagonIE_Sodium_Compat::compare()
     * @param string $a
     * @param string $b
     * @return int
     * @throws \SodiumException
     * @throws \TypeError
     */
    function compare($a, $b)
    {
        return ParagonIE_Sodium_Compat::compare($a, $b);
    }
}
if (!is_callable('\\Sodium\\crypto_aead_aes256gcm_decrypt')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_decrypt()
     * @param string $message
     * @param string $assocData
     * @param string $nonce
     * @param string $key
     * @return string|bool
     */
    function crypto_aead_aes256gcm_decrypt($message, $assocData, $nonce, $key)
    {
        try {
            return ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_decrypt($message, $assocData, $nonce, $key);
        } catch (\TypeError $ex) {
            return false;
        } catch (\SodiumException $ex) {
            return false;
        }
    }
}
if (!is_callable('\\Sodium\\crypto_aead_aes256gcm_encrypt')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_encrypt()
     * @param string $message
     * @param string $assocData
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws \SodiumException
     * @throws \TypeError
     */
    function crypto_aead_aes256gcm_encrypt($message, $assocData, $nonce, $key)
    {
        return ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_encrypt($message, $assocData, $nonce, $key);
    }
}
if (!is_callable('\\Sodium\\crypto_aead_aes256gcm_is_available')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_is_available()
     * @return bool
     */
    function crypto_aead_aes256gcm_is_available()
    {
        return ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_is_available();
    }
}
if (!is_callable('\\Sodium\\crypto_aead_chacha20poly1305_decrypt')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_decrypt()
     * @param string $message
     * @param string $assocData
     * @param string $nonce
     * @param string $key
     * @return string|bool
     */
    function crypto_aead_chacha20poly1305_decrypt($message, $assocData, $nonce, $key)
    {
        try {
            return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_decrypt($message, $assocData, $nonce, $key);
        } catch (\TypeError $ex) {
            return false;
        } catch (\SodiumException $ex) {
            return false;
        }
    }
}
if (!is_callable('\\Sodium\\crypto_aead_chacha20poly1305_encrypt')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_encrypt()
     * @param string $message
     * @param string $assocData
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws \SodiumException
     * @throws \TypeError
     */
    function crypto_aead_chacha20poly1305_encrypt($message, $assocData, $nonce, $key)
    {
        return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_encrypt($message, $assocData, $nonce, $key);
    }
}
if (!is_callable('\\Sodium\\crypto_aead_chacha20poly1305_ietf_decrypt')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_decrypt()
     * @param string $message
     * @param string $assocData
     * @param string $nonce
     * @param string $key
     * @return string|bool
     */
    function crypto_aead_chacha20poly1305_ietf_decrypt($message, $assocData, $nonce, $key)
    {
        try {
            return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_decrypt($message, $assocData, $nonce, $key);
        } catch (\TypeError $ex) {
            return false;
        } catch (\SodiumException $ex) {
            return false;
        }
    }
}
if (!is_callable('\\Sodium\\crypto_aead_chacha20poly1305_ietf_encrypt')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_encrypt()
     * @param string $message
     * @param string $assocData
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws \SodiumException
     * @throws \TypeError
     */
    function crypto_aead_chacha20poly1305_ietf_encrypt($message, $assocData, $nonce, $key)
    {
        return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_encrypt($message, $assocData, $nonce, $key);
    }
}
if (!is_callable('\\Sodium\\crypto_auth')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_auth()
     * @param string $message
     * @param string $key
     * @return string
     * @throws \SodiumException
     * @throws \TypeError
     */
    function crypto_auth($message, $key)
    {
        return ParagonIE_Sodium_Compat::crypto_auth($message, $key);
    }
}
if (!is_callable('\\Sodium\\crypto_auth_verify')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_auth_verify()
     * @param string $mac
     * @param string $message
     * @param string $key
     * @return bool
     * @throws \SodiumException
     * @throws \TypeError
     */
    function crypto_auth_verify($mac, $message, $key)
    {
        return ParagonIE_Sodium_Compat::crypto_auth_verify($mac, $message, $key);
    }
}
if (!is_callable('\\Sodium\\crypto_box')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_box()
     * @param string $message
     * @param string $nonce
     * @param string $kp
     * @return string
     * @throws \SodiumException
     * @throws \TypeError
     */
    function crypto_box($message, $nonce, $kp)
    {
        return ParagonIE_Sodium_Compat::crypto_box($message, $nonce, $kp);
    }
}
if (!is_callable('\\Sodium\\crypto_box_keypair')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_box_keypair()
     * @return string
     * @throws \SodiumException
     * @throws \TypeError
     */
    function crypto_box_keypair()
    {
        return ParagonIE_Sodium_Compat::crypto_box_keypair();
    }
}
if (!is_callable('\\Sodium\\crypto_box_keypair_from_secretkey_and_publickey')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_box_keypair_from_secretkey_and_publickey()
     * @param string $sk
     * @param string $pk
     * @return string
     * @throws \SodiumException
     * @throws \TypeError
     */
    function crypto_box_keypair_from_secretkey_and_publickey($sk, $pk)
    {
        return ParagonIE_Sodium_Compat::crypto_box_keypair_from_secretkey_and_publickey($sk, $pk);
    }
}
if (!is_callable('\\Sodium\\crypto_box_open')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_box_open()
     * @param string $message
     * @param string $nonce
     * @param string $kp
     * @return string|bool
     */
    function crypto_box_open($message, $nonce, $kp)
    {
        try {
            return ParagonIE_Sodium_Compat::crypto_box_open($message, $nonce, $kp);
        } catch (\TypeError $ex) {
            return false;
        } catch (\SodiumException $ex) {
            return false;
        }
    }
}
if (!is_callable('\\Sodium\\crypto_box_publickey')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_box_publickey()
     * @param string $keypair
     * @return string
     * @throws \SodiumException
     * @throws \TypeError
     */
    function crypto_box_publickey($keypair)
    {
        return ParagonIE_Sodium_Compat::crypto_box_publickey($keypair);
    }
}
if (!is_callable('\\Sodium\\crypto_box_publickey_from_secretkey')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_box_publickey_from_secretkey()
     * @param string $sk
     * @return string
     * @throws \SodiumException
     * @throws \TypeError
     */
    function crypto_box_publickey_from_secretkey($sk)
    {
        return ParagonIE_Sodium_Compat::crypto_box_publickey_from_secretkey($sk);
    }
}
if (!is_callable('\\Sodium\\crypto_box_seal')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_box_seal_open()
     * @param string $message
     * @param string $publicKey
     * @return string
     * @throws \SodiumException
     * @throws \TypeError
     */
    function crypto_box_seal($message, $publicKey)
    {
        return ParagonIE_Sodium_Compat::crypto_box_seal($message, $publicKey);
    }
}
if (!is_callable('\\Sodium\\crypto_box_seal_open')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_box_seal_open()
     * @param string $message
     * @param string $kp
     * @return string|bool
     */
    function crypto_box_seal_open($message, $kp)
    {
        try {
            return ParagonIE_Sodium_Compat::crypto_box_seal_open($message, $kp);
        } catch (\TypeError $ex) {
            return false;
        } catch (\SodiumException $ex) {
            return false;
        }
    }
}
if (!is_callable('\\Sodium\\crypto_box_secretkey')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_box_secretkey()
     * @param string $keypair
     * @return string
     * @throws \SodiumException
     * @throws \TypeError
     */
    function crypto_box_secretkey($keypair)
    {
        return ParagonIE_Sodium_Compat::crypto_box_secretkey($keypair);
    }
}
if (!is_callable('\\Sodium\\crypto_generichash')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_generichash()
     * @param string $message
     * @param string|null $key
     * @param int $outLen
     * @return string
     * @throws \SodiumException
     * @throws \TypeError
     */
    function crypto_generichash($message, $key = null, $outLen = 32)
    {
        return ParagonIE_Sodium_Compat::crypto_generichash($message, $key, $outLen);
    }
}
if (!is_callable('\\Sodium\\crypto_generichash_final')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_generichash_final()
     * @param string|null $ctx
     * @param int $outputLength
     * @return string
     * @throws \SodiumException
     * @throws \TypeError
     */
    function crypto_generichash_final(&$ctx, $outputLength = 32)
    {
        return ParagonIE_Sodium_Compat::crypto_generichash_final($ctx, $outputLength);
    }
}
if (!is_callable('\\Sodium\\crypto_generichash_init')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_generichash_init()
     * @param string|null $key
     * @param int $outLen
     * @return string
     * @throws \SodiumException
     * @throws \TypeError
     */
    function crypto_generichash_init($key = null, $outLen = 32)
    {
        return ParagonIE_Sodium_Compat::crypto_generichash_init($key, $outLen);
    }
}
if (!is_callable('\\Sodium\\crypto_generichash_update')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_generichash_update()
     * @param string|null $ctx
     * @param string $message
     * @return void
     * @throws \SodiumException
     * @throws \TypeError
     */
    function crypto_generichash_update(&$ctx, $message = '')
    {
        ParagonIE_Sodium_Compat::crypto_generichash_update($ctx, $message);
    }
}
if (!is_callable('\\Sodium\\crypto_kx')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_kx()
     * @param string $my_secret
     * @param string $their_public
     * @param string $client_public
     * @param string $server_public
     * @return string
     * @throws \SodiumException
     * @throws \TypeError
     */
    function crypto_kx($my_secret, $their_public, $client_public, $server_public)
    {
        return ParagonIE_Sodium_Compat::crypto_kx(
            $my_secret,
            $their_public,
            $client_public,
            $server_public,
            true
        );
    }
}
if (!is_callable('\\Sodium\\crypto_pwhash')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_pwhash()
     * @param int $outlen
     * @param string $passwd
     * @param string $salt
     * @param int $opslimit
     * @param int $memlimit
     * @return string
     * @throws \SodiumException
     * @throws \TypeError
     */
    function crypto_pwhash($outlen, $passwd, $salt, $opslimit, $memlimit)
    {
        return ParagonIE_Sodium_Compat::crypto_pwhash($outlen, $passwd, $salt, $opslimit, $memlimit);
    }
}
if (!is_callable('\\Sodium\\crypto_pwhash_str')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_pwhash_str()
     * @param string $passwd
     * @param int $opslimit
     * @param int $memlimit
     * @return string
     * @throws \SodiumException
     * @throws \TypeError
     */
    function crypto_pwhash_str($passwd, $opslimit, $memlimit)
    {
        return ParagonIE_Sodium_Compat::crypto_pwhash_str($passwd, $opslimit, $memlimit);
    }
}
if (!is_callable('\\Sodium\\crypto_pwhash_str_verify')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_pwhash_str_verify()
     * @param string $passwd
     * @param string $hash
     * @return bool
     * @throws \SodiumException
     * @throws \TypeError
     */
    function crypto_pwhash_str_verify($passwd, $hash)
    {
        return ParagonIE_Sodium_Compat::crypto_pwhash_str_verify($passwd, $hash);
    }
}
if (!is_callable('\\Sodium\\crypto_pwhash_scryptsalsa208sha256')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256()
     * @param int $outlen
     * @param string $passwd
     * @param string $salt
     * @param int $opslimit
     * @param int $memlimit
     * @return string
     * @throws \SodiumException
     * @throws \TypeError
     */
    function crypto_pwhash_scryptsalsa208sha256($outlen, $passwd, $salt, $opslimit, $memlimit)
    {
        return ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256($outlen, $passwd, $salt, $opslimit, $memlimit);
    }
}
if (!is_callable('\\Sodium\\crypto_pwhash_scryptsalsa208sha256_str')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256_str()
     * @param string $passwd
     * @param int $opslimit
     * @param int $memlimit
     * @return string
     * @throws \SodiumException
     * @throws \TypeError
     */
    function crypto_pwhash_scryptsalsa208sha256_str($passwd, $opslimit, $memlimit)
    {
        return ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256_str($passwd, $opslimit, $memlimit);
    }
}
if (!is_callable('\\Sodium\\crypto_pwhash_scryptsalsa208sha256_str_verify')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256_str_verify()
     * @param string $passwd
     * @param string $hash
     * @return bool
     * @throws \SodiumException
     * @throws \TypeError
     */
    function crypto_pwhash_scryptsalsa208sha256_str_verify($passwd, $hash)
    {
        return ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256_str_verify($passwd, $hash);
    }
}
if (!is_callable('\\Sodium\\crypto_scalarmult')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_scalarmult()
     * @param string $n
     * @param string $p
     * @return string
     * @throws \SodiumException
     * @throws \TypeError
     */
    function crypto_scalarmult($n, $p)
    {
        return ParagonIE_Sodium_Compat::crypto_scalarmult($n, $p);
    }
}
if (!is_callable('\\Sodium\\crypto_scalarmult_base')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_scalarmult_base()
     * @param string $n
     * @return string
     * @throws \SodiumException
     * @throws \TypeError
     */
    function crypto_scalarmult_base($n)
    {
        return ParagonIE_Sodium_Compat::crypto_scalarmult_base($n);
    }
}
if (!is_callable('\\Sodium\\crypto_secretbox')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_secretbox()
     * @param string $message
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws \SodiumException
     * @throws \TypeError
     */
    function crypto_secretbox($message, $nonce, $key)
    {
        return ParagonIE_Sodium_Compat::crypto_secretbox($message, $nonce, $key);
    }
}
if (!is_callable('\\Sodium\\crypto_secretbox_open')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_secretbox_open()
     * @param string $message
     * @param string $nonce
     * @param string $key
     * @return string|bool
     */
    function crypto_secretbox_open($message, $nonce, $key)
    {
        try {
            return ParagonIE_Sodium_Compat::crypto_secretbox_open($message, $nonce, $key);
        } catch (\TypeError $ex) {
            return false;
        } catch (\SodiumException $ex) {
            return false;
        }
    }
}
if (!is_callable('\\Sodium\\crypto_shorthash')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_shorthash()
     * @param string $message
     * @param string $key
     * @return string
     * @throws \SodiumException
     * @throws \TypeError
     */
    function crypto_shorthash($message, $key = '')
    {
        return ParagonIE_Sodium_Compat::crypto_shorthash($message, $key);
    }
}
if (!is_callable('\\Sodium\\crypto_sign')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_sign()
     * @param string $message
     * @param string $sk
     * @return string
     * @throws \SodiumException
     * @throws \TypeError
     */
    function crypto_sign($message, $sk)
    {
        return ParagonIE_Sodium_Compat::crypto_sign($message, $sk);
    }
}
if (!is_callable('\\Sodium\\crypto_sign_detached')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_sign_detached()
     * @param string $message
     * @param string $sk
     * @return string
     * @throws \SodiumException
     * @throws \TypeError
     */
    function crypto_sign_detached($message, $sk)
    {
        return ParagonIE_Sodium_Compat::crypto_sign_detached($message, $sk);
    }
}
if (!is_callable('\\Sodium\\crypto_sign_keypair')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_sign_keypair()
     * @return string
     * @throws \SodiumException
     * @throws \TypeError
     */
    function crypto_sign_keypair()
    {
        return ParagonIE_Sodium_Compat::crypto_sign_keypair();
    }
}
if (!is_callable('\\Sodium\\crypto_sign_open')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_sign_open()
     * @param string $signedMessage
     * @param string $pk
     * @return string|bool
     */
    function crypto_sign_open($signedMessage, $pk)
    {
        try {
            return ParagonIE_Sodium_Compat::crypto_sign_open($signedMessage, $pk);
        } catch (\TypeError $ex) {
            return false;
        } catch (\SodiumException $ex) {
            return false;
        }
    }
}
if (!is_callable('\\Sodium\\crypto_sign_publickey')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_sign_publickey()
     * @param string $keypair
     * @return string
     * @throws \SodiumException
     * @throws \TypeError
     */
    function crypto_sign_publickey($keypair)
    {
        return ParagonIE_Sodium_Compat::crypto_sign_publickey($keypair);
    }
}
if (!is_callable('\\Sodium\\crypto_sign_publickey_from_secretkey')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_sign_publickey_from_secretkey()
     * @param string $sk
     * @return string
     * @throws \SodiumException
     * @throws \TypeError
     */
    function crypto_sign_publickey_from_secretkey($sk)
    {
        return ParagonIE_Sodium_Compat::crypto_sign_publickey_from_secretkey($sk);
    }
}
if (!is_callable('\\Sodium\\crypto_sign_secretkey')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_sign_secretkey()
     * @param string $keypair
     * @return string
     * @throws \SodiumException
     * @throws \TypeError
     */
    function crypto_sign_secretkey($keypair)
    {
        return ParagonIE_Sodium_Compat::crypto_sign_secretkey($keypair);
    }
}
if (!is_callable('\\Sodium\\crypto_sign_seed_keypair')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_sign_seed_keypair()
     * @param string $seed
     * @return string
     * @throws \SodiumException
     * @throws \TypeError
     */
    function crypto_sign_seed_keypair($seed)
    {
        return ParagonIE_Sodium_Compat::crypto_sign_seed_keypair($seed);
    }
}
if (!is_callable('\\Sodium\\crypto_sign_verify_detached')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_sign_verify_detached()
     * @param string $signature
     * @param string $message
     * @param string $pk
     * @return bool
     * @throws \SodiumException
     * @throws \TypeError
     */
    function crypto_sign_verify_detached($signature, $message, $pk)
    {
        return ParagonIE_Sodium_Compat::crypto_sign_verify_detached($signature, $message, $pk);
    }
}
if (!is_callable('\\Sodium\\crypto_sign_ed25519_pk_to_curve25519')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_sign_ed25519_pk_to_curve25519()
     * @param string $pk
     * @return string
     * @throws \SodiumException
     * @throws \TypeError
     */
    function crypto_sign_ed25519_pk_to_curve25519($pk)
    {
        return ParagonIE_Sodium_Compat::crypto_sign_ed25519_pk_to_curve25519($pk);
    }
}
if (!is_callable('\\Sodium\\crypto_sign_ed25519_sk_to_curve25519')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_sign_ed25519_sk_to_curve25519()
     * @param string $sk
     * @return string
     * @throws \SodiumException
     * @throws \TypeError
     */
    function crypto_sign_ed25519_sk_to_curve25519($sk)
    {
        return ParagonIE_Sodium_Compat::crypto_sign_ed25519_sk_to_curve25519($sk);
    }
}
if (!is_callable('\\Sodium\\crypto_stream')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_stream()
     * @param int $len
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws \SodiumException
     * @throws \TypeError
     */
    function crypto_stream($len, $nonce, $key)
    {
        return ParagonIE_Sodium_Compat::crypto_stream($len, $nonce, $key);
    }
}
if (!is_callable('\\Sodium\\crypto_stream_xor')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_stream_xor()
     * @param string $message
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws \SodiumException
     * @throws \TypeError
     */
    function crypto_stream_xor($message, $nonce, $key)
    {
        return ParagonIE_Sodium_Compat::crypto_stream_xor($message, $nonce, $key);
    }
}
if (!is_callable('\\Sodium\\hex2bin')) {
    /**
     * @see ParagonIE_Sodium_Compat::hex2bin()
     * @param string $string
     * @return string
     * @throws \SodiumException
     * @throws \TypeError
     */
    function hex2bin($string)
    {
        return ParagonIE_Sodium_Compat::hex2bin($string);
    }
}
if (!is_callable('\\Sodium\\memcmp')) {
    /**
     * @see ParagonIE_Sodium_Compat::memcmp()
     * @param string $a
     * @param string $b
     * @return int
     * @throws \SodiumException
     * @throws \TypeError
     */
    function memcmp($a, $b)
    {
        return ParagonIE_Sodium_Compat::memcmp($a, $b);
    }
}
if (!is_callable('\\Sodium\\memzero')) {
    /**
     * @see ParagonIE_Sodium_Compat::memzero()
     * @param string $str
     * @return void
     * @throws \SodiumException
     * @throws \TypeError
     *
     * @psalm-suppress MissingParamType
     * @psalm-suppress MissingReturnType
     * @psalm-suppress ReferenceConstraintViolation
     */
    function memzero(&$str)
    {
        ParagonIE_Sodium_Compat::memzero($str);
    }
}
if (!is_callable('\\Sodium\\randombytes_buf')) {
    /**
     * @see ParagonIE_Sodium_Compat::randombytes_buf()
     * @param int $amount
     * @return string
     * @throws \TypeError
     */
    function randombytes_buf($amount)
    {
        return ParagonIE_Sodium_Compat::randombytes_buf($amount);
    }
}

if (!is_callable('\\Sodium\\randombytes_uniform')) {
    /**
     * @see ParagonIE_Sodium_Compat::randombytes_uniform()
     * @param int $upperLimit
     * @return int
     * @throws \SodiumException
     * @throws \Error
     */
    function randombytes_uniform($upperLimit)
    {
        return ParagonIE_Sodium_Compat::randombytes_uniform($upperLimit);
    }
}

if (!is_callable('\\Sodium\\randombytes_random16')) {
    /**
     * @see ParagonIE_Sodium_Compat::randombytes_random16()
     * @return int
     */
    function randombytes_random16()
    {
        return ParagonIE_Sodium_Compat::randombytes_random16();
    }
}

if (!defined('\\Sodium\\CRYPTO_AUTH_BYTES')) {
    require_once dirname(__FILE__) . '/constants.php';
}
crypto/vendor/paragonie/sodium_compat/lib/php72compat_const.php000064400000011060150755146460021035 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

const SODIUM_LIBRARY_MAJOR_VERSION = 9;
const SODIUM_LIBRARY_MINOR_VERSION = 1;
const SODIUM_LIBRARY_VERSION = '1.0.8';

const SODIUM_BASE64_VARIANT_ORIGINAL = 1;
const SODIUM_BASE64_VARIANT_ORIGINAL_NO_PADDING = 3;
const SODIUM_BASE64_VARIANT_URLSAFE = 5;
const SODIUM_BASE64_VARIANT_URLSAFE_NO_PADDING = 7;
const SODIUM_CRYPTO_AEAD_AES256GCM_KEYBYTES = 32;
const SODIUM_CRYPTO_AEAD_AES256GCM_NSECBYTES = 0;
const SODIUM_CRYPTO_AEAD_AES256GCM_NPUBBYTES = 12;
const SODIUM_CRYPTO_AEAD_AES256GCM_ABYTES = 16;
const SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_KEYBYTES = 32;
const SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_NSECBYTES = 0;
const SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_NPUBBYTES = 8;
const SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_ABYTES = 16;
const SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_IETF_KEYBYTES = 32;
const SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_IETF_NSECBYTES = 0;
const SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_IETF_NPUBBYTES = 12;
const SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_IETF_ABYTES = 16;
const SODIUM_CRYPTO_AEAD_XCHACHA20POLY1305_IETF_KEYBYTES = 32;
const SODIUM_CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NSECBYTES = 0;
const SODIUM_CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NPUBBYTES = 24;
const SODIUM_CRYPTO_AEAD_XCHACHA20POLY1305_IETF_ABYTES = 16;
const SODIUM_CRYPTO_AUTH_BYTES = 32;
const SODIUM_CRYPTO_AUTH_KEYBYTES = 32;
const SODIUM_CRYPTO_BOX_SEALBYTES = 16;
const SODIUM_CRYPTO_BOX_SECRETKEYBYTES = 32;
const SODIUM_CRYPTO_BOX_PUBLICKEYBYTES = 32;
const SODIUM_CRYPTO_BOX_KEYPAIRBYTES = 64;
const SODIUM_CRYPTO_BOX_MACBYTES = 16;
const SODIUM_CRYPTO_BOX_NONCEBYTES = 24;
const SODIUM_CRYPTO_BOX_SEEDBYTES = 32;
const SODIUM_CRYPTO_KDF_BYTES_MIN = 16;
const SODIUM_CRYPTO_KDF_BYTES_MAX = 64;
const SODIUM_CRYPTO_KDF_CONTEXTBYTES = 8;
const SODIUM_CRYPTO_KDF_KEYBYTES = 32;
const SODIUM_CRYPTO_KX_BYTES = 32;
const SODIUM_CRYPTO_KX_PRIMITIVE = 'x25519blake2b';
const SODIUM_CRYPTO_KX_SEEDBYTES = 32;
const SODIUM_CRYPTO_KX_KEYPAIRBYTES = 64;
const SODIUM_CRYPTO_KX_PUBLICKEYBYTES = 32;
const SODIUM_CRYPTO_KX_SECRETKEYBYTES = 32;
const SODIUM_CRYPTO_KX_SESSIONKEYBYTES = 32;
const SODIUM_CRYPTO_GENERICHASH_BYTES = 32;
const SODIUM_CRYPTO_GENERICHASH_BYTES_MIN = 16;
const SODIUM_CRYPTO_GENERICHASH_BYTES_MAX = 64;
const SODIUM_CRYPTO_GENERICHASH_KEYBYTES = 32;
const SODIUM_CRYPTO_GENERICHASH_KEYBYTES_MIN = 16;
const SODIUM_CRYPTO_GENERICHASH_KEYBYTES_MAX = 64;
const SODIUM_CRYPTO_PWHASH_SALTBYTES = 16;
const SODIUM_CRYPTO_PWHASH_STRPREFIX = '$argon2id$';
const SODIUM_CRYPTO_PWHASH_ALG_ARGON2I13 = 1;
const SODIUM_CRYPTO_PWHASH_ALG_ARGON2ID13 = 2;
const SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE = 33554432;
const SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE = 4;
const SODIUM_CRYPTO_PWHASH_MEMLIMIT_MODERATE = 134217728;
const SODIUM_CRYPTO_PWHASH_OPSLIMIT_MODERATE = 6;
const SODIUM_CRYPTO_PWHASH_MEMLIMIT_SENSITIVE = 536870912;
const SODIUM_CRYPTO_PWHASH_OPSLIMIT_SENSITIVE = 8;
const SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_SALTBYTES = 32;
const SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_STRPREFIX = '$7$';
const SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_OPSLIMIT_INTERACTIVE = 534288;
const SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_INTERACTIVE = 16777216;
const SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_OPSLIMIT_SENSITIVE = 33554432;
const SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_SENSITIVE = 1073741824;
const SODIUM_CRYPTO_SCALARMULT_BYTES = 32;
const SODIUM_CRYPTO_SCALARMULT_SCALARBYTES = 32;
const SODIUM_CRYPTO_SHORTHASH_BYTES = 8;
const SODIUM_CRYPTO_SHORTHASH_KEYBYTES = 16;
const SODIUM_CRYPTO_SECRETBOX_KEYBYTES = 32;
const SODIUM_CRYPTO_SECRETBOX_MACBYTES = 16;
const SODIUM_CRYPTO_SECRETBOX_NONCEBYTES = 24;
const SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_ABYTES = 17;
const SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_HEADERBYTES = 24;
const SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_KEYBYTES = 32;
const SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_PUSH = 0;
const SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_PULL = 1;
const SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_REKEY = 2;
const SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_FINAL = 3;
const SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_MESSAGEBYTES_MAX = 0x3fffffff80;
const SODIUM_CRYPTO_SIGN_BYTES = 64;
const SODIUM_CRYPTO_SIGN_SEEDBYTES = 32;
const SODIUM_CRYPTO_SIGN_PUBLICKEYBYTES = 32;
const SODIUM_CRYPTO_SIGN_SECRETKEYBYTES = 64;
const SODIUM_CRYPTO_SIGN_KEYPAIRBYTES = 96;
const SODIUM_CRYPTO_STREAM_KEYBYTES = 32;
const SODIUM_CRYPTO_STREAM_NONCEBYTES = 24;
const SODIUM_CRYPTO_STREAM_XCHACHA20_KEYBYTES = 32;
const SODIUM_CRYPTO_STREAM_XCHACHA20_NONCEBYTES = 24;
crypto/vendor/paragonie/sodium_compat/lib/namespaced.php000064400000002574150755146460017575 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

require_once dirname(dirname(__FILE__)) . '/autoload.php';

if (PHP_VERSION_ID < 50300) {
    return;
}

/*
 * This file is just for convenience, to allow developers to reduce verbosity when
 * they add this project to their libraries.
 *
 * Replace this:
 *
 * $x = ParagonIE_Sodium_Compat::crypto_aead_xchacha20poly1305_encrypt(...$args);
 *
 * with this:
 *
 * use ParagonIE\Sodium\Compat;
 *
 * $x = Compat::crypto_aead_xchacha20poly1305_encrypt(...$args);
 */
spl_autoload_register(function ($class) {
    if ($class[0] === '\\') {
        $class = substr($class, 1);
    }
    $namespace = 'ParagonIE\\Sodium';
    // Does the class use the namespace prefix?
    $len = strlen($namespace);
    if (strncmp($namespace, $class, $len) !== 0) {
        // no, move to the next registered autoloader
        return false;
    }

    // Get the relative class name
    $relative_class = substr($class, $len);

    // Replace the namespace prefix with the base directory, replace namespace
    // separators with directory separators in the relative class name, append
    // with .php
    $file = dirname(dirname(__FILE__)) . '/namespaced/' . str_replace('\\', '/', $relative_class) . '.php';
    // if the file exists, require it
    if (file_exists($file)) {
        require_once $file;
        return true;
    }
    return false;
});
crypto/vendor/paragonie/sodium_compat/lib/php72compat.php000064400000125114150755146460017635 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1

require_once dirname(dirname(__FILE__)) . '/autoload.php';

/**
 * This file will monkey patch the pure-PHP implementation in place of the
 * PECL functions and constants, but only if they do not already exist.
 *
 * Thus, the functions or constants just proxy to the appropriate
 * ParagonIE_Sodium_Compat method or class constant, respectively.
 */
foreach (array(
    'BASE64_VARIANT_ORIGINAL',
    'BASE64_VARIANT_ORIGINAL_NO_PADDING',
    'BASE64_VARIANT_URLSAFE',
    'BASE64_VARIANT_URLSAFE_NO_PADDING',
    'CRYPTO_AEAD_CHACHA20POLY1305_KEYBYTES',
    'CRYPTO_AEAD_CHACHA20POLY1305_NSECBYTES',
    'CRYPTO_AEAD_CHACHA20POLY1305_NPUBBYTES',
    'CRYPTO_AEAD_CHACHA20POLY1305_ABYTES',
    'CRYPTO_AEAD_AES256GCM_KEYBYTES',
    'CRYPTO_AEAD_AES256GCM_NSECBYTES',
    'CRYPTO_AEAD_AES256GCM_NPUBBYTES',
    'CRYPTO_AEAD_AES256GCM_ABYTES',
    'CRYPTO_AEAD_CHACHA20POLY1305_IETF_KEYBYTES',
    'CRYPTO_AEAD_CHACHA20POLY1305_IETF_NSECBYTES',
    'CRYPTO_AEAD_CHACHA20POLY1305_IETF_NPUBBYTES',
    'CRYPTO_AEAD_CHACHA20POLY1305_IETF_ABYTES',
    'CRYPTO_AEAD_XCHACHA20POLY1305_IETF_KEYBYTES',
    'CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NSECBYTES',
    'CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NPUBBYTES',
    'CRYPTO_AEAD_XCHACHA20POLY1305_IETF_ABYTES',
    'CRYPTO_AUTH_BYTES',
    'CRYPTO_AUTH_KEYBYTES',
    'CRYPTO_BOX_SEALBYTES',
    'CRYPTO_BOX_SECRETKEYBYTES',
    'CRYPTO_BOX_PUBLICKEYBYTES',
    'CRYPTO_BOX_KEYPAIRBYTES',
    'CRYPTO_BOX_MACBYTES',
    'CRYPTO_BOX_NONCEBYTES',
    'CRYPTO_BOX_SEEDBYTES',
    'CRYPTO_KDF_BYTES_MIN',
    'CRYPTO_KDF_BYTES_MAX',
    'CRYPTO_KDF_CONTEXTBYTES',
    'CRYPTO_KDF_KEYBYTES',
    'CRYPTO_KX_BYTES',
    'CRYPTO_KX_KEYPAIRBYTES',
    'CRYPTO_KX_PRIMITIVE',
    'CRYPTO_KX_SEEDBYTES',
    'CRYPTO_KX_PUBLICKEYBYTES',
    'CRYPTO_KX_SECRETKEYBYTES',
    'CRYPTO_KX_SESSIONKEYBYTES',
    'CRYPTO_GENERICHASH_BYTES',
    'CRYPTO_GENERICHASH_BYTES_MIN',
    'CRYPTO_GENERICHASH_BYTES_MAX',
    'CRYPTO_GENERICHASH_KEYBYTES',
    'CRYPTO_GENERICHASH_KEYBYTES_MIN',
    'CRYPTO_GENERICHASH_KEYBYTES_MAX',
    'CRYPTO_PWHASH_SALTBYTES',
    'CRYPTO_PWHASH_STRPREFIX',
    'CRYPTO_PWHASH_ALG_ARGON2I13',
    'CRYPTO_PWHASH_ALG_ARGON2ID13',
    'CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE',
    'CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE',
    'CRYPTO_PWHASH_MEMLIMIT_MODERATE',
    'CRYPTO_PWHASH_OPSLIMIT_MODERATE',
    'CRYPTO_PWHASH_MEMLIMIT_SENSITIVE',
    'CRYPTO_PWHASH_OPSLIMIT_SENSITIVE',
    'CRYPTO_PWHASH_SCRYPTSALSA208SHA256_SALTBYTES',
    'CRYPTO_PWHASH_SCRYPTSALSA208SHA256_STRPREFIX',
    'CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_INTERACTIVE',
    'CRYPTO_PWHASH_SCRYPTSALSA208SHA256_OPSLIMIT_INTERACTIVE',
    'CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_SENSITIVE',
    'CRYPTO_PWHASH_SCRYPTSALSA208SHA256_OPSLIMIT_SENSITIVE',
    'CRYPTO_SCALARMULT_BYTES',
    'CRYPTO_SCALARMULT_SCALARBYTES',
    'CRYPTO_SHORTHASH_BYTES',
    'CRYPTO_SHORTHASH_KEYBYTES',
    'CRYPTO_SECRETBOX_KEYBYTES',
    'CRYPTO_SECRETBOX_MACBYTES',
    'CRYPTO_SECRETBOX_NONCEBYTES',
    'CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_ABYTES',
    'CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_HEADERBYTES',
    'CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_KEYBYTES',
    'CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_PUSH',
    'CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_PULL',
    'CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_REKEY',
    'CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_FINAL',
    'CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_MESSAGEBYTES_MAX',
    'CRYPTO_SIGN_BYTES',
    'CRYPTO_SIGN_SEEDBYTES',
    'CRYPTO_SIGN_PUBLICKEYBYTES',
    'CRYPTO_SIGN_SECRETKEYBYTES',
    'CRYPTO_SIGN_KEYPAIRBYTES',
    'CRYPTO_STREAM_KEYBYTES',
    'CRYPTO_STREAM_NONCEBYTES',
    'CRYPTO_STREAM_XCHACHA20_KEYBYTES',
    'CRYPTO_STREAM_XCHACHA20_NONCEBYTES',
    'LIBRARY_MAJOR_VERSION',
    'LIBRARY_MINOR_VERSION',
    'LIBRARY_VERSION_MAJOR',
    'LIBRARY_VERSION_MINOR',
    'VERSION_STRING'
    ) as $constant
) {
    if (!defined("SODIUM_$constant") && defined("ParagonIE_Sodium_Compat::$constant")) {
        define("SODIUM_$constant", constant("ParagonIE_Sodium_Compat::$constant"));
    }
}
if (!is_callable('sodium_add')) {
    /**
     * @see ParagonIE_Sodium_Compat::add()
     * @param string $string1
     * @param string $string2
     * @return void
     * @throws SodiumException
     */
    function sodium_add(&$string1, $string2)
    {
        ParagonIE_Sodium_Compat::add($string1, $string2);
    }
}
if (!is_callable('sodium_base642bin')) {
    /**
     * @see ParagonIE_Sodium_Compat::bin2base64()
     * @param string $string
     * @param int $variant
     * @param string $ignore
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_base642bin($string, $variant, $ignore ='')
    {
        return ParagonIE_Sodium_Compat::base642bin($string, $variant, $ignore);
    }
}
if (!is_callable('sodium_bin2base64')) {
    /**
     * @see ParagonIE_Sodium_Compat::bin2base64()
     * @param string $string
     * @param int $variant
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_bin2base64($string, $variant)
    {
        return ParagonIE_Sodium_Compat::bin2base64($string, $variant);
    }
}
if (!is_callable('sodium_bin2hex')) {
    /**
     * @see ParagonIE_Sodium_Compat::hex2bin()
     * @param string $string
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_bin2hex($string)
    {
        return ParagonIE_Sodium_Compat::bin2hex($string);
    }
}
if (!is_callable('sodium_compare')) {
    /**
     * @see ParagonIE_Sodium_Compat::compare()
     * @param string $string1
     * @param string $string2
     * @return int
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_compare($string1, $string2)
    {
        return ParagonIE_Sodium_Compat::compare($string1, $string2);
    }
}
if (!is_callable('sodium_crypto_aead_aes256gcm_decrypt')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_decrypt()
     * @param string $ciphertext
     * @param string $additional_data
     * @param string $nonce
     * @param string $key
     * @return string|bool
     */
    function sodium_crypto_aead_aes256gcm_decrypt($ciphertext, $additional_data, $nonce, $key)
    {
        try {
            return ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_decrypt(
                $ciphertext,
                $additional_data,
                $nonce,
                $key
            );
        } catch (Error $ex) {
            return false;
        } catch (Exception $ex) {
            if (($ex instanceof SodiumException) && ($ex->getMessage() === 'AES-256-GCM is not available')) {
                throw $ex;
            }
            return false;
        }
    }
}
if (!is_callable('sodium_crypto_aead_aes256gcm_encrypt')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_encrypt()
     * @param string $message
     * @param string $additional_data
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_aead_aes256gcm_encrypt($message, $additional_data, $nonce, $key)
    {
        return ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_encrypt($message, $additional_data, $nonce, $key);
    }
}
if (!is_callable('sodium_crypto_aead_aes256gcm_is_available')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_is_available()
     * @return bool
     */
    function sodium_crypto_aead_aes256gcm_is_available()
    {
        return ParagonIE_Sodium_Compat::crypto_aead_aes256gcm_is_available();
    }
}
if (!is_callable('sodium_crypto_aead_chacha20poly1305_decrypt')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_decrypt()
     * @param string $ciphertext
     * @param string $additional_data
     * @param string $nonce
     * @param string $key
     * @return string|bool
     */
    function sodium_crypto_aead_chacha20poly1305_decrypt($ciphertext, $additional_data, $nonce, $key)
    {
        try {
            return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_decrypt(
                $ciphertext,
                $additional_data,
                $nonce,
                $key
            );
        } catch (Error $ex) {
            return false;
        } catch (Exception $ex) {
            return false;
        }
    }
}
if (!is_callable('sodium_crypto_aead_chacha20poly1305_encrypt')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_encrypt()
     * @param string $message
     * @param string $additional_data
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_aead_chacha20poly1305_encrypt($message, $additional_data, $nonce, $key)
    {
        return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_encrypt(
            $message,
            $additional_data,
            $nonce,
            $key
        );
    }
}
if (!is_callable('sodium_crypto_aead_chacha20poly1305_keygen')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_keygen()
     * @return string
     * @throws Exception
     */
    function sodium_crypto_aead_chacha20poly1305_keygen()
    {
        return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_keygen();
    }
}
if (!is_callable('sodium_crypto_aead_chacha20poly1305_ietf_decrypt')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_decrypt()
     * @param string $message
     * @param string $additional_data
     * @param string $nonce
     * @param string $key
     * @return string|bool
     */
    function sodium_crypto_aead_chacha20poly1305_ietf_decrypt($message, $additional_data, $nonce, $key)
    {
        try {
            return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_decrypt(
                $message,
                $additional_data,
                $nonce,
                $key
            );
        } catch (Error $ex) {
            return false;
        } catch (Exception $ex) {
            return false;
        }
    }
}
if (!is_callable('sodium_crypto_aead_chacha20poly1305_ietf_encrypt')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_encrypt()
     * @param string $message
     * @param string $additional_data
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_aead_chacha20poly1305_ietf_encrypt($message, $additional_data, $nonce, $key)
    {
        return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_encrypt(
            $message,
            $additional_data,
            $nonce,
            $key
        );
    }
}
if (!is_callable('sodium_crypto_aead_chacha20poly1305_ietf_keygen')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_keygen()
     * @return string
     * @throws Exception
     */
    function sodium_crypto_aead_chacha20poly1305_ietf_keygen()
    {
        return ParagonIE_Sodium_Compat::crypto_aead_chacha20poly1305_ietf_keygen();
    }
}
if (!is_callable('sodium_crypto_aead_xchacha20poly1305_ietf_decrypt')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_aead_xchacha20poly1305_ietf_decrypt()
     * @param string $ciphertext
     * @param string $additional_data
     * @param string $nonce
     * @param string $key
     * @return string|bool
     */
    function sodium_crypto_aead_xchacha20poly1305_ietf_decrypt($ciphertext, $additional_data, $nonce, $key)
    {
        try {
            return ParagonIE_Sodium_Compat::crypto_aead_xchacha20poly1305_ietf_decrypt(
                $ciphertext,
                $additional_data,
                $nonce,
                $key,
                true
            );
        } catch (Error $ex) {
            return false;
        } catch (Exception $ex) {
            return false;
        }
    }
}
if (!is_callable('sodium_crypto_aead_xchacha20poly1305_ietf_encrypt')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_aead_xchacha20poly1305_ietf_encrypt()
     * @param string $message
     * @param string $additional_data
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_aead_xchacha20poly1305_ietf_encrypt(
        $message,
        $additional_data,
        $nonce,
        $key
    ) {
        return ParagonIE_Sodium_Compat::crypto_aead_xchacha20poly1305_ietf_encrypt(
            $message,
            $additional_data,
            $nonce,
            $key,
            true
        );
    }
}
if (!is_callable('sodium_crypto_aead_xchacha20poly1305_ietf_keygen')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_aead_xchacha20poly1305_ietf_keygen()
     * @return string
     * @throws Exception
     */
    function sodium_crypto_aead_xchacha20poly1305_ietf_keygen()
    {
        return ParagonIE_Sodium_Compat::crypto_aead_xchacha20poly1305_ietf_keygen();
    }
}
if (!is_callable('sodium_crypto_auth')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_auth()
     * @param string $message
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_auth($message, $key)
    {
        return ParagonIE_Sodium_Compat::crypto_auth($message, $key);
    }
}
if (!is_callable('sodium_crypto_auth_keygen')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_auth_keygen()
     * @return string
     * @throws Exception
     */
    function sodium_crypto_auth_keygen()
    {
        return ParagonIE_Sodium_Compat::crypto_auth_keygen();
    }
}
if (!is_callable('sodium_crypto_auth_verify')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_auth_verify()
     * @param string $mac
     * @param string $message
     * @param string $key
     * @return bool
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_auth_verify($mac, $message, $key)
    {
        return ParagonIE_Sodium_Compat::crypto_auth_verify($mac, $message, $key);
    }
}
if (!is_callable('sodium_crypto_box')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_box()
     * @param string $message
     * @param string $nonce
     * @param string $key_pair
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_box($message, $nonce, $key_pair)
    {
        return ParagonIE_Sodium_Compat::crypto_box($message, $nonce, $key_pair);
    }
}
if (!is_callable('sodium_crypto_box_keypair')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_box_keypair()
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_box_keypair()
    {
        return ParagonIE_Sodium_Compat::crypto_box_keypair();
    }
}
if (!is_callable('sodium_crypto_box_keypair_from_secretkey_and_publickey')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_box_keypair_from_secretkey_and_publickey()
     * @param string $secret_key
     * @param string $public_key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_box_keypair_from_secretkey_and_publickey($secret_key, $public_key)
    {
        return ParagonIE_Sodium_Compat::crypto_box_keypair_from_secretkey_and_publickey($secret_key, $public_key);
    }
}
if (!is_callable('sodium_crypto_box_open')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_box_open()
     * @param string $ciphertext
     * @param string $nonce
     * @param string $key_pair
     * @return string|bool
     */
    function sodium_crypto_box_open($ciphertext, $nonce, $key_pair)
    {
        try {
            return ParagonIE_Sodium_Compat::crypto_box_open($ciphertext, $nonce, $key_pair);
        } catch (Error $ex) {
            return false;
        } catch (Exception $ex) {
            return false;
        }
    }
}
if (!is_callable('sodium_crypto_box_publickey')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_box_publickey()
     * @param string $key_pair
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_box_publickey($key_pair)
    {
        return ParagonIE_Sodium_Compat::crypto_box_publickey($key_pair);
    }
}
if (!is_callable('sodium_crypto_box_publickey_from_secretkey')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_box_publickey_from_secretkey()
     * @param string $secret_key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_box_publickey_from_secretkey($secret_key)
    {
        return ParagonIE_Sodium_Compat::crypto_box_publickey_from_secretkey($secret_key);
    }
}
if (!is_callable('sodium_crypto_box_seal')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_box_seal()
     * @param string $message
     * @param string $public_key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_box_seal($message, $public_key)
    {
        return ParagonIE_Sodium_Compat::crypto_box_seal($message, $public_key);
    }
}
if (!is_callable('sodium_crypto_box_seal_open')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_box_seal_open()
     * @param string $message
     * @param string $key_pair
     * @return string|bool
     * @throws SodiumException
     */
    function sodium_crypto_box_seal_open($message, $key_pair)
    {
        try {
            return ParagonIE_Sodium_Compat::crypto_box_seal_open($message, $key_pair);
        } catch (SodiumException $ex) {
            if ($ex->getMessage() === 'Argument 2 must be CRYPTO_BOX_KEYPAIRBYTES long.') {
                throw $ex;
            }
            return false;
        }
    }
}
if (!is_callable('sodium_crypto_box_secretkey')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_box_secretkey()
     * @param string $key_pair
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_box_secretkey($key_pair)
    {
        return ParagonIE_Sodium_Compat::crypto_box_secretkey($key_pair);
    }
}
if (!is_callable('sodium_crypto_box_seed_keypair')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_box_seed_keypair()
     * @param string $seed
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_box_seed_keypair($seed)
    {
        return ParagonIE_Sodium_Compat::crypto_box_seed_keypair($seed);
    }
}
if (!is_callable('sodium_crypto_generichash')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_generichash()
     * @param string $message
     * @param string|null $key
     * @param int $length
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_generichash($message, $key = null, $length = 32)
    {
        return ParagonIE_Sodium_Compat::crypto_generichash($message, $key, $length);
    }
}
if (!is_callable('sodium_crypto_generichash_final')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_generichash_final()
     * @param string|null $state
     * @param int $outputLength
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_generichash_final(&$state, $outputLength = 32)
    {
        return ParagonIE_Sodium_Compat::crypto_generichash_final($state, $outputLength);
    }
}
if (!is_callable('sodium_crypto_generichash_init')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_generichash_init()
     * @param string|null $key
     * @param int $length
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_generichash_init($key = null, $length = 32)
    {
        return ParagonIE_Sodium_Compat::crypto_generichash_init($key, $length);
    }
}
if (!is_callable('sodium_crypto_generichash_keygen')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_generichash_keygen()
     * @return string
     * @throws Exception
     */
    function sodium_crypto_generichash_keygen()
    {
        return ParagonIE_Sodium_Compat::crypto_generichash_keygen();
    }
}
if (!is_callable('sodium_crypto_generichash_update')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_generichash_update()
     * @param string|null $state
     * @param string $message
     * @return void
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_generichash_update(&$state, $message = '')
    {
        ParagonIE_Sodium_Compat::crypto_generichash_update($state, $message);
    }
}
if (!is_callable('sodium_crypto_kdf_keygen')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_kdf_keygen()
     * @return string
     * @throws Exception
     */
    function sodium_crypto_kdf_keygen()
    {
        return ParagonIE_Sodium_Compat::crypto_kdf_keygen();
    }
}
if (!is_callable('sodium_crypto_kdf_derive_from_key')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_kdf_derive_from_key()
     * @param int $subkey_length
     * @param int $subkey_id
     * @param string $context
     * @param string $key
     * @return string
     * @throws Exception
     */
    function sodium_crypto_kdf_derive_from_key($subkey_length, $subkey_id, $context, $key)
    {
        return ParagonIE_Sodium_Compat::crypto_kdf_derive_from_key(
            $subkey_length,
            $subkey_id,
            $context,
            $key
        );
    }
}
if (!is_callable('sodium_crypto_kx')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_kx()
     * @param string $my_secret
     * @param string $their_public
     * @param string $client_public
     * @param string $server_public
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_kx($my_secret, $their_public, $client_public, $server_public)
    {
        return ParagonIE_Sodium_Compat::crypto_kx(
            $my_secret,
            $their_public,
            $client_public,
            $server_public
        );
    }
}
if (!is_callable('sodium_crypto_kx_seed_keypair')) {
    /**
     * @param string $seed
     * @return string
     * @throws Exception
     */
    function sodium_crypto_kx_seed_keypair($seed)
    {
        return ParagonIE_Sodium_Compat::crypto_kx_seed_keypair($seed);
    }
}
if (!is_callable('sodium_crypto_kx_keypair')) {
    /**
     * @return string
     * @throws Exception
     */
    function sodium_crypto_kx_keypair()
    {
        return ParagonIE_Sodium_Compat::crypto_kx_keypair();
    }
}
if (!is_callable('sodium_crypto_kx_client_session_keys')) {
    /**
     * @param string $client_key_pair
     * @param string $server_key
     * @return array{0: string, 1: string}
     * @throws SodiumException
     */
    function sodium_crypto_kx_client_session_keys($client_key_pair, $server_key)
    {
        return ParagonIE_Sodium_Compat::crypto_kx_client_session_keys($client_key_pair, $server_key);
    }
}
if (!is_callable('sodium_crypto_kx_server_session_keys')) {
    /**
     * @param string $server_key_pair
     * @param string $client_key
     * @return array{0: string, 1: string}
     * @throws SodiumException
     */
    function sodium_crypto_kx_server_session_keys($server_key_pair, $client_key)
    {
        return ParagonIE_Sodium_Compat::crypto_kx_server_session_keys($server_key_pair, $client_key);
    }
}
if (!is_callable('sodium_crypto_kx_secretkey')) {
    /**
     * @param string $key_pair
     * @return string
     * @throws Exception
     */
    function sodium_crypto_kx_secretkey($key_pair)
    {
        return ParagonIE_Sodium_Compat::crypto_kx_secretkey($key_pair);
    }
}
if (!is_callable('sodium_crypto_kx_publickey')) {
    /**
     * @param string $key_pair
     * @return string
     * @throws Exception
     */
    function sodium_crypto_kx_publickey($key_pair)
    {
        return ParagonIE_Sodium_Compat::crypto_kx_publickey($key_pair);
    }
}
if (!is_callable('sodium_crypto_pwhash')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_pwhash()
     * @param int $length
     * @param string $passwd
     * @param string $salt
     * @param int $opslimit
     * @param int $memlimit
     * @param int|null $algo
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_pwhash($length, $passwd, $salt, $opslimit, $memlimit, $algo = null)
    {
        return ParagonIE_Sodium_Compat::crypto_pwhash($length, $passwd, $salt, $opslimit, $memlimit, $algo);
    }
}
if (!is_callable('sodium_crypto_pwhash_str')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_pwhash_str()
     * @param string $passwd
     * @param int $opslimit
     * @param int $memlimit
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_pwhash_str($passwd, $opslimit, $memlimit)
    {
        return ParagonIE_Sodium_Compat::crypto_pwhash_str($passwd, $opslimit, $memlimit);
    }
}
if (!is_callable('sodium_crypto_pwhash_str_needs_rehash')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_pwhash_str_needs_rehash()
     * @param string $hash
     * @param int $opslimit
     * @param int $memlimit
     * @return bool
     *
     * @throws SodiumException
     */
    function sodium_crypto_pwhash_str_needs_rehash($hash, $opslimit, $memlimit)
    {
        return ParagonIE_Sodium_Compat::crypto_pwhash_str_needs_rehash($hash, $opslimit, $memlimit);
    }
}
if (!is_callable('sodium_crypto_pwhash_str_verify')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_pwhash_str_verify()
     * @param string $passwd
     * @param string $hash
     * @return bool
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_pwhash_str_verify($passwd, $hash)
    {
        return ParagonIE_Sodium_Compat::crypto_pwhash_str_verify($passwd, $hash);
    }
}
if (!is_callable('sodium_crypto_pwhash_scryptsalsa208sha256')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256()
     * @param int $length
     * @param string $passwd
     * @param string $salt
     * @param int $opslimit
     * @param int $memlimit
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_pwhash_scryptsalsa208sha256($length, $passwd, $salt, $opslimit, $memlimit)
    {
        return ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256(
            $length,
            $passwd,
            $salt,
            $opslimit,
            $memlimit
        );
    }
}
if (!is_callable('sodium_crypto_pwhash_scryptsalsa208sha256_str')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256_str()
     * @param string $passwd
     * @param int $opslimit
     * @param int $memlimit
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_pwhash_scryptsalsa208sha256_str($passwd, $opslimit, $memlimit)
    {
        return ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256_str($passwd, $opslimit, $memlimit);
    }
}
if (!is_callable('sodium_crypto_pwhash_scryptsalsa208sha256_str_verify')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256_str_verify()
     * @param string $passwd
     * @param string $hash
     * @return bool
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_pwhash_scryptsalsa208sha256_str_verify($passwd, $hash)
    {
        return ParagonIE_Sodium_Compat::crypto_pwhash_scryptsalsa208sha256_str_verify($passwd, $hash);
    }
}
if (!is_callable('sodium_crypto_scalarmult')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_scalarmult()
     * @param string $n
     * @param string $p
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_scalarmult($n, $p)
    {
        return ParagonIE_Sodium_Compat::crypto_scalarmult($n, $p);
    }
}
if (!is_callable('sodium_crypto_scalarmult_base')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_scalarmult_base()
     * @param string $n
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_scalarmult_base($n)
    {
        return ParagonIE_Sodium_Compat::crypto_scalarmult_base($n);
    }
}
if (!is_callable('sodium_crypto_secretbox')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_secretbox()
     * @param string $message
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_secretbox($message, $nonce, $key)
    {
        return ParagonIE_Sodium_Compat::crypto_secretbox($message, $nonce, $key);
    }
}
if (!is_callable('sodium_crypto_secretbox_keygen')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_secretbox_keygen()
     * @return string
     * @throws Exception
     */
    function sodium_crypto_secretbox_keygen()
    {
        return ParagonIE_Sodium_Compat::crypto_secretbox_keygen();
    }
}
if (!is_callable('sodium_crypto_secretbox_open')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_secretbox_open()
     * @param string $ciphertext
     * @param string $nonce
     * @param string $key
     * @return string|bool
     */
    function sodium_crypto_secretbox_open($ciphertext, $nonce, $key)
    {
        try {
            return ParagonIE_Sodium_Compat::crypto_secretbox_open($ciphertext, $nonce, $key);
        } catch (Error $ex) {
            return false;
        } catch (Exception $ex) {
            return false;
        }
    }
}
if (!is_callable('sodium_crypto_secretstream_xchacha20poly1305_init_push')) {
    /**
     * @param string $key
     * @return array<int, string>
     * @throws SodiumException
     */
    function sodium_crypto_secretstream_xchacha20poly1305_init_push($key)
    {
        return ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_init_push($key);
    }
}
if (!is_callable('sodium_crypto_secretstream_xchacha20poly1305_push')) {
    /**
     * @param string $state
     * @param string $message
     * @param string $additional_data
     * @param int $tag
     * @return string
     * @throws SodiumException
     */
    function sodium_crypto_secretstream_xchacha20poly1305_push(
        &$state,
        $message,
        $additional_data = '',
        $tag = 0
    ) {
        return ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_push(
            $state,
            $message,
            $additional_data,
            $tag
        );
    }
}
if (!is_callable('sodium_crypto_secretstream_xchacha20poly1305_init_pull')) {
    /**
     * @param string $header
     * @param string $key
     * @return string
     * @throws Exception
     */
    function sodium_crypto_secretstream_xchacha20poly1305_init_pull($header, $key)
    {
        return ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_init_pull($header, $key);
    }
}
if (!is_callable('sodium_crypto_secretstream_xchacha20poly1305_pull')) {
    /**
     * @param string $state
     * @param string $ciphertext
     * @param string $additional_data
     * @return bool|array{0: string, 1: int}
     * @throws SodiumException
     */
    function sodium_crypto_secretstream_xchacha20poly1305_pull(&$state, $ciphertext, $additional_data = '')
    {
        return ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_pull(
            $state,
            $ciphertext,
            $additional_data
        );
    }
}
if (!is_callable('sodium_crypto_secretstream_xchacha20poly1305_rekey')) {
    /**
     * @param string $state
     * @return void
     * @throws SodiumException
     */
    function sodium_crypto_secretstream_xchacha20poly1305_rekey(&$state)
    {
        ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_rekey($state);
    }
}
if (!is_callable('sodium_crypto_secretstream_xchacha20poly1305_keygen')) {
    /**
     * @return string
     * @throws Exception
     */
    function sodium_crypto_secretstream_xchacha20poly1305_keygen()
    {
        return ParagonIE_Sodium_Compat::crypto_secretstream_xchacha20poly1305_keygen();
    }
}
if (!is_callable('sodium_crypto_shorthash')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_shorthash()
     * @param string $message
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_shorthash($message, $key = '')
    {
        return ParagonIE_Sodium_Compat::crypto_shorthash($message, $key);
    }
}
if (!is_callable('sodium_crypto_shorthash_keygen')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_shorthash_keygen()
     * @return string
     * @throws Exception
     */
    function sodium_crypto_shorthash_keygen()
    {
        return ParagonIE_Sodium_Compat::crypto_shorthash_keygen();
    }
}
if (!is_callable('sodium_crypto_sign')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_sign()
     * @param string $message
     * @param string $secret_key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_sign($message, $secret_key)
    {
        return ParagonIE_Sodium_Compat::crypto_sign($message, $secret_key);
    }
}
if (!is_callable('sodium_crypto_sign_detached')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_sign_detached()
     * @param string $message
     * @param string $secret_key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_sign_detached($message, $secret_key)
    {
        return ParagonIE_Sodium_Compat::crypto_sign_detached($message, $secret_key);
    }
}
if (!is_callable('sodium_crypto_sign_keypair_from_secretkey_and_publickey')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_sign_keypair_from_secretkey_and_publickey()
     * @param string $secret_key
     * @param string $public_key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_sign_keypair_from_secretkey_and_publickey($secret_key, $public_key)
    {
        return ParagonIE_Sodium_Compat::crypto_sign_keypair_from_secretkey_and_publickey($secret_key, $public_key);
    }
}
if (!is_callable('sodium_crypto_sign_keypair')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_sign_keypair()
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_sign_keypair()
    {
        return ParagonIE_Sodium_Compat::crypto_sign_keypair();
    }
}
if (!is_callable('sodium_crypto_sign_open')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_sign_open()
     * @param string $signedMessage
     * @param string $public_key
     * @return string|bool
     */
    function sodium_crypto_sign_open($signedMessage, $public_key)
    {
        try {
            return ParagonIE_Sodium_Compat::crypto_sign_open($signedMessage, $public_key);
        } catch (Error $ex) {
            return false;
        } catch (Exception $ex) {
            return false;
        }
    }
}
if (!is_callable('sodium_crypto_sign_publickey')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_sign_publickey()
     * @param string $key_pair
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_sign_publickey($key_pair)
    {
        return ParagonIE_Sodium_Compat::crypto_sign_publickey($key_pair);
    }
}
if (!is_callable('sodium_crypto_sign_publickey_from_secretkey')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_sign_publickey_from_secretkey()
     * @param string $secret_key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_sign_publickey_from_secretkey($secret_key)
    {
        return ParagonIE_Sodium_Compat::crypto_sign_publickey_from_secretkey($secret_key);
    }
}
if (!is_callable('sodium_crypto_sign_secretkey')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_sign_secretkey()
     * @param string $key_pair
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_sign_secretkey($key_pair)
    {
        return ParagonIE_Sodium_Compat::crypto_sign_secretkey($key_pair);
    }
}
if (!is_callable('sodium_crypto_sign_seed_keypair')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_sign_seed_keypair()
     * @param string $seed
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_sign_seed_keypair($seed)
    {
        return ParagonIE_Sodium_Compat::crypto_sign_seed_keypair($seed);
    }
}
if (!is_callable('sodium_crypto_sign_verify_detached')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_sign_verify_detached()
     * @param string $signature
     * @param string $message
     * @param string $public_key
     * @return bool
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_sign_verify_detached($signature, $message, $public_key)
    {
        return ParagonIE_Sodium_Compat::crypto_sign_verify_detached($signature, $message, $public_key);
    }
}
if (!is_callable('sodium_crypto_sign_ed25519_pk_to_curve25519')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_sign_ed25519_pk_to_curve25519()
     * @param string $public_key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_sign_ed25519_pk_to_curve25519($public_key)
    {
        return ParagonIE_Sodium_Compat::crypto_sign_ed25519_pk_to_curve25519($public_key);
    }
}
if (!is_callable('sodium_crypto_sign_ed25519_sk_to_curve25519')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_sign_ed25519_sk_to_curve25519()
     * @param string $secret_key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_sign_ed25519_sk_to_curve25519($secret_key)
    {
        return ParagonIE_Sodium_Compat::crypto_sign_ed25519_sk_to_curve25519($secret_key);
    }
}
if (!is_callable('sodium_crypto_stream')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_stream()
     * @param int $length
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_stream($length, $nonce, $key)
    {
        return ParagonIE_Sodium_Compat::crypto_stream($length, $nonce, $key);
    }
}
if (!is_callable('sodium_crypto_stream_keygen')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_stream_keygen()
     * @return string
     * @throws Exception
     */
    function sodium_crypto_stream_keygen()
    {
        return ParagonIE_Sodium_Compat::crypto_stream_keygen();
    }
}
if (!is_callable('sodium_crypto_stream_xor')) {
    /**
     * @see ParagonIE_Sodium_Compat::crypto_stream_xor()
     * @param string $message
     * @param string $nonce
     * @param string $key
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_crypto_stream_xor($message, $nonce, $key)
    {
        return ParagonIE_Sodium_Compat::crypto_stream_xor($message, $nonce, $key);
    }
}
require_once dirname(__FILE__) . '/stream-xchacha20.php';
if (!is_callable('sodium_hex2bin')) {
    /**
     * @see ParagonIE_Sodium_Compat::hex2bin()
     * @param string $string
     * @param string $ignore
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_hex2bin($string, $ignore = '')
    {
        return ParagonIE_Sodium_Compat::hex2bin($string, $ignore);
    }
}
if (!is_callable('sodium_increment')) {
    /**
     * @see ParagonIE_Sodium_Compat::increment()
     * @param string $string
     * @return void
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_increment(&$string)
    {
        ParagonIE_Sodium_Compat::increment($string);
    }
}
if (!is_callable('sodium_library_version_major')) {
    /**
     * @see ParagonIE_Sodium_Compat::library_version_major()
     * @return int
     */
    function sodium_library_version_major()
    {
        return ParagonIE_Sodium_Compat::library_version_major();
    }
}
if (!is_callable('sodium_library_version_minor')) {
    /**
     * @see ParagonIE_Sodium_Compat::library_version_minor()
     * @return int
     */
    function sodium_library_version_minor()
    {
        return ParagonIE_Sodium_Compat::library_version_minor();
    }
}
if (!is_callable('sodium_version_string')) {
    /**
     * @see ParagonIE_Sodium_Compat::version_string()
     * @return string
     */
    function sodium_version_string()
    {
        return ParagonIE_Sodium_Compat::version_string();
    }
}
if (!is_callable('sodium_memcmp')) {
    /**
     * @see ParagonIE_Sodium_Compat::memcmp()
     * @param string $string1
     * @param string $string2
     * @return int
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_memcmp($string1, $string2)
    {
        return ParagonIE_Sodium_Compat::memcmp($string1, $string2);
    }
}
if (!is_callable('sodium_memzero')) {
    /**
     * @see ParagonIE_Sodium_Compat::memzero()
     * @param string $string
     * @return void
     * @throws SodiumException
     * @throws TypeError
     *
     * @psalm-suppress ReferenceConstraintViolation
     */
    function sodium_memzero(&$string)
    {
        ParagonIE_Sodium_Compat::memzero($string);
    }
}
if (!is_callable('sodium_pad')) {
    /**
     * @see ParagonIE_Sodium_Compat::pad()
     * @param string $unpadded
     * @param int $block_size
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_pad($unpadded, $block_size)
    {
        return ParagonIE_Sodium_Compat::pad($unpadded, $block_size, true);
    }
}
if (!is_callable('sodium_unpad')) {
    /**
     * @see ParagonIE_Sodium_Compat::pad()
     * @param string $padded
     * @param int $block_size
     * @return string
     * @throws SodiumException
     * @throws TypeError
     */
    function sodium_unpad($padded, $block_size)
    {
        return ParagonIE_Sodium_Compat::unpad($padded, $block_size, true);
    }
}
if (!is_callable('sodium_randombytes_buf')) {
    /**
     * @see ParagonIE_Sodium_Compat::randombytes_buf()
     * @param int $amount
     * @return string
     * @throws Exception
     */
    function sodium_randombytes_buf($amount)
    {
        return ParagonIE_Sodium_Compat::randombytes_buf($amount);
    }
}

if (!is_callable('sodium_randombytes_uniform')) {
    /**
     * @see ParagonIE_Sodium_Compat::randombytes_uniform()
     * @param int $upperLimit
     * @return int
     * @throws Exception
     */
    function sodium_randombytes_uniform($upperLimit)
    {
        return ParagonIE_Sodium_Compat::randombytes_uniform($upperLimit);
    }
}

if (!is_callable('sodium_randombytes_random16')) {
    /**
     * @see ParagonIE_Sodium_Compat::randombytes_random16()
     * @return int
     * @throws Exception
     */
    function sodium_randombytes_random16()
    {
        return ParagonIE_Sodium_Compat::randombytes_random16();
    }
}
crypto/vendor/paragonie/sodium_compat/lib/constants.php000064400000010174150755146460017504 0ustar00<?php
// phpcs:ignoreFile -- compatibility library for PHP 5-7.1
namespace Sodium;

require_once dirname(dirname(__FILE__)) . '/autoload.php';

use ParagonIE_Sodium_Compat;

const CRYPTO_AEAD_AES256GCM_KEYBYTES = ParagonIE_Sodium_Compat::CRYPTO_AEAD_AES256GCM_KEYBYTES;
const CRYPTO_AEAD_AES256GCM_NSECBYTES = ParagonIE_Sodium_Compat::CRYPTO_AEAD_AES256GCM_NSECBYTES;
const CRYPTO_AEAD_AES256GCM_NPUBBYTES = ParagonIE_Sodium_Compat::CRYPTO_AEAD_AES256GCM_NPUBBYTES;
const CRYPTO_AEAD_AES256GCM_ABYTES = ParagonIE_Sodium_Compat::CRYPTO_AEAD_AES256GCM_ABYTES;
const CRYPTO_AEAD_CHACHA20POLY1305_KEYBYTES = ParagonIE_Sodium_Compat::CRYPTO_AEAD_CHACHA20POLY1305_KEYBYTES;
const CRYPTO_AEAD_CHACHA20POLY1305_NSECBYTES = ParagonIE_Sodium_Compat::CRYPTO_AEAD_CHACHA20POLY1305_NSECBYTES;
const CRYPTO_AEAD_CHACHA20POLY1305_NPUBBYTES = ParagonIE_Sodium_Compat::CRYPTO_AEAD_CHACHA20POLY1305_NPUBBYTES;
const CRYPTO_AEAD_CHACHA20POLY1305_ABYTES = ParagonIE_Sodium_Compat::CRYPTO_AEAD_CHACHA20POLY1305_ABYTES;
const CRYPTO_AEAD_CHACHA20POLY1305_IETF_KEYBYTES = ParagonIE_Sodium_Compat::CRYPTO_AEAD_CHACHA20POLY1305_IETF_KEYBYTES;
const CRYPTO_AEAD_CHACHA20POLY1305_IETF_NSECBYTES = ParagonIE_Sodium_Compat::CRYPTO_AEAD_CHACHA20POLY1305_IETF_NSECBYTES;
const CRYPTO_AEAD_CHACHA20POLY1305_IETF_NPUBBYTES = ParagonIE_Sodium_Compat::CRYPTO_AEAD_CHACHA20POLY1305_IETF_NPUBBYTES;
const CRYPTO_AEAD_CHACHA20POLY1305_IETF_ABYTES = ParagonIE_Sodium_Compat::CRYPTO_AEAD_CHACHA20POLY1305_IETF_ABYTES;
const CRYPTO_AUTH_BYTES = ParagonIE_Sodium_Compat::CRYPTO_AUTH_BYTES;
const CRYPTO_AUTH_KEYBYTES = ParagonIE_Sodium_Compat::CRYPTO_AUTH_KEYBYTES;
const CRYPTO_BOX_SEALBYTES = ParagonIE_Sodium_Compat::CRYPTO_BOX_SEALBYTES;
const CRYPTO_BOX_SECRETKEYBYTES = ParagonIE_Sodium_Compat::CRYPTO_BOX_SECRETKEYBYTES;
const CRYPTO_BOX_PUBLICKEYBYTES = ParagonIE_Sodium_Compat::CRYPTO_BOX_PUBLICKEYBYTES;
const CRYPTO_BOX_KEYPAIRBYTES = ParagonIE_Sodium_Compat::CRYPTO_BOX_KEYPAIRBYTES;
const CRYPTO_BOX_MACBYTES = ParagonIE_Sodium_Compat::CRYPTO_BOX_MACBYTES;
const CRYPTO_BOX_NONCEBYTES = ParagonIE_Sodium_Compat::CRYPTO_BOX_NONCEBYTES;
const CRYPTO_BOX_SEEDBYTES = ParagonIE_Sodium_Compat::CRYPTO_BOX_SEEDBYTES;
const CRYPTO_KX_BYTES = ParagonIE_Sodium_Compat::CRYPTO_KX_BYTES;
const CRYPTO_KX_SEEDBYTES = ParagonIE_Sodium_Compat::CRYPTO_KX_SEEDBYTES;
const CRYPTO_KX_PUBLICKEYBYTES = ParagonIE_Sodium_Compat::CRYPTO_KX_PUBLICKEYBYTES;
const CRYPTO_KX_SECRETKEYBYTES = ParagonIE_Sodium_Compat::CRYPTO_KX_SECRETKEYBYTES;
const CRYPTO_GENERICHASH_BYTES = ParagonIE_Sodium_Compat::CRYPTO_GENERICHASH_BYTES;
const CRYPTO_GENERICHASH_BYTES_MIN = ParagonIE_Sodium_Compat::CRYPTO_GENERICHASH_BYTES_MIN;
const CRYPTO_GENERICHASH_BYTES_MAX = ParagonIE_Sodium_Compat::CRYPTO_GENERICHASH_BYTES_MAX;
const CRYPTO_GENERICHASH_KEYBYTES = ParagonIE_Sodium_Compat::CRYPTO_GENERICHASH_KEYBYTES;
const CRYPTO_GENERICHASH_KEYBYTES_MIN = ParagonIE_Sodium_Compat::CRYPTO_GENERICHASH_KEYBYTES_MIN;
const CRYPTO_GENERICHASH_KEYBYTES_MAX = ParagonIE_Sodium_Compat::CRYPTO_GENERICHASH_KEYBYTES_MAX;
const CRYPTO_SCALARMULT_BYTES = ParagonIE_Sodium_Compat::CRYPTO_SCALARMULT_BYTES;
const CRYPTO_SCALARMULT_SCALARBYTES = ParagonIE_Sodium_Compat::CRYPTO_SCALARMULT_SCALARBYTES;
const CRYPTO_SHORTHASH_BYTES = ParagonIE_Sodium_Compat::CRYPTO_SHORTHASH_BYTES;
const CRYPTO_SHORTHASH_KEYBYTES = ParagonIE_Sodium_Compat::CRYPTO_SHORTHASH_KEYBYTES;
const CRYPTO_SECRETBOX_KEYBYTES = ParagonIE_Sodium_Compat::CRYPTO_SECRETBOX_KEYBYTES;
const CRYPTO_SECRETBOX_MACBYTES = ParagonIE_Sodium_Compat::CRYPTO_SECRETBOX_MACBYTES;
const CRYPTO_SECRETBOX_NONCEBYTES = ParagonIE_Sodium_Compat::CRYPTO_SECRETBOX_NONCEBYTES;
const CRYPTO_SIGN_BYTES = ParagonIE_Sodium_Compat::CRYPTO_SIGN_BYTES;
const CRYPTO_SIGN_SEEDBYTES = ParagonIE_Sodium_Compat::CRYPTO_SIGN_SEEDBYTES;
const CRYPTO_SIGN_PUBLICKEYBYTES = ParagonIE_Sodium_Compat::CRYPTO_SIGN_PUBLICKEYBYTES;
const CRYPTO_SIGN_SECRETKEYBYTES = ParagonIE_Sodium_Compat::CRYPTO_SIGN_SECRETKEYBYTES;
const CRYPTO_SIGN_KEYPAIRBYTES = ParagonIE_Sodium_Compat::CRYPTO_SIGN_KEYPAIRBYTES;
const CRYPTO_STREAM_KEYBYTES = ParagonIE_Sodium_Compat::CRYPTO_STREAM_KEYBYTES;
const CRYPTO_STREAM_NONCEBYTES = ParagonIE_Sodium_Compat::CRYPTO_STREAM_NONCEBYTES;
crypto/vendor/composer/platform_check.php000064400000001635150755146460014724 0ustar00<?php

// platform_check.php @generated by Composer

$issues = array();

if (!(PHP_VERSION_ID >= 50204)) {
    $issues[] = 'Your Composer dependencies require a PHP version ">= 5.2.4". You are running ' . PHP_VERSION . '.';
}

if ($issues) {
    if (!headers_sent()) {
        header('HTTP/1.1 500 Internal Server Error');
    }
    if (!ini_get('display_errors')) {
        if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
            fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL);
        } elseif (!headers_sent()) {
            echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL;
        }
    }
    trigger_error(
        'Composer detected issues in your platform: ' . implode(' ', $issues),
        E_USER_ERROR
    );
}
crypto/vendor/composer/autoload_files.php000064400000000522150755146460014727 0ustar00<?php

// autoload_files.php @generated by Composer

$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);

return array(
    '5255c38a0faeba867671b61dfda6d864' => $vendorDir . '/paragonie/random_compat/lib/random.php',
    '3109cb1a231dcd04bee1f9f620d46975' => $vendorDir . '/paragonie/sodium_compat/autoload.php',
);
crypto/vendor/composer/autoload_namespaces.php000064400000000225150755146460015744 0ustar00<?php

// autoload_namespaces.php @generated by Composer

$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);

return array(
);
crypto/vendor/composer/LICENSE000064400000002056150755146460012235 0ustar00
Copyright (c) Nils Adermann, Jordi Boggiano

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished
to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

crypto/vendor/composer/installed.php000064400000002744150755146460013724 0ustar00<?php return array(
    'root' => array(
        'pretty_version' => 'dev-master',
        'version' => 'dev-master',
        'type' => 'library',
        'install_path' => __DIR__ . '/../../',
        'aliases' => array(),
        'reference' => '4dbf15a23f788f9f3a3e57f5971bf957e5f9ba01',
        'name' => '__root__',
        'dev' => true,
    ),
    'versions' => array(
        '__root__' => array(
            'pretty_version' => 'dev-master',
            'version' => 'dev-master',
            'type' => 'library',
            'install_path' => __DIR__ . '/../../',
            'aliases' => array(),
            'reference' => '4dbf15a23f788f9f3a3e57f5971bf957e5f9ba01',
            'dev_requirement' => false,
        ),
        'paragonie/random_compat' => array(
            'pretty_version' => 'v2.0.21',
            'version' => '2.0.21.0',
            'type' => 'library',
            'install_path' => __DIR__ . '/../paragonie/random_compat',
            'aliases' => array(),
            'reference' => '96c132c7f2f7bc3230723b66e89f8f150b29d5ae',
            'dev_requirement' => false,
        ),
        'paragonie/sodium_compat' => array(
            'pretty_version' => 'v1.20.0',
            'version' => '1.20.0.0',
            'type' => 'library',
            'install_path' => __DIR__ . '/../paragonie/sodium_compat',
            'aliases' => array(),
            'reference' => 'e592a3e06d1fa0d43988c7c7d9948ca836f644b6',
            'dev_requirement' => false,
        ),
    ),
);
crypto/vendor/composer/installed.json000064400000012752150755146460014106 0ustar00{
    "packages": [
        {
            "name": "paragonie/random_compat",
            "version": "v2.0.21",
            "version_normalized": "2.0.21.0",
            "source": {
                "type": "git",
                "url": "https://github.com/paragonie/random_compat.git",
                "reference": "96c132c7f2f7bc3230723b66e89f8f150b29d5ae"
            },
            "dist": {
                "type": "zip",
                "url": "https://api.github.com/repos/paragonie/random_compat/zipball/96c132c7f2f7bc3230723b66e89f8f150b29d5ae",
                "reference": "96c132c7f2f7bc3230723b66e89f8f150b29d5ae",
                "shasum": ""
            },
            "require": {
                "php": ">=5.2.0"
            },
            "require-dev": {
                "phpunit/phpunit": "*"
            },
            "suggest": {
                "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
            },
            "time": "2022-02-16T17:07:03+00:00",
            "type": "library",
            "installation-source": "dist",
            "autoload": {
                "files": [
                    "lib/random.php"
                ]
            },
            "notification-url": "https://packagist.org/downloads/",
            "license": [
                "MIT"
            ],
            "authors": [
                {
                    "name": "Paragon Initiative Enterprises",
                    "email": "security@paragonie.com",
                    "homepage": "https://paragonie.com"
                }
            ],
            "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
            "keywords": [
                "csprng",
                "polyfill",
                "pseudorandom",
                "random"
            ],
            "support": {
                "email": "info@paragonie.com",
                "issues": "https://github.com/paragonie/random_compat/issues",
                "source": "https://github.com/paragonie/random_compat"
            },
            "install-path": "../paragonie/random_compat"
        },
        {
            "name": "paragonie/sodium_compat",
            "version": "v1.20.0",
            "version_normalized": "1.20.0.0",
            "source": {
                "type": "git",
                "url": "https://github.com/paragonie/sodium_compat.git",
                "reference": "e592a3e06d1fa0d43988c7c7d9948ca836f644b6"
            },
            "dist": {
                "type": "zip",
                "url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/e592a3e06d1fa0d43988c7c7d9948ca836f644b6",
                "reference": "e592a3e06d1fa0d43988c7c7d9948ca836f644b6",
                "shasum": ""
            },
            "require": {
                "paragonie/random_compat": ">=1",
                "php": "^5.2.4|^5.3|^5.4|^5.5|^5.6|^7|^8"
            },
            "require-dev": {
                "phpunit/phpunit": "^3|^4|^5|^6|^7|^8|^9"
            },
            "suggest": {
                "ext-libsodium": "PHP < 7.0: Better performance, password hashing (Argon2i), secure memory management (memzero), and better security.",
                "ext-sodium": "PHP >= 7.0: Better performance, password hashing (Argon2i), secure memory management (memzero), and better security."
            },
            "time": "2023-04-30T00:54:53+00:00",
            "type": "library",
            "installation-source": "dist",
            "autoload": {
                "files": [
                    "autoload.php"
                ]
            },
            "notification-url": "https://packagist.org/downloads/",
            "license": [
                "ISC"
            ],
            "authors": [
                {
                    "name": "Paragon Initiative Enterprises",
                    "email": "security@paragonie.com"
                },
                {
                    "name": "Frank Denis",
                    "email": "jedisct1@pureftpd.org"
                }
            ],
            "description": "Pure PHP implementation of libsodium; uses the PHP extension if it exists",
            "keywords": [
                "Authentication",
                "BLAKE2b",
                "ChaCha20",
                "ChaCha20-Poly1305",
                "Chapoly",
                "Curve25519",
                "Ed25519",
                "EdDSA",
                "Edwards-curve Digital Signature Algorithm",
                "Elliptic Curve Diffie-Hellman",
                "Poly1305",
                "Pure-PHP cryptography",
                "RFC 7748",
                "RFC 8032",
                "Salpoly",
                "Salsa20",
                "X25519",
                "XChaCha20-Poly1305",
                "XSalsa20-Poly1305",
                "Xchacha20",
                "Xsalsa20",
                "aead",
                "cryptography",
                "ecdh",
                "elliptic curve",
                "elliptic curve cryptography",
                "encryption",
                "libsodium",
                "php",
                "public-key cryptography",
                "secret-key cryptography",
                "side-channel resistant"
            ],
            "support": {
                "issues": "https://github.com/paragonie/sodium_compat/issues",
                "source": "https://github.com/paragonie/sodium_compat/tree/v1.20.0"
            },
            "install-path": "../paragonie/sodium_compat"
        }
    ],
    "dev": true,
    "dev-package-names": []
}
crypto/vendor/composer/autoload_psr4.php000064400000000217150755146460014516 0ustar00<?php

// autoload_psr4.php @generated by Composer

$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);

return array(
);
crypto/vendor/composer/ClassLoader.php000064400000034065150755146460014142 0ustar00<?php

/*
 * This file is part of Composer.
 *
 * (c) Nils Adermann <naderman@naderman.de>
 *     Jordi Boggiano <j.boggiano@seld.be>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace Composer\Autoload;

/**
 * ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
 *
 *     $loader = new \Composer\Autoload\ClassLoader();
 *
 *     // register classes with namespaces
 *     $loader->add('Symfony\Component', __DIR__.'/component');
 *     $loader->add('Symfony',           __DIR__.'/framework');
 *
 *     // activate the autoloader
 *     $loader->register();
 *
 *     // to enable searching the include path (eg. for PEAR packages)
 *     $loader->setUseIncludePath(true);
 *
 * In this example, if you try to use a class in the Symfony\Component
 * namespace or one of its children (Symfony\Component\Console for instance),
 * the autoloader will first look for the class under the component/
 * directory, and it will then fallback to the framework/ directory if not
 * found before giving up.
 *
 * This class is loosely based on the Symfony UniversalClassLoader.
 *
 * @author Fabien Potencier <fabien@symfony.com>
 * @author Jordi Boggiano <j.boggiano@seld.be>
 * @see    https://www.php-fig.org/psr/psr-0/
 * @see    https://www.php-fig.org/psr/psr-4/
 */
class ClassLoader
{
    private $vendorDir;

    // PSR-4
    private $prefixLengthsPsr4 = array();
    private $prefixDirsPsr4 = array();
    private $fallbackDirsPsr4 = array();

    // PSR-0
    private $prefixesPsr0 = array();
    private $fallbackDirsPsr0 = array();

    private $useIncludePath = false;
    private $classMap = array();
    private $classMapAuthoritative = false;
    private $missingClasses = array();
    private $apcuPrefix;

    private static $registeredLoaders = array();

    public function __construct($vendorDir = null)
    {
        $this->vendorDir = $vendorDir;
    }

    public function getPrefixes()
    {
        if (!empty($this->prefixesPsr0)) {
            return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
        }

        return array();
    }

    public function getPrefixesPsr4()
    {
        return $this->prefixDirsPsr4;
    }

    public function getFallbackDirs()
    {
        return $this->fallbackDirsPsr0;
    }

    public function getFallbackDirsPsr4()
    {
        return $this->fallbackDirsPsr4;
    }

    public function getClassMap()
    {
        return $this->classMap;
    }

    /**
     * @param array $classMap Class to filename map
     */
    public function addClassMap(array $classMap)
    {
        if ($this->classMap) {
            $this->classMap = array_merge($this->classMap, $classMap);
        } else {
            $this->classMap = $classMap;
        }
    }

    /**
     * Registers a set of PSR-0 directories for a given prefix, either
     * appending or prepending to the ones previously set for this prefix.
     *
     * @param string       $prefix  The prefix
     * @param array|string $paths   The PSR-0 root directories
     * @param bool         $prepend Whether to prepend the directories
     */
    public function add($prefix, $paths, $prepend = false)
    {
        if (!$prefix) {
            if ($prepend) {
                $this->fallbackDirsPsr0 = array_merge(
                    (array) $paths,
                    $this->fallbackDirsPsr0
                );
            } else {
                $this->fallbackDirsPsr0 = array_merge(
                    $this->fallbackDirsPsr0,
                    (array) $paths
                );
            }

            return;
        }

        $first = $prefix[0];
        if (!isset($this->prefixesPsr0[$first][$prefix])) {
            $this->prefixesPsr0[$first][$prefix] = (array) $paths;

            return;
        }
        if ($prepend) {
            $this->prefixesPsr0[$first][$prefix] = array_merge(
                (array) $paths,
                $this->prefixesPsr0[$first][$prefix]
            );
        } else {
            $this->prefixesPsr0[$first][$prefix] = array_merge(
                $this->prefixesPsr0[$first][$prefix],
                (array) $paths
            );
        }
    }

    /**
     * Registers a set of PSR-4 directories for a given namespace, either
     * appending or prepending to the ones previously set for this namespace.
     *
     * @param string       $prefix  The prefix/namespace, with trailing '\\'
     * @param array|string $paths   The PSR-4 base directories
     * @param bool         $prepend Whether to prepend the directories
     *
     * @throws \InvalidArgumentException
     */
    public function addPsr4($prefix, $paths, $prepend = false)
    {
        if (!$prefix) {
            // Register directories for the root namespace.
            if ($prepend) {
                $this->fallbackDirsPsr4 = array_merge(
                    (array) $paths,
                    $this->fallbackDirsPsr4
                );
            } else {
                $this->fallbackDirsPsr4 = array_merge(
                    $this->fallbackDirsPsr4,
                    (array) $paths
                );
            }
        } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
            // Register directories for a new namespace.
            $length = strlen($prefix);
            if ('\\' !== $prefix[$length - 1]) {
                throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
            }
            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
            $this->prefixDirsPsr4[$prefix] = (array) $paths;
        } elseif ($prepend) {
            // Prepend directories for an already registered namespace.
            $this->prefixDirsPsr4[$prefix] = array_merge(
                (array) $paths,
                $this->prefixDirsPsr4[$prefix]
            );
        } else {
            // Append directories for an already registered namespace.
            $this->prefixDirsPsr4[$prefix] = array_merge(
                $this->prefixDirsPsr4[$prefix],
                (array) $paths
            );
        }
    }

    /**
     * Registers a set of PSR-0 directories for a given prefix,
     * replacing any others previously set for this prefix.
     *
     * @param string       $prefix The prefix
     * @param array|string $paths  The PSR-0 base directories
     */
    public function set($prefix, $paths)
    {
        if (!$prefix) {
            $this->fallbackDirsPsr0 = (array) $paths;
        } else {
            $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
        }
    }

    /**
     * Registers a set of PSR-4 directories for a given namespace,
     * replacing any others previously set for this namespace.
     *
     * @param string       $prefix The prefix/namespace, with trailing '\\'
     * @param array|string $paths  The PSR-4 base directories
     *
     * @throws \InvalidArgumentException
     */
    public function setPsr4($prefix, $paths)
    {
        if (!$prefix) {
            $this->fallbackDirsPsr4 = (array) $paths;
        } else {
            $length = strlen($prefix);
            if ('\\' !== $prefix[$length - 1]) {
                throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
            }
            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
            $this->prefixDirsPsr4[$prefix] = (array) $paths;
        }
    }

    /**
     * Turns on searching the include path for class files.
     *
     * @param bool $useIncludePath
     */
    public function setUseIncludePath($useIncludePath)
    {
        $this->useIncludePath = $useIncludePath;
    }

    /**
     * Can be used to check if the autoloader uses the include path to check
     * for classes.
     *
     * @return bool
     */
    public function getUseIncludePath()
    {
        return $this->useIncludePath;
    }

    /**
     * Turns off searching the prefix and fallback directories for classes
     * that have not been registered with the class map.
     *
     * @param bool $classMapAuthoritative
     */
    public function setClassMapAuthoritative($classMapAuthoritative)
    {
        $this->classMapAuthoritative = $classMapAuthoritative;
    }

    /**
     * Should class lookup fail if not found in the current class map?
     *
     * @return bool
     */
    public function isClassMapAuthoritative()
    {
        return $this->classMapAuthoritative;
    }

    /**
     * APCu prefix to use to cache found/not-found classes, if the extension is enabled.
     *
     * @param string|null $apcuPrefix
     */
    public function setApcuPrefix($apcuPrefix)
    {
        $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
    }

    /**
     * The APCu prefix in use, or null if APCu caching is not enabled.
     *
     * @return string|null
     */
    public function getApcuPrefix()
    {
        return $this->apcuPrefix;
    }

    /**
     * Registers this instance as an autoloader.
     *
     * @param bool $prepend Whether to prepend the autoloader or not
     */
    public function register($prepend = false)
    {
        spl_autoload_register(array($this, 'loadClass'), true, $prepend);

        if (null === $this->vendorDir) {
            return;
        }

        if ($prepend) {
            self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders;
        } else {
            unset(self::$registeredLoaders[$this->vendorDir]);
            self::$registeredLoaders[$this->vendorDir] = $this;
        }
    }

    /**
     * Unregisters this instance as an autoloader.
     */
    public function unregister()
    {
        spl_autoload_unregister(array($this, 'loadClass'));

        if (null !== $this->vendorDir) {
            unset(self::$registeredLoaders[$this->vendorDir]);
        }
    }

    /**
     * Loads the given class or interface.
     *
     * @param  string    $class The name of the class
     * @return true|null True if loaded, null otherwise
     */
    public function loadClass($class)
    {
        if ($file = $this->findFile($class)) {
            includeFile($file);

            return true;
        }

        return null;
    }

    /**
     * Finds the path to the file where the class is defined.
     *
     * @param string $class The name of the class
     *
     * @return string|false The path if found, false otherwise
     */
    public function findFile($class)
    {
        // class map lookup
        if (isset($this->classMap[$class])) {
            return $this->classMap[$class];
        }
        if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
            return false;
        }
        if (null !== $this->apcuPrefix) {
            $file = apcu_fetch($this->apcuPrefix.$class, $hit);
            if ($hit) {
                return $file;
            }
        }

        $file = $this->findFileWithExtension($class, '.php');

        // Search for Hack files if we are running on HHVM
        if (false === $file && defined('HHVM_VERSION')) {
            $file = $this->findFileWithExtension($class, '.hh');
        }

        if (null !== $this->apcuPrefix) {
            apcu_add($this->apcuPrefix.$class, $file);
        }

        if (false === $file) {
            // Remember that this class does not exist.
            $this->missingClasses[$class] = true;
        }

        return $file;
    }

    /**
     * Returns the currently registered loaders indexed by their corresponding vendor directories.
     *
     * @return self[]
     */
    public static function getRegisteredLoaders()
    {
        return self::$registeredLoaders;
    }

    private function findFileWithExtension($class, $ext)
    {
        // PSR-4 lookup
        $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;

        $first = $class[0];
        if (isset($this->prefixLengthsPsr4[$first])) {
            $subPath = $class;
            while (false !== $lastPos = strrpos($subPath, '\\')) {
                $subPath = substr($subPath, 0, $lastPos);
                $search = $subPath . '\\';
                if (isset($this->prefixDirsPsr4[$search])) {
                    $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
                    foreach ($this->prefixDirsPsr4[$search] as $dir) {
                        if (file_exists($file = $dir . $pathEnd)) {
                            return $file;
                        }
                    }
                }
            }
        }

        // PSR-4 fallback dirs
        foreach ($this->fallbackDirsPsr4 as $dir) {
            if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
                return $file;
            }
        }

        // PSR-0 lookup
        if (false !== $pos = strrpos($class, '\\')) {
            // namespaced class name
            $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
                . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
        } else {
            // PEAR-like class name
            $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
        }

        if (isset($this->prefixesPsr0[$first])) {
            foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
                if (0 === strpos($class, $prefix)) {
                    foreach ($dirs as $dir) {
                        if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
                            return $file;
                        }
                    }
                }
            }
        }

        // PSR-0 fallback dirs
        foreach ($this->fallbackDirsPsr0 as $dir) {
            if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
                return $file;
            }
        }

        // PSR-0 include paths.
        if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
            return $file;
        }

        return false;
    }
}

/**
 * Scope isolated include.
 *
 * Prevents access to $this/self from included files.
 */
function includeFile($file)
{
    include $file;
}
crypto/vendor/composer/autoload_real.php000064400000004765150755146460014565 0ustar00<?php

// autoload_real.php @generated by Composer

class ComposerAutoloaderInite213e65b2dafae4ad799b13fe0d36f8e
{
    private static $loader;

    public static function loadClassLoader($class)
    {
        if ('Composer\Autoload\ClassLoader' === $class) {
            require __DIR__ . '/ClassLoader.php';
        }
    }

    /**
     * @return \Composer\Autoload\ClassLoader
     */
    public static function getLoader()
    {
        if (null !== self::$loader) {
            return self::$loader;
        }

        require __DIR__ . '/platform_check.php';

        spl_autoload_register(array('ComposerAutoloaderInite213e65b2dafae4ad799b13fe0d36f8e', 'loadClassLoader'), true, true);
        self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
        spl_autoload_unregister(array('ComposerAutoloaderInite213e65b2dafae4ad799b13fe0d36f8e', 'loadClassLoader'));

        $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
        if ($useStaticLoader) {
            require __DIR__ . '/autoload_static.php';

            call_user_func(\Composer\Autoload\ComposerStaticInite213e65b2dafae4ad799b13fe0d36f8e::getInitializer($loader));
        } else {
            $map = require __DIR__ . '/autoload_namespaces.php';
            foreach ($map as $namespace => $path) {
                $loader->set($namespace, $path);
            }

            $map = require __DIR__ . '/autoload_psr4.php';
            foreach ($map as $namespace => $path) {
                $loader->setPsr4($namespace, $path);
            }

            $classMap = require __DIR__ . '/autoload_classmap.php';
            if ($classMap) {
                $loader->addClassMap($classMap);
            }
        }

        $loader->register(true);

        if ($useStaticLoader) {
            $includeFiles = Composer\Autoload\ComposerStaticInite213e65b2dafae4ad799b13fe0d36f8e::$files;
        } else {
            $includeFiles = require __DIR__ . '/autoload_files.php';
        }
        foreach ($includeFiles as $fileIdentifier => $file) {
            composerRequiree213e65b2dafae4ad799b13fe0d36f8e($fileIdentifier, $file);
        }

        return $loader;
    }
}

function composerRequiree213e65b2dafae4ad799b13fe0d36f8e($fileIdentifier, $file)
{
    if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
        require $file;

        $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
    }
}
crypto/vendor/composer/autoload_static.php000064400000001447150755146460015123 0ustar00<?php

// autoload_static.php @generated by Composer

namespace Composer\Autoload;

class ComposerStaticInite213e65b2dafae4ad799b13fe0d36f8e
{
    public static $files = array (
        '5255c38a0faeba867671b61dfda6d864' => __DIR__ . '/..' . '/paragonie/random_compat/lib/random.php',
        '3109cb1a231dcd04bee1f9f620d46975' => __DIR__ . '/..' . '/paragonie/sodium_compat/autoload.php',
    );

    public static $classMap = array (
        'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
    );

    public static function getInitializer(ClassLoader $loader)
    {
        return \Closure::bind(function () use ($loader) {
            $loader->classMap = ComposerStaticInite213e65b2dafae4ad799b13fe0d36f8e::$classMap;

        }, null, ClassLoader::class);
    }
}
crypto/vendor/composer/InstalledVersions.php000064400000033147150755146460015416 0ustar00<?php

/*
 * This file is part of Composer.
 *
 * (c) Nils Adermann <naderman@naderman.de>
 *     Jordi Boggiano <j.boggiano@seld.be>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace Composer;

use Composer\Autoload\ClassLoader;
use Composer\Semver\VersionParser;

/**
 * This class is copied in every Composer installed project and available to all
 *
 * See also https://getcomposer.org/doc/07-runtime.md#installed-versions
 *
 * To require it's presence, you can require `composer-runtime-api ^2.0`
 */
class InstalledVersions
{
    private static $installed;
    private static $canGetVendors;
    private static $installedByVendor = array();

    /**
     * Returns a list of all package names which are present, either by being installed, replaced or provided
     *
     * @return string[]
     * @psalm-return list<string>
     */
    public static function getInstalledPackages()
    {
        $packages = array();
        foreach (self::getInstalled() as $installed) {
            $packages[] = array_keys($installed['versions']);
        }

        if (1 === \count($packages)) {
            return $packages[0];
        }

        return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
    }

    /**
     * Returns a list of all package names with a specific type e.g. 'library'
     *
     * @param  string   $type
     * @return string[]
     * @psalm-return list<string>
     */
    public static function getInstalledPackagesByType($type)
    {
        $packagesByType = array();

        foreach (self::getInstalled() as $installed) {
            foreach ($installed['versions'] as $name => $package) {
                if (isset($package['type']) && $package['type'] === $type) {
                    $packagesByType[] = $name;
                }
            }
        }

        return $packagesByType;
    }

    /**
     * Checks whether the given package is installed
     *
     * This also returns true if the package name is provided or replaced by another package
     *
     * @param  string $packageName
     * @param  bool   $includeDevRequirements
     * @return bool
     */
    public static function isInstalled($packageName, $includeDevRequirements = true)
    {
        foreach (self::getInstalled() as $installed) {
            if (isset($installed['versions'][$packageName])) {
                return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']);
            }
        }

        return false;
    }

    /**
     * Checks whether the given package satisfies a version constraint
     *
     * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call:
     *
     *   Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3')
     *
     * @param  VersionParser $parser      Install composer/semver to have access to this class and functionality
     * @param  string        $packageName
     * @param  string|null   $constraint  A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package
     * @return bool
     */
    public static function satisfies(VersionParser $parser, $packageName, $constraint)
    {
        $constraint = $parser->parseConstraints($constraint);
        $provided = $parser->parseConstraints(self::getVersionRanges($packageName));

        return $provided->matches($constraint);
    }

    /**
     * Returns a version constraint representing all the range(s) which are installed for a given package
     *
     * It is easier to use this via isInstalled() with the $constraint argument if you need to check
     * whether a given version of a package is installed, and not just whether it exists
     *
     * @param  string $packageName
     * @return string Version constraint usable with composer/semver
     */
    public static function getVersionRanges($packageName)
    {
        foreach (self::getInstalled() as $installed) {
            if (!isset($installed['versions'][$packageName])) {
                continue;
            }

            $ranges = array();
            if (isset($installed['versions'][$packageName]['pretty_version'])) {
                $ranges[] = $installed['versions'][$packageName]['pretty_version'];
            }
            if (array_key_exists('aliases', $installed['versions'][$packageName])) {
                $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
            }
            if (array_key_exists('replaced', $installed['versions'][$packageName])) {
                $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
            }
            if (array_key_exists('provided', $installed['versions'][$packageName])) {
                $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
            }

            return implode(' || ', $ranges);
        }

        throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
    }

    /**
     * @param  string      $packageName
     * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
     */
    public static function getVersion($packageName)
    {
        foreach (self::getInstalled() as $installed) {
            if (!isset($installed['versions'][$packageName])) {
                continue;
            }

            if (!isset($installed['versions'][$packageName]['version'])) {
                return null;
            }

            return $installed['versions'][$packageName]['version'];
        }

        throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
    }

    /**
     * @param  string      $packageName
     * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
     */
    public static function getPrettyVersion($packageName)
    {
        foreach (self::getInstalled() as $installed) {
            if (!isset($installed['versions'][$packageName])) {
                continue;
            }

            if (!isset($installed['versions'][$packageName]['pretty_version'])) {
                return null;
            }

            return $installed['versions'][$packageName]['pretty_version'];
        }

        throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
    }

    /**
     * @param  string      $packageName
     * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference
     */
    public static function getReference($packageName)
    {
        foreach (self::getInstalled() as $installed) {
            if (!isset($installed['versions'][$packageName])) {
                continue;
            }

            if (!isset($installed['versions'][$packageName]['reference'])) {
                return null;
            }

            return $installed['versions'][$packageName]['reference'];
        }

        throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
    }

    /**
     * @param  string      $packageName
     * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path.
     */
    public static function getInstallPath($packageName)
    {
        foreach (self::getInstalled() as $installed) {
            if (!isset($installed['versions'][$packageName])) {
                continue;
            }

            return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null;
        }

        throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
    }

    /**
     * @return array
     * @psalm-return array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}
     */
    public static function getRootPackage()
    {
        $installed = self::getInstalled();

        return $installed[0]['root'];
    }

    /**
     * Returns the raw installed.php data for custom implementations
     *
     * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
     * @return array[]
     * @psalm-return array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string}>}
     */
    public static function getRawData()
    {
        @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED);

        if (null === self::$installed) {
            // only require the installed.php file if this file is loaded from its dumped location,
            // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
            if (substr(__DIR__, -8, 1) !== 'C') {
                self::$installed = include __DIR__ . '/installed.php';
            } else {
                self::$installed = array();
            }
        }

        return self::$installed;
    }

    /**
     * Returns the raw data of all installed.php which are currently loaded for custom implementations
     *
     * @return array[]
     * @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string}>}>
     */
    public static function getAllRawData()
    {
        return self::getInstalled();
    }

    /**
     * Lets you reload the static array from another file
     *
     * This is only useful for complex integrations in which a project needs to use
     * this class but then also needs to execute another project's autoloader in process,
     * and wants to ensure both projects have access to their version of installed.php.
     *
     * A typical case would be PHPUnit, where it would need to make sure it reads all
     * the data it needs from this class, then call reload() with
     * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure
     * the project in which it runs can then also use this class safely, without
     * interference between PHPUnit's dependencies and the project's dependencies.
     *
     * @param  array[] $data A vendor/composer/installed.php data set
     * @return void
     *
     * @psalm-param array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string}>} $data
     */
    public static function reload($data)
    {
        self::$installed = $data;
        self::$installedByVendor = array();
    }

    /**
     * @return array[]
     * @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string}>}>
     */
    private static function getInstalled()
    {
        if (null === self::$canGetVendors) {
            self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
        }

        $installed = array();

        if (self::$canGetVendors) {
            foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
                if (isset(self::$installedByVendor[$vendorDir])) {
                    $installed[] = self::$installedByVendor[$vendorDir];
                } elseif (is_file($vendorDir.'/composer/installed.php')) {
                    $installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
                    if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
                        self::$installed = $installed[count($installed) - 1];
                    }
                }
            }
        }

        if (null === self::$installed) {
            // only require the installed.php file if this file is loaded from its dumped location,
            // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
            if (substr(__DIR__, -8, 1) !== 'C') {
                self::$installed = require __DIR__ . '/installed.php';
            } else {
                self::$installed = array();
            }
        }
        $installed[] = self::$installed;

        return $installed;
    }
}
crypto/vendor/composer/autoload_classmap.php000064400000000350150755146460015427 0ustar00<?php

// autoload_classmap.php @generated by Composer

$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);

return array(
    'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
);
crypto/vendor/autoload.php000064400000000404150755146460011715 0ustar00<?php

// autoload.php @generated by Composer

if (!class_exists('ComposerAutoloaderInite213e65b2dafae4ad799b13fe0d36f8e')) {
	require_once __DIR__ . '/composer/autoload_real.php';
}

return ComposerAutoloaderInite213e65b2dafae4ad799b13fe0d36f8e::getLoader();
waf/wfWAFUserIPRange.php000064400000017327150755146460011100 0ustar00<?php
if (!defined('WFWAF_RUN_COMPLETE')) {

/**
 *
 */
class wfWAFUserIPRange {

	/**
	 * @var string|null
	 */
	private $ip_string;

	/**
	 * @param string|null $ip_string
	 */
	public function __construct($ip_string = null) {
		$this->setIPString($ip_string);
	}
	
	public function isIPInRange($ip) {
		$ip_string = $this->getIPString();
		
		if (strpos($ip_string, '/') !== false) { //CIDR range -- 127.0.0.1/24
			return wfWAFUtils::subnetContainsIP($ip_string, $ip);
		}
		else if (strpos($ip_string, '[') !== false) //Bracketed range -- 127.0.0.[1-100]
		{
			// IPv4 range
			if (strpos($ip_string, '.') !== false && strpos($ip, '.') !== false) {
				// IPv4-mapped-IPv6
				if (preg_match('/:ffff:([^:]+)$/i', $ip_string, $matches)) {
					$ip_string = $matches[1];
				}
				if (preg_match('/:ffff:([^:]+)$/i', $ip, $matches)) {
					$ip = $matches[1];
				}
				
				// Range check
				if (preg_match('/\[\d+\-\d+\]/', $ip_string)) {
					$IPparts = explode('.', $ip);
					$whiteParts = explode('.', $ip_string);
					$mismatch = false;
					if (count($whiteParts) != 4 || count($IPparts) != 4) {
						return false;
					}
					
					for ($i = 0; $i <= 3; $i++) {
						if (preg_match('/^\[(\d+)\-(\d+)\]$/', $whiteParts[$i], $m)) {
							if ($IPparts[$i] < $m[1] || $IPparts[$i] > $m[2]) {
								$mismatch = true;
							}
						}
						else if ($whiteParts[$i] != $IPparts[$i]) {
							$mismatch = true;
						}
					}
					if ($mismatch === false) {
						return true; // Is whitelisted because we did not get a mismatch
					}
				}
				else if ($ip_string == $ip) {
					return true;
				}
				
				// IPv6 range
			}
			else if (strpos($ip_string, ':') !== false && strpos($ip, ':') !== false) {
				$ip = strtolower(wfWAFUtils::expandIPv6Address($ip));
				$ip_string = strtolower(self::expandIPv6Range($ip_string));
				if (preg_match('/\[[a-f0-9]+\-[a-f0-9]+\]/i', $ip_string)) {
					$IPparts = explode(':', $ip);
					$whiteParts = explode(':', $ip_string);
					$mismatch = false;
					if (count($whiteParts) != 8 || count($IPparts) != 8) {
						return false;
					}
					
					for ($i = 0; $i <= 7; $i++) {
						if (preg_match('/^\[([a-f0-9]+)\-([a-f0-9]+)\]$/i', $whiteParts[$i], $m)) {
							$ip_group = hexdec($IPparts[$i]);
							$range_group_from = hexdec($m[1]);
							$range_group_to = hexdec($m[2]);
							if ($ip_group < $range_group_from || $ip_group > $range_group_to) {
								$mismatch = true;
								break;
							}
						}
						else if ($whiteParts[$i] != $IPparts[$i]) {
							$mismatch = true;
							break;
						}
					}
					if ($mismatch === false) {
						return true; // Is whitelisted because we did not get a mismatch
					}
				}
				else if ($ip_string == $ip) {
					return true;
				}
			}
		}
		else if (strpos($ip_string, '-') !== false) { //Linear range -- 127.0.0.1 - 127.0.1.100
			list($ip1, $ip2) = explode('-', $ip_string);
			$ip1N = wfWAFUtils::inet_pton($ip1);
			$ip2N = wfWAFUtils::inet_pton($ip2);
			$ipN = wfWAFUtils::inet_pton($ip);
			return (strcmp($ip1N, $ipN) <= 0 && strcmp($ip2N, $ipN) >= 0);
		}
		else { //Treat as a literal IP
			$ip1 = @wfWAFUtils::inet_pton($ip_string);
			$ip2 = @wfWAFUtils::inet_pton($ip);
			if ($ip1 !== false && $ip1 == $ip2) {
				return true;
			}
		}
		
		return false;
	}

	private static function repeatString($string, $count) {
		if ($count <= 0)
			return '';
		return str_repeat($string, $count);
	}

	/**
	 * Expand a compressed printable range representation of an IPv6 address.
	 *
	 * @todo Hook up exceptions for better error handling.
	 * @todo Allow IPv4 mapped IPv6 addresses (::ffff:192.168.1.1).
	 * @param string $ip_range
	 * @return string
	 */
	public static function expandIPv6Range($ip_range) {
		$colon_count = substr_count($ip_range, ':');
		$dbl_colon_count = substr_count($ip_range, '::');
		if ($dbl_colon_count > 1) {
			return false;
		}
		$dbl_colon_pos = strpos($ip_range, '::');
		if ($dbl_colon_pos !== false) {
			$ip_range = str_replace('::', self::repeatString(':0000',
					(($dbl_colon_pos === 0 || $dbl_colon_pos === strlen($ip_range) - 2) ? 9 : 8) - $colon_count) . ':', $ip_range);
			$ip_range = trim($ip_range, ':');
		}
		$colon_count = substr_count($ip_range, ':');
		if ($colon_count != 7) {
			return false;
		}

		$groups = explode(':', $ip_range);
		$expanded = '';
		foreach ($groups as $group) {
			if (preg_match('/\[([a-f0-9]{1,4})\-([a-f0-9]{1,4})\]/i', $group, $matches)) {
				$expanded .= sprintf('[%s-%s]', str_pad(strtolower($matches[1]), 4, '0', STR_PAD_LEFT), str_pad(strtolower($matches[2]), 4, '0', STR_PAD_LEFT)) . ':';
			} else if (preg_match('/[a-f0-9]{1,4}/i', $group)) {
				$expanded .= str_pad(strtolower($group), 4, '0', STR_PAD_LEFT) . ':';
			} else {
				return false;
			}
		}
		return trim($expanded, ':');
	}

	/**
	 * @return bool
	 */
	public function isValidRange() {
		return $this->isValidCIDRRange() || $this->isValidBracketedRange() || $this->isValidLinearRange() || filter_var($this->getIPString(), FILTER_VALIDATE_IP) !== false;
	}
	
	public function isValidCIDRRange() { //e.g., 192.0.2.1/24
		$ip_string = $this->getIPString();
		if (preg_match('/[^0-9a-f:\/\.]/i', $ip_string)) { return false; }
		$components = explode('/', $ip_string);
		if (count($components) != 2) { return false; }
		
		list($ip, $prefix) = $components;
		if (filter_var($ip, FILTER_VALIDATE_IP) === false) { return false; }
		
		if (!preg_match('/^\d+$/', $prefix)) { return false; }
		
		if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
			if ($prefix < 0 || $prefix > 32) { return false; }
		}
		else {
			if ($prefix < 1 || $prefix > 128) { return false; }
		}
		
		return true;
	}
	
	public function isValidBracketedRange() { //e.g., 192.0.2.[1-10]
		$ip_string = $this->getIPString();
		if (preg_match('/[^0-9a-f:\.\[\]\-]/i', $ip_string)) { return false; }
		if (strpos($ip_string, '.') !== false) { //IPv4
			if (preg_match_all('/(\d+)/', $ip_string, $matches) > 0) {
				foreach ($matches[1] as $match) {
					$group = (int) $match;
					if ($group > 255 || $group < 0) {
						return false;
					}
				}
			}
			
			$group_regex = '([0-9]{1,3}|\[[0-9]{1,3}\-[0-9]{1,3}\])';
			return preg_match('/^' . str_repeat("{$group_regex}\\.", 3) . $group_regex . '$/i', $ip_string) > 0;
		}
		
		//IPv6
		if (strpos($ip_string, '::') !== false) {
			$ip_string = self::expandIPv6Range($ip_string);
		}
		if (!$ip_string) {
			return false;
		}
		$group_regex = '([a-f0-9]{1,4}|\[[a-f0-9]{1,4}\-[a-f0-9]{1,4}\])';
		return preg_match('/^' . str_repeat("$group_regex:", 7) . $group_regex . '$/i', $ip_string) > 0;
	}
	
	public function isValidLinearRange() { //e.g., 192.0.2.1-192.0.2.100
		$ip_string = $this->getIPString();
		if (preg_match('/[^0-9a-f:\.\-]/i', $ip_string)) { return false; }
		list($ip1, $ip2) = explode("-", $ip_string);
		$ip1N = @wfWAFUtils::inet_pton($ip1);
		$ip2N = @wfWAFUtils::inet_pton($ip2);
		
		if ($ip1N === false || filter_var($ip1, FILTER_VALIDATE_IP) === false || $ip2N === false || filter_var($ip2, FILTER_VALIDATE_IP) === false) {
			return false;
		}
		
		return strcmp($ip1N, $ip2N) <= 0;
	}
	
	protected function _sanitizeIPRange($ip_string) {
		$ip_string = preg_replace('/\s/', '', $ip_string); //Strip whitespace
		$ip_string = preg_replace('/[\\x{2013}-\\x{2015}]/u', '-', $ip_string); //Non-hyphen dashes to hyphen
		$ip_string = strtolower($ip_string);
		
		if (preg_match('/^\d+-\d+$/', $ip_string)) { //v5 32 bit int style format
			list($start, $end) = explode('-', $ip_string);
			$start = long2ip($start);
			$end = long2ip($end);
			$ip_string = "{$start}-{$end}";
		}
		
		return $ip_string;
	}


	/**
	 * @return string|null
	 */
	public function getIPString() {
		return $this->ip_string;
	}

	/**
	 * @param string|null $ip_string
	 */
	public function setIPString($ip_string) {
		$this->ip_string = $this->_sanitizeIPRange($ip_string);
	}
}
}waf/pomo/po.php000064400000037406150755146460007451 0ustar00<?php
/**
 * This is a modified version of the POMO library included with WordPress. The WordPress copyright has been included
 * for attribution.
 */

/*
WordPress - Web publishing software

Copyright 2011-2020 by the contributors

This program 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 2 of the License, or
(at your option) any later version.

This program 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 this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

This program incorporates work covered by the following copyright and
permission notices:

  b2 is (c) 2001, 2002 Michel Valdrighi - https://cafelog.com

  Wherever third party code has been used, credit has been given in the code's
  comments.

  b2 is released under the GPL

and

  WordPress - Web publishing software

  Copyright 2003-2010 by the contributors

  WordPress is released under the GPL
 */


/**
 * Class for working with PO files
 *
 * @version $Id: po.php 1158 2015-11-20 04:31:23Z dd32 $
 * @package pomo
 * @subpackage po
 */

require_once __DIR__ . '/translations.php';

if ( ! defined( 'WF_PO_MAX_LINE_LEN' ) ) {
	define( 'WF_PO_MAX_LINE_LEN', 79 );
}

ini_set( 'auto_detect_line_endings', 1 );

/**
 * Routines for working with PO files
 */
if ( ! class_exists( 'wfPO', false ) ) :
	class wfPO extends wfGettext_Translations {

		var $comments_before_headers = '';

		/**
		 * Exports headers to a PO entry
		 *
		 * @return string msgid/msgstr PO entry for this PO file headers, doesn't contain newline at the end
		 */
		function export_headers() {
			$header_string = '';
			foreach ( $this->headers as $header => $value ) {
				$header_string .= "$header: $value\n";
			}
			$poified = wfPO::poify( $header_string );
			if ( $this->comments_before_headers ) {
				$before_headers = $this->prepend_each_line( rtrim( $this->comments_before_headers ) . "\n", '# ' );
			} else {
				$before_headers = '';
			}
			return rtrim( "{$before_headers}msgid \"\"\nmsgstr $poified" );
		}

		/**
		 * Exports all entries to PO format
		 *
		 * @return string sequence of mgsgid/msgstr PO strings, doesn't containt newline at the end
		 */
		function export_entries() {
			// TODO: Sorting.
			return implode( "\n\n", array_map( array('wfPO', 'export_entry' ), $this->entries ) );
		}

		/**
		 * Exports the whole PO file as a string
		 *
		 * @param bool $include_headers whether to include the headers in the export
		 * @return string ready for inclusion in PO file string for headers and all the enrtries
		 */
		function export( $include_headers = true ) {
			$res = '';
			if ( $include_headers ) {
				$res .= $this->export_headers();
				$res .= "\n\n";
			}
			$res .= $this->export_entries();
			return $res;
		}

		/**
		 * Same as {@link export}, but writes the result to a file
		 *
		 * @param string $filename        Where to write the PO string.
		 * @param bool   $include_headers Whether to include the headers in the export.
		 * @return bool true on success, false on error
		 */
		function export_to_file( $filename, $include_headers = true ) {
			$fh = fopen( $filename, 'w' );
			if ( false === $fh ) {
				return false;
			}
			$export = $this->export( $include_headers );
			$res    = fwrite( $fh, $export );
			if ( false === $res ) {
				return false;
			}
			return fclose( $fh );
		}

		/**
		 * Text to include as a comment before the start of the PO contents
		 *
		 * Doesn't need to include # in the beginning of lines, these are added automatically
		 *
		 * @param string $text Text to include as a comment.
		 */
		function set_comment_before_headers( $text ) {
			$this->comments_before_headers = $text;
		}

		/**
		 * Formats a string in PO-style
		 *
		 * @param string $string the string to format
		 * @return string the poified string
		 */
		public static function poify( $string ) {
			$quote   = '"';
			$slash   = '\\';
			$newline = "\n";

			$replaces = array(
				"$slash" => "$slash$slash",
				"$quote" => "$slash$quote",
				"\t"     => '\t',
			);

			$string = str_replace( array_keys( $replaces ), array_values( $replaces ), $string );

			$po = $quote . implode( "${slash}n$quote$newline$quote", explode( $newline, $string ) ) . $quote;
			// Add empty string on first line for readbility.
			if ( false !== strpos( $string, $newline ) &&
				( substr_count( $string, $newline ) > 1 || substr( $string, -strlen( $newline ) ) !== $newline ) ) {
				$po = "$quote$quote$newline$po";
			}
			// Remove empty strings.
			$po = str_replace( "$newline$quote$quote", '', $po );
			return $po;
		}

		/**
		 * Gives back the original string from a PO-formatted string
		 *
		 * @param string $string PO-formatted string
		 * @return string enascaped string
		 */
		public static function unpoify( $string ) {
			$escapes               = array(
				't'  => "\t",
				'n'  => "\n",
				'r'  => "\r",
				'\\' => '\\',
			);
			$lines                 = array_map( 'trim', explode( "\n", $string ) );
			$lines                 = array_map( array('wfPO', 'trim_quotes' ), $lines );
			$unpoified             = '';
			$previous_is_backslash = false;
			foreach ( $lines as $line ) {
				preg_match_all( '/./u', $line, $chars );
				$chars = $chars[0];
				foreach ( $chars as $char ) {
					if ( ! $previous_is_backslash ) {
						if ( '\\' === $char ) {
							$previous_is_backslash = true;
						} else {
							$unpoified .= $char;
						}
					} else {
						$previous_is_backslash = false;
						$unpoified            .= isset( $escapes[ $char ] ) ? $escapes[ $char ] : $char;
					}
				}
			}

			// Standardise the line endings on imported content, technically PO files shouldn't contain \r.
			$unpoified = str_replace( array( "\r\n", "\r" ), "\n", $unpoified );

			return $unpoified;
		}

		/**
		 * Inserts $with in the beginning of every new line of $string and
		 * returns the modified string
		 *
		 * @param string $string prepend lines in this string
		 * @param string $with prepend lines with this string
		 */
		public static function prepend_each_line( $string, $with ) {
			$lines  = explode( "\n", $string );
			$append = '';
			if ( "\n" === substr( $string, -1 ) && '' === end( $lines ) ) {
				/*
				 * Last line might be empty because $string was terminated
				 * with a newline, remove it from the $lines array,
				 * we'll restore state by re-terminating the string at the end.
				 */
				array_pop( $lines );
				$append = "\n";
			}
			foreach ( $lines as &$line ) {
				$line = $with . $line;
			}
			unset( $line );
			return implode( "\n", $lines ) . $append;
		}

		/**
		 * Prepare a text as a comment -- wraps the lines and prepends #
		 * and a special character to each line
		 *
		 * @access private
		 * @param string $text the comment text
		 * @param string $char character to denote a special PO comment,
		 *  like :, default is a space
		 */
		public static function comment_block( $text, $char = ' ' ) {
			$text = wordwrap( $text, WF_PO_MAX_LINE_LEN - 3 );
			return wfPO::prepend_each_line( $text, "#$char " );
		}

		/**
		 * Builds a string from the entry for inclusion in PO file
		 *
		 * @param wfTranslation_Entry $entry the entry to convert to po string (passed by reference).
		 * @return string|false PO-style formatted string for the entry or
		 *  false if the entry is empty
		 */
		public static function export_entry( &$entry ) {
			if ( null === $entry->singular || '' === $entry->singular ) {
				return false;
			}
			$po = array();
			if ( ! empty( $entry->translator_comments ) ) {
				$po[] = wfPO::comment_block( $entry->translator_comments );
			}
			if ( ! empty( $entry->extracted_comments ) ) {
				$po[] = wfPO::comment_block( $entry->extracted_comments, '.' );
			}
			if ( ! empty( $entry->references ) ) {
				$po[] = wfPO::comment_block( implode( ' ', $entry->references ), ':' );
			}
			if ( ! empty( $entry->flags ) ) {
				$po[] = wfPO::comment_block( implode( ', ', $entry->flags ), ',' );
			}
			if ( $entry->context ) {
				$po[] = 'msgctxt ' . wfPO::poify( $entry->context );
			}
			$po[] = 'msgid ' . wfPO::poify( $entry->singular );
			if ( ! $entry->is_plural ) {
				$translation = empty( $entry->translations ) ? '' : $entry->translations[0];
				$translation = wfPO::match_begin_and_end_newlines( $translation, $entry->singular );
				$po[]        = 'msgstr ' . wfPO::poify( $translation );
			} else {
				$po[]         = 'msgid_plural ' . wfPO::poify( $entry->plural );
				$translations = empty( $entry->translations ) ? array( '', '' ) : $entry->translations;
				foreach ( $translations as $i => $translation ) {
					$translation = wfPO::match_begin_and_end_newlines( $translation, $entry->plural );
					$po[]        = "msgstr[$i] " . wfPO::poify( $translation );
				}
			}
			return implode( "\n", $po );
		}

		public static function match_begin_and_end_newlines( $translation, $original ) {
			if ( '' === $translation ) {
				return $translation;
			}

			$original_begin    = "\n" === substr( $original, 0, 1 );
			$original_end      = "\n" === substr( $original, -1 );
			$translation_begin = "\n" === substr( $translation, 0, 1 );
			$translation_end   = "\n" === substr( $translation, -1 );

			if ( $original_begin ) {
				if ( ! $translation_begin ) {
					$translation = "\n" . $translation;
				}
			} elseif ( $translation_begin ) {
				$translation = ltrim( $translation, "\n" );
			}

			if ( $original_end ) {
				if ( ! $translation_end ) {
					$translation .= "\n";
				}
			} elseif ( $translation_end ) {
				$translation = rtrim( $translation, "\n" );
			}

			return $translation;
		}

		/**
		 * @param string $filename
		 * @return boolean
		 */
		function import_from_file( $filename ) {
			$f = fopen( $filename, 'r' );
			if ( ! $f ) {
				return false;
			}
			$lineno = 0;
			while ( true ) {
				$res = $this->read_entry( $f, $lineno );
				if ( ! $res ) {
					break;
				}
				if ( '' === $res['entry']->singular ) {
					$this->set_headers( $this->make_headers( $res['entry']->translations[0] ) );
				} else {
					$this->add_entry( $res['entry'] );
				}
			}
			wfPO::read_line( $f, 'clear' );
			if ( false === $res ) {
				return false;
			}
			if ( ! $this->headers && ! $this->entries ) {
				return false;
			}
			return true;
		}

		/**
		 * Helper function for read_entry
		 *
		 * @param string $context
		 * @return bool
		 */
		protected static function is_final( $context ) {
			return ( 'msgstr' === $context ) || ( 'msgstr_plural' === $context );
		}

		/**
		 * @param resource $f
		 * @param int      $lineno
		 * @return null|false|array
		 */
		function read_entry( $f, $lineno = 0 ) {
			$entry = new wfTranslation_Entry();
			// Where were we in the last step.
			// Can be: comment, msgctxt, msgid, msgid_plural, msgstr, msgstr_plural.
			$context      = '';
			$msgstr_index = 0;
			while ( true ) {
				$lineno++;
				$line = wfPO::read_line( $f );
				if ( ! $line ) {
					if ( feof( $f ) ) {
						if ( self::is_final( $context ) ) {
							break;
						} elseif ( ! $context ) { // We haven't read a line and EOF came.
							return null;
						} else {
							return false;
						}
					} else {
						return false;
					}
				}
				if ( "\n" === $line ) {
					continue;
				}
				$line = trim( $line );
				if ( preg_match( '/^#/', $line, $m ) ) {
					// The comment is the start of a new entry.
					if ( self::is_final( $context ) ) {
						wfPO::read_line( $f, 'put-back' );
						$lineno--;
						break;
					}
					// Comments have to be at the beginning.
					if ( $context && 'comment' !== $context ) {
						return false;
					}
					// Add comment.
					$this->add_comment_to_entry( $entry, $line );
				} elseif ( preg_match( '/^msgctxt\s+(".*")/', $line, $m ) ) {
					if ( self::is_final( $context ) ) {
						wfPO::read_line( $f, 'put-back' );
						$lineno--;
						break;
					}
					if ( $context && 'comment' !== $context ) {
						return false;
					}
					$context         = 'msgctxt';
					$entry->context .= wfPO::unpoify( $m[1] );
				} elseif ( preg_match( '/^msgid\s+(".*")/', $line, $m ) ) {
					if ( self::is_final( $context ) ) {
						wfPO::read_line( $f, 'put-back' );
						$lineno--;
						break;
					}
					if ( $context && 'msgctxt' !== $context && 'comment' !== $context ) {
						return false;
					}
					$context          = 'msgid';
					$entry->singular .= wfPO::unpoify( $m[1] );
				} elseif ( preg_match( '/^msgid_plural\s+(".*")/', $line, $m ) ) {
					if ( 'msgid' !== $context ) {
						return false;
					}
					$context          = 'msgid_plural';
					$entry->is_plural = true;
					$entry->plural   .= wfPO::unpoify( $m[1] );
				} elseif ( preg_match( '/^msgstr\s+(".*")/', $line, $m ) ) {
					if ( 'msgid' !== $context ) {
						return false;
					}
					$context             = 'msgstr';
					$entry->translations = array( wfPO::unpoify( $m[1] ) );
				} elseif ( preg_match( '/^msgstr\[(\d+)\]\s+(".*")/', $line, $m ) ) {
					if ( 'msgid_plural' !== $context && 'msgstr_plural' !== $context ) {
						return false;
					}
					$context                      = 'msgstr_plural';
					$msgstr_index                 = $m[1];
					$entry->translations[ $m[1] ] = wfPO::unpoify( $m[2] );
				} elseif ( preg_match( '/^".*"$/', $line ) ) {
					$unpoified = wfPO::unpoify( $line );
					switch ( $context ) {
						case 'msgid':
							$entry->singular .= $unpoified;
							break;
						case 'msgctxt':
							$entry->context .= $unpoified;
							break;
						case 'msgid_plural':
							$entry->plural .= $unpoified;
							break;
						case 'msgstr':
							$entry->translations[0] .= $unpoified;
							break;
						case 'msgstr_plural':
							$entry->translations[ $msgstr_index ] .= $unpoified;
							break;
						default:
							return false;
					}
				} else {
					return false;
				}
			}

			$have_translations = false;
			foreach ( $entry->translations as $t ) {
				if ( $t || ( '0' === $t ) ) {
					$have_translations = true;
					break;
				}
			}
			if ( false === $have_translations ) {
				$entry->translations = array();
			}

			return array(
				'entry'  => $entry,
				'lineno' => $lineno,
			);
		}

		/**
		 * @param resource $f
		 * @param string   $action
		 * @return boolean
		 */
		function read_line( $f, $action = 'read' ) {
			static $last_line     = '';
			static $use_last_line = false;
			if ( 'clear' === $action ) {
				$last_line = '';
				return true;
			}
			if ( 'put-back' === $action ) {
				$use_last_line = true;
				return true;
			}
			$line          = $use_last_line ? $last_line : fgets( $f );
			$line          = ( "\r\n" === substr( $line, -2 ) ) ? rtrim( $line, "\r\n" ) . "\n" : $line;
			$last_line     = $line;
			$use_last_line = false;
			return $line;
		}

		/**
		 * @param wfTranslation_Entry $entry
		 * @param string            $po_comment_line
		 */
		function add_comment_to_entry( &$entry, $po_comment_line ) {
			$first_two = substr( $po_comment_line, 0, 2 );
			$comment   = trim( substr( $po_comment_line, 2 ) );
			if ( '#:' === $first_two ) {
				$entry->references = array_merge( $entry->references, preg_split( '/\s+/', $comment ) );
			} elseif ( '#.' === $first_two ) {
				$entry->extracted_comments = trim( $entry->extracted_comments . "\n" . $comment );
			} elseif ( '#,' === $first_two ) {
				$entry->flags = array_merge( $entry->flags, preg_split( '/,\s*/', $comment ) );
			} else {
				$entry->translator_comments = trim( $entry->translator_comments . "\n" . $comment );
			}
		}

		/**
		 * @param string $s
		 * @return string
		 */
		public static function trim_quotes( $s ) {
			if ( '"' === substr( $s, 0, 1 ) ) {
				$s = substr( $s, 1 );
			}
			if ( '"' === substr( $s, -1, 1 ) ) {
				$s = substr( $s, 0, -1 );
			}
			return $s;
		}
	}
endif;
waf/pomo/mo.php000064400000024732150755146460007444 0ustar00<?php
/**
 * This is a modified version of the POMO library included with WordPress. The WordPress copyright has been included
 * for attribution.
 */

/*
WordPress - Web publishing software

Copyright 2011-2020 by the contributors

This program 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 2 of the License, or
(at your option) any later version.

This program 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 this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

This program incorporates work covered by the following copyright and
permission notices:

  b2 is (c) 2001, 2002 Michel Valdrighi - https://cafelog.com

  Wherever third party code has been used, credit has been given in the code's
  comments.

  b2 is released under the GPL

and

  WordPress - Web publishing software

  Copyright 2003-2010 by the contributors

  WordPress is released under the GPL
 */


/**
 * Class for working with MO files
 *
 * @version $Id: mo.php 1157 2015-11-20 04:30:11Z dd32 $
 * @package pomo
 * @subpackage mo
 */

require_once __DIR__ . '/translations.php';
require_once __DIR__ . '/streams.php';

if ( ! class_exists( 'wfMO', false ) ) :
	class wfMO extends wfGettext_Translations {

		var $_nplurals = 2;

		/**
		 * Loaded MO file.
		 *
		 * @var string
		 */
		private $filename = '';

		/**
		 * Returns the loaded MO file.
		 *
		 * @return string The loaded MO file.
		 */
		public function get_filename() {
			return $this->filename;
		}

		/**
		 * Fills up with the entries from MO file $filename
		 *
		 * @param string $filename MO file to load
		 * @return bool True if the import from file was successful, otherwise false.
		 */
		function import_from_file( $filename ) {
			$reader = new wfPOMO_FileReader( $filename );

			if ( ! $reader->is_resource() ) {
				return false;
			}

			$this->filename = (string) $filename;

			return $this->import_from_reader( $reader );
		}

		/**
		 * @param string $filename
		 * @return bool
		 */
		function export_to_file( $filename ) {
			$fh = fopen( $filename, 'wb' );
			if ( ! $fh ) {
				return false;
			}
			$res = $this->export_to_file_handle( $fh );
			fclose( $fh );
			return $res;
		}

		/**
		 * @return string|false
		 */
		function export() {
			$tmp_fh = fopen( 'php://temp', 'r+' );
			if ( ! $tmp_fh ) {
				return false;
			}
			$this->export_to_file_handle( $tmp_fh );
			rewind( $tmp_fh );
			return stream_get_contents( $tmp_fh );
		}

		/**
		 * @param wfTranslation_Entry $entry
		 * @return bool
		 */
		function is_entry_good_for_export( $entry ) {
			if ( empty( $entry->translations ) ) {
				return false;
			}

			if ( ! array_filter( $entry->translations ) ) {
				return false;
			}

			return true;
		}

		/**
		 * @param resource $fh
		 * @return true
		 */
		function export_to_file_handle( $fh ) {
			$entries = array_filter( $this->entries, array( $this, 'is_entry_good_for_export' ) );
			ksort( $entries );
			$magic                     = 0x950412de;
			$revision                  = 0;
			$total                     = count( $entries ) + 1; // All the headers are one entry.
			$originals_lenghts_addr    = 28;
			$translations_lenghts_addr = $originals_lenghts_addr + 8 * $total;
			$size_of_hash              = 0;
			$hash_addr                 = $translations_lenghts_addr + 8 * $total;
			$current_addr              = $hash_addr;
			fwrite(
				$fh,
				pack(
					'V*',
					$magic,
					$revision,
					$total,
					$originals_lenghts_addr,
					$translations_lenghts_addr,
					$size_of_hash,
					$hash_addr
				)
			);
			fseek( $fh, $originals_lenghts_addr );

			// Headers' msgid is an empty string.
			fwrite( $fh, pack( 'VV', 0, $current_addr ) );
			$current_addr++;
			$originals_table = "\0";

			$reader = new wfPOMO_Reader();

			foreach ( $entries as $entry ) {
				$originals_table .= $this->export_original( $entry ) . "\0";
				$length           = $reader->strlen( $this->export_original( $entry ) );
				fwrite( $fh, pack( 'VV', $length, $current_addr ) );
				$current_addr += $length + 1; // Account for the NULL byte after.
			}

			$exported_headers = $this->export_headers();
			fwrite( $fh, pack( 'VV', $reader->strlen( $exported_headers ), $current_addr ) );
			$current_addr      += strlen( $exported_headers ) + 1;
			$translations_table = $exported_headers . "\0";

			foreach ( $entries as $entry ) {
				$translations_table .= $this->export_translations( $entry ) . "\0";
				$length              = $reader->strlen( $this->export_translations( $entry ) );
				fwrite( $fh, pack( 'VV', $length, $current_addr ) );
				$current_addr += $length + 1;
			}

			fwrite( $fh, $originals_table );
			fwrite( $fh, $translations_table );
			return true;
		}

		/**
		 * @param wfTranslation_Entry $entry
		 * @return string
		 */
		function export_original( $entry ) {
			// TODO: Warnings for control characters.
			$exported = $entry->singular;
			if ( $entry->is_plural ) {
				$exported .= "\0" . $entry->plural;
			}
			if ( $entry->context ) {
				$exported = $entry->context . "\4" . $exported;
			}
			return $exported;
		}

		/**
		 * @param wfTranslation_Entry $entry
		 * @return string
		 */
		function export_translations( $entry ) {
			// TODO: Warnings for control characters.
			return $entry->is_plural ? implode( "\0", $entry->translations ) : $entry->translations[0];
		}

		/**
		 * @return string
		 */
		function export_headers() {
			$exported = '';
			foreach ( $this->headers as $header => $value ) {
				$exported .= "$header: $value\n";
			}
			return $exported;
		}

		/**
		 * @param int $magic
		 * @return string|false
		 */
		function get_byteorder( $magic ) {
			// The magic is 0x950412de.

			// bug in PHP 5.0.2, see https://savannah.nongnu.org/bugs/?func=detailitem&item_id=10565
			$magic_little    = (int) - 1794895138;
			$magic_little_64 = (int) 2500072158;
			// 0xde120495
			$magic_big = ( (int) - 569244523 ) & 0xFFFFFFFF;
			if ( $magic_little == $magic || $magic_little_64 == $magic ) {
				return 'little';
			} elseif ( $magic_big == $magic ) {
				return 'big';
			} else {
				return false;
			}
		}

		/**
		 * @param wfPOMO_FileReader $reader
		 * @return bool True if the import was successful, otherwise false.
		 */
		function import_from_reader( $reader ) {
			$endian_string = wfMO::get_byteorder( $reader->readint32() );
			if ( false === $endian_string ) {
				return false;
			}
			$reader->setEndian( $endian_string );

			$endian = ( 'big' === $endian_string ) ? 'N' : 'V';

			$header = $reader->read( 24 );
			if ( $reader->strlen( $header ) != 24 ) {
				return false;
			}

			// Parse header.
			$header = unpack( "{$endian}revision/{$endian}total/{$endian}originals_lenghts_addr/{$endian}translations_lenghts_addr/{$endian}hash_length/{$endian}hash_addr", $header );
			if ( ! is_array( $header ) ) {
				return false;
			}

			// Support revision 0 of MO format specs, only.
			if ( 0 != $header['revision'] ) {
				return false;
			}

			// Seek to data blocks.
			$reader->seekto( $header['originals_lenghts_addr'] );

			// Read originals' indices.
			$originals_lengths_length = $header['translations_lenghts_addr'] - $header['originals_lenghts_addr'];
			if ( $originals_lengths_length != $header['total'] * 8 ) {
				return false;
			}

			$originals = $reader->read( $originals_lengths_length );
			if ( $reader->strlen( $originals ) != $originals_lengths_length ) {
				return false;
			}

			// Read translations' indices.
			$translations_lenghts_length = $header['hash_addr'] - $header['translations_lenghts_addr'];
			if ( $translations_lenghts_length != $header['total'] * 8 ) {
				return false;
			}

			$translations = $reader->read( $translations_lenghts_length );
			if ( $reader->strlen( $translations ) != $translations_lenghts_length ) {
				return false;
			}

			// Transform raw data into set of indices.
			$originals    = $reader->str_split( $originals, 8 );
			$translations = $reader->str_split( $translations, 8 );

			// Skip hash table.
			$strings_addr = $header['hash_addr'] + $header['hash_length'] * 4;

			$reader->seekto( $strings_addr );

			$strings = $reader->read_all();
			$reader->close();

			for ( $i = 0; $i < $header['total']; $i++ ) {
				$o = unpack( "{$endian}length/{$endian}pos", $originals[ $i ] );
				$t = unpack( "{$endian}length/{$endian}pos", $translations[ $i ] );
				if ( ! $o || ! $t ) {
					return false;
				}

				// Adjust offset due to reading strings to separate space before.
				$o['pos'] -= $strings_addr;
				$t['pos'] -= $strings_addr;

				$original    = $reader->substr( $strings, $o['pos'], $o['length'] );
				$translation = $reader->substr( $strings, $t['pos'], $t['length'] );

				if ( '' === $original ) {
					$this->set_headers( $this->make_headers( $translation ) );
				} else {
					$entry                          = &$this->make_entry( $original, $translation );
					$this->entries[ $entry->key() ] = &$entry;
				}
			}
			return true;
		}

		/**
		 * Build a Translation_Entry from original string and translation strings,
		 * found in a MO file
		 *
		 * @static
		 * @param string $original original string to translate from MO file. Might contain
		 *  0x04 as context separator or 0x00 as singular/plural separator
		 * @param string $translation translation string from MO file. Might contain
		 *  0x00 as a plural translations separator
		 * @return wfTranslation_Entry Entry instance.
		 */
		function &make_entry( $original, $translation ) {
			$entry = new wfTranslation_Entry();
			// Look for context, separated by \4.
			$parts = explode( "\4", $original );
			if ( isset( $parts[1] ) ) {
				$original       = $parts[1];
				$entry->context = $parts[0];
			}
			// Look for plural original.
			$parts           = explode( "\0", $original );
			$entry->singular = $parts[0];
			if ( isset( $parts[1] ) ) {
				$entry->is_plural = true;
				$entry->plural    = $parts[1];
			}
			// Plural translations are also separated by \0.
			$entry->translations = explode( "\0", $translation );
			return $entry;
		}

		/**
		 * @param int $count
		 * @return string
		 */
		function select_plural_form( $count ) {
			return $this->gettext_select_plural_form( $count );
		}

		/**
		 * @return int
		 */
		function get_plural_forms_count() {
			return $this->_nplurals;
		}
	}
endif;
waf/pomo/translations.php000064400000025350150755146460011547 0ustar00<?php
/**
 * This is a modified version of the POMO library included with WordPress. The WordPress copyright has been included
 * for attribution.
 */

/*
WordPress - Web publishing software

Copyright 2011-2020 by the contributors

This program 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 2 of the License, or
(at your option) any later version.

This program 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 this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

This program incorporates work covered by the following copyright and
permission notices:

  b2 is (c) 2001, 2002 Michel Valdrighi - https://cafelog.com

  Wherever third party code has been used, credit has been given in the code's
  comments.

  b2 is released under the GPL

and

  WordPress - Web publishing software

  Copyright 2003-2010 by the contributors

  WordPress is released under the GPL
 */


/**
 * Class for a set of entries for translation and their associated headers
 *
 * @version $Id: translations.php 1157 2015-11-20 04:30:11Z dd32 $
 * @package pomo
 * @subpackage translations
 */

require_once __DIR__ . '/plural-forms.php';
require_once __DIR__ . '/entry.php';

if ( ! class_exists( 'wfTranslations', false ) ) :
	class wfTranslations {
		var $entries = array();
		var $headers = array();

		/**
		 * Add entry to the PO structure
		 *
		 * @param array|wfTranslation_Entry $entry
		 * @return bool true on success, false if the entry doesn't have a key
		 */
		function add_entry( $entry ) {
			if ( is_array( $entry ) ) {
				$entry = new wfTranslation_Entry( $entry );
			}
			$key = $entry->key();
			if ( false === $key ) {
				return false;
			}
			$this->entries[ $key ] = &$entry;
			return true;
		}

		/**
		 * @param array|wfTranslation_Entry $entry
		 * @return bool
		 */
		function add_entry_or_merge( $entry ) {
			if ( is_array( $entry ) ) {
				$entry = new wfTranslation_Entry( $entry );
			}
			$key = $entry->key();
			if ( false === $key ) {
				return false;
			}
			if ( isset( $this->entries[ $key ] ) ) {
				$this->entries[ $key ]->merge_with( $entry );
			} else {
				$this->entries[ $key ] = &$entry;
			}
			return true;
		}

		/**
		 * Sets $header PO header to $value
		 *
		 * If the header already exists, it will be overwritten
		 *
		 * TODO: this should be out of this class, it is gettext specific
		 *
		 * @param string $header header name, without trailing :
		 * @param string $value header value, without trailing \n
		 */
		function set_header( $header, $value ) {
			$this->headers[ $header ] = $value;
		}

		/**
		 * @param array $headers
		 */
		function set_headers( $headers ) {
			foreach ( $headers as $header => $value ) {
				$this->set_header( $header, $value );
			}
		}

		/**
		 * @param string $header
		 */
		function get_header( $header ) {
			return isset( $this->headers[ $header ] ) ? $this->headers[ $header ] : false;
		}

		/**
		 * @param wfTranslation_Entry $entry
		 */
		function translate_entry( &$entry ) {
			$key = $entry->key();
			return isset( $this->entries[ $key ] ) ? $this->entries[ $key ] : false;
		}

		/**
		 * @param string $singular
		 * @param string $context
		 * @return string
		 */
		function translate( $singular, $context = null ) {
			$entry      = new wfTranslation_Entry(
				array(
					'singular' => $singular,
					'context'  => $context,
				)
			);
			$translated = $this->translate_entry( $entry );
			return ( $translated && ! empty( $translated->translations ) ) ? $translated->translations[0] : $singular;
		}

		/**
		 * Given the number of items, returns the 0-based index of the plural form to use
		 *
		 * Here, in the base Translations class, the common logic for English is implemented:
		 *  0 if there is one element, 1 otherwise
		 *
		 * This function should be overridden by the subclasses. For example MO/PO can derive the logic
		 * from their headers.
		 *
		 * @param integer $count number of items
		 */
		function select_plural_form( $count ) {
			return 1 == $count ? 0 : 1;
		}

		/**
		 * @return int
		 */
		function get_plural_forms_count() {
			return 2;
		}

		/**
		 * @param string $singular
		 * @param string $plural
		 * @param int    $count
		 * @param string $context
		 */
		function translate_plural( $singular, $plural, $count, $context = null ) {
			$entry              = new wfTranslation_Entry(
				array(
					'singular' => $singular,
					'plural'   => $plural,
					'context'  => $context,
				)
			);
			$translated         = $this->translate_entry( $entry );
			$index              = $this->select_plural_form( $count );
			$total_plural_forms = $this->get_plural_forms_count();
			if ( $translated && 0 <= $index && $index < $total_plural_forms &&
				is_array( $translated->translations ) &&
				isset( $translated->translations[ $index ] ) ) {
				return $translated->translations[ $index ];
			} else {
				return 1 == $count ? $singular : $plural;
			}
		}

		/**
		 * Merge $other in the current object.
		 *
		 * @param Object $other Another Translation object, whose translations will be merged in this one (passed by reference).
		 * @return void
		 */
		function merge_with( &$other ) {
			foreach ( $other->entries as $entry ) {
				$this->entries[ $entry->key() ] = $entry;
			}
		}

		/**
		 * @param object $other
		 */
		function merge_originals_with( &$other ) {
			foreach ( $other->entries as $entry ) {
				if ( ! isset( $this->entries[ $entry->key() ] ) ) {
					$this->entries[ $entry->key() ] = $entry;
				} else {
					$this->entries[ $entry->key() ]->merge_with( $entry );
				}
			}
		}
	}

	class wfGettext_Translations extends wfTranslations {

		private $_gettext_select_plural_form = null;

		/**
		 * The gettext implementation of select_plural_form.
		 *
		 * It lives in this class, because there are more than one descendand, which will use it and
		 * they can't share it effectively.
		 *
		 * @param int $count
		 */
		function gettext_select_plural_form( $count ) {
			if ( ! isset( $this->_gettext_select_plural_form ) || is_null( $this->_gettext_select_plural_form ) ) {
				list( $nplurals, $expression )     = $this->nplurals_and_expression_from_header( $this->get_header( 'Plural-Forms' ) );
				$this->_nplurals                   = $nplurals;
				$this->_gettext_select_plural_form = $this->make_plural_form_function( $nplurals, $expression );
			}
			return call_user_func( $this->_gettext_select_plural_form, $count );
		}

		/**
		 * @param string $header
		 * @return array
		 */
		function nplurals_and_expression_from_header( $header ) {
			if ( preg_match( '/^\s*nplurals\s*=\s*(\d+)\s*;\s+plural\s*=\s*(.+)$/', $header, $matches ) ) {
				$nplurals   = (int) $matches[1];
				$expression = trim( $matches[2] );
				return array( $nplurals, $expression );
			} else {
				return array( 2, 'n != 1' );
			}
		}

		/**
		 * Makes a function, which will return the right translation index, according to the
		 * plural forms header
		 *
		 * @param int    $nplurals
		 * @param string $expression
		 */
		function make_plural_form_function( $nplurals, $expression ) {
			try {
				$handler = new wfPlural_Forms( rtrim( $expression, ';' ) );
				return array( $handler, 'get' );
			} catch ( Exception $e ) {
				// Fall back to default plural-form function.
				return $this->make_plural_form_function( 2, 'n != 1' );
			}
		}

		/**
		 * Adds parentheses to the inner parts of ternary operators in
		 * plural expressions, because PHP evaluates ternary oerators from left to right
		 *
		 * @param string $expression the expression without parentheses
		 * @return string the expression with parentheses added
		 */
		function parenthesize_plural_exression( $expression ) {
			$expression .= ';';
			$res         = '';
			$depth       = 0;
			for ( $i = 0; $i < strlen( $expression ); ++$i ) {
				$char = $expression[ $i ];
				switch ( $char ) {
					case '?':
						$res .= ' ? (';
						$depth++;
						break;
					case ':':
						$res .= ') : (';
						break;
					case ';':
						$res  .= str_repeat( ')', $depth ) . ';';
						$depth = 0;
						break;
					default:
						$res .= $char;
				}
			}
			return rtrim( $res, ';' );
		}

		/**
		 * @param string $translation
		 * @return array
		 */
		function make_headers( $translation ) {
			$headers = array();
			// Sometimes \n's are used instead of real new lines.
			$translation = str_replace( '\n', "\n", $translation );
			$lines       = explode( "\n", $translation );
			foreach ( $lines as $line ) {
				$parts = explode( ':', $line, 2 );
				if ( ! isset( $parts[1] ) ) {
					continue;
				}
				$headers[ trim( $parts[0] ) ] = trim( $parts[1] );
			}
			return $headers;
		}

		/**
		 * @param string $header
		 * @param string $value
		 */
		function set_header( $header, $value ) {
			parent::set_header( $header, $value );
			if ( 'Plural-Forms' === $header ) {
				list( $nplurals, $expression )     = $this->nplurals_and_expression_from_header( $this->get_header( 'Plural-Forms' ) );
				$this->_nplurals                   = $nplurals;
				$this->_gettext_select_plural_form = $this->make_plural_form_function( $nplurals, $expression );
			}
		}
	}
endif;

if ( ! class_exists( 'wfNOOP_Translations', false ) ) :
	/**
	 * Provides the same interface as Translations, but doesn't do anything
	 */
	class wfNOOP_Translations {
		var $entries = array();
		var $headers = array();

		function add_entry( $entry ) {
			return true;
		}

		/**
		 * @param string $header
		 * @param string $value
		 */
		function set_header( $header, $value ) {
		}

		/**
		 * @param array $headers
		 */
		function set_headers( $headers ) {
		}

		/**
		 * @param string $header
		 * @return false
		 */
		function get_header( $header ) {
			return false;
		}

		/**
		 * @param wfTranslation_Entry $entry
		 * @return false
		 */
		function translate_entry( &$entry ) {
			return false;
		}

		/**
		 * @param string $singular
		 * @param string $context
		 */
		function translate( $singular, $context = null ) {
			return $singular;
		}

		/**
		 * @param int $count
		 * @return bool
		 */
		function select_plural_form( $count ) {
			return 1 == $count ? 0 : 1;
		}

		/**
		 * @return int
		 */
		function get_plural_forms_count() {
			return 2;
		}

		/**
		 * @param string $singular
		 * @param string $plural
		 * @param int    $count
		 * @param string $context
		 */
		function translate_plural( $singular, $plural, $count, $context = null ) {
			return 1 == $count ? $singular : $plural;
		}

		/**
		 * @param object $other
		 */
		function merge_with( &$other ) {
		}
	}
endif;waf/pomo/streams.php000064400000016510150755146460010502 0ustar00<?php
/**
 * This is a modified version of the POMO library included with WordPress. The WordPress copyright has been included
 * for attribution.
 */

/*
WordPress - Web publishing software

Copyright 2011-2020 by the contributors

This program 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 2 of the License, or
(at your option) any later version.

This program 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 this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

This program incorporates work covered by the following copyright and
permission notices:

  b2 is (c) 2001, 2002 Michel Valdrighi - https://cafelog.com

  Wherever third party code has been used, credit has been given in the code's
  comments.

  b2 is released under the GPL

and

  WordPress - Web publishing software

  Copyright 2003-2010 by the contributors

  WordPress is released under the GPL
 */


/**
 * Classes, which help reading streams of data from files.
 * Based on the classes from Danilo Segan <danilo@kvota.net>
 *
 * @version $Id: streams.php 1157 2015-11-20 04:30:11Z dd32 $
 * @package pomo
 * @subpackage streams
 */

if ( ! class_exists( 'wfPOMO_Reader', false ) ) :
	class wfPOMO_Reader {

		var $endian = 'little';
		var $_post  = '';

		private $is_overloaded;
		protected $_pos;

		/**
		 * PHP5 constructor.
		 */
		function __construct() {
			$this->is_overloaded = ( ( ini_get( 'mbstring.func_overload' ) & 2 ) != 0 ) && function_exists( 'mb_substr' ); // phpcs:ignore PHPCompatibility.IniDirectives.RemovedIniDirectives.mbstring_func_overloadDeprecated
			$this->_pos          = 0;
		}

		/**
		 * Sets the endianness of the file.
		 *
		 * @param string $endian Set the endianness of the file. Accepts 'big', or 'little'.
		 */
		function setEndian( $endian ) { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid
			$this->endian = $endian;
		}

		/**
		 * Reads a 32bit Integer from the Stream
		 *
		 * @return mixed The integer, corresponding to the next 32 bits from
		 *  the stream of false if there are not enough bytes or on error
		 */
		function readint32() {
			$bytes = $this->read( 4 );
			if ( 4 != $this->strlen( $bytes ) ) {
				return false;
			}
			$endian_letter = ( 'big' === $this->endian ) ? 'N' : 'V';
			$int           = unpack( $endian_letter, $bytes );
			return reset( $int );
		}

		/**
		 * Reads an array of 32-bit Integers from the Stream
		 *
		 * @param integer $count How many elements should be read
		 * @return mixed Array of integers or false if there isn't
		 *  enough data or on error
		 */
		function readint32array( $count ) {
			$bytes = $this->read( 4 * $count );
			if ( 4 * $count != $this->strlen( $bytes ) ) {
				return false;
			}
			$endian_letter = ( 'big' === $this->endian ) ? 'N' : 'V';
			return unpack( $endian_letter . $count, $bytes );
		}

		/**
		 * @param string $string
		 * @param int    $start
		 * @param int    $length
		 * @return string
		 */
		function substr( $string, $start, $length ) {
			if ( $this->is_overloaded ) {
				return mb_substr( $string, $start, $length, 'ascii' );
			} else {
				return substr( $string, $start, $length );
			}
		}

		/**
		 * @param string $string
		 * @return int
		 */
		function strlen( $string ) {
			if ( $this->is_overloaded ) {
				return mb_strlen( $string, 'ascii' );
			} else {
				return strlen( $string );
			}
		}

		/**
		 * @param string $string
		 * @param int    $chunk_size
		 * @return array
		 */
		function str_split( $string, $chunk_size ) {
			if ( ! function_exists( 'str_split' ) ) {
				$length = $this->strlen( $string );
				$out    = array();
				for ( $i = 0; $i < $length; $i += $chunk_size ) {
					$out[] = $this->substr( $string, $i, $chunk_size );
				}
				return $out;
			} else {
				return str_split( $string, $chunk_size );
			}
		}

		/**
		 * @return int
		 */
		function pos() {
			return $this->_pos;
		}

		/**
		 * @return true
		 */
		function is_resource() {
			return true;
		}

		/**
		 * @return true
		 */
		function close() {
			return true;
		}
	}
endif;

if ( ! class_exists( 'wfPOMO_FileReader', false ) ) :
	class wfPOMO_FileReader extends wfPOMO_Reader {

		private $_f;

		/**
		 * @param string $filename
		 */
		function __construct( $filename ) {
			parent::__construct();
			$this->_f = fopen( $filename, 'rb' );
		}

		/**
		 * @param int $bytes
		 * @return string|false Returns read string, otherwise false.
		 */
		function read( $bytes ) {
			return fread( $this->_f, $bytes );
		}

		/**
		 * @param int $pos
		 * @return boolean
		 */
		function seekto( $pos ) {
			if ( -1 == fseek( $this->_f, $pos, SEEK_SET ) ) {
				return false;
			}
			$this->_pos = $pos;
			return true;
		}

		/**
		 * @return bool
		 */
		function is_resource() {
			return is_resource( $this->_f );
		}

		/**
		 * @return bool
		 */
		function feof() {
			return feof( $this->_f );
		}

		/**
		 * @return bool
		 */
		function close() {
			return fclose( $this->_f );
		}

		/**
		 * @return string
		 */
		function read_all() {
			$all = '';
			while ( ! $this->feof() ) {
				$all .= $this->read( 4096 );
			}
			return $all;
		}
	}
endif;

if ( ! class_exists( 'wfPOMO_StringReader', false ) ) :
	/**
	 * Provides file-like methods for manipulating a string instead
	 * of a physical file.
	 */
	class wfPOMO_StringReader extends wfPOMO_Reader {

		var $_str = '';

		/**
		 * PHP5 constructor.
		 */
		function __construct( $str = '' ) {
			parent::__construct();
			$this->_str = $str;
			$this->_pos = 0;
		}

		/**
		 * @param string $bytes
		 * @return string
		 */
		function read( $bytes ) {
			$data        = $this->substr( $this->_str, $this->_pos, $bytes );
			$this->_pos += $bytes;
			if ( $this->strlen( $this->_str ) < $this->_pos ) {
				$this->_pos = $this->strlen( $this->_str );
			}
			return $data;
		}

		/**
		 * @param int $pos
		 * @return int
		 */
		function seekto( $pos ) {
			$this->_pos = $pos;
			if ( $this->strlen( $this->_str ) < $this->_pos ) {
				$this->_pos = $this->strlen( $this->_str );
			}
			return $this->_pos;
		}

		/**
		 * @return int
		 */
		function length() {
			return $this->strlen( $this->_str );
		}

		/**
		 * @return string
		 */
		function read_all() {
			return $this->substr( $this->_str, $this->_pos, $this->strlen( $this->_str ) );
		}

	}
endif;

if ( ! class_exists( 'wfPOMO_CachedFileReader', false ) ) :
	/**
	 * Reads the contents of the file in the beginning.
	 */
	class wfPOMO_CachedFileReader extends wfPOMO_StringReader {
		/**
		 * PHP5 constructor.
		 */
		function __construct( $filename ) {
			parent::__construct();
			$this->_str = file_get_contents( $filename );
			if ( false === $this->_str ) {
				return false;
			}
			$this->_pos = 0;
		}
	}
endif;

if ( ! class_exists( 'wfPOMO_CachedIntFileReader', false ) ) :
	/**
	 * Reads the contents of the file in the beginning.
	 */
	class wfPOMO_CachedIntFileReader extends wfPOMO_CachedFileReader {
		/**
		 * PHP5 constructor.
		 */
		public function __construct( $filename ) {
			parent::__construct( $filename );
		}
	}
endif;
waf/pomo/entry.php000064400000010333150755146460010162 0ustar00<?php
/**
 * This is a modified version of the POMO library included with WordPress. The WordPress copyright has been included
 * for attribution.
 */

/*
WordPress - Web publishing software

Copyright 2011-2020 by the contributors

This program 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 2 of the License, or
(at your option) any later version.

This program 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 this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

This program incorporates work covered by the following copyright and
permission notices:

  b2 is (c) 2001, 2002 Michel Valdrighi - https://cafelog.com

  Wherever third party code has been used, credit has been given in the code's
  comments.

  b2 is released under the GPL

and

  WordPress - Web publishing software

  Copyright 2003-2010 by the contributors

  WordPress is released under the GPL
 */


/**
 * Contains Translation_Entry class
 *
 * @version $Id: entry.php 1157 2015-11-20 04:30:11Z dd32 $
 * @package pomo
 * @subpackage entry
 */

if ( ! class_exists( 'wfTranslation_Entry', false ) ) :
	/**
	 * Translation_Entry class encapsulates a translatable string
	 */
	class wfTranslation_Entry {

		/**
		 * Whether the entry contains a string and its plural form, default is false
		 *
		 * @var boolean
		 */
		var $is_plural = false;

		var $context             = null;
		var $singular            = null;
		var $plural              = null;
		var $translations        = array();
		var $translator_comments = '';
		var $extracted_comments  = '';
		var $references          = array();
		var $flags               = array();

		/**
		 * @param array $args associative array, support following keys:
		 *  - singular (string) -- the string to translate, if omitted and empty entry will be created
		 *  - plural (string) -- the plural form of the string, setting this will set {@link $is_plural} to true
		 *  - translations (array) -- translations of the string and possibly -- its plural forms
		 *  - context (string) -- a string differentiating two equal strings used in different contexts
		 *  - translator_comments (string) -- comments left by translators
		 *  - extracted_comments (string) -- comments left by developers
		 *  - references (array) -- places in the code this strings is used, in relative_to_root_path/file.php:linenum form
		 *  - flags (array) -- flags like php-format
		 */
		function __construct( $args = array() ) {
			// If no singular -- empty object.
			if ( ! isset( $args['singular'] ) ) {
				return;
			}
			// Get member variable values from args hash.
			foreach ( $args as $varname => $value ) {
				$this->$varname = $value;
			}
			if ( isset( $args['plural'] ) && $args['plural'] ) {
				$this->is_plural = true;
			}
			if ( ! is_array( $this->translations ) ) {
				$this->translations = array();
			}
			if ( ! is_array( $this->references ) ) {
				$this->references = array();
			}
			if ( ! is_array( $this->flags ) ) {
				$this->flags = array();
			}
		}

		/**
		 * Generates a unique key for this entry
		 *
		 * @return string|bool the key or false if the entry is empty
		 */
		function key() {
			if ( null === $this->singular || '' === $this->singular ) {
				return false;
			}

			// Prepend context and EOT, like in MO files.
			$key = ! $this->context ? $this->singular : $this->context . "\4" . $this->singular;
			// Standardize on \n line endings.
			$key = str_replace( array( "\r\n", "\r" ), "\n", $key );

			return $key;
		}

		/**
		 * @param object $other
		 */
		function merge_with( &$other ) {
			$this->flags      = array_unique( array_merge( $this->flags, $other->flags ) );
			$this->references = array_unique( array_merge( $this->references, $other->references ) );
			if ( $this->extracted_comments != $other->extracted_comments ) {
				$this->extracted_comments .= $other->extracted_comments;
			}

		}
	}
endif;
waf/pomo/plural-forms.php000064400000020350150755146460011444 0ustar00<?php
/**
 * This is a modified version of the POMO library included with WordPress. The WordPress copyright has been included
 * for attribution.
 */

/*
WordPress - Web publishing software

Copyright 2011-2020 by the contributors

This program 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 2 of the License, or
(at your option) any later version.

This program 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 this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

This program incorporates work covered by the following copyright and
permission notices:

  b2 is (c) 2001, 2002 Michel Valdrighi - https://cafelog.com

  Wherever third party code has been used, credit has been given in the code's
  comments.

  b2 is released under the GPL

and

  WordPress - Web publishing software

  Copyright 2003-2010 by the contributors

  WordPress is released under the GPL
 */


/**
 * A gettext Plural-Forms parser.
 *
 * @since 4.9.0
 */
class wfPlural_Forms {
	/**
	 * Operator characters.
	 *
	 * @since 4.9.0
	 * @var string OP_CHARS Operator characters.
	 */
	const OP_CHARS = '|&><!=%?:';

	/**
	 * Valid number characters.
	 *
	 * @since 4.9.0
	 * @var string NUM_CHARS Valid number characters.
	 */
	const NUM_CHARS = '0123456789';

	/**
	 * Operator precedence.
	 *
	 * Operator precedence from highest to lowest. Higher numbers indicate
	 * higher precedence, and are executed first.
	 *
	 * @see https://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B#Operator_precedence
	 *
	 * @since 4.9.0
	 * @var array $op_precedence Operator precedence from highest to lowest.
	 */
	protected static $op_precedence = array(
		'%'  => 6,

		'<'  => 5,
		'<=' => 5,
		'>'  => 5,
		'>=' => 5,

		'==' => 4,
		'!=' => 4,

		'&&' => 3,

		'||' => 2,

		'?:' => 1,
		'?'  => 1,

		'('  => 0,
		')'  => 0,
	);

	/**
	 * Tokens generated from the string.
	 *
	 * @since 4.9.0
	 * @var array $tokens List of tokens.
	 */
	protected $tokens = array();

	/**
	 * Cache for repeated calls to the function.
	 *
	 * @since 4.9.0
	 * @var array $cache Map of $n => $result
	 */
	protected $cache = array();

	/**
	 * Constructor.
	 *
	 * @since 4.9.0
	 *
	 * @param string $str Plural function (just the bit after `plural=` from Plural-Forms)
	 */
	public function __construct( $str ) {
		$this->parse( $str );
	}

	/**
	 * Parse a Plural-Forms string into tokens.
	 *
	 * Uses the shunting-yard algorithm to convert the string to Reverse Polish
	 * Notation tokens.
	 *
	 * @since 4.9.0
	 *
	 * @param string $str String to parse.
	 */
	protected function parse( $str ) {
		$pos = 0;
		$len = strlen( $str );

		// Convert infix operators to postfix using the shunting-yard algorithm.
		$output = array();
		$stack  = array();
		while ( $pos < $len ) {
			$next = substr( $str, $pos, 1 );

			switch ( $next ) {
				// Ignore whitespace.
				case ' ':
				case "\t":
					$pos++;
					break;

				// Variable (n).
				case 'n':
					$output[] = array( 'var' );
					$pos++;
					break;

				// Parentheses.
				case '(':
					$stack[] = $next;
					$pos++;
					break;

				case ')':
					$found = false;
					while ( ! empty( $stack ) ) {
						$o2 = $stack[ count( $stack ) - 1 ];
						if ( '(' !== $o2 ) {
							$output[] = array( 'op', array_pop( $stack ) );
							continue;
						}

						// Discard open paren.
						array_pop( $stack );
						$found = true;
						break;
					}

					if ( ! $found ) {
						throw new Exception( 'Mismatched parentheses' );
					}

					$pos++;
					break;

				// Operators.
				case '|':
				case '&':
				case '>':
				case '<':
				case '!':
				case '=':
				case '%':
				case '?':
					$end_operator = strspn( $str, self::OP_CHARS, $pos );
					$operator     = substr( $str, $pos, $end_operator );
					if ( ! array_key_exists( $operator, self::$op_precedence ) ) {
						throw new Exception( sprintf( 'Unknown operator "%s"', $operator ) );
					}

					while ( ! empty( $stack ) ) {
						$o2 = $stack[ count( $stack ) - 1 ];

						// Ternary is right-associative in C.
						if ( '?:' === $operator || '?' === $operator ) {
							if ( self::$op_precedence[ $operator ] >= self::$op_precedence[ $o2 ] ) {
								break;
							}
						} elseif ( self::$op_precedence[ $operator ] > self::$op_precedence[ $o2 ] ) {
							break;
						}

						$output[] = array( 'op', array_pop( $stack ) );
					}
					$stack[] = $operator;

					$pos += $end_operator;
					break;

				// Ternary "else".
				case ':':
					$found = false;
					$s_pos = count( $stack ) - 1;
					while ( $s_pos >= 0 ) {
						$o2 = $stack[ $s_pos ];
						if ( '?' !== $o2 ) {
							$output[] = array( 'op', array_pop( $stack ) );
							$s_pos--;
							continue;
						}

						// Replace.
						$stack[ $s_pos ] = '?:';
						$found           = true;
						break;
					}

					if ( ! $found ) {
						throw new Exception( 'Missing starting "?" ternary operator' );
					}
					$pos++;
					break;

				// Default - number or invalid.
				default:
					if ( $next >= '0' && $next <= '9' ) {
						$span     = strspn( $str, self::NUM_CHARS, $pos );
						$output[] = array( 'value', intval( substr( $str, $pos, $span ) ) );
						$pos     += $span;
						break;
					}

					throw new Exception( sprintf( 'Unknown symbol "%s"', $next ) );
			}
		}

		while ( ! empty( $stack ) ) {
			$o2 = array_pop( $stack );
			if ( '(' === $o2 || ')' === $o2 ) {
				throw new Exception( 'Mismatched parentheses' );
			}

			$output[] = array( 'op', $o2 );
		}

		$this->tokens = $output;
	}

	/**
	 * Get the plural form for a number.
	 *
	 * Caches the value for repeated calls.
	 *
	 * @since 4.9.0
	 *
	 * @param int $num Number to get plural form for.
	 * @return int Plural form value.
	 */
	public function get( $num ) {
		if ( isset( $this->cache[ $num ] ) ) {
			return $this->cache[ $num ];
		}
		$this->cache[ $num ] = $this->execute( $num );
		return $this->cache[ $num ];
	}

	/**
	 * Execute the plural form function.
	 *
	 * @since 4.9.0
	 *
	 * @param int $n Variable "n" to substitute.
	 * @return int Plural form value.
	 */
	public function execute( $n ) {
		$stack = array();
		$i     = 0;
		$total = count( $this->tokens );
		while ( $i < $total ) {
			$next = $this->tokens[ $i ];
			$i++;
			if ( 'var' === $next[0] ) {
				$stack[] = $n;
				continue;
			} elseif ( 'value' === $next[0] ) {
				$stack[] = $next[1];
				continue;
			}

			// Only operators left.
			switch ( $next[1] ) {
				case '%':
					$v2      = array_pop( $stack );
					$v1      = array_pop( $stack );
					$stack[] = $v1 % $v2;
					break;

				case '||':
					$v2      = array_pop( $stack );
					$v1      = array_pop( $stack );
					$stack[] = $v1 || $v2;
					break;

				case '&&':
					$v2      = array_pop( $stack );
					$v1      = array_pop( $stack );
					$stack[] = $v1 && $v2;
					break;

				case '<':
					$v2      = array_pop( $stack );
					$v1      = array_pop( $stack );
					$stack[] = $v1 < $v2;
					break;

				case '<=':
					$v2      = array_pop( $stack );
					$v1      = array_pop( $stack );
					$stack[] = $v1 <= $v2;
					break;

				case '>':
					$v2      = array_pop( $stack );
					$v1      = array_pop( $stack );
					$stack[] = $v1 > $v2;
					break;

				case '>=':
					$v2      = array_pop( $stack );
					$v1      = array_pop( $stack );
					$stack[] = $v1 >= $v2;
					break;

				case '!=':
					$v2      = array_pop( $stack );
					$v1      = array_pop( $stack );
					$stack[] = $v1 != $v2;
					break;

				case '==':
					$v2      = array_pop( $stack );
					$v1      = array_pop( $stack );
					$stack[] = $v1 == $v2;
					break;

				case '?:':
					$v3      = array_pop( $stack );
					$v2      = array_pop( $stack );
					$v1      = array_pop( $stack );
					$stack[] = $v1 ? $v2 : $v3;
					break;

				default:
					throw new Exception( sprintf( 'Unknown operator "%s"', $next[1] ) );
			}
		}

		if ( count( $stack ) !== 1 ) {
			throw new Exception( 'Too many values remaining on the stack' );
		}

		return (int) $stack[0];
	}
}
waf/dummy.php000064400000005526150755146460007212 0ustar00<?php

/**
 * A dummy WAF implementation that can be used if initialization of the actual WAF failures
 */

class wfDummyWaf extends wfWAF {

	public function __construct() {
		parent::__construct(new wfDummyWafRequest(), new wfDummyWafStorageEngine());
	}

}

class wfDummyWafRequest implements wfWAFRequestInterface {

	public function getBody() {
		return null;
	}

	public function getRawBody() {
		return null;
	}

	public function getMd5Body() {
		return null;
	}

	public function getJsonBody() {
		return null;
	}

	public function getQueryString() {
		return null;
	}

	public function getMd5QueryString() {
		return null;
	}

	public function getHeaders() {
		return null;
	}

	public function getCookies() {
		return null;
	}

	public function getFiles() {
		return null;
	}

	public function getFileNames() {
		return null;
	}

	public function getHost() {
		return null;
	}

	public function getURI() {
		return null;
	}

	public function setMetadata($metadata) {
	}

	public function getMetadata() {
		return null;
	}

	public function getPath() {
		return null;
	}

	public function getIP() {
		return null;
	}

	public function getMethod() {
		return null;
	}

	public function getProtocol() {
		return null;
	}

	public function getAuth() {
		return null;
	}

	public function getTimestamp() {
		return null;
	}

	public function __toString() {
		return '';
	}

}

class wfDummyWafStorageEngine implements wfWAFStorageInterface {

	public function hasPreviousAttackData($olderThan) {
		return false;
	}

	public function hasNewerAttackData($newerThan) {
		return false;
	}

	public function getAttackData() {
		return null;
	}

	public function getAttackDataArray() {
		return array();
	}

	public function getNewestAttackDataArray($newerThan) {
		return array();
	}

	public function truncateAttackData() {
	}

	public function logAttack($failedRules, $failedParamKey, $failedParamValue, $request, $_ = null) {
	}

	public function blockIP($timestamp, $ip) {
	}

	public function isIPBlocked($ip) {
		return false;
	}

	public function purgeIPBlocks($types = wfWAFStorageInterface::IP_BLOCKS_ALL) {
	}

	public function getConfig($key, $default = null, $category = '') {
		if ($key === 'wafStatus')
			return 'disabled';
		return $default;
	}

	public function setConfig($key, $value, $category = '') {
	}

	public function unsetConfig($key, $category = '') {
	}

	public function uninstall() {
	}

	public function isInLearningMode() {
		return false;
	}

	public function isDisabled() {
		return true;
	}

	public function getRulesDSLCacheFile() {
		return null;
	}

	public function isAttackDataFull() {
		return false;
	}

	public function vacuum() {
	}

	public function getRules() {
		return array();
	}

	public function setRules($rules) {
	}

	public function needsInitialRules() {
		return false;
	}

	public function getDescription() {
		return 'Dummy Storage Engine';
	}

}waf/bootstrap.php000064400000103667150755146460010101 0ustar00<?php

/*
	php_value auto_prepend_file ~/wp-content/plugins/wordfence/waf/bootstrap.php
*/

if (!defined('WFWAF_RUN_COMPLETE')) {

if (!defined('WFWAF_AUTO_PREPEND')) {
	define('WFWAF_AUTO_PREPEND', true);
}
if (!defined('WF_IS_WP_ENGINE')) {
	define('WF_IS_WP_ENGINE', isset($_SERVER['IS_WPE']));
}
if (!defined('WF_IS_FLYWHEEL')) {
	define('WF_IS_FLYWHEEL', isset($_SERVER['SERVER_SOFTWARE']) && strpos($_SERVER['SERVER_SOFTWARE'], 'Flywheel/') === 0);
}
if (!defined('WF_IS_PRESSABLE')) {
	define('WF_IS_PRESSABLE', (defined('IS_ATOMIC') && IS_ATOMIC) || (defined('IS_PRESSABLE') && IS_PRESSABLE));
}

require(dirname(__FILE__) . '/../lib/wfVersionSupport.php');
/**
 * @var string $wfPHPDeprecatingVersion
 * @var string $wfPHPMinimumVersion
 */

if (!defined('WF_PHP_UNSUPPORTED')) {
	define('WF_PHP_UNSUPPORTED', version_compare(PHP_VERSION, $wfPHPMinimumVersion, '<'));
}

if (WF_PHP_UNSUPPORTED) {
	return;
}



require_once(dirname(__FILE__) . '/wfWAFUserIPRange.php');
require_once(dirname(__FILE__) . '/wfWAFIPBlocksController.php');
require_once(dirname(__FILE__) . '/../vendor/wordfence/wf-waf/src/init.php');

class wfWAFWordPressRequest extends wfWAFRequest {
	
	/**
	 * @param wfWAFRequest|null $request
	 * @return wfWAFRequest
	 */
	public static function createFromGlobals($request = null) {
		if (version_compare(phpversion(), '5.3.0') >= 0) {
			$class = get_called_class();
			$request = new $class();
		} else {
			$request = new self();
		}
		return parent::createFromGlobals($request);
	}

	public function getIP() {
		static $theIP = null;
		if (isset($theIP)) {
			return $theIP;
		}
		$ips = array();
		$howGet = wfWAF::getInstance()->getStorageEngine()->getConfig('howGetIPs', null, 'synced');
		if ($howGet) {
			if (is_string($howGet) && is_array($_SERVER) && array_key_exists($howGet, $_SERVER)) {
				$ips[] = array($_SERVER[$howGet], $howGet);
			}
			
			if ($howGet != 'REMOTE_ADDR') {
				$ips[] = array((is_array($_SERVER) && array_key_exists('REMOTE_ADDR', $_SERVER)) ? $_SERVER['REMOTE_ADDR'] : '127.0.0.1', 'REMOTE_ADDR');
			}
		}
		else {
			$recommendedField = wfWAF::getInstance()->getStorageEngine()->getConfig('detectProxyRecommendation', null, 'synced');
			if (!empty($recommendedField) && $recommendedField != 'UNKNOWN' && $recommendedField != 'DEFERRED') {
				if (isset($_SERVER[$recommendedField])) {
					$ips[] = array($_SERVER[$recommendedField], $recommendedField);
				}
			}
			
			$ips[] = array((is_array($_SERVER) && array_key_exists('REMOTE_ADDR', $_SERVER)) ? $_SERVER['REMOTE_ADDR'] : '127.0.0.1', 'REMOTE_ADDR');
			if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
				$ips[] = array($_SERVER['HTTP_X_FORWARDED_FOR'], 'HTTP_X_FORWARDED_FOR');
			}
			if (isset($_SERVER['HTTP_X_REAL_IP'])) {
				$ips[] = array($_SERVER['HTTP_X_REAL_IP'], 'HTTP_X_REAL_IP');
			}
		}
		
		$cleanedIP = $this->_getCleanIPAndServerVar($ips);
		if (is_array($cleanedIP)) {
			list($ip, $variable) = $cleanedIP;
			$theIP = $ip;
			return $ip;
		}
		$theIP = $cleanedIP;
		return $cleanedIP;
	}
	
	/**
	 * Expects an array of items. The items are either IPs or IPs separated by comma, space or tab. Or an array of IP's.
	 * We then examine all IP's looking for a public IP and storing private IP's in an array. If we find no public IPs we return the first private addr we found.
	 *
	 * @param array $arr
	 * @return bool|mixed
	 */
	private function _getCleanIPAndServerVar($arr) {
		$privates = array(); //Store private addrs until end as last resort.
		foreach ($arr as $entry) {
			list($item, $var) = $entry;
			if (is_array($item)) {
				foreach ($item as $j) {
					// try verifying the IP is valid before stripping the port off
					if (!$this->_isValidIP($j)) {
						$j = preg_replace('/:\d+$/', '', $j); //Strip off port
					}
					if ($this->_isValidIP($j)) {
						if ($this->_isIPv6MappedIPv4($j)) {
							$j = wfWAFUtils::inet_ntop(wfWAFUtils::inet_pton($j));
						}
						
						if ($this->_isPrivateIP($j)) {
							$privates[] = array($j, $var);
						}
						else {
							return array($j, $var);
						}
					}
				}
				continue; //This was an array so we can skip to the next item
			}
			$skipToNext = false;
			$trustedProxyConfig = wfWAF::getInstance()->getStorageEngine()->getConfig('howGetIPs_trusted_proxies_unified', null, 'synced');
			$trustedProxies = $trustedProxyConfig === null ? array() : explode("\n", $trustedProxyConfig);
			foreach (array(',', ' ', "\t") as $char) {
				if (strpos($item, $char) !== false) {
					$sp = explode($char, $item);
					$sp = array_reverse($sp);
					foreach ($sp as $index => $j) {
						$j = trim($j);
						if (!$this->_isValidIP($j)) {
							$j = preg_replace('/:\d+$/', '', $j); //Strip off port
						}
						if ($this->_isValidIP($j)) {
							if ($this->_isIPv6MappedIPv4($j)) {
								$j = wfWAFUtils::inet_ntop(wfWAFUtils::inet_pton($j));
							}
							
							foreach ($trustedProxies as $proxy) {
								if (!empty($proxy)) {
									if (wfWAFUtils::subnetContainsIP($proxy, $j) && $index < count($sp) - 1) {
										continue 2;
									}
								}
							}
							
							if ($this->_isPrivateIP($j)) {
								$privates[] = array($j, $var);
							}
							else {
								return array($j, $var);
							}
						}
					}
					$skipToNext = true;
					break;
				}
			}
			if ($skipToNext){ continue; } //Skip to next item because this one had a comma, space or tab so was delimited and we didn't find anything.
			
			if (!$this->_isValidIP($item)) {
				$item = preg_replace('/:\d+$/', '', $item); //Strip off port
			}
			if ($this->_isValidIP($item)) {
				if ($this->_isIPv6MappedIPv4($item)) {
					$item = wfWAFUtils::inet_ntop(wfWAFUtils::inet_pton($item));
				}
				
				if ($this->_isPrivateIP($item)) {
					$privates[] = array($item, $var);
				}
				else {
					return array($item, $var);
				}
			}
		}
		if (sizeof($privates) > 0) {
			return $privates[0]; //Return the first private we found so that we respect the order the IP's were passed to this function.
		}
		return false;
	}
	
	/**
	 * @param string $ip
	 * @return bool
	 */
	private function _isValidIP($ip) {
		return filter_var($ip, FILTER_VALIDATE_IP) !== false;
	}
	
	/**
	 * @param string $ip
	 * @return bool
	 */
	private function _isIPv6MappedIPv4($ip) {
		return preg_match('/^(?:\:(?:\:0{1,4}){0,4}\:|(?:0{1,4}\:){5})ffff\:\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/i', $ip) > 0;
	}
	
	/**
	 * @param string $addr Should be in dot or colon notation (127.0.0.1 or ::1)
	 * @return bool
	 */
	private function _isPrivateIP($ip) {
		// Run this through the preset list for IPv4 addresses.
		if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) !== false) {
			$wordfenceLib = realpath(dirname(__FILE__) . '/../lib');
			include($wordfenceLib . '/wfIPWhitelist.php'); // defines $wfIPWhitelist
			$private = $wfIPWhitelist['private'];
			
			foreach ($private as $a) {
				if (wfWAFUtils::subnetContainsIP($a, $ip)) {
					return true;
				}
			}
		}
		
		return filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_IPV6) !== false
		&& filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_IPV6 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) === false;
	}
}

class wfWAFWordPressObserver extends wfWAFBaseObserver {

	private $waf;

	public function __construct($waf){
		$this->waf=$waf;
	}

	public function beforeRunRules() {
		// Whitelisted URLs (in WAF config)
		$whitelistedURLs = wfWAF::getInstance()->getStorageEngine()->getConfig('whitelistedURLs', null, 'livewaf');
		if ($whitelistedURLs) {
			$whitelistPattern = "";
			foreach ($whitelistedURLs as $whitelistedURL) {
				$whitelistPattern .= preg_replace('/\\\\\*/', '.*?', preg_quote($whitelistedURL, '/')) . '|';
			}
			$whitelistPattern = '/^(?:' . wfWAFUtils::substr($whitelistPattern, 0, -1) . ')$/i';

			wfWAFRule::create(wfWAF::getInstance(), 0x8000000, 'rule', 'whitelist', 0, 'User Supplied Allowlisted URL', 'allow',
				new wfWAFRuleComparisonGroup(
					new wfWAFRuleComparison(wfWAF::getInstance(), 'match', $whitelistPattern, array(
						'request.uri',
					))
				)
			)->evaluate();
		}

		// Whitelisted IPs (Wordfence config)
		$whitelistedIPs = wfWAF::getInstance()->getStorageEngine()->getConfig('whitelistedIPs', null, 'synced');
		if ($whitelistedIPs) {
			if (!is_array($whitelistedIPs)) {
				$whitelistedIPs = explode(',', $whitelistedIPs);
			}
			foreach ($whitelistedIPs as $whitelistedIP) {
				$ipRange = new wfWAFUserIPRange($whitelistedIP);
				if ($ipRange->isIPInRange(wfWAF::getInstance()->getRequest()->getIP())) {
					throw new wfWAFAllowException('Wordfence allowlisted IP.');
				}
			}
		}
		
		// Check plugin blocking
		if ($result = wfWAF::getInstance()->willPerformFinalAction(wfWAF::getInstance()->getRequest())) {
			if ($result === true) { $result = 'Not available'; } // Should not happen but can if the reason in the blocks table is empty
			wfWAF::getInstance()->getRequest()->setMetadata(array_merge(wfWAF::getInstance()->getRequest()->getMetadata(), array('finalAction' => $result)));
		}
	}
	
	public function afterRunRules()
	{
		//Blacklist
		if (!wfWAF::getInstance()->getStorageEngine()->getConfig('disableWAFBlacklistBlocking')) {
			$blockedPrefixes = wfWAF::getInstance()->getStorageEngine()->getConfig('blockedPrefixes', null, 'transient');
			if ($blockedPrefixes && wfWAF::getInstance()->getStorageEngine()->getConfig('isPaid', null, 'synced')) {
				$blockedPrefixes = base64_decode($blockedPrefixes);
				if ($this->_prefixListContainsIP($blockedPrefixes, wfWAF::getInstance()->getRequest()->getIP()) !== false) {
					$allowedCacheJSON = wfWAF::getInstance()->getStorageEngine()->getConfig('blacklistAllowedCache', '', 'transient');
					$allowedCache = @json_decode($allowedCacheJSON, true);
					if (!is_array($allowedCache)) {
						$allowedCache = array();
					}
					
					$cacheTest = base64_encode(wfWAFUtils::inet_pton(wfWAF::getInstance()->getRequest()->getIP()));
					if (!in_array($cacheTest, $allowedCache)) {
						$guessSiteURL = sprintf('%s://%s/', wfWAF::getInstance()->getRequest()->getProtocol(), wfWAF::getInstance()->getRequest()->getHost());
						try {
							$request = new wfWAFHTTP();
							$response = wfWAFHTTP::get(WFWAF_API_URL_SEC . "?" . http_build_query(array(
									'action' => 'is_ip_blacklisted',
									'ip'	 => wfWAF::getInstance()->getRequest()->getIP(),
									'k'      => wfWAF::getInstance()->getStorageEngine()->getConfig('apiKey', null, 'synced'),
									's'      => wfWAF::getInstance()->getStorageEngine()->getConfig('siteURL', null, 'synced') ? wfWAF::getInstance()->getStorageEngine()->getConfig('siteURL', null, 'synced') : $guessSiteURL,
									'h'      => wfWAF::getInstance()->getStorageEngine()->getConfig('homeURL', null, 'synced') ? wfWAF::getInstance()->getStorageEngine()->getConfig('homeURL', null, 'synced') : $guessSiteURL,
									't'		 => microtime(true),
									'lang'   => wfWAF::getInstance()->getStorageEngine()->getConfig('WPLANG', null, 'synced'),
								), '', '&'), $request);
							
							if ($response instanceof wfWAFHTTPResponse && $response->getBody()) {
								$jsonData = wfWAFUtils::json_decode($response->getBody(), true);
								if (is_array($jsonData) && array_key_exists('data', $jsonData)) {
									if (preg_match('/^block:(\d+)$/i', $jsonData['data'], $matches)) {
										wfWAF::getInstance()->getStorageEngine()->blockIP((int)$matches[1] + time(), wfWAF::getInstance()->getRequest()->getIP(), wfWAFStorageInterface::IP_BLOCKS_BLACKLIST);
										$e = new wfWAFBlockException();
										$e->setFailedRules(array('blocked'));
										$e->setRequest(wfWAF::getInstance()->getRequest());
										throw $e;
									}
									else { //Allowed, cache until the next prefix list refresh
										$allowedCache[] = $cacheTest;
										wfWAF::getInstance()->getStorageEngine()->setConfig('blacklistAllowedCache', json_encode($allowedCache), 'transient');
									}
								}
							}
						} catch (wfWAFHTTPTransportException $e) {
							error_log($e->getMessage());
						}
					}
				}
			}
		}
		
		$watchedIPs = wfWAF::getInstance()->getStorageEngine()->getConfig('watchedIPs', null, 'transient');
		if ($watchedIPs) {
			if (!is_array($watchedIPs)) {
				$watchedIPs = explode(',', $watchedIPs);
			}
			foreach ($watchedIPs as $watchedIP) {
				$ipRange = new wfWAFUserIPRange($watchedIP);
				if ($ipRange->isIPInRange(wfWAF::getInstance()->getRequest()->getIP())) {
					$this->waf->recordLogEvent(new wfWAFLogEvent());
				}
			}
		}
		
		if ($reason = wfWAF::getInstance()->getRequest()->getMetadata('finalAction')) {
			$e = new wfWAFBlockException($reason['action']);
			$e->setRequest(wfWAF::getInstance()->getRequest());
			throw $e;
		}
	}
	
	private function _prefixListContainsIP($prefixList, $ip) {
		$size = ord(wfWAFUtils::substr($prefixList, 0, 1));
		
		$sha256 = hash('sha256', wfWAFUtils::inet_pton($ip), true);
		$p = wfWAFUtils::substr($sha256, 0, $size);
		
		$count = ceil((wfWAFUtils::strlen($prefixList) - 1) / $size);
		$low = 0;
		$high = $count - 1;
		
		while ($low <= $high) {
			$mid = (int) (($high + $low) / 2);
			$val = wfWAFUtils::substr($prefixList, 1 + $mid * $size, $size);
			$cmp = strcmp($val, $p);
			if ($cmp < 0) {
				$low = $mid + 1;
			}
			else if ($cmp > 0) {
				$high = $mid - 1;
			}
			else {
				return $mid;
			}
		}
		
		return false;
	}
}

/**
 *
 */
class wfWAFWordPress extends wfWAF {

	/** @var wfWAFRunException */
	private $learningModeAttackException;

	/**
	 * @param wfWAFBlockException $e
	 * @param int $httpCode
	 */
	public function blockAction($e, $httpCode = 403, $redirect = false, $template = null) {
		$failedRules = $e->getFailedRules();
		if (!is_array($failedRules)) {
			$failedRules = array();
		}
		
		if ($this->isInLearningMode() && !$e->getRequest()->getMetadata('finalAction') && !in_array('blocked', $failedRules)) {
			register_shutdown_function(array(
				$this, 'whitelistFailedRulesIfNot404',
			));
			$this->getStorageEngine()->logAttack($e->getFailedRules(), $e->getParamKey(), $e->getParamValue(), $e->getRequest());
			$this->setLearningModeAttackException($e);
		} else {
			if (empty($failedRules)) {
				$finalAction = $e->getRequest()->getMetadata('finalAction');
				if (is_array($finalAction)) {
					$isLockedOut = isset($finalAction['lockout']) && $finalAction['lockout'];
					$finalAction = $finalAction['action'];
					if ($finalAction == wfWAFIPBlocksController::WFWAF_BLOCK_COUNTRY_REDIR) {
						$redirect = wfWAFIPBlocksController::currentController()->countryRedirURL();
					}
					else if ($finalAction == wfWAFIPBlocksController::WFWAF_BLOCK_COUNTRY_BYPASS_REDIR) {
						$redirect = wfWAFIPBlocksController::currentController()->countryBypassRedirURL();
					}
					else if ($finalAction == wfWAFIPBlocksController::WFWAF_BLOCK_UAREFIPRANGE) {
						wfWAF::getInstance()->getRequest()->setMetadata(array_merge(wfWAF::getInstance()->getRequest()->getMetadata(), array('503Reason' => 'Advanced blocking in effect.', '503Time' => 3600)));
						$httpCode = 503;
					}
					else if ($finalAction == wfWAFIPBlocksController::WFWAF_BLOCK_COUNTRY) {
						wfWAF::getInstance()->getRequest()->setMetadata(array_merge(wfWAF::getInstance()->getRequest()->getMetadata(), array('503Reason' => 'Access from your area has been temporarily limited for security reasons.', '503Time' => 3600)));
						$httpCode = 503;
					}
					else if (is_string($finalAction) && strlen($finalAction) > 0) {
						wfWAF::getInstance()->getRequest()->setMetadata(array_merge(wfWAF::getInstance()->getRequest()->getMetadata(), array('503Reason' => $finalAction, '503Time' => 3600)));
						$httpCode = 503;
						
						if ($isLockedOut) {
							parent::blockAction($e, $httpCode, $redirect, '503-lockout'); //exits
						}
					}
				}
			}
			else if (array_search('blocked', $failedRules) !== false) {
				parent::blockAction($e, $httpCode, $redirect, '403-blacklist'); //exits
			}
			
			parent::blockAction($e, $httpCode, $redirect, $template);
		}
	}

	/**
	 * @param wfWAFBlockXSSException $e
	 * @param int $httpCode
	 */
	public function blockXSSAction($e, $httpCode = 403, $redirect = false) {
		if ($this->isInLearningMode() && !$e->getRequest()->getMetadata('finalAction')) {
			register_shutdown_function(array(
				$this, 'whitelistFailedRulesIfNot404',
			));
			$this->getStorageEngine()->logAttack($e->getFailedRules(), $e->getParamKey(), $e->getParamValue(), $e->getRequest());
			$this->setLearningModeAttackException($e);
		} else {
			$failedRules = $e->getFailedRules();
			if (empty($failedRules)) {
				$finalAction = $e->getRequest()->getMetadata('finalAction');
				if (is_array($finalAction)) {
					$finalAction = $finalAction['action'];
					if ($finalAction == wfWAFIPBlocksController::WFWAF_BLOCK_COUNTRY_REDIR) {
						$redirect = wfWAFIPBlocksController::currentController()->countryRedirURL();
					}
					else if ($finalAction == wfWAFIPBlocksController::WFWAF_BLOCK_COUNTRY_BYPASS_REDIR) {
						$redirect = wfWAFIPBlocksController::currentController()->countryBypassRedirURL();
					}
					else if ($finalAction == wfWAFIPBlocksController::WFWAF_BLOCK_UAREFIPRANGE) {
						wfWAF::getInstance()->getRequest()->setMetadata(array_merge(wfWAF::getInstance()->getRequest()->getMetadata(), array('503Reason' => 'Advanced blocking in effect.', '503Time' => 3600)));
						$httpCode = 503;
					}
					else if ($finalAction == wfWAFIPBlocksController::WFWAF_BLOCK_COUNTRY) {
						wfWAF::getInstance()->getRequest()->setMetadata(array_merge(wfWAF::getInstance()->getRequest()->getMetadata(), array('503Reason' => 'Access from your area has been temporarily limited for security reasons.', '503Time' => 3600)));
						$httpCode = 503;
					}
					else if (is_string($finalAction) && strlen($finalAction) > 0) {
						wfWAF::getInstance()->getRequest()->setMetadata(array_merge(wfWAF::getInstance()->getRequest()->getMetadata(), array('503Reason' => $finalAction, '503Time' => 3600)));
						$httpCode = 503;
					}
				}
			}
			
			parent::blockXSSAction($e, $httpCode, $redirect);
		}
	}

	private function isCli() {
		return (php_sapi_name()==='cli') || !array_key_exists('REQUEST_METHOD', $_SERVER);
	}

	/**
	 *
	 */
	public function runCron() {
		if($this->isCli()){
			return;
		}
		/**
		 * Removed sending attack data. Attack data is sent in @see wordfence::veryFirstAction
		 */
		$storage = $this->getStorageEngine();
		$cron = (array) $storage->getConfig('cron', null, 'livewaf');
		$run = array();
		$updated = false;
		if (is_array($cron)) {
			/** @var wfWAFCronEvent $event */
			$cronDeduplication = array();
			foreach ($cron as $index => $event) {
				if (is_object($event) && $event instanceof wfWAFCronEvent) {
					$event->setWaf($this);
					if ($event->isInPast()) {
						$run[$index] = $event;
						$newEvent = $event->reschedule();
						$className = get_class($newEvent);
						if ($newEvent instanceof wfWAFCronEvent && $newEvent !== $event && !in_array($className, $cronDeduplication)) {
							$cron[$index] = $newEvent;
							$cronDeduplication[] = $className;
							$updated = true;
						} else {
							unset($cron[$index]);
							$updated = true;
						}
					}
					else {
						$className = get_class($event);
						if (in_array($className, $cronDeduplication)) {
							unset($cron[$index]);
							$updated = true;
						}
						else {
							$cronDeduplication[] = $className;
						}
					}
				}
				else { //Remove bad/corrupt records
					unset($cron[$index]);
					$updated = true;
				}
			}
		}
		$storage->setConfig('cron', $cron, 'livewaf');
		
		if ($updated && method_exists($storage, 'saveConfig')) {
			$storage->saveConfig('livewaf');
		}
		
		foreach ($run as $index => $event) {
			$event->fire();
		}
	}

	/**
	 *
	 */
	public function whitelistFailedRulesIfNot404() {
		/** @var WP_Query $wp_query */
		global $wp_query;
		if (defined('ABSPATH') &&
			isset($wp_query) && class_exists('WP_Query') && $wp_query instanceof WP_Query &&
			method_exists($wp_query, 'is_404') && $wp_query->is_404() &&
			function_exists('is_admin') && !is_admin()) {
			return;
		}
		$this->whitelistFailedRules();
	}

	/**
	 * @param $ip
	 * @return mixed
	 */
	public function isIPBlocked($ip) {
		return parent::isIPBlocked($ip);
	}
	
	/**
	 * @param wfWAFRequest $request
	 * @return bool|string false if it should not be blocked, otherwise true or a reason for blocking 
	 */
	public function willPerformFinalAction($request) {
		try {
			$disableWAFIPBlocking = $this->getStorageEngine()->getConfig('disableWAFIPBlocking', null, 'synced');
			$advancedBlockingEnabled = $this->getStorageEngine()->getConfig('advancedBlockingEnabled', null, 'synced');
		}
		catch (Exception $e) {
			return false;
		}
		
		if ($disableWAFIPBlocking || !$advancedBlockingEnabled) {
			return false;
		}
		
		return wfWAFIPBlocksController::currentController()->shouldBlockRequest($request);
	}
	
	public function uninstall() {
		parent::uninstall();
		@unlink(rtrim(WFWAF_LOG_PATH, '/') . '/.htaccess');
		@unlink(rtrim(WFWAF_LOG_PATH, '/') . '/template.php');
		@unlink(rtrim(WFWAF_LOG_PATH, '/') . '/GeoLite2-Country.mmdb');
		
		self::_recursivelyRemoveWflogs(''); //Removes any remaining files and the directory itself
	}
	
	/**
	 * Removes a path within wflogs, recursing as necessary.
	 *
	 * @param string $file
	 * @param array $processedDirs
	 * @return array The list of removed files/folders.
	 */
	private static function _recursivelyRemoveWflogs($file, $processedDirs = array()) {
		if (preg_match('~(?:^|/|\\\\)\.\.(?:/|\\\\|$)~', $file)) {
			return array();
		}
		
		if (stripos(WFWAF_LOG_PATH, 'wflogs') === false) { //Sanity check -- if not in a wflogs folder, user will have to do removal manually
			return array();
		}
		
		$path = rtrim(WFWAF_LOG_PATH, '/') . '/' . $file;
		if (is_link($path)) {
			if (@unlink($path)) {
				return array($file);
			}
			return array();
		}
		
		if (is_dir($path)) {
			$real = realpath($file);
			if (in_array($real, $processedDirs)) {
				return array();
			}
			$processedDirs[] = $real;
			
			$count = 0;
			$dir = opendir($path);
			if ($dir) {
				$contents = array();
				while ($sub = readdir($dir)) {
					if ($sub == '.' || $sub == '..') { continue; }
					$contents[] = $sub;
				}
				closedir($dir);
				
				$filesRemoved = array();
				foreach ($contents as $f) {
					$removed = self::_recursivelyRemoveWflogs($file . '/' . $f, $processedDirs);
					$filesRemoved = array($filesRemoved, $removed);
				}
			}
			
			if (@rmdir($path)) {
				$filesRemoved[] = $file;
			}
			return $filesRemoved;
		}
		
		if (@unlink($path)) {
			return array($file);
		}
		return array();
	}
	
	public function fileList() {
		$fileList = parent::fileList();
		$fileList[] = rtrim(WFWAF_LOG_PATH, '/') . '/.htaccess';
		$fileList[] = rtrim(WFWAF_LOG_PATH, '/') . '/template.php';
		$fileList[] = rtrim(WFWAF_LOG_PATH, '/') . '/GeoLite2-Country.mmdb';
		return $fileList;
	}

	/**
	 * @return wfWAFRunException
	 */
	public function getLearningModeAttackException() {
		return $this->learningModeAttackException;
	}

	/**
	 * @param wfWAFRunException $learningModeAttackException
	 */
	public function setLearningModeAttackException($learningModeAttackException) {
		$this->learningModeAttackException = $learningModeAttackException;
	}
	
	public static function permissions() {
		if (defined('WFWAF_LOG_FILE_MODE')) {
			return WFWAF_LOG_FILE_MODE;
		}
		
		if (class_exists('wfWAFStorageFile') && method_exists('wfWAFStorageFile', 'permissions')) {
			return wfWAFStorageFile::permissions();
		}
		
		static $_cachedPermissions = null;
		if ($_cachedPermissions === null) {
			if (defined('WFWAF_LOG_PATH')) {
				$template = rtrim(WFWAF_LOG_PATH . '/') . '/template.php';
				if (file_exists($template)) {
					$stat = @stat($template);
					if ($stat !== false) {
						$mode = $stat[2];
						$updatedMode = 0600;
						if (($mode & 0020) == 0020) {
							$updatedMode = $updatedMode | 0060;
						}
						$_cachedPermissions = $updatedMode;
						return $updatedMode;
					}
				}
			}
			return 0660;
		}
		return $_cachedPermissions;
	}
	
	public static function writeHtaccess() {
		@file_put_contents(rtrim(WFWAF_LOG_PATH, '/') . '/.htaccess', <<<APACHE
<IfModule mod_authz_core.c>
	Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
	Order deny,allow
	Deny from all
</IfModule>
APACHE
		);
		@chmod(rtrim(WFWAF_LOG_PATH, '/') . '/.htaccess', (wfWAFWordPress::permissions() | 0444));
	}

	public function getGlobal($global) {
		if (wfWAFUtils::strpos($global, '.') === false) {
			return null;
		}
		list($prefix, $_global) = explode('.', $global);
		switch ($prefix) {
			case 'wordpress':
				if ($_global === 'core') {
					return $this->getStorageEngine()->getConfig('wordpressVersion', null, 'synced');
				} else if ($_global === 'plugins') {
					return $this->getStorageEngine()->getConfig('wordpressPluginVersions', null, 'synced');
				} else if ($_global === 'themes') {
					return $this->getStorageEngine()->getConfig('wordpressThemeVersions', null, 'synced');
				}
				break;
		}
		return parent::getGlobal($global);
	}
}

class wfWAFWordPressStorageMySQL extends wfWAFStorageMySQL {

	public function getSerializedParams() {
		$params = parent::getSerializedParams();
		$params[] = 'wordpressPluginVersions';
		$params[] = 'wordpressThemeVersions';
		return $params;
	}

	public function getAutoloadParams() {
		$params = parent::getAutoloadParams();
		$params['synced'][] = 'wordpressVersion';
		$params['synced'][] = 'wordpressPluginVersions';
		$params['synced'][] = 'wordpressThemeVersions';
		return $params;
	}
}

class wfWAFWordPressI18n implements wfWAFI18nEngine {

	protected $translations;

	/** @var wfWAFStorageInterface */
	private $storageEngine;
	/**
	 * @var wfMO
	 */
	private $mo;

	/**
	 * @param wfWAFStorageInterface $storageEngine
	 */
	public function __construct($storageEngine) {
		$this->storageEngine = $storageEngine;
		$this->loadTranslations();
	}

	/**
	 * @param string $text
	 * @return string
	 */
	public function __($text) {
		if (!$this->storageEngine->getConfig('wordfenceI18n', true, 'synced')) {
			return $text;
		}

		if ($this->mo) {
			$translated = $this->mo->translate($text);
			if ($translated) {
				return $translated;
			}
		}

		return $text;
	}

	protected function loadTranslations() {
		require_once dirname(__FILE__) . '/pomo/mo.php';

		$currentLocale = $this->storageEngine->getConfig('WPLANG', '', 'synced');

		// Find translation file for the current language.
		$mofile = dirname(__FILE__) . '/../languages/wordfence-' . $currentLocale . '.mo';
		if (!file_exists($mofile)) {
			// No translation, use the default
			$mofile = dirname(__FILE__) . '/../languages/wordfence.mo';
		}

		$this->mo = new wfMO();
		return $this->mo->import_from_file( $mofile );
	}
}

try {

if (!defined('WFWAF_LOG_PATH')) {
	if (!defined('WP_CONTENT_DIR')) { //Loading before WordPress
		exit();
	}
	define('WFWAF_LOG_PATH', WP_CONTENT_DIR . '/wflogs/');
}
if (!is_dir(WFWAF_LOG_PATH)) {
	@mkdir(WFWAF_LOG_PATH, (wfWAFWordPress::permissions() | 0755));
	@chmod(WFWAF_LOG_PATH, (wfWAFWordPress::permissions() | 0755));
	wfWAFWordPress::writeHtaccess();
}


try {
	if (!defined('WFWAF_STORAGE_ENGINE') && isset($_SERVER['WFWAF_STORAGE_ENGINE'])) {
		define('WFWAF_STORAGE_ENGINE', $_SERVER['WFWAF_STORAGE_ENGINE']);
	}
	else if (!defined('WFWAF_STORAGE_ENGINE') && (WF_IS_WP_ENGINE || WF_IS_FLYWHEEL)) {
		define('WFWAF_STORAGE_ENGINE', 'mysqli');
	}

	$specifiedStorageEngine = defined('WFWAF_STORAGE_ENGINE');
	$fallbackStorageEngine = false;
	if ($specifiedStorageEngine) {
		switch (WFWAF_STORAGE_ENGINE) {
			case 'mysqli':
				$wfWAFDBCredentials = array();
				$sslOptions = array();
				$overrideConstants = array(
					'wfWAFDBCredentials' => array(
						'WFWAF_DB_NAME' => 'database',
						'WFWAF_DB_USER' => 'user',
						'WFWAF_DB_PASSWORD' => 'pass',
						'WFWAF_DB_HOST' => 'host',
						'WFWAF_DB_CHARSET' => 'charset',
						'WFWAF_DB_COLLATE' => 'collation',
						'WFWAF_MYSQL_CLIENT_FLAGS' => 'flags',
						'WFWAF_TABLE_PREFIX' => 'tablePrefix'
					),
					'sslOptions' => array(
						'WFWAF_DB_SSL_KEY' => 'key',
						'WFWAF_DB_SSL_CERTIFICATE' => 'certificate',
						'WFWAF_DB_SSL_CA_CERTIFICATE' => 'ca_certificate',
						'WFWAF_DB_SSL_CA_PATH' => 'ca_path',
						'WFWAF_DB_SSL_CIPHER_ALGOS' => 'cipher_algos'
					)
				);
				foreach ($overrideConstants as $variable => $constants) {
					foreach ($constants as $constant => $key) {
						if (defined($constant)) {
							${$variable}[$key] = constant($constant);
						}
					}
				}

				// Find the wp-config.php
				if (is_dir(dirname(WFWAF_LOG_PATH))) {
					if (file_exists(dirname(WFWAF_LOG_PATH) . '/../wp-config.php')) {
						wfWAFUtils::extractCredentialsWPConfig(dirname(WFWAF_LOG_PATH) . '/../wp-config.php', $wfWAFDBCredentials);
					} else if (file_exists(dirname(WFWAF_LOG_PATH) . '/../../wp-config.php')) {
						wfWAFUtils::extractCredentialsWPConfig(dirname(WFWAF_LOG_PATH) . '/../../wp-config.php', $wfWAFDBCredentials);
					}
				} else if (!empty($_SERVER['DOCUMENT_ROOT'])) {
					if (file_exists($_SERVER['DOCUMENT_ROOT'] . '/wp-config.php')) {
						wfWAFUtils::extractCredentialsWPConfig($_SERVER['DOCUMENT_ROOT'] . '/wp-config.php', $wfWAFDBCredentials);
					} else if (file_exists($_SERVER['DOCUMENT_ROOT'] . '/../wp-config.php')) {
						wfWAFUtils::extractCredentialsWPConfig($_SERVER['DOCUMENT_ROOT'] . '/../wp-config.php', $wfWAFDBCredentials);
					}
				} else {
					$wfWAFDBCredentials = false;
				}

				if (!empty($wfWAFDBCredentials)) {
					$wfWAFStorageEngine = new wfWAFWordPressStorageMySQL(new wfWAFStorageEngineMySQLi(), $wfWAFDBCredentials['tablePrefix'], wfShutdownRegistry::getDefaultInstance());
					$wfWAFStorageEngine->getDb()->connect(
						$wfWAFDBCredentials['user'],
						$wfWAFDBCredentials['pass'],
						$wfWAFDBCredentials['database'],
						!empty($wfWAFDBCredentials['ipv6']) ? '[' . $wfWAFDBCredentials['host'] . ']' : $wfWAFDBCredentials['host'],
						!empty($wfWAFDBCredentials['port']) ? $wfWAFDBCredentials['port'] : null,
						!empty($wfWAFDBCredentials['socket']) ? $wfWAFDBCredentials['socket'] : null,
						array_key_exists('flags', $wfWAFDBCredentials) ? $wfWAFDBCredentials['flags'] : 0,
						$sslOptions
					);
					if (array_key_exists('charset', $wfWAFDBCredentials)) {
						$wfWAFStorageEngine->getDb()
							->setCharset($wfWAFDBCredentials['charset'],
								!empty($wfWAFDBCredentials['collation']) ? $wfWAFDBCredentials['collation'] : '');
					}
					if (defined('ABSPATH')) {
						$tableExists = false;
						$optionName = 'wordfence_installed'; //Also exists in wfConfig.php
						if (is_multisite() && function_exists('get_network_option')) {
							$tableExists = get_network_option(null, $optionName, null);
						}
						else {
							$tableExists = get_option($optionName, null);
						}
						
						$wfWAFStorageEngine->installing = !$tableExists;
						$wfWAFStorageEngine->getDb()->installing = $wfWAFStorageEngine->installing;
					}

				} else {
					unset($wfWAFDBCredentials);
				}

				break;
		}
	}

	if (empty($wfWAFStorageEngine)) {
		$wfWAFStorageEngine = new wfWAFStorageFile(
			WFWAF_LOG_PATH . 'attack-data.php',
			WFWAF_LOG_PATH . 'ips.php',
			WFWAF_LOG_PATH . 'config.php',
			WFWAF_LOG_PATH . 'rules.php',
			WFWAF_LOG_PATH . 'wafRules.rules'
		);
		if ($specifiedStorageEngine)
			$fallbackStorageEngine = true;
	}

	wfWAF::setSharedStorageEngine($wfWAFStorageEngine, $fallbackStorageEngine);
	wfWAF::setInstance(new wfWAFWordPress(wfWAFWordPressRequest::createFromGlobals(), wfWAF::getSharedStorageEngine()));
	wfWAF::getInstance()->getEventBus()->attach(new wfWAFWordPressObserver(wfWAF::getInstance()));

	if ($wfWAFStorageEngine instanceof wfWAFStorageFile) {
		$rulesFiles = array(
			WFWAF_LOG_PATH . 'rules.php',
			// WFWAF_PATH . 'rules.php',
		);
		foreach ($rulesFiles as $rulesFile) {
			if (!file_exists($rulesFile) && !wfWAF::getInstance()->isReadOnly()) {
				@touch($rulesFile);
			}
			@chmod($rulesFile, (wfWAFWordPress::permissions() | 0444));
			if (is_writable($rulesFile)) {
				wfWAF::getInstance()->setCompiledRulesFile($rulesFile);
				break;
			}
		}
	} else if ($wfWAFStorageEngine instanceof wfWAFStorageMySQL) {
		$wfWAFStorageEngine->runMigrations();
		$wfWAFStorageEngine->setDefaults();
	}

	if (!wfWAF::getInstance()->isReadOnly()) {
		if (wfWAF::getInstance()->getStorageEngine()->needsInitialRules()) {
			try {
				if (wfWAF::getInstance()->getStorageEngine()->getConfig('apiKey', null, 'synced') !== null &&
					wfWAF::getInstance()->getStorageEngine()->getConfig('createInitialRulesDelay', null, 'transient') < time()
				) {
					$event = new wfWAFCronFetchRulesEvent(time() - 60);
					$event->setWaf(wfWAF::getInstance());
					$event->fire();
					wfWAF::getInstance()->getStorageEngine()->setConfig('createInitialRulesDelay', time() + (5 * 60), 'transient');
				}
			} catch (wfWAFBuildRulesException $e) {
				// Log this somewhere
				error_log($e->getMessage());
			} catch (Exception $e) {
				// Suppress this
				error_log($e->getMessage());
			}
		}
	}

	if (WFWAF_DEBUG && file_exists(wfWAF::getInstance()->getStorageEngine()->getRulesDSLCacheFile())) {
		try {
			wfWAF::getInstance()->updateRuleSet(file_get_contents(wfWAF::getInstance()->getStorageEngine()->getRulesDSLCacheFile()), false);
		} catch (wfWAFBuildRulesException $e) {
			$GLOBALS['wfWAFDebugBuildException'] = $e;
		} catch (Exception $e) {
			$GLOBALS['wfWAFDebugBuildException'] = $e;
		}
	}

	wfWAFI18n::setInstance(new wfWAFI18n(new wfWAFWordPressI18n($wfWAFStorageEngine)));

	try {
		wfWAF::getInstance()->run();
	} catch (wfWAFBuildRulesException $e) {
		// Log this
		error_log($e->getMessage());
	}

} catch (wfWAFStorageFileConfigException $e) {
	// Let this request through for now
	error_log($e->getMessage());

} catch (wfWAFStorageEngineMySQLiException $e) {
	// Let this request through for now
	error_log($e->getMessage());

} catch (wfWAFStorageFileException $e) {
	// We need to choose another storage engine here.
}

}
catch (Exception $e) { // In PHP 5, Throwable does not exist
	error_log("An unexpected exception occurred during WAF execution: {$e}");
	$wf_waf_failure = array(
		'throwable' => $e
	);
}
catch (Throwable $t) {
	error_log("An unexpected exception occurred during WAF execution: {$t}");
	if (class_exists('ParseError') && $t instanceof ParseError) {
		//Do nothing
	}
	else {
		$wf_waf_failure = array(
			'throwable' => $t
		);
	}
}
if (wfWAF::getInstance() === null) {
	require_once __DIR__ . '/dummy.php';
	wfWAF::setInstance(new wfDummyWaf());
}
define('WFWAF_RUN_COMPLETE', true);
}waf/.htaccess000064400000000542150755146460007135 0ustar00<IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{REQUEST_URI} \.php$
        RewriteRule .* - [F,L,NC]
</IfModule>
<IfModule !mod_rewrite.c>
	<FilesMatch "\.php$">
	<IfModule mod_authz_core.c>
		Require all denied
	</IfModule>
	<IfModule !mod_authz_core.c>
		Order deny,allow
		Deny from all
	</IfModule>
	</FilesMatch>
</IfModule>waf/wfWAFIPBlocksController.php000064400000047242150755146460012465 0ustar00<?php
if (!defined('WFWAF_RUN_COMPLETE')) {

require_once __DIR__ . '/../vendor/wordfence/wf-waf/src/lib/shutdown.php';

class wfWAFIPBlocksController
{
	const WFWAF_BLOCK_UAREFIPRANGE = 'UA/Referrer/IP Range not allowed';
	const WFWAF_BLOCK_COUNTRY = 'blocked access via country blocking';
	const WFWAF_BLOCK_COUNTRY_REDIR = 'blocked access via country blocking and redirected to URL';
	const WFWAF_BLOCK_COUNTRY_BYPASS_REDIR = 'redirected to bypass URL';
	const WFWAF_BLOCK_WFSN = 'Blocked by Wordfence Security Network';
	const WFWAF_BLOCK_BADPOST = 'POST received with blank user-agent and referer';
	const WFWAF_BLOCK_BANNEDURL = 'Accessed a banned URL.';
	const WFWAF_BLOCK_FAKEGOOGLE = 'Fake Google crawler automatically blocked';
	const WFWAF_BLOCK_LOGINSEC = 'Blocked by login security setting.';
	const WFWAF_BLOCK_LOGINSEC_FORGOTPASSWD = 'Exceeded the maximum number of tries to recover their password'; //substring search
	const WFWAF_BLOCK_LOGINSEC_FAILURES = 'Exceeded the maximum number of login failures'; //substring search
	const WFWAF_BLOCK_THROTTLEGLOBAL = 'Exceeded the maximum global requests per minute for crawlers or humans.';
	const WFWAF_BLOCK_THROTTLESCAN = 'Exceeded the maximum number of 404 requests per minute for a known security vulnerability.';
	const WFWAF_BLOCK_THROTTLECRAWLER = 'Exceeded the maximum number of requests per minute for crawlers.';
	const WFWAF_BLOCK_THROTTLECRAWLERNOTFOUND = 'Exceeded the maximum number of page not found errors per minute for a crawler.';
	const WFWAF_BLOCK_THROTTLEHUMAN = 'Exceeded the maximum number of page requests per minute for humans.';
	const WFWAF_BLOCK_THROTTLEHUMANNOTFOUND = 'Exceeded the maximum number of page not found errors per minute for humans.';
	
	protected static $_currentController = null;

	public static function currentController() {
		if (self::$_currentController === null) {
			self::$_currentController = new wfWAFIPBlocksController();
		}
		return self::$_currentController;
	}
	
	public static function setCurrentController($currentController) {
		self::$_currentController = $currentController;
	}
	
	/**
	 * Schedules a config sync to happen at the end of the current process's execution.
	 */
	public static function setNeedsSynchronizeConfigSettings() {
		static $willSynchronize = false;
		if (!$willSynchronize) {
			$willSynchronize = true;
			wfShutdownRegistry::getDefaultInstance()->register('wfWAFIPBlocksController::synchronizeConfigSettings');
		}
	}
	
	public static function synchronizeConfigSettings() {
		if (!class_exists('wfConfig') || !wfConfig::tableExists() || !wfWAF::getInstance()) { // Ensure this is only called when WordPress and the plugin are fully loaded
			return;
		}
		
		static $isSynchronizing = false;
		if ($isSynchronizing) {
			return;
		}
		$isSynchronizing = true;
		
		global $wpdb;
		$suppressed = $wpdb->suppress_errors(!(defined('WFWAF_DEBUG') && WFWAF_DEBUG));
		
		// Pattern Blocks
		$blocks = wfBlock::patternBlocks(true);
		$patternBlocks = array();
		foreach ($blocks as $b) {
			$patternBlocks[] = array('id' => $b->id, 'ipRange' => $b->ipRange, 'hostnamePattern' => $b->hostname, 'uaPattern' => $b->userAgent, 'refPattern' => $b->referrer, 'expiration' => $b->expiration);
		}
		
		// Country Blocks
		$countryBlocks = array();
		$countryBlockEntries = wfBlock::countryBlocks(true);
		$countryBlocks['blocks'] = array();
		foreach ($countryBlockEntries as $b) {
			$reason = __('Access from your area has been temporarily limited for security reasons', 'wordfence');
			
			$countryBlocks['blocks'][] = array(
				'id' => $b->id,
				'countries' => $b->countries,
				'blockLogin' => $b->blockLogin,
				'blockSite' => $b->blockSite,
				'reason' => $reason,
				'expiration' => $b->expiration,
			);
		}
		$countryBlocks['action'] = wfConfig::get('cbl_action', false);
		$countryBlocks['loggedInBlocked'] = wfConfig::get('cbl_loggedInBlocked', false);
		$countryBlocks['bypassRedirURL'] = wfConfig::get('cbl_bypassRedirURL', '');
		$countryBlocks['bypassRedirDest'] = wfConfig::get('cbl_bypassRedirDest', '');
		$countryBlocks['bypassViewURL'] = wfConfig::get('cbl_bypassViewURL', '');
		$countryBlocks['redirURL'] = wfConfig::get('cbl_redirURL', '');
		$countryBlocks['cookieVal'] = wfBlock::countryBlockingBypassCookieValue();
		
		//Other Blocks
		$otherBlocks = array('blockedTime' => wfConfig::get('blockedTime', 0));
		$otherBlockEntries = wfBlock::ipBlocks(true);
		$otherBlocks['blocks'] = array();
		foreach ($otherBlockEntries as $b) {
			$reason = $b->reason;
			if ($b->type == wfBlock::TYPE_IP_MANUAL || $b->type == wfBlock::TYPE_IP_AUTOMATIC_PERMANENT) {
				$reason = __('Manual block by administrator', 'wordfence');
			}
			
			$otherBlocks['blocks'][] = array(
				'id' => $b->id,
				'IP' => base64_encode(wfUtils::inet_pton($b->ip)),
				'reason' => $reason,
				'expiration' => $b->expiration,
			);
		}
		
		//Lockouts
		$lockoutEntries = wfBlock::lockouts(true);
		$lockoutSecs = wfConfig::get('loginSec_lockoutMins') * 60;
		$lockouts = array('lockedOutTime' => $lockoutSecs, 'lockouts' => array());
		foreach ($lockoutEntries as $l) {
			$lockouts['lockouts'][] = array(
				'id' => $l->id,
				'IP' => base64_encode(wfUtils::inet_pton($l->ip)),
				'reason' => $l->reason,
				'expiration' => $l->expiration,
			);
		}
		
		// Save it
		try {
			$patternBlocksJSON = wfWAFUtils::json_encode($patternBlocks);
			wfWAF::getInstance()->getStorageEngine()->setConfig('patternBlocks', $patternBlocksJSON, 'synced');
			$countryBlocksJSON = wfWAFUtils::json_encode($countryBlocks);
			wfWAF::getInstance()->getStorageEngine()->setConfig('countryBlocks', $countryBlocksJSON, 'synced');
			$otherBlocksJSON = wfWAFUtils::json_encode($otherBlocks);
			wfWAF::getInstance()->getStorageEngine()->setConfig('otherBlocks', $otherBlocksJSON, 'synced');
			$lockoutsJSON = wfWAFUtils::json_encode($lockouts);
			wfWAF::getInstance()->getStorageEngine()->setConfig('lockouts', $lockoutsJSON, 'synced');
			
			wfWAF::getInstance()->getStorageEngine()->setConfig('advancedBlockingEnabled', wfConfig::get('firewallEnabled'), 'synced');
			wfWAF::getInstance()->getStorageEngine()->setConfig('disableWAFIPBlocking', wfConfig::get('disableWAFIPBlocking'), 'synced');
		}
		catch (Exception $e) {
			// Do nothing
		}
		$isSynchronizing = false;
		
		$wpdb->suppress_errors($suppressed);
	}
	
	/**
	 * @param wfWAFRequest $request
	 * @return bool|string If not blocked, returns false. Otherwise a string of the reason it was blocked or true. 
	 */
	public function shouldBlockRequest($request) {
		// Checking the user whitelist is done before reaching this call
		
		$ip = $request->getIP();
		
		//Check the system whitelist
		if ($this->checkForWhitelisted($ip)) {
			return false;
		}
		
		//Let the plugin handle these
		$wfFunc = $request->getQueryString('_wfsf');
		if ($wfFunc == 'unlockEmail' || $wfFunc == 'unlockAccess') { // Can't check validity here, let it pass through to plugin level where it can
			return false;
		}
		
		$logHuman = $request->getQueryString('wordfence_lh');
		if ($logHuman !== null) {
			return false;
		}
		
		//Start block checks
		$ipNum = wfWAFUtils::inet_pton($ip);
		$hostname = null;
		$ua = $request->getHeaders('User-Agent'); if ($ua === null) { $ua = ''; }
		$referer = $request->getHeaders('Referer'); if ($referer === null) { $referer = ''; }
		
		$isPaid = false;
		try {
			$isPaid = wfWAF::getInstance()->getStorageEngine()->getConfig('isPaid', null, 'synced');
			$pluginABSPATH = wfWAF::getInstance()->getStorageEngine()->getConfig('pluginABSPATH', null, 'synced');
			
			$patternBlocksJSON = wfWAF::getInstance()->getStorageEngine()->getConfig('patternBlocks', null, 'synced');
			$countryBlocksJSON = wfWAF::getInstance()->getStorageEngine()->getConfig('countryBlocks', null, 'synced');
			$otherBlocksJSON = wfWAF::getInstance()->getStorageEngine()->getConfig('otherBlocks', null, 'synced');
			$lockoutsJSON = wfWAF::getInstance()->getStorageEngine()->getConfig('lockouts', null, 'synced');
		}
		catch (Exception $e) {
			// Do nothing
		}
		
		if (isset($_SERVER['SCRIPT_FILENAME']) && (strpos($_SERVER['SCRIPT_FILENAME'], $pluginABSPATH . "wp-admin/") === 0 || strpos($_SERVER['SCRIPT_FILENAME'], $pluginABSPATH . "wp-content/") === 0 || strpos($_SERVER['SCRIPT_FILENAME'], $pluginABSPATH . "wp-includes/") === 0)) {
			return false; //Rely on WordPress's own access control and blocking at the plugin level
		}
		
		// Pattern Blocks from the Advanced Blocking page (IP Range, UA, Referer)
		$patternBlocks = @wfWAFUtils::json_decode($patternBlocksJSON, true);
		if (is_array($patternBlocks)) {
			// Instead of a long block of if/else statements, using bitshifting to generate an expected value and a found value
			$ipRangeOffset = 1;
			$uaPatternOffset = 2;
			$refPatternOffset = 3;
			
			foreach ($patternBlocks as $b) {
				$expectedBits = 0;
				$foundBits = 0;
				
				if (isset($b['expiration']) && $b['expiration'] < time() && $b['expiration'] != 0) {
					continue;
				}
				
				if (!empty($b['ipRange'])) {
					$expectedBits |= (1 << $ipRangeOffset);
					
					$range = new wfWAFUserIPRange($b['ipRange']); 
					if ($range->isIPInRange($ip)) {
						$foundBits |= (1 << $ipRangeOffset);
					}
				}
				
				if (!empty($b['hostnamePattern'])) {
					$expectedBits |= (1 << $ipRangeOffset);
					if ($hostname === null) {
						$hostname = wfWAFUtils::reverseLookup($ip);
					}
					if (preg_match(wfWAFUtils::patternToRegex($b['hostnamePattern']), $hostname)) {
						$foundBits |= (1 << $ipRangeOffset);
					}
				}
				
				if (!empty($b['uaPattern'])) {
					$expectedBits |= (1 << $uaPatternOffset);
					if (wfWAFUtils::isUABlocked($b['uaPattern'], $ua)) {
						$foundBits |= (1 << $uaPatternOffset);
					}
				}
				
				if (!empty($b['refPattern'])) {
					$expectedBits |= (1 << $refPatternOffset);
					if (wfWAFUtils::isRefererBlocked($b['refPattern'], $referer)) {
						$foundBits |= (1 << $refPatternOffset);
					}
				}
				
				if ($foundBits === $expectedBits && $expectedBits > 0) {
					return array('action' => self::WFWAF_BLOCK_UAREFIPRANGE, 'id' => $b['id']);
				}
			}
		}
		// End Pattern Blocks
		
		// Country Blocking
		if ($isPaid) {
			$countryBlocks = @wfWAFUtils::json_decode($countryBlocksJSON, true);
			if (is_array($countryBlocks) && isset($countryBlocks['blocks'])) {
				$blocks = $countryBlocks['blocks'];
				foreach ($blocks as $b) {
					$blockedCountries = $b['countries'];
					$bareRequestURI = wfWAFUtils::extractBareURI($request->getURI());
					$bareBypassRedirURI = wfWAFUtils::extractBareURI($countryBlocks['bypassRedirURL']);
					$skipCountryBlocking = false;
					
					if ($bareBypassRedirURI && $bareRequestURI == $bareBypassRedirURI) { // Run this before country blocking because even if the user isn't blocked we need to set the bypass cookie so they can bypass future blocks.
						if ($countryBlocks['bypassRedirDest']) {
							setcookie('wfCBLBypass', $countryBlocks['cookieVal'], time() + (86400 * 365), '/', null, $this->isFullSSL(), true);
							return array('action' => self::WFWAF_BLOCK_COUNTRY_BYPASS_REDIR, 'id' => $b['id']);
						}
					}
					
					$bareBypassViewURI = wfWAFUtils::extractBareURI($countryBlocks['bypassViewURL']);
					if ($bareBypassViewURI && $bareBypassViewURI == $bareRequestURI) {
						setcookie('wfCBLBypass', $countryBlocks['cookieVal'], time() + (86400 * 365), '/', null, $this->isFullSSL(), true);
						$skipCountryBlocking = true;
					}
					
					$bypassCookieSet = false;
					$bypassCookie = $request->getCookies('wfCBLBypass');
					if (isset($bypassCookie) && $bypassCookie == $countryBlocks['cookieVal']) {
						$bypassCookieSet = true;
					}
					
					if (!$skipCountryBlocking && $blockedCountries && !$bypassCookieSet) {
						$isAuthRequest = (strpos($bareRequestURI, '/wp-login.php') !== false);
						$isXMLRPC = (strpos($bareRequestURI, '/xmlrpc.php') !== false);
						$isUserLoggedIn = wfWAF::getInstance()->parseAuthCookie() !== false;
						
						// If everything is checked, make sure this always runs.
						if ($countryBlocks['loggedInBlocked'] && $b['blockLogin'] && $b['blockSite']) {
							if ($blocked = $this->checkForBlockedCountry($countryBlocks, $ip, $bareRequestURI)) { $blocked['id'] = $b['id']; return $blocked; }
						}
						// Block logged in users.
						if ($countryBlocks['loggedInBlocked'] && $isUserLoggedIn) {
							if ($blocked = $this->checkForBlockedCountry($countryBlocks, $ip, $bareRequestURI)) { $blocked['id'] = $b['id']; return $blocked; }
						}
						// Block the login form itself and any attempt to authenticate.
						if ($b['blockLogin'] && $isAuthRequest) {
							if ($blocked = $this->checkForBlockedCountry($countryBlocks, $ip, $bareRequestURI)) { $blocked['id'] = $b['id']; return $blocked; }
						}
						// Block requests that aren't to the login page, xmlrpc.php, or a user already logged in.
						if ($b['blockSite'] && !$isAuthRequest && !$isXMLRPC && !$isUserLoggedIn) {
							if ($blocked = $this->checkForBlockedCountry($countryBlocks, $ip, $bareRequestURI)) { $blocked['id'] = $b['id']; return $blocked; }
						}
						// XMLRPC is inaccesible when public portion of the site and auth is disabled.
						if ($b['blockLogin'] && $b['blockSite'] && $isXMLRPC) {
							if ($blocked = $this->checkForBlockedCountry($countryBlocks, $ip, $bareRequestURI)) { $blocked['id'] = $b['id']; return $blocked; }
						}
						
						// Any bypasses and other block possibilities will be checked at the plugin level once WordPress loads
					}
				}
			}
		}
		// End Country Blocking
		
		// Other Blocks
		$otherBlocks = @wfWAFUtils::json_decode($otherBlocksJSON, true);
		if (is_array($otherBlocks)) {
			$blocks = $otherBlocks['blocks'];
			$bareRequestURI = wfWAFUtils::extractBareURI($request->getURI());
			$isAuthRequest = (stripos($bareRequestURI, '/wp-login.php') !== false);
			foreach ($blocks as $b) {
				if (isset($b['expiration']) && $b['expiration'] < time() && $b['expiration'] != 0) {
					continue;
				}
				
				if (base64_decode($b['IP']) != $ipNum) {
					continue;
				}
				
				if ($isAuthRequest && isset($b['wfsn']) && $b['wfsn']) {
					return array('action' => self::WFWAF_BLOCK_WFSN, 'id' => $b['id']);
				}
				
				return array('action' => (empty($b['reason']) ? '' : $b['reason']), 'id' => $b['id'], 'block' => true);
			}
		}
		// End Other Blocks
		
		// Lockouts
		$lockouts = @wfWAFUtils::json_decode($lockoutsJSON, true);
		if (is_array($lockouts)) {
			$lockouts = $lockouts['lockouts'];
			$isAuthRequest = (stripos($bareRequestURI, '/wp-login.php') !== false) || (stripos($bareRequestURI, '/xmlrpc.php') !== false);
			if ($isAuthRequest) {
				foreach ($lockouts as $l) {
					if (isset($l['expiration']) && $l['expiration'] < time()) {
						continue;
					}
					
					if (base64_decode($l['IP']) != $ipNum) {
						continue;
					}
					
					return array('action' => (empty($l['reason']) ? '' : $l['reason']), 'id' => $l['id'], 'lockout' => true);
				}
			}
		}
		// End Lockouts
		
		return false;
	}
	
	public function countryRedirURL($countryBlocks = null) {
		if (!isset($countryBlocks)) {
			try {
				$countryBlocksJSON = wfWAF::getInstance()->getStorageEngine()->getConfig('countryBlocks', null, 'synced');
			}
			catch (Exception $e) {
				return false;
			}
		}
		
		$countryBlocks = @wfWAFUtils::json_decode($countryBlocksJSON, true);
		if (is_array($countryBlocks)) {
			if ($countryBlocks['action'] == 'redir') {
				return $countryBlocks['redirURL'];
			}
		}
		return false;
	}
	
	public function countryBypassRedirURL($countryBlocks = null) {
		if (!isset($countryBlocks)) {
			try {
				$countryBlocksJSON = wfWAF::getInstance()->getStorageEngine()->getConfig('countryBlocks', null, 'synced');
			}
			catch (Exception $e) {
				return false;
			}
		}
		
		$countryBlocks = @wfWAFUtils::json_decode($countryBlocksJSON, true);
		if (is_array($countryBlocks)) {
			return $countryBlocks['bypassRedirDest'];
		}
		return false;
	}
	
	protected function checkForBlockedCountry($countryBlock, $ip, $bareRequestURI) {
		try {
			$homeURL = wfWAF::getInstance()->getStorageEngine()->getConfig('homeURL', null, 'synced');
		}
		catch (Exception $e) {
			//Do nothing
		}
		
		$bareRequestURI = rtrim($bareRequestURI, '/\\');
		if ($country = $this->ip2Country($ip)) {
			$blocks = $countryBlock['blocks'];
			foreach ($blocks as $b) {
				foreach ($b['countries'] as $blocked) {
					if (strtoupper($blocked) == strtoupper($country)) {
						if ($countryBlock['action'] == 'redir') {
							$redirURL = $countryBlock['redirURL'];
							$eRedirHost = wfWAFUtils::extractHostname($redirURL);
							$isExternalRedir = false;
							if ($eRedirHost && $homeURL && $eRedirHost != wfWAFUtils::extractHostname($homeURL)) {
								$isExternalRedir = true;
							}
							
							if ((!$isExternalRedir) && rtrim(wfWAFUtils::extractBareURI($redirURL), '/\\') == $bareRequestURI){ //Is this the URI we want to redirect to, then don't block it
								//Do nothing
							}
							else {
								return array('action' => self::WFWAF_BLOCK_COUNTRY_REDIR);
							}
						}
						else {
							return array('action' => self::WFWAF_BLOCK_COUNTRY);
						}
					}
				}
			}
		}
		
		return false;
	}
	
	protected function checkForWhitelisted($ip) {
		try {
			$pluginABSPATH = wfWAF::getInstance()->getStorageEngine()->getConfig('pluginABSPATH', null, 'synced');
			$serverIPsJSON = wfWAF::getInstance()->getStorageEngine()->getConfig('serverIPs', null, 'synced');
			$whitelistedServiceIPsJSON = wfWAF::getInstance()->getStorageEngine()->getConfig('whitelistedServiceIPs', null, 'synced');
		}
		catch (Exception $e) {
			// Do nothing
		}
		
		$serverIPs = @wfWAFUtils::json_decode($serverIPsJSON, true);
		if (is_array($serverIPs)) {
			if (
				(isset($_SERVER['SCRIPT_FILENAME']) && $_SERVER['SCRIPT_FILENAME'] == realpath($pluginABSPATH . DIRECTORY_SEPARATOR . 'wp-cron.php')) || //Safe -- plugin will do a final check to make sure the cron constant is defined
				(!empty($_GET['wordfence_syncAttackData'])) //Safe but plugin will do a final check to make sure it runs
			) {
				foreach ($serverIPs as $testIP) {
					if (wfWAFUtils::inet_pton($ip) == wfWAFUtils::inet_pton($testIP)) {
						return true;
					}
				}
			}
		}
		
		$whitelistedServiceIPs = @wfWAFUtils::json_decode($whitelistedServiceIPsJSON, true);
		if (is_array($whitelistedServiceIPs)) {
			$wfIPWhitelist = $whitelistedServiceIPs;
		}
		else {
			$wordfenceLib = realpath(dirname(__FILE__) . '/../lib');
			include($wordfenceLib . '/wfIPWhitelist.php'); /** @var array $wfIPWhitelist */
		}
		
		foreach ($wfIPWhitelist as $group) {
			foreach ($group as $subnet) {
				if ($subnet instanceof wfWAFUserIPRange) { //Not currently reached
					if ($subnet->isIPInRange($ip)) {
						return true;
					}
				} elseif (wfWAFUtils::subnetContainsIP($subnet, $ip)) {
					return true;
				}
			}
		}
		return false;
	}
	
	protected function ip2Country($ip) {
		/**
		 * It's possible this class is already loaded from a different installation of the plugin
		 * by the time this is reached. See wfUtils::requireIpLocator for additional details.
		 */
		if (!class_exists('wfIpLocator'))
			require_once __DIR__ . '/../lib/wfIpLocator.php';
		return wfIpLocator::getInstance()->getCountryCode($ip);
	}
	
	/**
	 * Returns whether or not the site should be treated as if it's full-time SSL.
	 *
	 * @return bool
	 */
	protected function isFullSSL() {
		try {
			$is_ssl = false; //This is the same code from WP modified so we can use it here
			if ( isset( $_SERVER['HTTPS'] ) ) {
				if ( 'on' == strtolower( $_SERVER['HTTPS'] ) ) {
					$is_ssl = true;
				}
				
				if ( '1' == $_SERVER['HTTPS'] ) {
					$is_ssl = true;
				}
			} elseif ( isset($_SERVER['SERVER_PORT'] ) && ( '443' == $_SERVER['SERVER_PORT'] ) ) {
				$is_ssl = true;
			}
			
			$homeURL = wfWAF::getInstance()->getStorageEngine()->getConfig('homeURL', null, 'synced');
			return $is_ssl && parse_url($homeURL, PHP_URL_SCHEME) === 'https';
		}
		catch (Exception $e) {
			//Do nothing
		}
		
		return false;
	}
}
}css/fullLog.1722265817.css000064400000000562150755146460010561 0ustar00body {
	background: #fff;
	font-family: Arial;
	font-size: 12px;
}
h1 {
	background: url(../images/wordfence-logo.svg);
	background-position: 0 0;
	background-repeat: no-repeat;
	height: 64px;
	vertical-align: middle;
	padding: 10px 0 0 90px;
	margin: 20px 0 10px 0;
	font-size: 34px;
	color: #777;
}
.error {
	color: #F00;
	font-weight: bold;
	margin: 20px 0 20px 0;
}
css/wfselect2.min.1722265817.css000064400000036313150755146460011640 0ustar00.wfselect2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.wfselect2-container .wfselect2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.wfselect2-container .wfselect2-selection--single .wfselect2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wfselect2-container .wfselect2-selection--single .wfselect2-selection__clear{position:relative}.wfselect2-container[dir="rtl"] .wfselect2-selection--single .wfselect2-selection__rendered{padding-right:8px;padding-left:20px}.wfselect2-container .wfselect2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.wfselect2-container .wfselect2-selection--multiple .wfselect2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.wfselect2-container .wfselect2-search--inline{float:left}.wfselect2-container .wfselect2-search--inline .wfselect2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.wfselect2-container .wfselect2-search--inline .wfselect2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.wfselect2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:10051}.wfselect2-results{display:block}.wfselect2-results__options{list-style:none;margin:0;padding:0}.wfselect2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.wfselect2-results__option[aria-selected]{cursor:pointer}.wfselect2-container--open .wfselect2-dropdown{left:0}.wfselect2-container--open .wfselect2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.wfselect2-container--open .wfselect2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.wfselect2-search--dropdown{display:block;padding:4px}.wfselect2-search--dropdown .wfselect2-search__field{padding:4px;width:100%;box-sizing:border-box}.wfselect2-search--dropdown .wfselect2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.wfselect2-search--dropdown.wfselect2-search--hide{display:none}.wfselect2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.wfselect2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;-webkit-clip-path:inset(50%) !important;clip-path:inset(50%) !important;height:1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important;white-space:nowrap !important}.wfselect2-container--default .wfselect2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__rendered{color:#444;line-height:28px}.wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__clear{cursor:pointer;float:right;font-weight:bold}.wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__placeholder{color:#999}.wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.wfselect2-container--default[dir="rtl"] .wfselect2-selection--single .wfselect2-selection__clear{float:left}.wfselect2-container--default[dir="rtl"] .wfselect2-selection--single .wfselect2-selection__arrow{left:1px;right:auto}.wfselect2-container--default.wfselect2-container--disabled .wfselect2-selection--single{background-color:#eee;cursor:default}.wfselect2-container--default.wfselect2-container--disabled .wfselect2-selection--single .wfselect2-selection__clear{display:none}.wfselect2-container--default.wfselect2-container--open .wfselect2-selection--single .wfselect2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.wfselect2-container--default .wfselect2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text}.wfselect2-container--default .wfselect2-selection--multiple .wfselect2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.wfselect2-container--default .wfselect2-selection--multiple .wfselect2-selection__rendered li{list-style:none}.wfselect2-container--default .wfselect2-selection--multiple .wfselect2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px;padding:1px}.wfselect2-container--default .wfselect2-selection--multiple .wfselect2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.wfselect2-container--default .wfselect2-selection--multiple .wfselect2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.wfselect2-container--default .wfselect2-selection--multiple .wfselect2-selection__choice__remove:hover{color:#333}.wfselect2-container--default[dir="rtl"] .wfselect2-selection--multiple .wfselect2-selection__choice,.wfselect2-container--default[dir="rtl"] .wfselect2-selection--multiple .wfselect2-search--inline{float:right}.wfselect2-container--default[dir="rtl"] .wfselect2-selection--multiple .wfselect2-selection__choice{margin-left:5px;margin-right:auto}.wfselect2-container--default[dir="rtl"] .wfselect2-selection--multiple .wfselect2-selection__choice__remove{margin-left:2px;margin-right:auto}.wfselect2-container--default.wfselect2-container--focus .wfselect2-selection--multiple{border:solid black 1px;outline:0}.wfselect2-container--default.wfselect2-container--disabled .wfselect2-selection--multiple{background-color:#eee;cursor:default}.wfselect2-container--default.wfselect2-container--disabled .wfselect2-selection__choice__remove{display:none}.wfselect2-container--default.wfselect2-container--open.wfselect2-container--above .wfselect2-selection--single,.wfselect2-container--default.wfselect2-container--open.wfselect2-container--above .wfselect2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}.wfselect2-container--default.wfselect2-container--open.wfselect2-container--below .wfselect2-selection--single,.wfselect2-container--default.wfselect2-container--open.wfselect2-container--below .wfselect2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.wfselect2-container--default .wfselect2-search--dropdown .wfselect2-search__field{border:1px solid #aaa}.wfselect2-container--default .wfselect2-search--inline .wfselect2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.wfselect2-container--default .wfselect2-results>.wfselect2-results__options{max-height:200px;overflow-y:auto}.wfselect2-container--default .wfselect2-results__option[role=group]{padding:0}.wfselect2-container--default .wfselect2-results__option[aria-disabled=true]{color:#999}.wfselect2-container--default .wfselect2-results__option[aria-selected=true]{background-color:#ddd}.wfselect2-container--default .wfselect2-results__option .wfselect2-results__option{padding-left:1em}.wfselect2-container--default .wfselect2-results__option .wfselect2-results__option .wfselect2-results__group{padding-left:0}.wfselect2-container--default .wfselect2-results__option .wfselect2-results__option .wfselect2-results__option{margin-left:-1em;padding-left:2em}.wfselect2-container--default .wfselect2-results__option .wfselect2-results__option .wfselect2-results__option .wfselect2-results__option{margin-left:-2em;padding-left:3em}.wfselect2-container--default .wfselect2-results__option .wfselect2-results__option .wfselect2-results__option .wfselect2-results__option .wfselect2-results__option{margin-left:-3em;padding-left:4em}.wfselect2-container--default .wfselect2-results__option .wfselect2-results__option .wfselect2-results__option .wfselect2-results__option .wfselect2-results__option .wfselect2-results__option{margin-left:-4em;padding-left:5em}.wfselect2-container--default .wfselect2-results__option .wfselect2-results__option .wfselect2-results__option .wfselect2-results__option .wfselect2-results__option .wfselect2-results__option .wfselect2-results__option{margin-left:-5em;padding-left:6em}.wfselect2-container--default .wfselect2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:white}.wfselect2-container--default .wfselect2-results__group{cursor:default;display:block;padding:6px}.wfselect2-container--classic .wfselect2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top, #fff 50%, #eee 100%);background-image:-o-linear-gradient(top, #fff 50%, #eee 100%);background-image:linear-gradient(to bottom, #fff 50%, #eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.wfselect2-container--classic .wfselect2-selection--single:focus{border:1px solid #5897fb}.wfselect2-container--classic .wfselect2-selection--single .wfselect2-selection__rendered{color:#444;line-height:28px}.wfselect2-container--classic .wfselect2-selection--single .wfselect2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-right:10px}.wfselect2-container--classic .wfselect2-selection--single .wfselect2-selection__placeholder{color:#999}.wfselect2-container--classic .wfselect2-selection--single .wfselect2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top, #eee 50%, #ccc 100%);background-image:-o-linear-gradient(top, #eee 50%, #ccc 100%);background-image:linear-gradient(to bottom, #eee 50%, #ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.wfselect2-container--classic .wfselect2-selection--single .wfselect2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.wfselect2-container--classic[dir="rtl"] .wfselect2-selection--single .wfselect2-selection__clear{float:left}.wfselect2-container--classic[dir="rtl"] .wfselect2-selection--single .wfselect2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.wfselect2-container--classic.wfselect2-container--open .wfselect2-selection--single{border:1px solid #5897fb}.wfselect2-container--classic.wfselect2-container--open .wfselect2-selection--single .wfselect2-selection__arrow{background:transparent;border:none}.wfselect2-container--classic.wfselect2-container--open .wfselect2-selection--single .wfselect2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.wfselect2-container--classic.wfselect2-container--open.wfselect2-container--above .wfselect2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top, #fff 0%, #eee 50%);background-image:-o-linear-gradient(top, #fff 0%, #eee 50%);background-image:linear-gradient(to bottom, #fff 0%, #eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.wfselect2-container--classic.wfselect2-container--open.wfselect2-container--below .wfselect2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top, #eee 50%, #fff 100%);background-image:-o-linear-gradient(top, #eee 50%, #fff 100%);background-image:linear-gradient(to bottom, #eee 50%, #fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.wfselect2-container--classic .wfselect2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.wfselect2-container--classic .wfselect2-selection--multiple:focus{border:1px solid #5897fb}.wfselect2-container--classic .wfselect2-selection--multiple .wfselect2-selection__rendered{list-style:none;margin:0;padding:0 5px}.wfselect2-container--classic .wfselect2-selection--multiple .wfselect2-selection__clear{display:none}.wfselect2-container--classic .wfselect2-selection--multiple .wfselect2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.wfselect2-container--classic .wfselect2-selection--multiple .wfselect2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.wfselect2-container--classic .wfselect2-selection--multiple .wfselect2-selection__choice__remove:hover{color:#555}.wfselect2-container--classic[dir="rtl"] .wfselect2-selection--multiple .wfselect2-selection__choice{float:right;margin-left:5px;margin-right:auto}.wfselect2-container--classic[dir="rtl"] .wfselect2-selection--multiple .wfselect2-selection__choice__remove{margin-left:2px;margin-right:auto}.wfselect2-container--classic.wfselect2-container--open .wfselect2-selection--multiple{border:1px solid #5897fb}.wfselect2-container--classic.wfselect2-container--open.wfselect2-container--above .wfselect2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.wfselect2-container--classic.wfselect2-container--open.wfselect2-container--below .wfselect2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.wfselect2-container--classic .wfselect2-search--dropdown .wfselect2-search__field{border:1px solid #aaa;outline:0}.wfselect2-container--classic .wfselect2-search--inline .wfselect2-search__field{outline:0;box-shadow:none}.wfselect2-container--classic .wfselect2-dropdown{background-color:#fff;border:1px solid transparent}.wfselect2-container--classic .wfselect2-dropdown--above{border-bottom:none}.wfselect2-container--classic .wfselect2-dropdown--below{border-top:none}.wfselect2-container--classic .wfselect2-results>.wfselect2-results__options{max-height:200px;overflow-y:auto}.wfselect2-container--classic .wfselect2-results__option[role=group]{padding:0}.wfselect2-container--classic .wfselect2-results__option[aria-disabled=true]{color:grey}.wfselect2-container--classic .wfselect2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.wfselect2-container--classic .wfselect2-results__group{cursor:default;display:block;padding:6px}.wfselect2-container--classic.wfselect2-container--open .wfselect2-dropdown{border-color:#5897fb}
css/jquery-ui.structure.min.1722265817.css000064400000034654150755146460013741 0ustar00/*! jQuery UI - v1.11.4 - 2018-06-29
* http://jqueryui.com
* Copyright jQuery Foundation and other contributors; Licensed MIT */

.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;min-height:0;font-size:100%}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-button{display:inline-block;overflow:hidden;position:relative;text-decoration:none;cursor:pointer}.ui-selectmenu-button span.ui-icon{right:0.5em;left:auto;margin-top:-8px;position:absolute;top:50%}.ui-selectmenu-button span.ui-selectmenu-text{text-align:left;padding:0.4em 2.1em 0.4em 1em;display:block;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}css/wf-global.1722265817.css000064400000001557150755146460011034 0ustar00#wf-extended-protection-notice{display:inline-block;line-height:1.4;padding:11px 15px;font-size:14px;text-align:left;margin:25px 20px 0 2px;background-color:#fff;border-left:4px solid #ffba00;box-shadow:0 1px 1px 0 rgba(0,0,0,0.1)}#wfcolorbox.wf-modal .wf-modal-footer.wf-modal-footer-center{justify-content:center}div.wf-radio-group div.wf-radio-option{display:flex;align-items:center}div.wf-radio-group div.wf-radio-option:not(:last-child){margin-bottom:8px}div.wf-radio-group div.wf-radio-option input[type=radio]{margin-right:8px}.wf-password-requirements{list-style-type:circle;margin:0}.wf-password-requirements>li{margin-left:2rem;margin-bottom:0}a.wfhelp{margin:0 3px 0 3px;text-decoration:none;display:inline-block;vertical-align:middle;font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased}a.wfhelp:before{content:'\f29c'}
css/activity-report-widget.1722265817.css000064400000004654150755146460013611 0ustar00#wordfence_activity_report_widget .wf-logo {
	text-align: center;
	display: block;
}
#wordfence_activity_report_widget .wf-logo img {
	max-width: 100%;
	width: 400px;
}
#wordfence_activity_report_widget .inside h1,
#wordfence_activity_report_widget .inside h2,
#wordfence_activity_report_widget .inside h3,
#wordfence_activity_report_widget .inside h4 {
	margin: 20px 0 4px;
	color: #222 !important;
}
#wordfence_activity_report_widget .inside h1 {
	float: right;
	text-align: right;
	font-size: 30px;
	color: #444444 !important;
	line-height: 1.1;
}
#wordfence_activity_report_widget .inside h2 {
	font-size: 20px;
}
#wordfence_activity_report_widget .inside h4 {
	font-size: 16px;
	color: #666666 !important;
}
#wordfence_activity_report_widget .inside code {
	background-color: transparent;
}
#wordfence_activity_report_widget table.wf-striped-table {
	width: 100%;
	max-width: 100%;
	border-collapse: collapse;
}
#wordfence_activity_report_widget table.wf-fixed-table {
	table-layout: fixed;
}
#wordfence_activity_report_widget table.wf-striped-table th,
#wordfence_activity_report_widget table.wf-striped-table td {
	text-align: left;
	padding: 6px 4px;
	border: 1px solid #cccccc;
}
#wordfence_activity_report_widget table.wf-striped-table thead th,
#wordfence_activity_report_widget table.wf-striped-table thead td {
	background-color: #222;
	color: #FFFFFF;
	font-weight: bold;
	border-color: #474747;
}
#wordfence_activity_report_widget table.wf-striped-table tbody tr.even td {
	background-color: #eeeeee;
}
#wordfence_activity_report_widget .loginFailValidUsername {
	color: #00c000;
	font-weight: bold;
}
#wordfence_activity_report_widget .loginFailInvalidUsername {
	color: #e74a2a;
	font-weight: bold;
}
#wordfence_activity_report_widget .display-file-table-cell {
	overflow: hidden;
}
#wordfence_activity_report_widget .display-file {
	margin: 0px;
	display: block;
	font-size: 12px;
	width: 100%;
	overflow: auto;
	white-space: nowrap;
}
#wordfence_activity_report_widget .recently-modified-files {
	table-layout: fixed;
}
#wordfence_activity_report_widget .recently-modified-files th:nth-child(1),
#wordfence_activity_report_widget .recently-modified-files td:nth-child(1) {
	width: 30%;
}
#wordfence_activity_report_widget .recently-modified-files th:nth-child(2),
#wordfence_activity_report_widget .recently-modified-files td:nth-child(2) {
	width: 70%;
}

#wordfence_activity_report_widget .wf-split-word {
	word-wrap: break-word;
	word-break: break-all;
}css/wf-font-awesome.1722265817.css000064400000076017150755146460012203 0ustar00/*!
 *  Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
 *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
 */@font-face{font-family:'FontAwesome';src:url("../fonts/fontawesome-webfont.woff?v=4.7.0") format("woff");font-weight:normal;font-style:normal}.wf-fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wf-fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-15%}.wf-fa-2x{font-size:2em}.wf-fa-3x{font-size:3em}.wf-fa-4x{font-size:4em}.wf-fa-5x{font-size:5em}.wf-fa-fw{width:1.28571em;text-align:center}.wf-fa-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.wf-fa-ul>li{position:relative}.wf-fa-li{position:absolute;left:-2.14286em;width:2.14286em;top:.14286em;text-align:center}.wf-fa-li.wf-fa-lg{left:-1.85714em}.wf-fa-border{padding:.2em .25em .15em;border:solid 0.08em #eee;border-radius:.1em}.wf-fa-pull-left{float:left}.wf-fa-pull-right{float:right}.wf-fa.wf-fa-pull-left{margin-right:.3em}.wf-fa.wf-fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.wf-fa.pull-left{margin-right:.3em}.wf-fa.pull-right{margin-left:.3em}.wf-fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.wf-fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.wf-fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.wf-fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.wf-fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.wf-fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.wf-fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .wf-fa-rotate-90,:root .wf-fa-rotate-180,:root .wf-fa-rotate-270,:root .wf-fa-flip-horizontal,:root .wf-fa-flip-vertical{filter:none}.wf-fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.wf-fa-stack-1x,.wf-fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.wf-fa-stack-1x{line-height:inherit}.wf-fa-stack-2x{font-size:2em}.wf-fa-inverse{color:#fff}.wf-fa-glass:before{content:""}.wf-fa-music:before{content:""}.wf-fa-search:before{content:""}.wf-fa-envelope-o:before{content:""}.wf-fa-heart:before{content:""}.wf-fa-star:before{content:""}.wf-fa-star-o:before{content:""}.wf-fa-user:before{content:""}.wf-fa-film:before{content:""}.wf-fa-th-large:before{content:""}.wf-fa-th:before{content:""}.wf-fa-th-list:before{content:""}.wf-fa-check:before{content:""}.wf-fa-remove:before,.wf-fa-close:before,.wf-fa-times:before{content:""}.wf-fa-search-plus:before{content:""}.wf-fa-search-minus:before{content:""}.wf-fa-power-off:before{content:""}.wf-fa-signal:before{content:""}.wf-fa-gear:before,.wf-fa-cog:before{content:""}.wf-fa-trash-o:before{content:""}.wf-fa-home:before{content:""}.wf-fa-file-o:before{content:""}.wf-fa-clock-o:before{content:""}.wf-fa-road:before{content:""}.wf-fa-download:before{content:""}.wf-fa-arrow-circle-o-down:before{content:""}.wf-fa-arrow-circle-o-up:before{content:""}.wf-fa-inbox:before{content:""}.wf-fa-play-circle-o:before{content:""}.wf-fa-rotate-right:before,.wf-fa-repeat:before{content:""}.wf-fa-refresh:before{content:""}.wf-fa-list-alt:before{content:""}.wf-fa-lock:before{content:""}.wf-fa-flag:before{content:""}.wf-fa-headphones:before{content:""}.wf-fa-volume-off:before{content:""}.wf-fa-volume-down:before{content:""}.wf-fa-volume-up:before{content:""}.wf-fa-qrcode:before{content:""}.wf-fa-barcode:before{content:""}.wf-fa-tag:before{content:""}.wf-fa-tags:before{content:""}.wf-fa-book:before{content:""}.wf-fa-bookmark:before{content:""}.wf-fa-print:before{content:""}.wf-fa-camera:before{content:""}.wf-fa-font:before{content:""}.wf-fa-bold:before{content:""}.wf-fa-italic:before{content:""}.wf-fa-text-height:before{content:""}.wf-fa-text-width:before{content:""}.wf-fa-align-left:before{content:""}.wf-fa-align-center:before{content:""}.wf-fa-align-right:before{content:""}.wf-fa-align-justify:before{content:""}.wf-fa-list:before{content:""}.wf-fa-dedent:before,.wf-fa-outdent:before{content:""}.wf-fa-indent:before{content:""}.wf-fa-video-camera:before{content:""}.wf-fa-photo:before,.wf-fa-image:before,.wf-fa-picture-o:before{content:""}.wf-fa-pencil:before{content:""}.wf-fa-map-marker:before{content:""}.wf-fa-adjust:before{content:""}.wf-fa-tint:before{content:""}.wf-fa-edit:before,.wf-fa-pencil-square-o:before{content:""}.wf-fa-share-square-o:before{content:""}.wf-fa-check-square-o:before{content:""}.wf-fa-arrows:before{content:""}.wf-fa-step-backward:before{content:""}.wf-fa-fast-backward:before{content:""}.wf-fa-backward:before{content:""}.wf-fa-play:before{content:""}.wf-fa-pause:before{content:""}.wf-fa-stop:before{content:""}.wf-fa-forward:before{content:""}.wf-fa-fast-forward:before{content:""}.wf-fa-step-forward:before{content:""}.wf-fa-eject:before{content:""}.wf-fa-chevron-left:before{content:""}.wf-fa-chevron-right:before{content:""}.wf-fa-plus-circle:before{content:""}.wf-fa-minus-circle:before{content:""}.wf-fa-times-circle:before{content:""}.wf-fa-check-circle:before{content:""}.wf-fa-question-circle:before{content:""}.wf-fa-info-circle:before{content:""}.wf-fa-crosshairs:before{content:""}.wf-fa-times-circle-o:before{content:""}.wf-fa-check-circle-o:before{content:""}.wf-fa-ban:before{content:""}.wf-fa-arrow-left:before{content:""}.wf-fa-arrow-right:before{content:""}.wf-fa-arrow-up:before{content:""}.wf-fa-arrow-down:before{content:""}.wf-fa-mail-forward:before,.wf-fa-share:before{content:""}.wf-fa-expand:before{content:""}.wf-fa-compress:before{content:""}.wf-fa-plus:before{content:""}.wf-fa-minus:before{content:""}.wf-fa-asterisk:before{content:""}.wf-fa-exclamation-circle:before{content:""}.wf-fa-gift:before{content:""}.wf-fa-leaf:before{content:""}.wf-fa-fire:before{content:""}.wf-fa-eye:before{content:""}.wf-fa-eye-slash:before{content:""}.wf-fa-warning:before,.wf-fa-exclamation-triangle:before{content:""}.wf-fa-plane:before{content:""}.wf-fa-calendar:before{content:""}.wf-fa-random:before{content:""}.wf-fa-comment:before{content:""}.wf-fa-magnet:before{content:""}.wf-fa-chevron-up:before{content:""}.wf-fa-chevron-down:before{content:""}.wf-fa-retweet:before{content:""}.wf-fa-shopping-cart:before{content:""}.wf-fa-folder:before{content:""}.wf-fa-folder-open:before{content:""}.wf-fa-arrows-v:before{content:""}.wf-fa-arrows-h:before{content:""}.wf-fa-bar-chart-o:before,.wf-fa-bar-chart:before{content:""}.wf-fa-twitter-square:before{content:""}.wf-fa-facebook-square:before{content:""}.wf-fa-camera-retro:before{content:""}.wf-fa-key:before{content:""}.wf-fa-gears:before,.wf-fa-cogs:before{content:""}.wf-fa-comments:before{content:""}.wf-fa-thumbs-o-up:before{content:""}.wf-fa-thumbs-o-down:before{content:""}.wf-fa-star-half:before{content:""}.wf-fa-heart-o:before{content:""}.wf-fa-sign-out:before{content:""}.wf-fa-linkedin-square:before{content:""}.wf-fa-thumb-tack:before{content:""}.wf-fa-external-link:before{content:""}.wf-fa-sign-in:before{content:""}.wf-fa-trophy:before{content:""}.wf-fa-github-square:before{content:""}.wf-fa-upload:before{content:""}.wf-fa-lemon-o:before{content:""}.wf-fa-phone:before{content:""}.wf-fa-square-o:before{content:""}.wf-fa-bookmark-o:before{content:""}.wf-fa-phone-square:before{content:""}.wf-fa-twitter:before{content:""}.wf-fa-facebook-f:before,.wf-fa-facebook:before{content:""}.wf-fa-github:before{content:""}.wf-fa-unlock:before{content:""}.wf-fa-credit-card:before{content:""}.wf-fa-feed:before,.wf-fa-rss:before{content:""}.wf-fa-hdd-o:before{content:""}.wf-fa-bullhorn:before{content:""}.wf-fa-bell:before{content:""}.wf-fa-certificate:before{content:""}.wf-fa-hand-o-right:before{content:""}.wf-fa-hand-o-left:before{content:""}.wf-fa-hand-o-up:before{content:""}.wf-fa-hand-o-down:before{content:""}.wf-fa-arrow-circle-left:before{content:""}.wf-fa-arrow-circle-right:before{content:""}.wf-fa-arrow-circle-up:before{content:""}.wf-fa-arrow-circle-down:before{content:""}.wf-fa-globe:before{content:""}.wf-fa-wrench:before{content:""}.wf-fa-tasks:before{content:""}.wf-fa-filter:before{content:""}.wf-fa-briefcase:before{content:""}.wf-fa-arrows-alt:before{content:""}.wf-fa-group:before,.wf-fa-users:before{content:""}.wf-fa-chain:before,.wf-fa-link:before{content:""}.wf-fa-cloud:before{content:""}.wf-fa-flask:before{content:""}.wf-fa-cut:before,.wf-fa-scissors:before{content:""}.wf-fa-copy:before,.wf-fa-files-o:before{content:""}.wf-fa-paperclip:before{content:""}.wf-fa-save:before,.wf-fa-floppy-o:before{content:""}.wf-fa-square:before{content:""}.wf-fa-navicon:before,.wf-fa-reorder:before,.wf-fa-bars:before{content:""}.wf-fa-list-ul:before{content:""}.wf-fa-list-ol:before{content:""}.wf-fa-strikethrough:before{content:""}.wf-fa-underline:before{content:""}.wf-fa-table:before{content:""}.wf-fa-magic:before{content:""}.wf-fa-truck:before{content:""}.wf-fa-pinterest:before{content:""}.wf-fa-pinterest-square:before{content:""}.wf-fa-google-plus-square:before{content:""}.wf-fa-google-plus:before{content:""}.wf-fa-money:before{content:""}.wf-fa-caret-down:before{content:""}.wf-fa-caret-up:before{content:""}.wf-fa-caret-left:before{content:""}.wf-fa-caret-right:before{content:""}.wf-fa-columns:before{content:""}.wf-fa-unsorted:before,.wf-fa-sort:before{content:""}.wf-fa-sort-down:before,.wf-fa-sort-desc:before{content:""}.wf-fa-sort-up:before,.wf-fa-sort-asc:before{content:""}.wf-fa-envelope:before{content:""}.wf-fa-linkedin:before{content:""}.wf-fa-rotate-left:before,.wf-fa-undo:before{content:""}.wf-fa-legal:before,.wf-fa-gavel:before{content:""}.wf-fa-dashboard:before,.wf-fa-tachometer:before{content:""}.wf-fa-comment-o:before{content:""}.wf-fa-comments-o:before{content:""}.wf-fa-flash:before,.wf-fa-bolt:before{content:""}.wf-fa-sitemap:before{content:""}.wf-fa-umbrella:before{content:""}.wf-fa-paste:before,.wf-fa-clipboard:before{content:""}.wf-fa-lightbulb-o:before{content:""}.wf-fa-exchange:before{content:""}.wf-fa-cloud-download:before{content:""}.wf-fa-cloud-upload:before{content:""}.wf-fa-user-md:before{content:""}.wf-fa-stethoscope:before{content:""}.wf-fa-suitcase:before{content:""}.wf-fa-bell-o:before{content:""}.wf-fa-coffee:before{content:""}.wf-fa-cutlery:before{content:""}.wf-fa-file-text-o:before{content:""}.wf-fa-building-o:before{content:""}.wf-fa-hospital-o:before{content:""}.wf-fa-ambulance:before{content:""}.wf-fa-medkit:before{content:""}.wf-fa-fighter-jet:before{content:""}.wf-fa-beer:before{content:""}.wf-fa-h-square:before{content:""}.wf-fa-plus-square:before{content:""}.wf-fa-angle-double-left:before{content:""}.wf-fa-angle-double-right:before{content:""}.wf-fa-angle-double-up:before{content:""}.wf-fa-angle-double-down:before{content:""}.wf-fa-angle-left:before{content:""}.wf-fa-angle-right:before{content:""}.wf-fa-angle-up:before{content:""}.wf-fa-angle-down:before{content:""}.wf-fa-desktop:before{content:""}.wf-fa-laptop:before{content:""}.wf-fa-tablet:before{content:""}.wf-fa-mobile-phone:before,.wf-fa-mobile:before{content:""}.wf-fa-circle-o:before{content:""}.wf-fa-quote-left:before{content:""}.wf-fa-quote-right:before{content:""}.wf-fa-spinner:before{content:""}.wf-fa-circle:before{content:""}.wf-fa-mail-reply:before,.wf-fa-reply:before{content:""}.wf-fa-github-alt:before{content:""}.wf-fa-folder-o:before{content:""}.wf-fa-folder-open-o:before{content:""}.wf-fa-smile-o:before{content:""}.wf-fa-frown-o:before{content:""}.wf-fa-meh-o:before{content:""}.wf-fa-gamepad:before{content:""}.wf-fa-keyboard-o:before{content:""}.wf-fa-flag-o:before{content:""}.wf-fa-flag-checkered:before{content:""}.wf-fa-terminal:before{content:""}.wf-fa-code:before{content:""}.wf-fa-mail-reply-all:before,.wf-fa-reply-all:before{content:""}.wf-fa-star-half-empty:before,.wf-fa-star-half-full:before,.wf-fa-star-half-o:before{content:""}.wf-fa-location-arrow:before{content:""}.wf-fa-crop:before{content:""}.wf-fa-code-fork:before{content:""}.wf-fa-unlink:before,.wf-fa-chain-broken:before{content:""}.wf-fa-question:before{content:""}.wf-fa-info:before{content:""}.wf-fa-exclamation:before{content:""}.wf-fa-superscript:before{content:""}.wf-fa-subscript:before{content:""}.wf-fa-eraser:before{content:""}.wf-fa-puzzle-piece:before{content:""}.wf-fa-microphone:before{content:""}.wf-fa-microphone-slash:before{content:""}.wf-fa-shield:before{content:""}.wf-fa-calendar-o:before{content:""}.wf-fa-fire-extinguisher:before{content:""}.wf-fa-rocket:before{content:""}.wf-fa-maxcdn:before{content:""}.wf-fa-chevron-circle-left:before{content:""}.wf-fa-chevron-circle-right:before{content:""}.wf-fa-chevron-circle-up:before{content:""}.wf-fa-chevron-circle-down:before{content:""}.wf-fa-html5:before{content:""}.wf-fa-css3:before{content:""}.wf-fa-anchor:before{content:""}.wf-fa-unlock-alt:before{content:""}.wf-fa-bullseye:before{content:""}.wf-fa-ellipsis-h:before{content:""}.wf-fa-ellipsis-v:before{content:""}.wf-fa-rss-square:before{content:""}.wf-fa-play-circle:before{content:""}.wf-fa-ticket:before{content:""}.wf-fa-minus-square:before{content:""}.wf-fa-minus-square-o:before{content:""}.wf-fa-level-up:before{content:""}.wf-fa-level-down:before{content:""}.wf-fa-check-square:before{content:""}.wf-fa-pencil-square:before{content:""}.wf-fa-external-link-square:before{content:""}.wf-fa-share-square:before{content:""}.wf-fa-compass:before{content:""}.wf-fa-toggle-down:before,.wf-fa-caret-square-o-down:before{content:""}.wf-fa-toggle-up:before,.wf-fa-caret-square-o-up:before{content:""}.wf-fa-toggle-right:before,.wf-fa-caret-square-o-right:before{content:""}.wf-fa-euro:before,.wf-fa-eur:before{content:""}.wf-fa-gbp:before{content:""}.wf-fa-dollar:before,.wf-fa-usd:before{content:""}.wf-fa-rupee:before,.wf-fa-inr:before{content:""}.wf-fa-cny:before,.wf-fa-rmb:before,.wf-fa-yen:before,.wf-fa-jpy:before{content:""}.wf-fa-ruble:before,.wf-fa-rouble:before,.wf-fa-rub:before{content:""}.wf-fa-won:before,.wf-fa-krw:before{content:""}.wf-fa-bitcoin:before,.wf-fa-btc:before{content:""}.wf-fa-file:before{content:""}.wf-fa-file-text:before{content:""}.wf-fa-sort-alpha-asc:before{content:""}.wf-fa-sort-alpha-desc:before{content:""}.wf-fa-sort-amount-asc:before{content:""}.wf-fa-sort-amount-desc:before{content:""}.wf-fa-sort-numeric-asc:before{content:""}.wf-fa-sort-numeric-desc:before{content:""}.wf-fa-thumbs-up:before{content:""}.wf-fa-thumbs-down:before{content:""}.wf-fa-youtube-square:before{content:""}.wf-fa-youtube:before{content:""}.wf-fa-xing:before{content:""}.wf-fa-xing-square:before{content:""}.wf-fa-youtube-play:before{content:""}.wf-fa-dropbox:before{content:""}.wf-fa-stack-overflow:before{content:""}.wf-fa-instagram:before{content:""}.wf-fa-flickr:before{content:""}.wf-fa-adn:before{content:""}.wf-fa-bitbucket:before{content:""}.wf-fa-bitbucket-square:before{content:""}.wf-fa-tumblr:before{content:""}.wf-fa-tumblr-square:before{content:""}.wf-fa-long-arrow-down:before{content:""}.wf-fa-long-arrow-up:before{content:""}.wf-fa-long-arrow-left:before{content:""}.wf-fa-long-arrow-right:before{content:""}.wf-fa-apple:before{content:""}.wf-fa-windows:before{content:""}.wf-fa-android:before{content:""}.wf-fa-linux:before{content:""}.wf-fa-dribbble:before{content:""}.wf-fa-skype:before{content:""}.wf-fa-foursquare:before{content:""}.wf-fa-trello:before{content:""}.wf-fa-female:before{content:""}.wf-fa-male:before{content:""}.wf-fa-gittip:before,.wf-fa-gratipay:before{content:""}.wf-fa-sun-o:before{content:""}.wf-fa-moon-o:before{content:""}.wf-fa-archive:before{content:""}.wf-fa-bug:before{content:""}.wf-fa-vk:before{content:""}.wf-fa-weibo:before{content:""}.wf-fa-renren:before{content:""}.wf-fa-pagelines:before{content:""}.wf-fa-stack-exchange:before{content:""}.wf-fa-arrow-circle-o-right:before{content:""}.wf-fa-arrow-circle-o-left:before{content:""}.wf-fa-toggle-left:before,.wf-fa-caret-square-o-left:before{content:""}.wf-fa-dot-circle-o:before{content:""}.wf-fa-wheelchair:before{content:""}.wf-fa-vimeo-square:before{content:""}.wf-fa-turkish-lira:before,.wf-fa-try:before{content:""}.wf-fa-plus-square-o:before{content:""}.wf-fa-space-shuttle:before{content:""}.wf-fa-slack:before{content:""}.wf-fa-envelope-square:before{content:""}.wf-fa-wordpress:before{content:""}.wf-fa-openid:before{content:""}.wf-fa-institution:before,.wf-fa-bank:before,.wf-fa-university:before{content:""}.wf-fa-mortar-board:before,.wf-fa-graduation-cap:before{content:""}.wf-fa-yahoo:before{content:""}.wf-fa-google:before{content:""}.wf-fa-reddit:before{content:""}.wf-fa-reddit-square:before{content:""}.wf-fa-stumbleupon-circle:before{content:""}.wf-fa-stumbleupon:before{content:""}.wf-fa-delicious:before{content:""}.wf-fa-digg:before{content:""}.wf-fa-pied-piper-pp:before{content:""}.wf-fa-pied-piper-alt:before{content:""}.wf-fa-drupal:before{content:""}.wf-fa-joomla:before{content:""}.wf-fa-language:before{content:""}.wf-fa-fax:before{content:""}.wf-fa-building:before{content:""}.wf-fa-child:before{content:""}.wf-fa-paw:before{content:""}.wf-fa-spoon:before{content:""}.wf-fa-cube:before{content:""}.wf-fa-cubes:before{content:""}.wf-fa-behance:before{content:""}.wf-fa-behance-square:before{content:""}.wf-fa-steam:before{content:""}.wf-fa-steam-square:before{content:""}.wf-fa-recycle:before{content:""}.wf-fa-automobile:before,.wf-fa-car:before{content:""}.wf-fa-cab:before,.wf-fa-taxi:before{content:""}.wf-fa-tree:before{content:""}.wf-fa-spotify:before{content:""}.wf-fa-deviantart:before{content:""}.wf-fa-soundcloud:before{content:""}.wf-fa-database:before{content:""}.wf-fa-file-pdf-o:before{content:""}.wf-fa-file-word-o:before{content:""}.wf-fa-file-excel-o:before{content:""}.wf-fa-file-powerpoint-o:before{content:""}.wf-fa-file-photo-o:before,.wf-fa-file-picture-o:before,.wf-fa-file-image-o:before{content:""}.wf-fa-file-zip-o:before,.wf-fa-file-archive-o:before{content:""}.wf-fa-file-sound-o:before,.wf-fa-file-audio-o:before{content:""}.wf-fa-file-movie-o:before,.wf-fa-file-video-o:before{content:""}.wf-fa-file-code-o:before{content:""}.wf-fa-vine:before{content:""}.wf-fa-codepen:before{content:""}.wf-fa-jsfiddle:before{content:""}.wf-fa-life-bouy:before,.wf-fa-life-buoy:before,.wf-fa-life-saver:before,.wf-fa-support:before,.wf-fa-life-ring:before{content:""}.wf-fa-circle-o-notch:before{content:""}.wf-fa-ra:before,.wf-fa-resistance:before,.wf-fa-rebel:before{content:""}.wf-fa-ge:before,.wf-fa-empire:before{content:""}.wf-fa-git-square:before{content:""}.wf-fa-git:before{content:""}.wf-fa-y-combinator-square:before,.wf-fa-yc-square:before,.wf-fa-hacker-news:before{content:""}.wf-fa-tencent-weibo:before{content:""}.wf-fa-qq:before{content:""}.wf-fa-wechat:before,.wf-fa-weixin:before{content:""}.wf-fa-send:before,.wf-fa-paper-plane:before{content:""}.wf-fa-send-o:before,.wf-fa-paper-plane-o:before{content:""}.wf-fa-history:before{content:""}.wf-fa-circle-thin:before{content:""}.wf-fa-header:before{content:""}.wf-fa-paragraph:before{content:""}.wf-fa-sliders:before{content:""}.wf-fa-share-alt:before{content:""}.wf-fa-share-alt-square:before{content:""}.wf-fa-bomb:before{content:""}.wf-fa-soccer-ball-o:before,.wf-fa-futbol-o:before{content:""}.wf-fa-tty:before{content:""}.wf-fa-binoculars:before{content:""}.wf-fa-plug:before{content:""}.wf-fa-slideshare:before{content:""}.wf-fa-twitch:before{content:""}.wf-fa-yelp:before{content:""}.wf-fa-newspaper-o:before{content:""}.wf-fa-wifi:before{content:""}.wf-fa-calculator:before{content:""}.wf-fa-paypal:before{content:""}.wf-fa-google-wallet:before{content:""}.wf-fa-cc-visa:before{content:""}.wf-fa-cc-mastercard:before{content:""}.wf-fa-cc-discover:before{content:""}.wf-fa-cc-amex:before{content:""}.wf-fa-cc-paypal:before{content:""}.wf-fa-cc-stripe:before{content:""}.wf-fa-bell-slash:before{content:""}.wf-fa-bell-slash-o:before{content:""}.wf-fa-trash:before{content:""}.wf-fa-copyright:before{content:""}.wf-fa-at:before{content:""}.wf-fa-eyedropper:before{content:""}.wf-fa-paint-brush:before{content:""}.wf-fa-birthday-cake:before{content:""}.wf-fa-area-chart:before{content:""}.wf-fa-pie-chart:before{content:""}.wf-fa-line-chart:before{content:""}.wf-fa-lastfm:before{content:""}.wf-fa-lastfm-square:before{content:""}.wf-fa-toggle-off:before{content:""}.wf-fa-toggle-on:before{content:""}.wf-fa-bicycle:before{content:""}.wf-fa-bus:before{content:""}.wf-fa-ioxhost:before{content:""}.wf-fa-angellist:before{content:""}.wf-fa-cc:before{content:""}.wf-fa-shekel:before,.wf-fa-sheqel:before,.wf-fa-ils:before{content:""}.wf-fa-meanpath:before{content:""}.wf-fa-buysellads:before{content:""}.wf-fa-connectdevelop:before{content:""}.wf-fa-dashcube:before{content:""}.wf-fa-forumbee:before{content:""}.wf-fa-leanpub:before{content:""}.wf-fa-sellsy:before{content:""}.wf-fa-shirtsinbulk:before{content:""}.wf-fa-simplybuilt:before{content:""}.wf-fa-skyatlas:before{content:""}.wf-fa-cart-plus:before{content:""}.wf-fa-cart-arrow-down:before{content:""}.wf-fa-diamond:before{content:""}.wf-fa-ship:before{content:""}.wf-fa-user-secret:before{content:""}.wf-fa-motorcycle:before{content:""}.wf-fa-street-view:before{content:""}.wf-fa-heartbeat:before{content:""}.wf-fa-venus:before{content:""}.wf-fa-mars:before{content:""}.wf-fa-mercury:before{content:""}.wf-fa-intersex:before,.wf-fa-transgender:before{content:""}.wf-fa-transgender-alt:before{content:""}.wf-fa-venus-double:before{content:""}.wf-fa-mars-double:before{content:""}.wf-fa-venus-mars:before{content:""}.wf-fa-mars-stroke:before{content:""}.wf-fa-mars-stroke-v:before{content:""}.wf-fa-mars-stroke-h:before{content:""}.wf-fa-neuter:before{content:""}.wf-fa-genderless:before{content:""}.wf-fa-facebook-official:before{content:""}.wf-fa-pinterest-p:before{content:""}.wf-fa-whatsapp:before{content:""}.wf-fa-server:before{content:""}.wf-fa-user-plus:before{content:""}.wf-fa-user-times:before{content:""}.wf-fa-hotel:before,.wf-fa-bed:before{content:""}.wf-fa-viacoin:before{content:""}.wf-fa-train:before{content:""}.wf-fa-subway:before{content:""}.wf-fa-medium:before{content:""}.wf-fa-yc:before,.wf-fa-y-combinator:before{content:""}.wf-fa-optin-monster:before{content:""}.wf-fa-opencart:before{content:""}.wf-fa-expeditedssl:before{content:""}.wf-fa-battery-4:before,.wf-fa-battery:before,.wf-fa-battery-full:before{content:""}.wf-fa-battery-3:before,.wf-fa-battery-three-quarters:before{content:""}.wf-fa-battery-2:before,.wf-fa-battery-half:before{content:""}.wf-fa-battery-1:before,.wf-fa-battery-quarter:before{content:""}.wf-fa-battery-0:before,.wf-fa-battery-empty:before{content:""}.wf-fa-mouse-pointer:before{content:""}.wf-fa-i-cursor:before{content:""}.wf-fa-object-group:before{content:""}.wf-fa-object-ungroup:before{content:""}.wf-fa-sticky-note:before{content:""}.wf-fa-sticky-note-o:before{content:""}.wf-fa-cc-jcb:before{content:""}.wf-fa-cc-diners-club:before{content:""}.wf-fa-clone:before{content:""}.wf-fa-balance-scale:before{content:""}.wf-fa-hourglass-o:before{content:""}.wf-fa-hourglass-1:before,.wf-fa-hourglass-start:before{content:""}.wf-fa-hourglass-2:before,.wf-fa-hourglass-half:before{content:""}.wf-fa-hourglass-3:before,.wf-fa-hourglass-end:before{content:""}.wf-fa-hourglass:before{content:""}.wf-fa-hand-grab-o:before,.wf-fa-hand-rock-o:before{content:""}.wf-fa-hand-stop-o:before,.wf-fa-hand-paper-o:before{content:""}.wf-fa-hand-scissors-o:before{content:""}.wf-fa-hand-lizard-o:before{content:""}.wf-fa-hand-spock-o:before{content:""}.wf-fa-hand-pointer-o:before{content:""}.wf-fa-hand-peace-o:before{content:""}.wf-fa-trademark:before{content:""}.wf-fa-registered:before{content:""}.wf-fa-creative-commons:before{content:""}.wf-fa-gg:before{content:""}.wf-fa-gg-circle:before{content:""}.wf-fa-tripadvisor:before{content:""}.wf-fa-odnoklassniki:before{content:""}.wf-fa-odnoklassniki-square:before{content:""}.wf-fa-get-pocket:before{content:""}.wf-fa-wikipedia-w:before{content:""}.wf-fa-safari:before{content:""}.wf-fa-chrome:before{content:""}.wf-fa-firefox:before{content:""}.wf-fa-opera:before{content:""}.wf-fa-internet-explorer:before{content:""}.wf-fa-tv:before,.wf-fa-television:before{content:""}.wf-fa-contao:before{content:""}.wf-fa-500px:before{content:""}.wf-fa-amazon:before{content:""}.wf-fa-calendar-plus-o:before{content:""}.wf-fa-calendar-minus-o:before{content:""}.wf-fa-calendar-times-o:before{content:""}.wf-fa-calendar-check-o:before{content:""}.wf-fa-industry:before{content:""}.wf-fa-map-pin:before{content:""}.wf-fa-map-signs:before{content:""}.wf-fa-map-o:before{content:""}.wf-fa-map:before{content:""}.wf-fa-commenting:before{content:""}.wf-fa-commenting-o:before{content:""}.wf-fa-houzz:before{content:""}.wf-fa-vimeo:before{content:""}.wf-fa-black-tie:before{content:""}.wf-fa-fonticons:before{content:""}.wf-fa-reddit-alien:before{content:""}.wf-fa-edge:before{content:""}.wf-fa-credit-card-alt:before{content:""}.wf-fa-codiepie:before{content:""}.wf-fa-modx:before{content:""}.wf-fa-fort-awesome:before{content:""}.wf-fa-usb:before{content:""}.wf-fa-product-hunt:before{content:""}.wf-fa-mixcloud:before{content:""}.wf-fa-scribd:before{content:""}.wf-fa-pause-circle:before{content:""}.wf-fa-pause-circle-o:before{content:""}.wf-fa-stop-circle:before{content:""}.wf-fa-stop-circle-o:before{content:""}.wf-fa-shopping-bag:before{content:""}.wf-fa-shopping-basket:before{content:""}.wf-fa-hashtag:before{content:""}.wf-fa-bluetooth:before{content:""}.wf-fa-bluetooth-b:before{content:""}.wf-fa-percent:before{content:""}.wf-fa-gitlab:before{content:""}.wf-fa-wpbeginner:before{content:""}.wf-fa-wpforms:before{content:""}.wf-fa-envira:before{content:""}.wf-fa-universal-access:before{content:""}.wf-fa-wheelchair-alt:before{content:""}.wf-fa-question-circle-o:before{content:""}.wf-fa-blind:before{content:""}.wf-fa-audio-description:before{content:""}.wf-fa-volume-control-phone:before{content:""}.wf-fa-braille:before{content:""}.wf-fa-assistive-listening-systems:before{content:""}.wf-fa-asl-interpreting:before,.wf-fa-american-sign-language-interpreting:before{content:""}.wf-fa-deafness:before,.wf-fa-hard-of-hearing:before,.wf-fa-deaf:before{content:""}.wf-fa-glide:before{content:""}.wf-fa-glide-g:before{content:""}.wf-fa-signing:before,.wf-fa-sign-language:before{content:""}.wf-fa-low-vision:before{content:""}.wf-fa-viadeo:before{content:""}.wf-fa-viadeo-square:before{content:""}.wf-fa-snapchat:before{content:""}.wf-fa-snapchat-ghost:before{content:""}.wf-fa-snapchat-square:before{content:""}.wf-fa-pied-piper:before{content:""}.wf-fa-first-order:before{content:""}.wf-fa-yoast:before{content:""}.wf-fa-themeisle:before{content:""}.wf-fa-google-plus-circle:before,.wf-fa-google-plus-official:before{content:""}.wf-fa-fa:before,.wf-fa-font-awesome:before{content:""}.wf-fa-handshake-o:before{content:""}.wf-fa-envelope-open:before{content:""}.wf-fa-envelope-open-o:before{content:""}.wf-fa-linode:before{content:""}.wf-fa-address-book:before{content:""}.wf-fa-address-book-o:before{content:""}.wf-fa-vcard:before,.wf-fa-address-card:before{content:""}.wf-fa-vcard-o:before,.wf-fa-address-card-o:before{content:""}.wf-fa-user-circle:before{content:""}.wf-fa-user-circle-o:before{content:""}.wf-fa-user-o:before{content:""}.wf-fa-id-badge:before{content:""}.wf-fa-drivers-license:before,.wf-fa-id-card:before{content:""}.wf-fa-drivers-license-o:before,.wf-fa-id-card-o:before{content:""}.wf-fa-quora:before{content:""}.wf-fa-free-code-camp:before{content:""}.wf-fa-telegram:before{content:""}.wf-fa-thermometer-4:before,.wf-fa-thermometer:before,.wf-fa-thermometer-full:before{content:""}.wf-fa-thermometer-3:before,.wf-fa-thermometer-three-quarters:before{content:""}.wf-fa-thermometer-2:before,.wf-fa-thermometer-half:before{content:""}.wf-fa-thermometer-1:before,.wf-fa-thermometer-quarter:before{content:""}.wf-fa-thermometer-0:before,.wf-fa-thermometer-empty:before{content:""}.wf-fa-shower:before{content:""}.wf-fa-bathtub:before,.wf-fa-s15:before,.wf-fa-bath:before{content:""}.wf-fa-podcast:before{content:""}.wf-fa-window-maximize:before{content:""}.wf-fa-window-minimize:before{content:""}.wf-fa-window-restore:before{content:""}.wf-fa-times-rectangle:before,.wf-fa-window-close:before{content:""}.wf-fa-times-rectangle-o:before,.wf-fa-window-close-o:before{content:""}.wf-fa-bandcamp:before{content:""}.wf-fa-grav:before{content:""}.wf-fa-etsy:before{content:""}.wf-fa-imdb:before{content:""}.wf-fa-ravelry:before{content:""}.wf-fa-eercast:before{content:""}.wf-fa-microchip:before{content:""}.wf-fa-snowflake-o:before{content:""}.wf-fa-superpowers:before{content:""}.wf-fa-wpexplorer:before{content:""}.wf-fa-meetup:before{content:""}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}
css/wf-ionicons.1722265817.css000064400000150431150755146460011411 0ustar00@font-face{font-family:"Ionicons";src:url("../fonts/ionicons.woff?v=2.0.0") format("woff");font-weight:normal;font-style:normal}.wf-ion,.wf-ionicons,.wf-ion-alert:before,.wf-ion-alert-circled:before,.wf-ion-android-add:before,.wf-ion-android-add-circle:before,.wf-ion-android-alarm-clock:before,.wf-ion-android-alert:before,.wf-ion-android-apps:before,.wf-ion-android-archive:before,.wf-ion-android-arrow-back:before,.wf-ion-android-arrow-down:before,.wf-ion-android-arrow-dropdown:before,.wf-ion-android-arrow-dropdown-circle:before,.wf-ion-android-arrow-dropleft:before,.wf-ion-android-arrow-dropleft-circle:before,.wf-ion-android-arrow-dropright:before,.wf-ion-android-arrow-dropright-circle:before,.wf-ion-android-arrow-dropup:before,.wf-ion-android-arrow-dropup-circle:before,.wf-ion-android-arrow-forward:before,.wf-ion-android-arrow-up:before,.wf-ion-android-attach:before,.wf-ion-android-bar:before,.wf-ion-android-bicycle:before,.wf-ion-android-boat:before,.wf-ion-android-bookmark:before,.wf-ion-android-bulb:before,.wf-ion-android-bus:before,.wf-ion-android-calendar:before,.wf-ion-android-call:before,.wf-ion-android-camera:before,.wf-ion-android-cancel:before,.wf-ion-android-car:before,.wf-ion-android-cart:before,.wf-ion-android-chat:before,.wf-ion-android-checkbox:before,.wf-ion-android-checkbox-blank:before,.wf-ion-android-checkbox-outline:before,.wf-ion-android-checkbox-outline-blank:before,.wf-ion-android-checkmark-circle:before,.wf-ion-android-clipboard:before,.wf-ion-android-close:before,.wf-ion-android-cloud:before,.wf-ion-android-cloud-circle:before,.wf-ion-android-cloud-done:before,.wf-ion-android-cloud-outline:before,.wf-ion-android-color-palette:before,.wf-ion-android-compass:before,.wf-ion-android-contact:before,.wf-ion-android-contacts:before,.wf-ion-android-contract:before,.wf-ion-android-create:before,.wf-ion-android-delete:before,.wf-ion-android-desktop:before,.wf-ion-android-document:before,.wf-ion-android-done:before,.wf-ion-android-done-all:before,.wf-ion-android-download:before,.wf-ion-android-drafts:before,.wf-ion-android-exit:before,.wf-ion-android-expand:before,.wf-ion-android-favorite:before,.wf-ion-android-favorite-outline:before,.wf-ion-android-film:before,.wf-ion-android-folder:before,.wf-ion-android-folder-open:before,.wf-ion-android-funnel:before,.wf-ion-android-globe:before,.wf-ion-android-hand:before,.wf-ion-android-hangout:before,.wf-ion-android-happy:before,.wf-ion-android-home:before,.wf-ion-android-image:before,.wf-ion-android-laptop:before,.wf-ion-android-list:before,.wf-ion-android-locate:before,.wf-ion-android-lock:before,.wf-ion-android-mail:before,.wf-ion-android-map:before,.wf-ion-android-menu:before,.wf-ion-android-microphone:before,.wf-ion-android-microphone-off:before,.wf-ion-android-more-horizontal:before,.wf-ion-android-more-vertical:before,.wf-ion-android-navigate:before,.wf-ion-android-notifications:before,.wf-ion-android-notifications-none:before,.wf-ion-android-notifications-off:before,.wf-ion-android-open:before,.wf-ion-android-options:before,.wf-ion-android-people:before,.wf-ion-android-person:before,.wf-ion-android-person-add:before,.wf-ion-android-phone-landscape:before,.wf-ion-android-phone-portrait:before,.wf-ion-android-pin:before,.wf-ion-android-plane:before,.wf-ion-android-playstore:before,.wf-ion-android-print:before,.wf-ion-android-radio-button-off:before,.wf-ion-android-radio-button-on:before,.wf-ion-android-refresh:before,.wf-ion-android-remove:before,.wf-ion-android-remove-circle:before,.wf-ion-android-restaurant:before,.wf-ion-android-sad:before,.wf-ion-android-search:before,.wf-ion-android-send:before,.wf-ion-android-settings:before,.wf-ion-android-share:before,.wf-ion-android-share-alt:before,.wf-ion-android-star:before,.wf-ion-android-star-half:before,.wf-ion-android-star-outline:before,.wf-ion-android-stopwatch:before,.wf-ion-android-subway:before,.wf-ion-android-sunny:before,.wf-ion-android-sync:before,.wf-ion-android-textsms:before,.wf-ion-android-time:before,.wf-ion-android-train:before,.wf-ion-android-unlock:before,.wf-ion-android-upload:before,.wf-ion-android-volume-down:before,.wf-ion-android-volume-mute:before,.wf-ion-android-volume-off:before,.wf-ion-android-volume-up:before,.wf-ion-android-walk:before,.wf-ion-android-warning:before,.wf-ion-android-watch:before,.wf-ion-android-wifi:before,.wf-ion-aperture:before,.wf-ion-archive:before,.wf-ion-arrow-down-a:before,.wf-ion-arrow-down-b:before,.wf-ion-arrow-down-c:before,.wf-ion-arrow-expand:before,.wf-ion-arrow-graph-down-left:before,.wf-ion-arrow-graph-down-right:before,.wf-ion-arrow-graph-up-left:before,.wf-ion-arrow-graph-up-right:before,.wf-ion-arrow-left-a:before,.wf-ion-arrow-left-b:before,.wf-ion-arrow-left-c:before,.wf-ion-arrow-move:before,.wf-ion-arrow-resize:before,.wf-ion-arrow-return-left:before,.wf-ion-arrow-return-right:before,.wf-ion-arrow-right-a:before,.wf-ion-arrow-right-b:before,.wf-ion-arrow-right-c:before,.wf-ion-arrow-shrink:before,.wf-ion-arrow-swap:before,.wf-ion-arrow-up-a:before,.wf-ion-arrow-up-b:before,.wf-ion-arrow-up-c:before,.wf-ion-asterisk:before,.wf-ion-at:before,.wf-ion-backspace:before,.wf-ion-backspace-outline:before,.wf-ion-bag:before,.wf-ion-battery-charging:before,.wf-ion-battery-empty:before,.wf-ion-battery-full:before,.wf-ion-battery-half:before,.wf-ion-battery-low:before,.wf-ion-beaker:before,.wf-ion-beer:before,.wf-ion-bluetooth:before,.wf-ion-bonfire:before,.wf-ion-bookmark:before,.wf-ion-bowtie:before,.wf-ion-briefcase:before,.wf-ion-bug:before,.wf-ion-calculator:before,.wf-ion-calendar:before,.wf-ion-camera:before,.wf-ion-card:before,.wf-ion-cash:before,.wf-ion-chatbox:before,.wf-ion-chatbox-working:before,.wf-ion-chatboxes:before,.wf-ion-chatbubble:before,.wf-ion-chatbubble-working:before,.wf-ion-chatbubbles:before,.wf-ion-checkmark:before,.wf-ion-checkmark-circled:before,.wf-ion-checkmark-round:before,.wf-ion-chevron-down:before,.wf-ion-chevron-left:before,.wf-ion-chevron-right:before,.wf-ion-chevron-up:before,.wf-ion-clipboard:before,.wf-ion-clock:before,.wf-ion-close:before,.wf-ion-close-circled:before,.wf-ion-close-round:before,.wf-ion-closed-captioning:before,.wf-ion-cloud:before,.wf-ion-code:before,.wf-ion-code-download:before,.wf-ion-code-working:before,.wf-ion-coffee:before,.wf-ion-compass:before,.wf-ion-compose:before,.wf-ion-connection-bars:before,.wf-ion-contrast:before,.wf-ion-crop:before,.wf-ion-cube:before,.wf-ion-disc:before,.wf-ion-document:before,.wf-ion-document-text:before,.wf-ion-drag:before,.wf-ion-earth:before,.wf-ion-easel:before,.wf-ion-edit:before,.wf-ion-egg:before,.wf-ion-eject:before,.wf-ion-email:before,.wf-ion-email-unread:before,.wf-ion-erlenmeyer-flask:before,.wf-ion-erlenmeyer-flask-bubbles:before,.wf-ion-eye:before,.wf-ion-eye-disabled:before,.wf-ion-female:before,.wf-ion-filing:before,.wf-ion-film-marker:before,.wf-ion-fireball:before,.wf-ion-flag:before,.wf-ion-flame:before,.wf-ion-flash:before,.wf-ion-flash-off:before,.wf-ion-folder:before,.wf-ion-fork:before,.wf-ion-fork-repo:before,.wf-ion-forward:before,.wf-ion-funnel:before,.wf-ion-gear-a:before,.wf-ion-gear-b:before,.wf-ion-grid:before,.wf-ion-hammer:before,.wf-ion-happy:before,.wf-ion-happy-outline:before,.wf-ion-headphone:before,.wf-ion-heart:before,.wf-ion-heart-broken:before,.wf-ion-help:before,.wf-ion-help-buoy:before,.wf-ion-help-circled:before,.wf-ion-home:before,.wf-ion-icecream:before,.wf-ion-image:before,.wf-ion-images:before,.wf-ion-information:before,.wf-ion-information-circled:before,.wf-ion-ionic:before,.wf-ion-ios-alarm:before,.wf-ion-ios-alarm-outline:before,.wf-ion-ios-albums:before,.wf-ion-ios-albums-outline:before,.wf-ion-ios-americanfootball:before,.wf-ion-ios-americanfootball-outline:before,.wf-ion-ios-analytics:before,.wf-ion-ios-analytics-outline:before,.wf-ion-ios-arrow-back:before,.wf-ion-ios-arrow-down:before,.wf-ion-ios-arrow-forward:before,.wf-ion-ios-arrow-left:before,.wf-ion-ios-arrow-right:before,.wf-ion-ios-arrow-thin-down:before,.wf-ion-ios-arrow-thin-left:before,.wf-ion-ios-arrow-thin-right:before,.wf-ion-ios-arrow-thin-up:before,.wf-ion-ios-arrow-up:before,.wf-ion-ios-at:before,.wf-ion-ios-at-outline:before,.wf-ion-ios-barcode:before,.wf-ion-ios-barcode-outline:before,.wf-ion-ios-baseball:before,.wf-ion-ios-baseball-outline:before,.wf-ion-ios-basketball:before,.wf-ion-ios-basketball-outline:before,.wf-ion-ios-bell:before,.wf-ion-ios-bell-outline:before,.wf-ion-ios-body:before,.wf-ion-ios-body-outline:before,.wf-ion-ios-bolt:before,.wf-ion-ios-bolt-outline:before,.wf-ion-ios-book:before,.wf-ion-ios-book-outline:before,.wf-ion-ios-bookmarks:before,.wf-ion-ios-bookmarks-outline:before,.wf-ion-ios-box:before,.wf-ion-ios-box-outline:before,.wf-ion-ios-briefcase:before,.wf-ion-ios-briefcase-outline:before,.wf-ion-ios-browsers:before,.wf-ion-ios-browsers-outline:before,.wf-ion-ios-calculator:before,.wf-ion-ios-calculator-outline:before,.wf-ion-ios-calendar:before,.wf-ion-ios-calendar-outline:before,.wf-ion-ios-camera:before,.wf-ion-ios-camera-outline:before,.wf-ion-ios-cart:before,.wf-ion-ios-cart-outline:before,.wf-ion-ios-chatboxes:before,.wf-ion-ios-chatboxes-outline:before,.wf-ion-ios-chatbubble:before,.wf-ion-ios-chatbubble-outline:before,.wf-ion-ios-checkmark:before,.wf-ion-ios-checkmark-empty:before,.wf-ion-ios-checkmark-outline:before,.wf-ion-ios-circle-filled:before,.wf-ion-ios-circle-outline:before,.wf-ion-ios-clock:before,.wf-ion-ios-clock-outline:before,.wf-ion-ios-close:before,.wf-ion-ios-close-empty:before,.wf-ion-ios-close-outline:before,.wf-ion-ios-cloud:before,.wf-ion-ios-cloud-download:before,.wf-ion-ios-cloud-download-outline:before,.wf-ion-ios-cloud-outline:before,.wf-ion-ios-cloud-upload:before,.wf-ion-ios-cloud-upload-outline:before,.wf-ion-ios-cloudy:before,.wf-ion-ios-cloudy-night:before,.wf-ion-ios-cloudy-night-outline:before,.wf-ion-ios-cloudy-outline:before,.wf-ion-ios-cog:before,.wf-ion-ios-cog-outline:before,.wf-ion-ios-color-filter:before,.wf-ion-ios-color-filter-outline:before,.wf-ion-ios-color-wand:before,.wf-ion-ios-color-wand-outline:before,.wf-ion-ios-compose:before,.wf-ion-ios-compose-outline:before,.wf-ion-ios-contact:before,.wf-ion-ios-contact-outline:before,.wf-ion-ios-copy:before,.wf-ion-ios-copy-outline:before,.wf-ion-ios-crop:before,.wf-ion-ios-crop-strong:before,.wf-ion-ios-download:before,.wf-ion-ios-download-outline:before,.wf-ion-ios-drag:before,.wf-ion-ios-email:before,.wf-ion-ios-email-outline:before,.wf-ion-ios-eye:before,.wf-ion-ios-eye-outline:before,.wf-ion-ios-fastforward:before,.wf-ion-ios-fastforward-outline:before,.wf-ion-ios-filing:before,.wf-ion-ios-filing-outline:before,.wf-ion-ios-film:before,.wf-ion-ios-film-outline:before,.wf-ion-ios-flag:before,.wf-ion-ios-flag-outline:before,.wf-ion-ios-flame:before,.wf-ion-ios-flame-outline:before,.wf-ion-ios-flask:before,.wf-ion-ios-flask-outline:before,.wf-ion-ios-flower:before,.wf-ion-ios-flower-outline:before,.wf-ion-ios-folder:before,.wf-ion-ios-folder-outline:before,.wf-ion-ios-football:before,.wf-ion-ios-football-outline:before,.wf-ion-ios-game-controller-a:before,.wf-ion-ios-game-controller-a-outline:before,.wf-ion-ios-game-controller-b:before,.wf-ion-ios-game-controller-b-outline:before,.wf-ion-ios-gear:before,.wf-ion-ios-gear-outline:before,.wf-ion-ios-glasses:before,.wf-ion-ios-glasses-outline:before,.wf-ion-ios-grid-view:before,.wf-ion-ios-grid-view-outline:before,.wf-ion-ios-heart:before,.wf-ion-ios-heart-outline:before,.wf-ion-ios-help:before,.wf-ion-ios-help-empty:before,.wf-ion-ios-help-outline:before,.wf-ion-ios-home:before,.wf-ion-ios-home-outline:before,.wf-ion-ios-infinite:before,.wf-ion-ios-infinite-outline:before,.wf-ion-ios-information:before,.wf-ion-ios-information-empty:before,.wf-ion-ios-information-outline:before,.wf-ion-ios-ionic-outline:before,.wf-ion-ios-keypad:before,.wf-ion-ios-keypad-outline:before,.wf-ion-ios-lightbulb:before,.wf-ion-ios-lightbulb-outline:before,.wf-ion-ios-list:before,.wf-ion-ios-list-outline:before,.wf-ion-ios-location:before,.wf-ion-ios-location-outline:before,.wf-ion-ios-locked:before,.wf-ion-ios-locked-outline:before,.wf-ion-ios-loop:before,.wf-ion-ios-loop-strong:before,.wf-ion-ios-medical:before,.wf-ion-ios-medical-outline:before,.wf-ion-ios-medkit:before,.wf-ion-ios-medkit-outline:before,.wf-ion-ios-mic:before,.wf-ion-ios-mic-off:before,.wf-ion-ios-mic-outline:before,.wf-ion-ios-minus:before,.wf-ion-ios-minus-empty:before,.wf-ion-ios-minus-outline:before,.wf-ion-ios-monitor:before,.wf-ion-ios-monitor-outline:before,.wf-ion-ios-moon:before,.wf-ion-ios-moon-outline:before,.wf-ion-ios-more:before,.wf-ion-ios-more-outline:before,.wf-ion-ios-musical-note:before,.wf-ion-ios-musical-notes:before,.wf-ion-ios-navigate:before,.wf-ion-ios-navigate-outline:before,.wf-ion-ios-nutrition:before,.wf-ion-ios-nutrition-outline:before,.wf-ion-ios-paper:before,.wf-ion-ios-paper-outline:before,.wf-ion-ios-paperplane:before,.wf-ion-ios-paperplane-outline:before,.wf-ion-ios-partlysunny:before,.wf-ion-ios-partlysunny-outline:before,.wf-ion-ios-pause:before,.wf-ion-ios-pause-outline:before,.wf-ion-ios-paw:before,.wf-ion-ios-paw-outline:before,.wf-ion-ios-people:before,.wf-ion-ios-people-outline:before,.wf-ion-ios-person:before,.wf-ion-ios-person-outline:before,.wf-ion-ios-personadd:before,.wf-ion-ios-personadd-outline:before,.wf-ion-ios-photos:before,.wf-ion-ios-photos-outline:before,.wf-ion-ios-pie:before,.wf-ion-ios-pie-outline:before,.wf-ion-ios-pint:before,.wf-ion-ios-pint-outline:before,.wf-ion-ios-play:before,.wf-ion-ios-play-outline:before,.wf-ion-ios-plus:before,.wf-ion-ios-plus-empty:before,.wf-ion-ios-plus-outline:before,.wf-ion-ios-pricetag:before,.wf-ion-ios-pricetag-outline:before,.wf-ion-ios-pricetags:before,.wf-ion-ios-pricetags-outline:before,.wf-ion-ios-printer:before,.wf-ion-ios-printer-outline:before,.wf-ion-ios-pulse:before,.wf-ion-ios-pulse-strong:before,.wf-ion-ios-rainy:before,.wf-ion-ios-rainy-outline:before,.wf-ion-ios-recording:before,.wf-ion-ios-recording-outline:before,.wf-ion-ios-redo:before,.wf-ion-ios-redo-outline:before,.wf-ion-ios-refresh:before,.wf-ion-ios-refresh-empty:before,.wf-ion-ios-refresh-outline:before,.wf-ion-ios-reload:before,.wf-ion-ios-reverse-camera:before,.wf-ion-ios-reverse-camera-outline:before,.wf-ion-ios-rewind:before,.wf-ion-ios-rewind-outline:before,.wf-ion-ios-rose:before,.wf-ion-ios-rose-outline:before,.wf-ion-ios-search:before,.wf-ion-ios-search-strong:before,.wf-ion-ios-settings:before,.wf-ion-ios-settings-strong:before,.wf-ion-ios-shuffle:before,.wf-ion-ios-shuffle-strong:before,.wf-ion-ios-skipbackward:before,.wf-ion-ios-skipbackward-outline:before,.wf-ion-ios-skipforward:before,.wf-ion-ios-skipforward-outline:before,.wf-ion-ios-snowy:before,.wf-ion-ios-speedometer:before,.wf-ion-ios-speedometer-outline:before,.wf-ion-ios-star:before,.wf-ion-ios-star-half:before,.wf-ion-ios-star-outline:before,.wf-ion-ios-stopwatch:before,.wf-ion-ios-stopwatch-outline:before,.wf-ion-ios-sunny:before,.wf-ion-ios-sunny-outline:before,.wf-ion-ios-telephone:before,.wf-ion-ios-telephone-outline:before,.wf-ion-ios-tennisball:before,.wf-ion-ios-tennisball-outline:before,.wf-ion-ios-thunderstorm:before,.wf-ion-ios-thunderstorm-outline:before,.wf-ion-ios-time:before,.wf-ion-ios-time-outline:before,.wf-ion-ios-timer:before,.wf-ion-ios-timer-outline:before,.wf-ion-ios-toggle:before,.wf-ion-ios-toggle-outline:before,.wf-ion-ios-trash:before,.wf-ion-ios-trash-outline:before,.wf-ion-ios-undo:before,.wf-ion-ios-undo-outline:before,.wf-ion-ios-unlocked:before,.wf-ion-ios-unlocked-outline:before,.wf-ion-ios-upload:before,.wf-ion-ios-upload-outline:before,.wf-ion-ios-videocam:before,.wf-ion-ios-videocam-outline:before,.wf-ion-ios-volume-high:before,.wf-ion-ios-volume-low:before,.wf-ion-ios-wineglass:before,.wf-ion-ios-wineglass-outline:before,.wf-ion-ios-world:before,.wf-ion-ios-world-outline:before,.wf-ion-ipad:before,.wf-ion-iphone:before,.wf-ion-ipod:before,.wf-ion-jet:before,.wf-ion-key:before,.wf-ion-knife:before,.wf-ion-laptop:before,.wf-ion-leaf:before,.wf-ion-levels:before,.wf-ion-lightbulb:before,.wf-ion-link:before,.wf-ion-load-a:before,.wf-ion-load-b:before,.wf-ion-load-c:before,.wf-ion-load-d:before,.wf-ion-location:before,.wf-ion-lock-combination:before,.wf-ion-locked:before,.wf-ion-log-in:before,.wf-ion-log-out:before,.wf-ion-loop:before,.wf-ion-magnet:before,.wf-ion-male:before,.wf-ion-man:before,.wf-ion-map:before,.wf-ion-medkit:before,.wf-ion-merge:before,.wf-ion-mic-a:before,.wf-ion-mic-b:before,.wf-ion-mic-c:before,.wf-ion-minus:before,.wf-ion-minus-circled:before,.wf-ion-minus-round:before,.wf-ion-model-s:before,.wf-ion-monitor:before,.wf-ion-more:before,.wf-ion-mouse:before,.wf-ion-music-note:before,.wf-ion-navicon:before,.wf-ion-navicon-round:before,.wf-ion-navigate:before,.wf-ion-network:before,.wf-ion-no-smoking:before,.wf-ion-nuclear:before,.wf-ion-outlet:before,.wf-ion-paintbrush:before,.wf-ion-paintbucket:before,.wf-ion-paper-airplane:before,.wf-ion-paperclip:before,.wf-ion-pause:before,.wf-ion-person:before,.wf-ion-person-add:before,.wf-ion-person-stalker:before,.wf-ion-pie-graph:before,.wf-ion-pin:before,.wf-ion-pinpoint:before,.wf-ion-pizza:before,.wf-ion-plane:before,.wf-ion-planet:before,.wf-ion-play:before,.wf-ion-playstation:before,.wf-ion-plus:before,.wf-ion-plus-circled:before,.wf-ion-plus-round:before,.wf-ion-podium:before,.wf-ion-pound:before,.wf-ion-power:before,.wf-ion-pricetag:before,.wf-ion-pricetags:before,.wf-ion-printer:before,.wf-ion-pull-request:before,.wf-ion-qr-scanner:before,.wf-ion-quote:before,.wf-ion-radio-waves:before,.wf-ion-record:before,.wf-ion-refresh:before,.wf-ion-reply:before,.wf-ion-reply-all:before,.wf-ion-ribbon-a:before,.wf-ion-ribbon-b:before,.wf-ion-sad:before,.wf-ion-sad-outline:before,.wf-ion-scissors:before,.wf-ion-search:before,.wf-ion-settings:before,.wf-ion-share:before,.wf-ion-shuffle:before,.wf-ion-skip-backward:before,.wf-ion-skip-forward:before,.wf-ion-social-android:before,.wf-ion-social-android-outline:before,.wf-ion-social-angular:before,.wf-ion-social-angular-outline:before,.wf-ion-social-apple:before,.wf-ion-social-apple-outline:before,.wf-ion-social-bitcoin:before,.wf-ion-social-bitcoin-outline:before,.wf-ion-social-buffer:before,.wf-ion-social-buffer-outline:before,.wf-ion-social-chrome:before,.wf-ion-social-chrome-outline:before,.wf-ion-social-codepen:before,.wf-ion-social-codepen-outline:before,.wf-ion-social-css3:before,.wf-ion-social-css3-outline:before,.wf-ion-social-designernews:before,.wf-ion-social-designernews-outline:before,.wf-ion-social-dribbble:before,.wf-ion-social-dribbble-outline:before,.wf-ion-social-dropbox:before,.wf-ion-social-dropbox-outline:before,.wf-ion-social-euro:before,.wf-ion-social-euro-outline:before,.wf-ion-social-facebook:before,.wf-ion-social-facebook-outline:before,.wf-ion-social-foursquare:before,.wf-ion-social-foursquare-outline:before,.wf-ion-social-freebsd-devil:before,.wf-ion-social-github:before,.wf-ion-social-github-outline:before,.wf-ion-social-google:before,.wf-ion-social-google-outline:before,.wf-ion-social-googleplus:before,.wf-ion-social-googleplus-outline:before,.wf-ion-social-hackernews:before,.wf-ion-social-hackernews-outline:before,.wf-ion-social-html5:before,.wf-ion-social-html5-outline:before,.wf-ion-social-instagram:before,.wf-ion-social-instagram-outline:before,.wf-ion-social-javascript:before,.wf-ion-social-javascript-outline:before,.wf-ion-social-linkedin:before,.wf-ion-social-linkedin-outline:before,.wf-ion-social-markdown:before,.wf-ion-social-nodejs:before,.wf-ion-social-octocat:before,.wf-ion-social-pinterest:before,.wf-ion-social-pinterest-outline:before,.wf-ion-social-python:before,.wf-ion-social-reddit:before,.wf-ion-social-reddit-outline:before,.wf-ion-social-rss:before,.wf-ion-social-rss-outline:before,.wf-ion-social-sass:before,.wf-ion-social-skype:before,.wf-ion-social-skype-outline:before,.wf-ion-social-snapchat:before,.wf-ion-social-snapchat-outline:before,.wf-ion-social-tumblr:before,.wf-ion-social-tumblr-outline:before,.wf-ion-social-tux:before,.wf-ion-social-twitch:before,.wf-ion-social-twitch-outline:before,.wf-ion-social-twitter:before,.wf-ion-social-twitter-outline:before,.wf-ion-social-usd:before,.wf-ion-social-usd-outline:before,.wf-ion-social-vimeo:before,.wf-ion-social-vimeo-outline:before,.wf-ion-social-whatsapp:before,.wf-ion-social-whatsapp-outline:before,.wf-ion-social-windows:before,.wf-ion-social-windows-outline:before,.wf-ion-social-wordpress:before,.wf-ion-social-wordpress-outline:before,.wf-ion-social-yahoo:before,.wf-ion-social-yahoo-outline:before,.wf-ion-social-yen:before,.wf-ion-social-yen-outline:before,.wf-ion-social-youtube:before,.wf-ion-social-youtube-outline:before,.wf-ion-soup-can:before,.wf-ion-soup-can-outline:before,.wf-ion-speakerphone:before,.wf-ion-speedometer:before,.wf-ion-spoon:before,.wf-ion-star:before,.wf-ion-stats-bars:before,.wf-ion-steam:before,.wf-ion-stop:before,.wf-ion-thermometer:before,.wf-ion-thumbsdown:before,.wf-ion-thumbsup:before,.wf-ion-toggle:before,.wf-ion-toggle-filled:before,.wf-ion-transgender:before,.wf-ion-trash-a:before,.wf-ion-trash-b:before,.wf-ion-trophy:before,.wf-ion-tshirt:before,.wf-ion-tshirt-outline:before,.wf-ion-umbrella:before,.wf-ion-university:before,.wf-ion-unlocked:before,.wf-ion-upload:before,.wf-ion-usb:before,.wf-ion-videocamera:before,.wf-ion-volume-high:before,.wf-ion-volume-low:before,.wf-ion-volume-medium:before,.wf-ion-volume-mute:before,.wf-ion-wand:before,.wf-ion-waterdrop:before,.wf-ion-wifi:before,.wf-ion-wineglass:before,.wf-ion-woman:before,.wf-ion-wrench:before,.wf-ion-xbox:before{display:inline-block;font-family:"Ionicons" !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;text-rendering:auto;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wf-ion-alert:before{content:""}.wf-ion-alert-circled:before{content:""}.wf-ion-android-add:before{content:""}.wf-ion-android-add-circle:before{content:""}.wf-ion-android-alarm-clock:before{content:""}.wf-ion-android-alert:before{content:""}.wf-ion-android-apps:before{content:""}.wf-ion-android-archive:before{content:""}.wf-ion-android-arrow-back:before{content:""}.wf-ion-android-arrow-down:before{content:""}.wf-ion-android-arrow-dropdown:before{content:""}.wf-ion-android-arrow-dropdown-circle:before{content:""}.wf-ion-android-arrow-dropleft:before{content:""}.wf-ion-android-arrow-dropleft-circle:before{content:""}.wf-ion-android-arrow-dropright:before{content:""}.wf-ion-android-arrow-dropright-circle:before{content:""}.wf-ion-android-arrow-dropup:before{content:""}.wf-ion-android-arrow-dropup-circle:before{content:""}.wf-ion-android-arrow-forward:before{content:""}.wf-ion-android-arrow-up:before{content:""}.wf-ion-android-attach:before{content:""}.wf-ion-android-bar:before{content:""}.wf-ion-android-bicycle:before{content:""}.wf-ion-android-boat:before{content:""}.wf-ion-android-bookmark:before{content:""}.wf-ion-android-bulb:before{content:""}.wf-ion-android-bus:before{content:""}.wf-ion-android-calendar:before{content:""}.wf-ion-android-call:before{content:""}.wf-ion-android-camera:before{content:""}.wf-ion-android-cancel:before{content:""}.wf-ion-android-car:before{content:""}.wf-ion-android-cart:before{content:""}.wf-ion-android-chat:before{content:""}.wf-ion-android-checkbox:before{content:""}.wf-ion-android-checkbox-blank:before{content:""}.wf-ion-android-checkbox-outline:before{content:""}.wf-ion-android-checkbox-outline-blank:before{content:""}.wf-ion-android-checkmark-circle:before{content:""}.wf-ion-android-clipboard:before{content:""}.wf-ion-android-close:before{content:""}.wf-ion-android-cloud:before{content:""}.wf-ion-android-cloud-circle:before{content:""}.wf-ion-android-cloud-done:before{content:""}.wf-ion-android-cloud-outline:before{content:""}.wf-ion-android-color-palette:before{content:""}.wf-ion-android-compass:before{content:""}.wf-ion-android-contact:before{content:""}.wf-ion-android-contacts:before{content:""}.wf-ion-android-contract:before{content:""}.wf-ion-android-create:before{content:""}.wf-ion-android-delete:before{content:""}.wf-ion-android-desktop:before{content:""}.wf-ion-android-document:before{content:""}.wf-ion-android-done:before{content:""}.wf-ion-android-done-all:before{content:""}.wf-ion-android-download:before{content:""}.wf-ion-android-drafts:before{content:""}.wf-ion-android-exit:before{content:""}.wf-ion-android-expand:before{content:""}.wf-ion-android-favorite:before{content:""}.wf-ion-android-favorite-outline:before{content:""}.wf-ion-android-film:before{content:""}.wf-ion-android-folder:before{content:""}.wf-ion-android-folder-open:before{content:""}.wf-ion-android-funnel:before{content:""}.wf-ion-android-globe:before{content:""}.wf-ion-android-hand:before{content:""}.wf-ion-android-hangout:before{content:""}.wf-ion-android-happy:before{content:""}.wf-ion-android-home:before{content:""}.wf-ion-android-image:before{content:""}.wf-ion-android-laptop:before{content:""}.wf-ion-android-list:before{content:""}.wf-ion-android-locate:before{content:""}.wf-ion-android-lock:before{content:""}.wf-ion-android-mail:before{content:""}.wf-ion-android-map:before{content:""}.wf-ion-android-menu:before{content:""}.wf-ion-android-microphone:before{content:""}.wf-ion-android-microphone-off:before{content:""}.wf-ion-android-more-horizontal:before{content:""}.wf-ion-android-more-vertical:before{content:""}.wf-ion-android-navigate:before{content:""}.wf-ion-android-notifications:before{content:""}.wf-ion-android-notifications-none:before{content:""}.wf-ion-android-notifications-off:before{content:""}.wf-ion-android-open:before{content:""}.wf-ion-android-options:before{content:""}.wf-ion-android-people:before{content:""}.wf-ion-android-person:before{content:""}.wf-ion-android-person-add:before{content:""}.wf-ion-android-phone-landscape:before{content:""}.wf-ion-android-phone-portrait:before{content:""}.wf-ion-android-pin:before{content:""}.wf-ion-android-plane:before{content:""}.wf-ion-android-playstore:before{content:""}.wf-ion-android-print:before{content:""}.wf-ion-android-radio-button-off:before{content:""}.wf-ion-android-radio-button-on:before{content:""}.wf-ion-android-refresh:before{content:""}.wf-ion-android-remove:before{content:""}.wf-ion-android-remove-circle:before{content:""}.wf-ion-android-restaurant:before{content:""}.wf-ion-android-sad:before{content:""}.wf-ion-android-search:before{content:""}.wf-ion-android-send:before{content:""}.wf-ion-android-settings:before{content:""}.wf-ion-android-share:before{content:""}.wf-ion-android-share-alt:before{content:""}.wf-ion-android-star:before{content:""}.wf-ion-android-star-half:before{content:""}.wf-ion-android-star-outline:before{content:""}.wf-ion-android-stopwatch:before{content:""}.wf-ion-android-subway:before{content:""}.wf-ion-android-sunny:before{content:""}.wf-ion-android-sync:before{content:""}.wf-ion-android-textsms:before{content:""}.wf-ion-android-time:before{content:""}.wf-ion-android-train:before{content:""}.wf-ion-android-unlock:before{content:""}.wf-ion-android-upload:before{content:""}.wf-ion-android-volume-down:before{content:""}.wf-ion-android-volume-mute:before{content:""}.wf-ion-android-volume-off:before{content:""}.wf-ion-android-volume-up:before{content:""}.wf-ion-android-walk:before{content:""}.wf-ion-android-warning:before{content:""}.wf-ion-android-watch:before{content:""}.wf-ion-android-wifi:before{content:""}.wf-ion-aperture:before{content:""}.wf-ion-archive:before{content:""}.wf-ion-arrow-down-a:before{content:""}.wf-ion-arrow-down-b:before{content:""}.wf-ion-arrow-down-c:before{content:""}.wf-ion-arrow-expand:before{content:""}.wf-ion-arrow-graph-down-left:before{content:""}.wf-ion-arrow-graph-down-right:before{content:""}.wf-ion-arrow-graph-up-left:before{content:""}.wf-ion-arrow-graph-up-right:before{content:""}.wf-ion-arrow-left-a:before{content:""}.wf-ion-arrow-left-b:before{content:""}.wf-ion-arrow-left-c:before{content:""}.wf-ion-arrow-move:before{content:""}.wf-ion-arrow-resize:before{content:""}.wf-ion-arrow-return-left:before{content:""}.wf-ion-arrow-return-right:before{content:""}.wf-ion-arrow-right-a:before{content:""}.wf-ion-arrow-right-b:before{content:""}.wf-ion-arrow-right-c:before{content:""}.wf-ion-arrow-shrink:before{content:""}.wf-ion-arrow-swap:before{content:""}.wf-ion-arrow-up-a:before{content:""}.wf-ion-arrow-up-b:before{content:""}.wf-ion-arrow-up-c:before{content:""}.wf-ion-asterisk:before{content:""}.wf-ion-at:before{content:""}.wf-ion-backspace:before{content:""}.wf-ion-backspace-outline:before{content:""}.wf-ion-bag:before{content:""}.wf-ion-battery-charging:before{content:""}.wf-ion-battery-empty:before{content:""}.wf-ion-battery-full:before{content:""}.wf-ion-battery-half:before{content:""}.wf-ion-battery-low:before{content:""}.wf-ion-beaker:before{content:""}.wf-ion-beer:before{content:""}.wf-ion-bluetooth:before{content:""}.wf-ion-bonfire:before{content:""}.wf-ion-bookmark:before{content:""}.wf-ion-bowtie:before{content:""}.wf-ion-briefcase:before{content:""}.wf-ion-bug:before{content:""}.wf-ion-calculator:before{content:""}.wf-ion-calendar:before{content:""}.wf-ion-camera:before{content:""}.wf-ion-card:before{content:""}.wf-ion-cash:before{content:""}.wf-ion-chatbox:before{content:""}.wf-ion-chatbox-working:before{content:""}.wf-ion-chatboxes:before{content:""}.wf-ion-chatbubble:before{content:""}.wf-ion-chatbubble-working:before{content:""}.wf-ion-chatbubbles:before{content:""}.wf-ion-checkmark:before{content:""}.wf-ion-checkmark-circled:before{content:""}.wf-ion-checkmark-round:before{content:""}.wf-ion-chevron-down:before{content:""}.wf-ion-chevron-left:before{content:""}.wf-ion-chevron-right:before{content:""}.wf-ion-chevron-up:before{content:""}.wf-ion-clipboard:before{content:""}.wf-ion-clock:before{content:""}.wf-ion-close:before{content:""}.wf-ion-close-circled:before{content:""}.wf-ion-close-round:before{content:""}.wf-ion-closed-captioning:before{content:""}.wf-ion-cloud:before{content:""}.wf-ion-code:before{content:""}.wf-ion-code-download:before{content:""}.wf-ion-code-working:before{content:""}.wf-ion-coffee:before{content:""}.wf-ion-compass:before{content:""}.wf-ion-compose:before{content:""}.wf-ion-connection-bars:before{content:""}.wf-ion-contrast:before{content:""}.wf-ion-crop:before{content:""}.wf-ion-cube:before{content:""}.wf-ion-disc:before{content:""}.wf-ion-document:before{content:""}.wf-ion-document-text:before{content:""}.wf-ion-drag:before{content:""}.wf-ion-earth:before{content:""}.wf-ion-easel:before{content:""}.wf-ion-edit:before{content:""}.wf-ion-egg:before{content:""}.wf-ion-eject:before{content:""}.wf-ion-email:before{content:""}.wf-ion-email-unread:before{content:""}.wf-ion-erlenmeyer-flask:before{content:""}.wf-ion-erlenmeyer-flask-bubbles:before{content:""}.wf-ion-eye:before{content:""}.wf-ion-eye-disabled:before{content:""}.wf-ion-female:before{content:""}.wf-ion-filing:before{content:""}.wf-ion-film-marker:before{content:""}.wf-ion-fireball:before{content:""}.wf-ion-flag:before{content:""}.wf-ion-flame:before{content:""}.wf-ion-flash:before{content:""}.wf-ion-flash-off:before{content:""}.wf-ion-folder:before{content:""}.wf-ion-fork:before{content:""}.wf-ion-fork-repo:before{content:""}.wf-ion-forward:before{content:""}.wf-ion-funnel:before{content:""}.wf-ion-gear-a:before{content:""}.wf-ion-gear-b:before{content:""}.wf-ion-grid:before{content:""}.wf-ion-hammer:before{content:""}.wf-ion-happy:before{content:""}.wf-ion-happy-outline:before{content:""}.wf-ion-headphone:before{content:""}.wf-ion-heart:before{content:""}.wf-ion-heart-broken:before{content:""}.wf-ion-help:before{content:""}.wf-ion-help-buoy:before{content:""}.wf-ion-help-circled:before{content:""}.wf-ion-home:before{content:""}.wf-ion-icecream:before{content:""}.wf-ion-image:before{content:""}.wf-ion-images:before{content:""}.wf-ion-information:before{content:""}.wf-ion-information-circled:before{content:""}.wf-ion-ionic:before{content:""}.wf-ion-ios-alarm:before{content:""}.wf-ion-ios-alarm-outline:before{content:""}.wf-ion-ios-albums:before{content:""}.wf-ion-ios-albums-outline:before{content:""}.wf-ion-ios-americanfootball:before{content:""}.wf-ion-ios-americanfootball-outline:before{content:""}.wf-ion-ios-analytics:before{content:""}.wf-ion-ios-analytics-outline:before{content:""}.wf-ion-ios-arrow-back:before{content:""}.wf-ion-ios-arrow-down:before{content:""}.wf-ion-ios-arrow-forward:before{content:""}.wf-ion-ios-arrow-left:before{content:""}.wf-ion-ios-arrow-right:before{content:""}.wf-ion-ios-arrow-thin-down:before{content:""}.wf-ion-ios-arrow-thin-left:before{content:""}.wf-ion-ios-arrow-thin-right:before{content:""}.wf-ion-ios-arrow-thin-up:before{content:""}.wf-ion-ios-arrow-up:before{content:""}.wf-ion-ios-at:before{content:""}.wf-ion-ios-at-outline:before{content:""}.wf-ion-ios-barcode:before{content:""}.wf-ion-ios-barcode-outline:before{content:""}.wf-ion-ios-baseball:before{content:""}.wf-ion-ios-baseball-outline:before{content:""}.wf-ion-ios-basketball:before{content:""}.wf-ion-ios-basketball-outline:before{content:""}.wf-ion-ios-bell:before{content:""}.wf-ion-ios-bell-outline:before{content:""}.wf-ion-ios-body:before{content:""}.wf-ion-ios-body-outline:before{content:""}.wf-ion-ios-bolt:before{content:""}.wf-ion-ios-bolt-outline:before{content:""}.wf-ion-ios-book:before{content:""}.wf-ion-ios-book-outline:before{content:""}.wf-ion-ios-bookmarks:before{content:""}.wf-ion-ios-bookmarks-outline:before{content:""}.wf-ion-ios-box:before{content:""}.wf-ion-ios-box-outline:before{content:""}.wf-ion-ios-briefcase:before{content:""}.wf-ion-ios-briefcase-outline:before{content:""}.wf-ion-ios-browsers:before{content:""}.wf-ion-ios-browsers-outline:before{content:""}.wf-ion-ios-calculator:before{content:""}.wf-ion-ios-calculator-outline:before{content:""}.wf-ion-ios-calendar:before{content:""}.wf-ion-ios-calendar-outline:before{content:""}.wf-ion-ios-camera:before{content:""}.wf-ion-ios-camera-outline:before{content:""}.wf-ion-ios-cart:before{content:""}.wf-ion-ios-cart-outline:before{content:""}.wf-ion-ios-chatboxes:before{content:""}.wf-ion-ios-chatboxes-outline:before{content:""}.wf-ion-ios-chatbubble:before{content:""}.wf-ion-ios-chatbubble-outline:before{content:""}.wf-ion-ios-checkmark:before{content:""}.wf-ion-ios-checkmark-empty:before{content:""}.wf-ion-ios-checkmark-outline:before{content:""}.wf-ion-ios-circle-filled:before{content:""}.wf-ion-ios-circle-outline:before{content:""}.wf-ion-ios-clock:before{content:""}.wf-ion-ios-clock-outline:before{content:""}.wf-ion-ios-close:before{content:""}.wf-ion-ios-close-empty:before{content:""}.wf-ion-ios-close-outline:before{content:""}.wf-ion-ios-cloud:before{content:""}.wf-ion-ios-cloud-download:before{content:""}.wf-ion-ios-cloud-download-outline:before{content:""}.wf-ion-ios-cloud-outline:before{content:""}.wf-ion-ios-cloud-upload:before{content:""}.wf-ion-ios-cloud-upload-outline:before{content:""}.wf-ion-ios-cloudy:before{content:""}.wf-ion-ios-cloudy-night:before{content:""}.wf-ion-ios-cloudy-night-outline:before{content:""}.wf-ion-ios-cloudy-outline:before{content:""}.wf-ion-ios-cog:before{content:""}.wf-ion-ios-cog-outline:before{content:""}.wf-ion-ios-color-filter:before{content:""}.wf-ion-ios-color-filter-outline:before{content:""}.wf-ion-ios-color-wand:before{content:""}.wf-ion-ios-color-wand-outline:before{content:""}.wf-ion-ios-compose:before{content:""}.wf-ion-ios-compose-outline:before{content:""}.wf-ion-ios-contact:before{content:""}.wf-ion-ios-contact-outline:before{content:""}.wf-ion-ios-copy:before{content:""}.wf-ion-ios-copy-outline:before{content:""}.wf-ion-ios-crop:before{content:""}.wf-ion-ios-crop-strong:before{content:""}.wf-ion-ios-download:before{content:""}.wf-ion-ios-download-outline:before{content:""}.wf-ion-ios-drag:before{content:""}.wf-ion-ios-email:before{content:""}.wf-ion-ios-email-outline:before{content:""}.wf-ion-ios-eye:before{content:""}.wf-ion-ios-eye-outline:before{content:""}.wf-ion-ios-fastforward:before{content:""}.wf-ion-ios-fastforward-outline:before{content:""}.wf-ion-ios-filing:before{content:""}.wf-ion-ios-filing-outline:before{content:""}.wf-ion-ios-film:before{content:""}.wf-ion-ios-film-outline:before{content:""}.wf-ion-ios-flag:before{content:""}.wf-ion-ios-flag-outline:before{content:""}.wf-ion-ios-flame:before{content:""}.wf-ion-ios-flame-outline:before{content:""}.wf-ion-ios-flask:before{content:""}.wf-ion-ios-flask-outline:before{content:""}.wf-ion-ios-flower:before{content:""}.wf-ion-ios-flower-outline:before{content:""}.wf-ion-ios-folder:before{content:""}.wf-ion-ios-folder-outline:before{content:""}.wf-ion-ios-football:before{content:""}.wf-ion-ios-football-outline:before{content:""}.wf-ion-ios-game-controller-a:before{content:""}.wf-ion-ios-game-controller-a-outline:before{content:""}.wf-ion-ios-game-controller-b:before{content:""}.wf-ion-ios-game-controller-b-outline:before{content:""}.wf-ion-ios-gear:before{content:""}.wf-ion-ios-gear-outline:before{content:""}.wf-ion-ios-glasses:before{content:""}.wf-ion-ios-glasses-outline:before{content:""}.wf-ion-ios-grid-view:before{content:""}.wf-ion-ios-grid-view-outline:before{content:""}.wf-ion-ios-heart:before{content:""}.wf-ion-ios-heart-outline:before{content:""}.wf-ion-ios-help:before{content:""}.wf-ion-ios-help-empty:before{content:""}.wf-ion-ios-help-outline:before{content:""}.wf-ion-ios-home:before{content:""}.wf-ion-ios-home-outline:before{content:""}.wf-ion-ios-infinite:before{content:""}.wf-ion-ios-infinite-outline:before{content:""}.wf-ion-ios-information:before{content:""}.wf-ion-ios-information-empty:before{content:""}.wf-ion-ios-information-outline:before{content:""}.wf-ion-ios-ionic-outline:before{content:""}.wf-ion-ios-keypad:before{content:""}.wf-ion-ios-keypad-outline:before{content:""}.wf-ion-ios-lightbulb:before{content:""}.wf-ion-ios-lightbulb-outline:before{content:""}.wf-ion-ios-list:before{content:""}.wf-ion-ios-list-outline:before{content:""}.wf-ion-ios-location:before{content:""}.wf-ion-ios-location-outline:before{content:""}.wf-ion-ios-locked:before{content:""}.wf-ion-ios-locked-outline:before{content:""}.wf-ion-ios-loop:before{content:""}.wf-ion-ios-loop-strong:before{content:""}.wf-ion-ios-medical:before{content:""}.wf-ion-ios-medical-outline:before{content:""}.wf-ion-ios-medkit:before{content:""}.wf-ion-ios-medkit-outline:before{content:""}.wf-ion-ios-mic:before{content:""}.wf-ion-ios-mic-off:before{content:""}.wf-ion-ios-mic-outline:before{content:""}.wf-ion-ios-minus:before{content:""}.wf-ion-ios-minus-empty:before{content:""}.wf-ion-ios-minus-outline:before{content:""}.wf-ion-ios-monitor:before{content:""}.wf-ion-ios-monitor-outline:before{content:""}.wf-ion-ios-moon:before{content:""}.wf-ion-ios-moon-outline:before{content:""}.wf-ion-ios-more:before{content:""}.wf-ion-ios-more-outline:before{content:""}.wf-ion-ios-musical-note:before{content:""}.wf-ion-ios-musical-notes:before{content:""}.wf-ion-ios-navigate:before{content:""}.wf-ion-ios-navigate-outline:before{content:""}.wf-ion-ios-nutrition:before{content:""}.wf-ion-ios-nutrition-outline:before{content:""}.wf-ion-ios-paper:before{content:""}.wf-ion-ios-paper-outline:before{content:""}.wf-ion-ios-paperplane:before{content:""}.wf-ion-ios-paperplane-outline:before{content:""}.wf-ion-ios-partlysunny:before{content:""}.wf-ion-ios-partlysunny-outline:before{content:""}.wf-ion-ios-pause:before{content:""}.wf-ion-ios-pause-outline:before{content:""}.wf-ion-ios-paw:before{content:""}.wf-ion-ios-paw-outline:before{content:""}.wf-ion-ios-people:before{content:""}.wf-ion-ios-people-outline:before{content:""}.wf-ion-ios-person:before{content:""}.wf-ion-ios-person-outline:before{content:""}.wf-ion-ios-personadd:before{content:""}.wf-ion-ios-personadd-outline:before{content:""}.wf-ion-ios-photos:before{content:""}.wf-ion-ios-photos-outline:before{content:""}.wf-ion-ios-pie:before{content:""}.wf-ion-ios-pie-outline:before{content:""}.wf-ion-ios-pint:before{content:""}.wf-ion-ios-pint-outline:before{content:""}.wf-ion-ios-play:before{content:""}.wf-ion-ios-play-outline:before{content:""}.wf-ion-ios-plus:before{content:""}.wf-ion-ios-plus-empty:before{content:""}.wf-ion-ios-plus-outline:before{content:""}.wf-ion-ios-pricetag:before{content:""}.wf-ion-ios-pricetag-outline:before{content:""}.wf-ion-ios-pricetags:before{content:""}.wf-ion-ios-pricetags-outline:before{content:""}.wf-ion-ios-printer:before{content:""}.wf-ion-ios-printer-outline:before{content:""}.wf-ion-ios-pulse:before{content:""}.wf-ion-ios-pulse-strong:before{content:""}.wf-ion-ios-rainy:before{content:""}.wf-ion-ios-rainy-outline:before{content:""}.wf-ion-ios-recording:before{content:""}.wf-ion-ios-recording-outline:before{content:""}.wf-ion-ios-redo:before{content:""}.wf-ion-ios-redo-outline:before{content:""}.wf-ion-ios-refresh:before{content:""}.wf-ion-ios-refresh-empty:before{content:""}.wf-ion-ios-refresh-outline:before{content:""}.wf-ion-ios-reload:before{content:""}.wf-ion-ios-reverse-camera:before{content:""}.wf-ion-ios-reverse-camera-outline:before{content:""}.wf-ion-ios-rewind:before{content:""}.wf-ion-ios-rewind-outline:before{content:""}.wf-ion-ios-rose:before{content:""}.wf-ion-ios-rose-outline:before{content:""}.wf-ion-ios-search:before{content:""}.wf-ion-ios-search-strong:before{content:""}.wf-ion-ios-settings:before{content:""}.wf-ion-ios-settings-strong:before{content:""}.wf-ion-ios-shuffle:before{content:""}.wf-ion-ios-shuffle-strong:before{content:""}.wf-ion-ios-skipbackward:before{content:""}.wf-ion-ios-skipbackward-outline:before{content:""}.wf-ion-ios-skipforward:before{content:""}.wf-ion-ios-skipforward-outline:before{content:""}.wf-ion-ios-snowy:before{content:""}.wf-ion-ios-speedometer:before{content:""}.wf-ion-ios-speedometer-outline:before{content:""}.wf-ion-ios-star:before{content:""}.wf-ion-ios-star-half:before{content:""}.wf-ion-ios-star-outline:before{content:""}.wf-ion-ios-stopwatch:before{content:""}.wf-ion-ios-stopwatch-outline:before{content:""}.wf-ion-ios-sunny:before{content:""}.wf-ion-ios-sunny-outline:before{content:""}.wf-ion-ios-telephone:before{content:""}.wf-ion-ios-telephone-outline:before{content:""}.wf-ion-ios-tennisball:before{content:""}.wf-ion-ios-tennisball-outline:before{content:""}.wf-ion-ios-thunderstorm:before{content:""}.wf-ion-ios-thunderstorm-outline:before{content:""}.wf-ion-ios-time:before{content:""}.wf-ion-ios-time-outline:before{content:""}.wf-ion-ios-timer:before{content:""}.wf-ion-ios-timer-outline:before{content:""}.wf-ion-ios-toggle:before{content:""}.wf-ion-ios-toggle-outline:before{content:""}.wf-ion-ios-trash:before{content:""}.wf-ion-ios-trash-outline:before{content:""}.wf-ion-ios-undo:before{content:""}.wf-ion-ios-undo-outline:before{content:""}.wf-ion-ios-unlocked:before{content:""}.wf-ion-ios-unlocked-outline:before{content:""}.wf-ion-ios-upload:before{content:""}.wf-ion-ios-upload-outline:before{content:""}.wf-ion-ios-videocam:before{content:""}.wf-ion-ios-videocam-outline:before{content:""}.wf-ion-ios-volume-high:before{content:""}.wf-ion-ios-volume-low:before{content:""}.wf-ion-ios-wineglass:before{content:""}.wf-ion-ios-wineglass-outline:before{content:""}.wf-ion-ios-world:before{content:""}.wf-ion-ios-world-outline:before{content:""}.wf-ion-ipad:before{content:""}.wf-ion-iphone:before{content:""}.wf-ion-ipod:before{content:""}.wf-ion-jet:before{content:""}.wf-ion-key:before{content:""}.wf-ion-knife:before{content:""}.wf-ion-laptop:before{content:""}.wf-ion-leaf:before{content:""}.wf-ion-levels:before{content:""}.wf-ion-lightbulb:before{content:""}.wf-ion-link:before{content:""}.wf-ion-load-a:before{content:""}.wf-ion-load-b:before{content:""}.wf-ion-load-c:before{content:""}.wf-ion-load-d:before{content:""}.wf-ion-location:before{content:""}.wf-ion-lock-combination:before{content:""}.wf-ion-locked:before{content:""}.wf-ion-log-in:before{content:""}.wf-ion-log-out:before{content:""}.wf-ion-loop:before{content:""}.wf-ion-magnet:before{content:""}.wf-ion-male:before{content:""}.wf-ion-man:before{content:""}.wf-ion-map:before{content:""}.wf-ion-medkit:before{content:""}.wf-ion-merge:before{content:""}.wf-ion-mic-a:before{content:""}.wf-ion-mic-b:before{content:""}.wf-ion-mic-c:before{content:""}.wf-ion-minus:before{content:""}.wf-ion-minus-circled:before{content:""}.wf-ion-minus-round:before{content:""}.wf-ion-model-s:before{content:""}.wf-ion-monitor:before{content:""}.wf-ion-more:before{content:""}.wf-ion-mouse:before{content:""}.wf-ion-music-note:before{content:""}.wf-ion-navicon:before{content:""}.wf-ion-navicon-round:before{content:""}.wf-ion-navigate:before{content:""}.wf-ion-network:before{content:""}.wf-ion-no-smoking:before{content:""}.wf-ion-nuclear:before{content:""}.wf-ion-outlet:before{content:""}.wf-ion-paintbrush:before{content:""}.wf-ion-paintbucket:before{content:""}.wf-ion-paper-airplane:before{content:""}.wf-ion-paperclip:before{content:""}.wf-ion-pause:before{content:""}.wf-ion-person:before{content:""}.wf-ion-person-add:before{content:""}.wf-ion-person-stalker:before{content:""}.wf-ion-pie-graph:before{content:""}.wf-ion-pin:before{content:""}.wf-ion-pinpoint:before{content:""}.wf-ion-pizza:before{content:""}.wf-ion-plane:before{content:""}.wf-ion-planet:before{content:""}.wf-ion-play:before{content:""}.wf-ion-playstation:before{content:""}.wf-ion-plus:before{content:""}.wf-ion-plus-circled:before{content:""}.wf-ion-plus-round:before{content:""}.wf-ion-podium:before{content:""}.wf-ion-pound:before{content:""}.wf-ion-power:before{content:""}.wf-ion-pricetag:before{content:""}.wf-ion-pricetags:before{content:""}.wf-ion-printer:before{content:""}.wf-ion-pull-request:before{content:""}.wf-ion-qr-scanner:before{content:""}.wf-ion-quote:before{content:""}.wf-ion-radio-waves:before{content:""}.wf-ion-record:before{content:""}.wf-ion-refresh:before{content:""}.wf-ion-reply:before{content:""}.wf-ion-reply-all:before{content:""}.wf-ion-ribbon-a:before{content:""}.wf-ion-ribbon-b:before{content:""}.wf-ion-sad:before{content:""}.wf-ion-sad-outline:before{content:""}.wf-ion-scissors:before{content:""}.wf-ion-search:before{content:""}.wf-ion-settings:before{content:""}.wf-ion-share:before{content:""}.wf-ion-shuffle:before{content:""}.wf-ion-skip-backward:before{content:""}.wf-ion-skip-forward:before{content:""}.wf-ion-social-android:before{content:""}.wf-ion-social-android-outline:before{content:""}.wf-ion-social-angular:before{content:""}.wf-ion-social-angular-outline:before{content:""}.wf-ion-social-apple:before{content:""}.wf-ion-social-apple-outline:before{content:""}.wf-ion-social-bitcoin:before{content:""}.wf-ion-social-bitcoin-outline:before{content:""}.wf-ion-social-buffer:before{content:""}.wf-ion-social-buffer-outline:before{content:""}.wf-ion-social-chrome:before{content:""}.wf-ion-social-chrome-outline:before{content:""}.wf-ion-social-codepen:before{content:""}.wf-ion-social-codepen-outline:before{content:""}.wf-ion-social-css3:before{content:""}.wf-ion-social-css3-outline:before{content:""}.wf-ion-social-designernews:before{content:""}.wf-ion-social-designernews-outline:before{content:""}.wf-ion-social-dribbble:before{content:""}.wf-ion-social-dribbble-outline:before{content:""}.wf-ion-social-dropbox:before{content:""}.wf-ion-social-dropbox-outline:before{content:""}.wf-ion-social-euro:before{content:""}.wf-ion-social-euro-outline:before{content:""}.wf-ion-social-facebook:before{content:""}.wf-ion-social-facebook-outline:before{content:""}.wf-ion-social-foursquare:before{content:""}.wf-ion-social-foursquare-outline:before{content:""}.wf-ion-social-freebsd-devil:before{content:""}.wf-ion-social-github:before{content:""}.wf-ion-social-github-outline:before{content:""}.wf-ion-social-google:before{content:""}.wf-ion-social-google-outline:before{content:""}.wf-ion-social-googleplus:before{content:""}.wf-ion-social-googleplus-outline:before{content:""}.wf-ion-social-hackernews:before{content:""}.wf-ion-social-hackernews-outline:before{content:""}.wf-ion-social-html5:before{content:""}.wf-ion-social-html5-outline:before{content:""}.wf-ion-social-instagram:before{content:""}.wf-ion-social-instagram-outline:before{content:""}.wf-ion-social-javascript:before{content:""}.wf-ion-social-javascript-outline:before{content:""}.wf-ion-social-linkedin:before{content:""}.wf-ion-social-linkedin-outline:before{content:""}.wf-ion-social-markdown:before{content:""}.wf-ion-social-nodejs:before{content:""}.wf-ion-social-octocat:before{content:""}.wf-ion-social-pinterest:before{content:""}.wf-ion-social-pinterest-outline:before{content:""}.wf-ion-social-python:before{content:""}.wf-ion-social-reddit:before{content:""}.wf-ion-social-reddit-outline:before{content:""}.wf-ion-social-rss:before{content:""}.wf-ion-social-rss-outline:before{content:""}.wf-ion-social-sass:before{content:""}.wf-ion-social-skype:before{content:""}.wf-ion-social-skype-outline:before{content:""}.wf-ion-social-snapchat:before{content:""}.wf-ion-social-snapchat-outline:before{content:""}.wf-ion-social-tumblr:before{content:""}.wf-ion-social-tumblr-outline:before{content:""}.wf-ion-social-tux:before{content:""}.wf-ion-social-twitch:before{content:""}.wf-ion-social-twitch-outline:before{content:""}.wf-ion-social-twitter:before{content:""}.wf-ion-social-twitter-outline:before{content:""}.wf-ion-social-usd:before{content:""}.wf-ion-social-usd-outline:before{content:""}.wf-ion-social-vimeo:before{content:""}.wf-ion-social-vimeo-outline:before{content:""}.wf-ion-social-whatsapp:before{content:""}.wf-ion-social-whatsapp-outline:before{content:""}.wf-ion-social-windows:before{content:""}.wf-ion-social-windows-outline:before{content:""}.wf-ion-social-wordpress:before{content:""}.wf-ion-social-wordpress-outline:before{content:""}.wf-ion-social-yahoo:before{content:""}.wf-ion-social-yahoo-outline:before{content:""}.wf-ion-social-yen:before{content:""}.wf-ion-social-yen-outline:before{content:""}.wf-ion-social-youtube:before{content:""}.wf-ion-social-youtube-outline:before{content:""}.wf-ion-soup-can:before{content:""}.wf-ion-soup-can-outline:before{content:""}.wf-ion-speakerphone:before{content:""}.wf-ion-speedometer:before{content:""}.wf-ion-spoon:before{content:""}.wf-ion-star:before{content:""}.wf-ion-stats-bars:before{content:""}.wf-ion-steam:before{content:""}.wf-ion-stop:before{content:""}.wf-ion-thermometer:before{content:""}.wf-ion-thumbsdown:before{content:""}.wf-ion-thumbsup:before{content:""}.wf-ion-toggle:before{content:""}.wf-ion-toggle-filled:before{content:""}.wf-ion-transgender:before{content:""}.wf-ion-trash-a:before{content:""}.wf-ion-trash-b:before{content:""}.wf-ion-trophy:before{content:""}.wf-ion-tshirt:before{content:""}.wf-ion-tshirt-outline:before{content:""}.wf-ion-umbrella:before{content:""}.wf-ion-university:before{content:""}.wf-ion-unlocked:before{content:""}.wf-ion-upload:before{content:""}.wf-ion-usb:before{content:""}.wf-ion-videocamera:before{content:""}.wf-ion-volume-high:before{content:""}.wf-ion-volume-low:before{content:""}.wf-ion-volume-medium:before{content:""}.wf-ion-volume-mute:before{content:""}.wf-ion-wand:before{content:""}.wf-ion-waterdrop:before{content:""}.wf-ion-wifi:before{content:""}.wf-ion-wineglass:before{content:""}.wf-ion-woman:before{content:""}.wf-ion-wrench:before{content:""}.wf-ion-xbox:before{content:""}
css/wf-onboarding.1722265817.css000064400000121754150755146460011720 0ustar00.wf-switch{display:-webkit-flex !important;display:flex !important;-webkit-align-items:stretch !important;align-items:stretch !important;-webkit-justify-content:flex-start !important;justify-content:flex-start !important;-webkit-flex-direction:row !important;flex-direction:row !important;margin:0;padding:0}.wf-switch>li{margin:0 !important;padding:0.5rem 0.7rem !important;text-transform:uppercase;cursor:pointer;color:#aaa;font-weight:400;border-top:1px solid #bfbfbf;border-bottom:1px solid #bfbfbf;border-right:1px solid #bfbfbf}.wf-switch>li:first-of-type{border-left:1px solid #bfbfbf;-moz-border-radius-topleft:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px}.wf-switch>li:last-of-type{-moz-border-radius-topright:6px;-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-moz-border-radius-bottomright:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px}.wf-switch>li.wf-active{color:#ffffff;background-color:#00709e}#wordfenceWorking{padding:10px 40px 6px 16px;z-index:100000;position:fixed;right:16px;bottom:0px;background-color:#fcb214;border:5px solid #fcb214;border-width:6px 15px 6px 6px;color:#525355;font-size:12px;font-weight:bold;font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;background-image:url("../images/icons/working-indicator.gif");background-position:100% 50%;background-repeat:no-repeat}@media (max-width: 960px){#wordfenceWorking{left:auto;right:0px}}.wf-padding-add-left{padding-left:1rem !important}.wf-padding-add-left-small{padding-left:0.5rem !important}.wf-padding-add-left-large{padding-left:1.5rem !important}.wf-onboarding-flex-horizontal{display:-webkit-flex !important;display:flex !important;-webkit-align-items:center !important;align-items:center !important;-webkit-justify-content:flex-start !important;justify-content:flex-start !important;-webkit-flex-direction:row !important;flex-direction:row !important}.wf-onboarding-flex-horizontal>*:first-child{-webkit-flex-grow:0 !important;flex-grow:0 !important}.wf-onboarding-flex-horizontal.wf-onboarding-flex-align-left{-webkit-align-items:flex-start !important;align-items:flex-start !important}.wf-onboarding-flex-horizontal.wf-onboarding-flex-align-right{-webkit-justify-content:flex-end !important;justify-content:flex-end !important}.wf-onboarding-flex-horizontal.wf-onboarding-full-width{width:100%}.wf-onboarding-flex-horizontal>li{padding:0;margin:0}#wf-onboarding-plugin-overlay{position:absolute;top:0px;right:0px;bottom:0px;left:160px;background-color:rgba(241,241,241,0.9);z-index:9980;padding:5rem 0;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column}#wf-onboarding-tour-overlay{position:absolute;top:0px;right:0px;bottom:0px;left:160px;background-color:rgba(0,0,0,0.3);z-index:9980;padding:5rem 0;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column}.folded #wf-onboarding-plugin-overlay,.folded #wf-onboarding-tour-overlay{left:36px}@media only screen and (max-width: 960px){.auto-fold #wf-onboarding-plugin-overlay,.auto-fold #wf-onboarding-tour-overlay{left:36px}}.rtl #wf-onboarding-plugin-overlay,.rtl #wf-onboarding-tour-overlay{right:160px;left:0px}.rtl .folded #wf-onboarding-plugin-overlay,.rtl .folded #wf-onboarding-tour-overlay{right:36px}@media only screen and (max-width: 960px){.rtl .auto-fold #wf-onboarding-plugin-overlay,.rtl .auto-fold #wf-onboarding-tour-overlay{right:36px}}@media screen and (max-width: 782px){#wf-onboarding-plugin-overlay,.folded #wf-onboarding-plugin-overlay,.auto-fold #wf-onboarding-plugin-overlay,.rtl #wf-onboarding-plugin-overlay,.rtl .folded #wf-onboarding-plugin-overlay,.rtl .auto-fold #wf-onboarding-plugin-overlay,#wf-onboarding-tour-overlay,.folded #wf-onboarding-tour-overlay,.auto-fold #wf-onboarding-tour-overlay,.rtl #wf-onboarding-tour-overlay,.rtl .folded #wf-onboarding-tour-overlay,.rtl .auto-fold #wf-onboarding-tour-overlay{left:0px;right:0px}}#wf-onboarding-dismiss{width:44px;height:44px;display:block;position:absolute;right:0px;top:0px;text-align:center;line-height:44px;font-size:1.35rem;color:#9f9fa0;text-decoration:none;z-index:9981}.wf-onboarding-btn{display:inline-block;margin-bottom:0;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:.5rem 1.25rem;font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:.875rem;line-height:1.3125rem;border-radius:4px;font-weight:400;text-transform:uppercase;-moz-user-select:-moz-none;-ms-user-select:none;-webkit-user-select:none;user-select:none}.wf-onboarding-btn:focus,.wf-onboarding-btn.wf-focus,.wf-onboarding-btn:active:focus,.wf-onboarding-btn:active.wf-focus,.wf-onboarding-btn.wf-active:focus,.wf-onboarding-btn.wf-active.wf-focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.wf-onboarding-btn:hover,.wf-onboarding-btn:focus,.wf-onboarding-btn.wf-focus{text-decoration:none}.wf-onboarding-btn:active,.wf-onboarding-btn.wf-active{outline:0;background-image:none;-moz-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.wf-onboarding-btn.wf-disabled,.wf-onboarding-btn[disabled],.wf-onboarding-btn[readonly],fieldset[disabled] .wf-onboarding-btn{cursor:not-allowed;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=65);opacity:.65;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.wf-onboarding-btn.wf-onboarding-btn-primary{color:#fff;border-color:#005e85}.wf-onboarding-btn.wf-onboarding-btn-primary:focus,.wf-onboarding-btn.wf-onboarding-btn-primary.focus{color:#fff;border-color:#000405}.wf-onboarding-btn.wf-onboarding-btn-primary:hover{color:#fff;border-color:#003347}.wf-onboarding-btn.wf-onboarding-btn-primary:active,.wf-onboarding-btn.wf-onboarding-btn-primary.active,.wf-open>.wf-onboarding-btn.wf-onboarding-btn-primary.wf-dropdown-toggle{color:#fff;border-color:#003347}.wf-onboarding-btn.wf-onboarding-btn-primary:active:hover,.wf-onboarding-btn.wf-onboarding-btn-primary:active:focus,.wf-onboarding-btn.wf-onboarding-btn-primary:active.focus,.wf-onboarding-btn.wf-onboarding-btn-primary.active:hover,.wf-onboarding-btn.wf-onboarding-btn-primary.active:focus,.wf-onboarding-btn.wf-onboarding-btn-primary.active.focus,.wf-open>.wf-onboarding-btn.wf-onboarding-btn-primary.wf-dropdown-toggle:hover,.wf-open>.wf-onboarding-btn.wf-onboarding-btn-primary.wf-dropdown-toggle:focus,.wf-open>.wf-onboarding-btn.wf-onboarding-btn-primary.wf-dropdown-toggle.focus{color:#fff;border-color:#000405}.wf-onboarding-btn.wf-onboarding-btn-primary:active,.wf-onboarding-btn.wf-onboarding-btn-primary.wf-active,.wf-open>.wf-onboarding-btn.wf-onboarding-btn-primary.wf-dropdown-toggle{background-image:none}.wf-onboarding-btn.wf-onboarding-btn-primary.wf-disabled:hover,.wf-onboarding-btn.wf-onboarding-btn-primary.wf-disabled:focus,.wf-onboarding-btn.wf-onboarding-btn-primary.wf-disabled.wf-focus,.wf-onboarding-btn.wf-onboarding-btn-primary[disabled]:hover,.wf-onboarding-btn.wf-onboarding-btn-primary[disabled]:focus,.wf-onboarding-btn.wf-onboarding-btn-primary[disabled].wf-focus,fieldset[disabled] .wf-onboarding-btn.wf-onboarding-btn-primary:hover,fieldset[disabled] .wf-onboarding-btn.wf-onboarding-btn-primary:focus,fieldset[disabled] .wf-onboarding-btn.wf-onboarding-btn-primary.wf-focus{border-color:#005e85}.wf-onboarding-btn.wf-onboarding-btn-primary .wf-badge{background-color:#fff}.wf-onboarding-btn.wf-onboarding-btn-default{background-color:#fff}.wf-onboarding-btn.wf-onboarding-btn-default:focus,.wf-onboarding-btn.wf-onboarding-btn-default.focus{background-color:#e6e6e6}.wf-onboarding-btn.wf-onboarding-btn-default:hover{background-color:#e6e6e6}.wf-onboarding-btn.wf-onboarding-btn-default:active,.wf-onboarding-btn.wf-onboarding-btn-default.active,.wf-open>.wf-onboarding-btn.wf-onboarding-btn-default.wf-dropdown-toggle{background-color:#e6e6e6}.wf-onboarding-btn.wf-onboarding-btn-default:active:hover,.wf-onboarding-btn.wf-onboarding-btn-default:active:focus,.wf-onboarding-btn.wf-onboarding-btn-default:active.focus,.wf-onboarding-btn.wf-onboarding-btn-default.active:hover,.wf-onboarding-btn.wf-onboarding-btn-default.active:focus,.wf-onboarding-btn.wf-onboarding-btn-default.active.focus,.wf-open>.wf-onboarding-btn.wf-onboarding-btn-default.wf-dropdown-toggle:hover,.wf-open>.wf-onboarding-btn.wf-onboarding-btn-default.wf-dropdown-toggle:focus,.wf-open>.wf-onboarding-btn.wf-onboarding-btn-default.wf-dropdown-toggle.focus{background-color:#d4d4d4}.wf-onboarding-btn.wf-onboarding-btn-default:active,.wf-onboarding-btn.wf-onboarding-btn-default.wf-active,.wf-open>.wf-onboarding-btn.wf-onboarding-btn-default.wf-dropdown-toggle{background-image:none}.wf-onboarding-btn.wf-onboarding-btn-default.wf-disabled:hover,.wf-onboarding-btn.wf-onboarding-btn-default.wf-disabled:focus,.wf-onboarding-btn.wf-onboarding-btn-default.wf-disabled.wf-focus,.wf-onboarding-btn.wf-onboarding-btn-default[disabled]:hover,.wf-onboarding-btn.wf-onboarding-btn-default[disabled]:focus,.wf-onboarding-btn.wf-onboarding-btn-default[disabled].wf-focus,fieldset[disabled] .wf-onboarding-btn.wf-onboarding-btn-default:hover,fieldset[disabled] .wf-onboarding-btn.wf-onboarding-btn-default:focus,fieldset[disabled] .wf-onboarding-btn.wf-onboarding-btn-default.wf-focus{background-color:#fff}.wf-onboarding-btn.wf-onboarding-btn-default .wf-badge{color:#fff}a.wf-onboarding-btn{text-decoration:none}a.wf-onboarding-btn.wf-disabled,fieldset[disabled] a.wf-onboarding-btn{pointer-events:none}.wf-onboarding-modal{background-color:#ffffff;z-index:9981;width:280px;padding:2rem}@media (min-width: 768px){.wf-onboarding-modal{width:450px}}@media (min-width: 992px){.wf-onboarding-modal{width:650px}}@media (min-width: 1200px){.wf-onboarding-modal{width:850px}}.wf-onboarding-modal>.wf-onboarding-modal-content{display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column}.wf-onboarding-modal .wf-onboarding-logo{text-align:center;padding-bottom:1rem}.wf-onboarding-modal .wf-onboarding-logo>img{max-width:350px}.wf-onboarding-modal h1,.wf-onboarding-modal h2,.wf-onboarding-modal h3,.wf-onboarding-modal h4,.wf-onboarding-modal h5,.wf-onboarding-modal h6{font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;color:#2d2d2d;font-weight:700;text-align:center;margin:0;padding:0.25rem 0}.wf-onboarding-modal h2{font-size:1.3125rem;line-height:1.5rem}.wf-onboarding-modal h3,.wf-onboarding-modal h4{font-size:1.15em}.wf-onboarding-modal p{text-align:center}.wf-onboarding-modal #wf-onboarding-alerts{margin:1.5rem auto 0.5rem auto}.wf-onboarding-modal #wf-onboarding-alerts-disclaimer{max-width:700px;font-size:0.65rem;margin:0 auto 1rem auto}.wf-onboarding-modal #wf-onboarding-license{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;-webkit-flex-direction:row;flex-direction:row;width:100%;margin:1rem auto 1rem auto}.wf-onboarding-modal #wf-onboarding-license>input{margin-right:1rem}.wf-onboarding-modal #wf-onboarding-or{position:relative;font-size:12px;font-weight:400;text-align:center;line-height:30px;background:#ffffff;text-transform:uppercase;width:100%;max-width:800px;margin:0 auto}.wf-onboarding-modal #wf-onboarding-or:before{display:inline-block;content:"";position:absolute;height:1px;background:#e2e2e2;top:50%;width:100%;left:0;right:0}.wf-onboarding-modal #wf-onboarding-or>span{display:inline-block;position:relative;padding:0 0.75rem;background-color:#ffffff}.wf-onboarding-modal #wf-onboarding-subscribe,.wf-onboarding-modal #wf-onboarding2-subscribe{display:-webkit-flex !important;display:flex !important;-webkit-align-items:center !important;align-items:center !important;-webkit-justify-content:center !important;justify-content:center !important;-webkit-flex-direction:row !important;flex-direction:row !important;margin:0 auto;max-width:700px}.wf-onboarding-modal #wf-onboarding-subscribe>label,.wf-onboarding-modal #wf-onboarding2-subscribe>label{padding-right:1rem}.wf-onboarding-modal #wf-onboarding-subscribe-controls,.wf-onboarding-modal #wf-onboarding2-subscribe-controls{display:-webkit-flex !important;display:flex !important;-webkit-align-items:center !important;align-items:center !important;-webkit-justify-content:center !important;justify-content:center !important;-webkit-flex-direction:column !important;flex-direction:column !important}.wf-onboarding-modal #wf-onboarding-subscribe-controls>p,.wf-onboarding-modal #wf-onboarding2-subscribe-controls>p{display:none;margin:0;font-size:0.65rem}.wf-onboarding-modal #wf-onboarding-subscribe .wf-switch,.wf-onboarding-modal #wf-onboarding2-subscribe .wf-switch{display:-webkit-flex !important;display:flex !important;-webkit-align-items:stretch !important;align-items:stretch !important;-webkit-justify-content:flex-start !important;justify-content:flex-start !important;-webkit-flex-direction:row !important;flex-direction:row !important;margin:0;padding:0}.wf-onboarding-modal #wf-onboarding-subscribe .wf-switch>li,.wf-onboarding-modal #wf-onboarding2-subscribe .wf-switch>li{margin:0 !important;padding:0.5rem 0.7rem !important;text-transform:uppercase;cursor:pointer;color:#aaa;font-weight:400;border-top:1px solid #bfbfbf;border-bottom:1px solid #bfbfbf;border-right:1px solid #bfbfbf}.wf-onboarding-modal #wf-onboarding-subscribe .wf-switch>li:first-of-type,.wf-onboarding-modal #wf-onboarding2-subscribe .wf-switch>li:first-of-type{border-left:1px solid #bfbfbf;-moz-border-radius-topleft:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px}.wf-onboarding-modal #wf-onboarding-subscribe .wf-switch>li:last-of-type,.wf-onboarding-modal #wf-onboarding2-subscribe .wf-switch>li:last-of-type{-moz-border-radius-topright:6px;-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-moz-border-radius-bottomright:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px}.wf-onboarding-modal #wf-onboarding-subscribe .wf-switch>li.wf-active,.wf-onboarding-modal #wf-onboarding2-subscribe .wf-switch>li.wf-active{color:#ffffff}.wf-onboarding-modal [type=checkbox].wf-option-checkbox+label:before{content:"";font-family:"Ionicons" !important;display:block;cursor:pointer;width:30px;height:30px;min-width:30px;min-height:30px;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;line-height:30px !important;text-align:center !important;background-color:#ffffff !important;box-shadow:0px 0px 0px 1px rgba(185,185,185,0.75);color:#ffffff !important;font-size:30px !important;font-weight:normal !important}.wf-onboarding-modal [type=radio].wf-option-radio+label:before{content:"";font-family:"Ionicons" !important;display:block;cursor:pointer;width:30px;height:30px;min-width:30px;min-height:30px;-moz-border-radius:15px;-webkit-border-radius:15px;border-radius:15px;line-height:30px !important;text-align:center !important;background-color:#ffffff !important;box-shadow:0px 0px 0px 1px rgba(185,185,185,0.75);color:#ffffff !important;font-size:30px !important;font-weight:normal !important}.wf-onboarding-modal [type=checkbox].wf-option-checkbox+label,.wf-onboarding-modal [type=radio].wf-option-radio+label{font-size:0.75rem !important}.wf-onboarding-modal [type=checkbox].wf-option-checkbox.wf-small+label:before{width:20px;height:20px;min-width:20px;min-height:20px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;line-height:21px !important;font-size:20px !important}.wf-onboarding-modal [type=radio].wf-option-radio.wf-small+label:before{width:20px;height:20px;min-width:20px;min-height:20px;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;line-height:21px !important;font-size:20px !important}.wf-onboarding-modal [type=checkbox].wf-option-checkbox+label:before,.wf-onboarding-modal [type=radio].wf-option-radio+label:before{line-height:1 !important;text-align:center !important;text-indent:2px;display:inline-block;vertical-align:-6px;margin:0px 0.75rem 0px 0px;font-weight:normal;font-style:normal}.wf-onboarding-modal [type=checkbox].wf-option-checkbox.wf-small+label:before,.wf-onboarding-modal [type=radio].wf-option-radio.wf-small+label:before{text-indent:0px;vertical-align:-3px}.wf-onboarding-modal [type=checkbox].wf-option-checkbox:checked+label:before,.wf-onboarding-modal [type=radio].wf-option-radio:checked+label:before{color:#fff !important}.wf-onboarding-modal .wf-option-checkbox[type=checkbox],.wf-onboarding-modal .wf-option-checkbox[type=radio],.wf-onboarding-modal .wf-option-radio[type=checkbox],.wf-onboarding-modal .wf-option-radio[type=radio]{position:absolute;left:-9999px}.wf-onboarding-modal #wf-onboarding-footer{margin:1.5rem auto 0 auto;border-top:1px solid #e2e2e2;padding-top:1.5rem;width:100%;max-width:800px}.wf-onboarding-modal #wf-onboarding-footer>ul{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row;width:100%;max-width:700px;margin:0 auto;padding:0}.wf-onboarding-modal #wf-onboarding-footer>ul>li{margin:0;padding:0}.wf-onboarding-modal #wf-onboarding-footer>ul>*:last-child{-webkit-flex-grow:1;flex-grow:1;text-align:right}.wf-onboarding-modal #wf-onboarding-license-footer{margin:0 auto;max-width:800px}.wf-onboarding-modal #wf-onboarding-license-footer>ul{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;-webkit-flex-direction:row;flex-direction:row;margin:0 auto;padding:0}.wf-onboarding-modal #wf-onboarding-license-footer>ul>li{margin:0;padding:0 0.5rem}#wf-onboarding-plugin-header{margin-bottom:1rem}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-header{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row;color:#ffffff;padding:1rem 2rem}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-header #wf-onboarding-plugin-header-dismiss{font-size:1.35rem;color:#ffffff;text-decoration:none}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-header #wf-onboarding-plugin-header-dismiss:hover{color:#f1f1f1}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-header>*:last-child{-webkit-flex-grow:1;flex-grow:1;text-align:right}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-content{background-color:#ffffff}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-content>ul{display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:center;justify-content:center;-webkit-flex-direction:row;flex-direction:row;margin:0;padding:0}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-content>ul>li{margin:0;padding:0}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-content>ul #wf-onboarding-plugin-header-stage{border-right:1px solid #f1f1f1}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-content>ul #wf-onboarding-plugin-header-stage>ul{display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-content>ul #wf-onboarding-plugin-header-stage>ul>li{border-left:4px solid #ffffff;border-bottom:1px solid #f1f1f1;font-weight:normal;margin:0;padding:1rem 1rem 1rem 2rem}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-content>ul #wf-onboarding-plugin-header-stage>ul>li.wf-active{font-weight:600}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-content>ul #wf-onboarding-plugin-header-stage>ul .wf-onboarding-plugin-header-stage-label>ul{display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row;margin:0;padding:0}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-content>ul #wf-onboarding-plugin-header-stage>ul .wf-onboarding-plugin-header-stage-label>ul>li{margin:0;padding:0}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-content>ul #wf-onboarding-plugin-header-stage>ul .wf-onboarding-plugin-header-stage-label>ul>*:last-child{visibility:hidden;-webkit-flex-grow:1;flex-grow:1;padding-left:1rem;text-align:right;font-size:1.5rem;font-weight:600}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-content>ul #wf-onboarding-plugin-header-stage>ul .wf-onboarding-plugin-header-stage-label.wf-complete>ul>*:last-child{visibility:visible}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-content>ul #wf-onboarding-plugin-header-stage-content{padding:1rem 2rem}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-content>ul h1,#wf-onboarding-plugin-header #wf-onboarding-plugin-header-content>ul h2,#wf-onboarding-plugin-header #wf-onboarding-plugin-header-content>ul h3,#wf-onboarding-plugin-header #wf-onboarding-plugin-header-content>ul h4,#wf-onboarding-plugin-header #wf-onboarding-plugin-header-content>ul h5,#wf-onboarding-plugin-header #wf-onboarding-plugin-header-content>ul h6{font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;color:#2d2d2d;font-weight:600;text-align:left;margin:0;padding:0.25rem 0}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-content>ul h2{font-size:1.3125rem;line-height:1.5rem}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-content>ul h3,#wf-onboarding-plugin-header #wf-onboarding-plugin-header-content>ul h4{font-size:1.15em}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-content>ul #wf-onboarding-alerts-disclaimer{font-size:0.65rem;margin:0 0 1rem 0}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-content>ul #wf-onboarding-subscribe{text-align:center}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-content>ul #wf-onboarding2-license{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;-webkit-flex-direction:row;flex-direction:row;margin:1rem auto 1rem auto}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-content>ul #wf-onboarding2-license>input{margin-right:1rem}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-footer{background-color:#525355;color:#ffffff;padding:0.5rem 2rem}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-footer>ul{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-end;justify-content:flex-end;-webkit-flex-direction:row;flex-direction:row;margin:0;padding:0}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-footer>ul>li{margin:0;padding:0 0 0 1rem}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-footer>ul a{color:#ffffff}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-footer>ul a.wf-onboarding-btn-default{color:#525355}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-footer>ul .wf-onboarding-btn.wf-onboarding-btn-default{color:#ffffff;background-color:#9f9fa0;border-color:#929293}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-footer>ul .wf-onboarding-btn.wf-onboarding-btn-default:focus,#wf-onboarding-plugin-header #wf-onboarding-plugin-header-footer>ul .wf-onboarding-btn.wf-onboarding-btn-default.focus{color:#ffffff;background-color:#858587;border-color:#535353}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-footer>ul .wf-onboarding-btn.wf-onboarding-btn-default:hover{color:#ffffff;background-color:#858587;border-color:#747475}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-footer>ul .wf-onboarding-btn.wf-onboarding-btn-default:active,#wf-onboarding-plugin-header #wf-onboarding-plugin-header-footer>ul .wf-onboarding-btn.wf-onboarding-btn-default.active,.wf-open>#wf-onboarding-plugin-header #wf-onboarding-plugin-header-footer>ul .wf-onboarding-btn.wf-onboarding-btn-default.wf-dropdown-toggle{color:#ffffff;background-color:#858587;border-color:#747475}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-footer>ul .wf-onboarding-btn.wf-onboarding-btn-default:active:hover,#wf-onboarding-plugin-header #wf-onboarding-plugin-header-footer>ul .wf-onboarding-btn.wf-onboarding-btn-default:active:focus,#wf-onboarding-plugin-header #wf-onboarding-plugin-header-footer>ul .wf-onboarding-btn.wf-onboarding-btn-default:active.focus,#wf-onboarding-plugin-header #wf-onboarding-plugin-header-footer>ul .wf-onboarding-btn.wf-onboarding-btn-default.active:hover,#wf-onboarding-plugin-header #wf-onboarding-plugin-header-footer>ul .wf-onboarding-btn.wf-onboarding-btn-default.active:focus,#wf-onboarding-plugin-header #wf-onboarding-plugin-header-footer>ul .wf-onboarding-btn.wf-onboarding-btn-default.active.focus,.wf-open>#wf-onboarding-plugin-header #wf-onboarding-plugin-header-footer>ul .wf-onboarding-btn.wf-onboarding-btn-default.wf-dropdown-toggle:hover,.wf-open>#wf-onboarding-plugin-header #wf-onboarding-plugin-header-footer>ul .wf-onboarding-btn.wf-onboarding-btn-default.wf-dropdown-toggle:focus,.wf-open>#wf-onboarding-plugin-header #wf-onboarding-plugin-header-footer>ul .wf-onboarding-btn.wf-onboarding-btn-default.wf-dropdown-toggle.focus{color:#ffffff;background-color:#747475;border-color:#535353}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-footer>ul .wf-onboarding-btn.wf-onboarding-btn-default:active,#wf-onboarding-plugin-header #wf-onboarding-plugin-header-footer>ul .wf-onboarding-btn.wf-onboarding-btn-default.wf-active,.wf-open>#wf-onboarding-plugin-header #wf-onboarding-plugin-header-footer>ul .wf-onboarding-btn.wf-onboarding-btn-default.wf-dropdown-toggle{background-image:none}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-footer>ul .wf-onboarding-btn.wf-onboarding-btn-default.wf-disabled:hover,#wf-onboarding-plugin-header #wf-onboarding-plugin-header-footer>ul .wf-onboarding-btn.wf-onboarding-btn-default.wf-disabled:focus,#wf-onboarding-plugin-header #wf-onboarding-plugin-header-footer>ul .wf-onboarding-btn.wf-onboarding-btn-default.wf-disabled.wf-focus,#wf-onboarding-plugin-header #wf-onboarding-plugin-header-footer>ul .wf-onboarding-btn.wf-onboarding-btn-default[disabled]:hover,#wf-onboarding-plugin-header #wf-onboarding-plugin-header-footer>ul .wf-onboarding-btn.wf-onboarding-btn-default[disabled]:focus,#wf-onboarding-plugin-header #wf-onboarding-plugin-header-footer>ul .wf-onboarding-btn.wf-onboarding-btn-default[disabled].wf-focus,fieldset[disabled] #wf-onboarding-plugin-header #wf-onboarding-plugin-header-footer>ul .wf-onboarding-btn.wf-onboarding-btn-default:hover,fieldset[disabled] #wf-onboarding-plugin-header #wf-onboarding-plugin-header-footer>ul .wf-onboarding-btn.wf-onboarding-btn-default:focus,fieldset[disabled] #wf-onboarding-plugin-header #wf-onboarding-plugin-header-footer>ul .wf-onboarding-btn.wf-onboarding-btn-default.wf-focus{background-color:#9f9fa0;border-color:#929293}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-footer>ul .wf-onboarding-btn.wf-onboarding-btn-default .wf-badge{color:#9f9fa0;background-color:#ffffff}#wf-onboarding-plugin-header #wf-onboarding-subscribe,#wf-onboarding-plugin-header #wf-onboarding2-subscribe{display:-webkit-flex !important;display:flex !important;-webkit-align-items:center !important;align-items:center !important;-webkit-justify-content:center !important;justify-content:center !important;-webkit-flex-direction:row !important;flex-direction:row !important}#wf-onboarding-plugin-header #wf-onboarding-subscribe>label,#wf-onboarding-plugin-header #wf-onboarding2-subscribe>label{padding-right:1rem}#wf-onboarding-plugin-header #wf-onboarding-subscribe-controls,#wf-onboarding-plugin-header #wf-onboarding2-subscribe-controls{display:-webkit-flex !important;display:flex !important;-webkit-align-items:center !important;align-items:center !important;-webkit-justify-content:center !important;justify-content:center !important;-webkit-flex-direction:column !important;flex-direction:column !important}#wf-onboarding-plugin-header #wf-onboarding-subscribe-controls>p,#wf-onboarding-plugin-header #wf-onboarding2-subscribe-controls>p{display:none;margin:0;font-size:0.65rem}#wf-onboarding-plugin-header #wf-onboarding-subscribe .wf-switch,#wf-onboarding-plugin-header #wf-onboarding2-subscribe .wf-switch{display:-webkit-flex !important;display:flex !important;-webkit-align-items:stretch !important;align-items:stretch !important;-webkit-justify-content:flex-start !important;justify-content:flex-start !important;-webkit-flex-direction:row !important;flex-direction:row !important;margin:0;padding:0}#wf-onboarding-plugin-header #wf-onboarding-subscribe .wf-switch>li,#wf-onboarding-plugin-header #wf-onboarding2-subscribe .wf-switch>li{margin:0 !important;padding:0.5rem 0.7rem !important;text-transform:uppercase;cursor:pointer;color:#aaa;font-weight:400;border-top:1px solid #bfbfbf;border-bottom:1px solid #bfbfbf;border-right:1px solid #bfbfbf}#wf-onboarding-plugin-header #wf-onboarding-subscribe .wf-switch>li:first-of-type,#wf-onboarding-plugin-header #wf-onboarding2-subscribe .wf-switch>li:first-of-type{border-left:1px solid #bfbfbf;-moz-border-radius-topleft:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px}#wf-onboarding-plugin-header #wf-onboarding-subscribe .wf-switch>li:last-of-type,#wf-onboarding-plugin-header #wf-onboarding2-subscribe .wf-switch>li:last-of-type{-moz-border-radius-topright:6px;-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-moz-border-radius-bottomright:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px}#wf-onboarding-plugin-header #wf-onboarding-subscribe .wf-switch>li.wf-active,#wf-onboarding-plugin-header #wf-onboarding2-subscribe .wf-switch>li.wf-active{color:#ffffff}#wf-onboarding-plugin-header [type=checkbox].wf-option-checkbox+label:before{content:"";font-family:"Ionicons" !important;display:block;cursor:pointer;width:30px;height:30px;min-width:30px;min-height:30px;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;line-height:30px !important;text-align:center !important;background-color:#ffffff !important;box-shadow:0px 0px 0px 1px rgba(185,185,185,0.75);color:#ffffff !important;font-size:30px !important;font-weight:normal !important}#wf-onboarding-plugin-header [type=radio].wf-option-radio+label:before{content:"";font-family:"Ionicons" !important;display:block;cursor:pointer;width:30px;height:30px;min-width:30px;min-height:30px;-moz-border-radius:15px;-webkit-border-radius:15px;border-radius:15px;line-height:30px !important;text-align:center !important;background-color:#ffffff !important;box-shadow:0px 0px 0px 1px rgba(185,185,185,0.75);color:#ffffff !important;font-size:30px !important;font-weight:normal !important}#wf-onboarding-plugin-header [type=checkbox].wf-option-checkbox+label,#wf-onboarding-plugin-header [type=radio].wf-option-radio+label{font-size:0.75rem !important}#wf-onboarding-plugin-header [type=checkbox].wf-option-checkbox.wf-small+label:before{width:20px;height:20px;min-width:20px;min-height:20px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;line-height:21px !important;font-size:20px !important}#wf-onboarding-plugin-header [type=radio].wf-option-radio.wf-small+label:before{width:20px;height:20px;min-width:20px;min-height:20px;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;line-height:21px !important;font-size:20px !important}#wf-onboarding-plugin-header [type=checkbox].wf-option-checkbox+label:before,#wf-onboarding-plugin-header [type=radio].wf-option-radio+label:before{line-height:1 !important;text-align:center !important;text-indent:2px;display:inline-block;vertical-align:-6px;margin:0px 0.75rem 0px 0px;font-weight:normal;font-style:normal}#wf-onboarding-plugin-header [type=checkbox].wf-option-checkbox.wf-small+label:before,#wf-onboarding-plugin-header [type=radio].wf-option-radio.wf-small+label:before{text-indent:0px;vertical-align:-3px}#wf-onboarding-plugin-header [type=checkbox].wf-option-checkbox:checked+label:before,#wf-onboarding-plugin-header [type=radio].wf-option-radio:checked+label:before{color:#fff !important}#wf-onboarding-plugin-header .wf-option-checkbox[type=checkbox],#wf-onboarding-plugin-header .wf-option-checkbox[type=radio],#wf-onboarding-plugin-header .wf-option-radio[type=checkbox],#wf-onboarding-plugin-header .wf-option-radio[type=radio]{position:absolute;left:-9999px}#wf-onboarding-final-attempt .wf-modal-header{background-color:#fcb214}#wf-onboarding-final-attempt .wf-onboarding-modal-content{display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column}#wf-onboarding-final-attempt h1,#wf-onboarding-final-attempt h2,#wf-onboarding-final-attempt h3,#wf-onboarding-final-attempt h4,#wf-onboarding-final-attempt h5,#wf-onboarding-final-attempt h6{font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;color:#2d2d2d;font-weight:700;text-align:center;margin:0;padding:0.5rem 0}#wf-onboarding-final-attempt h2{font-size:1.3125rem;line-height:1.5rem}#wf-onboarding-final-attempt h3,#wf-onboarding-final-attempt h4{font-size:1.5rem;font-weight:300;line-height:1.2}#wf-onboarding-final-attempt p{text-align:center}#wf-onboarding-final-attempt #wf-onboarding-alerts{margin:1.5rem auto 0.5rem auto}#wf-onboarding-final-attempt #wf-onboarding-alerts-disclaimer{max-width:700px;font-size:0.65rem;margin:0 auto 1rem auto}#wf-onboarding-final-attempt #wf-onboarding-subscribe{display:-webkit-flex !important;display:flex !important;-webkit-align-items:center !important;align-items:center !important;-webkit-justify-content:center !important;justify-content:center !important;-webkit-flex-direction:row !important;flex-direction:row !important;margin:0 auto;max-width:700px}#wf-onboarding-final-attempt #wf-onboarding-subscribe>label{padding-right:1rem;text-align:left}#wf-onboarding-final-attempt #wf-onboarding-subscribe-controls{display:-webkit-flex !important;display:flex !important;-webkit-align-items:center !important;align-items:center !important;-webkit-justify-content:center !important;justify-content:center !important;-webkit-flex-direction:column !important;flex-direction:column !important}#wf-onboarding-final-attempt #wf-onboarding-subscribe-controls>p{display:none;margin:0;font-size:0.65rem}#wf-onboarding-final-attempt #wf-onboarding-subscribe .wf-switch{display:-webkit-flex !important;display:flex !important;-webkit-align-items:stretch !important;align-items:stretch !important;-webkit-justify-content:flex-start !important;justify-content:flex-start !important;-webkit-flex-direction:row !important;flex-direction:row !important;margin:0;padding:0}#wf-onboarding-final-attempt #wf-onboarding-subscribe .wf-switch>li{margin:0 !important;padding:0.5rem 0.7rem !important;text-transform:uppercase;cursor:pointer;color:#aaa;font-weight:400;border-top:1px solid #bfbfbf;border-bottom:1px solid #bfbfbf;border-right:1px solid #bfbfbf}#wf-onboarding-final-attempt #wf-onboarding-subscribe .wf-switch>li:first-of-type{border-left:1px solid #bfbfbf;-moz-border-radius-topleft:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px}#wf-onboarding-final-attempt #wf-onboarding-subscribe .wf-switch>li:last-of-type{-moz-border-radius-topright:6px;-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-moz-border-radius-bottomright:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px}#wf-onboarding-final-attempt #wf-onboarding-subscribe .wf-switch>li.wf-active{color:#ffffff}#wf-onboarding-final-attempt #wf-onboarding-license{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;-webkit-flex-direction:row;flex-direction:row;width:100%;margin:1rem auto 1rem auto}#wf-onboarding-final-attempt #wf-onboarding-license>input{margin-right:1rem}#wf-onboarding-final-attempt #wf-onboarding-or{position:relative;font-size:12px;font-weight:400;text-align:center;line-height:30px;background:#ffffff;text-transform:uppercase;width:100%;max-width:800px;margin:0 auto}#wf-onboarding-final-attempt #wf-onboarding-or:before{display:inline-block;content:"";position:absolute;height:1px;background:#e2e2e2;top:50%;width:100%;left:0;right:0}#wf-onboarding-final-attempt #wf-onboarding-or>span{display:inline-block;position:relative;padding:0 0.75rem;background-color:#ffffff}#wf-onboarding-final-attempt #wf-onboarding-subscribe{text-align:center}#wf-onboarding-final-attempt #wf-onboarding-subscribe label{font-weight:normal}#wf-onboarding-final-attempt #wf-onboarding-license-footer,#wf-onboarding-final-attempt #wf-onboarding-license-finished{margin:0 auto;max-width:800px}#wf-onboarding-final-attempt #wf-onboarding-license-footer>ul,#wf-onboarding-final-attempt #wf-onboarding-license-finished>ul{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;-webkit-flex-direction:row;flex-direction:row;margin:0 auto;padding:0}#wf-onboarding-final-attempt #wf-onboarding-license-footer>ul>li,#wf-onboarding-final-attempt #wf-onboarding-license-finished>ul>li{margin:0;padding:0 0.5rem}#wf-onboarding-banner{position:relative;z-index:3006;background-color:#fcb214;font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:.875rem;color:#2d2d2d;line-height:1.3125;font-weight:normal;width:100%;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-direction:row;flex-direction:row;margin:0 0 0 -20px;padding:0}#wf-onboarding-banner>li{margin:0;padding:0.5rem 1rem}.wf-tour-pointer>.wp-pointer-content{-moz-box-shadow:1px 1px 2px 0px rgba(50,50,50,0.75);-webkit-box-shadow:1px 1px 2px 0px rgba(50,50,50,0.75);box-shadow:1px 1px 2px 0px rgba(50,50,50,0.75)}.wf-tour-pointer>.wp-pointer-content>h3{background-color:#ffffff;border:0;text-align:center;color:#2d2d2d;font-weight:300;font-size:1.4rem;padding:1.5rem 1rem 0 1rem}.wf-tour-pointer>.wp-pointer-content>h3:before{content:""}.wf-tour-pointer>.wp-pointer-content>p{padding:0 3rem}.wf-tour-pointer>.wp-pointer-content svg.wf-icon{width:50px;min-width:50px;fill:#9f9fa0}.wf-tour-pointer.wp-pointer-top .wp-pointer-arrow,.wf-tour-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wf-tour-pointer.wp-pointer-undefined .wp-pointer-arrow,.wf-tour-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#fff}.wf-tour-pointer #wf-tour-close{position:absolute;top:1rem;right:1rem}.wf-tour-pointer #wf-tour-close a{color:#525355}.wf-tour-pointer .wf-pointer-footer{position:relative;margin:1.5rem -1px -11px -1px;background-color:#f1f1f1;border-top:1px solid #d9d9d9}.wf-tour-pointer .wf-pointer-footer .wf-tour-pagination{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;-webkit-flex-direction:row;flex-direction:row;margin:auto;padding:1.4rem}.wf-tour-pointer .wf-pointer-footer .wf-tour-pagination>li{padding:0.025rem;margin:0;color:#9f9fa0;font-size:1.4rem}.wf-tour-pointer .wf-pointer-footer #wf-tour-previous{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;-webkit-flex-direction:column;flex-direction:column;position:absolute;left:1rem;top:0px;bottom:0px}.wf-tour-pointer .wf-pointer-footer #wf-tour-continue{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;-webkit-flex-direction:column;flex-direction:column;position:absolute;right:1rem;top:0px;bottom:0px}div.wf-onboarding-registration-prompt{text-align:center;padding-bottom:1rem}div.wf-onboarding-registration-prompt p{font-weight:bold}div.wf-onboarding-registration-prompt a.wf-onboarding-install-type-toggle,div.wf-onboarding-registration-prompt a.wf-onboarding-link{display:inline-block;margin-top:1rem}div.wf-onboarding-registration-prompt div.wf-onboarding-install-existing .wf-onboarding-form-group{text-align:left;margin-bottom:1rem}div.wf-onboarding-registration-prompt div.wf-onboarding-install-existing input[type=email],div.wf-onboarding-registration-prompt div.wf-onboarding-install-existing textarea{display:block;width:100%;padding:0.25rem 0.5rem}div.wf-onboarding-registration-prompt div.wf-onboarding-install-existing #wf-onboarding-license-input{font-family:monospace}div.wf-onboarding-registration-prompt div.wf-onboarding-install-existing label[for=wf-onboarding-consent-input]{display:inline}#wf-install p.wf-onboarding-error{color:#930000;font-weight:bold}#wf-install div.wf-onboarding-registration-prompt{text-align:left}.wf-onboarding-no-thanks-container{text-align:center}.wf-onboarding-form .wf-onboarding-subscription-options{margin-top:0.25rem}.wf-onboarding-form .wf-onboarding-subscription-option-required{display:block;margin-top:0.25rem;color:#930000}
css/jquery-ui-timepicker-addon.1722265817.css000064400000003251150755146460014322 0ustar00.ui-timepicker-div .ui-widget-header { margin-bottom: 8px; }
.ui-timepicker-div dl { text-align: left; }
.ui-timepicker-div dl dt { float: left; clear:left; padding: 0 0 0 5px; }
.ui-timepicker-div dl dd { margin: 0 10px 10px 40%; }
.ui-timepicker-div td { font-size: 90%; }
.ui-tpicker-grid-label { background: none; border: none; margin: 0; padding: 0; }
.ui-timepicker-div .ui_tpicker_unit_hide{ display: none; }

.ui-timepicker-rtl{ direction: rtl; }
.ui-timepicker-rtl dl { text-align: right; padding: 0 5px 0 0; }
.ui-timepicker-rtl dl dt{ float: right; clear: right; }
.ui-timepicker-rtl dl dd { margin: 0 40% 10px 10px; }

/* Shortened version style */
.ui-timepicker-div.ui-timepicker-oneLine { padding-right: 2px; }
.ui-timepicker-div.ui-timepicker-oneLine .ui_tpicker_time, 
.ui-timepicker-div.ui-timepicker-oneLine dt { display: none; }
.ui-timepicker-div.ui-timepicker-oneLine .ui_tpicker_time_label { display: block; padding-top: 2px; }
.ui-timepicker-div.ui-timepicker-oneLine dl { text-align: right; }
.ui-timepicker-div.ui-timepicker-oneLine dl dd, 
.ui-timepicker-div.ui-timepicker-oneLine dl dd > div { display:inline-block; margin:0; }
.ui-timepicker-div.ui-timepicker-oneLine dl dd.ui_tpicker_minute:before,
.ui-timepicker-div.ui-timepicker-oneLine dl dd.ui_tpicker_second:before { content:':'; display:inline-block; }
.ui-timepicker-div.ui-timepicker-oneLine dl dd.ui_tpicker_millisec:before,
.ui-timepicker-div.ui-timepicker-oneLine dl dd.ui_tpicker_microsec:before { content:'.'; display:inline-block; }
.ui-timepicker-div.ui-timepicker-oneLine .ui_tpicker_unit_hide,
.ui-timepicker-div.ui-timepicker-oneLine .ui_tpicker_unit_hide:before{ display: none; }css/wordfenceBox.1722265817.css000064400000013232150755146460011600 0ustar00/*
    ColorBox Core Style:
    The following CSS is consistent between example themes and should not be altered.
*/
#wordfenceBox, #wfboxOverlay, #wfboxWrapper{position:absolute; top:0; left:0; z-index:16777271; overflow:hidden;}
#wfboxOverlay{position:fixed; width:100%; height:100%;}
#wfboxMiddleLeft, #wfboxBottomLeft{clear:left;}
#wfboxContent{position:relative;}
#wfboxLoadedContent{overflow:auto;}
#wfboxTitle{margin:0;}
#wfboxLoadingOverlay, #wfboxLoadingGraphic{position:absolute; top:0; left:0; width:100%;}
#wfboxPrevious, #wfboxNext, #wfboxClose, #wfboxSlideshow{cursor:pointer;}
.wfboxPhoto{float:left; margin:auto; border:0; display:block;}
.wfboxIframe{width:100%; height:100%; display:block; border:0;}

/* 
    User Style:
    Change the following styles to modify the appearance of ColorBox.  They are
    ordered & tabbed in a way that represents the nesting of the generated HTML.
*/
#wfboxOverlay{
	background: #777;
	background: -webkit-radial-gradient(rgba(120, 120, 120, 0.8), rgba(100, 100, 100, 0.8) 50%, rgba(70, 70, 70, 1));
	background: -moz-radial-gradient(rgba(120, 120, 120, 0.6), rgba(100, 100, 100, 0.8) 20%, rgba(70, 70, 70, 1));
}
#wordfenceBox {
	color: #444;
	font-family: "Open Sans", sans-serif;
	font-size: 13px;
	line-height: 1.4em;
}
#wfboxContent { background:#fff; overflow:hidden; padding: 0 0 8px; margin: 20px;
	-webkit-border-radius: 3px 3px 2px 2px; -moz-border-radius: 3px 3px 2px 2px; border-radius: 3px 3px 2px 2px; /* border radius */
	-webkit-box-shadow: 0 2px 4px rgba(0,0,0,.4); -moz-box-shadow: 0 2px 4px rgba(0,0,0,.4); box-shadow: 0 2px 4px rgba(0,0,0,.4); /* box shadow */
	-webkit-background-clip: padding-box; 	/* smoother borders with webkit */ }
#wfboxError{padding:50px; border:1px solid #ccc;}
#wfboxLoadedContent {
	/* margin-bottom:28px; */
	/* MDM added: */ margin: 10px 20px 28px 20px; font-family: Arial; color: #333;
	-webkit-border-radius: 2px 2px 0 0; -moz-border-radius: 2px 2px 0 0; border-radius: 2px 2px 0 0; /* border radius */
}
#wfboxTitle{position:absolute; bottom:8px; left:5px; text-align:center; width:100%; color:#949494;}
#wfboxCurrent{position:absolute; bottom:8px; left:63px; color:#949494; text-indent: -9999px;}
#wfboxSlideshow{position:absolute; bottom:8px; right:35px; color:#0092ef;}
#wfboxPrevious{position:absolute; bottom:5px; left:5px; background:url(../images/lightbox-controls.png) no-repeat -75px 0; width:25px; height:25px; text-indent:-9999px;}
#wfboxPrevious.hover{background-position:-75px -25px;}
#wfboxNext{position:absolute; bottom:5px; left:32px; background:url(../images/lightbox-controls.png) no-repeat -50px 0; width:25px; height:25px; text-indent:-9999px;}
#wfboxNext.hover{background-position:-50px -25px;}
#wfboxLoadingOverlay{background:url(../images/loading_background.png) no-repeat center center;}
#wfboxLoadingGraphic{background:url(../images/loading.gif) no-repeat center center;}
#wfboxClose{position:absolute; bottom:5px; right:5px; background:url(../images/lightbox-controls.png) no-repeat -25px 0; width:25px; height:25px; text-indent:-9999px;}
#wfboxClose.hover{background-position:-25px -25px;}

/*
  The following fixes a problem where IE7+ replaces a PNG's alpha transparency with a black fill
  when an alpha filter (opacity change) is set on the element or ancestor element.
*/
.wfboxIE #wfboxTopLeft,
.wfboxIE #wfboxTopCenter,
.wfboxIE #wfboxTopRight,
.wfboxIE #wfboxBottomLeft,
.wfboxIE #wfboxBottomCenter,
.wfboxIE #wfboxBottomRight,
.wfboxIE #wfboxMiddleLeft,
.wfboxIE #wfboxMiddleRight {
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF,endColorstr=#00FFFFFF);
}

/* 
    Enforce our styles over any theme styling
*/
#wordfenceBox, #wordfenceBox:before, #wordfenceBox:after {
	-webkit-box-sizing: content-box;
	-moz-box-sizing: content-box;
	box-sizing: content-box;
}

#wordfenceBox h1, #wordfenceBox h2, #wordfenceBox h3, #wordfenceBox h4, #wordfenceBox h5, #wordfenceBox h6 {
	display: block;
	font-weight: 600
}

#wordfenceBox h1 {
	font-size: 2em;
	margin: .67em 0
}

#wordfenceBox h2, #wordfenceBox h3 {
	font-size: 1.3em;
	margin: 1em 0
}

#wordfenceBox h1, #wordfenceBox h2, #wordfenceBox h3 {
	color: #23282d
}

#wordfenceBox p {
	font-size: 13px;
	line-height: 1.5;
	margin: 1em 0;
}

#wordfenceBox .textright {
	text-align: right;
}

#wordfenceBox .button, #wordfenceBox .button-primary, #wordfenceBox .button-secondary {
	display: inline-block;
	text-decoration: none;
	font-size: 13px;
	line-height: 26px;
	height: 28px;
	margin: 0;
	padding: 0 10px 1px;
	cursor: pointer;
	border-width: 1px;
	border-style: solid;
	-webkit-appearance: none;
	-webkit-border-radius: 3px;
	border-radius: 3px;
	white-space: nowrap;
	-webkit-box-sizing: border-box;
	-moz-box-sizing: border-box;
	box-sizing: border-box
}

#wordfenceBox .button, #wordfenceBox .button-secondary {
	color: #555;
	border-color: #ccc;
	background: #f7f7f7;
	-webkit-box-shadow: 0 1px 0 #ccc;
	box-shadow: 0 1px 0 #ccc;
	vertical-align: top
}

#wordfenceBox p .button {
	vertical-align: baseline;
	font-family: Arial, san-serif;
	font-weight: normal;
	text-transform: none;
}

#wordfenceBox p code {
	padding: 3px 5px 2px;
	margin: 0 1px;
	background: #eaeaea;
	background: rgba(0,0,0,.07);
	font-size: 13px;
}

#wordfenceBox .button-secondary:focus, #wordfenceBox .button-secondary:hover, #wordfenceBox .button.focus, #wordfenceBox .button.hover, #wordfenceBox .button:focus, #wordfenceBox .button:hover {
	background: #fafafa;
	border-color: #999;
	color: #23282d
}

#wordfenceBox a.wfboxhelp {
	float: left;
	background-image: url(../images/help.png);
	width: 12px;
	height: 12px;
	background-position: 0 0;
	background-repeat: no-repeat;
	padding: 0;
	margin: 9px 0px;  
	text-decoration: none;
	display: inline-block;
	vertical-align: middle;
}css/main.1722265817.css000064400001001744150755146460010105 0ustar00.wf-clearfix:before,.wf-clearfix:after{content:" ";display:table}.wf-clearfix:after{clear:both}.wf-btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;text-transform:uppercase;padding:.4rem 1rem;font-size:.875rem;line-height:1.3125rem;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}@media (min-width: 768px){.wf-btn{padding:.5rem 1.25rem;font-size:.875rem;line-height:1.3125rem;border-radius:4px}}.wf-btn:focus,.wf-btn.wf-focus,.wf-btn:active:focus,.wf-btn:active.wf-focus,.wf-btn.wf-active:focus,.wf-btn.wf-active.wf-focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.wf-btn:hover,.wf-btn:focus,.wf-btn.wf-focus{text-decoration:none}.wf-btn:active,.wf-btn.wf-active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.wf-btn.wf-disabled,.wf-btn[disabled],.wf-btn[readonly],fieldset[disabled] .wf-btn{cursor:not-allowed;-webkit-box-shadow:none;box-shadow:none}a.wf-btn{text-decoration:none}a.wf-btn.wf-disabled,fieldset[disabled] a.wf-btn{cursor:not-allowed;pointer-events:none}.wf-btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.wf-btn-success:focus,.wf-btn-success.focus{color:#fff;background-color:#449d44;border-color:#255625}.wf-btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.wf-btn-success:active,.wf-btn-success.active,.wf-open>.wf-btn-success.wf-dropdown-toggle{color:#fff;background-color:#449d44;border-color:#398439}.wf-btn-success:active:hover,.wf-btn-success:active:focus,.wf-btn-success:active.focus,.wf-btn-success.active:hover,.wf-btn-success.active:focus,.wf-btn-success.active.focus,.wf-open>.wf-btn-success.wf-dropdown-toggle:hover,.wf-open>.wf-btn-success.wf-dropdown-toggle:focus,.wf-open>.wf-btn-success.wf-dropdown-toggle.focus{color:#fff;background-color:#398439;border-color:#255625}.wf-btn-success:active,.wf-btn-success.wf-active,.wf-open>.wf-btn-success.wf-dropdown-toggle{background-image:none}.wf-btn-success.wf-disabled,.wf-btn-success[disabled],.wf-btn-success[readonly],fieldset[disabled] .wf-btn-success{color:#fff;background-color:#95d195;border-color:#8bca8b;cursor:not-allowed}.wf-btn-success.wf-disabled:hover,.wf-btn-success.wf-disabled:focus,.wf-btn-success.wf-disabled.wf-focus,.wf-btn-success[disabled]:hover,.wf-btn-success[disabled]:focus,.wf-btn-success[disabled].wf-focus,.wf-btn-success[readonly]:hover,.wf-btn-success[readonly]:focus,.wf-btn-success[readonly].wf-focus,fieldset[disabled] .wf-btn-success:hover,fieldset[disabled] .wf-btn-success:focus,fieldset[disabled] .wf-btn-success.wf-focus{background-color:#5cb85c;border-color:#4cae4c}.wf-btn-success .wf-badge{color:#5cb85c;background-color:#fff}.wf-btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.wf-btn-info:focus,.wf-btn-info.focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.wf-btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.wf-btn-info:active,.wf-btn-info.active,.wf-open>.wf-btn-info.wf-dropdown-toggle{color:#fff;background-color:#31b0d5;border-color:#269abc}.wf-btn-info:active:hover,.wf-btn-info:active:focus,.wf-btn-info:active.focus,.wf-btn-info.active:hover,.wf-btn-info.active:focus,.wf-btn-info.active.focus,.wf-open>.wf-btn-info.wf-dropdown-toggle:hover,.wf-open>.wf-btn-info.wf-dropdown-toggle:focus,.wf-open>.wf-btn-info.wf-dropdown-toggle.focus{color:#fff;background-color:#269abc;border-color:#1b6d85}.wf-btn-info:active,.wf-btn-info.wf-active,.wf-open>.wf-btn-info.wf-dropdown-toggle{background-image:none}.wf-btn-info.wf-disabled,.wf-btn-info[disabled],.wf-btn-info[readonly],fieldset[disabled] .wf-btn-info{color:#fff;background-color:#94d6ea;border-color:#87d1e7;cursor:not-allowed}.wf-btn-info.wf-disabled:hover,.wf-btn-info.wf-disabled:focus,.wf-btn-info.wf-disabled.wf-focus,.wf-btn-info[disabled]:hover,.wf-btn-info[disabled]:focus,.wf-btn-info[disabled].wf-focus,.wf-btn-info[readonly]:hover,.wf-btn-info[readonly]:focus,.wf-btn-info[readonly].wf-focus,fieldset[disabled] .wf-btn-info:hover,fieldset[disabled] .wf-btn-info:focus,fieldset[disabled] .wf-btn-info.wf-focus{background-color:#5bc0de;border-color:#46b8da}.wf-btn-info .wf-badge{color:#5bc0de;background-color:#fff}.wf-btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.wf-btn-warning:focus,.wf-btn-warning.focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.wf-btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.wf-btn-warning:active,.wf-btn-warning.active,.wf-open>.wf-btn-warning.wf-dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.wf-btn-warning:active:hover,.wf-btn-warning:active:focus,.wf-btn-warning:active.focus,.wf-btn-warning.active:hover,.wf-btn-warning.active:focus,.wf-btn-warning.active.focus,.wf-open>.wf-btn-warning.wf-dropdown-toggle:hover,.wf-open>.wf-btn-warning.wf-dropdown-toggle:focus,.wf-open>.wf-btn-warning.wf-dropdown-toggle.focus{color:#fff;background-color:#d58512;border-color:#985f0d}.wf-btn-warning:active,.wf-btn-warning.wf-active,.wf-open>.wf-btn-warning.wf-dropdown-toggle{background-image:none}.wf-btn-warning.wf-disabled,.wf-btn-warning[disabled],.wf-btn-warning[readonly],fieldset[disabled] .wf-btn-warning{color:#fff;background-color:#f5ca8c;border-color:#f4c37c;cursor:not-allowed}.wf-btn-warning.wf-disabled:hover,.wf-btn-warning.wf-disabled:focus,.wf-btn-warning.wf-disabled.wf-focus,.wf-btn-warning[disabled]:hover,.wf-btn-warning[disabled]:focus,.wf-btn-warning[disabled].wf-focus,.wf-btn-warning[readonly]:hover,.wf-btn-warning[readonly]:focus,.wf-btn-warning[readonly].wf-focus,fieldset[disabled] .wf-btn-warning:hover,fieldset[disabled] .wf-btn-warning:focus,fieldset[disabled] .wf-btn-warning.wf-focus{background-color:#f0ad4e;border-color:#eea236}.wf-btn-warning .wf-badge{color:#f0ad4e;background-color:#fff}.wf-btn-danger,.wf-btn.wf-btn-danger{color:#fff;background-color:#930000;border-color:#7a0000}.wf-btn-danger:focus,.wf-btn-danger.focus,.wf-btn.wf-btn-danger:focus,.wf-btn.wf-btn-danger.focus{color:#fff;background-color:#600000;border-color:#000}.wf-btn-danger:hover,.wf-btn.wf-btn-danger:hover{color:#fff;background-color:#600000;border-color:#3c0000}.wf-btn-danger:active,.wf-btn-danger.active,.wf-open>.wf-btn-danger.wf-dropdown-toggle,.wf-btn.wf-btn-danger:active,.wf-btn.wf-btn-danger.active,.wf-open>.wf-btn.wf-btn-danger.wf-dropdown-toggle{color:#fff;background-color:#600000;border-color:#3c0000}.wf-btn-danger:active:hover,.wf-btn-danger:active:focus,.wf-btn-danger:active.focus,.wf-btn-danger.active:hover,.wf-btn-danger.active:focus,.wf-btn-danger.active.focus,.wf-open>.wf-btn-danger.wf-dropdown-toggle:hover,.wf-open>.wf-btn-danger.wf-dropdown-toggle:focus,.wf-open>.wf-btn-danger.wf-dropdown-toggle.focus,.wf-btn.wf-btn-danger:active:hover,.wf-btn.wf-btn-danger:active:focus,.wf-btn.wf-btn-danger:active.focus,.wf-btn.wf-btn-danger.active:hover,.wf-btn.wf-btn-danger.active:focus,.wf-btn.wf-btn-danger.active.focus,.wf-open>.wf-btn.wf-btn-danger.wf-dropdown-toggle:hover,.wf-open>.wf-btn.wf-btn-danger.wf-dropdown-toggle:focus,.wf-open>.wf-btn.wf-btn-danger.wf-dropdown-toggle.focus{color:#fff;background-color:#3c0000;border-color:#000}.wf-btn-danger:active,.wf-btn-danger.wf-active,.wf-open>.wf-btn-danger.wf-dropdown-toggle,.wf-btn.wf-btn-danger:active,.wf-btn.wf-btn-danger.wf-active,.wf-open>.wf-btn.wf-btn-danger.wf-dropdown-toggle{background-image:none}.wf-btn-danger.wf-disabled,.wf-btn-danger[disabled],.wf-btn-danger[readonly],fieldset[disabled] .wf-btn-danger,.wf-btn.wf-btn-danger.wf-disabled,.wf-btn.wf-btn-danger[disabled],.wf-btn.wf-btn-danger[readonly],fieldset[disabled] .wf-btn.wf-btn-danger{color:#fff;background-color:#b95959;border-color:#a95959;cursor:not-allowed}.wf-btn-danger.wf-disabled:hover,.wf-btn-danger.wf-disabled:focus,.wf-btn-danger.wf-disabled.wf-focus,.wf-btn-danger[disabled]:hover,.wf-btn-danger[disabled]:focus,.wf-btn-danger[disabled].wf-focus,.wf-btn-danger[readonly]:hover,.wf-btn-danger[readonly]:focus,.wf-btn-danger[readonly].wf-focus,fieldset[disabled] .wf-btn-danger:hover,fieldset[disabled] .wf-btn-danger:focus,fieldset[disabled] .wf-btn-danger.wf-focus,.wf-btn.wf-btn-danger.wf-disabled:hover,.wf-btn.wf-btn-danger.wf-disabled:focus,.wf-btn.wf-btn-danger.wf-disabled.wf-focus,.wf-btn.wf-btn-danger[disabled]:hover,.wf-btn.wf-btn-danger[disabled]:focus,.wf-btn.wf-btn-danger[disabled].wf-focus,.wf-btn.wf-btn-danger[readonly]:hover,.wf-btn.wf-btn-danger[readonly]:focus,.wf-btn.wf-btn-danger[readonly].wf-focus,fieldset[disabled] .wf-btn.wf-btn-danger:hover,fieldset[disabled] .wf-btn.wf-btn-danger:focus,fieldset[disabled] .wf-btn.wf-btn-danger.wf-focus{background-color:#930000;border-color:#7a0000}.wf-btn-danger .wf-badge,.wf-btn.wf-btn-danger .wf-badge{color:#930000;background-color:#fff}.wf-btn-callout{font-weight:600;text-transform:uppercase}.wf-btn-callout-subtle{font-weight:400;text-transform:uppercase}.wf-btn-link{font-weight:normal;border-radius:0}.wf-btn-link,.wf-btn-link:active,.wf-btn-link.wf-active,.wf-btn-link[disabled],fieldset[disabled] .wf-btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.wf-btn-link,.wf-btn-link:hover,.wf-btn-link:focus,.wf-btn-link:active{border-color:transparent}.wf-btn-link:hover,.wf-btn-link:focus{color:#003a52;text-decoration:underline;background-color:transparent}.wf-btn-link[disabled]:hover,.wf-btn-link[disabled]:focus,fieldset[disabled] .wf-btn-link:hover,fieldset[disabled] .wf-btn-link:focus{color:#777;text-decoration:none}.wf-btn-lg,.wf-btn-group-lg>.wf-btn{padding:10px 16px;font-size:18px;line-height:1.33333;border-radius:6px}.wf-btn-sm,.wf-btn-group-sm>.wf-btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.wf-btn-xs,.wf-btn-group-xs>.wf-btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.wf-btn-block{display:block;width:100%}.wf-btn-block+.wf-btn-block{margin-top:5px}input[type="submit"].wf-btn-block,input[type="reset"].wf-btn-block,input[type="button"].wf-btn-block{width:100%}.wf-btn-group,.wf-btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.wf-btn-group>.wf-btn,.wf-btn-group-vertical>.wf-btn{position:relative;float:left}.wf-btn-group>.wf-btn:hover,.wf-btn-group>.wf-btn:focus,.wf-btn-group>.wf-btn:active,.wf-btn-group>.wf-btn.wf-active,.wf-btn-group-vertical>.wf-btn:hover,.wf-btn-group-vertical>.wf-btn:focus,.wf-btn-group-vertical>.wf-btn:active,.wf-btn-group-vertical>.wf-btn.wf-active{z-index:2}.wf-btn-group .wf-btn+.wf-btn,.wf-btn-group .wf-btn+.wf-btn-group,.wf-btn-group .wf-btn-group+.wf-btn,.wf-btn-group .wf-btn-group+.wf-btn-group{margin-left:-1px}.wf-btn-toolbar{margin-left:-5px}.wf-btn-toolbar:before,.wf-btn-toolbar:after{content:" ";display:table}.wf-btn-toolbar:after{clear:both}.wf-btn-toolbar .wf-btn,.wf-btn-toolbar .wf-btn-group,.wf-btn-toolbar .wf-input-group{float:left}.wf-btn-toolbar>.wf-btn,.wf-btn-toolbar>.wf-btn-group,.wf-btn-toolbar>.wf-input-group{margin-left:5px}.wf-btn-group>.wf-btn:not(:first-child):not(:last-child):not(.wf-dropdown-toggle){border-radius:0}.wf-btn-group>.wf-btn:first-child{margin-left:0}.wf-btn-group>.wf-btn:first-child:not(:last-child):not(.wf-dropdown-toggle){-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.wf-btn-group>.wf-btn:last-child:not(:first-child),.wf-btn-group>.wf-dropdown-toggle:not(:first-child){-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0}.wf-btn-group>.wf-btn-group{float:left}.wf-btn-group>.wf-btn-group:not(:first-child):not(:last-child)>.wf-btn{border-radius:0}.wf-btn-group>.wf-btn-group:first-child:not(:last-child)>.wf-btn:last-child,.wf-btn-group>.wf-btn-group:first-child:not(:last-child)>.wf-dropdown-toggle{-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.wf-btn-group>.wf-btn-group:last-child:not(:first-child)>.wf-btn:first-child{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0}.wf-btn-group .wf-dropdown-toggle:active,.wf-btn-group.wf-open .wf-dropdown-toggle{outline:0}.wf-btn-group>.wf-btn+.wf-dropdown-toggle{padding-left:8px;padding-right:8px}.wf-btn-group>.wf-btn-lg+.wf-dropdown-toggle,.wf-btn-group-lg.wf-btn-group>.wf-btn+.wf-dropdown-toggle{padding-left:12px;padding-right:12px}.wf-btn-group.open .wf-dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.wf-btn-group.open .wf-dropdown-toggle.wf-btn-link{-webkit-box-shadow:none;box-shadow:none}.wf-btn .wf-caret{margin-left:0}.wf-btn-lg .wf-caret,.wf-btn-group-lg>.wf-btn .wf-caret{border-width:5px 5px 0;border-bottom-width:0}.wf-dropup .wf-btn-lg .wf-caret,.wf-dropup .wf-btn-group-lg>.wf-btn .wf-caret{border-width:0 5px 5px}.wf-btn-group-vertical>.wf-btn,.wf-btn-group-vertical>.wf-btn-group,.wf-btn-group-vertical>.wf-btn-group>.wf-btn{display:block;float:none;width:100%;max-width:100%}.wf-btn-group-vertical>.wf-btn-group:before,.wf-btn-group-vertical>.wf-btn-group:after{content:" ";display:table}.wf-btn-group-vertical>.wf-btn-group:after{clear:both}.wf-btn-group-vertical>.wf-btn-group>.wf-btn{float:none}.wf-btn-group-vertical>.wf-btn+.wf-btn,.wf-btn-group-vertical>.wf-btn+.wf-btn-group,.wf-btn-group-vertical>.wf-btn-group+.wf-btn,.wf-btn-group-vertical>.wf-btn-group+.wf-btn-group{margin-top:-1px;margin-left:0}.wf-btn-group-vertical>.wf-btn:not(:first-child):not(:last-child){border-radius:0}.wf-btn-group-vertical>.wf-btn:first-child:not(:last-child){-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.wf-btn-group-vertical>.wf-btn:last-child:not(:first-child){-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.wf-btn-group-vertical>.wf-btn-group:not(:first-child):not(:last-child)>.wf-btn{border-radius:0}.wf-btn-group-vertical>.wf-btn-group:first-child:not(:last-child)>.wf-btn:last-child,.wf-btn-group-vertical>.wf-btn-group:first-child:not(:last-child)>.wf-dropdown-toggle{-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.wf-btn-group-vertical>.wf-btn-group:last-child:not(:first-child)>.wf-btn:first-child{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0}.wf-btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.wf-btn-group-justified>.wf-btn,.wf-btn-group-justified>.wf-btn-group{float:none;display:table-cell;width:1%}.wf-btn-group-justified>.wf-btn-group .wf-btn{width:100%}.wf-btn-group-justified>.wf-btn-group .wf-dropdown-menu{left:auto}[data-toggle="buttons"]>.wf-btn input[type="radio"],[data-toggle="buttons"]>.wf-btn input[type="checkbox"],[data-toggle="buttons"]>.wf-btn-group>.wf-btn input[type="radio"],[data-toggle="buttons"]>.wf-btn-group>.wf-btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.wf-pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.wf-pagination>li{display:inline}.wf-pagination>li>a,.wf-pagination>li>span{position:relative;float:left;padding:.5rem 1.25rem;line-height:1.42857;text-decoration:none;color:#00709e;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.wf-pagination>li:first-child>a,.wf-pagination>li:first-child>span{margin-left:0;-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px}.wf-pagination>li:last-child>a,.wf-pagination>li:last-child>span{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.wf-pagination>li>a:hover,.wf-pagination>li>a:focus,.wf-pagination>li>span:hover,.wf-pagination>li>span:focus{z-index:2;color:#003a52;background-color:#e2e2e2;border-color:#ddd}.wf-pagination>.wf-active>a,.wf-pagination>.wf-active>a:hover,.wf-pagination>.wf-active>a:focus,.wf-pagination>.wf-active>span,.wf-pagination>.wf-active>span:hover,.wf-pagination>.wf-active>span:focus{z-index:3;color:#fff;cursor:default}.wf-pagination>.wf-disabled>span,.wf-pagination>.wf-disabled>span:hover,.wf-pagination>.wf-disabled>span:focus,.wf-pagination>.wf-disabled>a,.wf-pagination>.wf-disabled>a:hover,.wf-pagination>.wf-disabled>a:focus{color:#777;background-color:#fff;border-color:#ddd;cursor:not-allowed}.wf-pagination-lg>li>a,.wf-pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.33333}.wf-pagination-lg>li:first-child>a,.wf-pagination-lg>li:first-child>span{-moz-border-radius-topleft:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px}.wf-pagination-lg>li:last-child>a,.wf-pagination-lg>li:last-child>span{-moz-border-radius-topright:6px;-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-moz-border-radius-bottomright:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px}.wf-pagination-sm>li>a,.wf-pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.wf-pagination-sm>li:first-child>a,.wf-pagination-sm>li:first-child>span{-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px}.wf-pagination-sm>li:last-child>a,.wf-pagination-sm>li:last-child>span{-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px}.wf-downgrade-license{padding:0 1.25rem}@-ms-viewport{width:device-width}.wf-visible-xs{display:none !important}.wf-visible-sm{display:none !important}.wf-visible-md{display:none !important}.wf-visible-lg{display:none !important}.wf-visible-xs-block,.wf-visible-xs-inline,.wf-visible-xs-inline-block,.wf-visible-sm-block,.wf-visible-sm-inline,.wf-visible-sm-inline-block,.wf-visible-md-block,.wf-visible-md-inline,.wf-visible-md-inline-block,.wf-visible-lg-block,.wf-visible-lg-inline,.wf-visible-lg-inline-block{display:none !important}@media (max-width: 767px){.wf-visible-xs{display:block !important}table.wf-visible-xs{display:table !important}tr.wf-visible-xs{display:table-row !important}th.wf-visible-xs,td.wf-visible-xs{display:table-cell !important}}@media (max-width: 767px){.wf-visible-xs-block{display:block !important}}@media (max-width: 767px){.wf-visible-xs-inline{display:inline !important}}@media (max-width: 767px){.wf-visible-xs-inline-block{display:inline-block !important}}@media (min-width: 768px) and (max-width: 991px){.wf-visible-sm{display:block !important}table.wf-visible-sm{display:table !important}tr.wf-visible-sm{display:table-row !important}th.wf-visible-sm,td.wf-visible-sm{display:table-cell !important}}@media (min-width: 768px) and (max-width: 991px){.wf-visible-sm-block{display:block !important}}@media (min-width: 768px) and (max-width: 991px){.wf-visible-sm-inline{display:inline !important}}@media (min-width: 768px) and (max-width: 991px){.wf-visible-sm-inline-block{display:inline-block !important}}@media (min-width: 992px) and (max-width: 1199px){.wf-visible-md{display:block !important}table.wf-visible-md{display:table !important}tr.wf-visible-md{display:table-row !important}th.wf-visible-md,td.wf-visible-md{display:table-cell !important}}@media (min-width: 992px) and (max-width: 1199px){.wf-visible-md-block{display:block !important}}@media (min-width: 992px) and (max-width: 1199px){.wf-visible-md-inline{display:inline !important}}@media (min-width: 992px) and (max-width: 1199px){.wf-visible-md-inline-block{display:inline-block !important}}@media (min-width: 1200px){.wf-visible-lg{display:block !important}table.wf-visible-lg{display:table !important}tr.wf-visible-lg{display:table-row !important}th.wf-visible-lg,td.wf-visible-lg{display:table-cell !important}}@media (min-width: 1200px){.wf-visible-lg-block{display:block !important}}@media (min-width: 1200px){.wf-visible-lg-inline{display:inline !important}}@media (min-width: 1200px){.wf-visible-lg-inline-block{display:inline-block !important}}@media (max-width: 767px){.wf-hidden-xs{display:none !important}}@media (min-width: 768px) and (max-width: 991px){.wf-hidden-sm{display:none !important}}@media (min-width: 992px) and (max-width: 1199px){.wf-hidden-md{display:none !important}}@media (min-width: 1200px){.wf-hidden-lg{display:none !important}}.wf-visible-print{display:none !important}@media print{.wf-visible-print{display:block !important}table.wf-visible-print{display:table !important}tr.wf-visible-print{display:table-row !important}th.wf-visible-print,td.wf-visible-print{display:table-cell !important}}.wf-visible-print-block{display:none !important}@media print{.wf-visible-print-block{display:block !important}}.wf-visible-print-inline{display:none !important}@media print{.wf-visible-print-inline{display:inline !important}}.wf-visible-print-inline-block{display:none !important}@media print{.wf-visible-print-inline-block{display:inline-block !important}}@media print{.wf-hidden-print{display:none !important}}.wf-container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.wf-container:before,.wf-container:after{content:" ";display:table}.wf-container:after{clear:both}@media (min-width: 768px){.wf-container{width:750px}}@media (min-width: 992px){.wf-container{width:970px}}@media (min-width: 1200px){.wf-container{width:1170px}}.wf-container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.wf-container-fluid:before,.wf-container-fluid:after{content:" ";display:table}.wf-container-fluid:after{clear:both}.wf-row{margin-left:-15px;margin-right:-15px}.wf-row:before,.wf-row:after{content:" ";display:table}.wf-row:after{clear:both}.wf-col-xs-1,.wf-col-sm-1,.wf-col-md-1,.wf-col-lg-1,.wf-col-xs-2,.wf-col-sm-2,.wf-col-md-2,.wf-col-lg-2,.wf-col-xs-3,.wf-col-sm-3,.wf-col-md-3,.wf-col-lg-3,.wf-col-xs-4,.wf-col-sm-4,.wf-col-md-4,.wf-col-lg-4,.wf-col-xs-5,.wf-col-sm-5,.wf-col-md-5,.wf-col-lg-5,.wf-col-xs-6,.wf-col-sm-6,.wf-col-md-6,.wf-col-lg-6,.wf-col-xs-7,.wf-col-sm-7,.wf-col-md-7,.wf-col-lg-7,.wf-col-xs-8,.wf-col-sm-8,.wf-col-md-8,.wf-col-lg-8,.wf-col-xs-9,.wf-col-sm-9,.wf-col-md-9,.wf-col-lg-9,.wf-col-xs-10,.wf-col-sm-10,.wf-col-md-10,.wf-col-lg-10,.wf-col-xs-11,.wf-col-sm-11,.wf-col-md-11,.wf-col-lg-11,.wf-col-xs-12,.wf-col-sm-12,.wf-col-md-12,.wf-col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px;box-sizing:border-box}.wf-col-xs-1,.wf-col-xs-2,.wf-col-xs-3,.wf-col-xs-4,.wf-col-xs-5,.wf-col-xs-6,.wf-col-xs-7,.wf-col-xs-8,.wf-col-xs-9,.wf-col-xs-10,.wf-col-xs-11,.wf-col-xs-12{float:left}.wf-col-xs-1{width:8.33333%}.wf-col-xs-2{width:16.66667%}.wf-col-xs-3{width:25%}.wf-col-xs-4{width:33.33333%}.wf-col-xs-5{width:41.66667%}.wf-col-xs-6{width:50%}.wf-col-xs-7{width:58.33333%}.wf-col-xs-8{width:66.66667%}.wf-col-xs-9{width:75%}.wf-col-xs-10{width:83.33333%}.wf-col-xs-11{width:91.66667%}.wf-col-xs-12{width:100%}.wf-col-xs-pull-0{right:auto}.wf-col-xs-pull-1{right:8.33333%}.wf-col-xs-pull-2{right:16.66667%}.wf-col-xs-pull-3{right:25%}.wf-col-xs-pull-4{right:33.33333%}.wf-col-xs-pull-5{right:41.66667%}.wf-col-xs-pull-6{right:50%}.wf-col-xs-pull-7{right:58.33333%}.wf-col-xs-pull-8{right:66.66667%}.wf-col-xs-pull-9{right:75%}.wf-col-xs-pull-10{right:83.33333%}.wf-col-xs-pull-11{right:91.66667%}.wf-col-xs-pull-12{right:100%}.wf-col-xs-push-0{left:auto}.wf-col-xs-push-1{left:8.33333%}.wf-col-xs-push-2{left:16.66667%}.wf-col-xs-push-3{left:25%}.wf-col-xs-push-4{left:33.33333%}.wf-col-xs-push-5{left:41.66667%}.wf-col-xs-push-6{left:50%}.wf-col-xs-push-7{left:58.33333%}.wf-col-xs-push-8{left:66.66667%}.wf-col-xs-push-9{left:75%}.wf-col-xs-push-10{left:83.33333%}.wf-col-xs-push-11{left:91.66667%}.wf-col-xs-push-12{left:100%}.wf-col-xs-offset-0{margin-left:0%}.wf-col-xs-offset-1{margin-left:8.33333%}.wf-col-xs-offset-2{margin-left:16.66667%}.wf-col-xs-offset-3{margin-left:25%}.wf-col-xs-offset-4{margin-left:33.33333%}.wf-col-xs-offset-5{margin-left:41.66667%}.wf-col-xs-offset-6{margin-left:50%}.wf-col-xs-offset-7{margin-left:58.33333%}.wf-col-xs-offset-8{margin-left:66.66667%}.wf-col-xs-offset-9{margin-left:75%}.wf-col-xs-offset-10{margin-left:83.33333%}.wf-col-xs-offset-11{margin-left:91.66667%}.wf-col-xs-offset-12{margin-left:100%}.wf-col-xs-half-padding-left{padding-left:8px}.wf-col-xs-half-padding-right{padding-right:7px}@media (min-width: 768px){.wf-col-sm-1,.wf-col-sm-2,.wf-col-sm-3,.wf-col-sm-4,.wf-col-sm-5,.wf-col-sm-6,.wf-col-sm-7,.wf-col-sm-8,.wf-col-sm-9,.wf-col-sm-10,.wf-col-sm-11,.wf-col-sm-12{float:left}.wf-col-sm-1{width:8.33333%}.wf-col-sm-2{width:16.66667%}.wf-col-sm-3{width:25%}.wf-col-sm-4{width:33.33333%}.wf-col-sm-5{width:41.66667%}.wf-col-sm-6{width:50%}.wf-col-sm-7{width:58.33333%}.wf-col-sm-8{width:66.66667%}.wf-col-sm-9{width:75%}.wf-col-sm-10{width:83.33333%}.wf-col-sm-11{width:91.66667%}.wf-col-sm-12{width:100%}.wf-col-sm-pull-0{right:auto}.wf-col-sm-pull-1{right:8.33333%}.wf-col-sm-pull-2{right:16.66667%}.wf-col-sm-pull-3{right:25%}.wf-col-sm-pull-4{right:33.33333%}.wf-col-sm-pull-5{right:41.66667%}.wf-col-sm-pull-6{right:50%}.wf-col-sm-pull-7{right:58.33333%}.wf-col-sm-pull-8{right:66.66667%}.wf-col-sm-pull-9{right:75%}.wf-col-sm-pull-10{right:83.33333%}.wf-col-sm-pull-11{right:91.66667%}.wf-col-sm-pull-12{right:100%}.wf-col-sm-push-0{left:auto}.wf-col-sm-push-1{left:8.33333%}.wf-col-sm-push-2{left:16.66667%}.wf-col-sm-push-3{left:25%}.wf-col-sm-push-4{left:33.33333%}.wf-col-sm-push-5{left:41.66667%}.wf-col-sm-push-6{left:50%}.wf-col-sm-push-7{left:58.33333%}.wf-col-sm-push-8{left:66.66667%}.wf-col-sm-push-9{left:75%}.wf-col-sm-push-10{left:83.33333%}.wf-col-sm-push-11{left:91.66667%}.wf-col-sm-push-12{left:100%}.wf-col-sm-offset-0{margin-left:0%}.wf-col-sm-offset-1{margin-left:8.33333%}.wf-col-sm-offset-2{margin-left:16.66667%}.wf-col-sm-offset-3{margin-left:25%}.wf-col-sm-offset-4{margin-left:33.33333%}.wf-col-sm-offset-5{margin-left:41.66667%}.wf-col-sm-offset-6{margin-left:50%}.wf-col-sm-offset-7{margin-left:58.33333%}.wf-col-sm-offset-8{margin-left:66.66667%}.wf-col-sm-offset-9{margin-left:75%}.wf-col-sm-offset-10{margin-left:83.33333%}.wf-col-sm-offset-11{margin-left:91.66667%}.wf-col-sm-offset-12{margin-left:100%}.wf-col-sm-half-padding-left{padding-left:8px}.wf-col-sm-half-padding-right{padding-right:7px}}@media (min-width: 992px){.wf-col-md-1,.wf-col-md-2,.wf-col-md-3,.wf-col-md-4,.wf-col-md-5,.wf-col-md-6,.wf-col-md-7,.wf-col-md-8,.wf-col-md-9,.wf-col-md-10,.wf-col-md-11,.wf-col-md-12{float:left}.wf-col-md-1{width:8.33333%}.wf-col-md-2{width:16.66667%}.wf-col-md-3{width:25%}.wf-col-md-4{width:33.33333%}.wf-col-md-5{width:41.66667%}.wf-col-md-6{width:50%}.wf-col-md-7{width:58.33333%}.wf-col-md-8{width:66.66667%}.wf-col-md-9{width:75%}.wf-col-md-10{width:83.33333%}.wf-col-md-11{width:91.66667%}.wf-col-md-12{width:100%}.wf-col-md-pull-0{right:auto}.wf-col-md-pull-1{right:8.33333%}.wf-col-md-pull-2{right:16.66667%}.wf-col-md-pull-3{right:25%}.wf-col-md-pull-4{right:33.33333%}.wf-col-md-pull-5{right:41.66667%}.wf-col-md-pull-6{right:50%}.wf-col-md-pull-7{right:58.33333%}.wf-col-md-pull-8{right:66.66667%}.wf-col-md-pull-9{right:75%}.wf-col-md-pull-10{right:83.33333%}.wf-col-md-pull-11{right:91.66667%}.wf-col-md-pull-12{right:100%}.wf-col-md-push-0{left:auto}.wf-col-md-push-1{left:8.33333%}.wf-col-md-push-2{left:16.66667%}.wf-col-md-push-3{left:25%}.wf-col-md-push-4{left:33.33333%}.wf-col-md-push-5{left:41.66667%}.wf-col-md-push-6{left:50%}.wf-col-md-push-7{left:58.33333%}.wf-col-md-push-8{left:66.66667%}.wf-col-md-push-9{left:75%}.wf-col-md-push-10{left:83.33333%}.wf-col-md-push-11{left:91.66667%}.wf-col-md-push-12{left:100%}.wf-col-md-offset-0{margin-left:0%}.wf-col-md-offset-1{margin-left:8.33333%}.wf-col-md-offset-2{margin-left:16.66667%}.wf-col-md-offset-3{margin-left:25%}.wf-col-md-offset-4{margin-left:33.33333%}.wf-col-md-offset-5{margin-left:41.66667%}.wf-col-md-offset-6{margin-left:50%}.wf-col-md-offset-7{margin-left:58.33333%}.wf-col-md-offset-8{margin-left:66.66667%}.wf-col-md-offset-9{margin-left:75%}.wf-col-md-offset-10{margin-left:83.33333%}.wf-col-md-offset-11{margin-left:91.66667%}.wf-col-md-offset-12{margin-left:100%}.wf-col-md-half-padding-left{padding-left:8px}.wf-col-md-half-padding-right{padding-right:7px}}@media (min-width: 1200px){.wf-col-lg-1,.wf-col-lg-2,.wf-col-lg-3,.wf-col-lg-4,.wf-col-lg-5,.wf-col-lg-6,.wf-col-lg-7,.wf-col-lg-8,.wf-col-lg-9,.wf-col-lg-10,.wf-col-lg-11,.wf-col-lg-12{float:left}.wf-col-lg-1{width:8.33333%}.wf-col-lg-2{width:16.66667%}.wf-col-lg-3{width:25%}.wf-col-lg-4{width:33.33333%}.wf-col-lg-5{width:41.66667%}.wf-col-lg-6{width:50%}.wf-col-lg-7{width:58.33333%}.wf-col-lg-8{width:66.66667%}.wf-col-lg-9{width:75%}.wf-col-lg-10{width:83.33333%}.wf-col-lg-11{width:91.66667%}.wf-col-lg-12{width:100%}.wf-col-lg-pull-0{right:auto}.wf-col-lg-pull-1{right:8.33333%}.wf-col-lg-pull-2{right:16.66667%}.wf-col-lg-pull-3{right:25%}.wf-col-lg-pull-4{right:33.33333%}.wf-col-lg-pull-5{right:41.66667%}.wf-col-lg-pull-6{right:50%}.wf-col-lg-pull-7{right:58.33333%}.wf-col-lg-pull-8{right:66.66667%}.wf-col-lg-pull-9{right:75%}.wf-col-lg-pull-10{right:83.33333%}.wf-col-lg-pull-11{right:91.66667%}.wf-col-lg-pull-12{right:100%}.wf-col-lg-push-0{left:auto}.wf-col-lg-push-1{left:8.33333%}.wf-col-lg-push-2{left:16.66667%}.wf-col-lg-push-3{left:25%}.wf-col-lg-push-4{left:33.33333%}.wf-col-lg-push-5{left:41.66667%}.wf-col-lg-push-6{left:50%}.wf-col-lg-push-7{left:58.33333%}.wf-col-lg-push-8{left:66.66667%}.wf-col-lg-push-9{left:75%}.wf-col-lg-push-10{left:83.33333%}.wf-col-lg-push-11{left:91.66667%}.wf-col-lg-push-12{left:100%}.wf-col-lg-offset-0{margin-left:0%}.wf-col-lg-offset-1{margin-left:8.33333%}.wf-col-lg-offset-2{margin-left:16.66667%}.wf-col-lg-offset-3{margin-left:25%}.wf-col-lg-offset-4{margin-left:33.33333%}.wf-col-lg-offset-5{margin-left:41.66667%}.wf-col-lg-offset-6{margin-left:50%}.wf-col-lg-offset-7{margin-left:58.33333%}.wf-col-lg-offset-8{margin-left:66.66667%}.wf-col-lg-offset-9{margin-left:75%}.wf-col-lg-offset-10{margin-left:83.33333%}.wf-col-lg-offset-11{margin-left:91.66667%}.wf-col-lg-offset-12{margin-left:100%}.wf-col-lg-half-padding-left{padding-left:8px}.wf-col-lg-half-padding-right{padding-right:7px}}.wrap.wordfence{direction:ltr}@media (min-width: 768px){.wrap.wordfence{max-width:750px}}@media (min-width: 992px){.wrap.wordfence{max-width:970px}}@media (min-width: 1200px){.wrap.wordfence{max-width:1170px}}.wrap.wordfence>.wf-container-fluid{padding-left:0px;padding-right:0px}.wrap.wordfence .button-primary{text-align:center;text-transform:uppercase;font-weight:bold}.wrap.wordfence a{text-decoration:none}.wrap.wordfence a:hover{text-decoration:underline}.wrap.wordfence a.wf-btn:hover{text-decoration:none}.wrap.wordfence p,.wrap.wordfence td,.wrap.wordfence li{font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:.875rem;color:#2d2d2d;line-height:1.3125;font-weight:normal}.wrap.wordfence p strong,.wrap.wordfence td strong,.wrap.wordfence li strong{font-weight:600}.wrap.wordfence p em,.wrap.wordfence td em,.wrap.wordfence li em{font-weight:normal}.wrap.wordfence h1,.wrap.wordfence h2,.wrap.wordfence h3,.wrap.wordfence h4,.wrap.wordfence h5,.wrap.wordfence h6{font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;color:#2d2d2d;font-weight:700}.wrap.wordfence h2{font-size:1.3125rem;line-height:1.5}.wrap.wordfence h3{font-size:1.125rem}.wrap.wordfence h4{font-size:1rem}.wf-inline-help{color:#9f9fa0}.wordfenceWrap{margin:20px 0 0 20px}.wordfence-icon32{width:32px;height:32px;background-position:0 0;background-repeat:no-repeat;padding:0;margin:7px 5px 0 0;float:left}#wfHeading:after{content:'.';visibility:hidden;display:block;clear:both;height:0px}.wordfence-lock-icon{width:32px;height:32px}a.wfhelp{margin:0 3px 0 3px;text-decoration:none;display:inline-block;vertical-align:middle;font:normal normal normal 14px/1 FontAwesome;text-rendering:auto;-webkit-font-smoothing:antialiased}a.wfhelp:before{content:'\f29c'}.wordfence .resulticon{display:block;float:left;width:16px;height:16px;background-position:0 0;background-repeat:no-repeat;border-width:0;padding:0;margin:0 3px 0 0;background-image:url(../images/icons/bullet_yellow.png)}.wordfenceBoldTD{font-weight:bold}.wfAjax24{display:none;width:24px;height:24px;background-image:url(../images/icons/ajax24.gif);margin:0;padding:0}div.wfLoadingWhite32{width:32px;height:32px;background-image:url(../images/icons/ajaxWhite32x32.gif);margin:0;padding:0}.wfTabsContainer{background-color:#FFF;overflow:hidden;border:1px solid #CCC;padding:15px;min-height:200px;-webkit-font-smoothing:antialiased}#wfTabs::after{content:".";display:block;height:0;width:0;line-height:0;clear:both;visibility:hidden}#wfTabs a{float:left;z-index:10;height:18px;margin:0 5px -1px 0;padding:5px 8px;border:1px solid #CCC;text-decoration:none;background-color:#EFEFEF;color:#21759B;-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px}#wfTabs a.selected{border-bottom:1px solid #FFF;background-color:#FFF;color:#777}.wordfenceTopTab{display:none;margin-top:15px}.wordfenceTopTab.active{display:block}.wordfenceHelpLink{margin-top:15px}.wfAjaxLight128{background-image:url(../images/icons/ajax3.gif)}.wfStrong{font-weight:bold}.wordfenceModeElem{width:1px;height:1px;opacity:0}.wfWarn{color:#F00}.wf-flag{display:inline-block;vertical-align:middle;margin:0px 2px 0 0;background-repeat:no-repeat;background-position:center center;width:16px;height:11px;background-image:url(../images/flags.png);-webkit-flex-shrink:0;flex-shrink:0;-webkit-flex-grow:0;flex-grow:0}.wfHitTime{font-style:italic}.wfAvatar img{vertical-align:middle;margin-right:0.5rem}.wf-hex-sequence{color:#587ECB}.wfLoadMoreButton.disabled,.wfLoadMoreButton[disabled]{pointer-events:none;opacity:0.65}table.wfConfigForm th{font-weight:normal;text-align:left;padding:2px 3px 1px 0;vertical-align:middle}table.wfConfigForm td{vertical-align:middle}table.wfConfigForm td.align-top{vertical-align:top}table th.wfConfigEnable{font-weight:bold;min-width:25%}.wfSavedMsg{display:none;color:#A00}table th.wfSubheading{font-weight:bold;padding-top:10px}h3.wfConfigHeading{font-size:22px;color:#777;font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:italic;font-weight:normal}.wfTipText{color:#777;font-family:Georgia,Times New Roman,Times,serif;font-style:italic}.wfBlackCursor{color:#FFF}.wf-spinner{display:inline-block;width:4px}.wferror{color:#F00}#wordfenceWorking{padding:10px 40px 6px 16px;z-index:100000;position:fixed;right:16px;bottom:0px;background-color:#fcb214;border:5px solid #fcb214;border-width:6px 15px 6px 6px;color:#525355;font-size:12px;font-weight:bold;font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;background-image:url("../images/icons/working-indicator.gif");background-position:100% 50%;background-repeat:no-repeat}@media (max-width: 960px){#wordfenceWorking{left:auto;right:0px}}#paidWrap{position:relative}.paidInnerMsg{width:500px;margin:150px auto 0 auto;color:#000;font-size:18px;font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;line-height:1.8em;text-align:center;-webkit-font-smoothing:antialiased}.wfMarker{height:1px;width:1px}.wfPaidOnlyNotice{width:500px;background-color:#FFFFE0;border:1px solid #000;padding:10px;margin:20px}.wfOnOffSwitch{display:inline-block;position:relative !important;width:69px !important;-webkit-user-select:none !important;-moz-user-select:none !important;-ms-user-select:none !important;user-select:none !important}.wfOnOffSwitch-checkbox{display:none !important}.wfOnOffSwitch-label{display:block !important;overflow:hidden !important;cursor:pointer !important;border:2px solid #999999 !important;border-radius:19px !important;margin:0}.wfOnOffSwitch-inner{width:200% !important;margin-left:-100% !important;-webkit-transition:margin 0.3s ease-in !important;-o-transition:margin 0.3s ease-in !important;transition:margin 0.3s ease-in !important;-webkit-transition-delay:0s !important;transition-delay:0s !important}.wfOnOffSwitch-inner:before,.wfOnOffSwitch-inner:after{float:left !important;width:50% !important;height:19px !important;padding:0 !important;line-height:19px !important;font-size:14px !important;color:white !important;font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif !important;font-weight:bold !important;-webkit-box-sizing:border-box !important;-moz-box-sizing:border-box !important;box-sizing:border-box !important;-moz-border-radius:19px !important;-webkit-border-radius:19px;border-radius:19px !important;-webkit-box-shadow:0 9.5px 0 rgba(0,0,0,0.08) inset !important;box-shadow:0 9.5px 0 rgba(0,0,0,0.08) inset !important}.wfOnOffSwitch-inner:before{content:"ON" !important;padding-left:10px !important;background-color:#30D965 !important;color:#FFFFFF !important;-moz-border-radius:19px 0 0 19px !important;-webkit-border-radius:19px;border-radius:19px 0 0 19px !important}.wfOnOffSwitch-inner:after{content:"OFF" !important;padding-right:10px !important;background-color:#EEEEEE !important;color:#999999 !important;text-align:right !important;-moz-border-radius:0 19px 19px 0 !important;-webkit-border-radius:0;border-radius:0 19px 19px 0 !important}.wfOnOffSwitch-switch{width:19px !important;margin:0 !important;background:#FFFFFF !important;border:2px solid #999999 !important;-moz-border-radius:19px !important;-webkit-border-radius:19px;border-radius:19px !important;position:absolute !important;top:0 !important;bottom:0 !important;right:46px !important;-webkit-transition:all 0.3s ease-in !important;-o-transition:all 0.3s ease-in !important;transition:all 0.3s ease-in !important;-webkit-transition-delay:0s !important;transition-delay:0s !important;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwMDAwMCIgc3RvcC1vcGFjaXR5PSIwLjEiLz48c3RvcCBvZmZzZXQ9IjgwJSIgc3RvcC1jb2xvcj0iIzAwMDAwMCIgc3RvcC1vcGFjaXR5PSIwLjAiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyYWQpIiAvPjwvc3ZnPiA=') !important;background-size:100%;background-image:-webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, rgba(0,0,0,0.1)),color-stop(80%, rgba(0,0,0,0))) !important;background-image:-moz-linear-gradient(center top, rgba(0,0,0,0.1) 0%,rgba(0,0,0,0) 80%) !important;background-image:-webkit-linear-gradient(center top, rgba(0,0,0,0.1) 0%,rgba(0,0,0,0) 80%) !important;background-image:linear-gradient(to center bottom, rgba(0,0,0,0.1) 0%,rgba(0,0,0,0) 80%) !important;box-shadow:0 1px 1px white inset !important}.wfOnOffSwitch-checkbox:checked+.wfOnOffSwitch-label .wfOnOffSwitch-inner{margin-left:0 !important}.wfOnOffSwitch-checkbox:checked+.wfOnOffSwitch-label .wfOnOffSwitch-switch{right:0 !important}#wordfenceConfigWarning,#wordfenceAdminEmailWarning{clear:left;margin-top:5px}.wf-striped-table{width:100%;max-width:100%;border-collapse:collapse}.wf-striped-table th{border-left:1px solid #bdbdbd}.wf-striped-table th:first-of-type{border-left:0}.wf-striped-table th,.wf-striped-table td{padding:1rem}.wf-striped-table thead th,.wf-striped-table thead td,.wf-striped-table tfoot th,.wf-striped-table tfoot td,.wf-striped-table tbody.thead th,.wf-striped-table tbody.thead td{background-color:#ebebeb;color:#777;font-weight:bold;text-align:left}.wf-striped-table tbody tr.even td,.wf-striped-table tbody tr:nth-child(2n) td{background-color:#ffffff}.wf-striped-table tbody tr td,.wf-striped-table tbody tr.odd td{background-color:#fafafa}.wf-striped-table tbody tr:hover>td{background-color:#fffbd8}.wf-striped-table tbody.empty-row tr td{border-width:0;padding:8px 0;background-color:transparent}.wf-striped-table .wf-result-error,.wf-block-list .wf-result-error{color:#d0514c !important;font-weight:bold}.wf-striped-table .wf-result-error:before,.wf-block-list .wf-result-error:before{content:"\2718"}.wf-striped-table .wf-result-success{max-width:20%}.wf-striped-table .wf-result-success,.wf-block-list .wf-result-success{color:#008c10 !important;font-weight:bold}.wf-striped-table .wf-result-success:before,.wf-block-list .wf-result-success:before{content:"\2713"}.wf-striped-table .wf-result-success:before,.wf-block-list .wf-result-success:before,.wf-striped-table .wf-result-error:before,.wf-block-list .wf-result-error:before{font-size:16px;display:inline-block;margin:0px 8px 0px 0px}.wf-striped-table .wf-result-inactive,.wf-block-list .wf-result-inactive{font-weight:bold;color:#666666 !important}.wf-fixed-table{table-layout:fixed}pre.wf-pre{margin:8px 0 20px;padding:12px;background:#ffffff;border:1px solid #999999;overflow:auto}.wf-center{text-align:center}#wfConfigForm,.wf-diagnostics-wrapper{max-width:1035px}.wf-hidden{display:none !important}.wf-card{position:relative;margin:0 auto .625rem;padding:1rem;box-sizing:border-box;background:#fff;box-shadow:0 0 0 1px rgba(200,215,225,0.5),0 1px 2px #e9eff3}.wf-card .wf-card-inner{min-height:76px;width:100%;padding:8px;box-sizing:border-box;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;position:relative}.wf-card .wf-card-inner .wf-card-content{max-width:75%}.wf-card .wf-card-inner .wf-card-content .wf-card-title{font-size:1.125rem;width:100%}.wf-card .wf-card-inner .wf-card-content .wf-card-subtitle{margin-top:.125rem;margin-bottom:.125rem;font-size:.875rem;color:#4f748e}.wf-card .wf-card-inner .wf-card-action{position:absolute;top:0;right:0;height:100%;background:none;border:0;outline:0;width:48px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;vertical-align:middle;transition:transform 0.15s cubic-bezier(0.175, 0.885, 0.32, 1.275),color 0.2s ease-in}.wf-card .wf-card-inner .wf-card-action .wf-card-action-chevron{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJjaGV2cm9uLW9iamVjdCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgd2lkdGg9IjI0cHgiIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNCAyNCIKCSB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHBhdGggaWQ9ImNoZXZyb24iIGQ9Ik0yMCA5bC04IDgtOC04IDEuNDE0LTEuNDE0TDEyIDE0LjE3Mmw2LjU4Ni02LjU4NiIvPgo8L3N2Zz4K");background-repeat:no-repeat;background-position:center center;width:24px;height:24px;fill:#87a6bc}.wf-card .wf-card-inner .wf-card-action .wf-card-action-checkbox{background-image:url(../images/checkbox.png);background-repeat:no-repeat;background-position:left center;width:29px;height:29px}.wf-card .wf-card-inner .wf-card-action .wf-card-action-checkbox.checked{background-position:right center}.wf-card .wf-card-extra{display:none;padding:0.5rem;margin-top:1rem;border-top:1px solid #f3f6f8}@media (min-width: 768px){.wf-card .wf-card-extra{padding:1rem}}.wf-card.active .wf-card-extra{display:block}.wf-card.wf-card-left .wf-card-content{margin-left:48px}.wf-card.wf-card-left .wf-card-action{right:auto;left:0px}.wf-card.disabled .wf-card-content .wf-card-title{color:#aaaaaa}.wf-card.disabled .wf-card-content .wf-card-subtitle{color:#8ea6be}.wf-inline-block{display:inline-block}@media (max-width: 767px){.wf-inline-block-xs{display:inline-block}}.wf-full-width{width:100%;max-width:100%}.wf-no-top{margin-top:0 !important}.wf-add-top{margin-top:1rem !important}.wf-add-top-large{margin-top:1.5rem !important}.wf-add-top-medium{margin-top:0.75rem !important}.wf-add-top-small{margin-top:0.5rem !important}.wf-add-top-smaller{margin-top:0.25rem !important}.wf-no-bottom{margin-bottom:0 !important}.wf-add-bottom{margin-bottom:1rem !important}.wf-add-bottom-large{margin-bottom:1.5rem !important}.wf-add-bottom-medium{margin-bottom:0.75rem !important}.wf-add-bottom-small{margin-bottom:0.5rem !important}.wf-add-bottom-smaller{margin-bottom:0.25rem !important}.wf-padding-no-top{padding-top:0 !important}.wf-no-right{margin-right:0 !important}.wf-padding-no-bottom{padding-bottom:0 !important}.wf-padding-no-left{padding-left:0 !important}.wf-padding-no-right{padding-right:0 !important}.wf-padding-add-top{padding-top:1rem !important}.wf-padding-add-top-small{padding-top:0.5rem !important}.wf-padding-add-top-medium{padding-top:0.75rem !important}.wf-padding-add-top-large{padding-top:1.5rem !important}.wf-padding-add-bottom{padding-bottom:1rem !important}.wf-padding-add-bottom-small{padding-bottom:0.5rem !important}.wf-padding-add-bottom-medium{padding-bottom:0.75rem !important}.wf-padding-add-bottom-large{padding-bottom:1.5rem !important}.wf-padding-add-left{padding-left:1rem !important}.wf-padding-add-left-small{padding-left:0.5rem !important}.wf-padding-add-left-medium{padding-left:0.75rem !important}.wf-padding-add-left-large{padding-left:1.5rem !important}.wf-padding-add-right{padding-right:1rem !important}.wf-padding-add-right-small{padding-right:0.5rem !important}.wf-padding-add-right-medium{padding-right:0.75rem !important}.wf-padding-add-right-large{padding-right:1.5rem !important}.wf-left{text-align:left !important}.wf-center{text-align:center !important}.wf-block-center{margin:0 auto}.wf-right{text-align:right !important}.wf-block-right{margin:0 0 0 auto}@media (max-width: 767px){.wf-left-xs{text-align:left !important}.wf-center-xs{text-align:center !important}.wf-padding-add-top-xs{padding-top:1rem !important}.wf-padding-add-top-xs-small{padding-top:0.5rem !important}.wf-padding-add-top-xs-large{padding-top:1.5rem !important}.wf-padding-add-bottom-xs{padding-bottom:1rem !important}.wf-padding-add-bottom-xs-small{padding-bottom:0.5rem !important}.wf-padding-add-bottom-xs-large{padding-bottom:1.5rem !important}}@media (min-width: 768px) and (max-width: 991px){.wf-left-sm{text-align:left !important}.wf-center-sm{text-align:center !important}}@media (min-width: 992px) and (max-width: 1199px){.wf-left-md{text-align:left !important}.wf-center-md{text-align:center !important}.wf-right-md{text-align:right !important}}@media (min-width: 1200px){.wf-left-lg{text-align:left !important}.wf-center-lg{text-align:center !important}.wf-right-lg{text-align:right !important}}.wf-border-no-top{border-top:none !important}.wf-border-no-right{border-right:none !important}.wf-border-no-bottom{border-bottom:none !important}.wf-border-no-left{border-left:none !important}.wf-overflow-x-auto{overflow-x:auto}.wf-overflow-y-auto{overflow-y:auto}@media (max-width: 767px){.wf-overflow-x-auto-xs{overflow-x:auto}.wf-overflow-y-auto-xs{overflow-y:auto}}.wf-gray-dark{color:#2d2d2d !important}.wf-gray-blue{color:#3f596b !important}.wf-green-dark{color:#11967a !important}.wf-green-light{color:#16bc9b !important}.wf-red-dark{color:#930000 !important}.wf-red-light{color:#c10000 !important}.wf-yellow-dark{color:#fcb214 !important}.wf-yellow-light{color:#ffd10a !important}.wf-gray{color:#525355 !important}.wf-gray-light{color:#9f9fa0 !important}.wf-nowrap{white-space:nowrap}.wf-tip{color:#fcb214;font-size:1.1rem;margin-right:0.25rem}.wf-text-small{font-size:80%}.wf-scroll-x::-webkit-scrollbar,.wf-scroll-y::-webkit-scrollbar{-webkit-appearance:none;width:7px;height:7px}.wf-scroll-x::-webkit-scrollbar-thumb,.wf-scroll-y::-webkit-scrollbar-thumb{border-radius:4px;background-color:rgba(0,0,0,0.194);-webkit-box-shadow:0 0 1px rgba(255,255,255,0.5)}.wf-split-word{word-wrap:break-word;word-break:break-all}@media (max-width: 767px){.wf-split-word-xs{word-wrap:break-word;word-break:break-all;white-space:normal !important}}.wfselect2-container{font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;min-width:200px}@media (min-width: 768px){.wfselect2-container{min-width:280px}}@media (min-width: 992px){.wfselect2-container{min-width:340px}}@media (max-width: 767px){.wfselect2-container .wfselect2-search.wfselect2-search--inline{margin:0 !important}}.wf-select2-placeholder-fix .wfselect2-search__field{width:auto !important}#wf-all-options-search .wfselect2-container{min-width:250px}#wf-all-options-search .wf-select2-placeholder-fix .wfselect2-search__field{margin-top:10px !important}.wf-page-title{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;margin-top:0.5rem}.wf-page-title>*{-webkit-flex-grow:0;flex-grow:0;min-width:0}.wf-page-title>*:first-child{-webkit-flex-grow:0;flex-grow:0;min-width:32px;-webkit-flex-basis:32px;flex-basis:32px;padding-right:0.25rem}.wf-page-title .wordfence-icon32{margin:0;margin-right:0.5rem}.wf-page-title h2{padding:0 !important}.wf-page-title .wfOnOffSwitch{-webkit-flex-basis:69px;flex-basis:69px;-webkit-flex-shrink:0;flex-shrink:0;margin-left:0.5rem}.wf-tab-container{background-color:#fff}@media (min-width: 768px){.wf-tab-container{background-color:unset}}.wf-page-tabs,.wf-page-fixed-tabs{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;border-bottom:1px solid #d0d0d0;margin:0;margin-top:0.5rem;margin-left:-10px;margin-right:-10px}@media (min-width: 768px){.wf-page-tabs,.wf-page-fixed-tabs{margin-left:0;margin-right:0}}.wf-page-tabs>*,.wf-page-fixed-tabs>*{-webkit-flex-grow:0;flex-grow:0;min-width:0}.wf-page-tabs>*:first-child,.wf-page-fixed-tabs>*:first-child{-webkit-flex-grow:0;flex-grow:0;min-width:32px;-webkit-flex-basis:32px;flex-basis:32px}.wf-page-tabs .wordfence-icon32,.wf-page-fixed-tabs .wordfence-icon32{margin:0;margin-right:0.5rem;margin-left:0.5rem}@media (min-width: 768px){.wf-page-tabs .wordfence-icon32,.wf-page-fixed-tabs .wordfence-icon32{margin-left:0}}.wf-page-tabs .wf-text-tab,.wf-page-fixed-tabs .wf-text-tab{margin:0;margin-left:0.5rem;color:#333}.wf-page-tabs .wf-tab,.wf-page-fixed-tabs .wf-tab{border:1px solid #fff;border-top-right-radius:0.5rem;border-top-left-radius:0.5rem;border-bottom:none;margin-bottom:-1px;margin-right:0.5rem;color:#333}@media (min-width: 768px){.wf-page-tabs .wf-tab,.wf-page-fixed-tabs .wf-tab{border:1px solid #d0d0d0;background:#e6e6e6}}.wf-page-tabs .wf-tab a,.wf-page-fixed-tabs .wf-tab a{display:block;padding:0.5rem 1rem;font-size:14px;line-height:24px;text-decoration:none;font-weight:bold;color:#333}.wf-page-tabs .wf-tab.wf-active,.wf-page-tabs .wf-tab:hover,.wf-page-fixed-tabs .wf-tab.wf-active,.wf-page-fixed-tabs .wf-tab:hover{border-bottom:1px solid #f1f1f1;background:#f1f1f1;-webkit-box-shadow:none;box-shadow:none}.wf-tab-content{display:none;margin-top:15px}.wf-tab-content.wf-active{display:block}.wf-fixed-tab-content{margin-top:15px}.wf-section-title{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start}.wf-section-title>*{-webkit-flex-grow:0;flex-grow:0;min-width:0}.wf-section-title>h1,.wf-section-title>h2,.wf-section-title>h3,.wf-section-title>h4,.wf-section-title>h5,.wf-section-title>h6{-webkit-flex-grow:1;flex-grow:1;color:#2d2d2d !important;font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif !important;line-height:1.5rem !important;font-weight:700 !important;padding:0 !important;margin:0 !important}@media (min-width: 768px){.wf-section-title>h1,.wf-section-title>h2,.wf-section-title>h3,.wf-section-title>h4,.wf-section-title>h5,.wf-section-title>h6{padding-right:0.25rem !important}}.wf-section-title h2{font-size:1.3125rem;line-height:1.5}.wf-section-title h3{font-size:1.125rem}.wf-section-title h4{font-size:1rem}.wf-section-title .wordfence-icon32{margin:0;margin-right:0.5rem}.wf-status-circular{position:relative}.wf-status-circular-text{position:absolute;left:50%;top:50%;padding:0;margin:0;transform:translate(-50%, -50%);color:#aaa;font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:1.3125rem;font-weight:300;line-height:1.5}.wf-status-circular .wf-status-overlay-text{position:absolute;left:50%;top:50%;padding:0;margin:0;width:200%;text-align:center;transform:translate(-50%, -50%);font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:.875rem;font-weight:normal;line-height:1.3125;opacity:0.0;color:#777}.wf-status-warning,.wf-status-critical,.wf-status-payment-expiring,.wf-status-renewing{width:100px;height:100px;margin-bottom:1rem}.wf-status-warning svg path{fill:#fcb214}.wf-status-critical svg path{fill:#930000}.wf-status-payment-expiring svg rect,.wf-status-payment-expiring svg path{fill:#930000}.wf-status-renewing svg rect,.wf-status-renewing svg path{fill:#11967a}#howGetIPs-preview{color:#8c8c8c}#howGetIPs-preview strong{color:#666}.wf-scrollTop{background:#424242;bottom:30px;right:15px;position:fixed;z-index:999;display:none}.wf-scrollTop a{background:#959595;display:block;padding:4px 5px;line-height:32px;width:32px;color:#ffffff;text-align:center}.wf-back-icon{margin-right:0.75rem;font-size:1.5rem !important}.wf-back-link-chevron{margin-left:1rem}.wf-back-link-chevron:first-of-type{margin-left:0}.wf-back-link{font-weight:bold;text-decoration:none}.wf-premium-link{font-weight:bold}.wf-boolean-switch{border:1px solid #aaa;display:block;cursor:pointer;width:54px;height:30px;min-width:54px;min-height:30px;-moz-border-radius:15px;-webkit-border-radius:15px;border-radius:15px;line-height:30px !important;background-color:#ffffff;position:relative;box-sizing:border-box;transition:background-color 0.2s ease-in-out, border-color 0.2s ease-in-out}@media (min-width: 768px){.wf-boolean-switch{width:34px;height:20px;min-width:34px;min-height:20px;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;line-height:20px !important}}.wf-boolean-switch .wf-boolean-switch-handle{position:relative;display:block;border:1px solid #aaa;background-color:#fff;width:30px;height:30px;min-width:30px;min-height:30px;-moz-border-radius:15px;-webkit-border-radius:15px;border-radius:15px;margin-top:-1px;box-sizing:border-box;left:-1px;transition:border-color 0.2s ease-in-out, left 0.2s ease-in-out}@media (min-width: 768px){.wf-boolean-switch .wf-boolean-switch-handle{width:20px;height:20px;min-width:20px;min-height:20px;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px}}.wf-boolean-switch.wf-active .wf-boolean-switch-handle{left:25px}@media (min-width: 768px){.wf-boolean-switch.wf-active .wf-boolean-switch-handle{left:15px}}.wf-boolean-switch.wf-disabled{pointer-events:none;border-color:#e2e2e2}.wf-boolean-switch.wf-disabled .wf-boolean-switch-handle{border-color:#e2e2e2}.wf-boolean-switch.wf-disabled.wf-active{border-color:#e2e2e2;background-color:#e2e2e2}.wf-boolean-switch.wf-disabled.wf-active .wf-boolean-switch-handle{border-color:#e2e2e2}.wf-option-checkbox,[type=checkbox].wf-option-checkbox+label:before{content:'\f3fd';font-family:"Ionicons" !important;display:block;cursor:pointer;width:30px;height:30px;min-width:30px;min-height:30px;-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;line-height:30px !important;text-align:center !important;background-color:#ffffff !important;box-shadow:0px 0px 0px 1px #aaa;color:#ffffff !important;font-size:30px !important;font-weight:normal !important}@media (min-width: 768px){.wf-option-checkbox,[type=checkbox].wf-option-checkbox+label:before{width:20px;height:20px;min-width:20px;min-height:20px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;line-height:21px !important;font-size:25px !important}}@media (min-width: 768px){.wf-option-checkbox{position:relative}.wf-option-checkbox>*{position:absolute;top:9px;left:50%;transform:translateX(-50%) translateY(-50%)}}.wf-option-radio,[type=radio].wf-option-radio+label:before{content:"\f401";font-family:"Ionicons" !important;display:block;cursor:pointer;width:30px;height:30px;min-width:30px;min-height:30px;line-height:30px !important;text-align:center !important;color:#ccc !important;font-size:30px !important;font-weight:normal !important}@media (min-width: 768px){.wf-option-radio,[type=radio].wf-option-radio+label:before{width:20px;height:20px;min-width:20px;min-height:20px;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;line-height:20px !important}}[type=checkbox].wf-option-checkbox.wf-small+label:before{width:20px;height:20px;min-width:20px;min-height:20px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;line-height:21px !important;font-size:20px !important}[type=radio].wf-option-radio.wf-small+label:before{width:20px;height:20px;min-width:20px;min-height:20px;line-height:21px !important;font-size:20px !important}[type=checkbox].wf-option-checkbox+label:before,[type=radio].wf-option-radio+label:before{text-align:center !important;text-indent:0px;display:inline-block;vertical-align:-6px;margin:0px 5px 0px 0px;font-weight:normal;font-style:normal}[type=checkbox].wf-option-checkbox.wf-small+label:before,[type=radio].wf-option-radio.wf-small+label:before{text-indent:0px;vertical-align:-3px}.wf-option-checkbox.wf-checked,[type=checkbox].wf-option-checkbox:checked+label:before{color:#ffffff !important}.wf-option-checkbox.wf-disabled,[type=checkbox].wf-option-checkbox:disabled+label:before{color:#f1f1f1 !important;box-shadow:0px 0px 0px 1px #e2e2e2 !important;background-color:#f1f1f1 !important}.wf-option-checkbox.wf-checked.wf-disabled,[type=checkbox].wf-option-checkbox:disabled:checked+label:before{color:#777 !important;box-shadow:0px 0px 0px 1px #e2e2e2 !important;background-color:#f1f1f1 !important}.wf-option-radio.wf-checked,[type=radio].wf-option-radio:checked+label:before{content:"\f3a7"}.wf-option-checkbox[type=checkbox],.wf-option-checkbox[type=radio],.wf-option-radio[type=checkbox],.wf-option-radio[type=radio]{position:absolute;left:-9999px}.wf-option-text input[type="text"],input.wf-input-text{text-align:left;width:100%;height:40px;border-radius:0;border:0;background-color:#ffffff;box-shadow:1px 1px 1px 2px rgba(215,215,215,0.65)}.wf-option-text input[type="text"]:placeholder-shown,input.wf-input-text:placeholder-shown{font-style:italic;color:#bfbfbf}::-webkit-input-placeholder{color:#bfbfbf}:-moz-placeholder{color:#bfbfbf;opacity:1}::-moz-placeholder{color:#bfbfbf;opacity:1}:-ms-input-placeholder{color:#bfbfbf}::-ms-input-placeholder{color:#bfbfbf}::placeholder{color:#bfbfbf}.wf-option-premium .wf-option-title,.wf-option-premium .wf-option-title>ul>li,.wf-option.wf-disabled .wf-option-title,.wf-option.wf-disabled .wf-option-title>ul>li{color:#aaa !important}.wf-option-premium .wf-option-checkbox,.wf-option-premium .wf-option-radio,.wf-option.wf-disabled .wf-option-checkbox,.wf-option.wf-disabled .wf-option-radio{opacity:0.5}.wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status .wf-block-labeled-value-value{padding-top:0}.wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status .wf-block-labeled-value-value .wf-fa{font-size:8rem}.wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status .wf-block-labeled-value-value svg{width:160px}.wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status .wf-block-labeled-value-label{font-size:1.35rem;font-weight:300;padding-bottom:0}.wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status-premium .wf-block-labeled-value-value{color:#9f9fa0}.wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status-premium .wf-block-labeled-value-value svg{fill:#9f9fa0}.wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status-premium .wf-block-labeled-value-label{color:#9f9fa0}.wf-indeterminate-progress{-webkit-animation:wf-indeterminate-progress-keyframes 1s steps(8, end) infinite;-o-animation:wf-indeterminate-progress-keyframes 1s steps(8, end) infinite;animation:wf-indeterminate-progress-keyframes 1s steps(8, end) infinite}@-moz-keyframes wf-indeterminate-progress-keyframes{to{-moz-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes wf-indeterminate-progress-keyframes{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes wf-indeterminate-progress-keyframes{to{-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.wf-flex-row{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row}.wf-flex-row.wf-flex-row-full-height{-webkit-align-items:stretch;align-items:stretch}.wf-flex-row.wf-flex-row-vertical-xs{-webkit-flex-direction:column;flex-direction:column}@media (min-width: 768px){.wf-flex-row.wf-flex-row-vertical-xs{-webkit-flex-direction:row;flex-direction:row}}.wf-flex-row .wf-flex-row-1{-webkit-flex-grow:1;flex-grow:1}.wf-flex-row .wf-flex-row-0{-webkit-flex-grow:0;flex-grow:0}.wf-flex-row .wf-flex-col-100,.wf-flex-row .wf-flex-col-xs-100{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-basis:100%;flex-basis:100%;width:100%}@media (min-width: 768px){.wf-flex-row .wf-flex-col-sm-100{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-basis:100%;flex-basis:100%;width:100%}}@media (min-width: 992px){.wf-flex-row .wf-flex-col-md-100{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-basis:100%;flex-basis:100%;width:100%}}@media (min-width: 1200px){.wf-flex-row .wf-flex-col-lg-100{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-basis:100%;flex-basis:100%;width:100%}}.wf-flex-row .wf-flex-col-50,.wf-flex-row .wf-flex-col-xs-50{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-basis:50%;flex-basis:50%;width:50%}@media (min-width: 768px){.wf-flex-row .wf-flex-col-sm-50{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-basis:50%;flex-basis:50%;width:50%}}@media (min-width: 992px){.wf-flex-row .wf-flex-col-md-50{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-basis:50%;flex-basis:50%;width:50%}}@media (min-width: 1200px){.wf-flex-row .wf-flex-col-lg-50{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-basis:50%;flex-basis:50%;width:50%}}.wf-switch{display:-webkit-flex !important;display:flex !important;-webkit-align-items:stretch !important;align-items:stretch !important;-webkit-justify-content:flex-start !important;justify-content:flex-start !important;-webkit-flex-direction:row !important;flex-direction:row !important;margin:0;padding:0}.wf-switch>li{margin:0 !important;padding:0.5rem 0.7rem !important;text-transform:uppercase;cursor:pointer;color:#aaa;font-weight:400;border-top:1px solid #bfbfbf;border-bottom:1px solid #bfbfbf;border-right:1px solid #bfbfbf}.wf-switch>li:first-of-type{border-left:1px solid #bfbfbf;-moz-border-radius-topleft:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px}.wf-switch>li:last-of-type{-moz-border-radius-topright:6px;-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-moz-border-radius-bottomright:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px}.wf-switch>li.wf-active{color:#ffffff;background-color:#00709e}.wf-tooltip,.ui-widget.wf-tooltip{max-width:600px;font-size:0.75rem;overflow-wrap:break-word;opacity:1.0;background-color:#ffffff;border-radius:0.25rem;padding:0.5rem;box-shadow:0 0 6px rgba(0,0,0,0.6)}.wf-widget-learning-mode{border-top:1px solid #eee;margin:0 -1rem;padding:1rem;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;-webkit-flex-direction:row;flex-direction:row}@media (min-width: 768px){.wf-widget-learning-mode{padding:1.5rem}}.wf-widget-learning-mode svg{width:18px}.wf-widget-learning-mode svg path{fill:#aaa}.wf-widget-learning-mode span{padding-left:0.5rem;font-size:.875rem;line-height:1.3125;font-weight:600}.wf-drawer-overlay{position:fixed;top:0px;right:0px;bottom:0px;left:160px;background-color:rgba(0,0,0,0.5);z-index:9980;padding:5rem 0}.folded .wf-drawer-overlay{left:36px}@media only screen and (max-width: 960px){.auto-fold .wf-drawer-overlay{left:36px}}.rtl .wf-drawer-overlay{right:160px;left:0px}.rtl .folded .wf-drawer-overlay{right:36px}@media only screen and (max-width: 960px){.rtl .auto-fold .wf-drawer-overlay{right:36px}}@media screen and (max-width: 782px){.wf-drawer-overlay,.folded .wf-drawer-overlay,.auto-fold .wf-drawer-overlay,.rtl .wf-drawer-overlay,.rtl .folded .wf-drawer-overlay,.rtl .auto-fold .wf-drawer-overlay{left:0px;right:0px}}.wf-drawer{background-color:#ffffff;position:fixed;top:32px;bottom:0px;right:0px;z-index:9981}.wf-drawer .wf-modal{display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column;height:100%}.wf-drawer .wf-modal ul,.wf-drawer .wf-modal li{padding:0;margin:0}.wf-drawer .wf-modal .wf-modal-header{-webkit-flex-shrink:0;flex-shrink:0;min-height:44px;padding:1rem;width:100%;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;position:relative;color:#ffffff}.wf-drawer .wf-modal .wf-modal-header .wf-modal-header-content{max-width:75%}.wf-drawer .wf-modal .wf-modal-header .wf-modal-header-content .wf-modal-title{font-size:1.3125rem;line-height:1.5;font-weight:300;width:100%;transition:color 0.2s ease-in}.wf-drawer .wf-modal .wf-modal-header .wf-modal-header-content .wf-modal-subtitle{margin-top:.125rem;margin-bottom:.125rem;font-size:.575rem;color:#4f748e}.wf-drawer .wf-modal .wf-modal-content{-webkit-flex-grow:1;flex-grow:1;display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column;padding:1rem}.wf-drawer .wf-modal .wf-modal-content>*:first-child{margin-top:0}.wf-drawer .wf-modal .wf-modal-content select,.wf-drawer .wf-modal .wf-modal-content select option,.wf-drawer .wf-modal .wf-modal-content .wfselect2-container--default{font-size:0.7rem;font-weight:bold}@media (min-width: 768px){.wf-drawer .wf-modal .wf-modal-content select,.wf-drawer .wf-modal .wf-modal-content select option,.wf-drawer .wf-modal .wf-modal-content .wfselect2-container--default{font-size:0.8rem}}@media (min-width: 992px){.wf-drawer .wf-modal .wf-modal-content select,.wf-drawer .wf-modal .wf-modal-content select option,.wf-drawer .wf-modal .wf-modal-content .wfselect2-container--default{font-size:0.9rem}}.wf-drawer .wf-modal .wf-modal-content .wf-option-select-option,.wf-drawer .wf-modal .wf-modal-content .wfselect2-container--default,.wf-drawer .wf-modal .wf-modal-content .wfselect2-container--default .wfselect2-selection--single{text-align:left;height:40px;border-radius:0;border:0;background-color:#ffffff;box-shadow:1px 1px 1px 2px rgba(215,215,215,0.35)}.wf-drawer .wf-modal .wf-modal-content .wf-option-select-option .wfselect2-selection__rendered,.wf-drawer .wf-modal .wf-modal-content .wfselect2-container--default .wfselect2-selection__rendered,.wf-drawer .wf-modal .wf-modal-content .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__rendered{color:#333;line-height:40px}.wf-drawer .wf-modal .wf-modal-content .wf-option-select-option .wfselect2-selection__arrow,.wf-drawer .wf-modal .wf-modal-content .wfselect2-container--default .wfselect2-selection__arrow,.wf-drawer .wf-modal .wf-modal-content .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow{height:38px}.wf-drawer .wf-modal .wf-modal-content .wf-option-select-option.wfselect2-container--disabled .wfselect2-selection__rendered,.wf-drawer .wf-modal .wf-modal-content .wfselect2-container--default.wfselect2-container--disabled .wfselect2-selection__rendered,.wf-drawer .wf-modal .wf-modal-content .wfselect2-container--default .wfselect2-selection--single.wfselect2-container--disabled .wfselect2-selection__rendered{color:#aaa}.wf-drawer .wf-modal .wf-modal-content .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow b{border-color:#333 transparent transparent}.wf-drawer .wf-modal .wf-modal-content .wfselect2-container--default.wfselect2-container--open .wfselect2-selection--single .wfselect2-selection__arrow b{border-color:transparent transparent #333}.wf-drawer .wf-modal .wf-modal-footer{-webkit-flex-shrink:0;flex-shrink:0;min-height:44px;padding:1rem;width:100%;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;position:relative;background-color:#f1f1f1;border-top:1px solid #d9d9d9}.wf-mobile-menu-overlay{position:fixed;top:0px;right:0px;bottom:0px;left:0px;background-color:rgba(0,0,0,0.5);z-index:100000}.wf-mobile-menu-overlay>.wf-mobile-menu-tap-hint{position:absolute;top:25%;left:50%;transform:translateX(-50%);color:#ffffff;font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:1.3125rem;font-weight:300;line-height:1.5}.wf-mobile-menu{position:fixed;left:50%;transform:translateX(-50%);z-index:100001}.wf-mobile-menu>.wf-mobile-menu-items{margin:0;padding:0 0 0.25rem 0;list-style:none}.wf-mobile-menu>.wf-mobile-menu-items>li{margin:0;padding:0.25rem 0}.wf-mobile-menu>.wf-mobile-menu-items>li>a{box-sizing:border-box}.wf-circle-tooltip.ui-tooltip{padding:0;font-size:0.7rem;max-width:400px;border:1px solid #9f9fa0;position:absolute !important;z-index:3000;opacity:1.0;-moz-border-radius:6px;-webkit-border-radius:6px;border-radius:6px}.wf-circle-tooltip.ui-tooltip h4{margin:0 0 10px}.wf-circle-tooltip.ui-tooltip ul{margin:10px 0}.wf-circle-tooltip.ui-tooltip p{font-size:0.7rem;margin:10px 0 0}.wf-circle-tooltip.ui-tooltip a{text-decoration:none}.wf-circle-tooltip.ui-tooltip a:hover{text-decoration:underline}.wf-circle-tooltip.ui-tooltip .wf-circle-tooltip-header,.wf-circle-tooltip.ui-tooltip .wf-circle-tooltip-body{padding:12px}.wf-circle-tooltip.ui-tooltip .wf-circle-tooltip-header{-moz-border-radius:6px 6px 0px 0px;-webkit-border-radius:6px;border-radius:6px 6px 0px 0px;background-color:#f1f1f1}.wf-circle-tooltip.ui-tooltip .wf-circle-tooltip-header h4{margin:0;font-size:0.8rem}.wf-circle-tooltip.ui-tooltip .wf-circle-tooltip-body .wf-tooltip-status-circle{position:relative;padding:0 10px 0 0}.wf-circle-tooltip.ui-tooltip .wf-circle-tooltip-body .wf-tooltip-status-circle .wf-status-overlay-text{display:none}.wf-circle-tooltip.ui-tooltip .wf-circle-tooltip-body ul li strong{width:20%}.wf-circle-tooltip.ui-tooltip .wf-circle-tooltip-body ul li span{width:80%}.wf-circle-tooltip.ui-tooltip .wf-circle-tooltip-block{position:relative;background-color:#fff;z-index:3001;-moz-border-radius:6px;-webkit-border-radius:6px;border-radius:6px}.wf-circle-tooltip.ui-tooltip .wf-circle-tooltip-block:after{content:'';position:absolute;bottom:-20px;left:20px;width:0;height:0;border-left:20px solid transparent;border-right:20px solid transparent;border-top:20px solid #fff}.wf-circle-tooltip.ui-tooltip:after{content:'';position:absolute;bottom:-22px;left:18px;width:0;height:0;border-left:22px solid transparent;border-right:22px solid transparent;border-top:22px solid rgba(0,0,0,0.5);filter:blur(2px)}.wf-circle-tooltip.ui-tooltip.wf-tooltip-vertical-top:after{top:-22px;bottom:auto;border-left:22px solid transparent;border-right:22px solid transparent;border-bottom:22px solid rgba(0,0,0,0.5);border-top-width:0}.wf-circle-tooltip.ui-tooltip.wf-tooltip-vertical-top .wf-circle-tooltip-block:after{top:-20px;bottom:auto;border-left:20px solid transparent;border-right:20px solid transparent;border-bottom:20px solid #f1f1f1;border-top-width:0}.wf-circle-tooltip.ui-tooltip.wf-tooltip-vertical-top.wf-tooltip-horizontal-right:after{left:auto;right:18px}.wf-circle-tooltip.ui-tooltip.wf-tooltip-vertical-top.wf-tooltip-horizontal-right .wf-circle-tooltip-block:after{left:auto;right:20px}.wf-circle-tooltip.ui-tooltip.wf-tooltip-vertical-bottom.wf-tooltip-horizontal-right:after{left:auto;right:18px}.wf-circle-tooltip.ui-tooltip.wf-tooltip-vertical-bottom.wf-tooltip-horizontal-right .wf-circle-tooltip-block:after{left:auto;right:20px}#wf-mobile-controls{white-space:nowrap;font-size:1.2rem}.wf-callout-warning{background-color:#feecc4;padding:0.8rem 1.25rem}.wf-tip-light-bulb{color:#fcb214;font-size:1.5rem;font-weight:bold}.wf-tip-info-message{padding-left:0.5rem !important;font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:.875rem;color:#2d2d2d;line-height:1.3125;font-weight:normal}.wf-overdue-cron td{background-color:#fff4f4 !important}.wf-inline-notice{background:#ffffff;border:1px solid #ccd0d4;border-left-color:#ffb900;border-left-width:4px;box-shadow:0 1px 1px rgba(0,0,0,0.04);padding:8px 12px;display:flex;justify-content:flex-start;align-items:center}.wf-inline-notice>*{flex-grow:1}.wf-inline-notice:first-child{flex-grow:0;flex-shrink:0}.wf-inline-notice span{padding-left:0.5rem}.wf-block{position:relative;margin:0 auto 0.5rem;padding:0 1rem;box-sizing:border-box;background-color:#fff;box-shadow:0 0 0 1px rgba(200,215,225,0.25),0 1px 2px #e9eff3}@media (min-width: 768px){.wf-block{padding:0 1.5rem}}.wf-block.wf-block-no-padding{padding:0}.wf-block.wf-block-transparent{background-color:transparent;box-shadow:none}.wf-block .wf-block-banner{min-height:44px;margin:0 -1rem;padding:0;box-sizing:border-box;position:relative;background-color:#fcb214;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-direction:row;flex-direction:row}.wf-block .wf-block-banner>li{margin:0;padding:0.75rem 1rem}@media (min-width: 768px){.wf-block .wf-block-banner{margin:0 -1.5rem}.wf-block .wf-block-banner>li{padding:0.75rem 1.5rem}}.wf-block .wf-block-header{min-height:44px;padding:1rem 0;width:100%;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;position:relative}.wf-block .wf-block-header .wf-block-header-content{max-width:75%}.wf-block .wf-block-header .wf-block-header-content .wf-block-title{font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:0.9rem;width:100%;transition:color 0.2s ease-in}.wf-block .wf-block-header .wf-block-header-content .wf-block-subtitle{margin-top:.125rem;margin-bottom:.125rem;font-size:0.775rem}.wf-block .wf-block-header .wf-block-header-action{position:absolute;top:0;right:0;height:100%;background:none;border:0;outline:0;width:48px;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-end;justify-content:flex-end;vertical-align:middle;transition:transform 0.15s cubic-bezier(0.175, 0.885, 0.32, 1.275),color 0.2s ease-in}.wf-block .wf-block-header .wf-block-header-action.wf-block-header-action-text{width:auto}.wf-block .wf-block-header .wf-block-header-action.wf-block-header-action-text.wf-block-header-action-text-success{color:#11967a}.wf-block .wf-block-header .wf-block-header-action.wf-block-header-action-text.wf-block-header-action-text-warning{color:#930000}.wf-block .wf-block-header .wf-block-header-action.wf-block-header-action-text.wf-block-header-action-text-warning a{color:#930000}.wf-block .wf-block-header .wf-block-header-action .wf-block-header-action-chevron{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJjaGV2cm9uLW9iamVjdCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgd2lkdGg9IjI0cHgiIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNCAyNCIKCSB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHBhdGggaWQ9ImNoZXZyb24iIGQ9Ik0yMCA5bC04IDgtOC04IDEuNDE0LTEuNDE0TDEyIDE0LjE3Mmw2LjU4Ni02LjU4NiIvPgo8L3N2Zz4K");background-repeat:no-repeat;background-position:center center;width:24px;height:24px}.wf-block .wf-block-header .wf-block-header-action .wf-block-header-action-disclosure{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJkaXNjbG9zdXJlLWNsb3NlZC1vYmplY3QiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSIxMnB4IiBoZWlnaHQ9IjEycHgiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMTIgMTIiCgkgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxwYXRoIGlkPSJkaXNjbG9zdXJlLWNsb3NlZCIgZD0iTSA2IDAgbCA2IDYgLTYgNiAwIC0xMiIgZmlsbD0iIzc3NyIvPgo8L3N2Zz4=");background-repeat:no-repeat;background-position:center center;width:12px;height:12px;transition:transform 0.15s cubic-bezier(0.175, 0.885, 0.32, 1.275),background 0.2s ease-in}.wf-block .wf-block-header .wf-block-header-action .wf-block-header-action-checkbox{background-image:url(../images/checkbox.png);background-repeat:no-repeat;background-position:left center;width:29px;height:29px}.wf-block .wf-block-header .wf-block-header-action .wf-block-header-action-checkbox.wf-checked{background-position:right center}.wf-block .wf-block-content{display:none;margin:0 -1rem;padding:0 1rem}@media (min-width: 768px){.wf-block .wf-block-content{margin:0 -1.5rem;padding:0 1.5rem}}.wf-block .wf-block-content .wf-block-list{margin:0 -1rem;padding:0;list-style:none}@media (min-width: 768px){.wf-block .wf-block-content .wf-block-list{margin:0 -1.5rem}}.wf-block .wf-block-content .wf-block-list.wf-block-list-striped>li:nth-of-type(odd){background-color:#f9f9f9}.wf-block .wf-block-content .wf-block-list.wf-block-list-striped>li:nth-of-type(even){background-color:#ffffff}.wf-block .wf-block-content .wf-block-list>li{display:block;min-height:44px;padding:0 1rem;margin:0;border-top:1px solid #e2e2e2;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between}@media (min-width: 768px){.wf-block .wf-block-content .wf-block-list>li{padding:0 1.5rem}}.wf-block .wf-block-content .wf-block-list>li>*:first-child{-webkit-flex-grow:1;flex-grow:1;min-width:0}.wf-block .wf-block-content .wf-block-list.wf-block-list-horizontal{box-sizing:border-box;margin-top:-1px;display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-wrap:wrap;flex-wrap:wrap}.wf-block .wf-block-content .wf-block-list.wf-block-list-horizontal>li{-webkit-flex-grow:1;flex-grow:1;-webkit-flex-basis:100%;flex-basis:100%;border-left:1px solid #e2e2e2}@media (min-width: 768px){.wf-block .wf-block-content .wf-block-list.wf-block-list-horizontal>li{-webkit-flex-basis:50%;flex-basis:50%}}@media (min-width: 992px){.wf-block .wf-block-content .wf-block-list.wf-block-list-horizontal>li{-webkit-flex-basis:25%;flex-basis:25%}}.wf-block .wf-block-content .wf-block-list.wf-block-list-horizontal.wf-block-list-nowrap{overflow-y:auto;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.wf-block .wf-block-content .wf-block-list.wf-block-list-horizontal.wf-block-list-nowrap>li{-webkit-flex-shrink:0;flex-shrink:0}.wf-block .wf-block-content .wf-block-list.wf-block-list-horizontal.wf-block-list-horizontal-5>li{-webkit-flex-grow:1;flex-grow:1;-webkit-flex-basis:20%;flex-basis:20%}.wf-block .wf-block-content .wf-block-list.wf-block-list-horizontal>*:first-child{border-left:0}@media (min-width: 768px){.wf-block .wf-block-content .wf-block-list.wf-block-list-horizontal.wf-block-list-equal>li{max-width:50%}}@media (min-width: 992px){.wf-block .wf-block-content .wf-block-list.wf-block-list-horizontal.wf-block-list-equal>li{max-width:25%}}.wf-block .wf-block-content .wf-block-list.wf-block-list-horizontal.wf-block-list-horizontal-5.wf-block-list-equal>li{max-width:20%}.wf-block .wf-block-content .wf-block-list .wf-block-list-state{text-align:center}@media (min-width: 1200px){.wf-block .wf-block-content .wf-block-list .wf-block-list-state{text-align:left}}.wf-block .wf-block-content .wf-block-list .wf-block-list-state-enabled .wf-fa{color:#11967a}.wf-block .wf-block-content .wf-block-list .wf-block-list-state-disabled .wf-fa{color:#525355}.wf-block .wf-block-content .wf-block-list .wf-block-list-state-premium{color:#9f9fa0}.wf-block .wf-block-content .wf-block-list .wf-block-list-dismiss{padding-left:2rem;font-size:1.25rem}.wf-block .wf-block-content .wf-block-list .wf-block-list-dismiss a{color:#525355}.wf-block .wf-block-content:first-child>.wf-block-list>li:first-child{border-top:none}.wf-block .wf-block-content .wf-block-left-right{margin:0 -1rem;padding:0;list-style:none;display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-wrap:wrap;flex-wrap:wrap}@media (min-width: 768px){.wf-block .wf-block-content .wf-block-left-right{margin:0 -1.5rem}}.wf-block .wf-block-content .wf-block-left-right.wf-block-left-right-nowrap{-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.wf-block .wf-block-content .wf-block-left-right>li{display:block;min-height:44px;padding:0;margin:0;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between}.wf-block .wf-block-content .wf-block-left-right>li>*:first-child{-webkit-flex-grow:1;flex-grow:1;min-width:0}.wf-block .wf-block-content .wf-block-left-right>li.wf-left{text-align:left}.wf-block .wf-block-content .wf-block-left-right>li.wf-right{text-align:right}.wf-block .wf-block-content .wf-block-left-center-right{margin:0 -1rem;padding:0;list-style:none;display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-align-content:center;align-content:center;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.wf-block .wf-block-content .wf-block-left-center-right>li{display:block;min-height:44px;padding:0;margin:0;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-grow:1;flex-grow:1;-webkit-flex-basis:33.3333%;flex-basis:33.3333%;max-width:33.3333%}.wf-block .wf-block-content .wf-block-left-center-right>li a{text-decoration:none;font-size:.875rem}.wf-block .wf-block-content .wf-block-left-center-right>li.wf-left{text-align:left}.wf-block .wf-block-content .wf-block-left-center-right>li.wf-center{text-align:center;-webkit-justify-content:center;justify-content:center}.wf-block .wf-block-content .wf-block-left-center-right>li.wf-center .wordfence-icon32{margin:0}.wf-block .wf-block-content .wf-block-left-center-right>li.wf-right{text-align:right;-webkit-justify-content:flex-end;justify-content:flex-end}.wf-block .wf-block-content .wf-block-labeled-value{box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-direction:column;flex-direction:column;margin:0 -1rem;padding:1rem}@media (min-width: 768px){.wf-block .wf-block-content .wf-block-labeled-value{margin:0 -1.5rem;padding:1.5rem}}.wf-block .wf-block-content .wf-block-labeled-value-value{font-size:3rem;line-height:3rem;color:#9f9fa0;padding:1rem}.wf-block .wf-block-content .wf-block-labeled-value-label{font-size:0.75rem;color:#9f9fa0;padding:0 1rem 1rem 1rem}.wf-block.wf-block-no-header .wf-block-content .wf-block-list>li{border-top:none}.wf-block.wf-active .wf-block-content,.wf-block.wf-always-active .wf-block-content{display:block}.wf-block.wf-active>.wf-block-header>.wf-block-header-content>.wf-block-header-action>.wf-block-header-action-disclosure{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJkaXNjbG9zdXJlLWNsb3NlZC1vYmplY3QiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSIxMnB4IiBoZWlnaHQ9IjEycHgiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMTIgMTIiCgkgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxwYXRoIGlkPSJkaXNjbG9zdXJlLWNsb3NlZCIgZD0iTSA2IDAgbCA2IDYgLTYgNiAwIC0xMiIgZmlsbD0iIzAwNzA5ZSIvPgo8L3N2Zz4=") !important;transform:rotate(90deg)}.wf-block.wf-disabled>.wf-block-header>.wf-block-header-content>.wf-block-title,.wf-block.wf-disabled>.wf-block-header>.wf-block-header-content>.wf-block-subtitle{color:#bfbfbf !important}.wf-block.wf-disabled>.wf-block-header>.wf-block-header-content>.wf-block-header-action>.wf-block-header-action-disclosure{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJkaXNjbG9zdXJlLWNsb3NlZC1vYmplY3QiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSIxMnB4IiBoZWlnaHQ9IjEycHgiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMTIgMTIiCgkgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxwYXRoIGlkPSJkaXNjbG9zdXJlLWNsb3NlZCIgZD0iTSA2IDAgbCA2IDYgLTYgNiAwIC0xMiIgZmlsbD0iI2JkYmRiZCIvPgo8L3N2Zz4=") !important;transform:rotate(0deg)}.wf-block.wf-disabled>.wf-block-content{display:none !important}.wf-block.wf-block-header-left .wf-block-header-content{margin-left:48px}.wf-block.wf-block-header-left .wf-block-header-action{right:auto;left:0px}.wf-block.wf-disabled .wf-dashboard-item-content .wf-block-title{color:#aaaaaa}.wf-block.wf-disabled .wf-dashboard-item-content .wf-block-subtitle{color:#8ea6be}.wf-section-title{margin-bottom:1rem}.wf-status-detail{box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-direction:column;flex-direction:column;margin:0 -1rem;padding:1rem}.wf-status-detail p{margin:0 0 0.45rem 0}.wf-status-detail .wf-status-circular{margin-bottom:1rem}.wf-status-detail .wf-status-detail-title{font-weight:700 !important;font-size:1rem !important;line-height:1.3125 !important}.wf-status-detail .wf-status-detail-subtitle{font-size:.875rem !important;line-height:1.3125 !important;font-weight:normal !important;text-align:center}.wf-status-detail .wf-status-detail-link>a{font-weight:600 !important;font-size:0.85rem !important}.wf-block-navigation-option{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.wf-block-navigation-option svg.wf-block-navigation-option-icon{width:50px;min-width:50px;fill:#9f9fa0}.wf-block-navigation-option:hover{cursor:pointer}.wf-block-navigation-option:hover a{text-decoration:underline}.wf-select-group{display:-webkit-flex !important;display:flex !important;-webkit-align-items:center !important;align-items:center !important;-webkit-justify-content:flex-start !important;justify-content:flex-start !important;-webkit-flex-direction:row !important;flex-direction:row !important;-webkit-flex-grow:0 !important;flex-grow:0 !important}.wf-select-group .wfselect2-container{min-width:200px}@media (max-width: 767px){.wf-select-group .wfselect2-container{max-width:100px}}.wf-select-group .wfselect2-container--default .wfselect2-selection--single{display:block;width:100%;height:38px;padding:.5rem 1.25rem;font-size:14px;line-height:1.42857;color:#2b2b2b;background-color:#fff;background-image:none;border:1px solid #ddd;border-radius:4px;border-top-right-radius:0;border-bottom-right-radius:0;border-right:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;-o-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s}.wf-select-group .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__rendered{color:#2b2b2b;line-height:inherit}.wf-select-group .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow{height:38px}.wf-select-group .wf-form-control{display:inline-block;width:auto;border-top-left-radius:0;border-bottom-left-radius:0;margin-left:0}.wf-flex-horizontal{display:-webkit-flex !important;display:flex !important;-webkit-align-items:center !important;align-items:center !important;-webkit-justify-content:flex-start !important;justify-content:flex-start !important;-webkit-flex-direction:row !important;flex-direction:row !important}.wf-flex-horizontal>*:first-child{-webkit-flex-grow:0 !important;flex-grow:0 !important}.wf-flex-horizontal.wf-flex-align-left{-webkit-align-items:flex-start !important;align-items:flex-start !important}.wf-flex-horizontal.wf-flex-align-right{-webkit-justify-content:flex-end !important;justify-content:flex-end !important}.wf-flex-horizontal.wf-flex-full-width{width:100%}.wf-flex-horizontal.wf-flex-full-width>*:last-child{-webkit-flex-grow:1 !important;flex-grow:1 !important}.wf-flex-horizontal.wf-flex-full-width.wf-flex-grow-first>*:first-child{-webkit-flex-grow:1 !important;flex-grow:1 !important}.wf-flex-horizontal.wf-flex-full-width.wf-flex-grow-first>*:last-child{-webkit-flex-grow:0 !important;flex-grow:0 !important}.wf-flex-horizontal.wf-flex-full-width.wf-flex-grow-all>*:first-child,.wf-flex-horizontal.wf-flex-full-width.wf-flex-grow-all>*{-webkit-flex-grow:1 !important;flex-grow:1 !important}.wf-flex-horizontal>li{padding:0;margin:0}.wf-flex-vertical{display:-webkit-flex !important;display:flex !important;-webkit-align-items:center !important;align-items:center !important;-webkit-justify-content:flex-start !important;justify-content:flex-start !important;-webkit-flex-direction:column !important;flex-direction:column !important}.wf-flex-vertical>*:first-child{-webkit-flex-grow:0 !important;flex-grow:0 !important}.wf-flex-vertical.wf-flex-align-left{-webkit-align-items:flex-start !important;align-items:flex-start !important}.wf-flex-vertical.wf-flex-align-right{-webkit-align-items:flex-end !important;align-items:flex-end !important}.wf-flex-vertical.wf-flex-full-width{-webkit-align-items:stretch !important;align-items:stretch !important}@media (max-width: 767px){.wf-flex-vertical.wf-flex-align-left-xs{-webkit-align-items:flex-start !important;align-items:flex-start !important}}@media (min-width: 768px) and (max-width: 991px){.wf-flex-vertical.wf-flex-align-left-sm{-webkit-align-items:flex-start !important;align-items:flex-start !important}}@media (min-width: 992px) and (max-width: 1199px){.wf-flex-vertical.wf-flex-align-left-md{-webkit-align-items:flex-start !important;align-items:flex-start !important}}@media (min-width: 1200px){.wf-flex-vertical.wf-flex-align-left-lg{-webkit-align-items:flex-start !important;align-items:flex-start !important}}.wf-flex-vertical>li{padding:0;margin:0}@media (max-width: 767px){.wf-flex-vertical-xs{display:-webkit-flex !important;display:flex !important;-webkit-align-items:center !important;align-items:center !important;-webkit-justify-content:flex-start !important;justify-content:flex-start !important;-webkit-flex-direction:column !important;flex-direction:column !important}.wf-flex-vertical-xs>*:first-child{-webkit-flex-grow:0 !important;flex-grow:0 !important}.wf-flex-vertical-xs.wf-flex-align-left{-webkit-align-items:flex-start !important;align-items:flex-start !important}.wf-flex-vertical-xs.wf-flex-align-right{-webkit-align-items:flex-end !important;align-items:flex-end !important}.wf-flex-vertical-xs.wf-flex-full-width{-webkit-align-items:stretch !important;align-items:stretch !important}}ul.wf-option,.wf-form-field{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;flex-wrap:nowrap;padding:1rem 0;position:relative}ul.wf-option li,.wf-form-field li{margin:0;padding:0}ul.wf-option.wf-option-no-spacing,.wf-form-field.wf-option-no-spacing{padding:0;margin:0}ul.wf-option.wf-option-toggled>*:last-child,ul.wf-option.wf-option-footer>*:last-child,.wf-form-field.wf-option-toggled>*:last-child,.wf-form-field.wf-option-footer>*:last-child{margin-right:1rem}@media (max-width: 768px){ul.wf-option.wf-option-footer,.wf-form-field.wf-option-footer{-webkit-flex-direction:column;flex-direction:column}}ul.wf-option>.wf-option-content,.wf-form-field>.wf-option-content{-webkit-flex-grow:1;flex-grow:1}ul.wf-option>.wf-option-content>ul,.wf-form-field>.wf-option-content>ul{display:-webkit-flex;display:flex;-webkit-align-items:flex-start;align-items:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column;-webkit-flex-wrap:nowrap;flex-wrap:nowrap;width:100%}ul.wf-option>.wf-option-content>ul>*:first-child,.wf-form-field>.wf-option-content>ul>*:first-child{-webkit-flex-grow:1;flex-grow:1}@media (min-width: 768px){ul.wf-option>.wf-option-content>ul,.wf-form-field>.wf-option-content>ul{-webkit-flex-direction:row;flex-direction:row;-webkit-align-items:center;align-items:center}}ul.wf-option.wf-option-toggled-segmented *,.wf-form-field.wf-option-toggled-segmented *{-webkit-flex-grow:0;flex-grow:0}ul.wf-option.wf-option-toggled-segmented *:first-child,.wf-form-field.wf-option-toggled-segmented *:first-child{-webkit-flex-grow:1;flex-grow:1}ul.wf-option.wf-option-toggled-segmented>*:last-child,.wf-form-field.wf-option-toggled-segmented>*:last-child{margin-left:1rem}ul.wf-option.wf-option-toggled-segmented .wf-option-title,.wf-form-field.wf-option-toggled-segmented .wf-option-title{font-size:.8rem}ul.wf-option.wf-option-toggled-segmented .wf-option-segments,.wf-form-field.wf-option-toggled-segmented .wf-option-segments{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-align-content:stretch;align-content:stretch;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label{-webkit-flex-grow:1;flex-grow:1;-webkit-flex-basis:50%;flex-basis:50%;display:block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;text-transform:uppercase;padding:.5rem 1.25rem;font-size:14px;line-height:1.42857;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border-radius:0}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-segment-first,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-segment-first{border-radius:4px 0 0 4px}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-segment-last,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-segment-last{border-radius:0 4px 4px 0}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio],.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]{position:absolute;left:-9999px}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:disabled+label,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:disabled+label{cursor:not-allowed;filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=65);opacity:.65}ul.wf-option.wf-option-toggled-multiple>.wf-option-content>ul,.wf-form-field.wf-option-toggled-multiple>.wf-option-content>ul{-webkit-flex-direction:column;flex-direction:column;-webkit-align-items:flex-start;align-items:flex-start}ul.wf-option>.wf-option-spacer,.wf-form-field>.wf-option-spacer{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-shrink:0;flex-shrink:0;margin:0 1rem 0 0;width:30px;height:30px}@media (min-width: 768px){ul.wf-option>.wf-option-spacer,.wf-form-field>.wf-option-spacer{margin:0 2rem 0 1rem;width:20px;height:20px}}ul.wf-option>.wf-option-premium-lock,.wf-form-field>.wf-option-premium-lock{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-shrink:0;flex-shrink:0;background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIzMHB4IiB2aWV3Qm94PSIwIDAgMjQgMzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTxwYXRoIGQ9Ik0yMy45NDksMTQuMjMzYy0wLjM3OSwtMC4zOSAtMC45MDQsLTAuNjA2IC0xLjQ0OCwtMC41OTVsLTAuNjgzLDBsMCwtNC4wOTJjMC4wMzIsLTIuNTM1IC0wLjk4NiwtNC45NzMgLTIuODEyLC02LjczMWMtMS43NTksLTEuODI4IC00LjE5OCwtMi44NDcgLTYuNzM0LC0yLjgxNWMtMi41MzYsLTAuMDMyIC00Ljk3NiwwLjk4NyAtNi43MzQsMi44MTVjLTEuODI2LDEuNzU4IC0yLjg0NCw0LjE5NiAtMi44MTIsNi43MzFsMCw0LjA4OWwtMC42OCwwYy0wLjU0NCwtMC4wMTEgLTEuMDY5LDAuMjA1IC0xLjQ0OCwwLjU5NWMtMC4zOTUsMC4zODIgLTAuNjEyLDAuOTEyIC0wLjU5OCwxLjQ2MWwwLDEyLjI2NmMtMC4wMTEsMC41NDQgMC4yMDQsMS4wNjkgMC41OTUsMS40NDhjMC4zNzksMC4zOTEgMC45MDQsMC42MDYgMS40NDgsMC41OTVsMjAuNDU4LDBjMC4wMDMsMCAwLjAwNiwwIDAuMDEsMGMxLjExNywwIDIuMDM2LC0wLjkxOSAyLjAzNiwtMi4wMzdjMCwtMC4wMDMgMCwtMC4wMDYgMCwtMC4wMDlsMCwtMTIuMjYzYzAuMDExLC0wLjU0NCAtMC4yMDYsLTEuMDY5IC0wLjU5OCwtMS40NDhsMCwtMC4wMVptLTYuMjExLC0wLjU5NWwtMTAuOTE5LDBsMCwtNC4wOTJjLTAuMDIyLC0xLjQ1MSAwLjU1NywtMi44NDggMS41OTksLTMuODU4YzEuMDA5LC0xLjA0MiAyLjQwNywtMS42MjEgMy44NTcsLTEuNTk4YzEuNDUxLC0wLjAyMyAyLjg0OCwwLjU1NiAzLjg1OCwxLjU5OGMxLjA0MiwxLjAwOSAxLjYyMSwyLjQwNyAxLjU5OCwzLjg1OGwwLjAwNyw0LjA5MloiIGZpbGw9IiNkMWQxZDEiLz4KPC9zdmc+");background-repeat:no-repeat;background-position:center center;background-size:contain;margin:0 1rem 0 0;width:30px;height:30px}@media (min-width: 768px){ul.wf-option>.wf-option-premium-lock,.wf-form-field>.wf-option-premium-lock{margin:0 2rem 0 1rem;width:20px;height:20px}}ul.wf-option>.wf-option-checkbox,.wf-form-field>.wf-option-checkbox{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-shrink:0;flex-shrink:0;margin:0 1rem 0 0}@media (min-width: 768px){ul.wf-option>.wf-option-checkbox,.wf-form-field>.wf-option-checkbox{margin:0 2rem 0 1rem}}ul.wf-option>.wf-boolean-switch,.wf-form-field>.wf-boolean-switch{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-shrink:0;flex-shrink:0;margin:0 1rem 0 0}@media (min-width: 768px){ul.wf-option>.wf-boolean-switch,.wf-form-field>.wf-boolean-switch{margin:0 1rem 0 1rem}}ul.wf-option.wf-option-no-spacing>.wf-boolean-switch,.wf-form-field.wf-option-no-spacing>.wf-boolean-switch{margin:0}ul.wf-option>.wf-option-radio-container,.wf-form-field>.wf-option-radio-container{-webkit-flex-grow:0;flex-grow:0;-webkit-flex-shrink:0;flex-shrink:0;margin:0 1rem 0 0}@media (min-width: 768px){ul.wf-option>.wf-option-radio-container,.wf-form-field>.wf-option-radio-container{margin:0 2rem 0 1rem}}ul.wf-option>.wf-option-radio-container [type=radio].wf-option-radio+label:before,.wf-form-field>.wf-option-radio-container [type=radio].wf-option-radio+label:before{margin:0}ul.wf-option>li>.wf-option-title,ul.wf-option>.wf-option-title,ul.wf-option>.wf-option-content>ul>.wf-option-title,.wf-form-field>li>.wf-option-title,.wf-form-field>.wf-option-title,.wf-form-field>.wf-option-content>ul>.wf-option-title{font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:0.9rem;color:#2b2b2b;padding-right:0.5rem}ul.wf-option>li>.wf-option-title.wf-option-title-top,ul.wf-option>.wf-option-title.wf-option-title-top,ul.wf-option>.wf-option-content>ul>.wf-option-title.wf-option-title-top,.wf-form-field>li>.wf-option-title.wf-option-title-top,.wf-form-field>.wf-option-title.wf-option-title-top,.wf-form-field>.wf-option-content>ul>.wf-option-title.wf-option-title-top{-webkit-align-self:flex-start;align-self:flex-start}ul.wf-option>li>.wf-option-title.wf-option-title-bottom,ul.wf-option>.wf-option-title.wf-option-title-bottom,ul.wf-option>.wf-option-content>ul>.wf-option-title.wf-option-title-bottom,.wf-form-field>li>.wf-option-title.wf-option-title-bottom,.wf-form-field>.wf-option-title.wf-option-title-bottom,.wf-form-field>.wf-option-content>ul>.wf-option-title.wf-option-title-bottom{-webkit-align-self:flex-end;align-self:flex-end}ul.wf-option .wf-option-subtitle,.wf-form-field .wf-option-subtitle{padding-top:0.25rem;font-size:0.75rem}ul.wf-option .wf-flex-vertical .wf-option-title,.wf-form-field .wf-flex-vertical .wf-option-title{padding-bottom:0.75rem}ul.wf-option.wf-flex-vertical>.wf-option-subtitle,.wf-form-field.wf-flex-vertical>.wf-option-subtitle{padding-top:0.25rem !important;font-size:0.75rem !important}ul.wf-option .wf-option-checkboxes,.wf-form-field .wf-option-checkboxes{display:-webkit-flex;display:flex;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-flex-direction:column;flex-direction:column}@media (min-width: 768px){ul.wf-option .wf-option-checkboxes,.wf-form-field .wf-option-checkboxes{-webkit-flex-direction:row;flex-direction:row;-webkit-align-items:center;align-items:center}}ul.wf-option .wf-option-checkboxes>ul,.wf-form-field .wf-option-checkboxes>ul{display:-webkit-flex;display:flex;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-flex-direction:row;flex-direction:row;-webkit-align-items:center;align-items:center}ul.wf-option .wf-option-checkboxes,.wf-form-field .wf-option-checkboxes{margin-top:1rem}ul.wf-option .wf-option-checkboxes>ul,.wf-form-field .wf-option-checkboxes>ul{margin-left:0}ul.wf-option .wf-option-checkboxes>ul:not(:first-of-type),.wf-form-field .wf-option-checkboxes>ul:not(:first-of-type){margin-top:1rem}@media (min-width: 768px){ul.wf-option .wf-option-checkboxes>ul,.wf-form-field .wf-option-checkboxes>ul{margin-left:1rem}ul.wf-option .wf-option-checkboxes>ul:not(:first-of-type),.wf-form-field .wf-option-checkboxes>ul:not(:first-of-type){margin-top:0}}@media (min-width: 768px) and (min-width: 768px){ul.wf-option .wf-option-checkboxes>ul,.wf-form-field .wf-option-checkboxes>ul{margin-left:1.5rem}}@media (min-width: 768px){ul.wf-option .wf-option-checkboxes>ul:first-of-type,.wf-form-field .wf-option-checkboxes>ul:first-of-type{margin-left:0}}ul.wf-option .wf-option-checkboxes>ul>.wf-option-checkbox,.wf-form-field .wf-option-checkboxes>ul>.wf-option-checkbox{margin:0 1rem 0 0}ul.wf-option li.wf-option-text,ul.wf-option li.wf-option-textarea,ul.wf-option td.wf-option-text,.wf-form-field li.wf-option-text,.wf-form-field li.wf-option-textarea,.wf-form-field td.wf-option-text{padding-top:0.5rem}@media (min-width: 768px){ul.wf-option li.wf-option-text,ul.wf-option li.wf-option-textarea,ul.wf-option td.wf-option-text,.wf-form-field li.wf-option-text,.wf-form-field li.wf-option-textarea,.wf-form-field td.wf-option-text{-webkit-flex-grow:1;flex-grow:1;text-align:right;padding-left:1rem;padding-top:0}}ul.wf-option li.wf-option-text>input[type="text"],.wf-form-field li.wf-option-text>input[type="text"]{max-width:240px}@media (min-width: 768px){ul.wf-option li.wf-option-text>input[type="text"],.wf-form-field li.wf-option-text>input[type="text"]{max-width:280px}}@media (min-width: 992px){ul.wf-option li.wf-option-text>input[type="text"],.wf-form-field li.wf-option-text>input[type="text"]{max-width:340px}}ul.wf-option li.wf-option-text.wf-option-full-width>input[type="text"],.wf-form-field li.wf-option-text.wf-option-full-width>input[type="text"]{max-width:100%;width:100%}ul.wf-option li.wf-option-textarea,.wf-form-field li.wf-option-textarea{min-width:150px;max-width:240px}@media (min-width: 768px){ul.wf-option li.wf-option-textarea,.wf-form-field li.wf-option-textarea{min-width:200px;max-width:400px}}@media (min-width: 992px){ul.wf-option li.wf-option-textarea,.wf-form-field li.wf-option-textarea{min-width:250px;max-width:500px}}ul.wf-option li.wf-option-textarea>textarea,.wf-form-field li.wf-option-textarea>textarea{width:100%;height:80px;min-width:150px;max-width:240px}@media (min-width: 768px){ul.wf-option li.wf-option-textarea>textarea,.wf-form-field li.wf-option-textarea>textarea{min-width:200px;max-width:280px}}@media (min-width: 992px){ul.wf-option li.wf-option-textarea>textarea,.wf-form-field li.wf-option-textarea>textarea{min-width:250px;max-width:340px}}ul.wf-option li.wf-option-textarea>.wf-flex-vertical>li>textarea,.wf-form-field li.wf-option-textarea>.wf-flex-vertical>li>textarea{width:100%;height:80px;box-sizing:border-box}ul.wf-option li.wf-option-textarea>.wf-flex-vertical>li.wf-option-subtitle,.wf-form-field li.wf-option-textarea>.wf-flex-vertical>li.wf-option-subtitle{width:100%;text-align:left}ul.wf-option li.wf-option-switch,.wf-form-field li.wf-option-switch{-webkit-flex-grow:1;flex-grow:1}ul.wf-option li.wf-option-switch.wf-right .wf-switch,.wf-form-field li.wf-option-switch.wf-right .wf-switch{justify-content:flex-end !important}ul.wf-option li.wf-option-select,.wf-form-field li.wf-option-select{-webkit-flex-grow:1;flex-grow:1;text-align:right}ul.wf-option li.wf-option-select select,ul.wf-option li.wf-option-select select option,ul.wf-option li.wf-option-select .wfselect2-container--default,.wf-form-field li.wf-option-select select,.wf-form-field li.wf-option-select select option,.wf-form-field li.wf-option-select .wfselect2-container--default{font-size:0.7rem;font-weight:bold}@media (min-width: 768px){ul.wf-option li.wf-option-select select,ul.wf-option li.wf-option-select select option,ul.wf-option li.wf-option-select .wfselect2-container--default,.wf-form-field li.wf-option-select select,.wf-form-field li.wf-option-select select option,.wf-form-field li.wf-option-select .wfselect2-container--default{font-size:0.8rem}}@media (min-width: 992px){ul.wf-option li.wf-option-select select,ul.wf-option li.wf-option-select select option,ul.wf-option li.wf-option-select .wfselect2-container--default,.wf-form-field li.wf-option-select select,.wf-form-field li.wf-option-select select option,.wf-form-field li.wf-option-select .wfselect2-container--default{font-size:0.9rem}}ul.wf-option li.wf-option-select .wf-option-select-option,ul.wf-option li.wf-option-select .wfselect2-container--default,ul.wf-option li.wf-option-select .wfselect2-container--default .wfselect2-selection--single,.wf-form-field li.wf-option-select .wf-option-select-option,.wf-form-field li.wf-option-select .wfselect2-container--default,.wf-form-field li.wf-option-select .wfselect2-container--default .wfselect2-selection--single{text-align:left;height:40px;border-radius:0;border:0;background-color:#fff;box-shadow:1px 1px 1px 2px rgba(215,215,215,0.35)}ul.wf-option li.wf-option-select .wf-option-select-option .wfselect2-selection__rendered,ul.wf-option li.wf-option-select .wfselect2-container--default .wfselect2-selection__rendered,ul.wf-option li.wf-option-select .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__rendered,.wf-form-field li.wf-option-select .wf-option-select-option .wfselect2-selection__rendered,.wf-form-field li.wf-option-select .wfselect2-container--default .wfselect2-selection__rendered,.wf-form-field li.wf-option-select .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__rendered{color:#333;line-height:40px}ul.wf-option li.wf-option-select .wf-option-select-option .wfselect2-selection__arrow,ul.wf-option li.wf-option-select .wfselect2-container--default .wfselect2-selection__arrow,ul.wf-option li.wf-option-select .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow,.wf-form-field li.wf-option-select .wf-option-select-option .wfselect2-selection__arrow,.wf-form-field li.wf-option-select .wfselect2-container--default .wfselect2-selection__arrow,.wf-form-field li.wf-option-select .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow{height:38px}ul.wf-option li.wf-option-select .wf-option-select-option.wfselect2-container--disabled .wfselect2-selection__rendered,ul.wf-option li.wf-option-select .wfselect2-container--default.wfselect2-container--disabled .wfselect2-selection__rendered,ul.wf-option li.wf-option-select .wfselect2-container--default .wfselect2-selection--single.wfselect2-container--disabled .wfselect2-selection__rendered,.wf-form-field li.wf-option-select .wf-option-select-option.wfselect2-container--disabled .wfselect2-selection__rendered,.wf-form-field li.wf-option-select .wfselect2-container--default.wfselect2-container--disabled .wfselect2-selection__rendered,.wf-form-field li.wf-option-select .wfselect2-container--default .wfselect2-selection--single.wfselect2-container--disabled .wfselect2-selection__rendered{color:#aaa}ul.wf-option li.wf-option-select .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow b,.wf-form-field li.wf-option-select .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow b{border-color:#333 transparent transparent}ul.wf-option li.wf-option-select .wfselect2-container--default.wfselect2-container--open .wfselect2-selection--single .wfselect2-selection__arrow b,.wf-form-field li.wf-option-select .wfselect2-container--default.wfselect2-container--open .wfselect2-selection--single .wfselect2-selection__arrow b{border-color:transparent transparent #333}ul.wf-option.wf-option-token select,.wf-form-field.wf-option-token select{width:240px}@media (min-width: 768px){ul.wf-option.wf-option-token select,.wf-form-field.wf-option-token select{width:280px}}@media (min-width: 992px){ul.wf-option.wf-option-token select,.wf-form-field.wf-option-token select{width:320px}}ul.wf-option.wf-option-token .wfselect2-container--default,ul.wf-option.wf-option-token .wfselect2-container--default .wfselect2-selection--multiple,.wf-form-field.wf-option-token .wfselect2-container--default,.wf-form-field.wf-option-token .wfselect2-container--default .wfselect2-selection--multiple{border-color:#e2e2e2}ul.wf-option.wf-option-token .wfselect2-container--default .wfselect2-selection__choice,ul.wf-option.wf-option-token .wfselect2-container--default .wfselect2-selection--multiple .wfselect2-selection__choice,.wf-form-field.wf-option-token .wfselect2-container--default .wfselect2-selection__choice,.wf-form-field.wf-option-token .wfselect2-container--default .wfselect2-selection--multiple .wfselect2-selection__choice{background-color:#fff;border-color:#e2e2e2;padding:0.5rem}ul.wf-option.wf-option-token .wfselect2-container--default .wfselect2-search__field,ul.wf-option.wf-option-token .wfselect2-container--default .wfselect2-selection--multiple .wfselect2-search__field,.wf-form-field.wf-option-token .wfselect2-container--default .wfselect2-search__field,.wf-form-field.wf-option-token .wfselect2-container--default .wfselect2-selection--multiple .wfselect2-search__field{margin-right:5px;margin-top:5px;padding:0.5rem 0}.wf-option-sub{padding-left:2rem !important;margin-left:30px !important}.wf-select2-suppress-dropdown .wfselect2-results,.wf-select2-suppress-dropdown .wfselect2-dropdown{display:none}.wf-options-controls{direction:ltr;background:#ffffff;border-bottom:1px solid #e2e2e2;position:absolute;left:160px;right:0px;top:46px;z-index:900;padding-left:15px;padding-right:15px}@media (min-width: 616px){.wf-options-controls{position:fixed}}.wf-options-controls .wf-block{margin:0}@media (min-width: 782px){.wf-options-controls .wf-block{margin:0.5rem 0}}.wf-options-controls,.sticky-menu .wf-options-controls{top:32px}.folded .wf-options-controls{left:36px}@media only screen and (max-width: 960px){.auto-fold .wf-options-controls{left:36px}}.rtl .wf-options-controls{right:160px;left:0px}.rtl .folded .wf-options-controls{right:36px}@media only screen and (max-width: 960px){.rtl .auto-fold .wf-options-controls{right:36px}}@media screen and (max-width: 782px){.wf-options-controls,.folded .wf-options-controls,.auto-fold .wf-options-controls,.rtl .wf-options-controls,.rtl .folded .wf-options-controls,.rtl .auto-fold .wf-options-controls{left:-10px;right:0px}}.wf-options-controls-spacer{height:45px}@media (min-width: 782px){.wf-options-controls-spacer{height:75px}}.wf-options-controls-spacer,.sticky-menu .wf-options-controls-spacer{top:61px}.wordfence .wfselect2-container .wfselect2-selection--single{border:1px solid #dadada;font-weight:normal;font-size:0.8rem}#wf-notices{margin-top:15px}#wf-notices .wf-admin-notice{margin-left:0px;margin-right:0px}.wf-success-text,.wf-notice-text{display:inline-block;vertical-align:middle;line-height:1.3;font-size:16px;font-weight:bold;font-style:italic}.wf-notice{margin:12px 0;padding:8px;background-color:#ffffe0;border:1px solid #ffd975;border-width:1px 1px 1px 10px}.wf-notice-text{color:#6d798c}.wf-success{margin:12px 0;padding:8px;background-color:#ffffff;border:1px solid #16bc9b;border-width:1px 1px 1px 10px}.wf-success-text{color:#11967a}.wf-premium-callout{border:1px solid #dfdfdf;background-color:#ffffff;padding:16px;margin:20px 0 0;text-align:center}.wf-premium-callout ul{margin:8px 0;padding:0 0 0 15px}.wf-premium-callout ul li{list-style-type:disc;margin:0;padding:0}.wf-premium-callout .center{text-align:center;margin:0}.wf-premium-callout .button-primary{text-align:center;text-transform:uppercase;font-weight:bold}#wordfenceSatisfactionPrompt .notice-dismiss{top:10px;right:16px}#wfLiveTrafficOverlayAnchor::after{position:absolute;z-index:3002;top:0;right:0;width:0;height:0;background:rgba(241,241,241,0.6);content:'';opacity:0;-webkit-transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s;-o-transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s;transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s}.wordfenceLiveActivityPaused #wfLiveTrafficOverlayAnchor::after{width:100%;height:100%;opacity:1;-webkit-transition:opacity 0.5s;-o-transition:opacity 0.5s;transition:opacity 0.5s}#wordfenceLiveActivitySecurityOnly,#wordfenceLiveActivityAll{background:#fff;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);margin-bottom:0.5rem;padding:1px 13px}#wfLiveTrafficDisabledMessage{display:none;position:fixed;z-index:3003;left:0;width:100%;top:50%;transform:translateY(-50%);text-align:center;color:#666666;opacity:0;-webkit-transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s;-o-transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s;transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s}#wfLiveTrafficDisabledMessage h2{color:#fff;overflow:hidden;max-width:350px;margin:0 auto;padding:20px;font-size:2.0em}#wfLiveTrafficDisabledMessage h2 small{font-size:0.5em;font-weight:normal;margin-top:12px;display:block}.wordfenceLiveActivityPaused #wfLiveTrafficDisabledMessage{display:block;opacity:1;-webkit-transition:opacity 0.5s;transition:opacity 0.5s}.wf-live-activity{position:relative;margin:20px 0 10px 0;padding:0.75rem;box-sizing:border-box;background:#FFFCEF;box-shadow:0 0 0 1px rgba(153,155,135,0.5),0 1px 2px #e8f3e0}.wf-live-activity .wf-live-activity-inner{width:100%;box-sizing:border-box;position:relative}.wf-live-activity .wf-live-activity-inner .wf-live-activity-content{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:flex-start}.wf-live-activity .wf-live-activity-inner .wf-live-activity-content .wf-live-activity-title{color:#888888;font-size:0.85rem;font-weight:bold;padding-right:0.5rem}.wf-live-activity .wf-live-activity-inner .wf-live-activity-content .wf-live-activity-message{font-size:0.80rem;color:#000000}.wf-live-activity .wf-live-activity-inner .wf-live-activity-state{position:absolute;top:0px;right:0px;bottom:0px;left:0px;background:rgba(255,252,239,0.9);display:none;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:center;z-index:3001;-webkit-transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s;-o-transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s;transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s}.wordfenceLiveActivityPaused .wf-live-activity .wf-live-activity-inner .wf-live-activity-state{display:-ms-flexbox;display:flex;opacity:1;-webkit-transition:opacity 0.5s;-webkit-transition:opacity 0.5s;-o-transition:opacity 0.5s;transition:opacity 0.5s}.wordfence .wordfenceScanButton{margin:20px 0 20px 0}.wordfence .wordfenceScanButton input.button-wf-grey{background:#EFEFEF url(../images/button-grad-grey.png) repeat-x scroll left top;border-color:#EFEFEF}.wordfence .wordfenceScanButton table td{vertical-align:top}.wordfence .wordfenceScanButton .button-primary{text-align:center;text-transform:uppercase;font-weight:bold;background-color:#00709E;height:44px;line-height:44px;padding:0px 20px}table.wfSummaryParent{font-family:sans-serif;font-size:14px;color:#000;z-index:9}table.wfSummaryParent td{vertical-align:top;padding:0;margin:0}table.wfSummaryParent table.wfSummaryChild th{font-weight:bold;text-align:right;font-family:Georgia,Times New Roman,Times,serif;color:#000;padding:5px 10px 5px 0;border-top:1px solid #CCC}table.wfSummaryParent table.wfSummaryChild td{font-weight:normal;text-align:left;padding:5px 0 5px 0;border-top:1px solid #CCC}table.wfSummaryParent table.wfSC1 td{width:300px;padding:0 25px 10px 0}table.wfSummaryParent table.wfSC2 th{width:80px}table.wfSummaryParent table.wfSC2 td{width:100px}table.wfSummaryParent table.wfSC3 th{width:80px}table.wfSummaryParent table.wfSC3 td{width:250px}table.wfSummaryParent th.wfHead{font-size:22px;font-family:Georgia,Times New Roman,Times,serif;font-style:italic;color:#555;font-weight:bold;text-align:left;padding:20px 0 20px 0;-webkit-font-smoothing:antialiased}.wf-issues-table{table-layout:fixed;width:100%}div.wfIssue{width:100%}div.wfIssue table.wfIssue td{padding:2px;margin:0;border-width:0;text-align:left;width:100%}div.wfIssue table.wfIssue th{padding:2px;margin:0;font-weight:bold;text-align:left;color:#777;white-space:nowrap}div.wfIssue table.wfIssueLinks td{border-width:0;text-align:left;padding-right:10px}div.wfIssue h2{margin:0 0 5px 0;padding:0;font-size:0.9rem}@media (min-width: 768px){div.wfIssue h2{font-size:1.05rem}}.wfIssueOptions{border-top:1px solid #CCC;padding:10px}.wfIssueOptions h3{font-size:0.8rem;margin:0}@media (min-width: 768px){.wfIssueOptions h3{display:inline-block}}.wfIssueOptions ul{margin-bottom:0;padding-left:0;list-style:none;display:-webkit-flex;display:flex;-webkit-align-items:flex-start;align-items:flex-start;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-flex-direction:column;flex-direction:column}@media (min-width: 768px){.wfIssueOptions ul{-webkit-flex-direction:row;flex-direction:row;-webkit-align-items:center;align-items:center}}.wfIssueOptions ul>li>a{position:relative;display:block;padding:8px 12px/2}.wfIssueOptions ul>li>a:hover,.wfIssueOptions ul>li>a:focus{text-decoration:none;background-color:#e2e2e2}.wfIssueOptions a{margin-left:10px}.wfIssueOptions strong{float:left;display:block;width:60px}.wfIssueOptions p{margin:6px 0px 0px}.wfProbSev1,.wfProbSev2,.wfAjaxLight128,.wfResolved{width:128px;height:128px;border:0;margin:0 auto;background-repeat:no-repeat;background-position:0 0;text-decoration:none;display:block}.wfProbSev1{background-image:url(../images/icons/error128.png)}.wfProbSev2{background-image:url(../images/icons/warning128.png)}.wfResolved{background-image:url(../images/icons/tick128.png)}.wfIssuesContainer{width:100%;display:none}.wfIssuesContainer p{max-width:550px}.wfALogTime{color:#999}.wfALogMailLink,.wfALogViewLink{display:block;position:absolute;padding:0 0 0 18px;margin:0;right:10px;top:0;background-repeat:no-repeat;font-weight:normal}.wfALogMailLink{background-image:url(../images/icons/email_go.png)}.wfALogViewLink{background-image:url(../images/icons/magnifier.png)}#wfActivity{position:relative}.consoleHead{position:relative;padding:0 0 0 3px;font-weight:bold;width:100%}.consoleHeadText{margin-bottom:4px;font-size:18px;font-family:Georgia,Times New Roman,Times,serif;color:#555;font-weight:bold;-webkit-font-smoothing:antialiased}.consoleFooter{position:relative}.consoleOuter{width:100%}.consoleInner{height:116px;overflow:auto;z-index:1}.bevelDiv1{border:1px solid #EFEFEF}.bevelDiv2{border:1px solid #AAA}.bevelDiv3{background-color:#ffffed;padding:5px;font-family:Roboto,Helvetica Neue,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased}.wfSecure{color:#0A0;font-weight:bold}.wfSummaryLine{display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-flex-direction:column;flex-direction:column}@media (min-width: 768px){.wfSummaryLine{-webkit-flex-direction:row;flex-direction:row}}.wfSummaryLine .wfSummaryDate{padding-left:3px}.wfSummaryLine .wfSummaryMsg{padding-left:3px;-webkit-flex-grow:1;flex-grow:1;min-width:0}.wfSummaryLoading{width:16px;height:11px;background-image:url("../images/icons/ajaxScan.gif")}.wfSummaryBad,.wfSummaryErr{color:#930000}.wfSummaryOK{color:#11967a}.wfSummaryIgnored{color:#a87302}.wfClear{content:".";display:block;height:0;width:0;line-height:0;clear:both;visibility:hidden}.wfSummaryFinal{-webkit-font-smoothing:antialiased;font-weight:bold;color:#555}.wfStartScanButton{text-align:center}.wordfenceScanHelp{border:1px solid #CCC;padding:4px}.wf-scan-no-issues{font-size:1.25rem;color:#11967a}.wf-scan-severity{position:relative;width:10px}@media (min-width: 768px){.wf-scan-severity{width:144px}}.wf-scan-severity-1,.wf-scan-severity-2{position:absolute;top:0px;right:0px;bottom:0px;left:0px}.wf-scan-severity-1{background-color:#c10000}.wf-scan-severity-2{background-color:#ffd10a}.scan-schedule{border-collapse:collapse;border-spacing:0}.scan-schedule tr:first-of-type th{padding-top:0}.scan-schedule td{padding:0}.scan-schedule th{padding:1.5rem 0.5rem 0.75rem 0;font-size:1rem;text-align:left}@media (min-width: 768px){.scan-schedule th{padding:0 0.5rem 0 0;font-size:0.8125rem;text-align:center}}.next-scan{font-size:1em;display:block;position:relative;width:7em;height:7em;background-color:#fff;border-radius:0.6em;box-shadow:0 1px 0 rgba(189,189,189,0.6);overflow:hidden}.next-scan *{display:block;width:100%;font-size:1em;font-weight:bold;font-style:normal;text-align:center}.next-scan strong{position:absolute;top:0;padding:0.4em 0;color:#fff;background-color:#00709E;box-shadow:0 2px 0 #00709E}.next-scan em{position:absolute;bottom:0.3em;color:#00709E}.next-scan span{width:100%;font-size:2.8em;padding-top:1.15em;color:#2f2f2f}#wf-lt-listings .wfActEvent{padding-left:15px;border-left:5px solid #cccccc}#wf-lt-listings .wfActEvent.wfHuman{border-left:5px solid #16bc9b}#wf-lt-listings .wfActEvent.wfActionBlocked{border-left:5px solid #d03935}#wf-lt-listings .wfActEvent.wfNotice{border-left:5px solid #c10000}#wf-lt-listings .wfActEvent.wfWarning,#wf-lt-listings .wfActEvent.wf404,#wf-lt-listings .wfActEvent.wfFailedLogin{border-left:5px solid #ffd10a}#wf-lt-listings .wfActEvent:hover{background-color:#fff9e9 !important}.wf-live-traffic-controls{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column;width:100%;margin-bottom:0}.wf-live-traffic-controls>*:first-child{-webkit-flex-grow:1;flex-grow:1}.wf-live-traffic-controls>*:last-child{-webkit-flex-grow:0;flex-grow:0}@media (min-width: 768px){.wf-live-traffic-controls{-webkit-flex-direction:row;flex-direction:row}}.wf-live-traffic-filter{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start}@media (min-width: 768px){.wf-live-traffic-filter{-webkit-flex-direction:row;flex-direction:row}}.wf-live-traffic-filter>*{padding:0.5rem}.wf-live-traffic-filter h2{margin:0;padding-bottom:0.5rem}@media (min-width: 768px){.wf-live-traffic-filter h2{padding-bottom:0;padding-right:0.5rem}}.wf-live-traffic-show-expanded{text-align:right;padding:0.5rem}@media (max-width: 1330px){.wf-live-traffic-show-expanded{display:none}}#wf-lt-advanced-filters{padding-left:0;padding-right:0;overflow:hidden}.wf-live-traffic-filter-detail{display:-webkit-flex;display:flex;-webkit-align-items:flex-start;align-items:flex-start;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column}@media (min-width: 768px){.wf-live-traffic-filter-detail{-webkit-flex-direction:row;flex-direction:row}.wf-live-traffic-filter-detail *{-webkit-flex-grow:1;flex-grow:1}}.wf-live-traffic-filter-detail .wf-live-traffic-filter-item{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row}.wf-live-traffic-filter-detail .wf-live-traffic-filter-item .wf-live-traffic-filter-remove{margin-left:0.5rem;font-size:1.5rem;color:#333}.wf-live-traffic-filter-detail .wf-live-traffic-filter-item .wf-live-traffic-filter-item-parameters{display:-webkit-flex;display:flex;-webkit-align-items:flex-start;align-items:flex-start;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column}.wf-live-traffic-filter-detail .wf-live-traffic-filter-item .wf-live-traffic-filter-item-parameters div{padding:0.25rem 0}.wf-live-traffic-filter-detail .wf-live-traffic-filter-item .wf-live-traffic-filter-item-parameters select{font-size:0.75rem !important}@media (min-width: 768px){.wf-live-traffic-filter-detail .wf-live-traffic-filter-item .wf-live-traffic-filter-item-parameters{-webkit-flex-direction:row;flex-direction:row;-webkit-align-items:center;align-items:center}.wf-live-traffic-filter-detail .wf-live-traffic-filter-item .wf-live-traffic-filter-item-parameters div{padding:0}.wf-live-traffic-filter-detail .wf-live-traffic-filter-item .wf-live-traffic-filter-item-parameters select{font-size:1rem !important}}.wf-filtered-traffic .wf-filtered-traffic-hits{font-size:1.75rem;color:#999999;margin-top:10px}#wf-live-traffic{position:relative;overflow:visible}#wf-live-traffic-legend{white-space:nowrap;background-color:#fff;padding:0.75rem 0px;position:fixed;width:320px;height:17px;top:auto;bottom:0px;right:auto;left:10px;z-index:2000;box-shadow:0px 0px 5px rgba(0,0,0,0.5);padding-left:1rem}@media (min-width: 768px){#wf-live-traffic-legend{left:182px}}@media (max-width: 1330px){#wf-live-traffic-legend{display:none}}#wf-live-traffic-legend-placeholder{display:none;padding:12px}#wf-live-traffic-legend-placeholder.sticky{display:block}#wf-live-traffic-legend ul{margin:0;padding:0}#wf-live-traffic-legend ul:before,#wf-live-traffic-legend ul:after{content:" ";display:table}#wf-live-traffic-legend ul:after{clear:both}#wf-live-traffic-legend ul li{margin:0 1rem 0 0;padding:0;position:relative;float:left;font-size:0.7185rem}@media (min-width: 768px){#wf-live-traffic-legend ul li{font-size:0.8125rem}}#wf-live-traffic-legend ul li+li{margin-left:0.5rem}#wf-live-traffic-legend ul li:before,.wf-live-traffic-hit-type:before{content:'';display:inline-block;margin:3px 6px 0 0;width:12px;height:12px;background-color:#CCCCCC;border-radius:10px;vertical-align:-2px}#wf-live-traffic-legend ul li.wfHuman:before,.wf-live-traffic-hit-type.wfHuman:before{background-color:#16bc9b}#wf-live-traffic-legend ul li.wfNotice:before,.wf-live-traffic-hit-type.wfNotice:before,#wf-live-traffic-legend ul li.wf404:before,.wf-live-traffic-hit-type.wf404:before,#wf-live-traffic-legend ul li.wfFailedLogin:before,.wf-live-traffic-hit-type.wfFailedLogin:before{background-color:#ffd10a}#wf-live-traffic-legend ul li.wfBlocked:before,.wf-live-traffic-hit-type.wfBlocked:before,#wf-live-traffic-legend ul li.wfActionBlocked:before,.wf-live-traffic-hit-type.wfActionBlocked:before{background-color:#d03935}.wfTimeAgo{font-family:Georgia,Times New Roman,Times,serif;color:#999;font-weight:bold;font-style:italic}.wfActEvent{border-bottom:1px solid #CCC;padding:10px 20px;overflow:auto}.wf-pad-small{margin:8px 0}#wf-lt-listings{margin:0 0 0}#wf-lt-listings a{cursor:pointer;text-decoration:none}#wf-lt-listings a:hover{text-decoration:underline}#wf-lt-listings a.button,#wf-lt-listings a.wf-btn{text-decoration:none}[class*="span"]{float:left;min-height:1px;margin-left:30px}.highlighted,.highlighted td,#wf-live-traffic .wf-striped-table .highlighted td{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-moz-keyframes highlighted{0%{opacity:0;background-color:#ffeaa0}100%{opacity:1;background-color:#ffffff}}@-webkit-keyframes highlighted{0%{opacity:0;background-color:#ffeaa0}100%{opacity:1;background-color:#ffffff}}@keyframes highlighted{0%{opacity:0;background-color:#ffeaa0}100%{opacity:1;background-color:#ffffff}}@-moz-keyframes highlightedBlocked{0%{opacity:0;background-color:#ffeaa0}100%{opacity:1;background-color:#fff6f6}}@-webkit-keyframes highlightedBlocked{0%{opacity:0;background-color:#ffeaa0}100%{opacity:1;background-color:#fff6f6}}@keyframes highlightedBlocked{0%{opacity:0;background-color:#ffeaa0}100%{opacity:1;background-color:#fff6f6}}.highlighted,.highlighted td,#wf-live-traffic .wf-striped-table .highlighted td{-webkit-animation-name:highlighted;animation-name:highlighted}.highlighted.wfActionBlocked,.highlighted td.wfActionBlocked,#wf-live-traffic .wf-striped-table .highlighted td.wfActionBlocked{-webkit-animation-name:highlightedBlocked;animation-name:highlightedBlocked}#wf-lt-preset-filters{min-width:250px}#wf-lt-advanced-filters>table{width:100%}#wf-lt-advanced-filters>table>tr>td{vertical-align:top}.wf-lt-url{white-space:nowrap}.wf-live-traffic-filter label{font-weight:normal}#wf-live-traffic .wf-striped-table th,#wf-live-traffic .wf-striped-table td{padding:.5rem .6rem}#wf-live-traffic .wf-striped-table th{white-space:nowrap}#wf-live-traffic .wf-striped-table tbody tr:hover>td{background-color:#e7f5ff}#wf-live-traffic .wf-live-traffic-show-details{font-size:1.5rem;color:#9a9a9a;text-align:center;cursor:hand}#wf-live-traffic .wf-live-traffic-show-details .wf-ion-eye-disabled{display:none}#wf-live-traffic .wf-details-open .wf-live-traffic-show-details .wf-ion-eye-disabled{display:inline-block}#wf-live-traffic .wf-details-open .wf-live-traffic-show-details .wf-ion-eye{display:none}#wf-live-traffic.wf-live-traffic-display-expanded .wf-summary-row{display:none}#wf-live-traffic.wf-live-traffic-display-expanded .wf-live-traffic-activity-detail h2{display:none}#wf-live-traffic.wf-live-traffic-display-expanded .wf-striped-table thead{display:none}#wf-live-traffic .wf-details-hidden .wf-live-traffic-details,#wf-live-traffic .wf-details-visible .wf-live-traffic-details{transition:padding 200ms}#wf-live-traffic .wf-details-hidden .wf-live-traffic-details{padding:0 .6rem}#wf-live-traffic .wf-details-visible .wf-live-traffic-details,#wf-live-traffic.wf-live-traffic-display-expanded .wf-details-hidden .wf-live-traffic-details{padding:.8rem .6rem}#wf-live-traffic.wf-live-traffic-display-expanded .wf-details-hidden .wf-live-traffic-details{border-top:1px solid #e2e2e2}#wf-live-traffic .wf-details-hidden .wf-live-traffic-activity-detail-wrapper,#wf-live-traffic .wf-details-visible .wf-live-traffic-activity-detail-wrapper{transition:opacity 200ms, max-height 200ms ease-out;overflow:hidden}#wf-live-traffic .wf-details-hidden .wf-live-traffic-activity-detail-wrapper{opacity:0;max-height:0px}#wf-live-traffic .wf-details-visible .wf-live-traffic-activity-detail-wrapper,#wf-live-traffic.wf-live-traffic-display-expanded .wf-details-hidden .wf-live-traffic-activity-detail-wrapper{opacity:1;max-height:800px}#wf-live-traffic .wf-block-ip-btn{display:none}#wf-live-traffic-group-by{width:100%}#wf-live-traffic-no-group-by{overflow-x:auto}@media (max-width: 1330px){#wf-live-traffic .wf-summary-row{display:none}#wf-live-traffic .wf-live-traffic-activity-detail h2{display:none}#wf-live-traffic .wf-striped-table thead{display:none}#wf-live-traffic .wf-details-hidden .wf-live-traffic-details{padding:0.8rem 0.6rem}#wf-live-traffic .wf-details-hidden .wf-live-traffic-details{border-top:1px solid #e2e2e2}#wf-live-traffic .wf-details-hidden .wf-live-traffic-activity-detail-wrapper{opacity:1;max-height:300px}#wf-live-traffic-no-group-by .wf-striped-table{table-layout:fixed}}.wf-live-traffic-activity-type{text-align:center;float:left;width:65px}@media (min-width: 768px){.wf-live-traffic-activity-type{width:85px}}@media (min-width: 992px){.wf-live-traffic-activity-type{width:105px}}@media (min-width: 1200px){.wf-live-traffic-activity-type{width:125px}}.wf-live-traffic-activity-type .wf-live-traffic-type-icon{font-size:3rem;color:#CCCCCC}@media (min-width: 768px){.wf-live-traffic-activity-type .wf-live-traffic-type-icon{font-size:4rem}}@media (min-width: 992px){.wf-live-traffic-activity-type .wf-live-traffic-type-icon{font-size:5rem}}@media (min-width: 1200px){.wf-live-traffic-activity-type .wf-live-traffic-type-icon{font-size:6rem}}.wf-live-traffic-activity-type .wf-live-traffic-type-icon.wf-icon-human{color:#16bc9b}.wf-live-traffic-activity-type .wf-live-traffic-type-icon.wf-icon-warning{color:#ffd10a}.wf-live-traffic-activity-type .wf-live-traffic-type-icon.wf-icon-blocked{color:#d03935}.wf-live-traffic-activity-detail{margin:0;margin-left:90px}@media (min-width: 768px){.wf-live-traffic-activity-detail{margin-left:110px}}@media (min-width: 992px){.wf-live-traffic-activity-detail{margin-left:130px}}@media (min-width: 1200px){.wf-live-traffic-activity-detail{margin-left:150px}}.wf-live-traffic-activity-detail h2{margin:0px 0px .5rem}.wf-live-traffic-actions{margin:.5rem 0px 0px}#wf-live-traffic-util-overlay-wrapper{position:fixed;top:32px;right:0px;bottom:0px;left:0px;background-color:rgba(0,0,0,0.5);z-index:3000}#wf-live-traffic-util-overlay-wrapper .wf-live-traffic-util-overlay{position:fixed;top:32px;right:0px;bottom:0px;left:auto;max-width:800px;background-color:#ffffff;overflow:auto}#wf-live-traffic-util-overlay-wrapper .wf-live-traffic-util-overlay-header,#wf-live-traffic-util-overlay-wrapper .wf-live-traffic-util-overlay-body{padding:1rem 1.5rem}#wf-live-traffic-util-overlay-wrapper .wf-live-traffic-util-overlay-body{padding:1rem 1.5rem 1rem 3rem}#wf-live-traffic-util-overlay-wrapper .wf-live-traffic-util-overlay-header{background-color:#e9e9e9;border:1px solid #ffd10a;border-width:10px 0px}#wf-live-traffic-util-overlay-wrapper .wf-live-traffic-util-overlay-body .wf-flex-row{margin:0.6rem 0}#wf-live-traffic-util-overlay-wrapper .wf-live-traffic-actions{display:none}#wf-live-traffic-util-overlay-wrapper .wf-live-traffic-util-overlay-close{position:absolute;top:20px;right:16px;font-size:20px;cursor:pointer}#wf-live-traffic-util-overlay-wrapper .wf-live-traffic-activity-detail div{margin:0px 0px 0.6rem}#wf-live-traffic-util-overlay-wrapper .wf-block-ip-btn{display:inline-block}#wf-live-traffic-options .wf-block-list .wf-option-text .wf-option-title{width:30%}.wf-recent-traffic-table{font-size:.7rem}.wf-recent-traffic-table th,.wf-recent-traffic-table td{vertical-align:top}.wf-recent-traffic-table th{text-align:left;white-space:nowrap}.wf-recent-traffic-table td{word-wrap:break-word;word-break:break-all}.wf-recent-traffic-table .wf-recent-traffic-table-row-border td div{border-top:1px solid #e2e2e2;margin:10px 0}.wf-live-traffic-none{padding:0.5rem 0.6rem}.wf-flag.wf-flag-unspecified{width:16px;height:16px;background:none}.wf-flag.wf-flag-unspecified path{fill:#9f9fa0}table.block-ranges-table{border-collapse:collapse;margin:10px 0 0}table.block-ranges-table tr td{border:1px solid #CCC;border-width:1px 0;padding:10px 0 12px 0}#input-wafStatus,#input-wafStatus option,.wfselect2-container--default{font-size:0.7rem;font-weight:bold}@media (min-width: 768px){#input-wafStatus,#input-wafStatus option,.wfselect2-container--default{font-size:0.8rem}}@media (min-width: 992px){#input-wafStatus,#input-wafStatus option,.wfselect2-container--default{font-size:0.9rem}}.wfselect2-results__options{border-top:1px solid #e2e2e2}.wafStatus-enabled,.wafStatus-learning-mode,.wafStatus-disabled,.wafStatus-enabled.wfselect2-container--default .wfselect2-selection--single,.wafStatus-learning-mode.wfselect2-container--default .wfselect2-selection--single,.wafStatus-disabled.wfselect2-container--default .wfselect2-selection--single{height:40px;border-radius:0;border:0;background-color:#fff;box-shadow:1px 1px 1px 2px rgba(215,215,215,0.35)}.wafStatus-enabled .wfselect2-selection__rendered,.wafStatus-learning-mode .wfselect2-selection__rendered,.wafStatus-disabled .wfselect2-selection__rendered,.wafStatus-enabled.wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__rendered,.wafStatus-learning-mode.wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__rendered,.wafStatus-disabled.wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__rendered{color:#333;line-height:40px}.wafStatus-enabled .wfselect2-selection__arrow,.wafStatus-learning-mode .wfselect2-selection__arrow,.wafStatus-disabled .wfselect2-selection__arrow,.wafStatus-enabled.wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow,.wafStatus-learning-mode.wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow,.wafStatus-disabled.wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow{height:38px}#waf-config-form .waf-config-label{font-size:1.3em}#waf-config-form .wfselect2-container--default .wfselect2-selection--single{padding:0.4rem;text-shadow:0 0 3px #000000;font-weight:bold}#waf-config-form .wfselect2-container .wfselect2-selection--single{height:auto}#waf-config-form .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow{height:100%;top:0}.wafStatus-enabled.wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow b,.wafStatus-learning-mode.wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow b,.wafStatus-disabled.wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow b{border-color:#333 transparent transparent}.wafStatus-enabled.wfselect2-container--default.wfselect2-container--open .wfselect2-selection--single .wfselect2-selection__arrow b,.wafStatus-learning-mode.wfselect2-container--default.wfselect2-container--open .wfselect2-selection--single .wfselect2-selection__arrow b,.wafStatus-disabled.wfselect2-container--default.wfselect2-container--open .wfselect2-selection--single .wfselect2-selection__arrow b{border-color:transparent transparent #333}#waf-learning-mode-grace-period{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row}#waf-learning-mode-grace-period span{padding:0 0.5rem 0 1rem}#waf-learning-mode-grace-period input{width:auto}#whitelist-form{padding-top:0.5rem}#whitelist-form .wfselect2-container--default .wfselect2-selection--single{display:block;width:100%;height:38px;padding:.5rem 1.25rem;font-size:14px;line-height:1.42857;color:#2b2b2b;background-color:#fff;background-image:none;border:1px solid #ddd;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;-o-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s}#whitelist-form .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__rendered{color:#2b2b2b;line-height:inherit}#whitelist-form .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow{height:38px}#whitelist-form-separator{margin:1rem 0}#whitelist-table-controls{margin-bottom:0.5rem}#whitelist-table-controls .wfselect2-container--default{text-align:left !important}#whitelist-table-controls .wf-select-group{-webkit-justify-content:flex-end !important;justify-content:flex-end !important}.whitelist-table-container{overflow-x:auto}table.whitelist-table .whitelist-edit{display:none}table.whitelist-table .edit-mode .whitelist-display{display:none}table.whitelist-table .edit-mode .whitelist-edit{display:block}table.whitelist-table .edit-mode span.whitelist-edit,table.whitelist-table .edit-mode input.whitelist-edit{display:inline}.wf-bulk-action{margin:12px 0}tr.wf-table-filters input{max-width:120px}.wf-waf-status-disabled{padding:2rem 0}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status .wf-block-labeled-value-value{padding-top:0}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status .wf-block-labeled-value-value .wf-fa{font-size:8rem}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status .wf-block-labeled-value-value svg{width:160px}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status .wf-block-labeled-value-label{font-size:1.3125rem;font-weight:300;line-height:1.5;padding-bottom:0}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-full-enabled .wf-block-labeled-value-value{color:#ffffff}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-full-enabled .wf-block-labeled-value-label{color:#ffffff;padding:0}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-learning-mode .wf-block-labeled-value-value,.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-disabled .wf-block-labeled-value-value{color:#9f9fa0}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-learning-mode .wf-block-labeled-value-value svg,.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-disabled .wf-block-labeled-value-value svg{fill:#9f9fa0}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-learning-mode .wf-block-labeled-value-label,.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-disabled .wf-block-labeled-value-label{color:#9f9fa0}.wf-waf-coverage li{-webkit-align-items:flex-start !important;align-items:flex-start !important}.wf-waf-navigation .wf-block-navigation-option-content,.wf-blocking-status .wf-block-navigation-option-content{padding:1.5rem 0 1.5rem 1.0rem}.wf-waf-navigation .wf-block-navigation-option-content h4,.wf-blocking-status .wf-block-navigation-option-content h4{margin:0 0 0.25rem 0}.wf-waf-navigation .wf-block-navigation-option-content p,.wf-blocking-status .wf-block-navigation-option-content p{margin:0 0 0.45rem 0}.wf-blocking-status>li{-webkit-flex-grow:0 !important;flex-grow:0 !important;-webkit-flex-basis:66.66667% !important;flex-basis:66.66667% !important}.wf-blocking-status>li:first-of-type{-webkit-flex-basis:33.33333% !important;flex-basis:33.33333% !important}.wf-blocking-status-premium>li{-webkit-flex-grow:0 !important;flex-grow:0 !important;-webkit-flex-basis:33.33333% !important;flex-basis:33.33333% !important}ul.wf-option.wf-option-rate-limit *{-webkit-flex-grow:1;flex-grow:1}ul.wf-option.wf-option-rate-limit *:first-child{-webkit-flex-grow:0;flex-grow:0}ul.wf-option.wf-option-rate-limit .wfselect2-container{min-width:100px}@media (min-width: 768px){ul.wf-option.wf-option-rate-limit .wfselect2-container{min-width:140px}}@media (min-width: 992px){ul.wf-option.wf-option-rate-limit .wfselect2-container{min-width:140px}}#waf-rules-wrapper tbody tr:nth-of-type(n+10){display:none}#waf-rules-wrapper.wf-show-all tbody tr:nth-of-type(n+10){display:table-row}#waf-rules-wrapper.wf-show-all #waf-show-all-rules{display:none}.wf-waf-backup-file-list{display:-webkit-flex;display:flex;-webkit-align-items:flex-start;align-items:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row}.wf-waf-backup-file-list>*{margin-left:0.5rem !important}.wf-waf-backup-file-list>*:first-child{margin-left:0 !important}#wf-option-loginSecurityEnabled .wf-option-subtitle{font-size:.875rem}.wf-rate-limit-warning{display:none;padding-top:1rem}.wf-rate-limit-warning .wf-inline-notice{display:inline-block}.wf-scan-status-disabled{padding:2rem 0}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status .wf-block-labeled-value-value{padding-top:0}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status .wf-block-labeled-value-value .wf-fa{font-size:8rem}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status .wf-block-labeled-value-value svg{width:160px}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status .wf-block-labeled-value-label{font-size:1.3125rem;font-weight:300;line-height:1.5;padding-bottom:0}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status-full-enabled .wf-block-labeled-value-value{color:#ffffff}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status-full-enabled .wf-block-labeled-value-label{color:#ffffff;padding:0}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status-disabled .wf-block-labeled-value-value{color:#9f9fa0}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status-disabled .wf-block-labeled-value-value svg{fill:#9f9fa0}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status-disabled .wf-block-labeled-value-label{color:#9f9fa0}.wf-scan-navigation .wf-block-navigation-option-content{padding:1.5rem 0 1.5rem 1.0rem}.wf-scan-navigation .wf-block-navigation-option-content h4{margin:0 0 0.25rem 0}.wf-scan-navigation .wf-block-navigation-option-content p{margin:0 0 0.45rem 0}#wf-scan-starter{-webkit-justify-content:center;justify-content:center}#wf-scan-starter:hover{cursor:unset}#wf-scan-starter:hover a{text-decoration:none}.wf-scanner-progress{display:-webkit-flex;display:flex;-webkit-align-items:flex-start;align-items:flex-start;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;flex-wrap:nowrap;margin-top:0.5rem;margin-bottom:0.5rem;background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB3aWR0aD0iMXB4IiBoZWlnaHQ9IjZweCIgdmlld0JveD0iMCAwIDEgNiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3BhY2U9InByZXNlcnZlIj4KCTxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGZpbGw9IiNkMWQxZDEiLz48cmVjdCB4PSIwIiB5PSI1IiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBmaWxsPSIjZDFkMWQxIi8+Cjwvc3ZnPg==");background-repeat:repeat-x;background-position:center 24px;overflow-x:auto;overflow-y:hidden}.wf-scanner-progress>.wf-scan-step{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;-webkit-flex-direction:column;flex-direction:column;padding-left:0.5rem;padding-right:0.5rem}.wf-scanner-progress>.wf-scan-step:first-of-type{padding-left:0;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuMCIgeTE9IjAuNSIgeDI9IjEuMCIgeTI9IjAuNSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIvPjxzdG9wIG9mZnNldD0iNTAlIiBzdG9wLWNvbG9yPSIjZmZmZmZmIi8+PHN0b3Agb2Zmc2V0PSI1MSUiIHN0b3AtY29sb3I9IiNmZmZmZmYiIHN0b3Atb3BhY2l0eT0iMC4wIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjZmZmZmZmIiBzdG9wLW9wYWNpdHk9IjAuMCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #ffffff),color-stop(50%, #ffffff),color-stop(51%, rgba(255,255,255,0)),color-stop(100%, rgba(255,255,255,0)));background-image:-moz-linear-gradient(left, #ffffff 0%,#ffffff 50%,rgba(255,255,255,0) 51%,rgba(255,255,255,0) 100%);background-image:-webkit-linear-gradient(left, #ffffff 0%,#ffffff 50%,rgba(255,255,255,0) 51%,rgba(255,255,255,0) 100%);background-image:linear-gradient(to right, #ffffff 0%,#ffffff 50%,rgba(255,255,255,0) 51%,rgba(255,255,255,0) 100%);background-repeat:no-repeat;background-position:left center}.wf-scanner-progress>.wf-scan-step:last-of-type{padding-right:0;background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuMCIgeTE9IjAuNSIgeDI9IjEuMCIgeTI9IjAuNSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIgc3RvcC1vcGFjaXR5PSIwLjAiLz48c3RvcCBvZmZzZXQ9IjQ5JSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIgc3RvcC1vcGFjaXR5PSIwLjAiLz48c3RvcCBvZmZzZXQ9IjUwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');background-size:100%;background-image:-webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, rgba(255,255,255,0)),color-stop(49%, rgba(255,255,255,0)),color-stop(50%, #ffffff),color-stop(100%, #ffffff));background-image:-moz-linear-gradient(left, rgba(255,255,255,0) 0%,rgba(255,255,255,0) 49%,#ffffff 50%,#ffffff 100%);background-image:-webkit-linear-gradient(left, rgba(255,255,255,0) 0%,rgba(255,255,255,0) 49%,#ffffff 50%,#ffffff 100%);background-image:linear-gradient(to right, rgba(255,255,255,0) 0%,rgba(255,255,255,0) 49%,#ffffff 50%,#ffffff 100%);background-repeat:no-repeat;background-position:right center}.wf-scanner-progress>.wf-scan-step>.wf-scan-step-title{font-size:0.7rem;padding-top:0.5rem;white-space:nowrap}.wf-scanner-progress>.wf-scan-step>.wf-scan-step-subtitle{font-size:0.7rem}.wf-scanner-progress>.wf-scan-step>.wf-scan-step-icon>.wf-scan-step-pending,.wf-step-pending{width:50px;height:54px;background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB3aWR0aD0iMTRweCIgaGVpZ2h0PSIxNHB4IiB2aWV3Qm94PSIwIDAgMTQgMTQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+Cgk8Y2lyY2xlIGN4PSI3IiBjeT0iNyIgcj0iNyIgZmlsbD0iI2QxZDFkMSIvPgo8L3N2Zz4=");background-repeat:no-repeat;background-position:center center}.wf-scanner-progress>.wf-scan-step>.wf-scan-step-icon>.wf-scan-step-running,.wf-step-running{display:none;background-color:#ffffff !important}.wf-scanner-progress>.wf-scan-step>.wf-scan-step-icon>.wf-scan-step-complete-success,.wf-step-complete-success{display:none;width:50px;height:54px;background-color:#ffffff;background-repeat:no-repeat;background-position:center center;background-size:80%}.wf-scanner-progress>.wf-scan-step>.wf-scan-step-icon>.wf-scan-step-complete-warning,.wf-step-complete-warning{display:none;width:50px;height:54px;background:#fff url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj48c3ZnIHdpZHRoPSI1MHB4IiBoZWlnaHQ9IjUwcHgiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTk5LjA1MSw4Mi44NDJsLTQyLjgxMiwtNzguNDgzYy0wLjYxLC0xLjEzMSAtMS41MTQsLTIuMDc3IC0yLjYxNywtMi43MzdjLTIuMjI3LC0xLjMzNCAtNS4wMTcsLTEuMzM0IC03LjI0NCwwYy0xLjEwNiwwLjY1OSAtMi4wMTMsMS42MDUgLTIuNjI1LDIuNzM3bC00Mi44MDQsNzguNDgzYy0xLjI5OSwyLjE2OCAtMS4yNTYsNC44OTYgMC4xMTEsNy4wMjFjMC42MTQsMS4wNjcgMS41LDEuOTUyIDIuNTY2LDIuNTY2YzEuMDc0LDAuNjI3IDIuMjk3LDAuOTU1IDMuNTQxLDAuOTQ5bDg1LjY0MSwwYzIuNTE3LC0wLjAwOSA0Ljg1MiwtMS4zNDcgNi4xMzIsLTMuNTE1YzEuMzY3LC0yLjEyNSAxLjQxLC00Ljg1MyAwLjExMSwtNy4wMjFsMCwwWm0tNDEuOTA2LC01LjU3NmMwLjAxMSwwLjQ5IC0wLjE4MSwwLjk2NCAtMC41MywxLjMwOGMtMC4zMjUsMC4zNDIgLTAuNzc3LDAuNTM0IC0xLjI0OSwwLjUzMWwtMTAuNzE1LDBjLTAuNDcyLDAuMDAzIC0wLjkyNCwtMC4xODkgLTEuMjQ5LC0wLjUzMWMtMC4zNDksLTAuMzQ0IC0wLjU0MiwtMC44MTggLTAuNTMsLTEuMzA4bDAsLTEwLjU4OGMtMC4wMTIsLTAuNDkgMC4xODEsLTAuOTY0IDAuNTMsLTEuMzA4YzAuMzI1LC0wLjM0MSAwLjc3NywtMC41MzMgMS4yNDksLTAuNTNsMTAuNjk4LDBjMC40NzUsLTAuMDA2IDAuOTMsMC4xODcgMS4yNTgsMC41M2MwLjM0OCwwLjM0NSAwLjU0LDAuODE4IDAuNTMsMS4zMDhsMCwxMC41ODhsMC4wMDgsMFptLTAuMTExLC0yMC44NDJjLTAuMDQ1LDAuMzggLTAuMjYzLDAuNzE4IC0wLjU5LDAuOTE2Yy0wLjM4OSwwLjI1IC0wLjg0NiwwLjM3NSAtMS4zMDgsMC4zNTlsLTEwLjMyMywwYy0wLjQ3LDAuMDEzIC0wLjkzNCwtMC4xMTIgLTEuMzM0LC0wLjM1OWMtMC4zMzgsLTAuMTg1IC0wLjU1MSwtMC41MzkgLTAuNTU2LC0wLjkyNGwtMC45NDksLTI1LjQ2OGMtMC4wMywtMC40NiAwLjE4MSwtMC45MDQgMC41NTYsLTEuMTcyYzAuMzU4LC0wLjM1NSAwLjgzMSwtMC41NzMgMS4zMzQsLTAuNjE2bDEyLjI3MiwwYzAuNTA2LDAuMDQgMC45ODIsMC4yNTggMS4zNDMsMC42MTZjMC4zNTcsMC4yMzIgMC41NjgsMC42MzUgMC41NTYsMS4wNmwtMS4wMDEsMjUuNTg4WiIgZmlsbD0iI2ZjYjIxNCIvPjwvc3ZnPg==");background-repeat:no-repeat;background-position:center center;background-size:80%}.wf-scanner-progress>.wf-scan-step>.wf-scan-step-icon>.wf-scan-step-disabled,.wf-step-disabled{display:none;width:50px;height:54px;background:#fff url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj48c3ZnIHdpZHRoPSI1MHB4IiBoZWlnaHQ9IjUwcHgiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTk1Ljg5LDMwLjUyOGMtMi40OTYsLTUuOTQxIC02LjEwOCwtMTEuMzUxIC0xMC42NDIsLTE1LjkzOGMtNC41NzUsLTQuNTM4IC05Ljk5LC04LjE0OCAtMTUuOTQyLC0xMC42M2MtMTIuNDAxLC01LjI4IC0yNi40NDEsLTUuMjggLTM4Ljg0MiwwYy01Ljk2NSwyLjQ4NSAtMTEuMzg5LDYuMTAxIC0xNS45NzIsMTAuNjVjLTQuNTEsNC41ODYgLTguMTAxLDkuOTg5IC0xMC41ODIsMTUuOTE4Yy01LjI4NywxMi40MzIgLTUuMjg3LDI2LjQ5IDAsMzguOTIxYzIuNDk1LDUuOTQyIDYuMTA3LDExLjM1MyAxMC42NDIsMTUuOTM5YzQuNTgzLDQuNTQ4IDEwLjAwNyw4LjE2NSAxNS45NzIsMTAuNjQ5YzEyLjQsNS4yODQgMjYuNDQyLDUuMjg0IDM4Ljg0MiwwYzUuOTY1LC0yLjQ4NCAxMS4zODksLTYuMTAxIDE1Ljk3MiwtMTAuNjQ5YzQuNTM2LC00LjU4NSA4LjE0OSwtOS45OTYgMTAuNjQyLC0xNS45MzljNS4yODcsLTEyLjQzMSA1LjI4NywtMjYuNDg5IDAsLTM4LjkyMWwtMC4wOSwwWm0tNzUuNjA4LDM4Ljg1MWMtNy4zMDIsLTExLjIxMiAtNy42ODksLTI1LjYyIC0wLjk5OCwtMzcuMjA3YzMuMDc1LC01LjM3NSA3LjUyMiwtOS44NDQgMTIuODg3LC0xMi45NWM1LjM3NSwtMy4xMjkgMTEuNDk3LC00Ljc1NCAxNy43MTksLTQuNzAyYzYuOTU1LC0wLjA2IDEzLjc2NiwyLjAwMiAxOS41MTYsNS45MDdsLTQ5LjEyNCw0OC45NTJabTYyLjIwMSwtNS42NDhjLTEuNzU1LDQuMjI4IC00LjMxOCw4LjA3NiAtNy41NDcsMTEuMzI2Yy0zLjI0MywzLjIyOSAtNy4wNzYsNS44MDkgLTExLjI5LDcuNjAxYy00LjM0MywxLjg4MyAtOS4wMzEsMi44NDYgLTEzLjc2NiwyLjgyOWMtNi44NzIsMC4wMDggLTEzLjU5NSwtMi4wMTcgLTE5LjMxNiwtNS44MTdsNDkuMDU0LC00OC44MTNjMy43NDEsNS42ODcgNS43MTEsMTIuMzU0IDUuNjYsMTkuMTU3YzAuMDAzLDQuNzEzIC0wLjk0OCw5LjM3OSAtMi43OTUsMTMuNzE3bDAsMFoiIGZpbGw9IiNkMWQxZDEiLz48L3N2Zz4=");background-repeat:no-repeat;background-position:center center;background-size:80%}.wf-scanner-progress>.wf-scan-step>.wf-scan-step-icon>.wf-scan-step-premium,.wf-step-premium{width:50px;height:54px;background:#fff url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIzMHB4IiB2aWV3Qm94PSIwIDAgMjQgMzAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTxwYXRoIGQ9Ik0yMy45NDksMTQuMjMzYy0wLjM3OSwtMC4zOSAtMC45MDQsLTAuNjA2IC0xLjQ0OCwtMC41OTVsLTAuNjgzLDBsMCwtNC4wOTJjMC4wMzIsLTIuNTM1IC0wLjk4NiwtNC45NzMgLTIuODEyLC02LjczMWMtMS43NTksLTEuODI4IC00LjE5OCwtMi44NDcgLTYuNzM0LC0yLjgxNWMtMi41MzYsLTAuMDMyIC00Ljk3NiwwLjk4NyAtNi43MzQsMi44MTVjLTEuODI2LDEuNzU4IC0yLjg0NCw0LjE5NiAtMi44MTIsNi43MzFsMCw0LjA4OWwtMC42OCwwYy0wLjU0NCwtMC4wMTEgLTEuMDY5LDAuMjA1IC0xLjQ0OCwwLjU5NWMtMC4zOTUsMC4zODIgLTAuNjEyLDAuOTEyIC0wLjU5OCwxLjQ2MWwwLDEyLjI2NmMtMC4wMTEsMC41NDQgMC4yMDQsMS4wNjkgMC41OTUsMS40NDhjMC4zNzksMC4zOTEgMC45MDQsMC42MDYgMS40NDgsMC41OTVsMjAuNDU4LDBjMC4wMDMsMCAwLjAwNiwwIDAuMDEsMGMxLjExNywwIDIuMDM2LC0wLjkxOSAyLjAzNiwtMi4wMzdjMCwtMC4wMDMgMCwtMC4wMDYgMCwtMC4wMDlsMCwtMTIuMjYzYzAuMDExLC0wLjU0NCAtMC4yMDYsLTEuMDY5IC0wLjU5OCwtMS40NDhsMCwtMC4wMVptLTYuMjExLC0wLjU5NWwtMTAuOTE5LDBsMCwtNC4wOTJjLTAuMDIyLC0xLjQ1MSAwLjU1NywtMi44NDggMS41OTksLTMuODU4YzEuMDA5LC0xLjA0MiAyLjQwNywtMS42MjEgMy44NTcsLTEuNTk4YzEuNDUxLC0wLjAyMyAyLjg0OCwwLjU1NiAzLjg1OCwxLjU5OGMxLjA0MiwxLjAwOSAxLjYyMSwyLjQwNyAxLjU5OCwzLjg1OGwwLjAwNyw0LjA5MloiIGZpbGw9IiNkMWQxZDEiLz4KPC9zdmc+");background-repeat:no-repeat;background-position:center center;background-size:40%}.wf-scanner-progress>.wf-scan-step.wf-scan-step-premium>.wf-scan-step-icon>.wf-scan-step-pending{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-premium>.wf-scan-step-icon>.wf-scan-step-running{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-premium>.wf-scan-step-icon>.wf-scan-step-complete-success{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-premium>.wf-scan-step-icon>.wf-scan-step-complete-warning{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-premium>.wf-scan-step-icon>.wf-scan-step-disabled{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-running>.wf-scan-step-icon>.wf-scan-step-pending{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-running>.wf-scan-step-icon>.wf-scan-step-running{display:block}.wf-scanner-progress>.wf-scan-step.wf-scan-step-running>.wf-scan-step-icon>.wf-scan-step-complete-success{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-running>.wf-scan-step-icon>.wf-scan-step-complete-warning{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-running>.wf-scan-step-icon>.wf-scan-step-disabled{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-complete-success>.wf-scan-step-icon>.wf-scan-step-pending{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-complete-success>.wf-scan-step-icon>.wf-scan-step-running{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-complete-success>.wf-scan-step-icon>.wf-scan-step-complete-success{display:block}.wf-scanner-progress>.wf-scan-step.wf-scan-step-complete-success>.wf-scan-step-icon>.wf-scan-step-complete-warning{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-complete-success>.wf-scan-step-icon>.wf-scan-step-disabled{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-complete-warning>.wf-scan-step-icon>.wf-scan-step-pending{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-complete-warning>.wf-scan-step-icon>.wf-scan-step-running{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-complete-warning>.wf-scan-step-icon>.wf-scan-step-complete-success{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-complete-warning>.wf-scan-step-icon>.wf-scan-step-complete-warning{display:block}.wf-scanner-progress>.wf-scan-step.wf-scan-step-complete-warning>.wf-scan-step-icon>.wf-scan-step-disabled{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-disabled>.wf-scan-step-icon>.wf-scan-step-pending{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-disabled>.wf-scan-step-icon>.wf-scan-step-running{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-disabled>.wf-scan-step-icon>.wf-scan-step-complete-success{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-disabled>.wf-scan-step-icon>.wf-scan-step-complete-warning{display:none}.wf-scanner-progress>.wf-scan-step.wf-scan-step-disabled>.wf-scan-step-icon>.wf-scan-step-disabled{display:block}#wf-scan-last-status{font-size:0.75rem;text-align:center}@media (min-width: 768px){#wf-scan-last-status{text-align:left}}#wf-scan-activity-log-controls{-webkit-flex-shrink:0;flex-shrink:0;text-align:center;white-space:nowrap}@media (min-width: 768px){#wf-scan-activity-log-controls{text-align:right}}#wf-scan-activity-log-controls a{text-transform:uppercase;font-size:0.75rem;white-space:nowrap}#wf-scan-toggle-activity-log .wf-scan-activity-log-visible{display:none}#wf-scan-toggle-activity-log .wf-scan-activity-log-hidden{display:inline}#wf-scan-toggle-activity-log.wf-active .wf-scan-activity-log-visible{display:inline}#wf-scan-toggle-activity-log.wf-active .wf-scan-activity-log-hidden{display:none}#wf-scan-running-bar{height:4px;border:1px solid #e2e2e2;background-color:#ffffff;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}#wf-scan-running-bar-pill{height:4px;width:33.3333%;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-webkit-animation:wf-scan-running-bar-pill-keyframes 1s linear infinite alternate both;-o-animation:wf-scan-running-bar-pill-keyframes 1s linear infinite alternate both;animation:wf-scan-running-bar-pill-keyframes 1s linear infinite alternate both}@-moz-keyframes wf-scan-running-bar-pill-keyframes{from{margin-left:0%}to{margin-left:66.6667%}}@-webkit-keyframes wf-scan-running-bar-pill-keyframes{from{margin-left:0%}to{margin-left:66.6667%}}@keyframes wf-scan-running-bar-pill-keyframes{from{margin-left:0%}to{margin-left:66.6667%}}#wf-scan-activity-log{display:none;overflow-x:hidden;overflow-y:auto;background-color:#ffffff;box-shadow:0 0 0 1px rgba(200,215,225,0.25),0 1px 2px #e9eff3;padding:0.5rem;height:7rem}#wf-scan-activity-log>li{margin:0;padding:0}#wf-scan-activity-log.wf-active{display:block}.wf-scan-tabs{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;box-shadow:inset 0px 0px 0px 1px #f1f1f1,inset 0px -1px 0px 1px #e2e2e2;margin:0.5rem 0 0 0}.wf-scan-tabs>*{-webkit-flex-grow:0;flex-grow:0;min-width:0}.wf-scan-tabs .wf-tab{border:1px solid #d0d0d0;border-top-right-radius:0.5rem;border-top-left-radius:0.5rem;border-bottom:none;margin:0;margin-left:0.5rem;background:#e6e6e6;color:#333}.wf-scan-tabs .wf-tab:first-of-type{margin-left:0}.wf-scan-tabs .wf-tab a{display:block;padding:0.5rem 1rem;font-size:14px;line-height:24px;text-decoration:none;font-weight:bold;color:#333}.wf-scan-tabs .wf-tab.wf-active,.wf-scan-tabs .wf-tab:hover{border-bottom:1px solid #ffffff;background:#ffffff;margin-bottom:-1px;-webkit-box-shadow:none;box-shadow:none}.wf-scan-tabs #wf-scan-bulk-buttons{-webkit-flex-grow:1 !important;flex-grow:1 !important;text-align:right}.wf-scan-tab-content{display:none;margin-top:15px}.wf-scan-tab-content.wf-active{display:block}.wf-scan-results{margin:0;margin-top:-1px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border-left:1px solid #e2e2e2;border-right:1px solid #e2e2e2;border-bottom:1px solid #e2e2e2}.wf-scan-results>.wf-scan-results-stats{margin:0}.wf-scan-results>.wf-scan-results-stats>.wf-block{box-shadow:none;margin:0}.wf-scan-results>.wf-scan-results-stats>.wf-block>.wf-block-content>.wf-block-list>li{border-top:0px;padding:0 1rem}.wf-scan-results>.wf-scan-results-stats>.wf-block>.wf-block-content>.wf-block-list .wf-flex-horizontal>li{font-size:0.75rem;white-space:nowrap;margin:0}.wf-scan-results>.wf-scan-results-stats>.wf-block>.wf-block-content>.wf-block-list .wf-flex-horizontal>li:last-of-type{text-align:right}.wf-scan-results-issues{padding:0;margin:0;display:none}.wf-scan-results-issues.wf-active{display:block}.wf-issue,.wf-issue-site-cleaning{display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column;border-top:1px solid #e2e2e2}.wf-issue:nth-of-type(2n),.wf-issue-site-cleaning:nth-of-type(2n){background-color:#fff}.wf-issue>li,.wf-issue-site-cleaning>li{margin:0}.wf-issue.wf-issue-severity-critical,.wf-issue-site-cleaning.wf-issue-severity-critical{border-left:4px solid #930000}.wf-issue.wf-issue-severity-high,.wf-issue-site-cleaning.wf-issue-severity-high{border-left:4px solid #c10000}.wf-issue.wf-issue-severity-warning,.wf-issue.wf-issue-severity-medium,.wf-issue-site-cleaning.wf-issue-severity-warning,.wf-issue-site-cleaning.wf-issue-severity-medium{border-left:4px solid #fcb214}.wf-issue.wf-issue-severity-low,.wf-issue-site-cleaning.wf-issue-severity-low{border-left:4px solid #3f596b}.wf-issue.wf-issue-severity-good,.wf-issue-site-cleaning.wf-issue-severity-good{border-left:4px solid #16bc9b}.wf-issue>.wf-issue-summary>ul,.wf-issue-site-cleaning>.wf-issue-summary>ul{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row;padding:1.5rem}.wf-issue>.wf-issue-summary>ul>li,.wf-issue-site-cleaning>.wf-issue-summary>ul>li{margin:0;padding:0;padding-left:1.5rem}@media (max-width: 767px){.wf-issue>.wf-issue-summary>ul>li,.wf-issue-site-cleaning>.wf-issue-summary>ul>li{padding-left:0.5rem}}.wf-issue>.wf-issue-summary>ul>li:first-of-type,.wf-issue-site-cleaning>.wf-issue-summary>ul>li:first-of-type{padding-left:0}.wf-issue>.wf-issue-summary>ul>.wf-issue-icon,.wf-issue>.wf-issue-summary>ul>.wf-issue-icon-colored,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-icon,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-icon-colored{text-align:left;-webkit-flex-basis:50px;flex-basis:50px;-webkit-flex-shrink:0;flex-shrink:0}.wf-issue>.wf-issue-summary>ul>.wf-issue-icon>*,.wf-issue>.wf-issue-summary>ul>.wf-issue-icon-colored>*,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-icon>*,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-icon-colored>*{height:40px}.wf-issue>.wf-issue-summary>ul>.wf-issue-icon svg path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-icon svg path{fill:#9e9e9e}.wf-issue>.wf-issue-summary>ul>.wf-issue-short,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short{-webkit-flex-basis:40%;flex-basis:40%}.wf-issue>.wf-issue-summary>ul>.wf-issue-stats,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-stats{-webkit-flex-basis:25%;flex-basis:25%}.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats{-webkit-flex-grow:1;flex-grow:1}.wf-issue>.wf-issue-summary>ul .wf-issue-severity-critical,.wf-issue>.wf-issue-summary>ul .wf-issue-severity-high,.wf-issue>.wf-issue-summary>ul .wf-issue-severity-medium,.wf-issue>.wf-issue-summary>ul .wf-issue-severity-low,.wf-issue>.wf-issue-summary>ul .wf-issue-severity-warning,.wf-issue-site-cleaning>.wf-issue-summary>ul .wf-issue-severity-critical,.wf-issue-site-cleaning>.wf-issue-summary>ul .wf-issue-severity-high,.wf-issue-site-cleaning>.wf-issue-summary>ul .wf-issue-severity-medium,.wf-issue-site-cleaning>.wf-issue-summary>ul .wf-issue-severity-low,.wf-issue-site-cleaning>.wf-issue-summary>ul .wf-issue-severity-warning{padding-left:18px;position:relative}.wf-issue>.wf-issue-summary>ul .wf-issue-severity-critical:before,.wf-issue>.wf-issue-summary>ul .wf-issue-severity-high:before,.wf-issue>.wf-issue-summary>ul .wf-issue-severity-medium:before,.wf-issue>.wf-issue-summary>ul .wf-issue-severity-low:before,.wf-issue>.wf-issue-summary>ul .wf-issue-severity-warning:before,.wf-issue-site-cleaning>.wf-issue-summary>ul .wf-issue-severity-critical:before,.wf-issue-site-cleaning>.wf-issue-summary>ul .wf-issue-severity-high:before,.wf-issue-site-cleaning>.wf-issue-summary>ul .wf-issue-severity-medium:before,.wf-issue-site-cleaning>.wf-issue-summary>ul .wf-issue-severity-low:before,.wf-issue-site-cleaning>.wf-issue-summary>ul .wf-issue-severity-warning:before{content:'';display:block;position:absolute;top:50%;left:0;margin-top:-5px;border:5px solid #9f9fa0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.wf-issue>.wf-issue-summary>ul .wf-issue-severity-critical:before,.wf-issue-site-cleaning>.wf-issue-summary>ul .wf-issue-severity-critical:before{border-color:#930000}.wf-issue>.wf-issue-summary>ul .wf-issue-severity-high:before,.wf-issue-site-cleaning>.wf-issue-summary>ul .wf-issue-severity-high:before{border-color:#c10000}.wf-issue>.wf-issue-summary>ul .wf-issue-severity-medium:before,.wf-issue>.wf-issue-summary>ul .wf-issue-severity-warning:before,.wf-issue-site-cleaning>.wf-issue-summary>ul .wf-issue-severity-medium:before,.wf-issue-site-cleaning>.wf-issue-summary>ul .wf-issue-severity-warning:before{border-color:#fcb214}.wf-issue>.wf-issue-summary>ul .wf-issue-severity-low:before,.wf-issue-site-cleaning>.wf-issue-summary>ul .wf-issue-severity-low:before{border-color:#3f596b}.wf-issue>.wf-issue-summary>ul>.wf-issue-controls,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls{-webkit-flex-grow:1;flex-grow:1;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-end;justify-content:flex-end;-webkit-flex-direction:row;flex-direction:row}.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;-webkit-flex-direction:column;flex-direction:column;padding-left:2rem;text-decoration:none}.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:first-of-type,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:first-of-type,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:first-of-type,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:first-of-type{padding-left:0}.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control>.wf-issue-control-icon,.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-inactive,.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-active,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control>.wf-issue-control-icon,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-inactive,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-active,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control>.wf-issue-control-icon,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-inactive,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-active,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control>.wf-issue-control-icon,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-inactive,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-active{height:20px}.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control>.wf-issue-control-icon path,.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-inactive path,.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-active path,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control>.wf-issue-control-icon path,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-inactive path,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-active path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control>.wf-issue-control-icon path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-inactive path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-active path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control>.wf-issue-control-icon path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-inactive path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control .wf-issue-control-icon-active path{fill:#9e9e9e;fill-rule:nonzero}.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control>.wf-issue-control-label,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control>.wf-issue-control-label,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control>.wf-issue-control-label,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control>.wf-issue-control-label{padding-top:0.65rem;font-size:0.7rem;font-weight:500;text-transform:uppercase;color:#9e9e9e}.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls{margin-top:1rem;-webkit-justify-content:flex-start;justify-content:flex-start}.wf-issue .wf-issue-control-icon-active,.wf-issue-site-cleaning .wf-issue-control-icon-active{display:none}.wf-issue .wf-issue-control-icon-inactive,.wf-issue-site-cleaning .wf-issue-control-icon-inactive{display:block}.wf-issue>.wf-issue-detail,.wf-issue-site-cleaning>.wf-issue-detail{display:none;padding:1.5rem;border-top:1px solid #e2e2e2}.wf-issue>.wf-issue-detail .wf-issue-detail-spacer,.wf-issue-site-cleaning>.wf-issue-detail .wf-issue-detail-spacer{height:1rem;margin:0;padding:0}.wf-issue>.wf-issue-detail .wf-issue-detail-controls,.wf-issue-site-cleaning>.wf-issue-detail .wf-issue-detail-controls{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row;margin:0;margin-top:1rem}.wf-issue>.wf-issue-detail .wf-issue-detail-controls>*,.wf-issue-site-cleaning>.wf-issue-detail .wf-issue-detail-controls>*{margin-left:1rem}.wf-issue>.wf-issue-detail .wf-issue-detail-controls>*:first-of-type,.wf-issue-site-cleaning>.wf-issue-detail .wf-issue-detail-controls>*:first-of-type{margin-left:0}@media (max-width: 767px){.wf-issue>.wf-issue-detail .wf-issue-detail-controls,.wf-issue-site-cleaning>.wf-issue-detail .wf-issue-detail-controls{-webkit-align-items:flex-start;align-items:flex-start;-webkit-flex-direction:column;flex-direction:column}.wf-issue>.wf-issue-detail .wf-issue-detail-controls>*,.wf-issue-site-cleaning>.wf-issue-detail .wf-issue-detail-controls>*{margin-left:0;margin-top:0.5rem}.wf-issue>.wf-issue-detail .wf-issue-detail-controls>*:first-of-type,.wf-issue-site-cleaning>.wf-issue-detail .wf-issue-detail-controls>*:first-of-type{margin-top:0}}.wf-issue>.wf-issue-detail .wf-vulnerability-severity-critical,.wf-issue-site-cleaning>.wf-issue-detail .wf-vulnerability-severity-critical{color:#cc0500}.wf-issue>.wf-issue-detail .wf-vulnerability-severity-high,.wf-issue-site-cleaning>.wf-issue-detail .wf-vulnerability-severity-high{color:#df3d03}.wf-issue>.wf-issue-detail .wf-vulnerability-severity-medium,.wf-issue-site-cleaning>.wf-issue-detail .wf-vulnerability-severity-medium{color:#f9a009}.wf-issue>.wf-issue-detail .wf-vulnerability-severity-low,.wf-issue-site-cleaning>.wf-issue-detail .wf-vulnerability-severity-low{color:#ffcb0d}.wf-issue>.wf-issue-detail .wf-vulnerability-severity-none,.wf-issue-site-cleaning>.wf-issue-detail .wf-vulnerability-severity-none{color:#333}.wf-issue.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-icon-inactive,.wf-issue-site-cleaning.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-icon-inactive{display:none}.wf-issue.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-icon-active,.wf-issue-site-cleaning.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-icon-active{display:block}.wf-issue.wf-active>.wf-issue-detail,.wf-issue-site-cleaning.wf-active>.wf-issue-detail{display:block}.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short{-webkit-flex-basis:auto;flex-basis:auto}.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short p{padding:0;margin:0}.wf-option-scan-signatures>.wf-option-disclosure{-webkit-flex-grow:1;flex-grow:1;text-align:right}.wf-option-scan-signatures>.wf-option-disclosure>svg{transition:transform 0.15s cubic-bezier(0.175, 0.885, 0.32, 1.275)}#wf-scan-additional-signatures{display:none;margin-left:3rem;padding-left:30px;padding-bottom:1rem}#wf-scan-additional-signatures>h4{margin:0 0 0.5rem 0}#wf-scan-additional-signatures>textarea{width:300px;height:80px}.wf-scan-type-enabled{padding:1rem 0.5rem}.wf-scan-type-enabled>li:first-of-type{padding-right:1.5rem}.wf-scan-type-controls{display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column;margin:0 -0.5rem}.wf-scan-type{display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:center;justify-content:center;-webkit-flex-direction:row;flex-direction:row;min-width:700px}@media (max-width: 767px){.wf-scan-type{-webkit-justify-content:flex-start;justify-content:flex-start}}.wf-scan-type>li{-webkit-flex-grow:1;flex-grow:1;-webkit-flex-shrink:0;flex-shrink:0;-webkit-flex-basis:25%;flex-basis:25%;display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:center;justify-content:center;max-width:25%;padding:0.5rem}@media (min-width: 768px){.wf-scan-type>li{-webkit-flex-shrink:1;flex-shrink:1}}.wf-scan-type>li>ul.wf-scan-type-option{-webkit-flex-grow:1;flex-grow:1;margin:0;padding:0;border:1px solid #d9d9d9;min-height:100%;cursor:pointer}.wf-scan-type>li>ul.wf-scan-type-option.wf-scan-type-option-custom{cursor:inherit}.wf-scan-type>li>ul.wf-scan-type-option>.wf-scan-type-option-name{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;-webkit-flex-direction:row;flex-direction:row;border-bottom:2px solid #d9d9d9;padding:0.5rem 1rem}.wf-scan-type>li>ul.wf-scan-type-option>.wf-scan-type-option-name .wf-option-checkbox{margin-right:0.5rem;width:20px;height:20px;min-width:20px;min-height:20px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;line-height:20px !important;background-color:#ffffff;box-shadow:0px 0px 0px 1px rgba(185,185,185,0.75);color:#ffffff !important;font-size:25px !important}.wf-scan-type>li>ul.wf-scan-type-option>.wf-scan-type-option-name span{font-weight:400;font-size:0.95rem}.wf-scan-type>li>ul.wf-scan-type-option>.wf-scan-type-option-description{padding:1rem}.wf-scan-type>li>ul.wf-scan-type-option.wf-active>.wf-scan-type-option-name span{color:#ffffff}.wf-scan-scheduling-manual{display:none;margin-left:3rem;padding-left:30px}.wf-scan-scheduling-manual.wf-active{display:block}.wf-scan-scheduling-manual>li{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row}.wf-scan-scheduling-manual .wf-scan-scheduling-manual-presets-label{padding-right:1rem}.wf-scan-scheduling-manual .wf-scan-scheduling-manual-presets{display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row;margin:0;padding:0}.wf-scan-scheduling-manual .wf-scan-scheduling-manual-presets>li{margin:0;padding:0.5rem 0.7rem;text-transform:uppercase;cursor:pointer;color:#aaa;font-weight:400;border-top:1px solid #bfbfbf;border-bottom:1px solid #bfbfbf;border-right:1px solid #bfbfbf}.wf-scan-scheduling-manual .wf-scan-scheduling-manual-presets>li:first-of-type{border-left:1px solid #bfbfbf;-moz-border-radius-topleft:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px}.wf-scan-scheduling-manual .wf-scan-scheduling-manual-presets>li:last-of-type{-moz-border-radius-topright:6px;-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-moz-border-radius-bottomright:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px}.wf-scan-scheduling-manual .wf-scan-scheduling-manual-presets>li.wf-active{color:#ffffff}.wf-scan-scheduling-manual-preset-options .wfselect2-container{min-width:100px}.wf-scan-scheduling-manual-preset-options:not(.wf-active),.wf-scan-scheduling-manual-custom-options:not(.wf-active){display:none !important}.wf-scan-scheduling-manual-custom-options{padding-bottom:1rem}.wf-schedule-times-wrapper{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-direction:row;flex-direction:row;margin-top:1rem}@media (min-width: 768px){.wf-schedule-times-wrapper{margin-top:0.25rem}}.wf-schedule-times-wrapper:first-of-type{margin-top:0}@media (min-width: 768px){.wf-schedule-times-wrapper:first-of-type{margin-top:1rem}}.wf-schedule-times-wrapper>*{-webkit-flex-grow:1;flex-grow:1;min-width:0}.wf-schedule-times-wrapper>*:first-child{-webkit-flex-grow:0;flex-grow:0;min-width:initial;padding-right:0.25rem}.wf-schedule-times-wrapper .wf-schedule-period{font-weight:500;padding:0.5rem 0.7rem}.wf-schedule-times{display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row}.wf-schedule-times>li{margin:0;padding:0.5rem 0.7rem;text-transform:uppercase;cursor:pointer;color:#aaa;font-weight:400;border-top:1px solid #bfbfbf;border-bottom:1px solid #bfbfbf;border-right:1px solid #bfbfbf}.wf-schedule-times>li:first-of-type{border-left:1px solid #bfbfbf;-moz-border-radius-topleft:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px}.wf-schedule-times>li:last-of-type{-moz-border-radius-topright:6px;-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-moz-border-radius-bottomright:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px}.wf-schedule-times>li.wf-active{color:#ffffff}.wf-issue-control-ignore-menu{position:absolute;z-index:9999;background-color:#ffffff;border:1px solid #bfbfbf}.wf-issue-control-ignore-menu>li{padding:0.5rem 1rem;margin:0;border-top:1px solid #bfbfbf;cursor:pointer}.wf-issue-control-ignore-menu>li:hover{color:#ffffff}.wf-issue-control-ignore-menu>li:first-of-type{border-top:0}#wf-scan-failed.wf-alert.wf-alert-danger{background-color:#ffe470;border-color:#ffd10a;border-radius:0}#wf-scan-failed.wf-alert.wf-alert-danger pre{white-space:normal}#wf-scan-failed.wf-alert.wf-alert-danger svg{width:50px;height:50px;margin-right:1rem}#wf-scan-failed.wf-alert.wf-alert-danger svg path{fill:#da9603}#wf-scan-failed.wf-alert.wf-alert-danger h4{margin:0}#wf-scan-failed.wf-alert.wf-alert-danger p{margin-top:0.25rem;margin-bottom:0}#wf-scan-failed.wf-alert.wf-alert-danger .wf-btn.wf-btn-default{border-color:#ffffff;background-color:#ffffff;color:#000000}#wf-site-cleaning-bottom h3{font-weight:300;font-size:1.5rem;margin:1rem 0}#wf-site-cleaning-bottom p{max-width:750px}#wfTwoFactorQRCodeTable{width:175px;height:175px;margin:0 auto}@media (min-width: 500px){#wfTwoFactorQRCodeTable{width:256px;height:256px}}#wfTwoFactorRecoveryCodes{list-style-type:none}#wfTwoFactorRecoveryCodes li{font-family:monospace;text-align:center}#wfTwoFactorDownload .dashicons{line-height:26px}.wf-twofactor-delete{font-size:1.5rem}.wf-twofactor-delete a{text-decoration:none;color:#333}.wf-twofactor-delete a i{font-size:1.5rem}.wf-table.wf-table-twofactor>tbody>tr>td{vertical-align:middle}.wf-form-twofactor{max-width:400px}.wf-form-twofactor .wf-radio label{padding-left:0}#twofactor .wf-block-list>li{padding:.8rem 1.5rem;min-height:0px}#twofactor .wf-block-list .wf-form-control{margin:0px 0px}.wf-block-list .wf-block-list-title{font-weight:bold;font-size:0.9rem}.wf-block-list .wf-block-list-subtitle{font-weight:bold;font-size:0.85rem}#wfTwoFacUsers{margin:0 auto 1.5rem}#wf-tools-two-factor #wf-two-factor-img1,#wf-tools-two-factor #wf-two-factor-img2,#wf-all-options #wf-two-factor-img1,#wf-all-options #wf-two-factor-img2{display:inline}#wf-tools-two-factor #wf-two-factor-img1,#wf-all-options #wf-two-factor-img1{max-width:316px}#wf-tools-two-factor #wf-two-factor-img2,#wf-all-options #wf-two-factor-img2{max-width:270px}#wfUsername{max-width:568px}@media screen and (max-width: 782px){#wf-tools-two-factor #wf-two-factor-img1,#wf-tools-two-factor #wf-two-factor-img2,#wf-all-options #wf-two-factor-img1,#wf-all-options #wf-two-factor-img2{display:block;margin:0px auto 20px}}#wordfenceTwoFactorLegacy,#wordfenceTwoFactorModern{background:#fff;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);margin-bottom:0.5rem;padding:1px 13px}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}label.wf-plain{font-weight:normal}label.wf-control-label.wf-disabled{pointer-events:none}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:1.5rem;font-size:14px;line-height:1.42857;color:#555}.wf-form-control{display:block;width:100%;height:38px;padding:.5rem 1.25rem;font-size:14px;line-height:1.42857;color:#555;background-color:#fff;background-image:none;border:1px solid #ddd;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;-o-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s}.wf-form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.wf-form-control::-moz-placeholder{color:#bfbfbf;opacity:1}.wf-form-control:-ms-input-placeholder{color:#bfbfbf}.wf-form-control::-webkit-input-placeholder{color:#bfbfbf}.wf-form-control::-ms-expand{border:0;background-color:transparent}.wf-form-control[disabled],.wf-form-control[readonly],fieldset[disabled] .wf-form-control{background-color:#e2e2e2;opacity:1}.wf-form-control[disabled],.wf-form-control[readonly],fieldset[disabled] .wf-form-control{cursor:not-allowed;pointer-events:none}textarea.wf-form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio: 0){input[type="date"].wf-form-control,input[type="time"].wf-form-control,input[type="datetime-local"].wf-form-control,input[type="month"].wf-form-control{line-height:38px}input[type="date"].wf-input-sm,.wf-input-group-sm input[type="date"],input[type="time"].wf-input-sm,.wf-input-group-sm input[type="time"],input[type="datetime-local"].wf-input-sm,.wf-input-group-sm input[type="datetime-local"],input[type="month"].wf-input-sm,.wf-input-group-sm input[type="month"]{line-height:30px}input[type="date"].wf-input-lg,.wf-input-group-lg input[type="date"],input[type="time"].wf-input-lg,.wf-input-group-lg input[type="time"],input[type="datetime-local"].wf-input-lg,.wf-input-group-lg input[type="datetime-local"],input[type="month"].wf-input-lg,.wf-input-group-lg input[type="month"]{line-height:46px}}.wf-form-group{margin-bottom:8px}.wf-form-group.wf-sub-group label{color:#666666;font-weight:normal;padding-left:20px}.wf-form-group.wf-focus{border-left:4px solid #11967a;padding-bottom:8px;background-color:#e5e5e5}.wf-form-group.wf-focus label{margin-left:-4px}.wf-radio,.wf-checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.wf-radio label,.wf-checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.wf-radio input[type="radio"],.wf-radio-inline input[type="radio"],.wf-checkbox input[type="checkbox"],.wf-checkbox-inline input[type="checkbox"]{margin-top:4px \9}.wf-radio-offset{padding-left:29px}@media (min-width: 768px){.wf-radio-offset{padding-left:20px}}.wf-radio+.wf-radio,.wf-checkbox+.wf-checkbox{margin-top:-5px}.wf-radio-inline,.wf-checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.wf-radio-inline+.wf-radio-inline,.wf-checkbox-inline+.wf-checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="radio"][readonly],input[type="radio"].wf-disabled,fieldset[disabled] input[type="radio"],input[type="checkbox"][disabled],input[type="checkbox"][readonly],input[type="checkbox"].wf-disabled,fieldset[disabled] input[type="checkbox"]{cursor:not-allowed;pointer-events:none}.wf-radio-inline.wf-disabled,fieldset[disabled] .wf-radio-inline,.wf-checkbox-inline.wf-disabled,fieldset[disabled] .wf-checkbox-inline{cursor:not-allowed}.wf-radio.wf-disabled label,fieldset[disabled] .wf-radio label,.wf-checkbox.wf-disabled label,fieldset[disabled] .wf-checkbox label{cursor:not-allowed;pointer-events:none}.wf-form-control-static{padding-top:1.5rem;padding-bottom:1.5rem;margin:0;line-height:1}.wf-form-control-static.wf-input-lg,.wf-form-control-static.wf-input-sm{padding-left:0;padding-right:0}.wf-input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.wf-input-sm{height:30px;line-height:30px}textarea.wf-input-sm,select[multiple].wf-input-sm{height:auto}.wf-form-group-sm .wf-form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.wf-form-group-sm select.wf-form-control{height:30px;line-height:30px}.wf-form-group-sm textarea.wf-form-control,.wf-form-group-sm select[multiple].wf-form-control{height:auto}.wf-form-group-sm .wf-form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.wf-input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33333;border-radius:6px}select.wf-input-lg{height:46px;line-height:46px}textarea.wf-input-lg,select[multiple].wf-input-lg{height:auto}.wf-form-group-lg .wf-form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33333;border-radius:6px}.wf-form-group-lg select.wf-form-control{height:46px;line-height:46px}.wf-form-group-lg textarea.wf-form-control,.wf-form-group-lg select[multiple].wf-form-control{height:auto}.wf-form-group-lg .wf-form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.33333}.wf-has-feedback{position:relative}.wf-has-feedback .wf-form-control{padding-right:47.5px}.wf-form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:38px;height:38px;line-height:38px;text-align:center;pointer-events:none}.wf-input-lg+.wf-form-control-feedback,.wf-input-group-lg+.wf-form-control-feedback,.wf-form-group-lg .wf-form-control+.wf-form-control-feedback{width:46px;height:46px;line-height:46px}.wf-input-sm+.wf-form-control-feedback,.wf-input-group-sm+.wf-form-control-feedback,.wf-form-group-sm .wf-form-control+.wf-form-control-feedback{width:30px;height:30px;line-height:30px}.wf-has-success .wf-help-block,.wf-has-success .wf-control-label,.wf-has-success .wf-radio,.wf-has-success .wf-checkbox,.wf-has-success .wf-radio-inline,.wf-has-success .wf-checkbox-inline,.wf-has-success.wf-radio label,.wf-has-success.wf-checkbox label,.wf-has-success.wf-radio-inline label,.wf-has-success.wf-checkbox-inline label{color:#3c763d}.wf-has-success .wf-form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.wf-has-success .wf-form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.wf-has-success .wf-input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.wf-has-success .wf-form-control-feedback{color:#3c763d}.wf-has-warning .wf-help-block,.wf-has-warning .wf-control-label,.wf-has-warning .wf-radio,.wf-has-warning .wf-checkbox,.wf-has-warning .wf-radio-inline,.wf-has-warning .wf-checkbox-inline,.wf-has-warning.wf-radio label,.wf-has-warning.wf-checkbox label,.wf-has-warning.wf-radio-inline label,.wf-has-warning.wf-checkbox-inline label{color:#8a6d3b}.wf-has-warning .wf-form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.wf-has-warning .wf-form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.wf-has-warning .wf-input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.wf-has-warning .wf-form-control-feedback{color:#8a6d3b}.wf-has-error .wf-help-block,.wf-has-error .wf-control-label,.wf-has-error .wf-radio,.wf-has-error .wf-checkbox,.wf-has-error .wf-radio-inline,.wf-has-error .wf-checkbox-inline,.wf-has-error.wf-radio label,.wf-has-error.wf-checkbox label,.wf-has-error.wf-radio-inline label,.wf-has-error.wf-checkbox-inline label{color:#a94442}.wf-has-error .wf-form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.wf-has-error .wf-form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.wf-has-error .wf-input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.wf-has-error .wf-form-control-feedback{color:#a94442}.wf-has-feedback label ~ .wf-form-control-feedback{top:25px}.wf-has-feedback label.wf-sr-only ~ .wf-form-control-feedback{top:0}.wf-help-block{display:block;margin-top:5px;color:#737373}@media (min-width: 768px){.wf-form-inline .wf-form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.wf-form-inline .wf-form-control{display:inline-block;width:auto;vertical-align:middle}.wf-form-inline .wf-form-control-static{display:inline-block}.wf-form-inline .wf-input-group{display:inline-table;vertical-align:middle}.wf-form-inline .wf-input-group .wf-input-group-addon,.wf-form-inline .wf-input-group .wf-input-group-btn,.wf-form-inline .wf-input-group .wf-form-control{width:auto}.wf-form-inline .wf-input-group>.wf-form-control{width:100%}.wf-form-inline .wf-control-label{margin-bottom:0;vertical-align:middle}.wf-form-inline .wf-radio,.wf-form-inline .wf-checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.wf-form-inline .wf-radio label,.wf-form-inline .wf-checkbox label{padding-left:0}.wf-form-inline .wf-radio input[type="radio"],.wf-form-inline .wf-checkbox input[type="checkbox"]{position:relative;margin-left:0}.wf-form-inline .wf-has-feedback .wf-form-control-feedback{top:0}}.wf-form-horizontal .wf-radio,.wf-form-horizontal .wf-checkbox,.wf-form-horizontal .wf-radio-inline,.wf-form-horizontal .wf-checkbox-inline{margin-top:0;margin-bottom:0;padding-top:1.5rem}.wf-form-horizontal .wf-radio,.wf-form-horizontal .wf-checkbox{min-height:29px}.wf-form-horizontal .wf-form-group{margin-left:-15px;margin-right:-15px}.wf-form-horizontal .wf-form-group:before,.wf-form-horizontal .wf-form-group:after{content:" ";display:table}.wf-form-horizontal .wf-form-group:after{clear:both}@media (min-width: 768px){.wf-form-horizontal .wf-control-label{text-align:right;margin-bottom:0;padding-top:1.5rem}}.wf-form-horizontal .wf-has-feedback .wf-form-control-feedback{right:15px}@media (min-width: 768px){.wf-form-horizontal .wf-form-group-lg .wf-control-label{padding-top:11px;font-size:18px}}@media (min-width: 768px){.wf-form-horizontal .wf-form-group-sm .wf-control-label{padding-top:6px;font-size:12px}}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status .wf-block-labeled-value-value,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status .wf-block-labeled-value-value{padding-top:0}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status .wf-block-labeled-value-value .wf-fa,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status .wf-block-labeled-value-value .wf-fa{font-size:8rem}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status .wf-block-labeled-value-value svg,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status .wf-block-labeled-value-value svg{width:140px}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status .wf-block-labeled-value-label,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status .wf-block-labeled-value-label{font-size:1.3125rem;font-weight:300;line-height:1.5;padding-bottom:0}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-full-enabled .wf-block-labeled-value-value,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-full-enabled .wf-block-labeled-value-value{color:#ffffff}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-full-enabled .wf-block-labeled-value-label,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-full-enabled .wf-block-labeled-value-label{color:#ffffff;padding:0}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-enabled .wf-block-labeled-value-value,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-enabled .wf-block-labeled-value-value{color:#11967a}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-enabled .wf-block-labeled-value-value svg,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-enabled .wf-block-labeled-value-value svg{fill:#11967a}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-enabled .wf-block-labeled-value-label,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-enabled .wf-block-labeled-value-label{color:#11967a}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-learning-mode .wf-block-labeled-value-value,#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-disabled .wf-block-labeled-value-value,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-learning-mode .wf-block-labeled-value-value,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-disabled .wf-block-labeled-value-value{color:#9f9fa0}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-learning-mode .wf-block-labeled-value-value svg,#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-disabled .wf-block-labeled-value-value svg,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-learning-mode .wf-block-labeled-value-value svg,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-disabled .wf-block-labeled-value-value svg{fill:#9f9fa0}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-learning-mode .wf-block-labeled-value-label,#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-disabled .wf-block-labeled-value-label,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-learning-mode .wf-block-labeled-value-label,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-disabled .wf-block-labeled-value-label{color:#9f9fa0}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status .wf-block-labeled-value-value .wf-fa,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status .wf-block-labeled-value-value .wf-fa{font-size:7rem}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status .wf-block-labeled-value-value svg,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status .wf-block-labeled-value-value svg{width:120px}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status .wf-block-labeled-value-label,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status .wf-block-labeled-value-label{font-size:1.15rem;font-weight:300}.wf-dashboard-item{position:relative;margin:0 auto 1rem;padding:0 1rem;box-sizing:border-box;background:#fff;box-shadow:0 0 0 1px rgba(200,215,225,0.5),0 1px 2px #e9eff3}.wf-dashboard-item .wf-dashboard-item-inner{min-height:44px;padding:1rem 0;width:100%;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;position:relative}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-content{max-width:75%}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-content .wf-dashboard-item-title{font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:0.875rem;width:100%}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-content .wf-dashboard-item-subtitle{margin-top:.125rem;margin-bottom:.125rem;font-size:.575rem;color:#4f748e}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-action{position:absolute;top:0;right:0;height:100%;background:none;border:0;outline:0;width:48px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;vertical-align:middle;transition:transform 0.15s cubic-bezier(0.175, 0.885, 0.32, 1.275),color 0.2s ease-in}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-action.wf-dashboard-item-action-text{width:auto}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-action.wf-dashboard-item-action-text.wf-dashboard-item-action-text-success{color:#11967a}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-action.wf-dashboard-item-action-text.wf-dashboard-item-action-text-warning{color:#930000}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-action.wf-dashboard-item-action-text.wf-dashboard-item-action-text-warning a{color:#930000}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-action .wf-dashboard-item-action-chevron{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJjaGV2cm9uLW9iamVjdCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgd2lkdGg9IjI0cHgiIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNCAyNCIKCSB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHBhdGggaWQ9ImNoZXZyb24iIGQ9Ik0yMCA5bC04IDgtOC04IDEuNDE0LTEuNDE0TDEyIDE0LjE3Mmw2LjU4Ni02LjU4NiIvPgo8L3N2Zz4K");background-repeat:no-repeat;background-position:center center;width:24px;height:24px;fill:#87a6bc}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-action .wf-dashboard-item-action-checkbox{background-image:url(../images/checkbox.png);background-repeat:no-repeat;background-position:left center;width:29px;height:29px}.wf-dashboard-item .wf-dashboard-item-inner .wf-dashboard-item-action .wf-dashboard-item-action-checkbox.checked{background-position:right center}.wf-dashboard-item .wf-dashboard-item-extra{display:none;margin:0 -1rem;padding:0 1rem}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list{margin:0 -1rem;padding:0;list-style:none}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-striped>li:nth-of-type(odd){background-color:#f9f9f9}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-striped>li:nth-of-type(odd).wf-notification{border-left:4px solid #f9f9f9}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-striped>li:nth-of-type(odd).wf-notification.wf-notification-warning{border-left:4px solid #fcb214}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-striped>li:nth-of-type(odd).wf-notification.wf-notification-critical{border-left:4px solid #930000}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-striped>li:nth-of-type(even){background-color:#ffffff}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-striped>li:nth-of-type(even).wf-notification{border-left:4px solid #ffffff}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-striped>li:nth-of-type(even).wf-notification.wf-notification-warning{border-left:4px solid #fcb214}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-striped>li:nth-of-type(even).wf-notification.wf-notification-critical{border-left:4px solid #930000}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list>li{display:block;min-height:44px;padding:0 1rem;margin:0;border-top:1px solid #eeeeee;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list>li>*:first-child{-webkit-flex-grow:1;flex-grow:1;min-width:0}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-horizontal{box-sizing:border-box;margin-top:-1px;display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-align-content:flex-start;align-content:flex-start;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-wrap:wrap;flex-wrap:wrap}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-horizontal>li{-webkit-flex-grow:1;flex-grow:1;-webkit-flex-basis:100%;flex-basis:100%;border-left:1px solid #eeeeee}@media (min-width: 768px){.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-horizontal>li{-webkit-flex-basis:50%;flex-basis:50%}}@media (min-width: 992px){.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-horizontal>li{-webkit-flex-basis:25%;flex-basis:25%}}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-horizontal>*:first-child{border-left:0}@media (min-width: 768px){.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-horizontal.wf-dashboard-item-list-equal>li{max-width:50%}}@media (min-width: 992px){.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list.wf-dashboard-item-list-horizontal.wf-dashboard-item-list-equal>li{max-width:25%}}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list .wf-dashboard-item-list-state{text-align:center}@media (min-width: 1200px){.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list .wf-dashboard-item-list-state{text-align:left}}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list .wf-dashboard-item-list-state-enabled .fa{color:#11967a}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list .wf-dashboard-item-list-state-disabled .fa{color:#525355}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list .wf-dashboard-item-list-state-premium{color:#9f9fa0}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list .wf-dashboard-item-list-dismiss{padding-left:2rem;font-size:1.25rem}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-list .wf-dashboard-item-list-dismiss a{color:#525355}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-labeled-count{box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-direction:column;flex-direction:column}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-labeled-count-count{font-size:3rem;line-height:3rem;color:#9f9fa0;padding:1rem}.wf-dashboard-item .wf-dashboard-item-extra .wf-dashboard-item-labeled-count-label{font-size:0.75rem;color:#9f9fa0;padding:0 1rem 1rem 1rem}.wf-dashboard-item.active .wf-dashboard-item-extra{display:block}.wf-dashboard-item.wf-dashboard-item-left .wf-dashboard-item-content{margin-left:48px}.wf-dashboard-item.wf-dashboard-item-left .wf-dashboard-item-action{right:auto;left:0px}.wf-dashboard-item.disabled .wf-dashboard-item-content .wf-dashboard-item-title{color:#aaaaaa}.wf-dashboard-item.disabled .wf-dashboard-item-content .wf-dashboard-item-subtitle{color:#8ea6be}.wf-dashboard-item-flex-wrapper{display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column}.wf-dashboard-item-flex-wrapper .wf-dashboard-item{-webkit-flex-grow:1;flex-grow:1;width:100%}.wf-notifications-empty{font-size:0.9rem;color:#9f9fa0}.wf-dashboard-graph-wrapper{width:100%}.wf-dashboard-badge{display:inline-block;min-width:10px;padding:3px 7px;margin-left:0.5rem;font-size:12px;font-weight:bold;color:#fff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#fcb214;border-radius:10px}.wf-dashboard-badge:empty{display:none}.wf-btn .wf-dashboard-badge{position:relative;top:-1px}.wf-btn-xs .wf-dashboard-badge,.wf-btn-group-xs>.wf-btn .wf-dashboard-badge,.wf-btn-group-xs>.wf-btn .wf-dashboard-badge{top:0;padding:1px 5px}.wf-list-group-item.active>.wf-dashboard-badge,.wf-nav-pills>.active>a>.wf-dashboard-badge{color:#00709e;background-color:#fff}.wf-list-group-item>.wf-dashboard-badge{float:right}.wf-list-group-item>.wf-dashboard-badge+.wf-dashboard-badge{margin-right:5px}.wf-nav-pills>li>a>.wf-dashboard-badge{margin-left:3px}.wf-dashboard-toggle-btns{text-align:center}.wf-dashboard-toggle-btns .wf-pagination{margin:1rem 1rem 0.5rem 1rem}.wf-dashboard-show-more{position:relative;font-size:14px;color:#959595;text-align:center;line-height:1rem;background:#ffffff;width:60%;margin:20px auto 0 auto}.wf-dashboard-show-more:before{display:inline-block;content:"";position:absolute;height:1px;background:#dddddd;top:50%;width:100%;left:0;right:0}.wf-dashboard-show-more a{display:inline-block;position:relative;padding:0 10px;background-color:#ffffff}.wf-ips,.wf-recent-logins,.wf-countries{max-height:30rem;overflow-y:auto;margin-bottom:20px}.wf-ips .wf-table,.wf-recent-logins .wf-table,.wf-countries .wf-table{margin-bottom:0}.wf-dashboard-last-updated{font-style:italic;font-size:0.6rem;text-align:center;padding-bottom:1rem;margin:0}.wf-dashboard-navigation .wf-block-navigation-option-content{padding:1rem 0 1rem 1rem}@media (min-width: 768px){.wf-dashboard-navigation .wf-block-navigation-option-content{padding:1.5rem 0 1.5rem 1rem}}.wf-dashboard-navigation .wf-block-navigation-option-content h4{margin:0 0 0.25rem 0}.wf-dashboard-navigation .wf-block-navigation-option-content p{margin:0 0 0.45rem 0}.wf-blocks-summary{width:100%;margin:1rem 0;border-spacing:0}.wf-blocks-summary>thead>tr>th,.wf-blocks-summary>tbody>tr>th,.wf-blocks-summary>tr>th{font-weight:600;padding:0.25rem 0.25rem;white-space:nowrap}@media (min-width: 768px){.wf-blocks-summary>thead>tr>th,.wf-blocks-summary>tbody>tr>th,.wf-blocks-summary>tr>th{padding:0.25rem 1rem}}.wf-blocks-summary>thead>tr>th.wf-premium,.wf-blocks-summary>tbody>tr>th.wf-premium,.wf-blocks-summary>tr>th.wf-premium{border-top-left-radius:0.5rem;border-top-right-radius:0.5rem;color:#aaa}.wf-blocks-summary>thead>tr>th,.wf-blocks-summary>tr>th{text-align:center}.wf-blocks-summary>thead>tr>th:first-child,.wf-blocks-summary>tbody>tr>th{text-align:right}.wf-blocks-summary>tbody>tr>td,.wf-blocks-summary>tfoot>tr>td,.wf-blocks-summary>tr>td{text-align:center;padding:0.25rem 0.25rem}@media (min-width: 768px){.wf-blocks-summary>tbody>tr>td,.wf-blocks-summary>tfoot>tr>td,.wf-blocks-summary>tr>td{padding:0.25rem 1rem}}.wf-blocks-summary>tbody>tr>td.wf-premium,.wf-blocks-summary>tfoot>tr>td.wf-premium,.wf-blocks-summary>tr>td.wf-premium{color:#aaa}.wf-blocks-summary>tfoot>tr>td.wf-premium,.wf-blocks-summary>tr:last-child>td.wf-premium{border-bottom-left-radius:0.5rem;border-bottom-right-radius:0.5rem;color:#fff}#howGetIPs-trusted-proxies,#howGetIPs-trusted-proxy-preset{display:none}ul.wf-option.wf-option-howgetips .wf-option-howgetips-details{display:-webkit-flex;display:flex;-webkit-align-items:flex-start;align-items:flex-start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;flex-direction:column;font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:0.8rem;margin-top:0.5rem}.wf-central-dashboard{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-align-content:stretch;align-content:stretch;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.wf-central-dashboard .wf-central-dashboard-logo{width:80px;min-width:80px;margin:10px 0}.wf-central-dashboard .wf-central-dashboard-copy{padding-left:20px}@media (min-width: 768px){.wf-central-dashboard{-webkit-flex-direction:row;flex-direction:row;-webkit-align-items:center;align-items:center}}table.wf-table{background-color:transparent;border-collapse:collapse;border-spacing:0}table.wf-table td,table.wf-table th{padding:0}.wf-table caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}.wf-table th{text-align:left}.wf-table{width:100%;max-width:100%;margin-bottom:20px}.wf-table>thead>tr>th,.wf-table>thead>tr>td,.wf-table>tbody>tr>th,.wf-table>tbody>tr>td,.wf-table>tfoot>tr>th,.wf-table>tfoot>tr>td{padding:8px;line-height:1.42857;vertical-align:top;border-top:1px solid #ddd}.wf-table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.wf-table>caption+thead>tr:first-child>th,.wf-table>caption+thead>tr:first-child>td,.wf-table>colgroup+thead>tr:first-child>th,.wf-table>colgroup+thead>tr:first-child>td,.wf-table>thead:first-child>tr:first-child>th,.wf-table>thead:first-child>tr:first-child>td{border-top:0}.wf-table>tbody+tbody{border-top:2px solid #ddd}.wf-table .wf-table{background-color:#fff}.wf-table-condensed>thead>tr>th,.wf-table-condensed>thead>tr>td,.wf-table-condensed>tbody>tr>th,.wf-table-condensed>tbody>tr>td,.wf-table-condensed>tfoot>tr>th,.wf-table-condensed>tfoot>tr>td{padding:5px}.wf-table-bordered{border:1px solid #ddd}.wf-table-bordered>thead>tr>th,.wf-table-bordered>thead>tr>td,.wf-table-bordered>tbody>tr>th,.wf-table-bordered>tbody>tr>td,.wf-table-bordered>tfoot>tr>th,.wf-table-bordered>tfoot>tr>td{border:1px solid #ddd}.wf-table-bordered>thead>tr>th,.wf-table-bordered>thead>tr>td{border-bottom-width:2px}.wf-table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.wf-table-hover>tbody>tr:hover{background-color:#f5f5f5}table.wf-table col[class*="col-"]{position:static;float:none;display:table-column}table.wf-table td[class*="col-"],table.wf-table th[class*="col-"]{position:static;float:none;display:table-cell}.wf-table>thead>tr>td.active,.wf-table>thead>tr>th.active,.wf-table>thead>tr.active>td,.wf-table>thead>tr.active>th,.wf-table>tbody>tr>td.active,.wf-table>tbody>tr>th.active,.wf-table>tbody>tr.active>td,.wf-table>tbody>tr.active>th,.wf-table>tfoot>tr>td.active,.wf-table>tfoot>tr>th.active,.wf-table>tfoot>tr.active>td,.wf-table>tfoot>tr.active>th{background-color:#f5f5f5}.wf-table-hover>tbody>tr>td.active:hover,.wf-table-hover>tbody>tr>th.active:hover,.wf-table-hover>tbody>tr.active:hover>td,.wf-table-hover>tbody>tr:hover>.active,.wf-table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.wf-table>thead>tr>td.success,.wf-table>thead>tr>th.success,.wf-table>thead>tr.success>td,.wf-table>thead>tr.success>th,.wf-table>tbody>tr>td.success,.wf-table>tbody>tr>th.success,.wf-table>tbody>tr.success>td,.wf-table>tbody>tr.success>th,.wf-table>tfoot>tr>td.success,.wf-table>tfoot>tr>th.success,.wf-table>tfoot>tr.success>td,.wf-table>tfoot>tr.success>th{background-color:#dff0d8}.wf-table-hover>tbody>tr>td.success:hover,.wf-table-hover>tbody>tr>th.success:hover,.wf-table-hover>tbody>tr.success:hover>td,.wf-table-hover>tbody>tr:hover>.success,.wf-table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.wf-table>thead>tr>td.info,.wf-table>thead>tr>th.info,.wf-table>thead>tr.info>td,.wf-table>thead>tr.info>th,.wf-table>tbody>tr>td.info,.wf-table>tbody>tr>th.info,.wf-table>tbody>tr.info>td,.wf-table>tbody>tr.info>th,.wf-table>tfoot>tr>td.info,.wf-table>tfoot>tr>th.info,.wf-table>tfoot>tr.info>td,.wf-table>tfoot>tr.info>th{background-color:#d9edf7}.wf-table-hover>tbody>tr>td.info:hover,.wf-table-hover>tbody>tr>th.info:hover,.wf-table-hover>tbody>tr.info:hover>td,.wf-table-hover>tbody>tr:hover>.info,.wf-table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.wf-table>thead>tr>td.warning,.wf-table>thead>tr>th.warning,.wf-table>thead>tr.warning>td,.wf-table>thead>tr.warning>th,.wf-table>tbody>tr>td.warning,.wf-table>tbody>tr>th.warning,.wf-table>tbody>tr.warning>td,.wf-table>tbody>tr.warning>th,.wf-table>tfoot>tr>td.warning,.wf-table>tfoot>tr>th.warning,.wf-table>tfoot>tr.warning>td,.wf-table>tfoot>tr.warning>th{background-color:#fcf8e3}.wf-table-hover>tbody>tr>td.warning:hover,.wf-table-hover>tbody>tr>th.warning:hover,.wf-table-hover>tbody>tr.warning:hover>td,.wf-table-hover>tbody>tr:hover>.warning,.wf-table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.wf-table>thead>tr>td.danger,.wf-table>thead>tr>th.danger,.wf-table>thead>tr.danger>td,.wf-table>thead>tr.danger>th,.wf-table>tbody>tr>td.danger,.wf-table>tbody>tr>th.danger,.wf-table>tbody>tr.danger>td,.wf-table>tbody>tr.danger>th,.wf-table>tfoot>tr>td.danger,.wf-table>tfoot>tr>th.danger,.wf-table>tfoot>tr.danger>td,.wf-table>tfoot>tr.danger>th{background-color:#f2dede}.wf-table-hover>tbody>tr>td.danger:hover,.wf-table-hover>tbody>tr>th.danger:hover,.wf-table-hover>tbody>tr.danger:hover>td,.wf-table-hover>tbody>tr:hover>.danger,.wf-table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.wf-table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width: 767px){.wf-table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.wf-table-responsive>.wf-table{margin-bottom:0}.wf-table-responsive>.wf-table>thead>tr>th,.wf-table-responsive>.wf-table>thead>tr>td,.wf-table-responsive>.wf-table>tbody>tr>th,.wf-table-responsive>.wf-table>tbody>tr>td,.wf-table-responsive>.wf-table>tfoot>tr>th,.wf-table-responsive>.wf-table>tfoot>tr>td{white-space:nowrap}.wf-table-responsive>.wf-table-bordered{border:0}.wf-table-responsive>.wf-table-bordered>thead>tr>th:first-child,.wf-table-responsive>.wf-table-bordered>thead>tr>td:first-child,.wf-table-responsive>.wf-table-bordered>tbody>tr>th:first-child,.wf-table-responsive>.wf-table-bordered>tbody>tr>td:first-child,.wf-table-responsive>.wf-table-bordered>tfoot>tr>th:first-child,.wf-table-responsive>.wf-table-bordered>tfoot>tr>td:first-child{border-left:0}.wf-table-responsive>.wf-table-bordered>thead>tr>th:last-child,.wf-table-responsive>.wf-table-bordered>thead>tr>td:last-child,.wf-table-responsive>.wf-table-bordered>tbody>tr>th:last-child,.wf-table-responsive>.wf-table-bordered>tbody>tr>td:last-child,.wf-table-responsive>.wf-table-bordered>tfoot>tr>th:last-child,.wf-table-responsive>.wf-table-bordered>tfoot>tr>td:last-child{border-right:0}.wf-table-responsive>.wf-table-bordered>tbody>tr:last-child>th,.wf-table-responsive>.wf-table-bordered>tbody>tr:last-child>td,.wf-table-responsive>.wf-table-bordered>tfoot>tr:last-child>th,.wf-table-responsive>.wf-table-bordered>tfoot>tr:last-child>td{border-bottom:0}}.wf-sortable{position:relative;padding-right:2rem !important}.wf-sortable .wf-sorted-ascending,.wf-sortable .wf-sorted-descending{display:none;position:absolute;right:1rem;top:50%;transform:translateY(-50%)}.wf-sortable.wf-unsorted:hover .wf-sorted-ascending{display:block}.wf-sortable.wf-unsorted,.wf-sortable.wf-sorted-ascending,.wf-sortable.wf-sorted-descending{cursor:pointer}.wf-sortable.wf-unsorted:hover,.wf-sortable.wf-sorted-ascending:hover,.wf-sortable.wf-sorted-descending:hover{background-color:#e0e0e0}.wf-sortable.wf-sorted-ascending,.wf-sortable.wf-sorted-descending{background-color:#e0e0e0}.wf-sortable.wf-sorted-ascending .wf-sorted-ascending{display:block}.wf-sortable.wf-sorted-descending .wf-sorted-descending{display:block}.wf-nav{margin-bottom:0;padding-left:0;list-style:none}.wf-nav:before,.wf-nav:after{content:" ";display:table}.wf-nav:after{clear:both}.wf-nav>li{position:relative;display:block}.wf-nav>li>a{position:relative;display:block;padding:8px 12px}.wf-nav>li>a:hover,.wf-nav>li>a:focus{text-decoration:none;background-color:#e2e2e2}.wf-nav>li.wf-disabled>a{color:#777}.wf-nav>li.wf-disabled>a:hover,.wf-nav>li.wf-disabled>a:focus{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.wf-nav .wf-open>a,.wf-nav .wf-open>a:hover,.wf-nav .wf-open>a:focus{background-color:#e2e2e2}.wf-nav>li>a>img{max-width:none}.wf-nav-tabs{border-bottom:1px solid #d0d0d0}.wf-nav-tabs>li{float:left;margin-bottom:-1px}.wf-nav-tabs>li>a{margin-right:2px;line-height:1.42857;border:1px solid transparent;border-radius:4px 4px 0 0}.wf-nav-tabs>li>a:hover{border-color:#e2e2e2 #e2e2e2 #d0d0d0}.wf-nav-tabs>li.wf-active>a,.wf-nav-tabs>li.wf-active>a:hover,.wf-nav-tabs>li.wf-active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.wf-nav-pills>li{float:left}.wf-nav-pills>li>a{border-radius:4px;text-decoration:none;position:relative;display:block;padding:8px 12px}.wf-nav-pills>li>a:hover,.wf-nav-pills>li>a:focus{text-decoration:none !important;background-color:#e2e2e2}.wf-nav-pills>li+li{margin-left:2px}.wf-nav-pills>li.wf-active>a,.wf-nav-pills>li.wf-active>a:hover,.wf-nav-pills>li.wf-active>a:focus{color:#fff;background-color:#00709e}.wf-nav-pills.wf-nav-pills-bordered>li>a{border:1px solid #e2e2e2}.wf-nav-pills.wf-nav-pills-connected>li>a{border-radius:0;border-right-width:0px}.wf-nav-pills.wf-nav-pills-connected>li+li{margin-left:0}.wf-nav-pills.wf-nav-pills-connected>li.active+li>a{border-left-width:0px}.wf-nav-pills.wf-nav-pills-connected>li:first-of-type>a{-moz-border-radius:4px 0 0 4px;-webkit-border-radius:4px;border-radius:4px 0 0 4px}.wf-nav-pills.wf-nav-pills-connected>li:last-of-type>a{-moz-border-radius:0 4px 4px 0;-webkit-border-radius:0;border-radius:0 4px 4px 0;border-right-width:1px}.wf-nav-stacked>li{float:none}.wf-nav-stacked>li+li{margin-top:2px;margin-left:0}.wf-nav-justified,.wf-nav-tabs.wf-nav-justified{width:100%}.wf-nav-justified>li,.wf-nav-tabs.wf-nav-justified>li{float:none}.wf-nav-justified>li>a,.wf-nav-tabs.wf-nav-justified>li>a{text-align:center;margin-bottom:5px}.wf-nav-justified>.wf-dropdown .wf-dropdown-menu{top:auto;left:auto}@media (min-width: 768px){.wf-nav-justified>li,.wf-nav-tabs.wf-nav-justified>li{display:table-cell;width:1%}.wf-nav-justified>li>a,.wf-nav-tabs.wf-nav-justified>li>a{margin-bottom:0}}.wf-nav-tabs-justified,.wf-nav-tabs.wf-nav-justified{border-bottom:0}.wf-nav-tabs-justified>li>a,.wf-nav-tabs.wf-nav-justified>li>a{margin-right:0;border-radius:4px}.wf-nav-tabs-justified>.wf-active>a,.wf-nav-tabs.wf-nav-justified>.wf-active>a,.wf-nav-tabs-justified>.wf-active>a:hover,.wf-nav-tabs.wf-nav-justified>.wf-active>a:hover,.wf-nav-tabs-justified>.wf-active>a:focus,.wf-nav-tabs.wf-nav-justified>.wf-active>a:focus{border:1px solid #ddd}@media (min-width: 768px){.wf-nav-tabs-justified>li>a,.wf-nav-tabs.wf-nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.wf-nav-tabs-justified>.wf-active>a,.wf-nav-tabs.wf-nav-justified>.wf-active>a,.wf-nav-tabs-justified>.wf-active>a:hover,.wf-nav-tabs.wf-nav-justified>.wf-active>a:hover,.wf-nav-tabs-justified>.wf-active>a:focus,.wf-nav-tabs.wf-nav-justified>.wf-active>a:focus{border-bottom-color:#fff}}.wf-tab-content>.wf-tab-pane{display:none}.wf-tab-content>.wf-active{display:block}.wf-nav-tabs .wf-dropdown-menu{margin-top:-1px;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0}.wf-navbar-brand{float:left;padding:12px 8px;font-size:18px;line-height:20px;margin:10px 0 0 0}.wf-navbar-brand:hover,.wf-navbar-brand:focus{text-decoration:none}.wf-navbar-brand>img{display:block}@media (min-width: 768px){.navbar>.container .wf-navbar-brand,.navbar>.container-fluid .wf-navbar-brand{margin-left:-8px}}.wf-caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.wf-dropup,.wf-dropdown{position:relative}.wf-dropdown-toggle:focus{outline:0}.wf-dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.wf-dropdown-menu .wf-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.wf-dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857;color:#333;text-decoration:none;white-space:nowrap}.wf-dropdown-menu>li>a:hover,.wf-dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.wf-dropdown-menu>.wf-active>a,.wf-dropdown-menu>.wf-active>a:hover,.wf-dropdown-menu>.wf-active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#00709e}.wf-dropdown-menu>.wf-disabled>a,.wf-dropdown-menu>.wf-disabled>a:hover,.wf-dropdown-menu>.wf-disabled>a:focus{color:#777}.wf-dropdown-menu>.wf-disabled>a:hover,.wf-dropdown-menu>.wf-disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed}.wf-open>.wf-dropdown-menu{display:block}.wf-open>a{outline:0}.wf-dropdown-menu-right{left:auto;right:0}.wf-dropdown-menu-left{left:0;right:auto}.wf-dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857;color:#777;white-space:nowrap}.wf-dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.wf-pull-right>.wf-dropdown-menu{right:0;left:auto}.wf-dropup .wf-caret,.wf-navbar-fixed-bottom .wf-dropdown .wf-caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9;content:""}.wf-dropup .wf-dropdown-menu,.wf-navbar-fixed-bottom .wf-dropdown .wf-dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width: 768px){.wf-navbar-right .wf-dropdown-menu{right:0;left:auto}.wf-navbar-right .wf-dropdown-menu-left{left:0;right:auto}}.wf-mobile-dropdown{border:1px solid #ccc;margin-left:.5em;padding:5px 10px;font-size:14px;line-height:24px;margin:10px 10px 0 0;background:#f1f1f1;color:#000;font-weight:600;text-decoration:none}.wf-blocks-table tbody tr.wf-editing,.wf-blocks-table tbody tr.wf-editing td{background-color:#fffbd8}.wf-blocked-countries-section{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-align-content:stretch;align-content:stretch;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.wf-blocked-countries-section-title{font-size:1.1rem;padding-right:0.5rem}.wf-blocked-countries-section-spacer{-webkit-flex-basis:30px;flex-basis:30px;height:1px;background:#aaa}.wf-blocked-countries-section-options{margin-bottom:0;margin-top:0;padding-left:0.5rem;list-style:none;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-align-content:stretch;align-content:stretch;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.wf-blocked-countries-section-options li{padding:0;margin:0;color:#777}.wf-blocked-countries-section-options li a{padding:2px 4px;text-decoration:none;color:#777}.wf-blocked-countries-section-options li a.active-section{background-color:#777;color:#e2e2e2}.wf-option-bypass-redirect .wf-option-title,.wf-option-bypass-cookie .wf-option-title{-webkit-align-self:flex-start;align-self:flex-start}.wf-option-bypass-redirect *,.wf-option-bypass-cookie *{-webkit-flex-grow:1;flex-grow:1}.wf-option-bypass-redirect *:first-child,.wf-option-bypass-cookie *:first-child{-webkit-flex-grow:0;flex-grow:0}.wf-country-block-map{width:300px}@media (min-width: 768px){.wf-country-block-map{width:500px}}@media (min-width: 992px){.wf-country-block-map{width:700px}}@media (min-width: 1200px){.wf-country-block-map{width:700px}}#wf-create-block{width:100%}#wf-create-block th{white-space:nowrap}#wf-create-block td{width:100%}#wf-create-block td.wf-block-type{width:auto}@media (min-width: 768px){#wf-create-block{width:500px}}@media (min-width: 992px){#wf-create-block{width:700px}}@media (min-width: 1200px){#wf-create-block{width:700px}}#wf-create-block .wf-block-add-country select{width:240px}@media (min-width: 768px){#wf-create-block .wf-block-add-country select{width:280px}}@media (min-width: 992px){#wf-create-block .wf-block-add-country select{width:320px}}#wf-create-block .wf-block-add-country .wfselect2-container--default,#wf-create-block .wf-block-add-country .wfselect2-container--default .wfselect2-selection--multiple{border-color:#e2e2e2}#wf-create-block .wf-block-add-country .wfselect2-container--default .wfselect2-selection__choice,#wf-create-block .wf-block-add-country .wfselect2-container--default .wfselect2-selection--multiple .wfselect2-selection__choice{background-color:#ffffff;border-color:#e2e2e2;padding:0.5rem}#wf-create-block .wf-block-add-country .wfselect2-container--default .wfselect2-search__field,#wf-create-block .wf-block-add-country .wfselect2-container--default .wfselect2-selection--multiple .wfselect2-search__field{margin-right:5px;margin-top:5px;padding:0.5rem 0}#wfcolorbox .wf-country-selector-controls,.wf-drawer .wf-country-selector-controls{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;-webkit-align-content:stretch;align-content:stretch;-webkit-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-flex-shrink:0;flex-shrink:0}#wfcolorbox .wf-country-selector-controls .wf-country-selector-section-options,.wf-drawer .wf-country-selector-controls .wf-country-selector-section-options{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;-webkit-align-content:stretch;align-content:stretch;-webkit-flex-wrap:nowrap;flex-wrap:nowrap}#wfcolorbox .wf-country-selector-controls .wf-country-selector-section-options>li,.wf-drawer .wf-country-selector-controls .wf-country-selector-section-options>li{border:1px solid #ffffff;border-radius:4px;padding:0.25rem;background-color:#ffffff}#wfcolorbox .wf-country-selector-controls .wf-country-selector-section-options>li:hover>a,#wfcolorbox .wf-country-selector-controls .wf-country-selector-section-options>li:focus>a,.wf-drawer .wf-country-selector-controls .wf-country-selector-section-options>li:hover>a,.wf-drawer .wf-country-selector-controls .wf-country-selector-section-options>li:focus>a{color:#ffffff}#wfcolorbox .wf-country-selector-controls .wf-country-selector-section-options>li>a,.wf-drawer .wf-country-selector-controls .wf-country-selector-section-options>li>a{text-decoration:none;color:#525355}#wfcolorbox .wf-country-selector-options .wf-blocked-countries,.wf-drawer .wf-country-selector-options .wf-blocked-countries{margin-bottom:0;margin-top:1rem;list-style:none;margin-left:-6px;display:-webkit-flex;display:flex;-webkit-align-items:stretch;align-items:stretch;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-align-content:stretch;align-content:stretch;-webkit-flex-wrap:wrap;flex-wrap:wrap}#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;margin:0px 0px 2px 6px;text-align:center;border:1px solid #e2e2e2;border-radius:4px;padding:8px 12px;background-color:#ffffff;-webkit-flex-basis:38%;flex-basis:38%}@media (min-width: 768px){#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li{-webkit-flex-basis:20%;flex-basis:20%}}@media (min-width: 992px){#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li{-webkit-flex-basis:15%;flex-basis:15%}}@media (min-width: 1200px){#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li{-webkit-flex-basis:10%;flex-basis:10%}}#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li:hover,#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li:focus,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li:hover,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li:focus{text-decoration:none;background-color:#e2e2e2}#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li.disabled>a,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li.disabled>a{color:#777}#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li.disabled>a:hover,#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li.disabled>a:focus,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li.disabled>a:hover,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li.disabled>a:focus{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li>a,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li>a{text-decoration:none;position:relative;display:block}#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li.wf-active,#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li.wf-active:hover,#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li.wf-active:focus,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li.wf-active,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li.wf-active:hover,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li.wf-active:focus{background-color:#00709e;border-color:#00709e}#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li.wf-active>a,#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li.wf-active:hover>a,#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li.wf-active:focus>a,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li.wf-active>a,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li.wf-active:hover>a,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li.wf-active:focus>a{color:#fff}#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li.text-only,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li.text-only{position:relative;display:block;padding:8px 12px}#wfcolorbox .wf-country-selector-options .wf-blocked-countries>li>a>img,.wf-drawer .wf-country-selector-options .wf-blocked-countries>li>a>img{max-width:none}.wf-tag-selected{background-color:#ffffff;border:1px solid #e2e2e2;border-radius:4px;cursor:default;float:left;margin-right:5px !important;margin-top:5px !important;list-style:none;padding:0.5rem !important}.wf-destroy-tag-selected{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.wf-destroy-tag-selected:hover{text-decoration:none}.wf-tags-show-hide-more{float:left;margin-right:5px;margin-top:5px;list-style:none;padding:0.5rem}.wf-select2-hide-tags .wfselect2-selection__choice{display:none}.wf-country-selector-outer-wrapper{position:relative;-webkit-flex-grow:1;flex-grow:1}.wf-country-selector-outer-wrapper .wf-country-selector-inner-wrapper{position:absolute;top:0px;right:0px;bottom:0px;left:0px;overflow-x:hidden;overflow-y:auto}.wf-alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.wf-alert h4{margin-top:0;color:inherit}.wf-alert .wf-alert-link{font-weight:bold}.wf-alert>p,.wf-alert>ul{margin-bottom:0}.wf-alert>p+p{margin-top:5px}.wf-alert-dismissable,.wf-alert-dismissible{padding-right:35px}.wf-alert-dismissable .close,.wf-alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.wf-alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.wf-alert-success hr{border-top-color:#c9e2b3}.wf-alert-success .alert-link{color:#2b542c}.wf-alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.wf-alert-info hr{border-top-color:#a6e1ec}.wf-alert-info .alert-link{color:#245269}.wf-alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.wf-alert-warning hr{border-top-color:#f7e1b5}.wf-alert-warning .alert-link{color:#66512c}.wf-alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.wf-alert-danger hr{border-top-color:#e4b9c0}.wf-alert-danger .alert-link{color:#843534}#wf-tools-whois #wfrawhtml .wf-flex-row{margin:.5rem 0 1rem}#wf-tools-whois #wfrawhtml .wf-flex-row a.wf-flex-row-1{color:#444;text-decoration:none}#wf-tools-whois #wfrawhtml .wf-flex-row a.wf-flex-row-1:hover{color:#00a0d2;text-decoration:underline}#wf-tools-whois #wfrawhtml .failed .wf-block-list>li{display:block}.wf-diagnostic-fail.wf-block .wf-block-header .wf-block-header-content .wf-block-title{color:#d0514c}.wf-diagnostic-fail.wf-block .wf-block-header .wf-block-header-content .wf-block-title:before{content:'\f100';font-family:"Ionicons";display:inline-block;margin:0 .4rem 0 0}#wf-diagnostics .wf-block{margin:0 auto 0.5rem}#wf-diagnostics .wf-result-info{margin:1rem 0}#wf-diagnostics-other-tests .wf-btn-sm,#wf-diagnostics-other-tests .wf-btn-group-sm>.wf-btn{padding:2px 10px;vertical-align:top}.wf-support-block{padding:1rem 0}.wf-support-block>h4{margin:0;padding:0 0 1rem 0}.wf-support-block>h4>a{text-decoration:none;font-size:1.3125rem;line-height:1.5;font-weight:300}.wf-support-block>p{margin:0;padding:0}.wf-support-block>ul{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:row;flex-direction:row;-webkit-flex-wrap:wrap;flex-wrap:wrap;margin:0;padding:0}.wf-support-block>ul>li{margin:0;padding:1rem 1rem 1rem 0}.wf-support-block>ul>li>a{text-decoration:none;font-size:.875rem;line-height:1.3125;font-weight:normal}.wf-support-top-block,.wf-support-missing-block{padding:1.5rem 0}.wf-support-top-block>h4,.wf-support-missing-block>h4{margin:0;padding:0}.wf-support-top-block>ol>li,.wf-support-missing-block>ol>li{margin:0.75rem 0;padding:0}.wf-support-top-block>ol>li>a,.wf-support-missing-block>ol>li>a{text-decoration:none;font-size:.875rem;line-height:1.3125;font-weight:normal}#wf-gdpr-banner{position:relative;z-index:3006;background-color:#fcb214;font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:.875rem;color:#2d2d2d;line-height:1.3125;font-weight:normal;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;-webkit-flex-direction:row;flex-direction:row;margin:0 0 0 -20px;padding:0}#wf-gdpr-banner>li{margin:0;padding:0.5rem 1rem}#wf-toupp-required-overlay::after{position:absolute;z-index:3004;top:0;right:0;width:0;height:0;background:rgba(241,241,241,0.6);content:'';opacity:0;-webkit-transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s;-o-transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s;transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s}.wf-toupp-required #wf-toupp-required-overlay::after{width:100%;height:100%;opacity:1;-webkit-transition:opacity 0.5s;-o-transition:opacity 0.5s;transition:opacity 0.5s}#wf-toupp-required-message{display:none;position:fixed;z-index:3005;left:0;width:100%;top:50%;transform:translateY(-50%);text-align:center;color:#666666;opacity:0;-webkit-transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s;-o-transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s;transition:opacity 0.5s,width 0.1s 0.5s,height 0.1s 0.5s}#wf-toupp-required-message #wf-toupp-required-message-inner{color:#fff;overflow:hidden;max-width:550px;margin:0 auto;padding:20px}#wf-toupp-required-message #wf-toupp-required-message-inner h2{font-size:2.0rem}#wf-toupp-required-message #wf-toupp-required-message-inner h2 .wf-toupp-required-header{line-height:2.4rem}#wf-toupp-required-message #wf-toupp-required-message-inner p{font-size:1rem}#wf-toupp-required-message #wf-toupp-required-message-inner p:first-child{margin-top:0}#wf-toupp-required-message #wf-toupp-required-message-inner p:last-child{margin-bottom:0}#wf-toupp-required-message #wf-toupp-required-message-inner small{font-size:0.9rem;font-weight:normal;margin-top:12px;display:block}.wf-toupp-required #wf-toupp-required-message{display:block;opacity:1;-webkit-transition:opacity 0.5s;transition:opacity 0.5s}.wf-flag-{background-position:-0px -0px !important}.wf-flag-ad{background-position:-16px -0px !important}.wf-flag-ae{background-position:-32px -0px !important}.wf-flag-af{background-position:-48px -0px !important}.wf-flag-ag{background-position:-64px -0px !important}.wf-flag-ai{background-position:-80px -0px !important}.wf-flag-al{background-position:-96px -0px !important}.wf-flag-am{background-position:-112px -0px !important}.wf-flag-an{background-position:-128px -0px !important}.wf-flag-ao{background-position:-144px -0px !important}.wf-flag-ap{background-position:-160px -0px !important}.wf-flag-aq{background-position:-176px -0px !important}.wf-flag-ar{background-position:-0px -11px !important}.wf-flag-as{background-position:-16px -11px !important}.wf-flag-at{background-position:-32px -11px !important}.wf-flag-au{background-position:-48px -11px !important}.wf-flag-aw{background-position:-64px -11px !important}.wf-flag-ax{background-position:-80px -11px !important}.wf-flag-az{background-position:-96px -11px !important}.wf-flag-ba{background-position:-112px -11px !important}.wf-flag-bb{background-position:-128px -11px !important}.wf-flag-bd{background-position:-144px -11px !important}.wf-flag-be{background-position:-160px -11px !important}.wf-flag-bf{background-position:-176px -11px !important}.wf-flag-bg{background-position:-0px -22px !important}.wf-flag-bh{background-position:-16px -22px !important}.wf-flag-bi{background-position:-32px -22px !important}.wf-flag-bj{background-position:-48px -22px !important}.wf-flag-bl{background-position:-64px -22px !important}.wf-flag-bm{background-position:-80px -22px !important}.wf-flag-bn{background-position:-96px -22px !important}.wf-flag-bo{background-position:-112px -22px !important}.wf-flag-bq{background-position:-128px -22px !important}.wf-flag-br{background-position:-144px -22px !important}.wf-flag-bs{background-position:-160px -22px !important}.wf-flag-bt{background-position:-176px -22px !important}.wf-flag-bv{background-position:-0px -33px !important}.wf-flag-bw{background-position:-16px -33px !important}.wf-flag-by{background-position:-32px -33px !important}.wf-flag-bz{background-position:-48px -33px !important}.wf-flag-ca{background-position:-64px -33px !important}.wf-flag-cc{background-position:-80px -33px !important}.wf-flag-cd{background-position:-96px -33px !important}.wf-flag-cf{background-position:-112px -33px !important}.wf-flag-cg{background-position:-128px -33px !important}.wf-flag-ch{background-position:-144px -33px !important}.wf-flag-ci{background-position:-160px -33px !important}.wf-flag-ck{background-position:-176px -33px !important}.wf-flag-cl{background-position:-0px -44px !important}.wf-flag-cm{background-position:-16px -44px !important}.wf-flag-cn{background-position:-32px -44px !important}.wf-flag-co{background-position:-48px -44px !important}.wf-flag-cr{background-position:-64px -44px !important}.wf-flag-cs{background-position:-80px -44px !important}.wf-flag-cu{background-position:-96px -44px !important}.wf-flag-cv{background-position:-112px -44px !important}.wf-flag-cw{background-position:-128px -44px !important}.wf-flag-cx{background-position:-144px -44px !important}.wf-flag-cy{background-position:-160px -44px !important}.wf-flag-cz{background-position:-176px -44px !important}.wf-flag-de{background-position:-0px -55px !important}.wf-flag-dj{background-position:-16px -55px !important}.wf-flag-dk{background-position:-32px -55px !important}.wf-flag-dm{background-position:-48px -55px !important}.wf-flag-do{background-position:-64px -55px !important}.wf-flag-dz{background-position:-80px -55px !important}.wf-flag-ec{background-position:-96px -55px !important}.wf-flag-ee{background-position:-112px -55px !important}.wf-flag-eg{background-position:-128px -55px !important}.wf-flag-eh{background-position:-144px -55px !important}.wf-flag-england{background-position:-160px -55px !important}.wf-flag-er{background-position:-176px -55px !important}.wf-flag-es{background-position:-0px -66px !important}.wf-flag-et{background-position:-16px -66px !important}.wf-flag-eu{background-position:-32px -66px !important}.wf-flag-fam{background-position:-48px -66px !important}.wf-flag-fi{background-position:-64px -66px !important}.wf-flag-fj{background-position:-80px -66px !important}.wf-flag-fk{background-position:-96px -66px !important}.wf-flag-fm{background-position:-112px -66px !important}.wf-flag-fo{background-position:-128px -66px !important}.wf-flag-fr{background-position:-144px -66px !important}.wf-flag-ga{background-position:-160px -66px !important}.wf-flag-gb{background-position:-176px -66px !important}.wf-flag-gd{background-position:-0px -77px !important}.wf-flag-ge{background-position:-16px -77px !important}.wf-flag-gf{background-position:-32px -77px !important}.wf-flag-gg{background-position:-48px -77px !important}.wf-flag-gh{background-position:-64px -77px !important}.wf-flag-gi{background-position:-80px -77px !important}.wf-flag-gl{background-position:-96px -77px !important}.wf-flag-gm{background-position:-112px -77px !important}.wf-flag-gn{background-position:-128px -77px !important}.wf-flag-gp{background-position:-144px -77px !important}.wf-flag-gq{background-position:-160px -77px !important}.wf-flag-gr{background-position:-176px -77px !important}.wf-flag-gs{background-position:-0px -88px !important}.wf-flag-gt{background-position:-16px -88px !important}.wf-flag-gu{background-position:-32px -88px !important}.wf-flag-gw{background-position:-48px -88px !important}.wf-flag-gy{background-position:-64px -88px !important}.wf-flag-hk{background-position:-80px -88px !important}.wf-flag-hm{background-position:-96px -88px !important}.wf-flag-hn{background-position:-112px -88px !important}.wf-flag-hr{background-position:-128px -88px !important}.wf-flag-ht{background-position:-144px -88px !important}.wf-flag-hu{background-position:-160px -88px !important}.wf-flag-id{background-position:-176px -88px !important}.wf-flag-ie{background-position:-0px -99px !important}.wf-flag-il{background-position:-16px -99px !important}.wf-flag-im{background-position:-32px -99px !important}.wf-flag-in{background-position:-48px -99px !important}.wf-flag-io{background-position:-64px -99px !important}.wf-flag-iq{background-position:-80px -99px !important}.wf-flag-ir{background-position:-96px -99px !important}.wf-flag-is{background-position:-112px -99px !important}.wf-flag-it{background-position:-128px -99px !important}.wf-flag-je{background-position:-144px -99px !important}.wf-flag-jm{background-position:-160px -99px !important}.wf-flag-jo{background-position:-176px -99px !important}.wf-flag-jp{background-position:-0px -110px !important}.wf-flag-ke{background-position:-16px -110px !important}.wf-flag-kg{background-position:-32px -110px !important}.wf-flag-kh{background-position:-48px -110px !important}.wf-flag-ki{background-position:-64px -110px !important}.wf-flag-km{background-position:-80px -110px !important}.wf-flag-kn{background-position:-96px -110px !important}.wf-flag-kp{background-position:-112px -110px !important}.wf-flag-kr{background-position:-128px -110px !important}.wf-flag-kw{background-position:-144px -110px !important}.wf-flag-ky{background-position:-160px -110px !important}.wf-flag-kz{background-position:-176px -110px !important}.wf-flag-la{background-position:-0px -121px !important}.wf-flag-lb{background-position:-16px -121px !important}.wf-flag-lc{background-position:-32px -121px !important}.wf-flag-li{background-position:-48px -121px !important}.wf-flag-lk{background-position:-64px -121px !important}.wf-flag-lr{background-position:-80px -121px !important}.wf-flag-ls{background-position:-96px -121px !important}.wf-flag-lt{background-position:-112px -121px !important}.wf-flag-lu{background-position:-128px -121px !important}.wf-flag-lv{background-position:-144px -121px !important}.wf-flag-ly{background-position:-160px -121px !important}.wf-flag-ma{background-position:-176px -121px !important}.wf-flag-mc{background-position:-0px -132px !important}.wf-flag-md{background-position:-16px -132px !important}.wf-flag-me{background-position:-32px -132px !important}.wf-flag-mf{background-position:-48px -132px !important}.wf-flag-mg{background-position:-64px -132px !important}.wf-flag-mh{background-position:-80px -132px !important}.wf-flag-mk{background-position:-96px -132px !important}.wf-flag-ml{background-position:-112px -132px !important}.wf-flag-mm{background-position:-128px -132px !important}.wf-flag-mn{background-position:-144px -132px !important}.wf-flag-mo{background-position:-160px -132px !important}.wf-flag-mp{background-position:-176px -132px !important}.wf-flag-mq{background-position:-0px -143px !important}.wf-flag-mr{background-position:-16px -143px !important}.wf-flag-ms{background-position:-32px -143px !important}.wf-flag-mt{background-position:-48px -143px !important}.wf-flag-mu{background-position:-64px -143px !important}.wf-flag-mv{background-position:-80px -143px !important}.wf-flag-mw{background-position:-96px -143px !important}.wf-flag-mx{background-position:-112px -143px !important}.wf-flag-my{background-position:-128px -143px !important}.wf-flag-mz{background-position:-144px -143px !important}.wf-flag-na{background-position:-160px -143px !important}.wf-flag-nc{background-position:-176px -143px !important}.wf-flag-ne{background-position:-0px -154px !important}.wf-flag-nf{background-position:-16px -154px !important}.wf-flag-ng{background-position:-32px -154px !important}.wf-flag-ni{background-position:-48px -154px !important}.wf-flag-nl{background-position:-64px -154px !important}.wf-flag-no{background-position:-80px -154px !important}.wf-flag-np{background-position:-96px -154px !important}.wf-flag-nr{background-position:-112px -154px !important}.wf-flag-nu{background-position:-128px -154px !important}.wf-flag-nz{background-position:-144px -154px !important}.wf-flag-om{background-position:-160px -154px !important}.wf-flag-pa{background-position:-176px -154px !important}.wf-flag-pe{background-position:-0px -165px !important}.wf-flag-pf{background-position:-16px -165px !important}.wf-flag-pg{background-position:-32px -165px !important}.wf-flag-ph{background-position:-48px -165px !important}.wf-flag-pk{background-position:-64px -165px !important}.wf-flag-pl{background-position:-80px -165px !important}.wf-flag-pm{background-position:-96px -165px !important}.wf-flag-pn{background-position:-112px -165px !important}.wf-flag-pr{background-position:-128px -165px !important}.wf-flag-ps{background-position:-144px -165px !important}.wf-flag-pt{background-position:-160px -165px !important}.wf-flag-pw{background-position:-176px -165px !important}.wf-flag-py{background-position:-0px -176px !important}.wf-flag-qa{background-position:-16px -176px !important}.wf-flag-re{background-position:-32px -176px !important}.wf-flag-ro{background-position:-48px -176px !important}.wf-flag-rs{background-position:-64px -176px !important}.wf-flag-ru{background-position:-80px -176px !important}.wf-flag-rw{background-position:-96px -176px !important}.wf-flag-sa{background-position:-112px -176px !important}.wf-flag-sb{background-position:-128px -176px !important}.wf-flag-sc{background-position:-144px -176px !important}.wf-flag-scotland{background-position:-160px -176px !important}.wf-flag-sd{background-position:-176px -176px !important}.wf-flag-se{background-position:-0px -187px !important}.wf-flag-sg{background-position:-16px -187px !important}.wf-flag-sh{background-position:-32px -187px !important}.wf-flag-si{background-position:-48px -187px !important}.wf-flag-sj{background-position:-64px -187px !important}.wf-flag-sk{background-position:-80px -187px !important}.wf-flag-sl{background-position:-96px -187px !important}.wf-flag-sm{background-position:-112px -187px !important}.wf-flag-sn{background-position:-128px -187px !important}.wf-flag-so{background-position:-144px -187px !important}.wf-flag-sr{background-position:-160px -187px !important}.wf-flag-ss{background-position:-176px -187px !important}.wf-flag-st{background-position:-0px -198px !important}.wf-flag-sv{background-position:-16px -198px !important}.wf-flag-sx{background-position:-32px -198px !important}.wf-flag-sy{background-position:-48px -198px !important}.wf-flag-sz{background-position:-64px -198px !important}.wf-flag-tc{background-position:-80px -198px !important}.wf-flag-td{background-position:-96px -198px !important}.wf-flag-tf{background-position:-112px -198px !important}.wf-flag-tg{background-position:-128px -198px !important}.wf-flag-th{background-position:-144px -198px !important}.wf-flag-tj{background-position:-160px -198px !important}.wf-flag-tk{background-position:-176px -198px !important}.wf-flag-tl{background-position:-0px -209px !important}.wf-flag-tm{background-position:-16px -209px !important}.wf-flag-tn{background-position:-32px -209px !important}.wf-flag-to{background-position:-48px -209px !important}.wf-flag-tr{background-position:-64px -209px !important}.wf-flag-tt{background-position:-80px -209px !important}.wf-flag-tv{background-position:-96px -209px !important}.wf-flag-tw{background-position:-112px -209px !important}.wf-flag-tz{background-position:-128px -209px !important}.wf-flag-ua{background-position:-144px -209px !important}.wf-flag-ug{background-position:-160px -209px !important}.wf-flag-uk{background-position:-176px -209px !important}.wf-flag-um{background-position:-0px -220px !important}.wf-flag-un{background-position:-16px -220px !important}.wf-flag-us{background-position:-32px -220px !important}.wf-flag-uy{background-position:-48px -220px !important}.wf-flag-uz{background-position:-64px -220px !important}.wf-flag-va{background-position:-80px -220px !important}.wf-flag-vc{background-position:-96px -220px !important}.wf-flag-ve{background-position:-112px -220px !important}.wf-flag-vg{background-position:-128px -220px !important}.wf-flag-vi{background-position:-144px -220px !important}.wf-flag-vn{background-position:-160px -220px !important}.wf-flag-vu{background-position:-176px -220px !important}.wf-flag-wales{background-position:-0px -231px !important}.wf-flag-wf{background-position:-16px -231px !important}.wf-flag-ws{background-position:-32px -231px !important}.wf-flag-xk{background-position:-48px -231px !important}.wf-flag-ye{background-position:-64px -231px !important}.wf-flag-yt{background-position:-80px -231px !important}.wf-flag-za{background-position:-96px -231px !important}.wf-flag-zm{background-position:-112px -231px !important}.wf-flag-zw{background-position:-128px -231px !important}#wf-central-progress li{display:-webkit-flex;display:flex;-webkit-align-items:flex-start;align-items:flex-start;padding:8px 1.5rem}#wf-central-progress li .wf-central-progress-icon{display:-webkit-flex;display:flex;-webkit-flex-grow:0;flex-grow:0}#wf-central-progress li .wf-central-progress-content{display:-webkit-flex;display:flex;-webkit-flex-grow:1;flex-grow:1;margin:3px 20px 0px}#wf-central-progress li .wf-step-pending,#wf-central-progress li .wf-step-running,#wf-central-progress li .wf-step-complete-success,#wf-central-progress li .wf-step-complete-warning{display:none}#wf-central-progress li.pending{filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40);opacity:.4}#wf-central-progress li.pending .wf-step-pending{display:block}#wf-central-progress li.running .wf-step-running{display:block}#wf-central-progress li.complete-success .wf-step-complete-success{display:block}#wf-central-progress li.complete-warning .wf-step-complete-warning{display:block}.wf-central-connected .wf-flex-row{align-items:stretch}.wf-central-connected .wf-flex-row .wf-flex-row-1{width:50%}.wf-central-connected .wf-flex-row .wf-flex-row-1:first-child{margin-right:5px}.wf-central-connected .wf-flex-row .wf-flex-row-1:last-child{margin-left:5px}@media (max-width: 768px){.wf-central-connected .wf-flex-row{-webkit-flex-direction:column !important;flex-direction:column !important}.wf-central-connected .wf-flex-row .wf-flex-row-1{width:100%;margin:0 0 10px !important}}#wf-extended-protection-notice{display:inline-block;line-height:1.4;padding:11px 15px;font-size:14px;text-align:left;margin:25px 20px 0 2px;background-color:#fff;border-left:4px solid #ffba00;box-shadow:0 1px 1px 0 rgba(0,0,0,0.1)}#wfcolorbox.wf-modal .wf-modal-footer.wf-modal-footer-center{justify-content:center}div.wf-radio-group div.wf-radio-option{display:flex;align-items:center}div.wf-radio-group div.wf-radio-option:not(:last-child){margin-bottom:8px}div.wf-radio-group div.wf-radio-option input[type=radio]{margin-right:8px}.wf-password-requirements{list-style-type:circle;margin:0}.wf-password-requirements>li{margin-left:2rem;margin-bottom:0}
css/jquery-ui.theme.min.1722265817.css000064400000031641150755146460012774 0ustar00/*! jQuery UI - v1.11.4 - 2018-06-29
* http://jqueryui.com
* Copyright jQuery Foundation and other contributors; Licensed MIT */

.ui-widget{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #ddd;background:#fff;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #ddd;background:#e9e9e9;color:#333;font-weight:bold}.ui-widget-header a{color:#333}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #c5c5c5;background:#f6f6f6;font-weight:normal;color:#454545}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#454545;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #ccc;background:#ededed;font-weight:normal;color:#2b2b2b}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#2b2b2b;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #003eff;background:#007fff;font-weight:normal;color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #dad55e;background:#fffa90;color:#777620}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#777620}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #f1a899;background:#fddfdf;color:#5f3f3f}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#5f3f3f}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#5f3f3f}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-state-default .ui-icon{background-image:url("images/ui-icons_777777_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("images/ui-icons_555555_256x240.png")}.ui-state-active .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-highlight .ui-icon{background-image:url("images/ui-icons_777620_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cc0000_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:3px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:3px}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:0 0 0 0;padding:5px;background:#666;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px}css/jquery-ui.min.1722265817.css000064400000071131150755146460011671 0ustar00/*! jQuery UI - v1.11.4 - 2018-06-29
* http://jqueryui.com
* Includes: core.css, draggable.css, resizable.css, selectable.css, sortable.css, accordion.css, autocomplete.css, button.css, datepicker.css, dialog.css, menu.css, progressbar.css, selectmenu.css, slider.css, spinner.css, tabs.css, tooltip.css, theme.css
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&fwDefault=normal&cornerRadius=3px&bgColorHeader=e9e9e9&bgTextureHeader=flat&borderColorHeader=dddddd&fcHeader=333333&iconColorHeader=444444&bgColorContent=ffffff&bgTextureContent=flat&borderColorContent=dddddd&fcContent=333333&iconColorContent=444444&bgColorDefault=f6f6f6&bgTextureDefault=flat&borderColorDefault=c5c5c5&fcDefault=454545&iconColorDefault=777777&bgColorHover=ededed&bgTextureHover=flat&borderColorHover=cccccc&fcHover=2b2b2b&iconColorHover=555555&bgColorActive=007fff&bgTextureActive=flat&borderColorActive=003eff&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=fffa90&bgTextureHighlight=flat&borderColorHighlight=dad55e&fcHighlight=777620&iconColorHighlight=777620&bgColorError=fddfdf&bgTextureError=flat&borderColorError=f1a899&fcError=5f3f3f&iconColorError=cc0000&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=666666&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=5px&offsetTopShadow=0px&offsetLeftShadow=0px&cornerRadiusShadow=8px
* Copyright jQuery Foundation and other contributors; Licensed MIT */

.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;min-height:0;font-size:100%}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-button{display:inline-block;overflow:hidden;position:relative;text-decoration:none;cursor:pointer}.ui-selectmenu-button span.ui-icon{right:0.5em;left:auto;margin-top:-8px;position:absolute;top:50%}.ui-selectmenu-button span.ui-selectmenu-text{text-align:left;padding:0.4em 2.1em 0.4em 1em;display:block;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #ddd;background:#fff;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #ddd;background:#e9e9e9;color:#333;font-weight:bold}.ui-widget-header a{color:#333}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #c5c5c5;background:#f6f6f6;font-weight:normal;color:#454545}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#454545;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #ccc;background:#ededed;font-weight:normal;color:#2b2b2b}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#2b2b2b;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #003eff;background:#007fff;font-weight:normal;color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #dad55e;background:#fffa90;color:#777620}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#777620}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #f1a899;background:#fddfdf;color:#5f3f3f}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#5f3f3f}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#5f3f3f}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-state-default .ui-icon{background-image:url("images/ui-icons_777777_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("images/ui-icons_555555_256x240.png")}.ui-state-active .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-highlight .ui-icon{background-image:url("images/ui-icons_777620_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cc0000_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:3px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:3px}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:0 0 0 0;padding:5px;background:#666;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px}css/wf-adminbar.1722265817.css000064400000111577150755146460011355 0ustar00.wf-clearfix:before,.wf-clearfix:after{content:" ";display:table}.wf-clearfix:after{clear:both}.wf-btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;text-transform:uppercase;padding:.4rem 1rem;font-size:.875rem;line-height:1.3125rem;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}@media (min-width: 768px){.wf-btn{padding:.5rem 1.25rem;font-size:.875rem;line-height:1.3125rem;border-radius:4px}}.wf-btn:focus,.wf-btn.wf-focus,.wf-btn:active:focus,.wf-btn:active.wf-focus,.wf-btn.wf-active:focus,.wf-btn.wf-active.wf-focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.wf-btn:hover,.wf-btn:focus,.wf-btn.wf-focus{text-decoration:none}.wf-btn:active,.wf-btn.wf-active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.wf-btn.wf-disabled,.wf-btn[disabled],.wf-btn[readonly],fieldset[disabled] .wf-btn{cursor:not-allowed;-webkit-box-shadow:none;box-shadow:none}a.wf-btn{text-decoration:none}a.wf-btn.wf-disabled,fieldset[disabled] a.wf-btn{cursor:not-allowed;pointer-events:none}.wf-btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.wf-btn-success:focus,.wf-btn-success.focus{color:#fff;background-color:#449d44;border-color:#255625}.wf-btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.wf-btn-success:active,.wf-btn-success.active,.wf-open>.wf-btn-success.wf-dropdown-toggle{color:#fff;background-color:#449d44;border-color:#398439}.wf-btn-success:active:hover,.wf-btn-success:active:focus,.wf-btn-success:active.focus,.wf-btn-success.active:hover,.wf-btn-success.active:focus,.wf-btn-success.active.focus,.wf-open>.wf-btn-success.wf-dropdown-toggle:hover,.wf-open>.wf-btn-success.wf-dropdown-toggle:focus,.wf-open>.wf-btn-success.wf-dropdown-toggle.focus{color:#fff;background-color:#398439;border-color:#255625}.wf-btn-success:active,.wf-btn-success.wf-active,.wf-open>.wf-btn-success.wf-dropdown-toggle{background-image:none}.wf-btn-success.wf-disabled,.wf-btn-success[disabled],.wf-btn-success[readonly],fieldset[disabled] .wf-btn-success{color:#fff;background-color:#95d195;border-color:#8bca8b;cursor:not-allowed}.wf-btn-success.wf-disabled:hover,.wf-btn-success.wf-disabled:focus,.wf-btn-success.wf-disabled.wf-focus,.wf-btn-success[disabled]:hover,.wf-btn-success[disabled]:focus,.wf-btn-success[disabled].wf-focus,.wf-btn-success[readonly]:hover,.wf-btn-success[readonly]:focus,.wf-btn-success[readonly].wf-focus,fieldset[disabled] .wf-btn-success:hover,fieldset[disabled] .wf-btn-success:focus,fieldset[disabled] .wf-btn-success.wf-focus{background-color:#5cb85c;border-color:#4cae4c}.wf-btn-success .wf-badge{color:#5cb85c;background-color:#fff}.wf-btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.wf-btn-info:focus,.wf-btn-info.focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.wf-btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.wf-btn-info:active,.wf-btn-info.active,.wf-open>.wf-btn-info.wf-dropdown-toggle{color:#fff;background-color:#31b0d5;border-color:#269abc}.wf-btn-info:active:hover,.wf-btn-info:active:focus,.wf-btn-info:active.focus,.wf-btn-info.active:hover,.wf-btn-info.active:focus,.wf-btn-info.active.focus,.wf-open>.wf-btn-info.wf-dropdown-toggle:hover,.wf-open>.wf-btn-info.wf-dropdown-toggle:focus,.wf-open>.wf-btn-info.wf-dropdown-toggle.focus{color:#fff;background-color:#269abc;border-color:#1b6d85}.wf-btn-info:active,.wf-btn-info.wf-active,.wf-open>.wf-btn-info.wf-dropdown-toggle{background-image:none}.wf-btn-info.wf-disabled,.wf-btn-info[disabled],.wf-btn-info[readonly],fieldset[disabled] .wf-btn-info{color:#fff;background-color:#94d6ea;border-color:#87d1e7;cursor:not-allowed}.wf-btn-info.wf-disabled:hover,.wf-btn-info.wf-disabled:focus,.wf-btn-info.wf-disabled.wf-focus,.wf-btn-info[disabled]:hover,.wf-btn-info[disabled]:focus,.wf-btn-info[disabled].wf-focus,.wf-btn-info[readonly]:hover,.wf-btn-info[readonly]:focus,.wf-btn-info[readonly].wf-focus,fieldset[disabled] .wf-btn-info:hover,fieldset[disabled] .wf-btn-info:focus,fieldset[disabled] .wf-btn-info.wf-focus{background-color:#5bc0de;border-color:#46b8da}.wf-btn-info .wf-badge{color:#5bc0de;background-color:#fff}.wf-btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.wf-btn-warning:focus,.wf-btn-warning.focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.wf-btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.wf-btn-warning:active,.wf-btn-warning.active,.wf-open>.wf-btn-warning.wf-dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.wf-btn-warning:active:hover,.wf-btn-warning:active:focus,.wf-btn-warning:active.focus,.wf-btn-warning.active:hover,.wf-btn-warning.active:focus,.wf-btn-warning.active.focus,.wf-open>.wf-btn-warning.wf-dropdown-toggle:hover,.wf-open>.wf-btn-warning.wf-dropdown-toggle:focus,.wf-open>.wf-btn-warning.wf-dropdown-toggle.focus{color:#fff;background-color:#d58512;border-color:#985f0d}.wf-btn-warning:active,.wf-btn-warning.wf-active,.wf-open>.wf-btn-warning.wf-dropdown-toggle{background-image:none}.wf-btn-warning.wf-disabled,.wf-btn-warning[disabled],.wf-btn-warning[readonly],fieldset[disabled] .wf-btn-warning{color:#fff;background-color:#f5ca8c;border-color:#f4c37c;cursor:not-allowed}.wf-btn-warning.wf-disabled:hover,.wf-btn-warning.wf-disabled:focus,.wf-btn-warning.wf-disabled.wf-focus,.wf-btn-warning[disabled]:hover,.wf-btn-warning[disabled]:focus,.wf-btn-warning[disabled].wf-focus,.wf-btn-warning[readonly]:hover,.wf-btn-warning[readonly]:focus,.wf-btn-warning[readonly].wf-focus,fieldset[disabled] .wf-btn-warning:hover,fieldset[disabled] .wf-btn-warning:focus,fieldset[disabled] .wf-btn-warning.wf-focus{background-color:#f0ad4e;border-color:#eea236}.wf-btn-warning .wf-badge{color:#f0ad4e;background-color:#fff}.wf-btn-danger,.wf-btn.wf-btn-danger{color:#fff;background-color:#930000;border-color:#7a0000}.wf-btn-danger:focus,.wf-btn-danger.focus,.wf-btn.wf-btn-danger:focus,.wf-btn.wf-btn-danger.focus{color:#fff;background-color:#600000;border-color:#000}.wf-btn-danger:hover,.wf-btn.wf-btn-danger:hover{color:#fff;background-color:#600000;border-color:#3c0000}.wf-btn-danger:active,.wf-btn-danger.active,.wf-open>.wf-btn-danger.wf-dropdown-toggle,.wf-btn.wf-btn-danger:active,.wf-btn.wf-btn-danger.active,.wf-open>.wf-btn.wf-btn-danger.wf-dropdown-toggle{color:#fff;background-color:#600000;border-color:#3c0000}.wf-btn-danger:active:hover,.wf-btn-danger:active:focus,.wf-btn-danger:active.focus,.wf-btn-danger.active:hover,.wf-btn-danger.active:focus,.wf-btn-danger.active.focus,.wf-open>.wf-btn-danger.wf-dropdown-toggle:hover,.wf-open>.wf-btn-danger.wf-dropdown-toggle:focus,.wf-open>.wf-btn-danger.wf-dropdown-toggle.focus,.wf-btn.wf-btn-danger:active:hover,.wf-btn.wf-btn-danger:active:focus,.wf-btn.wf-btn-danger:active.focus,.wf-btn.wf-btn-danger.active:hover,.wf-btn.wf-btn-danger.active:focus,.wf-btn.wf-btn-danger.active.focus,.wf-open>.wf-btn.wf-btn-danger.wf-dropdown-toggle:hover,.wf-open>.wf-btn.wf-btn-danger.wf-dropdown-toggle:focus,.wf-open>.wf-btn.wf-btn-danger.wf-dropdown-toggle.focus{color:#fff;background-color:#3c0000;border-color:#000}.wf-btn-danger:active,.wf-btn-danger.wf-active,.wf-open>.wf-btn-danger.wf-dropdown-toggle,.wf-btn.wf-btn-danger:active,.wf-btn.wf-btn-danger.wf-active,.wf-open>.wf-btn.wf-btn-danger.wf-dropdown-toggle{background-image:none}.wf-btn-danger.wf-disabled,.wf-btn-danger[disabled],.wf-btn-danger[readonly],fieldset[disabled] .wf-btn-danger,.wf-btn.wf-btn-danger.wf-disabled,.wf-btn.wf-btn-danger[disabled],.wf-btn.wf-btn-danger[readonly],fieldset[disabled] .wf-btn.wf-btn-danger{color:#fff;background-color:#b95959;border-color:#a95959;cursor:not-allowed}.wf-btn-danger.wf-disabled:hover,.wf-btn-danger.wf-disabled:focus,.wf-btn-danger.wf-disabled.wf-focus,.wf-btn-danger[disabled]:hover,.wf-btn-danger[disabled]:focus,.wf-btn-danger[disabled].wf-focus,.wf-btn-danger[readonly]:hover,.wf-btn-danger[readonly]:focus,.wf-btn-danger[readonly].wf-focus,fieldset[disabled] .wf-btn-danger:hover,fieldset[disabled] .wf-btn-danger:focus,fieldset[disabled] .wf-btn-danger.wf-focus,.wf-btn.wf-btn-danger.wf-disabled:hover,.wf-btn.wf-btn-danger.wf-disabled:focus,.wf-btn.wf-btn-danger.wf-disabled.wf-focus,.wf-btn.wf-btn-danger[disabled]:hover,.wf-btn.wf-btn-danger[disabled]:focus,.wf-btn.wf-btn-danger[disabled].wf-focus,.wf-btn.wf-btn-danger[readonly]:hover,.wf-btn.wf-btn-danger[readonly]:focus,.wf-btn.wf-btn-danger[readonly].wf-focus,fieldset[disabled] .wf-btn.wf-btn-danger:hover,fieldset[disabled] .wf-btn.wf-btn-danger:focus,fieldset[disabled] .wf-btn.wf-btn-danger.wf-focus{background-color:#930000;border-color:#7a0000}.wf-btn-danger .wf-badge,.wf-btn.wf-btn-danger .wf-badge{color:#930000;background-color:#fff}.wf-btn-callout{font-weight:600;text-transform:uppercase}.wf-btn-callout-subtle{font-weight:400;text-transform:uppercase}.wf-btn-link{font-weight:normal;border-radius:0}.wf-btn-link,.wf-btn-link:active,.wf-btn-link.wf-active,.wf-btn-link[disabled],fieldset[disabled] .wf-btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.wf-btn-link,.wf-btn-link:hover,.wf-btn-link:focus,.wf-btn-link:active{border-color:transparent}.wf-btn-link:hover,.wf-btn-link:focus{color:#003a52;text-decoration:underline;background-color:transparent}.wf-btn-link[disabled]:hover,.wf-btn-link[disabled]:focus,fieldset[disabled] .wf-btn-link:hover,fieldset[disabled] .wf-btn-link:focus{color:#777;text-decoration:none}.wf-btn-lg,.wf-btn-group-lg>.wf-btn{padding:10px 16px;font-size:18px;line-height:1.33333;border-radius:6px}.wf-btn-sm,.wf-btn-group-sm>.wf-btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.wf-btn-xs,.wf-btn-group-xs>.wf-btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.wf-btn-block{display:block;width:100%}.wf-btn-block+.wf-btn-block{margin-top:5px}input[type="submit"].wf-btn-block,input[type="reset"].wf-btn-block,input[type="button"].wf-btn-block{width:100%}.wf-btn-group,.wf-btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.wf-btn-group>.wf-btn,.wf-btn-group-vertical>.wf-btn{position:relative;float:left}.wf-btn-group>.wf-btn:hover,.wf-btn-group>.wf-btn:focus,.wf-btn-group>.wf-btn:active,.wf-btn-group>.wf-btn.wf-active,.wf-btn-group-vertical>.wf-btn:hover,.wf-btn-group-vertical>.wf-btn:focus,.wf-btn-group-vertical>.wf-btn:active,.wf-btn-group-vertical>.wf-btn.wf-active{z-index:2}.wf-btn-group .wf-btn+.wf-btn,.wf-btn-group .wf-btn+.wf-btn-group,.wf-btn-group .wf-btn-group+.wf-btn,.wf-btn-group .wf-btn-group+.wf-btn-group{margin-left:-1px}.wf-btn-toolbar{margin-left:-5px}.wf-btn-toolbar:before,.wf-btn-toolbar:after{content:" ";display:table}.wf-btn-toolbar:after{clear:both}.wf-btn-toolbar .wf-btn,.wf-btn-toolbar .wf-btn-group,.wf-btn-toolbar .wf-input-group{float:left}.wf-btn-toolbar>.wf-btn,.wf-btn-toolbar>.wf-btn-group,.wf-btn-toolbar>.wf-input-group{margin-left:5px}.wf-btn-group>.wf-btn:not(:first-child):not(:last-child):not(.wf-dropdown-toggle){border-radius:0}.wf-btn-group>.wf-btn:first-child{margin-left:0}.wf-btn-group>.wf-btn:first-child:not(:last-child):not(.wf-dropdown-toggle){-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.wf-btn-group>.wf-btn:last-child:not(:first-child),.wf-btn-group>.wf-dropdown-toggle:not(:first-child){-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0}.wf-btn-group>.wf-btn-group{float:left}.wf-btn-group>.wf-btn-group:not(:first-child):not(:last-child)>.wf-btn{border-radius:0}.wf-btn-group>.wf-btn-group:first-child:not(:last-child)>.wf-btn:last-child,.wf-btn-group>.wf-btn-group:first-child:not(:last-child)>.wf-dropdown-toggle{-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.wf-btn-group>.wf-btn-group:last-child:not(:first-child)>.wf-btn:first-child{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0}.wf-btn-group .wf-dropdown-toggle:active,.wf-btn-group.wf-open .wf-dropdown-toggle{outline:0}.wf-btn-group>.wf-btn+.wf-dropdown-toggle{padding-left:8px;padding-right:8px}.wf-btn-group>.wf-btn-lg+.wf-dropdown-toggle,.wf-btn-group-lg.wf-btn-group>.wf-btn+.wf-dropdown-toggle{padding-left:12px;padding-right:12px}.wf-btn-group.open .wf-dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.wf-btn-group.open .wf-dropdown-toggle.wf-btn-link{-webkit-box-shadow:none;box-shadow:none}.wf-btn .wf-caret{margin-left:0}.wf-btn-lg .wf-caret,.wf-btn-group-lg>.wf-btn .wf-caret{border-width:5px 5px 0;border-bottom-width:0}.wf-dropup .wf-btn-lg .wf-caret,.wf-dropup .wf-btn-group-lg>.wf-btn .wf-caret{border-width:0 5px 5px}.wf-btn-group-vertical>.wf-btn,.wf-btn-group-vertical>.wf-btn-group,.wf-btn-group-vertical>.wf-btn-group>.wf-btn{display:block;float:none;width:100%;max-width:100%}.wf-btn-group-vertical>.wf-btn-group:before,.wf-btn-group-vertical>.wf-btn-group:after{content:" ";display:table}.wf-btn-group-vertical>.wf-btn-group:after{clear:both}.wf-btn-group-vertical>.wf-btn-group>.wf-btn{float:none}.wf-btn-group-vertical>.wf-btn+.wf-btn,.wf-btn-group-vertical>.wf-btn+.wf-btn-group,.wf-btn-group-vertical>.wf-btn-group+.wf-btn,.wf-btn-group-vertical>.wf-btn-group+.wf-btn-group{margin-top:-1px;margin-left:0}.wf-btn-group-vertical>.wf-btn:not(:first-child):not(:last-child){border-radius:0}.wf-btn-group-vertical>.wf-btn:first-child:not(:last-child){-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.wf-btn-group-vertical>.wf-btn:last-child:not(:first-child){-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.wf-btn-group-vertical>.wf-btn-group:not(:first-child):not(:last-child)>.wf-btn{border-radius:0}.wf-btn-group-vertical>.wf-btn-group:first-child:not(:last-child)>.wf-btn:last-child,.wf-btn-group-vertical>.wf-btn-group:first-child:not(:last-child)>.wf-dropdown-toggle{-moz-border-radius-bottomleft:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0}.wf-btn-group-vertical>.wf-btn-group:last-child:not(:first-child)>.wf-btn:first-child{-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0;border-top-left-radius:0;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;border-top-right-radius:0}.wf-btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.wf-btn-group-justified>.wf-btn,.wf-btn-group-justified>.wf-btn-group{float:none;display:table-cell;width:1%}.wf-btn-group-justified>.wf-btn-group .wf-btn{width:100%}.wf-btn-group-justified>.wf-btn-group .wf-dropdown-menu{left:auto}[data-toggle="buttons"]>.wf-btn input[type="radio"],[data-toggle="buttons"]>.wf-btn input[type="checkbox"],[data-toggle="buttons"]>.wf-btn-group>.wf-btn input[type="radio"],[data-toggle="buttons"]>.wf-btn-group>.wf-btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.wf-pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.wf-pagination>li{display:inline}.wf-pagination>li>a,.wf-pagination>li>span{position:relative;float:left;padding:.5rem 1.25rem;line-height:1.42857;text-decoration:none;color:#00709e;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.wf-pagination>li:first-child>a,.wf-pagination>li:first-child>span{margin-left:0;-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px}.wf-pagination>li:last-child>a,.wf-pagination>li:last-child>span{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.wf-pagination>li>a:hover,.wf-pagination>li>a:focus,.wf-pagination>li>span:hover,.wf-pagination>li>span:focus{z-index:2;color:#003a52;background-color:#e2e2e2;border-color:#ddd}.wf-pagination>.wf-active>a,.wf-pagination>.wf-active>a:hover,.wf-pagination>.wf-active>a:focus,.wf-pagination>.wf-active>span,.wf-pagination>.wf-active>span:hover,.wf-pagination>.wf-active>span:focus{z-index:3;color:#fff;cursor:default}.wf-pagination>.wf-disabled>span,.wf-pagination>.wf-disabled>span:hover,.wf-pagination>.wf-disabled>span:focus,.wf-pagination>.wf-disabled>a,.wf-pagination>.wf-disabled>a:hover,.wf-pagination>.wf-disabled>a:focus{color:#777;background-color:#fff;border-color:#ddd;cursor:not-allowed}.wf-pagination-lg>li>a,.wf-pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.33333}.wf-pagination-lg>li:first-child>a,.wf-pagination-lg>li:first-child>span{-moz-border-radius-topleft:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px}.wf-pagination-lg>li:last-child>a,.wf-pagination-lg>li:last-child>span{-moz-border-radius-topright:6px;-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-moz-border-radius-bottomright:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px}.wf-pagination-sm>li>a,.wf-pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.wf-pagination-sm>li:first-child>a,.wf-pagination-sm>li:first-child>span{-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px}.wf-pagination-sm>li:last-child>a,.wf-pagination-sm>li:last-child>span{-moz-border-radius-topright:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-moz-border-radius-bottomright:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px}.wf-downgrade-license{padding:0 1.25rem}.wf-flag-{background-position:-0px -0px !important}.wf-flag-ad{background-position:-16px -0px !important}.wf-flag-ae{background-position:-32px -0px !important}.wf-flag-af{background-position:-48px -0px !important}.wf-flag-ag{background-position:-64px -0px !important}.wf-flag-ai{background-position:-80px -0px !important}.wf-flag-al{background-position:-96px -0px !important}.wf-flag-am{background-position:-112px -0px !important}.wf-flag-an{background-position:-128px -0px !important}.wf-flag-ao{background-position:-144px -0px !important}.wf-flag-ap{background-position:-160px -0px !important}.wf-flag-aq{background-position:-176px -0px !important}.wf-flag-ar{background-position:-0px -11px !important}.wf-flag-as{background-position:-16px -11px !important}.wf-flag-at{background-position:-32px -11px !important}.wf-flag-au{background-position:-48px -11px !important}.wf-flag-aw{background-position:-64px -11px !important}.wf-flag-ax{background-position:-80px -11px !important}.wf-flag-az{background-position:-96px -11px !important}.wf-flag-ba{background-position:-112px -11px !important}.wf-flag-bb{background-position:-128px -11px !important}.wf-flag-bd{background-position:-144px -11px !important}.wf-flag-be{background-position:-160px -11px !important}.wf-flag-bf{background-position:-176px -11px !important}.wf-flag-bg{background-position:-0px -22px !important}.wf-flag-bh{background-position:-16px -22px !important}.wf-flag-bi{background-position:-32px -22px !important}.wf-flag-bj{background-position:-48px -22px !important}.wf-flag-bl{background-position:-64px -22px !important}.wf-flag-bm{background-position:-80px -22px !important}.wf-flag-bn{background-position:-96px -22px !important}.wf-flag-bo{background-position:-112px -22px !important}.wf-flag-bq{background-position:-128px -22px !important}.wf-flag-br{background-position:-144px -22px !important}.wf-flag-bs{background-position:-160px -22px !important}.wf-flag-bt{background-position:-176px -22px !important}.wf-flag-bv{background-position:-0px -33px !important}.wf-flag-bw{background-position:-16px -33px !important}.wf-flag-by{background-position:-32px -33px !important}.wf-flag-bz{background-position:-48px -33px !important}.wf-flag-ca{background-position:-64px -33px !important}.wf-flag-cc{background-position:-80px -33px !important}.wf-flag-cd{background-position:-96px -33px !important}.wf-flag-cf{background-position:-112px -33px !important}.wf-flag-cg{background-position:-128px -33px !important}.wf-flag-ch{background-position:-144px -33px !important}.wf-flag-ci{background-position:-160px -33px !important}.wf-flag-ck{background-position:-176px -33px !important}.wf-flag-cl{background-position:-0px -44px !important}.wf-flag-cm{background-position:-16px -44px !important}.wf-flag-cn{background-position:-32px -44px !important}.wf-flag-co{background-position:-48px -44px !important}.wf-flag-cr{background-position:-64px -44px !important}.wf-flag-cs{background-position:-80px -44px !important}.wf-flag-cu{background-position:-96px -44px !important}.wf-flag-cv{background-position:-112px -44px !important}.wf-flag-cw{background-position:-128px -44px !important}.wf-flag-cx{background-position:-144px -44px !important}.wf-flag-cy{background-position:-160px -44px !important}.wf-flag-cz{background-position:-176px -44px !important}.wf-flag-de{background-position:-0px -55px !important}.wf-flag-dj{background-position:-16px -55px !important}.wf-flag-dk{background-position:-32px -55px !important}.wf-flag-dm{background-position:-48px -55px !important}.wf-flag-do{background-position:-64px -55px !important}.wf-flag-dz{background-position:-80px -55px !important}.wf-flag-ec{background-position:-96px -55px !important}.wf-flag-ee{background-position:-112px -55px !important}.wf-flag-eg{background-position:-128px -55px !important}.wf-flag-eh{background-position:-144px -55px !important}.wf-flag-england{background-position:-160px -55px !important}.wf-flag-er{background-position:-176px -55px !important}.wf-flag-es{background-position:-0px -66px !important}.wf-flag-et{background-position:-16px -66px !important}.wf-flag-eu{background-position:-32px -66px !important}.wf-flag-fam{background-position:-48px -66px !important}.wf-flag-fi{background-position:-64px -66px !important}.wf-flag-fj{background-position:-80px -66px !important}.wf-flag-fk{background-position:-96px -66px !important}.wf-flag-fm{background-position:-112px -66px !important}.wf-flag-fo{background-position:-128px -66px !important}.wf-flag-fr{background-position:-144px -66px !important}.wf-flag-ga{background-position:-160px -66px !important}.wf-flag-gb{background-position:-176px -66px !important}.wf-flag-gd{background-position:-0px -77px !important}.wf-flag-ge{background-position:-16px -77px !important}.wf-flag-gf{background-position:-32px -77px !important}.wf-flag-gg{background-position:-48px -77px !important}.wf-flag-gh{background-position:-64px -77px !important}.wf-flag-gi{background-position:-80px -77px !important}.wf-flag-gl{background-position:-96px -77px !important}.wf-flag-gm{background-position:-112px -77px !important}.wf-flag-gn{background-position:-128px -77px !important}.wf-flag-gp{background-position:-144px -77px !important}.wf-flag-gq{background-position:-160px -77px !important}.wf-flag-gr{background-position:-176px -77px !important}.wf-flag-gs{background-position:-0px -88px !important}.wf-flag-gt{background-position:-16px -88px !important}.wf-flag-gu{background-position:-32px -88px !important}.wf-flag-gw{background-position:-48px -88px !important}.wf-flag-gy{background-position:-64px -88px !important}.wf-flag-hk{background-position:-80px -88px !important}.wf-flag-hm{background-position:-96px -88px !important}.wf-flag-hn{background-position:-112px -88px !important}.wf-flag-hr{background-position:-128px -88px !important}.wf-flag-ht{background-position:-144px -88px !important}.wf-flag-hu{background-position:-160px -88px !important}.wf-flag-id{background-position:-176px -88px !important}.wf-flag-ie{background-position:-0px -99px !important}.wf-flag-il{background-position:-16px -99px !important}.wf-flag-im{background-position:-32px -99px !important}.wf-flag-in{background-position:-48px -99px !important}.wf-flag-io{background-position:-64px -99px !important}.wf-flag-iq{background-position:-80px -99px !important}.wf-flag-ir{background-position:-96px -99px !important}.wf-flag-is{background-position:-112px -99px !important}.wf-flag-it{background-position:-128px -99px !important}.wf-flag-je{background-position:-144px -99px !important}.wf-flag-jm{background-position:-160px -99px !important}.wf-flag-jo{background-position:-176px -99px !important}.wf-flag-jp{background-position:-0px -110px !important}.wf-flag-ke{background-position:-16px -110px !important}.wf-flag-kg{background-position:-32px -110px !important}.wf-flag-kh{background-position:-48px -110px !important}.wf-flag-ki{background-position:-64px -110px !important}.wf-flag-km{background-position:-80px -110px !important}.wf-flag-kn{background-position:-96px -110px !important}.wf-flag-kp{background-position:-112px -110px !important}.wf-flag-kr{background-position:-128px -110px !important}.wf-flag-kw{background-position:-144px -110px !important}.wf-flag-ky{background-position:-160px -110px !important}.wf-flag-kz{background-position:-176px -110px !important}.wf-flag-la{background-position:-0px -121px !important}.wf-flag-lb{background-position:-16px -121px !important}.wf-flag-lc{background-position:-32px -121px !important}.wf-flag-li{background-position:-48px -121px !important}.wf-flag-lk{background-position:-64px -121px !important}.wf-flag-lr{background-position:-80px -121px !important}.wf-flag-ls{background-position:-96px -121px !important}.wf-flag-lt{background-position:-112px -121px !important}.wf-flag-lu{background-position:-128px -121px !important}.wf-flag-lv{background-position:-144px -121px !important}.wf-flag-ly{background-position:-160px -121px !important}.wf-flag-ma{background-position:-176px -121px !important}.wf-flag-mc{background-position:-0px -132px !important}.wf-flag-md{background-position:-16px -132px !important}.wf-flag-me{background-position:-32px -132px !important}.wf-flag-mf{background-position:-48px -132px !important}.wf-flag-mg{background-position:-64px -132px !important}.wf-flag-mh{background-position:-80px -132px !important}.wf-flag-mk{background-position:-96px -132px !important}.wf-flag-ml{background-position:-112px -132px !important}.wf-flag-mm{background-position:-128px -132px !important}.wf-flag-mn{background-position:-144px -132px !important}.wf-flag-mo{background-position:-160px -132px !important}.wf-flag-mp{background-position:-176px -132px !important}.wf-flag-mq{background-position:-0px -143px !important}.wf-flag-mr{background-position:-16px -143px !important}.wf-flag-ms{background-position:-32px -143px !important}.wf-flag-mt{background-position:-48px -143px !important}.wf-flag-mu{background-position:-64px -143px !important}.wf-flag-mv{background-position:-80px -143px !important}.wf-flag-mw{background-position:-96px -143px !important}.wf-flag-mx{background-position:-112px -143px !important}.wf-flag-my{background-position:-128px -143px !important}.wf-flag-mz{background-position:-144px -143px !important}.wf-flag-na{background-position:-160px -143px !important}.wf-flag-nc{background-position:-176px -143px !important}.wf-flag-ne{background-position:-0px -154px !important}.wf-flag-nf{background-position:-16px -154px !important}.wf-flag-ng{background-position:-32px -154px !important}.wf-flag-ni{background-position:-48px -154px !important}.wf-flag-nl{background-position:-64px -154px !important}.wf-flag-no{background-position:-80px -154px !important}.wf-flag-np{background-position:-96px -154px !important}.wf-flag-nr{background-position:-112px -154px !important}.wf-flag-nu{background-position:-128px -154px !important}.wf-flag-nz{background-position:-144px -154px !important}.wf-flag-om{background-position:-160px -154px !important}.wf-flag-pa{background-position:-176px -154px !important}.wf-flag-pe{background-position:-0px -165px !important}.wf-flag-pf{background-position:-16px -165px !important}.wf-flag-pg{background-position:-32px -165px !important}.wf-flag-ph{background-position:-48px -165px !important}.wf-flag-pk{background-position:-64px -165px !important}.wf-flag-pl{background-position:-80px -165px !important}.wf-flag-pm{background-position:-96px -165px !important}.wf-flag-pn{background-position:-112px -165px !important}.wf-flag-pr{background-position:-128px -165px !important}.wf-flag-ps{background-position:-144px -165px !important}.wf-flag-pt{background-position:-160px -165px !important}.wf-flag-pw{background-position:-176px -165px !important}.wf-flag-py{background-position:-0px -176px !important}.wf-flag-qa{background-position:-16px -176px !important}.wf-flag-re{background-position:-32px -176px !important}.wf-flag-ro{background-position:-48px -176px !important}.wf-flag-rs{background-position:-64px -176px !important}.wf-flag-ru{background-position:-80px -176px !important}.wf-flag-rw{background-position:-96px -176px !important}.wf-flag-sa{background-position:-112px -176px !important}.wf-flag-sb{background-position:-128px -176px !important}.wf-flag-sc{background-position:-144px -176px !important}.wf-flag-scotland{background-position:-160px -176px !important}.wf-flag-sd{background-position:-176px -176px !important}.wf-flag-se{background-position:-0px -187px !important}.wf-flag-sg{background-position:-16px -187px !important}.wf-flag-sh{background-position:-32px -187px !important}.wf-flag-si{background-position:-48px -187px !important}.wf-flag-sj{background-position:-64px -187px !important}.wf-flag-sk{background-position:-80px -187px !important}.wf-flag-sl{background-position:-96px -187px !important}.wf-flag-sm{background-position:-112px -187px !important}.wf-flag-sn{background-position:-128px -187px !important}.wf-flag-so{background-position:-144px -187px !important}.wf-flag-sr{background-position:-160px -187px !important}.wf-flag-ss{background-position:-176px -187px !important}.wf-flag-st{background-position:-0px -198px !important}.wf-flag-sv{background-position:-16px -198px !important}.wf-flag-sx{background-position:-32px -198px !important}.wf-flag-sy{background-position:-48px -198px !important}.wf-flag-sz{background-position:-64px -198px !important}.wf-flag-tc{background-position:-80px -198px !important}.wf-flag-td{background-position:-96px -198px !important}.wf-flag-tf{background-position:-112px -198px !important}.wf-flag-tg{background-position:-128px -198px !important}.wf-flag-th{background-position:-144px -198px !important}.wf-flag-tj{background-position:-160px -198px !important}.wf-flag-tk{background-position:-176px -198px !important}.wf-flag-tl{background-position:-0px -209px !important}.wf-flag-tm{background-position:-16px -209px !important}.wf-flag-tn{background-position:-32px -209px !important}.wf-flag-to{background-position:-48px -209px !important}.wf-flag-tr{background-position:-64px -209px !important}.wf-flag-tt{background-position:-80px -209px !important}.wf-flag-tv{background-position:-96px -209px !important}.wf-flag-tw{background-position:-112px -209px !important}.wf-flag-tz{background-position:-128px -209px !important}.wf-flag-ua{background-position:-144px -209px !important}.wf-flag-ug{background-position:-160px -209px !important}.wf-flag-uk{background-position:-176px -209px !important}.wf-flag-um{background-position:-0px -220px !important}.wf-flag-un{background-position:-16px -220px !important}.wf-flag-us{background-position:-32px -220px !important}.wf-flag-uy{background-position:-48px -220px !important}.wf-flag-uz{background-position:-64px -220px !important}.wf-flag-va{background-position:-80px -220px !important}.wf-flag-vc{background-position:-96px -220px !important}.wf-flag-ve{background-position:-112px -220px !important}.wf-flag-vg{background-position:-128px -220px !important}.wf-flag-vi{background-position:-144px -220px !important}.wf-flag-vn{background-position:-160px -220px !important}.wf-flag-vu{background-position:-176px -220px !important}.wf-flag-wales{background-position:-0px -231px !important}.wf-flag-wf{background-position:-16px -231px !important}.wf-flag-ws{background-position:-32px -231px !important}.wf-flag-xk{background-position:-48px -231px !important}.wf-flag-ye{background-position:-64px -231px !important}.wf-flag-yt{background-position:-80px -231px !important}.wf-flag-za{background-position:-96px -231px !important}.wf-flag-zm{background-position:-112px -231px !important}.wf-flag-zw{background-position:-128px -231px !important}#wf-adminbar-icon{float:left;width:20px;height:30px;background-repeat:no-repeat;background-position:left center}#wpadminbar .wf-notification-counter{display:inline;background-color:inherit}#wpadminbar .wf-notification-counter span.wf-count{padding:1px 7px 1px 6px !important;border-radius:50%;color:#fff;background-color:#fcb214}#wpadminbar .ab-sub-wrapper #wp-admin-bar-wordfence-menu-default .ab-item{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between}#wpadminbar .ab-sub-wrapper #wp-admin-bar-wordfence-menu-default .ab-item .wf-adminbar-submenu-title{-webkit-flex-grow:1;flex-grow:1}#wpadminbar .ab-sub-wrapper #wp-admin-bar-wordfence-menu-default .ab-item .wf-notification-counter{display:block}#wpadminbar .ab-sub-wrapper #wp-admin-bar-wordfence-menu-default .ab-item .wf-adminbar-status{width:1.25rem;font-size:1.25rem;text-align:center}#wpadminbar .ab-sub-wrapper #wp-admin-bar-wordfence-menu-default .ab-item .wf-adminbar-status-neutral{color:#9f9fa0}#wpadminbar .ab-sub-wrapper #wp-admin-bar-wordfence-menu-default .ab-item .wf-adminbar-status-good{color:#16bc9b}#wpadminbar .ab-sub-wrapper #wp-admin-bar-wordfence-menu-default .ab-item .wf-adminbar-status-bad{color:#ffd10a}#adminmenu .update-plugins.wf-menu-badge{background-color:#fcb214 !important}#toplevel_page_Wordfence .wp-menu-image img{max-width:16px;max-height:16px}.wf-hidden{display:none !important}.wfpopover{position:fixed;top:0;left:0;z-index:106000;display:none;max-width:276px;padding:1px;font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:14px;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.wfpopover.wf-top{margin-top:-10px}.wfpopover.wf-right{margin-left:10px}.wfpopover.wf-bottom{margin-top:10px}.wfpopover.wf-left{margin-left:-10px}.wfpopover-title{margin:0;padding:8px 14px;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.wfpopover-content{padding:9px 14px}.wfpopover>.wf-arrow,.wfpopover>.wf-arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.wfpopover>.wf-arrow{border-width:11px}.wfpopover>.wf-arrow:after{border-width:10px;content:""}.wfpopover.wf-top>.wf-arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.wfpopover.wf-top>.wf-arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.wfpopover.wf-right>.wf-arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,0.25)}.wfpopover.wf-right>.wf-arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.wfpopover.wf-bottom>.wf-arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.wfpopover.wf-bottom>.wf-arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.wfpopover.wf-left>.wf-arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,0.25)}.wfpopover.wf-left>.wf-arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.wf-flag{display:inline-block;vertical-align:middle;margin:0px 2px 0 0;background-repeat:no-repeat;background-position:center center;width:16px;height:11px;background-image:url(../images/flags.png);-webkit-flex-shrink:0;flex-shrink:0;-webkit-flex-grow:0;flex-grow:0}
css/wf-colorbox.1722265817.css000064400000020703150755146460011415 0ustar00#wfcolorbox,#wfcboxOverlay,#wfcboxWrapper{position:absolute;top:0;left:0;z-index:9999;overflow:hidden}#wfcboxOverlay{position:fixed;width:100%;height:100%}#wfcboxMiddleLeft,#wfcboxBottomLeft{clear:left}#wfcboxContent{position:relative}#wfcboxLoadedContent{overflow:auto}#wfcboxTitle{margin:0}#wfcboxLoadingOverlay,#wfcboxLoadingGraphic{position:absolute;top:0;left:0;width:100%}#wfcboxPrevious,#wfcboxNext,#wfcboxClose,#wfcboxSlideshow{cursor:pointer}.wfcboxPhoto{float:left;margin:auto;border:0;display:block}.wfcboxIframe{width:100%;height:100%;display:block;border:0}#wfcboxOverlay{background:#777;background:-webkit-radial-gradient(rgba(120,120,120,0.8), rgba(100,100,100,0.8) 50%, #464646);background:-moz-radial-gradient(rgba(120,120,120,0.6), rgba(100,100,100,0.8) 20%, #464646)}#wfcboxContent{background:#fff;overflow:hidden;padding:0 0 8px;margin:20px;-webkit-border-radius:3px 3px 2px 2px;-moz-border-radius:3px 3px 2px 2px;border-radius:3px 3px 2px 2px;-webkit-box-shadow:0 2px 4px rgba(0,0,0,0.4);-moz-box-shadow:0 2px 4px rgba(0,0,0,0.4);box-shadow:0 2px 4px rgba(0,0,0,0.4);-webkit-background-clip:padding-box}#wfcboxError{padding:50px;border:1px solid #ccc}#wfcboxLoadedContent{margin:10px 20px 28px 20px;font-family:Arial;color:#333;-webkit-border-radius:2px 2px 0 0;-moz-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0}#wfcboxTitle{position:absolute;bottom:8px;left:5px;text-align:center;width:100%;color:#949494}#wfcboxCurrent{position:absolute;bottom:8px;left:63px;color:#949494;text-indent:-9999px}#wfcboxSlideshow{position:absolute;bottom:8px;right:35px;color:#0092ef}#wfcboxPrevious{position:absolute;bottom:5px;left:5px;background:url(../images/lightbox-controls.png) no-repeat -75px 0;width:25px;height:25px;text-indent:-9999px}#wfcboxPrevious.hover{background-position:-75px -25px}#wfcboxNext{position:absolute;bottom:5px;left:32px;background:url(../images/lightbox-controls.png) no-repeat -50px 0;width:25px;height:25px;text-indent:-9999px}#wfcboxNext.hover{background-position:-50px -25px}#wfcboxLoadingOverlay{background:url(../images/loading_background.png) no-repeat center center}#wfcboxLoadingGraphic{background:url(../images/loading.gif) no-repeat center center}#wfcboxClose{position:absolute;bottom:5px;right:5px;background:url(../images/lightbox-controls.png) no-repeat -25px 0;width:25px;height:25px;text-indent:-9999px}#wfcboxClose.hover{background-position:-25px -25px}#wfcolorbox.wf-modal ul,#wfcolorbox.wf-modal li{padding:0;margin:0}#wfcolorbox.wf-modal #wfcboxContent{padding:0}#wfcolorbox.wf-modal #wfcboxLoadedContent{margin:0}#wfcolorbox.wf-modal .wf-modal-success{overflow:auto;background-color:#00709e}#wfcolorbox.wf-modal .wf-modal-success .wf-model-success-wrapper{margin:0.25rem;background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA5MS42NSA3MC43OSI+PHBhdGggZD0iTTkwLjA4LDguNzMsODIuOTEsMS41N2E1LjE5LDUuMTksMCwwLDAtNy40MywwTDMzLjMxLDQzLjc0LDE2LjE2LDI2LjU5YTUuMiw1LjIsMCwwLDAtNy40MywwTDEuNTcsMzMuNzdhNS4xOSw1LjE5LDAsMCwwLDAsNy40M2wyOCwyOGE1LjIsNS4yLDAsMCwwLDcuNDMsMEw5MC4wOCwxNi4xN2E1LjE5LDUuMTksMCwwLDAsMC03LjQzWm0wLDAiIGZpbGw9IiMwMDdjYWMiLz48L3N2Zz4=");background-position:top center;background-repeat:no-repeat}#wfcolorbox.wf-modal .wf-modal-header{min-height:44px;padding:1rem;width:100%;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;position:relative;border-bottom:1px solid #d9d9d9}#wfcolorbox.wf-modal .wf-modal-header .wf-modal-header-content{max-width:75%}#wfcolorbox.wf-modal .wf-modal-header .wf-modal-header-content .wf-modal-title{font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:0.95rem;width:100%;transition:color 0.2s ease-in}#wfcolorbox.wf-modal .wf-modal-header .wf-modal-header-content .wf-modal-subtitle{font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;margin-top:.125rem;margin-bottom:.125rem;font-size:.575rem;color:#4f748e}#wfcolorbox.wf-modal .wf-modal-header .wf-modal-header-action{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-end;justify-content:flex-end}#wfcolorbox.wf-modal .wf-modal-header .wf-modal-header-action .wf-modal-header-action-close a{color:#525355}#wfcolorbox.wf-modal .wf-modal-success .wf-modal-header{border-bottom:0px}#wfcolorbox.wf-modal .wf-modal-success .wf-modal-header .wf-modal-header-content{max-width:100%;width:100%;padding-top:1rem}#wfcolorbox.wf-modal .wf-modal-success .wf-modal-header .wf-modal-header-content .wf-modal-title{font-size:1.3125rem;font-weight:300;line-height:1.5;text-align:center;color:#ffffff}#wfcolorbox.wf-modal .wf-modal-content{font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;padding:1rem}#wfcolorbox.wf-modal .wf-modal-content>*:first-child{margin-top:0}#wfcolorbox.wf-modal .wf-modal-content select,#wfcolorbox.wf-modal .wf-modal-content select option,#wfcolorbox.wf-modal .wf-modal-content .wfselect2-container--default{font-size:0.7rem;font-weight:bold}@media (min-width: 768px){#wfcolorbox.wf-modal .wf-modal-content select,#wfcolorbox.wf-modal .wf-modal-content select option,#wfcolorbox.wf-modal .wf-modal-content .wfselect2-container--default{font-size:0.8rem}}@media (min-width: 992px){#wfcolorbox.wf-modal .wf-modal-content select,#wfcolorbox.wf-modal .wf-modal-content select option,#wfcolorbox.wf-modal .wf-modal-content .wfselect2-container--default{font-size:0.9rem}}#wfcolorbox.wf-modal .wf-modal-content .wf-option-select-option,#wfcolorbox.wf-modal .wf-modal-content .wfselect2-container--default,#wfcolorbox.wf-modal .wf-modal-content .wfselect2-container--default .wfselect2-selection--single{text-align:left;height:40px;border-radius:0;border:0;background-color:#ffffff;box-shadow:1px 1px 1px 2px rgba(215,215,215,0.35)}#wfcolorbox.wf-modal .wf-modal-content .wf-option-select-option .wfselect2-selection__rendered,#wfcolorbox.wf-modal .wf-modal-content .wfselect2-container--default .wfselect2-selection__rendered,#wfcolorbox.wf-modal .wf-modal-content .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__rendered{color:#333;line-height:40px}#wfcolorbox.wf-modal .wf-modal-content .wf-option-select-option .wfselect2-selection__arrow,#wfcolorbox.wf-modal .wf-modal-content .wfselect2-container--default .wfselect2-selection__arrow,#wfcolorbox.wf-modal .wf-modal-content .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow{height:38px}#wfcolorbox.wf-modal .wf-modal-content .wf-option-select-option.wfselect2-container--disabled .wfselect2-selection__rendered,#wfcolorbox.wf-modal .wf-modal-content .wfselect2-container--default.wfselect2-container--disabled .wfselect2-selection__rendered,#wfcolorbox.wf-modal .wf-modal-content .wfselect2-container--default .wfselect2-selection--single.wfselect2-container--disabled .wfselect2-selection__rendered{color:#aaa}#wfcolorbox.wf-modal .wf-modal-content .wfselect2-container--default .wfselect2-selection--single .wfselect2-selection__arrow b{border-color:#333 transparent transparent}#wfcolorbox.wf-modal .wf-modal-content .wfselect2-container--default.wfselect2-container--open .wfselect2-selection--single .wfselect2-selection__arrow b{border-color:transparent transparent #333}#wfcolorbox.wf-modal .wf-modal-success .wf-modal-content{text-align:center;color:#ffffff;padding:0 1.5rem 2rem 1.5rem}#wfcolorbox.wf-modal .wf-modal-success .wf-modal-content a{text-decoration:underline;color:#fff}#wfcolorbox.wf-modal .wf-modal-footer{font-family:Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif;min-height:44px;padding:1rem;width:100%;box-sizing:border-box;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;position:relative;background-color:#f1f1f1;border-top:1px solid #d9d9d9}#wfcolorbox.wf-modal .wf-modal-success .wf-modal-footer{background-color:#ccc;border-top:1px solid #bfbfbf}#wfcolorbox,#wfcolorbox:before,#wfcolorbox:after{box-sizing:content-box}#wfcolorbox h1,#wfcolorbox h2,#wfcolorbox h3,#wfcolorbox h4,#wfcolorbox h5,#wfcolorbox h6{display:block;font-weight:600}#wfcolorbox h1{font-size:2em;margin:.67em 0}#wfcolorbox h2,#wfcolorbox h3{font-size:1.3em;margin:1em 0}#wfcolorbox h1,#wfcolorbox h2,#wfcolorbox h3{color:#23282d}#wfcolorbox p{font-size:13px;line-height:1.5;margin:1em 0}
css/diff.1722265817.css000064400000004074150755146460010067 0ustar00body {
	background: #fff;
	font-family: Arial;
	font-size: 12px;
}
.Differences {
	width: 100%;
	border-collapse: collapse;
	border-spacing: 0;
	empty-cells: show;
}

.Differences thead th {
	text-align: left;
	border-bottom: 1px solid #000;
	background: #aaa;
	color: #000;
	padding: 4px;
}
.Differences tbody th {
	text-align: right;
	background: #ccc;
	width: 4em;
	padding: 1px 2px;
	border-right: 1px solid #000;
	vertical-align: top;
	font-size: 13px;
}

.Differences td {
	padding: 1px 2px;
	font-family: Consolas, monospace;
	font-size: 13px;
}

.DifferencesSideBySide td.Left, .DifferencesSideBySide td.Right {
	word-wrap: break-word;
	word-break: break-all;
}

.DifferencesSideBySide .ChangeInsert td.Left {
	background: #dfd;
}

.DifferencesSideBySide .ChangeInsert td.Right {
	background: #cfc;
}

.DifferencesSideBySide .ChangeDelete td.Left {
	background: #f88;
}

.DifferencesSideBySide .ChangeDelete td.Right {
	background: #faa;
}

.DifferencesSideBySide .ChangeReplace .Left {
	background: #fe9;
}

.DifferencesSideBySide .ChangeReplace .Right {
	background: #fd8;
}

.Differences ins, .Differences del {
	text-decoration: none;
}

.DifferencesSideBySide .ChangeReplace ins, .DifferencesSideBySide .ChangeReplace del {
	background: #fc0;
}

.Differences .Skipped {
	background: #f7f7f7;
}

.DifferencesInline .ChangeReplace .Left,
.DifferencesInline .ChangeDelete .Left {
	background: #fdd;
}

.DifferencesInline .ChangeReplace .Right,
.DifferencesInline .ChangeInsert .Right {
	background: #dfd;
}

.DifferencesInline .ChangeReplace ins {
	background: #9e9;
}

.DifferencesInline .ChangeReplace del {
	background: #e99;
}

pre {
	width: 100%;
	overflow: auto;
}
h1 {
	background: url(../images/wordfence-logo.svg);
	background-position: 0 0;
	background-repeat: no-repeat;
	height: 64px;
	vertical-align: middle;
	padding: 10px 0 0 90px;
	margin: 20px 0 10px 0;
	font-size: 34px;
	color: #777;
}
table.summary {
	font-weight: bold;
}
.diffFooter {
	text-align: center;
	font-size: 16px;
	color: #999;
	font-family: Verdana;
	margin: 50px auto 50px auto;
}
.diffFooter a {
	color: #999;
}

css/license/care.1722265817.css000064400000055675150755146460011530 0ustar00.wf-clearfix:before,.wf-clearfix:after{content:" ";display:table}.wf-clearfix:after{clear:both}#wfcolorbox .wf-country-selector-controls .wf-country-selector-section-options>li:hover,#wfcolorbox .wf-country-selector-controls .wf-country-selector-section-options>li:focus,.wf-drawer .wf-country-selector-controls .wf-country-selector-section-options>li:hover,.wf-drawer .wf-country-selector-controls .wf-country-selector-section-options>li:focus{background-color:#29957C;border-color:#29957C}.wrap.wordfence .button-primary{background-color:#29957C}a{color:#29957C}.wf-inline-help:hover{color:#29957C}.wf-blue{color:#29957C !important}.wf-blue-light{color:#54BF9C !important}.wf-page-tabs .wf-tab.wf-active,.wf-page-tabs .wf-tab:hover,.wf-page-fixed-tabs .wf-tab.wf-active,.wf-page-fixed-tabs .wf-tab:hover{color:#29957C}.wf-page-tabs .wf-tab.wf-active a,.wf-page-tabs .wf-tab:hover a,.wf-page-fixed-tabs .wf-tab.wf-active a,.wf-page-fixed-tabs .wf-tab:hover a{color:#29957C}.wf-back-icon{color:#29957C}.wf-boolean-switch.wf-active{border:1px solid #29957C;background-color:#29957C}.wf-boolean-switch.wf-active .wf-boolean-switch-handle{border:1px solid #29957C}.wf-option-checkbox.wf-checked,[type=checkbox].wf-option-checkbox:checked+label:before{box-shadow:0px 0px 0px 1px #29957C !important;background-color:#29957C !important}.wf-option-radio.wf-checked,[type=radio].wf-option-radio:checked+label:before{color:#29957C !important}.wf-indeterminate-progress path{fill:#29957C}.wf-switch>li.wf-active{background-color:#29957C !important}.wf-drawer .wf-modal .wf-modal-header{background-color:#29957C}.wf-circle-tooltip.ui-tooltip a{color:#29957C}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-full-enabled,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-full-enabled{background-color:#29957C}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status-premium .wf-block-labeled-value-value,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status-premium .wf-block-labeled-value-value{color:#29957C}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status-premium .wf-block-labeled-value-value svg,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status-premium .wf-block-labeled-value-value svg{fill:#29957C}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status-premium .wf-block-labeled-value-label,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status-premium .wf-block-labeled-value-label{color:#29957C}.wf-blocks-summary>thead>tr>th.wf-premium,.wf-blocks-summary>tbody>tr>th.wf-premium,.wf-blocks-summary>tr>th.wf-premium{border-top:2px solid #29957C;border-left:2px solid #29957C;border-right:2px solid #29957C}.wf-blocks-summary>tbody>tr>td.wf-premium,.wf-blocks-summary>tfoot>tr>td.wf-premium,.wf-blocks-summary>tr>td.wf-premium{border-left:2px solid #29957C;border-right:2px solid #29957C}.wf-blocks-summary>tfoot>tr>td.wf-premium,.wf-blocks-summary>tr:last-child>td.wf-premium{border-bottom:2px solid #29957C;background-color:#29957C}#wf-toupp-required-message #wf-toupp-required-message-inner{background-color:#29957C}.wf-block.wf-active>.wf-block-header>.wf-block-header-content>.wf-block-title{color:#29957C}.wf-block-navigation-option:hover svg.wf-block-navigation-option-icon{fill:#29957C}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label{color:#29957C;background-color:#fff;border-color:#29957C}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.focus{color:#29957C;background-color:#e6e6e6;border-color:#0d3129}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label:hover{color:#29957C;background-color:#e6e6e6;border-color:#1c6554}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:active,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.active,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label:active,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.active,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle{color:#29957C;background-color:#e6e6e6;border-color:#1c6554}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:active:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:active:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:active.focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.active:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.active:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.active.focus,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle:hover,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle:focus,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle.focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label:active:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label:active:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label:active.focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.active:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.active:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.active.focus,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle:hover,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle:focus,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle.focus{color:#29957C;background-color:#d4d4d4;border-color:#0d3129}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:active,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-active,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label:active,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-active,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle{background-image:none}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-disabled,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[disabled],ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[readonly],fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments label,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-disabled,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[disabled],.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[readonly],fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments label{color:#54BF9C;background-color:#fff;border-color:#54BF9C;cursor:not-allowed}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-disabled:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-disabled:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-disabled.wf-focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[disabled]:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[disabled]:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[disabled].wf-focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[readonly]:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[readonly]:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[readonly].wf-focus,fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:hover,fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:focus,fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-disabled:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-disabled:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-disabled.wf-focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[disabled]:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[disabled]:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[disabled].wf-focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[readonly]:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[readonly]:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[readonly].wf-focus,fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments label:hover,fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments label:focus,fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-focus{background-color:#fff;border-color:#29957C}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label .wf-badge,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label .wf-badge{color:#fff;background-color:#29957C}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label{color:#fff;background-color:#29957C;border-color:#005e85}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.focus{color:#fff;background-color:#1e6d5b;border-color:#000405}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:hover{color:#fff;background-color:#1e6d5b;border-color:#003347}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle{color:#fff;background-color:#1e6d5b;border-color:#003347}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active.focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active.focus,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle:hover,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle:focus,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle.focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active.focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active.focus,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle:hover,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle:focus,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle.focus{color:#fff;background-color:#165143;border-color:#000405}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-active,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-active,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle{background-image:none}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled],ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly],fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled],.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly],fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label{color:#fff;background-color:#54BF9C;border-color:#5996b0;cursor:not-allowed}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled.wf-focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled]:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled]:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled].wf-focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly]:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly]:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly].wf-focus,fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:hover,fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:focus,fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled.wf-focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled]:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled]:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled].wf-focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly]:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly]:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly].wf-focus,fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:hover,fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:focus,fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-focus{background-color:#29957C;border-color:#005e85}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label .wf-badge,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label .wf-badge{color:#29957C;background-color:#fff}#wordfenceLiveActivitySecurityOnly,#wordfenceLiveActivityAll{border-left:4px solid #29957C}#wfLiveTrafficDisabledMessage h2{background-color:#29957C}.wf-nav .wf-open>a,.wf-nav .wf-open>a:hover,.wf-nav .wf-open>a:focus{border-color:#29957C}.wf-premium-callout .button-primary{background-color:#29957C}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status-full-enabled{background-color:#29957C}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status-enabled .wf-block-labeled-value-value{color:#29957C}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status-enabled .wf-block-labeled-value-value svg{fill:#29957C}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status-enabled .wf-block-labeled-value-label{color:#29957C}#wf-scan-running-bar-pill{background-color:#29957C}.wf-scan-tabs .wf-tab.wf-active,.wf-scan-tabs .wf-tab:hover{color:#29957C}.wf-scan-tabs .wf-tab.wf-active a,.wf-scan-tabs .wf-tab:hover a{color:#29957C}.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-icon path,.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-inactive path,.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-active path,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-icon path,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-inactive path,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-active path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-icon path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-inactive path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-active path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-icon path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-inactive path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-active path{fill:#29957C}.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-label,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-label,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-label,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-label{color:#29957C}.wf-issue.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details>.wf-issue-control-icon path,.wf-issue.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details .wf-issue-control-icon-inactive path,.wf-issue.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details .wf-issue-control-icon-active path,.wf-issue-site-cleaning.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details>.wf-issue-control-icon path,.wf-issue-site-cleaning.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details .wf-issue-control-icon-inactive path,.wf-issue-site-cleaning.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details .wf-issue-control-icon-active path{fill:#29957C}.wf-issue.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details>.wf-issue-control-label,.wf-issue-site-cleaning.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details>.wf-issue-control-label{color:#29957C}.wf-scan-type>li>ul.wf-scan-type-option.wf-active>.wf-scan-type-option-name{background-color:#29957C}.wf-scan-type>li>ul.wf-scan-type-option.wf-active>.wf-scan-type-option-name .wf-option-checkbox{color:#29957C !important}.wf-scan-scheduling-manual .wf-scan-scheduling-manual-presets>li.wf-active{background-color:#29957C}.wf-schedule-times>li.wf-active{background-color:#29957C}.wf-issue-control-ignore-menu>li:hover{background-color:#29957C}#wf-site-cleaning-bottom h3{color:#29957C}.wf-scanner-progress>.wf-scan-step>.wf-scan-step-icon>.wf-scan-step-complete-success,.wf-step-complete-success{background-image:url("../../images/icons/check-care.svg")}.wf-block-list .wf-block-list-subtitle{color:#54BF9C}#wordfenceTwoFactorLegacy,#wordfenceTwoFactorModern{border-left:4px solid #29957C}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-full-enabled{background-color:#29957C}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-enabled .wf-block-labeled-value-value{color:#29957C}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-enabled .wf-block-labeled-value-value svg{fill:#29957C}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-enabled .wf-block-labeled-value-label{color:#29957C}.wordfence-lock-icon{background-image:url("../../images/logos/shield-care.svg")}#wf-adminbar-icon{background-image:url("../../images/logos/shield-care.svg")}
css/license/response.1722265817.css000064400000055711150755146460012443 0ustar00.wf-clearfix:before,.wf-clearfix:after{content:" ";display:table}.wf-clearfix:after{clear:both}#wfcolorbox .wf-country-selector-controls .wf-country-selector-section-options>li:hover,#wfcolorbox .wf-country-selector-controls .wf-country-selector-section-options>li:focus,.wf-drawer .wf-country-selector-controls .wf-country-selector-section-options>li:hover,.wf-drawer .wf-country-selector-controls .wf-country-selector-section-options>li:focus{background-color:#6453A3;border-color:#6453A3}.wrap.wordfence .button-primary{background-color:#6453A3}a{color:#6453A3}.wf-inline-help:hover{color:#6453A3}.wf-blue{color:#6453A3 !important}.wf-blue-light{color:#928DC4 !important}.wf-page-tabs .wf-tab.wf-active,.wf-page-tabs .wf-tab:hover,.wf-page-fixed-tabs .wf-tab.wf-active,.wf-page-fixed-tabs .wf-tab:hover{color:#6453A3}.wf-page-tabs .wf-tab.wf-active a,.wf-page-tabs .wf-tab:hover a,.wf-page-fixed-tabs .wf-tab.wf-active a,.wf-page-fixed-tabs .wf-tab:hover a{color:#6453A3}.wf-back-icon{color:#6453A3}.wf-boolean-switch.wf-active{border:1px solid #6453A3;background-color:#6453A3}.wf-boolean-switch.wf-active .wf-boolean-switch-handle{border:1px solid #6453A3}.wf-option-checkbox.wf-checked,[type=checkbox].wf-option-checkbox:checked+label:before{box-shadow:0px 0px 0px 1px #6453A3 !important;background-color:#6453A3 !important}.wf-option-radio.wf-checked,[type=radio].wf-option-radio:checked+label:before{color:#6453A3 !important}.wf-indeterminate-progress path{fill:#6453A3}.wf-switch>li.wf-active{background-color:#6453A3 !important}.wf-drawer .wf-modal .wf-modal-header{background-color:#6453A3}.wf-circle-tooltip.ui-tooltip a{color:#6453A3}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-full-enabled,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-full-enabled{background-color:#6453A3}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status-premium .wf-block-labeled-value-value,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status-premium .wf-block-labeled-value-value{color:#6453A3}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status-premium .wf-block-labeled-value-value svg,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status-premium .wf-block-labeled-value-value svg{fill:#6453A3}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status-premium .wf-block-labeled-value-label,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status-premium .wf-block-labeled-value-label{color:#6453A3}.wf-blocks-summary>thead>tr>th.wf-premium,.wf-blocks-summary>tbody>tr>th.wf-premium,.wf-blocks-summary>tr>th.wf-premium{border-top:2px solid #6453A3;border-left:2px solid #6453A3;border-right:2px solid #6453A3}.wf-blocks-summary>tbody>tr>td.wf-premium,.wf-blocks-summary>tfoot>tr>td.wf-premium,.wf-blocks-summary>tr>td.wf-premium{border-left:2px solid #6453A3;border-right:2px solid #6453A3}.wf-blocks-summary>tfoot>tr>td.wf-premium,.wf-blocks-summary>tr:last-child>td.wf-premium{border-bottom:2px solid #6453A3;background-color:#6453A3}#wf-toupp-required-message #wf-toupp-required-message-inner{background-color:#6453A3}.wf-block.wf-active>.wf-block-header>.wf-block-header-content>.wf-block-title{color:#6453A3}.wf-block-navigation-option:hover svg.wf-block-navigation-option-icon{fill:#6453A3}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label{color:#6453A3;background-color:#fff;border-color:#6453A3}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.focus{color:#6453A3;background-color:#e6e6e6;border-color:#30284f}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label:hover{color:#6453A3;background-color:#e6e6e6;border-color:#4b3e7a}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:active,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.active,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label:active,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.active,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle{color:#6453A3;background-color:#e6e6e6;border-color:#4b3e7a}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:active:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:active:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:active.focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.active:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.active:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.active.focus,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle:hover,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle:focus,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle.focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label:active:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label:active:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label:active.focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.active:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.active:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.active.focus,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle:hover,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle:focus,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle.focus{color:#6453A3;background-color:#d4d4d4;border-color:#30284f}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:active,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-active,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label:active,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-active,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle{background-image:none}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-disabled,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[disabled],ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[readonly],fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments label,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-disabled,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[disabled],.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[readonly],fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments label{color:#928DC4;background-color:#fff;border-color:#928DC4;cursor:not-allowed}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-disabled:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-disabled:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-disabled.wf-focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[disabled]:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[disabled]:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[disabled].wf-focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[readonly]:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[readonly]:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[readonly].wf-focus,fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:hover,fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:focus,fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-disabled:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-disabled:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-disabled.wf-focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[disabled]:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[disabled]:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[disabled].wf-focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[readonly]:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[readonly]:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[readonly].wf-focus,fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments label:hover,fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments label:focus,fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-focus{background-color:#fff;border-color:#6453A3}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label .wf-badge,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label .wf-badge{color:#fff;background-color:#6453A3}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label{color:#fff;background-color:#6453A3;border-color:#005e85}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.focus{color:#fff;background-color:#4f4281;border-color:#000405}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:hover{color:#fff;background-color:#4f4281;border-color:#003347}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle{color:#fff;background-color:#4f4281;border-color:#003347}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active.focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active.focus,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle:hover,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle:focus,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle.focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active.focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active.focus,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle:hover,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle:focus,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle.focus{color:#fff;background-color:#41366a;border-color:#000405}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-active,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-active,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle{background-image:none}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled],ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly],fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled],.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly],fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label{color:#fff;background-color:#928DC4;border-color:#5996b0;cursor:not-allowed}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled.wf-focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled]:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled]:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled].wf-focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly]:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly]:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly].wf-focus,fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:hover,fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:focus,fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled.wf-focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled]:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled]:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled].wf-focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly]:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly]:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly].wf-focus,fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:hover,fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:focus,fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-focus{background-color:#6453A3;border-color:#005e85}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label .wf-badge,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label .wf-badge{color:#6453A3;background-color:#fff}#wordfenceLiveActivitySecurityOnly,#wordfenceLiveActivityAll{border-left:4px solid #6453A3}#wfLiveTrafficDisabledMessage h2{background-color:#6453A3}.wf-nav .wf-open>a,.wf-nav .wf-open>a:hover,.wf-nav .wf-open>a:focus{border-color:#6453A3}.wf-premium-callout .button-primary{background-color:#6453A3}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status-full-enabled{background-color:#6453A3}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status-enabled .wf-block-labeled-value-value{color:#6453A3}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status-enabled .wf-block-labeled-value-value svg{fill:#6453A3}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status-enabled .wf-block-labeled-value-label{color:#6453A3}#wf-scan-running-bar-pill{background-color:#6453A3}.wf-scan-tabs .wf-tab.wf-active,.wf-scan-tabs .wf-tab:hover{color:#6453A3}.wf-scan-tabs .wf-tab.wf-active a,.wf-scan-tabs .wf-tab:hover a{color:#6453A3}.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-icon path,.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-inactive path,.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-active path,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-icon path,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-inactive path,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-active path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-icon path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-inactive path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-active path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-icon path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-inactive path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-active path{fill:#6453A3}.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-label,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-label,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-label,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-label{color:#6453A3}.wf-issue.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details>.wf-issue-control-icon path,.wf-issue.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details .wf-issue-control-icon-inactive path,.wf-issue.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details .wf-issue-control-icon-active path,.wf-issue-site-cleaning.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details>.wf-issue-control-icon path,.wf-issue-site-cleaning.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details .wf-issue-control-icon-inactive path,.wf-issue-site-cleaning.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details .wf-issue-control-icon-active path{fill:#6453A3}.wf-issue.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details>.wf-issue-control-label,.wf-issue-site-cleaning.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details>.wf-issue-control-label{color:#6453A3}.wf-scan-type>li>ul.wf-scan-type-option.wf-active>.wf-scan-type-option-name{background-color:#6453A3}.wf-scan-type>li>ul.wf-scan-type-option.wf-active>.wf-scan-type-option-name .wf-option-checkbox{color:#6453A3 !important}.wf-scan-scheduling-manual .wf-scan-scheduling-manual-presets>li.wf-active{background-color:#6453A3}.wf-schedule-times>li.wf-active{background-color:#6453A3}.wf-issue-control-ignore-menu>li:hover{background-color:#6453A3}#wf-site-cleaning-bottom h3{color:#6453A3}.wf-scanner-progress>.wf-scan-step>.wf-scan-step-icon>.wf-scan-step-complete-success,.wf-step-complete-success{background-image:url("../../images/icons/check-response.svg")}.wf-block-list .wf-block-list-subtitle{color:#928DC4}#wordfenceTwoFactorLegacy,#wordfenceTwoFactorModern{border-left:4px solid #6453A3}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-full-enabled{background-color:#6453A3}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-enabled .wf-block-labeled-value-value{color:#6453A3}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-enabled .wf-block-labeled-value-value svg{fill:#6453A3}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-enabled .wf-block-labeled-value-label{color:#6453A3}.wordfence-lock-icon{background-image:url("../../images/logos/shield-response.svg")}#wf-adminbar-icon{background-image:url("../../images/logos/shield-response.svg")}
css/license/response-variables.1722265817.css000064400000000000150755146460014366 0ustar00css/license/free-global.1722265817.css000064400000022106150755146460012754 0ustar00.wf-clearfix:before,.wf-clearfix:after{content:" ";display:table}.wf-clearfix:after{clear:both}.wf-btn:hover,.wf-btn:focus,.wf-btn.wf-focus{color:#1B719E}.wf-btn-default{color:#1B719E;background-color:#fff;border-color:#1B719E}.wf-btn-default:focus,.wf-btn-default.focus{color:#1B719E;background-color:#e6e6e6;border-color:#082331}.wf-btn-default:hover{color:#1B719E;background-color:#e6e6e6;border-color:#124c6a}.wf-btn-default:active,.wf-btn-default.active,.wf-open>.wf-btn-default.wf-dropdown-toggle{color:#1B719E;background-color:#e6e6e6;border-color:#124c6a}.wf-btn-default:active:hover,.wf-btn-default:active:focus,.wf-btn-default:active.focus,.wf-btn-default.active:hover,.wf-btn-default.active:focus,.wf-btn-default.active.focus,.wf-open>.wf-btn-default.wf-dropdown-toggle:hover,.wf-open>.wf-btn-default.wf-dropdown-toggle:focus,.wf-open>.wf-btn-default.wf-dropdown-toggle.focus{color:#1B719E;background-color:#d4d4d4;border-color:#082331}.wf-btn-default:active,.wf-btn-default.wf-active,.wf-open>.wf-btn-default.wf-dropdown-toggle{background-image:none}.wf-btn-default.wf-disabled,.wf-btn-default[disabled],.wf-btn-default[readonly],fieldset[disabled] .wf-btn-default{color:#008cc1;background-color:#fff;border-color:#008cc1;cursor:not-allowed}.wf-btn-default.wf-disabled:hover,.wf-btn-default.wf-disabled:focus,.wf-btn-default.wf-disabled.wf-focus,.wf-btn-default[disabled]:hover,.wf-btn-default[disabled]:focus,.wf-btn-default[disabled].wf-focus,.wf-btn-default[readonly]:hover,.wf-btn-default[readonly]:focus,.wf-btn-default[readonly].wf-focus,fieldset[disabled] .wf-btn-default:hover,fieldset[disabled] .wf-btn-default:focus,fieldset[disabled] .wf-btn-default.wf-focus{background-color:#fff;border-color:#1B719E}.wf-btn-default .wf-badge{color:#fff;background-color:#1B719E}.wf-btn-primary{color:#fff;background-color:#1B719E;border-color:#005e85}.wf-btn-primary:focus,.wf-btn-primary.focus{color:#fff;background-color:#145272;border-color:#000405}.wf-btn-primary:hover{color:#fff;background-color:#145272;border-color:#003347}.wf-btn-primary:active,.wf-btn-primary.active,.wf-open>.wf-btn-primary.wf-dropdown-toggle{color:#fff;background-color:#145272;border-color:#003347}.wf-btn-primary:active:hover,.wf-btn-primary:active:focus,.wf-btn-primary:active.focus,.wf-btn-primary.active:hover,.wf-btn-primary.active:focus,.wf-btn-primary.active.focus,.wf-open>.wf-btn-primary.wf-dropdown-toggle:hover,.wf-open>.wf-btn-primary.wf-dropdown-toggle:focus,.wf-open>.wf-btn-primary.wf-dropdown-toggle.focus{color:#fff;background-color:#0e3c54;border-color:#000405}.wf-btn-primary:active,.wf-btn-primary.wf-active,.wf-open>.wf-btn-primary.wf-dropdown-toggle{background-image:none}.wf-btn-primary.wf-disabled,.wf-btn-primary[disabled],.wf-btn-primary[readonly],fieldset[disabled] .wf-btn-primary{color:#fff;background-color:#008cc1;border-color:#5996b0;cursor:not-allowed}.wf-btn-primary.wf-disabled:hover,.wf-btn-primary.wf-disabled:focus,.wf-btn-primary.wf-disabled.wf-focus,.wf-btn-primary[disabled]:hover,.wf-btn-primary[disabled]:focus,.wf-btn-primary[disabled].wf-focus,.wf-btn-primary[readonly]:hover,.wf-btn-primary[readonly]:focus,.wf-btn-primary[readonly].wf-focus,fieldset[disabled] .wf-btn-primary:hover,fieldset[disabled] .wf-btn-primary:focus,fieldset[disabled] .wf-btn-primary.wf-focus{background-color:#1B719E;border-color:#005e85}.wf-btn-primary .wf-badge{color:#1B719E;background-color:#fff}.wf-btn-link{color:#1B719E}.wf-pagination>.wf-active>a,.wf-pagination>.wf-active>a:hover,.wf-pagination>.wf-active>a:focus,.wf-pagination>.wf-active>span,.wf-pagination>.wf-active>span:hover,.wf-pagination>.wf-active>span:focus{background-color:#1B719E;border-color:#1B719E}#wf-onboarding-dismiss:hover{color:#1B719E}.wf-onboarding-btn:hover,.wf-onboarding-btn:focus,.wf-onboarding-btn.wf-focus{color:#1B719E}.wf-onboarding-btn.wf-onboarding-btn-primary{background-color:#1B719E}.wf-onboarding-btn.wf-onboarding-btn-primary:focus,.wf-onboarding-btn.wf-onboarding-btn-primary.focus{background-color:#145272}.wf-onboarding-btn.wf-onboarding-btn-primary:hover{background-color:#145272}.wf-onboarding-btn.wf-onboarding-btn-primary:active,.wf-onboarding-btn.wf-onboarding-btn-primary.active,.wf-open>.wf-onboarding-btn.wf-onboarding-btn-primary.wf-dropdown-toggle{background-color:#145272}.wf-onboarding-btn.wf-onboarding-btn-primary:active:hover,.wf-onboarding-btn.wf-onboarding-btn-primary:active:focus,.wf-onboarding-btn.wf-onboarding-btn-primary:active.focus,.wf-onboarding-btn.wf-onboarding-btn-primary.active:hover,.wf-onboarding-btn.wf-onboarding-btn-primary.active:focus,.wf-onboarding-btn.wf-onboarding-btn-primary.active.focus,.wf-open>.wf-onboarding-btn.wf-onboarding-btn-primary.wf-dropdown-toggle:hover,.wf-open>.wf-onboarding-btn.wf-onboarding-btn-primary.wf-dropdown-toggle:focus,.wf-open>.wf-onboarding-btn.wf-onboarding-btn-primary.wf-dropdown-toggle.focus{background-color:#0e3c54}.wf-onboarding-btn.wf-onboarding-btn-primary.wf-disabled:hover,.wf-onboarding-btn.wf-onboarding-btn-primary.wf-disabled:focus,.wf-onboarding-btn.wf-onboarding-btn-primary.wf-disabled.wf-focus,.wf-onboarding-btn.wf-onboarding-btn-primary[disabled]:hover,.wf-onboarding-btn.wf-onboarding-btn-primary[disabled]:focus,.wf-onboarding-btn.wf-onboarding-btn-primary[disabled].wf-focus,fieldset[disabled] .wf-onboarding-btn.wf-onboarding-btn-primary:hover,fieldset[disabled] .wf-onboarding-btn.wf-onboarding-btn-primary:focus,fieldset[disabled] .wf-onboarding-btn.wf-onboarding-btn-primary.wf-focus{background-color:#1B719E}.wf-onboarding-btn.wf-onboarding-btn-primary .wf-badge{color:#1B719E}.wf-onboarding-btn.wf-onboarding-btn-default{color:#1B719E;border-color:#1B719E}.wf-onboarding-btn.wf-onboarding-btn-default:focus,.wf-onboarding-btn.wf-onboarding-btn-default.focus{color:#1B719E;border-color:#082331}.wf-onboarding-btn.wf-onboarding-btn-default:hover{color:#1B719E;border-color:#124c6a}.wf-onboarding-btn.wf-onboarding-btn-default:active,.wf-onboarding-btn.wf-onboarding-btn-default.active,.wf-open>.wf-onboarding-btn.wf-onboarding-btn-default.wf-dropdown-toggle{color:#1B719E;border-color:#124c6a}.wf-onboarding-btn.wf-onboarding-btn-default:active:hover,.wf-onboarding-btn.wf-onboarding-btn-default:active:focus,.wf-onboarding-btn.wf-onboarding-btn-default:active.focus,.wf-onboarding-btn.wf-onboarding-btn-default.active:hover,.wf-onboarding-btn.wf-onboarding-btn-default.active:focus,.wf-onboarding-btn.wf-onboarding-btn-default.active.focus,.wf-open>.wf-onboarding-btn.wf-onboarding-btn-default.wf-dropdown-toggle:hover,.wf-open>.wf-onboarding-btn.wf-onboarding-btn-default.wf-dropdown-toggle:focus,.wf-open>.wf-onboarding-btn.wf-onboarding-btn-default.wf-dropdown-toggle.focus{color:#1B719E;border-color:#082331}.wf-onboarding-btn.wf-onboarding-btn-default.wf-disabled:hover,.wf-onboarding-btn.wf-onboarding-btn-default.wf-disabled:focus,.wf-onboarding-btn.wf-onboarding-btn-default.wf-disabled.wf-focus,.wf-onboarding-btn.wf-onboarding-btn-default[disabled]:hover,.wf-onboarding-btn.wf-onboarding-btn-default[disabled]:focus,.wf-onboarding-btn.wf-onboarding-btn-default[disabled].wf-focus,fieldset[disabled] .wf-onboarding-btn.wf-onboarding-btn-default:hover,fieldset[disabled] .wf-onboarding-btn.wf-onboarding-btn-default:focus,fieldset[disabled] .wf-onboarding-btn.wf-onboarding-btn-default.wf-focus{border-color:#1B719E}.wf-onboarding-btn.wf-onboarding-btn-default .wf-badge{background-color:#1B719E}.wf-onboarding-modal #wf-onboarding-or{color:#1B719E}.wf-onboarding-modal #wf-onboarding-subscribe .wf-switch>li.wf-active,.wf-onboarding-modal #wf-onboarding2-subscribe .wf-switch>li.wf-active{background-color:#1B719E}.wf-onboarding-modal [type=checkbox].wf-option-checkbox:checked+label:before,.wf-onboarding-modal [type=radio].wf-option-radio:checked+label:before{background-color:#1B719E !important}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-header{background-color:#1B719E}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-content>ul #wf-onboarding-plugin-header-stage>ul>li.wf-active{border-left:4px solid #1B719E}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-content>ul #wf-onboarding-plugin-header-stage>ul .wf-onboarding-plugin-header-stage-label>ul>*:last-child{color:#1B719E}#wf-onboarding-plugin-header #wf-onboarding-subscribe .wf-switch>li.wf-active,#wf-onboarding-plugin-header #wf-onboarding2-subscribe .wf-switch>li.wf-active{background-color:#1B719E}#wf-onboarding-plugin-header [type=checkbox].wf-option-checkbox:checked+label:before,#wf-onboarding-plugin-header [type=radio].wf-option-radio:checked+label:before{background-color:#1B719E !important}#wf-onboarding-final-attempt #wf-onboarding-subscribe .wf-switch>li.wf-active{background-color:#1B719E}#wf-onboarding-final-attempt #wf-onboarding-or{color:#1B719E}.wf-tour-pointer #wf-tour-close a:hover{color:#1B719E}.wf-tour-pointer .wf-pointer-footer .wf-tour-pagination>li.wf-active{color:#1B719E}li#toplevel_page_Wordfence .wp-menu-image::before{content:' ';background-image:url("../../images/logos/shield-free.svg");background-clip:content-box;background-repeat:no-repeat;background-position:center;width:20px;height:20px;padding:7px 0}li#toplevel_page_Wordfence.wp-menu-open .wp-menu-image::before{background-image:url("../../images/logos/shield-white.svg")}
css/license/care-global.1722265817.css000064400000022106150755146460012745 0ustar00.wf-clearfix:before,.wf-clearfix:after{content:" ";display:table}.wf-clearfix:after{clear:both}.wf-btn:hover,.wf-btn:focus,.wf-btn.wf-focus{color:#29957C}.wf-btn-default{color:#29957C;background-color:#fff;border-color:#29957C}.wf-btn-default:focus,.wf-btn-default.focus{color:#29957C;background-color:#e6e6e6;border-color:#0d3129}.wf-btn-default:hover{color:#29957C;background-color:#e6e6e6;border-color:#1c6554}.wf-btn-default:active,.wf-btn-default.active,.wf-open>.wf-btn-default.wf-dropdown-toggle{color:#29957C;background-color:#e6e6e6;border-color:#1c6554}.wf-btn-default:active:hover,.wf-btn-default:active:focus,.wf-btn-default:active.focus,.wf-btn-default.active:hover,.wf-btn-default.active:focus,.wf-btn-default.active.focus,.wf-open>.wf-btn-default.wf-dropdown-toggle:hover,.wf-open>.wf-btn-default.wf-dropdown-toggle:focus,.wf-open>.wf-btn-default.wf-dropdown-toggle.focus{color:#29957C;background-color:#d4d4d4;border-color:#0d3129}.wf-btn-default:active,.wf-btn-default.wf-active,.wf-open>.wf-btn-default.wf-dropdown-toggle{background-image:none}.wf-btn-default.wf-disabled,.wf-btn-default[disabled],.wf-btn-default[readonly],fieldset[disabled] .wf-btn-default{color:#54BF9C;background-color:#fff;border-color:#54BF9C;cursor:not-allowed}.wf-btn-default.wf-disabled:hover,.wf-btn-default.wf-disabled:focus,.wf-btn-default.wf-disabled.wf-focus,.wf-btn-default[disabled]:hover,.wf-btn-default[disabled]:focus,.wf-btn-default[disabled].wf-focus,.wf-btn-default[readonly]:hover,.wf-btn-default[readonly]:focus,.wf-btn-default[readonly].wf-focus,fieldset[disabled] .wf-btn-default:hover,fieldset[disabled] .wf-btn-default:focus,fieldset[disabled] .wf-btn-default.wf-focus{background-color:#fff;border-color:#29957C}.wf-btn-default .wf-badge{color:#fff;background-color:#29957C}.wf-btn-primary{color:#fff;background-color:#29957C;border-color:#005e85}.wf-btn-primary:focus,.wf-btn-primary.focus{color:#fff;background-color:#1e6d5b;border-color:#000405}.wf-btn-primary:hover{color:#fff;background-color:#1e6d5b;border-color:#003347}.wf-btn-primary:active,.wf-btn-primary.active,.wf-open>.wf-btn-primary.wf-dropdown-toggle{color:#fff;background-color:#1e6d5b;border-color:#003347}.wf-btn-primary:active:hover,.wf-btn-primary:active:focus,.wf-btn-primary:active.focus,.wf-btn-primary.active:hover,.wf-btn-primary.active:focus,.wf-btn-primary.active.focus,.wf-open>.wf-btn-primary.wf-dropdown-toggle:hover,.wf-open>.wf-btn-primary.wf-dropdown-toggle:focus,.wf-open>.wf-btn-primary.wf-dropdown-toggle.focus{color:#fff;background-color:#165143;border-color:#000405}.wf-btn-primary:active,.wf-btn-primary.wf-active,.wf-open>.wf-btn-primary.wf-dropdown-toggle{background-image:none}.wf-btn-primary.wf-disabled,.wf-btn-primary[disabled],.wf-btn-primary[readonly],fieldset[disabled] .wf-btn-primary{color:#fff;background-color:#54BF9C;border-color:#5996b0;cursor:not-allowed}.wf-btn-primary.wf-disabled:hover,.wf-btn-primary.wf-disabled:focus,.wf-btn-primary.wf-disabled.wf-focus,.wf-btn-primary[disabled]:hover,.wf-btn-primary[disabled]:focus,.wf-btn-primary[disabled].wf-focus,.wf-btn-primary[readonly]:hover,.wf-btn-primary[readonly]:focus,.wf-btn-primary[readonly].wf-focus,fieldset[disabled] .wf-btn-primary:hover,fieldset[disabled] .wf-btn-primary:focus,fieldset[disabled] .wf-btn-primary.wf-focus{background-color:#29957C;border-color:#005e85}.wf-btn-primary .wf-badge{color:#29957C;background-color:#fff}.wf-btn-link{color:#29957C}.wf-pagination>.wf-active>a,.wf-pagination>.wf-active>a:hover,.wf-pagination>.wf-active>a:focus,.wf-pagination>.wf-active>span,.wf-pagination>.wf-active>span:hover,.wf-pagination>.wf-active>span:focus{background-color:#29957C;border-color:#29957C}#wf-onboarding-dismiss:hover{color:#29957C}.wf-onboarding-btn:hover,.wf-onboarding-btn:focus,.wf-onboarding-btn.wf-focus{color:#29957C}.wf-onboarding-btn.wf-onboarding-btn-primary{background-color:#29957C}.wf-onboarding-btn.wf-onboarding-btn-primary:focus,.wf-onboarding-btn.wf-onboarding-btn-primary.focus{background-color:#1e6d5b}.wf-onboarding-btn.wf-onboarding-btn-primary:hover{background-color:#1e6d5b}.wf-onboarding-btn.wf-onboarding-btn-primary:active,.wf-onboarding-btn.wf-onboarding-btn-primary.active,.wf-open>.wf-onboarding-btn.wf-onboarding-btn-primary.wf-dropdown-toggle{background-color:#1e6d5b}.wf-onboarding-btn.wf-onboarding-btn-primary:active:hover,.wf-onboarding-btn.wf-onboarding-btn-primary:active:focus,.wf-onboarding-btn.wf-onboarding-btn-primary:active.focus,.wf-onboarding-btn.wf-onboarding-btn-primary.active:hover,.wf-onboarding-btn.wf-onboarding-btn-primary.active:focus,.wf-onboarding-btn.wf-onboarding-btn-primary.active.focus,.wf-open>.wf-onboarding-btn.wf-onboarding-btn-primary.wf-dropdown-toggle:hover,.wf-open>.wf-onboarding-btn.wf-onboarding-btn-primary.wf-dropdown-toggle:focus,.wf-open>.wf-onboarding-btn.wf-onboarding-btn-primary.wf-dropdown-toggle.focus{background-color:#165143}.wf-onboarding-btn.wf-onboarding-btn-primary.wf-disabled:hover,.wf-onboarding-btn.wf-onboarding-btn-primary.wf-disabled:focus,.wf-onboarding-btn.wf-onboarding-btn-primary.wf-disabled.wf-focus,.wf-onboarding-btn.wf-onboarding-btn-primary[disabled]:hover,.wf-onboarding-btn.wf-onboarding-btn-primary[disabled]:focus,.wf-onboarding-btn.wf-onboarding-btn-primary[disabled].wf-focus,fieldset[disabled] .wf-onboarding-btn.wf-onboarding-btn-primary:hover,fieldset[disabled] .wf-onboarding-btn.wf-onboarding-btn-primary:focus,fieldset[disabled] .wf-onboarding-btn.wf-onboarding-btn-primary.wf-focus{background-color:#29957C}.wf-onboarding-btn.wf-onboarding-btn-primary .wf-badge{color:#29957C}.wf-onboarding-btn.wf-onboarding-btn-default{color:#29957C;border-color:#29957C}.wf-onboarding-btn.wf-onboarding-btn-default:focus,.wf-onboarding-btn.wf-onboarding-btn-default.focus{color:#29957C;border-color:#0d3129}.wf-onboarding-btn.wf-onboarding-btn-default:hover{color:#29957C;border-color:#1c6554}.wf-onboarding-btn.wf-onboarding-btn-default:active,.wf-onboarding-btn.wf-onboarding-btn-default.active,.wf-open>.wf-onboarding-btn.wf-onboarding-btn-default.wf-dropdown-toggle{color:#29957C;border-color:#1c6554}.wf-onboarding-btn.wf-onboarding-btn-default:active:hover,.wf-onboarding-btn.wf-onboarding-btn-default:active:focus,.wf-onboarding-btn.wf-onboarding-btn-default:active.focus,.wf-onboarding-btn.wf-onboarding-btn-default.active:hover,.wf-onboarding-btn.wf-onboarding-btn-default.active:focus,.wf-onboarding-btn.wf-onboarding-btn-default.active.focus,.wf-open>.wf-onboarding-btn.wf-onboarding-btn-default.wf-dropdown-toggle:hover,.wf-open>.wf-onboarding-btn.wf-onboarding-btn-default.wf-dropdown-toggle:focus,.wf-open>.wf-onboarding-btn.wf-onboarding-btn-default.wf-dropdown-toggle.focus{color:#29957C;border-color:#0d3129}.wf-onboarding-btn.wf-onboarding-btn-default.wf-disabled:hover,.wf-onboarding-btn.wf-onboarding-btn-default.wf-disabled:focus,.wf-onboarding-btn.wf-onboarding-btn-default.wf-disabled.wf-focus,.wf-onboarding-btn.wf-onboarding-btn-default[disabled]:hover,.wf-onboarding-btn.wf-onboarding-btn-default[disabled]:focus,.wf-onboarding-btn.wf-onboarding-btn-default[disabled].wf-focus,fieldset[disabled] .wf-onboarding-btn.wf-onboarding-btn-default:hover,fieldset[disabled] .wf-onboarding-btn.wf-onboarding-btn-default:focus,fieldset[disabled] .wf-onboarding-btn.wf-onboarding-btn-default.wf-focus{border-color:#29957C}.wf-onboarding-btn.wf-onboarding-btn-default .wf-badge{background-color:#29957C}.wf-onboarding-modal #wf-onboarding-or{color:#29957C}.wf-onboarding-modal #wf-onboarding-subscribe .wf-switch>li.wf-active,.wf-onboarding-modal #wf-onboarding2-subscribe .wf-switch>li.wf-active{background-color:#29957C}.wf-onboarding-modal [type=checkbox].wf-option-checkbox:checked+label:before,.wf-onboarding-modal [type=radio].wf-option-radio:checked+label:before{background-color:#29957C !important}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-header{background-color:#29957C}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-content>ul #wf-onboarding-plugin-header-stage>ul>li.wf-active{border-left:4px solid #29957C}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-content>ul #wf-onboarding-plugin-header-stage>ul .wf-onboarding-plugin-header-stage-label>ul>*:last-child{color:#29957C}#wf-onboarding-plugin-header #wf-onboarding-subscribe .wf-switch>li.wf-active,#wf-onboarding-plugin-header #wf-onboarding2-subscribe .wf-switch>li.wf-active{background-color:#29957C}#wf-onboarding-plugin-header [type=checkbox].wf-option-checkbox:checked+label:before,#wf-onboarding-plugin-header [type=radio].wf-option-radio:checked+label:before{background-color:#29957C !important}#wf-onboarding-final-attempt #wf-onboarding-subscribe .wf-switch>li.wf-active{background-color:#29957C}#wf-onboarding-final-attempt #wf-onboarding-or{color:#29957C}.wf-tour-pointer #wf-tour-close a:hover{color:#29957C}.wf-tour-pointer .wf-pointer-footer .wf-tour-pagination>li.wf-active{color:#29957C}li#toplevel_page_Wordfence .wp-menu-image::before{content:' ';background-image:url("../../images/logos/shield-care.svg");background-clip:content-box;background-repeat:no-repeat;background-position:center;width:20px;height:20px;padding:7px 0}li#toplevel_page_Wordfence.wp-menu-open .wp-menu-image::before{background-image:url("../../images/logos/shield-white.svg")}
css/license/premium.1722265817.css000064400000055706150755146460012267 0ustar00.wf-clearfix:before,.wf-clearfix:after{content:" ";display:table}.wf-clearfix:after{clear:both}#wfcolorbox .wf-country-selector-controls .wf-country-selector-section-options>li:hover,#wfcolorbox .wf-country-selector-controls .wf-country-selector-section-options>li:focus,.wf-drawer .wf-country-selector-controls .wf-country-selector-section-options>li:hover,.wf-drawer .wf-country-selector-controls .wf-country-selector-section-options>li:focus{background-color:#137D8E;border-color:#137D8E}.wrap.wordfence .button-primary{background-color:#137D8E}a{color:#137D8E}.wf-inline-help:hover{color:#137D8E}.wf-blue{color:#137D8E !important}.wf-blue-light{color:#51BFCF !important}.wf-page-tabs .wf-tab.wf-active,.wf-page-tabs .wf-tab:hover,.wf-page-fixed-tabs .wf-tab.wf-active,.wf-page-fixed-tabs .wf-tab:hover{color:#137D8E}.wf-page-tabs .wf-tab.wf-active a,.wf-page-tabs .wf-tab:hover a,.wf-page-fixed-tabs .wf-tab.wf-active a,.wf-page-fixed-tabs .wf-tab:hover a{color:#137D8E}.wf-back-icon{color:#137D8E}.wf-boolean-switch.wf-active{border:1px solid #137D8E;background-color:#137D8E}.wf-boolean-switch.wf-active .wf-boolean-switch-handle{border:1px solid #137D8E}.wf-option-checkbox.wf-checked,[type=checkbox].wf-option-checkbox:checked+label:before{box-shadow:0px 0px 0px 1px #137D8E !important;background-color:#137D8E !important}.wf-option-radio.wf-checked,[type=radio].wf-option-radio:checked+label:before{color:#137D8E !important}.wf-indeterminate-progress path{fill:#137D8E}.wf-switch>li.wf-active{background-color:#137D8E !important}.wf-drawer .wf-modal .wf-modal-header{background-color:#137D8E}.wf-circle-tooltip.ui-tooltip a{color:#137D8E}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-full-enabled,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-full-enabled{background-color:#137D8E}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status-premium .wf-block-labeled-value-value,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status-premium .wf-block-labeled-value-value{color:#137D8E}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status-premium .wf-block-labeled-value-value svg,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status-premium .wf-block-labeled-value-value svg{fill:#137D8E}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status-premium .wf-block-labeled-value-label,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status-premium .wf-block-labeled-value-label{color:#137D8E}.wf-blocks-summary>thead>tr>th.wf-premium,.wf-blocks-summary>tbody>tr>th.wf-premium,.wf-blocks-summary>tr>th.wf-premium{border-top:2px solid #137D8E;border-left:2px solid #137D8E;border-right:2px solid #137D8E}.wf-blocks-summary>tbody>tr>td.wf-premium,.wf-blocks-summary>tfoot>tr>td.wf-premium,.wf-blocks-summary>tr>td.wf-premium{border-left:2px solid #137D8E;border-right:2px solid #137D8E}.wf-blocks-summary>tfoot>tr>td.wf-premium,.wf-blocks-summary>tr:last-child>td.wf-premium{border-bottom:2px solid #137D8E;background-color:#137D8E}#wf-toupp-required-message #wf-toupp-required-message-inner{background-color:#137D8E}.wf-block.wf-active>.wf-block-header>.wf-block-header-content>.wf-block-title{color:#137D8E}.wf-block-navigation-option:hover svg.wf-block-navigation-option-icon{fill:#137D8E}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label{color:#137D8E;background-color:#fff;border-color:#137D8E}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.focus{color:#137D8E;background-color:#e6e6e6;border-color:#041a1e}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label:hover{color:#137D8E;background-color:#e6e6e6;border-color:#0c4d58}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:active,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.active,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label:active,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.active,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle{color:#137D8E;background-color:#e6e6e6;border-color:#0c4d58}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:active:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:active:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:active.focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.active:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.active:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.active.focus,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle:hover,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle:focus,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle.focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label:active:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label:active:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label:active.focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.active:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.active:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.active.focus,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle:hover,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle:focus,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle.focus{color:#137D8E;background-color:#d4d4d4;border-color:#041a1e}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:active,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-active,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label:active,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-active,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle{background-image:none}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-disabled,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[disabled],ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[readonly],fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments label,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-disabled,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[disabled],.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[readonly],fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments label{color:#51BFCF;background-color:#fff;border-color:#51BFCF;cursor:not-allowed}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-disabled:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-disabled:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-disabled.wf-focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[disabled]:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[disabled]:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[disabled].wf-focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[readonly]:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[readonly]:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[readonly].wf-focus,fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:hover,fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:focus,fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-disabled:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-disabled:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-disabled.wf-focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[disabled]:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[disabled]:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[disabled].wf-focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[readonly]:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[readonly]:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[readonly].wf-focus,fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments label:hover,fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments label:focus,fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-focus{background-color:#fff;border-color:#137D8E}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label .wf-badge,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label .wf-badge{color:#fff;background-color:#137D8E}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label{color:#fff;background-color:#137D8E;border-color:#005e85}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.focus{color:#fff;background-color:#0d5561;border-color:#000405}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:hover{color:#fff;background-color:#0d5561;border-color:#003347}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle{color:#fff;background-color:#0d5561;border-color:#003347}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active.focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active.focus,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle:hover,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle:focus,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle.focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active.focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active.focus,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle:hover,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle:focus,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle.focus{color:#fff;background-color:#093a42;border-color:#000405}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-active,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-active,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle{background-image:none}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled],ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly],fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled],.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly],fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label{color:#fff;background-color:#51BFCF;border-color:#5996b0;cursor:not-allowed}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled.wf-focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled]:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled]:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled].wf-focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly]:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly]:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly].wf-focus,fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:hover,fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:focus,fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled.wf-focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled]:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled]:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled].wf-focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly]:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly]:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly].wf-focus,fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:hover,fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:focus,fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-focus{background-color:#137D8E;border-color:#005e85}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label .wf-badge,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label .wf-badge{color:#137D8E;background-color:#fff}#wordfenceLiveActivitySecurityOnly,#wordfenceLiveActivityAll{border-left:4px solid #137D8E}#wfLiveTrafficDisabledMessage h2{background-color:#137D8E}.wf-nav .wf-open>a,.wf-nav .wf-open>a:hover,.wf-nav .wf-open>a:focus{border-color:#137D8E}.wf-premium-callout .button-primary{background-color:#137D8E}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status-full-enabled{background-color:#137D8E}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status-enabled .wf-block-labeled-value-value{color:#137D8E}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status-enabled .wf-block-labeled-value-value svg{fill:#137D8E}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status-enabled .wf-block-labeled-value-label{color:#137D8E}#wf-scan-running-bar-pill{background-color:#137D8E}.wf-scan-tabs .wf-tab.wf-active,.wf-scan-tabs .wf-tab:hover{color:#137D8E}.wf-scan-tabs .wf-tab.wf-active a,.wf-scan-tabs .wf-tab:hover a{color:#137D8E}.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-icon path,.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-inactive path,.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-active path,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-icon path,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-inactive path,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-active path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-icon path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-inactive path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-active path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-icon path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-inactive path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-active path{fill:#137D8E}.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-label,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-label,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-label,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-label{color:#137D8E}.wf-issue.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details>.wf-issue-control-icon path,.wf-issue.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details .wf-issue-control-icon-inactive path,.wf-issue.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details .wf-issue-control-icon-active path,.wf-issue-site-cleaning.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details>.wf-issue-control-icon path,.wf-issue-site-cleaning.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details .wf-issue-control-icon-inactive path,.wf-issue-site-cleaning.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details .wf-issue-control-icon-active path{fill:#137D8E}.wf-issue.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details>.wf-issue-control-label,.wf-issue-site-cleaning.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details>.wf-issue-control-label{color:#137D8E}.wf-scan-type>li>ul.wf-scan-type-option.wf-active>.wf-scan-type-option-name{background-color:#137D8E}.wf-scan-type>li>ul.wf-scan-type-option.wf-active>.wf-scan-type-option-name .wf-option-checkbox{color:#137D8E !important}.wf-scan-scheduling-manual .wf-scan-scheduling-manual-presets>li.wf-active{background-color:#137D8E}.wf-schedule-times>li.wf-active{background-color:#137D8E}.wf-issue-control-ignore-menu>li:hover{background-color:#137D8E}#wf-site-cleaning-bottom h3{color:#137D8E}.wf-scanner-progress>.wf-scan-step>.wf-scan-step-icon>.wf-scan-step-complete-success,.wf-step-complete-success{background-image:url("../../images/icons/check-premium.svg")}.wf-block-list .wf-block-list-subtitle{color:#51BFCF}#wordfenceTwoFactorLegacy,#wordfenceTwoFactorModern{border-left:4px solid #137D8E}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-full-enabled{background-color:#137D8E}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-enabled .wf-block-labeled-value-value{color:#137D8E}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-enabled .wf-block-labeled-value-value svg{fill:#137D8E}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-enabled .wf-block-labeled-value-label{color:#137D8E}.wordfence-lock-icon{background-image:url("../../images/logos/shield-premium.svg")}#wf-adminbar-icon{background-image:url("../../images/logos/shield-premium.svg")}
css/license/free.1722265817.css000064400000055670150755146460011532 0ustar00.wf-clearfix:before,.wf-clearfix:after{content:" ";display:table}.wf-clearfix:after{clear:both}#wfcolorbox .wf-country-selector-controls .wf-country-selector-section-options>li:hover,#wfcolorbox .wf-country-selector-controls .wf-country-selector-section-options>li:focus,.wf-drawer .wf-country-selector-controls .wf-country-selector-section-options>li:hover,.wf-drawer .wf-country-selector-controls .wf-country-selector-section-options>li:focus{background-color:#1B719E;border-color:#1B719E}.wrap.wordfence .button-primary{background-color:#1B719E}a{color:#1B719E}.wf-inline-help:hover{color:#1B719E}.wf-blue{color:#1B719E !important}.wf-blue-light{color:#008cc1 !important}.wf-page-tabs .wf-tab.wf-active,.wf-page-tabs .wf-tab:hover,.wf-page-fixed-tabs .wf-tab.wf-active,.wf-page-fixed-tabs .wf-tab:hover{color:#1B719E}.wf-page-tabs .wf-tab.wf-active a,.wf-page-tabs .wf-tab:hover a,.wf-page-fixed-tabs .wf-tab.wf-active a,.wf-page-fixed-tabs .wf-tab:hover a{color:#1B719E}.wf-back-icon{color:#1B719E}.wf-boolean-switch.wf-active{border:1px solid #1B719E;background-color:#1B719E}.wf-boolean-switch.wf-active .wf-boolean-switch-handle{border:1px solid #1B719E}.wf-option-checkbox.wf-checked,[type=checkbox].wf-option-checkbox:checked+label:before{box-shadow:0px 0px 0px 1px #1B719E !important;background-color:#1B719E !important}.wf-option-radio.wf-checked,[type=radio].wf-option-radio:checked+label:before{color:#1B719E !important}.wf-indeterminate-progress path{fill:#1B719E}.wf-switch>li.wf-active{background-color:#1B719E !important}.wf-drawer .wf-modal .wf-modal-header{background-color:#1B719E}.wf-circle-tooltip.ui-tooltip a{color:#1B719E}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-full-enabled,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-global-status-full-enabled{background-color:#1B719E}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status-premium .wf-block-labeled-value-value,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status-premium .wf-block-labeled-value-value{color:#1B719E}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status-premium .wf-block-labeled-value-value svg,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status-premium .wf-block-labeled-value-value svg{fill:#1B719E}#wf-dashboard .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status-premium .wf-block-labeled-value-label,#wf-global-options .wf-block .wf-block-content .wf-block-labeled-value.wf-protection-status-premium .wf-block-labeled-value-label{color:#1B719E}.wf-blocks-summary>thead>tr>th.wf-premium,.wf-blocks-summary>tbody>tr>th.wf-premium,.wf-blocks-summary>tr>th.wf-premium{border-top:2px solid #1B719E;border-left:2px solid #1B719E;border-right:2px solid #1B719E}.wf-blocks-summary>tbody>tr>td.wf-premium,.wf-blocks-summary>tfoot>tr>td.wf-premium,.wf-blocks-summary>tr>td.wf-premium{border-left:2px solid #1B719E;border-right:2px solid #1B719E}.wf-blocks-summary>tfoot>tr>td.wf-premium,.wf-blocks-summary>tr:last-child>td.wf-premium{border-bottom:2px solid #1B719E;background-color:#1B719E}#wf-toupp-required-message #wf-toupp-required-message-inner{background-color:#1B719E}.wf-block.wf-active>.wf-block-header>.wf-block-header-content>.wf-block-title{color:#1B719E}.wf-block-navigation-option:hover svg.wf-block-navigation-option-icon{fill:#1B719E}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label{color:#1B719E;background-color:#fff;border-color:#1B719E}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.focus{color:#1B719E;background-color:#e6e6e6;border-color:#082331}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label:hover{color:#1B719E;background-color:#e6e6e6;border-color:#124c6a}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:active,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.active,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label:active,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.active,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle{color:#1B719E;background-color:#e6e6e6;border-color:#124c6a}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:active:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:active:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:active.focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.active:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.active:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.active.focus,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle:hover,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle:focus,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle.focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label:active:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label:active:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label:active.focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.active:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.active:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.active.focus,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle:hover,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle:focus,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle.focus{color:#1B719E;background-color:#d4d4d4;border-color:#082331}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:active,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-active,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label:active,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-active,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-dropdown-toggle{background-image:none}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-disabled,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[disabled],ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[readonly],fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments label,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-disabled,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[disabled],.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[readonly],fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments label{color:#008cc1;background-color:#fff;border-color:#008cc1;cursor:not-allowed}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-disabled:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-disabled:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-disabled.wf-focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[disabled]:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[disabled]:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[disabled].wf-focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[readonly]:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[readonly]:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments label[readonly].wf-focus,fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:hover,fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments label:focus,fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments label.wf-focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-disabled:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-disabled:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-disabled.wf-focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[disabled]:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[disabled]:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[disabled].wf-focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[readonly]:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[readonly]:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label[readonly].wf-focus,fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments label:hover,fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments label:focus,fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments label.wf-focus{background-color:#fff;border-color:#1B719E}ul.wf-option.wf-option-toggled-segmented .wf-option-segments label .wf-badge,.wf-form-field.wf-option-toggled-segmented .wf-option-segments label .wf-badge{color:#fff;background-color:#1B719E}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label{color:#fff;background-color:#1B719E;border-color:#005e85}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.focus{color:#fff;background-color:#145272;border-color:#000405}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:hover{color:#fff;background-color:#145272;border-color:#003347}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle{color:#fff;background-color:#145272;border-color:#003347}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active.focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active.focus,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle:hover,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle:focus,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle.focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active.focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.active.focus,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle:hover,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle:focus,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle.focus{color:#fff;background-color:#0e3c54;border-color:#000405}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-active,.wf-open>ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:active,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-active,.wf-open>.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-dropdown-toggle{background-image:none}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled],ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly],fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled],.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly],fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label{color:#fff;background-color:#008cc1;border-color:#5996b0;cursor:not-allowed}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled.wf-focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled]:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled]:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled].wf-focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly]:hover,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly]:focus,ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly].wf-focus,fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:hover,fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:focus,fieldset[disabled] ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-disabled.wf-focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled]:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled]:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[disabled].wf-focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly]:hover,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly]:focus,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label[readonly].wf-focus,fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:hover,fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label:focus,fieldset[disabled] .wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label.wf-focus{background-color:#1B719E;border-color:#005e85}ul.wf-option.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label .wf-badge,.wf-form-field.wf-option-toggled-segmented .wf-option-segments [type=radio]:checked+label .wf-badge{color:#1B719E;background-color:#fff}#wordfenceLiveActivitySecurityOnly,#wordfenceLiveActivityAll{border-left:4px solid #1B719E}#wfLiveTrafficDisabledMessage h2{background-color:#1B719E}.wf-nav .wf-open>a,.wf-nav .wf-open>a:hover,.wf-nav .wf-open>a:focus{border-color:#1B719E}.wf-premium-callout .button-primary{background-color:#1B719E}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status-full-enabled{background-color:#1B719E}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status-enabled .wf-block-labeled-value-value{color:#1B719E}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status-enabled .wf-block-labeled-value-value svg{fill:#1B719E}.wf-block .wf-block-content .wf-block-labeled-value.wf-scan-status-enabled .wf-block-labeled-value-label{color:#1B719E}#wf-scan-running-bar-pill{background-color:#1B719E}.wf-scan-tabs .wf-tab.wf-active,.wf-scan-tabs .wf-tab:hover{color:#1B719E}.wf-scan-tabs .wf-tab.wf-active a,.wf-scan-tabs .wf-tab:hover a{color:#1B719E}.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-icon path,.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-inactive path,.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-active path,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-icon path,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-inactive path,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-active path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-icon path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-inactive path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-active path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-icon path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-inactive path,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover .wf-issue-control-icon-active path{fill:#1B719E}.wf-issue>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-label,.wf-issue>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-label,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-label,.wf-issue-site-cleaning>.wf-issue-summary>ul>.wf-issue-short-stats>.wf-issue-controls>.wf-issue-control:hover>.wf-issue-control-label{color:#1B719E}.wf-issue.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details>.wf-issue-control-icon path,.wf-issue.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details .wf-issue-control-icon-inactive path,.wf-issue.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details .wf-issue-control-icon-active path,.wf-issue-site-cleaning.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details>.wf-issue-control-icon path,.wf-issue-site-cleaning.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details .wf-issue-control-icon-inactive path,.wf-issue-site-cleaning.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details .wf-issue-control-icon-active path{fill:#1B719E}.wf-issue.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details>.wf-issue-control-label,.wf-issue-site-cleaning.wf-active>.wf-issue-summary>ul>.wf-issue-controls .wf-issue-control-show-details>.wf-issue-control-label{color:#1B719E}.wf-scan-type>li>ul.wf-scan-type-option.wf-active>.wf-scan-type-option-name{background-color:#1B719E}.wf-scan-type>li>ul.wf-scan-type-option.wf-active>.wf-scan-type-option-name .wf-option-checkbox{color:#1B719E !important}.wf-scan-scheduling-manual .wf-scan-scheduling-manual-presets>li.wf-active{background-color:#1B719E}.wf-schedule-times>li.wf-active{background-color:#1B719E}.wf-issue-control-ignore-menu>li:hover{background-color:#1B719E}#wf-site-cleaning-bottom h3{color:#1B719E}.wf-scanner-progress>.wf-scan-step>.wf-scan-step-icon>.wf-scan-step-complete-success,.wf-step-complete-success{background-image:url("../../images/icons/check.svg")}.wf-block-list .wf-block-list-subtitle{color:#008cc1}#wordfenceTwoFactorLegacy,#wordfenceTwoFactorModern{border-left:4px solid #1B719E}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-full-enabled{background-color:#1B719E}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-enabled .wf-block-labeled-value-value{color:#1B719E}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-enabled .wf-block-labeled-value-value svg{fill:#1B719E}.wf-block .wf-block-content .wf-block-labeled-value.wf-waf-status-enabled .wf-block-labeled-value-label{color:#1B719E}.wordfence-lock-icon{background-image:url("../../images/logos/shield-free.svg")}#wf-adminbar-icon{background-image:url("../../images/logos/shield-free.svg")}
css/license/premium-global.1722265817.css000064400000022111150755146460013505 0ustar00.wf-clearfix:before,.wf-clearfix:after{content:" ";display:table}.wf-clearfix:after{clear:both}.wf-btn:hover,.wf-btn:focus,.wf-btn.wf-focus{color:#137D8E}.wf-btn-default{color:#137D8E;background-color:#fff;border-color:#137D8E}.wf-btn-default:focus,.wf-btn-default.focus{color:#137D8E;background-color:#e6e6e6;border-color:#041a1e}.wf-btn-default:hover{color:#137D8E;background-color:#e6e6e6;border-color:#0c4d58}.wf-btn-default:active,.wf-btn-default.active,.wf-open>.wf-btn-default.wf-dropdown-toggle{color:#137D8E;background-color:#e6e6e6;border-color:#0c4d58}.wf-btn-default:active:hover,.wf-btn-default:active:focus,.wf-btn-default:active.focus,.wf-btn-default.active:hover,.wf-btn-default.active:focus,.wf-btn-default.active.focus,.wf-open>.wf-btn-default.wf-dropdown-toggle:hover,.wf-open>.wf-btn-default.wf-dropdown-toggle:focus,.wf-open>.wf-btn-default.wf-dropdown-toggle.focus{color:#137D8E;background-color:#d4d4d4;border-color:#041a1e}.wf-btn-default:active,.wf-btn-default.wf-active,.wf-open>.wf-btn-default.wf-dropdown-toggle{background-image:none}.wf-btn-default.wf-disabled,.wf-btn-default[disabled],.wf-btn-default[readonly],fieldset[disabled] .wf-btn-default{color:#51BFCF;background-color:#fff;border-color:#51BFCF;cursor:not-allowed}.wf-btn-default.wf-disabled:hover,.wf-btn-default.wf-disabled:focus,.wf-btn-default.wf-disabled.wf-focus,.wf-btn-default[disabled]:hover,.wf-btn-default[disabled]:focus,.wf-btn-default[disabled].wf-focus,.wf-btn-default[readonly]:hover,.wf-btn-default[readonly]:focus,.wf-btn-default[readonly].wf-focus,fieldset[disabled] .wf-btn-default:hover,fieldset[disabled] .wf-btn-default:focus,fieldset[disabled] .wf-btn-default.wf-focus{background-color:#fff;border-color:#137D8E}.wf-btn-default .wf-badge{color:#fff;background-color:#137D8E}.wf-btn-primary{color:#fff;background-color:#137D8E;border-color:#005e85}.wf-btn-primary:focus,.wf-btn-primary.focus{color:#fff;background-color:#0d5561;border-color:#000405}.wf-btn-primary:hover{color:#fff;background-color:#0d5561;border-color:#003347}.wf-btn-primary:active,.wf-btn-primary.active,.wf-open>.wf-btn-primary.wf-dropdown-toggle{color:#fff;background-color:#0d5561;border-color:#003347}.wf-btn-primary:active:hover,.wf-btn-primary:active:focus,.wf-btn-primary:active.focus,.wf-btn-primary.active:hover,.wf-btn-primary.active:focus,.wf-btn-primary.active.focus,.wf-open>.wf-btn-primary.wf-dropdown-toggle:hover,.wf-open>.wf-btn-primary.wf-dropdown-toggle:focus,.wf-open>.wf-btn-primary.wf-dropdown-toggle.focus{color:#fff;background-color:#093a42;border-color:#000405}.wf-btn-primary:active,.wf-btn-primary.wf-active,.wf-open>.wf-btn-primary.wf-dropdown-toggle{background-image:none}.wf-btn-primary.wf-disabled,.wf-btn-primary[disabled],.wf-btn-primary[readonly],fieldset[disabled] .wf-btn-primary{color:#fff;background-color:#51BFCF;border-color:#5996b0;cursor:not-allowed}.wf-btn-primary.wf-disabled:hover,.wf-btn-primary.wf-disabled:focus,.wf-btn-primary.wf-disabled.wf-focus,.wf-btn-primary[disabled]:hover,.wf-btn-primary[disabled]:focus,.wf-btn-primary[disabled].wf-focus,.wf-btn-primary[readonly]:hover,.wf-btn-primary[readonly]:focus,.wf-btn-primary[readonly].wf-focus,fieldset[disabled] .wf-btn-primary:hover,fieldset[disabled] .wf-btn-primary:focus,fieldset[disabled] .wf-btn-primary.wf-focus{background-color:#137D8E;border-color:#005e85}.wf-btn-primary .wf-badge{color:#137D8E;background-color:#fff}.wf-btn-link{color:#137D8E}.wf-pagination>.wf-active>a,.wf-pagination>.wf-active>a:hover,.wf-pagination>.wf-active>a:focus,.wf-pagination>.wf-active>span,.wf-pagination>.wf-active>span:hover,.wf-pagination>.wf-active>span:focus{background-color:#137D8E;border-color:#137D8E}#wf-onboarding-dismiss:hover{color:#137D8E}.wf-onboarding-btn:hover,.wf-onboarding-btn:focus,.wf-onboarding-btn.wf-focus{color:#137D8E}.wf-onboarding-btn.wf-onboarding-btn-primary{background-color:#137D8E}.wf-onboarding-btn.wf-onboarding-btn-primary:focus,.wf-onboarding-btn.wf-onboarding-btn-primary.focus{background-color:#0d5561}.wf-onboarding-btn.wf-onboarding-btn-primary:hover{background-color:#0d5561}.wf-onboarding-btn.wf-onboarding-btn-primary:active,.wf-onboarding-btn.wf-onboarding-btn-primary.active,.wf-open>.wf-onboarding-btn.wf-onboarding-btn-primary.wf-dropdown-toggle{background-color:#0d5561}.wf-onboarding-btn.wf-onboarding-btn-primary:active:hover,.wf-onboarding-btn.wf-onboarding-btn-primary:active:focus,.wf-onboarding-btn.wf-onboarding-btn-primary:active.focus,.wf-onboarding-btn.wf-onboarding-btn-primary.active:hover,.wf-onboarding-btn.wf-onboarding-btn-primary.active:focus,.wf-onboarding-btn.wf-onboarding-btn-primary.active.focus,.wf-open>.wf-onboarding-btn.wf-onboarding-btn-primary.wf-dropdown-toggle:hover,.wf-open>.wf-onboarding-btn.wf-onboarding-btn-primary.wf-dropdown-toggle:focus,.wf-open>.wf-onboarding-btn.wf-onboarding-btn-primary.wf-dropdown-toggle.focus{background-color:#093a42}.wf-onboarding-btn.wf-onboarding-btn-primary.wf-disabled:hover,.wf-onboarding-btn.wf-onboarding-btn-primary.wf-disabled:focus,.wf-onboarding-btn.wf-onboarding-btn-primary.wf-disabled.wf-focus,.wf-onboarding-btn.wf-onboarding-btn-primary[disabled]:hover,.wf-onboarding-btn.wf-onboarding-btn-primary[disabled]:focus,.wf-onboarding-btn.wf-onboarding-btn-primary[disabled].wf-focus,fieldset[disabled] .wf-onboarding-btn.wf-onboarding-btn-primary:hover,fieldset[disabled] .wf-onboarding-btn.wf-onboarding-btn-primary:focus,fieldset[disabled] .wf-onboarding-btn.wf-onboarding-btn-primary.wf-focus{background-color:#137D8E}.wf-onboarding-btn.wf-onboarding-btn-primary .wf-badge{color:#137D8E}.wf-onboarding-btn.wf-onboarding-btn-default{color:#137D8E;border-color:#137D8E}.wf-onboarding-btn.wf-onboarding-btn-default:focus,.wf-onboarding-btn.wf-onboarding-btn-default.focus{color:#137D8E;border-color:#041a1e}.wf-onboarding-btn.wf-onboarding-btn-default:hover{color:#137D8E;border-color:#0c4d58}.wf-onboarding-btn.wf-onboarding-btn-default:active,.wf-onboarding-btn.wf-onboarding-btn-default.active,.wf-open>.wf-onboarding-btn.wf-onboarding-btn-default.wf-dropdown-toggle{color:#137D8E;border-color:#0c4d58}.wf-onboarding-btn.wf-onboarding-btn-default:active:hover,.wf-onboarding-btn.wf-onboarding-btn-default:active:focus,.wf-onboarding-btn.wf-onboarding-btn-default:active.focus,.wf-onboarding-btn.wf-onboarding-btn-default.active:hover,.wf-onboarding-btn.wf-onboarding-btn-default.active:focus,.wf-onboarding-btn.wf-onboarding-btn-default.active.focus,.wf-open>.wf-onboarding-btn.wf-onboarding-btn-default.wf-dropdown-toggle:hover,.wf-open>.wf-onboarding-btn.wf-onboarding-btn-default.wf-dropdown-toggle:focus,.wf-open>.wf-onboarding-btn.wf-onboarding-btn-default.wf-dropdown-toggle.focus{color:#137D8E;border-color:#041a1e}.wf-onboarding-btn.wf-onboarding-btn-default.wf-disabled:hover,.wf-onboarding-btn.wf-onboarding-btn-default.wf-disabled:focus,.wf-onboarding-btn.wf-onboarding-btn-default.wf-disabled.wf-focus,.wf-onboarding-btn.wf-onboarding-btn-default[disabled]:hover,.wf-onboarding-btn.wf-onboarding-btn-default[disabled]:focus,.wf-onboarding-btn.wf-onboarding-btn-default[disabled].wf-focus,fieldset[disabled] .wf-onboarding-btn.wf-onboarding-btn-default:hover,fieldset[disabled] .wf-onboarding-btn.wf-onboarding-btn-default:focus,fieldset[disabled] .wf-onboarding-btn.wf-onboarding-btn-default.wf-focus{border-color:#137D8E}.wf-onboarding-btn.wf-onboarding-btn-default .wf-badge{background-color:#137D8E}.wf-onboarding-modal #wf-onboarding-or{color:#137D8E}.wf-onboarding-modal #wf-onboarding-subscribe .wf-switch>li.wf-active,.wf-onboarding-modal #wf-onboarding2-subscribe .wf-switch>li.wf-active{background-color:#137D8E}.wf-onboarding-modal [type=checkbox].wf-option-checkbox:checked+label:before,.wf-onboarding-modal [type=radio].wf-option-radio:checked+label:before{background-color:#137D8E !important}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-header{background-color:#137D8E}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-content>ul #wf-onboarding-plugin-header-stage>ul>li.wf-active{border-left:4px solid #137D8E}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-content>ul #wf-onboarding-plugin-header-stage>ul .wf-onboarding-plugin-header-stage-label>ul>*:last-child{color:#137D8E}#wf-onboarding-plugin-header #wf-onboarding-subscribe .wf-switch>li.wf-active,#wf-onboarding-plugin-header #wf-onboarding2-subscribe .wf-switch>li.wf-active{background-color:#137D8E}#wf-onboarding-plugin-header [type=checkbox].wf-option-checkbox:checked+label:before,#wf-onboarding-plugin-header [type=radio].wf-option-radio:checked+label:before{background-color:#137D8E !important}#wf-onboarding-final-attempt #wf-onboarding-subscribe .wf-switch>li.wf-active{background-color:#137D8E}#wf-onboarding-final-attempt #wf-onboarding-or{color:#137D8E}.wf-tour-pointer #wf-tour-close a:hover{color:#137D8E}.wf-tour-pointer .wf-pointer-footer .wf-tour-pagination>li.wf-active{color:#137D8E}li#toplevel_page_Wordfence .wp-menu-image::before{content:' ';background-image:url("../../images/logos/shield-premium.svg");background-clip:content-box;background-repeat:no-repeat;background-position:center;width:20px;height:20px;padding:7px 0}li#toplevel_page_Wordfence.wp-menu-open .wp-menu-image::before{background-image:url("../../images/logos/shield-white.svg")}
css/license/response-global.1722265817.css000064400000022112150755146460013666 0ustar00.wf-clearfix:before,.wf-clearfix:after{content:" ";display:table}.wf-clearfix:after{clear:both}.wf-btn:hover,.wf-btn:focus,.wf-btn.wf-focus{color:#6453A3}.wf-btn-default{color:#6453A3;background-color:#fff;border-color:#6453A3}.wf-btn-default:focus,.wf-btn-default.focus{color:#6453A3;background-color:#e6e6e6;border-color:#30284f}.wf-btn-default:hover{color:#6453A3;background-color:#e6e6e6;border-color:#4b3e7a}.wf-btn-default:active,.wf-btn-default.active,.wf-open>.wf-btn-default.wf-dropdown-toggle{color:#6453A3;background-color:#e6e6e6;border-color:#4b3e7a}.wf-btn-default:active:hover,.wf-btn-default:active:focus,.wf-btn-default:active.focus,.wf-btn-default.active:hover,.wf-btn-default.active:focus,.wf-btn-default.active.focus,.wf-open>.wf-btn-default.wf-dropdown-toggle:hover,.wf-open>.wf-btn-default.wf-dropdown-toggle:focus,.wf-open>.wf-btn-default.wf-dropdown-toggle.focus{color:#6453A3;background-color:#d4d4d4;border-color:#30284f}.wf-btn-default:active,.wf-btn-default.wf-active,.wf-open>.wf-btn-default.wf-dropdown-toggle{background-image:none}.wf-btn-default.wf-disabled,.wf-btn-default[disabled],.wf-btn-default[readonly],fieldset[disabled] .wf-btn-default{color:#928DC4;background-color:#fff;border-color:#928DC4;cursor:not-allowed}.wf-btn-default.wf-disabled:hover,.wf-btn-default.wf-disabled:focus,.wf-btn-default.wf-disabled.wf-focus,.wf-btn-default[disabled]:hover,.wf-btn-default[disabled]:focus,.wf-btn-default[disabled].wf-focus,.wf-btn-default[readonly]:hover,.wf-btn-default[readonly]:focus,.wf-btn-default[readonly].wf-focus,fieldset[disabled] .wf-btn-default:hover,fieldset[disabled] .wf-btn-default:focus,fieldset[disabled] .wf-btn-default.wf-focus{background-color:#fff;border-color:#6453A3}.wf-btn-default .wf-badge{color:#fff;background-color:#6453A3}.wf-btn-primary{color:#fff;background-color:#6453A3;border-color:#005e85}.wf-btn-primary:focus,.wf-btn-primary.focus{color:#fff;background-color:#4f4281;border-color:#000405}.wf-btn-primary:hover{color:#fff;background-color:#4f4281;border-color:#003347}.wf-btn-primary:active,.wf-btn-primary.active,.wf-open>.wf-btn-primary.wf-dropdown-toggle{color:#fff;background-color:#4f4281;border-color:#003347}.wf-btn-primary:active:hover,.wf-btn-primary:active:focus,.wf-btn-primary:active.focus,.wf-btn-primary.active:hover,.wf-btn-primary.active:focus,.wf-btn-primary.active.focus,.wf-open>.wf-btn-primary.wf-dropdown-toggle:hover,.wf-open>.wf-btn-primary.wf-dropdown-toggle:focus,.wf-open>.wf-btn-primary.wf-dropdown-toggle.focus{color:#fff;background-color:#41366a;border-color:#000405}.wf-btn-primary:active,.wf-btn-primary.wf-active,.wf-open>.wf-btn-primary.wf-dropdown-toggle{background-image:none}.wf-btn-primary.wf-disabled,.wf-btn-primary[disabled],.wf-btn-primary[readonly],fieldset[disabled] .wf-btn-primary{color:#fff;background-color:#928DC4;border-color:#5996b0;cursor:not-allowed}.wf-btn-primary.wf-disabled:hover,.wf-btn-primary.wf-disabled:focus,.wf-btn-primary.wf-disabled.wf-focus,.wf-btn-primary[disabled]:hover,.wf-btn-primary[disabled]:focus,.wf-btn-primary[disabled].wf-focus,.wf-btn-primary[readonly]:hover,.wf-btn-primary[readonly]:focus,.wf-btn-primary[readonly].wf-focus,fieldset[disabled] .wf-btn-primary:hover,fieldset[disabled] .wf-btn-primary:focus,fieldset[disabled] .wf-btn-primary.wf-focus{background-color:#6453A3;border-color:#005e85}.wf-btn-primary .wf-badge{color:#6453A3;background-color:#fff}.wf-btn-link{color:#6453A3}.wf-pagination>.wf-active>a,.wf-pagination>.wf-active>a:hover,.wf-pagination>.wf-active>a:focus,.wf-pagination>.wf-active>span,.wf-pagination>.wf-active>span:hover,.wf-pagination>.wf-active>span:focus{background-color:#6453A3;border-color:#6453A3}#wf-onboarding-dismiss:hover{color:#6453A3}.wf-onboarding-btn:hover,.wf-onboarding-btn:focus,.wf-onboarding-btn.wf-focus{color:#6453A3}.wf-onboarding-btn.wf-onboarding-btn-primary{background-color:#6453A3}.wf-onboarding-btn.wf-onboarding-btn-primary:focus,.wf-onboarding-btn.wf-onboarding-btn-primary.focus{background-color:#4f4281}.wf-onboarding-btn.wf-onboarding-btn-primary:hover{background-color:#4f4281}.wf-onboarding-btn.wf-onboarding-btn-primary:active,.wf-onboarding-btn.wf-onboarding-btn-primary.active,.wf-open>.wf-onboarding-btn.wf-onboarding-btn-primary.wf-dropdown-toggle{background-color:#4f4281}.wf-onboarding-btn.wf-onboarding-btn-primary:active:hover,.wf-onboarding-btn.wf-onboarding-btn-primary:active:focus,.wf-onboarding-btn.wf-onboarding-btn-primary:active.focus,.wf-onboarding-btn.wf-onboarding-btn-primary.active:hover,.wf-onboarding-btn.wf-onboarding-btn-primary.active:focus,.wf-onboarding-btn.wf-onboarding-btn-primary.active.focus,.wf-open>.wf-onboarding-btn.wf-onboarding-btn-primary.wf-dropdown-toggle:hover,.wf-open>.wf-onboarding-btn.wf-onboarding-btn-primary.wf-dropdown-toggle:focus,.wf-open>.wf-onboarding-btn.wf-onboarding-btn-primary.wf-dropdown-toggle.focus{background-color:#41366a}.wf-onboarding-btn.wf-onboarding-btn-primary.wf-disabled:hover,.wf-onboarding-btn.wf-onboarding-btn-primary.wf-disabled:focus,.wf-onboarding-btn.wf-onboarding-btn-primary.wf-disabled.wf-focus,.wf-onboarding-btn.wf-onboarding-btn-primary[disabled]:hover,.wf-onboarding-btn.wf-onboarding-btn-primary[disabled]:focus,.wf-onboarding-btn.wf-onboarding-btn-primary[disabled].wf-focus,fieldset[disabled] .wf-onboarding-btn.wf-onboarding-btn-primary:hover,fieldset[disabled] .wf-onboarding-btn.wf-onboarding-btn-primary:focus,fieldset[disabled] .wf-onboarding-btn.wf-onboarding-btn-primary.wf-focus{background-color:#6453A3}.wf-onboarding-btn.wf-onboarding-btn-primary .wf-badge{color:#6453A3}.wf-onboarding-btn.wf-onboarding-btn-default{color:#6453A3;border-color:#6453A3}.wf-onboarding-btn.wf-onboarding-btn-default:focus,.wf-onboarding-btn.wf-onboarding-btn-default.focus{color:#6453A3;border-color:#30284f}.wf-onboarding-btn.wf-onboarding-btn-default:hover{color:#6453A3;border-color:#4b3e7a}.wf-onboarding-btn.wf-onboarding-btn-default:active,.wf-onboarding-btn.wf-onboarding-btn-default.active,.wf-open>.wf-onboarding-btn.wf-onboarding-btn-default.wf-dropdown-toggle{color:#6453A3;border-color:#4b3e7a}.wf-onboarding-btn.wf-onboarding-btn-default:active:hover,.wf-onboarding-btn.wf-onboarding-btn-default:active:focus,.wf-onboarding-btn.wf-onboarding-btn-default:active.focus,.wf-onboarding-btn.wf-onboarding-btn-default.active:hover,.wf-onboarding-btn.wf-onboarding-btn-default.active:focus,.wf-onboarding-btn.wf-onboarding-btn-default.active.focus,.wf-open>.wf-onboarding-btn.wf-onboarding-btn-default.wf-dropdown-toggle:hover,.wf-open>.wf-onboarding-btn.wf-onboarding-btn-default.wf-dropdown-toggle:focus,.wf-open>.wf-onboarding-btn.wf-onboarding-btn-default.wf-dropdown-toggle.focus{color:#6453A3;border-color:#30284f}.wf-onboarding-btn.wf-onboarding-btn-default.wf-disabled:hover,.wf-onboarding-btn.wf-onboarding-btn-default.wf-disabled:focus,.wf-onboarding-btn.wf-onboarding-btn-default.wf-disabled.wf-focus,.wf-onboarding-btn.wf-onboarding-btn-default[disabled]:hover,.wf-onboarding-btn.wf-onboarding-btn-default[disabled]:focus,.wf-onboarding-btn.wf-onboarding-btn-default[disabled].wf-focus,fieldset[disabled] .wf-onboarding-btn.wf-onboarding-btn-default:hover,fieldset[disabled] .wf-onboarding-btn.wf-onboarding-btn-default:focus,fieldset[disabled] .wf-onboarding-btn.wf-onboarding-btn-default.wf-focus{border-color:#6453A3}.wf-onboarding-btn.wf-onboarding-btn-default .wf-badge{background-color:#6453A3}.wf-onboarding-modal #wf-onboarding-or{color:#6453A3}.wf-onboarding-modal #wf-onboarding-subscribe .wf-switch>li.wf-active,.wf-onboarding-modal #wf-onboarding2-subscribe .wf-switch>li.wf-active{background-color:#6453A3}.wf-onboarding-modal [type=checkbox].wf-option-checkbox:checked+label:before,.wf-onboarding-modal [type=radio].wf-option-radio:checked+label:before{background-color:#6453A3 !important}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-header{background-color:#6453A3}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-content>ul #wf-onboarding-plugin-header-stage>ul>li.wf-active{border-left:4px solid #6453A3}#wf-onboarding-plugin-header #wf-onboarding-plugin-header-content>ul #wf-onboarding-plugin-header-stage>ul .wf-onboarding-plugin-header-stage-label>ul>*:last-child{color:#6453A3}#wf-onboarding-plugin-header #wf-onboarding-subscribe .wf-switch>li.wf-active,#wf-onboarding-plugin-header #wf-onboarding2-subscribe .wf-switch>li.wf-active{background-color:#6453A3}#wf-onboarding-plugin-header [type=checkbox].wf-option-checkbox:checked+label:before,#wf-onboarding-plugin-header [type=radio].wf-option-radio:checked+label:before{background-color:#6453A3 !important}#wf-onboarding-final-attempt #wf-onboarding-subscribe .wf-switch>li.wf-active{background-color:#6453A3}#wf-onboarding-final-attempt #wf-onboarding-or{color:#6453A3}.wf-tour-pointer #wf-tour-close a:hover{color:#6453A3}.wf-tour-pointer .wf-pointer-footer .wf-tour-pagination>li.wf-active{color:#6453A3}li#toplevel_page_Wordfence .wp-menu-image::before{content:' ';background-image:url("../../images/logos/shield-response.svg");background-clip:content-box;background-repeat:no-repeat;background-position:center;width:20px;height:20px;padding:7px 0}li#toplevel_page_Wordfence.wp-menu-open .wp-menu-image::before{background-image:url("../../images/logos/shield-white.svg")}
css/images/ui-icons_cc0000_256x240.png000064400000010705150755146460013034 0ustar00�PNG


IHDR��IJ�PLTE��������������������������������������������������������������������������������������������r�YtRNS3P���/"Uq@f`2�
!<BHK Z#'1S,�4���j���8E���|��������)��Q$�
��b�J��mߜGc?o�h�@^�bKGD�H	pHYsHHF�k>dIDATx��]c۶�H�阒]�K���d��%٫뺮��lm���w]��|�p��X�m�-��}<�w(1$��	;�F�@��%��?����B,Lh{�t���#��T@�/?j�9	m��N� #���+`��`��I�
��_�-s�ʹU0�M��[��
s�4`x��š�#��
�D<�~؀�K��.4�]`��PDDDDDDĈq����Ek@����A�~�*���	!Y���X�`hv3\LX�Ot�J2b�ؓl�QI<��� �6�-X�lֈ�6�H��|=j�`E�iq���Cv:�q���C?�?���x�,�r*t�ݻ}|;kP�4���d�Y���f���K��~[	>�X:+�i����ĆQV9\����e�'���A�tOS�:7��2����YsxM�ہ��B��&���z�>n�C��@��r@�*a�ӝ��%��MFDDDDDD�T�ߖ���H,���E���RU��n
ب<��V-
@�/Nm�թ��������Hw����*�+��#��$o�e�{�% �7\X��ǀ���2��~0��&n��sbA,�D��
�A�V�I��|�
�Og���鴋�	�7�y	7Jf����:_�w^�H	v{/O�9���<���Y�`+�� HRٰ����[��?��
�����=���c""""""F�˽�sG�<*k9c��E�8薽�������zfm��r�1�N������nq�w��&=O�\}K`
#���2��~��L�|?�m>�\�f�͹�:}�4ᦋ���{�)�n[��
�̰E
KY��D�ۇ-��	�+�Kl=�Ӄ��L`љ�|�%��n�	a�	���N�#��5�	(4��?����EDDDD\o�W�Ffq;��\E��_������,���W!%�zE!F�¶.�(USHQ0d�w)T���8#p,�x�B��K���� *�x��X��E�e������
K솎%mK�X~s�FE���~������tdc�a��I���1��Af4��dH��c�G�S�B`��0�wev`����"�{��	�.�GDDDD�,d�O�6�k"qk��Me�fS_����U��KŌ&g~>n� �H�})��L���F%8(�)r���!�[4统qQk�0�m[Le���_�7���0�@>1 X0A��Z���Vc�E�V ���Lt�k�3�EJ��44�Zﮊ�N`rt�>`�˥�	�	�
A��HBLH�@��c���Uq=j������cM����2�s����J��CL�iR �NQ�������0=��Yi�-�|4�V��]��]��B^�ޞ���_H�����$�<�$�	
a����=��d@�	(Z�Ap_�}�~s���:�N{DC>����m�^��ƒ����S�&�, ;�N����&�B} ��<_A��B]H�u��N(B0�{h���1�IK���Ds��j����'��M���8�.�ӫ1�h3�df}mq��	��n�U{��L�o�z\=?@	((��e�|=ơ麄�C�i����1r<|�OO�;�
`�H��p�Qy�zԈu�����Z���V��Ʋ�!�)��5m�C��2�Ly�g�;���֑�R���jW�a@��@V�L�&W���ru=Z
�̥�=U���5}���������7�;b(�����nP&�s��k�4����8�ͥ��0���1�U�W�v�k�18dq���T��ՌE]qH8������G�F�����K���'��r����Or�r�̧��6"fp��T�^3c��"�����n��Mم-�/��W=�tJ,�X�)���{�P
Rm|K��>mX�8v5h��<������_{ꘀ�Y�F�|&_G;&�>^�����W⁃�&�K���(��81�EB@F&��;"L���'wfw��E-6��o&/̫'X�e,>~�ee��|��A����=)	d��Q�`}P[���K��N��˂����/�~)����O[d�O=�3E�l5'Y�$?��7�m��Tzզ.�\��.��` WE���"""""v�)��V���<��K�ZX.Ex�~Ч)��ߚ����W_}�5|��s��/!?��'poդ���tC3����@�Q�)��t��`���b!,dY9�6A2���������/튮���n�t�TK>���#]�L;zq�J��r���²[��\-t�ҽ�5
@�ͷϟ��n�T@��+;�c���Qh�C*���T�ڙ��A<Sku�µb�E
/��$�Z���.e�j�����_ʤrWaB6d���(��S�s[�|���竕
/5R���(�4X�����76��`3|���P�p�'�H~<R?M�2�)�  ��g��Vp��B�n�=�|W�ͬ\��V0_�81Oׄ�Kz||lP_��ω���lxX;ǀ�Ju<��Ng[��]=�(�#]������p�P�a���i���s�f��
V�z�]ౚ����z>�Vr�?�f�?����
�Q�1�T`��} H�k���,{�VZˋT��ϛ�?I̯u�QK�LM�e͆��~��q������y�m0�9�S�;���j�����5 ��i��Q��]7k0�U�ޭ���G�kX����3#���lY��_Цx����j޶9��`�#
M	[z��KuO_z˿Dܭ��*��kOJ�(7��n��\�e�
I�T�ƨ�l�/�U������߶uw�.�~���;#�r��.�����8
�o# 5L��h>1�i�����p��V�M?�/u7��0� X@��L��+M�+�����{��Fkt�{�ŧ89�0`��. ĀC�R+\��/��t�R����;
�TӲ���]�aL���|�efđ��	�>�ۣ��G�|�P`P��8C1K՛�A�̍<�2��ۂ��K�r�l@L
L��������8�@�E>`n����PNԍ,��p�����E��Ɔ���Z�FlÎ;���F��7��Ȯ;�
��s�wSz)g7�{r�s��S��gȋ��(߄~�AWytX�$�NV����R�_��<6�p.�O�8�O[�OdDk>_��O�O�}���JS���d��mV�?�W(_��m� ��j��~=H IԁF>T/��{*]IGJ@i��qam�NF|Q�5���0+���E�S8�:�v�`p~v���j:B����p96�o�ys%��������
�|@H�����]��+�@��t]W�k}}���7��Fʮr���A�����B���\m�-�_�2PY8�����x�ՎN�.h�~��@+7��z5������t�_/�����/�?���0�S>��)���z�i0n�/�B����`{D��W���#`����B��o���[,�g��FVЁ�pP߾���C]Bz�� ��,X�����X�fԃ����A�:H�� k�7��d�Z9��oc}o�]�0�vd�:R]�0�ve���]刈����j����у����|
	?�+(��OǍ�+	�#��ys���ߍ�n�p���Fru<��.HȺotM�3h���}��߆P}�������˗��v�����P�}mǀ���?��W��Z@���������}��������@��@��FD�������l�%tEXtdate:create2015-03-11T14:59:12+00:000�i�%tEXtdate:modify2015-03-11T14:59:12+00:00A��tEXtSoftwareAdobe ImageReadyq�e<IEND�B`�css/images/ui-icons_444444_256x240.png000064400000015520150755146460012716 0ustar00�PNG


IHDR�E�r@bKGDD�<��	pHYsHHF�k>mIDATx��{leG}�?g�K��$����U�!�>T���R��u�&H`oE�*U���.B
�RE*%�B��$E�Fd�E)�݈†>l�B��^��P�R�U����%���9g^�{}����{�=�y�~�9�M�n<���.��`���� c���Ab/�@�[�V�D��0��3AX9�0�N��_�B��&��>~�>�
c�;ab�D�ߎE����Qz�'k���M�ayԉ�6�!�:u:�:@RŤ�B�yDD���'�L��-�f�]S��q!�f�
S�Q�&�S��7MC��r==3dJ��{��f�Z���S0�Ms��:0K٦g�ʿ��&H�U�=�mc�4�i?UĔG��U4�hc��Qb�]�!�hL���W/
����@������pxh8�~�|�A��Qf?�ێ�1f¸����=u����Q�GJH��p����PϠI�w״m췥���ԧ>2���"�WÓP&{��n���T:s�f�q���H@���.c�I�����~S�s+�^|B�n�29�dH����]��v�-ˌ-m�e�h�>�����q&ت��g�9x�#c�n�~!����pxh8�4^/
����o�#�Z@��S���^�4� KZKP�d�9���C@F[�����,��a+����]8��v��K�qHl�w9ק�84�KB��ץ|��&��#��[�\C����`��R��!�����:�F
z��C���6��)A���T1wU.I�җ!4��ig�3w��������E:��q7����n�0uA���mP��y
�T�K(5ͬ�lNæb�T���rw�DV�]��t�e4���7�
�L���[��C��0��P��&��0���+�+�
����@������pxh8�4����Y��`��O����E�Z<��h�\J!��䞋��j
�;TK�Vr�0��ͬq�cˇ��u���a����p����E{B�w"�K��5���n-��c"w�v�T�6
T�hzီ|6�ŝ���Ι��N{	t��]��K��^m1(�6��m�3��'�R�f���`Ô�� �_�>��j�,�*�-E)�e��{�U�,��
\u���oV��:
`o��m�Ke�t��_W�O��dW3���Z
Քrv|�~^�g��`jyc���p�*���f��b�]M5��9��.��L��N��q+%����ۯ�0�vc�c�J��EM5���kk�#I�<���x_��	�I#0D�w��4xh8�4^/
��^c���
����d�r��DM{w�Q�t�e�{��^�`��b�r./��M:0գ��*���z���`]|S�B�(�e)�h͎/V����ܮ�"aO!�o�
,�u�^���Љ�^�=�z��t`�WeCC�MQϱo��0q��%���U�o?�<��@6��HG/���������uAQ-_�u||���ִ*2l��ٍ�uG�@� j
!�B��r�����	q�L!*)�h����.�V�{3���-��!�w�$dP�*�����/P[�t1���l3�hl�y�p������0b��g�L�} �3���$�%\/��.)TwQ�"uK7d�+�2�!�@������pxh8�4�'�aY$m��f�6�lB'�.D��
��Р��x7S�x��tI��eW�e}���d0�R�W��^ݢ��0](U�݋T�x����|��T�|����@v�^Df׹Lb��(�2��H��0n8;���_�Q�O��}D���&3{��Y��W�w��5*��e˗?�̖�G�
�:H iZӖ)/MP���(:�!�/�|B��[i����:�Gf
�L�`�~��:z$aa���^����ʭ|P�- kbݞ<ەL&�xJ�AABȼ�Hvᑢ�[�yS��ə�w�NJuy��%pw�0�_a"z��x���� �3i�1|��=����@����%�JW����A��m�\���
��l�>a���rV�-P��S���ו��j��A^�&v��&^W������c�qMz�-&| �ϜCʥ�xx�}\Z���W���4Ig��8�YL�1�a��R���O�Q�.�PU��(�>�K�����&c�.m��O�-����M\8S�Y���.�'�|�5�*܊B@֘A�%M��o��2���:�c�[��K9�3-��t�nNjB���o2�`*]9aZAq?Wկó���)%���0�"_�Ϯq��p�yV�!�/�h��I.(�$]�!�������r�W���+�p��	��P�;
4�4��E*�<a�o���l,�Z�>��0r"7���7`��\*!s<���@��Z��b�n0��͏��me�
HEH]��XSM�~#a��1&���|V�b�YQE}�e%ͦ@�~���N�N�>�8��o7*�G�B�M���R��-�U=��-��³��K���E��+x
�p
c\�U�Ws5W��la?L�s��f;���2�v�y���+�o���*m� �m�-����t8�
��W<���,o�̰����8f��=CH��`⾿�h�)���_�}�(�%m���'��&���
;��(�ݚ!�{:^����R��@���N���ү"�*�<�V�敡�5��o�h~q���+`6I��i�I<%�����Z=^JE\`�0]1����D��A��^�a0f��(���c %[�Gxh8�4^/��O��rdh9�����M7L)-�ӂ-���?K(����stբ�h-?�:�_XڧC�r�]��8�YB�3�|�C|
l�eXW��_�x�!V8Ɗ�b�8���bQ����7����N�4J�������l!��=�
D?��'a`^���a�q��8��:-�����YP��x�[�o�֝��X�Q"�Gִ����W}���
���1>�c���b�YV
6=��*��ۿŻ��)����8hs���������/��8��'Ϳ,�l������E�b���\Y�e�.�M6܈��d9u��J�ZĽj��-l�����&8�:s\Кt���y'�hs�[�Gm�h-�m��k�2^S�J��e%u\j5���n��|���;�଴��δa[�;�Хˎ�p�?�|�y��RaC$�_a�/���)N�UN��ƍ��Ȅp��~�Ú�/���k�������n����|J��)�/�9�Q:��,����K� �x�R�!  �B%�]lq+��|�w��	�ս_\GW�)"3]aCJ��%>��|�'� _�ƅDP���*�0���7³�=�V�ZE��g��V-�L���'���@}��2��ƪ[�P���'���rEm["v�O��#��
��5�g$�$?��mƟ'zJ��^S�xHj�g�4D������=�4�����@��F7#
ъ���~���z�'o	To㩋�b̓�dd�c���B�U%T9ҊD@��.�!�+N�wu�e��r>n��-�U�$U`I�v%�����A�Q����E�d��
��;�Ә:�+�a&�XĎ �y����%��k��������G�с���	��"�4��pxh8�4^��	@d6�((�Ԕ{�C::[�>�H,
�ɴNVN����hr.�~N�����Z��b�3�����+��Q�|,�%�t��%�n!作*�7����f��g(�m!fy��"�k�I6Y�/�eZ�ٳ���+��z�g�6W8ɦbQ%�y��8����Ï�2ŕ�#���b-t��Y�͕8y��nO�{]�!ټ�*���\� �(��p�2.�H�ٙ�d�.�>Z�(N��&�l�2�&k�	�U&ף���~�.���ו���6���58A7����}P:��BlkU�[�8�)�j�1�$��W� �!s\�������QF�n(qRK��:'�X���@����=$��x���#|�5:��@��]���2�S�i�.�&�W
��$`
8�t����3 =�&[#�ߥ��U3���Wҳq��.H{���➇�Z���,��ȣ���"��A��H��#�珁�W��(+̱�1�Ɏ�;����8�/�<E�E
�C+n�U:�|a��ɔ�M|�?L�����W1�$~}�W��,�o�V������R����l{��7�	������^�;<�,�t[�����T"�3SU9l��˾�H��[yV�&�a�@����E��&��<D4�(b���7q�����Ƶ\��\�u�f����7r����������^��Ci�[��.��h�����.�έD�"DD�_3��e������c��Y�Q�,�B@�fU���/�?���g���B�R���C�&��2��P�8��@3ZtS�,����v7�^#�另�;c'�Nȹ����.?d[�J!Az^ ?�<̯�oɛ�_s[Kg{(e�}�E�~J��,�-<<�����U����
"&B%�7�~�{�/
G�l�4^���j����Ԓt���cA��0\(�����ܓ{�̠�Q�8��YN�Bݙ�?[���R��$�k���\�{�u���׾~�Q��q�)�8���z:G�G��UK�:�
07��6�-��
WMY<�����
���Ѱ;�$5�&v�}%��8�)#9&)/��K^2�+��B̳�i��m\Ҥ����V�}�LD���1/i��n�]2č��>��I?U�7x���G�4�c�*�i��'<�iM
�p������7�Y�V��=�ӡl*&���ױ���^j��}fp��8l����Z� D3H�$"��:�0:û�{��]�~�+�X��,�V�y�۹�Ma#en>�x�ƨ�"
�I�3c��1e\�ӎe�(��$��z���t�nꅧH����v.|mO9QFL�&y���
���Πg)�5�ޜlW�v'�6z�K�,`]�ǫ�2��@}Ϟ����9�=<���a�8~����FR\p��Dx���T3�X�Ixk`������pxh8�4^��X���36�*��H!zu%Ġp���cܫб�d�w�5@�U���	OK�B�����a� B��-*�RJ*,��(�`�EC���ﲫi_ �+8�)�d�ބC)^H~M?j���@�x�9[�GW ���50�04[�	uDV�s��ֻ�u�F�}4��5L��U5TT�ⷺ)�{�`��U�:�1���zH <5�{�t����DߏP������k��A.�5fX�eH�-��}��3Ƹ"5�pc�PB���,��F��y����U�S�%�50�����^��pxh8�4^/
G^Lgo=F��bW�7r���~dg{PC�ؗH�E7us����mfx��:\(�7�,�+X�c���B�9�4!�A"T�C��b��ՙl�Uq���(��t
"h�e�S�|�5.���N��'x�U:�L�p*_�c�;�C�ơ�?��y����j��Z�m7�Sy�P r}�{��H�����,p�9�,�H��ޜ~S�}m���|���ތ�-0��=�]��� 	���XкCVk�_�~���K�� �;��a>>4=O�5͍s�p��
'�UX⻹�{J�� �F�alr���F}c@�`fQ���Ȏ�чxm܃���#<����𶀆�@������pd`��.�6I�p۞�]�A�+"y��P�ns3�oz��7hzeDp'���������m�&�M�w�M��h�<��Ǧ�(�����I���'G��>���W%���Q�W��V����oH�t�Mt�j��D�U���͕l� �n�	�I��w�oO_��5~���YX�w(�R���m���)��'��D������ɸ�����5�=�@��+���~���j�y^`O�`�$�!�_�U#�!G��B |V�:ĵ��>d���e��=A���y�<Շ��*^_�b
�T�)}7
b�P��o��h�hh���~7��r�M��/d����F�HGI���>&Ql���/�L^b�:ג��T��D��M�9����Q<��*y
=���2��~����/?J,����+%q�q���ޗ���S���?ܑ������
�^��e���]��G�SV�pu���^����س�~�o����Bo
l8�4^/
����@�!��/ON�G����ۮ2t]��С8�cݮ5�z=7��������ˮ���g��@�/�aE[��y#�3�#z��7L�.|��
��(cR�c�S��m�Q�$�6�ץ{D���a�{T�_j8�4^/
����@ñ`�/���_g�"d���`�ɾ���0�
���{�����
�����C�j����_9��jD�Ջa�~?�	dc�[�����0�*a��������,&
0��&�+���O�B4!��1��~��Ix���>�8�c��&�G)�j���I�����=@�5@�v�&J?��Q�l�Ç@��Q�����?�x^y�3%tEXtdate:create2015-03-11T14:59:12+00:000�i�%tEXtdate:modify2015-03-11T14:59:12+00:00A��tEXtSoftwareAdobe ImageReadyq�e<IEND�B`�css/images/ui-icons_ffffff_256x240.png000064400000014233150755146460013372 0ustar00�PNG


IHDR�E�r@bKGD���̿	pHYsHHF�k>�IDATx��]]�%�u�z��fV^���;l��Y��03����&)��]P���'�M@+�ȋa� k����`�J!&~H2ք F�����?�!�0�_&`������>u���޹?U_3s��Su��|U�]��:!D����@�t	8"t�@�M;ljH=����&���Om�k3��F�B���8F��;@*	��c�Oy�=kWڅە 3�ANI��*���v�P�-�ast�$Hp�	As�2���1E,ځ
ԪGE�'i�he��]iSǼ�jv�q�P�r��
�/Y�	e-�ڦt	R5w�gfI�;&�Im�J�m�qk�ۦ�w��4����BsȠ�WM��	&_�
��/�1n�;z�_$�	8�H`���# pD�H��	8�|3���h2�oF�����)���e>����}�H�l>��L�B��V-�}u���Ҿo|ڵ/�l��|����"��o��]�}�H��SwǗA���s!����8���0��3@j~y�Ӈ��
��4h����>@"���)J��_9]�L;�nj�q (pD�H��	8"G$@�'����Mq���Xi��}"�0��3�]A�S(�~	 @��@-$M�6
W�3�'�79��+�O�qOh\�O<
`��xT�OHp���/d�g�4
����"Gl�Ո�������f�+)CO�'�u�*c'�TM�K�h^�<� �uW������hzH��ʇ��ڸ�q풁|��	��v�AM��1���|B�2�t3X���b��hWr��s�n���ZLwp�O�~���8 pđ��	8"G$@���# p�C��R��~�O
�xD��s���M�*�|�{oW�C;]���Հ��l��5���)��^�^� #��š�N�v�97>
�t�m
aϿ_
����k{�bW%p�@ݖ����C�>۩��`���ͤq�ǽ��;�~��>��iC�ZX^�[�H�f�alsX'�0M	�_I��~9���'}��~{���.��@6��2�,h�PU@�U��൓�)��U���CH�����
��  �_���\������f.��*@����/gN*��C-�{�g7�H4��ɼ�ko�r���?_59�����]b�U/_�kp�)m���/�q����T�oLZ8D�88"G$@���#`ܘ��*s>���ʧ轎��I�{��`����>@��1�%,<v�L�躸J^�8���
l�/i��� 5[��~냍���vo��h$��+vb
���y;�ţ�%�/鱀��M:��Uե�ͤ��帧M�0 ����g�t���+�g��*l�n��4�[H��@�o��BB2�����,�p̨z�Q�&k�7	���]���҃�=��ɅO+�R�{�1�~	8(3�u�Y�M��q �����Q��T�U_]�컋!��R5D�	5�
$k��,������7k�퍦�M$AgƸ>��`3�5"G
��# pD�H��1{Hg�[��0	��˖\6�%��Hqx,O���af�l�x���t��!
��b��[�WX�7�w�Ny�Z�.Zu�C�T��k����qh�_|k������j~�Q@��n�2=A���6-�kϺ��"��-R���g�Z����P���v	�\��͹8f/�-��K�p��[΃�:%,A�L&�S�&D�'���M��s��>A'�����F�Uf�`����J���vQ8��]�����6"�?����_޽C�$�n�����\�B�������a�����#�¬����#,�5D3f�q����# p,��'�?�'���޷:��0�+n�֚^vx�] ��f45b{�=6v�=N�WxG8£�K��3�k�t͒�]�	<gr
����4�
IE�:?$X*?���j^{v����G��O&���z�ܭ�����-�:-	5��Q�TC�5Ķw����X&s�Ɨq@���;�`e�,#��巣��&�!��=dKd�aOKa[Jlr7�Wr��Ќ�x@���z>�-F⛛./������復���Ou���{~�#q��R�y��B�+xۂ���J��P1��
��!%��3���/��`�� >���\^d�G���/�N-�^�������Zv�P�#���Y��"h����o� \�[L��u�gH��z�~]�������()��`+����8P�����S��~�3������OY��((�����M�y���~�;�H�}x��9��2SwG�
�9�M�\f�/�A���1�n~���p
���S�N�<�p-��@o�.�-�t�>0�-���[��\�_g@�6�� ���nY�N��a	.�B|�9���>��.�N&h�D[/�3������ o�L��59G��0>�*�Z��;"��x����}Œ�.�Q���ٟ�����J�|L�Q�G��5�����c̍	>Iէ-}��{�s=�5}����	����_<Գ�����{��ɂ�WZ���g��Ԕ5���~��c�|-	8"G$@�X,��W�E�	���Z�m�����}p�-���o��CC�mȹA'�[�69���~����
��ӎP#�0*)u�Q��D��vi)F�F�4d�An��tÐ˞l���O6�;R��,�:����E�lPǔ��K���:Dۄ�t)��.�k�L�9AO���������qrџ�W�ԧlJߢ�\&�;���߈�2A��K�9D�iZ��yQ�#5��۬|�{�MHD#J��D�\8)���j�u��9|��1~���=�O��=\�V�n�~����'�/�P�X��(��,u���'�0�M����P�Ń�mq��|	�J~yL���1�ާ�{����W��/�������?��o	�]}����u�������ܙ������F�&�*S���\=u3�~N�z�����ߤ�������Yq6�D�R�_/M�w�������E�l��J��C�ǯ���q�!Lw]*Ԑ�j�Λ
�O]�DCBɡB&@�_��f�d���]z�v�a�{��!_��nm������SQn���oM���k�n[�qP���3<o�U�eT0���E�	b'`����"��>.��)#{�>�o���Cz�!�U��&�6�~�߃J��e�تI]Ӻe9Q�a�.������%�s��j��=��;x����{�DŽ�y:��8"G$@�� sɠ|6z�C�m7�9��V	�^V�zk}4�*HA�ɿ�6��Z��t�F���..�2>�O�t-fV;W�_ٞ���,O�	>��Z|y��a�~萻Bki#@��u"ڥ!
�*�7�!
f�3D�c��k�TɰC�k.��s�Pש�;�C�<����}��R��a0�L;������7L����w5@6J�CD�V#N��X�Fa�곮�8�y�>B	%�:�dH �A���r'@���+�2oH���:�͢� Ӻ]��r8C���`�W�;��ErV�۸r�uE�P;��3*�'J�c�I�zk�R�l����	`O��W�*}�C�c	�|��N��Y�+��U�O�r1\�L���S�Z5�)�������:�aP�l��Nw"�C�ه�f��9K`��>��3�Jgh���e��|�7�I�qN����[ʥ�^�c���7�M�q����=M�*3��+�1q��Kʯ��3!�������Kf�Š6��|��#�y���>_�&�l��ʶ��&��1��_��TjW�`iHCڥټ	,Z��7�֟�����Ԫ�l;���w�*Q�wy����FϜhc����1��4�R�6i�6�h�~	P��6��S�]*��r�3p��C۴�N�B;�G~�g�j!��|h�<W;��
��B�V8-�G����dzͳ��S:[����R*n'�Z���g�'���]��?d��m��1)2�j�2Fw������?�t����f���kڛ
\�H����$�=�@$@���! pD�C�~�q����%n�1O�n�m�拵��/N�a/c>�ϔ�}�vQ{z,p�Q�GD{��~�9 ���)�ߛzn&@��T���>�5��1
偠�0��I�˫\!\r��r�h��������3���>����]�Y7��P���t��ӴDO[5��nA	�]�������a�l��T��2�A��_&\�An�4'':����aOHc�	0 ��	�w޺�{�G��g3�/R��1T�������������0+��ޔ��0R���m柅`�o���*~��_g	�uF���j�ǟ�=���sxpE��)V���U9v��u�Z��������O�=�j<_�>o5�@HP�G���x�#��;�I����
���0�����Q��#zG$@���# pD��ZK�*��6Aa\���n�6�v[K��(Ѯ0�zLI/�j�n�Ю��|y�.��4�q�����E
ص��W�̈́�x�j�q�
{Y����>�����.]�!a[!�i.d&�~�RJ�4�`��&@Sۥ�sy�7�wp�hq=����l��e�<Q�^w�-4��<X$o@��|�:�P�A�;xIl_�����/�O.��g���s��
41��`bY:��q$0pD�H��	8"�IR^,*��V�gqֲ�~6tt�"��KHqXn�Y#o���q��B	sxa���>fy�
y���_��E�ŵ���^�ը��w�X���Q���"
t�lo�ޡs�9eS�R~�ڥ|;������i�6\/�$ʗʿ����������x8_��t���+x�p�+�ި�����$��@<�K�/�:��}������Wk�~��|)q_y��=l`E�	�@�C���
[ɔ�T_߭����a�;iy�
yW�Kբ��d���}����������7��<���f�ø�7�,6�����
p`ܢj�_�5������k����_
�|��}�# pD�H��Q��>���'q��_Ǔ�.�t��-o�\��}]�m�&-�t��-o}d�C�>��r�F���O�|Ӗw8�K��CH����7���<n����~0g���[�I����\�\�W��<��H����\�o�����Ѡ��K�s)�	������~��n�j����̨�oR����kk�g7�ƲHM%��.�z\r���y�&V����V���et���<�N�8�Q�?��B���� g� C]��FC�|��Oq]n�?d��f��`ܗ��[h	�����W�Ю�� �ʖ�㸧�=@v�*+{��&ɟp7�o��u%1g_W�.9D9X����}U���m�(������O�)�x��c��� f�Q��w&�I�^*�NOւv�_�[��3�1i���7my�#N	�8"G$@���# p�Π��QǬ�#Z@�.�ߎ��]�3��%��鎜��ܤ��
&\<‘(_Ƒ���2�:%���GX``
��eQ~�e� y�D"�;3ꗀ�Z�ز�n��E������Ijag]��8�@P���# pD�H��1����q@'@�q6B������>V'�J�	���M�֝��`��\����W��#|{B���̪$�y�4,���}F�>�n���k�-�P��WE�A�tH=�ji��Y'�W;S'QO��QL7����D�O�=@w�����=K��F���R�™?�����Л�Ε�N���8#(p̯/ b,��?P�w��%tEXtdate:create2015-03-11T14:59:12+00:000�i�%tEXtdate:modify2015-03-11T14:59:12+00:00A��tEXtSoftwareAdobe ImageReadyq�e<IEND�B`�css/images/ui-icons_777777_256x240.png000064400000015527150755146460012747 0ustar00�PNG


IHDR�E�r@bKGDwd�ǭ	pHYsHHF�k>tIDATx��{leG}�?g��l�^CKd�*�M��&6JRm�붔M��ފRU�d'Ѻ5@���TʣB��$E�F��"����nDa���WiSR�I������6��Dy��q^3���s���|��s��̙��o~3g~3�	>�G��o��.�4^dL21�L�$���`�l��[��~&+��&щ@�����G�`V�a�g�������'�al�N�X���b0���t�(�P��5RH�&�<�ą��-`����r�2�2�)���Kz���,�$[�Rp��R
s�u�8r���]aj���#z����T�MS$�\Oό��3�!ZP���Y��o��)D�	��N��#Yʦ2�:��)P}��_U�S�2�L��]���a?��szՙ�/l����ljٛ�<�2���ݎ:�+�g/
����@������pxh8�z�|�a��Qf=�ۊ�1f¸��;{���ã��)!)���f�B=�&5�]Ӷ�ߖ�f�O}Ϭ(�0o�Y�03(K�dl1U�+�թ�LM����z{��D@��>]��D�-o��m����u� �����]Z�V�,ˌMm�y�h�U�z��f��i=@]�S؊tT�o6g%�S�B��_qw)�DP������pxh8�4^/
�_�G8Ĺ��{�J�����a� �� bR�<�c��r����� �@)��ϰ�?��zM�؅�jl���*w��V|�}}���C�!4l�t�_`���r�ӭc�0��,@�%6����p-�n�����>(x�h��i�@I��zJҼ�y
ts�Y���@�ee��C뱅r��jm܍��C�&��[�LM�%m{�e^3�JM3�@��Ӱ�X7mkA���"��.�v���2�Mu���ZfPy�
�-�!LU��is���_hxvv��+�3�
����@������pxh8�4����Y��`�>H�Ԁ�E�Z<��hק�Bqs����j�?TK˖s�0��ͬq�c˛��e��\a.��zs�y��E{Bq�"�K��5�>�n5�{�Dn{�D��Y	l�����]ys�x-[�L�qmЭ�q�
`_�X�A*�fLOtL17�:0k S�Y�B>����
��/S�A��]�C���gݳX�:p�:L*�YQN�T����\}=����"��dLM�	��5�-�l��}�0�(��T��T|s�LE4�!;�K���~p��m���
��{˷aʜ��Ǣ�.���J�m.71��8(I��	�:����� �s�d���b�S�Ҟ�^�:�S�)��!"�����@������pxh8���4gW@~=�
&{�K�'jڻ���,��#Vv��h=L�*�}y��L����ʼ=<�n�3Xߔ���_-ҮsS�݄�۾]�=�^�����Tn��f�3���n�D@=0 /^�E���7!�`��)��W[_P��j��lId 
�[����m���ly�6Pga꺠��\�u||��ִ*2l��ٍ�uUc h������iŪ'��cd��d=�zI�D\4���zc��=����U}�	齋$!��T1�H��W[7
t9,A�ll������(Y��:FD�����a�N��\����B�5."P7w#?(c���4^/
����@�1z��I�f /n�l��&t��B���ȫذ� �ʹ�w3Ō��O�DHZ�pU]�g�C'�ׁ,�Yj�lwҪ[t�"���{��OCt5�o՜��w07���ދ���:��A���Yf���ㆽ����ϗW�Sqs�8$������m�����񞓹F�~1o��'��2�:�H�V��BH]޶�[�?��� �P��f*��:�2k�Xe�5m��(�cTp�f?N��0�H�j��r~��V�(�`[�h?��DO�] (�@x��#2�'��Gx�(�`^Tesrf���K�.������#�#l]D`�A���`�Dx&�0F�ౣ��pxh8�4{I�ҙ��������ߨ
�k �ٸ�V�����K�
!g��e�8�Z�}M{��x��und�mn�u�LYs4��<CO�ń��OH�|"�����Xg�d��9�k���-rF3�,"b�����]˅�f�]Ρ*wG�"�>Ƌ����c�6m^��P?��,LD�1DV�2�S�$_`U3���Uf�aQ�����v����F�X"�&!k�֘�D`:G�㊐�(����q��A�O�VP�U
j�(�iJ�l�Wq���K�l�i��3��x���� T!s��XD@��s�9�+��y8�u\m���Y���"�r���7��v֗u-	��v!���H�
���
�4<��@��(B$"Pd�V�Z��Ɯ��	wߠ�����s0k��B�5h$�]�dpϪ�_�@0+�����4@"h�O�t���c�k�Q����i�����c��%�������}�T���C����5��|��j�f���J򭼕���da?L�s��f9�[�2�V�q�����7�;	y�6m��N��i
�b�-��"�?�[�fX���h�E���!�ML�q��RT��DW����*�ZI�hD$�w��{�m�:
~�f�����E㳔�&G�E�Sd�����J4���ye���]�U�/��Vx���0�6ȃ��"X�W�Nj���O�FS��
�������g��c�>����$C�^�xT����@��������)>U.�,-���z����)�E}Z�e��g	����t���t��G@�sK�t�T��k�$��ZK�y�O~���-�Lk���+��@=�2GXVX��`�3�"S�����Ml�r�i�ߍR{wn�'��'8S��j�o��O��I����;tXa�.0N7��N�.����(�O<�	�;���v��ɤVyY����5�(a��U_}���h?�Gx���8�񈦂�Xg��MO��z���!��V.q�įi|��LH���L_F�y�Uғ�_�J�`B]L��"�t����Y�e���M܈��d:u��J�Zĵj��ml�C����&8�s�ךt��﹅����m��6T4��6��9K�)�
%HZߒ�:.՚n�z��
w>
���c�^68#ͦ�1mX֡C�]������[��5: a�2S��-��I��I��\�q#`������pP��e^b|~.��?�=�-5��OK�?��0�9Lx�%8qI��T
��d=\����&'���=n)X���[�8��SDf�‚�<��|�'�O�!��)��6���3�U�a���g}o��sk;�����'�Z9�Z�]HQ�3�3����u��<�cխ_��t�����~���%=��?��r=�r5�)�6ɏ�o�X_���i�wI���I]D��-�� V��G}��-��V��t3����˯��
�g��@�0���)��<HLz�1�= 4�_�C�#�HTo��"�	�4�I�N�γ�}tY���4��$�
�,*�؎d1��5�-�����c\�K6�<��˿�9��C_��fr��E���5~�/�]^S�xX��u5�_<���t_0PA���𶀆�@������p4O"�qGA餦����v�GbQ��p�rz��E�����U
�6����+����]��_*Čj���/��7�>Bn�6B��M��f�����E�-�l�2=)H�x�
V�`�Vj�,&��Jr0���Y��e����T����]������Gx��L��뼪�]�)�is9NG������^WiH6Ͻ�
�`7"Hʬ)\���1Rsv�6Xe��=�N��c	�`�
T�d�=a���z8��M�?�U���U^Wҟ�<0���WK����H��H�A�th���֪���q*S����d�I&���F�B�8�YbI7�g�=^D=�;�@�qA,U�`b]�=oO˷��1�J���1V�R�;��@����x�՘2�Ht!6ɽ\8\'�S��3�6��7�tk�l
����SP��V�أ�~\N��-(;�� m�j��k�s�O�fj��c�����A=�@9�C�'��*B|�e�X�B�d�R�
j
�o�M��s<�C�mQ�h�U�B�’/�!�<��`�_���uq2�U<�G�_���*������:/B!G��!/4��?"�^�1����v3�צE���e��bIT6�U���B�?3U����y�w	�#q��%j��	��2�e!�+�6X�>�!��F=z�o�*��i���k�����k�f����7��빞끛�Y���^��#i�[��.��������.��	�e""��ҿ��~A�~�/��#��]@� R�*��X���ś�s��TG$���ɨ��(<#���5Ќ�T�?͉��<Z�f_k�6����z�pr_�%���-m-��~��0� ��Z�$o��--�U���]��C�)�xs������3�R,V-���)��������4ͳxH��pxh8�0��~'�RK�9�KT�]y��,p��
�grw���μG}��d�g9�ug�l��3J-�Fhp��R�A:�|�C�<�k�N��DX�����2������+�\u6`>��ym<[=��(�xZ�}W#�N�
��awpQ�M���L`K�qSF�MR�����d�Sij��g��|�۹�I�͡����
��Z}+�c^Ԅ����h���E��^U�x���G�4�c�*�I��O�&'5)�1?�sH�����f5[�����C�P2��c�+���j��]3��e��Ygt,��@�+g-��O��J`e�La1C����YZ���n�]3��*~���:�g�("褿[��1���2��n�2�kY��L�_�|��.�M���y/y/
����({F$��i��=|KA����,%}[қ����d��FYg1�iF�UOQD�>go]����\�z�W��bT�����=).���xY"<�y�@�h�x�Ixk`������pxh8�4^��X���26�*��H!�u$İp�2��1�@:-$#YtX�
���)tX�-
V
"$��i����J�/
98�iC���ﲪiW��T�$^�V
�!d�z��ݞ\]Hc���!���yj�Wt�z�a�z��.�
�l��FCᮙyI
:Tg~��Au��P��2c<�Y�Uf�!��a�<��=I
:�����5�(�+9��b��²�UfX�eH���U�'� PSg�qEjX�Ą��|^�*��t����|�F�N�Y���Jxk`V,6Sw!�4~&����pxh8�4^�����z�AdЊ]��
_����A
�cW"��tO��J&���1��p�D�\r:w\���{h�L�e���QB�!B�;�-��X��]�ˎM�� �]6�	x�o��%ښө�x��Y��9�4
��U=�S?�k(����W�Np�������Ѷ��c�����c��؋��+��67��G�����z���o�ӿ��?������6��k��>����I�Uf8˂��Z���
,�C�H�X��|�iz�6��)�X�0Ovث�����;J�� F�alp��F}b@�`fQ���=�{Ɂ�i� ����<���5P�ŏ�.�_�px[@������pxh82��P�~;���G�Mt��M���-�v@]���ܠ�.߰�	������>��K�9�4}��6��. �/n�:��&"O�'�"�'G���>��P%���R�W��V~1���K�t�Mt1j��D�UlP�%�U��
|^�ӿ�]���C����`��
���_i�/�{�җ�VQd�z16z��f����udO?P���{�f�_?Az��f����_?	o��#�j3���URmU�qmf�h7sIb_��.`8G�.����篘B5nJ�M��4��7sIb4@4���F�Xb)�&���Pq���F�HGI���>.Ql��/�LVb���%	�)	.(����?�V��r�
飸�UU�zX!�e|U�l��_6~�yUY: )5WJ�/��?G��������pG�~/_�1���7lz
D�X�ǭ�����pu���}^���k�س�A�o����Bo
l8�4^/
����@�!��OM�G����۶2t]��ȡ��cݶ5�z-�o;�3�`c�6�Fz�AmǸ�m��`�c�H�<t�b^0a:��*<J���UHE�mN�^��	�GIȃ@[�_��1r��ZG��Q~"����pxh8�4^/
���	?!��P�-d�����{�M&��@��3l�Zw��ags/@��3\�Z�g�B&
�rjD�Ջa�~?�dc�&������v
���H��c�~A��LY�|�)��M�DLf����Q���C������?�	�Q
�`'`�.*��1@�o
0�U����_=jB���3z4W��ؽ����VIf.bF%tEXtdate:create2015-03-11T14:59:12+00:000�i�%tEXtdate:modify2015-03-11T14:59:12+00:00A��tEXtSoftwareAdobe ImageReadyq�e<IEND�B`�css/images/ui-icons_555555_256x240.png000064400000015514150755146460012727 0ustar00�PNG


IHDR�E�r@bKGDU���I	pHYsHHF�k>iIDATx��leGu�?w�KֻI�-��T��i��};�T[�-e$boE�*U��h]��@�J�D6�_$)(j7��	�»����QP��z��B��TlU�}n���6��k��u�}���w�+�{�}Μ�;g�L�<��=�.��`���� c���Ab;�@��z�D��0��3FX9�:0�N��_�B��&��>~�>�
c�;ab�D�߈E���.���B��H!�����6�
C�u�8t�u���I?�!�B��	*�Oz�.[�aͲ��l��B��
��>h>��M,4�R�o�� 1�zzf��^	4�"S��j߱�`�沛u`��M��(�,��7M���
{
ƞi�;�~�:�)�����7�qq�F6g]��$�ױ���t��	��pxh8�4^/
����@������ی2��v،1c���쩳�n�ʾ����~7��	��|wM��~[��O}�f7@q?@��#	e�����.�L�3�n�oF��|�
�T�el8iu{�t�`�neӋOh�mP&��L�v�5��zވ�e����]�lM�ԧ����7���q�X������]
��Wqw(�BP������pxh8�4^/
���G8����g�J�o��}i�A� ����)�s5�����~�aJYT��V����1�pT��V�P%��ت�r�O?ph �*�s�K�M�,�G������f
-��։��C�k�u�u��@��Fk�m�S�0�(�b�\��/Ch����jg�b)(;	z�-��tV��n�
R71�%ݪ-`�.i�۠@/���8�Pj�Y�%؜�Mź�h[���2��
����R	�h7�Yo�8j�~�10*X�t�0Ua���2�^M��a�%��W��W/
����@������pxh8�á�������pi�h�x��Ѯ��B&��=w���w�����n-`r5�Y��Jǖ���0V��\)��P�>����Y�D@���k}��Z@��X�x�X��Y
l�����]�l��;u�l�3e��4��ұ�p����!��bPdm����g�Q�O���c��:(�);	�WA��}(H�W�Y\U��R��P7���Y,]��`�߬('u��	�L��d�T˿��s����f�)� �&�)����0�(�����T}s�LU4�!V;�K���j��s �Q:7�ػ�^{�VJ�	�{Ϸ_a*���Ǫ�����j�.,��TG��y6
��#�v��1f�1i��Dx4
^/
����@�����9��l0٫\�>V���o�/]`Y�����`�����K,v�L��{��|<<��3Xߔ����-ҮsS�݂�۹]�=�޴����Rn�����֟6�>0���Mf{U�*���o��0q��%���U��d�P"�PX�"]���`C@f˫v�:S�E�|�B����d ZӪȰ�g7��U���A�B�T��M/V� k�������*)�h���.�V�{3�(lk�l�{IB%�b��j��5p�PAc�*Lt5�K|�w
��5�P��aļ��~���@�mP@�I�K�^[]R���E�n��We�@փ���@������pxh8�OZòH���͖m2لNT]��my���A9w�n�����I�������:���Jm^�Nzu��R�t�T}v/R��i��&~�Su�	�"��{�=\�2= �ٿ��ˬ�#տɨ��l��:yGA>7��CbȚ����f�J�_}�t2ר�/�-_�d3[F�EW��A"Iӊ��Rן�m���9�|��%\OC%�l�P=2k��dz#�[/\����#�����/��Wn��2o�m��+�L�є�����U�y?��>�#E���*��3��͔��8>K��>�ap�0�6D��9@4����A�g�6c�l�
/
����@ñ�`"]i��K�{����s
D07�ӕSz�b�!䬴[�,'XI��(cO�����ml��m���	k���#�<�t[L�@�9��K��Ȑ���Xg�d���.h�����sV��,"b����]Ʌ�d�].��tG�*�>�K����#�m~���P�a�&.�	�)b���muL��I���fnQ! �L�ü�#鷭m���c�ȱD�uBV�V��D`2G��P�����k�p��AWN�TP��U���(�iJ��ş�6�ȗ��e\���Ն�g�=Nj�6�g�
��t�� �ޟ?�[d�>^K�ߤ,�An"���hf
h6��T�	x������Xֵ$�C�
a�"D0jHM�o���TBfx^"�"�#�r����l,i��p7�u�����������,X�F��cD�����������J�M$"���Ĺ����}江W�o�*��B�5���V��-�U=��-��³����
��E��+x�`�Z%y=�s=��a���3��k�sN��4�lT�����B�Ƹ���h�f!���Nj�H��a?6�B|^�,����/0�rD��F[��5�!m`�
������'$�J~1��o�����fD��x;k ���6�(���j�P��x)�_4?K�oq&[T:E��9/J��0�D�`R�W���g�����^V
���$Y|����&y�eᯈ9���B��R*����ˆ	�ׄ�/j&R�E
��2��1{��a��`7�<*�@������px�]��(A���l=\n�tÄҢ>)ز�o�ӄҿ��t��Zt��G�@�K�t�Tn���FK�Yf�M~���-�L+���K��@�a��,*,�O��Y`�	NK�rw�&�}9�$ߋ�F�ݑ[����	�����@���{z&f������Ϳ�Ӣ��4�9���q�6�ah��x1i�e^ bdM+�@;z�7�m�0:O�a���<��<�i�	V�f�`��~�rp���;����u���6W	8VX��老����%=i�9`�d&���.�O���ʕ�i���dÍhN�SW���E�+����:?��x�56�	V��֤[ϻ�D�K��?jCEk�m#]^��qM�W(A���Q��t;/Ի-nux�0�-6�9�Yi5}�Iö6٤K�M���w�&�|��†Hؿ�D_���/s��q�/(7n���G&���}��l|���_����ONOvK����O�H!�!�g�9�G\�!�s���*��f�|�w�]�U�Z'�W�~q]5���t�
)y�����A��|�Sm@5�g�����������A찔�*��<h�jq !E��O�孁���e��U�~?���1N3��ڶDl*��	y��y���$�8?���şG{J��^S��xHj�g�4D����	b���?���hy
 ��|���h��_~?LTq=���������EM��Ib2����tu������iE"�zx��O��+N�wu���B>n��-�U8/U`^�v%����p� w�G�J�l�yTA��asS�>ge?L�^��D<�k�>_�i�\S�x���u5�_<����tO0PA���𶀆�@������p4O"�qGA餦�����v�GbQ��
p�rz��E��s�s�]
��6����&K������_)ČZ��/���y!wr'!��x!��}E~7C~?C�n1]�C�'I_���2	,�J͞�D\\I�g�,���1��*Q��ǹx�]�~��)�L���Ok�<�"m����k�vsxb��*
���Pa��B�F��+ߐQ!Fj��4��Lq���bSqf�X֘e
�A5YkOد2��?զ��)[l�S�Pҟ�0���K��(��J��H�A�t�&s��Umo
�T&@��oa�q���A�Bf��9�bI7�g�e/����P � �*
uN0�.p_�����{H�s���|�e:��@��-���2�Q�i�.�&�W
��$`8�t��f�&�m�����Sz

sߪ{t��+�ٸ9�u��_�~q�C~���L�Wy���\$�;�W��)W�]q0��	��`�9��!ٱ�b���x�=�/p&z,j�MZq�-ѩ��c�
O�l�s�a�=�/Nf����xH���rW	X�G�5��y
9,=y��D����n��g����6-6y�i��(�De3^��o�*D��g��rX���}��?�'xN�&�b�@���i��E��<�!�i��&��[�Ny���`�n�en��3Tg�ms�[�������I�l��_D/I����o�YS4@�os��Ѷ��
�_f����`?��X�q�y�.s���YV�m,G
�g���3��TG$���ɨ��(<#���5Ќ�T�?lj��<��f�k����s��l���=9�0p?��U6����������xK�$���Z:��C)��ˇ(:�S�/��`o��qM/�e��X�Z�/?W1*��c�sxh8�g������p�`Z�/�Χ���F��;�$p�i�B���O�<ȧ]x��5�ɸ�Os2ꞔ��
ݧ�Z`���&��X�t�岇�~�����7�0�2J�X�)e\��	08j=.YJ�Ql؀ٸ�g��l!l�P�j���I��l8��Ɏ���%�a4�O�+�-�M�1Iy�vV�y^�b�N�-��&7���(d �x�y^�v��!n�~�ɗN��b���C}�>ڦ1�_P�O�
^��Ԥ��!�N<�wc��t�Q���?���b��(}�]q�M�6��g����*��B���HF嬇��i5�	���*lf�ؾT��0M�p��]��.���%2�N@�C�H:��`f̞>���zڱ���^��!��4��tS/<E�%��~��%���	'ʮ�ɭaj������N�z���/����ow�`a���2�V43��7�)"P߳�*4��|&G}��*�tX2*p�~[����t�-��b"�4V<v%�5����pxh8�4^/yt,�w�D�Vx���bP8kY��m ���!��:,Y�@�LxZ�:,Ŗ�K��ﴂ~ZJI%����洡~��w�մ#P�
Ao�)�

�!d�)6
��\]Hc���!���yj�[t�z�a�z��.��j��GCᩙyI
:Tg~��Au��P�,3e��Y�e��"j�)a�<���=I
:��ov�5�(�9��b��¶�e�X�eH�-��}��SƸ"5�pc�PB�/`�3Ʀ5�(0�0ߨ��V�;��G�%���/
�_	l8�4^/
���#/������bW��r���~dg{TC�ؑH�E7=Sw����m�x���u�P"o.9�����6�=4H��1ǧx��G9C�t���"�3٢��o�Qb��DТ�ǁ��-��L[s;���
Kt4�F�T��Gbw�ƾ�?퐛x����j�kZ�m+�Sy�P r}�{��H�����8�q����D��ޚ~S�}C���|n��ފ�0�G=�]��� 	���ӺCVk�_�~���K�� ��,�a6>4=K�e͍3,r�g
'�U��߫�J�� �F�a�q�{i��1 �
0
���w����ڸG��<:�Fx�~?@��m
����@������v@]�]<�ҟP�j�7��4�"���}u�67s����~��WF$��
��Z��.��h���~�o�������xl�⛈<���j�r�{��Q<�W���T�J_U?[��򗏿*L��7��R��RyW�A�LWDt{?�Y�I��w�oO_Q6~���YX�w(�R���m���q^�'��D������ɸ�����5�=�@��+���~���j��yA`O`o�$�L��<B�F0C<�^%�@��?t�k3�}�@����{�^��y��U��|���pS�nĦ�t���e��=��$�v��~`����H_�B���
T#%].Xx��D�ѫ�OR��2����\K"��R\T|��&m����_�G��+��5�B�������/��l���t@R�j���u�x���9�|9�^��#���s�����]�A�k ��2��;~�$ʢ�.�y����_�#{����
�^~CH�ᭁ
����@������pxh8Dc�����I���8�~�R��K�:��z�۲�P���S���2��:�h��=�h�� /#`d�#Fz�C��	Ӆ/`�P�Q�!`�B*rls
���M�<JB����t���(6�:�t�
�A
����@������pxh8v����^@���l!�L��c�3�\Y��A�ֻ#�o���������w{��� d��Wa�{�b����z��N���n��_9L:�J�?n�o�9@� �I���I��)�“��	�DLf�z�a���������?�	�Q
�`;`�.*��9@�k
Я]����zԄ,���!�|z��εx���u\�v!�Q%tEXtdate:create2015-03-11T14:59:12+00:000�i�%tEXtdate:modify2015-03-11T14:59:12+00:00A��tEXtSoftwareAdobe ImageReadyq�e<IEND�B`�css/images/ui-icons_777620_256x240.png000064400000010705150755146460012723 0ustar00�PNG


IHDR��IJ�PLTEwv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv wv U.G�YtRNS3P���/"Uq@f`2�
!<BHK Z#'1S,�4���j���8E���|��������)��Q$�
��b�J��mߜGc?o�h�@^�bKGD�H	pHYsHHF�k>dIDATx��]c۶�H�阒]�K���d��%٫뺮��lm���w]��|�p��X�m�-��}<�w(1$��	;�F�@��%��?����B,Lh{�t���#��T@�/?j�9	m��N� #���+`��`��I�
��_�-s�ʹU0�M��[��
s�4`x��š�#��
�D<�~؀�K��.4�]`��PDDDDDDĈq����Ek@����A�~�*���	!Y���X�`hv3\LX�Ot�J2b�ؓl�QI<��� �6�-X�lֈ�6�H��|=j�`E�iq���Cv:�q���C?�?���x�,�r*t�ݻ}|;kP�4���d�Y���f���K��~[	>�X:+�i����ĆQV9\����e�'���A�tOS�:7��2����YsxM�ہ��B��&���z�>n�C��@��r@�*a�ӝ��%��MFDDDDDD�T�ߖ���H,���E���RU��n
ب<��V-
@�/Nm�թ��������Hw����*�+��#��$o�e�{�% �7\X��ǀ���2��~0��&n��sbA,�D��
�A�V�I��|�
�Og���鴋�	�7�y	7Jf����:_�w^�H	v{/O�9���<���Y�`+�� HRٰ����[��?��
�����=���c""""""F�˽�sG�<*k9c��E�8薽�������zfm��r�1�N������nq�w��&=O�\}K`
#���2��~��L�|?�m>�\�f�͹�:}�4ᦋ���{�)�n[��
�̰E
KY��D�ۇ-��	�+�Kl=�Ӄ��L`љ�|�%��n�	a�	���N�#��5�	(4��?����EDDDD\o�W�Ffq;��\E��_������,���W!%�zE!F�¶.�(USHQ0d�w)T���8#p,�x�B��K���� *�x��X��E�e������
K솎%mK�X~s�FE���~������tdc�a��I���1��Af4��dH��c�G�S�B`��0�wev`����"�{��	�.�GDDDD�,d�O�6�k"qk��Me�fS_����U��KŌ&g~>n� �H�})��L���F%8(�)r���!�[4统qQk�0�m[Le���_�7���0�@>1 X0A��Z���Vc�E�V ���Lt�k�3�EJ��44�Zﮊ�N`rt�>`�˥�	�	�
A��HBLH�@��c���Uq=j������cM����2�s����J��CL�iR �NQ�������0=��Yi�-�|4�V��]��]��B^�ޞ���_H�����$�<�$�	
a����=��d@�	(Z�Ap_�}�~s���:�N{DC>����m�^��ƒ����S�&�, ;�N����&�B} ��<_A��B]H�u��N(B0�{h���1�IK���Ds��j����'��M���8�.�ӫ1�h3�df}mq��	��n�U{��L�o�z\=?@	((��e�|=ơ麄�C�i����1r<|�OO�;�
`�H��p�Qy�zԈu�����Z���V��Ʋ�!�)��5m�C��2�Ly�g�;���֑�R���jW�a@��@V�L�&W���ru=Z
�̥�=U���5}���������7�;b(�����nP&�s��k�4����8�ͥ��0���1�U�W�v�k�18dq���T��ՌE]qH8������G�F�����K���'��r����Or�r�̧��6"fp��T�^3c��"�����n��Mم-�/��W=�tJ,�X�)���{�P
Rm|K��>mX�8v5h��<������_{ꘀ�Y�F�|&_G;&�>^�����W⁃�&�K���(��81�EB@F&��;"L���'wfw��E-6��o&/̫'X�e,>~�ee��|��A����=)	d��Q�`}P[���K��N��˂����/�~)����O[d�O=�3E�l5'Y�$?��7�m��Tzզ.�\��.��` WE���"""""v�)��V���<��K�ZX.Ex�~Ч)��ߚ����W_}�5|��s��/!?��'poդ���tC3����@�Q�)��t��`���b!,dY9�6A2���������/튮���n�t�TK>���#]�L;zq�J��r���²[��\-t�ҽ�5
@�ͷϟ��n�T@��+;�c���Qh�C*���T�ڙ��A<Sku�µb�E
/��$�Z���.e�j�����_ʤrWaB6d���(��S�s[�|���竕
/5R���(�4X�����76��`3|���P�p�'�H~<R?M�2�)�  ��g��Vp��B�n�=�|W�ͬ\��V0_�81Oׄ�Kz||lP_��ω���lxX;ǀ�Ju<��Ng[��]=�(�#]������p�P�a���i���s�f��
V�z�]ౚ����z>�Vr�?�f�?����
�Q�1�T`��} H�k���,{�VZˋT��ϛ�?I̯u�QK�LM�e͆��~��q������y�m0�9�S�;���j�����5 ��i��Q��]7k0�U�ޭ���G�kX����3#���lY��_Цx����j޶9��`�#
M	[z��KuO_z˿Dܭ��*��kOJ�(7��n��\�e�
I�T�ƨ�l�/�U������߶uw�.�~���;#�r��.�����8
�o# 5L��h>1�i�����p��V�M?�/u7��0� X@��L��+M�+�����{��Fkt�{�ŧ89�0`��. ĀC�R+\��/��t�R����;
�TӲ���]�aL���|�efđ��	�>�ۣ��G�|�P`P��8C1K՛�A�̍<�2��ۂ��K�r�l@L
L��������8�@�E>`n����PNԍ,��p�����E��Ɔ���Z�FlÎ;���F��7��Ȯ;�
��s�wSz)g7�{r�s��S��gȋ��(߄~�AWytX�$�NV����R�_��<6�p.�O�8�O[�OdDk>_��O�O�}���JS���d��mV�?�W(_��m� ��j��~=H IԁF>T/��{*]IGJ@i��qam�NF|Q�5���0+���E�S8�:�v�`p~v���j:B����p96�o�ys%��������
�|@H�����]��+�@��t]W�k}}���7��Fʮr���A�����B���\m�-�_�2PY8�����x�ՎN�.h�~��@+7��z5������t�_/�����/�?���0�S>��)���z�i0n�/�B����`{D��W���#`����B��o���[,�g��FVЁ�pP߾���C]Bz�� ��,X�����X�fԃ����A�:H�� k�7��d�Z9��oc}o�]�0�vd�:R]�0�ve���]刈����j����у����|
	?�+(��OǍ�+	�#��ys���ߍ�n�p���Fru<��.HȺotM�3h���}��߆P}�������˗��v�����P�}mǀ���?��W��Z@���������}��������@��@��FD�������l�%tEXtdate:create2015-03-11T14:59:12+00:000�i�%tEXtdate:modify2015-03-11T14:59:12+00:00A��tEXtSoftwareAdobe ImageReadyq�e<IEND�B`�css/iptraf.1722265817.css000064400000001304150755146460010435 0ustar00body {
	background: #fff;
	font-family: Arial;
	font-size: 12px;
}


pre {
	width: 100%;
	overflow: auto;
}
h1 {
	background: url(../images/wordfence-logo.svg);
	background-position: 0 0;
	background-repeat: no-repeat;
	height: 64px;
	vertical-align: middle;
	padding: 10px 0 0 90px;
	margin: 20px 0 10px 0;
	font-size: 34px;
	color: #777;
}

.footer {
	text-align: center;
	font-size: 16px;
	color: #999;
	font-family: Verdana;
	margin: 50px auto 50px auto;
}
.footer a {
	color: #999;
}
td, th {
	vertical-align: top;
}
th, td {
	text-align: left;
	padding-bottom: 5px;
}
th {
	white-space:nowrap;
}
th.HTTP, td.HTTP {
	padding: 0;
	font-weight: normal;
	font-size: 10px;
}
th.HTTP { padding-right: 5px; }
css/wf-roboto-font.1722265817.css000064400000007050150755146460012036 0ustar00/* latin-ext */
@font-face {
	font-family: 'Roboto';
	font-style: italic;
	font-weight: 400;
	src: local('Roboto Italic'), local('Roboto-Italic'), url(../fonts/roboto-KFOkCnqEu92Fr1Mu51xGIzQXKMnyrYk.woff) format('woff');
	unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
	font-family: 'Roboto';
	font-style: italic;
	font-weight: 400;
	src: local('Roboto Italic'), local('Roboto-Italic'), url(../fonts/roboto-KFOkCnqEu92Fr1Mu51xIIzQXKMny.woff) format('woff');
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
	font-family: 'Roboto';
	font-style: normal;
	font-weight: 300;
	src: local('Roboto Light'), local('Roboto-Light'), url(../fonts/roboto-KFOlCnqEu92Fr1MmSU5fChc-AMP6lbBP.woff) format('woff');
	unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
	font-family: 'Roboto';
	font-style: normal;
	font-weight: 300;
	src: local('Roboto Light'), local('Roboto-Light'), url(../fonts/roboto-KFOlCnqEu92Fr1MmSU5fBBc-AMP6lQ.woff) format('woff');
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
	font-family: 'Roboto';
	font-style: normal;
	font-weight: 400;
	src: local('Roboto'), local('Roboto-Regular'), url(../fonts/roboto-KFOmCnqEu92Fr1Mu7GxMKTU1Kvnz.woff) format('woff');
	unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
	font-family: 'Roboto';
	font-style: normal;
	font-weight: 400;
	src: local('Roboto'), local('Roboto-Regular'), url(../fonts/roboto-KFOmCnqEu92Fr1Mu4mxMKTU1Kg.woff) format('woff');
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
	font-family: 'Roboto';
	font-style: normal;
	font-weight: 500;
	src: local('Roboto Medium'), local('Roboto-Medium'), url(../fonts/roboto-KFOlCnqEu92Fr1MmEU9fChc-AMP6lbBP.woff) format('woff');
	unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
	font-family: 'Roboto';
	font-style: normal;
	font-weight: 500;
	src: local('Roboto Medium'), local('Roboto-Medium'), url(../fonts/roboto-KFOlCnqEu92Fr1MmEU9fBBc-AMP6lQ.woff) format('woff');
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
	font-family: 'Roboto';
	font-style: normal;
	font-weight: 700;
	src: local('Roboto Bold'), local('Roboto-Bold'), url(../fonts/roboto-KFOlCnqEu92Fr1MmWUlfChc-AMP6lbBP.woff) format('woff');
	unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
	font-family: 'Roboto';
	font-style: normal;
	font-weight: 700;
	src: local('Roboto Bold'), local('Roboto-Bold'), url(../fonts/roboto-KFOlCnqEu92Fr1MmWUlfBBc-AMP6lQ.woff) format('woff');
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}css/phpinfo.1722265817.css000064400000000771150755146460010622 0ustar00

h1.p {
	background: url(../images/wordfence-logo.svg);
	background-position: 0 0;
	background-repeat: no-repeat;
	height: 64px;
	vertical-align: middle;
	padding: 10px 0 0 90px;
	margin: 20px 0 10px 0;
	font-family: Arial;
	font-weight: normal;
	font-size: 26px;
}
h1.p:before {
	content: "Wordfence System Info for ";
}
td img { display: none; }

.diffFooter {
	text-align: center;
	font-size: 16px;
	color: #999;
	font-family: Verdana;
	margin: 50px auto 50px auto;
}
.diffFooter a {
	color: #999;
}

tmp/.htaccess000064400000000017150755146460007155 0ustar00deny from all

images/forward_enabled.jpg000064400000002353150755146460011651 0ustar00���ExifII*��Ducky��http://ns.adobe.com/xap/1.0/<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c061 64.140949, 2010/12/07-10:57:01        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="xmp.did:9BEF4E23D27711E0ACECAA4D68C95F83" xmpMM:InstanceID="xmp.iid:9BEF4E22D27711E0ACECAA4D68C95F83" xmp:CreatorTool="Adobe Photoshop CS5 Windows"> <xmpMM:DerivedFrom stRef:instanceID="3B8E77C943C1E2413EA9AC837C75B35F" stRef:documentID="3B8E77C943C1E2413EA9AC837C75B35F"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>��Adobed����
#%'%#//33//@@@@@@@@@@@@@@@&&0##0+.'''.+550055@@?@@@@@@@@@@@@��"��k1AQ#�!a���Bbr3Cc�����?�e�Ԅ�)&P������f��)�n��ے��sq�\ϒ߄tFN�n��י��ƥ���#r�֋6��&�&IR�")�"^����R�*&P�M0�m}Ϯ��iS�����8u����images/back_enabled.jpg000064400000002377150755146460011113 0ustar00���ExifII*��Ducky��http://ns.adobe.com/xap/1.0/<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c061 64.140949, 2010/12/07-10:57:01        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="xmp.did:BB3E9860D27711E0A101C48DDF63E0DE" xmpMM:InstanceID="xmp.iid:BB3E985FD27711E0A101C48DDF63E0DE" xmp:CreatorTool="Adobe Photoshop CS5 Windows"> <xmpMM:DerivedFrom stRef:instanceID="3B8E77C943C1E2413EA9AC837C75B35F" stRef:documentID="3B8E77C943C1E2413EA9AC837C75B35F"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>��Adobed����
#%'%#//33//@@@@@@@@@@@@@@@&&0##0+.'''.+550055@@?@@@@@@@@@@@@��"��j1!a�AQ��#2BbCc�����?#	cI-
PvUx��e:f�ې��a�h6F���T�nݭX�6LQ�
|a��ŎB��C��
k���1rp�%�d�t�8�b726���p-:k�
gڊ�lj\DA���K�ϷJ�r��m��Nu/7�}:R��2箻��]�<iJP��images/loading.gif000064400000004761150755146460010142 0ustar00GIF89a�����������ర���莎���Ȝ����ب��������vvv������hhh!�Created with ajaxload.info!�!�NETSCAPE2.0,�  �$AeZ
�<䠒�ÌQ46�<�A�
��Ha��:��ID0�F��a\xG�3��!�	�O:-��Rj��TJ��*		�
t
��������~�"ds]�
�)t��-"�i;H>�n�Qg]_*�
�R�3��GI?
�˴�v$ý�j3!!�,�  �$�0eZy�0��q ��P�УW�)";�qX�^�D50���	Ո<H3!��k-na� �(�i���d�$P@yw`�J��#
?�
y
�����o���g��
f���'8��{'Cp`jn�"�
2�{�`x�jy�4�C,�4��o#n�$��ß��!!�,�  �$� eZ�$�2����q���ҢE� ҉�p$H@D/���G�DÄj8v#��P((Dƶ�� �N�(3ܴ�#y�(@	gUx*
kK�)?K

���������$��"
�*���K��
�W����x��?�G��#�Wк��n�h�K,����+���*!!�,�  �$ eZY$1��Q(c����Ң�O'"�������� 1
��q؍d"�A
�V�x8p��4988MRC�@	e*3@
iI�)
'
?I���@�������,����#
�����5�,�����"�E��z�?��@�E���@�����)�����*!!�,�  �$�(e�$ÐĠ�
C�E1
	;���('2$��!��DS%!����)e[��TE50�p�Ũ� �F�
�{V8,�%`3
gI�w�3
���*������h�"��)	q4��)#�g��#S�$��"�$
��>��%�`���r�J{
1���$ʈ��!!�,�  �$@e�6$��Ơ��`�3*�=��
��� P�\"F�����`P�-����d5V�"�2�|?n"!(
�����)e��4xyc?		
��3������
�#wyJl%
o�^[b_0	VT[0m�
$�4�>�'VZ
�c��3��$X���%!!�,�  �$`e�����:D3
�H0�,'j0�Q�s��L(2HM��j#�ȉ�B�\O�i`u��=Y���EVL=I		
��>������
�suIWJm|	\"_�b0B��cV"d]*K1"	H|@B?�I4��#�S$�-|�|!!�,�  �$�4e��a��:D�h�����I ��/�K�$W-�	0(`3���F��=��pf@�t�Q����
{f~*���y��S*mg)	�enu		E^Z^	g@	kw(b&	-w#"�xW"�t
#�#�%U$�`�t�o!!�,�  �$�4e��a��:*����1����v/�Kd��z���<�p6%tP5���S|���H(�F���c���`05xz*|~�v�G�0t#
	Fh�0
#Cd
1
�I�#(i	-��	�	uEL	q��"	h%�$�$<��q!!�	,�  �$�4e��a��:*����1����v/�Kd��z����p6%tP��t����5ũ3��n��G$�
�@a���wy{hoFS>k#	FY"�%E
Cb
A�I4$	(z�:2��
mI		L�l#�#
�F�#�#�>�F!!�
,�  �$�4e��a��:*����1����v/�Kd���V�tKG��22��7�D"����$)����Q����qp8y
l
|~���6z�w2j#F
�"	�%
V�C�
]�6a$�
Q�:2	\�EF	I�&�x	�"͓�F4$�]�#�x!!�,�  �$�4eZi䠒J�16�<���B�
�?$r��T�HzDP'"l�(�1�5�y���8tg���p,�q�M��*		
q
��������"}�#	b?y{		{)�s	-s�:�9>e�E,C\3
��^�3[�
������S��|���?!;images/lightbox-controls.png000064400000006236150755146460012224 0ustar00�PNG


IHDR�2*j��tEXtSoftwareAdobe ImageReadyq�e<@IDATx��\kpU����$3�$�L ��q��w���A�,�TPB�@"�D��
Ft-�u]��Z���G�ŔD�u��Ԭ�#�@�<����b�LOgf��Nu���s���w���۸ X��	��g`�±\�ñ�[	~�R	eL�XlH8�1��`�%��Wd��^E�*��^E�f�*ɚ"
�*r]
'�~�"�J���x��|���//[U�J��J��m}v�9}�,/!h�~�a��^x��r�.{��F�d��ʭk�
b�ݰ~C���=l��d���ҕ�I����x�SP>����+_(�_s�Y�g��Y��a�\vW��,VKE\|\��Aμ0��	�0,le�1�g�J��%$&�cbc0�e7&��$��l웒�BvuuaZ����ѹ���îޠ_m��&��
z�͛��O��|Z����@[[=ڇi%x���ur���|����(�B��y�KC�Y�P�\��<Q��b,�*���;nܸ=8ȡC�f†R�*&�PbF��	k2Ge~��Y�F�y^�V'�a"A�MFl�}�6F�`�~�{��v���Ҏ�ܗk�ۗ�Z���V��~��R�/����;^_��o�'l-999�:u����0��/��acǎ��[
����uZ�d�р����&��1$��Rc���$�f�U$E��&�-X����C����Gλ{�~�;��d�G�q����I�A﫜�􈸯��/�5s�%qH�M�Da��?�3>��U5��?����
��ե�Ν;ۀic0��:�N��g_#�5���R�0y��#G����y5��d6]|��/�d�B�����].�gk׮�ڷo���k���:u*�m�6grr�H��:�vJ!�p���}N�eB*ĉOAb37����ݡCkkk�Ն��u��jqp���/����!�G����>�f͚���Ib_&m޼�f�,�F4k��ꫯ���6Џed�e�Ν;�p8>�R���RUcc�$�R�W���z�,���A�%Ph�a�;iҤ#������Q�����<��^���m7���,B	���f�ErfժUo��b�0(|y']��{^.�� �1&�sr  ��=00
G)wz޲JI9��4tvv"��.^����˗�UXXX����r����F�]��h�Z���߆��P
j���+V��
������.�:y��"h9A����'�Ίʠ�g����F�)��_�t��7€o���[w�~P{?�ňu�]�vM�2�jE�Ͱ�-��U��6m��C��h�����-�o�|�}�F�S
b���e�: ��ǯ��D,���*�c#
^P\�m��uV�;��~����&f�	�h<4R�����5`E
��p���=��~�Q?�m�X�CL���b�/A�"�(�UD��7�=E�*d4��@���I	Q$��y�v%%^<����
�\͇ؾ���ƙ�'�Ԍ�(/�Vp4X�῔��b���Q?�|@� �8F)xa�S�E �����=6���Va��yu!�T_���6�DY؀|yd���K3}H	Ap\��4�w{�{�����;X|\{f��x���G4����3*M�����&�,_����.=���r��i��H�x�9�9Dn���62m�p�^�?U��<�>���zS^��l�6Y+8Ӝ�|qRz�����v��t���B9�&$$h)
���Ʈ�����#f����Z�)�r�����hoğ��0�oɠ�]��3�Z�-q�Qo8����i�`����������[r�ͼ!S��C��C����u�v�v{	׊nE�y�~ 7�y��ו�դO-\Iz�)�j���4��	��Ca��h�������	��qIxI9j���jrx��9jR=VE�<���e�8M�o�}(��S�j�Q� ޶��Q��q����S�s�pI��-k�=�C�/�SE$�'>Ɇ�
V9q�W��u��67I��!W��ϥ�#ɑ�q�=����l�OOK��2,��o\�]�2�
��BET�
���̙s�E�n��j�zq�a��9�����;���^�dI�+���$I+L�m���Yi�
ض�0�!hK�[��=(9���E��u��X�Z�y�_�o�tƘct2�WI�"%;�J����fz�׃{Ч�D�}�ɬY�;��S�N���[q�O���	>�e��m`�)YYrLj޷�k�Xd�vfX�G@��_\p���s�͕�i�6DP�MHq�5ԌO`�u�gg��XF���V��䇭M�c������_�4��kii!gΜy#$V�+�gϞ�8*kT��v̘1��̙3����PX6������������^W	[���֬O��Q�|�[B���
�=�c�P�e0��y�^㥴(F\��.`III5�����3bTߘ1cڋ��jF�}Nj;Ə����\�{!��[�������no����V^f�v��YYYp�F�F|:���d���a���"��'6��XpG���k�r#R�r#�{G���Y	!L��j�UTT�p��j3//�0��h4�����o!�9�l�2{�4/k�[PP�>��"�m�Rk�:�{�d`Go�t�;�ߝ����f��*c�c_�IR@�ӷ<���~uz��k�lڴ��~�^���kjj���c���XWWױ���4q��[�������|(��E&N�| �ޟU�^��S5��T1hS�5�����������r����f����{���w�r٭�����꺏�>
G�566~���f۳g���E�Md��F��+�p���m,��2�h��w,Z|@������l�r�G��E


�����l����S�ݸq�cڴi�@6h�_!'h�����Q��N�%r>y"�N�$�hП�B��:{���$�(�J�d 8
z��t��v^�8�,|�+��
�`�!E8�'���N$l1���}ƞ�b<��V�v����h��P�I���0؍�ja?.^���V�v`���u��Ƈ���b�ɰ����^�.k;��Hd�A�/���Я+�IEND�B`�images/checkbox.png000064400000003024150755146460010321 0ustar00�PNG


IHDR:��tEXtSoftwareAdobe ImageReadyq�e<�IDATx��XiLe~gfٴK9l\�	$-�*�P֣	<��Q	��i�c��x�V%���?��1V"Q�*���4mi��P����e��,�5~�0���,�ۄ_���އy�{��DQ�� <�Y3Du�ň���_o"��@�z�� �I]��M��������7������jf����t��y���u�㖋Ѵ���(��`��ޚ(:\��700`�d	ӏ���޿��ƴi�D�SS3I�q�!�e{G���g||�}�f�ϊ��v�	�%1����ޡ���~�t?>\w\��]��/}��;�K�Y%D'Pfl&�f<B9{(Ř��aZ��Ѭ��͜ $0�	>__����SaD�,�����Ҽ��z��H�����5�^=B�:�A�E��SM�{"����,��7(���d�7q�Ƶ��1G�w���h�]�n3�8ē�'9�w�.�.�\�	n,�w�
��|�/,KT�I���I:�Ϋ��T�5�8Y���D�"&�I�h�/$�j�>yN9����"%�sו����j�����9���.�$�
n/���]�'�x\@�(!ȮH<��p�&�<	7�Xt:]�
��moЅ�K�O�y�i�O.I�D�:)U	qT�7�eT��%333OaEv]*��bz��w%�����ha>��8j\m�E3���JH$*�G��l�x�^�(!�H|t<}]z�^�Y�,U�}�f<3��W�(2%�n�N�-~W�5��6bE�\([L[}w���l�J;U�{�ڭ�7���(��D��ɗ��q����� �bE3����ѕ�V:��x /m���Y�i��;:��"<G��$*����E��~��'�vOaEǣHLT��p�w�j��M�ئ2z��S��c�&����j�.ttE���K?���%sssR�B[�Ȕk��o�P��S��@�������p��-'�K��)8
�6Q6�HO����[G�
Ps[���.�H���
�����8~sY9�*�����
���I��ܷ&�w
kƚ�$5��tvv�?�t�jqz����9z��gh�5M?���j�R�/pԸ[�����H�v�v

��hvrr2�ݺ��[��L�_�����i}�rX/6��N+��w�/�
}h����������U���)���u%$a{5�2���.0��gՒ��%I�����&W��"GHs�c999�Ý^�������EJ���i�3��a���b
�.����v�aD�[,�7GFF.�f1��
ƬVLb����ު{à<?�Ʉ�"����N6�78ɢ��V�۬V��o��wF���nϪ���Y^^^���=O}}}]ee�鸸�F�VD�V�� *Ŭ^��T[[������l6��.��鴲)�����Buu�E�ݿpWF��&z�$QV��h�0�`��z��R"d��je�&�>�fU��M}��?�V��RIEND�B`�images/sort_asc.png000064400000000240150755146460010345 0ustar00�PNG


IHDRrP6�gIDAT8�c`����.Ob6jV
Ŀ�8�R����1���@�L�A�@<jO��c�#�C3�ېj/�C3�w1;)�%�O ����#F�(h�zl-=�H�IEND�B`�images/sort_desc.png000064400000000236150755146460010522 0ustar00�PNG


IHDRrP6�eIDAT8�c`�`������@���c� �DRc�@��ļ����?�����*#OD3l.H�ܰS��P�����
Ŀ���1����k�OW=l-� ѻIEND�B`�images/sort_asc_disabled.png000064400000000224150755146460012176 0ustar00�PNG


IHDR�Y�G[IDAT(�c`�)��ug�6��J��MH�֝�w�߹}G�"�;s��@p�F��#*�t��"�;���@p�v����މd�
��B��	RIEND�B`�images/options.svg000064400000002747150755146460010254 0ustar00<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100.11 100.11"><title>options</title><path d="M99.59,41.42a2.06,2.06,0,0,0-1.37-.82L86.3,38.78a39.34,39.34,0,0,0-2.67-6.39q1.17-1.63,3.52-4.6t3.32-4.33A2.52,2.52,0,0,0,91,22a2.1,2.1,0,0,0-.46-1.43Q88.18,17.2,79.78,9.45a2.52,2.52,0,0,0-1.63-.65,2.12,2.12,0,0,0-1.57.59l-9.25,7a40.09,40.09,0,0,0-5.87-2.41L59.64,2a1.92,1.92,0,0,0-.75-1.4A2.46,2.46,0,0,0,57.29,0H42.82a2.19,2.19,0,0,0-2.34,1.82,106,106,0,0,0-1.89,12.12,37.62,37.62,0,0,0-5.93,2.48l-9-7A2.78,2.78,0,0,0,22,8.8q-1.44,0-6.16,4.66a64.88,64.88,0,0,0-6.42,7A2.75,2.75,0,0,0,8.8,22a2.44,2.44,0,0,0,.65,1.56q4.37,5.28,7,9a32.38,32.38,0,0,0-2.54,6L1.76,40.34a2,2,0,0,0-1.24.85A2.5,2.5,0,0,0,0,42.69V57.16a2.44,2.44,0,0,0,.52,1.53,2,2,0,0,0,1.37.82l11.93,1.76a31.91,31.91,0,0,0,2.67,6.45Q15.31,69.35,13,72.31T9.65,76.65a2.54,2.54,0,0,0-.07,3q2.54,3.52,10.75,11a2.25,2.25,0,0,0,1.63.71,2.35,2.35,0,0,0,1.63-.59l9.19-7a40.54,40.54,0,0,0,5.87,2.41l1.82,12a1.92,1.92,0,0,0,.75,1.4,2.45,2.45,0,0,0,1.6.55H57.29a2.2,2.2,0,0,0,2.35-1.82,107.41,107.41,0,0,0,1.89-12.12,37.19,37.19,0,0,0,5.93-2.48l9,7a3.18,3.18,0,0,0,1.69.59q1.43,0,6.13-4.62a65.86,65.86,0,0,0,6.45-7,2.16,2.16,0,0,0,.59-1.5,2.51,2.51,0,0,0-.65-1.63q-4.69-5.74-7-9a41.57,41.57,0,0,0,2.54-5.93l12.06-1.82a2,2,0,0,0,1.3-.85,2.52,2.52,0,0,0,.52-1.5V43a2.46,2.46,0,0,0-.52-1.53ZM61.85,61.86a16.08,16.08,0,0,1-11.8,4.89A16.69,16.69,0,0,1,33.37,50.06,16.69,16.69,0,0,1,50.06,33.37,16.69,16.69,0,0,1,66.74,50.06a16.08,16.08,0,0,1-4.89,11.8Zm0,0"/></svg>images/loading_background.png000064400000000235150755146460012350 0ustar00�PNG


IHDR((���mdIDATX��ٱ
�0�A#{C����E��A���u�$	P����c��p�ym�r�S[r��s��	(P�@�
(P�@�
(�U`��/&��#��7���Ɍ�z�IEND�B`�images/blocking.svg000064400000006645150755146460010352 0ustar00<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 210.49 180"><title>Firewall</title><path d="M71.78,14.23c3.79-.59,7.61-1.09,11.42-1.53a2.09,2.09,0,0,1,1.57.67c2.51,3.17,6,4.72,9.73,5.82,3.11.92,3.55.49,4-2.78,4-.93,8-2.79,12.06-.25a37.89,37.89,0,0,1,6.15,5c.46.45.18,1.88,0,2.8-.29,1.24-1,2.37-1.3,3.6a3.24,3.24,0,0,0,3.4,4.22c.78,0,1.56-.18,2.35-.21,2.28-.11,3.09.76,2.88,3.06-.29,3.26.25,3.65,3.55,3.09a6.56,6.56,0,0,1,3,.61,6.4,6.4,0,0,1,1.53,1.14c3.06,2.32,5.4,1.45,6.3-2.35.1-.41.09-.85.17-1.28.36-1.7,1.32-2.15,2.47-.93,2.43,2.58,4.71,5.3,7.18,8.11-2.65,2.43-2.75,5.39-2.16,8.29.65,3.22-.2,6-1.47,8.87a64,64,0,0,0-3.37,8.27c-1.21,4.27.17,6.22,4.5,7.18a16.69,16.69,0,0,1,1.89.51l25-4A82.21,82.21,0,0,0,157.39,36c-14-19.15-32.75-30.63-56.15-34.71A82.86,82.86,0,0,0,87.08,0h-.94A87.3,87.3,0,0,0,72.91,1.25C27.92,8.15-4.61,50.53.54,95.86c2.45,21.63,11.52,40.09,27.6,54.79,19.08,17.45,41.74,25,67.42,22.57a13.49,13.49,0,0,1-2.86-6.09,15.67,15.67,0,0,1-.3-5.13,74.53,74.53,0,0,1-71.14-40.38c-15.12-29-7.76-61.86,7.61-79.94.41,3.25.82,6.17,1.15,9.11a74.29,74.29,0,0,1-1.41,23.78,11.67,11.67,0,0,0,.22,5.23,3.59,3.59,0,0,0,2.55,2.06c.74.06,2-1.1,2.32-2a22.32,22.32,0,0,0,.73-5c.12-1.19.12-2.4.2-4.27a34.87,34.87,0,0,1,2.85,2.33c1.89,1.89,3.79,3.78,5.52,5.82A5.64,5.64,0,0,1,44.52,82c-.05,2.33,1,3.92,2.23,5.75,1.38,2,2,4.6,2.9,7,.37,1,.45,2.1.9,3.05a5.47,5.47,0,0,0,4.86,3.58c2.61.17,3.58,1.17,4,3.84-.67.07-1.33.17-2,.23-3.18.29-4.75,1.75-4.63,5A22.81,22.81,0,0,0,60,126.7c1.3,1.21,2.68,2.35,3.95,3.6,2.89,2.85,3.89,6.2,2.5,10.13a31.88,31.88,0,0,0-1.87,5.65,16.13,16.13,0,0,0,.16,6c.48,2,.27,6.4,2.34,6,3.68-.65,5.78.07,6.06-4a3.29,3.29,0,0,0-.21-1.6c-1.09-3.86,3.86-14.79,6.82-16.79a73.67,73.67,0,0,0,7.39-5.45c3.32-2.89,4.81-6.61,3.41-10.95-1.31-4.07.22-7.08,3.08-9.7s4.82-5.77,4.62-9.88-2.89-7.1-6.41-6.68a25.73,25.73,0,0,0-5,1.6c-2.45.82-4.85,2-7.37,2.44-3.54.62-5.7-1.68-7.29-4.48-1.27-2.26-1.68-2.43-3.89-1-1.85,1.18-3.71,2.38-5.63,3.45s-3.08.7-4.62-1a15.29,15.29,0,0,0-3.35-2.39c-.85-.52-2-.65-2.65-1.3-.91-.88-2.16-2.18-2-3.13a4.57,4.57,0,0,1,2.57-3c1.93-.78,4.14-.91,6.21-1.36A21.79,21.79,0,0,0,62,82.07c1.43-.57,1.37-1.51.27-2.39a7.39,7.39,0,0,0-1.86-1c-3.17-1.28-6.36-2.5-9.53-3.78a13.71,13.71,0,0,1-2.27-1.16c-2-1.31-2.23-2.76-.42-4.34,7.13-6.3,15.47-8.13,22.85.22,2.28,2.59,3.84,5.82,6,8.54A33.26,33.26,0,0,0,82.9,84a4.31,4.31,0,0,0,3.89.25c1.48-.81,1.53-2.66.78-4.21a21.93,21.93,0,0,0-2.31-3.84c-4.2-5.4-3.9-15.93,4.31-20.33,2.75-1.47,5.53-3,6.84-7-1.57.43-2.72.71-3.84,1-6.23,1.93-1.89-2.73,1-3.53,1.74-.5-1.56-1.84-1.56-1.84s2.2-.74,4.56-1.73a19.41,19.41,0,0,0,4.62-2.57c.87-.71,1.2-2.07,1.77-3.15l-.43-.5c-1.65.21-3.3.47-4.95.65-2.8.32-3.45-.23-3.72-3.05a2.6,2.6,0,0,0-4-2c-1.24.68-2.32,1.65-3.51,2.42-2.76,1.8-4.82,1.08-5.91-2-.64-1.83-1.54-2.18-3.22-1.15-.85.52-1.56,1.27-2.42,1.75a28.85,28.85,0,0,1-4.37,2.13c-1.48.52-3.26.9-4.27-.72s-.14-3.44,1.23-4.54a39.08,39.08,0,0,1,5.56-3.49c2.72-1.53,5.6-2.8,8.22-4.47a4.82,4.82,0,0,0,2.15-5.6c-.53-2-1.86-2.68-3.71-1.76-1.52.76-2.86,1.94-4.43,2.56a7.42,7.42,0,0,1-3.8.22c-.45-.07-.94-1.33-1-2.07C70.39,15,71.24,14.31,71.78,14.23Z"/><rect x="110.49" y="87" width="16" height="25"/><rect x="110.49" y="156" width="16" height="24"/><rect x="110.49" y="122" width="45" height="24"/><rect x="164.49" y="122" width="46" height="24"/><rect x="137.49" y="156" width="45" height="24"/><rect x="194.49" y="156" width="16" height="24"/><rect x="137.49" y="87" width="45" height="25"/><rect x="194.49" y="87" width="16" height="25"/></svg>images/2fa-whole.svg000064400000137243150755146460010345 0ustar00<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" viewBox="0 0 589 284" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;">
    <use id="Vector_Smart_Object" xlink:href="#_Image1" x="0" y="0" width="589px" height="284px"/>
    <defs>
        <image id="_Image1" width="589px" height="284px" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAk0AAAEcCAYAAADawICXAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAgAElEQVR4nOydeZgjVbn/P6cqS3enu6dn6dmZmoVicxhFRRjZIsp6FRHBjUFBBOG6C2735wJ6vV5UuMpdEBRRQbjKsChXVoFiX4Z1gEEmzJLZmJme6T3pJUmd3x9VSSfd6ektSWU5n+fpZ5JKpeqtTJ1T3/Oe97yvQFGVWIbZAhwHrAAOAA4G5gBNwDR3twTQC3QAUeAfwBvAM8Bz4WgkWWKzFSVASum1CVWFEMJrExRFwDLMxcCxwNuAA3H60RlAIxByd4vh9KHtwHqc/vM14NFwNLK5tBYrSoFq7VWEZZgHA+cAJwKHAdoUDtcLPAL8FfhzOBrpnLqFinJAiabCokRTdWAZpga8D/g4cAKweIqH3Aw8APwJeDgcjdhTPJ6iDFCtvcKxDLMe+DTwOeDd2Z/ZwIC0SQCDUpJEYgM2zkNTAAKBDvgR+IUgiCAw8iEwiCOe/jscjVjFvB5F8VGiqbAo0VTZWIY5D/gC8BlgYfZnKST9UpJAkpCSJCDdfhScUalA4AP8QuBHUCcE+shH6zbg9zh96FtFvSBFUVGtvUKxDDMEXAxcAsxNbx9E0mvb9GEzICWTeTxqQL3QaBAajUIb7q56AvjXcDRy7+StV3iJEk2FRYmmysQyzP2AbwAXAHXp7X3SJiYlcWmTmFQP6gxCG4RGSAjqRU4P2g/8GvhZOBrZOnnrFV6hWnsFYhnmWcBVuKMiCXRLmx6ZYqDAD0QBhIRGs9CGN/77gS+Go5FIQU+oKDpKNBUWJZoqC8swA8ClwHeBenA8Sl22TY+0SU5SKI2GD0GT0JimadkeqD7gX4Gfh6ORwYKeUFFUVGuvICzDXAj8BjgJnOm3bpmi07ZJFbih56NOCKYLnYYh8TQI/Bj4cTgaSRXdAEVBUKKpsCjRVDlYhrkS+C1wEEASSYedokfaRe9BBdAkNKZrOr6hR+8/gM+Go5Gninx6RYFQrb1CsAzzFOBGYCZAr7TZa6cKPioaD/VCo1XT8Q/dPo8CnwxHIztKboxiwijRVFiUaCp/LMMUOKEMPwF8EuiUKTrsUgw3cxHAdE2nRWT8TkngO8CV4WhENc4yR7X2Msdt7D/EcSWTQrLbThGX3i7ESDf86UJPb9oDnBmORh7xzirFeFCiqbAo0VTeuPGfNwOnAQxIyS47Oel4pULhRzBH8xEcun/+CnwqHI3EPDRLMQaqtZcx7tz79cAqcAIUd9mpkkzFjZcGoTFb8+FKpwTw6XA08r+eGqXYJ0o0FRYlmsoXyzBbgftwUrDQJVPs9cC7NBoCmKnpTBsafL4InBSORtq8s0qxL1RrL1NcwbQa+BA4jX2PXZ5hQz4E8zRfOlWBjSOc/uixWYpRUKKpsCjRVJ64gukhYLkE2uwkPR576EejSWi0aplIp1eB45VwKk9Uay9D3CRrN+MkWWOvnaJTlqdgSqMBczU/9UPC6ZPhaOTP3lqlyIcSTYVFiabywzLMacDjuIJpp530PKRhLBqExtxc4XR0OBrp8tQoxQimkjFaUTx+SgUJJnBU0lt2gn7ngawBf7AM8yhvrVIoFLWGZZh+4HYqSDABxKXNTjuztGc5cLt7LYoyQommMsMyzDNxVnnQKStDMKWROMJp0BFOQeBWyzBne2uVQqGoMf4VOB6cKblKEExp4tKmzc6U/Dwe51oUZYTyK5cRlmEuA14AmuPS5i27Muvl+hDsp/vTivwB4GRVd6l8UNNzhUVNz5UPbmqWuwHa7RQdFTTozGa60JmhZYLDTw1HI/d4aY9iCOVpKhPcOKZbgOYkzpLYSiWJZPeQ/ScAX/PQHIVCUQNYhjkL+AM4K40rVTABdMgUfUMesj+416YoA5RoKh8+DxwOsMtOUulumZi06RrqtC5z6zwpFApFsfgJMCsF7CrTlcYTwUkvA8AsnGtTlAHKr1wGuHE/bwAt3blz2hWNBuyn+9MlA1aHo5GzPDZJgZqeKzRqes57LMM8AngKEG12ku4ixjGFFi4ktHBB5v3up58p2rma3Dx4OCGjK8PRSPFOphgXPq8NUADwL0BLCthbYMF09K+vHXOf7ffdz6bVtxX0vOCsqNtrp5jjNPozLcM8MhyNPF3wEykUilrnCkD0S1kUwRRauJAlZ32UBSeeQGjhwhGfb7//ATbdurrgAqpH2jRLSZ2jzK8AwgU9gWLCqCGSx7hz1VGgYY+dyp7SKghnvPLSmPu8+h+/ZP1vbyjoebNZoPmpc0bjfwlHI6cX7USKcaE8TYVFeZq8xTLM9wJPAGwfSntSMJac+VGWf+0r+Jubx9x30+rbePHyHxX0/HVCsEDLZB44KhyNPFnQEygmhIpp8p5LgIYUku4KDlzcF1kBmR+2DPPtXtqiUCiqju8B9ElZcMG04MQTOOwH3xuXYIIhgVVI+qWkb+i6vlfQgysmjBJNHmIZpg/4LECXbZdNPaRCE5d2OncTwAVe2qJQKKoHyzAN4CSg4Dnt/M3NvPMH+TXK7qefIbZtW97PDvjsecw+8oiC2pI18DzJvWaFR6iYJm85EZgNFC1w8dX/+GXmdWi/hSw586NFOc9YdEubWU5Ryk9Yhvm1cDSS8MQQhUJRTZwNiCSy4EksF554wggPU2zbNh6/4KKMYDrgs+fl9SwtOOnEgsY39UmbJBIfQuBc878V7OCKCaE8Td7yaXA8McWqu73+tzdk/rbfd39RzjEeemXmCmcCp3pmiEKhqCbOAYpSiHf2yiNHbFt//Q05Hqb1v70hr8ep0J4myLnGcwp+cMW4UaLJIyzD1IGToTgNvtxIQXayNiWaFArFlLAMcylwEECvXYwVcwtGbNt2/wMjtsW2bc/z3ZEr7KZK1jUe5FaPUHiAEk3ecRgwDXLERFUTH4prer+XdigUiqrgeHAqEAwWwVPfcsghOe9j27aR6O4esV8+cVUMBpEkh67zfSU5qWIESjR5x/EAg1JSnWvmRtI3lOd8mWWYhR+KKRSKWiIMZK8sKyqjeZTyeZU6160rig1Z1xouygkUY6ICwb3jnQB9VbtmbiSDUmKTUervAvIvP1EoFIqxeTdAf5E89bcf+g5gKD5psLtnxD5HXPnTvN8tVpbwfmnTJDRwr11RepRo8o4DARI1lmhw0MluC+71KxQKxURx07UsA4oyNZfNaALosB98b8QUHkCiu5tNtxa+wgLkXOsyyzB94WikOmpuVRBqes4DLMMUwAFQ/AZfbiSGrvcgL+1QKBQVzRLcQf+gBwPPw37wvVHTt7z6H78cNYfTVMm6Vh+wtCgnUewTJZq8YTrQAJCsMU9TlmdtPy/tUCgUFc0icOpblnoZzb4E04uX/6godTzTDLte1Yd6gJqe84ZMxrRi5WcqV7IafKN3VigUigqnCaDUdRRGE0yJ7m5euPxHbM+TkqDQ2Eg0p2xsU9FPphiBEk3eMC39orYkU04np0STQqGYLNMA7BJ2oKMJps5163jh8n8t2oq54dgSHM009BxRlA4lmrwhkH5Re6IpgxolKRSKyVIHpZuaG00wbVp9Gy9e/qMSWeGQdc0NJT2xAlCiySsG0i8EtSWcsoLoRq7fVSgUivExAKUJyj3gs+flFUzFjl8ajaxr7iv5yRVKNHlEJq1s7YkmkX6pRJNCoZgsnQCaGGu3qdFyyCEjCvImurt55pJvFC0X01hkXXOnJwbUOEo0lRi35lwmR5GOKHkwo5dkjZJaLMNcHI5GNntmjEKhqFR6IWcQVhSGCyZwUgrkE0wthxxCoHko6qBj3et5y65Mlaxr7i34wRVjokRTCbAMcy5Ocd6TgROAGenP/ELUVIJLv8g0+IOBTZZh/gO41/17JByN9Htlm0KhKG8sw9wfp+D3meAMwjSKE9s0+8gjMtnA02xafduoU3LLv/aVnP0fv+DzBfdGpa/X5QeWYR4C3B2ORt4s6IkUo6JEU5GwDHMRcJb7d8Ro+/mLPFIqN/Jc70Hu31eBPssw7wFuAf4WjkbUnL1CUcNYhunHqdP5TzhiadnwfQJC0F+EgeeCk04csa1Ymb7HS0Dk9J9Hu3+/tAxzA3A38DfgoXA0kvDAvJpAiaYCYhnmfJwR0KfYh1AakBIhIIBwGkHtOJoyjb5PSgLCmZ7Moh44w/2LWYb5f8CtOCMpJaAUihrADWEI4ww4zwBa97W/H0F/ETrR4V6m2LZtJUsrMBr7GGQvA77k/rVZhnk7Tt9phaORWqkJXxJqy81RBCzDDAIfBi7EGRGN+E1tIC5t90+SQtIidGZqOoNItqaKNyg4+tfXjmj8+2L308/w+AWfL4otQSFYqPkBiKYSJJEEhaAejQahUS9GvR17cLxP14WjkeeLYlwNIWtoOrgUiNHvW8UEsAzzCGAVjliak2+fJJK4lMTdwrUhodEtbdrswpdgO+OVl6b0/WJMz7VqPpqFRkza9EibBqHRIAS+0R/lu3DE003haMSbyPUqQ3maJollmAcDnwM+A8wc/rkNxKRNr7TpkyNDvfuwAZ0AAh1RE5nB69zZ+ASSpHu9A1IyQIpOmUJHEBKCRqFRL3IWEzfhiNILLcN8Cfg1cHM4GlGrRxSKCsYyzBbgHJz2vTzfPgNSEpM2MeycOnM6EHJFQ6GZyEBzNIqxui59rXFpO7+JdKK5AkIQwhGRwdzfYw7wReCLlmG+ClwH3Kj6zsmjRNMEsAxTw3EXfwVnLjkHCfS6N3I8j1DKZkBKbJygvgYh6KmB0f9Qg89/rSkk3VLSLW10HPHUKDTqcjuBdwD/DfzcMsz/Ba4KRyOvFtl0hUJRQCzDPAZHKJ2Jm6gym0Ep6XUHnYlRetI+tx/xIfAjRt2vWvAz5FHqG9aHDkrJICk6ZAp/Vt85LAZqOXA18FPLMFfjeO4fK5H5VYMSTePAMswQcB7wdZzq2jkMSEm3TNEr7Qmt4oi5LuYmodEjS112srToiIz3KD6Oa00h6ZIputxOoFlzfqesGKh6nP+T8yzDvA/4eTga+XuRzFcoFFPEMkwf8DHgEuCdwz93Bk02PfboQimbBJIEMiMSOmR1h+40iiFP/b5+nwSSDjkkoJo0jebcvrMOZxp0lWWYLwBXAn8ORyOFn+OsQtRk/D5wUwV8CbgYmJ79mQ30yBQ90mZgkl6iBqExT3N0azrGp1qZJnRmaTopJNHU5MaEAuc3axZODFQe1gI/A/5XdQCjo2KaCouKado3lmE2AhfgrJBdNPzzuLTpHod3Ph8zNJ3pQieBZEsRY0PLgUW6Hz+CDpmi3Z6YQBxH37kF+AXw63A0ovI/7QPV2vNgGeYs4NvAFxjmOk4g6bJtemSqILlBDN2PD0G7narqkVK6wXfJFHsm2ODz4UcwTdNoFnq+m3gD8K84wY9KPA1DiabCokRTfizDnAlcijPozCkumwK6ZYpu257SYNGPYJHuLC7ZYSfpq1KPfb0QzHcX0WxJJaY0FelzPffNQkcf+XEXcA2O537vpE9SxajWnoVlmNOBb+EEzoWyP+uXznRRb4Eb5XShM0PTSQFbUoMlK0BZSkJCY67rUduaSjBYQI+aDjQLnWmaNjx9AcDrwA9xXM/V+NNOCiWaCosSTbm4wd1fdf9yxFICSafteOgLdRfO13zUC424tHmrCKvoyoF5mo8GodEnbXYU6BoF0CQ0WjQ9XyqDLhzP0y9U0HguqrWTiVn6BnkaeVzadMhUUZKngRMIbugBNGCv7awiqzYWan6CQtArbXYVqVMbowN4Hfh2OBr5a1FOXmEo0VRYlGhycKfhvojTl87I/qxfSjplKrPaq5DUC4357qBsm52YdLhEuZKdqqVY3rSQ0GgR+vBFNwDtOCEP/6Wm7RxqurVbhilwlrv+BJif/VmftGkvoljKZqam0yJ0bBxvUzXJpkahMaeEHVpaPE3X9Hy5Sx4GvhqORtYW1YgyR4mmwlLrosldVXwBjld3dvZnfdIJSi72tNkCzU+dEAX1xJQLaU9av5Rst4sbt1UvNKYLPV/OvN3A93Finmraa1+zrd0yzJXAL4HDs7eXqpFnowGL9AA60CNtdldJo3euy49Ocb1M+RA403bTR07b2Ti5Sr4fjkbaSmZQGaFEU2GpZdFkGeaxOMvY3569vd/tR8ezUrYQZMf87LKTBQ+j8IrsQecOOzEi1UCxaHDFUx7P08vAl8PRyKMlMaQMqbnWbhnmPODnOKVOMgwi2WuXrpEPp0lozM40juoIaExnr3U8aAlPEngKoEXotGg6w9aMdAGX4bidq0OljhMlmgpLLYomyzAXAz/Fyd6dYVBK2os0DTcWczQfjUIj5a6kq/Qe1MtBZ5qQ0Jgh9OH5nsDJMv7NcDSyueRGeUzNtHZ3Ku4CnIaeiVuygXY7Rbf0Pid32sWcQrI1lazoLOHZI6Q2O0m3xyLQh2CGptM0crntC8DnwtHIix6Y5QlKNBWWWhJNbgHdbwH/j6yVxSmg3eN2rrsr6TSoiqDwdPC3l4PONM1CY4bmG77arh/4MXBFLRUIronWbhnmATilN47N3t7l5rsolxGJD8F+bqOv5Ll5P4KF7nXEpM3OMrqOoBDMEr7hbucUToK3y2qhMLASTYWlVkSTZZjvBn4LHJreJnH60Y4y6UezB2uVvLAmXZsUyme6UQOmazrTRqZ5eQU4PxyNrPHCrlJT1a3dHRV9AyeALZje3i8lbTKZU8eoXMhent8lbfaUkeAYDzqwwM3JlHSLEXvf3EfSJDRmab7hU3YbgAvC0cjDnhhVIpRoKizVLposw2wAfoSzujjTZOLSZo+dKrvyJbPcBzvATjvpyVThVCj3Z4AfwSxNH54k08ZJUfC9cDQS98ay0lC1rd31Lt1EVqB3eiquq8xHH+kst8Cksr96hQbMd9MLSGB7mS//1d3G3zhyyu5q4FvhaKTfA7OKjhJNhaWaRZNlmMcBN5BVPioF7CkT70c+BE4/VOf2QzvsRElWQReCOjegXeAM7nfY5SZJh2h0B57Dpuw2AeeFo5FHPDGqBFRla7cM83M4qjeToDIubdrsVMWUKpmt+TLxN5UgnHRgXpZg2mknPQuqnygNQqN1ZIqCV4Czw9HIKx6ZVTSUaCos1SiaXC/95TjxS5lRRY+02Wsnyz4tSrbH2wbeqgDhVCcE8zQnrCGBZHsqURG/88ysZ5WLDVwB/KAaY52qqrW7aft/A5ye3mbjjIoqsSBuejUIOJ1Vm12eks+PYJ7uw48jmHZVoEtcw2n8zbmNfwDnoXF1OBopx59+UijRVFiqTTRZhrk/cDNZXvokkjYPVxdPBh+C+RXSL4XcWCyBI5h2pJIVM8CHUQeea4BPhaORNz0yqyhUTWt384XcQlaSyn4p2WVX1s03nNasB/mAez3l5LANuakSNKg4D1M+QkKjdaTL+T4cr1NV1GJSoqmwVJNosgzzPOA/yfLS97oDtkps1dnCCcrTa58djlGJgimNhvO8GhbuEAO+FI5GbvDGqsJTFa3dMsyv4aR618F5eHdUUQHc7JUUNs4Sfq/jCTScxp4OuEwi2WknyzqGabz4ELSODHTcAnw0HI0855FZBUOJpsJSDaLJMsx6nKSvq9LbyqWvmSoaMNfNqg1OAuPdZTCY9iGYrfky2bf73JXGlf1rO7FOrSMX2dwEXFgNq5MrurW7tY5+A3w8vS2B442phod3NvXCaWBp96eXK1cahcbMLFds3M1iXh0SdYgWt5hyViMZAP45HI381jOjCoASTYWl0kWTZZhLgDvIyupdDV764WR7dCRDi4JKfYUCmDasbylHD9hU8CGYo41I7fIy8JFwNLLJI7MKQsW2dnd13O3A29LbYu7Du9KV+mjowKws96fEiXXqKFGAe4Nb1DE9MrJxPHqVmgtlPNQJp/EPm6v/NY7LecAjs6aEEk2FpZJFk2WYJ+GENUxPb6u2B3g2w2NvEkjabSeDebFbhcDNsJ1VVLwSY8UmQrZQdekAPhmORu7zyKQpU5Gt3W3ofyIrs3d7FU3HjUW92/D9Wf99vdKmW9oFL7+i4TT0aUInKHLPt7eCViNOBR3BHE3PuPddngE+HI5Gdnlk1qRRoqmwVKJociskfAcn/5IGziBodxkHSxeKfEkaE0i6bJseWfgknRrQJHSmaVqmzy63pKDFJDvu1cUGvgf8pBIX2FRca7cM8ws4eXQyDX1XhQcfTwaBk6CxZZh4SiLplTZ9UtIv7Uk1SB+CeiFoEBohoeXcJHFp0yFTZb98txjM1HRackdNW4APVlpaAiWaCkuliSbLMIM4mb0z9TcHpROTWE6LTIqNH8H0YaWVJE4fF5M2cSknXbpER9AgBCGh0TCsD03PDtTabz1X8w2vYXcz8NlK89hXTGu3DFMDrgK+kt5Wiw19OGmXb7PQhntCkDi/0SCShJQkkdg4QlMiEQg0nGk/vxD4EQTcf7OxcaY+u2Sq6mLFJkqjO2rK+oV6gDPD0cj9nhk1QZRoKiyVJJosw2zFiV86Kr2tklfHFQI/gmmaRpMYUdSbBJJ+6fSfCbL6ULcJacIZvftw+k2/ENSN0of2yBRdtl2zz6tRVtc9CZwejkbavLFq4lREa3dHRjcBZ6a3VctKg0LiQ9AoNBqEoG7Y6GaipJD0SUnMHXXVZjPPT50QzNX82WkJEjjlV37vmVETQImmwlIposkyzKXAvYCZ3lbN8UsTReDEPDW6A1B9zG/smxTOc6pX2sRVH5phuhsEn0UEODkcjWz0yKQJUfat3TLMacCdQDi9rZwTPZYLAufhHkBzvUegC8ezpCEQDHmcUtKZ1ksgGZSSAfdfxehkJ/TM4pvhaORnXtk0XpRoKiyVIJosw3wXcDcwGxwvdFuFJv0tFUEhqMvqP/1CoLt9ZzYSZ5DpeKMc734/ds175fdFk5uWIOu33A2cGo5GnvfMqHFS1q3ddSXfA7wrva2WAr4V5Y2GUzpm2LLaK4DvlHOAoxJNhaXcRZNbP+6vQDM4g6WddrLgi0ZqBcHQg1O6f4qJU+8WJs6arOsGTiv3unVl29otw1yIk4n5EFAjI0V5InDqBA6bp/8VTj6nsuxPlWgqLOUsmizD/CDwZ6AeHI/yW3ZSeZIVZUFACOblpnTpAz4Wjkb+z0Oz9klZtnZXMFnAMqDs6wYpFK0j69ZdC3whHI2UnVtUiabCUq6iyTLM04DVgB8qu0SHonoZXuoGJ0b0zHA08lcPzRqVsmvt+QTTW8qVrKgA8qQk+CNwTrl5nJRoKizlKJosw/wYzuIZPzh1K9+yE1WXtV9RHeg4oQ5ZuQATwKpwNPJn76zKT1m19uGCyQbeshM1mRNIUZnkEU5lN1WnRFNhKTfR5HqY7sDNZTcgJTvshFpprChrNGB+rnCyccqulJXHaXhaCs9wg74fQgkmRQWzd2RZmYuA//LIHEWNkTUlp4FTQ04JJkUlYAM7cp/5GrDavafLhrIYIrlpBSzgHeBURf1TUGeHVhbmKRQTJpywOTKZ86j6cTga+a5X9mSjPE2FpVw8TZZhHo+z2jgAysOkqEzyeJwGgVPC0chD3lk1hOet3TLMBpyEa8eAM5F5TYOf9XrZOMEUiklxxkCS4wdzvE6XhqORK72yJ40STYWlHESTZZiHAw8CTaAEk6KyySOceoAPhKORZ72zysHT1m4Zpg7cCnwEnAyq19X7ec2nBJOi8hHAp/qTrEzkCKezw9HIzR6ZBCjRVGi8Fk2WYR4APAHMAie54g4V9K2ocDRggebPrle3BzgqHI2s984q70XTfwP/nH7/uzo/z/mVYFJUDxrw2b4E7xiaqkvglAzwzNWsRFNh8VI0WYY5G3gaWALQLeBOv0av986vmkUHZqRsDh5MUK/a2pTIk45gE3BkOBrZ7ZVNnjUtyzC/DmSmKu4M+vh7YKrVfhSK8sMPfDmeYEkqI5y6gJXhaOR1L+xRoqmweCWa3NCGR3ErJsSE4OcNftpULGhZEJSSD8f6WJBUPr+p4EewQM+p9fk8cGw4Gol7YY8nbh3LMD8EZGp0Pe7XlWBSVC0J4Np6H3uGHmbTgL9ZhjnLO6sUlYxlmAK4EVcwJYHr6n1KMJURA0JwV6iewTKIeatkEkh22onslKzvAm5020DJKblosgzzbcAt6XOv82n8uc5XajMUipLSKwT/U+8nPtTMlwC3WYapbn7FZPgxcEb6zY31fjaoxTNlR58QbPCrJj5V+qVkt53M3nQGThsoOSVtZZZhNuMkXQsBbNMEv63zqxUeippgtya4tt6fHaB7LFkeV4ViPFiGeSbwnfT7vwZ9PK8Wz5Qt3cr7VxB6pU27nTPV+R23LZSUkrW0LHeyCc7I+9oGP/3qflLUEBt0jVtyPatftQzzk17Zo6gsLMM8GLgh/f5pv879KrShrLG9z+xTNXTIFD25JdVucNtEySjl8OT/AaeBk/nzt/U+OtRcr6IGedqv85g/50H3G8swD/XKHkVlYBlmE3A70AgQ1QX/q0IbFDVGm51kYGgxSyNwu9s2SkJJRJNlmCcBl6ff/yXoU8krFTXN6jofm4baQANwh2WYLR6apChjXE/9DcBB4Hjqf1PvJ7nvrykUVYcEdtrJ7DCHg3A8TiXxwhR9mGIZ5jycatsawIs+jYeUO1lR46SA6+t9fCuWoMkZNS0DrgM+5qlhinLl68BHARCCvR8/g08aiyZ1IJVyojg88cQTrF271mszaoIkkl12kvlaRsJ8FKeNFL3iQlGVmav87gVOBNipCX7WEGBAzcopFACYKZsvxRPZLt/PhqORG0b/xtRRD83CUuw8TZZhvhMngaUfYMm3LmHRxZ+f9PFs2yaZVD6qQvOLX/yCG2+8ccT2I/sHWdk/4IFF1U+L0JmpZZwwCZzEly8U85zFniP7Kq5gSgI31PuVYFIosojoGvcGcxy+/2kZ5v5e2aMoL9wEln/EFUwzP3A8iy66cErH1DQNn8/vefkXhWKqdMoUsaHAcD/wR7fNFI2iTc9ZhrkC+Pf0+78EfXJc1cEAACAASURBVGxXSy8VihHcG9A5KGmz1MkYHsJp+EeFoxHlDlBciRvHFGht5cCf/htMQuxs2rSJWCyWs01KSSqVUp5Hl9mz59DaqvLNVhptdpI63Y/uTJwdhNNmLi7W+YoimizDrANuBgIAr/s0XmydwbcuuqgYp5sUTj+hOguF9+zevZs//PYGvh0fpM65Jd8DXAZ810u7FN7iVk7IdJoH/uwn+GfMmNSxOjo6WLb/SAemlFJN1bls3LhJiaYKJAXstlPMG4pvusgyzLvD0chdxThfsTxNlwFvA2eVx011PkKhEKtWrSrS6SZHKpUilVJ1gRTesn79en73u9/xp6CPz/RnHmDftgzzjnA08ryXtim8wTLMVuD69PuBY49iRvjYgp9HCIHf7yeZTCqPk6JiiUubLplimsjEN11vGebbwtFIW6HPVfCYJsswDwMuTb+/uc5HV5nOneu6jq6rlXyK8mCNX+eFoczOOk7+JpWIpzb5BdAK8JYm6D/tg0U9mc/nUzFOiopmr51icEj4t+K0oYJTUNHkdvC/wenwecGnsbbM0/vruo7Pp55LivLgz3U+YkMPr3eQNQBR1AaWYZ4CfAqcRMC/r/cjS1C/zOfzoWnl3V8rFKMhgd0yZ6r5U25bKiiFbiFfB94JEBdwa4Vkq3VWk6iRlsJ7eoXgtmCO9/MyyzBNr+xRlBbLMBuBX6XfPxTQ2VbCBTS6rqNryvuuqEwGpKRT5oTc/MptUwWjYKLJXSZ9Wfr9bUEfPRUkQpRwUpQLz/p1Xh/y0AaBX5cq263Cc34ELALYownuDpR+4KnpWlHDFt7o6OfeaBd3bOjkmZ0xBlIqlkpRONrtFImhRV6LcNpUwShki7waqAd4Q9d4xl95oxUhBD6fb59Bka+99lqJrVLsi1AoxOLFi702o+DcEvTx3dQgAec2PA44GyezvqJKsQzz3cCX0+9vqfMx6JFU1jQNIUTBVtalpOSW9e388uU2NnfnJnps9Gt8wpzOJe+cy6wKmZ1QlC8SaLNT2dnCv2wZ5i3haOTZQhy/IHeoO294CjgpOW+p4Bs/vZokkUjkFU7xvn4OPPAADyxT5GPDm29WpWhq1wR/C/j4yEDmoXWFu5outq/vKSoT15P4X7je/6f9Om94XJ8zexA5FboHU1zwUJSHtvXk/bw3YfObdXv56+Zu/njCYt7RWtTchIoaoE/a9EibJqGB06autgxzZTgambJbc8qt0jJMP3BV+v3fAzp7qiCJpd/vV0GRCk95OKCza6gtzQe+7aE5iuLyKeAIcOJB7wiWh6c+LZwmS0pKLnhw86iCKZvd8QRn3buRTd2q5Ihi6uy1k9hDb4/AXVwxVQqhCr6Am7G2Swge8GAOvlj4fD6VkkDhGTZObGAWl1qGudgbaxTFwi37cEX6/d2BnBWUnpP2vk8m3vOPb7Tz0Pbece/fOZDikse2Tvg8CsVwUjjxTVlcUYgSK1MSTZZhzgJ+kH5/Z9C7OfhioXI5KbxknU/jtaGg8Drgpx6aoygO3wQWALQLeDRQnv3NZBbKXPXS7gmf57G3YrywOz7h7ykUw+mWOUHhC3Da2pSYqlvoe0ALwGZd4zl/dU5n6bpe0KBIhWIi3B70cVByEPdRepZlmEeGo5GnvbVKUQgsw1xIVkf+iF/LnlIoO3w+H6lUCtse28p17X1s7x3kyvBS3t7ayB/W7eTTh8zlvmg7+0+rZ1lLPev2xjhkZghbSt5oj/ODJ6O09ye5Z0sX75ytYpsUU0MCe3JLrHzTMszfhKORbZM95qRFk2WYi8gqindr0FfVldzSKQkqlXjS5qm3enmtvZ9d8QS2lDQFdA5sqeO98xqZF/J7baJiFHZpgkcCOscPZlzNPwHe56FJisJxGe6q47i02VwBOZLSnvexhNP6Tic26Q+v7eKZVfO5+O8RvvWeRfQMpIglUjyxo4v/e3Mvj3/qHZyy+hV+e8qB7Iwn+PHTW9jYpeKaioENbPT7eNPvY6dPp1vTSAE+CS22zdxUiv2SKfZLJgnZ1fFEj0ubuLRpcILC63Ha3Ocme7ypqIB/AfwAa30aUb3K5uXyoGnFzV9SDDZ3D/KLl3dxx4ZO4snRO7n3zg3xlXfM4fiFTSW0TjFe7g/oHJ1IpVMQhC3DDIejEctbqxRTwc1td276/V6Zwu1Sy560931ftTsH3f7m5bYYz+3s5bzlc9i/pY6TFs9g2fQ6Tr9zHSl3hfKnl89lRp2Pf7Q703K9iXL2t1UmrwX8PFUXpCfPQq2kgD26xh5d49WAcw9Ot20WJRwBtTCZor6CaxPulam0aAI41zLMfw9HI29O5liTEk1uY/8sOO6v/wtWrgdmohRqGW6xkcB/vrybn76wc1zJ457cGePJezdy4qImrj52ETMrOG1ENdIrBA/7dU4a8jb9CDjGQ5MUU+e7uCWneqWdXTerIkivLh5NOLU2DAnA1evb+LdjFnPrG3s444CZrG2Ls7GzD2NaHQCPbO3kZ89u5bW9jmiarzzfBWNACO5tqGPjBEvxdGgaHUGNl4PO/0VrymZhMsl+yRQLkymCFXS/DkpJr7RpdISTjtP2zp3MsSYbhPRd3CHRiz6NHVWQYmAiTGU1SSkYtCWfe3AzP1rz1oSz7d6/pYcT/hJho1r2W3b8PeCjb+iWO9oyzJM9NEcxBSzDPABYlX4/bJVPxbCvsIV3z24g4D4bbovsQReCn6/Zytq2OHdE9gBwxTFLADhp8YyMYAJYOSdUZMtrg34hWN3YMGHBlI82XePFYIC/huq5ZlojNzc18Fh9kM1+H4kyfRZmM6yNrXLb4ISZ8C/peplWgePNuLuGvEzDGSt7uFd8/bGt/HVT16S/v7VnkI/evZH7P2zSWl+7/7/lRp+Ah/06pw55my4D7vXOIsUU+CGul6lH2tkrfCqO0bzvTQGdDy6Zxu0bOtnaPUDwPx4H4Mg/vpjZ5xP/9/qI47UEdU5ePK24Rk+QdB9frgPlfEjgb6F6dhchSaoEduk6u3Sd54KO92Vucigeal4qha/MbukEMjvhpY7TBj8x0eNM5tf8pntCXtcFO2vMyzSccqsMfvMb7fwp0jHl42zrHeSLj2wpgEWKQvJQwEdi6O0RlmGqgPAKwzLMg4CPgfPw6ahQL1M2oyXB/M675tE4wVXV337XXJrLJO2ClBLbtrFtG2knkQO7y26QPBovBgNs8ZXmd7SBHT6dZ+oCrG5s4H+mNXFrYwPP1AXY7tMplzu8w05lD08+5rbFCTGhu9kyzNnAOen3a3zlIxa8RNf1shBO3YMpfvDsjoId76FtPdyzefIeK0Xh6RewReR02pd6ZYti0nwdEFD5XqZs8oUtLG4OcN37jMw03Vicc+AMzj9kVrFMnBBpsZRMJhkcHIDXvondvgYpZd6/fSFL/DcgBE/XBQr4a0yMFLDNp/NkXZA/NzbwP9Maub2xnjV1AXbpumd3fNrb5CJw2uKEmOiT/ks4CfaIS5v22nYy5VAOSTBvemMvnQOF1fS/eHniyekUxWWLkNmdzqmWYR7inTWKiWAZZitZA8/OKvAyDWd4EswTFjVzxz8tY/+W4KjfafBpXH7EPK48Zr9SmDgmtm2TSqUYHBwkHo+hvf4v+HbeSiKRIJFIkEwmSaVSOX+2becVU7aU2JT27zW/j36vf8QskkIQ9fl4vC7IzU2OiLozVM8LwQBtulZSETWszZ3jtslxM+6AFcsw68nKy9RZQctjS0WhK4NPlD9HOgE4an4zd54+9Bx935/W8vDHVwDwpYc28ImDZnPUfCe1wF0b2/nQ0hmZfbsGbV7Y1cPXrI1s7xnghbY4G7oGWDZt9A5PUVoSOB6K5qEltF9nCnlHFCXlC7gDz1gVeZmGMzwJ5nvmhHjsjAO5e3MX923pZmPXAAkb5jToHLOgiTOWTWd2mcRPpsVO2sMUfPMy6ttvA0DbdRf0vg55YpuOnLWGxg+MLBmzIJliQbK04jgQgANEks6YRmSnj7Vb/NiyfLwcg0Kwye9jk98HBKmTMrMqb1EyyYxU8VJOJJDEpE3I6T/rcNrkZeP9/kTu0vOAmQADUtJXIfO6pcarlAQdAylea+8D4I2OPv73H21c+PZ5XPfyW2ztHeTNrgHmN/p5Ykc3Pk1wypLpfP+JKI9u6+TA6Q28e24j/+/xzZgt9Zy7fA6NAZ1Tb3sVgMff6lWiqczotFM0DwV4nmMZ5nfD0chOL21S7Bt34PmF9Htn4Fm96LqOQJByR/Y+TXDa0hZOW9risWWjk/YWDQwM0NcXp37jDwl13J75vK7jPui4L+93j57r/JUD7yT3+RMbENz+bB1/fLyBnV162QW09wtBxO8j4oqoBinZL+EIqIXJFC3jyEA/ETplKi2aAL5gGeYV4WikbzzfHdf0nGWYAvhy9gkVozPVyuCTIdI55Izd05fgJ89uQwKzQwH6kzZmSx1zGwLU6xrzGgP0DKb4xfPbeWpHD2/FBgF4YHMHv3h+OwDLWuozx3ujo5wcvQoYGi25BICLPDRHMT7OAWaBM/Dsr4GBp6ZXTkJgKWVmSq6vL07wzctozBJMlUwoKDnnmD7uvLSdVUfHEWXu4YwLwRsBHw801HFDc4jfNDdyX0MdrwX89BZg8Vm/lAwMtb9ZZE2Zj8V4Y5qOAw4ESOZ21opRKHUup719uSOLHb0DPLWjm5MXT+e0/WfQ5K5GOfPAWXzUbOWuDe0MDHOBXn7UYm79sDOtd8/G9sz2rgLHSSkKQ1fu4OV8yzAr4+lUu3wx/aKWBp6VUIIqvUoumUwyMNBP/cYf0tx1p9dmFZw6v+TSD/by81Vd1Pkr5zneownWBfzc31DHr5sbuaE5xAMNdbwR8BGbpIga1ga/ONp+wxnvnXx++kWPtMtco5YXpcrlpOe5cVav38N75zdz1fuWsm5vH7MbfFy4Yh7zQgF+9FR0xP62lDwU7eDq52P87rVdme1l5slVuPRJSQKJ31mItRA4Gfibt1Yp8mEZ5nuAQwFSZTjw3Lp1K/F4fOwdp0Dak+PVA2TGzBnMmjVyZV56Si6RSBCPx6jf+MOq8TCNxvFvG+DXF3TwueumM5D0fuX3ROnUNDoDQyVfZqZsFro5ovZLpqgbx/M2Jm1SSHSn/zzUMsz3hKORZ8f63piiyTLMGcBZ6ffdBZ5brAUmUhl8ssxtGBmUf+sbbfz8uKXMrg9wzUtRZtcHuPgd8+gZTPH3qBM03uDX8LuC66rntvHUjp5MPag05RKgqRhJt20zc6jI6wUo0VSuXJB+0V2GA89UKsV7Dj+86OdJB1h7kevopZdeHiGastMKDPT3OVNyVehhysfy/ZL88jOdfOGG6aTsqY+MF/kD1E2bRqK7m67BAdrH/krB2Ktr7NVzS76kBdSCUUq+SJy2OF3k9J9jiqbxSMxVQBCcNAPJsmvulUGxczmZLcGM+EmzO57g0W1OnqXb3tjLrW+0AeRMzV19/P6cvGQ6AA9+bAXLZzWMOPbyGfUjtinKgx6Zk6ztg5ZhzvPOGkU+LMNsJCvzcE8NDzzLqQRV9iq5gYEBlgzcWJVTcvviiP0TfOXknoKI2LrmJpg5E/+SJcw68CD2X7Y/B8yYyWJ/gFKH/rfpGi8EA/zFLflyS1MDj9cHifp8JLPuvWFt8ROWYY5ZsX48LoScEZJi8oynMvhkqfdprJwb4tEduUteL3ogwoLGAG90xFnfASfe+kpO0PjlT0X5zxe2Z96v78hdQKALwbELx7yPFB6RwnEzZxWiPA/4N0+NUgzn40AjQF8VpxmYCH6/n2QyWVTv+75ICyZnSi5O81v/yawarUh0zjF9PPNmgMffCE5azApATp9B9rc1nw9aWwm0tjIbaE0kER17GejppSOZoLsQxo8DCezUdXbqOmuGlXxZlEwyy7ZpcPrPRpxM/dfv63j7FE2WYb4LWA7OPHxciaYpU8xcTmcfMGOEaNrU1c+mLkckSeCRbbkZvrd2D7CV0YvznrSoiVl1anqunOkeEk0An0aJpnKjYgaeN930R5588ikAVq06m5tu+mPO5+9970qAzD759sveZ9WqszPvh5MOWyjGIHIs0vFVAwMD2J0vM6v7TyW3oZz47kd6+MiVfvqTk1tLogGprVvwNU9DtrQg8syqCL8PZs8hOHsOc4HZg4No7e3098ZoTyboLZHzMV3yZYdP5xkCbEranNuXKU51AVMRTWTFMqkA8MJRrFxOpy1t4cqXdrO+szApAjQBlx5WJolHFKPS506b+5xx3oGWYR4ajkZe8douBViGuQw4ApzOutwCwIdzwgkfYOVKR+TMmTOHSy6Zk/N5Y2MIILNPvv2y95kzJ/f7w0mnIyi1cJJSIt1Yph5hEGn4MvvHry77pfjFYm6LzfnHx/iv+5om5W1KARsHBqBtN1rbbmYiaKqrw9fc7IioPMfUAgGYO5c6YD4g+/uhvYP+eIy9ySTxEomol3waMSEIOVOUR1iGuSwcjWwYbf9xi6Zyb+yVRjGEk08TXHX0Qj78tw0jgrknw+eXz+LQWSqeqRLolTYtQwGNnwCUaCoPMn1obwUMPOfMmUO2zmlsXDrKfrnv8+03hl7KkA5bKHVCYMnQNF2b7xj2xrZzZGh1SW0oJ845pp9bnmhgb+/Ukl/aQBuStv4+6O/Dt3sXM4Wgsa4ebVoLNOcXZqKuDubPox5nKbDsi0N7J/F4jL2pFP1FElFJ4EWfxtGJjHA/C/j30fYfNTLZMszDgaXgJNKrhURspaYYQZFHzA3x45Xzp3yc4+Y38t3Dp34cRWkYNqj5xGj7KUpOjmhS5KfUuZyEEGiaht/vx+8P4A8E2JR4L5vqLyyZDeVG0Cc597jCp51IArukZENfnMjOHWxe/wbd69djb92K7O4Z9XuivgGxYD4h02TRQQdhLtyP/UONzNc0ggWWIy/6c6TQWaPtB/v2NGU6XuVlKi6FzuV0/iGzkMB3n9oxKY/TCfs1cf37F4+7MrnCe/qlzJ6iW2oZ5rvC0cjzXttVy7hTc+8EZ/qir4z7UZ/Px3PPeX+7pGONipGSYMbMoRqbadHk8/moqwsipcTn87Gn4VQAlvRdV/DzVwJnvmeAax4IER/UirbCMQHslDbEYxCPEdwBM3WNhvoGxPTpiFAo7/dEKIQIhWjEidiW3T3Irk4643H2TNGHG9E1eoWg0bnv3rmvKbq8osktm6JGSCWk0LmcPnfILA6dUc/XHt+Ws1puX9T7NL7zrrl8fnkrSi9VHsOm6M4CvH8K1jYVE96wcOFCr03IkE4DUEzSoikQCAASXfdRX99AMFhHu/YhhBAsjl9bVBvKkfqgzd2/PpdHXpzJk9bDrF2/np194yrJNmkGBOywbYj1QqyXOgkzdZ2GhhDMaEHUj0yDAyCamxDNTbRs3cqeeGxKNtg4sU3jmaIbzdP0dmA/cKbmBtTUXElIB0UWSjgdMTfEo2ccwO0bOrh5fTtP74zn9TwtnRbkjKUtnP+2WWqlXAUzTDR9GPi2h+Yo1MBzUpSq6LkQAl3XCQbr0HUfoYYGGhsb6e/vZy8fREpZkx6nxq67OfmTf+P0885F0zT27tnDQ3fcwRMPPsTLG95k78Doq60LQb+A7XYKeruht5sGCTN9PupDIeT06U7sUxa9Y4i6mcDMmbOgrg67s5Mtvb0M5nEKvOifmmg6Jf1CpRkoLYXO5eTTBB8zZ/AxcwaxhM269j7a+pIkbMm0gM4B0+uYHxqZTVxReQxImV0W4CDLMBeHo5HNHptVk1iGOZ8KmZorR9LxnsXOHp49TecPBKivdx7IyWSyZqfqfPF1JHo3IINOHdJZra187MIL+diFTrzXW9u38+Dq1Tz56KO8umkTHYnEvg43ZeIC4qkkdHdBdxeNEmb4/dSFQtjTp7N3H22rWcKMAw4ANwWC1tjI4s5O1u/aOWLfPFN088PRyI7h+41DNCkvU6kpVi6nkF/j8Dn554sV1UFcSpqGYhFOAa7x0Jxa5qT0i1odeO7cuZO2trYJix5N01iwYAHTp08veu3OdNxOeqouFGrE5/OTLpDnTNXB4rgjnPYGjqZfW5D3WK++9iqRyJsjts9OpZhT5JQKEb+f/mExSD4dZoQkBy9M8bb9UhMKuRC7/oY9/cDMsyibeQsWsOorX2HVV74CwOaNG3n4ttt56vHHeSUapTdVXA9hr4DeZAK6Op2/fdDa0DAyZ1RLC9N37aRj2L428LpP4/Ahb9NJwA3DjzlCNFmG2QysBOe2USMkbyiVi1pRXcSlTdNQosuTUKLJK05Ov6jFPrSrq4unnnxy0t/ftHEjp556KrrPV/TanUKIrKm6YCZMAgT9/f20i9MQQsOI/Yqu+jA9DUflLWL+YPSP3HXfthHbVwwmePvAYFFsBxgQgj837js1zKz6FDf95CTmiwfx2/sWGgB6x2OkUl9F152UDPsKCl+8dCnnfeNSzvvGpQC8+frr/H31ap55+mnWbdtO3C598tI0o9k9WtqAdbrg8CHH2cmMRzQBH0hv76uAvCLVjBJOiokyzKvxfsswA+FopHg9tmIElmHqwInp97XoaYrHphaYm0wmGRgcpMFNQ6DrOgJBqsgP4LRgCgaDJJPO09O2U7SLDxHQE/gDfurr6zNCKxu/35+3vqhPaARF8eqObvfvu66plJJQoo6ueRfQnfw487p/w6z++/d5TH/vSwwkerF9LROumbr/wQez//e+x0XuuV976SUevuMOnn3mGV5/aycDJWwPHfE4M4dv7Osb4WVK87pPQ0K6HMyJlmHq4Wgk56bLJ5rU1FyReMR6BGPxYhYvNsb9nVLN7SuqAxsn/UCd06E3AkcDD3lqVO1xBDg1Sp04M0Uh0HQNRPGyhw/3OAH4fH50XWNwMEG8+VzqA4LpdU1omgByRVNDQ0OWl2qIoJ4iVMRi7e2BQN7zppFSsmL/ZTQ3NzE4WMdb/kuI9S5nUdcvEaPdnTIJnc8j644f09O0L4QQLD/sMJYfdhjgLHJ6+dlneeiOO1jz3PNE2nYzWMTn2l4k9RvepH7hIkQwgOzqZOdbO7FHuZxeIdiqCxalJDht+Aggx2WaTzQdl35RiyOkydLW1sa3vvltDjnkEEKhBtaseY7W1lYAWltbiUY3c8ghh7BmzXN85txPE4vF+cPvf09DQ4hQqIHNm6Nc+o1LWH3ras4860x+/7s/0NbWljlGPB5j5syZrFnzXOacX7/ka9z4h5s45thjuP222zP7Xvj5C7nu2uuYNWsWX7/ka6X/MRSeEpc2dUOr6MIo0VRqhrxMqD60kBSzdieQ40FKT9Xpuk4ikUDTNILBYMajNFxIBIPBvF4Zv9AIFjGHy85Afg9XNse9/wNMm9bC4OAAsViMHnEyG/UZLG3/wejCqeslUq3HFTTpqKZpHHbkkRx25JGA41Fc89hjPPLXu1jz4gts2NtOqsDzW9uSSdi8cWjDGP8Vr+kai1I5cU2jiybLMGcDJjgFelU17skRi8W59BuXcPff7gEgFGogFosTiw1lW31uzRou/ueLWX3ramKxOJ8599OZ76ZpbW2lra2NtrY2ABoaQnzmM5/m2WfXADBr1iwAXl/3es7722+73dn++uvEYnFCofx5LhTVSX9uuz3KKztqmGPSL9TAs/CUImwh7XFKCyOfz4cQjufJeZ2nDEieKbv0dm2sJ/UkiWmCTl3f59GDts2xZ52Jv74eXdexbZtUyqaP97DZ/jZLOn+c93taz9qixZGl8fl8rHzf+1j5vvcBMDAwwLMPP8zDf72LF15Zy6bOzpIPO/7h0zhlMCOajh7++XAJmelg+9RU0KQJhRoyHiSANWueIxRqyBEv7z78cK75n2sy+7W2ttLa2ko8HuOa/7mG4447jkceeQQg81ko1MDyQ5ezbt06pJQ899zzxOMxQqFFmc8BDj74YB599FEOPvhgJZhqkP7cB/URlmH6wtGICowrAZZh+nAL9EpQOe6KRLGFU1r8pIVTOjQi7WEaTRzlPRZjOjcmzbZxeIGW1NUzbd48bNvOirsS+Hw6cXEcOxNvMjf2pxHf0/o2kbTtkoaFBINBjjn5ZI452VlH0dfXx+P33MNj997L86++ytaenqK7crboGinA9dWP6D+H/+LvTb9QjX1itLa28tsbrs/ZdvE/X+z8m3d/+P4Pvj9ie/a248LHjfgc4Atf/II7Wkhxyikn593n2OOOHaflimoj/bAOOp14CCdZrcoOXhrejvObMyBlzfrqQ42NU/q+3+8nGAjsc59ix3tmC6f08YtVWmSybPWNHsuUZsUBB2TEXvY0nt/v5OfbY59L0+ArhBLrcr6n9W/BTiWwbTvvdGQpqK+v54QzzuCEM84AoLe3l0fvuotH7r2Pl9/4B9unuOAgHwkc4bQkZUOe/nO4aMq4ovrUXHxZU+y5fUVl049NkEyHehRKNJWKjLe+v4b70ObmZo46+mj27t074e8KIZg3bx76OGNpip3LKW1TObJtHKLpqPe/HyBnqjEd6J5IDDIwMMj26V/F3P3PCIaeJ0ImkH07kA0HFMHyydHY2Mipn/wkp37ykwB0dnTw0B138sSDD/LS+jfY3T++kmFjsVEXLBkK9crpPzN3pWWYdcC7wBmpFjOiXVEYVEoCxWj0S8m0oX7+KOBq76ypKYZEU433obNnz2b27NklOVexczmVI72aoHOMAPB6KVn5kdMz79PeJr/fn6k8kUgk6RMmbaHTmR1bnfN92b8TKc2i2F8IWqZP54zPnscZnz0PgLbdu3nottt5/OGHeGXDRvYOTq7kyyZdg6EA+Zz+M1vKHwr4obbdypPlmaefYe7cuZ6cu5iVwcuBru4uVqxY4bUZFcWwB/a7vLKjBlmZflHroqnUFLp2Z7mzZZzxTPUzczMVZQe519fXZQbdHdPPZmb8HnSZNeWVaEfKsRNclguts2fz8Ysv4uMXXwTA9m3bBGpU7AAAIABJREFUeHD1ap5+9DHWbt5E1zhLvmzQc651Zfab7F8981QaqGG38mRpnT2bFSsO9dSGRCJRlcLphRde9NqEiiOJzA5mXGoZZmM4Gun11KgqxzLMGbiFzp3fv/raYrlT6Nqd5cx44pneftBBo37mzFT4CQQCJJNJ+gPT2RM6jTm9t2T20RKjpYGsDBYsXMinv/pVPv3VrwKwecMGHrx1NU898QSvbd06asmXHiFo1wQzbAmwn2WYM8LRSDuM9DQBamquUkkHRdbKSEuxbwalTb2TiVgAbwOe8daiqmdo4Kn6UM9IBztXu3AaTzzTMSeekHd7dpB7MBhESsnAwACdzR9hdu+tmdgmkeopnMFlwOJlyzj/29/ifPf9G6++ykO338EzTz/FS1u35mSs2j4kmsBp2xbklmB5e/rFgBohVQwPPPB3enuH3Kk+n2+f2WEVtcNgbjtW85vFZ2jgqfpQT9E0raBJGcuNbk2je4x4pgYpOfy000b9PDu+KRgMUldXh6ibTVdD7ay8PnD5ci7+/ve4/q67Rjw3d+QmJM207byepoQaJU2JK6+8ilWrzuZXv7qOtWvXZuJxdu3axZw5c9i1axerVp3NU089BcDSpUtZu/YVNm7cwPe//32uvfZaQqFGYrFeli5dyq5du4nFegmFGlm16mzuvPNOnnzS+e6KFStYu3Ytl1zydS6//EeZc/T29nD++efzne/8C3PmzAHg6qt/4c0PovCEASmzE8Qo0VR8Mr9xuXnr+/sH2PDmm16bUXImEu9ZSSJrPFNzyxpC1LW0jLlfWmAGAn4CAT89TSfTEneKCIhU4Zf0lyOvvfYag8M8k9tzg8EzbdsHYBnmfHDq2iWQKqJpimR7flasWMGuXbsyYgZg1aqz2bhxI7t27WLDBudfRzit5c477+SSS77OAw/8nRNO+AChUCPXXnstF110Ib/61XXEYr309sZyAqNXrTqb3t4YjY0hLrnkisz+N954E0BmBcvu3btLtppF4T3K01RyyjbE4b3vXTn2TlWKlLLqanduGU8808GjxzOlya63FwgECQaDxJuPILWnBT3VCTXiMX303ntHbBvmacoVTUDm1y23xl6JnHDCBzJen8bGEKFQIytWrCAWc+Jw58yZw9q1a9m1axfLli3NiKfGxhCnn346V155FaFQI2vXXsWKFSvo7Y1x5ZVXsXLlSi6//Ec5HeDSpUv51a+uY8WKQ+ntjfHDH/6QUKiRK6+8is9//vOZ4ypqj2FteeweVDFpLMMUwHJwHjOqBFX5kJ0Es1riPceTCfyYk/InPh7O8Gm6ZDJFb+NxTOv6S9EymZcbTz/22IhtuzUnssv9pd9mGaYIRyMy/csvTu+oGvvUee97V445stu4cVnm9apVZ+d4jn760ytG/d5HsnJuDN+W77NrrvnvqhxpKcZG4qzi8jld32zLMBvC0Uh8jK8pJsc83EzgCZWypSxJ57SrdOHUqWn0jlEAuFFKDj/tQ+M6XjooXNM0dN2Hz6fTHzqCaV1/mbKtlUAikWDdli0jttvALk2wwAkGD+G08R1p0bQkvWNStfaScMIJH+CEEz5QknNlJ8FUwqm2SErwDfWvi4F1o+6smAqL0y/UwLN8SSfBrOSVdeNZNbessQn/BEvZ6LqO3+/H7w/Q33wEvLXvQPNq4ZVXXiExipDeOySawGnjI0WTavDVSdpFXa25nBT5SSLJigZfjBJNxWJx+kWyCH3o9ddfz1/+Uhsj/0plSx5vRVHOM46pucMOOWRCx8yObfL5fGiBZhJ1JlRAQsup8tg994z6WXuuR28J8OSI6bmkeqBWNdU2t6/YN8MGQUu9sqMGyPy2iSJ0oZs2bWLTpk2FP7Ci4tjqH0d+plNOmfBx07FNuq6jaTqJhuXUgq/p6SeeHPWzvWKEaELFNBUIv0/n2TVrvDZj3KRSKaRdGf/XM2bO8NqEiiWRm3ZgsXeWVD2L0y+K4WlSKADadY34GN6fJil55z+dOqnj67qe8TalQm9Dt/dWRPmUyTIwMMA/tm8b9fO9uZ6mxQA+yzB9wAKAFCqAcbLst2iR1yZMmForcFmLDCsSUHk3aeWwOP1CiSZFsRhPPJPZ3IyvoWHCx86eotN1HTu0P/S2T8bMimHtyy+T3MczsD2PaNJw8zMBpFRbrynSjUNRvQyrfzZztP0UU2ZB+oVKDqwoFuOKZ1q+fNLHT0/RaZqGbFhS1V4mgEfvGZmfKZv23OtfAM703JBoUiOkmqNW6jTVKsMGQq0emVELzAQnzYPy3SqKxXg8Tced+k+TPn52MHiSWeBvznigqpFnnho9ngkgLsheSjMTRogmRS2iaRpCCJLJ/BWfFZWLrTxNpWImjPi9FYqCsVfX6BtDvDRLyYqTT5rU8dPiSNNEZgZCBGdnFtD1DKZ4cXcvL+zuZWvPANt7B9kdT2C7ntW+pE1L0Me8UIB5jQHMlnrePaeRQ2Y24Bsjr5QX9Pf3s37Hjn3uI3B0kevfy4imTF0NNULynlgszj13382ZZ51Z0vNm53JSVA9pz4e7CkaJpiJgGeZM3J94qgPPxgpZnKEYP00FihvdOo6puQOnTUevq5vimZwpumTK5vWeev78RJS7t3Tz6p74pIYEdT6N98xt4sPLZnL6/jNZOm2q9hWGF194gdQYU+lzUil3ICQANMswZ/qAzNIkNT03edra2vjWN79Na2srra2tRKObOeXUU3nEeoTjwsfxiPUIp556CrF4nEesR2htdWZK4vEYDQ0h2traCIUaaGtrwzAWe3IN2eUGVC6n6iGFRHMafdAyzBD8//bOO76t67z733svAA5wilMSSVCWIMnUnh6yLXjEjhXveMRNk9TNaOUmcZzVtEmd+TbNm/G2dWq3aVI3SZ2ksZM4TmI78YI8JGvZGpZsCxoESVGc4iZBrPv+cQESALFIXizyfD8ffgRcnHvugXDPub/znOc8D/MjC2f6mBhDZ6t5lns8HM4zzrY9gizBoMISnSaiySTp3bh2TcIy8ZAkic5RN//+RhuPHDlLha+XI542UBSYYVIVl9fPS20DvNQ2wGd2nWZ9lZmPb1jE3SurKTRkLqjBS3HiMwWp9/i0Pj351ReEOYKLSc7s6e7uprHRwsjIKE1NTYyOjtDYaMFsLmS7bTuPP/Y43d3dEyJp5707Abj9jtupqqrigS8/kOFvoEXNnatr2PORiH4trE36o5tfaJ3Xx+Zx96wbJMg8EnDNmAuzDg9WlST9mW64YcbXcA6Oc88zJ1jyw/1847UWzg67GfAXzLi+WBzqHuEjf3JQ94O9fPHVZgbGM7O6sW/v3oRlGrzeKZtpDMCErUxYmmbHli2b2XnvTv7yng9jNhdy/PhxqqqqaG520tzsZGRkFLO5kOt37NCEU1c3Dz/0MIWFZhobLTz91FN859vfpbHRkumvMpFuQIQkyH0ifsHp5VYQJIMufqF+SaK3tASrJFNqkGkzGHDp0DhB+jGrKo0eH6VmA+fzvCwYGppVfT2KjCvBRLZMVWmaQWqu/nEvX9nTwkOH2rV0ImmynvS5vPzj3lZ+cKSDBy5u4K/XLcSYJt+nsbExTnV0xC0jA4t8fnxSmFitMAD6S8l5SFVV1YTV6L8e+dHE8R07rg/798HvPxizjmywMoUSdAYUwim3UcNTqZgy2JS5ysR62kwi3blMJpzVVbRUV+M2GjAYDDQ0NNCUpG9K29mzDAwMxC2zsLaWBQuSCxLb199PewIH2aKiIixJxqbzeDyccDgSlmu68MKkLdynTp/G5YovKRsaGihOMv9aV8D6H48FCxawsLY2qfpGRkc509o6sSvZ7HJh6eyivrsHwwx2Kiflz1S+AMU0ve79h9Pn+dhzDtqHQ6ybkhRInyLR6ytJeSqVnjEPn3zxFP95tINHrlvOpprUz+sO7t+f0J+p1uvDoKqoUlg5owHIC74TdiZBJIqiIEmSCEmQw0T06/mQGSHdzGji2VdcRHNNDecWlKMGHkyKolBXV4fBYMCThC9MT09PQsFUWFhIcUlJUvWhqvT09CQsVlhQkFx9gGt8PLlyLhcGY3L+XGazOaFo6urqIj9J4VleVsbg4CDjcdp6/vx5FEWhvLw8YX0mk4m6ujra2trw+XyM5Odz3NLAibo66np6aOzoxJyg/aEkszS3af36pOsb8fj4xAuneORYZ+xCksSwPx/SFMrvaM8IF//8EN/Y1sjnt9TN0IMqOZLyZ/JGfeYVGAiZggrRNHP27t3LwtqFmW5GyvD7/fj9/ow4iPcP9LN27dq0X3eOUpLpBsxBJiaeiWyyflmifUEFzbU1DJi1qM1Go5ElS5ZgaWhIKtisz+fj5MmTNDudcftjfn4+69etw2w2J/UlXOPj7N+/H7c7vk9VZUUFa9Yk73CcyGoVpKCggNokLTn1dXW8/sYb9PX1xSzjcrlwOp1s3bIFUxIWmPr6eoaGhjh85EhM8RT0R62rq2PZsmUocvw5yLKlS/H7/Zw9e5Yzzc148NBcU01zTTVVAwM0dnRS1T8QVyCoJOcEvv3GGxOWAWgedHHjE8d5syfafpBASyRZm15NWJnSs2zm9at84eUz7OsY4qfXr0iZo/i+ffsSlmkITAoi+nSeAShNQZvmHVVV1axZM/NIrLmAqqoZ2Vn3+utvpPV6cw2xuJpyEj5RXCYTzppqWqqqcBu1pRaj0UhBQQFGo5H+vj764wiAIKOjo4y73Xg8nrjl8vLyKC4upqW1Nakv4Pf7GRgYSCiYgstnb739dlL1AgwNDiZVrqW1lb7+/qTrDcaXizcejY+Pc/D11ykpKZkI5JuI4uLiiXNj0dbWRm9vL4WFheTl5cUsF0p5eTnDQ0O4PR68Xi/dpaV0l5Zido1j6eyMuXTXpSi4EyyRLVBVVl51ZcI2vNE1zLt//SZdo/HvH2QZ1BABlWZ+7eihZdDFU7etpqpA392kIyMjnEmwFKsAtdFXV+SwhVIxuAriERrLSYQkyFmSMzsIpsPExDPSh/Z8cTHNtdV0lE8uwcmyTH19PY0WC4YkfFUAvF4vJxwOhkcSR4tYtmwZK5YvT9o/SFVV9u3bx9jYWMKy9XV107b67t+/n6Hh4YTlzIWFbNywYVp1Hz58mNa22AlXQROaZrOZTRs3Tuv/5J0TJzh58mTMMmNjY4yNjVFbW8uqpiYKCpJbpfX5fDQ3N3Pq9Gncbjcj+XkctzTwTn0ddd09NHZ2URTyWySzNLeysgo5wb2099wQ1/7qKIPuBK4WUiAMthwMh52ZndQHOoe56rGjvHDHGl2F0/69eycCcsZiodeHIVAkIuRASXI9ViAIEIzl5PF4hHDKTUQQoBSiAn5Z5mzFAppraxgMSZxqMpmorq5GAvw+H6dPn55W3QZFob6uLmG5cZeLI0eOTKvu/Pz8pOpWVZXDhw9Pq26TyZRU3cC06waSrnu6/yfTqfvEiRPTrrumuhoVbclvfHwcnyzjrKnGWVNN5cAgjZ2dVPf1J7U0tzmB2DzUPZKcYAoSFEoZjjzzZs8IVz12lFfuWktpnj5y5aWnEvsz1YX4M0U+5cJaISLz6MO///t/0NnZRU1NNZ2dXQATr6d7bLrlv/zlf0jLdwwGwRQ763KO2e19FsSlq7yUl5ZYcEfM+isqKrA0NCCLBNmCCKqrqmhtawvbvddTWkJPaQkFLhctzuaEdcTzZ2obGuc9v3kzecGUZbzZM8KtT77FM7etxqTMXqUcOHggYZmGOJscDMDEwq0QTfpw6aWXZEw0pZPgUp0QTtlNRL/OzZEzR+gvLp4imAB6e3vp7e3NQIsEuUyfqibssJUqWLdfEfWzcZ+fW588Hh5SIAd5sbWfz+w6zYNXLZ1VPcPDwzQn2B1qULVwA0EidZEBSLyQLZgW82mnVzAIpghJkL1EdPrcHj2zkwlPZ6m3F89oYv8dgSAZhvyJx9WV1VVIMSyYn3/pDAc658b9+P1D7VzVUMaty2ae1OC13bsTRglY5POFRVmIiLc5GDYlEgFcBDMhGMtJJPvNCUYz3YA5yISptc/n44xH6FJB+tiyaXPU48+19POvbyQX7iFX2PncSa6oK6Eif2aumcn5M8V9jvkNQPJ7PAWCGMiyPGF1Eg7i2YUsFt5TzYRKKoxXag6xceMmbDZbxq6/Z88e9uzZnbHrZxO2m2+acmzc5+djzyaOwp5rdI66ue/F0/zP9StmdP7BN15PWCYyqGWEMckd9l4MrYLZEBROItlvdhHxa8QPHy2YCcJ6J8gI1SosueSSKce/f6idMwNzM3Pho2918dq56e9nGRgYoPX8+bhljKoa5s8UhVEDMOGdqAjZNGN6urs5duxYppuRFaiqqqvFaWxMPJNmQ8SafOJAP4LpMhEp0DhPjKxvvnmUkyczZ8mIF3hyPrGytnaKP1P/uJf/szd2UNNFRSYGxn2MeHLXD/ULL5/Bfuf0fIdfe/XVpPyZIt2UpHBd5A0XTRIil8oM2XrR1kw3IevQKwhmXX29Dq2Zv0S4iIotXPozMX2t8ftZ6pkHvn0eL4yIyUwqaTcojCWw2l+0dcuUY989cJY+V+x78FuXL+GuFVXsPTeEva2fF1oG2N0+yLgvd3ZB72ob4E/OPq61JM4DGCQZf6Zo+eYix09haRKkDBE9PDsI8Wk6b3M6fOLX0J2JMbTO6+cmt7CCCGaHV4KHS4rjlpGA7TffHHbM7VP5wdFzcc+z1ZVilCUuW1zCZYtL+NJF4PL6ee3cEM+39PNiaz+72wez3n7yr2+0T0s0HTx8KGGZ+ijWtwhd1CsT0uHF7jmB3ggfp8wiE+bTJKxMqWFyDBW3ukAHOhQFb4J7qQZo2BJuafrlie64eeWWlOazuHhqrrx8g4ytvpSvb7Pwm5ubJgTTlfVlbK4pysr7+qnT52keTM5vq6+vj7MJ8hqaVJWaKKFzIr57rwxMRHoSliZBKjAYDEknyxToS+QsKVPtmMvYnI5eAmEHRLxvgR60JpGT8MKFi5AixtUfvdkR95wzAy5q//01/u6V5phldrVO7hX5v1csYf/7N3D+3kv43S2ruG/jYtZVmbNCKajAD4/G/75B9rz8csIyi72+qN8rpE+rNqcjXDRlo5oUzA0URUERKSTSTkTWASGaUsd5EOEdBPqQTJLeiy+6KOz9eZeXl9oSb47tGvXwxMmpQ8Gr7YM0D7qwB+ooMSlsqNbye5fmGbjhggX8s+0CDn1gI107L2ZxkQkAJYMrCb+J8j2isevpmfkzQVif7gUw2JyOYbvFOgKYDaLDC2bA+fPnaW1pwZtEVPDgzrpkyDOZaFyyBLPZPNsmzlsiLE3xnR0Es6EXqJTQlkRzx6VWkG14JTiXQDRJwPZbbw079vvT5/En6YjUOzZ1Ce+hQ+f42dtdE8aTpWUFdI96qDWbppT1q3A2kJrlL1bV8I1tFl5sHeD5ln7sbf2c6k9PuIPjvaOcHnBxQWl+3HKvJ5GsuS6KaIrm3hC0ATYDqyTAgIQ3613ABNlCX18fL+3aNS1nb1VV8fv9SZ3jdDq5+ppryMubug4vSIwxXDSdyVQ75gFngRUABknCLTY/CGZIu6IkzDe3EInFG9aHHXumOX4MolB6XR5UwmO4VRZociAovN7oGqbuB/t4+55NLCsrCDv/hdZJ/6Ar60upNZu4e2UVd6+sAqBlaJwXWvqxtw7w21O99I+nbkfpU2fO8/H1i2J+3tPTQ8fgYMzPAfJVleook3lDuBWtHSZF0xlglVYIvKK/C5KkrbV12rvjJElCUZSkYjm53W66urqoF2EHZoQh3HjcnJlWzAsmBKkRCbeYeApmSFsS/kxNdYshYllsf0fyOeb8qmZtqiyYTEdSVTg1Ncn9mxaHCaYnT/XyD7udYRatqxvKppzXUJzHX6yq4S9W1bDykQP8y5VLGff5NUtU6wCdo/qlGtrXET/Q5e6XXkpYRyx/pohJ52kIF00ThVyiwwuSxO2JvVMjEckKJ9UvFjtmSkSnb85QM+YDzcEXws1BMBtak/BnuuSSS8PeD4x7Odk/Nq3r9Lq8YaIpMp9bQ3EeX7mkIexYZYGRI93h8XFveOIYH2qq4RMbplp72obGaR4c587lleQbZD66phaAY72jvNiqCagXWvvjxpVKxMEECYlfSsKfKdrSHEzpy83asZA3UQoJkuTokSMUFU/G1eju7mFrlMBj02VkZJSnn3qK2++4fdZ1ZSPJCifBzIgwL4vludTRHHxhFEGCBTPEK0l0JBBNMnD5rbeEHXu9K3krU5DeMQ+UT1qRKgrCLVwPXrUUszG8LRUFU61RBzuH+ca2xrBj//tON5UFRs4MuLh4YTH5hvBdfqsqCllVUcjH1y/Cr8KRnhFebOnnj84+Xmztxz2NaHJvnx/F5fVPuUaQN958M2Ed9TGS9BqjWOqniCajJIkOPwOKiotZv27dxPvQlCrd3d387ee/QFVVFbffcTs/+fGPuf322/nxj39CVVUVo6MjXL9jB7vsu6iqqsJsLmT//gOYzYVcv2MHTz31NPv3H2C7bftEmePHj/PZz32GqqoqvvbVr/Hg9x/kEx//BBZLI93d3ey8dyeNjZZM/FdMG0VR8Pv9+IVFSXdCLE3jNqdDOIKnjubgCzHxFMyUNoOScBPBIkli4Zo1Ycdah6a/3NUd4Qweamm6eWkFNy2tmHJOZcHUpcP3raji3Y2TQSb3dQzxZ0+9PbGEt6Q0n6+91sI1DWVcuqhkyvmyBOurzKyvMnP/psUMjHt55Fgn39zXGjfmVBC/Cm3D41P8rgA6OzvpGo4vKAtUlcoY0dCjWZqC0uxU8KhRdPiUYTYX8vhjjzMyMsr+/QdoamqiqqqKnffu5Pix4wAcP36ckUB6guDxpqYmPvu5z9Dd3T1RpqmpiaamJgAKC8385T0fprDQzPHjWj27du3KwDecObIsi1hOOmMIz5p0KnZJgQ40B1+IMVQwU5IJNbCqvmHKsfbh6Ueh744QJNUBn6Yio8KDVy2Nek5FvjEsNFF5voF/uXKyrMev8pE/OcJ8ns4MuPjybicfeza5XIWleQY+tXExRz+4Kaq/VDQ6RqKLq91JPAfrYvgzQXT3huBT6i3AC2AS0ZtTwpYtm2lqamK7bTuNjRZuv+N2zOZCzOZCCgvNOJ3NmM2FNDU1YTYXUlVVRWGhGbO5kOPHj/Odb3+XLVs2h5UJ0tho4Vv/959obLRMfLZ9+/YMftuZIcuyiOWkIxF9ObGNWjAbzgKjELDWCwQzIBl/pou3bZty7NzI9C1NPTEsTV+91EJ9lKjhQUL9oL5zxQUTYgvguwfaONoTPSd4NAF0sHOYG544xvcPtdM+HP4dqguN/OHWVWyqKUr4XdpiiMZdzzyT8NxY/kwQ1pdHCd09Z3M63HaL9R1glYwIOzATurt7wpbkzpxpnkg0G7QmBdmx43qAsGMPfv/BqPXuvHcnO0PeP/DlB8I+D607tL5cJXRnnWB25IXPkhIHKhHMGJvTodot1mPAFglthuoRY6hgGngkic4Ek0aFqfGZAEY803dt6I1wvl6Qb2BdlZlPhjh0R/MVqsg30jXqwVZfyj2rayaOn+wf46uvtcS83pX1U0XT083n+cNp7e9++2l+eK2VDzVN1pmnyDx41VIu/fnhuN/F5Y3+/Q+FPJNjEdOfKdxSf8zmdPghPN3cxKCaJ2ZK02br1i3U1ddP/F1+xeWZblLOEhROImfd7IiwNAnRlHrEGCqYMa0GJaHMXizJVF24csrxItP0LfSRlqZ8g8xP3r0CQ8j62332qav6VYVG8hSZ/7jGOiEqVOCvnjsZU7xIwBV1pVOO20NStnj9Kp/bNXWvyiULS6L6KyWivb2d3tHRuGUKVZWKGP5MEX34aPCFHO2gSazJC5IkzzQ1WqwehAonWSzZzQhTjE4vSBmTY6gQTYJpkow/0+rGRt2uF83Jem3VZPaF/32nmx8f65pSpqrAyBcvqmd5yM67/z7WyQstsRPirq0ysyA/3Inc7VPZ3R4edLJ7zMOIZ+oqw6qKwinHErH7xRcTlomVOgViTzqjWppEhxcki8ViSakfUlFREbW1tSmrf64iETb5GbQ5Hc2Za828YXIMFRNPwTRJKt/cZVP9mQBMM0gc2+uKvTOtf9zLfS+eZtznZzhCxGyvK+ULWyeDDXeNevjsrtNxr3VVFH+mfR1DjEVYpiwleVPCHAC4E+ysrowSCmHXH/8Y9xyAuhhLczClD0/07VDpN7FoKEzLgmQpLinh6quv5uzZs/h0DhlgNBppaGjAZDLh9XpFLKdpEMu0LEgpYuIpmBHjkkRXgsmnQYXt731v1M+i5YdLRO9YbMHwty+fmYja3THiDlse+/iGRWFy4n77ac4nCE55VRR/puejWKa+dmlj1POP9cRfZov2/Q+99XbccyC+E3gsS/2EaLI5HW12i7UNqDMiCWdwQdKYi4pYvmJFSq9hMBiEcJoG+WFGZHZnqh3zCZvT0Wu3WNuBRUYkFEiYQ0wgAM3KlGhkq1cUFiyNHgpgUdH0RVNXjFQmr5wd5AdHOibe9455WRaieUKlxDPNffzs7alLeKHIEly+eGp8ps9tqWN7XSlHekYYcvvYtqgEW/1Uv6dD3SO0DMUPqbA44vu3tLTQ74ofId3sV1kQw59JISzcQLvN6egJvomMVPUqcBdAviQxLB5QgizCYDDg8/lEEMwkyA+fJb2aqXbMQ14F7gDIl2RGVHGvChKTTKiB1UuWxPxsJo7Sg24fHr+KMWRpb9znnxJPKdJhPMiIx8dfP5c49tKG6iJK86YGxSw0yNjqS6MKpVC+9Gpz3M+LjAo1heGiKTl/ptjWsXwpbNIZNn5GRhOc+DBfmJcFWYiiKCIIZhJE9F9haUofYgwVTJtkkvRefPkVMT9bU1kYtustWZoHXGHvv7W/jbfOhy+FdcaIyv0Pu504BxMH1YwGZTuOAAAgAElEQVQWaiBZvrG3hT+cPh+3zIbqIiK/+kt/ejZh3fGcwONNOqNZmrSTkBHGZUE2EtxVJ2I5RUdbGpro9CdsTkd3Jtszz5gQqGIMFSSDS5LoVuJPBI2qyvbbo/szgRbPaE2lmTemmYNuxSMHWFtl5uqGMtZWmfnHva1TykSmWwE40DnMv7x+NqlrRAtq+d2DbexpH+LqhjIuXljMmkpzmOh7s2eEb+xt5X/fSTx0ba6dGvzy8Duz82eKcG/YE/omUjQdBkYAc54kIUPCPDgCQSaQZRlJkkQspyhEzJJeyVQ75ilvAGNAQZ6kBccTTg6CeCSza67BYKTUMjV9SijbFpVMWzSpwOHuEQ53R4/iDVOX57x+lY89G54qJRaKJHFZFH+m3zh6ebV9kF8FXIWMskRDSR5FRoVzI+6kcs4FuWRheP1nzpxhcDy+BazIr1IWw81DImwjzRjweujnYaLJ5nT47BbrHuAa0Nb1RsWafBgF+fk4m52ZboYgQEVFBZIkCQfxEArC1+OFaEojNqfDa7dY9wK24ODrEvemIA4tSSzNrYnhAB7KTUsX8P1D7Xo0KYxfvtON2Shjq9OsQg8eak8ozp69fQ39Li9nBl0URYQQGPX62dcxFHbM41c51R++VJgMJkXiupBkwQCvPv98wvMa4vgzBSc7AfbanI6wwtF+rT8SEE2FksSo6O9hrF27JnEhQVpRVVXsrAuhMFw0JV7cF+jNK4ANtN/CpYolOkFskrE0XZJELtHtdWUUmxSG3Preby1D43x1TwtfpYV8g4w/wThbnm/gqvqyKX5GQQ50DOFJxkyVBLa6MkoioqG/8lxi0RRvaa4wwaQz2kLqRESoiJMFgqxEkiSMRqNwEEebJYUMIW/anI62zLVm3vKn4IuCqEOsQKAxJkn0JvBnMqkqV8TxZ5oop0jcuqxCr6ZFxeX14/bFFzxXLC6NKZhAS6fS+tGtPHLdcuriJAZOhtuXV4a9V1WVw44TCc+L5wQe0Wf/FPn5lF/L5nQcRcvYjREpNFaBQJDVGAyGeS+cCsO7dOKQuIJUsAcYAM2/TCQBEsQimVADFlMeRYsWJSwHsHNdcuVSyetdw3zKfponTvbSPx59GayuOI8PNFVHTZmSLCUmhT9bWRV27NSpUwy7o8efmjjP76ckhj+TQphP6AARTuAQ3dIE8EzwhbA2CXIJg8GQ0rQu2U5Ef30qU+2YzwR8IJ4Lvi8QY6ggBq3GxP5Ma5PwZwpy8cJi1ofkj8sErUPj/MvrZ7n1yeNUPLSHzY++wWd3neGZ5r6wlCxvdI3QlyCSeDzuWV07JeXKK88+F6P0JA3xrEzhffW5SH8miO7TBNpg+2HQ/JoGhKuIIIcIiqb5FpJAJmyWNIxwAs8kTwHvBU3IDosNNYIoJGNp2nb1VdOq8wtb63nfHxJvuU8HfhUOdg5zsHOY7x5sQ5EkttYWc1VDacz4T8mgSBKfWD/Vqvbqiy8kPHca/kxPRysTSzQ9B3gBQ4Eki9ADgpwjGMvJG2eXxFyjKLzDP29zOuLbqQWpZMIXolCExRBEYUSW6EvgTpCvqlx6223TqvfOFVX8075WDsUJI5ApfKrKnnOD7Dk3OKt6/mptLUvL8sOO+f1+jpw8mfDceJHAI/pqVPeGqL+YzekYDJ4gAWZhXhbkILIsYzAY500sp4h++qtMtUOg5fIkkMBXQRLRwQVTSCYKeGNePubq6mnVKwHfuiJ2ypVcx2xUeOCSqTGrTpw4wagnvvWqzO+nKMbOPc3/cKKfHom1iSaeGvrf4IsiIZoEOYosSxgMhjkvnGTC1uNdwG8z1xpBgMeDL8QYKoikJYmlubVW64zqvtZSzh0RO8vmCl++pGFKrjmAV56dXeqUiD76eKxy8aTuk4AbMOmxRNfZ2cl11103ixoEgrmJHkuIRZIcus/1qYC1WJBZHgO+Btrv0yNSqghCSCY+07Zrrplx/f929TJebB2ImXA3F9lcU8T9GxdH/WyP3Z7w/HhLcxGi6bFY5WKKJpvTMWC3WP8I3CgFKhychTOjz+ejvV3/aKUCgSD5Di9IHzan4227xXoYWKcgUSDJjAmHcAEwLEv0J+HPdPEtN8/4GlUFRv7jmmW893dvzbiObMJsVHh0x8qoiYn9fj9HTp9OWEcsJ/ACSY5cmovpSZ/IZvyz4AthXhYIspPgAzmAC/h9BpsjCOcXwRdiDBUEaU3Cn+mC/AIKK2e3xHabtZL7N0W3zOQa/33dcpaXF0T97K233sKVwGJf7vdjjuHPFNE3fx6vnkS9+PfAKGhKTAS6FAiyj5LwDv+EzemYXtZOQSqZsPqZw5dQBfOYZPyZ1q1Yocu1vn3FEq5fUp64YBbz1UstU6J/h/Lyn6YE7p5CQ4xAmlE2u8W11McVTYHBd8IhvHieR1sWCLKRiH75X5lqh2AqNqfjFHAAtGjDYieyAJLzZ7rs2mt1uZYiSTx+YxMXLyzWpb50s3PdQh64eOpuuVD27HopYT2x/JnMkhwatf9AoM/GJJke/MPgixIxUxIIsooIC/AZIHG2SkG6+c/gixIhmuY9g7LMYAIDRIGqsvXmm3S7ZqFB5pnbVrO1NreE01+vXci/Xb0sbhmfz8ex5jMJ64rlz1Qc3if/M2qhEBL2YJvTsRt4EzTfCZFWRSDIHiIewj+yOR3C0zj7+AUhbg4GMfWc1yQTBXxZoZn8sjJdr1uaZ+DFO9fyngsW6Fpvqnjg4gYevmZZwt5y7NgxxhNkf6jw+SlQp/ozGcI1zSghPoixSFYB/Sj4QsyUBILsIGK5xwc8krnWCGIRCP8wMRiXCDeHeU0yomndhStTcu1Cg8xvb27iM5vqUlK/HhQaZB7dsYKvXmpJqvzLzzyTsEyspbmIvviLZEK1JNt7fwKMg5abRTiECwSZp0RSQnvi721Oh4jpkb1MTDyLxcRzXpPMzrnLr01dTENFkvjO9iU8cXMTC/ITtyWdbKopYv/7N/BnK5OPgr7n5cQpNmMl6Y3oiz+KWiiCpHqvzek4T8hMqVTMlASCjCIxpR/+e4aaIkiCgJvDMdCWBET4gflJvywzHCXOUChmVWWLjv5Msbh5aQXHPrSJu1ZUpfxaiTApEt/Y1shrd6+nqaIw6fM8Hg9vtTgTllscRTQVhS+VHw/00YRMp+d+N/iiRFJIbGAUCASpoig8GNubxEguKcgqHg6+KJXECDofSWbX3LKiYoxFRWloDdSaTfziPSt5+a51GdldJwF/trKa4x/azBcvqo8auDIeR48exe2P78ZZ5fOTH8WfKaIPPpTsNZMWTTan4yiBzN0SmnASCASZoSy8/33H5nREj9omyCYeAc6DlhxUJPGdfyTjz7ShqSkNLQnnssUl7L57Pb+9uYkr6/V1QI+GUZZ434oqXv/ARh7dsYKlZfkzqicZf6a6KP5MEf3vPNPwB53uguZ3gGtBWxqIpt4EAkFqqVYlTJMd/hwJItgKsgOb0zFqt1gfBr4ImvDtUGefd1CQO7QYk/BnendmcrRKwE1LK7hpaQXHekf5wZFz/OZkL61D47pdY02lmbtWVPHRNbVUFxpnXd9rr76asEw0f6aISefDNqdjNNlrTnuqE8iltBZgj0Hi0YKp2YYFAkHq+MchFyWTXffvbE7HP03nfFVMdnRFmobFyG6x1gJOwATQ4vPgQfwe84HzisyPi81xyxSpKi/v24ehMHm/nlTzetcwvz99nr3nhjjYOUznqDvpc5eU5rOppohti0q4eWkFS0pnZlGKxvj4OJds3YonzvKcBOwcGCYvZMwzItGgTAg2N2CxOR0dyV53Jq7z3wZ+CrDBq/ILELm7BYI0scrrCxVMIwgH8JzC5nR02C3W/wH+EqBMVuj2C2vTfCAZf6blJSVZJZgANlYXsbF60seqfdiNc8jF2SE3XWMe3L5J0ZJvkFlkNrHQbGJZWQHlKdydd+Tw4biCCaDa5wsTTKD1uRD+ZzqCCWYmmn4BfAVYmg/Y3D6eNwn/JoEgHdzqCnvAPmhzOvoz1RbBjPkecA8gFUsyfUh4hbVpzpNMqIENq1enoSWzY1GRiUVFJliY2Xa89HQy/kzhJh0DUmiYARX4f9O97rT3vdqcDi/wQPD9jnEvs1+ZFAgEiVjv9VE7+WwdAL6VudYIZorN6TgG/BK05YNyWUw65wPJOIFfcf2ONLRkbrBvz56EZSL9mcrlsNh2v7Q5HW9O97ozDRbyC+AtgDzg7mmscQoEguljUOGuMU/ooX8WVqac5mtoM11KRMDgOU+vIjOWwPetRFVZd/2709Si3GZ8fJwT7WfjlpEIj89kRArNaKKi9cFpMyPRFMhv9eXg+00+P9eMjWMUDqYCge4s8PnZOTxK8eSDtRdtiUeQo9icjuPA/wbfC2vT3CaZpbnlpWUo+fo5Ss9lXj94EG8CvVHj84Vpkog+9stAH5w2s/HSehw4BKxXkLjUD4vcXt4xGjirKAzJMl4xeRIIZkS+qlLmV7nA4+UCj5dGSSHE7eU7yeRIEmQ9/wDcAShB3yaxk25ukowT+Ka1a9PQkrnBS08/nbBMfYSVqTg8T+eXZnrtGYsmm9Oh2i3WvweeAqhA4qkVKxjMM1EIZJf/v0CQmziB8s5u8lon0sq1Aw9mrkUCvbA5HScDO+k+BFAhK3SInXRzDpUk/Zl2CH+mZNm3d2/CMvWeSdFUMXXH3MmZXntW+wFtTsfTdov1aeB6xa+yvbObtpveQ3GxfuHYXS4Xb739NkNDQzOuQ5Ikli9fTk118kkAk+GdEyfo7OycVR0VFRWs0jkCbG9vL8eOz8jyGMZl27Yh65hn0Of3s2/fPjweT+LCcVi5ciXVVfrlS1JVFcfJk3R0TGvn6RRqamqwLlum6/9Zf9tZLjoU5qv4BZvTMaLbBQSZ5ivAXUC+WZIpkGTG1PjbqAW5RY8i40rgz1Smqqy67to0tSi3cblcnEowVsvAYp8mmgokGfOklcmF1udmjB5BFO4H3gUYlnT1kOf14SopmXWlqqpyprmZEydO4I0SBj1Z8vLy2LhhAxUVFbNuUyhnzpyZtWCSJIlVTU2U6PD/FUpvb68u9ciyrHvbli9fzrFjx2ZVh8PhoGLBAsrLy3VqFWzetIkzZ87w1ttv408Q+yMWnZ2dDA0NsXrVKqp1EugXnNlN3qSZeS/wP7pULMgKbE5Hs91i/R7w9wCVkkKb6heLdHOIpPyZyhegmESg6GQ4sG8fvgT+TLVeHwZVRULrUyF8z+Z0NM/m+rMWTTan4x27xfp94FMA+b96gmc3b0CdpT+Tx+NhbGxsts1DkiRdrC6RDA7O3qVEkiQOHT6sQ2vCGXe5dKnnwMGDGJLo8NNBj2jUPp+Pvfv2UZiCIHCKosxYNAGMjo6yb/9+ioqKZm1xKh8e4aaDb4Qeuk/kmJuTfBMtbtNCk6T5XgwKa9OcIRl/ps3r16ehJXOD6fgzFUtyZMqpb872+no9Eb8K/DlQuWBomCs8Xs6tnv6Sk9frxeFwMDIy+9WHurq6lDxU+/r66O7unnU9iqKw9IILIAVJO1taWnSpx2g0UlNTo0tdoVRVVnL6zJlZ1eH1ehkcHMza33l4eBgAk8lEQ0PDtAWUpKpsPWpHmhSZP7U5HYkX8gU5h83pGA74hz4CsEA2MOxzI2RT7qOSnGjafsMNqW/MHGH/vv0Jy9R7vchofSmEv7c5HcOzvb4uosnmdPTbLdYvEUjpYNl3EGXzJrylyS/ttLe389ZbbzE+PrvkgAaDgXVr17Jwof7hSoeGhjh9+rQudS294AKWL1+uS12ROJ1OXeoxGo0st1p1qSuSsbExzs3Shwg0cdN04YWYUmDaPnXqFG+/886srGNut5tz586xetUqqqbhh1Wy/yDl3T3Bt0PA3824EYJc4CfAx4FNClAhG0R6lTlAl6IwnmBivEBVWXnVlWlqUW4zOjrK6e6uuGUUYKHPR4VsIESuHkTrY7NGNzOH3WKVgF3A5QDnqit5eeumpM51uVz09+sTp6+6qgpzUVHigjPg3LlzuHRa+mpoaEBR9I/Noqoqzc3NutRlNBqpq6vTpa5IxsbGZu14HaS4uJjKykpd6oqkr69Pv3uzuhqzOX7CToCC0TFsf3wew6Qv39/YnI6HdGkEImGv3kwnYW887BbrJcCrBMbldr+HMfFb5TQH80y8VJAXt0wpcOP27Vx5441sfte7dN1IMtewv/ACn7jvvrhl6rw+PjgyxiJ5IleJCmyzOR2JQ4gnga5rQ3aLdQVwGC1QOAc2b6C1blHUsj6fj3MdHboN4GVlZSkRIaD5V+nhwxREtFXD7XbPaldkJOVlZci50tby8piDo+31IyyetDK9ClwRCCirC0I06YteognAbrH+G3AvgAeVVp+I3JTLPGEu4Iwx+QWdfGB5RSVbNm7EdvNNrLviCl3vr1zna5/9HI/9MX7OuW0uN7d7/KFR9h+yOR1/o1cbdP81Amvz/wfAV1hI2998DF+Ez0lnVxfHjh1jdHR01teTZZnVq1fTUF8/67qi4fP5eG3vXvr6+nSpr7SkhMsvv1yXuqLR2trK4SNHdKvvkosv1n3nYRCfz8eLdrtu1rva2lo2bdyYskHGcfIkJ06c0EV0FBUVsXrVqikWsqI3j1P9qyeCb93AOpvT8fasLxiCEE36orNoKgGOAXUAfaqP835f/JMEWYkfeLi0CPcs7g+zJLGiupqtm7dw9W23sXLrFv0amIPcdOVVnOmJ72v6uSEXlklp0was0jMYcCpEkxFt/XANQJelnqPbL5v4vKe3d9Zb9YNIksSFF15Iqc7b4kM5ffo0nV3x11Cnw/Lly6lYsEC3+iJpaW3l7Nn4OXmmw5IlS6hNgTN4kHMdHbotJwLU19dTt3ixbvVF0tPbi8Ph0K2+hQsX0mixAGAcGWH1zx/HMCkiv2xzOmaUHykeQjTpi94i3W6x3gT8FgKOxH4PbvGb5RznDAq/KNJ3k0qxJNO0aCEXbb2Iq25/L0vnURTx4eFhLr3kkriW13qfyudH3aHC5mab0/Gknu1IyZTcbrFuBl5D88ni+cZ6jlWmTigIBHOBW0+cpn5wYgnwKLDJ5nTMLhJoFIRo0pdUWDbtFutjwO0AblWlzS+W6XKN/fkmXsmP7880W8oVhabFdVx86aW86647WbxsWUqvl0mef/ZZPvXpT8f83AD8/Yibav9ET3nc5nTcoXc7UrZYGthN93UAv9FIy0c+hDuFFhaBIJcpf20fVc/bg2/Hgc02p+PN2GfMHCGa9CVFoqkWbZluAUC/6qNXLNPlFL8uKsCpc5y7RFQaDKyxWLj4ssu4+q67qEmR20omeOBT9/Ob55+L+fmt416udk/0kfNoy3L67DYKIZWiSUHbTbcNYHzRQto//CFUsTNAIAjD1NnF4v98BMk30eHvszkd/5qq6wnRpC+p8qGzW6y3Ab8Kvm/3e0WKlRzBh+bP5MmwE/dCk4nVjUu41GbjmrvupEznVGLp5D3bt9Ny/nzUz1b4/Hx81BMqaN5rczp+nYp2pPQXtVusjWi76UoADiysZvdi/eMnCQS5isHv533HHSyY9GN6BtiRysjfQjTpSyp3N9kt1h8CHwbwBnbTCdmU/Zw1KPxSZ3+m2SIBi/LyWb9sGZdeeSVX3nUnxWVlmW5WUgwMDHD5ZZdFXaIuVOGLI25KJ8e1H9mcjo+kqi0pl8F2i/XPgEeD739nXcKZaQS9FAjmMteeaWFl78TOzG5gjc3p0GenRAyEaNKXFIumIuAQsBRgRPXTIYJeZj17803sTrE/02yRgYaCQtatWM5l77qW7be/l4IUZFfQg2efeYZPf+5zUT/7yJiH9d6JqcQpYL0ekb9jkRbbod1i/QnwAQC3ovCLJiv9edl9QwkEqWZdVw/bW8J2Or7H5nQ8lerrCtGkL6mOo2O3WLcCuwlsrOn1++hXhX9TNvOrokJakkifkk0oQKO5iA2rmrj8uuu47OabMWXJc/qLH/8ET+6yTzl+ldvHbeMTkwgfcKnN6diXyrakSzQVAnuAtQBdssSPCvPwiJhdgnlKg8/PB0fdhHj4fc3mdHw5HdcWoklf0hF8MDT+nQqcE9HCsxYf8FBpMd4cf74ZgaUlpWxYvRrbDTdw8Y7rUxY8OBHvvvxyzkZkZljm8/PJUU/oGPpFm9Pxj6luS9p+VrvFegFa/KYygIMGmUcKjPFPEgjmIKWqyt+OeCiZfOg9DdygZ9TveAjRpC9pEk0S8ARwE4APlVafF58IRJB1tBkUHssyfyY9yAOWlS9g8/r1XPGeHWlL+dLX18cVV1wRdqxUVfnCiIfiybHsSeCWVPqCBkmrFrZbrDuA3wev+0SegedMuWXCFAhmgxH4xKiHC3wT+ugMWjwmfULOJ4EQTfqSrjQXdou1DNgPLANwqSrtIn5T1rEnP4/X8vVPIJ5tFCCxorKSzRs3ctWtt7DmsssSnzQDnvn97/nc303mK1eA+8LH0FNoIVr0SRKagLQbEO0W6wPAV0EzM/+owMghw/wNQ2CzXUl1Dm8DnS5dXV3Y7S9muhkZQQLuGfOwcdJpcQy4xOZ0HE5nO4Ro0pd05gazW6xr0AIHFwIMqn66hWN4VvFYUSFtOebPpAdmSeLCmlq2btnClbfeysotm3Wp92937uSpV16ZeP8+l5fLPBM+faPAxTan46guF0uC9Ebe0vg6sAG4RQI+NOZhoNDIGWV+Cqfq6mrq6uoy3QxBGrhp3BsqmAA+nG7BJMhtbE7HUbvF+jHgfwBKJBmPpAjH8CzBK2npU+YjI6rKgY5zHPjdkzz0uycpkWWaFi5i60UX8a677qSxqWlG9b4ekkv1arcvVDABfCydggkg7UolsOb4fuAN0JYr/mrMS6VfzH4Fc5dtHh/vcod19q/YnI6fZ6o9gtzF5nQ8Cnwv+L5CVjBL83PSmW20KwpCvmoM+v28draNf/31r7jxrrvYvn49995wIz/55jdpP3UqqTp6enroGNRy7a73+rllPMyq+r1AX0grGelpNqdjFLgBOAtQpKrcO+ahUOgmwRykyevnLldYZ/8ZoHsiXsG84vNo/qEA1MgG8jIcfVoAZ9OcNmU2FKlQI0kslGRK0vDsPe/z8bKzmW//7Gdcd8stXL1hI5+85VZ+/t3v0dPeHvWc115+GQCLT+VDY2ERv3+P1gfSTkZ7md1iXQ28SiBiuFOR+JcCE+551PfLysowGue+02AQj8dNf39a/PWygkafn/tGPYTsE30BuN7mdLgz1Sbh06Qv6fRpCsVusRYDLwPrQNtR1+bz4hWu4RnjSXMBp4zZK5wkoN5gJG/RQqSC8B1+qsuFt6ODlnFXRqxlC00m1lxwAdtsV3LVnXdQVlXFZz/6UQ7s3sNnR8N2yh0GLrc5HUNxqksZGZcndot1O/As2kod7ygyDxUahYlTkPMs8qvcP+qmYPIZdgS4wuZ0DGSuVUI06U2mRBOA3WJdhOYYXg/gQeWszyPGzwzxs+JCOjMUyygR+So01NZAWXnccuroKJ2tLQymqV3RkIC6/HzG3W7uHXKFuu+0ojl+RzdNpYGML4TbnI5dwPtAS6m0wufnI2MesvO2EwiSo8qv8slRT6hgOgW8O9OCSTC3CDw83g0MABiRWCQbMz+wz1P8mbdDRMUANNTVJRRMAFJhITWNS0LHrrSjAj1jLj4cLpgG0MbQjAkmyAJLUxC7xXoP8F/B9wOonFFF6DZB7pGHhFVSQpfkzqJZmE5nrFEhCEuTvmTS0hTEbrFeAjwPFACMB2I4ieS+6SVbww0sNZtR6uqndY7a04OjtydFLYpPngqfHHNj8U2MVWPA1TanY09GGhRC5nt7CHaLdSfwUPD9sOqnyy9W6AW5gxGJRYoBw2TX6gGutDkdb2awWWEI0aQv2SCaAOwW67vRIiMbAcZUP+fE+JlWni/M54gpuzJd5KnQsGLFjO7T7nfeJm1RdwOYVPjrMQ/LJ4NXeoCbbE7HM2luSlSyyoprczoeBiZSGRdJMjWyIbuUnUAQA5MUVTBdlU2CSTB3CTxU7iTg6lAgySwU42daWezNPm+yGqNxxsJ+QUF608FEEUx+4M5sEUyQZaIJwOZ0fAeYiJlulmRqRccXZDl5kuZLEkUwpTXwmmB+Y3M6ngA+SIRwyrqBfo5ygceLIcssuXl5eTM+11BUpGNL4pMfXTB9MHBPZw1Z2ZdsTsc/AfcG3xdKsnBuFGQt+QHBFOLJIASTIGMEAv6FCScxfqYHk6qyxu3JdDPCkGbhY6Uq6QmfUKDCJ8bc0QRT2oNXJiJr+1Fgqe6vCHT8fElicfhMXiDIOOapD6SzwKVCMAkySaRwyguMn4oYP1PORS43BVlkbVJ9s9gO4E59OLkSVQvNEuL0nbWCCbJYNAHYnI4fAHejOYJhkiQWKyLyrSA7KJOUyKVjB1oCXkfGGiUQBAg8dG4nYvw0CuGUUgpUletGXZluxgSusbEZn+sbHdGxJVOp8at8etTDosmwAh7g9mwVTJDlognA5nT8ErgRGAYwBOKQFIpcS4IMUikrVMhhZu+DwDab09GaoSYJBFOwOR2/AXagbdnGiESdYiRfTDxTyhKPl6vGskM4dXq9qL6ZOah3u2YuuBKx1OfnM6Pu0DhMY8COwD2bteSE8rA5HX8EtgOdoDV6oWygRAgnQZoJ3nulUphgehrYbnM6ujPTKoEgNjan4zngSjRfO2RgkWykSIyfKWXduIcbR8bIy/BSnVsCb1vbtM/zd3SkLCr4Rq+fT46G5ZvtRQvN8lyKLqkbOTXdsFusS4A/ABcGjw2ofnpFLBJBGjAiUSsbMIXP0n8A3GtzOrJvr3EMRJwmfcmWOE2JsFusK4BngMbgsV6/j341Z27dnGRYltidn8dbJmPGgo1KgLWmFsrKkjthbAyn08l4Cm7td7l93DwelsC8GS3S9zv6X01/cnfW/24AAAyASURBVKO3h2C3WEuBXwLXBo+5VJVOv0hUKUgdhYGYYSFzcz/wOZvT8b2MNWqGCNGkL7kimgDsFmst8Dtgc/DYkOqnW0w8U86ILHHSaMBpMNBmUBhP831jVKGxshKpsjJ+wf5+2jo6GNW5eUbgbpeXrZ4wkX4AuNHmdHToe7XUkTu9PQS7xaoA3wXuCx7zoQmnMfFAEOjMAlmhPHw5rh/4c5vT8YcMNWlWCNGkL7kkmgDsFmsh8FPgtuCxcVWlQ0w804YKdCkKbQYFp1GhXVHwpOk+WigrFFdWQnlEHrqhIca6Omnz6n8XVPhVPjrmoc4fVvOvgQ/YnI5RnS+XUnKrt0dgt1jvBn4ITIQtFeZmgV4oQLVsiNx0cBS4zeZ0nMxMq2aPEE36kmuiCcBusUrA14AvBY/5gU6/l1FVZKxLN36gw6DQalBoMxhoVxS8Kb6tDEARmggYUTXfp1RwodfPPa4w/yWAbwAP2JyOnBuMcq+3R2C3WNegKdZlwWOjqp8uvw+R7lcwUwokmWpZiYwL9ijwsVybGUUiRJO+5KJoCmK3WG9CszqVBI+d9/voExPPjOKVoENRaDUYaDEodBiUnEu+LAHXun3cMO4NHUUH0axLT2aqXbMld3t7CHaLtQz4CVpoAgB8QLffy4iYNQmmgYS2HFcWvhznBT5jczr+NTOt0hchmvQll0UTgN1iXY428VwVPDYWmHiK5brswCtJnFUUWo2aNapTUbL6lylTVT445g2N8A1wHLjV5nScyFCzdCG3e3sIAXPzp4B/AkzB44Oqnx7h5ChIAhMS1fKU4KmngPfbnI69GWqW7gjRpC+5LpoA7BZrEfBfwB3BY36gS0w8s5JxSeKsQfOJajEY6FayJ3zEOq+f909djnscuMfmdAxnplX6kfu9PQK7xboO+BnQFDzmQaVbOIkLYiABpZLCAnlKkolHgE/OhY4eihBN+jIXRBNMTDx3om2yyQ8eHwyEdRHSKXtxSdKEgGozKPRmQESZVHjvuJdt4bvjXMBngIdz0X8pGnOjt0dgt1jzge8AfxN6XHR+QSR5kkSVNMW61Ifmu/R4hpqVUoRo0pe5IpqC2C3WJuDnwNrgMW3i6WNMWJ1yghFZE1GtBgOtBoV+ObUiarnPz90uL1Xhu+OOAHfbnI7jKb14mplbvT0Cu8V6PdruukXBY75A5xcm5/lNDN8lgGeBv7Q5HdMPoZsjCNGkL3NNNAHYLdY8NFeHT4UeFxPP3GRYlmgJCKg2g8KgTiKqQIVbplqXAP4Z+ILN6RjX5UJZxNzr7RHYLdYS4FvAX4ceH1H99Pp9eIS307zDLMlUyEpk4tLzwP02p+MnGWpW2hCiSV/momgKYrdYrwP+E6gPHhMTz9ynX5YDy3kKrUYDozO4h9d5/dzp8lIaPp60Ah8NpD6bk8zd3h6B3WK9HK3zrwgeU4EB1Uef3ydmTvMAkyRRISnRkj3/HLhvvuSOE6JJX+ayaIKJiec30fydJr6smHjOHc4r8oQ/VJtBYSzOPV3hV3nvuJe13rCnpgo8DPydzelIVcq6rGBu9/YIAibnLwF/ixbVHdBmTr1+H0Ni5jQnkYEFsoHSqWKpBdhpczqeSn+rMocQTfoy10VTELvFehmau0PYxLNf9dEvJp5zBhXoUeQJf6g2g4JbkshT4Vq3l6vdPgzhp7wDfMTmdLySifamm/nR2yOwW6zL0HaI3BR6fFxVOa/6RETcOUJwV1y5rBAhl0bRlmy/bXM6xjLQtIwiRJO+zBfRBLEnnl5UzouJ55xEBVTFQJ0kUxA+dHjQxtFvzEXfpVjMn94eBbvF+i7ge8Dq0OOugHgSO0VyEwkokRTKZZkpQQS0cBSftzkdZ9PfsuxAiCZ9mU+iKYjdYrWiTTxvDD0+rqr0irFzzlAgyVRISuTuYoDfA5+2OR2ODDQro8y/3h6B3WI1AB8Fvg5UhH42pqqcV724xEMmJ5CAYkmmfGr6E4C9wKdsTsdr6W9ZdiFEk77MR9EUJOAo/v+AC0OPj6kqfaqIjZerFEgS5ZKBgqn39ltoG2bmrKN3IuZvb48gEBH3frRAXKWhn42pKgOq2C2SrcholqVSWY4mlg4BXwV+O1eCq80WIZr0ZT6LJpiYeN4LfAUoD/1sVPXTp/rExDNHyJckyqNvlulD+30fsjkd3rQ3LIuY3709CoE8dp8CPg0Uh37mQaU/sG4vhoDMY0CiVJYpkab4LIE2I/oy8LgQS+EI0aQv8100BQkZO+8nJAEwaLns+lW/8BfNUgolmTJJpmCqWBpEsyT+s83p6E9/y7IP0dtjYLdYK4HPom2zDRsAfMCg6mPQ7xcJLTNAgSRRIikUTe3goCWF/DrwS5vTIUboKAjRpC9CNIUTMnZ+HDCHfuZWVfpVH8Ni4plxJKBIkimTFExT7+ER4PvAd2xOR0/aG5fFiN6eALvFWgx8DPgk0BD5+ajqZzAwgxKDQOpQkCiWZEpkOTIoZZAX0BxTnxaWpfgI0aQvQjRFx26x1qLtsvsoEeLJi8qgXxs7fWLkTCsKEiWBsTSKO8MIWjzDb9mcjo70ty77Eb09SQLr9neiLdttivzch8qQ6mfI78ctBgFdkNB2b5RIMoWSHO1m9QK/RJsNvZHm5uUsQjTpixBN8bFbrOVoFvtPALWhn6mETzwFqaMw/ljaATyIlli3L91tyyVEb58BgejiHwVuBwoiP3erKsOqn2HVL6LlzoACSaZYkjFLcjRfJdCCUv4X8KO5nCMuVQjRpC9CNCWH3WI1AR9Am3g2RX4etD6JcVM/jEgUxbYqgebO8D3gpzanw53e1uUmorfPgoDj458DHwHWRSsTFFAj+HGLh1VUghYlc+BvSgpdDS/wJJrp+E/CX2nmCNGkL0I0TQ+7xSoB16BNPG8hJEhmkPGQiafwG50ehoBQKpLkaPGVQAtK+QTaWPqccGeYHqK364TdYt0MfAh4L7AwWhkvKmOqymjAFD2fn/pGJAolmUJJoiC6uTjIAbTccI/anI7OdLVvLiNEk74I0TRz7BZrNfAXwIeB5dHKuAICalRYoGISHE+LJJn82PfjCeBHwH/bnI6u9LVubiF6u87YLVYZ2Aa8H7gNqIpV1qWquPAzpqq45riIMiKRL0nkSzIFkhTLmTvI68BjwGM2p+NUelo4fxCiSV+EaJo9AevTdrTlu1uJiPcUxENw0qkyNo833wSt84WSJpbijKd9wG+AnwK7hFVp9ojenkLsFqsC2NBSDVxPjJlUEDeqJqRUzZncrao5OSgogEmSyQsRSjGW3IJ4gVeBp9HiKgmhlEKEaNIXIZr0xW6xGoGr0SaeNxER8iWICrjUwKQTlfE5PPGUgTxJJh+JgsCYGueuG0RzZXgUeN7mdHjS08r5gejtacRusV4AXIcmoK4GChOdExRPblXFjYoHFU+WiCkFCYMEJiRMkoQJiTxJipbvLRqtaCLpabSOPZTSxgomEKJJX4RoSh2BBMHXAjejjZ118cqPB6z3rsCY6SE7xsrpIKFZ5k1SYNJJTN+kUNqAPwK/RfP5nDcJdNON6O0ZIrCTZDNwGdpy3qVAZbLn+wBvYFDwouJTtbAHPsAf8n66My8JkJFQAFnShJFC4F9J68yGwPLaNG+et4FXgN3Aqzan48Q0mybQCSGa9EWIpvRht1hXA+8GdqCNnVOcyENRYWLCOTHxVLUxM9O9QEJz2jYGJpymkH+TuKM8aOPpU8AzNqfjzdS2VhBE9PYswm6xrkATUBuBtYG/0rgnJUlQPKkQNlwEjbwSut4MTuBI4G8vsNvmdPTqV71gNgjRpC9CNGWGQL7QS9AmnJcFXpvjnhSCFxWvypSJp5/ABFTVJqDTnXjKBCaegUmnzOSk04AUmHgSKwRALEaAPUxOPPfYnI7haTZNoAOit2c5dou1AU08rUHLJN4Y+FsMscIYpYVx4Ezg7zRwDDgKHLE5HYMZbJcgAUI06YsQTdlBwId0HZqICk48VwH5etQfbeIphVjcdRyMXWjj6RG0TTG7gcM2p8On3yUEM0X09hwl4CxpQRNQDWi79CoCf5WBvwq0AaMQMKH5aBdFVOUHgv5EI2hm30GgG+gN+esBOtFEUrMIsZ+7CNGkL0I0ZS8BIbUMTUytBlYAS9DGzZg7m9NEN9CMNqa+A7wJHAZOCoGUvUhiABUIBIKZI0RTbmK3WM1MCqg6JiecoRPQCrTJZimakSEfyIuoahzNOqQCA2gup6ETzm60SWcvmsN2M3DG5nSMpOq7CVLH/wcz94Whd5rn0QAAAABJRU5ErkJggg=="/>
    </defs>
</svg>
images/ratelimiting.svg000064400000007135150755146460011245 0ustar00<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 189.2 180.26"><defs><style>.a{fill:none;}</style></defs><title>ratelimiting</title><path class="a" d="M98.95,102.14a42.26,42.26,0,0,0,58.54,58.54c.89-.59,1.74-1.23,2.58-1.87L100.82,99.55C100.17,100.39,99.53,101.24,98.95,102.14Zm41.58,41.58a25.85,25.85,0,0,1-3.9,2.62.71.71,0,0,0-.05,1.22c5.3,3.53,2.28,9,.14,16a1.68,1.68,0,0,1-3.22-1l2.58-8.42c1-3.36-3.37-5.82-6.75-5-2.58.59-10.12,1.69-13.5.25a2,2,0,0,1-.64-3.31L129,132.2Zm-28.46-20.66a.71.71,0,0,0,1.22-.05,30.06,30.06,0,0,1,2.59-3.94l11.55,11.55-13.84,13.84c-1.69,1.69-4.56-.09-4.08-5.44a61.8,61.8,0,0,1,1-8.7c.79-3.45-1.77-7.75-5-6.75l-8.41,2.57a1.68,1.68,0,0,1-1-3.22l8.42-2.58A6.8,6.8,0,0,1,112.07,123.05Z"/><path class="a" d="M134.28,83a42,42,0,0,0-21.65,6c-.92.56-1.83,1.13-2.71,1.75l58.89,58.89c.62-.88,1.2-1.79,1.75-2.71a42.22,42.22,0,0,0-36.28-64Zm-7.52,20.16c-.21-3-.94-3.28-5.46-5.46L117.53,94a1.61,1.61,0,0,1,2.24-.74c10.07,5.09,10.06,4,10.51,13.48Zm14,14-8.32-8.31.07,0C142.49,108.55,143.08,114.42,140.76,117.19Zm1.71,1.71a4.61,4.61,0,0,1,7.36,2,23,23,0,0,1,1,6.33Zm23.19,23.19-3.85-3.85L160,134.76a3.37,3.37,0,0,0-2.84-1.84l-.76,0-3.54-3.55c9.06.43,8.15-.05,13.48,10.51A1.6,1.6,0,0,1,165.65,142.09Zm7.67-23.82a1.12,1.12,0,0,1-1.59,1.59l-3.09-3.09c-4.89-4.89-12.19-4.07-12.23-2.4-.09,3.59-1.6,5.83-3.85,8.08a19.76,19.76,0,0,0-15.39-15.39c2.22-2.22,4.44-3.76,8.09-3.85a1.07,1.07,0,0,0,1-.85A12.51,12.51,0,0,0,142.86,91l-3.09-3.09a1.12,1.12,0,0,1,1.59-1.59c3,3,8.93,7.7,7.12,16.51a.83.83,0,0,0,.56,1,10.52,10.52,0,0,1,6.82,6.82.83.83,0,0,0,1,.55C165.2,109.43,169.7,114.64,173.33,118.27Z"/><path d="M7.65,9.23V85.81A9.06,9.06,0,0,0,16.71,95H81.15a96.75,96.75,0,0,1,9.12-12H21.9a2.41,2.41,0,0,1-2.26-2.61V14.64A2.44,2.44,0,0,1,21.9,12H128.33a2.49,2.49,0,0,1,2.32,2.64V64.29c1-.07,2.33-.18,3.5-.18a63.93,63.93,0,0,1,8.5.66V9.23A9.14,9.14,0,0,0,133.52,0H16.71A9.09,9.09,0,0,0,7.65,9.23Z"/><path d="M4.75,124H73.13a59.11,59.11,0,0,1,3.93-20H10.35a4.65,4.65,0,0,0-4.2,2.42L.55,117a4.8,4.8,0,0,0,4.2,7Z"/><path d="M156.81,111.15a.83.83,0,0,1-1-.55,10.52,10.52,0,0,0-6.82-6.82.83.83,0,0,1-.56-1c1.81-8.81-4.16-13.56-7.12-16.51a1.12,1.12,0,0,0-1.59,1.59L142.86,91a12.51,12.51,0,0,1,3.42,11.38,1.07,1.07,0,0,1-1,.85c-3.65.09-5.87,1.63-8.09,3.85a19.76,19.76,0,0,1,15.39,15.39c2.25-2.25,3.76-4.49,3.85-8.08,0-1.67,7.35-2.48,12.23,2.4l3.09,3.09a1.12,1.12,0,0,0,1.59-1.59C169.7,114.64,165.2,109.43,156.81,111.15Z"/><path d="M152.91,129.34l3.54,3.55.76,0a3.37,3.37,0,0,1,2.84,1.84l1.76,3.48,3.85,3.85a1.6,1.6,0,0,0,.74-2.24C161.05,129.29,162,129.77,152.91,129.34Z"/><path d="M115.81,149.35c3.37,1.44,10.91.34,13.5-.25,3.39-.78,7.78,1.68,6.75,5l-2.58,8.42a1.68,1.68,0,0,0,3.22,1c2.14-7,5.16-12.46-.14-16a.71.71,0,0,1,.05-1.22,25.85,25.85,0,0,0,3.9-2.62L129,132.2,115.17,146A2,2,0,0,0,115.81,149.35Z"/><path d="M142.46,118.9l8.34,8.34a23,23,0,0,0-1-6.33A4.61,4.61,0,0,0,142.46,118.9Z"/><path d="M119.77,93.23a1.61,1.61,0,0,0-2.24.74l3.78,3.77c4.52,2.18,5.25,2.5,5.46,5.46l3.51,3.51C129.83,97.27,129.85,98.32,119.77,93.23Z"/><path d="M97.06,126.13l8.41-2.57c3.28-1,5.83,3.31,5,6.75a61.8,61.8,0,0,0-1,8.7c-.48,5.35,2.4,7.13,4.08,5.44l13.84-13.84-11.55-11.55a30.06,30.06,0,0,0-2.59,3.94.71.71,0,0,1-1.22.05,6.8,6.8,0,0,0-7.57-2.72l-8.42,2.58A1.68,1.68,0,0,0,97.06,126.13Z"/><path d="M132.51,108.9l-.07,0,8.32,8.31C143.08,114.42,142.49,108.55,132.51,108.9Z"/><path d="M134.28,70.42a54.92,54.92,0,1,0,54.92,54.92A55,55,0,0,0,134.28,70.42Zm23.21,90.25a42.26,42.26,0,0,1-58.54-58.54c.58-.89,1.22-1.74,1.87-2.59l59.25,59.25C159.23,159.45,158.38,160.09,157.49,160.68ZM170.56,147c-.55.92-1.13,1.83-1.75,2.71L109.92,90.81c.88-.62,1.79-1.19,2.71-1.75A42.22,42.22,0,0,1,170.56,147Z"/></svg>images/sort_desc_disabled.png000064400000000222150755146460012344 0ustar00�PNG


IHDR�Y�GYIDAT(�c`�
܉����w8�y'�2�;;��}wxq�gs�Tѻ;���e�3�l�F|�S�s���-Bɾ��N)a��ݙp���a
s�Bq��(IEND�B`�images/2fa1.svg000064400000041566150755146460007314 0ustar00<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 397.38 376.66"><defs><style>.a,.c,.r{fill:#9d1c1f;}.a,.q,.r{stroke:#c02026;}.a,.k,.l,.q,.r{stroke-miterlimit:10;}.a,.q{stroke-width:3.77px;}.b{isolation:isolate;}.d{clip-path:url(#a);}.e,.h{fill:#2d2d2d;}.f,.l{fill:#fff;}.g{fill:#525455;}.g,.h,.j,.p{fill-rule:evenodd;}.i,.j,.p{fill:#9e9e9f;}.k{fill:#f1f2f2;stroke-width:0.3px;}.k,.l{stroke:#525355;}.l{stroke-width:0.2px;}.m{fill:#9f9fa0;}.n{fill:#525355;}.o{fill:#008cc1;}.p{opacity:0.06;mix-blend-mode:multiply;}.q{fill:none;}.r{stroke-width:2.83px;}.s{fill:#f0f0f0;}</style><clipPath id="a"><circle class="a" cx="198.46" cy="209.28" r="165.5"/></clipPath></defs><title>2fa1</title><g class="b"><circle class="c" cx="198.46" cy="209.28" r="165.5"/><g class="d"><rect class="e" x="50.99" y="94.86" width="294.93" height="193.84" rx="10.2" ry="10.2"/><rect class="f" x="66.29" y="115.1" width="264.32" height="147.2"/><polygon class="g" points="51.22 288.7 346.15 288.7 397.38 310.5 0 310.5 51.22 288.7"/><path class="h" d="M0,310.49H397.38v5.72a7.4,7.4,0,0,1-7.37,7.37H7.37A7.39,7.39,0,0,1,0,316.21Z"/><rect class="i" x="158.55" y="314.52" width="80.27" height="5.12"/><path class="j" d="M58.3,290.45H85.87c-1.41.85-2.79,1.69-4.17,2.54H53.14Z"/><path class="j" d="M108.85,290.45h27.57L134.15,293h-28.6Z"/><path class="j" d="M159.4,290.45H187c-.1.85-.24,1.69-.38,2.54H158C158.47,292.14,159,291.29,159.4,290.45Z"/><path class="j" d="M210,290.45h27.6c.48.85,1,1.69,1.48,2.54H210.44C210.3,292.14,210.16,291.29,210,290.45Z"/><path class="j" d="M260.57,290.45h27.57c1.14.85,2.27,1.69,3.38,2.54h-28.6C262.16,292.14,261.37,291.29,260.57,290.45Z"/><path class="j" d="M311.16,290.45h27.6L344,293H315.36C314,292.14,312.57,291.29,311.16,290.45Z"/><path class="j" d="M49.82,294.62H79.14L75,297.16H44.65C46.34,296.31,48.1,295.46,49.82,294.62Z"/><path class="j" d="M103.2,294.82h29.32c-.76.85-1.55,1.69-2.27,2.54H99.9C101,296.51,102.1,295.66,103.2,294.82Z"/><path class="j" d="M157,294.82h29.36l-.41,2.54H155.55Z"/><path class="j" d="M210.78,294.82h29.36c.48.85,1,1.69,1.48,2.54H211.23C211.06,296.51,210.92,295.66,210.78,294.82Z"/><path class="j" d="M264.61,294.82h29.33l3.34,2.54H266.92C266.16,296.51,265.37,295.66,264.61,294.82Z"/><path class="j" d="M318.4,294.82h29.39l5.2,2.54H322.6C321.22,296.51,319.81,295.66,318.4,294.82Z"/><path class="j" d="M40.89,299H72c-1.41.85-2.76,1.69-4.17,2.54H35.73C37.45,300.68,39.14,299.83,40.89,299Z"/><path class="j" d="M97.48,299.19H128.6c-.79.85-1.52,1.69-2.27,2.54H94.21Z"/><path class="j" d="M154.51,299.19h31.15c-.17.85-.28,1.69-.41,2.54H153.1C153.58,300.88,154,300,154.51,299.19Z"/><path class="j" d="M211.54,299.19h31.15c.45.85,1,1.69,1.45,2.54H212C211.85,300.88,211.68,300,211.54,299.19Z"/><path class="j" d="M268.6,299.19h31.12c1.07.85,2.21,1.69,3.31,2.54H270.91C270.15,300.88,269.36,300,268.6,299.19Z"/><path class="j" d="M325.63,299.19h31.15l5.2,2.54H329.84C328.46,300.88,327,300,325.63,299.19Z"/><path class="j" d="M31.6,303.56H365.78c1.76.85,3.48,1.69,5.2,2.54H26.4C28.15,305.25,29.88,304.4,31.6,303.56Z"/><rect class="k" x="131.65" y="123.77" width="133.61" height="126.62"/><rect class="l" x="140.16" y="175.96" width="115.42" height="14.41"/><rect class="l" x="140.16" y="205.14" width="115.42" height="14.41"/><rect class="m" x="222.53" y="226.81" width="33.14" height="16.08" rx="3.18" ry="3.18"/><path class="n" d="M149.94,233.32h1.67a1.53,1.53,0,0,1,1.11.39,1.07,1.07,0,0,1,.3.77h0a1.14,1.14,0,0,1-1.06,1.13l1.19,1.59h-.54l-1.13-1.51h-1.11v1.51h-.44Zm1.63,2c.58,0,1-.3,1-.8h0c0-.48-.37-.77-1-.77h-1.2v1.58Z"/><path class="n" d="M155,236.91a1.19,1.19,0,0,0,.91-.41l.27.24a1.48,1.48,0,0,1-1.18.54,1.5,1.5,0,0,1-.05-3,1.37,1.37,0,0,1,1.34,1.52s0,.08,0,.15h-2.28A1,1,0,0,0,155,236.91Zm.84-1.3a.94.94,0,0,0-.92-1,1,1,0,0,0-.93,1Z"/><path class="n" d="M156.84,234.34h.43v.48a1,1,0,0,1,.93-.54,1,1,0,0,1,.92.57,1.14,1.14,0,0,1,1-.57,1,1,0,0,1,1.07,1.16v1.78h-.43v-1.68c0-.55-.28-.87-.74-.87a.8.8,0,0,0-.79.89v1.66h-.42v-1.69c0-.54-.28-.86-.74-.86a.83.83,0,0,0-.8.91v1.64h-.43Z"/><path class="n" d="M163.26,236.91a1.19,1.19,0,0,0,.91-.41l.27.24a1.48,1.48,0,0,1-1.18.54,1.5,1.5,0,0,1-.06-3,1.37,1.37,0,0,1,1.34,1.52s0,.08,0,.15h-2.28A1,1,0,0,0,163.26,236.91Zm.84-1.3a.94.94,0,0,0-.92-1,1,1,0,0,0-.93,1Z"/><path class="n" d="M165.14,234.34h.43v.48a1.05,1.05,0,0,1,.93-.54,1,1,0,0,1,.92.57,1.15,1.15,0,0,1,1-.57,1,1,0,0,1,1.07,1.16v1.78h-.43v-1.68c0-.55-.28-.87-.74-.87a.8.8,0,0,0-.79.89v1.66h-.42v-1.69c0-.54-.28-.86-.74-.86a.83.83,0,0,0-.8.91v1.64h-.43Z"/><path class="n" d="M170.71,236.66v.55h-.43v-4.05h.43v1.76a1.29,1.29,0,0,1,1.1-.64,1.4,1.4,0,0,1,1.37,1.49h0a1.41,1.41,0,0,1-1.37,1.49A1.3,1.3,0,0,1,170.71,236.66Zm2-.88h0a1,1,0,0,0-1-1.11,1.07,1.07,0,0,0-1,1.11h0a1.07,1.07,0,0,0,1,1.11A1,1,0,0,0,172.75,235.78Z"/><path class="n" d="M175.11,236.91a1.19,1.19,0,0,0,.9-.41l.27.24a1.48,1.48,0,0,1-1.18.54,1.5,1.5,0,0,1-.06-3,1.37,1.37,0,0,1,1.34,1.52s0,.08,0,.15h-2.28A1,1,0,0,0,175.11,236.91Zm.84-1.3a.94.94,0,0,0-.92-1,1,1,0,0,0-.93,1Z"/><path class="n" d="M177,234.34h.43v.75a1.23,1.23,0,0,1,1.17-.8v.46h0a1.16,1.16,0,0,0-1.14,1.32v1.14H177Z"/><path class="n" d="M180.7,233.32h.45l1.42,2.12,1.42-2.12h.44v3.89H184v-3.15l-1.42,2.08h0l-1.42-2.08v3.14h-.43Z"/><path class="n" d="M186.58,236.91a1.19,1.19,0,0,0,.91-.41l.27.24a1.48,1.48,0,0,1-1.18.54,1.5,1.5,0,0,1-.06-3,1.37,1.37,0,0,1,1.34,1.52s0,.08,0,.15h-2.28A1,1,0,0,0,186.58,236.91Zm.84-1.3a.94.94,0,0,0-.92-1,1,1,0,0,0-.93,1Z"/><path class="n" d="M140.71,168.07h2.81v.4h-2.37v1.33h2.12v.4h-2.12v1.36h2.4v.4h-2.84Z"/><path class="n" d="M144.22,169.09h.43v.48a1,1,0,0,1,.93-.54,1,1,0,0,1,.92.57,1.15,1.15,0,0,1,1-.57,1,1,0,0,1,1.07,1.16V172h-.43v-1.68c0-.55-.28-.87-.74-.87a.8.8,0,0,0-.79.89V172h-.42v-1.69c0-.54-.28-.86-.74-.86a.83.83,0,0,0-.8.91V172h-.43Z"/><path class="n" d="M149.15,171.13h0c0-.62.5-.94,1.23-.94a3,3,0,0,1,.88.12v-.09c0-.51-.31-.78-.85-.78a2,2,0,0,0-.87.21l-.13-.35a2.35,2.35,0,0,1,1-.24,1.27,1.27,0,0,1,.93.32,1.14,1.14,0,0,1,.3.84V172h-.42v-.43a1.26,1.26,0,0,1-1,.49A1,1,0,0,1,149.15,171.13Zm2.11-.22v-.27a3,3,0,0,0-.84-.12c-.53,0-.84.23-.84.58h0c0,.36.33.57.72.57A.86.86,0,0,0,151.26,170.91Z"/><path class="n" d="M152.46,168h.49v.47h-.49Zm0,1.1h.43V172h-.43Z"/><path class="n" d="M153.81,167.91h.43V172h-.43Z"/><path class="n" d="M156.44,170.54h0a1.5,1.5,0,0,1,3,0h0a1.49,1.49,0,0,1-1.5,1.5A1.47,1.47,0,0,1,156.44,170.54Zm2.56,0h0a1.09,1.09,0,0,0-1.07-1.12,1.06,1.06,0,0,0-1.05,1.11h0a1.08,1.08,0,0,0,1.06,1.12A1.06,1.06,0,0,0,159,170.54Z"/><path class="n" d="M160.07,169.09h.43v.75a1.23,1.23,0,0,1,1.17-.8v.46h0a1.16,1.16,0,0,0-1.14,1.32V172h-.43Z"/><path class="n" d="M163.72,170.34v-2.26h.44v2.23c0,.84.45,1.31,1.19,1.31s1.17-.43,1.17-1.28v-2.26H167v2.23a1.62,1.62,0,1,1-3.24,0Z"/><path class="n" d="M167.55,171.6l.22-.31a1.68,1.68,0,0,0,1,.37c.34,0,.59-.18.59-.46h0c0-.29-.34-.4-.72-.5s-1-.28-1-.81h0a.87.87,0,0,1,1-.82,2,2,0,0,1,1,.32l-.19.32a1.63,1.63,0,0,0-.85-.28c-.34,0-.56.18-.56.42h0c0,.27.36.38.74.49s.92.31.92.82h0a.9.9,0,0,1-1,.86A2,2,0,0,1,167.55,171.6Z"/><path class="n" d="M171.69,171.66a1.19,1.19,0,0,0,.91-.41l.27.24a1.48,1.48,0,0,1-1.18.54,1.5,1.5,0,0,1-.06-3,1.37,1.37,0,0,1,1.34,1.52s0,.08,0,.15h-2.28A1,1,0,0,0,171.69,171.66Zm.84-1.3a.94.94,0,0,0-.92-1,1,1,0,0,0-.93,1Z"/><path class="n" d="M173.57,169.09H174v.75a1.23,1.23,0,0,1,1.17-.8v.46h0a1.16,1.16,0,0,0-1.14,1.32V172h-.43Z"/><path class="n" d="M175.68,169.09h.43v.5a1.09,1.09,0,0,1,1-.56,1,1,0,0,1,1.1,1.15V172h-.43v-1.68a.77.77,0,0,0-.79-.87.84.84,0,0,0-.86.9V172h-.43Z"/><path class="n" d="M178.75,171.13h0c0-.62.5-.94,1.23-.94a3,3,0,0,1,.88.12v-.09c0-.51-.31-.78-.85-.78a2,2,0,0,0-.87.21l-.13-.35a2.36,2.36,0,0,1,1-.24,1.28,1.28,0,0,1,.93.32,1.14,1.14,0,0,1,.3.84V172h-.42v-.43a1.26,1.26,0,0,1-1,.49A1,1,0,0,1,178.75,171.13Zm2.11-.22v-.27a3,3,0,0,0-.84-.12c-.53,0-.84.23-.84.58h0c0,.36.33.57.72.57A.86.86,0,0,0,180.86,170.91Z"/><path class="n" d="M182,169.09h.43v.48a1,1,0,0,1,.93-.54,1,1,0,0,1,.92.57,1.14,1.14,0,0,1,1-.57,1,1,0,0,1,1.07,1.16V172H186v-1.68c0-.55-.28-.87-.74-.87a.8.8,0,0,0-.79.89V172H184v-1.69c0-.54-.28-.86-.74-.86a.83.83,0,0,0-.8.91V172H182Z"/><path class="n" d="M188.46,171.66a1.19,1.19,0,0,0,.91-.41l.27.24a1.48,1.48,0,0,1-1.18.54,1.5,1.5,0,0,1-.05-3,1.37,1.37,0,0,1,1.34,1.52s0,.08,0,.15h-2.28A1,1,0,0,0,188.46,171.66Zm.84-1.3a.94.94,0,0,0-.92-1,1,1,0,0,0-.93,1Z"/><path class="n" d="M140.71,197.77h1.46c.88,0,1.46.47,1.46,1.23h0c0,.84-.7,1.27-1.53,1.27h-.94v1.37h-.44Zm1.4,2.12c.64,0,1.07-.34,1.07-.86h0c0-.55-.42-.84-1-.84h-1v1.71Z"/><path class="n" d="M143.94,200.83h0c0-.62.5-.94,1.23-.94a3,3,0,0,1,.88.12v-.09c0-.51-.31-.78-.85-.78a2,2,0,0,0-.87.21l-.13-.35a2.36,2.36,0,0,1,1-.24,1.28,1.28,0,0,1,.93.32,1.14,1.14,0,0,1,.3.84v1.75H146v-.43a1.26,1.26,0,0,1-1,.49A1,1,0,0,1,143.94,200.83Zm2.11-.22v-.27a3,3,0,0,0-.84-.12c-.53,0-.84.23-.84.58h0c0,.36.33.57.72.57A.86.86,0,0,0,146.05,200.6Z"/><path class="n" d="M147,201.29l.22-.31a1.68,1.68,0,0,0,1,.37c.34,0,.59-.18.59-.46h0c0-.29-.34-.4-.72-.5s-1-.28-1-.81h0a.87.87,0,0,1,1-.82,2,2,0,0,1,1,.32l-.19.32a1.63,1.63,0,0,0-.85-.28c-.34,0-.56.18-.56.42h0c0,.27.36.38.74.49s.92.31.92.82h0a.9.9,0,0,1-1,.86A2,2,0,0,1,147,201.29Z"/><path class="n" d="M149.57,201.29l.22-.31a1.67,1.67,0,0,0,1,.37c.34,0,.59-.18.59-.46h0c0-.29-.34-.4-.72-.5s-.95-.28-.95-.81h0a.87.87,0,0,1,1-.82,2,2,0,0,1,1,.32l-.19.32a1.63,1.63,0,0,0-.85-.28c-.34,0-.56.18-.56.42h0c0,.27.36.38.74.49s.92.31.92.82h0a.9.9,0,0,1-1,.86A2,2,0,0,1,149.57,201.29Z"/><path class="n" d="M152.11,198.79h.46l.76,2.3.77-2.32h.36l.78,2.32.75-2.3h.44l-1,2.89H155l-.77-2.27-.78,2.27h-.38Z"/><path class="n" d="M156.68,200.24h0a1.5,1.5,0,0,1,3,0h0a1.49,1.49,0,0,1-1.5,1.5A1.47,1.47,0,0,1,156.68,200.24Zm2.55,0h0a1.09,1.09,0,0,0-1.07-1.12,1.06,1.06,0,0,0-1,1.11h0a1.08,1.08,0,0,0,1.06,1.12A1.06,1.06,0,0,0,159.24,200.24Z"/><path class="n" d="M160.31,198.79h.43v.75a1.23,1.23,0,0,1,1.17-.8v.46h0a1.16,1.16,0,0,0-1.14,1.32v1.14h-.43Z"/><path class="n" d="M162.14,200.23h0a1.41,1.41,0,0,1,1.37-1.49,1.29,1.29,0,0,1,1.1.61V197.6H165v4.05h-.43v-.58a1.29,1.29,0,0,1-1.1.64A1.4,1.4,0,0,1,162.14,200.23Zm2.49,0h0a1.07,1.07,0,0,0-1-1.11,1,1,0,0,0-1,1.11h0a1,1,0,0,0,1,1.11A1.07,1.07,0,0,0,164.63,200.23Z"/><path class="n" d="M144.65,183.59v-1.78h.43v1.68a.77.77,0,0,0,.79.87.85.85,0,0,0,.86-.9v-1.64h.42v2.87h-.42v-.5a1.09,1.09,0,0,1-1,.56A1,1,0,0,1,144.65,183.59Z"/><path class="n" d="M147.74,184.31,148,184a1.68,1.68,0,0,0,1,.37c.34,0,.59-.18.59-.46h0c0-.29-.34-.4-.72-.5s-1-.28-1-.81h0a.87.87,0,0,1,1-.82,2,2,0,0,1,1,.32l-.19.32a1.63,1.63,0,0,0-.85-.28c-.34,0-.56.18-.56.42h0c0,.27.36.38.74.49s.92.31.92.82h0a.9.9,0,0,1-1,.86A2,2,0,0,1,147.74,184.31Z"/><path class="n" d="M151.88,184.37a1.19,1.19,0,0,0,.91-.41l.27.24a1.48,1.48,0,0,1-1.18.54,1.5,1.5,0,0,1-.06-3,1.37,1.37,0,0,1,1.34,1.52s0,.08,0,.15h-2.28A1,1,0,0,0,151.88,184.37Zm.84-1.3a.94.94,0,0,0-.92-1,1,1,0,0,0-.93,1Z"/><path class="n" d="M153.76,181.81h.43v.75a1.23,1.23,0,0,1,1.17-.8v.46h0a1.16,1.16,0,0,0-1.14,1.32v1.14h-.43Z"/><path class="n" d="M155.69,183.16a2.43,2.43,0,0,1,2.43-2.43,2.34,2.34,0,0,1,2.42,2.2c0,.94-.53,1.36-1,1.36a.77.77,0,0,1-.78-.47,1.16,1.16,0,0,1-.92.47,1,1,0,0,1-1-1,1.37,1.37,0,0,1,1.28-1.38.88.88,0,0,1,.81.46L159,182l.37,0-.22,1.26a2.13,2.13,0,0,0,0,.34.42.42,0,0,0,.47.45c.39,0,.78-.36.78-1.14a2.15,2.15,0,0,0-2.22-2,2.24,2.24,0,1,0,0,4.48,2.54,2.54,0,0,0,1.38-.38l.09.15a2.72,2.72,0,0,1-1.47.42A2.42,2.42,0,0,1,155.69,183.16Zm3.12-.22a.67.67,0,0,0-.68-.71,1,1,0,0,0-.91,1,.64.64,0,0,0,.68.69A1,1,0,0,0,158.81,182.94Z"/><path class="n" d="M161,183.85h0c0-.62.5-.94,1.23-.94a3,3,0,0,1,.88.12v-.09c0-.51-.31-.78-.85-.78a2,2,0,0,0-.87.21l-.13-.35a2.35,2.35,0,0,1,1-.24,1.27,1.27,0,0,1,.93.32,1.14,1.14,0,0,1,.3.84v1.75h-.42v-.43a1.26,1.26,0,0,1-1,.49A1,1,0,0,1,161,183.85Zm2.11-.22v-.27a3,3,0,0,0-.84-.12c-.53,0-.84.23-.84.58h0c0,.36.33.57.72.57A.86.86,0,0,0,163.07,183.62Z"/><path class="n" d="M164.08,183.26h0a1.5,1.5,0,0,1,2.62-1l-.28.3a1.16,1.16,0,0,0-.87-.43,1.06,1.06,0,0,0-1,1.11h0a1.07,1.07,0,0,0,1.05,1.12,1.19,1.19,0,0,0,.88-.43l.27.25a1.49,1.49,0,0,1-2.64-.93Z"/><path class="n" d="M167,183.26h0a1.5,1.5,0,0,1,2.62-1l-.28.3a1.16,1.16,0,0,0-.87-.43,1.06,1.06,0,0,0-1,1.11h0a1.07,1.07,0,0,0,1.05,1.12,1.18,1.18,0,0,0,.88-.43l.27.25a1.49,1.49,0,0,1-2.64-.93Z"/><path class="n" d="M170,183.26h0a1.5,1.5,0,0,1,3,0h0a1.49,1.49,0,0,1-1.5,1.5A1.47,1.47,0,0,1,170,183.26Zm2.56,0h0a1.09,1.09,0,0,0-1.07-1.12,1.06,1.06,0,0,0-1,1.11h0a1.08,1.08,0,0,0,1.06,1.12A1.06,1.06,0,0,0,172.54,183.26Z"/><path class="n" d="M173.57,183.59v-1.78H174v1.68a.77.77,0,0,0,.79.87.85.85,0,0,0,.86-.9v-1.64h.42v2.87h-.42v-.5a1.1,1.1,0,0,1-1,.56A1,1,0,0,1,173.57,183.59Z"/><path class="n" d="M176.9,181.81h.43v.5a1.09,1.09,0,0,1,1-.56,1,1,0,0,1,1.1,1.15v1.78H179V183a.77.77,0,0,0-.79-.87.84.84,0,0,0-.86.9v1.64h-.43Z"/><path class="n" d="M180.33,183.92v-1.73h-.4v-.38h.4v-.87h.43v.87h.91v.38h-.91v1.68a.42.42,0,0,0,.48.48.9.9,0,0,0,.42-.1v.37a1.08,1.08,0,0,1-.52.12A.73.73,0,0,1,180.33,183.92Z"/><path class="n" d="M182.24,184.1h.51v.58h-.51Z"/><path class="n" d="M183.22,183.26h0a1.5,1.5,0,0,1,2.62-1l-.28.3a1.16,1.16,0,0,0-.87-.43,1.06,1.06,0,0,0-1,1.11h0a1.07,1.07,0,0,0,1.06,1.12,1.19,1.19,0,0,0,.88-.43l.27.25a1.49,1.49,0,0,1-2.64-.93Z"/><path class="n" d="M186.17,183.26h0a1.5,1.5,0,0,1,3,0h0a1.49,1.49,0,0,1-1.5,1.5A1.47,1.47,0,0,1,186.17,183.26Zm2.56,0h0a1.09,1.09,0,0,0-1.07-1.12,1.06,1.06,0,0,0-1,1.11h0a1.08,1.08,0,0,0,1.06,1.12A1.06,1.06,0,0,0,188.73,183.26Z"/><path class="n" d="M189.8,181.81h.43v.48a1.05,1.05,0,0,1,.93-.54,1,1,0,0,1,.92.57,1.15,1.15,0,0,1,1-.57,1,1,0,0,1,1.07,1.16v1.78h-.43V183c0-.55-.28-.87-.74-.87a.8.8,0,0,0-.79.89v1.66h-.42V183c0-.54-.28-.86-.74-.86a.83.83,0,0,0-.8.91v1.64h-.43Z"/><path class="n" d="M145.33,211.48l-.57.41-.15-.26.64-.29-.64-.3.15-.25.57.4-.06-.69h.29l-.05.69.57-.4.15.25-.64.3.64.29-.15.26-.57-.41.05.69h-.29Z"/><path class="n" d="M147.58,211.48l-.57.41-.15-.26.64-.29-.64-.3.15-.25.57.4-.06-.69h.29l-.05.69.57-.4.15.25-.64.3.64.29-.15.26-.57-.41.05.69h-.29Z"/><path class="n" d="M149.83,211.48l-.57.41-.15-.26.64-.29-.64-.3.15-.25.57.4-.06-.69h.29l-.06.69.57-.4.15.25-.64.3.64.29-.15.26-.57-.41.06.69h-.29Z"/><path class="n" d="M152.08,211.48l-.57.41-.15-.26.64-.29-.64-.3.15-.25.57.4-.06-.69h.29l-.05.69.57-.4.15.25-.64.3.64.29-.15.26-.57-.41.05.69H152Z"/><path class="n" d="M154.33,211.48l-.57.41-.15-.26.64-.29-.64-.3.15-.25.57.4-.05-.69h.29l-.06.69.57-.4.15.25-.64.3.64.29-.15.26-.57-.41.06.69h-.29Z"/><path class="n" d="M156.58,211.48l-.57.41-.15-.26.64-.29-.64-.3.15-.25.57.4-.06-.69h.29l-.06.69.57-.4.15.25-.64.3.64.29-.15.26-.57-.41.06.69h-.29Z"/><path class="n" d="M158.83,211.48l-.57.41-.15-.26.64-.29-.64-.3.15-.25.57.4-.06-.69h.29l-.05.69.57-.4.15.25-.64.3.64.29-.15.26-.57-.41.05.69h-.29Z"/><path class="n" d="M161.08,211.48l-.57.41-.15-.26.64-.29-.64-.3.15-.25.57.4-.05-.69h.29l-.06.69.57-.4.15.25-.64.3.64.29-.15.26-.57-.41.06.69H161Z"/><path class="n" d="M163.33,211.48l-.57.41-.15-.26.64-.29-.64-.3.15-.25.57.4-.06-.69h.29l-.05.69.57-.4.15.25-.64.3.64.29-.15.26-.57-.41.05.69h-.29Z"/><path class="n" d="M165.58,211.48l-.57.41-.15-.26.64-.29-.64-.3.15-.25.57.4-.06-.69h.29l-.05.69.57-.4.15.25-.64.3.64.29-.15.26-.57-.41.05.69h-.29Z"/><path class="n" d="M167.83,211.48l-.57.41-.15-.26.64-.29-.64-.3.15-.25.57.4-.06-.69h.29l-.06.69.57-.4.15.25-.64.3.64.29-.15.26-.57-.41.06.69h-.29Z"/><path class="n" d="M170.08,211.48l-.57.41-.15-.26.64-.29-.64-.3.15-.25.57.4-.06-.69h.29l-.05.69.57-.4.15.25-.64.3.64.29-.15.26-.57-.41.05.69H170Z"/><path class="n" d="M172.33,211.48l-.57.41-.15-.26.64-.29-.64-.3.15-.25.57.4-.06-.69h.29l-.05.69.57-.4.15.25-.64.3.64.29-.15.26-.57-.41.05.69h-.29Z"/><path class="n" d="M174.58,211.48l-.57.41-.15-.26.64-.29-.64-.3.15-.25.57.4-.06-.69h.29l-.06.69.57-.4.15.25-.64.3.64.29-.15.26-.57-.41.06.69h-.29Z"/><path class="n" d="M176.84,211.48l-.57.41-.15-.26.64-.29-.64-.3.15-.25.57.4-.06-.69h.29l-.05.69.57-.4.15.25-.64.3.64.29-.15.26-.57-.41.05.69h-.29Z"/><path class="n" d="M179.09,211.48l-.57.41-.15-.26.64-.29-.64-.3.15-.25.57.4-.05-.69h.29l-.06.69.57-.4.15.25-.64.3.64.29-.15.26-.57-.41.06.69H179Z"/><path class="n" d="M181.34,211.48l-.57.41-.15-.26.64-.29-.64-.3.15-.25.57.4-.06-.69h.29l-.06.69.57-.4.15.25-.64.3.64.29-.15.26-.57-.41.06.69h-.29Z"/><path class="n" d="M183.59,211.48l-.57.41-.15-.26.64-.29-.64-.3.15-.25.57.4-.06-.69h.29l-.05.69.57-.4.15.25-.64.3.64.29-.15.26-.57-.41.05.69h-.29Z"/><circle class="o" cx="198.25" cy="146.24" r="15.23"/><path class="f" d="M190.77,150.66l-2.67-7.85h-1v-1.58h4.22v1.58h-1l1.52,4.5,1.43-4.5h-.85v-1.58h3.37v1.58H195l1.54,4.5,1.48-4.5H197v-1.58h3.75v1.58h-1l-2.59,7.85h-1.75L194,146.38l-1.39,4.28Z"/><path class="f" d="M206.2,149v1.58h-4.94V149h1.19v-6.2h-1.19v-1.58h4.94a4,4,0,0,1,2.66.81,2.72,2.72,0,0,1,.94,2.18,3,3,0,0,1-.33,1.42,2.53,2.53,0,0,1-.85,1,3.17,3.17,0,0,1-1.18.46,9.21,9.21,0,0,1-1.66.12h-.9V149Zm-1.31-3.38h.36a2.22,2.22,0,0,0,1.61-.41,1.47,1.47,0,0,0,.36-1,1.5,1.5,0,0,0-.25-.87,1,1,0,0,0-.57-.44,4.67,4.67,0,0,0-1.06-.08h-.46Z"/><rect class="l" x="140.07" y="232.16" width="6.04" height="6.04"/><polygon class="p" points="113.39 115.11 330.85 115.11 330.85 262.31 278.65 262.31 113.39 115.11"/></g><circle class="q" cx="198.46" cy="209.28" r="165.5"/><circle class="r" cx="198.46" cy="43.22" r="41.81"/><path class="s" d="M190.32,57.44V52H195V28.82h-5V23.35h12.5V52H207v5.46Z"/></g></svg>images/wf-error-badge.svg000064400000022750150755146460011360 0ustar00<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 24.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 772.86 772.86"><circle class="st0" cx="386.24" cy="383.35" r="367.07"/><path class="st1" d="M135.67 270.42l19.89 10.06 -2.09 4.12 -48.83-24.7 8.42-16.63c2.57-5.07 5.89-8.43 9.97-10.05 4.08-1.63 8.39-1.29 12.93 1 4.58 2.32 7.4 5.52 8.47 9.61 1.06 4.09 0.24 8.82-2.48 14.18L135.67 270.42zM132.18 268.65l6.33-12.51c2.03-4 2.62-7.53 1.78-10.6 -0.84-3.06-2.96-5.46-6.37-7.18 -3.38-1.71-6.6-2.03-9.66-0.95 -3.06 1.08-5.59 3.53-7.58 7.35l-6.46 12.78L132.18 268.65z"/><path class="st1" d="M173.84 208.59l-9.98 12.38 17.76 14.32 -2.92 3.63 -42.6-34.34 11.16-13.84c3.66-4.54 7.63-7.21 11.89-7.99 4.26-0.78 8.37 0.42 12.32 3.61 2.73 2.2 4.49 4.94 5.28 8.22 0.8 3.28 0.51 6.59-0.86 9.92l26.73 3.97 0.38 0.31 -3.09 3.83L173.84 208.59zM160.82 218.51l8.89-11.03c2.44-3.02 3.53-6.14 3.29-9.36 -0.24-3.22-1.73-5.93-4.46-8.14 -3.01-2.42-6.11-3.35-9.32-2.78 -3.2 0.57-6.19 2.59-8.98 6.04l-8.18 10.15L160.82 218.51z"/><path class="st1" d="M230.22 153.92c3.15 3.93 5.23 7.93 6.25 11.99 1.02 4.06 0.91 7.9-0.33 11.53 -1.24 3.62-3.51 6.76-6.82 9.4 -4.99 3.99-10.45 5.43-16.38 4.32 -5.93-1.11-11.32-4.7-16.17-10.77l-3.52-4.4c-3.11-3.89-5.18-7.89-6.21-12 -1.02-4.11-0.92-7.98 0.31-11.61 1.23-3.63 3.49-6.76 6.78-9.39 3.29-2.63 6.82-4.16 10.6-4.58 3.78-0.43 7.52 0.26 11.2 2.06 3.69 1.8 7.08 4.58 10.2 8.35L230.22 153.92zM222.9 152.17c-4.12-5.15-8.5-8.24-13.16-9.3 -4.66-1.05-9.02 0.04-13.07 3.28 -3.97 3.18-5.97 7.17-5.99 11.98 -0.02 4.81 2.07 9.84 6.26 15.08l3.57 4.46c4.05 5.07 8.44 8.14 13.16 9.23 4.72 1.09 9.09 0.02 13.12-3.21 4.09-3.27 6.11-7.28 6.06-12.04 -0.05-4.76-2.16-9.75-6.34-14.97L222.9 152.17z"/><path class="st1" d="M269.33 102.91l-16.76 8.41 22.79 45.42 -4.13 2.07 -22.79-45.42 -16.73 8.39 -1.75-3.49 37.62-18.88L269.33 102.91z"/><path class="st1" d="M327.63 110.65l-24.69 6.72 5.86 21.54 28.39-7.73 1.03 3.77 -32.85 8.95 -14.38-52.8 32.67-8.9 1.03 3.77 -28.21 7.68 5.43 19.94 24.7-6.72L327.63 110.65z"/><path class="st1" d="M390.45 113.31c-0.28 5.79-2.07 10.32-5.38 13.58 -3.3 3.26-7.86 5.07-13.66 5.42 -4.05 0.24-7.69-0.55-10.93-2.39 -3.23-1.84-5.82-4.56-7.74-8.17 -1.92-3.61-3.04-7.8-3.36-12.58l-0.43-7.09c-0.29-4.85 0.3-9.21 1.77-13.06 1.47-3.85 3.74-6.9 6.81-9.13 3.07-2.23 6.67-3.47 10.83-3.72 5.85-0.35 10.57 0.94 14.15 3.89 3.58 2.95 5.81 7.19 6.7 12.74l-4.65 0.28c-1.71-9.21-7.03-13.55-15.96-13.01 -4.95 0.3-8.79 2.39-11.5 6.27 -2.72 3.88-3.88 9.09-3.48 15.62l0.4 6.68c0.38 6.31 2.11 11.25 5.2 14.83 3.09 3.58 7.07 5.23 11.95 4.93 4.83-0.29 8.4-1.67 10.71-4.13 2.31-2.46 3.62-6.02 3.91-10.68L390.45 113.31z"/><path class="st1" d="M450.7 86.44l-18.56-2.68 -7.26 50.29 -4.58-0.66 7.26-50.29 -18.52-2.67 0.56-3.87 41.66 6.01L450.7 86.44z"/><path class="st1" d="M494.13 126.12l-24.11-8.6 -7.5 21.03 27.72 9.88 -1.31 3.68 -32.07-11.44 18.38-51.54 31.9 11.37 -1.31 3.68 -27.54-9.82 -6.94 19.47 24.11 8.6L494.13 126.12z"/><path class="st1" d="M502.25 158.58l28.59-46.66 13.04 7.99c3.82 2.34 6.72 5.31 8.69 8.92 1.97 3.6 2.8 7.54 2.51 11.83 -0.29 4.29-1.71 8.5-4.25 12.65l-2.63 4.29c-2.55 4.17-5.66 7.34-9.33 9.54 -3.67 2.19-7.57 3.22-11.71 3.1 -4.14-0.13-8.2-1.41-12.17-3.84L502.25 158.58zM532.74 117.67l-24.51 39.99 8.85 5.42c4.91 3.01 9.85 3.8 14.82 2.36 4.97-1.44 9.15-4.94 12.56-10.5l2.52-4.1c3.29-5.37 4.46-10.56 3.51-15.58 -0.95-5.02-3.81-9.01-8.58-11.96L532.74 117.67z"/><path class="st1" d="M573.7 213.78l42.89-33.98 10.03 12.67c3.64 4.6 5.45 8.83 5.44 12.71 -0.01 3.88-1.87 7.28-5.56 10.21 -2.22 1.76-4.63 2.68-7.23 2.78 -2.6 0.09-5.08-0.63-7.46-2.17 1.43 2.93 1.79 5.91 1.09 8.94 -0.7 3.03-2.29 5.53-4.79 7.51 -3.79 3-7.72 4.12-11.78 3.36 -4.07-0.76-7.83-3.32-11.28-7.68L573.7 213.78zM597.17 201.09l-17.53 13.89 8.61 10.87c2.46 3.1 5.19 4.94 8.21 5.5 3.02 0.57 5.93-0.26 8.73-2.48 2.65-2.1 4.05-4.62 4.21-7.58 0.16-2.96-0.97-5.97-3.4-9.03L597.17 201.09zM600.23 198.67l7.84 9.9c2.45 2.98 5.02 4.75 7.71 5.33 2.68 0.58 5.33-0.17 7.95-2.25 2.75-2.18 4.1-4.65 4.05-7.41 -0.05-2.76-1.46-5.87-4.21-9.35l-7.16-9.04L600.23 198.67z"/><path class="st1" d="M632.98 257.12l34.18 1.28 2.43 4.75 -39.39-2.04 -18.33 9.39 -2.11-4.12 18.33-9.39 21.38-33.12 2.5 4.88L632.98 257.12z"/><path class="st1" d="M99.71 463.6l-9.61 5.23 9.95-1.21L159.4 463l3.16 8.57 -48.24 34.71 -8.53 5.55 10.97-2.19 57.08-7.51 3.77 10.21 -83.89 9.78 -3.42-9.25 50.25-36.59 5.42-3.38 -6.32 0.95 -62.18 4.28 -3.42-9.25 70.12-47.06 3.75 10.15L99.71 463.6z"/><path class="st1" d="M196.63 597.31c-5.99 5.37-12.12 9.04-18.39 11.03 -6.27 1.98-12.24 2.18-17.9 0.59 -5.66-1.59-10.7-4.85-15.11-9.77 -4.31-4.82-6.95-10.14-7.92-15.99 -0.97-5.84-0.19-11.75 2.35-17.74 2.54-5.98 6.66-11.58 12.38-16.8l4.41-3.95c5.88-5.27 11.99-8.9 18.32-10.89 6.34-1.99 12.38-2.19 18.12-0.6 5.74 1.59 10.77 4.8 15.08 9.61 4.39 4.9 7.07 10.28 8.05 16.13 0.98 5.86 0.13 11.81-2.56 17.84 -2.69 6.04-7.01 11.73-12.98 17.07L196.63 597.31zM193.4 585.75c7.25-6.49 11.51-12.93 12.78-19.32 1.27-6.39-0.44-12.19-5.13-17.43 -4.56-5.1-10.09-7.37-16.59-6.82 -6.5 0.55-13.23 3.86-20.19 9.95l-4.49 4.02c-7.03 6.3-11.23 12.72-12.6 19.27 -1.37 6.55 0.26 12.42 4.9 17.6 4.66 5.21 10.17 7.54 16.52 7 6.35-0.54 13.11-3.94 20.26-10.2L193.4 585.75z"/><path class="st1" d="M245.54 636.08l-16.7-9.63 -16.59 28.76 -9.43-5.44 41.01-71.1 23.54 13.58c8.01 4.62 13.12 10 15.33 16.13 2.21 6.13 1.31 12.68-2.71 19.65 -2.55 4.43-5.98 7.59-10.26 9.5 -4.29 1.91-9.04 2.45-14.24 1.61l-0.71 39.81 -0.34 0.59 -10.06-5.8L245.54 636.08zM233.26 618.78l14.41 8.31c4.66 2.69 9.05 3.61 13.2 2.79 4.14-0.83 7.38-3.26 9.71-7.31 2.54-4.4 3.18-8.53 1.91-12.39 -1.27-3.86-4.36-7.23-9.29-10.12l-14.36-8.28L233.26 618.78z"/><path class="st1" d="M291.35 692.84l17.02-80.3 22.67 4.8c6.98 1.48 12.83 4.33 17.55 8.56 4.71 4.23 7.93 9.5 9.64 15.82 1.71 6.32 1.81 13.17 0.28 20.57l-1.09 5.13c-1.61 7.57-4.47 13.9-8.61 18.98 -4.13 5.08-9.23 8.57-15.3 10.47 -6.07 1.9-12.72 2.13-19.94 0.67L291.35 692.84zM317.12 623.45l-13.35 62.98 11.14 2.36c8.16 1.73 15.05 0.54 20.67-3.58s9.42-10.86 11.41-20.25l0.99-4.69c1.93-9.13 1.3-16.67-1.91-22.64 -3.21-5.97-8.74-9.82-16.59-11.56L317.12 623.45z"/><path class="st1" d="M434.33 666.38l-34.31 3 3.16 36.11 -10.78 0.94 -7.15-81.77 50.66-4.43 0.77 8.82 -39.87 3.48 2.45 28.02 34.31-3L434.33 666.38z"/><path class="st1" d="M510.32 640.43l-33.18 12.83 10.49 27.13 38.54-14.9 3.19 8.26 -48.64 18.8 -29.6-76.56 48.11-18.6 3.19 8.26 -38.02 14.7 9.53 24.66 33.18-12.83L510.32 640.43z"/><path class="st1" d="M614.06 613.59l-8.44 6.87 -71.98-22.95 39.94 49.05 -8.44 6.87 -51.83-63.65 8.44-6.87 72.25 23.1 -40.12-49.26 8.35-6.8L614.06 613.59z"/><path class="st1" d="M654.98 512.51c6.83 5.46 10.82 11.72 11.97 18.79 1.15 7.07-0.65 14.4-5.38 21.99 -5.13 8.23-12.19 12.98-21.18 14.26 -8.99 1.28-18.43-1.16-28.32-7.33l-6.7-4.18c-6.47-4.04-11.44-8.75-14.91-14.12 -3.47-5.37-5.2-11-5.18-16.88 0.01-5.88 1.76-11.61 5.24-17.19 4.62-7.4 10.38-12.04 17.29-13.93 6.91-1.89 14.25-0.92 22.01 2.9l-5.76 9.23c-6.06-2.67-11.17-3.46-15.33-2.35 -4.16 1.11-7.73 4.05-10.71 8.84 -3.66 5.87-4.36 11.82-2.1 17.86 2.26 6.04 7.4 11.56 15.41 16.55l6.75 4.21c7.56 4.72 14.57 6.89 21 6.52s11.43-3.39 14.97-9.07c3.18-5.1 4.47-9.74 3.86-13.91 -0.61-4.17-3.51-8.49-8.69-12.96L654.98 512.51z"/><path class="st1" d="M667.34 432.9l-8.96 34.42 28.15 7.33 10.42-39.99 8.56 2.23 -13.14 50.46 -79.43-20.68 13-49.92 8.57 2.23 -10.27 39.44 25.59 6.66 8.96-34.42L667.34 432.9z"/><path class="st1" d="M555.22 263.5c-89.43-2.89-168.99-50.48-168.99-50.48s-79.55 47.6-168.98 50.48c0 0-19.2 76.66-9.83 165.04 7.5-3.84 19.65-9.56 35.94-15.59l0-66.2 -4.91 0.02 12.05-27.68 12.56 27.58 -4.9 0.02v61.1c13.75-4.5 29.67-8.92 47.58-12.65v-72.93l-4.91 0.02 12.05-27.68 12.56 27.58 -4.9 0.02v70.17c16.8-2.93 35.1-5.17 54.77-6.28 1.17-16.26 1.74-31.12 1.79-41.18 0-0.02 0-0.04 0-0.06 0.08-16.78-0.76-25.82-0.76-25.82 -0.56-0.67-1.05-1.4-1.46-2.18 -0.89-1.67-1.42-3.56-1.42-5.59 0-0.64 0.08-1.26 0.18-1.87 0.01-0.05 0.01-0.11 0.02-0.16l-6.42-0.03 0.18-0.4 18.81-41.33 0.01-0.01 0.01 0.01 18.81 41.33 0.18 0.4 -6.42 0.03c0.01 0.05 0.01 0.11 0.02 0.16 0.1 0.61 0.18 1.23 0.18 1.87 0 2.03-0.53 3.92-1.42 5.59 -0.41 0.78-0.9 1.51-1.46 2.18 0 0-0.84 9.04-0.76 25.82 0 0.02 0 0.04 0 0.06 0.05 10.06 0.61 24.92 1.79 41.18 19.67 1.11 37.97 3.36 54.77 6.28v-70.17l-4.9-0.02 12.56-27.58 12.05 27.68 -4.91-0.02v72.93c17.91 3.72 33.83 8.15 47.58 12.65v-61.1l-4.9-0.02 12.56-27.58 12.05 27.68 -4.9-0.02v66.2c16.29 6.03 28.45 11.75 35.94 15.59C574.42 340.17 555.22 263.5 555.22 263.5z"/><path class="st1" d="M529.11 497.7h8.75v0h2.08 5.4v0h4.67c2.95-9.58 5.5-19.42 7.64-29.05l0 0c2.67-9.65 4.3-17.58 5.28-23.31 0 0 0.04-0.22 0.05-0.32 0.06-0.36 0.12-0.72 0.18-1.06 -5.22-2.82-16.88-8.73-34.05-15.35V497.7z"/><path class="st1" d="M466.74 410.08v87.62h8.74v0h16.14v0h8.44 14.25l0-74.45C500.77 418.64 484.81 414 466.74 410.08z"/><path class="st1" d="M398.38 400.86c0.04 0.36 1.26 10.03 1.45 11.65 3 22.36 9.06 57.64 15.25 85.14h-0.31c0 0.02 0.01 0.03 0.01 0.05h30.53 6.63v-90.58c-16.42-2.99-34.34-5.3-53.58-6.49C398.37 400.71 398.37 400.79 398.38 400.86z"/><path class="st1" d="M320.54 497.7h6.63 30.52c0-0.02 0.01-0.03 0.01-0.05h-0.31c6.19-27.49 12.25-62.77 15.25-85.14 0.19-1.63 1.41-11.29 1.45-11.65 0.01-0.08 0.01-0.15 0.02-0.23 -19.37 1.19-37.31 3.53-53.58 6.48V497.7z"/><path class="st1" d="M258.16 497.7h14.25 8.44v0H297v0h8.74v-87.65c-18.72 4.04-34.75 8.75-47.58 13.11V497.7z"/><path class="st1" d="M209.32 443.95c0.06 0.35 0.12 0.7 0.18 1.07 0.02 0.11 0.03 0.22 0.05 0.32 0 0 0.01 0 0.01 0 0.98 5.73 2.61 13.65 5.28 23.31l0 0c2.14 9.63 4.69 19.48 7.64 29.05h4.67v0h7.48v0h8.75v-69.17C226.25 435.15 214.56 441.11 209.32 443.95 209.32 443.95 209.32 443.95 209.32 443.95z"/></svg>
images/sort_both.gif000064400000000071150755146460010516 0ustar00GIF89a�3���!�,
�b��֖B�;images/help.png000064400000036157150755146460007500 0ustar00�PNG


IHDRVu\�	pHYs��9�iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c014 79.151481, 2013/03/13-12:09:15        ">
   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
      <rdf:Description rdf:about=""
            xmlns:xmp="http://ns.adobe.com/xap/1.0/"
            xmlns:dc="http://purl.org/dc/elements/1.1/"
            xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
            xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
            xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
            xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
            xmlns:exif="http://ns.adobe.com/exif/1.0/">
         <xmp:CreatorTool>Adobe Photoshop CC (Macintosh)</xmp:CreatorTool>
         <xmp:CreateDate>2014-10-29T20:28:03-07:00</xmp:CreateDate>
         <xmp:ModifyDate>2014-10-30T21:29:07-07:00</xmp:ModifyDate>
         <xmp:MetadataDate>2014-10-30T21:29:07-07:00</xmp:MetadataDate>
         <dc:format>image/png</dc:format>
         <photoshop:ColorMode>3</photoshop:ColorMode>
         <xmpMM:InstanceID>xmp.iid:845efcd0-97ef-4be6-a41b-e65a3502f63f</xmpMM:InstanceID>
         <xmpMM:DocumentID>xmp.did:abd8f687-081c-4a3f-a804-ed4095359870</xmpMM:DocumentID>
         <xmpMM:OriginalDocumentID>xmp.did:abd8f687-081c-4a3f-a804-ed4095359870</xmpMM:OriginalDocumentID>
         <xmpMM:History>
            <rdf:Seq>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>created</stEvt:action>
                  <stEvt:instanceID>xmp.iid:abd8f687-081c-4a3f-a804-ed4095359870</stEvt:instanceID>
                  <stEvt:when>2014-10-29T20:28:03-07:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CC (Macintosh)</stEvt:softwareAgent>
               </rdf:li>
               <rdf:li rdf:parseType="Resource">
                  <stEvt:action>saved</stEvt:action>
                  <stEvt:instanceID>xmp.iid:845efcd0-97ef-4be6-a41b-e65a3502f63f</stEvt:instanceID>
                  <stEvt:when>2014-10-30T21:29:07-07:00</stEvt:when>
                  <stEvt:softwareAgent>Adobe Photoshop CC (Macintosh)</stEvt:softwareAgent>
                  <stEvt:changed>/</stEvt:changed>
               </rdf:li>
            </rdf:Seq>
         </xmpMM:History>
         <tiff:Orientation>1</tiff:Orientation>
         <tiff:XResolution>720000/10000</tiff:XResolution>
         <tiff:YResolution>720000/10000</tiff:YResolution>
         <tiff:ResolutionUnit>2</tiff:ResolutionUnit>
         <exif:ColorSpace>65535</exif:ColorSpace>
         <exif:PixelXDimension>12</exif:PixelXDimension>
         <exif:PixelYDimension>12</exif:PixelYDimension>
      </rdf:Description>
   </rdf:RDF>
</x:xmpmeta>
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                                                                                                    
                            
<?xpacket end="w"?>:,< cHRMz%������u0�`:�o�_�FIDATx���KQ��{o���Zj�h-3V+�ؐ�PDBҡS��A ݢ?�K A@�%�CH�$��f�l����������{�����>�ʘ[v[��oJ�3Rr6l����_�]eC*�DҠ�T�qô������yS�č�=�-����s��/zXZ�v�[Q��ᴙ2	���~�\*c�e�ե��#�]t����S�\�G
�

�a3���,Rl÷Zf�u/�x��J��Z-8U��i���1��Da����P
L�Т�TF�����c���GY'�pC�r]AP���h���Ш��hL�JT-&P1<�Qc��51�@�8vT$�/4�k��tË)�@J�4�çۥ��v(��iܻ��iS�0	��3������ӟ��m��.���i��2��9Ffp�.i8�ߓ_�/3du�� x�e��}���G��_F6����hw
��f����f5���4�ו2he����j<�x2u�YVnehNE"?�\D���p
�9�U IEND�B`�images/loading_large.gif000064400000006210150755146460011303 0ustar00GIF89a  �������}}}������333QQQ�����ز��!�Created with ajaxload.info!�
!�NETSCAPE2.0,  ��Iia����bK�$�F�RA�T�,�2S�*05//�m�p!z���0;$�0C�.I*!�HC(A@o�!39T5�\�8)�
��`�dwxG=Y
g�wHb�vA=�0	V\�\�;	����;���H��������0��t%�Hs��rY<H.�ʼn��	��b�Zb�OEg:�GY].�=�A�OQ�s���\b�h.9�=sg��c��e��*�ֆf7D!�
,  ��IiY��ͧYF5�F�ԢRÔTbG�J����L��d��&�Ymx莔� \@���� �1�&R���H
41Q��|V%zv#j0�
�l�Gg{0~�<�<	�[�[�h�x��G�
y���������[�0���G����P�z��hɾ�Ękz�i��y����h|z�h�G݄�VŢ�����\h�[���Ǥ���&�+��W�7�8��!!�
,  ��I)1����1G5d]�(��RDz�T2��jL�{��< [�5�M��
0�)�
 L��I��m��E��`�p�U
�^f%�^���u;zz}0�X	
�S0ewyk<�%	�O����	��z��{����|������%����F�i�1”0�����˼Y����8�x����	z��@���<ݫ���������8��Y<���ɥ8�\�P$���!��
!�
,  ��I����gEU�� ՠR�a�TB٤�p>'���e�$��"�\�#E1Cn�Ď��~��J,�,Aa���Uw^4I%P��uQ33{0�i1T�Ggwy}%�%'R����	���=���������3��G�%��p��0�
��JRo�5Ȇ0IĦmyk��x�T�_}�(���^��yK��s���>i_�%���n�=����q�4e�-M¤D!�
,  ��I)*���')E�d]����PR	A�:!��zr����bw�
%6�"G�(d$["���J��Fh��aQP�`p%†/BFP\cU
�
?T�tW/pG&OtDa_sylD'M����q	�tc�������b��2��D��M:�����d��%��4%s)���u��E3��YU��tږ���D�$�JiM�<�Y�;�ذ��d<� O�tX�<q'+B!�
,  ��IiR��ͧ"J% �����EQZ�����Ld���-Y��
�h��k�Q�|��5�u�4Y�I���N
bW���u��5�
�r��	�%yb>^%o/rvl9'L����;��9�����������9�%��i9���� C�"�BB��Ds��^Xf}$P	�{L�?P���O4��E��咛V�$���dJ�#)�pV�$!�
,  ��IiR��ͧ"J�d]� �R�ZN�*P*��;�$P{*�N���\EА�!1UO2�D	�_r6I�b
�����H��8	B�;	��"'��Z��t��b�K#C'K����w}?�����K��iz6��:x�KAC���&}9�tz\\���D5;x���Q�d(�	��KW���MB���I��ڈM=�ˤs�⸽8Da��J`@LG!�
,  ��IiR��ͧ"J�d]� �R�ZN�*P*��;�$P{*�N���\EА�!1UO2�D	�_r6I�b
�����H��8	B�;	��"'��Z��t��b�K#C'K��Gziz6��8}z����~��%X�K9�:���0}�%	�tz\B��lcL�bQ���	������lj���ųK����ň������x�(țP�X,��ւ|/"!�
,  ��IiR��ͧ"J�d]� �R�ZN�*P*��;�$P{*�N���\EА�!1UO2�D	�_r6I�b
�����H��8	B�;	��"'��Z��t��b�K#C'K��Gziz6��8}z����~��%�:�A/C}���u\��h}b��D��]=����	��V)��
ڊ����9C���D�K����K���u�	��*00�S�tD!�
	,  ��IiR��ͧ"J�d]� �R�ZN�*P*��;�$P{*�N���\EА�!1UO2�D	�_r6I�b
�����H��8	B�;	��"'��Z��t��b�K#C'K��Gz���z5
���������C�:	�A/C}���u\��Eh}b��6�[=�����Wx&)���I9�Ԭ�@oC��T?K����d���]��B7����6ЫD!�

,  ��IiR��ͧ"J�d]� �R�ZN�*P*��;�$P{*�N���\EА�!1UO2�D	�_r6I�ƀ��H��03���hո��a��j U{CIkmbK#�cK���8	�{a��8�n��������V�:�/q:M�
��Cu�~���Eh�k��6	�[_���6P</U�YHF��9?M�%
�G���C�k�v���>.]�6��!�)V�!�
,  ��IiR��ͧ"J�d]U�R�ZN	��J�j�N2sK6�
��d�I��)
L�H�W�G6	�KX��젱�.6�d��~z�h��uur/6 X5�I;_�tO#E	{O���9V����9��4��������;V�C/
��6�Ø~*�'��Mo����n��bX�:~]+V*�m�K_�O�rK�N@.��d�~�qЦ��D�B֋5D;images/tools.svg000064400000002662150755146460007715 0ustar00<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 59.68 63.68"><title>tools</title><path d="M58,53.63,37.43,33.11a5.22,5.22,0,0,0-.61-.53l3.64-3.82c.18-.19.36-.39.52-.59A13.53,13.53,0,0,0,59.25,14.35a1.17,1.17,0,0,0-2-.72L50.69,20.2,44,18.52l-1.89-6.87,6.57-6.57a1.17,1.17,0,0,0-.73-2A13.53,13.53,0,0,0,34.17,21.36c-.19.17-.39.34-.59.54L28.24,27,18.41,17.2a3.82,3.82,0,0,0-.39-.33c.12-.2.23-.41.33-.62,2.08.4,5.87-3.64,9.09-6.86L18.06,0C13.87,4.2,10.8,7,11.2,9.09a9.08,9.08,0,0,0-2.42,1.65L7.45,12.06a5.59,5.59,0,0,0-1.56,3l-.39.46-.5.62-.07.09-.44.63c-.28.38-.52.78-.76,1.17l-.26.44,0,.07-.2.37c-.24.45-.49.92-.7,1.43l0,.08a14.94,14.94,0,0,0-.69,1.87l-.09.28c-.07.23-.15.47-.21.75l-.18.9a10.74,10.74,0,0,0-.22,1.61l0,.32a8.41,8.41,0,0,0,0,1.42c0,.14,0,.28,0,.47s0,.15,0,.23a4.74,4.74,0,0,0,0,.63l.12.73c0,.15,0,.28.06.41a6.37,6.37,0,0,0,.18.9L2,32.66a1.13,1.13,0,0,0,1.15.8,1.14,1.14,0,0,0,1-1l.25-1.69a4.92,4.92,0,0,1,.14-.54c0-.14.09-.29.12-.42l.17-.63a1.79,1.79,0,0,1,.1-.25l.1-.24.17-.41a4.73,4.73,0,0,1,.37-.77l.19-.35a6,6,0,0,1,.5-.8l0,0,.42-.58L7,25.47l.21-.24A7.89,7.89,0,0,1,8,24.42l.15-.14c.21-.19.44-.37.7-.56l.31-.23.37-.25a6.65,6.65,0,0,1,.65-.4l.5-.28.5-.25a5.21,5.21,0,0,1,.51-.22L12,22l.25-.09.33-.11.13,0a3.72,3.72,0,0,0,.53.67l9.72,9.72L2.18,52.05l0,0c-2.58,2.58-3,6.36-.42,8.94s6.12,1.92,8.7-.66l0,0,18.3-19.27c.11.13.21.25.33.37L49.63,62A5.89,5.89,0,0,0,58,53.63ZM7.76,58.23a2.43,2.43,0,1,1,0-3.44,2.43,2.43,0,0,1,0,3.44Zm0,0"/></svg>images/sort_desc_disabled.gif000064400000002112150755146460012325 0ustar00GIF89a������!�XMP DataXMP<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c061 64.140949, 2010/12/07-10:57:01        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop CS5.1 Windows" xmpMM:InstanceID="xmp.iid:A64F3970D27811E0AAF7A4B269665FA8" xmpMM:DocumentID="xmp.did:A64F3971D27811E0AAF7A4B269665FA8"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:A64F396ED27811E0AAF7A4B269665FA8" stRef:documentID="xmp.did:A64F396FD27811E0AAF7A4B269665FA8"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>�������������������������������������������������������������������������������������������������������������������������������~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! 

	!�,�[;images/2fa2.svg000064400000027735150755146460007317 0ustar00<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 338.97 377.33"><defs><style>.a,.c,.v{fill:#9d1c1f;}.a,.u,.v{stroke:#c02026;}.a,.k,.l,.u,.v{stroke-miterlimit:10;}.a,.u{stroke-width:3.77px;}.b{isolation:isolate;}.d{clip-path:url(#a);}.e,.h{fill:#2d2d2d;}.f,.l{fill:#fff;}.g,.q{fill:#525455;}.g,.h,.j,.p{fill-rule:evenodd;}.i,.j,.p{fill:#9e9e9f;}.k{fill:#f1f2f2;stroke-width:0.19px;}.k,.l{stroke:#525355;}.l{stroke-width:0.13px;}.m{fill:#9f9fa0;}.n{fill:#525355;}.o{fill:#008cc1;}.p{opacity:0.06;}.p,.s{mix-blend-mode:multiply;}.r{fill:#008dc2;}.s{opacity:0.25;}.t{fill:#fcb316;}.u{fill:none;}.v{stroke-width:2.83px;}.w{fill:#f0f0f0;}</style><clipPath id="a"><circle class="a" cx="169.48" cy="209.95" r="165.5"/></clipPath></defs><title>2fa2</title><g class="b"><circle class="c" cx="169.48" cy="209.95" r="165.5"/><g class="d"><rect class="e" x="27.15" y="98.89" width="156.31" height="102.73" rx="5.41" ry="5.41"/><rect class="f" x="35.26" y="109.61" width="140.08" height="78.01"/><polygon class="g" points="27.15 201.62 183.45 201.62 210.6 213.16 0 213.16 27.15 201.62"/><path class="h" d="M0,213.16H210.6v3a3.92,3.92,0,0,1-3.91,3.91H3.91A3.92,3.92,0,0,1,0,216.2Z"/><rect class="i" x="83.52" y="215.3" width="42.54" height="2.71"/><path class="j" d="M30.39,202.54H45l-2.21,1.34H27.65Z"/><path class="j" d="M57.18,202.54H71.79l-1.21,1.34H55.43Z"/><path class="j" d="M84,202.54H98.6c-.05.45-.13.9-.2,1.34H83.23C83.48,203.44,83.74,203,84,202.54Z"/><path class="j" d="M110.78,202.54h14.63c.26.45.53.9.79,1.34H111C110.95,203.44,110.87,203,110.78,202.54Z"/><path class="j" d="M137.59,202.54H152.2l1.79,1.34H138.83C138.43,203.44,138,203,137.59,202.54Z"/><path class="j" d="M164.4,202.54H179l2.78,1.34H166.63Z"/><path class="j" d="M25.9,204.75H41.44l-2.21,1.34H23.16Z"/><path class="j" d="M54.19,204.86H69.73c-.4.45-.82.9-1.21,1.34H52.44C53,205.75,53.6,205.3,54.19,204.86Z"/><path class="j" d="M82.7,204.86H98.26L98,206.2H81.93Z"/><path class="j" d="M111.2,204.86h15.56c.26.45.51.9.79,1.34H111.44C111.35,205.75,111.28,205.3,111.2,204.86Z"/><path class="j" d="M139.73,204.86h15.54L157,206.2H141Z"/><path class="j" d="M168.24,204.86h15.58l2.76,1.34H170.46Z"/><path class="j" d="M21.17,207.07H37.64l-2.21,1.34h-17Z"/><path class="j" d="M51.16,207.17H67.65c-.42.45-.8.9-1.21,1.34h-17Z"/><path class="j" d="M81.38,207.17H97.89c-.09.45-.15.9-.22,1.34h-17C80.89,208.07,81.13,207.62,81.38,207.17Z"/><path class="j" d="M111.6,207.17h16.51c.24.45.51.9.77,1.34h-17C111.77,208.07,111.68,207.62,111.6,207.17Z"/><path class="j" d="M141.85,207.17h16.49c.57.45,1.17.9,1.75,1.34h-17Z"/><path class="j" d="M172.07,207.17h16.51l2.76,1.34h-17Z"/><path class="j" d="M16.24,209.49H193.35l2.76,1.34H13.48Z"/><rect class="k" x="56.57" y="114.2" width="97.47" height="67.28"/><rect class="l" x="67.17" y="147.45" width="76.26" height="9.52"/><rect class="m" x="94.35" y="162.74" width="21.9" height="10.62" rx="2.1" ry="2.1"/><path class="n" d="M70.2,151.63l-.38.27-.1-.17.43-.19-.43-.2.1-.17.38.26,0-.46h.19l0,.46.38-.26.1.17-.43.2.43.19-.1.17-.38-.27,0,.46h-.19Z"/><path class="n" d="M71.68,151.63l-.38.27-.1-.17.43-.19-.43-.2.1-.17.38.26,0-.46h.19l0,.46.38-.26.1.17-.43.2.43.19-.1.17-.38-.27,0,.46h-.19Z"/><path class="n" d="M73.17,151.63l-.38.27-.1-.17.43-.19-.43-.2.1-.17.38.26,0-.46h.19l0,.46.38-.26.1.17-.43.2.43.19-.1.17-.38-.27,0,.46h-.19Z"/><path class="n" d="M74.66,151.63l-.38.27-.1-.17.43-.19-.43-.2.1-.17.38.26,0-.46h.19l0,.46.38-.26.1.17-.43.2.43.19-.1.17-.38-.27,0,.46h-.19Z"/><path class="n" d="M76.15,151.63l-.38.27-.1-.17.43-.19-.43-.2.1-.17.38.26,0-.46h.19l0,.46.38-.26.1.17-.43.2.43.19-.1.17-.38-.27,0,.46h-.19Z"/><path class="n" d="M77.63,151.63l-.38.27-.1-.17.43-.19-.43-.2.1-.17.38.26,0-.46h.19l0,.46.38-.26.1.17-.43.2.43.19-.1.17-.38-.27,0,.46H77.6Z"/><path class="n" d="M79.12,151.63l-.38.27-.1-.17.43-.19-.43-.2.1-.17.38.26,0-.46h.19l0,.46.38-.26.1.17-.43.2.43.19-.1.17-.38-.27,0,.46h-.19Z"/><path class="n" d="M80.61,151.63l-.38.27-.1-.17.43-.19-.43-.2.1-.17.38.26,0-.46h.19l0,.46.38-.26.1.17-.43.2.43.19-.1.17-.38-.27,0,.46h-.19Z"/><path class="n" d="M82.1,151.63l-.38.27-.1-.17.43-.19-.43-.2.1-.17.38.26,0-.46h.19l0,.46.38-.26.1.17-.43.2.43.19-.1.17-.38-.27,0,.46h-.19Z"/><path class="n" d="M83.58,151.63l-.38.27-.1-.17.43-.19-.43-.2.1-.17.38.26,0-.46h.19l0,.46.38-.26.1.17-.43.2.43.19-.1.17-.38-.27,0,.46h-.19Z"/><path class="n" d="M85.07,151.63l-.38.27-.1-.17.43-.19-.43-.2.1-.17.38.26,0-.46h.19l0,.46.38-.26.1.17-.43.2.43.19-.1.17-.38-.27,0,.46H85Z"/><path class="n" d="M86.56,151.63l-.38.27-.1-.17.43-.19-.43-.2.1-.17.38.26,0-.46h.19l0,.46.38-.26.1.17-.43.2.43.19-.1.17-.38-.27,0,.46h-.19Z"/><path class="n" d="M88,151.63l-.38.27-.1-.17.43-.19-.43-.2.1-.17.38.26,0-.46h.19l0,.46.38-.26.1.17-.43.2.43.19-.1.17-.38-.27,0,.46H88Z"/><path class="n" d="M89.53,151.63l-.38.27-.1-.17.43-.19-.43-.2.1-.17.38.26,0-.46h.19l0,.46.38-.26.1.17-.43.2.43.19-.1.17-.38-.27,0,.46H89.5Z"/><path class="n" d="M91,151.63l-.38.27-.1-.17.43-.19-.43-.2.1-.17.38.26,0-.46h.19l0,.46.38-.26.1.17-.43.2.43.19-.1.17-.38-.27,0,.46H91Z"/><path class="n" d="M92.51,151.63l-.38.27-.1-.17.43-.19-.43-.2.1-.17.38.26,0-.46h.19l0,.46.38-.26.1.17-.43.2.43.19-.1.17-.38-.27,0,.46h-.19Z"/><path class="n" d="M94,151.63l-.38.27-.1-.17.43-.19-.43-.2.1-.17.38.26,0-.46h.19l0,.46.38-.26.1.17-.43.2.43.19-.1.17-.38-.27,0,.46H94Z"/><path class="n" d="M95.48,151.63l-.38.27-.1-.17.43-.19-.43-.2.1-.17.38.26,0-.46h.19l0,.46.38-.26.1.17-.43.2.43.19-.1.17-.38-.27,0,.46h-.19Z"/><circle class="o" cx="105.65" cy="131.84" r="10.06"/><path class="f" d="M100.22,135.51l-1.77-5.19H97.8v-1h2.79v1H100l1,3,.94-3h-.56v-1h2.23v1H103l1,3,1-3h-.62v-1h2.48v1h-.67l-1.71,5.19H103.3l-1-2.83-.92,2.83Z"/><path class="f" d="M110.42,134.42v1h-3.26v-1h.79v-4.1h-.79v-1h3.26a2.62,2.62,0,0,1,1.76.53,1.8,1.8,0,0,1,.62,1.44,2,2,0,0,1-.22.94,1.67,1.67,0,0,1-.56.65,2.1,2.1,0,0,1-.78.31,6.08,6.08,0,0,1-1.1.08h-.59v1.2Zm-.86-2.23h.24a1.47,1.47,0,0,0,1.07-.27,1,1,0,0,0,.24-.67,1,1,0,0,0-.16-.58.68.68,0,0,0-.38-.29,3.08,3.08,0,0,0-.7-.06h-.3Z"/><polygon class="p" points="59.59 109.61 174.84 109.61 174.84 187.63 147.17 187.63 59.59 109.61"/><path class="q" d="M315,159.71a4,4,0,1,1-4.81,2.84A4,4,0,0,1,315,159.71Z"/><rect class="q" x="278.36" y="134.09" width="4.53" height="41.49" transform="translate(61.29 388.54) rotate(-75.7)"/><path class="q" d="M238.87,318.72a10.37,10.37,0,1,1-12.61,7.49A10.37,10.37,0,0,1,238.87,318.72Z"/><rect class="f" x="186.68" y="189.32" width="146.16" height="97.25" transform="translate(-34.97 430.9) rotate(-75.7)"/><path class="e" d="M338.48,171.65,293.61,347.74a15.49,15.49,0,0,1-18.82,11.18l-86.73-22.1A15.47,15.47,0,0,1,176.91,318l44.87-176.09a15.49,15.49,0,0,1,18.8-11.2l86.73,22.1A15.5,15.5,0,0,1,338.48,171.65Zm-50,149.13,36.09-141.64-94.24-24L194.28,296.76Zm29.39-156.26a4,4,0,1,0-4.84,2.88A4,4,0,0,0,317.91,164.51Zm-17.73-2.35,1.12-4.39-40.21-10.25L260,151.91ZM246.36,331.34a10.37,10.37,0,1,0-12.61,7.49A10.37,10.37,0,0,0,246.36,331.34Z"/><path class="r" d="M218.06,227.74a42.67,42.67,0,1,0,51.89-30.81A42.67,42.67,0,0,0,218.06,227.74ZM235,247l-1.83-23.16-2.69-.69,1.1-4.3L243,221.73l-1.1,4.3-2.63-.67,1,13.27,7-11.23-2.31-.59,1.1-4.3,9.15,2.33-1.1,4.3-2.36-.6,1.06,13.28,7.12-11.2-2.54-.65,1.1-4.3,10.19,2.6-1.1,4.3-2.76-.7-12.46,19.52-4.76-1.21-1-12.64-6.75,10.65Zm43,6.21-1.1,4.3L263.53,254l1.1-4.3,3.24.83,4.29-16.85-3.24-.83,1.1-4.3L283.42,232q4.68,1.19,6.68,4a7.63,7.63,0,0,1,1,6.56,8.51,8.51,0,0,1-1.88,3.62,7.1,7.1,0,0,1-3,2.07,8.9,8.9,0,0,1-3.52.45,25.8,25.8,0,0,1-4.6-.81l-2.43-.62-1.26,4.94Zm-1.21-10.09,1,.25q3.4.87,4.66,0a4.13,4.13,0,0,0,1.68-2.5,4.19,4.19,0,0,0-.07-2.54,2.87,2.87,0,0,0-1.25-1.6,13.08,13.08,0,0,0-2.81-1l-1.24-.32Z"/><image class="s" width="106" height="77" transform="translate(146.28 134.18)" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGsAAABOCAYAAAAn3uiJAAAACXBIWXMAAAsSAAALEgHS3X78AAAKhklEQVR4Xu2dB4wUVRjHVw4sNPW8Y3dn5s3s3iGnniBwdlEvKrbYAzbsgh27CUZMNBpDYu+9xa6BaCIWIEZFIxZAY6/YC2AvKAj4/89775g9du/tnnt3w+4j+We2zO7evN983/u+730zJFauXJmwWjNk3MEqPjLuYBUfGXcwCf/WUuoF1Sjx8Vqmz1qVJuMOHX5YQWppaemTyWTWdRynr+d56w0ePHgdvN6b75m+w6p4GXco+EEJqoaQAGdgMpkcJIRw8DwFYLUE19KS6KOtrFJlGqdyyrhD3g/JP7SGVuS67kZBEGSx3QLPt/b9dAu2G2ezg5J1dXUDCLO5uXntShO9SUJ6jza339XwjDus9oEIqFQqVQ8LasLjnX3fHQMdDeM6FNtd8dowvOdns9kktnWVJJ6gvu9vqDxKP31CtrbmwjONZaky7tARqCBIb+r7zmjf9yZAFwnhXY7txUK4JwPaAYSora1SFATOyEzGHY7jGgpwTfD6GXiWNAE2NDSsj9f6RufsckIz7tARKADZHToVcK6GNT3mee50bgHtBrx2IfadCHgneJ5zfCUIx3ocdKz0IOIw6ACerAC4PWANz2adJsAStL76+vr+tDZlaWUBZtzBDMq7HmCewgHMw/Y9bOdDz+G9aTiQ+/Ha3djnTuiOShCO6XYc0y2Ady22l+FknIRjPQWwjsR2fwDcSVmdoKukiywXMPMOHYOCBXnPQu/iD/8WWgx9Dy0gOOhNaC7ef6Ny5LyOY5oDzRbhsTvT8PheIU/aSwBxopy/nR0YaKl5LicyNo15p2AVByqEshD6A/ob+gv6HfoZ+lEBXFRBWgh3/wO230AL8Ph95VVewna6CD0JoXnj5XyeauacxshYucVOAysXKAJaBi2H/lWPl0L/VKiiJ+UvQkIkvI+gVzE2j9NNwkWeDmD7MiiBdfkMQFTw0Slg5QJFQCuglUorqkDhiQnL4olJgBwHggM07x1sZwDUbWpOOwRz2naMHAlMW5gJjhFWGUBVm6Lw6E3+FHJsYGXOiwyymM5gPI8gMFoYXaJKqkuyLguqvOJYcEyWQD8JGWjBLbqPyPzTOYQukXMYg45So8T2oHox1GSCl8k4m3CCXBWeW1BFSgODa3R+xfZL6FXAooVN4hzGoINRYqlhfQ4smiZ9KnKFRgDbBT9yEn7gOoB6RlhQpUi7RQ1sAcbwRTWHMegYzbCeeVgp81cUVi+6P5qoEKmtEIYeJcLyEcPRMI+yoEqXAha6REaKMxglqrB+B85frHQkZGnKaF1tVjV27NgafjAIklnl/s6l6cpEMEx4OXEy8rGgild0DluoosQnoEthBAdzpYKxgQ7ni4bV2trau7a2diCoD/a81N74wsn48qnqB5jYMrdYXsQfaJUrDYwnO0567zURVjzcs7g6QeNoaqobUIx1WcvqHnHMlqr561NoBnQFXOLhiA5H0LpUsNGhddk5q/tEr7QE4/kDEul50hDcc2AYuxVrXVFYNhrsWnG8lgHUbxjPz/B4pijRunJg2TyryxVal5DF4HkY0wdECdaV+8RWMLpaBa2Li5emyHD1FyywrlZoXWqZZS7msPugMxGBtzLvYk9HokBVI79v/P/A8lWpK10mSNGxWSYjQ+8T6Gk8v8zz0gf5fmozVjUKFXnzwuoksGpaz4qKx8nj5XHz+IsBx/04ZkyJXoGV3QpXOB7WtTVb+AoFGgVhdQJYtawUR8Vj+0nlT8xDefz6pO0IGt9bKj8bFh0eBazzmCSn0+lAu8KSYBUPrJp6MLTcubCI+di+DX0oZHV9EQb8tyKg8TVaIk5qBhrhSU9XeCCjcKZPrCi1d4VGWEUAq6ruJiUcj3sXdA/0kJD1vufVyckTdaEEEbrJfwsAa3OFgP4yvvMGFiKYc3H5RFXjS4dlBlYdfYO5YuXcPRHHdwaPFY+vwXE/iO0sBY2Wxmr7kgLAViiYi2TOxXqhcyp7EFlFyjdvGSGZgFVbR66WEGJLHNs2qk9wb0Bi3+C5PHGhR6GXoI+FnBryRsyATlf5CzukMHZT1eLkaPZq5Ju3jIBMwJwq7HWneOyM3HCcLlcquFwvT1zWVN0L6C7x1iw8B4iCKQ6f013Cda6at/D9TfnmLSMcE7BqvYqEYrXBC69Hqx3Y2JgchBypAZa2FU7Y/ZnoYvBvEh3npHreYhvbbNZhAWscT3Sotn2+ZQRjAlbt12cl5PH11uPAMYA2xxjsCTd3mui4iEBYf8vXvdcB63Z8ZrwQ6S0jpaf/DysCrOqvfIyOA+canrgyAEvvEQUm56ZwDtNBh25fYz76FpdNvLD92hlF6BzL6Bga/xCT2p1hVX1NsRqH3rkRswbm3sQ5TMheDEaJjASX6yADbvMDAEW6455fKMgw/gFWpUkBy4mY6RI5h6krUGYD2ucqedalqpwgg5F0viDD+ONWpSsKjIEH5zAA2I9WI2QSzarOd5y/4PqWirYgg+1q3rXY9zDPSw5tX9Q1/rBV56RdIudxJrkySnYOh3VNgWU9qUL6H9X8BWgs03m8lOgWpkCsZDDSZtRpYXWDOMi0DKYw2Ww6wPy1kwgLBu7NtCJsv1Du8E/2ZuiIEJZ1nLrypM7C6kYx2OKAM52RrRLuPsodPgK9SUgEpmHJZNo5npZoYXWzovMXc1DmULI05V4lo0OPrWmL5RxmYfW4tDtk0uz7yQbZiOSeI2TDDIIN92voKxE2gFpYPa6E6hyTCbMzgmUlALoSmqlyLK5rzVFVDAurJ6WjQ7abqa7n3YRsQ+OaH6/h4lrgy7zSxMKKgbR1MfditId57AjOXSoZZu71AoDdymjQwuphaetSBd9GuMI9YUmTZKLsvSBkH+HNFlZMlIhcU4Ckd1tAmQBAN8KiuMo+XRZ9eRcbC6vHpSNDlpJ4uSoXbQHrUuhhuVoc3rnmGAsrBtJ5V+7lVWGgwcCCwcaVqtxkKxhxUNQVBoG7HXtYCAmweG+oKUyaLayYiINPCITB2+HJvhXnIsC6DtAuCQJvXL6WNOMXW5VfHHyuU3G9ire9Y72QrhCwpmB7IeERooUVE+l5i9V4uMRWFRVOhkWxjXoMG5DsEklMFJ232BXGBUfAOhvQzmA7GjucLKyYiADYWERXRzBcyhdyrYsNsvtxddnCiomi+RbXudhYw/yKCbHnpfbC65txDczCioF0kMHSE/MtwNoRljSGwQW2u8qFyrbbBVlYPS0GGezRYI8g8ype6CFvxOWMYkt2JrPBBrZhJiZKqCr8kCFOHVvWAG4Ul05kG3oSkf2G61tYMZFOjmlBQgxq5M1i2FQDaCPZ5MkeegsrJtJBBi2IcABphLpb2gjmXxZWjKRhEQrh8F4Yq27ob2HFShbWGiQLaw1SFFZDg+OzHsglE2753MKKkTQsdjw1NvIaPF7AwCsnxeZ8ztctrJhIVzGGDUv2C4I69mQMyWbDAu4QPufr9pKfmIgQeAdVfW02QnbBygW3fM7X+b6FFRMlwstbE32am+v7ExB7CmW1vb6/via7bV/Tl1l1rWg1UI1a5u/LBUluVQE351Z2xi+z6nopYOFV/8qa8v4XhMYvsuoeKWA5Wm0f05dYxUf/AUEXM/luYxtXAAAAAElFTkSuQmCC"/><path class="t" d="M151.61,152l14.21-14.26v3.76h57.3c12.72,0,23,17.92,23,40v21.18c0-22.1-10.31-40-23-40h-57.3v3.58Z"/></g><circle class="u" cx="169.48" cy="209.95" r="165.5"/><circle class="v" cx="169.48" cy="43.22" r="41.81"/><path class="w" d="M180.17,47.54l-.29,9.9H158a25.66,25.66,0,0,1,.72-6.91,15.81,15.81,0,0,1,2.38-4.75,34.72,34.72,0,0,1,4.62-5,44.79,44.79,0,0,0,5.13-5.26,6.22,6.22,0,0,0,1.24-3.79,3.68,3.68,0,0,0-.93-2.58,3,3,0,0,0-2.33-1,3.22,3.22,0,0,0-3,1.68,12.51,12.51,0,0,0-1.12,5.48l-6.25-.29q0-4.92,1.47-7.42a8.66,8.66,0,0,1,4-3.63,13.31,13.31,0,0,1,5.49-1.13,10.54,10.54,0,0,1,7.66,2.7,9,9,0,0,1,2.78,6.71,9.36,9.36,0,0,1-.84,4,10.07,10.07,0,0,1-2.13,3.06,44.78,44.78,0,0,1-4.55,3.57q-4.9,3.5-6.15,5.56A9.92,9.92,0,0,0,164.76,52h9.95V47.54Z"/></g></svg>images/back_disabled.jpg000064400000002304150755146460011256 0ustar00���ExifII*��Ducky��http://ns.adobe.com/xap/1.0/<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c061 64.140949, 2010/12/07-10:57:01        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="xmp.did:1059BAE4D27811E0BEB0DE0D31D635B9" xmpMM:InstanceID="xmp.iid:1059BAE3D27811E0BEB0DE0D31D635B9" xmp:CreatorTool="Adobe Photoshop CS5 Windows"> <xmpMM:DerivedFrom stRef:instanceID="3B8E77C943C1E2413EA9AC837C75B35F" stRef:documentID="3B8E77C943C1E2413EA9AC837C75B35F"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>��Adobed����
#%'%#//33//@@@@@@@@@@@@@@@&&0##0+.'''.+550055@@?@@@@@@@@@@@@��"��e
1�Q#!aq��BbCc�����?�ٴ�����X�m�co����.��Se��6��R�p�Q%�E� �������Eo7��md��R�cs�q}O�\L��_��6�DD��images/sort_both.png000064400000000311150755146460010532 0ustar00�PNG


IHDR�Y�G�IDAT(ϵ�1@@��ՐH�B��P����C�"�N���h6"bw
1�~y�y�:Ĵ�:k8�5�1#L�>�#BG�f�e+�%�	�@��*v�kw�O�����E��FW^�j�B�뭳���f)�L�=Rs����_��(���>i*IEND�B`�images/logo.png000064400000046625150755146460007511 0ustar00�PNG


IHDR�|���iTXtXML:com.adobe.xmp<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 5.5.0">
 <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <rdf:Description rdf:about=""/>
 </rdf:RDF>
</x:xmpmeta>
<?xpacket end="r"?>J���iCCPsRGB IEC61966-2.1(�u��+DQ�?f0�Qf!,&
��Qe$�4�Q~mf�R���H�U�S����/`���"R���&6�9�L�$sn���{N���pZ��^�d�Zh<�_pڞ���#����ST��;j�x�1kU?��5��5
���'��V����%�	�
�5���G��br��_&k��(XZ���
�V���2��r\��R�����xvvFb�x:!�	�d�1F��ϐ�~<��U���$W�Ye
�e����uE��%&D��H�f��o_�Ā�X�9uO����-�.��a|��.�����^(k�}�o��eY��&�?�-�+Y�-���@�<�]C�b�g�}��!�._u�{�+��K?@Ig�r�\	pHYs�� IDATx��w���?��;������P��d/�%�B*���-$��	��NB|�)�1 0�4c��ǻ�t�������y�9��;3�V��y�-`0��`0�=�V���n���J�X`�k
��F��`0�a83��hE������F�<x���g��`0�aXc,�h��7N����ꌶQ�����7p\!�{��3��`�a[�v�����)��ʄ-�|��|���`0�axc�m<��<�+!�U��-1��U����n���`00�v�v�h`p�a��+[?�g�
����4��`0�c��G�ݽpp�Z��Qؖx8����}}���`0�0���m��W�,`l��#
��8���/j���`0��[a�nwo����C��g1�m�>�F��Ѹc0��`03a�nw�D�l�2�6
[?�]���|n^
���`0+���m���F\:�l;Ea[��\Z��>N�]��`0�!͐��v�`� $]�Y�-�9ppp�ɦ`0��P�!%l���6 ���}�%��3Ca��}�Z�B>�p�}��`0�$CBض���W��+׳�:	[?��BD��:�k0���Դ��m���vG��4j
�~�@\n*�s�5h��`0MA��v�{,��/�m`��ȣ������H�
��
��`0C]ija�nw�GD�7�(,	M$l���GD�L��`0Á���v�b�����6u���C�
�r^FD���|nv��c0���:
�^:.l�m�5�8�����9�(�o{���5tT��`0	�����c7�_�n���G�Y҂�6�O�g��Oϛ
h��`0Z�Ԅ��Cv)``E$SAIĮ
�H��fb�� f��/v�^�3��`0�"J�������>�]o���6+WC�SQؖ���}[���bni0��m}�{��m���&Kl�m��3i�:��X��l��a���X�~Ҷ� ���!��v��24�]�A�3p����R�
Y��۾	,W�>��Fb�^�Z��j��!}���	�\��Z���a9`�*��ut��R���mH��F�*0���7S��I�fH�0�Bn����u���.!������i7�	�]��[D8tb����^SJ]����4���	u𬵛�q,�I[ۗ�B3X������1C�����D�a�
�LUJ�f����T�{]X�^iQ�k9��F�H�c0�(��FV4Ҧ��QJ-�A��!%*	[#F�sp6`���1����J�#.@Y����C)�h���a�)E��_�|�u�Xm+c�%���	J�o�Q���[7+��S�!��m�9C�.��36��`㎮�a�1�`0d�Rj`"�O'9q�3MF��W籴E��?�|�Y`r���,�D�C������'�k���s����f���s -�9E�sN�s�j[�F�5C����s���i�߬s���F„�!�|B@��B>w7��ڊ����!�o_n�հ�l� ��QZ�r���`h"„�!�\\t:?
y�̺���0�`H�Բ�~	�8XIk��:�
��l���2A��N�U3"$�/��^aLNV��pZ
sN��5��!�m����7�?�eZk��W2�w^v��r3p��:̘a0��0ak\��Tt:_{�������9�oD���|�RE�[HV��Ɛ׊U��(�ц�D	t�	���V����tߍ0�=�)!�}�-C��Xݡ���	4F���X7�S�/}���iZ�}�:c,�Ѩ���"�$`����j,��ճB!�{;��k>�|�lwɄ�7p,��n8���ݘ���[�Xѳm8��>�
l��ׁ۽��`h��O��dA܉�I����ه�`h �|l���E�v��d�����tVM�R��>F�m=x�N��E='LI�f��Y](N���Qˁ^gD��	Y!�qo�Y`=���#����5Z���VrC�
��#�J��s��Y
�c>�=dٹU���u�W�'�� ��q��xl7�|�q�m�K��!1J��1�Q�E�u��:���`04?A¶���(:�o#B2K�):��Ժs!�{	$˒�
�����&��4%����(lw-�<Ik#��[�&�X*��t�cg�6
��Д��Ŷ���B���骾� �N�U� _|�q_iQ�I�5	��6��2�'I�	�n��o?��F<�:����k�j�!N+[l�):����,�Z_'�����i�����|�A��Y�%��6�=�k:�H��La$Q-�~�6Ja�
�`0C�V��d��k=��t~�ج�����2�+MV���Y��}6��v�l��1���x�[$�D�v�R�L�`>����jSJ���R��7~�wƍw����7~��Ə;a�qK��7 �W��=X�^�L�T�_�'�N��v�D�)�5���0��t�d����Y�~��I�V�+��W-�s�;�zn"�x�7#d=K_�L��v�v�±>�y�^1��3�=>Av���E~}�n�;
���;q�(m���w���0�2,�3��\X��V��űnN��%�U�oz����[D�4��kq��R��P
|��
t�y����`�R�C`&����ۦh��Y��T;���a$8p&r
�<���{
�J�U�*v��s9`,���^�o���J�Ձo��J�X�����!����Z�Į��Ə�)��#ٻ��7~܁�Sz�+�_��v5��/Ջs�Ng�M�L��gyo�vׂ݁�RG��B>�8��� +������C�%F!>��I�+�Ŀ��*���ј��qC�6f_�݅���݀o�W�{"������v'#�7n��ҽ���9$K��±*����π�1�]�T����}����b��=W�6�������E8V��^�B)�𧀗��^�PJ�Vx}���	��Rj)��9�*���������p��Ϥ<�5��Vڼ��t_�|�@&�;S=�x�R�a�&���g��4"J��H
�o{�Z5���^���Z��Y�f9Ek���Rjr��kW9dq���
�{�R�.�R���1�t&bt�
�?,��+��kǍ7�wJ��0Xخ��z�!r�D��|���9��&�r�f�bź,�B>�PGW������X�D|a2+�~�ݥ1�G��sC�Ax�Z�	���)�X8��^�vO�HQh����a��#�}���PK?k!1��lao;�=NJ;���������fj߃RjQ�h�S�g)�(�(�ԓ��Z�{Sh`ٜ�s��(�F""�X��'G ���R�W��^�Ả�Z�#���M,����8U)u-p>��,�X�Qm�	o±+�gD�&e��ޮ��?p�LǍ�r/�1�݆$8�!��_#y��خ��=ԅK�Ng��-Y���Z��]��������L9��J'D�i�Ҡ�?�'���nԌ ���	������+*�3�Z�W�2�a����c��gg���-gM�,�K��-�*���,bM�f��]<G��]�������*v��R*��^�@6U(7�����[oz�R� K�ג��08����J�e�RA�m�OԖ�2Y�K)հ�TJ�m���IGԖ�p
0E)�g��n+�%���~6��*`��)�}���0X�6{űyT��Zt:�E���w5�s$�Ԗ��[�}�A�~���O��= I%�89`!7�+"֊��/���Þ�,e�j��Ĕ��e���"+�d��H��_k\Z�?E>�$.C��I�0�d8*�!Ba�:��ԒJ�K��ŵ.���O��e�LQJ���%h��	xN)u*Y^�PJ�RJ���ڸ�����V�����wz��ً ٪~M`�|�"+��)��N��N�����j[˗�SF}_Z��ޯ�C!���=���L5yJZ0c�H{�R�.	�,'ZvQQ���.��=��sVo��vU��ʯ���y
���Uc_��hni�R����.-r���R�c,VFJ��Q�G�d�vI�X1��#��h�8�	:��RjI$?�kR0?�PJU� ?|}�q�k�{���E&� ��ϖ�B�~�Xl��B[�l�nw?�nw�b�ݽZ��=89�����xV�out�<���(�:�zTGW��/�@�2��&�Q�.7�,�v�n�e�]��S��q	x��j��n�{p��(��v�s����`�4��X��qc���(�G~�?A,\덣�X��Y�r�R*�UR����wzB�m7����d4[+������q�F���{�ۋ�mƍ�>��qC�,��^��. �k� �� � i�����Ha������2H�6�}f!��O:>�Y_�q���]	ZA4�g�n%��,9f�
�v' K�/���U�n��d���dWD���HPJ�X��}5%J�_"�,���
�P)u�0ˇ�4)��R�!����l�Y�D���]��I����W���F��"�y�!����1i�>�&G��|��
%)l���>���Ru�tt�4ʪQw���0jsG����S�޶�M�Y�I��f/@s`��!��i���#^T��>x���7ze�	qNTÒvMx��l�F{͆Rjq��uPa���o�SzoAw6P7~ܝ�Ə{q?����M]��Vt:_�����k�X���6n�<�Q8�����22\�B��rG�H��r[l���TEY�]o��=}ߍ5燵�u��k3-
܁��#��� k˦�.��ba���:Ȥ?
��G��)�S�x���)���,���J�g��vH<�&�K�6H#�—�tҫz�.�a4��)��".g; �_�Sz���; ��+a�nw/F��2�E��1�?b(QMT%���^>=��܄1h��u�O�� qi�W�~Y�!�X�����Ԗ
A����\3�r֤9��-����C�n��(��@�^qSy}��n��.��^ɤ��#��Уk���p��ks5l���EN!��J$(u]`a���H��
��-��@�Th�D��/{��N��;����)�3���%��t���'�D�Ce��P��O�:�z�!ُ��i�&�,Z|*	&)��w��ka����z����S��^!�w�H�'���-���4V>��힁c�R��m$�h�/�~d=���eg�r�������d4R�/��r�aԚ��T���U�1Z��/h�K�@=J�����=�����\��6j+�hY!=�ߦ4��C)�9R#/G�io�R)5�_���yJ�;�TLS؆��o^$���z3\,�s	�N�&��md!�ہY��E�5��2��z��[�����]�
++��/�7�T��vG!7�$�ڸx�(&�Gy�׍?ߩ��c�����?��/b��Ig9�$
�q�1$W�z�$f$�R�\O�������Z
(�l��u�ʔJ� n��_i�ϬeG���D��m�u+�
�J�?k�?���˄T��r�����l�� �t��פW��`
���Y$��a
�@GJ}�J��S�6�
M��=J���n���D����m�e�w�71���9����"� ���"l�*�so�P�����y��<���{�f$.�#Y?���
��XD��e0�2��o�Y���z:t؏a�[!�&���n��8փ	�H�&��.e���r&?ı�k�?�m���Hm�V��%'/�CH�Hh�UJ���{l�"5���,��\k�E,|S�║ug���RjoB	o��F.�>d����ơ����O~OJ�o/��\��S��L��@/�O��r�ֱ&T��$�{.,:��D?���c|#���*�cլ
gWy�u����	�Ύ .�� �aD��֜�eĶ��{V�~�CdƟ4�B�17�W��]ȹz��#yl��A�v ��R��&��PD)�.��>f?�Z�M�9��Y�Ҙ�$�3D𭮵>Bk}��!���Z�Z��Z�sI���F����H����Z�TM\k���ZODJ�f����ŵ�Nk=%΁Z���8�I�ԥi�9H@Q(��X
����j'��9�.z'�ͱݠe��,�e�n����V0>b[7�Xխ��ɬ�7G�����(D|�e�&/��$R�fO`kMk+��8��+,Uݞ	�>�:ǪMp9�8֯����H�x���k�_�۩�z>RekV��;�R��`R
~
���Z�j�㻀����~IGh�#�{���He�����*�q��p�����%��HC�>,�nw����� �Y��ԋj�a(���:�z�wt��=ut��E�`��m���ԍ	[	����Z�2t1�.B�v'��H6����u����b�f8��8֭8VŲ��݅���?�q8��ۖ��5����I����&�<�Qե^�Z�Lk]ӊ�'�oN�_X�J(�4�?�Z���?H�W��9����@h���)������oѭd���>|Z�83�f�o�w�a��"�%��l��[��!��
LU� w��nQ��2���
�;���,q����XǺjP�\�l�d��8�[��t���ub8��W9���]}����R�� �9)��I��^��N\n^k}
�Ő�$���7���o���LZ>�Éj�u(۬i�sm2��*.{i�qM��э�d�eg/x�4�5c�ᖪ���$� ���z�d��I��ir5p�W�9	���Gd*å��XC���	�u��D\a�����x/��q&I��G�[��H��TPJ���Z*�Vk�	���$fIcdg3��V���4�\s����H�M\��)?N��u���;����!Ԛ
���;.�%8����F��%���2"j���	�}
��MԻc������jĵ|����-`�6�=��RȤ��Ǒ���&��s��%�i�����
�uQ)u2�'�%�L�'*�Һ^�MŶ#1\S����ܢ�Y�礚���yε�IO�F-��:�$U^�����Q�>��Y�r�.�RR�ZI��9
)s���,��ñ�.�Y6���Ki�>�6��kI��J߶����[��Rja�M؟Ok,%����\�s6�i�m�����F-�Xc��N��k=HO\Ѷ>��.bu�����j�?l�q$~��v�CR>E�v�U��j����ei��=�JZ&���	�M�Y�(� -O���Cz�E#�4+I�kI28ԃ��F�5>��0�6��Vp�/�})>����Q����f��
�G�n���~M�ĪV�V��Ē���z9� l���N���s'
��{H�����lY��F	#l�a�m:����I�T>-�fG8��no�����dA8���)�R%�)��PJӖ������8ִ�Z���I�����F��e=�&$�:�d�A���#�H��msXњ�ZD�񱭍f9�K�Ⱥ����q@B|�*"nq�I��[��M���z'���$�k�9��zZ9I#�ӺN%)��J��@c�
"�5�3/�n33,�[���S�z�Q��Xlk#I����yM�V�.�DH����`�D*�8#V�$~�I�C>#~��`�z��Z'�g��4;C�����I�ZlY�T�h������3�f��"�G3�oI���TV�z��:�a��a&�����X?+/�O�4-�Qx��b%'�P_5�1��R;�N�Ν41�v03ߨRŵ2,�[�����F�b�mz4���Wp�:�u��6�z۽��Upj�n i����P�>ˉ��Dj�&#�FF�~@�I���H"�C�1
G)����$��[�dEv��`��M#n	��y9�F�F�ئG�o�5۽��%��PiIz��q2A$�+�<�8�w��m�J�m�H"���Z���Hi�>�
^�X#űdA��v^+���e��н%��mz4�ݎ � IDATVw���}^��^�6��W�3i�5��R�$��,�q��b�$9���n���������"6�Б�@页�G�k[׵(�ڔR�{���Wخ�B%�a|l�a\ң�ηg�>'��8���W�#��p;��-�,��[Qqr��x Q����b��=-B��{[�Ej�[������!u�Op�J����
LWJ���Z>A[q���d ����0�6=��|�*`Y[mk����c�|>w&�w_l�=����Jp�]	�MJV�����sl7�M��	�o5�tl�P��%�1���9�CQJmH9���!�R�T��q�Y�=�P�����M�fsE�l��������&G�{��%�8�����\[k1+|�Lܛ��n�'N�	m��iĐ*w��7�'�T���
H���^Z8xF)u�Rj�ո^B�^�!�
YC1¶2��C����7��!�;�J��j4��X����Z���=Zm�!�Z�+aک{Iv>��.�(���%A��ñ^Ip|3�z\�a�Ѭ�����0�r�?
|���R�9�ԪJ�M�Rq���]�	�X�S���g���V�]����*����G�s��k��R)��PE�R#�R;+�Ʀ�n9�S3Zв���1�{�����Vt:#��W�K�wt��K!�
A۲��dmb��ka�O�
W�3h7��D��!N6�~��)ɖ&b�{�X�U��
��IH�8Bsq>��ǯ܈��c}Puo�����ĭ�%�Z�UJ�)a��x��4Ƣ���
XY���x��2Dc"�y���UJ����@��>�@�2�k������ک��ĿF���RZ븁�_��Z�
�����9go�Z�Z�p(������%���q�Q���#>v�/Tڷ��gD�U�wM �Nh։��Snsі��FJ��9��&�d��$�
���U���N\ ����e��Tű��v�"�E{+@c�?&Z�mw,����NE\0�XIORJ����$��R�!K֥{�*�/��]��M�`�Wk='I_È�d�dr�sJ���R�`��-d��S�>^���=���1�_�I)�]��g1�@)�"�K����/�R�"���Z�x���}�H�\t:U>36�|�=�2�#�ut��#"wZ����y�9����S��)�� �c�v�:SÝ8�'�[q��zcK���%�{#���(2��X�7G.�q,c�Y��
,]��(֔r�v�MR�H���l�	[��7}خF�A/!��f�ߴ�,����z\8���A2I�1�/c3*	���J�+��b��\���N�ZG�=*�E&�G^�oY$��a�GJ���p��:�w_)5
X&��$�FU���1e�QJ���愉3���J���L�"�%���R�"�O#׷���u�{$���Fk]�[kݧ�:q���.�=J�#�֑]�<��y���v���+�F���Z��
�hV��>��7��9�Q9
�\I��;���Mד���դ+l�,�O"]a��r��H0L��<LV
(�	,H2�l9��a\��[V��xb�����@���rF �dž)�U�Ӽ-��}��~ʡ퀷*��0��'�38ȧV~
��:�{�e^Ot�
�E�\΋z�,���Z��ǫ�Fh�V֤����o�b��
�^	�I�w���e��ѵ쨵�W)�degk@{���i���+J��#+Q'ۀox�YJ�����:X��mT��J�AL�z��E�3U_��B!������Y�91�E~\i��K��>;r
�n���x��!~�i�	��,��cM�v/ �og9K��V�S�R7;�Շ�Z�����������:AqY��(�.G6�#yG�@~��#)�~��h���
��W�͟#��V�����4i(�x`⿷6d�b�R�*�z�<��oE��D��Ix�s��
�L8�4�Y+	��	�j4]=#�\C����-�FGW���ݭ��F�I!�k�l�5
�}�~�$��D�X��k���0����ir0��5#C������'�֐=�6�O��JLe��Ҩ:U�
�rf�����a���K�\���3J�#��}�B&[_�QJ}F2w�rf{Ur���_�V��M���SHP���E�������^�,]��B�3�Ng�Ktt�쏤�
�f�g)���g���>э,��lJ�]q�E�j��I"�'���M�
!��.��WY��h���p�`O�u�1������x�t��+j��7l��2��*��=��G��~��v�Rk �4IS�~�����6�a;ITp{��bJ�E�ݽ����F��j�Bj�a[�5`1o[�ʾ}]=3�@����S�BږMOD�����ճ<�`w$:���V��"K�ID��e"x�N�Hݹx��q����n�_{���z�,0�j���p��^&�IDž�P���J�� �3~�o{���i�G些f�C���Z?����7�4�s��Sk�x��%l��	Yྡྷ�Y=Q}��%�\���7-�}G �S+"�B�����y�����B>�F��+R��f )�܎��1����ޖ�/l�Ml�A��k\���������+;�t�z
���L��Y?�q"j��_m��c{�X.�ަ#F
+�~���v�z����?�����|�ԑH���h���y�Z�D��/�#c3	��1Z�+�6����\:�h;�5�.�����R���u����Htg��/�|�wGynY��V��d�6iaw�$�6�������w����4�7��R[����a)��������2h�{�R�!�P�(���H��I�R������J�$cB#W���Z'�4Hz3�G�{��t]	��_�`���4k��mM���cǜ��\t:�Z�aL�h�T���&p&p?�<X������iϵ2��%^�/I��i�Z_ͥ%lY���c��v@>��ү`8Ǻ�N���5�������u�!8�g�n�M�&Z�O�R!��sI�O�V��h�h@�C/U�HŽo7`�"�6u�M���J�'׻qi�__"n�x�T�߰�fE��.K<�v�{�v�{�v����v��H��g��i��"J��7���QH"�_!ntt�����猎���tt�,�b_"�)��m
a�X� �8������0��6n��X�q�K�%����ȭeDm��<��8�I��?���8V�*DC��|����6��[��H�
�����;H����Rd:�*�s����$-菨^�,M���Z�!MQ�,�� ����B�A��� ����Xd7'~��,�C�[k���ut����T��HƃM�2��:�z�A&��y"S��^����Y	��I[S+�!l���c�����q\��j���?�vOA&ZG��w�ʫ˛x*!��{U�~����Z���.}�e�����~
��R@�_��2��Ȥ�:Ox2��,q/p�Rj<r_�>�牟�X�/�Zg�T��O�R�RD���dnxa����������G�ޏ�d�Pt:�����^���1�/��:�Z��zA��
�rF�_
%���ꙌX^o-�s�/�^��;�z��|�G"�M�-ݷ������Ժ�)��Ϥ&�4�z�!��XoGc�'#A�;y[T��^��d�'V^�ʼ\�r�Qɲ������X$0�ay�c�H����gfQy��>���^�8mRs��Z�NUJ�����r�oT+���(�&I:�>��E���
�Ѵ�J��t����(�.�s'RhJ�ҳi����۔Rk"�T	,�;��Z�}��#S������+^�u&�_rA�����nw��,e�|`q+`�Pt:%�n��7���㎢��(tt��89��^���ut�lO�Z�}H�Û���\�刎��U�:坄[)�)�s�	����1D��M۲e��׷Y�k��
0�k���!�����ǪTJڐ���N��\���8V�n$���ğqM`)o[��S�^��o+3�e�3�C)�R�zy��ۥ��������ֺ%�z�R�#�����?oG2�\����[�W��NG",/):��>�v��
�݋�`F!��{!�Qd��"�V��]=/!�O��4T��^~����{$B�8��Z�b����P�0���0 �o�f����P�b����Z�٤hn&��3��q"��y�eK�y�P`͢�׸����I����x"��N�i�6�?�V�
���B>�"�M@�h-ak0��%(w��+}K��4%���#R�"K�qRE

�\�7tMGW�w�R~F���`H�¶�t~/j���O�1E��)��وl�-�s�wt��F��Sԍ�������}����H@��`0C��
��fw~�DÏ@*sE�-:���<�E���E�[�����pp]!���%�`0�!)��m�ݽ�C�B7�C���W�`״Ҥl�mgut�\\P��2K&m0��FM¶��^8
8X$�5I��rYTV@�����s#��P��d0�aQQض���#�X�K�<�C�����h``������?�<&��`0À@a�nw�G�_A[�Xl�
pWGW�c��m�x��`0Z�A�����I��ÈZH l���
Q�����OGW�j
��`0�!J��vc��-��+$���Y6H�t��>�1�>k�uk��wC3a��"���8օ��!G!���Q�\�2 H�>B��SC��)�0¶�7����l�	�R�~������@�Kg����<C	����.O���3���$�q��+�{����!8ִ4��B�
^A~{��.�r��S�kq�b�c4s"�j]a�#�"$����VD�k�aC���X��}�K>��1�,�!YC�	h.ArI?�d/�)e�p��w�F
�N��BnJ�f�����}*�=���Bn�����^{_Ze�<��ϡ|�	���
����֕+��!׬/^�9�
1¶2�7ICsneÏѺp:b�}�	���=�+_y�y֌L�=޷�~��a�k����q�V\Ɲ�XhK�Ǿ���i����1�e��H���Ř�K<�BO���P��l�p.�f��"V�_�mD�@�fz�s��2����u��e��Ҟ_O٧�n�1#�۟�c����9��c�S��t�W�g�cl�-���`��A>�E�s~���K��l<���B>7����Md�l8�9�L����������o�S����U�k6D2_���<��	�[��V��ފ�z��˞��A|�q���"��Z�ݑ߭߇s"��D&�+"˾��R۹�	��n
�	`����b�>y���N%VB>���y.�T���0#��U��#"3�e��r?�RPq隸(�/	���{ǚ��^��.����
��N��[y�=�c
^��Љ�b|��p%�uk�m�"��Kv���=�
�u�o�Q�����n9g��c�s�r���+���.�
^�G!y�A,}/�!�G�q�#���.H��̀��g�ǁSq����v�D��l
,������c=X��(�鏑sk��"�+��F��~}$.��C4ɵ!��F>���ȵm��
����|�{�>��v�cڐs��uj����]�n���z���^{�`]�u`;�|���^�=k��c,kP,:������X �(�sf�%zQ�Ր����=�"�,�f�Y�A;���O!7ϕ���]��l�-���7;���
�Ϲ�eύD�V�A�����ޝ����U������ym-�|^?����n@nȕ8�>Empr����h��+�g�N�����v9�"DlN��L$j��;B�
�H�����3�
���.�힇|/#��ȍ��lw"��T@��"��v�B�m�{��{�뇁3���XD	�`�����oC��|c\9�OF&[��8�u�����w!dBp4��������aWd��r��"�O/;����r#$j	�+��n��O+ �����p��>����ge�o������K�gȄ�Z�A��u<2�	���N�ol$p#r]\���ȵ�a��h�/=w(2��{\�ʿ���o�k�.�D{M��x7r�v�U3�6]1�$�g��"�ʎSa�>r��fe��42������b!�8�Y��>��l��Kc���z��S�m�?#�;��vr�_���S!7���>�A��q�ﵑ���F��!���E1�w��D��w��"8��c��͑s�H�o;��߃X�Vv�v���>�v�F�����}Y⻾Ǔ��a�㏽1��|w{#��`,��W�\�������r]�����I$O��w�ˎp ���r����>�Xwہ۱�տ��󐱿���3Q�"���jO�ݘ��{�cWF&[/!>��p/r��s@�L@~��Sn���jf~��|�Hf
�w݉�]	^A�rΝ�`+��p\�i��#$pe$`���y�z@_�L����7<3��wE�?hvQ�2d��f>�a�qĄf��-l�;F�f�c���_�_"�ї!��e�r�������+����� V���f!7ݍIWԮ�X\7ލq|;"�ʞ׈��)�h�?"7��38]�<ĺ9��^a,��3��+�"z�@n�%6Fn�#B��{��c����c��
�@؂p��c��v�A,ۣkoI���F,j_ ��Q��D��{�*|u�,��D��R����$dm�3:�<�Bα_"��� ��;D(~�z����R��aCUlw9�'�g��`���w���+�������?��2�[y��[(Y�oı.�_�����}���cM���]�cE�1�\�`a���W�7�ra;��-�#���9���F&"]���|�d5��܊��܈�O��׶A����!'gi�2�܂��`>A��S�}�M��&���t~�ܴ�3Fئ����/d�k_�{D�>�Xo
8fdI�D“�OBı?Z}u�b��
��'��~rS�#jAnVAd�yy�&���/T�<��-S��Y��q$���$jK<���V�'�"��$�U��J�5D�~�X�6���E�dp);���Aym�D���v�X{7±��cM�Yv��''��dz�d��vw�m���H�ԕ�}�����8֟p�|"r/���Dm���O/u���_�?�	�����f�X���?.�v��Uz2�̢���'�.Y��~����\�){}�Z�_��
q�C��N���,���%�@&<�e�OE�痨plZ��Є�}����0���R���6��$��r!�{�d7�V��B>W�jgb�=X�;{���Gf��2w�!�u}�m�]MKc�xY��K�����u5�s+ �c�/�7q�Y�>.�M�b�EqS�Z�Ɉe;�(��7�$<N�y�mlw/��F�sW�D��͠$|Kn�|.l�q��c=L��u�
Q���XAYF�=�#�uV�".0���"<�{�`kN��܉c���=^�=v�?@VV�vEK�Zɿz2����vc�御 +	/y��@����q�na7�~��9��Lb�"���^��'� �Z�ϭ�����Z����ޖ�;��"�&�e%�
��ģ�u$lu~HRIؖG%'�*:���q�3����\j}�Oc'"ЮCf���Z��=�*��ܸJ����0+zIVv��r�g>r��߄J�]�ܘj]r-�<D,mS�������6]�Ň�d9|٘�
��p�wm�h-	����r7��#�
�����b��T/����$�X%�m������6�>�����U��0�&��cU�ɬ6F�����ռ���]�d����b垂�ނ�.�՞��	4z�ro�c��W{�D�l�����-a��z�7�0�~�k!V�J׵��u�ޠ�
zIDAT-(Wr-��_������o�Q$�H��5M�B&ƕ��d$pXee�$l�g��� ��T�Y�VZ�1d�gH��
�א��Ȓxض8�(�1�f�j��*e	���~�-U�S.Lk�CD����#7��O��Z
���ʞo�Ͽ�����2��ǚE��sKD�"��!���￵�4T���o�Xa>�a���g0�~�rV"���7�ﹴ튈�%q�p����J���#�[����X�p���q셬�,�{�/,���c�y�6����v���1	�*M�G&�ে��KV�ݐ�]��k�=��umE����c���N��<$��o�K��gHW`��LD*���s�偛�P�t����~��˗Á,D�p��m�Ԑ-��J��4��`]�s,��w�����_؃�KTZV̂�H�ȉHt}�n_$
<���و�lb=YF-��ڇ��Fn���I�淰6�����C�Si��K�$$��ȗ��C9O �l�4�������<��=�R��@�K�C+J�a9ac|���
ru���A�I��
r}X�
����&r����vG�i���X��E��	��ևX�' ����ED�❷["�l�PT/��>�~��S�+��b���ڎÍj���ji3�6=�,�sQď!+ ��W�oQD8�W#>D��N��r�����ER��ZC�~�G,��!���?�Y81Lbp`�$��(�s��ʻ�%�X�{(�qb+��g9D���|�{-�Lm�HK8��n���ɑ\�~,��s��ֳ�_e<��W�hCI̧���5�O��v��k�
�=8!F�ir3�i��v��Kl�c�݋�݁y�mw�{'�{4�۟ױ���5������G����~��c��䎰bq,�_/�#,���M(G*1��J_�׶�!�0�@Du���s�}D�"7ʷ\�*Ģ�v�}F1�[aL�"��Ͻ�jH��_�-�#֍�%/��gA{$�'w2�+8{!�m��<�w�$Wf�udb����8�ض!���!�Q�B�!K�W!��!�qӘI2��.$0j��3,i�;}=�7���#�E��0��
ÃK�fCyF�^�w�^���^��ҾO ,@D������^ŭ��OXV@�u��s��FWb�S��k����x_�d8�{�e�{�7�"�{:�{%0up��/�qb�v� �k��?a��!�����Hd�}+����ӞX>	<��ѹ	����w�"���|�A.�y��$ft)ц�^M���9�o���3Ȫ�����B��A��%���(A�S�Պ0����j^gK,�\o��!A�H�G���5h(1��tEæ��D��3���z�,�{r��B���IL�Dx���D�ӽ�/C���!�j���
�|����^@��_����e��7F�߷k>rý��]��2��\�?���_h.�#��m����E�/�G���q�K�Q^�ܰÂ��#����w�o,_"YA��M��:��A"�_B�Ȅ�Hq�lq�W��'��dPiI~�i�f#�/���_��ֺt���LL�c�%NDD�ϼ���_Q��d#y��U�ñ��v��'K!V�_����䨾��5��T���?v:��,9��,�o��\A���%f#���T$C��H:��
v%&#A\!��]��æHJ�E�kW������q��}��G�N�ˎ�|�w#���"�፼~�&�=&��T]�!�Ӓ��2�>?A&"�#�y������$��z2��(l�N��v�C.[9���e`�	�٤� �����%�m#�²02�?�8��>��@,D��A��ɅE?�\���������V(^��:�د�>�7�.�7����+w)�Q�%�L�Ob��\�A��H�!���4OaLB�LA%m�|�X̯B�ͥ|��E�G+���|ǿ@ΑU��qKY���O=�������`+�p"��O�e�DZ���"�lCDԽ���|�A\E��p�c���M��^G��;p���s�U���/������7��U��rl�n�w��<q#�<(Ϭ�=�=E�#�C��^�c}��lw$�����o"pw����;r]{.�ˑ ��C^/q%r��X��C~'F2-|p�ň��A~� �ĕk�w	���B��!���d�mD\^��k�t��Y/"����k�~�\���x���QdU)N~햧ꅪ��>��v�\Yt:
8~$�S�qB����nwo@�Җ��t�������=H~�;���
��tt�lO��[��tt�Nytl0���N�w3��R���@.?G"n�.��hC�����`0bP����Rr��J���v��{#�����5s!D���XZ���Q�x�B�xWD
���Z���;gU2��|�H�Ρ���V�����j�'�5��'x;d���������|(�Ve�`05P��Z���nw��`G�ȻE����Rr�$�6�P���3Z��Hp�$�x-$���E�v$jyS$�D-����P�Z�_N�ϰz�����B��(a_�jɧ�D*���ƫ!ϿK��sXU�i5�d!�KV~�`h.��sZJ�ͤ�T��`0R���c��VF�IEND�B`�images/wf-central-logo.svg000064400000003716150755146460011556 0ustar00<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150"><defs><style>.cls-1{fill:#3f5a6b;}.cls-2{fill:#00719e;}</style></defs><title>wordfence-central-icon</title><path class="cls-1" d="M133.11,60.11A14.89,14.89,0,1,0,148,75,14.91,14.91,0,0,0,133.11,60.11Z"/><path class="cls-1" d="M16.89,60.11A14.89,14.89,0,1,0,31.78,75,14.91,14.91,0,0,0,16.89,60.11Z"/><path class="cls-1" d="M89.89,16.89A14.89,14.89,0,1,0,75,31.78,14.91,14.91,0,0,0,89.89,16.89Z"/><path class="cls-1" d="M60.11,133.11A14.89,14.89,0,1,0,75,118.22,14.91,14.91,0,0,0,60.11,133.11Z"/><path class="cls-2" d="M109.71,87.3c.33-.92.62-1.86.87-2.81s.47-1.92.65-2.88l-4.49-5.2c0-1,0-1.94,0-2.9l4.49-5.22a36.63,36.63,0,0,0-1.54-5.68l-6.5-2.26c-.32-.61-.68-1.2-1-1.79-.14-.24-.26-.48-.41-.71L103,51.09a37.14,37.14,0,0,0-4.16-4.16l-6.76,1.29c-.2-.13-.43-.24-.64-.37-.61-.37-1.23-.74-1.88-1.08L87.3,40.29c-.92-.33-1.86-.62-2.81-.87s-1.92-.47-2.88-.65l-5.2,4.49c-1,0-1.94,0-2.9,0l-5.22-4.49a36.63,36.63,0,0,0-5.68,1.54l-2.26,6.5c-.61.32-1.2.68-1.79,1-.24.14-.48.26-.71.41L51.09,47a37.14,37.14,0,0,0-4.16,4.16l1.29,6.76c-.13.2-.24.43-.37.64-.37.61-.74,1.23-1.08,1.88L40.29,62.7c-.32.92-.62,1.86-.87,2.81s-.47,1.92-.65,2.88l4.49,5.2c0,1,0,1.94,0,2.9l-4.49,5.22a37.78,37.78,0,0,0,1.54,5.68l6.5,2.26c.32.61.68,1.2,1,1.79.14.23.26.48.41.71L47,98.91a37.14,37.14,0,0,0,4.16,4.16l6.76-1.29c.2.13.43.24.64.37.61.37,1.23.74,1.88,1.08l2.27,6.48c.92.32,1.86.62,2.81.87s1.92.47,2.88.65l5.2-4.49c1,0,1.94,0,2.9,0l5.22,4.49a36.63,36.63,0,0,0,5.68-1.54l2.26-6.5c.61-.32,1.2-.68,1.79-1,.23-.14.48-.26.71-.41L98.91,103a37.14,37.14,0,0,0,4.16-4.16l-1.29-6.76c.13-.2.24-.43.37-.64.37-.61.74-1.23,1.08-1.88Zm-7.46-5a28.27,28.27,0,1,1-1.93-19.62A28,28,0,0,1,102.25,82.26Z"/><path class="cls-2" d="M81.07,52.25c-.77-.2-1.54-.37-2.3-.49A23.61,23.61,0,0,0,52.25,68.94c-.2.76-.36,1.53-.49,2.29A23.61,23.61,0,0,0,68.94,97.75c.76.2,1.53.36,2.29.49a23.55,23.55,0,0,0,27-19.47,23,23,0,0,0,0-7.5A23.52,23.52,0,0,0,81.07,52.25Z"/></svg>images/icons/ajaxWhite32x32.gif000064400000006210150755146460012255 0ustar00GIF89a  ������Ƅ��������666VVV�����似�!�Created with ajaxload.info!�
!�NETSCAPE2.0,  ��Iia����bK�$�F�RA�T�,�2S�*05//�m�p!z���0;$�0C�.I*!�HC(A@o�!39T5�\�8)�
��`�dwxG=Y
g�wHb�vA=�0	V\�\�;	����;���H��������0��t%�Hs��rY<H.�ʼn��	��b�Zb�OEg:�GY].�=�A�OQ�s���\b�h.9�=sg��c��e��*�ֆf7D!�
,  ��IiY��ͧYF5�F�ԢRÔTbG�J����L��d��&�Ymx莔� \@���� �1�&R���H
41Q��|V%zv#j0�
�l�Gg{0~�<�<	�[�[�h�x��G�
y���������[�0���G����P�z��hɾ�Ękz�i��y����h|z�h�G݄�VŢ�����\h�[���Ǥ���&�+��W�7�8��!!�
,  ��I)1����1G5d]�(��RDz�T2��jL�{��< [�5�M��
0�)�
 L��I��m��E��`�p�U
�^f%�^���u;zz}0�X	
�S0ewyk<�%	�O����	��z��{����|������%����F�i�1”0�����˼Y����8�x����	z��@���<ݫ���������8��Y<���ɥ8�\�P$���!��
!�
,  ��I����gEU�� ՠR�a�TB٤�p>'���e�$��"�\�#E1Cn�Ď��~��J,�,Aa���Uw^4I%P��uQ33{0�i1T�Ggwy}%�%'R����	���=���������3��G�%��p��0�
��JRo�5Ȇ0IĦmyk��x�T�_}�(���^��yK��s���>i_�%���n�=����q�4e�-M¤D!�
,  ��I)*���')E�d]����PR	A�:!��zr����bw�
%6�"G�(d$["���J��Fh��aQP�`p%†/BFP\cU
�
?T�tW/pG&OtDa_sylD'M����q	�tc�������b��2��D��M:�����d��%��4%s)���u��E3��YU��tږ���D�$�JiM�<�Y�;�ذ��d<� O�tX�<q'+B!�
,  ��IiR��ͧ"J% �����EQZ�����Ld���-Y��
�h��k�Q�|��5�u�4Y�I���N
bW���u��5�
�r��	�%yb>^%o/rvl9'L����;��9�����������9�%��i9���� C�"�BB��Ds��^Xf}$P	�{L�?P���O4��E��咛V�$���dJ�#)�pV�$!�
,  ��IiR��ͧ"J�d]� �R�ZN�*P*��;�$P{*�N���\EА�!1UO2�D	�_r6I�b
�����H��8	B�;	��"'��Z��t��b�K#C'K����w}?�����K��iz6��:x�KAC���&}9�tz\\���D5;x���Q�d(�	��KW���MB���I��ڈM=�ˤs�⸽8Da��J`@LG!�
,  ��IiR��ͧ"J�d]� �R�ZN�*P*��;�$P{*�N���\EА�!1UO2�D	�_r6I�b
�����H��8	B�;	��"'��Z��t��b�K#C'K��Gziz6��8}z����~��%X�K9�:���0}�%	�tz\B��lcL�bQ���	������lj���ųK����ň������x�(țP�X,��ւ|/"!�
,  ��IiR��ͧ"J�d]� �R�ZN�*P*��;�$P{*�N���\EА�!1UO2�D	�_r6I�b
�����H��8	B�;	��"'��Z��t��b�K#C'K��Gziz6��8}z����~��%�:�A/C}���u\��h}b��D��]=����	��V)��
ڊ����9C���D�K����K���u�	��*00�S�tD!�
	,  ��IiR��ͧ"J�d]� �R�ZN�*P*��;�$P{*�N���\EА�!1UO2�D	�_r6I�b
�����H��8	B�;	��"'��Z��t��b�K#C'K��Gz���z5
���������C�:	�A/C}���u\��Eh}b��6�[=�����Wx&)���I9�Ԭ�@oC��T?K����d���]��B7����6ЫD!�

,  ��IiR��ͧ"J�d]� �R�ZN�*P*��;�$P{*�N���\EА�!1UO2�D	�_r6I�ƀ��H��03���hո��a��j U{CIkmbK#�cK���8	�{a��8�n��������V�:�/q:M�
��Cu�~���Eh�k��6	�[_���6P</U�YHF��9?M�%
�G���C�k�v���>.]�6��!�)V�!�
,  ��IiR��ͧ"J�d]U�R�ZN	��J�j�N2sK6�
��d�I��)
L�H�W�G6	�KX��젱�.6�d��~z�h��uur/6 X5�I;_�tO#E	{O���9V����9��4��������;V�C/
��6�Ø~*�'��Mo����n��bX�:~]+V*�m�K_�O�rK�N@.��d�~�qЦ��D�B֋5D;images/icons/check-response.svg000064400000001406150755146460012574 0ustar00<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="50px" height="50px" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M98.287,21.025l-7.823,-7.812c-1.066,-1.092 -2.528,-1.708 -4.054,-1.708c-1.525,0 -2.988,0.616 -4.053,1.708l-46.012,46.012l-18.713,-18.712c-1.066,-1.09 -2.529,-1.704 -4.053,-1.704c-1.525,0 -2.987,0.614 -4.054,1.704l-7.812,7.834c-1.092,1.065 -1.708,2.528 -1.708,4.053c0,1.526 0.616,2.988 1.708,4.054l30.551,30.551c1.067,1.089 2.529,1.703 4.054,1.703c1.524,0 2.986,-0.614 4.053,-1.703l57.916,-57.862c1.092,-1.065 1.708,-2.528 1.708,-4.053c0,-1.526 -0.616,-2.988 -1.708,-4.054l0,-0.011l0,0Z" fill="#6453A3"/></svg>
images/icons/check-care.svg000064400000001406150755146460011650 0ustar00<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="50px" height="50px" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M98.287,21.025l-7.823,-7.812c-1.066,-1.092 -2.528,-1.708 -4.054,-1.708c-1.525,0 -2.988,0.616 -4.053,1.708l-46.012,46.012l-18.713,-18.712c-1.066,-1.09 -2.529,-1.704 -4.053,-1.704c-1.525,0 -2.987,0.614 -4.054,1.704l-7.812,7.834c-1.092,1.065 -1.708,2.528 -1.708,4.053c0,1.526 0.616,2.988 1.708,4.054l30.551,30.551c1.067,1.089 2.529,1.703 4.054,1.703c1.524,0 2.986,-0.614 4.053,-1.703l57.916,-57.862c1.092,-1.065 1.708,-2.528 1.708,-4.053c0,-1.526 -0.616,-2.988 -1.708,-4.054l0,-0.011l0,0Z" fill="#29957C"/></svg>
images/icons/ajax3.gif000064400000066430150755146460010647 0ustar00GIF89a��������������������������������������������������!�NETSCAPE2.0!�"Created with Chimply.com"!�
�,����I��8�ͻ�`(�di��84͐�p:DMr��M<���D�äl`�FBA�RZ'PB�ID CC�^�����DkπL���c��ɿ�stdUwA~>
Ho4���B�>f=o���;�>��	��d��1��^o�i�
��9jo��_���;�o��5�
��2YoS������1������
��)�Q����v����M0�LZ� p%$@
�����D-�u�€�B*`�cD�a��	-�\H�N%�!s.���I<3\{c�Vj�{y���9�
��'J��8�
@�Q���L
jN�AX��E�ׯ�T��.�	�͉w�ϵ	:��L%a#R�J�`�N�<֞l4
;q5\mC�9;�a)"W	�������N8:�X��Mc���o�'t㌁v�t+����f-`�Y�����}G?`޼BG����+9���w!3P57C�	`��4�#���|��Xie��M��+)��l����NT�B"J�BG����q�U�w�
�]ԑa���vb;2g�`��'\d�~+���O9��m��"��a>�1'cpx�P�V �Yգe�N��3@� ���d> ����ZS�h�l�O0`�#fE�|�O�UB$��Ц�P睌�)#{|FJ&CN�-	C�P����6**K> �	0�k>f���_#��ʀ@�����īJtY���j���k��"����.+)�:�c�ֺ�P���>0h>�t;��%PKn�����.p�����s�����ۖ����$�S-�d[��v����`��ƫ��>�s.�� K@J�0@��+�P0�@��p���-��Dm��Hc @B
!p��P?����&}�>NG���Q�	��&���dK�3�#l\��c���l���1�m7�tk|��n�́�{�M��2`8�:������S�ӄ�Wn��g���|��L���}�&@�NL]�ن�.��?��P뢯]���.��2$�;�x>���w�	���W$/}�/���K���a8w�ߑ����j������}����?�޳=8�K���_������p@c��<���-�P	����(�NN<ۥ�7��5� �Q �(Y��#�F6?����gB-������}P�!4^
jhB�	������΁�`@��NPA"F�}�π�(��p�)`�O84xQ��b���1FI�O:�_����i/\�߈03��$i9E�y�Eb�#-�G�O�$W)y�Kh��"��H��$_��$V�T�,^�K#Ӥ��(6�EM%�eHə������ 䫓���$׈K��RHm�%�L}���%Cjy��P�����KYN���)W��<���rK$���c
�i�R"�ؠFަ��T	<O�Np2�<�	��u>3��Ԉ?�tM7.�/;�=�Lhf����'dx��e� �@�@Yь���̖*kx�z�\���1���l�E��6C�H�3�����O,����agPa’��L�8�sB�x?�dG�:T����|EV-�Г����#�3-	ը&�r1�=ۊR\&Uhc�E�JL�*n�@B�Y�>�	��_
�_/�N˩5�#��|�V�=����
+�������)Q節�jP��(���Ԧ����g��K���c��yLJf����ܓ.YX��뒾5.�r���:wh!�
�,����I��8�ͻ�`(�di��h$���p:DM8r��M<���D�݆H�B	�`HZ'�F�z<�U�p�j�O�Y�uFAi8k����?�sAvwrpl}EF��:��
{d=�Au�
�^l@���:�[��{�
{n�9	��	{`�{U�9�
�{5�_�:ǻ�����/��	���O��)��Q����K�Y����k˱@�hH�,(�!+s�Y8��À
2*`�c@„��aHw�^l~UU���5����#D�X}��҈I�.U��5?�w��1Pz���d�	0ոSH��	\�`��OxF�@�R���
Y6�Q?��Ü�pw�-:�k]w3��"�>0��`�F�W^F�!/����ֈ��5��qs��?��J3Y_�%�N�@�Ûo:�f���h��X���+]�����rG���T�����f��SnM5~b'�l�ww˴� �KI]����<���1�a�y�t]U�0�4�u�4g<�[��[j�A(�~x�`C6�d�wjaR
�Z�����t6^ ���``��m`Bu��Vp��@SP�D)���A�%$��% c���i���M���u5Q]/*1�R���x�9�k�e�8�%qƐcLxd�'�y6Z�য়		\}e�rY��8��
x��V�A>n)=�j�ħ�B*��R�e��k�! i�}:��"��)|#8��}�4,���h{%��욲�R��y*��]�f���m�����R����a�z������
p+b^;��J�GL�V�i��"!��K%�W�j�	�@Ĝ������(����,��r=V\��4ӌ�@�<������@�C���k�H'���/J�PG-��^E��Xg=3�*�1��`��@A�jm6� 3@�l���p+��m�u�Xĭ��s��7xKP��g�}���m�Մc�q�^'�5T��x�\���T�n�h}�E�,P��}wzD����.��cex�;:��n�bj}��$Pw��_)3���<	����]N.�n����W<�wO��U:/�K�>�����l>�ǽ�!�?�(������֪yDT�	�0G���gZ�ysh������� 
j��/p�
U����f��	���T(�#g���U��kF
+?Y�(�!1h&0�������a)��i�H�#� H;�b��pEfQ�F颌��E0����3�4N!7N�����ʽq��Xb+�*;v�bM�}�0R!\�"�EB������(��	� M�d%)&4�'��OE���%�J>�ȑ<d�\9X2D���$#G��w	r,�|"���D1�_�� �/1�����#�a���$�E�GS$�:�<e7�%C���*e:1)JZv3N�4afp'D�27��d7�w�p΀��K�M|ٔ{z�cLA,XN�%�D%�=��L��
�,DZN�r�"f��<m6iK%�F�'O;"s�$�AO�LU�T��|CR�S	��)���~za&��Z��?��Z�1�,�j�\2�@e�+�*���SY���;����=Ӌ;I�Ҁ��y��MA�;MR�d�:������������1��u�7#K��j#!�
�,����I��8�ͻ�`(�di��h$���p
,��x�uR���K�H����J��sx>@+�g����14��@�:w�Ot����8x5rNO	4}b�1�5d<�����@�5�]�����9jE���	�	�7�9�Q�,�
l�1����	��_�8���ʾ���0�=��o���&���������K��^����<0 �@p΂7P�^]�@�
4�1$�„�8bXG*"�*�� e��?~�	o��QONP�x�h� �#��f�����N	�5�N�E?N����I\�����3�I<fM��!|ӊ���L(Ԋ��6�]M�Px��O-#?�B��_q�VXՃ�A1dëW�Ǐ/[a�b��-K��3_�B��J8s��>CZ%@��b99y��Z>��9�p-�H~��#9�F	V��M��-��\%��?�+��tյ˲8��BU�۸��=���b���
�p���zDՀP�iC�����K�`��x��z�Ug��כ(:������/Ͱ!A+RX��8�@A5���Z=�`^-0��<���L�v�9F��Y�VeD��{��`�� Hi�mPfQ$�U-`�I�t29&g��P��ƥ�<��u����{j`��!!AFN�@�z��.jfH��@�������a�i<@j������Yi�|�Zg��Q��m�2��t
��@�F�i'f��1 ���1��K>P-�N[@���������&q������P�+ČQ2���2����r���Z�@�'���7����� �j�;d��ۃ�.J. �ȇ6�@ir0q������I��4�l���b�m�fN��,7-��q&u1ϟ���C7-�EG#�)�
8mu�
P��R}��d=��\K	��L�m5L;������v�E�!�/GLf6s�|���L��:D��{��UcM��(#���Wn�嘣#�����Z,zʬ��(`򪸀^�谋�p*�n��97�z켟=a������z�������1��K����3���w�nd���'�{��?�?�b��O}���@���5B�����_��,	���߾� ��-�]��9�͡Y
Dݦ�'?��b�+E2(�4D�Jj!A�5c:�
R�Y�LŤо;�)v��"TxC�c �x�휔
RЂ6��
��"V!�R4��2W,�f�JM��d�X"f)�	60#2̌R|�WA6rы_ʤ�8��v���/�tK��?	H˥1��C�/��%D���b4�I5,�OJ�%��Q�7d�#�XQ��`�c�:�����s�HbI0���:��H\��E�2b��� ��G�2�4��hY�_��>��}x��T$�V��e6��Xj�
�4
e���s<��& 8�J5u<�@4eY<�#��c>I�K��rc�g#5�铛�#Z��b ���L*���sԱ�d�@:#Y�qf �!�0�`�qD3�@�:�(s����%1o�Ґ�4�,�Ic)���W:�e��Av&���a)�Z0ə���T��E���~�eH�7�&��0��?;U�~ p�L���W���0�PV�:Ϩ򵯉��_K0W!����\!�
�,���P�I��8�ͻ�`(�di��h$���p,��x�uR���K�H��U4I�����<�V��ZŚ��'�7�I���Y�њ���fGNjS4n{}A�cj	����:r�|<j^���8��\�	�a��8�X��j�
	�:���k����2W�������0��������(���رF�Kߑ��Ǿ
�Z�(��@�:��G��>u�4 @�A@!	� �����	�����oC�S�觓AѼY٣����p�2%�;m<�N]�.��h�dϔ
8���
�l} I��K�lVX�4�� �\���P�I��Y�lʵ@��T��I|��P�.��B�Kq�]X^3L�⢶�X��i���Y@@���*T�]8i�m���.(}�V�Ͷʥ6��I�l�'R.�J��d~��NS�'.�/}��c
h{���1}�I�g̜/���b��0Q�>Mkwf�s���4��4�X�uc)a@��p�ѷ
v�8��	 �|
�^v� �Qi����x����� >U�KL���h# US)Bye�<�0hV7&ic��aו�L-���)�%�;ޔ�J<����S[�ɤ8�Q	�u�fB�A�in	�`�@� F�٧�yni��l�Y�JW:W����T墍6E�Zv�t���
�j9h}�2�¥�.���z��#�j���1���a@�5�ک��Pa��Rq+m
�1Ϭ�"j@�i���̮�(�PQr誹�3��+��k��S�?J�����f�+a(`�	>R鲼ޘ�����l��bx(k�j��2G,��cR�'�i:��w,1.�b��xlr�4$r���R��0�<��+'��&�|�4׼�ͨ@���75,��+��Zu��ϟ�73W���Uw��`�-��~�j��{P��-�
l�6-Ԫm����{ലw��H���nO�Dڂ߽��G���:,۸�'ax��{���G��.$
��.x�� y�+�b��^Gn���n��ȑ{�-��ݙ?���|�����v["�xO�ޕB�4�i���@��\���&o@��N������z�W������:�_����/r�j����)K��#���t�����!��8������U�y��_����a���	������P�T�І��!�V�������"P��/f+
����ΉO�K�� �/�C퐣�,6�DɓH�Ԏ#e4�sИF�|Qu<����'.��tD��M�n
�#��Fb�_��T@�HE2�bt��	 �D�`�j��,	�L�Q��!����uɒ2bd _����B��U��L�|-,��&X^���Njx�!a.]�Ԣ/k��[��n��"�bJMrc����eD��R�ɜ
���8�f�,�º�LyШ�ӂ%7�I6D���'	��ѳ�`#h,3�M��@�O�?:�s�$H���"��Ќ�Џ��G���;at��,"�D��:,m�I��L:����L��ӝV�>������H-A!�
�,����I��8�ͻ�`(�di��h���pG}r��} ���D�݆H���
���ʕ�N�B��3@�C"�&Y�#���xn>��������c}u:w,[OnR���B��e�P����;h�-]P_~���9����F�4�	��0��{���<�Z{5�	��1X���Ķ��)����Ђ�(����з�K��ɳ����lp`%܀{V$C�_�?�<`IРA�I�9�!Y}���2B
4*�l�mG�4+T�+���l��o�ʖ�D
԰N(�`<�a,W��ʓ9fV���HLF�q���S�$���Fq����lϯ��*�lպ����wpU�5���+�q'-4��\j�,��wy��V��$W�Y�!�c���dAL*�D7k%@fv<yY(���ò�����n�Gm�L�Wl�	�V.������*�>���n����,�{
cvjy@�xI��NC���1;#���+~�YHw�0�x��wyw�e�u!���I��4�7�s�]C �8�m���\�Ͱ��P=���0
�Dc��ע����W)d4��HŁ$fW�p!P$-X4 �W^h�\��D��@(�>��Vb�f�J�c�p*��L
� �WE����'	LY��" ' &سg���u�:�<���3�Y)������
�yA��vy�hz��͙��z	+Oi�*$K���+������X:�BL�����О�(���p��:ۍ�`Kh��H;��&qm���a�d�;����)<W&�@/��讴��l�'|�����?(�«JX�#�iQ4|Ɂ��,��+l���,J���%LC�>`]/����|�/:-��>Ϛ��HDtћ����<��4�,?�r��:2���s��G=��E��-�,�أ^�U�A��Q��m��x筷�`=�Ļ�2��6���
���c�-2�B����;�P�*9���@�:���t��N��~�4�Cl�z�]ǀ�հ#Q��@x��n��sN@�D�.����z�_4B�V;�{wB�9�N�ӿ����w�����|����O���-���/���ŸxH�^#걢%��П@��y�ӒΘp#fpELA����� �X$/^p	u؀߱
R�3��0�)�+
_�B*�{�i�Ά�1����Fq	:���%*�6�{��� �X@K`��ʂZ�G�B�6���@ʨ�8NÉi\�7�1,U�#�G-�c�b���(��`�ШEQY�#P�"��@R��0�ՈH>�`�`L�ID�}Z��bJi�(�h���OP���$"3H��R�e�B�d�p��(ӊŊ�(qxa��&2�I��0���&�@�\n��@T��h�n�%.�H%��I�Ě:aW�vJ�V<"��#u�%�g��@I�૗�^4_y�|��FdE�`Dy9�&���l��}�-qi��ȥ�T��IM�f͞/p@;�y�5�r�Դ��tPs�{�-��nrQ�j)C7�M�tlG�AJ7IT���T��1ɚU	����X[�
���n�mݣ�
ƴl�~��RIW�����M�b���:���5X!�
�,���0�I��8�ͻ�`(�di������p,�� �x>�����,���aX�����%=��:�S���a=���xr�͔c�jo�
���Kf{]y�|8~4`UL��z�?�4�Yf[x�v�0f=�Z�^�?�C��g���8�Ll�s�üG�������(���ň�7�C��Ϻ���C������9�����]�u!�+�$X����E�,�Z�:�`�p�
���!�"�η?�y�0�#Ǒ�BJ,c+�I��s��K�aȔ�B;8�L-k��؝?:5"`hD|�hX���m#[Fe��U��jV�*�ࡩF�JUtm€�̐+�P�܆��Շ�f'sRr��߅+�,0kN�,���Wn�0&��l�"���r�|�����
p�/Ռ�NPV
ȺO��1����#�<8���X�Ma�s�����S/�:�U�L�YY�2k���������*���� \7E�:#�v�~2���U�4���:�_��$��|8P��ȆS�r�)8�~(�8�����a.rT@Y��z6�#�Ç���A.B2䁉Eٓ��O"%o TY%v!8��N@��5!�"��K$��f�Z"c��&k�Ya���e��)h�pR '�$ֹ(��i� (*蟊0�lF*&�E:������5r�G�������ӨNLJŏ���z��+��k챍b�(>H �����V��MYH��"�9AV+��R� �r;)��jS��R{���k#�m��&���6K�<n���l����p��.��Û�8������28��Uzm� ��.�2���iO��Z�1C���<���ϳ����:��-����z���\��o��-ªPg5v���E8�5�V� �+4��w�5�-����"�2qO#��O�vʈf÷�e����nB[��N+���|8�Rs���L�g� 7�8��f���|4���_?��R�귽�n�`��0�a	��0��CGAh���F|;`�(T��2���	Ho{�e>���|��]�P$p>����,��j�o;��ȏ��������O}TX�D@ո�����J`X��p��P����pA4��l�A��
%�`8RX��U$@�F�C �`@�D��!+@ *�	(�
9��L@�`-��� Q���<0�,2�����?%Rec����.v���(��эh��A����1hb�8�q&�z�wE����!5�E������hArQ#��Q����Z$��8���.�'�A(1K`��E�*���b�҇v�%ώ�
`��K�3��E!Fs��� �9�R(")�K��kq�{�3s��7,"4���,
�QL�<8G 0z�$gʘET��b?0<"��N��ɇv�'��&C�M��	/x���IE`>���0�A!�
�,����I��8�ͻ�`(�di��� ���p�E�r��C]�����\�d́�5�ʀSZ%�����A����Z���&�}��C���ӝb����}t9vw[O{R���1��e^m��q��/����P����;�h�F�l�c\�2�Z�{6��r��0����s��`�9Y�����ó�(��������%�������L ����8'�@�=����2@��JBCT:��
�
��g!@H@w|óaڮp�|�rf�ߨa)u�D�q���1X@�Ix$w�t�T��
A�:���r��&��LWWC�E�S�C�t������6}�>K�
��:�֑CƎ�uS�<�����0�������v텝Z�B;��g�Z�}T9�[��9<{�0޼$wك*����CY����eI�h� ۬sB�
6�$r,:�����jyJc<e�Un�SM����#���I��U��(w�QOk��_ŗ^Z~�L�7�O�X��r�$P��D}�&�ʼnaY�@vx�eyݧA|� �&̦�v�b�J�Z�IxG�/�8�q#"��@&#y��Kᘂ�!#*AF���X�:	@��/t�0RJ9�3�ԟ~2��3���Ƙ�f��Y��ꨈ�[?��"�$`x�!p2��@>�^����(���4��D��"Ѓ��{�����v���d�'��Y��JIƫ00!�|�ҡ��H%"v��:��&���6�K���٪��
 ����6୷Sʱε� 9��NK��ڱ���+o��a���������R����.��e
���
I��G�`��$����&���;����q�K�p� ����hYr��.ۯ�
\�����m�@ �{2�ڒ���z4�PG-��TWmu41?j-=�v=��M��R=��]������ۊR���twm��o�-6�C�]��ƪԀބ7h~^�݆�8������"�㓞����u+;����@�&$�y�*�i�z? w��/�,���ng���-�굻�(��~l+��@�b۹e�0�LJ]', ��Ӧs�'�ͲD����o�K�z����^��fݬ�'�_@>�v�[!��s��5����rl�hL��NDsW���`#P��
�=�CR;@+�4@���,w9b#�b4���.��f��0"X�D�0"`]�����H�0��Q��w;4�%���(�+�0�{]4z�V�c\�
)@3*�:�{��@02� @	`���(@�.�,����#AbG�P��S�'��GS@�0E�:����P2����G����>���x(QI�T���П��x,6���h(IT���a�(�����$qIXڑ��t�@�[^@�tc|Y��8@�a[����!P
1�\*ܦI+4`� �=��:~��"$PN0����3�)U����J>#8����iGFZ͖`T�H��K�J��>|h�)Iu^�v�����F��Ԁz�~�ɢO4i�)If�Ќ
ERc�S�R�2-��'�p%�wE�>j�|�'%��Q����*�3�U��5��u�Um�A�Z5-l�cD�F��Rq�Fm,	�8D�J�"S��eS0J�n����F!�
�,����I��8�ͻ�`(�di��(���p
H��r�냍���D�݆H�2�#��N��g~�B�kMfYLγ�
���nu�r��8�;�CuhNkT4}~�B����O����;��\Od���<���]n���9�,��>����;��k6����/���l��b��(t�zϾǥ��/ש�ۣ�G�K!X����ɉ�sg��:
{v�T�r�ٗ#�}�=����=^�N���qg�����b�dҍ)$ͣ�`38��X2��DRX�N��x�4J�I�FL�&8P�t�P� �ęd��Eq���N	��1g�4nU�U��,��k4�>��
�f�[g�2=���[y�ְ�j�κe
F�pck�vr���&��V(#W0�����R��3V�>��d���:�(S�m�*2vzg��D�jW"O>9�5�By��2����S�Z��cߤ�e��S��W�QX3��/ �K�g�ee�th��p������'�~�������D�2�^���}�Yq��'H�,.����*�����]-�X� �8�z�\��;���)��L�J.�ߓB��
UZ�B�XJ��	��e��@c�"��ؙ,2���l�G�prh�2u��% ���hs���
�|D��$�UzfvV��RJ�����4��a�?T����u�ꪬ��꫰����|�'�X��`���:!h��&����p��F���)k�º���vlba+.�����F2�ʶ���B��N�֫+��ƫ��[o���kK��&��/��-��|똱:�0�������$=��k��$�l��(���)��,�	4 s�2�2	Ȭ��2Wl�����:/
�1Mti
��J+��N���MWm�I_=tj݁x�4b�@��K˙�[e��3ؿ��3	�4@�r���
0 �wϐ�?��}7�o ���
C�g���`t��&@9喿�y�g��%�]�ڒ�>y� ����0��( ��r��7�v��w������7":��
&`��ӣ��t`?�E
,���Ag�Y��Y��pAꫯ��g��\�K�t�g>��˟%��|$�N�<�-@$H_/�xP�^qAT�\2@�
�O�����5�%$��#<���p��:(C�$|��E	@�·� �"*�}$!EJ�����أ!Z(�X�Vl��7=3��D�R(�	 P�I܈=��/)(aO;��d�2�G]~
��#XG��/�������W����S�w��M �{�c��ȫY"/�H��ǫM��	���@�����=\b��	���PЙo��	�#;�A�Bt��IqJ�ӻ�h)�5�r���?�-�����
M�$`���=��J���48]�M	~��2�O!�}K��*�I���g":�C���RDHF5�a�l�	l�8˩�"o��b@30�4&~	%���I	s�.�'�Ly'!VS��"H)���1UJ���ɢ&G�+����H+�u�7۠����L2s8�4�
��~�̢LO&�ѫ���bŠ�Q��a!ë.����c'K�D!�
�,����I��8�ͻ�`(�di��C��p�l+�xnԃ��@��
c��c�fʣt��E=�h�@<��f��e�7��|�����Vw�l�܉��kpvwy@=;e_��}�0�e��e���8CYeZ����)�M��,��:����u���2�,������/�Y�����1��ә��I!�<������8���s�T��� (P@�����`�:^�.�����<ԓ0!>���X����heĈ�FDŽA���P�o�V��—�T�PS�R�&�qp�N�L��Jo�}<���O�ӧbހG�ޮ�x���u���P�����J�Y���[�{ޘZVUͤ��Ւ�p� d�N�j�Ÿ��&5�+wJ��~J]�fa��`��Z��U���:�`�b@�U;��a��D�fg�W����J�/�"=��;9�T'ɱ.��C�O�_��j?]4?^���%�[u�~Zχ�����g�uO鶅��E!��p�Z�ࡇ���$J(�UT��C�}�C�cr�h�|*J��K��bF�Y��Dzh�=7�X�8����NPŤR�T�S�Xn��O�C�`��A�Xވ���x�Yf�N⢓�U�iٛJn	J�tiP	n�ᙧ
�g��y��6�������g���)�"�`i��BJ�-�� (�����d��:�fA������(S�hK<�[���k��&���6KM�Ub�:��E��8���!���
r����i���)�'�{(�&��.��›������%��n����*I�D�'���7L(B�{� 4�3��p@ ' i�>S��rg���/p(�l3���2�<�,s\|����C�H�<�.�4,g�t�>y��N�SSm42Bcms�r�5�QsҀ�7+�66��ݳ�"��6'�5i�ݳ�୲������.8��HC�'�LJ��]�l5��tN�$Pq
𘪕ḱ�l'pz�Ǿ��0@������ɱ�tjP����4��[g[w�� ����<�\���<+O !����7����7�J����a{��O���{����X؇?����][@l�$@���%�PL�TW�8Ё�A@B�o���N8�%�}0��
�ɥ%$a[X@q�O�
��?�	�F̡���Іΰ�gG�
Q}8@p%��Po�x���L���"
+��b‹$� ,�FP$�Q�P/��#��t�(G6����@��E@z1��"Y1���b"%�=*���#�Qj)|"�JP��]VT�	
 �f�R�	8���I Hѕ��^A/�P{���THFܑ~��"��	Hҋ��&6g�D���
�K�B Ljs��0%Z�{��_/#)LLҋ��2E��Gty$�e׀������XMk��#rg@G��u.����ۢN���v�#�8=s�M���@Gis�m���
�'{��>���Ҩ�Q�a-T�������Κ�QRT�T��tB�է氡(%Cv����sh):3���p�g"�,7p��ӣ@��N?��t�2�h�:�5�=�N�HՑU�
/���m��ul��f:j��%�X�^'� ̊Un���r`��C�v`\uX��#h�����c(����O!�
�,����I��8�ͻ�`(�di������p
C=r��=�����p�dLP�P ��J,G��3?�תd���g�S��y���隰���-vOhj�}2��z�]F��/���^�Fx�1���j?mw�;+�,|�>c�����f���O��0X������9�ņ�ѥ��)���ɴ���L�yŁ���ZVL�����Ҏ������G0�
�Z5ZVc^78�_��^)琡�
���8�`�"E��0�w�c5��:A�@�$E��T�T�L�<~� �&�^U��4�!a�~�������7J�
��TN��>>�5��*@�d�� J��R�R*i���!j�:*�m�:����DKޭ�|Τ�
V�hV��+��Hv���w���r��P�h+�N%Y�jkk,u�
�kT��e���]��bƭ	W��4�W��&G���Ҭ|W�v:u
�������c���_r�;Q��a��z�M�v�uP&��(h+�S���F��u��gz�! ���E*aeS}�<�h��d�0v6�(��-LT2�F%��b��%Q��("@c�Bh�#�:�(L��!B�b��"0a�B,�$�%B��SHb|V^T$�$��eR��C~c���b�]�8���C�x��|�yʼn4@�j��@���?9���`I���f�i�
�$ue	d�q5�驨���!j��J0@���j`���������V�j$���+�P
�#c�{�wX*�b!��,���骴qRb鵇zzg���J��{h�����_6)��~�k�櫯mJFi"�&@�/@��5�t������0p���*0��ƌ�+b�\0��e���P�X* ��
x��47��<���/����5��$<���$9@�5�,;-��<��ɬ:���/�5(X^��k#5�' �04��r��2CY��j��h���B~K����}�謀
n�	T�r&^@�q�z$��
�Mf�'�!'K��`�G'P�>��2��:�c���2�T�趏.9	�z�bq�� ����&�x}�<ꟇЎˇP����~���Cy>��7�=l�=���_��;�}��KG��[9���5����Y�JT�Dp�P�A`�0�
&Om�`���$�����$�
}�#@PDA��
@�Ph�u�,`3���a�4��D�4��p�xI�5 {EĠ�h�(G� 1Q�x��� FQ��",���<��
<��D2�����#��&R�\��
 ����l!ъ�8=n����Z�X�
 ��
x���/ �%E@2�*�!�?G�0�� ��Y�02��e��*� �ɣ�	IAJ`�\tdU�����0|�EL	��U��\\�C0��S��yk+,m�AVS��&
�9IL�������>Ƞ+VӘ�c /�L1����_@��ϖ\��(�xn�oI��
��%B2�r8't��w����99��\����5!I��փ�<��� I����,d9�N�c�8l
L-��>գ�'
�I��>��{r@5-��5C`�ܳ�[n���b\!e��>��4D�1�R6����P���v��"�P�bz�x��t��j���g��@U��@5@�y�h*�b_$p%C��X4����f���Ђ���M�j�!�
�,����I��8�ͻ�`(�di��(8���p
Fm�r��m8������X@�+.C�gr*@�����,5y-�����O��N�{Ԭ�`�{g�_�sE�=x`b{:}~�[hz���A~q�\�����;�fvh]����0��h�w������i��`��9��������)��ȿ�a�9лӽ˕��Г����rX��Ў����큺͜E�*�s�>�2���f��Aԧ�ѩY��LE~�#Y(�&�<z&RWA�B��e<4�`�W�\�43X��%Uf�X��#kIj���N#�����T�Ut���J�.�A�fHX�� ��c3�M?��\utm>��!|9�&B��j �aE�٭)xBB��ٽڸЕw|�\yL�
�;c	�x��P��c/ p`uc1=���o��>|Am��C�����Q'N�����bl�wߨ(�N��b�2^�=�������˛x�o�\€��|�0�~��xV�@��`{���@��(VR�0��p���@��UHB�H�XI��s7�`@.Ʀa;'�؛f;8p��
.�!�u8��0"6��"��|;:��~KI�4@d}B��[0
*�Cc���p�)�o���	���٧4�@S���9������V��礔VJ@i��o�v�� ��#	Tj꩔b����ꪢ�"���: ^'��+�$"i��R�^�j��PN�k��+V���F���2K�&B����R����*�ۺ��e:%�.*jxv>Ѐ��*(��t(��[R�tl�'��,����{*p�Pz��J �@� ���0��**�&�q�,�92.+j'R�2��Ķ��,���s�� @C]�PǛ���t�Ec��L��@�W㜝�[���V���:_2O�c��v�
ĭR���=��gϦ>�@Cד|��bΝ@�#ML@���P��Ϝ�Ỷ���d�㠟7���~��E;��C?P����;�nz����q2	�\��x� �x{���S+����{ ���z3�B�S�m=�ݿ`��������'�o39��王��?>���>��	�2�;��/O�@��G�$�맏�/01<xBpdڛ��� ���l$��,��4 +� SR�	~9��	�G��x�(�]�@w���
o����}#;���1�!��d�4lؼV��}Zԡ���*��q��l��)X���,&3b��b`$A*�;lc	�WD�q�� _�	��r4^�C����t�In�G>��~���	i7H�y��̒9x�	Ⰱ�N$��L6��ȣq��m/�2�P1Z�����Śp�~ȋ���)���ɔ�*#��F.�!(%��'�-�$�Ͷ<�v����&�١Ӗ
0�6GH�R�P��������v�D3x��x	�"���	3�5/`�Bl3�*y�D3��xL���,7�tf�'��h�$
:�RҖ�4��h0aZϠ��!�)�����(��'T3u$zi;�:N�H@����U�x0�6@:�!�(�/n��$Z�z0�.��̤Uy!Ä�O\h�y��eQa]
�!�i��̉fD��:�U".�
,t!�N����,"!�
�,����I��8�ͻ�`(�di��(���p,��l�8@�n�]
H,f�<U����P�a0�X)��T���f;��ߥxM!s5St��f?�f��ο#7TzV|u~;j�z��np�Q�knt������z��L�g���F�����2��r�S�8�
9�^�T˲E��7�;���^�̹?��6�I��������
�(�e�r��L
�{Q�/�^�㖭8����D[�	r��D`�RPĈ�#�u�54b�#�"�T`��#ʔN)����̔�2�@��ib˩�:o�\�%������v�,��y�s 	!:]�ѝ�g= 5C��Y���e³'�]̝C��耹X`׋pQ���(�Iub���G9�7%g1�!�5–�iCX�K酯��`/��W@�@33!��8ut�8+_�-�z�O��HF��A�@ݺ���WL����뾭�����a�R
,C�iDa?�@~��7�2ƀ�[�&`y�G�{��r�B0����@�l��!?(��@��)�^(���P� @"�����I6Ɔ��h�O�ThT|1�<���w6�e�@�a��i��E����J�1�a����\	@� *�E��S�؆|z��矀*蠢��4@��6J@	<�~���f���!�@���**�
d7�����ꪘ�:O�*�
��gF��k���H믲�9I��+��,���9���Ъ�Z��.���F��j�V�����m���-��V��g���:Z@n|��n���b�	(*꣑NJ��.�����7���|`v�>h����qற�Ku���(���b`��0g&=���(w��1������&�D@�w ��33Àe�E���J/�HCC��V��\u�9���DK͆�_/�2D��sk��t�=6�n�|��cѽtn�rq'9��1����(�\)��`��"3g�ͱ�;�r��0���cyRfx�����f�@�ˤ��,∭�vk D��W��݅g�r���D-E�,���?�Fo ���HqxչM����<��,����1�����;�k-��	:w��%�n�{�R'O5���
x��k	B��
�<�vA�z(HA�������a�~�I������5̟���7�UF�z�A�rM6��
`��m"'��
 D�d�3L��@��
}$�ֺ�*>0 9f�lqo]�[���?�qA����0�T�%pA�e�d���@�Q��z��C70~zE��X������H/~M�9�a�T��"B�}�$9�8~�##�B��12�%��R��F@���2��=E��@K��Pi��� 2||�1BK��-f�;���
V1�g�I�7��0K�	ʈ�Zn����(e�Z
�t/˦P!*2t(/@KT/�a��;��I�b���Th��P^x4�X�ZYʓNG��/�h��B���F?hQy���U���j��X�fiO������s:��2O}�R/�GZ��[ԧ��z�܁Rg�S��Kʁ�pU-�X�$�؁r9q
ݟ�� Տ �Rc�'W�UD�Ɉڔ>^��$�jN!�,>��w!f7�نE!�
�,����I��8�ͻ�`(�di�h��l�p,�tm��0��C����M�,�Ȥ26`6�Q��U�2�Y��ۺ�^�lL6����v�p�"��v+y.lH�-�-�a�+��+~u�*hy�)���'���(�c�|
��%���5
�	N�p����Ϗ6��
��yj����о2��rA��"�����0��	���$XeaF��<q8�FD#B�H��'��g�,���1/��-� ࢸ�5l�Ђ�F�@L$ir܏{+����R�H��|FpF��:1<��@"�B��L�tAK~���d��Pi P�c�up��y��sUc���l�EZ�4�
�����~���(�S{zQ���W�[��i��#XAm�ٌ故'�r�Cf{M�vsza�
t�(���l;W��5,:܂lcS�/2���o
h�N ����x��I�+*�|����0`zmj�cx=x]h��:���|j�@j0^5��q�u���q�@�*�1
	C@x,�a<�Q8!��a�
�Ռ B��hby�"�׸�<6����1*�@�*�Y (�X�'��EJ)��>΅�I�T����ɒc�7�
D��v`R@���,]J���x���	$�e�[܉���������(�w"�۵f��a�(��h����ꪬ��꫼ W�	4@���6�� �(���L��^K�&�첷6P���vH�'���r��f{��*�M�D���b;i ��+����n�ϥ�.�����:/��{���F��@�������t�>���V���ڛ뮽ZlA��X��$�l��(�̪$�
��� P�����Ē\�,ܹ��U��h�D�<��5�s�CW��F�,��B(�X=��1��b-��[������ɉc�m��
qM�K�PW(ѵ't)C��[+1��ۂ����7ə6Nt���KL�iB��h��-iy���.}}0s
<�) ���<z�[�߉���t�*���n���/�
@8��;�{O<���>vx^+�w��.�f=��7S���K�XpP�s�C��ˎ@���=��k_��w=U
���_�����C����)6��d��@pxu�Y��Ba0
��@h��va�& E��P�@2p1�`�%b�8�0��+��a ������h�,�ur���^I-��p ��b�J�
�����4V�ڸ+�γ�QG��AD��0�6���lM���Bp����"=��N@�T".&Y���|$t�N���<@j,II���z�D����u�����\���}�!�'��F�1�9f!�H	�7�&��8
챓r�b([s��e�ND�	�jN��|�c,[#��˘;�;�-:�������,)�5�&#��_'�J4�%������5�3���
@�s��!
r�5�s����G>Xҵ�1*}�1U֯NV3� %i*���"8=5y*���Н�d���S����I*�4�zZ����_'%N�j���t���P�K�a��Vm�-�I�F�]Z��b�����j��2�Z��
6�R�^��N�����|VO�D8N���*1�/^����!hGKړE!�
�,����I��8�ͻ�`(�di��8(ʐ�pL�r���4������p�dl�
���r�:,-��zI�p�#��ߴgwf�XM���XG�wx@q��xa~[f���W
z�P���
�R
q]�
�Hq5�����u�����t������( 	�
h�q�D,,s����;��T��	��f�9���S+���V�|M�d$|�)�/����'���) ���ACl��UX%
#Cfl�и��!�>�9��|�P,q�%9�T��ib8fh��(�aCY����1	e�L3ѓ)tQL�@@T��ɴ��/�� ��Z	O�\Ѷ�K/�U0`#E����7��4g��l��=l"�ի��C	���h���!;�6j����O���>e�:�V�0p��[&j+��}��Z�g/`��5��"�����M���^X�|�-���'�����d/��8�x��w�|�w��Q%�v:x�A�h�֔��p��2t��c^xa�4�!�	0�M\
4�a�n�(��<�ׁ/�؀�8�č;�vb�=^���A��u0٤��e`��Qnx@��Xy�x��]n��� ��=��\�9����`~v"�%z�I`�"8_���ƛW�i&u����Ʃ�th��(`{: �A$%�t�c��0Tc2n
�°J宼���+l�
P�$Pi	<�@��8����ĵц' �,�@��ևk*�bk��jz��2�◽���2a@�[�嚻Y��
d��Q�g�'�.���� �����밚�*���	C����1�s<���!�-��[����A�8��|�:-��V޹d�:��Dm��H;j���@�
D݀6a=�^Lw��Rw��_�Z��i���hG��S
�,N�i�Z0&߻�2\ǝ�ڀ�lwpp�����Ҵ�-8�|?j��^ @��ؕ<����W.5X�Z��K��ח�1��~z��d���������Tk`@�	$p@�;��37��񏧷����G�`�W���;t
���#'�� ��֏����R�u���@�/����_=�K��m�*]����x�x�C^������K�X�ȩ�, 
Eц��+�0���E�(�~w��	�-�[	�G����q�P�0��zx�v�x���qvHA O�`�����ЯX|�2�W�����Q39*��E��bv2A�=��0l`0��Ќ(���XQ�&[�!��<;��8��(�Ň lH�A��
�;y�"w��a�M|��bD.��T#�@�!P&1��!1p,D.FQ�,��`��/J�b���Ly�� ���Cy�8z���K].��@ S$��d��G* ��|1�̝��z`�f�(�`��D6D�˩GAr�����	s.�L�\�Y=$M��ߩ�}<PJS�X��o�CX�`�:�ۃ)�������$�q�����E{�Py��Xf���x��6�+�&j�1K9�`$y
�Z�T�$7@��)�xI�#�CA�ZéTDUT�8U|Z5b��@S	ϙ&��ED�1s�1�V0iXMap��K�I���������6L��:Ք�T
O�Ț('U{T�c�&�ɦ!��l	��U�z����!�
�,����I��8�ͻ�`(�di��8(ʐ�p:K�r�$���D�-äl�
������J��C�@+�a����MZCv⸠�4��o�"����|t9+w
nz
��B��@zd
���;v�,�z
~���/���s]l_����2�
R
z
��<�
[z5���2͚����1��������&�����ձ��L ��g��\�N�[G�!��P5k�MυT�H-�0����.���R�al�Y �n��	=:D@0�f!gy� ���F��B�_)40e�@��@�u�EC�f
)`b�SKdעN00��;�D���
#
=��}����
���go5�b+8�{��f��as._��	7LZ!﫮t�+�S.��+ԕL�/��I!��b4�L`U�W����dhdi`��Z=l�����a�>�\nP�S=��ӂ�@�]���3�����3YC|�:}S����+���=�u���d�ń	 ]�I��#`�������Y���zR�ԤA�Mebw��.�!Y`aPN�F0�c���@���C;�#��L��A�}4���b+���7V�a�%0�0@���[��%�
%P$d��f�"�	'�ؒw�)����h�T��
$�����
!���B�V�b�"8P@��I*��?� �N�%P�~��<@jY��Q���@���+�k�*D p@�
�U��=����f����!a�,�@䒛@�`����ȫeR8!��z���[��;"�i�+�S(�������%�,���/�+,ghS�q�.]�������</"�L�ɉ�,s�c��2��9��k%|3�GW��/������I�r��{�鮻���L��w+��d�m6�jF�'<f�op��L�
56����|#zj݀�� ���p�Z��7΄ֳ֊��p?�6/�g���:8��۔O�'�j�9�/�j�o�ݦ�~�����0��o @�SQt���8�!X��4�W��v����0:�fB��F�N��'Nv
u6Z��us�q#�l�ᎏ �#�~����Þ����;��g����v8�?��|���b׫���5*QT�@���s��=���BK��:!�P�!��R��­��x� ���=^�^ʇ��	Q=�aЀS�p=��KWQt�'V!�>\���.�$`���,ް�1��(Z�p$�E��*�O�Y#����yP]�x�j�Bp��hv0K[�cy2H0�I0Ɠ��j�y��CRIK�cw4�Ք�
Q��U���JBg��c�W��U6�?�%0K�.�0��[�;v	?>pR�~1�gLT
—��6(h�R0�<.G;ްH�l`VLYfg���8��Hl����!0�9�
Բ�s)��@�*�L��-��dM�r��&���*����4���z� �X�^B�)�sS��%J�*���)>+`R~��B�a*M�,
~��]�?�y�p�@�;�'�����R%�D�vѦ�h�*P�
>�^՘F�=�Nm~U$a�X�RSh��J��d��˵S��I)�*�vQw�$l���n�����,XJ�.�l\ ?�F��r��뀨�)�U
ұiZ#�<�Lh~��p$[����'_��o&�'h�^g�fE��ܖ��r�-	��G�
W�`��q��\:D!�
�,����I��8�ͻ�`(�di��8Đ�pJ�r�<������p�dl0�FB�RZ'V�iD��b�*�t�����b<v�����Cs�5rtcw:yz,PnSE���B��e=n�	���;���	n
	���9�zv^n`��\�2�i���
�<�,��54���9������2��������'h؎��
��L������c�>���
�p�a�v�*�@ކ
�0`����z��  `�
��P��>yF�d�QJDfȂ��Z_,�	���:�逵��倖:�r�*p+hu�?!�%�*���mO5@��r��e%�?c�c�gp=)����ۀ�'D\F�OB�e@�X�]+T!W�W������@�ƅ�$�:AUHm�Љ��	�_37)�h~YX l#�AO�8�](�������!��_+�:)9"�c}��Tc�RO�N�������w��ȱ����6	~�< �`x� �scDF}���l�U�!p}Ps�F_��l�E(٧�WR�%�k$��`J0@X0t��V��͆�I���L��L�K�A���*€@Xf��4�A��gF�0� e�������ƙ0̧�oR��Z6��a�q��;�P�|&�*`\�	!�#Z^�&��`@�C�8�W�i�|�����,�*(�j�t�jE���Y��W���F{�����Z@���& k��,�@.�h��bk� P���zKmӚ�������;��p@��ko]*)�X�����.ݛ��G���*�g��+�� '���jl����� w��(�l2j�l3�P�#��SP��@�<�DL��@���$0-��&rK�r��&�ڰ�2J��
7����[��?p�7.��a_�q��m��x�w	�z��fۻo�g8����Y�g��Kz��s\C�g����R�����ଟ����#�^:鑋���{`��3K�촿`@�g��+��y� ��T�m�����g���<=��S_��ͻ������=�(>A�����O���[��~2�x�bI����?�|�b@�>�����ȷ��!��;,�,�gW?
X�q�۞�A��o |`9u��M�p�W�W,C��dX�JH�r�}?b�~gDb�SA|���kM,@�…�����L��x�Ya����b�gB^`�U���D�t��bH$���`b��<�q?Ϻ�Y>�-��K٣#�(bHEZ�!w$��b�'8V�0��$QT�.Ґ�!E<�JP��Fl�J�5��!�|�#�XA��"�$&�(�*��Q��(�([�!�DNA����:�%h��f$���`�q�G^N��+q�!�XJ\NS�L&
`�@/⅛�Pg7�iLr��
�l!!%�M{J`���'���q�%��Bh%�#�LZ`ؓ��@5!�zT�,e;*�F����k���2򡠔�.���=� `_�Hj���ԤIt�PZ"n���P)'�6KZ�
��%��Y�m�+��O?��h>��y�' ���$�-��,!O�#N��BM}�GȚ�$�Uq��h9$���ny��¨z�ʳY�=Z{�k�M���@��a&����9��B6��ݛ{W�Ɓ��K���r����-�";images/icons/email_go.png000064400000001362150755146460011425 0ustar00�PNG


IHDR�agAMA��7��tEXtSoftwareAdobe ImageReadyq�e<�IDAT8˥��ka������nݐ�F؀(FP�F�FT��ll�	�6*�Z�NP5�">Q]и1����d�1���H��.�Q.�p�������;}����ܖjw4B��6c-�Z�Y�W�"t���w����Y<yx]>��H����ş�X��H��H;����JRq�����Y�k�J�0��0�h�K�i�5��$nαЌ�\Oq�iFZ���y��ֈ��.$]A�$=��jK��t�γ�+ �V�(�e��s��BS�:$=H�Й���OaM��`�b�����.���t��d�z �LriA-���}�w�(
d�x���l/ �X��Ã]�z�3S
����x�[�Pa'FIz?��Z��R*����9�����}�4
��#l��N69{c-WO��
�V��6V���bO�L:����xm
�h���
��vѐm^,��ܳ^���S$��C��8B8�D[�t��Q(똥(`sq7�����dc~z�;ݩ\G��r��8���zJ+z��(���0�����>^U�\�o�=��K%J�4�PIF
���������w_KŶ�1�M��9g~�����Ұsv�J�&(��ڸ���	̪��i�V�G5�IEND�B`�images/icons/working-indicator.gif000064400000010120150755146460013254 0ustar00GIF89a  ���RSU���ޡߡ�����̖%�z8kC�o@��1���֜!�o@SSSe^L����,��*���0b\NufF͘$����5yiDlaJnbI��)�~6ZWQh^KÒ)�r>���2f^LYWPĒ(c\Mם!_ZNWVQj`J��2Ӛ#ziD]YO�~7��/��/a[M��1˖&qdGϘ$��.}kC���*Қ#؝ ڞ �t=i`J��0��3�|6��4VURЙ#œ'��4��-�y:�z9ɖ&��v;Ȕ'ǔ'�5۟ ��3�s=reGԛ"�����mbI�v;�u<��|7!�NETSCAPE2.0!�Created with ajaxload.info!�	
,  ����������������)��)4)�3��*5
A�9@	��+�&<��	 ��	���)KFN�!Ƶ҇%
�"�!'���ш,�D����#6.�`xU�-T����A d ����1� ��_�r`��A����Q�'L�pH`A��Q0BKA��1���F`��c.pdld���(�`b��R�p"��a=xa!/{��6���B�?6�%b��Ru$`2$.�.6dC�Ec!F(C�AS%hE�����̴@� ��$'rbP�I	)DvԠ�nj���(���wFj�2�Ѓ3>X�p@�cF<:�IˈT����#�JD'7ݼ-�MK��%&�`���@!�	
,  ������TT)����I((K/���4FF��K��I��AFL��FA��
(XMDF�%��$�:(NIҠ.����<�<(0�6[C��I�B!�$EZ3�Q�8�$��8V+r`B�"�on)����O`0��Lދ'"(H��c#�	B��?��081��[0��
' �B��~`+A��FB(����M;z�"�D<��bC��t1J�'U�j�̉�!��$���u�	�8�{e��#Q����%UP�N�(N�ңD�&����$sĶ`G���eJ&8D0�� A��)ж��K�j�E��<H1�"
Bj�:��N�<z��c��! @�b�c�!sP��H���!�	
,  ����������E]A���K5F#��O+%@-��>@L�:D8'�N
[
<-\��Q'["&
/_��%%:	M�.O%�.
T�
:�&9A*G�,N&�J�.
T�`���.��s��ŰBNp�!�	'�(���{�X�q�PzD�1@Q6�}�A�&-�Th�#=Bl�A��!B�Y���
�@@��-=!���ɖ2�@�THU�A�Th �A�S�<@qb`P�J)�˖�]�X��m����*phJ�#F,��;�@
:qM�ZK:@��(� �%5�Q4��Ѓ5�P�a)Pb+J�F�"��l�Q����pE
ъ8��y3#�$!@�'IJ(�;��#9ޫ&T�A�#8跟 \�{�Av�%HZ !�	
,  �����������SM����[@K���D%b��`�-b�%QEA�-AN"��*Q-)�*=Ic0�/XG�%S��E�5	M
<5�I��/5���`EЁ
(<Т�>[UP`���(5YPʔ��x��Ȓ&�
��#�(8�[t�A���8�a��!AR�\�C�.Wp,�pe�'0�t��.LA�o�-FZ 
�	�6\ `
���2%�O�,��,��8@ń#
��
��>I�������hi
�!��0�zl�re,YF�8�B�kPJ+�P �nF�@uX�@�'KA�$�<�.�,�l�`�
װ}D���L)lFD��-H	)�E!��ƒOT����AXPF�UB/�W p�-X` !�	
,  ����������ADA���<Q
<��F00QE����>�@<EA��D�/%%]	
Q#�X=2Q�?@bC[:�V��C5�=�M�?2�+3ІD�N�t
��G�x2Q
("4�P�J0)BH.~��P�P6D�AQс��Txa��`n�`�z�s�(Lh����D,Xٷ��b�LdH`�1 .��ǽbF:t��@�\�wqu�D*�<$��`�Н��{%I.|�0P�V�*\B�HR��:0B(?Z�՘9��P`�A�҅�`�
�!q���Kf60�'�iC>,@B��-�r��-�=�bI�W5�T'T�L����#�=���PAA��QBCܥ=��PQ��	��$�}�R�P�Qi�ۆv!�	
,  �����������_���/BS��]F=@9��P&%[D�����2�F�/D��]WA�Ef J3A��	[ I�S�)H�B�
>ԅ
%+Zˇ-=
�UhP�e�X��@R6�B֡0XL������#!r���`�� %�p�&�
Bf4j��v�P@�`
@�$����'P��PA�Xe��]��L!�"�>t(���D�Q���A�ѢP�<$ n0|T�P
�I�d�@�S`׀/���,!�7�0�P����P��IU���f�d
�0k�`��aD!��@��8k���E�#:&D��"�5XK����
�L�
I@�LX�A�B�
��.h-�4a�	%��
�-�D��(VH !�	
,  �������������)���
��(����"%4��a��IFP��R
N)�WZ<��]0.FD͈FG
A�#!5<�*H��.&QE��A։N$OƋ�K��Z�*�6���� N� $J�V=pAצN������AvDi"1Q�.•�BeP�;�Dd�8	.�xdU��/�����1Cwz�GC	��c�'	� E���X�eC�+a��(��c�
Hz����|�*�0R�A��@�q���RF��`!X!Sj�h,A4T����t(�u�V,�b�D�\T���
yxb���2� ��#.J�2".!C�p�"�!$t�aa�)(�X����9������`@@D��P�<,�WnR0H@�`�Ԡ�h-$�}WpЁQ�!�	
,  �������������_��>���AO(P��D(!�����O<�-
-��>�)��C&	�[-ĈN\��M;D̉
$��ڊ����>V]Bz0K (vx��� e�	%D���ȝ�>@�����D"
�Eđ-����E.T:0d�E1?Th`¦M"6$`DG	B<���I
�J1"
��u@Rc�HkT�H���x�P�E�*(et�Ѓ
N|����T�7�Q����EK�iDv(��
Q
Gl���X$QP@e�':l��P!ETV	�����	U�P�"�
#�\���C�TŸ�G�A80�D��&#��`"ʋTl0�a��C��D`@��&�X0����%p�i�AئDl�� P�-"�����Cw%D�C<EX�@p���h/W\�N�;images/icons/tick128.png000064400000031664150755146460011046 0ustar00�PNG


IHDR���>a�sBIT|d�	pHYs�e�tEXtSoftwareAdobe Fireworks CS4�Ӡ IDATx��y�\�u�]{��zPϭn!��y$10d3c���n�r����~�\����8�?�~����ؘ��M0�1Ơ��B]�RRwW�U�����n�06b�z���s���:��Z���^�QU���5�v�9{{m�����0�9�6G����p��s�#�ans8�m�����0�9�6G���y���am�n<K����#"�:EE��#�D��O��)ܳ�>���z
(`��>[����E	�@
�8TDP(yk$R�8ds�sC��h��?۠@�h�I����!c�+A�%h4bkI���䁳YȞ#��d��?�G�P��U���ߘܣ�����	�hJ�ds�$k�Ikmp�}��sxl��i��-�i5bΑ@��#=��!�V���eR5���͙ Ӝ��:+6i�
.����`�o����Պm�b�R�+�G���`e�9�Ϝ�����&�2A�9a�u�ؤ5&���7F�9����"�J�i�b�
f��}N�v�R��)�@&�p.�?|�Go}᪺D��t�n$�5b�Ƙ���I0G������J���b�fe�[U��ACP�_]��|�#���;��M�~���\|s>��`mPۘ�́	ꌘ�1&�蛿	��X�q�i��V�Yit��v�!$H�S�����E|a�eq���~�s��3�t�v�T4uM&�4%l�و�7H�Z	.���N�9��v������nQ�aII�S������F��V�Dz�0�d���9��Pa���NI/nZzs>��:iR���M"�NT��Hp�W5���D�|���b�-Yit��
��;�,5G���9b�BT����#Z�u���
S,lX��L�p/�ߏĩ�t�᢯�=�'��Z8�$�U�m3Ȋ�E���9��{6���c��ol/���r����7����^r���K5d�A���E4�&�&�Sʔ1\���	��&XU�'�R�J�U�b�3#��Q	������(��ٌ���I<�XzG{ٻ��?��P�7����0�5]p�?s�]%HH#P��4F�����`��ئ�_	��1��x�-'}��r[�n����Q�x��;�zG��g��Uˮ$cj���ed"�s.��fU�F�F�&�:�$��o_�s8�6����|�.���n�=�f���j���c,{G��g��N��5m�OFO
e�����	h�"	D���I0G�Cd���2�cڌH����
7w�������S����8<*ţ�x-�����kYy�9��I!u��Q�Ϣ|P�&Q��J\��I0G�C`3�����b0+"W�|���co���
��mA%��`;��iP<��ǡ�#l�{��7=�;�=G_�¦
!�OZ�?�&��@-���o$�ޠ��<ş9z�
7{�e��B�JS��<����[Z|�p�1l޳��w=C2ݹ^�|�	�?�=,*���*iU�p�Qi$j)E���N�9�;|�f+�E��3���7rjfy����+/eP_�-{6�L�/c!���p/?�$���I�'S$A��Ⰶ8�ԕ�I0G�_�Vm:pJ׊m/�]|7;������t�a�M<��bb�x)��]?朓�eA�|
y����x���y(
(i !U���װUg���X����N;����Ǘ��8�ǡ^+�=�
JEc����/���7ӗTzF��ٞ�r��g�����DY����(W�R�R��@���2G�_���+�b��bŶ
�\�wQ��n�Ԛ3�ڿ%�r-�|���<���3���߻�_d������%I	Hf�g���<���_����O�q�d|A?��tUR�I��
���z��T�͊m3bV:W��y�)5g�|��/%�x�+���)(F����y��YL�tyI�DLIB��)?�IKO���8����#�Q��x	P�
�s�A����+)�Z*jy�Ϫ/�}�:�FN�9��
JL��u��*+<߿�_�=�I�^_�W��@Y qq�����`>�42/]y�L�IAv�jJA*`���V=W��-	�
�>��:�,���:�FN�;���[P�X�"O�Ց@�H,���o�پ�0	0%��^Sٯ
��G�m��6mۈ	�����K|G��t�E�Q�9�[�q�%�o1��|�:�ӜZwz����jP���i)�c���<��S���Py
 ��Y�G��
ϰwo/6iH�۰���~�{*_�O��ݗ~ߛJ�k_~�h�>jû�6��i�^�`V�R���'~�S���-e`�zԔ�~)�bd���Ğ?�����$�<�
��Ud�Z�8֟ȅ5�c�M+h�v־�p��|�!�rtbd?�~�1�L�<|�5A��TD���W/SD�y��_��w<��9F�V��7[�m��TލJ��I��3غoj4ɕ�>�Zą�[�����U���2c8�4����91:�#[c��L���Ϭy������{��	b���<�Y�կ\$��S4OR�M�F�^�������[ϩ�}��Ŋm���E�Wtҧ8��t���%�z���O���x���㍋C{ l��s�E�꾔�I��yQ���(���f��'�6���L+�q~�ѷ�|��+<���9׭�::���J8d@\��E�	��*uq3�f@��3O�b�
>���H\��J�H-�d�͂��|A!��:��Z[���o�A�g�5֣�}j<�:�*/oa���2�%�H�f<w�oj��8̎5���h�o�Q��&�N=9N�L�zBx�9E'��{uտ���p��2�,��"�I"�[���Ҍ����������b�b�$��:�VkL� +#�n�.?���\���sxadK��acu�L��k]xś"�E�7��Bn������Iċ	j��q>K'�e�g�PP��I6�|.|a�և�A��������h�da�7��!�݄������^�7����X��(u���^����/s=S�L �
�5k�,�(�ԕ;���y���y����Bb��`ZQYύE�vx-�����4�
��Y=*9��r�W�K[�^����M��]PD*�R>e�$�F,h�䈑��X���I3��������õ��'�{ƧƳ�����0?�hBUC���$@9\B�h1�Fc�L5���xtD8!"�Q���T&�Qg�8q��s��x�|}����қkW�|�Q�|B����p�[T�C
�n8�z�o���&��L�[�JZW��)�7�0�<�r��I0bʀ#���$@������<�M��46�g_w��pM2����Pw>��·��BX��h�yz�ݓ�}�.�_�x�\���:�V#�و,��?��w�dl�Ȅxu5�3�&i� �W�KO]��<��q?y�#���^l�s�N�ň�L�^ �E�o���m��q7�z��jqv�D�T�J�n~�-�	[{6O���4������}���8A
�LJšT�#�d��d.EQ6�Ѕ�ι	�>t���ïI�0u�4[l�`WD�n��:�;8��TR
����e�<~4m����}Ы/���?��\9��o	>���jϯ���mg�ޢR_���=�.�p޸r׮N{P)�i%�Y	؞{��s�H	����=m-��!��chO��2�"Zk��ǦƳλ���;���+a�o^���_���0K�	Bh1͂,�4��Ө�6��̦��2y�����c�[�"�S�F)/���
�^}��M�|�y��ຮ���O�H��6cZ�݂��a�#�\�u��o��=E�KU.��V�=7���l�m&�A����3{�w��t�򳻞��0�H��̇S{T�G�8|N�O����~�,�g��վ�����F�:uz�0*��<��,�h��MW�#��t�Û�҈iAh�i�^���75E�����m\�|���nA�P���G���]�K�
/L<�+tU�y)�0��;�^d��l`I	� ��1k-A`��S~n�EE�l�=��;���(��Ê>Q��l䢮�E��wC���}�ï@��~V_�|1-���s�E�=c���y'p��WpW-������{�}x�Uۂ�"H=1	�bvq��#=����/�Y�p�ҡ(�W>z�
\�����9�^;�"�X��k,;Ƕ����6 aep� (/��H�Q:�0�~�ݟ32<N���~`��O8�޻.�\��~X՗S���뿈��:ȗ���R~��N�~�r�S�NUe������w�yF���?壋?�X!*��it�UVl+�F%$�~��CJ�����˲�i1+��[�PQ"��p�
\���؂�WϠV�R��H b�9��F��$�
�%���@��F�h\@۾��;1���4���uy�]�ګ�K��2��:4�e?:��HJD�iĶ"�<�[<�CF"�9���
8r�' � )P�2΍���x�|�^j0"i��)�@�؇��c�q�+E,{�
k����TO�#�E���c���>�#�>�E���b��Q���ʴmA�vNlg���X�a���S��T�����<��b��E��0�'���^������_.{�~҈��6�L��J�«��;߁��������3�y�L0A�
�e/7�7,��pNQ���E7*zE1���&9e�^~@�1q���""��罉��"�����byyj��^ ��	�y}��狲�q��������� a���(}�00�^��n8�b��d A]�$��6�bM��.���1h�Hj��)��������'��0C��WiV�43�e|��O�aɵL��h:�э W��Q��8w�ݗ�Z$�x��_��[���%��x���9yU��4m_�z��=�����m%(
���=k�o褱��'����c$jA)�0�{�{��C�%���^��c0�� �0ɺ�M��um	�\��f���.�l���\��2����&d�QF*'9'C˧;)R`/{��y��������[EM W1�H�	D$
$>���W"�'�:�uۈi�JEo��"��"���C#3����/X,�D;�>�b���k�_=�c�κN�[x���I,��@ �Mۇ1<����](���1�p@/[{����L�d]&ȴ�K�kI��c���ĦS:�
X
�|��E���c��]�R:����@�=���n�#�>�dT>�i��M�\Q<ɢ�X���DQ�R�侫���8��\�(�ϩG\���\ �����y��_���b��_��I�

�Lѧ�t�,����~�'�N$@��A�>,�'�����8��_�i"��G�1�J���d]"+Nn?��㚏��d�0�_��u�e����2J��z"��5�H�n�S���ep߫�S�A����cR�DDF�a����9��o₩,�D�C��+V8��|AȻ)�ZtqI����n����W�-V�,�]�d�D�I�ת{�N���<�՟01>I�IH��G�<�#߭1��(�b��>r����M&Q�����D}��,?oх�.o\�1� �2�{�/�,.`�a�������^]"���V9۵4vBH���n�"Ka��I��=���1bT�j�����������7�ԃ�#-(˝w�|�K|����¬�W���&ë�̎��6Q��y-�+�{:l'�7Æ�1��S$j��H�h���	��]���M��K:K+HB��4�M�I0g^}�u�^���z�"ũ��s0� y��?�$�*}o���D�
1|Y(Z$A7���}�]r-�.*��S�i�+��f��8�'
�c|�~g��/*�"R|�Y�����W���qo�ʸ>}ܗ[�nv�sj{����꾺�SZc��v�հ៞drd�����kL�'��n��V�7��K#XT2FMC@��|t�'|��+2�(0A�'q
u42�~�bjW	��=�3W&Byz�{@��$����"���jj�T<xS�&TD-%���wuX�e1�H�i�E��N�ϊHg�.�X�*��]��#�=_�ꖜŤ���+�,l��+��g� ���p8:�D��X��Ǚ��ۄ&�G�pS���%�?ɛ~送b�3�1j��
|����sM�Cٸ�������4�r�lVJ���WfΚUf�J-ӂ��n>��m8�^MM�A���X���+*E�,����ĩ�A�D����W8ނ�1�Ͽ�˸�W��W�}�Q�)Y%�^e/G;�M�����G��P�5��8�cy�0-hj�� �:��݈�*�<��_<��C)P^(�|�=#�����R�b��[Y,���w��^,yت$ϗ� ܴ�O��|�)��=��衛R���E�2�J19����\mŶ"�i\6��K�&c��O�DkҦ��4ȭ��j���/cW��W����[u�7X�x�W����o��X).X�⑩<Jѥ�N�H�5��8��)l#�v4}�]')Y��R�n���L��ۛ>#�z�@�ׄS�$���ᒥ�H�bK�	�W���,��';~�fZ�d��̰?��Kd��T��~�c�\��8,����I9u7+��V��`
���$�&���-��l�Eю}�~r�0�m��˸�Wy�h����K�LQ��f�����A����g�/{�D����(��)�F��h�(�Έ�uSq�W�|�	-���o�P<(�*�1f_���
�n�s�;�|����3��$���{�剝����4��g����_ꌿT���D1W$�u��#�5{�_"AZ�O�)�Y��L%M2���:�3��?��&�;�'�+�彼��E�
��gT�+&�o����b;	�~i=��z:�0�������)�<0���1v��1�*>��P���G_xs��_�����Ǣ$S� S��$�T[��I���Z��P�X���H%`8��C?!�
YM��,Ж�"3^����A��3�Js6Q���m$l	T�t#v̊��DC�d�
��]sޟ����O��
Ρ�W�j��l���Jy~�ݼ���B�)Dž�ϫ�)�v:0.Ƀ_]�D��l�9�>j��އ�[���яc��Ї�̛�…��?�C�"����	T���њi��'\��O.��F�]� +p�2Ã]��6�^���h���Z�E,f��Y�J�3�i~JД�O����k̇a����a2A1�v>��V켴Mo�������U|�}�D�4�D-t��*�e�K����2������=��t"$���0>0����~�Iv����M�����^�PXI:�|�K�����
[�߳�{O�lX�Ѵ��,��5ˮC�b��.Uöѭ����l(���}��+�a&)�KD�v,={��j��U�WP�y��)��?���k����KS��dh��6�i��.vA7�>k���T����.��cf(=�^[,�̧��4|}
�}���N����:���E�׭Ї����:�2G�	E�����{k7?�Һ��sOn�},�YDb*Ign�,�l|��d�~�;���ۦ���$I�=b�_mR�zi�lj����.�.�9�I05%v��pj���S袋������ݔR���O������C�W�U&s5賩��j? ��o=�X�6)���g�m�Y���^�����ᄉ�C�>�38E�N�h�}S�T���h6�Hmܲg���o�?�?�OǼ�'i��ɕG~�L�T"M*�晡��Z�+le���J6]%�L��N�Vi8襇�s������������y��{馛lY���Z�������*�g��`>�4�}�aF{Ʊ��7ڰ2��֙��i�
Y��c�sѼW�h��'#�&����\v`���&�s��Z�a���� �u-�������>X&A`juF��}�[<��ɓ q��ꠒ�O�Du�&~������*���/e�0I���乤����`;q���E!"IDAT�T}��;���eY��=k�/m�FE��|,�w�����0�xnz}Po�h�w#�zA��?���>��V�/��,��X#6HJ"�	j���
�#�j[M�M��֚�ytC�C�C],9j	��|��Tzޕx����%\���#YBHG4C�ly5�ʳx�^h��
��3<6ʱ�K9�S馫��SU���LBu��S���!�nvMS�0{�W���i�
K�����WF1^H�Zm9�f���p*��g]�z}�9
uB�ZpS�]�փ_}��i�"	�K�LH"����D�y�y�k���O�O���څ�B"�F�p�'Sh����	0&�"B�!i���E��J,��Bՠ��F?��_��b9��������!1E16�.��<a=t������[iÒ䞇`p��	�f�m��o�5�-L��(��.�.r�Z�I
�়�p����8���~Z���y�.��'�G�F�'���#�Yl�4�_�ٞ�!��馟b�����
Ԃ)ψe�(?�?ʃ��~H���n�Zv`�^�㉘,�M+�R|�l%�Ԗ�����Y��z��h��i�]� �=#cH�Oh�E���v��|!.�_�����v@(��w�%q�I��I5�m��&Q�h^ͼE�TxF8鮝W��I��p���~A3<�_G�g��Z`^�Y���hyb�
H��<�R�|:f�����R������*�o�W��ױ��a���ٷk�́.8�i]P#k�0���E�/rѰ݄�>��[��go+��J���V�W���E��0?2Q����
f5��|���;�77>9�z����;.I��σ���֒	jȓ�	6��c���'�,1��T�Ac�lc��i2�:XO_�p��C7]E����g�կA��3���ؿg#�TGB���u]z^b�w�E���ÿ��ϴ���Ǟ��y�Շ��&
Q!7N��G��LJ�$�f[�ꡱ����Qq���e"�����zD�<[f�$H�$�N���ﳋ��u�/���[4
�-���#t�ӛ;-�>����TofZ7@+����a�%ә���iߐ�K��N�K�2�ĭ���=r�S�(��u���'bM��GN��(
G�Q~`�0�=29ҭ�ߔ�g�ȏ��a>������8+8���O����4��I���@��\�����J.�2]�MO�f�|��S��H�f��ͬ�1��4wmY�@�~L`ȴ�t�9�25�����f�:���8��u���o?��{�/D�&B磩��p�k4?��nc�)�:����*����"�s��ZEK�$ �v^�	���^�
�
��!`&���-�?S��
�~z��O���D�̰_��m�诀���ejSk��������q$|��w$��+����<��b�S7y�]8���ى�D�'ܦ���}֚�Q�H���;���s&+f��u�4#�?�6����1�W�R�3�Du�~�}�~wq�O��3s(�����Wӿ?6a�mK�g,Z�ɤ�y��1攮�n��w�%�~�-����y�U5T�'�wÑF�/d��ɬnsm[z�
LN<�H������4Μ��h�B��O��*���M����$O���Պ��=���&��+|%���^M��&i�m��q�/ސI��z�� 3N������ïq����	��	��?�QW>*�ք{��%u�
̰��
�w�����r�CA��H1�~�᧼������W|��gzЯ<7襗=e�1سE���$w�}�1��-5z�	K�e$���w�þT�qywg�#�x��׼L���:��@'?�����Eݚ�[jZ��k����﮻��|��9����$���/���`���*�����*�$�裗=E�Y�n��VZQ���K�$�j��eG��!��ǝ�%�7
���|W�o�:�����Z��`�2�0:��wG.�j�o�iK�6��&((�?t�&�8�S�>{ŭ�.&H��6�,}�)�s�\�E~?����_K�ЊGb���@�o��S����:7�ic���V�k��7x���>Y&AH��8�h�ⳑ����kڒ�M�䌀�����މ}���e�6�^�""v��l#�P|��������k����[|<���C߾}H�P�T��u����Z���
�0."���}���w�p��ÏŚ�"	�I��U���v���j;�����VP���{���xN,~����u)죟�<� ���{���죟~�T�,�8�Or�޻�70H`-��5�|����]�p]����m�-sǻ|8D����GbHL�I�h�W�F.�J��uG�Vu6�p���c��^������G�$y��b'Y^-���F�`��}U�V�7s毕V�)p��{�H@]}��5���
ԯu�� ��t+��ݿ&���Ţx���	&�I0��2	��V'�M�{���k��c8�<�2$�9�>�y��1�Ų�}�wV��Z�}Ah��IBnw�@+��2�uĩ�hX�
x��z�/�[�Z��_.��+�#
��\�#)6�[��?�lsA� w�=^�wq���t�V�M��@�,��b���{�ү�/n*�$����a�PӔ�E�?�BӺ�#H7Hi̧�?�o����7�a���0r
}�F�뒔nl<�fu�%�I�p�=��r���8`V�fK�J�������L�<�&�Q��&	�����
#j[2z����[iz�8�W�w˞���k�z��M�m܆K�	�I`��8tIJ76S�:ݚ�5��w��K~�8����T�4��_+��(�C�H��|&(��ng�w����F/Xpֺ6��F�,HeV�
��5_����n�p�&�F�~U�F�eM�M��֭δ&rA�b"����Nj�
KX����Gu4(�'(W�$I��)�H������þ=�1��k������pYA�{�4�d��>��7��pn�TB9hN+$�i��vܼՙ�D�&�w�v/��#YZ���6�3|;Ux�qP�N��S�I�1���ُ`��QϪ���wо6�u�dK�}A���|�7
|x��~e<�L|��	�8�]Q�lZ��8�iu�5�3b'���le;G�S5T��,C�$Q�VNTm����:��vƘ���@v"B�yzU�e뎠���m��A���o���:v��?+E��r��}�=�s{l�ټ����ɜ1qq����v�di��I�ʁ>Q�(I��BX���(���ߤ/�Dh^بn�jÑ,\��=��#�����_������{�9��b$����U9E�� r�D�ݴhe��t[2g�A"����‹ɲ"��b�O����*�Ob����(c|5�5�v�#�����?��R���h�`���2!HAU��̗~c����������a�4�.��Kl\zn����1qp���[Xȑ�XP�/��!I���vr��c�}�������{������5��~�u[���|�7|x���c~T�	&���
��+]�x��X]3?�� ��^s'ϰ��,�~�LL��F������Wz�w�M��x�{��w[l���I՘�'�/����,{|f$Qt4�Q6S��t���mO�L`0��ۏ��x�,,���Ǘ�@im	h��aF�������^��%�O�ݴ�x�_��Y��L� ����n4_8,�����;r��N�E�@w�lM:������mK��L
���wy���ɂ2�A���	Zi#��8��dw�E�%K���O6DZ��ھ鶘>S.�J�U���6���H���Q�\);(��	�k����Yz_MC*G4�|�6���� U|���R��2ٝ=+��h���lXƲ�y™�� ��w�47V���L�;:�^'��0�+$ꪓ��S�;zuz^*���(߼�6��h/� ({�0���߳{g����������5�L����Xs[����:�{��� �wZ�?S�#A6$��S���[�iL���ߺ���^:Y����D��s��x��,�Ip���jg]mk�͆�ݎ�O�iS�0����;��jZ���Z�,"��a����+�:�LGr��I�����$��}�?��/v��Ŋ�}q7�_�����#�d��w��}nX���
޽�|��A�F�=Ց�D�~�+$�j��s�?��̲Ԥm2�|��>�w���/����#�چ+֥I>�c�k���<S���M���ݝi�sX��0|���iecJ��hO�������i�O-N\��9>gp*G�/`�u\��
��!�=�dw����p��&<>t��	f�a>�	𿓷�W��ä�H�v�)d�i�����֤�o?�}d9��,Z�Υ-�m�e�����BD�sD��zw�9}�������$%i,6�
;�`$I��g����ؕA�j�_�Րz����ٛ$ٓ ٗ"5�"5��&�hƝ1��] �
�>�Ͷ/�o��y+��	��i�[ikH��,��%5���R�b����>��9O�������{�5����#�Q	�n4��K�|�`��MàC���Nsj�5��f�ߚ�j�.�!0)���b�
�K�.�t���ɴ6.�V���?��+�%�*Ȕ �3hc"�Yl��
f4~�ȫwW�Ó���!�͗UU�@$H!n�0��dT�q�9�PU���%&�s��p�wU��Cos8�m�����0�9�6G����p��s�#�ans8�m�����0�9��q�V�IEND�B`�images/icons/check.svg000064400000001406150755146460010740 0ustar00<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="50px" height="50px" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M98.287,21.025l-7.823,-7.812c-1.066,-1.092 -2.528,-1.708 -4.054,-1.708c-1.525,0 -2.988,0.616 -4.053,1.708l-46.012,46.012l-18.713,-18.712c-1.066,-1.09 -2.529,-1.704 -4.053,-1.704c-1.525,0 -2.987,0.614 -4.054,1.704l-7.812,7.834c-1.092,1.065 -1.708,2.528 -1.708,4.053c0,1.526 0.616,2.988 1.708,4.054l30.551,30.551c1.067,1.089 2.529,1.703 4.054,1.703c1.524,0 2.986,-0.614 4.053,-1.703l57.916,-57.862c1.092,-1.065 1.708,-2.528 1.708,-4.053c0,-1.526 -0.616,-2.988 -1.708,-4.054l0,-0.011l0,0Z" fill="#00709e"/></svg>
images/icons/magnifier.png000064400000001147150755146460011613 0ustar00�PNG


IHDR�agAMA��7��tEXtSoftwareAdobe ImageReadyq�e<�IDAT8˥��k�aǿ�$F�����?�P�*B�Ep�ԭ �8Twݺ������M;TE!"��A��V�D1��
&o��y�s�V$y��g��>������j�ص֖����9bC� �cxfz<m	A�Ʈe�(��®�|WB��C|��+�����>�̶�3a�B�hw�#�2IdS���T��".�N:����0�Z��c�ݓ��T�������O�t�E<�Ak�EQ���
�X~W��!2������:��Yc�� 4 �?G-�[�.��H��'=�~��H�����ű��i��씗>|C��C>�)qW��D�k���6��'w.��z��k�J�pQ��0�toIO�^�>������o?u����(gOĵ��M�?2���g�V��\�g6W�'gh���z�����"��Qh��}+���F�Djދ%�����7�.mIs�33�\����r�(~J�7��2ˡIEND�B`�images/icons/ajaxRed16.gif000064400000003471150755146460011362 0ustar00GIF89a�������tt����������������RR�@@���bb��������!�Created with ajaxload.info!�
!�NETSCAPE2.0,w  	!�DB�A��H���¬��a��D���@ ^�A�X��P�@�"U���Q#	��B�\;���1�o�:2$v@
$|,3

�_#
d�53�"s5e!!�
,v  i@e9�DA�A�����/�`ph$�Ca%@ ���pH���x�F��uS��x#�
�.�݄�Yf�L_"
p
3B�W��]|L
\6�{|z�8�7[7!!�
,x  �e9�DE"������2r,��qP���j��`�8��@8bH, *��0-�
�mFW��9�LP�E3+
(�B"
f�{�*BW_/�
@_$��~Kr�7Ar7!!�
,v  �4e9��!H�"�*��Q�/@���-�4�ép4�R+��-��p�ȧ`�P(�6�᠝�U/� 	*,�)(+/]"lO�/�*Ak���K���]A~66�6!!�
,l  ie9�"���*���-�80H���=N;���T�E�����q��e��UoK2_WZ�݌V��1jgWe@tuH//w`?��f~#���6��#!!�
,~  �,e9��"���*
�;pR�%��#0��`� �'�c�(��J@@���/1�i4��`�V��B�V
u}�"caNi/]))�-Lel	mi}
me[+!!�
,y  Ie9��"M�6�*¨"7E͖��@G((L&�pqj@Z����� ��%@�w�Z) �pl(
���ԭ�q�u*R&c	`))(s_J��>_\'Gm7�$+!!�
,w  Ie9�*,� (�*�(�B5[1� �Z��Iah!G��exz��J0�e�6��@V|U��4��Dm��%$͛�p
	\Gx		
}@+|=+
1�-	Ea5l)+!!�
,y  )�䨞'A�K����ڍ,�����E\(l���&;5 ��5D���0��3�a�0-���-�����ÃpH4V	%
i
p[R"|	��#
�	6iZwcw*!!�
	,y  )�䨞,K�*�����0�a�;׋аY8�b`4�n�¨Bb�b�x�,������������(	Ƚ� %
>

2*�i*	/:�+$v*!!�

,u  )�䨞l[�$�
�Jq[��q3�`Q[�5��:���IX!0�rAD8Cv����HPfi��iQ���AP@pC
%D
PQ46�
iciNj0w
�)#!!�
,y  )��.q��
,G�Jr(�J�8�C��*���B�,����&<
�����h�W~-��`�,	����,�>;

8RN<,�<1T]
�c��'
qk$
@)#!;images/icons/warning128.png000064400000025372150755146460011560 0ustar00�PNG


IHDR���>a�sBIT|d�	pHYs�e�tEXtSoftwareAdobe Fireworks CS4�Ӡ IDATx��Y�G��_dU�]����l�/��!�Q%��#J3Z�z
���a�ن������������X`a���,ֶ<gG�hW����<��#3����M�{xuK$*32232��wƗQb�����-�Aw���`�������/_�+^��W��܎�<�~ܗ������:�%ջ�[z{��ݜ��볺6�T��W�oɻF��lg	���=,Q$�R�J�[:*ݬ�V6�r�:�4Mޘ�٨%c��$i�����'���|e�������)U���[���=[^�>r|=�#�~��~��GN����n�?��p%��=�{������|%���"�Qđ���?�tlt/G��e{���9��~�W���|9�Gb����L?�{KS8�/i#P)Q=��%�����e�
蝅�?��
�s��Ê���N넿Q*1t�����gxeI�D�*��=��]�}��e�j`�%�	��gt_e�o���J�UJ��%�eY�8�ޑH�WEl��w��/u���I��W�cN�c� k�|�\f�@י��,�qZ�/t�"�Nu+�
n][�B�G �k�ɰ�,$�`d�R6�,�TD����ʒ�����t�bc	�����pf�`_ۤ��WL���]�X����V�Đ@�R�K�R��SET���na��Q~j?$G|��0q
��r;����G8E�K�XrPJ*JQU��e�=ݤ��/�F��~���@��]pl'�VQ11�J��=�ޑ%�
�R1ݥ���2�|l'��(K|�t&Ri� �C;�=���I�x)�
t,5�pI()�G��T����g-ݟ��8��&�8���Q:�Ub�@�R=�׻�e���{G�@g�R�����fP)�S��5�$Df�i����V����+������ぽ�=(K@Y)��'���z�f���cR��@�[�H�C;X�F �(b���e,	�A��X-�w;����ǁ�0�#��q�/Lb�<)`�mߘ��9�n���j�"��+%eC�K�-\�/��}�~�V�Xuu��:�s��D-�w�֞$H�V}f*�8k�dͨ��7��n%�D��E��q�ߩR=�,�����x�A��-���7��~z6P>������(b9K$D��_�P����ˆ�C�p�E�g05副
y[@��@fxw�<o�`ds	�(U�^��X�8�ޑ�=J�Q��=/=�Õ�x��þ�5�&|hnLC�tm�tl
]�,3��J˗�DѢ��D��儭�w��]'ȸ?��C���$p��v�g
�v�vS�H�ǔ5+����fY��}zE�[^�@�+'�\�)�4`�u�����ϩ��EI'�SP�#DO�����y7�zμwd��%��b�ވF�����'A�&�,�2�O	��<�6� �������@{��n[*�p<���
/Jez*���n��z
�p�g��3]��e�?�j��OB����'��ۅ�i1j���"^t�&|VoG1k���A�3�q�_@����z_�L���{;�vu��xQ)�Y�R`���P8Nt����I�?-��w:_��O�l���
�+���\��\O�МV���Jɢ/*��V�R��!	�:��@�0u��~���Sj����=�Л0r�`�P��[Y����f���#� �0D��:��"��4O�-���	`.|@K�S��xƞn���h7�Wइ��ӗ�xj}U�*b�UY�����Ѽ%1�y�T���0{�l��'����s���\ژ/&.uؼ�5�{P��������$MG���x^����N7����W�C����S�4q������N�Uxr�U@sR	�zXDR`Q��{G�@U)����a��'�50�!Lߴ1�0��[�9��n!��H�񁩋`j0���CU��j��H�
�^,R��d:��"o�&��m�#O���鄏3�t��5��LR����\A� �O���^xb+���	���HB�=��U�n4�)�U�|����mu�X���;�C��ȼ�W�FL\�dF�0|h���o�^ʢ?��B��r�Ӻ��ջW��%�$��dz�5�.�|_���z�w�碃^;��I���e���Š�`��pB�~���j`��{��Ix�T�e�<��lxV��<ψu�/i|_����T�ﻎNZ$��DS��9+V����>�m%l`��Zk��ˍ�͸F��aӣ����#Z�u\m����Y�7Z�2�4 �5�z+�D���K�4%Ш��X�obՏ�q��U��E��f��v����جU�	':z���g�2������Ndg�9��+�ŔG�9��K�}Y*<	"�
�T�L^��!X>��'Vq�/co)�a��{G�j#%��)�:���ҹ���0��p���du��8�����0)��?���tο�P���-����:�d�}L�J���0�md��q��٪J���s�P?�ޑ�G�}]��WJ`�>�ǓǺ������14k�ʴ8o\M t�)���6���=�K/�
���v�h@@���0y�J��,{f��cxC��.�iu�1�SXy��u�a�1�N�Ȏ�C�f���k_��Lt[�I��`�3dĿ���߲k�IIt��>n�ltPe�E�d
pZ�e<�EU�R�߁
��7�׿��:�
��>���r�ɋ�\ �� iBu�z��z�;鹙Z	�.���U�MA�2�!КS"<&<�M<TH���U�-�pZ7a�K��c5�>���R��ļ�� �(�j��z}�{n�A��>X�1y	b�ֳak�f�o����P
<4�	B���u6��T��G�Y��3���Թ
�-1��}Z�U�S�X�p��&�g��sk�(C������P��`�cU��Z�10z�0��	7/Y+���N$��^~To�%�:8���"n��tq#�Gֲig�f��1�+�Zl���QR��a᭸�����p�1`��0W?�u�=xܙ5f�" {�$���!$�&���tV�9���H��y������{�b�N8�"y�P��Ϭ���DO���y�;�@|wp!����s3
d�1�P���\��]�
��a�D����ko5k�tv���
��~��~�w0��_�o�“�7l�B����k��$a?p"Mly(l�
/�; �SỈJ,�	��~37Z�>�s���;H�yώp�S�B ��Ec?6�l���!v�� n�����,:�@�Δ��b�ּӬӱ��f��*�}ZL�"���`�;X�(P9x�$�)4y�P�'��9��p���^������w�
�}�$1��T����[�?�������"�	��"�ϗ
m�JjM�>��B���~��mx
a��=0��G)��;q��.X�	����ݢ�	]@��tX�
���y�> �	ܜ��k����G�18Iˆ��rp��y���0�L���_Q�|�0�忶>�)����>7���������9�&\��L�V�mw�&����-�HІo�.4�@�~B�'�Vcx;i��B�:�9��L�vmҁ�q(�Y�G��?�%p��14�S.D\k��8$G��r9�1����/�}@*�:Ґ��q�M��u����Y��1�,������m��A�$-��x�
ܬõ�Mkz8>�1����P�sNǀ>���>	��ּj4l>�(t,��/ab�K��,y�9�\��B�{~^�10݄�u�ԹKr]̺*P���M�`rp���8���4Dܝ&���r_L��7X5��
O����ϖl��m#t�чW�kJ_�#6��כ�0�OX�V�O��t��h��6{8����~#����ԚS�=��*\���Е[�r#*�������u�,�x��x��0���>���rsM
7nB��֬��fxG��<��}�7�3�۬ѷn�J8�$�`�3�#Z��N�hSq�؁`!=6�l����`"��{�.��!�rR@`b������cU�4�O�؅&�ۅ��� ��$�rV�:t�����JG6g����6G/#z@|	)4��Ċ��
+��+��m�X���M�Jv�3:�\���������q�-�cx'�Q��:ؾjci�_ڕp�o.�C����hA�c��'�]		?׹" 09�S�Ua�X?��f3�0�}��~���"<��v�B����?�A�<���ˋ�_0����Z�N#K��\��oSdh�GPo��>6m��-�{�����.�+¨1�n�a뱍�n&����PLp��E-RܚP�*���v�^HqR`��P.�D?eКa��q�V!��p+y�f�&1{�C�������ZR�\�����z��Hϋ�y�"n��$p�xm|ߜ�s[�ض��l���!���=@��U�m���;��+Võ_�4j7�צ�C�Y���y�X\�p+���G�P�ml@)����Z3 pZ`��0Qt�n��	�7�48R��{!��n���q{�����y������(>nG��>��;�wƧ`�zپ;Ky�)�[x/�UzEأ5�4	ly~TWZ�ό�A��p �����D���#����Z��G�@�X)�P9�G_7hM�k���{o§x5n0�rc<�j��ʗ���E}�E�3�h?����T�,��ʐ�ݱ����N���,L���v��1c�"�{�?x��}�D8��]��n��K�H?��z> ~!�����"���O�R|��>���QW��R@G��B� �/�F���=1�:��ϰ�w�
�kv¡�vM��Z�~�[�m�J���J�Db��/c9lA/S��e����M���4w��@7��o˽�)�{���wA�I��|��/�RɆ|u�2�	��~n��΅n�O|�V������7i���[|;������Շ�m�%u'mJ��*˖e�i����o'�j��H��7�֩lؿ
�n��ga�g����U�|Y;hwɻ�.0U�����]����}	P$	����9�]�f|
�:�r��J�B�:6D|�3��
���/�s:�XG��c���g�{
��3xn��GC�ބ+�65+6�	�|˭D�\n᝴s
2���)8Pe�J!� x�T��kH��n��[�l>����K����n��%A��ļo�km�p�f�<����s�{��J��v��'x�sݯ�y�484���=�#o
w���r#oa�~l�wOOU�ya���v���.�g<�S���i��i��iO31��f�-�W�S���M�F
�^���þ~�W+'N���z��y���T,�)�vc8�4a��`�ʖ��s~����}��ǩ��c�:
Wkyqm�_��b~/����l�B�/�j�U4��9,DH��'�)��X�:f=��Vr�C��o��9�7�4���<���o^�"�-9C`�;﹅.7Pa3�&�vKh���7�O���۰�]����틠y	~�p�Z>[?4Y\fP�导}w�\!e���J`v&g`w�5?���لr���)vѩ���r7�%��
������[aY>��u�|��xܝ��n��8Pf�0^�Z���&s_� ��ſ�_WTtھB���;v��s� �,2�s�v2|��4�1TDx�	0��?8ǚwwV~-��^ވ�^����W��O�}��?�If_a��Y���0��!O�9��XnNW�kk3�:��e%O�euR���r��ܜ��}�n�旟Ɣ+<<�
qM�kJ��?��aQJ\��Ѽ,6<�
�"�<���獨J�O��ҔMƄv+<
�2=-� R6*(i])���o�M�kH�U�<3�]�i#���P���UJ�,F����`,iЧK�a�wt����>8�.}���$ϐ�!׻��7al�yI��@�"N�*�#l���b�]�0��#���/x���<�.�o����C�.4c�>	�zز��R�/�~K����~��Ò
�>%�	�*�O�=�.`Ӽ�7�}�۾�'�ga��.��-㸔��߮�zU���'p+�ʽ���\n@�VA����]t渭���nh���~m �|������j7}�����5���;��ƕ���W��*@d��G���I�7�_���ٿ��?7�#!��'���
�I��~�M�q�Ի�Q��
�&�|N�TOb]�����w���@d��#3�n��i��Ĺ����sR!�&1p}F�H?;S�Ra#6B��8�ޑd!k/�tӽ�iͱJ',{q'L_�����r�:�&ܘ��8��g�.y�<ƒ��0_�p��'�o���g�����_@�X)aҎg_"�iGy�&B�W���V�p7+&}��:��t>^���+4-���0��"��
�nQ'�)��I6�
�p�@�����s�tc.L�T��E�"�1��t���S�k��cM8x��[�c�OҺ����Hy�E���m"-����ʜv�튱��p�{:I�]<�I���Bl�y�/�;,Jѡ�����B��mp�"�gh�G����„����p��u��[�Ψ��ɯ��0�v��]�~����Pn������-������|�����k���Cؿ���DѼ�|w|G7a��u����>�ð��Z�cSpq�A@'�A�^��N�O�r��k8�7�;.��鹿���ٽ=�IP9I��#�G�r[@�
��S0�ص��ؚ}}�w���̡y��w����
��cF��"�ӛa�Wi�^`'�UƧ�dk��'rx��Қ���q|�-s\�q__t>3�1I�o�}ϞᩁB �1)x@p�A��@����^�%�<<�Cy>����$B����Uæ�F��7��A�"f�E��\���9�i�@^
8��D���=��@{�ψe�s�^@Y��E��D��8_��Uyb.��JP
�>wN�Mq��lMSǰ.������5��{��L	o�����xl
\>�.i'��LZ��I���_�;�y�'���D�����hwn�EE��q~ q�8����nէ�SA��7�`'�W��Q�9�-�@���T�^6��fj�ds�
��Y87׃��{���LF|�M��sJZ�q��8S�jP�s�?�jLB�l�I�!�>������X3��
b'�*M6�i}]gC�n��;r�o����%�%���1Օ�za{?\��2�6�{a�y
Oܧ}.���@�8����Z�#}@�)�!�	|x'c�^��Jzߒ�����@�B���\Ʌ%m�dg�U#�Ź"��,�[ࣿ�e����ќ��|z-�^�.�R��:g��ɘmN�*�
�����o��`�s\�tv	��x�q((�Ө�H�Jv�T�gJ���\���KL���]~�o۱+��V
�*��-�5�w���m���7-�jp��5��\z�r��C�g$�
݀:�	_�?�Ar�
*�0�>���L×���(������!����C܊�EŤRw���ז�[�	"��o�*@��3h�V*��*��w[��MҸ����3C��^����S��$��~�/��`d�p��D�����Q�΁!럢
�h����)�
��~�DC\c��Jk�
�&��;��|Ξ|�wm���	6�o��e�<�sW�����.>���}���E& ��k�*��(�e��EP�7����]�6�.�6�n@�;�rO�g�	ԍo{��"P,	n��@�f�X���l�a�5�`E�Bt|��â��/�������ѯ�o;|
hIDAT`�i_���D���y����{�E�� K�
�H�~�}�{��~&�BcT�%>鄎2�}7�k4�Ni�,��`�c9�O��,J��J������!�4�:P����%��W�dQ=��J!2��|��h
�7�����,N|��V��t&y��H����qxF�T"D��p\���ju��9���6��%j���)��%ݔ�eƟ'�W^߳�Q-�s�T&���&��VjF7�\�H����Cm���e+y��N���/��k���&��_D�8���]$���A�|��� �5>1��,���g:�]�~�N��������c���Hۨ'�]�R�O��I���{֗\�
�g4c��.Q�'N�
���yjK m�n�؋�Um`݈��g_H��}
�s[(��z�`����C��<y����|�9<��(��}(E\��U���{��
��;��6���I�����-[�U�*X�p�UHs��9�0t�5^Ӛ�n�?�W!�}b���.����=���?����{�r�Tk�œEV���š��:]��-fa��ry$d�O��j}��u�,պ^Lj�b��#x�f��Za	�cC�v��N�*�q���X)��"�I�>�(����a�E�X�`?l���q!����룀�m3t�����˩(�-*�7W��)Ѳ3���v@f���
�'y'�
��ŭoE�6��m��<����إ�rR #�sD�.�|GՁl8�}SDL
�����tW!���7XE\�=B֮��t�'�r}t������h �#����t�gRQ���1-	�l�-�"|�2�’#�_V���m��/슴�b����P�J��@I"z���ԧ���Q��m�����M�ۋ�}� yN�@����������Hg�/)���K��sNZ�&
�^�.#���O������9�๎E���e��#§#::a�V����h�μw�A��(����-C}=�
�ϯ��7�E��v>$8�{ć���T�Jȁ���y��|�i���t�#�K|MJt� �i���$�~+�ij�A�l�Ɔ���]��ܾ��0���L����nj⋸�$m�P*W�Z�)��ٹf>�����!q�͹�m����bQ�D�ͩD�D}�g��P'	<��=�x#��%�IR5����2�"�v s��� ��$�uO����m�Gq�� �s.>P�t��B�f���e��O�4f�������,�U%�0Խr`5�C�@�s��N��� �3Q(^ې[����8���M�8�O��-
���u�wMN��l�ȓ.E�)a�������
��s�
����$l�;R�n.��T+a�eߋ����w���T� ��e��殮�ȅ�@��{/�`��S	m� 
��͐{��y���D�\�t�qj"x7������w�Yډq�|��"�K���P]�һ��Ó�����`���U���Α���wpN"��}?��]c�Lb���N�ó�s�J��̍S�k�!Mh}���'��/���t?I�9�@�dX���b��}�4�4ٜ�R-�җ���)u@�x�cY0�>�q��Z*�˻�=*j�=�1�4�&��!D�mi.����n�/	�<?ޥW�\�U�wӪQԚ�u�ͦf]Į�۾���͑����u�Mf�h�ei
���8�Bb��}[��:�u,@I���X�V��Kt����uj�hm'�����u캞�O_)It�cX���>��PH�=[0�(5>{�ƕ�'?��FW��e�u|���>�V�o:�ei�Q�ϥ˅Ha��L�d.^J(��R�*S�u~X�TKl9XR�G%����C�l�0M��=�m�o_�#��-Be�?(6Π�el:WЭ���ݏ�_r]z��qg�]i��}f�>�!*�1�MQ�H�'�����O�Xe�t-�>�16�̥YS�Jdg�zjڸ�4����]�i��9�ئu$_#��;4&<�/&�cru&p�&�[������f�
Mz��:��?׻v��r�@������7�I��!��ep�*�K�0=v����$ɾ!�%�Ls:+�K>}�ڪ���O�(�L�1͙��Ƥ�HdOM��Φs%�w�p�KV5���޿8��H/ń�LqS�uRػw�gp�!��G�����h����W�LCr����u��I"%4g량R߯O��LҚ�m�z�`�6\�H�|h�ڔKJu�t��E����_��{��9 J�r�yN/�!���!g{;9A��yT
���!���9	ٚYm�H��6%��1RKt��h����Ƭ��55����MB,���+'�q���� &Ar�� ����,�^�����ȗ6N��M��[L�]r�Յ\�k�qh�	�O�@1G}�̄2F�`�I�\��\�c�cZ�I�I�FD�����	�������/�`���B�o����n����`�m���
���5�
�"@�?��c�iM��{��IFwS��_��LQ�o�uY��k|��������/_�+^��W��@d�^�1IEND�B`�images/icons/check-premium.svg000064400000001406150755146460012414 0ustar00<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="50px" height="50px" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M98.287,21.025l-7.823,-7.812c-1.066,-1.092 -2.528,-1.708 -4.054,-1.708c-1.525,0 -2.988,0.616 -4.053,1.708l-46.012,46.012l-18.713,-18.712c-1.066,-1.09 -2.529,-1.704 -4.053,-1.704c-1.525,0 -2.987,0.614 -4.054,1.704l-7.812,7.834c-1.092,1.065 -1.708,2.528 -1.708,4.053c0,1.526 0.616,2.988 1.708,4.054l30.551,30.551c1.067,1.089 2.529,1.703 4.054,1.703c1.524,0 2.986,-0.614 4.053,-1.703l57.916,-57.862c1.092,-1.065 1.708,-2.528 1.708,-4.053c0,-1.526 -0.616,-2.988 -1.708,-4.054l0,-0.011l0,0Z" fill="#137D8E"/></svg>
images/icons/ajaxScan.gif000064400000001323150755146460011357 0ustar00GIF89a�������з���..(��r``T���""JJA��yddX���&&!NND����ؾ���881�����ն������ʲ���!�Created with ajaxload.info!�!�NETSCAPE2.0,-  �di���
���@�8�5p�{�۸�����@�.s��
E��B!�,$`a`��i�����©�ҧ����X/(��;�!�,6  ��a,�$	"c�b�(�ϴ��2�����[��K���ӸN��U*�N�!�,5  ��ET��4b$I��<��uy�;�
�Ȅ>b�G��̑s9y�֋�*�R!!�,2  �di�ֲX�DQ��H�bRUEɴ]�:^��f�_Q�#����c�J��!�,7  �di�$q]���b�iمa�h㢶m�] ��a�.�M$��4_-66ˠ��R!�,/  �di��DQ����r%R�
�5���p���Ěq��^-4CY��!�,/  �di��DQ����r%R�
�5���p���Ěq��^-4CY��;images/icons/ajax24.gif000064400000004761150755146460010731 0ustar00GIF89a�����������ర���莎���Ȝ����ب��������vvv������hhh!�Created with ajaxload.info!�!�NETSCAPE2.0,�  �$AeZ
�<䠒�ÌQ46�<�A�
��Ha��:��ID0�F��a\xG�3��!�	�O:-��Rj��TJ��*		�
t
��������~�"ds]�
�)t��-"�i;H>�n�Qg]_*�
�R�3��GI?
�˴�v$ý�j3!!�,�  �$�0eZy�0��q ��P�УW�)";�qX�^�D50���	Ո<H3!��k-na� �(�i���d�$P@yw`�J��#
?�
y
�����o���g��
f���'8��{'Cp`jn�"�
2�{�`x�jy�4�C,�4��o#n�$��ß��!!�,�  �$� eZ�$�2����q���ҢE� ҉�p$H@D/���G�DÄj8v#��P((Dƶ�� �N�(3ܴ�#y�(@	gUx*
kK�)?K

���������$��"
�*���K��
�W����x��?�G��#�Wк��n�h�K,����+���*!!�,�  �$ eZY$1��Q(c����Ң�O'"�������� 1
��q؍d"�A
�V�x8p��4988MRC�@	e*3@
iI�)
'
?I���@�������,����#
�����5�,�����"�E��z�?��@�E���@�����)�����*!!�,�  �$�(e�$ÐĠ�
C�E1
	;���('2$��!��DS%!����)e[��TE50�p�Ũ� �F�
�{V8,�%`3
gI�w�3
���*������h�"��)	q4��)#�g��#S�$��"�$
��>��%�`���r�J{
1���$ʈ��!!�,�  �$@e�6$��Ơ��`�3*�=��
��� P�\"F�����`P�-����d5V�"�2�|?n"!(
�����)e��4xyc?		
��3������
�#wyJl%
o�^[b_0	VT[0m�
$�4�>�'VZ
�c��3��$X���%!!�,�  �$`e�����:D3
�H0�,'j0�Q�s��L(2HM��j#�ȉ�B�\O�i`u��=Y���EVL=I		
��>������
�suIWJm|	\"_�b0B��cV"d]*K1"	H|@B?�I4��#�S$�-|�|!!�,�  �$�4e��a��:D�h�����I ��/�K�$W-�	0(`3���F��=��pf@�t�Q����
{f~*���y��S*mg)	�enu		E^Z^	g@	kw(b&	-w#"�xW"�t
#�#�%U$�`�t�o!!�,�  �$�4e��a��:*����1����v/�Kd��z���<�p6%tP5���S|���H(�F���c���`05xz*|~�v�G�0t#
	Fh�0
#Cd
1
�I�#(i	-��	�	uEL	q��"	h%�$�$<��q!!�	,�  �$�4e��a��:*����1����v/�Kd��z����p6%tP��t����5ũ3��n��G$�
�@a���wy{hoFS>k#	FY"�%E
Cb
A�I4$	(z�:2��
mI		L�l#�#
�F�#�#�>�F!!�
,�  �$�4e��a��:*����1����v/�Kd���V�tKG��22��7�D"����$)����Q����qp8y
l
|~���6z�w2j#F
�"	�%
V�C�
]�6a$�
Q�:2	\�EF	I�&�x	�"͓�F4$�]�#�x!!�,�  �$�4eZi䠒J�16�<���B�
�?$r��T�HzDP'"l�(�1�5�y���8tg���p,�q�M��*		
q
��������"}�#	b?y{		{)�s	-s�:�9>e�E,C\3
��^�3[�
������S��|���?!;images/icons/error128.png000064400000030414150755146460011235 0ustar00�PNG


IHDR���>a�sBIT|d�	pHYs�e�tEXtSoftwareAdobe Fireworks CS4�Ӡ IDATx��wx��?3ۤ�Jr�6݅:�	��7�+pB5%�7���B� N�6lk����TS�-clٖlUK��Vm���qf�����j% �y����)���=�6M)��K�`�4��_|�I)�`������=��!R���;���`�`0��o�
�~x�6~|��'��8�
�~v�6����M;vP� ���[8��#(��-��Sg��0ؤ��n3���#g^����Y@�`����	'��~���T0ؑ�r&�`pg�5�<�ġ���u
Rd
�k���3i:�/H�1� ����l�e�H7��zS'�
o��၎k��ud]��X�7�Hr�`�$�]�?�����yE[M��7��9
�:������@��@�u�e�
�`����a�h8n6�	�.�4Ǝ��r�����h��hjN�`�$�݀����Y4
�����LG%�p$L:=,��)S�C!PJS>N>�
7�dI�I9y���j�@��&��
�5Yj����`���I ��y����_8��F������$��U�� ���	�&��k�/�1�ĮZ0���&�W������2���4w���&��BO�.�"twC4�<�����&9,�{�W��s�y�7V�+�2$!��A��%�
�8@�τS�������}�5�*
nfXu �<�p�o���L?�j a&�<� �(�	˒��+ �0�/��������s�����'Գ���]��q�~n2���)�L��NDc��#��� cx�|�u�$���X�o)�
\���s)�<��������=�b���6!��i�n�t�̏��Μ8�: BJ�&!��� #Xn5-��D�ULw{9a�crQ8Q3U#����Z�������_#���&���|���$w'D"��D#��;;�L�կ8g�!�"� �4�	��3����"�GB�٩f�����crQe#�ۡ��Qh��tF��
v7C]�\ݍp�y�/�����.wJ��4A"	���nB<�(D�!#U��r߽�7~�������A�^�×@�_Lw�8�f~Y-$
�lk;4�@[;�;��
�[���j�찲d���	�z�}��Q ���Oȉ�;�0�n�D�[GT>�	9b	��Z�Ì�p��C�B@e����3����`Y�R����vy�p��
�`&�r��$BbqaxW��>��xR�Hq�Q/��p#�{N����O��stO��TJ���k,	��@��Ne�i0��r�I��-`i��O3���,�+�@Q`;p����?.�`�`$!�X�j�$��q�1b����n�������g�`���r�.Xa����D�'�R�HD�hDL���hD��H��M����,��q�@4A��q� �o|�J�ؒ�
lf�}�������d\*�<��a8>�DJ2�1�tA[6W�Ko��<5� �h��|��O,�xg=��H|4����m���sM\*�����ٿ����H����(:���`Y��O?�s\�=���׼		CT}$��};�q1�9�uC��m����M8�^��l�U����e›k�T`��XB���v��HB�1����\x�����	lGB�8�y����=U{�`0XLAM�U��\^���1h�Nj�25��G�O
��s������ü�x��F�ZЭ��</�d�zi�~���-��(�}�.��
LM4ၴXW���a�8��ַ�sc^��B��=*P\\�v~�4����e�N�[�D���˷~��7Sj?�����瑴�X,�tt�ڵ��C�Y���P�������eˡ��x]�5a��XL�v��`�E2F\@�a�Uq���c&�f>@��{�7����;ݧ{15��������\~��2���^h:�E��;ْ��FP���=���C�����Ftj�K������.7,~Z���k��.]Ò�L�����Œ����[����:&�e��M�+�|������_?��{�
�����r�Mw�=��|./ͭm�,����[୷��U�\�[i��] �u8�88b,z�xǪ��-s�7�;�|�>*9��k��]�jT���z�<3Q��bp��s��^�z�I��.nM��4>��v.(^�����`��S���49^?�F����!�p�On��$��FB���(3��?��mp�q0�x�~x��rލ4��	T�џ���.�14��ڷe���	���y��LSL���p�l�������C�í��5�T{��O�_�[/���	c&����1i�T&5N�"m���v���ۊ�.C�Ӟ�j�	3MQ��~)����
$oک�)��k�O"��r�߷a�[�˕&��?�o�
F�D�0c:�t
�|oTmd<y�����f�
tu/���λ�i���G3{�g���bgŪ[��v7A{� 2�Gh�Z@S����DĒ0�H��L��NؼU�!�<g�A�d�	���n�_>;�7E�\��k�p�l��N%�L���N���g�̣!/��BM������M �����U�/S�͸�}����K��u��O��k%}T�5@oR	pi)�`�F�Q�����1�V�' H1*��W�̷�����
TU�;o�V�v �����κ����S)����к���$i\���š��l
puQ�;�.��kѥ'_pŬ�'�K#O�3n,36ugy�ԉ:��:2�8Kn�G)I�N>>s	��N(+�P���ӳ$���
fط�c��;@m
��&��@2���)�U�Cl"�|L7/=�2�F��㏃�h\���\�Z'�`:;!�hqq��\ST�'�{�!#&��n��`����Q��3���&q�g��C��ּ
����LfV;���q"Q8�p����]P���s��mF1#f(��w�q�~TV�;k 7��A�癩�d�4kN���s�����w�-. �T�G��&qoCKc�<���*�eM�L��ˣ�6r�Ys�x��m���V~p�;ޅ��H<�yE=��=�����à�V$0�����F�
8+<ܶ	�M�m���{`S��`/�@]܄�5��AҐ1|�].�?����[o�/G|PYT�ʮ�$��I�̥���m������P4`p�I��οbY��Q��a��5���Nh
]u
m��M���9��'1�*��r^�ȥ�+LE��š��/�"���^
�Av@`"���n/l�O�-?��߃YV.s.
�d@����������
T0�>^�(�8P�r���u�]�\kL���1�TA��&@V8��y�o������&���Kuq�	��\���M�Ɩ]mm���Q���줴(�`Еyc�N��1eTሱ#
�+˂[�m�������3(����K��j��e�>����B;O��O�/~	-�;`���Ι#gA}�V����$�hW��ߟ�����zO���𙠬쪦��4�p��n��'Ү��y�֝;u֣����Է쮬M�T6ˠ�����U�0�s�MQ���L-p��k�-_�U�sz�C���_���yMl�nK�v)��lI��Ï�/|�[�á+
Ǟ�~��`�Rh�m�q��?��2x{
�Ŵ�JF�d���˲�Ik��g�m�yy��ǹ<�'�^ڙHx:���ƨ���8���,)QW��Q0;H�a#�G"'�
i$�T�`��W��~|�~q�4Қ�-&�^;y3�d��2�^7l�Ϙ0�zp�a�:��x�i0�P�M'�_��灛��6�����7��7,/2�`֭�LZ!g.���Q���>��G+��r�Vv6�:��tBy7�B��P(f'�zS���`0F�]B�У$��
E1�
i �GU9#~t;����b��xI����n��nA	]��Ս\��Z�n�
��*�==u�1�k/õ7���ҥm��l2�Vг(���J+Ǭ��W@W7E+�s�(�����p%�9"�����a��J)�Դv
�Nȉ�ֆ1��
�(��F�n
XYUA���{�dͫ/Y� շ���4���6ßV�u���I�</n�����`o�wm�?};��C�$�>����(E�?H~����<XZ��2!��*5�>0>%%%
PW���X�7S��\x: 2q�f=$XQ]N�Oo�Sw�-����(�1
+{Ev́�k.p+�`K<�����k�N����o��-�6-�*#�1��hZ�bX���S��g��
�IX�SB�T)h\�̷���B�A+��ꄉ�P\��2n`<���w����%=����)Cl��?PRX�Y����xa\�Z��&x�uq���T��eS�ulJ`�%q{�� iR�ҟ��I�)킥�N
�"��C��|��B!s�ܹaM�L@�@O¨(�\p�!��VUU����]R����k�[��)�>���S��Y+#u.9������?�Gen�a�1���=��'c�g@sq�K"�H���vAi,���&*M��B�P��7�	6)�:tMk�|lӄ�q�'Pp��<]��?�X���J�y<�](Cfޘ��8��:lX��V��b]b���{ e��w�<���/��B`����0?K�ﴘP��8��/�a?`��a(7$=�0>��	l��Vc���̾�„�k��0�=@$j�E��/��%`�Ǭ��,���r�t&�9����G�ɶ�.(��Ҙd,Z<Pi@���G�;i��Q
�RmԺa�.'	X��9Hd�#��ky�Ww§/��'gW�{���U���f
d̷i�����N0����'aI���a��5h|,���W: y|��D)��5��:4���I�� �������[���_��|C��
�m:�$����k^����ȁR`YB�A�v��Z����P?����X!/.)Q
:,lw�.�8<��>����c��Z���		�8�`��cf�7����j�GڇH��%ai�`��%�^����$�� -����AX4��И�4�S.X�kU"��h�?K���#��:z&����w_#�hL��>K���ѡ��s�6�7�Kvo(d*��\Pね.�3�L�*�2Ve���ʆe��*K�}��虐�ǂ�֐�0�c^(5`IL�f��*נ�12��]R�L�ځ�:Tj��U.X�Br>$�}-��K�/^����߾��<D8tz�z�ƥ��4��j�ܑ�奈e��|�Z7lסQ�9X�[>AbFk�͔/}�|L����b�C�G�Ғ>Xo�҄��mT�V��f>d8*�����Z��N+����"���mM�?�\u3�	��%ɷͤG����mV��`�3�����̷C!S	j�P�zZ��`��ʴư��[iy�>�w3L����-:z����{k�#>;��@�-�@��-��m�����F(d"�N�����}�v�\�X������Mp��(����{k�!�N��a�e�u��r��4h���}'
Xb��P(i*աA�&��!)�x���K�a"�?��x�>��F�p�@kp�b�S�A�|[�΄G�2���%Nt�t�J�M���^�v�8�U�8�.�
��m����H���FYB��@�W��Fϸ}��W)�=PeEQM�d��������B��T��J�����;xX�F��,
��gW�u�蛃c�@n���C��t(M�����k�`���욗%�C��殒��.��9��CI����8
�4�zt�*��3+`�w`ʴl1�t����c�{oPL&h0N����ֈ��e�uh�;�6�7e�s�K�P”�:]:34Т���d�����L���c{��I��p�Y�*ffh�Y��߯���� ��Ť4�*�E�c�5h�b%ߦ���_!��]��dw�a�GB=Q�QI\yy�f�����o���P6;���{�/��è{k5����nE�K=24&l�jM���~��]
��;�ţiI$-Ox4�2	ё��K
�sN�9�a�5���)��"�9�9t�f�mލ0a"<���3��Yɭ�im�E8i�������lW��Ab>.))Q/��
v*��w�/
OF�:����s�)�;v�a#��)дS`��R7��L�aY��e_��Ε����ˬ"�]QE�����>hI�n� �J-e��l��B!�PPe��@�h��-�����\C{�M�߁�k"j�l��Nr��WG�ּ
�0i�5�Y�y�a���2��'!�7�"��2�a/��e����
��$�q�zl��^��F��"ú��p,�c&5)t�g��������J7֧�����RR�\���2%m��&n%����i�ǻ�aʬP(��i��A1��>ܔS8�y*̇K������sO��:�
q� ���p��{r��vw��=N`�l���/7}
�Ķo%��T
3[I-�2�4h&��m��(ՍHS�V���-�"�>,�4=�(�{l��Dǀ�~��3�ߞ^���M"�]h	X�μߜ�E�n�W;q���4�(7Gő��;o^.��=�dz���>�$���?+��Y��)�L��a�������6�lp�H��� ��~ޓN&`���ȫ"�c*d5��tD��19~���?�wҮ���=
mϥ��$�	p9[�]{8�����9����.��s��X�5�~	̙C7��ʇ�g��~`�?n���,lx7�z��qR��f��a6#m�d�
��i��@��v<��x����(��	g|���f�������]ӳ���f�b~b����p�w�ſ��ui��v��Tö�ڌ�s�i���,��e_���q���bQxx�u)#N8�ǿpӣE��i�
��`p�f�H��������}d�c�
�P8�g3�7C���6�)8�?�8͂���=��WD�_�ٗ2�A)� �c�@�5T���� �/�K�ͥ}���Jc����X?[Y'0� t����x��\ƈ�3{L�Á
T��K�=���~?�=x��}$R	[�z3|(Q�����XM�5�|d��
��2�=k��ky~��]x�i}�{lO��}T�	�~;�z�exN���z
u�dھu��fݒ|{Hx�-�/�E�n�>���#B���Xt/�v1�ٳ�A�b)MP�%v:Ծ������o�+��(�G�p��f��َa}@0 hpH��a��X��_�?q��Ò�`�촔���v02�z��>R�����oI���O'#���/�ٳz�$G~!�0�ɢ��!��^ı�\��p�7���p��'J�a�pڅh'�O�'-:�7�&�vY�X��~����gaˆL���I�8<� ��Y8i>�	�08�8 �v;�~>�_�E����J�C���ǜ
2%��'8�30g ���+�!�+�����b~�c�|?o��
�[�Cg_?�L�<�%I�x�{&w< �����A`���R�I��C��~�=_��m��@ӡD�<��;
��E�t�/�v���ΐ98`�6���|#��7�ؚ��e�>�%��2�rL;vU�M�z @Ah	w:�M`w��>A&@p@�n�X���Y.?Wf���;Tm;�r
�Or��Rj4dG;����S���eʄ�%p�z@`/�auB��7v[̷@��|3�����^�������d�㈒�/K7A�p�w��&0M�Ǟ3S p���	�N���B?|�&X�W�*?�r,]����Тm����Wa�Z�fc�Z�
���fV,�΂twzIDAT9'��v�h��`��3ܢY��<��n���
;�(��^c�c@��5���IV��Y������0�6�0��'P�xf�'�$D�;��@��`�����4��6J�\;��+��!�൒�x�^�L�ܰ"�
]�?��q�H���V,��	��
N��DF�-�΁g���E��Z z��{���]��@�rr��'�g���瞁�!��y��w�;a�	x��1��')�Oޝ|
���Vª����c���u�S���L£���|p��f���N���Q�Y�Ћ�m����(��\�
F”pؑp�T8�r�ի���kax~����B���@Σt4��2��Q���_��kK5��a��;Co�#	+��c`�I�!�n/Z�/`�9�#���&�p�gA�U07s��l�-d�B���0,�V~ۣK��I).������I{[��.7�*tV�L4sPV%����<8��0z�Q��	���ܲ�Mw�}A��C�`p�~��Әv�,�~�c����p�w3_�L�Wn�/�n���Gh�u�x
�6r�
�GA���m4��F�+��ijE��?�ߕ�U٭Ӿ���}74�B$.{4�4�D���	�߳F��ur����>���q���7l�;��/,|P~�^<�…I�
��L3�h�����h�(��y�ذ�5|��2�oG��N%K�= a�QG��ar~g'��'�}ݸ����~ƪ�5��(#�a>��!���_�|_:�S�K�1�؁��lDM��Nd-��\���9�6V����~T6k�w��
h�9�PP�:?! �K"�R��	�g\$���V�Y���G�4E�����X��#فs(�u߀|7<x��N�^
,�Zu�rtv`Ҭ9gP�2�Hb�PLD��9��i�M��?�������ο����V1F���&���5tG��C8݅��iSS& ����F�„CW�#�(�����&�/��|���}
|���(�ڗ_-�vd������zR#���G��m��W���;`�B(�!n�]
����O����q����ع�Xogwe\���	�)��E^���cG�kV1y��$��H'��/@���k�E�~
�O7f���l���i�V�]�I{dyB���Cgb4���g�ˍ;`�]p�7a։��>ѹ��Q��ǭM9{�?a��\q�#�,��۫��j6�����n iaW��	'�7���+�)��`����{x��$y����yۥ�RD���WC�̷I�vXK�!S�u`�:m_?�M;�ww
�
�s.�Q#`�
Y&%�җ/9|=s�\Lm����tv��d��QZh>�BӔ�K�e"m�SH���r������qN���̇����`릁���������揁-�b���rD��~�d�j���#�q:W�,��v�
���?��XH��rY%O�׽�q��Ag{3��
��Zo�D�0��<��ق|vՍ���pTr<hbFŹ}$aX|�6x��P^������<� 5s45�H$_�ֆػ�nm�ƥ�
��:O�ao۫1����0�ǰ�qٚv��+`�pxb�����R|�#�"AP�����[��{��L�itc&I�+I�
�

�4^�y�MmQ1_
G��PM����
�:ܷ ����|	��IW�����2d +�4 �i����r���^��|�j8����^�ss�g~JJ�XJ��HF�߫�@K~(�gƺM�@��G�2�v4vbR�I-
X	��S��%
��g>GL�H}��oQ�����O��m�߂F9´�}U����2d(S�5hlG������zx��9��k��˯��'ɇ
�#(�6�'�9o/�	�/@�a�=�@c'�
E-����Fa[V�.�ffH
4��[��ŋR�R���h��R����*Q��2`��W� حX]�~W~N:���eA(��&��E�
Svo�هͤ�:@�*�x�Ո*��_�S��(<�N=	f�9�E7@�s ?�b��|Q�U��z j/ԅԽ
�m�.D��j',�G��9��*tcK�M)!ɷ��E4_
��m{�J{�*QZ(�Ш���^N[�U�Q��B8q���})C��ˁ|�z�wA����֓��m��o��]xY�(mE�P���r�1O�[ �TkV��0D��9�bY��t�?l�i�L_5��ڏm�yH�R�q�z��4��#����93����n �
|y>�nx*$��+.��X�BG2|���8��($�P���F@a�$:��,JT^-�k������.�RB�g�bRY�m�N�~0�zI�ҊC��!�6����	b�c��%�Oڋ&���s�=%�T	튛�b��T�+�m�2�&mE�T�
#u߂��	&%�>�����#?���	���%�^	�
��=�}��DL�6$�i�>����p�OPIo��Yy��N�
�|���=
�\�w�l)��1����J�Y���"�N��VmE�Vݶ4A'Rwg�0�85����'�E\z%�X"��>������)�:�M+�7�ߧ>�}CI����;��C�(>�]p�3
<��=.�b��|n9���+��G���>{�,�u8m��v��}!�'hE�"��	z@��G4����}F`�bz�w~��l�h�*�I+�?���d���v�S��"���#���˲�"�r>�9T���y��R�|���ݱ�F<]��7
�mҋK�e�I��;O`�`c���گ����vٕ0~,<�*����*-�-G���`��\�.��t��`=RT���B�s�"�I��*��O��K�\8yhn��e0l��9��p�z-ؽzФ-<�ۤ�,Qj^���0x����4Aض	�|�2�n��[p��!?��8h^LzϞ�
h��+��ߧ��8ԁ8Chԁ�14y���
"1�ꂲ���=�5��Ҡp|j�b&K�z����̷I[2��)_�y��'��@súw��!�|.��!8�Hx�9H$!��4��b{�M���L02�@�Vj'�(I��+������$44��S�)���R�<J*�_MJ�}���d���J�Dl�x�+���G��I���� ����˔�!��KD��~v�a�A�}'el�K�BD��w����qظjw�n�������H&$�S��zb�r�Q[�f���&myȴ�E�O`�&M`"�c@܄1d�^����]��@��MD�oA���L22�H�2U'�9it�^!�MA�vX�^���PQm���TJ,�đ��q�����+ӒE@=

E	��j+R�χ3φI#ax��hX�R"1I�l��_Fl~�2g�a����ٵ�xXA4��:��*Ma�l_�����,ɷӻC���W��AU��(ܬ"i��F���l `�vC<�x)�ň�ۡ����g>�:��O�ш�\�*����M�����a���ys�Hx0iG$H*�b�M��a��;�$dtr�O�n�nKwA�
�R��hң�����ʨ�wҀ�j�@YjlE�j�\�|�	�m��:xm-�}P�a�.�L�1�L�aR�F�G��6Y�@�7��$�#��с-��y�*a�;���a�`$M�4�z��|�l�8k�e���Gi��Bg,�LZIs���~&:��:m	�.�&�T��D�I[>p��i�C�y�ܰ�fb�Д�1L=��m��tGΠ�m�g<BC�"��1َ�
�ցf>da�@e�.
�4J��”�"�]��3K��q���a�U�T�h�V|��$�T��ր��DDC��9n����8l�:*�hĺ�$����Ya>d�*�P�\_���d����o���K}m��J�T�ؕ��<C������1�!W��a�|����uж���)޾F��";̇,��L�]sk	��[
�Qĺ
��i�"�n����|'i+B��:�J��]I��$�u#�vuҶ��d��Y���1�	n�u'��$]�tw(��1h�83�&mE�4�s�Zh���%�d2B�f���w�@R��VZ�X��D��H�� ��jȥw�$��N�x�	k[D�8������'�l˘��G��?k��7�?IEND�B`�images/icons/arrow_refresh.png000064400000001255150755146460012522 0ustar00�PNG


IHDR�agAMA��7��tEXtSoftwareAdobe ImageReadyq�e<?IDAT8ˍ��K�a��3bvВB��B�9�d-Od�6_�t䡁e�Ś��ܡ�IͱaIF%��h�e��
�a�#��;�
]8�a�xo���<���+ �ߺ�q�eZ!;��"�4U/(�/Dv���]�toUq�|��͸U�!\��vt<S��OT�w�C��湤����ADWB������1��,h
5���r�H��C����-޳l��iL���iΏ�77|Y;\i֔��q�]����"�l0z�a�\�
�95����86pM>���P������ָ#i)8:S.�ά��j�[/Uv��loL���3
k��&����~j�����~M��L�GJf��2Bʔ���̘�Zf�=�Ef�Qd֟�wLۅȌ#��f�d�&ʝ����u����lՓ�;���xLH֌	É��ȠȠ��~��+��:�#h�h�#5=&�N.e���hiL�(B:�* ���Ƒ�C<!�	��G�[	���{1�u•�bxi=�:���8���	�\t(�����#!E�����)r���l�a��,�2h���TJHK�������(IEND�B`�images/icons/bullet_yellow.png000064400000000437150755146460012535 0ustar00�PNG


IHDR�agAMA��7��tEXtSoftwareAdobe ImageReadyq�e<�IDAT8���=Aq��9���d1�����d�(Y�n]q��n�<����p��	�V�YuN$�K�>,z��
]�oCvUX&��V����ytL��2�k�уF'��m��<�p�������m��U㼬����C
⏅��y��b �$
*�*�FE����2�R������Q�(�_θ7iIEND�B`�images/logos/shield-care.svg000064400000003533150755146460012056 0ustar00<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 143.38 112.68"><defs><style>.cls-1{fill:#fff;}.cls-2{fill:#54bf9c;}.cls-3{fill:#29957c;}</style></defs><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><path class="cls-1" d="M66.29,112.51h0Z"/><path class="cls-2" d="M71.69,21.67h0L79.12,38l.07.16H76.66v.06a4.53,4.53,0,0,1,.08.74,4.71,4.71,0,0,1-.56,2.21,5.63,5.63,0,0,1-.58.86s-.33,3.57-.3,10.2v0c0,4,.24,9.84.71,16.27A189.53,189.53,0,0,1,97.65,71V43.3H95.72l5-10.9,4.76,10.94H103.5V72.15a174.7,174.7,0,0,1,18.81,5V53h-1.94l5-10.9L130.09,53h-1.94V79.18a133.1,133.1,0,0,1,14.21,6.17,209.06,209.06,0,0,0-3.89-65.23C103.13,19,71.69.17,71.69.17Z"/><path class="cls-2" d="M128.15,85.37v27.31h8.26c1.17-3.79,2.18-7.68,3-11.48h0A94.27,94.27,0,0,0,141.52,92a.55.55,0,0,0,0-.12c0-.15.05-.28.07-.42A118.16,118.16,0,0,0,128.15,85.37Z"/><path class="cls-2" d="M103.5,78.05v34.63h18.81V83.25A172.28,172.28,0,0,0,103.5,78.05Z"/><path class="cls-2" d="M97.65,112.68V76.88a178.66,178.66,0,0,0-21.17-2.56v.08c0,.15.49,4,.57,4.61,1.18,8.84,3.58,22.78,6,33.65H83v0H97.65Z"/><path class="cls-3" d="M60.29,112.49c2.45-10.86,4.84-24.81,6-33.65h0c.07-.64.55-4.46.57-4.6v-.09a182.08,182.08,0,0,0-21.18,2.56v35.8H60.41v0Z"/><path class="cls-3" d="M15.22,79V52.86H13.28l4.77-10.93,5,10.9H21.07V77a174.48,174.48,0,0,1,18.8-5V43.16H37.94L42.7,32.23l5,10.9H45.72V70.87a187.14,187.14,0,0,1,21.65-2.49c.46-6.42.68-12.3.7-16.27v0c0-6.64-.29-10.21-.29-10.21A4.19,4.19,0,0,1,67.2,41a4.45,4.45,0,0,1-.49-3s0,0,0-.06H64.18l.07-.16,7.44-16.33h0V0S40.25,18.81,4.9,20A209.24,209.24,0,0,0,1,85.18,131.08,131.08,0,0,1,15.22,79Z"/><path class="cls-3" d="M21.07,83.05v29.46h18.8V77.87A171.44,171.44,0,0,0,21.07,83.05Z"/><path class="cls-3" d="M1.77,91.27h0c0,.14.05.28.07.42l0,.13h0A94.27,94.27,0,0,0,3.94,101h0c.85,3.8,1.86,7.7,3,11.48h8.26V85.18A118.26,118.26,0,0,0,1.77,91.27Z"/></g></g></svg>images/logos/shield-white.svg000064400000003430150755146460012260 0ustar00<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 143.38 112.68"><defs><style>.cls-1{fill:#FFFFFF;}</style></defs><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><path class="cls-1" d="M66.29,112.51h0Z"/><path class="cls-1" d="M128.15,85.37v27.31h8.26c1.17-3.79,2.18-7.68,3-11.48h0A94.27,94.27,0,0,0,141.52,92a.55.55,0,0,0,0-.12c0-.15.05-.28.07-.42A118.16,118.16,0,0,0,128.15,85.37Z"/><path class="cls-1" d="M103.5,78.05v34.63h18.81V83.25A172.28,172.28,0,0,0,103.5,78.05Z"/><path class="cls-1" d="M97.65,112.68V76.88a178.66,178.66,0,0,0-21.17-2.56v.08c0,.15.49,4,.57,4.61,1.18,8.84,3.58,22.78,6,33.65H83v0H97.65Z"/><path class="cls-1" d="M60.29,112.49c2.45-10.86,4.84-24.81,6-33.65h0c.07-.64.55-4.46.57-4.6v-.09a182.08,182.08,0,0,0-21.18,2.56v35.8H60.41v0Z"/><path class="cls-1" d="M138.47,20.12C103.13,19,71.69.17,71.69.17V0S40.25,18.81,4.9,20A209.24,209.24,0,0,0,1,85.18,131.08,131.08,0,0,1,15.22,79V52.86H13.28l4.77-10.93,5,10.9H21.07V77a174.48,174.48,0,0,1,18.8-5V43.16H37.94L42.7,32.23l5,10.9H45.72V70.87a187.14,187.14,0,0,1,21.65-2.49c.46-6.42.68-12.3.7-16.27v0c0-6.64-.29-10.21-.29-10.21A4.19,4.19,0,0,1,67.2,41a4.45,4.45,0,0,1-.49-3s0,0,0-.06H64.18l.07-.16,7.44-16.33h0v.16h0L79.12,38l.07.16H76.66v.06a4.53,4.53,0,0,1,.08.74,4.71,4.71,0,0,1-.56,2.21,5.63,5.63,0,0,1-.58.86s-.33,3.57-.3,10.2v0c0,4,.24,9.84.71,16.27A189.53,189.53,0,0,1,97.65,71V43.3H95.72l5-10.9,4.76,10.94H103.5V72.15a174.7,174.7,0,0,1,18.81,5V53h-1.94l5-10.9L130.09,53h-1.94V79.18a133.1,133.1,0,0,1,14.21,6.17A209.06,209.06,0,0,0,138.47,20.12Z"/><path class="cls-1" d="M21.07,83.05v29.46h18.8V77.87A171.44,171.44,0,0,0,21.07,83.05Z"/><path class="cls-1" d="M1.77,91.27h0c0,.14.05.28.07.42l0,.13h0A94.27,94.27,0,0,0,3.94,101h0c.85,3.8,1.86,7.7,3,11.48h8.26V85.18A118.26,118.26,0,0,0,1.77,91.27Z"/></g></g></svg>
images/logos/shield-premium.svg000064400000003533150755146460012622 0ustar00<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 143.38 112.68"><defs><style>.cls-1{fill:#fff;}.cls-2{fill:#51bfcf;}.cls-3{fill:#137d8e;}</style></defs><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><path class="cls-1" d="M66.29,112.51h0Z"/><path class="cls-2" d="M71.69,21.67h0L79.12,38l.07.16H76.66v.06a4.53,4.53,0,0,1,.08.74,4.71,4.71,0,0,1-.56,2.21,5.63,5.63,0,0,1-.58.86s-.33,3.57-.3,10.2v0c0,4,.24,9.84.71,16.27A189.53,189.53,0,0,1,97.65,71V43.3H95.72l5-10.9,4.76,10.94H103.5V72.15a174.7,174.7,0,0,1,18.81,5V53h-1.94l5-10.9L130.09,53h-1.94V79.18a133.1,133.1,0,0,1,14.21,6.17,209.06,209.06,0,0,0-3.89-65.23C103.13,19,71.69.17,71.69.17Z"/><path class="cls-2" d="M128.15,85.37v27.31h8.26c1.17-3.79,2.18-7.68,3-11.48h0A94.27,94.27,0,0,0,141.52,92a.55.55,0,0,0,0-.12c0-.15.05-.28.07-.42A118.16,118.16,0,0,0,128.15,85.37Z"/><path class="cls-2" d="M103.5,78.05v34.63h18.81V83.25A172.28,172.28,0,0,0,103.5,78.05Z"/><path class="cls-2" d="M97.65,112.68V76.88a178.66,178.66,0,0,0-21.17-2.56v.08c0,.15.49,4,.57,4.61,1.18,8.84,3.58,22.78,6,33.65H83v0H97.65Z"/><path class="cls-3" d="M60.29,112.49c2.45-10.86,4.84-24.81,6-33.65h0c.07-.64.55-4.46.57-4.6v-.09a182.08,182.08,0,0,0-21.18,2.56v35.8H60.41v0Z"/><path class="cls-3" d="M15.22,79V52.86H13.28l4.77-10.93,5,10.9H21.07V77a174.48,174.48,0,0,1,18.8-5V43.16H37.94L42.7,32.23l5,10.9H45.72V70.87a187.14,187.14,0,0,1,21.65-2.49c.46-6.42.68-12.3.7-16.27v0c0-6.64-.29-10.21-.29-10.21A4.19,4.19,0,0,1,67.2,41a4.45,4.45,0,0,1-.49-3s0,0,0-.06H64.18l.07-.16,7.44-16.33h0V0S40.25,18.81,4.9,20A209.24,209.24,0,0,0,1,85.18,131.08,131.08,0,0,1,15.22,79Z"/><path class="cls-3" d="M21.07,83.05v29.46h18.8V77.87A171.44,171.44,0,0,0,21.07,83.05Z"/><path class="cls-3" d="M1.77,91.27h0c0,.14.05.28.07.42l0,.13h0A94.27,94.27,0,0,0,3.94,101h0c.85,3.8,1.86,7.7,3,11.48h8.26V85.18A118.26,118.26,0,0,0,1.77,91.27Z"/></g></g></svg>images/logos/shield-free.svg000064400000003427150755146460012067 0ustar00<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 143.38 112.68"><defs><style>.cls-1{fill:#1b719e;}</style></defs><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><path class="cls-1" d="M66.29,112.51h0Z"/><path class="cls-1" d="M128.15,85.37v27.31h8.26c1.17-3.79,2.18-7.68,3-11.48h0A94.27,94.27,0,0,0,141.52,92a.55.55,0,0,0,0-.12c0-.15.05-.28.07-.42A118.16,118.16,0,0,0,128.15,85.37Z"/><path class="cls-1" d="M103.5,78.05v34.63h18.81V83.25A172.28,172.28,0,0,0,103.5,78.05Z"/><path class="cls-1" d="M97.65,112.68V76.88a178.66,178.66,0,0,0-21.17-2.56v.08c0,.15.49,4,.57,4.61,1.18,8.84,3.58,22.78,6,33.65H83v0H97.65Z"/><path class="cls-1" d="M60.29,112.49c2.45-10.86,4.84-24.81,6-33.65h0c.07-.64.55-4.46.57-4.6v-.09a182.08,182.08,0,0,0-21.18,2.56v35.8H60.41v0Z"/><path class="cls-1" d="M138.47,20.12C103.13,19,71.69.17,71.69.17V0S40.25,18.81,4.9,20A209.24,209.24,0,0,0,1,85.18,131.08,131.08,0,0,1,15.22,79V52.86H13.28l4.77-10.93,5,10.9H21.07V77a174.48,174.48,0,0,1,18.8-5V43.16H37.94L42.7,32.23l5,10.9H45.72V70.87a187.14,187.14,0,0,1,21.65-2.49c.46-6.42.68-12.3.7-16.27v0c0-6.64-.29-10.21-.29-10.21A4.19,4.19,0,0,1,67.2,41a4.45,4.45,0,0,1-.49-3s0,0,0-.06H64.18l.07-.16,7.44-16.33h0v.16h0L79.12,38l.07.16H76.66v.06a4.53,4.53,0,0,1,.08.74,4.71,4.71,0,0,1-.56,2.21,5.63,5.63,0,0,1-.58.86s-.33,3.57-.3,10.2v0c0,4,.24,9.84.71,16.27A189.53,189.53,0,0,1,97.65,71V43.3H95.72l5-10.9,4.76,10.94H103.5V72.15a174.7,174.7,0,0,1,18.81,5V53h-1.94l5-10.9L130.09,53h-1.94V79.18a133.1,133.1,0,0,1,14.21,6.17A209.06,209.06,0,0,0,138.47,20.12Z"/><path class="cls-1" d="M21.07,83.05v29.46h18.8V77.87A171.44,171.44,0,0,0,21.07,83.05Z"/><path class="cls-1" d="M1.77,91.27h0c0,.14.05.28.07.42l0,.13h0A94.27,94.27,0,0,0,3.94,101h0c.85,3.8,1.86,7.7,3,11.48h8.26V85.18A118.26,118.26,0,0,0,1.77,91.27Z"/></g></g></svg>images/logos/shield-response.svg000064400000003533150755146460013002 0ustar00<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 143.38 112.68"><defs><style>.cls-1{fill:#fff;}.cls-2{fill:#928dc4;}.cls-3{fill:#6453a3;}</style></defs><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><path class="cls-1" d="M66.29,112.51h0Z"/><path class="cls-2" d="M71.69,21.67h0L79.12,38l.07.16H76.66v.06a4.53,4.53,0,0,1,.08.74,4.71,4.71,0,0,1-.56,2.21,5.63,5.63,0,0,1-.58.86s-.33,3.57-.3,10.2v0c0,4,.24,9.84.71,16.27A189.53,189.53,0,0,1,97.65,71V43.3H95.72l5-10.9,4.76,10.94H103.5V72.15a174.7,174.7,0,0,1,18.81,5V53h-1.94l5-10.9L130.09,53h-1.94V79.18a133.1,133.1,0,0,1,14.21,6.17,209.06,209.06,0,0,0-3.89-65.23C103.13,19,71.69.17,71.69.17Z"/><path class="cls-2" d="M128.15,85.37v27.31h8.26c1.17-3.79,2.18-7.68,3-11.48h0A94.27,94.27,0,0,0,141.52,92a.55.55,0,0,0,0-.12c0-.15.05-.28.07-.42A118.16,118.16,0,0,0,128.15,85.37Z"/><path class="cls-2" d="M103.5,78.05v34.63h18.81V83.25A172.28,172.28,0,0,0,103.5,78.05Z"/><path class="cls-2" d="M97.65,112.68V76.88a178.66,178.66,0,0,0-21.17-2.56v.08c0,.15.49,4,.57,4.61,1.18,8.84,3.58,22.78,6,33.65H83v0H97.65Z"/><path class="cls-3" d="M60.29,112.49c2.45-10.86,4.84-24.81,6-33.65h0c.07-.64.55-4.46.57-4.6v-.09a182.08,182.08,0,0,0-21.18,2.56v35.8H60.41v0Z"/><path class="cls-3" d="M15.22,79V52.86H13.28l4.77-10.93,5,10.9H21.07V77a174.48,174.48,0,0,1,18.8-5V43.16H37.94L42.7,32.23l5,10.9H45.72V70.87a187.14,187.14,0,0,1,21.65-2.49c.46-6.42.68-12.3.7-16.27v0c0-6.64-.29-10.21-.29-10.21A4.19,4.19,0,0,1,67.2,41a4.45,4.45,0,0,1-.49-3s0,0,0-.06H64.18l.07-.16,7.44-16.33h0V0S40.25,18.81,4.9,20A209.24,209.24,0,0,0,1,85.18,131.08,131.08,0,0,1,15.22,79Z"/><path class="cls-3" d="M21.07,83.05v29.46h18.8V77.87A171.44,171.44,0,0,0,21.07,83.05Z"/><path class="cls-3" d="M1.77,91.27h0c0,.14.05.28.07.42l0,.13h0A94.27,94.27,0,0,0,3.94,101h0c.85,3.8,1.86,7.7,3,11.48h8.26V85.18A118.26,118.26,0,0,0,1.77,91.27Z"/></g></g></svg>images/wordfence-logo.svg000064400000005776150755146460011500 0ustar00<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;">
    <g>
        <path d="M16,8.59L17.59,12.08L17.6,12.11L17.06,12.11L17.06,12.12C17.07,12.17 17.08,12.22 17.08,12.28C17.08,12.45 17.04,12.61 16.96,12.75C16.93,12.82 16.88,12.88 16.84,12.93C16.84,12.93 16.77,13.69 16.78,15.11C16.78,15.96 16.83,17.21 16.93,18.58C18.59,18.67 20.13,18.86 21.55,19.11L21.55,13.19L21.14,13.19L22.2,10.87L23.22,13.2L22.81,13.2L22.81,19.35C24.32,19.66 25.66,20.04 26.82,20.42L26.82,15.27L26.41,15.27L27.47,12.95L28.49,15.28L28.08,15.28L28.08,20.86C29.45,21.37 30.48,21.85 31.11,22.17C31.9,14.72 30.28,8.26 30.28,8.26C22.71,8.01 16,4 16,4L16,8.59Z" style="fill:rgb(33,141,193);fill-rule:nonzero;"/>
        <path d="M28.04,22.18L28.04,28L29.81,28C30.06,27.19 30.27,26.36 30.45,25.55C30.68,24.74 30.81,24.07 30.9,23.59C30.9,23.59 30.9,23.57 30.9,23.56C30.91,23.53 30.91,23.5 30.91,23.47C30.47,23.23 29.49,22.73 28.04,22.18Z" style="fill:rgb(33,141,193);fill-rule:nonzero;"/>
        <path d="M22.79,20.61L22.79,28L26.8,28L26.8,21.72C25.66,21.33 24.31,20.94 22.79,20.61Z" style="fill:rgb(33,141,193);fill-rule:nonzero;"/>
        <path d="M21.54,28L21.54,20.36C20.16,20.11 18.64,19.91 17.02,19.81C17.02,19.82 17.02,19.82 17.02,19.83C17.02,19.86 17.13,20.68 17.14,20.81C17.39,22.7 17.9,25.67 18.43,27.99L18.4,27.99L21.54,27.99L21.54,28Z" style="fill:rgb(33,141,193);fill-rule:nonzero;"/>
        <path d="M13.57,28C14.09,25.68 14.6,22.71 14.86,20.82L14.85,20.82L14.86,20.82C14.88,20.68 14.98,19.87 14.98,19.84C14.98,19.83 14.98,19.83 14.98,19.82C13.35,19.92 11.83,20.12 10.46,20.37L10.46,28L13.59,28L13.57,28Z" style="fill:rgb(33,141,193);fill-rule:nonzero;"/>
        <path d="M3.96,20.86L3.96,15.28L3.55,15.28L4.57,12.95L5.63,15.27L5.22,15.27L5.22,20.42C6.38,20.04 7.72,19.67 9.23,19.35L9.23,13.2L8.82,13.2L9.84,10.87L10.9,13.19L10.49,13.19L10.49,19.11C11.91,18.86 13.45,18.67 15.11,18.58C15.21,17.21 15.26,15.96 15.26,15.11C15.27,13.7 15.2,12.93 15.2,12.93C15.15,12.87 15.11,12.81 15.08,12.75C15,12.61 14.96,12.45 14.96,12.28C14.96,12.23 14.97,12.17 14.98,12.12L14.98,12.11L14.44,12.11L14.45,12.08L16,8.59L16,4C16,4 9.29,8.01 1.75,8.26C1.75,8.26 0.13,14.72 0.92,22.17C1.56,21.85 2.58,21.36 3.96,20.86Z" style="fill:rgb(33,141,193);fill-rule:nonzero;"/>
        <path d="M5.2,21.72L5.2,28L9.21,28L9.21,20.61C7.64,20.95 6.28,21.35 5.2,21.72Z" style="fill:rgb(33,141,193);fill-rule:nonzero;"/>
        <path d="M1.09,23.47C1.08,23.47 1.08,23.47 1.09,23.47C1.09,23.5 1.1,23.53 1.1,23.56C1.1,23.57 1.1,23.58 1.1,23.59C1.18,24.07 1.32,24.74 1.55,25.55C1.73,26.36 1.95,27.19 2.19,28L3.95,28L3.95,22.17C2.51,22.73 1.53,23.23 1.09,23.47Z" style="fill:rgb(33,141,193);fill-rule:nonzero;"/>
    </g>
</svg>
images/sort_asc_disabled.gif000064400000002112150755146460012155 0ustar00GIF89a������!�XMP DataXMP<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c061 64.140949, 2010/12/07-10:57:01        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop CS5.1 Windows" xmpMM:InstanceID="xmp.iid:76C2E5B4D27811E09370B3CDE6A9B662" xmpMM:DocumentID="xmp.did:76C2E5B5D27811E09370B3CDE6A9B662"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:76C2E5B2D27811E09370B3CDE6A9B662" stRef:documentID="xmp.did:76C2E5B3D27811E09370B3CDE6A9B662"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>�������������������������������������������������������������������������������������������������������������������������������~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! 

	!�,L`�];images/sort_desc.gif000064400000000064150755146460010502 0ustar00GIF89a�3���!�,�-'mages/sort_asc.gif000064400000000064150755146460010332 0ustar00GIF89a�3���!�,�b�];images/support.svg000064400000001241150755146460010261 0ustar00<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 409.6 409.6"><title>support</title><path d="M204.8,0C91.69,0,0,91.69,0,204.8S91.69,409.6,204.8,409.6s204.8-91.7,204.8-204.8S317.91,0,204.8,0ZM128,204.8a76.8,76.8,0,1,1,76.8,76.8A76.8,76.8,0,0,1,128,204.8Zm242.39,68.59-71-29.4a102.71,102.71,0,0,0,0-78.39l48.85-20.23,22.12-9.16a179.65,179.65,0,0,1,0,137.18Zm-97-234.18-29.39,71a102.65,102.65,0,0,0-78.39,0L151.82,76.9,136.21,39.21a179.7,179.7,0,0,1,137.18,0Zm-234.18,97L76.9,151.82l33.28,13.78a102.65,102.65,0,0,0,0,78.39l-71,29.4a179.7,179.7,0,0,1,0-137.18Zm97,234.18,9.16-22.12,20.23-48.85a102.68,102.68,0,0,0,78.39,0l29.39,71a179.65,179.65,0,0,1-137.18,0Zm0,0"/></svg>images/wf-horizontal.svg000064400000031643150755146460011361 0ustar00<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 23.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
	 viewBox="0 0 2230 399" style="enable-background:new 0 0 2230 399;" xml:space="preserve">
<style type="text/css">
	.st0{fill:#00719E;}
	.st1{fill:#2E2E2E;}
	.st2{fill:#FFFFFF;}
	.st3{fill:#218DC1;}
	.st4{fill:#1A719D;}
	.st5{fill:#2B2C2B;}
</style>
<g>
	<path d="M772.6,373.8l2.6-2.9c5.8,5.3,11.1,7.8,18.8,7.8c7.9,0,13.3-4.4,13.3-10.4v-0.2c0-5.6-2.9-8.8-14.9-11.2
		c-12.6-2.6-17.7-6.8-17.7-14.8V342c0-7.8,7.1-13.8,16.9-13.8c7.7,0,12.7,2.1,18,6.4l-2.5,3.1c-5-4.3-9.9-5.9-15.7-5.9
		c-7.7,0-12.8,4.4-12.8,9.9v0.2c0,5.6,2.9,8.9,15.3,11.5c12.2,2.5,17.3,6.8,17.3,14.5v0.2c0,8.5-7.3,14.3-17.4,14.3
		C785.3,382.3,778.9,379.5,772.6,373.8"/>
	<path d="M853,360.6c-0.5-7.7-5-14.9-13.7-14.9c-7.6,0-13.4,6.4-14.1,14.9H853z M821.3,362.4v-0.2c0-11.1,7.8-20,18.2-20
		c10.7,0,17.6,8.7,17.6,20c0,0.7,0,0.9-0.1,1.5h-31.7c0.7,9.5,7.5,15.1,15,15.1c5.9,0,10-2.6,13.1-6l2.6,2.3
		c-3.9,4.2-8.5,7.2-15.8,7.2C830,382.4,821.3,374.4,821.3,362.4"/>
	<path d="M865.8,362.5v-0.2c0-10.7,8.6-20,19.5-20c7.2,0,11.7,3.3,15.3,7.1l-2.6,2.7c-3.3-3.4-7.1-6.3-12.8-6.3
		c-8.7,0-15.5,7.3-15.5,16.4v0.2c0,9.2,7,16.6,15.8,16.6c5.4,0,9.6-2.8,12.8-6.4l2.6,2.3c-3.9,4.4-8.6,7.6-15.6,7.6
		C874.3,382.4,865.8,373.2,865.8,362.5"/>
	<path d="M911.3,366.6v-23.4h3.7V366c0,7.9,4.4,13.1,12.2,13.1c7.5,0,13.3-5.7,13.3-13.7v-22.1h3.7v38.3h-3.7v-7.1
		c-2.6,4.5-6.8,8-13.8,8C916.9,382.4,911.3,375.8,911.3,366.6"/>
	<path d="M958.8,343.2h3.7v10.9c3-6.8,9.4-11.8,17-11.5v4.1h-0.4c-8.9,0-16.6,6.7-16.6,19.1v15.7h-3.7V343.2z"/>
	<path d="M990.1,343.2h3.7v38.3h-3.7V343.2z M989.6,328.2h4.6v5h-4.6V328.2z"/>
	<path d="M1009,343.2h3.7v7.1c2.6-4.5,6.8-8,13.8-8c9.7,0,15.3,6.6,15.3,15.8v23.4h-3.7v-22.7c0-7.9-4.4-13.1-12.2-13.1
		c-7.5,0-13.3,5.7-13.3,13.7v22.1h-3.7V343.2z"/>
	<path d="M1087.9,360.6v-0.2c0-8.9-7.9-14.6-15.8-14.6c-8,0-14.8,5.6-14.8,14.5v0.2c0,8.6,6.9,14.6,14.8,14.6
		C1080,375.1,1087.9,369.3,1087.9,360.6 M1055,387.8l2.2-3c4.6,3.5,9.8,5.4,15.5,5.4c8.8,0,15-5,15-14.9v-5.6
		c-3.3,4.7-8.4,8.9-16,8.9c-9.2,0-18.4-7.1-18.4-18v-0.1c0-11,9.2-18.2,18.4-18.2c7.7,0,12.8,4.1,16,8.6v-7.7h3.7v32.3
		c0,5.6-1.8,9.9-4.9,13c-3.3,3.3-8.3,5.1-13.9,5.1C1066.2,393.7,1060.2,391.7,1055,387.8"/>
	<path d="M1126.3,392.1l1.3-3.2c2,1,3.7,1.4,6.5,1.4c4,0,6.6-2.3,9.5-9l-18.4-38.1h4.3l15.9,34.2l13.8-34.2h4.1l-16.6,39.6
		c-3.4,8-7.3,10.9-12.8,10.9C1131,393.7,1128.9,393.2,1126.3,392.1"/>
	<path d="M1204.6,362.5v-0.2c0-9.2-6.9-16.6-15.8-16.6c-9.1,0-15.6,7.4-15.6,16.4v0.2c0,9.2,6.9,16.6,15.8,16.6
		C1198.1,379,1204.6,371.5,1204.6,362.5 M1169.3,362.5v-0.2c0-10.7,8.3-20,19.7-20c11.3,0,19.6,9.2,19.6,19.9v0.2
		c0,10.7-8.3,20-19.7,20C1177.5,382.4,1169.3,373.2,1169.3,362.5"/>
	<path d="M1219.9,366.6v-23.4h3.7V366c0,7.9,4.4,13.1,12.2,13.1c7.5,0,13.3-5.7,13.3-13.7v-22.1h3.7v38.3h-3.7v-7.1
		c-2.6,4.5-6.8,8-13.8,8C1225.5,382.4,1219.9,375.8,1219.9,366.6"/>
	<path d="M1267.4,343.2h3.7v10.9c3-6.8,9.4-11.8,17-11.5v4.1h-0.4c-8.9,0-16.6,6.7-16.6,19.1v15.7h-3.7V343.2z"/>
	<polygon class="st0" points="1317.2,329 1327.1,329 1339.7,367.9 1352.6,328.8 1360.4,328.8 1373.3,367.9 1385.8,329 1395.5,329 
		1377.2,381.9 1369.3,381.9 1356.3,344.1 1343.4,381.9 1335.5,381.9 	"/>
	<path class="st0" d="M1430.8,361.9v-0.2c0-7-5-12.8-12.2-12.8c-7.3,0-11.9,5.7-11.9,12.6v0.2c0,6.9,5,12.8,12.1,12.8
		C1426.1,374.5,1430.8,368.7,1430.8,361.9 M1397.6,361.9v-0.2c0-11.3,9-20.7,21.2-20.7c12.2,0,21.1,9.2,21.1,20.6v0.2
		c0,11.3-9,20.6-21.2,20.6C1406.5,382.4,1397.6,373.2,1397.6,361.9"/>
	<path class="st0" d="M1449.8,341.9h9.1v8.9c2.5-5.9,7.1-10,14-9.7v9.6h-0.5c-8,0-13.5,5.2-13.5,15.7v15.1h-9.1V341.9z"/>
	<path class="st0" d="M1510.5,361.8v-0.2c0-7.7-5.4-12.7-11.5-12.7c-6.2,0-11.4,4.8-11.4,12.7v0.2c0,7.7,5.3,12.7,11.4,12.7
		C1505.1,374.4,1510.5,369.3,1510.5,361.8 M1478.4,361.8v-0.2c0-13.1,8.9-20.6,18.4-20.6c6.5,0,10.7,3.3,13.5,7v-21.3h9.1v54.8h-9.1
		v-6.6c-2.9,4.1-7.1,7.4-13.5,7.4C1487.5,382.3,1478.4,374.9,1478.4,361.8"/>
	<path class="st0" d="M1552.5,356.3c7,0,11.3-3.9,11.3-9.4v-0.1c0-6.2-4.4-9.4-11.3-9.4h-10.7v18.9H1552.5z M1532.5,329h20.7
		c12.2,0,20,7,20,17.6v0.2c0,11.8-9.5,17.9-21,17.9h-10.4v16.9h-9.2V329z"/>
	<path class="st0" d="M1582.3,341.9h9.1v8.9c2.5-5.9,7.1-10,14-9.7v9.6h-0.5c-8,0-13.5,5.2-13.5,15.7v15.1h-9.1V341.9z"/>
	<path class="st0" d="M1639.9,358.9c-0.6-5.9-4.1-10.4-10.1-10.4c-5.6,0-9.5,4.3-10.3,10.4H1639.9z M1610.6,361.8v-0.2
		c0-11.3,8-20.6,19.4-20.6c12.6,0,19,9.9,19,21.3c0,0.8-0.1,1.7-0.2,2.6h-29.1c1,6.5,5.6,10.1,11.4,10.1c4.4,0,7.6-1.7,10.7-4.7
		l5.3,4.7c-3.8,4.5-8.9,7.4-16.2,7.4C1619.4,382.4,1610.6,374.1,1610.6,361.8"/>
	<path class="st0" d="M1655.6,376.3l4.1-6.2c4.3,3.2,8.9,4.9,13,4.9c3.9,0,6.2-1.7,6.2-4.3v-0.2c0-3.1-4.2-4.1-8.9-5.6
		c-5.9-1.7-12.4-4.1-12.4-11.6v-0.2c0-7.5,6.2-12.1,14.1-12.1c5,0,10.4,1.7,14.6,4.5l-3.6,6.5c-3.8-2.3-7.9-3.8-11.2-3.8
		c-3.5,0-5.6,1.6-5.6,4v0.2c0,2.9,4.3,4.1,8.9,5.6c5.8,1.8,12.3,4.4,12.3,11.6v0.2c0,8.3-6.5,12.5-14.7,12.5
		C1666.8,382.3,1660.5,380.2,1655.6,376.3"/>
	<path class="st0" d="M1693.1,376.3l4.1-6.2c4.3,3.2,8.9,4.9,13,4.9c3.9,0,6.2-1.7,6.2-4.3v-0.2c0-3.1-4.2-4.1-8.9-5.6
		c-5.9-1.7-12.4-4.1-12.4-11.6v-0.2c0-7.5,6.2-12.1,14.1-12.1c5,0,10.4,1.7,14.6,4.5l-3.6,6.5c-3.8-2.3-7.9-3.8-11.2-3.8
		c-3.5,0-5.6,1.6-5.6,4v0.2c0,2.9,4.3,4.1,8.9,5.6c5.8,1.8,12.3,4.4,12.3,11.6v0.2c0,8.3-6.5,12.5-14.7,12.5
		C1704.3,382.3,1698.1,380.2,1693.1,376.3"/>
	<polygon points="1755.8,343.2 1760,343.2 1771.5,376.9 1783.1,343.1 1786,343.1 1797.6,376.9 1809.1,343.2 1813.1,343.2 
		1799.1,381.8 1795.9,381.8 1784.5,349 1773,381.8 1769.9,381.8 	"/>
	<path d="M1851.7,360.6c-0.5-7.7-5-14.9-13.7-14.9c-7.6,0-13.4,6.4-14.1,14.9H1851.7z M1820,362.4v-0.2c0-11.1,7.8-20,18.2-20
		c10.7,0,17.6,8.7,17.6,20c0,0.7,0,0.9-0.1,1.5h-31.7c0.7,9.5,7.5,15.1,15,15.1c5.9,0,10-2.6,13.1-6l2.6,2.3
		c-3.9,4.2-8.5,7.2-15.8,7.2C1828.7,382.4,1820,374.4,1820,362.4"/>
	<path d="M1901.3,362.5v-0.2c0-10.1-7-16.5-15-16.5c-8,0-15.6,6.7-15.6,16.4v0.2c0,9.8,7.7,16.4,15.6,16.4
		C1894.6,378.9,1901.3,372.8,1901.3,362.5 M1870.9,373.2v8.3h-3.7v-54.8h3.7v25.1c3.3-5,8.2-9.5,15.8-9.5c9.2,0,18.6,7.4,18.6,19.9
		v0.2c0,12.5-9.4,20-18.6,20C1879,382.4,1874,378.1,1870.9,373.2"/>
	<path d="M1914.2,376.7l2.2-2.9c4.2,3.2,8.9,5,13.7,5c5.2,0,9.2-2.9,9.2-7.3v-0.2c0-4.5-4.8-6.2-10.1-7.7
		c-6.2-1.8-13.1-3.7-13.1-10.5v-0.2c0-6.2,5.2-10.6,12.6-10.6c4.6,0,9.8,1.7,13.6,4.2l-2,3.1c-3.5-2.3-7.7-3.8-11.8-3.8
		c-5.3,0-8.7,2.9-8.7,6.7v0.2c0,4.3,5.2,5.9,10.7,7.4c6.2,1.7,12.6,4,12.6,10.7v0.2c0,6.8-5.9,11.2-13.2,11.2
		C1924.3,382.3,1918.2,380,1914.2,376.7"/>
	<path d="M1956,343.2h3.7v38.3h-3.7V343.2z M1955.6,328.2h4.6v5h-4.6V328.2z"/>
	<path d="M1977,371.7v-25.1h-5.6v-3.4h5.6V331h3.7v12.2h13.4v3.4h-13.4v24.7c0,5.5,3.2,7.4,7.7,7.4c1.9,0,3.5-0.4,5.6-1.4v3.5
		c-2,0.9-3.8,1.4-6.2,1.4C1981.8,382.2,1977,379,1977,371.7"/>
	<path d="M2033.7,360.6c-0.5-7.7-5-14.9-13.7-14.9c-7.6,0-13.4,6.4-14.1,14.9H2033.7z M2001.9,362.4v-0.2c0-11.1,7.8-20,18.2-20
		c10.7,0,17.6,8.7,17.6,20c0,0.7,0,0.9-0.1,1.5h-31.7c0.7,9.5,7.5,15.1,15,15.1c5.9,0,10-2.6,13.1-6l2.6,2.3
		c-3.9,4.2-8.5,7.2-15.8,7.2C2010.7,382.4,2001.9,374.4,2001.9,362.4"/>
	<path class="st1" d="M2141.5,196.9c-1.1-8.3-4.4-15.4-9.8-21.3c-5.4-5.9-12.8-8.8-22.2-8.8c-17.5,0-27.7,10-30.6,30.1H2141.5z
		 M2150.6,243.3l37.1,11.9c-15.5,24.4-39.8,36.6-72.9,36.6c-26.4,0-46.9-6.9-61.7-20.9c-14.8-13.9-22.2-32.2-22.2-54.8
		c0-23.1,7.6-42.3,22.9-57.8c15.2-15.4,34.6-23.2,58.2-23.2c17.1,0,31.9,4.3,44.3,13c12.5,8.6,21.1,19.4,25.9,32.3
		c4.8,12.9,7.3,27.2,7.3,43.1h-111.4c0.7,13.6,5,23.2,12.9,28.9c7.9,5.7,16.2,8.5,24.9,8.5C2127.4,260.9,2139,255,2150.6,243.3
		 M2006.5,138.8v60.7h-34c-7.7-16.7-19.8-25-36.3-25c-10.5,0-18.9,3.5-25.1,10.4c-6.2,7-9.3,16.2-9.3,27.9c0,14.1,3.3,24.5,9.9,31.3
		c6.6,6.7,14.7,10.1,24.2,10.1c7.6,0,14.8-2.2,21.6-6.6c6.8-4.4,12.2-10.2,16.4-17.4l37.1,16.3c-13.8,30.1-38,45.2-72.6,45.2
		c-26.1,0-46.8-7.1-62.3-21.3c-15.5-14.2-23.2-33.2-23.2-57c0-23.8,7.6-42.5,22.8-56.3c15.2-13.8,32.9-20.6,53.1-20.6
		c16.2,0,31.3,4.9,45.3,14.7v-12.4H2006.5z M1654.3,173.3v-34.4h70.6v13.9c14.4-10.8,29-16.2,43.9-16.2c30.2,0,45.3,19.3,45.3,57.8
		v59.6h22.6v34.4h-70.3v-90.5c0-8.1-1.1-13.7-3.3-16.7c-2.2-3-5.8-4.5-10.9-4.5c-8.9,0-17.9,3.2-27.2,9.7v67.5h23v34.4h-93.6v-34.4
		h22.9v-80.6H1654.3z M1584.4,196.9c-1.1-8.3-4.4-15.4-9.8-21.3c-5.4-5.9-12.8-8.8-22.2-8.8c-17.5,0-27.7,10-30.6,30.1H1584.4z
		 M1593.5,243.3l37.1,11.9c-15.5,24.4-39.8,36.6-72.9,36.6c-26.4,0-46.9-6.9-61.7-20.9c-14.8-13.9-22.2-32.2-22.2-54.8
		c0-23.1,7.6-42.3,22.9-57.8c15.2-15.4,34.6-23.2,58.2-23.2c17.1,0,31.9,4.3,44.3,13c12.5,8.6,21.1,19.4,25.9,32.3
		c4.8,12.9,7.3,27.2,7.3,43.1H1521c0.7,13.6,5,23.2,12.9,28.9c7.9,5.7,16.2,8.5,24.9,8.5C1570.3,260.9,1581.8,255,1593.5,243.3
		 M1452.5,253.9v34.4h-92.8v-34.4h21.6v-80.6h-20.1v-34.4h20.1v-13.7c0-15.8,4.9-28.9,14.6-39.5c9.7-10.6,24.2-15.8,43.5-15.8
		c23.4,0,40,7,49.9,21l-34.6,27c-3.1-10.7-7.5-16.1-13.3-16.1c-8.2,0-12.4,6.9-12.4,20.7v16.4h23.5v34.4H1429v80.6H1452.5z"/>
	<path class="st0" d="M1287.6,213.3c0-14.3-3.1-24.5-9.2-30.6c-6.1-6.1-13.1-9.1-20.9-9.1c-9.4,0-16.6,3.6-21.7,10.9
		c-5.1,7.3-7.6,16.8-7.6,28.7c0,11.2,2.5,20.7,7.6,28.3c5,7.7,12.4,11.5,21.9,11.5c7.9,0,14.9-3.1,20.9-9.3
		C1284.6,237.4,1287.6,227.3,1287.6,213.3 M1359.4,253.9v34.4h-72.3v-17.8c-13.3,13.3-27.7,20-43.3,20c-18.6,0-34.1-7.6-46.3-22.7
		c-12.3-15.1-18.4-33.5-18.4-55c0-21.8,6.3-40.2,18.8-55.2c12.6-15,27.9-22.5,46-22.5c17.4,0,31.8,6.8,43.1,20.3v-47.5h-23.3V73.5
		h71.1v180.4H1359.4z M1139.2,253.9v34.4H1034v-34.4h27.6v-80.6h-25.9v-34.4h69.7v38c2.7-10.9,8.8-20.4,18.3-28.3
		c9.5-8,20.8-12,33.8-12c2.2,0,4.7,0.1,7.7,0.2v45.1c-12,0-21.9,1.3-29.5,4c-7.6,2.7-13.9,8.6-18.8,17.6c-4.9,9.1-7.4,19.8-7.4,32.1
		v18.4H1139.2z M934.7,254.7c8.9,0,16-3.4,21.5-10.2c5.5-6.8,8.3-17.5,8.3-32c0-12.8-2.7-22.7-8-29.9c-5.3-7.2-12.6-10.7-21.8-10.7
		c-19.7,0-29.5,14.2-29.5,42.6c0,11.6,2.4,21.2,7.3,28.8C917.4,250.9,924.8,254.7,934.7,254.7 M934.8,291.7c-22,0-40.6-7-55.8-20.9
		c-15.2-14-22.8-33.1-22.8-57.4c0-24.3,7.6-43.4,22.8-57.4c15.2-14,33.8-20.9,55.8-20.9c22.1,0,40.8,7,55.9,20.9
		c15.1,14,22.7,33.1,22.7,57.4c0,24-7.5,43-22.5,57.1C976,284.7,957.3,291.7,934.8,291.7 M646.3,289.7L585,109.8h-22.7V73.5h96.8
		v36.3h-22.2L671.8,213l32.7-103.2h-19.5V73.5h77.2v36.3h-19.9L777.6,213l33.8-103.2h-21.5V73.5h86v36.3h-23.3l-59.3,179.9h-40.2
		l-33.8-98.1l-32,98.1H646.3z"/>
	<g>
		<path class="st2" d="M238.5,280.2C238.5,280.2,238.6,280.2,238.5,280.2C238.6,280.2,238.5,280.2,238.5,280.2L238.5,280.2z"/>
		<path class="st3" d="M257.4,79.6L257.4,79.6l26,57.2l0.2,0.5l-8.9,0c0,0.1,0,0.1,0,0.2c0.1,0.8,0.3,1.7,0.3,2.6
			c0,2.8-0.7,5.4-2,7.7c-0.6,1.1-1.2,2.1-2,3c0,0-1.2,12.5-1,35.7c0,0,0,0.1,0,0.1c0.1,13.9,0.8,34.5,2.5,56.9
			c27.2,1.5,52.5,4.6,75.7,8.7l0-97l-6.8,0l17.4-38.1l16.7,38.3l-6.8,0l0,100.9c24.8,5.1,46.8,11.3,65.8,17.5l0-84.5l-6.8,0
			l17.4-38.1l16.7,38.3l-6.8,0l0,91.5c22.5,8.3,39.3,16.2,49.7,21.6c13-122.2-13.6-228.2-13.6-228.2c-123.7-4-233.7-69.8-233.7-69.8
			V79.6z"/>
		<path class="st3" d="M455,302.5l0,95.5h12.1v0h2.9h7.5v0h6.5c4.1-13.2,7.6-26.9,10.6-40.2l0,0c3.7-13.3,5.9-24.3,7.3-32.2
			c0,0,0.1-0.3,0.1-0.4c0.1-0.5,0.2-1,0.2-1.5C494.8,319.8,478.7,311.6,455,302.5z"/>
		<path class="st3" d="M368.7,276.8l0,121.2h12.1v0h22.3v0h11.7h19.7l0-103C415.8,288.7,393.7,282.3,368.7,276.8z"/>
		<path class="st3" d="M348.3,398V272.7c-22.7-4.1-47.5-7.3-74.1-9c0,0.1,0,0.2,0,0.3c0.1,0.5,1.7,13.9,2,16.1
			c4.1,30.9,12.5,79.7,21.1,117.7h-0.4c0,0,0,0,0,0.1v0h42.2v0l0,0H348.3z"/>
		<path class="st4" d="M217.5,397.9c8.6-38,16.9-86.8,21.1-117.7c0,0-0.1,0-0.1,0l0,0c0,0,0.1,0,0.1,0c0.3-2.2,2-15.6,2-16.1
			c0-0.1,0-0.2,0-0.3c-26.8,1.7-51.6,4.9-74.1,9V398v0h9.2v0h42.2c0,0,0,0,0,0c0,0,0,0,0-0.1H217.5z"/>
		<path class="st4" d="M59.8,280.8l0-91.5l-6.8,0L69.7,151l17.4,38.1l-6.8,0l0,84.5c19-6.2,41-12.3,65.8-17.5l0-100.9l-6.8,0
			l16.7-38.3l17.4,38.1l-6.8,0l0,97c23.2-4,48.5-7.2,75.7-8.7c1.6-22.5,2.4-43,2.5-56.9c0,0,0-0.1,0-0.1c0.1-23.2-1-35.7-1-35.7
			c-0.8-0.9-1.4-1.9-2-3c-1.2-2.3-2-4.9-2-7.7c0-0.9,0.1-1.7,0.3-2.6c0-0.1,0-0.1,0-0.2l-8.9,0l0.2-0.5l26-57.1l0,0V4.3
			c0,0-110,65.8-233.7,69.8c0,0-26.5,106-13.6,228.2C20.5,297.1,37.3,289.2,59.8,280.8z"/>
		<path class="st4" d="M80.3,294.9l0,103.1H100h11.7v0H134v0v0h12.1v0l0-121.2C120.2,282.4,98,288.9,80.3,294.9z"/>
		<path class="st4" d="M12.8,323.7C12.8,323.7,12.7,323.7,12.8,323.7c0.1,0.5,0.1,1,0.2,1.5c0,0.1,0,0.3,0.1,0.4c0,0,0,0,0,0
			c1.4,7.9,3.6,18.9,7.3,32.2l0,0c3,13.3,6.5,26.9,10.6,40.2h6.5v0h10.3v0h12.1l0-95.6C36.2,311.5,20,319.7,12.8,323.7z"/>
	</g>
	<g>
		<path class="st5" d="M2206.7,132.5c9.4,0,16.7,7.3,16.7,16.4c0,9.3-7.3,16.5-16.8,16.5c-9.4,0-16.9-7.2-16.9-16.5
			c0-9.1,7.5-16.4,16.9-16.4H2206.7z M2206.5,135.8c-7.2,0-12.6,5.9-12.6,13.1c0,7.3,5.4,13.1,12.8,13.1c7.2,0.1,12.5-5.8,12.5-13.1
			C2219.2,141.7,2213.9,135.8,2206.5,135.8L2206.5,135.8z M2204,157.4h-3.8v-16.3c1.5-0.3,3.6-0.6,6.3-0.6c3.1,0,4.5,0.5,5.7,1.3
			c0.9,0.7,1.6,2,1.6,3.5c0,1.9-1.4,3.3-3.4,3.9v0.2c1.6,0.5,2.5,1.8,3,4c0.5,2.5,0.8,3.5,1.2,4h-4.1c-0.5-0.6-0.8-2-1.3-3.9
			c-0.3-1.8-1.3-2.6-3.4-2.6h-1.8V157.4z M2204.1,148.2h1.8c2.1,0,3.8-0.7,3.8-2.4c0-1.5-1.1-2.5-3.5-2.5c-1,0-1.7,0.1-2.1,0.2
			V148.2z"/>
	</g>
</g>
</svg>
images/button-grad-grey.png000064400000000357150755146460011733 0ustar00�PNG


IHDR�~ԽsBIT|d�	pHYs
�
�B�4�tEXtSoftwareAdobe Fireworks CS4�ӠtEXtCreation Time11/17/08�luqGIDAT(�cܵk�4��.��������?L���1t����߿1�;�xۉD�\B?'Jش�q��M���5K�D��IEND�B`�images/forward_disabled.jpg000064400000002304150755146460012022 0ustar00���ExifII*��Ducky��http://ns.adobe.com/xap/1.0/<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c061 64.140949, 2010/12/07-10:57:01        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="xmp.did:25364E76D27811E0A2F49F735C08CBEA" xmpMM:InstanceID="xmp.iid:25364E75D27811E0A2F49F735C08CBEA" xmp:CreatorTool="Adobe Photoshop CS5 Windows"> <xmpMM:DerivedFrom stRef:instanceID="3B8E77C943C1E2413EA9AC837C75B35F" stRef:documentID="3B8E77C943C1E2413EA9AC837C75B35F"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>��Adobed����
#%'%#//33//@@@@@@@@@@@@@@@&&0##0+.'''.+550055@@?@@@@@@@@@@@@��"��f1�!Qa#��Bbr3Cc�����?�Th�zPw�]�,\6ű���-(�/��-����B�^��e&O�[�j���"���QW��~h�i\�pe`-�7��Z"\K����NM:���images/flags.png000064400000240434150755146460007637 0ustar00�PNG


IHDR��nʡtEXtSoftwareAdobe ImageReadyq�e<@�IDATxڬ]|��^M�	I !:"J���� vT�)�.���Pl(>;�.b��� ҤI
�����Mٽ��y��fﲻ�;��m\&}p��oE0h�c�����dz{б����4q��D�^6v�6�~�7�Q')�Xiy�cG�����+���0|4�*Ǘ�/x~��9�U෣x�k���<���Ip�<��IrL"*�'|����Ѓ�!z�f:6�C�������~^zX�N��Ǵ��DM�!�~f�.@m�c
4�t���c��毫k�Nl��y���g�w��!C�x|��Ly�X��fֳ��7	v÷n=�à��D|w���^�.��ٸ>�\A�å��.�cC���SVVF�*&���)))1�kl�0�|~�����T̢Aux<

���Wi�xn�����P��{�&S����	uQ�4D�f���5��	�T]��]�U�a>����裏���C�)&�wi4��ƣ�1Gt4�vk��+�!���{x���B�W9�E�����A=��/�j8T�"���^*W*���ǧA>��)8�,�@���j	�r_��ή�bиt_]3�X�k��z�/@�s��3`���ϩi�e	n���FLH��������/���ܞ?�px�;���=M���c�A��<ïKMM�;h�y�t�<�]�����c5#��_=�c5~
;fcJ$�Ǽ��a��XR�:T5m�ߛ�����
��h�'�!%�}l�%�g�>�ON镁meM�a�{*�GW��c"��͛i�Ȣ�f�m۶��:���[�~M�J�E��i.ʨ)6�<���;a�� �Ԑ�oSfF+��b����{Q��*t�=\��&r��W8T^΁ScM�ɑ����fP��3�=���py���z6͹4�K4~�-!��7�ؼCG~
�շ��>竸�>��@�G�(0��Q�7�	�b
��o$���š��Rt��2}��		����b�� ���^u3.'�?�)�����{�LpA�4�LE=nOr��y����+����tӚWd"/�1�Q�ώ�����|�\D�5���w����Hǟ��UX�ĝ��̃����k���_�������l�~<��>�=i�*?����#��7'��iO���WL�_�����H�0�k6�$B�nw
�_x��	�����y�x�[UUUL`K'
ǀ_�	���_Z�8@]���B���r 4�B2�tQ�X�I�[��&���>i1�`O�=8��39�X�YU�r6|�ZxZ�%?�\����D@
@QCP��!���=�	�Z�㺡
2r4�'{�#�/!��j����Ic�е�O���qL�>�6�L�I-h��+��6ӜN`��H5r�ћ�[?�̅N�%uf��c�ރ��\1n�H��n�{���q2U�8�`����ra���X������Fk��z6��j��9���Z{Kf�~:q
|�o��%�[�C_^ �	b!@Q�P�_Ώ�f_�
Q���Wa�#�]��uO�ܕ�z\*��'��8�K~�X��5
��a8@bb"z��f?D�7HHH��q4M�
�FH`l�BȮ�A��4_����^!���EȡH���dͪ����\&�3J�0�cբ�c�BY���:x����G�!��A��C�M�,���$
��䴻H��`@�ۘ��jh��{��K���&z�n�w3�9��w�R�v�,���gx��'�m~��p�5�����M�����#y|�"��$ʝHW%T$p*�auc�H��B���zַ��.��q!F�\��N|
�j�qPk��[�&���j�8f���h�&�uH������{Ĺ�w�.��0yro��<�\�-@c#E�(*J��e��[wS�CX).1�Mي��.�V��5mjk��c�C�`D�?{jPϰ�!��'5�ߥ!���}8weT�)��A��8�\Lu���0�g��Xԟ}��>�Lƥ�a�NЧp�O�YN��t���P�s�
l,��nc6�|�Yͼg��P��e$�C8�)����s�KШ���+v��[�|:�����z�,�`G���m��xf˭8T��9��Ũ'��(�p��f.ߍ9�bM��?�t�����''U2��M��7w
�]w��d�"B2���TYCgF��\S!��Mq#�D�n&��!�;�R������:pgS�5�&B��l����Dӧ�{��?��Z=ԗ�GQ�4M�3������������uN��y���<�e\��20�p~^_���[�v�E��E���}��]pE��ln\489������N��4z�?�D��=��PJ@��
�M�Á�	p��@q�zPP7-�b=�n�k�9�KN^6���X�D}�N�s�a$%C۲.B3��+�HrP,L(�E�:�Y�:~vQhM�I���}=��	�ux�1U5�]�
݋|�R�G��^��?(�B,���筧�OE]�D6� ��Z"9�N�FOR�:��2�t/͇F�}���\�cV�$�e�!�땦���&Z&�uݢ���-hB��\T�`„��px�uf>�*�|[�[o��_ˑIr�@�i�
����lm&O`�Z7N�3p��J<���ab��,�χ��T�;L�B����@
'����V�`���u%n��0��!Q�s�d��x��~��t�C��2�R\h�uv����u%-"-Xq�]�I�c��!eA���B�J���'SZ=����+��~�`�NU��p�)a�)��I�LF�
������HyUĘ��O��Bf�ѹ��_K�5Wt�R=��&�]�u�^dSH縰o�t�q�&�AU �N-���Cu�'كE!�\��ǭ�k�z�OP~Fai|��5ξ�O�����SX�LB����<S���o���ٯT!---b^y4�;�#w���X�.b���cG\v�e6YߺՅa�TN��xӅ����OnA��̸��Ť��5�j��{O�O=�u@��Z�K��
8��l����>�Y�+�ŮCj�5ȋ���
��2
A��E��G��߫r	���:p;Mf�P�
Zp�]��N�~M�"�y��2�Ɣ?�s��X�~�m�g�!C&��� a�:!j�w&6�L��I	օ�B�$*����ן#أ'���,�y<�������'`�J(Cdn�3�1�5]MpD�q�����{�����=�gs��43��9�y ���m ����떂�E&MR>.�I��*�_�fh�\j��aE�XcY}�A���߼yn̝��d��]j�ӹf��ԿW�D���!A���E@�a�����r�n���x�Τ'y��}�����#0�f�/�Z��O=5[�d/�~���e��Ң��6
�&m�U$4.i��8��Y&��pЂ3�W�Y��Yc�e5�À>3+�(t�#���&�+�l<7��cuL�┞�	�HHc������Z�o��i0�eW��r��A�����]���M��@3L�<3[�ʿ��~�f�ҭ�.!p.��nC� �P2ޞ�%�5��9�\Tҹ�єȨg��'�v��\Ի��"�eJ�{vv^����M����X?�K��v~�KRO��%���������k�D�G+�Xc�~����>�p���^��
6c��0#�ҿ*�i��ˌ0����|���P^Dc���FPZ�=�.�u"g3��=��||�g�����J{�q���_�M�~�D`���Ո�|�azF=.ʜ��
p���DZj�oXe{[���P_8ƶt'��(��b�,��{�gs�8������>�@�.Q:u�׈_��\~g�a��W\�҄�b>��۷������7�c��1��V�EobJ��I���.��~3�F�� ��|��dk⅃܋)?f��+���O<�0_h���!)>�p6����#"���ڶ)��θ��j<S�9��|��br۽8�{\�Z%iʵ6x]𯳱�t\�A���Ϣ�����skR>e�1�\b��y�x�׍n����j.6�����˜�G������BSm�D8D�l�����8�i�/�9���[��r^:>~�3�w��C#!D���@�{�=��aT�l�b�ĥ�>"���u�B�Jt��7G,�YZ.�3nCq�`Աp�jH�U�aF��tFn��<J��2nqcG�d��.�2D�sٻhN<�n.ߊ�D�eE#R���L���K�bDX��������NwQ���|]����I����h�h�����G�8>ߜ���-�uם���D�����9�X�3��yeܤPT\3�Xx�.\;�-ہ����j����_���FҺx�|��bm)��c!�<��
�x��n\�ds�q2po\��aƘ�h
x�G����IT�ECt��-<D}��#�ϻ�[M���B�b߹rMǪ>�ϩ�������>���pN�_h=.
��=L�j�	��ғ���_�SD�̾@�[�b4q�2�z����*F�w�IV��Ͻ ��e�-
��c!)v(�n5ʢ;BYn�/#a�S�O��Su!α�w���j���Bi���2��|5�)@ƪb1�<˚)<�{V��S#��8ۦM� RL��{1��/~���ߐ�C�g� �j��u�W"�z�&E5V(��(߀呔J��dT���.����,G\}=Wz}�Ih0\86��SP����}���8wPG�z�7t(�����<�>x�^r�98��L���闛�ɓts쯨%Ŗ�l#t�r��q�_ٌ�?S��� M��J���d�R�H���Ei����
\g^u>��P����q`��I�?��v(�G��aӎ�8�\|�}5����]�]���*�Л$#��;��|�C�3QZ�����q	�M��sQ#1o��Zz�a^�C��k�s�gmP���;u��U�=�Ʃ��Pł<�����-�*���Ki�-�NQ��ecJ�������}��=�dq$0����RzuM~̨�a)5ԘG-�J܉6�o����X��ˑ���$��3o�Ұ��7��7�s�^w�e�t"Q���`��I7�e(lj�Nw��٫Y,Ln.�E��s�q�1�!�����"`J����+���0x���3��E��uw�n.ý7
Ə+K��\O���A��O�Ü�G��uЫ��S4&�x�
��)�.9Ʉ�:�,1u�(C]REÒGP��w�G���PfJ�=
�L�x�����yy>�UL�JA�����M�W�|��꓾ $`Lϣ��D��txYb���0�{��{̚��S��[S&*��1��iRֱ-`��&��A�F��x�Iܻ㐂�1*��W�خ�m
S�i1MN�9����)a���Q�4�3�tƅ����vK1��w(1���hr�����F�����e �h�P����CE|�"ĝu3\m���o[�!��+��EH�lCP^�G��_#''��1�	���ޗ��_�B�G�X��<�E��&�iq�d�i�P��gu-Ban
�{"�>�#��ĠsN�X,MR�׏�/��Sh]��%G����N��;C��W�O��H�*g��}��B��G��G���	X��&�<�mqǿ?D�+�k�!Fb\�����m;��|E��[�͛6q���+�߲0��[����a��o�a�)����_PR�shUzr��o?�pq`c����;�G\�@�DvS�E�K	^����!ę���`F'X~�T-���Z(�&̿��D7]F�-�����qp1a�naKn^�N�-�����Ȧ�pJ�.qe�u낄s/�+1)�ܦ��(>����Z [���!'+�����\��%���UTq�<��X�6==:�}���������%����q��;��.�]����e��fX���B�I�:��*��`?Rr�W�hQBp�H���?��0�������o��B��
.�2����	��o�4��x#�d$[���$W�9Ք��l�L���5M4���������0����	�8�i^����׼Og+7	��E�PC���6`��43-w/�"����(���К��'�aS��N�M�C)Li�e�ϲ
蹒�~�KЧd��3x��hD���K԰�B�0PI
̎����U�4�ϊ���-ƀ�~�P�+���Ϳ�o�|ğr|�'��BB�)P�����?����_��?6����,��jL��
��
=]�)�m�ьuR�{��U4�����o�]��D�n�u.�,��������R�I(o����#O��1@�`^=���nn7��MD
6����!dѾ�+jܪ��IOظ����?n��~������*B�ԹTq�LC��
ϳ��M�����i�>�-":�(��
!��8�$�תh&�v�)9�`sN@D����6�-D֯�T�@��Jp��3���4�4h<T�q!~�-
� ��t5�;Q���`}q��U�����La
�)rl9�(~��;�49�yM�Zɼ���3������C��g��6�A��,�O���?M5��R�@O�(q^[���sI�����a����8!��8f	#&� 
	���A� ���]:d�~2�!<��A�3/���� ��Dfj_@��3��"F��<RRN��#~�y.o�{$�����)��\4x��w��D4�����)�,d��
W�u�$a1�X�@�U;(�p�(��_p�ŭݴQ��9Ҳ�(@�a�m�b��߉u�|�<�aw
y��v摶l��z��.�)<
ғY�	��B��R�sQ�!
�~���f���D��T�C��y���'�a`y���Ƙ�T#�?��R���3���%E(��W.�F�ιW�%���3g��환Lb血ez���
d��@������dpm]Q�\�|�:kB����O��~����
o������QP�BR��%0֯�g�
��v١NVׂ�j�[�Ν-�_<��'��	>�8�;�r�+H�T���K�o���3��l�}��Kz��>d��f�`�w)�3��(-s�?
�����A�q��
/�=������S����`����}�7XǮ��	UC(�|��s�!�KXfE:�s������s��&�}�aE#�w����Spϰ�d��is.�h���&^&�&Fy��q@!O��0OE�Q�f�f;T����ʢ��Ray�y8�%�;�����Ea�S��D$N����z��͸�T�yB�����6���=�d��/#3ބ_���pC�"=z2�3���P(��x3x>) M�ǯ]��
��oW���~���\�l�6/Y�dG҇!�Q�̴|��N�5�V����=D";fb���гSn���;��?޼;E���V?W+�[6��.�x�'t��_��4/w���Y@MH\<�������¤�SZ�H!��Sny�g˔OM�qj>�!S��0���I1@㓲�!�L���JU��U�=���Q:���khy�ع��I"��=��@p9]��*OV..Hc�0����lOϷ���?��ԗ[��-6�,��O�/���K!��^66��1֟�O��Oʗ�]�����爘?�5G�g��Mf���yN��(s=�7H�8{.f=����W�b�ڴ�t��!��A�u�+�ăg}:a�#�vTb�"t9�nl����]n[L@�)�p�Xqxa�c��|$�
�']���޵Ӧ �.:�6z��o�)��%'p��-U�qzt�s��]+�Z���6�wf1�O��"f�n���f�����W���
ǠS
�=I�Kmx���w���l�I���$N����f0��A횛�aɣ��95�4���&3V���3�����qmʢE0�����âG�M�p��zbgDռ̾/��<�%�0�#*.����hQꑵ���`#�����n���Nx��|����c"�J��฻[�O_t�;`�˛�P������W�����Q@��K��\wTU�
`������L��Az� "۫�J[V�����󶶌=�h�M�ĺu
�G��zi���#��&ĒP�����W�0�����{�"��Jdf��6^�V ��2xIz�c�<x�zG��y٥p�F�ɛo�D�;��pE��p!6�܅��v�W�D����0�c�

�E����݋���G�9g����|A�a�9ҕn
W��eE�|��p����q�QS��_7��w{�ڛ� �u��F\�&�y9�a}NN���	��̲��bW1�z���p5\yg�dT�}�ѝ,+L�i՛>1c��r�C$�Ӝ��J���[F�{V�=����k�fiA-cp�f0
_�uœ�'Z8��>.��K/�8FB�]�P�a�E]�y˩�'ݑ����`�m
�)�������l�Is�3ъ�����͏�Ċ�;\R��
����X�k�¬����6��Z��+��MOah�K�m�@$����>g��܌Z>�ihuuh;�%�)~l����=M�n0P�қ���s��}�4�b;T�|�*�a���1>��D�oKᩥ�ɽ�h.jnDh�N�H�V�?+���'b�|���j��0�G��J}=2D)fc5�7�Er��d�YY.��U��t=�/��Y�j������ps��kx�RZk3��YyU���'iRI-H+s�;P�s't�\��5�ʐ`���X%f
�|\63��	���o�
J��F�xb,t]�	�Ih(U�����t���[xw��@���O������6}rд����Ŷ�mȡa�,����{&�TDe�#C�q3Sӑ�ONj�g�O�~�q4�f�N��\i̝5�~������qb.ɣ�t�3S^�7��c���d��|����r;�•�����u��LtU6�w��	Qk�G�G(�=7��ړ3f`�)���΁;�1�ه���#�<�S�4�z�0��;x�G��:�]Ar�2�_��∠�XfB����f��V0h�Q�V�̖/�c�py[����Xg�qE�S� L��S��2�PR5�%��o/�7��O=���ץ�N&�H^���h���b#���~:�~
j�$Ex���Y�yiڤ���W&8n�q��컱�a�,@���0)�Ҷ*�IґQ�R�e���vAm$5��/੧a���D�rE[����\�	���g!Ռ�QQ�A�Y��Hp폗Ӌ{�!�#��(�}Q@KZQ��-��);�
(��x{O��������gv�F���
�f��D���q3�\���`ʽ����;~<r۴A1q�8I�Wy
�}.R�Mx�h{�V��ٽB��8�D�vA�.M`x��x6��<Vm r�RP�80hԜ����o��݄�/"q��[��
\51��C�sgO~������=�+;)�O���B!H�~��imN����PC�:ա`�vV�ܑ����F����%h�;����ӯG�X"̯��'v(��,d���E�O��<���v��Jf��a�M�z�?�>Z�m�#m�1\�ͤ��(Jj��I�����-��ꉬνŬ`'��4�(����4+��+�aW�f�4=�y.T����b�w��g�HG������9�µ�iiM\�._�]sp~R-�ԐHe�E���Cp�5�`ƫ�i�PV���iӸ't��݉YxQ?�jt��@���(��'hq�i�q	7RO%�s��Dv	�
Ng��N�d��<(�@hȶiA<z�ԭ�YߝE"��~�> �M���8����	�����Z�Bj�0�M�ORPX a�PZp��m)�6�:�I"Ti���a�pxL;l0S޸�D#aV�p�Z��N5j�5��J�&s�(.�?�7�n�<�ݭڑDq<�� �������hW��x�?C�ڦZ�:����_Fʩ��xT}>'�ݫ���ɉ�Ž�l�sIW�t�na�7kb8Ԭ����\���� O#jP�2^��m��*YĊ��ҁ�qΌ~ة��Y��c��
[h��}ر݋{g4s�y�f�xZ'L!1)��1��Ps���څ^:D��0 0e�?Ox7��8���[\@"S5�0$ƔT�1n��W�(���X��u�b�.��{q��&�K��F��ߧgh �aĺ�P�d��/SQ�/aLj}��.�.2��.�RX�9�2��wr���	�	HQˡ}C�z-]�$|~�z��U	�ѸK[zͤҢj�����dkX�y��ӷ��L�D:�������d=O��S�=�z���{�\w�}�T~�/>�Gܳf
��.Av~��8��îp~���
����2˅,H�k��Z�V�2;>k�<,|{(��.�fq��G�:�u5��{^�L�k��r;�0��Ј����O��������F0_���5i!܆���ul�c���C�5${�x�D��{?;j�ࡺލK>�b�fL5��Z%��Y,��O� �,Qp�W>�֌�L��P���x�!��bx�0Dz����R�a��ya�7��@�%(���t!!�jM)�߻)'\��A#�t�$�=��8|������إ�W���:wf���_�
�3ĬVd,t������������֏+ڥ�n�Ѧ�w��3�*�=��E�i�ODz����I���Fk�
��K�����@d���1a�e��EsZ��҈RIe�D�:+��1�v��/�ԁ��[�*�/+V�`y���A�w�%J}�瓋��!���[Z�&�Zt\Srt!6��~��Ʉ&,}�tz�vb�㶡�^z/'����� �G3v�Ҥ��n�q�f8T�3��+Р�ĩ����ވ?T��O&�l�<�-x���[�^F������³�KO��hC�U8"��L�<�0/뼇�Jv���'�N�h��w�|�>|��կ��Ǜ�Ov6�����cq�����B��"*��u{�C�U�|�G�,�'珍kZv����ˠ�x�� ��]�<Bܠ�]��i*�~Qǧ��*�^��P���2
�4�7�)L��&y�<��i\$d"��i�ꫦ0Srs1t�$1�,/9�Aд\3W�5��!{�n(ʐ&R]X�xo+�}��J@c����ԩJ?���X)�����MKl��d�V����!in; u��DL������$����j���w(B�Cܑf{�_z	ƽ�Ƽ�����PP�k����V*#X߭sN�h6�-DŽ�'�%�D��C�� ����y�>�����p��,���?‰�v��u{EK`7p����Uvm��l�Ƒ<}:.���:9v�{�w�.��i� �����}�"V���ly��~4����?���o/�6���8���'�J�z���'&BD���D���h��*a���qD��z^H`0q��;��Y�ɭPe�6�o�~�?�R��ln�K��G�2�crjYV����}��D
�G_t��9 �'�޻���C�o�@17��<.I�#̖q	�=OZ�x =r�+%<���D�u�yz�}��Ϧ���ؖ���B�h�˳���++�8���ȫ2ěf���]��P��o���Qa8���F"2��K����l<�� f6�&��]ZO\���ٸf�7��w+�b���d<0�^�Ǵ�^ެ;�E���|Q�U�w����|T�}�C�
"�J�2Ά��.�=IJ�vx�*C����V))C��>�L��mV\�N�x(Ӯj�D�P\<⚚��p���އFO\�u�Χ��|멿P�w����4Tsnf�`���Jb��T��>�9��޸d.��-6�Xp����G+�x����w��kv�m���o_��J��g���~��;U�1fD.����[a�Lϔ՞�-Cf�������DH��������ߤ)M\v��'�@���u<ˍ�%�?����v�j���U�U�	Il��hT�oBT(�74��bTep�Z��k�^?��c���p��z?--%f(Ψ��T.�1]f�����_<=��gC�z
q�i���d,�Ռ�{��Ǘ(�P�Ѳ"���YwنL,����vt��D(�����EQIq.���aW����$x�)e7S�r��M�˪J0.���{���F��m�uV?��L�Z�$d�-��V�MA�oz��<��J�
�丅 9^�e��r��36��2�����&�#��Q�o���w�<�&…M��s�1��M����y�t���
��i�wW5bu��鹂�^��LJ�̲�X��-G���.�*27\R�f���];'<��,��*7���ݻ�\��&�&5��F}n��H��R5J�rˑ��ߖ��x˯ ����JU�w�
�E��$��U}�
eh�/S]o5g{`��*�+�TvN�+po�AZmB�5�*H\F���
����JU�i��r#ο���K�\A �,Y�O��:��:�TEƴ��-�ػz�G�a^/#P	���p�-����^�Ji$j��1���;�<�|j�6���ex�����H ��E��8B h��ؖN%{�ܭM��Yhq�,���I�BJȆI2��	�Z��ϣ���8��e��^��+�j��n?� �g�z��&,��m菷��'�O��gT�#?�;����F&�o�ą�m����k�����p<9��{7=`�zD�f6��T����2�D�M9%Fy�?�~�A+U��/	�s�Z|y�!C��6fQ�+�[l�m3�t�o�!4n�M�冿k1jJ+�������+ɟ�x.�"~6sf�‡/L���EZl��B�O���?�u'��U��w�^;�Yu�d5�UUiQ춨�˖-�^Q�W_O=s��pV+�?:�BXALi�4ѥ�Aĥ#�΅�;�#�@ϼc��!�z�’��Jr	�o�[���
�һ5��*�ɉp%����C�=4�+A�y�`X��Or�P����SpI�v��nZV@TX�+'�~B��צ��J�MkDH���=q8���+t�qs��˜>��5��%�68��T�
�-�]��bf�H���JI�!�"x���[���m�?0+���~l�_0���sS�b���
�Q��X��9��ⷱc[Eq�n'�h�<��D`H���3�'���4�f�=��7�v��_UI�V�K���E����,��o{�k�^�0�_�p�F�'Q����Q�[��uqx�5����������/%�[@oUw�~����g%J�$["@���B)Wd&��� ��<���,�{5D�	q`����")�J	du�e%C:�\���?�� �ue�t�.r BR���\����>��',�HW�)2��⁍iH"}�m��x�8[ĥ�nd�H6��Y����?��I�|�Y�	w��
�g���1s�®�4Q�D
We�|ntjC���Cn��BGɹ��}�����I�L.q��H���D��~K��lg�����[�#�r�H��`�#EM�#����G=������d�_��5+�CAL��q8�(�&�����._�^���ᇦ��.�S���v���E��"�-���[Z�9w �0?���`^?Z�ʏ]U "��b����lUo8X���޵H
f�>.U
�'��D��)����� ����gVHl�L�X�g/��q/csfdN����~��=��\Y��d_�Ɂ��R���D�{�[9&�IE)�cW���q
�އ��察���зe��`վ�6,�����	mS���Y�����,�]:vAIcIdU]�5r�^��%;!��d�8��_��9�G`�����pAjT5������Ř;r�֪z0w8�J�3�/�^= E���T����u����P��}{K���`���sG��F����5�8�S��E�3����v�F���9���N$6d��uKQD(�t�N�����y^�
�a�&B�h�!#`.]����������b�D���lՖ,NӰb�p�R�c��M�w�/�^�ҧ/h��fR+�l� [��Da}��;Ir�[|<�~������N��~c�9�t�����T�'�3O���%�Kr�{K�|�F\�"C���yڏ��)t������jo�tYC����=�(��!��F�0Ut(�b��,Pe?��I��h�>l��E�QZT2:�{�1v(	a&~_�0��4o-�F�@,~M����a��Ti��;�jVqqlm�Ƚ+�|x+N��){/��/݀����`Ӣ��ox��vŖ�
yl�Rd|��U�x��ʉąhk��*��U&��$�]���פk<����
?��x��ǃ�\�7EH����&���F�0k7in<��`�l
R�j�9���̏;eU"Y�?+��	P�~)���K˳�b��?���5+	a���կH��UY���xz�K~�D�!�6��Ո%���~��
�W~,{��ڣ㋍��~Geg[���Ȫ��Ww�8DZ〘u�QGg�2HWd|��d���7�dU��3U\�%���z(I�
N�@k�	v%�!�G�,�
	9h2���m�+�⚚,;�-d8�'9���˻q�O`�
/�C!6�}[� 9��0�)($�B�!m��E
+���ea�D�n��[fOؕ$TGU	�ڄ�*a��F.���p�?	���cg�[��ά~6̷Q^Ws
d}Rz��ņ�gj��t��Oz����F16�'�%�)u��tz��L����Q����[�:Ó�F�
Ϊ)VU+�O�3I�IOK���7cb�ߖ��*��b ��m�y�ϔn�9�r,�v�(��Cd����c3�ؐ΄��;
�>3_�åM8��9�87U���\��Hs���,+�0�0ѡ4�Lj|Z'�U۴5��f#)_ �v[��S_�sL��̫Z���N��qT{5�1�t���P�-�Z��D���jj��wT���YY-�أ7�`��5 Fy{5���J,p��DӨd4��d�p߀֫"��^w�f�_-�QFBp37;��-֎�Qa)7��&�_��-{�8Ò���z(�a��U�p|?��mGʭ��|���#�!\i����.�Ĩ��*`��;��lgKڽ��K�}؜����gY(A�Qգ �'��n��k�k2q�Z�;�oy����=�v�$}ZɶwnHr���n���7hVV�D��On��ݘ�nFdUb {����Բ*CyF��Va��s�Z�` *�G_/�\Pg�8�(�ltJ���W��*(�������Lv�`�.K��{x�o���R�A�q�s3%�LkA����p���Q��8��"[�:fT�H�f8��0����{.����DƤ�LC�)��r0����Hb��W�٘xn������o�puG������&1LG��Ͷ��{HQf"@�L��X�QU�ҧ�5E�20W��eU�xyMEʵ@�����H߯��K���D�3b�|�2���
`ʪV�O	�h������x��dU�Pj�`V�tY+T��
1���w���ԩ�7��L��|��q�*\��
&�
V߮~�|�"�&e��k�3v�j�V|-�0����EN�Q2����;u�d��4��g�S�޹���t���yX��L�J��~grCF`�Ue��ϧ�K��L�KHx�/0����V~�n�}|c
�]��9>(S1���z�GU�$�h�?��q|��z;�N����g⑯K���/�Ǫި�.z�}���B)m��R�3�i��zU��l٬��_��!�W�1+��K��tūQUL�e�O+��e�r.*����{$��L����h���V��
aDQE�{k�i��)Һ�+Daa
Ԙ��Lr�� u��'�c�Z��1E���_����enr����;�V�΢��Z�~k�����d���Ê*ԇ�8�[av8�*�(h�&9q��D��9z�U�O[��C*�r���Ze*C���sdUI{N,�c�9�k�F4u�_U5���j\�+�o��7�>S�!!8�*�K֟�e�^���3�8���ot���J�y(�~H��O�)�B�2Cƪ
`�sU0�����4�<�~�h��M#�q�JL�2�p>z��DNN���H3lD�d�f��
���x,Zt"M�n)K��ix�$7��x�y|+O1׈hn3�a��mm�%��I9'�]����s�����l3q�	
��-%�X�j��_����ɏ��u%��$�Q�b�,�}�ms�s���a�W�lWQт���/��t��-0�0~3�_`�@�}��<�#,ֈ�O�C�j��X��L?b��">u��,��-.���6���[[U�sI1�!�Ò�N��R����Qq���O���YE�j�հ������4[#�E�\B���KR}�Rظ���i����w�L^	�b@m9��{���c�2�~�Q��p��h
4~8i������
������5,��,:�
�����mF<޿c!p�"��=��O\y�ט�|4���1tL߃N�]��m'F�Kl�M%�Ͷm�B�.g�{'/���Ŋ�{�������
Dz��25Q�'���%�:���a�;b]P�-�'*��Y��M���C�ƀ����y0�4��y��]�$���Y�
�x����Wq��ϊ�4�EI�����ӏI�G�e�{�k�	����ˊ�*�	��S1���K�Ǩ��������N��F�}t�xdP�x&E Vђ�+醤/4|���
�L5����1�a��sH��6�`7�X�r�b}'
�1/?�^�ݸ����:F�P�ෂ����
>�#��s��<,�l�l�zh5�oœ���
ѪEu�w0�K�f\�m�
�"����Z�R��	��?8
�.�
5Ю��`H�?}�=t.h�5��=d�j)�o�0-���� ��T/�s;Gf��7ܰ�I۠͘�C*�wVl��ԩ��B�5���K8��f9L?ۧ���af���A����@H��:r�Eq��s
+���,�-=��Vx�e����?sQCR��!��ƪU�CQU\2�!:o��I�'Er���`����YC���P�ͨްl�A�Dm�J��%�%2�c%
AD<E��_	;�@��͡��
>��}�-�z�/����$�~8���+��W���x��Q�� q�T���sy2��vE��:=���z�����s�o���|�@���8���}r�>!�)�[(z�ᨲ�@
�m��<�_��m�m':��ɸ�mFf*h
0'V�CN���	�������a8.��I����[�0"=���k�3����}��5_Ws�;���!	~k	��#�%O�����ZU�hW�K�=������ꗦH[���Ϋ�~��$0Pd*��Z�JP���"��œ�x0��'�Y0l���
��oQ�q q<7�-/̆q�p�8�#�������
m�LA��ʠ=�B�1���ˮ��#%y��\�<�0�5��Mx'G^�N|��S����r`�6����u�xm!��5o|�nG�
�G�C���1��$������+�bذ����gC�O�}jZST(C4�4�����+Q��76�oDVRv���z]CZ�����
���*�Rr���p���>�
*lO��*W8�6趃��vE�(Q�p�IT��%�l1OB��7Cݵ[��a�E$�(vmN+��Q|�NX�U�����(�D�-@��0��#-D���ѱ�Qm�E z�Zj��o�:d�cY<½a��)6~s�D�&�󠤚�h%��3�}?�.����3��#�ŖS�<��ogO�7��Ď���eHfL	O�}��˳��:����!7�!ֳg��i�&}�b⣏��Ǫ�em�wL�6�Uh'/� F˪"n�wu�Kq��~�n:f4��bꟚ�UX2�?m�~#j�
�@���
Q��YVCmK�'G]�,�v��_�lX������騪`�aX/���;?[Z���cV����<��TYr�MB�}x�ͫ��&g�K��+�Z8EѲͳ��`���g��ś6�Y�
흿m1��Oi�g��s������	~��ҍ�`S�@|�1��k1��֚�ֺqXW��3��	���v
u�[̬�!͊n�%�4B+I����a�ql�dL��ɓw�}���^?AZ��/�z�Яz?B���%���n#c]\p��sK�!e�`@�Z�m;�nˈ!��%��ǡ�Q��d��2H����8�u{^Z�)������J?�3R������<��E����M�~T|�M^���5��fg���O���5d$���+�Zy�Q��oD�u��| �A�aV�Q��~��}?���"�;��q���X�k�Q�����cfLu]x�YD*=^����"�*�<��:��8X�*��!gU��Y;�(�n4�	������H�3�X^�Z�Kj�Rb�}��D�4�W�+u�X��3����H��cW���c���bWFV��5��a�
6�	��6�#ŋ~�����l
g/��oio\H7���0Q���?)�gh�����l���#.��0r���Ɗ*\�b�qD����Q�T����u�C!�ִk��8~�v�t�X�Pڳ#��>4��A_��C�#�̫��uה�x	�k��k�M�eU/���s1�;=`b���}U�� ')�)�?=�ܜ}r�=v|˫��\��*`�&ߺSR�4�.M�"��(6uh��J��ُ��k=��Iϒ�w��GL�ѥ"��Q��_�XT�@8B�B$B���ȹ��Q�b�;i���Z�q�0�F��{F�9��q�\uK������<m�=*�<7s�q�_���w�H4�q�VQ�g�-]��gZU%������[~b���,#�C���wS�uer�z�!~�=���=��W\���= ���2WDjj�H�C�;���f�m�㞢����2�"�=���m����4��Q�&r�
�����U�m>��v�>��� \����C
BJ�SP��H���F���$���Dj"����!hr�«xIW�e���?#�吅dU
K>�=i�v�֙��`n��J���\F�綎�H��O&�.(���\�>�>FnyZ�v��� 86���AA5�{:{~/�q�}�bVU����w�ꫥ�,wt�s;�)��
�q2�/��g�_���w�	�_n�$,1._�(e�)����exco�Њ�T]��Yq6��G�se�Q�È
E��g(��e�;���X������o47#���h=�!c��Dn�G������z���2�i��S}�ת��HÒ�
�}2�D�u�*
�D(����l�
+������%`g��0�+� G5�H���-�;!jv��_I��yȴcZtGk���t�]���
`82Ѣ��L�T��DH�����m��^,�*��܉���c�7��e�sJ4f�+�Ң`y�F�U7��U1��b�r�t��†f\��	4O��"$�7L�>{<��eYSV4:�[||ck7KN��b�UK�r)�|nE��	��_���GOz�6a�/�t���f��		j��$�~�-��ݻ���i�x�2����k9
�B�2�q@6�	O_�P&s����V�u:��TH�1�u[�ac����*~��7U��eR�w�B?z�~�~V!��C"W�S�^	���"�Cp���<YI�������6Ѭ0�25]4K���RD��!vH��U�ʢOY�E�d�>˦+'���&���u^."h4��\,�$~"6�y����S0��$n�uy�Q7�?ް�@��w$x]�9<�Y͈2���sr�hE��l_�sJ��H��P�6x��ah\0Ic'��sW|J==K�%�F�:�Flxa��͈g��π>�nh�eU���m����#��X���o�\���=�Μ0ə�H�%�Y��ʕ0kka2?	��礓P
ET�(���=:�gH���1x�s]��+BĴ,�l����rN��}��Gs�A�MC�3�'�;��ߡbP����j� ΰ���_:�8p��ur/���T��2`g�m#�~�Xx�D
~����	����j;^z)�Mӧ��_�$)�n׽a-��@��[dʲ,-�qqH����=�� y4iR��Z�}�*d������c7��2r��«�_H���6Ç��@PT��w߳�s|��/[s��4~���2TX�\k�n
`���`��'��ym��'�y{�=��oeOzӮ��F)":��i���k��pyY��-�xᇣ���J(�r���I!)��q���� yx�7�|�5��'�|���
�QU=���EFq1�}��#+mW�Y�'$M�q:�^��yٮ#�J�-�*��0#��s�ȓfy
iMA)Wp��	�%a�2���I��1ˏe��?Q5=(_BW�\�o_��<�4���_;o4��E�Sl(e��㊁!���c��S8�"��^�y�X�ח���,c.WH,щ���7~��Z�����Y��&*��P+:��?j�/22R�#$r��o��\�	i"�]!*~�޳�Z�kjw�}0>�9��==��)
�����kS���k�<Xc(�3$�t�MG�����b�(�r8�9"��!��*
q���C9b����)������V��Ԝ8iQU%	f�~�đC�[��-\��"���@z�}��H_�VN����^h�l�r��D5"�~�<5�D��;k�NBM/��<����ң{D诡�����+)z��lBlDB}�˥Ĩ����ڋ��_�Ou?	ϰ��p�z�+
��	R&N$�w���Jd�T]�
��P�"���@��k֠p*p�л��a��Vq�C��Y
�<M
�y:&|��I���g����1�#~��3�;B1��#B$�ǟd]x'v]�j<��S~�&������J`�/۠�{�W�\U,��#o0��k�;	��o
;�����ߏ���WU�u�֡/�w��(s*�̹u�Ż8"� �~�G4�Ɯ6mv��5���f�l�c�a�Ap�@%ضr1�IHw��t���UE��K�m&M��Y�ߗ�	�O��0����D��
�4�o+�lPрxl��5��>s�'�C��K<#ۈ�A�3t!���zC���xCث��e���,b���(ڒ�%�O�p(��}�����9��s���bև��π�
0`V��0`AH�$ I2,y�l��0����gv�����8���twխ�{�{N�`s���`�
3U��g{��(��ĹֿA1tCP�����uܱى�~v��,�/M$�?���KC�U�X$s{�����,��)���*N�������n#���p��F]��1����[܀���W %b�>Y�&� a4l&^��[��[�t
Ldcݺu8t�P��D�l+�t�̭������u�8T{�)�/��E�Q�����
6?�!�d��B�W��F���
�O��4-�������mt��
�;Ħ�!(��F�� ��P�J�
'`q,�u"�
�G���+sZ��u�l��M��G��A�@�^��k�cu�rF#7*��� E�,ڽ��~s	sJ(��Q�vL�V<֓Pg0+�O��2�2�"����>Q�|�	|��7�����nc��m@��!��R�콃�'�4Y��2/"d~+������g��k��2¡��6�{�j[�i��bd�f;l���N~�S�hJ�U!J`^�;g���@��<�m[�\�}~ͦp�J�b�%-X=䮛*:Ƽ�a�s-V��Ϯ2<7���C2r��B��d���8T��}����EP�N�$nV�Ƽ�j,DNJs�Mf�/�6"5!,`�h�m�FOF��,��Dm4{&e�Ya}�t=����wDD�7"�j�<O������!2��T��w��b����2F��	9csB"
v�i��5_;�ڎ��ttn7��
oz\����j�h���#�o���H��Hٍ/sРV�%��K��Š�����=�l��p�#F�3��;�Z�YY]dl��*-
��UUa�i����Z�HN���[Һ����	F�k\#n0�?����/�0��y�]�����q^��#���-L�ZE0̄��R����)
%��ڣ����	8Z�
	INd�ByM9
ڇ��`'dg�wOҒ����V��@:�jq'`�/z���Z$��~����ɻ�s~��X'v}ڇ����@6���y��,�e��wv��m�w��\ܖU�ѣ�:<���l��ip8�E|�R�����U:qs�`��t�F��=6�Us�U�cČGZ�B�B^��4|&��4T	נ�H��?p|\�	��P}"�O�^[\Dt�c��|����W����Y��o�9O�e	I�4����}Gq�X�;���=;G���3�HJA�����zN�pIw��^B�5��3��$=�]��o
T��
�������E��f�H�~�� [t׫�B}=���\�+H��M\"��Pk��1i0χ�� W��aL�-f���y�>g�<ȃxv
�]t/ezZD-ٌ(�c׹�3�Ϣ������]��n�KA�)}�݅>��K>�	w_��];�qYf6��&<�J�p���ɐg�3�6ǃk�Ē�p�
C��ݞ��z��B\v:�ݯ�Ό�sT�a�&hYP��Y���@B!��n��0�t<Q�$s��bBQ^_#2������4��ݏ{��8D�T�Ϡ�q��M:��������tsžzYlsʍ�ʩ3���gc1:l�M�a0!
�~�\�=���O@����C�q��=p�҅�D �[4��}pvYJ
���߭†c�P~�Ȱ��@E3��E�'e6V�o���;��b44Ҫ�H��-�R3���S��wjQ�D�w6��T��y��<#����ի��\������(>^���s%XL%>N��f�9V44�$/���Mz���F�p�	���dI�W�h4�Okz�!~�~	ǮN�Z�\��|�8<)	Mt������߇�U?$�,Jόq���#��ؙ��U?�dB�Q#]wb<�2�����E�ׁ�a�����K3k����(ʪ�:�.�f�%����Ң}�P��j�G�X��2����Ȋ��W�k� ��	%a���ﲕ �����˷ӑ�j���s�UDp��T�4�MMr߼�<� �az�T��ym�ŋ����Q������P���i��2�Kq��S,�1�ų�#U��M5��}pE��\��M�ա�c'i�y�87�NV��~ű�=��(=���E�D#93!Hjk�G�5=3�l�|x����L����^�k���gt듀}G�gw(j]�>8�.V籘TaO��F�2xP)�U�H W�\�LwCD�ܨD�
C2B��iU�e�}0�}WDW��ѓaP�G�o��å�U���Ɣ�"���W�8�_&0�s|S�y�0\ұ�‘�
��HI�+7u%����JZ՚)x��ŝg�����O�ہ���(*~�`���Ȇ�k"�6�O
0~N���3?�/���)�$0H,�b�=��2��9�A>����@��an�.))Ev�thPL?�A�v�=��Δ�-�%��X�;�����8�<��AZd��P�?<��%����nK��N�i cy��Гn4<4ᩋb��꠽�l�q��Њ�����a8#�K�i��'��G�{1uȍ6^�F<s!p��DE:PUq����ۿ@�+I�h�
'�:zď(-À.��#�jW��
2~�
E��!X+N2
�s��ٟ�HR.��l�S#�قY�w@q�O��kKo|�Ug��)ү������qǸs9s����E�pgmF��DՎJ><��"�jQw�~��?���-^�����<�W���D��1��^M����XlF�i�ĸ4�E�''��T]��q�]r���h
�*��лm��+%���� .�|.��5 '��}ब�./�WDMu�L7V�^��_ɵV��iV�Ql���W�S��A�~f?�U&ˡ Pl�!�ۏ�����C�srë�+PD���
x������������"�äT�ƀ��E��E�|:�mף��#8&�@�BxlF��Y������N�;� #���O�Ƅ<>)>	G�A���HK���[s�����&��jU$�
<�uW��۟�;L��Shaj&+5��A��+�j
���`�f���^�4~���RU?��'��|���'Fj�>X|"k��М�÷��r�(��N#_�Z�����7p��ː��|�M4�j���(uVVP�&�S��`s�
�k�6�l�@�ۉ!mpr�op9s�����l��"���U�v����i�!��fw��c��ڎH+����je�Dn��#W��f}�_*+��;��6K6<S���y!����v
u�p��^Q�`���zvC9���W�_l�-ܩCG�r�*(0&��M��	z��bw�YԾ�֫x1��u�{��^Q�QG����l�Y���"����
�T��ٌ��Ƣs�zd����y"����@I�Yt�MX�|=6l�@�bڵ���&�'Ǣ���^,X�3�NĠo���8B���gQ6�3�u�t��޵� �����a�)%�N��)�a�m�$W��uY��
�'���rGS
��l�yd��#c�%�K�+}Q'vA���t���u������K�\yfiC��NԼر��9`�I��E�Z�c�W�����X�(b�Y[����,��]�j,�ߊ�e��4�O�p�d�Rg�ܝ��#^U���5x�j�˘�g{���1g~� ݍ�4n���Yk��-c'̈́�3(�Ĝ9�
�~B�[k��(���@�N�FN?`�'Ll��)�8{M���+���0to��������@��>4��R��g��߀�'`up���X�J�>L�ޅ'/{ۼiV8
��՘��50���J���_� -(�8%
k֬A��=�~}Wdd. �ȋ��7�CA��(�ކU+F�W�j��d��3�/Q��ċ<8�ڐ�>��5,wH1wT��|�8�@���ɝ
�gZ����w���PP���]��~�yя)�gQ���	�?����]��ߣ�����
ޖܽ�+��Fs�I�<�%�W��P�ۢW�r����Ŗ&���t��j�2�����
��IV�>)����] :guE&94�kԔr��ᥥt�k���R���/h��C� P�������ɍ�+�T�r���N�Rr�T��-���i��f�ONj4�{�+�7}$��8�����5��Τ`�`P_rw(؟�p�e��o���2�ij�����h�wẕ䐂!�[`�o����s�H8&�7a�n��cO�Ǟ���إp#�Jc��M"!�Dye:w�/�{�߰t���
�7���`��gc���J�7!*)���O��}j4�1a�������] k|�ߐE�N��\A.�Z��㨺MP.�i��IUs	c�ۮ����2pa����}�n7���dT-�SЁaɿ}��<������7�Y�Р��ds�\`��\�؞'S��������~�\�4�b�z� (��^�J�R�U?LD�Z��e.�D{:��
�Q���XX+���l�(��`)6��>fsw��a�4�� ��LTy���;u]U
���0~ޜ�*���I�/���)+Dkdz�Aw����0�d[�u���2�	����

p�ȼ��#h��".+��*\|e
.�1�Crz_~yͨ�P�Nd���Ff���4�#�`҉�dt�g��œ!b�T�J�g$�ɥ�ϡ��L��H��E)�T��+1�BM&���'�
��A/����K��+Ѧ�AڄB+bF��@��$�-3�>��bF�K���M%���#�ƕn��nrH�����S]p5�"/����'Z��\��Nk����,�Y�␊0B`D�ߦ'���&ʼnnX�?��%5D&�Q�;�X�3��sX�?�;�`��f��pd&�b[�}��/����ż�Q|#��B���PǏ�$��Lnvn,���O��(^45���(2��@EE-	�~���p�V�C希��|f,��z
���Բ��n����줕hb�Ef����h@�ǃ�Ƚ�JV�gz�{U�7¾�2��k��?dU� Uɺ���]��]��t�ߪ��3a�f鼼#X���_�o_nK6� (�}�Vp~�f
.٫�^?{(�_I�w���0��eh�7��qv-#��B0�F��=S{�_eh��8'܋Y��LX�a�t�\Ժ���(��@�-�;Q�X�����C@!�B9=_b�������ѓ&V}v�a1F��T�?u�����Ǐ������5�u��3.�!U�Ԅ��s��hYn��A�>od������_>�Qٴ8X�g:]ҊD��
⬮n��O)� �!33�	D�h�j+h�Bc7��B֥�<d4@΃-�}��yɘ�x�v-��L���C{�=v�a,�2���MX�'J���@�?�J��_�Ewh��i���_�^E�:�ĸ}!DF�U?��a��i���8��!�w��Y�
uMT�^�pg�J�3{L�q���R�T]m�V8{��#)�\�g��>_��3�X���q�@r��QXX��v�H�ӊx|Ȉi��h);�g{�������@ZlR���v��?����OLL���9��ډ$1�vJ(��v6V
��Q��v�P���׿N�:���h)0��A��R���+B@�(�5q+��S�b��ȧ��c��p�=�QF�>�k�^��G�����ĥ�xeD*��߇B�#�?r@"��"j�sN�����
L��Y��#�J�6hy�������k8ݼK\���w�X�A��7��1���);���ud�:��<[��%�"�~�o�&T,_�$Ջ�1W�-3���3��Gia�l���R|�5����h�3H�?���*�f�*�d���A�p;\i駆X��4RY	�M�7�`�k`�xY#�-]��_jc���}|Yc,0b�-Pl�=��䁚 (��o��G^�ۑS�5�)�S1x#�Ċ����ؑ��P%�Z1�xl�)�����S�~����yqy�_w}�Gn[��_��߯�Z͍܄�X���H'V�T��|ˬ�R�3eF�*�$AC
�Ҍo�75\�'
>��'��K�†��ĸX�{���X�bɯ���̑H��{�yA��B޲���_����2w�#cNm���"���>���q
V�����g���
a�
�|����brzΝ��_�篣�a<G+i׮!�]JK��'�J�~S�{�*3�������[�?7~��(_�o|����=�h8�ݕ+�t��*�^BASV9�����)}���8
�F|�0a�Ӱ|[[�*9A��(���ȔpU5@_�ٸJ�,��P�1'��A��J�%�ĶM/���Ä�HNt��7v
����UL?�bq��յ
F')��S'�-�ʇ�e>k�^aR���tΜu��0j��p:��lc����7a�G���o�p&�#�q��gx�β=� z6�UJ�s��}���&���
�jB��=t��&
\Ə�!&2(�P���bgym-/�\E��Њb������*��@��	tX+ϧ�˜93��=�H��q��:eF:`&M��:m�2�=�-wt� ;+GK(��
]�-�J5�.����S�s���K��صY���$�q3��sP�Fl��ߛ;vp�ɧ�c�2l���Hg$�^Q�s�[3�ȉ;��������d���.հ.�	���P���ՉI��z�,��uu=w����%m��9���;p&�B+:.}K�o�J2F�����`h��+p���s���Γv��Z��N�/��[w��|�S�lY�̪`Z8X-R���h�/�l�����V>���Ju%F��r�c��T/A�
���u�XAr�e���$��r��=3Ԥ$$>�0�T��/TT��7X���c{���^jɓr�~a�h	E�� &���`�b��F'޽2����9n�Ј��ZRm�T$jom2p�P[�t�gi��F��CP��0�s'��_�P��=c����A1XP�!�]�G�n�/���,���7�#���>Y�����q�88PPۡ��(���+@#ԍ��#DQ3�N�,�@9|�O���Da_^��[8������\�#(d*���}X�V��{7\�gP�@V��q��3�>�m�#uaج����i�*�?�3�W^-��b�ɓ[
�P�����sƗ+����/�r�
`��t"�.\���H�CC�@”�jj��l�y��c�w����i�ax��p�=��E��1�$�}��~a��'鎡�yq��yY�!ۯ���HMM�2����f�V3)��*����E
�Հ.g�*�od�W����D��br�чE*x�ܠ�N�PCT�{�1p2��e���<���z��q�~iչo#f�d��������b��+Cy%M�K����#C~�u�G+8\+>4��l�!|�~�� �\��'��<��}�jQ���	ѝ:��<tYq=�-""@f��M�$^�|�(�f-�!C����G�*P���c��ȑ�k�(��c��c3�s/�3C��Xt#��M�`��`.�!:E~7H��%�"�uN�בIJ󊈇���i|��uzJ��l�a�����t�ѫ[.�0tX3��sX�#]X�n���T�$(���RHN����.��I���tOVh�U���yBt�|T���'y��γ��s^E�o����!���}��G�G�?,c�����z�n���^>8,V]�'��� �D�e��"<�9���Xn�dt*,��A����J����٢��j%c�`\K���	p�"P��v����P���k�wH��Oo�-RB��
K(�y=�{I�-S"��mU��䒴�f�$���o܊"��t�҄����^�M/B�Џ�v�b�U����8�x|�&ZՄ��gr\�[�O���*f�f�.$F����%G9�Ȉ��{f����)�D.BnqF����
D�ߧ���3���qp�q�]p��9��_�g��[�p�,�@w�r����+�vV	6�Њ�ܳ���
�4:��9��J8|5R"��}��44�d�[ˤq��أ)6�1lM�D�����Z��8E�I�i^�J�	-�?���O4DE7�;�6輷���&��,���?<*�J�OO�N3=+_ե����KO1{��Xls�]���V�h���B�<��VA[
�N�
q#l�W�-�2���ӓ�Y_x��S����Ϳ�ٰ�UV���?$��48kH�}p�$p�?����;22횶��L���_��P[�B4

�P�G���J����Ə��@��M�YO�g�ٳ�����-����-��z����sR���QZIa��������ǡ�5ī���k�#�O�V�N�'F�Ýp�k^�3��~�]L� ^]�5SPk�F�ߨ�&0�_G�w�*я�aL�V��"�!�օ�'�H�7n�89����^W��٘���<`r7�w��bS���F����H�hU`�5Q�� ����w7��������pn������+2pI�(��'�|�{KjCN|�-�b�b��R�U�0�џ�GP�����<��"����f��)���>I��G���)�bZ��Y�nL��G>����iɭ��ܻ��w��>�fa�ūΡ����\�Y��Ձ��$��k��Sps�d�_�J|�(��_�b��,�o�ͅ��8{�S�B��czВi�۷��_O|��?���@�9���n�lV��Q�PD�i�<�7B���Z�3�(�]	�(A)�/Z��sj0g�J,�.��xŽ��?5nhni����w�`ɒ�CO�U>�x~�M C0Zh�:˞R�b����>n�~r���|+�|t�
��܈^{��H�iF�5�{�k�4����6�����o�C�PH(G�@	s��0(G���g���[ɼ�I��B�lLŁw?���y��97�c$6�lN�D�(�4��Q��G���kp:׈�1��f�奙�l�(�[pl�3���_a�\���䐄;r�R�+x��jœ�뾚0G�~vf��o��K��<�0v5��־��G�1b\6��5�(jh��;>@1�U�8ݣI�hB�6�#H`"v�P1Ѩc��AP
�z�tyo��H�����u+��g�z<x�Uh>�o�r�J1̰�<�U	""���?���ZEe^��f�F@}���	�^��*
����~+�g[�O��*��T���e���$ͼb�*�����0�N�i�r��8�#�<�܅RY٣-Ob=5�:��kqe�%��ug�K� �����쒂�a=pb�f,�S�|���Y/��7n�i0bb"�gO	/ގ�KM��Zqٍ��E�TS~H�A��Ư�l�ƧphD"�g^�	/��72�$uT[Ƌ����7B�����������;���5;ѯG�"����P���bm�v����J�b[��a	^ή��`l݊H
��NȊ(?;2��\��)�$�d��嗁����wx���q���P_/�w֫}p��L46��C^��@��=`O��Y�1Qn��3(B}���"<�ѝ0�~���x�yKw������Y�c�B��L��WsiU5����o���� �tS ��1t�u3���#��b �W��Fv�?�,����$W'�!��f���1>��ML�Nz����rx�yx��р腙3��i~�!��C��8�H�X���O���L�:��G�h��?.��ߏk����g[E�Z�����aB
虵_���Lk׀�9�Ą�ȍ���'b�z&�{�`��(�T�8�/��U��v���O��W��rŢ�z�5Ĕ��a�D�<���֟�Q��b��hڳq��c�K88�M�nǦ�`֖0��քk��@`��\|��qt622��V�M:>Y\�[.ϵ(Q،���Gq�l�D:-,M�����`Ʋo�{�Z^x]��l�nw@&uuІ��h�Y?��bLʧJ�z}��F�ˎ9���a�S�
��	�5ӫV�Y�fX4b��.f�ϟ�C'G��Q?$5��1�]<�-�5(�		��|��vX��K{�X+�Ф���=����c+H�Z1��l%�#��)�8#�>p��O����w��%2W����*�枧�ߤ�����H�zŨ�b���Y4�P����*�ۡ�t��@�n���w�;E�k!�5��;�C����>�|��+��-S�_2�9Ƣ�`DE	X��?SG5Z[�L����Y�X�_}�q�ӻ�k{��ϐ��9���N�0kI3�X\o�>�^;�Z���pಳ]��e'x�����q텙�
w���&�a�s�_���rz+P��	D�i�R���-Sۘ�w����+��K�]�J��nl��p-ϟx׿9�Lh�i��Y����U�AK�
�JLB���p߱�w�ń�+��$�����
;w�-�T$j�I����#[눴�0��@�Yk:Q�2LH�ʺt��i{�x�
��z
��Y��=���L�����}w���MN���O�*�	�	�
=8!$|��xղ��`L�O��v�ȇs�b��VƎ��B���}G<�s0���F�9������,:
�@��������XY���b!���RtK���z;V�!c?���b�/'��s��4{�%PV���x`B[�9����bL�2�NJ�B��.�����;`����X�6$���e�ѻa?�	��4}6$���P�;��0�@�S�tI %�շ[���㙛�9�BŠ���$��'_���F�y�WL�sr��`ǎ|3����Y41���T+���#�ka1(/B�NC��d����֭?�x��t�b
 sl�|6�{m��u{*�
?��;Dǿ�ÿ�)8c03�.t�2z>�=Vo���=P}�O.�k�	l�'&���F<��Ƙ1�����2@����_��l�3x���ӭ[6o>&{A.<;
���yZ�x��Ti��	�g�h���ڢP��vc�k��v��n(@q�WNB���x1>e�D��#��c�8]���%E��+y�1�����F#.|o��|���A��$��ڟ1��qa�-q����ˉ���`�c��-�fӔ��;��F'W�ۚ
��Q�``L���k�?�h->�x���|���]Uu���ub��IbÃh~�g��f�Y��bʑ�p}��Y0�U	��R�
�3�n�2�A�|i�L�p�]��i��#9v��q��On~
��w��p�>�NT]��@f�%��^|�-+�c�T4=
��k��4�� U8������GBB�kQ]}�
���'�k
�?�CE
ҿք�O�J��n�U�;D:��`��ߒ�t?7jSR���˧�}�M�F5�r��
��U�'l�Z�*��l3sE���,�"���6(��
�����]���
��M�F)�� H�h:�{5@H��D�H|)����
Ȉ��2[;��a�L�c	�Y��&A�ˀ����Ioq��P!96ӂ`6@���1
��k�	`
HA�N:�DR
�^��i��CY�/l�j��r�6�p0���B�L�wJ�
f�l@�����Oy9��"FЄ�[`sk�~�?��Vk�ѣ����0}PVN�.7�&���b�+�l�����O�
���:�w�41�bbi���F���>GFj���������!@�	l�R��$�ե@��X�'+���,���@����fv���K�Q
@��5���˹x�]���NŨ3�[$���>d�TE�{�27�f�PN��/����L2H�p�Y¨�Ȥ��d���s���Z�^
q��4�Zma�񷊇r91~�@|��f45�}�&�).��$a�":n�-�lmP�UPn�K��e�ǽ!���8���CC����j) c� 
�����駛s�ŷ������H�Qd�|�Ɍ|KY�•Ќf�e=.�$G����q?�~�����$�����\	@R����5-S��>� v�
Q~�%�М�{�(��m� ܩ��]���,��ƪ}&5�G�D׏�=�ZF���>��Q��e�@F
�O\��G����N �x�-8D.A��h��߀Mׂ~d��h�7�4��[L6�B��ݴ�o�~�i��贵	%Դc�R�S4K���fQ���M~d���`�ܬ_����7V�e�2h�p�����k��ʹDy�Z���i�._"�4�z�&�\&�AS�r<��p�^Yb)��y0WR+d��0e6�S^��OЀ*$�x�n�Ih:��+��y�٣�43ǼKV�N�-.]�Z�~�uv�5����X��� �h����t��:v@Db�����xd�E���G|�и{	�4;%��%
pL��o}C����g�y2F�,F+��dp(�ۂṇ�ZP��>�0�ۦ�8ö��[:�&��ܩ� T�gq���^ۂ#�oP;�=
<i*��ݤ�(������1�@�z������36�{Ť���'��[g�:~��Q��+����TqI��)�Rt컈/أ�M�&�eR0JAS>V��ъ�ϋ�ݒW�·�ą�M�0��D��SD*�M����ݟ*�q�����1�?�Dْ�q�\�Jr�Z|���t�򛘓L��������+��¸����W��[>tů��_}�I�!��f��kw����4�냣�8'�
?���~��ƣ!�"�G�z(oڇi�J�)�,��C�/+@d��Y}+k�W�7x�x����C^\��F?VZ�,�+����g��l�š����)QbZ
���߁-�1���Ϫ�ϢhйHzp��_2�k�)����Q[��T?������2r8�_1v֐����
~����T����Tr�h�M�'��P)�>��|Q1�ӵF�ZE�J(~�?�U3*~��<	Eq�Ps�a�ݪ᪲P����s�u��0�;��W��q�5�/��%���/�Nk9�E�
=y?p�3@)���2]O?
�(�u�����Qx2�����:���_�w��X\���;v��QS�B+@T���ȫK*q�YY�ˉ��#ӨC!�5#���?��뾆���E���D_>����$ݧ��D��@|,�����HO$#,Bvt6�<΍���ô���H�1�E���|
��[R7x��`��:G@����aH�0C�,�;Dr��>��V'/��Ί��~Ƞc.�e��
ς�Ț�1�mz�D���0J/�N�l~�V	�QZa�.�a�S�5�?��''/�������AoT��\�FAF�҂�c$=��u�=�"7^���ѣG�gQ�j[nC���-9�B6T(V��.1�����0�N�g�k�ѡiA�NJTN�/گ$E�|_�<_�����]~�R�V���7l9DezwI��¶��m�q�u��9T�f�տU�@�������7��M~_zDҊ�A��0l{V��a�O���OP�-�
�
�q4<�Z�9����A��@��b��x�u��H+��6��-Eסg��G�Q��#�?��s>G���P1>|h�)
�[�!k�-@�v��5|�/~1��?��o�Κ�[PP_6S���*6�Rq�E
.k��k��t��a�.^�X���bO�締,,�a��?~�)]�?Q�q�@)Zgn5�r0̲<5n���C
<���Iװ�h��3p�١S�F�SO�?��W`�&`�b`<�g^���"��8�N�t'Ln9X"�sN4~Zq�I���aFC�ϭ)D�Q�.��qV���ǐ�5��c1��,�ɍ����O�]0�O�=&�n�B�����q����j,Y��oGDDn�p^��E�g��#�=�0�m/����S��83�Gsa���!ۏ��S�z�x��w�%�D���t*OR��i�?~YN������|0C��e7�����]y�U��fi�*T��
���C�6�}=|Ї�f�=�]��ɳC7�̳��gN���O¸��V�"�6��g~�)y�̦�G�@��W�[���X!�V�~k`O��9��=��S�-V1š��(���"������D�]6���P��+��^퓰rc	��h��
չ��f�㹄R��[{��=VRI�^#;�
\��=�a����Ix|�c��%LȞ�z�D�⒡� *"
��Q���됚��}P��0�9�l�T>��^}S�g��V�r%�_q�EH^�ݟB�0^��Z�
G�P�@+@��!��\0���A��+�TY�䥫��Rm�|(�a+��<=ɇ��`�>���[��k�h+F����q�e0&�vJ(��T����e*Z7ZQHT�>I8�m�q˥���h�&7��)��?
����lK3�h�$ק�?���򏮖Ά�A�MKnm�X�5�K‚�d�[������N�r�	��l�g���qɅmq�H-"#]h��M[N 5-
��X��m��p�X=����C�ّ������A�ᤍ �xdx�������{�� --
�_q7���`�ݗ�"���΅q����a�h�ơC�db�;��kN,y�,/o����C���G��AlGd�"n��_�Lk��A����a1{�Xd���g�n���m�݇����s�q
��0���
�M1��|\@n�G
ޞ�b��b.߲e����� "��T�o�?w+�|��r�U{,�`?恛�>g�T�)Y!2��>��o!���4 R���
����3��}��rK�{ݟ�}g�dgš��^f�
Q�f�|Se�zm9��jB�Dž�|�>{))E�����vA���>m\��a��p�����O����-='u�4Kԃ�:{����Y@@QT���7B�R�g���P��}��|$ũ�f���+(�W��~~��㷞<���j����D�^7
�/�Z@a~��������o��X"k+Y@a�'`�Ski4�"0����2��T��D覉�N��O͐1���f�"�A|�AZ4>�N�ۊu��c,���2���Rk�̨ScR���z�Os{/��u��1���DF�����;N�aG!3-���#�>+9QGd_���c��n�!Ç�ijO]��'a�nG5{�^��(1eF��	L$E�㿛-���S���0�%4)2.�� D��
%((h�J���<�7Ԇ��A��"�h^�	w߂�ԵS�U���u
>+�P��oY-
)v�R�bB���Fi��[����W�Y��>Y��-(���Sa����Ф^'3m	��|;��c�VA�EW�`%�h��m�}�t�9�
�Z��g��s{��V��V�#V}���w����s��1���%�MF����X!\�dw+��cgR
��[��v_�{	&<����#���n�sh{�-ί��Lp�/M(��Ŭ�0D���ofR�-��`�S<�]�C�Iv���	���OCC�
�p*H�e��l����
�B��`�h�B`T���
����AL���l���J��=^�x�7yga��ؖ���|o�������|L������4�I!t����B�O�+֘�pj��h����-�5b`�ˡ��$ C��M��2�%m��L!�����N��?����jsɶa t�I�g�U(�y�����lo�6��6n�ީ��I|2��;D*<�y��	I*0�� 13q<
-я�������hc@�@�U�l��*K@9;�n≗;��%��,��͢lA����"m�����\����Ms6�T:
�_�EA��[
W��B4�����܅X�8��4�K�A�Ts�h"!�'������"X�Z��+�,�PŦb�_�o�W����4ƛ��UF7t?.,ؕ�t��z8$/>R�޽{Q]]�^�z!**:�����M�O�G�>}�@G���L���G�+C���E��W~x�+ƍ�f
�uO�I�@tj2���@w���\��p/&��ǣ_�p��E��#�;�����p9W��y1s����K��L�n�G�RR��u��3����a��;?¸��S<(**��
].<p�X:{64���{�=�kk[��acU��������'h����(�Ȳɪ fa"
Jʽ"��s�KUwU�գ*�!'#RB?���b�����{�^srZg��w�%�'[���Tz��{-�f��ny�v'�T�E����H��� }S��	���-S��o=�㱧�b„۩S�Ю �i���ى�W^�~��O:���d�A9�kc5��N�%fߙ���L;�Iд���%K�������o���b��Ёb�2̟O1YRR����������O�Ϣ�O�mއI7i��4���u�8��mପ��h%S��H�u�8
OW#j�N-9��Z������N�2���Y�<|�\�!'zCy��}��ԓ�q1<z��#�3�WAwH�?S*1"V��Q\��[Zd�vm؀��=E��6@��q5"O���a��y��R��v��f�w�YC��-�whp_샳��3Ύ�>x��5�_����鐙<l��y���DS�\jd�����e�$�����G����!Lw�7�����'���.d>E�M?�Qx��X���uz��<�>�.`���Y~(�!��-Y�p&wP��
^8�C��/CLL,.>�?�x�]
j���Am�R�1c�h�Zi}_}��u����{pȚd����555|b�;�?���0^z	�ʕ�^�f�Y۩���$��wߡ�V���\��D�_O���+����x~?����+�x�m~���ñ�d�U�1ud�i:OET�|�<ZN�Sʍ�e�Y�9�!}Ȗ�q�¹x8�6Ӯ���;�J���+�V��O�/F��@cԉ�h8�
�J������Q㵐���#''ʐ:h�G�VTb1���܀�n��5<��6<�Fh�
���m��VI����Փ:�=����
�W��	H������bh�n޿���.��;�@D�Ψe4�A�|�NFQ�	�6 ���W��#
�u��΁·����3�^^�����oнxb�L\��\�},�!@�:��"ȄP�4W�)��S
�*��ų�c�9*0~�׈�ڡ�`�=ft�g'u���c��Z�]
��i��ˤ���hu��h��^��e��Su»�7$��ð��FϮݐ�#�nt�9!Зt��dt������X������v�58��4,��ad~$���z��	���g�w���,(_�m�#�8������l~(ʨE7c
��F<���+�P��t��B�[<0FbVajO��Q���x�d�Z�k�p��T*M��"9+Wy#�g7�I^:3
s���+�Ҙ.���qqv����.������P�
2���nG-����d<͌q睇r�T_�e�l�����$�~K=���fA� ��y��%�=���P{ύHz�&��p4͚
���~T�%���mDnl.�����������V�ë��"�ټ���a*&vQ[�`��>-��`H���t����v����Ki�pR,�;ad�Fl,S/�QVh�A�g�&v�?Vģ?+suFaf߻Q���[�;"19��7] ;����աf�F|�&��E�XQW�ۦ߱�]2����5�w�H�q����`nm�xk��:�w"U/��؂m�i�/@����z���b�q���ln=ʐ�&�L�4�8x ;�E*>�3�	�u�`0Qd
Dj�J`�x	\,]�C���_�������ݏ*p���	�(�&�_/��G^�nc�X\Q�p��#~�9p&&���_p�O$�"L���V�ϫ�q����֊f\rz�O{sh��&�p����;6mn�>�x�3��u>����x�W���N��~|&?R{��^F��];P3��Y4nbsȽr�`���Y��d�&��g�|��{��q2��T�LW����{C		E��G>��rܣGC]��+��^Z*Kl3p���c	�ؘh4t:?�ױ�t��du�����T���Z^/����ʠ����닐y��3�+X
�3�{v�S�!��q�e3,R/}��_�������x��uz���X����p@o��z2�A�8�?��YIT[`����׿`��~�
p��0�o��
�B�=+��v���X�:^?qx�8ivx�����Wꠓ3�@͚/�_v���^��-��)�pc�vQ�B�+��
�T�3�IxĒs�/	��#,L�O�A����'80l(78]΀��pe.:=	��F/n�$����w�xq��l�(�`�����<�ً�+Ѷ_6�2��ix⌙x��'�̂I�o/���%~�Q�;ȥb��Nzu	��
��7�-
�v���/��U�@.���
>�Lmq/�w��*�
�[8���2���	�G�QQ��P���!��i�r�۷_~�%�w��/��v����)Hn��="0jd&�/��,���
<�Z=���67؎��v-t
�5��������ş����[�Q8t[֟�Dn����ȝk���Uu;������bڿ�q�"���V�����~/*�8D� 8�����7ʰ����WXm�(�b!�P�Ma�=?�$��3��~����������}2��"}z��FW��M��RA�7��~j��	]���
�V���
��wi��4 6����YL
d8��8�7
��J����8��b#�U�ȷe���`��/��w���x��\}~:F��������e����xF�~2�݇=X��So*���)k�h���B^yΨ}ڤb�̡�@BS��5���(�9��Ϻ����k��~��X���x�>��{�w�+E�n�~�g=+v��y�g5LgX"��II�κ�ήqկ�ѕ��Wt�"x��l�C��᫯�A
M�LY����`j��6s���3lT���sQ�Q�};�
��o��hb��l0��O|�!�)���
t���8t"�J�d����d���C V/�A0�z���j�,�̍ݼ����&i��[�G`�r��Xj����������)iL%�iw��f�(;�b`˪�*pX�VI�w��U@��
P�S�D .5�b@���*��Έ����x���s3�duF��L�]ſs��4n�WT�カ
7��e'1�O<�87�]X���{�>l�%��WB���F�hH��%��ɢ�l��ӹ����ߟ��HZ-ޚ=
>���5��?гM+P	Eظ�	�r�b�������3���˺�6��D�9998��$��NO�7�
��I/##�>�;w�Z�o�f!����Ai�*�6�q���?�4 f�Y�q�9N���蒍��c�>`���U�s@si/�o�=�=�7n9.ng�ұ޸��e����|�(���"W��ɓF`v�]�����������T4�i��B!�0-س��a~��z�t��W�"|5�~�w�]��
s�C�7o��ɛ�����o�+K`=�����QY@�n���@�Ȱ6ï��y�O	f��]����,�u(D����A|��Z�O���|�@����]3˯��je��K���ֻ/�:uT��Է�a>���U�s(���R��* �p�jP&Xb�X�3�ܖP� ©*���5����&U�B��-��7�̆t��E7����ų�n0�"����W�`�S!)<l4�ުT�w��`t��!��
���bM�R��Ӫ<�KڥEl�g!;_���$�COB�j��U���+��1��d]
d�0��U���I͕�`]M�9����r2Y��,������������w>x��"�3��"���vH�GB2��B�@��;4��*}����Z�v�Ų�V��=���'��u҅(��0�TK<�Z��9���O.G����+��G�awi;�H�$BU5X B�O-��}pKw�^f��^�ɭ:ڀ��Q_fp�+Me	*��I^d��ALd!?��%Sq���X��>��������$�c��S��m���[��ߑ��B�:]���ڣ��5cѠ�wf?)�����E��e�R��dVo�!�5����8��~�C��X�S���iҭ��U���|��Ō
�4�~Q
S�B���oF\�����H�CiXn�esÂY-����������G�&�u�W�_��t���8�����d<�E"��vC+-j���M�<����s���3�"|V]
�1�B�*��b-���랞I�K�[�D^�i!"���Q>�;���8ܿ�:���&�?'=�Z����MJ��#�pc��hD�y�68�m��r{��Nmđ�h�U\<3~Fj5lh~�qJ�0���|��Vh�ݙY�6�]�A+@f�!ػ�=(�F����	0^�?�%��&Fq���)�2C-!��,�	R��0�R���b���Nd�������S�3,[�*��b�����J�f;���F/�\�V����bl���R�#@�Ǟ�
b�p�^p�ۣT�Z�^���7�>7�7���`I3�%�����l���?��K�@yC9>���M�0�fd�g�%X\~�V�	�פ�7�د��u����z�}d:�vp�3�n��!}%v��zb�i��0��7[���5��T4W�nQ���KJ]��{Nh8�ׅ�o9���Hʭ�N�P_��h4T���hٲ}6���ϗ�ԋ):�;��߿n�K�kh�)G^��ƃ��ۋ�p���4��)���[����l��ʫ�4k��M�#i�:�5ߓ?F��V������QБ|�ta���̐�W��5K�		��d��h�d2~f�,X>��r0B�:�}6�P�2����#
��Z&��-�㜛�Yb�r-HG����/R�Fppn��Ĝw��@����.�'v��[���q]��l��{fpe���O��@74�a`撥h��~��i�C�#�(ܑU�Z��뉟ww⮍W�D��7�����JO�&cC"Wu�i��)��1"�=.�@S����d�녥H���-4��"��,��w�A�V̒)wJ�)�c��b���e�bӻa�]��Hk����P�hա��Ų�t�Mt�~������=a��j�ٛ��G5��c�Ah>]��߁d�m�����E� ))�oT�>��8���!6?_����!c	s³��2Q�-�G��t�ͭ��˱�p��1|�������!�hY{7Qn�%��7����[P�.�f9��d����0��3)ޅ�D�N�*���}���}�����9/i9#"`@����	FTL�9+
�L�Oŀ3�O�(�%��l�e㤎��==a�۞����]�n�[�Ρf�?o����yH��9Z0���K�+R!F��t�`�Y4���h��Q�^
�l7��[;S�}�~D�@r��b��݇&�M~��_�A��.-?�-:�i�\N��4��ͼaZ?��/���a�ې�>�@m6�=[t��W��͏�7���Gr�_w+�2ڠ��a�WBS�4�N
�~hsEn�n+�C<��2�[ѣPݵм�64�fu0"�P����ؕ��h�aT�2Ħ'?���gg�j��N�ƝH~N�y��V;b�4V��I�?E嶰�ր�jBV>0|�"���ZYGÓ_CF�`,�mT��2,q7j��vpB)X���t�d�(�������ޅ���b�B�–�g���\tho��g��k��z<�����]Ga�Ĵ�2����2�gU{c��E	1$�3��qw�%��a�?FI�t-hb��T�Y�G;֩�&
�ϖb��ۢ��'���GkR�X�pH�RL�}�WT�e��1�A�v,Fna�N��#�©�ߌ%{d�!R;)�z
��V6�底)p����mF9�Fc\3�8�'��V!����V������
���(Y��U����#���oj�ͷ�t�0���|���*h0���� J�e1�&D4���j������,Qi1��rT5h5ə��&׶�V�/��2ʚ+0��kxG�v�$�4���$�TQj��X�!�Fq~y���kp�(�?q�i���+Ҝ�l�i�K�M�C�����*%rb�Fc힦ĭ[Ư	�/]�G6Q�!M�9�.j��@2�
���yh�b�~5U���P���<����l�(�3���Ե�q�˱��)�w
y�|� w����c}[���	`=��^E�["�6l�%2'�2K�a�Z஥Y����1�Vj�X+nN�=i#��&�Ƀ�
ŸoD���buGf~�X_w��c����
O�Zu@�1b$�#Uqu�1!���)B�G�1����J�=��Y��=��p�ε�ɛlW��B��}�s�3����7��j[��4��NC����m���>g�yڻf=�O�V�BH�nh���OajP�lpF�n�8�'^�Y�r�~�D�MX��K�6�`�)PaZ��Λ�FM�9�y��j\��Z�`#@jnٝ�ػ<��;G
���(�G�v7��umۣ��f����%ЦEFkN���#���ş~�1eepy|�+��T���"����wA�*To����M 1�k�TEFk���YP
v~o��1t�2Н��}�"��H]Et�5�k��:e�?[��H�[\F�͘�ۙ���%�ں���j2~\����Sfc��8�3��@I���;|%݅��C�|��Q��H�sP�c�u�@��\�ny�%���]�h-���Dh O��cI/�G�\��Q�"����bd�yX��cCd��eZ-�W��V
	�v�
.��=X��a��(�C��u����>��V-��·/�}��s�4�aj�y�]X��0zU�!�M��1p�!�\p�-�P��˿�ƞF
�3S��Ш��Ԕ��\9d����օϡ�cq�XV	�|~��,�C��eT�E鲒�b�`�pٯ-\.Pb
'��ñ%��5�B�F����`�;��Zߢ�:n���K�}S7ou�H9(V
��]�2Q�O*B�d8$�L\�0׏�H��l/u�fM�)
g*_�5����4`���q������WLvW��
+�!3���Bd*9�&�k��7��^~u
M�dN]!���5S��CI����6o-#�Rc����%*�9�tB������mR������g��"'�X���a�jH2��J�O�%��J�6Z<���J�5���)mi��J�bHs�j�uA<���/O��1GD_�w� 4����Ϳ�Ar�������m Z`8�ş�������_*��1����m>���	\�������/چ'�~,q��$���]T�t�y	���1�mbZ0@s���7X
%1C�%rv�����6*)萗�<��F>U�T��Y��%��*򼇛Jf?��(Ё�0�+�2U����p�>t�-2`���?�ƿ|�JS&�I��'W��%͓�}m�?�´	rr�ѰL!�����31�w[d���ǚr4U)+V�,f9�{`�_���p~�"����K�w�����w����y�g2�_��͠���C�g��1�9ɺ���=t<#����5<�PW��S
�X��	�����.톿�n?��/���!#ͪ�r�4Q�x>-^`�UV��[X}KX
�1�oα{ 3� 5pvf.&�؊��*��Q�B����h_|��=B�~�|�p�dk�*�Q%�c�&��k�_��U����yDxO��Eb�<��?�0}�?�8�.���iJ<@��7d�%ӝ�������C^ƜЕ{�
;j�~W��a�#�ՃT�	3`|�r꼝��(��Nj��tN���	��_��w�9����D羞�mt�w�!F�.�j<�d��;~{��gѫg2:vL�,L��������?����Z���:J�x9Gd3F�/�NJ�bs��t/�머�����B��)�@1���2D�ӱ8��ڋ6���M�p44�ki���X��E>�U�3���v9��[I%�7�_�#�kkeAY����ܛ�R]ƊNPB*������"���
�u�<|��o�#s�<�Лb�P��h�Cec;(�˫}���$�텒�5�c���yB?�ӡ�
�O�[8?<O�9�i�V�sV�9ߠ���j���<�α�νB���G���Sx���N�N��!�����֮_	D���E�U���ӑg��9t�	��YxE�b��F���~f�W��'I�v��(�dئ0n�.�jI�:��ݍN�0��\��X<��^��KE�=�U��NB�e��̓�y���Rɭy�8�M�mIM.��b��T_�DZ�}���p�-���Z��X�"<�O�m�΂��4�[�H
�A�낧w(��/T�o�	>LE;�����(k�?nANf�n���zC���j\��+����8��.�ٮ�dl��4����s;s'��6�A�L�P)�TG��O۳�:@�B:7�@��%����Ia%����#X�,��3?��_~�Hv����$�n?�����nf�T��VG03�{�NV���a��z
{.�>��F�ܟV�}5�RU��zX�uضy��V��/��ҌG�=G
.@_��'}U��*�c��;���.ԟ�܁zi�t�^/?�˕V��
�o���c�UVV���k4UN��q�@jUn��uqKT�5�O3Ճ��V5�cC�~��ބA'�P�ԇ��DP��d�O3G67�Hb�-�%gkX,'>�Y��f`�]�=N�.�����~0��/̼�(�	���a�J=y^х	�:W��^j�U�����^3N����F[��%��x7���?�j+Mda��FMI3��4�uV�l�E"��	t�k����WP|�#b�V'�ڊ��
帺��
�8�sw�����wy��xx�#���Sw���e@�� ���Ы�(��E�b1/ehc6BWT5�<�?��p��@u	)�������;�T�ۍ�k������SY�d��ƌ�M~�����}o��p�Ԇ	��Vf�Bm�BS�������,�sm�?~b�������ś�q<J�FPm��F��l�I�N�A7
�R\��'�$�?��!X�i?�~�',/AeM�u�l�'�)'��n���~�	.��Y"�w�����R=�ڐiOK$p��JD P���a,�M�,�Ѥڌ<�����hj�D�.�G�W@D=�0|�# f���hyu����>�}(򣴥#:���@9�}�xhՓ�x�50��� =�զ?f�)��u�8����kSZhdpt;��w�L�=V�@��`R��k�C���P�_t1K�N�Ÿ��1�+d����v���*��'�"����ػ7� R����氪8��HJE�h�N�_�B����5�x���b��H���?/��v�R�3æp�<����XB�{����H�3����V3���������5��Ą'	F#1 �C	�昹O^���Ȑ\O�3��[bY-��o��k�]H���6L� �ˋ����	�ؔ�Ě{�C6,�Ę�¸j|o4���O?����Acc{�zi/�݃��E�E�[�H��@�b`W�R��Dt�����<�=7]����`�	l]cJ���U�M�G;�~Ј�4�h�
�����G�ME`n(H1o/w	&
�E�A�`�r�X���硾�Uf�^�-Yj�2M�nN�9��?�ͻ��"=%����~�g�/1�r:�wz�@H����`Hp
L�%8+?��:��~�m����V6��/+N��u
�1 w~(��k��]_����?�n�]��w�X�BE�>g���z��k����:9�;��‫,1����>)��8?
�e�҃,q��H�%#�S$
n��Yd(�����Eb�T�k[��%+�i�����y��S�sU��EkP��3�֣׈��<����-P�
��"?;�;��@�.��X8���>��*��W(��-���^*�T��*����O�������Yb��vt�KBI X��-
p�P~��Z]��l�|��ȍ4�.�p��-^`#�%:�۽��$
!=��r�%h��O&�sag�;�����\�ڃ�fcs���WT"�UZZjZ��Yt�P�"�^3�5�����J��\'�!G&��?Fǧ�'�I��K���'^�ԛd7O��-���Ц;+ܰ⻸��ޏ�j�/p�\�iY����4nf�Ӟ*��J0�﯃q��]�T��v	2�T�
��.V<O}&#��Y�ظ,
С���B	���	�҂��ωq��c����J�g�X㴁�&>���y!
��(ٟF�AGF�+��Յ�O�l	�F�M�^������[M�(7��~�:��l����H�"ӕ���(�p�(���X�)�;��w/<�y��� ˫��򑸮�6�;���)&'mX��_�'�v�{��Zdt�~��
q�
q��D8��$0��1$���L�!�>;�@C��B�*���]��d��B!Tw��	�e�M]�9=�6�;�>��2��թZ��9��$�'t���߳�^��Z�?��˯��S{)(}t��u-�=ꂘ6�D<|۰����g ��p��F#n��죧"�<����c��O���caнϟ�;IÞNC��K��s6b�S�9ާ�T��k�^6�I ���9�i[f��'!��PK3�u(Bz�s��V
�v���U�0�L��A݃������ƨ��8��rG>���w����j*��ֺM�"�:'��,�7b���,k�% KBIb����
#,d$��D�ap��t�P:~�<�O��K�_�icF�x��g�/cHW6W��͗:o��=}�w�m<i���m�ō�n6�܋��ƚ�%HJڊo�w���C�G�HfYe���Y�_^N63�N��9ԓ+s�+� ���`�C'#+=����j3�E���/
F���b���F�˯�<�h(�a�x�P���(�ǀmQ�BCsؾѽ�\ɛe9��7��M��j?�Le�D^���ܞbb�FQ�ijx.G*�:��
�"y[.�K���F ���l�T7����?
���=6*�иy
�̸v�ޅjzL}f�QGE:3D�����j*�g�F!�}��ɹ*�_�yQ�!�<D������l	#%@�W�p����<o�i�Uj47Hn:>�FF�֟>�_F+/'�O�v�w)�5���nyS5������u��<ӄt��������﹅�x,^���G.FFZ����Wn���^u5
�ay����;f}�Vqѥ������t,�*��u��]�)���Q� ���S1i����x��SP��ur��\:�/��NA��m�-��zh*V�0��0;c �:otO�τ��P��F�2A�g7�v�T����D�1OOV�?H��E����[K�Sd���l�%y2��}Ʊ�ԹR�SPJ�^I��P��[��`�`@`�X�_���v�P�}���|�>}���6~��^�H�
p?��Bi�/:�.
��Ԋ�J�JE�Xv���<�(���!��x/�|�V$d�����������V�:\A���)�u�l:>@mח���wh	]�^ɪp]��M��Seȳ3�r�5�0[t��׆�Cv�3�l�J�|���:�*�2Ы����F������93^G�G���MI��h�{�J#�q��\:n�IDŽi��W�ٶ�q�aF���Ƚ�p3N�f��qQ��q�|ό�G�|�zsd֗!���`VԊ�W�
�t��]8�~����3^O�Xʪ������p�Ń�Eo�U�� f$��ُ��|�]Ie�5����-t^��Uy���=rwO/��IdԎ�ȩ˿�e�[�}׼�a޿
�Ь�q��M-HBV�g��10d�?��8%b5heY/��O���Bc��Q4,2�d�C�[���(��is�x��pt0[=R�0���8-u4FÒ��w�Q'��v��&1�N(
�nϰ�D�����($+�f;I,j/�\��P��,B�t�R��^�_g��&ߊ^O�n�2#/�`��r����\����ä~�P�����&M"7�[�����bl�=������z����
�>�u�3��՘���K:�֩#��F�����ão�AZ��+�p1��\d}��o�DF�.B��3�n��X�l�X�8��s��q~��������ќ4'
-�{n(�s�v�ϋ�]F��2�͖
��V�h�h��s>T"�P4�5I��#QV*�X��v�’��)�nي�����G�F		o��N�W*26�;������I�,@a^Ox�z�1�2$kP��[)b#@a�<�seI�X:�b߰D����(�S�<uj����|���VX
��RRk����g���!�ҥ !�wRN;����������&H�
G"ʯ��>M�ؑs����.�IM�3���L�z�Ȉ�3��#@���2|8
Nua�g���j�P��~��uMSU�:]�:���i�2�Ue�M�x��U�ry�]e�����Nl�V݌�U[�5�+��t�w�\�����L���*[��>X�!����7r��lx�3�v��g��\�Z�b�J��4q-%O��
�����*���J!���WPc�D�:���J
w��-܄%�lAcBg��X�2�MS�c���b�V����S�r���j�@�M���m������
� f�vw�÷�bSN*U&��B�"��-����݆5����7��cC�B!�$�A�@IkPN�(:,�C���W.�����A����q�i��:]�H�:����i׽�/��4][a3�1��rF�)�Q5�l�����c���:��,��?� e����,5��u�La(L��ӵ���6٫��	��p��E��+�>|_�8��55�_�����gТ�� )

qX�ډ��g�@=�?�]p$B!Ͼ���l�5�7�o,�ޫ��C�r��m;v�4b�S��IT*;S��ߨ3P��%߳����4~Sx��Vd"ͦ4�W2�)�kj��|vn?fZ�~�4�F[������|V���-�L��droɟ2��:�A310M��[��Y��#��q>ψ�`4�s)0m��������؞���Bud���w����ZL��##�b�`�Г���ܸN9~��x0k��^epE\�Y�H�;#���&N��{�܉�OĿ��)e(H�{z�!�����NmY������R�u�\�>'��1y� R�z��
�YyR��N�;�;���YH�$�B�$X�6��X���Y�69�����
����+k�X��g��?X%[?&��:C��/�(�t�J�/�j,���6��8���ۆ�E^{������*��q�\�P#�Ǥ�'�.ꭡ>,H�J#�Ea�)^�=�񞎼wӱdQ��&�w^�Z��(A�,�1�c��6$
�P"��@N���\-���p@185��.�Dt���5n�y9mq���"�Qk!��Tm1���*(B�[o��gO��F�����gf9�kW�[���X���g�7ciK�Y�~m���|�9J)�N��k�ss
������`����hT�q��J���W�6T�L�(��v3��K�3yxF'ا[ܻ#P��v�<v���萟���.�ڒ ��d����Q�<,�Z������C�t��f��[�j|�x���t��mQ̨ !��MVh����VS��}N����OHȃ.��jC ��V�]G���
,��4	%0���槴�r�p;����Rb�O.�
�`�X�X���������|nN(C�:u�U��[�u�ݻ��͍xw�z�Es�M���O��[a�
w[���`2]�n��Lå�
�n�Շ���u���Ka�u���r�٨>�H|Q�-�o�	9)9HOJ?��~���mFX����������=lA�8��&?Ú�D�﯉(#$��EXY��^tq�<��C	jj�EA6�x�E���S\�7t�6p;��o+K��>��h��9������IvQZZPN��#��,��XT���w@
hh�C�u����A��hG[�� �dN��Cshh”:����6?t	`��F�(G+���2�.Fc��;��tڛ}�!y3�|��%t�1�3����#ś"^S�u{P��Op��wG��A��j�{�n�$�D������#
`��s�hO`���[�scmY�a	,8�5щ<c�%���Q��'$"�c��w�Y��)���1����崕 �ɠ����uV8Ɍ
l�)�+�8!�s���Y�x2�6�4�a�҉���[)!���&����4�#$�&	�g�	�C������w�aZ�
��ܘR��v60nd/��~y�K�q
^���q�4���f���[�X-K<�����H���O�Z+��^f�.]��u�q�ysľ�9u�)7GR�'�;9�9"y�n�x���B��)�w.z��H*��V9Yj���T~�����'
H�3�Np���8�f���{g����[��Fξ|T��g��6Z3$+�.Y$G�E�S�3E	�CS��I�<�ȿ�v�8�űoȕ����0�x��5�dt�2�?�2:�ԧ'��gK�&da�L��$3�%-�Ω��<���GmZ!v\�<؎��vp�z�ۚ�����=��L�v����[��I���a�I5�~v��}B�6��
�<�Wd���+kqcQ�
�?9�
����R���}bC�V!��P������<(����rE���" �/?���m���V5�0��9V��L$"Y�צ
I�m�2�Mɳ�jӑ�N��V�`8h����T�x�'��[s�[���DH~G/E4��HnE�,����6ɫ�
�I(G��`1g�M��׷%�_q6E�e���B�
��Cӆ1(Zdi����EQ�cՠ��z��b�JS��(�	�Ѝf~��������.������6��4I�N]BFt�0Hd�:��es/�B�=�j�f��P�{/rhu��;0Ǖ�腥�e�K�%q�P���^��
���X_}�`�����O*���(ɾ�L݇�j4s�FYt,ʱ�1��'���ΝPJJ�6�9M�}��\Msð�ˇ�Q�%rY�n��77�6w���x�/CjAW���I
[�´�ԅp��,�>���?�篎��7x�%���5������8*���@��Vo��|�E�z�1��
)�au���2�H��%�ے�};�>��Q0�;���PG��Q,�;0=�<�}�H�T0��F���&�z-�G�)e�0��CP���'%ŵk��.#ʵe��4�~�IL��Hq�AE�_��k@ou��D3oVS�K���z����x�&Aj,;{�<r�Xcv� \ݣ/�*�߶�|RzvA��J��6)�3�yg�"��Gu�pYn	~�3aŮ�v�����;��>��,�
`}݀B
(�.�M	�m�W1lv��@jj4+���w���у���y�~����kݎ5�� �e�(j����b/k{�Ǘpǘ;��[��	Y
�o��',~{+�ҫ{�#�[ށ��ė0�i�0ӯ�� ��L���̌?� ��_���u~f�l����`}���
�����H�	*�8%d?�M��4���~�Q�ꦍBCӥ�kg"�ƚ.�u�Ǚ���]L��A�-#�gx?t�6˫'aȶ����p,�|,	ߍT��6~!z��SQ;b<\Y�du#��r�cX�����EC�>�K�x w^k�k�aB��4둒�?�P1m���>��;�mg�1R%2r:Hr��X���a�>��;>��$���u�=�y[�Tm���0&ȓ���	x���귲������� �J���k"�c_ZV�V��Ie�dHx��Q�����E�V�Jq���!�ux��"T֫��<ޝ�K���I�n�Us��≯izw�F��qo4����8�u�8���)�՟�o���>'A
W�61�E�M���M�{
ޔؚ�c����h^�8M��9M��C�y�v����M��^�����/��M���)�Y����"�^��R�AyB�*��c�w�R{���$=�?��vI�适�����Q"�	� ���~/x��X
�͒�J����>�Q�*�e3�;9/u o�P���0�(��jU �'b��~�MO
���Ox�o�����֯o�Wq�����g5��(� 1…u^�cJ�e]�q<�����k�w�,�slM�o�guS����["�=�~�U�f3E��.oR�AE@]���/��2��E���	DM�D�"��8&u)�şo��_��9�k���3q�q��(1�y�E�+ĸu|�Ӌ[=9�h�T�P�l
[kT�/ga����sv=��"|dPs@A,�4��/1����>��i���H:�l����C6���ޝIy������;�
�7���;7.~c���ν`t�%�=����V���Mƪ�U"����8�t)�(a�~G����:[Cx]����|�3	��]��t�T���~�5~�1f
q55RGJ�l[�]3�`�O�O_�|&�}�$��mO�DM �&��<P����؎������ڍ��sxó�1�F}BU"C�*&���ݰq�*h& �y�E<Z��&\�g�[VSh�,�i�#iHN�
׏?g���k�jD`%Z��Q���һô��"�]�8b��l
�I_���j>����vf_\�ČݘQ[̩#�`e�%+�UwE8lb��
���YV>%X�y�ԩi@[H1���Á��M҃��zk�=���|�d�j�I�;bmEbR8+�I��遵�����ӳ�1C=k�Y8���x���7�r#�f���ʭ\�Ed[�j��Y�H*|��Vy�{�x�<|���eK��kliv#=�gl}��F(5�!aRQ22a4���TN�Hep�b�V�L���
+b)U��BH($Gӫ�7t�t�//W��rN;�93"���[�PU׌���
��:�.�Y�,��.��Ť��7�aؖ�G��~�\��{��Xk��YY'ayy�~Jʢ�5��~-r)
g��~�=	����j����)i�'kO�|�����C�u�*���P��B�J�O9�#����+�T����CLųKq��xH�%##%}S��G��;��|ߗ֗�{���H�j�(��q{�-��8�3��n�C��8�!=�P�ˡb�C��.>�i1�"�� ?��"^7$��aS����X[�u�Np�@�=m��⍧�#ϝX1-�{4-ˆ!�@�ž�ӡWW��9�~f�O�,����RćW�\��� :�g�ļ×�u1���H�rYSc
��$���i�}^��BAȕA�,���FDK�Ps�<ij$�0�7���w��E��6��'Y)��FqZ��̶?�alb�Nt�ѽ]F�Y��ş�eC��}����"KF��n��
	��.�HV�}���?����$o
�����6m�j�+��o�0����j���%�Kʋb��n���ן���R�~��)�`�dc�̯�V�0'��{�7�$�㺱�ߺ��#�ȥ�[3���㲎�B.�+b�\n���64�V;��u��:���Lx|����Ir��B�0����$��}ב]d><tR����_�'&r��G��}���N<ې̀[�:$��(�l'��,�QQa哣S�]��A�[aU0��3v��$��?�",��8＀���p`�Rc�#�\k^�z�����
r����P�����}�+��t3����5�>����t@�m0�q+�®���z�*\��T���m�
݅S��$�E�F�l�liI�n�I|�A�`��
�e®biz^4�ֿ����<���п=��?ݴ*s#_E*aDoN�ok��۩d��8����x�v�V3���(L#&�~�@�G�}BǟN�^�	t�Q�q<��}�sϝ����1gN2�m�I5�t�
�R/X��rRȆ�9s�HV�H�'y�0�i��R�n���h��
�sސ�2�W�"������3���)|�a���h�d���q��y�>�$�0�'���p�N����xq�(��ۯ^��bl�3'�eO_d�݂�L枈���ajY36�=��(�3y[E�q�8�WY��dJ-��H�߽>W�kE3(�%(I:buz��µghҚ���	>��N@}gʵ�P�EϾ�A
�0(��1P�B��R���!�wGV��Jќ-�d���=^�sC21S:�thp���	gB�K�[��t��t�:fmiN�V��X�{іM�~E���C�9��k��.3������(��X��&d��OGǎ�p��U�R)��M<�dFY�^���;ԃB��	�P�1p�|y�Σ��Л�PR�N�o��[g����d ���V���,�2t��{!-�wqo��Ef��0�T��z�5V��]:!���Q�~��c�w�d���zM8��s�zPT�Ćhd���Tt��ۧ��m�d�g'��v�PiN3�8<��^�f��	�(M�G��|��)�?��U
�)?��^�	���VM�g0��2�(�G�G�/�F�גi�'Bi�3\��	2Z{x�ǪPXU���mm�'>��Ѵ������Tz���Hdo�oj�|_���χ�lT��O�͚�$'f
m���?"�g���g��K�~x}44٫���HV�,g��`���X�6�6�k��r-�4�uЭxw��ѸC�!�f��T��o`E����ZE�5��9Y
S��+�6��oz
�V�o�]hd6��4�^Fwì��m�O���ӽ�4��>f.J��CrRg�0�/�z���S�󊙩���p�&�Fϵ�5��_�Z^/yk7��4�	^HM��҂8
���_���0�ё��w>��È�O!/����Zg�����������ݞ�{.��j���G�6��:���X0�1Z�h�)JB�=�4�j47΄��-��
�dd1ݰ�vF��b��+���={p?
���/d<���U:�`�y�_� ��Zu�AJ��;G�	Ӧ
�SO����u�Ƿ?Qp���	���G��^�h�ǜҤyܾy}1��D<���d8�i	J!C�Y�נ./�>.�5+�ZMC�O�w�ۗ����u�Z*���X��=�4
]{�|��]�i��0(7u�#�Q��{
z�,ł�Q�ѵM;6bݯ}�5m���_V����.�O�];.��m��U4��t��+:~�nM��V��lΚ��b,�51�>�4�,=ë��
�;���CK���n�HMC�_C��tx���@�'O�3����w�V6�0� 9��^��J�%�S'�pq����ޑ4�z��z��D��dM�;!�Z]�\�t�����@R����‹n�ӧOG0���&㵷��"���Tч����ŴI��N�� �+��M6I܍��Ax�Y�r�X�Y=4E��рS���vZ[��qP������e"Փ��2�&��z���)�4�p�*�]�Ov6��0)�����1��F`�v8�>WT��VZ�0�)�f��:u�SG�����p̀r����,4�-�n�[�+���V��e><��
�z���a5��r�3���<ve��JBH�C}�ld���u�n���g"=���?�0��׷��D}+���G�	r�v
�#�8?6`�~�%��F�wƙ)(���'H� ɝ����!�Ms����X14؉�$O�����mRJin�L�-����+p��	Y	�D	$�@	����P:n�ިa��p��~�%�Rpf�S�B!�KX�h2���]A纘��͠F��ο����::}�m�<��a�P��n8w�{8�V��
���	�=�xu��O�/�u9�Z�oᾅ<CmC9�h�^�@w(����lhAM���M�X;��V���xy��(hS���#������1R���WKQ8�T����"��<��k��P�����:O)��<_����|���~�+~��D�<oP1qM��0$��&�y�M��;e.�ס:�sB�:�b�F�>�9�J�W���'��3c
ڤwB𜭼��F����+&�>��]�ym�DF6=�lԇR#s�EB KR�H8P�aU�%�Ȥaq�Q�/�'����پ���Y��@ �o����W�^�?>��~FE�G��i��xV�XQH�M�)d�ph���x@ߥ*�F?�	���]�@c��J3�dv���1o�<����A`�ˀ�H}zu���y�-�㥙��f����QK�'[��e�S��x��QY�/��!�jn^�$�<,Mr	P(���n���?�Ǯ��s�;��e�=C,�65P���c�ToL�Ib�	4���j���c/�>�&�p�/����#E1��T�Ze���]�h�9u���M�g1�?�<?�.��׼�r�������3���l��e"9�$(./$:
�oB��u�V���	�ɓ޵+�C�K�m�~��z�����=�h�Z;�Ō���nŽ;��o�J�O�Χ���3|K���s�`��
��[o�l�?���H���y�-��}�0�p$2�2��ꗱe��W���p&��*�SJa���ʳ0��cp����]v�K��M��B�
�}�Ⱥ�&�u�L����¸�`y�ے��o�O�t	�r:�%�
B���ž��x�d�G�5-B��X��Vr\̈��Ϡ0j�t7;�	���*�!����R�g�6�
~x���d����xbK��q������=0���\�v�|��>��A���Aބ	�	dt�P ���2(U��.��69��g-������=Fl޼�4�R%���9,��t��nf�0���0�
|��%L��H?x��_�H����sv�7���a�z|��b7k8�	�^����VLaE.:�x��\�V>/~z�s���R!��B�1����ۤE �!q@�@ƽ|�i�I�ՙ�����/��t�O
bR�\�/<�G}@��[4(Z��9/C����f
�u'����f�?t�+��6�n�=
Jï�e�;Ҝ��M�ۏe|U�;����NŚ��",�C;gI�狝.��=4z���Ř�zu$[�d\8��8V��l���%�	ȕ�Aiq+�c��ڹ�X�!��¾��BϻzF���-�3��?<��4��lfm��(�ۑ������E}��,Ĩa]�l<�#0L�%������0����q�8�[��8�3ȹ�`	9n�n����گ��d�M1^'F�XDe�-ℬ֠�EȠ�j�8���:�aU����$�p���	n�on�Y���G��2�����8����W��D^�/8)I6�o^�dqD������;�$���͸��&�܆�P��g����B��<���7b�� ���&V���P���V���q��[0eJ/<�t%y�&D����^�}x��+1���k��nޅ�-��!Cm@_g0լp|��KĒ�
?�W��)Ѧq�dq�Z�^wQO�ل�
ƂI�q�s�Q��?���P�X(Rь_9--*	�icN���F����.�!4�ga�=�~Eo��y?Lo-~h.�̍gૢ�Q�iD���
镳���{h��hW��l%�‰����m
C�g����ό���K ��������~ŧ��Os&�\QPV���L�7���l��i��u�%�ߪk�,>�3��6���R�I�Mxr��m��Y[�vR���4Y�ɾ4�jgq�~�x��N��<.}�-�p�)��/��NDAI\��u���1���ԫ���hʔѲ�=4h���éY�s�������3c���Z�ﯡ�3�;�_)�:�c�&�g�II.�"5�'^��+�<����W�b��gq�FNIy���
�"����B�fCg=:5%{���M�@��yE�qv��aYKw��u
>��	���I'�b2��s&Q�Hfdvd�!�3%9'��U�3i��ۣ����{{���� ���Ą�����j~oD��^�Va���^����
�@%V�T�aXt.��;V��kE��n#@A��|!W���咬J(�����y�x
FP	�ej�-�f�	V�+��B��SO���S�T
	������>���{�����i�ᑅ>�}��FL�#�[�1�N�W��Kn7/�k���=��6�D�4�R=n<uVg����TB�,`�~�1�n<��
Y�}�^,���s.�4�A<�e
'R>���q�$%���8�GlfӚ42���ڸ��.�‡�s��'�^�
_���X�C�S����5���3�?Ǩ�u
�+5Z�J5!苨ԙ�A��Ah�U�n��:���ĩt]J;iҸ=iȼ��UV�������_o��^zm]o��g�s��v��>&�(��nմJ��<F�V^�܉�-���P���0�_��z��Ds�	+v��A�r�8�ˍE;aDϓ��|f.y���p��h 7��'���n2	�˛2 ��$��ѿ�PW��������S�NQ!���1x�Nt�(���bL���a�He�%~\�z��
}ڥbҐ�8�_.{i=�5������j_�|y=:�I2��B]뾜�uN6���-\�$�6�ID�q����HB����D��
����-��g�t�W^K����~��=���kQ�_����%Q�O
z*�o=\y��u��Fw.Gӥ7¬��3�k��h�P�;��-�\%>�ޫ��y�+�����‘�����+�G�{����x�(gbM!�\��BYnܜ<Z$:�ު�PYI[��#�.|�(�(�+S�b�����d�3cX�<�Z�F�l@�/�9E<���fg�h���Zjɓ{8��U�=|xu�6���x��.���̚UKט�)����i�u���]��l���&�q�VzyV|?��w�=/�L�Dޛ��g��UL{{���d!r�࿻w`����^���^��S������Fd��eV����}�<���KjP��B��h�U��	�����'��qtL����U��ǟƓ猋�"�2u�	�Q�^6㗇�Z��۠���"��aH>�^
�49�S,���Z�7O�Jg�A�%c��}�a���i�g�T��N��	�X�4�:�e���Y��4��{���aE�%�$�7B�yF��5Ŷ�θk�8�Hy*m�۠K�.X_���6l�܄9W���}.v��ğ;��4)�-ZT���X�2>���~˘�R1��Řp�/�'���<xzY%/I�hX'��C�1h�t�Z!��5���c��YH�䔘��q��ʬ���L>7��4,�fƭ����������:(Cډ
=��jѬ"�J��x����s�+<��&X����X����M�F���Y�j�
�����~t�/FU*%�\�	S���.�F��Sz�@��4T"��$���1!P�!H�8c1�Y��}*TV
����Ư��8
�����ӹ�@Fsw�!
t�!+ɂh�ҾX�=��d�*��B40b�Z���5����~���_��Ϛ1��.�q����a�gQk[xb�"?�b��!��1g��]˷(͓ͮN�y�0��°�u}vU�����؎q�����u`67(H�����"z����y~/ͨ�C�
�f��L�:�w�T��!�!v.��T̍�Ǥ�^Ĵ1#m�@��������5ŕ�͕��sh6m@yO����kz�+��'��J�#@L*ݿeZ�y׏9=�|����DˏS˜�h��pǿ��ȃ���4�,��RKQ��ym)MR/M׊�>8l�&��jW
��:U�M'i�e%g��{֍�a!�$
X�4<I���pD��0rV�L<��RjHbi�Q�dB���C�Π�\z~�o:�����s�(�UYK������Ϥ���!(uL���:���5SLx�c+y2o������70W>�
�O.�Z�"�6��xj�Sp��<䳜�aq�C!���.���Ӆ(�Re13��tP뙑��:��N���K��~L�D�͛�w�	4KIE��1�땚�������W��Ko@�7�-�m��^�8�LE]��

 ���GwkH�J��V^b�K(}�C^����2�N:>���T��F��될.�5��|�]�4�i���Q�RS͔�2MG�l��0�H-����J�p0z(�m�mX�m�*h>�؍��=;/A
Y��0O�MW#<�*=l
1Ђ�Fm����,��6`�C�̜Tr�:J�a]�:��Y�5+��~+
3
�uf[*�}M?|;���<ޠ����;���x\v���n���ꑉ�o��>`��]����AZUj>��9o�#4�b�4�F��	�=z`�ڵL&U��mr�d�n��b	�8�B0%XJ1�1@3#9�X��ɯ�/\vs�	ź�.�z��/&/. ��hY�����a���3Ŵپ4l��	�p����G8}�_���(h�����.�a�@����@�|>_d���=�NH�!y܎�p�,�^Ґ�-�xT��E��V�������G�rx"���J�⥚�:ȵ~�l3Z�c��Oy>�S^g��{�x��(�9��6b[c^_UG�և�m�#�!;�&)S��>��X����h�{�[���7l/ٌ-
[P�@0��?f��x
�&<;��)�8,�>�����Cu��
� 
?�\��mh���"��W�F֪3�����T���������\kP���s��ҌN=	�Z�7��N�'��p;�cgTd:����p�-���5�u���lM���3��[Iq�焼�"�`i�׾���=C�Eů�1�x[���xÅ��(�D�py0?9EE���~uB��L�w�b���"|�p�%ө�!��
���?��'�̆�FlD!6�z�u�-$Қ�E�W%��GX���I=*����%$Y4[�f���	#�a�@�RsC$�8����z��i�S��s�L�+�BBJ�k
q�(��ς�*���`��By���=��b����C�����)8e�T�T5�!��kai��$D3Z�&��¹�1��7ހ1K��xl*B����
��|y|^�A@B!u~Mp��)J���FÈZ5^`Ɯ>�������x(�:��y��$܉��C^6���rh�fՃ`e���$�,s::>}ӣm�z��Ɛ7��k+]�����|�Y6� �hC61e���<�_g2O��P,��~=�G���ҥve�B+�o�L�w��Q�s��vg=����:=����a���u�"�ֹ�`���}GB�>��h�LK�8h�Z�ʶ�������^NV�����Ǻ?f�d[u�|��~K_�C�!D�Tɤ=k�,n(Y)��Q^+��X��`
VW']�5��<t.wJb(�~��'G��`9�`�<�6"��/���
��S���E�-���Z���E9X;̞1޼�8�Y�UK��	���C��*? ��%�����G�.�+]�*�GX͜�d	�y��	Ph�L�;u����o�R�+�G
|?�|�C��Qkȓ64#�n|��M0�A�Q���u:B<��s}&6)�?�SQZ��}��RTV������#�;(�?��|�C��Ed5�K���x(S˹�
�ɝ���'�F��(�(�;�5g������_
�X�{�3�u�x��F@I��֡���[���u{��Pw[#�|�Q���J�JaX��va��p����?�v�@)�
ᝳ`k�F���}��us�+�M�ݰ�8q�!�cmV�[O��UT���G��y'���S���
��ض��axC���ݶ-�A��n���ą� '��/��4��y7��g��KOwC�F�_�oX�;�Q�c�9V��\O���x��?P���k������Mې^_s
y�O?��q3^}�!�~��Q$���(���Ž7m‰�ND����
�\�d4�V��_�B����_~ժ�3 b�����)��s�L8JL�3������\�1q&ݰ*�b��W5�M��C�k�V�k��Xܝ�de�KΆ��󂌍׊8��5��/R�j�"p]��B�����i���_Mq!�hR����Y�8!�i�KIz�����T�D '�T6m��<ݡ��Di���;���E0n��`<�Ç�7v,��?"��Л��Iac
�
	��&�����>�j��m&V}	F��K���_-PºP)a���҃�Нk׷�t_S�u"���߁��dE68�@P�6KDC���v�>3zR�����_�כ�9f�c؀^Հѣ�1:D����Y0/��=�n_#�6����&�TA�[ܞf�z%~,���T�!�J0>!t����/�{�w�H__��-��xc�<r���@�+l�K���o=�ov���� ǓJ‚5�H`�� {,ÊL䥚�m���ˎ�p���O;LI�#�Y-V�Z�5W�EH��?J[�}:�9o�)��YE�W�	�������GbEc'l�o�K*�D��P+#� h�Ü��1Ƕ�׬��w�E����M6�'$��ދ���"`�b�(V��\���^�XA)*,H�NH�!��FH����=efwS(r��_~�av��=S��>�.�ҵ}����o�F8y�j��ui��}�4�0�$�.;��W�a��q�X1���p����x�[ݍV$��{Z��%�8���cqG���'�d[�!��(��	0V���7���fq��f㛎�>�U���u$u�K�|2}>�x�V�o�ƒ9������wl��Q��L�G�AJ�7�S�m���G�~�}uA9��j�O���|���Fh�T������¾B�OyPJϬn���5��p"JYh��唁�[��"q�h����Ae���i�_i��
m_+ⳚJYX "�o>8w�ۅ��=�'O�ڃ�Y�^X������&�~CYH�U'@����ƘG�|c�ٵ��_)����?��-�K�ř��X��	t��s�^���^,�V��<̪؃�
��P+�^�H�R$MC��*�|��M�y�W4�d�Rm�X>}�?�"����ٹ�����l�����1�[��.����,�i\rDY��!�
頻��r:t�٤�ފQ6�����ZGN��2%7}
O�]>}�����DP�
	
:%yPAw[R�$j���d��I�뜁F��\wf�Pa �n��oR�VE%a����I�ۃ��kA�`�l��x��y�)��F�Bu7��x��1z��'
��m��]�Z�3��������@�7������~F�"]��2Q!d-��+��MM�!�&���߳�#��4��!8��n��a�N� t+������h��ڳ�V���R��	�1��A�gW����׭���d�{��[,�C}�Ĕ�1��֬�+;��|�,�Ԡ�)茯q�-�`Ԩd��
(�|Z��
&��YV�H&Դi�y1�
�/~k�(ܩO��paa�x�V�VfT?�]�@�U�h%L�T�5��p����̩O��;
2�h"Ęe���&P��Q��w%#��5)���y�O,�h�%��2�.��;��BM��{s�ƍ����.��T��&j��W8��ɖ���kf+��!���[�r\$�_�IU�P
L�B��]d�!�g�
���yh� ��0��G��WX��j������Ǡg����չl+��$\l��"�����ؼ9����E�)�W1���˨�àiSFl��~����KT�/Ӛ�u���Ko�^�5B�qY���荩[%�IP�H'X���5I5�2�z���X�W���:�����4vQy>"�����,��5g��B�]�D���B���@^�I�32�j�!p-�/�������r�@�-&G��H7�1��p/т�C!I"�^ת���JX2�O��'XR�@5�P{��^�ap��:��g�^u)�!j�&!��-��z������@Y&-I9$����\�7���"Ȏ�0�ha�=�F�>�5��'W��"H�7?�3J�ί��Vs)	Ce�i|���Y�.:ܪ�2$LJ���C��E�"�I�j2�2�S�kwO߅��"
�%��x-9�W�lH~����l�財-aح5���
��W�223��&p���̔��뿑WZ r���tU��m�]U&ع�ՕBp�&�[m%)��k����T%1���ߝM���Y�M�rc��5����Pu��ƭ���}ok�%H��_C��O)ED��P���y��B����xI�Z�MjIEc�A�Y?��̍��ظ��f|��Ҋ�u���jP-���.կ�B<+in0s���6��
�״&csq�n��3~/���e�P1�u'�>�����/���<�����U�I�,�
J���ϞA��<�(#���yT�I?u�4a�V!�9������a}'���T�ŝp�k��7}jzjy�Ɨ������)_�:x2l�����g��U%r.���U�%0��d<޽�%�$4��.�/�Iax�"�r�����|o|�*C��>C�i�vA�����~7���Νp`�$�N��쐫@��J0��fV+��m��*k��o]m��o�c[�X7�!�>Z�C���R�[�q��/Y�nS �5}�:]�z�ޞ��"3G��v,��l�o0A�
8y\�Ε%y��<�ͫh��"��/�q�w��5�H�_|ɺ����ο��4�4|��Y���&���op�����Msou�I��I2e���g���,�{xP��(�c�ǔ-�f>���y~��2�W!X���������U��4ʑ�b�kz1�<�YP�����m�_j��/���<e�/�b\Q&j1��>5�`��Fta)� �.��s
To#������K 6��%'Z��D�����/���u+W8�>��|g8߇Q�'�M�,U�Yr�4��=$����S�9綵pC+�DP|4*�ֽ�B�J��D	 �IaE�ud�2I��o���eW��Ji�2	@@�@����3��y�u��ճ� �q��/���̲�=�}��`[p���zɑ^x��`It>;_�#����#@�� Ûe%��TLeu�ˌ������]��C��K&M���'���e)�E������LJ_�A��R��׀�^X��}�?�V¼�ݐ]�ԺA|-�?��N(H��4�`w2�%xx��ADt�)��Ɠ_�MR�<Z��Q���8��\�Et@�����Ь�
*?��w+A�-����S��������bDDD\9A=�“'1�U+t�,JO�� �`��7��U���2��|8�'��f�ۃ�����jຎ]�x�6;e������&
�w*BBP�n6�~�2��D����:W�l�'@]��"yEa,H���Ѧ���G���ޖN�T�j��o�(��US%f�Y�Ɂ}o�h��s�&�"Ch�r����")e{� �:��=��٧ۢ�&���r�4{H$\�U�~`\lƎ����a��U��rl��m�J	��p4O�M�����Z�1�����;��֘��N<�u)�X9ˑS��)ǐ�<���,�!T/AF��Ya4�>���bƗ�y�v�����ԃ��O܀��Dnk,�]G�T~���Q��nӗk�u����VD�!��mN}�NK`����gKpD�7�Rw�笟�}d�sRH��:��7�p{�_-�~fQ�f]�PL��天�p�Jt��14o�
M^���5��u>�0�H@�y�u[��^���f�RS���kе�)�*B%)�@G0�����ؖ&ړ4�\R!(�촓c��4W M(��q몕K�eK(�Ւ����Y���g� �4C���3��q��u�EE*畣
<.f
���F�=H�`�/t�tt�>�N���^y�zk#(iЀ�@��?S<�f�ݙ�7�_�#�h��~�tUd᠑BR+<��i�/���)�}�)�9�>F6��]V�U�#X�����՝�9��JE3�<��Y�	TI�-Y�o��^�x��<�b�f<8@����T~�Jl;��ͨ��2tlZc*_U�!$؉Ԅ���8?�>[�nϏ�O�)x{Ԓ�
�/UP)��g7��S�AM�Ͼ9��N�DnyF��j!�96�y�ߝ�Jg�5o/��ׇ�_/\�5��'�U��{�]�*�z�=����*}+7�ƶl9z(�#6�>�]�a��e�7J\f�ù�$<�At�.�܂F�Q5Q%lB�y�]�eXe�.�]��,�T���o���?x3ɦr�����m:����h���Ύc�2�4�M�j٪)[$�Z�L���჊aTAŐy
�����b�
��>?��,8�K&�s�@`].�Z�D�N�B�R!{�utl��Ð>�����4f8��Ь�^KV��I�Sa���JE�-�HU�(���Cˇ��+L�=�\)��!�QA{}}'J<�rg�c��ZS�.����s8w�!ZZw�G�~��?!!��qx��7�w1�o�����!��5�ja��]ݠ8bp���}�{ac��0�5��2FO��[EED3\S4���z�:�a�%�\��*����3p)7�K�X���J4�Q�&�&�*4�ȷ<`f��H�å貜�	����_V�dȘe^g��P�ܮ�I�;�b���i�H��f7~3M ��y�K���gj�!˽&���z�����p��{�ˣ�i���_�u����UQEL��N΀Q���^y�,�'XQ��q*7��٤N&nn��%���W�l��ߖ ���K���^�.�GC�
����`z��S��q�~h�wсY����ehV?.E���Vlq�}���?S���
�@p��6�塷���<nMˠ1B�������}v\�v��@#O5�ڄ{����V)%(��>≚ ֻ�~�"
ZD�@.ہ}�~k
�d#q�dW:`�W�
��SMFX̲qS�kZa>�z^��;G�}cK�Dr�L<�W2�cl�N�!�q��p͉�[�`�6h^�_�v�~S�i���޹>�����\o�O���Q$!e�V��ZMŐ����ջ��[��i�X�G��7���d0��My3��L+��7�ZhKcᵢ�R�B���Sqm��(��=W�c�m8����@av"���l'7�4y�|��Pq$Ѓ���_���<
��"��@�(
��a�#x��T��Q|�=:O�{�%5+
���a����	Ж˽�ߋ���3O��e�l�?..C�Eff��}%��3g�h�uEš�[H�?�{xM=Jf��
�F��\-��E���;q�*��f
��g�{��c�!��<��.M E�r� L .p�p~m�,�@r,�N���Q-�������g�%ņa��q����g��G�ұ�G�g��U�ʨ�@7��]B��	 �g��Es��`0��j�\����/�m���(}��_^&o�7��8�D��,^Tv��&���V~�&ٖ�-�����p�HC��,���`�?�bޑ�]��}RŽ`��`z&#�����X�D�+
-Z��C��"�����[�e��9�<;d�ްjE4/�:������c�6��|�L�
�e�=*���J;�tn�/��V���"?�I�B^�B��WS^%P)B���,��4�F�"��c�ϦU���L�0	1N�;�#06��1"��A�h@}sU�B�ԉ��!��8�<�!X~�z�Ŀ�m��_�ڭ�D��~�l5�|����՟?k��P9%�ѣE�Y��f�ͷ��d���;׬R��dH�6Q-L4
�B�bh,����u�)qX���Z�j�q�"�-�@��&��0
�#$�0�lKi��7Jf�jKE��w�c�&I��^$�\=�x|������ƅ2��K�qU�<׏Z�����e骪�@W}���p!�\���5dxk�x��ۗ[��@^��v��v��ʡ��0��,�����{LU܎�.c|��>u��J�3�� �I��C��}[c�Whg���l��{�����a�,��a\i*;���ު�d>LJ}�zqa7�C����Y2�8�W�J(.��-�s��c�r��|�\s
α�K�%&"{�N�i�E�.y�k���B��Lxg�W���4�2��8y�!$]��[�V
S!���=���K7_\��ͯJ�Q"�	u�$���O"v�{��� &
��p���i��ψB��)���t��6�3۾F�G�=��߾�^Qd�m���B�b���F����ܴ���1�"���V/B�Q�!��~�;sěJW���Ө9W]�;�"#�c�`|�+o�L�"<��e��_c����7݄�4��%Kp��Qn6}��/xj]�C��b�%��݉>=��xt�$���k�I���6}^���\D���	mE[\v;6�-���w�H��>>i���Q!D/�&e軍�U��A|��y_zp�}¬\Ǝ�q�K��푪*�*Q!�f��
^6GthM�>�*e��&�*��&"L�g�|-�y�������S0��H��Y��-�O�PZ� �M�ڤ
7#���تF�0���:ε8�����.�K	L5^�uQ��W"��5\�ۦ6Û��'�OAF�>rtN��2K�O���a�p�-�?���e�vY���xC?u����8�q���?��3��{�����()���$�1���ֿ����Ǐ#;;��<�^��W^Jp�;"��a�l$޶�7�\G�hC֧e���R��Y�ז�~��Q!��bMC ��іt����<�����EPុSq3��q9�A�Bh��Q�k{/�G�&S{*C�p�`S����hƇl�e��h��ܳ�t[*&� �������۳�c������x��_ɬ���.];���:�q]��8��<2e�/�*.�ͼ
+5��i����?�$Ҁ�>�6�]h�@���s�p�H'����{G&	�<��H�z��L
�e
������}��H���h2l���Q�c�/x��s�/Wk��yM?�Iӧ�c.r�:�$/a��Oc��c׮]HOO����2�7#�_��t���Lߚ���J��ND�6֝�m�!X��<^z�<-�-�j�� "�VY���=��/*�&��~��!
UDTx�ɧ
V�Q�A��iW0l�]i��yR��fPC5��(��BQ|'�	�"�0N�m�޷�Q�u�Jb��4h��XޯH粅|�.M�O�}\jL�����_a�QH���e��g;��G7�i�Hl�_Z��"7�p��mڴ�c$x&LF	��4	�ڰfd�ަz���
��I��J=(�t#�&BL+�nĬA��ķۗ�D�.�dU`X�&�M��
Ǔi�
`�jc�HdJp��ô2�>��׶-��?�GUP��	|����v�
��ؼF�ּ'�k�a���~��?p��W���;رc�oߎ1�2�x�1	�έ~<3�r_A�r
o��5��.�ҳ%~�)��Ј���
�!�:���
���k�e�ɓ]���K\�	��Q!Xy�]�}�=��A�i�����r���z	ؚ��'_�A�DJ< �W�W~k���1x�w��7�:���B`�8|M����H0f$��X�x���]��D��D�=�Sg�ydN��S�?�T��A��ͨS�K[;ȝ>z�쉠�`L�2	�I�.��b�s���bYAUt�{j��g�45T����{���٫h�����W|ފ�r3����ia�����$H�uDD5�p�RE��H�V���QS{
�p����]�τ�}��M~7ž�N�ǚ5Տ7ϟ���D��/O��m۶aM��&���'O��M�*��s+
�/��f�ƔH4���_���9��/�_B=����� ?*Ā���9�+�9r�� O�ů�$� �^7FŰ����<����_�{�r�*�'yp�#�p��2y�K�q�Dvu�D|HC:O�D}�Ek�.u����>%�	�݈�t
�й�rgV��@���*�9��t/ߞ1xo�"6zE�eUD���_�_P��A;x���	��o��}�4�&�y�
���̟����ԸX]��V�*�� �����lZE��}"�	���^c��E`+@J
ҨƋ/��7��J�ZPjD����z��ǟ9M�OZ���`4oc�1!ȹ6֮��Z0-���/�ʼn���ݴi#����ߜ&&�
��y��+5��͡�f���a�̪S4�Ҝ�6�w�l@�͟���P?&�c�k�{^�������%P!z5W�3R��s*FN&�+j��(1ځ&-����[1i�X(43G
T�/y�)�|!�
	>cz�v��^ޑ�dC�G0y�C�mРA�i����m�o���ƴ1�V�k�k,
������?A�&O�AEI9�MNxh�q�
 '���;�p�"\�I��=��.b���o�/*��� �nXp�!3y��S�^���V"�,��%�f��-��X����`4l�� Z���_[3|-��w���؁�^��af�#��(+�b�<��}���	���x�=N+��d�9������2H�\��u
PZv��N��i�S�G�{��q�	p��sW{�,F�t+R�
>��JZ_�*�r�=�C���7>�-yD8V�Au`��$�`Q���v4��R����(���a��O!yԟǧ�dY���	U��o@�]Q(/�@|\8f��:�����`�"n�f~�G���@�O[�|:�'�!,�)&��֍]<x����ɭu_U�Bp�����;!m����R��gȽ}�I�IR7s8L�洚d���4^z	FA��W6!��2~��/�����|XA��M���=��#l|8e
�$Gx��XK�?`�|={6٤�ΝU#$
qA:>�y9�{�FkQJp��D荦^��u7�<�b0	Z^�Ȟ'�)xa�����>�3>�3g�x/���C���5Dkj���v|��{SeWp�ͦ!�&�M6�Gnħ�܁f_���L��k���[�K�����
�iE���A��"��^�1�ش�XL�Nש�X��<�x)W��������GP���s���$J|�D
�7�mR�Ԉ�@�b��3'��W�
���>Ǔ�Ώ����q��k�&-C��&��Ӧq���GG�0��#�̢�AA6n�E�l`]��h��R��ZA�k<�>�a�Z+gy��V��˫��k�C�R�L?�m7j�p��f�~;ϷC(�ꍂ�Q��s2�d�U�ʪi���At�Tv^�\�[����կ��k]6M�N�����Gㆀ"��&ޭL´�MP��$�=Z��7�Us��ͮ�xk���F|��{�h
�}�w54$_v*;J���̨���6�
2y帺Tz����4RYו���U��l��5.��󱍀�|'E�/޿&>�'Oz=L�	,�{���$�C�WM���o�z�W!*�M�y�z_�7X��s�N1��#�\�[���3��%���`L�
��^�m�FUr	?"�y�~���+7xӼw�<��U�����VO��f�_TL~Ҁ̟�r��Us�o%�\�w(#v0K!.F�an��K��E˖�x뭍����/�X�:��C���瞑U
��.��$R/���u�4%.�nCh�L:��Z	:����](B���{Һ�-a��w�g�6X�#
��b�Z�n�T��d~�h�*0*�{D+�p��ڃ�w�}K�Z������j-E���߰Q��*E���x���n��+-�a_Z0�Vg\@��X�C�W�����q�6Z��5}��
�ħ�錯6x�v��c����`ã���b]�.w�H��¥�߾�fp:Y,|-�:9�}�ڢ��h������M�V�����{��$��Q�nƍ�#:��RCs���+1d�0��Y{Vr�l٫t#J��=3$��5�O�-*��$j��srr��ƏoD&H=~nJ�	
�I!V�H����d^T�2z�Q/IIJY�p'-�J'"d���"пm�̦V?�0|y�=(۾��ǺR0��ׅ����S������?ϓlf����˖}(xl+����5�'�g7�/B)�GΊ������-�I�[@�i�������.��{�&q�x�9�%s��|��'��r߯���u�\��[����瀒R�,2RY��=.����~��-z�N;�W(�`c¿h����	��V����+m�穕t�
�X<PVJ?Xۀ�h��j�>���Ѷ��)VzL����;�T�׫��vOm�.��"?����4�̙޴}�t9��Bp�x!�w4�����(�*25Wf05
d���԰�M;�jְU#�8��p�iM;M�_�-	��X?���'#��r���O�R��3�)��<�d��U��ZJ�V�#g"�h3V!���V�
8�P��qG�kN܌"w�dd	�e %%\�v�?Rv�m��X��u`w�#���������0�� �p:W.ʕ����]��C�h!r�/^�r ���,<���B	���������}o���
����s�}<��}i�r�Ld7�EE��nw��ʕ@~U�]ڧ��@N%"�|K���$z��
�
�_�ϑ#~g��T~�A�7���
��F���x}�߲�i�gQ�f:���1��>��V����$J3�Ƣ}D�c�gb����ڠ�t��Z#8pO(�	�$��Y�EG�|�O]�����G����h��҄��8q�G��@�l���u}VS	2��4\p)
d�[A�S�ՠĢ&$��!1��ӖЋ���B��G�Mx�~���u�4w���"��yp�����m�W���8`�n�hãV/Bh�#��O���L�!�7�_������P�[�!O/@L�&��	����Q��g�<��˜���.:�:��/Ea�;�h<G0b���f�5w{�K����Z��>�k'&�L@��_�'�G��=�@�����َ�ĭ]T��$s!�

���Cl��Ѷ׺n0���BC��>�����L�Y�?�P�w ������90���'ނ�'��8��`���R�Χ��X���.��<��p��Ĺ9��N�������qt�me˞��5o
���R /���i�`d��p����&��,�Q�<ؚ�ී��g���~J��
��Uaj'�5Y��c���)��HF��sS"`��iu����n�AX�~-�>1�X�ώ�6
�4�w�oA���Q����M��ѪQ$�Ii�k~�L�
��Y�׿������&
A���#���P�IiT�i���1a���$�";_����oн���Z�rM%�����K9ܣ!1J%#A�T�@Ð�<�-��&:̼��4�m
_h�nd.0���4�~���~˅�믽�?�-�9�ގO��Kڹ��>G�\��i$�O�����酼vf�3��q.t��_Ǖ i����$�ϺQ��\k|�)J����F���$�?_���������A�?C�ճl0�z;�lwK�V�+#�P���Jv����J�V��z��<۾���Q�k�
� ��IU���qr
��
�j!4�����{�1N���C
��ʠ��2�"�W�⣏����n��]�Z@��|e�f,nv7���\x8�l
6o=�]��_KV�ꪠc��"�k�t-M�@�=�DUPxSΉ�
��m��׈(W���8�Ό����!����7S�W�2�n�]���yVxM���B���
�7�Kj.ea��{0�)�2T^���4VVa�N6;��� ����C�=+��o0G���l9�����V�W&{���^�D
�#���.GR�n$'r��~�|,ߍ^m#��h����y��F�X���FT�y�l\{uy#��eIoT@sB�PV$�#�wo��y� ;z�0�!:~#O��?ﰣ�B�`M�:��0�"{)� v��!x��LdܺFT��!�PexOpj�^�7��
`By�2�D��[Pϖ��7"�n*��@�H4h�d�o�`ps�v
l��Zz�$���{�	`�@U��%�y�ta?sf.�6
+W5�M�[p%�دO�_�ڋ�#?Z� �:���	�-�,F�f���nF��
����!m��_����{�ɢ�d-�
������S����c��i)���,�{�+t��J�m�O�^�r����w�
@�U�6*����]���������]_�Fe4�i�v��[G�v
��e���3O����KG��ޡS��/2sZ'���9V,%S(���W�o���HN60�f��Y��k�B�'������+,X|
��Q8S���;�f���&����{�]��xf.�8-	6���*�\�ayx���L��4��gw.��M�b��˙L;f{�<0�3�܈B��A��H�t����M�|E�%1���Y�����A��ލ
c<C��X}ښ&V�n���=/�-s,i��� �O{q�:��R1�
OHd�x5��*c(� Lx���Kg��7�tIĊc98r�{L쑂V�P���ATT�e>��]�E�4�w.DQ�l��5	O4D�q-nh�Mo������q����K9��3������ZJ9�o��Bt��2��.��~�;e�=c�4�'L %���7���)��}���0k:K����q�/5?��yv��5m�z��~�6d�x��P3;�m��kG~�7olw���ky�1�����7�s0۟]��k6�GFԙ88o�%�[�hzը3{�{_K
`��v=p�G�wW62OZ�ka/��b0[R��JG?��dIT�C�&��-��G,���������`2%T�E�_��*#��]�C6�~�s�C5D)�o��چ&��hMq?��ȇ��"'��|T�����`����f߁�!m�S���&~!Z�[{୨�����4i��5�DÆ7�c��X��R�f�Ж-�f�3��Jq�Yйth����r(w(pu�v&�,~��Ž�	P��g��4�Y�Y
+����4?3A\n^��^�
o�<���8��PrȚ�4�V�+.)�z�fk�s�b9��gOB�S�xuĵZP�L%&8�D��I'M�s�?�ί#W��-Q	"|P	L@`͋�l�h��OW��p�ߑ�� ���9st�l6���kX��O�I����f���:�"��PQB�)K	���,'���A�"	:B-BU�,8Ur4�糛$Q��6E�@5��G��V��5�aߓ镍}�b���ѵ��[�������>�f���MU��^cT ��hx�����X\�^�Yy��aA��v�fu�/�k��.�(�lA�G��	��L�'{^�>�]��li/��UȪ������`
1ä�v���!�KMFX�Rl}��Z���\U�F
��=�O�U��9�~��}|u���l��"#|~�KA�_)��7��O��W[
1�/�}q���Hv�;���,��]��~$)��v�xU�πi6���A���*M�J
&���&��s猚Rٺ��%Y�Yol���j�V�g��G�}�=��|�EyO����5$�}�8\�J���s�e0�G��i5��/�0�{���"i�Jd)��f�l�>'Ӈ��+�����7
���Q��A=|��S�u&�G��T�D͕8��A�z���"l�Od,4l����ĤD�4�=��u+Pv�4��q�w䂟=�-7k��2?� 4�7�2O����۬%�q�ݩB�7Dْ�LAk��a���h�8�L�X�� ڷOEF�i���	"���
s�����@�N�O&����@�L�;H��O&}"L����
^7�{S�V�B�a:�����|%�e���x��������Or$0�M���y���,��|�y(�r��"(����s�Fl�,*"/�bv���gK�.#,�R�IE�GY�D�SFNr��KP?�>�M*�,�R����C���X�:#*���`Y/�_����Q�`C�ߡ��0#�p�z�R
�]��,�!����!��7�E���Ր*O���yִ)\'���3M��L'685�/ڠ~�|��;_�ѡؼ��7�?uV_r1T&��Fg�=��-��a�� c�i"�=hj~�f�b|��H�s�An�jR轸���A�o�W��]|<p��R"�g���(�سsw:E͋,�h��RLH/�ɓ�؞���x�*��y���K�Z�Ʋ�<!�|eQ"��.|��6��0#�ɱ��Z\�+�a�а��f�0t�^��/���D����f���Ï"�i�9)wtÅ�?�]�BPR8B3s�p!�6mD��=H�O�~�ا�O
�d��M�zp��p4�8!�[�u�$
y���������(.v�_�kI�3y��,,w)T��s&҃$m?�[�sHC�t{P~�7r"���!��wa�2eu�"a�p��'�.�rMB�?(<�>d���"hHO�F��G���z��
xS��DGG�Z$&���	��y%�h}S��\��׷�Ĩ;��i�;��-��9��a�
�ac:׏ytKh{]6���N;sч�\r�<��%�1�Q�$�����@Wrj�6Ţ"b@�l�U�PM��D��0�LVף�F��W�D!=��C�P�k'i��s�w���8{oO\������`%r,�e�] �)4����4�0�ƎE��ǩ��B���83k���"�N��G;�<�>G��q�,�U�K��6���|��F�u�	=M���I�FA�~�ZTn1�\I)���*ib�9XTX�p��h���Gn��u�@u��!-G���ѕ�H\s͵2
,�Յ��+0��
����Ŀ�g��@�#�5�5�|I�S�D�x���x��M�hdm���� �LW�4!��7%�_��ކ�xh+�>)Dϔ���8�U���'�_̘q4IS�>+�`!�V�__��-G�����<w�wnCl��Ǎᙴ��P�D��l�Hl��K���
���n�#�C��x׎Q]��ZJe���?�m[�1�i$
�h2��y�b�P]d}�_8~4��h���*QyyIT���"��?�w�!�|L��Is�k~���J!��
��f͚��Ka`�۝�)�����A���t��}VPADI4��k9�/80�O%f�F�
�Z���^�b�%tQ�¬9�ID�>¯�p��b҈B>ElҎg���J�.8�{��_�X;�z={����Eض��f&5\��_��=�wz���A��'hit�E�8��|i%Jcmhq��O��M4�o�P|<c
iZ��^�ʬ,�8u�Gh
NlF7��=�I�Aμy��:��E��.�gM�,G������d�������g��)�h-��X2H���R�|	����u��sx�W����4�;�p8�0�F��-�`s�Mf���jG��u|��D�;������aqp�l�y4	oxh�'V��o��z߉ ��"J H�x5d�4h{��\Fņ(�o�oߋ\rP��)���	L&�j�?�8��!��wu@
	�M�m����-T��܆	OT`�#t�����/W��yA�b1%��Σ=����3A?���GfOL��#9D��3"⿂�`F{�CKv}F!�i����3�k|	S�y$(Zh֬�� M[j����}7A�*���͜9+W�䟷m��;v.����R�(�c59dz�6�iR��՟��޻lh�Ά�ð�4��l9>�e"��a(8��2�'�L������Y5��Վ�S�|�i�\=9l�L4�T"��.&�0����A�M ���x:9ƺ$�3ȧaMHM�?L��T�<��5%���
�V"?��#[]��wc�Z�@�]C�,0��ɠ�Z��~9��9s���}R�d?��To\nj�[q.�l5�~� �3�oM�8�ɗ9A6�/��Ƿ�Jl�><�7�M���R�R�C�Q���t,v��\-}��d�w��1_LZ���E��\���cբ@���r�Ey���2YV�6
�_�^��zS�ͽI1�ai ʏ}ۗ<J%~[�$�|��(E0/,�o���2����!
��%8.4	>�ÑT7��H���w>9L-+�SO�;]�'ذ�m%�!O�i=�Le��ؚ>$��j�,���L���m����a�N�~(L�'��ޒC�'%%y�4<����\�Mf����r�&������1��ѝ��Kl��Y������Z��Mt�^�+�4ynl���ދ�� }g���n"KI/$�{$�&����YT?g�E����F]�h3W�|���e�t�H$]��'"����ri�y���w$���'��4�Q��b$	�������Ir�
j��`Y�IW�j�^E�}ׁ>�CM���aWu�P���.)UfU�+�p���B|r=�!�7ތףga�}y��[��x-��'�UV5�rl�\��ѻXӀ�N�A��c���b�U2� ƾ��L�	0b1��Č��IEND�B`�

Youez - 2016 - github.com/yon3zu
LinuXploit